diff --git a/.github/ISSUE_TEMPLATE/other-issue.md b/.github/ISSUE_TEMPLATE/other-issue.md index 6c32061a98..774bf32309 100644 --- a/.github/ISSUE_TEMPLATE/other-issue.md +++ b/.github/ISSUE_TEMPLATE/other-issue.md @@ -7,4 +7,4 @@ assignees: '' --- -If you have a general question or seeking advice how to use something please create a new topic in our spectrum chat: https://spectrum.chat/graphql-java Thanks +If you have a general question or seeking advice how to use something please create a new topic in our GitHub discussions forum: https://github.com/graphql-java/graphql-java/discussions. Thanks. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000000..01acd987aa --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,16 @@ +# GitHub Copilot Instructions + +## Code Style and Conventions + +- Don't use fully qualified names for Java, Kotlin, or Groovy. Instead, add imports. +- Don't use wildcard imports. Please import items one by one instead. You can disable wildcard imports in your IDE +- Follow the code style defined in `graphql-java-code-style.xml`. + +## Pull Request Review Guidelines + +### Testing +- If you add new functionality, or correct a bug, you must also write a test so we can ensure your code works in the future +- If your pull request includes a performance improvement, please check in a JMH test to verify this. We'll then run a test on our isolated performance environment to verify the results +- +### Breaking Changes +- Flag any breaking changes in public APIs so we can call this out in documentation diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..10ef831183 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "gradle" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml new file mode 100644 index 0000000000..1f645574a2 --- /dev/null +++ b/.github/workflows/commit_performance_result.yml @@ -0,0 +1,39 @@ +name: Commit performance results into repo +on: + workflow_dispatch: + inputs: + sha: + description: 'the commit sha which was performance tested' + required: true + branch: + description: 'the branch which the results should be commited in' + required: false + default: 'master' + +permissions: + id-token: write # This is required for requesting the JWT + contents: write # This is required for pushing changes back to the repo +jobs: + commitPerformanceResults: + runs-on: ubuntu-latest + steps: + - uses: aws-actions/configure-aws-credentials@v5 + with: + role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava + aws-region: "ap-southeast-2" + - uses: actions/checkout@v6 + with: + ref: ${{ github.event.inputs.branch }} + - run: | + aws s3 cp s3://graphql-java-jmh-output/ ./performance-results --recursive --exclude "*" --include "*-${{ github.event.inputs.sha }}-jdk17.json" + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add performance-results/*-${{ github.event.inputs.sha }}-jdk17.json + if [ -z "$(git status --porcelain)" ]; then + echo "Performance results already present" + exit 0 + fi + git pull + git commit -m "Add performance results for commit ${{ github.event.inputs.sha }}" + git push + diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml deleted file mode 100644 index 0e12312124..0000000000 --- a/.github/workflows/gradle.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Java CI - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Gradle - run: ./gradlew build diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml new file mode 100644 index 0000000000..a466243107 --- /dev/null +++ b/.github/workflows/master.yml @@ -0,0 +1,52 @@ +name: Master Build and Publish +# For master push: Builds and publishes the development version to maven +on: + push: + branches: + - master +permissions: # For test summary bot + checks: write +jobs: + buildAndTest: + runs-on: ubuntu-latest + strategy: + matrix: + gradle-argument: [ 'assemble && ./gradlew check -x test','testWithJava11', 'testWithJava17', 'test -x testWithJava11 -x testWithJava17' ] + steps: + - uses: actions/checkout@v6 + - uses: gradle/actions/wrapper-validation@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'corretto' + - name: build and test + run: ./gradlew ${{matrix.gradle-argument}} --info --stacktrace + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.21.0 + if: always() + with: + files: | + **/build/test-results/test/TEST-*.xml + **/build/test-results/testWithJava11/TEST-*.xml + **/build/test-results/testWithJava17/TEST-*.xml + publishToMavenCentral: + needs: buildAndTest + runs-on: ubuntu-latest + env: + MAVEN_CENTRAL_USER: ${{ secrets.MAVEN_CENTRAL_USER }} + MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + MAVEN_CENTRAL_USER_NEW: ${{ secrets.MAVEN_CENTRAL_USER_NEW }} + MAVEN_CENTRAL_PASSWORD_NEW: ${{ secrets.MAVEN_CENTRAL_PASSWORD_NEW }} + MAVEN_CENTRAL_PGP_KEY: ${{ secrets.MAVEN_CENTRAL_PGP_KEY }} + + steps: + - uses: actions/checkout@v6 + - uses: gradle/actions/wrapper-validation@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'corretto' + - name: publishToMavenCentral + run: ./gradlew assemble && ./gradlew check -x test -x testng --info && ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -x check --info --stacktrace diff --git a/.github/workflows/package.json b/.github/workflows/package.json new file mode 100644 index 0000000000..71ef804476 --- /dev/null +++ b/.github/workflows/package.json @@ -0,0 +1,14 @@ +{ + "name": "workflow-testrunner-tasksenqueuer", + "private": true, + "engines": { + "node": ">=12.0.0" + }, + "files": [ + "*.js" + ], + "dependencies": { + "@google-cloud/tasks": "^3.0.0", + "uuid": "^8.0.0" + } +} diff --git a/.github/workflows/publish_commit.yml b/.github/workflows/publish_commit.yml new file mode 100644 index 0000000000..7cabc69f30 --- /dev/null +++ b/.github/workflows/publish_commit.yml @@ -0,0 +1,22 @@ +name: Publish Commit SHA for performance testing +on: + pull_request_target: + types: + - closed + branches: + - master + paths-ignore: + - 'performance-results/**' +permissions: + id-token: write # This is required for requesting the JWT + contents: read # This is required for actions/checkout +jobs: + publishCommit: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - uses: aws-actions/configure-aws-credentials@v5 + with: + role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava + aws-region: "ap-southeast-2" + - run: aws sns publish --topic-arn "arn:aws:sns:ap-southeast-2:637423498965:graphql-java-commits.fifo" --message $GITHUB_SHA --message-group-id "graphql-java-commits" diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000000..9e4a427b36 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,41 @@ +name: Pull Request Build +# For pull requests: builds and test +on: + push: + branches: + - '!master' + pull_request: + branches: + - master + - 23.x + - 22.x + - 21.x + - 20.x + - 19.x +permissions: # For test comment bot + checks: write + pull-requests: write +jobs: + buildAndTest: + runs-on: ubuntu-latest + strategy: + matrix: + gradle-argument: [ 'assemble && ./gradlew check -x test','testWithJava11', 'testWithJava17', 'test -x testWithJava11 -x testWithJava17' ] + steps: + - uses: actions/checkout@v6 + - uses: gradle/actions/wrapper-validation@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'corretto' + - name: build and test + run: ./gradlew ${{matrix.gradle-argument}} --info --stacktrace + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.21.0 + if: always() + with: + files: | + **/build/test-results/test/TEST-*.xml + **/build/test-results/testWithJava11/TEST-*.xml + **/build/test-results/testWithJava17/TEST-*.xml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..8eb18b440b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Manual Release Build +# Release builds +on: + workflow_dispatch: + inputs: + version: + description: 'the version to be released' + required: true + +jobs: + buildAndPublish: + runs-on: ubuntu-latest + env: + MAVEN_CENTRAL_PGP_KEY: ${{ secrets.MAVEN_CENTRAL_PGP_KEY }} + MAVEN_CENTRAL_USER: ${{ secrets.MAVEN_CENTRAL_USER }} + MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + MAVEN_CENTRAL_USER_NEW: ${{ secrets.MAVEN_CENTRAL_USER_NEW }} + MAVEN_CENTRAL_PASSWORD_NEW: ${{ secrets.MAVEN_CENTRAL_PASSWORD_NEW }} + RELEASE_VERSION: ${{ github.event.inputs.version }} + + steps: + - uses: actions/checkout@v6 + - uses: gradle/actions/wrapper-validation@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'corretto' + - name: build test and publish + run: ./gradlew assemble && ./gradlew check --info && ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -x check --info --stacktrace diff --git a/.github/workflows/stale-pr-issue.yml b/.github/workflows/stale-pr-issue.yml new file mode 100644 index 0000000000..f65cba3339 --- /dev/null +++ b/.github/workflows/stale-pr-issue.yml @@ -0,0 +1,47 @@ +# Mark inactive issues and PRs as stale +# GitHub action based on https://github.com/actions/stale + +name: 'Close stale issues and PRs' +on: + schedule: + # Execute every day + - cron: '0 0 * * *' + +permissions: + actions: write + issues: write + pull-requests: write + +jobs: + close-pending: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v10 + with: + # GLOBAL ------------------------------------------------------------ + # Exempt any PRs or issues already added to a milestone + exempt-all-milestones: true + # Days until issues or pull requests are labelled as stale + days-before-stale: 60 + + # ISSUES ------------------------------------------------------------ + # Issues will be closed after 90 days of inactive (60 to mark as stale + 30 to close) + days-before-issue-close: 30 + stale-issue-message: > + Hello, this issue has been inactive for 60 days, so we're marking it as stale. + If you would like to continue this discussion, please comment within the next 30 days or we'll close the issue. + close-issue-message: > + Hello, as this issue has been inactive for 90 days, we're closing the issue. + If you would like to resume the discussion, please create a new issue. + exempt-issue-labels: keep-open + + # PULL REQUESTS ----------------------------------------------------- + # PRs will be closed after 90 days of inactive (60 to mark as stale + 30 to close) + days-before-pr-close: 30 + stale-pr-message: > + Hello, this pull request has been inactive for 60 days, so we're marking it as stale. + If you would like to continue working on this pull request, please make an update within the next 30 days, or we'll close the pull request. + close-pr-message: > + Hello, as this pull request has been inactive for 90 days, we're closing this pull request. + We always welcome contributions, and if you would like to continue, please open a new pull request. + exempt-pr-labels: keep-open diff --git a/.gitignore b/.gitignore index 0d7438ad42..dad8d9885c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ docs/_build/ \.project \.settings/ /.nb-gradle/ -gen \ No newline at end of file +gen +.DS_Store \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index deff78202e..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -sudo: required -language: minimal -services: - - docker -before_cache: - - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ -cache: - directories: - - $HOME/.gradle/caches/ - - $HOME/.gradle/wrapper/ -script: - - ./travis-build.sh - diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index cd9d3382b0..5b3d4cc7f8 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -44,7 +44,7 @@ incident. This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.3.0, available at -[http://contributor-covenant.org/version/1/3/0/][version] +[https://contributor-covenant.org/version/1/3/0/][version] -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/3/0/ +[homepage]: https://contributor-covenant.org +[version]: https://contributor-covenant.org/version/1/3/0/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 98679c6113..fb2fb04c52 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,26 +2,26 @@ Thanks for contributing to graphql-java! Please be sure that you read the [Code of Conduct](CODE_OF_CONDUCT.md) before contributing to this project and please -create a new Issue and discuss first what your are planning to do for bigger changes. +create a new Issue and discuss first what you are planning to do for larger changes. The overall goal of graphql-java is to have a correct implementation of the [GraphQL Spec](https://github.com/facebook/graphql/) in a production ready way. In order to achieve that we have a strong focus on maintainability and high test coverage: -- We expect new or modified unit test for every change (written in [Spock](http://spockframework.org/)). +- We expect new or modified unit test for every change (written in [Spock](https://spockframework.org/)). -- Your code should should be formatted with our IntelliJ [graphql-java-code-style](graphql-java-code-style.xml). +- Your code should be formatted with our IntelliJ [graphql-java-code-style](graphql-java-code-style.xml). -- We don't add a new dependency to graphql-java: dependency conflicts will make adaption of graphql-java harder for users, +- We don't add a new dependency to graphql-java: dependency conflicts will make adaption of graphql-java harder for users, therefore we avoid adding any new dependency. - graphql-java has a strict focus on executing a GraphQL request, this means JSON parsing, http communication, databases access etc is out of scope. -If you have any question please consider asking in our spectrum chat https://spectrum.chat/graphql-java. For bug reports or specific code related topics create a new issue. +If you have any question please consider asking in our [Discussions](https://github.com/graphql-java/graphql-java/discussions). For bug reports or specific code related topics create a new issue. + +Thanks! -Thanks! - diff --git a/README.md b/README.md index 55ff0d21fe..e49b468625 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,25 @@ # GraphQL Java -Join our spectrum chat: [Spectrum GraphQL Java](https://spectrum.chat/graphql-java) +Discuss and ask questions in our Discussions: https://github.com/graphql-java/graphql-java/discussions This is a [GraphQL](https://github.com/graphql/graphql-spec) Java implementation. - -[![Build Status](https://travis-ci.org/graphql-java/graphql-java.svg?branch=master)](https://travis-ci.org/graphql-java/graphql-java) -[![Latest Release](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) -[![Latest Dev Build](https://api.bintray.com/packages/andimarek/graphql-java/graphql-java/images/download.svg)](https://bintray.com/andimarek/graphql-java/graphql-java/_latestVersion) +Latest build in Maven central: https://repo1.maven.org/maven2/com/graphql-java/graphql-java/ +[![Build](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml/badge.svg)](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml) +[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=24.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![Latest Snapshot](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?label=maven-central%20snapshot&versionPrefix=0)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/graphql-java/graphql-java/blob/master/LICENSE.md) ### Documentation -We have a tutorial for beginners: [Getting started with GraphQL Java and Spring Boot](https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/) +The GraphQL Java book, from the maintainers: [GraphQL with Java and Spring](https://leanpub.com/graphql-java/) -For details how to use `graphql-java` please look at the documentation: https://www.graphql-java.com/documentation +See our tutorial for beginners: [Getting started with GraphQL Java and Spring Boot](https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/) +For further details, please see the documentation: https://www.graphql-java.com/documentation/getting-started + +If you're looking to learn more, we (the maintainers) have written a book! [GraphQL with Java and Spring](https://leanpub.com/graphql-java) includes everything you need to know to build a production ready GraphQL service. The book is available on [Leanpub](https://leanpub.com/graphql-java) and [Amazon](https://www.amazon.com/GraphQL-Java-Spring-Andreas-Marek-ebook/dp/B0C96ZYWPF/). Please take a look at our [list of releases](https://github.com/graphql-java/graphql-java/releases) if you want to learn more about new releases and the changelog. @@ -23,10 +27,11 @@ Please take a look at our [list of releases](https://github.com/graphql-java/gra Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By contributing to this project (commenting or opening PR/Issues etc) you are agreeing to follow this conduct, so please -take the time to read it. +take the time to read it. ### License Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) - +### Powered by +[![IntelliJ IDEA logo](https://resources.jetbrains.com/storage/products/company/brand/logos/IntelliJ_IDEA.svg)](https://jb.gg/OpenSourceSupport) diff --git a/README.zh_cn.md b/README.zh_cn.md index 1396e1e4d9..23ab0db543 100644 --- a/README.zh_cn.md +++ b/README.zh_cn.md @@ -1,40 +1,28 @@ -# graphql-java +# GraphQL Java -[![Join the chat at https://gitter.im/graphql-java/graphql-java](https://badges.gitter.im/graphql-java/graphql-java.svg)](https://gitter.im/graphql-java/graphql-java?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +请在 Discussions 进行问题讨论和寻求帮助:https://github.com/graphql-java/graphql-java/discussions -![logo](https://avatars1.githubusercontent.com/u/14289921?s=200&v=4) -This is a [GraphQL](https://github.com/facebook/graphql) Java implementation. - +该组件是 [GraphQL 规范](https://github.com/graphql/graphql-spec) 的 Java 实现。 -[![Build Status](https://travis-ci.org/graphql-java/graphql-java.svg?branch=master)](https://travis-ci.org/graphql-java/graphql-java) -[![Latest Release](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) -[![Latest Dev Build](https://api.bintray.com/packages/andimarek/graphql-java/graphql-java/images/download.svg)](https://bintray.com/andimarek/graphql-java/graphql-java/_latestVersion) +[![Build](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml/badge.svg)](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml) +[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=24.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![Latest Snapshot](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?label=maven-central%20snapshot&versionPrefix=0)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/graphql-java/graphql-java/blob/master/LICENSE.md) +### 文档 -## 文档 +入门教程:[Getting started with GraphQL Java and Spring Boot](https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/) -关于 `graphql-java` 的详细使用说明,请阅读: http://graphql-java.readthedocs.io/ +更多细节请参考`graphql-java`官方文档: https://www.graphql-java.com/documentation/getting-started -这也是个很好的教程 : https://www.howtographql.com/graphql-java/0-introduction/ +我们写了一本书: [GraphQL with Java and Spring](https://leanpub.com/graphql-java) -在 [发行版本列表](https://github.com/graphql-java/graphql-java/releases) 中,你可以看到最新版本和变更日志. +如果您想了解新版本更多的信息和变更日志请参阅[ releases 列表](https://github.com/graphql-java/graphql-java/releases)。 -### 编码行为约定 +### 行为规范 -请注意,本项目基于 [Contributor Code of Conduct](CODE_OF_CONDUCT.md) 协议来发行。 -贡献代码或其它给本项目, (commenting or opening PR/Issues etc) 即表示同意这个协议。 +请您注意该项目是与 [Contributor Code of Conduct](CODE_OF_CONDUCT.md) 一起发布的,通过提交 PR 或 Issues 参与该项目表示您已经同意遵守该准则,所以请您花时间仔细阅读它。 +### License -### 感谢 - -本框架是基于 [JS 参考实现](https://github.com/graphql/graphql-js),来开发的。 -如 StarWarSchema 和测试用例 (和其它很多方面) 是从它适配到 Java 的。 - -### 许可证 - -graphql-java 基于 MIT 许可证. 详见 [许可证](LICENSE.md) 。 - -Copyright (c) 2015, Andreas Marek 与 [贡献者们](https://github.com/graphql-java/graphql-java/graphs/contributors) - -[graphql-js 许可证](https://github.com/graphql/graphql-js/blob/master/LICENSE) - +Copyright (c) 2015, Andreas Marek and [贡献者们](https://github.com/graphql-java/graphql-java/graphs/contributors) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..455934a134 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,13 @@ +# Security Policy + +[GraphQL Java is the CVE Numbering Authority (CNA)](https://www.cve.org/PartnerInformation/ListofPartners/partner/graphql-java) for GraphQL Java, Java DataLoader, GraphQL Java Extended Scalars, and GraphQL Java Extended Validation. + +## Supported Versions + +As stated in our [Release Policy](https://www.graphql-java.com/blog/release-policy/), we will backport critical bugfixes and security fixes for versions dating back 18 months. These fixes will be backported depending on severity and demand. + +## Reporting a Vulnerability + +:rotating_light: To report a vulnerability, **DO NOT open a pull request or issue or GitHub discussion. DO NOT post publicly.** + +Instead, **report the vulnerability privately** via the Security tab on [graphql-java GitHub repository](https://github.com/graphql-java/graphql-java). See instructions at https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability diff --git a/additionallicenses/APACHE-LICENSE-2.0.txt b/additionallicenses/APACHE-LICENSE-2.0.txt new file mode 100644 index 0000000000..7a4a3ea242 --- /dev/null +++ b/additionallicenses/APACHE-LICENSE-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bin/jmh.sh b/bin/jmh.sh new file mode 100755 index 0000000000..26aa5e9460 --- /dev/null +++ b/bin/jmh.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +BRANCH=$(git rev-parse --abbrev-ref HEAD) +JAR="build/libs/graphql-java-0.0.0-$BRANCH-SNAPSHOT-jmh.jar" +echo "build and then running jmh for $JAR" + +./gradlew clean jmhJar + +java -jar "$JAR" "$@" \ No newline at end of file diff --git a/build.gradle b/build.gradle index e10f8844de..a9276fe452 100644 --- a/build.gradle +++ b/build.gradle @@ -1,89 +1,298 @@ +import aQute.bnd.gradle.BundleTaskExtension +import net.ltgt.gradle.errorprone.CheckSeverity +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + import java.text.SimpleDateFormat plugins { - id "com.jfrog.bintray" version "1.8.4" + id 'java' + id 'java-library' + id 'maven-publish' + id 'antlr' + id 'signing' + id "com.gradleup.shadow" version "9.0.0" + id "biz.aQute.bnd.builder" version "7.1.0" + id "io.github.gradle-nexus.publish-plugin" version "2.0.0" + id "groovy" + id "me.champeau.jmh" version "0.7.3" + id "net.ltgt.errorprone" version '4.3.0' + // + // Kotlin just for tests - not production code + id 'org.jetbrains.kotlin.jvm' version '2.2.21' } -apply plugin: 'java' -apply plugin: 'maven' -apply plugin: 'maven-publish' -apply plugin: 'antlr' -apply plugin: 'osgi' +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) // build on 21 - release on 11 + } +} -def getDevelopmentVersion() { - def output = new StringBuilder() - def error = new StringBuilder() - def gitShortHash = ["git", "-C", projectDir.toString(), "rev-parse", "--short", "HEAD"].execute() - gitShortHash.waitForProcessOutput(output, error) - def gitHash = output.toString().trim() - if (gitHash.isEmpty()) { - println "git hash is empty: error: ${error.toString()}" - throw new IllegalStateException("git hash could not be determined") - } - def version = new SimpleDateFormat('yyyy-MM-dd\'T\'HH-mm-ss').format(new Date()) + "-" + gitHash +kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + languageVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_11 + javaParameters = true + freeCompilerArgs = [ + '-Xemit-jvm-type-annotations', + '-Xjspecify-annotations=strict', + ] + } +} + +def makeDevelopmentVersion(parts) { + def version = String.join("-", parts) println "created development version: $version" - version + return version } +def getDevelopmentVersion() { + def dateTime = new SimpleDateFormat('yyyy-MM-dd\'T\'HH-mm-ss').format(new Date()) + def gitCheckOutput = new StringBuilder() + def gitCheckError = new StringBuilder() + def gitCheck = ["git", "-C", projectDir.toString(), "rev-parse", "--is-inside-work-tree"].execute() + gitCheck.waitForProcessOutput(gitCheckOutput, gitCheckError) + def isGit = gitCheckOutput.toString().trim() + if (isGit != "true") { + return makeDevelopmentVersion(["0.0.0", dateTime, "no-git"]) + } + + // a default Github Action env variable set to 'true' + def isCi = Boolean.parseBoolean(System.env.CI) + if (isCi) { + def gitHashOutput = new StringBuilder() + def gitHashError = new StringBuilder() + def gitShortHash = ["git", "-C", projectDir.toString(), "rev-parse", "--short", "HEAD"].execute() + gitShortHash.waitForProcessOutput(gitHashOutput, gitHashError) + def gitHash = gitHashOutput.toString().trim() + if (gitHash.isEmpty()) { + println "git hash is empty: error: ${gitHashError.toString()}" + throw new IllegalStateException("git hash could not be determined") + } + + return makeDevelopmentVersion(["0.0.0", dateTime, gitHash]) + } + + def gitRevParseOutput = new StringBuilder() + def gitRevParseError = new StringBuilder() + def gitRevParse = ["git", "-C", projectDir.toString(), "rev-parse", "--abbrev-ref", "HEAD"].execute() + gitRevParse.waitForProcessOutput(gitRevParseOutput, gitRevParseError) + def branchName = gitRevParseOutput.toString().trim() + + return makeDevelopmentVersion(["0.0.0", branchName, "SNAPSHOT"]) +} -sourceCompatibility = 1.8 -targetCompatibility = 1.8 -def reactiveStreamsVersion = '1.0.2' -def slf4jVersion = '1.7.25' +def reactiveStreamsVersion = '1.0.3' def releaseVersion = System.env.RELEASE_VERSION +def antlrVersion = '4.13.2' // https://mvnrepository.com/artifact/org.antlr/antlr4-runtime +def guavaVersion = '32.1.2-jre' version = releaseVersion ? releaseVersion : getDevelopmentVersion() group = 'com.graphql-java' +gradle.buildFinished { buildResult -> + println "*******************************" + println "*" + if (buildResult.failure != null) { + println "* FAILURE - ${buildResult.failure}" + } else { + println "* SUCCESS" + } + println "* Version: $version" + println "*" + println "*******************************" +} repositories { mavenCentral() mavenLocal() } -apply plugin: 'groovy' - jar { from "LICENSE.md" from "src/main/antlr/Graphql.g4" from "src/main/antlr/GraphqlOperation.g4" from "src/main/antlr/GraphqlSDL.g4" from "src/main/antlr/GraphqlCommon.g4" + manifest { + attributes('Automatic-Module-Name': 'com.graphqljava') + } } dependencies { - compile 'org.antlr:antlr4-runtime:4.7.2' - compile 'org.slf4j:slf4j-api:' + slf4jVersion - compile 'com.graphql-java:java-dataloader:2.2.3' - compile 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion - antlr "org.antlr:antlr4:4.7.2" - testCompile group: 'junit', name: 'junit', version: '4.12' - testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' - testCompile 'org.codehaus.groovy:groovy-all:2.4.13' - testCompile 'cglib:cglib-nodep:3.3.0' - testCompile 'org.objenesis:objenesis:2.1' - testCompile 'com.google.code.gson:gson:2.8.0' - testCompile 'org.eclipse.jetty:jetty-server:9.4.26.v20200117' - testCompile 'com.fasterxml.jackson.core:jackson-databind:2.10.0' - testCompile 'org.slf4j:slf4j-simple:' + slf4jVersion - testCompile 'org.awaitility:awaitility-groovy:3.0.0' - testCompile 'com.github.javafaker:javafaker:0.13' + api 'com.graphql-java:java-dataloader:6.0.0' + api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion + api "org.jspecify:jspecify:1.0.0" + + implementation 'org.antlr:antlr4-runtime:' + antlrVersion + implementation 'com.google.guava:guava:' + guavaVersion + + testImplementation 'org.junit.jupiter:junit-jupiter:5.14.1' + + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' + testImplementation 'net.bytebuddy:byte-buddy:1.18.1' + testImplementation 'org.objenesis:objenesis:3.4' + testImplementation 'org.apache.groovy:groovy:4.0.28"' + testImplementation 'org.apache.groovy:groovy-json:4.0.28' + testImplementation 'com.google.code.gson:gson:2.13.2' + testImplementation 'org.eclipse.jetty:jetty-server:11.0.26' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.20.1' + testImplementation 'org.awaitility:awaitility-groovy:4.3.0' + testImplementation 'com.github.javafaker:javafaker:1.0.2' + + testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion + testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" + testImplementation "io.projectreactor:reactor-core:3.8.0" + + testImplementation 'org.testng:testng:7.11.0' // use for reactive streams test inheritance + testImplementation "com.tngtech.archunit:archunit-junit5:1.4.1" + testImplementation 'org.openjdk.jmh:jmh-core:1.37' // required for ArchUnit to check JMH tests + + // JUnit Platform launcher required for Gradle 9 + testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.14.1' + + antlr 'org.antlr:antlr4:' + antlrVersion + + // this is needed for the idea jmh plugin to work correctly + jmh 'org.openjdk.jmh:jmh-core:1.37' + jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37' + + // comment this in if you want to run JMH benchmarks from idea +// jmhAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37' + + errorprone 'com.uber.nullaway:nullaway:0.12.10' + errorprone 'com.google.errorprone:error_prone_core:2.44.0' + + // just tests - no Kotlin otherwise + testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' +} + +shadowJar { + minimize() + archiveClassifier.set('') + configurations = [project.configurations.compileClasspath] + relocate('com.google.common', 'graphql.com.google.common') { + include 'com.google.common.collect.*' + include 'com.google.common.base.*' + include 'com.google.common.math.*' + include 'com.google.common.primitives.*' + } + relocate('org.antlr.v4.runtime', 'graphql.org.antlr.v4.runtime') + dependencies { + include(dependency('com.google.guava:guava:' + guavaVersion)) + include(dependency('org.antlr:antlr4-runtime:' + antlrVersion)) + } + from "LICENSE.md" + from "src/main/antlr/Graphql.g4" + from "src/main/antlr/GraphqlOperation.g4" + from "src/main/antlr/GraphqlSDL.g4" + from "src/main/antlr/GraphqlCommon.g4" + manifest { + attributes('Automatic-Module-Name': 'com.graphqljava') + } +} + +// Apply bnd to shadowJar task manually for Gradle 9 compatibility +tasks.named('shadowJar').configure { + // Get the BundleTaskExtension added by bnd plugin + def bundle = extensions.findByType(BundleTaskExtension) + if (bundle != null) { + //Configure bnd for shadowJar + // -exportcontents: graphql.* Adds all packages of graphql and below to the exported packages list + // -removeheaders: Private-Package Removes the MANIFEST.MF header Private-Package, which contains all the internal packages and + // also the repackaged packages like guava, which would be wrong after repackaging. + // Import-Package: Changes the imported packages header, to exclude guava and dependencies from the import list (! excludes packages) + // Guava was repackaged and included inside the jar, so we need to remove it. + // ANTLR was shaded, so we need to remove it. + // sun.misc is a JRE internal-only class that is not directly used by graphql-java. It was causing problems in libraries using graphql-java. + // The last ,* copies all the existing imports from the other dependencies, which is required. + bundle.bnd(''' +-exportcontents: graphql.* +-removeheaders: Private-Package +Import-Package: !android.os.*,!com.google.*,!org.checkerframework.*,!graphql.com.google.*,!org.antlr.*,!graphql.org.antlr.*,!sun.misc.*,org.jspecify.annotations;resolution:=optional,* +''') + } +} + +tasks.named('jmhJar') { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + from { + project.configurations.jmhRuntimeClasspath + .filter { it.exists() } + .collect { it.isDirectory() ? it : zipTree(it) } + } +} + - testCompile 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion - testCompile "io.reactivex.rxjava2:rxjava:2.1.5" +task extractWithoutGuava(type: Copy) { + from({ zipTree({ "build/libs/graphql-java-${project.version}.jar" }) }) { + exclude('/com/**') + } + into layout.buildDirectory.dir("extract") +} - testCompile 'org.testng:testng:6.1.1' // use for reactive streams test inheritance +extractWithoutGuava.dependsOn jar - testCompile 'org.openjdk.jmh:jmh-core:1.21' - testCompile 'org.openjdk.jmh:jmh-generator-annprocess:1.21' +task buildNewJar(type: Jar) { + from layout.buildDirectory.dir("extract") + archiveFileName = "graphql-java-tmp.jar" + destinationDirectory = file("${project.buildDir}/libs") + manifest { + from file("build/extract/META-INF/MANIFEST.MF") + } + def projectVersion = version + doLast { + delete("build/libs/graphql-java-${projectVersion}.jar") + file("build/libs/graphql-java-tmp.jar").renameTo(file("build/libs/graphql-java-${projectVersion}.jar")) + } } +buildNewJar.dependsOn extractWithoutGuava + +shadowJar.finalizedBy extractWithoutGuava, buildNewJar + task testng(type: Test) { useTestNG() } check.dependsOn testng -compileJava.source file("build/generated-src"), sourceSets.main.java +compileJava { + options.compilerArgs += ["-parameters"] + source file("build/generated-src"), sourceSets.main.java + // Gradle 9 requires explicit task dependencies + mustRunAfter generateTestGrammarSource, generateJmhGrammarSource +} + +tasks.withType(GroovyCompile) { + // Options when compiling Java using the Groovy plugin. + // (Groovy itself defaults to UTF-8 for Groovy code) + options.encoding = 'UTF-8' + sourceCompatibility = '11' + targetCompatibility = '11' + groovyOptions.forkOptions.memoryMaximumSize = "4g" +} + +tasks.withType(JavaCompile) { + options.release = 11 + options.errorprone { + disableAllChecks = true + check("NullAway", CheckSeverity.ERROR) + // + // end state has us with this config turned on - eg all classes + // + //option("NullAway:AnnotatedPackages", "graphql") + option("NullAway:CustomContractAnnotations", "graphql.Contract") + option("NullAway:OnlyNullMarked", "true") + option("NullAway:JSpecifyMode", "true") + } + // Include to disable NullAway on test code + if (name.toLowerCase().contains("test")) { + options.errorprone { + disable("NullAway") + } + } +} generateGrammarSource { includes = ['Graphql.g4'] @@ -91,16 +300,20 @@ generateGrammarSource { arguments += ["-visitor"] outputDirectory = file("${project.buildDir}/generated-src/antlr/main/graphql/parser/antlr") } -generateGrammarSource.inputs.dir('src/main/antlr') +generateGrammarSource.inputs + .dir('src/main/antlr') + .withPropertyName('sourceDir') + .withPathSensitivity(PathSensitivity.RELATIVE) + task sourcesJar(type: Jar) { dependsOn classes - classifier 'sources' + archiveClassifier = 'sources' from sourceSets.main.allSource } task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' + archiveClassifier = 'javadoc' from javadoc.destinationDir } @@ -108,23 +321,124 @@ javadoc { options.encoding = 'UTF-8' } -artifacts { - archives sourcesJar - archives javadocJar -} +// Removed deprecated archives configuration in favor of direct assemble dependencies + +List failedTests = [] +Map testsAndTime = [:] +Map testClassesAndTime = [:] +int testCount = 0 +long testTime = 0L -test { +tasks.withType(Test) { + useJUnitPlatform() testLogging { - exceptionFormat = 'full' + events "FAILED", "SKIPPED" + exceptionFormat = "FULL" + } + + // Required for JMH ArchUnit tests + classpath += sourceSets.jmh.output + dependsOn "jmhClasses" + + afterTest { TestDescriptor descriptor, TestResult result -> + testCount++ + if (result.getFailedTestCount() > 0) { + failedTests.add(descriptor) + } + def ms = (int) (result.endTime - result.startTime) + testTime += ms + String className = descriptor.className ?: "unknown" + String name = className + "." + descriptor.displayName + if (ms > 500) { + testsAndTime[name] = ms + testClassesAndTime.compute(className) { k, v -> v == null ? ms : v + ms } + println "\tTest '$name' took ${ms}ms" + } + } +} + +tasks.register('testWithJava17', Test) { + javaLauncher = javaToolchains.launcherFor { + languageVersion = JavaLanguageVersion.of(17) } + testClassesDirs = sourceSets.test.output.classesDirs + classpath = sourceSets.test.runtimeClasspath + classpath += sourceSets.jmh.output + dependsOn "jmhClasses" + + + dependsOn tasks.named('testClasses') + } +tasks.register('testWithJava11', Test) { + javaLauncher = javaToolchains.launcherFor { + languageVersion = JavaLanguageVersion.of(11) + } + testClassesDirs = sourceSets.test.output.classesDirs + classpath = sourceSets.test.runtimeClasspath + + dependsOn tasks.named('testClasses') + + classpath += sourceSets.jmh.output + dependsOn "jmhClasses" + +} + +test.dependsOn testWithJava17 +test.dependsOn testWithJava11 + + +/* + * The gradle.buildFinished callback is deprecated BUT there does not seem to be a decent alternative in gradle 7 + * So progress over perfection here + * + * See https://github.com/gradle/gradle/issues/20151 + */ +gradle.buildFinished { + println "\n\n" + println "============================" + println "$testCount tests run in $testTime ms" + println "============================" + if (!failedTests.isEmpty()) { + println "\n\n" + println "============================" + println "These are the test failures" + println "============================" + for (td in failedTests) { + println "${td.getClassName()}.${td.getDisplayName()}" + } + println "============================" + } + // slowest tests + println "\n\n" + println "============================" + println "Top 20 slowest test classes" + println "============================" + showTestResults(testClassesAndTime,20) { e -> + println "\tTest class ${e.key} took ${e.value}ms" + } + println "\n\n" + println "============================" + println "Top 50 slowest tests" + println "============================" + showTestResults(testsAndTime,50) { e -> + println "\tTest ${e.key} took ${e.value}ms" + } +} + +static private showTestResults(Map testMap, int limit, Closure closure) { + testMap.entrySet().stream() + .sorted { e1, e2 -> e2.getValue() - e1.getValue() } + .limit(limit) + .forEach(closure) +} + + allprojects { tasks.withType(Javadoc) { exclude('**/antlr/**') } - - } publishing { @@ -132,22 +446,25 @@ publishing { publications { graphqlJava(MavenPublication) { - version version + version = version from components.java artifact sourcesJar { - classifier "sources" + archiveClassifier = "sources" } artifact javadocJar { - classifier "javadoc" + archiveClassifier = "javadoc" } pom.withXml { - // The ANTLR-related code below--introduced in `1ac98bf`--addresses an issue with + // Removing antlr4 below (introduced in `1ac98bf`) addresses an issue with // the Gradle ANTLR plugin. `1ac98bf` can be reverted and this comment removed once // that issue is fixed and Gradle upgraded. See https://goo.gl/L92KiF and https://goo.gl/FY0PVR. - Node pomNode = asNode() + // + // Removing antlr4-runtime and guava because the classes we want to use are "shaded" into the jar itself + // via the shadowJar task + def pomNode = asNode() pomNode.dependencies.'*'.findAll() { - it.artifactId.text() == 'antlr4' + it.artifactId.text() == 'antlr4' || it.artifactId.text() == 'antlr4-runtime' || it.artifactId.text() == 'guava' }.each() { it.parent().remove(it) } @@ -180,44 +497,36 @@ publishing { } } - -bintray { - user = System.env.BINTRAY_USER ?: project["bintray.user"] - key = System.env.BINTRAY_API_KEY ?: project["bintray.key"] - publications = ['graphqlJava'] - publish = true - pkg { - repo = 'graphql-java' - name = 'graphql-java' - desc = 'GraphQL in Java' - licenses = ['MIT'] - vcsUrl = 'https://github.com/graphql-java/graphql-java' - - version { - name = project.version - desc = project.description - released = new Date() - vcsTag = 'v' + project.version - gpg { - sign = true - } - mavenCentralSync { - sync = true - user = System.env.MAVEN_CENTRAL_USER - password = System.env.MAVEN_CENTRAL_PASSWORD - close = '1' - } +nexusPublishing { + repositories { + sonatype { + username = System.env.MAVEN_CENTRAL_USER_NEW + password = System.env.MAVEN_CENTRAL_PASSWORD_NEW + // https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/#configuration + nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/")) + // GraphQL Java does not publish snapshots, but adding this URL for completeness + snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/")) } } } +signing { + setRequired { !project.hasProperty('publishToMavenLocal') } + def signingKey = System.env.MAVEN_CENTRAL_PGP_KEY + useInMemoryPgpKeys(signingKey, "") + sign publishing.publications +} + + // all publish tasks depend on the build task tasks.withType(PublishToMavenRepository) { dependsOn build } - -task wrapper(type: Wrapper) { - gradleVersion = '4.10.2' - distributionUrl = "https://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip" +// Only publish Maven POM, disable default Gradle modules file +tasks.withType(GenerateModuleMetadata) { + enabled = false } + + + diff --git a/coding-guidelines.md b/coding-guidelines.md index 3d0be708a4..cecd8b2c42 100644 --- a/coding-guidelines.md +++ b/coding-guidelines.md @@ -3,7 +3,7 @@ ## General principles -- We prefer closer to zero dependencies. Dont bring in guava, apache-commons, spring-xxx, y or z however much some StringUtils method might be useful. Less dependencies makes graphql-java more applicable to everyone +- We prefer closer to zero dependencies. Don't bring in guava, apache-commons, spring-xxx, y or z however much some StringUtils method might be useful. Fewer dependencies makes graphql-java more applicable to everyone - We prefer staying out of the HTTP stack. We are the low level engine of running graphql queries. Other concerns such as JSON and HTTP are handled better by other layers @@ -26,11 +26,11 @@ We have a mix of Optional and allowing null values because GraphQL Java was orig We are aiming to not use Optional moving forward in order to be consistent overall. ### Unit testing and dependencies -All tests are written in [Spock](http://spockframework.org). +All tests are written in [Spock](https://spockframework.org). -Every new code has to have unit tests. +All new code has to have unit tests. -The general pattern is that every method of every class is by default non static and that every dependency is a instance field with package private visibility +The general pattern is that every method of every class is by default non static and that every dependency is an instance field with package private visibility to allow for easy mocking in unit tests. The field should be annotated with `@VisibleForTesting`. Example: @@ -66,7 +66,7 @@ Naming is a key element of readable source code. Every variable and method should have a clear name. Single char variable names are never ok, except for index iterations. ### Comments -Public APIs should be documented via JavaDoc. The JavaDoc should describe how and why this class/method should be used. It should not the details of the implementation. +Public APIs should be documented via JavaDoc. The JavaDoc should describe how and why this class/method should be used. It should not specify the details of the implementation. Internal APIs don't have JavaDoc and in general we avoid any form of comments when possible. @@ -102,10 +102,10 @@ The default implementations for `Set` and `Map` should be the `LinkedHashSet` an because it offers stable iteration order. ### Stream API vs for, index loop etc -Using the Stream API is ok in general, but it must kept simple. Stream maps inside +Using the Stream API is ok in general, but it must be kept simple. Stream maps inside maps should be avoided and the inner logic should be refactored into a method. -It also ok to use the traditional for loop or other constructs: sometimes it is more readable than +It is also ok to use the traditional for loop or other constructs: sometimes it is more readable than the modern Stream API. The Stream API is not a replacement for all other loops/iterations. @@ -161,7 +161,7 @@ This is not ok: .map(foo -> foo.getMyProp()) .collect(toList()) ``` -It has a lambda in streams in streams. The inside stream should be extracted in a extra method and each +It has a lambda in streams in streams. The inside stream should be extracted to an extra method and each method call should be on a new line: ```java return fooListOfList @@ -171,7 +171,7 @@ method call should be on a new line: ``` ### Every class its own file: avoid inner classes and interfaces -Every class/interface should have its one file in general. +Every class/interface should have its own file in general. Inner classes are almost never ok (especially public ones). Every class should have its own file to make it easier to read and explore the code. ### Use `graphql.Assert` instead of `Objects` @@ -182,5 +182,3 @@ to be consistent. Don't use specific arguments for interface methods but rather a `FooEnvironment` argument. This ensures future backwards compatibility when new inputs are added. - - diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 2d310507e7..0000000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = python -msphinx -SPHINXPROJ = graphql-java -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index 8236edde41..0000000000 --- a/docs/conf.py +++ /dev/null @@ -1,172 +0,0 @@ -# -*- coding: utf-8 -*- -# -# graphql-java documentation build configuration file, created by -# sphinx-quickstart on Wed Oct 4 19:10:27 2017. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'graphql-java' -copyright = u'2017, Brad Baker' -author = u'Brad Baker' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = u'current' -# The full version, including alpha/beta/rc tags. -release = u'current' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = 'java' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'alabaster' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# This is required for the alabaster theme -# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars -html_sidebars = { - '**': [ - 'about.html', - 'navigation.html', - 'relations.html', # needs 'show_related': True theme option to display - 'searchbox.html', - 'donate.html', - ] -} - - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'graphql-javadoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'graphql-java.tex', u'graphql-java Documentation', - u'Brad Baker', 'manual'), -] - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'graphql-java', u'graphql-java Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'graphql-java', u'graphql-java Documentation', - author, 'graphql-java', 'One line description of project.', - 'Miscellaneous'), -] - -language = 'en' # language supported -locale_dirs = ['locale/'] # path is example but recommended. -gettext_compact = False # optional. \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 6a61611174..0000000000 --- a/docs/index.rst +++ /dev/null @@ -1,12 +0,0 @@ -Welcome to graphql-java -======================= - -.. image:: https://avatars1.githubusercontent.com/u/14289921?s=200&v=4 - :align: center - :height: 100px - :alt: graphql-java-logo - - -Our documentation moved: please go to `https://www.graphql-java.com/documentation `_ --------------------------------------------------------------------------------------------------------------------------------- - diff --git a/docs/readme.md b/docs/readme.md deleted file mode 100644 index 814468ba1d..0000000000 --- a/docs/readme.md +++ /dev/null @@ -1,24 +0,0 @@ - - To build the documentation locally do the following : - -``` - > pip install sphinx sphinx-autobuild - > cd docs - > make html -``` - - To build the other language(like Chinese version) documentation locally do the following : - -``` - > pip install sphinx sphinx-autobuild - > cd docs - > make -e SPHINXOPTS="-D language='zh_CN'" html -``` - - - This will create the output in _build/html so on Mac you should be able to - -``` -> open _build/html/index.html -``` - which will open a browser with the rendered documentation diff --git a/gradle.properties b/gradle.properties index c30326b485..bf5eeb87f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,10 @@ org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Dfile.encoding=UTF-8 -bintray.user=DUMMY_USER -bintray.key=DUMMY_KEY \ No newline at end of file + +# Prevents the Kotlin stdlib being a POM dependency +# +# https://kotlinlang.org/docs/gradle-configure-project.html#dependency-on-the-standard-library +kotlin.stdlib.default.dependency=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c44b679acd..f8e1ee3125 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 019065d1d6..bad7c2462f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip diff --git a/gradlew b/gradlew index cccdd3d517..adff685a03 100755 --- a/gradlew +++ b/gradlew @@ -1,78 +1,128 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,92 +131,118 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index f9553162f1..e509b2dd8f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,93 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/performance-results/.gitkeep b/performance-results/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json b/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json new file mode 100644 index 0000000000..e038ff0fed --- /dev/null +++ b/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4098507705676995, + "scoreError" : 0.0248935503366656, + "scoreConfidence" : [ + 3.384957220231034, + 3.434744320904365 + ], + "scorePercentiles" : { + "0.0" : 3.40519673991893, + "50.0" : 3.409982052692473, + "90.0" : 3.414242236966922, + "95.0" : 3.414242236966922, + "99.0" : 3.414242236966922, + "99.9" : 3.414242236966922, + "99.99" : 3.414242236966922, + "99.999" : 3.414242236966922, + "99.9999" : 3.414242236966922, + "100.0" : 3.414242236966922 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411312710571647, + 3.414242236966922 + ], + [ + 3.40519673991893, + 3.4086513948132993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7231380231942457, + "scoreError" : 0.01856164149472618, + "scoreConfidence" : [ + 1.7045763816995194, + 1.741699664688972 + ], + "scorePercentiles" : { + "0.0" : 1.7201780646528506, + "50.0" : 1.722962619633562, + "90.0" : 1.7264487888570081, + "95.0" : 1.7264487888570081, + "99.0" : 1.7264487888570081, + "99.9" : 1.7264487888570081, + "99.99" : 1.7264487888570081, + "99.999" : 1.7264487888570081, + "99.9999" : 1.7264487888570081, + "100.0" : 1.7264487888570081 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7213864558761982, + 1.7264487888570081 + ], + [ + 1.7201780646528506, + 1.7245387833909256 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8669447004278835, + "scoreError" : 0.0033409895220654477, + "scoreConfidence" : [ + 0.8636037109058181, + 0.8702856899499489 + ], + "scorePercentiles" : { + "0.0" : 0.8663656186685549, + "50.0" : 0.8669349875468758, + "90.0" : 0.8675432079492276, + "95.0" : 0.8675432079492276, + "99.0" : 0.8675432079492276, + "99.9" : 0.8675432079492276, + "99.99" : 0.8675432079492276, + "99.999" : 0.8675432079492276, + "99.9999" : 0.8675432079492276, + "100.0" : 0.8675432079492276 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675432079492276, + 0.8663656186685549 + ], + [ + 0.8667023944569926, + 0.867167580636759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.926276842278895, + "scoreError" : 2.4191606861477783, + "scoreConfidence" : [ + 40.50711615613112, + 45.34543752842667 + ], + "scorePercentiles" : { + "0.0" : 40.61444079049615, + "50.0" : 42.970686811193, + "90.0" : 45.1302030720952, + "95.0" : 45.1302030720952, + "99.0" : 45.1302030720952, + "99.9" : 45.1302030720952, + "99.99" : 45.1302030720952, + "99.999" : 45.1302030720952, + "99.9999" : 45.1302030720952, + "100.0" : 45.1302030720952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.40817053790828, + 43.939215333141064, + 45.1302030720952 + ], + [ + 42.18269950399568, + 40.61444079049615, + 41.31916000552604 + ], + [ + 42.799976301303936, + 42.970686811193, + 42.971939224850715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022611135359511498, + "scoreError" : 5.924153810738151E-4, + "scoreConfidence" : [ + 0.022018719978437684, + 0.02320355074058531 + ], + "scorePercentiles" : { + "0.0" : 0.02192285936323851, + "50.0" : 0.022678289092760182, + "90.0" : 0.023260692930232557, + "95.0" : 0.023260692930232557, + "99.0" : 0.023260692930232557, + "99.9" : 0.023260692930232557, + "99.99" : 0.023260692930232557, + "99.999" : 0.023260692930232557, + "99.9999" : 0.023260692930232557, + "100.0" : 0.023260692930232557 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022732881079545453, + 0.023260692930232557, + 0.022742364038636362 + ], + [ + 0.022468225233183856, + 0.022678289092760182, + 0.02192285936323851 + ], + [ + 0.022457287367713005, + 0.022713271950113377, + 0.02252434718018018 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json b/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json new file mode 100644 index 0000000000..f08161aec7 --- /dev/null +++ b/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4102578842457145, + "scoreError" : 0.02449629894447283, + "scoreConfidence" : [ + 3.3857615853012417, + 3.4347541831901873 + ], + "scorePercentiles" : { + "0.0" : 3.4062196008890453, + "50.0" : 3.40974951823215, + "90.0" : 3.4153128996295132, + "95.0" : 3.4153128996295132, + "99.0" : 3.4153128996295132, + "99.9" : 3.4153128996295132, + "99.99" : 3.4153128996295132, + "99.999" : 3.4153128996295132, + "99.9999" : 3.4153128996295132, + "100.0" : 3.4153128996295132 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4062196008890453, + 3.409143970092387 + ], + [ + 3.4103550663719124, + 3.4153128996295132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.723628882965939, + "scoreError" : 0.01684992650921796, + "scoreConfidence" : [ + 1.706778956456721, + 1.7404788094751569 + ], + "scorePercentiles" : { + "0.0" : 1.720348242957288, + "50.0" : 1.7237243857120972, + "90.0" : 1.7267185174822728, + "95.0" : 1.7267185174822728, + "99.0" : 1.7267185174822728, + "99.9" : 1.7267185174822728, + "99.99" : 1.7267185174822728, + "99.999" : 1.7267185174822728, + "99.9999" : 1.7267185174822728, + "100.0" : 1.7267185174822728 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.720348242957288, + 1.7239130487239118 + ], + [ + 1.7235357227002823, + 1.7267185174822728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675344687711203, + "scoreError" : 0.007218718093431595, + "scoreConfidence" : [ + 0.8603157506776887, + 0.8747531868645518 + ], + "scorePercentiles" : { + "0.0" : 0.8659004700112273, + "50.0" : 0.8679187802361048, + "90.0" : 0.8683998446010442, + "95.0" : 0.8683998446010442, + "99.0" : 0.8683998446010442, + "99.9" : 0.8683998446010442, + "99.99" : 0.8683998446010442, + "99.999" : 0.8683998446010442, + "99.9999" : 0.8683998446010442, + "100.0" : 0.8683998446010442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677972271860673, + 0.8680403332861423 + ], + [ + 0.8659004700112273, + 0.8683998446010442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.18911184050926, + "scoreError" : 0.9546618037946293, + "scoreConfidence" : [ + 41.234450036714634, + 43.14377364430389 + ], + "scorePercentiles" : { + "0.0" : 41.342744086435644, + "50.0" : 42.42040842447684, + "90.0" : 42.949395639087484, + "95.0" : 42.949395639087484, + "99.0" : 42.949395639087484, + "99.9" : 42.949395639087484, + "99.99" : 42.949395639087484, + "99.999" : 42.949395639087484, + "99.9999" : 42.949395639087484, + "100.0" : 42.949395639087484 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.949395639087484, + 42.43053158382356, + 42.77870012159051 + ], + [ + 42.10668734070957, + 42.47808802236617, + 42.42040842447684 + ], + [ + 41.342744086435644, + 41.459171410149246, + 41.736279935944374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022785715830115526, + "scoreError" : 7.765947574646602E-4, + "scoreConfidence" : [ + 0.022009121072650868, + 0.023562310587580185 + ], + "scorePercentiles" : { + "0.0" : 0.02206299895154185, + "50.0" : 0.022887831881006866, + "90.0" : 0.023311196390697675, + "95.0" : 0.023311196390697675, + "99.0" : 0.023311196390697675, + "99.9" : 0.023311196390697675, + "99.99" : 0.023311196390697675, + "99.999" : 0.023311196390697675, + "99.9999" : 0.023311196390697675, + "100.0" : 0.023311196390697675 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022410095964205817, + 0.02206299895154185, + 0.022154066898230088 + ], + [ + 0.022887831881006866, + 0.022883768581235697, + 0.023030873466666667 + ], + [ + 0.02313581221939954, + 0.023311196390697675, + 0.023194798118055554 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json b/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json new file mode 100644 index 0000000000..cc3c0e1c6c --- /dev/null +++ b/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.416195951743301, + "scoreError" : 0.026850420058968587, + "scoreConfidence" : [ + 3.3893455316843326, + 3.4430463718022697 + ], + "scorePercentiles" : { + "0.0" : 3.4104756625310313, + "50.0" : 3.417284846910124, + "90.0" : 3.4197384506219257, + "95.0" : 3.4197384506219257, + "99.0" : 3.4197384506219257, + "99.9" : 3.4197384506219257, + "99.99" : 3.4197384506219257, + "99.999" : 3.4197384506219257, + "99.9999" : 3.4197384506219257, + "100.0" : 3.4197384506219257 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.415843843944456, + 3.4197384506219257 + ], + [ + 3.4104756625310313, + 3.4187258498757913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7230485586886197, + "scoreError" : 0.020087806386833534, + "scoreConfidence" : [ + 1.7029607523017862, + 1.7431363650754532 + ], + "scorePercentiles" : { + "0.0" : 1.7187149064375862, + "50.0" : 1.7237077757716905, + "90.0" : 1.726063776773511, + "95.0" : 1.726063776773511, + "99.0" : 1.726063776773511, + "99.9" : 1.726063776773511, + "99.99" : 1.726063776773511, + "99.999" : 1.726063776773511, + "99.9999" : 1.726063776773511, + "100.0" : 1.726063776773511 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7187149064375862, + 1.7240607327472357 + ], + [ + 1.7233548187961456, + 1.726063776773511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672591450106986, + "scoreError" : 0.0031722136235199333, + "scoreConfidence" : [ + 0.8640869313871786, + 0.8704313586342185 + ], + "scorePercentiles" : { + "0.0" : 0.8668100501731115, + "50.0" : 0.8671493032151358, + "90.0" : 0.8679279234394113, + "95.0" : 0.8679279234394113, + "99.0" : 0.8679279234394113, + "99.9" : 0.8679279234394113, + "99.99" : 0.8679279234394113, + "99.999" : 0.8679279234394113, + "99.9999" : 0.8679279234394113, + "100.0" : 0.8679279234394113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673072236763956, + 0.8668100501731115 + ], + [ + 0.866991382753876, + 0.8679279234394113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.98710131013886, + "scoreError" : 1.2857923706741503, + "scoreConfidence" : [ + 41.70130893946471, + 44.27289368081301 + ], + "scorePercentiles" : { + "0.0" : 41.39140519888467, + "50.0" : 43.14941248747299, + "90.0" : 44.20711145156694, + "95.0" : 44.20711145156694, + "99.0" : 44.20711145156694, + "99.9" : 44.20711145156694, + "99.99" : 44.20711145156694, + "99.999" : 44.20711145156694, + "99.9999" : 44.20711145156694, + "100.0" : 44.20711145156694 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.20711145156694, + 43.20559444971562, + 43.38709980039055 + ], + [ + 42.65699183021884, + 43.40605138244976, + 42.67513011200432 + ], + [ + 43.14941248747299, + 42.80511507854605, + 41.39140519888467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022628376233754664, + "scoreError" : 0.0010121779437417262, + "scoreConfidence" : [ + 0.021616198290012937, + 0.02364055417749639 + ], + "scorePercentiles" : { + "0.0" : 0.02194287973464912, + "50.0" : 0.02243926284753363, + "90.0" : 0.023448793035128805, + "95.0" : 0.023448793035128805, + "99.0" : 0.023448793035128805, + "99.9" : 0.023448793035128805, + "99.99" : 0.023448793035128805, + "99.999" : 0.023448793035128805, + "99.9999" : 0.023448793035128805, + "100.0" : 0.023448793035128805 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02333720638927739, + 0.023367165808411215, + 0.023448793035128805 + ], + [ + 0.022580380595936794, + 0.022375214377232142, + 0.02243926284753363 + ], + [ + 0.022161285869469027, + 0.022003197446153845, + 0.02194287973464912 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json b/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json new file mode 100644 index 0000000000..2c04859665 --- /dev/null +++ b/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4152001755669277, + "scoreError" : 0.021628843464137723, + "scoreConfidence" : [ + 3.39357133210279, + 3.4368290190310655 + ], + "scorePercentiles" : { + "0.0" : 3.4121139027546206, + "50.0" : 3.4144609174987552, + "90.0" : 3.419764964515579, + "95.0" : 3.419764964515579, + "99.0" : 3.419764964515579, + "99.9" : 3.419764964515579, + "99.99" : 3.419764964515579, + "99.999" : 3.419764964515579, + "99.9999" : 3.419764964515579, + "100.0" : 3.419764964515579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4134232276246173, + 3.419764964515579 + ], + [ + 3.4121139027546206, + 3.415498607372893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7263020460260308, + "scoreError" : 0.019054912694287184, + "scoreConfidence" : [ + 1.7072471333317436, + 1.745356958720318 + ], + "scorePercentiles" : { + "0.0" : 1.7233094219683196, + "50.0" : 1.7257643130488556, + "90.0" : 1.7303701360380923, + "95.0" : 1.7303701360380923, + "99.0" : 1.7303701360380923, + "99.9" : 1.7303701360380923, + "99.99" : 1.7303701360380923, + "99.999" : 1.7303701360380923, + "99.9999" : 1.7303701360380923, + "100.0" : 1.7303701360380923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7233094219683196, + 1.7257308147936137 + ], + [ + 1.7257978113040977, + 1.7303701360380923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680565422533224, + "scoreError" : 0.004144184933370064, + "scoreConfidence" : [ + 0.8639123573199523, + 0.8722007271866925 + ], + "scorePercentiles" : { + "0.0" : 0.8673780217192926, + "50.0" : 0.8680285063653239, + "90.0" : 0.8687911345633491, + "95.0" : 0.8687911345633491, + "99.0" : 0.8687911345633491, + "99.9" : 0.8687911345633491, + "99.99" : 0.8687911345633491, + "99.999" : 0.8687911345633491, + "99.9999" : 0.8687911345633491, + "100.0" : 0.8687911345633491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673780217192926, + 0.8687911345633491 + ], + [ + 0.8683692960924105, + 0.8676877166382374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.24510151191392, + "scoreError" : 1.658507364853044, + "scoreConfidence" : [ + 41.58659414706088, + 44.90360887676697 + ], + "scorePercentiles" : { + "0.0" : 41.770911843921056, + "50.0" : 43.48692947280641, + "90.0" : 44.42339392286783, + "95.0" : 44.42339392286783, + "99.0" : 44.42339392286783, + "99.9" : 44.42339392286783, + "99.99" : 44.42339392286783, + "99.999" : 44.42339392286783, + "99.9999" : 44.42339392286783, + "100.0" : 44.42339392286783 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.42339392286783, + 43.72390047070996, + 44.0283409955762 + ], + [ + 41.770911843921056, + 41.938385219028056, + 42.33876278427692 + ], + [ + 43.36311706281474, + 43.48692947280641, + 44.13217183522408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022512762277781196, + "scoreError" : 5.112572288638061E-4, + "scoreConfidence" : [ + 0.02200150504891739, + 0.023024019506645003 + ], + "scorePercentiles" : { + "0.0" : 0.022083574353200883, + "50.0" : 0.022541668768018018, + "90.0" : 0.02301931708275862, + "95.0" : 0.02301931708275862, + "99.0" : 0.02301931708275862, + "99.9" : 0.02301931708275862, + "99.99" : 0.02301931708275862, + "99.999" : 0.02301931708275862, + "99.9999" : 0.02301931708275862, + "100.0" : 0.02301931708275862 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02301931708275862, + 0.02268371470068027, + 0.022794350806378132 + ], + [ + 0.02236791441517857, + 0.02244032732735426, + 0.022571994894144146 + ], + [ + 0.02211199815231788, + 0.022083574353200883, + 0.022541668768018018 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json b/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json new file mode 100644 index 0000000000..2eb4cb00ca --- /dev/null +++ b/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.39947127955597, + "scoreError" : 0.04375139947714444, + "scoreConfidence" : [ + 3.3557198800788255, + 3.4432226790331146 + ], + "scorePercentiles" : { + "0.0" : 3.3932042357857095, + "50.0" : 3.398319202804707, + "90.0" : 3.4080424768287556, + "95.0" : 3.4080424768287556, + "99.0" : 3.4080424768287556, + "99.9" : 3.4080424768287556, + "99.99" : 3.4080424768287556, + "99.999" : 3.4080424768287556, + "99.9999" : 3.4080424768287556, + "100.0" : 3.4080424768287556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3932042357857095, + 3.3949930686358667 + ], + [ + 3.4016453369735475, + 3.4080424768287556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7202643292853323, + "scoreError" : 0.010698822469557535, + "scoreConfidence" : [ + 1.709565506815775, + 1.7309631517548898 + ], + "scorePercentiles" : { + "0.0" : 1.7185075642902061, + "50.0" : 1.7200781357517012, + "90.0" : 1.722393481347721, + "95.0" : 1.722393481347721, + "99.0" : 1.722393481347721, + "99.9" : 1.722393481347721, + "99.99" : 1.722393481347721, + "99.999" : 1.722393481347721, + "99.9999" : 1.722393481347721, + "100.0" : 1.722393481347721 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7185075642902061, + 1.722393481347721 + ], + [ + 1.719561062814024, + 1.7205952086893783 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654605738416737, + "scoreError" : 0.002206407164656894, + "scoreConfidence" : [ + 0.8632541666770168, + 0.8676669810063307 + ], + "scorePercentiles" : { + "0.0" : 0.8649842104508775, + "50.0" : 0.8655377996365867, + "90.0" : 0.8657824856426442, + "95.0" : 0.8657824856426442, + "99.0" : 0.8657824856426442, + "99.9" : 0.8657824856426442, + "99.99" : 0.8657824856426442, + "99.999" : 0.8657824856426442, + "99.9999" : 0.8657824856426442, + "100.0" : 0.8657824856426442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8649842104508775, + 0.8654774880262567 + ], + [ + 0.8655981112469168, + 0.8657824856426442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.38406101685299, + "scoreError" : 0.6843156074743918, + "scoreConfidence" : [ + 40.6997454093786, + 42.06837662432738 + ], + "scorePercentiles" : { + "0.0" : 40.78923580225026, + "50.0" : 41.44125463453928, + "90.0" : 41.95496958011177, + "95.0" : 41.95496958011177, + "99.0" : 41.95496958011177, + "99.9" : 41.95496958011177, + "99.99" : 41.95496958011177, + "99.999" : 41.95496958011177, + "99.9999" : 41.95496958011177, + "100.0" : 41.95496958011177 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.90606757700961, + 41.44125463453928, + 41.95496958011177 + ], + [ + 41.86591295369653, + 41.48402929587195, + 41.624082377265175 + ], + [ + 41.04673717098326, + 41.34425975994901, + 40.78923580225026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024747128652428545, + "scoreError" : 8.316013168757033E-4, + "scoreConfidence" : [ + 0.02391552733555284, + 0.02557872996930425 + ], + "scorePercentiles" : { + "0.0" : 0.02395063935167464, + "50.0" : 0.024757809653465346, + "90.0" : 0.025461867081424935, + "95.0" : 0.025461867081424935, + "99.0" : 0.025461867081424935, + "99.9" : 0.025461867081424935, + "99.99" : 0.025461867081424935, + "99.999" : 0.025461867081424935, + "99.9999" : 0.025461867081424935, + "100.0" : 0.025461867081424935 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024250484956416466, + 0.02482653333995037, + 0.024802851465346536 + ], + [ + 0.025461867081424935, + 0.02452199099754902, + 0.02545728996183206 + ], + [ + 0.02469469106419753, + 0.024757809653465346, + 0.02395063935167464 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json b/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json new file mode 100644 index 0000000000..d7d4143001 --- /dev/null +++ b/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4077902649261356, + "scoreError" : 0.011234878517476501, + "scoreConfidence" : [ + 3.396555386408659, + 3.419025143443612 + ], + "scorePercentiles" : { + "0.0" : 3.4053492910657934, + "50.0" : 3.408347201679087, + "90.0" : 3.4091173652805766, + "95.0" : 3.4091173652805766, + "99.0" : 3.4091173652805766, + "99.9" : 3.4091173652805766, + "99.99" : 3.4091173652805766, + "99.999" : 3.4091173652805766, + "99.9999" : 3.4091173652805766, + "100.0" : 3.4091173652805766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4053492910657934, + 3.407743717137213 + ], + [ + 3.40895068622096, + 3.4091173652805766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7203127954265476, + "scoreError" : 0.013318600773962557, + "scoreConfidence" : [ + 1.706994194652585, + 1.73363139620051 + ], + "scorePercentiles" : { + "0.0" : 1.7175975018719172, + "50.0" : 1.7205913784095175, + "90.0" : 1.722470923015238, + "95.0" : 1.722470923015238, + "99.0" : 1.722470923015238, + "99.9" : 1.722470923015238, + "99.99" : 1.722470923015238, + "99.999" : 1.722470923015238, + "99.9999" : 1.722470923015238, + "100.0" : 1.722470923015238 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211197986006654, + 1.722470923015238 + ], + [ + 1.7175975018719172, + 1.7200629582183695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8650705897922965, + "scoreError" : 0.009557110836336062, + "scoreConfidence" : [ + 0.8555134789559604, + 0.8746277006286325 + ], + "scorePercentiles" : { + "0.0" : 0.8631902016341529, + "50.0" : 0.8653947483238336, + "90.0" : 0.8663026608873658, + "95.0" : 0.8663026608873658, + "99.0" : 0.8663026608873658, + "99.9" : 0.8663026608873658, + "99.99" : 0.8663026608873658, + "99.999" : 0.8663026608873658, + "99.9999" : 0.8663026608873658, + "100.0" : 0.8663026608873658 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8662003758298101, + 0.8663026608873658 + ], + [ + 0.8631902016341529, + 0.864589120817857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.829882344445565, + "scoreError" : 2.1834707260014885, + "scoreConfidence" : [ + 39.64641161844408, + 44.01335307044705 + ], + "scorePercentiles" : { + "0.0" : 40.522546266756436, + "50.0" : 41.16019698230881, + "90.0" : 43.998564098060946, + "95.0" : 43.998564098060946, + "99.0" : 43.998564098060946, + "99.9" : 43.998564098060946, + "99.99" : 43.998564098060946, + "99.999" : 43.998564098060946, + "99.9999" : 43.998564098060946, + "100.0" : 43.998564098060946 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.99599155133248, + 41.10904513591438, + 41.16019698230881 + ], + [ + 40.92612743551148, + 41.19737129049191, + 40.522546266756436 + ], + [ + 43.20615819460214, + 43.998564098060946, + 43.3529401450314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023323010576891567, + "scoreError" : 6.943879125023075E-4, + "scoreConfidence" : [ + 0.02262862266438926, + 0.024017398489393875 + ], + "scorePercentiles" : { + "0.0" : 0.02265938378280543, + "50.0" : 0.023499072201877934, + "90.0" : 0.02383227217142857, + "95.0" : 0.02383227217142857, + "99.0" : 0.02383227217142857, + "99.9" : 0.02383227217142857, + "99.99" : 0.02383227217142857, + "99.999" : 0.02383227217142857, + "99.9999" : 0.02383227217142857, + "100.0" : 0.02383227217142857 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023499072201877934, + 0.023596047476415093, + 0.023534972790588235 + ], + [ + 0.022848023748858446, + 0.022876015378995435, + 0.02265938378280543 + ], + [ + 0.023485217551643192, + 0.023576090089411764, + 0.02383227217142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json b/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json new file mode 100644 index 0000000000..a13f68e381 --- /dev/null +++ b/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424378627035124, + "scoreError" : 0.0240399263203179, + "scoreConfidence" : [ + 3.4003387007148063, + 3.448418553355442 + ], + "scorePercentiles" : { + "0.0" : 3.4207630701321463, + "50.0" : 3.4236022814383293, + "90.0" : 3.429546875131693, + "95.0" : 3.429546875131693, + "99.0" : 3.429546875131693, + "99.9" : 3.429546875131693, + "99.99" : 3.429546875131693, + "99.999" : 3.429546875131693, + "99.9999" : 3.429546875131693, + "100.0" : 3.429546875131693 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4230868615582297, + 3.429546875131693 + ], + [ + 3.4207630701321463, + 3.4241177013184285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7298687803269965, + "scoreError" : 0.010463124288060224, + "scoreConfidence" : [ + 1.7194056560389364, + 1.7403319046150567 + ], + "scorePercentiles" : { + "0.0" : 1.7280934234954237, + "50.0" : 1.7296979626163922, + "90.0" : 1.731985772579778, + "95.0" : 1.731985772579778, + "99.0" : 1.731985772579778, + "99.9" : 1.731985772579778, + "99.99" : 1.731985772579778, + "99.999" : 1.731985772579778, + "99.9999" : 1.731985772579778, + "100.0" : 1.731985772579778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7294035761393258, + 1.731985772579778 + ], + [ + 1.7280934234954237, + 1.7299923490934583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8701164779654085, + "scoreError" : 0.00395761298041778, + "scoreConfidence" : [ + 0.8661588649849907, + 0.8740740909458262 + ], + "scorePercentiles" : { + "0.0" : 0.869458088898, + "50.0" : 0.8701123859892204, + "90.0" : 0.8707830509851929, + "95.0" : 0.8707830509851929, + "99.0" : 0.8707830509851929, + "99.9" : 0.8707830509851929, + "99.99" : 0.8707830509851929, + "99.999" : 0.8707830509851929, + "99.9999" : 0.8707830509851929, + "100.0" : 0.8707830509851929 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8704641226465905, + 0.8707830509851929 + ], + [ + 0.869458088898, + 0.8697606493318503 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.78882381498855, + "scoreError" : 1.6789885454880027, + "scoreConfidence" : [ + 43.10983526950054, + 46.46781236047655 + ], + "scorePercentiles" : { + "0.0" : 43.649949104503946, + "50.0" : 44.40706804090582, + "90.0" : 46.08789493604563, + "95.0" : 46.08789493604563, + "99.0" : 46.08789493604563, + "99.9" : 46.08789493604563, + "99.99" : 46.08789493604563, + "99.999" : 46.08789493604563, + "99.9999" : 46.08789493604563, + "100.0" : 46.08789493604563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.06557024270227, + 46.08789493604563, + 46.08198077042825 + ], + [ + 44.39265750328088, + 44.40706804090582, + 44.42821713852795 + ], + [ + 43.649949104503946, + 43.99180129638337, + 43.99427530211887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02236314997162596, + "scoreError" : 7.931364759453877E-4, + "scoreConfidence" : [ + 0.021570013495680572, + 0.023156286447571346 + ], + "scorePercentiles" : { + "0.0" : 0.022002074795604395, + "50.0" : 0.022066712607929515, + "90.0" : 0.02300942944597701, + "95.0" : 0.02300942944597701, + "99.0" : 0.02300942944597701, + "99.9" : 0.02300942944597701, + "99.99" : 0.02300942944597701, + "99.999" : 0.02300942944597701, + "99.9999" : 0.02300942944597701, + "100.0" : 0.02300942944597701 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02299016895632184, + 0.02297587995642202, + 0.02300942944597701 + ], + [ + 0.02206858371585903, + 0.022066712607929515, + 0.022060007019823788 + ], + [ + 0.022002074795604395, + 0.022048064753303964, + 0.02204742849339207 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json b/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json new file mode 100644 index 0000000000..68ea673507 --- /dev/null +++ b/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3995645247595654, + "scoreError" : 0.02987629044326602, + "scoreConfidence" : [ + 3.3696882343162993, + 3.4294408152028315 + ], + "scorePercentiles" : { + "0.0" : 3.393628753189234, + "50.0" : 3.400273375153123, + "90.0" : 3.404082595542781, + "95.0" : 3.404082595542781, + "99.0" : 3.404082595542781, + "99.9" : 3.404082595542781, + "99.99" : 3.404082595542781, + "99.999" : 3.404082595542781, + "99.9999" : 3.404082595542781, + "100.0" : 3.404082595542781 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.398339998248194, + 3.4022067520580523 + ], + [ + 3.393628753189234, + 3.404082595542781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7205088090910943, + "scoreError" : 0.012083738709990733, + "scoreConfidence" : [ + 1.7084250703811035, + 1.732592547801085 + ], + "scorePercentiles" : { + "0.0" : 1.7181281468730438, + "50.0" : 1.7209360921738943, + "90.0" : 1.722034905143545, + "95.0" : 1.722034905143545, + "99.0" : 1.722034905143545, + "99.9" : 1.722034905143545, + "99.99" : 1.722034905143545, + "99.999" : 1.722034905143545, + "99.9999" : 1.722034905143545, + "100.0" : 1.722034905143545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7181281468730438, + 1.722034905143545 + ], + [ + 1.7199044135030424, + 1.721967770844746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864565745832372, + "scoreError" : 0.0026425774790852547, + "scoreConfidence" : [ + 0.8619231683532868, + 0.8672083233114573 + ], + "scorePercentiles" : { + "0.0" : 0.8642812220365862, + "50.0" : 0.8644122330769803, + "90.0" : 0.8651572951389412, + "95.0" : 0.8651572951389412, + "99.0" : 0.8651572951389412, + "99.9" : 0.8651572951389412, + "99.99" : 0.8651572951389412, + "99.999" : 0.8651572951389412, + "99.9999" : 0.8651572951389412, + "100.0" : 0.8651572951389412 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8642812220365862, + 0.8643034133675414 + ], + [ + 0.8645210527864192, + 0.8651572951389412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 38.949218227332636, + "scoreError" : 1.5418956244161082, + "scoreConfidence" : [ + 37.40732260291653, + 40.49111385174874 + ], + "scorePercentiles" : { + "0.0" : 37.33301129092536, + "50.0" : 38.9146032107846, + "90.0" : 40.30890725487399, + "95.0" : 40.30890725487399, + "99.0" : 40.30890725487399, + "99.9" : 40.30890725487399, + "99.99" : 40.30890725487399, + "99.999" : 40.30890725487399, + "99.9999" : 40.30890725487399, + "100.0" : 40.30890725487399 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 39.64330498367299, + 39.921199062124764, + 40.30890725487399 + ], + [ + 37.33301129092536, + 38.286993705317236, + 38.383005751480006 + ], + [ + 39.07198320782333, + 38.9146032107846, + 38.6799555789915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.026043005372482237, + "scoreError" : 0.0013237341236282344, + "scoreConfidence" : [ + 0.024719271248854, + 0.027366739496110473 + ], + "scorePercentiles" : { + "0.0" : 0.024870349985111662, + "50.0" : 0.026153539485639688, + "90.0" : 0.026994492881401617, + "95.0" : 0.026994492881401617, + "99.0" : 0.026994492881401617, + "99.9" : 0.026994492881401617, + "99.99" : 0.026994492881401617, + "99.999" : 0.026994492881401617, + "99.9999" : 0.026994492881401617, + "100.0" : 0.026994492881401617 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025874787736434108, + 0.026153539485639688, + 0.026638927933510637 + ], + [ + 0.02556267860714286, + 0.024960604900249376, + 0.024870349985111662 + ], + [ + 0.02643135141424802, + 0.026994492881401617, + 0.02690031540860215 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json b/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json new file mode 100644 index 0000000000..ccf4a784ae --- /dev/null +++ b/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4254834308373514, + "scoreError" : 0.015025400543458568, + "scoreConfidence" : [ + 3.410458030293893, + 3.44050883138081 + ], + "scorePercentiles" : { + "0.0" : 3.423328219387952, + "50.0" : 3.425552177730207, + "90.0" : 3.42750114850104, + "95.0" : 3.42750114850104, + "99.0" : 3.42750114850104, + "99.9" : 3.42750114850104, + "99.99" : 3.42750114850104, + "99.999" : 3.42750114850104, + "99.9999" : 3.42750114850104, + "100.0" : 3.42750114850104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423328219387952, + 3.42750114850104 + ], + [ + 3.4236164536870035, + 3.4274879017734112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7302247645519597, + "scoreError" : 0.010033955510826632, + "scoreConfidence" : [ + 1.720190809041133, + 1.7402587200627864 + ], + "scorePercentiles" : { + "0.0" : 1.7288955727752675, + "50.0" : 1.7298209211776594, + "90.0" : 1.7323616430772524, + "95.0" : 1.7323616430772524, + "99.0" : 1.7323616430772524, + "99.9" : 1.7323616430772524, + "99.99" : 1.7323616430772524, + "99.999" : 1.7323616430772524, + "99.9999" : 1.7323616430772524, + "100.0" : 1.7323616430772524 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7292851672177052, + 1.7323616430772524 + ], + [ + 1.7288955727752675, + 1.7303566751376136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700678921409488, + "scoreError" : 0.00713353924393665, + "scoreConfidence" : [ + 0.8629343528970121, + 0.8772014313848855 + ], + "scorePercentiles" : { + "0.0" : 0.8686670360707984, + "50.0" : 0.8701250932717297, + "90.0" : 0.8713543459495379, + "95.0" : 0.8713543459495379, + "99.0" : 0.8713543459495379, + "99.9" : 0.8713543459495379, + "99.99" : 0.8713543459495379, + "99.999" : 0.8713543459495379, + "99.9999" : 0.8713543459495379, + "100.0" : 0.8713543459495379 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686670360707984, + 0.8702516506204957 + ], + [ + 0.8699985359229638, + 0.8713543459495379 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.32130915520371, + "scoreError" : 3.560055957159324, + "scoreConfidence" : [ + 41.761253198044386, + 48.88136511236303 + ], + "scorePercentiles" : { + "0.0" : 42.7537076662837, + "50.0" : 45.5422455784985, + "90.0" : 47.642633062453015, + "95.0" : 47.642633062453015, + "99.0" : 47.642633062453015, + "99.9" : 47.642633062453015, + "99.99" : 47.642633062453015, + "99.999" : 47.642633062453015, + "99.9999" : 47.642633062453015, + "100.0" : 47.642633062453015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.7537076662837, + 42.76955088117818, + 42.768304606190554 + ], + [ + 47.63155598328764, + 47.64036553406184, + 47.642633062453015 + ], + [ + 45.624284346660495, + 45.519134738219414, + 45.5422455784985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022670557238933457, + "scoreError" : 9.94605572521605E-4, + "scoreConfidence" : [ + 0.02167595166641185, + 0.023665162811455063 + ], + "scorePercentiles" : { + "0.0" : 0.022023165004395603, + "50.0" : 0.022586484038374717, + "90.0" : 0.02347066886416862, + "95.0" : 0.02347066886416862, + "99.0" : 0.02347066886416862, + "99.9" : 0.02347066886416862, + "99.99" : 0.02347066886416862, + "99.999" : 0.02347066886416862, + "99.9999" : 0.02347066886416862, + "100.0" : 0.02347066886416862 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02347066886416862, + 0.023345283524475523, + 0.02333887996270396 + ], + [ + 0.02202807403964758, + 0.02202869620044053, + 0.022023165004395603 + ], + [ + 0.022632988674208144, + 0.022580774841986458, + 0.022586484038374717 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json b/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json new file mode 100644 index 0000000000..b1e6221354 --- /dev/null +++ b/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4183186208130487, + "scoreError" : 0.022246121905918532, + "scoreConfidence" : [ + 3.39607249890713, + 3.4405647427189674 + ], + "scorePercentiles" : { + "0.0" : 3.413848941434486, + "50.0" : 3.4190590718704748, + "90.0" : 3.42130739807676, + "95.0" : 3.42130739807676, + "99.0" : 3.42130739807676, + "99.9" : 3.42130739807676, + "99.99" : 3.42130739807676, + "99.999" : 3.42130739807676, + "99.9999" : 3.42130739807676, + "100.0" : 3.42130739807676 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4173936330209784, + 3.42130739807676 + ], + [ + 3.413848941434486, + 3.4207245107199706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291357989986291, + "scoreError" : 0.015790087869288705, + "scoreConfidence" : [ + 1.7133457111293404, + 1.7449258868679178 + ], + "scorePercentiles" : { + "0.0" : 1.726553979052951, + "50.0" : 1.7288314425743558, + "90.0" : 1.7323263317928532, + "95.0" : 1.7323263317928532, + "99.0" : 1.7323263317928532, + "99.9" : 1.7323263317928532, + "99.99" : 1.7323263317928532, + "99.999" : 1.7323263317928532, + "99.9999" : 1.7323263317928532, + "100.0" : 1.7323263317928532 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.726553979052951, + 1.729495524499686 + ], + [ + 1.728167360649026, + 1.7323263317928532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8694925783721111, + "scoreError" : 0.0043954381149764795, + "scoreConfidence" : [ + 0.8650971402571347, + 0.8738880164870876 + ], + "scorePercentiles" : { + "0.0" : 0.868936526115034, + "50.0" : 0.8692746681495762, + "90.0" : 0.8704844510742582, + "95.0" : 0.8704844510742582, + "99.0" : 0.8704844510742582, + "99.9" : 0.8704844510742582, + "99.99" : 0.8704844510742582, + "99.999" : 0.8704844510742582, + "99.9999" : 0.8704844510742582, + "100.0" : 0.8704844510742582 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.869270402780433, + 0.8692789335187193 + ], + [ + 0.868936526115034, + 0.8704844510742582 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.48605468306695, + "scoreError" : 2.5689013669187672, + "scoreConfidence" : [ + 41.91715331614819, + 47.05495604998572 + ], + "scorePercentiles" : { + "0.0" : 42.465270555590564, + "50.0" : 45.23859981991722, + "90.0" : 45.75807170958764, + "95.0" : 45.75807170958764, + "99.0" : 45.75807170958764, + "99.9" : 45.75807170958764, + "99.99" : 45.75807170958764, + "99.999" : 45.75807170958764, + "99.9999" : 45.75807170958764, + "100.0" : 45.75807170958764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.465270555590564, + 42.465537157018524, + 42.47251210446258 + ], + [ + 45.75807170958764, + 45.73163472741838, + 45.73404569787986 + ], + [ + 45.23859981991722, + 45.22964511515073, + 45.279175260577084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02247107156704055, + "scoreError" : 5.19834581792683E-4, + "scoreConfidence" : [ + 0.021951236985247865, + 0.022990906148833232 + ], + "scorePercentiles" : { + "0.0" : 0.02216260132522124, + "50.0" : 0.0223607604375, + "90.0" : 0.022881822034246574, + "95.0" : 0.022881822034246574, + "99.0" : 0.022881822034246574, + "99.9" : 0.022881822034246574, + "99.99" : 0.022881822034246574, + "99.999" : 0.022881822034246574, + "99.9999" : 0.022881822034246574, + "100.0" : 0.022881822034246574 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022213481620842572, + 0.022176993237250555, + 0.02216260132522124 + ], + [ + 0.022881822034246574, + 0.022866326511415524, + 0.02286390547260274 + ], + [ + 0.02236220743526786, + 0.0223607604375, + 0.022351546029017857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json b/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json new file mode 100644 index 0000000000..3e67765b46 --- /dev/null +++ b/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4086383192028586, + "scoreError" : 0.05662927719471223, + "scoreConfidence" : [ + 3.3520090420081465, + 3.4652675963975708 + ], + "scorePercentiles" : { + "0.0" : 3.3989687508416133, + "50.0" : 3.4089573516309404, + "90.0" : 3.4176698227079405, + "95.0" : 3.4176698227079405, + "99.0" : 3.4176698227079405, + "99.9" : 3.4176698227079405, + "99.99" : 3.4176698227079405, + "99.999" : 3.4176698227079405, + "99.9999" : 3.4176698227079405, + "100.0" : 3.4176698227079405 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3989687508416133, + 3.4037075113574597 + ], + [ + 3.4176698227079405, + 3.414207191904421 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7247042514212518, + "scoreError" : 0.025577661073979848, + "scoreConfidence" : [ + 1.699126590347272, + 1.7502819124952316 + ], + "scorePercentiles" : { + "0.0" : 1.7199822553826223, + "50.0" : 1.7247603094085062, + "90.0" : 1.729314131485372, + "95.0" : 1.729314131485372, + "99.0" : 1.729314131485372, + "99.9" : 1.729314131485372, + "99.99" : 1.729314131485372, + "99.999" : 1.729314131485372, + "99.9999" : 1.729314131485372, + "100.0" : 1.729314131485372 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7199822553826223, + 1.7234475192789092 + ], + [ + 1.7260730995381033, + 1.729314131485372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866926795435834, + "scoreError" : 0.0024224565675789894, + "scoreConfidence" : [ + 0.864504338868255, + 0.869349252003413 + ], + "scorePercentiles" : { + "0.0" : 0.86643401727251, + "50.0" : 0.8670019062531722, + "90.0" : 0.8672693519644817, + "95.0" : 0.8672693519644817, + "99.0" : 0.8672693519644817, + "99.9" : 0.8672693519644817, + "99.99" : 0.8672693519644817, + "99.999" : 0.8672693519644817, + "99.9999" : 0.8672693519644817, + "100.0" : 0.8672693519644817 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8671602438844096, + 0.8672693519644817 + ], + [ + 0.86643401727251, + 0.8668435686219347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.19235624466463, + "scoreError" : 0.8357968532166162, + "scoreConfidence" : [ + 42.356559391448016, + 44.028153097881244 + ], + "scorePercentiles" : { + "0.0" : 42.558882497479054, + "50.0" : 43.37071116457182, + "90.0" : 43.74757796416252, + "95.0" : 43.74757796416252, + "99.0" : 43.74757796416252, + "99.9" : 43.74757796416252, + "99.99" : 43.74757796416252, + "99.999" : 43.74757796416252, + "99.9999" : 43.74757796416252, + "100.0" : 43.74757796416252 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.74757796416252, + 43.62853498940572, + 43.704103996118626 + ], + [ + 43.1493793660059, + 43.40285809714331, + 43.37071116457182 + ], + [ + 42.60127105164282, + 42.567887075451914, + 42.558882497479054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02386800728298746, + "scoreError" : 0.0012277527492095812, + "scoreConfidence" : [ + 0.022640254533777878, + 0.025095760032197042 + ], + "scorePercentiles" : { + "0.0" : 0.023171930243055555, + "50.0" : 0.023588256443396228, + "90.0" : 0.024856540679900743, + "95.0" : 0.024856540679900743, + "99.0" : 0.024856540679900743, + "99.9" : 0.024856540679900743, + "99.99" : 0.024856540679900743, + "99.999" : 0.024856540679900743, + "99.9999" : 0.024856540679900743, + "100.0" : 0.024856540679900743 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02369723180851064, + 0.023588256443396228, + 0.023394148107476635 + ], + [ + 0.024750938538271604, + 0.024856540679900743, + 0.024840508146401985 + ], + [ + 0.023294356925581395, + 0.023171930243055555, + 0.023218154654292344 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json b/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json new file mode 100644 index 0000000000..d5e2c28bc1 --- /dev/null +++ b/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3976951594270473, + "scoreError" : 0.021181351836786013, + "scoreConfidence" : [ + 3.3765138075902614, + 3.418876511263833 + ], + "scorePercentiles" : { + "0.0" : 3.394397211357331, + "50.0" : 3.3970764950011465, + "90.0" : 3.4022304363485647, + "95.0" : 3.4022304363485647, + "99.0" : 3.4022304363485647, + "99.9" : 3.4022304363485647, + "99.99" : 3.4022304363485647, + "99.999" : 3.4022304363485647, + "99.9999" : 3.4022304363485647, + "100.0" : 3.4022304363485647 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.396971687382568, + 3.4022304363485647 + ], + [ + 3.394397211357331, + 3.397181302619725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7206873716995075, + "scoreError" : 0.012165584639558507, + "scoreConfidence" : [ + 1.708521787059949, + 1.732852956339066 + ], + "scorePercentiles" : { + "0.0" : 1.7186421998985886, + "50.0" : 1.7205165660847093, + "90.0" : 1.723074154730023, + "95.0" : 1.723074154730023, + "99.0" : 1.723074154730023, + "99.9" : 1.723074154730023, + "99.99" : 1.723074154730023, + "99.999" : 1.723074154730023, + "99.9999" : 1.723074154730023, + "100.0" : 1.723074154730023 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7186421998985886, + 1.723074154730023 + ], + [ + 1.7199270052468307, + 1.7211061269225876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8652782291117496, + "scoreError" : 0.005814391511710975, + "scoreConfidence" : [ + 0.8594638376000386, + 0.8710926206234605 + ], + "scorePercentiles" : { + "0.0" : 0.8644150098784186, + "50.0" : 0.86521255834284, + "90.0" : 0.8662727898828995, + "95.0" : 0.8662727898828995, + "99.0" : 0.8662727898828995, + "99.9" : 0.8662727898828995, + "99.99" : 0.8662727898828995, + "99.999" : 0.8662727898828995, + "99.9999" : 0.8662727898828995, + "100.0" : 0.8662727898828995 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8644150098784186, + 0.8657981807853821 + ], + [ + 0.8646269359002979, + 0.8662727898828995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.61285782239622, + "scoreError" : 0.6777927611228544, + "scoreConfidence" : [ + 39.93506506127337, + 41.290650583519074 + ], + "scorePercentiles" : { + "0.0" : 40.135983126980456, + "50.0" : 40.446192613931636, + "90.0" : 41.26053647129548, + "95.0" : 41.26053647129548, + "99.0" : 41.26053647129548, + "99.9" : 41.26053647129548, + "99.99" : 41.26053647129548, + "99.999" : 41.26053647129548, + "99.9999" : 41.26053647129548, + "100.0" : 41.26053647129548 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.42388748729046, + 40.135983126980456, + 40.446192613931636 + ], + [ + 41.26053647129548, + 40.93219516379605, + 41.0876293447744 + ], + [ + 40.692707622637776, + 40.36803370459829, + 40.168554866261466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024507084673500084, + "scoreError" : 7.918917887814012E-4, + "scoreConfidence" : [ + 0.023715192884718683, + 0.025298976462281485 + ], + "scorePercentiles" : { + "0.0" : 0.023988348623501198, + "50.0" : 0.02444568706097561, + "90.0" : 0.025114872824561405, + "95.0" : 0.025114872824561405, + "99.0" : 0.025114872824561405, + "99.9" : 0.025114872824561405, + "99.99" : 0.025114872824561405, + "99.999" : 0.025114872824561405, + "99.9999" : 0.025114872824561405, + "100.0" : 0.025114872824561405 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025114872824561405, + 0.024194508417874395, + 0.02402947871942446 + ], + [ + 0.024717387565432097, + 0.02510975446115288, + 0.024928946002487563 + ], + [ + 0.024034778386091128, + 0.023988348623501198, + 0.02444568706097561 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json b/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json new file mode 100644 index 0000000000..13895b223c --- /dev/null +++ b/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4245773136105413, + "scoreError" : 0.01868185502277945, + "scoreConfidence" : [ + 3.4058954585877617, + 3.443259168633321 + ], + "scorePercentiles" : { + "0.0" : 3.4210483921283243, + "50.0" : 3.4245663949120306, + "90.0" : 3.428128072489781, + "95.0" : 3.428128072489781, + "99.0" : 3.428128072489781, + "99.9" : 3.428128072489781, + "99.99" : 3.428128072489781, + "99.999" : 3.428128072489781, + "99.9999" : 3.428128072489781, + "100.0" : 3.428128072489781 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4210483921283243, + 3.42448613335437 + ], + [ + 3.4246466564696907, + 3.428128072489781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7286707595661703, + "scoreError" : 0.014432774965261578, + "scoreConfidence" : [ + 1.7142379846009088, + 1.7431035345314319 + ], + "scorePercentiles" : { + "0.0" : 1.726194463728229, + "50.0" : 1.7285915896476376, + "90.0" : 1.7313053952411779, + "95.0" : 1.7313053952411779, + "99.0" : 1.7313053952411779, + "99.9" : 1.7313053952411779, + "99.99" : 1.7313053952411779, + "99.999" : 1.7313053952411779, + "99.9999" : 1.7313053952411779, + "100.0" : 1.7313053952411779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7276221767696878, + 1.7313053952411779 + ], + [ + 1.726194463728229, + 1.7295610025255874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700555481313456, + "scoreError" : 0.005840168981869053, + "scoreConfidence" : [ + 0.8642153791494765, + 0.8758957171132146 + ], + "scorePercentiles" : { + "0.0" : 0.8693974925550426, + "50.0" : 0.869748144757817, + "90.0" : 0.8713284104547055, + "95.0" : 0.8713284104547055, + "99.0" : 0.8713284104547055, + "99.9" : 0.8713284104547055, + "99.99" : 0.8713284104547055, + "99.999" : 0.8713284104547055, + "99.9999" : 0.8713284104547055, + "100.0" : 0.8713284104547055 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.869425495170068, + 0.8700707943455662 + ], + [ + 0.8693974925550426, + 0.8713284104547055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.80751344197212, + "scoreError" : 2.3026391744093355, + "scoreConfidence" : [ + 42.50487426756278, + 47.110152616381455 + ], + "scorePercentiles" : { + "0.0" : 43.41381117714613, + "50.0" : 44.272183388727214, + "90.0" : 46.594979535399496, + "95.0" : 46.594979535399496, + "99.0" : 46.594979535399496, + "99.9" : 46.594979535399496, + "99.99" : 46.594979535399496, + "99.999" : 46.594979535399496, + "99.9999" : 46.594979535399496, + "100.0" : 46.594979535399496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.56945500132572, + 46.59220457904513, + 46.594979535399496 + ], + [ + 44.28270501315412, + 44.269073877323024, + 44.272183388727214 + ], + [ + 43.41381117714613, + 43.63753652329247, + 43.63567188233574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022354977816848462, + "scoreError" : 0.0014391345634307308, + "scoreConfidence" : [ + 0.02091584325341773, + 0.023794112380279193 + ], + "scorePercentiles" : { + "0.0" : 0.02147898639699571, + "50.0" : 0.02210505130905077, + "90.0" : 0.023454101953161593, + "95.0" : 0.023454101953161593, + "99.0" : 0.023454101953161593, + "99.9" : 0.023454101953161593, + "99.99" : 0.023454101953161593, + "99.999" : 0.023454101953161593, + "99.9999" : 0.023454101953161593, + "100.0" : 0.023454101953161593 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210505130905077, + 0.022098411260485652, + 0.02210520964679912 + ], + [ + 0.023454101953161593, + 0.023442564526932084, + 0.023437853107728338 + ], + [ + 0.0215884915625, + 0.021484130587982833, + 0.02147898639699571 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json b/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json new file mode 100644 index 0000000000..2eb0a8679e --- /dev/null +++ b/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424149683933229, + "scoreError" : 0.006012078052582705, + "scoreConfidence" : [ + 3.4181376058806463, + 3.430161761985812 + ], + "scorePercentiles" : { + "0.0" : 3.422989050483065, + "50.0" : 3.4242682261724955, + "90.0" : 3.4250732329048588, + "95.0" : 3.4250732329048588, + "99.0" : 3.4250732329048588, + "99.9" : 3.4250732329048588, + "99.99" : 3.4250732329048588, + "99.999" : 3.4250732329048588, + "99.9999" : 3.4250732329048588, + "100.0" : 3.4250732329048588 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4238388779551903, + 3.4250732329048588 + ], + [ + 3.424697574389801, + 3.422989050483065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72855038217974, + "scoreError" : 0.01730574953804975, + "scoreConfidence" : [ + 1.7112446326416904, + 1.7458561317177899 + ], + "scorePercentiles" : { + "0.0" : 1.7255286788866957, + "50.0" : 1.7285983884604545, + "90.0" : 1.7314760729113563, + "95.0" : 1.7314760729113563, + "99.0" : 1.7314760729113563, + "99.9" : 1.7314760729113563, + "99.99" : 1.7314760729113563, + "99.999" : 1.7314760729113563, + "99.9999" : 1.7314760729113563, + "100.0" : 1.7314760729113563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7255286788866957, + 1.729980675302766 + ], + [ + 1.727216101618143, + 1.7314760729113563 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8693640578908688, + "scoreError" : 0.0038641087706285395, + "scoreConfidence" : [ + 0.8654999491202402, + 0.8732281666614974 + ], + "scorePercentiles" : { + "0.0" : 0.868835145795416, + "50.0" : 0.8692360046799832, + "90.0" : 0.8701490764080931, + "95.0" : 0.8701490764080931, + "99.0" : 0.8701490764080931, + "99.9" : 0.8701490764080931, + "99.99" : 0.8701490764080931, + "99.999" : 0.8701490764080931, + "99.9999" : 0.8701490764080931, + "100.0" : 0.8701490764080931 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.868835145795416, + 0.8701490764080931 + ], + [ + 0.8695042632942258, + 0.8689677460657406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.223752010392595, + "scoreError" : 3.8144464636708864, + "scoreConfidence" : [ + 37.40930554672171, + 45.03819847406348 + ], + "scorePercentiles" : { + "0.0" : 38.2336896832272, + "50.0" : 40.18837813592528, + "90.0" : 44.30468594681641, + "95.0" : 44.30468594681641, + "99.0" : 44.30468594681641, + "99.9" : 44.30468594681641, + "99.99" : 44.30468594681641, + "99.999" : 44.30468594681641, + "99.9999" : 44.30468594681641, + "100.0" : 44.30468594681641 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 38.2336896832272, + 39.53191823714816, + 40.70619870358236 + ], + [ + 44.30468594681641, + 44.16707605948855, + 43.861664961843516 + ], + [ + 39.91624959318406, + 40.18837813592528, + 40.10390677231785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023235785904743733, + "scoreError" : 7.768693990131797E-4, + "scoreConfidence" : [ + 0.022458916505730554, + 0.024012655303756913 + ], + "scorePercentiles" : { + "0.0" : 0.022705058088435374, + "50.0" : 0.023171598224537036, + "90.0" : 0.024077781197115386, + "95.0" : 0.024077781197115386, + "99.0" : 0.024077781197115386, + "99.9" : 0.024077781197115386, + "99.99" : 0.024077781197115386, + "99.999" : 0.024077781197115386, + "99.9999" : 0.024077781197115386, + "100.0" : 0.024077781197115386 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024077781197115386, + 0.023737192085308056, + 0.023171598224537036 + ], + [ + 0.02332228789044289, + 0.023445212770491802, + 0.02302199960229885 + ], + [ + 0.022924428318077804, + 0.022705058088435374, + 0.022716514965986395 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json b/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json new file mode 100644 index 0000000000..926032db22 --- /dev/null +++ b/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4237503712681403, + "scoreError" : 0.029687066333119228, + "scoreConfidence" : [ + 3.3940633049350213, + 3.4534374376012593 + ], + "scorePercentiles" : { + "0.0" : 3.419633132532349, + "50.0" : 3.4229857951413147, + "90.0" : 3.4293967622575843, + "95.0" : 3.4293967622575843, + "99.0" : 3.4293967622575843, + "99.9" : 3.4293967622575843, + "99.99" : 3.4293967622575843, + "99.999" : 3.4293967622575843, + "99.9999" : 3.4293967622575843, + "100.0" : 3.4293967622575843 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.419633132532349, + 3.425565998706806 + ], + [ + 3.4204055915758236, + 3.4293967622575843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7296696232543467, + "scoreError" : 0.01459335969739169, + "scoreConfidence" : [ + 1.715076263556955, + 1.7442629829517384 + ], + "scorePercentiles" : { + "0.0" : 1.7270073570666922, + "50.0" : 1.729745390562144, + "90.0" : 1.732180354826406, + "95.0" : 1.732180354826406, + "99.0" : 1.732180354826406, + "99.9" : 1.732180354826406, + "99.99" : 1.732180354826406, + "99.999" : 1.732180354826406, + "99.9999" : 1.732180354826406, + "100.0" : 1.732180354826406 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7287713875849016, + 1.732180354826406 + ], + [ + 1.7270073570666922, + 1.7307193935393865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696333686305204, + "scoreError" : 0.005541304741506886, + "scoreConfidence" : [ + 0.8640920638890135, + 0.8751746733720274 + ], + "scorePercentiles" : { + "0.0" : 0.8688071395118665, + "50.0" : 0.8696504293139969, + "90.0" : 0.8704254763822215, + "95.0" : 0.8704254763822215, + "99.0" : 0.8704254763822215, + "99.9" : 0.8704254763822215, + "99.99" : 0.8704254763822215, + "99.999" : 0.8704254763822215, + "99.9999" : 0.8704254763822215, + "100.0" : 0.8704254763822215 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8704254763822215, + 0.870319520460667 + ], + [ + 0.8688071395118665, + 0.8689813381673269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.36501878810898, + "scoreError" : 1.0694255389554572, + "scoreConfidence" : [ + 43.29559324915353, + 45.43444432706444 + ], + "scorePercentiles" : { + "0.0" : 43.87862862432957, + "50.0" : 43.94274487526744, + "90.0" : 45.26941974191114, + "95.0" : 45.26941974191114, + "99.0" : 45.26941974191114, + "99.9" : 45.26941974191114, + "99.99" : 45.26941974191114, + "99.999" : 45.26941974191114, + "99.9999" : 45.26941974191114, + "100.0" : 45.26941974191114 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.89429547541287, + 43.94274487526744, + 43.92535377650392 + ], + [ + 45.175535730731454, + 45.175776703355886, + 45.26941974191114 + ], + [ + 44.1308230548884, + 43.87862862432957, + 43.892591110580156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022229747564292305, + "scoreError" : 8.487147291876869E-4, + "scoreConfidence" : [ + 0.02138103283510462, + 0.02307846229347999 + ], + "scorePercentiles" : { + "0.0" : 0.021779635182608694, + "50.0" : 0.02198335262857143, + "90.0" : 0.022899222466819222, + "95.0" : 0.022899222466819222, + "99.0" : 0.022899222466819222, + "99.9" : 0.022899222466819222, + "99.99" : 0.022899222466819222, + "99.999" : 0.022899222466819222, + "99.9999" : 0.022899222466819222, + "100.0" : 0.022899222466819222 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022899222466819222, + 0.022884819782608697, + 0.022899069610983983 + ], + [ + 0.021779635182608694, + 0.02181247005882353, + 0.021822282640522876 + ], + [ + 0.022003539923076923, + 0.021983335784615386, + 0.02198335262857143 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json b/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json new file mode 100644 index 0000000000..757c5e3692 --- /dev/null +++ b/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4105040447860073, + "scoreError" : 0.015189749299248573, + "scoreConfidence" : [ + 3.3953142954867586, + 3.425693794085256 + ], + "scorePercentiles" : { + "0.0" : 3.4073899492105153, + "50.0" : 3.4107651539923443, + "90.0" : 3.4130959219488255, + "95.0" : 3.4130959219488255, + "99.0" : 3.4130959219488255, + "99.9" : 3.4130959219488255, + "99.99" : 3.4130959219488255, + "99.999" : 3.4130959219488255, + "99.9999" : 3.4130959219488255, + "100.0" : 3.4130959219488255 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.410876097631111, + 3.4106542103535773 + ], + [ + 3.4073899492105153, + 3.4130959219488255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.721583114673582, + "scoreError" : 0.006425157612156726, + "scoreConfidence" : [ + 1.7151579570614253, + 1.7280082722857388 + ], + "scorePercentiles" : { + "0.0" : 1.7207681098037457, + "50.0" : 1.7212982503350518, + "90.0" : 1.7229678482204793, + "95.0" : 1.7229678482204793, + "99.0" : 1.7229678482204793, + "99.9" : 1.7229678482204793, + "99.99" : 1.7229678482204793, + "99.999" : 1.7229678482204793, + "99.9999" : 1.7229678482204793, + "100.0" : 1.7229678482204793 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7216313296507169, + 1.7229678482204793 + ], + [ + 1.7207681098037457, + 1.7209651710193865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8657441060642906, + "scoreError" : 0.002785758573795765, + "scoreConfidence" : [ + 0.8629583474904948, + 0.8685298646380865 + ], + "scorePercentiles" : { + "0.0" : 0.8653771382765126, + "50.0" : 0.8656275904190045, + "90.0" : 0.8663441051426409, + "95.0" : 0.8663441051426409, + "99.0" : 0.8663441051426409, + "99.9" : 0.8663441051426409, + "99.99" : 0.8663441051426409, + "99.999" : 0.8663441051426409, + "99.9999" : 0.8663441051426409, + "100.0" : 0.8663441051426409 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653771382765126, + 0.8654939424156864 + ], + [ + 0.8663441051426409, + 0.8657612384223224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.17225098673794, + "scoreError" : 3.22722044059398, + "scoreConfidence" : [ + 37.94503054614396, + 44.399471427331925 + ], + "scorePercentiles" : { + "0.0" : 39.366693887369976, + "50.0" : 40.2648390876238, + "90.0" : 43.70997475241803, + "95.0" : 43.70997475241803, + "99.0" : 43.70997475241803, + "99.9" : 43.70997475241803, + "99.99" : 43.70997475241803, + "99.999" : 43.70997475241803, + "99.9999" : 43.70997475241803, + "100.0" : 43.70997475241803 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.69435426122478, + 43.70997475241803, + 43.68716268451894 + ], + [ + 40.14696818355368, + 40.364255215826645, + 40.2648390876238 + ], + [ + 39.366693887369976, + 39.60165914823881, + 39.714351659866864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02469539257718066, + "scoreError" : 8.108306476004372E-4, + "scoreConfidence" : [ + 0.023884561929580224, + 0.025506223224781098 + ], + "scorePercentiles" : { + "0.0" : 0.023942090337320573, + "50.0" : 0.024977390805486284, + "90.0" : 0.02509696658897243, + "95.0" : 0.02509696658897243, + "99.0" : 0.02509696658897243, + "99.9" : 0.02509696658897243, + "99.99" : 0.02509696658897243, + "99.999" : 0.02509696658897243, + "99.9999" : 0.02509696658897243, + "100.0" : 0.02509696658897243 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023942090337320573, + 0.024220828239709443, + 0.024023169163069544 + ], + [ + 0.024977390805486284, + 0.024933186425373136, + 0.02502382824 + ], + [ + 0.024994583122194512, + 0.0250464902725, + 0.02509696658897243 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json b/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json new file mode 100644 index 0000000000..0bda0220f3 --- /dev/null +++ b/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4099306926639925, + "scoreError" : 0.02395335305028509, + "scoreConfidence" : [ + 3.3859773396137074, + 3.4338840457142776 + ], + "scorePercentiles" : { + "0.0" : 3.40582898025533, + "50.0" : 3.4096702375154466, + "90.0" : 3.414553315369746, + "95.0" : 3.414553315369746, + "99.0" : 3.414553315369746, + "99.9" : 3.414553315369746, + "99.99" : 3.414553315369746, + "99.999" : 3.414553315369746, + "99.9999" : 3.414553315369746, + "100.0" : 3.414553315369746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408467549843088, + 3.414553315369746 + ], + [ + 3.40582898025533, + 3.410872925187805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7232751528014894, + "scoreError" : 0.009671040518753964, + "scoreConfidence" : [ + 1.7136041122827355, + 1.7329461933202432 + ], + "scorePercentiles" : { + "0.0" : 1.7211199198884921, + "50.0" : 1.723842197697369, + "90.0" : 1.724296295922727, + "95.0" : 1.724296295922727, + "99.0" : 1.724296295922727, + "99.9" : 1.724296295922727, + "99.99" : 1.724296295922727, + "99.999" : 1.724296295922727, + "99.9999" : 1.724296295922727, + "100.0" : 1.724296295922727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211199198884921, + 1.723401385599165 + ], + [ + 1.7242830097955733, + 1.724296295922727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670588236163693, + "scoreError" : 0.005759442186378244, + "scoreConfidence" : [ + 0.8612993814299911, + 0.8728182658027476 + ], + "scorePercentiles" : { + "0.0" : 0.8661195610548678, + "50.0" : 0.8670034186931103, + "90.0" : 0.868108896024389, + "95.0" : 0.868108896024389, + "99.0" : 0.868108896024389, + "99.9" : 0.868108896024389, + "99.99" : 0.868108896024389, + "99.999" : 0.868108896024389, + "99.9999" : 0.868108896024389, + "100.0" : 0.868108896024389 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8674462136623503, + 0.868108896024389 + ], + [ + 0.8661195610548678, + 0.8665606237238702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.83462677585385, + "scoreError" : 1.920978041265327, + "scoreConfidence" : [ + 39.91364873458852, + 43.75560481711918 + ], + "scorePercentiles" : { + "0.0" : 40.19477434571843, + "50.0" : 42.437967904570684, + "90.0" : 42.93846254059917, + "95.0" : 42.93846254059917, + "99.0" : 42.93846254059917, + "99.9" : 42.93846254059917, + "99.99" : 42.93846254059917, + "99.999" : 42.93846254059917, + "99.9999" : 42.93846254059917, + "100.0" : 42.93846254059917 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.241582636916014, + 42.45421817350641, + 42.437967904570684 + ], + [ + 42.712603840570935, + 42.70835342137284, + 42.93846254059917 + ], + [ + 40.19477434571843, + 40.25337275926056, + 40.570305360169606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024205050051165463, + "scoreError" : 0.0013802366621486247, + "scoreConfidence" : [ + 0.02282481338901684, + 0.025585286713314087 + ], + "scorePercentiles" : { + "0.0" : 0.02336303003962704, + "50.0" : 0.023876212723150356, + "90.0" : 0.02530103744191919, + "95.0" : 0.02530103744191919, + "99.0" : 0.02530103744191919, + "99.9" : 0.02530103744191919, + "99.99" : 0.02530103744191919, + "99.999" : 0.02530103744191919, + "99.9999" : 0.02530103744191919, + "100.0" : 0.02530103744191919 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024042493644230768, + 0.02386281233095238, + 0.023876212723150356 + ], + [ + 0.02336303003962704, + 0.02347626125117371, + 0.023449581548009368 + ], + [ + 0.02530103744191919, + 0.025278192126262627, + 0.025195829355163728 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json b/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json new file mode 100644 index 0000000000..4a8eef6b68 --- /dev/null +++ b/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4060502209625665, + "scoreError" : 0.021580257949835764, + "scoreConfidence" : [ + 3.3844699630127306, + 3.4276304789124024 + ], + "scorePercentiles" : { + "0.0" : 3.401427352349789, + "50.0" : 3.4070054913200853, + "90.0" : 3.408762548860305, + "95.0" : 3.408762548860305, + "99.0" : 3.408762548860305, + "99.9" : 3.408762548860305, + "99.99" : 3.408762548860305, + "99.999" : 3.408762548860305, + "99.9999" : 3.408762548860305, + "100.0" : 3.408762548860305 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.401427352349789, + 3.408762548860305 + ], + [ + 3.4058002030403016, + 3.408210779599869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7215522864016763, + "scoreError" : 0.005696764733470336, + "scoreConfidence" : [ + 1.715855521668206, + 1.7272490511351466 + ], + "scorePercentiles" : { + "0.0" : 1.7203910519779488, + "50.0" : 1.7217467656558114, + "90.0" : 1.722324562317134, + "95.0" : 1.722324562317134, + "99.0" : 1.722324562317134, + "99.9" : 1.722324562317134, + "99.99" : 1.722324562317134, + "99.999" : 1.722324562317134, + "99.9999" : 1.722324562317134, + "100.0" : 1.722324562317134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7203910519779488, + 1.7221411217652358 + ], + [ + 1.721352409546387, + 1.722324562317134 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8646527287713972, + "scoreError" : 0.00856950365882502, + "scoreConfidence" : [ + 0.8560832251125722, + 0.8732222324302222 + ], + "scorePercentiles" : { + "0.0" : 0.8630999525475413, + "50.0" : 0.8646080545802135, + "90.0" : 0.8662948533776209, + "95.0" : 0.8662948533776209, + "99.0" : 0.8662948533776209, + "99.9" : 0.8662948533776209, + "99.99" : 0.8662948533776209, + "99.999" : 0.8662948533776209, + "99.9999" : 0.8662948533776209, + "100.0" : 0.8662948533776209 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8662948533776209, + 0.8648946418419918 + ], + [ + 0.8630999525475413, + 0.8643214673184352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.571094678999174, + "scoreError" : 0.9886983334392854, + "scoreConfidence" : [ + 40.582396345559886, + 42.55979301243846 + ], + "scorePercentiles" : { + "0.0" : 40.64766694582536, + "50.0" : 41.79030375939435, + "90.0" : 42.290871079881434, + "95.0" : 42.290871079881434, + "99.0" : 42.290871079881434, + "99.9" : 42.290871079881434, + "99.99" : 42.290871079881434, + "99.999" : 42.290871079881434, + "99.9999" : 42.290871079881434, + "100.0" : 42.290871079881434 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.290871079881434, + 42.118215951762124, + 42.099304911006406 + ], + [ + 41.79030375939435, + 41.81089696054987, + 40.87654670117831 + ], + [ + 40.64766694582536, + 41.13077840122415, + 41.3752674001706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024796778092981732, + "scoreError" : 0.0013904138007945043, + "scoreConfidence" : [ + 0.023406364292187228, + 0.026187191893776236 + ], + "scorePercentiles" : { + "0.0" : 0.023756459386255924, + "50.0" : 0.024653574322660098, + "90.0" : 0.02602229912987013, + "95.0" : 0.02602229912987013, + "99.0" : 0.02602229912987013, + "99.9" : 0.02602229912987013, + "99.99" : 0.02602229912987013, + "99.999" : 0.02602229912987013, + "99.9999" : 0.02602229912987013, + "100.0" : 0.02602229912987013 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025637418092071613, + 0.02602229912987013, + 0.025694226674358975 + ], + [ + 0.02384663041190476, + 0.023756459386255924, + 0.02430528267961165 + ], + [ + 0.02434602874209246, + 0.024653574322660098, + 0.02490908339800995 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json b/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json new file mode 100644 index 0000000000..a3742d4745 --- /dev/null +++ b/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.408427127074759, + "scoreError" : 0.01925153848185639, + "scoreConfidence" : [ + 3.3891755885929022, + 3.4276786655566154 + ], + "scorePercentiles" : { + "0.0" : 3.4053449162452507, + "50.0" : 3.408406543484691, + "90.0" : 3.4115505050844046, + "95.0" : 3.4115505050844046, + "99.0" : 3.4115505050844046, + "99.9" : 3.4115505050844046, + "99.99" : 3.4115505050844046, + "99.999" : 3.4115505050844046, + "99.9999" : 3.4115505050844046, + "100.0" : 3.4115505050844046 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406486845438764, + 3.4115505050844046 + ], + [ + 3.4053449162452507, + 3.4103262415306177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7257387687026013, + "scoreError" : 0.008473331075327967, + "scoreConfidence" : [ + 1.7172654376272734, + 1.7342120997779293 + ], + "scorePercentiles" : { + "0.0" : 1.72423397317898, + "50.0" : 1.7256529242770822, + "90.0" : 1.7274152530772604, + "95.0" : 1.7274152530772604, + "99.0" : 1.7274152530772604, + "99.9" : 1.7274152530772604, + "99.99" : 1.7274152530772604, + "99.999" : 1.7274152530772604, + "99.9999" : 1.7274152530772604, + "100.0" : 1.7274152530772604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72423397317898, + 1.7254679382487557 + ], + [ + 1.7274152530772604, + 1.725837910305409 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8665575040773247, + "scoreError" : 0.0029564407943501268, + "scoreConfidence" : [ + 0.8636010632829746, + 0.8695139448716748 + ], + "scorePercentiles" : { + "0.0" : 0.8661858451203391, + "50.0" : 0.8664480513236263, + "90.0" : 0.8671480685417073, + "95.0" : 0.8671480685417073, + "99.0" : 0.8671480685417073, + "99.9" : 0.8671480685417073, + "99.99" : 0.8671480685417073, + "99.999" : 0.8671480685417073, + "99.9999" : 0.8671480685417073, + "100.0" : 0.8671480685417073 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8666900187240116, + 0.8661858451203391 + ], + [ + 0.866206083923241, + 0.8671480685417073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.677382462593584, + "scoreError" : 1.2020700735328222, + "scoreConfidence" : [ + 41.47531238906076, + 43.87945253612641 + ], + "scorePercentiles" : { + "0.0" : 41.743276822691925, + "50.0" : 42.730073405675626, + "90.0" : 43.7290083381939, + "95.0" : 43.7290083381939, + "99.0" : 43.7290083381939, + "99.9" : 43.7290083381939, + "99.99" : 43.7290083381939, + "99.999" : 43.7290083381939, + "99.9999" : 43.7290083381939, + "100.0" : 43.7290083381939 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.865228348309664, + 43.30915071935464, + 42.23165861844071 + ], + [ + 42.730073405675626, + 43.7290083381939, + 43.44903173965612 + ], + [ + 41.924035090602636, + 42.11497908041706, + 41.743276822691925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023553876284725203, + "scoreError" : 5.593054909302037E-4, + "scoreConfidence" : [ + 0.022994570793795, + 0.024113181775655405 + ], + "scorePercentiles" : { + "0.0" : 0.022851900970319635, + "50.0" : 0.02365095373995272, + "90.0" : 0.02389461776849642, + "95.0" : 0.02389461776849642, + "99.0" : 0.02389461776849642, + "99.9" : 0.02389461776849642, + "99.99" : 0.02389461776849642, + "99.999" : 0.02389461776849642, + "99.9999" : 0.02389461776849642, + "100.0" : 0.02389461776849642 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02344361818032787, + 0.023304230553488372, + 0.022851900970319635 + ], + [ + 0.023773622921615202, + 0.02389461776849642, + 0.02389178353699284 + ], + [ + 0.023707024319905214, + 0.02365095373995272, + 0.02346713457142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json b/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json new file mode 100644 index 0000000000..5ef4290df1 --- /dev/null +++ b/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421774272094884, + "scoreError" : 0.02565110456140225, + "scoreConfidence" : [ + 3.396123167533482, + 3.447425376656286 + ], + "scorePercentiles" : { + "0.0" : 3.417929940473629, + "50.0" : 3.4209231454561904, + "90.0" : 3.427320856993527, + "95.0" : 3.427320856993527, + "99.0" : 3.427320856993527, + "99.9" : 3.427320856993527, + "99.99" : 3.427320856993527, + "99.999" : 3.427320856993527, + "99.9999" : 3.427320856993527, + "100.0" : 3.427320856993527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.417929940473629, + 3.420549417579972 + ], + [ + 3.421296873332408, + 3.427320856993527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72756042853176, + "scoreError" : 0.012153093372248453, + "scoreConfidence" : [ + 1.7154073351595116, + 1.7397135219040085 + ], + "scorePercentiles" : { + "0.0" : 1.7249582673227821, + "50.0" : 1.7279662835519356, + "90.0" : 1.7293508797003863, + "95.0" : 1.7293508797003863, + "99.0" : 1.7293508797003863, + "99.9" : 1.7293508797003863, + "99.99" : 1.7293508797003863, + "99.999" : 1.7293508797003863, + "99.9999" : 1.7293508797003863, + "100.0" : 1.7293508797003863 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7249582673227821, + 1.7283566391748764 + ], + [ + 1.727575927928995, + 1.7293508797003863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700223920340285, + "scoreError" : 0.010218700290680633, + "scoreConfidence" : [ + 0.8598036917433479, + 0.8802410923247092 + ], + "scorePercentiles" : { + "0.0" : 0.8685012135337304, + "50.0" : 0.8698338176924882, + "90.0" : 0.8719207192174072, + "95.0" : 0.8719207192174072, + "99.0" : 0.8719207192174072, + "99.9" : 0.8719207192174072, + "99.99" : 0.8719207192174072, + "99.999" : 0.8719207192174072, + "99.9999" : 0.8719207192174072, + "100.0" : 0.8719207192174072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8707036745599296, + 0.8719207192174072 + ], + [ + 0.8685012135337304, + 0.8689639608250469 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.339925200263075, + "scoreError" : 2.0723545765171996, + "scoreConfidence" : [ + 43.267570623745875, + 47.412279776780274 + ], + "scorePercentiles" : { + "0.0" : 43.81296578444052, + "50.0" : 45.38453023809995, + "90.0" : 46.800269388776904, + "95.0" : 46.800269388776904, + "99.0" : 46.800269388776904, + "99.9" : 46.800269388776904, + "99.99" : 46.800269388776904, + "99.999" : 46.800269388776904, + "99.9999" : 46.800269388776904, + "100.0" : 46.800269388776904 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.800269388776904, + 46.71346073074192, + 46.75431722626851 + ], + [ + 45.38453023809995, + 45.42450404274816, + 45.24527092665326 + ], + [ + 43.81296578444052, + 43.96259264756082, + 43.96141581707756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022398155993954644, + "scoreError" : 6.89912700021175E-4, + "scoreConfidence" : [ + 0.02170824329393347, + 0.023088068693975818 + ], + "scorePercentiles" : { + "0.0" : 0.021928783170678336, + "50.0" : 0.02232751393080357, + "90.0" : 0.022923588995423343, + "95.0" : 0.022923588995423343, + "99.0" : 0.022923588995423343, + "99.9" : 0.022923588995423343, + "99.99" : 0.022923588995423343, + "99.999" : 0.022923588995423343, + "99.9999" : 0.022923588995423343, + "100.0" : 0.022923588995423343 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02240651148769575, + 0.02232751393080357, + 0.022318053033407573 + ], + [ + 0.022923588995423343, + 0.02292196304347826, + 0.022829846011389522 + ], + [ + 0.021928783170678336, + 0.02199617635824176, + 0.021930967914473683 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json b/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json new file mode 100644 index 0000000000..f13fb309be --- /dev/null +++ b/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422004543886982, + "scoreError" : 0.037274354718148585, + "scoreConfidence" : [ + 3.3847301891688333, + 3.4592788986051306 + ], + "scorePercentiles" : { + "0.0" : 3.4150603098850625, + "50.0" : 3.4222557397499918, + "90.0" : 3.428446386162883, + "95.0" : 3.428446386162883, + "99.0" : 3.428446386162883, + "99.9" : 3.428446386162883, + "99.99" : 3.428446386162883, + "99.999" : 3.428446386162883, + "99.9999" : 3.428446386162883, + "100.0" : 3.428446386162883 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.424488689195108, + 3.428446386162883 + ], + [ + 3.4150603098850625, + 3.4200227903048757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7266312356699343, + "scoreError" : 0.01275265278475576, + "scoreConfidence" : [ + 1.7138785828851786, + 1.73938388845469 + ], + "scorePercentiles" : { + "0.0" : 1.7253973345774025, + "50.0" : 1.7257740764391891, + "90.0" : 1.7295794552239565, + "95.0" : 1.7295794552239565, + "99.0" : 1.7295794552239565, + "99.9" : 1.7295794552239565, + "99.99" : 1.7295794552239565, + "99.999" : 1.7295794552239565, + "99.9999" : 1.7295794552239565, + "100.0" : 1.7295794552239565 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725774269697518, + 1.7295794552239565 + ], + [ + 1.7253973345774025, + 1.7257738831808604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685221843173088, + "scoreError" : 0.0028393507308871763, + "scoreConfidence" : [ + 0.8656828335864216, + 0.8713615350481959 + ], + "scorePercentiles" : { + "0.0" : 0.8679815361027219, + "50.0" : 0.8685252892748702, + "90.0" : 0.8690566226167731, + "95.0" : 0.8690566226167731, + "99.0" : 0.8690566226167731, + "99.9" : 0.8690566226167731, + "99.99" : 0.8690566226167731, + "99.999" : 0.8690566226167731, + "99.9999" : 0.8690566226167731, + "100.0" : 0.8690566226167731 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685503260697689, + 0.8690566226167731 + ], + [ + 0.8679815361027219, + 0.8685002524799714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.15939026975822, + "scoreError" : 3.2726275519079855, + "scoreConfidence" : [ + 41.88676271785023, + 48.43201782166621 + ], + "scorePercentiles" : { + "0.0" : 43.32162148701893, + "50.0" : 44.476019988835475, + "90.0" : 47.73912870583933, + "95.0" : 47.73912870583933, + "99.0" : 47.73912870583933, + "99.9" : 47.73912870583933, + "99.99" : 47.73912870583933, + "99.999" : 47.73912870583933, + "99.9999" : 47.73912870583933, + "100.0" : 47.73912870583933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 47.73912870583933, + 47.64792793812885, + 47.641556164042235 + ], + [ + 44.3975721232082, + 44.48295546595411, + 44.476019988835475 + ], + [ + 43.328343957387034, + 43.32162148701893, + 43.39938659740977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02224196911386321, + "scoreError" : 5.718797688838376E-4, + "scoreConfidence" : [ + 0.021670089344979375, + 0.022813848882747047 + ], + "scorePercentiles" : { + "0.0" : 0.022001641415384614, + "50.0" : 0.022020313514285714, + "90.0" : 0.022701417299319727, + "95.0" : 0.022701417299319727, + "99.0" : 0.022701417299319727, + "99.9" : 0.022701417299319727, + "99.99" : 0.022701417299319727, + "99.999" : 0.022701417299319727, + "99.9999" : 0.022701417299319727, + "100.0" : 0.022701417299319727 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022018342547252746, + 0.022017725931868133, + 0.02202387962197802 + ], + [ + 0.022001641415384614, + 0.022008949474725276, + 0.022020313514285714 + ], + [ + 0.022696075142857142, + 0.022689377077097506, + 0.022701417299319727 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json b/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json new file mode 100644 index 0000000000..1d6ace2390 --- /dev/null +++ b/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4002502019051217, + "scoreError" : 0.03940721118245434, + "scoreConfidence" : [ + 3.3608429907226673, + 3.439657413087576 + ], + "scorePercentiles" : { + "0.0" : 3.393090154110096, + "50.0" : 3.4002891548424987, + "90.0" : 3.4073323438253937, + "95.0" : 3.4073323438253937, + "99.0" : 3.4073323438253937, + "99.9" : 3.4073323438253937, + "99.99" : 3.4073323438253937, + "99.999" : 3.4073323438253937, + "99.9999" : 3.4073323438253937, + "100.0" : 3.4073323438253937 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.398037257321173, + 3.4073323438253937 + ], + [ + 3.393090154110096, + 3.402541052363824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210546490132013, + "scoreError" : 0.012387317274444386, + "scoreConfidence" : [ + 1.7086673317387568, + 1.7334419662876457 + ], + "scorePercentiles" : { + "0.0" : 1.718746930977431, + "50.0" : 1.7210793200388954, + "90.0" : 1.7233130249975834, + "95.0" : 1.7233130249975834, + "99.0" : 1.7233130249975834, + "99.9" : 1.7233130249975834, + "99.99" : 1.7233130249975834, + "99.999" : 1.7233130249975834, + "99.9999" : 1.7233130249975834, + "100.0" : 1.7233130249975834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7205329400600824, + 1.7233130249975834 + ], + [ + 1.718746930977431, + 1.7216257000177082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864706321488554, + "scoreError" : 0.0030292477814532876, + "scoreConfidence" : [ + 0.8616770737071007, + 0.8677355692700073 + ], + "scorePercentiles" : { + "0.0" : 0.8640312899876621, + "50.0" : 0.8648396757094557, + "90.0" : 0.865114644547642, + "95.0" : 0.865114644547642, + "99.0" : 0.865114644547642, + "99.9" : 0.865114644547642, + "99.99" : 0.865114644547642, + "99.999" : 0.865114644547642, + "99.9999" : 0.865114644547642, + "100.0" : 0.865114644547642 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8648141750571403, + 0.8648651763617712 + ], + [ + 0.8640312899876621, + 0.865114644547642 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.49237253367603, + "scoreError" : 1.4784498919336293, + "scoreConfidence" : [ + 39.013922641742404, + 41.97082242560966 + ], + "scorePercentiles" : { + "0.0" : 39.21798489494184, + "50.0" : 40.632274190391094, + "90.0" : 41.860872454143184, + "95.0" : 41.860872454143184, + "99.0" : 41.860872454143184, + "99.9" : 41.860872454143184, + "99.99" : 41.860872454143184, + "99.999" : 41.860872454143184, + "99.9999" : 41.860872454143184, + "100.0" : 41.860872454143184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.632274190391094, + 39.21798489494184, + 40.52013138493316 + ], + [ + 41.860872454143184, + 41.10434763868566, + 41.21868290029448 + ], + [ + 40.698457638341345, + 39.81248540885506, + 39.36611629249843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02505365998153623, + "scoreError" : 7.321224107054102E-4, + "scoreConfidence" : [ + 0.02432153757083082, + 0.02578578239224164 + ], + "scorePercentiles" : { + "0.0" : 0.024503543127139364, + "50.0" : 0.025069455263157896, + "90.0" : 0.025665329338461537, + "95.0" : 0.025665329338461537, + "99.0" : 0.025665329338461537, + "99.9" : 0.025665329338461537, + "99.99" : 0.025665329338461537, + "99.999" : 0.025665329338461537, + "99.9999" : 0.025665329338461537, + "100.0" : 0.025665329338461537 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025069455263157896, + 0.02473229191111111, + 0.02461288542997543 + ], + [ + 0.025665329338461537, + 0.025577278539641944, + 0.025356023572151897 + ], + [ + 0.024503543127139364, + 0.024692934773399015, + 0.02527319787878788 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json b/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json new file mode 100644 index 0000000000..7a1d3a9afe --- /dev/null +++ b/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.427046433766062, + "scoreError" : 0.04365548760091392, + "scoreConfidence" : [ + 3.383390946165148, + 3.470701921366976 + ], + "scorePercentiles" : { + "0.0" : 3.4187459374535316, + "50.0" : 3.4274414136872613, + "90.0" : 3.4345569702361933, + "95.0" : 3.4345569702361933, + "99.0" : 3.4345569702361933, + "99.9" : 3.4345569702361933, + "99.99" : 3.4345569702361933, + "99.999" : 3.4345569702361933, + "99.9999" : 3.4345569702361933, + "100.0" : 3.4345569702361933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4187459374535316, + 3.425064288111735 + ], + [ + 3.429818539262788, + 3.4345569702361933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7279093977892266, + "scoreError" : 0.01145621864072765, + "scoreConfidence" : [ + 1.716453179148499, + 1.7393656164299542 + ], + "scorePercentiles" : { + "0.0" : 1.7260944011710606, + "50.0" : 1.7276465395017473, + "90.0" : 1.7302501109823514, + "95.0" : 1.7302501109823514, + "99.0" : 1.7302501109823514, + "99.9" : 1.7302501109823514, + "99.99" : 1.7302501109823514, + "99.999" : 1.7302501109823514, + "99.9999" : 1.7302501109823514, + "100.0" : 1.7302501109823514 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271377249156863, + 1.7302501109823514 + ], + [ + 1.7260944011710606, + 1.728155354087808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8699132212785552, + "scoreError" : 0.003846909616339744, + "scoreConfidence" : [ + 0.8660663116622155, + 0.8737601308948949 + ], + "scorePercentiles" : { + "0.0" : 0.8695145403196621, + "50.0" : 0.8696695386461242, + "90.0" : 0.8707992675023106, + "95.0" : 0.8707992675023106, + "99.0" : 0.8707992675023106, + "99.9" : 0.8707992675023106, + "99.99" : 0.8707992675023106, + "99.999" : 0.8707992675023106, + "99.9999" : 0.8707992675023106, + "100.0" : 0.8707992675023106 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8696838162153353, + 0.8707992675023106 + ], + [ + 0.8696552610769129, + 0.8695145403196621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.49448131762865, + "scoreError" : 1.1498204083528643, + "scoreConfidence" : [ + 43.34466090927578, + 45.644301725981514 + ], + "scorePercentiles" : { + "0.0" : 43.9067707953283, + "50.0" : 44.18457675048271, + "90.0" : 45.430707798776275, + "95.0" : 45.430707798776275, + "99.0" : 45.430707798776275, + "99.9" : 45.430707798776275, + "99.99" : 45.430707798776275, + "99.999" : 45.430707798776275, + "99.9999" : 45.430707798776275, + "100.0" : 45.430707798776275 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.054179446201815, + 44.19728125286074, + 44.18457675048271 + ], + [ + 43.9067707953283, + 43.946569962393944, + 43.96958858794671 + ], + [ + 45.37186589053077, + 45.38879137413653, + 45.430707798776275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0223351247933896, + "scoreError" : 7.66788561808646E-4, + "scoreConfidence" : [ + 0.021568336231580953, + 0.023101913355198244 + ], + "scorePercentiles" : { + "0.0" : 0.021752088417391305, + "50.0" : 0.02243793969955157, + "90.0" : 0.022811016271070614, + "95.0" : 0.022811016271070614, + "99.0" : 0.022811016271070614, + "99.9" : 0.022811016271070614, + "99.99" : 0.022811016271070614, + "99.999" : 0.022811016271070614, + "99.9999" : 0.022811016271070614, + "100.0" : 0.022811016271070614 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.021754917986956522, + 0.021752088417391305, + 0.02177836983478261 + ], + [ + 0.02246497825560538, + 0.02243793969955157, + 0.02243549151569507 + ], + [ + 0.02279936298861048, + 0.022811016271070614, + 0.022781958170842824 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json b/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json new file mode 100644 index 0000000000..2a129ecd0c --- /dev/null +++ b/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422693724848574, + "scoreError" : 0.034923902189520864, + "scoreConfidence" : [ + 3.387769822659053, + 3.4576176270380947 + ], + "scorePercentiles" : { + "0.0" : 3.4170249463534113, + "50.0" : 3.4220117595222, + "90.0" : 3.4297264339964837, + "95.0" : 3.4297264339964837, + "99.0" : 3.4297264339964837, + "99.9" : 3.4297264339964837, + "99.99" : 3.4297264339964837, + "99.999" : 3.4297264339964837, + "99.9999" : 3.4297264339964837, + "100.0" : 3.4297264339964837 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4236089548467903, + 3.4297264339964837 + ], + [ + 3.4170249463534113, + 3.42041456419761 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7300534439742297, + "scoreError" : 0.019032673370126152, + "scoreConfidence" : [ + 1.7110207706041036, + 1.7490861173443557 + ], + "scorePercentiles" : { + "0.0" : 1.7260690976473414, + "50.0" : 1.7304886524743175, + "90.0" : 1.733167373300942, + "95.0" : 1.733167373300942, + "99.0" : 1.733167373300942, + "99.9" : 1.733167373300942, + "99.99" : 1.733167373300942, + "99.999" : 1.733167373300942, + "99.9999" : 1.733167373300942, + "100.0" : 1.733167373300942 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7302956837792431, + 1.733167373300942 + ], + [ + 1.7260690976473414, + 1.7306816211693918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8698987120372736, + "scoreError" : 0.00377581375645047, + "scoreConfidence" : [ + 0.8661228982808232, + 0.8736745257937241 + ], + "scorePercentiles" : { + "0.0" : 0.8690967971416474, + "50.0" : 0.8700294827105304, + "90.0" : 0.8704390855863859, + "95.0" : 0.8704390855863859, + "99.0" : 0.8704390855863859, + "99.9" : 0.8704390855863859, + "99.99" : 0.8704390855863859, + "99.999" : 0.8704390855863859, + "99.9999" : 0.8704390855863859, + "100.0" : 0.8704390855863859 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8701952932654208, + 0.8704390855863859 + ], + [ + 0.8690967971416474, + 0.8698636721556401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.43585541369755, + "scoreError" : 2.21713038130226, + "scoreConfidence" : [ + 42.21872503239529, + 46.652985794999815 + ], + "scorePercentiles" : { + "0.0" : 42.70591352572246, + "50.0" : 44.91351616811866, + "90.0" : 45.698943042856044, + "95.0" : 45.698943042856044, + "99.0" : 45.698943042856044, + "99.9" : 45.698943042856044, + "99.99" : 45.698943042856044, + "99.999" : 45.698943042856044, + "99.9999" : 45.698943042856044, + "100.0" : 45.698943042856044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.70591352572246, + 42.7354668083411, + 42.75134494654927 + ], + [ + 45.62264437022108, + 45.66645088612438, + 45.698943042856044 + ], + [ + 44.89908833299122, + 44.91351616811866, + 44.92933064235384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022318768566288623, + "scoreError" : 4.839872571792104E-4, + "scoreConfidence" : [ + 0.021834781309109413, + 0.022802755823467833 + ], + "scorePercentiles" : { + "0.0" : 0.022101342944812363, + "50.0" : 0.022146305756637168, + "90.0" : 0.02271604529478458, + "95.0" : 0.02271604529478458, + "99.0" : 0.02271604529478458, + "99.9" : 0.02271604529478458, + "99.99" : 0.02271604529478458, + "99.999" : 0.02271604529478458, + "99.9999" : 0.02271604529478458, + "100.0" : 0.02271604529478458 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210229688741722, + 0.022101342944812363, + 0.02212873989159292 + ], + [ + 0.022697511213151927, + 0.02269267171882086, + 0.02271604529478458 + ], + [ + 0.022146305756637168, + 0.02214712675884956, + 0.022136876630530974 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json b/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json new file mode 100644 index 0000000000..0ab2bd6f98 --- /dev/null +++ b/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4042371393335316, + "scoreError" : 0.0446872583155137, + "scoreConfidence" : [ + 3.359549881018018, + 3.448924397649045 + ], + "scorePercentiles" : { + "0.0" : 3.394914893117686, + "50.0" : 3.4052290542625556, + "90.0" : 3.4115755556913285, + "95.0" : 3.4115755556913285, + "99.0" : 3.4115755556913285, + "99.9" : 3.4115755556913285, + "99.99" : 3.4115755556913285, + "99.999" : 3.4115755556913285, + "99.9999" : 3.4115755556913285, + "100.0" : 3.4115755556913285 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394914893117686, + 3.40583895732733 + ], + [ + 3.404619151197781, + 3.4115755556913285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7184579763646566, + "scoreError" : 0.017984029000478307, + "scoreConfidence" : [ + 1.7004739473641783, + 1.7364420053651348 + ], + "scorePercentiles" : { + "0.0" : 1.7150109700481377, + "50.0" : 1.7185017101631561, + "90.0" : 1.721817515084177, + "95.0" : 1.721817515084177, + "99.0" : 1.721817515084177, + "99.9" : 1.721817515084177, + "99.99" : 1.721817515084177, + "99.999" : 1.721817515084177, + "99.9999" : 1.721817515084177, + "100.0" : 1.721817515084177 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7183229689238861, + 1.721817515084177 + ], + [ + 1.7150109700481377, + 1.718680451402426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8644166678618949, + "scoreError" : 0.014273824793039343, + "scoreConfidence" : [ + 0.8501428430688556, + 0.8786904926549342 + ], + "scorePercentiles" : { + "0.0" : 0.8625013881061403, + "50.0" : 0.8640499230080323, + "90.0" : 0.8670654373253741, + "95.0" : 0.8670654373253741, + "99.0" : 0.8670654373253741, + "99.9" : 0.8670654373253741, + "99.99" : 0.8670654373253741, + "99.999" : 0.8670654373253741, + "99.9999" : 0.8670654373253741, + "100.0" : 0.8670654373253741 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8654071827075736, + 0.8670654373253741 + ], + [ + 0.8625013881061403, + 0.8626926633084911 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.107849203374485, + "scoreError" : 1.8613429979991036, + "scoreConfidence" : [ + 38.24650620537538, + 41.96919220137359 + ], + "scorePercentiles" : { + "0.0" : 38.957375193089185, + "50.0" : 39.87978038106594, + "90.0" : 42.106739336781644, + "95.0" : 42.106739336781644, + "99.0" : 42.106739336781644, + "99.9" : 42.106739336781644, + "99.99" : 42.106739336781644, + "99.999" : 42.106739336781644, + "99.9999" : 42.106739336781644, + "100.0" : 42.106739336781644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.32311514586201, + 39.22873722502622, + 39.40093047378082 + ], + [ + 40.22868330630514, + 42.106739336781644, + 40.820245253788244 + ], + [ + 39.02503651467119, + 38.957375193089185, + 39.87978038106594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02515763671701217, + "scoreError" : 4.5515478538928604E-4, + "scoreConfidence" : [ + 0.02470248193162288, + 0.025612791502401457 + ], + "scorePercentiles" : { + "0.0" : 0.024772995148514852, + "50.0" : 0.025168438949748743, + "90.0" : 0.02553268769132653, + "95.0" : 0.02553268769132653, + "99.0" : 0.02553268769132653, + "99.9" : 0.02553268769132653, + "99.99" : 0.02553268769132653, + "99.999" : 0.02553268769132653, + "99.9999" : 0.02553268769132653, + "100.0" : 0.02553268769132653 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024772995148514852, + 0.024887766286069653, + 0.024896308708955223 + ], + [ + 0.02533403954177215, + 0.025328802524050634, + 0.025448840152671754 + ], + [ + 0.02504885145, + 0.025168438949748743, + 0.02553268769132653 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json b/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json new file mode 100644 index 0000000000..8d80b209f6 --- /dev/null +++ b/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.402866252226364, + "scoreError" : 0.0421848378937494, + "scoreConfidence" : [ + 3.360681414332615, + 3.4450510901201135 + ], + "scorePercentiles" : { + "0.0" : 3.397928831896492, + "50.0" : 3.400671059467336, + "90.0" : 3.412194058074291, + "95.0" : 3.412194058074291, + "99.0" : 3.412194058074291, + "99.9" : 3.412194058074291, + "99.99" : 3.412194058074291, + "99.999" : 3.412194058074291, + "99.9999" : 3.412194058074291, + "100.0" : 3.412194058074291 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.397928831896492, + 3.402518546600235 + ], + [ + 3.3988235723344373, + 3.412194058074291 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.718488887939728, + "scoreError" : 0.01413215419536935, + "scoreConfidence" : [ + 1.7043567337443586, + 1.7326210421350974 + ], + "scorePercentiles" : { + "0.0" : 1.7167794743050087, + "50.0" : 1.717892436788207, + "90.0" : 1.7213912038774897, + "95.0" : 1.7213912038774897, + "99.0" : 1.7213912038774897, + "99.9" : 1.7213912038774897, + "99.99" : 1.7213912038774897, + "99.999" : 1.7213912038774897, + "99.9999" : 1.7213912038774897, + "100.0" : 1.7213912038774897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7168220567730959, + 1.718962816803318 + ], + [ + 1.7167794743050087, + 1.7213912038774897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8647181507551523, + "scoreError" : 0.007284417772818592, + "scoreConfidence" : [ + 0.8574337329823337, + 0.872002568527971 + ], + "scorePercentiles" : { + "0.0" : 0.8635274440152577, + "50.0" : 0.8646774530881736, + "90.0" : 0.8659902528290045, + "95.0" : 0.8659902528290045, + "99.0" : 0.8659902528290045, + "99.9" : 0.8659902528290045, + "99.99" : 0.8659902528290045, + "99.999" : 0.8659902528290045, + "99.9999" : 0.8659902528290045, + "100.0" : 0.8659902528290045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8635274440152577, + 0.8640558078024131 + ], + [ + 0.8652990983739342, + 0.8659902528290045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 39.40515730294485, + "scoreError" : 1.4215726826153885, + "scoreConfidence" : [ + 37.98358462032946, + 40.82672998556024 + ], + "scorePercentiles" : { + "0.0" : 37.93581376773447, + "50.0" : 39.27752387686973, + "90.0" : 40.343217369362335, + "95.0" : 40.343217369362335, + "99.0" : 40.343217369362335, + "99.9" : 40.343217369362335, + "99.99" : 40.343217369362335, + "99.999" : 40.343217369362335, + "99.9999" : 40.343217369362335, + "100.0" : 40.343217369362335 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.06384938710178, + 40.17442301384987, + 40.259929376837086 + ], + [ + 39.27752387686973, + 38.714228572397936, + 37.93581376773447 + ], + [ + 40.343217369362335, + 38.96220507920764, + 38.91522528314284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02554874198958805, + "scoreError" : 0.0017688172917319394, + "scoreConfidence" : [ + 0.02377992469785611, + 0.02731755928131999 + ], + "scorePercentiles" : { + "0.0" : 0.024039496365384615, + "50.0" : 0.02525976276010101, + "90.0" : 0.027049900545945946, + "95.0" : 0.027049900545945946, + "99.0" : 0.027049900545945946, + "99.9" : 0.027049900545945946, + "99.99" : 0.027049900545945946, + "99.999" : 0.027049900545945946, + "99.9999" : 0.027049900545945946, + "100.0" : 0.027049900545945946 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.026940275467741935, + 0.02652689669230769, + 0.027049900545945946 + ], + [ + 0.025087918175438595, + 0.02502862981, + 0.024039496365384615 + ], + [ + 0.024630795724815725, + 0.02525976276010101, + 0.02537500236455696 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json b/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json new file mode 100644 index 0000000000..fab923472c --- /dev/null +++ b/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40840468928762, + "scoreError" : 0.03172758838290947, + "scoreConfidence" : [ + 3.3766771009047103, + 3.4401322776705294 + ], + "scorePercentiles" : { + "0.0" : 3.401889288067258, + "50.0" : 3.4089583002614106, + "90.0" : 3.4138128685604006, + "95.0" : 3.4138128685604006, + "99.0" : 3.4138128685604006, + "99.9" : 3.4138128685604006, + "99.99" : 3.4138128685604006, + "99.999" : 3.4138128685604006, + "99.9999" : 3.4138128685604006, + "100.0" : 3.4138128685604006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408891511405186, + 3.4138128685604006 + ], + [ + 3.401889288067258, + 3.4090250891176357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210007707040362, + "scoreError" : 0.017508545331382953, + "scoreConfidence" : [ + 1.7034922253726532, + 1.7385093160354192 + ], + "scorePercentiles" : { + "0.0" : 1.7180058125704887, + "50.0" : 1.721345212697952, + "90.0" : 1.7233068448497522, + "95.0" : 1.7233068448497522, + "99.0" : 1.7233068448497522, + "99.9" : 1.7233068448497522, + "99.99" : 1.7233068448497522, + "99.999" : 1.7233068448497522, + "99.9999" : 1.7233068448497522, + "100.0" : 1.7233068448497522 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7180058125704887, + 1.7194089020585175 + ], + [ + 1.7232815233373864, + 1.7233068448497522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8643609823632786, + "scoreError" : 0.0161080169738309, + "scoreConfidence" : [ + 0.8482529653894477, + 0.8804689993371095 + ], + "scorePercentiles" : { + "0.0" : 0.8621131943188688, + "50.0" : 0.8639380343612875, + "90.0" : 0.8674546664116706, + "95.0" : 0.8674546664116706, + "99.0" : 0.8674546664116706, + "99.9" : 0.8674546664116706, + "99.99" : 0.8674546664116706, + "99.999" : 0.8674546664116706, + "99.9999" : 0.8674546664116706, + "100.0" : 0.8674546664116706 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8652908015543234, + 0.8674546664116706 + ], + [ + 0.8625852671682516, + 0.8621131943188688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.13143739568395, + "scoreError" : 1.28997090052118, + "scoreConfidence" : [ + 40.84146649516277, + 43.421408296205136 + ], + "scorePercentiles" : { + "0.0" : 40.7091955299111, + "50.0" : 42.34700827507123, + "90.0" : 43.09494311870861, + "95.0" : 43.09494311870861, + "99.0" : 43.09494311870861, + "99.9" : 43.09494311870861, + "99.99" : 43.09494311870861, + "99.999" : 43.09494311870861, + "99.9999" : 43.09494311870861, + "100.0" : 43.09494311870861 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.7091955299111, + 41.54843086871625, + 42.4898195879411 + ], + [ + 42.34700827507123, + 43.09494311870861, + 41.772721481340994 + ], + [ + 41.69707756441562, + 43.0226619809692, + 42.5010781540815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023930444714706154, + "scoreError" : 8.884213123377579E-4, + "scoreConfidence" : [ + 0.023042023402368397, + 0.02481886602704391 + ], + "scorePercentiles" : { + "0.0" : 0.023008338947126436, + "50.0" : 0.024051551677884614, + "90.0" : 0.024526884235294116, + "95.0" : 0.024526884235294116, + "99.0" : 0.024526884235294116, + "99.9" : 0.024526884235294116, + "99.99" : 0.024526884235294116, + "99.999" : 0.024526884235294116, + "99.9999" : 0.024526884235294116, + "100.0" : 0.024526884235294116 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024526884235294116, + 0.024363735328467154, + 0.023997522652278176 + ], + [ + 0.024367394362530412, + 0.024051551677884614, + 0.024217514585956418 + ], + [ + 0.023008338947126436, + 0.023298507360465116, + 0.02354255328235294 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json b/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json new file mode 100644 index 0000000000..5b3e1c6e47 --- /dev/null +++ b/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.404357283980617, + "scoreError" : 0.03521914452873535, + "scoreConfidence" : [ + 3.3691381394518816, + 3.439576428509352 + ], + "scorePercentiles" : { + "0.0" : 3.3966817360964723, + "50.0" : 3.40558944367229, + "90.0" : 3.4095685124814152, + "95.0" : 3.4095685124814152, + "99.0" : 3.4095685124814152, + "99.9" : 3.4095685124814152, + "99.99" : 3.4095685124814152, + "99.999" : 3.4095685124814152, + "99.9999" : 3.4095685124814152, + "100.0" : 3.4095685124814152 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3966817360964723, + 3.4055314796534444 + ], + [ + 3.4056474076911356, + 3.4095685124814152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7178122106916855, + "scoreError" : 0.01023832001786633, + "scoreConfidence" : [ + 1.7075738906738192, + 1.728050530709552 + ], + "scorePercentiles" : { + "0.0" : 1.7160908939955062, + "50.0" : 1.7177309775482787, + "90.0" : 1.7196959936746783, + "95.0" : 1.7196959936746783, + "99.0" : 1.7196959936746783, + "99.9" : 1.7196959936746783, + "99.99" : 1.7196959936746783, + "99.999" : 1.7196959936746783, + "99.9999" : 1.7196959936746783, + "100.0" : 1.7196959936746783 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7170217100517866, + 1.7196959936746783 + ], + [ + 1.7160908939955062, + 1.718440245044771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864719378037384, + "scoreError" : 0.008385695422045172, + "scoreConfidence" : [ + 0.8563336826153388, + 0.8731050734594291 + ], + "scorePercentiles" : { + "0.0" : 0.8635028724987689, + "50.0" : 0.8645279250288825, + "90.0" : 0.8663187895930019, + "95.0" : 0.8663187895930019, + "99.0" : 0.8663187895930019, + "99.9" : 0.8663187895930019, + "99.99" : 0.8663187895930019, + "99.999" : 0.8663187895930019, + "99.9999" : 0.8663187895930019, + "100.0" : 0.8663187895930019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8638420932589354, + 0.8663187895930019 + ], + [ + 0.8635028724987689, + 0.8652137567988297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 38.68765878419774, + "scoreError" : 1.3595024579632389, + "scoreConfidence" : [ + 37.3281563262345, + 40.047161242160975 + ], + "scorePercentiles" : { + "0.0" : 37.6176212727424, + "50.0" : 38.91625003504807, + "90.0" : 39.96719044176991, + "95.0" : 39.96719044176991, + "99.0" : 39.96719044176991, + "99.9" : 39.96719044176991, + "99.99" : 39.96719044176991, + "99.999" : 39.96719044176991, + "99.9999" : 39.96719044176991, + "100.0" : 39.96719044176991 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 38.07023523961371, + 37.6176212727424, + 37.7109409706809 + ], + [ + 38.23620460941478, + 39.22998086295451, + 38.91625003504807 + ], + [ + 39.96719044176991, + 39.195550172304046, + 39.244955453251286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02482110118000495, + "scoreError" : 0.0012491594771989168, + "scoreConfidence" : [ + 0.023571941702806035, + 0.026070260657203866 + ], + "scorePercentiles" : { + "0.0" : 0.02395586482057416, + "50.0" : 0.0250229317475, + "90.0" : 0.025947926660621762, + "95.0" : 0.025947926660621762, + "99.0" : 0.025947926660621762, + "99.9" : 0.025947926660621762, + "99.99" : 0.025947926660621762, + "99.999" : 0.025947926660621762, + "99.9999" : 0.025947926660621762, + "100.0" : 0.025947926660621762 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02557740179539642, + 0.02512524028822055, + 0.025947926660621762 + ], + [ + 0.0250229317475, + 0.025267129606060607, + 0.024533764960784313 + ], + [ + 0.02395586482057416, + 0.023976613050239234, + 0.023983037690647482 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json b/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json new file mode 100644 index 0000000000..6ac543c4fb --- /dev/null +++ b/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4170644521395346, + "scoreError" : 0.06948104475705158, + "scoreConfidence" : [ + 3.347583407382483, + 3.486545496896586 + ], + "scorePercentiles" : { + "0.0" : 3.4066504834553046, + "50.0" : 3.4162868626402703, + "90.0" : 3.4290335998222927, + "95.0" : 3.4290335998222927, + "99.0" : 3.4290335998222927, + "99.9" : 3.4290335998222927, + "99.99" : 3.4290335998222927, + "99.999" : 3.4290335998222927, + "99.9999" : 3.4290335998222927, + "100.0" : 3.4290335998222927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423139355195289, + 3.4290335998222927 + ], + [ + 3.4066504834553046, + 3.4094343700852514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7299781307919717, + "scoreError" : 0.007857454898446732, + "scoreConfidence" : [ + 1.722120675893525, + 1.7378355856904184 + ], + "scorePercentiles" : { + "0.0" : 1.7289438396262016, + "50.0" : 1.7297098953749621, + "90.0" : 1.7315488927917617, + "95.0" : 1.7315488927917617, + "99.0" : 1.7315488927917617, + "99.9" : 1.7315488927917617, + "99.99" : 1.7315488927917617, + "99.999" : 1.7315488927917617, + "99.9999" : 1.7315488927917617, + "100.0" : 1.7315488927917617 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7290956274732558, + 1.7303241632766684 + ], + [ + 1.7289438396262016, + 1.7315488927917617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8697467791753941, + "scoreError" : 0.0028323725711086665, + "scoreConfidence" : [ + 0.8669144066042854, + 0.8725791517465028 + ], + "scorePercentiles" : { + "0.0" : 0.8692196616762735, + "50.0" : 0.869817331270005, + "90.0" : 0.8701327924852931, + "95.0" : 0.8701327924852931, + "99.0" : 0.8701327924852931, + "99.9" : 0.8701327924852931, + "99.99" : 0.8701327924852931, + "99.999" : 0.8701327924852931, + "99.9999" : 0.8701327924852931, + "100.0" : 0.8701327924852931 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695531911766186, + 0.8700814713633914 + ], + [ + 0.8692196616762735, + 0.8701327924852931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.0549346381212, + "scoreError" : 0.848757856193997, + "scoreConfidence" : [ + 44.206176781927205, + 45.9036924943152 + ], + "scorePercentiles" : { + "0.0" : 44.68208621438223, + "50.0" : 44.738282881112745, + "90.0" : 45.76180661959652, + "95.0" : 45.76180661959652, + "99.0" : 45.76180661959652, + "99.9" : 45.76180661959652, + "99.99" : 45.76180661959652, + "99.999" : 45.76180661959652, + "99.9999" : 45.76180661959652, + "100.0" : 45.76180661959652 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.756697510251236, + 44.738282881112745, + 44.68208621438223 + ], + [ + 44.73782098292451, + 44.695078879626514, + 44.70247575123757 + ], + [ + 45.698962720374276, + 45.72120018358523, + 45.76180661959652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022437348164506113, + "scoreError" : 9.210176860938199E-4, + "scoreConfidence" : [ + 0.021516330478412293, + 0.023358365850599933 + ], + "scorePercentiles" : { + "0.0" : 0.021832881671023964, + "50.0" : 0.022377403029082775, + "90.0" : 0.02315576094675926, + "95.0" : 0.02315576094675926, + "99.0" : 0.02315576094675926, + "99.9" : 0.02315576094675926, + "99.99" : 0.02315576094675926, + "99.999" : 0.02315576094675926, + "99.9999" : 0.02315576094675926, + "100.0" : 0.02315576094675926 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.021843250683406115, + 0.021832881671023964, + 0.02184149683187773 + ], + [ + 0.022377403029082775, + 0.022397466700223714, + 0.02235870547767857 + ], + [ + 0.022976684075688075, + 0.02315576094675926, + 0.023152484064814814 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json b/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json new file mode 100644 index 0000000000..40711a4f92 --- /dev/null +++ b/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4197378188044096, + "scoreError" : 0.04262561676864909, + "scoreConfidence" : [ + 3.3771122020357605, + 3.462363435573059 + ], + "scorePercentiles" : { + "0.0" : 3.4117117828701837, + "50.0" : 3.4198156241090585, + "90.0" : 3.4276082441293374, + "95.0" : 3.4276082441293374, + "99.0" : 3.4276082441293374, + "99.9" : 3.4276082441293374, + "99.99" : 3.4276082441293374, + "99.999" : 3.4276082441293374, + "99.9999" : 3.4276082441293374, + "100.0" : 3.4276082441293374 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418372884463662, + 3.4276082441293374 + ], + [ + 3.4117117828701837, + 3.421258363754455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.726255760607202, + "scoreError" : 0.0069887452082228844, + "scoreConfidence" : [ + 1.719267015398979, + 1.7332445058154249 + ], + "scorePercentiles" : { + "0.0" : 1.724942047136417, + "50.0" : 1.7262524899916596, + "90.0" : 1.7275760153090716, + "95.0" : 1.7275760153090716, + "99.0" : 1.7275760153090716, + "99.9" : 1.7275760153090716, + "99.99" : 1.7275760153090716, + "99.999" : 1.7275760153090716, + "99.9999" : 1.7275760153090716, + "100.0" : 1.7275760153090716 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7261109025806118, + 1.7263940774027073 + ], + [ + 1.724942047136417, + 1.7275760153090716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8695008952141935, + "scoreError" : 0.002839649770146112, + "scoreConfidence" : [ + 0.8666612454440474, + 0.8723405449843395 + ], + "scorePercentiles" : { + "0.0" : 0.8688932944831845, + "50.0" : 0.8695867203095606, + "90.0" : 0.8699368457544682, + "95.0" : 0.8699368457544682, + "99.0" : 0.8699368457544682, + "99.9" : 0.8699368457544682, + "99.99" : 0.8699368457544682, + "99.999" : 0.8699368457544682, + "99.9999" : 0.8699368457544682, + "100.0" : 0.8699368457544682 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688932944831845, + 0.869534969252187 + ], + [ + 0.8699368457544682, + 0.8696384713669342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.79340737680421, + "scoreError" : 1.1283373708302868, + "scoreConfidence" : [ + 43.665070005973924, + 45.9217447476345 + ], + "scorePercentiles" : { + "0.0" : 44.22709764883389, + "50.0" : 44.37852960081133, + "90.0" : 45.72777210141981, + "95.0" : 45.72777210141981, + "99.0" : 45.72777210141981, + "99.9" : 45.72777210141981, + "99.99" : 45.72777210141981, + "99.999" : 45.72777210141981, + "99.9999" : 45.72777210141981, + "100.0" : 45.72777210141981 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.37103141816148, + 44.37808732974959, + 44.43775470829123 + ], + [ + 45.68653293043291, + 45.63986315460877, + 45.72777210141981 + ], + [ + 44.37852960081133, + 44.29399749892893, + 44.22709764883389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02254336100574041, + "scoreError" : 0.0014251861750202459, + "scoreConfidence" : [ + 0.021118174830720163, + 0.023968547180760656 + ], + "scorePercentiles" : { + "0.0" : 0.02140835029059829, + "50.0" : 0.022582479492099322, + "90.0" : 0.023531701548235293, + "95.0" : 0.023531701548235293, + "99.0" : 0.023531701548235293, + "99.9" : 0.023531701548235293, + "99.99" : 0.023531701548235293, + "99.999" : 0.023531701548235293, + "99.9999" : 0.023531701548235293, + "100.0" : 0.023531701548235293 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023531701548235293, + 0.02344455574941452, + 0.023488433495305164 + ], + [ + 0.021671676398268398, + 0.02140835029059829, + 0.021538914713978494 + ], + [ + 0.022566439108108106, + 0.022657698255656108, + 0.022582479492099322 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json b/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json new file mode 100644 index 0000000000..808a4a5fce --- /dev/null +++ b/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4206088887895985, + "scoreError" : 0.013042699082723508, + "scoreConfidence" : [ + 3.4075661897068747, + 3.433651587872322 + ], + "scorePercentiles" : { + "0.0" : 3.417984980421843, + "50.0" : 3.4207956154691894, + "90.0" : 3.4228593437981725, + "95.0" : 3.4228593437981725, + "99.0" : 3.4228593437981725, + "99.9" : 3.4228593437981725, + "99.99" : 3.4228593437981725, + "99.999" : 3.4228593437981725, + "99.9999" : 3.4228593437981725, + "100.0" : 3.4228593437981725 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4211136575072607, + 3.4228593437981725 + ], + [ + 3.417984980421843, + 3.420477573431118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7290954275461694, + "scoreError" : 0.014971146867698142, + "scoreConfidence" : [ + 1.7141242806784713, + 1.7440665744138675 + ], + "scorePercentiles" : { + "0.0" : 1.7268335612289947, + "50.0" : 1.728618007948021, + "90.0" : 1.732312133059641, + "95.0" : 1.732312133059641, + "99.0" : 1.732312133059641, + "99.9" : 1.732312133059641, + "99.99" : 1.732312133059641, + "99.999" : 1.732312133059641, + "99.9999" : 1.732312133059641, + "100.0" : 1.732312133059641 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7289210060678664, + 1.732312133059641 + ], + [ + 1.7268335612289947, + 1.7283150098281757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691296924737124, + "scoreError" : 0.003217906230387458, + "scoreConfidence" : [ + 0.865911786243325, + 0.8723475987040998 + ], + "scorePercentiles" : { + "0.0" : 0.8685411985907953, + "50.0" : 0.8691692958613317, + "90.0" : 0.8696389795813908, + "95.0" : 0.8696389795813908, + "99.0" : 0.8696389795813908, + "99.9" : 0.8696389795813908, + "99.99" : 0.8696389795813908, + "99.999" : 0.8696389795813908, + "99.9999" : 0.8696389795813908, + "100.0" : 0.8696389795813908 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685411985907953, + 0.8694292003590817 + ], + [ + 0.8689093913635819, + 0.8696389795813908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.00002592220759, + "scoreError" : 1.0169729471967608, + "scoreConfidence" : [ + 42.98305297501083, + 45.016998869404354 + ], + "scorePercentiles" : { + "0.0" : 43.190621895015134, + "50.0" : 44.339727784246385, + "90.0" : 44.49859689249208, + "95.0" : 44.49859689249208, + "99.0" : 44.49859689249208, + "99.9" : 44.49859689249208, + "99.99" : 44.49859689249208, + "99.999" : 44.49859689249208, + "99.9999" : 44.49859689249208, + "100.0" : 44.49859689249208 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.296203523003136, + 44.3675733423135, + 44.339727784246385 + ], + [ + 44.433477192763355, + 44.47220710306538, + 44.49859689249208 + ], + [ + 43.190621895015134, + 43.195083051862106, + 43.2067425151073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022014991133773334, + "scoreError" : 7.270139507733344E-4, + "scoreConfidence" : [ + 0.021287977183, + 0.022742005084546667 + ], + "scorePercentiles" : { + "0.0" : 0.02151436482795699, + "50.0" : 0.021798280185185186, + "90.0" : 0.02263859209276018, + "95.0" : 0.02263859209276018, + "99.0" : 0.02263859209276018, + "99.9" : 0.02263859209276018, + "99.99" : 0.02263859209276018, + "99.999" : 0.02263859209276018, + "99.9999" : 0.02263859209276018, + "100.0" : 0.02263859209276018 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02176385843695652, + 0.021756122958695653, + 0.021755845339130435 + ], + [ + 0.021798280185185186, + 0.021809013647058822, + 0.02151436482795699 + ], + [ + 0.02263859209276018, + 0.022552278957207208, + 0.02254656375900901 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json b/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json new file mode 100644 index 0000000000..be9f5a784b --- /dev/null +++ b/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4242633766606025, + "scoreError" : 0.018975601014235673, + "scoreConfidence" : [ + 3.405287775646367, + 3.443238977674838 + ], + "scorePercentiles" : { + "0.0" : 3.4212131355295408, + "50.0" : 3.423987593935866, + "90.0" : 3.427865183241137, + "95.0" : 3.427865183241137, + "99.0" : 3.427865183241137, + "99.9" : 3.427865183241137, + "99.99" : 3.427865183241137, + "99.999" : 3.427865183241137, + "99.9999" : 3.427865183241137, + "100.0" : 3.427865183241137 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4212131355295408, + 3.427865183241137 + ], + [ + 3.4226761215874024, + 3.42529906628433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7297100885344647, + "scoreError" : 0.012575602193575109, + "scoreConfidence" : [ + 1.7171344863408897, + 1.7422856907280397 + ], + "scorePercentiles" : { + "0.0" : 1.7269537146749794, + "50.0" : 1.7301797508085786, + "90.0" : 1.7315271378457233, + "95.0" : 1.7315271378457233, + "99.0" : 1.7315271378457233, + "99.9" : 1.7315271378457233, + "99.99" : 1.7315271378457233, + "99.999" : 1.7315271378457233, + "99.9999" : 1.7315271378457233, + "100.0" : 1.7315271378457233 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7269537146749794, + 1.730283069142333 + ], + [ + 1.730076432474824, + 1.7315271378457233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8694133387568189, + "scoreError" : 8.350509859162894E-4, + "scoreConfidence" : [ + 0.8685782877709026, + 0.8702483897427352 + ], + "scorePercentiles" : { + "0.0" : 0.8692902387995611, + "50.0" : 0.8693866443860734, + "90.0" : 0.8695898274555681, + "95.0" : 0.8695898274555681, + "99.0" : 0.8695898274555681, + "99.9" : 0.8695898274555681, + "99.99" : 0.8695898274555681, + "99.999" : 0.8695898274555681, + "99.9999" : 0.8695898274555681, + "100.0" : 0.8695898274555681 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8693522182862535, + 0.8692902387995611 + ], + [ + 0.8695898274555681, + 0.8694210704858931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.351621241143484, + "scoreError" : 0.5953242229423784, + "scoreConfidence" : [ + 43.7562970182011, + 44.946945464085864 + ], + "scorePercentiles" : { + "0.0" : 43.77066626511391, + "50.0" : 44.366053527100796, + "90.0" : 44.87096788250905, + "95.0" : 44.87096788250905, + "99.0" : 44.87096788250905, + "99.9" : 44.87096788250905, + "99.99" : 44.87096788250905, + "99.999" : 44.87096788250905, + "99.9999" : 44.87096788250905, + "100.0" : 44.87096788250905 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.297296748606456, + 44.397303245644636, + 44.366053527100796 + ], + [ + 44.0500241243553, + 44.05602909596345, + 43.77066626511391 + ], + [ + 44.87096788250905, + 44.68165375318243, + 44.674596527815304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022335216267832168, + "scoreError" : 5.743756954042363E-4, + "scoreConfidence" : [ + 0.02176084057242793, + 0.022909591963236404 + ], + "scorePercentiles" : { + "0.0" : 0.022069386140969163, + "50.0" : 0.02213912410619469, + "90.0" : 0.022815809872437358, + "95.0" : 0.022815809872437358, + "99.0" : 0.022815809872437358, + "99.9" : 0.022815809872437358, + "99.99" : 0.022815809872437358, + "99.999" : 0.022815809872437358, + "99.9999" : 0.022815809872437358, + "100.0" : 0.022815809872437358 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210124018763797, + 0.022075338872246695, + 0.022069386140969163 + ], + [ + 0.02275205906818182, + 0.022799795460136673, + 0.022815809872437358 + ], + [ + 0.022123397386313467, + 0.02213912410619469, + 0.02214079531637168 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json b/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json new file mode 100644 index 0000000000..260e44a4d4 --- /dev/null +++ b/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4115822946692296, + "scoreError" : 0.02374031077593178, + "scoreConfidence" : [ + 3.387841983893298, + 3.4353226054451613 + ], + "scorePercentiles" : { + "0.0" : 3.4079551742814718, + "50.0" : 3.4109733124928603, + "90.0" : 3.4164273794097273, + "95.0" : 3.4164273794097273, + "99.0" : 3.4164273794097273, + "99.9" : 3.4164273794097273, + "99.99" : 3.4164273794097273, + "99.999" : 3.4164273794097273, + "99.9999" : 3.4164273794097273, + "100.0" : 3.4164273794097273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4097245690943745, + 3.4164273794097273 + ], + [ + 3.4079551742814718, + 3.4122220558913456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.722694825573204, + "scoreError" : 0.009524342266229335, + "scoreConfidence" : [ + 1.7131704833069747, + 1.7322191678394332 + ], + "scorePercentiles" : { + "0.0" : 1.7205165151963069, + "50.0" : 1.7232566846012491, + "90.0" : 1.7237494178940111, + "95.0" : 1.7237494178940111, + "99.0" : 1.7237494178940111, + "99.9" : 1.7237494178940111, + "99.99" : 1.7237494178940111, + "99.999" : 1.7237494178940111, + "99.9999" : 1.7237494178940111, + "100.0" : 1.7237494178940111 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7233762538651085, + 1.7237494178940111 + ], + [ + 1.7205165151963069, + 1.7231371153373898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866572515884187, + "scoreError" : 0.004874669836230257, + "scoreConfidence" : [ + 0.8616978460479567, + 0.8714471857204173 + ], + "scorePercentiles" : { + "0.0" : 0.8659772491632904, + "50.0" : 0.866317387084177, + "90.0" : 0.867678040205104, + "95.0" : 0.867678040205104, + "99.0" : 0.867678040205104, + "99.9" : 0.867678040205104, + "99.99" : 0.867678040205104, + "99.999" : 0.867678040205104, + "99.9999" : 0.867678040205104, + "100.0" : 0.867678040205104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8663020308179187, + 0.867678040205104 + ], + [ + 0.8659772491632904, + 0.8663327433504354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.16581893791316, + "scoreError" : 2.066948947766819, + "scoreConfidence" : [ + 41.09886999014634, + 45.232767885679976 + ], + "scorePercentiles" : { + "0.0" : 41.47630378715374, + "50.0" : 43.19324157508737, + "90.0" : 45.10306662709041, + "95.0" : 45.10306662709041, + "99.0" : 45.10306662709041, + "99.9" : 45.10306662709041, + "99.99" : 45.10306662709041, + "99.999" : 45.10306662709041, + "99.9999" : 45.10306662709041, + "100.0" : 45.10306662709041 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.9283125770102, + 41.47630378715374, + 42.49340373619001 + ], + [ + 43.19324157508737, + 44.967595343521324, + 45.10306662709041 + ], + [ + 42.69787652122177, + 43.33871227400222, + 43.29385799994142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02357816374013612, + "scoreError" : 6.853628187300454E-4, + "scoreConfidence" : [ + 0.022892800921406078, + 0.024263526558866166 + ], + "scorePercentiles" : { + "0.0" : 0.02294608312614679, + "50.0" : 0.023463286145199064, + "90.0" : 0.024420310319512195, + "95.0" : 0.024420310319512195, + "99.0" : 0.024420310319512195, + "99.9" : 0.024420310319512195, + "99.99" : 0.024420310319512195, + "99.999" : 0.024420310319512195, + "99.9999" : 0.024420310319512195, + "100.0" : 0.024420310319512195 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023463286145199064, + 0.02341394538551402, + 0.023628221283018867 + ], + [ + 0.023451077770491803, + 0.02331047241395349, + 0.02294608312614679 + ], + [ + 0.024420310319512195, + 0.02383940636904762, + 0.023730670848341233 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json b/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json new file mode 100644 index 0000000000..42469cd673 --- /dev/null +++ b/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json @@ -0,0 +1,1657 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.407056046800354, + "scoreError" : 0.029918815472154754, + "scoreConfidence" : [ + 3.3771372313281995, + 3.4369748622725087 + ], + "scorePercentiles" : { + "0.0" : 3.4007909424708345, + "50.0" : 3.4082762103332733, + "90.0" : 3.410880824064036, + "95.0" : 3.410880824064036, + "99.0" : 3.410880824064036, + "99.9" : 3.410880824064036, + "99.99" : 3.410880824064036, + "99.999" : 3.410880824064036, + "99.9999" : 3.410880824064036, + "100.0" : 3.410880824064036 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4063459499983404, + 3.4102064706682067 + ], + [ + 3.4007909424708345, + 3.410880824064036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7237261899951235, + "scoreError" : 0.012279956940872572, + "scoreConfidence" : [ + 1.711446233054251, + 1.736006146935996 + ], + "scorePercentiles" : { + "0.0" : 1.7209620297907924, + "50.0" : 1.7243493101951046, + "90.0" : 1.725244109799492, + "95.0" : 1.725244109799492, + "99.0" : 1.725244109799492, + "99.9" : 1.725244109799492, + "99.99" : 1.725244109799492, + "99.999" : 1.725244109799492, + "99.9999" : 1.725244109799492, + "100.0" : 1.725244109799492 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7209620297907924, + 1.7245866091668745 + ], + [ + 1.7241120112233348, + 1.725244109799492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8655072619557832, + "scoreError" : 0.0076541027379537704, + "scoreConfidence" : [ + 0.8578531592178295, + 0.873161364693737 + ], + "scorePercentiles" : { + "0.0" : 0.864075538285419, + "50.0" : 0.8655494103959934, + "90.0" : 0.866854688745727, + "95.0" : 0.866854688745727, + "99.0" : 0.866854688745727, + "99.9" : 0.866854688745727, + "99.99" : 0.866854688745727, + "99.999" : 0.866854688745727, + "99.9999" : 0.866854688745727, + "100.0" : 0.866854688745727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8659617453318614, + 0.866854688745727 + ], + [ + 0.864075538285419, + 0.8651370754601254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 26552.524153094724, + "scoreError" : 639.1805987554905, + "scoreConfidence" : [ + 25913.343554339233, + 27191.704751850215 + ], + "scorePercentiles" : { + "0.0" : 26180.44553092005, + "50.0" : 26356.254345436864, + "90.0" : 27200.80700737948, + "95.0" : 27200.80700737948, + "99.0" : 27200.80700737948, + "99.9" : 27200.80700737948, + "99.99" : 27200.80700737948, + "99.999" : 27200.80700737948, + "99.9999" : 27200.80700737948, + "100.0" : 27200.80700737948 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 26356.254345436864, + 26236.647378597983, + 26180.44553092005 + ], + [ + 27200.80700737948, + 26956.168602989936, + 26977.190532199587 + ], + [ + 26347.091494468492, + 26352.678896785805, + 26365.433589074324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 52218.80958985782, + "scoreError" : 2879.5912049286203, + "scoreConfidence" : [ + 49339.2183849292, + 55098.40079478644 + ], + "scorePercentiles" : { + "0.0" : 50017.97044480345, + "50.0" : 52649.465625625206, + "90.0" : 53886.84577830227, + "95.0" : 53886.84577830227, + "99.0" : 53886.84577830227, + "99.9" : 53886.84577830227, + "99.99" : 53886.84577830227, + "99.999" : 53886.84577830227, + "99.9999" : 53886.84577830227, + "100.0" : 53886.84577830227 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 50017.97044480345, + 50035.0168865673, + 50041.48226304438 + ], + [ + 53885.89643819377, + 53886.84577830227, + 53842.27665966726 + ], + [ + 52989.15061916798, + 52621.18159334877, + 52649.465625625206 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 331112.89002765866, + "scoreError" : 9506.721360091407, + "scoreConfidence" : [ + 321606.16866756725, + 340619.6113877501 + ], + "scorePercentiles" : { + "0.0" : 324464.0961357516, + "50.0" : 330664.8458155606, + "90.0" : 337893.6958372753, + "95.0" : 337893.6958372753, + "99.0" : 337893.6958372753, + "99.9" : 337893.6958372753, + "99.99" : 337893.6958372753, + "99.999" : 337893.6958372753, + "99.9999" : 337893.6958372753, + "100.0" : 337893.6958372753 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 324886.30850199796, + 325013.14257856936, + 324464.0961357516 + ], + [ + 337864.1532146356, + 337893.6958372753, + 337731.1074636947 + ], + [ + 330875.09724060347, + 330623.5634608391, + 330664.8458155606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 11427.622258229836, + "scoreError" : 324.31758374745107, + "scoreConfidence" : [ + 11103.304674482384, + 11751.939841977288 + ], + "scorePercentiles" : { + "0.0" : 11172.28876683924, + "50.0" : 11487.803492020093, + "90.0" : 11629.032201570599, + "95.0" : 11629.032201570599, + "99.0" : 11629.032201570599, + "99.9" : 11629.032201570599, + "99.99" : 11629.032201570599, + "99.999" : 11629.032201570599, + "99.9999" : 11629.032201570599, + "100.0" : 11629.032201570599 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11483.757824638526, + 11487.803492020093, + 11492.811145806158 + ], + [ + 11191.473096017226, + 11179.267410675857, + 11172.28876683924 + ], + [ + 11629.032201570599, + 11611.247604627724, + 11600.918781873106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 52007.73574828912, + "scoreError" : 2747.6709117774185, + "scoreConfidence" : [ + 49260.0648365117, + 54755.40666006653 + ], + "scorePercentiles" : { + "0.0" : 49772.18481171423, + "50.0" : 53028.99369495013, + "90.0" : 53201.20417305073, + "95.0" : 53201.20417305073, + "99.0" : 53201.20417305073, + "99.9" : 53201.20417305073, + "99.99" : 53201.20417305073, + "99.999" : 53201.20417305073, + "99.9999" : 53201.20417305073, + "100.0" : 53201.20417305073 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 53163.70150610576, + 53165.25671602116, + 53201.20417305073 + ], + [ + 49891.42993843483, + 49826.70391334243, + 49772.18481171423 + ], + [ + 53028.99369495013, + 53042.75352463799, + 52977.393456344726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 519817.1073999086, + "scoreError" : 22899.539550691738, + "scoreConfidence" : [ + 496917.56784921687, + 542716.6469506003 + ], + "scorePercentiles" : { + "0.0" : 501659.81840983196, + "50.0" : 522679.67015104793, + "90.0" : 534125.0044864605, + "95.0" : 534125.0044864605, + "99.0" : 534125.0044864605, + "99.9" : 534125.0044864605, + "99.99" : 534125.0044864605, + "99.999" : 534125.0044864605, + "99.9999" : 534125.0044864605, + "100.0" : 534125.0044864605 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 523641.3408210284, + 522679.67015104793, + 522124.72834542894 + ], + [ + 502553.2957435047, + 501659.81840983196, + 504259.8995058491 + ], + [ + 533653.9709696355, + 534125.0044864605, + 533656.2381663909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 5611.061899727954, + "scoreError" : 199.0334455523655, + "scoreConfidence" : [ + 5412.028454175589, + 5810.09534528032 + ], + "scorePercentiles" : { + "0.0" : 5471.789355523734, + "50.0" : 5604.591856510667, + "90.0" : 5748.895040773562, + "95.0" : 5748.895040773562, + "99.0" : 5748.895040773562, + "99.9" : 5748.895040773562, + "99.99" : 5748.895040773562, + "99.999" : 5748.895040773562, + "99.9999" : 5748.895040773562, + "100.0" : 5748.895040773562 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 5748.895040773562, + 5747.524777559183, + 5743.206077045362 + ], + [ + 5477.598544947824, + 5471.789355523734, + 5472.026265965817 + ], + [ + 5632.66979088397, + 5604.591856510667, + 5601.255388341467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 23867.987814775624, + "scoreError" : 1536.3352111463519, + "scoreConfidence" : [ + 22331.65260362927, + 25404.323025921978 + ], + "scorePercentiles" : { + "0.0" : 22847.395096563116, + "50.0" : 23765.784316195237, + "90.0" : 24989.494894720796, + "95.0" : 24989.494894720796, + "99.0" : 24989.494894720796, + "99.9" : 24989.494894720796, + "99.99" : 24989.494894720796, + "99.999" : 24989.494894720796, + "99.9999" : 24989.494894720796, + "100.0" : 24989.494894720796 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 22877.390001349748, + 22847.395096563116, + 22865.330788454987 + ], + [ + 24989.494894720796, + 24966.94336075499, + 24946.11605536971 + ], + [ + 23819.37460549602, + 23734.06121407601, + 23765.784316195237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 245953.21356996294, + "scoreError" : 4056.5186707154076, + "scoreConfidence" : [ + 241896.69489924752, + 250009.73224067836 + ], + "scorePercentiles" : { + "0.0" : 243425.86234512305, + "50.0" : 245794.41238785794, + "90.0" : 249309.52607698445, + "95.0" : 249309.52607698445, + "99.0" : 249309.52607698445, + "99.9" : 249309.52607698445, + "99.99" : 249309.52607698445, + "99.999" : 249309.52607698445, + "99.9999" : 249309.52607698445, + "100.0" : 249309.52607698445 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 243425.86234512305, + 243637.14963699263, + 243514.4556080456 + ], + [ + 248570.7896895429, + 248742.11399646793, + 249309.52607698445 + ], + [ + 244261.41762536333, + 245794.41238785794, + 246323.19476328883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 23528.336167796446, + "scoreError" : 750.0966191948582, + "scoreConfidence" : [ + 22778.23954860159, + 24278.432786991303 + ], + "scorePercentiles" : { + "0.0" : 23042.671609256584, + "50.0" : 23441.3835416066, + "90.0" : 24124.690474984258, + "95.0" : 24124.690474984258, + "99.0" : 24124.690474984258, + "99.9" : 24124.690474984258, + "99.99" : 24124.690474984258, + "99.999" : 24124.690474984258, + "99.9999" : 24124.690474984258, + "100.0" : 24124.690474984258 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 23042.671609256584, + 23071.787075831264, + 23068.08098868525 + ], + [ + 24124.690474984258, + 24087.042072327695, + 24027.066119336283 + ], + [ + 23435.216268469587, + 23457.08735967048, + 23441.3835416066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 100895.67719469467, + "scoreError" : 5842.513427615709, + "scoreConfidence" : [ + 95053.16376707896, + 106738.19062231037 + ], + "scorePercentiles" : { + "0.0" : 96850.12681348907, + "50.0" : 100614.00032196075, + "90.0" : 105156.68496708658, + "95.0" : 105156.68496708658, + "99.0" : 105156.68496708658, + "99.9" : 105156.68496708658, + "99.99" : 105156.68496708658, + "99.999" : 105156.68496708658, + "99.9999" : 105156.68496708658, + "100.0" : 105156.68496708658 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 105156.68496708658, + 104941.96199051337, + 104970.59175361619 + ], + [ + 97318.89535506097, + 96869.54980481048, + 96850.12681348907 + ], + [ + 100614.00032196075, + 100570.34877055362, + 100768.93497516097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1043337.3049575173, + "scoreError" : 37779.596320040575, + "scoreConfidence" : [ + 1005557.7086374768, + 1081116.901277558 + ], + "scorePercentiles" : { + "0.0" : 1015703.2474101158, + "50.0" : 1047311.917897162, + "90.0" : 1070712.6724839401, + "95.0" : 1070712.6724839401, + "99.0" : 1070712.6724839401, + "99.9" : 1070712.6724839401, + "99.99" : 1070712.6724839401, + "99.999" : 1070712.6724839401, + "99.9999" : 1070712.6724839401, + "100.0" : 1070712.6724839401 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1015929.1653799269, + 1015703.2474101158, + 1015896.6107273466 + ], + [ + 1070712.6724839401, + 1065183.4569176696, + 1065792.1213897474 + ], + [ + 1048437.9009330119, + 1045068.6514787334, + 1047311.917897162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 11315.216474771834, + "scoreError" : 172.02494354923866, + "scoreConfidence" : [ + 11143.191531222596, + 11487.241418321073 + ], + "scorePercentiles" : { + "0.0" : 11231.735644345008, + "50.0" : 11259.25251134355, + "90.0" : 11454.819931776112, + "95.0" : 11454.819931776112, + "99.0" : 11454.819931776112, + "99.9" : 11454.819931776112, + "99.99" : 11454.819931776112, + "99.999" : 11454.819931776112, + "99.9999" : 11454.819931776112, + "100.0" : 11454.819931776112 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11454.819931776112, + 11443.821424852233, + 11452.087348576637 + ], + [ + 11232.920604413812, + 11233.837882043948, + 11231.735644345008 + ], + [ + 11250.457024921698, + 11259.25251134355, + 11278.015900673514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 45224.83568262534, + "scoreError" : 1048.5119689576616, + "scoreConfidence" : [ + 44176.323713667676, + 46273.347651583 + ], + "scorePercentiles" : { + "0.0" : 44360.472011143196, + "50.0" : 45531.788517051406, + "90.0" : 45783.9767695266, + "95.0" : 45783.9767695266, + "99.0" : 45783.9767695266, + "99.9" : 45783.9767695266, + "99.99" : 45783.9767695266, + "99.999" : 45783.9767695266, + "99.9999" : 45783.9767695266, + "100.0" : 45783.9767695266 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 45548.20796990221, + 45531.788517051406, + 45457.03387411303 + ], + [ + 44360.472011143196, + 44439.66910192999, + 44418.26749609125 + ], + [ + 45783.9767695266, + 45742.61839198232, + 45741.48701188804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 443138.7335609501, + "scoreError" : 5074.984883957929, + "scoreConfidence" : [ + 438063.74867699214, + 448213.71844490804 + ], + "scorePercentiles" : { + "0.0" : 438853.1384122526, + "50.0" : 445095.7127915257, + "90.0" : 445728.84810126584, + "95.0" : 445728.84810126584, + "99.0" : 445728.84810126584, + "99.9" : 445728.84810126584, + "99.99" : 445728.84810126584, + "99.999" : 445728.84810126584, + "99.9999" : 445728.84810126584, + "100.0" : 445728.84810126584 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 439968.1464144303, + 438853.1384122526, + 438961.0512685453 + ], + [ + 443190.1281687644, + 445095.7127915257, + 445312.6153092577 + ], + [ + 445728.84810126584, + 445501.1878201987, + 445637.77376231004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6503.243331074969, + "scoreError" : 155.88656306809895, + "scoreConfidence" : [ + 6347.35676800687, + 6659.129894143069 + ], + "scorePercentiles" : { + "0.0" : 6370.511738174869, + "50.0" : 6557.353963186129, + "90.0" : 6577.488689812577, + "95.0" : 6577.488689812577, + "99.0" : 6577.488689812577, + "99.9" : 6577.488689812577, + "99.99" : 6577.488689812577, + "99.999" : 6577.488689812577, + "99.9999" : 6577.488689812577, + "100.0" : 6577.488689812577 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6577.488689812577, + 6566.590325298333, + 6570.458516592181 + ], + [ + 6387.074046326138, + 6370.511738174869, + 6382.5923342190135 + ], + [ + 6565.003626463732, + 6552.1167396017545, + 6557.353963186129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 11867.329269757813, + "scoreError" : 196.04260834659178, + "scoreConfidence" : [ + 11671.28666141122, + 12063.371878104404 + ], + "scorePercentiles" : { + "0.0" : 11746.292867513015, + "50.0" : 11825.349115238892, + "90.0" : 12015.450360638877, + "95.0" : 12015.450360638877, + "99.0" : 12015.450360638877, + "99.9" : 12015.450360638877, + "99.99" : 12015.450360638877, + "99.999" : 12015.450360638877, + "99.9999" : 12015.450360638877, + "100.0" : 12015.450360638877 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11825.349115238892, + 11746.292867513015, + 11913.832032557713 + ], + [ + 11777.689927721174, + 11753.985844854053, + 11766.35859539635 + ], + [ + 11993.450327416647, + 12015.450360638877, + 12013.554356483579 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 71438.27038128191, + "scoreError" : 1509.9384867966066, + "scoreConfidence" : [ + 69928.33189448531, + 72948.20886807851 + ], + "scorePercentiles" : { + "0.0" : 70268.86934433256, + "50.0" : 71282.76049270073, + "90.0" : 72538.75318438996, + "95.0" : 72538.75318438996, + "99.0" : 72538.75318438996, + "99.9" : 72538.75318438996, + "99.99" : 72538.75318438996, + "99.999" : 72538.75318438996, + "99.9999" : 72538.75318438996, + "100.0" : 72538.75318438996 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 72530.55498821396, + 72538.75318438996, + 72388.19837707932 + ], + [ + 70782.79696911784, + 70401.48243162378, + 70268.86934433256 + ], + [ + 71727.89320604227, + 71023.12443803666, + 71282.76049270073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6398709.275408815, + "scoreError" : 126183.5867819212, + "scoreConfidence" : [ + 6272525.688626894, + 6524892.8621907355 + ], + "scorePercentiles" : { + "0.0" : 6291085.297484277, + "50.0" : 6387188.439974457, + "90.0" : 6491328.1239454895, + "95.0" : 6491328.1239454895, + "99.0" : 6491328.1239454895, + "99.9" : 6491328.1239454895, + "99.99" : 6491328.1239454895, + "99.999" : 6491328.1239454895, + "99.9999" : 6491328.1239454895, + "100.0" : 6491328.1239454895 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6491328.1239454895, + 6488077.19001297, + 6481109.981205444 + ], + [ + 6354258.74841169, + 6291085.297484277, + 6310670.466246056 + ], + [ + 6387188.439974457, + 6403043.638924456, + 6381621.5924744895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 6569576.793351535, + "scoreError" : 384954.5853160948, + "scoreConfidence" : [ + 6184622.20803544, + 6954531.378667629 + ], + "scorePercentiles" : { + "0.0" : 6265185.024420789, + "50.0" : 6650287.005984043, + "90.0" : 6793779.208559782, + "95.0" : 6793779.208559782, + "99.0" : 6793779.208559782, + "99.9" : 6793779.208559782, + "99.99" : 6793779.208559782, + "99.999" : 6793779.208559782, + "99.9999" : 6793779.208559782, + "100.0" : 6793779.208559782 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6282970.966080402, + 6269994.820689655, + 6265185.024420789 + ], + [ + 6747180.360755226, + 6789676.959945689, + 6793779.208559782 + ], + [ + 6643032.754316069, + 6684084.039412158, + 6650287.005984043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6478658.767822663, + "scoreError" : 49069.54441114768, + "scoreConfidence" : [ + 6429589.223411515, + 6527728.312233811 + ], + "scorePercentiles" : { + "0.0" : 6437623.745817246, + "50.0" : 6485599.195849546, + "90.0" : 6526921.3568167, + "95.0" : 6526921.3568167, + "99.0" : 6526921.3568167, + "99.9" : 6526921.3568167, + "99.99" : 6526921.3568167, + "99.999" : 6526921.3568167, + "99.9999" : 6526921.3568167, + "100.0" : 6526921.3568167 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6526921.3568167, + 6492636.765736534, + 6506922.867924528 + ], + [ + 6437623.745817246, + 6472031.835058215, + 6450381.75177305 + ], + [ + 6449317.71308833, + 6486493.6783398185, + 6485599.195849546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6376575.1027172785, + "scoreError" : 194988.26138432373, + "scoreConfidence" : [ + 6181586.841332954, + 6571563.364101603 + ], + "scorePercentiles" : { + "0.0" : 6238185.0137157105, + "50.0" : 6369792.822929936, + "90.0" : 6524331.181343771, + "95.0" : 6524331.181343771, + "99.0" : 6524331.181343771, + "99.9" : 6524331.181343771, + "99.99" : 6524331.181343771, + "99.999" : 6524331.181343771, + "99.9999" : 6524331.181343771, + "100.0" : 6524331.181343771 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6524331.181343771, + 6523662.991519895, + 6487411.79766537 + ], + [ + 6369792.822929936, + 6368797.631444939, + 6379426.840561224 + ], + [ + 6244740.780274657, + 6252826.865, + 6238185.0137157105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 6263376.655796844, + "scoreError" : 223312.4731747562, + "scoreConfidence" : [ + 6040064.182622087, + 6486689.1289716 + ], + "scorePercentiles" : { + "0.0" : 6147048.186846958, + "50.0" : 6200365.234345939, + "90.0" : 6453870.472258065, + "95.0" : 6453870.472258065, + "99.0" : 6453870.472258065, + "99.9" : 6453870.472258065, + "99.99" : 6453870.472258065, + "99.999" : 6453870.472258065, + "99.9999" : 6453870.472258065, + "100.0" : 6453870.472258065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6441251.466194462, + 6418451.837075048, + 6453870.472258065 + ], + [ + 6147048.186846958, + 6148743.549477566, + 6159800.388546798 + ], + [ + 6202072.626782393, + 6200365.234345939, + 6198786.140644362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6448861.512850301, + "scoreError" : 94674.30577495846, + "scoreConfidence" : [ + 6354187.207075343, + 6543535.81862526 + ], + "scorePercentiles" : { + "0.0" : 6392429.194249202, + "50.0" : 6421305.336970475, + "90.0" : 6533245.871325931, + "95.0" : 6533245.871325931, + "99.0" : 6533245.871325931, + "99.9" : 6533245.871325931, + "99.99" : 6533245.871325931, + "99.999" : 6533245.871325931, + "99.9999" : 6533245.871325931, + "100.0" : 6533245.871325931 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6533245.871325931, + 6506297.143786597, + 6526423.699282452 + ], + [ + 6392429.194249202, + 6431628.632154341, + 6403075.450704225 + ], + [ + 6411964.421794872, + 6413383.865384615, + 6421305.336970475 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json b/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json new file mode 100644 index 0000000000..45bd9b817a --- /dev/null +++ b/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json @@ -0,0 +1,1161 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4274036884572663, + "scoreError" : 0.024762764818203227, + "scoreConfidence" : [ + 3.402640923639063, + 3.4521664532754697 + ], + "scorePercentiles" : { + "0.0" : 3.4228175390638214, + "50.0" : 3.427351229060756, + "90.0" : 3.4320947566437314, + "95.0" : 3.4320947566437314, + "99.0" : 3.4320947566437314, + "99.9" : 3.4320947566437314, + "99.99" : 3.4320947566437314, + "99.999" : 3.4320947566437314, + "99.9999" : 3.4320947566437314, + "100.0" : 3.4320947566437314 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4280617857617046, + 3.4320947566437314 + ], + [ + 3.4228175390638214, + 3.4266406723598073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7317595392033245, + "scoreError" : 0.007202794691721973, + "scoreConfidence" : [ + 1.7245567445116026, + 1.7389623338950464 + ], + "scorePercentiles" : { + "0.0" : 1.730142448238231, + "50.0" : 1.7321035723481373, + "90.0" : 1.7326885638787919, + "95.0" : 1.7326885638787919, + "99.0" : 1.7326885638787919, + "99.9" : 1.7326885638787919, + "99.99" : 1.7326885638787919, + "99.999" : 1.7326885638787919, + "99.9999" : 1.7326885638787919, + "100.0" : 1.7326885638787919 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7320245712018445, + 1.7326885638787919 + ], + [ + 1.730142448238231, + 1.7321825734944303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696805774263187, + "scoreError" : 0.0034440948327385066, + "scoreConfidence" : [ + 0.8662364825935801, + 0.8731246722590572 + ], + "scorePercentiles" : { + "0.0" : 0.8691513855289171, + "50.0" : 0.8696254417977733, + "90.0" : 0.8703200405808109, + "95.0" : 0.8703200405808109, + "99.0" : 0.8703200405808109, + "99.9" : 0.8703200405808109, + "99.99" : 0.8703200405808109, + "99.999" : 0.8703200405808109, + "99.9999" : 0.8703200405808109, + "100.0" : 0.8703200405808109 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8699057612066945, + 0.8703200405808109 + ], + [ + 0.8693451223888521, + 0.8691513855289171 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 43.725382690111864, + "scoreError" : 1.2467483817498346, + "scoreConfidence" : [ + 42.47863430836203, + 44.972131071861696 + ], + "scorePercentiles" : { + "0.0" : 42.878972567778796, + "50.0" : 43.657222701719, + "90.0" : 44.64471078475697, + "95.0" : 44.64471078475697, + "99.0" : 44.64471078475697, + "99.9" : 44.64471078475697, + "99.99" : 44.64471078475697, + "99.999" : 44.64471078475697, + "99.9999" : 44.64471078475697, + "100.0" : 44.64471078475697 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.56080073698337, + 44.64471078475697, + 44.63330805860265 + ], + [ + 42.878972567778796, + 42.90726413527759, + 42.9272503303202 + ], + [ + 43.65377670524797, + 43.657222701719, + 43.66513819032023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 43.51101417312418, + "scoreError" : 1.3039758175367824, + "scoreConfidence" : [ + 42.2070383555874, + 44.81498999066096 + ], + "scorePercentiles" : { + "0.0" : 42.46074799798999, + "50.0" : 43.919897336473376, + "90.0" : 44.14038266172348, + "95.0" : 44.14038266172348, + "99.0" : 44.14038266172348, + "99.9" : 44.14038266172348, + "99.99" : 44.14038266172348, + "99.999" : 44.14038266172348, + "99.9999" : 44.14038266172348, + "100.0" : 44.14038266172348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.13510746298949, + 44.11681928133372, + 44.14038266172348 + ], + [ + 43.89040451298183, + 43.94458681643863, + 43.919897336473376 + ], + [ + 42.46074799798999, + 42.48649199343833, + 42.50468949474879 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.05188249344848197, + "scoreError" : 0.0016286800311858416, + "scoreConfidence" : [ + 0.05025381341729613, + 0.05351117347966781 + ], + "scorePercentiles" : { + "0.0" : 0.05066552862050097, + "50.0" : 0.05210605107363002, + "90.0" : 0.052883179308193064, + "95.0" : 0.052883179308193064, + "99.0" : 0.052883179308193064, + "99.9" : 0.052883179308193064, + "99.99" : 0.052883179308193064, + "99.999" : 0.052883179308193064, + "99.9999" : 0.052883179308193064, + "100.0" : 0.052883179308193064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.050668343981962356, + 0.05066552862050097, + 0.050671809669066786 + ], + [ + 0.0521102071869268, + 0.052101387525008334, + 0.05210605107363002 + ], + [ + 0.05288311202068758, + 0.052883179308193064, + 0.05285282165036177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33817752867976947, + "scoreError" : 0.01650232636616941, + "scoreConfidence" : [ + 0.3216752023136001, + 0.35467985504593885 + ], + "scorePercentiles" : { + "0.0" : 0.3254714952483239, + "50.0" : 0.3396426453267219, + "90.0" : 0.34879158770185903, + "95.0" : 0.34879158770185903, + "99.0" : 0.34879158770185903, + "99.9" : 0.34879158770185903, + "99.99" : 0.34879158770185903, + "99.999" : 0.34879158770185903, + "99.9999" : 0.34879158770185903, + "100.0" : 0.34879158770185903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34038622288028864, + 0.3396426453267219, + 0.3394560875084861 + ], + [ + 0.34879158770185903, + 0.34850733047569266, + 0.34845366375135023 + ], + [ + 0.3271867593901322, + 0.32570196583507033, + 0.3254714952483239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.0527440308189436, + "scoreError" : 7.295368504205332E-4, + "scoreConfidence" : [ + 0.05201449396852306, + 0.05347356766936413 + ], + "scorePercentiles" : { + "0.0" : 0.05218023944147021, + "50.0" : 0.05290051550754614, + "90.0" : 0.053163110423544546, + "95.0" : 0.053163110423544546, + "99.0" : 0.053163110423544546, + "99.9" : 0.053163110423544546, + "99.99" : 0.053163110423544546, + "99.999" : 0.053163110423544546, + "99.9999" : 0.053163110423544546, + "100.0" : 0.053163110423544546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0529105015846477, + 0.05289031704685492, + 0.05290051550754614 + ], + [ + 0.05218363736602064, + 0.052186375219179224, + 0.05218023944147021 + ], + [ + 0.053163110423544546, + 0.05316134911141944, + 0.053120231669809566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5202083735295633, + "scoreError" : 0.03190522031978566, + "scoreConfidence" : [ + 0.48830315320977763, + 0.552113593849349 + ], + "scorePercentiles" : { + "0.0" : 0.49537793248129985, + "50.0" : 0.5277170549868074, + "90.0" : 0.5377159787073879, + "95.0" : 0.5377159787073879, + "99.0" : 0.5377159787073879, + "99.9" : 0.5377159787073879, + "99.99" : 0.5377159787073879, + "99.999" : 0.5377159787073879, + "99.9999" : 0.5377159787073879, + "100.0" : 0.5377159787073879 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5372063835947573, + 0.5372449502524981, + 0.5377159787073879 + ], + [ + 0.5277170549868074, + 0.5284748000845532, + 0.5269452361155021 + ], + [ + 0.49537793248129985, + 0.4955745880370682, + 0.4956184375061949 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.02330213170499937, + "scoreError" : 8.600355254300683E-4, + "scoreConfidence" : [ + 0.022442096179569302, + 0.02416216723042944 + ], + "scorePercentiles" : { + "0.0" : 0.022813897548678522, + "50.0" : 0.023125910827642506, + "90.0" : 0.02400309627284467, + "95.0" : 0.02400309627284467, + "99.0" : 0.02400309627284467, + "99.9" : 0.02400309627284467, + "99.99" : 0.02400309627284467, + "99.999" : 0.02400309627284467, + "99.9999" : 0.02400309627284467, + "100.0" : 0.02400309627284467 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.02400309627284467, + 0.02393782406913143, + 0.0239411025073199 + ], + [ + 0.023125910827642506, + 0.023130867757813513, + 0.02312172802480468 + ], + [ + 0.022815617882190817, + 0.022813897548678522, + 0.022829140454568284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.24497773765850908, + "scoreError" : 0.01858056660717018, + "scoreConfidence" : [ + 0.2263971710513389, + 0.2635583042656793 + ], + "scorePercentiles" : { + "0.0" : 0.23287860653905268, + "50.0" : 0.24373483102196009, + "90.0" : 0.2584875260545906, + "95.0" : 0.2584875260545906, + "99.0" : 0.2584875260545906, + "99.9" : 0.2584875260545906, + "99.99" : 0.2584875260545906, + "99.999" : 0.2584875260545906, + "99.9999" : 0.2584875260545906, + "100.0" : 0.2584875260545906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.24291845883838997, + 0.24373483102196009, + 0.244542229520223 + ], + [ + 0.23289833480832828, + 0.232887405798789, + 0.23287860653905268 + ], + [ + 0.2583865650983128, + 0.2580656812469356, + 0.2584875260545906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.10041460423244533, + "scoreError" : 0.00344695704530663, + "scoreConfidence" : [ + 0.0969676471871387, + 0.10386156127775197 + ], + "scorePercentiles" : { + "0.0" : 0.09789638518844836, + "50.0" : 0.09973601610715496, + "90.0" : 0.10319401726415289, + "95.0" : 0.10319401726415289, + "99.0" : 0.10319401726415289, + "99.9" : 0.10319401726415289, + "99.99" : 0.10319401726415289, + "99.999" : 0.10319401726415289, + "99.9999" : 0.10319401726415289, + "100.0" : 0.10319401726415289 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0997753193151546, + 0.09973601610715496, + 0.09968744761999701 + ], + [ + 0.10319401726415289, + 0.10292642249737541, + 0.10296189465122266 + ], + [ + 0.09890774312108085, + 0.09864619232742124, + 0.09789638518844836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0159083973122576, + "scoreError" : 0.02939051680419365, + "scoreConfidence" : [ + 0.9865178805080639, + 1.0452989141164513 + ], + "scorePercentiles" : { + "0.0" : 1.0011459455400942, + "50.0" : 1.0057589681182741, + "90.0" : 1.0412337920874544, + "95.0" : 1.0412337920874544, + "99.0" : 1.0412337920874544, + "99.9" : 1.0412337920874544, + "99.99" : 1.0412337920874544, + "99.999" : 1.0412337920874544, + "99.9999" : 1.0412337920874544, + "100.0" : 1.0412337920874544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.009501218958207, + 1.005332541314837, + 1.0057589681182741 + ], + [ + 1.0412337920874544, + 1.0381442229834943, + 1.0374625426348547 + ], + [ + 1.003403861141768, + 1.0011924830313346, + 1.0011459455400942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.04436857258557735, + "scoreError" : 0.001215658707935488, + "scoreConfidence" : [ + 0.04315291387764186, + 0.04558423129351284 + ], + "scorePercentiles" : { + "0.0" : 0.04356789100771141, + "50.0" : 0.04423132656897566, + "90.0" : 0.04526977572758838, + "95.0" : 0.04526977572758838, + "99.0" : 0.04526977572758838, + "99.9" : 0.04526977572758838, + "99.99" : 0.04526977572758838, + "99.999" : 0.04526977572758838, + "99.9999" : 0.04526977572758838, + "100.0" : 0.04526977572758838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04427510071104736, + 0.04423132656897566, + 0.04421848874876743 + ], + [ + 0.043641449038373414, + 0.04356789100771141, + 0.04360398981424959 + ], + [ + 0.045260049685898945, + 0.04526977572758838, + 0.045249081967584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4358362930061064, + "scoreError" : 0.00755290990194395, + "scoreConfidence" : [ + 0.4282833831041624, + 0.44338920290805034 + ], + "scorePercentiles" : { + "0.0" : 0.4298716314477304, + "50.0" : 0.4364674297747905, + "90.0" : 0.44085744850996295, + "95.0" : 0.44085744850996295, + "99.0" : 0.44085744850996295, + "99.9" : 0.44085744850996295, + "99.99" : 0.44085744850996295, + "99.999" : 0.44085744850996295, + "99.9999" : 0.44085744850996295, + "100.0" : 0.44085744850996295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4368088904953263, + 0.4364674297747905, + 0.43620555661694144 + ], + [ + 0.44085744850996295, + 0.4406312695747962, + 0.44042787976746234 + ], + [ + 0.43134281193926843, + 0.4299137189286789, + 0.4298716314477304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.011722568660637263, + "scoreError" : 2.1956260875161603E-4, + "scoreConfidence" : [ + 0.011503006051885646, + 0.01194213126938888 + ], + "scorePercentiles" : { + "0.0" : 0.011542314397607535, + "50.0" : 0.011800895635252648, + "90.0" : 0.011824917085953011, + "95.0" : 0.011824917085953011, + "99.0" : 0.011824917085953011, + "99.9" : 0.011824917085953011, + "99.99" : 0.011824917085953011, + "99.999" : 0.011824917085953011, + "99.9999" : 0.011824917085953011, + "100.0" : 0.011824917085953011 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011550013690086382, + 0.011542314397607535, + 0.01155425209245146 + ], + [ + 0.011824917085953011, + 0.011808919938877789, + 0.01182250247441645 + ], + [ + 0.011800895635252648, + 0.01179528595810834, + 0.011804016672981744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0698523009710762, + "scoreError" : 0.0014210968304418292, + "scoreConfidence" : [ + 0.06843120414063437, + 0.07127339780151802 + ], + "scorePercentiles" : { + "0.0" : 0.06866273061342196, + "50.0" : 0.07006469910388363, + "90.0" : 0.07072980937157407, + "95.0" : 0.07072980937157407, + "99.0" : 0.07072980937157407, + "99.9" : 0.07072980937157407, + "99.99" : 0.07072980937157407, + "99.999" : 0.07072980937157407, + "99.9999" : 0.07072980937157407, + "100.0" : 0.07072980937157407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07070594901472782, + 0.07072980937157407, + 0.07066807764877146 + ], + [ + 0.06896519448563133, + 0.06874885908056566, + 0.06866273061342196 + ], + [ + 0.07010626623108039, + 0.07006469910388363, + 0.07001912319002941 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 2.2874525121049147E7, + "scoreError" : 920787.4900115487, + "scoreConfidence" : [ + 2.1953737631037597E7, + 2.3795312611060698E7 + ], + "scorePercentiles" : { + "0.0" : 2.240210304474273E7, + "50.0" : 2.2565303896396395E7, + "90.0" : 2.3641611439716313E7, + "95.0" : 2.3641611439716313E7, + "99.0" : 2.3641611439716313E7, + "99.9" : 2.3641611439716313E7, + "99.99" : 2.3641611439716313E7, + "99.999" : 2.3641611439716313E7, + "99.9999" : 2.3641611439716313E7, + "100.0" : 2.3641611439716313E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.3641611439716313E7, + 2.359826475471698E7, + 2.3560848635294117E7 + ], + [ + 2.2503107015730336E7, + 2.2443770878923766E7, + 2.240210304474273E7 + ], + [ + 2.2591522221218962E7, + 2.25641942027027E7, + 2.2565303896396395E7 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.3047301492169302E7, + "scoreError" : 309261.7454961725, + "scoreConfidence" : [ + 2.273803974667313E7, + 2.3356563237665474E7 + ], + "scorePercentiles" : { + "0.0" : 2.284278906392694E7, + "50.0" : 2.2973325006880734E7, + "90.0" : 2.3301097169767443E7, + "95.0" : 2.3301097169767443E7, + "99.0" : 2.3301097169767443E7, + "99.9" : 2.3301097169767443E7, + "99.99" : 2.3301097169767443E7, + "99.999" : 2.3301097169767443E7, + "99.9999" : 2.3301097169767443E7, + "100.0" : 2.3301097169767443E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.319061096064815E7, + 2.2973325006880734E7, + 2.2951058389908258E7 + ], + [ + 2.2868141162100457E7, + 2.2856062216894977E7, + 2.284278906392694E7 + ], + [ + 2.3301097169767443E7, + 2.323164748491879E7, + 2.3210981974477958E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json b/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json new file mode 100644 index 0000000000..94b24bdf8f --- /dev/null +++ b/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4240890205405137, + "scoreError" : 0.03936617511364664, + "scoreConfidence" : [ + 3.384722845426867, + 3.46345519565416 + ], + "scorePercentiles" : { + "0.0" : 3.416280112766159, + "50.0" : 3.424803993008525, + "90.0" : 3.4304679833788474, + "95.0" : 3.4304679833788474, + "99.0" : 3.4304679833788474, + "99.9" : 3.4304679833788474, + "99.99" : 3.4304679833788474, + "99.999" : 3.4304679833788474, + "99.9999" : 3.4304679833788474, + "100.0" : 3.4304679833788474 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4268828533900053, + 3.4304679833788474 + ], + [ + 3.416280112766159, + 3.4227251326270443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7289182439981992, + "scoreError" : 0.009875088289429172, + "scoreConfidence" : [ + 1.71904315570877, + 1.7387933322876283 + ], + "scorePercentiles" : { + "0.0" : 1.7275909081867116, + "50.0" : 1.728819061863204, + "90.0" : 1.7304439440796775, + "95.0" : 1.7304439440796775, + "99.0" : 1.7304439440796775, + "99.9" : 1.7304439440796775, + "99.99" : 1.7304439440796775, + "99.999" : 1.7304439440796775, + "99.9999" : 1.7304439440796775, + "100.0" : 1.7304439440796775 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7300225473819377, + 1.7304439440796775 + ], + [ + 1.7275909081867116, + 1.7276155763444705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700132941789567, + "scoreError" : 0.0021170309298315024, + "scoreConfidence" : [ + 0.8678962632491252, + 0.8721303251087882 + ], + "scorePercentiles" : { + "0.0" : 0.8695372797886042, + "50.0" : 0.8701173884345118, + "90.0" : 0.870281120058199, + "95.0" : 0.870281120058199, + "99.0" : 0.870281120058199, + "99.9" : 0.870281120058199, + "99.99" : 0.870281120058199, + "99.999" : 0.870281120058199, + "99.9999" : 0.870281120058199, + "100.0" : 0.870281120058199 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695372797886042, + 0.8700857738212587 + ], + [ + 0.8701490030477649, + 0.870281120058199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 42.64160574403351, + "scoreError" : 1.3640765499826009, + "scoreConfidence" : [ + 41.27752919405091, + 44.00568229401611 + ], + "scorePercentiles" : { + "0.0" : 41.707744537786546, + "50.0" : 42.49634829304081, + "90.0" : 43.71206456211418, + "95.0" : 43.71206456211418, + "99.0" : 43.71206456211418, + "99.9" : 43.71206456211418, + "99.99" : 43.71206456211418, + "99.999" : 43.71206456211418, + "99.9999" : 43.71206456211418, + "100.0" : 43.71206456211418 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.707744537786546, + 41.77952555912812, + 41.87837244221971 + ], + [ + 43.71206456211418, + 43.60545355674085, + 43.60775354052616 + ], + [ + 42.50645826039412, + 42.48073094435115, + 42.49634829304081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34440201171656104, + "scoreError" : 0.004486131561743835, + "scoreConfidence" : [ + 0.3399158801548172, + 0.34888814327830486 + ], + "scorePercentiles" : { + "0.0" : 0.34078550754813425, + "50.0" : 0.34573783564390664, + "90.0" : 0.3467770228517928, + "95.0" : 0.3467770228517928, + "99.0" : 0.3467770228517928, + "99.9" : 0.3467770228517928, + "99.99" : 0.3467770228517928, + "99.999" : 0.3467770228517928, + "99.9999" : 0.3467770228517928, + "100.0" : 0.3467770228517928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3466564419717138, + 0.34573783564390664, + 0.3454683490862611 + ], + [ + 0.34078550754813425, + 0.341077951739427, + 0.3407947371183206 + ], + [ + 0.3467770228517928, + 0.3460057300532835, + 0.34631452943621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5108566930793287, + "scoreError" : 0.01673376640611887, + "scoreConfidence" : [ + 0.49412292667320984, + 0.5275904594854476 + ], + "scorePercentiles" : { + "0.0" : 0.4975432007562565, + "50.0" : 0.5133298237347295, + "90.0" : 0.5213933500521376, + "95.0" : 0.5213933500521376, + "99.0" : 0.5213933500521376, + "99.9" : 0.5213933500521376, + "99.99" : 0.5213933500521376, + "99.999" : 0.5213933500521376, + "99.9999" : 0.5213933500521376, + "100.0" : 0.5213933500521376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5133298237347295, + 0.5134748340521668, + 0.5125813436699128 + ], + [ + 0.49966809073648444, + 0.49803418884462153, + 0.4975432007562565 + ], + [ + 0.5213933500521376, + 0.5209760688200052, + 0.5207093370476439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.22985229142533534, + "scoreError" : 0.009007513978974728, + "scoreConfidence" : [ + 0.2208447774463606, + 0.23885980540431007 + ], + "scorePercentiles" : { + "0.0" : 0.2246681499179978, + "50.0" : 0.2278689162375245, + "90.0" : 0.237023872223934, + "95.0" : 0.237023872223934, + "99.0" : 0.237023872223934, + "99.9" : 0.237023872223934, + "99.99" : 0.237023872223934, + "99.999" : 0.237023872223934, + "99.9999" : 0.237023872223934, + "100.0" : 0.237023872223934 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2278689162375245, + 0.22774250177636074, + 0.22795436086986254 + ], + [ + 0.22517435144446196, + 0.2246681499179978, + 0.2248926582634313 + ], + [ + 0.237023872223934, + 0.23653219364223374, + 0.2368136184522118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0276159079256935, + "scoreError" : 0.03894493523763066, + "scoreConfidence" : [ + 0.9886709726880628, + 1.0665608431633242 + ], + "scorePercentiles" : { + "0.0" : 1.0002823356671335, + "50.0" : 1.0272291300328678, + "90.0" : 1.0546416500052727, + "95.0" : 1.0546416500052727, + "99.0" : 1.0546416500052727, + "99.9" : 1.0546416500052727, + "99.99" : 1.0546416500052727, + "99.999" : 1.0546416500052727, + "99.9999" : 1.0546416500052727, + "100.0" : 1.0546416500052727 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0546416500052727, + 1.054312120177103, + 1.0531231917649537 + ], + [ + 1.0005659335667834, + 1.0002823356671335, + 1.0008482301841473 + ], + [ + 1.0303489075829384, + 1.0272291300328678, + 1.0271916723500412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.43364130483497326, + "scoreError" : 0.00832028889387276, + "scoreConfidence" : [ + 0.4253210159411005, + 0.441961593728846 + ], + "scorePercentiles" : { + "0.0" : 0.42869411788914136, + "50.0" : 0.43192799589686004, + "90.0" : 0.4409237714285714, + "95.0" : 0.4409237714285714, + "99.0" : 0.4409237714285714, + "99.9" : 0.4409237714285714, + "99.99" : 0.4409237714285714, + "99.999" : 0.4409237714285714, + "99.9999" : 0.4409237714285714, + "100.0" : 0.4409237714285714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4409237714285714, + 0.4396748718839305, + 0.4388150212383167 + ], + [ + 0.4287206548915373, + 0.42869411788914136, + 0.4290466350609233 + ], + [ + 0.43398500785488003, + 0.43192799589686004, + 0.4309836673705986 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07000095626907243, + "scoreError" : 0.0014089190015736848, + "scoreConfidence" : [ + 0.06859203726749875, + 0.07140987527064611 + ], + "scorePercentiles" : { + "0.0" : 0.06913664714503985, + "50.0" : 0.06945898296891062, + "90.0" : 0.07108060061981121, + "95.0" : 0.07108060061981121, + "99.0" : 0.07108060061981121, + "99.9" : 0.07108060061981121, + "99.99" : 0.07108060061981121, + "99.999" : 0.07108060061981121, + "99.9999" : 0.07108060061981121, + "100.0" : 0.07108060061981121 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07108060061981121, + 0.06928036679298614, + 0.06945898296891062 + ], + [ + 0.0692402498563288, + 0.06913664714503985, + 0.06942358199868097 + ], + [ + 0.07097093614137184, + 0.0708561556971084, + 0.07056108520141402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.315031757691618E7, + "scoreError" : 834203.297699478, + "scoreConfidence" : [ + 2.2316114279216703E7, + 2.3984520874615658E7 + ], + "scorePercentiles" : { + "0.0" : 2.251475790786517E7, + "50.0" : 2.3254453705336425E7, + "90.0" : 2.3667659647754136E7, + "95.0" : 2.3667659647754136E7, + "99.0" : 2.3667659647754136E7, + "99.9" : 2.3667659647754136E7, + "99.99" : 2.3667659647754136E7, + "99.999" : 2.3667659647754136E7, + "99.9999" : 2.3667659647754136E7, + "100.0" : 2.3667659647754136E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.3667659647754136E7, + 2.3658213401891254E7, + 2.366260164066194E7 + ], + [ + 2.251475790786517E7, + 2.2533523272522524E7, + 2.2547165313063063E7 + ], + [ + 2.3254453705336425E7, + 2.32293066450116E7, + 2.3285176658139534E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json b/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json new file mode 100644 index 0000000000..30667dd796 --- /dev/null +++ b/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4022546195396735, + "scoreError" : 0.017482973489114994, + "scoreConfidence" : [ + 3.3847716460505586, + 3.4197375930287883 + ], + "scorePercentiles" : { + "0.0" : 3.3988796541507518, + "50.0" : 3.4023760846252484, + "90.0" : 3.4053866547574443, + "95.0" : 3.4053866547574443, + "99.0" : 3.4053866547574443, + "99.9" : 3.4053866547574443, + "99.99" : 3.4053866547574443, + "99.999" : 3.4053866547574443, + "99.9999" : 3.4053866547574443, + "100.0" : 3.4053866547574443 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.401772014494162, + 3.4029801547563348 + ], + [ + 3.3988796541507518, + 3.4053866547574443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7196663533286398, + "scoreError" : 0.014536449828748476, + "scoreConfidence" : [ + 1.7051299034998912, + 1.7342028031573884 + ], + "scorePercentiles" : { + "0.0" : 1.7174594833968682, + "50.0" : 1.7194137156433158, + "90.0" : 1.722378498631059, + "95.0" : 1.722378498631059, + "99.0" : 1.722378498631059, + "99.9" : 1.722378498631059, + "99.99" : 1.722378498631059, + "99.999" : 1.722378498631059, + "99.9999" : 1.722378498631059, + "100.0" : 1.722378498631059 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7174594833968682, + 1.720602732042664 + ], + [ + 1.7182246992439676, + 1.722378498631059 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8642645143308028, + "scoreError" : 0.0034989436549679176, + "scoreConfidence" : [ + 0.8607655706758348, + 0.8677634579857707 + ], + "scorePercentiles" : { + "0.0" : 0.8635509397774016, + "50.0" : 0.8643195138315781, + "90.0" : 0.8648680898826532, + "95.0" : 0.8648680898826532, + "99.0" : 0.8648680898826532, + "99.9" : 0.8648680898826532, + "99.99" : 0.8648680898826532, + "99.999" : 0.8648680898826532, + "99.9999" : 0.8648680898826532, + "100.0" : 0.8648680898826532 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8643220007966118, + 0.8648680898826532 + ], + [ + 0.8635509397774016, + 0.8643170268665444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 37.92108556259461, + "scoreError" : 2.1803773481991127, + "scoreConfidence" : [ + 35.7407082143955, + 40.10146291079373 + ], + "scorePercentiles" : { + "0.0" : 36.7907295161254, + "50.0" : 37.1257475248306, + "90.0" : 39.74442108757022, + "95.0" : 39.74442108757022, + "99.0" : 39.74442108757022, + "99.9" : 39.74442108757022, + "99.99" : 39.74442108757022, + "99.999" : 39.74442108757022, + "99.9999" : 39.74442108757022, + "100.0" : 39.74442108757022 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 37.093128965232616, + 37.108901583866064, + 36.7907295161254 + ], + [ + 37.1257475248306, + 37.04892454527629, + 37.19742750402842 + ], + [ + 39.464342600993746, + 39.74442108757022, + 39.716146735428204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.35038660216748957, + "scoreError" : 0.0036178241546157524, + "scoreConfidence" : [ + 0.3467687780128738, + 0.3540044263221053 + ], + "scorePercentiles" : { + "0.0" : 0.34693029758889854, + "50.0" : 0.3503044037760964, + "90.0" : 0.3537241296381451, + "95.0" : 0.3537241296381451, + "99.0" : 0.3537241296381451, + "99.9" : 0.3537241296381451, + "99.99" : 0.3537241296381451, + "99.999" : 0.3537241296381451, + "99.9999" : 0.3537241296381451, + "100.0" : 0.3537241296381451 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3537241296381451, + 0.3500387195211593, + 0.3499470267697799 + ], + [ + 0.35256384406839414, + 0.3510276912492541, + 0.35132210816792553 + ], + [ + 0.3503044037760964, + 0.34762119872775304, + 0.34693029758889854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5133334808724517, + "scoreError" : 0.004854914945014691, + "scoreConfidence" : [ + 0.508478565927437, + 0.5181883958174663 + ], + "scorePercentiles" : { + "0.0" : 0.5105533991422883, + "50.0" : 0.5127151179697513, + "90.0" : 0.517916162773836, + "95.0" : 0.517916162773836, + "99.0" : 0.517916162773836, + "99.9" : 0.517916162773836, + "99.99" : 0.517916162773836, + "99.999" : 0.517916162773836, + "99.9999" : 0.517916162773836, + "100.0" : 0.517916162773836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5110045925907001, + 0.5107955352436409, + 0.5110505164554374 + ], + [ + 0.517916162773836, + 0.516407525690679, + 0.5166440658710477 + ], + [ + 0.5127151179697513, + 0.5129144121146844, + 0.5105533991422883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.24284745478312963, + "scoreError" : 0.01049551718919714, + "scoreConfidence" : [ + 0.2323519375939325, + 0.2533429719723268 + ], + "scorePercentiles" : { + "0.0" : 0.23525882779306936, + "50.0" : 0.24295487135881053, + "90.0" : 0.2516049401197605, + "95.0" : 0.2516049401197605, + "99.0" : 0.2516049401197605, + "99.9" : 0.2516049401197605, + "99.99" : 0.2516049401197605, + "99.999" : 0.2516049401197605, + "99.9999" : 0.2516049401197605, + "100.0" : 0.2516049401197605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.24295487135881053, + 0.2430232010012394, + 0.2428598038468077 + ], + [ + 0.2492799530373657, + 0.24897829017801568, + 0.2516049401197605 + ], + [ + 0.23538877749270312, + 0.23627842822039505, + 0.23525882779306936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0144827414344384, + "scoreError" : 0.040590136169010034, + "scoreConfidence" : [ + 0.9738926052654283, + 1.0550728776034484 + ], + "scorePercentiles" : { + "0.0" : 0.9830720440381402, + "50.0" : 1.019898655109117, + "90.0" : 1.039894017988978, + "95.0" : 1.039894017988978, + "99.0" : 1.039894017988978, + "99.9" : 1.039894017988978, + "99.99" : 1.039894017988978, + "99.999" : 1.039894017988978, + "99.9999" : 1.039894017988978, + "100.0" : 1.039894017988978 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0388163423704166, + 1.0388171291160277, + 1.039894017988978 + ], + [ + 1.0213398724468954, + 1.019898655109117, + 1.0187678639095448 + ], + [ + 0.9838052153467781, + 0.9830720440381402, + 0.9859335325840481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.43793185003198876, + "scoreError" : 0.007114234387317298, + "scoreConfidence" : [ + 0.43081761564467147, + 0.44504608441930604 + ], + "scorePercentiles" : { + "0.0" : 0.43224321594052556, + "50.0" : 0.4372556124786848, + "90.0" : 0.4434983154020134, + "95.0" : 0.4434983154020134, + "99.0" : 0.4434983154020134, + "99.9" : 0.4434983154020134, + "99.99" : 0.4434983154020134, + "99.999" : 0.4434983154020134, + "99.9999" : 0.4434983154020134, + "100.0" : 0.4434983154020134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4380310428821726, + 0.43682558900100465, + 0.43433328165038004 + ], + [ + 0.44269590252324037, + 0.4434983154020134, + 0.44286145321287806 + ], + [ + 0.4372556124786848, + 0.43224321594052556, + 0.43364223719699924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07028972787073305, + "scoreError" : 5.179855389906926E-4, + "scoreConfidence" : [ + 0.06977174233174235, + 0.07080771340972375 + ], + "scorePercentiles" : { + "0.0" : 0.06970817791269919, + "50.0" : 0.07033018202533248, + "90.0" : 0.07068447294240719, + "95.0" : 0.07068447294240719, + "99.0" : 0.07068447294240719, + "99.9" : 0.07068447294240719, + "99.99" : 0.07068447294240719, + "99.999" : 0.07068447294240719, + "99.9999" : 0.07068447294240719, + "100.0" : 0.07068447294240719 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06994119092314256, + 0.06970817791269919, + 0.07017967310904319 + ], + [ + 0.07031189624963087, + 0.07056519143351092, + 0.07033018202533248 + ], + [ + 0.0705037038261691, + 0.07038306241466195, + 0.07068447294240719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.6797161614550885E7, + "scoreError" : 1219300.8546828355, + "scoreConfidence" : [ + 2.5577860759868048E7, + 2.801646246923372E7 + ], + "scorePercentiles" : { + "0.0" : 2.616316707310705E7, + "50.0" : 2.6336108715789475E7, + "90.0" : 2.7772019864265926E7, + "95.0" : 2.7772019864265926E7, + "99.0" : 2.7772019864265926E7, + "99.9" : 2.7772019864265926E7, + "99.99" : 2.7772019864265926E7, + "99.999" : 2.7772019864265926E7, + "99.9999" : 2.7772019864265926E7, + "100.0" : 2.7772019864265926E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.7772019864265926E7, + 2.770387028531856E7, + 2.7753106371191137E7 + ], + [ + 2.6267871010498688E7, + 2.616316707310705E7, + 2.6336108715789475E7 + ], + [ + 2.620666960209424E7, + 2.6275712790026248E7, + 2.6695928818666667E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json b/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json new file mode 100644 index 0000000000..9ff60cd618 --- /dev/null +++ b/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.404690960666666, + "scoreError" : 0.03044852968952923, + "scoreConfidence" : [ + 3.374242430977137, + 3.4351394903561956 + ], + "scorePercentiles" : { + "0.0" : 3.400213854643417, + "50.0" : 3.4045940175499285, + "90.0" : 3.4093619529233923, + "95.0" : 3.4093619529233923, + "99.0" : 3.4093619529233923, + "99.9" : 3.4093619529233923, + "99.99" : 3.4093619529233923, + "99.999" : 3.4093619529233923, + "99.9999" : 3.4093619529233923, + "100.0" : 3.4093619529233923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4010779262103115, + 3.4093619529233923 + ], + [ + 3.400213854643417, + 3.4081101088895456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7196934301008682, + "scoreError" : 0.009433261921329341, + "scoreConfidence" : [ + 1.7102601681795389, + 1.7291266920221975 + ], + "scorePercentiles" : { + "0.0" : 1.718360312679651, + "50.0" : 1.7193343356815178, + "90.0" : 1.7217447363607858, + "95.0" : 1.7217447363607858, + "99.0" : 1.7217447363607858, + "99.9" : 1.7217447363607858, + "99.99" : 1.7217447363607858, + "99.999" : 1.7217447363607858, + "99.9999" : 1.7217447363607858, + "100.0" : 1.7217447363607858 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.718360312679651, + 1.7196083418321035 + ], + [ + 1.7190603295309321, + 1.7217447363607858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8631208369410628, + "scoreError" : 0.013966265434022882, + "scoreConfidence" : [ + 0.8491545715070399, + 0.8770871023750857 + ], + "scorePercentiles" : { + "0.0" : 0.8611588039727823, + "50.0" : 0.8627513593861174, + "90.0" : 0.8658218250192341, + "95.0" : 0.8658218250192341, + "99.0" : 0.8658218250192341, + "99.9" : 0.8658218250192341, + "99.99" : 0.8658218250192341, + "99.999" : 0.8658218250192341, + "99.9999" : 0.8658218250192341, + "100.0" : 0.8658218250192341 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8611588039727823, + 0.8616121378539223 + ], + [ + 0.8638905809183123, + 0.8658218250192341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 98.27096987223166, + "scoreError" : 2.5045477559708336, + "scoreConfidence" : [ + 95.76642211626083, + 100.7755176282025 + ], + "scorePercentiles" : { + "0.0" : 95.68051247255123, + "50.0" : 98.9270899531805, + "90.0" : 100.39260288227369, + "95.0" : 100.39260288227369, + "99.0" : 100.39260288227369, + "99.9" : 100.39260288227369, + "99.99" : 100.39260288227369, + "99.999" : 100.39260288227369, + "99.9999" : 100.39260288227369, + "100.0" : 100.39260288227369 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 98.94312506760458, + 96.69698833361956, + 95.68051247255123 + ], + [ + 97.34514063006868, + 98.9270899531805, + 99.06264023901753 + ], + [ + 97.87215469667093, + 99.5184745750984, + 100.39260288227369 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18459150246144512, + "scoreError" : 0.015563152229965621, + "scoreConfidence" : [ + 0.1690283502314795, + 0.20015465469141075 + ], + "scorePercentiles" : { + "0.0" : 0.17348002208344177, + "50.0" : 0.18480328357326337, + "90.0" : 0.195657021150046, + "95.0" : 0.195657021150046, + "99.0" : 0.195657021150046, + "99.9" : 0.195657021150046, + "99.99" : 0.195657021150046, + "99.999" : 0.195657021150046, + "99.9999" : 0.195657021150046, + "100.0" : 0.195657021150046 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17405713295854075, + 0.17348002208344177, + 0.17388261548225556 + ], + [ + 0.18486138387311446, + 0.18480328357326337, + 0.18468698899292665 + ], + [ + 0.195657021150046, + 0.19494815564263018, + 0.19494691839678735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34461395648434884, + "scoreError" : 0.018543995661311215, + "scoreConfidence" : [ + 0.32606996082303763, + 0.36315795214566005 + ], + "scorePercentiles" : { + "0.0" : 0.33486547773238684, + "50.0" : 0.33847169561685564, + "90.0" : 0.35935824540031625, + "95.0" : 0.35935824540031625, + "99.0" : 0.35935824540031625, + "99.9" : 0.35935824540031625, + "99.99" : 0.35935824540031625, + "99.999" : 0.35935824540031625, + "99.9999" : 0.35935824540031625, + "100.0" : 0.35935824540031625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3397393252250722, + 0.33774711324259515, + 0.33847169561685564 + ], + [ + 0.33581736851472516, + 0.33486547773238684, + 0.33725926642385 + ], + [ + 0.3590065454676001, + 0.3592605707357379, + 0.35935824540031625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1662644528201741, + "scoreError" : 0.007041908485461542, + "scoreConfidence" : [ + 0.15922254433471256, + 0.17330636130563565 + ], + "scorePercentiles" : { + "0.0" : 0.16043068409991498, + "50.0" : 0.16863301156790664, + "90.0" : 0.16965664430646038, + "95.0" : 0.16965664430646038, + "99.0" : 0.16965664430646038, + "99.9" : 0.16965664430646038, + "99.99" : 0.16965664430646038, + "99.999" : 0.16965664430646038, + "99.9999" : 0.16965664430646038, + "100.0" : 0.16965664430646038 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16937442495172927, + 0.16863301156790664, + 0.16815488644694804 + ], + [ + 0.16933125113026398, + 0.16909790911243003, + 0.16965664430646038 + ], + [ + 0.16098464717719216, + 0.16071661658872122, + 0.16043068409991498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3986439231800467, + "scoreError" : 0.00637091300263217, + "scoreConfidence" : [ + 0.39227301017741456, + 0.40501483618267886 + ], + "scorePercentiles" : { + "0.0" : 0.39420818677073477, + "50.0" : 0.3977881543754972, + "90.0" : 0.40496893557139385, + "95.0" : 0.40496893557139385, + "99.0" : 0.40496893557139385, + "99.9" : 0.40496893557139385, + "99.99" : 0.40496893557139385, + "99.999" : 0.40496893557139385, + "99.9999" : 0.40496893557139385, + "100.0" : 0.40496893557139385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40496893557139385, + 0.39927211874151564, + 0.3992613548528766 + ], + [ + 0.40407144094710895, + 0.3971080157646031, + 0.3967713057451198 + ], + [ + 0.3977881543754972, + 0.3943457958515714, + 0.39420818677073477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16648713306207816, + "scoreError" : 0.005414247074119306, + "scoreConfidence" : [ + 0.16107288598795885, + 0.17190138013619746 + ], + "scorePercentiles" : { + "0.0" : 0.16283060862981355, + "50.0" : 0.16614479812261174, + "90.0" : 0.1708238147110572, + "95.0" : 0.1708238147110572, + "99.0" : 0.1708238147110572, + "99.9" : 0.1708238147110572, + "99.99" : 0.1708238147110572, + "99.999" : 0.1708238147110572, + "99.9999" : 0.1708238147110572, + "100.0" : 0.1708238147110572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17022843914479283, + 0.1708238147110572, + 0.17013370232566052 + ], + [ + 0.16572026116929603, + 0.16614479812261174, + 0.16627377380576294 + ], + [ + 0.1633060520772095, + 0.16283060862981355, + 0.1629227475724992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048708404283641024, + "scoreError" : 3.256900826240487E-4, + "scoreConfidence" : [ + 0.048382714201016974, + 0.049034094366265074 + ], + "scorePercentiles" : { + "0.0" : 0.04842643591134269, + "50.0" : 0.04864128523274478, + "90.0" : 0.04892708317962317, + "95.0" : 0.04892708317962317, + "99.0" : 0.04892708317962317, + "99.9" : 0.04892708317962317, + "99.99" : 0.04892708317962317, + "99.999" : 0.04892708317962317, + "99.9999" : 0.04892708317962317, + "100.0" : 0.04892708317962317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048913571263665044, + 0.04851722961938724, + 0.04856391890421869 + ], + [ + 0.04892708317962317, + 0.04887132461807626, + 0.04889490055397192 + ], + [ + 0.048619889269739404, + 0.04864128523274478, + 0.04842643591134269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0553918135524623E7, + "scoreError" : 679622.1646854198, + "scoreConfidence" : [ + 9874295.970839202, + 1.1233540300210044E7 + ], + "scorePercentiles" : { + "0.0" : 1.0047981846385542E7, + "50.0" : 1.0525982719242902E7, + "90.0" : 1.1121641787777778E7, + "95.0" : 1.1121641787777778E7, + "99.0" : 1.1121641787777778E7, + "99.9" : 1.1121641787777778E7, + "99.99" : 1.1121641787777778E7, + "99.999" : 1.1121641787777778E7, + "99.9999" : 1.1121641787777778E7, + "100.0" : 1.1121641787777778E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0205105657142857E7, + 1.0095831249243189E7, + 1.0047981846385542E7 + ], + [ + 1.0493827069254985E7, + 1.0525982719242902E7, + 1.0534360494736843E7 + ], + [ + 1.0856959726681128E7, + 1.1103572669256382E7, + 1.1121641787777778E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json b/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json new file mode 100644 index 0000000000..7955929f2c --- /dev/null +++ b/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4146001038397236, + "scoreError" : 0.06330522138552402, + "scoreConfidence" : [ + 3.3512948824541997, + 3.4779053252252474 + ], + "scorePercentiles" : { + "0.0" : 3.406498306401554, + "50.0" : 3.4121721428099234, + "90.0" : 3.4275578233374935, + "95.0" : 3.4275578233374935, + "99.0" : 3.4275578233374935, + "99.9" : 3.4275578233374935, + "99.99" : 3.4275578233374935, + "99.999" : 3.4275578233374935, + "99.9999" : 3.4275578233374935, + "100.0" : 3.4275578233374935 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406498306401554, + 3.4075577224157994 + ], + [ + 3.4167865632040475, + 3.4275578233374935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.724084373375287, + "scoreError" : 0.009173345534947237, + "scoreConfidence" : [ + 1.7149110278403399, + 1.7332577189102343 + ], + "scorePercentiles" : { + "0.0" : 1.722132522557934, + "50.0" : 1.7244104377307181, + "90.0" : 1.725384095481778, + "95.0" : 1.725384095481778, + "99.0" : 1.725384095481778, + "99.9" : 1.725384095481778, + "99.99" : 1.725384095481778, + "99.999" : 1.725384095481778, + "99.9999" : 1.725384095481778, + "100.0" : 1.725384095481778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7240017613168217, + 1.722132522557934 + ], + [ + 1.725384095481778, + 1.7248191141446145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685933549611762, + "scoreError" : 0.0035669294749559304, + "scoreConfidence" : [ + 0.8650264254862202, + 0.8721602844361321 + ], + "scorePercentiles" : { + "0.0" : 0.8679462300764225, + "50.0" : 0.8686644140845527, + "90.0" : 0.8690983615991764, + "95.0" : 0.8690983615991764, + "99.0" : 0.8690983615991764, + "99.9" : 0.8690983615991764, + "99.99" : 0.8690983615991764, + "99.999" : 0.8690983615991764, + "99.9999" : 0.8690983615991764, + "100.0" : 0.8690983615991764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679462300764225, + 0.869003652537736 + ], + [ + 0.8683251756313696, + 0.8690983615991764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.03131562635369, + "scoreError" : 3.8131574268555535, + "scoreConfidence" : [ + 100.21815819949813, + 107.84447305320924 + ], + "scorePercentiles" : { + "0.0" : 101.2345222399038, + "50.0" : 104.32314641078156, + "90.0" : 107.1723185797236, + "95.0" : 107.1723185797236, + "99.0" : 107.1723185797236, + "99.9" : 107.1723185797236, + "99.99" : 107.1723185797236, + "99.999" : 107.1723185797236, + "99.9999" : 107.1723185797236, + "100.0" : 107.1723185797236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.72396500224156, + 104.42774438643247, + 104.32314641078156 + ], + [ + 101.2345222399038, + 101.61710742984098, + 101.3750069855028 + ], + [ + 105.55519565109971, + 107.1723185797236, + 106.85283395165672 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18162770750824003, + "scoreError" : 0.006044886405865979, + "scoreConfidence" : [ + 0.17558282110237405, + 0.187672593914106 + ], + "scorePercentiles" : { + "0.0" : 0.17692104912957327, + "50.0" : 0.1825373323354933, + "90.0" : 0.18598964871298915, + "95.0" : 0.18598964871298915, + "99.0" : 0.18598964871298915, + "99.9" : 0.18598964871298915, + "99.99" : 0.18598964871298915, + "99.999" : 0.18598964871298915, + "99.9999" : 0.18598964871298915, + "100.0" : 0.18598964871298915 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18334443915809545, + 0.1825373323354933, + 0.1824438548310589 + ], + [ + 0.17756069605823863, + 0.17692104912957327, + 0.17704654118938443 + ], + [ + 0.18598964871298915, + 0.1859790866266203, + 0.18282671953270685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33103155204854806, + "scoreError" : 0.010016052614272533, + "scoreConfidence" : [ + 0.32101549943427554, + 0.3410476046628206 + ], + "scorePercentiles" : { + "0.0" : 0.32390096534300705, + "50.0" : 0.33049450798109653, + "90.0" : 0.3382305706893053, + "95.0" : 0.3382305706893053, + "99.0" : 0.3382305706893053, + "99.9" : 0.3382305706893053, + "99.99" : 0.3382305706893053, + "99.999" : 0.3382305706893053, + "99.9999" : 0.3382305706893053, + "100.0" : 0.3382305706893053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33280675099840257, + 0.33049450798109653, + 0.33046942586167016 + ], + [ + 0.3243713012325657, + 0.32400376565689293, + 0.32390096534300705 + ], + [ + 0.33713828767446563, + 0.3382305706893053, + 0.337868392999527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1651612001317232, + "scoreError" : 0.006671777327387482, + "scoreConfidence" : [ + 0.1584894228043357, + 0.1718329774591107 + ], + "scorePercentiles" : { + "0.0" : 0.15975479700305126, + "50.0" : 0.16664202561239794, + "90.0" : 0.16899561237008873, + "95.0" : 0.16899561237008873, + "99.0" : 0.16899561237008873, + "99.9" : 0.16899561237008873, + "99.99" : 0.16899561237008873, + "99.999" : 0.16899561237008873, + "99.9999" : 0.16899561237008873, + "100.0" : 0.16899561237008873 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1686909112378125, + 0.16899561237008873, + 0.16836642324398948 + ], + [ + 0.16008070533055868, + 0.16014325713828167, + 0.15975479700305126 + ], + [ + 0.16664202561239794, + 0.16726839185414402, + 0.16650867739518466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39718276540797226, + "scoreError" : 0.010495068770156386, + "scoreConfidence" : [ + 0.3866876966378159, + 0.40767783417812864 + ], + "scorePercentiles" : { + "0.0" : 0.39033811225605, + "50.0" : 0.39952032495705325, + "90.0" : 0.4070250141641906, + "95.0" : 0.4070250141641906, + "99.0" : 0.4070250141641906, + "99.9" : 0.4070250141641906, + "99.99" : 0.4070250141641906, + "99.999" : 0.4070250141641906, + "99.9999" : 0.4070250141641906, + "100.0" : 0.4070250141641906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39952032495705325, + 0.39207139022190857, + 0.39109308951896754 + ], + [ + 0.39983248678581423, + 0.39033811225605, + 0.3905832244180597 + ], + [ + 0.4070250141641906, + 0.40276224173345687, + 0.4014190046162492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16230465175803965, + "scoreError" : 0.0039183994711270995, + "scoreConfidence" : [ + 0.15838625228691255, + 0.16622305122916675 + ], + "scorePercentiles" : { + "0.0" : 0.1597745644442314, + "50.0" : 0.16203763755975045, + "90.0" : 0.16624055238966004, + "95.0" : 0.16624055238966004, + "99.0" : 0.16624055238966004, + "99.9" : 0.16624055238966004, + "99.99" : 0.16624055238966004, + "99.999" : 0.16624055238966004, + "99.9999" : 0.16624055238966004, + "100.0" : 0.16624055238966004 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16624055238966004, + 0.16400418776547765, + 0.16484738292891996 + ], + [ + 0.15981138290051938, + 0.1598962359854178, + 0.1597745644442314 + ], + [ + 0.16191029436241175, + 0.16203763755975045, + 0.16221962748596827 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04763327336182691, + "scoreError" : 4.3904494906094033E-4, + "scoreConfidence" : [ + 0.04719422841276597, + 0.04807231831088785 + ], + "scorePercentiles" : { + "0.0" : 0.04727598728767486, + "50.0" : 0.04777726915010009, + "90.0" : 0.04794205962950889, + "95.0" : 0.04794205962950889, + "99.0" : 0.04794205962950889, + "99.9" : 0.04794205962950889, + "99.99" : 0.04794205962950889, + "99.999" : 0.04794205962950889, + "99.9999" : 0.04794205962950889, + "100.0" : 0.04794205962950889 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04788952776833304, + 0.047806814378185084, + 0.04777726915010009 + ], + [ + 0.04794205962950889, + 0.047515909017908475, + 0.0477935064352863 + ], + [ + 0.04729572183939576, + 0.04740266475004977, + 0.04727598728767486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9672020.973374372, + "scoreError" : 191105.9680058244, + "scoreConfidence" : [ + 9480915.005368548, + 9863126.941380197 + ], + "scorePercentiles" : { + "0.0" : 9516544.845861085, + "50.0" : 9728260.992217898, + "90.0" : 9787208.828767123, + "95.0" : 9787208.828767123, + "99.0" : 9787208.828767123, + "99.9" : 9787208.828767123, + "99.99" : 9787208.828767123, + "99.999" : 9787208.828767123, + "99.9999" : 9787208.828767123, + "100.0" : 9787208.828767123 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9773146.44921875, + 9744554.864654332, + 9751680.31871345 + ], + [ + 9787208.828767123, + 9728260.992217898, + 9688269.999031946 + ], + [ + 9516544.845861085, + 9527939.308571428, + 9530583.153333334 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json b/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json new file mode 100644 index 0000000000..93a667cc19 --- /dev/null +++ b/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.417549733621442, + "scoreError" : 0.01110297891536587, + "scoreConfidence" : [ + 3.406446754706076, + 3.428652712536808 + ], + "scorePercentiles" : { + "0.0" : 3.415335793926578, + "50.0" : 3.4177333996326036, + "90.0" : 3.419396341293982, + "95.0" : 3.419396341293982, + "99.0" : 3.419396341293982, + "99.9" : 3.419396341293982, + "99.99" : 3.419396341293982, + "99.999" : 3.419396341293982, + "99.9999" : 3.419396341293982, + "100.0" : 3.419396341293982 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4172446969186234, + 3.419396341293982 + ], + [ + 3.415335793926578, + 3.4182221023465837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7274036461599989, + "scoreError" : 0.006128573825496412, + "scoreConfidence" : [ + 1.7212750723345025, + 1.7335322199854952 + ], + "scorePercentiles" : { + "0.0" : 1.726368585774484, + "50.0" : 1.7273860309105475, + "90.0" : 1.728473937044416, + "95.0" : 1.728473937044416, + "99.0" : 1.728473937044416, + "99.9" : 1.728473937044416, + "99.99" : 1.728473937044416, + "99.999" : 1.728473937044416, + "99.9999" : 1.728473937044416, + "100.0" : 1.728473937044416 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727876395518843, + 1.728473937044416 + ], + [ + 1.726895666302252, + 1.726368585774484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696277675660219, + "scoreError" : 0.003731430116841793, + "scoreConfidence" : [ + 0.8658963374491802, + 0.8733591976828636 + ], + "scorePercentiles" : { + "0.0" : 0.8687745341041557, + "50.0" : 0.8698516605045905, + "90.0" : 0.8700332151507507, + "95.0" : 0.8700332151507507, + "99.0" : 0.8700332151507507, + "99.9" : 0.8700332151507507, + "99.99" : 0.8700332151507507, + "99.999" : 0.8700332151507507, + "99.9999" : 0.8700332151507507, + "100.0" : 0.8700332151507507 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8687745341041557, + 0.8697897336521034 + ], + [ + 0.8699135873570777, + 0.8700332151507507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68564.59072017718, + "scoreError" : 3342.4151922036704, + "scoreConfidence" : [ + 65222.17552797351, + 71907.00591238085 + ], + "scorePercentiles" : { + "0.0" : 66365.38880921605, + "50.0" : 68390.3393489677, + "90.0" : 70982.41269147139, + "95.0" : 70982.41269147139, + "99.0" : 70982.41269147139, + "99.9" : 70982.41269147139, + "99.99" : 70982.41269147139, + "99.999" : 70982.41269147139, + "99.9999" : 70982.41269147139, + "100.0" : 70982.41269147139 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70921.10080429926, + 70971.54880272943, + 70982.41269147139 + ], + [ + 66391.38054980467, + 66403.4487675499, + 66365.38880921605 + ], + [ + 68121.9882924485, + 68390.3393489677, + 68533.7084151077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.6073517068847, + "scoreError" : 14.226277593346195, + "scoreConfidence" : [ + 338.3810741135385, + 366.8336293002309 + ], + "scorePercentiles" : { + "0.0" : 340.9222360811488, + "50.0" : 357.0779004844468, + "90.0" : 360.2449960648248, + "95.0" : 360.2449960648248, + "99.0" : 360.2449960648248, + "99.9" : 360.2449960648248, + "99.99" : 360.2449960648248, + "99.999" : 360.2449960648248, + "99.9999" : 360.2449960648248, + "100.0" : 360.2449960648248 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.2449960648248, + 357.0779004844468, + 355.97632825052636 + ], + [ + 341.52235438044806, + 341.8721856208501, + 340.9222360811488 + ], + [ + 359.11797705900995, + 357.9689783725373, + 358.76320904817004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 43.22957453296144, + "scoreError" : 1.0524067752181139, + "scoreConfidence" : [ + 42.17716775774333, + 44.28198130817956 + ], + "scorePercentiles" : { + "0.0" : 42.491759424373676, + "50.0" : 43.16580648696909, + "90.0" : 43.99113632712106, + "95.0" : 43.99113632712106, + "99.0" : 43.99113632712106, + "99.9" : 43.99113632712106, + "99.99" : 43.99113632712106, + "99.999" : 43.99113632712106, + "99.9999" : 43.99113632712106, + "100.0" : 43.99113632712106 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.491759424373676, + 42.55520495290065, + 42.53175908126641 + ], + [ + 43.95321369840156, + 43.96024421025855, + 43.99113632712106 + ], + [ + 43.16580648696909, + 43.14083248198754, + 43.27621413337447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014312895471575268, + "scoreError" : 3.590636914352757E-4, + "scoreConfidence" : [ + 0.013953831780139992, + 0.014671959163010543 + ], + "scorePercentiles" : { + "0.0" : 0.014156584854911, + "50.0" : 0.014173242913814926, + "90.0" : 0.014606530733984486, + "95.0" : 0.014606530733984486, + "99.0" : 0.014606530733984486, + "99.9" : 0.014606530733984486, + "99.99" : 0.014606530733984486, + "99.999" : 0.014606530733984486, + "99.9999" : 0.014606530733984486, + "100.0" : 0.014606530733984486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014172841730880705, + 0.014173242913814926, + 0.01419092347350018 + ], + [ + 0.014597928211176914, + 0.014606530733984486, + 0.014587914766734694 + ], + [ + 0.014156584854911, + 0.014164157074343924, + 0.014165935484830585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.051780842346681, + "scoreError" : 0.010553840560371822, + "scoreConfidence" : [ + 1.0412270017863092, + 1.0623346829070528 + ], + "scorePercentiles" : { + "0.0" : 1.0440643342728886, + "50.0" : 1.0495260304334137, + "90.0" : 1.061504448100191, + "95.0" : 1.061504448100191, + "99.0" : 1.061504448100191, + "99.9" : 1.061504448100191, + "99.99" : 1.061504448100191, + "99.999" : 1.061504448100191, + "99.9999" : 1.061504448100191, + "100.0" : 1.061504448100191 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0475535410076464, + 1.0495260304334137, + 1.0485825257418475 + ], + [ + 1.0462639663109436, + 1.0440643342728886, + 1.051101247950389 + ], + [ + 1.061504448100191, + 1.0594869623900838, + 1.0579445249127262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013025928893002378, + "scoreError" : 2.9233162577219546E-4, + "scoreConfidence" : [ + 0.012733597267230182, + 0.013318260518774574 + ], + "scorePercentiles" : { + "0.0" : 0.012845165675472241, + "50.0" : 0.013048059291336388, + "90.0" : 0.013116028007302832, + "95.0" : 0.013116028007302832, + "99.0" : 0.013116028007302832, + "99.9" : 0.013116028007302832, + "99.99" : 0.013116028007302832, + "99.999" : 0.013116028007302832, + "99.9999" : 0.013116028007302832, + "100.0" : 0.013116028007302832 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012845165675472241, + 0.012994237794150132, + 0.012995796729287742 + ], + [ + 0.013104023298416284, + 0.013100321853385034, + 0.013116028007302832 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6386671189948117, + "scoreError" : 0.23283007966411665, + "scoreConfidence" : [ + 3.405837039330695, + 3.871497198658928 + ], + "scorePercentiles" : { + "0.0" : 3.5593792142348755, + "50.0" : 3.638552702472288, + "90.0" : 3.717080251857355, + "95.0" : 3.717080251857355, + "99.0" : 3.717080251857355, + "99.9" : 3.717080251857355, + "99.99" : 3.717080251857355, + "99.999" : 3.717080251857355, + "99.9999" : 3.717080251857355, + "100.0" : 3.717080251857355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.714684306607275, + 3.717080251857355, + 3.711503275222552 + ], + [ + 3.5593792142348755, + 3.5656021297220244, + 3.5637535363247865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.892068432953975, + "scoreError" : 0.009267708162824911, + "scoreConfidence" : [ + 2.8828007247911502, + 2.9013361411167997 + ], + "scorePercentiles" : { + "0.0" : 2.8829103447679447, + "50.0" : 2.8941400842013887, + "90.0" : 2.900774136600928, + "95.0" : 2.900774136600928, + "99.0" : 2.900774136600928, + "99.9" : 2.900774136600928, + "99.99" : 2.900774136600928, + "99.999" : 2.900774136600928, + "99.9999" : 2.900774136600928, + "100.0" : 2.900774136600928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8909567751445087, + 2.900774136600928, + 2.895437655761436 + ], + [ + 2.8829103447679447, + 2.8853761220427003, + 2.8949296243125904 + ], + [ + 2.894673690593343, + 2.889417463160936, + 2.8941400842013887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33691360853923774, + "scoreError" : 0.019185202933204835, + "scoreConfidence" : [ + 0.3177284056060329, + 0.3560988114724426 + ], + "scorePercentiles" : { + "0.0" : 0.3215903219063545, + "50.0" : 0.34066744595469256, + "90.0" : 0.3475835746411317, + "95.0" : 0.3475835746411317, + "99.0" : 0.3475835746411317, + "99.9" : 0.3475835746411317, + "99.99" : 0.3475835746411317, + "99.999" : 0.3475835746411317, + "99.9999" : 0.3475835746411317, + "100.0" : 0.3475835746411317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3230329570048777, + 0.32178376835703715, + 0.3215903219063545 + ], + [ + 0.3474673598554602, + 0.3475835746411317, + 0.34700911492418196 + ], + [ + 0.34260209705711053, + 0.34066744595469256, + 0.3404858371522931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5147195619121575, + "scoreError" : 0.005365502061905538, + "scoreConfidence" : [ + 0.509354059850252, + 0.5200850639740631 + ], + "scorePercentiles" : { + "0.0" : 0.5095666566114649, + "50.0" : 0.5141572140359897, + "90.0" : 0.5199076203275279, + "95.0" : 0.5199076203275279, + "99.0" : 0.5199076203275279, + "99.9" : 0.5199076203275279, + "99.99" : 0.5199076203275279, + "99.999" : 0.5199076203275279, + "99.9999" : 0.5199076203275279, + "100.0" : 0.5199076203275279 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5095666566114649, + 0.5120266715989965, + 0.5134771368864243 + ], + [ + 0.5141572140359897, + 0.5143587923053183, + 0.5136087965692568 + ], + [ + 0.5199076203275279, + 0.5176240380434782, + 0.5177491308309604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.2364564205155297, + "scoreError" : 0.005615719741969599, + "scoreConfidence" : [ + 0.23084070077356011, + 0.2420721402574993 + ], + "scorePercentiles" : { + "0.0" : 0.23106783016775267, + "50.0" : 0.23710881167014417, + "90.0" : 0.2401375854624916, + "95.0" : 0.2401375854624916, + "99.0" : 0.2401375854624916, + "99.9" : 0.2401375854624916, + "99.99" : 0.2401375854624916, + "99.999" : 0.2401375854624916, + "99.9999" : 0.2401375854624916, + "100.0" : 0.2401375854624916 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2401375854624916, + 0.23965306583109663, + 0.2394539756961904 + ], + [ + 0.23547254910640703, + 0.23145445165023376, + 0.23106783016775267 + ], + [ + 0.23750379399610508, + 0.23710881167014417, + 0.23625572105934606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.039934086864828, + "scoreError" : 0.014696474985303161, + "scoreConfidence" : [ + 1.0252376118795248, + 1.054630561850131 + ], + "scorePercentiles" : { + "0.0" : 1.0283595919794344, + "50.0" : 1.043634660857769, + "90.0" : 1.0487148862206377, + "95.0" : 1.0487148862206377, + "99.0" : 1.0487148862206377, + "99.9" : 1.0487148862206377, + "99.99" : 1.0487148862206377, + "99.999" : 1.0487148862206377, + "99.9999" : 1.0487148862206377, + "100.0" : 1.0487148862206377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0287253541816685, + 1.0284066072603866, + 1.0283595919794344 + ], + [ + 1.0434719802796326, + 1.043634660857769, + 1.0443083778195488 + ], + [ + 1.0487148862206377, + 1.046657566509681, + 1.0471277566746937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.44161499542324184, + "scoreError" : 0.004366581579714742, + "scoreConfidence" : [ + 0.4372484138435271, + 0.4459815770029566 + ], + "scorePercentiles" : { + "0.0" : 0.43823696555501995, + "50.0" : 0.44111343381412377, + "90.0" : 0.44522993410800943, + "95.0" : 0.44522993410800943, + "99.0" : 0.44522993410800943, + "99.9" : 0.44522993410800943, + "99.99" : 0.44522993410800943, + "99.999" : 0.44522993410800943, + "99.9999" : 0.44522993410800943, + "100.0" : 0.44522993410800943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4385348860726188, + 0.43823696555501995, + 0.4400182119065429 + ], + [ + 0.44461083727547573, + 0.4443986759098787, + 0.44522993410800943 + ], + [ + 0.44149149507748003, + 0.44111343381412377, + 0.4409005190900273 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07051290382076661, + "scoreError" : 0.0015072824781688767, + "scoreConfidence" : [ + 0.06900562134259773, + 0.07202018629893549 + ], + "scorePercentiles" : { + "0.0" : 0.06945675739875119, + "50.0" : 0.07009593459457186, + "90.0" : 0.07172936275867016, + "95.0" : 0.07172936275867016, + "99.0" : 0.07172936275867016, + "99.9" : 0.07172936275867016, + "99.99" : 0.07172936275867016, + "99.999" : 0.07172936275867016, + "99.9999" : 0.07172936275867016, + "100.0" : 0.07172936275867016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07009593459457186, + 0.07000790423051882, + 0.06975306674571898 + ], + [ + 0.07172936275867016, + 0.0716311333968454, + 0.07164192272864041 + ], + [ + 0.07030226510597912, + 0.0699977874272035, + 0.06945675739875119 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.2916434512089096E7, + "scoreError" : 334761.1993547782, + "scoreConfidence" : [ + 2.2581673312734317E7, + 2.3251195711443875E7 + ], + "scorePercentiles" : { + "0.0" : 2.2709041746031746E7, + "50.0" : 2.286806340410959E7, + "90.0" : 2.321051393039443E7, + "95.0" : 2.321051393039443E7, + "99.0" : 2.321051393039443E7, + "99.9" : 2.321051393039443E7, + "99.99" : 2.321051393039443E7, + "99.999" : 2.321051393039443E7, + "99.9999" : 2.321051393039443E7, + "100.0" : 2.321051393039443E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.321051393039443E7, + 2.3181100655092593E7, + 2.310629179907621E7 + ], + [ + 2.2853278180365298E7, + 2.286806340410959E7, + 2.2868454625570778E7 + ], + [ + 2.2739949259090908E7, + 2.2709041746031746E7, + 2.2711217009070296E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json b/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json new file mode 100644 index 0000000000..e07aecac38 --- /dev/null +++ b/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json @@ -0,0 +1,413 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.54876920363, + "scoreError" : 877.051607001723, + "scoreConfidence" : [ + 69342.49716220191, + 71096.60037620534 + ], + "scorePercentiles" : { + "0.0" : 69373.1799451383, + "50.0" : 70346.02467738034, + "90.0" : 70806.15426297102, + "95.0" : 70806.15426297102, + "99.0" : 70806.15426297102, + "99.9" : 70806.15426297102, + "99.99" : 70806.15426297102, + "99.999" : 70806.15426297102, + "99.9999" : 70806.15426297102, + "100.0" : 70806.15426297102 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69518.78115218057, + 69373.1799451383, + 69976.66849523893 + ], + [ + 70806.15426297102, + 70725.87117127908, + 70610.372758707 + ], + [ + 70561.85379402456, + 70057.03266591279, + 70346.02467738034 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.9107894426578, + "scoreError" : 9.426249005233789, + "scoreConfidence" : [ + 337.484540437424, + 356.3370384478916 + ], + "scorePercentiles" : { + "0.0" : 338.26005679797504, + "50.0" : 347.03501349459947, + "90.0" : 354.57859781312527, + "95.0" : 354.57859781312527, + "99.0" : 354.57859781312527, + "99.9" : 354.57859781312527, + "99.99" : 354.57859781312527, + "99.999" : 354.57859781312527, + "99.9999" : 354.57859781312527, + "100.0" : 354.57859781312527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 338.26005679797504, + 340.50631789283403, + 343.88528415142383 + ], + [ + 353.56875541193926, + 351.6138386462634, + 354.57859781312527 + ], + [ + 347.03976687575766, + 345.7094739000024, + 347.03501349459947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014352362665403752, + "scoreError" : 2.98599213348489E-4, + "scoreConfidence" : [ + 0.014053763452055263, + 0.01465096187875224 + ], + "scorePercentiles" : { + "0.0" : 0.014157780336214879, + "50.0" : 0.014331860724752957, + "90.0" : 0.014639790268461288, + "95.0" : 0.014639790268461288, + "99.0" : 0.014639790268461288, + "99.9" : 0.014639790268461288, + "99.99" : 0.014639790268461288, + "99.999" : 0.014639790268461288, + "99.9999" : 0.014639790268461288, + "100.0" : 0.014639790268461288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014339939093238652, + 0.014331860724752957, + 0.014260492186764702 + ], + [ + 0.014538310723621276, + 0.014639790268461288, + 0.014531535512455552 + ], + [ + 0.014157780336214879, + 0.01420724729817084, + 0.014164307844953598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.056255119077973, + "scoreError" : 0.07030724285344893, + "scoreConfidence" : [ + 0.9859478762245241, + 1.126562361931422 + ], + "scorePercentiles" : { + "0.0" : 1.0189330812022415, + "50.0" : 1.0329520149762446, + "90.0" : 1.1164261720250055, + "95.0" : 1.1164261720250055, + "99.0" : 1.1164261720250055, + "99.9" : 1.1164261720250055, + "99.99" : 1.1164261720250055, + "99.999" : 1.1164261720250055, + "99.9999" : 1.1164261720250055, + "100.0" : 1.1164261720250055 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0477812422210582, + 1.0329520149762446, + 1.0309344408823833 + ], + [ + 1.1030785476505625, + 1.1164261720250055, + 1.1125569858716209 + ], + [ + 1.0189330812022415, + 1.0217059660878447, + 1.0219276207847947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013035694974636735, + "scoreError" : 3.80344969049074E-4, + "scoreConfidence" : [ + 0.01265535000558766, + 0.01341603994368581 + ], + "scorePercentiles" : { + "0.0" : 0.012849147604975074, + "50.0" : 0.013023318203321078, + "90.0" : 0.013215352230829614, + "95.0" : 0.013215352230829614, + "99.0" : 0.013215352230829614, + "99.9" : 0.013215352230829614, + "99.99" : 0.013215352230829614, + "99.999" : 0.013215352230829614, + "99.9999" : 0.013215352230829614, + "100.0" : 0.013215352230829614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012849147604975074, + 0.012976139697715217, + 0.012952399375191043 + ], + [ + 0.013150634230182525, + 0.013215352230829614, + 0.013070496708926937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6779970045280823, + "scoreError" : 0.14690336575784563, + "scoreConfidence" : [ + 3.5310936387702365, + 3.824900370285928 + ], + "scorePercentiles" : { + "0.0" : 3.5989308258992807, + "50.0" : 3.6785783035306947, + "90.0" : 3.754549879129129, + "95.0" : 3.754549879129129, + "99.0" : 3.754549879129129, + "99.9" : 3.754549879129129, + "99.99" : 3.754549879129129, + "99.999" : 3.754549879129129, + "99.9999" : 3.754549879129129, + "100.0" : 3.754549879129129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5989308258992807, + 3.658934260424287, + 3.6582162809070957 + ], + [ + 3.698222346637103, + 3.754549879129129, + 3.6991284341715978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.884272532819487, + "scoreError" : 0.12828739230038708, + "scoreConfidence" : [ + 2.7559851405191, + 3.012559925119874 + ], + "scorePercentiles" : { + "0.0" : 2.7761082681099083, + "50.0" : 2.9086586077348064, + "90.0" : 3.0072171803968732, + "95.0" : 3.0072171803968732, + "99.0" : 3.0072171803968732, + "99.9" : 3.0072171803968732, + "99.99" : 3.0072171803968732, + "99.999" : 3.0072171803968732, + "99.9999" : 3.0072171803968732, + "100.0" : 3.0072171803968732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9186964487890283, + 2.923129876972531, + 2.9086586077348064 + ], + [ + 2.897631711761298, + 2.927875331967213, + 3.0072171803968732 + ], + [ + 2.7761082681099083, + 2.8062966290684623, + 2.792838740575258 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json b/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json new file mode 100644 index 0000000000..34f194c1bf --- /dev/null +++ b/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424204324807343, + "scoreError" : 0.05799769532538598, + "scoreConfidence" : [ + 3.366206629481957, + 3.482202020132729 + ], + "scorePercentiles" : { + "0.0" : 3.4159836041695884, + "50.0" : 3.4237277918290836, + "90.0" : 3.433378111401614, + "95.0" : 3.433378111401614, + "99.0" : 3.433378111401614, + "99.9" : 3.433378111401614, + "99.99" : 3.433378111401614, + "99.999" : 3.433378111401614, + "99.9999" : 3.433378111401614, + "100.0" : 3.433378111401614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4159836041695884, + 3.417039358674823 + ], + [ + 3.430416224983344, + 3.433378111401614 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.728024357619412, + "scoreError" : 0.005667731146331268, + "scoreConfidence" : [ + 1.7223566264730807, + 1.7336920887657434 + ], + "scorePercentiles" : { + "0.0" : 1.7270563159253658, + "50.0" : 1.728063700679468, + "90.0" : 1.7289137131933463, + "95.0" : 1.7289137131933463, + "99.0" : 1.7289137131933463, + "99.9" : 1.7289137131933463, + "99.99" : 1.7289137131933463, + "99.999" : 1.7289137131933463, + "99.9999" : 1.7289137131933463, + "100.0" : 1.7289137131933463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7286006804391694, + 1.7275267209197662 + ], + [ + 1.7270563159253658, + 1.7289137131933463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8687373037199976, + "scoreError" : 0.007828251353031416, + "scoreConfidence" : [ + 0.8609090523669661, + 0.876565555073029 + ], + "scorePercentiles" : { + "0.0" : 0.8677172931089318, + "50.0" : 0.8683724801432033, + "90.0" : 0.8704869614846519, + "95.0" : 0.8704869614846519, + "99.0" : 0.8704869614846519, + "99.9" : 0.8704869614846519, + "99.99" : 0.8704869614846519, + "99.999" : 0.8704869614846519, + "99.9999" : 0.8704869614846519, + "100.0" : 0.8704869614846519 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677172931089318, + 0.8685043429446764 + ], + [ + 0.8682406173417304, + 0.8704869614846519 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.1436562038279, + "scoreError" : 5.6105425024585065, + "scoreConfidence" : [ + 101.5331137013694, + 112.7541987062864 + ], + "scorePercentiles" : { + "0.0" : 102.50973848385428, + "50.0" : 109.21468173090412, + "90.0" : 109.90699541456834, + "95.0" : 109.90699541456834, + "99.0" : 109.90699541456834, + "99.9" : 109.90699541456834, + "99.99" : 109.90699541456834, + "99.999" : 109.90699541456834, + "99.9999" : 109.90699541456834, + "100.0" : 109.90699541456834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.21468173090412, + 109.27836917733696, + 109.90699541456834 + ], + [ + 102.50973848385428, + 102.60092263928637, + 103.01205226543857 + ], + [ + 108.97543715441627, + 109.36582665700297, + 109.4288823116432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18715525560681903, + "scoreError" : 0.020286238893373214, + "scoreConfidence" : [ + 0.1668690167134458, + 0.20744149450019225 + ], + "scorePercentiles" : { + "0.0" : 0.17607753671162446, + "50.0" : 0.18194778879953422, + "90.0" : 0.20298734608748603, + "95.0" : 0.20298734608748603, + "99.0" : 0.20298734608748603, + "99.9" : 0.20298734608748603, + "99.99" : 0.20298734608748603, + "99.999" : 0.20298734608748603, + "99.9999" : 0.20298734608748603, + "100.0" : 0.20298734608748603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18297718427167767, + 0.18194778879953422, + 0.18188762704619862 + ], + [ + 0.20298734608748603, + 0.2028440355780933, + 0.20278723644401184 + ], + [ + 0.1767823894427945, + 0.17607753671162446, + 0.1761061560799507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33746284165580004, + "scoreError" : 0.009801170575544799, + "scoreConfidence" : [ + 0.32766167108025523, + 0.34726401223134484 + ], + "scorePercentiles" : { + "0.0" : 0.33322743102299235, + "50.0" : 0.3339327810131232, + "90.0" : 0.3462359468891736, + "95.0" : 0.3462359468891736, + "99.0" : 0.3462359468891736, + "99.9" : 0.3462359468891736, + "99.99" : 0.3462359468891736, + "99.999" : 0.3462359468891736, + "99.9999" : 0.3462359468891736, + "100.0" : 0.3462359468891736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3339327810131232, + 0.333327132728909, + 0.33331685544297046 + ], + [ + 0.3462359468891736, + 0.3447156930368838, + 0.34466495712562467 + ], + [ + 0.3342104271439075, + 0.3335343504986159, + 0.33322743102299235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1626035761133484, + "scoreError" : 0.009923728597793184, + "scoreConfidence" : [ + 0.15267984751555522, + 0.1725273047111416 + ], + "scorePercentiles" : { + "0.0" : 0.15574798043857463, + "50.0" : 0.16241545803287208, + "90.0" : 0.16958445535789993, + "95.0" : 0.16958445535789993, + "99.0" : 0.16958445535789993, + "99.9" : 0.16958445535789993, + "99.99" : 0.16958445535789993, + "99.999" : 0.16958445535789993, + "99.9999" : 0.16958445535789993, + "100.0" : 0.16958445535789993 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16958445535789993, + 0.16957912419663904, + 0.16929908774632627 + ], + [ + 0.16241545803287208, + 0.16258103080849956, + 0.1624111286765303 + ], + [ + 0.15574798043857463, + 0.15582760495520062, + 0.1559863148075933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3948568791221134, + "scoreError" : 0.005118335017259271, + "scoreConfidence" : [ + 0.38973854410485415, + 0.3999752141393727 + ], + "scorePercentiles" : { + "0.0" : 0.39062994046875, + "50.0" : 0.3952583020829216, + "90.0" : 0.3990008796680498, + "95.0" : 0.3990008796680498, + "99.0" : 0.3990008796680498, + "99.9" : 0.3990008796680498, + "99.99" : 0.3990008796680498, + "99.999" : 0.3990008796680498, + "99.9999" : 0.3990008796680498, + "100.0" : 0.3990008796680498 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3913463903889802, + 0.39134656312123345, + 0.39062994046875 + ], + [ + 0.3974219333147876, + 0.3969439823363633, + 0.3966984339719941 + ], + [ + 0.3990008796680498, + 0.39506548674594083, + 0.3952583020829216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1610574826858421, + "scoreError" : 0.003752410557245631, + "scoreConfidence" : [ + 0.15730507212859648, + 0.16480989324308773 + ], + "scorePercentiles" : { + "0.0" : 0.15879246556679422, + "50.0" : 0.1602639839738453, + "90.0" : 0.16460379410070283, + "95.0" : 0.16460379410070283, + "99.0" : 0.16460379410070283, + "99.9" : 0.16460379410070283, + "99.99" : 0.16460379410070283, + "99.999" : 0.16460379410070283, + "99.9999" : 0.16460379410070283, + "100.0" : 0.16460379410070283 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15879246556679422, + 0.15922639871029376, + 0.1590539176116934 + ], + [ + 0.16016096425311105, + 0.1602639839738453, + 0.1603011353231598 + ], + [ + 0.16460379410070283, + 0.16316207262196117, + 0.1639526120110175 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04835155109742807, + "scoreError" : 0.0014775111568661589, + "scoreConfidence" : [ + 0.04687403994056191, + 0.04982906225429423 + ], + "scorePercentiles" : { + "0.0" : 0.047276101358698225, + "50.0" : 0.048217913343684, + "90.0" : 0.04951674853308905, + "95.0" : 0.04951674853308905, + "99.0" : 0.04951674853308905, + "99.9" : 0.04951674853308905, + "99.99" : 0.04951674853308905, + "99.999" : 0.04951674853308905, + "99.9999" : 0.04951674853308905, + "100.0" : 0.04951674853308905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04951674853308905, + 0.04938211956247994, + 0.04941198198959399 + ], + [ + 0.04821848832645425, + 0.0481013592933039, + 0.048217913343684 + ], + [ + 0.04749393822546021, + 0.04754530924408902, + 0.047276101358698225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9625059.040573487, + "scoreError" : 219935.77309763603, + "scoreConfidence" : [ + 9405123.26747585, + 9844994.813671123 + ], + "scorePercentiles" : { + "0.0" : 9448406.368271954, + "50.0" : 9683659.49177154, + "90.0" : 9762830.43609756, + "95.0" : 9762830.43609756, + "99.0" : 9762830.43609756, + "99.9" : 9762830.43609756, + "99.99" : 9762830.43609756, + "99.999" : 9762830.43609756, + "99.9999" : 9762830.43609756, + "100.0" : 9762830.43609756 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9687952.249757987, + 9683659.49177154, + 9676237.632495165 + ], + [ + 9762830.43609756, + 9739261.683544304, + 9712223.050485438 + ], + [ + 9461725.996215705, + 9453234.456521738, + 9448406.368271954 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json b/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json new file mode 100644 index 0000000000..93b65412ac --- /dev/null +++ b/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4093139013067724, + "scoreError" : 0.021893836129409316, + "scoreConfidence" : [ + 3.387420065177363, + 3.4312077374361816 + ], + "scorePercentiles" : { + "0.0" : 3.404731404003703, + "50.0" : 3.409860333857129, + "90.0" : 3.412803533509129, + "95.0" : 3.412803533509129, + "99.0" : 3.412803533509129, + "99.9" : 3.412803533509129, + "99.99" : 3.412803533509129, + "99.999" : 3.412803533509129, + "99.9999" : 3.412803533509129, + "100.0" : 3.412803533509129 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.409284321996756, + 3.4104363457175024 + ], + [ + 3.404731404003703, + 3.412803533509129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7182419922433345, + "scoreError" : 0.009837862041857262, + "scoreConfidence" : [ + 1.7084041302014772, + 1.7280798542851918 + ], + "scorePercentiles" : { + "0.0" : 1.7161595064751782, + "50.0" : 1.7186904440757775, + "90.0" : 1.719427574346604, + "95.0" : 1.719427574346604, + "99.0" : 1.719427574346604, + "99.9" : 1.719427574346604, + "99.99" : 1.719427574346604, + "99.999" : 1.719427574346604, + "99.9999" : 1.719427574346604, + "100.0" : 1.719427574346604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.719427574346604, + 1.7193263365006115 + ], + [ + 1.7161595064751782, + 1.7180545516509436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8656415344042727, + "scoreError" : 0.00216935852863811, + "scoreConfidence" : [ + 0.8634721758756346, + 0.8678108929329108 + ], + "scorePercentiles" : { + "0.0" : 0.8652472998061675, + "50.0" : 0.8656445886938953, + "90.0" : 0.8660296604231326, + "95.0" : 0.8660296604231326, + "99.0" : 0.8660296604231326, + "99.9" : 0.8660296604231326, + "99.99" : 0.8660296604231326, + "99.999" : 0.8660296604231326, + "99.9999" : 0.8660296604231326, + "100.0" : 0.8660296604231326 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8657711262503519, + 0.8655180511374387 + ], + [ + 0.8652472998061675, + 0.8660296604231326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70249.89615163156, + "scoreError" : 184.9343928170246, + "scoreConfidence" : [ + 70064.96175881453, + 70434.83054444859 + ], + "scorePercentiles" : { + "0.0" : 70120.69035144885, + "50.0" : 70222.45600654616, + "90.0" : 70403.71718522921, + "95.0" : 70403.71718522921, + "99.0" : 70403.71718522921, + "99.9" : 70403.71718522921, + "99.99" : 70403.71718522921, + "99.999" : 70403.71718522921, + "99.9999" : 70403.71718522921, + "100.0" : 70403.71718522921 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70401.49822549731, + 70353.74617990099, + 70403.71718522921 + ], + [ + 70144.53735546515, + 70197.23574567295, + 70120.69035144885 + ], + [ + 70245.4038793827, + 70222.45600654616, + 70159.78043554082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.1235870149517, + "scoreError" : 12.518422380833014, + "scoreConfidence" : [ + 311.6051646341187, + 336.64200939578467 + ], + "scorePercentiles" : { + "0.0" : 314.0885905749031, + "50.0" : 326.2222939474484, + "90.0" : 331.6432472176766, + "95.0" : 331.6432472176766, + "99.0" : 331.6432472176766, + "99.9" : 331.6432472176766, + "99.99" : 331.6432472176766, + "99.999" : 331.6432472176766, + "99.9999" : 331.6432472176766, + "100.0" : 331.6432472176766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 325.97687376627675, + 327.32026111840463, + 331.126243086308 + ], + [ + 331.6432472176766, + 331.0286050083805, + 326.2222939474484 + ], + [ + 314.0885905749031, + 315.02124216928775, + 314.6849262458794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.08364604746585, + "scoreError" : 1.343132091816652, + "scoreConfidence" : [ + 102.74051395564919, + 105.4267781392825 + ], + "scorePercentiles" : { + "0.0" : 103.10488102505084, + "50.0" : 103.9406500655117, + "90.0" : 105.49964296877762, + "95.0" : 105.49964296877762, + "99.0" : 105.49964296877762, + "99.9" : 105.49964296877762, + "99.99" : 105.49964296877762, + "99.999" : 105.49964296877762, + "99.9999" : 105.49964296877762, + "100.0" : 105.49964296877762 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.10488102505084, + 103.9406500655117, + 103.92876928971134 + ], + [ + 104.72044867134093, + 105.49964296877762, + 104.86104107178554 + ], + [ + 103.94586724796258, + 103.56578526150736, + 103.18572882554477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01420008079255139, + "scoreError" : 3.534476823480423E-5, + "scoreConfidence" : [ + 0.014164736024316586, + 0.014235425560786193 + ], + "scorePercentiles" : { + "0.0" : 0.01417365751768496, + "50.0" : 0.014199791465741986, + "90.0" : 0.014234270268654507, + "95.0" : 0.014234270268654507, + "99.0" : 0.014234270268654507, + "99.9" : 0.014234270268654507, + "99.99" : 0.014234270268654507, + "99.999" : 0.014234270268654507, + "99.9999" : 0.014234270268654507, + "100.0" : 0.014234270268654507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014199791465741986, + 0.014212377463151328, + 0.014190600920106542 + ], + [ + 0.01422226798704651, + 0.014209003600516065, + 0.014234270268654507 + ], + [ + 0.01417841923080195, + 0.01418033867925866, + 0.01417365751768496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0020239600224718, + "scoreError" : 0.020447026162184023, + "scoreConfidence" : [ + 0.9815769338602878, + 1.022470986184656 + ], + "scorePercentiles" : { + "0.0" : 0.9786403171543204, + "50.0" : 1.0060794966800806, + "90.0" : 1.017381385757884, + "95.0" : 1.017381385757884, + "99.0" : 1.017381385757884, + "99.9" : 1.017381385757884, + "99.99" : 1.017381385757884, + "99.999" : 1.017381385757884, + "99.9999" : 1.017381385757884, + "100.0" : 1.017381385757884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0114736057449176, + 1.017381385757884, + 1.0080577986090111 + ], + [ + 0.9922600353209644, + 0.9939197001590141, + 0.9989399211866946 + ], + [ + 1.0114633795893597, + 0.9786403171543204, + 1.0060794966800806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013369104906817872, + "scoreError" : 5.803541797248806E-4, + "scoreConfidence" : [ + 0.012788750727092991, + 0.013949459086542753 + ], + "scorePercentiles" : { + "0.0" : 0.013171773939042702, + "50.0" : 0.013363062333361295, + "90.0" : 0.01359549083414451, + "95.0" : 0.01359549083414451, + "99.0" : 0.01359549083414451, + "99.9" : 0.01359549083414451, + "99.99" : 0.01359549083414451, + "99.999" : 0.01359549083414451, + "99.9999" : 0.01359549083414451, + "100.0" : 0.01359549083414451 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013539637246645636, + 0.01359549083414451, + 0.0135357767250224 + ], + [ + 0.013181602754351786, + 0.013171773939042702, + 0.013190347941700192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8901509541468826, + "scoreError" : 0.03736323494833567, + "scoreConfidence" : [ + 3.852787719198547, + 3.927514189095218 + ], + "scorePercentiles" : { + "0.0" : 3.8659979497681607, + "50.0" : 3.8930672909390642, + "90.0" : 3.9019652425897036, + "95.0" : 3.9019652425897036, + "99.0" : 3.9019652425897036, + "99.9" : 3.9019652425897036, + "99.99" : 3.9019652425897036, + "99.999" : 3.9019652425897036, + "99.9999" : 3.9019652425897036, + "100.0" : 3.9019652425897036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8659979497681607, + 3.9019652425897036, + 3.901129496099844 + ], + [ + 3.89117386848249, + 3.8949607133956388, + 3.8856784545454546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9819383742313637, + "scoreError" : 0.05841787458508158, + "scoreConfidence" : [ + 2.923520499646282, + 3.0403562488164453 + ], + "scorePercentiles" : { + "0.0" : 2.9387547916544228, + "50.0" : 2.9656987298339264, + "90.0" : 3.033763831058538, + "95.0" : 3.033763831058538, + "99.0" : 3.033763831058538, + "99.9" : 3.033763831058538, + "99.99" : 3.033763831058538, + "99.999" : 3.033763831058538, + "99.9999" : 3.033763831058538, + "100.0" : 3.033763831058538 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.033763831058538, + 3.01548591046126, + 3.0099463171832683 + ], + [ + 3.007374973541792, + 2.9656987298339264, + 2.9656569952550416 + ], + [ + 2.9459099366715757, + 2.954853882422452, + 2.9387547916544228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18768522962156822, + "scoreError" : 0.00834799006050313, + "scoreConfidence" : [ + 0.1793372395610651, + 0.19603321968207135 + ], + "scorePercentiles" : { + "0.0" : 0.18104723394586766, + "50.0" : 0.18936799948871383, + "90.0" : 0.19284200376034094, + "95.0" : 0.19284200376034094, + "99.0" : 0.19284200376034094, + "99.9" : 0.19284200376034094, + "99.99" : 0.19284200376034094, + "99.999" : 0.19284200376034094, + "99.9999" : 0.19284200376034094, + "100.0" : 0.19284200376034094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19284200376034094, + 0.1923480044623966, + 0.19192666618685705 + ], + [ + 0.18179211868966896, + 0.18107432534810872, + 0.18104723394586766 + ], + [ + 0.18942655156084257, + 0.18934216315131777, + 0.18936799948871383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34058191618212075, + "scoreError" : 0.003858026612173194, + "scoreConfidence" : [ + 0.33672388956994753, + 0.34443994279429396 + ], + "scorePercentiles" : { + "0.0" : 0.33769021212939826, + "50.0" : 0.3407948157374591, + "90.0" : 0.3438218884686791, + "95.0" : 0.3438218884686791, + "99.0" : 0.3438218884686791, + "99.9" : 0.3438218884686791, + "99.99" : 0.3438218884686791, + "99.999" : 0.3438218884686791, + "99.9999" : 0.3438218884686791, + "100.0" : 0.3438218884686791 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33851800196337295, + 0.33776987850846085, + 0.33769021212939826 + ], + [ + 0.3438218884686791, + 0.34235571417322835, + 0.34216245375851095 + ], + [ + 0.3407948157374591, + 0.3426416534982526, + 0.33948262740172447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16430571049586792, + "scoreError" : 0.006062912563558703, + "scoreConfidence" : [ + 0.15824279793230922, + 0.17036862305942663 + ], + "scorePercentiles" : { + "0.0" : 0.16106335164038718, + "50.0" : 0.16263530021629885, + "90.0" : 0.16930342624477288, + "95.0" : 0.16930342624477288, + "99.0" : 0.16930342624477288, + "99.9" : 0.16930342624477288, + "99.99" : 0.16930342624477288, + "99.999" : 0.16930342624477288, + "99.9999" : 0.16930342624477288, + "100.0" : 0.16930342624477288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16297191605553926, + 0.16218497714851035, + 0.16263530021629885 + ], + [ + 0.16139171223149298, + 0.16106335164038718, + 0.16137712693648334 + ], + [ + 0.16871034478279207, + 0.16911323920653443, + 0.16930342624477288 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4014406332579484, + "scoreError" : 0.0064106096443937105, + "scoreConfidence" : [ + 0.39503002361355466, + 0.4078512429023421 + ], + "scorePercentiles" : { + "0.0" : 0.39696473793267706, + "50.0" : 0.4002436985511887, + "90.0" : 0.40840316928040515, + "95.0" : 0.40840316928040515, + "99.0" : 0.40840316928040515, + "99.9" : 0.40840316928040515, + "99.99" : 0.40840316928040515, + "99.999" : 0.40840316928040515, + "99.9999" : 0.40840316928040515, + "100.0" : 0.40840316928040515 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39874033963317385, + 0.39796666401368935, + 0.39696473793267706 + ], + [ + 0.40840316928040515, + 0.4047517820860485, + 0.40437363024666395 + ], + [ + 0.40258169533011273, + 0.4002436985511887, + 0.3989399822475765 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1622603517749877, + "scoreError" : 0.0022710755266089396, + "scoreConfidence" : [ + 0.15998927624837878, + 0.16453142730159664 + ], + "scorePercentiles" : { + "0.0" : 0.16080216116998183, + "50.0" : 0.16173225106740846, + "90.0" : 0.1650935754874284, + "95.0" : 0.1650935754874284, + "99.0" : 0.1650935754874284, + "99.9" : 0.1650935754874284, + "99.99" : 0.1650935754874284, + "99.999" : 0.1650935754874284, + "99.9999" : 0.1650935754874284, + "100.0" : 0.1650935754874284 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16263024725569594, + 0.16173225106740846, + 0.16164135474485591 + ], + [ + 0.1650935754874284, + 0.1630933295387827, + 0.163012935448114 + ], + [ + 0.16125758538394555, + 0.16080216116998183, + 0.16107972587867658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048687190219174316, + "scoreError" : 0.0012339357980707558, + "scoreConfidence" : [ + 0.04745325442110356, + 0.04992112601724507 + ], + "scorePercentiles" : { + "0.0" : 0.04793252728754254, + "50.0" : 0.048637015865141436, + "90.0" : 0.05031688491166984, + "95.0" : 0.05031688491166984, + "99.0" : 0.05031688491166984, + "99.9" : 0.05031688491166984, + "99.99" : 0.05031688491166984, + "99.999" : 0.05031688491166984, + "99.9999" : 0.05031688491166984, + "100.0" : 0.05031688491166984 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04793252728754254, + 0.04806552263605908, + 0.04803455098325536 + ], + [ + 0.05031688491166984, + 0.04888433324860193, + 0.048948174551274835 + ], + [ + 0.0489710829950295, + 0.048637015865141436, + 0.04839461949399433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9679679.952722099, + "scoreError" : 352471.94224217994, + "scoreConfidence" : [ + 9327208.01047992, + 1.0032151894964278E7 + ], + "scorePercentiles" : { + "0.0" : 9410322.933207903, + "50.0" : 9733389.864785992, + "90.0" : 9917231.136769079, + "95.0" : 9917231.136769079, + "99.0" : 9917231.136769079, + "99.9" : 9917231.136769079, + "99.99" : 9917231.136769079, + "99.999" : 9917231.136769079, + "99.9999" : 9917231.136769079, + "100.0" : 9917231.136769079 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9412682.519285042, + 9417082.15913371, + 9410322.933207903 + ], + [ + 9917231.136769079, + 9867065.872781064, + 9860209.638423646 + ], + [ + 9784028.08797654, + 9715107.362135923, + 9733389.864785992 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json b/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json new file mode 100644 index 0000000000..e6aa8705dc --- /dev/null +++ b/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.425004188960926, + "scoreError" : 0.0174529961835408, + "scoreConfidence" : [ + 3.407551192777385, + 3.442457185144467 + ], + "scorePercentiles" : { + "0.0" : 3.4215569792394542, + "50.0" : 3.4251662860439884, + "90.0" : 3.4281272045162727, + "95.0" : 3.4281272045162727, + "99.0" : 3.4281272045162727, + "99.9" : 3.4281272045162727, + "99.99" : 3.4281272045162727, + "99.999" : 3.4281272045162727, + "99.9999" : 3.4281272045162727, + "100.0" : 3.4281272045162727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4215569792394542, + 3.4281272045162727 + ], + [ + 3.4248539784419494, + 3.425478593646028 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291184118820688, + "scoreError" : 0.004159502908174387, + "scoreConfidence" : [ + 1.7249589089738944, + 1.7332779147902433 + ], + "scorePercentiles" : { + "0.0" : 1.7284478976539939, + "50.0" : 1.7290384028345496, + "90.0" : 1.7299489442051819, + "95.0" : 1.7299489442051819, + "99.0" : 1.7299489442051819, + "99.9" : 1.7299489442051819, + "99.99" : 1.7299489442051819, + "99.999" : 1.7299489442051819, + "99.9999" : 1.7299489442051819, + "100.0" : 1.7299489442051819 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7288253003704586, + 1.7284478976539939 + ], + [ + 1.7292515052986406, + 1.7299489442051819 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8678256118833285, + "scoreError" : 0.006561550956313254, + "scoreConfidence" : [ + 0.8612640609270152, + 0.8743871628396418 + ], + "scorePercentiles" : { + "0.0" : 0.8668878985260587, + "50.0" : 0.8676384753786253, + "90.0" : 0.8691375982500048, + "95.0" : 0.8691375982500048, + "99.0" : 0.8691375982500048, + "99.9" : 0.8691375982500048, + "99.99" : 0.8691375982500048, + "99.999" : 0.8691375982500048, + "99.9999" : 0.8691375982500048, + "100.0" : 0.8691375982500048 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8691375982500048, + 0.8680980953764585 + ], + [ + 0.8671788553807921, + 0.8668878985260587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69300.6801932766, + "scoreError" : 2948.965995832353, + "scoreConfidence" : [ + 66351.71419744425, + 72249.64618910894 + ], + "scorePercentiles" : { + "0.0" : 66905.52137361391, + "50.0" : 70369.64562102163, + "90.0" : 70576.55566451224, + "95.0" : 70576.55566451224, + "99.0" : 70576.55566451224, + "99.9" : 70576.55566451224, + "99.99" : 70576.55566451224, + "99.999" : 70576.55566451224, + "99.9999" : 70576.55566451224, + "100.0" : 70576.55566451224 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70569.49827302896, + 70524.63925300592, + 70576.55566451224 + ], + [ + 70423.57707233248, + 70351.35599478213, + 70369.64562102163 + ], + [ + 66905.52137361391, + 67030.73245789492, + 66954.59602929726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.52049772404257, + "scoreError" : 7.200395101991134, + "scoreConfidence" : [ + 342.3201026220514, + 356.7208928260337 + ], + "scorePercentiles" : { + "0.0" : 344.4032078203839, + "50.0" : 350.22761457137, + "90.0" : 356.6250203740414, + "95.0" : 356.6250203740414, + "99.0" : 356.6250203740414, + "99.9" : 356.6250203740414, + "99.99" : 356.6250203740414, + "99.999" : 356.6250203740414, + "99.9999" : 356.6250203740414, + "100.0" : 356.6250203740414 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.53019390364983, + 350.22761457137, + 351.764415757937 + ], + [ + 356.6250203740414, + 353.5611755887331, + 351.5199872665624 + ], + [ + 344.98688408164884, + 345.0659801520564, + 344.4032078203839 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.37242796876829, + "scoreError" : 6.922906797014581, + "scoreConfidence" : [ + 97.44952117175372, + 111.29533476578287 + ], + "scorePercentiles" : { + "0.0" : 99.71513007956918, + "50.0" : 103.72256768038186, + "90.0" : 109.56034934265045, + "95.0" : 109.56034934265045, + "99.0" : 109.56034934265045, + "99.9" : 109.56034934265045, + "99.99" : 109.56034934265045, + "99.999" : 109.56034934265045, + "99.9999" : 109.56034934265045, + "100.0" : 109.56034934265045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 99.71513007956918, + 100.2024660758994, + 100.0292213935468 + ], + [ + 109.56034934265045, + 109.26460933508037, + 109.43978481861957 + ], + [ + 103.66061563143764, + 103.75710736172933, + 103.72256768038186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014193070731641019, + "scoreError" : 1.3985027221844092E-4, + "scoreConfidence" : [ + 0.014053220459422578, + 0.01433292100385946 + ], + "scorePercentiles" : { + "0.0" : 0.014072886206629656, + "50.0" : 0.014221143006056711, + "90.0" : 0.014279952131259906, + "95.0" : 0.014279952131259906, + "99.0" : 0.014279952131259906, + "99.9" : 0.014279952131259906, + "99.99" : 0.014279952131259906, + "99.999" : 0.014279952131259906, + "99.9999" : 0.014279952131259906, + "100.0" : 0.014279952131259906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014221143006056711, + 0.014226597827339501, + 0.01421779372490588 + ], + [ + 0.014279952131259906, + 0.014266136113009278, + 0.014266727080777242 + ], + [ + 0.014102687160922474, + 0.014083713333868507, + 0.014072886206629656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0134086142929557, + "scoreError" : 0.016656611892461523, + "scoreConfidence" : [ + 0.9967520024004942, + 1.0300652261854173 + ], + "scorePercentiles" : { + "0.0" : 0.9993761009293495, + "50.0" : 1.0191509573015387, + "90.0" : 1.0243929557467732, + "95.0" : 1.0243929557467732, + "99.0" : 1.0243929557467732, + "99.9" : 1.0243929557467732, + "99.99" : 1.0243929557467732, + "99.999" : 1.0243929557467732, + "99.9999" : 1.0243929557467732, + "100.0" : 1.0243929557467732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.020094274479804, + 1.0235628798362333, + 1.0243929557467732 + ], + [ + 1.0194230865443425, + 1.0093312450545013, + 1.0191509573015387 + ], + [ + 1.0041463041470027, + 0.9993761009293495, + 1.0011997245970568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012999582896411559, + "scoreError" : 6.992813461278419E-4, + "scoreConfidence" : [ + 0.012300301550283717, + 0.0136988642425394 + ], + "scorePercentiles" : { + "0.0" : 0.01269426261526119, + "50.0" : 0.012976330358043518, + "90.0" : 0.013273546866330943, + "95.0" : 0.013273546866330943, + "99.0" : 0.013273546866330943, + "99.9" : 0.013273546866330943, + "99.99" : 0.013273546866330943, + "99.999" : 0.013273546866330943, + "99.9999" : 0.013273546866330943, + "100.0" : 0.013273546866330943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013119807961963936, + 0.013259157202067318, + 0.013273546866330943 + ], + [ + 0.01269426261526119, + 0.012817869978722859, + 0.0128328527541231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.709114407689517, + "scoreError" : 0.05197450643726689, + "scoreConfidence" : [ + 3.65713990125225, + 3.7610889141267836 + ], + "scorePercentiles" : { + "0.0" : 3.6743841410727405, + "50.0" : 3.712563719022545, + "90.0" : 3.7299658426547353, + "95.0" : 3.7299658426547353, + "99.0" : 3.7299658426547353, + "99.9" : 3.7299658426547353, + "99.99" : 3.7299658426547353, + "99.999" : 3.7299658426547353, + "99.9999" : 3.7299658426547353, + "100.0" : 3.7299658426547353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6743841410727405, + 3.7137454847809948, + 3.716191622585438 + ], + [ + 3.711381953264095, + 3.7299658426547353, + 3.7090174017790956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.908876032349584, + "scoreError" : 0.06653523093807073, + "scoreConfidence" : [ + 2.8423408014115132, + 2.975411263287655 + ], + "scorePercentiles" : { + "0.0" : 2.859286373927959, + "50.0" : 2.9278416536885246, + "90.0" : 2.9591043917159765, + "95.0" : 2.9591043917159765, + "99.0" : 2.9591043917159765, + "99.9" : 2.9591043917159765, + "99.99" : 2.9591043917159765, + "99.999" : 2.9591043917159765, + "99.9999" : 2.9591043917159765, + "100.0" : 2.9591043917159765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.885501371609925, + 2.9278416536885246, + 2.932055654353562 + ], + [ + 2.859286373927959, + 2.8695159586800574, + 2.862702666571265 + ], + [ + 2.930786301201289, + 2.9591043917159765, + 2.953089919397697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18940902420611713, + "scoreError" : 0.012623487496932687, + "scoreConfidence" : [ + 0.17678553670918445, + 0.2020325117030498 + ], + "scorePercentiles" : { + "0.0" : 0.17928718473233174, + "50.0" : 0.19351137820736097, + "90.0" : 0.19568663671408723, + "95.0" : 0.19568663671408723, + "99.0" : 0.19568663671408723, + "99.9" : 0.19568663671408723, + "99.99" : 0.19568663671408723, + "99.999" : 0.19568663671408723, + "99.9999" : 0.19568663671408723, + "100.0" : 0.19568663671408723 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19346425306635712, + 0.19351137820736097, + 0.19361049129736113 + ], + [ + 0.17968087045189113, + 0.1793736514501982, + 0.17928718473233174 + ], + [ + 0.19568663671408723, + 0.19518574770660108, + 0.19488100422886542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3257654980395767, + "scoreError" : 0.003647712937679187, + "scoreConfidence" : [ + 0.32211778510189754, + 0.3294132109772559 + ], + "scorePercentiles" : { + "0.0" : 0.32280374912037185, + "50.0" : 0.32625077087955107, + "90.0" : 0.3281728269943885, + "95.0" : 0.3281728269943885, + "99.0" : 0.3281728269943885, + "99.9" : 0.3281728269943885, + "99.99" : 0.3281728269943885, + "99.999" : 0.3281728269943885, + "99.9999" : 0.3281728269943885, + "100.0" : 0.3281728269943885 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32630149026005806, + 0.32592821641353237, + 0.32625077087955107 + ], + [ + 0.32797510793348855, + 0.3279792810665442, + 0.3281728269943885 + ], + [ + 0.32311754786907493, + 0.32280374912037185, + 0.32336049181918125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1664925346902736, + "scoreError" : 0.009505190969284327, + "scoreConfidence" : [ + 0.1569873437209893, + 0.17599772565955793 + ], + "scorePercentiles" : { + "0.0" : 0.1592184539071456, + "50.0" : 0.16805786182673724, + "90.0" : 0.1724910860888314, + "95.0" : 0.1724910860888314, + "99.0" : 0.1724910860888314, + "99.9" : 0.1724910860888314, + "99.99" : 0.1724910860888314, + "99.999" : 0.1724910860888314, + "99.9999" : 0.1724910860888314, + "100.0" : 0.1724910860888314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15938114037995665, + 0.1594989847523047, + 0.1592184539071456 + ], + [ + 0.1676237910793007, + 0.1681097820327472, + 0.16805786182673724 + ], + [ + 0.1724910860888314, + 0.172039499939787, + 0.17201221220565216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38993431325865663, + "scoreError" : 0.009461256488847478, + "scoreConfidence" : [ + 0.38047305676980914, + 0.3993955697475041 + ], + "scorePercentiles" : { + "0.0" : 0.3824617474280032, + "50.0" : 0.39044726392847384, + "90.0" : 0.3966692765856174, + "95.0" : 0.3966692765856174, + "99.0" : 0.3966692765856174, + "99.9" : 0.3966692765856174, + "99.99" : 0.3966692765856174, + "99.999" : 0.3966692765856174, + "99.9999" : 0.3966692765856174, + "100.0" : 0.3966692765856174 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3966692765856174, + 0.39627204069583133, + 0.39586610612778084 + ], + [ + 0.3852658757945833, + 0.38265304564934566, + 0.3824617474280032 + ], + [ + 0.39087826020168853, + 0.39044726392847384, + 0.38889520291658564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1580856687466588, + "scoreError" : 0.00260313401060033, + "scoreConfidence" : [ + 0.15548253473605847, + 0.16068880275725914 + ], + "scorePercentiles" : { + "0.0" : 0.1561233264484099, + "50.0" : 0.15758299941695555, + "90.0" : 0.16031973716273626, + "95.0" : 0.16031973716273626, + "99.0" : 0.16031973716273626, + "99.9" : 0.16031973716273626, + "99.99" : 0.16031973716273626, + "99.999" : 0.16031973716273626, + "99.9999" : 0.16031973716273626, + "100.0" : 0.16031973716273626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1595882914159871, + 0.16031973716273626, + 0.1598122411666001 + ], + [ + 0.15758299941695555, + 0.15727130698581449, + 0.15731520293229298 + ], + [ + 0.15852091390980425, + 0.1561233264484099, + 0.15623699928132861 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04749293708460388, + "scoreError" : 8.250305964143997E-4, + "scoreConfidence" : [ + 0.04666790648818948, + 0.04831796768101828 + ], + "scorePercentiles" : { + "0.0" : 0.046976803193438374, + "50.0" : 0.0473359307863807, + "90.0" : 0.048134309229621426, + "95.0" : 0.048134309229621426, + "99.0" : 0.048134309229621426, + "99.9" : 0.048134309229621426, + "99.99" : 0.048134309229621426, + "99.999" : 0.048134309229621426, + "99.9999" : 0.048134309229621426, + "100.0" : 0.048134309229621426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04756417431092297, + 0.04726491346844633, + 0.0473359307863807 + ], + [ + 0.04698740704143291, + 0.046976803193438374, + 0.04701674583554701 + ], + [ + 0.04810798255151081, + 0.048134309229621426, + 0.048048167344134377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9524975.016775662, + "scoreError" : 289751.35326766694, + "scoreConfidence" : [ + 9235223.663507994, + 9814726.37004333 + ], + "scorePercentiles" : { + "0.0" : 9370765.244382022, + "50.0" : 9429927.322337417, + "90.0" : 9768079.684570312, + "95.0" : 9768079.684570312, + "99.0" : 9768079.684570312, + "99.9" : 9768079.684570312, + "99.99" : 9768079.684570312, + "99.999" : 9768079.684570312, + "99.9999" : 9768079.684570312, + "100.0" : 9768079.684570312 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9742250.733203506, + 9768079.684570312, + 9749335.159844054 + ], + [ + 9435293.098113207, + 9427336.44674835, + 9429927.322337417 + ], + [ + 9397928.663849765, + 9370765.244382022, + 9403858.79793233 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json b/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json new file mode 100644 index 0000000000..d7a3282577 --- /dev/null +++ b/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4155242671178643, + "scoreError" : 0.021366874756141404, + "scoreConfidence" : [ + 3.394157392361723, + 3.4368911418740056 + ], + "scorePercentiles" : { + "0.0" : 3.4126757505658514, + "50.0" : 3.414666030565734, + "90.0" : 3.420089256774136, + "95.0" : 3.420089256774136, + "99.0" : 3.420089256774136, + "99.9" : 3.420089256774136, + "99.99" : 3.420089256774136, + "99.999" : 3.420089256774136, + "99.9999" : 3.420089256774136, + "100.0" : 3.420089256774136 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4157554002096697, + 3.413576660921798 + ], + [ + 3.4126757505658514, + 3.420089256774136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7256630448941475, + "scoreError" : 0.011635721260581646, + "scoreConfidence" : [ + 1.714027323633566, + 1.737298766154729 + ], + "scorePercentiles" : { + "0.0" : 1.723193635282295, + "50.0" : 1.725973087245099, + "90.0" : 1.7275123698040975, + "95.0" : 1.7275123698040975, + "99.0" : 1.7275123698040975, + "99.9" : 1.7275123698040975, + "99.99" : 1.7275123698040975, + "99.999" : 1.7275123698040975, + "99.9999" : 1.7275123698040975, + "100.0" : 1.7275123698040975 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7260644171569068, + 1.7275123698040975 + ], + [ + 1.723193635282295, + 1.7258817573332907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674451074711825, + "scoreError" : 0.004249137348369588, + "scoreConfidence" : [ + 0.8631959701228129, + 0.8716942448195522 + ], + "scorePercentiles" : { + "0.0" : 0.8665786884079261, + "50.0" : 0.8675735756317964, + "90.0" : 0.8680545902132113, + "95.0" : 0.8680545902132113, + "99.0" : 0.8680545902132113, + "99.9" : 0.8680545902132113, + "99.99" : 0.8680545902132113, + "99.999" : 0.8680545902132113, + "99.9999" : 0.8680545902132113, + "100.0" : 0.8680545902132113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673071258039897, + 0.8680545902132113 + ], + [ + 0.8665786884079261, + 0.8678400254596029 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70504.76307379914, + "scoreError" : 624.3060851188214, + "scoreConfidence" : [ + 69880.45698868032, + 71129.06915891796 + ], + "scorePercentiles" : { + "0.0" : 69782.18803539468, + "50.0" : 70549.373916216, + "90.0" : 70890.4395602008, + "95.0" : 70890.4395602008, + "99.0" : 70890.4395602008, + "99.9" : 70890.4395602008, + "99.99" : 70890.4395602008, + "99.999" : 70890.4395602008, + "99.9999" : 70890.4395602008, + "100.0" : 70890.4395602008 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70810.01885219604, + 70549.373916216, + 70502.1469169721 + ], + [ + 70244.23636788203, + 69782.18803539468, + 70180.44548991376 + ], + [ + 70797.86184337315, + 70786.15668204376, + 70890.4395602008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.1163493384629, + "scoreError" : 4.629038164553738, + "scoreConfidence" : [ + 339.4873111739092, + 348.7453875030166 + ], + "scorePercentiles" : { + "0.0" : 339.99341521153025, + "50.0" : 344.63463159856883, + "90.0" : 347.6493297625378, + "95.0" : 347.6493297625378, + "99.0" : 347.6493297625378, + "99.9" : 347.6493297625378, + "99.99" : 347.6493297625378, + "99.999" : 347.6493297625378, + "99.9999" : 347.6493297625378, + "100.0" : 347.6493297625378 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.65194830682475, + 343.2995607102032, + 339.99341521153025 + ], + [ + 345.1038421289899, + 347.6493297625378, + 346.38617001258297 + ], + [ + 344.63463159856883, + 340.37714261970393, + 346.9511036952247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.35398262068469, + "scoreError" : 3.698496186029317, + "scoreConfidence" : [ + 101.65548643465537, + 109.052478806714 + ], + "scorePercentiles" : { + "0.0" : 102.45147063371301, + "50.0" : 106.25917608524738, + "90.0" : 108.11542107904748, + "95.0" : 108.11542107904748, + "99.0" : 108.11542107904748, + "99.9" : 108.11542107904748, + "99.99" : 108.11542107904748, + "99.999" : 108.11542107904748, + "99.9999" : 108.11542107904748, + "100.0" : 108.11542107904748 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.66020454166096, + 102.45147063371301, + 102.92241228943182 + ], + [ + 106.7842668012313, + 107.62840877904392, + 108.11542107904748 + ], + [ + 104.88238605208642, + 106.25917608524738, + 106.48209732469995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014213492598747074, + "scoreError" : 7.099203275016753E-5, + "scoreConfidence" : [ + 0.014142500565996906, + 0.014284484631497242 + ], + "scorePercentiles" : { + "0.0" : 0.014149042191943632, + "50.0" : 0.01422631078726077, + "90.0" : 0.014281189885095554, + "95.0" : 0.014281189885095554, + "99.0" : 0.014281189885095554, + "99.9" : 0.014281189885095554, + "99.99" : 0.014281189885095554, + "99.999" : 0.014281189885095554, + "99.9999" : 0.014281189885095554, + "100.0" : 0.014281189885095554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014203040847456905, + 0.014155791548526187, + 0.014197787038719717 + ], + [ + 0.014244770724807378, + 0.014281189885095554, + 0.014236574419438972 + ], + [ + 0.014149042191943632, + 0.01422692594547454, + 0.01422631078726077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0081913559861528, + "scoreError" : 0.016135465762877176, + "scoreConfidence" : [ + 0.9920558902232757, + 1.02432682174903 + ], + "scorePercentiles" : { + "0.0" : 0.9921777786486755, + "50.0" : 1.006073398390342, + "90.0" : 1.0239972782101168, + "95.0" : 1.0239972782101168, + "99.0" : 1.0239972782101168, + "99.9" : 1.0239972782101168, + "99.99" : 1.0239972782101168, + "99.999" : 1.0239972782101168, + "99.9999" : 1.0239972782101168, + "100.0" : 1.0239972782101168 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0142654561866127, + 1.01110784774037, + 1.0239972782101168 + ], + [ + 1.0051798572720876, + 1.004683809121961, + 1.0170640514593714 + ], + [ + 1.006073398390342, + 0.9921777786486755, + 0.9991727268458388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01318987517952846, + "scoreError" : 8.277840973854652E-4, + "scoreConfidence" : [ + 0.012362091082142994, + 0.014017659276913926 + ], + "scorePercentiles" : { + "0.0" : 0.012867848170490049, + "50.0" : 0.013192078718330464, + "90.0" : 0.013497093532112692, + "95.0" : 0.013497093532112692, + "99.0" : 0.013497093532112692, + "99.9" : 0.013497093532112692, + "99.99" : 0.013497093532112692, + "99.999" : 0.013497093532112692, + "99.9999" : 0.013497093532112692, + "100.0" : 0.013497093532112692 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013497093532112692, + 0.01340318480504372, + 0.013467493731061882 + ], + [ + 0.012867848170490049, + 0.012922658206845218, + 0.012980972631617207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6633665231890657, + "scoreError" : 0.06570786988662425, + "scoreConfidence" : [ + 3.5976586533024415, + 3.72907439307569 + ], + "scorePercentiles" : { + "0.0" : 3.635598972383721, + "50.0" : 3.6661064322808183, + "90.0" : 3.691381441328413, + "95.0" : 3.691381441328413, + "99.0" : 3.691381441328413, + "99.9" : 3.691381441328413, + "99.99" : 3.691381441328413, + "99.999" : 3.691381441328413, + "99.9999" : 3.691381441328413, + "100.0" : 3.691381441328413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6367515265454546, + 3.6622488674963396, + 3.669963997065297 + ], + [ + 3.635598972383721, + 3.691381441328413, + 3.6842543343151695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8219502049935965, + "scoreError" : 0.04334966840170217, + "scoreConfidence" : [ + 2.7786005365918944, + 2.8652998733952986 + ], + "scorePercentiles" : { + "0.0" : 2.784729027561247, + "50.0" : 2.8237416016374928, + "90.0" : 2.8593693684962838, + "95.0" : 2.8593693684962838, + "99.0" : 2.8593693684962838, + "99.9" : 2.8593693684962838, + "99.99" : 2.8593693684962838, + "99.999" : 2.8593693684962838, + "99.9999" : 2.8593693684962838, + "100.0" : 2.8593693684962838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.787435985785953, + 2.784729027561247, + 2.8094674806179776 + ], + [ + 2.82518856299435, + 2.815962915259009, + 2.8237416016374928 + ], + [ + 2.8466063020210646, + 2.84505060056899, + 2.8593693684962838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.181212277502675, + "scoreError" : 0.015454213970487527, + "scoreConfidence" : [ + 0.16575806353218747, + 0.1966664914731625 + ], + "scorePercentiles" : { + "0.0" : 0.17226614054882775, + "50.0" : 0.17801267326485928, + "90.0" : 0.19332841403908985, + "95.0" : 0.19332841403908985, + "99.0" : 0.19332841403908985, + "99.9" : 0.19332841403908985, + "99.99" : 0.19332841403908985, + "99.999" : 0.19332841403908985, + "99.9999" : 0.19332841403908985, + "100.0" : 0.19332841403908985 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19299061562807573, + 0.1928803875248327, + 0.19332841403908985 + ], + [ + 0.1729473925495486, + 0.17255121123285308, + 0.17226614054882775 + ], + [ + 0.1783403926418661, + 0.17801267326485928, + 0.17759327009412182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33635890077558334, + "scoreError" : 0.020346260493578534, + "scoreConfidence" : [ + 0.3160126402820048, + 0.35670516126916185 + ], + "scorePercentiles" : { + "0.0" : 0.3262282423501011, + "50.0" : 0.329679224705766, + "90.0" : 0.3527149473405756, + "95.0" : 0.3527149473405756, + "99.0" : 0.3527149473405756, + "99.9" : 0.3527149473405756, + "99.99" : 0.3527149473405756, + "99.999" : 0.3527149473405756, + "99.9999" : 0.3527149473405756, + "100.0" : 0.3527149473405756 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3524606698269482, + 0.3519048874305018, + 0.3527149473405756 + ], + [ + 0.3262282423501011, + 0.3267454162255767, + 0.32682386309562717 + ], + [ + 0.3311071462437506, + 0.3295657097614026, + 0.329679224705766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17155921178043101, + "scoreError" : 0.005706412048826315, + "scoreConfidence" : [ + 0.1658527997316047, + 0.17726562382925734 + ], + "scorePercentiles" : { + "0.0" : 0.16605277506932567, + "50.0" : 0.17356418499748338, + "90.0" : 0.17465667584183317, + "95.0" : 0.17465667584183317, + "99.0" : 0.17465667584183317, + "99.9" : 0.17465667584183317, + "99.99" : 0.17465667584183317, + "99.999" : 0.17465667584183317, + "99.9999" : 0.17465667584183317, + "100.0" : 0.17465667584183317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16605277506932567, + 0.16713794880665864, + 0.16820257048424805 + ], + [ + 0.17374464774050072, + 0.1729026097653751, + 0.17465667584183317 + ], + [ + 0.17356418499748338, + 0.17366743593484074, + 0.17410405738361365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40108385604350244, + "scoreError" : 0.004093280443088559, + "scoreConfidence" : [ + 0.3969905756004139, + 0.405177136486591 + ], + "scorePercentiles" : { + "0.0" : 0.39789512596984045, + "50.0" : 0.40023563443528376, + "90.0" : 0.40471912991217773, + "95.0" : 0.40471912991217773, + "99.0" : 0.40471912991217773, + "99.9" : 0.40471912991217773, + "99.99" : 0.40471912991217773, + "99.999" : 0.40471912991217773, + "99.9999" : 0.40471912991217773, + "100.0" : 0.40471912991217773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3998197200143931, + 0.40023563443528376, + 0.39970199716215676 + ], + [ + 0.40471912991217773, + 0.4044219175799733, + 0.40312262095376306 + ], + [ + 0.4008796912531067, + 0.3989588671108274, + 0.39789512596984045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16044247923562138, + "scoreError" : 0.0020666140587943618, + "scoreConfidence" : [ + 0.15837586517682703, + 0.16250909329441574 + ], + "scorePercentiles" : { + "0.0" : 0.15859480142732535, + "50.0" : 0.16041678557564285, + "90.0" : 0.16204565700350013, + "95.0" : 0.16204565700350013, + "99.0" : 0.16204565700350013, + "99.9" : 0.16204565700350013, + "99.99" : 0.16204565700350013, + "99.999" : 0.16204565700350013, + "99.9999" : 0.16204565700350013, + "100.0" : 0.16204565700350013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16193803345532273, + 0.16144244192241253, + 0.16204565700350013 + ], + [ + 0.1603984048695987, + 0.16059771067465353, + 0.15952169556062468 + ], + [ + 0.16041678557564285, + 0.159026782631512, + 0.15859480142732535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04701046030973298, + "scoreError" : 3.8555797178145215E-4, + "scoreConfidence" : [ + 0.046624902337951524, + 0.047396018281514435 + ], + "scorePercentiles" : { + "0.0" : 0.046712751198161415, + "50.0" : 0.04703237564786335, + "90.0" : 0.047322644024645324, + "95.0" : 0.047322644024645324, + "99.0" : 0.047322644024645324, + "99.9" : 0.047322644024645324, + "99.99" : 0.047322644024645324, + "99.999" : 0.047322644024645324, + "99.9999" : 0.047322644024645324, + "100.0" : 0.047322644024645324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047322644024645324, + 0.047222791438623, + 0.04703237564786335 + ], + [ + 0.04725773195720389, + 0.04681896056968426, + 0.046712751198161415 + ], + [ + 0.04707274059969874, + 0.046928389102410685, + 0.04672575824930613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9430758.342778, + "scoreError" : 263280.67197279376, + "scoreConfidence" : [ + 9167477.670805205, + 9694039.014750794 + ], + "scorePercentiles" : { + "0.0" : 9210703.829650093, + "50.0" : 9476646.130681818, + "90.0" : 9617267.366346154, + "95.0" : 9617267.366346154, + "99.0" : 9617267.366346154, + "99.9" : 9617267.366346154, + "99.99" : 9617267.366346154, + "99.999" : 9617267.366346154, + "99.9999" : 9617267.366346154, + "100.0" : 9617267.366346154 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9476646.130681818, + 9423476.688323917, + 9498627.851851853 + ], + [ + 9242939.773567468, + 9210703.829650093, + 9258214.512488436 + ], + [ + 9569795.895693779, + 9579153.036398467, + 9617267.366346154 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json b/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json new file mode 100644 index 0000000000..f52aae0279 --- /dev/null +++ b/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41828965785467, + "scoreError" : 0.03630562611823795, + "scoreConfidence" : [ + 3.3819840317364323, + 3.4545952839729077 + ], + "scorePercentiles" : { + "0.0" : 3.4122457287978434, + "50.0" : 3.417858050147738, + "90.0" : 3.4251968023253596, + "95.0" : 3.4251968023253596, + "99.0" : 3.4251968023253596, + "99.9" : 3.4251968023253596, + "99.99" : 3.4251968023253596, + "99.999" : 3.4251968023253596, + "99.9999" : 3.4251968023253596, + "100.0" : 3.4251968023253596 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4201038015672776, + 3.4251968023253596 + ], + [ + 3.4122457287978434, + 3.415612298728198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7263085250284311, + "scoreError" : 0.007038612914019544, + "scoreConfidence" : [ + 1.7192699121144115, + 1.7333471379424508 + ], + "scorePercentiles" : { + "0.0" : 1.72514416466237, + "50.0" : 1.7262999109653892, + "90.0" : 1.727490113520576, + "95.0" : 1.727490113520576, + "99.0" : 1.727490113520576, + "99.9" : 1.727490113520576, + "99.99" : 1.727490113520576, + "99.999" : 1.727490113520576, + "99.9999" : 1.727490113520576, + "100.0" : 1.727490113520576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72514416466237, + 1.7256645954268708 + ], + [ + 1.727490113520576, + 1.7269352265039075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.86899198118607, + "scoreError" : 0.0011975356626304622, + "scoreConfidence" : [ + 0.8677944455234395, + 0.8701895168487005 + ], + "scorePercentiles" : { + "0.0" : 0.8688009019274694, + "50.0" : 0.8689987999936732, + "90.0" : 0.8691694228294644, + "95.0" : 0.8691694228294644, + "99.0" : 0.8691694228294644, + "99.9" : 0.8691694228294644, + "99.99" : 0.8691694228294644, + "99.999" : 0.8691694228294644, + "99.9999" : 0.8691694228294644, + "100.0" : 0.8691694228294644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688666246158518, + 0.8691694228294644 + ], + [ + 0.8688009019274694, + 0.8691309753714946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70232.01481354213, + "scoreError" : 1538.188912414745, + "scoreConfidence" : [ + 68693.82590112739, + 71770.20372595688 + ], + "scorePercentiles" : { + "0.0" : 68834.11719335812, + "50.0" : 70335.7912615769, + "90.0" : 71248.55268371207, + "95.0" : 71248.55268371207, + "99.0" : 71248.55268371207, + "99.9" : 71248.55268371207, + "99.99" : 71248.55268371207, + "99.999" : 71248.55268371207, + "99.9999" : 71248.55268371207, + "100.0" : 71248.55268371207 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70335.7912615769, + 70318.29869520647, + 70615.3482588539 + ], + [ + 68834.11719335812, + 69184.4699954476, + 69310.74272699936 + ], + [ + 71248.55268371207, + 71233.87557474103, + 71006.93693198367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.7358560146452, + "scoreError" : 9.45323495910323, + "scoreConfidence" : [ + 339.282621055542, + 358.1890909737484 + ], + "scorePercentiles" : { + "0.0" : 339.467589297965, + "50.0" : 351.0502196395492, + "90.0" : 355.2367532576896, + "95.0" : 355.2367532576896, + "99.0" : 355.2367532576896, + "99.9" : 355.2367532576896, + "99.99" : 355.2367532576896, + "99.999" : 355.2367532576896, + "99.9999" : 355.2367532576896, + "100.0" : 355.2367532576896 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 348.6266856905834, + 353.7210730850551, + 355.2367532576896 + ], + [ + 352.2086936648004, + 352.1941358313394, + 351.0502196395492 + ], + [ + 341.2831938162754, + 344.83435984855004, + 339.467589297965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.8976425616819, + "scoreError" : 4.5235077479722525, + "scoreConfidence" : [ + 104.37413481370966, + 113.42115030965415 + ], + "scorePercentiles" : { + "0.0" : 105.13588070683821, + "50.0" : 109.84674602291123, + "90.0" : 111.53991107410427, + "95.0" : 111.53991107410427, + "99.0" : 111.53991107410427, + "99.9" : 111.53991107410427, + "99.99" : 111.53991107410427, + "99.999" : 111.53991107410427, + "99.9999" : 111.53991107410427, + "100.0" : 111.53991107410427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.9271038747169, + 109.84674602291123, + 109.28821350660738 + ], + [ + 111.47146048588766, + 111.53978992907797, + 111.53991107410427 + ], + [ + 105.33613831237075, + 105.13588070683821, + 105.99353914262285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014151886837748762, + "scoreError" : 1.8201815515134884E-4, + "scoreConfidence" : [ + 0.013969868682597412, + 0.01433390499290011 + ], + "scorePercentiles" : { + "0.0" : 0.014046185393534612, + "50.0" : 0.014093099466441932, + "90.0" : 0.014298931872192083, + "95.0" : 0.014298931872192083, + "99.0" : 0.014298931872192083, + "99.9" : 0.014298931872192083, + "99.99" : 0.014298931872192083, + "99.999" : 0.014298931872192083, + "99.9999" : 0.014298931872192083, + "100.0" : 0.014298931872192083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014065132065705843, + 0.014167577229310642, + 0.014048452400921006 + ], + [ + 0.014294062328473413, + 0.014270803594771241, + 0.014298931872192083 + ], + [ + 0.014093099466441932, + 0.01408273718838808, + 0.014046185393534612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9825431540425588, + "scoreError" : 0.010821959248908594, + "scoreConfidence" : [ + 0.9717211947936502, + 0.9933651132914674 + ], + "scorePercentiles" : { + "0.0" : 0.9743582786438035, + "50.0" : 0.9813524897458542, + "90.0" : 0.993766748981417, + "95.0" : 0.993766748981417, + "99.0" : 0.993766748981417, + "99.9" : 0.993766748981417, + "99.99" : 0.993766748981417, + "99.999" : 0.993766748981417, + "99.9999" : 0.993766748981417, + "100.0" : 0.993766748981417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9828495155773955, + 0.978821331604189, + 0.9806014058638949 + ], + [ + 0.9832963547689282, + 0.9763275131309187, + 0.9813524897458542 + ], + [ + 0.9743582786438035, + 0.993766748981417, + 0.991514748066627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01300260075448132, + "scoreError" : 8.023467513972726E-4, + "scoreConfidence" : [ + 0.012200254003084048, + 0.013804947505878594 + ], + "scorePercentiles" : { + "0.0" : 0.012720992199664173, + "50.0" : 0.012971484214673937, + "90.0" : 0.013335832962161846, + "95.0" : 0.013335832962161846, + "99.0" : 0.013335832962161846, + "99.9" : 0.013335832962161846, + "99.99" : 0.013335832962161846, + "99.999" : 0.013335832962161846, + "99.9999" : 0.013335832962161846, + "100.0" : 0.013335832962161846 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012720992199664173, + 0.012732649700408199, + 0.012790562874435309 + ], + [ + 0.013152405554912565, + 0.013283161235305837, + 0.013335832962161846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7915260479825292, + "scoreError" : 0.1983707891453185, + "scoreConfidence" : [ + 3.5931552588372107, + 3.989896837127848 + ], + "scorePercentiles" : { + "0.0" : 3.6699134086573735, + "50.0" : 3.7937304046584868, + "90.0" : 3.8893684937791604, + "95.0" : 3.8893684937791604, + "99.0" : 3.8893684937791604, + "99.9" : 3.8893684937791604, + "99.99" : 3.8893684937791604, + "99.999" : 3.8893684937791604, + "99.9999" : 3.8893684937791604, + "100.0" : 3.8893684937791604 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6699134086573735, + 3.7899163765151513, + 3.797544432801822 + ], + [ + 3.8893684937791604, + 3.7865034678274037, + 3.815910108314264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8929701553211618, + "scoreError" : 0.11108803922461892, + "scoreConfidence" : [ + 2.781882116096543, + 3.0040581945457805 + ], + "scorePercentiles" : { + "0.0" : 2.7998811998880178, + "50.0" : 2.9051692349695033, + "90.0" : 2.975505501636418, + "95.0" : 2.975505501636418, + "99.0" : 2.975505501636418, + "99.9" : 2.975505501636418, + "99.99" : 2.975505501636418, + "99.999" : 2.975505501636418, + "99.9999" : 2.975505501636418, + "100.0" : 2.975505501636418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.975505501636418, + 2.9466927030053034, + 2.966848873331356 + ], + [ + 2.827787556969183, + 2.7998811998880178, + 2.8193454034395264 + ], + [ + 2.9229998939216832, + 2.9051692349695033, + 2.872501030729466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17544947039487774, + "scoreError" : 0.0052488607290020655, + "scoreConfidence" : [ + 0.17020060966587566, + 0.1806983311238798 + ], + "scorePercentiles" : { + "0.0" : 0.17165985189508376, + "50.0" : 0.17549794610578778, + "90.0" : 0.179824128751506, + "95.0" : 0.179824128751506, + "99.0" : 0.179824128751506, + "99.9" : 0.179824128751506, + "99.99" : 0.179824128751506, + "99.999" : 0.179824128751506, + "99.9999" : 0.179824128751506, + "100.0" : 0.179824128751506 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17227370679942808, + 0.17183004900512044, + 0.17165985189508376 + ], + [ + 0.178551218915155, + 0.179824128751506, + 0.17882252447114783 + ], + [ + 0.17549794610578778, + 0.17569065722066057, + 0.17489515039001013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3358209039887323, + "scoreError" : 0.015562757724852853, + "scoreConfidence" : [ + 0.3202581462638795, + 0.35138366171358515 + ], + "scorePercentiles" : { + "0.0" : 0.32385241021406136, + "50.0" : 0.3377909938186117, + "90.0" : 0.34700695846490165, + "95.0" : 0.34700695846490165, + "99.0" : 0.34700695846490165, + "99.9" : 0.34700695846490165, + "99.99" : 0.34700695846490165, + "99.999" : 0.34700695846490165, + "99.9999" : 0.34700695846490165, + "100.0" : 0.34700695846490165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32521056380487806, + 0.32385241021406136, + 0.32386125089060175 + ], + [ + 0.34700695846490165, + 0.34364055864059656, + 0.3447147407790417 + ], + [ + 0.3377909938186117, + 0.3400444924342888, + 0.336266166851609 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16134176687262286, + "scoreError" : 0.004812602207946651, + "scoreConfidence" : [ + 0.1565291646646762, + 0.16615436908056952 + ], + "scorePercentiles" : { + "0.0" : 0.1572061005313463, + "50.0" : 0.16288815610900265, + "90.0" : 0.16382506316962092, + "95.0" : 0.16382506316962092, + "99.0" : 0.16382506316962092, + "99.9" : 0.16382506316962092, + "99.99" : 0.16382506316962092, + "99.999" : 0.16382506316962092, + "99.9999" : 0.16382506316962092, + "100.0" : 0.16382506316962092 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15762173064859328, + 0.1578787331270425, + 0.1572061005313463 + ], + [ + 0.16345162815860875, + 0.16382506316962092, + 0.16329059359589823 + ], + [ + 0.1623845217751364, + 0.16352937473835688, + 0.16288815610900265 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39310674445864563, + "scoreError" : 0.010868598898243683, + "scoreConfidence" : [ + 0.3822381455604019, + 0.40397534335688934 + ], + "scorePercentiles" : { + "0.0" : 0.3862654843182696, + "50.0" : 0.3901732209129926, + "90.0" : 0.40193320541778865, + "95.0" : 0.40193320541778865, + "99.0" : 0.40193320541778865, + "99.9" : 0.40193320541778865, + "99.99" : 0.40193320541778865, + "99.999" : 0.40193320541778865, + "99.9999" : 0.40193320541778865, + "100.0" : 0.40193320541778865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3939431058893047, + 0.3866839318304849, + 0.3862654843182696 + ], + [ + 0.40193320541778865, + 0.4007557186022281, + 0.4009131120109044 + ], + [ + 0.3901732209129926, + 0.3883718215853043, + 0.38892109956053356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15737170175876328, + "scoreError" : 8.129918877386329E-4, + "scoreConfidence" : [ + 0.15655870987102463, + 0.15818469364650192 + ], + "scorePercentiles" : { + "0.0" : 0.15657145389071553, + "50.0" : 0.157625196081522, + "90.0" : 0.1578368545250797, + "95.0" : 0.1578368545250797, + "99.0" : 0.1578368545250797, + "99.9" : 0.1578368545250797, + "99.99" : 0.1578368545250797, + "99.999" : 0.1578368545250797, + "99.9999" : 0.1578368545250797, + "100.0" : 0.1578368545250797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.156874781762279, + 0.15678063731284786, + 0.15657145389071553 + ], + [ + 0.1575724023540905, + 0.157625196081522, + 0.1578368545250797 + ], + [ + 0.15765837165379157, + 0.15771490363839955, + 0.15771071461014383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04741806749151767, + "scoreError" : 0.0014343819370443356, + "scoreConfidence" : [ + 0.04598368555447333, + 0.048852449428562005 + ], + "scorePercentiles" : { + "0.0" : 0.04673769655968555, + "50.0" : 0.04698499036351762, + "90.0" : 0.04928052339557369, + "95.0" : 0.04928052339557369, + "99.0" : 0.04928052339557369, + "99.9" : 0.04928052339557369, + "99.99" : 0.04928052339557369, + "99.999" : 0.04928052339557369, + "99.9999" : 0.04928052339557369, + "100.0" : 0.04928052339557369 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04682732774065455, + 0.046959641036477706, + 0.04698499036351762 + ], + [ + 0.04928052339557369, + 0.04791430007809917, + 0.048122328429744905 + ], + [ + 0.04700595427325117, + 0.04673769655968555, + 0.04692984554665465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9288801.490699522, + "scoreError" : 154527.26504390594, + "scoreConfidence" : [ + 9134274.225655615, + 9443328.755743429 + ], + "scorePercentiles" : { + "0.0" : 9205640.332106715, + "50.0" : 9236812.06278855, + "90.0" : 9426756.017907634, + "95.0" : 9426756.017907634, + "99.0" : 9426756.017907634, + "99.9" : 9426756.017907634, + "99.99" : 9426756.017907634, + "99.999" : 9426756.017907634, + "99.9999" : 9426756.017907634, + "100.0" : 9426756.017907634 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9376145.139643861, + 9426756.017907634, + 9423155.61299435 + ], + [ + 9205640.332106715, + 9212345.915285451, + 9249796.383548982 + ], + [ + 9236065.98984303, + 9236812.06278855, + 9232495.962177122 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json b/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json new file mode 100644 index 0000000000..206936aaca --- /dev/null +++ b/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4115082119150353, + "scoreError" : 0.02941825923097294, + "scoreConfidence" : [ + 3.3820899526840624, + 3.440926471146008 + ], + "scorePercentiles" : { + "0.0" : 3.4064825548916207, + "50.0" : 3.4113171297808074, + "90.0" : 3.4169160332069057, + "95.0" : 3.4169160332069057, + "99.0" : 3.4169160332069057, + "99.9" : 3.4169160332069057, + "99.99" : 3.4169160332069057, + "99.999" : 3.4169160332069057, + "99.9999" : 3.4169160332069057, + "100.0" : 3.4169160332069057 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4064825548916207, + 3.4093676160232755 + ], + [ + 3.413266643538339, + 3.4169160332069057 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7317113411285598, + "scoreError" : 0.012064473875984218, + "scoreConfidence" : [ + 1.7196468672525755, + 1.7437758150045441 + ], + "scorePercentiles" : { + "0.0" : 1.7292424938779714, + "50.0" : 1.7319358983574031, + "90.0" : 1.7337310739214618, + "95.0" : 1.7337310739214618, + "99.0" : 1.7337310739214618, + "99.9" : 1.7337310739214618, + "99.99" : 1.7337310739214618, + "99.999" : 1.7337310739214618, + "99.9999" : 1.7337310739214618, + "100.0" : 1.7337310739214618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7292424938779714, + 1.731634581684259 + ], + [ + 1.7322372150305472, + 1.7337310739214618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8690424200353214, + "scoreError" : 0.0036514138591921194, + "scoreConfidence" : [ + 0.8653910061761293, + 0.8726938338945135 + ], + "scorePercentiles" : { + "0.0" : 0.8685279670834416, + "50.0" : 0.8689007639611597, + "90.0" : 0.8698401851355247, + "95.0" : 0.8698401851355247, + "99.0" : 0.8698401851355247, + "99.9" : 0.8698401851355247, + "99.99" : 0.8698401851355247, + "99.999" : 0.8698401851355247, + "99.9999" : 0.8698401851355247, + "100.0" : 0.8698401851355247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688095069876479, + 0.8698401851355247 + ], + [ + 0.8685279670834416, + 0.8689920209346713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71003.00198373497, + "scoreError" : 226.15950652706366, + "scoreConfidence" : [ + 70776.8424772079, + 71229.16149026203 + ], + "scorePercentiles" : { + "0.0" : 70857.99060334494, + "50.0" : 70923.80077840707, + "90.0" : 71184.9506282876, + "95.0" : 71184.9506282876, + "99.0" : 71184.9506282876, + "99.9" : 71184.9506282876, + "99.99" : 71184.9506282876, + "99.999" : 71184.9506282876, + "99.9999" : 71184.9506282876, + "100.0" : 71184.9506282876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70973.6692035204, + 70923.80077840707, + 70903.17863630773 + ], + [ + 71184.9506282876, + 71184.3262835792, + 71164.54289466105 + ], + [ + 70857.99060334494, + 70916.85608232094, + 70917.70274318576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.38226824513544, + "scoreError" : 7.476513158615815, + "scoreConfidence" : [ + 344.9057550865196, + 359.85878140375127 + ], + "scorePercentiles" : { + "0.0" : 346.3626408752838, + "50.0" : 353.1910462537864, + "90.0" : 360.13309044096724, + "95.0" : 360.13309044096724, + "99.0" : 360.13309044096724, + "99.9" : 360.13309044096724, + "99.99" : 360.13309044096724, + "99.999" : 360.13309044096724, + "99.9999" : 360.13309044096724, + "100.0" : 360.13309044096724 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.13309044096724, + 354.0114902596122, + 354.8992054315646 + ], + [ + 348.1853851621876, + 346.3626408752838, + 346.95881248467407 + ], + [ + 354.5816970955848, + 353.11704620255824, + 353.1910462537864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.10022468858686, + "scoreError" : 2.3501641962858777, + "scoreConfidence" : [ + 106.75006049230099, + 111.45038888487274 + ], + "scorePercentiles" : { + "0.0" : 107.70994138070586, + "50.0" : 108.52727320445477, + "90.0" : 111.38642304206356, + "95.0" : 111.38642304206356, + "99.0" : 111.38642304206356, + "99.9" : 111.38642304206356, + "99.99" : 111.38642304206356, + "99.999" : 111.38642304206356, + "99.9999" : 111.38642304206356, + "100.0" : 111.38642304206356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.52727320445477, + 108.48393073097333, + 108.75781417072851 + ], + [ + 111.38642304206356, + 110.86333689582654, + 110.38348521770283 + ], + [ + 107.70994138070586, + 107.92321928833897, + 107.86659826648732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014221039915220942, + "scoreError" : 2.626663013411908E-4, + "scoreConfidence" : [ + 0.01395837361387975, + 0.014483706216562134 + ], + "scorePercentiles" : { + "0.0" : 0.014024734535800536, + "50.0" : 0.014236648604823324, + "90.0" : 0.014412459617527056, + "95.0" : 0.014412459617527056, + "99.0" : 0.014412459617527056, + "99.9" : 0.014412459617527056, + "99.99" : 0.014412459617527056, + "99.999" : 0.014412459617527056, + "99.9999" : 0.014412459617527056, + "100.0" : 0.014412459617527056 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014412459617527056, + 0.014401516950372995, + 0.01437941576137362 + ], + [ + 0.014047371501014911, + 0.014042817105640093, + 0.014024734535800536 + ], + [ + 0.014236648604823324, + 0.014207094412131579, + 0.014237300748304356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9942440211101774, + "scoreError" : 0.02390461473886758, + "scoreConfidence" : [ + 0.9703394063713098, + 1.018148635849045 + ], + "scorePercentiles" : { + "0.0" : 0.9743954687713144, + "50.0" : 0.9901732647524752, + "90.0" : 1.0120957015484262, + "95.0" : 1.0120957015484262, + "99.0" : 1.0120957015484262, + "99.9" : 1.0120957015484262, + "99.99" : 1.0120957015484262, + "99.999" : 1.0120957015484262, + "99.9999" : 1.0120957015484262, + "100.0" : 1.0120957015484262 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.010028034036966, + 1.0106066732012935, + 1.0120957015484262 + ], + [ + 0.9972798716593538, + 0.9773831014464426, + 0.9743954687713144 + ], + [ + 0.9866703780584056, + 0.9901732647524752, + 0.9895636965169207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012955598848475294, + "scoreError" : 2.3999670936960022E-4, + "scoreConfidence" : [ + 0.012715602139105693, + 0.013195595557844894 + ], + "scorePercentiles" : { + "0.0" : 0.012822485927646949, + "50.0" : 0.012942355418299141, + "90.0" : 0.013063587491149645, + "95.0" : 0.013063587491149645, + "99.0" : 0.013063587491149645, + "99.9" : 0.013063587491149645, + "99.99" : 0.013063587491149645, + "99.999" : 0.013063587491149645, + "99.9999" : 0.013063587491149645, + "100.0" : 0.013063587491149645 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012822485927646949, + 0.012943171870550899, + 0.012941538966047385 + ], + [ + 0.012928680997347095, + 0.013034127838109786, + 0.013063587491149645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.638930492890097, + "scoreError" : 0.1003970316328303, + "scoreConfidence" : [ + 3.5385334612572668, + 3.739327524522927 + ], + "scorePercentiles" : { + "0.0" : 3.5787822303290415, + "50.0" : 3.6449954462283793, + "90.0" : 3.6791761544117647, + "95.0" : 3.6791761544117647, + "99.0" : 3.6791761544117647, + "99.9" : 3.6791761544117647, + "99.99" : 3.6791761544117647, + "99.999" : 3.6791761544117647, + "99.9999" : 3.6791761544117647, + "100.0" : 3.6791761544117647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5787822303290415, + 3.63090818287373, + 3.6245014231884056 + ], + [ + 3.661132256954612, + 3.6590827095830285, + 3.6791761544117647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.847417907792545, + "scoreError" : 0.116819409513867, + "scoreConfidence" : [ + 2.7305984982786784, + 2.964237317306412 + ], + "scorePercentiles" : { + "0.0" : 2.7529092496559318, + "50.0" : 2.8777063679516686, + "90.0" : 2.921575672801636, + "95.0" : 2.921575672801636, + "99.0" : 2.921575672801636, + "99.9" : 2.921575672801636, + "99.99" : 2.921575672801636, + "99.999" : 2.921575672801636, + "99.9999" : 2.921575672801636, + "100.0" : 2.921575672801636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8777063679516686, + 2.877371197065593, + 2.882502662536023 + ], + [ + 2.921575672801636, + 2.903710849303136, + 2.8941062572337963 + ], + [ + 2.7529092496559318, + 2.757577626964433, + 2.7593012866206896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1784711380749599, + "scoreError" : 0.006343286936357945, + "scoreConfidence" : [ + 0.17212785113860196, + 0.18481442501131784 + ], + "scorePercentiles" : { + "0.0" : 0.1745021115919521, + "50.0" : 0.17718292266123317, + "90.0" : 0.18330034890114927, + "95.0" : 0.18330034890114927, + "99.0" : 0.18330034890114927, + "99.9" : 0.18330034890114927, + "99.99" : 0.18330034890114927, + "99.999" : 0.18330034890114927, + "99.9999" : 0.18330034890114927, + "100.0" : 0.18330034890114927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17538364753853977, + 0.17455278001396404, + 0.1745021115919521 + ], + [ + 0.17718292266123317, + 0.17657819980930184, + 0.17833551557735175 + ], + [ + 0.18330034890114927, + 0.18323100183227367, + 0.1831737147488735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33533802084093994, + "scoreError" : 0.01194928814488877, + "scoreConfidence" : [ + 0.3233887326960512, + 0.3472873089858287 + ], + "scorePercentiles" : { + "0.0" : 0.32534111988418246, + "50.0" : 0.3390308479845408, + "90.0" : 0.3412313907732205, + "95.0" : 0.3412313907732205, + "99.0" : 0.3412313907732205, + "99.9" : 0.3412313907732205, + "99.99" : 0.3412313907732205, + "99.999" : 0.3412313907732205, + "99.9999" : 0.3412313907732205, + "100.0" : 0.3412313907732205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.326667493417829, + 0.3258572763205057, + 0.32534111988418246 + ], + [ + 0.3390515225631463, + 0.3386837247942561, + 0.3390308479845408 + ], + [ + 0.3412313907732205, + 0.34111317256199475, + 0.34106563926878347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16927030043181046, + "scoreError" : 0.012463968221868946, + "scoreConfidence" : [ + 0.1568063322099415, + 0.18173426865367942 + ], + "scorePercentiles" : { + "0.0" : 0.1597120899798767, + "50.0" : 0.17153760280975008, + "90.0" : 0.17657531521700745, + "95.0" : 0.17657531521700745, + "99.0" : 0.17657531521700745, + "99.9" : 0.17657531521700745, + "99.99" : 0.17657531521700745, + "99.999" : 0.17657531521700745, + "99.9999" : 0.17657531521700745, + "100.0" : 0.17657531521700745 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15983509142345684, + 0.15978003380893796, + 0.1597120899798767 + ], + [ + 0.17657531521700745, + 0.17646659101095838, + 0.17618008565740562 + ], + [ + 0.17187182930015124, + 0.17147406467874965, + 0.17153760280975008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3963000690307283, + "scoreError" : 0.005716787708106384, + "scoreConfidence" : [ + 0.3905832813226219, + 0.4020168567388347 + ], + "scorePercentiles" : { + "0.0" : 0.3926168154764242, + "50.0" : 0.3953295221378874, + "90.0" : 0.40172962820873337, + "95.0" : 0.40172962820873337, + "99.0" : 0.40172962820873337, + "99.9" : 0.40172962820873337, + "99.99" : 0.40172962820873337, + "99.999" : 0.40172962820873337, + "99.9999" : 0.40172962820873337, + "100.0" : 0.40172962820873337 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39757093607378546, + 0.39651309218508385, + 0.3953295221378874 + ], + [ + 0.40152707986027464, + 0.3943262865817594, + 0.39405590286862635 + ], + [ + 0.40172962820873337, + 0.3930313578839805, + 0.3926168154764242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15831173145313004, + "scoreError" : 0.0030272423283522493, + "scoreConfidence" : [ + 0.1552844891247778, + 0.1613389737814823 + ], + "scorePercentiles" : { + "0.0" : 0.15655079634615987, + "50.0" : 0.1574761917074784, + "90.0" : 0.16100002611369602, + "95.0" : 0.16100002611369602, + "99.0" : 0.16100002611369602, + "99.9" : 0.16100002611369602, + "99.99" : 0.16100002611369602, + "99.999" : 0.16100002611369602, + "99.9999" : 0.16100002611369602, + "100.0" : 0.16100002611369602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16100002611369602, + 0.16037180656231959, + 0.16022089158054956 + ], + [ + 0.15656058518982388, + 0.15671883595047797, + 0.15655079634615987 + ], + [ + 0.1587234615262523, + 0.1574761917074784, + 0.15718298810141307 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04721208488681848, + "scoreError" : 7.293969171730858E-4, + "scoreConfidence" : [ + 0.04648268796964539, + 0.04794148180399157 + ], + "scorePercentiles" : { + "0.0" : 0.04670943996973264, + "50.0" : 0.046960116708147454, + "90.0" : 0.0477835956565367, + "95.0" : 0.0477835956565367, + "99.0" : 0.0477835956565367, + "99.9" : 0.0477835956565367, + "99.99" : 0.0477835956565367, + "99.999" : 0.0477835956565367, + "99.9999" : 0.0477835956565367, + "100.0" : 0.0477835956565367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047395170383184436, + 0.046960116708147454, + 0.04689423038326088 + ], + [ + 0.0477835956565367, + 0.04766173785477683, + 0.047752969949478065 + ], + [ + 0.04694250115242526, + 0.046809001923824055, + 0.04670943996973264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9630622.948722191, + "scoreError" : 363748.3480624857, + "scoreConfidence" : [ + 9266874.600659706, + 9994371.296784677 + ], + "scorePercentiles" : { + "0.0" : 9355448.681308411, + "50.0" : 9637481.202312138, + "90.0" : 9925310.231150793, + "95.0" : 9925310.231150793, + "99.0" : 9925310.231150793, + "99.9" : 9925310.231150793, + "99.99" : 9925310.231150793, + "99.999" : 9925310.231150793, + "99.9999" : 9925310.231150793, + "100.0" : 9925310.231150793 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9925310.231150793, + 9853500.939901479, + 9846036.579724409 + ], + [ + 9630494.096246392, + 9637481.202312138, + 9645752.631629702 + ], + [ + 9411868.841956725, + 9369713.334269663, + 9355448.681308411 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json b/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json new file mode 100644 index 0000000000..5dedbbda14 --- /dev/null +++ b/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4076702946979935, + "scoreError" : 0.03121695051498341, + "scoreConfidence" : [ + 3.3764533441830102, + 3.438887245212977 + ], + "scorePercentiles" : { + "0.0" : 3.4023668922631765, + "50.0" : 3.407716749267827, + "90.0" : 3.4128807879931413, + "95.0" : 3.4128807879931413, + "99.0" : 3.4128807879931413, + "99.9" : 3.4128807879931413, + "99.99" : 3.4128807879931413, + "99.999" : 3.4128807879931413, + "99.9999" : 3.4128807879931413, + "100.0" : 3.4128807879931413 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4023668922631765, + 3.410430779758213 + ], + [ + 3.4050027187774417, + 3.4128807879931413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7203584625512023, + "scoreError" : 0.016926372222672525, + "scoreConfidence" : [ + 1.7034320903285298, + 1.7372848347738747 + ], + "scorePercentiles" : { + "0.0" : 1.7179994830077605, + "50.0" : 1.7197199204007574, + "90.0" : 1.7239945263955332, + "95.0" : 1.7239945263955332, + "99.0" : 1.7239945263955332, + "99.9" : 1.7239945263955332, + "99.99" : 1.7239945263955332, + "99.999" : 1.7239945263955332, + "99.9999" : 1.7239945263955332, + "100.0" : 1.7239945263955332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.720420690227677, + 1.7239945263955332 + ], + [ + 1.7179994830077605, + 1.7190191505738377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8648697545079026, + "scoreError" : 0.0075160983778016855, + "scoreConfidence" : [ + 0.857353656130101, + 0.8723858528857042 + ], + "scorePercentiles" : { + "0.0" : 0.863427883815053, + "50.0" : 0.8649943438233192, + "90.0" : 0.8660624465699193, + "95.0" : 0.8660624465699193, + "99.0" : 0.8660624465699193, + "99.9" : 0.8660624465699193, + "99.99" : 0.8660624465699193, + "99.999" : 0.8660624465699193, + "99.9999" : 0.8660624465699193, + "100.0" : 0.8660624465699193 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8644814960543413, + 0.8655071915922969 + ], + [ + 0.863427883815053, + 0.8660624465699193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69389.95500863831, + "scoreError" : 1755.8886125589615, + "scoreConfidence" : [ + 67634.06639607935, + 71145.84362119727 + ], + "scorePercentiles" : { + "0.0" : 68185.71876777064, + "50.0" : 69278.7096608454, + "90.0" : 70722.78777504961, + "95.0" : 70722.78777504961, + "99.0" : 70722.78777504961, + "99.9" : 70722.78777504961, + "99.99" : 70722.78777504961, + "99.999" : 70722.78777504961, + "99.9999" : 70722.78777504961, + "100.0" : 70722.78777504961 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69364.0209108631, + 69204.40314517489, + 69278.7096608454 + ], + [ + 70609.4285342994, + 70601.79215979534, + 70722.78777504961 + ], + [ + 68185.71876777064, + 68237.46553567571, + 68305.26858827074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.8338008020541, + "scoreError" : 2.893493166734086, + "scoreConfidence" : [ + 337.94030763532004, + 343.72729396878816 + ], + "scorePercentiles" : { + "0.0" : 337.51858191131913, + "50.0" : 341.0045137233911, + "90.0" : 343.1466067997579, + "95.0" : 343.1466067997579, + "99.0" : 343.1466067997579, + "99.9" : 343.1466067997579, + "99.99" : 343.1466067997579, + "99.999" : 343.1466067997579, + "99.9999" : 343.1466067997579, + "100.0" : 343.1466067997579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.79525643351167, + 340.68463968792423, + 339.4671920234933 + ], + [ + 339.7021322573094, + 341.88583929366797, + 342.2994450881126 + ], + [ + 343.1466067997579, + 341.0045137233911, + 337.51858191131913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 101.9505095823736, + "scoreError" : 3.70236669542828, + "scoreConfidence" : [ + 98.24814288694532, + 105.65287627780188 + ], + "scorePercentiles" : { + "0.0" : 98.95005773885293, + "50.0" : 101.69121875987764, + "90.0" : 104.79007731231022, + "95.0" : 104.79007731231022, + "99.0" : 104.79007731231022, + "99.9" : 104.79007731231022, + "99.99" : 104.79007731231022, + "99.999" : 104.79007731231022, + "99.9999" : 104.79007731231022, + "100.0" : 104.79007731231022 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.69121875987764, + 100.87319417929982, + 102.02589744799347 + ], + [ + 100.31006870314435, + 98.95005773885293, + 99.839171786519 + ], + [ + 104.51878795064138, + 104.79007731231022, + 104.55611236272352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014207907244656271, + "scoreError" : 1.406139052230887E-4, + "scoreConfidence" : [ + 0.014067293339433183, + 0.01434852114987936 + ], + "scorePercentiles" : { + "0.0" : 0.014080431946664038, + "50.0" : 0.014222649451795088, + "90.0" : 0.01430348100952599, + "95.0" : 0.01430348100952599, + "99.0" : 0.01430348100952599, + "99.9" : 0.01430348100952599, + "99.99" : 0.01430348100952599, + "99.999" : 0.01430348100952599, + "99.9999" : 0.01430348100952599, + "100.0" : 0.01430348100952599 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01410771311237201, + 0.014080431946664038, + 0.014127782222950578 + ], + [ + 0.014288505505292396, + 0.01430348100952599, + 0.014290552535683052 + ], + [ + 0.014220443325151943, + 0.014229606092471352, + 0.014222649451795088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9899931875389658, + "scoreError" : 0.019138091109985326, + "scoreConfidence" : [ + 0.9708550964289805, + 1.0091312786489512 + ], + "scorePercentiles" : { + "0.0" : 0.9765089769553754, + "50.0" : 0.9884470899476129, + "90.0" : 1.0120053324225866, + "95.0" : 1.0120053324225866, + "99.0" : 1.0120053324225866, + "99.9" : 1.0120053324225866, + "99.99" : 1.0120053324225866, + "99.999" : 1.0120053324225866, + "99.9999" : 1.0120053324225866, + "100.0" : 1.0120053324225866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9765089769553754, + 0.9884470899476129, + 0.9902420496088722 + ], + [ + 0.98586842636041, + 0.9818955948944527, + 0.9790268553108175 + ], + [ + 1.0120053324225866, + 1.0023681029367546, + 0.9935762594138102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013177577224591489, + "scoreError" : 4.270440246067902E-4, + "scoreConfidence" : [ + 0.012750533199984699, + 0.013604621249198279 + ], + "scorePercentiles" : { + "0.0" : 0.012983986930667359, + "50.0" : 0.013193273216565243, + "90.0" : 0.013348885971492874, + "95.0" : 0.013348885971492874, + "99.0" : 0.013348885971492874, + "99.9" : 0.013348885971492874, + "99.99" : 0.013348885971492874, + "99.999" : 0.013348885971492874, + "99.9999" : 0.013348885971492874, + "100.0" : 0.013348885971492874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013293016413664762, + 0.013348885971492874, + 0.013292778899067935 + ], + [ + 0.012983986930667359, + 0.01309376753406255, + 0.013053027598593442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8965855004740657, + "scoreError" : 0.13698940967062448, + "scoreConfidence" : [ + 3.7595960908034414, + 4.03357491014469 + ], + "scorePercentiles" : { + "0.0" : 3.8204210718105425, + "50.0" : 3.8998276071221425, + "90.0" : 3.9658294631245044, + "95.0" : 3.9658294631245044, + "99.0" : 3.9658294631245044, + "99.9" : 3.9658294631245044, + "99.99" : 3.9658294631245044, + "99.999" : 3.9658294631245044, + "99.9999" : 3.9658294631245044, + "100.0" : 3.9658294631245044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9658294631245044, + 3.885656021756022, + 3.9181803915426783 + ], + [ + 3.8204210718105425, + 3.913999192488263, + 3.875426862122386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.953343152087654, + "scoreError" : 0.1008413095317884, + "scoreConfidence" : [ + 2.8525018425558653, + 3.0541844616194425 + ], + "scorePercentiles" : { + "0.0" : 2.8928908501590973, + "50.0" : 2.9422236131215063, + "90.0" : 3.05081770347773, + "95.0" : 3.05081770347773, + "99.0" : 3.05081770347773, + "99.9" : 3.05081770347773, + "99.99" : 3.05081770347773, + "99.999" : 3.05081770347773, + "99.9999" : 3.05081770347773, + "100.0" : 3.05081770347773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9494852205838984, + 2.9129140305765873, + 2.8928908501590973 + ], + [ + 3.033292042462845, + 2.997000550494456, + 3.05081770347773 + ], + [ + 2.9422236131215063, + 2.895923255356109, + 2.9055411025566533 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1740608663647572, + "scoreError" : 0.0031797824390332624, + "scoreConfidence" : [ + 0.17088108392572393, + 0.17724064880379048 + ], + "scorePercentiles" : { + "0.0" : 0.1714743284349869, + "50.0" : 0.17423779480433496, + "90.0" : 0.17657913986544949, + "95.0" : 0.17657913986544949, + "99.0" : 0.17657913986544949, + "99.9" : 0.17657913986544949, + "99.99" : 0.17657913986544949, + "99.999" : 0.17657913986544949, + "99.9999" : 0.17657913986544949, + "100.0" : 0.17657913986544949 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17490636216878006, + 0.17413062688490336, + 0.17423779480433496 + ], + [ + 0.17180489303691995, + 0.17198642027689398, + 0.1714743284349869 + ], + [ + 0.17657913986544949, + 0.17574860689618813, + 0.17567962491435798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3220899653280465, + "scoreError" : 0.011797543311675193, + "scoreConfidence" : [ + 0.3102924220163713, + 0.3338875086397217 + ], + "scorePercentiles" : { + "0.0" : 0.3133007488329835, + "50.0" : 0.32191402085948817, + "90.0" : 0.33121310459378, + "95.0" : 0.33121310459378, + "99.0" : 0.33121310459378, + "99.9" : 0.33121310459378, + "99.99" : 0.33121310459378, + "99.999" : 0.33121310459378, + "99.9999" : 0.33121310459378, + "100.0" : 0.33121310459378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32191402085948817, + 0.32146066157703557, + 0.32222403992266796 + ], + [ + 0.33121310459378, + 0.3296149954843601, + 0.33000252455121437 + ], + [ + 0.3147955884852682, + 0.3133007488329835, + 0.31428400364562054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16434010627076526, + "scoreError" : 0.006922172642315291, + "scoreConfidence" : [ + 0.15741793362844997, + 0.17126227891308055 + ], + "scorePercentiles" : { + "0.0" : 0.158946975888103, + "50.0" : 0.16548735592182562, + "90.0" : 0.16844729587144372, + "95.0" : 0.16844729587144372, + "99.0" : 0.16844729587144372, + "99.9" : 0.16844729587144372, + "99.99" : 0.16844729587144372, + "99.999" : 0.16844729587144372, + "99.9999" : 0.16844729587144372, + "100.0" : 0.16844729587144372 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16844729587144372, + 0.16825600417262557, + 0.16784994932693276 + ], + [ + 0.16515502999124704, + 0.16548735592182562, + 0.1666896035204107 + ], + [ + 0.15900905450700417, + 0.1592196872372946, + 0.158946975888103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38842922644034866, + "scoreError" : 0.0067031864482287465, + "scoreConfidence" : [ + 0.3817260399921199, + 0.3951324128885774 + ], + "scorePercentiles" : { + "0.0" : 0.3846055533633322, + "50.0" : 0.38798181970902035, + "90.0" : 0.3976954414618627, + "95.0" : 0.3976954414618627, + "99.0" : 0.3976954414618627, + "99.9" : 0.3976954414618627, + "99.99" : 0.3976954414618627, + "99.999" : 0.3976954414618627, + "99.9999" : 0.3976954414618627, + "100.0" : 0.3976954414618627 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3976954414618627, + 0.3865560140316969, + 0.3859009754572818 + ], + [ + 0.39057186982502734, + 0.38881781959564543, + 0.38798181970902035 + ], + [ + 0.3887489937801275, + 0.38498455073914384, + 0.3846055533633322 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15897312984427683, + "scoreError" : 0.007362010999413564, + "scoreConfidence" : [ + 0.15161111884486328, + 0.1663351408436904 + ], + "scorePercentiles" : { + "0.0" : 0.15367977617101058, + "50.0" : 0.15898293027137883, + "90.0" : 0.1647780857321755, + "95.0" : 0.1647780857321755, + "99.0" : 0.1647780857321755, + "99.9" : 0.1647780857321755, + "99.99" : 0.1647780857321755, + "99.999" : 0.1647780857321755, + "99.9999" : 0.1647780857321755, + "100.0" : 0.1647780857321755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15948752983955855, + 0.15898293027137883, + 0.15867462969074783 + ], + [ + 0.1647780857321755, + 0.16382083167878908, + 0.163306469478738 + ], + [ + 0.15408670708782743, + 0.15394120864826588, + 0.15367977617101058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047710108860097446, + "scoreError" : 6.500947272283788E-4, + "scoreConfidence" : [ + 0.04706001413286907, + 0.048360203587325824 + ], + "scorePercentiles" : { + "0.0" : 0.0472659968237763, + "50.0" : 0.04773794186079817, + "90.0" : 0.04823766706864117, + "95.0" : 0.04823766706864117, + "99.0" : 0.04823766706864117, + "99.9" : 0.04823766706864117, + "99.99" : 0.04823766706864117, + "99.999" : 0.04823766706864117, + "99.9999" : 0.04823766706864117, + "100.0" : 0.04823766706864117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04823766706864117, + 0.04728105270822301, + 0.0472659968237763 + ], + [ + 0.047403124687144485, + 0.04773794186079817, + 0.04735863134240711 + ], + [ + 0.04801767788341496, + 0.0480227627954552, + 0.04806612457101658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9545103.75383263, + "scoreError" : 383788.9358783984, + "scoreConfidence" : [ + 9161314.817954233, + 9928892.689711029 + ], + "scorePercentiles" : { + "0.0" : 9173861.760769935, + "50.0" : 9645109.1195757, + "90.0" : 9782659.88172043, + "95.0" : 9782659.88172043, + "99.0" : 9782659.88172043, + "99.9" : 9782659.88172043, + "99.99" : 9782659.88172043, + "99.999" : 9782659.88172043, + "99.9999" : 9782659.88172043, + "100.0" : 9782659.88172043 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9722427.170068027, + 9638300.232177263, + 9645109.1195757 + ], + [ + 9782659.88172043, + 9661711.056949807, + 9705344.597478177 + ], + [ + 9317311.997206705, + 9173861.760769935, + 9259207.96854764 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json b/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json new file mode 100644 index 0000000000..9a95fb387f --- /dev/null +++ b/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4235289471012904, + "scoreError" : 0.025315012152433914, + "scoreConfidence" : [ + 3.3982139349488567, + 3.448843959253724 + ], + "scorePercentiles" : { + "0.0" : 3.418973543921273, + "50.0" : 3.423959070120495, + "90.0" : 3.4272241042428986, + "95.0" : 3.4272241042428986, + "99.0" : 3.4272241042428986, + "99.9" : 3.4272241042428986, + "99.99" : 3.4272241042428986, + "99.999" : 3.4272241042428986, + "99.9999" : 3.4272241042428986, + "100.0" : 3.4272241042428986 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4215857667884384, + 3.4272241042428986 + ], + [ + 3.418973543921273, + 3.4263323734525515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.731466065401667, + "scoreError" : 0.01621103250787632, + "scoreConfidence" : [ + 1.7152550328937906, + 1.7476770979095433 + ], + "scorePercentiles" : { + "0.0" : 1.7288700515575068, + "50.0" : 1.7310567913839625, + "90.0" : 1.7348806272812356, + "95.0" : 1.7348806272812356, + "99.0" : 1.7348806272812356, + "99.9" : 1.7348806272812356, + "99.99" : 1.7348806272812356, + "99.999" : 1.7348806272812356, + "99.9999" : 1.7348806272812356, + "100.0" : 1.7348806272812356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7288700515575068, + 1.7313277369538398 + ], + [ + 1.7307858458140855, + 1.7348806272812356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8697984954948363, + "scoreError" : 0.008861407151655697, + "scoreConfidence" : [ + 0.8609370883431806, + 0.8786599026464921 + ], + "scorePercentiles" : { + "0.0" : 0.8679124538019363, + "50.0" : 0.8700474146575718, + "90.0" : 0.8711866988622655, + "95.0" : 0.8711866988622655, + "99.0" : 0.8711866988622655, + "99.9" : 0.8711866988622655, + "99.99" : 0.8711866988622655, + "99.999" : 0.8711866988622655, + "99.9999" : 0.8711866988622655, + "100.0" : 0.8711866988622655 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679124538019363, + 0.8699183582693664 + ], + [ + 0.8711866988622655, + 0.8701764710457774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70820.79388702071, + "scoreError" : 231.68668855776454, + "scoreConfidence" : [ + 70589.10719846295, + 71052.48057557848 + ], + "scorePercentiles" : { + "0.0" : 70629.0793607269, + "50.0" : 70911.01076174284, + "90.0" : 70941.7424562172, + "95.0" : 70941.7424562172, + "99.0" : 70941.7424562172, + "99.9" : 70941.7424562172, + "99.99" : 70941.7424562172, + "99.999" : 70941.7424562172, + "99.9999" : 70941.7424562172, + "100.0" : 70941.7424562172 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70643.28992633008, + 70629.0793607269, + 70657.4130445598 + ], + [ + 70920.59943604424, + 70921.67177006771, + 70939.99468918028 + ], + [ + 70911.01076174284, + 70822.34353831736, + 70941.7424562172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.2295935097646, + "scoreError" : 11.639809665349746, + "scoreConfidence" : [ + 338.58978384441485, + 361.8694031751143 + ], + "scorePercentiles" : { + "0.0" : 340.89493260237515, + "50.0" : 353.68886615744447, + "90.0" : 355.99957632871315, + "95.0" : 355.99957632871315, + "99.0" : 355.99957632871315, + "99.9" : 355.99957632871315, + "99.99" : 355.99957632871315, + "99.999" : 355.99957632871315, + "99.9999" : 355.99957632871315, + "100.0" : 355.99957632871315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 340.89493260237515, + 341.42435224510996, + 341.26510021738767 + ], + [ + 355.6708203390944, + 355.8300028298273, + 355.99957632871315 + ], + [ + 351.49926625063017, + 353.68886615744447, + 355.79342461729897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.65109974016178, + "scoreError" : 2.5522442534017724, + "scoreConfidence" : [ + 106.09885548676002, + 111.20334399356355 + ], + "scorePercentiles" : { + "0.0" : 107.03049434345812, + "50.0" : 108.17258660022053, + "90.0" : 110.61737269420547, + "95.0" : 110.61737269420547, + "99.0" : 110.61737269420547, + "99.9" : 110.61737269420547, + "99.99" : 110.61737269420547, + "99.999" : 110.61737269420547, + "99.9999" : 110.61737269420547, + "100.0" : 110.61737269420547 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.82145896771539, + 108.17258660022053, + 108.24703418493814 + ], + [ + 110.58815235947327, + 110.61737269420547, + 110.60165244657608 + ], + [ + 107.66093902870458, + 107.03049434345812, + 107.12020703616446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014279243473265146, + "scoreError" : 4.394936204422015E-4, + "scoreConfidence" : [ + 0.013839749852822944, + 0.014718737093707348 + ], + "scorePercentiles" : { + "0.0" : 0.014042465096456565, + "50.0" : 0.014159224540681671, + "90.0" : 0.014676226498498639, + "95.0" : 0.014676226498498639, + "99.0" : 0.014676226498498639, + "99.9" : 0.014676226498498639, + "99.99" : 0.014676226498498639, + "99.999" : 0.014676226498498639, + "99.9999" : 0.014676226498498639, + "100.0" : 0.014676226498498639 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014202651352641087, + 0.014158744326676936, + 0.014159224540681671 + ], + [ + 0.014591742794315707, + 0.014676226498498639, + 0.01458607336714348 + ], + [ + 0.014043656603105857, + 0.014052406679866392, + 0.014042465096456565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710502426780204, + "scoreError" : 0.014764440975773075, + "scoreConfidence" : [ + 0.9562858017022473, + 0.9858146836537935 + ], + "scorePercentiles" : { + "0.0" : 0.9562935803212851, + "50.0" : 0.9705228318128882, + "90.0" : 0.984122220035426, + "95.0" : 0.984122220035426, + "99.0" : 0.984122220035426, + "99.9" : 0.984122220035426, + "99.99" : 0.984122220035426, + "99.999" : 0.984122220035426, + "99.9999" : 0.984122220035426, + "100.0" : 0.984122220035426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9703851923151562, + 0.9705228318128882, + 0.984122220035426 + ], + [ + 0.9797588517683943, + 0.9756658378536586, + 0.9748855913433417 + ], + [ + 0.9665884706166634, + 0.9562935803212851, + 0.961229608035371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01294115826408152, + "scoreError" : 0.001014437164646088, + "scoreConfidence" : [ + 0.011926721099435432, + 0.013955595428727608 + ], + "scorePercentiles" : { + "0.0" : 0.012536907865737619, + "50.0" : 0.012912209069093654, + "90.0" : 0.013316694295522761, + "95.0" : 0.013316694295522761, + "99.0" : 0.013316694295522761, + "99.9" : 0.013316694295522761, + "99.99" : 0.013316694295522761, + "99.999" : 0.013316694295522761, + "99.9999" : 0.013316694295522761, + "100.0" : 0.013316694295522761 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013166219852067968, + 0.013316694295522761, + 0.013312663393594078 + ], + [ + 0.012536907865737619, + 0.01265626589144736, + 0.012658198286119339 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.659688428674198, + "scoreError" : 0.35262658295588856, + "scoreConfidence" : [ + 3.3070618457183096, + 4.012315011630086 + ], + "scorePercentiles" : { + "0.0" : 3.5062078731604767, + "50.0" : 3.6768514411668174, + "90.0" : 3.774024763773585, + "95.0" : 3.774024763773585, + "99.0" : 3.774024763773585, + "99.9" : 3.774024763773585, + "99.99" : 3.774024763773585, + "99.999" : 3.774024763773585, + "99.9999" : 3.774024763773585, + "100.0" : 3.774024763773585 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5062078731604767, + 3.551304622159091, + 3.5838853209169055 + ], + [ + 3.774024763773585, + 3.7698175614167293, + 3.7728904306184012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8300064842002626, + "scoreError" : 0.045503109266854615, + "scoreConfidence" : [ + 2.784503374933408, + 2.8755095934671173 + ], + "scorePercentiles" : { + "0.0" : 2.8048665698261357, + "50.0" : 2.817010330140845, + "90.0" : 2.8728336325768455, + "95.0" : 2.8728336325768455, + "99.0" : 2.8728336325768455, + "99.9" : 2.8728336325768455, + "99.99" : 2.8728336325768455, + "99.999" : 2.8728336325768455, + "99.9999" : 2.8728336325768455, + "100.0" : 2.8728336325768455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.817010330140845, + 2.8212701472496473, + 2.807157726915521 + ], + [ + 2.8048665698261357, + 2.809550511516854, + 2.8145303981429377 + ], + [ + 2.862065851788269, + 2.860773189645309, + 2.8728336325768455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1831706552485558, + "scoreError" : 0.01373850570445273, + "scoreConfidence" : [ + 0.16943214954410307, + 0.19690916095300853 + ], + "scorePercentiles" : { + "0.0" : 0.1770023762257071, + "50.0" : 0.17780909203250297, + "90.0" : 0.19403957457748802, + "95.0" : 0.19403957457748802, + "99.0" : 0.19403957457748802, + "99.9" : 0.19403957457748802, + "99.99" : 0.19403957457748802, + "99.999" : 0.19403957457748802, + "99.9999" : 0.19403957457748802, + "100.0" : 0.19403957457748802 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17979130297909063, + 0.17780909203250297, + 0.17764850200739005 + ], + [ + 0.1771452058563027, + 0.1770023762257071, + 0.17709491752851172 + ], + [ + 0.1940173466232078, + 0.19403957457748802, + 0.19398757940680103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3325174605480197, + "scoreError" : 0.01808023901793655, + "scoreConfidence" : [ + 0.3144372215300832, + 0.35059769956595627 + ], + "scorePercentiles" : { + "0.0" : 0.3243598086990367, + "50.0" : 0.32611440247839557, + "90.0" : 0.34748987869627157, + "95.0" : 0.34748987869627157, + "99.0" : 0.34748987869627157, + "99.9" : 0.34748987869627157, + "99.99" : 0.34748987869627157, + "99.999" : 0.34748987869627157, + "99.9999" : 0.34748987869627157, + "100.0" : 0.34748987869627157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32611440247839557, + 0.32569432595101616, + 0.3270104821621268 + ], + [ + 0.34748987869627157, + 0.34672240551972816, + 0.34622278749480684 + ], + [ + 0.324573349680309, + 0.3243598086990367, + 0.3244697042504867 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1563755353557113, + "scoreError" : 0.008218591647864093, + "scoreConfidence" : [ + 0.1481569437078472, + 0.1645941270035754 + ], + "scorePercentiles" : { + "0.0" : 0.15114627648801426, + "50.0" : 0.15527347374386685, + "90.0" : 0.1627050920731509, + "95.0" : 0.1627050920731509, + "99.0" : 0.1627050920731509, + "99.9" : 0.1627050920731509, + "99.99" : 0.1627050920731509, + "99.999" : 0.1627050920731509, + "99.9999" : 0.1627050920731509, + "100.0" : 0.1627050920731509 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1627050920731509, + 0.16256147183705316, + 0.16222034130357202 + ], + [ + 0.1551279640884835, + 0.15535810315524554, + 0.15527347374386685 + ], + [ + 0.15164503142012284, + 0.1513420640918928, + 0.15114627648801426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3909588769316857, + "scoreError" : 0.007017556895511356, + "scoreConfidence" : [ + 0.3839413200361743, + 0.39797643382719705 + ], + "scorePercentiles" : { + "0.0" : 0.38759703340955776, + "50.0" : 0.3903544967797338, + "90.0" : 0.39986755376064614, + "95.0" : 0.39986755376064614, + "99.0" : 0.39986755376064614, + "99.9" : 0.39986755376064614, + "99.99" : 0.39986755376064614, + "99.999" : 0.39986755376064614, + "99.9999" : 0.39986755376064614, + "100.0" : 0.39986755376064614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.390763948382307, + 0.39082237861497576, + 0.3903544967797338 + ], + [ + 0.39986755376064614, + 0.3884779611918266, + 0.38759703340955776 + ], + [ + 0.3954614829167985, + 0.3876213509050738, + 0.3876636864242518 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15722552517859067, + "scoreError" : 0.0011511582869311112, + "scoreConfidence" : [ + 0.15607436689165957, + 0.15837668346552178 + ], + "scorePercentiles" : { + "0.0" : 0.1562580664864527, + "50.0" : 0.15734629136509534, + "90.0" : 0.15837414240691763, + "95.0" : 0.15837414240691763, + "99.0" : 0.15837414240691763, + "99.9" : 0.15837414240691763, + "99.99" : 0.15837414240691763, + "99.999" : 0.15837414240691763, + "99.9999" : 0.15837414240691763, + "100.0" : 0.15837414240691763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15734629136509534, + 0.15751020181448755, + 0.15674231195924765 + ], + [ + 0.15837414240691763, + 0.15780906814057347, + 0.156918052864473 + ], + [ + 0.15761143390754778, + 0.15646015766252053, + 0.1562580664864527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04698808880000418, + "scoreError" : 8.233100908406212E-4, + "scoreConfidence" : [ + 0.04616477870916356, + 0.0478113988908448 + ], + "scorePercentiles" : { + "0.0" : 0.04632947766947111, + "50.0" : 0.046950707557091347, + "90.0" : 0.04777402328470013, + "95.0" : 0.04777402328470013, + "99.0" : 0.04777402328470013, + "99.9" : 0.04777402328470013, + "99.99" : 0.04777402328470013, + "99.999" : 0.04777402328470013, + "99.9999" : 0.04777402328470013, + "100.0" : 0.04777402328470013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04702555390236677, + 0.04694176933151202, + 0.046950707557091347 + ], + [ + 0.0475525959219386, + 0.04777402328470013, + 0.04725548325284239 + ], + [ + 0.04670036606984412, + 0.046362822210271076, + 0.04632947766947111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9317046.219681531, + "scoreError" : 207195.67907354757, + "scoreConfidence" : [ + 9109850.540607983, + 9524241.89875508 + ], + "scorePercentiles" : { + "0.0" : 9157390.381518755, + "50.0" : 9319772.534948742, + "90.0" : 9506483.568441065, + "95.0" : 9506483.568441065, + "99.0" : 9506483.568441065, + "99.9" : 9506483.568441065, + "99.99" : 9506483.568441065, + "99.999" : 9506483.568441065, + "99.9999" : 9506483.568441065, + "100.0" : 9506483.568441065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9304948.350697674, + 9321557.7166822, + 9319772.534948742 + ], + [ + 9210019.607734807, + 9168707.978001833, + 9157390.381518755 + ], + [ + 9506483.568441065, + 9437706.294339623, + 9426829.544769086 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..e193b1af7c --- /dev/null +++ b/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4231252386576827, + "scoreError" : 0.018002418557553388, + "scoreConfidence" : [ + 3.405122820100129, + 3.4411276572152363 + ], + "scorePercentiles" : { + "0.0" : 3.4206360868600725, + "50.0" : 3.4227234889032605, + "90.0" : 3.426417889964138, + "95.0" : 3.426417889964138, + "99.0" : 3.426417889964138, + "99.9" : 3.426417889964138, + "99.99" : 3.426417889964138, + "99.999" : 3.426417889964138, + "99.9999" : 3.426417889964138, + "100.0" : 3.426417889964138 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4206360868600725, + 3.426417889964138 + ], + [ + 3.4210025321286244, + 3.4244444456778966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7292023782063795, + "scoreError" : 0.008901727040554206, + "scoreConfidence" : [ + 1.7203006511658252, + 1.7381041052469337 + ], + "scorePercentiles" : { + "0.0" : 1.727258983952786, + "50.0" : 1.7295273432478537, + "90.0" : 1.7304958423770247, + "95.0" : 1.7304958423770247, + "99.0" : 1.7304958423770247, + "99.9" : 1.7304958423770247, + "99.99" : 1.7304958423770247, + "99.999" : 1.7304958423770247, + "99.9999" : 1.7304958423770247, + "100.0" : 1.7304958423770247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727258983952786, + 1.729653664527176 + ], + [ + 1.7294010219685314, + 1.7304958423770247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.869712827685915, + "scoreError" : 0.004324516237681346, + "scoreConfidence" : [ + 0.8653883114482336, + 0.8740373439235963 + ], + "scorePercentiles" : { + "0.0" : 0.8688162079164902, + "50.0" : 0.8698652531758249, + "90.0" : 0.8703045964755199, + "95.0" : 0.8703045964755199, + "99.0" : 0.8703045964755199, + "99.9" : 0.8703045964755199, + "99.99" : 0.8703045964755199, + "99.999" : 0.8703045964755199, + "99.9999" : 0.8703045964755199, + "100.0" : 0.8703045964755199 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695978615068914, + 0.8703045964755199 + ], + [ + 0.8688162079164902, + 0.8701326448447583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69653.97322970562, + "scoreError" : 1241.7114519240731, + "scoreConfidence" : [ + 68412.26177778155, + 70895.68468162969 + ], + "scorePercentiles" : { + "0.0" : 68917.9239635008, + "50.0" : 69422.69087159562, + "90.0" : 70623.12588344632, + "95.0" : 70623.12588344632, + "99.0" : 70623.12588344632, + "99.9" : 70623.12588344632, + "99.99" : 70623.12588344632, + "99.999" : 70623.12588344632, + "99.9999" : 70623.12588344632, + "100.0" : 70623.12588344632 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69422.69087159562, + 69447.65361598988, + 69400.19164738775 + ], + [ + 68940.63600147932, + 68961.39448861738, + 68917.9239635008 + ], + [ + 70600.79825836433, + 70571.34433696925, + 70623.12588344632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.88093484304494, + "scoreError" : 7.331351454553499, + "scoreConfidence" : [ + 347.54958338849144, + 362.21228629759844 + ], + "scorePercentiles" : { + "0.0" : 350.8325447951137, + "50.0" : 353.1650809438877, + "90.0" : 361.5314151767399, + "95.0" : 361.5314151767399, + "99.0" : 361.5314151767399, + "99.9" : 361.5314151767399, + "99.99" : 361.5314151767399, + "99.999" : 361.5314151767399, + "99.9999" : 361.5314151767399, + "100.0" : 361.5314151767399 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.55160168006574, + 350.8325447951137, + 351.18421384816645 + ], + [ + 361.5314151767399, + 360.32258091010436, + 359.8482269083232 + ], + [ + 353.1650809438877, + 353.2751303140137, + 352.217619010989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.31040747128041, + "scoreError" : 1.5707935883293318, + "scoreConfidence" : [ + 103.73961388295108, + 106.88120105960975 + ], + "scorePercentiles" : { + "0.0" : 103.84489219491039, + "50.0" : 105.45124511244312, + "90.0" : 106.35534837676299, + "95.0" : 106.35534837676299, + "99.0" : 106.35534837676299, + "99.9" : 106.35534837676299, + "99.99" : 106.35534837676299, + "99.999" : 106.35534837676299, + "99.9999" : 106.35534837676299, + "100.0" : 106.35534837676299 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.26255275762055, + 106.35534837676299, + 106.22838730121315 + ], + [ + 104.56216360600726, + 103.84489219491039, + 104.14140128934277 + ], + [ + 105.44628502972814, + 105.45124511244312, + 105.50139157349538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014266009260685645, + "scoreError" : 2.4840351995337605E-4, + "scoreConfidence" : [ + 0.014017605740732268, + 0.014514412780639021 + ], + "scorePercentiles" : { + "0.0" : 0.01415508872730258, + "50.0" : 0.014178914767305513, + "90.0" : 0.014487416443321521, + "95.0" : 0.014487416443321521, + "99.0" : 0.014487416443321521, + "99.9" : 0.014487416443321521, + "99.99" : 0.014487416443321521, + "99.999" : 0.014487416443321521, + "99.9999" : 0.014487416443321521, + "100.0" : 0.014487416443321521 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014487416443321521, + 0.014444846733189272, + 0.014454177195923972 + ], + [ + 0.01415580208738833, + 0.01415508872730258, + 0.014162183566676203 + ], + [ + 0.014173912294303573, + 0.014178914767305513, + 0.014181741530759849 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9737795573950387, + "scoreError" : 0.023019476479558414, + "scoreConfidence" : [ + 0.9507600809154804, + 0.9967990338745971 + ], + "scorePercentiles" : { + "0.0" : 0.9530193546788641, + "50.0" : 0.9795748023312764, + "90.0" : 0.9933472102701629, + "95.0" : 0.9933472102701629, + "99.0" : 0.9933472102701629, + "99.9" : 0.9933472102701629, + "99.99" : 0.9933472102701629, + "99.999" : 0.9933472102701629, + "99.9999" : 0.9933472102701629, + "100.0" : 0.9933472102701629 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9583253188003066, + 0.9530193546788641, + 0.9583518679444178 + ], + [ + 0.9933472102701629, + 0.9791489124730761, + 0.9805528812628689 + ], + [ + 0.9819098810996564, + 0.9797857876947194, + 0.9795748023312764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013001308170039402, + "scoreError" : 2.976310973814306E-4, + "scoreConfidence" : [ + 0.012703677072657972, + 0.013298939267420833 + ], + "scorePercentiles" : { + "0.0" : 0.01288314263629407, + "50.0" : 0.013002860792589627, + "90.0" : 0.013110911374780397, + "95.0" : 0.013110911374780397, + "99.0" : 0.013110911374780397, + "99.9" : 0.013110911374780397, + "99.99" : 0.013110911374780397, + "99.999" : 0.013110911374780397, + "99.9999" : 0.013110911374780397, + "100.0" : 0.013110911374780397 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01288314263629407, + 0.012924590065370965, + 0.01290896248228287 + ], + [ + 0.013081131519808288, + 0.013099110941699807, + 0.013110911374780397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6469265221099043, + "scoreError" : 0.233983938982243, + "scoreConfidence" : [ + 3.4129425831276614, + 3.880910461092147 + ], + "scorePercentiles" : { + "0.0" : 3.550249164655784, + "50.0" : 3.6518308336198055, + "90.0" : 3.725429276247208, + "95.0" : 3.725429276247208, + "99.0" : 3.725429276247208, + "99.9" : 3.725429276247208, + "99.99" : 3.725429276247208, + "99.999" : 3.725429276247208, + "99.9999" : 3.725429276247208, + "100.0" : 3.725429276247208 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.71911931598513, + 3.72239825, + 3.725429276247208 + ], + [ + 3.550249164655784, + 3.5798207745168216, + 3.5845423512544805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8297739018441317, + "scoreError" : 0.055082385306873205, + "scoreConfidence" : [ + 2.7746915165372585, + 2.884856287151005 + ], + "scorePercentiles" : { + "0.0" : 2.776723303442532, + "50.0" : 2.849999239954403, + "90.0" : 2.857089768637532, + "95.0" : 2.857089768637532, + "99.0" : 2.857089768637532, + "99.9" : 2.857089768637532, + "99.99" : 2.857089768637532, + "99.999" : 2.857089768637532, + "99.9999" : 2.857089768637532, + "100.0" : 2.857089768637532 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.857089768637532, + 2.846963235980643, + 2.8502645807922486 + ], + [ + 2.849999239954403, + 2.8532497991440797, + 2.850531029353092 + ], + [ + 2.7937917039106144, + 2.7893524553820415, + 2.776723303442532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17399340825190943, + "scoreError" : 0.002415189799166387, + "scoreConfidence" : [ + 0.17157821845274304, + 0.1764085980510758 + ], + "scorePercentiles" : { + "0.0" : 0.17195098658802896, + "50.0" : 0.17425089607945635, + "90.0" : 0.17574364637446838, + "95.0" : 0.17574364637446838, + "99.0" : 0.17574364637446838, + "99.9" : 0.17574364637446838, + "99.99" : 0.17574364637446838, + "99.999" : 0.17574364637446838, + "99.9999" : 0.17574364637446838, + "100.0" : 0.17574364637446838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17527287233371308, + 0.1742294504242382, + 0.17425089607945635 + ], + [ + 0.17256591154443485, + 0.17195098658802896, + 0.17207340420882372 + ], + [ + 0.17574364637446838, + 0.17510702307867412, + 0.17474648363534695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3288146853420742, + "scoreError" : 0.00961866055753691, + "scoreConfidence" : [ + 0.3191960247845373, + 0.3384333458996111 + ], + "scorePercentiles" : { + "0.0" : 0.3229496437267883, + "50.0" : 0.32701093767371897, + "90.0" : 0.33675235816271554, + "95.0" : 0.33675235816271554, + "99.0" : 0.33675235816271554, + "99.9" : 0.33675235816271554, + "99.99" : 0.33675235816271554, + "99.999" : 0.33675235816271554, + "99.9999" : 0.33675235816271554, + "100.0" : 0.33675235816271554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3237096521865795, + 0.3234401143633365, + 0.3229496437267883 + ], + [ + 0.3271919762792828, + 0.32659347181580667, + 0.32701093767371897 + ], + [ + 0.33675235816271554, + 0.33555434001073753, + 0.3361296738597022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16611211253103553, + "scoreError" : 0.012610331553940314, + "scoreConfidence" : [ + 0.15350178097709521, + 0.17872244408497584 + ], + "scorePercentiles" : { + "0.0" : 0.15637186147206455, + "50.0" : 0.16811454968479447, + "90.0" : 0.17377661910471623, + "95.0" : 0.17377661910471623, + "99.0" : 0.17377661910471623, + "99.9" : 0.17377661910471623, + "99.99" : 0.17377661910471623, + "99.999" : 0.17377661910471623, + "99.9999" : 0.17377661910471623, + "100.0" : 0.17377661910471623 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16811454968479447, + 0.16761891483405966, + 0.168381385940394 + ], + [ + 0.1568560021488848, + 0.15637186147206455, + 0.1567233963923019 + ], + [ + 0.1736130055380983, + 0.17377661910471623, + 0.17355327766400555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3944184633266344, + "scoreError" : 0.009038540290119374, + "scoreConfidence" : [ + 0.385379923036515, + 0.40345700361675374 + ], + "scorePercentiles" : { + "0.0" : 0.3866889062294575, + "50.0" : 0.3934567140103081, + "90.0" : 0.4031605217899617, + "95.0" : 0.4031605217899617, + "99.0" : 0.4031605217899617, + "99.9" : 0.4031605217899617, + "99.99" : 0.4031605217899617, + "99.999" : 0.4031605217899617, + "99.9999" : 0.4031605217899617, + "100.0" : 0.4031605217899617 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3925430768566494, + 0.3866889062294575, + 0.38754908797085724 + ], + [ + 0.4031605217899617, + 0.3982964957384101, + 0.39914906773369524 + ], + [ + 0.39622482324973257, + 0.3934567140103081, + 0.39269747636063773 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15571468225916585, + "scoreError" : 0.0021395399956352862, + "scoreConfidence" : [ + 0.15357514226353056, + 0.15785422225480114 + ], + "scorePercentiles" : { + "0.0" : 0.15414635183044317, + "50.0" : 0.15539449561798802, + "90.0" : 0.15795597009951035, + "95.0" : 0.15795597009951035, + "99.0" : 0.15795597009951035, + "99.9" : 0.15795597009951035, + "99.99" : 0.15795597009951035, + "99.999" : 0.15795597009951035, + "99.9999" : 0.15795597009951035, + "100.0" : 0.15795597009951035 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1554432936860758, + 0.1543657783489241, + 0.15414635183044317 + ], + [ + 0.15795597009951035, + 0.15723632378930819, + 0.1565063382214849 + ], + [ + 0.15517247261273004, + 0.15539449561798802, + 0.15521111612602825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048346727576037835, + "scoreError" : 7.806057457140025E-4, + "scoreConfidence" : [ + 0.04756612183032383, + 0.049127333321751836 + ], + "scorePercentiles" : { + "0.0" : 0.04790786884931756, + "50.0" : 0.04807760585096154, + "90.0" : 0.0491959880701133, + "95.0" : 0.0491959880701133, + "99.0" : 0.0491959880701133, + "99.9" : 0.0491959880701133, + "99.99" : 0.0491959880701133, + "99.999" : 0.0491959880701133, + "99.9999" : 0.0491959880701133, + "100.0" : 0.0491959880701133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04790786884931756, + 0.048031901780996936, + 0.04796132565802095 + ], + [ + 0.04867936401871206, + 0.04863606014726767, + 0.048699932351881255 + ], + [ + 0.0491959880701133, + 0.04793050145706918, + 0.04807760585096154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9389509.542990893, + "scoreError" : 168809.23465839543, + "scoreConfidence" : [ + 9220700.308332497, + 9558318.777649289 + ], + "scorePercentiles" : { + "0.0" : 9245023.112754159, + "50.0" : 9440439.841509433, + "90.0" : 9504771.950617284, + "95.0" : 9504771.950617284, + "99.0" : 9504771.950617284, + "99.9" : 9504771.950617284, + "99.99" : 9504771.950617284, + "99.999" : 9504771.950617284, + "99.9999" : 9504771.950617284, + "100.0" : 9504771.950617284 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9447608.750708215, + 9440439.841509433, + 9409778.511759171 + ], + [ + 9458990.512287335, + 9504771.950617284, + 9461597.62630085 + ], + [ + 9290695.124419684, + 9245023.112754159, + 9246680.456561923 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..44fbbec310 --- /dev/null +++ b/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.419081479349856, + "scoreError" : 0.02181667824030549, + "scoreConfidence" : [ + 3.3972648011095505, + 3.4408981575901616 + ], + "scorePercentiles" : { + "0.0" : 3.4151876582998333, + "50.0" : 3.418878719276705, + "90.0" : 3.4233808205461798, + "95.0" : 3.4233808205461798, + "99.0" : 3.4233808205461798, + "99.9" : 3.4233808205461798, + "99.99" : 3.4233808205461798, + "99.999" : 3.4233808205461798, + "99.9999" : 3.4233808205461798, + "100.0" : 3.4233808205461798 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4183955684003458, + 3.4233808205461798 + ], + [ + 3.4151876582998333, + 3.4193618701530646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7278052370461388, + "scoreError" : 0.015468518360417289, + "scoreConfidence" : [ + 1.7123367186857215, + 1.743273755406556 + ], + "scorePercentiles" : { + "0.0" : 1.725058425680371, + "50.0" : 1.7276601761908168, + "90.0" : 1.7308421701225511, + "95.0" : 1.7308421701225511, + "99.0" : 1.7308421701225511, + "99.9" : 1.7308421701225511, + "99.99" : 1.7308421701225511, + "99.999" : 1.7308421701225511, + "99.9999" : 1.7308421701225511, + "100.0" : 1.7308421701225511 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725058425680371, + 1.7272240633541005 + ], + [ + 1.7280962890275329, + 1.7308421701225511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685942360123592, + "scoreError" : 0.0032093629192022875, + "scoreConfidence" : [ + 0.8653848730931569, + 0.8718035989315615 + ], + "scorePercentiles" : { + "0.0" : 0.8680596600008403, + "50.0" : 0.8685323243645763, + "90.0" : 0.8692526353194442, + "95.0" : 0.8692526353194442, + "99.0" : 0.8692526353194442, + "99.9" : 0.8692526353194442, + "99.99" : 0.8692526353194442, + "99.999" : 0.8692526353194442, + "99.9999" : 0.8692526353194442, + "100.0" : 0.8692526353194442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8684515043579376, + 0.8692526353194442 + ], + [ + 0.8680596600008403, + 0.868613144371215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.63258531665, + "scoreError" : 2456.2624530759686, + "scoreConfidence" : [ + 67763.37013224069, + 72675.89503839261 + ], + "scorePercentiles" : { + "0.0" : 68262.69827508756, + "50.0" : 71070.91574665892, + "90.0" : 71360.62796599019, + "95.0" : 71360.62796599019, + "99.0" : 71360.62796599019, + "99.9" : 71360.62796599019, + "99.99" : 71360.62796599019, + "99.999" : 71360.62796599019, + "99.9999" : 71360.62796599019, + "100.0" : 71360.62796599019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71090.84115154805, + 71070.91574665892, + 71068.11668011114 + ], + [ + 71326.00567174528, + 71360.62796599019, + 71232.73593615185 + ], + [ + 68263.9148079727, + 68262.69827508756, + 68300.83703258426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.62506314566724, + "scoreError" : 5.912882195955713, + "scoreConfidence" : [ + 346.7121809497115, + 358.53794534162296 + ], + "scorePercentiles" : { + "0.0" : 348.5994939203698, + "50.0" : 351.2596406536745, + "90.0" : 357.8709892240457, + "95.0" : 357.8709892240457, + "99.0" : 357.8709892240457, + "99.9" : 357.8709892240457, + "99.99" : 357.8709892240457, + "99.999" : 357.8709892240457, + "99.9999" : 357.8709892240457, + "100.0" : 357.8709892240457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.6002990284403, + 357.8709892240457, + 355.992835288197 + ], + [ + 355.0809382965137, + 351.2596406536745, + 350.96968106293775 + ], + [ + 348.5994939203698, + 349.08160018811935, + 349.1700906487072 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.6838769084973, + "scoreError" : 2.183117097066455, + "scoreConfidence" : [ + 105.50075981143084, + 109.86699400556375 + ], + "scorePercentiles" : { + "0.0" : 106.1920201263132, + "50.0" : 107.28988932269989, + "90.0" : 109.68039857724867, + "95.0" : 109.68039857724867, + "99.0" : 109.68039857724867, + "99.9" : 109.68039857724867, + "99.99" : 109.68039857724867, + "99.999" : 109.68039857724867, + "99.9999" : 109.68039857724867, + "100.0" : 109.68039857724867 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.1920201263132, + 106.3107103466616, + 106.51494550464022 + ], + [ + 109.68039857724867, + 108.93303271007677, + 109.1345679005366 + ], + [ + 107.85149666900807, + 107.24783101929074, + 107.28988932269989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01424904469711514, + "scoreError" : 2.8712049885863054E-4, + "scoreConfidence" : [ + 0.01396192419825651, + 0.01453616519597377 + ], + "scorePercentiles" : { + "0.0" : 0.014081548691345716, + "50.0" : 0.014197285943467211, + "90.0" : 0.014469735555761344, + "95.0" : 0.014469735555761344, + "99.0" : 0.014469735555761344, + "99.9" : 0.014469735555761344, + "99.99" : 0.014469735555761344, + "99.999" : 0.014469735555761344, + "99.9999" : 0.014469735555761344, + "100.0" : 0.014469735555761344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014469735555761344, + 0.014466371526486872, + 0.014465053651656951 + ], + [ + 0.014084542436261102, + 0.014081548691345716, + 0.014082558140615627 + ], + [ + 0.014202345880946092, + 0.014197285943467211, + 0.014191960447495364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9605920681254805, + "scoreError" : 0.0156261620457851, + "scoreConfidence" : [ + 0.9449659060796953, + 0.9762182301712656 + ], + "scorePercentiles" : { + "0.0" : 0.9515725629876308, + "50.0" : 0.9594482724743356, + "90.0" : 0.9813261324698264, + "95.0" : 0.9813261324698264, + "99.0" : 0.9813261324698264, + "99.9" : 0.9813261324698264, + "99.99" : 0.9813261324698264, + "99.999" : 0.9813261324698264, + "99.9999" : 0.9813261324698264, + "100.0" : 0.9813261324698264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9632121626697486, + 0.9640522833317265, + 0.9634844487475915 + ], + [ + 0.9523479509570517, + 0.9517655204149614, + 0.9515725629876308 + ], + [ + 0.9581192790764514, + 0.9594482724743356, + 0.9813261324698264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012935286805918217, + "scoreError" : 2.0065649442416766E-4, + "scoreConfidence" : [ + 0.01273463031149405, + 0.013135943300342384 + ], + "scorePercentiles" : { + "0.0" : 0.01282056484627199, + "50.0" : 0.012957244368985167, + "90.0" : 0.01300262296676349, + "95.0" : 0.01300262296676349, + "99.0" : 0.01300262296676349, + "99.9" : 0.01300262296676349, + "99.99" : 0.01300262296676349, + "99.999" : 0.01300262296676349, + "99.9999" : 0.01300262296676349, + "100.0" : 0.01300262296676349 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012886497260394009, + 0.012987495216820997, + 0.012987547024109466 + ], + [ + 0.01282056484627199, + 0.012926993521149337, + 0.01300262296676349 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6640448498751206, + "scoreError" : 0.10001425229743845, + "scoreConfidence" : [ + 3.5640305975776823, + 3.764059102172559 + ], + "scorePercentiles" : { + "0.0" : 3.6288989746008706, + "50.0" : 3.664207595317245, + "90.0" : 3.697876677014043, + "95.0" : 3.697876677014043, + "99.0" : 3.697876677014043, + "99.9" : 3.697876677014043, + "99.99" : 3.697876677014043, + "99.999" : 3.697876677014043, + "99.9999" : 3.697876677014043, + "100.0" : 3.697876677014043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.697876677014043, + 3.6976350059127863, + 3.6941182392909897 + ], + [ + 3.6288989746008706, + 3.6342969513435004, + 3.631443251088534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.796145889648464, + "scoreError" : 0.10606264859186876, + "scoreConfidence" : [ + 2.690083241056595, + 2.9022085382403326 + ], + "scorePercentiles" : { + "0.0" : 2.735265740153173, + "50.0" : 2.7747582746947836, + "90.0" : 2.8826144273775216, + "95.0" : 2.8826144273775216, + "99.0" : 2.8826144273775216, + "99.9" : 2.8826144273775216, + "99.99" : 2.8826144273775216, + "99.999" : 2.8826144273775216, + "99.9999" : 2.8826144273775216, + "100.0" : 2.8826144273775216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.77613158340272, + 2.7747582746947836, + 2.759658219646799 + ], + [ + 2.7483473440505635, + 2.735265740153173, + 2.7371980117679255 + ], + [ + 2.86899744205393, + 2.8823419636887606, + 2.8826144273775216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18386029216491354, + "scoreError" : 0.015936383371688425, + "scoreConfidence" : [ + 0.1679239087932251, + 0.19979667553660196 + ], + "scorePercentiles" : { + "0.0" : 0.17637173245149912, + "50.0" : 0.1786052278401886, + "90.0" : 0.1967785992325856, + "95.0" : 0.1967785992325856, + "99.0" : 0.1967785992325856, + "99.9" : 0.1967785992325856, + "99.99" : 0.1967785992325856, + "99.999" : 0.1967785992325856, + "99.9999" : 0.1967785992325856, + "100.0" : 0.1967785992325856 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17676752035423257, + 0.17639937312800974, + 0.17637173245149912 + ], + [ + 0.1965152944112561, + 0.19603218908905573, + 0.1967785992325856 + ], + [ + 0.17880823137303986, + 0.17846446160435442, + 0.1786052278401886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3268686979876325, + "scoreError" : 0.009509582095350317, + "scoreConfidence" : [ + 0.3173591158922822, + 0.3363782800829828 + ], + "scorePercentiles" : { + "0.0" : 0.32142813943173054, + "50.0" : 0.3239967884011016, + "90.0" : 0.3350558973766208, + "95.0" : 0.3350558973766208, + "99.0" : 0.3350558973766208, + "99.9" : 0.3350558973766208, + "99.99" : 0.3350558973766208, + "99.999" : 0.3350558973766208, + "99.9999" : 0.3350558973766208, + "100.0" : 0.3350558973766208 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32486509677419356, + 0.3239967884011016, + 0.32357341784766713 + ], + [ + 0.33470154652252493, + 0.33304827188863356, + 0.3350558973766208 + ], + [ + 0.3226825007905521, + 0.32142813943173054, + 0.3224666228556688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16040518763688932, + "scoreError" : 0.005985603649017898, + "scoreConfidence" : [ + 0.15441958398787142, + 0.16639079128590722 + ], + "scorePercentiles" : { + "0.0" : 0.15520278784163394, + "50.0" : 0.16224452822168503, + "90.0" : 0.1633454222407344, + "95.0" : 0.1633454222407344, + "99.0" : 0.1633454222407344, + "99.9" : 0.1633454222407344, + "99.99" : 0.1633454222407344, + "99.999" : 0.1633454222407344, + "99.9999" : 0.1633454222407344, + "100.0" : 0.1633454222407344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16206104194013646, + 0.16235918097835794, + 0.16224452822168503 + ], + [ + 0.15520278784163394, + 0.15584427127228526, + 0.15607415878763287 + ], + [ + 0.1633454222407344, + 0.16317626146691686, + 0.1633390359826212 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39186170392434727, + "scoreError" : 0.008382766232144253, + "scoreConfidence" : [ + 0.38347893769220304, + 0.4002444701564915 + ], + "scorePercentiles" : { + "0.0" : 0.3852108789723046, + "50.0" : 0.39403914370148546, + "90.0" : 0.39714948530579824, + "95.0" : 0.39714948530579824, + "99.0" : 0.39714948530579824, + "99.9" : 0.39714948530579824, + "99.99" : 0.39714948530579824, + "99.999" : 0.39714948530579824, + "99.9999" : 0.39714948530579824, + "100.0" : 0.39714948530579824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38585839105606357, + 0.38531843093284013, + 0.3852108789723046 + ], + [ + 0.3969191444334193, + 0.39403914370148546, + 0.3927082935794227 + ], + [ + 0.39714948530579824, + 0.394844230031192, + 0.3947073373065993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15617891534733674, + "scoreError" : 0.0027246898703879286, + "scoreConfidence" : [ + 0.1534542254769488, + 0.15890360521772467 + ], + "scorePercentiles" : { + "0.0" : 0.15406912377709647, + "50.0" : 0.1558871378020265, + "90.0" : 0.15838028224133288, + "95.0" : 0.15838028224133288, + "99.0" : 0.15838028224133288, + "99.9" : 0.15838028224133288, + "99.99" : 0.15838028224133288, + "99.999" : 0.15838028224133288, + "99.9999" : 0.15838028224133288, + "100.0" : 0.15838028224133288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15838028224133288, + 0.15824253888757023, + 0.1577863723847392 + ], + [ + 0.15528550955760181, + 0.15422730028839776, + 0.15406912377709647 + ], + [ + 0.1558871378020265, + 0.155819362336003, + 0.15591261085126287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046892479422411135, + "scoreError" : 7.27228595279716E-4, + "scoreConfidence" : [ + 0.04616525082713142, + 0.04761970801769085 + ], + "scorePercentiles" : { + "0.0" : 0.04646620786848378, + "50.0" : 0.04681246217834389, + "90.0" : 0.04745806077877702, + "95.0" : 0.04745806077877702, + "99.0" : 0.04745806077877702, + "99.9" : 0.04745806077877702, + "99.99" : 0.04745806077877702, + "99.999" : 0.04745806077877702, + "99.9999" : 0.04745806077877702, + "100.0" : 0.04745806077877702 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04697078824430134, + 0.04647115450996794, + 0.04646620786848378 + ], + [ + 0.04681246217834389, + 0.04654221015349387, + 0.04649830915304675 + ], + [ + 0.04740479233190489, + 0.04740832958338074, + 0.04745806077877702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9153374.794718103, + "scoreError" : 35141.224373571386, + "scoreConfidence" : [ + 9118233.570344532, + 9188516.019091675 + ], + "scorePercentiles" : { + "0.0" : 9121060.185050137, + "50.0" : 9156568.882891126, + "90.0" : 9189768.824609734, + "95.0" : 9189768.824609734, + "99.0" : 9189768.824609734, + "99.9" : 9189768.824609734, + "99.99" : 9189768.824609734, + "99.999" : 9189768.824609734, + "99.9999" : 9189768.824609734, + "100.0" : 9189768.824609734 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9138728.467579909, + 9135038.461187216, + 9121060.185050137 + ], + [ + 9144502.108775137, + 9156568.882891126, + 9157744.234432235 + ], + [ + 9189768.824609734, + 9171180.827681027, + 9165781.16025641 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..662bfc4c3b --- /dev/null +++ b/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.419640407240273, + "scoreError" : 0.033845851587922124, + "scoreConfidence" : [ + 3.3857945556523505, + 3.453486258828195 + ], + "scorePercentiles" : { + "0.0" : 3.4146699284177893, + "50.0" : 3.4184445363788676, + "90.0" : 3.427002627785568, + "95.0" : 3.427002627785568, + "99.0" : 3.427002627785568, + "99.9" : 3.427002627785568, + "99.99" : 3.427002627785568, + "99.999" : 3.427002627785568, + "99.9999" : 3.427002627785568, + "100.0" : 3.427002627785568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418960193365409, + 3.427002627785568 + ], + [ + 3.4146699284177893, + 3.417928879392327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.728259570626513, + "scoreError" : 0.009225737494153523, + "scoreConfidence" : [ + 1.7190338331323594, + 1.7374853081206665 + ], + "scorePercentiles" : { + "0.0" : 1.726468041428064, + "50.0" : 1.7283038272179163, + "90.0" : 1.7299625866421546, + "95.0" : 1.7299625866421546, + "99.0" : 1.7299625866421546, + "99.9" : 1.7299625866421546, + "99.99" : 1.7299625866421546, + "99.999" : 1.7299625866421546, + "99.9999" : 1.7299625866421546, + "100.0" : 1.7299625866421546 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282796925630504, + 1.7299625866421546 + ], + [ + 1.726468041428064, + 1.7283279618727825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8681979109233867, + "scoreError" : 0.006028616842983343, + "scoreConfidence" : [ + 0.8621692940804033, + 0.8742265277663701 + ], + "scorePercentiles" : { + "0.0" : 0.8668273030701195, + "50.0" : 0.8685266393427444, + "90.0" : 0.8689110619379388, + "95.0" : 0.8689110619379388, + "99.0" : 0.8689110619379388, + "99.9" : 0.8689110619379388, + "99.99" : 0.8689110619379388, + "99.999" : 0.8689110619379388, + "99.9999" : 0.8689110619379388, + "100.0" : 0.8689110619379388 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685892047662458, + 0.8689110619379388 + ], + [ + 0.8668273030701195, + 0.8684640739192432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69648.01861478564, + "scoreError" : 2087.607519878574, + "scoreConfidence" : [ + 67560.41109490707, + 71735.62613466421 + ], + "scorePercentiles" : { + "0.0" : 68001.28467819697, + "50.0" : 69992.90089804973, + "90.0" : 71029.82538555992, + "95.0" : 71029.82538555992, + "99.0" : 71029.82538555992, + "99.9" : 71029.82538555992, + "99.99" : 71029.82538555992, + "99.999" : 71029.82538555992, + "99.9999" : 71029.82538555992, + "100.0" : 71029.82538555992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68001.28467819697, + 70138.72785998843, + 69992.90089804973 + ], + [ + 71001.67829047698, + 71024.5754757033, + 71029.82538555992 + ], + [ + 68613.0120961982, + 68517.5283816697, + 68512.63446722752 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.553845841135, + "scoreError" : 7.0370841367788906, + "scoreConfidence" : [ + 339.5167617043561, + 353.5909299779139 + ], + "scorePercentiles" : { + "0.0" : 338.8824915344101, + "50.0" : 345.86361663474355, + "90.0" : 352.82648521467127, + "95.0" : 352.82648521467127, + "99.0" : 352.82648521467127, + "99.9" : 352.82648521467127, + "99.99" : 352.82648521467127, + "99.999" : 352.82648521467127, + "99.9999" : 352.82648521467127, + "100.0" : 352.82648521467127 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.78276083942797, + 343.2203107307122, + 338.8824915344101 + ], + [ + 349.6999294135891, + 350.7825466039242, + 352.82648521467127 + ], + [ + 345.07844612419234, + 345.84802547454444, + 345.86361663474355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.93576515773535, + "scoreError" : 4.531444666535601, + "scoreConfidence" : [ + 103.40432049119974, + 112.46720982427095 + ], + "scorePercentiles" : { + "0.0" : 104.48158965432441, + "50.0" : 107.8583918780271, + "90.0" : 111.14908882675743, + "95.0" : 111.14908882675743, + "99.0" : 111.14908882675743, + "99.9" : 111.14908882675743, + "99.99" : 111.14908882675743, + "99.999" : 111.14908882675743, + "99.9999" : 111.14908882675743, + "100.0" : 111.14908882675743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.14908882675743, + 110.92489527140685, + 111.13665039776886 + ], + [ + 107.64938815573633, + 107.8583918780271, + 108.09974628464035 + ], + [ + 105.27645600496199, + 104.48158965432441, + 104.84567994599468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014182477074290387, + "scoreError" : 4.544045452456582E-5, + "scoreConfidence" : [ + 0.01413703661976582, + 0.014227917528814953 + ], + "scorePercentiles" : { + "0.0" : 0.014150026652705457, + "50.0" : 0.01417108860798957, + "90.0" : 0.014222776878592986, + "95.0" : 0.014222776878592986, + "99.0" : 0.014222776878592986, + "99.9" : 0.014222776878592986, + "99.99" : 0.014222776878592986, + "99.999" : 0.014222776878592986, + "99.9999" : 0.014222776878592986, + "100.0" : 0.014222776878592986 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014193744343859291, + 0.014196946813177453, + 0.01417108860798957 + ], + [ + 0.014150026652705457, + 0.014220712166243843, + 0.014222776878592986 + ], + [ + 0.01416372353148631, + 0.014158148562610167, + 0.014165126111948418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9717049067434507, + "scoreError" : 0.006816987246318855, + "scoreConfidence" : [ + 0.9648879194971318, + 0.9785218939897695 + ], + "scorePercentiles" : { + "0.0" : 0.9666643270178831, + "50.0" : 0.9739816991624465, + "90.0" : 0.9758728205503513, + "95.0" : 0.9758728205503513, + "99.0" : 0.9758728205503513, + "99.9" : 0.9758728205503513, + "99.99" : 0.9758728205503513, + "99.999" : 0.9758728205503513, + "99.9999" : 0.9758728205503513, + "100.0" : 0.9758728205503513 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9676304501209483, + 0.9666643270178831, + 0.9755419225441421 + ], + [ + 0.9683314082106894, + 0.9673373230798994, + 0.9753787322734809 + ], + [ + 0.9739816991624465, + 0.9758728205503513, + 0.9746054777312153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013071837844191544, + "scoreError" : 2.2574804378363924E-4, + "scoreConfidence" : [ + 0.012846089800407905, + 0.013297585887975184 + ], + "scorePercentiles" : { + "0.0" : 0.012941054920453339, + "50.0" : 0.013066141899765456, + "90.0" : 0.013166056665429086, + "95.0" : 0.013166056665429086, + "99.0" : 0.013166056665429086, + "99.9" : 0.013166056665429086, + "99.99" : 0.013166056665429086, + "99.999" : 0.013166056665429086, + "99.9999" : 0.013166056665429086, + "100.0" : 0.013166056665429086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012941054920453339, + 0.013062482853298849, + 0.013044916436211845 + ], + [ + 0.013069800946232063, + 0.01314671524352408, + 0.013166056665429086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.714277948000932, + "scoreError" : 0.21064436555544172, + "scoreConfidence" : [ + 3.5036335824454903, + 3.9249223135563738 + ], + "scorePercentiles" : { + "0.0" : 3.6397042852983987, + "50.0" : 3.7140892108414008, + "90.0" : 3.7856188084784255, + "95.0" : 3.7856188084784255, + "99.0" : 3.7856188084784255, + "99.9" : 3.7856188084784255, + "99.99" : 3.7856188084784255, + "99.999" : 3.7856188084784255, + "99.9999" : 3.7856188084784255, + "100.0" : 3.7856188084784255 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.650553775912409, + 3.6397042852983987, + 3.647226038657914 + ], + [ + 3.7776246457703926, + 3.7856188084784255, + 3.7849401338880484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8470397521263693, + "scoreError" : 0.025566746262419202, + "scoreConfidence" : [ + 2.82147300586395, + 2.8726064983887887 + ], + "scorePercentiles" : { + "0.0" : 2.8274614687588353, + "50.0" : 2.8499350316329437, + "90.0" : 2.8701827578192254, + "95.0" : 2.8701827578192254, + "99.0" : 2.8701827578192254, + "99.9" : 2.8701827578192254, + "99.99" : 2.8701827578192254, + "99.999" : 2.8701827578192254, + "99.9999" : 2.8701827578192254, + "100.0" : 2.8701827578192254 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8701827578192254, + 2.8599932299113524, + 2.8499350316329437 + ], + [ + 2.860579891590389, + 2.8513845940706957, + 2.841021331534091 + ], + [ + 2.835212614512472, + 2.8274614687588353, + 2.8275868493073224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1745005195505932, + "scoreError" : 0.0020275178639915406, + "scoreConfidence" : [ + 0.17247300168660165, + 0.17652803741458475 + ], + "scorePercentiles" : { + "0.0" : 0.17309754439867064, + "50.0" : 0.1741435452329125, + "90.0" : 0.1760333223960992, + "95.0" : 0.1760333223960992, + "99.0" : 0.1760333223960992, + "99.9" : 0.1760333223960992, + "99.99" : 0.1760333223960992, + "99.999" : 0.1760333223960992, + "99.9999" : 0.1760333223960992, + "100.0" : 0.1760333223960992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17357218840906724, + 0.1732631288875028, + 0.17309754439867064 + ], + [ + 0.17473068384819682, + 0.1737637954162395, + 0.1741435452329125 + ], + [ + 0.1760333223960992, + 0.17601621082831698, + 0.175884256538333 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3228836238631105, + "scoreError" : 0.0025800955935671417, + "scoreConfidence" : [ + 0.32030352826954334, + 0.3254637194566776 + ], + "scorePercentiles" : { + "0.0" : 0.3206341434800731, + "50.0" : 0.32319999993536086, + "90.0" : 0.3249434223883022, + "95.0" : 0.3249434223883022, + "99.0" : 0.3249434223883022, + "99.9" : 0.3249434223883022, + "99.99" : 0.3249434223883022, + "99.999" : 0.3249434223883022, + "99.9999" : 0.3249434223883022, + "100.0" : 0.3249434223883022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3206341434800731, + 0.32145425224211643, + 0.3210235518923951 + ], + [ + 0.3242084933700762, + 0.32319999993536086, + 0.32265440853068333 + ], + [ + 0.3249434223883022, + 0.3239831920173648, + 0.3238511509116228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16591044519258213, + "scoreError" : 0.0067544336253027755, + "scoreConfidence" : [ + 0.15915601156727935, + 0.17266487881788492 + ], + "scorePercentiles" : { + "0.0" : 0.1618345934814623, + "50.0" : 0.16472899033060437, + "90.0" : 0.17116194415062044, + "95.0" : 0.17116194415062044, + "99.0" : 0.17116194415062044, + "99.9" : 0.17116194415062044, + "99.99" : 0.17116194415062044, + "99.999" : 0.17116194415062044, + "99.9999" : 0.17116194415062044, + "100.0" : 0.17116194415062044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16472899033060437, + 0.16473938853104458, + 0.1646474898167509 + ], + [ + 0.17080365469358474, + 0.17116194415062044, + 0.17112831592997588 + ], + [ + 0.16229985615749157, + 0.1618345934814623, + 0.16184977364170455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3956644356033628, + "scoreError" : 0.008307636951365563, + "scoreConfidence" : [ + 0.38735679865199724, + 0.40397207255472833 + ], + "scorePercentiles" : { + "0.0" : 0.390096359625512, + "50.0" : 0.3933824678808859, + "90.0" : 0.405691865030426, + "95.0" : 0.405691865030426, + "99.0" : 0.405691865030426, + "99.9" : 0.405691865030426, + "99.99" : 0.405691865030426, + "99.999" : 0.405691865030426, + "99.9999" : 0.405691865030426, + "100.0" : 0.405691865030426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39496456504739336, + 0.3915411707842293, + 0.390096359625512 + ], + [ + 0.405691865030426, + 0.39975288051646946, + 0.3991692626831118 + ], + [ + 0.39332322076696163, + 0.3930581280952755, + 0.3933824678808859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1572647709808916, + "scoreError" : 0.0037341884184379057, + "scoreConfidence" : [ + 0.1535305825624537, + 0.16099895939932948 + ], + "scorePercentiles" : { + "0.0" : 0.15498375, + "50.0" : 0.15638225283437848, + "90.0" : 0.16048965336778417, + "95.0" : 0.16048965336778417, + "99.0" : 0.16048965336778417, + "99.9" : 0.16048965336778417, + "99.99" : 0.16048965336778417, + "99.999" : 0.16048965336778417, + "99.9999" : 0.16048965336778417, + "100.0" : 0.16048965336778417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1560176270184252, + 0.15642328273111217, + 0.15638225283437848 + ], + [ + 0.1554366101715991, + 0.15567427536660544, + 0.15498375 + ], + [ + 0.16048965336778417, + 0.16026842540506755, + 0.15970706193305226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0472223516947196, + "scoreError" : 0.0011805643716068521, + "scoreConfidence" : [ + 0.046041787323112746, + 0.04840291606632645 + ], + "scorePercentiles" : { + "0.0" : 0.04637169603342422, + "50.0" : 0.0471845359800318, + "90.0" : 0.04845031826065892, + "95.0" : 0.04845031826065892, + "99.0" : 0.04845031826065892, + "99.9" : 0.04845031826065892, + "99.99" : 0.04845031826065892, + "99.999" : 0.04845031826065892, + "99.9999" : 0.04845031826065892, + "100.0" : 0.04845031826065892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046576301418225004, + 0.04637169603342422, + 0.046407148343055496 + ], + [ + 0.04845031826065892, + 0.047919916816813936, + 0.04754857862529361 + ], + [ + 0.047405010376817366, + 0.04713765939815601, + 0.0471845359800318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9322508.960505482, + "scoreError" : 254291.34908198053, + "scoreConfidence" : [ + 9068217.611423502, + 9576800.309587462 + ], + "scorePercentiles" : { + "0.0" : 9170753.268560953, + "50.0" : 9282116.878478665, + "90.0" : 9531735.557142857, + "95.0" : 9531735.557142857, + "99.0" : 9531735.557142857, + "99.9" : 9531735.557142857, + "99.99" : 9531735.557142857, + "99.999" : 9531735.557142857, + "99.9999" : 9531735.557142857, + "100.0" : 9531735.557142857 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9250168.812384473, + 9284957.720779222, + 9282116.878478665 + ], + [ + 9193211.326286765, + 9170753.268560953, + 9173660.361136572 + ], + [ + 9493256.503795067, + 9522720.215984777, + 9531735.557142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json b/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json new file mode 100644 index 0000000000..01af99efd7 --- /dev/null +++ b/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4030341962375994, + "scoreError" : 0.02905720653413424, + "scoreConfidence" : [ + 3.3739769897034653, + 3.4320914027717335 + ], + "scorePercentiles" : { + "0.0" : 3.3984726801583083, + "50.0" : 3.40222251416189, + "90.0" : 3.40921907646831, + "95.0" : 3.40921907646831, + "99.0" : 3.40921907646831, + "99.9" : 3.40921907646831, + "99.99" : 3.40921907646831, + "99.999" : 3.40921907646831, + "99.9999" : 3.40921907646831, + "100.0" : 3.40921907646831 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3984726801583083, + 3.40921907646831 + ], + [ + 3.401847449089267, + 3.402597579234513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7177090587738857, + "scoreError" : 0.011729170580772197, + "scoreConfidence" : [ + 1.7059798881931134, + 1.729438229354658 + ], + "scorePercentiles" : { + "0.0" : 1.7161540986078148, + "50.0" : 1.7174972498814143, + "90.0" : 1.7196876367249, + "95.0" : 1.7196876367249, + "99.0" : 1.7196876367249, + "99.9" : 1.7196876367249, + "99.99" : 1.7196876367249, + "99.999" : 1.7196876367249, + "99.9999" : 1.7196876367249, + "100.0" : 1.7196876367249 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7161816911797099, + 1.7188128085831187 + ], + [ + 1.7161540986078148, + 1.7196876367249 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8648592999960828, + "scoreError" : 0.005526498918160724, + "scoreConfidence" : [ + 0.8593328010779221, + 0.8703857989142435 + ], + "scorePercentiles" : { + "0.0" : 0.8639429699495912, + "50.0" : 0.8649398593777518, + "90.0" : 0.8656145112792367, + "95.0" : 0.8656145112792367, + "99.0" : 0.8656145112792367, + "99.9" : 0.8656145112792367, + "99.99" : 0.8656145112792367, + "99.999" : 0.8656145112792367, + "99.9999" : 0.8656145112792367, + "100.0" : 0.8656145112792367 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.864318860199225, + 0.8639429699495912 + ], + [ + 0.8655608585562785, + 0.8656145112792367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.894285209058118, + "scoreError" : 0.22100514707279106, + "scoreConfidence" : [ + 15.673280061985327, + 16.11529035613091 + ], + "scorePercentiles" : { + "0.0" : 15.675229525482061, + "50.0" : 15.907164710763897, + "90.0" : 16.06855890412849, + "95.0" : 16.06855890412849, + "99.0" : 16.06855890412849, + "99.9" : 16.06855890412849, + "99.99" : 16.06855890412849, + "99.999" : 16.06855890412849, + "99.9999" : 16.06855890412849, + "100.0" : 16.06855890412849 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.06855890412849, + 15.954200891572873, + 15.889569229430252 + ], + [ + 15.907164710763897, + 16.00879970270076, + 15.99190467327713 + ], + [ + 15.830796895625069, + 15.675229525482061, + 15.72234234854253 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 23.84258595407435, + "scoreError" : 0.16971826450224373, + "scoreConfidence" : [ + 23.672867689572108, + 24.012304218576595 + ], + "scorePercentiles" : { + "0.0" : 23.73385673723001, + "50.0" : 23.823719230321753, + "90.0" : 24.079442391385157, + "95.0" : 24.079442391385157, + "99.0" : 24.079442391385157, + "99.9" : 24.079442391385157, + "99.99" : 24.079442391385157, + "99.999" : 24.079442391385157, + "99.9999" : 24.079442391385157, + "100.0" : 24.079442391385157 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 23.899958603431326, + 23.796039927842227, + 23.790688365773097 + ], + [ + 23.849380733110003, + 24.079442391385157, + 23.823719230321753 + ], + [ + 23.839112614729608, + 23.73385673723001, + 23.771074982845974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70190.75403769573, + "scoreError" : 401.50400495191934, + "scoreConfidence" : [ + 69789.25003274382, + 70592.25804264765 + ], + "scorePercentiles" : { + "0.0" : 69854.4041312379, + "50.0" : 70190.65239873884, + "90.0" : 70493.13169380104, + "95.0" : 70493.13169380104, + "99.0" : 70493.13169380104, + "99.9" : 70493.13169380104, + "99.99" : 70493.13169380104, + "99.999" : 70493.13169380104, + "99.9999" : 70493.13169380104, + "100.0" : 70493.13169380104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70482.36880103988, + 70493.13169380104, + 70329.6963337318 + ], + [ + 69983.17063049234, + 70365.16553246543, + 70190.65239873884 + ], + [ + 70073.43951918474, + 69854.4041312379, + 69944.75729856959 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.33117298479885, + "scoreError" : 16.396151264190877, + "scoreConfidence" : [ + 307.935021720608, + 340.7273242489897 + ], + "scorePercentiles" : { + "0.0" : 311.7536298897916, + "50.0" : 320.7394310847248, + "90.0" : 341.3502382353502, + "95.0" : 341.3502382353502, + "99.0" : 341.3502382353502, + "99.9" : 341.3502382353502, + "99.99" : 341.3502382353502, + "99.999" : 341.3502382353502, + "99.9999" : 341.3502382353502, + "100.0" : 341.3502382353502 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 320.6566368654864, + 323.2717383562003, + 320.0584633567249 + ], + [ + 334.0350009976469, + 341.3502382353502, + 332.8480453159042 + ], + [ + 314.2673727613599, + 311.7536298897916, + 320.7394310847248 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 98.82877677960663, + "scoreError" : 2.213364397678412, + "scoreConfidence" : [ + 96.61541238192821, + 101.04214117728505 + ], + "scorePercentiles" : { + "0.0" : 96.7095691352346, + "50.0" : 98.54617145982048, + "90.0" : 100.73049767909293, + "95.0" : 100.73049767909293, + "99.0" : 100.73049767909293, + "99.9" : 100.73049767909293, + "99.99" : 100.73049767909293, + "99.999" : 100.73049767909293, + "99.9999" : 100.73049767909293, + "100.0" : 100.73049767909293 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 98.54617145982048, + 98.33512677300635, + 97.41535629373469 + ], + [ + 100.49777592353054, + 98.52742877499989, + 99.21958486804665 + ], + [ + 99.47748010899346, + 100.73049767909293, + 96.7095691352346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06274013284017438, + "scoreError" : 7.00780518209212E-4, + "scoreConfidence" : [ + 0.06203935232196517, + 0.06344091335838359 + ], + "scorePercentiles" : { + "0.0" : 0.06218591576394503, + "50.0" : 0.06281513064070351, + "90.0" : 0.06342166454841226, + "95.0" : 0.06342166454841226, + "99.0" : 0.06342166454841226, + "99.9" : 0.06342166454841226, + "99.99" : 0.06342166454841226, + "99.999" : 0.06342166454841226, + "99.9999" : 0.06342166454841226, + "100.0" : 0.06342166454841226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06298900028974552, + 0.06281513064070351, + 0.06218591576394503 + ], + [ + 0.06310182017466368, + 0.06285766694114098, + 0.06342166454841226 + ], + [ + 0.06224469643779682, + 0.062339103487828444, + 0.06270619727733327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.041783924753189074, + "scoreError" : 3.37840812015335E-4, + "scoreConfidence" : [ + 0.04144608394117374, + 0.04212176556520441 + ], + "scorePercentiles" : { + "0.0" : 0.04141958317973782, + "50.0" : 0.04176708066375415, + "90.0" : 0.04209846797618948, + "95.0" : 0.04209846797618948, + "99.0" : 0.04209846797618948, + "99.9" : 0.04209846797618948, + "99.99" : 0.04209846797618948, + "99.999" : 0.04209846797618948, + "99.9999" : 0.04209846797618948, + "100.0" : 0.04209846797618948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04191370691440092, + 0.04174531906358145, + 0.04141958317973782 + ], + [ + 0.04176708066375415, + 0.04170001375666671, + 0.04209846797618948 + ], + [ + 0.04160955372753638, + 0.041965154257729884, + 0.041836443239104876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014174588031238746, + "scoreError" : 1.2015869779662313E-4, + "scoreConfidence" : [ + 0.014054429333442123, + 0.014294746729035369 + ], + "scorePercentiles" : { + "0.0" : 0.0140440420136085, + "50.0" : 0.01417231512733663, + "90.0" : 0.014274561368398815, + "95.0" : 0.014274561368398815, + "99.0" : 0.014274561368398815, + "99.9" : 0.014274561368398815, + "99.99" : 0.014274561368398815, + "99.999" : 0.014274561368398815, + "99.9999" : 0.014274561368398815, + "100.0" : 0.014274561368398815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014137954149789701, + 0.014109782593543162, + 0.0140440420136085 + ], + [ + 0.014237063277154677, + 0.014236445661644117, + 0.014274561368398815 + ], + [ + 0.014163128768233044, + 0.01417231512733663, + 0.01419599932144008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.983950143153562, + "scoreError" : 0.01789666233502451, + "scoreConfidence" : [ + 0.9660534808185375, + 1.0018468054885865 + ], + "scorePercentiles" : { + "0.0" : 0.9690377924418605, + "50.0" : 0.9826584856047951, + "90.0" : 1.0008194397518015, + "95.0" : 1.0008194397518015, + "99.0" : 1.0008194397518015, + "99.9" : 1.0008194397518015, + "99.99" : 1.0008194397518015, + "99.999" : 1.0008194397518015, + "99.9999" : 1.0008194397518015, + "100.0" : 1.0008194397518015 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9766162767578125, + 0.9759815764614034, + 0.977302323463305 + ], + [ + 0.9921559711309523, + 1.0008194397518015, + 0.9969865728242449 + ], + [ + 0.9690377924418605, + 0.9826584856047951, + 0.9839928499458821 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013046854808199082, + "scoreError" : 7.155498045868686E-4, + "scoreConfidence" : [ + 0.012331305003612214, + 0.013762404612785951 + ], + "scorePercentiles" : { + "0.0" : 0.012759913740041137, + "50.0" : 0.013023311519173332, + "90.0" : 0.013313933373629036, + "95.0" : 0.013313933373629036, + "99.0" : 0.013313933373629036, + "99.9" : 0.013313933373629036, + "99.99" : 0.013313933373629036, + "99.999" : 0.013313933373629036, + "99.9999" : 0.013313933373629036, + "100.0" : 0.013313933373629036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013197641879604188, + 0.013312456124516436, + 0.013313933373629036 + ], + [ + 0.012759913740041137, + 0.012848981158742476, + 0.012848202572661234 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9100372274851996, + "scoreError" : 0.09267811388781177, + "scoreConfidence" : [ + 3.8173591135973877, + 4.002715341373011 + ], + "scorePercentiles" : { + "0.0" : 3.8678984586233565, + "50.0" : 3.906645754355439, + "90.0" : 3.9560345450949366, + "95.0" : 3.9560345450949366, + "99.0" : 3.9560345450949366, + "99.9" : 3.9560345450949366, + "99.99" : 3.9560345450949366, + "99.999" : 3.9560345450949366, + "99.9999" : 3.9560345450949366, + "100.0" : 3.9560345450949366 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8678984586233565, + 3.8990089734996105, + 3.914282535211268 + ], + [ + 3.8847961304347827, + 3.938202722047244, + 3.9560345450949366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.074877921242732, + "scoreError" : 0.14285652352037062, + "scoreConfidence" : [ + 2.9320213977223615, + 3.217734444763103 + ], + "scorePercentiles" : { + "0.0" : 2.9614455812851643, + "50.0" : 3.079247117302956, + "90.0" : 3.1787071652892562, + "95.0" : 3.1787071652892562, + "99.0" : 3.1787071652892562, + "99.9" : 3.1787071652892562, + "99.99" : 3.1787071652892562, + "99.999" : 3.1787071652892562, + "99.9999" : 3.1787071652892562, + "100.0" : 3.1787071652892562 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.079247117302956, + 3.1787071652892562, + 3.1742028940019043 + ], + [ + 2.9614455812851643, + 3.001099893189319, + 2.99687381810009 + ], + [ + 3.162621833649589, + 3.011864800361337, + 3.107838188004972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1792216150867655, + "scoreError" : 0.0028134776583006605, + "scoreConfidence" : [ + 0.17640813742846484, + 0.18203509274506618 + ], + "scorePercentiles" : { + "0.0" : 0.1767819975958139, + "50.0" : 0.1795381048653501, + "90.0" : 0.1817618339270784, + "95.0" : 0.1817618339270784, + "99.0" : 0.1817618339270784, + "99.9" : 0.1817618339270784, + "99.99" : 0.1817618339270784, + "99.999" : 0.1817618339270784, + "99.9999" : 0.1817618339270784, + "100.0" : 0.1817618339270784 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18049263225340673, + 0.1804214153210529, + 0.1795381048653501 + ], + [ + 0.1817618339270784, + 0.17952781720912697, + 0.17965059216743015 + ], + [ + 0.1772999119373083, + 0.1775202305043225, + 0.1767819975958139 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33466733956572775, + "scoreError" : 0.004866797587081008, + "scoreConfidence" : [ + 0.3298005419786467, + 0.3395341371528088 + ], + "scorePercentiles" : { + "0.0" : 0.3300852951544758, + "50.0" : 0.3358559937533584, + "90.0" : 0.33746668143623665, + "95.0" : 0.33746668143623665, + "99.0" : 0.33746668143623665, + "99.9" : 0.33746668143623665, + "99.99" : 0.33746668143623665, + "99.999" : 0.33746668143623665, + "99.9999" : 0.33746668143623665, + "100.0" : 0.33746668143623665 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3300852951544758, + 0.3314083194034797, + 0.33132537756352914 + ], + [ + 0.33537929941645983, + 0.33673772668193147, + 0.3358559937533584 + ], + [ + 0.337392372537112, + 0.33746668143623665, + 0.33635499014496656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17101508461082024, + "scoreError" : 0.010519194639942204, + "scoreConfidence" : [ + 0.16049588997087805, + 0.18153427925076243 + ], + "scorePercentiles" : { + "0.0" : 0.16516208604743343, + "50.0" : 0.16813719979487524, + "90.0" : 0.17961573141030246, + "95.0" : 0.17961573141030246, + "99.0" : 0.17961573141030246, + "99.9" : 0.17961573141030246, + "99.99" : 0.17961573141030246, + "99.999" : 0.17961573141030246, + "99.9999" : 0.17961573141030246, + "100.0" : 0.17961573141030246 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17919520307852202, + 0.17888246420649684, + 0.17961573141030246 + ], + [ + 0.16516208604743343, + 0.16615715744786907, + 0.16587774737505598 + ], + [ + 0.16861689849598704, + 0.16749127364084013, + 0.16813719979487524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39043772821823275, + "scoreError" : 0.0047876565689028575, + "scoreConfidence" : [ + 0.3856500716493299, + 0.3952253847871356 + ], + "scorePercentiles" : { + "0.0" : 0.38742203788788593, + "50.0" : 0.38943609887456676, + "90.0" : 0.39498915905679755, + "95.0" : 0.39498915905679755, + "99.0" : 0.39498915905679755, + "99.9" : 0.39498915905679755, + "99.99" : 0.39498915905679755, + "99.999" : 0.39498915905679755, + "99.9999" : 0.39498915905679755, + "100.0" : 0.39498915905679755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39472534043812907, + 0.39137307032717594, + 0.38897682500291725 + ], + [ + 0.39498915905679755, + 0.3910808260529506, + 0.38943609887456676 + ], + [ + 0.388212455628882, + 0.38742203788788593, + 0.3877237406947891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15861643109426515, + "scoreError" : 0.003487971523721404, + "scoreConfidence" : [ + 0.15512845957054375, + 0.16210440261798656 + ], + "scorePercentiles" : { + "0.0" : 0.15579235488946705, + "50.0" : 0.1587464442257322, + "90.0" : 0.1619693449677691, + "95.0" : 0.1619693449677691, + "99.0" : 0.1619693449677691, + "99.9" : 0.1619693449677691, + "99.99" : 0.1619693449677691, + "99.999" : 0.1619693449677691, + "99.9999" : 0.1619693449677691, + "100.0" : 0.1619693449677691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.158881436433542, + 0.1587464442257322, + 0.1579010665382429 + ], + [ + 0.1573456464535213, + 0.1560672353767401, + 0.15579235488946705 + ], + [ + 0.1619693449677691, + 0.16050901377140747, + 0.16033533719196422 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04797686652872106, + "scoreError" : 0.0022187213778125004, + "scoreConfidence" : [ + 0.04575814515090856, + 0.05019558790653356 + ], + "scorePercentiles" : { + "0.0" : 0.04637634170569958, + "50.0" : 0.04768700323789723, + "90.0" : 0.04974361433389377, + "95.0" : 0.04974361433389377, + "99.0" : 0.04974361433389377, + "99.9" : 0.04974361433389377, + "99.99" : 0.04974361433389377, + "99.999" : 0.04974361433389377, + "99.9999" : 0.04974361433389377, + "100.0" : 0.04974361433389377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04974361433389377, + 0.049498889757855345, + 0.04956484810095212 + ], + [ + 0.04768409821807484, + 0.047797690581116346, + 0.04768700323789723 + ], + [ + 0.04654392197026818, + 0.04637634170569958, + 0.04689539085273208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0102506343115807E7, + "scoreError" : 414058.2334989545, + "scoreConfidence" : [ + 9688448.109616851, + 1.0516564576614762E7 + ], + "scorePercentiles" : { + "0.0" : 9719042.463556852, + "50.0" : 1.0038881575727182E7, + "90.0" : 1.0483148298742138E7, + "95.0" : 1.0483148298742138E7, + "99.0" : 1.0483148298742138E7, + "99.9" : 1.0483148298742138E7, + "99.99" : 1.0483148298742138E7, + "99.999" : 1.0483148298742138E7, + "99.9999" : 1.0483148298742138E7, + "100.0" : 1.0483148298742138E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9950572.298507463, + 9989488.596806386, + 9719042.463556852 + ], + [ + 1.014154786828774E7, + 1.0462304284518829E7, + 1.0483148298742138E7 + ], + [ + 1.0038881575727182E7, + 9967271.066733068, + 1.0170300635162601E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json b/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json new file mode 100644 index 0000000000..f2de5b21a6 --- /dev/null +++ b/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424254609168787, + "scoreError" : 0.02613921724586001, + "scoreConfidence" : [ + 3.3981153919229268, + 3.450393826414647 + ], + "scorePercentiles" : { + "0.0" : 3.419489493150746, + "50.0" : 3.424232606853354, + "90.0" : 3.429063729817694, + "95.0" : 3.429063729817694, + "99.0" : 3.429063729817694, + "99.9" : 3.429063729817694, + "99.99" : 3.429063729817694, + "99.999" : 3.429063729817694, + "99.9999" : 3.429063729817694, + "100.0" : 3.429063729817694 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.422957283038915, + 3.4255079306677936 + ], + [ + 3.419489493150746, + 3.429063729817694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283881755988588, + "scoreError" : 0.0075711935811060855, + "scoreConfidence" : [ + 1.7208169820177528, + 1.7359593691799649 + ], + "scorePercentiles" : { + "0.0" : 1.7272608832354859, + "50.0" : 1.7281327281107284, + "90.0" : 1.7300263629384918, + "95.0" : 1.7300263629384918, + "99.0" : 1.7300263629384918, + "99.9" : 1.7300263629384918, + "99.99" : 1.7300263629384918, + "99.999" : 1.7300263629384918, + "99.9999" : 1.7300263629384918, + "100.0" : 1.7300263629384918 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282618455510002, + 1.7272608832354859 + ], + [ + 1.7280036106704566, + 1.7300263629384918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682027175699097, + "scoreError" : 0.004935973252822849, + "scoreConfidence" : [ + 0.8632667443170869, + 0.8731386908227325 + ], + "scorePercentiles" : { + "0.0" : 0.8675676336105674, + "50.0" : 0.8679655469663551, + "90.0" : 0.8693121427363618, + "95.0" : 0.8693121427363618, + "99.0" : 0.8693121427363618, + "99.9" : 0.8693121427363618, + "99.99" : 0.8693121427363618, + "99.999" : 0.8693121427363618, + "99.9999" : 0.8693121427363618, + "100.0" : 0.8693121427363618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675676336105674, + 0.867922346385138 + ], + [ + 0.8680087475475722, + 0.8693121427363618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.36869394908749, + "scoreError" : 0.04032602783381367, + "scoreConfidence" : [ + 16.328367921253676, + 16.409019976921304 + ], + "scorePercentiles" : { + "0.0" : 16.330608886150326, + "50.0" : 16.36573210114837, + "90.0" : 16.3997056798874, + "95.0" : 16.3997056798874, + "99.0" : 16.3997056798874, + "99.9" : 16.3997056798874, + "99.99" : 16.3997056798874, + "99.999" : 16.3997056798874, + "99.9999" : 16.3997056798874, + "100.0" : 16.3997056798874 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.36573210114837, + 16.39567738769027, + 16.3997056798874 + ], + [ + 16.354154879020427, + 16.35331486739305, + 16.330608886150326 + ], + [ + 16.38900046883599, + 16.348132670430132, + 16.38191860123142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2755.2645435237955, + "scoreError" : 142.15005863441795, + "scoreConfidence" : [ + 2613.1144848893778, + 2897.4146021582133 + ], + "scorePercentiles" : { + "0.0" : 2645.769653967194, + "50.0" : 2777.358790668434, + "90.0" : 2844.082898480718, + "95.0" : 2844.082898480718, + "99.0" : 2844.082898480718, + "99.9" : 2844.082898480718, + "99.99" : 2844.082898480718, + "99.999" : 2844.082898480718, + "99.9999" : 2844.082898480718, + "100.0" : 2844.082898480718 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2645.769653967194, + 2650.136785283063, + 2651.473877519024 + ], + [ + 2780.1082222295813, + 2769.131638137327, + 2777.358790668434 + ], + [ + 2844.082898480718, + 2840.1765737310034, + 2839.1424516978195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69686.99595380232, + "scoreError" : 1940.033884888202, + "scoreConfidence" : [ + 67746.96206891412, + 71627.02983869053 + ], + "scorePercentiles" : { + "0.0" : 68658.18447808478, + "50.0" : 69182.69094993896, + "90.0" : 71219.67727831232, + "95.0" : 71219.67727831232, + "99.0" : 71219.67727831232, + "99.9" : 71219.67727831232, + "99.99" : 71219.67727831232, + "99.999" : 71219.67727831232, + "99.9999" : 71219.67727831232, + "100.0" : 71219.67727831232 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71197.47410218067, + 71180.94216999353, + 71219.67727831232 + ], + [ + 69167.24550293588, + 69182.69094993896, + 69185.52767427432 + ], + [ + 68700.10055066991, + 68658.18447808478, + 68691.12087783056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.88994514661977, + "scoreError" : 8.60461783150149, + "scoreConfidence" : [ + 345.28532731511825, + 362.4945629781213 + ], + "scorePercentiles" : { + "0.0" : 347.80532224376645, + "50.0" : 353.0663168731576, + "90.0" : 360.1943821922987, + "95.0" : 360.1943821922987, + "99.0" : 360.1943821922987, + "99.9" : 360.1943821922987, + "99.99" : 360.1943821922987, + "99.999" : 360.1943821922987, + "99.9999" : 360.1943821922987, + "100.0" : 360.1943821922987 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.3096151632722, + 360.1943821922987, + 359.9042966967716 + ], + [ + 348.9299003319532, + 348.06675704900783, + 347.80532224376645 + ], + [ + 353.0663168731576, + 351.83558769978185, + 355.8973280695685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.22422695181898, + "scoreError" : 2.300054928270859, + "scoreConfidence" : [ + 104.92417202354812, + 109.52428188008983 + ], + "scorePercentiles" : { + "0.0" : 105.11702222043792, + "50.0" : 107.60099849482508, + "90.0" : 108.64394817524074, + "95.0" : 108.64394817524074, + "99.0" : 108.64394817524074, + "99.9" : 108.64394817524074, + "99.99" : 108.64394817524074, + "99.999" : 108.64394817524074, + "99.9999" : 108.64394817524074, + "100.0" : 108.64394817524074 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.10524767429007, + 105.47579180802381, + 105.11702222043792 + ], + [ + 108.61995646598682, + 108.56537197809733, + 108.64394817524074 + ], + [ + 107.10120847440774, + 107.60099849482508, + 107.78849727506135 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0612988109620845, + "scoreError" : 8.652535687359045E-4, + "scoreConfidence" : [ + 0.060433557393348596, + 0.0621640645308204 + ], + "scorePercentiles" : { + "0.0" : 0.06061360878156405, + "50.0" : 0.06131260160268791, + "90.0" : 0.061910864993035136, + "95.0" : 0.061910864993035136, + "99.0" : 0.061910864993035136, + "99.9" : 0.061910864993035136, + "99.99" : 0.061910864993035136, + "99.999" : 0.061910864993035136, + "99.9999" : 0.061910864993035136, + "100.0" : 0.061910864993035136 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061816245462750045, + 0.061910864993035136, + 0.061907721375817945 + ], + [ + 0.06070640137194196, + 0.06061360878156405, + 0.06077460113646723 + ], + [ + 0.06124887921308744, + 0.06131260160268791, + 0.0613983747214087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.83704055702058E-4, + "scoreError" : 1.8341314884139816E-5, + "scoreConfidence" : [ + 3.653627408179182E-4, + 4.020453705861978E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7188639856197784E-4, + "50.0" : 3.7950586013066773E-4, + "90.0" : 3.981731629629329E-4, + "95.0" : 3.981731629629329E-4, + "99.0" : 3.981731629629329E-4, + "99.9" : 3.981731629629329E-4, + "99.99" : 3.981731629629329E-4, + "99.999" : 3.981731629629329E-4, + "99.9999" : 3.981731629629329E-4, + "100.0" : 3.981731629629329E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.974309778124687E-4, + 3.981731629629329E-4, + 3.978541673612461E-4 + ], + [ + 3.7925996341091464E-4, + 3.7981703252567807E-4, + 3.7950586013066773E-4 + ], + [ + 3.7188639856197784E-4, + 3.7403482801825057E-4, + 3.7537411053438545E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014271994702376285, + "scoreError" : 5.216322474734358E-4, + "scoreConfidence" : [ + 0.01375036245490285, + 0.01479362694984972 + ], + "scorePercentiles" : { + "0.0" : 0.01395132297181729, + "50.0" : 0.014194895541158969, + "90.0" : 0.014695156501421738, + "95.0" : 0.014695156501421738, + "99.0" : 0.014695156501421738, + "99.9" : 0.014695156501421738, + "99.99" : 0.014695156501421738, + "99.999" : 0.014695156501421738, + "99.9999" : 0.014695156501421738, + "100.0" : 0.014695156501421738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014645885331614907, + 0.014695156501421738, + 0.01464714127276136 + ], + [ + 0.013970092754773178, + 0.013957995058929938, + 0.01395132297181729 + ], + [ + 0.014183137027334836, + 0.014194895541158969, + 0.014202325861574338 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710519168134688, + "scoreError" : 0.011208694685730868, + "scoreConfidence" : [ + 0.959843222127738, + 0.9822606114991996 + ], + "scorePercentiles" : { + "0.0" : 0.9630646993451464, + "50.0" : 0.9684868110594615, + "90.0" : 0.9809538926924963, + "95.0" : 0.9809538926924963, + "99.0" : 0.9809538926924963, + "99.9" : 0.9809538926924963, + "99.99" : 0.9809538926924963, + "99.999" : 0.9809538926924963, + "99.9999" : 0.9809538926924963, + "100.0" : 0.9809538926924963 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9668159646171693, + 0.9671069353060633, + 0.9724057801439129 + ], + [ + 0.9751261756045242, + 0.9808086011180855, + 0.9809538926924963 + ], + [ + 0.964698391434359, + 0.9684868110594615, + 0.9630646993451464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013268263113495505, + "scoreError" : 4.465237350273874E-4, + "scoreConfidence" : [ + 0.012821739378468118, + 0.013714786848522892 + ], + "scorePercentiles" : { + "0.0" : 0.013099557043340206, + "50.0" : 0.013270168813548271, + "90.0" : 0.01348281547845361, + "95.0" : 0.01348281547845361, + "99.0" : 0.01348281547845361, + "99.9" : 0.01348281547845361, + "99.99" : 0.01348281547845361, + "99.999" : 0.01348281547845361, + "99.9999" : 0.01348281547845361, + "100.0" : 0.01348281547845361 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013351823428725543, + 0.013380745552344251, + 0.01348281547845361 + ], + [ + 0.013099557043340206, + 0.013188514198370999, + 0.013106122979738408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8236215956341684, + "scoreError" : 0.11204404869949024, + "scoreConfidence" : [ + 3.711577546934678, + 3.9356656443336586 + ], + "scorePercentiles" : { + "0.0" : 3.7785576442598185, + "50.0" : 3.8263314364495367, + "90.0" : 3.8664696870170014, + "95.0" : 3.8664696870170014, + "99.0" : 3.8664696870170014, + "99.9" : 3.8664696870170014, + "99.99" : 3.8664696870170014, + "99.999" : 3.8664696870170014, + "99.9999" : 3.8664696870170014, + "100.0" : 3.8664696870170014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.784792498487141, + 3.800600712006079, + 3.7785576442598185 + ], + [ + 3.859246871141975, + 3.8520621608929946, + 3.8664696870170014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8760393545398433, + "scoreError" : 0.03561405209144057, + "scoreConfidence" : [ + 2.8404253024484025, + 2.911653406631284 + ], + "scorePercentiles" : { + "0.0" : 2.8550628495575223, + "50.0" : 2.867487625860092, + "90.0" : 2.9119395694323145, + "95.0" : 2.9119395694323145, + "99.0" : 2.9119395694323145, + "99.9" : 2.9119395694323145, + "99.99" : 2.9119395694323145, + "99.999" : 2.9119395694323145, + "99.9999" : 2.9119395694323145, + "100.0" : 2.9119395694323145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9119395694323145, + 2.896368578048074, + 2.9009854074825987 + ], + [ + 2.8569692313624677, + 2.8603496425507577, + 2.8550628495575223 + ], + [ + 2.868876608146873, + 2.867487625860092, + 2.8663146784178846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17666360171690498, + "scoreError" : 0.007018650315553071, + "scoreConfidence" : [ + 0.1696449514013519, + 0.18368225203245805 + ], + "scorePercentiles" : { + "0.0" : 0.171930377965752, + "50.0" : 0.17588338716428936, + "90.0" : 0.18198961034777703, + "95.0" : 0.18198961034777703, + "99.0" : 0.18198961034777703, + "99.9" : 0.18198961034777703, + "99.99" : 0.18198961034777703, + "99.999" : 0.18198961034777703, + "99.9999" : 0.18198961034777703, + "100.0" : 0.18198961034777703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17230693078553336, + 0.171930377965752, + 0.17222718737944337 + ], + [ + 0.18198961034777703, + 0.18161404623794564, + 0.18156196546778264 + ], + [ + 0.17679468235980483, + 0.17588338716428936, + 0.17566422774381676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.328427280265929, + "scoreError" : 0.009007381611096744, + "scoreConfidence" : [ + 0.3194198986548322, + 0.33743466187702575 + ], + "scorePercentiles" : { + "0.0" : 0.32402172724621714, + "50.0" : 0.32554089566717664, + "90.0" : 0.3365099610000673, + "95.0" : 0.3365099610000673, + "99.0" : 0.3365099610000673, + "99.9" : 0.3365099610000673, + "99.99" : 0.3365099610000673, + "99.999" : 0.3365099610000673, + "99.9999" : 0.3365099610000673, + "100.0" : 0.3365099610000673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32554089566717664, + 0.3255366924379049, + 0.3257196699889258 + ], + [ + 0.32449776503991173, + 0.32402172724621714, + 0.3240274855161688 + ], + [ + 0.3365099610000673, + 0.33505243635876303, + 0.33493888913822556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1671680197141367, + "scoreError" : 0.0031650202498782714, + "scoreConfidence" : [ + 0.16400299946425842, + 0.17033303996401497 + ], + "scorePercentiles" : { + "0.0" : 0.16575822910658047, + "50.0" : 0.1660215798718332, + "90.0" : 0.16990446979170207, + "95.0" : 0.16990446979170207, + "99.0" : 0.16990446979170207, + "99.9" : 0.16990446979170207, + "99.99" : 0.16990446979170207, + "99.999" : 0.16990446979170207, + "99.9999" : 0.16990446979170207, + "100.0" : 0.16990446979170207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16575822910658047, + 0.16582184809391945, + 0.16580947611546815 + ], + [ + 0.16954085197680727, + 0.16956868575982637, + 0.16990446979170207 + ], + [ + 0.16597716160727624, + 0.1660215798718332, + 0.16610987510381714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3920398294957659, + "scoreError" : 0.008199953086242167, + "scoreConfidence" : [ + 0.3838398764095237, + 0.40023978258200804 + ], + "scorePercentiles" : { + "0.0" : 0.3855065223777033, + "50.0" : 0.39384232234562067, + "90.0" : 0.3974420058421429, + "95.0" : 0.3974420058421429, + "99.0" : 0.3974420058421429, + "99.9" : 0.3974420058421429, + "99.99" : 0.3974420058421429, + "99.999" : 0.3974420058421429, + "99.9999" : 0.3974420058421429, + "100.0" : 0.3974420058421429 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3960158337161413, + 0.39384232234562067, + 0.3934183516660766 + ], + [ + 0.3974420058421429, + 0.3958316693714376, + 0.3945936228149785 + ], + [ + 0.38551056595990746, + 0.3855065223777033, + 0.38619757136788446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15782436732750707, + "scoreError" : 0.002616382192165471, + "scoreConfidence" : [ + 0.1552079851353416, + 0.16044074951967255 + ], + "scorePercentiles" : { + "0.0" : 0.15603131695557879, + "50.0" : 0.15772105887548302, + "90.0" : 0.1594922870972887, + "95.0" : 0.1594922870972887, + "99.0" : 0.1594922870972887, + "99.9" : 0.1594922870972887, + "99.99" : 0.1594922870972887, + "99.999" : 0.1594922870972887, + "99.9999" : 0.1594922870972887, + "100.0" : 0.1594922870972887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15940837378455064, + 0.15939634857662022, + 0.15924676244088093 + ], + [ + 0.1594922870972887, + 0.15603131695557879, + 0.15647512279960568 + ], + [ + 0.15772105887548302, + 0.15649656486697966, + 0.15615147055057618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047281600662263244, + "scoreError" : 6.838695510515516E-4, + "scoreConfidence" : [ + 0.046597731111211696, + 0.04796547021331479 + ], + "scorePercentiles" : { + "0.0" : 0.04668713239804851, + "50.0" : 0.04720676570665181, + "90.0" : 0.04785155874401267, + "95.0" : 0.04785155874401267, + "99.0" : 0.04785155874401267, + "99.9" : 0.04785155874401267, + "99.99" : 0.04785155874401267, + "99.999" : 0.04785155874401267, + "99.9999" : 0.04785155874401267, + "100.0" : 0.04785155874401267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04781449074800138, + 0.047079504446610076, + 0.046953820972119184 + ], + [ + 0.046992236287851735, + 0.04668713239804851, + 0.04720676570665181 + ], + [ + 0.04785155874401267, + 0.047633694671760235, + 0.0473152019853136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9135012.469143517, + "scoreError" : 253053.52971484294, + "scoreConfidence" : [ + 8881958.939428674, + 9388065.99885836 + ], + "scorePercentiles" : { + "0.0" : 8947247.978533095, + "50.0" : 9055753.752941176, + "90.0" : 9349670.872897197, + "95.0" : 9349670.872897197, + "99.0" : 9349670.872897197, + "99.9" : 9349670.872897197, + "99.99" : 9349670.872897197, + "99.999" : 9349670.872897197, + "99.9999" : 9349670.872897197, + "100.0" : 9349670.872897197 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9320103.47530289, + 9349670.872897197, + 9313670.555865921 + ], + [ + 8947247.978533095, + 9036093.97289973, + 9037422.124661246 + ], + [ + 9106851.006369427, + 9048298.482820977, + 9055753.752941176 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..a51d44b83f --- /dev/null +++ b/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4176518241718075, + "scoreError" : 0.03280658276993444, + "scoreConfidence" : [ + 3.384845241401873, + 3.450458406941742 + ], + "scorePercentiles" : { + "0.0" : 3.4124960763887926, + "50.0" : 3.4167311543305194, + "90.0" : 3.424648911637398, + "95.0" : 3.424648911637398, + "99.0" : 3.424648911637398, + "99.9" : 3.424648911637398, + "99.99" : 3.424648911637398, + "99.999" : 3.424648911637398, + "99.9999" : 3.424648911637398, + "100.0" : 3.424648911637398 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4124960763887926, + 3.4169398837072293 + ], + [ + 3.416522424953809, + 3.424648911637398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7270621320703794, + "scoreError" : 0.008373270312183335, + "scoreConfidence" : [ + 1.7186888617581961, + 1.7354354023825627 + ], + "scorePercentiles" : { + "0.0" : 1.7254785768184715, + "50.0" : 1.7272053680709314, + "90.0" : 1.728359215321183, + "95.0" : 1.728359215321183, + "99.0" : 1.728359215321183, + "99.9" : 1.728359215321183, + "99.99" : 1.728359215321183, + "99.999" : 1.728359215321183, + "99.9999" : 1.728359215321183, + "100.0" : 1.728359215321183 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278401816392681, + 1.728359215321183 + ], + [ + 1.7254785768184715, + 1.7265705545025947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.868071044762071, + "scoreError" : 0.004228217601595203, + "scoreConfidence" : [ + 0.8638428271604758, + 0.8722992623636662 + ], + "scorePercentiles" : { + "0.0" : 0.8675660430469083, + "50.0" : 0.8678863787909559, + "90.0" : 0.8689453784194636, + "95.0" : 0.8689453784194636, + "99.0" : 0.8689453784194636, + "99.9" : 0.8689453784194636, + "99.99" : 0.8689453784194636, + "99.999" : 0.8689453784194636, + "99.9999" : 0.8689453784194636, + "100.0" : 0.8689453784194636 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675727546647017, + 0.8682000029172099 + ], + [ + 0.8675660430469083, + 0.8689453784194636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.21024972688744, + "scoreError" : 0.07558240245151955, + "scoreConfidence" : [ + 16.13466732443592, + 16.28583212933896 + ], + "scorePercentiles" : { + "0.0" : 16.13359353840349, + "50.0" : 16.236806302152885, + "90.0" : 16.25798250721321, + "95.0" : 16.25798250721321, + "99.0" : 16.25798250721321, + "99.9" : 16.25798250721321, + "99.99" : 16.25798250721321, + "99.999" : 16.25798250721321, + "99.9999" : 16.25798250721321, + "100.0" : 16.25798250721321 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.203181117707555, + 16.16988292740664, + 16.13359353840349 + ], + [ + 16.245425626132974, + 16.161443650413105, + 16.244571346287103 + ], + [ + 16.239360526269998, + 16.236806302152885, + 16.25798250721321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2669.028993204871, + "scoreError" : 137.4498966451194, + "scoreConfidence" : [ + 2531.5790965597516, + 2806.47888984999 + ], + "scorePercentiles" : { + "0.0" : 2556.6799422908157, + "50.0" : 2698.057835761459, + "90.0" : 2749.80392247701, + "95.0" : 2749.80392247701, + "99.0" : 2749.80392247701, + "99.9" : 2749.80392247701, + "99.99" : 2749.80392247701, + "99.999" : 2749.80392247701, + "99.9999" : 2749.80392247701, + "100.0" : 2749.80392247701 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2698.057835761459, + 2700.513649170286, + 2691.3840174449533 + ], + [ + 2745.679025287743, + 2743.8605837566774, + 2749.80392247701 + ], + [ + 2556.6799422908157, + 2569.604626828068, + 2565.6773358268297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69622.25476604533, + "scoreError" : 3039.3046996421267, + "scoreConfidence" : [ + 66582.9500664032, + 72661.55946568746 + ], + "scorePercentiles" : { + "0.0" : 67945.86095422869, + "50.0" : 68858.10770484112, + "90.0" : 71994.01572630244, + "95.0" : 71994.01572630244, + "99.0" : 71994.01572630244, + "99.9" : 71994.01572630244, + "99.99" : 71994.01572630244, + "99.999" : 71994.01572630244, + "99.9999" : 71994.01572630244, + "100.0" : 71994.01572630244 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71985.8498471133, + 71984.38163765594, + 71994.01572630244 + ], + [ + 68131.5306860081, + 67945.86095422869, + 68039.64569420867 + ], + [ + 68858.10770484112, + 68791.96960924863, + 68868.93103480102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 345.54602006775417, + "scoreError" : 10.379158594558005, + "scoreConfidence" : [ + 335.16686147319615, + 355.9251786623122 + ], + "scorePercentiles" : { + "0.0" : 337.0649979908811, + "50.0" : 347.4970106082307, + "90.0" : 354.3317645250134, + "95.0" : 354.3317645250134, + "99.0" : 354.3317645250134, + "99.9" : 354.3317645250134, + "99.99" : 354.3317645250134, + "99.999" : 354.3317645250134, + "99.9999" : 354.3317645250134, + "100.0" : 354.3317645250134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.88831901345856, + 350.18456102805493, + 354.3317645250134 + ], + [ + 347.4970106082307, + 348.05296895971105, + 346.12872413474 + ], + [ + 337.23163930227275, + 337.0649979908811, + 339.53419504742493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.35371713199402, + "scoreError" : 1.314903125074696, + "scoreConfidence" : [ + 106.03881400691932, + 108.66862025706871 + ], + "scorePercentiles" : { + "0.0" : 106.50530219512214, + "50.0" : 107.18568194367174, + "90.0" : 108.41755405532847, + "95.0" : 108.41755405532847, + "99.0" : 108.41755405532847, + "99.9" : 108.41755405532847, + "99.99" : 108.41755405532847, + "99.999" : 108.41755405532847, + "99.9999" : 108.41755405532847, + "100.0" : 108.41755405532847 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.24981127400055, + 108.32662146400149, + 108.41755405532847 + ], + [ + 107.18568194367174, + 107.13477003105366, + 107.19828019655115 + ], + [ + 106.51999139644225, + 106.50530219512214, + 106.64544163177464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06214532710612761, + "scoreError" : 0.0011852883013128773, + "scoreConfidence" : [ + 0.06096003880481473, + 0.06333061540744049 + ], + "scorePercentiles" : { + "0.0" : 0.06138486032693099, + "50.0" : 0.061953984499293735, + "90.0" : 0.06306548163563896, + "95.0" : 0.06306548163563896, + "99.0" : 0.06306548163563896, + "99.9" : 0.06306548163563896, + "99.99" : 0.06306548163563896, + "99.999" : 0.06306548163563896, + "99.9999" : 0.06306548163563896, + "100.0" : 0.06306548163563896 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06296859688814448, + 0.06306548163563896, + 0.06306126613401607 + ], + [ + 0.06203823581048805, + 0.061953984499293735, + 0.06191340799787021 + ], + [ + 0.06145513012296971, + 0.06138486032693099, + 0.0614669805397963 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6512152469115493E-4, + "scoreError" : 1.1829384828379278E-5, + "scoreConfidence" : [ + 3.5329213986277566E-4, + 3.769509095195342E-4 + ], + "scorePercentiles" : { + "0.0" : 3.567600496961329E-4, + "50.0" : 3.644490447931634E-4, + "90.0" : 3.741745325947859E-4, + "95.0" : 3.741745325947859E-4, + "99.0" : 3.741745325947859E-4, + "99.9" : 3.741745325947859E-4, + "99.99" : 3.741745325947859E-4, + "99.999" : 3.741745325947859E-4, + "99.9999" : 3.741745325947859E-4, + "100.0" : 3.741745325947859E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6447179445013437E-4, + 3.644490447931634E-4, + 3.638343372007972E-4 + ], + [ + 3.574252590678668E-4, + 3.582691317531037E-4, + 3.567600496961329E-4 + ], + [ + 3.7298703933026005E-4, + 3.741745325947859E-4, + 3.7372253333415055E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014286522855636308, + "scoreError" : 3.422176757491122E-4, + "scoreConfidence" : [ + 0.013944305179887196, + 0.01462874053138542 + ], + "scorePercentiles" : { + "0.0" : 0.014121189797843438, + "50.0" : 0.014170198734616665, + "90.0" : 0.014574590904983574, + "95.0" : 0.014574590904983574, + "99.0" : 0.014574590904983574, + "99.9" : 0.014574590904983574, + "99.99" : 0.014574590904983574, + "99.999" : 0.014574590904983574, + "99.9999" : 0.014574590904983574, + "100.0" : 0.014574590904983574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014548139487416732, + 0.014546160303777877, + 0.014574590904983574 + ], + [ + 0.01416057589840752, + 0.014192353136610967, + 0.014170198734616665 + ], + [ + 0.014127603557568556, + 0.014121189797843438, + 0.014137893879501448 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9921077492196557, + "scoreError" : 0.01930856406398767, + "scoreConfidence" : [ + 0.9727991851556681, + 1.0114163132836433 + ], + "scorePercentiles" : { + "0.0" : 0.9776878349789814, + "50.0" : 0.9924878263199682, + "90.0" : 1.0144587190099412, + "95.0" : 1.0144587190099412, + "99.0" : 1.0144587190099412, + "99.9" : 1.0144587190099412, + "99.99" : 1.0144587190099412, + "99.999" : 1.0144587190099412, + "99.9999" : 1.0144587190099412, + "100.0" : 1.0144587190099412 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9970329595214357, + 0.9986729526662672, + 0.9964110701404802 + ], + [ + 0.9829197303911933, + 0.9788613039052559, + 0.9776878349789814 + ], + [ + 1.0144587190099412, + 0.9904373460433792, + 0.9924878263199682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012921779722266246, + "scoreError" : 2.2252345704252554E-4, + "scoreConfidence" : [ + 0.01269925626522372, + 0.013144303179308772 + ], + "scorePercentiles" : { + "0.0" : 0.012807454812541783, + "50.0" : 0.012926500284236968, + "90.0" : 0.013009797126978096, + "95.0" : 0.013009797126978096, + "99.0" : 0.013009797126978096, + "99.9" : 0.013009797126978096, + "99.99" : 0.013009797126978096, + "99.999" : 0.013009797126978096, + "99.9999" : 0.013009797126978096, + "100.0" : 0.013009797126978096 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012807454812541783, + 0.012876620666477814, + 0.012877833138453773 + ], + [ + 0.012975167430020163, + 0.012983805159125847, + 0.013009797126978096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6740661339279614, + "scoreError" : 0.1367137587039101, + "scoreConfidence" : [ + 3.537352375224051, + 3.8107798926318717 + ], + "scorePercentiles" : { + "0.0" : 3.6163268293564714, + "50.0" : 3.665471940654629, + "90.0" : 3.7335179947761192, + "95.0" : 3.7335179947761192, + "99.0" : 3.7335179947761192, + "99.9" : 3.7335179947761192, + "99.99" : 3.7335179947761192, + "99.999" : 3.7335179947761192, + "99.9999" : 3.7335179947761192, + "100.0" : 3.7335179947761192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6163268293564714, + 3.639242845705968, + 3.641746879096868 + ], + [ + 3.6891970022123894, + 3.7335179947761192, + 3.7243652524199553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.912590076892591, + "scoreError" : 0.0803534341024097, + "scoreConfidence" : [ + 2.8322366427901815, + 2.992943510995001 + ], + "scorePercentiles" : { + "0.0" : 2.875525743243243, + "50.0" : 2.884065987600923, + "90.0" : 2.9793437852249034, + "95.0" : 2.9793437852249034, + "99.0" : 2.9793437852249034, + "99.9" : 2.9793437852249034, + "99.99" : 2.9793437852249034, + "99.999" : 2.9793437852249034, + "99.9999" : 2.9793437852249034, + "100.0" : 2.9793437852249034 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8792008750719633, + 2.875525743243243, + 2.879239616292458 + ], + [ + 2.977670115212861, + 2.9793437852249034, + 2.971356167260844 + ], + [ + 2.887610698614319, + 2.884065987600923, + 2.879297703511802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18040665676819445, + "scoreError" : 0.016040685065821514, + "scoreConfidence" : [ + 0.16436597170237294, + 0.19644734183401596 + ], + "scorePercentiles" : { + "0.0" : 0.17271579670120898, + "50.0" : 0.17492238903270946, + "90.0" : 0.19332436052041446, + "95.0" : 0.19332436052041446, + "99.0" : 0.19332436052041446, + "99.9" : 0.19332436052041446, + "99.99" : 0.19332436052041446, + "99.999" : 0.19332436052041446, + "99.9999" : 0.19332436052041446, + "100.0" : 0.19332436052041446 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17597227153867812, + 0.17492238903270946, + 0.1748560182371352 + ], + [ + 0.19332436052041446, + 0.19294238105344394, + 0.19289537515190094 + ], + [ + 0.17271579670120898, + 0.17295336802144587, + 0.17307795065681303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3337584233657038, + "scoreError" : 0.00641428915227004, + "scoreConfidence" : [ + 0.3273441342134338, + 0.3401727125179739 + ], + "scorePercentiles" : { + "0.0" : 0.330027413253688, + "50.0" : 0.3320781430563857, + "90.0" : 0.33920266566040297, + "95.0" : 0.33920266566040297, + "99.0" : 0.33920266566040297, + "99.9" : 0.33920266566040297, + "99.99" : 0.33920266566040297, + "99.999" : 0.33920266566040297, + "99.9999" : 0.33920266566040297, + "100.0" : 0.33920266566040297 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33920266566040297, + 0.33819932622002774, + 0.33880499762840494 + ], + [ + 0.330027413253688, + 0.3304519575705505, + 0.3308180865394158 + ], + [ + 0.3322776499534822, + 0.3320781430563857, + 0.33196557040897623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1661026225633705, + "scoreError" : 0.008337119359901021, + "scoreConfidence" : [ + 0.15776550320346946, + 0.17443974192327152 + ], + "scorePercentiles" : { + "0.0" : 0.15952054031807814, + "50.0" : 0.167699954084285, + "90.0" : 0.17118456085453113, + "95.0" : 0.17118456085453113, + "99.0" : 0.17118456085453113, + "99.9" : 0.17118456085453113, + "99.99" : 0.17118456085453113, + "99.999" : 0.17118456085453113, + "99.9999" : 0.17118456085453113, + "100.0" : 0.17118456085453113 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17118456085453113, + 0.17085764863571903, + 0.17079298237464136 + ], + [ + 0.15952054031807814, + 0.15996125433489028, + 0.159874185931255 + ], + [ + 0.16773681192237375, + 0.167699954084285, + 0.16729566461456102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38635613779325884, + "scoreError" : 0.0060439134029958005, + "scoreConfidence" : [ + 0.380312224390263, + 0.39240005119625465 + ], + "scorePercentiles" : { + "0.0" : 0.38195458276678634, + "50.0" : 0.38560133064702706, + "90.0" : 0.39093867740422206, + "95.0" : 0.39093867740422206, + "99.0" : 0.39093867740422206, + "99.9" : 0.39093867740422206, + "99.99" : 0.39093867740422206, + "99.999" : 0.39093867740422206, + "99.9999" : 0.39093867740422206, + "100.0" : 0.39093867740422206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3823639669649002, + 0.38230232548359966, + 0.38195458276678634 + ], + [ + 0.38974632624030553, + 0.3855979278195489, + 0.38560133064702706 + ], + [ + 0.38964763343074227, + 0.39093867740422206, + 0.38905246938219734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826757739724495, + "scoreError" : 0.004627573086720224, + "scoreConfidence" : [ + 0.1536400043105247, + 0.1628951504839652 + ], + "scorePercentiles" : { + "0.0" : 0.15448236841536134, + "50.0" : 0.1591381985041375, + "90.0" : 0.16089253403587805, + "95.0" : 0.16089253403587805, + "99.0" : 0.16089253403587805, + "99.9" : 0.16089253403587805, + "99.99" : 0.16089253403587805, + "99.999" : 0.16089253403587805, + "99.9999" : 0.16089253403587805, + "100.0" : 0.16089253403587805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15521114455998758, + 0.15448236841536134, + 0.15455100908739663 + ], + [ + 0.1608481260535289, + 0.16089253403587805, + 0.16086269677959014 + ], + [ + 0.1591381985041375, + 0.15963652022540067, + 0.1587855989139237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047272604046442124, + "scoreError" : 0.001440391145386556, + "scoreConfidence" : [ + 0.04583221290105557, + 0.04871299519182868 + ], + "scorePercentiles" : { + "0.0" : 0.04625750033304962, + "50.0" : 0.04723635614652465, + "90.0" : 0.04837972442320066, + "95.0" : 0.04837972442320066, + "99.0" : 0.04837972442320066, + "99.9" : 0.04837972442320066, + "99.99" : 0.04837972442320066, + "99.999" : 0.04837972442320066, + "99.9999" : 0.04837972442320066, + "100.0" : 0.04837972442320066 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04741171134216128, + 0.04722703777166983, + 0.04723635614652465 + ], + [ + 0.04837972442320066, + 0.048154765152864924, + 0.04821053368912287 + ], + [ + 0.046259463596623106, + 0.04625750033304962, + 0.04631634396276226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9628501.02926758, + "scoreError" : 641376.5173927421, + "scoreConfidence" : [ + 8987124.511874838, + 1.026987754666032E7 + ], + "scorePercentiles" : { + "0.0" : 9113710.301457195, + "50.0" : 9821262.300294407, + "90.0" : 9976360.238285145, + "95.0" : 9976360.238285145, + "99.0" : 9976360.238285145, + "99.9" : 9976360.238285145, + "99.99" : 9976360.238285145, + "99.999" : 9976360.238285145, + "99.9999" : 9976360.238285145, + "100.0" : 9976360.238285145 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9976360.238285145, + 9899911.798219584, + 9908957.99009901 + ], + [ + 9126353.703467153, + 9131182.38229927, + 9113710.301457195 + ], + [ + 9866579.378698224, + 9812191.170588234, + 9821262.300294407 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..71f139c13c --- /dev/null +++ b/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420161184183998, + "scoreError" : 0.01312921616822022, + "scoreConfidence" : [ + 3.4070319680157777, + 3.4332904003522184 + ], + "scorePercentiles" : { + "0.0" : 3.4181212856651784, + "50.0" : 3.4200665558935337, + "90.0" : 3.422390339283747, + "95.0" : 3.422390339283747, + "99.0" : 3.422390339283747, + "99.9" : 3.422390339283747, + "99.99" : 3.422390339283747, + "99.999" : 3.422390339283747, + "99.9999" : 3.422390339283747, + "100.0" : 3.422390339283747 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4213385479537735, + 3.422390339283747 + ], + [ + 3.418794563833294, + 3.4181212856651784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7276845429241154, + "scoreError" : 0.01306208372096958, + "scoreConfidence" : [ + 1.7146224592031458, + 1.740746626645085 + ], + "scorePercentiles" : { + "0.0" : 1.7256505716963815, + "50.0" : 1.727679262588992, + "90.0" : 1.7297290748220968, + "95.0" : 1.7297290748220968, + "99.0" : 1.7297290748220968, + "99.9" : 1.7297290748220968, + "99.99" : 1.7297290748220968, + "99.999" : 1.7297290748220968, + "99.9999" : 1.7297290748220968, + "100.0" : 1.7297290748220968 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7290829413006634, + 1.7297290748220968 + ], + [ + 1.7256505716963815, + 1.7262755838773205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8687410304418786, + "scoreError" : 0.0024592742022505935, + "scoreConfidence" : [ + 0.866281756239628, + 0.8712003046441291 + ], + "scorePercentiles" : { + "0.0" : 0.8684148887674343, + "50.0" : 0.8686953515573114, + "90.0" : 0.8691585298854573, + "95.0" : 0.8691585298854573, + "99.0" : 0.8691585298854573, + "99.9" : 0.8691585298854573, + "99.99" : 0.8691585298854573, + "99.999" : 0.8691585298854573, + "99.9999" : 0.8691585298854573, + "100.0" : 0.8691585298854573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.868968907418696, + 0.8691585298854573 + ], + [ + 0.8684217956959267, + 0.8684148887674343 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.224821826130235, + "scoreError" : 0.10048051732951685, + "scoreConfidence" : [ + 16.12434130880072, + 16.32530234345975 + ], + "scorePercentiles" : { + "0.0" : 16.16446628444778, + "50.0" : 16.216501795428456, + "90.0" : 16.31885112609713, + "95.0" : 16.31885112609713, + "99.0" : 16.31885112609713, + "99.9" : 16.31885112609713, + "99.99" : 16.31885112609713, + "99.999" : 16.31885112609713, + "99.9999" : 16.31885112609713, + "100.0" : 16.31885112609713 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.167966195040854, + 16.171702268596363, + 16.186333278362973 + ], + [ + 16.216501795428456, + 16.219076817393454, + 16.16446628444778 + ], + [ + 16.27979011280597, + 16.31885112609713, + 16.29870855699916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2737.5909349527656, + "scoreError" : 119.9485903655442, + "scoreConfidence" : [ + 2617.6423445872215, + 2857.5395253183096 + ], + "scorePercentiles" : { + "0.0" : 2657.620468169439, + "50.0" : 2728.8335513951547, + "90.0" : 2828.7526106375753, + "95.0" : 2828.7526106375753, + "99.0" : 2828.7526106375753, + "99.9" : 2828.7526106375753, + "99.99" : 2828.7526106375753, + "99.999" : 2828.7526106375753, + "99.9999" : 2828.7526106375753, + "100.0" : 2828.7526106375753 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2657.620468169439, + 2662.884293462235, + 2659.29952062177 + ], + [ + 2824.7339008494246, + 2828.7526106375753, + 2818.3510215124497 + ], + [ + 2728.2922326958756, + 2729.550815230966, + 2728.8335513951547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69862.82581904189, + "scoreError" : 1728.1188838150238, + "scoreConfidence" : [ + 68134.70693522686, + 71590.94470285691 + ], + "scorePercentiles" : { + "0.0" : 68958.28296516981, + "50.0" : 69417.52869894679, + "90.0" : 71216.90369253689, + "95.0" : 71216.90369253689, + "99.0" : 71216.90369253689, + "99.9" : 71216.90369253689, + "99.99" : 71216.90369253689, + "99.999" : 71216.90369253689, + "99.9999" : 71216.90369253689, + "100.0" : 71216.90369253689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69002.86496078158, + 68958.28296516981, + 68978.58832205336 + ], + [ + 69353.2210103416, + 69417.52869894679, + 69417.55557708694 + ], + [ + 71210.03441354769, + 71216.90369253689, + 71210.45273091237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.6851162543681, + "scoreError" : 2.9786665796925273, + "scoreConfidence" : [ + 353.7064496746756, + 359.6637828340606 + ], + "scorePercentiles" : { + "0.0" : 355.03951802399394, + "50.0" : 355.77587736376466, + "90.0" : 359.56820737462897, + "95.0" : 359.56820737462897, + "99.0" : 359.56820737462897, + "99.9" : 359.56820737462897, + "99.99" : 359.56820737462897, + "99.999" : 359.56820737462897, + "99.9999" : 359.56820737462897, + "100.0" : 359.56820737462897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.77587736376466, + 355.1195495481835, + 355.03951802399394 + ], + [ + 355.53794376732657, + 355.6143610562547, + 356.1276712534493 + ], + [ + 358.60885342768995, + 359.56820737462897, + 358.77406447402103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.63031003241571, + "scoreError" : 5.9928407989608665, + "scoreConfidence" : [ + 100.63746923345484, + 112.62315083137658 + ], + "scorePercentiles" : { + "0.0" : 101.8237778560693, + "50.0" : 108.37566141662414, + "90.0" : 109.67987437919469, + "95.0" : 109.67987437919469, + "99.0" : 109.67987437919469, + "99.9" : 109.67987437919469, + "99.99" : 109.67987437919469, + "99.999" : 109.67987437919469, + "99.9999" : 109.67987437919469, + "100.0" : 109.67987437919469 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.96717304519494, + 101.8237778560693, + 102.04935047858294 + ], + [ + 107.95691746021808, + 108.37566141662414, + 108.5213479810202 + ], + [ + 109.67987437919469, + 109.62918120434263, + 109.66950647049454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06115860988012198, + "scoreError" : 2.5866124625998005E-4, + "scoreConfidence" : [ + 0.060899948633862, + 0.061417271126381956 + ], + "scorePercentiles" : { + "0.0" : 0.06094085120904836, + "50.0" : 0.06123712456675362, + "90.0" : 0.061325009830254865, + "95.0" : 0.061325009830254865, + "99.0" : 0.061325009830254865, + "99.9" : 0.061325009830254865, + "99.99" : 0.061325009830254865, + "99.999" : 0.061325009830254865, + "99.9999" : 0.061325009830254865, + "100.0" : 0.061325009830254865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06121436393797861, + 0.06124506581292373, + 0.061244503631753655 + ], + [ + 0.061325009830254865, + 0.0612870807567614, + 0.06123712456675362 + ], + [ + 0.06094085120904836, + 0.06097625959597807, + 0.06095722957964548 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.660580843532509E-4, + "scoreError" : 2.1584630401834428E-5, + "scoreConfidence" : [ + 3.444734539514165E-4, + 3.876427147550853E-4 + ], + "scorePercentiles" : { + "0.0" : 3.485295668586137E-4, + "50.0" : 3.7371202020352256E-4, + "90.0" : 3.7543158886062337E-4, + "95.0" : 3.7543158886062337E-4, + "99.0" : 3.7543158886062337E-4, + "99.9" : 3.7543158886062337E-4, + "99.99" : 3.7543158886062337E-4, + "99.999" : 3.7543158886062337E-4, + "99.9999" : 3.7543158886062337E-4, + "100.0" : 3.7543158886062337E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7371202020352256E-4, + 3.743454742106291E-4, + 3.736798714136409E-4 + ], + [ + 3.485295668586137E-4, + 3.4913701701646063E-4, + 3.491975061719075E-4 + ], + [ + 3.7543158886062337E-4, + 3.753495183136453E-4, + 3.7514019613021487E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014294007118711134, + "scoreError" : 2.467831746836528E-4, + "scoreConfidence" : [ + 0.01404722394402748, + 0.014540790293394787 + ], + "scorePercentiles" : { + "0.0" : 0.01410185573973926, + "50.0" : 0.014340279476126561, + "90.0" : 0.014435574408039945, + "95.0" : 0.014435574408039945, + "99.0" : 0.014435574408039945, + "99.9" : 0.014435574408039945, + "99.99" : 0.014435574408039945, + "99.999" : 0.014435574408039945, + "99.9999" : 0.014435574408039945, + "100.0" : 0.014435574408039945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014340279476126561, + 0.014339337843476616, + 0.014350159556011566 + ], + [ + 0.014435574408039945, + 0.014430580636409946, + 0.014434201299929129 + ], + [ + 0.014106480124135986, + 0.01410185573973926, + 0.014107594984531218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9827271961215186, + "scoreError" : 0.01661406289183188, + "scoreConfidence" : [ + 0.9661131332296867, + 0.9993412590133505 + ], + "scorePercentiles" : { + "0.0" : 0.9650379618836245, + "50.0" : 0.9843077026574804, + "90.0" : 0.9982393412856858, + "95.0" : 0.9982393412856858, + "99.0" : 0.9982393412856858, + "99.9" : 0.9982393412856858, + "99.99" : 0.9982393412856858, + "99.999" : 0.9982393412856858, + "99.9999" : 0.9982393412856858, + "100.0" : 0.9982393412856858 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9900924386694386, + 0.9982393412856858, + 0.98929232505688 + ], + [ + 0.9650379618836245, + 0.9769195255445932, + 0.9732962304622871 + ], + [ + 0.9851143342198582, + 0.9822449053138199, + 0.9843077026574804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012964384898346287, + "scoreError" : 2.577701313091225E-4, + "scoreConfidence" : [ + 0.012706614767037164, + 0.01322215502965541 + ], + "scorePercentiles" : { + "0.0" : 0.012813191806904116, + "50.0" : 0.01298516114747426, + "90.0" : 0.013039108015990779, + "95.0" : 0.013039108015990779, + "99.0" : 0.013039108015990779, + "99.9" : 0.013039108015990779, + "99.99" : 0.013039108015990779, + "99.999" : 0.013039108015990779, + "99.9999" : 0.013039108015990779, + "100.0" : 0.013039108015990779 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012813191806904116, + 0.012931354416990374, + 0.012924645154536313 + ], + [ + 0.013038967877958146, + 0.013039042117697986, + 0.013039108015990779 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.673469200929784, + "scoreError" : 0.14943802892508878, + "scoreConfidence" : [ + 3.524031172004695, + 3.8229072298548727 + ], + "scorePercentiles" : { + "0.0" : 3.6237315644927537, + "50.0" : 3.67061608442467, + "90.0" : 3.7256586865227104, + "95.0" : 3.7256586865227104, + "99.0" : 3.7256586865227104, + "99.9" : 3.7256586865227104, + "99.99" : 3.7256586865227104, + "99.999" : 3.7256586865227104, + "99.9999" : 3.7256586865227104, + "100.0" : 3.7256586865227104 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6248462644927537, + 3.6237315644927537, + 3.626285658448151 + ], + [ + 3.7253465212211467, + 3.7149465104011887, + 3.7256586865227104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.845002438442127, + "scoreError" : 0.04287871366742935, + "scoreConfidence" : [ + 2.802123724774698, + 2.887881152109556 + ], + "scorePercentiles" : { + "0.0" : 2.7989082118667787, + "50.0" : 2.8569832750642674, + "90.0" : 2.8689466262191625, + "95.0" : 2.8689466262191625, + "99.0" : 2.8689466262191625, + "99.9" : 2.8689466262191625, + "99.99" : 2.8689466262191625, + "99.999" : 2.8689466262191625, + "99.9999" : 2.8689466262191625, + "100.0" : 2.8689466262191625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8689466262191625, + 2.8678104997133027, + 2.8603603591649986 + ], + [ + 2.8197480668170285, + 2.8194921466027627, + 2.7989082118667787 + ], + [ + 2.862014226323319, + 2.8569832750642674, + 2.8507585342075257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17667398738573184, + "scoreError" : 0.004522962845580232, + "scoreConfidence" : [ + 0.1721510245401516, + 0.18119695023131208 + ], + "scorePercentiles" : { + "0.0" : 0.17274437678355503, + "50.0" : 0.17773538823424864, + "90.0" : 0.17929800475131782, + "95.0" : 0.17929800475131782, + "99.0" : 0.17929800475131782, + "99.9" : 0.17929800475131782, + "99.99" : 0.17929800475131782, + "99.999" : 0.17929800475131782, + "99.9999" : 0.17929800475131782, + "100.0" : 0.17929800475131782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17929800475131782, + 0.17875492422779923, + 0.1786768472698685 + ], + [ + 0.17354256814868804, + 0.17317766123473893, + 0.17274437678355503 + ], + [ + 0.17841636940231936, + 0.177719746419051, + 0.17773538823424864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3278785338826535, + "scoreError" : 0.02325834532732937, + "scoreConfidence" : [ + 0.30462018855532413, + 0.3511368792099828 + ], + "scorePercentiles" : { + "0.0" : 0.3089522779288186, + "50.0" : 0.33629414826646936, + "90.0" : 0.33916132474139393, + "95.0" : 0.33916132474139393, + "99.0" : 0.33916132474139393, + "99.9" : 0.33916132474139393, + "99.99" : 0.33916132474139393, + "99.999" : 0.33916132474139393, + "99.9999" : 0.33916132474139393, + "100.0" : 0.33916132474139393 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.336947062232555, + 0.33597702281202757, + 0.33629414826646936 + ], + [ + 0.31003876372655403, + 0.3089522779288186, + 0.3094074593298475 + ], + [ + 0.33916132474139393, + 0.3373513187828903, + 0.3367774271233246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16002382610015384, + "scoreError" : 0.0028749300894222066, + "scoreConfidence" : [ + 0.15714889601073162, + 0.16289875618957605 + ], + "scorePercentiles" : { + "0.0" : 0.157941736670036, + "50.0" : 0.16011360556863122, + "90.0" : 0.16208578819067376, + "95.0" : 0.16208578819067376, + "99.0" : 0.16208578819067376, + "99.9" : 0.16208578819067376, + "99.99" : 0.16208578819067376, + "99.999" : 0.16208578819067376, + "99.9999" : 0.16208578819067376, + "100.0" : 0.16208578819067376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15800144895089427, + 0.15802927755566443, + 0.157941736670036 + ], + [ + 0.16208578819067376, + 0.1619398366719026, + 0.16176520781636713 + ], + [ + 0.1602269537756557, + 0.16011360556863122, + 0.16011057970155945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3937664494679593, + "scoreError" : 0.005156686612415254, + "scoreConfidence" : [ + 0.38860976285554405, + 0.39892313608037455 + ], + "scorePercentiles" : { + "0.0" : 0.3895133925761471, + "50.0" : 0.393265371583625, + "90.0" : 0.39806655210572406, + "95.0" : 0.39806655210572406, + "99.0" : 0.39806655210572406, + "99.9" : 0.39806655210572406, + "99.99" : 0.39806655210572406, + "99.999" : 0.39806655210572406, + "99.9999" : 0.39806655210572406, + "100.0" : 0.39806655210572406 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39707056577327776, + 0.39672426091958585, + 0.39806655210572406 + ], + [ + 0.3921561219952159, + 0.39032111385191837, + 0.3895133925761471 + ], + [ + 0.39482050100675115, + 0.393265371583625, + 0.39196016539938855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15675301344455994, + "scoreError" : 0.004658609047840728, + "scoreConfidence" : [ + 0.1520944043967192, + 0.16141162249240068 + ], + "scorePercentiles" : { + "0.0" : 0.1545591449127525, + "50.0" : 0.15518161604233263, + "90.0" : 0.16099979876998374, + "95.0" : 0.16099979876998374, + "99.0" : 0.16099979876998374, + "99.9" : 0.16099979876998374, + "99.99" : 0.16099979876998374, + "99.999" : 0.16099979876998374, + "99.9999" : 0.16099979876998374, + "100.0" : 0.16099979876998374 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15467007167272445, + 0.1545591449127525, + 0.1545636310453021 + ], + [ + 0.15573376948951942, + 0.15518161604233263, + 0.1548710712548977 + ], + [ + 0.16099979876998374, + 0.1602751452383242, + 0.1599228725752027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047817784078729414, + "scoreError" : 0.0011948342870446483, + "scoreConfidence" : [ + 0.04662294979168476, + 0.049012618365774065 + ], + "scorePercentiles" : { + "0.0" : 0.047114732199141585, + "50.0" : 0.047610175369687965, + "90.0" : 0.04905999008021194, + "95.0" : 0.04905999008021194, + "99.0" : 0.04905999008021194, + "99.9" : 0.04905999008021194, + "99.99" : 0.04905999008021194, + "99.999" : 0.04905999008021194, + "99.9999" : 0.04905999008021194, + "100.0" : 0.04905999008021194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047308128061386207, + 0.04719235425810044, + 0.047269258719872184 + ], + [ + 0.04856412413314167, + 0.04905999008021194, + 0.048489256354432346 + ], + [ + 0.047610175369687965, + 0.04775203753259032, + 0.047114732199141585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9421759.159399383, + "scoreError" : 707140.3164048794, + "scoreConfidence" : [ + 8714618.842994504, + 1.0128899475804262E7 + ], + "scorePercentiles" : { + "0.0" : 9036655.30532972, + "50.0" : 9254157.081406105, + "90.0" : 1.0006135448E7, + "95.0" : 1.0006135448E7, + "99.0" : 1.0006135448E7, + "99.9" : 1.0006135448E7, + "99.99" : 1.0006135448E7, + "99.999" : 1.0006135448E7, + "99.9999" : 1.0006135448E7, + "100.0" : 1.0006135448E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9206639.917203313, + 9254157.081406105, + 9259158.390379278 + ], + [ + 9036655.30532972, + 9050269.691402715, + 9074580.583484573 + ], + [ + 9935700.8897716, + 9972535.127617149, + 1.0006135448E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..cde7a7ef91 --- /dev/null +++ b/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4223396104835797, + "scoreError" : 0.043725212925550025, + "scoreConfidence" : [ + 3.37861439755803, + 3.4660648234091296 + ], + "scorePercentiles" : { + "0.0" : 3.4145587032492717, + "50.0" : 3.42227609893122, + "90.0" : 3.4302475408226076, + "95.0" : 3.4302475408226076, + "99.0" : 3.4302475408226076, + "99.9" : 3.4302475408226076, + "99.99" : 3.4302475408226076, + "99.999" : 3.4302475408226076, + "99.9999" : 3.4302475408226076, + "100.0" : 3.4302475408226076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4145587032492717, + 3.4196048034813886 + ], + [ + 3.424947394381052, + 3.4302475408226076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7293409537320772, + "scoreError" : 0.013098203820130744, + "scoreConfidence" : [ + 1.7162427499119464, + 1.742439157552208 + ], + "scorePercentiles" : { + "0.0" : 1.7271885468681993, + "50.0" : 1.7291572733627323, + "90.0" : 1.7318607213346457, + "95.0" : 1.7318607213346457, + "99.0" : 1.7318607213346457, + "99.9" : 1.7318607213346457, + "99.99" : 1.7318607213346457, + "99.999" : 1.7318607213346457, + "99.9999" : 1.7318607213346457, + "100.0" : 1.7318607213346457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271885468681993, + 1.7299560719039933 + ], + [ + 1.728358474821471, + 1.7318607213346457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8690871927147313, + "scoreError" : 0.004974514875233495, + "scoreConfidence" : [ + 0.8641126778394979, + 0.8740617075899648 + ], + "scorePercentiles" : { + "0.0" : 0.8683436536883511, + "50.0" : 0.8689709686170206, + "90.0" : 0.8700631799365328, + "95.0" : 0.8700631799365328, + "99.0" : 0.8700631799365328, + "99.9" : 0.8700631799365328, + "99.99" : 0.8700631799365328, + "99.999" : 0.8700631799365328, + "99.9999" : 0.8700631799365328, + "100.0" : 0.8700631799365328 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8683436536883511, + 0.8686206739831588 + ], + [ + 0.8693212632508825, + 0.8700631799365328 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.176447094328555, + "scoreError" : 0.21039762953362492, + "scoreConfidence" : [ + 15.96604946479493, + 16.38684472386218 + ], + "scorePercentiles" : { + "0.0" : 16.02273460262859, + "50.0" : 16.17803229239284, + "90.0" : 16.338047338633128, + "95.0" : 16.338047338633128, + "99.0" : 16.338047338633128, + "99.9" : 16.338047338633128, + "99.99" : 16.338047338633128, + "99.999" : 16.338047338633128, + "99.9999" : 16.338047338633128, + "100.0" : 16.338047338633128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.149948890904675, + 16.1789391938823, + 16.17803229239284 + ], + [ + 16.042872420624704, + 16.0440694515352, + 16.02273460262859 + ], + [ + 16.338047338633128, + 16.327952875347822, + 16.30542678300774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2700.2882550030386, + "scoreError" : 96.7322058302932, + "scoreConfidence" : [ + 2603.5560491727456, + 2797.0204608333315 + ], + "scorePercentiles" : { + "0.0" : 2653.07991575285, + "50.0" : 2666.391896086423, + "90.0" : 2780.899937372966, + "95.0" : 2780.899937372966, + "99.0" : 2780.899937372966, + "99.9" : 2780.899937372966, + "99.99" : 2780.899937372966, + "99.999" : 2780.899937372966, + "99.9999" : 2780.899937372966, + "100.0" : 2780.899937372966 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2773.2417483443546, + 2780.899937372966, + 2775.7904882477383 + ], + [ + 2663.2819930577834, + 2653.07991575285, + 2654.1555989667613 + ], + [ + 2666.391896086423, + 2665.495887754995, + 2670.2568294434764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70174.19309953183, + "scoreError" : 1564.0509467698946, + "scoreConfidence" : [ + 68610.14215276192, + 71738.24404630173 + ], + "scorePercentiles" : { + "0.0" : 68930.65160154008, + "50.0" : 70571.78206598868, + "90.0" : 71019.93901817729, + "95.0" : 71019.93901817729, + "99.0" : 71019.93901817729, + "99.9" : 71019.93901817729, + "99.99" : 71019.93901817729, + "99.999" : 71019.93901817729, + "99.9999" : 71019.93901817729, + "100.0" : 71019.93901817729 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70996.91830347097, + 71019.93901817729, + 71006.93058404124 + ], + [ + 68970.93751249161, + 68930.65160154008, + 68983.81206796458 + ], + [ + 70506.51290054324, + 70580.25384156879, + 70571.78206598868 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.0196860126746, + "scoreError" : 6.327176034437353, + "scoreConfidence" : [ + 344.69250997823724, + 357.3468620471119 + ], + "scorePercentiles" : { + "0.0" : 344.5603693554375, + "50.0" : 350.39200219743225, + "90.0" : 355.7240486824901, + "95.0" : 355.7240486824901, + "99.0" : 355.7240486824901, + "99.9" : 355.7240486824901, + "99.99" : 355.7240486824901, + "99.999" : 355.7240486824901, + "99.9999" : 355.7240486824901, + "100.0" : 355.7240486824901 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.7240486824901, + 355.236232183386, + 355.3319181912754 + ], + [ + 348.72447907602054, + 348.4251848899698, + 344.5603693554375 + ], + [ + 350.39200219743225, + 350.3541221087014, + 350.42881742935845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.65909013547264, + "scoreError" : 1.4190899578645233, + "scoreConfidence" : [ + 105.24000017760811, + 108.07818009333717 + ], + "scorePercentiles" : { + "0.0" : 105.6162841290003, + "50.0" : 106.50638068901223, + "90.0" : 107.78984731739712, + "95.0" : 107.78984731739712, + "99.0" : 107.78984731739712, + "99.9" : 107.78984731739712, + "99.99" : 107.78984731739712, + "99.999" : 107.78984731739712, + "99.9999" : 107.78984731739712, + "100.0" : 107.78984731739712 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.5904277872302, + 107.78984731739712, + 107.70949927973304 + ], + [ + 106.506954789398, + 106.50638068901223, + 106.50478486079068 + ], + [ + 105.6162841290003, + 105.87755649908355, + 105.8300758676087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06209317411218212, + "scoreError" : 7.538075008411679E-4, + "scoreConfidence" : [ + 0.06133936661134095, + 0.06284698161302328 + ], + "scorePercentiles" : { + "0.0" : 0.06144225748201306, + "50.0" : 0.062250828252709424, + "90.0" : 0.06256984610571628, + "95.0" : 0.06256984610571628, + "99.0" : 0.06256984610571628, + "99.9" : 0.06256984610571628, + "99.99" : 0.06256984610571628, + "99.999" : 0.06256984610571628, + "99.9999" : 0.06256984610571628, + "100.0" : 0.06256984610571628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06239646361095166, + 0.062418272145657004, + 0.06221235583108335 + ], + [ + 0.06144225748201306, + 0.06161576037905581, + 0.06148573024188094 + ], + [ + 0.062250828252709424, + 0.06256984610571628, + 0.06244705296057151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7607663812243037E-4, + "scoreError" : 1.1442859251684939E-5, + "scoreConfidence" : [ + 3.646337788707454E-4, + 3.875194973741153E-4 + ], + "scorePercentiles" : { + "0.0" : 3.681143338609699E-4, + "50.0" : 3.7442910870162834E-4, + "90.0" : 3.8507081206627316E-4, + "95.0" : 3.8507081206627316E-4, + "99.0" : 3.8507081206627316E-4, + "99.9" : 3.8507081206627316E-4, + "99.99" : 3.8507081206627316E-4, + "99.999" : 3.8507081206627316E-4, + "99.9999" : 3.8507081206627316E-4, + "100.0" : 3.8507081206627316E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8409582662134395E-4, + 3.8449133940953627E-4, + 3.8507081206627316E-4 + ], + [ + 3.690260844272774E-4, + 3.681143338609699E-4, + 3.702101250850547E-4 + ], + [ + 3.7412950073089176E-4, + 3.751226121988977E-4, + 3.7442910870162834E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014130309759608764, + "scoreError" : 1.1557199490178697E-4, + "scoreConfidence" : [ + 0.014014737764706976, + 0.014245881754510551 + ], + "scorePercentiles" : { + "0.0" : 0.014047087416772018, + "50.0" : 0.014118687416612664, + "90.0" : 0.014217589361396605, + "95.0" : 0.014217589361396605, + "99.0" : 0.014217589361396605, + "99.9" : 0.014217589361396605, + "99.99" : 0.014217589361396605, + "99.999" : 0.014217589361396605, + "99.9999" : 0.014217589361396605, + "100.0" : 0.014217589361396605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014077196809581392, + 0.01405035927748288, + 0.014047087416772018 + ], + [ + 0.01421129386050927, + 0.014217589361396605, + 0.014214491057772673 + ], + [ + 0.014119107481913626, + 0.014116975154437756, + 0.014118687416612664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9773896294313688, + "scoreError" : 0.010852659511471296, + "scoreConfidence" : [ + 0.9665369699198975, + 0.98824228894284 + ], + "scorePercentiles" : { + "0.0" : 0.968145494482091, + "50.0" : 0.9763926268306972, + "90.0" : 0.9898854295753736, + "95.0" : 0.9898854295753736, + "99.0" : 0.9898854295753736, + "99.9" : 0.9898854295753736, + "99.99" : 0.9898854295753736, + "99.999" : 0.9898854295753736, + "99.9999" : 0.9898854295753736, + "100.0" : 0.9898854295753736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.980458675490196, + 0.9763926268306972, + 0.9734553186021611 + ], + [ + 0.9725973313557673, + 0.9735463582554517, + 0.968145494482091 + ], + [ + 0.9898854295753736, + 0.9820591416085633, + 0.9799662886820186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012999210482276655, + "scoreError" : 2.1611055986766895E-4, + "scoreConfidence" : [ + 0.012783099922408987, + 0.013215321042144323 + ], + "scorePercentiles" : { + "0.0" : 0.012919324624185454, + "50.0" : 0.013001931921219387, + "90.0" : 0.01307385693106586, + "95.0" : 0.01307385693106586, + "99.0" : 0.01307385693106586, + "99.9" : 0.01307385693106586, + "99.99" : 0.01307385693106586, + "99.999" : 0.01307385693106586, + "99.9999" : 0.01307385693106586, + "100.0" : 0.01307385693106586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012919324624185454, + 0.012938083570310377, + 0.012929917723875773 + ], + [ + 0.01306829977209407, + 0.01307385693106586, + 0.013065780272128397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.700450900560987, + "scoreError" : 0.040650582191514045, + "scoreConfidence" : [ + 3.659800318369473, + 3.741101482752501 + ], + "scorePercentiles" : { + "0.0" : 3.6858584502579217, + "50.0" : 3.6987097385567482, + "90.0" : 3.7201648074349443, + "95.0" : 3.7201648074349443, + "99.0" : 3.7201648074349443, + "99.9" : 3.7201648074349443, + "99.99" : 3.7201648074349443, + "99.999" : 3.7201648074349443, + "99.9999" : 3.7201648074349443, + "100.0" : 3.7201648074349443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7083377094143812, + 3.7201648074349443, + 3.7109526958456973 + ], + [ + 3.689081767699115, + 3.6858584502579217, + 3.6883099727138644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.840180921798341, + "scoreError" : 0.044513227628576325, + "scoreConfidence" : [ + 2.7956676941697647, + 2.884694149426917 + ], + "scorePercentiles" : { + "0.0" : 2.801557466946779, + "50.0" : 2.8510196391106044, + "90.0" : 2.872490500861574, + "95.0" : 2.872490500861574, + "99.0" : 2.872490500861574, + "99.9" : 2.872490500861574, + "99.99" : 2.872490500861574, + "99.999" : 2.872490500861574, + "99.9999" : 2.872490500861574, + "100.0" : 2.872490500861574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8067425004209934, + 2.801557466946779, + 2.8109157793704327 + ], + [ + 2.8510196391106044, + 2.8517295494724837, + 2.846561409220262 + ], + [ + 2.861186417620137, + 2.859425033161807, + 2.872490500861574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17907202947603687, + "scoreError" : 0.00670484560821617, + "scoreConfidence" : [ + 0.1723671838678207, + 0.18577687508425303 + ], + "scorePercentiles" : { + "0.0" : 0.1755640429592177, + "50.0" : 0.1774438194722927, + "90.0" : 0.18523565140962472, + "95.0" : 0.18523565140962472, + "99.0" : 0.18523565140962472, + "99.9" : 0.18523565140962472, + "99.99" : 0.18523565140962472, + "99.999" : 0.18523565140962472, + "99.9999" : 0.18523565140962472, + "100.0" : 0.18523565140962472 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17574525320726864, + 0.1755640429592177, + 0.17574461892376367 + ], + [ + 0.18321511113553918, + 0.18432324685737458, + 0.18523565140962472 + ], + [ + 0.17765377328524987, + 0.1774438194722927, + 0.17672274803400073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33467355980546004, + "scoreError" : 0.015732504644345665, + "scoreConfidence" : [ + 0.3189410551611144, + 0.3504060644498057 + ], + "scorePercentiles" : { + "0.0" : 0.3225942608387097, + "50.0" : 0.33705844103272775, + "90.0" : 0.3445825397815375, + "95.0" : 0.3445825397815375, + "99.0" : 0.3445825397815375, + "99.9" : 0.3445825397815375, + "99.99" : 0.3445825397815375, + "99.999" : 0.3445825397815375, + "99.9999" : 0.3445825397815375, + "100.0" : 0.3445825397815375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3225942608387097, + 0.3227770372151572, + 0.32293328559434237 + ], + [ + 0.3445825397815375, + 0.34353106176571624, + 0.3433423331731099 + ], + [ + 0.3383529962444174, + 0.33705844103272775, + 0.33689008260342274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16641165219979803, + "scoreError" : 0.008301354539846898, + "scoreConfidence" : [ + 0.15811029765995113, + 0.17471300673964493 + ], + "scorePercentiles" : { + "0.0" : 0.1613107943638798, + "50.0" : 0.16515381480074648, + "90.0" : 0.17292260472756826, + "95.0" : 0.17292260472756826, + "99.0" : 0.17292260472756826, + "99.9" : 0.17292260472756826, + "99.99" : 0.17292260472756826, + "99.999" : 0.17292260472756826, + "99.9999" : 0.17292260472756826, + "100.0" : 0.17292260472756826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17292260472756826, + 0.17262155191520948, + 0.17226494201650272 + ], + [ + 0.16135854223477208, + 0.1614882046669358, + 0.1613107943638798 + ], + [ + 0.16554833105434802, + 0.16515381480074648, + 0.16503608401821962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38875197801253086, + "scoreError" : 0.010133028661687969, + "scoreConfidence" : [ + 0.3786189493508429, + 0.39888500667421883 + ], + "scorePercentiles" : { + "0.0" : 0.37941510911712256, + "50.0" : 0.3914092459882583, + "90.0" : 0.3958145895111815, + "95.0" : 0.3958145895111815, + "99.0" : 0.3958145895111815, + "99.9" : 0.3958145895111815, + "99.99" : 0.3958145895111815, + "99.999" : 0.3958145895111815, + "99.9999" : 0.3958145895111815, + "100.0" : 0.3958145895111815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38415878153810695, + 0.37941510911712256, + 0.3798788741880342 + ], + [ + 0.3958145895111815, + 0.39277299945013944, + 0.3931043139274343 + ], + [ + 0.3917136562475519, + 0.3914092459882583, + 0.39050023214494906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1567575782526978, + "scoreError" : 0.001756730125437472, + "scoreConfidence" : [ + 0.1550008481272603, + 0.15851430837813527 + ], + "scorePercentiles" : { + "0.0" : 0.1552836069099379, + "50.0" : 0.1568126810826068, + "90.0" : 0.15808412828214166, + "95.0" : 0.15808412828214166, + "99.0" : 0.15808412828214166, + "99.9" : 0.15808412828214166, + "99.99" : 0.15808412828214166, + "99.999" : 0.15808412828214166, + "99.9999" : 0.15808412828214166, + "100.0" : 0.15808412828214166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1560860536296805, + 0.1552836069099379, + 0.15552143758261924 + ], + [ + 0.1580676237157399, + 0.15808412828214166, + 0.15766376098506946 + ], + [ + 0.1570153811744387, + 0.1568126810826068, + 0.156283530912046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048592658466308974, + "scoreError" : 0.0017968188521679121, + "scoreConfidence" : [ + 0.04679583961414106, + 0.050389477318476886 + ], + "scorePercentiles" : { + "0.0" : 0.047535836964220354, + "50.0" : 0.048176836740199735, + "90.0" : 0.05068937412245353, + "95.0" : 0.05068937412245353, + "99.0" : 0.05068937412245353, + "99.9" : 0.05068937412245353, + "99.99" : 0.05068937412245353, + "99.999" : 0.05068937412245353, + "99.9999" : 0.05068937412245353, + "100.0" : 0.05068937412245353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04894306757471051, + 0.048111777384870005, + 0.048176836740199735 + ], + [ + 0.047619933290158525, + 0.047535836964220354, + 0.047573736302526606 + ], + [ + 0.05068937412245353, + 0.049340145975389535, + 0.04934321784225199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9118731.258717624, + "scoreError" : 64258.13778346629, + "scoreConfidence" : [ + 9054473.120934159, + 9182989.39650109 + ], + "scorePercentiles" : { + "0.0" : 9080304.523593467, + "50.0" : 9100486.565059144, + "90.0" : 9171500.41796517, + "95.0" : 9171500.41796517, + "99.0" : 9171500.41796517, + "99.9" : 9171500.41796517, + "99.99" : 9171500.41796517, + "99.999" : 9171500.41796517, + "99.9999" : 9171500.41796517, + "100.0" : 9171500.41796517 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9169333.384051329, + 9171500.41796517, + 9156587.633119853 + ], + [ + 9100486.565059144, + 9087986.72479564, + 9093709.6 + ], + [ + 9128045.636861313, + 9080304.523593467, + 9080626.843012704 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..43a8f0b979 --- /dev/null +++ b/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4139790279787423, + "scoreError" : 0.01733409931536483, + "scoreConfidence" : [ + 3.3966449286633775, + 3.431313127294107 + ], + "scorePercentiles" : { + "0.0" : 3.410359353387592, + "50.0" : 3.4147105177822104, + "90.0" : 3.4161357229629568, + "95.0" : 3.4161357229629568, + "99.0" : 3.4161357229629568, + "99.9" : 3.4161357229629568, + "99.99" : 3.4161357229629568, + "99.999" : 3.4161357229629568, + "99.9999" : 3.4161357229629568, + "100.0" : 3.4161357229629568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.410359353387592, + 3.4161357229629568 + ], + [ + 3.4135350559911077, + 3.415885979573313 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7232104134744857, + "scoreError" : 0.007629890942061581, + "scoreConfidence" : [ + 1.715580522532424, + 1.7308403044165472 + ], + "scorePercentiles" : { + "0.0" : 1.7220037289307688, + "50.0" : 1.7232692487178383, + "90.0" : 1.724299427531498, + "95.0" : 1.724299427531498, + "99.0" : 1.724299427531498, + "99.9" : 1.724299427531498, + "99.99" : 1.724299427531498, + "99.999" : 1.724299427531498, + "99.9999" : 1.724299427531498, + "100.0" : 1.724299427531498 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7220037289307688, + 1.724144873194817 + ], + [ + 1.7223936242408595, + 1.724299427531498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662626240049967, + "scoreError" : 0.012849636408795155, + "scoreConfidence" : [ + 0.8534129875962015, + 0.8791122604137918 + ], + "scorePercentiles" : { + "0.0" : 0.8648472759593716, + "50.0" : 0.8655491554294797, + "90.0" : 0.8691049092016552, + "95.0" : 0.8691049092016552, + "99.0" : 0.8691049092016552, + "99.9" : 0.8691049092016552, + "99.99" : 0.8691049092016552, + "99.999" : 0.8691049092016552, + "99.9999" : 0.8691049092016552, + "100.0" : 0.8691049092016552 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8649317121070363, + 0.8648472759593716 + ], + [ + 0.8661665987519231, + 0.8691049092016552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.747041994645217, + "scoreError" : 0.14758109112545448, + "scoreConfidence" : [ + 15.599460903519763, + 15.894623085770672 + ], + "scorePercentiles" : { + "0.0" : 15.609608788536184, + "50.0" : 15.753115594028856, + "90.0" : 15.892679137848754, + "95.0" : 15.892679137848754, + "99.0" : 15.892679137848754, + "99.9" : 15.892679137848754, + "99.99" : 15.892679137848754, + "99.999" : 15.892679137848754, + "99.9999" : 15.892679137848754, + "100.0" : 15.892679137848754 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.892679137848754, + 15.840820211442846, + 15.760137568493265 + ], + [ + 15.716608944186692, + 15.750055674111344, + 15.639867067639829 + ], + [ + 15.76048496551918, + 15.753115594028856, + 15.609608788536184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2545.4144779507083, + "scoreError" : 133.1445397106979, + "scoreConfidence" : [ + 2412.2699382400106, + 2678.559017661406 + ], + "scorePercentiles" : { + "0.0" : 2423.101821634822, + "50.0" : 2562.1716441581257, + "90.0" : 2649.288918606347, + "95.0" : 2649.288918606347, + "99.0" : 2649.288918606347, + "99.9" : 2649.288918606347, + "99.99" : 2649.288918606347, + "99.999" : 2649.288918606347, + "99.9999" : 2649.288918606347, + "100.0" : 2649.288918606347 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.4876233069353, + 2609.3290298838847, + 2649.288918606347 + ], + [ + 2564.6887466700787, + 2562.1716441581257, + 2515.2897354670463 + ], + [ + 2479.1384646149886, + 2468.2343172141473, + 2423.101821634822 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70197.89601850326, + "scoreError" : 653.3580011482312, + "scoreConfidence" : [ + 69544.53801735504, + 70851.25401965149 + ], + "scorePercentiles" : { + "0.0" : 69486.97210441956, + "50.0" : 70326.68061681147, + "90.0" : 70559.23822474394, + "95.0" : 70559.23822474394, + "99.0" : 70559.23822474394, + "99.9" : 70559.23822474394, + "99.99" : 70559.23822474394, + "99.999" : 70559.23822474394, + "99.9999" : 70559.23822474394, + "100.0" : 70559.23822474394 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70326.68061681147, + 70503.0313110003, + 70559.23822474394 + ], + [ + 70280.42396857131, + 70461.33770627339, + 70492.21472352139 + ], + [ + 69486.97210441956, + 69697.21793988864, + 69973.94757129939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.5101901407003, + "scoreError" : 2.383199551240554, + "scoreConfidence" : [ + 342.1269905894597, + 346.89338969194085 + ], + "scorePercentiles" : { + "0.0" : 342.6941923456472, + "50.0" : 344.34952393825296, + "90.0" : 347.15351826154125, + "95.0" : 347.15351826154125, + "99.0" : 347.15351826154125, + "99.9" : 347.15351826154125, + "99.99" : 347.15351826154125, + "99.999" : 347.15351826154125, + "99.9999" : 347.15351826154125, + "100.0" : 347.15351826154125 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.34952393825296, + 342.75642153725806, + 347.15351826154125 + ], + [ + 344.46026237521187, + 345.8795032843992, + 342.6941923456472 + ], + [ + 344.2612697809226, + 343.90034476443435, + 345.13667497863463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.19980969284724, + "scoreError" : 4.314449187306226, + "scoreConfidence" : [ + 101.88536050554102, + 110.51425888015346 + ], + "scorePercentiles" : { + "0.0" : 102.98445685458186, + "50.0" : 106.25756148437183, + "90.0" : 109.45660740565823, + "95.0" : 109.45660740565823, + "99.0" : 109.45660740565823, + "99.9" : 109.45660740565823, + "99.99" : 109.45660740565823, + "99.999" : 109.45660740565823, + "99.9999" : 109.45660740565823, + "100.0" : 109.45660740565823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.4167165580331, + 109.45660740565823, + 108.58405853540157 + ], + [ + 103.46395059370718, + 102.98445685458186, + 103.48652507131372 + ], + [ + 106.73553070412007, + 106.25756148437183, + 105.4128800284376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06275639899463895, + "scoreError" : 9.54564950141199E-4, + "scoreConfidence" : [ + 0.061801834044497746, + 0.06371096394478014 + ], + "scorePercentiles" : { + "0.0" : 0.06206886380451109, + "50.0" : 0.06277109492125466, + "90.0" : 0.06384064171167375, + "95.0" : 0.06384064171167375, + "99.0" : 0.06384064171167375, + "99.9" : 0.06384064171167375, + "99.99" : 0.06384064171167375, + "99.999" : 0.06384064171167375, + "99.9999" : 0.06384064171167375, + "100.0" : 0.06384064171167375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06277109492125466, + 0.06384064171167375, + 0.0628098215095501 + ], + [ + 0.06311703809060958, + 0.062423528202599284, + 0.062465097437723306 + ], + [ + 0.06319615820904954, + 0.06206886380451109, + 0.06211534706477921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7162303018110915E-4, + "scoreError" : 1.3300625207700327E-5, + "scoreConfidence" : [ + 3.583224049734088E-4, + 3.849236553888095E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6245800606610196E-4, + "50.0" : 3.6733737068606417E-4, + "90.0" : 3.8197260089267476E-4, + "95.0" : 3.8197260089267476E-4, + "99.0" : 3.8197260089267476E-4, + "99.9" : 3.8197260089267476E-4, + "99.99" : 3.8197260089267476E-4, + "99.999" : 3.8197260089267476E-4, + "99.9999" : 3.8197260089267476E-4, + "100.0" : 3.8197260089267476E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7946744438874773E-4, + 3.8197260089267476E-4, + 3.801795977685541E-4 + ], + [ + 3.774281412412418E-4, + 3.6596905308952E-4, + 3.6733737068606417E-4 + ], + [ + 3.655366763432819E-4, + 3.64258381153796E-4, + 3.6245800606610196E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014576655465828222, + "scoreError" : 4.4815463271461934E-4, + "scoreConfidence" : [ + 0.014128500833113603, + 0.015024810098542842 + ], + "scorePercentiles" : { + "0.0" : 0.014191622172709856, + "50.0" : 0.014660958410302422, + "90.0" : 0.01486787987493291, + "95.0" : 0.01486787987493291, + "99.0" : 0.01486787987493291, + "99.9" : 0.01486787987493291, + "99.99" : 0.01486787987493291, + "99.999" : 0.01486787987493291, + "99.9999" : 0.01486787987493291, + "100.0" : 0.01486787987493291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014191622172709856, + 0.014290993181850661, + 0.014229220261302128 + ], + [ + 0.014660958410302422, + 0.014729058729871167, + 0.014615897812608705 + ], + [ + 0.01486787987493291, + 0.014796878423028379, + 0.014807390325847788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9886220481891734, + "scoreError" : 0.02202937493183751, + "scoreConfidence" : [ + 0.9665926732573359, + 1.0106514231210109 + ], + "scorePercentiles" : { + "0.0" : 0.9708414966508107, + "50.0" : 0.9914381361157926, + "90.0" : 1.0050596295477388, + "95.0" : 1.0050596295477388, + "99.0" : 1.0050596295477388, + "99.9" : 1.0050596295477388, + "99.99" : 1.0050596295477388, + "99.999" : 1.0050596295477388, + "99.9999" : 1.0050596295477388, + "100.0" : 1.0050596295477388 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9988275476428286, + 0.9798739526748971, + 1.0050596295477388 + ], + [ + 0.9914381361157926, + 0.9749231319945408, + 0.9770868427943332 + ], + [ + 0.9708414966508107, + 1.00367483410277, + 0.9958728621788488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013247707048733286, + "scoreError" : 5.193704451363999E-4, + "scoreConfidence" : [ + 0.012728336603596886, + 0.013767077493869686 + ], + "scorePercentiles" : { + "0.0" : 0.013023179856227536, + "50.0" : 0.013218959993194505, + "90.0" : 0.013476428963390805, + "95.0" : 0.013476428963390805, + "99.0" : 0.013476428963390805, + "99.9" : 0.013476428963390805, + "99.99" : 0.013476428963390805, + "99.999" : 0.013476428963390805, + "99.9999" : 0.013476428963390805, + "100.0" : 0.013476428963390805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013431655164077107, + 0.013476428963390805, + 0.013309052718435748 + ], + [ + 0.013023179856227536, + 0.013117058322315264, + 0.013128867267953263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8007924550689083, + "scoreError" : 0.1575107709395715, + "scoreConfidence" : [ + 3.6432816841293367, + 3.95830322600848 + ], + "scorePercentiles" : { + "0.0" : 3.7105204391691395, + "50.0" : 3.810032759650752, + "90.0" : 3.8690372513534417, + "95.0" : 3.8690372513534417, + "99.0" : 3.8690372513534417, + "99.9" : 3.8690372513534417, + "99.99" : 3.8690372513534417, + "99.999" : 3.8690372513534417, + "99.9999" : 3.8690372513534417, + "100.0" : 3.8690372513534417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7105204391691395, + 3.7916760227445034, + 3.7700243978899772 + ], + [ + 3.828389496557001, + 3.8351071226993865, + 3.8690372513534417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9027731564072075, + "scoreError" : 0.07612377795801785, + "scoreConfidence" : [ + 2.8266493784491895, + 2.9788969343652254 + ], + "scorePercentiles" : { + "0.0" : 2.825844649901102, + "50.0" : 2.915686231778426, + "90.0" : 2.9708684835164836, + "95.0" : 2.9708684835164836, + "99.0" : 2.9708684835164836, + "99.9" : 2.9708684835164836, + "99.99" : 2.9708684835164836, + "99.999" : 2.9708684835164836, + "99.9999" : 2.9708684835164836, + "100.0" : 2.9708684835164836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.915686231778426, + 2.8977852381918283, + 2.9708684835164836 + ], + [ + 2.851340196123147, + 2.876133754385965, + 2.825844649901102 + ], + [ + 2.9407795983534255, + 2.9272113388937666, + 2.9193089165207238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17689930835873036, + "scoreError" : 0.002842059148974742, + "scoreConfidence" : [ + 0.17405724920975563, + 0.17974136750770509 + ], + "scorePercentiles" : { + "0.0" : 0.1749956751596815, + "50.0" : 0.17624560317236518, + "90.0" : 0.1805695294680582, + "95.0" : 0.1805695294680582, + "99.0" : 0.1805695294680582, + "99.9" : 0.1805695294680582, + "99.99" : 0.1805695294680582, + "99.999" : 0.1805695294680582, + "99.9999" : 0.1805695294680582, + "100.0" : 0.1805695294680582 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1756597641623777, + 0.17624560317236518, + 0.1749956751596815 + ], + [ + 0.1805695294680582, + 0.17602795509672423, + 0.1759503923462655 + ], + [ + 0.17831782509539604, + 0.17724520107761293, + 0.1770818296500921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3354327846464433, + "scoreError" : 0.011347978196975963, + "scoreConfidence" : [ + 0.32408480644946736, + 0.3467807628434193 + ], + "scorePercentiles" : { + "0.0" : 0.3264376331320385, + "50.0" : 0.3361444103865546, + "90.0" : 0.3443870391555892, + "95.0" : 0.3443870391555892, + "99.0" : 0.3443870391555892, + "99.9" : 0.3443870391555892, + "99.99" : 0.3443870391555892, + "99.999" : 0.3443870391555892, + "99.9999" : 0.3443870391555892, + "100.0" : 0.3443870391555892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373253261148216, + 0.3342318498328877, + 0.3361444103865546 + ], + [ + 0.3443870391555892, + 0.34167287751546005, + 0.342488746600911 + ], + [ + 0.3264376331320385, + 0.32709297160893597, + 0.3291142074707915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16110332563434188, + "scoreError" : 0.0020874150798940866, + "scoreConfidence" : [ + 0.1590159105544478, + 0.16319074071423595 + ], + "scorePercentiles" : { + "0.0" : 0.15933203478163888, + "50.0" : 0.1610831870298481, + "90.0" : 0.16265270313262417, + "95.0" : 0.16265270313262417, + "99.0" : 0.16265270313262417, + "99.9" : 0.16265270313262417, + "99.99" : 0.16265270313262417, + "99.999" : 0.16265270313262417, + "99.9999" : 0.16265270313262417, + "100.0" : 0.16265270313262417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16261264577133844, + 0.15933203478163888, + 0.1594406899872449 + ], + [ + 0.1620065954120563, + 0.1610831870298481, + 0.16164427368829407 + ], + [ + 0.16265270313262417, + 0.16080782867801952, + 0.1603499722280125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39241547184985115, + "scoreError" : 0.004628031957858871, + "scoreConfidence" : [ + 0.38778743989199227, + 0.39704350380771003 + ], + "scorePercentiles" : { + "0.0" : 0.38753200643286184, + "50.0" : 0.3934960783032974, + "90.0" : 0.3954240305654409, + "95.0" : 0.3954240305654409, + "99.0" : 0.3954240305654409, + "99.9" : 0.3954240305654409, + "99.99" : 0.3954240305654409, + "99.999" : 0.3954240305654409, + "99.9999" : 0.3954240305654409, + "100.0" : 0.3954240305654409 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39394333220405753, + 0.3947797881252221, + 0.3938365002756774 + ], + [ + 0.3954240305654409, + 0.3930255630011005, + 0.3934960783032974 + ], + [ + 0.39110447979975754, + 0.38859746794124506, + 0.38753200643286184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15713051585289387, + "scoreError" : 0.0032836281079149463, + "scoreConfidence" : [ + 0.15384688774497893, + 0.1604141439608088 + ], + "scorePercentiles" : { + "0.0" : 0.15493549551475716, + "50.0" : 0.15686275267838937, + "90.0" : 0.1600880574863528, + "95.0" : 0.1600880574863528, + "99.0" : 0.1600880574863528, + "99.9" : 0.1600880574863528, + "99.99" : 0.1600880574863528, + "99.999" : 0.1600880574863528, + "99.9999" : 0.1600880574863528, + "100.0" : 0.1600880574863528 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1577168077626723, + 0.15493549551475716, + 0.1556498461275059 + ], + [ + 0.1600880574863528, + 0.15967283248974118, + 0.15846983966405198 + ], + [ + 0.15555324712232454, + 0.1552257638302496, + 0.15686275267838937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04705066768023394, + "scoreError" : 0.001354979886918993, + "scoreConfidence" : [ + 0.04569568779331495, + 0.04840564756715294 + ], + "scorePercentiles" : { + "0.0" : 0.046198589189688624, + "50.0" : 0.04695832817738709, + "90.0" : 0.04813244350534022, + "95.0" : 0.04813244350534022, + "99.0" : 0.04813244350534022, + "99.9" : 0.04813244350534022, + "99.99" : 0.04813244350534022, + "99.999" : 0.04813244350534022, + "99.9999" : 0.04813244350534022, + "100.0" : 0.04813244350534022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046199114461003984, + 0.046198589189688624, + 0.04623714843789734 + ], + [ + 0.04695832817738709, + 0.04697174483905363, + 0.04676409584646608 + ], + [ + 0.04811783464051659, + 0.047876710024751884, + 0.04813244350534022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9532333.788803102, + "scoreError" : 184675.12319489112, + "scoreConfidence" : [ + 9347658.66560821, + 9717008.911997994 + ], + "scorePercentiles" : { + "0.0" : 9399325.62781955, + "50.0" : 9531696.442857143, + "90.0" : 9684418.71732817, + "95.0" : 9684418.71732817, + "99.0" : 9684418.71732817, + "99.9" : 9684418.71732817, + "99.99" : 9684418.71732817, + "99.999" : 9684418.71732817, + "99.9999" : 9684418.71732817, + "100.0" : 9684418.71732817 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9399325.62781955, + 9531696.442857143, + 9439758.283018868 + ], + [ + 9542497.550572518, + 9446944.228517469, + 9435623.42264151 + ], + [ + 9665474.026086956, + 9645265.800385728, + 9684418.71732817 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..31b6567efb --- /dev/null +++ b/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.418727796332958, + "scoreError" : 0.019260305937663362, + "scoreConfidence" : [ + 3.3994674903952946, + 3.437988102270621 + ], + "scorePercentiles" : { + "0.0" : 3.4152823316089855, + "50.0" : 3.418559195614442, + "90.0" : 3.4225104624939626, + "95.0" : 3.4225104624939626, + "99.0" : 3.4225104624939626, + "99.9" : 3.4225104624939626, + "99.99" : 3.4225104624939626, + "99.999" : 3.4225104624939626, + "99.9999" : 3.4225104624939626, + "100.0" : 3.4225104624939626 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4152823316089855, + 3.418103971728598 + ], + [ + 3.4190144195002863, + 3.4225104624939626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7267000534572148, + "scoreError" : 0.009745745154939877, + "scoreConfidence" : [ + 1.716954308302275, + 1.7364457986121546 + ], + "scorePercentiles" : { + "0.0" : 1.725070583670842, + "50.0" : 1.7265046397066905, + "90.0" : 1.7287203507446358, + "95.0" : 1.7287203507446358, + "99.0" : 1.7287203507446358, + "99.9" : 1.7287203507446358, + "99.99" : 1.7287203507446358, + "99.999" : 1.7287203507446358, + "99.9999" : 1.7287203507446358, + "100.0" : 1.7287203507446358 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7287203507446358, + 1.7265772264402828 + ], + [ + 1.725070583670842, + 1.7264320529730983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8679407914173365, + "scoreError" : 0.006622606573662276, + "scoreConfidence" : [ + 0.8613181848436742, + 0.8745633979909988 + ], + "scorePercentiles" : { + "0.0" : 0.8669313223112551, + "50.0" : 0.8677987709768098, + "90.0" : 0.8692343014044714, + "95.0" : 0.8692343014044714, + "99.0" : 0.8692343014044714, + "99.9" : 0.8692343014044714, + "99.99" : 0.8692343014044714, + "99.999" : 0.8692343014044714, + "99.9999" : 0.8692343014044714, + "100.0" : 0.8692343014044714 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8669313223112551, + 0.8692343014044714 + ], + [ + 0.8673413586729263, + 0.8682561832806932 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.235936579563116, + "scoreError" : 0.10012301905339593, + "scoreConfidence" : [ + 16.13581356050972, + 16.33605959861651 + ], + "scorePercentiles" : { + "0.0" : 16.137368925786877, + "50.0" : 16.23306955047474, + "90.0" : 16.320767303396018, + "95.0" : 16.320767303396018, + "99.0" : 16.320767303396018, + "99.9" : 16.320767303396018, + "99.99" : 16.320767303396018, + "99.999" : 16.320767303396018, + "99.9999" : 16.320767303396018, + "100.0" : 16.320767303396018 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.137368925786877, + 16.156522429329012, + 16.224274005597668 + ], + [ + 16.23306955047474, + 16.270260500138413, + 16.229219191891904 + ], + [ + 16.29340742332964, + 16.258539886123778, + 16.320767303396018 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2693.999980775219, + "scoreError" : 143.563391004748, + "scoreConfidence" : [ + 2550.4365897704706, + 2837.563371779967 + ], + "scorePercentiles" : { + "0.0" : 2587.0134717566575, + "50.0" : 2705.156115027511, + "90.0" : 2786.233952324298, + "95.0" : 2786.233952324298, + "99.0" : 2786.233952324298, + "99.9" : 2786.233952324298, + "99.99" : 2786.233952324298, + "99.999" : 2786.233952324298, + "99.9999" : 2786.233952324298, + "100.0" : 2786.233952324298 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2785.8671292365375, + 2786.233952324298, + 2785.9989424675027 + ], + [ + 2705.156115027511, + 2701.0886255987457, + 2711.748006185997 + ], + [ + 2589.3528046902547, + 2593.5407796894633, + 2587.0134717566575 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70073.68564851678, + "scoreError" : 1632.0955447784556, + "scoreConfidence" : [ + 68441.59010373833, + 71705.78119329523 + ], + "scorePercentiles" : { + "0.0" : 68765.72725889308, + "50.0" : 70559.97147775891, + "90.0" : 70873.8723885834, + "95.0" : 70873.8723885834, + "99.0" : 70873.8723885834, + "99.9" : 70873.8723885834, + "99.99" : 70873.8723885834, + "99.999" : 70873.8723885834, + "99.9999" : 70873.8723885834, + "100.0" : 70873.8723885834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70652.15947951954, + 70559.97147775891, + 70557.58478472116 + ], + [ + 70873.8723885834, + 70794.07496145777, + 70861.8622002032 + ], + [ + 68800.60238606091, + 68765.72725889308, + 68797.31589945283 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.4769662363869, + "scoreError" : 5.749983693062291, + "scoreConfidence" : [ + 340.7269825433246, + 352.2269499294492 + ], + "scorePercentiles" : { + "0.0" : 342.6456839432396, + "50.0" : 345.21547181686816, + "90.0" : 350.95338261651966, + "95.0" : 350.95338261651966, + "99.0" : 350.95338261651966, + "99.9" : 350.95338261651966, + "99.99" : 350.95338261651966, + "99.999" : 350.95338261651966, + "99.9999" : 350.95338261651966, + "100.0" : 350.95338261651966 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.81948717326736, + 350.8788328484417, + 350.95338261651966 + ], + [ + 343.53993221462224, + 342.6456839432396, + 345.7400937176836 + ], + [ + 345.21547181686816, + 344.3811516063152, + 344.1186601905246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.48660478045684, + "scoreError" : 3.6159200713995125, + "scoreConfidence" : [ + 104.87068470905733, + 112.10252485185636 + ], + "scorePercentiles" : { + "0.0" : 106.35313512940456, + "50.0" : 107.62571485891694, + "90.0" : 111.58741620896292, + "95.0" : 111.58741620896292, + "99.0" : 111.58741620896292, + "99.9" : 111.58741620896292, + "99.99" : 111.58741620896292, + "99.999" : 111.58741620896292, + "99.9999" : 111.58741620896292, + "100.0" : 111.58741620896292 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.993872610707, + 107.63913033013222, + 107.62571485891694 + ], + [ + 106.35313512940456, + 107.01793018601509, + 106.84737908686986 + ], + [ + 110.96237137270401, + 111.35249324039887, + 111.58741620896292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0622361102645904, + "scoreError" : 0.0014092667087201524, + "scoreConfidence" : [ + 0.06082684355587025, + 0.06364537697331056 + ], + "scorePercentiles" : { + "0.0" : 0.06113559449297867, + "50.0" : 0.06233768628404366, + "90.0" : 0.06329307029247391, + "95.0" : 0.06329307029247391, + "99.0" : 0.06329307029247391, + "99.9" : 0.06329307029247391, + "99.99" : 0.06329307029247391, + "99.999" : 0.06329307029247391, + "99.9999" : 0.06329307029247391, + "100.0" : 0.06329307029247391 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06113559449297867, + 0.06127452007328341, + 0.061268865124343666 + ], + [ + 0.06329307029247391, + 0.06295227893083542, + 0.06318084146249005 + ], + [ + 0.06233768628404366, + 0.062332511154188974, + 0.06234962456667581 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.665468543083284E-4, + "scoreError" : 1.005729578916367E-5, + "scoreConfidence" : [ + 3.564895585191647E-4, + 3.7660415009749205E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5904002448909427E-4, + "50.0" : 3.674106865832467E-4, + "90.0" : 3.7315715283631613E-4, + "95.0" : 3.7315715283631613E-4, + "99.0" : 3.7315715283631613E-4, + "99.9" : 3.7315715283631613E-4, + "99.99" : 3.7315715283631613E-4, + "99.999" : 3.7315715283631613E-4, + "99.9999" : 3.7315715283631613E-4, + "100.0" : 3.7315715283631613E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5904002448909427E-4, + 3.593027288419463E-4, + 3.59669568734919E-4 + ], + [ + 3.6629329073931805E-4, + 3.68010703875466E-4, + 3.674106865832467E-4 + ], + [ + 3.7315715283631613E-4, + 3.7295545675339195E-4, + 3.7308207592125686E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014168876622290247, + "scoreError" : 2.180404606342525E-4, + "scoreConfidence" : [ + 0.013950836161655995, + 0.0143869170829245 + ], + "scorePercentiles" : { + "0.0" : 0.014005904332395416, + "50.0" : 0.014214103812740216, + "90.0" : 0.014365163314117767, + "95.0" : 0.014365163314117767, + "99.0" : 0.014365163314117767, + "99.9" : 0.014365163314117767, + "99.99" : 0.014365163314117767, + "99.999" : 0.014365163314117767, + "99.9999" : 0.014365163314117767, + "100.0" : 0.014365163314117767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014248717006779458, + 0.014241400673894561, + 0.014247215099016953 + ], + [ + 0.014015916791290052, + 0.01400655825116253, + 0.014005904332395416 + ], + [ + 0.014365163314117767, + 0.014214103812740216, + 0.014174910319215287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9883874619998374, + "scoreError" : 0.012262246983570126, + "scoreConfidence" : [ + 0.9761252150162673, + 1.0006497089834074 + ], + "scorePercentiles" : { + "0.0" : 0.9782718871172845, + "50.0" : 0.9889908523536393, + "90.0" : 1.0001254258425842, + "95.0" : 1.0001254258425842, + "99.0" : 1.0001254258425842, + "99.9" : 1.0001254258425842, + "99.99" : 1.0001254258425842, + "99.999" : 1.0001254258425842, + "99.9999" : 1.0001254258425842, + "100.0" : 1.0001254258425842 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9902935940192098, + 0.9942343288597276, + 1.0001254258425842 + ], + [ + 0.9818900094256259, + 0.9782718871172845, + 0.9801009946099569 + ], + [ + 0.9872359937808489, + 0.9889908523536393, + 0.9943440719896589 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013229909001656678, + "scoreError" : 9.406588269167901E-4, + "scoreConfidence" : [ + 0.012289250174739887, + 0.014170567828573469 + ], + "scorePercentiles" : { + "0.0" : 0.012873240898839377, + "50.0" : 0.013235218525888437, + "90.0" : 0.013595976207632591, + "95.0" : 0.013595976207632591, + "99.0" : 0.013595976207632591, + "99.9" : 0.013595976207632591, + "99.99" : 0.013595976207632591, + "99.999" : 0.013595976207632591, + "99.9999" : 0.013595976207632591, + "100.0" : 0.013595976207632591 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012873240898839377, + 0.012927177535904031, + 0.012980483442625505 + ], + [ + 0.013489953609151367, + 0.013512622315787199, + 0.013595976207632591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8953529355881122, + "scoreError" : 0.16813129815441916, + "scoreConfidence" : [ + 3.727221637433693, + 4.063484233742531 + ], + "scorePercentiles" : { + "0.0" : 3.8246030955657493, + "50.0" : 3.8941909112009157, + "90.0" : 3.9681537279936556, + "95.0" : 3.9681537279936556, + "99.0" : 3.9681537279936556, + "99.9" : 3.9681537279936556, + "99.99" : 3.9681537279936556, + "99.999" : 3.9681537279936556, + "99.9999" : 3.9681537279936556, + "100.0" : 3.9681537279936556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8246030955657493, + 3.8482302953846155, + 3.8541955454545453 + ], + [ + 3.9681537279936556, + 3.9341862769472855, + 3.9427486721828213 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.860606839688258, + "scoreError" : 0.04294079178434248, + "scoreConfidence" : [ + 2.8176660479039155, + 2.9035476314726 + ], + "scorePercentiles" : { + "0.0" : 2.832584204474653, + "50.0" : 2.848960992309883, + "90.0" : 2.8993197460869564, + "95.0" : 2.8993197460869564, + "99.0" : 2.8993197460869564, + "99.9" : 2.8993197460869564, + "99.99" : 2.8993197460869564, + "99.999" : 2.8993197460869564, + "99.9999" : 2.8993197460869564, + "100.0" : 2.8993197460869564 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.841267359375, + 2.853678905278174, + 2.846926069740962 + ], + [ + 2.841372784375, + 2.832584204474653, + 2.848960992309883 + ], + [ + 2.8877761952064684, + 2.8935753003472224, + 2.8993197460869564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17612873481401406, + "scoreError" : 0.002273465359969216, + "scoreConfidence" : [ + 0.17385526945404484, + 0.17840220017398328 + ], + "scorePercentiles" : { + "0.0" : 0.17405524113203608, + "50.0" : 0.17676613815777845, + "90.0" : 0.17724810159697973, + "95.0" : 0.17724810159697973, + "99.0" : 0.17724810159697973, + "99.9" : 0.17724810159697973, + "99.99" : 0.17724810159697973, + "99.999" : 0.17724810159697973, + "99.9999" : 0.17724810159697973, + "100.0" : 0.17724810159697973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17460966817991339, + 0.17438350551041049, + 0.17405524113203608 + ], + [ + 0.17709970664281793, + 0.17698738675822523, + 0.1767625913493831 + ], + [ + 0.17724810159697973, + 0.17724627399858206, + 0.17676613815777845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3286495142725523, + "scoreError" : 0.00669510717019289, + "scoreConfidence" : [ + 0.3219544071023594, + 0.3353446214427452 + ], + "scorePercentiles" : { + "0.0" : 0.3232384157993406, + "50.0" : 0.3294961234596376, + "90.0" : 0.3335745540545048, + "95.0" : 0.3335745540545048, + "99.0" : 0.3335745540545048, + "99.9" : 0.3335745540545048, + "99.99" : 0.3335745540545048, + "99.999" : 0.3335745540545048, + "99.9999" : 0.3335745540545048, + "100.0" : 0.3335745540545048 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3335745540545048, + 0.33236815833554906, + 0.33235919395792485 + ], + [ + 0.3243569388278032, + 0.3236054946445329, + 0.3232384157993406 + ], + [ + 0.32962189515145524, + 0.3294961234596376, + 0.3292248542222222 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1617962695319054, + "scoreError" : 0.009564736250000632, + "scoreConfidence" : [ + 0.15223153328190478, + 0.17136100578190602 + ], + "scorePercentiles" : { + "0.0" : 0.15489851643432465, + "50.0" : 0.16205769522590263, + "90.0" : 0.16841606593351072, + "95.0" : 0.16841606593351072, + "99.0" : 0.16841606593351072, + "99.9" : 0.16841606593351072, + "99.99" : 0.16841606593351072, + "99.999" : 0.16841606593351072, + "99.9999" : 0.16841606593351072, + "100.0" : 0.16841606593351072 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16201351245038478, + 0.16205769522590263, + 0.16216430718212335 + ], + [ + 0.1681184438747205, + 0.16812965105331293, + 0.16841606593351072 + ], + [ + 0.1551939337802815, + 0.1551742998525875, + 0.15489851643432465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3925601761045857, + "scoreError" : 0.002854200782560512, + "scoreConfidence" : [ + 0.3897059753220252, + 0.3954143768871462 + ], + "scorePercentiles" : { + "0.0" : 0.3902284047684083, + "50.0" : 0.3928132682457381, + "90.0" : 0.39562102373605507, + "95.0" : 0.39562102373605507, + "99.0" : 0.39562102373605507, + "99.9" : 0.39562102373605507, + "99.99" : 0.39562102373605507, + "99.999" : 0.39562102373605507, + "99.9999" : 0.39562102373605507, + "100.0" : 0.39562102373605507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3928132682457381, + 0.3921554295517823, + 0.3917012223179664 + ], + [ + 0.39295643506621086, + 0.3903483630118272, + 0.3902284047684083 + ], + [ + 0.39562102373605507, + 0.39343656243606895, + 0.3937808758072137 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1590055963300603, + "scoreError" : 0.0038154826825017377, + "scoreConfidence" : [ + 0.15519011364755858, + 0.16282107901256204 + ], + "scorePercentiles" : { + "0.0" : 0.15701236564035734, + "50.0" : 0.15821260119923425, + "90.0" : 0.16385100081922893, + "95.0" : 0.16385100081922893, + "99.0" : 0.16385100081922893, + "99.9" : 0.16385100081922893, + "99.99" : 0.16385100081922893, + "99.999" : 0.16385100081922893, + "99.9999" : 0.16385100081922893, + "100.0" : 0.16385100081922893 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16385100081922893, + 0.16060318779108984, + 0.16053085958744684 + ], + [ + 0.1570874410706712, + 0.15701236564035734, + 0.1571129542340927 + ], + [ + 0.15852308593304165, + 0.15811687069537994, + 0.15821260119923425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04709400613370748, + "scoreError" : 8.959832103309933E-4, + "scoreConfidence" : [ + 0.04619802292337649, + 0.047989989344038475 + ], + "scorePercentiles" : { + "0.0" : 0.046410384114873394, + "50.0" : 0.04702598648019525, + "90.0" : 0.0478789975917228, + "95.0" : 0.0478789975917228, + "99.0" : 0.0478789975917228, + "99.9" : 0.0478789975917228, + "99.99" : 0.0478789975917228, + "99.999" : 0.0478789975917228, + "99.9999" : 0.0478789975917228, + "100.0" : 0.0478789975917228 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04702598648019525, + 0.046662754487720885, + 0.046708876802354096 + ], + [ + 0.047046067618236646, + 0.04673500164037855, + 0.046410384114873394 + ], + [ + 0.0477683986367067, + 0.04760958783117903, + 0.0478789975917228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9327352.777649432, + "scoreError" : 192657.07108017706, + "scoreConfidence" : [ + 9134695.706569256, + 9520009.848729609 + ], + "scorePercentiles" : { + "0.0" : 9175624.649541285, + "50.0" : 9338098.31372549, + "90.0" : 9463799.421948912, + "95.0" : 9463799.421948912, + "99.0" : 9463799.421948912, + "99.9" : 9463799.421948912, + "99.99" : 9463799.421948912, + "99.999" : 9463799.421948912, + "99.9999" : 9463799.421948912, + "100.0" : 9463799.421948912 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9368004.88857678, + 9338098.31372549, + 9322472.486486487 + ], + [ + 9198349.157169119, + 9175624.649541285, + 9193192.830882354 + ], + [ + 9433707.31856739, + 9463799.421948912, + 9452925.93194707 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..fbe88ad5af --- /dev/null +++ b/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420038635731748, + "scoreError" : 0.03572612124681014, + "scoreConfidence" : [ + 3.3843125144849378, + 3.4557647569785583 + ], + "scorePercentiles" : { + "0.0" : 3.412757503952283, + "50.0" : 3.4206086449711632, + "90.0" : 3.4261797490323804, + "95.0" : 3.4261797490323804, + "99.0" : 3.4261797490323804, + "99.9" : 3.4261797490323804, + "99.99" : 3.4261797490323804, + "99.999" : 3.4261797490323804, + "99.9999" : 3.4261797490323804, + "100.0" : 3.4261797490323804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.420208542034723, + 3.4261797490323804 + ], + [ + 3.412757503952283, + 3.421008747907604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7269594749383836, + "scoreError" : 0.009130618232612993, + "scoreConfidence" : [ + 1.7178288567057707, + 1.7360900931709966 + ], + "scorePercentiles" : { + "0.0" : 1.7252408089036402, + "50.0" : 1.7270218836065996, + "90.0" : 1.7285533236366952, + "95.0" : 1.7285533236366952, + "99.0" : 1.7285533236366952, + "99.9" : 1.7285533236366952, + "99.99" : 1.7285533236366952, + "99.999" : 1.7285533236366952, + "99.9999" : 1.7285533236366952, + "100.0" : 1.7285533236366952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7265281609307856, + 1.7275156062824133 + ], + [ + 1.7252408089036402, + 1.7285533236366952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683627355847058, + "scoreError" : 0.004424765135251617, + "scoreConfidence" : [ + 0.8639379704494542, + 0.8727875007199574 + ], + "scorePercentiles" : { + "0.0" : 0.8676182677477435, + "50.0" : 0.8683318351838458, + "90.0" : 0.8691690042233875, + "95.0" : 0.8691690042233875, + "99.0" : 0.8691690042233875, + "99.9" : 0.8691690042233875, + "99.99" : 0.8691690042233875, + "99.999" : 0.8691690042233875, + "99.9999" : 0.8691690042233875, + "100.0" : 0.8691690042233875 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8680153036900241, + 0.8691690042233875 + ], + [ + 0.8676182677477435, + 0.8686483666776675 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.055543045735995, + "scoreError" : 0.2069643928273129, + "scoreConfidence" : [ + 15.848578652908682, + 16.262507438563308 + ], + "scorePercentiles" : { + "0.0" : 15.853454930952296, + "50.0" : 16.095843976286545, + "90.0" : 16.17934655862583, + "95.0" : 16.17934655862583, + "99.0" : 16.17934655862583, + "99.9" : 16.17934655862583, + "99.99" : 16.17934655862583, + "99.999" : 16.17934655862583, + "99.9999" : 16.17934655862583, + "100.0" : 16.17934655862583 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.853454930952296, + 15.919691762471901, + 15.92626644855112 + ], + [ + 16.101053864799674, + 16.16745467342604, + 16.088498782754574 + ], + [ + 16.17934655862583, + 16.095843976286545, + 16.168276413755958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2633.4585624258307, + "scoreError" : 107.03761392892255, + "scoreConfidence" : [ + 2526.4209484969083, + 2740.496176354753 + ], + "scorePercentiles" : { + "0.0" : 2549.5553016703866, + "50.0" : 2651.5276426160167, + "90.0" : 2695.661966615178, + "95.0" : 2695.661966615178, + "99.0" : 2695.661966615178, + "99.9" : 2695.661966615178, + "99.99" : 2695.661966615178, + "99.999" : 2695.661966615178, + "99.9999" : 2695.661966615178, + "100.0" : 2695.661966615178 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2552.6745350860156, + 2552.7855568633254, + 2549.5553016703866 + ], + [ + 2665.1315269714228, + 2651.5276426160167, + 2649.0604733029927 + ], + [ + 2691.478381856197, + 2693.251676850942, + 2695.661966615178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69931.37941176901, + "scoreError" : 1465.4758812930647, + "scoreConfidence" : [ + 68465.90353047595, + 71396.85529306208 + ], + "scorePercentiles" : { + "0.0" : 68845.18560964587, + "50.0" : 70023.56910032906, + "90.0" : 70921.12070454148, + "95.0" : 70921.12070454148, + "99.0" : 70921.12070454148, + "99.9" : 70921.12070454148, + "99.99" : 70921.12070454148, + "99.999" : 70921.12070454148, + "99.9999" : 70921.12070454148, + "100.0" : 70921.12070454148 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68875.69735017336, + 68845.18560964587, + 68901.2495725469 + ], + [ + 70094.01325465711, + 70012.04067921391, + 70023.56910032906 + ], + [ + 70889.52196622957, + 70921.12070454148, + 70820.0164685838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.19467879376697, + "scoreError" : 7.823959503486677, + "scoreConfidence" : [ + 341.3707192902803, + 357.01863829725363 + ], + "scorePercentiles" : { + "0.0" : 342.85429652799536, + "50.0" : 351.3516869295316, + "90.0" : 353.85345733628844, + "95.0" : 353.85345733628844, + "99.0" : 353.85345733628844, + "99.9" : 353.85345733628844, + "99.99" : 353.85345733628844, + "99.999" : 353.85345733628844, + "99.9999" : 353.85345733628844, + "100.0" : 353.85345733628844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3459819255283, + 351.6033818518908, + 351.3516869295316 + ], + [ + 342.85429652799536, + 343.0360144184278, + 343.3701754846237 + ], + [ + 352.1977931513615, + 353.85345733628844, + 353.13932151825475 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.23185794008825, + "scoreError" : 2.631478358621384, + "scoreConfidence" : [ + 104.60037958146687, + 109.86333629870963 + ], + "scorePercentiles" : { + "0.0" : 105.6072203712119, + "50.0" : 107.10883582462246, + "90.0" : 109.34753566473427, + "95.0" : 109.34753566473427, + "99.0" : 109.34753566473427, + "99.9" : 109.34753566473427, + "99.99" : 109.34753566473427, + "99.999" : 109.34753566473427, + "99.9999" : 109.34753566473427, + "100.0" : 109.34753566473427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.90448525309176, + 107.10883582462246, + 107.37865546414842 + ], + [ + 108.80366786552064, + 109.29181493925394, + 109.34753566473427 + ], + [ + 105.6072203712119, + 105.91024847813217, + 105.73425760007858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06181778714684108, + "scoreError" : 8.67739054633523E-4, + "scoreConfidence" : [ + 0.060950048092207554, + 0.0626855262014746 + ], + "scorePercentiles" : { + "0.0" : 0.061366941830923685, + "50.0" : 0.06172266934334052, + "90.0" : 0.06312104011285884, + "95.0" : 0.06312104011285884, + "99.0" : 0.06312104011285884, + "99.9" : 0.06312104011285884, + "99.99" : 0.06312104011285884, + "99.999" : 0.06312104011285884, + "99.9999" : 0.06312104011285884, + "100.0" : 0.06312104011285884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06195911648151475, + 0.06172355798537173, + 0.06173098702437097 + ], + [ + 0.06153243771151503, + 0.06167637224233528, + 0.06172266934334052 + ], + [ + 0.06312104011285884, + 0.06152696158933878, + 0.061366941830923685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6857029118731886E-4, + "scoreError" : 1.5216564218543925E-5, + "scoreConfidence" : [ + 3.5335372696877494E-4, + 3.837868554058628E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5672240780497004E-4, + "50.0" : 3.6874689627437875E-4, + "90.0" : 3.791402232827823E-4, + "95.0" : 3.791402232827823E-4, + "99.0" : 3.791402232827823E-4, + "99.9" : 3.791402232827823E-4, + "99.99" : 3.791402232827823E-4, + "99.999" : 3.791402232827823E-4, + "99.9999" : 3.791402232827823E-4, + "100.0" : 3.791402232827823E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.686687545112998E-4, + 3.6874689627437875E-4, + 3.6928144258397934E-4 + ], + [ + 3.5672240780497004E-4, + 3.591926452381613E-4, + 3.580368797876607E-4 + ], + [ + 3.782523123139139E-4, + 3.790910588887234E-4, + 3.791402232827823E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014149934787332199, + "scoreError" : 1.5484970065954965E-4, + "scoreConfidence" : [ + 0.013995085086672649, + 0.014304784487991749 + ], + "scorePercentiles" : { + "0.0" : 0.014058790354938164, + "50.0" : 0.014136459809273935, + "90.0" : 0.014363401301596329, + "95.0" : 0.014363401301596329, + "99.0" : 0.014363401301596329, + "99.9" : 0.014363401301596329, + "99.99" : 0.014363401301596329, + "99.999" : 0.014363401301596329, + "99.9999" : 0.014363401301596329, + "100.0" : 0.014363401301596329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014151441471108086, + 0.014164649357216513, + 0.014363401301596329 + ], + [ + 0.014128270719925855, + 0.014136459809273935, + 0.014193550559501302 + ], + [ + 0.014060995313528198, + 0.014091854198901412, + 0.014058790354938164 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9848796345153955, + "scoreError" : 0.026365331267761083, + "scoreConfidence" : [ + 0.9585143032476344, + 1.0112449657831566 + ], + "scorePercentiles" : { + "0.0" : 0.9705371368400622, + "50.0" : 0.977281722759699, + "90.0" : 1.0084672936371886, + "95.0" : 1.0084672936371886, + "99.0" : 1.0084672936371886, + "99.9" : 1.0084672936371886, + "99.99" : 1.0084672936371886, + "99.999" : 1.0084672936371886, + "99.9999" : 1.0084672936371886, + "100.0" : 1.0084672936371886 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9727504306001362, + 0.972441956437184, + 0.9705371368400622 + ], + [ + 0.9843706345112708, + 0.971754894859586, + 0.977281722759699 + ], + [ + 1.0012740556668, + 1.0050385853266333, + 1.0084672936371886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01303848291506131, + "scoreError" : 7.648798660533651E-4, + "scoreConfidence" : [ + 0.012273603049007945, + 0.013803362781114676 + ], + "scorePercentiles" : { + "0.0" : 0.012721311135196195, + "50.0" : 0.01305365903752266, + "90.0" : 0.013294264663889117, + "95.0" : 0.013294264663889117, + "99.0" : 0.013294264663889117, + "99.9" : 0.013294264663889117, + "99.99" : 0.013294264663889117, + "99.999" : 0.013294264663889117, + "99.9999" : 0.013294264663889117, + "100.0" : 0.013294264663889117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012721311135196195, + 0.012828935289786096, + 0.012825929841347202 + ], + [ + 0.013278382785259227, + 0.013294264663889117, + 0.013282073774890027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6859162919508712, + "scoreError" : 0.08130077546456034, + "scoreConfidence" : [ + 3.604615516486311, + 3.7672170674154315 + ], + "scorePercentiles" : { + "0.0" : 3.6448528950437318, + "50.0" : 3.680905968346083, + "90.0" : 3.722713207589286, + "95.0" : 3.722713207589286, + "99.0" : 3.722713207589286, + "99.9" : 3.722713207589286, + "99.99" : 3.722713207589286, + "99.999" : 3.722713207589286, + "99.9999" : 3.722713207589286, + "100.0" : 3.722713207589286 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6448528950437318, + 3.6821769646539027, + 3.6796349720382633 + ], + [ + 3.670619360968452, + 3.71550035141159, + 3.722713207589286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9123843056312286, + "scoreError" : 0.040828029372389635, + "scoreConfidence" : [ + 2.871556276258839, + 2.9532123350036183 + ], + "scorePercentiles" : { + "0.0" : 2.883016596137215, + "50.0" : 2.9039433644018584, + "90.0" : 2.9513215104750663, + "95.0" : 2.9513215104750663, + "99.0" : 2.9513215104750663, + "99.9" : 2.9513215104750663, + "99.99" : 2.9513215104750663, + "99.999" : 2.9513215104750663, + "99.9999" : 2.9513215104750663, + "100.0" : 2.9513215104750663 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9101809997090484, + 2.9016431763852624, + 2.883016596137215 + ], + [ + 2.949388729283397, + 2.9513215104750663, + 2.923200353405437 + ], + [ + 2.891391844174617, + 2.9039433644018584, + 2.8973721767091543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17631540626328382, + "scoreError" : 0.005322650101665493, + "scoreConfidence" : [ + 0.17099275616161833, + 0.1816380563649493 + ], + "scorePercentiles" : { + "0.0" : 0.17230167962921483, + "50.0" : 0.17607343552362842, + "90.0" : 0.18029872303254305, + "95.0" : 0.18029872303254305, + "99.0" : 0.18029872303254305, + "99.9" : 0.18029872303254305, + "99.99" : 0.18029872303254305, + "99.999" : 0.18029872303254305, + "99.9999" : 0.18029872303254305, + "100.0" : 0.18029872303254305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17323904012126462, + 0.17264319178578827, + 0.17230167962921483 + ], + [ + 0.18029872303254305, + 0.1797842819646196, + 0.17992781205131433 + ], + [ + 0.17659479259376987, + 0.17607343552362842, + 0.1759756996674116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3374518829803303, + "scoreError" : 0.009005641323680674, + "scoreConfidence" : [ + 0.3284462416566496, + 0.346457524304011 + ], + "scorePercentiles" : { + "0.0" : 0.33093121890201527, + "50.0" : 0.3372985680652995, + "90.0" : 0.34342195291895605, + "95.0" : 0.34342195291895605, + "99.0" : 0.34342195291895605, + "99.9" : 0.34342195291895605, + "99.99" : 0.34342195291895605, + "99.999" : 0.34342195291895605, + "99.9999" : 0.34342195291895605, + "100.0" : 0.34342195291895605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3393818560374669, + 0.3372985680652995, + 0.33715946481912273 + ], + [ + 0.3309354022767887, + 0.331359524055666, + 0.33093121890201527 + ], + [ + 0.34341128602335164, + 0.34316767372430595, + 0.34342195291895605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16313051381345262, + "scoreError" : 0.010396355099357468, + "scoreConfidence" : [ + 0.15273415871409515, + 0.17352686891281008 + ], + "scorePercentiles" : { + "0.0" : 0.15699070771911647, + "50.0" : 0.1611923607730621, + "90.0" : 0.1712437169081133, + "95.0" : 0.1712437169081133, + "99.0" : 0.1712437169081133, + "99.9" : 0.1712437169081133, + "99.99" : 0.1712437169081133, + "99.999" : 0.1712437169081133, + "99.9999" : 0.1712437169081133, + "100.0" : 0.1712437169081133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15752309528385106, + 0.15699070771911647, + 0.15700094895988695 + ], + [ + 0.1712437169081133, + 0.17107739566154584, + 0.17081330198992228 + ], + [ + 0.16126023378968926, + 0.1610728632358863, + 0.1611923607730621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38568584578686127, + "scoreError" : 0.008013563016641172, + "scoreConfidence" : [ + 0.3776722827702201, + 0.39369940880350246 + ], + "scorePercentiles" : { + "0.0" : 0.38021937287555607, + "50.0" : 0.3842808693463475, + "90.0" : 0.39188927098518694, + "95.0" : 0.39188927098518694, + "99.0" : 0.39188927098518694, + "99.9" : 0.39188927098518694, + "99.99" : 0.39188927098518694, + "99.999" : 0.39188927098518694, + "99.9999" : 0.39188927098518694, + "100.0" : 0.39188927098518694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3802239573020037, + 0.38021937287555607, + 0.38083733512319584 + ], + [ + 0.3888499179951785, + 0.39188927098518694, + 0.38913277193665124 + ], + [ + 0.3915314130060293, + 0.3842808693463475, + 0.3842077035116029 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15686664020284957, + "scoreError" : 0.004103900306174808, + "scoreConfidence" : [ + 0.15276273989667477, + 0.16097054050902437 + ], + "scorePercentiles" : { + "0.0" : 0.15334087613469088, + "50.0" : 0.15778918079113874, + "90.0" : 0.15933047987699955, + "95.0" : 0.15933047987699955, + "99.0" : 0.15933047987699955, + "99.9" : 0.15933047987699955, + "99.99" : 0.15933047987699955, + "99.999" : 0.15933047987699955, + "99.9999" : 0.15933047987699955, + "100.0" : 0.15933047987699955 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15933047987699955, + 0.1585143294973608, + 0.15778918079113874 + ], + [ + 0.15860314175601092, + 0.15883556409726965, + 0.15759307658850227 + ], + [ + 0.15443659665189258, + 0.15334087613469088, + 0.1533565164317809 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04798045376241683, + "scoreError" : 0.0016470127208893697, + "scoreConfidence" : [ + 0.04633344104152746, + 0.0496274664833062 + ], + "scorePercentiles" : { + "0.0" : 0.04644588398890886, + "50.0" : 0.048023235478015326, + "90.0" : 0.04916658521188045, + "95.0" : 0.04916658521188045, + "99.0" : 0.04916658521188045, + "99.9" : 0.04916658521188045, + "99.99" : 0.04916658521188045, + "99.999" : 0.04916658521188045, + "99.9999" : 0.04916658521188045, + "100.0" : 0.04916658521188045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04727092483538093, + 0.04644588398890886, + 0.046728657712005385 + ], + [ + 0.04916658521188045, + 0.048825053589563315, + 0.04881958612861809 + ], + [ + 0.04790924984789035, + 0.048023235478015326, + 0.04863490706948875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9397966.469331594, + "scoreError" : 400921.4801179857, + "scoreConfidence" : [ + 8997044.989213608, + 9798887.94944958 + ], + "scorePercentiles" : { + "0.0" : 9164177.787545787, + "50.0" : 9301691.79739777, + "90.0" : 9721944.350826045, + "95.0" : 9721944.350826045, + "99.0" : 9721944.350826045, + "99.9" : 9721944.350826045, + "99.99" : 9721944.350826045, + "99.999" : 9721944.350826045, + "99.9999" : 9721944.350826045, + "100.0" : 9721944.350826045 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9301769.69888476, + 9301691.79739777, + 9293745.372330548 + ], + [ + 9216755.062615102, + 9177969.882568806, + 9164177.787545787 + ], + [ + 9686416.676669894, + 9721944.350826045, + 9717227.595145632 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..9ec78ec79a --- /dev/null +++ b/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.427192512014576, + "scoreError" : 0.012873173657204301, + "scoreConfidence" : [ + 3.414319338357372, + 3.44006568567178 + ], + "scorePercentiles" : { + "0.0" : 3.4251916231698507, + "50.0" : 3.427044764180539, + "90.0" : 3.4294888965273755, + "95.0" : 3.4294888965273755, + "99.0" : 3.4294888965273755, + "99.9" : 3.4294888965273755, + "99.99" : 3.4294888965273755, + "99.999" : 3.4294888965273755, + "99.9999" : 3.4294888965273755, + "100.0" : 3.4294888965273755 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4251916231698507, + 3.4294888965273755 + ], + [ + 3.4259078290300446, + 3.4281816993310326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.729194618855824, + "scoreError" : 0.008041480454113865, + "scoreConfidence" : [ + 1.7211531384017102, + 1.7372360993099378 + ], + "scorePercentiles" : { + "0.0" : 1.728180199312595, + "50.0" : 1.7288913442207987, + "90.0" : 1.730815587669104, + "95.0" : 1.730815587669104, + "99.0" : 1.730815587669104, + "99.9" : 1.730815587669104, + "99.99" : 1.730815587669104, + "99.999" : 1.730815587669104, + "99.9999" : 1.730815587669104, + "100.0" : 1.730815587669104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282568108323697, + 1.7295258776092277 + ], + [ + 1.728180199312595, + 1.730815587669104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8689448347025848, + "scoreError" : 0.005903307335313809, + "scoreConfidence" : [ + 0.8630415273672709, + 0.8748481420378986 + ], + "scorePercentiles" : { + "0.0" : 0.8676539255997362, + "50.0" : 0.8691740741199422, + "90.0" : 0.8697772649707182, + "95.0" : 0.8697772649707182, + "99.0" : 0.8697772649707182, + "99.9" : 0.8697772649707182, + "99.99" : 0.8697772649707182, + "99.999" : 0.8697772649707182, + "99.9999" : 0.8697772649707182, + "100.0" : 0.8697772649707182 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8676539255997362, + 0.8690340804702854 + ], + [ + 0.869314067769599, + 0.8697772649707182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.167508035118427, + "scoreError" : 0.25972430198208885, + "scoreConfidence" : [ + 15.907783733136338, + 16.427232337100516 + ], + "scorePercentiles" : { + "0.0" : 15.92809758573588, + "50.0" : 16.183659072249025, + "90.0" : 16.343217981430513, + "95.0" : 16.343217981430513, + "99.0" : 16.343217981430513, + "99.9" : 16.343217981430513, + "99.99" : 16.343217981430513, + "99.999" : 16.343217981430513, + "99.9999" : 16.343217981430513, + "100.0" : 16.343217981430513 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.197843725815492, + 16.17705961536494, + 16.183659072249025 + ], + [ + 16.310391435762632, + 16.343217981430513, + 16.34076437108 + ], + [ + 15.92809758573588, + 15.970675179208435, + 16.05586334941892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2687.1436345801776, + "scoreError" : 18.904649497499815, + "scoreConfidence" : [ + 2668.2389850826776, + 2706.0482840776776 + ], + "scorePercentiles" : { + "0.0" : 2670.3886255919297, + "50.0" : 2684.9111243097527, + "90.0" : 2703.5474294577257, + "95.0" : 2703.5474294577257, + "99.0" : 2703.5474294577257, + "99.9" : 2703.5474294577257, + "99.99" : 2703.5474294577257, + "99.999" : 2703.5474294577257, + "99.9999" : 2703.5474294577257, + "100.0" : 2703.5474294577257 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2703.5474294577257, + 2700.7496243988994, + 2697.685683724869 + ], + [ + 2687.329405036839, + 2684.9111243097527, + 2681.400528174645 + ], + [ + 2679.5193054018728, + 2670.3886255919297, + 2678.7609851250654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69734.09464764553, + "scoreError" : 1969.4613868559036, + "scoreConfidence" : [ + 67764.63326078962, + 71703.55603450144 + ], + "scorePercentiles" : { + "0.0" : 68737.04196237889, + "50.0" : 69100.07053657329, + "90.0" : 71311.58539349773, + "95.0" : 71311.58539349773, + "99.0" : 71311.58539349773, + "99.9" : 71311.58539349773, + "99.99" : 71311.58539349773, + "99.999" : 71311.58539349773, + "99.9999" : 71311.58539349773, + "100.0" : 71311.58539349773 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71238.58894866482, + 71309.06321666678, + 71311.58539349773 + ], + [ + 68737.04196237889, + 68887.45002530912, + 68811.03706522842 + ], + [ + 69073.30047654698, + 69138.71420394372, + 69100.07053657329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.50220235933625, + "scoreError" : 7.756306318471352, + "scoreConfidence" : [ + 343.7458960408649, + 359.2585086778076 + ], + "scorePercentiles" : { + "0.0" : 345.4808066065005, + "50.0" : 351.31352568630047, + "90.0" : 356.91040681496656, + "95.0" : 356.91040681496656, + "99.0" : 356.91040681496656, + "99.9" : 356.91040681496656, + "99.99" : 356.91040681496656, + "99.999" : 356.91040681496656, + "99.9999" : 356.91040681496656, + "100.0" : 356.91040681496656 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.91040681496656, + 356.88629417444713, + 356.5931456022146 + ], + [ + 345.4808066065005, + 346.0590898633618, + 347.0960040572533 + ], + [ + 352.2717640794763, + 351.31352568630047, + 350.90878434950565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.89426072041461, + "scoreError" : 3.212501268374495, + "scoreConfidence" : [ + 103.68175945204011, + 110.1067619887891 + ], + "scorePercentiles" : { + "0.0" : 104.89864582142164, + "50.0" : 106.2840255003389, + "90.0" : 109.5152093057473, + "95.0" : 109.5152093057473, + "99.0" : 109.5152093057473, + "99.9" : 109.5152093057473, + "99.99" : 109.5152093057473, + "99.999" : 109.5152093057473, + "99.9999" : 109.5152093057473, + "100.0" : 109.5152093057473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.89864582142164, + 105.31981365401647, + 105.27531851739955 + ], + [ + 109.19609289827845, + 109.5152093057473, + 109.37650741372804 + ], + [ + 105.80530145136055, + 106.2840255003389, + 106.37743192144043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06176367037071446, + "scoreError" : 0.0012202223664750805, + "scoreConfidence" : [ + 0.06054344800423938, + 0.06298389273718955 + ], + "scorePercentiles" : { + "0.0" : 0.0613146869738496, + "50.0" : 0.0613733022891862, + "90.0" : 0.06359179673142348, + "95.0" : 0.06359179673142348, + "99.0" : 0.06359179673142348, + "99.9" : 0.06359179673142348, + "99.99" : 0.06359179673142348, + "99.999" : 0.06359179673142348, + "99.9999" : 0.06359179673142348, + "100.0" : 0.06359179673142348 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06137311087516877, + 0.0613733022891862, + 0.06134540644975278 + ], + [ + 0.06186620599352887, + 0.061843810723562154, + 0.061818986511297254 + ], + [ + 0.06359179673142348, + 0.06134572678866103, + 0.0613146869738496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6557456403008633E-4, + "scoreError" : 1.4201606647306137E-5, + "scoreConfidence" : [ + 3.513729573827802E-4, + 3.797761706773925E-4 + ], + "scorePercentiles" : { + "0.0" : 3.552793083481791E-4, + "50.0" : 3.657273559060746E-4, + "90.0" : 3.7604188406507215E-4, + "95.0" : 3.7604188406507215E-4, + "99.0" : 3.7604188406507215E-4, + "99.9" : 3.7604188406507215E-4, + "99.99" : 3.7604188406507215E-4, + "99.999" : 3.7604188406507215E-4, + "99.9999" : 3.7604188406507215E-4, + "100.0" : 3.7604188406507215E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.655510130763393E-4, + 3.665766364791667E-4, + 3.657273559060746E-4 + ], + [ + 3.747549098404646E-4, + 3.7456665019215994E-4, + 3.7604188406507215E-4 + ], + [ + 3.5582687465080437E-4, + 3.558464437125165E-4, + 3.552793083481791E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01478077065447956, + "scoreError" : 4.596114266672553E-4, + "scoreConfidence" : [ + 0.014321159227812304, + 0.015240382081146815 + ], + "scorePercentiles" : { + "0.0" : 0.014584980540950492, + "50.0" : 0.014609507818172522, + "90.0" : 0.015151146695958486, + "95.0" : 0.015151146695958486, + "99.0" : 0.015151146695958486, + "99.9" : 0.015151146695958486, + "99.99" : 0.015151146695958486, + "99.999" : 0.015151146695958486, + "99.9999" : 0.015151146695958486, + "100.0" : 0.015151146695958486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.015151146695958486, + 0.015140491343534866, + 0.015144086810876953 + ], + [ + 0.014609507818172522, + 0.014589845803357664, + 0.014596098798462171 + ], + [ + 0.014597137646444033, + 0.01461364043255882, + 0.014584980540950492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9851262027850285, + "scoreError" : 0.022089658643544983, + "scoreConfidence" : [ + 0.9630365441414835, + 1.0072158614285736 + ], + "scorePercentiles" : { + "0.0" : 0.9747190762183235, + "50.0" : 0.9791730844022325, + "90.0" : 1.01408276617319, + "95.0" : 1.01408276617319, + "99.0" : 1.01408276617319, + "99.9" : 1.01408276617319, + "99.99" : 1.01408276617319, + "99.999" : 1.01408276617319, + "99.9999" : 1.01408276617319, + "100.0" : 1.01408276617319 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9758338460187354, + 0.9761059209370425, + 0.9747190762183235 + ], + [ + 0.9823366401768173, + 0.9763997227104081, + 0.9791730844022325 + ], + [ + 0.9938331164662626, + 1.01408276617319, + 0.9936516519622454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012908189953084093, + "scoreError" : 5.544120422241866E-4, + "scoreConfidence" : [ + 0.012353777910859906, + 0.01346260199530828 + ], + "scorePercentiles" : { + "0.0" : 0.012679037873927696, + "50.0" : 0.012885974801918061, + "90.0" : 0.013127490649506812, + "95.0" : 0.013127490649506812, + "99.0" : 0.013127490649506812, + "99.9" : 0.013127490649506812, + "99.99" : 0.013127490649506812, + "99.999" : 0.013127490649506812, + "99.9999" : 0.013127490649506812, + "100.0" : 0.013127490649506812 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012679037873927696, + 0.012766024883001891, + 0.012756999800995532 + ], + [ + 0.013005924720834233, + 0.013127490649506812, + 0.013113661790238401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6561826880524, + "scoreError" : 0.06436677310614175, + "scoreConfidence" : [ + 3.5918159149462583, + 3.720549461158542 + ], + "scorePercentiles" : { + "0.0" : 3.6185629515195368, + "50.0" : 3.6526129974433896, + "90.0" : 3.682027943298969, + "95.0" : 3.682027943298969, + "99.0" : 3.682027943298969, + "99.9" : 3.682027943298969, + "99.99" : 3.682027943298969, + "99.999" : 3.682027943298969, + "99.9999" : 3.682027943298969, + "100.0" : 3.682027943298969 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6526484506939374, + 3.682027943298969, + 3.678807961764706 + ], + [ + 3.6185629515195368, + 3.652471276844412, + 3.6525775441928414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8098269224905965, + "scoreError" : 0.0682573600462391, + "scoreConfidence" : [ + 2.7415695624443575, + 2.8780842825368356 + ], + "scorePercentiles" : { + "0.0" : 2.756005176357123, + "50.0" : 2.8269731232334654, + "90.0" : 2.852774981745579, + "95.0" : 2.852774981745579, + "99.0" : 2.852774981745579, + "99.9" : 2.852774981745579, + "99.99" : 2.852774981745579, + "99.999" : 2.852774981745579, + "99.9999" : 2.852774981745579, + "100.0" : 2.852774981745579 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.852774981745579, + 2.8471311010532308, + 2.841508862215909 + ], + [ + 2.760114301048565, + 2.756005176357123, + 2.756156037475889 + ], + [ + 2.8206438959390865, + 2.8271348233465234, + 2.8269731232334654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.182257758641677, + "scoreError" : 0.009369711322852617, + "scoreConfidence" : [ + 0.1728880473188244, + 0.19162746996452962 + ], + "scorePercentiles" : { + "0.0" : 0.17512085773574992, + "50.0" : 0.18244345578603616, + "90.0" : 0.18892104490582434, + "95.0" : 0.18892104490582434, + "99.0" : 0.18892104490582434, + "99.9" : 0.18892104490582434, + "99.99" : 0.18892104490582434, + "99.999" : 0.18892104490582434, + "99.9999" : 0.18892104490582434, + "100.0" : 0.18892104490582434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18892104490582434, + 0.18846615911875012, + 0.18838380496948234 + ], + [ + 0.17668158256183747, + 0.17546814056358787, + 0.17512085773574992 + ], + [ + 0.18229967321715035, + 0.18253510891667427, + 0.18244345578603616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33033853868194574, + "scoreError" : 0.010265857312702213, + "scoreConfidence" : [ + 0.32007268136924355, + 0.3406043959946479 + ], + "scorePercentiles" : { + "0.0" : 0.32237836437782075, + "50.0" : 0.3325730915893445, + "90.0" : 0.3368782656560552, + "95.0" : 0.3368782656560552, + "99.0" : 0.3368782656560552, + "99.9" : 0.3368782656560552, + "99.99" : 0.3368782656560552, + "99.999" : 0.3368782656560552, + "99.9999" : 0.3368782656560552, + "100.0" : 0.3368782656560552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3368782656560552, + 0.3358404426906673, + 0.33497170506464796 + ], + [ + 0.33304267895560663, + 0.3325730915893445, + 0.3324330246659132 + ], + [ + 0.322414881290905, + 0.32237836437782075, + 0.3225143938465508 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16090177068882616, + "scoreError" : 0.005913352137785627, + "scoreConfidence" : [ + 0.15498841855104054, + 0.1668151228266118 + ], + "scorePercentiles" : { + "0.0" : 0.15638643631245602, + "50.0" : 0.16139914766216368, + "90.0" : 0.1650659744317713, + "95.0" : 0.1650659744317713, + "99.0" : 0.1650659744317713, + "99.9" : 0.1650659744317713, + "99.99" : 0.1650659744317713, + "99.999" : 0.1650659744317713, + "99.9999" : 0.1650659744317713, + "100.0" : 0.1650659744317713 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1650659744317713, + 0.16443675696785331, + 0.1646148937431069 + ], + [ + 0.1609050628801287, + 0.16174211627417998, + 0.16139914766216368 + ], + [ + 0.15649513283047214, + 0.15707041509730316, + 0.15638643631245602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39215436517063057, + "scoreError" : 0.00894198906358332, + "scoreConfidence" : [ + 0.3832123761070472, + 0.4010963542342139 + ], + "scorePercentiles" : { + "0.0" : 0.3839347225016317, + "50.0" : 0.3935621432900433, + "90.0" : 0.39837528426881247, + "95.0" : 0.39837528426881247, + "99.0" : 0.39837528426881247, + "99.9" : 0.39837528426881247, + "99.99" : 0.39837528426881247, + "99.999" : 0.39837528426881247, + "99.9999" : 0.39837528426881247, + "100.0" : 0.39837528426881247 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39837528426881247, + 0.3951016906483347, + 0.3937299167683767 + ], + [ + 0.38905089678649235, + 0.3843139198339802, + 0.3839347225016317 + ], + [ + 0.3980502241372448, + 0.3935621432900433, + 0.393270488300759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15446192003082043, + "scoreError" : 0.001081224597951432, + "scoreConfidence" : [ + 0.153380695432869, + 0.15554314462877186 + ], + "scorePercentiles" : { + "0.0" : 0.15360487676451162, + "50.0" : 0.15451793318809004, + "90.0" : 0.15524694288597377, + "95.0" : 0.15524694288597377, + "99.0" : 0.15524694288597377, + "99.9" : 0.15524694288597377, + "99.99" : 0.15524694288597377, + "99.999" : 0.15524694288597377, + "99.9999" : 0.15524694288597377, + "100.0" : 0.15524694288597377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15498702888892332, + 0.15524694288597377, + 0.1549091697467276 + ], + [ + 0.15451793318809004, + 0.15411996120888943, + 0.15380470221012318 + ], + [ + 0.15516613101832458, + 0.15380053436582028, + 0.15360487676451162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04748573782000606, + "scoreError" : 0.0012040196670550232, + "scoreConfidence" : [ + 0.04628171815295104, + 0.048689757487061086 + ], + "scorePercentiles" : { + "0.0" : 0.046663098938428876, + "50.0" : 0.04712490444145991, + "90.0" : 0.048372361226128514, + "95.0" : 0.048372361226128514, + "99.0" : 0.048372361226128514, + "99.9" : 0.048372361226128514, + "99.99" : 0.048372361226128514, + "99.999" : 0.048372361226128514, + "99.9999" : 0.048372361226128514, + "100.0" : 0.048372361226128514 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04778590171548717, + 0.04712490444145991, + 0.046904938836772984 + ], + [ + 0.04829784319805265, + 0.04837072604720905, + 0.048372361226128514 + ], + [ + 0.04701799494562432, + 0.04683387103089114, + 0.046663098938428876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9317618.65213532, + "scoreError" : 293418.301524301, + "scoreConfidence" : [ + 9024200.35061102, + 9611036.95365962 + ], + "scorePercentiles" : { + "0.0" : 9093342.035454545, + "50.0" : 9337089.965485075, + "90.0" : 9534807.62726406, + "95.0" : 9534807.62726406, + "99.0" : 9534807.62726406, + "99.9" : 9534807.62726406, + "99.99" : 9534807.62726406, + "99.999" : 9534807.62726406, + "99.9999" : 9534807.62726406, + "100.0" : 9534807.62726406 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9301863.918215614, + 9338010.549953315, + 9337089.965485075 + ], + [ + 9534807.62726406, + 9507893.685361216, + 9498141.189933524 + ], + [ + 9150132.32936871, + 9097286.568181818, + 9093342.035454545 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..e7a92860fd --- /dev/null +++ b/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421246302583824, + "scoreError" : 0.025733017281439678, + "scoreConfidence" : [ + 3.395513285302384, + 3.4469793198652634 + ], + "scorePercentiles" : { + "0.0" : 3.417136102719499, + "50.0" : 3.4205731276212257, + "90.0" : 3.4267028523733463, + "95.0" : 3.4267028523733463, + "99.0" : 3.4267028523733463, + "99.9" : 3.4267028523733463, + "99.99" : 3.4267028523733463, + "99.999" : 3.4267028523733463, + "99.9999" : 3.4267028523733463, + "100.0" : 3.4267028523733463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.417136102719499, + 3.4205781955314856 + ], + [ + 3.4205680597109653, + 3.4267028523733463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7273766517476457, + "scoreError" : 0.01233951072091223, + "scoreConfidence" : [ + 1.7150371410267333, + 1.739716162468558 + ], + "scorePercentiles" : { + "0.0" : 1.7248858281468324, + "50.0" : 1.7275784917996955, + "90.0" : 1.7294637952443586, + "95.0" : 1.7294637952443586, + "99.0" : 1.7294637952443586, + "99.9" : 1.7294637952443586, + "99.99" : 1.7294637952443586, + "99.999" : 1.7294637952443586, + "99.9999" : 1.7294637952443586, + "100.0" : 1.7294637952443586 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271929218788888, + 1.7294637952443586 + ], + [ + 1.7248858281468324, + 1.727964061720502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683348226608707, + "scoreError" : 0.0037602099325063747, + "scoreConfidence" : [ + 0.8645746127283643, + 0.8720950325933771 + ], + "scorePercentiles" : { + "0.0" : 0.8678619660868055, + "50.0" : 0.8681469488116227, + "90.0" : 0.8691834269334319, + "95.0" : 0.8691834269334319, + "99.0" : 0.8691834269334319, + "99.9" : 0.8691834269334319, + "99.99" : 0.8691834269334319, + "99.999" : 0.8691834269334319, + "99.9999" : 0.8691834269334319, + "100.0" : 0.8691834269334319 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8678619660868055, + 0.8691834269334319 + ], + [ + 0.8681742930439199, + 0.8681196045793255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.341865851698003, + "scoreError" : 0.10566306717401301, + "scoreConfidence" : [ + 16.23620278452399, + 16.447528918872017 + ], + "scorePercentiles" : { + "0.0" : 16.22303246272705, + "50.0" : 16.362295927808958, + "90.0" : 16.435421636550824, + "95.0" : 16.435421636550824, + "99.0" : 16.435421636550824, + "99.9" : 16.435421636550824, + "99.99" : 16.435421636550824, + "99.999" : 16.435421636550824, + "99.9999" : 16.435421636550824, + "100.0" : 16.435421636550824 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.35107234728992, + 16.362295927808958, + 16.435421636550824 + ], + [ + 16.378925272900975, + 16.374444545565535, + 16.367253221102832 + ], + [ + 16.281324433699563, + 16.22303246272705, + 16.303022817636357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2723.7793282226216, + "scoreError" : 34.82246156603348, + "scoreConfidence" : [ + 2688.9568666565883, + 2758.601789788655 + ], + "scorePercentiles" : { + "0.0" : 2702.465007990573, + "50.0" : 2718.2824063648923, + "90.0" : 2752.109075671271, + "95.0" : 2752.109075671271, + "99.0" : 2752.109075671271, + "99.9" : 2752.109075671271, + "99.99" : 2752.109075671271, + "99.999" : 2752.109075671271, + "99.9999" : 2752.109075671271, + "100.0" : 2752.109075671271 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2751.25254211314, + 2745.482247982233, + 2752.109075671271 + ], + [ + 2703.1017470328934, + 2702.5273149643604, + 2702.465007990573 + ], + [ + 2718.2824063648923, + 2720.945553216911, + 2717.8480586673195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69969.63461352007, + "scoreError" : 1134.2174371916856, + "scoreConfidence" : [ + 68835.41717632838, + 71103.85205071176 + ], + "scorePercentiles" : { + "0.0" : 69043.0075343839, + "50.0" : 70280.94069877287, + "90.0" : 70603.5514723977, + "95.0" : 70603.5514723977, + "99.0" : 70603.5514723977, + "99.9" : 70603.5514723977, + "99.99" : 70603.5514723977, + "99.999" : 70603.5514723977, + "99.9999" : 70603.5514723977, + "100.0" : 70603.5514723977 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70332.83724038013, + 70280.94069877287, + 70280.81855460658 + ], + [ + 70505.14309459185, + 70478.95648670508, + 70603.5514723977 + ], + [ + 69133.77056067433, + 69043.0075343839, + 69067.68587916823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.43725104505324, + "scoreError" : 4.453722696756971, + "scoreConfidence" : [ + 344.98352834829626, + 353.8909737418102 + ], + "scorePercentiles" : { + "0.0" : 345.9068962532555, + "50.0" : 350.13288831364576, + "90.0" : 352.6286330072688, + "95.0" : 352.6286330072688, + "99.0" : 352.6286330072688, + "99.9" : 352.6286330072688, + "99.99" : 352.6286330072688, + "99.999" : 352.6286330072688, + "99.9999" : 352.6286330072688, + "100.0" : 352.6286330072688 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.2672803390126, + 346.2982345844763, + 345.9068962532555 + ], + [ + 350.13288831364576, + 350.55161549887754, + 349.3974695571367 + ], + [ + 351.77503927442575, + 351.97720257737996, + 352.6286330072688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.03740194054079, + "scoreError" : 4.341780378218412, + "scoreConfidence" : [ + 101.69562156232237, + 110.3791823187592 + ], + "scorePercentiles" : { + "0.0" : 102.61722251422017, + "50.0" : 106.99671128488392, + "90.0" : 108.66695605213567, + "95.0" : 108.66695605213567, + "99.0" : 108.66695605213567, + "99.9" : 108.66695605213567, + "99.99" : 108.66695605213567, + "99.999" : 108.66695605213567, + "99.9999" : 108.66695605213567, + "100.0" : 108.66695605213567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.2477674737249, + 106.99671128488392, + 106.51128399292004 + ], + [ + 102.61722251422017, + 102.78829964896627, + 102.76383751861742 + ], + [ + 108.31343183269428, + 108.66695605213567, + 108.4311071467046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06114094780691651, + "scoreError" : 6.931905613668829E-4, + "scoreConfidence" : [ + 0.06044775724554963, + 0.06183413836828339 + ], + "scorePercentiles" : { + "0.0" : 0.06052651748890866, + "50.0" : 0.06120342482496083, + "90.0" : 0.06171405804122439, + "95.0" : 0.06171405804122439, + "99.0" : 0.06171405804122439, + "99.9" : 0.06171405804122439, + "99.99" : 0.06171405804122439, + "99.999" : 0.06171405804122439, + "99.9999" : 0.06171405804122439, + "100.0" : 0.06171405804122439 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060785686946479046, + 0.06061288448576832, + 0.06052651748890866 + ], + [ + 0.06120342482496083, + 0.06117210848687269, + 0.06171405804122439 + ], + [ + 0.06145645012567678, + 0.061479210661568064, + 0.06131818920078977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.558887426986108E-4, + "scoreError" : 1.1643968365827848E-5, + "scoreConfidence" : [ + 3.4424477433278296E-4, + 3.675327110644386E-4 + ], + "scorePercentiles" : { + "0.0" : 3.4989609340297815E-4, + "50.0" : 3.527937491614633E-4, + "90.0" : 3.652218515584872E-4, + "95.0" : 3.652218515584872E-4, + "99.0" : 3.652218515584872E-4, + "99.9" : 3.652218515584872E-4, + "99.99" : 3.652218515584872E-4, + "99.999" : 3.652218515584872E-4, + "99.9999" : 3.652218515584872E-4, + "100.0" : 3.652218515584872E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6513254492621797E-4, + 3.646400005615393E-4, + 3.652218515584872E-4 + ], + [ + 3.519855166866087E-4, + 3.527937491614633E-4, + 3.530516825367461E-4 + ], + [ + 3.4989609340297815E-4, + 3.4996294116570423E-4, + 3.503143042877524E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014459886907853124, + "scoreError" : 1.751271748642364E-5, + "scoreConfidence" : [ + 0.0144423741903667, + 0.014477399625339548 + ], + "scorePercentiles" : { + "0.0" : 0.01444761801971787, + "50.0" : 0.0144585426456789, + "90.0" : 0.014479206546259053, + "95.0" : 0.014479206546259053, + "99.0" : 0.014479206546259053, + "99.9" : 0.014479206546259053, + "99.99" : 0.014479206546259053, + "99.999" : 0.014479206546259053, + "99.9999" : 0.014479206546259053, + "100.0" : 0.014479206546259053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0144585426456789, + 0.01444858810287856, + 0.01445240660900229 + ], + [ + 0.014471111776452883, + 0.014463550117008629, + 0.014462029081353746 + ], + [ + 0.014479206546259053, + 0.01445592927232619, + 0.01444761801971787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9848656516090956, + "scoreError" : 0.01790359690960157, + "scoreConfidence" : [ + 0.966962054699494, + 1.0027692485186972 + ], + "scorePercentiles" : { + "0.0" : 0.9702499647812166, + "50.0" : 0.987872356910007, + "90.0" : 0.999280423361311, + "95.0" : 0.999280423361311, + "99.0" : 0.999280423361311, + "99.9" : 0.999280423361311, + "99.99" : 0.999280423361311, + "99.999" : 0.999280423361311, + "99.9999" : 0.999280423361311, + "100.0" : 0.999280423361311 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9702499647812166, + 0.9752142199902487, + 0.97071049669967 + ], + [ + 0.9902428413704327, + 0.999280423361311, + 0.9967743983853284 + ], + [ + 0.987872356910007, + 0.9849215701201497, + 0.988524592863497 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013021840921867006, + "scoreError" : 1.9749862566405114E-4, + "scoreConfidence" : [ + 0.012824342296202955, + 0.013219339547531057 + ], + "scorePercentiles" : { + "0.0" : 0.012931413966648046, + "50.0" : 0.01299823102761962, + "90.0" : 0.013108989882703329, + "95.0" : 0.013108989882703329, + "99.0" : 0.013108989882703329, + "99.9" : 0.013108989882703329, + "99.99" : 0.013108989882703329, + "99.999" : 0.013108989882703329, + "99.9999" : 0.013108989882703329, + "100.0" : 0.013108989882703329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012931413966648046, + 0.013104382452609151, + 0.013108989882703329 + ], + [ + 0.013004359931858672, + 0.012992102123380572, + 0.012989797174002275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.607023788037479, + "scoreError" : 0.07327604702535247, + "scoreConfidence" : [ + 3.5337477410121267, + 3.6802998350628315 + ], + "scorePercentiles" : { + "0.0" : 3.5660110042765503, + "50.0" : 3.6107640732839337, + "90.0" : 3.6383183745454546, + "95.0" : 3.6383183745454546, + "99.0" : 3.6383183745454546, + "99.9" : 3.6383183745454546, + "99.99" : 3.6383183745454546, + "99.999" : 3.6383183745454546, + "99.9999" : 3.6383183745454546, + "100.0" : 3.6383183745454546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.589340019368723, + 3.6383183745454546, + 3.62694518346628 + ], + [ + 3.5660110042765503, + 3.6080095750360752, + 3.613518571531792 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8059151286489663, + "scoreError" : 0.05752197780891353, + "scoreConfidence" : [ + 2.748393150840053, + 2.8634371064578796 + ], + "scorePercentiles" : { + "0.0" : 2.7601151989514348, + "50.0" : 2.8134174627285513, + "90.0" : 2.844721040386803, + "95.0" : 2.844721040386803, + "99.0" : 2.844721040386803, + "99.9" : 2.844721040386803, + "99.99" : 2.844721040386803, + "99.999" : 2.844721040386803, + "99.9999" : 2.844721040386803, + "100.0" : 2.844721040386803 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.84413932044356, + 2.844721040386803, + 2.8285615141402713 + ], + [ + 2.823798961038961, + 2.8089209247402414, + 2.8134174627285513 + ], + [ + 2.76110121783545, + 2.768460517575422, + 2.7601151989514348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.19079301512188468, + "scoreError" : 0.014774377161596323, + "scoreConfidence" : [ + 0.17601863796028835, + 0.205567392283481 + ], + "scorePercentiles" : { + "0.0" : 0.1786670587268407, + "50.0" : 0.1959693705148053, + "90.0" : 0.19811789208732863, + "95.0" : 0.19811789208732863, + "99.0" : 0.19811789208732863, + "99.9" : 0.19811789208732863, + "99.99" : 0.19811789208732863, + "99.999" : 0.19811789208732863, + "99.9999" : 0.19811789208732863, + "100.0" : 0.19811789208732863 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1972381575511331, + 0.1959693705148053, + 0.19596850636880267 + ], + [ + 0.19811789208732863, + 0.19637531048228732, + 0.1961232889642864 + ], + [ + 0.17988990216042164, + 0.1786670587268407, + 0.17878764924105625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31952785321151783, + "scoreError" : 0.01001783873026382, + "scoreConfidence" : [ + 0.30951001448125404, + 0.3295456919417816 + ], + "scorePercentiles" : { + "0.0" : 0.31381017921360654, + "50.0" : 0.31626577435167613, + "90.0" : 0.32794699619597295, + "95.0" : 0.32794699619597295, + "99.0" : 0.32794699619597295, + "99.9" : 0.32794699619597295, + "99.99" : 0.32794699619597295, + "99.999" : 0.32794699619597295, + "99.9999" : 0.32794699619597295, + "100.0" : 0.32794699619597295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3189972577434687, + 0.31626577435167613, + 0.31608200075858145 + ], + [ + 0.31446555177510144, + 0.3145012565965343, + 0.31381017921360654 + ], + [ + 0.3270510261307519, + 0.32663063613796706, + 0.32794699619597295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16863322355175633, + "scoreError" : 0.0036872991180300486, + "scoreConfidence" : [ + 0.1649459244337263, + 0.17232052266978637 + ], + "scorePercentiles" : { + "0.0" : 0.16568923645099826, + "50.0" : 0.1695653306485799, + "90.0" : 0.1706155962260288, + "95.0" : 0.1706155962260288, + "99.0" : 0.1706155962260288, + "99.9" : 0.1706155962260288, + "99.99" : 0.1706155962260288, + "99.999" : 0.1706155962260288, + "99.9999" : 0.1706155962260288, + "100.0" : 0.1706155962260288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16583173301936854, + 0.16568923645099826, + 0.16583332192428238 + ], + [ + 0.17051351466375664, + 0.1706155962260288, + 0.17053552343110503 + ], + [ + 0.17005843134087237, + 0.16905632426081518, + 0.1695653306485799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39274708507310296, + "scoreError" : 0.00931143808849305, + "scoreConfidence" : [ + 0.3834356469846099, + 0.402058523161596 + ], + "scorePercentiles" : { + "0.0" : 0.38599543554114557, + "50.0" : 0.39204008754116354, + "90.0" : 0.3999358855828834, + "95.0" : 0.3999358855828834, + "99.0" : 0.3999358855828834, + "99.9" : 0.3999358855828834, + "99.99" : 0.3999358855828834, + "99.999" : 0.3999358855828834, + "99.9999" : 0.3999358855828834, + "100.0" : 0.3999358855828834 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39978432941552733, + 0.3999358855828834, + 0.3985876615648292 + ], + [ + 0.38599543554114557, + 0.38682379077054, + 0.3874426654914571 + ], + [ + 0.3922239095544399, + 0.39204008754116354, + 0.3918900001959401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15654185959972333, + "scoreError" : 0.003324708225371492, + "scoreConfidence" : [ + 0.15321715137435185, + 0.1598665678250948 + ], + "scorePercentiles" : { + "0.0" : 0.1537966328934822, + "50.0" : 0.15711305921445404, + "90.0" : 0.15991182664385314, + "95.0" : 0.15991182664385314, + "99.0" : 0.15991182664385314, + "99.9" : 0.15991182664385314, + "99.99" : 0.15991182664385314, + "99.999" : 0.15991182664385314, + "99.9999" : 0.15991182664385314, + "100.0" : 0.15991182664385314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15991182664385314, + 0.1574710881977797, + 0.1574142480166226 + ], + [ + 0.15711305921445404, + 0.1573238880655717, + 0.15707679514325207 + ], + [ + 0.15401986099987677, + 0.1537966328934822, + 0.1547493372226177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04730248592662241, + "scoreError" : 0.001214882838521849, + "scoreConfidence" : [ + 0.04608760308810056, + 0.04851736876514426 + ], + "scorePercentiles" : { + "0.0" : 0.04615450604845223, + "50.0" : 0.04744312130542456, + "90.0" : 0.04815119295365029, + "95.0" : 0.04815119295365029, + "99.0" : 0.04815119295365029, + "99.9" : 0.04815119295365029, + "99.99" : 0.04815119295365029, + "99.999" : 0.04815119295365029, + "99.9999" : 0.04815119295365029, + "100.0" : 0.04815119295365029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04669727998860601, + 0.04615450604845223, + 0.04643505562830264 + ], + [ + 0.04815119295365029, + 0.04791434695676756, + 0.04799755646589584 + ], + [ + 0.04744312130542456, + 0.04768213433305519, + 0.04724717965944741 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9214657.65577173, + "scoreError" : 324186.95975341706, + "scoreConfidence" : [ + 8890470.696018314, + 9538844.615525147 + ], + "scorePercentiles" : { + "0.0" : 9072593.251133272, + "50.0" : 9095946.824545454, + "90.0" : 9473104.0625, + "95.0" : 9473104.0625, + "99.0" : 9473104.0625, + "99.9" : 9473104.0625, + "99.99" : 9473104.0625, + "99.999" : 9473104.0625, + "99.9999" : 9473104.0625, + "100.0" : 9473104.0625 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9100846.449499546, + 9095946.824545454, + 9093544.356363636 + ], + [ + 9471608.28125, + 9470003.732007576, + 9473104.0625 + ], + [ + 9076957.367513612, + 9077314.577132486, + 9072593.251133272 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..3b71828ef6 --- /dev/null +++ b/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4058150783351246, + "scoreError" : 0.026452604872451217, + "scoreConfidence" : [ + 3.3793624734626735, + 3.432267683207576 + ], + "scorePercentiles" : { + "0.0" : 3.4004071794259927, + "50.0" : 3.406246718629739, + "90.0" : 3.4103596966550294, + "95.0" : 3.4103596966550294, + "99.0" : 3.4103596966550294, + "99.9" : 3.4103596966550294, + "99.99" : 3.4103596966550294, + "99.999" : 3.4103596966550294, + "99.9999" : 3.4103596966550294, + "100.0" : 3.4103596966550294 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406232750028374, + 3.4103596966550294 + ], + [ + 3.4004071794259927, + 3.406260687231104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7237606775531091, + "scoreError" : 0.01471389781372789, + "scoreConfidence" : [ + 1.7090467797393813, + 1.738474575366837 + ], + "scorePercentiles" : { + "0.0" : 1.7204652078126201, + "50.0" : 1.7244467307218376, + "90.0" : 1.7256840409561414, + "95.0" : 1.7256840409561414, + "99.0" : 1.7256840409561414, + "99.9" : 1.7256840409561414, + "99.99" : 1.7256840409561414, + "99.999" : 1.7256840409561414, + "99.9999" : 1.7256840409561414, + "100.0" : 1.7256840409561414 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7246099665286807, + 1.7204652078126201 + ], + [ + 1.7256840409561414, + 1.7242834949149946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8663232166649114, + "scoreError" : 0.006686175885856252, + "scoreConfidence" : [ + 0.8596370407790551, + 0.8730093925507677 + ], + "scorePercentiles" : { + "0.0" : 0.8652181246222682, + "50.0" : 0.8663474533310827, + "90.0" : 0.8673798353752123, + "95.0" : 0.8673798353752123, + "99.0" : 0.8673798353752123, + "99.9" : 0.8673798353752123, + "99.99" : 0.8673798353752123, + "99.999" : 0.8673798353752123, + "99.9999" : 0.8673798353752123, + "100.0" : 0.8673798353752123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673798353752123, + 0.8670081057362332 + ], + [ + 0.865686800925932, + 0.8652181246222682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.063146484271993, + "scoreError" : 0.09274549186336652, + "scoreConfidence" : [ + 15.970400992408626, + 16.155891976135358 + ], + "scorePercentiles" : { + "0.0" : 15.988271964073459, + "50.0" : 16.056373512006516, + "90.0" : 16.151461751402852, + "95.0" : 16.151461751402852, + "99.0" : 16.151461751402852, + "99.9" : 16.151461751402852, + "99.99" : 16.151461751402852, + "99.999" : 16.151461751402852, + "99.9999" : 16.151461751402852, + "100.0" : 16.151461751402852 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.056373512006516, + 16.074774345532692, + 16.042297273489353 + ], + [ + 16.021096192431116, + 16.005741694538813, + 15.988271964073459 + ], + [ + 16.107798059757286, + 16.151461751402852, + 16.120503565215856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2631.4019878913555, + "scoreError" : 45.07292665333818, + "scoreConfidence" : [ + 2586.3290612380174, + 2676.4749145446935 + ], + "scorePercentiles" : { + "0.0" : 2598.1253635550966, + "50.0" : 2628.6049799406546, + "90.0" : 2670.80836297728, + "95.0" : 2670.80836297728, + "99.0" : 2670.80836297728, + "99.9" : 2670.80836297728, + "99.99" : 2670.80836297728, + "99.999" : 2670.80836297728, + "99.9999" : 2670.80836297728, + "100.0" : 2670.80836297728 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2628.363719532275, + 2634.404337259284, + 2628.6049799406546 + ], + [ + 2602.783085480924, + 2598.1253635550966, + 2603.021830794198 + ], + [ + 2670.80836297728, + 2657.0851252173516, + 2659.4210862651344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70139.36832003857, + "scoreError" : 1080.653635734936, + "scoreConfidence" : [ + 69058.71468430363, + 71220.02195577351 + ], + "scorePercentiles" : { + "0.0" : 69331.95951448398, + "50.0" : 70230.85843595021, + "90.0" : 70859.36155987332, + "95.0" : 70859.36155987332, + "99.0" : 70859.36155987332, + "99.9" : 70859.36155987332, + "99.99" : 70859.36155987332, + "99.999" : 70859.36155987332, + "99.9999" : 70859.36155987332, + "100.0" : 70859.36155987332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70230.85843595021, + 70306.19172133977, + 70212.58255702884 + ], + [ + 70778.52672038162, + 70820.40440516589, + 70859.36155987332 + ], + [ + 69338.63968738963, + 69375.79027873385, + 69331.95951448398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.39493729944945, + "scoreError" : 5.38735019936265, + "scoreConfidence" : [ + 337.0075871000868, + 347.7822874988121 + ], + "scorePercentiles" : { + "0.0" : 337.26407618201983, + "50.0" : 344.3494882000147, + "90.0" : 345.3180429063327, + "95.0" : 345.3180429063327, + "99.0" : 345.3180429063327, + "99.9" : 345.3180429063327, + "99.99" : 345.3180429063327, + "99.999" : 345.3180429063327, + "99.9999" : 345.3180429063327, + "100.0" : 345.3180429063327 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.09902243857897, + 341.8493886510512, + 344.6666914454054 + ], + [ + 337.26407618201983, + 338.34929933870706, + 339.6471681207518 + ], + [ + 345.0112584121833, + 345.3180429063327, + 344.3494882000147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.47572256516146, + "scoreError" : 3.6800047610781017, + "scoreConfidence" : [ + 101.79571780408337, + 109.15572732623956 + ], + "scorePercentiles" : { + "0.0" : 102.42778427400434, + "50.0" : 106.31243167262423, + "90.0" : 107.74689637106496, + "95.0" : 107.74689637106496, + "99.0" : 107.74689637106496, + "99.9" : 107.74689637106496, + "99.99" : 107.74689637106496, + "99.999" : 107.74689637106496, + "99.9999" : 107.74689637106496, + "100.0" : 107.74689637106496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.283036063032, + 107.37412707665254, + 107.74689637106496 + ], + [ + 106.11333166047164, + 106.31243167262423, + 106.51985552590087 + ], + [ + 102.42778427400434, + 102.67053516833408, + 102.8335052743686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06311428347152606, + "scoreError" : 0.00152037655154138, + "scoreConfidence" : [ + 0.06159390691998468, + 0.06463466002306745 + ], + "scorePercentiles" : { + "0.0" : 0.062365334173173345, + "50.0" : 0.06271125822291064, + "90.0" : 0.06517277432368142, + "95.0" : 0.06517277432368142, + "99.0" : 0.06517277432368142, + "99.9" : 0.06517277432368142, + "99.99" : 0.06517277432368142, + "99.999" : 0.06517277432368142, + "99.9999" : 0.06517277432368142, + "100.0" : 0.06517277432368142 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06270253047289417, + 0.06275191931475904, + 0.06271125822291064 + ], + [ + 0.062365334173173345, + 0.06256196170015765, + 0.06247188241063508 + ], + [ + 0.06369551286950872, + 0.06359537775601443, + 0.06517277432368142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8222663335657985E-4, + "scoreError" : 2.8979427134608703E-6, + "scoreConfidence" : [ + 3.79328690643119E-4, + 3.851245760700407E-4 + ], + "scorePercentiles" : { + "0.0" : 3.790968269142776E-4, + "50.0" : 3.8297120240527854E-4, + "90.0" : 3.8414170084109486E-4, + "95.0" : 3.8414170084109486E-4, + "99.0" : 3.8414170084109486E-4, + "99.9" : 3.8414170084109486E-4, + "99.99" : 3.8414170084109486E-4, + "99.999" : 3.8414170084109486E-4, + "99.9999" : 3.8414170084109486E-4, + "100.0" : 3.8414170084109486E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.790968269142776E-4, + 3.80274158956133E-4, + 3.809465855965468E-4 + ], + [ + 3.8414170084109486E-4, + 3.824734405275988E-4, + 3.8297120240527854E-4 + ], + [ + 3.8380708551126946E-4, + 3.831089772239076E-4, + 3.832197222331119E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014194196126241223, + "scoreError" : 8.231346586656076E-5, + "scoreConfidence" : [ + 0.014111882660374662, + 0.014276509592107784 + ], + "scorePercentiles" : { + "0.0" : 0.014149952206303724, + "50.0" : 0.014168512126664777, + "90.0" : 0.014269262559644757, + "95.0" : 0.014269262559644757, + "99.0" : 0.014269262559644757, + "99.9" : 0.014269262559644757, + "99.99" : 0.014269262559644757, + "99.999" : 0.014269262559644757, + "99.9999" : 0.014269262559644757, + "100.0" : 0.014269262559644757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014149952206303724, + 0.014151971689328413, + 0.01415818948088244 + ], + [ + 0.014168512126664777, + 0.014177382997877677, + 0.014167298605955855 + ], + [ + 0.01425682910980045, + 0.014269262559644757, + 0.014248366359712928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9976094463518428, + "scoreError" : 0.020593406679277775, + "scoreConfidence" : [ + 0.977016039672565, + 1.0182028530311205 + ], + "scorePercentiles" : { + "0.0" : 0.9861651139927029, + "50.0" : 0.9900198547668547, + "90.0" : 1.0160989425988012, + "95.0" : 1.0160989425988012, + "99.0" : 1.0160989425988012, + "99.9" : 1.0160989425988012, + "99.99" : 1.0160989425988012, + "99.999" : 1.0160989425988012, + "99.9999" : 1.0160989425988012, + "100.0" : 1.0160989425988012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9956012011946241, + 0.989060773711799, + 0.9890333369597468 + ], + [ + 1.0111175650591446, + 1.013320355253825, + 1.0160989425988012 + ], + [ + 0.9900198547668547, + 0.9861651139927029, + 0.988067873629088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013280445247701916, + "scoreError" : 1.4610011076541306E-4, + "scoreConfidence" : [ + 0.013134345136936502, + 0.01342654535846733 + ], + "scorePercentiles" : { + "0.0" : 0.013238463008903915, + "50.0" : 0.013259971745728908, + "90.0" : 0.01337144344340329, + "95.0" : 0.01337144344340329, + "99.0" : 0.01337144344340329, + "99.9" : 0.01337144344340329, + "99.99" : 0.01337144344340329, + "99.999" : 0.01337144344340329, + "99.9999" : 0.01337144344340329, + "100.0" : 0.01337144344340329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01325390333619611, + 0.013266040155261706, + 0.013240461469816412 + ], + [ + 0.013312360072630071, + 0.01337144344340329, + 0.013238463008903915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8909240052175984, + "scoreError" : 0.04217030962671556, + "scoreConfidence" : [ + 3.848753695590883, + 3.933094314844314 + ], + "scorePercentiles" : { + "0.0" : 3.8692972204176335, + "50.0" : 3.8944467164305974, + "90.0" : 3.9083230546875, + "95.0" : 3.9083230546875, + "99.0" : 3.9083230546875, + "99.9" : 3.9083230546875, + "99.99" : 3.9083230546875, + "99.999" : 3.9083230546875, + "99.9999" : 3.9083230546875, + "100.0" : 3.9083230546875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9021358884555384, + 3.896992226635514, + 3.876894434883721 + ], + [ + 3.8692972204176335, + 3.891901206225681, + 3.9083230546875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9464650664152674, + "scoreError" : 0.07900631384816474, + "scoreConfidence" : [ + 2.8674587525671025, + 3.0254713802634323 + ], + "scorePercentiles" : { + "0.0" : 2.8846654577444477, + "50.0" : 2.949214712769095, + "90.0" : 3.0071091683704148, + "95.0" : 3.0071091683704148, + "99.0" : 3.0071091683704148, + "99.9" : 3.0071091683704148, + "99.99" : 3.0071091683704148, + "99.999" : 3.0071091683704148, + "99.9999" : 3.0071091683704148, + "100.0" : 3.0071091683704148 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0030966561561563, + 3.0071091683704148, + 2.9888247429766888 + ], + [ + 2.8951925684515194, + 2.898828372173913, + 2.8846654577444477 + ], + [ + 2.9574190813128327, + 2.949214712769095, + 2.933834837782341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17691180678475368, + "scoreError" : 0.0020375512397658494, + "scoreConfidence" : [ + 0.17487425554498784, + 0.17894935802451953 + ], + "scorePercentiles" : { + "0.0" : 0.17535436262252538, + "50.0" : 0.1772252414978645, + "90.0" : 0.1782519088089551, + "95.0" : 0.1782519088089551, + "99.0" : 0.1782519088089551, + "99.9" : 0.1782519088089551, + "99.99" : 0.1782519088089551, + "99.999" : 0.1782519088089551, + "99.9999" : 0.1782519088089551, + "100.0" : 0.1782519088089551 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1772252414978645, + 0.17715724875992064, + 0.17734751363765341 + ], + [ + 0.1782519088089551, + 0.17805553854782422, + 0.17803248316747075 + ], + [ + 0.17542131004964304, + 0.17536065397092604, + 0.17535436262252538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33425991649520753, + "scoreError" : 0.005110301773248331, + "scoreConfidence" : [ + 0.3291496147219592, + 0.33937021826845587 + ], + "scorePercentiles" : { + "0.0" : 0.3314547915879487, + "50.0" : 0.33275132459321866, + "90.0" : 0.338584502843987, + "95.0" : 0.338584502843987, + "99.0" : 0.338584502843987, + "99.9" : 0.338584502843987, + "99.99" : 0.338584502843987, + "99.999" : 0.338584502843987, + "99.9999" : 0.338584502843987, + "100.0" : 0.338584502843987 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.338584502843987, + 0.3381622264980387, + 0.33802885596944293 + ], + [ + 0.332660973854035, + 0.3329679401012186, + 0.33275132459321866 + ], + [ + 0.33184054337005575, + 0.3318880896389221, + 0.3314547915879487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16033987885490203, + "scoreError" : 0.0088942834909611, + "scoreConfidence" : [ + 0.15144559536394092, + 0.16923416234586314 + ], + "scorePercentiles" : { + "0.0" : 0.15388121990890347, + "50.0" : 0.16065122100308443, + "90.0" : 0.166323342004158, + "95.0" : 0.166323342004158, + "99.0" : 0.166323342004158, + "99.9" : 0.166323342004158, + "99.99" : 0.166323342004158, + "99.999" : 0.166323342004158, + "99.9999" : 0.166323342004158, + "100.0" : 0.166323342004158 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1541098480351364, + 0.15412502709450712, + 0.15388121990890347 + ], + [ + 0.16623179028906732, + 0.166323342004158, + 0.16616231505574663 + ], + [ + 0.16094142122119223, + 0.1606327250823227, + 0.16065122100308443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39744495573528943, + "scoreError" : 0.005411637246195458, + "scoreConfidence" : [ + 0.39203331848909395, + 0.4028565929814849 + ], + "scorePercentiles" : { + "0.0" : 0.3940697161603026, + "50.0" : 0.39633976704185164, + "90.0" : 0.402766328567401, + "95.0" : 0.402766328567401, + "99.0" : 0.402766328567401, + "99.9" : 0.402766328567401, + "99.99" : 0.402766328567401, + "99.999" : 0.402766328567401, + "99.9999" : 0.402766328567401, + "100.0" : 0.402766328567401 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.402766328567401, + 0.3995626060012786, + 0.3994064622973081 + ], + [ + 0.3944502245888061, + 0.3940697161603026, + 0.3944233631379664 + ], + [ + 0.4007321151673011, + 0.39633976704185164, + 0.3952540186553891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1578731358594352, + "scoreError" : 0.001429244900730236, + "scoreConfidence" : [ + 0.15644389095870495, + 0.15930238076016542 + ], + "scorePercentiles" : { + "0.0" : 0.15651093406369826, + "50.0" : 0.15804752496325447, + "90.0" : 0.15899748204973288, + "95.0" : 0.15899748204973288, + "99.0" : 0.15899748204973288, + "99.9" : 0.15899748204973288, + "99.99" : 0.15899748204973288, + "99.999" : 0.15899748204973288, + "99.9999" : 0.15899748204973288, + "100.0" : 0.15899748204973288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15817670798139888, + 0.15885249123949613, + 0.15842256156137127 + ], + [ + 0.15899748204973288, + 0.15804752496325447, + 0.15767250805688698 + ], + [ + 0.15651093406369826, + 0.15700596079631984, + 0.157172052022758 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04795383363672171, + "scoreError" : 5.299177065546994E-4, + "scoreConfidence" : [ + 0.04742391593016701, + 0.04848375134327641 + ], + "scorePercentiles" : { + "0.0" : 0.04746444761660663, + "50.0" : 0.04800709954586042, + "90.0" : 0.04852743631837416, + "95.0" : 0.04852743631837416, + "99.0" : 0.04852743631837416, + "99.9" : 0.04852743631837416, + "99.99" : 0.04852743631837416, + "99.999" : 0.04852743631837416, + "99.9999" : 0.04852743631837416, + "100.0" : 0.04852743631837416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047803915034585615, + 0.04798231661172767, + 0.04801513513708167 + ], + [ + 0.0480238308625434, + 0.04800709954586042, + 0.04818131418150632 + ], + [ + 0.04852743631837416, + 0.04746444761660663, + 0.04757900742220954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9466197.532085942, + "scoreError" : 123449.88258417205, + "scoreConfidence" : [ + 9342747.64950177, + 9589647.414670113 + ], + "scorePercentiles" : { + "0.0" : 9371300.07022472, + "50.0" : 9485310.44549763, + "90.0" : 9569203.46462715, + "95.0" : 9569203.46462715, + "99.0" : 9569203.46462715, + "99.9" : 9569203.46462715, + "99.99" : 9569203.46462715, + "99.999" : 9569203.46462715, + "99.9999" : 9569203.46462715, + "100.0" : 9569203.46462715 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9371300.07022472, + 9371471.336142322, + 9412303.88052681 + ], + [ + 9485310.44549763, + 9489903.88235294, + 9427795.868991517 + ], + [ + 9569203.46462715, + 9531204.40952381, + 9537284.43088656 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..e2485a8d00 --- /dev/null +++ b/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.406454124310017, + "scoreError" : 0.018858190056667414, + "scoreConfidence" : [ + 3.3875959342533495, + 3.4253123143666846 + ], + "scorePercentiles" : { + "0.0" : 3.403381953657993, + "50.0" : 3.406207135056139, + "90.0" : 3.410020273469797, + "95.0" : 3.410020273469797, + "99.0" : 3.410020273469797, + "99.9" : 3.410020273469797, + "99.99" : 3.410020273469797, + "99.999" : 3.410020273469797, + "99.9999" : 3.410020273469797, + "100.0" : 3.410020273469797 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403381953657993, + 3.407486239518625 + ], + [ + 3.404928030593653, + 3.410020273469797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7214546892881701, + "scoreError" : 0.004938647272620143, + "scoreConfidence" : [ + 1.71651604201555, + 1.7263933365607902 + ], + "scorePercentiles" : { + "0.0" : 1.7204864939331292, + "50.0" : 1.7215383639780086, + "90.0" : 1.7222555352635336, + "95.0" : 1.7222555352635336, + "99.0" : 1.7222555352635336, + "99.9" : 1.7222555352635336, + "99.99" : 1.7222555352635336, + "99.999" : 1.7222555352635336, + "99.9999" : 1.7222555352635336, + "100.0" : 1.7222555352635336 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7212559407094044, + 1.7204864939331292 + ], + [ + 1.721820787246613, + 1.7222555352635336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8668132758292565, + "scoreError" : 0.008547982869116547, + "scoreConfidence" : [ + 0.85826529296014, + 0.875361258698373 + ], + "scorePercentiles" : { + "0.0" : 0.8658233476391417, + "50.0" : 0.8663400506622068, + "90.0" : 0.8687496543534708, + "95.0" : 0.8687496543534708, + "99.0" : 0.8687496543534708, + "99.9" : 0.8687496543534708, + "99.99" : 0.8687496543534708, + "99.999" : 0.8687496543534708, + "99.9999" : 0.8687496543534708, + "100.0" : 0.8687496543534708 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8658233476391417, + 0.8661502169712597 + ], + [ + 0.8665298843531537, + 0.8687496543534708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.902287964479932, + "scoreError" : 0.11396164265965075, + "scoreConfidence" : [ + 15.78832632182028, + 16.01624960713958 + ], + "scorePercentiles" : { + "0.0" : 15.80922986452746, + "50.0" : 15.920960661790467, + "90.0" : 15.97118075881037, + "95.0" : 15.97118075881037, + "99.0" : 15.97118075881037, + "99.9" : 15.97118075881037, + "99.99" : 15.97118075881037, + "99.999" : 15.97118075881037, + "99.9999" : 15.97118075881037, + "100.0" : 15.97118075881037 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.80922986452746, + 15.824703875481319, + 15.820446126136925 + ], + [ + 15.97118075881037, + 15.956354305652036, + 15.967698445224553 + ], + [ + 15.892708365722527, + 15.920960661790467, + 15.957309276973744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2722.266736729774, + "scoreError" : 105.57849040404129, + "scoreConfidence" : [ + 2616.688246325733, + 2827.845227133815 + ], + "scorePercentiles" : { + "0.0" : 2636.873921470413, + "50.0" : 2760.8545369376047, + "90.0" : 2772.0616199852557, + "95.0" : 2772.0616199852557, + "99.0" : 2772.0616199852557, + "99.9" : 2772.0616199852557, + "99.99" : 2772.0616199852557, + "99.999" : 2772.0616199852557, + "99.9999" : 2772.0616199852557, + "100.0" : 2772.0616199852557 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2636.873921470413, + 2642.265641869794, + 2636.9323275347615 + ], + [ + 2765.7734690069874, + 2760.8545369376047, + 2772.0616199852557 + ], + [ + 2756.996665783692, + 2764.59089597599, + 2764.051552003467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69403.28294159488, + "scoreError" : 1789.5098351053073, + "scoreConfidence" : [ + 67613.77310648958, + 71192.79277670018 + ], + "scorePercentiles" : { + "0.0" : 68148.26382761766, + "50.0" : 69446.16304178763, + "90.0" : 70726.5839917201, + "95.0" : 70726.5839917201, + "99.0" : 70726.5839917201, + "99.9" : 70726.5839917201, + "99.99" : 70726.5839917201, + "99.999" : 70726.5839917201, + "99.9999" : 70726.5839917201, + "100.0" : 70726.5839917201 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69465.85758059853, + 69446.16304178763, + 68976.76943002627 + ], + [ + 68304.00362996088, + 68148.26382761766, + 68275.46953815382 + ], + [ + 70726.5839917201, + 70682.72282740971, + 70603.71260707919 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 335.70220206197814, + "scoreError" : 15.07249257701705, + "scoreConfidence" : [ + 320.6297094849611, + 350.7746946389952 + ], + "scorePercentiles" : { + "0.0" : 327.22299189736594, + "50.0" : 332.9895061687026, + "90.0" : 347.9638389367264, + "95.0" : 347.9638389367264, + "99.0" : 347.9638389367264, + "99.9" : 347.9638389367264, + "99.99" : 347.9638389367264, + "99.999" : 347.9638389367264, + "99.9999" : 347.9638389367264, + "100.0" : 347.9638389367264 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.6069929006137, + 347.9638389367264, + 347.28162821148885 + ], + [ + 333.69198738799884, + 329.7415538701372, + 332.9895061687026 + ], + [ + 327.9921801088395, + 327.22299189736594, + 327.82913907593047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.20240192236119, + "scoreError" : 1.7118826264673341, + "scoreConfidence" : [ + 101.49051929589386, + 104.91428454882852 + ], + "scorePercentiles" : { + "0.0" : 101.86121014089116, + "50.0" : 103.17117821314267, + "90.0" : 104.71944989338951, + "95.0" : 104.71944989338951, + "99.0" : 104.71944989338951, + "99.9" : 104.71944989338951, + "99.99" : 104.71944989338951, + "99.999" : 104.71944989338951, + "99.9999" : 104.71944989338951, + "100.0" : 104.71944989338951 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.14285113507162, + 103.17117821314267, + 103.41142732656795 + ], + [ + 102.26046497937386, + 101.86121014089116, + 101.98306700690846 + ], + [ + 104.00069533126559, + 104.27127327463997, + 104.71944989338951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06280098304120152, + "scoreError" : 3.937176959420289E-4, + "scoreConfidence" : [ + 0.06240726534525949, + 0.06319470073714355 + ], + "scorePercentiles" : { + "0.0" : 0.06254160231025166, + "50.0" : 0.06279172655234555, + "90.0" : 0.06323299884917925, + "95.0" : 0.06323299884917925, + "99.0" : 0.06323299884917925, + "99.9" : 0.06323299884917925, + "99.99" : 0.06323299884917925, + "99.999" : 0.06323299884917925, + "99.9999" : 0.06323299884917925, + "100.0" : 0.06323299884917925 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06254160231025166, + 0.06256130020144389, + 0.06289950600052835 + ], + [ + 0.06279268673904444, + 0.06279172655234555, + 0.0625852339908877 + ], + [ + 0.06323299884917925, + 0.06306160496793356, + 0.06274218775919942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.800666345175178E-4, + "scoreError" : 1.4269686166394017E-5, + "scoreConfidence" : [ + 3.657969483511238E-4, + 3.9433632068391184E-4 + ], + "scorePercentiles" : { + "0.0" : 3.683397532387197E-4, + "50.0" : 3.854766220563561E-4, + "90.0" : 3.8654012930314224E-4, + "95.0" : 3.8654012930314224E-4, + "99.0" : 3.8654012930314224E-4, + "99.9" : 3.8654012930314224E-4, + "99.99" : 3.8654012930314224E-4, + "99.999" : 3.8654012930314224E-4, + "99.9999" : 3.8654012930314224E-4, + "100.0" : 3.8654012930314224E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.859636843167263E-4, + 3.8455198181245204E-4, + 3.854766220563561E-4 + ], + [ + 3.6918629544099645E-4, + 3.6879014199807185E-4, + 3.683397532387197E-4 + ], + [ + 3.8654012930314224E-4, + 3.8552127057348224E-4, + 3.8622983191771357E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01422155170621673, + "scoreError" : 1.222545120086124E-4, + "scoreConfidence" : [ + 0.014099297194208117, + 0.014343806218225343 + ], + "scorePercentiles" : { + "0.0" : 0.014122907994599466, + "50.0" : 0.0142476932221646, + "90.0" : 0.014300206638362132, + "95.0" : 0.014300206638362132, + "99.0" : 0.014300206638362132, + "99.9" : 0.014300206638362132, + "99.99" : 0.014300206638362132, + "99.999" : 0.014300206638362132, + "99.9999" : 0.014300206638362132, + "100.0" : 0.014300206638362132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014255982918679112, + 0.014234981336734506, + 0.0142476932221646 + ], + [ + 0.01412348233458089, + 0.014139337159864547, + 0.014122907994599466 + ], + [ + 0.014300206638362132, + 0.01428836946243565, + 0.014281004288529646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9803882629131864, + "scoreError" : 0.020658568420889065, + "scoreConfidence" : [ + 0.9597296944922973, + 1.0010468313340755 + ], + "scorePercentiles" : { + "0.0" : 0.9592676801918465, + "50.0" : 0.9825492621340145, + "90.0" : 0.9934468711632065, + "95.0" : 0.9934468711632065, + "99.0" : 0.9934468711632065, + "99.9" : 0.9934468711632065, + "99.99" : 0.9934468711632065, + "99.999" : 0.9934468711632065, + "99.9999" : 0.9934468711632065, + "100.0" : 0.9934468711632065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9934468711632065, + 0.9888148557445126, + 0.9868741706137754 + ], + [ + 0.9825492621340145, + 0.9926531631761787, + 0.9820926468624177 + ], + [ + 0.9592676801918465, + 0.9635445763561037, + 0.9742511399766218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013139045113127988, + "scoreError" : 8.038683793137916E-4, + "scoreConfidence" : [ + 0.012335176733814197, + 0.01394291349244178 + ], + "scorePercentiles" : { + "0.0" : 0.012814005489380022, + "50.0" : 0.013142212237676986, + "90.0" : 0.013427707323033625, + "95.0" : 0.013427707323033625, + "99.0" : 0.013427707323033625, + "99.9" : 0.013427707323033625, + "99.99" : 0.013427707323033625, + "99.999" : 0.013427707323033625, + "99.9999" : 0.013427707323033625, + "100.0" : 0.013427707323033625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013369222135175747, + 0.013397351988253483, + 0.013427707323033625 + ], + [ + 0.012814005489380022, + 0.012915202340178225, + 0.012910781402746829 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.840400281821194, + "scoreError" : 0.07710475631475237, + "scoreConfidence" : [ + 3.7632955255064418, + 3.9175050381359466 + ], + "scorePercentiles" : { + "0.0" : 3.7997022750759877, + "50.0" : 3.8363600249409693, + "90.0" : 3.8819478875096975, + "95.0" : 3.8819478875096975, + "99.0" : 3.8819478875096975, + "99.9" : 3.8819478875096975, + "99.99" : 3.8819478875096975, + "99.999" : 3.8819478875096975, + "99.9999" : 3.8819478875096975, + "100.0" : 3.8819478875096975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.834708003834356, + 3.8819478875096975, + 3.8569279853508096 + ], + [ + 3.7997022750759877, + 3.831103493108729, + 3.8380120460475826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.961820214803675, + "scoreError" : 0.04684169380098943, + "scoreConfidence" : [ + 2.914978521002686, + 3.0086619086046644 + ], + "scorePercentiles" : { + "0.0" : 2.9317596974494284, + "50.0" : 2.9511743021540275, + "90.0" : 2.9983626555755394, + "95.0" : 2.9983626555755394, + "99.0" : 2.9983626555755394, + "99.9" : 2.9983626555755394, + "99.99" : 2.9983626555755394, + "99.999" : 2.9983626555755394, + "99.9999" : 2.9983626555755394, + "100.0" : 2.9983626555755394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9317596974494284, + 2.9345205044014087, + 2.936623438344099 + ], + [ + 2.9511743021540275, + 2.947147355922216, + 2.966120393534994 + ], + [ + 2.994105714071856, + 2.9983626555755394, + 2.996567871779509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1757288501955799, + "scoreError" : 0.00513685216512485, + "scoreConfidence" : [ + 0.17059199803045505, + 0.18086570236070476 + ], + "scorePercentiles" : { + "0.0" : 0.17125731531176683, + "50.0" : 0.17670132100576033, + "90.0" : 0.17882767461239962, + "95.0" : 0.17882767461239962, + "99.0" : 0.17882767461239962, + "99.9" : 0.17882767461239962, + "99.99" : 0.17882767461239962, + "99.999" : 0.17882767461239962, + "99.9999" : 0.17882767461239962, + "100.0" : 0.17882767461239962 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1769569301741223, + 0.17670132100576033, + 0.17669613964131106 + ], + [ + 0.17275412223815365, + 0.1714712559499314, + 0.17125731531176683 + ], + [ + 0.17882767461239962, + 0.17852007883180407, + 0.17837481399496993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34706825206330116, + "scoreError" : 0.001580435927439251, + "scoreConfidence" : [ + 0.34548781613586194, + 0.3486486879907404 + ], + "scorePercentiles" : { + "0.0" : 0.3460187886924328, + "50.0" : 0.34727262110636525, + "90.0" : 0.3483138171780851, + "95.0" : 0.3483138171780851, + "99.0" : 0.3483138171780851, + "99.9" : 0.3483138171780851, + "99.99" : 0.3483138171780851, + "99.999" : 0.3483138171780851, + "99.9999" : 0.3483138171780851, + "100.0" : 0.3483138171780851 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34613291267176627, + 0.3461400510193486, + 0.3460187886924328 + ], + [ + 0.34794822761908073, + 0.34727262110636525, + 0.3476111665334214 + ], + [ + 0.3483138171780851, + 0.34620084740012463, + 0.34797583634908485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15901443524647912, + "scoreError" : 0.006788045196272182, + "scoreConfidence" : [ + 0.15222639005020694, + 0.1658024804427513 + ], + "scorePercentiles" : { + "0.0" : 0.15484666245490158, + "50.0" : 0.15790013287121835, + "90.0" : 0.1641328795627626, + "95.0" : 0.1641328795627626, + "99.0" : 0.1641328795627626, + "99.9" : 0.1641328795627626, + "99.99" : 0.1641328795627626, + "99.999" : 0.1641328795627626, + "99.9999" : 0.1641328795627626, + "100.0" : 0.1641328795627626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15799359083655898, + 0.1578523076935219, + 0.15790013287121835 + ], + [ + 0.1641328795627626, + 0.16412531186607582, + 0.16412967892136748 + ], + [ + 0.15502788157690758, + 0.15512147143499774, + 0.15484666245490158 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39415298606633214, + "scoreError" : 0.0073863990684665615, + "scoreConfidence" : [ + 0.3867665869978656, + 0.4015393851347987 + ], + "scorePercentiles" : { + "0.0" : 0.387162633255904, + "50.0" : 0.3951555636780337, + "90.0" : 0.4017765369224588, + "95.0" : 0.4017765369224588, + "99.0" : 0.4017765369224588, + "99.9" : 0.4017765369224588, + "99.99" : 0.4017765369224588, + "99.999" : 0.4017765369224588, + "99.9999" : 0.4017765369224588, + "100.0" : 0.4017765369224588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3951555636780337, + 0.387162633255904, + 0.38800434348568325 + ], + [ + 0.39662847281164476, + 0.3953628665691468, + 0.3951758637082115 + ], + [ + 0.4017765369224588, + 0.39381700567085415, + 0.39429358849505186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15758703083047398, + "scoreError" : 0.005201091754230971, + "scoreConfidence" : [ + 0.152385939076243, + 0.16278812258470496 + ], + "scorePercentiles" : { + "0.0" : 0.15472419694273823, + "50.0" : 0.15595056361112844, + "90.0" : 0.1617285585367037, + "95.0" : 0.1617285585367037, + "99.0" : 0.1617285585367037, + "99.9" : 0.1617285585367037, + "99.99" : 0.1617285585367037, + "99.999" : 0.1617285585367037, + "99.9999" : 0.1617285585367037, + "100.0" : 0.1617285585367037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15483804412789348, + 0.1558617654650021, + 0.15472419694273823 + ], + [ + 0.16167252702287607, + 0.1617285585367037, + 0.16159403569524117 + ], + [ + 0.15595056361112844, + 0.15604103013091578, + 0.15587255594176694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048128917200255104, + "scoreError" : 0.001081398938893643, + "scoreConfidence" : [ + 0.047047518261361464, + 0.049210316139148745 + ], + "scorePercentiles" : { + "0.0" : 0.04691966639610009, + "50.0" : 0.048270016783156025, + "90.0" : 0.049073969491159455, + "95.0" : 0.049073969491159455, + "99.0" : 0.049073969491159455, + "99.9" : 0.049073969491159455, + "99.99" : 0.049073969491159455, + "99.999" : 0.049073969491159455, + "99.9999" : 0.049073969491159455, + "100.0" : 0.049073969491159455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047598662782672434, + 0.04691966639610009, + 0.04762934602158527 + ], + [ + 0.049073969491159455, + 0.048270016783156025, + 0.048181095204598345 + ], + [ + 0.04849201205981903, + 0.04850977500036382, + 0.04848571106284152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9451596.3953978, + "scoreError" : 178389.00774169658, + "scoreConfidence" : [ + 9273207.387656102, + 9629985.403139496 + ], + "scorePercentiles" : { + "0.0" : 9312494.095903166, + "50.0" : 9479242.483412322, + "90.0" : 9571400.162679426, + "95.0" : 9571400.162679426, + "99.0" : 9571400.162679426, + "99.9" : 9571400.162679426, + "99.99" : 9571400.162679426, + "99.999" : 9571400.162679426, + "99.9999" : 9571400.162679426, + "100.0" : 9571400.162679426 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9479242.483412322, + 9467233.308420056, + 9499272.824311491 + ], + [ + 9528669.641904762, + 9571400.162679426, + 9564784.041108986 + ], + [ + 9312494.095903166, + 9328251.902143523, + 9313019.098696461 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..b5cdb60176 --- /dev/null +++ b/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422918226767772, + "scoreError" : 0.018333149688673566, + "scoreConfidence" : [ + 3.404585077079098, + 3.4412513764564454 + ], + "scorePercentiles" : { + "0.0" : 3.419464583762408, + "50.0" : 3.422947389990944, + "90.0" : 3.426313543326791, + "95.0" : 3.426313543326791, + "99.0" : 3.426313543326791, + "99.9" : 3.426313543326791, + "99.99" : 3.426313543326791, + "99.999" : 3.426313543326791, + "99.9999" : 3.426313543326791, + "100.0" : 3.426313543326791 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.419464583762408, + 3.426313543326791 + ], + [ + 3.4223602521562295, + 3.4235345278256584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7248233246272615, + "scoreError" : 0.023643110989649992, + "scoreConfidence" : [ + 1.7011802136376115, + 1.7484664356169115 + ], + "scorePercentiles" : { + "0.0" : 1.7201482102136298, + "50.0" : 1.7253085313214631, + "90.0" : 1.7285280256524898, + "95.0" : 1.7285280256524898, + "99.0" : 1.7285280256524898, + "99.9" : 1.7285280256524898, + "99.99" : 1.7285280256524898, + "99.999" : 1.7285280256524898, + "99.9999" : 1.7285280256524898, + "100.0" : 1.7285280256524898 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7201482102136298, + 1.723875345355189 + ], + [ + 1.7267417172877373, + 1.7285280256524898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691911317000947, + "scoreError" : 0.002655907669193238, + "scoreConfidence" : [ + 0.8665352240309014, + 0.8718470393692879 + ], + "scorePercentiles" : { + "0.0" : 0.8686357338501872, + "50.0" : 0.869250861572249, + "90.0" : 0.8696270698056936, + "95.0" : 0.8696270698056936, + "99.0" : 0.8696270698056936, + "99.9" : 0.8696270698056936, + "99.99" : 0.8696270698056936, + "99.999" : 0.8696270698056936, + "99.9999" : 0.8696270698056936, + "100.0" : 0.8696270698056936 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686357338501872, + 0.8696270698056936 + ], + [ + 0.869274635006496, + 0.869227088138002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.269713337427504, + "scoreError" : 0.14438877525995078, + "scoreConfidence" : [ + 16.125324562167553, + 16.414102112687456 + ], + "scorePercentiles" : { + "0.0" : 16.117858602831706, + "50.0" : 16.322456788864862, + "90.0" : 16.348479604511603, + "95.0" : 16.348479604511603, + "99.0" : 16.348479604511603, + "99.9" : 16.348479604511603, + "99.99" : 16.348479604511603, + "99.999" : 16.348479604511603, + "99.9999" : 16.348479604511603, + "100.0" : 16.348479604511603 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.322854104364346, + 16.335474903690017, + 16.348479604511603 + ], + [ + 16.28551807447759, + 16.322456788864862, + 16.331614273616157 + ], + [ + 16.192817675350103, + 16.117858602831706, + 16.170346009141166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2705.9594158818363, + "scoreError" : 192.99783864660245, + "scoreConfidence" : [ + 2512.961577235234, + 2898.9572545284386 + ], + "scorePercentiles" : { + "0.0" : 2577.247939215522, + "50.0" : 2692.3021417137543, + "90.0" : 2850.8813638762285, + "95.0" : 2850.8813638762285, + "99.0" : 2850.8813638762285, + "99.9" : 2850.8813638762285, + "99.99" : 2850.8813638762285, + "99.999" : 2850.8813638762285, + "99.9999" : 2850.8813638762285, + "100.0" : 2850.8813638762285 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2692.3021417137543, + 2695.2601082938186, + 2691.307173319121 + ], + [ + 2850.8813638762285, + 2843.8230950227876, + 2838.84709036833 + ], + [ + 2577.892907020788, + 2577.247939215522, + 2586.0729241061736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70330.90293571194, + "scoreError" : 1814.8467265792697, + "scoreConfidence" : [ + 68516.05620913267, + 72145.74966229121 + ], + "scorePercentiles" : { + "0.0" : 69039.15347272958, + "50.0" : 70411.6312894578, + "90.0" : 71564.1567915699, + "95.0" : 71564.1567915699, + "99.0" : 71564.1567915699, + "99.9" : 71564.1567915699, + "99.99" : 71564.1567915699, + "99.999" : 71564.1567915699, + "99.9999" : 71564.1567915699, + "100.0" : 71564.1567915699 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69039.15347272958, + 69066.18990884532, + 69044.98069845003 + ], + [ + 71510.90218062312, + 71564.1567915699, + 71545.78744063577 + ], + [ + 70349.9073863051, + 70411.6312894578, + 70445.41725279074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.8932895289724, + "scoreError" : 6.778917399249856, + "scoreConfidence" : [ + 351.11437212972254, + 364.67220692822224 + ], + "scorePercentiles" : { + "0.0" : 354.3820744687182, + "50.0" : 355.97315553038175, + "90.0" : 363.8908628823784, + "95.0" : 363.8908628823784, + "99.0" : 363.8908628823784, + "99.9" : 363.8908628823784, + "99.99" : 363.8908628823784, + "99.999" : 363.8908628823784, + "99.9999" : 363.8908628823784, + "100.0" : 363.8908628823784 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.9125115105426, + 354.68922837188575, + 354.3820744687182 + ], + [ + 355.97315553038175, + 356.6277140587543, + 354.96717029330796 + ], + [ + 363.4166848352348, + 363.8908628823784, + 362.1802038095481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.31292831463014, + "scoreError" : 1.96493773221573, + "scoreConfidence" : [ + 107.34799058241441, + 111.27786604684587 + ], + "scorePercentiles" : { + "0.0" : 107.69539614027994, + "50.0" : 109.76809662718475, + "90.0" : 110.36454561045173, + "95.0" : 110.36454561045173, + "99.0" : 110.36454561045173, + "99.9" : 110.36454561045173, + "99.99" : 110.36454561045173, + "99.999" : 110.36454561045173, + "99.9999" : 110.36454561045173, + "100.0" : 110.36454561045173 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.69539614027994, + 107.86202400330613, + 107.81319167511278 + ], + [ + 110.34968849825734, + 110.36069523704057, + 110.36454561045173 + ], + [ + 109.75382660904711, + 109.76809662718475, + 109.84889043099095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06115231415443667, + "scoreError" : 2.7757492177696216E-4, + "scoreConfidence" : [ + 0.06087473923265971, + 0.061429889076213634 + ], + "scorePercentiles" : { + "0.0" : 0.06093074006080805, + "50.0" : 0.061178577077903806, + "90.0" : 0.061452698443424346, + "95.0" : 0.061452698443424346, + "99.0" : 0.061452698443424346, + "99.9" : 0.061452698443424346, + "99.99" : 0.061452698443424346, + "99.999" : 0.061452698443424346, + "99.9999" : 0.061452698443424346, + "100.0" : 0.061452698443424346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06108022874890821, + 0.06096968443097709, + 0.06093074006080805 + ], + [ + 0.061178577077903806, + 0.0612031103474445, + 0.061452698443424346 + ], + [ + 0.06119962405600911, + 0.0613076285420013, + 0.061048535682453636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6351884197456766E-4, + "scoreError" : 1.1708507477707113E-5, + "scoreConfidence" : [ + 3.5181033449686053E-4, + 3.752273494522748E-4 + ], + "scorePercentiles" : { + "0.0" : 3.542770620589208E-4, + "50.0" : 3.669356435358375E-4, + "90.0" : 3.6963335624417025E-4, + "95.0" : 3.6963335624417025E-4, + "99.0" : 3.6963335624417025E-4, + "99.9" : 3.6963335624417025E-4, + "99.99" : 3.6963335624417025E-4, + "99.999" : 3.6963335624417025E-4, + "99.9999" : 3.6963335624417025E-4, + "100.0" : 3.6963335624417025E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.693484092028624E-4, + 3.6963335624417025E-4, + 3.6946049352507286E-4 + ], + [ + 3.542770620589208E-4, + 3.5438673282758176E-4, + 3.5446827063455045E-4 + ], + [ + 3.660474383407284E-4, + 3.669356435358375E-4, + 3.6711217140138446E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014040306639199382, + "scoreError" : 2.189874459994869E-4, + "scoreConfidence" : [ + 0.013821319193199894, + 0.01425929408519887 + ], + "scorePercentiles" : { + "0.0" : 0.013873872933511657, + "50.0" : 0.014066023999178553, + "90.0" : 0.014185114222814207, + "95.0" : 0.014185114222814207, + "99.0" : 0.014185114222814207, + "99.9" : 0.014185114222814207, + "99.99" : 0.014185114222814207, + "99.999" : 0.014185114222814207, + "99.9999" : 0.014185114222814207, + "100.0" : 0.014185114222814207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013873872933511657, + 0.013874219684504072, + 0.013887816720458182 + ], + [ + 0.014062647974788746, + 0.014070673822931002, + 0.014066023999178553 + ], + [ + 0.014172631385231997, + 0.014185114222814207, + 0.014169759009376014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9742580802486356, + "scoreError" : 0.025198240489418596, + "scoreConfidence" : [ + 0.949059839759217, + 0.9994563207380541 + ], + "scorePercentiles" : { + "0.0" : 0.9591472857964899, + "50.0" : 0.9688832565394303, + "90.0" : 0.9961906805458711, + "95.0" : 0.9961906805458711, + "99.0" : 0.9961906805458711, + "99.9" : 0.9961906805458711, + "99.99" : 0.9961906805458711, + "99.999" : 0.9961906805458711, + "99.9999" : 0.9961906805458711, + "100.0" : 0.9961906805458711 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9896558599703117, + 0.9947686386153387, + 0.9961906805458711 + ], + [ + 0.9688832565394303, + 0.9673317737473399, + 0.9690521334302326 + ], + [ + 0.9591472857964899, + 0.9638375641865844, + 0.9594555294061211 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01304551071126541, + "scoreError" : 4.5378102190033647E-4, + "scoreConfidence" : [ + 0.012591729689365073, + 0.013499291733165745 + ], + "scorePercentiles" : { + "0.0" : 0.012846069177073887, + "50.0" : 0.0130605302303139, + "90.0" : 0.013192607064739887, + "95.0" : 0.013192607064739887, + "99.0" : 0.013192607064739887, + "99.9" : 0.013192607064739887, + "99.99" : 0.013192607064739887, + "99.999" : 0.013192607064739887, + "99.9999" : 0.013192607064739887, + "100.0" : 0.013192607064739887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012846069177073887, + 0.012922527678061463, + 0.012932401976023898 + ], + [ + 0.013188658484603901, + 0.013192607064739887, + 0.013190799887089414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6124515862232065, + "scoreError" : 0.3329195335223676, + "scoreConfidence" : [ + 3.279532052700839, + 3.945371119745574 + ], + "scorePercentiles" : { + "0.0" : 3.4783565465924897, + "50.0" : 3.6183021933966506, + "90.0" : 3.7219963913690477, + "95.0" : 3.7219963913690477, + "99.0" : 3.7219963913690477, + "99.9" : 3.7219963913690477, + "99.99" : 3.7219963913690477, + "99.999" : 3.7219963913690477, + "99.9999" : 3.7219963913690477, + "100.0" : 3.7219963913690477 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4783565465924897, + 3.51792920745429, + 3.518397646272855 + ], + [ + 3.7198229851301114, + 3.7219963913690477, + 3.718206740520446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.820564883208848, + "scoreError" : 0.07635244025538424, + "scoreConfidence" : [ + 2.744212442953464, + 2.896917323464232 + ], + "scorePercentiles" : { + "0.0" : 2.7563458605676496, + "50.0" : 2.8488649763600113, + "90.0" : 2.856326268989149, + "95.0" : 2.856326268989149, + "99.0" : 2.856326268989149, + "99.9" : 2.856326268989149, + "99.99" : 2.856326268989149, + "99.999" : 2.856326268989149, + "99.9999" : 2.856326268989149, + "100.0" : 2.856326268989149 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8540345976027397, + 2.853888280171184, + 2.8488649763600113 + ], + [ + 2.856326268989149, + 2.8520386968919302, + 2.8387283894408175 + ], + [ + 2.763057338121547, + 2.7617995407346037, + 2.7563458605676496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18422658410785747, + "scoreError" : 0.025242427508284763, + "scoreConfidence" : [ + 0.1589841565995727, + 0.20946901161614223 + ], + "scorePercentiles" : { + "0.0" : 0.1730692323907099, + "50.0" : 0.1752739016387696, + "90.0" : 0.20461711738587768, + "95.0" : 0.20461711738587768, + "99.0" : 0.20461711738587768, + "99.9" : 0.20461711738587768, + "99.99" : 0.20461711738587768, + "99.999" : 0.20461711738587768, + "99.9999" : 0.20461711738587768, + "100.0" : 0.20461711738587768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1732926723621051, + 0.1730692323907099, + 0.17307003277894117 + ], + [ + 0.1751855069546633, + 0.17550739095105214, + 0.1752739016387696 + ], + [ + 0.20461711738587768, + 0.2041418652295507, + 0.20388153727904748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3313797971859773, + "scoreError" : 0.020569230998265856, + "scoreConfidence" : [ + 0.31081056618771147, + 0.3519490281842432 + ], + "scorePercentiles" : { + "0.0" : 0.3170424942616194, + "50.0" : 0.33000916014916015, + "90.0" : 0.3460290239100346, + "95.0" : 0.3460290239100346, + "99.0" : 0.3460290239100346, + "99.9" : 0.3460290239100346, + "99.99" : 0.3460290239100346, + "99.999" : 0.3460290239100346, + "99.9999" : 0.3460290239100346, + "100.0" : 0.3460290239100346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33180670217989977, + 0.3296485476661392, + 0.33000916014916015 + ], + [ + 0.31890494929523566, + 0.3172751786541451, + 0.3170424942616194 + ], + [ + 0.3460290239100346, + 0.34592098360372203, + 0.3457811349538398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1549902340662419, + "scoreError" : 0.003544496616706501, + "scoreConfidence" : [ + 0.1514457374495354, + 0.1585347306829484 + ], + "scorePercentiles" : { + "0.0" : 0.15323426649913424, + "50.0" : 0.15390085390439842, + "90.0" : 0.15797860720999668, + "95.0" : 0.15797860720999668, + "99.0" : 0.15797860720999668, + "99.9" : 0.15797860720999668, + "99.99" : 0.15797860720999668, + "99.999" : 0.15797860720999668, + "99.9999" : 0.15797860720999668, + "100.0" : 0.15797860720999668 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15344080177374067, + 0.1533190904407819, + 0.15323426649913424 + ], + [ + 0.15797860720999668, + 0.15759360946167422, + 0.1577704870314275 + ], + [ + 0.15390085390439842, + 0.15396346709878064, + 0.15371092317624274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.397097650470543, + "scoreError" : 0.024930142478511705, + "scoreConfidence" : [ + 0.3721675079920313, + 0.42202779294905474 + ], + "scorePercentiles" : { + "0.0" : 0.38140312475209764, + "50.0" : 0.39157604408943186, + "90.0" : 0.4164570443509766, + "95.0" : 0.4164570443509766, + "99.0" : 0.4164570443509766, + "99.9" : 0.4164570443509766, + "99.99" : 0.4164570443509766, + "99.999" : 0.4164570443509766, + "99.9999" : 0.4164570443509766, + "100.0" : 0.4164570443509766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4161600940491053, + 0.41621297852416034, + 0.4164570443509766 + ], + [ + 0.39187239076766334, + 0.39157604408943186, + 0.3909906981272237 + ], + [ + 0.3859372891710404, + 0.38326919040318874, + 0.38140312475209764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15905829126011567, + "scoreError" : 0.00219234128808664, + "scoreConfidence" : [ + 0.15686594997202902, + 0.16125063254820232 + ], + "scorePercentiles" : { + "0.0" : 0.1576184559467894, + "50.0" : 0.15896080007947863, + "90.0" : 0.1610654456255637, + "95.0" : 0.1610654456255637, + "99.0" : 0.1610654456255637, + "99.9" : 0.1610654456255637, + "99.99" : 0.1610654456255637, + "99.999" : 0.1610654456255637, + "99.9999" : 0.1610654456255637, + "100.0" : 0.1610654456255637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15821193833059105, + 0.1578200735433369, + 0.1576240174644957 + ], + [ + 0.16021311116985484, + 0.15896080007947863, + 0.1576184559467894 + ], + [ + 0.1610654456255637, + 0.16019364413866016, + 0.15981713504227063 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047881073265585855, + "scoreError" : 7.391661947761921E-4, + "scoreConfidence" : [ + 0.04714190707080966, + 0.04862023946036205 + ], + "scorePercentiles" : { + "0.0" : 0.04747618604695326, + "50.0" : 0.04758646360404859, + "90.0" : 0.04868108797986584, + "95.0" : 0.04868108797986584, + "99.0" : 0.04868108797986584, + "99.9" : 0.04868108797986584, + "99.99" : 0.04868108797986584, + "99.999" : 0.04868108797986584, + "99.9999" : 0.04868108797986584, + "100.0" : 0.04868108797986584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047553612824073194, + 0.04753731592858094, + 0.04747618604695326 + ], + [ + 0.04868108797986584, + 0.04828521061678561, + 0.048222274048105855 + ], + [ + 0.04805520271315781, + 0.04758646360404859, + 0.04753230562870153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9271893.135588221, + "scoreError" : 226020.91233735438, + "scoreConfidence" : [ + 9045872.223250866, + 9497914.047925577 + ], + "scorePercentiles" : { + "0.0" : 9089321.821071753, + "50.0" : 9271490.395736793, + "90.0" : 9463506.104068117, + "95.0" : 9463506.104068117, + "99.0" : 9463506.104068117, + "99.9" : 9463506.104068117, + "99.99" : 9463506.104068117, + "99.999" : 9463506.104068117, + "99.9999" : 9463506.104068117, + "100.0" : 9463506.104068117 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9463506.104068117, + 9412204.553151459, + 9399670.632518796 + ], + [ + 9271490.395736793, + 9270540.29935125, + 9273005.521779425 + ], + [ + 9148431.066727605, + 9118867.825888788, + 9089321.821071753 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..fba2b47404 --- /dev/null +++ b/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4255027365084705, + "scoreError" : 0.015268297622684238, + "scoreConfidence" : [ + 3.4102344388857864, + 3.4407710341311546 + ], + "scorePercentiles" : { + "0.0" : 3.423680586656175, + "50.0" : 3.4247710163271283, + "90.0" : 3.42878832672345, + "95.0" : 3.42878832672345, + "99.0" : 3.42878832672345, + "99.9" : 3.42878832672345, + "99.99" : 3.42878832672345, + "99.999" : 3.42878832672345, + "99.9999" : 3.42878832672345, + "100.0" : 3.42878832672345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4256547896178025, + 3.42878832672345 + ], + [ + 3.423680586656175, + 3.423887243036454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72787103241473, + "scoreError" : 0.015311326619137618, + "scoreConfidence" : [ + 1.7125597057955924, + 1.7431823590338675 + ], + "scorePercentiles" : { + "0.0" : 1.7258301618950143, + "50.0" : 1.72761015824926, + "90.0" : 1.7304336512653857, + "95.0" : 1.7304336512653857, + "99.0" : 1.7304336512653857, + "99.9" : 1.7304336512653857, + "99.99" : 1.7304336512653857, + "99.999" : 1.7304336512653857, + "99.9999" : 1.7304336512653857, + "100.0" : 1.7304336512653857 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.729338528385661, + 1.7304336512653857 + ], + [ + 1.7258301618950143, + 1.725881788112859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675124306454595, + "scoreError" : 0.005320038114788069, + "scoreConfidence" : [ + 0.8621923925306714, + 0.8728324687602476 + ], + "scorePercentiles" : { + "0.0" : 0.8666706939441462, + "50.0" : 0.8675694953743074, + "90.0" : 0.8682400378890769, + "95.0" : 0.8682400378890769, + "99.0" : 0.8682400378890769, + "99.9" : 0.8682400378890769, + "99.99" : 0.8682400378890769, + "99.999" : 0.8682400378890769, + "99.9999" : 0.8682400378890769, + "100.0" : 0.8682400378890769 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8681975610402533, + 0.8669414297083615 + ], + [ + 0.8666706939441462, + 0.8682400378890769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.08387646024225, + "scoreError" : 0.28169323607593694, + "scoreConfidence" : [ + 15.802183224166315, + 16.36556969631819 + ], + "scorePercentiles" : { + "0.0" : 15.857648305820325, + "50.0" : 16.169853409735502, + "90.0" : 16.220922945381865, + "95.0" : 16.220922945381865, + "99.0" : 16.220922945381865, + "99.9" : 16.220922945381865, + "99.99" : 16.220922945381865, + "99.999" : 16.220922945381865, + "99.9999" : 16.220922945381865, + "100.0" : 16.220922945381865 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.86268753833565, + 15.857648305820325, + 15.86481780525936 + ], + [ + 16.220922945381865, + 16.214595465849875, + 16.210400315425794 + ], + [ + 16.169747624196056, + 16.184214732175867, + 16.169853409735502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2714.00827636627, + "scoreError" : 55.61639089855765, + "scoreConfidence" : [ + 2658.391885467712, + 2769.6246672648276 + ], + "scorePercentiles" : { + "0.0" : 2667.708875949212, + "50.0" : 2717.824085599261, + "90.0" : 2754.3955765089468, + "95.0" : 2754.3955765089468, + "99.0" : 2754.3955765089468, + "99.9" : 2754.3955765089468, + "99.99" : 2754.3955765089468, + "99.999" : 2754.3955765089468, + "99.9999" : 2754.3955765089468, + "100.0" : 2754.3955765089468 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2710.520618895013, + 2717.824085599261, + 2719.7067761834132 + ], + [ + 2683.136600437227, + 2674.865175131134, + 2667.708875949212 + ], + [ + 2749.5732786152225, + 2748.3434999769956, + 2754.3955765089468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70426.43446172662, + "scoreError" : 903.3310026109199, + "scoreConfidence" : [ + 69523.1034591157, + 71329.76546433754 + ], + "scorePercentiles" : { + "0.0" : 69722.5379226521, + "50.0" : 70645.27630459232, + "90.0" : 70965.6169677315, + "95.0" : 70965.6169677315, + "99.0" : 70965.6169677315, + "99.9" : 70965.6169677315, + "99.99" : 70965.6169677315, + "99.999" : 70965.6169677315, + "99.9999" : 70965.6169677315, + "100.0" : 70965.6169677315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69722.5379226521, + 69731.8772056881, + 69731.03011934547 + ], + [ + 70564.19048055039, + 70645.27630459232, + 70728.42014552624 + ], + [ + 70965.6169677315, + 70872.53267611962, + 70876.42833333378 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.15213022456425, + "scoreError" : 5.601239292143671, + "scoreConfidence" : [ + 341.5508909324206, + 352.7533695167079 + ], + "scorePercentiles" : { + "0.0" : 342.43002863553767, + "50.0" : 348.0046593211147, + "90.0" : 350.7291616178739, + "95.0" : 350.7291616178739, + "99.0" : 350.7291616178739, + "99.9" : 350.7291616178739, + "99.99" : 350.7291616178739, + "99.999" : 350.7291616178739, + "99.9999" : 350.7291616178739, + "100.0" : 350.7291616178739 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.6492554423494, + 350.7291616178739, + 349.088136414228 + ], + [ + 348.0046593211147, + 349.4400643546579, + 347.65661947655303 + ], + [ + 342.93217357156874, + 343.43907318719454, + 342.43002863553767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.225095253805, + "scoreError" : 2.632840318025602, + "scoreConfidence" : [ + 100.5922549357794, + 105.8579355718306 + ], + "scorePercentiles" : { + "0.0" : 101.82354108992503, + "50.0" : 102.27286704928098, + "90.0" : 105.37862607434907, + "95.0" : 105.37862607434907, + "99.0" : 105.37862607434907, + "99.9" : 105.37862607434907, + "99.99" : 105.37862607434907, + "99.999" : 105.37862607434907, + "99.9999" : 105.37862607434907, + "100.0" : 105.37862607434907 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.82354108992503, + 102.14092633561962, + 102.25810535530064 + ], + [ + 105.21616990044764, + 105.31650086545383, + 105.37862607434907 + ], + [ + 102.26552728272861, + 102.35359333113948, + 102.27286704928098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06230045880514185, + "scoreError" : 7.518182294873389E-4, + "scoreConfidence" : [ + 0.06154864057565451, + 0.06305227703462919 + ], + "scorePercentiles" : { + "0.0" : 0.06176947449890361, + "50.0" : 0.06223176112687626, + "90.0" : 0.06286822427938264, + "95.0" : 0.06286822427938264, + "99.0" : 0.06286822427938264, + "99.9" : 0.06286822427938264, + "99.99" : 0.06286822427938264, + "99.999" : 0.06286822427938264, + "99.9999" : 0.06286822427938264, + "100.0" : 0.06286822427938264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06281667806351919, + 0.06284513343681657, + 0.06286822427938264 + ], + [ + 0.06177516175562145, + 0.0619247579401693, + 0.06176947449890361 + ], + [ + 0.06223176112687626, + 0.062192614485705226, + 0.06228032365928242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.784185944753912E-4, + "scoreError" : 2.9961168533700172E-5, + "scoreConfidence" : [ + 3.4845742594169103E-4, + 4.083797630090914E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5462576541199346E-4, + "50.0" : 3.8776968823675393E-4, + "90.0" : 3.932338892053513E-4, + "95.0" : 3.932338892053513E-4, + "99.0" : 3.932338892053513E-4, + "99.9" : 3.932338892053513E-4, + "99.99" : 3.932338892053513E-4, + "99.999" : 3.932338892053513E-4, + "99.9999" : 3.932338892053513E-4, + "100.0" : 3.932338892053513E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.932338892053513E-4, + 3.921218514055642E-4, + 3.9255882731871754E-4 + ], + [ + 3.8776968823675393E-4, + 3.8844496690490987E-4, + 3.871850316723476E-4 + ], + [ + 3.548904501436881E-4, + 3.549368799791953E-4, + 3.5462576541199346E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014112566362291336, + "scoreError" : 1.1457189642839478E-4, + "scoreConfidence" : [ + 0.013997994465862942, + 0.01422713825871973 + ], + "scorePercentiles" : { + "0.0" : 0.014037298399628298, + "50.0" : 0.014102882472316397, + "90.0" : 0.014198602709345268, + "95.0" : 0.014198602709345268, + "99.0" : 0.014198602709345268, + "99.9" : 0.014198602709345268, + "99.99" : 0.014198602709345268, + "99.999" : 0.014198602709345268, + "99.9999" : 0.014198602709345268, + "100.0" : 0.014198602709345268 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01419368768628965, + 0.01419327041108878, + 0.014198602709345268 + ], + [ + 0.014111649840610857, + 0.014102882472316397, + 0.014096726636716178 + ], + [ + 0.014038897584779789, + 0.014040081519846797, + 0.014037298399628298 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.98631598312936, + "scoreError" : 0.008020690408102148, + "scoreConfidence" : [ + 0.9782952927212578, + 0.9943366735374621 + ], + "scorePercentiles" : { + "0.0" : 0.978657759761229, + "50.0" : 0.9860868756655492, + "90.0" : 0.9935871373075013, + "95.0" : 0.9935871373075013, + "99.0" : 0.9935871373075013, + "99.9" : 0.9935871373075013, + "99.99" : 0.9935871373075013, + "99.999" : 0.9935871373075013, + "99.9999" : 0.9935871373075013, + "100.0" : 0.9935871373075013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9887167659911024, + 0.9916675884977689, + 0.9851070933806146 + ], + [ + 0.9855722197693899, + 0.9869512607322609, + 0.9860868756655492 + ], + [ + 0.978657759761229, + 0.9804971470588235, + 0.9935871373075013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01313144176204755, + "scoreError" : 5.18352424928154E-4, + "scoreConfidence" : [ + 0.012613089337119396, + 0.013649794186975706 + ], + "scorePercentiles" : { + "0.0" : 0.012891570798741814, + "50.0" : 0.013147115764235705, + "90.0" : 0.013308197912812965, + "95.0" : 0.013308197912812965, + "99.0" : 0.013308197912812965, + "99.9" : 0.013308197912812965, + "99.99" : 0.013308197912812965, + "99.999" : 0.013308197912812965, + "99.9999" : 0.013308197912812965, + "100.0" : 0.013308197912812965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013296880921925651, + 0.013308197912812965, + 0.013281904583173956 + ], + [ + 0.012891570798741814, + 0.012997769410333461, + 0.013012326945297454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7079852049983484, + "scoreError" : 0.11627454463127139, + "scoreConfidence" : [ + 3.591710660367077, + 3.82425974962962 + ], + "scorePercentiles" : { + "0.0" : 3.6668081752199413, + "50.0" : 3.695892137459865, + "90.0" : 3.7589851232156275, + "95.0" : 3.7589851232156275, + "99.0" : 3.7589851232156275, + "99.9" : 3.7589851232156275, + "99.99" : 3.7589851232156275, + "99.999" : 3.7589851232156275, + "99.9999" : 3.7589851232156275, + "100.0" : 3.7589851232156275 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6668081752199413, + 3.6728324199706313, + 3.6832431259204714 + ], + [ + 3.7085411489992586, + 3.7589851232156275, + 3.7575012366641625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8926147839484724, + "scoreError" : 0.09645934758523785, + "scoreConfidence" : [ + 2.7961554363632346, + 2.98907413153371 + ], + "scorePercentiles" : { + "0.0" : 2.8026243536004483, + "50.0" : 2.921494793456033, + "90.0" : 2.9457562176730487, + "95.0" : 2.9457562176730487, + "99.0" : 2.9457562176730487, + "99.9" : 2.9457562176730487, + "99.99" : 2.9457562176730487, + "99.999" : 2.9457562176730487, + "99.9999" : 2.9457562176730487, + "100.0" : 2.9457562176730487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9457562176730487, + 2.93675267498532, + 2.921494793456033 + ], + [ + 2.9296250128881076, + 2.927352605209248, + 2.920907433995327 + ], + [ + 2.823672700169396, + 2.825347263559322, + 2.8026243536004483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18133326474609845, + "scoreError" : 0.01346855229269323, + "scoreConfidence" : [ + 0.16786471245340523, + 0.19480181703879168 + ], + "scorePercentiles" : { + "0.0" : 0.1740499499269006, + "50.0" : 0.17767172076041574, + "90.0" : 0.1920147274821912, + "95.0" : 0.1920147274821912, + "99.0" : 0.1920147274821912, + "99.9" : 0.1920147274821912, + "99.99" : 0.1920147274821912, + "99.999" : 0.1920147274821912, + "99.9999" : 0.1920147274821912, + "100.0" : 0.1920147274821912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17821891932207015, + 0.17765134902559912, + 0.17767172076041574 + ], + [ + 0.1743843624315558, + 0.17456054072406088, + 0.1740499499269006 + ], + [ + 0.1920147274821912, + 0.19182560413949207, + 0.19162220890260026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3367788147831052, + "scoreError" : 0.02374465315352348, + "scoreConfidence" : [ + 0.3130341616295817, + 0.36052346793662865 + ], + "scorePercentiles" : { + "0.0" : 0.32071956720438727, + "50.0" : 0.33412888810184105, + "90.0" : 0.35441121898146505, + "95.0" : 0.35441121898146505, + "99.0" : 0.35441121898146505, + "99.9" : 0.35441121898146505, + "99.99" : 0.35441121898146505, + "99.999" : 0.35441121898146505, + "99.9999" : 0.35441121898146505, + "100.0" : 0.35441121898146505 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.35441121898146505, + 0.3540245686975608, + 0.35409223429643794 + ], + [ + 0.32071956720438727, + 0.32220562051744694, + 0.3226218893118689 + ], + [ + 0.33409698326206066, + 0.33470836267487786, + 0.33412888810184105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16858839828710112, + "scoreError" : 0.010531615699214387, + "scoreConfidence" : [ + 0.15805678258788675, + 0.1791200139863155 + ], + "scorePercentiles" : { + "0.0" : 0.16052026189826482, + "50.0" : 0.17016409602164442, + "90.0" : 0.17525053695979811, + "95.0" : 0.17525053695979811, + "99.0" : 0.17525053695979811, + "99.9" : 0.17525053695979811, + "99.99" : 0.17525053695979811, + "99.999" : 0.17525053695979811, + "99.9999" : 0.17525053695979811, + "100.0" : 0.17525053695979811 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17016409602164442, + 0.17025412281866625, + 0.17014017352320676 + ], + [ + 0.17525053695979811, + 0.17473462677569848, + 0.17468118482741754 + ], + [ + 0.16098750687401397, + 0.16052026189826482, + 0.16056307488519958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39153306316745484, + "scoreError" : 0.011987780396202052, + "scoreConfidence" : [ + 0.37954528277125277, + 0.4035208435636569 + ], + "scorePercentiles" : { + "0.0" : 0.3824763335883118, + "50.0" : 0.3891833180261519, + "90.0" : 0.405713951357053, + "95.0" : 0.405713951357053, + "99.0" : 0.405713951357053, + "99.9" : 0.405713951357053, + "99.99" : 0.405713951357053, + "99.999" : 0.405713951357053, + "99.9999" : 0.405713951357053, + "100.0" : 0.405713951357053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.405713951357053, + 0.39427057364768964, + 0.39585323267228756 + ], + [ + 0.3959599306303453, + 0.3891833180261519, + 0.3883369830304442 + ], + [ + 0.3868123861834217, + 0.38519085937138897, + 0.3824763335883118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15836425098734164, + "scoreError" : 0.001008748099331414, + "scoreConfidence" : [ + 0.15735550288801023, + 0.15937299908667305 + ], + "scorePercentiles" : { + "0.0" : 0.1578140798838512, + "50.0" : 0.15816451689942587, + "90.0" : 0.159676068308105, + "95.0" : 0.159676068308105, + "99.0" : 0.159676068308105, + "99.9" : 0.159676068308105, + "99.99" : 0.159676068308105, + "99.999" : 0.159676068308105, + "99.9999" : 0.159676068308105, + "100.0" : 0.159676068308105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15865113410435802, + 0.15809743934675036, + 0.15790347873869037 + ], + [ + 0.15876646168256942, + 0.159676068308105, + 0.1583807269876465 + ], + [ + 0.1578140798838512, + 0.15782435293467797, + 0.15816451689942587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04791337412082488, + "scoreError" : 6.092732015952206E-4, + "scoreConfidence" : [ + 0.04730410091922966, + 0.0485226473224201 + ], + "scorePercentiles" : { + "0.0" : 0.04742956409538896, + "50.0" : 0.04789460816111497, + "90.0" : 0.04834787348491808, + "95.0" : 0.04834787348491808, + "99.0" : 0.04834787348491808, + "99.9" : 0.04834787348491808, + "99.99" : 0.04834787348491808, + "99.999" : 0.04834787348491808, + "99.9999" : 0.04834787348491808, + "100.0" : 0.04834787348491808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04790588642123165, + 0.04789460816111497, + 0.047890905550952774 + ], + [ + 0.0483252757449235, + 0.048341155593475967, + 0.04834787348491808 + ], + [ + 0.04753277148452354, + 0.04755232655089445, + 0.04742956409538896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9462755.68721248, + "scoreError" : 319695.88956154167, + "scoreConfidence" : [ + 9143059.797650939, + 9782451.576774022 + ], + "scorePercentiles" : { + "0.0" : 9210562.837016575, + "50.0" : 9569353.49043977, + "90.0" : 9645247.50819672, + "95.0" : 9645247.50819672, + "99.0" : 9645247.50819672, + "99.9" : 9645247.50819672, + "99.99" : 9645247.50819672, + "99.999" : 9645247.50819672, + "99.9999" : 9645247.50819672, + "100.0" : 9645247.50819672 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9609886.60518732, + 9569353.49043977, + 9552628.962750716 + ], + [ + 9645247.50819672, + 9577503.71291866, + 9575471.54354067 + ], + [ + 9212506.072744016, + 9211640.452117864, + 9210562.837016575 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..ad9d1d5a8c --- /dev/null +++ b/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40858461951776, + "scoreError" : 0.02823504274507638, + "scoreConfidence" : [ + 3.3803495767726837, + 3.4368196622628364 + ], + "scorePercentiles" : { + "0.0" : 3.403842617984939, + "50.0" : 3.408227397148522, + "90.0" : 3.414041065789058, + "95.0" : 3.414041065789058, + "99.0" : 3.414041065789058, + "99.9" : 3.414041065789058, + "99.99" : 3.414041065789058, + "99.999" : 3.414041065789058, + "99.9999" : 3.414041065789058, + "100.0" : 3.414041065789058 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403842617984939, + 3.409770199303155 + ], + [ + 3.406684594993889, + 3.414041065789058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.719980936295944, + "scoreError" : 0.023474343074217335, + "scoreConfidence" : [ + 1.6965065932217267, + 1.7434552793701612 + ], + "scorePercentiles" : { + "0.0" : 1.7165348324954257, + "50.0" : 1.7198702033470656, + "90.0" : 1.7236485059942186, + "95.0" : 1.7236485059942186, + "99.0" : 1.7236485059942186, + "99.9" : 1.7236485059942186, + "99.99" : 1.7236485059942186, + "99.999" : 1.7236485059942186, + "99.9999" : 1.7236485059942186, + "100.0" : 1.7236485059942186 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.722538337715663, + 1.7236485059942186 + ], + [ + 1.7172020689784684, + 1.7165348324954257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662508137633711, + "scoreError" : 0.006600936431906626, + "scoreConfidence" : [ + 0.8596498773314645, + 0.8728517501952777 + ], + "scorePercentiles" : { + "0.0" : 0.8649383265860422, + "50.0" : 0.8664958062991177, + "90.0" : 0.8670733158692063, + "95.0" : 0.8670733158692063, + "99.0" : 0.8670733158692063, + "99.9" : 0.8670733158692063, + "99.99" : 0.8670733158692063, + "99.999" : 0.8670733158692063, + "99.9999" : 0.8670733158692063, + "100.0" : 0.8670733158692063 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8670486287680078, + 0.8670733158692063 + ], + [ + 0.8649383265860422, + 0.8659429838302277 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.77838375496337, + "scoreError" : 0.236087536028889, + "scoreConfidence" : [ + 15.542296218934482, + 16.014471290992258 + ], + "scorePercentiles" : { + "0.0" : 15.5961961951466, + "50.0" : 15.711442912088485, + "90.0" : 15.972625063204788, + "95.0" : 15.972625063204788, + "99.0" : 15.972625063204788, + "99.9" : 15.972625063204788, + "99.99" : 15.972625063204788, + "99.999" : 15.972625063204788, + "99.9999" : 15.972625063204788, + "100.0" : 15.972625063204788 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.923619257367257, + 15.688122136687152, + 15.861394961333474 + ], + [ + 15.917691639008215, + 15.972625063204788, + 15.700576098794429 + ], + [ + 15.63378553103995, + 15.5961961951466, + 15.711442912088485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2568.2740998550807, + "scoreError" : 97.78617105196564, + "scoreConfidence" : [ + 2470.487928803115, + 2666.0602709070463 + ], + "scorePercentiles" : { + "0.0" : 2475.227524256153, + "50.0" : 2577.6124597652006, + "90.0" : 2636.058733746114, + "95.0" : 2636.058733746114, + "99.0" : 2636.058733746114, + "99.9" : 2636.058733746114, + "99.99" : 2636.058733746114, + "99.999" : 2636.058733746114, + "99.9999" : 2636.058733746114, + "100.0" : 2636.058733746114 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2510.514525115231, + 2475.227524256153, + 2512.7676390395122 + ], + [ + 2618.47099094829, + 2552.117579354896, + 2612.291342265198 + ], + [ + 2636.058733746114, + 2577.6124597652006, + 2619.406104205128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69829.0263668477, + "scoreError" : 1060.1346840457486, + "scoreConfidence" : [ + 68768.89168280194, + 70889.16105089345 + ], + "scorePercentiles" : { + "0.0" : 68925.80132472458, + "50.0" : 69768.77289161518, + "90.0" : 70700.90064854718, + "95.0" : 70700.90064854718, + "99.0" : 70700.90064854718, + "99.9" : 70700.90064854718, + "99.99" : 70700.90064854718, + "99.999" : 70700.90064854718, + "99.9999" : 70700.90064854718, + "100.0" : 70700.90064854718 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69506.85659733678, + 70028.64672895106, + 69768.77289161518 + ], + [ + 70700.90064854718, + 70253.3941584423, + 70621.94107476607 + ], + [ + 69600.20646558938, + 68925.80132472458, + 69054.71741165676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.9282095584336, + "scoreError" : 2.6303078428595033, + "scoreConfidence" : [ + 340.2979017155741, + 345.5585174012931 + ], + "scorePercentiles" : { + "0.0" : 339.7323315026931, + "50.0" : 343.5420116887202, + "90.0" : 345.02858681117044, + "95.0" : 345.02858681117044, + "99.0" : 345.02858681117044, + "99.9" : 345.02858681117044, + "99.99" : 345.02858681117044, + "99.999" : 345.02858681117044, + "99.9999" : 345.02858681117044, + "100.0" : 345.02858681117044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.02858681117044, + 343.5420116887202, + 342.0739074233191 + ], + [ + 343.5761532037889, + 341.92689876445934, + 339.7323315026931 + ], + [ + 342.55961907210377, + 344.2673861390148, + 343.6469914206324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.48756562624698, + "scoreError" : 1.0958141946055548, + "scoreConfidence" : [ + 105.39175143164142, + 107.58337982085253 + ], + "scorePercentiles" : { + "0.0" : 105.49245380830173, + "50.0" : 106.5276062463189, + "90.0" : 107.65841429984553, + "95.0" : 107.65841429984553, + "99.0" : 107.65841429984553, + "99.9" : 107.65841429984553, + "99.99" : 107.65841429984553, + "99.999" : 107.65841429984553, + "99.9999" : 107.65841429984553, + "100.0" : 107.65841429984553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.77795669889201, + 106.85071095308024, + 106.68181660710022 + ], + [ + 106.35814726073099, + 105.49245380830173, + 106.93707535894518 + ], + [ + 106.5276062463189, + 106.1039094030079, + 107.65841429984553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06297848004678867, + "scoreError" : 5.894937036759589E-4, + "scoreConfidence" : [ + 0.06238898634311271, + 0.06356797375046463 + ], + "scorePercentiles" : { + "0.0" : 0.06252654531244138, + "50.0" : 0.06302387430044368, + "90.0" : 0.06367914714722364, + "95.0" : 0.06367914714722364, + "99.0" : 0.06367914714722364, + "99.9" : 0.06367914714722364, + "99.99" : 0.06367914714722364, + "99.999" : 0.06367914714722364, + "99.9999" : 0.06367914714722364, + "100.0" : 0.06367914714722364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06319152964594221, + 0.06269488202250713, + 0.06314516624675595 + ], + [ + 0.06302387430044368, + 0.062759557803704, + 0.06308125920342147 + ], + [ + 0.06367914714722364, + 0.06270435873865852, + 0.06252654531244138 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.761317551796573E-4, + "scoreError" : 1.2845499363296883E-5, + "scoreConfidence" : [ + 3.632862558163604E-4, + 3.889772545429542E-4 + ], + "scorePercentiles" : { + "0.0" : 3.654097590578796E-4, + "50.0" : 3.7901738871717514E-4, + "90.0" : 3.834261705410972E-4, + "95.0" : 3.834261705410972E-4, + "99.0" : 3.834261705410972E-4, + "99.9" : 3.834261705410972E-4, + "99.99" : 3.834261705410972E-4, + "99.999" : 3.834261705410972E-4, + "99.9999" : 3.834261705410972E-4, + "100.0" : 3.834261705410972E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7850269643764254E-4, + 3.7901738871717514E-4, + 3.834261705410972E-4 + ], + [ + 3.6558843802575615E-4, + 3.677787138036308E-4, + 3.654097590578796E-4 + ], + [ + 3.828899716507752E-4, + 3.796131917762167E-4, + 3.829594666067419E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014172803140729643, + "scoreError" : 1.0782891474152387E-4, + "scoreConfidence" : [ + 0.014064974225988118, + 0.014280632055471167 + ], + "scorePercentiles" : { + "0.0" : 0.014081310722784686, + "50.0" : 0.01416622602502008, + "90.0" : 0.014286797526133748, + "95.0" : 0.014286797526133748, + "99.0" : 0.014286797526133748, + "99.9" : 0.014286797526133748, + "99.99" : 0.014286797526133748, + "99.999" : 0.014286797526133748, + "99.9999" : 0.014286797526133748, + "100.0" : 0.014286797526133748 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014178331408884037, + 0.014115230361415172, + 0.014081310722784686 + ], + [ + 0.01416622602502008, + 0.014132456071226682, + 0.014158328896641263 + ], + [ + 0.014286797526133748, + 0.014185009923713932, + 0.014251537330747185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9905397184409652, + "scoreError" : 0.02238876384346547, + "scoreConfidence" : [ + 0.9681509545974998, + 1.0129284822844307 + ], + "scorePercentiles" : { + "0.0" : 0.9773580523846755, + "50.0" : 0.9843310696850394, + "90.0" : 1.0116134580214444, + "95.0" : 1.0116134580214444, + "99.0" : 1.0116134580214444, + "99.9" : 1.0116134580214444, + "99.99" : 1.0116134580214444, + "99.999" : 1.0116134580214444, + "99.9999" : 1.0116134580214444, + "100.0" : 1.0116134580214444 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9831717689736532, + 0.9843310696850394, + 0.9784792103512376 + ], + [ + 1.010704397877716, + 1.0116134580214444, + 0.9998777521495701 + ], + [ + 0.9773580523846755, + 0.9853596882451473, + 0.9839620682802046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013155411922502263, + "scoreError" : 2.795852915008635E-4, + "scoreConfidence" : [ + 0.012875826631001399, + 0.013434997214003127 + ], + "scorePercentiles" : { + "0.0" : 0.013002453662963657, + "50.0" : 0.01316711428100242, + "90.0" : 0.01327616876247929, + "95.0" : 0.01327616876247929, + "99.0" : 0.01327616876247929, + "99.9" : 0.01327616876247929, + "99.99" : 0.01327616876247929, + "99.999" : 0.01327616876247929, + "99.9999" : 0.01327616876247929, + "100.0" : 0.01327616876247929 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013121031901689159, + 0.013219664486364297, + 0.01327616876247929 + ], + [ + 0.013002453662963657, + 0.013099956061201498, + 0.013213196660315682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.750332902092968, + "scoreError" : 0.1674325694384914, + "scoreConfidence" : [ + 3.582900332654477, + 3.9177654715314594 + ], + "scorePercentiles" : { + "0.0" : 3.659013118507681, + "50.0" : 3.746797678884942, + "90.0" : 3.840637273425499, + "95.0" : 3.840637273425499, + "99.0" : 3.840637273425499, + "99.9" : 3.840637273425499, + "99.99" : 3.840637273425499, + "99.999" : 3.840637273425499, + "99.9999" : 3.840637273425499, + "100.0" : 3.840637273425499 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.840637273425499, + 3.751801334583646, + 3.779107640483384 + ], + [ + 3.659013118507681, + 3.7296440223713647, + 3.741794023186238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8548886386460897, + "scoreError" : 0.03636649593192445, + "scoreConfidence" : [ + 2.818522142714165, + 2.891255134578014 + ], + "scorePercentiles" : { + "0.0" : 2.8271100124364046, + "50.0" : 2.8555864614505997, + "90.0" : 2.880886245391705, + "95.0" : 2.880886245391705, + "99.0" : 2.880886245391705, + "99.9" : 2.880886245391705, + "99.99" : 2.880886245391705, + "99.999" : 2.880886245391705, + "99.9999" : 2.880886245391705, + "100.0" : 2.880886245391705 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.868786039586919, + 2.880886245391705, + 2.8482905326117915 + ], + [ + 2.827418055414193, + 2.8798364851713214, + 2.8555864614505997 + ], + [ + 2.871456194946885, + 2.8271100124364046, + 2.834627720804989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17971936084685597, + "scoreError" : 0.016517911751403654, + "scoreConfidence" : [ + 0.1632014490954523, + 0.19623727259825963 + ], + "scorePercentiles" : { + "0.0" : 0.16987528725283685, + "50.0" : 0.17653581038713437, + "90.0" : 0.19261740506182826, + "95.0" : 0.19261740506182826, + "99.0" : 0.19261740506182826, + "99.9" : 0.19261740506182826, + "99.99" : 0.19261740506182826, + "99.999" : 0.19261740506182826, + "99.9999" : 0.19261740506182826, + "100.0" : 0.19261740506182826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19216519448501154, + 0.19261740506182826, + 0.19231822860494635 + ], + [ + 0.17595648287086726, + 0.1765369575793952, + 0.17653581038713437 + ], + [ + 0.16987528725283685, + 0.17103812304166383, + 0.17043075833802002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33498656189355885, + "scoreError" : 0.00339606700371187, + "scoreConfidence" : [ + 0.331590494889847, + 0.3383826288972707 + ], + "scorePercentiles" : { + "0.0" : 0.3326694837829746, + "50.0" : 0.3347886653610525, + "90.0" : 0.33945752532247114, + "95.0" : 0.33945752532247114, + "99.0" : 0.33945752532247114, + "99.9" : 0.33945752532247114, + "99.99" : 0.33945752532247114, + "99.999" : 0.33945752532247114, + "99.9999" : 0.33945752532247114, + "100.0" : 0.33945752532247114 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3366052745296038, + 0.3343679756921225, + 0.33945752532247114 + ], + [ + 0.33349957656906554, + 0.33495701289523044, + 0.3349827138311057 + ], + [ + 0.3347886653610525, + 0.3326694837829746, + 0.33355082905840366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16055367098210246, + "scoreError" : 0.010627721830330528, + "scoreConfidence" : [ + 0.14992594915177193, + 0.171181392812433 + ], + "scorePercentiles" : { + "0.0" : 0.15152957390711416, + "50.0" : 0.1632057275353331, + "90.0" : 0.16693598417467947, + "95.0" : 0.16693598417467947, + "99.0" : 0.16693598417467947, + "99.9" : 0.16693598417467947, + "99.99" : 0.16693598417467947, + "99.999" : 0.16693598417467947, + "99.9999" : 0.16693598417467947, + "100.0" : 0.16693598417467947 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1535686558915217, + 0.15192134652487657, + 0.15152957390711416 + ], + [ + 0.16276372596474667, + 0.1632057275353331, + 0.1637623504298698 + ], + [ + 0.16609101062964007, + 0.16693598417467947, + 0.16520466378114054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39828964003913936, + "scoreError" : 0.00934466580815901, + "scoreConfidence" : [ + 0.38894497423098034, + 0.4076343058472984 + ], + "scorePercentiles" : { + "0.0" : 0.3920836011918764, + "50.0" : 0.3969977016673283, + "90.0" : 0.40858754435137895, + "95.0" : 0.40858754435137895, + "99.0" : 0.40858754435137895, + "99.9" : 0.40858754435137895, + "99.99" : 0.40858754435137895, + "99.999" : 0.40858754435137895, + "99.9999" : 0.40858754435137895, + "100.0" : 0.40858754435137895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3922899960379727, + 0.3920836011918764, + 0.39326324503519605 + ], + [ + 0.40858754435137895, + 0.3969044770201619, + 0.3969977016673283 + ], + [ + 0.4036797789932588, + 0.4003199688563308, + 0.40048044719875053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16041917557422003, + "scoreError" : 0.001737144665873153, + "scoreConfidence" : [ + 0.15868203090834687, + 0.1621563202400932 + ], + "scorePercentiles" : { + "0.0" : 0.15906686147165489, + "50.0" : 0.16033186659077792, + "90.0" : 0.1626990494265029, + "95.0" : 0.1626990494265029, + "99.0" : 0.1626990494265029, + "99.9" : 0.1626990494265029, + "99.99" : 0.1626990494265029, + "99.999" : 0.1626990494265029, + "99.9999" : 0.1626990494265029, + "100.0" : 0.1626990494265029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1626990494265029, + 0.16033186659077792, + 0.16045412686926386 + ], + [ + 0.1595371675648098, + 0.16000919154212934, + 0.15906686147165489 + ], + [ + 0.16053158194076572, + 0.16107567585851426, + 0.16006705890356143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04807424698073026, + "scoreError" : 5.436220780624052E-4, + "scoreConfidence" : [ + 0.04753062490266786, + 0.048617869058792666 + ], + "scorePercentiles" : { + "0.0" : 0.04746269952775339, + "50.0" : 0.048026309701617975, + "90.0" : 0.048588726259887666, + "95.0" : 0.048588726259887666, + "99.0" : 0.048588726259887666, + "99.9" : 0.048588726259887666, + "99.99" : 0.048588726259887666, + "99.999" : 0.048588726259887666, + "99.9999" : 0.048588726259887666, + "100.0" : 0.048588726259887666 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048350908289173405, + 0.048588726259887666, + 0.048329807225189085 + ], + [ + 0.0480161819836171, + 0.047919599771906116, + 0.04746269952775339 + ], + [ + 0.04790992621054094, + 0.048026309701617975, + 0.048064063856886746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9676391.013650784, + "scoreError" : 287328.6480368536, + "scoreConfidence" : [ + 9389062.36561393, + 9963719.661687639 + ], + "scorePercentiles" : { + "0.0" : 9478153.125, + "50.0" : 9586281.842911877, + "90.0" : 9966990.433266932, + "95.0" : 9966990.433266932, + "99.0" : 9966990.433266932, + "99.9" : 9966990.433266932, + "99.99" : 9966990.433266932, + "99.999" : 9966990.433266932, + "99.9999" : 9966990.433266932, + "100.0" : 9966990.433266932 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9558136.078319008, + 9557984.59503343, + 9478153.125 + ], + [ + 9966990.433266932, + 9883363.479249012, + 9822402.113837095 + ], + [ + 9586281.842911877, + 9579493.921455938, + 9654713.533783784 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..c247dd7f92 --- /dev/null +++ b/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.416841228362352, + "scoreError" : 0.046224539933131144, + "scoreConfidence" : [ + 3.370616688429221, + 3.463065768295483 + ], + "scorePercentiles" : { + "0.0" : 3.4104833073322536, + "50.0" : 3.4149070097262744, + "90.0" : 3.4270675866646054, + "95.0" : 3.4270675866646054, + "99.0" : 3.4270675866646054, + "99.9" : 3.4270675866646054, + "99.99" : 3.4270675866646054, + "99.999" : 3.4270675866646054, + "99.9999" : 3.4270675866646054, + "100.0" : 3.4270675866646054 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4104833073322536, + 3.415622928858356 + ], + [ + 3.414191090594193, + 3.4270675866646054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7256805880386656, + "scoreError" : 0.008670416239197185, + "scoreConfidence" : [ + 1.7170101717994684, + 1.734351004277863 + ], + "scorePercentiles" : { + "0.0" : 1.7238767187983217, + "50.0" : 1.7258640396415021, + "90.0" : 1.7271175540733374, + "95.0" : 1.7271175540733374, + "99.0" : 1.7271175540733374, + "99.9" : 1.7271175540733374, + "99.99" : 1.7271175540733374, + "99.999" : 1.7271175540733374, + "99.9999" : 1.7271175540733374, + "100.0" : 1.7271175540733374 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7257779960512811, + 1.7238767187983217 + ], + [ + 1.725950083231723, + 1.7271175540733374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8668202231331765, + "scoreError" : 0.004831866423434959, + "scoreConfidence" : [ + 0.8619883567097416, + 0.8716520895566114 + ], + "scorePercentiles" : { + "0.0" : 0.866215610918664, + "50.0" : 0.8666131123079148, + "90.0" : 0.8678390569982123, + "95.0" : 0.8678390569982123, + "99.0" : 0.8678390569982123, + "99.9" : 0.8678390569982123, + "99.99" : 0.8678390569982123, + "99.999" : 0.8678390569982123, + "99.9999" : 0.8678390569982123, + "100.0" : 0.8678390569982123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8663065488930909, + 0.8678390569982123 + ], + [ + 0.866215610918664, + 0.8669196757227386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.31640431452635, + "scoreError" : 0.3186289582091417, + "scoreConfidence" : [ + 15.997775356317206, + 16.63503327273549 + ], + "scorePercentiles" : { + "0.0" : 16.01931994704482, + "50.0" : 16.40630490278462, + "90.0" : 16.49237024973776, + "95.0" : 16.49237024973776, + "99.0" : 16.49237024973776, + "99.9" : 16.49237024973776, + "99.99" : 16.49237024973776, + "99.999" : 16.49237024973776, + "99.9999" : 16.49237024973776, + "100.0" : 16.49237024973776 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.40630490278462, + 16.401037480073782, + 16.411364862887655 + ], + [ + 16.01931994704482, + 16.08726384861906, + 16.099568628269374 + ], + [ + 16.452416990458655, + 16.49237024973776, + 16.47799192086142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2809.778181329612, + "scoreError" : 90.87641938701525, + "scoreConfidence" : [ + 2718.9017619425967, + 2900.654600716627 + ], + "scorePercentiles" : { + "0.0" : 2751.543366182571, + "50.0" : 2799.350960371689, + "90.0" : 2882.7440630130905, + "95.0" : 2882.7440630130905, + "99.0" : 2882.7440630130905, + "99.9" : 2882.7440630130905, + "99.99" : 2882.7440630130905, + "99.999" : 2882.7440630130905, + "99.9999" : 2882.7440630130905, + "100.0" : 2882.7440630130905 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2751.543366182571, + 2754.397261861922, + 2753.9996216878067 + ], + [ + 2873.0058513045706, + 2882.7440630130905, + 2874.397658886027 + ], + [ + 2799.6827906200256, + 2798.8820580388037, + 2799.350960371689 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69538.89231546373, + "scoreError" : 2700.454110688654, + "scoreConfidence" : [ + 66838.43820477507, + 72239.34642615239 + ], + "scorePercentiles" : { + "0.0" : 67053.05858762588, + "50.0" : 70502.74638799811, + "90.0" : 70713.11228173104, + "95.0" : 70713.11228173104, + "99.0" : 70713.11228173104, + "99.9" : 70713.11228173104, + "99.99" : 70713.11228173104, + "99.999" : 70713.11228173104, + "99.9999" : 70713.11228173104, + "100.0" : 70713.11228173104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67586.91728942825, + 67053.05858762588, + 67587.19740878949 + ], + [ + 70692.91981659395, + 70713.11228173104, + 70694.96634571847 + ], + [ + 70502.74638799811, + 70522.83979766157, + 70496.2729236268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.46608040287845, + "scoreError" : 2.1052187242826883, + "scoreConfidence" : [ + 351.36086167859577, + 355.5712991271611 + ], + "scorePercentiles" : { + "0.0" : 351.46498132968077, + "50.0" : 353.7673749359021, + "90.0" : 355.081588309483, + "95.0" : 355.081588309483, + "99.0" : 355.081588309483, + "99.9" : 355.081588309483, + "99.99" : 355.081588309483, + "99.999" : 355.081588309483, + "99.9999" : 355.081588309483, + "100.0" : 355.081588309483 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.89802732725707, + 355.081588309483, + 353.87855531342655 + ], + [ + 354.1289425757435, + 353.7673749359021, + 351.46498132968077 + ], + [ + 352.1390732144776, + 352.2742231087273, + 353.5619575112081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.22875395145122, + "scoreError" : 2.2268608546616937, + "scoreConfidence" : [ + 106.00189309678953, + 110.45561480611292 + ], + "scorePercentiles" : { + "0.0" : 106.86010819192902, + "50.0" : 107.79288461324526, + "90.0" : 110.04883231120205, + "95.0" : 110.04883231120205, + "99.0" : 110.04883231120205, + "99.9" : 110.04883231120205, + "99.99" : 110.04883231120205, + "99.999" : 110.04883231120205, + "99.9999" : 110.04883231120205, + "100.0" : 110.04883231120205 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.9151305341687, + 106.86010819192902, + 106.9410451235742 + ], + [ + 109.80234788582067, + 109.83710038953076, + 110.04883231120205 + ], + [ + 108.0859766767882, + 107.79288461324526, + 107.77535983680224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061717211018078616, + "scoreError" : 7.746341957989277E-4, + "scoreConfidence" : [ + 0.06094257682227969, + 0.062491845213877545 + ], + "scorePercentiles" : { + "0.0" : 0.06129506386838944, + "50.0" : 0.061503650343801126, + "90.0" : 0.06238190136302673, + "95.0" : 0.06238190136302673, + "99.0" : 0.06238190136302673, + "99.9" : 0.06238190136302673, + "99.99" : 0.06238190136302673, + "99.999" : 0.06238190136302673, + "99.9999" : 0.06238190136302673, + "100.0" : 0.06238190136302673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06140399041496273, + 0.06129506386838944, + 0.061410989824367476 + ], + [ + 0.062216737816600406, + 0.062367104588288855, + 0.06238190136302673 + ], + [ + 0.06135302896443406, + 0.06152243197883663, + 0.061503650343801126 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.594316967390262E-4, + "scoreError" : 2.025210075568485E-5, + "scoreConfidence" : [ + 3.3917959598334135E-4, + 3.79683797494711E-4 + ], + "scorePercentiles" : { + "0.0" : 3.451150199006584E-4, + "50.0" : 3.5978557142412557E-4, + "90.0" : 3.738151868826466E-4, + "95.0" : 3.738151868826466E-4, + "99.0" : 3.738151868826466E-4, + "99.9" : 3.738151868826466E-4, + "99.99" : 3.738151868826466E-4, + "99.999" : 3.738151868826466E-4, + "99.9999" : 3.738151868826466E-4, + "100.0" : 3.738151868826466E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5978557142412557E-4, + 3.5895190739054946E-4, + 3.5982580568855865E-4 + ], + [ + 3.451150199006584E-4, + 3.455401107623804E-4, + 3.4577895015172963E-4 + ], + [ + 3.728989930124733E-4, + 3.738151868826466E-4, + 3.731737254381133E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014191966644421385, + "scoreError" : 2.1829014589974747E-4, + "scoreConfidence" : [ + 0.013973676498521638, + 0.014410256790321131 + ], + "scorePercentiles" : { + "0.0" : 0.014034512911592084, + "50.0" : 0.014199062441074573, + "90.0" : 0.014338884630605725, + "95.0" : 0.014338884630605725, + "99.0" : 0.014338884630605725, + "99.9" : 0.014338884630605725, + "99.99" : 0.014338884630605725, + "99.999" : 0.014338884630605725, + "99.9999" : 0.014338884630605725, + "100.0" : 0.014338884630605725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014034512911592084, + 0.014036816928473472, + 0.014044025110419842 + ], + [ + 0.014203260520230885, + 0.014199062441074573, + 0.014195771940384105 + ], + [ + 0.014338884630605725, + 0.014338267550563345, + 0.01433709776644841 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9925031145812194, + "scoreError" : 0.042226353185113495, + "scoreConfidence" : [ + 0.950276761396106, + 1.034729467766333 + ], + "scorePercentiles" : { + "0.0" : 0.9630525597072419, + "50.0" : 0.9913075222045995, + "90.0" : 1.0285787390723027, + "95.0" : 1.0285787390723027, + "99.0" : 1.0285787390723027, + "99.9" : 1.0285787390723027, + "99.99" : 1.0285787390723027, + "99.999" : 1.0285787390723027, + "99.9999" : 1.0285787390723027, + "100.0" : 1.0285787390723027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9906748670629024, + 0.9913075222045995, + 0.9914711291761673 + ], + [ + 0.9630525597072419, + 0.9650835647558387, + 0.9655797285893598 + ], + [ + 1.0129199996961409, + 1.023859920966421, + 1.0285787390723027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013059418001820743, + "scoreError" : 2.515838452231582E-4, + "scoreConfidence" : [ + 0.012807834156597584, + 0.013311001847043901 + ], + "scorePercentiles" : { + "0.0" : 0.012981688982469987, + "50.0" : 0.013024948595270976, + "90.0" : 0.013170221643917884, + "95.0" : 0.013170221643917884, + "99.0" : 0.013170221643917884, + "99.9" : 0.013170221643917884, + "99.99" : 0.013170221643917884, + "99.999" : 0.013170221643917884, + "99.9999" : 0.013170221643917884, + "100.0" : 0.013170221643917884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013056340266081757, + 0.013169372862338977, + 0.013170221643917884 + ], + [ + 0.012985327331655668, + 0.012981688982469987, + 0.012993556924460197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6592788291395366, + "scoreError" : 0.050967515054031964, + "scoreConfidence" : [ + 3.6083113140855048, + 3.7102463441935685 + ], + "scorePercentiles" : { + "0.0" : 3.623741924637681, + "50.0" : 3.664233986813187, + "90.0" : 3.6741932277736957, + "95.0" : 3.6741932277736957, + "99.0" : 3.6741932277736957, + "99.9" : 3.6741932277736957, + "99.99" : 3.6741932277736957, + "99.999" : 3.6741932277736957, + "99.9999" : 3.6741932277736957, + "100.0" : 3.6741932277736957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.665116643223443, + 3.6633513304029304, + 3.6592315215801023 + ], + [ + 3.623741924637681, + 3.670038327219369, + 3.6741932277736957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.816428854728746, + "scoreError" : 0.06208714333215352, + "scoreConfidence" : [ + 2.7543417113965925, + 2.8785159980609 + ], + "scorePercentiles" : { + "0.0" : 2.765137873652198, + "50.0" : 2.8340587007650893, + "90.0" : 2.8525728069024527, + "95.0" : 2.8525728069024527, + "99.0" : 2.8525728069024527, + "99.9" : 2.8525728069024527, + "99.99" : 2.8525728069024527, + "99.999" : 2.8525728069024527, + "99.9999" : 2.8525728069024527, + "100.0" : 2.8525728069024527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8513465621436715, + 2.8525728069024527, + 2.8419214063654445 + ], + [ + 2.834123484839898, + 2.8340587007650893, + 2.8287812502828054 + ], + [ + 2.7730404374826727, + 2.766877170124481, + 2.765137873652198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1793954246557457, + "scoreError" : 0.015718117464958145, + "scoreConfidence" : [ + 0.16367730719078755, + 0.19511354212070386 + ], + "scorePercentiles" : { + "0.0" : 0.17193095985489307, + "50.0" : 0.1741289254744907, + "90.0" : 0.19208350172870808, + "95.0" : 0.19208350172870808, + "99.0" : 0.19208350172870808, + "99.9" : 0.19208350172870808, + "99.99" : 0.19208350172870808, + "99.999" : 0.19208350172870808, + "99.9999" : 0.19208350172870808, + "100.0" : 0.19208350172870808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19208350172870808, + 0.19167580244570948, + 0.1917056374511157 + ], + [ + 0.1741670207600404, + 0.17371442937794224, + 0.1741289254744907 + ], + [ + 0.17308442873461757, + 0.17193095985489307, + 0.1720681160741939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3310067074422411, + "scoreError" : 0.005286940810887437, + "scoreConfidence" : [ + 0.32571976663135366, + 0.3362936482531285 + ], + "scorePercentiles" : { + "0.0" : 0.3272692564060608, + "50.0" : 0.3299537344925432, + "90.0" : 0.33597765600537544, + "95.0" : 0.33597765600537544, + "99.0" : 0.33597765600537544, + "99.9" : 0.33597765600537544, + "99.99" : 0.33597765600537544, + "99.999" : 0.33597765600537544, + "99.9999" : 0.33597765600537544, + "100.0" : 0.33597765600537544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33105885374251004, + 0.32922863973662553, + 0.3299537344925432 + ], + [ + 0.33597765600537544, + 0.33463009536556804, + 0.3340892610496776 + ], + [ + 0.32880638031827447, + 0.32804648986353496, + 0.3272692564060608 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1655695332101355, + "scoreError" : 0.0014940467802612104, + "scoreConfidence" : [ + 0.1640754864298743, + 0.16706357999039673 + ], + "scorePercentiles" : { + "0.0" : 0.1643908343634929, + "50.0" : 0.16573519637382125, + "90.0" : 0.16663853021945976, + "95.0" : 0.16663853021945976, + "99.0" : 0.16663853021945976, + "99.9" : 0.16663853021945976, + "99.99" : 0.16663853021945976, + "99.999" : 0.16663853021945976, + "99.9999" : 0.16663853021945976, + "100.0" : 0.16663853021945976 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16573519637382125, + 0.16486172864255333, + 0.16493741781296387 + ], + [ + 0.1658688282302206, + 0.16462066344016987, + 0.1643908343634929 + ], + [ + 0.1664890851077999, + 0.16658351470073796, + 0.16663853021945976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3880358277948496, + "scoreError" : 0.015062129870327713, + "scoreConfidence" : [ + 0.37297369792452184, + 0.4030979576651773 + ], + "scorePercentiles" : { + "0.0" : 0.3791764736862061, + "50.0" : 0.3846368117235278, + "90.0" : 0.40354941443041037, + "95.0" : 0.40354941443041037, + "99.0" : 0.40354941443041037, + "99.9" : 0.40354941443041037, + "99.99" : 0.40354941443041037, + "99.999" : 0.40354941443041037, + "99.9999" : 0.40354941443041037, + "100.0" : 0.40354941443041037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38075618664331407, + 0.3798244570625546, + 0.3791764736862061 + ], + [ + 0.38515324564782005, + 0.3846368117235278, + 0.3846282916153846 + ], + [ + 0.40354941443041037, + 0.3971281042808355, + 0.397469465063593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15783876494082616, + "scoreError" : 0.0036673927342274586, + "scoreConfidence" : [ + 0.1541713722065987, + 0.1615061576750536 + ], + "scorePercentiles" : { + "0.0" : 0.1556568356914935, + "50.0" : 0.15700002814933434, + "90.0" : 0.1620545456254355, + "95.0" : 0.1620545456254355, + "99.0" : 0.1620545456254355, + "99.9" : 0.1620545456254355, + "99.99" : 0.1620545456254355, + "99.999" : 0.1620545456254355, + "99.9999" : 0.1620545456254355, + "100.0" : 0.1620545456254355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15700002814933434, + 0.15577499482841878, + 0.1556568356914935 + ], + [ + 0.15725884702237738, + 0.1567389933544403, + 0.15655110679733242 + ], + [ + 0.1620545456254355, + 0.15990778622255625, + 0.159605746776047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04759487313143161, + "scoreError" : 5.249458188152128E-4, + "scoreConfidence" : [ + 0.047069927312616396, + 0.04811981895024683 + ], + "scorePercentiles" : { + "0.0" : 0.0471997846347726, + "50.0" : 0.04748367897265933, + "90.0" : 0.048040983771942464, + "95.0" : 0.048040983771942464, + "99.0" : 0.048040983771942464, + "99.9" : 0.048040983771942464, + "99.99" : 0.048040983771942464, + "99.999" : 0.048040983771942464, + "99.9999" : 0.048040983771942464, + "100.0" : 0.048040983771942464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048040983771942464, + 0.047442269875608435, + 0.04746866217460649 + ], + [ + 0.04795914089221827, + 0.04756065644603612, + 0.04748367897265933 + ], + [ + 0.04794581715666532, + 0.047252864258375465, + 0.0471997846347726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9273198.347081004, + "scoreError" : 151405.44321916296, + "scoreConfidence" : [ + 9121792.903861841, + 9424603.790300166 + ], + "scorePercentiles" : { + "0.0" : 9155483.271729186, + "50.0" : 9294069.286245354, + "90.0" : 9361522.364826942, + "95.0" : 9361522.364826942, + "99.0" : 9361522.364826942, + "99.9" : 9361522.364826942, + "99.99" : 9361522.364826942, + "99.999" : 9361522.364826942, + "99.9999" : 9361522.364826942, + "100.0" : 9361522.364826942 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9159622.364468865, + 9161932.124542125, + 9155483.271729186 + ], + [ + 9338092.402427638, + 9294069.286245354, + 9278606.829313543 + ], + [ + 9350569.692523364, + 9358886.787652012, + 9361522.364826942 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..347a362b1b --- /dev/null +++ b/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.423985031790188, + "scoreError" : 0.020585678001601503, + "scoreConfidence" : [ + 3.4033993537885863, + 3.4445707097917895 + ], + "scorePercentiles" : { + "0.0" : 3.4193836164754052, + "50.0" : 3.425190782059619, + "90.0" : 3.4261749465661073, + "95.0" : 3.4261749465661073, + "99.0" : 3.4261749465661073, + "99.9" : 3.4261749465661073, + "99.99" : 3.4261749465661073, + "99.999" : 3.4261749465661073, + "99.9999" : 3.4261749465661073, + "100.0" : 3.4261749465661073 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4193836164754052, + 3.4261749465661073 + ], + [ + 3.4243051172951176, + 3.4260764468241205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7287797917121857, + "scoreError" : 0.007600411881287742, + "scoreConfidence" : [ + 1.7211793798308979, + 1.7363802035934734 + ], + "scorePercentiles" : { + "0.0" : 1.7276067282125074, + "50.0" : 1.728753700082378, + "90.0" : 1.7300050384714796, + "95.0" : 1.7300050384714796, + "99.0" : 1.7300050384714796, + "99.9" : 1.7300050384714796, + "99.99" : 1.7300050384714796, + "99.999" : 1.7300050384714796, + "99.9999" : 1.7300050384714796, + "100.0" : 1.7300050384714796 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7276067282125074, + 1.729551031146016 + ], + [ + 1.7279563690187403, + 1.7300050384714796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680077673242658, + "scoreError" : 0.001730336967352543, + "scoreConfidence" : [ + 0.8662774303569132, + 0.8697381042916184 + ], + "scorePercentiles" : { + "0.0" : 0.8676148794980105, + "50.0" : 0.868100694296265, + "90.0" : 0.8682148012065225, + "95.0" : 0.8682148012065225, + "99.0" : 0.8682148012065225, + "99.9" : 0.8682148012065225, + "99.99" : 0.8682148012065225, + "99.999" : 0.8682148012065225, + "99.9999" : 0.8682148012065225, + "100.0" : 0.8682148012065225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8676148794980105, + 0.8682148012065225 + ], + [ + 0.8680832284714595, + 0.8681181601210705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.38240461990315, + "scoreError" : 0.12334786222297711, + "scoreConfidence" : [ + 16.25905675768017, + 16.505752482126127 + ], + "scorePercentiles" : { + "0.0" : 16.276350464015767, + "50.0" : 16.405246368329045, + "90.0" : 16.491374585997335, + "95.0" : 16.491374585997335, + "99.0" : 16.491374585997335, + "99.9" : 16.491374585997335, + "99.99" : 16.491374585997335, + "99.999" : 16.491374585997335, + "99.9999" : 16.491374585997335, + "100.0" : 16.491374585997335 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.276350464015767, + 16.28949960657584, + 16.309277751841147 + ], + [ + 16.405246368329045, + 16.4140186013479, + 16.491374585997335 + ], + [ + 16.435045435937738, + 16.418812751229037, + 16.402016013854535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.5653430356538, + "scoreError" : 91.70865496219062, + "scoreConfidence" : [ + 2616.8566880734634, + 2800.273997997844 + ], + "scorePercentiles" : { + "0.0" : 2655.382188812315, + "50.0" : 2683.8756391544052, + "90.0" : 2780.8420757077465, + "95.0" : 2780.8420757077465, + "99.0" : 2780.8420757077465, + "99.9" : 2780.8420757077465, + "99.99" : 2780.8420757077465, + "99.999" : 2780.8420757077465, + "99.9999" : 2780.8420757077465, + "100.0" : 2780.8420757077465 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2778.394621699917, + 2780.6211412089756, + 2780.8420757077465 + ], + [ + 2681.688877607523, + 2683.8756391544052, + 2686.991378749153 + ], + [ + 2669.7043469811665, + 2655.382188812315, + 2659.5878173996875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69453.92527304837, + "scoreError" : 1521.0238725110248, + "scoreConfidence" : [ + 67932.90140053735, + 70974.9491455594 + ], + "scorePercentiles" : { + "0.0" : 68693.4254198043, + "50.0" : 68981.39786361123, + "90.0" : 70688.90214143042, + "95.0" : 70688.90214143042, + "99.0" : 70688.90214143042, + "99.9" : 70688.90214143042, + "99.99" : 70688.90214143042, + "99.999" : 70688.90214143042, + "99.9999" : 70688.90214143042, + "100.0" : 70688.90214143042 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68981.39786361123, + 68965.05800560681, + 68981.99555956059 + ], + [ + 70626.75144783205, + 70688.90214143042, + 70640.85183648426 + ], + [ + 68693.4254198043, + 68759.7918936698, + 68747.15328943594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.10407851079464, + "scoreError" : 6.498936628587323, + "scoreConfidence" : [ + 349.6051418822073, + 362.60301513938197 + ], + "scorePercentiles" : { + "0.0" : 350.9120636475959, + "50.0" : 355.3428972137064, + "90.0" : 361.4061321659956, + "95.0" : 361.4061321659956, + "99.0" : 361.4061321659956, + "99.9" : 361.4061321659956, + "99.99" : 361.4061321659956, + "99.999" : 361.4061321659956, + "99.9999" : 361.4061321659956, + "100.0" : 361.4061321659956 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.25636836864624, + 354.82855651204625, + 351.4684689201288 + ], + [ + 360.4932364258982, + 360.36491162891963, + 361.4061321659956 + ], + [ + 355.8640717142149, + 355.3428972137064, + 350.9120636475959 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.31669412956369, + "scoreError" : 3.5778548693793955, + "scoreConfidence" : [ + 103.73883926018429, + 110.89454899894308 + ], + "scorePercentiles" : { + "0.0" : 105.79308903472088, + "50.0" : 105.93376479703352, + "90.0" : 110.34952243173072, + "95.0" : 110.34952243173072, + "99.0" : 110.34952243173072, + "99.9" : 110.34952243173072, + "99.99" : 110.34952243173072, + "99.999" : 110.34952243173072, + "99.9999" : 110.34952243173072, + "100.0" : 110.34952243173072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.77252022787577, + 110.31612729927951, + 110.34952243173072 + ], + [ + 106.03328503402605, + 105.87577646935003, + 105.79308903472088 + ], + [ + 105.87219204411367, + 105.90396982794302, + 105.93376479703352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06119980136377835, + "scoreError" : 8.618213928725673E-4, + "scoreConfidence" : [ + 0.060337979970905786, + 0.06206162275665092 + ], + "scorePercentiles" : { + "0.0" : 0.06066733146885389, + "50.0" : 0.06089297250114173, + "90.0" : 0.061862555115650385, + "95.0" : 0.061862555115650385, + "99.0" : 0.061862555115650385, + "99.9" : 0.061862555115650385, + "99.99" : 0.061862555115650385, + "99.999" : 0.061862555115650385, + "99.9999" : 0.061862555115650385, + "100.0" : 0.061862555115650385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06178237913394827, + 0.061862555115650385, + 0.06185610631664894 + ], + [ + 0.06089089902575656, + 0.06089297250114173, + 0.06134222386549055 + ], + [ + 0.06074345491377582, + 0.0607602899327391, + 0.06066733146885389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.714779192655463E-4, + "scoreError" : 1.623245467441315E-5, + "scoreConfidence" : [ + 3.552454645911331E-4, + 3.8771037393995944E-4 + ], + "scorePercentiles" : { + "0.0" : 3.584074242444118E-4, + "50.0" : 3.7633382446846465E-4, + "90.0" : 3.7957460862137523E-4, + "95.0" : 3.7957460862137523E-4, + "99.0" : 3.7957460862137523E-4, + "99.9" : 3.7957460862137523E-4, + "99.99" : 3.7957460862137523E-4, + "99.999" : 3.7957460862137523E-4, + "99.9999" : 3.7957460862137523E-4, + "100.0" : 3.7957460862137523E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7924316070034667E-4, + 3.7957460862137523E-4, + 3.7955198229060557E-4 + ], + [ + 3.593466223899345E-4, + 3.5847276303743996E-4, + 3.584074242444118E-4 + ], + [ + 3.7633382446846465E-4, + 3.766252124611751E-4, + 3.7574567517616273E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014355010333514245, + "scoreError" : 4.1067815151196995E-4, + "scoreConfidence" : [ + 0.013944332182002275, + 0.014765688485026216 + ], + "scorePercentiles" : { + "0.0" : 0.014026616836784073, + "50.0" : 0.014459461475396798, + "90.0" : 0.01459370264405256, + "95.0" : 0.01459370264405256, + "99.0" : 0.01459370264405256, + "99.9" : 0.01459370264405256, + "99.99" : 0.01459370264405256, + "99.999" : 0.01459370264405256, + "99.9999" : 0.01459370264405256, + "100.0" : 0.01459370264405256 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014453072907829299, + 0.01459370264405256, + 0.014459461475396798 + ], + [ + 0.014026616836784073, + 0.014033903854924926, + 0.01404158894438352 + ], + [ + 0.014542850651003227, + 0.014528971946336417, + 0.01451492374091739 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9771543281961408, + "scoreError" : 0.02185627742500379, + "scoreConfidence" : [ + 0.955298050771137, + 0.9990106056211445 + ], + "scorePercentiles" : { + "0.0" : 0.9627037857142857, + "50.0" : 0.974022056199474, + "90.0" : 0.9980891943113772, + "95.0" : 0.9980891943113772, + "99.0" : 0.9980891943113772, + "99.9" : 0.9980891943113772, + "99.99" : 0.9980891943113772, + "99.999" : 0.9980891943113772, + "99.9999" : 0.9980891943113772, + "100.0" : 0.9980891943113772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9669437919164572, + 0.9627037857142857, + 0.963355748579135 + ], + [ + 0.991817503818308, + 0.9980891943113772, + 0.989932828152841 + ], + [ + 0.974022056199474, + 0.9732893321654501, + 0.9742347129079396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012885614874331264, + "scoreError" : 5.050071426909742E-4, + "scoreConfidence" : [ + 0.01238060773164029, + 0.013390622017022237 + ], + "scorePercentiles" : { + "0.0" : 0.012721508086860284, + "50.0" : 0.012853246073407367, + "90.0" : 0.013082793771193537, + "95.0" : 0.013082793771193537, + "99.0" : 0.013082793771193537, + "99.9" : 0.013082793771193537, + "99.99" : 0.013082793771193537, + "99.999" : 0.013082793771193537, + "99.9999" : 0.013082793771193537, + "100.0" : 0.013082793771193537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012979090677596537, + 0.013082793771193537, + 0.013077631711922834 + ], + [ + 0.012727401469218198, + 0.012721508086860284, + 0.01272526352919619 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6305832853859683, + "scoreError" : 0.07908803946707522, + "scoreConfidence" : [ + 3.551495245918893, + 3.7096713248530437 + ], + "scorePercentiles" : { + "0.0" : 3.5858967541218636, + "50.0" : 3.6275817135425212, + "90.0" : 3.661791859443631, + "95.0" : 3.661791859443631, + "99.0" : 3.661791859443631, + "99.9" : 3.661791859443631, + "99.99" : 3.661791859443631, + "99.999" : 3.661791859443631, + "99.9999" : 3.661791859443631, + "100.0" : 3.661791859443631 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5858967541218636, + 3.620618655571635, + 3.624266738405797 + ], + [ + 3.630896688679245, + 3.6600290160936355, + 3.661791859443631 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8635983475617643, + "scoreError" : 0.05318319058426944, + "scoreConfidence" : [ + 2.810415156977495, + 2.916781538146034 + ], + "scorePercentiles" : { + "0.0" : 2.814156100168824, + "50.0" : 2.8762246813344836, + "90.0" : 2.8928681952560025, + "95.0" : 2.8928681952560025, + "99.0" : 2.8928681952560025, + "99.9" : 2.8928681952560025, + "99.99" : 2.8928681952560025, + "99.999" : 2.8928681952560025, + "99.9999" : 2.8928681952560025, + "100.0" : 2.8928681952560025 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8762246813344836, + 2.8830864364370137, + 2.8709831374856485 + ], + [ + 2.830178765138653, + 2.8240756487859966, + 2.814156100168824 + ], + [ + 2.8894638145044786, + 2.8913483489447818, + 2.8928681952560025 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17460592529590413, + "scoreError" : 0.007290842462030162, + "scoreConfidence" : [ + 0.16731508283387397, + 0.18189676775793429 + ], + "scorePercentiles" : { + "0.0" : 0.16902718518330714, + "50.0" : 0.17527733757492903, + "90.0" : 0.1789688415627181, + "95.0" : 0.1789688415627181, + "99.0" : 0.1789688415627181, + "99.9" : 0.1789688415627181, + "99.99" : 0.1789688415627181, + "99.999" : 0.1789688415627181, + "99.9999" : 0.1789688415627181, + "100.0" : 0.1789688415627181 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17740387072911123, + 0.1752745377618088, + 0.17527733757492903 + ], + [ + 0.16919842399837576, + 0.16908881285719116, + 0.16902718518330714 + ], + [ + 0.1789688415627181, + 0.17867402992728118, + 0.17854028806841513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32594856915486825, + "scoreError" : 0.006512483666661735, + "scoreConfidence" : [ + 0.3194360854882065, + 0.33246105282153 + ], + "scorePercentiles" : { + "0.0" : 0.32274181687913506, + "50.0" : 0.32294927724850636, + "90.0" : 0.3315308010542368, + "95.0" : 0.3315308010542368, + "99.0" : 0.3315308010542368, + "99.9" : 0.3315308010542368, + "99.99" : 0.3315308010542368, + "99.999" : 0.3315308010542368, + "99.9999" : 0.3315308010542368, + "100.0" : 0.3315308010542368 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3266327356937549, + 0.32294927724850636, + 0.32284441984116735 + ], + [ + 0.33064299758637794, + 0.3315308010542368, + 0.33034233406005353 + ], + [ + 0.3229322670584816, + 0.32292047297210025, + 0.32274181687913506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16163972415380565, + "scoreError" : 0.007092012523861331, + "scoreConfidence" : [ + 0.15454771162994432, + 0.16873173667766697 + ], + "scorePercentiles" : { + "0.0" : 0.15710679449192483, + "50.0" : 0.16063566504963536, + "90.0" : 0.16717027942159812, + "95.0" : 0.16717027942159812, + "99.0" : 0.16717027942159812, + "99.9" : 0.16717027942159812, + "99.99" : 0.16717027942159812, + "99.999" : 0.16717027942159812, + "99.9999" : 0.16717027942159812, + "100.0" : 0.16717027942159812 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16096042670894428, + 0.16060938489335733, + 0.16063566504963536 + ], + [ + 0.15735056534600497, + 0.15741520246190657, + 0.15710679449192483 + ], + [ + 0.16711328819705554, + 0.16717027942159812, + 0.16639591081382385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3908731216705499, + "scoreError" : 0.008318461719991843, + "scoreConfidence" : [ + 0.38255465995055804, + 0.3991915833905417 + ], + "scorePercentiles" : { + "0.0" : 0.3850710142472083, + "50.0" : 0.39186429463166145, + "90.0" : 0.39874439389952154, + "95.0" : 0.39874439389952154, + "99.0" : 0.39874439389952154, + "99.9" : 0.39874439389952154, + "99.99" : 0.39874439389952154, + "99.999" : 0.39874439389952154, + "99.9999" : 0.39874439389952154, + "100.0" : 0.39874439389952154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39874439389952154, + 0.3877659189220628, + 0.386286415868356 + ], + [ + 0.39493609237391886, + 0.3853260085153932, + 0.3850710142472083 + ], + [ + 0.39510388317332384, + 0.3927600734035033, + 0.39186429463166145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1586786249037039, + "scoreError" : 0.0034100905503789674, + "scoreConfidence" : [ + 0.15526853435332494, + 0.16208871545408288 + ], + "scorePercentiles" : { + "0.0" : 0.15661870924496094, + "50.0" : 0.1578523135339058, + "90.0" : 0.16217684937238494, + "95.0" : 0.16217684937238494, + "99.0" : 0.16217684937238494, + "99.9" : 0.16217684937238494, + "99.99" : 0.16217684937238494, + "99.999" : 0.16217684937238494, + "99.9999" : 0.16217684937238494, + "100.0" : 0.16217684937238494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15877473223358313, + 0.1578523135339058, + 0.15726137488598838 + ], + [ + 0.16217684937238494, + 0.16083772981536285, + 0.16052423554906337 + ], + [ + 0.15739435946549987, + 0.15666732003258604, + 0.15661870924496094 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04705562194714075, + "scoreError" : 0.001724178194025406, + "scoreConfidence" : [ + 0.04533144375311534, + 0.04877980014116615 + ], + "scorePercentiles" : { + "0.0" : 0.04576418512315, + "50.0" : 0.047069235799412586, + "90.0" : 0.048249880785691195, + "95.0" : 0.048249880785691195, + "99.0" : 0.048249880785691195, + "99.9" : 0.048249880785691195, + "99.99" : 0.048249880785691195, + "99.999" : 0.048249880785691195, + "99.9999" : 0.048249880785691195, + "100.0" : 0.048249880785691195 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047069235799412586, + 0.04717382480446822, + 0.046859601845300296 + ], + [ + 0.048249880785691195, + 0.048244426864980386, + 0.048241332310631276 + ], + [ + 0.04600872909506655, + 0.04588938089556622, + 0.04576418512315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9393487.11191537, + "scoreError" : 76117.81686439089, + "scoreConfidence" : [ + 9317369.295050979, + 9469604.928779762 + ], + "scorePercentiles" : { + "0.0" : 9326570.458527492, + "50.0" : 9421905.214689266, + "90.0" : 9427197.699340245, + "95.0" : 9427197.699340245, + "99.0" : 9427197.699340245, + "99.9" : 9427197.699340245, + "99.99" : 9427197.699340245, + "99.999" : 9427197.699340245, + "99.9999" : 9427197.699340245, + "100.0" : 9427197.699340245 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9423936.029190207, + 9422548.15913371, + 9421905.214689266 + ], + [ + 9331684.680037314, + 9341840.24089636, + 9326570.458527492 + ], + [ + 9427197.699340245, + 9420696.956685498, + 9425004.56873823 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..2a0b401278 --- /dev/null +++ b/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.426145151023948, + "scoreError" : 0.013210663115301039, + "scoreConfidence" : [ + 3.412934487908647, + 3.439355814139249 + ], + "scorePercentiles" : { + "0.0" : 3.4234322248782174, + "50.0" : 3.426652794233978, + "90.0" : 3.427842790749618, + "95.0" : 3.427842790749618, + "99.0" : 3.427842790749618, + "99.9" : 3.427842790749618, + "99.99" : 3.427842790749618, + "99.999" : 3.427842790749618, + "99.9999" : 3.427842790749618, + "100.0" : 3.427842790749618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4275964386075892, + 3.427842790749618 + ], + [ + 3.4234322248782174, + 3.4257091498603667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.729128204255764, + "scoreError" : 0.007766170352462106, + "scoreConfidence" : [ + 1.721362033903302, + 1.7368943746082262 + ], + "scorePercentiles" : { + "0.0" : 1.7279808848819176, + "50.0" : 1.7290426231590101, + "90.0" : 1.7304466858231178, + "95.0" : 1.7304466858231178, + "99.0" : 1.7304466858231178, + "99.9" : 1.7304466858231178, + "99.99" : 1.7304466858231178, + "99.999" : 1.7304466858231178, + "99.9999" : 1.7304466858231178, + "100.0" : 1.7304466858231178 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282477158561975, + 1.7298375304618228 + ], + [ + 1.7279808848819176, + 1.7304466858231178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683695224465093, + "scoreError" : 0.0022479338394988647, + "scoreConfidence" : [ + 0.8661215886070105, + 0.8706174562860082 + ], + "scorePercentiles" : { + "0.0" : 0.8679904677398708, + "50.0" : 0.8683417491104126, + "90.0" : 0.8688041238253417, + "95.0" : 0.8688041238253417, + "99.0" : 0.8688041238253417, + "99.9" : 0.8688041238253417, + "99.99" : 0.8688041238253417, + "99.999" : 0.8688041238253417, + "99.9999" : 0.8688041238253417, + "100.0" : 0.8688041238253417 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8682214628124686, + 0.8684620354083565 + ], + [ + 0.8679904677398708, + 0.8688041238253417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.240687874378818, + "scoreError" : 0.14206130369424322, + "scoreConfidence" : [ + 16.098626570684573, + 16.382749178073063 + ], + "scorePercentiles" : { + "0.0" : 16.102134406564456, + "50.0" : 16.20890091093278, + "90.0" : 16.34498291737838, + "95.0" : 16.34498291737838, + "99.0" : 16.34498291737838, + "99.9" : 16.34498291737838, + "99.99" : 16.34498291737838, + "99.999" : 16.34498291737838, + "99.9999" : 16.34498291737838, + "100.0" : 16.34498291737838 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33512895649821, + 16.342082271169485, + 16.34498291737838 + ], + [ + 16.20890091093278, + 16.201763368385475, + 16.204084508361756 + ], + [ + 16.102134406564456, + 16.177766103475452, + 16.24934742664334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2768.9873500346007, + "scoreError" : 104.42207140117078, + "scoreConfidence" : [ + 2664.56527863343, + 2873.4094214357715 + ], + "scorePercentiles" : { + "0.0" : 2685.5244079379963, + "50.0" : 2795.830847084459, + "90.0" : 2824.7859522281055, + "95.0" : 2824.7859522281055, + "99.0" : 2824.7859522281055, + "99.9" : 2824.7859522281055, + "99.99" : 2824.7859522281055, + "99.999" : 2824.7859522281055, + "99.9999" : 2824.7859522281055, + "100.0" : 2824.7859522281055 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2687.576466737567, + 2685.5244079379963, + 2691.1189811657555 + ], + [ + 2824.4863505006483, + 2824.7859522281055, + 2824.782033862034 + ], + [ + 2790.6171435181855, + 2796.1639672766546, + 2795.830847084459 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69477.58904509427, + "scoreError" : 2033.1449142317103, + "scoreConfidence" : [ + 67444.44413086255, + 71510.73395932598 + ], + "scorePercentiles" : { + "0.0" : 68354.45274228718, + "50.0" : 68850.00819272888, + "90.0" : 71104.42582085764, + "95.0" : 71104.42582085764, + "99.0" : 71104.42582085764, + "99.9" : 71104.42582085764, + "99.99" : 71104.42582085764, + "99.999" : 71104.42582085764, + "99.9999" : 71104.42582085764, + "100.0" : 71104.42582085764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68845.9116730038, + 68850.00819272888, + 68933.08606569297 + ], + [ + 68354.45274228718, + 68569.71784579945, + 68527.59360154229 + ], + [ + 71069.65064660512, + 71043.45481733108, + 71104.42582085764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.43246559746035, + "scoreError" : 5.017815172324881, + "scoreConfidence" : [ + 348.41465042513545, + 358.45028076978525 + ], + "scorePercentiles" : { + "0.0" : 348.49531796540316, + "50.0" : 352.22740012108295, + "90.0" : 357.6247499948426, + "95.0" : 357.6247499948426, + "99.0" : 357.6247499948426, + "99.9" : 357.6247499948426, + "99.99" : 357.6247499948426, + "99.999" : 357.6247499948426, + "99.9999" : 357.6247499948426, + "100.0" : 357.6247499948426 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.5264560603956, + 352.22740012108295, + 348.49531796540316 + ], + [ + 356.42376106443544, + 356.8220207221888, + 357.6247499948426 + ], + [ + 352.2169543217317, + 351.9050707919133, + 353.6504593351496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.90948380386186, + "scoreError" : 3.918996971616842, + "scoreConfidence" : [ + 104.99048683224501, + 112.82848077547871 + ], + "scorePercentiles" : { + "0.0" : 105.69252450514203, + "50.0" : 109.97755758368027, + "90.0" : 111.12718275777527, + "95.0" : 111.12718275777527, + "99.0" : 111.12718275777527, + "99.9" : 111.12718275777527, + "99.99" : 111.12718275777527, + "99.999" : 111.12718275777527, + "99.9999" : 111.12718275777527, + "100.0" : 111.12718275777527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.97755758368027, + 110.15002579246816, + 109.55958182687034 + ], + [ + 110.62620785006521, + 111.11818071668289, + 111.12718275777527 + ], + [ + 105.69252450514203, + 105.96696635595293, + 105.96712684611965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061097025447483445, + "scoreError" : 0.0011606211932044168, + "scoreConfidence" : [ + 0.05993640425427903, + 0.062257646640687864 + ], + "scorePercentiles" : { + "0.0" : 0.06035415747290153, + "50.0" : 0.06096801351030039, + "90.0" : 0.06199666086385081, + "95.0" : 0.06199666086385081, + "99.0" : 0.06199666086385081, + "99.9" : 0.06199666086385081, + "99.99" : 0.06199666086385081, + "99.999" : 0.06199666086385081, + "99.9999" : 0.06199666086385081, + "100.0" : 0.06199666086385081 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06199666086385081, + 0.061894619520075266, + 0.061959236395516704 + ], + [ + 0.06036282408083686, + 0.06035415747290153, + 0.06040292525837023 + ], + [ + 0.06096801351030039, + 0.06101391860841128, + 0.06092087331708803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.578972828265755E-4, + "scoreError" : 5.7237137478910345E-6, + "scoreConfidence" : [ + 3.5217356907868446E-4, + 3.6362099657446655E-4 + ], + "scorePercentiles" : { + "0.0" : 3.549562143708115E-4, + "50.0" : 3.5624617220250085E-4, + "90.0" : 3.6339893810142566E-4, + "95.0" : 3.6339893810142566E-4, + "99.0" : 3.6339893810142566E-4, + "99.9" : 3.6339893810142566E-4, + "99.99" : 3.6339893810142566E-4, + "99.999" : 3.6339893810142566E-4, + "99.9999" : 3.6339893810142566E-4, + "100.0" : 3.6339893810142566E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6191391529543857E-4, + 3.6339893810142566E-4, + 3.617474791706142E-4 + ], + [ + 3.563956431412455E-4, + 3.549562143708115E-4, + 3.553836690005984E-4 + ], + [ + 3.5512751742728077E-4, + 3.5590599672926385E-4, + 3.5624617220250085E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014230959816322204, + "scoreError" : 3.529362494757639E-4, + "scoreConfidence" : [ + 0.01387802356684644, + 0.014583896065797968 + ], + "scorePercentiles" : { + "0.0" : 0.014070434197529822, + "50.0" : 0.014109343967413465, + "90.0" : 0.014518360081650312, + "95.0" : 0.014518360081650312, + "99.0" : 0.014518360081650312, + "99.9" : 0.014518360081650312, + "99.99" : 0.014518360081650312, + "99.999" : 0.014518360081650312, + "99.9999" : 0.014518360081650312, + "100.0" : 0.014518360081650312 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014070434197529822, + 0.014071993049926826, + 0.01409282296653415 + ], + [ + 0.014109343967413465, + 0.014115185616529233, + 0.01408806176698895 + ], + [ + 0.014518360081650312, + 0.014509509125652376, + 0.014502927574674702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9697289381301906, + "scoreError" : 0.00528362052375522, + "scoreConfidence" : [ + 0.9644453176064354, + 0.9750125586539458 + ], + "scorePercentiles" : { + "0.0" : 0.9641568281912842, + "50.0" : 0.9692605071719326, + "90.0" : 0.9739204806194001, + "95.0" : 0.9739204806194001, + "99.0" : 0.9739204806194001, + "99.9" : 0.9739204806194001, + "99.99" : 0.9739204806194001, + "99.999" : 0.9739204806194001, + "99.9999" : 0.9739204806194001, + "100.0" : 0.9739204806194001 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9677952521049066, + 0.9674707717906549, + 0.9706912509948559 + ], + [ + 0.9641568281912842, + 0.9739204806194001, + 0.9733063868613139 + ], + [ + 0.9722907940890531, + 0.9692605071719326, + 0.9686681713483146 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013101354791376594, + "scoreError" : 4.999515490779988E-4, + "scoreConfidence" : [ + 0.012601403242298595, + 0.013601306340454592 + ], + "scorePercentiles" : { + "0.0" : 0.012865263901217797, + "50.0" : 0.013119884615840766, + "90.0" : 0.013265388737961957, + "95.0" : 0.013265388737961957, + "99.0" : 0.013265388737961957, + "99.9" : 0.013265388737961957, + "99.99" : 0.013265388737961957, + "99.999" : 0.013265388737961957, + "99.9999" : 0.013265388737961957, + "100.0" : 0.013265388737961957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012865263901217797, + 0.012979990903828231, + 0.012984937465915287 + ], + [ + 0.013257715973570058, + 0.013265388737961957, + 0.013254831765766244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5684094461451203, + "scoreError" : 0.06843728423472582, + "scoreConfidence" : [ + 3.4999721619103945, + 3.636846730379846 + ], + "scorePercentiles" : { + "0.0" : 3.5270711086036672, + "50.0" : 3.5678580502980344, + "90.0" : 3.595799877785766, + "95.0" : 3.595799877785766, + "99.0" : 3.595799877785766, + "99.9" : 3.595799877785766, + "99.99" : 3.595799877785766, + "99.999" : 3.595799877785766, + "99.9999" : 3.595799877785766, + "100.0" : 3.595799877785766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5617510263532766, + 3.595799877785766, + 3.5901185635319455 + ], + [ + 3.5270711086036672, + 3.5666760649072753, + 3.569040035688794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8218470565413725, + "scoreError" : 0.058995670696254006, + "scoreConfidence" : [ + 2.7628513858451185, + 2.8808427272376265 + ], + "scorePercentiles" : { + "0.0" : 2.7884896799553944, + "50.0" : 2.812975501265823, + "90.0" : 2.8689687375215147, + "95.0" : 2.8689687375215147, + "99.0" : 2.8689687375215147, + "99.9" : 2.8689687375215147, + "99.99" : 2.8689687375215147, + "99.999" : 2.8689687375215147, + "99.9999" : 2.8689687375215147, + "100.0" : 2.8689687375215147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.866157445558739, + 2.8689687375215147, + 2.865885706876791 + ], + [ + 2.7884896799553944, + 2.7952312970933484, + 2.788916612660346 + ], + [ + 2.8146177188291586, + 2.812975501265823, + 2.7953808091112355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17479665863226598, + "scoreError" : 0.0036510964053856694, + "scoreConfidence" : [ + 0.17114556222688032, + 0.17844775503765165 + ], + "scorePercentiles" : { + "0.0" : 0.17170469753266598, + "50.0" : 0.1757618755800056, + "90.0" : 0.17690241083337757, + "95.0" : 0.17690241083337757, + "99.0" : 0.17690241083337757, + "99.9" : 0.17690241083337757, + "99.99" : 0.17690241083337757, + "99.999" : 0.17690241083337757, + "99.9999" : 0.17690241083337757, + "100.0" : 0.17690241083337757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17690241083337757, + 0.17658258348636813, + 0.17661318091907738 + ], + [ + 0.1757618755800056, + 0.1759331799405359, + 0.17544330049122808 + ], + [ + 0.1724683128503182, + 0.17170469753266598, + 0.171760386056817 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3246266612392709, + "scoreError" : 0.019924162165017714, + "scoreConfidence" : [ + 0.30470249907425323, + 0.3445508234042886 + ], + "scorePercentiles" : { + "0.0" : 0.31273289608155863, + "50.0" : 0.3212355564549806, + "90.0" : 0.3402318470043888, + "95.0" : 0.3402318470043888, + "99.0" : 0.3402318470043888, + "99.9" : 0.3402318470043888, + "99.99" : 0.3402318470043888, + "99.999" : 0.3402318470043888, + "99.9999" : 0.3402318470043888, + "100.0" : 0.3402318470043888 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3220469740435399, + 0.3212355564549806, + 0.32113408535371374 + ], + [ + 0.3128711308700685, + 0.3127965790247412, + 0.31273289608155863 + ], + [ + 0.3402318470043888, + 0.3399265549134913, + 0.3386643274069559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1609434612920892, + "scoreError" : 0.005787544780688637, + "scoreConfidence" : [ + 0.15515591651140057, + 0.16673100607277783 + ], + "scorePercentiles" : { + "0.0" : 0.157457594693749, + "50.0" : 0.15970487859526966, + "90.0" : 0.16554137850320316, + "95.0" : 0.16554137850320316, + "99.0" : 0.16554137850320316, + "99.9" : 0.16554137850320316, + "99.99" : 0.16554137850320316, + "99.999" : 0.16554137850320316, + "99.9999" : 0.16554137850320316, + "100.0" : 0.16554137850320316 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15970487859526966, + 0.15976183559127072, + 0.1596239163421019 + ], + [ + 0.16554137850320316, + 0.16528086764511438, + 0.16534963091320953 + ], + [ + 0.15787519901172978, + 0.1578958503331544, + 0.157457594693749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38969563839387505, + "scoreError" : 0.01257371231763372, + "scoreConfidence" : [ + 0.37712192607624134, + 0.40226935071150877 + ], + "scorePercentiles" : { + "0.0" : 0.38017483816149633, + "50.0" : 0.3889050955510617, + "90.0" : 0.40367623961571064, + "95.0" : 0.40367623961571064, + "99.0" : 0.40367623961571064, + "99.9" : 0.40367623961571064, + "99.99" : 0.40367623961571064, + "99.999" : 0.40367623961571064, + "99.9999" : 0.40367623961571064, + "100.0" : 0.40367623961571064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3834444588190184, + 0.38162887341627233, + 0.38017483816149633 + ], + [ + 0.40367623961571064, + 0.39445489649731774, + 0.39294918110731264 + ], + [ + 0.3941998362568489, + 0.3878273261198371, + 0.3889050955510617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826806224850987, + "scoreError" : 0.002061095263214545, + "scoreConfidence" : [ + 0.15620696698529532, + 0.1603291575117244 + ], + "scorePercentiles" : { + "0.0" : 0.15657704847497964, + "50.0" : 0.15863054351929698, + "90.0" : 0.1598088950396318, + "95.0" : 0.1598088950396318, + "99.0" : 0.1598088950396318, + "99.9" : 0.1598088950396318, + "99.99" : 0.1598088950396318, + "99.999" : 0.1598088950396318, + "99.9999" : 0.1598088950396318, + "100.0" : 0.1598088950396318 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1598088950396318, + 0.1592978537840292, + 0.15920936771635993 + ], + [ + 0.15691187307788865, + 0.15657704847497964, + 0.15667079597048364 + ], + [ + 0.15878778983470682, + 0.15863054351929698, + 0.15851839281921218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048150610010993106, + "scoreError" : 0.001506079249802445, + "scoreConfidence" : [ + 0.04664453076119066, + 0.04965668926079555 + ], + "scorePercentiles" : { + "0.0" : 0.04693892552782028, + "50.0" : 0.04831327972558398, + "90.0" : 0.04916321137915607, + "95.0" : 0.04916321137915607, + "99.0" : 0.04916321137915607, + "99.9" : 0.04916321137915607, + "99.99" : 0.04916321137915607, + "99.999" : 0.04916321137915607, + "99.9999" : 0.04916321137915607, + "100.0" : 0.04916321137915607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048350991471009165, + 0.04831327972558398, + 0.048275269739509914 + ], + [ + 0.04721030312243299, + 0.04699559927439858, + 0.04693892552782028 + ], + [ + 0.04916321137915607, + 0.049058127318573605, + 0.049049782540453314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9279650.608622259, + "scoreError" : 462029.7659555513, + "scoreConfidence" : [ + 8817620.842666708, + 9741680.37457781 + ], + "scorePercentiles" : { + "0.0" : 8933317.997321429, + "50.0" : 9321904.258154707, + "90.0" : 9607548.77137368, + "95.0" : 9607548.77137368, + "99.0" : 9607548.77137368, + "99.9" : 9607548.77137368, + "99.99" : 9607548.77137368, + "99.999" : 9607548.77137368, + "99.9999" : 9607548.77137368, + "100.0" : 9607548.77137368 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8953302.709937332, + 8933317.997321429, + 8941444.654155497 + ], + [ + 9314768.808193669, + 9321904.258154707, + 9337448.018674137 + ], + [ + 9607548.77137368, + 9554760.581661891, + 9552359.678127985 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json b/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json new file mode 100644 index 0000000000..ac01ce7b4f --- /dev/null +++ b/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4095002146992455, + "scoreError" : 0.025505340753752086, + "scoreConfidence" : [ + 3.3839948739454933, + 3.4350055554529977 + ], + "scorePercentiles" : { + "0.0" : 3.404163195746615, + "50.0" : 3.4102788182455352, + "90.0" : 3.4132800265592973, + "95.0" : 3.4132800265592973, + "99.0" : 3.4132800265592973, + "99.9" : 3.4132800265592973, + "99.99" : 3.4132800265592973, + "99.999" : 3.4132800265592973, + "99.9999" : 3.4132800265592973, + "100.0" : 3.4132800265592973 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4132800265592973, + 3.411452008475927 + ], + [ + 3.404163195746615, + 3.4091056280151433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7245578519058582, + "scoreError" : 0.024912795202235074, + "scoreConfidence" : [ + 1.6996450567036232, + 1.7494706471080932 + ], + "scorePercentiles" : { + "0.0" : 1.7211598482106032, + "50.0" : 1.7235201540372407, + "90.0" : 1.7300312513383473, + "95.0" : 1.7300312513383473, + "99.0" : 1.7300312513383473, + "99.9" : 1.7300312513383473, + "99.99" : 1.7300312513383473, + "99.999" : 1.7300312513383473, + "99.9999" : 1.7300312513383473, + "100.0" : 1.7300312513383473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211598482106032, + 1.7228377141578146 + ], + [ + 1.7242025939166667, + 1.7300312513383473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8653820156363996, + "scoreError" : 0.010780862871240771, + "scoreConfidence" : [ + 0.8546011527651588, + 0.8761628785076404 + ], + "scorePercentiles" : { + "0.0" : 0.8629236869657826, + "50.0" : 0.8659809453132804, + "90.0" : 0.8666424849532549, + "95.0" : 0.8666424849532549, + "99.0" : 0.8666424849532549, + "99.9" : 0.8666424849532549, + "99.99" : 0.8666424849532549, + "99.999" : 0.8666424849532549, + "99.9999" : 0.8666424849532549, + "100.0" : 0.8666424849532549 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8659980265177031, + 0.8659638641088577 + ], + [ + 0.8629236869657826, + 0.8666424849532549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.845427151308781, + "scoreError" : 0.23528497239241766, + "scoreConfidence" : [ + 15.610142178916364, + 16.0807121237012 + ], + "scorePercentiles" : { + "0.0" : 15.685382986452229, + "50.0" : 15.794741526952283, + "90.0" : 16.05433497503823, + "95.0" : 16.05433497503823, + "99.0" : 16.05433497503823, + "99.9" : 16.05433497503823, + "99.99" : 16.05433497503823, + "99.999" : 16.05433497503823, + "99.9999" : 16.05433497503823, + "100.0" : 16.05433497503823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.705963889103662, + 15.983985656350747, + 15.907397863104613 + ], + [ + 15.794741526952283, + 15.685382986452229, + 15.783258404085283 + ], + [ + 15.707878097947686, + 16.05433497503823, + 15.985900962744292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2618.6331027609417, + "scoreError" : 164.53393097173048, + "scoreConfidence" : [ + 2454.099171789211, + 2783.1670337326723 + ], + "scorePercentiles" : { + "0.0" : 2526.588483782207, + "50.0" : 2574.4482466906097, + "90.0" : 2779.116655176981, + "95.0" : 2779.116655176981, + "99.0" : 2779.116655176981, + "99.9" : 2779.116655176981, + "99.99" : 2779.116655176981, + "99.999" : 2779.116655176981, + "99.9999" : 2779.116655176981, + "100.0" : 2779.116655176981 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2574.4482466906097, + 2567.169496959159, + 2583.5862751102313 + ], + [ + 2691.7266850893725, + 2759.1161944439864, + 2779.116655176981 + ], + [ + 2526.588483782207, + 2550.387208827728, + 2535.558678768202 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70548.16913826618, + "scoreError" : 244.49656136443414, + "scoreConfidence" : [ + 70303.67257690175, + 70792.66569963061 + ], + "scorePercentiles" : { + "0.0" : 70333.39038528103, + "50.0" : 70574.58948612705, + "90.0" : 70727.34078165884, + "95.0" : 70727.34078165884, + "99.0" : 70727.34078165884, + "99.9" : 70727.34078165884, + "99.99" : 70727.34078165884, + "99.999" : 70727.34078165884, + "99.9999" : 70727.34078165884, + "100.0" : 70727.34078165884 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70727.34078165884, + 70333.39038528103, + 70469.07400113309 + ], + [ + 70446.7874393602, + 70574.58948612705, + 70377.48010235681 + ], + [ + 70686.9996314109, + 70637.21329216441, + 70680.64712490341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 333.90502579287846, + "scoreError" : 10.48452847769103, + "scoreConfidence" : [ + 323.42049731518745, + 344.3895542705695 + ], + "scorePercentiles" : { + "0.0" : 323.7340712326594, + "50.0" : 332.554273388344, + "90.0" : 344.35325070599015, + "95.0" : 344.35325070599015, + "99.0" : 344.35325070599015, + "99.9" : 344.35325070599015, + "99.99" : 344.35325070599015, + "99.999" : 344.35325070599015, + "99.9999" : 344.35325070599015, + "100.0" : 344.35325070599015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 323.7340712326594, + 330.9442044287599, + 332.554273388344 + ], + [ + 344.35325070599015, + 341.53721675036223, + 330.2777034476568 + ], + [ + 337.1697350039635, + 332.963429061658, + 331.611348116512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.14950954869005, + "scoreError" : 4.836651540160923, + "scoreConfidence" : [ + 100.31285800852912, + 109.98616108885098 + ], + "scorePercentiles" : { + "0.0" : 100.91133191706817, + "50.0" : 106.59798299070972, + "90.0" : 108.39761451537689, + "95.0" : 108.39761451537689, + "99.0" : 108.39761451537689, + "99.9" : 108.39761451537689, + "99.99" : 108.39761451537689, + "99.999" : 108.39761451537689, + "99.9999" : 108.39761451537689, + "100.0" : 108.39761451537689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.27462527804794, + 100.91133191706817, + 102.60138617565751 + ], + [ + 106.59798299070972, + 104.85781049140613, + 106.73497928138285 + ], + [ + 108.39761451537689, + 108.05399948905632, + 106.91585579950491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0635880857287969, + "scoreError" : 0.0011326306299092221, + "scoreConfidence" : [ + 0.062455455098887676, + 0.06472071635870612 + ], + "scorePercentiles" : { + "0.0" : 0.062470017516351305, + "50.0" : 0.0637208354944978, + "90.0" : 0.06454115485794684, + "95.0" : 0.06454115485794684, + "99.0" : 0.06454115485794684, + "99.9" : 0.06454115485794684, + "99.99" : 0.06454115485794684, + "99.999" : 0.06454115485794684, + "99.9999" : 0.06454115485794684, + "100.0" : 0.06454115485794684 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062470017516351305, + 0.06317745563438563, + 0.06288347814522062 + ], + [ + 0.06391383142340362, + 0.06341452927486604, + 0.0637208354944978 + ], + [ + 0.06437003169535384, + 0.06380143751714634, + 0.06454115485794684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.731061859869773E-4, + "scoreError" : 7.774255833409394E-6, + "scoreConfidence" : [ + 3.6533193015356787E-4, + 3.808804418203867E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6551122994718863E-4, + "50.0" : 3.755504457892557E-4, + "90.0" : 3.7857010140567406E-4, + "95.0" : 3.7857010140567406E-4, + "99.0" : 3.7857010140567406E-4, + "99.9" : 3.7857010140567406E-4, + "99.99" : 3.7857010140567406E-4, + "99.999" : 3.7857010140567406E-4, + "99.9999" : 3.7857010140567406E-4, + "100.0" : 3.7857010140567406E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.757933912683506E-4, + 3.76255239570355E-4, + 3.7088208784642214E-4 + ], + [ + 3.7857010140567406E-4, + 3.755504457892557E-4, + 3.770222975377734E-4 + ], + [ + 3.71370276442085E-4, + 3.670006040756906E-4, + 3.6551122994718863E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014464432942230857, + "scoreError" : 3.773796000125417E-4, + "scoreConfidence" : [ + 0.014087053342218315, + 0.014841812542243399 + ], + "scorePercentiles" : { + "0.0" : 0.01420708790665494, + "50.0" : 0.014423894288491884, + "90.0" : 0.01477697409632679, + "95.0" : 0.01477697409632679, + "99.0" : 0.01477697409632679, + "99.9" : 0.01477697409632679, + "99.99" : 0.01477697409632679, + "99.999" : 0.01477697409632679, + "99.9999" : 0.01477697409632679, + "100.0" : 0.01477697409632679 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014423894288491884, + 0.014402292067465215, + 0.014473567330947153 + ], + [ + 0.01474985725411184, + 0.014677930232216797, + 0.01477697409632679 + ], + [ + 0.01420708790665494, + 0.014254813051832719, + 0.014213480252030371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0010298916700413, + "scoreError" : 0.015481496915640302, + "scoreConfidence" : [ + 0.985548394754401, + 1.0165113885856816 + ], + "scorePercentiles" : { + "0.0" : 0.991348368259318, + "50.0" : 0.9985827688467299, + "90.0" : 1.022128904333606, + "95.0" : 1.022128904333606, + "99.0" : 1.022128904333606, + "99.9" : 1.022128904333606, + "99.99" : 1.022128904333606, + "99.999" : 1.022128904333606, + "99.9999" : 1.022128904333606, + "100.0" : 1.022128904333606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9941657343672333, + 0.9980671982035928, + 0.991348368259318 + ], + [ + 0.9985827688467299, + 1.0013906113336004, + 1.022128904333606 + ], + [ + 1.005601708396179, + 1.0039356745306696, + 0.9940480567594433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012962170975303838, + "scoreError" : 3.677345354410526E-4, + "scoreConfidence" : [ + 0.012594436439862786, + 0.01332990551074489 + ], + "scorePercentiles" : { + "0.0" : 0.012833838495399187, + "50.0" : 0.012916732160113319, + "90.0" : 0.01318912247864082, + "95.0" : 0.01318912247864082, + "99.0" : 0.01318912247864082, + "99.9" : 0.01318912247864082, + "99.99" : 0.01318912247864082, + "99.999" : 0.01318912247864082, + "99.9999" : 0.01318912247864082, + "100.0" : 0.01318912247864082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012908908054701438, + 0.01318912247864082, + 0.01304114794828526 + ], + [ + 0.012833838495399187, + 0.012875452609271113, + 0.012924556265525201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9034817930410655, + "scoreError" : 0.22224119148390883, + "scoreConfidence" : [ + 3.681240601557157, + 4.125722984524974 + ], + "scorePercentiles" : { + "0.0" : 3.7797827596371882, + "50.0" : 3.8966766567625974, + "90.0" : 3.991222782122905, + "95.0" : 3.991222782122905, + "99.0" : 3.991222782122905, + "99.9" : 3.991222782122905, + "99.99" : 3.991222782122905, + "99.999" : 3.991222782122905, + "99.9999" : 3.991222782122905, + "100.0" : 3.991222782122905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7797827596371882, + 3.868858556071152, + 3.900277293291732 + ], + [ + 3.893076020233463, + 3.9876733468899523, + 3.991222782122905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9975317276163223, + "scoreError" : 0.10471051985244478, + "scoreConfidence" : [ + 2.8928212077638773, + 3.102242247468767 + ], + "scorePercentiles" : { + "0.0" : 2.902337391468369, + "50.0" : 3.0179460974652987, + "90.0" : 3.090146808773556, + "95.0" : 3.090146808773556, + "99.0" : 3.090146808773556, + "99.9" : 3.090146808773556, + "99.99" : 3.090146808773556, + "99.999" : 3.090146808773556, + "99.9999" : 3.090146808773556, + "100.0" : 3.090146808773556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.052372484894721, + 3.0179460974652987, + 3.090146808773556 + ], + [ + 2.997661714028777, + 2.902337391468369, + 2.909984528658714 + ], + [ + 3.0189954114095987, + 2.963754678222222, + 3.0245864336256427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17330625960990392, + "scoreError" : 0.0066047385708272064, + "scoreConfidence" : [ + 0.1667015210390767, + 0.17991099818073114 + ], + "scorePercentiles" : { + "0.0" : 0.1698520789965351, + "50.0" : 0.17148525901982303, + "90.0" : 0.17856710444083354, + "95.0" : 0.17856710444083354, + "99.0" : 0.17856710444083354, + "99.9" : 0.17856710444083354, + "99.99" : 0.17856710444083354, + "99.999" : 0.17856710444083354, + "99.9999" : 0.17856710444083354, + "100.0" : 0.17856710444083354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17148525901982303, + 0.17180318619753637, + 0.17054395748418233 + ], + [ + 0.17856710444083354, + 0.17850592938488452, + 0.17838055207720163 + ], + [ + 0.17040596131890604, + 0.17021230756923286, + 0.1698520789965351 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3292259542440874, + "scoreError" : 0.012091801546312187, + "scoreConfidence" : [ + 0.31713415269777523, + 0.3413177557903996 + ], + "scorePercentiles" : { + "0.0" : 0.3221258255113545, + "50.0" : 0.3256091559274574, + "90.0" : 0.33965986006385435, + "95.0" : 0.33965986006385435, + "99.0" : 0.33965986006385435, + "99.9" : 0.33965986006385435, + "99.99" : 0.33965986006385435, + "99.999" : 0.33965986006385435, + "99.9999" : 0.33965986006385435, + "100.0" : 0.33965986006385435 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3256091559274574, + 0.32656926765070865, + 0.3250800603972304 + ], + [ + 0.33965986006385435, + 0.33829378360001355, + 0.33800826975596565 + ], + [ + 0.3221258255113545, + 0.32344406209974774, + 0.3242433031904546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.164591468070587, + "scoreError" : 0.010540941826718983, + "scoreConfidence" : [ + 0.154050526243868, + 0.175132409897306 + ], + "scorePercentiles" : { + "0.0" : 0.15646001839943674, + "50.0" : 0.16499985348468849, + "90.0" : 0.1718761545296736, + "95.0" : 0.1718761545296736, + "99.0" : 0.1718761545296736, + "99.9" : 0.1718761545296736, + "99.99" : 0.1718761545296736, + "99.999" : 0.1718761545296736, + "99.9999" : 0.1718761545296736, + "100.0" : 0.1718761545296736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16499985348468849, + 0.16565805920453228, + 0.16446735321689362 + ], + [ + 0.17158116838529244, + 0.1712827279562894, + 0.1718761545296736 + ], + [ + 0.15763110239435066, + 0.15646001839943674, + 0.15736677506412577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39030310779049593, + "scoreError" : 0.0062346041971935336, + "scoreConfidence" : [ + 0.3840685035933024, + 0.39653771198768945 + ], + "scorePercentiles" : { + "0.0" : 0.3861410541740675, + "50.0" : 0.38990841648471614, + "90.0" : 0.3984212686454183, + "95.0" : 0.3984212686454183, + "99.0" : 0.3984212686454183, + "99.9" : 0.3984212686454183, + "99.99" : 0.3984212686454183, + "99.999" : 0.3984212686454183, + "99.9999" : 0.3984212686454183, + "100.0" : 0.3984212686454183 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38856887371774945, + 0.38621954667284597, + 0.3861410541740675 + ], + [ + 0.3902935326854779, + 0.38990841648471614, + 0.389275338030362 + ], + [ + 0.3984212686454183, + 0.39248510859497643, + 0.39141483110884967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15973932982259292, + "scoreError" : 0.004125870217414085, + "scoreConfidence" : [ + 0.15561345960517883, + 0.16386520004000701 + ], + "scorePercentiles" : { + "0.0" : 0.15601926915876185, + "50.0" : 0.1600415154837161, + "90.0" : 0.16276038462289638, + "95.0" : 0.16276038462289638, + "99.0" : 0.16276038462289638, + "99.9" : 0.16276038462289638, + "99.99" : 0.16276038462289638, + "99.999" : 0.16276038462289638, + "99.9999" : 0.16276038462289638, + "100.0" : 0.16276038462289638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16039395408032334, + 0.1600415154837161, + 0.1600059933438935 + ], + [ + 0.1571330822098614, + 0.15717875150495889, + 0.15601926915876185 + ], + [ + 0.16276038462289638, + 0.16258213159049895, + 0.16153888640842567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04749754239285639, + "scoreError" : 6.638648530745888E-4, + "scoreConfidence" : [ + 0.0468336775397818, + 0.04816140724593098 + ], + "scorePercentiles" : { + "0.0" : 0.04688907084816175, + "50.0" : 0.04767168074233331, + "90.0" : 0.04789557901240481, + "95.0" : 0.04789557901240481, + "99.0" : 0.04789557901240481, + "99.9" : 0.04789557901240481, + "99.99" : 0.04789557901240481, + "99.999" : 0.04789557901240481, + "99.9999" : 0.04789557901240481, + "100.0" : 0.04789557901240481 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046991556753302285, + 0.04688907084816175, + 0.04708833516975091 + ], + [ + 0.047696189976295295, + 0.04767168074233331, + 0.04775386363592952 + ], + [ + 0.04789557901240481, + 0.047608589495784316, + 0.04788301590174531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9596764.60533551, + "scoreError" : 238953.03479679223, + "scoreConfidence" : [ + 9357811.570538716, + 9835717.640132302 + ], + "scorePercentiles" : { + "0.0" : 9416117.540921919, + "50.0" : 9583250.818007663, + "90.0" : 9791073.728962818, + "95.0" : 9791073.728962818, + "99.0" : 9791073.728962818, + "99.9" : 9791073.728962818, + "99.99" : 9791073.728962818, + "99.999" : 9791073.728962818, + "99.9999" : 9791073.728962818, + "100.0" : 9791073.728962818 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9583250.818007663, + 9601638.153550863, + 9492654.818785578 + ], + [ + 9515580.683158897, + 9452075.962192817, + 9416117.540921919 + ], + [ + 9759589.867317073, + 9758899.875121951, + 9791073.728962818 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json b/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json new file mode 100644 index 0000000000..93c7bd839e --- /dev/null +++ b/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420985462330865, + "scoreError" : 0.021308159867503323, + "scoreConfidence" : [ + 3.399677302463362, + 3.442293622198368 + ], + "scorePercentiles" : { + "0.0" : 3.418007258992135, + "50.0" : 3.420373229961676, + "90.0" : 3.425188130407973, + "95.0" : 3.425188130407973, + "99.0" : 3.425188130407973, + "99.9" : 3.425188130407973, + "99.99" : 3.425188130407973, + "99.999" : 3.425188130407973, + "99.9999" : 3.425188130407973, + "100.0" : 3.425188130407973 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418007258992135, + 3.42200693473186 + ], + [ + 3.4187395251914925, + 3.425188130407973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7259211816186313, + "scoreError" : 0.011219628682282887, + "scoreConfidence" : [ + 1.7147015529363483, + 1.7371408103009143 + ], + "scorePercentiles" : { + "0.0" : 1.7240481148983835, + "50.0" : 1.7259595429086452, + "90.0" : 1.727717525758852, + "95.0" : 1.727717525758852, + "99.0" : 1.727717525758852, + "99.9" : 1.727717525758852, + "99.99" : 1.727717525758852, + "99.999" : 1.727717525758852, + "99.9999" : 1.727717525758852, + "100.0" : 1.727717525758852 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724885876907566, + 1.7270332089097247 + ], + [ + 1.7240481148983835, + 1.727717525758852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674466325046533, + "scoreError" : 0.007705896262075907, + "scoreConfidence" : [ + 0.8597407362425773, + 0.8751525287667292 + ], + "scorePercentiles" : { + "0.0" : 0.8666059785196016, + "50.0" : 0.866992153998527, + "90.0" : 0.8691962435019575, + "95.0" : 0.8691962435019575, + "99.0" : 0.8691962435019575, + "99.9" : 0.8691962435019575, + "99.99" : 0.8691962435019575, + "99.999" : 0.8691962435019575, + "99.9999" : 0.8691962435019575, + "100.0" : 0.8691962435019575 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667857553889012, + 0.8691962435019575 + ], + [ + 0.8666059785196016, + 0.8671985526081527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.154507473954208, + "scoreError" : 0.3032032937894869, + "scoreConfidence" : [ + 15.851304180164721, + 16.457710767743695 + ], + "scorePercentiles" : { + "0.0" : 15.883888547322103, + "50.0" : 16.237351237284106, + "90.0" : 16.350840322494335, + "95.0" : 16.350840322494335, + "99.0" : 16.350840322494335, + "99.9" : 16.350840322494335, + "99.99" : 16.350840322494335, + "99.999" : 16.350840322494335, + "99.9999" : 16.350840322494335, + "100.0" : 16.350840322494335 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.217804435983428, + 16.350840322494335, + 16.237351237284106 + ], + [ + 15.902125351212634, + 15.977259361703576, + 15.883888547322103 + ], + [ + 16.276565741155228, + 16.272309984981842, + 16.272422283450616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2644.344808486787, + "scoreError" : 86.02528562254417, + "scoreConfidence" : [ + 2558.3195228642426, + 2730.370094109331 + ], + "scorePercentiles" : { + "0.0" : 2586.8209241778127, + "50.0" : 2637.5472685222603, + "90.0" : 2708.2319955639605, + "95.0" : 2708.2319955639605, + "99.0" : 2708.2319955639605, + "99.9" : 2708.2319955639605, + "99.99" : 2708.2319955639605, + "99.999" : 2708.2319955639605, + "99.9999" : 2708.2319955639605, + "100.0" : 2708.2319955639605 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.5472685222603, + 2634.608120991165, + 2640.9078602226705 + ], + [ + 2707.3095209289977, + 2703.7568171125213, + 2708.2319955639605 + ], + [ + 2587.4985780982424, + 2592.4221907634533, + 2586.8209241778127 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70325.77067177565, + "scoreError" : 1291.3849307178716, + "scoreConfidence" : [ + 69034.38574105778, + 71617.15560249353 + ], + "scorePercentiles" : { + "0.0" : 69322.45195764846, + "50.0" : 70592.4237150667, + "90.0" : 71095.16711300776, + "95.0" : 71095.16711300776, + "99.0" : 71095.16711300776, + "99.9" : 71095.16711300776, + "99.99" : 71095.16711300776, + "99.999" : 71095.16711300776, + "99.9999" : 71095.16711300776, + "100.0" : 71095.16711300776 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70613.44484999884, + 70468.08939852084, + 70592.4237150667 + ], + [ + 71073.30799444801, + 71049.2033306343, + 71095.16711300776 + ], + [ + 69354.70219205428, + 69322.45195764846, + 69363.1454946017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.7577166349173, + "scoreError" : 13.198336746781516, + "scoreConfidence" : [ + 327.55937988813577, + 353.95605338169884 + ], + "scorePercentiles" : { + "0.0" : 330.78040096354056, + "50.0" : 341.8254902127628, + "90.0" : 349.35471838817614, + "95.0" : 349.35471838817614, + "99.0" : 349.35471838817614, + "99.9" : 349.35471838817614, + "99.99" : 349.35471838817614, + "99.999" : 349.35471838817614, + "99.9999" : 349.35471838817614, + "100.0" : 349.35471838817614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.31589625960527, + 349.35471838817614, + 349.2481281662378 + ], + [ + 330.78040096354056, + 331.33226859378885, + 331.6847680735642 + ], + [ + 342.2954285076341, + 341.8254902127628, + 340.98235054894616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.89965983414605, + "scoreError" : 1.0234192467503809, + "scoreConfidence" : [ + 107.87624058739567, + 109.92307908089643 + ], + "scorePercentiles" : { + "0.0" : 108.37603229365496, + "50.0" : 108.5505522600155, + "90.0" : 109.83768561008253, + "95.0" : 109.83768561008253, + "99.0" : 109.83768561008253, + "99.9" : 109.83768561008253, + "99.99" : 109.83768561008253, + "99.999" : 109.83768561008253, + "99.9999" : 109.83768561008253, + "100.0" : 109.83768561008253 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.37603229365496, + 108.5505522600155, + 108.56280243220073 + ], + [ + 109.55591592645746, + 109.83768561008253, + 109.71555007594219 + ], + [ + 108.48281995549353, + 108.4905998536738, + 108.52498009979388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06272724120605161, + "scoreError" : 0.0022162873271655403, + "scoreConfidence" : [ + 0.06051095387888607, + 0.06494352853321715 + ], + "scorePercentiles" : { + "0.0" : 0.06136190240535068, + "50.0" : 0.06223583766694465, + "90.0" : 0.06464186464858017, + "95.0" : 0.06464186464858017, + "99.0" : 0.06464186464858017, + "99.9" : 0.06464186464858017, + "99.99" : 0.06464186464858017, + "99.999" : 0.06464186464858017, + "99.9999" : 0.06464186464858017, + "100.0" : 0.06464186464858017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0640337739962861, + 0.06457937539311984, + 0.06464186464858017 + ], + [ + 0.06165480211595847, + 0.06136190240535068, + 0.061548181982680625 + ], + [ + 0.06226324983967474, + 0.06223583766694465, + 0.062226182805869105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.710390379094124E-4, + "scoreError" : 1.1928445832262768E-5, + "scoreConfidence" : [ + 3.591105920771496E-4, + 3.829674837416752E-4 + ], + "scorePercentiles" : { + "0.0" : 3.626336021150838E-4, + "50.0" : 3.705256004146279E-4, + "90.0" : 3.799144246528192E-4, + "95.0" : 3.799144246528192E-4, + "99.0" : 3.799144246528192E-4, + "99.9" : 3.799144246528192E-4, + "99.99" : 3.799144246528192E-4, + "99.999" : 3.799144246528192E-4, + "99.9999" : 3.799144246528192E-4, + "100.0" : 3.799144246528192E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.799144246528192E-4, + 3.793384301920466E-4, + 3.7943793885042047E-4 + ], + [ + 3.626336021150838E-4, + 3.6448350332461536E-4, + 3.62749219272948E-4 + ], + [ + 3.70708421954848E-4, + 3.705256004146279E-4, + 3.695602004073025E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014321677295737002, + "scoreError" : 4.099545398900902E-4, + "scoreConfidence" : [ + 0.013911722755846912, + 0.014731631835627092 + ], + "scorePercentiles" : { + "0.0" : 0.014128172541091303, + "50.0" : 0.014189505785698575, + "90.0" : 0.014654304488123552, + "95.0" : 0.014654304488123552, + "99.0" : 0.014654304488123552, + "99.9" : 0.014654304488123552, + "99.99" : 0.014654304488123552, + "99.999" : 0.014654304488123552, + "99.9999" : 0.014654304488123552, + "100.0" : 0.014654304488123552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014189505785698575, + 0.014186176067956552, + 0.014195022822474986 + ], + [ + 0.014128172541091303, + 0.014130851554584623, + 0.014130318505141966 + ], + [ + 0.014640681621466511, + 0.01464006227509494, + 0.014654304488123552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.058156856583621, + "scoreError" : 0.15887940561407896, + "scoreConfidence" : [ + 0.899277450969542, + 1.2170362621977 + ], + "scorePercentiles" : { + "0.0" : 0.9879297991702065, + "50.0" : 1.0016554988982371, + "90.0" : 1.18968641232453, + "95.0" : 1.18968641232453, + "99.0" : 1.18968641232453, + "99.9" : 1.18968641232453, + "99.99" : 1.18968641232453, + "99.999" : 1.18968641232453, + "99.9999" : 1.18968641232453, + "100.0" : 1.18968641232453 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.18968641232453, + 1.1785333975960406, + 1.183730490530303 + ], + [ + 1.0016554988982371, + 1.0042734961839728, + 0.9910632743038351 + ], + [ + 0.9879297991702065, + 0.9945502313276977, + 0.9919891089177661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01328452052372637, + "scoreError" : 9.392093654110593E-4, + "scoreConfidence" : [ + 0.012345311158315312, + 0.01422372988913743 + ], + "scorePercentiles" : { + "0.0" : 0.012975986001863305, + "50.0" : 0.013256764035906334, + "90.0" : 0.01362551115901114, + "95.0" : 0.01362551115901114, + "99.0" : 0.01362551115901114, + "99.9" : 0.01362551115901114, + "99.99" : 0.01362551115901114, + "99.999" : 0.01362551115901114, + "99.9999" : 0.01362551115901114, + "100.0" : 0.01362551115901114 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01362551115901114, + 0.013530204566610382, + 0.013610755139983395 + ], + [ + 0.012975986001863305, + 0.012983323505202288, + 0.012981342769687702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8199575825224277, + "scoreError" : 0.05323858201215984, + "scoreConfidence" : [ + 3.766719000510268, + 3.8731961645345874 + ], + "scorePercentiles" : { + "0.0" : 3.796875929384966, + "50.0" : 3.819544478009818, + "90.0" : 3.8509473918398767, + "95.0" : 3.8509473918398767, + "99.0" : 3.8509473918398767, + "99.9" : 3.8509473918398767, + "99.99" : 3.8509473918398767, + "99.999" : 3.8509473918398767, + "99.9999" : 3.8509473918398767, + "100.0" : 3.8509473918398767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8140265087719296, + 3.8509473918398767, + 3.8269707582249426 + ], + [ + 3.796875929384966, + 3.8058624596651445, + 3.8250624472477064 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.901999271654215, + "scoreError" : 0.06511539595555306, + "scoreConfidence" : [ + 2.836883875698662, + 2.9671146676097684 + ], + "scorePercentiles" : { + "0.0" : 2.863777385738832, + "50.0" : 2.8855375709751874, + "90.0" : 2.9610254289520426, + "95.0" : 2.9610254289520426, + "99.0" : 2.9610254289520426, + "99.9" : 2.9610254289520426, + "99.99" : 2.9610254289520426, + "99.999" : 2.9610254289520426, + "99.9999" : 2.9610254289520426, + "100.0" : 2.9610254289520426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.863777385738832, + 2.873600486494253, + 2.8855375709751874 + ], + [ + 2.8745960767461916, + 2.871018776406429, + 2.8936733446180556 + ], + [ + 2.9540984152392205, + 2.9610254289520426, + 2.9406659597177303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18278995623871602, + "scoreError" : 0.01646910130162921, + "scoreConfidence" : [ + 0.16632085493708682, + 0.19925905754034523 + ], + "scorePercentiles" : { + "0.0" : 0.17524887399891348, + "50.0" : 0.17712125903294368, + "90.0" : 0.1963312424658879, + "95.0" : 0.1963312424658879, + "99.0" : 0.1963312424658879, + "99.9" : 0.1963312424658879, + "99.99" : 0.1963312424658879, + "99.999" : 0.1963312424658879, + "99.9999" : 0.1963312424658879, + "100.0" : 0.1963312424658879 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17712125903294368, + 0.17764719309683263, + 0.17682571326519786 + ], + [ + 0.1963312424658879, + 0.19568520027786473, + 0.19540450698555992 + ], + [ + 0.17527204134534494, + 0.17557357567989887, + 0.17524887399891348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3232566254882523, + "scoreError" : 0.02282913570582237, + "scoreConfidence" : [ + 0.30042748978242995, + 0.34608576119407464 + ], + "scorePercentiles" : { + "0.0" : 0.3092274280148423, + "50.0" : 0.3201938921298668, + "90.0" : 0.3405121527853446, + "95.0" : 0.3405121527853446, + "99.0" : 0.3405121527853446, + "99.9" : 0.3405121527853446, + "99.99" : 0.3405121527853446, + "99.999" : 0.3405121527853446, + "99.9999" : 0.3405121527853446, + "100.0" : 0.3405121527853446 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32029835740823775, + 0.31994934137445613, + 0.3201938921298668 + ], + [ + 0.3405121527853446, + 0.3400584822157236, + 0.34022206205559147 + ], + [ + 0.3092274280148423, + 0.30933073147947665, + 0.30951718193073136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1657651871890437, + "scoreError" : 0.007932720842646653, + "scoreConfidence" : [ + 0.15783246634639705, + 0.17369790803169036 + ], + "scorePercentiles" : { + "0.0" : 0.1593353740320576, + "50.0" : 0.16877857649659922, + "90.0" : 0.16972019656495027, + "95.0" : 0.16972019656495027, + "99.0" : 0.16972019656495027, + "99.9" : 0.16972019656495027, + "99.99" : 0.16972019656495027, + "99.999" : 0.16972019656495027, + "99.9999" : 0.16972019656495027, + "100.0" : 0.16972019656495027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16877857649659922, + 0.16808839190506605, + 0.16972019656495027 + ], + [ + 0.1593642279485586, + 0.15979414727877025, + 0.1593353740320576 + ], + [ + 0.1687985193099723, + 0.16892914557924255, + 0.16907810558617659 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3922519583598169, + "scoreError" : 0.00540791058135611, + "scoreConfidence" : [ + 0.3868440477784608, + 0.397659868941173 + ], + "scorePercentiles" : { + "0.0" : 0.38899327481717755, + "50.0" : 0.3920643285372643, + "90.0" : 0.39907136154674966, + "95.0" : 0.39907136154674966, + "99.0" : 0.39907136154674966, + "99.9" : 0.39907136154674966, + "99.99" : 0.39907136154674966, + "99.999" : 0.39907136154674966, + "99.9999" : 0.39907136154674966, + "100.0" : 0.39907136154674966 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3941107479703634, + 0.39320674989187276, + 0.39292061883619506 + ], + [ + 0.39907136154674966, + 0.3920643285372643, + 0.3918314238304208 + ], + [ + 0.38903332743328406, + 0.38899327481717755, + 0.38903579237502434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15861264541642875, + "scoreError" : 0.003450571682714868, + "scoreConfidence" : [ + 0.15516207373371388, + 0.16206321709914362 + ], + "scorePercentiles" : { + "0.0" : 0.15590977652359644, + "50.0" : 0.15834482064761302, + "90.0" : 0.1617350184858728, + "95.0" : 0.1617350184858728, + "99.0" : 0.1617350184858728, + "99.9" : 0.1617350184858728, + "99.99" : 0.1617350184858728, + "99.999" : 0.1617350184858728, + "99.9999" : 0.1617350184858728, + "100.0" : 0.1617350184858728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.160611737548785, + 0.15831396635901657, + 0.15834482064761302 + ], + [ + 0.1566366366299104, + 0.15627956014314962, + 0.15590977652359644 + ], + [ + 0.1617350184858728, + 0.16011737287647107, + 0.15956491953344396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047483792777320843, + "scoreError" : 3.9679518207553995E-4, + "scoreConfidence" : [ + 0.0470869975952453, + 0.047880587959396384 + ], + "scorePercentiles" : { + "0.0" : 0.04715763853285422, + "50.0" : 0.047544488575204914, + "90.0" : 0.047805480103640816, + "95.0" : 0.047805480103640816, + "99.0" : 0.047805480103640816, + "99.9" : 0.047805480103640816, + "99.99" : 0.047805480103640816, + "99.999" : 0.047805480103640816, + "99.9999" : 0.047805480103640816, + "100.0" : 0.047805480103640816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047805480103640816, + 0.0477210462219762, + 0.04757783843280919 + ], + [ + 0.04722691685832621, + 0.04715763853285422, + 0.04722577149684536 + ], + [ + 0.04766301272586019, + 0.047544488575204914, + 0.04743194204837049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9409975.270078996, + "scoreError" : 266484.5794582535, + "scoreConfidence" : [ + 9143490.690620743, + 9676459.84953725 + ], + "scorePercentiles" : { + "0.0" : 9229127.362546125, + "50.0" : 9368682.052434457, + "90.0" : 9608553.345821325, + "95.0" : 9608553.345821325, + "99.0" : 9608553.345821325, + "99.9" : 9608553.345821325, + "99.99" : 9608553.345821325, + "99.999" : 9608553.345821325, + "99.9999" : 9608553.345821325, + "100.0" : 9608553.345821325 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9229127.362546125, + 9258536.712303422, + 9247606.292051757 + ], + [ + 9608553.345821325, + 9604708.076775432, + 9604726.285988484 + ], + [ + 9404343.094924811, + 9363494.20786517, + 9368682.052434457 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json b/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json new file mode 100644 index 0000000000..cc683602ae --- /dev/null +++ b/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4194744891916873, + "scoreError" : 0.02554187101683565, + "scoreConfidence" : [ + 3.3939326181748517, + 3.445016360208523 + ], + "scorePercentiles" : { + "0.0" : 3.415566520359219, + "50.0" : 3.4189396043971776, + "90.0" : 3.4244522276131746, + "95.0" : 3.4244522276131746, + "99.0" : 3.4244522276131746, + "99.9" : 3.4244522276131746, + "99.99" : 3.4244522276131746, + "99.999" : 3.4244522276131746, + "99.9999" : 3.4244522276131746, + "100.0" : 3.4244522276131746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4171721747963577, + 3.4244522276131746 + ], + [ + 3.415566520359219, + 3.4207070339979975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7266663105789197, + "scoreError" : 0.00869904524406742, + "scoreConfidence" : [ + 1.7179672653348523, + 1.7353653558229871 + ], + "scorePercentiles" : { + "0.0" : 1.724945010664874, + "50.0" : 1.7267529382479703, + "90.0" : 1.7282143551548643, + "95.0" : 1.7282143551548643, + "99.0" : 1.7282143551548643, + "99.9" : 1.7282143551548643, + "99.99" : 1.7282143551548643, + "99.999" : 1.7282143551548643, + "99.9999" : 1.7282143551548643, + "100.0" : 1.7282143551548643 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724945010664874, + 1.7265763975379063 + ], + [ + 1.726929478958034, + 1.7282143551548643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8628031120549917, + "scoreError" : 0.0767462701324756, + "scoreConfidence" : [ + 0.7860568419225161, + 0.9395493821874673 + ], + "scorePercentiles" : { + "0.0" : 0.8451682861185522, + "50.0" : 0.867492884671893, + "90.0" : 0.8710583927576289, + "95.0" : 0.8710583927576289, + "99.0" : 0.8710583927576289, + "99.9" : 0.8710583927576289, + "99.99" : 0.8710583927576289, + "99.999" : 0.8710583927576289, + "99.9999" : 0.8710583927576289, + "100.0" : 0.8710583927576289 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673623407164245, + 0.8676234286273615 + ], + [ + 0.8710583927576289, + 0.8451682861185522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.31392561301447, + "scoreError" : 0.1312391844802445, + "scoreConfidence" : [ + 16.182686428534225, + 16.445164797494712 + ], + "scorePercentiles" : { + "0.0" : 16.21093971066763, + "50.0" : 16.302884394353885, + "90.0" : 16.46017338456293, + "95.0" : 16.46017338456293, + "99.0" : 16.46017338456293, + "99.9" : 16.46017338456293, + "99.99" : 16.46017338456293, + "99.999" : 16.46017338456293, + "99.9999" : 16.46017338456293, + "100.0" : 16.46017338456293 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.335544036726933, + 16.3881504707433, + 16.338990592960965 + ], + [ + 16.46017338456293, + 16.300954823858877, + 16.302884394353885 + ], + [ + 16.250290632880514, + 16.23740247037521, + 16.21093971066763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2756.9992365127205, + "scoreError" : 113.15020257290064, + "scoreConfidence" : [ + 2643.84903393982, + 2870.149439085621 + ], + "scorePercentiles" : { + "0.0" : 2698.7491764529773, + "50.0" : 2720.6434970594128, + "90.0" : 2847.352513628344, + "95.0" : 2847.352513628344, + "99.0" : 2847.352513628344, + "99.9" : 2847.352513628344, + "99.99" : 2847.352513628344, + "99.999" : 2847.352513628344, + "99.9999" : 2847.352513628344, + "100.0" : 2847.352513628344 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2708.7644589191254, + 2720.6434970594128, + 2722.404526193519 + ], + [ + 2710.1717555299124, + 2698.7491764529773, + 2713.328570944813 + ], + [ + 2846.681855022229, + 2847.352513628344, + 2844.896774864152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69904.38873607699, + "scoreError" : 1519.5438025687874, + "scoreConfidence" : [ + 68384.8449335082, + 71423.93253864578 + ], + "scorePercentiles" : { + "0.0" : 68682.559730696, + "50.0" : 70478.32467330323, + "90.0" : 70580.13042248992, + "95.0" : 70580.13042248992, + "99.0" : 70580.13042248992, + "99.9" : 70580.13042248992, + "99.99" : 70580.13042248992, + "99.999" : 70580.13042248992, + "99.9999" : 70580.13042248992, + "100.0" : 70580.13042248992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68682.559730696, + 68708.866932472, + 68707.26495938459 + ], + [ + 70518.02892766449, + 70457.87631837883, + 70478.32467330323 + ], + [ + 70508.3088102308, + 70498.13785007298, + 70580.13042248992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.97170890665683, + "scoreError" : 8.839750478157988, + "scoreConfidence" : [ + 342.1319584284988, + 359.81145938481484 + ], + "scorePercentiles" : { + "0.0" : 344.2073326740012, + "50.0" : 350.7670243218901, + "90.0" : 357.7030520279713, + "95.0" : 357.7030520279713, + "99.0" : 357.7030520279713, + "99.9" : 357.7030520279713, + "99.99" : 357.7030520279713, + "99.999" : 357.7030520279713, + "99.9999" : 357.7030520279713, + "100.0" : 357.7030520279713 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.5023818760904, + 356.86336793959464, + 357.7030520279713 + ], + [ + 344.51655037432863, + 344.2073326740012, + 346.18135193755194 + ], + [ + 351.4179954510821, + 350.7670243218901, + 350.58632355740076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.13558739995234, + "scoreError" : 0.9471044773107464, + "scoreConfidence" : [ + 106.1884829226416, + 108.08269187726309 + ], + "scorePercentiles" : { + "0.0" : 106.41150472365675, + "50.0" : 106.98591081143343, + "90.0" : 108.05644484593567, + "95.0" : 108.05644484593567, + "99.0" : 108.05644484593567, + "99.9" : 108.05644484593567, + "99.99" : 108.05644484593567, + "99.999" : 108.05644484593567, + "99.9999" : 108.05644484593567, + "100.0" : 108.05644484593567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.05644484593567, + 106.98591081143343, + 106.86280167853995 + ], + [ + 107.3278838833463, + 107.63659682409566, + 107.66812717658092 + ], + [ + 106.62162483191045, + 106.41150472365675, + 106.64939182407181 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06116770333920915, + "scoreError" : 4.8614906962900385E-4, + "scoreConfidence" : [ + 0.06068155426958015, + 0.06165385240883815 + ], + "scorePercentiles" : { + "0.0" : 0.060782978586450445, + "50.0" : 0.061090301025083386, + "90.0" : 0.06161584813121542, + "95.0" : 0.06161584813121542, + "99.0" : 0.06161584813121542, + "99.9" : 0.06161584813121542, + "99.99" : 0.06161584813121542, + "99.999" : 0.06161584813121542, + "99.9999" : 0.06161584813121542, + "100.0" : 0.06161584813121542 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06153806217731365, + 0.06138916308364743, + 0.06161584813121542 + ], + [ + 0.061090301025083386, + 0.06104354878525211, + 0.061186428299589445 + ], + [ + 0.06095554725825328, + 0.06090745270607725, + 0.060782978586450445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.695521446448638E-4, + "scoreError" : 2.8262222982506193E-5, + "scoreConfidence" : [ + 3.412899216623576E-4, + 3.9781436762737E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5000887232047905E-4, + "50.0" : 3.6917912816374846E-4, + "90.0" : 3.8959380126631364E-4, + "95.0" : 3.8959380126631364E-4, + "99.0" : 3.8959380126631364E-4, + "99.9" : 3.8959380126631364E-4, + "99.99" : 3.8959380126631364E-4, + "99.999" : 3.8959380126631364E-4, + "99.9999" : 3.8959380126631364E-4, + "100.0" : 3.8959380126631364E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5046645867463925E-4, + 3.5000887232047905E-4, + 3.5024093424695045E-4 + ], + [ + 3.8959380126631364E-4, + 3.8892023345357696E-4, + 3.886819629837889E-4 + ], + [ + 3.700855260474804E-4, + 3.6917912816374846E-4, + 3.687923846467969E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014166576121955722, + "scoreError" : 2.1144263631359052E-4, + "scoreConfidence" : [ + 0.01395513348564213, + 0.014378018758269313 + ], + "scorePercentiles" : { + "0.0" : 0.014046923717671385, + "50.0" : 0.014122111461491641, + "90.0" : 0.01439731619304848, + "95.0" : 0.01439731619304848, + "99.0" : 0.01439731619304848, + "99.9" : 0.01439731619304848, + "99.99" : 0.01439731619304848, + "99.999" : 0.01439731619304848, + "99.9999" : 0.01439731619304848, + "100.0" : 0.01439731619304848 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01439731619304848, + 0.014281812945140039, + 0.014289442321377029 + ], + [ + 0.014058839168851619, + 0.014046923717671385, + 0.014048392538699385 + ], + [ + 0.01413298399034446, + 0.014122111461491641, + 0.01412136276097747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9740776945547436, + "scoreError" : 0.009058175914346716, + "scoreConfidence" : [ + 0.9650195186403968, + 0.9831358704690903 + ], + "scorePercentiles" : { + "0.0" : 0.9649532202817445, + "50.0" : 0.9764470310486233, + "90.0" : 0.979412945255117, + "95.0" : 0.979412945255117, + "99.0" : 0.979412945255117, + "99.9" : 0.979412945255117, + "99.99" : 0.979412945255117, + "99.999" : 0.979412945255117, + "99.9999" : 0.979412945255117, + "100.0" : 0.979412945255117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9791201020168396, + 0.9764470310486233, + 0.9716871637193937 + ], + [ + 0.9707747388856532, + 0.9649532202817445, + 0.9679974266769916 + ], + [ + 0.979412945255117, + 0.9793519523063363, + 0.9769546708019927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013012135619588671, + "scoreError" : 3.106285482246328E-4, + "scoreConfidence" : [ + 0.012701507071364039, + 0.013322764167813304 + ], + "scorePercentiles" : { + "0.0" : 0.012917852429793061, + "50.0" : 0.012971381308933288, + "90.0" : 0.013147150097681156, + "95.0" : 0.013147150097681156, + "99.0" : 0.013147150097681156, + "99.9" : 0.013147150097681156, + "99.99" : 0.013147150097681156, + "99.999" : 0.013147150097681156, + "99.9999" : 0.013147150097681156, + "100.0" : 0.013147150097681156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012917852429793061, + 0.012919215704208975, + 0.012924454169714609 + ], + [ + 0.013018308448151966, + 0.013145832867982269, + 0.013147150097681156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.632083144066653, + "scoreError" : 0.07389883297062878, + "scoreConfidence" : [ + 3.5581843110960243, + 3.7059819770372817 + ], + "scorePercentiles" : { + "0.0" : 3.590731975592247, + "50.0" : 3.6395454342607834, + "90.0" : 3.6549121504747992, + "95.0" : 3.6549121504747992, + "99.0" : 3.6549121504747992, + "99.9" : 3.6549121504747992, + "99.99" : 3.6549121504747992, + "99.999" : 3.6549121504747992, + "99.9999" : 3.6549121504747992, + "100.0" : 3.6549121504747992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6517999656934306, + 3.6549121504747992, + 3.6541691212563916 + ], + [ + 3.590731975592247, + 3.613594748554913, + 3.627290902828136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.814660377440884, + "scoreError" : 0.024490734182133617, + "scoreConfidence" : [ + 2.7901696432587504, + 2.8391511116230173 + ], + "scorePercentiles" : { + "0.0" : 2.797245694825175, + "50.0" : 2.8061119545454547, + "90.0" : 2.8349407777777778, + "95.0" : 2.8349407777777778, + "99.0" : 2.8349407777777778, + "99.9" : 2.8349407777777778, + "99.99" : 2.8349407777777778, + "99.999" : 2.8349407777777778, + "99.9999" : 2.8349407777777778, + "100.0" : 2.8349407777777778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8255445700564974, + 2.8261645255721954, + 2.8051827203366058 + ], + [ + 2.8037174272497896, + 2.797245694825175, + 2.8016132535014004 + ], + [ + 2.8349407777777778, + 2.831422473103058, + 2.8061119545454547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18077341062741054, + "scoreError" : 0.014353792857067442, + "scoreConfidence" : [ + 0.1664196177703431, + 0.19512720348447798 + ], + "scorePercentiles" : { + "0.0" : 0.17193353889930024, + "50.0" : 0.1785189516405441, + "90.0" : 0.19204514456905822, + "95.0" : 0.19204514456905822, + "99.0" : 0.19204514456905822, + "99.9" : 0.19204514456905822, + "99.99" : 0.19204514456905822, + "99.999" : 0.19204514456905822, + "99.9999" : 0.19204514456905822, + "100.0" : 0.19204514456905822 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19204514456905822, + 0.19126840104047127, + 0.19137153131757725 + ], + [ + 0.17851557071707813, + 0.17853092246581212, + 0.1785189516405441 + ], + [ + 0.17207392991603002, + 0.17193353889930024, + 0.17270270508082344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3255786312013808, + "scoreError" : 0.006781671949494997, + "scoreConfidence" : [ + 0.31879695925188584, + 0.3323603031508758 + ], + "scorePercentiles" : { + "0.0" : 0.3198157626083341, + "50.0" : 0.32745385523903076, + "90.0" : 0.32982301777704487, + "95.0" : 0.32982301777704487, + "99.0" : 0.32982301777704487, + "99.9" : 0.32982301777704487, + "99.99" : 0.32982301777704487, + "99.999" : 0.32982301777704487, + "99.9999" : 0.32982301777704487, + "100.0" : 0.32982301777704487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32040968607221815, + 0.3207289064143682, + 0.3198157626083341 + ], + [ + 0.32693975477311366, + 0.32745385523903076, + 0.3277725755162242 + ], + [ + 0.32982301777704487, + 0.32863060256325993, + 0.3286335198488334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16520958330540386, + "scoreError" : 0.003904719990913554, + "scoreConfidence" : [ + 0.16130486331449032, + 0.1691143032963174 + ], + "scorePercentiles" : { + "0.0" : 0.1623530315934735, + "50.0" : 0.1654880534015125, + "90.0" : 0.16782697615211628, + "95.0" : 0.16782697615211628, + "99.0" : 0.16782697615211628, + "99.9" : 0.16782697615211628, + "99.99" : 0.16782697615211628, + "99.999" : 0.16782697615211628, + "99.9999" : 0.16782697615211628, + "100.0" : 0.16782697615211628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16251762683438156, + 0.1623530315934735, + 0.16235577231548529 + ], + [ + 0.16781707266319854, + 0.16782697615211628, + 0.16760257225220393 + ], + [ + 0.16563840416404413, + 0.1652867403722191, + 0.1654880534015125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3928930526593304, + "scoreError" : 0.0025513234074087984, + "scoreConfidence" : [ + 0.39034172925192157, + 0.3954443760667392 + ], + "scorePercentiles" : { + "0.0" : 0.3907715779766324, + "50.0" : 0.392861043134944, + "90.0" : 0.39614403272064647, + "95.0" : 0.39614403272064647, + "99.0" : 0.39614403272064647, + "99.9" : 0.39614403272064647, + "99.99" : 0.39614403272064647, + "99.999" : 0.39614403272064647, + "99.9999" : 0.39614403272064647, + "100.0" : 0.39614403272064647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3937948602087025, + 0.3928797329692779, + 0.3920452974360985 + ], + [ + 0.39313111813035617, + 0.3915590486687549, + 0.3907715779766324 + ], + [ + 0.39614403272064647, + 0.392861043134944, + 0.3928507626885607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15668086807705478, + "scoreError" : 0.0026468715335953544, + "scoreConfidence" : [ + 0.15403399654345942, + 0.15932773961065014 + ], + "scorePercentiles" : { + "0.0" : 0.15500656603890567, + "50.0" : 0.15602657285507, + "90.0" : 0.1587486827634378, + "95.0" : 0.1587486827634378, + "99.0" : 0.1587486827634378, + "99.9" : 0.1587486827634378, + "99.99" : 0.1587486827634378, + "99.999" : 0.1587486827634378, + "99.9999" : 0.1587486827634378, + "100.0" : 0.1587486827634378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1564891541844016, + 0.15550979076602495, + 0.15500656603890567 + ], + [ + 0.15869252295412348, + 0.1586838797683275, + 0.1587486827634378 + ], + [ + 0.15602657285507, + 0.15557162095519603, + 0.15539902240800596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047155284663097694, + "scoreError" : 4.936480783222632E-4, + "scoreConfidence" : [ + 0.04666163658477543, + 0.04764893274141996 + ], + "scorePercentiles" : { + "0.0" : 0.04676411413981285, + "50.0" : 0.047194693460316864, + "90.0" : 0.04768852778055957, + "95.0" : 0.04768852778055957, + "99.0" : 0.04768852778055957, + "99.9" : 0.04768852778055957, + "99.99" : 0.04768852778055957, + "99.999" : 0.04768852778055957, + "99.9999" : 0.04768852778055957, + "100.0" : 0.04768852778055957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04768852778055957, + 0.047379118801701835, + 0.047233946125687834 + ], + [ + 0.047268657425789375, + 0.04714530012776209, + 0.047194693460316864 + ], + [ + 0.04693128750703961, + 0.04679191659920923, + 0.04676411413981285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9336798.090218965, + "scoreError" : 189887.07302217573, + "scoreConfidence" : [ + 9146911.01719679, + 9526685.16324114 + ], + "scorePercentiles" : { + "0.0" : 9185498.928374656, + "50.0" : 9326856.899347624, + "90.0" : 9472147.553977273, + "95.0" : 9472147.553977273, + "99.0" : 9472147.553977273, + "99.9" : 9472147.553977273, + "99.99" : 9472147.553977273, + "99.999" : 9472147.553977273, + "99.9999" : 9472147.553977273, + "100.0" : 9472147.553977273 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9224735.104147466, + 9185498.928374656, + 9203164.059797607 + ], + [ + 9472147.553977273, + 9452682.468809074, + 9455593.06899811 + ], + [ + 9388428.242964353, + 9326856.899347624, + 9322076.48555452 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json b/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json new file mode 100644 index 0000000000..46a74f75af --- /dev/null +++ b/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421526384634706, + "scoreError" : 0.024204253048581707, + "scoreConfidence" : [ + 3.397322131586124, + 3.4457306376832877 + ], + "scorePercentiles" : { + "0.0" : 3.4173147730655797, + "50.0" : 3.421193313876114, + "90.0" : 3.426404137721016, + "95.0" : 3.426404137721016, + "99.0" : 3.426404137721016, + "99.9" : 3.426404137721016, + "99.99" : 3.426404137721016, + "99.999" : 3.426404137721016, + "99.9999" : 3.426404137721016, + "100.0" : 3.426404137721016 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.420782629000279, + 3.426404137721016 + ], + [ + 3.4173147730655797, + 3.4216039987519493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283454988973057, + "scoreError" : 0.0025880343464985893, + "scoreConfidence" : [ + 1.7257574645508071, + 1.7309335332438043 + ], + "scorePercentiles" : { + "0.0" : 1.7279527704336943, + "50.0" : 1.7282621497493265, + "90.0" : 1.728904925656876, + "95.0" : 1.728904925656876, + "99.0" : 1.728904925656876, + "99.9" : 1.728904925656876, + "99.99" : 1.728904925656876, + "99.999" : 1.728904925656876, + "99.9999" : 1.728904925656876, + "100.0" : 1.728904925656876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7279527704336943, + 1.7282545511010183 + ], + [ + 1.7282697483976346, + 1.728904925656876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691224272889502, + "scoreError" : 0.0033289897328440546, + "scoreConfidence" : [ + 0.8657934375561062, + 0.8724514170217942 + ], + "scorePercentiles" : { + "0.0" : 0.8686308534225845, + "50.0" : 0.869010981659937, + "90.0" : 0.8698368924133419, + "95.0" : 0.8698368924133419, + "99.0" : 0.8698368924133419, + "99.9" : 0.8698368924133419, + "99.99" : 0.8698368924133419, + "99.999" : 0.8698368924133419, + "99.9999" : 0.8698368924133419, + "100.0" : 0.8698368924133419 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686308534225845, + 0.869109060504571 + ], + [ + 0.868912902815303, + 0.8698368924133419 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.309649787987688, + "scoreError" : 0.07794437405308531, + "scoreConfidence" : [ + 16.231705413934602, + 16.387594162040774 + ], + "scorePercentiles" : { + "0.0" : 16.26765662772302, + "50.0" : 16.28656758905185, + "90.0" : 16.38712193348276, + "95.0" : 16.38712193348276, + "99.0" : 16.38712193348276, + "99.9" : 16.38712193348276, + "99.99" : 16.38712193348276, + "99.999" : 16.38712193348276, + "99.9999" : 16.38712193348276, + "100.0" : 16.38712193348276 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.28656758905185, + 16.273200002371972, + 16.299111445359156 + ], + [ + 16.366013192165212, + 16.3540962884704, + 16.38712193348276 + ], + [ + 16.26765662772302, + 16.26851464142473, + 16.28456637184009 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2712.6069740459716, + "scoreError" : 11.038642078368325, + "scoreConfidence" : [ + 2701.568331967603, + 2723.64561612434 + ], + "scorePercentiles" : { + "0.0" : 2703.8693752278577, + "50.0" : 2711.819323271369, + "90.0" : 2722.840900870486, + "95.0" : 2722.840900870486, + "99.0" : 2722.840900870486, + "99.9" : 2722.840900870486, + "99.99" : 2722.840900870486, + "99.999" : 2722.840900870486, + "99.9999" : 2722.840900870486, + "100.0" : 2722.840900870486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2711.6700217383127, + 2712.519688484181, + 2711.819323271369 + ], + [ + 2722.840900870486, + 2713.2880055354126, + 2722.7197608423567 + ], + [ + 2703.8693752278577, + 2708.9476508866146, + 2705.7880395571538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70977.29311251568, + "scoreError" : 253.57898466017767, + "scoreConfidence" : [ + 70723.71412785549, + 71230.87209717586 + ], + "scorePercentiles" : { + "0.0" : 70751.37602239971, + "50.0" : 70921.36587253957, + "90.0" : 71183.33947884571, + "95.0" : 71183.33947884571, + "99.0" : 71183.33947884571, + "99.9" : 71183.33947884571, + "99.99" : 71183.33947884571, + "99.999" : 71183.33947884571, + "99.9999" : 71183.33947884571, + "100.0" : 71183.33947884571 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70913.88389465859, + 70969.59237313575, + 70921.36587253957 + ], + [ + 70844.70664555264, + 70751.37602239971, + 70911.93988780752 + ], + [ + 71158.56853347426, + 71140.86530422738, + 71183.33947884571 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.31244511380766, + "scoreError" : 6.666002229820555, + "scoreConfidence" : [ + 343.6464428839871, + 356.9784473436282 + ], + "scorePercentiles" : { + "0.0" : 345.20414333375453, + "50.0" : 350.5234018035162, + "90.0" : 355.26663651937116, + "95.0" : 355.26663651937116, + "99.0" : 355.26663651937116, + "99.9" : 355.26663651937116, + "99.99" : 355.26663651937116, + "99.999" : 355.26663651937116, + "99.9999" : 355.26663651937116, + "100.0" : 355.26663651937116 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.0198481362827, + 354.58181399517474, + 355.26663651937116 + ], + [ + 350.5234018035162, + 350.38433326530674, + 351.37866449831887 + ], + [ + 345.20414333375453, + 345.84513014838336, + 345.6080343241608 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.87761273102751, + "scoreError" : 2.104556922800753, + "scoreConfidence" : [ + 102.77305580822676, + 106.98216965382827 + ], + "scorePercentiles" : { + "0.0" : 103.59739904226069, + "50.0" : 104.47823668180365, + "90.0" : 106.64228593068609, + "95.0" : 106.64228593068609, + "99.0" : 106.64228593068609, + "99.9" : 106.64228593068609, + "99.99" : 106.64228593068609, + "99.999" : 106.64228593068609, + "99.9999" : 106.64228593068609, + "100.0" : 106.64228593068609 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.59739904226069, + 103.72012032272589, + 103.6785773206504 + ], + [ + 104.57502425284017, + 104.47823668180365, + 104.42984806950203 + ], + [ + 106.64228593068609, + 106.3804639830908, + 106.39655897568788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061408572434368404, + "scoreError" : 4.563862938090769E-4, + "scoreConfidence" : [ + 0.06095218614055933, + 0.06186495872817748 + ], + "scorePercentiles" : { + "0.0" : 0.06097075857086242, + "50.0" : 0.061388873282667684, + "90.0" : 0.06178538960661835, + "95.0" : 0.06178538960661835, + "99.0" : 0.06178538960661835, + "99.9" : 0.06178538960661835, + "99.99" : 0.06178538960661835, + "99.999" : 0.06178538960661835, + "99.9999" : 0.06178538960661835, + "100.0" : 0.06178538960661835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06097075857086242, + 0.061146214680974656, + 0.0612855844349249 + ], + [ + 0.061388873282667684, + 0.06155373061392818, + 0.06124024126422281 + ], + [ + 0.06178538960661835, + 0.061691854335031895, + 0.06161450512008478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7316652617251883E-4, + "scoreError" : 8.119757313773042E-6, + "scoreConfidence" : [ + 3.6504676885874577E-4, + 3.812862834862919E-4 + ], + "scorePercentiles" : { + "0.0" : 3.667738323748724E-4, + "50.0" : 3.752289794739548E-4, + "90.0" : 3.778600239409276E-4, + "95.0" : 3.778600239409276E-4, + "99.0" : 3.778600239409276E-4, + "99.9" : 3.778600239409276E-4, + "99.99" : 3.778600239409276E-4, + "99.999" : 3.778600239409276E-4, + "99.9999" : 3.778600239409276E-4, + "100.0" : 3.778600239409276E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.668491935524401E-4, + 3.667738323748724E-4, + 3.6701340072654664E-4 + ], + [ + 3.778600239409276E-4, + 3.7740688490455637E-4, + 3.7720805236979543E-4 + ], + [ + 3.754190644322722E-4, + 3.7473930377730384E-4, + 3.752289794739548E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014008341450335656, + "scoreError" : 1.4498033977860858E-4, + "scoreConfidence" : [ + 0.013863361110557047, + 0.014153321790114266 + ], + "scorePercentiles" : { + "0.0" : 0.013880233651371766, + "50.0" : 0.013988460148024223, + "90.0" : 0.014114319541008596, + "95.0" : 0.014114319541008596, + "99.0" : 0.014114319541008596, + "99.9" : 0.014114319541008596, + "99.99" : 0.014114319541008596, + "99.999" : 0.014114319541008596, + "99.9999" : 0.014114319541008596, + "100.0" : 0.014114319541008596 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014114319541008596, + 0.014112022618451226, + 0.014106586750966642 + ], + [ + 0.013912293381858856, + 0.013880233651371766, + 0.013970244557602174 + ], + [ + 0.013988460148024223, + 0.014002486228898102, + 0.01398842617483931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9778241649362742, + "scoreError" : 0.004838244956807494, + "scoreConfidence" : [ + 0.9729859199794667, + 0.9826624098930817 + ], + "scorePercentiles" : { + "0.0" : 0.9736546614740531, + "50.0" : 0.9773280237467018, + "90.0" : 0.9821452236299352, + "95.0" : 0.9821452236299352, + "99.0" : 0.9821452236299352, + "99.9" : 0.9821452236299352, + "99.99" : 0.9821452236299352, + "99.999" : 0.9821452236299352, + "99.9999" : 0.9821452236299352, + "100.0" : 0.9821452236299352 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9749890558642879, + 0.9736546614740531, + 0.9772415279976546 + ], + [ + 0.9773280237467018, + 0.9776727197184476, + 0.9762410675517376 + ], + [ + 0.9819867925176747, + 0.9821452236299352, + 0.9791584119259767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012869722100222638, + "scoreError" : 3.8966084585346096E-4, + "scoreConfidence" : [ + 0.012480061254369177, + 0.013259382946076098 + ], + "scorePercentiles" : { + "0.0" : 0.012669512538736168, + "50.0" : 0.012853368862123522, + "90.0" : 0.013023504013752508, + "95.0" : 0.013023504013752508, + "99.0" : 0.013023504013752508, + "99.9" : 0.013023504013752508, + "99.99" : 0.013023504013752508, + "99.999" : 0.013023504013752508, + "99.9999" : 0.013023504013752508, + "100.0" : 0.013023504013752508 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012900479146832615, + 0.013020436614143498, + 0.013023504013752508 + ], + [ + 0.012669512538736168, + 0.0127981417104566, + 0.012806258577414431 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5468241771900515, + "scoreError" : 0.21376380574191445, + "scoreConfidence" : [ + 3.333060371448137, + 3.760587982931966 + ], + "scorePercentiles" : { + "0.0" : 3.453652321132597, + "50.0" : 3.551183448477694, + "90.0" : 3.61925639146165, + "95.0" : 3.61925639146165, + "99.0" : 3.61925639146165, + "99.9" : 3.61925639146165, + "99.99" : 3.61925639146165, + "99.999" : 3.61925639146165, + "99.9999" : 3.61925639146165, + "100.0" : 3.61925639146165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.453652321132597, + 3.4880539741980474, + 3.4936314308659218 + ], + [ + 3.6176154793926245, + 3.61925639146165, + 3.608735466089466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8304880688757925, + "scoreError" : 0.07599696860642481, + "scoreConfidence" : [ + 2.7544911002693677, + 2.9064850374822173 + ], + "scorePercentiles" : { + "0.0" : 2.780787323324993, + "50.0" : 2.814811319729806, + "90.0" : 2.8892461886192953, + "95.0" : 2.8892461886192953, + "99.0" : 2.8892461886192953, + "99.9" : 2.8892461886192953, + "99.99" : 2.8892461886192953, + "99.999" : 2.8892461886192953, + "99.9999" : 2.8892461886192953, + "100.0" : 2.8892461886192953 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8892461886192953, + 2.8884606503032053, + 2.887350749133949 + ], + [ + 2.793379465083799, + 2.7882133852801783, + 2.780787323324993 + ], + [ + 2.8192035718714767, + 2.814811319729806, + 2.812939966535433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17450209716197213, + "scoreError" : 0.005812830363912847, + "scoreConfidence" : [ + 0.1686892667980593, + 0.18031492752588496 + ], + "scorePercentiles" : { + "0.0" : 0.170191207610749, + "50.0" : 0.1748316288921135, + "90.0" : 0.17852150263312924, + "95.0" : 0.17852150263312924, + "99.0" : 0.17852150263312924, + "99.9" : 0.17852150263312924, + "99.99" : 0.17852150263312924, + "99.999" : 0.17852150263312924, + "99.9999" : 0.17852150263312924, + "100.0" : 0.17852150263312924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17498419680134386, + 0.1748316288921135, + 0.17469628181611727 + ], + [ + 0.17852150263312924, + 0.17834503670281068, + 0.17807120077281954 + ], + [ + 0.1706394429731759, + 0.170191207610749, + 0.1702383762554901 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33112232276848347, + "scoreError" : 0.01408401635978298, + "scoreConfidence" : [ + 0.3170383064087005, + 0.3452063391282664 + ], + "scorePercentiles" : { + "0.0" : 0.3189610034765413, + "50.0" : 0.33347466086434574, + "90.0" : 0.33958328683486705, + "95.0" : 0.33958328683486705, + "99.0" : 0.33958328683486705, + "99.9" : 0.33958328683486705, + "99.99" : 0.33958328683486705, + "99.999" : 0.33958328683486705, + "99.9999" : 0.33958328683486705, + "100.0" : 0.33958328683486705 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3213060990553913, + 0.3212401773209123, + 0.3189610034765413 + ], + [ + 0.3333820681090812, + 0.3337180653073483, + 0.33347466086434574 + ], + [ + 0.33958328683486705, + 0.3391921009734423, + 0.3392434429744216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15903038363523334, + "scoreError" : 0.0032727032804364393, + "scoreConfidence" : [ + 0.1557576803547969, + 0.16230308691566978 + ], + "scorePercentiles" : { + "0.0" : 0.1568177738748628, + "50.0" : 0.15869251267931953, + "90.0" : 0.16177639883523418, + "95.0" : 0.16177639883523418, + "99.0" : 0.16177639883523418, + "99.9" : 0.16177639883523418, + "99.99" : 0.16177639883523418, + "99.999" : 0.16177639883523418, + "99.9999" : 0.16177639883523418, + "100.0" : 0.16177639883523418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15893024055179428, + 0.1585677964830495, + 0.15869251267931953 + ], + [ + 0.15714625532316107, + 0.15691627485132356, + 0.1568177738748628 + ], + [ + 0.16131501726029165, + 0.16111118285806347, + 0.16177639883523418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39920263185700916, + "scoreError" : 0.01508577615443086, + "scoreConfidence" : [ + 0.3841168557025783, + 0.41428840801144 + ], + "scorePercentiles" : { + "0.0" : 0.3892273552718639, + "50.0" : 0.3956107737558351, + "90.0" : 0.4115906599991769, + "95.0" : 0.4115906599991769, + "99.0" : 0.4115906599991769, + "99.9" : 0.4115906599991769, + "99.99" : 0.4115906599991769, + "99.999" : 0.4115906599991769, + "99.9999" : 0.4115906599991769, + "100.0" : 0.4115906599991769 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39916488715922244, + 0.394366896561243, + 0.3937410017324199 + ], + [ + 0.4115906599991769, + 0.4101335106016487, + 0.40964308319678844 + ], + [ + 0.3956107737558351, + 0.3893455184348842, + 0.3892273552718639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15671659954710748, + "scoreError" : 0.002376152157258202, + "scoreConfidence" : [ + 0.15434044738984928, + 0.15909275170436568 + ], + "scorePercentiles" : { + "0.0" : 0.15505241405668568, + "50.0" : 0.1567589684761651, + "90.0" : 0.15864113097069973, + "95.0" : 0.15864113097069973, + "99.0" : 0.15864113097069973, + "99.9" : 0.15864113097069973, + "99.99" : 0.15864113097069973, + "99.999" : 0.15864113097069973, + "99.9999" : 0.15864113097069973, + "100.0" : 0.15864113097069973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15712338663859474, + 0.1567589684761651, + 0.15637328781410767 + ], + [ + 0.15864113097069973, + 0.15834399254215817, + 0.15792437585079672 + ], + [ + 0.15505241405668568, + 0.15506374830596517, + 0.15516809126879452 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046883255194173766, + "scoreError" : 9.061111451677109E-4, + "scoreConfidence" : [ + 0.045977144049006054, + 0.04778936633934148 + ], + "scorePercentiles" : { + "0.0" : 0.046237800306090364, + "50.0" : 0.046795298544688814, + "90.0" : 0.04808867215992152, + "95.0" : 0.04808867215992152, + "99.0" : 0.04808867215992152, + "99.9" : 0.04808867215992152, + "99.99" : 0.04808867215992152, + "99.999" : 0.04808867215992152, + "99.9999" : 0.04808867215992152, + "100.0" : 0.04808867215992152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046750469346061786, + 0.046892388873518806, + 0.047285378485471784 + ], + [ + 0.046619141515195306, + 0.04643861545641564, + 0.046237800306090364 + ], + [ + 0.04808867215992152, + 0.046795298544688814, + 0.04684153206019982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9241780.57363828, + "scoreError" : 265931.63507504837, + "scoreConfidence" : [ + 8975848.938563233, + 9507712.208713328 + ], + "scorePercentiles" : { + "0.0" : 9038273.207768744, + "50.0" : 9277086.333951762, + "90.0" : 9444023.251180358, + "95.0" : 9444023.251180358, + "99.0" : 9444023.251180358, + "99.9" : 9444023.251180358, + "99.99" : 9444023.251180358, + "99.999" : 9444023.251180358, + "99.9999" : 9444023.251180358, + "100.0" : 9444023.251180358 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9444023.251180358, + 9391734.985915493, + 9381496.035647279 + ], + [ + 9278744.134508349, + 9262558.790740741, + 9277086.333951762 + ], + [ + 9061707.098731885, + 9040401.32429991, + 9038273.207768744 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json b/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json new file mode 100644 index 0000000000..41be86bf29 --- /dev/null +++ b/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424479155837928, + "scoreError" : 0.011075372549510833, + "scoreConfidence" : [ + 3.4134037832884174, + 3.435554528387439 + ], + "scorePercentiles" : { + "0.0" : 3.4222286409542613, + "50.0" : 3.424837405471688, + "90.0" : 3.426013171454075, + "95.0" : 3.426013171454075, + "99.0" : 3.426013171454075, + "99.9" : 3.426013171454075, + "99.99" : 3.426013171454075, + "99.999" : 3.426013171454075, + "99.9999" : 3.426013171454075, + "100.0" : 3.426013171454075 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.426013171454075, + 3.4255917004773675 + ], + [ + 3.4222286409542613, + 3.4240831104660083 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.730114924834354, + "scoreError" : 0.015068036624339469, + "scoreConfidence" : [ + 1.7150468882100145, + 1.7451829614586933 + ], + "scorePercentiles" : { + "0.0" : 1.7278191249827204, + "50.0" : 1.7300845809684677, + "90.0" : 1.7324714124177591, + "95.0" : 1.7324714124177591, + "99.0" : 1.7324714124177591, + "99.9" : 1.7324714124177591, + "99.99" : 1.7324714124177591, + "99.999" : 1.7324714124177591, + "99.9999" : 1.7324714124177591, + "100.0" : 1.7324714124177591 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278191249827204, + 1.7317408171276252 + ], + [ + 1.7284283448093105, + 1.7324714124177591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8681857109496245, + "scoreError" : 0.0035043749820760526, + "scoreConfidence" : [ + 0.8646813359675485, + 0.8716900859317005 + ], + "scorePercentiles" : { + "0.0" : 0.8676305266413037, + "50.0" : 0.8682075476996174, + "90.0" : 0.8686972217579596, + "95.0" : 0.8686972217579596, + "99.0" : 0.8686972217579596, + "99.9" : 0.8686972217579596, + "99.99" : 0.8686972217579596, + "99.999" : 0.8686972217579596, + "99.9999" : 0.8686972217579596, + "100.0" : 0.8686972217579596 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8678129209888844, + 0.8686021744103505 + ], + [ + 0.8676305266413037, + 0.8686972217579596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.387280261757567, + "scoreError" : 0.10028607635809765, + "scoreConfidence" : [ + 16.286994185399468, + 16.487566338115666 + ], + "scorePercentiles" : { + "0.0" : 16.299881227884125, + "50.0" : 16.410224457562155, + "90.0" : 16.457636875301638, + "95.0" : 16.457636875301638, + "99.0" : 16.457636875301638, + "99.9" : 16.457636875301638, + "99.99" : 16.457636875301638, + "99.999" : 16.457636875301638, + "99.9999" : 16.457636875301638, + "100.0" : 16.457636875301638 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.299881227884125, + 16.328028210173624, + 16.30546147881785 + ], + [ + 16.457636875301638, + 16.429821212221743, + 16.410224457562155 + ], + [ + 16.412175542163634, + 16.436125687636725, + 16.406167664056625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2642.0682457066564, + "scoreError" : 114.34022799708357, + "scoreConfidence" : [ + 2527.7280177095727, + 2756.40847370374 + ], + "scorePercentiles" : { + "0.0" : 2555.2046983574915, + "50.0" : 2659.7345801498823, + "90.0" : 2713.6502722405826, + "95.0" : 2713.6502722405826, + "99.0" : 2713.6502722405826, + "99.9" : 2713.6502722405826, + "99.99" : 2713.6502722405826, + "99.999" : 2713.6502722405826, + "99.9999" : 2713.6502722405826, + "100.0" : 2713.6502722405826 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2706.2844882940467, + 2712.2668309135865, + 2713.6502722405826 + ], + [ + 2555.3276391760605, + 2555.2046983574915, + 2558.8986334792153 + ], + [ + 2661.411687999915, + 2655.8353807491285, + 2659.7345801498823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69729.45525114956, + "scoreError" : 2962.4156855070937, + "scoreConfidence" : [ + 66767.03956564247, + 72691.87093665665 + ], + "scorePercentiles" : { + "0.0" : 67361.01966300381, + "50.0" : 70738.98053842774, + "90.0" : 71080.73631929721, + "95.0" : 71080.73631929721, + "99.0" : 71080.73631929721, + "99.9" : 71080.73631929721, + "99.99" : 71080.73631929721, + "99.999" : 71080.73631929721, + "99.9999" : 71080.73631929721, + "100.0" : 71080.73631929721 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67411.41767701558, + 67361.01966300381, + 67389.57797458366 + ], + [ + 71080.73631929721, + 71053.29571140243, + 71079.39665194794 + ], + [ + 70705.69662773378, + 70744.97609693388, + 70738.98053842774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.94580919495104, + "scoreError" : 10.159825623076115, + "scoreConfidence" : [ + 343.7859835718749, + 364.10563481802717 + ], + "scorePercentiles" : { + "0.0" : 347.0369763846074, + "50.0" : 353.17931736004226, + "90.0" : 361.39092290805024, + "95.0" : 361.39092290805024, + "99.0" : 361.39092290805024, + "99.9" : 361.39092290805024, + "99.99" : 361.39092290805024, + "99.999" : 361.39092290805024, + "99.9999" : 361.39092290805024, + "100.0" : 361.39092290805024 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.3977135026078, + 347.69793010856546, + 347.0369763846074 + ], + [ + 361.2079659440757, + 361.21748163628587, + 361.39092290805024 + ], + [ + 353.2714724807457, + 353.17931736004226, + 353.11250242957925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.68682541606691, + "scoreError" : 2.1175975242501184, + "scoreConfidence" : [ + 105.5692278918168, + 109.80442294031702 + ], + "scorePercentiles" : { + "0.0" : 106.26146297343669, + "50.0" : 107.34763854854604, + "90.0" : 109.36109832163555, + "95.0" : 109.36109832163555, + "99.0" : 109.36109832163555, + "99.9" : 109.36109832163555, + "99.99" : 109.36109832163555, + "99.999" : 109.36109832163555, + "99.9999" : 109.36109832163555, + "100.0" : 109.36109832163555 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.19339810163474, + 109.30825077522033, + 109.36109832163555 + ], + [ + 107.00354599780425, + 106.4757245889034, + 106.26146297343669 + ], + [ + 106.74918851780693, + 107.34763854854604, + 107.48112091961424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06162681252669893, + "scoreError" : 3.3686119708431755E-4, + "scoreConfidence" : [ + 0.061289951329614616, + 0.061963673723783246 + ], + "scorePercentiles" : { + "0.0" : 0.061328496562593905, + "50.0" : 0.061681442692720474, + "90.0" : 0.06197374492597344, + "95.0" : 0.06197374492597344, + "99.0" : 0.06197374492597344, + "99.9" : 0.06197374492597344, + "99.99" : 0.06197374492597344, + "99.999" : 0.06197374492597344, + "99.9999" : 0.06197374492597344, + "100.0" : 0.06197374492597344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06197374492597344, + 0.061568095189134614, + 0.061681442692720474 + ], + [ + 0.061702634419482816, + 0.06179707055900928, + 0.06169649623656577 + ], + [ + 0.061328496562593905, + 0.06142226142128862, + 0.061471070733521434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.601361537296343E-4, + "scoreError" : 1.3735303553208745E-5, + "scoreConfidence" : [ + 3.464008501764256E-4, + 3.7387145728284306E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5257102726447045E-4, + "50.0" : 3.563742360272379E-4, + "90.0" : 3.711108373662132E-4, + "95.0" : 3.711108373662132E-4, + "99.0" : 3.711108373662132E-4, + "99.9" : 3.711108373662132E-4, + "99.99" : 3.711108373662132E-4, + "99.999" : 3.711108373662132E-4, + "99.9999" : 3.711108373662132E-4, + "100.0" : 3.711108373662132E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7094360919965913E-4, + 3.7054810797679537E-4, + 3.711108373662132E-4 + ], + [ + 3.564217083170926E-4, + 3.561934064597772E-4, + 3.563742360272379E-4 + ], + [ + 3.5417943252750647E-4, + 3.5257102726447045E-4, + 3.5288301842795726E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014064441341060416, + "scoreError" : 1.2119529604295307E-4, + "scoreConfidence" : [ + 0.013943246045017463, + 0.01418563663710337 + ], + "scorePercentiles" : { + "0.0" : 0.01398626967601172, + "50.0" : 0.0140487007086081, + "90.0" : 0.014176805886422469, + "95.0" : 0.014176805886422469, + "99.0" : 0.014176805886422469, + "99.9" : 0.014176805886422469, + "99.99" : 0.014176805886422469, + "99.999" : 0.014176805886422469, + "99.9999" : 0.014176805886422469, + "100.0" : 0.014176805886422469 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013999763167326047, + 0.013999175775825382, + 0.01398626967601172 + ], + [ + 0.014029347007575757, + 0.0140487007086081, + 0.01405117447410611 + ], + [ + 0.014176805886422469, + 0.014143796568194129, + 0.014144938805474027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.009089933464979, + "scoreError" : 0.01145814597855419, + "scoreConfidence" : [ + 0.9976317874864248, + 1.020548079443533 + ], + "scorePercentiles" : { + "0.0" : 1.0003654717415225, + "50.0" : 1.0087827143433528, + "90.0" : 1.0205102271428572, + "95.0" : 1.0205102271428572, + "99.0" : 1.0205102271428572, + "99.9" : 1.0205102271428572, + "99.99" : 1.0205102271428572, + "99.999" : 1.0205102271428572, + "99.9999" : 1.0205102271428572, + "100.0" : 1.0205102271428572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0153699043557722, + 1.0152101648563598, + 1.0087827143433528 + ], + [ + 1.0026712928614396, + 1.0003654717415225, + 1.0058263027255356 + ], + [ + 1.0031070592718885, + 1.0099662638860836, + 1.0205102271428572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013063078195670041, + "scoreError" : 3.172213737715068E-4, + "scoreConfidence" : [ + 0.012745856821898535, + 0.013380299569441548 + ], + "scorePercentiles" : { + "0.0" : 0.012905051156776511, + "50.0" : 0.013051076766829785, + "90.0" : 0.013247707986805675, + "95.0" : 0.013247707986805675, + "99.0" : 0.013247707986805675, + "99.9" : 0.013247707986805675, + "99.99" : 0.013247707986805675, + "99.999" : 0.013247707986805675, + "99.9999" : 0.013247707986805675, + "100.0" : 0.013247707986805675 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013015171863042652, + 0.013247707986805675, + 0.013039056843488737 + ], + [ + 0.012905051156776511, + 0.013063096690170833, + 0.013108384633735837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.972506567178479, + "scoreError" : 0.19669975350394048, + "scoreConfidence" : [ + 3.7758068136745386, + 4.169206320682419 + ], + "scorePercentiles" : { + "0.0" : 3.865339341576507, + "50.0" : 3.980264222581429, + "90.0" : 4.068455570382425, + "95.0" : 4.068455570382425, + "99.0" : 4.068455570382425, + "99.9" : 4.068455570382425, + "99.99" : 4.068455570382425, + "99.999" : 4.068455570382425, + "99.9999" : 4.068455570382425, + "100.0" : 4.068455570382425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.068455570382425, + 3.9299753731343285, + 3.9963807795527155 + ], + [ + 4.010740672814755, + 3.865339341576507, + 3.9641476656101426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.158331899464004, + "scoreError" : 0.04410759724726521, + "scoreConfidence" : [ + 3.114224302216739, + 3.2024394967112695 + ], + "scorePercentiles" : { + "0.0" : 3.1209627138845555, + "50.0" : 3.151894622439332, + "90.0" : 3.205059529958347, + "95.0" : 3.205059529958347, + "99.0" : 3.205059529958347, + "99.9" : 3.205059529958347, + "99.99" : 3.205059529958347, + "99.999" : 3.205059529958347, + "99.9999" : 3.205059529958347, + "100.0" : 3.205059529958347 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.205059529958347, + 3.151894622439332, + 3.1209627138845555 + ], + [ + 3.1614530736409607, + 3.1490925138539043, + 3.1931810312899107 + ], + [ + 3.138146982428616, + 3.159927334913112, + 3.1452692927672956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17926628376468318, + "scoreError" : 0.0041338115424907305, + "scoreConfidence" : [ + 0.17513247222219244, + 0.1834000953071739 + ], + "scorePercentiles" : { + "0.0" : 0.17606456009788904, + "50.0" : 0.17991486069481677, + "90.0" : 0.1824510914962325, + "95.0" : 0.1824510914962325, + "99.0" : 0.1824510914962325, + "99.9" : 0.1824510914962325, + "99.99" : 0.1824510914962325, + "99.999" : 0.1824510914962325, + "99.9999" : 0.1824510914962325, + "100.0" : 0.1824510914962325 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1762438778308454, + 0.17617481822666173, + 0.17606456009788904 + ], + [ + 0.18154535195338029, + 0.1824510914962325, + 0.18063986376445088 + ], + [ + 0.17991486069481677, + 0.1799070998992552, + 0.18045502991861703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33563272825190205, + "scoreError" : 0.009558237070581397, + "scoreConfidence" : [ + 0.32607449118132065, + 0.34519096532248345 + ], + "scorePercentiles" : { + "0.0" : 0.3284607007160218, + "50.0" : 0.33644188396581887, + "90.0" : 0.3440445917363333, + "95.0" : 0.3440445917363333, + "99.0" : 0.3440445917363333, + "99.9" : 0.3440445917363333, + "99.99" : 0.3440445917363333, + "99.999" : 0.3440445917363333, + "99.9999" : 0.3440445917363333, + "100.0" : 0.3440445917363333 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.329211396694759, + 0.32936281339129864, + 0.3284607007160218 + ], + [ + 0.3413116095904437, + 0.3403381569615084, + 0.3440445917363333 + ], + [ + 0.33644188396581887, + 0.3350542349984923, + 0.3364691662124424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16489447994355155, + "scoreError" : 0.012856772971821528, + "scoreConfidence" : [ + 0.15203770697173002, + 0.17775125291537308 + ], + "scorePercentiles" : { + "0.0" : 0.1552361662216703, + "50.0" : 0.16498882176796673, + "90.0" : 0.17424424524323948, + "95.0" : 0.17424424524323948, + "99.0" : 0.17424424524323948, + "99.9" : 0.17424424524323948, + "99.99" : 0.17424424524323948, + "99.999" : 0.17424424524323948, + "99.9999" : 0.17424424524323948, + "100.0" : 0.17424424524323948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16498882176796673, + 0.1665575346346663, + 0.16489984001714927 + ], + [ + 0.1552361662216703, + 0.15588410461092406, + 0.15634531709452487 + ], + [ + 0.17229772164504403, + 0.17424424524323948, + 0.1735965682567788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3875551586103285, + "scoreError" : 0.0063050988879517446, + "scoreConfidence" : [ + 0.3812500597223768, + 0.39386025749828024 + ], + "scorePercentiles" : { + "0.0" : 0.38285499134762635, + "50.0" : 0.385947726409633, + "90.0" : 0.39251833351650506, + "95.0" : 0.39251833351650506, + "99.0" : 0.39251833351650506, + "99.9" : 0.39251833351650506, + "99.99" : 0.39251833351650506, + "99.999" : 0.39251833351650506, + "99.9999" : 0.39251833351650506, + "100.0" : 0.39251833351650506 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.385947726409633, + 0.3845023914564749, + 0.38541915674259064 + ], + [ + 0.39251833351650506, + 0.39210625470514426, + 0.39240598979792035 + ], + [ + 0.38285499134762635, + 0.3868541281237911, + 0.3853874553932714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1597276282520068, + "scoreError" : 0.0046269221140336735, + "scoreConfidence" : [ + 0.1551007061379731, + 0.16435455036604046 + ], + "scorePercentiles" : { + "0.0" : 0.1554737507501438, + "50.0" : 0.1615286003876595, + "90.0" : 0.1617219838281907, + "95.0" : 0.1617219838281907, + "99.0" : 0.1617219838281907, + "99.9" : 0.1617219838281907, + "99.99" : 0.1617219838281907, + "99.999" : 0.1617219838281907, + "99.9999" : 0.1617219838281907, + "100.0" : 0.1617219838281907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16165860842224378, + 0.1617219838281907, + 0.1615286003876595 + ], + [ + 0.15625568347942936, + 0.15650595923126281, + 0.1554737507501438 + ], + [ + 0.1615476022486794, + 0.16123468213404704, + 0.16162178378640463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04761128317096445, + "scoreError" : 3.479280769183812E-4, + "scoreConfidence" : [ + 0.04726335509404607, + 0.04795921124788283 + ], + "scorePercentiles" : { + "0.0" : 0.04738616306773758, + "50.0" : 0.047527383797194026, + "90.0" : 0.047924545537323164, + "95.0" : 0.047924545537323164, + "99.0" : 0.047924545537323164, + "99.9" : 0.047924545537323164, + "99.99" : 0.047924545537323164, + "99.999" : 0.047924545537323164, + "99.9999" : 0.047924545537323164, + "100.0" : 0.047924545537323164 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047924545537323164, + 0.047923508297830535, + 0.04775109323280267 + ], + [ + 0.04747591117377846, + 0.047487881058774925, + 0.04738616306773758 + ], + [ + 0.047604741071853605, + 0.04742032130138513, + 0.047527383797194026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0398962932366718E7, + "scoreError" : 351179.03066771803, + "scoreConfidence" : [ + 1.0047783901699E7, + 1.0750141963034436E7 + ], + "scorePercentiles" : { + "0.0" : 9973581.754735792, + "50.0" : 1.0443271703549061E7, + "90.0" : 1.0618271176220806E7, + "95.0" : 1.0618271176220806E7, + "99.0" : 1.0618271176220806E7, + "99.9" : 1.0618271176220806E7, + "99.99" : 1.0618271176220806E7, + "99.999" : 1.0618271176220806E7, + "99.9999" : 1.0618271176220806E7, + "100.0" : 1.0618271176220806E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0368837321243523E7, + 1.0231072242331289E7, + 1.028341827954779E7 + ], + [ + 1.0542553845100105E7, + 9973581.754735792, + 1.0552821065400844E7 + ], + [ + 1.0618271176220806E7, + 1.0443271703549061E7, + 1.0576839003171246E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..e7e3fde930 --- /dev/null +++ b/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.412009068804363, + "scoreError" : 0.027147540536237486, + "scoreConfidence" : [ + 3.3848615282681256, + 3.4391566093406003 + ], + "scorePercentiles" : { + "0.0" : 3.406407858797982, + "50.0" : 3.412581318388711, + "90.0" : 3.416465779642049, + "95.0" : 3.416465779642049, + "99.0" : 3.416465779642049, + "99.9" : 3.416465779642049, + "99.99" : 3.416465779642049, + "99.999" : 3.416465779642049, + "99.9999" : 3.416465779642049, + "100.0" : 3.416465779642049 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411854248718382, + 3.416465779642049 + ], + [ + 3.406407858797982, + 3.41330838805904 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7247825532086658, + "scoreError" : 0.008412192988375613, + "scoreConfidence" : [ + 1.7163703602202902, + 1.7331947461970414 + ], + "scorePercentiles" : { + "0.0" : 1.7232151056048182, + "50.0" : 1.7247590010147462, + "90.0" : 1.7263971052003526, + "95.0" : 1.7263971052003526, + "99.0" : 1.7263971052003526, + "99.9" : 1.7263971052003526, + "99.99" : 1.7263971052003526, + "99.999" : 1.7263971052003526, + "99.9999" : 1.7263971052003526, + "100.0" : 1.7263971052003526 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7232151056048182, + 1.7263971052003526 + ], + [ + 1.7246609185990969, + 1.7248570834303953 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8665645873428459, + "scoreError" : 0.007980730163315616, + "scoreConfidence" : [ + 0.8585838571795303, + 0.8745453175061615 + ], + "scorePercentiles" : { + "0.0" : 0.8652048329749016, + "50.0" : 0.8665310283763555, + "90.0" : 0.8679914596437709, + "95.0" : 0.8679914596437709, + "99.0" : 0.8679914596437709, + "99.9" : 0.8679914596437709, + "99.99" : 0.8679914596437709, + "99.999" : 0.8679914596437709, + "99.9999" : 0.8679914596437709, + "100.0" : 0.8679914596437709 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8671178524031105, + 0.8679914596437709 + ], + [ + 0.8652048329749016, + 0.8659442043496006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.190306505865994, + "scoreError" : 0.19886222794442865, + "scoreConfidence" : [ + 15.991444277921566, + 16.389168733810422 + ], + "scorePercentiles" : { + "0.0" : 16.00356710808966, + "50.0" : 16.19719540512624, + "90.0" : 16.338223872579796, + "95.0" : 16.338223872579796, + "99.0" : 16.338223872579796, + "99.9" : 16.338223872579796, + "99.99" : 16.338223872579796, + "99.999" : 16.338223872579796, + "99.9999" : 16.338223872579796, + "100.0" : 16.338223872579796 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.263091004643808, + 16.332625869940873, + 16.338223872579796 + ], + [ + 16.20694779720255, + 16.19719540512624, + 16.18695691399324 + ], + [ + 16.163126086734835, + 16.00356710808966, + 16.02102449448297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2652.1374561733314, + "scoreError" : 149.48652867483324, + "scoreConfidence" : [ + 2502.6509274984983, + 2801.6239848481646 + ], + "scorePercentiles" : { + "0.0" : 2572.313124395027, + "50.0" : 2615.4625094289067, + "90.0" : 2776.2508648496128, + "95.0" : 2776.2508648496128, + "99.0" : 2776.2508648496128, + "99.9" : 2776.2508648496128, + "99.99" : 2776.2508648496128, + "99.999" : 2776.2508648496128, + "99.9999" : 2776.2508648496128, + "100.0" : 2776.2508648496128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2572.327591862452, + 2573.670192282608, + 2572.313124395027 + ], + [ + 2763.3332028422533, + 2776.2508648496128, + 2764.5264619939276 + ], + [ + 2617.16311033585, + 2614.190047569343, + 2615.4625094289067 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69244.53393821999, + "scoreError" : 2238.7153835897343, + "scoreConfidence" : [ + 67005.81855463026, + 71483.24932180972 + ], + "scorePercentiles" : { + "0.0" : 68283.01701912875, + "50.0" : 68404.88908740183, + "90.0" : 71025.63666207869, + "95.0" : 71025.63666207869, + "99.0" : 71025.63666207869, + "99.9" : 71025.63666207869, + "99.99" : 71025.63666207869, + "99.999" : 71025.63666207869, + "99.9999" : 71025.63666207869, + "100.0" : 71025.63666207869 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68283.01701912875, + 68299.08646909134, + 68346.94205609483 + ], + [ + 68410.80512801414, + 68396.52696193331, + 68404.88908740183 + ], + [ + 71020.59502416776, + 71025.63666207869, + 71013.30703606934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.0495439106279, + "scoreError" : 5.688087554984918, + "scoreConfidence" : [ + 346.361456355643, + 357.7376314656128 + ], + "scorePercentiles" : { + "0.0" : 347.5038937323927, + "50.0" : 352.6586337417818, + "90.0" : 355.9543623081089, + "95.0" : 355.9543623081089, + "99.0" : 355.9543623081089, + "99.9" : 355.9543623081089, + "99.99" : 355.9543623081089, + "99.999" : 355.9543623081089, + "99.9999" : 355.9543623081089, + "100.0" : 355.9543623081089 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.36606065776704, + 355.9543623081089, + 355.44739687765446 + ], + [ + 353.3104547724866, + 352.6586337417818, + 352.0106775017903 + ], + [ + 348.08547373181875, + 348.1089418718505, + 347.5038937323927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.97197788613875, + "scoreError" : 2.7303080728968436, + "scoreConfidence" : [ + 105.2416698132419, + 110.70228595903559 + ], + "scorePercentiles" : { + "0.0" : 105.82762260516864, + "50.0" : 108.34243905974502, + "90.0" : 109.89787443224124, + "95.0" : 109.89787443224124, + "99.0" : 109.89787443224124, + "99.9" : 109.89787443224124, + "99.99" : 109.89787443224124, + "99.999" : 109.89787443224124, + "99.9999" : 109.89787443224124, + "100.0" : 109.89787443224124 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.24278780414237, + 109.77494855538254, + 109.89787443224124 + ], + [ + 108.25668688929966, + 108.34243905974502, + 108.35487959785104 + ], + [ + 105.99650175505398, + 105.82762260516864, + 106.05406027636413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06264234939734833, + "scoreError" : 0.001940503038725499, + "scoreConfidence" : [ + 0.06070184635862284, + 0.06458285243607384 + ], + "scorePercentiles" : { + "0.0" : 0.061487347325639305, + "50.0" : 0.06224014973548267, + "90.0" : 0.0643154368235226, + "95.0" : 0.0643154368235226, + "99.0" : 0.0643154368235226, + "99.9" : 0.0643154368235226, + "99.99" : 0.0643154368235226, + "99.999" : 0.0643154368235226, + "99.9999" : 0.0643154368235226, + "100.0" : 0.0643154368235226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06234369102198837, + 0.062147674374957274, + 0.06224014973548267 + ], + [ + 0.06389407033371457, + 0.0643154368235226, + 0.06415574181545232 + ], + [ + 0.06163425568567026, + 0.0615627774597077, + 0.061487347325639305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.693017818862823E-4, + "scoreError" : 1.4251241076151806E-5, + "scoreConfidence" : [ + 3.550505408101305E-4, + 3.8355302296243406E-4 + ], + "scorePercentiles" : { + "0.0" : 3.581285258168051E-4, + "50.0" : 3.7241348116836534E-4, + "90.0" : 3.774987506762271E-4, + "95.0" : 3.774987506762271E-4, + "99.0" : 3.774987506762271E-4, + "99.9" : 3.774987506762271E-4, + "99.99" : 3.774987506762271E-4, + "99.999" : 3.774987506762271E-4, + "99.9999" : 3.774987506762271E-4, + "100.0" : 3.774987506762271E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7728784066109127E-4, + 3.7661322860138834E-4, + 3.774987506762271E-4 + ], + [ + 3.581285258168051E-4, + 3.5816292636233426E-4, + 3.5870577075242295E-4 + ], + [ + 3.7241348116836534E-4, + 3.7278464199828296E-4, + 3.721208709396231E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014251813348747193, + "scoreError" : 2.4133152936300968E-4, + "scoreConfidence" : [ + 0.014010481819384184, + 0.014493144878110202 + ], + "scorePercentiles" : { + "0.0" : 0.014109882265792994, + "50.0" : 0.014200063186653244, + "90.0" : 0.01444335340454787, + "95.0" : 0.01444335340454787, + "99.0" : 0.01444335340454787, + "99.9" : 0.01444335340454787, + "99.99" : 0.01444335340454787, + "99.999" : 0.01444335340454787, + "99.9999" : 0.01444335340454787, + "100.0" : 0.01444335340454787 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014433382154187222, + 0.014433030841594948, + 0.01444335340454787 + ], + [ + 0.014115376225199589, + 0.014109882265792994, + 0.014123692329094866 + ], + [ + 0.014207825716136768, + 0.014199714015517262, + 0.014200063186653244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9922482637732131, + "scoreError" : 0.04060752324069984, + "scoreConfidence" : [ + 0.9516407405325132, + 1.032855787013913 + ], + "scorePercentiles" : { + "0.0" : 0.9736791512024146, + "50.0" : 0.9777998899100508, + "90.0" : 1.0262624400205234, + "95.0" : 1.0262624400205234, + "99.0" : 1.0262624400205234, + "99.9" : 1.0262624400205234, + "99.99" : 1.0262624400205234, + "99.999" : 1.0262624400205234, + "99.9999" : 1.0262624400205234, + "100.0" : 1.0262624400205234 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0262624400205234, + 1.0246107202868853, + 1.0222336996831238 + ], + [ + 0.976044982920164, + 0.9750917759360375, + 0.9736791512024146 + ], + [ + 0.9752420151160522, + 0.9777998899100508, + 0.9792696988836663 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013020478890194788, + "scoreError" : 7.333534194251844E-4, + "scoreConfidence" : [ + 0.012287125470769603, + 0.013753832309619973 + ], + "scorePercentiles" : { + "0.0" : 0.012776612812060816, + "50.0" : 0.013020479729130969, + "90.0" : 0.013262022369869371, + "95.0" : 0.013262022369869371, + "99.0" : 0.013262022369869371, + "99.9" : 0.013262022369869371, + "99.99" : 0.013262022369869371, + "99.999" : 0.013262022369869371, + "99.9999" : 0.013262022369869371, + "100.0" : 0.013262022369869371 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013262022369869371, + 0.013255514599294823, + 0.013260036602118372 + ], + [ + 0.012785444858967114, + 0.012776612812060816, + 0.012783242098858227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6823549127759994, + "scoreError" : 0.12037344013443266, + "scoreConfidence" : [ + 3.5619814726415666, + 3.802728352910432 + ], + "scorePercentiles" : { + "0.0" : 3.6239961630434783, + "50.0" : 3.674330386428005, + "90.0" : 3.7354224331590737, + "95.0" : 3.7354224331590737, + "99.0" : 3.7354224331590737, + "99.9" : 3.7354224331590737, + "99.99" : 3.7354224331590737, + "99.999" : 3.7354224331590737, + "99.9999" : 3.7354224331590737, + "100.0" : 3.7354224331590737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6239961630434783, + 3.6654824945054947, + 3.6578229041697146 + ], + [ + 3.6831782783505154, + 3.7354224331590737, + 3.72822720342772 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.830217610770232, + "scoreError" : 0.02941764690765332, + "scoreConfidence" : [ + 2.8007999638625787, + 2.859635257677885 + ], + "scorePercentiles" : { + "0.0" : 2.8059439887766553, + "50.0" : 2.8304837555178266, + "90.0" : 2.8638871964490265, + "95.0" : 2.8638871964490265, + "99.0" : 2.8638871964490265, + "99.9" : 2.8638871964490265, + "99.99" : 2.8638871964490265, + "99.999" : 2.8638871964490265, + "99.9999" : 2.8638871964490265, + "100.0" : 2.8638871964490265 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8059439887766553, + 2.80763629365525, + 2.8274634690415605 + ], + [ + 2.8266450850763145, + 2.8334196541076486, + 2.8638871964490265 + ], + [ + 2.8327837142452563, + 2.8304837555178266, + 2.8436953400625535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1753886762344773, + "scoreError" : 0.0030167678177013334, + "scoreConfidence" : [ + 0.17237190841677597, + 0.17840544405217862 + ], + "scorePercentiles" : { + "0.0" : 0.1728514556469734, + "50.0" : 0.17628545656465944, + "90.0" : 0.17697612007574418, + "95.0" : 0.17697612007574418, + "99.0" : 0.17697612007574418, + "99.9" : 0.17697612007574418, + "99.99" : 0.17697612007574418, + "99.999" : 0.17697612007574418, + "99.9999" : 0.17697612007574418, + "100.0" : 0.17697612007574418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17323752276270657, + 0.17297506889453929, + 0.1728514556469734 + ], + [ + 0.17697612007574418, + 0.17628545656465944, + 0.1761608011520778 + ], + [ + 0.17683352849640147, + 0.17655357137056196, + 0.1766245611466318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3252011556337465, + "scoreError" : 0.011613804722758634, + "scoreConfidence" : [ + 0.3135873509109879, + 0.33681496035650516 + ], + "scorePercentiles" : { + "0.0" : 0.31793855517756653, + "50.0" : 0.32358584517068434, + "90.0" : 0.3339527306061112, + "95.0" : 0.3339527306061112, + "99.0" : 0.3339527306061112, + "99.9" : 0.3339527306061112, + "99.99" : 0.3339527306061112, + "99.999" : 0.3339527306061112, + "99.9999" : 0.3339527306061112, + "100.0" : 0.3339527306061112 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32359638985244626, + 0.32337204507679873, + 0.32358584517068434 + ], + [ + 0.333943945167969, + 0.33376095434216674, + 0.3339527306061112 + ], + [ + 0.3185725668822274, + 0.31793855517756653, + 0.318087368427749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16379379419542822, + "scoreError" : 0.011142070500678086, + "scoreConfidence" : [ + 0.15265172369475014, + 0.1749358646961063 + ], + "scorePercentiles" : { + "0.0" : 0.15917055110064143, + "50.0" : 0.15955122844105493, + "90.0" : 0.1727546144039249, + "95.0" : 0.1727546144039249, + "99.0" : 0.1727546144039249, + "99.9" : 0.1727546144039249, + "99.99" : 0.1727546144039249, + "99.999" : 0.1727546144039249, + "99.9999" : 0.1727546144039249, + "100.0" : 0.1727546144039249 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15958058684134938, + 0.15917055110064143, + 0.15917860239717305 + ], + [ + 0.1727546144039249, + 0.17259759036227756, + 0.17254379072415757 + ], + [ + 0.15955122844105493, + 0.15929815637892858, + 0.15946902710934635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38991118899124244, + "scoreError" : 0.01124237080592444, + "scoreConfidence" : [ + 0.378668818185318, + 0.4011535597971669 + ], + "scorePercentiles" : { + "0.0" : 0.38210326390799326, + "50.0" : 0.39018023211080766, + "90.0" : 0.39966706621907844, + "95.0" : 0.39966706621907844, + "99.0" : 0.39966706621907844, + "99.9" : 0.39966706621907844, + "99.99" : 0.39966706621907844, + "99.999" : 0.39966706621907844, + "99.9999" : 0.39966706621907844, + "100.0" : 0.39966706621907844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39966706621907844, + 0.39717512927439536, + 0.39558205047468353 + ], + [ + 0.38210326390799326, + 0.38233665801345773, + 0.38222272790857664 + ], + [ + 0.3904339530316636, + 0.39018023211080766, + 0.3894996199805258 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15684870185149255, + "scoreError" : 0.0037258751961398227, + "scoreConfidence" : [ + 0.15312282665535273, + 0.16057457704763237 + ], + "scorePercentiles" : { + "0.0" : 0.15480540073375748, + "50.0" : 0.1556524699052096, + "90.0" : 0.15974400097442532, + "95.0" : 0.15974400097442532, + "99.0" : 0.15974400097442532, + "99.9" : 0.15974400097442532, + "99.99" : 0.15974400097442532, + "99.999" : 0.15974400097442532, + "99.9999" : 0.15974400097442532, + "100.0" : 0.15974400097442532 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1597275829925888, + 0.15974400097442532, + 0.159548770716998 + ], + [ + 0.15493251851392806, + 0.15480540073375748, + 0.1548956253620607 + ], + [ + 0.15698526397915294, + 0.1556524699052096, + 0.15534668348531216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04782230709382967, + "scoreError" : 0.0017082561348700006, + "scoreConfidence" : [ + 0.046114050958959665, + 0.04953056322869967 + ], + "scorePercentiles" : { + "0.0" : 0.04707639163183068, + "50.0" : 0.04721573866013211, + "90.0" : 0.04920717646943044, + "95.0" : 0.04920717646943044, + "99.0" : 0.04920717646943044, + "99.9" : 0.04920717646943044, + "99.99" : 0.04920717646943044, + "99.999" : 0.04920717646943044, + "99.9999" : 0.04920717646943044, + "100.0" : 0.04920717646943044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04721573866013211, + 0.04707639163183068, + 0.047087921274932665 + ], + [ + 0.04726264621172378, + 0.047139337894786464, + 0.047093677427406215 + ], + [ + 0.0491894079390064, + 0.0491284663352182, + 0.04920717646943044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9281569.0026659, + "scoreError" : 115612.17714641236, + "scoreConfidence" : [ + 9165956.825519487, + 9397181.179812312 + ], + "scorePercentiles" : { + "0.0" : 9196106.576286765, + "50.0" : 9263902.401851851, + "90.0" : 9365629.605805244, + "95.0" : 9365629.605805244, + "99.0" : 9365629.605805244, + "99.9" : 9365629.605805244, + "99.99" : 9365629.605805244, + "99.999" : 9365629.605805244, + "99.9999" : 9365629.605805244, + "100.0" : 9365629.605805244 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9310784.226046512, + 9263902.401851851, + 9258585.227567067 + ], + [ + 9361236.768942937, + 9365629.605805244, + 9355414.256314313 + ], + [ + 9218562.90046083, + 9203899.060717572, + 9196106.576286765 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..fe3a7e2f75 --- /dev/null +++ b/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.403194491531668, + "scoreError" : 0.0054344602373101285, + "scoreConfidence" : [ + 3.3977600312943577, + 3.408628951768978 + ], + "scorePercentiles" : { + "0.0" : 3.40204038330392, + "50.0" : 3.403455956648364, + "90.0" : 3.4038256695260225, + "95.0" : 3.4038256695260225, + "99.0" : 3.4038256695260225, + "99.9" : 3.4038256695260225, + "99.99" : 3.4038256695260225, + "99.999" : 3.4038256695260225, + "99.9999" : 3.4038256695260225, + "100.0" : 3.4038256695260225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4038256695260225, + 3.403812822654316 + ], + [ + 3.403099090642413, + 3.40204038330392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7219424259297373, + "scoreError" : 0.013541201269863041, + "scoreConfidence" : [ + 1.7084012246598743, + 1.7354836271996004 + ], + "scorePercentiles" : { + "0.0" : 1.7197695025152795, + "50.0" : 1.7218632263632574, + "90.0" : 1.7242737484771553, + "95.0" : 1.7242737484771553, + "99.0" : 1.7242737484771553, + "99.9" : 1.7242737484771553, + "99.99" : 1.7242737484771553, + "99.999" : 1.7242737484771553, + "99.9999" : 1.7242737484771553, + "100.0" : 1.7242737484771553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7197695025152795, + 1.7242737484771553 + ], + [ + 1.7206375929853883, + 1.7230888597411262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8640697627505329, + "scoreError" : 0.014770242609452224, + "scoreConfidence" : [ + 0.8492995201410807, + 0.8788400053599852 + ], + "scorePercentiles" : { + "0.0" : 0.8624312182679136, + "50.0" : 0.8632019184962488, + "90.0" : 0.8674439957417209, + "95.0" : 0.8674439957417209, + "99.0" : 0.8674439957417209, + "99.9" : 0.8674439957417209, + "99.99" : 0.8674439957417209, + "99.999" : 0.8674439957417209, + "99.9999" : 0.8674439957417209, + "100.0" : 0.8674439957417209 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8624312182679136, + 0.8634219709025568 + ], + [ + 0.8629818660899409, + 0.8674439957417209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.9436319756992, + "scoreError" : 0.09563035262704961, + "scoreConfidence" : [ + 15.84800162307215, + 16.03926232832625 + ], + "scorePercentiles" : { + "0.0" : 15.84638395040122, + "50.0" : 15.959992832909032, + "90.0" : 16.02254842355818, + "95.0" : 16.02254842355818, + "99.0" : 16.02254842355818, + "99.9" : 16.02254842355818, + "99.99" : 16.02254842355818, + "99.999" : 16.02254842355818, + "99.9999" : 16.02254842355818, + "100.0" : 16.02254842355818 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.02254842355818, + 15.987810841814806, + 15.991277618896921 + ], + [ + 15.912647622226181, + 15.879334862745797, + 15.84638395040122 + ], + [ + 15.928670625550126, + 15.964021003190537, + 15.959992832909032 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2640.280594719942, + "scoreError" : 163.1601437194584, + "scoreConfidence" : [ + 2477.1204510004836, + 2803.440738439401 + ], + "scorePercentiles" : { + "0.0" : 2532.8517014134386, + "50.0" : 2628.7413437275936, + "90.0" : 2765.5166739080864, + "95.0" : 2765.5166739080864, + "99.0" : 2765.5166739080864, + "99.9" : 2765.5166739080864, + "99.99" : 2765.5166739080864, + "99.999" : 2765.5166739080864, + "99.9999" : 2765.5166739080864, + "100.0" : 2765.5166739080864 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2628.7413437275936, + 2624.102851090245, + 2631.2151456928896 + ], + [ + 2747.292980003622, + 2760.780272754581, + 2765.5166739080864 + ], + [ + 2536.3386188386053, + 2532.8517014134386, + 2535.6857650504176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70561.7075536086, + "scoreError" : 675.1940634943425, + "scoreConfidence" : [ + 69886.51349011426, + 71236.90161710295 + ], + "scorePercentiles" : { + "0.0" : 70054.20588415946, + "50.0" : 70598.37075600476, + "90.0" : 71032.91635748415, + "95.0" : 71032.91635748415, + "99.0" : 71032.91635748415, + "99.9" : 71032.91635748415, + "99.99" : 71032.91635748415, + "99.999" : 71032.91635748415, + "99.9999" : 71032.91635748415, + "100.0" : 71032.91635748415 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70634.05122592344, + 70598.37075600476, + 70573.16509122771 + ], + [ + 70977.18073904366, + 71032.91635748415, + 70999.40010834833 + ], + [ + 70063.63182051902, + 70054.20588415946, + 70122.4459997669 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.49420084887447, + "scoreError" : 9.469080745548057, + "scoreConfidence" : [ + 328.0251201033264, + 346.96328159442254 + ], + "scorePercentiles" : { + "0.0" : 330.2899132159104, + "50.0" : 339.15051295464735, + "90.0" : 344.43838779117556, + "95.0" : 344.43838779117556, + "99.0" : 344.43838779117556, + "99.9" : 344.43838779117556, + "99.99" : 344.43838779117556, + "99.999" : 344.43838779117556, + "99.9999" : 344.43838779117556, + "100.0" : 344.43838779117556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 330.386498161057, + 330.47431679190134, + 330.2899132159104 + ], + [ + 341.3405225744992, + 342.95327223940876, + 344.43838779117556 + ], + [ + 338.54115541959317, + 339.15051295464735, + 339.8732284916776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.33461889685323, + "scoreError" : 5.416508050150125, + "scoreConfidence" : [ + 99.9181108467031, + 110.75112694700336 + ], + "scorePercentiles" : { + "0.0" : 100.52179981974373, + "50.0" : 107.24703425038527, + "90.0" : 107.99725413741437, + "95.0" : 107.99725413741437, + "99.0" : 107.99725413741437, + "99.9" : 107.99725413741437, + "99.99" : 107.99725413741437, + "99.999" : 107.99725413741437, + "99.9999" : 107.99725413741437, + "100.0" : 107.99725413741437 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.86967319741898, + 107.24703425038527, + 107.35165090978742 + ], + [ + 107.99725413741437, + 107.84506179509498, + 107.47085951287897 + ], + [ + 101.69064834493503, + 100.52179981974373, + 101.01758810402046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06268900704606982, + "scoreError" : 0.001163791376921044, + "scoreConfidence" : [ + 0.06152521566914877, + 0.06385279842299087 + ], + "scorePercentiles" : { + "0.0" : 0.06172657346287506, + "50.0" : 0.06306495052626931, + "90.0" : 0.06333138844979798, + "95.0" : 0.06333138844979798, + "99.0" : 0.06333138844979798, + "99.9" : 0.06333138844979798, + "99.99" : 0.06333138844979798, + "99.999" : 0.06333138844979798, + "99.9999" : 0.06333138844979798, + "100.0" : 0.06333138844979798 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06176310465626177, + 0.06172657346287506, + 0.06184468065776942 + ], + [ + 0.06320055288221502, + 0.06314213385319653, + 0.06292492596997269 + ], + [ + 0.06320275295627058, + 0.06306495052626931, + 0.06333138844979798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7481237278850056E-4, + "scoreError" : 1.1980570626435157E-5, + "scoreConfidence" : [ + 3.6283180216206543E-4, + 3.867929434149357E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6409876203927915E-4, + "50.0" : 3.7933416066346235E-4, + "90.0" : 3.8019052370467216E-4, + "95.0" : 3.8019052370467216E-4, + "99.0" : 3.8019052370467216E-4, + "99.9" : 3.8019052370467216E-4, + "99.99" : 3.8019052370467216E-4, + "99.999" : 3.8019052370467216E-4, + "99.9999" : 3.8019052370467216E-4, + "100.0" : 3.8019052370467216E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6570256780549384E-4, + 3.6409876203927915E-4, + 3.663767519349152E-4 + ], + [ + 3.8019052370467216E-4, + 3.8017008019173117E-4, + 3.7933416066346235E-4 + ], + [ + 3.797582444148515E-4, + 3.7767420023679903E-4, + 3.800060641053006E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014098005962349182, + "scoreError" : 2.050573003153203E-5, + "scoreConfidence" : [ + 0.01407750023231765, + 0.014118511692380714 + ], + "scorePercentiles" : { + "0.0" : 0.014083777860870986, + "50.0" : 0.014098247163116069, + "90.0" : 0.01412190544660648, + "95.0" : 0.01412190544660648, + "99.0" : 0.01412190544660648, + "99.9" : 0.01412190544660648, + "99.99" : 0.01412190544660648, + "99.999" : 0.01412190544660648, + "99.9999" : 0.01412190544660648, + "100.0" : 0.01412190544660648 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014083777860870986, + 0.014092198276262962, + 0.014087036303267731 + ], + [ + 0.01412190544660648, + 0.014103096767051113, + 0.014105937445252077 + ], + [ + 0.014086103755592116, + 0.014098247163116069, + 0.014103750643123096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9900720714208604, + "scoreError" : 0.032398284485443664, + "scoreConfidence" : [ + 0.9576737869354167, + 1.022470355906304 + ], + "scorePercentiles" : { + "0.0" : 0.9747853510088703, + "50.0" : 0.9790084789035732, + "90.0" : 1.0185325541297485, + "95.0" : 1.0185325541297485, + "99.0" : 1.0185325541297485, + "99.9" : 1.0185325541297485, + "99.99" : 1.0185325541297485, + "99.999" : 1.0185325541297485, + "99.9999" : 1.0185325541297485, + "100.0" : 1.0185325541297485 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0146146674444556, + 1.013647100851409, + 1.0185325541297485 + ], + [ + 0.9802752494608901, + 0.9790084789035732, + 0.9757974534100888 + ], + [ + 0.9747853510088703, + 0.978946785238841, + 0.9750410023398655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013014100910331693, + "scoreError" : 2.3206391521088976E-4, + "scoreConfidence" : [ + 0.012782036995120804, + 0.013246164825542582 + ], + "scorePercentiles" : { + "0.0" : 0.012868733088318561, + "50.0" : 0.013027448912159054, + "90.0" : 0.013099782038014646, + "95.0" : 0.013099782038014646, + "99.0" : 0.013099782038014646, + "99.9" : 0.013099782038014646, + "99.99" : 0.013099782038014646, + "99.999" : 0.013099782038014646, + "99.9999" : 0.013099782038014646, + "100.0" : 0.013099782038014646 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012868733088318561, + 0.013014096830110695, + 0.013040800994207413 + ], + [ + 0.012983094574488803, + 0.013078097936850035, + 0.013099782038014646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.803681758942895, + "scoreError" : 0.058068017082038216, + "scoreConfidence" : [ + 3.745613741860857, + 3.861749776024933 + ], + "scorePercentiles" : { + "0.0" : 3.7688745960813868, + "50.0" : 3.8028532290171775, + "90.0" : 3.828712826952527, + "95.0" : 3.828712826952527, + "99.0" : 3.828712826952527, + "99.9" : 3.828712826952527, + "99.99" : 3.828712826952527, + "99.999" : 3.828712826952527, + "99.9999" : 3.828712826952527, + "100.0" : 3.828712826952527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7688745960813868, + 3.7987889476082004, + 3.8001995714285712 + ], + [ + 3.8055068866057837, + 3.8200077249809015, + 3.828712826952527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.922983171605901, + "scoreError" : 0.06878756494659564, + "scoreConfidence" : [ + 2.8541956066593053, + 2.9917707365524966 + ], + "scorePercentiles" : { + "0.0" : 2.882975975208994, + "50.0" : 2.899830810089881, + "90.0" : 2.991555425067305, + "95.0" : 2.991555425067305, + "99.0" : 2.991555425067305, + "99.9" : 2.991555425067305, + "99.99" : 2.991555425067305, + "99.999" : 2.991555425067305, + "99.9999" : 2.991555425067305, + "100.0" : 2.991555425067305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8932728536303154, + 2.882975975208994, + 2.911509500727802 + ], + [ + 2.9790622302651175, + 2.991555425067305, + 2.955098183751846 + ], + [ + 2.899830810089881, + 2.8976569843568947, + 2.895886581354951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1752739306467576, + "scoreError" : 0.0067926352926449335, + "scoreConfidence" : [ + 0.16848129535411266, + 0.1820665659394025 + ], + "scorePercentiles" : { + "0.0" : 0.16931798284853206, + "50.0" : 0.17703718935330254, + "90.0" : 0.179263765438738, + "95.0" : 0.179263765438738, + "99.0" : 0.179263765438738, + "99.9" : 0.179263765438738, + "99.99" : 0.179263765438738, + "99.999" : 0.179263765438738, + "99.9999" : 0.179263765438738, + "100.0" : 0.179263765438738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17127871834001301, + 0.16931798284853206, + 0.16951058001525554 + ], + [ + 0.179263765438738, + 0.17873609151027703, + 0.17824298643590475 + ], + [ + 0.17700606642948175, + 0.17703718935330254, + 0.17707199544931385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3311272051006344, + "scoreError" : 0.02574131802826179, + "scoreConfidence" : [ + 0.30538588707237263, + 0.3568685231288962 + ], + "scorePercentiles" : { + "0.0" : 0.32002414304457744, + "50.0" : 0.3214951376583296, + "90.0" : 0.35274181238095237, + "95.0" : 0.35274181238095237, + "99.0" : 0.35274181238095237, + "99.9" : 0.35274181238095237, + "99.99" : 0.35274181238095237, + "99.999" : 0.35274181238095237, + "99.9999" : 0.35274181238095237, + "100.0" : 0.35274181238095237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3225040451818885, + 0.3214951376583296, + 0.32122822893578745 + ], + [ + 0.32008386182504883, + 0.3202712323853446, + 0.32002414304457744 + ], + [ + 0.35274181238095237, + 0.35085857753841837, + 0.35093780695536214 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1573598302291365, + "scoreError" : 0.0033830824565148298, + "scoreConfidence" : [ + 0.15397674777262166, + 0.16074291268565133 + ], + "scorePercentiles" : { + "0.0" : 0.15461272411447302, + "50.0" : 0.15828907844627, + "90.0" : 0.1594421173947704, + "95.0" : 0.1594421173947704, + "99.0" : 0.1594421173947704, + "99.9" : 0.1594421173947704, + "99.99" : 0.1594421173947704, + "99.999" : 0.1594421173947704, + "99.9999" : 0.1594421173947704, + "100.0" : 0.1594421173947704 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15461272411447302, + 0.15493705184060486, + 0.15469718323432957 + ], + [ + 0.1586219272265842, + 0.1594421173947704, + 0.15929977722377978 + ], + [ + 0.158008010443988, + 0.15828907844627, + 0.15833060213742875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3929055482587191, + "scoreError" : 0.008874881668847938, + "scoreConfidence" : [ + 0.3840306665898712, + 0.401780429927567 + ], + "scorePercentiles" : { + "0.0" : 0.3861855186329407, + "50.0" : 0.3916299738789896, + "90.0" : 0.39987236290935263, + "95.0" : 0.39987236290935263, + "99.0" : 0.39987236290935263, + "99.9" : 0.39987236290935263, + "99.99" : 0.39987236290935263, + "99.999" : 0.39987236290935263, + "99.9999" : 0.39987236290935263, + "100.0" : 0.39987236290935263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39418789096929324, + 0.3916299738789896, + 0.391009796019706 + ], + [ + 0.3995561204203124, + 0.39987236290935263, + 0.39806413752885916 + ], + [ + 0.38798272721629484, + 0.3876614067527232, + 0.3861855186329407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15638411625309134, + "scoreError" : 0.0038605736119067847, + "scoreConfidence" : [ + 0.15252354264118456, + 0.16024468986499812 + ], + "scorePercentiles" : { + "0.0" : 0.15314811026371405, + "50.0" : 0.15670415334712298, + "90.0" : 0.159883718659568, + "95.0" : 0.159883718659568, + "99.0" : 0.159883718659568, + "99.9" : 0.159883718659568, + "99.99" : 0.159883718659568, + "99.999" : 0.159883718659568, + "99.9999" : 0.159883718659568, + "100.0" : 0.159883718659568 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1566501469187631, + 0.15670415334712298, + 0.1567198383613597 + ], + [ + 0.1547686963506361, + 0.15314811026371405, + 0.15320902544735873 + ], + [ + 0.159883718659568, + 0.15830709884438815, + 0.15806625808491132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04731102617255678, + "scoreError" : 5.494062501007604E-4, + "scoreConfidence" : [ + 0.04676161992245602, + 0.04786043242265754 + ], + "scorePercentiles" : { + "0.0" : 0.04687650850095393, + "50.0" : 0.04743667847350695, + "90.0" : 0.047676395332538736, + "95.0" : 0.047676395332538736, + "99.0" : 0.047676395332538736, + "99.9" : 0.047676395332538736, + "99.99" : 0.047676395332538736, + "99.999" : 0.047676395332538736, + "99.9999" : 0.047676395332538736, + "100.0" : 0.047676395332538736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04749636832506115, + 0.04743667847350695, + 0.04734048231150498 + ], + [ + 0.04691541189661886, + 0.04689057975486013, + 0.04687650850095393 + ], + [ + 0.047676395332538736, + 0.047574515204567076, + 0.04759229575339923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9441197.85305533, + "scoreError" : 304521.42768585624, + "scoreConfidence" : [ + 9136676.425369473, + 9745719.280741187 + ], + "scorePercentiles" : { + "0.0" : 9249209.369685767, + "50.0" : 9358704.228250701, + "90.0" : 9681377.27589545, + "95.0" : 9681377.27589545, + "99.0" : 9681377.27589545, + "99.9" : 9681377.27589545, + "99.99" : 9681377.27589545, + "99.999" : 9681377.27589545, + "99.9999" : 9681377.27589545, + "100.0" : 9681377.27589545 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9409813.65098777, + 9358704.228250701, + 9353099.48317757 + ], + [ + 9675122.80754352, + 9664841.801932367, + 9681377.27589545 + ], + [ + 9318771.304469274, + 9259840.755555555, + 9249209.369685767 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..43c4405b48 --- /dev/null +++ b/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4156356646292396, + "scoreError" : 0.013598054926190144, + "scoreConfidence" : [ + 3.4020376097030494, + 3.42923371955543 + ], + "scorePercentiles" : { + "0.0" : 3.4130888415653047, + "50.0" : 3.415786695895449, + "90.0" : 3.4178804251607553, + "95.0" : 3.4178804251607553, + "99.0" : 3.4178804251607553, + "99.9" : 3.4178804251607553, + "99.99" : 3.4178804251607553, + "99.999" : 3.4178804251607553, + "99.9999" : 3.4178804251607553, + "100.0" : 3.4178804251607553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4148610786856364, + 3.4178804251607553 + ], + [ + 3.4130888415653047, + 3.4167123131052617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7253259788610695, + "scoreError" : 0.008555086625644845, + "scoreConfidence" : [ + 1.7167708922354248, + 1.7338810654867143 + ], + "scorePercentiles" : { + "0.0" : 1.7241059127032126, + "50.0" : 1.7252574282825233, + "90.0" : 1.726683146176019, + "95.0" : 1.726683146176019, + "99.0" : 1.726683146176019, + "99.9" : 1.726683146176019, + "99.99" : 1.726683146176019, + "99.999" : 1.726683146176019, + "99.9999" : 1.726683146176019, + "100.0" : 1.726683146176019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7241059127032126, + 1.726683146176019 + ], + [ + 1.7242780552173471, + 1.7262368013476994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680284206920243, + "scoreError" : 0.0038235580345896383, + "scoreConfidence" : [ + 0.8642048626574347, + 0.871851978726614 + ], + "scorePercentiles" : { + "0.0" : 0.8672392519716291, + "50.0" : 0.8681156014545766, + "90.0" : 0.8686432278873151, + "95.0" : 0.8686432278873151, + "99.0" : 0.8686432278873151, + "99.9" : 0.8686432278873151, + "99.99" : 0.8686432278873151, + "99.999" : 0.8686432278873151, + "99.9999" : 0.8686432278873151, + "100.0" : 0.8686432278873151 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8682466548186853, + 0.8679845480904678 + ], + [ + 0.8672392519716291, + 0.8686432278873151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.266398884740102, + "scoreError" : 0.12089071736767489, + "scoreConfidence" : [ + 16.145508167372427, + 16.387289602107778 + ], + "scorePercentiles" : { + "0.0" : 16.16215887190314, + "50.0" : 16.2909633020778, + "90.0" : 16.35367633567486, + "95.0" : 16.35367633567486, + "99.0" : 16.35367633567486, + "99.9" : 16.35367633567486, + "99.99" : 16.35367633567486, + "99.999" : 16.35367633567486, + "99.9999" : 16.35367633567486, + "100.0" : 16.35367633567486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.30206765152038, + 16.2909633020778, + 16.35367633567486 + ], + [ + 16.286595407788486, + 16.32141250450957, + 16.319740312132282 + ], + [ + 16.181694193122404, + 16.16215887190314, + 16.17928138393201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.4379672756168, + "scoreError" : 52.77435647527872, + "scoreConfidence" : [ + 2655.663610800338, + 2761.2123237508954 + ], + "scorePercentiles" : { + "0.0" : 2678.8808548562843, + "50.0" : 2690.720282550591, + "90.0" : 2759.421890618881, + "95.0" : 2759.421890618881, + "99.0" : 2759.421890618881, + "99.9" : 2759.421890618881, + "99.99" : 2759.421890618881, + "99.999" : 2759.421890618881, + "99.9999" : 2759.421890618881, + "100.0" : 2759.421890618881 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2678.8808548562843, + 2680.4724669738675, + 2683.5451766372953 + ], + [ + 2733.344157571987, + 2759.421890618881, + 2750.126719125809 + ], + [ + 2709.4928928539957, + 2690.720282550591, + 2689.9372642918393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71058.98757792657, + "scoreError" : 822.5121592927409, + "scoreConfidence" : [ + 70236.47541863383, + 71881.49973721932 + ], + "scorePercentiles" : { + "0.0" : 70334.4708128567, + "50.0" : 71230.61338609025, + "90.0" : 71513.68980710543, + "95.0" : 71513.68980710543, + "99.0" : 71513.68980710543, + "99.9" : 71513.68980710543, + "99.99" : 71513.68980710543, + "99.999" : 71513.68980710543, + "99.9999" : 71513.68980710543, + "100.0" : 71513.68980710543 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71368.81270009922, + 71230.61338609025, + 71190.58903098464 + ], + [ + 70334.4708128567, + 70389.2239357189, + 70557.90033738017 + ], + [ + 71513.68980710543, + 71475.07240288406, + 71470.51578821983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.8880754496758, + "scoreError" : 2.8872515097664553, + "scoreConfidence" : [ + 351.00082393990937, + 356.7753269594422 + ], + "scorePercentiles" : { + "0.0" : 350.7947815417503, + "50.0" : 354.64335969623687, + "90.0" : 355.8222124963307, + "95.0" : 355.8222124963307, + "99.0" : 355.8222124963307, + "99.9" : 355.8222124963307, + "99.99" : 355.8222124963307, + "99.999" : 355.8222124963307, + "99.9999" : 355.8222124963307, + "100.0" : 355.8222124963307 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.56970556775656, + 355.8222124963307, + 354.9352269121157 + ], + [ + 354.6486608825263, + 353.1706551915284, + 354.64335969623687 + ], + [ + 350.7947815417503, + 353.6826154737699, + 351.7254612850681 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.725544877288, + "scoreError" : 1.8828817446497361, + "scoreConfidence" : [ + 105.84266313263826, + 109.60842662193774 + ], + "scorePercentiles" : { + "0.0" : 106.20111805060321, + "50.0" : 108.05817565088162, + "90.0" : 108.91316264233733, + "95.0" : 108.91316264233733, + "99.0" : 108.91316264233733, + "99.9" : 108.91316264233733, + "99.99" : 108.91316264233733, + "99.999" : 108.91316264233733, + "99.9999" : 108.91316264233733, + "100.0" : 108.91316264233733 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.08754446696082, + 107.92893729958848, + 108.05817565088162 + ], + [ + 108.91316264233733, + 108.80524904880716, + 108.7959124505325 + ], + [ + 106.51012019955222, + 106.22968408632865, + 106.20111805060321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06139367548232111, + "scoreError" : 3.540999759717375E-4, + "scoreConfidence" : [ + 0.06103957550634937, + 0.061747775458292846 + ], + "scorePercentiles" : { + "0.0" : 0.06110012819854828, + "50.0" : 0.061308202516047156, + "90.0" : 0.061741893811702385, + "95.0" : 0.061741893811702385, + "99.0" : 0.061741893811702385, + "99.9" : 0.061741893811702385, + "99.99" : 0.061741893811702385, + "99.999" : 0.061741893811702385, + "99.9999" : 0.061741893811702385, + "100.0" : 0.061741893811702385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061263466611938835, + 0.06129953820738525, + 0.06110012819854828 + ], + [ + 0.061741893811702385, + 0.06153386918050137, + 0.06166293546437777 + ], + [ + 0.061243678443693196, + 0.06138936690669564, + 0.061308202516047156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.694689698392999E-4, + "scoreError" : 9.255300635961062E-6, + "scoreConfidence" : [ + 3.602136692033388E-4, + 3.7872427047526094E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6217798291792163E-4, + "50.0" : 3.7218480085890395E-4, + "90.0" : 3.7506734062791447E-4, + "95.0" : 3.7506734062791447E-4, + "99.0" : 3.7506734062791447E-4, + "99.9" : 3.7506734062791447E-4, + "99.99" : 3.7506734062791447E-4, + "99.999" : 3.7506734062791447E-4, + "99.9999" : 3.7506734062791447E-4, + "100.0" : 3.7506734062791447E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.622063955463637E-4, + 3.6227118109386175E-4, + 3.6217798291792163E-4 + ], + [ + 3.7320771985383417E-4, + 3.7278784840373975E-4, + 3.7506734062791447E-4 + ], + [ + 3.7218480085890395E-4, + 3.719860773868182E-4, + 3.733313818643414E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014185911212594595, + "scoreError" : 3.2603556268247393E-4, + "scoreConfidence" : [ + 0.013859875649912121, + 0.01451194677527707 + ], + "scorePercentiles" : { + "0.0" : 0.014013460115357451, + "50.0" : 0.014108437662597841, + "90.0" : 0.014442271787354495, + "95.0" : 0.014442271787354495, + "99.0" : 0.014442271787354495, + "99.9" : 0.014442271787354495, + "99.99" : 0.014442271787354495, + "99.999" : 0.014442271787354495, + "99.9999" : 0.014442271787354495, + "100.0" : 0.014442271787354495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014110861143644116, + 0.014108437662597841, + 0.014073766856660334 + ], + [ + 0.014013460115357451, + 0.014017406076755624, + 0.014028585135753145 + ], + [ + 0.014441690347867277, + 0.014442271787354495, + 0.014436721787361084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.000218969280612, + "scoreError" : 0.028304821762359534, + "scoreConfidence" : [ + 0.9719141475182526, + 1.0285237910429716 + ], + "scorePercentiles" : { + "0.0" : 0.971517003011463, + "50.0" : 1.006556415601409, + "90.0" : 1.0175622131664632, + "95.0" : 1.0175622131664632, + "99.0" : 1.0175622131664632, + "99.9" : 1.0175622131664632, + "99.99" : 1.0175622131664632, + "99.999" : 1.0175622131664632, + "99.9999" : 1.0175622131664632, + "100.0" : 1.0175622131664632 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9864229748471098, + 0.9793540111644305, + 0.971517003011463 + ], + [ + 1.0175622131664632, + 1.0142364593306288, + 1.0141052803690935 + ], + [ + 1.0029004894705174, + 1.006556415601409, + 1.0093158765643924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013081022622499473, + "scoreError" : 3.378864151227627E-4, + "scoreConfidence" : [ + 0.01274313620737671, + 0.013418909037622237 + ], + "scorePercentiles" : { + "0.0" : 0.012912455037290306, + "50.0" : 0.013086725894439325, + "90.0" : 0.013221848698075737, + "95.0" : 0.013221848698075737, + "99.0" : 0.013221848698075737, + "99.9" : 0.013221848698075737, + "99.99" : 0.013221848698075737, + "99.999" : 0.013221848698075737, + "99.9999" : 0.013221848698075737, + "100.0" : 0.013221848698075737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013221848698075737, + 0.013161446690900669, + 0.013169755604253201 + ], + [ + 0.012912455037290306, + 0.013008624606498946, + 0.013012005097977983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6645016367361083, + "scoreError" : 0.13736673724963294, + "scoreConfidence" : [ + 3.5271348994864753, + 3.8018683739857413 + ], + "scorePercentiles" : { + "0.0" : 3.6035412175792505, + "50.0" : 3.6690025230107586, + "90.0" : 3.720898994791667, + "95.0" : 3.720898994791667, + "99.0" : 3.720898994791667, + "99.9" : 3.720898994791667, + "99.99" : 3.720898994791667, + "99.999" : 3.720898994791667, + "99.9999" : 3.720898994791667, + "100.0" : 3.720898994791667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6035412175792505, + 3.638543946909091, + 3.6223095568428674 + ], + [ + 3.720898994791667, + 3.699461099112426, + 3.702255005181347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8352983613756226, + "scoreError" : 0.08666946035359768, + "scoreConfidence" : [ + 2.748628901022025, + 2.92196782172922 + ], + "scorePercentiles" : { + "0.0" : 2.765421011611833, + "50.0" : 2.8449870605802046, + "90.0" : 2.8918537652500724, + "95.0" : 2.8918537652500724, + "99.0" : 2.8918537652500724, + "99.9" : 2.8918537652500724, + "99.99" : 2.8918537652500724, + "99.999" : 2.8918537652500724, + "99.9999" : 2.8918537652500724, + "100.0" : 2.8918537652500724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.835161081632653, + 2.8449870605802046, + 2.855578256996002 + ], + [ + 2.7817287532684283, + 2.768810570598007, + 2.765421011611833 + ], + [ + 2.8824682089337177, + 2.8918537652500724, + 2.8916765435096847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17668539768407285, + "scoreError" : 0.0038052870787773085, + "scoreConfidence" : [ + 0.17288011060529554, + 0.18049068476285016 + ], + "scorePercentiles" : { + "0.0" : 0.17355092122663612, + "50.0" : 0.1777485684322787, + "90.0" : 0.17866238191628106, + "95.0" : 0.17866238191628106, + "99.0" : 0.17866238191628106, + "99.9" : 0.17866238191628106, + "99.99" : 0.17866238191628106, + "99.999" : 0.17866238191628106, + "99.9999" : 0.17866238191628106, + "100.0" : 0.17866238191628106 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17391668427826087, + 0.17365871248220052, + 0.17355092122663612 + ], + [ + 0.1777485684322787, + 0.17777599557349072, + 0.17773426860392785 + ], + [ + 0.17863249555214175, + 0.17866238191628106, + 0.17848855109143805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32587688199055964, + "scoreError" : 0.019338886180817538, + "scoreConfidence" : [ + 0.3065379958097421, + 0.34521576817137717 + ], + "scorePercentiles" : { + "0.0" : 0.3141145466453072, + "50.0" : 0.32231344068069745, + "90.0" : 0.3408148210074296, + "95.0" : 0.3408148210074296, + "99.0" : 0.3408148210074296, + "99.9" : 0.3408148210074296, + "99.99" : 0.3408148210074296, + "99.999" : 0.3408148210074296, + "99.9999" : 0.3408148210074296, + "100.0" : 0.3408148210074296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3235398579054644, + 0.32227414531098936, + 0.32231344068069745 + ], + [ + 0.3408148210074296, + 0.34049507483827035, + 0.3400488105617519 + ], + [ + 0.3141145466453072, + 0.31483124140536456, + 0.3144599995597623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1623926354338566, + "scoreError" : 0.012456786224923444, + "scoreConfidence" : [ + 0.14993584920893316, + 0.17484942165878004 + ], + "scorePercentiles" : { + "0.0" : 0.1533380093227226, + "50.0" : 0.16319451313685174, + "90.0" : 0.17073326242914702, + "95.0" : 0.17073326242914702, + "99.0" : 0.17073326242914702, + "99.9" : 0.17073326242914702, + "99.99" : 0.17073326242914702, + "99.999" : 0.17073326242914702, + "99.9999" : 0.17073326242914702, + "100.0" : 0.17073326242914702 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15338722272838826, + 0.15366977726043396, + 0.1533380093227226 + ], + [ + 0.16311651067577929, + 0.1632495087255334, + 0.16319451313685174 + ], + [ + 0.17073326242914702, + 0.17037008702318687, + 0.17047482760266616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39736623534599325, + "scoreError" : 0.0072331898616597515, + "scoreConfidence" : [ + 0.3901330454843335, + 0.404599425207653 + ], + "scorePercentiles" : { + "0.0" : 0.39367914727186837, + "50.0" : 0.3956107970567292, + "90.0" : 0.40649457729360594, + "95.0" : 0.40649457729360594, + "99.0" : 0.40649457729360594, + "99.9" : 0.40649457729360594, + "99.99" : 0.40649457729360594, + "99.999" : 0.40649457729360594, + "99.9999" : 0.40649457729360594, + "100.0" : 0.40649457729360594 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3956107970567292, + 0.39441284527706566, + 0.3941601015726617 + ], + [ + 0.40649457729360594, + 0.39985587800879646, + 0.400734263273893 + ], + [ + 0.39739873168017803, + 0.3939497766791412, + 0.39367914727186837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15825399365071202, + "scoreError" : 0.0013317635767325676, + "scoreConfidence" : [ + 0.15692223007397946, + 0.15958575722744459 + ], + "scorePercentiles" : { + "0.0" : 0.15673044195595956, + "50.0" : 0.1583845141196408, + "90.0" : 0.1593887585470426, + "95.0" : 0.1593887585470426, + "99.0" : 0.1593887585470426, + "99.9" : 0.1593887585470426, + "99.99" : 0.1593887585470426, + "99.999" : 0.1593887585470426, + "99.9999" : 0.1593887585470426, + "100.0" : 0.1593887585470426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1583845141196408, + 0.15735447831696878, + 0.15673044195595956 + ], + [ + 0.15894453801039465, + 0.1582970085161617, + 0.15822979096518988 + ], + [ + 0.1593887585470426, + 0.1585478360180106, + 0.15840857640703956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04790902474190342, + "scoreError" : 9.884302829136805E-4, + "scoreConfidence" : [ + 0.046920594458989745, + 0.0488974550248171 + ], + "scorePercentiles" : { + "0.0" : 0.04700120233216146, + "50.0" : 0.048178018003912006, + "90.0" : 0.04842747581320794, + "95.0" : 0.04842747581320794, + "99.0" : 0.04842747581320794, + "99.9" : 0.04842747581320794, + "99.99" : 0.04842747581320794, + "99.999" : 0.04842747581320794, + "99.9999" : 0.04842747581320794, + "100.0" : 0.04842747581320794 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047425067774184065, + 0.0470235094445202, + 0.04700120233216146 + ], + [ + 0.04842747581320794, + 0.04839052659746921, + 0.04833344739220586 + ], + [ + 0.04817166911375088, + 0.048178018003912006, + 0.04823030620571908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9340768.943235474, + "scoreError" : 334580.2702463491, + "scoreConfidence" : [ + 9006188.672989124, + 9675349.213481823 + ], + "scorePercentiles" : { + "0.0" : 9167080.854262145, + "50.0" : 9249256.829944547, + "90.0" : 9604620.571976967, + "95.0" : 9604620.571976967, + "99.0" : 9604620.571976967, + "99.9" : 9604620.571976967, + "99.99" : 9604620.571976967, + "99.999" : 9604620.571976967, + "99.9999" : 9604620.571976967, + "100.0" : 9604620.571976967 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9603299.714971209, + 9604620.571976967, + 9599769.868522072 + ], + [ + 9176881.251376146, + 9171812.810265811, + 9167080.854262145 + ], + [ + 9250278.53789279, + 9243920.049907578, + 9249256.829944547 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json b/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json new file mode 100644 index 0000000000..3968fb62a0 --- /dev/null +++ b/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4206904700900105, + "scoreError" : 0.02183667760750563, + "scoreConfidence" : [ + 3.398853792482505, + 3.442527147697516 + ], + "scorePercentiles" : { + "0.0" : 3.4169173445120937, + "50.0" : 3.4204712443645153, + "90.0" : 3.4249020471189184, + "95.0" : 3.4249020471189184, + "99.0" : 3.4249020471189184, + "99.9" : 3.4249020471189184, + "99.99" : 3.4249020471189184, + "99.999" : 3.4249020471189184, + "99.9999" : 3.4249020471189184, + "100.0" : 3.4249020471189184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4169173445120937, + 3.42151719244912 + ], + [ + 3.4194252962799103, + 3.4249020471189184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7252335363338895, + "scoreError" : 0.008307105083911945, + "scoreConfidence" : [ + 1.7169264312499777, + 1.7335406414178014 + ], + "scorePercentiles" : { + "0.0" : 1.7239610059033839, + "50.0" : 1.7249873882714315, + "90.0" : 1.7269983628893113, + "95.0" : 1.7269983628893113, + "99.0" : 1.7269983628893113, + "99.9" : 1.7269983628893113, + "99.99" : 1.7269983628893113, + "99.999" : 1.7269983628893113, + "99.9999" : 1.7269983628893113, + "100.0" : 1.7269983628893113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725213956729067, + 1.7269983628893113 + ], + [ + 1.7239610059033839, + 1.7247608198137958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8684343770623647, + "scoreError" : 0.007317786949523727, + "scoreConfidence" : [ + 0.861116590112841, + 0.8757521640118884 + ], + "scorePercentiles" : { + "0.0" : 0.867179793041212, + "50.0" : 0.8684535805333289, + "90.0" : 0.8696505541415892, + "95.0" : 0.8696505541415892, + "99.0" : 0.8696505541415892, + "99.9" : 0.8696505541415892, + "99.99" : 0.8696505541415892, + "99.999" : 0.8696505541415892, + "99.9999" : 0.8696505541415892, + "100.0" : 0.8696505541415892 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.867179793041212, + 0.8690834321319288 + ], + [ + 0.867823728934729, + 0.8696505541415892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.17909126766679, + "scoreError" : 0.2559768985488164, + "scoreConfidence" : [ + 15.923114369117975, + 16.435068166215608 + ], + "scorePercentiles" : { + "0.0" : 15.95867060528112, + "50.0" : 16.219606732032062, + "90.0" : 16.34178668248754, + "95.0" : 16.34178668248754, + "99.0" : 16.34178668248754, + "99.9" : 16.34178668248754, + "99.99" : 16.34178668248754, + "99.999" : 16.34178668248754, + "99.9999" : 16.34178668248754, + "100.0" : 16.34178668248754 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33268306277049, + 16.34178668248754, + 16.317455598781788 + ], + [ + 16.222099039014896, + 16.21617211413328, + 16.219606732032062 + ], + [ + 15.998538550283158, + 16.0048090242168, + 15.95867060528112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2741.393458861405, + "scoreError" : 128.33119256683457, + "scoreConfidence" : [ + 2613.0622662945707, + 2869.7246514282397 + ], + "scorePercentiles" : { + "0.0" : 2652.278337073892, + "50.0" : 2734.203485973766, + "90.0" : 2835.992818278071, + "95.0" : 2835.992818278071, + "99.0" : 2835.992818278071, + "99.9" : 2835.992818278071, + "99.99" : 2835.992818278071, + "99.999" : 2835.992818278071, + "99.9999" : 2835.992818278071, + "100.0" : 2835.992818278071 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2661.1713934815975, + 2657.433088914789, + 2652.278337073892 + ], + [ + 2832.7345846544295, + 2829.543160848537, + 2835.992818278071 + ], + [ + 2737.992023875842, + 2731.192236651723, + 2734.203485973766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69626.51006344466, + "scoreError" : 1442.2282000666273, + "scoreConfidence" : [ + 68184.28186337803, + 71068.73826351129 + ], + "scorePercentiles" : { + "0.0" : 68747.77960524686, + "50.0" : 69415.45501954913, + "90.0" : 70718.66289611543, + "95.0" : 70718.66289611543, + "99.0" : 70718.66289611543, + "99.9" : 70718.66289611543, + "99.99" : 70718.66289611543, + "99.999" : 70718.66289611543, + "99.9999" : 70718.66289611543, + "100.0" : 70718.66289611543 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69508.20422837307, + 69329.92052768177, + 69415.45501954913 + ], + [ + 68759.44810168311, + 68766.27396576387, + 68747.77960524686 + ], + [ + 70718.66289611543, + 70696.14519876917, + 70696.7010278194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.62313474254336, + "scoreError" : 7.606529656984937, + "scoreConfidence" : [ + 347.0166050855584, + 362.2296643995283 + ], + "scorePercentiles" : { + "0.0" : 349.0330227618401, + "50.0" : 354.7798397775166, + "90.0" : 359.74298642059154, + "95.0" : 359.74298642059154, + "99.0" : 359.74298642059154, + "99.9" : 359.74298642059154, + "99.99" : 359.74298642059154, + "99.999" : 359.74298642059154, + "99.9999" : 359.74298642059154, + "100.0" : 359.74298642059154 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.23653220898484, + 358.78449189912214, + 359.74298642059154 + ], + [ + 349.12833515981123, + 349.0330227618401, + 349.0772965711547 + ], + [ + 354.7798397775166, + 354.58012610305406, + 357.245581780815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.85075131510806, + "scoreError" : 2.625356711099751, + "scoreConfidence" : [ + 105.2253946040083, + 110.47610802620781 + ], + "scorePercentiles" : { + "0.0" : 106.59276942871568, + "50.0" : 107.03915029820716, + "90.0" : 109.93824920257076, + "95.0" : 109.93824920257076, + "99.0" : 109.93824920257076, + "99.9" : 109.93824920257076, + "99.99" : 109.93824920257076, + "99.999" : 109.93824920257076, + "99.9999" : 109.93824920257076, + "100.0" : 109.93824920257076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.64717439112054, + 106.74946925270864, + 106.74222649575631 + ], + [ + 106.59276942871568, + 107.03915029820716, + 107.12172718231646 + ], + [ + 109.92123791555389, + 109.93824920257076, + 109.90475766902303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06159594570780158, + "scoreError" : 8.981845003630485E-4, + "scoreConfidence" : [ + 0.060697761207438534, + 0.062494130208164626 + ], + "scorePercentiles" : { + "0.0" : 0.061129065987737714, + "50.0" : 0.06128236699738327, + "90.0" : 0.062467338455580126, + "95.0" : 0.062467338455580126, + "99.0" : 0.062467338455580126, + "99.9" : 0.062467338455580126, + "99.99" : 0.062467338455580126, + "99.999" : 0.062467338455580126, + "99.9999" : 0.062467338455580126, + "100.0" : 0.062467338455580126 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06209102383642957, + 0.06232024442865689, + 0.062467338455580126 + ], + [ + 0.06126727419097916, + 0.06119005713219277, + 0.061129065987737714 + ], + [ + 0.061336540454007375, + 0.06128236699738327, + 0.0612795998872473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.696119107404097E-4, + "scoreError" : 9.97721816459628E-6, + "scoreConfidence" : [ + 3.596346925758134E-4, + 3.79589128905006E-4 + ], + "scorePercentiles" : { + "0.0" : 3.626888560288343E-4, + "50.0" : 3.686331515365253E-4, + "90.0" : 3.773193622138792E-4, + "95.0" : 3.773193622138792E-4, + "99.0" : 3.773193622138792E-4, + "99.9" : 3.773193622138792E-4, + "99.99" : 3.773193622138792E-4, + "99.999" : 3.773193622138792E-4, + "99.9999" : 3.773193622138792E-4, + "100.0" : 3.773193622138792E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7698920463475277E-4, + 3.773193622138792E-4, + 3.762850259338338E-4 + ], + [ + 3.626888560288343E-4, + 3.637296742969206E-4, + 3.63402454815387E-4 + ], + [ + 3.6888732463155117E-4, + 3.686331515365253E-4, + 3.685721425720028E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01429124971939135, + "scoreError" : 4.7653081770894496E-4, + "scoreConfidence" : [ + 0.013814718901682404, + 0.014767780537100294 + ], + "scorePercentiles" : { + "0.0" : 0.014011771877022926, + "50.0" : 0.014203055541826094, + "90.0" : 0.014662239724822296, + "95.0" : 0.014662239724822296, + "99.0" : 0.014662239724822296, + "99.9" : 0.014662239724822296, + "99.99" : 0.014662239724822296, + "99.999" : 0.014662239724822296, + "99.9999" : 0.014662239724822296, + "100.0" : 0.014662239724822296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0142007654630245, + 0.014205766461443175, + 0.014203055541826094 + ], + [ + 0.014025981748205747, + 0.014011771877022926, + 0.014013038340596667 + ], + [ + 0.01464161089498721, + 0.01465701742259353, + 0.014662239724822296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9781382338333438, + "scoreError" : 0.01588711632877792, + "scoreConfidence" : [ + 0.9622511175045658, + 0.9940253501621217 + ], + "scorePercentiles" : { + "0.0" : 0.9687070489151491, + "50.0" : 0.9749398667381556, + "90.0" : 0.9923944358440012, + "95.0" : 0.9923944358440012, + "99.0" : 0.9923944358440012, + "99.9" : 0.9923944358440012, + "99.99" : 0.9923944358440012, + "99.999" : 0.9923944358440012, + "99.9999" : 0.9923944358440012, + "100.0" : 0.9923944358440012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9905149994057052, + 0.9877674571315685, + 0.9923944358440012 + ], + [ + 0.9687070489151491, + 0.9702613015426409, + 0.9690745838178294 + ], + [ + 0.9750571266575663, + 0.9749398667381556, + 0.9745272844474762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012951543349691617, + "scoreError" : 7.17908173353132E-5, + "scoreConfidence" : [ + 0.012879752532356304, + 0.01302333416702693 + ], + "scorePercentiles" : { + "0.0" : 0.012927962256345552, + "50.0" : 0.012945963688038627, + "90.0" : 0.012992789849235263, + "95.0" : 0.012992789849235263, + "99.0" : 0.012992789849235263, + "99.9" : 0.012992789849235263, + "99.99" : 0.012992789849235263, + "99.999" : 0.012992789849235263, + "99.9999" : 0.012992789849235263, + "100.0" : 0.012992789849235263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01293589796652265, + 0.012929136678630163, + 0.012927962256345552 + ], + [ + 0.012992789849235263, + 0.012956029409554606, + 0.012967443937861459 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6448004708793054, + "scoreError" : 0.23658004422340556, + "scoreConfidence" : [ + 3.4082204266559, + 3.8813805151027108 + ], + "scorePercentiles" : { + "0.0" : 3.5409849886765747, + "50.0" : 3.650745095226265, + "90.0" : 3.722874720982143, + "95.0" : 3.722874720982143, + "99.0" : 3.722874720982143, + "99.9" : 3.722874720982143, + "99.99" : 3.722874720982143, + "99.999" : 3.722874720982143, + "99.9999" : 3.722874720982143, + "100.0" : 3.722874720982143 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7169321567607727, + 3.722874720982143, + 3.7216814717261903 + ], + [ + 3.5409849886765747, + 3.5817714534383955, + 3.5845580336917564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.792517699935429, + "scoreError" : 0.02652058118597728, + "scoreConfidence" : [ + 2.7659971187494516, + 2.819038281121406 + ], + "scorePercentiles" : { + "0.0" : 2.7707105880886425, + "50.0" : 2.791919388051368, + "90.0" : 2.811218851602024, + "95.0" : 2.811218851602024, + "99.0" : 2.811218851602024, + "99.9" : 2.811218851602024, + "99.99" : 2.811218851602024, + "99.999" : 2.811218851602024, + "99.9999" : 2.811218851602024, + "100.0" : 2.811218851602024 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8110501843732436, + 2.811218851602024, + 2.8094077328651688 + ], + [ + 2.771137926018288, + 2.7707105880886425, + 2.7836048469245758 + ], + [ + 2.791919388051368, + 2.792374098548297, + 2.791235682947251 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1742432157856465, + "scoreError" : 0.004875078290119533, + "scoreConfidence" : [ + 0.16936813749552695, + 0.17911829407576604 + ], + "scorePercentiles" : { + "0.0" : 0.17208208915388984, + "50.0" : 0.17246391856514615, + "90.0" : 0.17818732172766474, + "95.0" : 0.17818732172766474, + "99.0" : 0.17818732172766474, + "99.9" : 0.17818732172766474, + "99.99" : 0.17818732172766474, + "99.999" : 0.17818732172766474, + "99.9999" : 0.17818732172766474, + "100.0" : 0.17818732172766474 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17262994255036337, + 0.1722843506761995, + 0.17215549340655556 + ], + [ + 0.1722585692803252, + 0.17208208915388984, + 0.17246391856514615 + ], + [ + 0.17818732172766474, + 0.17799467089689053, + 0.17813258581378363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3333449063182734, + "scoreError" : 0.005905235020739848, + "scoreConfidence" : [ + 0.32743967129753354, + 0.33925014133901327 + ], + "scorePercentiles" : { + "0.0" : 0.329350732446318, + "50.0" : 0.33232254492888474, + "90.0" : 0.33807079141311697, + "95.0" : 0.33807079141311697, + "99.0" : 0.33807079141311697, + "99.9" : 0.33807079141311697, + "99.99" : 0.33807079141311697, + "99.999" : 0.33807079141311697, + "99.9999" : 0.33807079141311697, + "100.0" : 0.33807079141311697 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3301769634508716, + 0.329350732446318, + 0.32948116519504483 + ], + [ + 0.33404202852657244, + 0.33232254492888474, + 0.33195924776763486 + ], + [ + 0.33807079141311697, + 0.33732083306348243, + 0.3373798500725347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16205925527522547, + "scoreError" : 0.005801548356563951, + "scoreConfidence" : [ + 0.1562577069186615, + 0.16786080363178943 + ], + "scorePercentiles" : { + "0.0" : 0.15775786740810854, + "50.0" : 0.162711726244712, + "90.0" : 0.16611034483904188, + "95.0" : 0.16611034483904188, + "99.0" : 0.16611034483904188, + "99.9" : 0.16611034483904188, + "99.99" : 0.16611034483904188, + "99.999" : 0.16611034483904188, + "99.9999" : 0.16611034483904188, + "100.0" : 0.16611034483904188 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15784430243863942, + 0.15775786740810854, + 0.1578714414309169 + ], + [ + 0.16611034483904188, + 0.1653657661931771, + 0.16567923764475886 + ], + [ + 0.16281569179922176, + 0.162711726244712, + 0.1623769194784529 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38844540306756375, + "scoreError" : 0.007554763837641979, + "scoreConfidence" : [ + 0.3808906392299218, + 0.39600016690520573 + ], + "scorePercentiles" : { + "0.0" : 0.38233104985471783, + "50.0" : 0.38763725885727573, + "90.0" : 0.3965965093793377, + "95.0" : 0.3965965093793377, + "99.0" : 0.3965965093793377, + "99.9" : 0.3965965093793377, + "99.99" : 0.3965965093793377, + "99.999" : 0.3965965093793377, + "99.9999" : 0.3965965093793377, + "100.0" : 0.3965965093793377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3913939590215264, + 0.3826024790343561, + 0.38233104985471783 + ], + [ + 0.39190607030607044, + 0.38736799585528353, + 0.38763725885727573 + ], + [ + 0.3965965093793377, + 0.38878835813700335, + 0.38738494716250244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15717731845538507, + "scoreError" : 0.0025445160448387513, + "scoreConfidence" : [ + 0.15463280241054633, + 0.1597218345002238 + ], + "scorePercentiles" : { + "0.0" : 0.15498779949474598, + "50.0" : 0.1574507210334892, + "90.0" : 0.15957643376896932, + "95.0" : 0.15957643376896932, + "99.0" : 0.15957643376896932, + "99.9" : 0.15957643376896932, + "99.99" : 0.15957643376896932, + "99.999" : 0.15957643376896932, + "99.9999" : 0.15957643376896932, + "100.0" : 0.15957643376896932 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15595670473472442, + 0.1553044715721141, + 0.15498779949474598 + ], + [ + 0.15957643376896932, + 0.15827448316794074, + 0.15837715270343036 + ], + [ + 0.15745232445326154, + 0.1574507210334892, + 0.15721577516978996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04712556397907962, + "scoreError" : 0.0015890684722958284, + "scoreConfidence" : [ + 0.04553649550678379, + 0.048714632451375445 + ], + "scorePercentiles" : { + "0.0" : 0.045865031742610134, + "50.0" : 0.047629415089756474, + "90.0" : 0.048132523928707226, + "95.0" : 0.048132523928707226, + "99.0" : 0.048132523928707226, + "99.9" : 0.048132523928707226, + "99.99" : 0.048132523928707226, + "99.999" : 0.048132523928707226, + "99.9999" : 0.048132523928707226, + "100.0" : 0.048132523928707226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047704076315776923, + 0.04758969826585194, + 0.047651035980787376 + ], + [ + 0.045865031742610134, + 0.04587505893929455, + 0.04590735107926219 + ], + [ + 0.048132523928707226, + 0.04777588446966982, + 0.047629415089756474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9287425.275754306, + "scoreError" : 673064.5173172944, + "scoreConfidence" : [ + 8614360.758437011, + 9960489.793071602 + ], + "scorePercentiles" : { + "0.0" : 8931976.855357142, + "50.0" : 9097843.042727273, + "90.0" : 9823178.722276742, + "95.0" : 9823178.722276742, + "99.0" : 9823178.722276742, + "99.9" : 9823178.722276742, + "99.99" : 9823178.722276742, + "99.999" : 9823178.722276742, + "99.9999" : 9823178.722276742, + "100.0" : 9823178.722276742 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9798666.694417238, + 9815992.58390579, + 9823178.722276742 + ], + [ + 9135345.167123288, + 9097843.042727273, + 9086959.946412353 + ], + [ + 8957876.223813787, + 8938988.245755138, + 8931976.855357142 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..0fe671611f --- /dev/null +++ b/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4069670399174807, + "scoreError" : 0.01377711284446077, + "scoreConfidence" : [ + 3.39318992707302, + 3.4207441527619413 + ], + "scorePercentiles" : { + "0.0" : 3.4045192638077895, + "50.0" : 3.4072206524360227, + "90.0" : 3.408907590990087, + "95.0" : 3.408907590990087, + "99.0" : 3.408907590990087, + "99.9" : 3.408907590990087, + "99.99" : 3.408907590990087, + "99.999" : 3.408907590990087, + "99.9999" : 3.408907590990087, + "100.0" : 3.408907590990087 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4045192638077895, + 3.4085900660281925 + ], + [ + 3.405851238843853, + 3.408907590990087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.719648412053527, + "scoreError" : 0.02809970741527712, + "scoreConfidence" : [ + 1.6915487046382498, + 1.747748119468804 + ], + "scorePercentiles" : { + "0.0" : 1.7142389493573933, + "50.0" : 1.7197343077505653, + "90.0" : 1.724886083355584, + "95.0" : 1.724886083355584, + "99.0" : 1.724886083355584, + "99.9" : 1.724886083355584, + "99.99" : 1.724886083355584, + "99.999" : 1.724886083355584, + "99.9999" : 1.724886083355584, + "100.0" : 1.724886083355584 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7198267502215996, + 1.724886083355584 + ], + [ + 1.7142389493573933, + 1.719641865279531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662654811505468, + "scoreError" : 0.00672456953410522, + "scoreConfidence" : [ + 0.8595409116164415, + 0.8729900506846521 + ], + "scorePercentiles" : { + "0.0" : 0.8653473559404564, + "50.0" : 0.8660314345774419, + "90.0" : 0.8676516995068471, + "95.0" : 0.8676516995068471, + "99.0" : 0.8676516995068471, + "99.9" : 0.8676516995068471, + "99.99" : 0.8676516995068471, + "99.999" : 0.8676516995068471, + "99.9999" : 0.8676516995068471, + "100.0" : 0.8676516995068471 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653473559404564, + 0.8664642452472594 + ], + [ + 0.8655986239076244, + 0.8676516995068471 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.881613268860953, + "scoreError" : 0.16972371039592618, + "scoreConfidence" : [ + 15.711889558465026, + 16.051336979256877 + ], + "scorePercentiles" : { + "0.0" : 15.742701283030245, + "50.0" : 15.901656590162244, + "90.0" : 15.99973571476549, + "95.0" : 15.99973571476549, + "99.0" : 15.99973571476549, + "99.9" : 15.99973571476549, + "99.99" : 15.99973571476549, + "99.999" : 15.99973571476549, + "99.9999" : 15.99973571476549, + "100.0" : 15.99973571476549 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.935344863973986, + 15.972098879330911, + 15.901656590162244 + ], + [ + 15.757391679403302, + 15.871936389357284, + 15.773600580677298 + ], + [ + 15.742701283030245, + 15.980053439047829, + 15.99973571476549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2573.939325064266, + "scoreError" : 66.9181072449432, + "scoreConfidence" : [ + 2507.021217819323, + 2640.8574323092093 + ], + "scorePercentiles" : { + "0.0" : 2515.2229208854337, + "50.0" : 2569.4866319365015, + "90.0" : 2639.1359506980743, + "95.0" : 2639.1359506980743, + "99.0" : 2639.1359506980743, + "99.9" : 2639.1359506980743, + "99.99" : 2639.1359506980743, + "99.999" : 2639.1359506980743, + "99.9999" : 2639.1359506980743, + "100.0" : 2639.1359506980743 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2560.1238720819943, + 2515.2229208854337, + 2554.682790491716 + ], + [ + 2569.4866319365015, + 2607.02742513819, + 2586.839165945245 + ], + [ + 2527.5210870802625, + 2605.414081320981, + 2639.1359506980743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68846.59384431818, + "scoreError" : 1148.764589611738, + "scoreConfidence" : [ + 67697.82925470645, + 69995.35843392991 + ], + "scorePercentiles" : { + "0.0" : 68007.01410414431, + "50.0" : 68771.41539379892, + "90.0" : 69848.51628355683, + "95.0" : 69848.51628355683, + "99.0" : 69848.51628355683, + "99.9" : 69848.51628355683, + "99.99" : 69848.51628355683, + "99.999" : 69848.51628355683, + "99.9999" : 69848.51628355683, + "100.0" : 69848.51628355683 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69523.41353028912, + 69848.51628355683, + 69556.08312562345 + ], + [ + 68007.01410414431, + 68771.41539379892, + 69007.79544421007 + ], + [ + 68034.56775354304, + 68574.90101325582, + 68295.63795044218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.9326843032323, + "scoreError" : 5.632654178479563, + "scoreConfidence" : [ + 337.3000301247527, + 348.5653384817119 + ], + "scorePercentiles" : { + "0.0" : 338.22134638914224, + "50.0" : 342.65657276820275, + "90.0" : 348.7118127353454, + "95.0" : 348.7118127353454, + "99.0" : 348.7118127353454, + "99.9" : 348.7118127353454, + "99.99" : 348.7118127353454, + "99.999" : 348.7118127353454, + "99.9999" : 348.7118127353454, + "100.0" : 348.7118127353454 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.2396737614174, + 344.4937949433161, + 348.7118127353454 + ], + [ + 338.22134638914224, + 339.50568888443763, + 344.2246711810125 + ], + [ + 342.65657276820275, + 340.39185850752824, + 341.9487395586887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.41664466797751, + "scoreError" : 3.4239410559884464, + "scoreConfidence" : [ + 100.99270361198906, + 107.84058572396596 + ], + "scorePercentiles" : { + "0.0" : 101.34074595436566, + "50.0" : 105.26679530526971, + "90.0" : 106.52285125107282, + "95.0" : 106.52285125107282, + "99.0" : 106.52285125107282, + "99.9" : 106.52285125107282, + "99.99" : 106.52285125107282, + "99.999" : 106.52285125107282, + "99.9999" : 106.52285125107282, + "100.0" : 106.52285125107282 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.03512173310942, + 101.34074595436566, + 102.14607145041818 + ], + [ + 105.99328845197857, + 106.09573198089387, + 104.36496507781024 + ], + [ + 105.26679530526971, + 105.98423080687914, + 106.52285125107282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06291601396860064, + "scoreError" : 0.0010268130772880873, + "scoreConfidence" : [ + 0.06188920089131255, + 0.06394282704588873 + ], + "scorePercentiles" : { + "0.0" : 0.06190691776395209, + "50.0" : 0.06296611601329824, + "90.0" : 0.0638439230946027, + "95.0" : 0.0638439230946027, + "99.0" : 0.0638439230946027, + "99.9" : 0.0638439230946027, + "99.99" : 0.0638439230946027, + "99.999" : 0.0638439230946027, + "99.9999" : 0.0638439230946027, + "100.0" : 0.0638439230946027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06264503327653603, + 0.06243686636905691, + 0.06332339414394447 + ], + [ + 0.06244408786981879, + 0.06190691776395209, + 0.0638439230946027 + ], + [ + 0.06317183357022381, + 0.06296611601329824, + 0.06350595361597276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.772918445712037E-4, + "scoreError" : 1.3750074525357626E-5, + "scoreConfidence" : [ + 3.635417700458461E-4, + 3.910419190965613E-4 + ], + "scorePercentiles" : { + "0.0" : 3.67455808549216E-4, + "50.0" : 3.758903578714715E-4, + "90.0" : 3.898184364874329E-4, + "95.0" : 3.898184364874329E-4, + "99.0" : 3.898184364874329E-4, + "99.9" : 3.898184364874329E-4, + "99.99" : 3.898184364874329E-4, + "99.999" : 3.898184364874329E-4, + "99.9999" : 3.898184364874329E-4, + "100.0" : 3.898184364874329E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.822310819920716E-4, + 3.8398533949458825E-4, + 3.898184364874329E-4 + ], + [ + 3.7456247794088814E-4, + 3.758903578714715E-4, + 3.844980090532881E-4 + ], + [ + 3.684198426518969E-4, + 3.6876524709997987E-4, + 3.67455808549216E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014692487168159126, + "scoreError" : 1.0890921120123715E-4, + "scoreConfidence" : [ + 0.014583577956957888, + 0.014801396379360364 + ], + "scorePercentiles" : { + "0.0" : 0.014623069662020972, + "50.0" : 0.014686299765904265, + "90.0" : 0.01481580967669291, + "95.0" : 0.01481580967669291, + "99.0" : 0.01481580967669291, + "99.9" : 0.01481580967669291, + "99.99" : 0.01481580967669291, + "99.999" : 0.01481580967669291, + "99.9999" : 0.01481580967669291, + "100.0" : 0.01481580967669291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01481580967669291, + 0.014761402142737998, + 0.01471955471785874 + ], + [ + 0.014686299765904265, + 0.014623069662020972, + 0.01464070584084271 + ], + [ + 0.014698066747505035, + 0.014626562814467248, + 0.014660913145402247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.991542696406702, + "scoreError" : 0.023328699477302327, + "scoreConfidence" : [ + 0.9682139969293997, + 1.0148713958840043 + ], + "scorePercentiles" : { + "0.0" : 0.9696445302501454, + "50.0" : 0.9992563994804157, + "90.0" : 1.0060960282696176, + "95.0" : 1.0060960282696176, + "99.0" : 1.0060960282696176, + "99.9" : 1.0060960282696176, + "99.99" : 1.0060960282696176, + "99.999" : 1.0060960282696176, + "99.9999" : 1.0060960282696176, + "100.0" : 1.0060960282696176 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9999140340965903, + 0.9992563994804157, + 0.9996002698650674 + ], + [ + 1.001559894241362, + 1.0060960282696176, + 0.9970750286141575 + ], + [ + 0.9696445302501454, + 0.9763279108659573, + 0.9744101719770047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013056361858015402, + "scoreError" : 9.322779867712266E-4, + "scoreConfidence" : [ + 0.012124083871244177, + 0.013988639844786628 + ], + "scorePercentiles" : { + "0.0" : 0.01265293295628519, + "50.0" : 0.013073918976377876, + "90.0" : 0.013424728910260541, + "95.0" : 0.013424728910260541, + "99.0" : 0.013424728910260541, + "99.9" : 0.013424728910260541, + "99.99" : 0.013424728910260541, + "99.999" : 0.013424728910260541, + "99.9999" : 0.013424728910260541, + "100.0" : 0.013424728910260541 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01265293295628519, + 0.012762067769615975, + 0.01287342819259179 + ], + [ + 0.013274409760163962, + 0.013424728910260541, + 0.013350603559174955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7533453814696007, + "scoreError" : 0.07221931908733174, + "scoreConfidence" : [ + 3.681126062382269, + 3.8255647005569324 + ], + "scorePercentiles" : { + "0.0" : 3.715878045319465, + "50.0" : 3.7647120831820504, + "90.0" : 3.7759736120754717, + "95.0" : 3.7759736120754717, + "99.0" : 3.7759736120754717, + "99.9" : 3.7759736120754717, + "99.99" : 3.7759736120754717, + "99.999" : 3.7759736120754717, + "99.9999" : 3.7759736120754717, + "100.0" : 3.7759736120754717 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7583392802404205, + 3.715878045319465, + 3.726707458271237 + ], + [ + 3.7710848861236803, + 3.7720890067873305, + 3.7759736120754717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.889554648811101, + "scoreError" : 0.10180974707315243, + "scoreConfidence" : [ + 2.7877449017379483, + 2.9913643958842533 + ], + "scorePercentiles" : { + "0.0" : 2.8047336149747615, + "50.0" : 2.9016337911227152, + "90.0" : 2.970081754083754, + "95.0" : 2.970081754083754, + "99.0" : 2.970081754083754, + "99.9" : 2.970081754083754, + "99.99" : 2.970081754083754, + "99.999" : 2.970081754083754, + "99.9999" : 2.970081754083754, + "100.0" : 2.970081754083754 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.970081754083754, + 2.9444875981748604, + 2.90051821287703 + ], + [ + 2.8047336149747615, + 2.8152427427526034, + 2.822288823927765 + ], + [ + 2.9185109804493727, + 2.9284943209370424, + 2.9016337911227152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1805457075975223, + "scoreError" : 0.0032906053591940008, + "scoreConfidence" : [ + 0.1772551022383283, + 0.18383631295671632 + ], + "scorePercentiles" : { + "0.0" : 0.1789229324936036, + "50.0" : 0.1797346438469419, + "90.0" : 0.18514838317410945, + "95.0" : 0.18514838317410945, + "99.0" : 0.18514838317410945, + "99.9" : 0.18514838317410945, + "99.99" : 0.18514838317410945, + "99.999" : 0.18514838317410945, + "99.9999" : 0.18514838317410945, + "100.0" : 0.18514838317410945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18514838317410945, + 0.18192817100858683, + 0.18085476485694651 + ], + [ + 0.1797346438469419, + 0.17923391680108972, + 0.18011414041280935 + ], + [ + 0.1789229324936036, + 0.17933638023420548, + 0.1796380355494081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33802979936950583, + "scoreError" : 0.007790846575675005, + "scoreConfidence" : [ + 0.3302389527938308, + 0.34582064594518086 + ], + "scorePercentiles" : { + "0.0" : 0.33224624904481875, + "50.0" : 0.3363953684405275, + "90.0" : 0.3439181182681065, + "95.0" : 0.3439181182681065, + "99.0" : 0.3439181182681065, + "99.9" : 0.3439181182681065, + "99.99" : 0.3439181182681065, + "99.999" : 0.3439181182681065, + "99.9999" : 0.3439181182681065, + "100.0" : 0.3439181182681065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3363953684405275, + 0.3355822697651007, + 0.33907762964093174 + ], + [ + 0.3438371653142621, + 0.3439181182681065, + 0.34326591658943467 + ], + [ + 0.33389524587646074, + 0.3340502313859104, + 0.33224624904481875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16610825006196098, + "scoreError" : 0.005481242770670671, + "scoreConfidence" : [ + 0.1606270072912903, + 0.17158949283263164 + ], + "scorePercentiles" : { + "0.0" : 0.16116178712671833, + "50.0" : 0.16686997396876252, + "90.0" : 0.16965193444847826, + "95.0" : 0.16965193444847826, + "99.0" : 0.16965193444847826, + "99.9" : 0.16965193444847826, + "99.99" : 0.16965193444847826, + "99.999" : 0.16965193444847826, + "99.9999" : 0.16965193444847826, + "100.0" : 0.16965193444847826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16686997396876252, + 0.1677147124744239, + 0.1665400422502373 + ], + [ + 0.16275387152529133, + 0.16116178712671833, + 0.16213362620989316 + ], + [ + 0.16965193444847826, + 0.1692971778936498, + 0.16885112466019417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3900476853359935, + "scoreError" : 0.013179482989262305, + "scoreConfidence" : [ + 0.3768682023467312, + 0.4032271683252558 + ], + "scorePercentiles" : { + "0.0" : 0.378498379168086, + "50.0" : 0.39198960250078396, + "90.0" : 0.401988626281304, + "95.0" : 0.401988626281304, + "99.0" : 0.401988626281304, + "99.9" : 0.401988626281304, + "99.99" : 0.401988626281304, + "99.999" : 0.401988626281304, + "99.9999" : 0.401988626281304, + "100.0" : 0.401988626281304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39413079210184054, + 0.378498379168086, + 0.37850229889103365 + ], + [ + 0.401988626281304, + 0.39198960250078396, + 0.3924206083032491 + ], + [ + 0.39697791433448454, + 0.38790818863460047, + 0.38801275780855937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1558497393759247, + "scoreError" : 0.005886044703965503, + "scoreConfidence" : [ + 0.1499636946719592, + 0.1617357840798902 + ], + "scorePercentiles" : { + "0.0" : 0.1525339157870653, + "50.0" : 0.15429124798654612, + "90.0" : 0.16052009594054478, + "95.0" : 0.16052009594054478, + "99.0" : 0.16052009594054478, + "99.9" : 0.16052009594054478, + "99.99" : 0.16052009594054478, + "99.999" : 0.16052009594054478, + "99.9999" : 0.16052009594054478, + "100.0" : 0.16052009594054478 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15263621707343134, + 0.15287506503195034, + 0.1525339157870653 + ], + [ + 0.16052009594054478, + 0.1603939217617245, + 0.16025259234331682 + ], + [ + 0.15504192820155038, + 0.15429124798654612, + 0.1541026702571926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046866688633485816, + "scoreError" : 4.7205703256350144E-4, + "scoreConfidence" : [ + 0.04639463160092232, + 0.047338745666049314 + ], + "scorePercentiles" : { + "0.0" : 0.0465004971821031, + "50.0" : 0.04677862280611481, + "90.0" : 0.047195328475420975, + "95.0" : 0.047195328475420975, + "99.0" : 0.047195328475420975, + "99.9" : 0.047195328475420975, + "99.99" : 0.047195328475420975, + "99.999" : 0.047195328475420975, + "99.9999" : 0.047195328475420975, + "100.0" : 0.047195328475420975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04677862280611481, + 0.0465004971821031, + 0.04658195166248987 + ], + [ + 0.047106999882234345, + 0.04674651273349414, + 0.046599830365755344 + ], + [ + 0.04717519188221475, + 0.04711526271154499, + 0.047195328475420975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9274065.194162289, + "scoreError" : 255674.20191399023, + "scoreConfidence" : [ + 9018390.992248299, + 9529739.396076279 + ], + "scorePercentiles" : { + "0.0" : 9054173.222624434, + "50.0" : 9343782.669467786, + "90.0" : 9467276.662251655, + "95.0" : 9467276.662251655, + "99.0" : 9467276.662251655, + "99.9" : 9467276.662251655, + "99.99" : 9467276.662251655, + "99.999" : 9467276.662251655, + "99.9999" : 9467276.662251655, + "100.0" : 9467276.662251655 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9370335.287453184, + 9343782.669467786, + 9419851.420507995 + ], + [ + 9199186.877757354, + 9373907.444236176, + 9467276.662251655 + ], + [ + 9054173.222624434, + 9103496.834394904, + 9134576.328767123 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..4f6416e5a3 --- /dev/null +++ b/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4207323250526915, + "scoreError" : 0.0319456484452798, + "scoreConfidence" : [ + 3.388786676607412, + 3.452677973497971 + ], + "scorePercentiles" : { + "0.0" : 3.4148720216622768, + "50.0" : 3.420843722069556, + "90.0" : 3.4263698344093774, + "95.0" : 3.4263698344093774, + "99.0" : 3.4263698344093774, + "99.9" : 3.4263698344093774, + "99.99" : 3.4263698344093774, + "99.999" : 3.4263698344093774, + "99.9999" : 3.4263698344093774, + "100.0" : 3.4263698344093774 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4148720216622768, + 3.4227369708906776 + ], + [ + 3.4189504732484335, + 3.4263698344093774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7277102944001554, + "scoreError" : 0.0031271802076314223, + "scoreConfidence" : [ + 1.724583114192524, + 1.7308374746077868 + ], + "scorePercentiles" : { + "0.0" : 1.7273150184436197, + "50.0" : 1.7276098423405877, + "90.0" : 1.7283064744758272, + "95.0" : 1.7283064744758272, + "99.0" : 1.7283064744758272, + "99.9" : 1.7283064744758272, + "99.99" : 1.7283064744758272, + "99.999" : 1.7283064744758272, + "99.9999" : 1.7283064744758272, + "100.0" : 1.7283064744758272 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7273150184436197, + 1.7279020093223763 + ], + [ + 1.7273176753587989, + 1.7283064744758272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682495052702349, + "scoreError" : 0.003949470062662093, + "scoreConfidence" : [ + 0.8643000352075728, + 0.872198975332897 + ], + "scorePercentiles" : { + "0.0" : 0.8677494428788252, + "50.0" : 0.8680539988529801, + "90.0" : 0.8691405804961545, + "95.0" : 0.8691405804961545, + "99.0" : 0.8691405804961545, + "99.9" : 0.8691405804961545, + "99.99" : 0.8691405804961545, + "99.999" : 0.8691405804961545, + "99.9999" : 0.8691405804961545, + "100.0" : 0.8691405804961545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8680616748545228, + 0.8677494428788252 + ], + [ + 0.8680463228514372, + 0.8691405804961545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.129063634777115, + "scoreError" : 0.08527819871813747, + "scoreConfidence" : [ + 16.04378543605898, + 16.21434183349525 + ], + "scorePercentiles" : { + "0.0" : 16.059264510157075, + "50.0" : 16.108068079257407, + "90.0" : 16.214119925984104, + "95.0" : 16.214119925984104, + "99.0" : 16.214119925984104, + "99.9" : 16.214119925984104, + "99.99" : 16.214119925984104, + "99.999" : 16.214119925984104, + "99.9999" : 16.214119925984104, + "100.0" : 16.214119925984104 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.0925343717999, + 16.09984081671261, + 16.108068079257407 + ], + [ + 16.214119925984104, + 16.159726236461857, + 16.19100512182415 + ], + [ + 16.059264510157075, + 16.097684680162253, + 16.139328970634665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2690.9112918289243, + "scoreError" : 89.11642467727573, + "scoreConfidence" : [ + 2601.7948671516488, + 2780.0277165062 + ], + "scorePercentiles" : { + "0.0" : 2652.044232240892, + "50.0" : 2657.6655237443792, + "90.0" : 2763.516905739167, + "95.0" : 2763.516905739167, + "99.0" : 2763.516905739167, + "99.9" : 2763.516905739167, + "99.99" : 2763.516905739167, + "99.999" : 2763.516905739167, + "99.9999" : 2763.516905739167, + "100.0" : 2763.516905739167 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2763.516905739167, + 2757.9183269925015, + 2763.176354709843 + ], + [ + 2659.1776750958593, + 2652.044232240892, + 2657.6655237443792 + ], + [ + 2653.991151912376, + 2655.9615935642164, + 2654.7498624610816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70813.59294604426, + "scoreError" : 285.425501314716, + "scoreConfidence" : [ + 70528.16744472954, + 71099.01844735898 + ], + "scorePercentiles" : { + "0.0" : 70628.70211461508, + "50.0" : 70783.99135660434, + "90.0" : 71040.45930720455, + "95.0" : 71040.45930720455, + "99.0" : 71040.45930720455, + "99.9" : 71040.45930720455, + "99.99" : 71040.45930720455, + "99.999" : 71040.45930720455, + "99.9999" : 71040.45930720455, + "100.0" : 71040.45930720455 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71040.45930720455, + 71024.63676656474, + 71018.19681898014 + ], + [ + 70800.4921040496, + 70689.3527485353, + 70783.99135660434 + ], + [ + 70670.66800835967, + 70628.70211461508, + 70665.83728948496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.25425258646266, + "scoreError" : 7.344410731177084, + "scoreConfidence" : [ + 345.90984185528555, + 360.59866331763976 + ], + "scorePercentiles" : { + "0.0" : 347.27155054221925, + "50.0" : 355.65845226413325, + "90.0" : 357.51761485639236, + "95.0" : 357.51761485639236, + "99.0" : 357.51761485639236, + "99.9" : 357.51761485639236, + "99.99" : 357.51761485639236, + "99.999" : 357.51761485639236, + "99.9999" : 357.51761485639236, + "100.0" : 357.51761485639236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.7057941305003, + 355.65845226413325, + 356.40599321473053 + ], + [ + 357.51761485639236, + 356.7266455150841, + 354.7055422687994 + ], + [ + 347.27155054221925, + 347.42020970279657, + 347.8764707835086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.2220803435144, + "scoreError" : 1.3778531511347178, + "scoreConfidence" : [ + 106.84422719237969, + 109.59993349464912 + ], + "scorePercentiles" : { + "0.0" : 107.19737504715748, + "50.0" : 108.38482161616515, + "90.0" : 109.49844061242605, + "95.0" : 109.49844061242605, + "99.0" : 109.49844061242605, + "99.9" : 109.49844061242605, + "99.99" : 109.49844061242605, + "99.999" : 109.49844061242605, + "99.9999" : 109.49844061242605, + "100.0" : 109.49844061242605 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.49844061242605, + 108.855934976009, + 108.84497615431408 + ], + [ + 108.27115702933337, + 108.41776316427838, + 108.38482161616515 + ], + [ + 107.32316112420783, + 107.20509336773831, + 107.19737504715748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06187979929930037, + "scoreError" : 4.89919681720745E-4, + "scoreConfidence" : [ + 0.06138987961757962, + 0.062369718981021116 + ], + "scorePercentiles" : { + "0.0" : 0.06156398933727337, + "50.0" : 0.06173390797466479, + "90.0" : 0.062283656367169496, + "95.0" : 0.062283656367169496, + "99.0" : 0.062283656367169496, + "99.9" : 0.062283656367169496, + "99.99" : 0.062283656367169496, + "99.999" : 0.062283656367169496, + "99.9999" : 0.062283656367169496, + "100.0" : 0.062283656367169496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061646123259297615, + 0.06173390797466479, + 0.06196862166148202 + ], + [ + 0.062283656367169496, + 0.06225505770954729, + 0.06216190292903675 + ], + [ + 0.061721765325268484, + 0.06156398933727337, + 0.06158316912996354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.724198382138392E-4, + "scoreError" : 8.699200781534305E-6, + "scoreConfidence" : [ + 3.637206374323049E-4, + 3.8111903899537347E-4 + ], + "scorePercentiles" : { + "0.0" : 3.651132355641374E-4, + "50.0" : 3.7532956662498937E-4, + "90.0" : 3.770072542482455E-4, + "95.0" : 3.770072542482455E-4, + "99.0" : 3.770072542482455E-4, + "99.9" : 3.770072542482455E-4, + "99.99" : 3.770072542482455E-4, + "99.999" : 3.770072542482455E-4, + "99.9999" : 3.770072542482455E-4, + "100.0" : 3.770072542482455E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7532956662498937E-4, + 3.7440243865318883E-4, + 3.754156135124096E-4 + ], + [ + 3.770072542482455E-4, + 3.7648122859236174E-4, + 3.763393834485371E-4 + ], + [ + 3.6621271513166535E-4, + 3.6547710814901834E-4, + 3.651132355641374E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014120962875839724, + "scoreError" : 1.5472298051941275E-4, + "scoreConfidence" : [ + 0.013966239895320311, + 0.014275685856359138 + ], + "scorePercentiles" : { + "0.0" : 0.014002392716320438, + "50.0" : 0.014128934788690208, + "90.0" : 0.0142317715103421, + "95.0" : 0.0142317715103421, + "99.0" : 0.0142317715103421, + "99.9" : 0.0142317715103421, + "99.99" : 0.0142317715103421, + "99.999" : 0.0142317715103421, + "99.9999" : 0.0142317715103421, + "100.0" : 0.0142317715103421 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014128934788690208, + 0.014126580095325006, + 0.014130934258050294 + ], + [ + 0.014205468612696974, + 0.014230774158935892, + 0.0142317715103421 + ], + [ + 0.014018518749561925, + 0.014002392716320438, + 0.014013290992634694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710586987458186, + "scoreError" : 0.010987316611614452, + "scoreConfidence" : [ + 0.9600713821342042, + 0.9820460153574331 + ], + "scorePercentiles" : { + "0.0" : 0.955936307111451, + "50.0" : 0.9733839632080981, + "90.0" : 0.9767457063189765, + "95.0" : 0.9767457063189765, + "99.0" : 0.9767457063189765, + "99.9" : 0.9767457063189765, + "99.99" : 0.9767457063189765, + "99.999" : 0.9767457063189765, + "99.9999" : 0.9767457063189765, + "100.0" : 0.9767457063189765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9752175705509507, + 0.9749185228114642, + 0.973517640221941 + ], + [ + 0.9652071514332593, + 0.9733839632080981, + 0.955936307111451 + ], + [ + 0.9767457063189765, + 0.9722837267159246, + 0.9723177003403014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012983448700691527, + "scoreError" : 2.576521228683663E-4, + "scoreConfidence" : [ + 0.01272579657782316, + 0.013241100823559894 + ], + "scorePercentiles" : { + "0.0" : 0.012864549208333976, + "50.0" : 0.01295442629267363, + "90.0" : 0.013094527081456496, + "95.0" : 0.013094527081456496, + "99.0" : 0.013094527081456496, + "99.9" : 0.013094527081456496, + "99.99" : 0.013094527081456496, + "99.999" : 0.013094527081456496, + "99.9999" : 0.013094527081456496, + "100.0" : 0.013094527081456496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012967554409251349, + 0.013094527081456496, + 0.01309233181204047 + ], + [ + 0.012864549208333976, + 0.012940431516970975, + 0.012941298176095909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.695386946419859, + "scoreError" : 0.017234151890428238, + "scoreConfidence" : [ + 3.6781527945294306, + 3.7126210983102874 + ], + "scorePercentiles" : { + "0.0" : 3.689411109882006, + "50.0" : 3.6941566158227035, + "90.0" : 3.706890833951075, + "95.0" : 3.706890833951075, + "99.0" : 3.706890833951075, + "99.9" : 3.706890833951075, + "99.99" : 3.706890833951075, + "99.999" : 3.706890833951075, + "99.9999" : 3.706890833951075, + "100.0" : 3.706890833951075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6956624397634887, + 3.69178669298893, + 3.6959198100517368 + ], + [ + 3.706890833951075, + 3.689411109882006, + 3.6926507918819187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.836029495688691, + "scoreError" : 0.08247781158293523, + "scoreConfidence" : [ + 2.7535516841057555, + 2.9185073072716263 + ], + "scorePercentiles" : { + "0.0" : 2.780162533500139, + "50.0" : 2.8326620141602947, + "90.0" : 2.896600083405734, + "95.0" : 2.896600083405734, + "99.0" : 2.896600083405734, + "99.9" : 2.896600083405734, + "99.99" : 2.896600083405734, + "99.999" : 2.896600083405734, + "99.9999" : 2.896600083405734, + "100.0" : 2.896600083405734 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.896600083405734, + 2.89330250390512, + 2.8909107427745666 + ], + [ + 2.8418196442171073, + 2.826841927077445, + 2.8326620141602947 + ], + [ + 2.780162533500139, + 2.7807002805115375, + 2.7812657316462737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17517850014596284, + "scoreError" : 0.0037486979732552785, + "scoreConfidence" : [ + 0.17142980217270756, + 0.17892719811921812 + ], + "scorePercentiles" : { + "0.0" : 0.1717836128766276, + "50.0" : 0.17623950894383447, + "90.0" : 0.17721852954102427, + "95.0" : 0.17721852954102427, + "99.0" : 0.17721852954102427, + "99.9" : 0.17721852954102427, + "99.99" : 0.17721852954102427, + "99.999" : 0.17721852954102427, + "99.9999" : 0.17721852954102427, + "100.0" : 0.17721852954102427 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.172831079570004, + 0.17218152398415978, + 0.1717836128766276 + ], + [ + 0.17621121955560254, + 0.17623950894383447, + 0.17624023835959254 + ], + [ + 0.17707964202362192, + 0.17721852954102427, + 0.176821146459199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32290382875128587, + "scoreError" : 0.019311333448506423, + "scoreConfidence" : [ + 0.30359249530277943, + 0.3422151621997923 + ], + "scorePercentiles" : { + "0.0" : 0.31114121480352197, + "50.0" : 0.3198565041100272, + "90.0" : 0.33750574249071885, + "95.0" : 0.33750574249071885, + "99.0" : 0.33750574249071885, + "99.9" : 0.33750574249071885, + "99.99" : 0.33750574249071885, + "99.999" : 0.33750574249071885, + "99.9999" : 0.33750574249071885, + "100.0" : 0.33750574249071885 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373749518588489, + 0.33750574249071885, + 0.3373804223541716 + ], + [ + 0.31175855700346045, + 0.31131111596052674, + 0.31114121480352197 + ], + [ + 0.3197633228240711, + 0.3200426273562262, + 0.3198565041100272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1583957563563813, + "scoreError" : 0.0027862408712994364, + "scoreConfidence" : [ + 0.15560951548508187, + 0.16118199722768076 + ], + "scorePercentiles" : { + "0.0" : 0.1563399570070665, + "50.0" : 0.15848177283676704, + "90.0" : 0.16027697366691776, + "95.0" : 0.16027697366691776, + "99.0" : 0.16027697366691776, + "99.9" : 0.16027697366691776, + "99.99" : 0.16027697366691776, + "99.999" : 0.16027697366691776, + "99.9999" : 0.16027697366691776, + "100.0" : 0.16027697366691776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1565101095703889, + 0.1564862471637587, + 0.1563399570070665 + ], + [ + 0.15829687175103682, + 0.15848177283676704, + 0.15865207415281127 + ], + [ + 0.16027111858131932, + 0.1602466824773656, + 0.16027697366691776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3868561814412517, + "scoreError" : 0.0069254109492785645, + "scoreConfidence" : [ + 0.37993077049197316, + 0.3937815923905303 + ], + "scorePercentiles" : { + "0.0" : 0.38157141117216115, + "50.0" : 0.3869765164460955, + "90.0" : 0.39176893238266863, + "95.0" : 0.39176893238266863, + "99.0" : 0.39176893238266863, + "99.9" : 0.39176893238266863, + "99.99" : 0.39176893238266863, + "99.999" : 0.39176893238266863, + "99.9999" : 0.39176893238266863, + "100.0" : 0.39176893238266863 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3870978555392119, + 0.3869765164460955, + 0.3851402720970537 + ], + [ + 0.3840976532493471, + 0.381694085610687, + 0.38157141117216115 + ], + [ + 0.3917450901363209, + 0.39176893238266863, + 0.3916138163377193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15523830175393216, + "scoreError" : 0.0026270894280356724, + "scoreConfidence" : [ + 0.1526112123258965, + 0.15786539118196782 + ], + "scorePercentiles" : { + "0.0" : 0.15325871712310923, + "50.0" : 0.15492024173134422, + "90.0" : 0.15720893628460486, + "95.0" : 0.15720893628460486, + "99.0" : 0.15720893628460486, + "99.9" : 0.15720893628460486, + "99.99" : 0.15720893628460486, + "99.999" : 0.15720893628460486, + "99.9999" : 0.15720893628460486, + "100.0" : 0.15720893628460486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15564634977431907, + 0.15492024173134422, + 0.15463564016762282 + ], + [ + 0.15720893628460486, + 0.15707466542581597, + 0.1569684785584228 + ], + [ + 0.15395843413800536, + 0.15325871712310923, + 0.15347325258214523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04755786559883292, + "scoreError" : 0.0014208049396587064, + "scoreConfidence" : [ + 0.04613706065917421, + 0.04897867053849163 + ], + "scorePercentiles" : { + "0.0" : 0.04647786951045506, + "50.0" : 0.04765763511935682, + "90.0" : 0.04853239242226439, + "95.0" : 0.04853239242226439, + "99.0" : 0.04853239242226439, + "99.9" : 0.04853239242226439, + "99.99" : 0.04853239242226439, + "99.999" : 0.04853239242226439, + "99.9999" : 0.04853239242226439, + "100.0" : 0.04853239242226439 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04780514980997681, + 0.04758781751300317, + 0.04765763511935682 + ], + [ + 0.048491284037900165, + 0.04853239242226439, + 0.04836042689473073 + ], + [ + 0.046539819069869176, + 0.04656839601193997, + 0.04647786951045506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9210789.606424699, + "scoreError" : 67701.16141275437, + "scoreConfidence" : [ + 9143088.445011944, + 9278490.767837454 + ], + "scorePercentiles" : { + "0.0" : 9137590.056621004, + "50.0" : 9214177.742173113, + "90.0" : 9257430.554116558, + "95.0" : 9257430.554116558, + "99.0" : 9257430.554116558, + "99.9" : 9257430.554116558, + "99.99" : 9257430.554116558, + "99.999" : 9257430.554116558, + "99.9999" : 9257430.554116558, + "100.0" : 9257430.554116558 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9185812.64003673, + 9189725.07805326, + 9137590.056621004 + ], + [ + 9257430.554116558, + 9256689.355226642, + 9251173.079555966 + ], + [ + 9186617.759412305, + 9217890.192626728, + 9214177.742173113 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..98ae378714 --- /dev/null +++ b/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3992092882886666, + "scoreError" : 0.028178246222827573, + "scoreConfidence" : [ + 3.371031042065839, + 3.427387534511494 + ], + "scorePercentiles" : { + "0.0" : 3.395005069255314, + "50.0" : 3.3986561825358588, + "90.0" : 3.4045197188276344, + "95.0" : 3.4045197188276344, + "99.0" : 3.4045197188276344, + "99.9" : 3.4045197188276344, + "99.99" : 3.4045197188276344, + "99.999" : 3.4045197188276344, + "99.9999" : 3.4045197188276344, + "100.0" : 3.4045197188276344 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.395005069255314, + 3.4045197188276344 + ], + [ + 3.396358694557847, + 3.4009536705138705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7185863296289448, + "scoreError" : 0.0226247904680873, + "scoreConfidence" : [ + 1.6959615391608573, + 1.7412111200970322 + ], + "scorePercentiles" : { + "0.0" : 1.713896569825601, + "50.0" : 1.7191667413071396, + "90.0" : 1.7221152660758985, + "95.0" : 1.7221152660758985, + "99.0" : 1.7221152660758985, + "99.9" : 1.7221152660758985, + "99.99" : 1.7221152660758985, + "99.999" : 1.7221152660758985, + "99.9999" : 1.7221152660758985, + "100.0" : 1.7221152660758985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.713896569825601, + 1.718257222681635 + ], + [ + 1.7200762599326442, + 1.7221152660758985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8638131333573812, + "scoreError" : 0.005739607080341613, + "scoreConfidence" : [ + 0.8580735262770396, + 0.8695527404377228 + ], + "scorePercentiles" : { + "0.0" : 0.8629604388633407, + "50.0" : 0.8637508804684315, + "90.0" : 0.8647903336293211, + "95.0" : 0.8647903336293211, + "99.0" : 0.8647903336293211, + "99.9" : 0.8647903336293211, + "99.99" : 0.8647903336293211, + "99.999" : 0.8647903336293211, + "99.9999" : 0.8647903336293211, + "100.0" : 0.8647903336293211 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8629604388633407, + 0.8647903336293211 + ], + [ + 0.8631690751649713, + 0.8643326857718918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.875310471082843, + "scoreError" : 0.26777051507050426, + "scoreConfidence" : [ + 15.607539956012339, + 16.143080986153347 + ], + "scorePercentiles" : { + "0.0" : 15.612288653326042, + "50.0" : 15.832222806276663, + "90.0" : 16.106444002568377, + "95.0" : 16.106444002568377, + "99.0" : 16.106444002568377, + "99.9" : 16.106444002568377, + "99.99" : 16.106444002568377, + "99.999" : 16.106444002568377, + "99.9999" : 16.106444002568377, + "100.0" : 16.106444002568377 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.106444002568377, + 16.047190666002482, + 16.011487463515408 + ], + [ + 15.753348985453242, + 15.78377177928709, + 15.925255493182311 + ], + [ + 15.832222806276663, + 15.805784390133978, + 15.612288653326042 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2667.7601557240364, + "scoreError" : 119.67998425181611, + "scoreConfidence" : [ + 2548.08017147222, + 2787.4401399758526 + ], + "scorePercentiles" : { + "0.0" : 2558.413530316072, + "50.0" : 2697.246014837451, + "90.0" : 2745.2269193723982, + "95.0" : 2745.2269193723982, + "99.0" : 2745.2269193723982, + "99.9" : 2745.2269193723982, + "99.99" : 2745.2269193723982, + "99.999" : 2745.2269193723982, + "99.9999" : 2745.2269193723982, + "100.0" : 2745.2269193723982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2601.2023290761535, + 2568.775645722441, + 2558.413530316072 + ], + [ + 2692.6922111857752, + 2708.3682091572205, + 2745.2269193723982 + ], + [ + 2721.1608852061686, + 2716.755656642648, + 2697.246014837451 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69653.26025364155, + "scoreError" : 837.2247301229313, + "scoreConfidence" : [ + 68816.03552351861, + 70490.48498376449 + ], + "scorePercentiles" : { + "0.0" : 69143.04281828675, + "50.0" : 69490.61975836863, + "90.0" : 70297.39157492763, + "95.0" : 70297.39157492763, + "99.0" : 70297.39157492763, + "99.9" : 70297.39157492763, + "99.99" : 70297.39157492763, + "99.999" : 70297.39157492763, + "99.9999" : 70297.39157492763, + "100.0" : 70297.39157492763 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69673.21206564475, + 69226.62057270289, + 69143.04281828675 + ], + [ + 69360.11899118814, + 69148.32384924784, + 69490.61975836863 + ], + [ + 70265.82211287168, + 70274.19053953572, + 70297.39157492763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 325.76357997471234, + "scoreError" : 15.438554362778062, + "scoreConfidence" : [ + 310.3250256119343, + 341.2021343374904 + ], + "scorePercentiles" : { + "0.0" : 312.51355700005786, + "50.0" : 329.8447893587314, + "90.0" : 335.30161127464805, + "95.0" : 335.30161127464805, + "99.0" : 335.30161127464805, + "99.9" : 335.30161127464805, + "99.99" : 335.30161127464805, + "99.999" : 335.30161127464805, + "99.9999" : 335.30161127464805, + "100.0" : 335.30161127464805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.30161127464805, + 333.0629081494773, + 330.14557873677194 + ], + [ + 329.8447893587314, + 333.10079335684634, + 328.95696746140584 + ], + [ + 313.93428796549847, + 312.51355700005786, + 315.0117264689737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.49485554121512, + "scoreError" : 3.793394744918793, + "scoreConfidence" : [ + 99.70146079629632, + 107.28825028613392 + ], + "scorePercentiles" : { + "0.0" : 100.45672061279393, + "50.0" : 102.92956348814475, + "90.0" : 106.59142705404575, + "95.0" : 106.59142705404575, + "99.0" : 106.59142705404575, + "99.9" : 106.59142705404575, + "99.99" : 106.59142705404575, + "99.999" : 106.59142705404575, + "99.9999" : 106.59142705404575, + "100.0" : 106.59142705404575 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.59142705404575, + 106.51678823289815, + 105.1312372742135 + ], + [ + 102.92956348814475, + 100.45672061279393, + 100.84404127845603 + ], + [ + 102.08705881148529, + 104.08286168477012, + 102.81400143412843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0631853564618406, + "scoreError" : 0.0015354385052261798, + "scoreConfidence" : [ + 0.061649917956614425, + 0.06472079496706679 + ], + "scorePercentiles" : { + "0.0" : 0.0622281343053248, + "50.0" : 0.06272677993903052, + "90.0" : 0.0644954543314501, + "95.0" : 0.0644954543314501, + "99.0" : 0.0644954543314501, + "99.9" : 0.0644954543314501, + "99.99" : 0.0644954543314501, + "99.999" : 0.0644954543314501, + "99.9999" : 0.0644954543314501, + "100.0" : 0.0644954543314501 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06427183367932593, + 0.0644954543314501, + 0.06438153322045247 + ], + [ + 0.06272677993903052, + 0.06272599818724675, + 0.0627533352870303 + ], + [ + 0.06256258656673465, + 0.0622281343053248, + 0.06252255263996999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8448266611457985E-4, + "scoreError" : 4.210014110702952E-6, + "scoreConfidence" : [ + 3.802726520038769E-4, + 3.886926802252828E-4 + ], + "scorePercentiles" : { + "0.0" : 3.813840175864892E-4, + "50.0" : 3.838468919576846E-4, + "90.0" : 3.8902695347126055E-4, + "95.0" : 3.8902695347126055E-4, + "99.0" : 3.8902695347126055E-4, + "99.9" : 3.8902695347126055E-4, + "99.99" : 3.8902695347126055E-4, + "99.999" : 3.8902695347126055E-4, + "99.9999" : 3.8902695347126055E-4, + "100.0" : 3.8902695347126055E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8159715463319407E-4, + 3.830467416295346E-4, + 3.813840175864892E-4 + ], + [ + 3.8554534892830454E-4, + 3.833462317780834E-4, + 3.838468919576846E-4 + ], + [ + 3.866754638332235E-4, + 3.8587519121344437E-4, + 3.8902695347126055E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014356945249008832, + "scoreError" : 4.749203126173207E-4, + "scoreConfidence" : [ + 0.013882024936391511, + 0.014831865561626153 + ], + "scorePercentiles" : { + "0.0" : 0.014186610823678286, + "50.0" : 0.014250738606324111, + "90.0" : 0.015081788841130516, + "95.0" : 0.015081788841130516, + "99.0" : 0.015081788841130516, + "99.9" : 0.015081788841130516, + "99.99" : 0.015081788841130516, + "99.999" : 0.015081788841130516, + "99.9999" : 0.015081788841130516, + "100.0" : 0.015081788841130516 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014211193623522056, + 0.014198740368054954, + 0.014186610823678286 + ], + [ + 0.014194806765726226, + 0.014383023576350585, + 0.014250738606324111 + ], + [ + 0.014355401821679275, + 0.014350202814613489, + 0.015081788841130516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9889173184430794, + "scoreError" : 0.020906436622996124, + "scoreConfidence" : [ + 0.9680108818200833, + 1.0098237550660756 + ], + "scorePercentiles" : { + "0.0" : 0.9751137195787831, + "50.0" : 0.9838115681259223, + "90.0" : 1.0076507319899244, + "95.0" : 1.0076507319899244, + "99.0" : 1.0076507319899244, + "99.9" : 1.0076507319899244, + "99.99" : 1.0076507319899244, + "99.999" : 1.0076507319899244, + "99.9999" : 1.0076507319899244, + "100.0" : 1.0076507319899244 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0076507319899244, + 1.006104635915493, + 1.0008279665732587 + ], + [ + 0.9845124068714314, + 0.9838115681259223, + 0.9837508866810939 + ], + [ + 0.9790087858051885, + 0.9751137195787831, + 0.979475164446621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013070564786537432, + "scoreError" : 3.312438477869377E-4, + "scoreConfidence" : [ + 0.012739320938750494, + 0.01340180863432437 + ], + "scorePercentiles" : { + "0.0" : 0.01294236621136469, + "50.0" : 0.013038706144191437, + "90.0" : 0.0132176846025943, + "95.0" : 0.0132176846025943, + "99.0" : 0.0132176846025943, + "99.9" : 0.0132176846025943, + "99.99" : 0.0132176846025943, + "99.999" : 0.0132176846025943, + "99.9999" : 0.0132176846025943, + "100.0" : 0.0132176846025943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01294236621136469, + 0.013041755751930787, + 0.013035656536452087 + ], + [ + 0.012973304387985968, + 0.013212621228896751, + 0.0132176846025943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9320503683012595, + "scoreError" : 0.13073817145027877, + "scoreConfidence" : [ + 3.8013121968509807, + 4.062788539751538 + ], + "scorePercentiles" : { + "0.0" : 3.886556063714064, + "50.0" : 3.9285158029082803, + "90.0" : 3.9836880589171972, + "95.0" : 3.9836880589171972, + "99.0" : 3.9836880589171972, + "99.9" : 3.9836880589171972, + "99.99" : 3.9836880589171972, + "99.999" : 3.9836880589171972, + "99.9999" : 3.9836880589171972, + "100.0" : 3.9836880589171972 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9627668122028528, + 3.975874643879173, + 3.9836880589171972 + ], + [ + 3.886556063714064, + 3.8942647936137074, + 3.88915183748056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.004364586156701, + "scoreError" : 0.14161123897060376, + "scoreConfidence" : [ + 2.8627533471860973, + 3.145975825127305 + ], + "scorePercentiles" : { + "0.0" : 2.899472187880545, + "50.0" : 2.9752824544913743, + "90.0" : 3.116214405919003, + "95.0" : 3.116214405919003, + "99.0" : 3.116214405919003, + "99.9" : 3.116214405919003, + "99.99" : 3.116214405919003, + "99.999" : 3.116214405919003, + "99.9999" : 3.116214405919003, + "100.0" : 3.116214405919003 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1080275556246115, + 3.116214405919003, + 3.1107170768273718 + ], + [ + 2.94470944581861, + 2.9752824544913743, + 2.982728600954369 + ], + [ + 2.969614950415677, + 2.9325145974787454, + 2.899472187880545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17564792482371683, + "scoreError" : 0.002974252867516921, + "scoreConfidence" : [ + 0.1726736719561999, + 0.17862217769123376 + ], + "scorePercentiles" : { + "0.0" : 0.1731033127055565, + "50.0" : 0.1768566043965761, + "90.0" : 0.17698233668412855, + "95.0" : 0.17698233668412855, + "99.0" : 0.17698233668412855, + "99.9" : 0.17698233668412855, + "99.99" : 0.17698233668412855, + "99.999" : 0.17698233668412855, + "99.9999" : 0.17698233668412855, + "100.0" : 0.17698233668412855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17686704975150774, + 0.1768795816898668, + 0.1769473231708396 + ], + [ + 0.1768566043965761, + 0.1763903096094825, + 0.17698233668412855 + ], + [ + 0.17349474921929217, + 0.17331005618620127, + 0.1731033127055565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3224626777755301, + "scoreError" : 0.016155882614857214, + "scoreConfidence" : [ + 0.3063067951606729, + 0.33861856039038735 + ], + "scorePercentiles" : { + "0.0" : 0.3106331735470444, + "50.0" : 0.32324063284633786, + "90.0" : 0.333969142098584, + "95.0" : 0.333969142098584, + "99.0" : 0.333969142098584, + "99.9" : 0.333969142098584, + "99.99" : 0.333969142098584, + "99.999" : 0.333969142098584, + "99.9999" : 0.333969142098584, + "100.0" : 0.333969142098584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32324063284633786, + 0.3228341037221164, + 0.32352256436220117 + ], + [ + 0.333969142098584, + 0.3330036538909793, + 0.3325125170074813 + ], + [ + 0.31173687711587017, + 0.31071143538915647, + 0.3106331735470444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16336138611669254, + "scoreError" : 0.013309637759159056, + "scoreConfidence" : [ + 0.1500517483575335, + 0.1766710238758516 + ], + "scorePercentiles" : { + "0.0" : 0.15236389503915654, + "50.0" : 0.16749676753651346, + "90.0" : 0.17041830118777798, + "95.0" : 0.17041830118777798, + "99.0" : 0.17041830118777798, + "99.9" : 0.17041830118777798, + "99.99" : 0.17041830118777798, + "99.999" : 0.17041830118777798, + "99.9999" : 0.17041830118777798, + "100.0" : 0.17041830118777798 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16764070001508727, + 0.1672745904688624, + 0.16749676753651346 + ], + [ + 0.15236389503915654, + 0.15341220566081154, + 0.15290987807153014 + ], + [ + 0.17041830118777798, + 0.16932816888482508, + 0.1694079681856683 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3916901877748583, + "scoreError" : 0.013066770761379609, + "scoreConfidence" : [ + 0.3786234170134787, + 0.40475695853623794 + ], + "scorePercentiles" : { + "0.0" : 0.3831963658274897, + "50.0" : 0.3880605029491657, + "90.0" : 0.40703388969840043, + "95.0" : 0.40703388969840043, + "99.0" : 0.40703388969840043, + "99.9" : 0.40703388969840043, + "99.99" : 0.40703388969840043, + "99.999" : 0.40703388969840043, + "99.9999" : 0.40703388969840043, + "100.0" : 0.40703388969840043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40703388969840043, + 0.3974855021264756, + 0.3967198541336084 + ], + [ + 0.3880605029491657, + 0.3875346873086611, + 0.3875294380546406 + ], + [ + 0.39397768474963557, + 0.38367376512564744, + 0.3831963658274897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15989002361063018, + "scoreError" : 0.004543996585626853, + "scoreConfidence" : [ + 0.15534602702500333, + 0.16443402019625702 + ], + "scorePercentiles" : { + "0.0" : 0.15594041546594312, + "50.0" : 0.1613597867688584, + "90.0" : 0.1622719936715023, + "95.0" : 0.1622719936715023, + "99.0" : 0.1622719936715023, + "99.9" : 0.1622719936715023, + "99.99" : 0.1622719936715023, + "99.999" : 0.1622719936715023, + "99.9999" : 0.1622719936715023, + "100.0" : 0.1622719936715023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15676905651356013, + 0.15594041546594312, + 0.15631288311241714 + ], + [ + 0.16217939525153255, + 0.1622719936715023, + 0.16147748038883236 + ], + [ + 0.1618514822211792, + 0.1613597867688584, + 0.1608477191018465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04783453527496373, + "scoreError" : 7.974832162056922E-4, + "scoreConfidence" : [ + 0.047037052058758036, + 0.048632018491169424 + ], + "scorePercentiles" : { + "0.0" : 0.04737623978226162, + "50.0" : 0.04774475477679637, + "90.0" : 0.04894417089131105, + "95.0" : 0.04894417089131105, + "99.0" : 0.04894417089131105, + "99.9" : 0.04894417089131105, + "99.99" : 0.04894417089131105, + "99.999" : 0.04894417089131105, + "99.9999" : 0.04894417089131105, + "100.0" : 0.04894417089131105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04749892322380233, + 0.047416286812295816, + 0.04737623978226162 + ], + [ + 0.04774475477679637, + 0.047800833626508096, + 0.04774200215790931 + ], + [ + 0.04894417089131105, + 0.04804041357891248, + 0.04794719262487654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9631059.90526732, + "scoreError" : 171531.34109600133, + "scoreConfidence" : [ + 9459528.56417132, + 9802591.246363321 + ], + "scorePercentiles" : { + "0.0" : 9512877.128326995, + "50.0" : 9688628.696030978, + "90.0" : 9758324.88195122, + "95.0" : 9758324.88195122, + "99.0" : 9758324.88195122, + "99.9" : 9758324.88195122, + "99.99" : 9758324.88195122, + "99.999" : 9758324.88195122, + "99.9999" : 9758324.88195122, + "100.0" : 9758324.88195122 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9758324.88195122, + 9737305.494644595, + 9534123.904671116 + ], + [ + 9694253.833333334, + 9696302.620155038, + 9688628.696030978 + ], + [ + 9534044.147759771, + 9523678.440532826, + 9512877.128326995 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..7d0bb435fc --- /dev/null +++ b/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4141460140654183, + "scoreError" : 0.02523433949722112, + "scoreConfidence" : [ + 3.388911674568197, + 3.4393803535626395 + ], + "scorePercentiles" : { + "0.0" : 3.4109114729011334, + "50.0" : 3.412942036862178, + "90.0" : 3.419788509636182, + "95.0" : 3.419788509636182, + "99.0" : 3.419788509636182, + "99.9" : 3.419788509636182, + "99.99" : 3.419788509636182, + "99.999" : 3.419788509636182, + "99.9999" : 3.419788509636182, + "100.0" : 3.419788509636182 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4109114729011334, + 3.413465927756727 + ], + [ + 3.412418145967629, + 3.419788509636182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7201150901156992, + "scoreError" : 0.028373580112449958, + "scoreConfidence" : [ + 1.6917415100032491, + 1.7484886702281492 + ], + "scorePercentiles" : { + "0.0" : 1.715451119237048, + "50.0" : 1.7205134919863199, + "90.0" : 1.7239822572531092, + "95.0" : 1.7239822572531092, + "99.0" : 1.7239822572531092, + "99.9" : 1.7239822572531092, + "99.99" : 1.7239822572531092, + "99.999" : 1.7239822572531092, + "99.9999" : 1.7239822572531092, + "100.0" : 1.7239822572531092 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7239822572531092, + 1.7237394376447464 + ], + [ + 1.715451119237048, + 1.7172875463278934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8659551304749118, + "scoreError" : 0.010436027041818195, + "scoreConfidence" : [ + 0.8555191034330936, + 0.87639115751673 + ], + "scorePercentiles" : { + "0.0" : 0.8639684361227421, + "50.0" : 0.8662045209892448, + "90.0" : 0.8674430437984155, + "95.0" : 0.8674430437984155, + "99.0" : 0.8674430437984155, + "99.9" : 0.8674430437984155, + "99.99" : 0.8674430437984155, + "99.999" : 0.8674430437984155, + "99.9999" : 0.8674430437984155, + "100.0" : 0.8674430437984155 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8639684361227421, + 0.8653272198110116 + ], + [ + 0.8674430437984155, + 0.867081822167478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.252654676449723, + "scoreError" : 0.10537930227104682, + "scoreConfidence" : [ + 16.147275374178676, + 16.35803397872077 + ], + "scorePercentiles" : { + "0.0" : 16.168129744860877, + "50.0" : 16.268725836178465, + "90.0" : 16.355642468960376, + "95.0" : 16.355642468960376, + "99.0" : 16.355642468960376, + "99.9" : 16.355642468960376, + "99.99" : 16.355642468960376, + "99.999" : 16.355642468960376, + "99.9999" : 16.355642468960376, + "100.0" : 16.355642468960376 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.355642468960376, + 16.272526956761183, + 16.268725836178465 + ], + [ + 16.168129744860877, + 16.274173548129912, + 16.318351985527347 + ], + [ + 16.17852783509764, + 16.23478021354547, + 16.203033498986223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2711.90349954842, + "scoreError" : 92.62280441102727, + "scoreConfidence" : [ + 2619.2806951373927, + 2804.526303959447 + ], + "scorePercentiles" : { + "0.0" : 2649.300552891204, + "50.0" : 2690.6946489145466, + "90.0" : 2797.8890502273834, + "95.0" : 2797.8890502273834, + "99.0" : 2797.8890502273834, + "99.9" : 2797.8890502273834, + "99.99" : 2797.8890502273834, + "99.999" : 2797.8890502273834, + "99.9999" : 2797.8890502273834, + "100.0" : 2797.8890502273834 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2666.717149029226, + 2649.300552891204, + 2669.5037781743854 + ], + [ + 2680.457249875851, + 2705.622885659174, + 2690.6946489145466 + ], + [ + 2797.8890502273834, + 2766.6792631764147, + 2780.266917987591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69111.95639690965, + "scoreError" : 83.29528789521649, + "scoreConfidence" : [ + 69028.66110901443, + 69195.25168480487 + ], + "scorePercentiles" : { + "0.0" : 69046.25547453541, + "50.0" : 69118.4881065913, + "90.0" : 69182.46390916892, + "95.0" : 69182.46390916892, + "99.0" : 69182.46390916892, + "99.9" : 69182.46390916892, + "99.99" : 69182.46390916892, + "99.999" : 69182.46390916892, + "99.9999" : 69182.46390916892, + "100.0" : 69182.46390916892 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69162.28535818945, + 69182.46390916892, + 69118.4881065913 + ], + [ + 69136.79708672072, + 69054.3599191844, + 69046.25547453541 + ], + [ + 69060.3327196236, + 69101.69400475129, + 69144.93099342177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.3278857421012, + "scoreError" : 11.852637802821008, + "scoreConfidence" : [ + 335.4752479392802, + 359.1805235449222 + ], + "scorePercentiles" : { + "0.0" : 337.69633644382174, + "50.0" : 349.8230392811812, + "90.0" : 354.5053703216764, + "95.0" : 354.5053703216764, + "99.0" : 354.5053703216764, + "99.9" : 354.5053703216764, + "99.99" : 354.5053703216764, + "99.999" : 354.5053703216764, + "99.9999" : 354.5053703216764, + "100.0" : 354.5053703216764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.8230392811812, + 349.75558705623996, + 350.2228570416806 + ], + [ + 353.86196935718107, + 354.5053703216764, + 353.13588747335746 + ], + [ + 338.3428057877555, + 338.60711891601716, + 337.69633644382174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.73978567279248, + "scoreError" : 2.23951667478191, + "scoreConfidence" : [ + 105.50026899801057, + 109.97930234757439 + ], + "scorePercentiles" : { + "0.0" : 105.94123260786559, + "50.0" : 108.09616081351409, + "90.0" : 109.21003352792893, + "95.0" : 109.21003352792893, + "99.0" : 109.21003352792893, + "99.9" : 109.21003352792893, + "99.99" : 109.21003352792893, + "99.999" : 109.21003352792893, + "99.9999" : 109.21003352792893, + "100.0" : 109.21003352792893 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.97381347858634, + 105.94123260786559, + 106.4660416765197 + ], + [ + 109.21003352792893, + 109.12797422747417, + 109.0807392320912 + ], + [ + 107.58179783757122, + 108.09616081351409, + 108.18027765358097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061909221750764645, + "scoreError" : 7.93118736000689E-4, + "scoreConfidence" : [ + 0.06111610301476396, + 0.06270234048676533 + ], + "scorePercentiles" : { + "0.0" : 0.06120587202007528, + "50.0" : 0.06209829328042624, + "90.0" : 0.06241124775010922, + "95.0" : 0.06241124775010922, + "99.0" : 0.06241124775010922, + "99.9" : 0.06241124775010922, + "99.99" : 0.06241124775010922, + "99.999" : 0.06241124775010922, + "99.9999" : 0.06241124775010922, + "100.0" : 0.06241124775010922 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06120587202007528, + 0.06131094404831244, + 0.061437342034772996 + ], + [ + 0.06209829328042624, + 0.06231152692741468, + 0.0619119299166677 + ], + [ + 0.06241124775010922, + 0.06213026141468112, + 0.06236557836442216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7692210394697193E-4, + "scoreError" : 1.9364149312350478E-5, + "scoreConfidence" : [ + 3.5755795463462145E-4, + 3.962862532593224E-4 + ], + "scorePercentiles" : { + "0.0" : 3.610834907005055E-4, + "50.0" : 3.804653194718181E-4, + "90.0" : 3.906616198985073E-4, + "95.0" : 3.906616198985073E-4, + "99.0" : 3.906616198985073E-4, + "99.9" : 3.906616198985073E-4, + "99.99" : 3.906616198985073E-4, + "99.999" : 3.906616198985073E-4, + "99.9999" : 3.906616198985073E-4, + "100.0" : 3.906616198985073E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8721810412907065E-4, + 3.906616198985073E-4, + 3.866140347051792E-4 + ], + [ + 3.6320046181129455E-4, + 3.610834907005055E-4, + 3.628257406006513E-4 + ], + [ + 3.789365386107795E-4, + 3.804653194718181E-4, + 3.8129362559494065E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014347172959238966, + "scoreError" : 5.008339226000911E-4, + "scoreConfidence" : [ + 0.013846339036638875, + 0.014848006881839057 + ], + "scorePercentiles" : { + "0.0" : 0.014093595788880276, + "50.0" : 0.014189940964876059, + "90.0" : 0.01476075187496033, + "95.0" : 0.01476075187496033, + "99.0" : 0.01476075187496033, + "99.9" : 0.01476075187496033, + "99.99" : 0.01476075187496033, + "99.999" : 0.01476075187496033, + "99.9999" : 0.01476075187496033, + "100.0" : 0.01476075187496033 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014122154853159652, + 0.014099223867423879, + 0.014093595788880276 + ], + [ + 0.01418198724770538, + 0.014189940964876059, + 0.014215869308036984 + ], + [ + 0.014730909794904051, + 0.01476075187496033, + 0.014730122933204103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9851786290563604, + "scoreError" : 0.007389816834762871, + "scoreConfidence" : [ + 0.9777888122215975, + 0.9925684458911234 + ], + "scorePercentiles" : { + "0.0" : 0.9780690916381418, + "50.0" : 0.986488261195502, + "90.0" : 0.9905183169572108, + "95.0" : 0.9905183169572108, + "99.0" : 0.9905183169572108, + "99.9" : 0.9905183169572108, + "99.99" : 0.9905183169572108, + "99.999" : 0.9905183169572108, + "99.9999" : 0.9905183169572108, + "100.0" : 0.9905183169572108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9838497288735858, + 0.986488261195502, + 0.9877146994567901 + ], + [ + 0.9813227989402414, + 0.9807172931254291, + 0.9780690916381418 + ], + [ + 0.9900390989010989, + 0.9905183169572108, + 0.9878883724192433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013110931908467226, + "scoreError" : 3.1593701265900207E-4, + "scoreConfidence" : [ + 0.012794994895808223, + 0.013426868921126229 + ], + "scorePercentiles" : { + "0.0" : 0.012994717709554265, + "50.0" : 0.013109973759007349, + "90.0" : 0.013229475688776117, + "95.0" : 0.013229475688776117, + "99.0" : 0.013229475688776117, + "99.9" : 0.013229475688776117, + "99.99" : 0.013229475688776117, + "99.999" : 0.013229475688776117, + "99.9999" : 0.013229475688776117, + "100.0" : 0.013229475688776117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01302357288717445, + 0.013008309857432749, + 0.012994717709554265 + ], + [ + 0.013229475688776117, + 0.013213140677025528, + 0.013196374630840247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7185666837587, + "scoreError" : 0.059501212486211645, + "scoreConfidence" : [ + 3.659065471272488, + 3.7780678962449117 + ], + "scorePercentiles" : { + "0.0" : 3.6901369336283185, + "50.0" : 3.71791115056773, + "90.0" : 3.748282396551724, + "95.0" : 3.748282396551724, + "99.0" : 3.748282396551724, + "99.9" : 3.748282396551724, + "99.99" : 3.748282396551724, + "99.999" : 3.748282396551724, + "99.9999" : 3.748282396551724, + "100.0" : 3.748282396551724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7134024246473647, + 3.702479917838638, + 3.6901369336283185 + ], + [ + 3.734678553398058, + 3.748282396551724, + 3.7224198764880954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.808103327650971, + "scoreError" : 0.038645407159203296, + "scoreConfidence" : [ + 2.7694579204917673, + 2.8467487348101743 + ], + "scorePercentiles" : { + "0.0" : 2.776432284564131, + "50.0" : 2.8192024323562572, + "90.0" : 2.8317730673839185, + "95.0" : 2.8317730673839185, + "99.0" : 2.8317730673839185, + "99.9" : 2.8317730673839185, + "99.99" : 2.8317730673839185, + "99.999" : 2.8317730673839185, + "99.9999" : 2.8317730673839185, + "100.0" : 2.8317730673839185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8192024323562572, + 2.812318770528684, + 2.825893922576999 + ], + [ + 2.8219859692437925, + 2.8317730673839185, + 2.826690167326173 + ], + [ + 2.782025319054242, + 2.776432284564131, + 2.776608015824542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17652238855933255, + "scoreError" : 0.003125705040678961, + "scoreConfidence" : [ + 0.1733966835186536, + 0.17964809360001152 + ], + "scorePercentiles" : { + "0.0" : 0.17452421106457242, + "50.0" : 0.17574864547196006, + "90.0" : 0.17961467400675335, + "95.0" : 0.17961467400675335, + "99.0" : 0.17961467400675335, + "99.9" : 0.17961467400675335, + "99.99" : 0.17961467400675335, + "99.999" : 0.17961467400675335, + "99.9999" : 0.17961467400675335, + "100.0" : 0.17961467400675335 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17961467400675335, + 0.17849365485667368, + 0.17829464331051206 + ], + [ + 0.17667822780516246, + 0.175622275771838, + 0.17574864547196006 + ], + [ + 0.175139794949035, + 0.17452421106457242, + 0.17458536979748604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33159081262614715, + "scoreError" : 0.012872917742416154, + "scoreConfidence" : [ + 0.318717894883731, + 0.3444637303685633 + ], + "scorePercentiles" : { + "0.0" : 0.32417070874258486, + "50.0" : 0.327614753407155, + "90.0" : 0.34253819167665694, + "95.0" : 0.34253819167665694, + "99.0" : 0.34253819167665694, + "99.9" : 0.34253819167665694, + "99.99" : 0.34253819167665694, + "99.999" : 0.34253819167665694, + "99.9999" : 0.34253819167665694, + "100.0" : 0.34253819167665694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.327614753407155, + 0.32804313826472037, + 0.3272351357657068 + ], + [ + 0.32650751772887554, + 0.32417070874258486, + 0.3257033246482543 + ], + [ + 0.34253819167665694, + 0.3412840927923009, + 0.3412204506090695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16257438283358802, + "scoreError" : 0.0015079171733187204, + "scoreConfidence" : [ + 0.1610664656602693, + 0.16408230000690674 + ], + "scorePercentiles" : { + "0.0" : 0.16145170934306333, + "50.0" : 0.16253732088872996, + "90.0" : 0.16372694721590073, + "95.0" : 0.16372694721590073, + "99.0" : 0.16372694721590073, + "99.9" : 0.16372694721590073, + "99.99" : 0.16372694721590073, + "99.999" : 0.16372694721590073, + "99.9999" : 0.16372694721590073, + "100.0" : 0.16372694721590073 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16217501864975756, + 0.16253732088872996, + 0.16269733150573498 + ], + [ + 0.16175499032722448, + 0.1616261715800362, + 0.16145170934306333 + ], + [ + 0.16363694076449797, + 0.16372694721590073, + 0.16356301522734706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3891936853118775, + "scoreError" : 0.005998609157386771, + "scoreConfidence" : [ + 0.3831950761544907, + 0.39519229446926424 + ], + "scorePercentiles" : { + "0.0" : 0.3858164131558642, + "50.0" : 0.38843062722858807, + "90.0" : 0.39801564624875624, + "95.0" : 0.39801564624875624, + "99.0" : 0.39801564624875624, + "99.9" : 0.39801564624875624, + "99.99" : 0.39801564624875624, + "99.999" : 0.39801564624875624, + "99.9999" : 0.39801564624875624, + "100.0" : 0.39801564624875624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39801564624875624, + 0.3878194711859148, + 0.38843062722858807 + ], + [ + 0.3893662909593521, + 0.38925788793741, + 0.3895342826705099 + ], + [ + 0.3883784769505612, + 0.38612407146994093, + 0.3858164131558642 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15658902672809438, + "scoreError" : 0.003943926804707067, + "scoreConfidence" : [ + 0.15264509992338732, + 0.16053295353280145 + ], + "scorePercentiles" : { + "0.0" : 0.15414155185967293, + "50.0" : 0.15551880479611832, + "90.0" : 0.16021518488256592, + "95.0" : 0.16021518488256592, + "99.0" : 0.16021518488256592, + "99.9" : 0.16021518488256592, + "99.99" : 0.16021518488256592, + "99.999" : 0.16021518488256592, + "99.9999" : 0.16021518488256592, + "100.0" : 0.16021518488256592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1564305789794769, + 0.15551880479611832, + 0.15540823026356684 + ], + [ + 0.15484570807655385, + 0.1542891126745352, + 0.15414155185967293 + ], + [ + 0.16021518488256592, + 0.15947678614486652, + 0.1589752828754928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04743935270487015, + "scoreError" : 0.0014339295540742704, + "scoreConfidence" : [ + 0.04600542315079588, + 0.048873282258944425 + ], + "scorePercentiles" : { + "0.0" : 0.04618683700436459, + "50.0" : 0.0473992635310958, + "90.0" : 0.04867919720586088, + "95.0" : 0.04867919720586088, + "99.0" : 0.04867919720586088, + "99.9" : 0.04867919720586088, + "99.99" : 0.04867919720586088, + "99.999" : 0.04867919720586088, + "99.9999" : 0.04867919720586088, + "100.0" : 0.04867919720586088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0473992635310958, + 0.04618683700436459, + 0.04625727953835835 + ], + [ + 0.047923044246684976, + 0.04867919720586088, + 0.04845878558760249 + ], + [ + 0.04747248577504973, + 0.047303504564719684, + 0.047273776890094876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9071703.616870854, + "scoreError" : 160321.0639152296, + "scoreConfidence" : [ + 8911382.552955624, + 9232024.680786084 + ], + "scorePercentiles" : { + "0.0" : 8985842.091644205, + "50.0" : 9013161.59009009, + "90.0" : 9212517.708103132, + "95.0" : 9212517.708103132, + "99.0" : 9212517.708103132, + "99.9" : 9212517.708103132, + "99.99" : 9212517.708103132, + "99.999" : 9212517.708103132, + "99.9999" : 9212517.708103132, + "100.0" : 9212517.708103132 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9172326.609532539, + 9212517.708103132, + 9203796.53449862 + ], + [ + 9047417.420433996, + 9013161.59009009, + 9006460.631863186 + ], + [ + 9005402.827182718, + 8985842.091644205, + 8998407.13848921 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..69a93bc83d --- /dev/null +++ b/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4171100486983814, + "scoreError" : 0.029050359197470347, + "scoreConfidence" : [ + 3.388059689500911, + 3.4461604078958517 + ], + "scorePercentiles" : { + "0.0" : 3.4120508869424384, + "50.0" : 3.417248324070669, + "90.0" : 3.4218926597097488, + "95.0" : 3.4218926597097488, + "99.0" : 3.4218926597097488, + "99.9" : 3.4218926597097488, + "99.99" : 3.4218926597097488, + "99.999" : 3.4218926597097488, + "99.9999" : 3.4218926597097488, + "100.0" : 3.4218926597097488 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4120508869424384, + 3.4147862249287275 + ], + [ + 3.4197104232126105, + 3.4218926597097488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291216308035666, + "scoreError" : 0.010634177230505332, + "scoreConfidence" : [ + 1.7184874535730612, + 1.739755808034072 + ], + "scorePercentiles" : { + "0.0" : 1.7278385132821346, + "50.0" : 1.7286578762881986, + "90.0" : 1.7313322573557348, + "95.0" : 1.7313322573557348, + "99.0" : 1.7313322573557348, + "99.9" : 1.7313322573557348, + "99.99" : 1.7313322573557348, + "99.999" : 1.7313322573557348, + "99.9999" : 1.7313322573557348, + "100.0" : 1.7313322573557348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278385132821346, + 1.7278959373704097 + ], + [ + 1.7313322573557348, + 1.7294198152059874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672043251385466, + "scoreError" : 0.006581078982478564, + "scoreConfidence" : [ + 0.860623246156068, + 0.8737854041210252 + ], + "scorePercentiles" : { + "0.0" : 0.8660632068022843, + "50.0" : 0.8671657259458264, + "90.0" : 0.8684226418602491, + "95.0" : 0.8684226418602491, + "99.0" : 0.8684226418602491, + "99.9" : 0.8684226418602491, + "99.99" : 0.8684226418602491, + "99.999" : 0.8684226418602491, + "99.9999" : 0.8684226418602491, + "100.0" : 0.8684226418602491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667643732520639, + 0.8675670786395889 + ], + [ + 0.8660632068022843, + 0.8684226418602491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.162001317325213, + "scoreError" : 0.12285363357149377, + "scoreConfidence" : [ + 16.03914768375372, + 16.284854950896708 + ], + "scorePercentiles" : { + "0.0" : 16.08098225063554, + "50.0" : 16.158180279448743, + "90.0" : 16.264393757728516, + "95.0" : 16.264393757728516, + "99.0" : 16.264393757728516, + "99.9" : 16.264393757728516, + "99.99" : 16.264393757728516, + "99.999" : 16.264393757728516, + "99.9999" : 16.264393757728516, + "100.0" : 16.264393757728516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.2498132766456, + 16.232697591247195, + 16.264393757728516 + ], + [ + 16.167029538529444, + 16.158180279448743, + 16.13834542567008 + ], + [ + 16.08543601225834, + 16.08098225063554, + 16.08113372376346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2713.372153938922, + "scoreError" : 38.77531189294057, + "scoreConfidence" : [ + 2674.5968420459817, + 2752.1474658318625 + ], + "scorePercentiles" : { + "0.0" : 2691.019153774729, + "50.0" : 2702.636105906266, + "90.0" : 2748.609138326982, + "95.0" : 2748.609138326982, + "99.0" : 2748.609138326982, + "99.9" : 2748.609138326982, + "99.99" : 2748.609138326982, + "99.999" : 2748.609138326982, + "99.9999" : 2748.609138326982, + "100.0" : 2748.609138326982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2740.4996046953506, + 2748.609138326982, + 2741.3544851741417 + ], + [ + 2695.644525570017, + 2695.7406319067013, + 2691.019153774729 + ], + [ + 2705.513011761636, + 2699.332728334476, + 2702.636105906266 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70136.62092217, + "scoreError" : 1833.6126634576278, + "scoreConfidence" : [ + 68303.00825871238, + 71970.23358562762 + ], + "scorePercentiles" : { + "0.0" : 68636.20359353884, + "50.0" : 70840.18396558113, + "90.0" : 70914.97550703726, + "95.0" : 70914.97550703726, + "99.0" : 70914.97550703726, + "99.9" : 70914.97550703726, + "99.99" : 70914.97550703726, + "99.999" : 70914.97550703726, + "99.9999" : 70914.97550703726, + "100.0" : 70914.97550703726 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70884.08944043725, + 70894.06686001566, + 70759.17612968457 + ], + [ + 70887.07004709519, + 70840.18396558113, + 70914.97550703726 + ], + [ + 68636.20359353884, + 68734.45468992933, + 68679.36806621081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.3760123281292, + "scoreError" : 8.909817000066589, + "scoreConfidence" : [ + 348.4661953280626, + 366.2858293281958 + ], + "scorePercentiles" : { + "0.0" : 351.1186240805577, + "50.0" : 357.0735177853829, + "90.0" : 363.5453188941034, + "95.0" : 363.5453188941034, + "99.0" : 363.5453188941034, + "99.9" : 363.5453188941034, + "99.99" : 363.5453188941034, + "99.999" : 363.5453188941034, + "99.9999" : 363.5453188941034, + "100.0" : 363.5453188941034 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3800725684625, + 351.1186240805577, + 351.14898598830297 + ], + [ + 356.46301856590736, + 357.0735177853829, + 359.1732893240755 + ], + [ + 363.5453188941034, + 363.31735936112716, + 363.1639243852433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.21095768888088, + "scoreError" : 1.728555284357556, + "scoreConfidence" : [ + 106.48240240452333, + 109.93951297323844 + ], + "scorePercentiles" : { + "0.0" : 106.6361791958133, + "50.0" : 108.34945308402088, + "90.0" : 109.38279632848486, + "95.0" : 109.38279632848486, + "99.0" : 109.38279632848486, + "99.9" : 109.38279632848486, + "99.99" : 109.38279632848486, + "99.999" : 109.38279632848486, + "99.9999" : 109.38279632848486, + "100.0" : 109.38279632848486 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.21218065367852, + 108.34945308402088, + 108.46737250455398 + ], + [ + 106.6361791958133, + 107.10942310914471, + 107.19210526928929 + ], + [ + 109.1947139384956, + 109.35439511644663, + 109.38279632848486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06169959127089957, + "scoreError" : 0.0010302074088845569, + "scoreConfidence" : [ + 0.060669383862015015, + 0.06272979867978414 + ], + "scorePercentiles" : { + "0.0" : 0.06091269048924299, + "50.0" : 0.0620058904927547, + "90.0" : 0.0622928827164339, + "95.0" : 0.0622928827164339, + "99.0" : 0.0622928827164339, + "99.9" : 0.0622928827164339, + "99.99" : 0.0622928827164339, + "99.999" : 0.0622928827164339, + "99.9999" : 0.0622928827164339, + "100.0" : 0.0622928827164339 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06222775979141516, + 0.0622928827164339, + 0.0622715326828114 + ], + [ + 0.06091787278719283, + 0.06091326277029908, + 0.06091269048924299 + ], + [ + 0.0617303522657827, + 0.0620058904927547, + 0.06202407744216337 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6798945543601994E-4, + "scoreError" : 1.651439730618763E-5, + "scoreConfidence" : [ + 3.514750581298323E-4, + 3.845038527422076E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5445183380887837E-4, + "50.0" : 3.6962223546356776E-4, + "90.0" : 3.7913274260289705E-4, + "95.0" : 3.7913274260289705E-4, + "99.0" : 3.7913274260289705E-4, + "99.9" : 3.7913274260289705E-4, + "99.99" : 3.7913274260289705E-4, + "99.999" : 3.7913274260289705E-4, + "99.9999" : 3.7913274260289705E-4, + "100.0" : 3.7913274260289705E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7913274260289705E-4, + 3.772585944041239E-4, + 3.7845987324760806E-4 + ], + [ + 3.6962223546356776E-4, + 3.698791820859403E-4, + 3.695285413619942E-4 + ], + [ + 3.5902273255519643E-4, + 3.5445183380887837E-4, + 3.545493633939737E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014403353417093919, + "scoreError" : 5.362041725711555E-4, + "scoreConfidence" : [ + 0.013867149244522764, + 0.014939557589665075 + ], + "scorePercentiles" : { + "0.0" : 0.01398167059872964, + "50.0" : 0.014544293900340769, + "90.0" : 0.014684813553348615, + "95.0" : 0.014684813553348615, + "99.0" : 0.014684813553348615, + "99.9" : 0.014684813553348615, + "99.99" : 0.014684813553348615, + "99.999" : 0.014684813553348615, + "99.9999" : 0.014684813553348615, + "100.0" : 0.014684813553348615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014683949145623569, + 0.014679144894583022, + 0.014684813553348615 + ], + [ + 0.014533443404507641, + 0.014544293900340769, + 0.014547071132853868 + ], + [ + 0.013982993723109276, + 0.01398167059872964, + 0.013992800400748885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9704870782068402, + "scoreError" : 0.010541865346184598, + "scoreConfidence" : [ + 0.9599452128606556, + 0.9810289435530248 + ], + "scorePercentiles" : { + "0.0" : 0.9624246163025695, + "50.0" : 0.9728594578793774, + "90.0" : 0.9772800762239813, + "95.0" : 0.9772800762239813, + "99.0" : 0.9772800762239813, + "99.9" : 0.9772800762239813, + "99.99" : 0.9772800762239813, + "99.999" : 0.9772800762239813, + "99.9999" : 0.9772800762239813, + "100.0" : 0.9772800762239813 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9760755084911185, + 0.9772800762239813, + 0.9765354366761059 + ], + [ + 0.9710249972812894, + 0.9728594578793774, + 0.9729500664461523 + ], + [ + 0.9625655503368624, + 0.9624246163025695, + 0.9626679942241048 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013325571908170615, + "scoreError" : 4.7289741439673064E-4, + "scoreConfidence" : [ + 0.012852674493773884, + 0.013798469322567345 + ], + "scorePercentiles" : { + "0.0" : 0.013084378469896164, + "50.0" : 0.013347866633788563, + "90.0" : 0.013475767826630661, + "95.0" : 0.013475767826630661, + "99.0" : 0.013475767826630661, + "99.9" : 0.013475767826630661, + "99.99" : 0.013475767826630661, + "99.999" : 0.013475767826630661, + "99.9999" : 0.013475767826630661, + "100.0" : 0.013475767826630661 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013084378469896164, + 0.013225057919112142, + 0.013227907234958916 + ], + [ + 0.01347249396580759, + 0.01346782603261821, + 0.013475767826630661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.51804067922278, + "scoreError" : 0.10090682815622272, + "scoreConfidence" : [ + 3.417133851066557, + 3.6189475073790027 + ], + "scorePercentiles" : { + "0.0" : 3.4634543123268697, + "50.0" : 3.5154336537433952, + "90.0" : 3.556867966571835, + "95.0" : 3.556867966571835, + "99.0" : 3.556867966571835, + "99.9" : 3.556867966571835, + "99.99" : 3.556867966571835, + "99.999" : 3.556867966571835, + "99.9999" : 3.556867966571835, + "100.0" : 3.556867966571835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4634543123268697, + 3.5054302095304837, + 3.5006572841147654 + ], + [ + 3.525437097956307, + 3.556867966571835, + 3.5563972048364154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.788730153094184, + "scoreError" : 0.06903096873348752, + "scoreConfidence" : [ + 2.719699184360697, + 2.8577611218276715 + ], + "scorePercentiles" : { + "0.0" : 2.7437548197530863, + "50.0" : 2.783771960478709, + "90.0" : 2.849354674928775, + "95.0" : 2.849354674928775, + "99.0" : 2.849354674928775, + "99.9" : 2.849354674928775, + "99.99" : 2.849354674928775, + "99.999" : 2.849354674928775, + "99.9999" : 2.849354674928775, + "100.0" : 2.849354674928775 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7891072551589513, + 2.783771960478709, + 2.775938651124063 + ], + [ + 2.824776698107879, + 2.840119266609881, + 2.849354674928775 + ], + [ + 2.7456887584408456, + 2.7460592932454695, + 2.7437548197530863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17712537921057037, + "scoreError" : 0.007302705141392033, + "scoreConfidence" : [ + 0.16982267406917834, + 0.1844280843519624 + ], + "scorePercentiles" : { + "0.0" : 0.17273654465997618, + "50.0" : 0.17481974593989827, + "90.0" : 0.18281082563708823, + "95.0" : 0.18281082563708823, + "99.0" : 0.18281082563708823, + "99.9" : 0.18281082563708823, + "99.99" : 0.18281082563708823, + "99.999" : 0.18281082563708823, + "99.9999" : 0.18281082563708823, + "100.0" : 0.18281082563708823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1745027607273108, + 0.1769361178187866, + 0.17273654465997618 + ], + [ + 0.17481974593989827, + 0.17345907777700686, + 0.1735599226283453 + ], + [ + 0.18281082563708823, + 0.18277720421106503, + 0.18252621349565598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32447753868441737, + "scoreError" : 0.005001733991219815, + "scoreConfidence" : [ + 0.31947580469319753, + 0.3294792726756372 + ], + "scorePercentiles" : { + "0.0" : 0.3203402676660901, + "50.0" : 0.3253693742964047, + "90.0" : 0.32748490490224974, + "95.0" : 0.32748490490224974, + "99.0" : 0.32748490490224974, + "99.9" : 0.32748490490224974, + "99.99" : 0.32748490490224974, + "99.999" : 0.32748490490224974, + "99.9999" : 0.32748490490224974, + "100.0" : 0.32748490490224974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32748490490224974, + 0.3271972053396152, + 0.3270538788304935 + ], + [ + 0.3260087019396903, + 0.3252007965269422, + 0.3253693742964047 + ], + [ + 0.321195865324083, + 0.3203402676660901, + 0.3204468533341878 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16340967242962043, + "scoreError" : 0.011490652019065893, + "scoreConfidence" : [ + 0.15191902041055452, + 0.17490032444868633 + ], + "scorePercentiles" : { + "0.0" : 0.15772524404208002, + "50.0" : 0.15996247744577388, + "90.0" : 0.17276041387233307, + "95.0" : 0.17276041387233307, + "99.0" : 0.17276041387233307, + "99.9" : 0.17276041387233307, + "99.99" : 0.17276041387233307, + "99.999" : 0.17276041387233307, + "99.9999" : 0.17276041387233307, + "100.0" : 0.17276041387233307 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15996247744577388, + 0.15985878575995907, + 0.16040340945399717 + ], + [ + 0.15772524404208002, + 0.157725860035961, + 0.1577472638735527 + ], + [ + 0.17276041387233307, + 0.17239612719154584, + 0.17210747019138098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38778148958174263, + "scoreError" : 0.007870026339949909, + "scoreConfidence" : [ + 0.3799114632417927, + 0.39565151592169256 + ], + "scorePercentiles" : { + "0.0" : 0.38187174053001377, + "50.0" : 0.388548793379439, + "90.0" : 0.39541730797516905, + "95.0" : 0.39541730797516905, + "99.0" : 0.39541730797516905, + "99.9" : 0.39541730797516905, + "99.99" : 0.39541730797516905, + "99.999" : 0.39541730797516905, + "99.9999" : 0.39541730797516905, + "100.0" : 0.39541730797516905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3931338122026969, + 0.3896887151819811, + 0.38912040210116733 + ], + [ + 0.39541730797516905, + 0.388548793379439, + 0.38593098062673664 + ], + [ + 0.38401105663927504, + 0.38187174053001377, + 0.3823105975992048 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15859959775618343, + "scoreError" : 0.004781731731620883, + "scoreConfidence" : [ + 0.15381786602456254, + 0.16338132948780432 + ], + "scorePercentiles" : { + "0.0" : 0.15511315565379247, + "50.0" : 0.15770749495347736, + "90.0" : 0.16296427483092968, + "95.0" : 0.16296427483092968, + "99.0" : 0.16296427483092968, + "99.9" : 0.16296427483092968, + "99.99" : 0.16296427483092968, + "99.999" : 0.16296427483092968, + "99.9999" : 0.16296427483092968, + "100.0" : 0.16296427483092968 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15585705683961162, + 0.1566942354747728, + 0.15511315565379247 + ], + [ + 0.16296427483092968, + 0.16186691430883782, + 0.16168290255614298 + ], + [ + 0.15766940961765866, + 0.15784093557042742, + 0.15770749495347736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04710584983796012, + "scoreError" : 5.002445975454384E-4, + "scoreConfidence" : [ + 0.04660560524041468, + 0.047606094435505564 + ], + "scorePercentiles" : { + "0.0" : 0.04662526819408893, + "50.0" : 0.047111269473208144, + "90.0" : 0.04774415838473731, + "95.0" : 0.04774415838473731, + "99.0" : 0.04774415838473731, + "99.9" : 0.04774415838473731, + "99.99" : 0.04774415838473731, + "99.999" : 0.04774415838473731, + "99.9999" : 0.04774415838473731, + "100.0" : 0.04774415838473731 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04774415838473731, + 0.04719217090366819, + 0.04711298183822594 + ], + [ + 0.04718592201198509, + 0.047111269473208144, + 0.046999683827607275 + ], + [ + 0.0470874619162421, + 0.046893731991878115, + 0.04662526819408893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9443774.941414071, + "scoreError" : 307746.71388554137, + "scoreConfidence" : [ + 9136028.22752853, + 9751521.655299613 + ], + "scorePercentiles" : { + "0.0" : 9286955.811513463, + "50.0" : 9365019.601123596, + "90.0" : 9707768.672162948, + "95.0" : 9707768.672162948, + "99.0" : 9707768.672162948, + "99.9" : 9707768.672162948, + "99.99" : 9707768.672162948, + "99.999" : 9707768.672162948, + "99.9999" : 9707768.672162948, + "100.0" : 9707768.672162948 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9286955.811513463, + 9303999.322790697, + 9307733.983255815 + ], + [ + 9309956.244651163, + 9365232.038389513, + 9365019.601123596 + ], + [ + 9707768.672162948, + 9675951.720502902, + 9671357.078336557 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json b/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json new file mode 100644 index 0000000000..967434fc3e --- /dev/null +++ b/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.398063238727424, + "scoreError" : 0.01846794614525216, + "scoreConfidence" : [ + 3.379595292582172, + 3.4165311848726763 + ], + "scorePercentiles" : { + "0.0" : 3.394463481045468, + "50.0" : 3.3981746276446567, + "90.0" : 3.401440218574916, + "95.0" : 3.401440218574916, + "99.0" : 3.401440218574916, + "99.9" : 3.401440218574916, + "99.99" : 3.401440218574916, + "99.999" : 3.401440218574916, + "99.9999" : 3.401440218574916, + "100.0" : 3.401440218574916 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394463481045468, + 3.3979334679294224 + ], + [ + 3.398415787359891, + 3.401440218574916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7155884162836184, + "scoreError" : 0.01669652478284702, + "scoreConfidence" : [ + 1.6988918915007714, + 1.7322849410664654 + ], + "scorePercentiles" : { + "0.0" : 1.7121557905255511, + "50.0" : 1.715993604740984, + "90.0" : 1.7182106651269544, + "95.0" : 1.7182106651269544, + "99.0" : 1.7182106651269544, + "99.9" : 1.7182106651269544, + "99.99" : 1.7182106651269544, + "99.999" : 1.7182106651269544, + "99.9999" : 1.7182106651269544, + "100.0" : 1.7182106651269544 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7121557905255511, + 1.7167149547253382 + ], + [ + 1.7152722547566301, + 1.7182106651269544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.860582322212074, + "scoreError" : 0.007014266752437115, + "scoreConfidence" : [ + 0.8535680554596369, + 0.8675965889645111 + ], + "scorePercentiles" : { + "0.0" : 0.8590306137321312, + "50.0" : 0.8609782904232638, + "90.0" : 0.8613420942696371, + "95.0" : 0.8613420942696371, + "99.0" : 0.8613420942696371, + "99.9" : 0.8613420942696371, + "99.99" : 0.8613420942696371, + "99.999" : 0.8613420942696371, + "99.9999" : 0.8613420942696371, + "100.0" : 0.8613420942696371 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8613218540335297, + 0.8613420942696371 + ], + [ + 0.8590306137321312, + 0.8606347268129979 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.761189069739004, + "scoreError" : 0.15368336132423224, + "scoreConfidence" : [ + 15.607505708414772, + 15.914872431063236 + ], + "scorePercentiles" : { + "0.0" : 15.647324344216493, + "50.0" : 15.774902689094654, + "90.0" : 15.862001171401516, + "95.0" : 15.862001171401516, + "99.0" : 15.862001171401516, + "99.9" : 15.862001171401516, + "99.99" : 15.862001171401516, + "99.999" : 15.862001171401516, + "99.9999" : 15.862001171401516, + "100.0" : 15.862001171401516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.691891086008026, + 15.647324344216493, + 15.648750806162413 + ], + [ + 15.691263256496491, + 15.834115149372924, + 15.843618460484318 + ], + [ + 15.862001171401516, + 15.856834664414194, + 15.774902689094654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2605.564647314867, + "scoreError" : 71.75800348528772, + "scoreConfidence" : [ + 2533.8066438295796, + 2677.322650800155 + ], + "scorePercentiles" : { + "0.0" : 2549.627018607967, + "50.0" : 2605.008813064446, + "90.0" : 2656.065490907737, + "95.0" : 2656.065490907737, + "99.0" : 2656.065490907737, + "99.9" : 2656.065490907737, + "99.99" : 2656.065490907737, + "99.999" : 2656.065490907737, + "99.9999" : 2656.065490907737, + "100.0" : 2656.065490907737 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2656.065490907737, + 2650.5415035008077, + 2639.3811388336094 + ], + [ + 2549.627018607967, + 2554.9937206067393, + 2560.1159714856094 + ], + [ + 2637.7776962860908, + 2596.5704725407954, + 2605.008813064446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69899.48411961367, + "scoreError" : 1599.6195809567562, + "scoreConfidence" : [ + 68299.86453865691, + 71499.10370057043 + ], + "scorePercentiles" : { + "0.0" : 68635.08400989581, + "50.0" : 70097.78329072687, + "90.0" : 70958.29943121137, + "95.0" : 70958.29943121137, + "99.0" : 70958.29943121137, + "99.9" : 70958.29943121137, + "99.99" : 70958.29943121137, + "99.999" : 70958.29943121137, + "99.9999" : 70958.29943121137, + "100.0" : 70958.29943121137 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70897.41237148685, + 70958.29943121137, + 70827.88010165881 + ], + [ + 70034.7228781272, + 70111.79570507018, + 70097.78329072687 + ], + [ + 68771.26924276495, + 68635.08400989581, + 68761.11004558101 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 318.2890154966056, + "scoreError" : 3.5026047930382624, + "scoreConfidence" : [ + 314.78641070356736, + 321.79162028964384 + ], + "scorePercentiles" : { + "0.0" : 313.54494204120397, + "50.0" : 318.3475360395479, + "90.0" : 321.16303018492044, + "95.0" : 321.16303018492044, + "99.0" : 321.16303018492044, + "99.9" : 321.16303018492044, + "99.99" : 321.16303018492044, + "99.999" : 321.16303018492044, + "99.9999" : 321.16303018492044, + "100.0" : 321.16303018492044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 319.28675349502834, + 319.88635243263707, + 321.16303018492044 + ], + [ + 318.3475360395479, + 317.7739042163214, + 317.9026036071082 + ], + [ + 318.4421318678474, + 318.25388558483576, + 313.54494204120397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 99.19790546048765, + "scoreError" : 4.922560682981105, + "scoreConfidence" : [ + 94.27534477750655, + 104.12046614346875 + ], + "scorePercentiles" : { + "0.0" : 95.29875350183407, + "50.0" : 99.31747082669419, + "90.0" : 102.77934146542273, + "95.0" : 102.77934146542273, + "99.0" : 102.77934146542273, + "99.9" : 102.77934146542273, + "99.99" : 102.77934146542273, + "99.999" : 102.77934146542273, + "99.9999" : 102.77934146542273, + "100.0" : 102.77934146542273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 95.5248125728636, + 95.29875350183407, + 96.26365728304859 + ], + [ + 99.02528655018615, + 100.36379191537276, + 99.31747082669419 + ], + [ + 102.43738296774471, + 102.77934146542273, + 101.77065206122195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06388822878506939, + "scoreError" : 9.979567518627098E-4, + "scoreConfidence" : [ + 0.06289027203320668, + 0.0648861855369321 + ], + "scorePercentiles" : { + "0.0" : 0.06305835662668836, + "50.0" : 0.06389496701787117, + "90.0" : 0.06479736363636364, + "95.0" : 0.06479736363636364, + "99.0" : 0.06479736363636364, + "99.9" : 0.06479736363636364, + "99.99" : 0.06479736363636364, + "99.999" : 0.06479736363636364, + "99.9999" : 0.06479736363636364, + "100.0" : 0.06479736363636364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06374456063947781, + 0.06419815483084035, + 0.06389496701787117 + ], + [ + 0.06406173624296935, + 0.06479736363636364, + 0.06459939156217903 + ], + [ + 0.0632592709037082, + 0.06338025760552668, + 0.06305835662668836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.83019606931175E-4, + "scoreError" : 1.3784581850369122E-5, + "scoreConfidence" : [ + 3.6923502508080585E-4, + 3.968041887815441E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7020701441402385E-4, + "50.0" : 3.844138049114324E-4, + "90.0" : 3.934721148100017E-4, + "95.0" : 3.934721148100017E-4, + "99.0" : 3.934721148100017E-4, + "99.9" : 3.934721148100017E-4, + "99.99" : 3.934721148100017E-4, + "99.999" : 3.934721148100017E-4, + "99.9999" : 3.934721148100017E-4, + "100.0" : 3.934721148100017E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8526200194871147E-4, + 3.8127326824683404E-4, + 3.844138049114324E-4 + ], + [ + 3.934721148100017E-4, + 3.9015963338102455E-4, + 3.9196502741253386E-4 + ], + [ + 3.7619870712614367E-4, + 3.7422489012986976E-4, + 3.7020701441402385E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014507169573223098, + "scoreError" : 5.580762315377476E-4, + "scoreConfidence" : [ + 0.01394909334168535, + 0.015065245804760846 + ], + "scorePercentiles" : { + "0.0" : 0.014197896179254592, + "50.0" : 0.014309983227464544, + "90.0" : 0.014960949395286768, + "95.0" : 0.014960949395286768, + "99.0" : 0.014960949395286768, + "99.9" : 0.014960949395286768, + "99.99" : 0.014960949395286768, + "99.999" : 0.014960949395286768, + "99.9999" : 0.014960949395286768, + "100.0" : 0.014960949395286768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014448763521694528, + 0.014238935660798879, + 0.014197896179254592 + ], + [ + 0.014309983227464544, + 0.014273343558159617, + 0.014274491531762492 + ], + [ + 0.014931303598997824, + 0.014960949395286768, + 0.01492885948558863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9907268310671148, + "scoreError" : 0.02012586950490829, + "scoreConfidence" : [ + 0.9706009615622065, + 1.0108527005720231 + ], + "scorePercentiles" : { + "0.0" : 0.9740569874354729, + "50.0" : 0.9971856530062818, + "90.0" : 1.0045795006529383, + "95.0" : 1.0045795006529383, + "99.0" : 1.0045795006529383, + "99.9" : 1.0045795006529383, + "99.99" : 1.0045795006529383, + "99.999" : 1.0045795006529383, + "99.9999" : 1.0045795006529383, + "100.0" : 1.0045795006529383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9986444846215299, + 0.9971856530062818, + 1.0045795006529383 + ], + [ + 0.9973045451735142, + 0.9972825439768648, + 0.9962513022213367 + ], + [ + 0.9757165716655284, + 0.9755198908505658, + 0.9740569874354729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013343001108488255, + "scoreError" : 1.603246869937958E-4, + "scoreConfidence" : [ + 0.01318267642149446, + 0.01350332579548205 + ], + "scorePercentiles" : { + "0.0" : 0.013283585089821314, + "50.0" : 0.013325930652973463, + "90.0" : 0.01342174419659634, + "95.0" : 0.01342174419659634, + "99.0" : 0.01342174419659634, + "99.9" : 0.01342174419659634, + "99.99" : 0.01342174419659634, + "99.999" : 0.01342174419659634, + "99.9999" : 0.01342174419659634, + "100.0" : 0.01342174419659634 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013296058110407913, + 0.01342174419659634, + 0.013404757948157025 + ], + [ + 0.013328466066544758, + 0.013323395239402168, + 0.013283585089821314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9281097096224347, + "scoreError" : 0.19831393229042082, + "scoreConfidence" : [ + 3.729795777332014, + 4.126423641912855 + ], + "scorePercentiles" : { + "0.0" : 3.8423004477726574, + "50.0" : 3.9272893627166936, + "90.0" : 3.9999446554756197, + "95.0" : 3.9999446554756197, + "99.0" : 3.9999446554756197, + "99.9" : 3.9999446554756197, + "99.99" : 3.9999446554756197, + "99.999" : 3.9999446554756197, + "99.9999" : 3.9999446554756197, + "100.0" : 3.9999446554756197 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9999446554756197, + 3.978067418456643, + 3.9959317412140574 + ], + [ + 3.8423004477726574, + 3.8765113069767443, + 3.8759026878388845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.1320001021459305, + "scoreError" : 0.1305735498002403, + "scoreConfidence" : [ + 3.00142655234569, + 3.262573651946171 + ], + "scorePercentiles" : { + "0.0" : 3.0153515375339164, + "50.0" : 3.1369162976787957, + "90.0" : 3.216451787459807, + "95.0" : 3.216451787459807, + "99.0" : 3.216451787459807, + "99.9" : 3.216451787459807, + "99.99" : 3.216451787459807, + "99.999" : 3.216451787459807, + "99.9999" : 3.216451787459807, + "100.0" : 3.216451787459807 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.160231842022117, + 3.1369162976787957, + 3.1275856741713572 + ], + [ + 3.216451787459807, + 3.2145117405978785, + 3.214671719061395 + ], + [ + 3.0153515375339164, + 3.052139432102533, + 3.0501408886855748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1797257930507823, + "scoreError" : 0.006638397579902533, + "scoreConfidence" : [ + 0.17308739547087976, + 0.18636419063068482 + ], + "scorePercentiles" : { + "0.0" : 0.1743994850107253, + "50.0" : 0.18180634640487228, + "90.0" : 0.18315693981574754, + "95.0" : 0.18315693981574754, + "99.0" : 0.18315693981574754, + "99.9" : 0.18315693981574754, + "99.99" : 0.18315693981574754, + "99.999" : 0.18315693981574754, + "99.9999" : 0.18315693981574754, + "100.0" : 0.18315693981574754 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18180634640487228, + 0.1818186315703351, + 0.18180463257885646 + ], + [ + 0.1746522944566698, + 0.1743994850107253, + 0.1744420070472901 + ], + [ + 0.18315693981574754, + 0.18280616558204152, + 0.18264563499050263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3383194540641472, + "scoreError" : 0.020423803604438278, + "scoreConfidence" : [ + 0.3178956504597089, + 0.3587432576685855 + ], + "scorePercentiles" : { + "0.0" : 0.3253307799863366, + "50.0" : 0.3337108633163146, + "90.0" : 0.355636786656709, + "95.0" : 0.355636786656709, + "99.0" : 0.355636786656709, + "99.9" : 0.355636786656709, + "99.99" : 0.355636786656709, + "99.999" : 0.355636786656709, + "99.9999" : 0.355636786656709, + "100.0" : 0.355636786656709 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3275824299331761, + 0.3281772648661066, + 0.3253307799863366 + ], + [ + 0.3352680090854231, + 0.3337108633163146, + 0.33307845443645084 + ], + [ + 0.3517657857117732, + 0.354324712585034, + 0.355636786656709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16835279831565275, + "scoreError" : 0.008841408090625332, + "scoreConfidence" : [ + 0.15951139022502742, + 0.1771942064062781 + ], + "scorePercentiles" : { + "0.0" : 0.16128091963551328, + "50.0" : 0.1713425613734494, + "90.0" : 0.1726306326992128, + "95.0" : 0.1726306326992128, + "99.0" : 0.1726306326992128, + "99.9" : 0.1726306326992128, + "99.99" : 0.1726306326992128, + "99.999" : 0.1726306326992128, + "99.9999" : 0.1726306326992128, + "100.0" : 0.1726306326992128 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1713425613734494, + 0.17160019881254718, + 0.17104700237749082 + ], + [ + 0.17248626498439038, + 0.1726306326992128, + 0.17196016485538398 + ], + [ + 0.16128091963551328, + 0.16137944565655912, + 0.16144799444632796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3952465346387055, + "scoreError" : 0.003297160570744365, + "scoreConfidence" : [ + 0.39194937406796115, + 0.3985436952094499 + ], + "scorePercentiles" : { + "0.0" : 0.39318401466540853, + "50.0" : 0.3945501908387911, + "90.0" : 0.3986785879843725, + "95.0" : 0.3986785879843725, + "99.0" : 0.3986785879843725, + "99.9" : 0.3986785879843725, + "99.99" : 0.3986785879843725, + "99.999" : 0.3986785879843725, + "99.9999" : 0.3986785879843725, + "100.0" : 0.3986785879843725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3945501908387911, + 0.39391868401150193, + 0.3934821552626402 + ], + [ + 0.3986785879843725, + 0.39347827231949634, + 0.39318401466540853 + ], + [ + 0.3968952295999365, + 0.39692631868698897, + 0.39610535837921335 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1593310385581499, + "scoreError" : 0.0028442450259137868, + "scoreConfidence" : [ + 0.1564867935322361, + 0.1621752835840637 + ], + "scorePercentiles" : { + "0.0" : 0.15777442514554377, + "50.0" : 0.15874837003524145, + "90.0" : 0.1624385157156084, + "95.0" : 0.1624385157156084, + "99.0" : 0.1624385157156084, + "99.9" : 0.1624385157156084, + "99.99" : 0.1624385157156084, + "99.999" : 0.1624385157156084, + "99.9999" : 0.1624385157156084, + "100.0" : 0.1624385157156084 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1624385157156084, + 0.16167678781950753, + 0.16008429511109687 + ], + [ + 0.15874837003524145, + 0.1587637378548295, + 0.1582909996992529 + ], + [ + 0.1581139882998403, + 0.1580882273424285, + 0.15777442514554377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04777432791293147, + "scoreError" : 0.0013125816839008406, + "scoreConfidence" : [ + 0.04646174622903063, + 0.04908690959683231 + ], + "scorePercentiles" : { + "0.0" : 0.04719819954218289, + "50.0" : 0.04727648992076549, + "90.0" : 0.04886981457571789, + "95.0" : 0.04886981457571789, + "99.0" : 0.04886981457571789, + "99.9" : 0.04886981457571789, + "99.99" : 0.04886981457571789, + "99.999" : 0.04886981457571789, + "99.9999" : 0.04886981457571789, + "100.0" : 0.04886981457571789 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04727648992076549, + 0.04726375017723625, + 0.04729652034904344 + ], + [ + 0.047260753382641366, + 0.04722931846261382, + 0.04719819954218289 + ], + [ + 0.04878328790044441, + 0.04886981457571789, + 0.04879081690573771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9854902.347201487, + "scoreError" : 395549.2532945072, + "scoreConfidence" : [ + 9459353.09390698, + 1.0250451600495994E7 + ], + "scorePercentiles" : { + "0.0" : 9519942.573739296, + "50.0" : 9846367.802165354, + "90.0" : 1.0131742660931174E7, + "95.0" : 1.0131742660931174E7, + "99.0" : 1.0131742660931174E7, + "99.9" : 1.0131742660931174E7, + "99.99" : 1.0131742660931174E7, + "99.999" : 1.0131742660931174E7, + "99.9999" : 1.0131742660931174E7, + "100.0" : 1.0131742660931174E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9718148.198058253, + 9563246.647227533, + 9519942.573739296 + ], + [ + 9846367.802165354, + 9882046.2023692, + 9784536.290322581 + ], + [ + 1.012611225708502E7, + 1.0131742660931174E7, + 1.012197849291498E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json b/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json new file mode 100644 index 0000000000..0831530274 --- /dev/null +++ b/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4028158052032147, + "scoreError" : 0.02698436626698203, + "scoreConfidence" : [ + 3.3758314389362325, + 3.429800171470197 + ], + "scorePercentiles" : { + "0.0" : 3.3984327814572493, + "50.0" : 3.4024482494709245, + "90.0" : 3.40793394041376, + "95.0" : 3.40793394041376, + "99.0" : 3.40793394041376, + "99.9" : 3.40793394041376, + "99.99" : 3.40793394041376, + "99.999" : 3.40793394041376, + "99.9999" : 3.40793394041376, + "100.0" : 3.40793394041376 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3984327814572493, + 3.400626569701109 + ], + [ + 3.40426992924074, + 3.40793394041376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7217318691895986, + "scoreError" : 0.010243454629387177, + "scoreConfidence" : [ + 1.7114884145602114, + 1.731975323818986 + ], + "scorePercentiles" : { + "0.0" : 1.719393836215952, + "50.0" : 1.7223979685910846, + "90.0" : 1.722737703360273, + "95.0" : 1.722737703360273, + "99.0" : 1.722737703360273, + "99.9" : 1.722737703360273, + "99.99" : 1.722737703360273, + "99.999" : 1.722737703360273, + "99.9999" : 1.722737703360273, + "100.0" : 1.722737703360273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7221038886454691, + 1.722737703360273 + ], + [ + 1.719393836215952, + 1.7226920485366999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654434507790818, + "scoreError" : 0.008438986629075771, + "scoreConfidence" : [ + 0.8570044641500061, + 0.8738824374081575 + ], + "scorePercentiles" : { + "0.0" : 0.8645342532584883, + "50.0" : 0.8649425572522541, + "90.0" : 0.8673544353533303, + "95.0" : 0.8673544353533303, + "99.0" : 0.8673544353533303, + "99.9" : 0.8673544353533303, + "99.99" : 0.8673544353533303, + "99.999" : 0.8673544353533303, + "99.9999" : 0.8673544353533303, + "100.0" : 0.8673544353533303 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8645342532584883, + 0.8652034852013738 + ], + [ + 0.8646816293031344, + 0.8673544353533303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.856852526851778, + "scoreError" : 0.22239508840105984, + "scoreConfidence" : [ + 15.634457438450719, + 16.07924761525284 + ], + "scorePercentiles" : { + "0.0" : 15.655595185675983, + "50.0" : 15.897855959962087, + "90.0" : 16.075434896788032, + "95.0" : 16.075434896788032, + "99.0" : 16.075434896788032, + "99.9" : 16.075434896788032, + "99.99" : 16.075434896788032, + "99.999" : 16.075434896788032, + "99.9999" : 16.075434896788032, + "100.0" : 16.075434896788032 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.795514884463312, + 15.734436696789428, + 15.655595185675983 + ], + [ + 15.961511976581217, + 15.748292618608652, + 15.933875666964484 + ], + [ + 16.075434896788032, + 15.897855959962087, + 15.909154855832826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2627.694997644631, + "scoreError" : 100.4623977422994, + "scoreConfidence" : [ + 2527.2325999023315, + 2728.15739538693 + ], + "scorePercentiles" : { + "0.0" : 2546.832028910364, + "50.0" : 2617.358010776736, + "90.0" : 2726.1959070049306, + "95.0" : 2726.1959070049306, + "99.0" : 2726.1959070049306, + "99.9" : 2726.1959070049306, + "99.99" : 2726.1959070049306, + "99.999" : 2726.1959070049306, + "99.9999" : 2726.1959070049306, + "100.0" : 2726.1959070049306 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.3819623737045, + 2686.3172658046005, + 2726.1959070049306 + ], + [ + 2617.358010776736, + 2566.8713813030668, + 2611.7854559352445 + ], + [ + 2626.9936504978727, + 2546.832028910364, + 2584.5193161951593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69994.63854814746, + "scoreError" : 914.8097763908709, + "scoreConfidence" : [ + 69079.82877175658, + 70909.44832453833 + ], + "scorePercentiles" : { + "0.0" : 68967.6464426141, + "50.0" : 70207.4304985715, + "90.0" : 70500.16253561925, + "95.0" : 70500.16253561925, + "99.0" : 70500.16253561925, + "99.9" : 70500.16253561925, + "99.99" : 70500.16253561925, + "99.999" : 70500.16253561925, + "99.9999" : 70500.16253561925, + "100.0" : 70500.16253561925 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69828.42820603953, + 69413.01432131404, + 69734.47790099871 + ], + [ + 70448.36211536035, + 70207.4304985715, + 70500.16253561925 + ], + [ + 70468.08488030932, + 68967.6464426141, + 70384.14003250026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.7931852807508, + "scoreError" : 3.3342629800102954, + "scoreConfidence" : [ + 343.4589223007405, + 350.12744826076107 + ], + "scorePercentiles" : { + "0.0" : 343.7680474475259, + "50.0" : 346.25243329497414, + "90.0" : 349.58594626041577, + "95.0" : 349.58594626041577, + "99.0" : 349.58594626041577, + "99.9" : 349.58594626041577, + "99.99" : 349.58594626041577, + "99.999" : 349.58594626041577, + "99.9999" : 349.58594626041577, + "100.0" : 349.58594626041577 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.7680474475259, + 345.8715452517336, + 347.96462884988966 + ], + [ + 346.07920593473517, + 346.25243329497414, + 347.765244689211 + ], + [ + 344.63011611183293, + 349.22149968643856, + 349.58594626041577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.84830895680096, + "scoreError" : 2.853451773658508, + "scoreConfidence" : [ + 100.99485718314246, + 106.70176073045947 + ], + "scorePercentiles" : { + "0.0" : 101.71035761699841, + "50.0" : 103.04915723582602, + "90.0" : 106.43837078897053, + "95.0" : 106.43837078897053, + "99.0" : 106.43837078897053, + "99.9" : 106.43837078897053, + "99.99" : 106.43837078897053, + "99.999" : 106.43837078897053, + "99.9999" : 106.43837078897053, + "100.0" : 106.43837078897053 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.71035761699841, + 102.96619234811652, + 103.04915723582602 + ], + [ + 106.43837078897053, + 106.37364400433496, + 105.10326118216283 + ], + [ + 103.40392088198075, + 102.76412725260485, + 102.82574930021367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06326091308772883, + "scoreError" : 6.878635265646218E-4, + "scoreConfidence" : [ + 0.0625730495611642, + 0.06394877661429345 + ], + "scorePercentiles" : { + "0.0" : 0.06274002661396574, + "50.0" : 0.06328955167525284, + "90.0" : 0.06400515197772658, + "95.0" : 0.06400515197772658, + "99.0" : 0.06400515197772658, + "99.9" : 0.06400515197772658, + "99.99" : 0.06400515197772658, + "99.999" : 0.06400515197772658, + "99.9999" : 0.06400515197772658, + "100.0" : 0.06400515197772658 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06287397867350723, + 0.06279671892543612, + 0.06346642787149512 + ], + [ + 0.06337502196548643, + 0.06274002661396574, + 0.06328955167525284 + ], + [ + 0.06356635234142094, + 0.06400515197772658, + 0.06323498774526852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.855581819461642E-4, + "scoreError" : 6.921607125895276E-6, + "scoreConfidence" : [ + 3.786365748202689E-4, + 3.924797890720594E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7792593484907937E-4, + "50.0" : 3.8691700719416E-4, + "90.0" : 3.913857062366774E-4, + "95.0" : 3.913857062366774E-4, + "99.0" : 3.913857062366774E-4, + "99.9" : 3.913857062366774E-4, + "99.99" : 3.913857062366774E-4, + "99.999" : 3.913857062366774E-4, + "99.9999" : 3.913857062366774E-4, + "100.0" : 3.913857062366774E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7792593484907937E-4, + 3.8200901836640285E-4, + 3.8237432355374515E-4 + ], + [ + 3.855961513716939E-4, + 3.877975459473206E-4, + 3.913857062366774E-4 + ], + [ + 3.8691700719416E-4, + 3.8703300435309726E-4, + 3.8898494564330134E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01446867119144881, + "scoreError" : 3.071290232277809E-4, + "scoreConfidence" : [ + 0.01416154216822103, + 0.014775800214676591 + ], + "scorePercentiles" : { + "0.0" : 0.01424524991666643, + "50.0" : 0.014418233085102549, + "90.0" : 0.01471546875142554, + "95.0" : 0.01471546875142554, + "99.0" : 0.01471546875142554, + "99.9" : 0.01471546875142554, + "99.99" : 0.01471546875142554, + "99.999" : 0.01471546875142554, + "99.9999" : 0.01471546875142554, + "100.0" : 0.01471546875142554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01441417423497701, + 0.014418233085102549, + 0.014425451218720563 + ], + [ + 0.014347761017875667, + 0.01427606893824538, + 0.01424524991666643 + ], + [ + 0.01471291030230269, + 0.01471546875142554, + 0.014662723257723494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0029323812394497, + "scoreError" : 0.008664048351075164, + "scoreConfidence" : [ + 0.9942683328883746, + 1.0115964295905249 + ], + "scorePercentiles" : { + "0.0" : 0.995025286240175, + "50.0" : 1.0018026926775518, + "90.0" : 1.0113044462534129, + "95.0" : 1.0113044462534129, + "99.0" : 1.0113044462534129, + "99.9" : 1.0113044462534129, + "99.99" : 1.0113044462534129, + "99.999" : 1.0113044462534129, + "99.9999" : 1.0113044462534129, + "100.0" : 1.0113044462534129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0113044462534129, + 0.9978523330672521, + 1.0008790364291433 + ], + [ + 1.0075035067499496, + 1.0012708366039247, + 1.0079401847409797 + ], + [ + 0.995025286240175, + 1.0018026926775518, + 1.0028131083926601 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01299504090943715, + "scoreError" : 5.276041924888734E-4, + "scoreConfidence" : [ + 0.012467436716948277, + 0.013522645101926023 + ], + "scorePercentiles" : { + "0.0" : 0.012795588516489282, + "50.0" : 0.01293060720421979, + "90.0" : 0.013293538975678752, + "95.0" : 0.013293538975678752, + "99.0" : 0.013293538975678752, + "99.9" : 0.013293538975678752, + "99.99" : 0.013293538975678752, + "99.999" : 0.013293538975678752, + "99.9999" : 0.013293538975678752, + "100.0" : 0.013293538975678752 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012966117529756502, + 0.013293538975678752, + 0.01314568560822162 + ], + [ + 0.012795588516489282, + 0.012874217947793667, + 0.01289509687868308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.734757970815448, + "scoreError" : 0.10371285218767395, + "scoreConfidence" : [ + 3.631045118627774, + 3.838470823003122 + ], + "scorePercentiles" : { + "0.0" : 3.6964419098300074, + "50.0" : 3.7301802576484198, + "90.0" : 3.8028869977186313, + "95.0" : 3.8028869977186313, + "99.0" : 3.8028869977186313, + "99.9" : 3.8028869977186313, + "99.99" : 3.8028869977186313, + "99.999" : 3.8028869977186313, + "99.9999" : 3.8028869977186313, + "100.0" : 3.8028869977186313 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.726333251117735, + 3.7340272641791046, + 3.8028869977186313 + ], + [ + 3.6964419098300074, + 3.7393437959641256, + 3.709514606083086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.915910361825667, + "scoreError" : 0.07793360653432067, + "scoreConfidence" : [ + 2.837976755291346, + 2.993843968359988 + ], + "scorePercentiles" : { + "0.0" : 2.867956468597648, + "50.0" : 2.8936321148726853, + "90.0" : 2.9790791128984213, + "95.0" : 2.9790791128984213, + "99.0" : 2.9790791128984213, + "99.9" : 2.9790791128984213, + "99.99" : 2.9790791128984213, + "99.999" : 2.9790791128984213, + "99.9999" : 2.9790791128984213, + "100.0" : 2.9790791128984213 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.896652921227918, + 2.89269080075188, + 2.8936321148726853 + ], + [ + 2.9790791128984213, + 2.9724285346210997, + 2.977471262578148 + ], + [ + 2.867956468597648, + 2.8722168515221136, + 2.891065189361087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1781156711732394, + "scoreError" : 0.006079830536500371, + "scoreConfidence" : [ + 0.17203584063673902, + 0.18419550170973978 + ], + "scorePercentiles" : { + "0.0" : 0.17460855640528697, + "50.0" : 0.17648928387631924, + "90.0" : 0.1839968523827047, + "95.0" : 0.1839968523827047, + "99.0" : 0.1839968523827047, + "99.9" : 0.1839968523827047, + "99.99" : 0.1839968523827047, + "99.999" : 0.1839968523827047, + "99.9999" : 0.1839968523827047, + "100.0" : 0.1839968523827047 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17637950940966896, + 0.17687212596614726, + 0.17648928387631924 + ], + [ + 0.17460855640528697, + 0.17498917958633722, + 0.17535292089989304 + ], + [ + 0.1825232611473106, + 0.18182935088548674, + 0.1839968523827047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33701370251603385, + "scoreError" : 0.009438468960818618, + "scoreConfidence" : [ + 0.32757523355521523, + 0.3464521714768525 + ], + "scorePercentiles" : { + "0.0" : 0.3287976433010028, + "50.0" : 0.3379593185197702, + "90.0" : 0.34396548885602257, + "95.0" : 0.34396548885602257, + "99.0" : 0.34396548885602257, + "99.9" : 0.34396548885602257, + "99.99" : 0.34396548885602257, + "99.999" : 0.34396548885602257, + "99.9999" : 0.34396548885602257, + "100.0" : 0.34396548885602257 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3379593185197702, + 0.33675483223329744, + 0.3381346030092984 + ], + [ + 0.3313426720453265, + 0.33083449103480217, + 0.3287976433010028 + ], + [ + 0.34284380513558915, + 0.34396548885602257, + 0.3424904685091955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16854884601881842, + "scoreError" : 0.009004225213796735, + "scoreConfidence" : [ + 0.1595446208050217, + 0.17755307123261516 + ], + "scorePercentiles" : { + "0.0" : 0.1625799294249622, + "50.0" : 0.16720458142723382, + "90.0" : 0.17602810589684914, + "95.0" : 0.17602810589684914, + "99.0" : 0.17602810589684914, + "99.9" : 0.17602810589684914, + "99.99" : 0.17602810589684914, + "99.999" : 0.17602810589684914, + "99.9999" : 0.17602810589684914, + "100.0" : 0.17602810589684914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16455403246560915, + 0.16276767064893635, + 0.1625799294249622 + ], + [ + 0.17602810589684914, + 0.17495130307907628, + 0.1749156841460855 + ], + [ + 0.1674244847647748, + 0.16720458142723382, + 0.16651382231583856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.391641101994612, + "scoreError" : 0.005342483206538888, + "scoreConfidence" : [ + 0.3862986187880731, + 0.3969835852011509 + ], + "scorePercentiles" : { + "0.0" : 0.38694450398545116, + "50.0" : 0.39131360545468774, + "90.0" : 0.3956067646965741, + "95.0" : 0.3956067646965741, + "99.0" : 0.3956067646965741, + "99.9" : 0.3956067646965741, + "99.99" : 0.3956067646965741, + "99.999" : 0.3956067646965741, + "99.9999" : 0.3956067646965741, + "100.0" : 0.3956067646965741 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39131360545468774, + 0.3917293123114889, + 0.39113433987797247 + ], + [ + 0.3896956932818954, + 0.3879598262792412, + 0.38694450398545116 + ], + [ + 0.3956067646965741, + 0.3949321541347445, + 0.3954537179294527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1615410805047081, + "scoreError" : 0.0036366686572976447, + "scoreConfidence" : [ + 0.15790441184741047, + 0.16517774916200575 + ], + "scorePercentiles" : { + "0.0" : 0.158518118710966, + "50.0" : 0.16221693251901959, + "90.0" : 0.16381021045734503, + "95.0" : 0.16381021045734503, + "99.0" : 0.16381021045734503, + "99.9" : 0.16381021045734503, + "99.99" : 0.16381021045734503, + "99.999" : 0.16381021045734503, + "99.9999" : 0.16381021045734503, + "100.0" : 0.16381021045734503 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1627364314819938, + 0.16221693251901959, + 0.16200593401590876 + ], + [ + 0.15881188489574236, + 0.15897466935330026, + 0.158518118710966 + ], + [ + 0.16381021045734503, + 0.1636706063666121, + 0.16312493674148507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048394316920121444, + "scoreError" : 9.371383005411213E-4, + "scoreConfidence" : [ + 0.04745717861958032, + 0.04933145522066257 + ], + "scorePercentiles" : { + "0.0" : 0.047463494195318284, + "50.0" : 0.04846126208487398, + "90.0" : 0.04896047807333206, + "95.0" : 0.04896047807333206, + "99.0" : 0.04896047807333206, + "99.9" : 0.04896047807333206, + "99.99" : 0.04896047807333206, + "99.999" : 0.04896047807333206, + "99.9999" : 0.04896047807333206, + "100.0" : 0.04896047807333206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04894498875750071, + 0.04896047807333206, + 0.04881620786612839 + ], + [ + 0.048715233678231475, + 0.04844254924358024, + 0.04846126208487398 + ], + [ + 0.04815959974379596, + 0.04758503863833189, + 0.047463494195318284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9323662.9841781, + "scoreError" : 138556.00966994776, + "scoreConfidence" : [ + 9185106.974508151, + 9462218.993848048 + ], + "scorePercentiles" : { + "0.0" : 9180911.86055046, + "50.0" : 9361837.434050515, + "90.0" : 9421453.089453861, + "95.0" : 9421453.089453861, + "99.0" : 9421453.089453861, + "99.9" : 9421453.089453861, + "99.99" : 9421453.089453861, + "99.999" : 9421453.089453861, + "99.9999" : 9421453.089453861, + "100.0" : 9421453.089453861 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9370760.92977528, + 9361837.434050515, + 9305615.085581396 + ], + [ + 9421453.089453861, + 9368289.597378276, + 9369009.029026218 + ], + [ + 9180911.86055046, + 9338604.646125117, + 9196485.185661765 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json b/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json new file mode 100644 index 0000000000..1158c0d2e2 --- /dev/null +++ b/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.410055263437113, + "scoreError" : 0.044175216312736174, + "scoreConfidence" : [ + 3.3658800471243766, + 3.454230479749849 + ], + "scorePercentiles" : { + "0.0" : 3.4022423915588753, + "50.0" : 3.4096308464644025, + "90.0" : 3.4187169692607715, + "95.0" : 3.4187169692607715, + "99.0" : 3.4187169692607715, + "99.9" : 3.4187169692607715, + "99.99" : 3.4187169692607715, + "99.999" : 3.4187169692607715, + "99.9999" : 3.4187169692607715, + "100.0" : 3.4187169692607715 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411004350188826, + 3.4187169692607715 + ], + [ + 3.4022423915588753, + 3.4082573427399785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7222751587969176, + "scoreError" : 0.020331821722778594, + "scoreConfidence" : [ + 1.701943337074139, + 1.7426069805196962 + ], + "scorePercentiles" : { + "0.0" : 1.7197942687239545, + "50.0" : 1.7213092858607992, + "90.0" : 1.7266877947421173, + "95.0" : 1.7266877947421173, + "99.0" : 1.7266877947421173, + "99.9" : 1.7266877947421173, + "99.99" : 1.7266877947421173, + "99.999" : 1.7266877947421173, + "99.9999" : 1.7266877947421173, + "100.0" : 1.7266877947421173 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7202588154580092, + 1.7197942687239545 + ], + [ + 1.722359756263589, + 1.7266877947421173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674677837492119, + "scoreError" : 0.0032325394754821957, + "scoreConfidence" : [ + 0.8642352442737297, + 0.870700323224694 + ], + "scorePercentiles" : { + "0.0" : 0.8667362217669433, + "50.0" : 0.8676693253640158, + "90.0" : 0.8677962625018725, + "95.0" : 0.8677962625018725, + "99.0" : 0.8677962625018725, + "99.9" : 0.8677962625018725, + "99.99" : 0.8677962625018725, + "99.999" : 0.8677962625018725, + "99.9999" : 0.8677962625018725, + "100.0" : 0.8677962625018725 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677962625018725, + 0.8677842124557796 + ], + [ + 0.8667362217669433, + 0.867554438272252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.2586900425068, + "scoreError" : 0.13636078587224731, + "scoreConfidence" : [ + 16.12232925663455, + 16.39505082837905 + ], + "scorePercentiles" : { + "0.0" : 16.135512844186522, + "50.0" : 16.273833465528117, + "90.0" : 16.34983499696942, + "95.0" : 16.34983499696942, + "99.0" : 16.34983499696942, + "99.9" : 16.34983499696942, + "99.99" : 16.34983499696942, + "99.999" : 16.34983499696942, + "99.9999" : 16.34983499696942, + "100.0" : 16.34983499696942 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.303901131535557, + 16.273833465528117, + 16.24110655705213 + ], + [ + 16.176868280921056, + 16.135512844186522, + 16.17233484324961 + ], + [ + 16.33151180545686, + 16.34983499696942, + 16.343306457661935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2672.9855538524826, + "scoreError" : 14.616387865211415, + "scoreConfidence" : [ + 2658.369165987271, + 2687.601941717694 + ], + "scorePercentiles" : { + "0.0" : 2661.079080442354, + "50.0" : 2671.607818200002, + "90.0" : 2687.040356143568, + "95.0" : 2687.040356143568, + "99.0" : 2687.040356143568, + "99.9" : 2687.040356143568, + "99.99" : 2687.040356143568, + "99.999" : 2687.040356143568, + "99.9999" : 2687.040356143568, + "100.0" : 2687.040356143568 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2661.079080442354, + 2663.538227857365, + 2666.4540926531217 + ], + [ + 2671.607818200002, + 2671.283841175784, + 2674.8653706116493 + ], + [ + 2683.025033592116, + 2677.9761639963845, + 2687.040356143568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70775.80766872116, + "scoreError" : 742.2818518809171, + "scoreConfidence" : [ + 70033.52581684024, + 71518.08952060208 + ], + "scorePercentiles" : { + "0.0" : 70142.75578283423, + "50.0" : 70954.80008396578, + "90.0" : 71195.13156890463, + "95.0" : 71195.13156890463, + "99.0" : 71195.13156890463, + "99.9" : 71195.13156890463, + "99.99" : 71195.13156890463, + "99.999" : 71195.13156890463, + "99.9999" : 71195.13156890463, + "100.0" : 71195.13156890463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70142.75578283423, + 70226.43035099976, + 70232.69147423247 + ], + [ + 70950.31244706645, + 70954.80008396578, + 70973.0529781649 + ], + [ + 71173.35377017567, + 71133.74056214653, + 71195.13156890463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.3389211609874, + "scoreError" : 5.666682962041467, + "scoreConfidence" : [ + 348.67223819894593, + 360.0056041230289 + ], + "scorePercentiles" : { + "0.0" : 349.8278019785032, + "50.0" : 356.1210976315482, + "90.0" : 357.67017227481824, + "95.0" : 357.67017227481824, + "99.0" : 357.67017227481824, + "99.9" : 357.67017227481824, + "99.99" : 357.67017227481824, + "99.999" : 357.67017227481824, + "99.9999" : 357.67017227481824, + "100.0" : 357.67017227481824 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.8548042520111, + 349.98260316975643, + 349.8278019785032 + ], + [ + 356.2227738236618, + 356.0560147982399, + 356.1210976315482 + ], + [ + 356.57428086763986, + 356.74074165270775, + 357.67017227481824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.66346338200165, + "scoreError" : 0.9408238124872885, + "scoreConfidence" : [ + 106.72263956951436, + 108.60428719448895 + ], + "scorePercentiles" : { + "0.0" : 106.93014223867108, + "50.0" : 107.65326652205152, + "90.0" : 108.490211199469, + "95.0" : 108.490211199469, + "99.0" : 108.490211199469, + "99.9" : 108.490211199469, + "99.99" : 108.490211199469, + "99.999" : 108.490211199469, + "99.9999" : 108.490211199469, + "100.0" : 108.490211199469 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.65326652205152, + 107.71425907277816, + 107.6000277167281 + ], + [ + 107.89863468304631, + 108.45276519843372, + 108.490211199469 + ], + [ + 106.93014223867108, + 107.14562496679335, + 107.08623884004336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061783570798361755, + "scoreError" : 2.919212182128583E-4, + "scoreConfidence" : [ + 0.0614916495801489, + 0.06207549201657461 + ], + "scorePercentiles" : { + "0.0" : 0.06148453356082265, + "50.0" : 0.061730150100618525, + "90.0" : 0.06201947467161161, + "95.0" : 0.06201947467161161, + "99.0" : 0.06201947467161161, + "99.9" : 0.06201947467161161, + "99.99" : 0.06201947467161161, + "99.999" : 0.06201947467161161, + "99.9999" : 0.06201947467161161, + "100.0" : 0.06201947467161161 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06167753843070015, + 0.0616939214339916, + 0.06148453356082265 + ], + [ + 0.061730150100618525, + 0.06168849578981784, + 0.06183821364878737 + ], + [ + 0.0619587773110285, + 0.06201947467161161, + 0.061961032237877495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7475232240008607E-4, + "scoreError" : 1.2599051816234049E-5, + "scoreConfidence" : [ + 3.62153270583852E-4, + 3.873513742163201E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6686498471328336E-4, + "50.0" : 3.731783481611584E-4, + "90.0" : 3.8423162303683427E-4, + "95.0" : 3.8423162303683427E-4, + "99.0" : 3.8423162303683427E-4, + "99.9" : 3.8423162303683427E-4, + "99.99" : 3.8423162303683427E-4, + "99.999" : 3.8423162303683427E-4, + "99.9999" : 3.8423162303683427E-4, + "100.0" : 3.8423162303683427E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7298764866361634E-4, + 3.731783481611584E-4, + 3.735189434301613E-4 + ], + [ + 3.8423162303683427E-4, + 3.84173949945471E-4, + 3.8379800995952856E-4 + ], + [ + 3.6686498471328336E-4, + 3.6702205385880045E-4, + 3.6699533983192086E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014140536648291398, + "scoreError" : 2.9374731934949075E-5, + "scoreConfidence" : [ + 0.01411116191635645, + 0.014169911380226347 + ], + "scorePercentiles" : { + "0.0" : 0.014115446296996832, + "50.0" : 0.014134114425519104, + "90.0" : 0.014178302476496185, + "95.0" : 0.014178302476496185, + "99.0" : 0.014178302476496185, + "99.9" : 0.014178302476496185, + "99.99" : 0.014178302476496185, + "99.999" : 0.014178302476496185, + "99.9999" : 0.014178302476496185, + "100.0" : 0.014178302476496185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014115446296996832, + 0.01413876408802675, + 0.014134114425519104 + ], + [ + 0.014178302476496185, + 0.014151227157331673, + 0.014148102450991488 + ], + [ + 0.01413344815772737, + 0.014132977418616285, + 0.014132447362916902 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9932611928230904, + "scoreError" : 0.024257323453275522, + "scoreConfidence" : [ + 0.969003869369815, + 1.017518516276366 + ], + "scorePercentiles" : { + "0.0" : 0.9739963147643164, + "50.0" : 0.9965134862495018, + "90.0" : 1.0099352177337912, + "95.0" : 1.0099352177337912, + "99.0" : 1.0099352177337912, + "99.9" : 1.0099352177337912, + "99.99" : 1.0099352177337912, + "99.999" : 1.0099352177337912, + "99.9999" : 1.0099352177337912, + "100.0" : 1.0099352177337912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9739963147643164, + 0.9766263461914062, + 0.9746201055452685 + ], + [ + 1.0033032107744784, + 1.0099352177337912, + 1.0079804976312872 + ], + [ + 0.9952722825437899, + 0.9965134862495018, + 1.001103273973974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012913305599668646, + "scoreError" : 1.3451547784434068E-4, + "scoreConfidence" : [ + 0.012778790121824306, + 0.013047821077512987 + ], + "scorePercentiles" : { + "0.0" : 0.012815936662497309, + "50.0" : 0.012931272408566084, + "90.0" : 0.012941176037145452, + "95.0" : 0.012941176037145452, + "99.0" : 0.012941176037145452, + "99.9" : 0.012941176037145452, + "99.99" : 0.012941176037145452, + "99.999" : 0.012941176037145452, + "99.9999" : 0.012941176037145452, + "100.0" : 0.012941176037145452 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012815936662497309, + 0.012941176037145452, + 0.012925974531250405 + ], + [ + 0.012934201549986549, + 0.012932876422251133, + 0.012929668394881038 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.621569585832803, + "scoreError" : 0.06695805853852926, + "scoreConfidence" : [ + 3.554611527294274, + 3.6885276443713324 + ], + "scorePercentiles" : { + "0.0" : 3.5804726342161777, + "50.0" : 3.619984607755292, + "90.0" : 3.646612061953353, + "95.0" : 3.646612061953353, + "99.0" : 3.646612061953353, + "99.9" : 3.646612061953353, + "99.99" : 3.646612061953353, + "99.999" : 3.646612061953353, + "99.9999" : 3.646612061953353, + "100.0" : 3.646612061953353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6192033798842256, + 3.64428997596504, + 3.646612061953353 + ], + [ + 3.5804726342161777, + 3.620765835626358, + 3.6180736273516643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.817315562985054, + "scoreError" : 0.06309278853592672, + "scoreConfidence" : [ + 2.754222774449127, + 2.880408351520981 + ], + "scorePercentiles" : { + "0.0" : 2.7663685322268328, + "50.0" : 2.8407819358136894, + "90.0" : 2.8458255546385884, + "95.0" : 2.8458255546385884, + "99.0" : 2.8458255546385884, + "99.9" : 2.8458255546385884, + "99.99" : 2.8458255546385884, + "99.999" : 2.8458255546385884, + "99.9999" : 2.8458255546385884, + "100.0" : 2.8458255546385884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8458255546385884, + 2.842856151506538, + 2.845687959601707 + ], + [ + 2.7663685322268328, + 2.7678247785773595, + 2.768014618045945 + ], + [ + 2.8407819358136894, + 2.84237150951975, + 2.8361090269350724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17466291628472425, + "scoreError" : 0.0010892299205336289, + "scoreConfidence" : [ + 0.17357368636419063, + 0.17575214620525786 + ], + "scorePercentiles" : { + "0.0" : 0.1736334279959718, + "50.0" : 0.17477649892514463, + "90.0" : 0.17539436958046864, + "95.0" : 0.17539436958046864, + "99.0" : 0.17539436958046864, + "99.9" : 0.17539436958046864, + "99.99" : 0.17539436958046864, + "99.999" : 0.17539436958046864, + "99.9999" : 0.17539436958046864, + "100.0" : 0.17539436958046864 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17439916790777976, + 0.17477649892514463, + 0.1743388813479542 + ], + [ + 0.17520865829770832, + 0.17515058082143795, + 0.17524262767020066 + ], + [ + 0.17539436958046864, + 0.17382203401585206, + 0.1736334279959718 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3274353774579488, + "scoreError" : 0.016014656619373645, + "scoreConfidence" : [ + 0.3114207208385752, + 0.34345003407732244 + ], + "scorePercentiles" : { + "0.0" : 0.31721999308485327, + "50.0" : 0.32569945065789474, + "90.0" : 0.33981387947262903, + "95.0" : 0.33981387947262903, + "99.0" : 0.33981387947262903, + "99.9" : 0.33981387947262903, + "99.99" : 0.33981387947262903, + "99.999" : 0.33981387947262903, + "99.9999" : 0.33981387947262903, + "100.0" : 0.33981387947262903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31730455720903666, + 0.31721999308485327, + 0.31775410793721404 + ], + [ + 0.3257833393927548, + 0.3255280544596354, + 0.32569945065789474 + ], + [ + 0.33981387947262903, + 0.3387748820759511, + 0.33904013283157036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16641532323284058, + "scoreError" : 0.017350118915669347, + "scoreConfidence" : [ + 0.14906520431717124, + 0.18376544214850993 + ], + "scorePercentiles" : { + "0.0" : 0.15270957588760786, + "50.0" : 0.17205132084853073, + "90.0" : 0.174647807174418, + "95.0" : 0.174647807174418, + "99.0" : 0.174647807174418, + "99.9" : 0.174647807174418, + "99.99" : 0.174647807174418, + "99.999" : 0.174647807174418, + "99.9999" : 0.174647807174418, + "100.0" : 0.174647807174418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17205132084853073, + 0.17206169996558843, + 0.17200997505934157 + ], + [ + 0.1527471536910599, + 0.1527100326945102, + 0.15270957588760786 + ], + [ + 0.17458898942020637, + 0.174647807174418, + 0.17421135435430204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38986128538799675, + "scoreError" : 0.00979797094307402, + "scoreConfidence" : [ + 0.38006331444492275, + 0.39965925633107074 + ], + "scorePercentiles" : { + "0.0" : 0.3846523111393184, + "50.0" : 0.3872767771280304, + "90.0" : 0.3985590201665936, + "95.0" : 0.3985590201665936, + "99.0" : 0.3985590201665936, + "99.9" : 0.3985590201665936, + "99.99" : 0.3985590201665936, + "99.999" : 0.3985590201665936, + "99.9999" : 0.3985590201665936, + "100.0" : 0.3985590201665936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3872767771280304, + 0.38737736459422817, + 0.3867428934565705 + ], + [ + 0.3985590201665936, + 0.39697225658939345, + 0.39697280100035726 + ], + [ + 0.38533757949291, + 0.384860564924569, + 0.3846523111393184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15609274809169155, + "scoreError" : 0.0036412484112455373, + "scoreConfidence" : [ + 0.15245149968044602, + 0.15973399650293707 + ], + "scorePercentiles" : { + "0.0" : 0.15436526028433387, + "50.0" : 0.15480616190903743, + "90.0" : 0.15913727148313175, + "95.0" : 0.15913727148313175, + "99.0" : 0.15913727148313175, + "99.9" : 0.15913727148313175, + "99.99" : 0.15913727148313175, + "99.999" : 0.15913727148313175, + "99.9999" : 0.15913727148313175, + "100.0" : 0.15913727148313175 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15436526028433387, + 0.1544817916550808, + 0.15470838450471078 + ], + [ + 0.15882465640683566, + 0.15913727148313175, + 0.15895154913928758 + ], + [ + 0.15495011549784624, + 0.1546095419449598, + 0.15480616190903743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04758667191926049, + "scoreError" : 0.0023739868350441734, + "scoreConfidence" : [ + 0.04521268508421632, + 0.049960658754304665 + ], + "scorePercentiles" : { + "0.0" : 0.04611377217810733, + "50.0" : 0.04710306553369477, + "90.0" : 0.04951102378960189, + "95.0" : 0.04951102378960189, + "99.0" : 0.04951102378960189, + "99.9" : 0.04951102378960189, + "99.99" : 0.04951102378960189, + "99.999" : 0.04951102378960189, + "99.9999" : 0.04951102378960189, + "100.0" : 0.04951102378960189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04951102378960189, + 0.049440907275109386, + 0.0491906721874339 + ], + [ + 0.047310086098574095, + 0.04710306553369477, + 0.047064187063192126 + ], + [ + 0.04642925747502136, + 0.04611377217810733, + 0.04611707567260955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9395685.427692974, + "scoreError" : 239163.15498882558, + "scoreConfidence" : [ + 9156522.272704149, + 9634848.5826818 + ], + "scorePercentiles" : { + "0.0" : 9199383.375919119, + "50.0" : 9405962.368421054, + "90.0" : 9559300.52244508, + "95.0" : 9559300.52244508, + "99.0" : 9559300.52244508, + "99.9" : 9559300.52244508, + "99.99" : 9559300.52244508, + "99.999" : 9559300.52244508, + "99.9999" : 9559300.52244508, + "100.0" : 9559300.52244508 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9410055.000940735, + 9405962.368421054, + 9405348.242481204 + ], + [ + 9268332.786839666, + 9214277.049723757, + 9199383.375919119 + ], + [ + 9559300.52244508, + 9544774.91793893, + 9553734.58452722 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json b/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json new file mode 100644 index 0000000000..863d559e57 --- /dev/null +++ b/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41547431211834, + "scoreError" : 0.02013445470791421, + "scoreConfidence" : [ + 3.395339857410426, + 3.4356087668262543 + ], + "scorePercentiles" : { + "0.0" : 3.411373024163593, + "50.0" : 3.415796403863652, + "90.0" : 3.418931416582463, + "95.0" : 3.418931416582463, + "99.0" : 3.418931416582463, + "99.9" : 3.418931416582463, + "99.99" : 3.418931416582463, + "99.999" : 3.418931416582463, + "99.9999" : 3.418931416582463, + "100.0" : 3.418931416582463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4160661756130946, + 3.418931416582463 + ], + [ + 3.411373024163593, + 3.4155266321142097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7257794060486682, + "scoreError" : 0.014829676059242635, + "scoreConfidence" : [ + 1.7109497299894256, + 1.7406090821079108 + ], + "scorePercentiles" : { + "0.0" : 1.7229459392720967, + "50.0" : 1.7260640883842262, + "90.0" : 1.728043508154123, + "95.0" : 1.728043508154123, + "99.0" : 1.728043508154123, + "99.9" : 1.728043508154123, + "99.99" : 1.728043508154123, + "99.999" : 1.728043508154123, + "99.9999" : 1.728043508154123, + "100.0" : 1.728043508154123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7229459392720967, + 1.7249498535300087 + ], + [ + 1.728043508154123, + 1.727178323238444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670239652165881, + "scoreError" : 0.0038232692313808036, + "scoreConfidence" : [ + 0.8632006959852073, + 0.8708472344479689 + ], + "scorePercentiles" : { + "0.0" : 0.8664786283013596, + "50.0" : 0.8669751735844602, + "90.0" : 0.8676668853960727, + "95.0" : 0.8676668853960727, + "99.0" : 0.8676668853960727, + "99.9" : 0.8676668853960727, + "99.99" : 0.8676668853960727, + "99.999" : 0.8676668853960727, + "99.9999" : 0.8676668853960727, + "100.0" : 0.8676668853960727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8664786283013596, + 0.8665661091157533 + ], + [ + 0.867384238053167, + 0.8676668853960727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.257614896779337, + "scoreError" : 0.2156823417456936, + "scoreConfidence" : [ + 16.041932555033643, + 16.47329723852503 + ], + "scorePercentiles" : { + "0.0" : 16.046117112775594, + "50.0" : 16.351278502311153, + "90.0" : 16.358823560420063, + "95.0" : 16.358823560420063, + "99.0" : 16.358823560420063, + "99.9" : 16.358823560420063, + "99.99" : 16.358823560420063, + "99.999" : 16.358823560420063, + "99.9999" : 16.358823560420063, + "100.0" : 16.358823560420063 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.132712758895906, + 16.105581835399015, + 16.046117112775594 + ], + [ + 16.356463835561264, + 16.358823560420063, + 16.351278502311153 + ], + [ + 16.254642767027285, + 16.35464668287753, + 16.3582670157462 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2657.7695720704037, + "scoreError" : 148.2972269158939, + "scoreConfidence" : [ + 2509.4723451545096, + 2806.0667989862977 + ], + "scorePercentiles" : { + "0.0" : 2539.768121859389, + "50.0" : 2706.007591520502, + "90.0" : 2728.2643986587595, + "95.0" : 2728.2643986587595, + "99.0" : 2728.2643986587595, + "99.9" : 2728.2643986587595, + "99.99" : 2728.2643986587595, + "99.999" : 2728.2643986587595, + "99.9999" : 2728.2643986587595, + "100.0" : 2728.2643986587595 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2702.1623484921656, + 2707.919946005747, + 2706.007591520502 + ], + [ + 2540.1588945402596, + 2539.768121859389, + 2542.476993406105 + ], + [ + 2725.722525637147, + 2728.2643986587595, + 2727.4453285135583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69187.62949561818, + "scoreError" : 1950.2487427776907, + "scoreConfidence" : [ + 67237.38075284049, + 71137.87823839588 + ], + "scorePercentiles" : { + "0.0" : 67811.69749602833, + "50.0" : 69182.75188864459, + "90.0" : 70554.04343863564, + "95.0" : 70554.04343863564, + "99.0" : 70554.04343863564, + "99.9" : 70554.04343863564, + "99.99" : 70554.04343863564, + "99.999" : 70554.04343863564, + "99.9999" : 70554.04343863564, + "100.0" : 70554.04343863564 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70489.37946132944, + 70554.04343863564, + 70515.75586998963 + ], + [ + 67864.5403327218, + 67811.69749602833, + 67845.50582086251 + ], + [ + 69182.75188864459, + 69171.5162798034, + 69253.47487254828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.14686595143564, + "scoreError" : 12.402276547808718, + "scoreConfidence" : [ + 338.74458940362695, + 363.54914249924434 + ], + "scorePercentiles" : { + "0.0" : 341.4050740261924, + "50.0" : 350.9959831827741, + "90.0" : 361.14535751562823, + "95.0" : 361.14535751562823, + "99.0" : 361.14535751562823, + "99.9" : 361.14535751562823, + "99.99" : 361.14535751562823, + "99.999" : 361.14535751562823, + "99.9999" : 361.14535751562823, + "100.0" : 361.14535751562823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.4050740261924, + 341.75306137898, + 345.9414385143761 + ], + [ + 349.9015669158507, + 350.9959831827741, + 351.72342119398223 + ], + [ + 360.81338018128395, + 361.14535751562823, + 356.64251065385264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.33465576346994, + "scoreError" : 5.16876703445678, + "scoreConfidence" : [ + 100.16588872901316, + 110.50342279792672 + ], + "scorePercentiles" : { + "0.0" : 101.2422526340046, + "50.0" : 105.98517929748999, + "90.0" : 108.60769860695804, + "95.0" : 108.60769860695804, + "99.0" : 108.60769860695804, + "99.9" : 108.60769860695804, + "99.99" : 108.60769860695804, + "99.999" : 108.60769860695804, + "99.9999" : 108.60769860695804, + "100.0" : 108.60769860695804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.47585305815755, + 108.51299893266345, + 108.60769860695804 + ], + [ + 101.2422526340046, + 101.66996889742603, + 101.63790810097589 + ], + [ + 105.88856190695395, + 105.98517929748999, + 105.99148043659996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0613835700776904, + "scoreError" : 5.30970211986948E-4, + "scoreConfidence" : [ + 0.060852599865703454, + 0.06191454028967735 + ], + "scorePercentiles" : { + "0.0" : 0.06095189772408665, + "50.0" : 0.061378639564216665, + "90.0" : 0.06184695769116592, + "95.0" : 0.06184695769116592, + "99.0" : 0.06184695769116592, + "99.9" : 0.06184695769116592, + "99.99" : 0.06184695769116592, + "99.999" : 0.06184695769116592, + "99.9999" : 0.06184695769116592, + "100.0" : 0.06184695769116592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06144970979555971, + 0.06122663911100226, + 0.061378639564216665 + ], + [ + 0.061581722824346624, + 0.06179943338112424, + 0.06184695769116592 + ], + [ + 0.06095189772408665, + 0.06105782843047466, + 0.06115930217723686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6792774673077264E-4, + "scoreError" : 9.52400144527695E-6, + "scoreConfidence" : [ + 3.584037452854957E-4, + 3.774517481760496E-4 + ], + "scorePercentiles" : { + "0.0" : 3.601947262437733E-4, + "50.0" : 3.710066787160918E-4, + "90.0" : 3.7284325731862846E-4, + "95.0" : 3.7284325731862846E-4, + "99.0" : 3.7284325731862846E-4, + "99.9" : 3.7284325731862846E-4, + "99.99" : 3.7284325731862846E-4, + "99.999" : 3.7284325731862846E-4, + "99.9999" : 3.7284325731862846E-4, + "100.0" : 3.7284325731862846E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.606764144071223E-4, + 3.601947262437733E-4, + 3.603632293866587E-4 + ], + [ + 3.716483250039227E-4, + 3.721081112498685E-4, + 3.7284325731862846E-4 + ], + [ + 3.70884520477737E-4, + 3.71624457773151E-4, + 3.710066787160918E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01402845854457803, + "scoreError" : 4.044676667384548E-5, + "scoreConfidence" : [ + 0.013988011777904185, + 0.014068905311251876 + ], + "scorePercentiles" : { + "0.0" : 0.013993197164454371, + "50.0" : 0.01404240319713314, + "90.0" : 0.014049538132783347, + "95.0" : 0.014049538132783347, + "99.0" : 0.014049538132783347, + "99.9" : 0.014049538132783347, + "99.99" : 0.014049538132783347, + "99.999" : 0.014049538132783347, + "99.9999" : 0.014049538132783347, + "100.0" : 0.014049538132783347 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014000710592155463, + 0.013993197164454371, + 0.013996113428682996 + ], + [ + 0.014042536027781405, + 0.014049538132783347, + 0.01404240319713314 + ], + [ + 0.0140474361495304, + 0.014043828995948403, + 0.014040363212732769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9794412564438721, + "scoreError" : 0.01637443287226072, + "scoreConfidence" : [ + 0.9630668235716114, + 0.9958156893161328 + ], + "scorePercentiles" : { + "0.0" : 0.9663152830225142, + "50.0" : 0.9845775188539924, + "90.0" : 0.9877359903209877, + "95.0" : 0.9877359903209877, + "99.0" : 0.9877359903209877, + "99.9" : 0.9877359903209877, + "99.99" : 0.9877359903209877, + "99.999" : 0.9877359903209877, + "99.9999" : 0.9877359903209877, + "100.0" : 0.9877359903209877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9665899604678136, + 0.9669146041767379, + 0.9663152830225142 + ], + [ + 0.9829151665028504, + 0.9853623369790128, + 0.9845775188539924 + ], + [ + 0.9871915410661402, + 0.9873689066047981, + 0.9877359903209877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013066821965947481, + "scoreError" : 1.4899924544193566E-4, + "scoreConfidence" : [ + 0.012917822720505545, + 0.013215821211389417 + ], + "scorePercentiles" : { + "0.0" : 0.013011505698910181, + "50.0" : 0.01306633020899141, + "90.0" : 0.013123710692154048, + "95.0" : 0.013123710692154048, + "99.0" : 0.013123710692154048, + "99.9" : 0.013123710692154048, + "99.99" : 0.013123710692154048, + "99.999" : 0.013123710692154048, + "99.9999" : 0.013123710692154048, + "100.0" : 0.013123710692154048 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0131095357868546, + 0.013123710692154048, + 0.013111727565707873 + ], + [ + 0.01302312463112822, + 0.013011505698910181, + 0.01302132742092996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6016004776114623, + "scoreError" : 0.04408562358601525, + "scoreConfidence" : [ + 3.557514854025447, + 3.6456861011974775 + ], + "scorePercentiles" : { + "0.0" : 3.5702578772305498, + "50.0" : 3.6067730656092287, + "90.0" : 3.613936494219653, + "95.0" : 3.613936494219653, + "99.0" : 3.613936494219653, + "99.9" : 3.613936494219653, + "99.99" : 3.613936494219653, + "99.999" : 3.613936494219653, + "99.9999" : 3.613936494219653, + "100.0" : 3.613936494219653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5702578772305498, + 3.613936494219653, + 3.6067297692862295 + ], + [ + 3.608194422077922, + 3.606816361932228, + 3.60366794092219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7855132821873965, + "scoreError" : 0.026726483277009803, + "scoreConfidence" : [ + 2.7587867989103865, + 2.8122397654644065 + ], + "scorePercentiles" : { + "0.0" : 2.759536437637969, + "50.0" : 2.786476934522151, + "90.0" : 2.8075433060078607, + "95.0" : 2.8075433060078607, + "99.0" : 2.8075433060078607, + "99.9" : 2.8075433060078607, + "99.99" : 2.8075433060078607, + "99.999" : 2.8075433060078607, + "99.9999" : 2.8075433060078607, + "100.0" : 2.8075433060078607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.786476934522151, + 2.7926873155543146, + 2.7885715913019236 + ], + [ + 2.759536437637969, + 2.7736968960066557, + 2.7713081041839844 + ], + [ + 2.8075433060078607, + 2.806818850687623, + 2.7829801037840847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1761613666321471, + "scoreError" : 0.002516338259768568, + "scoreConfidence" : [ + 0.17364502837237852, + 0.17867770489191567 + ], + "scorePercentiles" : { + "0.0" : 0.17409059075953554, + "50.0" : 0.1760895962564491, + "90.0" : 0.17804075546574563, + "95.0" : 0.17804075546574563, + "99.0" : 0.17804075546574563, + "99.9" : 0.17804075546574563, + "99.99" : 0.17804075546574563, + "99.999" : 0.17804075546574563, + "99.9999" : 0.17804075546574563, + "100.0" : 0.17804075546574563 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17804075546574563, + 0.1777888090954345, + 0.17770007303290924 + ], + [ + 0.17501571777594988, + 0.17409059075953554, + 0.1742418977227188 + ], + [ + 0.1764508362211949, + 0.1760895962564491, + 0.176034023359386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32730021817444466, + "scoreError" : 0.017163920712541466, + "scoreConfidence" : [ + 0.3101362974619032, + 0.3444641388869861 + ], + "scorePercentiles" : { + "0.0" : 0.31596479819905215, + "50.0" : 0.3256441752906314, + "90.0" : 0.3405568089562404, + "95.0" : 0.3405568089562404, + "99.0" : 0.3405568089562404, + "99.9" : 0.3405568089562404, + "99.99" : 0.3405568089562404, + "99.999" : 0.3405568089562404, + "99.9999" : 0.3405568089562404, + "100.0" : 0.3405568089562404 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3388611753244553, + 0.3405568089562404, + 0.33991513701563564 + ], + [ + 0.3256005505160681, + 0.3259885275287675, + 0.3256441752906314 + ], + [ + 0.31713970326324803, + 0.316031087475903, + 0.31596479819905215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1652042889286885, + "scoreError" : 0.0017617414374246191, + "scoreConfidence" : [ + 0.16344254749126388, + 0.1669660303661131 + ], + "scorePercentiles" : { + "0.0" : 0.163923576657651, + "50.0" : 0.16483931719579337, + "90.0" : 0.16660534148007464, + "95.0" : 0.16660534148007464, + "99.0" : 0.16660534148007464, + "99.9" : 0.16660534148007464, + "99.99" : 0.16660534148007464, + "99.999" : 0.16660534148007464, + "99.9999" : 0.16660534148007464, + "100.0" : 0.16660534148007464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16660534148007464, + 0.16656146767934177, + 0.1663387481328698 + ], + [ + 0.16394726561962064, + 0.163923576657651, + 0.16483931719579337 + ], + [ + 0.16482515006922469, + 0.16480627729527514, + 0.16499145622834516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39010744239973744, + "scoreError" : 0.01670421567031333, + "scoreConfidence" : [ + 0.3734032267294241, + 0.40681165807005076 + ], + "scorePercentiles" : { + "0.0" : 0.37962961616430035, + "50.0" : 0.38764850711323023, + "90.0" : 0.40918921207905395, + "95.0" : 0.40918921207905395, + "99.0" : 0.40918921207905395, + "99.9" : 0.40918921207905395, + "99.99" : 0.40918921207905395, + "99.999" : 0.40918921207905395, + "99.9999" : 0.40918921207905395, + "100.0" : 0.40918921207905395 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3897532790552654, + 0.3830618254807324, + 0.38492263564280216 + ], + [ + 0.40918921207905395, + 0.3987026886213221, + 0.39790933049498645 + ], + [ + 0.38764850711323023, + 0.38014988694594387, + 0.37962961616430035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15589403072362684, + "scoreError" : 0.0019617589008532423, + "scoreConfidence" : [ + 0.1539322718227736, + 0.15785578962448008 + ], + "scorePercentiles" : { + "0.0" : 0.15429051936310056, + "50.0" : 0.15572938609359183, + "90.0" : 0.15757248833984622, + "95.0" : 0.15757248833984622, + "99.0" : 0.15757248833984622, + "99.9" : 0.15757248833984622, + "99.99" : 0.15757248833984622, + "99.999" : 0.15757248833984622, + "99.9999" : 0.15757248833984622, + "100.0" : 0.15757248833984622 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15757248833984622, + 0.15724325976068054, + 0.15697942648813262 + ], + [ + 0.1552752374578824, + 0.15445985558284292, + 0.15429051936310056 + ], + [ + 0.15580430851445043, + 0.1556917949121141, + 0.15572938609359183 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046893268004107674, + "scoreError" : 0.001162133260808305, + "scoreConfidence" : [ + 0.045731134743299366, + 0.04805540126491598 + ], + "scorePercentiles" : { + "0.0" : 0.04607961999179795, + "50.0" : 0.04681437227603189, + "90.0" : 0.04772420759282237, + "95.0" : 0.04772420759282237, + "99.0" : 0.04772420759282237, + "99.9" : 0.04772420759282237, + "99.99" : 0.04772420759282237, + "99.999" : 0.04772420759282237, + "99.9999" : 0.04772420759282237, + "100.0" : 0.04772420759282237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047255712641233925, + 0.04681437227603189, + 0.04675393894029146 + ], + [ + 0.04772420759282237, + 0.0476040818683385, + 0.0476215452255324 + ], + [ + 0.04608960344652766, + 0.04609633005439292, + 0.04607961999179795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9247386.677157959, + "scoreError" : 103775.56890511974, + "scoreConfidence" : [ + 9143611.10825284, + 9351162.246063078 + ], + "scorePercentiles" : { + "0.0" : 9170927.29422548, + "50.0" : 9251081.91119334, + "90.0" : 9346239.112149533, + "95.0" : 9346239.112149533, + "99.0" : 9346239.112149533, + "99.9" : 9346239.112149533, + "99.99" : 9346239.112149533, + "99.999" : 9346239.112149533, + "99.9999" : 9346239.112149533, + "100.0" : 9346239.112149533 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9251081.91119334, + 9249757.321626617, + 9258786.827012027 + ], + [ + 9170927.29422548, + 9172337.738771768, + 9183301.19651056 + ], + [ + 9346239.112149533, + 9303166.288104089, + 9290882.404828226 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json b/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json new file mode 100644 index 0000000000..1399ed8956 --- /dev/null +++ b/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.405781402066154, + "scoreError" : 0.04629911913002043, + "scoreConfidence" : [ + 3.3594822829361335, + 3.4520805211961743 + ], + "scorePercentiles" : { + "0.0" : 3.396624620926415, + "50.0" : 3.4062908345364202, + "90.0" : 3.4139193182653607, + "95.0" : 3.4139193182653607, + "99.0" : 3.4139193182653607, + "99.9" : 3.4139193182653607, + "99.99" : 3.4139193182653607, + "99.999" : 3.4139193182653607, + "99.9999" : 3.4139193182653607, + "100.0" : 3.4139193182653607 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4049844214875487, + 3.4139193182653607 + ], + [ + 3.396624620926415, + 3.407597247585292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7201965667995456, + "scoreError" : 0.014319793782545227, + "scoreConfidence" : [ + 1.7058767730170004, + 1.7345163605820908 + ], + "scorePercentiles" : { + "0.0" : 1.717273001278032, + "50.0" : 1.7204317124975719, + "90.0" : 1.722649840925006, + "95.0" : 1.722649840925006, + "99.0" : 1.722649840925006, + "99.9" : 1.722649840925006, + "99.99" : 1.722649840925006, + "99.999" : 1.722649840925006, + "99.9999" : 1.722649840925006, + "100.0" : 1.722649840925006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.722649840925006, + 1.717273001278032 + ], + [ + 1.7205985118976679, + 1.7202649130974759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8645438475526157, + "scoreError" : 0.006962670109372867, + "scoreConfidence" : [ + 0.8575811774432428, + 0.8715065176619886 + ], + "scorePercentiles" : { + "0.0" : 0.8630685172427868, + "50.0" : 0.8647808022374026, + "90.0" : 0.8655452684928708, + "95.0" : 0.8655452684928708, + "99.0" : 0.8655452684928708, + "99.9" : 0.8655452684928708, + "99.99" : 0.8655452684928708, + "99.999" : 0.8655452684928708, + "99.9999" : 0.8655452684928708, + "100.0" : 0.8655452684928708 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8630685172427868, + 0.8650899598383918 + ], + [ + 0.8644716446364135, + 0.8655452684928708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.05989386004153, + "scoreError" : 0.3259215020951166, + "scoreConfidence" : [ + 15.733972357946413, + 16.385815362136647 + ], + "scorePercentiles" : { + "0.0" : 15.72532512446189, + "50.0" : 16.158593388145643, + "90.0" : 16.20446067632027, + "95.0" : 16.20446067632027, + "99.0" : 16.20446067632027, + "99.9" : 16.20446067632027, + "99.99" : 16.20446067632027, + "99.999" : 16.20446067632027, + "99.9999" : 16.20446067632027, + "100.0" : 16.20446067632027 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.967443811944504, + 15.72532512446189, + 15.760029346712017 + ], + [ + 16.150287625332755, + 16.19410303415797, + 16.20446067632027 + ], + [ + 16.198468930460553, + 16.180332802838194, + 16.158593388145643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2756.8020116085313, + "scoreError" : 91.39304598010132, + "scoreConfidence" : [ + 2665.40896562843, + 2848.1950575886326 + ], + "scorePercentiles" : { + "0.0" : 2690.356683491557, + "50.0" : 2750.4605046843676, + "90.0" : 2845.5252577614933, + "95.0" : 2845.5252577614933, + "99.0" : 2845.5252577614933, + "99.9" : 2845.5252577614933, + "99.99" : 2845.5252577614933, + "99.999" : 2845.5252577614933, + "99.9999" : 2845.5252577614933, + "100.0" : 2845.5252577614933 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2791.045225296556, + 2741.798957219609, + 2783.3375517726395 + ], + [ + 2690.7068308911184, + 2709.71805278636, + 2690.356683491557 + ], + [ + 2845.5252577614933, + 2808.2690405730837, + 2750.4605046843676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68533.4742069145, + "scoreError" : 2439.3220251166053, + "scoreConfidence" : [ + 66094.1521817979, + 70972.7962320311 + ], + "scorePercentiles" : { + "0.0" : 66835.83632727223, + "50.0" : 68487.06242377267, + "90.0" : 70252.10139834581, + "95.0" : 70252.10139834581, + "99.0" : 70252.10139834581, + "99.9" : 70252.10139834581, + "99.99" : 70252.10139834581, + "99.999" : 70252.10139834581, + "99.9999" : 70252.10139834581, + "100.0" : 70252.10139834581 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70219.46335615995, + 70252.10139834581, + 70226.14046013122 + ], + [ + 66900.3928975727, + 66835.83632727223, + 66909.21094385958 + ], + [ + 68454.6761328727, + 68516.38392224368, + 68487.06242377267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.52855496465264, + "scoreError" : 9.658309838793654, + "scoreConfidence" : [ + 327.870245125859, + 347.18686480344627 + ], + "scorePercentiles" : { + "0.0" : 327.3231459328245, + "50.0" : 339.70911503866444, + "90.0" : 342.52691897035885, + "95.0" : 342.52691897035885, + "99.0" : 342.52691897035885, + "99.9" : 342.52691897035885, + "99.99" : 342.52691897035885, + "99.999" : 342.52691897035885, + "99.9999" : 342.52691897035885, + "100.0" : 342.52691897035885 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 340.36259544413855, + 339.3679710278199, + 339.70911503866444 + ], + [ + 327.3231459328245, + 329.51373715892254, + 334.41701909854896 + ], + [ + 342.02520640669826, + 342.52691897035885, + 342.5112856038977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.56678718393282, + "scoreError" : 0.8035552983655688, + "scoreConfidence" : [ + 106.76323188556725, + 108.37034248229838 + ], + "scorePercentiles" : { + "0.0" : 106.96254754530847, + "50.0" : 107.6430612124555, + "90.0" : 108.25459860591951, + "95.0" : 108.25459860591951, + "99.0" : 108.25459860591951, + "99.9" : 108.25459860591951, + "99.99" : 108.25459860591951, + "99.999" : 108.25459860591951, + "99.9999" : 108.25459860591951, + "100.0" : 108.25459860591951 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.75910317895423, + 108.16501022003597, + 108.25459860591951 + ], + [ + 107.47077297938178, + 107.6430612124555, + 107.75656223064789 + ], + [ + 106.96254754530847, + 107.04988075523372, + 107.03954792745826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06282593834342524, + "scoreError" : 0.00124014987561755, + "scoreConfidence" : [ + 0.0615857884678077, + 0.06406608821904279 + ], + "scorePercentiles" : { + "0.0" : 0.061971611277398725, + "50.0" : 0.06275012118093684, + "90.0" : 0.06380773513779088, + "95.0" : 0.06380773513779088, + "99.0" : 0.06380773513779088, + "99.9" : 0.06380773513779088, + "99.99" : 0.06380773513779088, + "99.999" : 0.06380773513779088, + "99.9999" : 0.06380773513779088, + "100.0" : 0.06380773513779088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06380773513779088, + 0.06360714405566828, + 0.06368026652317607 + ], + [ + 0.06204686022919756, + 0.061971611277398725, + 0.06207596931003445 + ], + [ + 0.0630071047979082, + 0.06275012118093684, + 0.06248663257871617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7645891824443105E-4, + "scoreError" : 7.420531364522643E-6, + "scoreConfidence" : [ + 3.690383868799084E-4, + 3.838794496089537E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7083719638183197E-4, + "50.0" : 3.784746061574875E-4, + "90.0" : 3.81487875620763E-4, + "95.0" : 3.81487875620763E-4, + "99.0" : 3.81487875620763E-4, + "99.9" : 3.81487875620763E-4, + "99.99" : 3.81487875620763E-4, + "99.999" : 3.81487875620763E-4, + "99.9999" : 3.81487875620763E-4, + "100.0" : 3.81487875620763E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.81487875620763E-4, + 3.7847707489032533E-4, + 3.758967400060188E-4 + ], + [ + 3.784746061574875E-4, + 3.799740420807843E-4, + 3.808930146034486E-4 + ], + [ + 3.709759403254721E-4, + 3.7083719638183197E-4, + 3.711137741337483E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014170195070241436, + "scoreError" : 1.5374022955591253E-4, + "scoreConfidence" : [ + 0.014016454840685524, + 0.014323935299797348 + ], + "scorePercentiles" : { + "0.0" : 0.014048208614820965, + "50.0" : 0.014181384624438778, + "90.0" : 0.014275301442216413, + "95.0" : 0.014275301442216413, + "99.0" : 0.014275301442216413, + "99.9" : 0.014275301442216413, + "99.99" : 0.014275301442216413, + "99.999" : 0.014275301442216413, + "99.9999" : 0.014275301442216413, + "100.0" : 0.014275301442216413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01408180109132642, + 0.014048208614820965, + 0.014050356922169065 + ], + [ + 0.014182106285153491, + 0.014179868830771063, + 0.014181384624438778 + ], + [ + 0.014275301442216413, + 0.014266937955287974, + 0.014265789865988764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9853098955367946, + "scoreError" : 0.021446285031264112, + "scoreConfidence" : [ + 0.9638636105055305, + 1.0067561805680587 + ], + "scorePercentiles" : { + "0.0" : 0.9752768992588258, + "50.0" : 0.9783446756016435, + "90.0" : 1.0023353015936654, + "95.0" : 1.0023353015936654, + "99.0" : 1.0023353015936654, + "99.9" : 1.0023353015936654, + "99.99" : 1.0023353015936654, + "99.999" : 1.0023353015936654, + "99.9999" : 1.0023353015936654, + "100.0" : 1.0023353015936654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0022688939667268, + 1.0023353015936654, + 1.0022084627718209 + ], + [ + 0.9752768992588258, + 0.9762894800351459, + 0.9758775303473849 + ], + [ + 0.9767574471139759, + 0.9784303691419626, + 0.9783446756016435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013155312270424532, + "scoreError" : 2.2122281273061355E-4, + "scoreConfidence" : [ + 0.012934089457693919, + 0.013376535083155146 + ], + "scorePercentiles" : { + "0.0" : 0.01308103762286097, + "50.0" : 0.013132885895183091, + "90.0" : 0.013261304114086875, + "95.0" : 0.013261304114086875, + "99.0" : 0.013261304114086875, + "99.9" : 0.013261304114086875, + "99.99" : 0.013261304114086875, + "99.999" : 0.013261304114086875, + "99.9999" : 0.013261304114086875, + "100.0" : 0.013261304114086875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013170846136420509, + 0.013233967485032793, + 0.013261304114086875 + ], + [ + 0.013089792610200374, + 0.013094925653945672, + 0.01308103762286097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.775777798225155, + "scoreError" : 0.054194193911174686, + "scoreConfidence" : [ + 3.7215836043139805, + 3.8299719921363296 + ], + "scorePercentiles" : { + "0.0" : 3.7556604196696695, + "50.0" : 3.7757238366945414, + "90.0" : 3.8012071276595742, + "95.0" : 3.8012071276595742, + "99.0" : 3.8012071276595742, + "99.9" : 3.8012071276595742, + "99.99" : 3.8012071276595742, + "99.999" : 3.8012071276595742, + "99.9999" : 3.8012071276595742, + "100.0" : 3.8012071276595742 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7556604196696695, + 3.788914986363636, + 3.788116437121212 + ], + [ + 3.8012071276595742, + 3.7574365822689706, + 3.7633312362678706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.997883209839679, + "scoreError" : 0.09377215361018633, + "scoreConfidence" : [ + 2.9041110562294925, + 3.091655363449865 + ], + "scorePercentiles" : { + "0.0" : 2.9241853023391813, + "50.0" : 3.0141105696202533, + "90.0" : 3.0615126179981633, + "95.0" : 3.0615126179981633, + "99.0" : 3.0615126179981633, + "99.9" : 3.0615126179981633, + "99.99" : 3.0615126179981633, + "99.999" : 3.0615126179981633, + "99.9999" : 3.0615126179981633, + "100.0" : 3.0615126179981633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9241853023391813, + 2.9325244403400763, + 2.925960527501463 + ], + [ + 3.051239873703478, + 3.0029951573101172, + 3.0444756797564687 + ], + [ + 3.0239447199879046, + 3.0141105696202533, + 3.0615126179981633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.177529407092993, + "scoreError" : 0.0055248675533280875, + "scoreConfidence" : [ + 0.1720045395396649, + 0.1830542746463211 + ], + "scorePercentiles" : { + "0.0" : 0.17486462843603554, + "50.0" : 0.1756732380324989, + "90.0" : 0.18216117268388649, + "95.0" : 0.18216117268388649, + "99.0" : 0.18216117268388649, + "99.9" : 0.18216117268388649, + "99.99" : 0.18216117268388649, + "99.999" : 0.18216117268388649, + "99.9999" : 0.18216117268388649, + "100.0" : 0.18216117268388649 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17616140713794987, + 0.17548674602533956, + 0.1750206234314017 + ], + [ + 0.18172378042885698, + 0.18174547134834523, + 0.18216117268388649 + ], + [ + 0.1756732380324989, + 0.17492759631262245, + 0.17486462843603554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32976828318298224, + "scoreError" : 0.010628414016052913, + "scoreConfidence" : [ + 0.3191398691669293, + 0.34039669719903515 + ], + "scorePercentiles" : { + "0.0" : 0.3216373301492345, + "50.0" : 0.33094866118410166, + "90.0" : 0.3368310063659941, + "95.0" : 0.3368310063659941, + "99.0" : 0.3368310063659941, + "99.9" : 0.3368310063659941, + "99.99" : 0.3368310063659941, + "99.999" : 0.3368310063659941, + "99.9999" : 0.3368310063659941, + "100.0" : 0.3368310063659941 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3368310063659941, + 0.33574312472302426, + 0.33595367309436625 + ], + [ + 0.33283418678027027, + 0.32985339994062735, + 0.33094866118410166 + ], + [ + 0.32246368138140075, + 0.3216373301492345, + 0.32164948502782154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16037060522180674, + "scoreError" : 0.011186335452461017, + "scoreConfidence" : [ + 0.14918426976934573, + 0.17155694067426774 + ], + "scorePercentiles" : { + "0.0" : 0.15342508020865295, + "50.0" : 0.15895105458244588, + "90.0" : 0.16888263868341946, + "95.0" : 0.16888263868341946, + "99.0" : 0.16888263868341946, + "99.9" : 0.16888263868341946, + "99.99" : 0.16888263868341946, + "99.999" : 0.16888263868341946, + "99.9999" : 0.16888263868341946, + "100.0" : 0.16888263868341946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16888263868341946, + 0.16861914202610193, + 0.16854025700273031 + ], + [ + 0.1535660718980344, + 0.15342508020865295, + 0.15356292708957173 + ], + [ + 0.15895105458244588, + 0.15883483265565437, + 0.15895344284964952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3861324143689894, + "scoreError" : 0.003575572767244633, + "scoreConfidence" : [ + 0.38255684160174475, + 0.389707987136234 + ], + "scorePercentiles" : { + "0.0" : 0.38304099191818597, + "50.0" : 0.38653313933982686, + "90.0" : 0.3896898799002416, + "95.0" : 0.3896898799002416, + "99.0" : 0.3896898799002416, + "99.9" : 0.3896898799002416, + "99.99" : 0.3896898799002416, + "99.999" : 0.3896898799002416, + "99.9999" : 0.3896898799002416, + "100.0" : 0.3896898799002416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38653313933982686, + 0.38562719511818916, + 0.38522279780431434 + ], + [ + 0.38747809643922665, + 0.38698291312591904, + 0.3874144294735211 + ], + [ + 0.3896898799002416, + 0.3832022862014791, + 0.38304099191818597 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15756813557818247, + "scoreError" : 0.0065165439758813224, + "scoreConfidence" : [ + 0.15105159160230114, + 0.1640846795540638 + ], + "scorePercentiles" : { + "0.0" : 0.15212867388757892, + "50.0" : 0.15919887802470709, + "90.0" : 0.16154582684199473, + "95.0" : 0.16154582684199473, + "99.0" : 0.16154582684199473, + "99.9" : 0.16154582684199473, + "99.99" : 0.16154582684199473, + "99.999" : 0.16154582684199473, + "99.9999" : 0.16154582684199473, + "100.0" : 0.16154582684199473 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1531477717234831, + 0.1522394138807697, + 0.15212867388757892 + ], + [ + 0.16154582684199473, + 0.1602374568251374, + 0.1601357834358186 + ], + [ + 0.16049824886449354, + 0.15898116671965914, + 0.15919887802470709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04687713978540145, + "scoreError" : 0.0010612687857045062, + "scoreConfidence" : [ + 0.045815870999696945, + 0.047938408571105956 + ], + "scorePercentiles" : { + "0.0" : 0.04606025472801806, + "50.0" : 0.04693274996010775, + "90.0" : 0.04757975261209653, + "95.0" : 0.04757975261209653, + "99.0" : 0.04757975261209653, + "99.9" : 0.04757975261209653, + "99.99" : 0.04757975261209653, + "99.999" : 0.04757975261209653, + "99.9999" : 0.04757975261209653, + "100.0" : 0.04757975261209653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04755243152779165, + 0.04757975261209653, + 0.04754639047849984 + ], + [ + 0.04707834560177012, + 0.04693274996010775, + 0.04685888061946488 + ], + [ + 0.046183133010363364, + 0.04610231953050085, + 0.04606025472801806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9360297.634597164, + "scoreError" : 175391.63757937515, + "scoreConfidence" : [ + 9184905.997017788, + 9535689.27217654 + ], + "scorePercentiles" : { + "0.0" : 9260010.685185185, + "50.0" : 9321470.84249767, + "90.0" : 9536754.620591039, + "95.0" : 9536754.620591039, + "99.0" : 9536754.620591039, + "99.9" : 9536754.620591039, + "99.99" : 9536754.620591039, + "99.999" : 9536754.620591039, + "99.9999" : 9536754.620591039, + "100.0" : 9536754.620591039 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9536754.620591039, + 9475862.076704545, + 9467337.743614001 + ], + [ + 9321470.84249767, + 9315488.694599628, + 9326853.998136068 + ], + [ + 9270368.858202038, + 9260010.685185185, + 9268531.1918443 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json b/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json new file mode 100644 index 0000000000..3751f422c6 --- /dev/null +++ b/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3957352409364385, + "scoreError" : 0.015684974253292697, + "scoreConfidence" : [ + 3.380050266683146, + 3.411420215189731 + ], + "scorePercentiles" : { + "0.0" : 3.392976664184572, + "50.0" : 3.395705894477954, + "90.0" : 3.3985525106052745, + "95.0" : 3.3985525106052745, + "99.0" : 3.3985525106052745, + "99.9" : 3.3985525106052745, + "99.99" : 3.3985525106052745, + "99.999" : 3.3985525106052745, + "99.9999" : 3.3985525106052745, + "100.0" : 3.3985525106052745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394674778427625, + 3.3967370105282826 + ], + [ + 3.392976664184572, + 3.3985525106052745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.715366014713939, + "scoreError" : 0.022445605539527534, + "scoreConfidence" : [ + 1.6929204091744114, + 1.7378116202534664 + ], + "scorePercentiles" : { + "0.0" : 1.7114341422770996, + "50.0" : 1.7154414395911841, + "90.0" : 1.7191470373962887, + "95.0" : 1.7191470373962887, + "99.0" : 1.7191470373962887, + "99.9" : 1.7191470373962887, + "99.99" : 1.7191470373962887, + "99.999" : 1.7191470373962887, + "99.9999" : 1.7191470373962887, + "100.0" : 1.7191470373962887 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7114341422770996, + 1.7136486614788984 + ], + [ + 1.7172342177034698, + 1.7191470373962887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8623839906524824, + "scoreError" : 0.017881712405582097, + "scoreConfidence" : [ + 0.8445022782469003, + 0.8802657030580645 + ], + "scorePercentiles" : { + "0.0" : 0.8590144212325085, + "50.0" : 0.8627068784950527, + "90.0" : 0.865107784387316, + "95.0" : 0.865107784387316, + "99.0" : 0.865107784387316, + "99.9" : 0.865107784387316, + "99.99" : 0.865107784387316, + "99.999" : 0.865107784387316, + "99.9999" : 0.865107784387316, + "100.0" : 0.865107784387316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8641194770854608, + 0.865107784387316 + ], + [ + 0.8590144212325085, + 0.8612942799046445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.964369759761347, + "scoreError" : 0.14949247492861661, + "scoreConfidence" : [ + 15.81487728483273, + 16.113862234689964 + ], + "scorePercentiles" : { + "0.0" : 15.811852078065343, + "50.0" : 15.958841605607912, + "90.0" : 16.068686757278652, + "95.0" : 16.068686757278652, + "99.0" : 16.068686757278652, + "99.9" : 16.068686757278652, + "99.99" : 16.068686757278652, + "99.999" : 16.068686757278652, + "99.9999" : 16.068686757278652, + "100.0" : 16.068686757278652 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.884122348234245, + 15.892067793051442, + 15.811852078065343 + ], + [ + 16.068686757278652, + 16.02611385854489, + 16.05950077065129 + ], + [ + 16.030228524873884, + 15.958841605607912, + 15.947914101544484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2632.946473250312, + "scoreError" : 93.99387762333102, + "scoreConfidence" : [ + 2538.952595626981, + 2726.940350873643 + ], + "scorePercentiles" : { + "0.0" : 2573.8895531139106, + "50.0" : 2619.4836853276893, + "90.0" : 2713.525151295088, + "95.0" : 2713.525151295088, + "99.0" : 2713.525151295088, + "99.9" : 2713.525151295088, + "99.99" : 2713.525151295088, + "99.999" : 2713.525151295088, + "99.9999" : 2713.525151295088, + "100.0" : 2713.525151295088 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2621.4226450253977, + 2619.4836853276893, + 2611.349597133837 + ], + [ + 2581.449953604812, + 2578.211708521408, + 2573.8895531139106 + ], + [ + 2697.7887121079466, + 2713.525151295088, + 2699.397253122716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69534.66430141217, + "scoreError" : 2801.5518349881327, + "scoreConfidence" : [ + 66733.11246642403, + 72336.2161364003 + ], + "scorePercentiles" : { + "0.0" : 65567.4080996611, + "50.0" : 69961.79605161793, + "90.0" : 71051.43139625118, + "95.0" : 71051.43139625118, + "99.0" : 71051.43139625118, + "99.9" : 71051.43139625118, + "99.99" : 71051.43139625118, + "99.999" : 71051.43139625118, + "99.9999" : 71051.43139625118, + "100.0" : 71051.43139625118 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68854.52710104783, + 68971.27421927753, + 65567.4080996611 + ], + [ + 69961.79605161793, + 69908.7846493282, + 70055.8954803111 + ], + [ + 70651.62694371553, + 71051.43139625118, + 70789.23477149908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.37714013322415, + "scoreError" : 6.953692403364356, + "scoreConfidence" : [ + 317.4234477298598, + 331.3308325365885 + ], + "scorePercentiles" : { + "0.0" : 317.9794415797697, + "50.0" : 325.6979033805179, + "90.0" : 329.47163983902743, + "95.0" : 329.47163983902743, + "99.0" : 329.47163983902743, + "99.9" : 329.47163983902743, + "99.99" : 329.47163983902743, + "99.999" : 329.47163983902743, + "99.9999" : 329.47163983902743, + "100.0" : 329.47163983902743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 325.6979033805179, + 326.8589024612708, + 327.71947283667845 + ], + [ + 319.1493847905536, + 317.9794415797697, + 320.4422634820272 + ], + [ + 329.47163983902743, + 327.1995344627017, + 324.87571836647084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 102.959790420029, + "scoreError" : 2.6836297682130374, + "scoreConfidence" : [ + 100.27616065181596, + 105.64342018824203 + ], + "scorePercentiles" : { + "0.0" : 101.06488807701024, + "50.0" : 102.31342535678377, + "90.0" : 105.815826229701, + "95.0" : 105.815826229701, + "99.0" : 105.815826229701, + "99.9" : 105.815826229701, + "99.99" : 105.815826229701, + "99.999" : 105.815826229701, + "99.9999" : 105.815826229701, + "100.0" : 105.815826229701 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.6268312221908, + 102.22420517816848, + 101.06488807701024 + ], + [ + 101.94574008326629, + 102.31342535678377, + 102.68228515975018 + ], + [ + 104.18470572687318, + 104.78020674651705, + 105.815826229701 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06385212124215954, + "scoreError" : 3.980491241938138E-4, + "scoreConfidence" : [ + 0.06345407211796572, + 0.06425017036635336 + ], + "scorePercentiles" : { + "0.0" : 0.06360682266025519, + "50.0" : 0.06375608461533558, + "90.0" : 0.06420885625770495, + "95.0" : 0.06420885625770495, + "99.0" : 0.06420885625770495, + "99.9" : 0.06420885625770495, + "99.99" : 0.06420885625770495, + "99.999" : 0.06420885625770495, + "99.9999" : 0.06420885625770495, + "100.0" : 0.06420885625770495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0636074658720113, + 0.06368320890912564, + 0.06400144288283445 + ], + [ + 0.0640410836295172, + 0.06411013171222689, + 0.06420885625770495 + ], + [ + 0.06365399464042469, + 0.06360682266025519, + 0.06375608461533558 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9662898037091357E-4, + "scoreError" : 2.4763194628361096E-5, + "scoreConfidence" : [ + 3.718657857425525E-4, + 4.2139217499927465E-4 + ], + "scorePercentiles" : { + "0.0" : 3.815935281333288E-4, + "50.0" : 3.910863244286691E-4, + "90.0" : 4.1596443371843373E-4, + "95.0" : 4.1596443371843373E-4, + "99.0" : 4.1596443371843373E-4, + "99.9" : 4.1596443371843373E-4, + "99.99" : 4.1596443371843373E-4, + "99.999" : 4.1596443371843373E-4, + "99.9999" : 4.1596443371843373E-4, + "100.0" : 4.1596443371843373E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.1507248171887697E-4, + 4.1596443371843373E-4, + 4.158961915449522E-4 + ], + [ + 3.9249085467373625E-4, + 3.910863244286691E-4, + 3.9028536381353695E-4 + ], + [ + 3.815935281333288E-4, + 3.83322489934839E-4, + 3.839491553718492E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014256156575693513, + "scoreError" : 1.1832459269240048E-4, + "scoreConfidence" : [ + 0.014137831983001113, + 0.014374481168385913 + ], + "scorePercentiles" : { + "0.0" : 0.014160325917188587, + "50.0" : 0.014281502312143682, + "90.0" : 0.01434438235319431, + "95.0" : 0.01434438235319431, + "99.0" : 0.01434438235319431, + "99.9" : 0.01434438235319431, + "99.99" : 0.01434438235319431, + "99.999" : 0.01434438235319431, + "99.9999" : 0.01434438235319431, + "100.0" : 0.01434438235319431 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014294949020667335, + 0.014281502312143682, + 0.014222103556901898 + ], + [ + 0.01434438235319431, + 0.01433649228420283, + 0.014300185563870207 + ], + [ + 0.01419311983093378, + 0.014160325917188587, + 0.014172348342138978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9824788631918102, + "scoreError" : 0.015282153141593577, + "scoreConfidence" : [ + 0.9671967100502167, + 0.9977610163334037 + ], + "scorePercentiles" : { + "0.0" : 0.971180237253569, + "50.0" : 0.9812488621467818, + "90.0" : 0.9941125791252485, + "95.0" : 0.9941125791252485, + "99.0" : 0.9941125791252485, + "99.9" : 0.9941125791252485, + "99.99" : 0.9941125791252485, + "99.999" : 0.9941125791252485, + "99.9999" : 0.9941125791252485, + "100.0" : 0.9941125791252485 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9812488621467818, + 0.9805092572801255, + 0.9850614140070922 + ], + [ + 0.9910779913784561, + 0.9941125791252485, + 0.9935723269746647 + ], + [ + 0.9720085908251531, + 0.9735385097352025, + 0.971180237253569 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01313513390633781, + "scoreError" : 1.7088782952539693E-4, + "scoreConfidence" : [ + 0.012964246076812413, + 0.013306021735863208 + ], + "scorePercentiles" : { + "0.0" : 0.013032883220601843, + "50.0" : 0.013130920356492343, + "90.0" : 0.013206380218375443, + "95.0" : 0.013206380218375443, + "99.0" : 0.013206380218375443, + "99.9" : 0.013206380218375443, + "99.99" : 0.013206380218375443, + "99.999" : 0.013206380218375443, + "99.9999" : 0.013206380218375443, + "100.0" : 0.013206380218375443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013032883220601843, + 0.01318755262359721, + 0.013206380218375443 + ], + [ + 0.013137456023499675, + 0.013122146662467688, + 0.013124384689485012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.867786864317754, + "scoreError" : 0.048553694236964026, + "scoreConfidence" : [ + 3.81923317008079, + 3.916340558554718 + ], + "scorePercentiles" : { + "0.0" : 3.8529737359507314, + "50.0" : 3.8585532311495188, + "90.0" : 3.8924816739299613, + "95.0" : 3.8924816739299613, + "99.0" : 3.8924816739299613, + "99.9" : 3.8924816739299613, + "99.99" : 3.8924816739299613, + "99.999" : 3.8924816739299613, + "99.9999" : 3.8924816739299613, + "100.0" : 3.8924816739299613 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8569471233616035, + 3.8600316018518517, + 3.8529737359507314 + ], + [ + 3.857074860447186, + 3.88721219036519, + 3.8924816739299613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0750627687740564, + "scoreError" : 0.05511820982963315, + "scoreConfidence" : [ + 3.0199445589444234, + 3.1301809786036894 + ], + "scorePercentiles" : { + "0.0" : 3.0299908679188126, + "50.0" : 3.064409943627451, + "90.0" : 3.135634054231975, + "95.0" : 3.135634054231975, + "99.0" : 3.135634054231975, + "99.9" : 3.135634054231975, + "99.99" : 3.135634054231975, + "99.999" : 3.135634054231975, + "99.9999" : 3.135634054231975, + "100.0" : 3.135634054231975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0817256949152543, + 3.0892173233477456, + 3.1099776281094527 + ], + [ + 3.0299908679188126, + 3.064409943627451, + 3.135634054231975 + ], + [ + 3.063156679019908, + 3.051907723527617, + 3.0495450042682926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17707974113798844, + "scoreError" : 0.001753183598704396, + "scoreConfidence" : [ + 0.17532655753928406, + 0.17883292473669282 + ], + "scorePercentiles" : { + "0.0" : 0.17542807671256908, + "50.0" : 0.17744374794612913, + "90.0" : 0.17834795757165023, + "95.0" : 0.17834795757165023, + "99.0" : 0.17834795757165023, + "99.9" : 0.17834795757165023, + "99.99" : 0.17834795757165023, + "99.999" : 0.17834795757165023, + "99.9999" : 0.17834795757165023, + "100.0" : 0.17834795757165023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17542807671256908, + 0.17567099878790007, + 0.17622787493391603 + ], + [ + 0.17834795757165023, + 0.17778623739088695, + 0.1777325394021256 + ], + [ + 0.17783960020984493, + 0.17744374794612913, + 0.17724063728687392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3291669764763291, + "scoreError" : 0.007571788356830977, + "scoreConfidence" : [ + 0.3215951881194981, + 0.33673876483316006 + ], + "scorePercentiles" : { + "0.0" : 0.3241040484848485, + "50.0" : 0.32796601954611043, + "90.0" : 0.3354437538239635, + "95.0" : 0.3354437538239635, + "99.0" : 0.3354437538239635, + "99.9" : 0.3354437538239635, + "99.99" : 0.3354437538239635, + "99.999" : 0.3354437538239635, + "99.9999" : 0.3354437538239635, + "100.0" : 0.3354437538239635 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3354437538239635, + 0.3346651346964728, + 0.3344965017894772 + ], + [ + 0.3279725352399069, + 0.3277535350353959, + 0.32796601954611043 + ], + [ + 0.32507591015180576, + 0.3241040484848485, + 0.32502534951898077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16062776080834268, + "scoreError" : 0.005431148276752742, + "scoreConfidence" : [ + 0.15519661253158995, + 0.1660589090850954 + ], + "scorePercentiles" : { + "0.0" : 0.1560528020661028, + "50.0" : 0.16137011350470382, + "90.0" : 0.16436436313730646, + "95.0" : 0.16436436313730646, + "99.0" : 0.16436436313730646, + "99.9" : 0.16436436313730646, + "99.99" : 0.16436436313730646, + "99.999" : 0.16436436313730646, + "99.9999" : 0.16436436313730646, + "100.0" : 0.16436436313730646 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1570186333689235, + 0.1567735383614473, + 0.1560528020661028 + ], + [ + 0.16436436313730646, + 0.16383697162423408, + 0.16358005905157608 + ], + [ + 0.161679944674384, + 0.16137011350470382, + 0.160973421486406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3903617858409897, + "scoreError" : 0.009828721884524704, + "scoreConfidence" : [ + 0.38053306395646497, + 0.4001905077255144 + ], + "scorePercentiles" : { + "0.0" : 0.3824873031821311, + "50.0" : 0.3917676618349918, + "90.0" : 0.39610914148776044, + "95.0" : 0.39610914148776044, + "99.0" : 0.39610914148776044, + "99.9" : 0.39610914148776044, + "99.99" : 0.39610914148776044, + "99.999" : 0.39610914148776044, + "99.9999" : 0.39610914148776044, + "100.0" : 0.39610914148776044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39610914148776044, + 0.3953911683536296, + 0.39527777813352305 + ], + [ + 0.3824873031821311, + 0.38368207650399017, + 0.3827536854212118 + ], + [ + 0.39533068979285263, + 0.3917676618349918, + 0.39045656785881616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15819162474581686, + "scoreError" : 0.0048135868130951606, + "scoreConfidence" : [ + 0.1533780379327217, + 0.163005211558912 + ], + "scorePercentiles" : { + "0.0" : 0.15527001720363326, + "50.0" : 0.15726231035241944, + "90.0" : 0.16197077154565037, + "95.0" : 0.16197077154565037, + "99.0" : 0.16197077154565037, + "99.9" : 0.16197077154565037, + "99.99" : 0.16197077154565037, + "99.999" : 0.16197077154565037, + "99.9999" : 0.16197077154565037, + "100.0" : 0.16197077154565037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15765723094386025, + 0.15726231035241944, + 0.15718987414137287 + ], + [ + 0.16197077154565037, + 0.16175013906995553, + 0.1617629850048528 + ], + [ + 0.15536635726936582, + 0.15549493718124144, + 0.15527001720363326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047076397918228714, + "scoreError" : 9.393130932661902E-4, + "scoreConfidence" : [ + 0.046137084824962524, + 0.048015711011494905 + ], + "scorePercentiles" : { + "0.0" : 0.04660691954381909, + "50.0" : 0.04679847674848492, + "90.0" : 0.04791543753354033, + "95.0" : 0.04791543753354033, + "99.0" : 0.04791543753354033, + "99.9" : 0.04791543753354033, + "99.99" : 0.04791543753354033, + "99.999" : 0.04791543753354033, + "99.9999" : 0.04791543753354033, + "100.0" : 0.04791543753354033 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04681345522126048, + 0.04679847674848492, + 0.046763169458395294 + ], + [ + 0.046641739345997954, + 0.04660691954381909, + 0.04662555677971633 + ], + [ + 0.047764110466837977, + 0.047758716166006014, + 0.04791543753354033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9813602.948911339, + "scoreError" : 123718.98750194644, + "scoreConfidence" : [ + 9689883.961409392, + 9937321.936413286 + ], + "scorePercentiles" : { + "0.0" : 9679557.92843327, + "50.0" : 9822463.236506378, + "90.0" : 9927081.881944444, + "95.0" : 9927081.881944444, + "99.0" : 9927081.881944444, + "99.9" : 9927081.881944444, + "99.99" : 9927081.881944444, + "99.999" : 9927081.881944444, + "99.9999" : 9927081.881944444, + "100.0" : 9927081.881944444 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9872000.78183613, + 9822463.236506378, + 9927081.881944444 + ], + [ + 9853020.666995075, + 9853184.431527093, + 9790321.015655577 + ], + [ + 9679557.92843327, + 9754578.18031189, + 9770218.416992188 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json b/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json new file mode 100644 index 0000000000..1a46afd5c6 --- /dev/null +++ b/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion": "1.37", + "benchmark": "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 2, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "howManyItems": "5" + }, + "primaryMetric": { + "score": 3.4102846934427835, + "scoreError": 0.029120215772332664, + "scoreConfidence": [ + 3.381164477670451, + 3.439404909215116 + ], + "scorePercentiles": { + "0.0": 3.40421431924695, + "50.0": 3.411477217299319, + "90.0": 3.4139700199255474, + "95.0": 3.4139700199255474, + "99.0": 3.4139700199255474, + "99.9": 3.4139700199255474, + "99.99": 3.4139700199255474, + "99.999": 3.4139700199255474, + "99.9999": 3.4139700199255474, + "100.0": 3.4139700199255474 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 3.40421431924695, + 3.4139700199255474 + ], + [ + 3.4095218102136196, + 3.4134326243850186 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 2, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "howManyItems": "10" + }, + "primaryMetric": { + "score": 1.7221652033520922, + "scoreError": 0.009478621744532833, + "scoreConfidence": [ + 1.7126865816075594, + 1.731643825096625 + ], + "scorePercentiles": { + "0.0": 1.7203619756019852, + "50.0": 1.722271370931328, + "90.0": 1.723756095943728, + "95.0": 1.723756095943728, + "99.0": 1.723756095943728, + "99.9": 1.723756095943728, + "99.99": 1.723756095943728, + "99.999": 1.723756095943728, + "99.9999": 1.723756095943728, + "100.0": 1.723756095943728 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 1.7228412979004932, + 1.723756095943728 + ], + [ + 1.7203619756019852, + 1.7217014439621625 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 2, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "howManyItems": "20" + }, + "primaryMetric": { + "score": 0.8638167830583094, + "scoreError": 0.005432486996052623, + "scoreConfidence": [ + 0.8583842960622569, + 0.869249270054362 + ], + "scorePercentiles": { + "0.0": 0.8627272504566224, + "50.0": 0.8639140939295744, + "90.0": 0.8647116939174667, + "95.0": 0.8647116939174667, + "99.0": 0.8647116939174667, + "99.9": 0.8647116939174667, + "99.99": 0.8647116939174667, + "99.999": 0.8647116939174667, + "99.9999": 0.8647116939174667, + "100.0": 0.8647116939174667 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 0.8627272504566224, + 0.8647116939174667 + ], + [ + 0.8641521696201839, + 0.863676018238965 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 15.856427557514358, + "scoreError": 0.21807549856382044, + "scoreConfidence": [ + 15.638352058950538, + 16.07450305607818 + ], + "scorePercentiles": { + "0.0": 15.681327891325898, + "50.0": 15.904269221101467, + "90.0": 16.02142911448296, + "95.0": 16.02142911448296, + "99.0": 16.02142911448296, + "99.9": 16.02142911448296, + "99.99": 16.02142911448296, + "99.999": 16.02142911448296, + "99.9999": 16.02142911448296, + "100.0": 16.02142911448296 + }, + "scoreUnit": "ops/ms", + "rawData": [ + [ + 15.904269221101467, + 16.02142911448296, + 15.943726644806675 + ], + [ + 15.681327891325898, + 15.700241982223265, + 15.6913767022947 + ], + [ + 15.881763309316872, + 15.936401461123317, + 15.947311690954091 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 2615.3268175518824, + "scoreError": 85.27331964422102, + "scoreConfidence": [ + 2530.0534979076615, + 2700.6001371961033 + ], + "scorePercentiles": { + "0.0": 2550.521812924825, + "50.0": 2603.3546349283893, + "90.0": 2682.250838153494, + "95.0": 2682.250838153494, + "99.0": 2682.250838153494, + "99.9": 2682.250838153494, + "99.99": 2682.250838153494, + "99.999": 2682.250838153494, + "99.9999": 2682.250838153494, + "100.0": 2682.250838153494 + }, + "scoreUnit": "ops/ms", + "rawData": [ + [ + 2682.250838153494, + 2674.2071330474264, + 2676.491646172537 + ], + [ + 2573.055142655825, + 2564.6397919711726, + 2550.521812924825 + ], + [ + 2612.447308343581, + 2603.3546349283893, + 2600.9730497696914 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENF1Performance.benchMarkThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 68682.74721165966, + "scoreError": 1904.0986389262905, + "scoreConfidence": [ + 66778.64857273338, + 70586.84585058595 + ], + "scorePercentiles": { + "0.0": 67315.78978042262, + "50.0": 68558.57912756453, + "90.0": 70108.49357429743, + "95.0": 70108.49357429743, + "99.0": 70108.49357429743, + "99.9": 70108.49357429743, + "99.99": 70108.49357429743, + "99.999": 70108.49357429743, + "99.9999": 70108.49357429743, + "100.0": 70108.49357429743 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 70081.54631565987, + 69908.33092759324, + 70108.49357429743 + ], + [ + 68695.19237810129, + 68558.57912756453, + 68502.6084660597 + ], + [ + 67315.78978042262, + 67441.95616624445, + 67532.22816899384 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 341.9660588620118, + "scoreError": 5.428672335615734, + "scoreConfidence": [ + 336.53738652639606, + 347.3947311976275 + ], + "scorePercentiles": { + "0.0": 336.4476621680284, + "50.0": 342.2783710532269, + "90.0": 345.6060043253826, + "95.0": 345.6060043253826, + "99.0": 345.6060043253826, + "99.9": 345.6060043253826, + "99.99": 345.6060043253826, + "99.999": 345.6060043253826, + "99.9999": 345.6060043253826, + "100.0": 345.6060043253826 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 344.6308661866658, + 342.2263703728633, + 339.18226799196634 + ], + [ + 343.869334695566, + 344.96989920298415, + 345.6060043253826 + ], + [ + 342.2783710532269, + 336.4476621680284, + 338.48375376142235 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 102.86025606846653, + "scoreError": 1.38084080828978, + "scoreConfidence": [ + 101.47941526017675, + 104.2410968767563 + ], + "scorePercentiles": { + "0.0": 101.80541629343892, + "50.0": 102.80111987931467, + "90.0": 104.77421204891745, + "95.0": 104.77421204891745, + "99.0": 104.77421204891745, + "99.9": 104.77421204891745, + "99.99": 104.77421204891745, + "99.999": 104.77421204891745, + "99.9999": 104.77421204891745, + "100.0": 104.77421204891745 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 102.3242423337249, + 101.80541629343892, + 102.80111987931467 + ], + [ + 104.77421204891745, + 102.62377671322751, + 102.42665569290861 + ], + [ + 102.93712545820337, + 102.90042617995776, + 103.14933001650559 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 0.06299738431052335, + "scoreError": 3.244688347044825E-4, + "scoreConfidence": [ + 0.06267291547581887, + 0.06332185314522783 + ], + "scorePercentiles": { + "0.0": 0.06275631095268876, + "50.0": 0.06303528535589117, + "90.0": 0.06329175614711299, + "95.0": 0.06329175614711299, + "99.0": 0.06329175614711299, + "99.9": 0.06329175614711299, + "99.99": 0.06329175614711299, + "99.999": 0.06329175614711299, + "99.9999": 0.06329175614711299, + "100.0": 0.06329175614711299 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.06309860325332525, + 0.06324095105863604, + 0.06305016569991047 + ], + [ + 0.06283930007917657, + 0.06329175614711299, + 0.06303528535589117 + ], + [ + 0.0628358286427014, + 0.06275631095268876, + 0.06282825760526746 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 3.733489768801373E-4, + "scoreError": 7.710948014590726E-6, + "scoreConfidence": [ + 3.6563802886554656E-4, + 3.81059924894728E-4 + ], + "scorePercentiles": { + "0.0": 3.682361400802075E-4, + "50.0": 3.729608204948727E-4, + "90.0": 3.8100045308045563E-4, + "95.0": 3.8100045308045563E-4, + "99.0": 3.8100045308045563E-4, + "99.9": 3.8100045308045563E-4, + "99.99": 3.8100045308045563E-4, + "99.999": 3.8100045308045563E-4, + "99.9999": 3.8100045308045563E-4, + "100.0": 3.8100045308045563E-4 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 3.682361400802075E-4, + 3.70625831766964E-4, + 3.692070808996729E-4 + ], + [ + 3.6864684928719307E-4, + 3.729608204948727E-4, + 3.7460464471704793E-4 + ], + [ + 3.784421620702325E-4, + 3.8100045308045563E-4, + 3.7641680952458926E-4 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENF1Performance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 0.01435726879619418, + "scoreError": 4.0347910114715526E-4, + "scoreConfidence": [ + 0.013953789695047025, + 0.014760747897341334 + ], + "scorePercentiles": { + "0.0": 0.014138349409377849, + "50.0": 0.01422107446198828, + "90.0": 0.014705323339239892, + "95.0": 0.014705323339239892, + "99.0": 0.014705323339239892, + "99.9": 0.014705323339239892, + "99.99": 0.014705323339239892, + "99.999": 0.014705323339239892, + "99.9999": 0.014705323339239892, + "100.0": 0.014705323339239892 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.014220843329512714, + 0.014249974604034115, + 0.01422107446198828 + ], + [ + 0.01465220841904762, + 0.0146646087476152, + 0.014705323339239892 + ], + [ + 0.014192360439900428, + 0.014170676415031508, + 0.014138349409377849 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENF2Performance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 0.9895251951545363, + "scoreError": 0.011617451159531738, + "scoreConfidence": [ + 0.9779077439950046, + 1.001142646314068 + ], + "scorePercentiles": { + "0.0": 0.9812811987047395, + "50.0": 0.9870416658112909, + "90.0": 1.0005223407703852, + "95.0": 1.0005223407703852, + "99.0": 1.0005223407703852, + "99.9": 1.0005223407703852, + "99.99": 1.0005223407703852, + "99.999": 1.0005223407703852, + "99.9999": 1.0005223407703852, + "100.0": 1.0005223407703852 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 1.0005223407703852, + 0.9968223352272727, + 0.9975727868541792 + ], + [ + 0.9870416658112909, + 0.9846626468097677, + 0.9872980485734031 + ], + [ + 0.9837904186915888, + 0.9867353149481993, + 0.9812811987047395 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "5 s", + "measurementBatchSize": 1, + "params": { + "howDeep": "2" + }, + "primaryMetric": { + "score": 0.01330986014742821, + "scoreError": 9.891136536444913E-5, + "scoreConfidence": [ + 0.013210948782063761, + 0.013408771512792659 + ], + "scorePercentiles": { + "0.0": 0.01327384584671746, + "50.0": 0.013299086737854359, + "90.0": 0.013362976738343782, + "95.0": 0.013362976738343782, + "99.0": 0.013362976738343782, + "99.9": 0.013362976738343782, + "99.99": 0.013362976738343782, + "99.999": 0.013362976738343782, + "99.9999": 0.013362976738343782, + "100.0": 0.013362976738343782 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.013294660619516086, + 0.01327384584671746, + 0.01330351285619263 + ], + [ + 0.013281905929416514, + 0.01334225889438279, + 0.013362976738343782 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "5 s", + "measurementBatchSize": 1, + "params": { + "howDeep": "10" + }, + "primaryMetric": { + "score": 3.8025668235689842, + "scoreError": 0.06390927980432547, + "scoreConfidence": [ + 3.738657543764659, + 3.8664761033733095 + ], + "scorePercentiles": { + "0.0": 3.7659801807228916, + "50.0": 3.806910667222677, + "90.0": 3.8267197444529457, + "95.0": 3.8267197444529457, + "99.0": 3.8267197444529457, + "99.9": 3.8267197444529457, + "99.99": 3.8267197444529457, + "99.999": 3.8267197444529457, + "99.9999": 3.8267197444529457, + "100.0": 3.8267197444529457 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 3.8143089107551487, + 3.7659801807228916, + 3.820578360580596 + ], + [ + 3.788301321212121, + 3.799512423690205, + 3.8267197444529457 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 2.9759041347139985, + "scoreError": 0.10713863758918146, + "scoreConfidence": [ + 2.868765497124817, + 3.08304277230318 + ], + "scorePercentiles": { + "0.0": 2.884954732621863, + "50.0": 3.000250045290942, + "90.0": 3.0388375967790946, + "95.0": 3.0388375967790946, + "99.0": 3.0388375967790946, + "99.9": 3.0388375967790946, + "99.99": 3.0388375967790946, + "99.999": 3.0388375967790946, + "99.9999": 3.0388375967790946, + "100.0": 3.0388375967790946 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 3.0026239456619632, + 3.000250045290942, + 2.9838356843675418 + ], + [ + 2.9118269863173216, + 2.884954732621863, + 2.8888414780473717 + ], + [ + 3.0388375967790946, + 3.038463558323208, + 3.033503185016682 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.18603597518816295, + "scoreError": 0.012679982126799527, + "scoreConfidence": [ + 0.17335599306136343, + 0.19871595731496247 + ], + "scorePercentiles": { + "0.0": 0.17767118692369194, + "50.0": 0.18524742478187578, + "90.0": 0.19535688841352633, + "95.0": 0.19535688841352633, + "99.0": 0.19535688841352633, + "99.9": 0.19535688841352633, + "99.99": 0.19535688841352633, + "99.999": 0.19535688841352633, + "99.9999": 0.19535688841352633, + "100.0": 0.19535688841352633 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.18528033961425158, + 0.18524742478187578, + 0.185177052070217 + ], + [ + 0.17788650417133609, + 0.17767118692369194, + 0.1776996488734096 + ], + [ + 0.19535688841352633, + 0.19508885146312915, + 0.19491588038202903 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.32826031013776114, + "scoreError": 0.011022615826861565, + "scoreConfidence": [ + 0.31723769431089954, + 0.33928292596462273 + ], + "scorePercentiles": { + "0.0": 0.320983046477291, + "50.0": 0.32681424316198815, + "90.0": 0.3371025889769088, + "95.0": 0.3371025889769088, + "99.0": 0.3371025889769088, + "99.9": 0.3371025889769088, + "99.99": 0.3371025889769088, + "99.999": 0.3371025889769088, + "99.9999": 0.3371025889769088, + "100.0": 0.3371025889769088 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.3223364937467767, + 0.320983046477291, + 0.3219397327366964 + ], + [ + 0.3371025889769088, + 0.3363084072305364, + 0.3361761716811779 + ], + [ + 0.32709179727210286, + 0.32681424316198815, + 0.32559030995637167 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.16457991754255474, + "scoreError": 0.010323140494181456, + "scoreConfidence": [ + 0.1542567770483733, + 0.1749030580367362 + ], + "scorePercentiles": { + "0.0": 0.1599626444910103, + "50.0": 0.1606458390200803, + "90.0": 0.1729952570276956, + "95.0": 0.1729952570276956, + "99.0": 0.1729952570276956, + "99.9": 0.1729952570276956, + "99.99": 0.1729952570276956, + "99.999": 0.1729952570276956, + "99.9999": 0.1729952570276956, + "100.0": 0.1729952570276956 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.1729952570276956, + 0.17261480054890047, + 0.17268161886342837 + ], + [ + 0.16080234687248754, + 0.1606458390200803, + 0.16053277127813273 + ], + [ + 0.16059716269732932, + 0.16038681708392807, + 0.1599626444910103 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.3934084316923969, + "scoreError": 0.008778638315417864, + "scoreConfidence": [ + 0.38462979337697906, + 0.4021870700078148 + ], + "scorePercentiles": { + "0.0": 0.3879532519300151, + "50.0": 0.39231844958807377, + "90.0": 0.4034614294359719, + "95.0": 0.4034614294359719, + "99.0": 0.4034614294359719, + "99.9": 0.4034614294359719, + "99.99": 0.4034614294359719, + "99.999": 0.4034614294359719, + "99.9999": 0.4034614294359719, + "100.0": 0.4034614294359719 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.3972338251439921, + 0.3963039667512087, + 0.3955053498516907 + ], + [ + 0.4034614294359719, + 0.39231844958807377, + 0.3916460862771207 + ], + [ + 0.3881032016144681, + 0.3879532519300151, + 0.3881503246390312 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.15900952508569965, + "scoreError": 0.0023946034846080585, + "scoreConfidence": [ + 0.15661492160109158, + 0.16140412857030773 + ], + "scorePercentiles": { + "0.0": 0.15720717609884927, + "50.0": 0.15895266305850936, + "90.0": 0.16082181456048375, + "95.0": 0.16082181456048375, + "99.0": 0.16082181456048375, + "99.9": 0.16082181456048375, + "99.99": 0.16082181456048375, + "99.999": 0.16082181456048375, + "99.9999": 0.16082181456048375, + "100.0": 0.16082181456048375 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.16082181456048375, + 0.16076233775419982, + 0.1602524095476179 + ], + [ + 0.15938672460233974, + 0.15895266305850936, + 0.15877954825188148 + ], + [ + 0.15768934277334512, + 0.15723370912407036, + 0.15720717609884927 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.047361120540854944, + "scoreError": 0.0011842744715550232, + "scoreConfidence": [ + 0.04617684606929992, + 0.04854539501240997 + ], + "scorePercentiles": { + "0.0": 0.046548068140666095, + "50.0": 0.04735400536040686, + "90.0": 0.04889141967751714, + "95.0": 0.04889141967751714, + "99.0": 0.04889141967751714, + "99.9": 0.04889141967751714, + "99.99": 0.04889141967751714, + "99.999": 0.04889141967751714, + "99.9999": 0.04889141967751714, + "100.0": 0.04889141967751714 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.04889141967751714, + 0.047445435486855404, + 0.04735400536040686 + ], + [ + 0.047628977833767544, + 0.046628790649202896, + 0.046548068140666095 + ], + [ + 0.04771143517321336, + 0.047044408982495095, + 0.046997543563570054 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 9484339.070811357, + "scoreError": 303876.42890579335, + "scoreConfidence": [ + 9180462.641905565, + 9788215.49971715 + ], + "scorePercentiles": { + "0.0": 9283828.396103896, + "50.0": 9397674.42629108, + "90.0": 9777845.836754642, + "95.0": 9777845.836754642, + "99.0": 9777845.836754642, + "99.9": 9777845.836754642, + "99.99": 9777845.836754642, + "99.999": 9777845.836754642, + "99.9999": 9777845.836754642, + "100.0": 9777845.836754642 + }, + "scoreUnit": "ns/op", + "rawData": [ + [ + 9380661.102155576, + 9355213.106641721, + 9283828.396103896 + ], + [ + 9397674.42629108, + 9401537.636278195, + 9390028.017840376 + ], + [ + 9777845.836754642, + 9646593.927675989, + 9725669.187560739 + ] + ] + }, + "secondaryMetrics": { + } + } +] + + diff --git a/performance-results/2025-04-07T02:23:04Z-27b9defd98c4d044b6142c18773188f0dc9113c2-jdk17.json b/performance-results/2025-04-07T02:23:04Z-27b9defd98c4d044b6142c18773188f0dc9113c2-jdk17.json new file mode 100644 index 0000000000..007f18eb8c --- /dev/null +++ b/performance-results/2025-04-07T02:23:04Z-27b9defd98c4d044b6142c18773188f0dc9113c2-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion": "1.37", + "benchmark": "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 2, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "howManyItems": "5" + }, + "primaryMetric": { + "score": 3.4024128744691158, + "scoreError": 0.04158750625008169, + "scoreConfidence": [ + 3.360825368219034, + 3.4440003807191975 + ], + "scorePercentiles": { + "0.0": 3.3944039605121104, + "50.0": 3.40345905590568, + "90.0": 3.4083294255529943, + "95.0": 3.4083294255529943, + "99.0": 3.4083294255529943, + "99.9": 3.4083294255529943, + "99.99": 3.4083294255529943, + "99.999": 3.4083294255529943, + "99.9999": 3.4083294255529943, + "100.0": 3.4083294255529943 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 3.3944039605121104, + 3.4083294255529943 + ], + [ + 3.4000739473145463, + 3.406844164496813 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 2, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "howManyItems": "10" + }, + "primaryMetric": { + "score": 1.7155725537784197, + "scoreError": 0.037770129964421216, + "scoreConfidence": [ + 1.6778024238139984, + 1.753342683742841 + ], + "scorePercentiles": { + "0.0": 1.710161968644825, + "50.0": 1.7154011487883323, + "90.0": 1.7213259488921897, + "95.0": 1.7213259488921897, + "99.0": 1.7213259488921897, + "99.9": 1.7213259488921897, + "99.99": 1.7213259488921897, + "99.999": 1.7213259488921897, + "99.9999": 1.7213259488921897, + "100.0": 1.7213259488921897 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 1.7198764284685448, + 1.7213259488921897 + ], + [ + 1.7109258691081197, + 1.710161968644825 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 2, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "howManyItems": "20" + }, + "primaryMetric": { + "score": 0.8640943472992049, + "scoreError": 0.004405615686319763, + "scoreConfidence": [ + 0.8596887316128851, + 0.8684999629855247 + ], + "scorePercentiles": { + "0.0": 0.8632641986249527, + "50.0": 0.8641162781756921, + "90.0": 0.8648806342204824, + "95.0": 0.8648806342204824, + "99.0": 0.8648806342204824, + "99.9": 0.8648806342204824, + "99.99": 0.8648806342204824, + "99.999": 0.8648806342204824, + "99.9999": 0.8648806342204824, + "100.0": 0.8648806342204824 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 0.8648806342204824, + 0.8643237523893058 + ], + [ + 0.8632641986249527, + 0.8639088039620784 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 15.917522993984761, + "scoreError": 0.10534551178634009, + "scoreConfidence": [ + 15.812177482198422, + 16.0228685057711 + ], + "scorePercentiles": { + "0.0": 15.847175310824856, + "50.0": 15.886193196714204, + "90.0": 15.998838791758699, + "95.0": 15.998838791758699, + "99.0": 15.998838791758699, + "99.9": 15.998838791758699, + "99.99": 15.998838791758699, + "99.999": 15.998838791758699, + "99.9999": 15.998838791758699, + "100.0": 15.998838791758699 + }, + "scoreUnit": "ops/ms", + "rawData": [ + [ + 15.998658314668303, + 15.885772075707989, + 15.853625494474564 + ], + [ + 15.952482344330894, + 15.972257475645264, + 15.998838791758699 + ], + [ + 15.862703941738092, + 15.847175310824856, + 15.886193196714204 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 2651.996925133564, + "scoreError": 102.61405658300019, + "scoreConfidence": [ + 2549.382868550564, + 2754.6109817165643 + ], + "scorePercentiles": { + "0.0": 2594.5766768309095, + "50.0": 2621.8559833967493, + "90.0": 2759.3571287575314, + "95.0": 2759.3571287575314, + "99.0": 2759.3571287575314, + "99.9": 2759.3571287575314, + "99.99": 2759.3571287575314, + "99.999": 2759.3571287575314, + "99.9999": 2759.3571287575314, + "100.0": 2759.3571287575314 + }, + "scoreUnit": "ops/ms", + "rawData": [ + [ + 2642.229533006958, + 2621.8559833967493, + 2614.1465639076587 + ], + [ + 2703.6596783021764, + 2724.2967547863987, + 2759.3571287575314 + ], + [ + 2609.049711493145, + 2598.8002957205467, + 2594.5766768309095 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENF1Performance.benchMarkThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 68612.0898374958, + "scoreError": 919.1459755874994, + "scoreConfidence": [ + 67692.94386190831, + 69531.2358130833 + ], + "scorePercentiles": { + "0.0": 67452.23010905962, + "50.0": 68636.00030823321, + "90.0": 69250.59981145305, + "95.0": 69250.59981145305, + "99.0": 69250.59981145305, + "99.9": 69250.59981145305, + "99.99": 69250.59981145305, + "99.999": 69250.59981145305, + "99.9999": 69250.59981145305, + "100.0": 69250.59981145305 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 68357.6305934753, + 68326.28436629583, + 67452.23010905962 + ], + [ + 68968.79799847226, + 69250.59981145305, + 69213.97860275264 + ], + [ + 68631.82410693438, + 68636.00030823321, + 68671.46264078599 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 330.4601630317331, + "scoreError": 9.658737192895103, + "scoreConfidence": [ + 320.801425838838, + 340.1189002246282 + ], + "scorePercentiles": { + "0.0": 323.1202470082651, + "50.0": 328.76437581551824, + "90.0": 341.84570372389413, + "95.0": 341.84570372389413, + "99.0": 341.84570372389413, + "99.9": 341.84570372389413, + "99.99": 341.84570372389413, + "99.999": 341.84570372389413, + "99.9999": 341.84570372389413, + "100.0": 341.84570372389413 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 329.79261883074423, + 327.7660443555497, + 328.76437581551824 + ], + [ + 333.16257444872934, + 341.84570372389413, + 336.19328864061754 + ], + [ + 325.6343215111571, + 323.1202470082651, + 327.86229295112247 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode": "thrpt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 100.12561032974878, + "scoreError": 2.8985841561115095, + "scoreConfidence": [ + 97.22702617363727, + 103.02419448586029 + ], + "scorePercentiles": { + "0.0": 97.95482936466934, + "50.0": 100.3875153367714, + "90.0": 103.3944677652683, + "95.0": 103.3944677652683, + "99.0": 103.3944677652683, + "99.9": 103.3944677652683, + "99.99": 103.3944677652683, + "99.999": 103.3944677652683, + "99.9999": 103.3944677652683, + "100.0": 103.3944677652683 + }, + "scoreUnit": "ops/s", + "rawData": [ + [ + 100.8323274119472, + 100.4198752326016, + 98.84554145420253 + ], + [ + 99.6008992466689, + 97.95482936466934, + 98.16208928086066 + ], + [ + 100.3875153367714, + 103.3944677652683, + 101.5329478747493 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 0.06316792203283529, + "scoreError": 8.270715540534216E-4, + "scoreConfidence": [ + 0.06234085047878187, + 0.06399499358688872 + ], + "scorePercentiles": { + "0.0": 0.06222177331723889, + "50.0": 0.06337011391907735, + "90.0": 0.06358116983507331, + "95.0": 0.06358116983507331, + "99.0": 0.06358116983507331, + "99.9": 0.06358116983507331, + "99.99": 0.06358116983507331, + "99.999": 0.06358116983507331, + "99.9999": 0.06358116983507331, + "100.0": 0.06358116983507331 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.06349092706263293, + 0.06334888231195125, + 0.06337011391907735 + ], + [ + 0.0635717372429357, + 0.06358116983507331, + 0.06350392368850533 + ], + [ + 0.06273545851996838, + 0.06222177331723889, + 0.06268731239813445 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 3.8155791647813083E-4, + "scoreError": 3.3424823701870774E-6, + "scoreConfidence": [ + 3.7821543410794376E-4, + 3.849003988483179E-4 + ], + "scorePercentiles": { + "0.0": 3.7877016592745467E-4, + "50.0": 3.822095981027384E-4, + "90.0": 3.842126257983555E-4, + "95.0": 3.842126257983555E-4, + "99.0": 3.842126257983555E-4, + "99.9": 3.842126257983555E-4, + "99.99": 3.842126257983555E-4, + "99.999": 3.842126257983555E-4, + "99.9999": 3.842126257983555E-4, + "100.0": 3.842126257983555E-4 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 3.822095981027384E-4, + 3.8229752960112107E-4, + 3.801560559184481E-4 + ], + [ + 3.7877016592745467E-4, + 3.7948895620940705E-4, + 3.800347896686719E-4 + ], + [ + 3.838236461244403E-4, + 3.8302788095254055E-4, + 3.842126257983555E-4 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENF1Performance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 0.014208448375770424, + "scoreError": 4.036614484293156E-5, + "scoreConfidence": [ + 0.014168082230927493, + 0.014248814520613355 + ], + "scorePercentiles": { + "0.0": 0.014178370370107812, + "50.0": 0.014204685320049261, + "90.0": 0.014251159324333375, + "95.0": 0.014251159324333375, + "99.0": 0.014251159324333375, + "99.9": 0.014251159324333375, + "99.99": 0.014251159324333375, + "99.999": 0.014251159324333375, + "99.9999": 0.014251159324333375, + "100.0": 0.014251159324333375 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.01422632329773477, + 0.014251159324333375, + 0.014191335593985218 + ], + [ + 0.014178370370107812, + 0.014186347490183172, + 0.01419074600570745 + ], + [ + 0.014204685320049261, + 0.014222163774860056, + 0.014224904204972681 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENF2Performance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 0.9891671827289721, + "scoreError": 0.005271542909133186, + "scoreConfidence": [ + 0.9838956398198389, + 0.9944387256381053 + ], + "scorePercentiles": { + "0.0": 0.9848689664171755, + "50.0": 0.9887918086810362, + "90.0": 0.9937846931332605, + "95.0": 0.9937846931332605, + "99.0": 0.9937846931332605, + "99.9": 0.9937846931332605, + "99.99": 0.9937846931332605, + "99.999": 0.9937846931332605, + "99.9999": 0.9937846931332605, + "100.0": 0.9937846931332605 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.9887918086810362, + 0.9876427126209757, + 0.9872937858623754 + ], + [ + 0.9858262918966877, + 0.9848689664171755, + 0.989383180846854 + ], + [ + 0.992224959718226, + 0.9937846931332605, + 0.9926882453841572 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "5 s", + "measurementBatchSize": 1, + "params": { + "howDeep": "2" + }, + "primaryMetric": { + "score": 0.013286598302855711, + "scoreError": 2.885899395432918E-4, + "scoreConfidence": [ + 0.01299800836331242, + 0.013575188242399002 + ], + "scorePercentiles": { + "0.0": 0.013133001691491848, + "50.0": 0.013278352595363613, + "90.0": 0.01340046419478466, + "95.0": 0.01340046419478466, + "99.0": 0.01340046419478466, + "99.9": 0.01340046419478466, + "99.99": 0.01340046419478466, + "99.999": 0.01340046419478466, + "99.9999": 0.01340046419478466, + "100.0": 0.01340046419478466 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.013133001691491848, + 0.013239373324930958, + 0.013238407885644388 + ], + [ + 0.013317331865796266, + 0.013391010854486147, + 0.01340046419478466 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 2, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "5 s", + "measurementBatchSize": 1, + "params": { + "howDeep": "10" + }, + "primaryMetric": { + "score": 3.9518865488084622, + "scoreError": 0.1620644508117164, + "scoreConfidence": [ + 3.789822097996746, + 4.113950999620179 + ], + "scorePercentiles": { + "0.0": 3.8908548794712288, + "50.0": 3.9458725575215814, + "90.0": 4.017380144578313, + "95.0": 4.017380144578313, + "99.0": 4.017380144578313, + "99.9": 4.017380144578313, + "99.99": 4.017380144578313, + "99.999": 4.017380144578313, + "99.9999": 4.017380144578313, + "100.0": 4.017380144578313 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 3.971634164416203, + 4.017380144578313, + 4.015910879614768 + ], + [ + 3.895428274143302, + 3.8908548794712288, + 3.920110950626959 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "primaryMetric": { + "score": 3.0523075817714425, + "scoreError": 0.06250911760604816, + "scoreConfidence": [ + 2.9897984641653945, + 3.1148166993774904 + ], + "scorePercentiles": { + "0.0": 2.9699671710213775, + "50.0": 3.0696655647636586, + "90.0": 3.086972935802469, + "95.0": 3.086972935802469, + "99.0": 3.086972935802469, + "99.9": 3.086972935802469, + "99.99": 3.086972935802469, + "99.999": 3.086972935802469, + "99.9999": 3.086972935802469, + "100.0": 3.086972935802469 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 3.0423442236081533, + 3.08352511621455, + 3.072799676497696 + ], + [ + 3.031278664746893, + 3.086972935802469, + 3.077165876 + ], + [ + 3.0696655647636586, + 2.9699671710213775, + 3.037049007288187 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.18166747949930095, + "scoreError": 0.006648671920999719, + "scoreConfidence": [ + 0.17501880757830124, + 0.18831615142030067 + ], + "scorePercentiles": { + "0.0": 0.1764090981160034, + "50.0": 0.18331922956499422, + "90.0": 0.1866240205467948, + "95.0": 0.1866240205467948, + "99.0": 0.1866240205467948, + "99.9": 0.1866240205467948, + "99.99": 0.1866240205467948, + "99.999": 0.1866240205467948, + "99.9999": 0.1866240205467948, + "100.0": 0.1866240205467948 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.1866240205467948, + 0.18308862911021603, + 0.18331922956499422 + ], + [ + 0.18389326961622626, + 0.1843292598982526, + 0.18405789231024075 + ], + [ + 0.1767467385779176, + 0.1764090981160034, + 0.17653917775306288 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.32936443132369997, + "scoreError": 0.016700051163016847, + "scoreConfidence": [ + 0.3126643801606831, + 0.34606448248671684 + ], + "scorePercentiles": { + "0.0": 0.3160410036028064, + "50.0": 0.33423063933823527, + "90.0": 0.3384082277757098, + "95.0": 0.3384082277757098, + "99.0": 0.3384082277757098, + "99.9": 0.3384082277757098, + "99.99": 0.3384082277757098, + "99.999": 0.3384082277757098, + "99.9999": 0.3384082277757098, + "100.0": 0.3384082277757098 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.3384082277757098, + 0.3366214163188367, + 0.3374201485930225 + ], + [ + 0.335473614747224, + 0.33423063933823527, + 0.33330557534246574 + ], + [ + 0.3160410036028064, + 0.3164667069936709, + 0.3163125492013285 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.15942278226557283, + "scoreError": 0.0011649283398282816, + "scoreConfidence": [ + 0.15825785392574454, + 0.1605877106054011 + ], + "scorePercentiles": { + "0.0": 0.158541066569431, + "50.0": 0.15914956365083155, + "90.0": 0.16043488962330746, + "95.0": 0.16043488962330746, + "99.0": 0.16043488962330746, + "99.9": 0.16043488962330746, + "99.99": 0.16043488962330746, + "99.999": 0.16043488962330746, + "99.9999": 0.16043488962330746, + "100.0": 0.16043488962330746 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.16024201910042143, + 0.16010645414665386, + 0.16043488962330746 + ], + [ + 0.158541066569431, + 0.1588924116656339, + 0.15914956365083155 + ], + [ + 0.1595501935288299, + 0.15875188312987157, + 0.15913655897517504 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.38738454017209295, + "scoreError": 0.005927807766160227, + "scoreConfidence": [ + 0.3814567324059327, + 0.3933123479382532 + ], + "scorePercentiles": { + "0.0": 0.382517749684428, + "50.0": 0.3899068544525889, + "90.0": 0.39072758224583887, + "95.0": 0.39072758224583887, + "99.0": 0.39072758224583887, + "99.9": 0.39072758224583887, + "99.99": 0.39072758224583887, + "99.999": 0.39072758224583887, + "99.9999": 0.39072758224583887, + "100.0": 0.39072758224583887 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.39072758224583887, + 0.3852419058130128, + 0.38403093575268815 + ], + [ + 0.39006229202745923, + 0.3832175821965052, + 0.382517749684428 + ], + [ + 0.3905045636299738, + 0.3902513957463415, + 0.3899068544525889 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.15627878522040609, + "scoreError": 7.785367456182951E-4, + "scoreConfidence": [ + 0.1555002484747878, + 0.15705732196602437 + ], + "scorePercentiles": { + "0.0": 0.15560179941806188, + "50.0": 0.15620902129088693, + "90.0": 0.1568640207839877, + "95.0": 0.1568640207839877, + "99.0": 0.1568640207839877, + "99.9": 0.1568640207839877, + "99.99": 0.1568640207839877, + "99.999": 0.1568640207839877, + "99.9999": 0.1568640207839877, + "100.0": 0.1568640207839877 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.15640216331190665, + 0.15572468925673888, + 0.15560179941806188 + ], + [ + 0.1568640207839877, + 0.1567813124872619, + 0.15676521391732376 + ], + [ + 0.15597704858533237, + 0.15620902129088693, + 0.15618379793215467 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 0.04806022908342739, + "scoreError": 0.0026399188420189288, + "scoreConfidence": [ + 0.04542031024140846, + 0.050700147925446325 + ], + "scorePercentiles": { + "0.0": 0.046529167814369866, + "50.0": 0.04744658384179611, + "90.0": 0.050145358333792994, + "95.0": 0.050145358333792994, + "99.0": 0.050145358333792994, + "99.9": 0.050145358333792994, + "99.99": 0.050145358333792994, + "99.999": 0.050145358333792994, + "99.9999": 0.050145358333792994, + "100.0": 0.050145358333792994 + }, + "scoreUnit": "ms/op", + "rawData": [ + [ + 0.047653858208243985, + 0.04744658384179611, + 0.047323675478198324 + ], + [ + 0.050145358333792994, + 0.05012683766673183, + 0.049999637767244656 + ], + [ + 0.0466059831382126, + 0.046529167814369866, + 0.0467109595022561 + ] + ] + }, + "secondaryMetrics": { + } + }, + { + "jmhVersion": "1.37", + "benchmark": "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode": "avgt", + "threads": 1, + "forks": 3, + "jvm": "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs": [ + ], + "jdkVersion": "17.0.10", + "vmName": "OpenJDK 64-Bit Server VM", + "vmVersion": "17.0.10+7-LTS", + "warmupIterations": 2, + "warmupTime": "5 s", + "warmupBatchSize": 1, + "measurementIterations": 3, + "measurementTime": "10 s", + "measurementBatchSize": 1, + "params": { + "size": "100" + }, + "primaryMetric": { + "score": 1.0190032978742655E7, + "scoreError": 360464.8084112424, + "scoreConfidence": [ + 9829568.170331413, + 1.0550497787153898E7 + ], + "scorePercentiles": { + "0.0": 9784278.565982405, + "50.0": 1.0226893349693252E7, + "90.0": 1.051854128811777E7, + "95.0": 1.051854128811777E7, + "99.0": 1.051854128811777E7, + "99.9": 1.051854128811777E7, + "99.99": 1.051854128811777E7, + "99.999": 1.051854128811777E7, + "99.9999": 1.051854128811777E7, + "100.0": 1.051854128811777E7 + }, + "scoreUnit": "ns/op", + "rawData": [ + [ + 1.0004127156E7, + 1.0086599470766129E7, + 9784278.565982405 + ], + [ + 1.0226893349693252E7, + 1.0233475158486707E7, + 1.020059461365953E7 + ], + [ + 1.026109897025641E7, + 1.0394688235721704E7, + 1.051854128811777E7 + ] + ] + }, + "secondaryMetrics": { + } + } +] + + diff --git a/performance-results/2025-04-08T00:39:51Z-12c944f587bcd78172e3c7e98da29714f8ce3cca-jdk17.json b/performance-results/2025-04-08T00:39:51Z-12c944f587bcd78172e3c7e98da29714f8ce3cca-jdk17.json new file mode 100644 index 0000000000..a7f7d57fcc --- /dev/null +++ b/performance-results/2025-04-08T00:39:51Z-12c944f587bcd78172e3c7e98da29714f8ce3cca-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.405944633730623, + "scoreError" : 0.035690595423983874, + "scoreConfidence" : [ + 3.3702540383066393, + 3.4416352291546066 + ], + "scorePercentiles" : { + "0.0" : 3.399675791278035, + "50.0" : 3.406647411164472, + "90.0" : 3.410807921315513, + "95.0" : 3.410807921315513, + "99.0" : 3.410807921315513, + "99.9" : 3.410807921315513, + "99.99" : 3.410807921315513, + "99.999" : 3.410807921315513, + "99.9999" : 3.410807921315513, + "100.0" : 3.410807921315513 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.399675791278035, + 3.4029340490166438 + ], + [ + 3.4103607733123, + 3.410807921315513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.717810127163518, + "scoreError" : 0.004962954978142403, + "scoreConfidence" : [ + 1.7128471721853755, + 1.7227730821416605 + ], + "scorePercentiles" : { + "0.0" : 1.7169658918290782, + "50.0" : 1.7178760568128157, + "90.0" : 1.7185225031993625, + "95.0" : 1.7185225031993625, + "99.0" : 1.7185225031993625, + "99.9" : 1.7185225031993625, + "99.99" : 1.7185225031993625, + "99.999" : 1.7185225031993625, + "99.9999" : 1.7185225031993625, + "100.0" : 1.7185225031993625 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7169658918290782, + 1.7185225031993625 + ], + [ + 1.7183959945985663, + 1.7173561190270652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8626232614863947, + "scoreError" : 0.006234935229327949, + "scoreConfidence" : [ + 0.8563883262570667, + 0.8688581967157226 + ], + "scorePercentiles" : { + "0.0" : 0.8614433123591576, + "50.0" : 0.8626224986068669, + "90.0" : 0.8638047363726871, + "95.0" : 0.8638047363726871, + "99.0" : 0.8638047363726871, + "99.9" : 0.8638047363726871, + "99.99" : 0.8638047363726871, + "99.999" : 0.8638047363726871, + "99.9999" : 0.8638047363726871, + "100.0" : 0.8638047363726871 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8614433123591576, + 0.8626710710054474 + ], + [ + 0.8625739262082865, + 0.8638047363726871 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.677433385256291, + "scoreError" : 0.19462801363096613, + "scoreConfidence" : [ + 15.482805371625325, + 15.872061398887258 + ], + "scorePercentiles" : { + "0.0" : 15.462205303003266, + "50.0" : 15.726769142037734, + "90.0" : 15.78390474678472, + "95.0" : 15.78390474678472, + "99.0" : 15.78390474678472, + "99.9" : 15.78390474678472, + "99.99" : 15.78390474678472, + "99.999" : 15.78390474678472, + "99.9999" : 15.78390474678472, + "100.0" : 15.78390474678472 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.744876827392385, + 15.780592777145946, + 15.726769142037734 + ], + [ + 15.697986326859112, + 15.764693818298959, + 15.78390474678472 + ], + [ + 15.570596367740702, + 15.462205303003266, + 15.565275158043814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2566.1604164587816, + "scoreError" : 49.29470214898458, + "scoreConfidence" : [ + 2516.865714309797, + 2615.455118607766 + ], + "scorePercentiles" : { + "0.0" : 2527.888056908459, + "50.0" : 2554.397956024521, + "90.0" : 2612.178703428962, + "95.0" : 2612.178703428962, + "99.0" : 2612.178703428962, + "99.9" : 2612.178703428962, + "99.99" : 2612.178703428962, + "99.999" : 2612.178703428962, + "99.9999" : 2612.178703428962, + "100.0" : 2612.178703428962 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2567.293090950401, + 2542.9110811890646, + 2527.888056908459 + ], + [ + 2544.9517635995703, + 2554.397956024521, + 2551.336723797366 + ], + [ + 2600.377240428651, + 2594.1091318020376, + 2612.178703428962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70595.18887645093, + "scoreError" : 702.324358673368, + "scoreConfidence" : [ + 69892.86451777756, + 71297.51323512431 + ], + "scorePercentiles" : { + "0.0" : 70235.28515029328, + "50.0" : 70360.2975377157, + "90.0" : 71187.86981658025, + "95.0" : 71187.86981658025, + "99.0" : 71187.86981658025, + "99.9" : 71187.86981658025, + "99.99" : 71187.86981658025, + "99.999" : 71187.86981658025, + "99.9999" : 71187.86981658025, + "100.0" : 71187.86981658025 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70477.2726107129, + 70286.63545650164, + 70282.00587232129 + ], + [ + 71187.86981658025, + 71180.59375003455, + 71060.22387718175 + ], + [ + 70286.51581671699, + 70235.28515029328, + 70360.2975377157 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 322.51384096300905, + "scoreError" : 15.37397122766947, + "scoreConfidence" : [ + 307.1398697353396, + 337.8878121906785 + ], + "scorePercentiles" : { + "0.0" : 311.04889485320496, + "50.0" : 322.1449897161936, + "90.0" : 334.9862414785886, + "95.0" : 334.9862414785886, + "99.0" : 334.9862414785886, + "99.9" : 334.9862414785886, + "99.99" : 334.9862414785886, + "99.999" : 334.9862414785886, + "99.9999" : 334.9862414785886, + "100.0" : 334.9862414785886 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 332.20229146610575, + 334.9862414785886, + 330.5952601484892 + ], + [ + 311.9478280671314, + 311.04889485320496, + 312.79536615560716 + ], + [ + 320.67349021117036, + 322.1449897161936, + 326.23020657059044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 99.789343910173, + "scoreError" : 5.012338003208437, + "scoreConfidence" : [ + 94.77700590696456, + 104.80168191338144 + ], + "scorePercentiles" : { + "0.0" : 95.22725117955228, + "50.0" : 100.57495025978356, + "90.0" : 103.80877570265383, + "95.0" : 103.80877570265383, + "99.0" : 103.80877570265383, + "99.9" : 103.80877570265383, + "99.99" : 103.80877570265383, + "99.999" : 103.80877570265383, + "99.9999" : 103.80877570265383, + "100.0" : 103.80877570265383 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.74843432082963, + 101.28797280276068, + 99.41480547835579 + ], + [ + 97.95222559449202, + 95.22725117955228, + 95.66242419199332 + ], + [ + 100.57495025978356, + 102.4272556611359, + 103.80877570265383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06338794162120033, + "scoreError" : 1.5726534835213874E-4, + "scoreConfidence" : [ + 0.06323067627284819, + 0.06354520696955247 + ], + "scorePercentiles" : { + "0.0" : 0.06324880637285905, + "50.0" : 0.06339518815414948, + "90.0" : 0.06354354101985703, + "95.0" : 0.06354354101985703, + "99.0" : 0.06354354101985703, + "99.9" : 0.06354354101985703, + "99.99" : 0.06354354101985703, + "99.999" : 0.06354354101985703, + "99.9999" : 0.06354354101985703, + "100.0" : 0.06354354101985703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0633856410973144, + 0.0632769373821486, + 0.06339794185854845 + ], + [ + 0.06348533288471306, + 0.06333227822672577, + 0.06342580759448711 + ], + [ + 0.06324880637285905, + 0.06339518815414948, + 0.06354354101985703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9592109738320277E-4, + "scoreError" : 1.830194236340082E-5, + "scoreConfidence" : [ + 3.7761915501980194E-4, + 4.142230397466036E-4 + ], + "scorePercentiles" : { + "0.0" : 3.8375898326365566E-4, + "50.0" : 3.916885380229883E-4, + "90.0" : 4.127118819188557E-4, + "95.0" : 4.127118819188557E-4, + "99.0" : 4.127118819188557E-4, + "99.9" : 4.127118819188557E-4, + "99.99" : 4.127118819188557E-4, + "99.999" : 4.127118819188557E-4, + "99.9999" : 4.127118819188557E-4, + "100.0" : 4.127118819188557E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.127118819188557E-4, + 4.095822106135256E-4, + 4.073474213177044E-4 + ], + [ + 3.880206140621127E-4, + 3.9356238511074627E-4, + 3.916885380229883E-4 + ], + [ + 3.885579488450353E-4, + 3.880598932942008E-4, + 3.8375898326365566E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014362073577426863, + "scoreError" : 1.0619998578927389E-4, + "scoreConfidence" : [ + 0.014255873591637588, + 0.014468273563216137 + ], + "scorePercentiles" : { + "0.0" : 0.014293950502069025, + "50.0" : 0.01433580733639829, + "90.0" : 0.014468589814818834, + "95.0" : 0.014468589814818834, + "99.0" : 0.014468589814818834, + "99.9" : 0.014468589814818834, + "99.99" : 0.014468589814818834, + "99.999" : 0.014468589814818834, + "99.9999" : 0.014468589814818834, + "100.0" : 0.014468589814818834 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014318969188826188, + 0.014298744784956768, + 0.014360223446495218 + ], + [ + 0.014293950502069025, + 0.014330278852216579, + 0.01433580733639829 + ], + [ + 0.014468589814818834, + 0.01443621848072284, + 0.01441587979033802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9983918706205172, + "scoreError" : 0.011931758849890535, + "scoreConfidence" : [ + 0.9864601117706266, + 1.0103236294704077 + ], + "scorePercentiles" : { + "0.0" : 0.9907781139290668, + "50.0" : 0.9955621412643106, + "90.0" : 1.0086233100353001, + "95.0" : 1.0086233100353001, + "99.0" : 1.0086233100353001, + "99.9" : 1.0086233100353001, + "99.99" : 1.0086233100353001, + "99.999" : 1.0086233100353001, + "99.9999" : 1.0086233100353001, + "100.0" : 1.0086233100353001 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9920449626029164, + 0.992189108939379, + 0.9907781139290668 + ], + [ + 0.9955621412643106, + 0.9951834170564235, + 0.997519147830424 + ], + [ + 1.0086233100353001, + 1.007524445194439, + 1.0061021887323944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013198445895714471, + "scoreError" : 5.989511316419171E-4, + "scoreConfidence" : [ + 0.012599494764072555, + 0.013797397027356387 + ], + "scorePercentiles" : { + "0.0" : 0.012995667514827657, + "50.0" : 0.01319977358985635, + "90.0" : 0.013397833911212098, + "95.0" : 0.013397833911212098, + "99.0" : 0.013397833911212098, + "99.9" : 0.013397833911212098, + "99.99" : 0.013397833911212098, + "99.999" : 0.013397833911212098, + "99.9999" : 0.013397833911212098, + "100.0" : 0.013397833911212098 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013387454538639279, + 0.013394747606418601, + 0.013397833911212098 + ], + [ + 0.012995667514827657, + 0.013012092641073418, + 0.013002879162115774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8936852214575004, + "scoreError" : 0.2642461125837702, + "scoreConfidence" : [ + 3.62943910887373, + 4.157931334041271 + ], + "scorePercentiles" : { + "0.0" : 3.78609557002271, + "50.0" : 3.8987543262238553, + "90.0" : 3.9828089665605098, + "95.0" : 3.9828089665605098, + "99.0" : 3.9828089665605098, + "99.9" : 3.9828089665605098, + "99.99" : 3.9828089665605098, + "99.999" : 3.9828089665605098, + "99.9999" : 3.9828089665605098, + "100.0" : 3.9828089665605098 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9776420389507154, + 3.9764091383147853, + 3.9828089665605098 + ], + [ + 3.78609557002271, + 3.818056100763359, + 3.821099514132926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.093584690463981, + "scoreError" : 0.025069616616546733, + "scoreConfidence" : [ + 3.068515073847434, + 3.118654307080528 + ], + "scorePercentiles" : { + "0.0" : 3.076262235004614, + "50.0" : 3.094422233910891, + "90.0" : 3.1102522154850747, + "95.0" : 3.1102522154850747, + "99.0" : 3.1102522154850747, + "99.9" : 3.1102522154850747, + "99.99" : 3.1102522154850747, + "99.999" : 3.1102522154850747, + "99.9999" : 3.1102522154850747, + "100.0" : 3.1102522154850747 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0807677498459642, + 3.077672676, + 3.079972659069911 + ], + [ + 3.094422233910891, + 3.076262235004614, + 3.108845642213242 + ], + [ + 3.1102522154850747, + 3.1085397743940337, + 3.1055270282520957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17480657578646794, + "scoreError" : 0.003315430116910228, + "scoreConfidence" : [ + 0.1714911456695577, + 0.17812200590337818 + ], + "scorePercentiles" : { + "0.0" : 0.17214637813086364, + "50.0" : 0.1758951546944806, + "90.0" : 0.17650921792925728, + "95.0" : 0.17650921792925728, + "99.0" : 0.17650921792925728, + "99.9" : 0.17650921792925728, + "99.99" : 0.17650921792925728, + "99.999" : 0.17650921792925728, + "99.9999" : 0.17650921792925728, + "100.0" : 0.17650921792925728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17596423460787247, + 0.1758951546944806, + 0.17582233250698875 + ], + [ + 0.17225540363448455, + 0.17217202720245167, + 0.17214637813086364 + ], + [ + 0.17650921792925728, + 0.17630945460155148, + 0.17618497877026074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3386760647654293, + "scoreError" : 0.024104901314377963, + "scoreConfidence" : [ + 0.3145711634510513, + 0.36278096607980725 + ], + "scorePercentiles" : { + "0.0" : 0.3216662912927402, + "50.0" : 0.33732743230115364, + "90.0" : 0.3561887818777604, + "95.0" : 0.3561887818777604, + "99.0" : 0.3561887818777604, + "99.9" : 0.3561887818777604, + "99.99" : 0.3561887818777604, + "99.999" : 0.3561887818777604, + "99.9999" : 0.3561887818777604, + "100.0" : 0.3561887818777604 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32364722110747923, + 0.32257669965484986, + 0.3216662912927402 + ], + [ + 0.3390080094240483, + 0.33732743230115364, + 0.33685993771684575 + ], + [ + 0.3561887818777604, + 0.3552160612723333, + 0.35559414824165275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16510065358156611, + "scoreError" : 0.0030277860479547714, + "scoreConfidence" : [ + 0.16207286753361133, + 0.1681284396295209 + ], + "scorePercentiles" : { + "0.0" : 0.1624358493925021, + "50.0" : 0.16603372570147767, + "90.0" : 0.16683119488839213, + "95.0" : 0.16683119488839213, + "99.0" : 0.16683119488839213, + "99.9" : 0.16683119488839213, + "99.99" : 0.16683119488839213, + "99.999" : 0.16683119488839213, + "99.9999" : 0.16683119488839213, + "100.0" : 0.16683119488839213 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16683119488839213, + 0.1664982001265359, + 0.16603372570147767 + ], + [ + 0.1627374155410903, + 0.1624358493925021, + 0.16319213214967607 + ], + [ + 0.16521613434882454, + 0.1664452391771109, + 0.1665159909084854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39415783773982344, + "scoreError" : 0.004520035612863572, + "scoreConfidence" : [ + 0.38963780212695986, + 0.398677873352687 + ], + "scorePercentiles" : { + "0.0" : 0.39106009846707335, + "50.0" : 0.3940456848575594, + "90.0" : 0.3981276557846962, + "95.0" : 0.3981276557846962, + "99.0" : 0.3981276557846962, + "99.9" : 0.3981276557846962, + "99.99" : 0.3981276557846962, + "99.999" : 0.3981276557846962, + "99.9999" : 0.3981276557846962, + "100.0" : 0.3981276557846962 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3967465585971594, + 0.3959194276664819, + 0.39635898129211256 + ], + [ + 0.3981276557846962, + 0.39156542715063236, + 0.3917368617988092 + ], + [ + 0.3940456848575594, + 0.39185984404388713, + 0.39106009846707335 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1591613929015046, + "scoreError" : 0.0015630194024168164, + "scoreConfidence" : [ + 0.15759837349908778, + 0.16072441230392143 + ], + "scorePercentiles" : { + "0.0" : 0.15776427671289064, + "50.0" : 0.1591903816042917, + "90.0" : 0.16114006611450393, + "95.0" : 0.16114006611450393, + "99.0" : 0.16114006611450393, + "99.9" : 0.16114006611450393, + "99.99" : 0.16114006611450393, + "99.999" : 0.16114006611450393, + "99.9999" : 0.16114006611450393, + "100.0" : 0.16114006611450393 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1593235681329361, + 0.158202761117527, + 0.15776427671289064 + ], + [ + 0.1591903816042917, + 0.15936757643946517, + 0.1591658167565933 + ], + [ + 0.16114006611450393, + 0.15932941627366007, + 0.15896867296167358 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048252539378800835, + "scoreError" : 0.0024906298363890464, + "scoreConfidence" : [ + 0.045761909542411786, + 0.050743169215189884 + ], + "scorePercentiles" : { + "0.0" : 0.04688616605403074, + "50.0" : 0.04756015620437262, + "90.0" : 0.05076947223463233, + "95.0" : 0.05076947223463233, + "99.0" : 0.05076947223463233, + "99.9" : 0.05076947223463233, + "99.99" : 0.05076947223463233, + "99.999" : 0.05076947223463233, + "99.9999" : 0.05076947223463233, + "100.0" : 0.05076947223463233 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047469081412845865, + 0.04756015620437262, + 0.047565522581443025 + ], + [ + 0.047265313576745835, + 0.0470043094303616, + 0.04688616605403074 + ], + [ + 0.05076947223463233, + 0.049876253347897, + 0.04987657956687847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.014297043956772E7, + "scoreError" : 216508.6620834925, + "scoreConfidence" : [ + 9926461.777484229, + 1.0359479101651212E7 + ], + "scorePercentiles" : { + "0.0" : 9917228.294350842, + "50.0" : 1.01066923010101E7, + "90.0" : 1.0297594556584362E7, + "95.0" : 1.0297594556584362E7, + "99.0" : 1.0297594556584362E7, + "99.9" : 1.0297594556584362E7, + "99.99" : 1.0297594556584362E7, + "99.999" : 1.0297594556584362E7, + "99.9999" : 1.0297594556584362E7, + "100.0" : 1.0297594556584362E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0069873019114688E7, + 9917228.294350842, + 1.0068325299798792E7 + ], + [ + 1.0297594556584362E7, + 1.0280031505652621E7, + 1.007314212386707E7 + ], + [ + 1.01066923010101E7, + 1.0190103263747454E7, + 1.0283743591983557E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-08T02:04:26Z-6afaab511c68984a71f6a7fb0d5b6eeb3ab31b33-jdk17.json b/performance-results/2025-04-08T02:04:26Z-6afaab511c68984a71f6a7fb0d5b6eeb3ab31b33-jdk17.json new file mode 100644 index 0000000000..d25e95698f --- /dev/null +++ b/performance-results/2025-04-08T02:04:26Z-6afaab511c68984a71f6a7fb0d5b6eeb3ab31b33-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4106745227547854, + "scoreError" : 0.024123632505928624, + "scoreConfidence" : [ + 3.386550890248857, + 3.434798155260714 + ], + "scorePercentiles" : { + "0.0" : 3.4064536280469113, + "50.0" : 3.4103674161046613, + "90.0" : 3.415509630762909, + "95.0" : 3.415509630762909, + "99.0" : 3.415509630762909, + "99.9" : 3.415509630762909, + "99.99" : 3.415509630762909, + "99.999" : 3.415509630762909, + "99.9999" : 3.415509630762909, + "100.0" : 3.415509630762909 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.409905586019726, + 3.410829246189597 + ], + [ + 3.4064536280469113, + 3.415509630762909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210421058833152, + "scoreError" : 0.006103258258501814, + "scoreConfidence" : [ + 1.7149388476248133, + 1.727145364141817 + ], + "scorePercentiles" : { + "0.0" : 1.7204591917970213, + "50.0" : 1.7206278973318931, + "90.0" : 1.7224534370724527, + "95.0" : 1.7224534370724527, + "99.0" : 1.7224534370724527, + "99.9" : 1.7224534370724527, + "99.99" : 1.7224534370724527, + "99.999" : 1.7224534370724527, + "99.9999" : 1.7224534370724527, + "100.0" : 1.7224534370724527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7224534370724527, + 1.7206016366680696 + ], + [ + 1.7206541579957164, + 1.7204591917970213 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654563752967519, + "scoreError" : 0.007096537131964505, + "scoreConfidence" : [ + 0.8583598381647874, + 0.8725529124287164 + ], + "scorePercentiles" : { + "0.0" : 0.8642995449812649, + "50.0" : 0.8653988285947679, + "90.0" : 0.8667282990162068, + "95.0" : 0.8667282990162068, + "99.0" : 0.8667282990162068, + "99.9" : 0.8667282990162068, + "99.99" : 0.8667282990162068, + "99.999" : 0.8667282990162068, + "99.9999" : 0.8667282990162068, + "100.0" : 0.8667282990162068 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667282990162068, + 0.8659712970328545 + ], + [ + 0.8642995449812649, + 0.8648263601566814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.039169161977497, + "scoreError" : 0.08986157586072346, + "scoreConfidence" : [ + 15.949307586116774, + 16.12903073783822 + ], + "scorePercentiles" : { + "0.0" : 15.939752753713112, + "50.0" : 16.069130366420104, + "90.0" : 16.080801611150523, + "95.0" : 16.080801611150523, + "99.0" : 16.080801611150523, + "99.9" : 16.080801611150523, + "99.99" : 16.080801611150523, + "99.999" : 16.080801611150523, + "99.9999" : 16.080801611150523, + "100.0" : 16.080801611150523 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.97787230253739, + 15.996364760659104, + 15.939752753713112 + ], + [ + 16.05469876719471, + 16.080763707650004, + 16.080801611150523 + ], + [ + 16.0751730730727, + 16.07796511539983, + 16.069130366420104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2630.1625248887117, + "scoreError" : 57.209961329511565, + "scoreConfidence" : [ + 2572.9525635592, + 2687.3724862182235 + ], + "scorePercentiles" : { + "0.0" : 2592.798432229326, + "50.0" : 2622.3161216064136, + "90.0" : 2678.388945940704, + "95.0" : 2678.388945940704, + "99.0" : 2678.388945940704, + "99.9" : 2678.388945940704, + "99.99" : 2678.388945940704, + "99.999" : 2678.388945940704, + "99.9999" : 2678.388945940704, + "100.0" : 2678.388945940704 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2622.3161216064136, + 2619.643989158748, + 2624.7367627947256 + ], + [ + 2592.798432229326, + 2594.1657410301773, + 2599.917540416809 + ], + [ + 2678.388945940704, + 2671.223826252167, + 2668.271364569331 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70019.6169006723, + "scoreError" : 1547.201487134348, + "scoreConfidence" : [ + 68472.41541353796, + 71566.81838780665 + ], + "scorePercentiles" : { + "0.0" : 68794.21140727811, + "50.0" : 70492.56392294558, + "90.0" : 70809.26628461784, + "95.0" : 70809.26628461784, + "99.0" : 70809.26628461784, + "99.9" : 70809.26628461784, + "99.99" : 70809.26628461784, + "99.999" : 70809.26628461784, + "99.9999" : 70809.26628461784, + "100.0" : 70809.26628461784 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70399.38096656189, + 70492.56392294558, + 70501.01512060892 + ], + [ + 68796.08737174375, + 68794.21140727811, + 68830.70340712844 + ], + [ + 70768.19688711762, + 70809.26628461784, + 70785.12673804846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 339.36903665076335, + "scoreError" : 14.334132583726097, + "scoreConfidence" : [ + 325.03490406703725, + 353.70316923448945 + ], + "scorePercentiles" : { + "0.0" : 325.1765145164509, + "50.0" : 344.0451947702268, + "90.0" : 345.8774124409928, + "95.0" : 345.8774124409928, + "99.0" : 345.8774124409928, + "99.9" : 345.8774124409928, + "99.99" : 345.8774124409928, + "99.999" : 345.8774124409928, + "99.9999" : 345.8774124409928, + "100.0" : 345.8774124409928 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.21681690101633, + 345.41313484856335, + 345.8774124409928 + ], + [ + 330.10532856465244, + 329.26548958525694, + 325.1765145164509 + ], + [ + 343.41495222249574, + 344.0451947702268, + 345.80648600721514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.83901719837074, + "scoreError" : 0.7838467724176471, + "scoreConfidence" : [ + 104.0551704259531, + 105.62286397078839 + ], + "scorePercentiles" : { + "0.0" : 103.89732083095693, + "50.0" : 104.92977893531283, + "90.0" : 105.4224951842652, + "95.0" : 105.4224951842652, + "99.0" : 105.4224951842652, + "99.9" : 105.4224951842652, + "99.99" : 105.4224951842652, + "99.999" : 105.4224951842652, + "99.9999" : 105.4224951842652, + "100.0" : 105.4224951842652 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.7047542000011, + 104.84750442724584, + 104.36712427236051 + ], + [ + 104.92977893531283, + 105.17436061540405, + 105.4224951842652 + ], + [ + 103.89732083095693, + 105.18003958420395, + 105.02777673558612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06252812410824989, + "scoreError" : 8.532023009857468E-4, + "scoreConfidence" : [ + 0.06167492180726414, + 0.06338132640923563 + ], + "scorePercentiles" : { + "0.0" : 0.06183504901257621, + "50.0" : 0.0623134390239343, + "90.0" : 0.06324152939428052, + "95.0" : 0.06324152939428052, + "99.0" : 0.06324152939428052, + "99.9" : 0.06324152939428052, + "99.99" : 0.06324152939428052, + "99.999" : 0.06324152939428052, + "99.9999" : 0.06324152939428052, + "100.0" : 0.06324152939428052 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06183504901257621, + 0.062202279838027466, + 0.0623134390239343 + ], + [ + 0.06219473836355947, + 0.062296954038025466, + 0.062397182677548575 + ], + [ + 0.06314039521404217, + 0.06313154941225489, + 0.06324152939428052 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6696603099080084E-4, + "scoreError" : 1.66230079353207E-5, + "scoreConfidence" : [ + 3.5034302305548014E-4, + 3.8358903892612154E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5855721342641257E-4, + "50.0" : 3.61532641186855E-4, + "90.0" : 3.807798742550273E-4, + "95.0" : 3.807798742550273E-4, + "99.0" : 3.807798742550273E-4, + "99.9" : 3.807798742550273E-4, + "99.99" : 3.807798742550273E-4, + "99.999" : 3.807798742550273E-4, + "99.9999" : 3.807798742550273E-4, + "100.0" : 3.807798742550273E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.61532641186855E-4, + 3.6175184273219994E-4, + 3.6120773541345187E-4 + ], + [ + 3.8077661358790953E-4, + 3.807798742550273E-4, + 3.7861814931453106E-4 + ], + [ + 3.5855721342641257E-4, + 3.593154338296459E-4, + 3.601547751711743E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014266204467328089, + "scoreError" : 4.1408579985298394E-4, + "scoreConfidence" : [ + 0.013852118667475105, + 0.014680290267181073 + ], + "scorePercentiles" : { + "0.0" : 0.014054820680863743, + "50.0" : 0.014150934975766796, + "90.0" : 0.014594906274263696, + "95.0" : 0.014594906274263696, + "99.0" : 0.014594906274263696, + "99.9" : 0.014594906274263696, + "99.99" : 0.014594906274263696, + "99.999" : 0.014594906274263696, + "99.9999" : 0.014594906274263696, + "100.0" : 0.014594906274263696 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014153143222289213, + 0.014150934975766796, + 0.014147816421464255 + ], + [ + 0.014054820680863743, + 0.014060506540161216, + 0.014057680542845214 + ], + [ + 0.014592110212896353, + 0.014594906274263696, + 0.014583921335402277 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9860856320916257, + "scoreError" : 0.011298110430866136, + "scoreConfidence" : [ + 0.9747875216607595, + 0.9973837425224918 + ], + "scorePercentiles" : { + "0.0" : 0.9768496805040047, + "50.0" : 0.9894034636921251, + "90.0" : 0.9924821984914649, + "95.0" : 0.9924821984914649, + "99.0" : 0.9924821984914649, + "99.9" : 0.9924821984914649, + "99.99" : 0.9924821984914649, + "99.999" : 0.9924821984914649, + "99.9999" : 0.9924821984914649, + "100.0" : 0.9924821984914649 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9894034636921251, + 0.9895949228181279, + 0.989354845370004 + ], + [ + 0.9924821984914649, + 0.9902797075948113, + 0.991923799642928 + ], + [ + 0.9778032469691044, + 0.9770788237420616, + 0.9768496805040047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013128283938799265, + "scoreError" : 0.0012657419077312822, + "scoreConfidence" : [ + 0.011862542031067983, + 0.014394025846530547 + ], + "scorePercentiles" : { + "0.0" : 0.012636009067383701, + "50.0" : 0.013204896402692226, + "90.0" : 0.013561459875454974, + "95.0" : 0.013561459875454974, + "99.0" : 0.013561459875454974, + "99.9" : 0.013561459875454974, + "99.99" : 0.013561459875454974, + "99.999" : 0.013561459875454974, + "99.9999" : 0.013561459875454974, + "100.0" : 0.013561459875454974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012901341007725137, + 0.012640616877338457, + 0.012636009067383701 + ], + [ + 0.013521825007234011, + 0.013508451797659315, + 0.013561459875454974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9252737683700407, + "scoreError" : 0.08983425073427523, + "scoreConfidence" : [ + 3.8354395176357654, + 4.015108019104316 + ], + "scorePercentiles" : { + "0.0" : 3.896490785825545, + "50.0" : 3.9164602392095684, + "90.0" : 3.9681580150674067, + "95.0" : 3.9681580150674067, + "99.0" : 3.9681580150674067, + "99.9" : 3.9681580150674067, + "99.99" : 3.9681580150674067, + "99.999" : 3.9681580150674067, + "99.9999" : 3.9681580150674067, + "100.0" : 3.9681580150674067 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9312583333333335, + 3.9681580150674067, + 3.9575685443037973 + ], + [ + 3.896490785825545, + 3.9016621450858033, + 3.8965047866043614 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.940115475982663, + "scoreError" : 0.1079441585697692, + "scoreConfidence" : [ + 2.832171317412894, + 3.0480596345524322 + ], + "scorePercentiles" : { + "0.0" : 2.8560816122215877, + "50.0" : 2.9505492666666666, + "90.0" : 3.034462321601942, + "95.0" : 3.034462321601942, + "99.0" : 3.034462321601942, + "99.9" : 3.034462321601942, + "99.99" : 3.034462321601942, + "99.999" : 3.034462321601942, + "99.9999" : 3.034462321601942, + "100.0" : 3.034462321601942 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9787892355568792, + 2.975750072597441, + 3.034462321601942 + ], + [ + 2.8676906290137616, + 2.859544243567753, + 2.8560816122215877 + ], + [ + 2.949631930404011, + 2.9505492666666666, + 2.988539972213923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17802944681101765, + "scoreError" : 0.006233857528802094, + "scoreConfidence" : [ + 0.17179558928221556, + 0.18426330433981974 + ], + "scorePercentiles" : { + "0.0" : 0.173863887391773, + "50.0" : 0.17729219266022517, + "90.0" : 0.18305629819326732, + "95.0" : 0.18305629819326732, + "99.0" : 0.18305629819326732, + "99.9" : 0.18305629819326732, + "99.99" : 0.18305629819326732, + "99.999" : 0.18305629819326732, + "99.9999" : 0.18305629819326732, + "100.0" : 0.18305629819326732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1825907695917324, + 0.18305629819326732, + 0.18212997676070447 + ], + [ + 0.17465364324012783, + 0.173863887391773, + 0.173905442647468 + ], + [ + 0.17758387770141887, + 0.17718893311244197, + 0.17729219266022517 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3280036696752776, + "scoreError" : 0.0072904870277840615, + "scoreConfidence" : [ + 0.32071318264749354, + 0.3352941567030617 + ], + "scorePercentiles" : { + "0.0" : 0.3230449766765732, + "50.0" : 0.3285960677553971, + "90.0" : 0.3350218208710218, + "95.0" : 0.3350218208710218, + "99.0" : 0.3350218208710218, + "99.9" : 0.3350218208710218, + "99.99" : 0.3350218208710218, + "99.999" : 0.3350218208710218, + "99.9999" : 0.3350218208710218, + "100.0" : 0.3350218208710218 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3350218208710218, + 0.3313785579892637, + 0.33214259798060314 + ], + [ + 0.3230449766765732, + 0.32308109058895745, + 0.323336461088299 + ], + [ + 0.3267985959282376, + 0.32863285819914556, + 0.3285960677553971 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16393034011616078, + "scoreError" : 0.010818336189738688, + "scoreConfidence" : [ + 0.1531120039264221, + 0.17474867630589946 + ], + "scorePercentiles" : { + "0.0" : 0.1572548254839369, + "50.0" : 0.16263789347514962, + "90.0" : 0.1721502192976416, + "95.0" : 0.1721502192976416, + "99.0" : 0.1721502192976416, + "99.9" : 0.1721502192976416, + "99.99" : 0.1721502192976416, + "99.999" : 0.1721502192976416, + "99.9999" : 0.1721502192976416, + "100.0" : 0.1721502192976416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1572548254839369, + 0.15726288619100787, + 0.15731232625965486 + ], + [ + 0.16263789347514962, + 0.16286263915443872, + 0.16219788980439226 + ], + [ + 0.1721502192976416, + 0.17194005434913429, + 0.1717543270300907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3900127802781739, + "scoreError" : 0.010040535270291057, + "scoreConfidence" : [ + 0.37997224500788285, + 0.4000533155484649 + ], + "scorePercentiles" : { + "0.0" : 0.3857957074958528, + "50.0" : 0.387306897211464, + "90.0" : 0.40456259678789597, + "95.0" : 0.40456259678789597, + "99.0" : 0.40456259678789597, + "99.9" : 0.40456259678789597, + "99.99" : 0.40456259678789597, + "99.999" : 0.40456259678789597, + "99.9999" : 0.40456259678789597, + "100.0" : 0.40456259678789597 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39098822140986045, + 0.387306897211464, + 0.38692783339137166 + ], + [ + 0.40456259678789597, + 0.392978785632884, + 0.3891036243725925 + ], + [ + 0.386120248030888, + 0.3863311081707553, + 0.3857957074958528 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16098246355631118, + "scoreError" : 0.0016169925436001703, + "scoreConfidence" : [ + 0.159365471012711, + 0.16259945609991136 + ], + "scorePercentiles" : { + "0.0" : 0.159929256872811, + "50.0" : 0.16084167420465145, + "90.0" : 0.16264033896596028, + "95.0" : 0.16264033896596028, + "99.0" : 0.16264033896596028, + "99.9" : 0.16264033896596028, + "99.99" : 0.16264033896596028, + "99.999" : 0.16264033896596028, + "99.9999" : 0.16264033896596028, + "100.0" : 0.16264033896596028 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16264033896596028, + 0.16204472218171212, + 0.1616688600297465 + ], + [ + 0.16006754341736695, + 0.159929256872811, + 0.15995681565309192 + ], + [ + 0.16089218724157348, + 0.1608007734398868, + 0.16084167420465145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04693083593108395, + "scoreError" : 0.0013197680187504504, + "scoreConfidence" : [ + 0.0456110679123335, + 0.0482506039498344 + ], + "scorePercentiles" : { + "0.0" : 0.04617824880977119, + "50.0" : 0.04651635501276857, + "90.0" : 0.04846171708399766, + "95.0" : 0.04846171708399766, + "99.0" : 0.04846171708399766, + "99.9" : 0.04846171708399766, + "99.99" : 0.04846171708399766, + "99.999" : 0.04846171708399766, + "99.9999" : 0.04846171708399766, + "100.0" : 0.04846171708399766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04718569986599475, + 0.04623054528685683, + 0.04617824880977119 + ], + [ + 0.04846171708399766, + 0.04752103033226254, + 0.047513170142204866 + ], + [ + 0.04651635501276857, + 0.046471550743764786, + 0.04629920610213436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9493043.184075, + "scoreError" : 396627.359347403, + "scoreConfidence" : [ + 9096415.824727597, + 9889670.543422403 + ], + "scorePercentiles" : { + "0.0" : 9246875.504621072, + "50.0" : 9382336.876172608, + "90.0" : 9833868.79252704, + "95.0" : 9833868.79252704, + "99.0" : 9833868.79252704, + "99.9" : 9833868.79252704, + "99.99" : 9833868.79252704, + "99.999" : 9833868.79252704, + "99.9999" : 9833868.79252704, + "100.0" : 9833868.79252704 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9833868.79252704, + 9828432.62475442, + 9740735.680623174 + ], + [ + 9316690.216014897, + 9355467.715622077, + 9385929.39587242 + ], + [ + 9382336.876172608, + 9347051.850467289, + 9246875.504621072 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-10T04:33:55Z-78f257de548f6acca271b8a6db4dab8ac414bb17-jdk17.json b/performance-results/2025-04-10T04:33:55Z-78f257de548f6acca271b8a6db4dab8ac414bb17-jdk17.json new file mode 100644 index 0000000000..a74e4d4f90 --- /dev/null +++ b/performance-results/2025-04-10T04:33:55Z-78f257de548f6acca271b8a6db4dab8ac414bb17-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424886185220211, + "scoreError" : 0.02288937204720089, + "scoreConfidence" : [ + 3.4019968131730103, + 3.447775557267412 + ], + "scorePercentiles" : { + "0.0" : 3.4223046552592433, + "50.0" : 3.423618714442802, + "90.0" : 3.4300026567359976, + "95.0" : 3.4300026567359976, + "99.0" : 3.4300026567359976, + "99.9" : 3.4300026567359976, + "99.99" : 3.4300026567359976, + "99.999" : 3.4300026567359976, + "99.9999" : 3.4300026567359976, + "100.0" : 3.4300026567359976 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4223046552592433, + 3.4300026567359976 + ], + [ + 3.422728473427089, + 3.4245089554585153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7271315754975538, + "scoreError" : 0.004966103870763177, + "scoreConfidence" : [ + 1.7221654716267907, + 1.732097679368317 + ], + "scorePercentiles" : { + "0.0" : 1.726486474885949, + "50.0" : 1.726916712033872, + "90.0" : 1.7282064030365223, + "95.0" : 1.7282064030365223, + "99.0" : 1.7282064030365223, + "99.9" : 1.7282064030365223, + "99.99" : 1.7282064030365223, + "99.999" : 1.7282064030365223, + "99.9999" : 1.7282064030365223, + "100.0" : 1.7282064030365223 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7266842453323068, + 1.727149178735437 + ], + [ + 1.726486474885949, + 1.7282064030365223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8684024984939731, + "scoreError" : 0.005240325724240037, + "scoreConfidence" : [ + 0.8631621727697331, + 0.8736428242182132 + ], + "scorePercentiles" : { + "0.0" : 0.867397723899297, + "50.0" : 0.8684580073972272, + "90.0" : 0.8692962552821406, + "95.0" : 0.8692962552821406, + "99.0" : 0.8692962552821406, + "99.9" : 0.8692962552821406, + "99.99" : 0.8692962552821406, + "99.999" : 0.8692962552821406, + "99.9999" : 0.8692962552821406, + "100.0" : 0.8692962552821406 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.867397723899297, + 0.8681766130206038 + ], + [ + 0.8687394017738508, + 0.8692962552821406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.032129452957125, + "scoreError" : 0.08373484051320008, + "scoreConfidence" : [ + 15.948394612443925, + 16.115864293470324 + ], + "scorePercentiles" : { + "0.0" : 15.965720170110863, + "50.0" : 16.04646865645673, + "90.0" : 16.09750002308707, + "95.0" : 16.09750002308707, + "99.0" : 16.09750002308707, + "99.9" : 16.09750002308707, + "99.99" : 16.09750002308707, + "99.999" : 16.09750002308707, + "99.9999" : 16.09750002308707, + "100.0" : 16.09750002308707 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.04878306057498, + 16.026522462299912, + 16.04646865645673 + ], + [ + 16.093985459126838, + 16.09750002308707, + 16.057319615113542 + ], + [ + 15.965720170110863, + 15.977066380139977, + 15.975799249704208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2659.2660480465156, + "scoreError" : 52.83065843292076, + "scoreConfidence" : [ + 2606.435389613595, + 2712.0967064794363 + ], + "scorePercentiles" : { + "0.0" : 2623.490342043969, + "50.0" : 2655.8428612692337, + "90.0" : 2697.8381159598043, + "95.0" : 2697.8381159598043, + "99.0" : 2697.8381159598043, + "99.9" : 2697.8381159598043, + "99.99" : 2697.8381159598043, + "99.999" : 2697.8381159598043, + "99.9999" : 2697.8381159598043, + "100.0" : 2697.8381159598043 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2623.490342043969, + 2623.8076996606283, + 2625.3335784847322 + ], + [ + 2655.0094683322463, + 2655.8428612692337, + 2660.0529731999677 + ], + [ + 2696.188039456565, + 2695.8313540114987, + 2697.8381159598043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70628.75811851461, + "scoreError" : 416.83448272910647, + "scoreConfidence" : [ + 70211.92363578551, + 71045.59260124371 + ], + "scorePercentiles" : { + "0.0" : 70234.43023788626, + "50.0" : 70776.68712267073, + "90.0" : 70820.05528670856, + "95.0" : 70820.05528670856, + "99.0" : 70820.05528670856, + "99.9" : 70820.05528670856, + "99.99" : 70820.05528670856, + "99.999" : 70820.05528670856, + "99.9999" : 70820.05528670856, + "100.0" : 70820.05528670856 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70391.61966832611, + 70234.43023788626, + 70283.23188861534 + ], + [ + 70764.00845841023, + 70795.94033197615, + 70776.68712267073 + ], + [ + 70820.05528670856, + 70805.76311128291, + 70787.08696075529 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 355.4878415324151, + "scoreError" : 3.8495329535968454, + "scoreConfidence" : [ + 351.6383085788182, + 359.3373744860119 + ], + "scorePercentiles" : { + "0.0" : 351.33385265402495, + "50.0" : 356.39817493867076, + "90.0" : 357.66606585973585, + "95.0" : 357.66606585973585, + "99.0" : 357.66606585973585, + "99.9" : 357.66606585973585, + "99.99" : 357.66606585973585, + "99.999" : 357.66606585973585, + "99.9999" : 357.66606585973585, + "100.0" : 357.66606585973585 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 353.13811300477545, + 353.35272596351626, + 351.33385265402495 + ], + [ + 357.1934660742412, + 357.592585496536, + 357.66606585973585 + ], + [ + 356.0259282003938, + 356.39817493867076, + 356.6896615998413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.85676686228155, + "scoreError" : 1.5434947978753855, + "scoreConfidence" : [ + 105.31327206440616, + 108.40026166015693 + ], + "scorePercentiles" : { + "0.0" : 105.82738952101255, + "50.0" : 106.35365150408913, + "90.0" : 108.10528228128692, + "95.0" : 108.10528228128692, + "99.0" : 108.10528228128692, + "99.9" : 108.10528228128692, + "99.99" : 108.10528228128692, + "99.999" : 108.10528228128692, + "99.9999" : 108.10528228128692, + "100.0" : 108.10528228128692 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.01469264211123, + 108.10528228128692, + 108.04302695630714 + ], + [ + 106.33565873861741, + 106.35365150408913, + 106.54797025010714 + ], + [ + 105.82738952101255, + 106.18684839779065, + 106.29638146921167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061552231147395865, + "scoreError" : 3.8671400517215505E-4, + "scoreConfidence" : [ + 0.06116551714222371, + 0.06193894515256802 + ], + "scorePercentiles" : { + "0.0" : 0.06123520343892178, + "50.0" : 0.06162852530736758, + "90.0" : 0.061795015405245075, + "95.0" : 0.061795015405245075, + "99.0" : 0.061795015405245075, + "99.9" : 0.061795015405245075, + "99.99" : 0.061795015405245075, + "99.999" : 0.061795015405245075, + "99.9999" : 0.061795015405245075, + "100.0" : 0.061795015405245075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061780295837297515, + 0.061795015405245075, + 0.06174503386659587 + ], + [ + 0.06123520343892178, + 0.06127275373605299, + 0.06126781611322142 + ], + [ + 0.06162852530736758, + 0.06161100870550979, + 0.06163442791635079 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7328350128866886E-4, + "scoreError" : 6.821877107806369E-6, + "scoreConfidence" : [ + 3.664616241808625E-4, + 3.801053783964752E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6756358457330426E-4, + "50.0" : 3.7591985938495296E-4, + "90.0" : 3.7651412265522115E-4, + "95.0" : 3.7651412265522115E-4, + "99.0" : 3.7651412265522115E-4, + "99.9" : 3.7651412265522115E-4, + "99.99" : 3.7651412265522115E-4, + "99.999" : 3.7651412265522115E-4, + "99.9999" : 3.7651412265522115E-4, + "100.0" : 3.7651412265522115E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6756358457330426E-4, + 3.67879946293119E-4, + 3.683010133688077E-4 + ], + [ + 3.7651412265522115E-4, + 3.7601604683122045E-4, + 3.763907991729729E-4 + ], + [ + 3.7615964157218306E-4, + 3.7591985938495296E-4, + 3.748064977462384E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01419174351532329, + "scoreError" : 3.5269317026143744E-4, + "scoreConfidence" : [ + 0.013839050345061853, + 0.014544436685584729 + ], + "scorePercentiles" : { + "0.0" : 0.014018094766825723, + "50.0" : 0.014079585394561962, + "90.0" : 0.014472452002674477, + "95.0" : 0.014472452002674477, + "99.0" : 0.014472452002674477, + "99.9" : 0.014472452002674477, + "99.99" : 0.014472452002674477, + "99.999" : 0.014472452002674477, + "99.9999" : 0.014472452002674477, + "100.0" : 0.014472452002674477 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014030071913104356, + 0.014018094766825723, + 0.014024899786263053 + ], + [ + 0.014079585394561962, + 0.014078321295583264, + 0.014085909656899617 + ], + [ + 0.014472452002674477, + 0.014468795468718125, + 0.014467561353279033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9945057544056086, + "scoreError" : 0.036416468403792125, + "scoreConfidence" : [ + 0.9580892860018165, + 1.0309222228094008 + ], + "scorePercentiles" : { + "0.0" : 0.968692614974816, + "50.0" : 0.984372430062014, + "90.0" : 1.0242185525399425, + "95.0" : 1.0242185525399425, + "99.0" : 1.0242185525399425, + "99.9" : 1.0242185525399425, + "99.99" : 1.0242185525399425, + "99.999" : 1.0242185525399425, + "99.9999" : 1.0242185525399425, + "100.0" : 1.0242185525399425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.984372430062014, + 0.9846667744190626, + 0.9812977671474831 + ], + [ + 1.0223313447147822, + 1.0215115833503574, + 1.0242185525399425 + ], + [ + 0.968692614974816, + 0.9831266424498624, + 0.9803340799921576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.0132303658430084, + "scoreError" : 3.9247364190063487E-4, + "scoreConfidence" : [ + 0.012837892201107766, + 0.013622839484909034 + ], + "scorePercentiles" : { + "0.0" : 0.013031519580707543, + "50.0" : 0.013249929718698584, + "90.0" : 0.013353252362131125, + "95.0" : 0.013353252362131125, + "99.0" : 0.013353252362131125, + "99.9" : 0.013353252362131125, + "99.99" : 0.013353252362131125, + "99.999" : 0.013353252362131125, + "99.9999" : 0.013353252362131125, + "100.0" : 0.013353252362131125 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013031519580707543, + 0.013144478228066393, + 0.01314967844763653 + ], + [ + 0.013353085449748166, + 0.013353252362131125, + 0.013350180989760636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6392078634851894, + "scoreError" : 0.06541333766466793, + "scoreConfidence" : [ + 3.5737945258205217, + 3.704621201149857 + ], + "scorePercentiles" : { + "0.0" : 3.6007005737940965, + "50.0" : 3.6402839559568614, + "90.0" : 3.66594598973607, + "95.0" : 3.66594598973607, + "99.0" : 3.66594598973607, + "99.9" : 3.66594598973607, + "99.99" : 3.66594598973607, + "99.999" : 3.66594598973607, + "99.9999" : 3.66594598973607, + "100.0" : 3.66594598973607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6007005737940965, + 3.6389140305454544, + 3.641653881368268 + ], + [ + 3.628675238751814, + 3.659357466715435, + 3.66594598973607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.861272924329247, + "scoreError" : 0.036385695606204325, + "scoreConfidence" : [ + 2.8248872287230427, + 2.8976586199354513 + ], + "scorePercentiles" : { + "0.0" : 2.825970594800791, + "50.0" : 2.8757847725704426, + "90.0" : 2.881069466724287, + "95.0" : 2.881069466724287, + "99.0" : 2.881069466724287, + "99.9" : 2.881069466724287, + "99.99" : 2.881069466724287, + "99.999" : 2.881069466724287, + "99.9999" : 2.881069466724287, + "100.0" : 2.881069466724287 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8412861664772726, + 2.8516040481893357, + 2.825970594800791 + ], + [ + 2.8793874217040876, + 2.881069466724287, + 2.8757847725704426 + ], + [ + 2.8795824411171895, + 2.8774763659378597, + 2.839295041441953 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1736661846677111, + "scoreError" : 0.003713448810268133, + "scoreConfidence" : [ + 0.16995273585744297, + 0.17737963347797925 + ], + "scorePercentiles" : { + "0.0" : 0.17086125760319848, + "50.0" : 0.17387487196160933, + "90.0" : 0.176499382392912, + "95.0" : 0.176499382392912, + "99.0" : 0.176499382392912, + "99.9" : 0.176499382392912, + "99.99" : 0.176499382392912, + "99.999" : 0.176499382392912, + "99.9999" : 0.176499382392912, + "100.0" : 0.176499382392912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17416599188407816, + 0.17387487196160933, + 0.17375947067000277 + ], + [ + 0.176499382392912, + 0.17581156517993707, + 0.17586875428229748 + ], + [ + 0.17100749628920278, + 0.17114687174616214, + 0.17086125760319848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32531769290505985, + "scoreError" : 0.004017758806714038, + "scoreConfidence" : [ + 0.32129993409834584, + 0.32933545171177386 + ], + "scorePercentiles" : { + "0.0" : 0.3224649505675222, + "50.0" : 0.3248864432929405, + "90.0" : 0.3287259787317971, + "95.0" : 0.3287259787317971, + "99.0" : 0.3287259787317971, + "99.9" : 0.3287259787317971, + "99.99" : 0.3287259787317971, + "99.999" : 0.3287259787317971, + "99.9999" : 0.3287259787317971, + "100.0" : 0.3287259787317971 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3248864432929405, + 0.3251668364765559, + 0.3248066146875406 + ], + [ + 0.3287259787317971, + 0.3279436203843379, + 0.32798270596917023 + ], + [ + 0.3232667449814126, + 0.32261534105426154, + 0.3224649505675222 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16216252799698816, + "scoreError" : 0.010414055226397255, + "scoreConfidence" : [ + 0.1517484727705909, + 0.17257658322338543 + ], + "scorePercentiles" : { + "0.0" : 0.15376685839932344, + "50.0" : 0.16590980272086273, + "90.0" : 0.16717917788959843, + "95.0" : 0.16717917788959843, + "99.0" : 0.16717917788959843, + "99.9" : 0.16717917788959843, + "99.99" : 0.16717917788959843, + "99.999" : 0.16717917788959843, + "99.9999" : 0.16717917788959843, + "100.0" : 0.16717917788959843 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16608696150205113, + 0.16462984212172596, + 0.16590980272086273 + ], + [ + 0.16717917788959843, + 0.16689216715620828, + 0.16688292889207818 + ], + [ + 0.15394207102723173, + 0.1541729422638135, + 0.15376685839932344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3910526805304007, + "scoreError" : 0.005573550516625776, + "scoreConfidence" : [ + 0.38547913001377493, + 0.3966262310470265 + ], + "scorePercentiles" : { + "0.0" : 0.3877020788555478, + "50.0" : 0.39071458187145924, + "90.0" : 0.39725935577801613, + "95.0" : 0.39725935577801613, + "99.0" : 0.39725935577801613, + "99.9" : 0.39725935577801613, + "99.99" : 0.39725935577801613, + "99.999" : 0.39725935577801613, + "99.9999" : 0.39725935577801613, + "100.0" : 0.39725935577801613 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39442088356866767, + 0.39264162731163377, + 0.3919065695026845 + ], + [ + 0.39071458187145924, + 0.38879390381400414, + 0.38811062013428027 + ], + [ + 0.39725935577801613, + 0.3879245039373133, + 0.3877020788555478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1592241740494486, + "scoreError" : 0.0018199006554632427, + "scoreConfidence" : [ + 0.15740427339398536, + 0.16104407470491186 + ], + "scorePercentiles" : { + "0.0" : 0.15746357693518928, + "50.0" : 0.15947281740766728, + "90.0" : 0.16109741302596817, + "95.0" : 0.16109741302596817, + "99.0" : 0.16109741302596817, + "99.9" : 0.16109741302596817, + "99.99" : 0.16109741302596817, + "99.999" : 0.16109741302596817, + "99.9999" : 0.16109741302596817, + "100.0" : 0.16109741302596817 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15836762342824565, + 0.15746357693518928, + 0.1581412618128914 + ], + [ + 0.1594747038448658, + 0.15947281740766728, + 0.15934576122566046 + ], + [ + 0.16109741302596817, + 0.1598520538371777, + 0.1598023549273718 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04712108750819384, + "scoreError" : 7.182684687481833E-4, + "scoreConfidence" : [ + 0.04640281903944566, + 0.04783935597694202 + ], + "scorePercentiles" : { + "0.0" : 0.04651576728500725, + "50.0" : 0.04719090808747192, + "90.0" : 0.047708944186024324, + "95.0" : 0.047708944186024324, + "99.0" : 0.047708944186024324, + "99.9" : 0.047708944186024324, + "99.99" : 0.047708944186024324, + "99.999" : 0.047708944186024324, + "99.9999" : 0.047708944186024324, + "100.0" : 0.047708944186024324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04719090808747192, + 0.04702287955234759, + 0.04695951733481097 + ], + [ + 0.047708944186024324, + 0.04723783189260172, + 0.04724911852754823 + ], + [ + 0.04768475045896058, + 0.04651576728500725, + 0.04652007024897192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9310568.23100094, + "scoreError" : 173148.93658738173, + "scoreConfidence" : [ + 9137419.294413557, + 9483717.167588321 + ], + "scorePercentiles" : { + "0.0" : 9169324.511457378, + "50.0" : 9329873.112873135, + "90.0" : 9459066.508506617, + "95.0" : 9459066.508506617, + "99.0" : 9459066.508506617, + "99.9" : 9459066.508506617, + "99.99" : 9459066.508506617, + "99.999" : 9459066.508506617, + "99.9999" : 9459066.508506617, + "100.0" : 9459066.508506617 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9218835.206451613, + 9184230.989898989, + 9169324.511457378 + ], + [ + 9459066.508506617, + 9410630.807149576, + 9397396.217840375 + ], + [ + 9295238.24535316, + 9330518.479477612, + 9329873.112873135 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-11T02:44:53Z-5a3f64d6241fca6e2bbf218086f3b16f1a2e36eb-jdk17.json b/performance-results/2025-04-11T02:44:53Z-5a3f64d6241fca6e2bbf218086f3b16f1a2e36eb-jdk17.json new file mode 100644 index 0000000000..842cf3719c --- /dev/null +++ b/performance-results/2025-04-11T02:44:53Z-5a3f64d6241fca6e2bbf218086f3b16f1a2e36eb-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40265301185707, + "scoreError" : 0.027431673626871933, + "scoreConfidence" : [ + 3.375221338230198, + 3.430084685483942 + ], + "scorePercentiles" : { + "0.0" : 3.3965504921908103, + "50.0" : 3.4039265655019424, + "90.0" : 3.4062084242335846, + "95.0" : 3.4062084242335846, + "99.0" : 3.4062084242335846, + "99.9" : 3.4062084242335846, + "99.99" : 3.4062084242335846, + "99.999" : 3.4062084242335846, + "99.9999" : 3.4062084242335846, + "100.0" : 3.4062084242335846 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403242248782115, + 3.4062084242335846 + ], + [ + 3.3965504921908103, + 3.4046108822217693 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7175936798859224, + "scoreError" : 0.0134684701590882, + "scoreConfidence" : [ + 1.7041252097268342, + 1.7310621500450105 + ], + "scorePercentiles" : { + "0.0" : 1.7153447300577356, + "50.0" : 1.7177008710932307, + "90.0" : 1.7196282472994926, + "95.0" : 1.7196282472994926, + "99.0" : 1.7196282472994926, + "99.9" : 1.7196282472994926, + "99.99" : 1.7196282472994926, + "99.999" : 1.7196282472994926, + "99.9999" : 1.7196282472994926, + "100.0" : 1.7196282472994926 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7153447300577356, + 1.7163202538817688 + ], + [ + 1.7196282472994926, + 1.7190814883046928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8651047413453794, + "scoreError" : 0.008605148330017314, + "scoreConfidence" : [ + 0.856499593015362, + 0.8737098896753968 + ], + "scorePercentiles" : { + "0.0" : 0.8632352159731381, + "50.0" : 0.8654020379044889, + "90.0" : 0.8663796735994017, + "95.0" : 0.8663796735994017, + "99.0" : 0.8663796735994017, + "99.9" : 0.8663796735994017, + "99.99" : 0.8663796735994017, + "99.999" : 0.8663796735994017, + "99.9999" : 0.8663796735994017, + "100.0" : 0.8663796735994017 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.865295790358891, + 0.8663796735994017 + ], + [ + 0.8632352159731381, + 0.8655082854500867 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.828660504860544, + "scoreError" : 0.19515628336859078, + "scoreConfidence" : [ + 15.633504221491952, + 16.023816788229134 + ], + "scorePercentiles" : { + "0.0" : 15.604080445906902, + "50.0" : 15.860104697084749, + "90.0" : 15.992175410686185, + "95.0" : 15.992175410686185, + "99.0" : 15.992175410686185, + "99.9" : 15.992175410686185, + "99.99" : 15.992175410686185, + "99.999" : 15.992175410686185, + "99.9999" : 15.992175410686185, + "100.0" : 15.992175410686185 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.844544505135401, + 15.992175410686185, + 15.884953530649513 + ], + [ + 15.891235056561767, + 15.870904279027659, + 15.860104697084749 + ], + [ + 15.824810817551638, + 15.604080445906902, + 15.68513580114108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2557.6634487223264, + "scoreError" : 47.006079344690676, + "scoreConfidence" : [ + 2510.657369377636, + 2604.669528067017 + ], + "scorePercentiles" : { + "0.0" : 2520.102557582096, + "50.0" : 2558.092951448287, + "90.0" : 2593.6464634645013, + "95.0" : 2593.6464634645013, + "99.0" : 2593.6464634645013, + "99.9" : 2593.6464634645013, + "99.99" : 2593.6464634645013, + "99.999" : 2593.6464634645013, + "99.9999" : 2593.6464634645013, + "100.0" : 2593.6464634645013 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2546.187217621026, + 2572.8795982662687, + 2558.092951448287 + ], + [ + 2593.6464634645013, + 2582.369578750866, + 2587.668775948308 + ], + [ + 2533.380449879916, + 2524.6434455396707, + 2520.102557582096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69413.11742722343, + "scoreError" : 2286.6984959583874, + "scoreConfidence" : [ + 67126.41893126504, + 71699.81592318183 + ], + "scorePercentiles" : { + "0.0" : 67684.66210717411, + "50.0" : 69640.6380260107, + "90.0" : 71005.7251766002, + "95.0" : 71005.7251766002, + "99.0" : 71005.7251766002, + "99.9" : 71005.7251766002, + "99.99" : 71005.7251766002, + "99.999" : 71005.7251766002, + "99.9999" : 71005.7251766002, + "100.0" : 71005.7251766002 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67738.74412096803, + 67807.18254373013, + 67684.66210717411 + ], + [ + 70776.77630644778, + 70789.3475759133, + 71005.7251766002 + ], + [ + 69613.11695761139, + 69661.86403055525, + 69640.6380260107 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 326.28796603194354, + "scoreError" : 11.11137678113879, + "scoreConfidence" : [ + 315.17658925080474, + 337.39934281308234 + ], + "scorePercentiles" : { + "0.0" : 315.31627183159503, + "50.0" : 328.18727690128657, + "90.0" : 333.0587989612745, + "95.0" : 333.0587989612745, + "99.0" : 333.0587989612745, + "99.9" : 333.0587989612745, + "99.99" : 333.0587989612745, + "99.999" : 333.0587989612745, + "99.9999" : 333.0587989612745, + "100.0" : 333.0587989612745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 330.89756036927355, + 332.5329843616352, + 325.0252309033603 + ], + [ + 315.31627183159503, + 317.85845192710246, + 322.0413679247984 + ], + [ + 331.67375110716574, + 333.0587989612745, + 328.18727690128657 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 101.54030399246984, + "scoreError" : 3.8075778509487628, + "scoreConfidence" : [ + 97.73272614152108, + 105.3478818434186 + ], + "scorePercentiles" : { + "0.0" : 97.95425255277081, + "50.0" : 101.08863211831058, + "90.0" : 104.68379921897991, + "95.0" : 104.68379921897991, + "99.0" : 104.68379921897991, + "99.9" : 104.68379921897991, + "99.99" : 104.68379921897991, + "99.999" : 104.68379921897991, + "99.9999" : 104.68379921897991, + "100.0" : 104.68379921897991 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.50588636708386, + 102.97645467048544, + 100.99121641014219 + ], + [ + 99.14150512399577, + 100.53352546357344, + 97.95425255277081 + ], + [ + 101.08863211831058, + 101.98746400688667, + 104.68379921897991 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06280877414445157, + "scoreError" : 4.3648144842625236E-4, + "scoreConfidence" : [ + 0.062372292696025323, + 0.06324525559287783 + ], + "scorePercentiles" : { + "0.0" : 0.0623048855286194, + "50.0" : 0.06278044688237658, + "90.0" : 0.0631197039278929, + "95.0" : 0.0631197039278929, + "99.0" : 0.0631197039278929, + "99.9" : 0.0631197039278929, + "99.99" : 0.0631197039278929, + "99.999" : 0.0631197039278929, + "99.9999" : 0.0631197039278929, + "100.0" : 0.0631197039278929 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0628047768643312, + 0.0626707639910758, + 0.06305239426611434 + ], + [ + 0.0623048855286194, + 0.06273687804740335, + 0.06278044688237658 + ], + [ + 0.0631197039278929, + 0.06311242463237614, + 0.06269669315987461 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.905567705018995E-4, + "scoreError" : 3.512883638471716E-6, + "scoreConfidence" : [ + 3.870438868634278E-4, + 3.940696541403712E-4 + ], + "scorePercentiles" : { + "0.0" : 3.869264655787353E-4, + "50.0" : 3.906685237258492E-4, + "90.0" : 3.94258298699116E-4, + "95.0" : 3.94258298699116E-4, + "99.0" : 3.94258298699116E-4, + "99.9" : 3.94258298699116E-4, + "99.99" : 3.94258298699116E-4, + "99.999" : 3.94258298699116E-4, + "99.9999" : 3.94258298699116E-4, + "100.0" : 3.94258298699116E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.906685237258492E-4, + 3.899373265506365E-4, + 3.916502545108758E-4 + ], + [ + 3.869264655787353E-4, + 3.9152966281895385E-4, + 3.9122832217896463E-4 + ], + [ + 3.94258298699116E-4, + 3.905110322089086E-4, + 3.8830104824505543E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1103155214342608, + "scoreError" : 0.0018108082796381155, + "scoreConfidence" : [ + 0.10850471315462268, + 0.11212632971389891 + ], + "scorePercentiles" : { + "0.0" : 0.109056815424714, + "50.0" : 0.11032555367761437, + "90.0" : 0.11206928803568227, + "95.0" : 0.11206928803568227, + "99.0" : 0.11206928803568227, + "99.9" : 0.11206928803568227, + "99.99" : 0.11206928803568227, + "99.999" : 0.11206928803568227, + "99.9999" : 0.11206928803568227, + "100.0" : 0.11206928803568227 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.109056815424714, + 0.10916100215044373, + 0.10922656882277126 + ], + [ + 0.1100146221630601, + 0.11036208881727787, + 0.11032555367761437 + ], + [ + 0.11206928803568227, + 0.11143925750805131, + 0.1111844963087323 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014327076436476897, + "scoreError" : 3.177702819593848E-4, + "scoreConfidence" : [ + 0.014009306154517513, + 0.014644846718436282 + ], + "scorePercentiles" : { + "0.0" : 0.014152389746434702, + "50.0" : 0.01424539409250844, + "90.0" : 0.014588857645124536, + "95.0" : 0.014588857645124536, + "99.0" : 0.014588857645124536, + "99.9" : 0.014588857645124536, + "99.99" : 0.014588857645124536, + "99.999" : 0.014588857645124536, + "99.9999" : 0.014588857645124536, + "100.0" : 0.014588857645124536 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014159838111042987, + 0.014152389746434702, + 0.014162963792849495 + ], + [ + 0.014557956909038767, + 0.014588857645124536, + 0.014572394456442225 + ], + [ + 0.014270335410117258, + 0.01423355776473368, + 0.01424539409250844 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9850389971329451, + "scoreError" : 0.022098538415354096, + "scoreConfidence" : [ + 0.9629404587175909, + 1.0071375355482992 + ], + "scorePercentiles" : { + "0.0" : 0.9639907766531713, + "50.0" : 0.9858015206505668, + "90.0" : 1.004286032536654, + "95.0" : 1.004286032536654, + "99.0" : 1.004286032536654, + "99.9" : 1.004286032536654, + "99.99" : 1.004286032536654, + "99.999" : 1.004286032536654, + "99.9999" : 1.004286032536654, + "100.0" : 1.004286032536654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.977079590913532, + 0.9730350326911851, + 0.9639907766531713 + ], + [ + 0.9868019045786461, + 0.983253146691574, + 0.9858015206505668 + ], + [ + 1.003756836595403, + 0.9873461328857736, + 1.004286032536654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013272734320049778, + "scoreError" : 2.2225112594113E-4, + "scoreConfidence" : [ + 0.013050483194108647, + 0.013494985445990908 + ], + "scorePercentiles" : { + "0.0" : 0.013123427779542108, + "50.0" : 0.013295886198625352, + "90.0" : 0.013345353621300765, + "95.0" : 0.013345353621300765, + "99.0" : 0.013345353621300765, + "99.9" : 0.013345353621300765, + "99.99" : 0.013345353621300765, + "99.999" : 0.013345353621300765, + "99.9999" : 0.013345353621300765, + "100.0" : 0.013345353621300765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013123427779542108, + 0.013293946703321537, + 0.013297825693929167 + ], + [ + 0.013254005942945601, + 0.013321846179259484, + 0.013345353621300765 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8497826451058668, + "scoreError" : 0.09810452995735744, + "scoreConfidence" : [ + 3.7516781151485095, + 3.947887175063224 + ], + "scorePercentiles" : { + "0.0" : 3.797895554290053, + "50.0" : 3.845572258690387, + "90.0" : 3.894707704049844, + "95.0" : 3.894707704049844, + "99.0" : 3.894707704049844, + "99.9" : 3.894707704049844, + "99.99" : 3.894707704049844, + "99.999" : 3.894707704049844, + "99.9999" : 3.894707704049844, + "100.0" : 3.894707704049844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.852870629429892, + 3.894707704049844, + 3.881441991466253 + ], + [ + 3.8382738879508826, + 3.833506103448276, + 3.797895554290053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.013008784457508, + "scoreError" : 0.13599751684191327, + "scoreConfidence" : [ + 2.8770112676155946, + 3.1490063012994214 + ], + "scorePercentiles" : { + "0.0" : 2.918604712868398, + "50.0" : 2.9945180479041915, + "90.0" : 3.1372488601003763, + "95.0" : 3.1372488601003763, + "99.0" : 3.1372488601003763, + "99.9" : 3.1372488601003763, + "99.99" : 3.1372488601003763, + "99.999" : 3.1372488601003763, + "99.9999" : 3.1372488601003763, + "100.0" : 3.1372488601003763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9705402494802495, + 2.9945180479041915, + 3.008261935639098 + ], + [ + 2.918604712868398, + 2.930226899208907, + 2.962444305094787 + ], + [ + 3.1372488601003763, + 3.1304406848200315, + 3.0647933650015324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17586394276705064, + "scoreError" : 0.004869647030494683, + "scoreConfidence" : [ + 0.17099429573655595, + 0.18073358979754534 + ], + "scorePercentiles" : { + "0.0" : 0.17341529851212154, + "50.0" : 0.17405492792494864, + "90.0" : 0.1803368732981083, + "95.0" : 0.1803368732981083, + "99.0" : 0.1803368732981083, + "99.9" : 0.1803368732981083, + "99.99" : 0.1803368732981083, + "99.999" : 0.1803368732981083, + "99.9999" : 0.1803368732981083, + "100.0" : 0.1803368732981083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17405492792494864, + 0.17377448895685266, + 0.17395810566050865 + ], + [ + 0.1745735588820613, + 0.17393631311093333, + 0.17341529851212154 + ], + [ + 0.17950368971459343, + 0.17922222884332772, + 0.1803368732981083 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33202975286606495, + "scoreError" : 0.006844235543547486, + "scoreConfidence" : [ + 0.3251855173225175, + 0.3388739884096124 + ], + "scorePercentiles" : { + "0.0" : 0.3261195985651394, + "50.0" : 0.33188947429557597, + "90.0" : 0.3372914570474552, + "95.0" : 0.3372914570474552, + "99.0" : 0.3372914570474552, + "99.9" : 0.3372914570474552, + "99.99" : 0.3372914570474552, + "99.999" : 0.3372914570474552, + "99.9999" : 0.3372914570474552, + "100.0" : 0.3372914570474552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32916951211323237, + 0.3271407056168013, + 0.3261195985651394 + ], + [ + 0.33164076039663065, + 0.3323394652886245, + 0.33188947429557597 + ], + [ + 0.33578489231750724, + 0.33689191015361813, + 0.3372914570474552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1672147582603807, + "scoreError" : 0.006059265389804464, + "scoreConfidence" : [ + 0.16115549287057623, + 0.17327402365018518 + ], + "scorePercentiles" : { + "0.0" : 0.16370752368791539, + "50.0" : 0.16626085706922925, + "90.0" : 0.17218467334148316, + "95.0" : 0.17218467334148316, + "99.0" : 0.17218467334148316, + "99.9" : 0.17218467334148316, + "99.99" : 0.17218467334148316, + "99.999" : 0.17218467334148316, + "99.9999" : 0.17218467334148316, + "100.0" : 0.17218467334148316 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17141363580733632, + 0.17218467334148316, + 0.17194902923071634 + ], + [ + 0.16410475112409334, + 0.16370752368791539, + 0.16395010335273383 + ], + [ + 0.16639665498593986, + 0.16626085706922925, + 0.16496559574397887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3903175045098534, + "scoreError" : 0.003079925662555646, + "scoreConfidence" : [ + 0.38723757884729776, + 0.3933974301724091 + ], + "scorePercentiles" : { + "0.0" : 0.38886359746471205, + "50.0" : 0.3897894992984097, + "90.0" : 0.394799417923411, + "95.0" : 0.394799417923411, + "99.0" : 0.394799417923411, + "99.9" : 0.394799417923411, + "99.99" : 0.394799417923411, + "99.999" : 0.394799417923411, + "99.9999" : 0.394799417923411, + "100.0" : 0.394799417923411 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.394799417923411, + 0.3889408928904792, + 0.38886359746471205 + ], + [ + 0.390764965809628, + 0.3893752111902815, + 0.38918666565479665 + ], + [ + 0.3897894992984097, + 0.3905169387691346, + 0.3906203515878286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15895099417994044, + "scoreError" : 7.038372725397592E-4, + "scoreConfidence" : [ + 0.15824715690740068, + 0.1596548314524802 + ], + "scorePercentiles" : { + "0.0" : 0.15839843471718434, + "50.0" : 0.15885019666740796, + "90.0" : 0.15979176627838232, + "95.0" : 0.15979176627838232, + "99.0" : 0.15979176627838232, + "99.9" : 0.15979176627838232, + "99.99" : 0.15979176627838232, + "99.999" : 0.15979176627838232, + "99.9999" : 0.15979176627838232, + "100.0" : 0.15979176627838232 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1593783898159216, + 0.1590568645501972, + 0.15876350654092844 + ], + [ + 0.15873043815177537, + 0.15895976289938007, + 0.15862958799828683 + ], + [ + 0.15979176627838232, + 0.15885019666740796, + 0.15839843471718434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047243714386061265, + "scoreError" : 0.001059814077917392, + "scoreConfidence" : [ + 0.04618390030814387, + 0.04830352846397866 + ], + "scorePercentiles" : { + "0.0" : 0.046237011887313266, + "50.0" : 0.04747622012960809, + "90.0" : 0.04792656282110268, + "95.0" : 0.04792656282110268, + "99.0" : 0.04792656282110268, + "99.9" : 0.04792656282110268, + "99.99" : 0.04792656282110268, + "99.999" : 0.04792656282110268, + "99.9999" : 0.04792656282110268, + "100.0" : 0.04792656282110268 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047675682974736955, + 0.04747622012960809, + 0.04735127878687438 + ], + [ + 0.046917604279755845, + 0.046237011887313266, + 0.04626559894700804 + ], + [ + 0.04792656282110268, + 0.047773280721366294, + 0.04757018892678588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9813762.636173323, + "scoreError" : 382872.5136751298, + "scoreConfidence" : [ + 9430890.122498194, + 1.0196635149848452E7 + ], + "scorePercentiles" : { + "0.0" : 9559530.836676218, + "50.0" : 9818805.70363101, + "90.0" : 1.0206541185714286E7, + "95.0" : 1.0206541185714286E7, + "99.0" : 1.0206541185714286E7, + "99.9" : 1.0206541185714286E7, + "99.99" : 1.0206541185714286E7, + "99.999" : 1.0206541185714286E7, + "99.9999" : 1.0206541185714286E7, + "100.0" : 1.0206541185714286E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9581061.033524904, + 9627920.865255052, + 9559530.836676218 + ], + [ + 9818805.70363101, + 1.008136304939516E7, + 1.0206541185714286E7 + ], + [ + 9661313.49903475, + 9888530.595849803, + 9898796.956478734 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-11T11:32:54Z-572fbdf69fecc12fdb7a6a5c0f691adcbefd27d5-jdk17.json b/performance-results/2025-04-11T11:32:54Z-572fbdf69fecc12fdb7a6a5c0f691adcbefd27d5-jdk17.json new file mode 100644 index 0000000000..82a66a3b6a --- /dev/null +++ b/performance-results/2025-04-11T11:32:54Z-572fbdf69fecc12fdb7a6a5c0f691adcbefd27d5-jdk17.json @@ -0,0 +1,128 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "enableDataLoaderChaining" : "true" + }, + "primaryMetric" : { + "score" : 0.15275268998987082, + "scoreError" : 0.002701854514514433, + "scoreConfidence" : [ + 0.1500508354753564, + 0.15545454450438526 + ], + "scorePercentiles" : { + "0.0" : 0.15020872268869695, + "50.0" : 0.15303056841831425, + "90.0" : 0.15461172318681488, + "95.0" : 0.15461172318681488, + "99.0" : 0.15461172318681488, + "99.9" : 0.15461172318681488, + "99.99" : 0.15461172318681488, + "99.999" : 0.15461172318681488, + "99.9999" : 0.15461172318681488, + "100.0" : 0.15461172318681488 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15093022850415805, + 0.15135348939036203, + 0.15020872268869695 + ], + [ + 0.15303056841831425, + 0.1532261759162785, + 0.1527119071376214 + ], + [ + 0.15452919102512594, + 0.15461172318681488, + 0.15417220364146522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "enableDataLoaderChaining" : "false" + }, + "primaryMetric" : { + "score" : 0.13341252894468913, + "scoreError" : 5.207141359596564E-4, + "scoreConfidence" : [ + 0.13289181480872947, + 0.1339332430806488 + ], + "scorePercentiles" : { + "0.0" : 0.13297701200765938, + "50.0" : 0.13346115493126917, + "90.0" : 0.13387963636120223, + "95.0" : 0.13387963636120223, + "99.0" : 0.13387963636120223, + "99.9" : 0.13387963636120223, + "99.99" : 0.13387963636120223, + "99.999" : 0.13387963636120223, + "99.9999" : 0.13387963636120223, + "100.0" : 0.13387963636120223 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1332875159875778, + 0.13297701200765938, + 0.1330036767925306 + ], + [ + 0.13354569715018297, + 0.13346115493126917, + 0.1332346234595041 + ], + [ + 0.13387963636120223, + 0.1336338561864418, + 0.13368958762583388 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-11T11:48:05Z-6c3d14ccbed15fb8062240dc36286488e65c5062-jdk17.json b/performance-results/2025-04-11T11:48:05Z-6c3d14ccbed15fb8062240dc36286488e65c5062-jdk17.json new file mode 100644 index 0000000000..e5d6e3b525 --- /dev/null +++ b/performance-results/2025-04-11T11:48:05Z-6c3d14ccbed15fb8062240dc36286488e65c5062-jdk17.json @@ -0,0 +1,63 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.15450705534887477, + "scoreError" : 0.003298478711981938, + "scoreConfidence" : [ + 0.15120857663689283, + 0.1578055340608567 + ], + "scorePercentiles" : { + "0.0" : 0.1526355479493872, + "50.0" : 0.15370355617718484, + "90.0" : 0.15762606131391463, + "95.0" : 0.15762606131391463, + "99.0" : 0.15762606131391463, + "99.9" : 0.15762606131391463, + "99.99" : 0.15762606131391463, + "99.999" : 0.15762606131391463, + "99.9999" : 0.15762606131391463, + "100.0" : 0.15762606131391463 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15762606131391463, + 0.15670122787031668, + 0.15684944239848173 + ], + [ + 0.15299841920381874, + 0.15312287682979114, + 0.1526355479493872 + ], + [ + 0.15383340897134154, + 0.15370355617718484, + 0.15309295742563647 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-14T04:48:27Z-04a359a3b500351509a6d178dfacdf90e4303a4e-jdk17.json b/performance-results/2025-04-14T04:48:27Z-04a359a3b500351509a6d178dfacdf90e4303a4e-jdk17.json new file mode 100644 index 0000000000..2737bc4ab3 --- /dev/null +++ b/performance-results/2025-04-14T04:48:27Z-04a359a3b500351509a6d178dfacdf90e4303a4e-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4111467063880516, + "scoreError" : 0.028995715723955873, + "scoreConfidence" : [ + 3.382150990664096, + 3.4401424221120074 + ], + "scorePercentiles" : { + "0.0" : 3.4044552860492434, + "50.0" : 3.4131108777701327, + "90.0" : 3.4139097839626955, + "95.0" : 3.4139097839626955, + "99.0" : 3.4139097839626955, + "99.9" : 3.4139097839626955, + "99.99" : 3.4139097839626955, + "99.999" : 3.4139097839626955, + "99.9999" : 3.4139097839626955, + "100.0" : 3.4139097839626955 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4044552860492434, + 3.4127386739915155 + ], + [ + 3.4139097839626955, + 3.4134830815487502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7209449283872307, + "scoreError" : 0.04749975519992041, + "scoreConfidence" : [ + 1.6734451731873103, + 1.768444683587151 + ], + "scorePercentiles" : { + "0.0" : 1.7144864274156433, + "50.0" : 1.7202324126140236, + "90.0" : 1.728828460905232, + "95.0" : 1.728828460905232, + "99.0" : 1.728828460905232, + "99.9" : 1.728828460905232, + "99.99" : 1.728828460905232, + "99.999" : 1.728828460905232, + "99.9999" : 1.728828460905232, + "100.0" : 1.728828460905232 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7148836728272139, + 1.7144864274156433 + ], + [ + 1.7255811524008335, + 1.728828460905232 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8658849432983765, + "scoreError" : 0.0029456488420708873, + "scoreConfidence" : [ + 0.8629392944563056, + 0.8688305921404474 + ], + "scorePercentiles" : { + "0.0" : 0.8653071391946788, + "50.0" : 0.8659476988856136, + "90.0" : 0.8663372362276, + "95.0" : 0.8663372362276, + "99.0" : 0.8663372362276, + "99.9" : 0.8663372362276, + "99.99" : 0.8663372362276, + "99.999" : 0.8663372362276, + "99.9999" : 0.8663372362276, + "100.0" : 0.8663372362276 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653071391946788, + 0.8661440072262341 + ], + [ + 0.8663372362276, + 0.8657513905449932 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.957740198522325, + "scoreError" : 0.12806058962784847, + "scoreConfidence" : [ + 15.829679608894477, + 16.085800788150173 + ], + "scorePercentiles" : { + "0.0" : 15.878945697096766, + "50.0" : 15.942813764315957, + "90.0" : 16.083306741377864, + "95.0" : 16.083306741377864, + "99.0" : 16.083306741377864, + "99.9" : 16.083306741377864, + "99.99" : 16.083306741377864, + "99.999" : 16.083306741377864, + "99.9999" : 16.083306741377864, + "100.0" : 16.083306741377864 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.878945697096766, + 15.880987251942377, + 15.892916894525875 + ], + [ + 15.986139710476007, + 16.083306741377864, + 16.054806565268578 + ], + [ + 15.9061907795102, + 15.942813764315957, + 15.993554382187286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2595.3876048099523, + "scoreError" : 50.756297070234275, + "scoreConfidence" : [ + 2544.631307739718, + 2646.1439018801866 + ], + "scorePercentiles" : { + "0.0" : 2559.4694167490175, + "50.0" : 2593.257795767608, + "90.0" : 2632.2525583647766, + "95.0" : 2632.2525583647766, + "99.0" : 2632.2525583647766, + "99.9" : 2632.2525583647766, + "99.99" : 2632.2525583647766, + "99.999" : 2632.2525583647766, + "99.9999" : 2632.2525583647766, + "100.0" : 2632.2525583647766 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2565.5638947326142, + 2559.8747980331786, + 2559.4694167490175 + ], + [ + 2590.9314831222046, + 2593.257795767608, + 2596.036235475856 + ], + [ + 2629.894374104914, + 2631.207886939403, + 2632.2525583647766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70360.54724576049, + "scoreError" : 349.21755988695463, + "scoreConfidence" : [ + 70011.32968587354, + 70709.76480564744 + ], + "scorePercentiles" : { + "0.0" : 70095.20972074133, + "50.0" : 70252.63703065725, + "90.0" : 70643.97985509799, + "95.0" : 70643.97985509799, + "99.0" : 70643.97985509799, + "99.9" : 70643.97985509799, + "99.99" : 70643.97985509799, + "99.999" : 70643.97985509799, + "99.9999" : 70643.97985509799, + "100.0" : 70643.97985509799 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70252.63703065725, + 70236.10081852683, + 70174.2941254237 + ], + [ + 70392.08527496582, + 70095.20972074133, + 70243.59007858284 + ], + [ + 70593.68469235738, + 70613.3436154913, + 70643.97985509799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 341.88381344542813, + "scoreError" : 9.546421293774017, + "scoreConfidence" : [ + 332.3373921516541, + 351.43023473920215 + ], + "scorePercentiles" : { + "0.0" : 335.37390371811694, + "50.0" : 341.2730460500591, + "90.0" : 349.42881715679937, + "95.0" : 349.42881715679937, + "99.0" : 349.42881715679937, + "99.9" : 349.42881715679937, + "99.99" : 349.42881715679937, + "99.999" : 349.42881715679937, + "99.9999" : 349.42881715679937, + "100.0" : 349.42881715679937 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.2730460500591, + 341.84586768131504, + 339.42672320128844 + ], + [ + 335.84226592699633, + 335.37390371811694, + 336.6712334294637 + ], + [ + 348.6419227055528, + 349.42881715679937, + 348.450541139261 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.28315530825641, + "scoreError" : 3.753352014968278, + "scoreConfidence" : [ + 104.52980329328814, + 112.03650732322468 + ], + "scorePercentiles" : { + "0.0" : 106.44714460708023, + "50.0" : 106.97839809812236, + "90.0" : 111.81604689066181, + "95.0" : 111.81604689066181, + "99.0" : 111.81604689066181, + "99.9" : 111.81604689066181, + "99.99" : 111.81604689066181, + "99.999" : 111.81604689066181, + "99.9999" : 111.81604689066181, + "100.0" : 111.81604689066181 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.84955039710748, + 106.97839809812236, + 107.04019135730321 + ], + [ + 106.6608827718748, + 106.44714460708023, + 106.90597870402031 + ], + [ + 110.55950576783664, + 111.29069918030089, + 111.81604689066181 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06250195166021222, + "scoreError" : 4.0643066476709917E-4, + "scoreConfidence" : [ + 0.062095520995445116, + 0.06290838232497932 + ], + "scorePercentiles" : { + "0.0" : 0.06218114185160083, + "50.0" : 0.062436826065782575, + "90.0" : 0.06283466759660697, + "95.0" : 0.06283466759660697, + "99.0" : 0.06283466759660697, + "99.9" : 0.06283466759660697, + "99.99" : 0.06283466759660697, + "99.999" : 0.06283466759660697, + "99.9999" : 0.06283466759660697, + "100.0" : 0.06283466759660697 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06243123878193123, + 0.06218114185160083, + 0.06220331236898579 + ], + [ + 0.06278797754100007, + 0.06283466759660697, + 0.062436826065782575 + ], + [ + 0.062336141756481306, + 0.06263177068380243, + 0.06267448829571877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.763931321982923E-4, + "scoreError" : 5.047240920078014E-6, + "scoreConfidence" : [ + 3.713458912782143E-4, + 3.814403731183703E-4 + ], + "scorePercentiles" : { + "0.0" : 3.723628598436273E-4, + "50.0" : 3.7546109636464825E-4, + "90.0" : 3.806760084731394E-4, + "95.0" : 3.806760084731394E-4, + "99.0" : 3.806760084731394E-4, + "99.9" : 3.806760084731394E-4, + "99.99" : 3.806760084731394E-4, + "99.999" : 3.806760084731394E-4, + "99.9999" : 3.806760084731394E-4, + "100.0" : 3.806760084731394E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.804273528747368E-4, + 3.806760084731394E-4, + 3.7930564810188393E-4 + ], + [ + 3.749873144534879E-4, + 3.7546109636464825E-4, + 3.7595639224821757E-4 + ], + [ + 3.741597534584873E-4, + 3.742017639664023E-4, + 3.723628598436273E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1110982853842243, + "scoreError" : 0.0033993686888330304, + "scoreConfidence" : [ + 0.10769891669539126, + 0.11449765407305733 + ], + "scorePercentiles" : { + "0.0" : 0.10862349404212333, + "50.0" : 0.11101319547962389, + "90.0" : 0.1134542113270481, + "95.0" : 0.1134542113270481, + "99.0" : 0.1134542113270481, + "99.9" : 0.1134542113270481, + "99.99" : 0.1134542113270481, + "99.999" : 0.1134542113270481, + "99.9999" : 0.1134542113270481, + "100.0" : 0.1134542113270481 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10881517134929271, + 0.10884405976533588, + 0.10862349404212333 + ], + [ + 0.1134542113270481, + 0.11343169139065336, + 0.11339374310012473 + ], + [ + 0.11129718835418244, + 0.11101181364963422, + 0.11101319547962389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01412296697103164, + "scoreError" : 8.169932638944794E-5, + "scoreConfidence" : [ + 0.014041267644642192, + 0.014204666297421087 + ], + "scorePercentiles" : { + "0.0" : 0.014056673242762663, + "50.0" : 0.014135587403384579, + "90.0" : 0.014179703816562259, + "95.0" : 0.014179703816562259, + "99.0" : 0.014179703816562259, + "99.9" : 0.014179703816562259, + "99.99" : 0.014179703816562259, + "99.999" : 0.014179703816562259, + "99.9999" : 0.014179703816562259, + "100.0" : 0.014179703816562259 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014129743113614238, + 0.014135587403384579, + 0.01414318876111464 + ], + [ + 0.01416080803869813, + 0.014179703816562259, + 0.01417203205814995 + ], + [ + 0.014065367385632407, + 0.014056673242762663, + 0.014063598919365908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9857626422864109, + "scoreError" : 0.008358507597933267, + "scoreConfidence" : [ + 0.9774041346884776, + 0.9941211498843441 + ], + "scorePercentiles" : { + "0.0" : 0.9802160982160361, + "50.0" : 0.9840446739151826, + "90.0" : 0.9931879542159102, + "95.0" : 0.9931879542159102, + "99.0" : 0.9931879542159102, + "99.9" : 0.9931879542159102, + "99.99" : 0.9931879542159102, + "99.999" : 0.9931879542159102, + "99.9999" : 0.9931879542159102, + "100.0" : 0.9931879542159102 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9844508347278276, + 0.9925314928543073, + 0.9931879542159102 + ], + [ + 0.9840446739151826, + 0.980470467254902, + 0.9802160982160361 + ], + [ + 0.9836777185993902, + 0.9829250139571457, + 0.9903595268369975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013188942649367976, + "scoreError" : 5.295557939570219E-4, + "scoreConfidence" : [ + 0.012659386855410954, + 0.013718498443324999 + ], + "scorePercentiles" : { + "0.0" : 0.012951529484748642, + "50.0" : 0.013171834949463732, + "90.0" : 0.01340251443819306, + "95.0" : 0.01340251443819306, + "99.0" : 0.01340251443819306, + "99.9" : 0.01340251443819306, + "99.99" : 0.01340251443819306, + "99.999" : 0.01340251443819306, + "99.9999" : 0.01340251443819306, + "100.0" : 0.01340251443819306 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013280107967342343, + 0.013377057404811335, + 0.01340251443819306 + ], + [ + 0.012951529484748642, + 0.013058884669527359, + 0.013063561931585121 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8604282720790066, + "scoreError" : 0.07840614805729196, + "scoreConfidence" : [ + 3.7820221240217147, + 3.9388344201362986 + ], + "scorePercentiles" : { + "0.0" : 3.815332032036613, + "50.0" : 3.8602328171296296, + "90.0" : 3.9033303900156007, + "95.0" : 3.9033303900156007, + "99.0" : 3.9033303900156007, + "99.9" : 3.9033303900156007, + "99.99" : 3.9033303900156007, + "99.999" : 3.9033303900156007, + "99.9999" : 3.9033303900156007, + "100.0" : 3.9033303900156007 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8577754818812644, + 3.8656660942812984, + 3.9033303900156007 + ], + [ + 3.815332032036613, + 3.860462302469136, + 3.8600033317901237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9219873868943775, + "scoreError" : 0.059572104818889256, + "scoreConfidence" : [ + 2.8624152820754882, + 2.981559491713267 + ], + "scorePercentiles" : { + "0.0" : 2.8774678857882625, + "50.0" : 2.920831448890187, + "90.0" : 2.969246175178147, + "95.0" : 2.969246175178147, + "99.0" : 2.969246175178147, + "99.9" : 2.969246175178147, + "99.99" : 2.969246175178147, + "99.999" : 2.969246175178147, + "99.9999" : 2.969246175178147, + "100.0" : 2.969246175178147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.956449234111735, + 2.969246175178147, + 2.96028769635987 + ], + [ + 2.8774678857882625, + 2.8789117812320093, + 2.886434249062049 + ], + [ + 2.920831448890187, + 2.918937915645067, + 2.929320095782074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17653126331230015, + "scoreError" : 0.006883506824634695, + "scoreConfidence" : [ + 0.16964775648766545, + 0.18341477013693486 + ], + "scorePercentiles" : { + "0.0" : 0.1711137734506006, + "50.0" : 0.17793257307569127, + "90.0" : 0.18046910107918862, + "95.0" : 0.18046910107918862, + "99.0" : 0.18046910107918862, + "99.9" : 0.18046910107918862, + "99.99" : 0.18046910107918862, + "99.999" : 0.18046910107918862, + "99.9999" : 0.18046910107918862, + "100.0" : 0.18046910107918862 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17147159504458162, + 0.17119870958519506, + 0.1711137734506006 + ], + [ + 0.1802850988299771, + 0.1804294302751466, + 0.18046910107918862 + ], + [ + 0.17818562236516222, + 0.17793257307569127, + 0.1776954661051584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.333145333963962, + "scoreError" : 0.015132366133567478, + "scoreConfidence" : [ + 0.3180129678303945, + 0.3482777000975295 + ], + "scorePercentiles" : { + "0.0" : 0.3227571863542473, + "50.0" : 0.3335272022479405, + "90.0" : 0.34411261446612296, + "95.0" : 0.34411261446612296, + "99.0" : 0.34411261446612296, + "99.9" : 0.34411261446612296, + "99.99" : 0.34411261446612296, + "99.999" : 0.34411261446612296, + "99.9999" : 0.34411261446612296, + "100.0" : 0.34411261446612296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32817596075085326, + 0.3337560030370791, + 0.3335272022479405 + ], + [ + 0.32497462459378657, + 0.3227571863542473, + 0.32324420622555516 + ], + [ + 0.3437178911803121, + 0.34411261446612296, + 0.3440423168197612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15850080116053814, + "scoreError" : 0.012644310452077069, + "scoreConfidence" : [ + 0.14585649070846107, + 0.1711451116126152 + ], + "scorePercentiles" : { + "0.0" : 0.14887960351347326, + "50.0" : 0.16071174217758136, + "90.0" : 0.16611452931014434, + "95.0" : 0.16611452931014434, + "99.0" : 0.16611452931014434, + "99.9" : 0.16611452931014434, + "99.99" : 0.16611452931014434, + "99.999" : 0.16611452931014434, + "99.9999" : 0.16611452931014434, + "100.0" : 0.16611452931014434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14896414061848298, + 0.14897319334991882, + 0.14887960351347326 + ], + [ + 0.16611452931014434, + 0.16596250653876793, + 0.16563627400867922 + ], + [ + 0.16086383096869672, + 0.16071174217758136, + 0.16040138995909856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3868683349633209, + "scoreError" : 0.01098873236127017, + "scoreConfidence" : [ + 0.3758796026020507, + 0.3978570673245911 + ], + "scorePercentiles" : { + "0.0" : 0.3810287050217176, + "50.0" : 0.38296346785126184, + "90.0" : 0.3956893806829423, + "95.0" : 0.3956893806829423, + "99.0" : 0.3956893806829423, + "99.9" : 0.3956893806829423, + "99.99" : 0.3956893806829423, + "99.999" : 0.3956893806829423, + "99.9999" : 0.3956893806829423, + "100.0" : 0.3956893806829423 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3956893806829423, + 0.39546501087515323, + 0.39502327780850055 + ], + [ + 0.385864201875217, + 0.38296346785126184, + 0.38150716453668027 + ], + [ + 0.3821082290321348, + 0.38216557698628045, + 0.3810287050217176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16065689865670058, + "scoreError" : 0.0017897774263760235, + "scoreConfidence" : [ + 0.15886712123032457, + 0.16244667608307659 + ], + "scorePercentiles" : { + "0.0" : 0.15903354863949365, + "50.0" : 0.1612849705175556, + "90.0" : 0.16174259617002004, + "95.0" : 0.16174259617002004, + "99.0" : 0.16174259617002004, + "99.9" : 0.16174259617002004, + "99.99" : 0.16174259617002004, + "99.999" : 0.16174259617002004, + "99.9999" : 0.16174259617002004, + "100.0" : 0.16174259617002004 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.159709556176635, + 0.15915344004838144, + 0.15903354863949365 + ], + [ + 0.16174259617002004, + 0.16142818530057468, + 0.16138398040829502 + ], + [ + 0.16141468303902895, + 0.1612849705175556, + 0.16076112761032071 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047049841955816324, + "scoreError" : 6.427784091603552E-4, + "scoreConfidence" : [ + 0.04640706354665597, + 0.04769262036497668 + ], + "scorePercentiles" : { + "0.0" : 0.04669233446171517, + "50.0" : 0.0469847830791494, + "90.0" : 0.04789604152058547, + "95.0" : 0.04789604152058547, + "99.0" : 0.04789604152058547, + "99.9" : 0.04789604152058547, + "99.99" : 0.04789604152058547, + "99.999" : 0.04789604152058547, + "99.9999" : 0.04789604152058547, + "100.0" : 0.04789604152058547 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04789604152058547, + 0.0472788827973562, + 0.04715241765449213 + ], + [ + 0.04714059057011134, + 0.04670176241313607, + 0.04669233446171517 + ], + [ + 0.0469847830791494, + 0.046855918373753656, + 0.04674584673204753 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9561463.24035374, + "scoreError" : 540737.3292327791, + "scoreConfidence" : [ + 9020725.911120962, + 1.010220056958652E7 + ], + "scorePercentiles" : { + "0.0" : 9196065.042279411, + "50.0" : 9509749.255703421, + "90.0" : 9979119.463609172, + "95.0" : 9979119.463609172, + "99.0" : 9979119.463609172, + "99.9" : 9979119.463609172, + "99.99" : 9979119.463609172, + "99.999" : 9979119.463609172, + "99.9999" : 9979119.463609172, + "100.0" : 9979119.463609172 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9260454.827777777, + 9202573.529898804, + 9196065.042279411 + ], + [ + 9912567.365708623, + 9979119.463609172, + 9971481.045862412 + ], + [ + 9540229.52049571, + 9509749.255703421, + 9480929.111848341 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-15T00:25:09Z-ee1541d583cf2334a9da02fd65a897e1a6cec20d-jdk17.json b/performance-results/2025-04-15T00:25:09Z-ee1541d583cf2334a9da02fd65a897e1a6cec20d-jdk17.json new file mode 100644 index 0000000000..073b881e47 --- /dev/null +++ b/performance-results/2025-04-15T00:25:09Z-ee1541d583cf2334a9da02fd65a897e1a6cec20d-jdk17.json @@ -0,0 +1,63 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.13211000286799135, + "scoreError" : 0.002155148324342315, + "scoreConfidence" : [ + 0.12995485454364902, + 0.13426515119233368 + ], + "scorePercentiles" : { + "0.0" : 0.13060583810469126, + "50.0" : 0.13182195652575104, + "90.0" : 0.13374850080915887, + "95.0" : 0.13374850080915887, + "99.0" : 0.13374850080915887, + "99.9" : 0.13374850080915887, + "99.99" : 0.13374850080915887, + "99.999" : 0.13374850080915887, + "99.9999" : 0.13374850080915887, + "100.0" : 0.13374850080915887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13219848658867075, + 0.13148381968549488, + 0.13182195652575104 + ], + [ + 0.13374850080915887, + 0.13361761406696773, + 0.13370575607016794 + ], + [ + 0.13091305163114625, + 0.13089500232987342, + 0.13060583810469126 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-15T02:21:30Z-f1ac9ac58d0f7e22bb505453b225387d64599318-jdk17.json b/performance-results/2025-04-15T02:21:30Z-f1ac9ac58d0f7e22bb505453b225387d64599318-jdk17.json new file mode 100644 index 0000000000..e3626a8707 --- /dev/null +++ b/performance-results/2025-04-15T02:21:30Z-f1ac9ac58d0f7e22bb505453b225387d64599318-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.415322760546764, + "scoreError" : 0.008877684133462406, + "scoreConfidence" : [ + 3.4064450764133016, + 3.4242004446802263 + ], + "scorePercentiles" : { + "0.0" : 3.4140894541828954, + "50.0" : 3.4150852752032304, + "90.0" : 3.4170310375977015, + "95.0" : 3.4170310375977015, + "99.0" : 3.4170310375977015, + "99.9" : 3.4170310375977015, + "99.99" : 3.4170310375977015, + "99.999" : 3.4170310375977015, + "99.9999" : 3.4170310375977015, + "100.0" : 3.4170310375977015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4140894541828954, + 3.415830320465181 + ], + [ + 3.414340229941279, + 3.4170310375977015 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.726168576489703, + "scoreError" : 0.012552115379516391, + "scoreConfidence" : [ + 1.7136164611101867, + 1.7387206918692193 + ], + "scorePercentiles" : { + "0.0" : 1.724831043650483, + "50.0" : 1.7254023599916009, + "90.0" : 1.7290385423251273, + "95.0" : 1.7290385423251273, + "99.0" : 1.7290385423251273, + "99.9" : 1.7290385423251273, + "99.99" : 1.7290385423251273, + "99.999" : 1.7290385423251273, + "99.9999" : 1.7290385423251273, + "100.0" : 1.7290385423251273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7256468045337503, + 1.7290385423251273 + ], + [ + 1.724831043650483, + 1.7251579154494512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682374949456866, + "scoreError" : 0.00545843684967786, + "scoreConfidence" : [ + 0.8627790580960087, + 0.8736959317953644 + ], + "scorePercentiles" : { + "0.0" : 0.867328139207002, + "50.0" : 0.8681261178147017, + "90.0" : 0.8693696049463412, + "95.0" : 0.8693696049463412, + "99.0" : 0.8693696049463412, + "99.9" : 0.8693696049463412, + "99.99" : 0.8693696049463412, + "99.999" : 0.8693696049463412, + "99.9999" : 0.8693696049463412, + "100.0" : 0.8693696049463412 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8681858643252067, + 0.8693696049463412 + ], + [ + 0.867328139207002, + 0.8680663713041967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.300666638426538, + "scoreError" : 0.1319480135658443, + "scoreConfidence" : [ + 16.168718624860695, + 16.43261465199238 + ], + "scorePercentiles" : { + "0.0" : 16.169592327457902, + "50.0" : 16.34361266133987, + "90.0" : 16.36809027402251, + "95.0" : 16.36809027402251, + "99.0" : 16.36809027402251, + "99.9" : 16.36809027402251, + "99.99" : 16.36809027402251, + "99.999" : 16.36809027402251, + "99.9999" : 16.36809027402251, + "100.0" : 16.36809027402251 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.23421932287947, + 16.194473829597943, + 16.169592327457902 + ], + [ + 16.34361266133987, + 16.32947932341642, + 16.36809027402251 + ], + [ + 16.365114656893955, + 16.344867551466116, + 16.356549798764693 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2681.6825671924084, + "scoreError" : 128.09488938125727, + "scoreConfidence" : [ + 2553.587677811151, + 2809.777456573666 + ], + "scorePercentiles" : { + "0.0" : 2589.317831849761, + "50.0" : 2682.083192537607, + "90.0" : 2770.55344358305, + "95.0" : 2770.55344358305, + "99.0" : 2770.55344358305, + "99.9" : 2770.55344358305, + "99.99" : 2770.55344358305, + "99.999" : 2770.55344358305, + "99.9999" : 2770.55344358305, + "100.0" : 2770.55344358305 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2677.68345740909, + 2682.083192537607, + 2684.079233016626 + ], + [ + 2590.9658057294705, + 2601.627056703632, + 2589.317831849761 + ], + [ + 2769.9709001112137, + 2770.55344358305, + 2768.8621837912297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71173.61262840743, + "scoreError" : 288.0821606105507, + "scoreConfidence" : [ + 70885.53046779688, + 71461.69478901797 + ], + "scorePercentiles" : { + "0.0" : 70976.6636535815, + "50.0" : 71138.38646852618, + "90.0" : 71435.28650698674, + "95.0" : 71435.28650698674, + "99.0" : 71435.28650698674, + "99.9" : 71435.28650698674, + "99.99" : 71435.28650698674, + "99.999" : 71435.28650698674, + "99.9999" : 71435.28650698674, + "100.0" : 71435.28650698674 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71377.2880619351, + 71435.28650698674, + 71349.89466660391 + ], + [ + 71151.33487803435, + 71138.38646852618, + 71080.79031160948 + ], + [ + 71054.87130124698, + 70997.99780714247, + 70976.6636535815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.4816561043797, + "scoreError" : 5.265399187767131, + "scoreConfidence" : [ + 348.21625691661256, + 358.7470552921468 + ], + "scorePercentiles" : { + "0.0" : 349.629848344264, + "50.0" : 353.85083493882615, + "90.0" : 357.43439363191766, + "95.0" : 357.43439363191766, + "99.0" : 357.43439363191766, + "99.9" : 357.43439363191766, + "99.99" : 357.43439363191766, + "99.999" : 357.43439363191766, + "99.9999" : 357.43439363191766, + "100.0" : 357.43439363191766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.7003346352882, + 349.629848344264, + 349.7478442724203 + ], + [ + 354.932122496948, + 357.43439363191766, + 357.36818969254136 + ], + [ + 353.85083493882615, + 355.05644068169914, + 353.6148962455119 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.23699180977785, + "scoreError" : 2.0907741551563395, + "scoreConfidence" : [ + 102.14621765462151, + 106.32776596493419 + ], + "scorePercentiles" : { + "0.0" : 102.62138068273445, + "50.0" : 104.48109622481194, + "90.0" : 105.71028203455687, + "95.0" : 105.71028203455687, + "99.0" : 105.71028203455687, + "99.9" : 105.71028203455687, + "99.99" : 105.71028203455687, + "99.999" : 105.71028203455687, + "99.9999" : 105.71028203455687, + "100.0" : 105.71028203455687 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.71028203455687, + 105.43682926345448, + 105.41694516195695 + ], + [ + 104.47786550747375, + 104.48109622481194, + 104.53314698616293 + ], + [ + 102.7984462528841, + 102.62138068273445, + 102.65693417396511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061393494879658804, + "scoreError" : 1.1962425357889179E-4, + "scoreConfidence" : [ + 0.06127387062607991, + 0.0615131191332377 + ], + "scorePercentiles" : { + "0.0" : 0.06131567766243799, + "50.0" : 0.061371366092853416, + "90.0" : 0.0615420625565409, + "95.0" : 0.0615420625565409, + "99.0" : 0.0615420625565409, + "99.9" : 0.0615420625565409, + "99.99" : 0.0615420625565409, + "99.999" : 0.0615420625565409, + "99.9999" : 0.0615420625565409, + "100.0" : 0.0615420625565409 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06134546595670284, + 0.06139859910850238, + 0.06131567766243799 + ], + [ + 0.06145154837401372, + 0.061371366092853416, + 0.0615420625565409 + ], + [ + 0.06142878124232149, + 0.06134990278033398, + 0.061338050143222536 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.64554982535371E-4, + "scoreError" : 6.8586724458433974E-6, + "scoreConfidence" : [ + 3.576963100895276E-4, + 3.714136549812144E-4 + ], + "scorePercentiles" : { + "0.0" : 3.598166457885479E-4, + "50.0" : 3.6341976860741065E-4, + "90.0" : 3.707749243868395E-4, + "95.0" : 3.707749243868395E-4, + "99.0" : 3.707749243868395E-4, + "99.9" : 3.707749243868395E-4, + "99.99" : 3.707749243868395E-4, + "99.999" : 3.707749243868395E-4, + "99.9999" : 3.707749243868395E-4, + "100.0" : 3.707749243868395E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.697832456407533E-4, + 3.707749243868395E-4, + 3.6837124169971627E-4 + ], + [ + 3.641311723708613E-4, + 3.6341976860741065E-4, + 3.625277007969317E-4 + ], + [ + 3.6161957230427E-4, + 3.598166457885479E-4, + 3.6055057122300836E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11051191799918697, + "scoreError" : 0.002707744013328891, + "scoreConfidence" : [ + 0.10780417398585808, + 0.11321966201251586 + ], + "scorePercentiles" : { + "0.0" : 0.10899726683161302, + "50.0" : 0.10984616498604978, + "90.0" : 0.1127032575115519, + "95.0" : 0.1127032575115519, + "99.0" : 0.1127032575115519, + "99.9" : 0.1127032575115519, + "99.99" : 0.1127032575115519, + "99.999" : 0.1127032575115519, + "99.9999" : 0.1127032575115519, + "100.0" : 0.1127032575115519 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10964769043781454, + 0.10988352146538179, + 0.10984616498604978 + ], + [ + 0.1127032575115519, + 0.11257319460110544, + 0.11258857181941004 + ], + [ + 0.10899726683161302, + 0.10920509101035251, + 0.10916250332940354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014404611777662037, + "scoreError" : 4.94837964361807E-4, + "scoreConfidence" : [ + 0.01390977381330023, + 0.014899449742023844 + ], + "scorePercentiles" : { + "0.0" : 0.014163445031591202, + "50.0" : 0.014250613055981486, + "90.0" : 0.014796964243543419, + "95.0" : 0.014796964243543419, + "99.0" : 0.014796964243543419, + "99.9" : 0.014796964243543419, + "99.99" : 0.014796964243543419, + "99.999" : 0.014796964243543419, + "99.9999" : 0.014796964243543419, + "100.0" : 0.014796964243543419 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014178386236064579, + 0.014163445031591202, + 0.014165898809936977 + ], + [ + 0.014244344022642552, + 0.014255661387857742, + 0.014250613055981486 + ], + [ + 0.014796964243543419, + 0.014795223785400841, + 0.014790969425939512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9881261754564223, + "scoreError" : 0.008924161395120192, + "scoreConfidence" : [ + 0.9792020140613021, + 0.9970503368515425 + ], + "scorePercentiles" : { + "0.0" : 0.9794501876591577, + "50.0" : 0.9873859891390205, + "90.0" : 0.9956756888689765, + "95.0" : 0.9956756888689765, + "99.0" : 0.9956756888689765, + "99.9" : 0.9956756888689765, + "99.99" : 0.9956756888689765, + "99.999" : 0.9956756888689765, + "99.9999" : 0.9956756888689765, + "100.0" : 0.9956756888689765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9864574973367528, + 0.9850826977935382, + 0.9923917527041778 + ], + [ + 0.9873859891390205, + 0.9825333868146984, + 0.9794501876591577 + ], + [ + 0.9922053252306776, + 0.9956756888689765, + 0.9919530535608014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01315948640587937, + "scoreError" : 1.009289306331267E-4, + "scoreConfidence" : [ + 0.013058557475246244, + 0.013260415336512496 + ], + "scorePercentiles" : { + "0.0" : 0.013125023558903822, + "50.0" : 0.013151889443773998, + "90.0" : 0.013207332544434965, + "95.0" : 0.013207332544434965, + "99.0" : 0.013207332544434965, + "99.9" : 0.013207332544434965, + "99.99" : 0.013207332544434965, + "99.999" : 0.013207332544434965, + "99.9999" : 0.013207332544434965, + "100.0" : 0.013207332544434965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013207332544434965, + 0.013195739565767008, + 0.01316575044959885 + ], + [ + 0.013125023558903822, + 0.013125043878622428, + 0.013138028437949147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5755535503120117, + "scoreError" : 0.14074597545832987, + "scoreConfidence" : [ + 3.4348075748536817, + 3.7162995257703417 + ], + "scorePercentiles" : { + "0.0" : 3.5072742994389903, + "50.0" : 3.5793373091961818, + "90.0" : 3.623208715423606, + "95.0" : 3.623208715423606, + "99.0" : 3.623208715423606, + "99.9" : 3.623208715423606, + "99.99" : 3.623208715423606, + "99.999" : 3.623208715423606, + "99.9999" : 3.623208715423606, + "100.0" : 3.623208715423606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5072742994389903, + 3.545946366406804, + 3.541344769992923 + ], + [ + 3.6127282519855597, + 3.623208715423606, + 3.6228188986241854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8584262386525356, + "scoreError" : 0.11296655079735753, + "scoreConfidence" : [ + 2.745459687855178, + 2.9713927894498933 + ], + "scorePercentiles" : { + "0.0" : 2.7725898680343777, + "50.0" : 2.8794690858047796, + "90.0" : 2.9462836488954345, + "95.0" : 2.9462836488954345, + "99.0" : 2.9462836488954345, + "99.9" : 2.9462836488954345, + "99.99" : 2.9462836488954345, + "99.999" : 2.9462836488954345, + "99.9999" : 2.9462836488954345, + "100.0" : 2.9462836488954345 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7754202280799114, + 2.775161105160932, + 2.7725898680343777 + ], + [ + 2.8794690858047796, + 2.8831267172095707, + 2.8662103215821153 + ], + [ + 2.913743901252549, + 2.9138312718531467, + 2.9462836488954345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1744819798446093, + "scoreError" : 0.00421227370866724, + "scoreConfidence" : [ + 0.17026970613594206, + 0.17869425355327656 + ], + "scorePercentiles" : { + "0.0" : 0.1721613260854595, + "50.0" : 0.1734807359354671, + "90.0" : 0.17781383723328592, + "95.0" : 0.17781383723328592, + "99.0" : 0.17781383723328592, + "99.9" : 0.17781383723328592, + "99.99" : 0.17781383723328592, + "99.999" : 0.17781383723328592, + "99.9999" : 0.17781383723328592, + "100.0" : 0.17781383723328592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17337849144402642, + 0.17350859569705906, + 0.1734807359354671 + ], + [ + 0.1722161709547427, + 0.1721613260854595, + 0.17234670100303323 + ], + [ + 0.17774275413245175, + 0.17768920611595798, + 0.17781383723328592 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32466101895043337, + "scoreError" : 0.003985813143698082, + "scoreConfidence" : [ + 0.3206752058067353, + 0.3286468320941314 + ], + "scorePercentiles" : { + "0.0" : 0.32243601005964856, + "50.0" : 0.32337311951495556, + "90.0" : 0.3290730748955214, + "95.0" : 0.3290730748955214, + "99.0" : 0.3290730748955214, + "99.9" : 0.3290730748955214, + "99.99" : 0.3290730748955214, + "99.999" : 0.3290730748955214, + "99.9999" : 0.3290730748955214, + "100.0" : 0.3290730748955214 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32337311951495556, + 0.32243601005964856, + 0.32283099951576977 + ], + [ + 0.32310682762520193, + 0.3232315713823976, + 0.32397497699883376 + ], + [ + 0.3290730748955214, + 0.3271489701648783, + 0.3267736203966931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15744661128564347, + "scoreError" : 0.007736581048892359, + "scoreConfidence" : [ + 0.1497100302367511, + 0.16518319233453582 + ], + "scorePercentiles" : { + "0.0" : 0.15317215995527442, + "50.0" : 0.15548416937979073, + "90.0" : 0.16349197984174216, + "95.0" : 0.16349197984174216, + "99.0" : 0.16349197984174216, + "99.9" : 0.16349197984174216, + "99.99" : 0.16349197984174216, + "99.999" : 0.16349197984174216, + "99.9999" : 0.16349197984174216, + "100.0" : 0.16349197984174216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15336360400883353, + 0.15354447732960738, + 0.15317215995527442 + ], + [ + 0.15545134189336235, + 0.15563929790512357, + 0.15548416937979073 + ], + [ + 0.1634775595370431, + 0.16339491172001372, + 0.16349197984174216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39292306883244443, + "scoreError" : 0.010449578000728097, + "scoreConfidence" : [ + 0.38247349083171633, + 0.40337264683317253 + ], + "scorePercentiles" : { + "0.0" : 0.38727376070792346, + "50.0" : 0.3917069853897376, + "90.0" : 0.40439078357394154, + "95.0" : 0.40439078357394154, + "99.0" : 0.40439078357394154, + "99.9" : 0.40439078357394154, + "99.99" : 0.40439078357394154, + "99.999" : 0.40439078357394154, + "99.9999" : 0.40439078357394154, + "100.0" : 0.40439078357394154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4022832136047307, + 0.3917069853897376, + 0.391772772162808 + ], + [ + 0.40439078357394154, + 0.3918120368295263, + 0.3913865062815545 + ], + [ + 0.3874848421032238, + 0.3881967188385544, + 0.38727376070792346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15957013230052164, + "scoreError" : 0.0036448537800050245, + "scoreConfidence" : [ + 0.1559252785205166, + 0.16321498608052668 + ], + "scorePercentiles" : { + "0.0" : 0.15716058272827282, + "50.0" : 0.15893123397221956, + "90.0" : 0.1625172265938602, + "95.0" : 0.1625172265938602, + "99.0" : 0.1625172265938602, + "99.9" : 0.1625172265938602, + "99.99" : 0.1625172265938602, + "99.999" : 0.1625172265938602, + "99.9999" : 0.1625172265938602, + "100.0" : 0.1625172265938602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1621620600149186, + 0.1622808943089431, + 0.1625172265938602 + ], + [ + 0.15796503121297803, + 0.15716058272827282, + 0.1572905430022964 + ], + [ + 0.15878767101732325, + 0.15893123397221956, + 0.15903594785388273 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04746720505196515, + "scoreError" : 0.0013620488038863217, + "scoreConfidence" : [ + 0.04610515624807883, + 0.048829253855851476 + ], + "scorePercentiles" : { + "0.0" : 0.046411901236859815, + "50.0" : 0.0476629237834231, + "90.0" : 0.04846337497576862, + "95.0" : 0.04846337497576862, + "99.0" : 0.04846337497576862, + "99.9" : 0.04846337497576862, + "99.99" : 0.04846337497576862, + "99.999" : 0.04846337497576862, + "99.9999" : 0.04846337497576862, + "100.0" : 0.04846337497576862 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04655497455808345, + 0.04644502037982268, + 0.046411901236859815 + ], + [ + 0.04846337497576862, + 0.048294155514130625, + 0.0481767965187983 + ], + [ + 0.0476629237834231, + 0.04767803558164039, + 0.04751766291915933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9139488.588184066, + "scoreError" : 163154.86468702252, + "scoreConfidence" : [ + 8976333.723497044, + 9302643.452871088 + ], + "scorePercentiles" : { + "0.0" : 9010035.514414415, + "50.0" : 9117277.23609845, + "90.0" : 9248973.311460258, + "95.0" : 9248973.311460258, + "99.0" : 9248973.311460258, + "99.9" : 9248973.311460258, + "99.99" : 9248973.311460258, + "99.999" : 9248973.311460258, + "99.9999" : 9248973.311460258, + "100.0" : 9248973.311460258 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9185662.463728191, + 9117277.23609845, + 9105157.005459508 + ], + [ + 9248237.228280962, + 9248973.311460258, + 9246554.19685767 + ], + [ + 9012298.154054053, + 9010035.514414415, + 9081202.183303086 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-15T03:15:10Z-0998a7426f9c9cec13ba0b3bf34ef9f68cc0dc1d-jdk17.json b/performance-results/2025-04-15T03:15:10Z-0998a7426f9c9cec13ba0b3bf34ef9f68cc0dc1d-jdk17.json new file mode 100644 index 0000000000..0173858c94 --- /dev/null +++ b/performance-results/2025-04-15T03:15:10Z-0998a7426f9c9cec13ba0b3bf34ef9f68cc0dc1d-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4053504948650732, + "scoreError" : 0.03362550385434585, + "scoreConfidence" : [ + 3.371724991010727, + 3.4389759987194193 + ], + "scorePercentiles" : { + "0.0" : 3.399759955868604, + "50.0" : 3.4047976427764493, + "90.0" : 3.412046738038791, + "95.0" : 3.412046738038791, + "99.0" : 3.412046738038791, + "99.9" : 3.412046738038791, + "99.99" : 3.412046738038791, + "99.999" : 3.412046738038791, + "99.9999" : 3.412046738038791, + "100.0" : 3.412046738038791 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.399759955868604, + 3.4063020974562876 + ], + [ + 3.4032931880966104, + 3.412046738038791 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7231837792845122, + "scoreError" : 0.010525895662980704, + "scoreConfidence" : [ + 1.7126578836215314, + 1.733709674947493 + ], + "scorePercentiles" : { + "0.0" : 1.7209325393948356, + "50.0" : 1.7236281340979593, + "90.0" : 1.724546309547295, + "95.0" : 1.724546309547295, + "99.0" : 1.724546309547295, + "99.9" : 1.724546309547295, + "99.99" : 1.724546309547295, + "99.999" : 1.724546309547295, + "99.9999" : 1.724546309547295, + "100.0" : 1.724546309547295 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7230622653485166, + 1.724194002847402 + ], + [ + 1.7209325393948356, + 1.724546309547295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8661331683179052, + "scoreError" : 0.006736745156992537, + "scoreConfidence" : [ + 0.8593964231609127, + 0.8728699134748977 + ], + "scorePercentiles" : { + "0.0" : 0.8646050242289606, + "50.0" : 0.866487628437641, + "90.0" : 0.866952392167378, + "95.0" : 0.866952392167378, + "99.0" : 0.866952392167378, + "99.9" : 0.866952392167378, + "99.99" : 0.866952392167378, + "99.999" : 0.866952392167378, + "99.9999" : 0.866952392167378, + "100.0" : 0.866952392167378 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8665257081787283, + 0.866952392167378 + ], + [ + 0.8646050242289606, + 0.8664495486965537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.000425442949847, + "scoreError" : 0.1606955175520907, + "scoreConfidence" : [ + 15.839729925397757, + 16.16112096050194 + ], + "scorePercentiles" : { + "0.0" : 15.862888964884078, + "50.0" : 16.016988213771644, + "90.0" : 16.103494649846574, + "95.0" : 16.103494649846574, + "99.0" : 16.103494649846574, + "99.9" : 16.103494649846574, + "99.99" : 16.103494649846574, + "99.999" : 16.103494649846574, + "99.9999" : 16.103494649846574, + "100.0" : 16.103494649846574 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.89983455226215, + 15.878548221800122, + 15.862888964884078 + ], + [ + 16.090410903882017, + 16.07689640057629, + 16.103494649846574 + ], + [ + 16.008286840055753, + 16.016988213771644, + 16.06648023946999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2715.448363664927, + "scoreError" : 58.13912184667665, + "scoreConfidence" : [ + 2657.3092418182505, + 2773.5874855116035 + ], + "scorePercentiles" : { + "0.0" : 2663.215285444246, + "50.0" : 2730.1985367954894, + "90.0" : 2747.8567809066762, + "95.0" : 2747.8567809066762, + "99.0" : 2747.8567809066762, + "99.9" : 2747.8567809066762, + "99.99" : 2747.8567809066762, + "99.999" : 2747.8567809066762, + "99.9999" : 2747.8567809066762, + "100.0" : 2747.8567809066762 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2673.420934497315, + 2663.215285444246, + 2674.3610863564936 + ], + [ + 2730.1985367954894, + 2726.864069163898, + 2737.0429961605337 + ], + [ + 2747.8567809066762, + 2744.8193179142713, + 2741.2562657454177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70357.13923852931, + "scoreError" : 1424.0117748678715, + "scoreConfidence" : [ + 68933.12746366144, + 71781.15101339719 + ], + "scorePercentiles" : { + "0.0" : 69207.47295685667, + "50.0" : 70756.40974285261, + "90.0" : 71083.01684327383, + "95.0" : 71083.01684327383, + "99.0" : 71083.01684327383, + "99.9" : 71083.01684327383, + "99.99" : 71083.01684327383, + "99.999" : 71083.01684327383, + "99.9999" : 71083.01684327383, + "100.0" : 71083.01684327383 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70756.40974285261, + 70748.81137733445, + 70853.85957089269 + ], + [ + 69207.47295685667, + 69293.17071621685, + 69215.19593187529 + ], + [ + 71028.95145263147, + 71083.01684327383, + 71027.3645548299 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.21104617030466, + "scoreError" : 8.428059144495359, + "scoreConfidence" : [ + 333.7829870258093, + 350.6391053148 + ], + "scorePercentiles" : { + "0.0" : 335.4191928205808, + "50.0" : 345.11865121992435, + "90.0" : 347.16506536965244, + "95.0" : 347.16506536965244, + "99.0" : 347.16506536965244, + "99.9" : 347.16506536965244, + "99.99" : 347.16506536965244, + "99.999" : 347.16506536965244, + "99.9999" : 347.16506536965244, + "100.0" : 347.16506536965244 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 336.1982604556769, + 335.4191928205808, + 336.1217481680525 + ], + [ + 341.3333124819405, + 345.11865121992435, + 345.4419260651438 + ], + [ + 347.16506536965244, + 346.5842998005359, + 346.5169591512344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.44734254349012, + "scoreError" : 2.6242468505211503, + "scoreConfidence" : [ + 101.82309569296898, + 107.07158939401127 + ], + "scorePercentiles" : { + "0.0" : 102.1044044858287, + "50.0" : 105.03337843091175, + "90.0" : 106.10387354054552, + "95.0" : 106.10387354054552, + "99.0" : 106.10387354054552, + "99.9" : 106.10387354054552, + "99.99" : 106.10387354054552, + "99.999" : 106.10387354054552, + "99.9999" : 106.10387354054552, + "100.0" : 106.10387354054552 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.10387354054552, + 105.70112914041317, + 105.37654250722802 + ], + [ + 105.64596540597816, + 104.78687403988239, + 105.03337843091175 + ], + [ + 103.07893372739045, + 102.1044044858287, + 102.1949816132329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06260033692358571, + "scoreError" : 0.001199990439541251, + "scoreConfidence" : [ + 0.061400346484044466, + 0.06380032736312696 + ], + "scorePercentiles" : { + "0.0" : 0.061499798960671564, + "50.0" : 0.06293313147809013, + "90.0" : 0.0632234464254103, + "95.0" : 0.0632234464254103, + "99.0" : 0.0632234464254103, + "99.9" : 0.0632234464254103, + "99.99" : 0.0632234464254103, + "99.999" : 0.0632234464254103, + "99.9999" : 0.0632234464254103, + "100.0" : 0.0632234464254103 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061499798960671564, + 0.061681539123891294, + 0.06183675060290135 + ], + [ + 0.06293313147809013, + 0.06299717423459746, + 0.06281552363394242 + ], + [ + 0.0632234464254103, + 0.06320046040864823, + 0.06321520744411854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7852257586131036E-4, + "scoreError" : 1.4834148493775336E-5, + "scoreConfidence" : [ + 3.63688427367535E-4, + 3.933567243550857E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6771197707239934E-4, + "50.0" : 3.7732587668654375E-4, + "90.0" : 3.897809143551212E-4, + "95.0" : 3.897809143551212E-4, + "99.0" : 3.897809143551212E-4, + "99.9" : 3.897809143551212E-4, + "99.99" : 3.897809143551212E-4, + "99.999" : 3.897809143551212E-4, + "99.9999" : 3.897809143551212E-4, + "100.0" : 3.897809143551212E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.897809143551212E-4, + 3.8751391563726406E-4, + 3.89457679709334E-4 + ], + [ + 3.6952472891886703E-4, + 3.6878001094895423E-4, + 3.6771197707239934E-4 + ], + [ + 3.79294171075628E-4, + 3.7732587668654375E-4, + 3.7731390834768147E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11142793515454283, + "scoreError" : 7.799755480253577E-4, + "scoreConfidence" : [ + 0.11064795960651747, + 0.11220791070256819 + ], + "scorePercentiles" : { + "0.0" : 0.11090168945669894, + "50.0" : 0.11135513500512227, + "90.0" : 0.11204627959350595, + "95.0" : 0.11204627959350595, + "99.0" : 0.11204627959350595, + "99.9" : 0.11204627959350595, + "99.99" : 0.11204627959350595, + "99.999" : 0.11204627959350595, + "99.9999" : 0.11204627959350595, + "100.0" : 0.11204627959350595 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11193024702550844, + 0.11196701819423606, + 0.11204627959350595 + ], + [ + 0.11147397626771004, + 0.11135513500512227, + 0.11132430569192577 + ], + [ + 0.11090168945669894, + 0.1109283749750416, + 0.1109243901811365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014139801651952952, + "scoreError" : 1.789652847785874E-4, + "scoreConfidence" : [ + 0.013960836367174365, + 0.01431876693673154 + ], + "scorePercentiles" : { + "0.0" : 0.014056779686509448, + "50.0" : 0.014077511421657439, + "90.0" : 0.01431037733721426, + "95.0" : 0.01431037733721426, + "99.0" : 0.01431037733721426, + "99.9" : 0.01431037733721426, + "99.99" : 0.01431037733721426, + "99.999" : 0.01431037733721426, + "99.9999" : 0.01431037733721426, + "100.0" : 0.01431037733721426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014262368709299242, + 0.014268121113585809, + 0.01431037733721426 + ], + [ + 0.014056779686509448, + 0.014068228026391683, + 0.01408131384598054 + ], + [ + 0.014077511421657439, + 0.014075841191307996, + 0.014057673535630142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9924332881246145, + "scoreError" : 0.011113059842805861, + "scoreConfidence" : [ + 0.9813202282818086, + 1.0035463479674203 + ], + "scorePercentiles" : { + "0.0" : 0.9829682683310399, + "50.0" : 0.994471576372315, + "90.0" : 0.9996053167416292, + "95.0" : 0.9996053167416292, + "99.0" : 0.9996053167416292, + "99.9" : 0.9996053167416292, + "99.99" : 0.9996053167416292, + "99.999" : 0.9996053167416292, + "99.9999" : 0.9996053167416292, + "100.0" : 0.9996053167416292 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9829682683310399, + 0.9855688172053607, + 0.9835769158143194 + ], + [ + 0.9939944320644071, + 0.9950123619540344, + 0.994471576372315 + ], + [ + 0.9996053167416292, + 0.9982675707726093, + 0.9984343338658147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012895585300642694, + "scoreError" : 3.062953972559641E-4, + "scoreConfidence" : [ + 0.01258928990338673, + 0.013201880697898658 + ], + "scorePercentiles" : { + "0.0" : 0.012693811217003213, + "50.0" : 0.012905369991386278, + "90.0" : 0.012996414480284876, + "95.0" : 0.012996414480284876, + "99.0" : 0.012996414480284876, + "99.9" : 0.012996414480284876, + "99.99" : 0.012996414480284876, + "99.999" : 0.012996414480284876, + "99.9999" : 0.012996414480284876, + "100.0" : 0.012996414480284876 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012693811217003213, + 0.01288566156665069, + 0.012913996681181655 + ], + [ + 0.012896743301590904, + 0.012996414480284876, + 0.012986884557144824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.811457185997916, + "scoreError" : 0.16061216680757984, + "scoreConfidence" : [ + 3.6508450191903363, + 3.972069352805496 + ], + "scorePercentiles" : { + "0.0" : 3.740837990276739, + "50.0" : 3.814371268649891, + "90.0" : 3.8742911928737414, + "95.0" : 3.8742911928737414, + "99.0" : 3.8742911928737414, + "99.9" : 3.8742911928737414, + "99.99" : 3.8742911928737414, + "99.999" : 3.8742911928737414, + "99.9999" : 3.8742911928737414, + "100.0" : 3.8742911928737414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.851576015396459, + 3.8742911928737414, + 3.8608099899691357 + ], + [ + 3.740837990276739, + 3.7771665219033235, + 3.7640614055680963 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9364844452314522, + "scoreError" : 0.12591397806458157, + "scoreConfidence" : [ + 2.8105704671668708, + 3.0623984232960337 + ], + "scorePercentiles" : { + "0.0" : 2.841760882386364, + "50.0" : 2.9522826517119243, + "90.0" : 3.029664845501363, + "95.0" : 3.029664845501363, + "99.0" : 3.029664845501363, + "99.9" : 3.029664845501363, + "99.99" : 3.029664845501363, + "99.999" : 3.029664845501363, + "99.9999" : 3.029664845501363, + "100.0" : 3.029664845501363 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9522826517119243, + 2.965428013637711, + 2.9503159005899704 + ], + [ + 2.8447495719567693, + 2.841760882386364, + 2.844535181740614 + ], + [ + 2.976455938095238, + 3.029664845501363, + 3.0231670214631197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17560572190048726, + "scoreError" : 0.006584111512174446, + "scoreConfidence" : [ + 0.16902161038831282, + 0.1821898334126617 + ], + "scorePercentiles" : { + "0.0" : 0.17063822254073885, + "50.0" : 0.17619656395799563, + "90.0" : 0.17981623607789546, + "95.0" : 0.17981623607789546, + "99.0" : 0.17981623607789546, + "99.9" : 0.17981623607789546, + "99.99" : 0.17981623607789546, + "99.999" : 0.17981623607789546, + "99.9999" : 0.17981623607789546, + "100.0" : 0.17981623607789546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17087530959948055, + 0.1708109856523076, + 0.17063822254073885 + ], + [ + 0.17975555852746622, + 0.17964059028526264, + 0.17981623607789546 + ], + [ + 0.1765262410414828, + 0.17619656395799563, + 0.17619178942175553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32619100712800586, + "scoreError" : 0.013703182184899522, + "scoreConfidence" : [ + 0.31248782494310634, + 0.3398941893129054 + ], + "scorePercentiles" : { + "0.0" : 0.3175438340583622, + "50.0" : 0.32435507112970713, + "90.0" : 0.33869735758314706, + "95.0" : 0.33869735758314706, + "99.0" : 0.33869735758314706, + "99.9" : 0.33869735758314706, + "99.99" : 0.33869735758314706, + "99.999" : 0.33869735758314706, + "99.9999" : 0.33869735758314706, + "100.0" : 0.33869735758314706 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31809932212608943, + 0.3177638269517969, + 0.3175438340583622 + ], + [ + 0.33869735758314706, + 0.33501108552477304, + 0.33497628411603136 + ], + [ + 0.3253834047634542, + 0.32435507112970713, + 0.32388887789869153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15769629753949746, + "scoreError" : 0.013313914295695823, + "scoreConfidence" : [ + 0.14438238324380165, + 0.17101021183519327 + ], + "scorePercentiles" : { + "0.0" : 0.15026901161550135, + "50.0" : 0.15454895558371712, + "90.0" : 0.16813969691976596, + "95.0" : 0.16813969691976596, + "99.0" : 0.16813969691976596, + "99.9" : 0.16813969691976596, + "99.99" : 0.16813969691976596, + "99.999" : 0.16813969691976596, + "99.9999" : 0.16813969691976596, + "100.0" : 0.16813969691976596 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16813969691976596, + 0.16803919120834804, + 0.16780301414548202 + ], + [ + 0.15466450425314732, + 0.15454895558371712, + 0.1545218161379545 + ], + [ + 0.15083692974147034, + 0.15044355825009026, + 0.15026901161550135 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39321215070398746, + "scoreError" : 0.005175623085294156, + "scoreConfidence" : [ + 0.3880365276186933, + 0.39838777378928164 + ], + "scorePercentiles" : { + "0.0" : 0.3913463575174141, + "50.0" : 0.3921057463535132, + "90.0" : 0.4012574662547147, + "95.0" : 0.4012574662547147, + "99.0" : 0.4012574662547147, + "99.9" : 0.4012574662547147, + "99.99" : 0.4012574662547147, + "99.999" : 0.4012574662547147, + "99.9999" : 0.4012574662547147, + "100.0" : 0.4012574662547147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3919904412825337, + 0.3916212337092732, + 0.3913463575174141 + ], + [ + 0.4012574662547147, + 0.3921057463535132, + 0.3917179641975792 + ], + [ + 0.39298994820607536, + 0.39296980847217855, + 0.39291039034260566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15726034727597302, + "scoreError" : 0.004050535630587042, + "scoreConfidence" : [ + 0.15320981164538597, + 0.16131088290656007 + ], + "scorePercentiles" : { + "0.0" : 0.15441515587844723, + "50.0" : 0.1568665687372549, + "90.0" : 0.16097080030583502, + "95.0" : 0.16097080030583502, + "99.0" : 0.16097080030583502, + "99.9" : 0.16097080030583502, + "99.99" : 0.16097080030583502, + "99.999" : 0.16097080030583502, + "99.9999" : 0.16097080030583502, + "100.0" : 0.16097080030583502 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15741333787718995, + 0.15675702580179954, + 0.1568665687372549 + ], + [ + 0.16097080030583502, + 0.15976038181963415, + 0.15961192857484877 + ], + [ + 0.1546292745856012, + 0.15491865190314635, + 0.15441515587844723 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046845207742204215, + "scoreError" : 0.0018409756490792033, + "scoreConfidence" : [ + 0.04500423209312501, + 0.048686183391283416 + ], + "scorePercentiles" : { + "0.0" : 0.04567891911311283, + "50.0" : 0.04645947486573377, + "90.0" : 0.048691715820174605, + "95.0" : 0.048691715820174605, + "99.0" : 0.048691715820174605, + "99.9" : 0.048691715820174605, + "99.99" : 0.048691715820174605, + "99.999" : 0.048691715820174605, + "99.9999" : 0.048691715820174605, + "100.0" : 0.048691715820174605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048691715820174605, + 0.04796834660916949, + 0.04787070228196401 + ], + [ + 0.04584362988227528, + 0.045753071867794, + 0.04567891911311283 + ], + [ + 0.04690812245644648, + 0.04645947486573377, + 0.04643288678316743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9371650.330817224, + "scoreError" : 192453.16026786753, + "scoreConfidence" : [ + 9179197.170549357, + 9564103.491085092 + ], + "scorePercentiles" : { + "0.0" : 9251249.041628122, + "50.0" : 9319632.198324023, + "90.0" : 9540715.473784557, + "95.0" : 9540715.473784557, + "99.0" : 9540715.473784557, + "99.9" : 9540715.473784557, + "99.99" : 9540715.473784557, + "99.999" : 9540715.473784557, + "99.9999" : 9540715.473784557, + "100.0" : 9540715.473784557 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9251249.041628122, + 9282600.880333953, + 9321988.44361603 + ], + [ + 9319632.198324023, + 9301838.871747212, + 9303449.284651162 + ], + [ + 9512346.58174905, + 9511032.201520912, + 9540715.473784557 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-15T07:21:56Z-14d74114b364ffcebdef37840cb2f2ce58cb485c-jdk17.json b/performance-results/2025-04-15T07:21:56Z-14d74114b364ffcebdef37840cb2f2ce58cb485c-jdk17.json new file mode 100644 index 0000000000..6e31c81490 --- /dev/null +++ b/performance-results/2025-04-15T07:21:56Z-14d74114b364ffcebdef37840cb2f2ce58cb485c-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.410292803144114, + "scoreError" : 0.01182806701663521, + "scoreConfidence" : [ + 3.3984647361274787, + 3.4221208701607493 + ], + "scorePercentiles" : { + "0.0" : 3.4077670830798916, + "50.0" : 3.410809558111277, + "90.0" : 3.4117850132740113, + "95.0" : 3.4117850132740113, + "99.0" : 3.4117850132740113, + "99.9" : 3.4117850132740113, + "99.99" : 3.4117850132740113, + "99.999" : 3.4117850132740113, + "99.9999" : 3.4117850132740113, + "100.0" : 3.4117850132740113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.41013459916428, + 3.4117850132740113 + ], + [ + 3.4077670830798916, + 3.411484517058274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7222031601810324, + "scoreError" : 0.01347607151342635, + "scoreConfidence" : [ + 1.708727088667606, + 1.7356792316944587 + ], + "scorePercentiles" : { + "0.0" : 1.7199194158206257, + "50.0" : 1.7223592365796612, + "90.0" : 1.7241747517441812, + "95.0" : 1.7241747517441812, + "99.0" : 1.7241747517441812, + "99.9" : 1.7241747517441812, + "99.99" : 1.7241747517441812, + "99.999" : 1.7241747517441812, + "99.9999" : 1.7241747517441812, + "100.0" : 1.7241747517441812 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7199194158206257, + 1.7209635716914682 + ], + [ + 1.7241747517441812, + 1.7237549014678542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8660841476755752, + "scoreError" : 0.005775184550174271, + "scoreConfidence" : [ + 0.860308963125401, + 0.8718593322257494 + ], + "scorePercentiles" : { + "0.0" : 0.8652621597398462, + "50.0" : 0.8659391194902488, + "90.0" : 0.8671961919819569, + "95.0" : 0.8671961919819569, + "99.0" : 0.8671961919819569, + "99.9" : 0.8671961919819569, + "99.99" : 0.8671961919819569, + "99.999" : 0.8671961919819569, + "99.9999" : 0.8671961919819569, + "100.0" : 0.8671961919819569 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.865469112632009, + 0.8671961919819569 + ], + [ + 0.8652621597398462, + 0.8664091263484885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.871294708545065, + "scoreError" : 0.15059860362868493, + "scoreConfidence" : [ + 15.72069610491638, + 16.02189331217375 + ], + "scorePercentiles" : { + "0.0" : 15.720407723693132, + "50.0" : 15.919099829453616, + "90.0" : 15.971684147480252, + "95.0" : 15.971684147480252, + "99.0" : 15.971684147480252, + "99.9" : 15.971684147480252, + "99.99" : 15.971684147480252, + "99.999" : 15.971684147480252, + "99.9999" : 15.971684147480252, + "100.0" : 15.971684147480252 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.925823796685513, + 15.930324239715281, + 15.869413499478672 + ], + [ + 15.759283678616658, + 15.720407723693132, + 15.801710940429453 + ], + [ + 15.919099829453616, + 15.943904521353007, + 15.971684147480252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2608.1472437379434, + "scoreError" : 50.5379813336605, + "scoreConfidence" : [ + 2557.609262404283, + 2658.685225071604 + ], + "scorePercentiles" : { + "0.0" : 2566.014336029912, + "50.0" : 2615.8878491919777, + "90.0" : 2642.858195737688, + "95.0" : 2642.858195737688, + "99.0" : 2642.858195737688, + "99.9" : 2642.858195737688, + "99.99" : 2642.858195737688, + "99.999" : 2642.858195737688, + "99.9999" : 2642.858195737688, + "100.0" : 2642.858195737688 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2621.199372962536, + 2615.8858948444877, + 2615.8878491919777 + ], + [ + 2566.014336029912, + 2576.2600691941225, + 2568.5318925328747 + ], + [ + 2642.858195737688, + 2640.747659848716, + 2625.939923299173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70794.01963855607, + "scoreError" : 528.9974177671851, + "scoreConfidence" : [ + 70265.02222078889, + 71323.01705632325 + ], + "scorePercentiles" : { + "0.0" : 70321.11046608105, + "50.0" : 70948.41406005879, + "90.0" : 71091.15177592258, + "95.0" : 71091.15177592258, + "99.0" : 71091.15177592258, + "99.9" : 71091.15177592258, + "99.99" : 71091.15177592258, + "99.999" : 71091.15177592258, + "99.9999" : 71091.15177592258, + "100.0" : 71091.15177592258 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70321.11046608105, + 70404.26807500672, + 70426.34280576854 + ], + [ + 71009.73090780649, + 71091.15177592258, + 71082.580950961 + ], + [ + 70948.41406005879, + 70896.3874848616, + 70966.19022053799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 343.2410161356936, + "scoreError" : 4.623746215215708, + "scoreConfidence" : [ + 338.6172699204779, + 347.8647623509093 + ], + "scorePercentiles" : { + "0.0" : 339.8211997115519, + "50.0" : 343.66605545073764, + "90.0" : 347.1444375193373, + "95.0" : 347.1444375193373, + "99.0" : 347.1444375193373, + "99.9" : 347.1444375193373, + "99.99" : 347.1444375193373, + "99.999" : 347.1444375193373, + "99.9999" : 347.1444375193373, + "100.0" : 347.1444375193373 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.0689153690961, + 347.07423896993123, + 347.1444375193373 + ], + [ + 339.8211997115519, + 340.85217353178217, + 339.866531813213 + ], + [ + 342.6439616080109, + 344.03163124758225, + 343.66605545073764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.7575472969454, + "scoreError" : 2.8543196982554644, + "scoreConfidence" : [ + 101.90322759868994, + 107.61186699520087 + ], + "scorePercentiles" : { + "0.0" : 103.11215378618374, + "50.0" : 104.21575575565748, + "90.0" : 107.22682267956844, + "95.0" : 107.22682267956844, + "99.0" : 107.22682267956844, + "99.9" : 107.22682267956844, + "99.99" : 107.22682267956844, + "99.999" : 107.22682267956844, + "99.9999" : 107.22682267956844, + "100.0" : 107.22682267956844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.11215378618374, + 103.29999631689557, + 103.2246620997145 + ], + [ + 107.22682267956844, + 106.85476881446539, + 106.76102285304083 + ], + [ + 103.80947788614054, + 104.21575575565748, + 104.31326548084208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06257426671045607, + "scoreError" : 3.8954539348918946E-4, + "scoreConfidence" : [ + 0.06218472131696688, + 0.06296381210394526 + ], + "scorePercentiles" : { + "0.0" : 0.062250462762381414, + "50.0" : 0.06254025957010363, + "90.0" : 0.06294470145777734, + "95.0" : 0.06294470145777734, + "99.0" : 0.06294470145777734, + "99.9" : 0.06294470145777734, + "99.99" : 0.06294470145777734, + "99.999" : 0.06294470145777734, + "99.9999" : 0.06294470145777734, + "100.0" : 0.06294470145777734 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06267829445684057, + 0.06287059840688046, + 0.06294470145777734 + ], + [ + 0.06242959036851601, + 0.06254025957010363, + 0.06264179693059384 + ], + [ + 0.06235090103189201, + 0.0624617954091193, + 0.062250462762381414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.747283104606411E-4, + "scoreError" : 8.538668176370108E-6, + "scoreConfidence" : [ + 3.6618964228427096E-4, + 3.832669786370112E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6897100525467864E-4, + "50.0" : 3.7324096239890053E-4, + "90.0" : 3.816977656735156E-4, + "95.0" : 3.816977656735156E-4, + "99.0" : 3.816977656735156E-4, + "99.9" : 3.816977656735156E-4, + "99.99" : 3.816977656735156E-4, + "99.999" : 3.816977656735156E-4, + "99.9999" : 3.816977656735156E-4, + "100.0" : 3.816977656735156E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6897100525467864E-4, + 3.705701313630293E-4, + 3.7022087381974523E-4 + ], + [ + 3.807030475403627E-4, + 3.816977656735156E-4, + 3.8124218696954397E-4 + ], + [ + 3.73497417444771E-4, + 3.7324096239890053E-4, + 3.724114036812226E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11044553323371656, + "scoreError" : 0.0035570951835899693, + "scoreConfidence" : [ + 0.10688843805012659, + 0.11400262841730653 + ], + "scorePercentiles" : { + "0.0" : 0.10885254383959769, + "50.0" : 0.10913497449553099, + "90.0" : 0.11351311864195149, + "95.0" : 0.11351311864195149, + "99.0" : 0.11351311864195149, + "99.9" : 0.11351311864195149, + "99.99" : 0.11351311864195149, + "99.999" : 0.11351311864195149, + "99.9999" : 0.11351311864195149, + "100.0" : 0.11351311864195149 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11286081799200957, + 0.11351311864195149, + 0.11339104114885704 + ], + [ + 0.10908786974070317, + 0.10913497449553099, + 0.10921466787165261 + ], + [ + 0.10894872224038, + 0.10885254383959769, + 0.10900604313276652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014236036951059041, + "scoreError" : 4.298809354819538E-4, + "scoreConfidence" : [ + 0.013806156015577086, + 0.014665917886540996 + ], + "scorePercentiles" : { + "0.0" : 0.013972213143202052, + "50.0" : 0.014160779609054838, + "90.0" : 0.014568680119694703, + "95.0" : 0.014568680119694703, + "99.0" : 0.014568680119694703, + "99.9" : 0.014568680119694703, + "99.99" : 0.014568680119694703, + "99.999" : 0.014568680119694703, + "99.9999" : 0.014568680119694703, + "100.0" : 0.014568680119694703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014558670123339603, + 0.014568680119694703, + 0.014554224121846324 + ], + [ + 0.013998457149136376, + 0.013980279631540244, + 0.013972213143202052 + ], + [ + 0.014160779609054838, + 0.014150098439547315, + 0.01418093022216991 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9854941574416668, + "scoreError" : 0.010708625724236557, + "scoreConfidence" : [ + 0.9747855317174302, + 0.9962027831659034 + ], + "scorePercentiles" : { + "0.0" : 0.9781389203834115, + "50.0" : 0.9832220200570249, + "90.0" : 0.9944033431440787, + "95.0" : 0.9944033431440787, + "99.0" : 0.9944033431440787, + "99.9" : 0.9944033431440787, + "99.99" : 0.9944033431440787, + "99.999" : 0.9944033431440787, + "99.9999" : 0.9944033431440787, + "100.0" : 0.9944033431440787 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9781389203834115, + 0.9832220200570249, + 0.9856847189040016 + ], + [ + 0.9795573236360074, + 0.9806987001078749, + 0.9816890071659958 + ], + [ + 0.9944033431440787, + 0.9929992610465693, + 0.9930541225300368 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013174758590103293, + "scoreError" : 4.240949771235966E-4, + "scoreConfidence" : [ + 0.012750663612979695, + 0.01359885356722689 + ], + "scorePercentiles" : { + "0.0" : 0.012950466615558341, + "50.0" : 0.013190393459009467, + "90.0" : 0.013315938673604989, + "95.0" : 0.013315938673604989, + "99.0" : 0.013315938673604989, + "99.9" : 0.013315938673604989, + "99.99" : 0.013315938673604989, + "99.999" : 0.013315938673604989, + "99.9999" : 0.013315938673604989, + "100.0" : 0.013315938673604989 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013315938673604989, + 0.013310052118243649, + 0.013286221689013599 + ], + [ + 0.012950466615558341, + 0.013094565229005335, + 0.01309130721519385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9291784224187665, + "scoreError" : 0.18834085042439327, + "scoreConfidence" : [ + 3.740837571994373, + 4.117519272843159 + ], + "scorePercentiles" : { + "0.0" : 3.8460302290545734, + "50.0" : 3.940609385460778, + "90.0" : 3.9935603535514765, + "95.0" : 3.9935603535514765, + "99.0" : 3.9935603535514765, + "99.9" : 3.9935603535514765, + "99.99" : 3.9935603535514765, + "99.999" : 3.9935603535514765, + "99.9999" : 3.9935603535514765, + "100.0" : 3.9935603535514765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8460302290545734, + 3.8641268261205566, + 3.900064360093531 + ], + [ + 3.9811544108280255, + 3.9901343548644337, + 3.9935603535514765 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9267776734148163, + "scoreError" : 0.017990781784617955, + "scoreConfidence" : [ + 2.908786891630198, + 2.9447684551994344 + ], + "scorePercentiles" : { + "0.0" : 2.9109470908032598, + "50.0" : 2.927967918911007, + "90.0" : 2.9405286777418405, + "95.0" : 2.9405286777418405, + "99.0" : 2.9405286777418405, + "99.9" : 2.9405286777418405, + "99.99" : 2.9405286777418405, + "99.999" : 2.9405286777418405, + "99.9999" : 2.9405286777418405, + "100.0" : 2.9405286777418405 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.927967918911007, + 2.918395442077619, + 2.9109470908032598 + ], + [ + 2.929937630931459, + 2.92262867270602, + 2.9152304590498397 + ], + [ + 2.9395852242798353, + 2.9405286777418405, + 2.9357779442324627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1760237677009665, + "scoreError" : 0.0030617428581940936, + "scoreConfidence" : [ + 0.1729620248427724, + 0.1790855105591606 + ], + "scorePercentiles" : { + "0.0" : 0.17315710711317356, + "50.0" : 0.17711498407778684, + "90.0" : 0.177475656113014, + "95.0" : 0.177475656113014, + "99.0" : 0.177475656113014, + "99.9" : 0.177475656113014, + "99.99" : 0.177475656113014, + "99.999" : 0.177475656113014, + "99.9999" : 0.177475656113014, + "100.0" : 0.177475656113014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17722715315634638, + 0.17711498407778684, + 0.17687001798726565 + ], + [ + 0.17727816236482893, + 0.1773046742491401, + 0.177475656113014 + ], + [ + 0.17443281527995813, + 0.173353338967185, + 0.17315710711317356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33084230324855846, + "scoreError" : 0.016368594437593413, + "scoreConfidence" : [ + 0.31447370881096504, + 0.3472108976861519 + ], + "scorePercentiles" : { + "0.0" : 0.3222616254511472, + "50.0" : 0.32729555554100936, + "90.0" : 0.3511456440886267, + "95.0" : 0.3511456440886267, + "99.0" : 0.3511456440886267, + "99.9" : 0.3511456440886267, + "99.99" : 0.3511456440886267, + "99.999" : 0.3511456440886267, + "99.9999" : 0.3511456440886267, + "100.0" : 0.3511456440886267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32729555554100936, + 0.32686044673966336, + 0.3286277139336181 + ], + [ + 0.32302589227340267, + 0.3223118456505624, + 0.3222616254511472 + ], + [ + 0.33920483026931686, + 0.3511456440886267, + 0.33684717528967933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1577641674397424, + "scoreError" : 0.0036615746579684327, + "scoreConfidence" : [ + 0.15410259278177396, + 0.16142574209771082 + ], + "scorePercentiles" : { + "0.0" : 0.15590696673006765, + "50.0" : 0.15664480703320802, + "90.0" : 0.16070379563861928, + "95.0" : 0.16070379563861928, + "99.0" : 0.16070379563861928, + "99.9" : 0.16070379563861928, + "99.99" : 0.16070379563861928, + "99.999" : 0.16070379563861928, + "99.9999" : 0.16070379563861928, + "100.0" : 0.16070379563861928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15590696673006765, + 0.15667597183010326, + 0.15664480703320802 + ], + [ + 0.16066627109875808, + 0.16070379563861928, + 0.160586099722191 + ], + [ + 0.15622478293132538, + 0.15613670856232825, + 0.15633210341108053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.392909867879589, + "scoreError" : 0.011401638649886373, + "scoreConfidence" : [ + 0.3815082292297026, + 0.40431150652947534 + ], + "scorePercentiles" : { + "0.0" : 0.38323660404690735, + "50.0" : 0.3918369251626048, + "90.0" : 0.40141045145104964, + "95.0" : 0.40141045145104964, + "99.0" : 0.40141045145104964, + "99.9" : 0.40141045145104964, + "99.99" : 0.40141045145104964, + "99.999" : 0.40141045145104964, + "99.9999" : 0.40141045145104964, + "100.0" : 0.40141045145104964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3937036515097831, + 0.39128612301432036, + 0.3918369251626048 + ], + [ + 0.40141045145104964, + 0.4008483047538881, + 0.40047799875855994 + ], + [ + 0.38718047636377717, + 0.3862082758554105, + 0.38323660404690735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15825107332007277, + "scoreError" : 0.005378564708602068, + "scoreConfidence" : [ + 0.1528725086114707, + 0.16362963802867483 + ], + "scorePercentiles" : { + "0.0" : 0.15381523411520417, + "50.0" : 0.15953894543888197, + "90.0" : 0.1622689236710586, + "95.0" : 0.1622689236710586, + "99.0" : 0.1622689236710586, + "99.9" : 0.1622689236710586, + "99.99" : 0.1622689236710586, + "99.999" : 0.1622689236710586, + "99.9999" : 0.1622689236710586, + "100.0" : 0.1622689236710586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1543801934019791, + 0.15381523411520417, + 0.15423138014158144 + ], + [ + 0.15971047701030106, + 0.15953894543888197, + 0.15933283052116692 + ], + [ + 0.1622689236710586, + 0.1605263527834853, + 0.16045532279699634 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046909693803489375, + "scoreError" : 3.033970327389251E-4, + "scoreConfidence" : [ + 0.04660629677075045, + 0.0472130908362283 + ], + "scorePercentiles" : { + "0.0" : 0.04675042174797223, + "50.0" : 0.04683818963110761, + "90.0" : 0.047358650811240875, + "95.0" : 0.047358650811240875, + "99.0" : 0.047358650811240875, + "99.9" : 0.047358650811240875, + "99.99" : 0.047358650811240875, + "99.999" : 0.047358650811240875, + "99.9999" : 0.047358650811240875, + "100.0" : 0.047358650811240875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04680276841893422, + 0.04683818963110761, + 0.04675042174797223 + ], + [ + 0.046892010109772626, + 0.04682796918300546, + 0.046823597974444096 + ], + [ + 0.047358650811240875, + 0.04695519927032662, + 0.04693843708460065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9633664.701751849, + "scoreError" : 175694.1089404981, + "scoreConfidence" : [ + 9457970.59281135, + 9809358.810692348 + ], + "scorePercentiles" : { + "0.0" : 9509088.715779468, + "50.0" : 9595729.272291467, + "90.0" : 9791252.443248533, + "95.0" : 9791252.443248533, + "99.0" : 9791252.443248533, + "99.9" : 9791252.443248533, + "99.99" : 9791252.443248533, + "99.999" : 9791252.443248533, + "99.9999" : 9791252.443248533, + "100.0" : 9791252.443248533 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9791252.443248533, + 9749772.801169591, + 9750620.584795322 + ], + [ + 9635159.6088632, + 9571225.518660286, + 9567675.37667304 + ], + [ + 9595729.272291467, + 9532457.994285714, + 9509088.715779468 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-19T05:34:20Z-083fac7eaad2329f371f803324ff855b0de33531-jdk17.json b/performance-results/2025-04-19T05:34:20Z-083fac7eaad2329f371f803324ff855b0de33531-jdk17.json new file mode 100644 index 0000000000..f09dfa0541 --- /dev/null +++ b/performance-results/2025-04-19T05:34:20Z-083fac7eaad2329f371f803324ff855b0de33531-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.42627374205401, + "scoreError" : 0.016011546361178, + "scoreConfidence" : [ + 3.410262195692832, + 3.4422852884151878 + ], + "scorePercentiles" : { + "0.0" : 3.423400368844257, + "50.0" : 3.4261432518671446, + "90.0" : 3.4294080956374926, + "95.0" : 3.4294080956374926, + "99.0" : 3.4294080956374926, + "99.9" : 3.4294080956374926, + "99.99" : 3.4294080956374926, + "99.999" : 3.4294080956374926, + "99.9999" : 3.4294080956374926, + "100.0" : 3.4294080956374926 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423400368844257, + 3.4257533516251386 + ], + [ + 3.426533152109151, + 3.4294080956374926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.73103735947286, + "scoreError" : 0.006679532663678652, + "scoreConfidence" : [ + 1.7243578268091815, + 1.7377168921365387 + ], + "scorePercentiles" : { + "0.0" : 1.7301200757427653, + "50.0" : 1.7307736838477226, + "90.0" : 1.7324819944532301, + "95.0" : 1.7324819944532301, + "99.0" : 1.7324819944532301, + "99.9" : 1.7324819944532301, + "99.99" : 1.7324819944532301, + "99.999" : 1.7324819944532301, + "99.9999" : 1.7324819944532301, + "100.0" : 1.7324819944532301 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.731036325346641, + 1.7324819944532301 + ], + [ + 1.7305110423488042, + 1.7301200757427653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8699607741534178, + "scoreError" : 0.002506721689289652, + "scoreConfidence" : [ + 0.8674540524641281, + 0.8724674958427074 + ], + "scorePercentiles" : { + "0.0" : 0.8694631713130918, + "50.0" : 0.8700053139358462, + "90.0" : 0.870369297428887, + "95.0" : 0.870369297428887, + "99.0" : 0.870369297428887, + "99.9" : 0.870369297428887, + "99.99" : 0.870369297428887, + "99.999" : 0.870369297428887, + "99.9999" : 0.870369297428887, + "100.0" : 0.870369297428887 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8694631713130918, + 0.870369297428887 + ], + [ + 0.869876913031519, + 0.8701337148401734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.41419899981236, + "scoreError" : 0.13936351326473603, + "scoreConfidence" : [ + 16.274835486547623, + 16.553562513077097 + ], + "scorePercentiles" : { + "0.0" : 16.339535155742567, + "50.0" : 16.386084511518415, + "90.0" : 16.550785814625694, + "95.0" : 16.550785814625694, + "99.0" : 16.550785814625694, + "99.9" : 16.550785814625694, + "99.99" : 16.550785814625694, + "99.999" : 16.550785814625694, + "99.9999" : 16.550785814625694, + "100.0" : 16.550785814625694 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.339535155742567, + 16.346768148883314, + 16.348522139523087 + ], + [ + 16.46806272650543, + 16.550785814625694, + 16.531728368824346 + ], + [ + 16.34791640635959, + 16.386084511518415, + 16.408387726328822 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2748.8348912858187, + "scoreError" : 79.68130762190818, + "scoreConfidence" : [ + 2669.1535836639105, + 2828.516198907727 + ], + "scorePercentiles" : { + "0.0" : 2684.2126429590894, + "50.0" : 2777.8148801532543, + "90.0" : 2787.501307160279, + "95.0" : 2787.501307160279, + "99.0" : 2787.501307160279, + "99.9" : 2787.501307160279, + "99.99" : 2787.501307160279, + "99.999" : 2787.501307160279, + "99.9999" : 2787.501307160279, + "100.0" : 2787.501307160279 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2687.4400408233214, + 2684.2126429590894, + 2686.373523970276 + ], + [ + 2787.501307160279, + 2784.6973486013626, + 2782.533622952103 + ], + [ + 2780.3541481711923, + 2768.586506781491, + 2777.8148801532543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69631.43025261146, + "scoreError" : 1086.394300549713, + "scoreConfidence" : [ + 68545.03595206175, + 70717.82455316118 + ], + "scorePercentiles" : { + "0.0" : 68718.54748457175, + "50.0" : 70044.63602743245, + "90.0" : 70094.41242619143, + "95.0" : 70094.41242619143, + "99.0" : 70094.41242619143, + "99.9" : 70094.41242619143, + "99.99" : 70094.41242619143, + "99.999" : 70094.41242619143, + "99.9999" : 70094.41242619143, + "100.0" : 70094.41242619143 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70064.2047292378, + 70070.01908365132, + 70094.41242619143 + ], + [ + 70056.86541256234, + 70042.16307319765, + 70044.63602743245 + ], + [ + 68793.7050076566, + 68718.54748457175, + 68798.31902900171 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 358.5636025029099, + "scoreError" : 10.522905124506686, + "scoreConfidence" : [ + 348.0406973784032, + 369.08650762741655 + ], + "scorePercentiles" : { + "0.0" : 350.14734939351376, + "50.0" : 361.657800429712, + "90.0" : 363.842414915681, + "95.0" : 363.842414915681, + "99.0" : 363.842414915681, + "99.9" : 363.842414915681, + "99.99" : 363.842414915681, + "99.999" : 363.842414915681, + "99.9999" : 363.842414915681, + "100.0" : 363.842414915681 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 361.657800429712, + 361.63169630707563, + 361.86051323800467 + ], + [ + 363.842414915681, + 363.68413704352093, + 363.5156717071805 + ], + [ + 350.14734939351376, + 350.2774591551149, + 350.4553803363854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.73883077999297, + "scoreError" : 2.1541084370248815, + "scoreConfidence" : [ + 103.58472234296808, + 107.89293921701785 + ], + "scorePercentiles" : { + "0.0" : 104.07559453327093, + "50.0" : 105.97683572101799, + "90.0" : 107.32568624594654, + "95.0" : 107.32568624594654, + "99.0" : 107.32568624594654, + "99.9" : 107.32568624594654, + "99.99" : 107.32568624594654, + "99.999" : 107.32568624594654, + "99.9999" : 107.32568624594654, + "100.0" : 107.32568624594654 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.3730500643636, + 104.07559453327093, + 104.08066267674415 + ], + [ + 105.97683572101799, + 105.9739707157024, + 105.98239379141204 + ], + [ + 106.58843842669576, + 107.27284484478315, + 107.32568624594654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061187186123597574, + "scoreError" : 3.6458663901066564E-4, + "scoreConfidence" : [ + 0.06082259948458691, + 0.06155177276260824 + ], + "scorePercentiles" : { + "0.0" : 0.06090785262356488, + "50.0" : 0.0611900615928727, + "90.0" : 0.06145593445181908, + "95.0" : 0.06145593445181908, + "99.0" : 0.06145593445181908, + "99.9" : 0.06145593445181908, + "99.99" : 0.06145593445181908, + "99.999" : 0.06145593445181908, + "99.9999" : 0.06145593445181908, + "100.0" : 0.06145593445181908 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060925311896087436, + 0.06090785262356488, + 0.0609775741873327 + ], + [ + 0.06140714787841572, + 0.06145593445181908, + 0.06144207211364181 + ], + [ + 0.061204125846135014, + 0.0611900615928727, + 0.061174594522508854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.680535259873933E-4, + "scoreError" : 1.2617565179847096E-5, + "scoreConfidence" : [ + 3.5543596080754624E-4, + 3.806710911672404E-4 + ], + "scorePercentiles" : { + "0.0" : 3.608635754554795E-4, + "50.0" : 3.650681987878625E-4, + "90.0" : 3.7884101071388387E-4, + "95.0" : 3.7884101071388387E-4, + "99.0" : 3.7884101071388387E-4, + "99.9" : 3.7884101071388387E-4, + "99.99" : 3.7884101071388387E-4, + "99.999" : 3.7884101071388387E-4, + "99.9999" : 3.7884101071388387E-4, + "100.0" : 3.7884101071388387E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.612773151072454E-4, + 3.608635754554795E-4, + 3.612575641438211E-4 + ], + [ + 3.6489192063517893E-4, + 3.6589958807135793E-4, + 3.650681987878625E-4 + ], + [ + 3.7884101071388387E-4, + 3.7679756682629267E-4, + 3.775849941454177E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1111973415085475, + "scoreError" : 0.004008218317969188, + "scoreConfidence" : [ + 0.10718912319057831, + 0.11520555982651669 + ], + "scorePercentiles" : { + "0.0" : 0.1081608231699403, + "50.0" : 0.11170663668148612, + "90.0" : 0.11366037566348045, + "95.0" : 0.11366037566348045, + "99.0" : 0.11366037566348045, + "99.9" : 0.11366037566348045, + "99.99" : 0.11366037566348045, + "99.999" : 0.11366037566348045, + "99.9999" : 0.11366037566348045, + "100.0" : 0.11366037566348045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11366037566348045, + 0.11365532800300045, + 0.11365060471644504 + ], + [ + 0.1081608231699403, + 0.10824979241177744, + 0.10825240464179783 + ], + [ + 0.11173908936712255, + 0.11170663668148612, + 0.11170101892187745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014260699539865742, + "scoreError" : 3.2143317791977834E-4, + "scoreConfidence" : [ + 0.013939266361945963, + 0.014582132717785521 + ], + "scorePercentiles" : { + "0.0" : 0.014016248590682668, + "50.0" : 0.014315274706790941, + "90.0" : 0.014452096543242348, + "95.0" : 0.014452096543242348, + "99.0" : 0.014452096543242348, + "99.9" : 0.014452096543242348, + "99.99" : 0.014452096543242348, + "99.999" : 0.014452096543242348, + "99.9999" : 0.014452096543242348, + "100.0" : 0.014452096543242348 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014016248590682668, + 0.014017658773412729, + 0.01401817411770643 + ], + [ + 0.014315274706790941, + 0.014313201249813931, + 0.014320542904604721 + ], + [ + 0.014452096543242348, + 0.01445045396573549, + 0.014442645006802406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9769531999380311, + "scoreError" : 0.04077356801038438, + "scoreConfidence" : [ + 0.9361796319276467, + 1.0177267679484154 + ], + "scorePercentiles" : { + "0.0" : 0.9553780986816967, + "50.0" : 0.9657025842023947, + "90.0" : 1.0090252014932903, + "95.0" : 1.0090252014932903, + "99.0" : 1.0090252014932903, + "99.9" : 1.0090252014932903, + "99.99" : 1.0090252014932903, + "99.999" : 1.0090252014932903, + "99.9999" : 1.0090252014932903, + "100.0" : 1.0090252014932903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9648999544577384, + 0.9657025842023947, + 0.9661773759057096 + ], + [ + 1.0087031128706878, + 1.0090252014932903, + 1.008847105417129 + ], + [ + 0.9568213258394719, + 0.9570240405741627, + 0.9553780986816967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012924418906265613, + "scoreError" : 3.8965013306023873E-4, + "scoreConfidence" : [ + 0.012534768773205375, + 0.013314069039325851 + ], + "scorePercentiles" : { + "0.0" : 0.012735315866017692, + "50.0" : 0.012940439808610482, + "90.0" : 0.013049666281276018, + "95.0" : 0.013049666281276018, + "99.0" : 0.013049666281276018, + "99.9" : 0.013049666281276018, + "99.99" : 0.013049666281276018, + "99.999" : 0.013049666281276018, + "99.9999" : 0.013049666281276018, + "100.0" : 0.013049666281276018 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013043667261443586, + 0.013049666281276018, + 0.013047006646000657 + ], + [ + 0.012735315866017692, + 0.012837212355777377, + 0.01283364502707836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.566305886143264, + "scoreError" : 0.09570705350222038, + "scoreConfidence" : [ + 3.4705988326410435, + 3.6620129396454844 + ], + "scorePercentiles" : { + "0.0" : 3.5189903342716398, + "50.0" : 3.55783447583511, + "90.0" : 3.6104352953068592, + "95.0" : 3.6104352953068592, + "99.0" : 3.6104352953068592, + "99.9" : 3.6104352953068592, + "99.99" : 3.6104352953068592, + "99.999" : 3.6104352953068592, + "99.9999" : 3.6104352953068592, + "100.0" : 3.6104352953068592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.561564, + 3.6015119863210945, + 3.6104352953068592 + ], + [ + 3.5189903342716398, + 3.551228749289773, + 3.55410495167022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.800649162591949, + "scoreError" : 0.0345714763720071, + "scoreConfidence" : [ + 2.766077686219942, + 2.8352206389639565 + ], + "scorePercentiles" : { + "0.0" : 2.7742893509015256, + "50.0" : 2.799184954100196, + "90.0" : 2.8341115919523943, + "95.0" : 2.8341115919523943, + "99.0" : 2.8341115919523943, + "99.9" : 2.8341115919523943, + "99.99" : 2.8341115919523943, + "99.999" : 2.8341115919523943, + "99.9999" : 2.8341115919523943, + "100.0" : 2.8341115919523943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.796055624545709, + 2.7997031704927213, + 2.799184954100196 + ], + [ + 2.7742893509015256, + 2.7824100247566066, + 2.7823066703755215 + ], + [ + 2.8341115919523943, + 2.8292017445544553, + 2.8085793316484136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17267050230088243, + "scoreError" : 0.003151151466562172, + "scoreConfidence" : [ + 0.16951935083432026, + 0.1758216537674446 + ], + "scorePercentiles" : { + "0.0" : 0.17111582447254495, + "50.0" : 0.17164817255406797, + "90.0" : 0.1752360331364887, + "95.0" : 0.1752360331364887, + "99.0" : 0.1752360331364887, + "99.9" : 0.1752360331364887, + "99.99" : 0.1752360331364887, + "99.999" : 0.1752360331364887, + "99.9999" : 0.1752360331364887, + "100.0" : 0.1752360331364887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1752300553189998, + 0.1752360331364887, + 0.17500771766332407 + ], + [ + 0.17137741852892788, + 0.171670974593147, + 0.17151709153745884 + ], + [ + 0.17164817255406797, + 0.17123123290298278, + 0.17111582447254495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3235524142428894, + "scoreError" : 0.004084250483863322, + "scoreConfidence" : [ + 0.3194681637590261, + 0.3276366647267527 + ], + "scorePercentiles" : { + "0.0" : 0.32034494381266615, + "50.0" : 0.3238990923724696, + "90.0" : 0.32674055433575117, + "95.0" : 0.32674055433575117, + "99.0" : 0.32674055433575117, + "99.9" : 0.32674055433575117, + "99.99" : 0.32674055433575117, + "99.999" : 0.32674055433575117, + "99.9999" : 0.32674055433575117, + "100.0" : 0.32674055433575117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3241351402502269, + 0.3238990923724696, + 0.3237139987051664 + ], + [ + 0.320722837299551, + 0.32034494381266615, + 0.32074722987362886 + ], + [ + 0.32674055433575117, + 0.3259625402718472, + 0.3257053912646973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16539352779052965, + "scoreError" : 0.0048365102969989155, + "scoreConfidence" : [ + 0.16055701749353074, + 0.17023003808752857 + ], + "scorePercentiles" : { + "0.0" : 0.16211707347004944, + "50.0" : 0.1651007180452369, + "90.0" : 0.16910644712188852, + "95.0" : 0.16910644712188852, + "99.0" : 0.16910644712188852, + "99.9" : 0.16910644712188852, + "99.99" : 0.16910644712188852, + "99.999" : 0.16910644712188852, + "99.9999" : 0.16910644712188852, + "100.0" : 0.16910644712188852 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16877239570992186, + 0.1686780631346355, + 0.16910644712188852 + ], + [ + 0.165262546594834, + 0.1651007180452369, + 0.16491513333223393 + ], + [ + 0.16234858171664204, + 0.16224079098932476, + 0.16211707347004944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38974448413117135, + "scoreError" : 0.00801366997563882, + "scoreConfidence" : [ + 0.38173081415553256, + 0.39775815410681015 + ], + "scorePercentiles" : { + "0.0" : 0.3837897027286334, + "50.0" : 0.3899108134747349, + "90.0" : 0.3994573024565608, + "95.0" : 0.3994573024565608, + "99.0" : 0.3994573024565608, + "99.9" : 0.3994573024565608, + "99.99" : 0.3994573024565608, + "99.999" : 0.3994573024565608, + "99.9999" : 0.3994573024565608, + "100.0" : 0.3994573024565608 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39020925066333695, + 0.3898385298222361, + 0.3899108134747349 + ], + [ + 0.3848243881171355, + 0.3856046933369322, + 0.3837897027286334 + ], + [ + 0.3994573024565608, + 0.3922103194101267, + 0.3918553571708464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15612984119790863, + "scoreError" : 0.0014828309073842754, + "scoreConfidence" : [ + 0.15464701029052436, + 0.1576126721052929 + ], + "scorePercentiles" : { + "0.0" : 0.15515133153362812, + "50.0" : 0.15579655467618053, + "90.0" : 0.15749902234856836, + "95.0" : 0.15749902234856836, + "99.0" : 0.15749902234856836, + "99.9" : 0.15749902234856836, + "99.99" : 0.15749902234856836, + "99.999" : 0.15749902234856836, + "99.9999" : 0.15749902234856836, + "100.0" : 0.15749902234856836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1562939737430255, + 0.15577637251542154, + 0.15579655467618053 + ], + [ + 0.15737729339187637, + 0.15749902234856836, + 0.15663811916733236 + ], + [ + 0.15515133153362812, + 0.15529291875271756, + 0.15534298465242719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0470756026279924, + "scoreError" : 6.691578266174269E-4, + "scoreConfidence" : [ + 0.04640644480137498, + 0.047744760454609826 + ], + "scorePercentiles" : { + "0.0" : 0.04659337120852087, + "50.0" : 0.0470886511903865, + "90.0" : 0.04761406129746459, + "95.0" : 0.04761406129746459, + "99.0" : 0.04761406129746459, + "99.9" : 0.04761406129746459, + "99.99" : 0.04761406129746459, + "99.999" : 0.04761406129746459, + "99.9999" : 0.04761406129746459, + "100.0" : 0.04761406129746459 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04761406129746459, + 0.047498459840597335, + 0.04745361069115239 + ], + [ + 0.04661251135701534, + 0.04659337120852087, + 0.04662590289822637 + ], + [ + 0.04715433838979215, + 0.0470886511903865, + 0.04703951677877605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9419445.041771932, + "scoreError" : 538928.2168990934, + "scoreConfidence" : [ + 8880516.824872838, + 9958373.258671025 + ], + "scorePercentiles" : { + "0.0" : 8965759.088709677, + "50.0" : 9617590.397115385, + "90.0" : 9653816.620656371, + "95.0" : 9653816.620656371, + "99.0" : 9653816.620656371, + "99.9" : 9653816.620656371, + "99.99" : 9653816.620656371, + "99.999" : 9653816.620656371, + "99.9999" : 9653816.620656371, + "100.0" : 9653816.620656371 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9637883.496146435, + 9632204.286814244, + 9644302.040501447 + ], + [ + 8965759.088709677, + 8998299.294964029, + 9013363.286486486 + ], + [ + 9611786.864553314, + 9617590.397115385, + 9653816.620656371 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-19T05:34:27Z-083fac7eaad2329f371f803324ff855b0de33531-jdk17.json b/performance-results/2025-04-19T05:34:27Z-083fac7eaad2329f371f803324ff855b0de33531-jdk17.json new file mode 100644 index 0000000000..f472d42a39 --- /dev/null +++ b/performance-results/2025-04-19T05:34:27Z-083fac7eaad2329f371f803324ff855b0de33531-jdk17.json @@ -0,0 +1,1369 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.425695994784005, + "scoreError" : 0.02533575657348106, + "scoreConfidence" : [ + 3.4003602382105242, + 3.451031751357486 + ], + "scorePercentiles" : { + "0.0" : 3.4229796381927127, + "50.0" : 3.4241541164161093, + "90.0" : 3.431496108111089, + "95.0" : 3.431496108111089, + "99.0" : 3.431496108111089, + "99.9" : 3.431496108111089, + "99.99" : 3.431496108111089, + "99.999" : 3.431496108111089, + "99.9999" : 3.431496108111089, + "100.0" : 3.431496108111089 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.42374069434408, + 3.431496108111089 + ], + [ + 3.4229796381927127, + 3.424567538488139 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7260263431013518, + "scoreError" : 0.0315413775222339, + "scoreConfidence" : [ + 1.6944849655791179, + 1.7575677206235858 + ], + "scorePercentiles" : { + "0.0" : 1.7217424651355324, + "50.0" : 1.725965478910251, + "90.0" : 1.730431949449373, + "95.0" : 1.730431949449373, + "99.0" : 1.730431949449373, + "99.9" : 1.730431949449373, + "99.99" : 1.730431949449373, + "99.999" : 1.730431949449373, + "99.9999" : 1.730431949449373, + "100.0" : 1.730431949449373 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7300707160484499, + 1.730431949449373 + ], + [ + 1.7217424651355324, + 1.7218602417720519 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8689685739892383, + "scoreError" : 0.0061142711214475075, + "scoreConfidence" : [ + 0.8628543028677909, + 0.8750828451106858 + ], + "scorePercentiles" : { + "0.0" : 0.8679429348532268, + "50.0" : 0.868874776741024, + "90.0" : 0.8701818076216785, + "95.0" : 0.8701818076216785, + "99.0" : 0.8701818076216785, + "99.9" : 0.8701818076216785, + "99.99" : 0.8701818076216785, + "99.999" : 0.8701818076216785, + "99.9999" : 0.8701818076216785, + "100.0" : 0.8701818076216785 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679429348532268, + 0.8691434405541499 + ], + [ + 0.868606112927898, + 0.8701818076216785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.359845932987152, + "scoreError" : 0.0698591863659578, + "scoreConfidence" : [ + 16.289986746621196, + 16.42970511935311 + ], + "scorePercentiles" : { + "0.0" : 16.302987991053268, + "50.0" : 16.364410028836858, + "90.0" : 16.417612299403828, + "95.0" : 16.417612299403828, + "99.0" : 16.417612299403828, + "99.9" : 16.417612299403828, + "99.99" : 16.417612299403828, + "99.999" : 16.417612299403828, + "99.9999" : 16.417612299403828, + "100.0" : 16.417612299403828 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.37636709039433, + 16.330509898167325, + 16.364410028836858 + ], + [ + 16.307341755305227, + 16.302987991053268, + 16.34226587416218 + ], + [ + 16.40294992882686, + 16.417612299403828, + 16.394168530734515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2710.1847879168704, + "scoreError" : 134.47170833527892, + "scoreConfidence" : [ + 2575.7130795815915, + 2844.6564962521493 + ], + "scorePercentiles" : { + "0.0" : 2600.981395430096, + "50.0" : 2756.0561086739285, + "90.0" : 2772.9036698605455, + "95.0" : 2772.9036698605455, + "99.0" : 2772.9036698605455, + "99.9" : 2772.9036698605455, + "99.99" : 2772.9036698605455, + "99.999" : 2772.9036698605455, + "99.9999" : 2772.9036698605455, + "100.0" : 2772.9036698605455 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2756.0561086739285, + 2760.387417761637, + 2752.438612054852 + ], + [ + 2605.609079376698, + 2600.981395430096, + 2605.036796949673 + ], + [ + 2772.2172720957806, + 2766.032739048628, + 2772.9036698605455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70686.15783859028, + "scoreError" : 1854.0323200444645, + "scoreConfidence" : [ + 68832.12551854581, + 72540.19015863475 + ], + "scorePercentiles" : { + "0.0" : 69256.73487929575, + "50.0" : 71018.86562775528, + "90.0" : 71802.3494796297, + "95.0" : 71802.3494796297, + "99.0" : 71802.3494796297, + "99.9" : 71802.3494796297, + "99.99" : 71802.3494796297, + "99.999" : 71802.3494796297, + "99.9999" : 71802.3494796297, + "100.0" : 71802.3494796297 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71033.27617737287, + 71018.86562775528, + 70967.16803059903 + ], + [ + 69271.37542125554, + 69320.9471582513, + 69256.73487929575 + ], + [ + 71749.31704870629, + 71802.3494796297, + 71755.38672444687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.33461436489677, + "scoreError" : 5.78738913969486, + "scoreConfidence" : [ + 350.5472252252019, + 362.12200350459165 + ], + "scorePercentiles" : { + "0.0" : 351.78326788618125, + "50.0" : 357.13038678791185, + "90.0" : 360.04158098522316, + "95.0" : 360.04158098522316, + "99.0" : 360.04158098522316, + "99.9" : 360.04158098522316, + "99.99" : 360.04158098522316, + "99.999" : 360.04158098522316, + "99.9999" : 360.04158098522316, + "100.0" : 360.04158098522316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.04158098522316, + 359.88806121741237, + 359.60720411615296 + ], + [ + 356.75228370422525, + 357.13038678791185, + 357.4878282544236 + ], + [ + 351.92575348474327, + 351.78326788618125, + 352.39516284779717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.28471290552234, + "scoreError" : 2.401014324630506, + "scoreConfidence" : [ + 106.88369858089183, + 111.68572723015285 + ], + "scorePercentiles" : { + "0.0" : 108.04428776254298, + "50.0" : 108.69769114147269, + "90.0" : 111.34526679775162, + "95.0" : 111.34526679775162, + "99.0" : 111.34526679775162, + "99.9" : 111.34526679775162, + "99.99" : 111.34526679775162, + "99.999" : 111.34526679775162, + "99.9999" : 111.34526679775162, + "100.0" : 111.34526679775162 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.04428776254298, + 108.04903264461714, + 108.06425230211276 + ], + [ + 108.53258332531895, + 108.71740764633286, + 108.69769114147269 + ], + [ + 110.94586845679417, + 111.16602607275799, + 111.34526679775162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06154931090385804, + "scoreError" : 2.4225016982650936E-4, + "scoreConfidence" : [ + 0.061307060734031533, + 0.061791561073684546 + ], + "scorePercentiles" : { + "0.0" : 0.06135195244697755, + "50.0" : 0.06157969546288656, + "90.0" : 0.061753830654274866, + "95.0" : 0.061753830654274866, + "99.0" : 0.061753830654274866, + "99.9" : 0.061753830654274866, + "99.99" : 0.061753830654274866, + "99.999" : 0.061753830654274866, + "99.9999" : 0.061753830654274866, + "100.0" : 0.061753830654274866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061753830654274866, + 0.0616728271332363, + 0.061684454477607335 + ], + [ + 0.06159813612368721, + 0.0615067294724023, + 0.06157969546288656 + ], + [ + 0.061374654269160896, + 0.06135195244697755, + 0.06142151809448935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.760750908242404E-4, + "scoreError" : 8.434031411615685E-6, + "scoreConfidence" : [ + 3.676410594126247E-4, + 3.845091222358561E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7088353521284097E-4, + "50.0" : 3.739344159231379E-4, + "90.0" : 3.834190915539945E-4, + "95.0" : 3.834190915539945E-4, + "99.0" : 3.834190915539945E-4, + "99.9" : 3.834190915539945E-4, + "99.99" : 3.834190915539945E-4, + "99.999" : 3.834190915539945E-4, + "99.9999" : 3.834190915539945E-4, + "100.0" : 3.834190915539945E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.834190915539945E-4, + 3.8273148569289674E-4, + 3.814880285179107E-4 + ], + [ + 3.723592021830137E-4, + 3.7088353521284097E-4, + 3.715125941764848E-4 + ], + [ + 3.747160940030065E-4, + 3.739344159231379E-4, + 3.7363137015487764E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11046893352879489, + "scoreError" : 0.002138774241423794, + "scoreConfidence" : [ + 0.1083301592873711, + 0.11260770777021868 + ], + "scorePercentiles" : { + "0.0" : 0.1087234751244863, + "50.0" : 0.11118943017411995, + "90.0" : 0.11152621038955246, + "95.0" : 0.11152621038955246, + "99.0" : 0.11152621038955246, + "99.9" : 0.11152621038955246, + "99.99" : 0.11152621038955246, + "99.999" : 0.11152621038955246, + "99.9999" : 0.11152621038955246, + "100.0" : 0.11152621038955246 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11109712882583626, + 0.11118943017411995, + 0.11129137859464032 + ], + [ + 0.11152621038955246, + 0.1113868389489747, + 0.11138687892491562 + ], + [ + 0.10888735639155052, + 0.1087317043850779, + 0.1087234751244863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014165312701952966, + "scoreError" : 4.815072553459514E-4, + "scoreConfidence" : [ + 0.013683805446607014, + 0.014646819957298917 + ], + "scorePercentiles" : { + "0.0" : 0.01395668349404266, + "50.0" : 0.013989677564033513, + "90.0" : 0.014556064673285716, + "95.0" : 0.014556064673285716, + "99.0" : 0.014556064673285716, + "99.9" : 0.014556064673285716, + "99.99" : 0.014556064673285716, + "99.999" : 0.014556064673285716, + "99.9999" : 0.014556064673285716, + "100.0" : 0.014556064673285716 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014544858232877987, + 0.014539803734064579, + 0.014556064673285716 + ], + [ + 0.013964511364889982, + 0.01395668349404266, + 0.01395705616531657 + ], + [ + 0.013989677564033513, + 0.013992148289829927, + 0.013987010799235759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9823763253227124, + "scoreError" : 0.01767823646629488, + "scoreConfidence" : [ + 0.9646980888564175, + 1.0000545617890073 + ], + "scorePercentiles" : { + "0.0" : 0.9698457434057409, + "50.0" : 0.9839505178079496, + "90.0" : 0.9975501751620948, + "95.0" : 0.9975501751620948, + "99.0" : 0.9975501751620948, + "99.9" : 0.9975501751620948, + "99.99" : 0.9975501751620948, + "99.999" : 0.9975501751620948, + "99.9999" : 0.9975501751620948, + "100.0" : 0.9975501751620948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.994282262278783, + 0.9914581876672945, + 0.9975501751620948 + ], + [ + 0.9756333034146342, + 0.9839505178079496, + 0.9847643025110783 + ], + [ + 0.970755030188313, + 0.9698457434057409, + 0.973147405468522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013320605587337516, + "scoreError" : 0.0010088284743755237, + "scoreConfidence" : [ + 0.012311777112961993, + 0.01432943406171304 + ], + "scorePercentiles" : { + "0.0" : 0.012983403693951952, + "50.0" : 0.013313732498541665, + "90.0" : 0.013659499825162407, + "95.0" : 0.013659499825162407, + "99.0" : 0.013659499825162407, + "99.9" : 0.013659499825162407, + "99.99" : 0.013659499825162407, + "99.999" : 0.013659499825162407, + "99.9999" : 0.013659499825162407, + "100.0" : 0.013659499825162407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012983403693951952, + 0.012996723417749486, + 0.012996930223672069 + ], + [ + 0.013656541590077922, + 0.013659499825162407, + 0.013630534773411262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.763223985833615, + "scoreError" : 0.05379514057442273, + "scoreConfidence" : [ + 3.7094288452591924, + 3.817019126408038 + ], + "scorePercentiles" : { + "0.0" : 3.7410425190725505, + "50.0" : 3.764923808580922, + "90.0" : 3.782251360816944, + "95.0" : 3.782251360816944, + "99.0" : 3.782251360816944, + "99.9" : 3.782251360816944, + "99.99" : 3.782251360816944, + "99.999" : 3.782251360816944, + "99.9999" : 3.782251360816944, + "100.0" : 3.782251360816944 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7807019969765685, + 3.7783525196374623, + 3.782251360816944 + ], + [ + 3.7410425190725505, + 3.7514950975243813, + 3.7455004209737828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7888884488701353, + "scoreError" : 0.02867098420555031, + "scoreConfidence" : [ + 2.760217464664585, + 2.8175594330756857 + ], + "scorePercentiles" : { + "0.0" : 2.765524676438053, + "50.0" : 2.7872077915273135, + "90.0" : 2.8127805618672665, + "95.0" : 2.8127805618672665, + "99.0" : 2.8127805618672665, + "99.9" : 2.8127805618672665, + "99.99" : 2.8127805618672665, + "99.999" : 2.8127805618672665, + "99.9999" : 2.8127805618672665, + "100.0" : 2.8127805618672665 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8127805618672665, + 2.8065891492704824, + 2.8076440741156654 + ], + [ + 2.775067, + 2.765524676438053, + 2.770210220221607 + ], + [ + 2.787901388346808, + 2.7872077915273135, + 2.7870711780440236 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17765917554060356, + "scoreError" : 0.005312054418488953, + "scoreConfidence" : [ + 0.17234712112211462, + 0.1829712299590925 + ], + "scorePercentiles" : { + "0.0" : 0.1740636555499469, + "50.0" : 0.17742501951634937, + "90.0" : 0.18146718631026912, + "95.0" : 0.18146718631026912, + "99.0" : 0.18146718631026912, + "99.9" : 0.18146718631026912, + "99.99" : 0.18146718631026912, + "99.999" : 0.18146718631026912, + "99.9999" : 0.18146718631026912, + "100.0" : 0.18146718631026912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1741679257711131, + 0.17417738748388895, + 0.1740636555499469 + ], + [ + 0.18146718631026912, + 0.18141467578550177, + 0.18138980384901415 + ], + [ + 0.17745831782367974, + 0.1773686077756691, + 0.17742501951634937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32944903027998373, + "scoreError" : 0.004751421529257433, + "scoreConfidence" : [ + 0.3246976087507263, + 0.3342004518092412 + ], + "scorePercentiles" : { + "0.0" : 0.32573183821373897, + "50.0" : 0.33055895398803425, + "90.0" : 0.33357614773674904, + "95.0" : 0.33357614773674904, + "99.0" : 0.33357614773674904, + "99.9" : 0.33357614773674904, + "99.99" : 0.33357614773674904, + "99.999" : 0.33357614773674904, + "99.9999" : 0.33357614773674904, + "100.0" : 0.33357614773674904 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3260747078809221, + 0.32573183821373897, + 0.32594461376747824 + ], + [ + 0.33357614773674904, + 0.331354836713055, + 0.3311566846479899 + ], + [ + 0.3300601760512245, + 0.33058331352066117, + 0.33055895398803425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15864893604010794, + "scoreError" : 0.00518664053330179, + "scoreConfidence" : [ + 0.15346229550680615, + 0.16383557657340972 + ], + "scorePercentiles" : { + "0.0" : 0.15606451216505143, + "50.0" : 0.1568420326537014, + "90.0" : 0.16277467318835862, + "95.0" : 0.16277467318835862, + "99.0" : 0.16277467318835862, + "99.9" : 0.16277467318835862, + "99.99" : 0.16277467318835862, + "99.999" : 0.16277467318835862, + "99.9999" : 0.16277467318835862, + "100.0" : 0.16277467318835862 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16272160386292633, + 0.162739456101808, + 0.16277467318835862 + ], + [ + 0.15669222058570062, + 0.15606451216505143, + 0.156202886037394 + ], + [ + 0.15696292820706, + 0.1568420326537014, + 0.15684011155897115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3900080156242898, + "scoreError" : 0.00300343548489861, + "scoreConfidence" : [ + 0.3870045801393912, + 0.39301145110918845 + ], + "scorePercentiles" : { + "0.0" : 0.38657571626270826, + "50.0" : 0.3902557004487805, + "90.0" : 0.3923050295006081, + "95.0" : 0.3923050295006081, + "99.0" : 0.3923050295006081, + "99.9" : 0.3923050295006081, + "99.99" : 0.3923050295006081, + "99.999" : 0.3923050295006081, + "99.9999" : 0.3923050295006081, + "100.0" : 0.3923050295006081 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3902557004487805, + 0.3905326066309993, + 0.3898382468813348 + ], + [ + 0.3923050295006081, + 0.3915571262725137, + 0.39138963590466125 + ], + [ + 0.38949802442064263, + 0.38812005429635954, + 0.38657571626270826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1567267156588646, + "scoreError" : 0.0025937601932065494, + "scoreConfidence" : [ + 0.15413295546565803, + 0.15932047585207115 + ], + "scorePercentiles" : { + "0.0" : 0.15462258207962892, + "50.0" : 0.15760147088396137, + "90.0" : 0.15837979365230198, + "95.0" : 0.15837979365230198, + "99.0" : 0.15837979365230198, + "99.9" : 0.15837979365230198, + "99.99" : 0.15837979365230198, + "99.999" : 0.15837979365230198, + "99.9999" : 0.15837979365230198, + "100.0" : 0.15837979365230198 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15837979365230198, + 0.157548456312821, + 0.15764174156630303 + ], + [ + 0.15760147088396137, + 0.15767686564599034, + 0.15760258934312552 + ], + [ + 0.15462258207962892, + 0.15478591770241615, + 0.15468102374323278 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04642022671263654, + "scoreError" : 0.001413288794817226, + "scoreConfidence" : [ + 0.04500693791781932, + 0.04783351550745377 + ], + "scorePercentiles" : { + "0.0" : 0.04545278462538407, + "50.0" : 0.04642856185117091, + "90.0" : 0.04747142907394045, + "95.0" : 0.04747142907394045, + "99.0" : 0.04747142907394045, + "99.9" : 0.04747142907394045, + "99.99" : 0.04747142907394045, + "99.999" : 0.04747142907394045, + "99.9999" : 0.04747142907394045, + "100.0" : 0.04747142907394045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04649789863576762, + 0.04642856185117091, + 0.046217081045232075 + ], + [ + 0.04741952635771764, + 0.04747142907394045, + 0.04732541950062942 + ], + [ + 0.045514183351159455, + 0.04545278462538407, + 0.04545515597272727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9318725.38196741, + "scoreError" : 403232.20389907574, + "scoreConfidence" : [ + 8915493.178068334, + 9721957.585866487 + ], + "scorePercentiles" : { + "0.0" : 9141357.023765996, + "50.0" : 9185854.114784205, + "90.0" : 9641518.673410404, + "95.0" : 9641518.673410404, + "99.0" : 9641518.673410404, + "99.9" : 9641518.673410404, + "99.99" : 9641518.673410404, + "99.999" : 9641518.673410404, + "99.9999" : 9641518.673410404, + "100.0" : 9641518.673410404 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9152496.51601098, + 9147746.644424131, + 9141477.754113346 + ], + [ + 9141357.023765996, + 9185854.114784205, + 9185952.093663912 + ], + [ + 9638040.732177263, + 9641518.673410404, + 9634084.885356454 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-22T04:30:19Z-272f8fadca51f8aa3326d5c4b0ac084a5edb47bb-jdk17.json b/performance-results/2025-04-22T04:30:19Z-272f8fadca51f8aa3326d5c4b0ac084a5edb47bb-jdk17.json new file mode 100644 index 0000000000..9240866ff9 --- /dev/null +++ b/performance-results/2025-04-22T04:30:19Z-272f8fadca51f8aa3326d5c4b0ac084a5edb47bb-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4127115413457414, + "scoreError" : 0.023818295936563618, + "scoreConfidence" : [ + 3.388893245409178, + 3.436529837282305 + ], + "scorePercentiles" : { + "0.0" : 3.408790910367565, + "50.0" : 3.4124267197828493, + "90.0" : 3.4172018154497006, + "95.0" : 3.4172018154497006, + "99.0" : 3.4172018154497006, + "99.9" : 3.4172018154497006, + "99.99" : 3.4172018154497006, + "99.999" : 3.4172018154497006, + "99.9999" : 3.4172018154497006, + "100.0" : 3.4172018154497006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408790910367565, + 3.410835872457578 + ], + [ + 3.414017567108121, + 3.4172018154497006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7228743985302142, + "scoreError" : 0.005018255154910196, + "scoreConfidence" : [ + 1.717856143375304, + 1.7278926536851245 + ], + "scorePercentiles" : { + "0.0" : 1.7220239373364237, + "50.0" : 1.7228187182758958, + "90.0" : 1.7238362202326416, + "95.0" : 1.7238362202326416, + "99.0" : 1.7238362202326416, + "99.9" : 1.7238362202326416, + "99.99" : 1.7238362202326416, + "99.999" : 1.7238362202326416, + "99.9999" : 1.7238362202326416, + "100.0" : 1.7238362202326416 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7220239373364237, + 1.723096788586162 + ], + [ + 1.7238362202326416, + 1.7225406479656293 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8667147624809695, + "scoreError" : 0.007094090320634176, + "scoreConfidence" : [ + 0.8596206721603353, + 0.8738088528016036 + ], + "scorePercentiles" : { + "0.0" : 0.8654674214767059, + "50.0" : 0.8667706679878056, + "90.0" : 0.8678502924715609, + "95.0" : 0.8678502924715609, + "99.0" : 0.8678502924715609, + "99.9" : 0.8678502924715609, + "99.99" : 0.8678502924715609, + "99.999" : 0.8678502924715609, + "99.9999" : 0.8678502924715609, + "100.0" : 0.8678502924715609 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8654674214767059, + 0.8673887604015584 + ], + [ + 0.8678502924715609, + 0.8661525755740527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.192109290783293, + "scoreError" : 0.029219959554604866, + "scoreConfidence" : [ + 16.162889331228687, + 16.2213292503379 + ], + "scorePercentiles" : { + "0.0" : 16.170071132047212, + "50.0" : 16.18990550904613, + "90.0" : 16.22348455699213, + "95.0" : 16.22348455699213, + "99.0" : 16.22348455699213, + "99.9" : 16.22348455699213, + "99.99" : 16.22348455699213, + "99.999" : 16.22348455699213, + "99.9999" : 16.22348455699213, + "100.0" : 16.22348455699213 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.179157183208993, + 16.178505581937568, + 16.18990550904613 + ], + [ + 16.17867011044498, + 16.20076627069513, + 16.170071132047212 + ], + [ + 16.208825806640007, + 16.22348455699213, + 16.19959746603748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2654.4173184945766, + "scoreError" : 101.70228326464833, + "scoreConfidence" : [ + 2552.715035229928, + 2756.119601759225 + ], + "scorePercentiles" : { + "0.0" : 2599.0909153926536, + "50.0" : 2629.737511851428, + "90.0" : 2738.03030561129, + "95.0" : 2738.03030561129, + "99.0" : 2738.03030561129, + "99.9" : 2738.03030561129, + "99.99" : 2738.03030561129, + "99.999" : 2738.03030561129, + "99.9999" : 2738.03030561129, + "100.0" : 2738.03030561129 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2729.882343923157, + 2738.03030561129, + 2731.9303767336796 + ], + [ + 2602.253096689208, + 2599.9235622130914, + 2599.0909153926536 + ], + [ + 2629.737511851428, + 2630.233123802959, + 2628.6746302337274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.08143066481, + "scoreError" : 987.728204101295, + "scoreConfidence" : [ + 69231.35322656351, + 71206.8096347661 + ], + "scorePercentiles" : { + "0.0" : 69608.82393814632, + "50.0" : 70088.63572548059, + "90.0" : 70980.20391041573, + "95.0" : 70980.20391041573, + "99.0" : 70980.20391041573, + "99.9" : 70980.20391041573, + "99.99" : 70980.20391041573, + "99.999" : 70980.20391041573, + "99.9999" : 70980.20391041573, + "100.0" : 70980.20391041573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69608.82393814632, + 69616.85239393705, + 69628.7048603332 + ], + [ + 70071.59074403135, + 70088.63572548059, + 70093.0590445055 + ], + [ + 70980.20391041573, + 70967.16474502598, + 70916.69751410744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.94577240181684, + "scoreError" : 10.389346561589953, + "scoreConfidence" : [ + 339.5564258402269, + 360.3351189634068 + ], + "scorePercentiles" : { + "0.0" : 343.3319309427049, + "50.0" : 347.31376539572716, + "90.0" : 358.0092489157099, + "95.0" : 358.0092489157099, + "99.0" : 358.0092489157099, + "99.9" : 358.0092489157099, + "99.99" : 358.0092489157099, + "99.999" : 358.0092489157099, + "99.9999" : 358.0092489157099, + "100.0" : 358.0092489157099 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 357.2327291475415, + 358.0092489157099, + 357.2593295621967 + ], + [ + 343.3319309427049, + 343.86619461756703, + 343.8160191897183 + ], + [ + 351.37190138637834, + 347.310832458807, + 347.31376539572716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.15871691567798063, + "scoreError" : 0.039717514509502, + "scoreConfidence" : [ + 0.11899940116847862, + 0.19843443018748264 + ], + "scorePercentiles" : { + "0.0" : 0.15144481893500517, + "50.0" : 0.15861564702880188, + "90.0" : 0.16619154971931357, + "95.0" : 0.16619154971931357, + "99.0" : 0.16619154971931357, + "99.9" : 0.16619154971931357, + "99.99" : 0.16619154971931357, + "99.999" : 0.16619154971931357, + "99.9999" : 0.16619154971931357, + "100.0" : 0.16619154971931357 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16619154971931357, + 0.1571060051654021 + ], + [ + 0.16012528889220165, + 0.15144481893500517 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.83195258245355, + "scoreError" : 1.5297666776815844, + "scoreConfidence" : [ + 105.30218590477197, + 108.36171926013513 + ], + "scorePercentiles" : { + "0.0" : 105.70656874396997, + "50.0" : 106.69773666359124, + "90.0" : 108.19688907976642, + "95.0" : 108.19688907976642, + "99.0" : 108.19688907976642, + "99.9" : 108.19688907976642, + "99.99" : 108.19688907976642, + "99.999" : 108.19688907976642, + "99.9999" : 108.19688907976642, + "100.0" : 108.19688907976642 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.60491662295091, + 105.70656874396997, + 105.78420489491664 + ], + [ + 108.19688907976642, + 107.78126928600777, + 107.74017180717735 + ], + [ + 106.05774927594952, + 106.69773666359124, + 106.9180668677521 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061996559058925996, + "scoreError" : 5.70134993193192E-4, + "scoreConfidence" : [ + 0.0614264240657328, + 0.06256669405211919 + ], + "scorePercentiles" : { + "0.0" : 0.06173059760117534, + "50.0" : 0.06180828258948162, + "90.0" : 0.06250642418086583, + "95.0" : 0.06250642418086583, + "99.0" : 0.06250642418086583, + "99.9" : 0.06250642418086583, + "99.99" : 0.06250642418086583, + "99.999" : 0.06250642418086583, + "99.9999" : 0.06250642418086583, + "100.0" : 0.06250642418086583 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06173059760117534, + 0.061750593958405375, + 0.061764083769277806 + ], + [ + 0.06246450702404228, + 0.06250642418086583, + 0.06236390625565166 + ], + [ + 0.06181479267011176, + 0.06180828258948162, + 0.06176584348132227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7574223862614606E-4, + "scoreError" : 9.741797174160208E-6, + "scoreConfidence" : [ + 3.6600044145198587E-4, + 3.8548403580030625E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6863659880709076E-4, + "50.0" : 3.7536581726309645E-4, + "90.0" : 3.833523489446626E-4, + "95.0" : 3.833523489446626E-4, + "99.0" : 3.833523489446626E-4, + "99.9" : 3.833523489446626E-4, + "99.99" : 3.833523489446626E-4, + "99.999" : 3.833523489446626E-4, + "99.9999" : 3.833523489446626E-4, + "100.0" : 3.833523489446626E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.748514555148026E-4, + 3.7536581726309645E-4, + 3.7537262840412156E-4 + ], + [ + 3.6944403588529405E-4, + 3.7002040020112586E-4, + 3.6863659880709076E-4 + ], + [ + 3.8281033084065525E-4, + 3.833523489446626E-4, + 3.818265317744651E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10975899074937023, + "scoreError" : 0.0029354055865175844, + "scoreConfidence" : [ + 0.10682358516285265, + 0.11269439633588782 + ], + "scorePercentiles" : { + "0.0" : 0.1083622634772715, + "50.0" : 0.10877326216063349, + "90.0" : 0.11213652715325356, + "95.0" : 0.11213652715325356, + "99.0" : 0.11213652715325356, + "99.9" : 0.11213652715325356, + "99.99" : 0.11213652715325356, + "99.999" : 0.11213652715325356, + "99.9999" : 0.11213652715325356, + "100.0" : 0.11213652715325356 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1087198346832498, + 0.10878003503752856, + 0.10877326216063349 + ], + [ + 0.1083622634772715, + 0.1084530513626948, + 0.10850256368469592 + ], + [ + 0.11213652715325356, + 0.11206634563058923, + 0.11203703355441529 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014128055259110726, + "scoreError" : 8.087257104102246E-5, + "scoreConfidence" : [ + 0.014047182688069704, + 0.014208927830151749 + ], + "scorePercentiles" : { + "0.0" : 0.014082055788219656, + "50.0" : 0.014105600604277336, + "90.0" : 0.014195984732401804, + "95.0" : 0.014195984732401804, + "99.0" : 0.014195984732401804, + "99.9" : 0.014195984732401804, + "99.99" : 0.014195984732401804, + "99.999" : 0.014195984732401804, + "99.9999" : 0.014195984732401804, + "100.0" : 0.014195984732401804 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014105600604277336, + 0.0141184486546699, + 0.014094073317858235 + ], + [ + 0.014189013595751292, + 0.014186639476405773, + 0.014195984732401804 + ], + [ + 0.014085124585726017, + 0.014082055788219656, + 0.014095556576686546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9970342546788632, + "scoreError" : 0.031274882559950624, + "scoreConfidence" : [ + 0.9657593721189126, + 1.0283091372388138 + ], + "scorePercentiles" : { + "0.0" : 0.9785777445205479, + "50.0" : 0.9917853927402559, + "90.0" : 1.0242761747234739, + "95.0" : 1.0242761747234739, + "99.0" : 1.0242761747234739, + "99.9" : 1.0242761747234739, + "99.99" : 1.0242761747234739, + "99.999" : 1.0242761747234739, + "99.9999" : 1.0242761747234739, + "100.0" : 1.0242761747234739 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9865097576205978, + 0.9917853927402559, + 0.9932157909424968 + ], + [ + 0.9813429997056226, + 0.9785777445205479, + 0.9793452711515863 + ], + [ + 1.0242761747234739, + 1.0191551771119942, + 1.0190999835931926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012983314972046862, + "scoreError" : 3.730340218479375E-4, + "scoreConfidence" : [ + 0.012610280950198925, + 0.0133563489938948 + ], + "scorePercentiles" : { + "0.0" : 0.01287018607787822, + "50.0" : 0.012931144468737782, + "90.0" : 0.013147369393458959, + "95.0" : 0.013147369393458959, + "99.0" : 0.013147369393458959, + "99.9" : 0.013147369393458959, + "99.99" : 0.013147369393458959, + "99.999" : 0.013147369393458959, + "99.9999" : 0.013147369393458959, + "100.0" : 0.013147369393458959 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012985828812216754, + 0.013147369393458959, + 0.01314403526458295 + ], + [ + 0.01287018607787822, + 0.01287646012525881, + 0.012876010158885483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6827545858911104, + "scoreError" : 0.07051273227895546, + "scoreConfidence" : [ + 3.6122418536121548, + 3.753267318170066 + ], + "scorePercentiles" : { + "0.0" : 3.65348649963477, + "50.0" : 3.688918918141593, + "90.0" : 3.7191890639405205, + "95.0" : 3.7191890639405205, + "99.0" : 3.7191890639405205, + "99.9" : 3.7191890639405205, + "99.99" : 3.7191890639405205, + "99.999" : 3.7191890639405205, + "99.9999" : 3.7191890639405205, + "100.0" : 3.7191890639405205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.65348649963477, + 3.7191890639405205, + 3.6892335759587023 + ], + [ + 3.6541501081081083, + 3.6918640073800737, + 3.688604260324484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8694381513107627, + "scoreError" : 0.023123051355761273, + "scoreConfidence" : [ + 2.8463150999550013, + 2.892561202666524 + ], + "scorePercentiles" : { + "0.0" : 2.852911375641757, + "50.0" : 2.8660179925501432, + "90.0" : 2.8887154581166956, + "95.0" : 2.8887154581166956, + "99.0" : 2.8887154581166956, + "99.9" : 2.8887154581166956, + "99.99" : 2.8887154581166956, + "99.999" : 2.8887154581166956, + "99.9999" : 2.8887154581166956, + "100.0" : 2.8887154581166956 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.864341072737686, + 2.8660179925501432, + 2.867773817373853 + ], + [ + 2.8834204978379936, + 2.8887154581166956, + 2.887454 + ], + [ + 2.852911375641757, + 2.8551937819012276, + 2.859115365637507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.70391768075, + "scoreError" : 1.8962065515193804, + "scoreConfidence" : [ + 4.807711129230619, + 8.60012423226938 + ], + "scorePercentiles" : { + "0.0" : 6.3129306365, + "50.0" : 6.7690040645, + "90.0" : 6.9647319575, + "95.0" : 6.9647319575, + "99.0" : 6.9647319575, + "99.9" : 6.9647319575, + "99.99" : 6.9647319575, + "99.999" : 6.9647319575, + "99.9999" : 6.9647319575, + "100.0" : 6.9647319575 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.3129306365, + 6.648684114 + ], + [ + 6.9647319575, + 6.889324015 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17754228237968872, + "scoreError" : 0.008502560694812967, + "scoreConfidence" : [ + 0.16903972168487574, + 0.1860448430745017 + ], + "scorePercentiles" : { + "0.0" : 0.17062550560494122, + "50.0" : 0.17872643084374384, + "90.0" : 0.1828380300215746, + "95.0" : 0.1828380300215746, + "99.0" : 0.1828380300215746, + "99.9" : 0.1828380300215746, + "99.99" : 0.1828380300215746, + "99.999" : 0.1828380300215746, + "99.9999" : 0.1828380300215746, + "100.0" : 0.1828380300215746 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1719386091778137, + 0.17092676679314942, + 0.17062550560494122 + ], + [ + 0.17949860819931074, + 0.17848043631982866, + 0.17872643084374384 + ], + [ + 0.1828380300215746, + 0.182442258004488, + 0.1824038964523484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32224014139830565, + "scoreError" : 0.004596910300809624, + "scoreConfidence" : [ + 0.31764323109749604, + 0.32683705169911526 + ], + "scorePercentiles" : { + "0.0" : 0.3191069485927628, + "50.0" : 0.32138266718087155, + "90.0" : 0.3259481202372804, + "95.0" : 0.3259481202372804, + "99.0" : 0.3259481202372804, + "99.9" : 0.3259481202372804, + "99.99" : 0.3259481202372804, + "99.999" : 0.3259481202372804, + "99.9999" : 0.3259481202372804, + "100.0" : 0.3259481202372804 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3259481202372804, + 0.32543529490058254, + 0.3256288955097522 + ], + [ + 0.3213605381921013, + 0.32138266718087155, + 0.3217476355007883 + ], + [ + 0.32037035928239627, + 0.3191069485927628, + 0.3191808131882161 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15612223042893858, + "scoreError" : 0.005980633317742678, + "scoreConfidence" : [ + 0.1501415971111959, + 0.16210286374668126 + ], + "scorePercentiles" : { + "0.0" : 0.1530403684556877, + "50.0" : 0.15430316457590768, + "90.0" : 0.16088386566491844, + "95.0" : 0.16088386566491844, + "99.0" : 0.16088386566491844, + "99.9" : 0.16088386566491844, + "99.99" : 0.16088386566491844, + "99.999" : 0.16088386566491844, + "99.9999" : 0.16088386566491844, + "100.0" : 0.16088386566491844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1533851910363974, + 0.15304628414012642, + 0.1530403684556877 + ], + [ + 0.15468841272738523, + 0.15430316457590768, + 0.15421340170557937 + ], + [ + 0.16088386566491844, + 0.16078554757540678, + 0.16075383797903806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.393413232056684, + "scoreError" : 0.004527827006908674, + "scoreConfidence" : [ + 0.3888854050497753, + 0.3979410590635927 + ], + "scorePercentiles" : { + "0.0" : 0.3902681086091164, + "50.0" : 0.39370936917322835, + "90.0" : 0.39860254930644134, + "95.0" : 0.39860254930644134, + "99.0" : 0.39860254930644134, + "99.9" : 0.39860254930644134, + "99.99" : 0.39860254930644134, + "99.999" : 0.39860254930644134, + "99.9999" : 0.39860254930644134, + "100.0" : 0.39860254930644134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39465405726350683, + 0.3911542951185168, + 0.3902681086091164 + ], + [ + 0.39860254930644134, + 0.39370936917322835, + 0.3938205744102706 + ], + [ + 0.39575615493292177, + 0.3919160631760464, + 0.39083791652010785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15501029522453952, + "scoreError" : 0.0021873575353937, + "scoreConfidence" : [ + 0.15282293768914582, + 0.15719765275993322 + ], + "scorePercentiles" : { + "0.0" : 0.1536603057160418, + "50.0" : 0.15459063514098442, + "90.0" : 0.15703186355856352, + "95.0" : 0.15703186355856352, + "99.0" : 0.15703186355856352, + "99.9" : 0.15703186355856352, + "99.99" : 0.15703186355856352, + "99.999" : 0.15703186355856352, + "99.9999" : 0.15703186355856352, + "100.0" : 0.15703186355856352 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1548037081688571, + 0.15456499871713628, + 0.15459063514098442 + ], + [ + 0.1536603057160418, + 0.15379269200602855, + 0.15377065729706457 + ], + [ + 0.15703186355856352, + 0.15669110261512667, + 0.15618669380105268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04687822373703285, + "scoreError" : 9.797440939483914E-4, + "scoreConfidence" : [ + 0.04589847964308446, + 0.047857967830981236 + ], + "scorePercentiles" : { + "0.0" : 0.04621952806869968, + "50.0" : 0.046888065520426486, + "90.0" : 0.04793403680305238, + "95.0" : 0.04793403680305238, + "99.0" : 0.04793403680305238, + "99.9" : 0.04793403680305238, + "99.99" : 0.04793403680305238, + "99.999" : 0.04793403680305238, + "99.9999" : 0.04793403680305238, + "100.0" : 0.04793403680305238 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047467820237145894, + 0.047150842778267615, + 0.04670665154947339 + ], + [ + 0.04621952806869968, + 0.0462897520853199, + 0.046274813399166136 + ], + [ + 0.04793403680305238, + 0.04697250319174421, + 0.046888065520426486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9477655.523819288, + "scoreError" : 544059.9695304473, + "scoreConfidence" : [ + 8933595.554288842, + 1.0021715493349735E7 + ], + "scorePercentiles" : { + "0.0" : 9034804.157181572, + "50.0" : 9626351.183830606, + "90.0" : 9762268.607804878, + "95.0" : 9762268.607804878, + "99.0" : 9762268.607804878, + "99.9" : 9762268.607804878, + "99.99" : 9762268.607804878, + "99.999" : 9762268.607804878, + "99.9999" : 9762268.607804878, + "100.0" : 9762268.607804878 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9618111.770192308, + 9640038.421001926, + 9626351.183830606 + ], + [ + 9088065.289736602, + 9034804.157181572, + 9034914.014453478 + ], + [ + 9738151.803310614, + 9762268.607804878, + 9756194.466861598 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-22T04:32:54Z-272f8fadca51f8aa3326d5c4b0ac084a5edb47bb-jdk17.json b/performance-results/2025-04-22T04:32:54Z-272f8fadca51f8aa3326d5c4b0ac084a5edb47bb-jdk17.json new file mode 100644 index 0000000000..ef100b3a44 --- /dev/null +++ b/performance-results/2025-04-22T04:32:54Z-272f8fadca51f8aa3326d5c4b0ac084a5edb47bb-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.411508827731021, + "scoreError" : 0.030213327558698464, + "scoreConfidence" : [ + 3.3812955001723224, + 3.4417221552897197 + ], + "scorePercentiles" : { + "0.0" : 3.4061824009040715, + "50.0" : 3.4112169971781476, + "90.0" : 3.4174189156637165, + "95.0" : 3.4174189156637165, + "99.0" : 3.4174189156637165, + "99.9" : 3.4174189156637165, + "99.99" : 3.4174189156637165, + "99.999" : 3.4174189156637165, + "99.9999" : 3.4174189156637165, + "100.0" : 3.4174189156637165 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4101894039519682, + 3.412244590404327 + ], + [ + 3.4061824009040715, + 3.4174189156637165 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.720005413136225, + "scoreError" : 0.034745361123641065, + "scoreConfidence" : [ + 1.685260052012584, + 1.754750774259866 + ], + "scorePercentiles" : { + "0.0" : 1.7143138577681474, + "50.0" : 1.7204895506884859, + "90.0" : 1.7247286933997816, + "95.0" : 1.7247286933997816, + "99.0" : 1.7247286933997816, + "99.9" : 1.7247286933997816, + "99.99" : 1.7247286933997816, + "99.999" : 1.7247286933997816, + "99.9999" : 1.7247286933997816, + "100.0" : 1.7247286933997816 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7247286933997816, + 1.7244619969213304 + ], + [ + 1.7143138577681474, + 1.7165171044556413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866975573429833, + "scoreError" : 0.0020841011913773967, + "scoreConfidence" : [ + 0.8648914722384556, + 0.8690596746212104 + ], + "scorePercentiles" : { + "0.0" : 0.8666430380743453, + "50.0" : 0.8669698187580581, + "90.0" : 0.8673196181288707, + "95.0" : 0.8673196181288707, + "99.0" : 0.8673196181288707, + "99.9" : 0.8673196181288707, + "99.99" : 0.8673196181288707, + "99.999" : 0.8673196181288707, + "99.9999" : 0.8673196181288707, + "100.0" : 0.8673196181288707 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.867173581893368, + 0.8666430380743453 + ], + [ + 0.8667660556227481, + 0.8673196181288707 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.856005974922722, + "scoreError" : 0.26661275625263864, + "scoreConfidence" : [ + 15.589393218670082, + 16.12261873117536 + ], + "scorePercentiles" : { + "0.0" : 15.598142992517541, + "50.0" : 15.919151747196164, + "90.0" : 16.065181238820553, + "95.0" : 16.065181238820553, + "99.0" : 16.065181238820553, + "99.9" : 16.065181238820553, + "99.99" : 16.065181238820553, + "99.999" : 16.065181238820553, + "99.9999" : 16.065181238820553, + "100.0" : 16.065181238820553 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.598142992517541, + 15.66755920214911, + 15.739502107240005 + ], + [ + 15.919151747196164, + 16.065181238820553, + 15.98829123768365 + ], + [ + 15.822472744988458, + 15.97478762638086, + 15.928964877328136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2579.106020769643, + "scoreError" : 67.64773074522886, + "scoreConfidence" : [ + 2511.458290024414, + 2646.7537515148715 + ], + "scorePercentiles" : { + "0.0" : 2500.548553474408, + "50.0" : 2564.2726183742325, + "90.0" : 2627.6694932706714, + "95.0" : 2627.6694932706714, + "99.0" : 2627.6694932706714, + "99.9" : 2627.6694932706714, + "99.99" : 2627.6694932706714, + "99.999" : 2627.6694932706714, + "99.9999" : 2627.6694932706714, + "100.0" : 2627.6694932706714 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2561.3449801962197, + 2627.6694932706714, + 2618.0060817274602 + ], + [ + 2500.548553474408, + 2564.2726183742325, + 2558.7182958058543 + ], + [ + 2564.232249758729, + 2610.9890352278353, + 2606.1728790913776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69703.31262097623, + "scoreError" : 1447.445227023106, + "scoreConfidence" : [ + 68255.86739395311, + 71150.75784799934 + ], + "scorePercentiles" : { + "0.0" : 68231.38188526178, + "50.0" : 69880.69550620578, + "90.0" : 70764.91160314676, + "95.0" : 70764.91160314676, + "99.0" : 70764.91160314676, + "99.9" : 70764.91160314676, + "99.99" : 70764.91160314676, + "99.999" : 70764.91160314676, + "99.9999" : 70764.91160314676, + "100.0" : 70764.91160314676 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68231.38188526178, + 68911.39555593283, + 68864.67850636363 + ], + [ + 69880.69550620578, + 70553.9506376975, + 70764.91160314676 + ], + [ + 69676.77202395037, + 70310.94869612648, + 70135.07917410089 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 345.5745863682407, + "scoreError" : 11.564283964888611, + "scoreConfidence" : [ + 334.0103024033521, + 357.1388703331293 + ], + "scorePercentiles" : { + "0.0" : 334.2841358777637, + "50.0" : 346.53244419306947, + "90.0" : 356.34001906629067, + "95.0" : 356.34001906629067, + "99.0" : 356.34001906629067, + "99.9" : 356.34001906629067, + "99.99" : 356.34001906629067, + "99.999" : 356.34001906629067, + "99.9999" : 356.34001906629067, + "100.0" : 356.34001906629067 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.84768017790077, + 346.53244419306947, + 343.0863459525297 + ], + [ + 334.2841358777637, + 338.90512208767007, + 341.63052222490154 + ], + [ + 350.3248190676912, + 356.34001906629067, + 352.22018866634915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.15310942521226972, + "scoreError" : 0.03253727756821339, + "scoreConfidence" : [ + 0.12057214764405633, + 0.18564670278048312 + ], + "scorePercentiles" : { + "0.0" : 0.14717731435109477, + "50.0" : 0.1537725239575156, + "90.0" : 0.15771533858295295, + "95.0" : 0.15771533858295295, + "99.0" : 0.15771533858295295, + "99.9" : 0.15771533858295295, + "99.99" : 0.15771533858295295, + "99.999" : 0.15771533858295295, + "99.9999" : 0.15771533858295295, + "100.0" : 0.15771533858295295 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.15683645340401753, + 0.14717731435109477 + ], + [ + 0.15771533858295295, + 0.15070859451101365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.57680581481428, + "scoreError" : 3.272354582677361, + "scoreConfidence" : [ + 102.30445123213691, + 108.84916039749164 + ], + "scorePercentiles" : { + "0.0" : 102.24768818091964, + "50.0" : 106.5890315303227, + "90.0" : 107.5626320317188, + "95.0" : 107.5626320317188, + "99.0" : 107.5626320317188, + "99.9" : 107.5626320317188, + "99.99" : 107.5626320317188, + "99.999" : 107.5626320317188, + "99.9999" : 107.5626320317188, + "100.0" : 107.5626320317188 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.55943835700468, + 106.84147429173929, + 106.86030739066761 + ], + [ + 105.0767546261267, + 106.5890315303227, + 107.5626320317188 + ], + [ + 102.24768818091964, + 103.64327875935324, + 103.81064716547591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06301105905670507, + "scoreError" : 6.387046483196352E-4, + "scoreConfidence" : [ + 0.06237235440838543, + 0.0636497637050247 + ], + "scorePercentiles" : { + "0.0" : 0.06242052996766663, + "50.0" : 0.06310440314886098, + "90.0" : 0.06351396995833546, + "95.0" : 0.06351396995833546, + "99.0" : 0.06351396995833546, + "99.9" : 0.06351396995833546, + "99.99" : 0.06351396995833546, + "99.999" : 0.06351396995833546, + "99.9999" : 0.06351396995833546, + "100.0" : 0.06351396995833546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06297622236006852, + 0.06273290029358627, + 0.06322835851263602 + ], + [ + 0.06310440314886098, + 0.06351396995833546, + 0.06344674994765727 + ], + [ + 0.0625466905111863, + 0.06242052996766663, + 0.06312970681034809 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.735335691923649E-4, + "scoreError" : 1.6196603923288733E-5, + "scoreConfidence" : [ + 3.573369652690762E-4, + 3.897301731156536E-4 + ], + "scorePercentiles" : { + "0.0" : 3.614343273715042E-4, + "50.0" : 3.723071156880851E-4, + "90.0" : 3.8694067340423787E-4, + "95.0" : 3.8694067340423787E-4, + "99.0" : 3.8694067340423787E-4, + "99.9" : 3.8694067340423787E-4, + "99.99" : 3.8694067340423787E-4, + "99.999" : 3.8694067340423787E-4, + "99.9999" : 3.8694067340423787E-4, + "100.0" : 3.8694067340423787E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.723071156880851E-4, + 3.623620998277894E-4, + 3.748522363900488E-4 + ], + [ + 3.662285296046896E-4, + 3.614343273715042E-4, + 3.698457582756536E-4 + ], + [ + 3.821194029394492E-4, + 3.857119792298262E-4, + 3.8694067340423787E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11335710020511125, + "scoreError" : 0.0021026383922769253, + "scoreConfidence" : [ + 0.11125446181283433, + 0.11545973859738817 + ], + "scorePercentiles" : { + "0.0" : 0.11157325753941247, + "50.0" : 0.11371136744974074, + "90.0" : 0.11549547044556857, + "95.0" : 0.11549547044556857, + "99.0" : 0.11549547044556857, + "99.9" : 0.11549547044556857, + "99.99" : 0.11549547044556857, + "99.999" : 0.11549547044556857, + "99.9999" : 0.11549547044556857, + "100.0" : 0.11549547044556857 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11549547044556857, + 0.11357431645655877, + 0.11404134308750243 + ], + [ + 0.11371136744974074, + 0.11386642068227364, + 0.11390656537537161 + ], + [ + 0.11207797028859624, + 0.11196719052097678, + 0.11157325753941247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014587977259907502, + "scoreError" : 7.03320283756346E-4, + "scoreConfidence" : [ + 0.013884656976151155, + 0.015291297543663849 + ], + "scorePercentiles" : { + "0.0" : 0.014018041347117574, + "50.0" : 0.014854092140208905, + "90.0" : 0.014921084238907431, + "95.0" : 0.014921084238907431, + "99.0" : 0.014921084238907431, + "99.9" : 0.014921084238907431, + "99.99" : 0.014921084238907431, + "99.999" : 0.014921084238907431, + "99.9999" : 0.014921084238907431, + "100.0" : 0.014921084238907431 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014921084238907431, + 0.014868450753374349, + 0.014854092140208905 + ], + [ + 0.014866522735111349, + 0.014863613958528105, + 0.01482507056491664 + ], + [ + 0.014047071111011222, + 0.014027848489991963, + 0.014018041347117574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9784612617260944, + "scoreError" : 0.014814361909358828, + "scoreConfidence" : [ + 0.9636468998167356, + 0.9932756236354532 + ], + "scorePercentiles" : { + "0.0" : 0.9603574932296168, + "50.0" : 0.9792126939195144, + "90.0" : 0.992761241909867, + "95.0" : 0.992761241909867, + "99.0" : 0.992761241909867, + "99.9" : 0.992761241909867, + "99.99" : 0.992761241909867, + "99.999" : 0.992761241909867, + "99.9999" : 0.992761241909867, + "100.0" : 0.992761241909867 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9762199439672004, + 0.9796988307210032, + 0.992761241909867 + ], + [ + 0.9729139751921393, + 0.9603574932296168, + 0.9820079668106835 + ], + [ + 0.9847064571681764, + 0.9782727526166487, + 0.9792126939195144 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.0132593199275848, + "scoreError" : 4.787815168122398E-4, + "scoreConfidence" : [ + 0.01278053841077256, + 0.013738101444397039 + ], + "scorePercentiles" : { + "0.0" : 0.013089428605460252, + "50.0" : 0.013258935765416199, + "90.0" : 0.013465418332969777, + "95.0" : 0.013465418332969777, + "99.0" : 0.013465418332969777, + "99.9" : 0.013465418332969777, + "99.99" : 0.013465418332969777, + "99.999" : 0.013465418332969777, + "99.9999" : 0.013465418332969777, + "100.0" : 0.013465418332969777 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013381347668888812, + 0.013465418332969777, + 0.013389621299192356 + ], + [ + 0.01309357979705401, + 0.013136523861943583, + 0.013089428605460252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.781118089989578, + "scoreError" : 0.11546829612131464, + "scoreConfidence" : [ + 3.6656497938682637, + 3.8965863861108927 + ], + "scorePercentiles" : { + "0.0" : 3.730160135719612, + "50.0" : 3.777153663921011, + "90.0" : 3.828048441469013, + "95.0" : 3.828048441469013, + "99.0" : 3.828048441469013, + "99.9" : 3.828048441469013, + "99.99" : 3.828048441469013, + "99.999" : 3.828048441469013, + "99.9999" : 3.828048441469013, + "100.0" : 3.828048441469013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8268429143075746, + 3.7627296576373213, + 3.7915776702047004 + ], + [ + 3.7473497205992508, + 3.828048441469013, + 3.730160135719612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.863423200853669, + "scoreError" : 0.11143098750712782, + "scoreConfidence" : [ + 2.751992213346541, + 2.974854188360797 + ], + "scorePercentiles" : { + "0.0" : 2.781810797774687, + "50.0" : 2.878338304172662, + "90.0" : 2.968725054021965, + "95.0" : 2.968725054021965, + "99.0" : 2.968725054021965, + "99.9" : 2.968725054021965, + "99.99" : 2.968725054021965, + "99.999" : 2.968725054021965, + "99.9999" : 2.968725054021965, + "100.0" : 2.968725054021965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7881445059938668, + 2.781810797774687, + 2.78970139804742 + ], + [ + 2.968725054021965, + 2.9061028076699595, + 2.9218728875255624 + ], + [ + 2.8477734137243735, + 2.8883396387525266, + 2.878338304172662 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.41013333675, + "scoreError" : 1.915660838419777, + "scoreConfidence" : [ + 4.494472498330223, + 8.325794175169777 + ], + "scorePercentiles" : { + "0.0" : 6.057172863, + "50.0" : 6.40351615475, + "90.0" : 6.7763281745, + "95.0" : 6.7763281745, + "99.0" : 6.7763281745, + "99.9" : 6.7763281745, + "99.99" : 6.7763281745, + "99.999" : 6.7763281745, + "99.9999" : 6.7763281745, + "100.0" : 6.7763281745 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.057172863, + 6.354111661 + ], + [ + 6.4529206485, + 6.7763281745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17529859417750462, + "scoreError" : 0.005318291129688179, + "scoreConfidence" : [ + 0.16998030304781644, + 0.1806168853071928 + ], + "scorePercentiles" : { + "0.0" : 0.17090243717742762, + "50.0" : 0.17613550783781878, + "90.0" : 0.17873346857071365, + "95.0" : 0.17873346857071365, + "99.0" : 0.17873346857071365, + "99.9" : 0.17873346857071365, + "99.99" : 0.17873346857071365, + "99.999" : 0.17873346857071365, + "99.9999" : 0.17873346857071365, + "100.0" : 0.17873346857071365 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17090243717742762, + 0.17160361484341485, + 0.17137066662096856 + ], + [ + 0.17613550783781878, + 0.17644555178558827, + 0.1760570273938839 + ], + [ + 0.17858570977016625, + 0.17873346857071365, + 0.1778533635975599 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32264458916713745, + "scoreError" : 0.006465841522527593, + "scoreConfidence" : [ + 0.31617874764460985, + 0.32911043068966506 + ], + "scorePercentiles" : { + "0.0" : 0.3175302044198895, + "50.0" : 0.3219793051933417, + "90.0" : 0.32815969593752053, + "95.0" : 0.32815969593752053, + "99.0" : 0.32815969593752053, + "99.9" : 0.32815969593752053, + "99.99" : 0.32815969593752053, + "99.999" : 0.32815969593752053, + "99.9999" : 0.32815969593752053, + "100.0" : 0.32815969593752053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32696304283145333, + 0.3264260142969056, + 0.32815969593752053 + ], + [ + 0.32122287761788515, + 0.3175302044198895, + 0.3176074453407864 + ], + [ + 0.3222151502126563, + 0.3219793051933417, + 0.3216975666537991 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16897623175359444, + "scoreError" : 0.004650547695083193, + "scoreConfidence" : [ + 0.16432568405851125, + 0.17362677944867763 + ], + "scorePercentiles" : { + "0.0" : 0.16618179073400136, + "50.0" : 0.16771365981853859, + "90.0" : 0.1739875364058667, + "95.0" : 0.1739875364058667, + "99.0" : 0.1739875364058667, + "99.9" : 0.1739875364058667, + "99.99" : 0.1739875364058667, + "99.999" : 0.1739875364058667, + "99.9999" : 0.1739875364058667, + "100.0" : 0.1739875364058667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16618179073400136, + 0.1672907168141593, + 0.16630812055345828 + ], + [ + 0.16870615775355963, + 0.16771365981853859, + 0.1673853330376272 + ], + [ + 0.1739875364058667, + 0.17202811050902272, + 0.17118466015611628 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.391812188514016, + "scoreError" : 0.005448214863811001, + "scoreConfidence" : [ + 0.38636397365020503, + 0.397260403377827 + ], + "scorePercentiles" : { + "0.0" : 0.38840035872140444, + "50.0" : 0.3908021093438587, + "90.0" : 0.3996945747402078, + "95.0" : 0.3996945747402078, + "99.0" : 0.3996945747402078, + "99.9" : 0.3996945747402078, + "99.99" : 0.3996945747402078, + "99.999" : 0.3996945747402078, + "99.9999" : 0.3996945747402078, + "100.0" : 0.3996945747402078 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3996945747402078, + 0.389835481698047, + 0.38840035872140444 + ], + [ + 0.39140606367906067, + 0.3905072100823929, + 0.39039653146470954 + ], + [ + 0.3923420294244576, + 0.39292533747200503, + 0.3908021093438587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15680871939905913, + "scoreError" : 0.004531254031304196, + "scoreConfidence" : [ + 0.15227746536775494, + 0.16133997343036333 + ], + "scorePercentiles" : { + "0.0" : 0.15313347595859367, + "50.0" : 0.15773371872239747, + "90.0" : 0.15986266637359123, + "95.0" : 0.15986266637359123, + "99.0" : 0.15986266637359123, + "99.9" : 0.15986266637359123, + "99.99" : 0.15986266637359123, + "99.999" : 0.15986266637359123, + "99.9999" : 0.15986266637359123, + "100.0" : 0.15986266637359123 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15377808679071198, + 0.15321041517672473, + 0.15313347595859367 + ], + [ + 0.15773371872239747, + 0.1574786911750811, + 0.15780160703465254 + ], + [ + 0.15899469257675247, + 0.15928512078302698, + 0.15986266637359123 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047663043539003226, + "scoreError" : 5.663575331487285E-4, + "scoreConfidence" : [ + 0.047096686005854496, + 0.048229401072151956 + ], + "scorePercentiles" : { + "0.0" : 0.04716799802368745, + "50.0" : 0.047764543625186874, + "90.0" : 0.048215253792079305, + "95.0" : 0.048215253792079305, + "99.0" : 0.048215253792079305, + "99.9" : 0.048215253792079305, + "99.99" : 0.048215253792079305, + "99.999" : 0.048215253792079305, + "99.9999" : 0.048215253792079305, + "100.0" : 0.048215253792079305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04759558798416037, + 0.04791369522116601, + 0.04778025055185529 + ], + [ + 0.04716799802368745, + 0.047203957465187636, + 0.04749492648371899 + ], + [ + 0.048215253792079305, + 0.04783117870398714, + 0.047764543625186874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9364493.000768173, + "scoreError" : 141997.80451701072, + "scoreConfidence" : [ + 9222495.196251163, + 9506490.805285184 + ], + "scorePercentiles" : { + "0.0" : 9215742.624309393, + "50.0" : 9391256.443192488, + "90.0" : 9479963.022748815, + "95.0" : 9479963.022748815, + "99.0" : 9479963.022748815, + "99.9" : 9479963.022748815, + "99.99" : 9479963.022748815, + "99.999" : 9479963.022748815, + "99.9999" : 9479963.022748815, + "100.0" : 9479963.022748815 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9275980.784986097, + 9331616.729477612, + 9215742.624309393 + ], + [ + 9424516.342749529, + 9323990.641192917, + 9397302.329577465 + ], + [ + 9440068.088679245, + 9479963.022748815, + 9391256.443192488 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-23T00:49:24Z-bf9bad8f21689a23555ef1806c93d019400a0a9b-jdk17.json b/performance-results/2025-04-23T00:49:24Z-bf9bad8f21689a23555ef1806c93d019400a0a9b-jdk17.json new file mode 100644 index 0000000000..955292d09e --- /dev/null +++ b/performance-results/2025-04-23T00:49:24Z-bf9bad8f21689a23555ef1806c93d019400a0a9b-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4205893702481136, + "scoreError" : 0.01382351128766436, + "scoreConfidence" : [ + 3.406765858960449, + 3.434412881535778 + ], + "scorePercentiles" : { + "0.0" : 3.4182941455648703, + "50.0" : 3.420314806038646, + "90.0" : 3.4234337233502927, + "95.0" : 3.4234337233502927, + "99.0" : 3.4234337233502927, + "99.9" : 3.4234337233502927, + "99.99" : 3.4234337233502927, + "99.999" : 3.4234337233502927, + "99.9999" : 3.4234337233502927, + "100.0" : 3.4234337233502927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4206460198237965, + 3.419983592253495 + ], + [ + 3.4182941455648703, + 3.4234337233502927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7265276361612134, + "scoreError" : 0.013245005178981263, + "scoreConfidence" : [ + 1.7132826309822322, + 1.7397726413401946 + ], + "scorePercentiles" : { + "0.0" : 1.724124306654102, + "50.0" : 1.7264632848734682, + "90.0" : 1.7290596682438153, + "95.0" : 1.7290596682438153, + "99.0" : 1.7290596682438153, + "99.9" : 1.7290596682438153, + "99.99" : 1.7290596682438153, + "99.999" : 1.7290596682438153, + "99.9999" : 1.7290596682438153, + "100.0" : 1.7290596682438153 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724124306654102, + 1.7269150000836886 + ], + [ + 1.726011569663248, + 1.7290596682438153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675463416255575, + "scoreError" : 0.002018744231309582, + "scoreConfidence" : [ + 0.865527597394248, + 0.8695650858568671 + ], + "scorePercentiles" : { + "0.0" : 0.8670811628122921, + "50.0" : 0.8676780221186478, + "90.0" : 0.8677481594526426, + "95.0" : 0.8677481594526426, + "99.0" : 0.8677481594526426, + "99.9" : 0.8677481594526426, + "99.99" : 0.8677481594526426, + "99.999" : 0.8677481594526426, + "99.9999" : 0.8677481594526426, + "100.0" : 0.8677481594526426 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8670811628122921, + 0.8677481594526426 + ], + [ + 0.8676558246425776, + 0.8677002195947178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.075547315684123, + "scoreError" : 0.209773702890232, + "scoreConfidence" : [ + 15.865773612793891, + 16.285321018574354 + ], + "scorePercentiles" : { + "0.0" : 15.877970985673285, + "50.0" : 16.05931300214754, + "90.0" : 16.238195577355878, + "95.0" : 16.238195577355878, + "99.0" : 16.238195577355878, + "99.9" : 16.238195577355878, + "99.99" : 16.238195577355878, + "99.999" : 16.238195577355878, + "99.9999" : 16.238195577355878, + "100.0" : 16.238195577355878 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.17066503700288, + 16.21173765355542, + 16.238195577355878 + ], + [ + 16.05931300214754, + 15.904856129250485, + 16.0567847106306 + ], + [ + 16.05032067145426, + 15.877970985673285, + 16.11008207408676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2655.7241844538175, + "scoreError" : 55.56426813498251, + "scoreConfidence" : [ + 2600.159916318835, + 2711.2884525888003 + ], + "scorePercentiles" : { + "0.0" : 2613.5754422912505, + "50.0" : 2655.069882819036, + "90.0" : 2704.789431396354, + "95.0" : 2704.789431396354, + "99.0" : 2704.789431396354, + "99.9" : 2704.789431396354, + "99.99" : 2704.789431396354, + "99.999" : 2704.789431396354, + "99.9999" : 2704.789431396354, + "100.0" : 2704.789431396354 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2671.9406398492306, + 2655.069882819036, + 2646.2610242555397 + ], + [ + 2627.632568191786, + 2614.3519177273197, + 2613.5754422912505 + ], + [ + 2691.553855851885, + 2676.342897701956, + 2704.789431396354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70327.00946893464, + "scoreError" : 2306.580210576427, + "scoreConfidence" : [ + 68020.42925835821, + 72633.58967951107 + ], + "scorePercentiles" : { + "0.0" : 68357.78337117803, + "50.0" : 71109.22452456043, + "90.0" : 71505.52857642435, + "95.0" : 71505.52857642435, + "99.0" : 71505.52857642435, + "99.9" : 71505.52857642435, + "99.99" : 71505.52857642435, + "99.999" : 71505.52857642435, + "99.9999" : 71505.52857642435, + "100.0" : 71505.52857642435 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71505.52857642435, + 71223.83896056406, + 71382.35212755966 + ], + [ + 68700.28829922371, + 68472.30883670754, + 68357.78337117803 + ], + [ + 71156.33709421569, + 71035.42342997841, + 71109.22452456043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.64800422174386, + "scoreError" : 12.515035255034533, + "scoreConfidence" : [ + 336.1329689667093, + 361.1630394767784 + ], + "scorePercentiles" : { + "0.0" : 337.7681134065756, + "50.0" : 352.6197424066732, + "90.0" : 355.45009928473166, + "95.0" : 355.45009928473166, + "99.0" : 355.45009928473166, + "99.9" : 355.45009928473166, + "99.99" : 355.45009928473166, + "99.999" : 355.45009928473166, + "99.9999" : 355.45009928473166, + "100.0" : 355.45009928473166 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 337.7681134065756, + 339.1068829454776, + 339.60445130277304 + ], + [ + 352.7746231927581, + 354.3589232451558, + 352.6197424066732 + ], + [ + 352.16507078918585, + 353.98413142236456, + 355.45009928473166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.15587855645595167, + "scoreError" : 0.03414492885084999, + "scoreConfidence" : [ + 0.12173362760510167, + 0.19002348530680166 + ], + "scorePercentiles" : { + "0.0" : 0.15134710597340245, + "50.0" : 0.1548200624676393, + "90.0" : 0.16252699491512568, + "95.0" : 0.16252699491512568, + "99.0" : 0.16252699491512568, + "99.9" : 0.16252699491512568, + "99.99" : 0.16252699491512568, + "99.999" : 0.16252699491512568, + "99.9999" : 0.16252699491512568, + "100.0" : 0.16252699491512568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16252699491512568, + 0.15192314351099073 + ], + [ + 0.15771698142428783, + 0.15134710597340245 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.39274397832948, + "scoreError" : 2.9974808306516856, + "scoreConfidence" : [ + 104.3952631476778, + 110.39022480898116 + ], + "scorePercentiles" : { + "0.0" : 104.48007009229367, + "50.0" : 108.52423009722895, + "90.0" : 108.78381922276925, + "95.0" : 108.78381922276925, + "99.0" : 108.78381922276925, + "99.9" : 108.78381922276925, + "99.99" : 108.78381922276925, + "99.999" : 108.78381922276925, + "99.9999" : 108.78381922276925, + "100.0" : 108.78381922276925 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.8224406591211, + 104.48007009229367, + 104.92756330913332 + ], + [ + 108.64265911069866, + 108.02180297361868, + 108.78381922276925 + ], + [ + 108.52423009722895, + 108.59003902486124, + 108.7420713152404 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061991785006931935, + "scoreError" : 0.0012685512837584997, + "scoreConfidence" : [ + 0.06072323372317343, + 0.06326033629069043 + ], + "scorePercentiles" : { + "0.0" : 0.06135991206013192, + "50.0" : 0.06155176213015566, + "90.0" : 0.06365254245886509, + "95.0" : 0.06365254245886509, + "99.0" : 0.06365254245886509, + "99.9" : 0.06365254245886509, + "99.99" : 0.06365254245886509, + "99.999" : 0.06365254245886509, + "99.9999" : 0.06365254245886509, + "100.0" : 0.06365254245886509 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061950534118856905, + 0.061550741496891735, + 0.06139477097671334 + ], + [ + 0.06238561109447522, + 0.06253784706014784, + 0.06365254245886509 + ], + [ + 0.06154234366614972, + 0.06155176213015566, + 0.06135991206013192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8081771228558044E-4, + "scoreError" : 1.643792858679272E-5, + "scoreConfidence" : [ + 3.6437978369878774E-4, + 3.9725564087237313E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7045464619358127E-4, + "50.0" : 3.7624948117687346E-4, + "90.0" : 3.944878571970986E-4, + "95.0" : 3.944878571970986E-4, + "99.0" : 3.944878571970986E-4, + "99.9" : 3.944878571970986E-4, + "99.99" : 3.944878571970986E-4, + "99.999" : 3.944878571970986E-4, + "99.9999" : 3.944878571970986E-4, + "100.0" : 3.944878571970986E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.944878571970986E-4, + 3.919362696540822E-4, + 3.941655533647635E-4 + ], + [ + 3.7436265665442977E-4, + 3.7298513771853183E-4, + 3.7045464619358127E-4 + ], + [ + 3.780605470208322E-4, + 3.7624948117687346E-4, + 3.746572615900311E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11091484657045732, + "scoreError" : 9.128674197618146E-4, + "scoreConfidence" : [ + 0.1100019791506955, + 0.11182771399021914 + ], + "scorePercentiles" : { + "0.0" : 0.11013142867998502, + "50.0" : 0.11102032203916692, + "90.0" : 0.11163326387291948, + "95.0" : 0.11163326387291948, + "99.0" : 0.11163326387291948, + "99.9" : 0.11163326387291948, + "99.99" : 0.11163326387291948, + "99.999" : 0.11163326387291948, + "99.9999" : 0.11163326387291948, + "100.0" : 0.11163326387291948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11102032203916692, + 0.11163326387291948, + 0.11124467258852191 + ], + [ + 0.11096545994229916, + 0.11138952852066787, + 0.11125633156067821 + ], + [ + 0.11027027014599507, + 0.11013142867998502, + 0.11032234178388217 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014500064500003308, + "scoreError" : 5.474910588268142E-4, + "scoreConfidence" : [ + 0.013952573441176494, + 0.015047555558830122 + ], + "scorePercentiles" : { + "0.0" : 0.014100616836200891, + "50.0" : 0.014552634945166247, + "90.0" : 0.014885838570856536, + "95.0" : 0.014885838570856536, + "99.0" : 0.014885838570856536, + "99.9" : 0.014885838570856536, + "99.99" : 0.014885838570856536, + "99.999" : 0.014885838570856536, + "99.9999" : 0.014885838570856536, + "100.0" : 0.014885838570856536 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014100616836200891, + 0.014103064751965589, + 0.014109256066899561 + ], + [ + 0.014822423103717121, + 0.014843942695685217, + 0.014885838570856536 + ], + [ + 0.014552634945166247, + 0.01457390523721665, + 0.014508898292321978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9887449224129087, + "scoreError" : 0.012029876683904718, + "scoreConfidence" : [ + 0.9767150457290039, + 1.0007747990968134 + ], + "scorePercentiles" : { + "0.0" : 0.9755059465470152, + "50.0" : 0.9878300698340576, + "90.0" : 1.0010541571571572, + "95.0" : 1.0010541571571572, + "99.0" : 1.0010541571571572, + "99.9" : 1.0010541571571572, + "99.99" : 1.0010541571571572, + "99.999" : 1.0010541571571572, + "99.9999" : 1.0010541571571572, + "100.0" : 1.0010541571571572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9926866897955132, + 0.9916920194367315, + 1.0010541571571572 + ], + [ + 0.9932946465037743, + 0.9878300698340576, + 0.9755059465470152 + ], + [ + 0.9875628668904908, + 0.9851136687352245, + 0.9839642368162141 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013171633246078888, + "scoreError" : 2.2692635880550694E-4, + "scoreConfidence" : [ + 0.012944706887273382, + 0.013398559604884395 + ], + "scorePercentiles" : { + "0.0" : 0.013104580251864083, + "50.0" : 0.013157317702907364, + "90.0" : 0.013325825881280631, + "95.0" : 0.013325825881280631, + "99.0" : 0.013325825881280631, + "99.9" : 0.013325825881280631, + "99.99" : 0.013325825881280631, + "99.999" : 0.013325825881280631, + "99.9999" : 0.013325825881280631, + "100.0" : 0.013325825881280631 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013104580251864083, + 0.013325825881280631, + 0.013175213130088799 + ], + [ + 0.013147457724184354, + 0.01310954480742508, + 0.013167177681630374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.795605233896595, + "scoreError" : 0.1206947553325696, + "scoreConfidence" : [ + 3.6749104785640254, + 3.916299989229165 + ], + "scorePercentiles" : { + "0.0" : 3.7521398514628657, + "50.0" : 3.791028892428754, + "90.0" : 3.874325894655306, + "95.0" : 3.874325894655306, + "99.0" : 3.874325894655306, + "99.9" : 3.874325894655306, + "99.99" : 3.874325894655306, + "99.999" : 3.874325894655306, + "99.9999" : 3.874325894655306, + "100.0" : 3.874325894655306 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7637098397291195, + 3.7521398514628657, + 3.7845612685325265 + ], + [ + 3.801398032674772, + 3.797496516324981, + 3.874325894655306 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8974235638218286, + "scoreError" : 0.04078040221505274, + "scoreConfidence" : [ + 2.856643161606776, + 2.9382039660368813 + ], + "scorePercentiles" : { + "0.0" : 2.864194845074456, + "50.0" : 2.8888214188330443, + "90.0" : 2.941597655882353, + "95.0" : 2.941597655882353, + "99.0" : 2.941597655882353, + "99.9" : 2.941597655882353, + "99.99" : 2.941597655882353, + "99.999" : 2.941597655882353, + "99.9999" : 2.941597655882353, + "100.0" : 2.941597655882353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8888214188330443, + 2.876919297382801, + 2.8828767195157106 + ], + [ + 2.941597655882353, + 2.9240752280701754, + 2.9093106698662012 + ], + [ + 2.864194845074456, + 2.8881343511406294, + 2.9008818886310905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.490047534625001, + "scoreError" : 0.9726091811245781, + "scoreConfidence" : [ + 5.517438353500423, + 7.462656715749579 + ], + "scorePercentiles" : { + "0.0" : 6.32754971, + "50.0" : 6.50557035875, + "90.0" : 6.621499711, + "95.0" : 6.621499711, + "99.0" : 6.621499711, + "99.9" : 6.621499711, + "99.99" : 6.621499711, + "99.999" : 6.621499711, + "99.9999" : 6.621499711, + "100.0" : 6.621499711 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.32754971, + 6.614645485 + ], + [ + 6.3964952325, + 6.621499711 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1745776712217435, + "scoreError" : 0.004206028300475727, + "scoreConfidence" : [ + 0.17037164292126777, + 0.17878369952221923 + ], + "scorePercentiles" : { + "0.0" : 0.17137056014051924, + "50.0" : 0.17459460048536063, + "90.0" : 0.17762025441821638, + "95.0" : 0.17762025441821638, + "99.0" : 0.17762025441821638, + "99.9" : 0.17762025441821638, + "99.99" : 0.17762025441821638, + "99.999" : 0.17762025441821638, + "99.9999" : 0.17762025441821638, + "100.0" : 0.17762025441821638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17137056014051924, + 0.17194991581553698, + 0.17177878950803901 + ], + [ + 0.17459460048536063, + 0.1747922786128784, + 0.17433077135087077 + ], + [ + 0.17730323380376584, + 0.1774586368605043, + 0.17762025441821638 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3303444454135176, + "scoreError" : 0.02058406933939373, + "scoreConfidence" : [ + 0.3097603760741239, + 0.3509285147529113 + ], + "scorePercentiles" : { + "0.0" : 0.31307321426335233, + "50.0" : 0.3364601669806877, + "90.0" : 0.34251582970853167, + "95.0" : 0.34251582970853167, + "99.0" : 0.34251582970853167, + "99.9" : 0.34251582970853167, + "99.99" : 0.34251582970853167, + "99.999" : 0.34251582970853167, + "99.9999" : 0.34251582970853167, + "100.0" : 0.34251582970853167 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31307321426335233, + 0.31527174227616644, + 0.31431190105607243 + ], + [ + 0.33757157473669996, + 0.3359965806874307, + 0.3364601669806877 + ], + [ + 0.33887193727762527, + 0.34251582970853167, + 0.33902706173509173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1562693597108447, + "scoreError" : 0.008845099697065262, + "scoreConfidence" : [ + 0.14742426001377945, + 0.16511445940790997 + ], + "scorePercentiles" : { + "0.0" : 0.1486287264093456, + "50.0" : 0.15930842999378714, + "90.0" : 0.16062775716786867, + "95.0" : 0.16062775716786867, + "99.0" : 0.16062775716786867, + "99.9" : 0.16062775716786867, + "99.99" : 0.16062775716786867, + "99.999" : 0.16062775716786867, + "99.9999" : 0.16062775716786867, + "100.0" : 0.16062775716786867 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.160005357456, + 0.15930842999378714, + 0.16025830483485842 + ], + [ + 0.15939140208798214, + 0.16062775716786867, + 0.15894370848896164 + ], + [ + 0.14939837715130871, + 0.1486287264093456, + 0.14986217380749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.389152093719067, + "scoreError" : 0.007566046808585527, + "scoreConfidence" : [ + 0.3815860469104815, + 0.39671814052765253 + ], + "scorePercentiles" : { + "0.0" : 0.3828534013782542, + "50.0" : 0.3905037583271506, + "90.0" : 0.3953757113035227, + "95.0" : 0.3953757113035227, + "99.0" : 0.3953757113035227, + "99.9" : 0.3953757113035227, + "99.99" : 0.3953757113035227, + "99.999" : 0.3953757113035227, + "99.9999" : 0.3953757113035227, + "100.0" : 0.3953757113035227 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3905037583271506, + 0.3907207516702481, + 0.3903423895546274 + ], + [ + 0.3953757113035227, + 0.39264856763123795, + 0.3921757525490196 + ], + [ + 0.3845759696958043, + 0.383172541361738, + 0.3828534013782542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15429255081230073, + "scoreError" : 0.003921364867476106, + "scoreConfidence" : [ + 0.15037118594482463, + 0.15821391567977683 + ], + "scorePercentiles" : { + "0.0" : 0.15174565566531614, + "50.0" : 0.1531924791127315, + "90.0" : 0.15795315791635078, + "95.0" : 0.15795315791635078, + "99.0" : 0.15795315791635078, + "99.9" : 0.15795315791635078, + "99.99" : 0.15795315791635078, + "99.999" : 0.15795315791635078, + "99.9999" : 0.15795315791635078, + "100.0" : 0.15795315791635078 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1531924791127315, + 0.15219594598666789, + 0.15174565566531614 + ], + [ + 0.15349359262329051, + 0.15302347861547644, + 0.15309620217391304 + ], + [ + 0.15795315791635078, + 0.1571824657508409, + 0.1567499794661191 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04744018246776174, + "scoreError" : 0.0019252094781829537, + "scoreConfidence" : [ + 0.04551497298957879, + 0.0493653919459447 + ], + "scorePercentiles" : { + "0.0" : 0.04612923753949766, + "50.0" : 0.047155143849407506, + "90.0" : 0.04906682002090213, + "95.0" : 0.04906682002090213, + "99.0" : 0.04906682002090213, + "99.9" : 0.04906682002090213, + "99.99" : 0.04906682002090213, + "99.999" : 0.04906682002090213, + "99.9999" : 0.04906682002090213, + "100.0" : 0.04906682002090213 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04717302514281401, + 0.04698703097336816, + 0.047155143849407506 + ], + [ + 0.04906682002090213, + 0.048787603142852964, + 0.04880492191800879 + ], + [ + 0.04659401368446066, + 0.04612923753949766, + 0.04626384593854382 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9104432.825831644, + "scoreError" : 231471.09485886127, + "scoreConfidence" : [ + 8872961.730972784, + 9335903.920690505 + ], + "scorePercentiles" : { + "0.0" : 8918914.088235294, + "50.0" : 9071289.56482321, + "90.0" : 9285829.121634169, + "95.0" : 9285829.121634169, + "99.0" : 9285829.121634169, + "99.9" : 9285829.121634169, + "99.99" : 9285829.121634169, + "99.999" : 9285829.121634169, + "99.9999" : 9285829.121634169, + "100.0" : 9285829.121634169 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9092988.733636364, + 9071289.56482321, + 9070230.352674523 + ], + [ + 8972040.394618833, + 8996052.81115108, + 8918914.088235294 + ], + [ + 9280557.111317255, + 9251993.254394079, + 9285829.121634169 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-27T07:27:46Z-bfd567ed115ce7a28045a2cf936309d8b71a3db7-jdk17.json b/performance-results/2025-04-27T07:27:46Z-bfd567ed115ce7a28045a2cf936309d8b71a3db7-jdk17.json new file mode 100644 index 0000000000..6e4c0845b9 --- /dev/null +++ b/performance-results/2025-04-27T07:27:46Z-bfd567ed115ce7a28045a2cf936309d8b71a3db7-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4189850794437735, + "scoreError" : 0.016413303092428316, + "scoreConfidence" : [ + 3.402571776351345, + 3.435398382536202 + ], + "scorePercentiles" : { + "0.0" : 3.416487316391673, + "50.0" : 3.4191117484603875, + "90.0" : 3.4212295044626457, + "95.0" : 3.4212295044626457, + "99.0" : 3.4212295044626457, + "99.9" : 3.4212295044626457, + "99.99" : 3.4212295044626457, + "99.999" : 3.4212295044626457, + "99.9999" : 3.4212295044626457, + "100.0" : 3.4212295044626457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4212295044626457, + 3.4211175017801088 + ], + [ + 3.416487316391673, + 3.417105995140666 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283176381649854, + "scoreError" : 0.012371799220572594, + "scoreConfidence" : [ + 1.7159458389444129, + 1.740689437385558 + ], + "scorePercentiles" : { + "0.0" : 1.726454699291861, + "50.0" : 1.7281549335015507, + "90.0" : 1.7305059863649797, + "95.0" : 1.7305059863649797, + "99.0" : 1.7305059863649797, + "99.9" : 1.7305059863649797, + "99.99" : 1.7305059863649797, + "99.999" : 1.7305059863649797, + "99.9999" : 1.7305059863649797, + "100.0" : 1.7305059863649797 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7293134122638396, + 1.7305059863649797 + ], + [ + 1.726454699291861, + 1.7269964547392616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670492736377341, + "scoreError" : 0.010231180079828268, + "scoreConfidence" : [ + 0.8568180935579058, + 0.8772804537175624 + ], + "scorePercentiles" : { + "0.0" : 0.8651870928385561, + "50.0" : 0.8671486879533767, + "90.0" : 0.8687126258056268, + "95.0" : 0.8687126258056268, + "99.0" : 0.8687126258056268, + "99.9" : 0.8687126258056268, + "99.99" : 0.8687126258056268, + "99.999" : 0.8687126258056268, + "99.9999" : 0.8687126258056268, + "100.0" : 0.8687126258056268 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679443523619672, + 0.8687126258056268 + ], + [ + 0.8651870928385561, + 0.8663530235447862 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.296638241738467, + "scoreError" : 0.15422893287751652, + "scoreConfidence" : [ + 16.14240930886095, + 16.450867174615983 + ], + "scorePercentiles" : { + "0.0" : 16.189111123259437, + "50.0" : 16.29015969733824, + "90.0" : 16.439282163072058, + "95.0" : 16.439282163072058, + "99.0" : 16.439282163072058, + "99.9" : 16.439282163072058, + "99.99" : 16.439282163072058, + "99.999" : 16.439282163072058, + "99.9999" : 16.439282163072058, + "100.0" : 16.439282163072058 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.287817348416255, + 16.29436506621504, + 16.29015969733824 + ], + [ + 16.439282163072058, + 16.387489717370695, + 16.384819537767008 + ], + [ + 16.197395630980367, + 16.189111123259437, + 16.199303891227093 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2755.20601165857, + "scoreError" : 67.46511941840183, + "scoreConfidence" : [ + 2687.7408922401683, + 2822.6711310769715 + ], + "scorePercentiles" : { + "0.0" : 2700.3354753568874, + "50.0" : 2776.5536318545146, + "90.0" : 2786.088818826823, + "95.0" : 2786.088818826823, + "99.0" : 2786.088818826823, + "99.9" : 2786.088818826823, + "99.99" : 2786.088818826823, + "99.999" : 2786.088818826823, + "99.9999" : 2786.088818826823, + "100.0" : 2786.088818826823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2782.5199804617478, + 2776.5536318545146, + 2786.088818826823 + ], + [ + 2784.4958167097984, + 2785.2901211838544, + 2776.248834053172 + ], + [ + 2702.1833668724025, + 2703.1380596079302, + 2700.3354753568874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71490.81060833327, + "scoreError" : 532.8298887737551, + "scoreConfidence" : [ + 70957.9807195595, + 72023.64049710703 + ], + "scorePercentiles" : { + "0.0" : 71049.72469581163, + "50.0" : 71677.49621845018, + "90.0" : 71757.89164555281, + "95.0" : 71757.89164555281, + "99.0" : 71757.89164555281, + "99.9" : 71757.89164555281, + "99.99" : 71757.89164555281, + "99.999" : 71757.89164555281, + "99.9999" : 71757.89164555281, + "100.0" : 71757.89164555281 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71682.00305026403, + 71677.49621845018, + 71660.97791242748 + ], + [ + 71049.72469581163, + 71081.84450661566, + 71078.19999353561 + ], + [ + 71757.89164555281, + 71700.20636447797, + 71728.95108786387 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.3962695686639, + "scoreError" : 2.8275115926714403, + "scoreConfidence" : [ + 351.56875797599247, + 357.22378116133535 + ], + "scorePercentiles" : { + "0.0" : 352.22996636234916, + "50.0" : 354.73340387610995, + "90.0" : 356.61337779032397, + "95.0" : 356.61337779032397, + "99.0" : 356.61337779032397, + "99.9" : 356.61337779032397, + "99.99" : 356.61337779032397, + "99.999" : 356.61337779032397, + "99.9999" : 356.61337779032397, + "100.0" : 356.61337779032397 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.61337779032397, + 355.8142274223376, + 355.40967604276665 + ], + [ + 354.1433908872535, + 355.79340305661725, + 354.73340387610995 + ], + [ + 352.22996636234916, + 352.51145021649114, + 352.31753046372637 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.15488298727510533, + "scoreError" : 0.031701349353123374, + "scoreConfidence" : [ + 0.12318163792198195, + 0.1865843366282287 + ], + "scorePercentiles" : { + "0.0" : 0.1502595120575458, + "50.0" : 0.15422125601458714, + "90.0" : 0.16082992501370125, + "95.0" : 0.16082992501370125, + "99.0" : 0.16082992501370125, + "99.9" : 0.16082992501370125, + "99.99" : 0.16082992501370125, + "99.999" : 0.16082992501370125, + "99.9999" : 0.16082992501370125, + "100.0" : 0.16082992501370125 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16082992501370125, + 0.15152099590954102 + ], + [ + 0.15692151611963323, + 0.1502595120575458 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 111.0113627596366, + "scoreError" : 2.4024628476294323, + "scoreConfidence" : [ + 108.60889991200716, + 113.41382560726603 + ], + "scorePercentiles" : { + "0.0" : 109.69820365900563, + "50.0" : 110.35438773958123, + "90.0" : 113.08715900963803, + "95.0" : 113.08715900963803, + "99.0" : 113.08715900963803, + "99.9" : 113.08715900963803, + "99.99" : 113.08715900963803, + "99.999" : 113.08715900963803, + "99.9999" : 113.08715900963803, + "100.0" : 113.08715900963803 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.69820365900563, + 110.35438773958123, + 110.4597378011346 + ], + [ + 112.54186898475123, + 113.08715900963803, + 113.01115755551382 + ], + [ + 109.76884954340822, + 110.10960532131418, + 110.07129522238237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0616437774872666, + "scoreError" : 4.403409785016151E-4, + "scoreConfidence" : [ + 0.06120343650876498, + 0.062084118465768216 + ], + "scorePercentiles" : { + "0.0" : 0.061280247685171, + "50.0" : 0.06181035153410636, + "90.0" : 0.06187501818485565, + "95.0" : 0.06187501818485565, + "99.0" : 0.06187501818485565, + "99.9" : 0.06187501818485565, + "99.99" : 0.06187501818485565, + "99.999" : 0.06187501818485565, + "99.9999" : 0.06187501818485565, + "100.0" : 0.06187501818485565 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061304592568752224, + 0.061318338631151666, + 0.061280247685171 + ], + [ + 0.06184952163775242, + 0.06169529601021661, + 0.06187501818485565 + ], + [ + 0.06184465789929375, + 0.06181597323409963, + 0.06181035153410636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7007916662943333E-4, + "scoreError" : 1.0038207239144258E-5, + "scoreConfidence" : [ + 3.6004095939028906E-4, + 3.801173738685776E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6470761228278765E-4, + "50.0" : 3.6762248049049116E-4, + "90.0" : 3.7831303925567577E-4, + "95.0" : 3.7831303925567577E-4, + "99.0" : 3.7831303925567577E-4, + "99.9" : 3.7831303925567577E-4, + "99.99" : 3.7831303925567577E-4, + "99.999" : 3.7831303925567577E-4, + "99.9999" : 3.7831303925567577E-4, + "100.0" : 3.7831303925567577E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6470761228278765E-4, + 3.647274415377106E-4, + 3.6481383072564893E-4 + ], + [ + 3.7741963412604387E-4, + 3.77855677799178E-4, + 3.7831303925567577E-4 + ], + [ + 3.675043073246716E-4, + 3.6762248049049116E-4, + 3.6774847612269215E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11065283751351825, + "scoreError" : 0.003048326784107685, + "scoreConfidence" : [ + 0.10760451072941056, + 0.11370116429762593 + ], + "scorePercentiles" : { + "0.0" : 0.10815935709186875, + "50.0" : 0.11180283140477389, + "90.0" : 0.11196958440729586, + "95.0" : 0.11196958440729586, + "99.0" : 0.11196958440729586, + "99.9" : 0.11196958440729586, + "99.99" : 0.11196958440729586, + "99.999" : 0.11196958440729586, + "99.9999" : 0.11196958440729586, + "100.0" : 0.11196958440729586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11181985065581286, + 0.11176684935120092, + 0.11180283140477389 + ], + [ + 0.11191412920229196, + 0.11196958440729586, + 0.1118939883296782 + ], + [ + 0.10823070085608841, + 0.10831824632265333, + 0.10815935709186875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014237604895882543, + "scoreError" : 3.54836538095862E-4, + "scoreConfidence" : [ + 0.01388276835778668, + 0.014592441433978405 + ], + "scorePercentiles" : { + "0.0" : 0.014068889350967997, + "50.0" : 0.014122253701750149, + "90.0" : 0.014520157515688843, + "95.0" : 0.014520157515688843, + "99.0" : 0.014520157515688843, + "99.9" : 0.014520157515688843, + "99.99" : 0.014520157515688843, + "99.999" : 0.014520157515688843, + "99.9999" : 0.014520157515688843, + "100.0" : 0.014520157515688843 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014517940427780625, + 0.014520157515688843, + 0.014515420808469934 + ], + [ + 0.014068889350967997, + 0.014073290571720087, + 0.014081481430997434 + ], + [ + 0.014124733681174487, + 0.014122253701750149, + 0.01411427657439334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.989805827765794, + "scoreError" : 0.020497470536923183, + "scoreConfidence" : [ + 0.9693083572288708, + 1.0103032983027171 + ], + "scorePercentiles" : { + "0.0" : 0.9745196392516079, + "50.0" : 0.9891997307616222, + "90.0" : 1.0074892338303445, + "95.0" : 1.0074892338303445, + "99.0" : 1.0074892338303445, + "99.9" : 1.0074892338303445, + "99.99" : 1.0074892338303445, + "99.999" : 1.0074892338303445, + "99.9999" : 1.0074892338303445, + "100.0" : 1.0074892338303445 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9759581102761784, + 0.9780333606845966, + 0.9745196392516079 + ], + [ + 0.9891997307616222, + 0.9904009607843137, + 0.9889041342826066 + ], + [ + 0.9986522467545437, + 1.0074892338303445, + 1.0050950332663318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01280596546297985, + "scoreError" : 2.235972159275345E-4, + "scoreConfidence" : [ + 0.012582368247052314, + 0.013029562678907385 + ], + "scorePercentiles" : { + "0.0" : 0.012675894257436787, + "50.0" : 0.012810142355059232, + "90.0" : 0.012890940973708229, + "95.0" : 0.012890940973708229, + "99.0" : 0.012890940973708229, + "99.9" : 0.012890940973708229, + "99.99" : 0.012890940973708229, + "99.999" : 0.012890940973708229, + "99.9999" : 0.012890940973708229, + "100.0" : 0.012890940973708229 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012675894257436787, + 0.012809088027113643, + 0.01281119668300482 + ], + [ + 0.012765436388795279, + 0.012890940973708229, + 0.012883236447820341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5817571430548476, + "scoreError" : 0.07479326761599203, + "scoreConfidence" : [ + 3.5069638754388555, + 3.6565504106708397 + ], + "scorePercentiles" : { + "0.0" : 3.539031644019816, + "50.0" : 3.577537363577778, + "90.0" : 3.6115560620938627, + "95.0" : 3.6115560620938627, + "99.0" : 3.6115560620938627, + "99.9" : 3.6115560620938627, + "99.99" : 3.6115560620938627, + "99.999" : 3.6115560620938627, + "99.9999" : 3.6115560620938627, + "100.0" : 3.6115560620938627 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5792541453113818, + 3.609377896825397, + 3.6115560620938627 + ], + [ + 3.539031644019816, + 3.5758205818441744, + 3.5755025282344532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.812005924852654, + "scoreError" : 0.0753375929545065, + "scoreConfidence" : [ + 2.7366683318981475, + 2.8873435178071607 + ], + "scorePercentiles" : { + "0.0" : 2.7662552544247787, + "50.0" : 2.7963360145373217, + "90.0" : 2.8762605858498707, + "95.0" : 2.8762605858498707, + "99.0" : 2.8762605858498707, + "99.9" : 2.8762605858498707, + "99.99" : 2.8762605858498707, + "99.999" : 2.8762605858498707, + "99.9999" : 2.8762605858498707, + "100.0" : 2.8762605858498707 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.770084333979507, + 2.7662552544247787, + 2.7746462116504853 + ], + [ + 2.856649103970294, + 2.8750374642138548, + 2.8762605858498707 + ], + [ + 2.798025943200895, + 2.7963360145373217, + 2.7947584118468844 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.400671131875, + "scoreError" : 1.2393829692583074, + "scoreConfidence" : [ + 5.161288162616692, + 7.640054101133307 + ], + "scorePercentiles" : { + "0.0" : 6.2599181375, + "50.0" : 6.33228571625, + "90.0" : 6.6781949575, + "95.0" : 6.6781949575, + "99.0" : 6.6781949575, + "99.9" : 6.6781949575, + "99.99" : 6.6781949575, + "99.999" : 6.6781949575, + "99.9999" : 6.6781949575, + "100.0" : 6.6781949575 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.286607621, + 6.6781949575 + ], + [ + 6.2599181375, + 6.3779638115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1812391769952394, + "scoreError" : 0.016505152839115158, + "scoreConfidence" : [ + 0.16473402415612423, + 0.19774432983435455 + ], + "scorePercentiles" : { + "0.0" : 0.17249095113410953, + "50.0" : 0.17698623264251456, + "90.0" : 0.19424218056445816, + "95.0" : 0.19424218056445816, + "99.0" : 0.19424218056445816, + "99.9" : 0.19424218056445816, + "99.99" : 0.19424218056445816, + "99.999" : 0.19424218056445816, + "99.9999" : 0.19424218056445816, + "100.0" : 0.19424218056445816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17285320019359077, + 0.17256516809318379, + 0.17249095113410953 + ], + [ + 0.17706001558101242, + 0.17698623264251456, + 0.17692558656806198 + ], + [ + 0.19394774302282733, + 0.19408151515739627, + 0.19424218056445816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.322084441983042, + "scoreError" : 0.012945333288878, + "scoreConfidence" : [ + 0.309139108694164, + 0.33502977527191996 + ], + "scorePercentiles" : { + "0.0" : 0.3118201284026067, + "50.0" : 0.3266602675573267, + "90.0" : 0.32812063470814057, + "95.0" : 0.32812063470814057, + "99.0" : 0.32812063470814057, + "99.9" : 0.32812063470814057, + "99.99" : 0.32812063470814057, + "99.999" : 0.32812063470814057, + "99.9999" : 0.32812063470814057, + "100.0" : 0.32812063470814057 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32760372931271703, + 0.3273447267757774, + 0.32757700940120543 + ], + [ + 0.32812063470814057, + 0.325913000945118, + 0.3266602675573267 + ], + [ + 0.31188139898328343, + 0.3118390817612024, + 0.3118201284026067 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826865975598392, + "scoreError" : 0.016500610210593326, + "scoreConfidence" : [ + 0.1417680495453906, + 0.17476926996657724 + ], + "scorePercentiles" : { + "0.0" : 0.15064311915521814, + "50.0" : 0.15224961506021345, + "90.0" : 0.1718356121554746, + "95.0" : 0.1718356121554746, + "99.0" : 0.1718356121554746, + "99.9" : 0.1718356121554746, + "99.99" : 0.1718356121554746, + "99.999" : 0.1718356121554746, + "99.9999" : 0.1718356121554746, + "100.0" : 0.1718356121554746 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15224961506021345, + 0.15199410653108994, + 0.15219689478890816 + ], + [ + 0.1718356121554746, + 0.1711448609299858, + 0.17101342484096038 + ], + [ + 0.15064311915521814, + 0.15249435202354447, + 0.15084595231846018 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3856805276737913, + "scoreError" : 0.01233458837010862, + "scoreConfidence" : [ + 0.37334593930368265, + 0.39801511604389994 + ], + "scorePercentiles" : { + "0.0" : 0.37636113334086035, + "50.0" : 0.3854542303808202, + "90.0" : 0.4008592856455686, + "95.0" : 0.4008592856455686, + "99.0" : 0.4008592856455686, + "99.9" : 0.4008592856455686, + "99.99" : 0.4008592856455686, + "99.999" : 0.4008592856455686, + "99.9999" : 0.4008592856455686, + "100.0" : 0.4008592856455686 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3882726562742662, + 0.4008592856455686, + 0.3845488307248606 + ], + [ + 0.38286656673047476, + 0.37636113334086035, + 0.37643531028382143 + ], + [ + 0.3881565872923459, + 0.38817014839110353, + 0.3854542303808202 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1577402834304589, + "scoreError" : 0.0033927033782234334, + "scoreConfidence" : [ + 0.15434758005223548, + 0.16113298680868232 + ], + "scorePercentiles" : { + "0.0" : 0.15547497475124378, + "50.0" : 0.15726563032333143, + "90.0" : 0.16033265125376772, + "95.0" : 0.16033265125376772, + "99.0" : 0.16033265125376772, + "99.9" : 0.16033265125376772, + "99.99" : 0.16033265125376772, + "99.999" : 0.16033265125376772, + "99.9999" : 0.16033265125376772, + "100.0" : 0.16033265125376772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15779303018492805, + 0.15723389732865836, + 0.15726563032333143 + ], + [ + 0.15568029112958465, + 0.15560917482299852, + 0.15547497475124378 + ], + [ + 0.16009098887394743, + 0.16033265125376772, + 0.16018191220567035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04648576212643121, + "scoreError" : 7.53218870745491E-4, + "scoreConfidence" : [ + 0.04573254325568572, + 0.0472389809971767 + ], + "scorePercentiles" : { + "0.0" : 0.04588070069600246, + "50.0" : 0.04650997701512946, + "90.0" : 0.04701734011472095, + "95.0" : 0.04701734011472095, + "99.0" : 0.04701734011472095, + "99.9" : 0.04701734011472095, + "99.99" : 0.04701734011472095, + "99.999" : 0.04701734011472095, + "99.9999" : 0.04701734011472095, + "100.0" : 0.04701734011472095 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0470124493519437, + 0.04701734011472095, + 0.04673730892903045 + ], + [ + 0.04650997701512946, + 0.04677091654779221, + 0.04650580047900293 + ], + [ + 0.045989632657753986, + 0.04594773334650481, + 0.04588070069600246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9323983.827192925, + "scoreError" : 404409.9994661528, + "scoreConfidence" : [ + 8919573.827726772, + 9728393.826659078 + ], + "scorePercentiles" : { + "0.0" : 9092506.486363636, + "50.0" : 9221235.247926267, + "90.0" : 9638616.761078998, + "95.0" : 9638616.761078998, + "99.0" : 9638616.761078998, + "99.9" : 9638616.761078998, + "99.99" : 9638616.761078998, + "99.999" : 9638616.761078998, + "99.9999" : 9638616.761078998, + "100.0" : 9638616.761078998 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9279827.688311689, + 9221235.247926267, + 9210344.659300184 + ], + [ + 9630551.056785371, + 9632749.213666987, + 9638616.761078998 + ], + [ + 9092506.486363636, + 9112631.71675774, + 9097391.614545455 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-29T01:27:36Z-abff4a3cbb87aeba79c6a22cec6f18c352fc08bd-jdk17.json b/performance-results/2025-04-29T01:27:36Z-abff4a3cbb87aeba79c6a22cec6f18c352fc08bd-jdk17.json new file mode 100644 index 0000000000..b126781175 --- /dev/null +++ b/performance-results/2025-04-29T01:27:36Z-abff4a3cbb87aeba79c6a22cec6f18c352fc08bd-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4169841105961867, + "scoreError" : 0.016861346743152383, + "scoreConfidence" : [ + 3.4001227638530342, + 3.433845457339339 + ], + "scorePercentiles" : { + "0.0" : 3.414341187539911, + "50.0" : 3.4165246044564377, + "90.0" : 3.4205460459319585, + "95.0" : 3.4205460459319585, + "99.0" : 3.4205460459319585, + "99.9" : 3.4205460459319585, + "99.99" : 3.4205460459319585, + "99.999" : 3.4205460459319585, + "99.9999" : 3.4205460459319585, + "100.0" : 3.4205460459319585 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.416117903658298, + 3.4205460459319585 + ], + [ + 3.416931305254578, + 3.414341187539911 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.725110666429803, + "scoreError" : 0.0037718061271390683, + "scoreConfidence" : [ + 1.721338860302664, + 1.728882472556942 + ], + "scorePercentiles" : { + "0.0" : 1.724404557343964, + "50.0" : 1.7251051821743175, + "90.0" : 1.7258277440266132, + "95.0" : 1.7258277440266132, + "99.0" : 1.7258277440266132, + "99.9" : 1.7258277440266132, + "99.99" : 1.7258277440266132, + "99.999" : 1.7258277440266132, + "99.9999" : 1.7258277440266132, + "100.0" : 1.7258277440266132 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7251731368736785, + 1.7250372274749568 + ], + [ + 1.724404557343964, + 1.7258277440266132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674590800024715, + "scoreError" : 0.006482248420430546, + "scoreConfidence" : [ + 0.860976831582041, + 0.8739413284229021 + ], + "scorePercentiles" : { + "0.0" : 0.866504354720508, + "50.0" : 0.8673948560902545, + "90.0" : 0.8685422531088689, + "95.0" : 0.8685422531088689, + "99.0" : 0.8685422531088689, + "99.9" : 0.8685422531088689, + "99.99" : 0.8685422531088689, + "99.999" : 0.8685422531088689, + "99.9999" : 0.8685422531088689, + "100.0" : 0.8685422531088689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.866504354720508, + 0.8680752333508601 + ], + [ + 0.8667144788296489, + 0.8685422531088689 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.07274728904666, + "scoreError" : 0.15780953310602785, + "scoreConfidence" : [ + 15.914937755940633, + 16.23055682215269 + ], + "scorePercentiles" : { + "0.0" : 15.89185521457576, + "50.0" : 16.080248300697424, + "90.0" : 16.19791924417957, + "95.0" : 16.19791924417957, + "99.0" : 16.19791924417957, + "99.9" : 16.19791924417957, + "99.99" : 16.19791924417957, + "99.999" : 16.19791924417957, + "99.9999" : 16.19791924417957, + "100.0" : 16.19791924417957 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.980908134815024, + 16.19791924417957, + 16.055670183953687 + ], + [ + 16.080248300697424, + 16.04077425978792, + 15.89185521457576 + ], + [ + 16.150697718971347, + 16.121125139652708, + 16.135527404786473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2634.92470809111, + "scoreError" : 107.89661205315173, + "scoreConfidence" : [ + 2527.028096037958, + 2742.821320144262 + ], + "scorePercentiles" : { + "0.0" : 2537.996492943148, + "50.0" : 2654.6942112821953, + "90.0" : 2708.3658745443013, + "95.0" : 2708.3658745443013, + "99.0" : 2708.3658745443013, + "99.9" : 2708.3658745443013, + "99.99" : 2708.3658745443013, + "99.999" : 2708.3658745443013, + "99.9999" : 2708.3658745443013, + "100.0" : 2708.3658745443013 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2565.8837479201966, + 2558.4721732226185, + 2537.996492943148 + ], + [ + 2649.6304202913975, + 2654.892639455716, + 2654.6942112821953 + ], + [ + 2708.3658745443013, + 2694.961395631789, + 2689.4254175286264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69377.96630362794, + "scoreError" : 1072.6759615486774, + "scoreConfidence" : [ + 68305.29034207926, + 70450.64226517662 + ], + "scorePercentiles" : { + "0.0" : 68749.47940621381, + "50.0" : 69135.07670493906, + "90.0" : 70236.03335964867, + "95.0" : 70236.03335964867, + "99.0" : 70236.03335964867, + "99.9" : 70236.03335964867, + "99.99" : 70236.03335964867, + "99.999" : 70236.03335964867, + "99.9999" : 70236.03335964867, + "100.0" : 70236.03335964867 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70153.95527622451, + 70232.03785959605, + 70236.03335964867 + ], + [ + 69135.07670493906, + 69196.3831159384, + 68983.01249215448 + ], + [ + 68795.03561789548, + 68920.68290004092, + 68749.47940621381 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.1226186014949, + "scoreError" : 14.508102392270148, + "scoreConfidence" : [ + 335.61451620922475, + 364.630720993765 + ], + "scorePercentiles" : { + "0.0" : 337.49114521107396, + "50.0" : 348.35296541744464, + "90.0" : 361.6531658426927, + "95.0" : 361.6531658426927, + "99.0" : 361.6531658426927, + "99.9" : 361.6531658426927, + "99.99" : 361.6531658426927, + "99.999" : 361.6531658426927, + "99.9999" : 361.6531658426927, + "100.0" : 361.6531658426927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.3209569073325, + 348.35296541744464, + 346.22353217050363 + ], + [ + 342.95780346643915, + 344.0438960393807, + 337.49114521107396 + ], + [ + 360.6713617921953, + 359.3887405663913, + 361.6531658426927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1629261446578569, + "scoreError" : 0.05099195680461377, + "scoreConfidence" : [ + 0.11193418785324313, + 0.21391810146247067 + ], + "scorePercentiles" : { + "0.0" : 0.15363760146225472, + "50.0" : 0.16309303153526916, + "90.0" : 0.1718809140986346, + "95.0" : 0.1718809140986346, + "99.0" : 0.1718809140986346, + "99.9" : 0.1718809140986346, + "99.99" : 0.1718809140986346, + "99.999" : 0.1718809140986346, + "99.9999" : 0.1718809140986346, + "100.0" : 0.1718809140986346 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.15990822901277135, + 0.15363760146225472 + ], + [ + 0.1718809140986346, + 0.166277834057767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.67991451956517, + "scoreError" : 5.0067874177778675, + "scoreConfidence" : [ + 101.6731271017873, + 111.68670193734305 + ], + "scorePercentiles" : { + "0.0" : 103.46426426049211, + "50.0" : 105.94171626014702, + "90.0" : 110.99981272343388, + "95.0" : 110.99981272343388, + "99.0" : 110.99981272343388, + "99.9" : 110.99981272343388, + "99.99" : 110.99981272343388, + "99.999" : 110.99981272343388, + "99.9999" : 110.99981272343388, + "100.0" : 110.99981272343388 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.29644360147252, + 110.0468389252019, + 110.99981272343388 + ], + [ + 104.91782840924878, + 106.21775191955447, + 105.94171626014702 + ], + [ + 103.56846255389095, + 104.66611202264498, + 103.46426426049211 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06201299940733291, + "scoreError" : 4.311935163610452E-4, + "scoreConfidence" : [ + 0.06158180589097186, + 0.06244419292369396 + ], + "scorePercentiles" : { + "0.0" : 0.06163831407368142, + "50.0" : 0.061916252180966004, + "90.0" : 0.06235981539890997, + "95.0" : 0.06235981539890997, + "99.0" : 0.06235981539890997, + "99.9" : 0.06235981539890997, + "99.99" : 0.06235981539890997, + "99.999" : 0.06235981539890997, + "99.9999" : 0.06235981539890997, + "100.0" : 0.06235981539890997 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06229266055377332, + 0.062187873822331395, + 0.0617617887657104 + ], + [ + 0.062221621990069566, + 0.06235981539890997, + 0.06186835962904304 + ], + [ + 0.06163831407368142, + 0.06187030825151116, + 0.061916252180966004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7048282486742837E-4, + "scoreError" : 6.2318940762426424E-6, + "scoreConfidence" : [ + 3.642509307911857E-4, + 3.7671471894367103E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6550937057065476E-4, + "50.0" : 3.705233868726101E-4, + "90.0" : 3.7574568171424677E-4, + "95.0" : 3.7574568171424677E-4, + "99.0" : 3.7574568171424677E-4, + "99.9" : 3.7574568171424677E-4, + "99.99" : 3.7574568171424677E-4, + "99.999" : 3.7574568171424677E-4, + "99.9999" : 3.7574568171424677E-4, + "100.0" : 3.7574568171424677E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7323567356169614E-4, + 3.737041859784811E-4, + 3.7574568171424677E-4 + ], + [ + 3.680468343111912E-4, + 3.6550937057065476E-4, + 3.677059834491752E-4 + ], + [ + 3.7350040214372075E-4, + 3.6637390520507943E-4, + 3.705233868726101E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11296045966158491, + "scoreError" : 0.0013462397991689833, + "scoreConfidence" : [ + 0.11161421986241593, + 0.11430669946075389 + ], + "scorePercentiles" : { + "0.0" : 0.11172170046922132, + "50.0" : 0.11303341444089024, + "90.0" : 0.11421999667626097, + "95.0" : 0.11421999667626097, + "99.0" : 0.11421999667626097, + "99.9" : 0.11421999667626097, + "99.99" : 0.11421999667626097, + "99.999" : 0.11421999667626097, + "99.9999" : 0.11421999667626097, + "100.0" : 0.11421999667626097 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11172170046922132, + 0.11229566329784844, + 0.1120552170702464 + ], + [ + 0.11342930688958962, + 0.11348786085545355, + 0.11421999667626097 + ], + [ + 0.11303341444089024, + 0.11294210606265953, + 0.1134588711920943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014211016977995226, + "scoreError" : 3.2450050098998363E-4, + "scoreConfidence" : [ + 0.013886516477005242, + 0.01453551747898521 + ], + "scorePercentiles" : { + "0.0" : 0.013995309737535233, + "50.0" : 0.014186597527308838, + "90.0" : 0.014487708502294099, + "95.0" : 0.014487708502294099, + "99.0" : 0.014487708502294099, + "99.9" : 0.014487708502294099, + "99.99" : 0.014487708502294099, + "99.999" : 0.014487708502294099, + "99.9999" : 0.014487708502294099, + "100.0" : 0.014487708502294099 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013995309737535233, + 0.014026710071339002, + 0.013999355323262316 + ], + [ + 0.0144319443107101, + 0.014421175412765184, + 0.014487708502294099 + ], + [ + 0.01418778617700471, + 0.01416256573973757, + 0.014186597527308838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9747416122090438, + "scoreError" : 0.02771354829453182, + "scoreConfidence" : [ + 0.9470280639145119, + 1.0024551605035756 + ], + "scorePercentiles" : { + "0.0" : 0.9613563659521291, + "50.0" : 0.9654528933191736, + "90.0" : 0.9997473583924823, + "95.0" : 0.9997473583924823, + "99.0" : 0.9997473583924823, + "99.9" : 0.9997473583924823, + "99.99" : 0.9997473583924823, + "99.999" : 0.9997473583924823, + "99.9999" : 0.9997473583924823, + "100.0" : 0.9997473583924823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.99129063907613, + 0.9980391284431138, + 0.9997473583924823 + ], + [ + 0.9623278973248652, + 0.9623309266743649, + 0.9613563659521291 + ], + [ + 0.9682756677962819, + 0.9638536329028528, + 0.9654528933191736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013104962445900434, + "scoreError" : 2.4980606674703063E-4, + "scoreConfidence" : [ + 0.012855156379153403, + 0.013354768512647466 + ], + "scorePercentiles" : { + "0.0" : 0.012970660892257726, + "50.0" : 0.013099514039777799, + "90.0" : 0.013209452283330604, + "95.0" : 0.013209452283330604, + "99.0" : 0.013209452283330604, + "99.9" : 0.013209452283330604, + "99.99" : 0.013209452283330604, + "99.999" : 0.013209452283330604, + "99.9999" : 0.013209452283330604, + "100.0" : 0.013209452283330604 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012970660892257726, + 0.013195432111113457, + 0.013209452283330604 + ], + [ + 0.013055201309145217, + 0.013098137045080067, + 0.01310089103447553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.604313844159822, + "scoreError" : 0.04534713389148014, + "scoreConfidence" : [ + 3.5589667102683418, + 3.649660978051302 + ], + "scorePercentiles" : { + "0.0" : 3.5937952629310344, + "50.0" : 3.598727486330935, + "90.0" : 3.636989528, + "95.0" : 3.636989528, + "99.0" : 3.636989528, + "99.9" : 3.636989528, + "99.99" : 3.636989528, + "99.999" : 3.636989528, + "99.9999" : 3.636989528, + "100.0" : 3.636989528 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5937952629310344, + 3.636989528, + 3.5994765553956833 + ], + [ + 3.597978417266187, + 3.597188201294033, + 3.6004551000719944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.85706986103338, + "scoreError" : 0.05550092630841743, + "scoreConfidence" : [ + 2.8015689347249624, + 2.912570787341797 + ], + "scorePercentiles" : { + "0.0" : 2.8149184466647905, + "50.0" : 2.8451828332859175, + "90.0" : 2.9116465097525475, + "95.0" : 2.9116465097525475, + "99.0" : 2.9116465097525475, + "99.9" : 2.9116465097525475, + "99.99" : 2.9116465097525475, + "99.999" : 2.9116465097525475, + "99.9999" : 2.9116465097525475, + "100.0" : 2.9116465097525475 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8426617549744173, + 2.8451828332859175, + 2.875999301897642 + ], + [ + 2.8337422153584586, + 2.823628097120271, + 2.8149184466647905 + ], + [ + 2.9116465097525475, + 2.8714230410565604, + 2.8944265491898147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.461447670875, + "scoreError" : 1.557823378352132, + "scoreConfidence" : [ + 4.903624292522868, + 8.019271049227132 + ], + "scorePercentiles" : { + "0.0" : 6.217415002, + "50.0" : 6.45516865225, + "90.0" : 6.718038377, + "95.0" : 6.718038377, + "99.0" : 6.718038377, + "99.9" : 6.718038377, + "99.99" : 6.718038377, + "99.999" : 6.718038377, + "99.9999" : 6.718038377, + "100.0" : 6.718038377 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.217415002, + 6.6115043885 + ], + [ + 6.298832916, + 6.718038377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18207746532125393, + "scoreError" : 0.013780054260598152, + "scoreConfidence" : [ + 0.1682974110606558, + 0.19585751958185207 + ], + "scorePercentiles" : { + "0.0" : 0.1745451103799766, + "50.0" : 0.17868691494684177, + "90.0" : 0.19307464954146153, + "95.0" : 0.19307464954146153, + "99.0" : 0.19307464954146153, + "99.9" : 0.19307464954146153, + "99.99" : 0.19307464954146153, + "99.999" : 0.19307464954146153, + "99.9999" : 0.19307464954146153, + "100.0" : 0.19307464954146153 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17909542611529988, + 0.17866306638915191, + 0.17868691494684177 + ], + [ + 0.19307464954146153, + 0.19237869708745334, + 0.1927737764626506 + ], + [ + 0.1748562180413002, + 0.17462332892714955, + 0.1745451103799766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3316795743404948, + "scoreError" : 0.009466290531291692, + "scoreConfidence" : [ + 0.3222132838092031, + 0.34114586487178644 + ], + "scorePercentiles" : { + "0.0" : 0.3243246460400856, + "50.0" : 0.3319771668824486, + "90.0" : 0.33880407477300445, + "95.0" : 0.33880407477300445, + "99.0" : 0.33880407477300445, + "99.9" : 0.33880407477300445, + "99.99" : 0.33880407477300445, + "99.999" : 0.33880407477300445, + "99.9999" : 0.33880407477300445, + "100.0" : 0.33880407477300445 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33880407477300445, + 0.33773891675109763, + 0.33748274277807777 + ], + [ + 0.3317106607071779, + 0.33204528193379157, + 0.3319771668824486 + ], + [ + 0.32661789894833104, + 0.3243246460400856, + 0.32441478025043796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16295648200369642, + "scoreError" : 0.007355535448948819, + "scoreConfidence" : [ + 0.1556009465547476, + 0.17031201745264524 + ], + "scorePercentiles" : { + "0.0" : 0.15796330077242643, + "50.0" : 0.16256182123350021, + "90.0" : 0.16847007458009738, + "95.0" : 0.16847007458009738, + "99.0" : 0.16847007458009738, + "99.9" : 0.16847007458009738, + "99.99" : 0.16847007458009738, + "99.999" : 0.16847007458009738, + "99.9999" : 0.16847007458009738, + "100.0" : 0.16847007458009738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16803389792146253, + 0.1679515931275402, + 0.16847007458009738 + ], + [ + 0.16300649911163997, + 0.16256182123350021, + 0.16237046639822045 + ], + [ + 0.15825178851753385, + 0.15796330077242643, + 0.1579988963708467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38908629516224646, + "scoreError" : 0.015621116060515255, + "scoreConfidence" : [ + 0.3734651791017312, + 0.4047074112227617 + ], + "scorePercentiles" : { + "0.0" : 0.38194538574647674, + "50.0" : 0.38371984759419847, + "90.0" : 0.407430642534121, + "95.0" : 0.407430642534121, + "99.0" : 0.407430642534121, + "99.9" : 0.407430642534121, + "99.99" : 0.407430642534121, + "99.999" : 0.407430642534121, + "99.9999" : 0.407430642534121, + "100.0" : 0.407430642534121 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38246707507553446, + 0.38266204687380423, + 0.38258841646581737 + ], + [ + 0.407430642534121, + 0.39726210487427005, + 0.39757622363137596 + ], + [ + 0.38612491366462026, + 0.38371984759419847, + 0.38194538574647674 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15566721581851667, + "scoreError" : 0.0011478013215318824, + "scoreConfidence" : [ + 0.15451941449698478, + 0.15681501714004856 + ], + "scorePercentiles" : { + "0.0" : 0.15479193437040475, + "50.0" : 0.1555546226919906, + "90.0" : 0.1570862999010383, + "95.0" : 0.1570862999010383, + "99.0" : 0.1570862999010383, + "99.9" : 0.1570862999010383, + "99.99" : 0.1570862999010383, + "99.999" : 0.1570862999010383, + "99.9999" : 0.1570862999010383, + "100.0" : 0.1570862999010383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.155355506555849, + 0.1555546226919906, + 0.15536562854612684 + ], + [ + 0.15559557033498778, + 0.15505680587341458, + 0.15479193437040475 + ], + [ + 0.1570862999010383, + 0.15608327922584672, + 0.15611529486699138 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04756821866980623, + "scoreError" : 9.502492797525353E-4, + "scoreConfidence" : [ + 0.04661796939005369, + 0.04851846794955876 + ], + "scorePercentiles" : { + "0.0" : 0.047061467059781356, + "50.0" : 0.047468389879906966, + "90.0" : 0.04879920123070016, + "95.0" : 0.04879920123070016, + "99.0" : 0.04879920123070016, + "99.9" : 0.04879920123070016, + "99.99" : 0.04879920123070016, + "99.999" : 0.04879920123070016, + "99.9999" : 0.04879920123070016, + "100.0" : 0.04879920123070016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04879920123070016, + 0.047835660213726726, + 0.047892390603673285 + ], + [ + 0.047468389879906966, + 0.04710655139715858, + 0.04708556215686829 + ], + [ + 0.047673648736907846, + 0.04719109674953282, + 0.047061467059781356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9338115.451061364, + "scoreError" : 294253.3030853776, + "scoreConfidence" : [ + 9043862.147975987, + 9632368.754146742 + ], + "scorePercentiles" : { + "0.0" : 9150383.46020128, + "50.0" : 9258928.046253469, + "90.0" : 9612853.083573487, + "95.0" : 9612853.083573487, + "99.0" : 9612853.083573487, + "99.9" : 9612853.083573487, + "99.99" : 9612853.083573487, + "99.999" : 9612853.083573487, + "99.9999" : 9612853.083573487, + "100.0" : 9612853.083573487 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9612853.083573487, + 9494145.622390892, + 9570389.524401914 + ], + [ + 9151741.862763038, + 9150383.46020128, + 9288248.306406686 + ], + [ + 9258868.16651249, + 9257480.987049028, + 9258928.046253469 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-29T01:27:59Z-abff4a3cbb87aeba79c6a22cec6f18c352fc08bd-jdk17.json b/performance-results/2025-04-29T01:27:59Z-abff4a3cbb87aeba79c6a22cec6f18c352fc08bd-jdk17.json new file mode 100644 index 0000000000..c9e384b10d --- /dev/null +++ b/performance-results/2025-04-29T01:27:59Z-abff4a3cbb87aeba79c6a22cec6f18c352fc08bd-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41368755675915, + "scoreError" : 0.011577156508616154, + "scoreConfidence" : [ + 3.4021104002505336, + 3.425264713267766 + ], + "scorePercentiles" : { + "0.0" : 3.4124310628695893, + "50.0" : 3.412991278818737, + "90.0" : 3.4163366065295357, + "95.0" : 3.4163366065295357, + "99.0" : 3.4163366065295357, + "99.9" : 3.4163366065295357, + "99.99" : 3.4163366065295357, + "99.999" : 3.4163366065295357, + "99.9999" : 3.4163366065295357, + "100.0" : 3.4163366065295357 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.412813226359765, + 3.4131693312777087 + ], + [ + 3.4124310628695893, + 3.4163366065295357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7223860030654072, + "scoreError" : 0.010350866728441316, + "scoreConfidence" : [ + 1.712035136336966, + 1.7327368697938486 + ], + "scorePercentiles" : { + "0.0" : 1.7207239576746316, + "50.0" : 1.722483513543537, + "90.0" : 1.7238530274999235, + "95.0" : 1.7238530274999235, + "99.0" : 1.7238530274999235, + "99.9" : 1.7238530274999235, + "99.99" : 1.7238530274999235, + "99.999" : 1.7238530274999235, + "99.9999" : 1.7238530274999235, + "100.0" : 1.7238530274999235 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7207239576746316, + 1.7236590549622335 + ], + [ + 1.7213079721248403, + 1.7238530274999235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866003896362989, + "scoreError" : 0.0037517889106824867, + "scoreConfidence" : [ + 0.8622521074523065, + 0.8697556852736715 + ], + "scorePercentiles" : { + "0.0" : 0.8653165470889159, + "50.0" : 0.8659812831762026, + "90.0" : 0.8667364720106346, + "95.0" : 0.8667364720106346, + "99.0" : 0.8667364720106346, + "99.9" : 0.8667364720106346, + "99.99" : 0.8667364720106346, + "99.999" : 0.8667364720106346, + "99.9999" : 0.8667364720106346, + "100.0" : 0.8667364720106346 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667364720106346, + 0.8659575389707542 + ], + [ + 0.8653165470889159, + 0.866005027381651 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.927719435913271, + "scoreError" : 0.2518439433608151, + "scoreConfidence" : [ + 15.675875492552457, + 16.179563379274086 + ], + "scorePercentiles" : { + "0.0" : 15.718224629279074, + "50.0" : 15.988244650145868, + "90.0" : 16.101281761616875, + "95.0" : 16.101281761616875, + "99.0" : 16.101281761616875, + "99.9" : 16.101281761616875, + "99.99" : 16.101281761616875, + "99.999" : 16.101281761616875, + "99.9999" : 16.101281761616875, + "100.0" : 16.101281761616875 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.744516962118057, + 15.718224629279074, + 15.744884329723428 + ], + [ + 15.988322848818745, + 15.988244650145868, + 15.9676454709409 + ], + [ + 16.101281761616875, + 16.067281870581326, + 16.02907239999518 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2620.2361096447444, + "scoreError" : 51.89020085549408, + "scoreConfidence" : [ + 2568.34590878925, + 2672.1263105002386 + ], + "scorePercentiles" : { + "0.0" : 2576.5388949462267, + "50.0" : 2631.725690292548, + "90.0" : 2655.985391852798, + "95.0" : 2655.985391852798, + "99.0" : 2655.985391852798, + "99.9" : 2655.985391852798, + "99.99" : 2655.985391852798, + "99.999" : 2655.985391852798, + "99.9999" : 2655.985391852798, + "100.0" : 2655.985391852798 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2632.94722052838, + 2631.725690292548, + 2629.3090371009102 + ], + [ + 2587.91087441954, + 2577.893162490877, + 2576.5388949462267 + ], + [ + 2655.985391852798, + 2642.7200589743707, + 2647.094656197051 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69241.14943496707, + "scoreError" : 1906.8418686539374, + "scoreConfidence" : [ + 67334.30756631313, + 71147.991303621 + ], + "scorePercentiles" : { + "0.0" : 68226.68138216344, + "50.0" : 69000.80238236197, + "90.0" : 71147.5302712457, + "95.0" : 71147.5302712457, + "99.0" : 71147.5302712457, + "99.9" : 71147.5302712457, + "99.99" : 71147.5302712457, + "99.999" : 71147.5302712457, + "99.9999" : 71147.5302712457, + "100.0" : 71147.5302712457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69164.10201917295, + 71123.49922799463, + 71147.5302712457 + ], + [ + 68309.53933395917, + 68228.17762326672, + 68226.68138216344 + ], + [ + 69036.53690521562, + 69000.80238236197, + 68933.47576932357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.2792670791336, + "scoreError" : 3.5350193767648963, + "scoreConfidence" : [ + 338.7442477023687, + 345.8142864558985 + ], + "scorePercentiles" : { + "0.0" : 339.88258625164644, + "50.0" : 342.3836016058778, + "90.0" : 347.12623720195, + "95.0" : 347.12623720195, + "99.0" : 347.12623720195, + "99.9" : 347.12623720195, + "99.99" : 347.12623720195, + "99.999" : 347.12623720195, + "99.9999" : 347.12623720195, + "100.0" : 347.12623720195 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.5086562637084, + 342.3836016058778, + 342.5035533284069 + ], + [ + 340.4531462932821, + 339.88258625164644, + 340.67189221825595 + ], + [ + 347.12623720195, + 342.6374857222025, + 342.3462448268719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.16111747920324632, + "scoreError" : 0.0538676088832617, + "scoreConfidence" : [ + 0.10724987031998462, + 0.214985088086508 + ], + "scorePercentiles" : { + "0.0" : 0.15090960650630372, + "50.0" : 0.16161780119251848, + "90.0" : 0.17032470792164467, + "95.0" : 0.17032470792164467, + "99.0" : 0.17032470792164467, + "99.9" : 0.17032470792164467, + "99.99" : 0.17032470792164467, + "99.999" : 0.17032470792164467, + "99.9999" : 0.17032470792164467, + "100.0" : 0.17032470792164467 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.17032470792164467, + 0.16469967760454798 + ], + [ + 0.15853592478048897, + 0.15090960650630372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.10938930134132, + "scoreError" : 3.6282468011070375, + "scoreConfidence" : [ + 104.48114250023428, + 111.73763610244836 + ], + "scorePercentiles" : { + "0.0" : 105.30628681911303, + "50.0" : 108.78253762875588, + "90.0" : 110.65151009607298, + "95.0" : 110.65151009607298, + "99.0" : 110.65151009607298, + "99.9" : 110.65151009607298, + "99.99" : 110.65151009607298, + "99.999" : 110.65151009607298, + "99.9999" : 110.65151009607298, + "100.0" : 110.65151009607298 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.97352903064439, + 109.88250695762211, + 110.65151009607298 + ], + [ + 108.71518504389563, + 108.78253762875588, + 108.91094858170385 + ], + [ + 105.30628681911303, + 105.33335102787056, + 105.42864852639354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06258311150804946, + "scoreError" : 5.269476101376093E-4, + "scoreConfidence" : [ + 0.062056163897911853, + 0.06311005911818707 + ], + "scorePercentiles" : { + "0.0" : 0.0621607190755613, + "50.0" : 0.06271106371344003, + "90.0" : 0.06301436140797499, + "95.0" : 0.06301436140797499, + "99.0" : 0.06301436140797499, + "99.9" : 0.06301436140797499, + "99.99" : 0.06301436140797499, + "99.999" : 0.06301436140797499, + "99.9999" : 0.06301436140797499, + "100.0" : 0.06301436140797499 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06217967207620611, + 0.062247000311229796, + 0.0621607190755613 + ], + [ + 0.06257053132664298, + 0.06280703970606707, + 0.06301436140797499 + ], + [ + 0.06271106371344003, + 0.06273846189317038, + 0.06281915406215254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7221581397684265E-4, + "scoreError" : 1.177369956265137E-5, + "scoreConfidence" : [ + 3.6044211441419127E-4, + 3.83989513539494E-4 + ], + "scorePercentiles" : { + "0.0" : 3.651943797713429E-4, + "50.0" : 3.684511197112292E-4, + "90.0" : 3.8206138252579056E-4, + "95.0" : 3.8206138252579056E-4, + "99.0" : 3.8206138252579056E-4, + "99.9" : 3.8206138252579056E-4, + "99.99" : 3.8206138252579056E-4, + "99.999" : 3.8206138252579056E-4, + "99.9999" : 3.8206138252579056E-4, + "100.0" : 3.8206138252579056E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.667970103236022E-4, + 3.651943797713429E-4, + 3.6783979720932E-4 + ], + [ + 3.805402051279124E-4, + 3.8165769840827607E-4, + 3.8206138252579056E-4 + ], + [ + 3.6926042160078705E-4, + 3.684511197112292E-4, + 3.681403111133232E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10977070758028086, + "scoreError" : 0.0013676405767257937, + "scoreConfidence" : [ + 0.10840306700355506, + 0.11113834815700666 + ], + "scorePercentiles" : { + "0.0" : 0.10854249681978032, + "50.0" : 0.11023640924423475, + "90.0" : 0.11051916565359622, + "95.0" : 0.11051916565359622, + "99.0" : 0.11051916565359622, + "99.9" : 0.11051916565359622, + "99.99" : 0.11051916565359622, + "99.999" : 0.11051916565359622, + "99.9999" : 0.11051916565359622, + "100.0" : 0.11051916565359622 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11010809666266612, + 0.11031526147532845, + 0.11023640924423475 + ], + [ + 0.10854249681978032, + 0.10878423256497002, + 0.10877439167890357 + ], + [ + 0.11023944485354911, + 0.11041686926949916, + 0.11051916565359622 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01408694479338862, + "scoreError" : 1.0565525131245779E-4, + "scoreConfidence" : [ + 0.013981289542076161, + 0.014192600044701078 + ], + "scorePercentiles" : { + "0.0" : 0.013995514641236181, + "50.0" : 0.014123541616587599, + "90.0" : 0.014144480601811319, + "95.0" : 0.014144480601811319, + "99.0" : 0.014144480601811319, + "99.9" : 0.014144480601811319, + "99.99" : 0.014144480601811319, + "99.999" : 0.014144480601811319, + "99.9999" : 0.014144480601811319, + "100.0" : 0.014144480601811319 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014125111797425873, + 0.014123541616587599, + 0.014107840634280193 + ], + [ + 0.013995514641236181, + 0.014009519051288158, + 0.01400795923450177 + ], + [ + 0.014136497413054602, + 0.01413203815031189, + 0.014144480601811319 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9939279989700756, + "scoreError" : 0.020666613290608375, + "scoreConfidence" : [ + 0.9732613856794672, + 1.014594612260684 + ], + "scorePercentiles" : { + "0.0" : 0.979461177668952, + "50.0" : 0.9925874555831266, + "90.0" : 1.0138561537915654, + "95.0" : 1.0138561537915654, + "99.0" : 1.0138561537915654, + "99.9" : 1.0138561537915654, + "99.99" : 1.0138561537915654, + "99.999" : 1.0138561537915654, + "99.9999" : 1.0138561537915654, + "100.0" : 1.0138561537915654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9872934017178399, + 1.012256402631579, + 1.0138561537915654 + ], + [ + 0.9864056460840402, + 0.9957079935284747, + 0.996353598684866 + ], + [ + 0.9814301610402355, + 0.979461177668952, + 0.9925874555831266 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013255854812593525, + "scoreError" : 2.4951556212009034E-4, + "scoreConfidence" : [ + 0.013006339250473434, + 0.013505370374713615 + ], + "scorePercentiles" : { + "0.0" : 0.013096687724766557, + "50.0" : 0.013276384707824045, + "90.0" : 0.01332916270799678, + "95.0" : 0.01332916270799678, + "99.0" : 0.01332916270799678, + "99.9" : 0.01332916270799678, + "99.99" : 0.01332916270799678, + "99.999" : 0.01332916270799678, + "99.9999" : 0.01332916270799678, + "100.0" : 0.01332916270799678 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01332916270799678, + 0.013321451000817918, + 0.013317007143066405 + ], + [ + 0.013096687724766557, + 0.013235058026331811, + 0.013235762272581683 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8869303000430793, + "scoreError" : 0.031746190577912885, + "scoreConfidence" : [ + 3.855184109465166, + 3.9186764906209923 + ], + "scorePercentiles" : { + "0.0" : 3.873573435321456, + "50.0" : 3.8883467326180607, + "90.0" : 3.899414849571317, + "95.0" : 3.899414849571317, + "99.0" : 3.899414849571317, + "99.9" : 3.899414849571317, + "99.99" : 3.899414849571317, + "99.999" : 3.899414849571317, + "99.9999" : 3.899414849571317, + "100.0" : 3.899414849571317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.873573435321456, + 3.8751488048024787, + 3.8825463905279505 + ], + [ + 3.899414849571317, + 3.894147074708171, + 3.8967512453271027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9541461609155713, + "scoreError" : 0.038795008077040734, + "scoreConfidence" : [ + 2.9153511528385305, + 2.992941168992612 + ], + "scorePercentiles" : { + "0.0" : 2.914105585664336, + "50.0" : 2.9453822176089517, + "90.0" : 2.986228295013437, + "95.0" : 2.986228295013437, + "99.0" : 2.986228295013437, + "99.9" : 2.986228295013437, + "99.99" : 2.986228295013437, + "99.999" : 2.986228295013437, + "99.9999" : 2.986228295013437, + "100.0" : 2.986228295013437 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.973226924197384, + 2.986228295013437, + 2.97903182365207 + ], + [ + 2.9640392243627742, + 2.9418444729411766, + 2.939128399059653 + ], + [ + 2.914105585664336, + 2.944328505740359, + 2.9453822176089517 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.671671494625, + "scoreError" : 1.427425309256216, + "scoreConfidence" : [ + 5.244246185368785, + 8.099096803881217 + ], + "scorePercentiles" : { + "0.0" : 6.3983953535, + "50.0" : 6.67918252625, + "90.0" : 6.9299255725, + "95.0" : 6.9299255725, + "99.0" : 6.9299255725, + "99.9" : 6.9299255725, + "99.99" : 6.9299255725, + "99.999" : 6.9299255725, + "99.9999" : 6.9299255725, + "100.0" : 6.9299255725 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.9299255725, + 6.728663891 + ], + [ + 6.3983953535, + 6.6297011615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17529723927871282, + "scoreError" : 0.0031816027588813787, + "scoreConfidence" : [ + 0.17211563651983144, + 0.1784788420375942 + ], + "scorePercentiles" : { + "0.0" : 0.172653693651698, + "50.0" : 0.17636829038288565, + "90.0" : 0.17688169380571672, + "95.0" : 0.17688169380571672, + "99.0" : 0.17688169380571672, + "99.9" : 0.17688169380571672, + "99.99" : 0.17688169380571672, + "99.999" : 0.17688169380571672, + "99.9999" : 0.17688169380571672, + "100.0" : 0.17688169380571672 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17289628023858922, + 0.172653693651698, + 0.17283391348081575 + ], + [ + 0.17636829038288565, + 0.1761232168369144, + 0.1763793540398963 + ], + [ + 0.1768444755252175, + 0.17669423554668173, + 0.17688169380571672 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3241345741846201, + "scoreError" : 0.002621936054513108, + "scoreConfidence" : [ + 0.321512638130107, + 0.3267565102391332 + ], + "scorePercentiles" : { + "0.0" : 0.32175236955052927, + "50.0" : 0.32450469883505856, + "90.0" : 0.32644549226349806, + "95.0" : 0.32644549226349806, + "99.0" : 0.32644549226349806, + "99.9" : 0.32644549226349806, + "99.99" : 0.32644549226349806, + "99.999" : 0.32644549226349806, + "99.9999" : 0.32644549226349806, + "100.0" : 0.32644549226349806 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32410530303030305, + 0.32450469883505856, + 0.3245193459890966 + ], + [ + 0.32644549226349806, + 0.3253919584811115, + 0.3252804277907885 + ], + [ + 0.32315627156983134, + 0.32175236955052927, + 0.3220553001513639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16538222438793435, + "scoreError" : 0.003477002178493912, + "scoreConfidence" : [ + 0.16190522220944042, + 0.16885922656642827 + ], + "scorePercentiles" : { + "0.0" : 0.16347978162854948, + "50.0" : 0.16441667545172056, + "90.0" : 0.16834960779098346, + "95.0" : 0.16834960779098346, + "99.0" : 0.16834960779098346, + "99.9" : 0.16834960779098346, + "99.99" : 0.16834960779098346, + "99.999" : 0.16834960779098346, + "99.9999" : 0.16834960779098346, + "100.0" : 0.16834960779098346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16834960779098346, + 0.16795209213664306, + 0.16797631347319975 + ], + [ + 0.16347978162854948, + 0.16370579234194416, + 0.16371023036752066 + ], + [ + 0.16441667545172056, + 0.16466946952856132, + 0.16418005677228698 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38983976775589047, + "scoreError" : 0.0029368725353503514, + "scoreConfidence" : [ + 0.3869028952205401, + 0.3927766402912408 + ], + "scorePercentiles" : { + "0.0" : 0.38760766441860467, + "50.0" : 0.3900748257986504, + "90.0" : 0.392181996156712, + "95.0" : 0.392181996156712, + "99.0" : 0.392181996156712, + "99.9" : 0.392181996156712, + "99.99" : 0.392181996156712, + "99.999" : 0.392181996156712, + "99.9999" : 0.392181996156712, + "100.0" : 0.392181996156712 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.391200565309236, + 0.3900748257986504, + 0.3896598868843516 + ], + [ + 0.38780298379028194, + 0.38760766441860467, + 0.3877373259276492 + ], + [ + 0.39129563012090623, + 0.392181996156712, + 0.39099703139662184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15630790531466518, + "scoreError" : 0.003333830035347559, + "scoreConfidence" : [ + 0.1529740752793176, + 0.15964173535001275 + ], + "scorePercentiles" : { + "0.0" : 0.1542653814886232, + "50.0" : 0.1556865988043529, + "90.0" : 0.1589805362468602, + "95.0" : 0.1589805362468602, + "99.0" : 0.1589805362468602, + "99.9" : 0.1589805362468602, + "99.99" : 0.1589805362468602, + "99.999" : 0.1589805362468602, + "99.9999" : 0.1589805362468602, + "100.0" : 0.1589805362468602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15888887718266895, + 0.1589805362468602, + 0.15867289492891598 + ], + [ + 0.1558002886143396, + 0.1556865988043529, + 0.155496769541758 + ], + [ + 0.1544361401942767, + 0.1542653814886232, + 0.154543660830191 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04772426326987242, + "scoreError" : 9.827650192634106E-4, + "scoreConfidence" : [ + 0.046741498250609005, + 0.04870702828913583 + ], + "scorePercentiles" : { + "0.0" : 0.04705741660823777, + "50.0" : 0.04782632825584788, + "90.0" : 0.04869421438310139, + "95.0" : 0.04869421438310139, + "99.0" : 0.04869421438310139, + "99.9" : 0.04869421438310139, + "99.99" : 0.04869421438310139, + "99.999" : 0.04869421438310139, + "99.9999" : 0.04869421438310139, + "100.0" : 0.04869421438310139 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04782632825584788, + 0.047424349873141584, + 0.047841863523501976 + ], + [ + 0.04869421438310139, + 0.04827508779187928, + 0.04816352189241387 + ], + [ + 0.0471654166057456, + 0.0470701704949824, + 0.04705741660823777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9401129.078227697, + "scoreError" : 284192.2396809549, + "scoreConfidence" : [ + 9116936.838546742, + 9685321.317908652 + ], + "scorePercentiles" : { + "0.0" : 9196445.55514706, + "50.0" : 9416180.048918156, + "90.0" : 9650362.570877532, + "95.0" : 9650362.570877532, + "99.0" : 9650362.570877532, + "99.9" : 9650362.570877532, + "99.99" : 9650362.570877532, + "99.999" : 9650362.570877532, + "99.9999" : 9650362.570877532, + "100.0" : 9650362.570877532 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9196445.55514706, + 9211536.816758748, + 9202149.348666053 + ], + [ + 9650362.570877532, + 9586731.591954023, + 9519164.273073263 + ], + [ + 9400970.309210526, + 9426621.189443922, + 9416180.048918156 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-01T11:19:28Z-5853d24aabb5d0798db3489ce7cfd56563327b47-jdk17.json b/performance-results/2025-05-01T11:19:28Z-5853d24aabb5d0798db3489ce7cfd56563327b47-jdk17.json new file mode 100644 index 0000000000..d17a2e25dd --- /dev/null +++ b/performance-results/2025-05-01T11:19:28Z-5853d24aabb5d0798db3489ce7cfd56563327b47-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4331544089953354, + "scoreError" : 0.03177968229117539, + "scoreConfidence" : [ + 3.40137472670416, + 3.4649340912865108 + ], + "scorePercentiles" : { + "0.0" : 3.4277164851193134, + "50.0" : 3.4332792272710844, + "90.0" : 3.438342696319859, + "95.0" : 3.438342696319859, + "99.0" : 3.438342696319859, + "99.9" : 3.438342696319859, + "99.99" : 3.438342696319859, + "99.999" : 3.438342696319859, + "99.9999" : 3.438342696319859, + "100.0" : 3.438342696319859 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4277164851193134, + 3.4304474494937147 + ], + [ + 3.4361110050484545, + 3.438342696319859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.731349118324024, + "scoreError" : 0.01821960210623778, + "scoreConfidence" : [ + 1.7131295162177862, + 1.7495687204302617 + ], + "scorePercentiles" : { + "0.0" : 1.727723323161049, + "50.0" : 1.7318234320563273, + "90.0" : 1.7340262860223925, + "95.0" : 1.7340262860223925, + "99.0" : 1.7340262860223925, + "99.9" : 1.7340262860223925, + "99.99" : 1.7340262860223925, + "99.999" : 1.7340262860223925, + "99.9999" : 1.7340262860223925, + "100.0" : 1.7340262860223925 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727723323161049, + 1.730581410103184 + ], + [ + 1.7330654540094705, + 1.7340262860223925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683275840915288, + "scoreError" : 0.009787509044077934, + "scoreConfidence" : [ + 0.8585400750474509, + 0.8781150931356067 + ], + "scorePercentiles" : { + "0.0" : 0.8675290163998897, + "50.0" : 0.8675913449020631, + "90.0" : 0.8705986301620992, + "95.0" : 0.8705986301620992, + "99.0" : 0.8705986301620992, + "99.9" : 0.8705986301620992, + "99.99" : 0.8705986301620992, + "99.999" : 0.8705986301620992, + "99.9999" : 0.8705986301620992, + "100.0" : 0.8705986301620992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675290163998897, + 0.8675536902217257 + ], + [ + 0.8676289995824007, + 0.8705986301620992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.301823621536087, + "scoreError" : 0.16475613077645887, + "scoreConfidence" : [ + 16.137067490759627, + 16.466579752312548 + ], + "scorePercentiles" : { + "0.0" : 16.1660826243866, + "50.0" : 16.343464106610817, + "90.0" : 16.3901176261365, + "95.0" : 16.3901176261365, + "99.0" : 16.3901176261365, + "99.9" : 16.3901176261365, + "99.99" : 16.3901176261365, + "99.999" : 16.3901176261365, + "99.9999" : 16.3901176261365, + "100.0" : 16.3901176261365 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.379685416293235, + 16.343181865917316, + 16.343464106610817 + ], + [ + 16.1660826243866, + 16.181717489867033, + 16.170711088901847 + ], + [ + 16.365197369399212, + 16.3901176261365, + 16.376255006312228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2727.7510559201937, + "scoreError" : 68.74168751625591, + "scoreConfidence" : [ + 2659.009368403938, + 2796.4927434364495 + ], + "scorePercentiles" : { + "0.0" : 2690.775685817979, + "50.0" : 2704.363055657605, + "90.0" : 2783.719272858419, + "95.0" : 2783.719272858419, + "99.0" : 2783.719272858419, + "99.9" : 2783.719272858419, + "99.99" : 2783.719272858419, + "99.999" : 2783.719272858419, + "99.9999" : 2783.719272858419, + "100.0" : 2783.719272858419 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2783.719272858419, + 2779.225474967515, + 2782.3951254669596 + ], + [ + 2698.3864458398625, + 2700.430783644288, + 2690.775685817979 + ], + [ + 2711.6347176328904, + 2698.8289413962284, + 2704.363055657605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69963.05784238216, + "scoreError" : 1755.5857351594716, + "scoreConfidence" : [ + 68207.47210722268, + 71718.64357754163 + ], + "scorePercentiles" : { + "0.0" : 69096.72488306968, + "50.0" : 69423.78823458655, + "90.0" : 71378.85768487239, + "95.0" : 71378.85768487239, + "99.0" : 71378.85768487239, + "99.9" : 71378.85768487239, + "99.99" : 71378.85768487239, + "99.999" : 71378.85768487239, + "99.9999" : 71378.85768487239, + "100.0" : 71378.85768487239 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69108.39910967356, + 69124.6150692585, + 69096.72488306968 + ], + [ + 69473.63631105285, + 69411.86763370689, + 69423.78823458655 + ], + [ + 71315.8989592746, + 71378.85768487239, + 71333.73269594439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.8189419846196, + "scoreError" : 4.117881347698783, + "scoreConfidence" : [ + 353.70106063692083, + 361.93682333231834 + ], + "scorePercentiles" : { + "0.0" : 354.3381288421538, + "50.0" : 358.4459490750687, + "90.0" : 360.571233302493, + "95.0" : 360.571233302493, + "99.0" : 360.571233302493, + "99.9" : 360.571233302493, + "99.99" : 360.571233302493, + "99.999" : 360.571233302493, + "99.9999" : 360.571233302493, + "100.0" : 360.571233302493 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 358.4459490750687, + 357.93090376557893, + 358.5789424874603 + ], + [ + 360.1331119729269, + 360.3222092455371, + 360.571233302493 + ], + [ + 354.3381288421538, + 354.7694417567496, + 355.28055741360777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1628404468743436, + "scoreError" : 0.0180067282313712, + "scoreConfidence" : [ + 0.1448337186429724, + 0.1808471751057148 + ], + "scorePercentiles" : { + "0.0" : 0.16013101812294775, + "50.0" : 0.1625851642098328, + "90.0" : 0.16606044095476102, + "95.0" : 0.16606044095476102, + "99.0" : 0.16606044095476102, + "99.9" : 0.16606044095476102, + "99.99" : 0.16606044095476102, + "99.999" : 0.16606044095476102, + "99.9999" : 0.16606044095476102, + "100.0" : 0.16606044095476102 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16423668838661862, + 0.16013101812294775 + ], + [ + 0.16606044095476102, + 0.16093364003304697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.00819460386987, + "scoreError" : 2.1012401340495, + "scoreConfidence" : [ + 104.90695446982036, + 109.10943473791937 + ], + "scorePercentiles" : { + "0.0" : 105.46958941538895, + "50.0" : 107.22162049147911, + "90.0" : 108.76068371977975, + "95.0" : 108.76068371977975, + "99.0" : 108.76068371977975, + "99.9" : 108.76068371977975, + "99.99" : 108.76068371977975, + "99.999" : 108.76068371977975, + "99.9999" : 108.76068371977975, + "100.0" : 108.76068371977975 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.8106626620419, + 108.76068371977975, + 108.34220607443652 + ], + [ + 107.1874512113681, + 107.2654229801758, + 107.22162049147911 + ], + [ + 105.46958941538895, + 105.48022985106704, + 105.53588502909172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061311000146145794, + "scoreError" : 4.3159681687185056E-4, + "scoreConfidence" : [ + 0.06087940332927395, + 0.06174259696301764 + ], + "scorePercentiles" : { + "0.0" : 0.060954215841765205, + "50.0" : 0.06127715635282944, + "90.0" : 0.06168272162322202, + "95.0" : 0.06168272162322202, + "99.0" : 0.06168272162322202, + "99.9" : 0.06168272162322202, + "99.99" : 0.06168272162322202, + "99.999" : 0.06168272162322202, + "99.9999" : 0.06168272162322202, + "100.0" : 0.06168272162322202 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06096009053668528, + 0.06125375765352999, + 0.060954215841765205 + ], + [ + 0.061524612443782725, + 0.06160351737499307, + 0.06168272162322202 + ], + [ + 0.06127715635282944, + 0.06125795435138165, + 0.06128497513712272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6496866033435037E-4, + "scoreError" : 1.676735138638407E-5, + "scoreConfidence" : [ + 3.482013089479663E-4, + 3.8173601172073444E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5160092519147956E-4, + "50.0" : 3.676415861598922E-4, + "90.0" : 3.7610264764731654E-4, + "95.0" : 3.7610264764731654E-4, + "99.0" : 3.7610264764731654E-4, + "99.9" : 3.7610264764731654E-4, + "99.99" : 3.7610264764731654E-4, + "99.999" : 3.7610264764731654E-4, + "99.9999" : 3.7610264764731654E-4, + "100.0" : 3.7610264764731654E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.741616669267054E-4, + 3.7406218729312316E-4, + 3.7610264764731654E-4 + ], + [ + 3.5160092519147956E-4, + 3.5286637087208225E-4, + 3.5249021028154576E-4 + ], + [ + 3.681727805733994E-4, + 3.6761956806360914E-4, + 3.676415861598922E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10678573452911717, + "scoreError" : 0.0032009021750539026, + "scoreConfidence" : [ + 0.10358483235406327, + 0.10998663670417108 + ], + "scorePercentiles" : { + "0.0" : 0.1045414161430946, + "50.0" : 0.10652317767741111, + "90.0" : 0.10908806842949242, + "95.0" : 0.10908806842949242, + "99.0" : 0.10908806842949242, + "99.9" : 0.10908806842949242, + "99.99" : 0.10908806842949242, + "99.999" : 0.10908806842949242, + "99.9999" : 0.10908806842949242, + "100.0" : 0.10908806842949242 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10905503311958821, + 0.10908806842949242, + 0.10906078671450695 + ], + [ + 0.10682793524196132, + 0.10652317767741111, + 0.10644720485390388 + ], + [ + 0.1045414161430946, + 0.10480142245860406, + 0.10472656612349196 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014037120829859633, + "scoreError" : 7.708600708813382E-5, + "scoreConfidence" : [ + 0.013960034822771498, + 0.014114206836947767 + ], + "scorePercentiles" : { + "0.0" : 0.013974094751669186, + "50.0" : 0.01404556190860098, + "90.0" : 0.014089196923800883, + "95.0" : 0.014089196923800883, + "99.0" : 0.014089196923800883, + "99.9" : 0.014089196923800883, + "99.99" : 0.014089196923800883, + "99.999" : 0.014089196923800883, + "99.9999" : 0.014089196923800883, + "100.0" : 0.014089196923800883 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014089196923800883, + 0.014078045303976293, + 0.014077113184174149 + ], + [ + 0.013983831954077637, + 0.013974094751669186, + 0.013979940247637768 + ], + [ + 0.01404556190860098, + 0.014062676414793189, + 0.014043626780006629 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9639536792613548, + "scoreError" : 0.015245548974456803, + "scoreConfidence" : [ + 0.9487081302868979, + 0.9791992282358116 + ], + "scorePercentiles" : { + "0.0" : 0.9548244862516708, + "50.0" : 0.9588513089165868, + "90.0" : 0.9772749397048763, + "95.0" : 0.9772749397048763, + "99.0" : 0.9772749397048763, + "99.9" : 0.9772749397048763, + "99.99" : 0.9772749397048763, + "99.999" : 0.9772749397048763, + "99.9999" : 0.9772749397048763, + "100.0" : 0.9772749397048763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9738222115103711, + 0.9762625546661461, + 0.9772749397048763 + ], + [ + 0.9588035496644295, + 0.9607213345182054, + 0.9548244862516708 + ], + [ + 0.956337170125275, + 0.9588513089165868, + 0.958685557994632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01289778096567619, + "scoreError" : 3.6453540731185274E-4, + "scoreConfidence" : [ + 0.012533245558364336, + 0.013262316372988043 + ], + "scorePercentiles" : { + "0.0" : 0.012703689044095976, + "50.0" : 0.012933667693141103, + "90.0" : 0.013015965068605478, + "95.0" : 0.013015965068605478, + "99.0" : 0.013015965068605478, + "99.9" : 0.013015965068605478, + "99.99" : 0.013015965068605478, + "99.999" : 0.013015965068605478, + "99.9999" : 0.013015965068605478, + "100.0" : 0.013015965068605478 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013005510625237344, + 0.012996688934636088, + 0.013015965068605478 + ], + [ + 0.012703689044095976, + 0.012870646451646118, + 0.012794185669836136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.674057934612236, + "scoreError" : 0.12087799342201626, + "scoreConfidence" : [ + 3.5531799411902196, + 3.7949359280342523 + ], + "scorePercentiles" : { + "0.0" : 3.617333802603037, + "50.0" : 3.6772550161617636, + "90.0" : 3.7151268610698365, + "95.0" : 3.7151268610698365, + "99.0" : 3.7151268610698365, + "99.9" : 3.7151268610698365, + "99.99" : 3.7151268610698365, + "99.999" : 3.7151268610698365, + "99.9999" : 3.7151268610698365, + "100.0" : 3.7151268610698365 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.706195300740741, + 3.7151268610698365, + 3.7150756567607726 + ], + [ + 3.617333802603037, + 3.6483147315827864, + 3.6423012549162417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8091278993146394, + "scoreError" : 0.030001576195461992, + "scoreConfidence" : [ + 2.7791263231191774, + 2.8391294755101013 + ], + "scorePercentiles" : { + "0.0" : 2.782211942141864, + "50.0" : 2.8196893963913165, + "90.0" : 2.8240205011293056, + "95.0" : 2.8240205011293056, + "99.0" : 2.8240205011293056, + "99.9" : 2.8240205011293056, + "99.99" : 2.8240205011293056, + "99.999" : 2.8240205011293056, + "99.9999" : 2.8240205011293056, + "100.0" : 2.8240205011293056 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8226192842224105, + 2.8196893963913165, + 2.8240205011293056 + ], + [ + 2.7931045322535604, + 2.7824341863699584, + 2.782211942141864 + ], + [ + 2.815133274134534, + 2.8217641343115125, + 2.821173842877292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.1550624795, + "scoreError" : 1.3772840632565821, + "scoreConfidence" : [ + 4.777778416243418, + 7.532346542756581 + ], + "scorePercentiles" : { + "0.0" : 5.93547497, + "50.0" : 6.12984728875, + "90.0" : 6.4250803705, + "95.0" : 6.4250803705, + "99.0" : 6.4250803705, + "99.9" : 6.4250803705, + "99.99" : 6.4250803705, + "99.999" : 6.4250803705, + "99.9999" : 6.4250803705, + "100.0" : 6.4250803705 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.046536982, + 6.2131575955 + ], + [ + 5.93547497, + 6.4250803705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17366173452942113, + "scoreError" : 0.007676119542253908, + "scoreConfidence" : [ + 0.1659856149871672, + 0.18133785407167505 + ], + "scorePercentiles" : { + "0.0" : 0.1697848606451613, + "50.0" : 0.17142281736834888, + "90.0" : 0.17983730943945905, + "95.0" : 0.17983730943945905, + "99.0" : 0.17983730943945905, + "99.9" : 0.17983730943945905, + "99.99" : 0.17983730943945905, + "99.999" : 0.17983730943945905, + "99.9999" : 0.17983730943945905, + "100.0" : 0.17983730943945905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1697848606451613, + 0.1699338216252039, + 0.16989955813795446 + ], + [ + 0.17983730943945905, + 0.17953908820466785, + 0.17967764846557424 + ], + [ + 0.17146787827712145, + 0.1713926286012991, + 0.17142281736834888 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3303097706864887, + "scoreError" : 0.0018546913437811911, + "scoreConfidence" : [ + 0.3284550793427075, + 0.3321644620302699 + ], + "scorePercentiles" : { + "0.0" : 0.3290259291636507, + "50.0" : 0.3301188618492721, + "90.0" : 0.33182816315492586, + "95.0" : 0.33182816315492586, + "99.0" : 0.33182816315492586, + "99.9" : 0.33182816315492586, + "99.99" : 0.33182816315492586, + "99.999" : 0.33182816315492586, + "99.9999" : 0.33182816315492586, + "100.0" : 0.33182816315492586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3301188618492721, + 0.3299398862714045, + 0.32923145221399175 + ], + [ + 0.33028759861945967, + 0.32920082694143593, + 0.3290259291636507 + ], + [ + 0.3316493930620502, + 0.33150582490220776, + 0.33182816315492586 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16833527674216875, + "scoreError" : 0.010108659288660655, + "scoreConfidence" : [ + 0.1582266174535081, + 0.1784439360308294 + ], + "scorePercentiles" : { + "0.0" : 0.16105653531107567, + "50.0" : 0.16847778344228048, + "90.0" : 0.1756378751778281, + "95.0" : 0.1756378751778281, + "99.0" : 0.1756378751778281, + "99.9" : 0.1756378751778281, + "99.99" : 0.1756378751778281, + "99.999" : 0.1756378751778281, + "99.9999" : 0.1756378751778281, + "100.0" : 0.1756378751778281 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16799141508197823, + 0.16849116833751748, + 0.16847778344228048 + ], + [ + 0.1756378751778281, + 0.17518834003118267, + 0.17502095011988728 + ], + [ + 0.16158091387946358, + 0.16157250929830513, + 0.16105653531107567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3886825167716063, + "scoreError" : 0.0136787565561771, + "scoreConfidence" : [ + 0.3750037602154292, + 0.40236127332778343 + ], + "scorePercentiles" : { + "0.0" : 0.38137406479292196, + "50.0" : 0.38508448415418384, + "90.0" : 0.40037342581471697, + "95.0" : 0.40037342581471697, + "99.0" : 0.40037342581471697, + "99.9" : 0.40037342581471697, + "99.99" : 0.40037342581471697, + "99.999" : 0.40037342581471697, + "99.9999" : 0.40037342581471697, + "100.0" : 0.40037342581471697 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38508448415418384, + 0.38286303518376724, + 0.38205842162368675 + ], + [ + 0.40037342581471697, + 0.39901259314527393, + 0.39812480484891916 + ], + [ + 0.3878287897614892, + 0.38142303161949803, + 0.38137406479292196 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15697485930277733, + "scoreError" : 0.0021114974464798548, + "scoreConfidence" : [ + 0.15486336185629748, + 0.15908635674925717 + ], + "scorePercentiles" : { + "0.0" : 0.1557953886396211, + "50.0" : 0.1569588983394023, + "90.0" : 0.15956860461145683, + "95.0" : 0.15956860461145683, + "99.0" : 0.15956860461145683, + "99.9" : 0.15956860461145683, + "99.99" : 0.15956860461145683, + "99.999" : 0.15956860461145683, + "99.9999" : 0.15956860461145683, + "100.0" : 0.15956860461145683 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1569588983394023, + 0.1557953886396211, + 0.15597408592507098 + ], + [ + 0.15710531805256625, + 0.156042505352183, + 0.15583136555872407 + ], + [ + 0.15956860461145683, + 0.1579921334049545, + 0.15750543384101684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04611423230893656, + "scoreError" : 0.001335790267434904, + "scoreConfidence" : [ + 0.04477844204150166, + 0.047450022576371466 + ], + "scorePercentiles" : { + "0.0" : 0.045298149155429124, + "50.0" : 0.04593333518441964, + "90.0" : 0.0471357658138351, + "95.0" : 0.0471357658138351, + "99.0" : 0.0471357658138351, + "99.9" : 0.0471357658138351, + "99.99" : 0.0471357658138351, + "99.999" : 0.0471357658138351, + "99.9999" : 0.0471357658138351, + "100.0" : 0.0471357658138351 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045300807850509626, + 0.04531304694367665, + 0.045298149155429124 + ], + [ + 0.04712368901088544, + 0.0471357658138351, + 0.04707212910286524 + ], + [ + 0.04595271881462011, + 0.04593333518441964, + 0.045898448904188184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9386046.012497738, + "scoreError" : 442451.58751577395, + "scoreConfidence" : [ + 8943594.424981965, + 9828497.600013511 + ], + "scorePercentiles" : { + "0.0" : 9056526.171040723, + "50.0" : 9405550.32612782, + "90.0" : 9679187.61025145, + "95.0" : 9679187.61025145, + "99.0" : 9679187.61025145, + "99.9" : 9679187.61025145, + "99.99" : 9679187.61025145, + "99.999" : 9679187.61025145, + "99.9999" : 9679187.61025145, + "100.0" : 9679187.61025145 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9056526.171040723, + 9082294.342105264, + 9074768.792196007 + ], + [ + 9678359.470986461, + 9679187.61025145, + 9675365.270793037 + ], + [ + 9419148.11676083, + 9405550.32612782, + 9403214.012218045 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-01T11:56:38Z-876c9ae43e9b40fa87cf9e89e58309da6a8120df-jdk17.json b/performance-results/2025-05-01T11:56:38Z-876c9ae43e9b40fa87cf9e89e58309da6a8120df-jdk17.json new file mode 100644 index 0000000000..2aadf10372 --- /dev/null +++ b/performance-results/2025-05-01T11:56:38Z-876c9ae43e9b40fa87cf9e89e58309da6a8120df-jdk17.json @@ -0,0 +1,1473 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.43111087891561, + "scoreError" : 0.023550850239527854, + "scoreConfidence" : [ + 3.407560028676082, + 3.454661729155138 + ], + "scorePercentiles" : { + "0.0" : 3.4267768991920184, + "50.0" : 3.4314114501311526, + "90.0" : 3.434843716208115, + "95.0" : 3.434843716208115, + "99.0" : 3.434843716208115, + "99.9" : 3.434843716208115, + "99.99" : 3.434843716208115, + "99.999" : 3.434843716208115, + "99.9999" : 3.434843716208115, + "100.0" : 3.434843716208115 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4267768991920184, + 3.4332755103001062 + ], + [ + 3.4295473899621984, + 3.434843716208115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7297428097536118, + "scoreError" : 0.011833830658248551, + "scoreConfidence" : [ + 1.7179089790953632, + 1.7415766404118604 + ], + "scorePercentiles" : { + "0.0" : 1.7277556040215192, + "50.0" : 1.7296993377226184, + "90.0" : 1.731816959547691, + "95.0" : 1.731816959547691, + "99.0" : 1.731816959547691, + "99.9" : 1.731816959547691, + "99.99" : 1.731816959547691, + "99.999" : 1.731816959547691, + "99.9999" : 1.731816959547691, + "100.0" : 1.731816959547691 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7306496265719902, + 1.731816959547691 + ], + [ + 1.7277556040215192, + 1.7287490488732467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680423469955787, + "scoreError" : 0.009719293368076446, + "scoreConfidence" : [ + 0.8583230536275023, + 0.8777616403636551 + ], + "scorePercentiles" : { + "0.0" : 0.8667726481012058, + "50.0" : 0.8676674128737308, + "90.0" : 0.8700619141336473, + "95.0" : 0.8700619141336473, + "99.0" : 0.8700619141336473, + "99.9" : 0.8700619141336473, + "99.99" : 0.8700619141336473, + "99.999" : 0.8700619141336473, + "99.9999" : 0.8700619141336473, + "100.0" : 0.8700619141336473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8670291517610635, + 0.8700619141336473 + ], + [ + 0.8667726481012058, + 0.8683056739863981 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.085033805728045, + "scoreError" : 0.13699063750964222, + "scoreConfidence" : [ + 15.948043168218403, + 16.222024443237686 + ], + "scorePercentiles" : { + "0.0" : 15.964636738350794, + "50.0" : 16.083198389066595, + "90.0" : 16.199350794047188, + "95.0" : 16.199350794047188, + "99.0" : 16.199350794047188, + "99.9" : 16.199350794047188, + "99.99" : 16.199350794047188, + "99.999" : 16.199350794047188, + "99.9999" : 16.199350794047188, + "100.0" : 16.199350794047188 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.147409173147874, + 16.07540109263212, + 15.989465221885307 + ], + [ + 16.083198389066595, + 15.964636738350794, + 16.014324161273485 + ], + [ + 16.199350794047188, + 16.15304756178801, + 16.138471119361043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2664.565367803272, + "scoreError" : 50.97428669473854, + "scoreConfidence" : [ + 2613.591081108533, + 2715.5396544980103 + ], + "scorePercentiles" : { + "0.0" : 2612.856685825606, + "50.0" : 2660.3087744250174, + "90.0" : 2704.91588752433, + "95.0" : 2704.91588752433, + "99.0" : 2704.91588752433, + "99.9" : 2704.91588752433, + "99.99" : 2704.91588752433, + "99.999" : 2704.91588752433, + "99.9999" : 2704.91588752433, + "100.0" : 2704.91588752433 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2704.91588752433, + 2696.098729080225, + 2691.457909427693 + ], + [ + 2612.856685825606, + 2676.9439663385883, + 2660.3087744250174 + ], + [ + 2656.2926714270757, + 2640.301093809492, + 2641.9125923714187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69866.4139868763, + "scoreError" : 2432.456899095497, + "scoreConfidence" : [ + 67433.9570877808, + 72298.8708859718 + ], + "scorePercentiles" : { + "0.0" : 67680.92433743284, + "50.0" : 70738.39806420317, + "90.0" : 70933.92485270213, + "95.0" : 70933.92485270213, + "99.0" : 70933.92485270213, + "99.9" : 70933.92485270213, + "99.99" : 70933.92485270213, + "99.999" : 70933.92485270213, + "99.9999" : 70933.92485270213, + "100.0" : 70933.92485270213 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70873.31659954524, + 70885.73693928937, + 70738.39806420317 + ], + [ + 68194.93082832862, + 67680.92433743284, + 67964.70003183158 + ], + [ + 70850.97022886216, + 70933.92485270213, + 70674.82399969149 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.7039052887165, + "scoreError" : 3.1747703982745534, + "scoreConfidence" : [ + 348.5291348904419, + 354.8786756869911 + ], + "scorePercentiles" : { + "0.0" : 347.4143717028219, + "50.0" : 352.0290494603568, + "90.0" : 354.2249961867724, + "95.0" : 354.2249961867724, + "99.0" : 354.2249961867724, + "99.9" : 354.2249961867724, + "99.99" : 354.2249961867724, + "99.999" : 354.2249961867724, + "99.9999" : 354.2249961867724, + "100.0" : 354.2249961867724 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 352.97960222653427, + 352.49003031297866, + 352.0290494603568 + ], + [ + 354.2249961867724, + 352.2873474237736, + 351.7561364670655 + ], + [ + 347.4143717028219, + 350.678357043567, + 351.47525677457855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.16282654422383214, + "scoreError" : 0.03581156597913356, + "scoreConfidence" : [ + 0.12701497824469857, + 0.1986381102029657 + ], + "scorePercentiles" : { + "0.0" : 0.15737631327011145, + "50.0" : 0.1623262754255892, + "90.0" : 0.16927731277403876, + "95.0" : 0.16927731277403876, + "99.0" : 0.16927731277403876, + "99.9" : 0.16927731277403876, + "99.99" : 0.16927731277403876, + "99.999" : 0.16927731277403876, + "99.9999" : 0.16927731277403876, + "100.0" : 0.16927731277403876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16927731277403876, + 0.15737631327011145 + ], + [ + 0.16551369713520536, + 0.15913885371597303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.7223036733633, + "scoreError" : 4.988097830317343, + "scoreConfidence" : [ + 100.73420584304596, + 110.71040150368064 + ], + "scorePercentiles" : { + "0.0" : 101.94595520726325, + "50.0" : 105.9740605384487, + "90.0" : 109.70286096888644, + "95.0" : 109.70286096888644, + "99.0" : 109.70286096888644, + "99.9" : 109.70286096888644, + "99.99" : 109.70286096888644, + "99.999" : 109.70286096888644, + "99.9999" : 109.70286096888644, + "100.0" : 109.70286096888644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.70286096888644, + 108.61585910636695, + 108.77740921643134 + ], + [ + 102.70174866728841, + 101.94595520726325, + 102.06155210693345 + ], + [ + 105.70299248449716, + 106.01829476415398, + 105.9740605384487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062116702901546236, + "scoreError" : 5.562757128021455E-4, + "scoreConfidence" : [ + 0.06156042718874409, + 0.06267297861434838 + ], + "scorePercentiles" : { + "0.0" : 0.06159444896677035, + "50.0" : 0.06216501131383458, + "90.0" : 0.06278693511059766, + "95.0" : 0.06278693511059766, + "99.0" : 0.06278693511059766, + "99.9" : 0.06278693511059766, + "99.99" : 0.06278693511059766, + "99.999" : 0.06278693511059766, + "99.9999" : 0.06278693511059766, + "100.0" : 0.06278693511059766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06218421936386531, + 0.06223247550563196, + 0.06278693511059766 + ], + [ + 0.06227093330884047, + 0.06216501131383458, + 0.06183951484438288 + ], + [ + 0.062008989477208884, + 0.06159444896677035, + 0.06196779822278406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.699584597968717E-4, + "scoreError" : 4.511581519946409E-6, + "scoreConfidence" : [ + 3.6544687827692526E-4, + 3.744700413168181E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6487450924488303E-4, + "50.0" : 3.70099047461211E-4, + "90.0" : 3.742667936788574E-4, + "95.0" : 3.742667936788574E-4, + "99.0" : 3.742667936788574E-4, + "99.9" : 3.742667936788574E-4, + "99.99" : 3.742667936788574E-4, + "99.999" : 3.742667936788574E-4, + "99.9999" : 3.742667936788574E-4, + "100.0" : 3.742667936788574E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6487450924488303E-4, + 3.690437397365516E-4, + 3.6933393948953983E-4 + ], + [ + 3.7204387159876887E-4, + 3.742667936788574E-4, + 3.7115816656422196E-4 + ], + [ + 3.70099047461211E-4, + 3.7107693511109264E-4, + 3.6772913528671923E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1083441914749893, + "scoreError" : 0.002872250709849492, + "scoreConfidence" : [ + 0.10547194076513981, + 0.1112164421848388 + ], + "scorePercentiles" : { + "0.0" : 0.10622213899983005, + "50.0" : 0.10846203502169198, + "90.0" : 0.11038892573131692, + "95.0" : 0.11038892573131692, + "99.0" : 0.11038892573131692, + "99.9" : 0.11038892573131692, + "99.99" : 0.11038892573131692, + "99.999" : 0.11038892573131692, + "99.9999" : 0.11038892573131692, + "100.0" : 0.11038892573131692 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10846203502169198, + 0.1089636906020158, + 0.10809051231665531 + ], + [ + 0.11038264427396656, + 0.11038892573131692, + 0.10984348556678383 + ], + [ + 0.10622285035531054, + 0.10652144040733284, + 0.10622213899983005 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014119334075794207, + "scoreError" : 2.712655078104915E-4, + "scoreConfidence" : [ + 0.013848068567983715, + 0.014390599583604698 + ], + "scorePercentiles" : { + "0.0" : 0.013919332645726678, + "50.0" : 0.014096618926725299, + "90.0" : 0.01433968165432035, + "95.0" : 0.01433968165432035, + "99.0" : 0.01433968165432035, + "99.9" : 0.01433968165432035, + "99.99" : 0.01433968165432035, + "99.999" : 0.01433968165432035, + "99.9999" : 0.01433968165432035, + "100.0" : 0.01433968165432035 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013919332645726678, + 0.013941467566252563, + 0.013964327067149455 + ], + [ + 0.014080176032451597, + 0.014096618926725299, + 0.014144973943842268 + ], + [ + 0.014312755815917308, + 0.01433968165432035, + 0.01427467302976233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0004986570245231, + "scoreError" : 0.05042727555351308, + "scoreConfidence" : [ + 0.95007138147101, + 1.0509259325780362 + ], + "scorePercentiles" : { + "0.0" : 0.9653052558880308, + "50.0" : 1.0003774282284685, + "90.0" : 1.0426164286905755, + "95.0" : 1.0426164286905755, + "99.0" : 1.0426164286905755, + "99.9" : 1.0426164286905755, + "99.99" : 1.0426164286905755, + "99.999" : 1.0426164286905755, + "99.9999" : 1.0426164286905755, + "100.0" : 1.0426164286905755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0203349673502704, + 1.040820051415487, + 1.0426164286905755 + ], + [ + 0.9677289622604993, + 0.9653052558880308, + 0.968064897009002 + ], + [ + 1.0003774282284685, + 1.0043594710254093, + 0.9948804513529645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012812440824606525, + "scoreError" : 2.5041362909309804E-4, + "scoreConfidence" : [ + 0.012562027195513427, + 0.013062854453699623 + ], + "scorePercentiles" : { + "0.0" : 0.01267956478717874, + "50.0" : 0.012830737937680844, + "90.0" : 0.012930194764961133, + "95.0" : 0.012930194764961133, + "99.0" : 0.012930194764961133, + "99.9" : 0.012930194764961133, + "99.99" : 0.012930194764961133, + "99.999" : 0.012930194764961133, + "99.9999" : 0.012930194764961133, + "100.0" : 0.012930194764961133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012740929730459732, + 0.012930194764961133, + 0.012862479789677854 + ], + [ + 0.01267956478717874, + 0.012825123818513398, + 0.012836352056848289 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7447377736055967, + "scoreError" : 0.09612982210990338, + "scoreConfidence" : [ + 3.6486079514956935, + 3.8408675957155 + ], + "scorePercentiles" : { + "0.0" : 3.6995127374260357, + "50.0" : 3.7565718539785546, + "90.0" : 3.783590488653555, + "95.0" : 3.783590488653555, + "99.0" : 3.783590488653555, + "99.9" : 3.783590488653555, + "99.99" : 3.783590488653555, + "99.999" : 3.783590488653555, + "99.9999" : 3.783590488653555, + "100.0" : 3.783590488653555 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.706641014825797, + 3.7655386927710843, + 3.783590488653555 + ], + [ + 3.7654291603915664, + 3.6995127374260357, + 3.747714547565543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8834508207569516, + "scoreError" : 0.1212462521689161, + "scoreConfidence" : [ + 2.7622045685880354, + 3.0046970729258677 + ], + "scorePercentiles" : { + "0.0" : 2.801058332399888, + "50.0" : 2.8643350123138602, + "90.0" : 3.0050248563701922, + "95.0" : 3.0050248563701922, + "99.0" : 3.0050248563701922, + "99.9" : 3.0050248563701922, + "99.99" : 3.0050248563701922, + "99.999" : 3.0050248563701922, + "99.9999" : 3.0050248563701922, + "100.0" : 3.0050248563701922 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0050248563701922, + 2.9599527321692807, + 2.9227347285213328 + ], + [ + 2.801058332399888, + 2.810494565327339, + 2.815468326295045 + ], + [ + 2.9203442169343066, + 2.8643350123138602, + 2.851644616481323 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.255903795875, + "scoreError" : 1.2238425527609669, + "scoreConfidence" : [ + 5.032061243114033, + 7.479746348635967 + ], + "scorePercentiles" : { + "0.0" : 6.034213462, + "50.0" : 6.26329503775, + "90.0" : 6.462811646, + "95.0" : 6.462811646, + "99.0" : 6.462811646, + "99.9" : 6.462811646, + "99.99" : 6.462811646, + "99.999" : 6.462811646, + "99.9999" : 6.462811646, + "100.0" : 6.462811646 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.175147101, + 6.462811646 + ], + [ + 6.034213462, + 6.3514429745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18001828918530607, + "scoreError" : 0.0030242831183845483, + "scoreConfidence" : [ + 0.17699400606692153, + 0.18304257230369061 + ], + "scorePercentiles" : { + "0.0" : 0.17702600805452293, + "50.0" : 0.1808766457033299, + "90.0" : 0.1816479737344014, + "95.0" : 0.1816479737344014, + "99.0" : 0.1816479737344014, + "99.9" : 0.1816479737344014, + "99.99" : 0.1816479737344014, + "99.999" : 0.1816479737344014, + "99.9999" : 0.1816479737344014, + "100.0" : 0.1816479737344014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18146177963671994, + 0.1810151702778532, + 0.1808766457033299 + ], + [ + 0.1816479737344014, + 0.1807215504472757, + 0.18136137415669207 + ], + [ + 0.1783869673023065, + 0.17702600805452293, + 0.17766713335465303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32167037938706466, + "scoreError" : 0.013360558152904599, + "scoreConfidence" : [ + 0.30830982123416006, + 0.33503093753996926 + ], + "scorePercentiles" : { + "0.0" : 0.3116429008382935, + "50.0" : 0.32166399305220494, + "90.0" : 0.33116004900986823, + "95.0" : 0.33116004900986823, + "99.0" : 0.33116004900986823, + "99.9" : 0.33116004900986823, + "99.99" : 0.33116004900986823, + "99.999" : 0.33116004900986823, + "99.9999" : 0.33116004900986823, + "100.0" : 0.33116004900986823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31187029942304695, + 0.3116429008382935, + 0.31403847616505465 + ], + [ + 0.3309824036870325, + 0.33116004900986823, + 0.33021461725663714 + ], + [ + 0.32246738417386817, + 0.3209932908775759, + 0.32166399305220494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15728655136693948, + "scoreError" : 0.007831043057633151, + "scoreConfidence" : [ + 0.14945550830930632, + 0.16511759442457263 + ], + "scorePercentiles" : { + "0.0" : 0.15110916062497168, + "50.0" : 0.15855282616692035, + "90.0" : 0.16301074980031624, + "95.0" : 0.16301074980031624, + "99.0" : 0.16301074980031624, + "99.9" : 0.16301074980031624, + "99.99" : 0.16301074980031624, + "99.999" : 0.16301074980031624, + "99.9999" : 0.16301074980031624, + "100.0" : 0.16301074980031624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1617882048664477, + 0.16301074980031624, + 0.1608020581765557 + ], + [ + 0.1520033665754674, + 0.15110916062497168, + 0.15117529758125473 + ], + [ + 0.15855282616692035, + 0.15843901609708952, + 0.15869828241343192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.393933319138966, + "scoreError" : 0.00740009185476945, + "scoreConfidence" : [ + 0.38653322728419653, + 0.4013334109937355 + ], + "scorePercentiles" : { + "0.0" : 0.38828055294117647, + "50.0" : 0.396703518108612, + "90.0" : 0.3992958881613096, + "95.0" : 0.3992958881613096, + "99.0" : 0.3992958881613096, + "99.9" : 0.3992958881613096, + "99.99" : 0.3992958881613096, + "99.999" : 0.3992958881613096, + "99.9999" : 0.3992958881613096, + "100.0" : 0.3992958881613096 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3970287170080991, + 0.3969245985711451, + 0.39676444665740923 + ], + [ + 0.3992958881613096, + 0.39348996698670025, + 0.396703518108612 + ], + [ + 0.3885362804025177, + 0.38828055294117647, + 0.3883759034137248 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1581837547693671, + "scoreError" : 0.002828381951133783, + "scoreConfidence" : [ + 0.15535537281823333, + 0.16101213672050088 + ], + "scorePercentiles" : { + "0.0" : 0.15597313878187632, + "50.0" : 0.15750064592947255, + "90.0" : 0.1603225453539823, + "95.0" : 0.1603225453539823, + "99.0" : 0.1603225453539823, + "99.9" : 0.1603225453539823, + "99.99" : 0.1603225453539823, + "99.999" : 0.1603225453539823, + "99.9999" : 0.1603225453539823, + "100.0" : 0.1603225453539823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1603225453539823, + 0.16015349393036737, + 0.16017225207419034 + ], + [ + 0.15734491129083014, + 0.15750064592947255, + 0.15735382277505036 + ], + [ + 0.15849620418740293, + 0.15597313878187632, + 0.15633677860113185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04819242759723642, + "scoreError" : 0.0022432092299751144, + "scoreConfidence" : [ + 0.04594921836726131, + 0.050435636827211534 + ], + "scorePercentiles" : { + "0.0" : 0.046557766339215045, + "50.0" : 0.048149836047340244, + "90.0" : 0.0497915005327624, + "95.0" : 0.0497915005327624, + "99.0" : 0.0497915005327624, + "99.9" : 0.0497915005327624, + "99.99" : 0.0497915005327624, + "99.999" : 0.0497915005327624, + "99.9999" : 0.0497915005327624, + "100.0" : 0.0497915005327624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04682351307059479, + 0.046648382198317885, + 0.046557766339215045 + ], + [ + 0.0497915005327624, + 0.049706544163551775, + 0.049748964250890496 + ], + [ + 0.048307803636556866, + 0.048149836047340244, + 0.047997538135898285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9311862.99914772, + "scoreError" : 226318.11020111045, + "scoreConfidence" : [ + 9085544.88894661, + 9538181.109348832 + ], + "scorePercentiles" : { + "0.0" : 9113777.428051002, + "50.0" : 9348595.629906543, + "90.0" : 9461808.175023653, + "95.0" : 9461808.175023653, + "99.0" : 9461808.175023653, + "99.9" : 9461808.175023653, + "99.99" : 9461808.175023653, + "99.999" : 9461808.175023653, + "99.9999" : 9461808.175023653, + "100.0" : 9461808.175023653 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9364917.730337078, + 9348595.629906543, + 9320853.864864865 + ], + [ + 9113777.428051002, + 9129664.670620438, + 9192369.182904411 + ], + [ + 9428718.525918944, + 9446061.784702549, + 9461808.175023653 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-02T00:30:06Z-24b955a4d926a13b47f746c465ae6ae8fdb4ccf8-jdk17.json b/performance-results/2025-05-02T00:30:06Z-24b955a4d926a13b47f746c465ae6ae8fdb4ccf8-jdk17.json new file mode 100644 index 0000000000..1d0c41c288 --- /dev/null +++ b/performance-results/2025-05-02T00:30:06Z-24b955a4d926a13b47f746c465ae6ae8fdb4ccf8-jdk17.json @@ -0,0 +1,1383 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4243856111178195, + "scoreError" : 0.026687961567986532, + "scoreConfidence" : [ + 3.397697649549833, + 3.451073572685806 + ], + "scorePercentiles" : { + "0.0" : 3.4206764352036485, + "50.0" : 3.4234141671996174, + "90.0" : 3.4300376748683936, + "95.0" : 3.4300376748683936, + "99.0" : 3.4300376748683936, + "99.9" : 3.4300376748683936, + "99.99" : 3.4300376748683936, + "99.999" : 3.4300376748683936, + "99.9999" : 3.4300376748683936, + "100.0" : 3.4300376748683936 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4220763939500256, + 3.4247519404492093 + ], + [ + 3.4206764352036485, + 3.4300376748683936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7299134966509564, + "scoreError" : 0.017495983738753242, + "scoreConfidence" : [ + 1.7124175129122032, + 1.7474094803897096 + ], + "scorePercentiles" : { + "0.0" : 1.725861904409544, + "50.0" : 1.731162195838301, + "90.0" : 1.7314676905176798, + "95.0" : 1.7314676905176798, + "99.0" : 1.7314676905176798, + "99.9" : 1.7314676905176798, + "99.99" : 1.7314676905176798, + "99.999" : 1.7314676905176798, + "99.9999" : 1.7314676905176798, + "100.0" : 1.7314676905176798 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7310162123288497, + 1.7313081793477525 + ], + [ + 1.725861904409544, + 1.7314676905176798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8643696043999212, + "scoreError" : 0.03325214076174867, + "scoreConfidence" : [ + 0.8311174636381725, + 0.8976217451616698 + ], + "scorePercentiles" : { + "0.0" : 0.859094878124866, + "50.0" : 0.8647333011024333, + "90.0" : 0.8689169372699526, + "95.0" : 0.8689169372699526, + "99.0" : 0.8689169372699526, + "99.9" : 0.8689169372699526, + "99.99" : 0.8689169372699526, + "99.999" : 0.8689169372699526, + "99.9999" : 0.8689169372699526, + "100.0" : 0.8689169372699526 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.860817153668851, + 0.859094878124866 + ], + [ + 0.8686494485360156, + 0.8689169372699526 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.826238890603088, + "scoreError" : 0.5226062001932811, + "scoreConfidence" : [ + 15.303632690409808, + 16.34884509079637 + ], + "scorePercentiles" : { + "0.0" : 15.63902181680493, + "50.0" : 15.81351901611821, + "90.0" : 16.046870143027384, + "95.0" : 16.046870143027384, + "99.0" : 16.046870143027384, + "99.9" : 16.046870143027384, + "99.99" : 16.046870143027384, + "99.999" : 16.046870143027384, + "99.9999" : 16.046870143027384, + "100.0" : 16.046870143027384 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.046870143027384, + 15.951019844262966, + 15.983132782797945 + ], + [ + 15.661370568751853, + 15.63902181680493, + 15.676018187973455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2622.707372500936, + "scoreError" : 61.69216982398543, + "scoreConfidence" : [ + 2561.0152026769506, + 2684.399542324921 + ], + "scorePercentiles" : { + "0.0" : 2598.539744249902, + "50.0" : 2624.5569539614144, + "90.0" : 2645.559318887333, + "95.0" : 2645.559318887333, + "99.0" : 2645.559318887333, + "99.9" : 2645.559318887333, + "99.99" : 2645.559318887333, + "99.999" : 2645.559318887333, + "99.9999" : 2645.559318887333, + "100.0" : 2645.559318887333 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2608.1543192997337, + 2601.9459628493933, + 2598.539744249902 + ], + [ + 2641.0853010961564, + 2645.559318887333, + 2640.9595886230954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69527.00397996168, + "scoreError" : 3656.3613545614085, + "scoreConfidence" : [ + 65870.64262540027, + 73183.36533452309 + ], + "scorePercentiles" : { + "0.0" : 68289.81097269504, + "50.0" : 69524.47463057046, + "90.0" : 70747.30123467014, + "95.0" : 70747.30123467014, + "99.0" : 70747.30123467014, + "99.9" : 70747.30123467014, + "99.99" : 70747.30123467014, + "99.999" : 70747.30123467014, + "99.9999" : 70747.30123467014, + "100.0" : 70747.30123467014 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68289.81097269504, + 68369.69017469382, + 68351.89232669951 + ], + [ + 70747.30123467014, + 70724.07008456449, + 70679.2590864471 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.34708699055324, + "scoreError" : 12.499776908512432, + "scoreConfidence" : [ + 327.8473100820408, + 352.8468638990657 + ], + "scorePercentiles" : { + "0.0" : 335.21818269475693, + "50.0" : 340.5839377944749, + "90.0" : 344.83439984172765, + "95.0" : 344.83439984172765, + "99.0" : 344.83439984172765, + "99.9" : 344.83439984172765, + "99.99" : 344.83439984172765, + "99.999" : 344.83439984172765, + "99.9999" : 344.83439984172765, + "100.0" : 344.83439984172765 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.21818269475693, + 337.0684060726962, + 336.68520090098883 + ], + [ + 344.09946951625363, + 344.83439984172765, + 344.17686291689654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1617177265215101, + "scoreError" : 0.026305514696952997, + "scoreConfidence" : [ + 0.1354122118245571, + 0.1880232412184631 + ], + "scorePercentiles" : { + "0.0" : 0.15763519982340746, + "50.0" : 0.16138602094797083, + "90.0" : 0.16646366436669122, + "95.0" : 0.16646366436669122, + "99.0" : 0.16646366436669122, + "99.9" : 0.16646366436669122, + "99.99" : 0.16646366436669122, + "99.999" : 0.16646366436669122, + "99.9999" : 0.16646366436669122, + "100.0" : 0.16646366436669122 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16365575816783037, + 0.15763519982340746 + ], + [ + 0.16646366436669122, + 0.15911628372811126 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.13674301109596, + "scoreError" : 6.002710388364565, + "scoreConfidence" : [ + 98.1340326227314, + 110.13945339946052 + ], + "scorePercentiles" : { + "0.0" : 101.99977973901824, + "50.0" : 104.15057160506032, + "90.0" : 106.18050171345665, + "95.0" : 106.18050171345665, + "99.0" : 106.18050171345665, + "99.9" : 106.18050171345665, + "99.99" : 106.18050171345665, + "99.999" : 106.18050171345665, + "99.9999" : 106.18050171345665, + "100.0" : 106.18050171345665 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.18050171345665, + 105.95066027141591, + 106.12969937935499 + ], + [ + 101.99977973901824, + 102.20933402462518, + 102.35048293870474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06276416507349948, + "scoreError" : 4.7856568485136493E-4, + "scoreConfidence" : [ + 0.06228559938864812, + 0.06324273075835085 + ], + "scorePercentiles" : { + "0.0" : 0.0625393391327188, + "50.0" : 0.06284264966115377, + "90.0" : 0.06291919207731414, + "95.0" : 0.06291919207731414, + "99.0" : 0.06291919207731414, + "99.9" : 0.06291919207731414, + "99.99" : 0.06291919207731414, + "99.999" : 0.06291919207731414, + "99.9999" : 0.06291919207731414, + "100.0" : 0.06291919207731414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06282642821242564, + 0.06285887110988189, + 0.06288550536092717 + ], + [ + 0.0625393391327188, + 0.06255565454772927, + 0.06291919207731414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.755497758984778E-4, + "scoreError" : 1.507373859523289E-5, + "scoreConfidence" : [ + 3.6047603730324495E-4, + 3.906235144937107E-4 + ], + "scorePercentiles" : { + "0.0" : 3.693789497079226E-4, + "50.0" : 3.761478843638265E-4, + "90.0" : 3.807522085084488E-4, + "95.0" : 3.807522085084488E-4, + "99.0" : 3.807522085084488E-4, + "99.9" : 3.807522085084488E-4, + "99.99" : 3.807522085084488E-4, + "99.999" : 3.807522085084488E-4, + "99.9999" : 3.807522085084488E-4, + "100.0" : 3.807522085084488E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.807522085084488E-4, + 3.804366998608912E-4, + 3.799277165440546E-4 + ], + [ + 3.7236805218359835E-4, + 3.693789497079226E-4, + 3.7043502858595154E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11290153921278383, + "scoreError" : 0.013576548025850324, + "scoreConfidence" : [ + 0.0993249911869335, + 0.12647808723863416 + ], + "scorePercentiles" : { + "0.0" : 0.10842414959016393, + "50.0" : 0.11269077323091009, + "90.0" : 0.11772949796331615, + "95.0" : 0.11772949796331615, + "99.0" : 0.11772949796331615, + "99.9" : 0.11772949796331615, + "99.99" : 0.11772949796331615, + "99.999" : 0.11772949796331615, + "99.9999" : 0.11772949796331615, + "100.0" : 0.11772949796331615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10842414959016393, + 0.10858159691849986, + 0.10846579419070035 + ], + [ + 0.11679994954332033, + 0.11740824707070233, + 0.11772949796331615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014076907020775666, + "scoreError" : 1.3641447035885385E-4, + "scoreConfidence" : [ + 0.013940492550416812, + 0.01421332149113452 + ], + "scorePercentiles" : { + "0.0" : 0.014023505217382768, + "50.0" : 0.014082435088302044, + "90.0" : 0.014122586124158657, + "95.0" : 0.014122586124158657, + "99.0" : 0.014122586124158657, + "99.9" : 0.014122586124158657, + "99.99" : 0.014122586124158657, + "99.999" : 0.014122586124158657, + "99.9999" : 0.014122586124158657, + "100.0" : 0.014122586124158657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014122586124158657, + 0.014120595838146045, + 0.014119267525672033 + ], + [ + 0.014023505217382768, + 0.014045602650932054, + 0.014029884768362437 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9764073327958921, + "scoreError" : 0.010733854277373577, + "scoreConfidence" : [ + 0.9656734785185185, + 0.9871411870732657 + ], + "scorePercentiles" : { + "0.0" : 0.9702764706510139, + "50.0" : 0.9784738653424762, + "90.0" : 0.9793149625930279, + "95.0" : 0.9793149625930279, + "99.0" : 0.9793149625930279, + "99.9" : 0.9793149625930279, + "99.99" : 0.9793149625930279, + "99.999" : 0.9793149625930279, + "99.9999" : 0.9793149625930279, + "100.0" : 0.9793149625930279 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9789567909162099, + 0.9793149625930279, + 0.978798503278849 + ], + [ + 0.9729480419301488, + 0.9702764706510139, + 0.9781492274061033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013349951937366723, + "scoreError" : 1.791208067635585E-4, + "scoreConfidence" : [ + 0.013170831130603165, + 0.013529072744130281 + ], + "scorePercentiles" : { + "0.0" : 0.013235830900201445, + "50.0" : 0.013353415729403694, + "90.0" : 0.013424181076698382, + "95.0" : 0.013424181076698382, + "99.0" : 0.013424181076698382, + "99.9" : 0.013424181076698382, + "99.99" : 0.013424181076698382, + "99.999" : 0.013424181076698382, + "99.9999" : 0.013424181076698382, + "100.0" : 0.013424181076698382 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013235830900201445, + 0.013341004637226416, + 0.013351593859480475 + ], + [ + 0.013424181076698382, + 0.013355237599326913, + 0.013391863551266703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8609756297113442, + "scoreError" : 0.057604963218926615, + "scoreConfidence" : [ + 3.8033706664924174, + 3.918580592930271 + ], + "scorePercentiles" : { + "0.0" : 3.837878002302379, + "50.0" : 3.8613886136308926, + "90.0" : 3.8899327783825814, + "95.0" : 3.8899327783825814, + "99.0" : 3.8899327783825814, + "99.9" : 3.8899327783825814, + "99.99" : 3.8899327783825814, + "99.999" : 3.8899327783825814, + "99.9999" : 3.8899327783825814, + "100.0" : 3.8899327783825814 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.838923483499616, + 3.8641435312741312, + 3.8899327783825814 + ], + [ + 3.837878002302379, + 3.8763422868217052, + 3.8586336959876544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9107152906140112, + "scoreError" : 0.17264115891016824, + "scoreConfidence" : [ + 2.738074131703843, + 3.0833564495241794 + ], + "scorePercentiles" : { + "0.0" : 2.847217072018218, + "50.0" : 2.9068154346759494, + "90.0" : 2.9797577593089066, + "95.0" : 2.9797577593089066, + "99.0" : 2.9797577593089066, + "99.9" : 2.9797577593089066, + "99.99" : 2.9797577593089066, + "99.999" : 2.9797577593089066, + "99.9999" : 2.9797577593089066, + "100.0" : 2.9797577593089066 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.952159564344746, + 2.966649619697419, + 2.9797577593089066 + ], + [ + 2.857036423307626, + 2.861471305007153, + 2.847217072018218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.2330806728749995, + "scoreError" : 1.3604002583457515, + "scoreConfidence" : [ + 4.872680414529248, + 7.593480931220751 + ], + "scorePercentiles" : { + "0.0" : 6.0471666775, + "50.0" : 6.22303639175, + "90.0" : 6.4390832305, + "95.0" : 6.4390832305, + "99.0" : 6.4390832305, + "99.9" : 6.4390832305, + "99.99" : 6.4390832305, + "99.999" : 6.4390832305, + "99.9999" : 6.4390832305, + "100.0" : 6.4390832305 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.0560670515, + 6.4390832305 + ], + [ + 6.0471666775, + 6.390005732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17695705749653878, + "scoreError" : 0.02066596468028046, + "scoreConfidence" : [ + 0.15629109281625833, + 0.19762302217681924 + ], + "scorePercentiles" : { + "0.0" : 0.1698947330150694, + "50.0" : 0.17718588646026395, + "90.0" : 0.18381453600838174, + "95.0" : 0.18381453600838174, + "99.0" : 0.18381453600838174, + "99.9" : 0.18381453600838174, + "99.99" : 0.18381453600838174, + "99.999" : 0.18381453600838174, + "99.9999" : 0.18381453600838174, + "100.0" : 0.18381453600838174 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17085623141978473, + 0.16996064849247086, + 0.1698947330150694 + ], + [ + 0.18370065454278262, + 0.1835155415007432, + 0.18381453600838174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3341891233812217, + "scoreError" : 0.004207100055810972, + "scoreConfidence" : [ + 0.3299820233254107, + 0.3383962234370327 + ], + "scorePercentiles" : { + "0.0" : 0.332324526119899, + "50.0" : 0.33453383257104535, + "90.0" : 0.33559092214503844, + "95.0" : 0.33559092214503844, + "99.0" : 0.33559092214503844, + "99.9" : 0.33559092214503844, + "99.99" : 0.33559092214503844, + "99.999" : 0.33559092214503844, + "99.9999" : 0.33559092214503844, + "100.0" : 0.33559092214503844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33559092214503844, + 0.3354814033681103, + 0.3354276811565037 + ], + [ + 0.33363998398558703, + 0.3326702235121919, + 0.332324526119899 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1587210943140552, + "scoreError" : 0.00565100470236045, + "scoreConfidence" : [ + 0.15307008961169474, + 0.16437209901641567 + ], + "scorePercentiles" : { + "0.0" : 0.15675245813217129, + "50.0" : 0.1586225019819986, + "90.0" : 0.16080159168676636, + "95.0" : 0.16080159168676636, + "99.0" : 0.16080159168676636, + "99.9" : 0.16080159168676636, + "99.99" : 0.16080159168676636, + "99.999" : 0.16080159168676636, + "99.9999" : 0.16080159168676636, + "100.0" : 0.16080159168676636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15696206339564597, + 0.15695212438201364, + 0.15675245813217129 + ], + [ + 0.1602829405683512, + 0.16057538771938276, + 0.16080159168676636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39721682302078376, + "scoreError" : 0.022266720097578307, + "scoreConfidence" : [ + 0.37495010292320546, + 0.41948354311836206 + ], + "scorePercentiles" : { + "0.0" : 0.3896957332242226, + "50.0" : 0.3971700266310394, + "90.0" : 0.4047341756111381, + "95.0" : 0.4047341756111381, + "99.0" : 0.4047341756111381, + "99.9" : 0.4047341756111381, + "99.99" : 0.4047341756111381, + "99.999" : 0.4047341756111381, + "99.9999" : 0.4047341756111381, + "100.0" : 0.4047341756111381 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3896957332242226, + 0.3900972101033743, + 0.39012002941405943 + ], + [ + 0.4047341756111381, + 0.40443376592388885, + 0.4042200238480194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.159007283640204, + "scoreError" : 0.004836125088409615, + "scoreConfidence" : [ + 0.1541711585517944, + 0.1638434087286136 + ], + "scorePercentiles" : { + "0.0" : 0.15733778182476124, + "50.0" : 0.15905864411380383, + "90.0" : 0.16068966459916764, + "95.0" : 0.16068966459916764, + "99.0" : 0.16068966459916764, + "99.9" : 0.16068966459916764, + "99.99" : 0.16068966459916764, + "99.999" : 0.16068966459916764, + "99.9999" : 0.16068966459916764, + "100.0" : 0.16068966459916764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16068966459916764, + 0.1605280937299345, + 0.16051771197431783 + ], + [ + 0.15733778182476124, + 0.15737087345975292, + 0.15759957625328982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04688617318915551, + "scoreError" : 7.659160210506382E-4, + "scoreConfidence" : [ + 0.04612025716810487, + 0.047652089210206146 + ], + "scorePercentiles" : { + "0.0" : 0.04653300963686111, + "50.0" : 0.04687608762843795, + "90.0" : 0.04735991646775782, + "95.0" : 0.04735991646775782, + "99.0" : 0.04735991646775782, + "99.9" : 0.04735991646775782, + "99.99" : 0.04735991646775782, + "99.999" : 0.04735991646775782, + "99.9999" : 0.04735991646775782, + "100.0" : 0.04735991646775782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04735991646775782, + 0.04692590022289482, + 0.04684122071291395 + ], + [ + 0.04691095454396195, + 0.046746037550543414, + 0.04653300963686111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9503120.30191485, + "scoreError" : 74805.68846656613, + "scoreConfidence" : [ + 9428314.613448285, + 9577925.990381416 + ], + "scorePercentiles" : { + "0.0" : 9464995.247871334, + "50.0" : 9501648.158594493, + "90.0" : 9548497.897900764, + "95.0" : 9548497.897900764, + "99.0" : 9548497.897900764, + "99.9" : 9548497.897900764, + "99.99" : 9548497.897900764, + "99.999" : 9548497.897900764, + "99.9999" : 9548497.897900764, + "100.0" : 9548497.897900764 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9548497.897900764, + 9497262.630579296, + 9464995.247871334 + ], + [ + 9504669.717948718, + 9500153.840455841, + 9503142.476733143 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-06T06:59:13Z-5f071380a3130ed30e1f827392da3c478b80ee0f-jdk17.json b/performance-results/2025-05-06T06:59:13Z-5f071380a3130ed30e1f827392da3c478b80ee0f-jdk17.json new file mode 100644 index 0000000000..45d1c5224d --- /dev/null +++ b/performance-results/2025-05-06T06:59:13Z-5f071380a3130ed30e1f827392da3c478b80ee0f-jdk17.json @@ -0,0 +1,1383 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4238281061518467, + "scoreError" : 0.021587910601074102, + "scoreConfidence" : [ + 3.402240195550773, + 3.4454160167529206 + ], + "scorePercentiles" : { + "0.0" : 3.419976050503771, + "50.0" : 3.4240426898365275, + "90.0" : 3.4272509944305605, + "95.0" : 3.4272509944305605, + "99.0" : 3.4272509944305605, + "99.9" : 3.4272509944305605, + "99.99" : 3.4272509944305605, + "99.999" : 3.4272509944305605, + "99.9999" : 3.4272509944305605, + "100.0" : 3.4272509944305605 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.425891379083185, + 3.4272509944305605 + ], + [ + 3.419976050503771, + 3.4221940005898697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7278819981787108, + "scoreError" : 0.026316711584586296, + "scoreConfidence" : [ + 1.7015652865941244, + 1.7541987097632972 + ], + "scorePercentiles" : { + "0.0" : 1.7242065808810239, + "50.0" : 1.727347819447981, + "90.0" : 1.7326257729378574, + "95.0" : 1.7326257729378574, + "99.0" : 1.7326257729378574, + "99.9" : 1.7326257729378574, + "99.99" : 1.7326257729378574, + "99.999" : 1.7326257729378574, + "99.9999" : 1.7326257729378574, + "100.0" : 1.7326257729378574 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7242065808810239, + 1.7247813075039693 + ], + [ + 1.7299143313919927, + 1.7326257729378574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685107179636625, + "scoreError" : 0.008537708602383207, + "scoreConfidence" : [ + 0.8599730093612793, + 0.8770484265660458 + ], + "scorePercentiles" : { + "0.0" : 0.8671226744056505, + "50.0" : 0.8684046520041548, + "90.0" : 0.8701108934406896, + "95.0" : 0.8701108934406896, + "99.0" : 0.8701108934406896, + "99.9" : 0.8701108934406896, + "99.99" : 0.8701108934406896, + "99.999" : 0.8701108934406896, + "99.9999" : 0.8701108934406896, + "100.0" : 0.8701108934406896 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8690076193660159, + 0.8701108934406896 + ], + [ + 0.8671226744056505, + 0.8678016846422939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.308463189937523, + "scoreError" : 0.12295515149320659, + "scoreConfidence" : [ + 16.185508038444315, + 16.43141834143073 + ], + "scorePercentiles" : { + "0.0" : 16.26455759953936, + "50.0" : 16.29367546032239, + "90.0" : 16.37890727922539, + "95.0" : 16.37890727922539, + "99.0" : 16.37890727922539, + "99.9" : 16.37890727922539, + "99.99" : 16.37890727922539, + "99.999" : 16.37890727922539, + "99.9999" : 16.37890727922539, + "100.0" : 16.37890727922539 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.27885238725999, + 16.280585526078514, + 16.26455759953936 + ], + [ + 16.37890727922539, + 16.30676539456627, + 16.341110952955606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2717.614277954233, + "scoreError" : 245.0687793146003, + "scoreConfidence" : [ + 2472.5454986396326, + 2962.683057268833 + ], + "scorePercentiles" : { + "0.0" : 2635.867328132349, + "50.0" : 2717.3008707281824, + "90.0" : 2801.387358524166, + "95.0" : 2801.387358524166, + "99.0" : 2801.387358524166, + "99.9" : 2801.387358524166, + "99.99" : 2801.387358524166, + "99.999" : 2801.387358524166, + "99.9999" : 2801.387358524166, + "100.0" : 2801.387358524166 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2635.867328132349, + 2636.903477278355, + 2640.870432892098 + ], + [ + 2796.9257623341628, + 2801.387358524166, + 2793.731308564267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70084.7582490412, + "scoreError" : 1033.8326861847038, + "scoreConfidence" : [ + 69050.9255628565, + 71118.5909352259 + ], + "scorePercentiles" : { + "0.0" : 69744.94339957966, + "50.0" : 70074.84584498432, + "90.0" : 70459.20937721158, + "95.0" : 70459.20937721158, + "99.0" : 70459.20937721158, + "99.9" : 70459.20937721158, + "99.99" : 70459.20937721158, + "99.999" : 70459.20937721158, + "99.9999" : 70459.20937721158, + "100.0" : 70459.20937721158 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69745.49571586706, + 69744.94339957966, + 69755.97807926149 + ], + [ + 70393.71361070714, + 70409.20931162035, + 70459.20937721158 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.92321383084754, + "scoreError" : 3.8858348724684193, + "scoreConfidence" : [ + 348.0373789583791, + 355.80904870331597 + ], + "scorePercentiles" : { + "0.0" : 350.4665946456915, + "50.0" : 351.91757563656887, + "90.0" : 354.13033218763997, + "95.0" : 354.13033218763997, + "99.0" : 354.13033218763997, + "99.9" : 354.13033218763997, + "99.99" : 354.13033218763997, + "99.999" : 354.13033218763997, + "99.9999" : 354.13033218763997, + "100.0" : 354.13033218763997 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 352.61320246188666, + 350.4665946456915, + 350.4940024167295 + ], + [ + 354.13033218763997, + 351.7062929579826, + 352.1288583151551 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1649868628449748, + "scoreError" : 0.029178142156921567, + "scoreConfidence" : [ + 0.13580872068805322, + 0.19416500500189637 + ], + "scorePercentiles" : { + "0.0" : 0.15891694649289018, + "50.0" : 0.16560083639571194, + "90.0" : 0.1698288320955851, + "95.0" : 0.1698288320955851, + "99.0" : 0.1698288320955851, + "99.9" : 0.1698288320955851, + "99.99" : 0.1698288320955851, + "99.999" : 0.1698288320955851, + "99.9999" : 0.1698288320955851, + "100.0" : 0.1698288320955851 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16584849905045618, + 0.15891694649289018 + ], + [ + 0.1698288320955851, + 0.1653531737409677 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.06277088669714, + "scoreError" : 3.2591391249264023, + "scoreConfidence" : [ + 103.80363176177073, + 110.32191001162354 + ], + "scorePercentiles" : { + "0.0" : 105.9799425116281, + "50.0" : 106.98158371401064, + "90.0" : 108.33392020869383, + "95.0" : 108.33392020869383, + "99.0" : 108.33392020869383, + "99.9" : 108.33392020869383, + "99.99" : 108.33392020869383, + "99.999" : 108.33392020869383, + "99.9999" : 108.33392020869383, + "100.0" : 108.33392020869383 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.33392020869383, + 107.92746331179418, + 108.08969666312571 + ], + [ + 105.9799425116281, + 106.00989850871396, + 106.0357041162271 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06146696890292219, + "scoreError" : 0.0013111442609606396, + "scoreConfidence" : [ + 0.06015582464196155, + 0.06277811316388283 + ], + "scorePercentiles" : { + "0.0" : 0.06099497867642574, + "50.0" : 0.06146025591581415, + "90.0" : 0.06193752884704717, + "95.0" : 0.06193752884704717, + "99.0" : 0.06193752884704717, + "99.9" : 0.06193752884704717, + "99.99" : 0.06193752884704717, + "99.999" : 0.06193752884704717, + "99.9999" : 0.06193752884704717, + "100.0" : 0.06193752884704717 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0610976581640446, + 0.06103522918421406, + 0.06099497867642574 + ], + [ + 0.061913564878217905, + 0.06193752884704717, + 0.061822853667583694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.650252007566001E-4, + "scoreError" : 2.096583751124534E-5, + "scoreConfidence" : [ + 3.4405936324535477E-4, + 3.859910382678454E-4 + ], + "scorePercentiles" : { + "0.0" : 3.580183650284668E-4, + "50.0" : 3.650329137771385E-4, + "90.0" : 3.723388988078882E-4, + "95.0" : 3.723388988078882E-4, + "99.0" : 3.723388988078882E-4, + "99.9" : 3.723388988078882E-4, + "99.99" : 3.723388988078882E-4, + "99.999" : 3.723388988078882E-4, + "99.9999" : 3.723388988078882E-4, + "100.0" : 3.723388988078882E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7163264021046656E-4, + 3.715610749278557E-4, + 3.723388988078882E-4 + ], + [ + 3.5809547293850184E-4, + 3.580183650284668E-4, + 3.5850475262642125E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11151048857418296, + "scoreError" : 0.0036012004174408147, + "scoreConfidence" : [ + 0.10790928815674214, + 0.11511168899162377 + ], + "scorePercentiles" : { + "0.0" : 0.1101930165838393, + "50.0" : 0.11156708828092737, + "90.0" : 0.11269847700993982, + "95.0" : 0.11269847700993982, + "99.0" : 0.11269847700993982, + "99.9" : 0.11269847700993982, + "99.99" : 0.11269847700993982, + "99.999" : 0.11269847700993982, + "99.9999" : 0.11269847700993982, + "100.0" : 0.11269847700993982 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1101930165838393, + 0.1104775654676418, + 0.11035277646214964 + ], + [ + 0.11265661109421293, + 0.11268448482731422, + 0.11269847700993982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014454337680991634, + "scoreError" : 0.0011056294165671127, + "scoreConfidence" : [ + 0.013348708264424521, + 0.015559967097558747 + ], + "scorePercentiles" : { + "0.0" : 0.01409273849412481, + "50.0" : 0.014436837402719276, + "90.0" : 0.014840477070292443, + "95.0" : 0.014840477070292443, + "99.0" : 0.014840477070292443, + "99.9" : 0.014840477070292443, + "99.99" : 0.014840477070292443, + "99.999" : 0.014840477070292443, + "99.9999" : 0.014840477070292443, + "100.0" : 0.014840477070292443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01409420747970459, + 0.014097886918188278, + 0.01409273849412481 + ], + [ + 0.014840477070292443, + 0.014824928236389404, + 0.014775787887250274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.013626964011056, + "scoreError" : 0.11286758364665457, + "scoreConfidence" : [ + 0.9007593803644014, + 1.1264945476577106 + ], + "scorePercentiles" : { + "0.0" : 0.9745805970178345, + "50.0" : 1.0122933979675715, + "90.0" : 1.0528886240261108, + "95.0" : 1.0528886240261108, + "99.0" : 1.0528886240261108, + "99.9" : 1.0528886240261108, + "99.99" : 1.0528886240261108, + "99.999" : 1.0528886240261108, + "99.9999" : 1.0528886240261108, + "100.0" : 1.0528886240261108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.052404088498369, + 1.0528886240261108, + 1.045514877783586 + ], + [ + 0.9790719181515567, + 0.9773016785888791, + 0.9745805970178345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013090921400999338, + "scoreError" : 5.52469163409891E-4, + "scoreConfidence" : [ + 0.012538452237589447, + 0.01364339056440923 + ], + "scorePercentiles" : { + "0.0" : 0.012824598348230888, + "50.0" : 0.013110151532014044, + "90.0" : 0.013274434060843224, + "95.0" : 0.013274434060843224, + "99.0" : 0.013274434060843224, + "99.9" : 0.013274434060843224, + "99.99" : 0.013274434060843224, + "99.999" : 0.013274434060843224, + "99.9999" : 0.013274434060843224, + "100.0" : 0.013274434060843224 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013274434060843224, + 0.013263107961930429, + 0.013256338659603857 + ], + [ + 0.012824598348230888, + 0.012963084970963393, + 0.012963964404424233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6553551250394416, + "scoreError" : 0.05582724698160624, + "scoreConfidence" : [ + 3.5995278780578355, + 3.7111823720210477 + ], + "scorePercentiles" : { + "0.0" : 3.6290547503628448, + "50.0" : 3.650766546153256, + "90.0" : 3.6828544558173784, + "95.0" : 3.6828544558173784, + "99.0" : 3.6828544558173784, + "99.9" : 3.6828544558173784, + "99.99" : 3.6828544558173784, + "99.999" : 3.6828544558173784, + "99.9999" : 3.6828544558173784, + "100.0" : 3.6828544558173784 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.64799881619256, + 3.6444350153061222, + 3.6535342761139518 + ], + [ + 3.6290547503628448, + 3.6828544558173784, + 3.6742534364437915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8171906726572473, + "scoreError" : 0.026122920412839375, + "scoreConfidence" : [ + 2.791067752244408, + 2.8433135930700866 + ], + "scorePercentiles" : { + "0.0" : 2.807821878158338, + "50.0" : 2.8164682150858207, + "90.0" : 2.8307121052929523, + "95.0" : 2.8307121052929523, + "99.0" : 2.8307121052929523, + "99.9" : 2.8307121052929523, + "99.99" : 2.8307121052929523, + "99.999" : 2.8307121052929523, + "99.9999" : 2.8307121052929523, + "100.0" : 2.8307121052929523 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.812385161136108, + 2.8079230870297587, + 2.807821878158338 + ], + [ + 2.820551269035533, + 2.8307121052929523, + 2.823750535290796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.19253867275, + "scoreError" : 1.3275032103318722, + "scoreConfidence" : [ + 4.865035462418128, + 7.520041883081872 + ], + "scorePercentiles" : { + "0.0" : 5.9956882395, + "50.0" : 6.18323885725, + "90.0" : 6.407988737, + "95.0" : 6.407988737, + "99.0" : 6.407988737, + "99.9" : 6.407988737, + "99.99" : 6.407988737, + "99.999" : 6.407988737, + "99.9999" : 6.407988737, + "100.0" : 6.407988737 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.0395971985, + 6.326880516 + ], + [ + 5.9956882395, + 6.407988737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17472567296834188, + "scoreError" : 0.001246385199007067, + "scoreConfidence" : [ + 0.1734792877693348, + 0.17597205816734895 + ], + "scorePercentiles" : { + "0.0" : 0.17418555248994094, + "50.0" : 0.17477212609355527, + "90.0" : 0.1752152739250797, + "95.0" : 0.1752152739250797, + "99.0" : 0.1752152739250797, + "99.9" : 0.1752152739250797, + "99.99" : 0.1752152739250797, + "99.999" : 0.1752152739250797, + "99.9999" : 0.1752152739250797, + "100.0" : 0.1752152739250797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17468682441001276, + 0.17423726711851414, + 0.17418555248994094 + ], + [ + 0.17517169208940583, + 0.1752152739250797, + 0.17485742777709778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3269344119849197, + "scoreError" : 0.027100657627667255, + "scoreConfidence" : [ + 0.2998337543572524, + 0.35403506961258696 + ], + "scorePercentiles" : { + "0.0" : 0.3176090671727117, + "50.0" : 0.3271259233227094, + "90.0" : 0.3365622321206206, + "95.0" : 0.3365622321206206, + "99.0" : 0.3365622321206206, + "99.9" : 0.3365622321206206, + "99.99" : 0.3365622321206206, + "99.999" : 0.3365622321206206, + "99.9999" : 0.3365622321206206, + "100.0" : 0.3365622321206206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3365622321206206, + 0.3354636546125461, + 0.33517605030835235 + ], + [ + 0.31907579633706645, + 0.3177196713582208, + 0.3176090671727117 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1623726378248437, + "scoreError" : 0.010379303412992967, + "scoreConfidence" : [ + 0.15199333441185073, + 0.1727519412378367 + ], + "scorePercentiles" : { + "0.0" : 0.15891018695375814, + "50.0" : 0.16221927924021579, + "90.0" : 0.16600401244999252, + "95.0" : 0.16600401244999252, + "99.0" : 0.16600401244999252, + "99.9" : 0.16600401244999252, + "99.99" : 0.16600401244999252, + "99.999" : 0.16600401244999252, + "99.9999" : 0.16600401244999252, + "100.0" : 0.16600401244999252 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16600401244999252, + 0.1658432150118576, + 0.16539146103466526 + ], + [ + 0.15903985405302248, + 0.15891018695375814, + 0.15904709744576628 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3932025477213803, + "scoreError" : 0.011982173260084241, + "scoreConfidence" : [ + 0.3812203744612961, + 0.4051847209814645 + ], + "scorePercentiles" : { + "0.0" : 0.39067946548423643, + "50.0" : 0.39156479063393246, + "90.0" : 0.4018392396126336, + "95.0" : 0.4018392396126336, + "99.0" : 0.4018392396126336, + "99.9" : 0.4018392396126336, + "99.99" : 0.4018392396126336, + "99.999" : 0.4018392396126336, + "99.9999" : 0.4018392396126336, + "100.0" : 0.4018392396126336 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3924692785321821, + 0.39156603394807943, + 0.39156354731978543 + ], + [ + 0.4018392396126336, + 0.39067946548423643, + 0.3910977214313649 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15476892149701563, + "scoreError" : 0.004714815404976954, + "scoreConfidence" : [ + 0.15005410609203867, + 0.15948373690199258 + ], + "scorePercentiles" : { + "0.0" : 0.15297736484625976, + "50.0" : 0.15483975883254003, + "90.0" : 0.15681389060858383, + "95.0" : 0.15681389060858383, + "99.0" : 0.15681389060858383, + "99.9" : 0.15681389060858383, + "99.99" : 0.15681389060858383, + "99.999" : 0.15681389060858383, + "99.9999" : 0.15681389060858383, + "100.0" : 0.15681389060858383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15681389060858383, + 0.1559906344917951, + 0.15598571484947746 + ], + [ + 0.15297736484625976, + 0.15369380281560263, + 0.1531521213703749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0480902862179155, + "scoreError" : 0.003078461531903063, + "scoreConfidence" : [ + 0.04501182468601244, + 0.05116874774981856 + ], + "scorePercentiles" : { + "0.0" : 0.046929009517060784, + "50.0" : 0.048166273815346786, + "90.0" : 0.04931991827323795, + "95.0" : 0.04931991827323795, + "99.0" : 0.04931991827323795, + "99.9" : 0.04931991827323795, + "99.99" : 0.04931991827323795, + "99.999" : 0.04931991827323795, + "99.9999" : 0.04931991827323795, + "100.0" : 0.04931991827323795 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04931991827323795, + 0.04898645612591297, + 0.04890928217330275 + ], + [ + 0.04742326545739081, + 0.04697378576058773, + 0.046929009517060784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9221745.397668578, + "scoreError" : 143861.5511208718, + "scoreConfidence" : [ + 9077883.846547706, + 9365606.94878945 + ], + "scorePercentiles" : { + "0.0" : 9168308.037580201, + "50.0" : 9218388.63718991, + "90.0" : 9287273.291550603, + "95.0" : 9287273.291550603, + "99.0" : 9287273.291550603, + "99.9" : 9287273.291550603, + "99.99" : 9287273.291550603, + "99.999" : 9287273.291550603, + "99.9999" : 9287273.291550603, + "100.0" : 9287273.291550603 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9287273.291550603, + 9254544.11933395, + 9260037.392592592 + ], + [ + 9168308.037580201, + 9182233.15504587, + 9178076.389908256 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-06T06:59:43Z-5f071380a3130ed30e1f827392da3c478b80ee0f-jdk17.json b/performance-results/2025-05-06T06:59:43Z-5f071380a3130ed30e1f827392da3c478b80ee0f-jdk17.json new file mode 100644 index 0000000000..3c4638c98a --- /dev/null +++ b/performance-results/2025-05-06T06:59:43Z-5f071380a3130ed30e1f827392da3c478b80ee0f-jdk17.json @@ -0,0 +1,1383 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4274948140048926, + "scoreError" : 0.019815404564520085, + "scoreConfidence" : [ + 3.4076794094403726, + 3.4473102185694127 + ], + "scorePercentiles" : { + "0.0" : 3.4231017853962156, + "50.0" : 3.428316700808038, + "90.0" : 3.430244069007278, + "95.0" : 3.430244069007278, + "99.0" : 3.430244069007278, + "99.9" : 3.430244069007278, + "99.99" : 3.430244069007278, + "99.999" : 3.430244069007278, + "99.9999" : 3.430244069007278, + "100.0" : 3.430244069007278 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4283427208899386, + 3.430244069007278 + ], + [ + 3.4231017853962156, + 3.4282906807261373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7314748261185322, + "scoreError" : 0.002425073185432369, + "scoreConfidence" : [ + 1.7290497529331, + 1.7338998993039645 + ], + "scorePercentiles" : { + "0.0" : 1.73111392401501, + "50.0" : 1.7314727394851182, + "90.0" : 1.7318399014888823, + "95.0" : 1.7318399014888823, + "99.0" : 1.7318399014888823, + "99.9" : 1.7318399014888823, + "99.99" : 1.7318399014888823, + "99.999" : 1.7318399014888823, + "99.9999" : 1.7318399014888823, + "100.0" : 1.7318399014888823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7311908065258408, + 1.73111392401501 + ], + [ + 1.7318399014888823, + 1.7317546724443955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672666922031457, + "scoreError" : 0.009391448234389031, + "scoreConfidence" : [ + 0.8578752439687567, + 0.8766581404375346 + ], + "scorePercentiles" : { + "0.0" : 0.8658586331067909, + "50.0" : 0.8671549256544173, + "90.0" : 0.8688982843969567, + "95.0" : 0.8688982843969567, + "99.0" : 0.8688982843969567, + "99.9" : 0.8688982843969567, + "99.99" : 0.8688982843969567, + "99.999" : 0.8688982843969567, + "99.9999" : 0.8688982843969567, + "100.0" : 0.8688982843969567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8658586331067909, + 0.8662420022279755 + ], + [ + 0.8680678490808592, + 0.8688982843969567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.109411242030568, + "scoreError" : 0.1789687806930012, + "scoreConfidence" : [ + 15.930442461337567, + 16.28838002272357 + ], + "scorePercentiles" : { + "0.0" : 16.025294687129527, + "50.0" : 16.13328814089325, + "90.0" : 16.175282332460707, + "95.0" : 16.175282332460707, + "99.0" : 16.175282332460707, + "99.9" : 16.175282332460707, + "99.99" : 16.175282332460707, + "99.999" : 16.175282332460707, + "99.9999" : 16.175282332460707, + "100.0" : 16.175282332460707 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.15486867197354, + 16.175282332460707, + 16.125376716746217 + ], + [ + 16.034445478833135, + 16.025294687129527, + 16.14119956504028 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2654.8268339342053, + "scoreError" : 128.79136200911495, + "scoreConfidence" : [ + 2526.0354719250904, + 2783.61819594332 + ], + "scorePercentiles" : { + "0.0" : 2605.825643671692, + "50.0" : 2658.5911162574616, + "90.0" : 2703.10671751895, + "95.0" : 2703.10671751895, + "99.0" : 2703.10671751895, + "99.9" : 2703.10671751895, + "99.99" : 2703.10671751895, + "99.999" : 2703.10671751895, + "99.9999" : 2703.10671751895, + "100.0" : 2703.10671751895 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2696.352508663536, + 2703.10671751895, + 2687.9693293983696 + ], + [ + 2605.825643671692, + 2606.49390123613, + 2629.2129031165537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71263.75060667233, + "scoreError" : 813.7624659973826, + "scoreConfidence" : [ + 70449.98814067495, + 72077.51307266971 + ], + "scorePercentiles" : { + "0.0" : 70968.28323881395, + "50.0" : 71251.06800695727, + "90.0" : 71558.53739761094, + "95.0" : 71558.53739761094, + "99.0" : 71558.53739761094, + "99.9" : 71558.53739761094, + "99.99" : 71558.53739761094, + "99.999" : 71558.53739761094, + "99.9999" : 71558.53739761094, + "100.0" : 71558.53739761094 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71469.38940133234, + 71558.53739761094, + 71551.43480720546 + ], + [ + 71032.7466125822, + 71002.11218248906, + 70968.28323881395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 358.6809641084505, + "scoreError" : 6.926072374440979, + "scoreConfidence" : [ + 351.7548917340095, + 365.6070364828915 + ], + "scorePercentiles" : { + "0.0" : 354.6951861182518, + "50.0" : 359.17557777119225, + "90.0" : 361.1811305252531, + "95.0" : 361.1811305252531, + "99.0" : 361.1811305252531, + "99.9" : 361.1811305252531, + "99.99" : 361.1811305252531, + "99.999" : 361.1811305252531, + "99.9999" : 361.1811305252531, + "100.0" : 361.1811305252531 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.71189474900234, + 360.01106459465564, + 361.1811305252531 + ], + [ + 358.3400909477289, + 354.6951861182518, + 357.14641771581114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.16191143148728612, + "scoreError" : 0.03168675834844535, + "scoreConfidence" : [ + 0.13022467313884079, + 0.19359818983573146 + ], + "scorePercentiles" : { + "0.0" : 0.15697226012559007, + "50.0" : 0.16114050676664457, + "90.0" : 0.16839245229026528, + "95.0" : 0.16839245229026528, + "99.0" : 0.16839245229026528, + "99.9" : 0.16839245229026528, + "99.99" : 0.16839245229026528, + "99.999" : 0.16839245229026528, + "99.9999" : 0.16839245229026528, + "100.0" : 0.16839245229026528 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.16264832557705297, + 0.15697226012559007 + ], + [ + 0.16839245229026528, + 0.15963268795623617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.38784234430334, + "scoreError" : 7.923395204431814, + "scoreConfidence" : [ + 100.46444713987152, + 116.31123754873515 + ], + "scorePercentiles" : { + "0.0" : 105.72853765848248, + "50.0" : 108.3916951280389, + "90.0" : 111.02142912431371, + "95.0" : 111.02142912431371, + "99.0" : 111.02142912431371, + "99.9" : 111.02142912431371, + "99.99" : 111.02142912431371, + "99.999" : 111.02142912431371, + "99.9999" : 111.02142912431371, + "100.0" : 111.02142912431371 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.72853765848248, + 105.88171728740609, + 105.81701617957165 + ], + [ + 110.97668084737425, + 110.90167296867172, + 111.02142912431371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061283431978971285, + "scoreError" : 6.846496817103977E-4, + "scoreConfidence" : [ + 0.060598782297260886, + 0.061968081660681684 + ], + "scorePercentiles" : { + "0.0" : 0.0610864050456614, + "50.0" : 0.061175787743609863, + "90.0" : 0.0616975123239328, + "95.0" : 0.0616975123239328, + "99.0" : 0.0616975123239328, + "99.9" : 0.0616975123239328, + "99.99" : 0.0616975123239328, + "99.999" : 0.0616975123239328, + "99.9999" : 0.0616975123239328, + "100.0" : 0.0616975123239328 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0611124470865035, + 0.061452651930510235, + 0.0616975123239328 + ], + [ + 0.06123377353025822, + 0.0610864050456614, + 0.061117801956961516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.870853520286541E-4, + "scoreError" : 7.586012156841937E-6, + "scoreConfidence" : [ + 3.7949933987181216E-4, + 3.946713641854961E-4 + ], + "scorePercentiles" : { + "0.0" : 3.83362857637061E-4, + "50.0" : 3.872173559699855E-4, + "90.0" : 3.9001206379025207E-4, + "95.0" : 3.9001206379025207E-4, + "99.0" : 3.9001206379025207E-4, + "99.9" : 3.9001206379025207E-4, + "99.99" : 3.9001206379025207E-4, + "99.999" : 3.9001206379025207E-4, + "99.9999" : 3.9001206379025207E-4, + "100.0" : 3.9001206379025207E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.83362857637061E-4, + 3.8550402559716274E-4, + 3.8533605920758714E-4 + ], + [ + 3.9001206379025207E-4, + 3.889306863428083E-4, + 3.893664195970532E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.11009985832511282, + "scoreError" : 0.0031232888758091324, + "scoreConfidence" : [ + 0.10697656944930369, + 0.11322314720092196 + ], + "scorePercentiles" : { + "0.0" : 0.1090115867989317, + "50.0" : 0.11004520755808582, + "90.0" : 0.11121798916754713, + "95.0" : 0.11121798916754713, + "99.0" : 0.11121798916754713, + "99.9" : 0.11121798916754713, + "99.99" : 0.11121798916754713, + "99.999" : 0.11121798916754713, + "99.9999" : 0.11121798916754713, + "100.0" : 0.11121798916754713 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11095645377079011, + 0.11116385372225125, + 0.11121798916754713 + ], + [ + 0.10911530514577514, + 0.10913396134538153, + 0.1090115867989317 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014361303208532189, + "scoreError" : 9.008475681492518E-4, + "scoreConfidence" : [ + 0.013460455640382937, + 0.01526215077668144 + ], + "scorePercentiles" : { + "0.0" : 0.014056936544930355, + "50.0" : 0.014367534783958672, + "90.0" : 0.014662941026392961, + "95.0" : 0.014662941026392961, + "99.0" : 0.014662941026392961, + "99.9" : 0.014662941026392961, + "99.99" : 0.014662941026392961, + "99.999" : 0.014662941026392961, + "99.9999" : 0.014662941026392961, + "100.0" : 0.014662941026392961 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014056936544930355, + 0.014060548877350015, + 0.014087211004237384 + ], + [ + 0.01464785856367996, + 0.014662941026392961, + 0.014652323234602452 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9715748816156576, + "scoreError" : 0.01684348480317524, + "scoreConfidence" : [ + 0.9547313968124824, + 0.9884183664188328 + ], + "scorePercentiles" : { + "0.0" : 0.9643964800385728, + "50.0" : 0.9709968658231811, + "90.0" : 0.9814247137389598, + "95.0" : 0.9814247137389598, + "99.0" : 0.9814247137389598, + "99.9" : 0.9814247137389598, + "99.99" : 0.9814247137389598, + "99.999" : 0.9814247137389598, + "99.9999" : 0.9814247137389598, + "100.0" : 0.9814247137389598 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9695136693165294, + 0.9672374933746011, + 0.9643964800385728 + ], + [ + 0.9814247137389598, + 0.9743968708954497, + 0.9724800623298328 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013298563879302373, + "scoreError" : 7.978731914848166E-4, + "scoreConfidence" : [ + 0.012500690687817556, + 0.01409643707078719 + ], + "scorePercentiles" : { + "0.0" : 0.01298430556053276, + "50.0" : 0.013285627442692426, + "90.0" : 0.013604988218360311, + "95.0" : 0.013604988218360311, + "99.0" : 0.013604988218360311, + "99.9" : 0.013604988218360311, + "99.99" : 0.013604988218360311, + "99.999" : 0.013604988218360311, + "99.9999" : 0.013604988218360311, + "100.0" : 0.013604988218360311 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013473226458105978, + 0.013604988218360311, + 0.013580785719329885 + ], + [ + 0.01298430556053276, + 0.013098028427278871, + 0.013050048892206427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6649080310068354, + "scoreError" : 0.0656917564380821, + "scoreConfidence" : [ + 3.5992162745687533, + 3.7305997874449175 + ], + "scorePercentiles" : { + "0.0" : 3.6245500456521738, + "50.0" : 3.665970831381784, + "90.0" : 3.6896134483775813, + "95.0" : 3.6896134483775813, + "99.0" : 3.6896134483775813, + "99.9" : 3.6896134483775813, + "99.99" : 3.6896134483775813, + "99.999" : 3.6896134483775813, + "99.9999" : 3.6896134483775813, + "100.0" : 3.6896134483775813 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6896134483775813, + 3.6842562201767306, + 3.6590868090709585 + ], + [ + 3.6245500456521738, + 3.6728387995594716, + 3.6591028632040965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8892314465124467, + "scoreError" : 0.21817381698837585, + "scoreConfidence" : [ + 2.671057629524071, + 3.1074052635008225 + ], + "scorePercentiles" : { + "0.0" : 2.8115710503233062, + "50.0" : 2.889482907781501, + "90.0" : 2.97219625794948, + "95.0" : 2.97219625794948, + "99.0" : 2.97219625794948, + "99.9" : 2.97219625794948, + "99.99" : 2.97219625794948, + "99.999" : 2.97219625794948, + "99.9999" : 2.97219625794948, + "100.0" : 2.97219625794948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8315745812570783, + 2.8115710503233062, + 2.813429184528833 + ], + [ + 2.947391234305924, + 2.97219625794948, + 2.9592263707100592 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.LargeInMemoryQueryPerformance.benchMarkSimpleQueriesAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6.226174725125, + "scoreError" : 1.0121014676875972, + "scoreConfidence" : [ + 5.214073257437403, + 7.238276192812598 + ], + "scorePercentiles" : { + "0.0" : 6.0414780505, + "50.0" : 6.223016444000001, + "90.0" : 6.417187962, + "95.0" : 6.417187962, + "99.0" : 6.417187962, + "99.9" : 6.417187962, + "99.99" : 6.417187962, + "99.999" : 6.417187962, + "99.9999" : 6.417187962, + "100.0" : 6.417187962 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 6.0414780505, + 6.2615793635 + ], + [ + 6.1844535245, + 6.417187962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.174208750789316, + "scoreError" : 0.005875458271976553, + "scoreConfidence" : [ + 0.16833329251733944, + 0.18008420906129255 + ], + "scorePercentiles" : { + "0.0" : 0.1718808210412334, + "50.0" : 0.17432058404910458, + "90.0" : 0.17673681073486266, + "95.0" : 0.17673681073486266, + "99.0" : 0.17673681073486266, + "99.9" : 0.17673681073486266, + "99.99" : 0.17673681073486266, + "99.999" : 0.17673681073486266, + "99.9999" : 0.17673681073486266, + "100.0" : 0.17673681073486266 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17308537468845195, + 0.17212955292011636, + 0.1718808210412334 + ], + [ + 0.17673681073486266, + 0.1758641519414744, + 0.17555579340975722 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33039262061397084, + "scoreError" : 0.004694267193263049, + "scoreConfidence" : [ + 0.3256983534207078, + 0.3350868878072339 + ], + "scorePercentiles" : { + "0.0" : 0.3283385040220639, + "50.0" : 0.33082092781170713, + "90.0" : 0.33283826766516894, + "95.0" : 0.33283826766516894, + "99.0" : 0.33283826766516894, + "99.9" : 0.33283826766516894, + "99.99" : 0.33283826766516894, + "99.999" : 0.33283826766516894, + "99.9999" : 0.33283826766516894, + "100.0" : 0.33283826766516894 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3283385040220639, + 0.33080202368508105, + 0.3286142943611987 + ], + [ + 0.33283826766516894, + 0.3309228020119792, + 0.3308398319383333 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1596296598213994, + "scoreError" : 0.00964103113056959, + "scoreConfidence" : [ + 0.14998862869082982, + 0.16927069095196898 + ], + "scorePercentiles" : { + "0.0" : 0.15626861796418415, + "50.0" : 0.15960347243945344, + "90.0" : 0.16290861315283614, + "95.0" : 0.16290861315283614, + "99.0" : 0.16290861315283614, + "99.9" : 0.16290861315283614, + "99.99" : 0.16290861315283614, + "99.999" : 0.16290861315283614, + "99.9999" : 0.16290861315283614, + "100.0" : 0.16290861315283614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16290861315283614, + 0.16279553734453345, + 0.1625901399863428 + ], + [ + 0.15661680489256405, + 0.15659824558793592, + 0.15626861796418415 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39055867423443386, + "scoreError" : 0.006712356621653988, + "scoreConfidence" : [ + 0.3838463176127799, + 0.39727103085608784 + ], + "scorePercentiles" : { + "0.0" : 0.38766473565669096, + "50.0" : 0.39067229276938564, + "90.0" : 0.39335552204696533, + "95.0" : 0.39335552204696533, + "99.0" : 0.39335552204696533, + "99.9" : 0.39335552204696533, + "99.99" : 0.39335552204696533, + "99.999" : 0.39335552204696533, + "99.9999" : 0.39335552204696533, + "100.0" : 0.39335552204696533 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3921351710061956, + 0.3925106822356543, + 0.39335552204696533 + ], + [ + 0.3884765199285215, + 0.3892094145325757, + 0.38766473565669096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15650644033707403, + "scoreError" : 0.012118884589496951, + "scoreConfidence" : [ + 0.14438755574757708, + 0.16862532492657098 + ], + "scorePercentiles" : { + "0.0" : 0.1524325068898238, + "50.0" : 0.15654782870735393, + "90.0" : 0.16070292175547984, + "95.0" : 0.16070292175547984, + "99.0" : 0.16070292175547984, + "99.9" : 0.16070292175547984, + "99.99" : 0.16070292175547984, + "99.999" : 0.16070292175547984, + "99.9999" : 0.16070292175547984, + "100.0" : 0.16070292175547984 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16027296918022277, + 0.1603661441331644, + 0.16070292175547984 + ], + [ + 0.15282268823448508, + 0.1524414118292683, + 0.1524325068898238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047363776100216644, + "scoreError" : 3.95546506965149E-4, + "scoreConfidence" : [ + 0.0469682295932515, + 0.04775932260718179 + ], + "scorePercentiles" : { + "0.0" : 0.04716881258254405, + "50.0" : 0.04735179398254641, + "90.0" : 0.04758480779333251, + "95.0" : 0.04758480779333251, + "99.0" : 0.04758480779333251, + "99.9" : 0.04758480779333251, + "99.99" : 0.04758480779333251, + "99.999" : 0.04758480779333251, + "99.9999" : 0.04758480779333251, + "100.0" : 0.04758480779333251 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04743432101640729, + 0.04738401337629416, + 0.04716881258254405 + ], + [ + 0.04758480779333251, + 0.0472911272439232, + 0.047319574588798666 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9292059.801090613, + "scoreError" : 1093430.051071653, + "scoreConfidence" : [ + 8198629.75001896, + 1.0385489852162266E7 + ], + "scorePercentiles" : { + "0.0" : 8927506.744870652, + "50.0" : 9291195.943758812, + "90.0" : 9653870.822393822, + "95.0" : 9653870.822393822, + "99.0" : 9653870.822393822, + "99.9" : 9653870.822393822, + "99.99" : 9653870.822393822, + "99.999" : 9653870.822393822, + "99.9999" : 9653870.822393822, + "100.0" : 9653870.822393822 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8945201.296958854, + 8927506.744870652, + 8935842.590178572 + ], + [ + 9653870.822393822, + 9652746.761583012, + 9637190.590558767 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-08T09:55:21Z-2eed3a690e159857677547c41f3686fd4fb131cb-jdk17.json b/performance-results/2025-05-08T09:55:21Z-2eed3a690e159857677547c41f3686fd4fb131cb-jdk17.json new file mode 100644 index 0000000000..d316019bb3 --- /dev/null +++ b/performance-results/2025-05-08T09:55:21Z-2eed3a690e159857677547c41f3686fd4fb131cb-jdk17.json @@ -0,0 +1,181 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.largeSchema1", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.05037110041903725, + "scoreError" : 3.648927036387041E-4, + "scoreConfidence" : [ + 0.05000620771539855, + 0.05073599312267595 + ], + "scorePercentiles" : { + "0.0" : 0.050167364590440265, + "50.0" : 0.050246103575968606, + "90.0" : 0.05066289795577172, + "95.0" : 0.05066289795577172, + "99.0" : 0.05066289795577172, + "99.9" : 0.05066289795577172, + "99.99" : 0.05066289795577172, + "99.999" : 0.05066289795577172, + "99.9999" : 0.05066289795577172, + "100.0" : 0.05066289795577172 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.050223124541719816, + 0.050167364590440265, + 0.050189584214567845 + ], + [ + 0.050246103575968606, + 0.05041447662067262, + 0.050169613991079984 + ], + [ + 0.05063743971440869, + 0.05066289795577172, + 0.05062929856670565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.largeSchema4", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 21.3962776924908, + "scoreError" : 0.5382785637469608, + "scoreConfidence" : [ + 20.857999128743838, + 21.93455625623776 + ], + "scorePercentiles" : { + "0.0" : 20.982693540880504, + "50.0" : 21.3717974017094, + "90.0" : 21.782303667391304, + "95.0" : 21.782303667391304, + "99.0" : 21.782303667391304, + "99.9" : 21.782303667391304, + "99.99" : 21.782303667391304, + "99.999" : 21.782303667391304, + "99.9999" : 21.782303667391304, + "100.0" : 21.782303667391304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 20.982693540880504, + 21.08151422736842, + 21.044756590336135 + ], + [ + 21.782303667391304, + 21.74976952173913, + 21.77905801304348 + ], + [ + 21.33301046695096, + 21.44159580299786, + 21.3717974017094 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.manyFragments", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 13.605598539304891, + "scoreError" : 0.041528819669041, + "scoreConfidence" : [ + 13.56406971963585, + 13.647127358973933 + ], + "scorePercentiles" : { + "0.0" : 13.571908153324287, + "50.0" : 13.600049917119565, + "90.0" : 13.645124362892224, + "95.0" : 13.645124362892224, + "99.0" : 13.645124362892224, + "99.9" : 13.645124362892224, + "99.99" : 13.645124362892224, + "99.999" : 13.645124362892224, + "99.9999" : 13.645124362892224, + "100.0" : 13.645124362892224 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 13.600049917119565, + 13.632648222070845, + 13.59452378125 + ], + [ + 13.584037056987789, + 13.571908153324287, + 13.583858663500678 + ], + [ + 13.645124362892224, + 13.619546295238095, + 13.618690401360544 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-08T10:27:23Z-e5ee22a3a56eedd025b4edf296a9768cea9217cd-jdk17.json b/performance-results/2025-05-08T10:27:23Z-e5ee22a3a56eedd025b4edf296a9768cea9217cd-jdk17.json new file mode 100644 index 0000000000..c8669ec6c8 --- /dev/null +++ b/performance-results/2025-05-08T10:27:23Z-e5ee22a3a56eedd025b4edf296a9768cea9217cd-jdk17.json @@ -0,0 +1,181 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.largeSchema1", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02972921973588643, + "scoreError" : 2.7684413219470434E-4, + "scoreConfidence" : [ + 0.029452375603691724, + 0.030006063868081134 + ], + "scorePercentiles" : { + "0.0" : 0.029439274725339425, + "50.0" : 0.02975579625326188, + "90.0" : 0.02994045947467223, + "95.0" : 0.02994045947467223, + "99.0" : 0.02994045947467223, + "99.9" : 0.02994045947467223, + "99.99" : 0.02994045947467223, + "99.999" : 0.02994045947467223, + "99.9999" : 0.02994045947467223, + "100.0" : 0.02994045947467223 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.029576355392823765, + 0.029580841897268277, + 0.02974222042251217 + ], + [ + 0.02994045947467223, + 0.029890606422089645, + 0.029439274725339425 + ], + [ + 0.029811086942912506, + 0.029826336092098005, + 0.02975579625326188 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.largeSchema4", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 12.668458430740422, + "scoreError" : 1.1805915273343897, + "scoreConfidence" : [ + 11.487866903406033, + 13.849049958074811 + ], + "scorePercentiles" : { + "0.0" : 11.99842861031175, + "50.0" : 12.413366718362283, + "90.0" : 13.598897039402173, + "95.0" : 13.598897039402173, + "99.0" : 13.598897039402173, + "99.9" : 13.598897039402173, + "99.99" : 13.598897039402173, + "99.999" : 13.598897039402173, + "99.9999" : 13.598897039402173, + "100.0" : 13.598897039402173 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 13.598897039402173, + 13.560075350948509, + 13.559446012195123 + ], + [ + 12.282530855214723, + 12.413366718362283, + 12.54340595112782 + ], + [ + 12.039703132370638, + 11.99842861031175, + 12.02027220673077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.manyFragments", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 8.515695505125898, + "scoreError" : 0.42296393832454243, + "scoreConfidence" : [ + 8.092731566801355, + 8.93865944345044 + ], + "scorePercentiles" : { + "0.0" : 8.141705238405207, + "50.0" : 8.641473876511226, + "90.0" : 8.75441319160105, + "95.0" : 8.75441319160105, + "99.0" : 8.75441319160105, + "99.9" : 8.75441319160105, + "99.99" : 8.75441319160105, + "99.999" : 8.75441319160105, + "99.9999" : 8.75441319160105, + "100.0" : 8.75441319160105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 8.262796129644922, + 8.157323823001631, + 8.141705238405207 + ], + [ + 8.72026731386225, + 8.75441319160105, + 8.69142112945265 + ], + [ + 8.643492397579948, + 8.628366446074201, + 8.641473876511226 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-08T10:51:47Z-886710753d02132446f3c796f474fa611163a1fd-jdk17.json b/performance-results/2025-05-08T10:51:47Z-886710753d02132446f3c796f474fa611163a1fd-jdk17.json new file mode 100644 index 0000000000..136baac7cd --- /dev/null +++ b/performance-results/2025-05-08T10:51:47Z-886710753d02132446f3c796f474fa611163a1fd-jdk17.json @@ -0,0 +1,181 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.largeSchema1", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.03588946212484385, + "scoreError" : 4.7140718135983906E-4, + "scoreConfidence" : [ + 0.03541805494348401, + 0.036360869306203684 + ], + "scorePercentiles" : { + "0.0" : 0.03561240574275478, + "50.0" : 0.035830644991848654, + "90.0" : 0.03643118911091277, + "95.0" : 0.03643118911091277, + "99.0" : 0.03643118911091277, + "99.9" : 0.03643118911091277, + "99.99" : 0.03643118911091277, + "99.999" : 0.03643118911091277, + "99.9999" : 0.03643118911091277, + "100.0" : 0.03643118911091277 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.03562620693180766, + 0.03561240574275478, + 0.03563747476194549 + ], + [ + 0.03643118911091277, + 0.03620586770961937, + 0.03601010940065681 + ], + [ + 0.035830644991848654, + 0.035836954771060074, + 0.03581430570298902 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.largeSchema4", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 14.314630405923973, + "scoreError" : 0.4815885716607373, + "scoreConfidence" : [ + 13.833041834263236, + 14.79621897758471 + ], + "scorePercentiles" : { + "0.0" : 13.965903894002789, + "50.0" : 14.35250331276901, + "90.0" : 14.824477482962964, + "95.0" : 14.824477482962964, + "99.0" : 14.824477482962964, + "99.9" : 14.824477482962964, + "99.99" : 14.824477482962964, + "99.999" : 14.824477482962964, + "99.9999" : 14.824477482962964, + "100.0" : 14.824477482962964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 14.824477482962964, + 14.530075682148041, + 14.452718239884392 + ], + [ + 14.022494978991597, + 13.969122085195531, + 13.965903894002789 + ], + [ + 14.346336878223497, + 14.368041099137931, + 14.35250331276901 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "benchmark.ValidatorBenchmark.manyFragments", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 9.579567427027618, + "scoreError" : 0.39068822365148453, + "scoreConfidence" : [ + 9.188879203376134, + 9.970255650679102 + ], + "scorePercentiles" : { + "0.0" : 9.359694462114126, + "50.0" : 9.44529126345609, + "90.0" : 9.958791935323383, + "95.0" : 9.958791935323383, + "99.0" : 9.958791935323383, + "99.9" : 9.958791935323383, + "99.99" : 9.958791935323383, + "99.999" : 9.958791935323383, + "99.9999" : 9.958791935323383, + "100.0" : 9.958791935323383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 9.428172920829406, + 9.40382117575188, + 9.405310712406015 + ], + [ + 9.958791935323383, + 9.833126397246804, + 9.847409210629921 + ], + [ + 9.534488765490943, + 9.44529126345609, + 9.359694462114126 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-11T04:22:39Z-7d9516a906b57a0cd1a98d10b3a54ba5f9f9f5e6-jdk17.json b/performance-results/2025-05-11T04:22:39Z-7d9516a906b57a0cd1a98d10b3a54ba5f9f9f5e6-jdk17.json new file mode 100644 index 0000000000..4e02f12af3 --- /dev/null +++ b/performance-results/2025-05-11T04:22:39Z-7d9516a906b57a0cd1a98d10b3a54ba5f9f9f5e6-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.321755214726807, + "scoreError" : 0.03784740798068185, + "scoreConfidence" : [ + 3.283907806746125, + 3.359602622707489 + ], + "scorePercentiles" : { + "0.0" : 3.317097183279122, + "50.0" : 3.3203070727332618, + "90.0" : 3.329309530161583, + "95.0" : 3.329309530161583, + "99.0" : 3.329309530161583, + "99.9" : 3.329309530161583, + "99.99" : 3.329309530161583, + "99.999" : 3.329309530161583, + "99.9999" : 3.329309530161583, + "100.0" : 3.329309530161583 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.317148619196145, + 3.323465526270379 + ], + [ + 3.317097183279122, + 3.329309530161583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6831956247489366, + "scoreError" : 0.03200703808252988, + "scoreConfidence" : [ + 1.6511885866664067, + 1.7152026628314665 + ], + "scorePercentiles" : { + "0.0" : 1.6797429641902084, + "50.0" : 1.6812992018190203, + "90.0" : 1.6904411311674972, + "95.0" : 1.6904411311674972, + "99.0" : 1.6904411311674972, + "99.9" : 1.6904411311674972, + "99.99" : 1.6904411311674972, + "99.999" : 1.6904411311674972, + "99.9999" : 1.6904411311674972, + "100.0" : 1.6904411311674972 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6803018901699753, + 1.6797429641902084 + ], + [ + 1.6822965134680654, + 1.6904411311674972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8450477408470614, + "scoreError" : 0.034944818887395736, + "scoreConfidence" : [ + 0.8101029219596656, + 0.8799925597344571 + ], + "scorePercentiles" : { + "0.0" : 0.8389020590339495, + "50.0" : 0.8447179948597651, + "90.0" : 0.851852914634766, + "95.0" : 0.851852914634766, + "99.0" : 0.851852914634766, + "99.9" : 0.851852914634766, + "99.99" : 0.851852914634766, + "99.999" : 0.851852914634766, + "99.9999" : 0.851852914634766, + "100.0" : 0.851852914634766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8460283384789308, + 0.851852914634766 + ], + [ + 0.8389020590339495, + 0.8434076512405994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.974823156553773, + "scoreError" : 0.3040839658090654, + "scoreConfidence" : [ + 15.670739190744708, + 16.27890712236284 + ], + "scorePercentiles" : { + "0.0" : 15.86707233097951, + "50.0" : 15.976674603217845, + "90.0" : 16.09879112784439, + "95.0" : 16.09879112784439, + "99.0" : 16.09879112784439, + "99.9" : 16.09879112784439, + "99.99" : 16.09879112784439, + "99.999" : 16.09879112784439, + "99.9999" : 16.09879112784439, + "100.0" : 16.09879112784439 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.057564299042436, + 16.09879112784439, + 16.061106407453916 + ], + [ + 15.86707233097951, + 15.86861986660914, + 15.895784907393251 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2701.4928808906166, + "scoreError" : 104.13066418929037, + "scoreConfidence" : [ + 2597.3622167013264, + 2805.6235450799068 + ], + "scorePercentiles" : { + "0.0" : 2665.7488528059566, + "50.0" : 2698.8346768361494, + "90.0" : 2738.719718090565, + "95.0" : 2738.719718090565, + "99.0" : 2738.719718090565, + "99.9" : 2738.719718090565, + "99.99" : 2738.719718090565, + "99.999" : 2738.719718090565, + "99.9999" : 2738.719718090565, + "100.0" : 2738.719718090565 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2738.319694039668, + 2728.602928567922, + 2738.719718090565 + ], + [ + 2669.066425104377, + 2668.4996667352116, + 2665.7488528059566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69217.87540387959, + "scoreError" : 1255.9011580864683, + "scoreConfidence" : [ + 67961.97424579311, + 70473.77656196606 + ], + "scorePercentiles" : { + "0.0" : 68767.09378834584, + "50.0" : 69179.99400277555, + "90.0" : 69710.71150214219, + "95.0" : 69710.71150214219, + "99.0" : 69710.71150214219, + "99.9" : 69710.71150214219, + "99.99" : 69710.71150214219, + "99.999" : 69710.71150214219, + "99.9999" : 69710.71150214219, + "100.0" : 69710.71150214219 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68767.09378834584, + 68889.97151064611, + 68795.88671736693 + ], + [ + 69470.016494905, + 69673.57240987147, + 69710.71150214219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 335.5390922188157, + "scoreError" : 27.51780601246999, + "scoreConfidence" : [ + 308.02128620634574, + 363.0568982312857 + ], + "scorePercentiles" : { + "0.0" : 325.50262263541237, + "50.0" : 335.64223182719854, + "90.0" : 345.5429899678228, + "95.0" : 345.5429899678228, + "99.0" : 345.5429899678228, + "99.9" : 345.5429899678228, + "99.99" : 345.5429899678228, + "99.999" : 345.5429899678228, + "99.9999" : 345.5429899678228, + "100.0" : 345.5429899678228 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.55629816158176, + 344.26632256011516, + 345.5429899678228 + ], + [ + 327.7281654928153, + 325.50262263541237, + 326.638154495147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.66046693307199, + "scoreError" : 2.7828443376637853, + "scoreConfidence" : [ + 101.8776225954082, + 107.44331127073578 + ], + "scorePercentiles" : { + "0.0" : 102.71755078932173, + "50.0" : 105.00441569159892, + "90.0" : 105.47556915800844, + "95.0" : 105.47556915800844, + "99.0" : 105.47556915800844, + "99.9" : 105.47556915800844, + "99.99" : 105.47556915800844, + "99.999" : 105.47556915800844, + "99.9999" : 105.47556915800844, + "100.0" : 105.47556915800844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.71755078932173, + 105.07169119619266, + 105.47556915800844 + ], + [ + 104.93714018700518, + 105.14730443999524, + 104.6135458279087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06189445165071968, + "scoreError" : 6.206799706235633E-4, + "scoreConfidence" : [ + 0.061273771680096116, + 0.06251513162134324 + ], + "scorePercentiles" : { + "0.0" : 0.0616818912999229, + "50.0" : 0.06187882060587834, + "90.0" : 0.06214901881844058, + "95.0" : 0.06214901881844058, + "99.0" : 0.06214901881844058, + "99.9" : 0.06214901881844058, + "99.99" : 0.06214901881844058, + "99.999" : 0.06214901881844058, + "99.9999" : 0.06214901881844058, + "100.0" : 0.06214901881844058 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062056362495113156, + 0.06214901881844058, + 0.06207800124774196 + ], + [ + 0.06170127871664353, + 0.061700157326455944, + 0.0616818912999229 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6222278417058626E-4, + "scoreError" : 1.436205728799381E-6, + "scoreConfidence" : [ + 3.6078657844178686E-4, + 3.6365898989938565E-4 + ], + "scorePercentiles" : { + "0.0" : 3.615833889109351E-4, + "50.0" : 3.621813052566248E-4, + "90.0" : 3.6304272550598184E-4, + "95.0" : 3.6304272550598184E-4, + "99.0" : 3.6304272550598184E-4, + "99.9" : 3.6304272550598184E-4, + "99.99" : 3.6304272550598184E-4, + "99.999" : 3.6304272550598184E-4, + "99.9999" : 3.6304272550598184E-4, + "100.0" : 3.6304272550598184E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.624321171897431E-4, + 3.6304272550598184E-4, + 3.619703884101321E-4 + ], + [ + 3.6191586290360814E-4, + 3.615833889109351E-4, + 3.623922221031176E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10569772905795588, + "scoreError" : 0.005766000783490596, + "scoreConfidence" : [ + 0.09993172827446528, + 0.11146372984144648 + ], + "scorePercentiles" : { + "0.0" : 0.10378403606417867, + "50.0" : 0.10562626161616948, + "90.0" : 0.1078374621066707, + "95.0" : 0.1078374621066707, + "99.0" : 0.1078374621066707, + "99.9" : 0.1078374621066707, + "99.99" : 0.1078374621066707, + "99.999" : 0.1078374621066707, + "99.9999" : 0.1078374621066707, + "100.0" : 0.1078374621066707 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10378403606417867, + 0.10380597842966284, + 0.10388855987492078 + ], + [ + 0.1078374621066707, + 0.10750637451488405, + 0.10736396335741816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014650392799757389, + "scoreError" : 4.607404163229839E-4, + "scoreConfidence" : [ + 0.014189652383434405, + 0.015111133216080373 + ], + "scorePercentiles" : { + "0.0" : 0.014497930270151154, + "50.0" : 0.014649711624315102, + "90.0" : 0.014804060042931163, + "95.0" : 0.014804060042931163, + "99.0" : 0.014804060042931163, + "99.9" : 0.014804060042931163, + "99.99" : 0.014804060042931163, + "99.999" : 0.014804060042931163, + "99.9999" : 0.014804060042931163, + "100.0" : 0.014804060042931163 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01450220590956552, + 0.014497930270151154, + 0.014501132174707443 + ], + [ + 0.014799811062124368, + 0.014797217339064686, + 0.014804060042931163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0229649178515388, + "scoreError" : 0.05788767400199589, + "scoreConfidence" : [ + 0.9650772438495429, + 1.0808525918535346 + ], + "scorePercentiles" : { + "0.0" : 0.9965358906826108, + "50.0" : 1.0235189831895215, + "90.0" : 1.0449999470219435, + "95.0" : 1.0449999470219435, + "99.0" : 1.0449999470219435, + "99.9" : 1.0449999470219435, + "99.99" : 1.0449999470219435, + "99.999" : 1.0449999470219435, + "99.9999" : 1.0449999470219435, + "100.0" : 1.0449999470219435 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0408379277685262, + 1.0449999470219435, + 1.0379038788916564 + ], + [ + 1.0083777752571084, + 0.9965358906826108, + 1.0091340874873864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01233187839236372, + "scoreError" : 0.002065716953982727, + "scoreConfidence" : [ + 0.010266161438380994, + 0.014397595346346447 + ], + "scorePercentiles" : { + "0.0" : 0.01164799008554017, + "50.0" : 0.012335272617598625, + "90.0" : 0.013011149584826319, + "95.0" : 0.013011149584826319, + "99.0" : 0.013011149584826319, + "99.9" : 0.013011149584826319, + "99.99" : 0.013011149584826319, + "99.999" : 0.013011149584826319, + "99.9999" : 0.013011149584826319, + "100.0" : 0.013011149584826319 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01164799008554017, + 0.011658676801686267, + 0.011671690615911076 + ], + [ + 0.013011149584826319, + 0.013002908646932317, + 0.012998854619286173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.847116915236733, + "scoreError" : 0.15295487315868667, + "scoreConfidence" : [ + 3.6941620420780463, + 4.000071788395419 + ], + "scorePercentiles" : { + "0.0" : 3.773638907239819, + "50.0" : 3.869265487575702, + "90.0" : 3.894678387071651, + "95.0" : 3.894678387071651, + "99.0" : 3.894678387071651, + "99.9" : 3.894678387071651, + "99.99" : 3.894678387071651, + "99.999" : 3.894678387071651, + "99.9999" : 3.894678387071651, + "100.0" : 3.894678387071651 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.892681727626459, + 3.8751172052672347, + 3.894678387071651 + ], + [ + 3.8634137698841697, + 3.7831714943310657, + 3.773638907239819 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9797002593735313, + "scoreError" : 0.011882920216597351, + "scoreConfidence" : [ + 2.967817339156934, + 2.991583179590129 + ], + "scorePercentiles" : { + "0.0" : 2.9745567911957167, + "50.0" : 2.9795149181285163, + "90.0" : 2.9864260644968645, + "95.0" : 2.9864260644968645, + "99.0" : 2.9864260644968645, + "99.9" : 2.9864260644968645, + "99.99" : 2.9864260644968645, + "99.999" : 2.9864260644968645, + "99.9999" : 2.9864260644968645, + "100.0" : 2.9864260644968645 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9763880276785715, + 2.978365785884455, + 2.9745567911957167 + ], + [ + 2.980664050372578, + 2.9864260644968645, + 2.9818008366129996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17938311706802712, + "scoreError" : 0.00918432020980252, + "scoreConfidence" : [ + 0.1701987968582246, + 0.18856743727782965 + ], + "scorePercentiles" : { + "0.0" : 0.1763890787208523, + "50.0" : 0.17864971073123184, + "90.0" : 0.18346935419953767, + "95.0" : 0.18346935419953767, + "99.0" : 0.18346935419953767, + "99.9" : 0.18346935419953767, + "99.99" : 0.18346935419953767, + "99.999" : 0.18346935419953767, + "99.9999" : 0.18346935419953767, + "100.0" : 0.18346935419953767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17670494580601842, + 0.17646691988706548, + 0.1763890787208523 + ], + [ + 0.18346935419953767, + 0.18267392813824346, + 0.18059447565644526 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3385581582622825, + "scoreError" : 0.006812947137468368, + "scoreConfidence" : [ + 0.33174521112481414, + 0.3453711053997509 + ], + "scorePercentiles" : { + "0.0" : 0.3365162952855268, + "50.0" : 0.3376265530343475, + "90.0" : 0.3425956716341213, + "95.0" : 0.3425956716341213, + "99.0" : 0.3425956716341213, + "99.9" : 0.3425956716341213, + "99.99" : 0.3425956716341213, + "99.999" : 0.3425956716341213, + "99.9999" : 0.3425956716341213, + "100.0" : 0.3425956716341213 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3425956716341213, + 0.34025810585233074, + 0.3367257707330213 + ], + [ + 0.3365162952855268, + 0.3368985727759625, + 0.33835453329273246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15470342614514052, + "scoreError" : 0.0011858530750550893, + "scoreConfidence" : [ + 0.15351757307008543, + 0.1558892792201956 + ], + "scorePercentiles" : { + "0.0" : 0.1542367767015747, + "50.0" : 0.1546718108122327, + "90.0" : 0.1552512860136929, + "95.0" : 0.1552512860136929, + "99.0" : 0.1552512860136929, + "99.9" : 0.1552512860136929, + "99.99" : 0.1552512860136929, + "99.999" : 0.1552512860136929, + "99.9999" : 0.1552512860136929, + "100.0" : 0.1552512860136929 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15483104629342911, + 0.1552512860136929, + 0.1550965437132621 + ], + [ + 0.1542367767015747, + 0.154292328817848, + 0.1545125753310363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.41721164638313013, + "scoreError" : 0.03866243040348561, + "scoreConfidence" : [ + 0.3785492159796445, + 0.45587407678661573 + ], + "scorePercentiles" : { + "0.0" : 0.40423246942075264, + "50.0" : 0.4157824582157289, + "90.0" : 0.4316762584390918, + "95.0" : 0.4316762584390918, + "99.0" : 0.4316762584390918, + "99.9" : 0.4316762584390918, + "99.99" : 0.4316762584390918, + "99.999" : 0.4316762584390918, + "99.9999" : 0.4316762584390918, + "100.0" : 0.4316762584390918 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4057453275449345, + 0.40423246942075264, + 0.404365533015244 + ], + [ + 0.4316762584390918, + 0.4314307009922347, + 0.4258195888865233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15678497335885955, + "scoreError" : 0.0024965474209332275, + "scoreConfidence" : [ + 0.15428842593792633, + 0.15928152077979277 + ], + "scorePercentiles" : { + "0.0" : 0.15609496935924452, + "50.0" : 0.1565392116380705, + "90.0" : 0.1585025348063146, + "95.0" : 0.1585025348063146, + "99.0" : 0.1585025348063146, + "99.9" : 0.1585025348063146, + "99.99" : 0.1585025348063146, + "99.999" : 0.1585025348063146, + "99.9999" : 0.1585025348063146, + "100.0" : 0.1585025348063146 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1585025348063146, + 0.15680876772301758, + 0.15676527845620855 + ], + [ + 0.15631314481993247, + 0.15622514498843967, + 0.15609496935924452 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04681681512179368, + "scoreError" : 0.0025801131373482072, + "scoreConfidence" : [ + 0.04423670198444547, + 0.04939692825914188 + ], + "scorePercentiles" : { + "0.0" : 0.04591605002020276, + "50.0" : 0.046829234705807674, + "90.0" : 0.04768982080775999, + "95.0" : 0.04768982080775999, + "99.0" : 0.04768982080775999, + "99.9" : 0.04768982080775999, + "99.99" : 0.04768982080775999, + "99.999" : 0.04768982080775999, + "99.9999" : 0.04768982080775999, + "100.0" : 0.04768982080775999 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04604696674540574, + 0.04597117970771982, + 0.04591605002020276 + ], + [ + 0.047665370783464174, + 0.0476115026662096, + 0.04768982080775999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9671527.092539549, + "scoreError" : 314390.489275314, + "scoreConfidence" : [ + 9357136.603264235, + 9985917.581814863 + ], + "scorePercentiles" : { + "0.0" : 9558568.090735435, + "50.0" : 9675081.829200074, + "90.0" : 9787145.432485323, + "95.0" : 9787145.432485323, + "99.0" : 9787145.432485323, + "99.9" : 9787145.432485323, + "99.99" : 9787145.432485323, + "99.999" : 9787145.432485323, + "99.9999" : 9787145.432485323, + "100.0" : 9787145.432485323 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9585310.691570882, + 9558568.090735435, + 9565325.200764818 + ], + [ + 9787145.432485323, + 9764852.966829268, + 9767960.172851562 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-12T05:47:12Z-061262145be24a76f10d625ca569d463703d053c-jdk17.json b/performance-results/2025-05-12T05:47:12Z-061262145be24a76f10d625ca569d463703d053c-jdk17.json new file mode 100644 index 0000000000..dcc120e001 --- /dev/null +++ b/performance-results/2025-05-12T05:47:12Z-061262145be24a76f10d625ca569d463703d053c-jdk17.json @@ -0,0 +1,4 @@ +[ +] + + diff --git a/performance-results/2025-05-12T06:46:25Z-061262145be24a76f10d625ca569d463703d053c-jdk17.json b/performance-results/2025-05-12T06:46:25Z-061262145be24a76f10d625ca569d463703d053c-jdk17.json new file mode 100644 index 0000000000..6092ed9526 --- /dev/null +++ b/performance-results/2025-05-12T06:46:25Z-061262145be24a76f10d625ca569d463703d053c-jdk17.json @@ -0,0 +1,1456 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4039635682050546, + "scoreError" : 0.038135340492503556, + "scoreConfidence" : [ + 3.365828227712551, + 3.442098908697558 + ], + "scorePercentiles" : { + "0.0" : 3.3993150852608, + "50.0" : 3.4023028992672737, + "90.0" : 3.4119333890248726, + "95.0" : 3.4119333890248726, + "99.0" : 3.4119333890248726, + "99.9" : 3.4119333890248726, + "99.99" : 3.4119333890248726, + "99.999" : 3.4119333890248726, + "99.9999" : 3.4119333890248726, + "100.0" : 3.4119333890248726 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3996722590154436, + 3.4119333890248726 + ], + [ + 3.3993150852608, + 3.4049335395191034 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7159960167031723, + "scoreError" : 0.020244938478001826, + "scoreConfidence" : [ + 1.6957510782251703, + 1.7362409551811742 + ], + "scorePercentiles" : { + "0.0" : 1.7133302953905818, + "50.0" : 1.715062171918238, + "90.0" : 1.7205294275856318, + "95.0" : 1.7205294275856318, + "99.0" : 1.7205294275856318, + "99.9" : 1.7205294275856318, + "99.99" : 1.7205294275856318, + "99.999" : 1.7205294275856318, + "99.9999" : 1.7205294275856318, + "100.0" : 1.7205294275856318 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7152099411140975, + 1.7149144027223782 + ], + [ + 1.7133302953905818, + 1.7205294275856318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8572918447992708, + "scoreError" : 0.06125468211661899, + "scoreConfidence" : [ + 0.7960371626826518, + 0.9185465269158898 + ], + "scorePercentiles" : { + "0.0" : 0.8485362926860941, + "50.0" : 0.8574366544396106, + "90.0" : 0.8657577776317679, + "95.0" : 0.8657577776317679, + "99.0" : 0.8657577776317679, + "99.9" : 0.8657577776317679, + "99.99" : 0.8657577776317679, + "99.999" : 0.8657577776317679, + "99.9999" : 0.8657577776317679, + "100.0" : 0.8657577776317679 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8496522551321891, + 0.8485362926860941 + ], + [ + 0.8657577776317679, + 0.8652210537470321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 26.15093331933329, + "scoreError" : 2.2129287054070703, + "scoreConfidence" : [ + 23.93800461392622, + 28.36386202474036 + ], + "scorePercentiles" : { + "0.0" : 25.389464390620365, + "50.0" : 26.140757807476934, + "90.0" : 26.909329883243206, + "95.0" : 26.909329883243206, + "99.0" : 26.909329883243206, + "99.9" : 26.909329883243206, + "99.99" : 26.909329883243206, + "99.999" : 26.909329883243206, + "99.9999" : 26.909329883243206, + "100.0" : 26.909329883243206 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 26.909329883243206, + 26.878878098377818, + 26.823524468756656 + ], + [ + 25.457991146197212, + 25.389464390620365, + 25.446411928804476 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3742.4305410117445, + "scoreError" : 38.89806337448347, + "scoreConfidence" : [ + 3703.532477637261, + 3781.328604386228 + ], + "scorePercentiles" : { + "0.0" : 3728.5068387144943, + "50.0" : 3742.275292659087, + "90.0" : 3756.52360753583, + "95.0" : 3756.52360753583, + "99.0" : 3756.52360753583, + "99.9" : 3756.52360753583, + "99.99" : 3756.52360753583, + "99.999" : 3756.52360753583, + "99.9999" : 3756.52360753583, + "100.0" : 3756.52360753583 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 3728.5068387144943, + 3730.9339518464744, + 3730.005351211029 + ], + [ + 3756.52360753583, + 3753.6166334716995, + 3754.9968632909395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 88235.55538968794, + "scoreError" : 1968.179801429618, + "scoreConfidence" : [ + 86267.37558825832, + 90203.73519111756 + ], + "scorePercentiles" : { + "0.0" : 87522.48914386719, + "50.0" : 88267.72687030758, + "90.0" : 88939.88806148905, + "95.0" : 88939.88806148905, + "99.0" : 88939.88806148905, + "99.9" : 88939.88806148905, + "99.99" : 88939.88806148905, + "99.999" : 88939.88806148905, + "99.9999" : 88939.88806148905, + "100.0" : 88939.88806148905 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 88858.17153380606, + 88819.47950118239, + 88939.88806148905 + ], + [ + 87715.97423943278, + 87557.32985835015, + 87522.48914386719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 451.0310081249445, + "scoreError" : 2.029584828392785, + "scoreConfidence" : [ + 449.0014232965517, + 453.0605929533373 + ], + "scorePercentiles" : { + "0.0" : 450.13480490558544, + "50.0" : 450.9712058419325, + "90.0" : 452.11894578823916, + "95.0" : 452.11894578823916, + "99.0" : 452.11894578823916, + "99.9" : 452.11894578823916, + "99.99" : 452.11894578823916, + "99.999" : 452.11894578823916, + "99.9999" : 452.11894578823916, + "100.0" : 452.11894578823916 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 451.0714706316255, + 452.11894578823916, + 451.5438342686307 + ], + [ + 450.13480490558544, + 450.8709410522395, + 450.4460521033468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 160.7960165072474, + "scoreError" : 12.41939459509834, + "scoreConfidence" : [ + 148.37662191214906, + 173.21541110234574 + ], + "scorePercentiles" : { + "0.0" : 154.3189147774426, + "50.0" : 161.6859086069535, + "90.0" : 165.5060574708323, + "95.0" : 165.5060574708323, + "99.0" : 165.5060574708323, + "99.9" : 165.5060574708323, + "99.99" : 165.5060574708323, + "99.999" : 165.5060574708323, + "99.9999" : 165.5060574708323, + "100.0" : 165.5060574708323 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 154.3189147774426, + 161.53864337477995, + 161.833173839127 + ], + [ + 156.7703203683641, + 165.5060574708323, + 164.80898921293863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.03737130375486193, + "scoreError" : 0.0037769606774510126, + "scoreConfidence" : [ + 0.03359434307741092, + 0.041148264432312946 + ], + "scorePercentiles" : { + "0.0" : 0.03607893355798163, + "50.0" : 0.037357473244903724, + "90.0" : 0.038637066222862726, + "95.0" : 0.038637066222862726, + "99.0" : 0.038637066222862726, + "99.9" : 0.038637066222862726, + "99.99" : 0.038637066222862726, + "99.999" : 0.038637066222862726, + "99.9999" : 0.038637066222862726, + "100.0" : 0.038637066222862726 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.038637066222862726, + 0.03853895032796109, + 0.03862414179444595 + ], + [ + 0.036175996161846365, + 0.03607893355798163, + 0.03617273446407385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7668549526923907E-4, + "scoreError" : 1.4107565433314784E-6, + "scoreConfidence" : [ + 2.752747387259076E-4, + 2.7809625181257055E-4 + ], + "scorePercentiles" : { + "0.0" : 2.761075022443768E-4, + "50.0" : 2.767079788762257E-4, + "90.0" : 2.772291928512049E-4, + "95.0" : 2.772291928512049E-4, + "99.0" : 2.772291928512049E-4, + "99.9" : 2.772291928512049E-4, + "99.99" : 2.772291928512049E-4, + "99.999" : 2.772291928512049E-4, + "99.9999" : 2.772291928512049E-4, + "100.0" : 2.772291928512049E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7708372459992804E-4, + 2.772291928512049E-4, + 2.770999056903482E-4 + ], + [ + 2.762604130770531E-4, + 2.761075022443768E-4, + 2.763322331525234E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.08233263703044463, + "scoreError" : 0.005750170923647221, + "scoreConfidence" : [ + 0.0765824661067974, + 0.08808280795409186 + ], + "scorePercentiles" : { + "0.0" : 0.08041689977001142, + "50.0" : 0.08216582500384481, + "90.0" : 0.08513194734691445, + "95.0" : 0.08513194734691445, + "99.0" : 0.08513194734691445, + "99.9" : 0.08513194734691445, + "99.99" : 0.08513194734691445, + "99.999" : 0.08513194734691445, + "99.9999" : 0.08513194734691445, + "100.0" : 0.08513194734691445 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.08513194734691445, + 0.08362927676495677, + 0.08364316995098613 + ], + [ + 0.08047215510706612, + 0.08041689977001142, + 0.08070237324273287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.011324664949041392, + "scoreError" : 1.226797428763545E-4, + "scoreConfidence" : [ + 0.011201985206165038, + 0.011447344691917747 + ], + "scorePercentiles" : { + "0.0" : 0.011273352780633641, + "50.0" : 0.011326313158639217, + "90.0" : 0.011369750131034256, + "95.0" : 0.011369750131034256, + "99.0" : 0.011369750131034256, + "99.9" : 0.011369750131034256, + "99.99" : 0.011369750131034256, + "99.999" : 0.011369750131034256, + "99.9999" : 0.011369750131034256, + "100.0" : 0.011369750131034256 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011293261533353586, + 0.011289322499144848, + 0.011273352780633641 + ], + [ + 0.011359364783924849, + 0.011369750131034256, + 0.011362937966157161 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.910049293166913, + "scoreError" : 0.01654550738732981, + "scoreConfidence" : [ + 0.8935037857795831, + 0.9265948005542428 + ], + "scorePercentiles" : { + "0.0" : 0.9040742694811065, + "50.0" : 0.9103817569473458, + "90.0" : 0.9156442657938106, + "95.0" : 0.9156442657938106, + "99.0" : 0.9156442657938106, + "99.9" : 0.9156442657938106, + "99.99" : 0.9156442657938106, + "99.999" : 0.9156442657938106, + "99.9999" : 0.9156442657938106, + "100.0" : 0.9156442657938106 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9040742694811065, + 0.90546437971933, + 0.9045013259768452 + ], + [ + 0.9152991341753616, + 0.9156442657938106, + 0.9153123838550247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.009666037150918334, + "scoreError" : 2.351783750952818E-4, + "scoreConfidence" : [ + 0.009430858775823052, + 0.009901215526013616 + ], + "scorePercentiles" : { + "0.0" : 0.00955085898912568, + "50.0" : 0.009646370429975555, + "90.0" : 0.009769925221136054, + "95.0" : 0.009769925221136054, + "99.0" : 0.009769925221136054, + "99.9" : 0.009769925221136054, + "99.99" : 0.009769925221136054, + "99.999" : 0.009769925221136054, + "99.9999" : 0.009769925221136054, + "100.0" : 0.009769925221136054 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.009661462780295052, + 0.009756919619023087, + 0.009769925221136054 + ], + [ + 0.00955085898912568, + 0.009631278079656058, + 0.009625778216274073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.656105733436621, + "scoreError" : 0.10180240668832735, + "scoreConfidence" : [ + 2.5543033267482937, + 2.757908140124948 + ], + "scorePercentiles" : { + "0.0" : 2.605159203125, + "50.0" : 2.654755433648141, + "90.0" : 2.6971860490830637, + "95.0" : 2.6971860490830637, + "99.0" : 2.6971860490830637, + "99.9" : 2.6971860490830637, + "99.99" : 2.6971860490830637, + "99.999" : 2.6971860490830637, + "99.9999" : 2.6971860490830637, + "100.0" : 2.6971860490830637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6741479331550804, + 2.6971860490830637, + 2.6895176462365593 + ], + [ + 2.605159203125, + 2.6353629341412015, + 2.63526063487882 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.171946794756839, + "scoreError" : 0.1366653557024983, + "scoreConfidence" : [ + 2.035281439054341, + 2.3086121504593375 + ], + "scorePercentiles" : { + "0.0" : 2.125853376833156, + "50.0" : 2.1721354459924114, + "90.0" : 2.2186541098047914, + "95.0" : 2.2186541098047914, + "99.0" : 2.2186541098047914, + "99.9" : 2.2186541098047914, + "99.99" : 2.2186541098047914, + "99.999" : 2.2186541098047914, + "99.9999" : 2.2186541098047914, + "100.0" : 2.2186541098047914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.1273093952350566, + 2.125853376833156, + 2.129284882903981 + ], + [ + 2.2186541098047914, + 2.2149860090808415, + 2.215592994683208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1114998334250367, + "scoreError" : 0.012074117704502238, + "scoreConfidence" : [ + 0.09942571572053446, + 0.12357395112953895 + ], + "scorePercentiles" : { + "0.0" : 0.10759132118649538, + "50.0" : 0.11064675664156765, + "90.0" : 0.11909836585046328, + "95.0" : 0.11909836585046328, + "99.0" : 0.11909836585046328, + "99.9" : 0.11909836585046328, + "99.99" : 0.11909836585046328, + "99.999" : 0.11909836585046328, + "99.9999" : 0.11909836585046328, + "100.0" : 0.11909836585046328 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10841273219648104, + 0.10759132118649538, + 0.10871280873384283 + ], + [ + 0.11909836585046328, + 0.11260306803364524, + 0.11258070454929245 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.2509630707756349, + "scoreError" : 0.01696682424425605, + "scoreConfidence" : [ + 0.23399624653137885, + 0.26792989501989095 + ], + "scorePercentiles" : { + "0.0" : 0.2465078494133307, + "50.0" : 0.2476348999050887, + "90.0" : 0.25922167463321066, + "95.0" : 0.25922167463321066, + "99.0" : 0.25922167463321066, + "99.9" : 0.25922167463321066, + "99.99" : 0.25922167463321066, + "99.999" : 0.25922167463321066, + "99.9999" : 0.25922167463321066, + "100.0" : 0.25922167463321066 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.25922167463321066, + 0.2465078494133307, + 0.2465310340942708 + ], + [ + 0.25824806670281997, + 0.24738625009895113, + 0.24788354971122623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1187141272556791, + "scoreError" : 0.002635325185164799, + "scoreConfidence" : [ + 0.11607880207051431, + 0.1213494524408439 + ], + "scorePercentiles" : { + "0.0" : 0.11768829323432149, + "50.0" : 0.11872789060613767, + "90.0" : 0.119642910532046, + "95.0" : 0.119642910532046, + "99.0" : 0.119642910532046, + "99.9" : 0.119642910532046, + "99.99" : 0.119642910532046, + "99.999" : 0.119642910532046, + "99.9999" : 0.119642910532046, + "100.0" : 0.119642910532046 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.119642910532046, + 0.11949162717919917, + 0.1195648542665503 + ], + [ + 0.11768829323432149, + 0.11793292428888155, + 0.11796415403307618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.22293134044623394, + "scoreError" : 0.02193957281967013, + "scoreConfidence" : [ + 0.20099176762656382, + 0.24487091326590407 + ], + "scorePercentiles" : { + "0.0" : 0.21530867803470696, + "50.0" : 0.22244727199610093, + "90.0" : 0.2322431269421027, + "95.0" : 0.2322431269421027, + "99.0" : 0.2322431269421027, + "99.9" : 0.2322431269421027, + "99.99" : 0.2322431269421027, + "99.999" : 0.2322431269421027, + "99.9999" : 0.2322431269421027, + "100.0" : 0.2322431269421027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2322431269421027, + 0.21606679275775645, + 0.21530867803470696 + ], + [ + 0.22907490095063568, + 0.2286082709857352, + 0.2162862730064667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.08669651554760087, + "scoreError" : 0.01063026087453031, + "scoreConfidence" : [ + 0.07606625467307056, + 0.09732677642213118 + ], + "scorePercentiles" : { + "0.0" : 0.08253204213193362, + "50.0" : 0.08653567018067199, + "90.0" : 0.09189718713643757, + "95.0" : 0.09189718713643757, + "99.0" : 0.09189718713643757, + "99.9" : 0.09189718713643757, + "99.99" : 0.09189718713643757, + "99.999" : 0.09189718713643757, + "99.9999" : 0.09189718713643757, + "100.0" : 0.09189718713643757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.09189718713643757, + 0.0865249259794421, + 0.08654641438190189 + ], + [ + 0.09002408143386986, + 0.08253204213193362, + 0.08265444222202019 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.02688092896808536, + "scoreError" : 0.004478743633936838, + "scoreConfidence" : [ + 0.022402185334148523, + 0.0313596726020222 + ], + "scorePercentiles" : { + "0.0" : 0.025218869114687622, + "50.0" : 0.02680919723415516, + "90.0" : 0.029402981602848516, + "95.0" : 0.029402981602848516, + "99.0" : 0.029402981602848516, + "99.9" : 0.029402981602848516, + "99.99" : 0.029402981602848516, + "99.999" : 0.029402981602848516, + "99.9999" : 0.029402981602848516, + "100.0" : 0.029402981602848516 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.029402981602848516, + 0.026873348184197655, + 0.02674504628411267 + ], + [ + 0.027818084913612047, + 0.025227243709053666, + 0.025218869114687622 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6252346.324412476, + "scoreError" : 460883.43605244183, + "scoreConfidence" : [ + 5791462.888360035, + 6713229.760464918 + ], + "scorePercentiles" : { + "0.0" : 6035799.255280628, + "50.0" : 6291846.744589164, + "90.0" : 6486939.183527886, + "95.0" : 6486939.183527886, + "99.0" : 6486939.183527886, + "99.9" : 6486939.183527886, + "99.99" : 6486939.183527886, + "99.999" : 6486939.183527886, + "99.9999" : 6486939.183527886, + "100.0" : 6486939.183527886 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6486939.183527886, + 6301348.154379332, + 6315910.075126262 + ], + [ + 6282345.334798995, + 6035799.255280628, + 6091735.943361754 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ValidatorPerformance.largeSchema1", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.025287922605893198, + "scoreError" : 0.002936959394093174, + "scoreConfidence" : [ + 0.022350963211800023, + 0.028224881999986372 + ], + "scorePercentiles" : { + "0.0" : 0.02352473156571181, + "50.0" : 0.02537146819986554, + "90.0" : 0.028350539164183675, + "95.0" : 0.028350539164183675, + "99.0" : 0.028350539164183675, + "99.9" : 0.028350539164183675, + "99.99" : 0.028350539164183675, + "99.999" : 0.028350539164183675, + "99.9999" : 0.028350539164183675, + "100.0" : 0.028350539164183675 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.02537146819986554, + 0.023552887678292164, + 0.02352473156571181 + ], + [ + 0.0256087116184379, + 0.023839349074932716, + 0.023855965586093212 + ], + [ + 0.028350539164183675, + 0.027212772513408857, + 0.026274878052112864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ValidatorPerformance.largeSchema4", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 10.207298421372542, + "scoreError" : 0.6558113227681831, + "scoreConfidence" : [ + 9.551487098604358, + 10.863109744140726 + ], + "scorePercentiles" : { + "0.0" : 9.651269155255545, + "50.0" : 10.217042909090909, + "90.0" : 10.866004875135722, + "95.0" : 10.866004875135722, + "99.0" : 10.866004875135722, + "99.9" : 10.866004875135722, + "99.99" : 10.866004875135722, + "99.999" : 10.866004875135722, + "99.9999" : 10.866004875135722, + "100.0" : 10.866004875135722 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 10.866004875135722, + 10.28923801851852, + 10.034374594784353 + ], + [ + 10.420364461458334, + 10.217042909090909, + 9.651269155255545 + ], + [ + 10.617607174097664, + 9.977153226321036, + 9.792631377690803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ValidatorPerformance.manyFragments", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/24.0.1-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "24.0.1", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "24.0.1+9-FR", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 7.117507957846131, + "scoreError" : 0.36834630575554955, + "scoreConfidence" : [ + 6.7491616520905815, + 7.485854263601681 + ], + "scorePercentiles" : { + "0.0" : 6.849033302532512, + "50.0" : 7.252914697606961, + "90.0" : 7.344143314977973, + "95.0" : 7.344143314977973, + "99.0" : 7.344143314977973, + "99.9" : 7.344143314977973, + "99.99" : 7.344143314977973, + "99.999" : 7.344143314977973, + "99.9999" : 7.344143314977973, + "100.0" : 7.344143314977973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 6.882275011691885, + 6.849033302532512, + 6.853697062328767 + ], + [ + 7.310176976608187, + 7.344143314977973, + 7.252914697606961 + ], + [ + 7.324417578330893, + 7.257789008708273, + 6.983124667829728 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-13T01:49:54Z-65e27d9e0903be95d10252021ef5af45a731bd65-jdk17.json b/performance-results/2025-05-13T01:49:54Z-65e27d9e0903be95d10252021ef5af45a731bd65-jdk17.json new file mode 100644 index 0000000000..1be37280b3 --- /dev/null +++ b/performance-results/2025-05-13T01:49:54Z-65e27d9e0903be95d10252021ef5af45a731bd65-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3282025744568506, + "scoreError" : 0.031854593840040954, + "scoreConfidence" : [ + 3.29634798061681, + 3.3600571682968914 + ], + "scorePercentiles" : { + "0.0" : 3.321750624035161, + "50.0" : 3.3286505112358626, + "90.0" : 3.333758651320517, + "95.0" : 3.333758651320517, + "99.0" : 3.333758651320517, + "99.9" : 3.333758651320517, + "99.99" : 3.333758651320517, + "99.999" : 3.333758651320517, + "99.9999" : 3.333758651320517, + "100.0" : 3.333758651320517 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.328681793581338, + 3.333758651320517 + ], + [ + 3.321750624035161, + 3.3286192288903873 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6800356245695665, + "scoreError" : 0.05216034991909038, + "scoreConfidence" : [ + 1.627875274650476, + 1.7321959744886568 + ], + "scorePercentiles" : { + "0.0" : 1.6736069978985413, + "50.0" : 1.6775910923965405, + "90.0" : 1.691353315586643, + "95.0" : 1.691353315586643, + "99.0" : 1.691353315586643, + "99.9" : 1.691353315586643, + "99.99" : 1.691353315586643, + "99.999" : 1.691353315586643, + "99.9999" : 1.691353315586643, + "100.0" : 1.691353315586643 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6736069978985413, + 1.6749362382193909 + ], + [ + 1.68024594657369, + 1.691353315586643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8406275309627536, + "scoreError" : 0.0536071708701671, + "scoreConfidence" : [ + 0.7870203600925865, + 0.8942347018329206 + ], + "scorePercentiles" : { + "0.0" : 0.8336830700970194, + "50.0" : 0.8382191329590478, + "90.0" : 0.8523887878358988, + "95.0" : 0.8523887878358988, + "99.0" : 0.8523887878358988, + "99.9" : 0.8523887878358988, + "99.99" : 0.8523887878358988, + "99.999" : 0.8523887878358988, + "99.9999" : 0.8523887878358988, + "100.0" : 0.8523887878358988 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.836181255430769, + 0.8523887878358988 + ], + [ + 0.8336830700970194, + 0.8402570104873267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.09158503338968, + "scoreError" : 0.2839609063482079, + "scoreConfidence" : [ + 15.807624127041473, + 16.37554593973789 + ], + "scorePercentiles" : { + "0.0" : 15.923528236919983, + "50.0" : 16.111815444849967, + "90.0" : 16.19581700725027, + "95.0" : 16.19581700725027, + "99.0" : 16.19581700725027, + "99.9" : 16.19581700725027, + "99.99" : 16.19581700725027, + "99.999" : 16.19581700725027, + "99.9999" : 16.19581700725027, + "100.0" : 16.19581700725027 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.19581700725027, + 16.1180123321631, + 16.17741385228604 + ], + [ + 15.923528236919983, + 16.105618557536832, + 16.029120214181855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2630.5747064423244, + "scoreError" : 39.64914886995501, + "scoreConfidence" : [ + 2590.9255575723696, + 2670.2238553122793 + ], + "scorePercentiles" : { + "0.0" : 2612.2786518959947, + "50.0" : 2629.6190143669755, + "90.0" : 2655.754307951745, + "95.0" : 2655.754307951745, + "99.0" : 2655.754307951745, + "99.9" : 2655.754307951745, + "99.99" : 2655.754307951745, + "99.999" : 2655.754307951745, + "99.9999" : 2655.754307951745, + "100.0" : 2655.754307951745 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2612.2786518959947, + 2630.914361215289, + 2630.201744376071 + ], + [ + 2629.03628435788, + 2625.2628888569648, + 2655.754307951745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69246.29313138958, + "scoreError" : 744.791374217602, + "scoreConfidence" : [ + 68501.50175717198, + 69991.08450560718 + ], + "scorePercentiles" : { + "0.0" : 68914.4668618786, + "50.0" : 69237.97150935838, + "90.0" : 69553.9959302055, + "95.0" : 69553.9959302055, + "99.0" : 69553.9959302055, + "99.9" : 69553.9959302055, + "99.99" : 69553.9959302055, + "99.999" : 69553.9959302055, + "99.9999" : 69553.9959302055, + "100.0" : 69553.9959302055 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69553.9959302055, + 69501.45417556056, + 69373.46309750617 + ], + [ + 69102.47992121059, + 69031.89880197613, + 68914.4668618786 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.661921524353, + "scoreError" : 5.026434578574118, + "scoreConfidence" : [ + 342.63548694577884, + 352.6883561029271 + ], + "scorePercentiles" : { + "0.0" : 345.11262373021, + "50.0" : 347.6357131007909, + "90.0" : 350.4918877250619, + "95.0" : 350.4918877250619, + "99.0" : 350.4918877250619, + "99.9" : 350.4918877250619, + "99.99" : 350.4918877250619, + "99.999" : 350.4918877250619, + "99.9999" : 350.4918877250619, + "100.0" : 350.4918877250619 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.6857621985008, + 345.11262373021, + 350.4918877250619 + ], + [ + 346.67464854963816, + 347.58566400308104, + 348.42094293962606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.00238432076134, + "scoreError" : 6.857987346581766, + "scoreConfidence" : [ + 100.14439697417957, + 113.8603716673431 + ], + "scorePercentiles" : { + "0.0" : 103.8336008315911, + "50.0" : 107.15926188925562, + "90.0" : 109.74866873677877, + "95.0" : 109.74866873677877, + "99.0" : 109.74866873677877, + "99.9" : 109.74866873677877, + "99.99" : 109.74866873677877, + "99.999" : 109.74866873677877, + "99.9999" : 109.74866873677877, + "100.0" : 109.74866873677877 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.50682816303517, + 107.52070849869929, + 103.8336008315911 + ], + [ + 104.60668441465171, + 106.79781527981194, + 109.74866873677877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06260161725282631, + "scoreError" : 0.004232067371114513, + "scoreConfidence" : [ + 0.0583695498817118, + 0.06683368462394082 + ], + "scorePercentiles" : { + "0.0" : 0.06105434497411351, + "50.0" : 0.06228573273913556, + "90.0" : 0.06545024072752977, + "95.0" : 0.06545024072752977, + "99.0" : 0.06545024072752977, + "99.9" : 0.06545024072752977, + "99.99" : 0.06545024072752977, + "99.999" : 0.06545024072752977, + "99.9999" : 0.06545024072752977, + "100.0" : 0.06545024072752977 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061985069000570256, + 0.06189593403274224, + 0.06545024072752977 + ], + [ + 0.06263771830430126, + 0.06258639647770087, + 0.06105434497411351 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 4.031353724038786E-4, + "scoreError" : 1.8795673335172726E-5, + "scoreConfidence" : [ + 3.843396990687059E-4, + 4.2193104573905134E-4 + ], + "scorePercentiles" : { + "0.0" : 3.956440911185278E-4, + "50.0" : 4.028911593448254E-4, + "90.0" : 4.132115151622585E-4, + "95.0" : 4.132115151622585E-4, + "99.0" : 4.132115151622585E-4, + "99.9" : 4.132115151622585E-4, + "99.99" : 4.132115151622585E-4, + "99.999" : 4.132115151622585E-4, + "99.9999" : 4.132115151622585E-4, + "100.0" : 4.132115151622585E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.956440911185278E-4, + 4.0064080787555266E-4, + 3.968651224518151E-4 + ], + [ + 4.051415108140982E-4, + 4.0730918700101934E-4, + 4.132115151622585E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10813153993675766, + "scoreError" : 0.007086229449738516, + "scoreConfidence" : [ + 0.10104531048701915, + 0.11521776938649617 + ], + "scorePercentiles" : { + "0.0" : 0.10572389305197277, + "50.0" : 0.10756089269840047, + "90.0" : 0.11099187548279689, + "95.0" : 0.11099187548279689, + "99.0" : 0.11099187548279689, + "99.9" : 0.11099187548279689, + "99.99" : 0.11099187548279689, + "99.999" : 0.11099187548279689, + "99.9999" : 0.11099187548279689, + "100.0" : 0.11099187548279689 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.11099187548279689, + 0.11094913917056827, + 0.10911460662964136 + ], + [ + 0.10600254651840701, + 0.1060071787671596, + 0.10572389305197277 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014418096432272993, + "scoreError" : 1.9825021424852468E-4, + "scoreConfidence" : [ + 0.01421984621802447, + 0.014616346646521517 + ], + "scorePercentiles" : { + "0.0" : 0.014305885758958138, + "50.0" : 0.014436239034811681, + "90.0" : 0.014484291108787217, + "95.0" : 0.014484291108787217, + "99.0" : 0.014484291108787217, + "99.9" : 0.014484291108787217, + "99.99" : 0.014484291108787217, + "99.999" : 0.014484291108787217, + "99.9999" : 0.014484291108787217, + "100.0" : 0.014484291108787217 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014362497134009987, + 0.01443578637337383, + 0.014305885758958138 + ], + [ + 0.014483426522259268, + 0.014484291108787217, + 0.014436691696249533 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9951848157184422, + "scoreError" : 0.04346887407085314, + "scoreConfidence" : [ + 0.9517159416475891, + 1.0386536897892953 + ], + "scorePercentiles" : { + "0.0" : 0.9761590412844037, + "50.0" : 0.9951228396033112, + "90.0" : 1.015633401238956, + "95.0" : 1.015633401238956, + "99.0" : 1.015633401238956, + "99.9" : 1.015633401238956, + "99.99" : 1.015633401238956, + "99.999" : 1.015633401238956, + "99.9999" : 1.015633401238956, + "100.0" : 1.015633401238956 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9879497163884224, + 0.9819340638193421, + 0.9761590412844037 + ], + [ + 1.015633401238956, + 1.0071367087613292, + 1.0022959628182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01257257521257804, + "scoreError" : 3.1156489458417227E-4, + "scoreConfidence" : [ + 0.012261010317993867, + 0.012884140107162212 + ], + "scorePercentiles" : { + "0.0" : 0.012420598567198585, + "50.0" : 0.012544114865921139, + "90.0" : 0.01270699201006366, + "95.0" : 0.01270699201006366, + "99.0" : 0.01270699201006366, + "99.9" : 0.01270699201006366, + "99.99" : 0.01270699201006366, + "99.999" : 0.01270699201006366, + "99.9999" : 0.01270699201006366, + "100.0" : 0.01270699201006366 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012420598567198585, + 0.012522408135819042, + 0.012523075003443742 + ], + [ + 0.012565154728398536, + 0.01270699201006366, + 0.012697222830544672 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.648485539795114, + "scoreError" : 0.1542581201274607, + "scoreConfidence" : [ + 3.494227419667653, + 3.802743659922575 + ], + "scorePercentiles" : { + "0.0" : 3.582500664756447, + "50.0" : 3.6475571060547853, + "90.0" : 3.715977369242199, + "95.0" : 3.715977369242199, + "99.0" : 3.715977369242199, + "99.9" : 3.715977369242199, + "99.99" : 3.715977369242199, + "99.999" : 3.715977369242199, + "99.9999" : 3.715977369242199, + "100.0" : 3.715977369242199 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6130622290462426, + 3.582500664756447, + 3.60484421037464 + ], + [ + 3.692476782287823, + 3.6820519830633285, + 3.715977369242199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0327848738846743, + "scoreError" : 0.1117323811100563, + "scoreConfidence" : [ + 2.921052492774618, + 3.1445172549947307 + ], + "scorePercentiles" : { + "0.0" : 2.987133938172043, + "50.0" : 3.03278687631995, + "90.0" : 3.079861695103172, + "95.0" : 3.079861695103172, + "99.0" : 3.079861695103172, + "99.9" : 3.079861695103172, + "99.99" : 3.079861695103172, + "99.999" : 3.079861695103172, + "99.9999" : 3.079861695103172, + "100.0" : 3.079861695103172 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.987133938172043, + 2.997293118969134, + 3.0081094836090227 + ], + [ + 3.079861695103172, + 3.0574642690308775, + 3.0668467384237963 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17933685665995813, + "scoreError" : 0.007108318416156557, + "scoreConfidence" : [ + 0.17222853824380158, + 0.1864451750761147 + ], + "scorePercentiles" : { + "0.0" : 0.17684863441031354, + "50.0" : 0.17928138712537317, + "90.0" : 0.1817674912389123, + "95.0" : 0.1817674912389123, + "99.0" : 0.1817674912389123, + "99.9" : 0.1817674912389123, + "99.99" : 0.1817674912389123, + "99.999" : 0.1817674912389123, + "99.9999" : 0.1817674912389123, + "100.0" : 0.1817674912389123 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1817674912389123, + 0.18141919442327928, + 0.1817522603006125 + ], + [ + 0.1771435798274671, + 0.17684863441031354, + 0.17708997975916416 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32600073499402754, + "scoreError" : 0.005875124003174771, + "scoreConfidence" : [ + 0.3201256109908528, + 0.3318758589972023 + ], + "scorePercentiles" : { + "0.0" : 0.3237107717282232, + "50.0" : 0.32621108847384306, + "90.0" : 0.3294161914816523, + "95.0" : 0.3294161914816523, + "99.0" : 0.3294161914816523, + "99.9" : 0.3294161914816523, + "99.99" : 0.3294161914816523, + "99.999" : 0.3294161914816523, + "99.9999" : 0.3294161914816523, + "100.0" : 0.3294161914816523 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32611222690363606, + 0.32630995004405, + 0.32659421352057477 + ], + [ + 0.3294161914816523, + 0.3238610562860289, + 0.3237107717282232 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1520372851628994, + "scoreError" : 0.007080248447016387, + "scoreConfidence" : [ + 0.14495703671588303, + 0.1591175336099158 + ], + "scorePercentiles" : { + "0.0" : 0.1495491058038852, + "50.0" : 0.1518283720522713, + "90.0" : 0.15497031751123508, + "95.0" : 0.15497031751123508, + "99.0" : 0.15497031751123508, + "99.9" : 0.15497031751123508, + "99.99" : 0.15497031751123508, + "99.999" : 0.15497031751123508, + "99.9999" : 0.15497031751123508, + "100.0" : 0.15497031751123508 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14995569250839733, + 0.14978994221263592, + 0.1495491058038852 + ], + [ + 0.15497031751123508, + 0.1542576013450978, + 0.15370105159614528 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39466514004624437, + "scoreError" : 0.030698022853897552, + "scoreConfidence" : [ + 0.3639671171923468, + 0.4253631629001419 + ], + "scorePercentiles" : { + "0.0" : 0.3844967982236918, + "50.0" : 0.3945367520596545, + "90.0" : 0.4051826445849034, + "95.0" : 0.4051826445849034, + "99.0" : 0.4051826445849034, + "99.9" : 0.4051826445849034, + "99.99" : 0.4051826445849034, + "99.999" : 0.4051826445849034, + "99.9999" : 0.4051826445849034, + "100.0" : 0.4051826445849034 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4046990327789244, + 0.4051826445849034, + 0.4040745852357671 + ], + [ + 0.3849989188835419, + 0.3844967982236918, + 0.3845388605706375 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15997120898904224, + "scoreError" : 0.007840074650991959, + "scoreConfidence" : [ + 0.15213113433805028, + 0.1678112836400342 + ], + "scorePercentiles" : { + "0.0" : 0.1571211335197813, + "50.0" : 0.16008104438318044, + "90.0" : 0.16260650731707318, + "95.0" : 0.16260650731707318, + "99.0" : 0.16260650731707318, + "99.9" : 0.16260650731707318, + "99.99" : 0.16260650731707318, + "99.999" : 0.16260650731707318, + "99.9999" : 0.16260650731707318, + "100.0" : 0.16260650731707318 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16249837706569603, + 0.16260650731707318, + 0.16244684320987654 + ], + [ + 0.1577152455564843, + 0.1574391472653421, + 0.1571211335197813 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04792504765304747, + "scoreError" : 0.0012564530767281274, + "scoreConfidence" : [ + 0.04666859457631934, + 0.0491815007297756 + ], + "scorePercentiles" : { + "0.0" : 0.0474264511088136, + "50.0" : 0.047942219750661784, + "90.0" : 0.04859070644742788, + "95.0" : 0.04859070644742788, + "99.0" : 0.04859070644742788, + "99.9" : 0.04859070644742788, + "99.99" : 0.04859070644742788, + "99.999" : 0.04859070644742788, + "99.9999" : 0.04859070644742788, + "100.0" : 0.04859070644742788 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04859070644742788, + 0.048177748207816236, + 0.04779827040474916 + ], + [ + 0.048086169096574406, + 0.0474264511088136, + 0.047470940652903505 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9610011.602224838, + "scoreError" : 1091392.5902405938, + "scoreConfidence" : [ + 8518619.011984244, + 1.0701404192465432E7 + ], + "scorePercentiles" : { + "0.0" : 9210753.397790056, + "50.0" : 9616087.62004205, + "90.0" : 9974524.014955135, + "95.0" : 9974524.014955135, + "99.0" : 9974524.014955135, + "99.9" : 9974524.014955135, + "99.99" : 9974524.014955135, + "99.999" : 9974524.014955135, + "99.9999" : 9974524.014955135, + "100.0" : 9974524.014955135 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9286788.739090065, + 9269238.507877665, + 9210753.397790056 + ], + [ + 9945386.500994036, + 9974524.014955135, + 9973378.452642074 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-13T09:39:15Z-4ed03668955a2cb0c5ffb84db57fcf940962856a-jdk17.json b/performance-results/2025-05-13T09:39:15Z-4ed03668955a2cb0c5ffb84db57fcf940962856a-jdk17.json new file mode 100644 index 0000000000..122ff29925 --- /dev/null +++ b/performance-results/2025-05-13T09:39:15Z-4ed03668955a2cb0c5ffb84db57fcf940962856a-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.35015794405493, + "scoreError" : 0.03530946668719832, + "scoreConfidence" : [ + 3.3148484773677316, + 3.3854674107421285 + ], + "scorePercentiles" : { + "0.0" : 3.3422069054463197, + "50.0" : 3.352052645956847, + "90.0" : 3.3543195788597076, + "95.0" : 3.3543195788597076, + "99.0" : 3.3543195788597076, + "99.9" : 3.3543195788597076, + "99.99" : 3.3543195788597076, + "99.999" : 3.3543195788597076, + "99.9999" : 3.3543195788597076, + "100.0" : 3.3543195788597076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3422069054463197, + 3.3530153890270427 + ], + [ + 3.3510899028866517, + 3.3543195788597076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6928042330689244, + "scoreError" : 0.05324748538911852, + "scoreConfidence" : [ + 1.6395567476798059, + 1.7460517184580429 + ], + "scorePercentiles" : { + "0.0" : 1.6841437522163505, + "50.0" : 1.6932039580964555, + "90.0" : 1.7006652638664361, + "95.0" : 1.7006652638664361, + "99.0" : 1.7006652638664361, + "99.9" : 1.7006652638664361, + "99.99" : 1.7006652638664361, + "99.999" : 1.7006652638664361, + "99.9999" : 1.7006652638664361, + "100.0" : 1.7006652638664361 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6989736552816628, + 1.7006652638664361 + ], + [ + 1.6874342609112483, + 1.6841437522163505 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8498989289192711, + "scoreError" : 0.03875678065237622, + "scoreConfidence" : [ + 0.8111421482668949, + 0.8886557095716473 + ], + "scorePercentiles" : { + "0.0" : 0.8434756652333436, + "50.0" : 0.84965239749089, + "90.0" : 0.8568152554619604, + "95.0" : 0.8568152554619604, + "99.0" : 0.8568152554619604, + "99.9" : 0.8568152554619604, + "99.99" : 0.8568152554619604, + "99.999" : 0.8568152554619604, + "99.9999" : 0.8568152554619604, + "100.0" : 0.8568152554619604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8465946089728422, + 0.8568152554619604 + ], + [ + 0.8434756652333436, + 0.852710186008938 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.316952147064402, + "scoreError" : 0.12085369211135315, + "scoreConfidence" : [ + 16.19609845495305, + 16.437805839175756 + ], + "scorePercentiles" : { + "0.0" : 16.250585906655974, + "50.0" : 16.340184112522156, + "90.0" : 16.35222809678643, + "95.0" : 16.35222809678643, + "99.0" : 16.35222809678643, + "99.9" : 16.35222809678643, + "99.99" : 16.35222809678643, + "99.999" : 16.35222809678643, + "99.9999" : 16.35222809678643, + "100.0" : 16.35222809678643 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.337129801843922, + 16.35222809678643, + 16.34323842320039 + ], + [ + 16.274466902438004, + 16.344063751461693, + 16.250585906655974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2664.7884773533683, + "scoreError" : 292.1095246956262, + "scoreConfidence" : [ + 2372.6789526577422, + 2956.8980020489944 + ], + "scorePercentiles" : { + "0.0" : 2568.135697546449, + "50.0" : 2663.499055641999, + "90.0" : 2763.8448898240117, + "95.0" : 2763.8448898240117, + "99.0" : 2763.8448898240117, + "99.9" : 2763.8448898240117, + "99.99" : 2763.8448898240117, + "99.999" : 2763.8448898240117, + "99.9999" : 2763.8448898240117, + "100.0" : 2763.8448898240117 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2759.7232633347335, + 2755.983453150897, + 2763.8448898240117 + ], + [ + 2568.135697546449, + 2571.0146581331014, + 2570.028902131016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70056.07972928292, + "scoreError" : 1378.5606910273643, + "scoreConfidence" : [ + 68677.51903825556, + 71434.64042031029 + ], + "scorePercentiles" : { + "0.0" : 69582.93503304542, + "50.0" : 70067.7195274584, + "90.0" : 70541.75095292993, + "95.0" : 70541.75095292993, + "99.0" : 70541.75095292993, + "99.9" : 70541.75095292993, + "99.99" : 70541.75095292993, + "99.999" : 70541.75095292993, + "99.9999" : 70541.75095292993, + "100.0" : 70541.75095292993 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69658.05881291989, + 69584.25267302568, + 69582.93503304542 + ], + [ + 70492.10066177975, + 70477.38024199689, + 70541.75095292993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.05684408346633, + "scoreError" : 9.123965814279275, + "scoreConfidence" : [ + 332.93287826918703, + 351.18080989774563 + ], + "scorePercentiles" : { + "0.0" : 336.18412424262726, + "50.0" : 342.4001186593647, + "90.0" : 345.2946653010095, + "95.0" : 345.2946653010095, + "99.0" : 345.2946653010095, + "99.9" : 345.2946653010095, + "99.99" : 345.2946653010095, + "99.999" : 345.2946653010095, + "99.9999" : 345.2946653010095, + "100.0" : 345.2946653010095 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 336.18412424262726, + 341.4279997317022, + 342.986315669172 + ], + [ + 341.81392164955747, + 344.63403790672976, + 345.2946653010095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.27288507822318, + "scoreError" : 9.698515022628715, + "scoreConfidence" : [ + 96.57437005559447, + 115.9714001008519 + ], + "scorePercentiles" : { + "0.0" : 102.89363899176516, + "50.0" : 106.31228207654371, + "90.0" : 109.51472044912738, + "95.0" : 109.51472044912738, + "99.0" : 109.51472044912738, + "99.9" : 109.51472044912738, + "99.99" : 109.51472044912738, + "99.999" : 109.51472044912738, + "99.9999" : 109.51472044912738, + "100.0" : 109.51472044912738 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.32898046280206, + 109.51472044912738, + 109.43862861186797 + ], + [ + 102.89363899176516, + 103.29558369028534, + 103.16575826349134 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06110903789534477, + "scoreError" : 7.341767887821249E-4, + "scoreConfidence" : [ + 0.06037486110656264, + 0.061843214684126895 + ], + "scorePercentiles" : { + "0.0" : 0.0608419183453697, + "50.0" : 0.061082702318724216, + "90.0" : 0.06149920654834385, + "95.0" : 0.06149920654834385, + "99.0" : 0.06149920654834385, + "99.9" : 0.06149920654834385, + "99.99" : 0.06149920654834385, + "99.999" : 0.06149920654834385, + "99.9999" : 0.06149920654834385, + "100.0" : 0.06149920654834385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061248335146259006, + 0.06124761931477149, + 0.06149920654834385 + ], + [ + 0.0608419183453697, + 0.06089936269464761, + 0.060917785322676936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.661623733738552E-4, + "scoreError" : 4.237896604312413E-6, + "scoreConfidence" : [ + 3.619244767695428E-4, + 3.7040026997816765E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6463292773790407E-4, + "50.0" : 3.66023261383791E-4, + "90.0" : 3.678637413638742E-4, + "95.0" : 3.678637413638742E-4, + "99.0" : 3.678637413638742E-4, + "99.9" : 3.678637413638742E-4, + "99.99" : 3.678637413638742E-4, + "99.999" : 3.678637413638742E-4, + "99.9999" : 3.678637413638742E-4, + "100.0" : 3.678637413638742E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.678637413638742E-4, + 3.6766109253192833E-4, + 3.6701376880842016E-4 + ], + [ + 3.6476995584184304E-4, + 3.6503275395916187E-4, + 3.6463292773790407E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10673738027687153, + "scoreError" : 0.007810803814833202, + "scoreConfidence" : [ + 0.09892657646203833, + 0.11454818409170474 + ], + "scorePercentiles" : { + "0.0" : 0.1040970362875523, + "50.0" : 0.10676872198154505, + "90.0" : 0.10935326136164815, + "95.0" : 0.10935326136164815, + "99.0" : 0.10935326136164815, + "99.9" : 0.10935326136164815, + "99.99" : 0.10935326136164815, + "99.999" : 0.10935326136164815, + "99.9999" : 0.10935326136164815, + "100.0" : 0.10935326136164815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1040970362875523, + 0.10435468781892747, + 0.10413753192818762 + ], + [ + 0.10918275614416263, + 0.10935326136164815, + 0.10929900812075109 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014369072224106211, + "scoreError" : 6.80479182315641E-4, + "scoreConfidence" : [ + 0.01368859304179057, + 0.015049551406421852 + ], + "scorePercentiles" : { + "0.0" : 0.014145644917531898, + "50.0" : 0.01436460841699332, + "90.0" : 0.014609431852247924, + "95.0" : 0.014609431852247924, + "99.0" : 0.014609431852247924, + "99.9" : 0.014609431852247924, + "99.99" : 0.014609431852247924, + "99.999" : 0.014609431852247924, + "99.9999" : 0.014609431852247924, + "100.0" : 0.014609431852247924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014145644917531898, + 0.014150913223561509, + 0.014146738830589374 + ], + [ + 0.014583400910281426, + 0.014578303610425128, + 0.014609431852247924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9952357863063392, + "scoreError" : 0.028920885844544445, + "scoreConfidence" : [ + 0.9663149004617948, + 1.0241566721508837 + ], + "scorePercentiles" : { + "0.0" : 0.9834699797423542, + "50.0" : 0.9964456178387, + "90.0" : 1.0058368255053807, + "95.0" : 1.0058368255053807, + "99.0" : 1.0058368255053807, + "99.9" : 1.0058368255053807, + "99.99" : 1.0058368255053807, + "99.999" : 1.0058368255053807, + "99.9999" : 1.0058368255053807, + "100.0" : 1.0058368255053807 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9834699797423542, + 0.9853245297536946, + 0.9892023884272997 + ], + [ + 1.003892147159205, + 1.0036888472501004, + 1.0058368255053807 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012161192630965713, + "scoreError" : 5.220354122380617E-4, + "scoreConfidence" : [ + 0.011639157218727651, + 0.012683228043203775 + ], + "scorePercentiles" : { + "0.0" : 0.011987228124557985, + "50.0" : 0.012161459320240296, + "90.0" : 0.012333712414560327, + "95.0" : 0.012333712414560327, + "99.0" : 0.012333712414560327, + "99.9" : 0.012333712414560327, + "99.99" : 0.012333712414560327, + "99.999" : 0.012333712414560327, + "99.9999" : 0.012333712414560327, + "100.0" : 0.012333712414560327 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012329116763735532, + 0.012330523592629492, + 0.012333712414560327 + ], + [ + 0.011993801876745057, + 0.011992773013565891, + 0.011987228124557985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6567998249117775, + "scoreError" : 0.17996355945114023, + "scoreConfidence" : [ + 3.476836265460637, + 3.836763384362918 + ], + "scorePercentiles" : { + "0.0" : 3.5936356170977013, + "50.0" : 3.6596107074999678, + "90.0" : 3.7220352782738093, + "95.0" : 3.7220352782738093, + "99.0" : 3.7220352782738093, + "99.9" : 3.7220352782738093, + "99.99" : 3.7220352782738093, + "99.999" : 3.7220352782738093, + "99.9999" : 3.7220352782738093, + "100.0" : 3.7220352782738093 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5936356170977013, + 3.607614173160173, + 3.594236988505747 + ], + [ + 3.7220352782738093, + 3.7116072418397628, + 3.7116696505934716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.902496222935477, + "scoreError" : 0.07026468170222931, + "scoreConfidence" : [ + 2.8322315412332477, + 2.972760904637706 + ], + "scorePercentiles" : { + "0.0" : 2.868738924290221, + "50.0" : 2.905690249620731, + "90.0" : 2.931327939038687, + "95.0" : 2.931327939038687, + "99.0" : 2.931327939038687, + "99.9" : 2.931327939038687, + "99.99" : 2.931327939038687, + "99.999" : 2.931327939038687, + "99.9999" : 2.931327939038687, + "100.0" : 2.931327939038687 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.868738924290221, + 2.8815234047824836, + 2.892892936650275 + ], + [ + 2.931327939038687, + 2.922006570260006, + 2.9184875625911877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18627634487016906, + "scoreError" : 0.032121360426932435, + "scoreConfidence" : [ + 0.1541549844432366, + 0.2183977052971015 + ], + "scorePercentiles" : { + "0.0" : 0.1754389209487553, + "50.0" : 0.18620384980627064, + "90.0" : 0.19792789959426027, + "95.0" : 0.19792789959426027, + "99.0" : 0.19792789959426027, + "99.9" : 0.19792789959426027, + "99.99" : 0.19792789959426027, + "99.999" : 0.19792789959426027, + "99.9999" : 0.19792789959426027, + "100.0" : 0.19792789959426027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19621275538594357, + 0.19792789959426027, + 0.1959924071417372 + ], + [ + 0.1764152924708041, + 0.17567079367951374, + 0.1754389209487553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33370649225857996, + "scoreError" : 0.005705711574214816, + "scoreConfidence" : [ + 0.32800078068436517, + 0.33941220383279475 + ], + "scorePercentiles" : { + "0.0" : 0.33154157560587477, + "50.0" : 0.33388681099812323, + "90.0" : 0.33565433118517773, + "95.0" : 0.33565433118517773, + "99.0" : 0.33565433118517773, + "99.9" : 0.33565433118517773, + "99.99" : 0.33565433118517773, + "99.999" : 0.33565433118517773, + "99.9999" : 0.33565433118517773, + "100.0" : 0.33565433118517773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3322854115829346, + 0.33154157560587477, + 0.33176187715631633 + ], + [ + 0.33550754760786416, + 0.33565433118517773, + 0.33548821041331184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15377269170614982, + "scoreError" : 0.005827824113541727, + "scoreConfidence" : [ + 0.1479448675926081, + 0.15960051581969154 + ], + "scorePercentiles" : { + "0.0" : 0.15112629450967946, + "50.0" : 0.15475111138524472, + "90.0" : 0.15545969420305625, + "95.0" : 0.15545969420305625, + "99.0" : 0.15545969420305625, + "99.9" : 0.15545969420305625, + "99.99" : 0.15545969420305625, + "99.999" : 0.15545969420305625, + "99.9999" : 0.15545969420305625, + "100.0" : 0.15545969420305625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1554195401591446, + 0.15545969420305625, + 0.15500348467046934 + ], + [ + 0.15449873810002007, + 0.15112629450967946, + 0.15112839859452926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4047567509579466, + "scoreError" : 0.006894979178594339, + "scoreConfidence" : [ + 0.3978617717793523, + 0.41165173013654094 + ], + "scorePercentiles" : { + "0.0" : 0.4019873848936769, + "50.0" : 0.40525090503915984, + "90.0" : 0.40696459186912465, + "95.0" : 0.40696459186912465, + "99.0" : 0.40696459186912465, + "99.9" : 0.40696459186912465, + "99.99" : 0.40696459186912465, + "99.999" : 0.40696459186912465, + "99.9999" : 0.40696459186912465, + "100.0" : 0.40696459186912465 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40695273390575404, + 0.40696459186912465, + 0.4069085104980469 + ], + [ + 0.40359329958027285, + 0.4021339850008043, + 0.4019873848936769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1599981857148882, + "scoreError" : 0.005809565101016157, + "scoreConfidence" : [ + 0.15418862061387203, + 0.16580775081590435 + ], + "scorePercentiles" : { + "0.0" : 0.15824759275552672, + "50.0" : 0.1590014495805341, + "90.0" : 0.16286566089052473, + "95.0" : 0.16286566089052473, + "99.0" : 0.16286566089052473, + "99.9" : 0.16286566089052473, + "99.99" : 0.16286566089052473, + "99.999" : 0.16286566089052473, + "99.9999" : 0.16286566089052473, + "100.0" : 0.16286566089052473 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15849753098551367, + 0.15862497723775837, + 0.15824759275552672 + ], + [ + 0.16237543049669573, + 0.16286566089052473, + 0.15937792192330985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046641326357640005, + "scoreError" : 0.0013777360661474235, + "scoreConfidence" : [ + 0.04526359029149258, + 0.04801906242378743 + ], + "scorePercentiles" : { + "0.0" : 0.04619024598727939, + "50.0" : 0.04661636604080223, + "90.0" : 0.047116425253129667, + "95.0" : 0.047116425253129667, + "99.0" : 0.047116425253129667, + "99.9" : 0.047116425253129667, + "99.99" : 0.047116425253129667, + "99.999" : 0.047116425253129667, + "99.9999" : 0.047116425253129667, + "100.0" : 0.047116425253129667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04703559510460566, + 0.047116425253129667, + 0.04711507402155016 + ], + [ + 0.0461971369769988, + 0.04619348080227638, + 0.04619024598727939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9285938.753668854, + "scoreError" : 927072.831052481, + "scoreConfidence" : [ + 8358865.922616373, + 1.0213011584721334E7 + ], + "scorePercentiles" : { + "0.0" : 8975628.922869954, + "50.0" : 9287102.91161534, + "90.0" : 9591657.205177372, + "95.0" : 9591657.205177372, + "99.0" : 9591657.205177372, + "99.9" : 9591657.205177372, + "99.99" : 9591657.205177372, + "99.999" : 9591657.205177372, + "99.9999" : 9591657.205177372, + "100.0" : 9591657.205177372 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8990784.471698113, + 8986137.081761006, + 8975628.922869954 + ], + [ + 9588003.488974113, + 9583421.351532567, + 9591657.205177372 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-14T08:04:30Z-d5b64982dfed0b307dbfd701658c33fce37fee82-jdk17.json b/performance-results/2025-05-14T08:04:30Z-d5b64982dfed0b307dbfd701658c33fce37fee82-jdk17.json new file mode 100644 index 0000000000..27899adb3e --- /dev/null +++ b/performance-results/2025-05-14T08:04:30Z-d5b64982dfed0b307dbfd701658c33fce37fee82-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3636634065622895, + "scoreError" : 0.03051571466729772, + "scoreConfidence" : [ + 3.333147691894992, + 3.394179121229587 + ], + "scorePercentiles" : { + "0.0" : 3.357191625062564, + "50.0" : 3.3646962066763226, + "90.0" : 3.3680695878339493, + "95.0" : 3.3680695878339493, + "99.0" : 3.3680695878339493, + "99.9" : 3.3680695878339493, + "99.99" : 3.3680695878339493, + "99.999" : 3.3680695878339493, + "99.9999" : 3.3680695878339493, + "100.0" : 3.3680695878339493 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.357191625062564, + 3.3680695878339493 + ], + [ + 3.3633790579440372, + 3.3660133554086085 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6968295351887925, + "scoreError" : 0.058349351692212, + "scoreConfidence" : [ + 1.6384801834965805, + 1.7551788868810045 + ], + "scorePercentiles" : { + "0.0" : 1.688756368852093, + "50.0" : 1.6956932678196965, + "90.0" : 1.7071752362636845, + "95.0" : 1.7071752362636845, + "99.0" : 1.7071752362636845, + "99.9" : 1.7071752362636845, + "99.99" : 1.7071752362636845, + "99.999" : 1.7071752362636845, + "99.9999" : 1.7071752362636845, + "100.0" : 1.7071752362636845 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.688756368852093, + 1.6897851917391544 + ], + [ + 1.7016013439002384, + 1.7071752362636845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8549709121839838, + "scoreError" : 0.03319407417665871, + "scoreConfidence" : [ + 0.821776838007325, + 0.8881649863606426 + ], + "scorePercentiles" : { + "0.0" : 0.8495706378505353, + "50.0" : 0.8542989047926541, + "90.0" : 0.8617152013000916, + "95.0" : 0.8617152013000916, + "99.0" : 0.8617152013000916, + "99.9" : 0.8617152013000916, + "99.99" : 0.8617152013000916, + "99.999" : 0.8617152013000916, + "99.9999" : 0.8617152013000916, + "100.0" : 0.8617152013000916 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8495706378505353, + 0.8529555574518084 + ], + [ + 0.8556422521335, + 0.8617152013000916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.417657158471073, + "scoreError" : 0.19160576400793555, + "scoreConfidence" : [ + 16.226051394463138, + 16.609262922479008 + ], + "scorePercentiles" : { + "0.0" : 16.348027424434346, + "50.0" : 16.401712594465216, + "90.0" : 16.514716883254057, + "95.0" : 16.514716883254057, + "99.0" : 16.514716883254057, + "99.9" : 16.514716883254057, + "99.99" : 16.514716883254057, + "99.999" : 16.514716883254057, + "99.9999" : 16.514716883254057, + "100.0" : 16.514716883254057 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.514716883254057, + 16.477687859863334, + 16.43232844755624 + ], + [ + 16.37109674137419, + 16.36208559434426, + 16.348027424434346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2779.165153519887, + "scoreError" : 74.59368316361015, + "scoreConfidence" : [ + 2704.571470356277, + 2853.758836683497 + ], + "scorePercentiles" : { + "0.0" : 2753.3490495460223, + "50.0" : 2778.200589243578, + "90.0" : 2808.036467958535, + "95.0" : 2808.036467958535, + "99.0" : 2808.036467958535, + "99.9" : 2808.036467958535, + "99.99" : 2808.036467958535, + "99.999" : 2808.036467958535, + "99.9999" : 2808.036467958535, + "100.0" : 2808.036467958535 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2808.036467958535, + 2800.1273485123406, + 2801.774675547103 + ], + [ + 2755.4295495805072, + 2756.2738299748153, + 2753.3490495460223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70012.29910881979, + "scoreError" : 2041.819437040458, + "scoreConfidence" : [ + 67970.47967177934, + 72054.11854586024 + ], + "scorePercentiles" : { + "0.0" : 69316.29302834792, + "50.0" : 70007.42143137183, + "90.0" : 70717.96455690844, + "95.0" : 70717.96455690844, + "99.0" : 70717.96455690844, + "99.9" : 70717.96455690844, + "99.99" : 70717.96455690844, + "99.999" : 70717.96455690844, + "99.9999" : 70717.96455690844, + "100.0" : 70717.96455690844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69354.52513427814, + 69316.29302834792, + 69373.7853829509 + ], + [ + 70717.96455690844, + 70641.05747979274, + 70670.16907064061 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.92205370736565, + "scoreError" : 21.151553361449253, + "scoreConfidence" : [ + 327.7705003459164, + 370.0736070688149 + ], + "scorePercentiles" : { + "0.0" : 341.56790378631456, + "50.0" : 348.72169408357576, + "90.0" : 356.3357552645768, + "95.0" : 356.3357552645768, + "99.0" : 356.3357552645768, + "99.9" : 356.3357552645768, + "99.99" : 356.3357552645768, + "99.999" : 356.3357552645768, + "99.9999" : 356.3357552645768, + "100.0" : 356.3357552645768 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.44203952742515, + 341.56790378631456, + 342.1493077744289 + ], + [ + 355.00134863972636, + 356.0359672517221, + 356.3357552645768 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.31014115365947, + "scoreError" : 1.7459374882623497, + "scoreConfidence" : [ + 104.56420366539712, + 108.05607864192183 + ], + "scorePercentiles" : { + "0.0" : 105.38848983799961, + "50.0" : 106.31111376014422, + "90.0" : 107.10457434407247, + "95.0" : 107.10457434407247, + "99.0" : 107.10457434407247, + "99.9" : 107.10457434407247, + "99.99" : 107.10457434407247, + "99.999" : 107.10457434407247, + "99.9999" : 107.10457434407247, + "100.0" : 107.10457434407247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.10457434407247, + 106.76389709423225, + 106.57935243534237 + ], + [ + 105.38848983799961, + 106.04287508494609, + 105.98165812536405 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060496403917698525, + "scoreError" : 3.9800334750414966E-4, + "scoreConfidence" : [ + 0.060098400570194374, + 0.06089440726520268 + ], + "scorePercentiles" : { + "0.0" : 0.060232865249209455, + "50.0" : 0.06053635980177402, + "90.0" : 0.06061412381500788, + "95.0" : 0.06061412381500788, + "99.0" : 0.06061412381500788, + "99.9" : 0.06061412381500788, + "99.99" : 0.06061412381500788, + "99.999" : 0.06061412381500788, + "99.9999" : 0.06061412381500788, + "100.0" : 0.06061412381500788 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060232865249209455, + 0.060492002492226915, + 0.06046566809161598 + ], + [ + 0.06058071711132112, + 0.06059304674680983, + 0.06061412381500788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.693627905513809E-4, + "scoreError" : 1.2320793273573173E-5, + "scoreConfidence" : [ + 3.5704199727780775E-4, + 3.8168358382495405E-4 + ], + "scorePercentiles" : { + "0.0" : 3.652675266957013E-4, + "50.0" : 3.693046335657938E-4, + "90.0" : 3.7345924532388743E-4, + "95.0" : 3.7345924532388743E-4, + "99.0" : 3.7345924532388743E-4, + "99.9" : 3.7345924532388743E-4, + "99.99" : 3.7345924532388743E-4, + "99.999" : 3.7345924532388743E-4, + "99.9999" : 3.7345924532388743E-4, + "100.0" : 3.7345924532388743E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6539509769051824E-4, + 3.6539613449590306E-4, + 3.652675266957013E-4 + ], + [ + 3.7345924532388743E-4, + 3.7344560646659095E-4, + 3.7321313263568456E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10562833164294146, + "scoreError" : 9.542899965539635E-4, + "scoreConfidence" : [ + 0.1046740416463875, + 0.10658262163949542 + ], + "scorePercentiles" : { + "0.0" : 0.10526105110311144, + "50.0" : 0.10566569058067381, + "90.0" : 0.10594309787905755, + "95.0" : 0.10594309787905755, + "99.0" : 0.10594309787905755, + "99.9" : 0.10594309787905755, + "99.99" : 0.10594309787905755, + "99.999" : 0.10594309787905755, + "99.9999" : 0.10594309787905755, + "100.0" : 0.10594309787905755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10593147652592107, + 0.10593405480932204, + 0.10594309787905755 + ], + [ + 0.10526105110311144, + 0.10530040490481005, + 0.10539990463542655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01439907804599185, + "scoreError" : 1.9028050005544857E-4, + "scoreConfidence" : [ + 0.014208797545936402, + 0.014589358546047298 + ], + "scorePercentiles" : { + "0.0" : 0.01433228054960773, + "50.0" : 0.014398641464941943, + "90.0" : 0.01446563431953861, + "95.0" : 0.01446563431953861, + "99.0" : 0.01446563431953861, + "99.9" : 0.01446563431953861, + "99.99" : 0.01446563431953861, + "99.999" : 0.01446563431953861, + "99.9999" : 0.01446563431953861, + "100.0" : 0.01446563431953861 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014452787426815644, + 0.014463923155805873, + 0.01446563431953861 + ], + [ + 0.01433228054960773, + 0.014344495503068242, + 0.014335347321114989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9470120473870925, + "scoreError" : 0.03542580987255533, + "scoreConfidence" : [ + 0.9115862375145373, + 0.9824378572596478 + ], + "scorePercentiles" : { + "0.0" : 0.934464487105214, + "50.0" : 0.947583960981452, + "90.0" : 0.9587462641165756, + "95.0" : 0.9587462641165756, + "99.0" : 0.9587462641165756, + "99.9" : 0.9587462641165756, + "99.99" : 0.9587462641165756, + "99.999" : 0.9587462641165756, + "99.9999" : 0.9587462641165756, + "100.0" : 0.9587462641165756 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9368017221545667, + 0.934464487105214, + 0.9352357852800898 + ], + [ + 0.9583661998083374, + 0.9587462641165756, + 0.9584578258577726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012155003643159587, + "scoreError" : 0.001376092809324051, + "scoreConfidence" : [ + 0.010778910833835536, + 0.013531096452483639 + ], + "scorePercentiles" : { + "0.0" : 0.011703342542095974, + "50.0" : 0.012155718003315379, + "90.0" : 0.012604866132065483, + "95.0" : 0.012604866132065483, + "99.0" : 0.012604866132065483, + "99.9" : 0.012604866132065483, + "99.99" : 0.012604866132065483, + "99.999" : 0.012604866132065483, + "99.9999" : 0.012604866132065483, + "100.0" : 0.012604866132065483 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011703342542095974, + 0.011709943660553487, + 0.011707826886423557 + ], + [ + 0.012604866132065483, + 0.01260149234607727, + 0.012602550291741755 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6072230883897896, + "scoreError" : 0.16262231214322484, + "scoreConfidence" : [ + 3.4446007762465647, + 3.7698454005330144 + ], + "scorePercentiles" : { + "0.0" : 3.5459591141034728, + "50.0" : 3.60823668079488, + "90.0" : 3.6633346805860807, + "95.0" : 3.6633346805860807, + "99.0" : 3.6633346805860807, + "99.9" : 3.6633346805860807, + "99.99" : 3.6633346805860807, + "99.999" : 3.6633346805860807, + "99.9999" : 3.6633346805860807, + "100.0" : 3.6633346805860807 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5628589138176636, + 3.5459591141034728, + 3.5549862935323384 + ], + [ + 3.6625850805270863, + 3.6536144477720964, + 3.6633346805860807 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8456917395180548, + "scoreError" : 0.11571485485688263, + "scoreConfidence" : [ + 2.729976884661172, + 2.9614065943749375 + ], + "scorePercentiles" : { + "0.0" : 2.793757996648045, + "50.0" : 2.8492013764865556, + "90.0" : 2.8866878747474747, + "95.0" : 2.8866878747474747, + "99.0" : 2.8866878747474747, + "99.9" : 2.8866878747474747, + "99.99" : 2.8866878747474747, + "99.999" : 2.8866878747474747, + "99.9999" : 2.8866878747474747, + "100.0" : 2.8866878747474747 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8132698210970464, + 2.81970741330702, + 2.793757996648045 + ], + [ + 2.878695339666091, + 2.8866878747474747, + 2.882031991642651 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17671022748283427, + "scoreError" : 0.002389103485291517, + "scoreConfidence" : [ + 0.17432112399754277, + 0.17909933096812578 + ], + "scorePercentiles" : { + "0.0" : 0.1759714528849707, + "50.0" : 0.17652233606084483, + "90.0" : 0.17825434313113847, + "95.0" : 0.17825434313113847, + "99.0" : 0.17825434313113847, + "99.9" : 0.17825434313113847, + "99.99" : 0.17825434313113847, + "99.999" : 0.17825434313113847, + "99.9999" : 0.17825434313113847, + "100.0" : 0.17825434313113847 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1761800771480418, + 0.1759714528849707, + 0.1761067988729418 + ], + [ + 0.17825434313113847, + 0.1768645949736479, + 0.17688409788626513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32966227997923453, + "scoreError" : 0.026867495322076124, + "scoreConfidence" : [ + 0.3027947846571584, + 0.35652977530131064 + ], + "scorePercentiles" : { + "0.0" : 0.32071788467335877, + "50.0" : 0.32971675193628003, + "90.0" : 0.33853897251184834, + "95.0" : 0.33853897251184834, + "99.0" : 0.33853897251184834, + "99.9" : 0.33853897251184834, + "99.99" : 0.33853897251184834, + "99.999" : 0.33853897251184834, + "99.9999" : 0.33853897251184834, + "100.0" : 0.33853897251184834 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33828498420269265, + 0.3383984804412561, + 0.33853897251184834 + ], + [ + 0.32088483837638376, + 0.32071788467335877, + 0.32114851966986735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1524122319786452, + "scoreError" : 0.0010809224553808916, + "scoreConfidence" : [ + 0.15133130952326432, + 0.15349315443402609 + ], + "scorePercentiles" : { + "0.0" : 0.15195021162992114, + "50.0" : 0.15242492467925883, + "90.0" : 0.15283956004218313, + "95.0" : 0.15283956004218313, + "99.0" : 0.15283956004218313, + "99.9" : 0.15283956004218313, + "99.99" : 0.15283956004218313, + "99.999" : 0.15283956004218313, + "99.9999" : 0.15283956004218313, + "100.0" : 0.15283956004218313 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15265047990413824, + 0.15276669788118116, + 0.15283956004218313 + ], + [ + 0.15206707296006813, + 0.15219936945437942, + 0.15195021162992114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38723737454399415, + "scoreError" : 0.005887266132572788, + "scoreConfidence" : [ + 0.38135010841142136, + 0.39312464067656694 + ], + "scorePercentiles" : { + "0.0" : 0.38522424734206473, + "50.0" : 0.3869990450188455, + "90.0" : 0.38992805244278084, + "95.0" : 0.38992805244278084, + "99.0" : 0.38992805244278084, + "99.9" : 0.38992805244278084, + "99.99" : 0.38992805244278084, + "99.999" : 0.38992805244278084, + "99.9999" : 0.38992805244278084, + "100.0" : 0.38992805244278084 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3885554079024049, + 0.3888351385745947, + 0.38992805244278084 + ], + [ + 0.3854387188668337, + 0.3854426821352862, + 0.38522424734206473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15560316577422054, + "scoreError" : 0.008962275845234345, + "scoreConfidence" : [ + 0.1466408899289862, + 0.16456544161945488 + ], + "scorePercentiles" : { + "0.0" : 0.1526030984724787, + "50.0" : 0.1555997428560673, + "90.0" : 0.15861202323589588, + "95.0" : 0.15861202323589588, + "99.0" : 0.15861202323589588, + "99.9" : 0.15861202323589588, + "99.99" : 0.15861202323589588, + "99.999" : 0.15861202323589588, + "99.9999" : 0.15861202323589588, + "100.0" : 0.15861202323589588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15856348714086382, + 0.15861202323589588, + 0.158381917579981 + ], + [ + 0.15264090008395023, + 0.1528175681321536, + 0.1526030984724787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04773363353671171, + "scoreError" : 0.002148423668007366, + "scoreConfidence" : [ + 0.04558520986870434, + 0.049882057204719076 + ], + "scorePercentiles" : { + "0.0" : 0.04653973565561373, + "50.0" : 0.04791604720171553, + "90.0" : 0.04845653846414762, + "95.0" : 0.04845653846414762, + "99.0" : 0.04845653846414762, + "99.9" : 0.04845653846414762, + "99.99" : 0.04845653846414762, + "99.999" : 0.04845653846414762, + "99.9999" : 0.04845653846414762, + "100.0" : 0.04845653846414762 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04845653846414762, + 0.048226755730455206, + 0.048387411727988855 + ], + [ + 0.04760533867297585, + 0.047186020969089, + 0.04653973565561373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9397490.448223135, + "scoreError" : 215604.2636401191, + "scoreConfidence" : [ + 9181886.184583016, + 9613094.711863253 + ], + "scorePercentiles" : { + "0.0" : 9330717.762126865, + "50.0" : 9371083.267984957, + "90.0" : 9539491.83508103, + "95.0" : 9539491.83508103, + "99.0" : 9539491.83508103, + "99.9" : 9539491.83508103, + "99.99" : 9539491.83508103, + "99.999" : 9539491.83508103, + "99.9999" : 9539491.83508103, + "100.0" : 9539491.83508103 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9539491.83508103, + 9423232.63653484, + 9387791.621951219 + ], + [ + 9354374.914018692, + 9330717.762126865, + 9349333.919626169 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-14T08:10:10Z-1a760d719050ed692ebce51f120f07e8f46e979c-jdk17.json b/performance-results/2025-05-14T08:10:10Z-1a760d719050ed692ebce51f120f07e8f46e979c-jdk17.json new file mode 100644 index 0000000000..a7af77fdd8 --- /dev/null +++ b/performance-results/2025-05-14T08:10:10Z-1a760d719050ed692ebce51f120f07e8f46e979c-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.370139590364174, + "scoreError" : 0.02470520788840132, + "scoreConfidence" : [ + 3.345434382475773, + 3.394844798252575 + ], + "scorePercentiles" : { + "0.0" : 3.3646370462238977, + "50.0" : 3.371254273409082, + "90.0" : 3.3734127684146356, + "95.0" : 3.3734127684146356, + "99.0" : 3.3734127684146356, + "99.9" : 3.3734127684146356, + "99.99" : 3.3734127684146356, + "99.999" : 3.3734127684146356, + "99.9999" : 3.3734127684146356, + "100.0" : 3.3734127684146356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3734127684146356, + 3.37082247816052 + ], + [ + 3.3646370462238977, + 3.371686068657644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6972229084750117, + "scoreError" : 0.020832781397906674, + "scoreConfidence" : [ + 1.6763901270771049, + 1.7180556898729185 + ], + "scorePercentiles" : { + "0.0" : 1.6927561867572536, + "50.0" : 1.6982332801592515, + "90.0" : 1.6996688868242902, + "95.0" : 1.6996688868242902, + "99.0" : 1.6996688868242902, + "99.9" : 1.6996688868242902, + "99.99" : 1.6996688868242902, + "99.999" : 1.6996688868242902, + "99.9999" : 1.6996688868242902, + "100.0" : 1.6996688868242902 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6927561867572536, + 1.6996688868242902 + ], + [ + 1.6969674995631543, + 1.6994990607553488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8527190081591871, + "scoreError" : 0.0284156073218873, + "scoreConfidence" : [ + 0.8243034008372998, + 0.8811346154810744 + ], + "scorePercentiles" : { + "0.0" : 0.8499132777907785, + "50.0" : 0.8508906185172829, + "90.0" : 0.8591815178114042, + "95.0" : 0.8591815178114042, + "99.0" : 0.8591815178114042, + "99.9" : 0.8591815178114042, + "99.99" : 0.8591815178114042, + "99.999" : 0.8591815178114042, + "99.9999" : 0.8591815178114042, + "100.0" : 0.8591815178114042 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8499132777907785, + 0.8591815178114042 + ], + [ + 0.8499719775666398, + 0.8518092594679259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.332235623807907, + "scoreError" : 0.20715360810351968, + "scoreConfidence" : [ + 16.125082015704386, + 16.53938923191143 + ], + "scorePercentiles" : { + "0.0" : 16.254099964042563, + "50.0" : 16.330486925632947, + "90.0" : 16.411712773691235, + "95.0" : 16.411712773691235, + "99.0" : 16.411712773691235, + "99.9" : 16.411712773691235, + "99.99" : 16.411712773691235, + "99.999" : 16.411712773691235, + "99.9999" : 16.411712773691235, + "100.0" : 16.411712773691235 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.389117276254602, + 16.39648321174611, + 16.411712773691235 + ], + [ + 16.271856575011288, + 16.254099964042563, + 16.270143942101654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2652.918770833054, + "scoreError" : 124.9996809074908, + "scoreConfidence" : [ + 2527.919089925563, + 2777.918451740545 + ], + "scorePercentiles" : { + "0.0" : 2611.4249538534323, + "50.0" : 2653.231171170539, + "90.0" : 2693.8368739575126, + "95.0" : 2693.8368739575126, + "99.0" : 2693.8368739575126, + "99.9" : 2693.8368739575126, + "99.99" : 2693.8368739575126, + "99.999" : 2693.8368739575126, + "99.9999" : 2693.8368739575126, + "100.0" : 2693.8368739575126 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2611.4249538534323, + 2612.2190711266508, + 2613.0442450075416 + ], + [ + 2693.8368739575126, + 2693.4180973335365, + 2693.5693837196486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69262.37585843161, + "scoreError" : 2282.328019304852, + "scoreConfidence" : [ + 66980.04783912675, + 71544.70387773647 + ], + "scorePercentiles" : { + "0.0" : 68487.79231759085, + "50.0" : 69261.04294853669, + "90.0" : 70038.85521638897, + "95.0" : 70038.85521638897, + "99.0" : 70038.85521638897, + "99.9" : 70038.85521638897, + "99.99" : 70038.85521638897, + "99.999" : 70038.85521638897, + "99.9999" : 70038.85521638897, + "100.0" : 70038.85521638897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69995.44090846958, + 70038.85521638897, + 69980.63433255524 + ], + [ + 68541.45156451812, + 68530.08081106693, + 68487.79231759085 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.4316734566819, + "scoreError" : 25.27468754118229, + "scoreConfidence" : [ + 322.1569859154996, + 372.7063609978642 + ], + "scorePercentiles" : { + "0.0" : 334.780629391915, + "50.0" : 348.64000484253074, + "90.0" : 356.17898665079616, + "95.0" : 356.17898665079616, + "99.0" : 356.17898665079616, + "99.9" : 356.17898665079616, + "99.99" : 356.17898665079616, + "99.999" : 356.17898665079616, + "99.9999" : 356.17898665079616, + "100.0" : 356.17898665079616 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.5768111764294, + 340.614568450461, + 334.780629391915 + ], + [ + 353.70319850863217, + 355.73584656185744, + 356.17898665079616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.8355306643244, + "scoreError" : 5.532398020945029, + "scoreConfidence" : [ + 101.30313264337937, + 112.36792868526942 + ], + "scorePercentiles" : { + "0.0" : 104.24474745881417, + "50.0" : 106.86517181357549, + "90.0" : 108.89930891115843, + "95.0" : 108.89930891115843, + "99.0" : 108.89930891115843, + "99.9" : 108.89930891115843, + "99.99" : 108.89930891115843, + "99.999" : 108.89930891115843, + "99.9999" : 108.89930891115843, + "100.0" : 108.89930891115843 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.24474745881417, + 105.34331009812756, + 105.76503460838364 + ], + [ + 107.96530901876733, + 108.89930891115843, + 108.7954738906952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060828851220586816, + "scoreError" : 7.320031249896371E-5, + "scoreConfidence" : [ + 0.06075565090808785, + 0.06090205153308578 + ], + "scorePercentiles" : { + "0.0" : 0.06079568737537085, + "50.0" : 0.06082735904667381, + "90.0" : 0.060858228232888466, + "95.0" : 0.060858228232888466, + "99.0" : 0.060858228232888466, + "99.9" : 0.060858228232888466, + "99.99" : 0.060858228232888466, + "99.999" : 0.060858228232888466, + "99.9999" : 0.060858228232888466, + "100.0" : 0.060858228232888466 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060858228232888466, + 0.060857648997997824, + 0.060835273967185986 + ], + [ + 0.060806824623916136, + 0.06081944412616163, + 0.06079568737537085 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.771253861784456E-4, + "scoreError" : 3.20566102239807E-5, + "scoreConfidence" : [ + 3.450687759544649E-4, + 4.091819964024263E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6644673865198906E-4, + "50.0" : 3.773105682693279E-4, + "90.0" : 3.8765561398091867E-4, + "95.0" : 3.8765561398091867E-4, + "99.0" : 3.8765561398091867E-4, + "99.9" : 3.8765561398091867E-4, + "99.99" : 3.8765561398091867E-4, + "99.999" : 3.8765561398091867E-4, + "99.9999" : 3.8765561398091867E-4, + "100.0" : 3.8765561398091867E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8757203759514155E-4, + 3.8744662048861226E-4, + 3.8765561398091867E-4 + ], + [ + 3.664567903039684E-4, + 3.671745160500435E-4, + 3.6644673865198906E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10220033324019878, + "scoreError" : 7.348407769324592E-4, + "scoreConfidence" : [ + 0.10146549246326632, + 0.10293517401713125 + ], + "scorePercentiles" : { + "0.0" : 0.10193692394650467, + "50.0" : 0.10213691112455872, + "90.0" : 0.10256970829572495, + "95.0" : 0.10256970829572495, + "99.0" : 0.10256970829572495, + "99.9" : 0.10256970829572495, + "99.99" : 0.10256970829572495, + "99.999" : 0.10256970829572495, + "99.9999" : 0.10256970829572495, + "100.0" : 0.10256970829572495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10193692394650467, + 0.10203699231679693, + 0.1019769971446927 + ], + [ + 0.10256970829572495, + 0.1024445478051529, + 0.10223682993232053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014415331154454133, + "scoreError" : 4.328686442361903E-4, + "scoreConfidence" : [ + 0.013982462510217944, + 0.014848199798690323 + ], + "scorePercentiles" : { + "0.0" : 0.014270254059831499, + "50.0" : 0.014415585143728343, + "90.0" : 0.014565975831013734, + "95.0" : 0.014565975831013734, + "99.0" : 0.014565975831013734, + "99.9" : 0.014565975831013734, + "99.99" : 0.014565975831013734, + "99.999" : 0.014565975831013734, + "99.9999" : 0.014565975831013734, + "100.0" : 0.014565975831013734 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01427273858913463, + 0.014280618256959211, + 0.014270254059831499 + ], + [ + 0.01455184815928825, + 0.014565975831013734, + 0.014550552030497476 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0033324945142952, + "scoreError" : 0.05397205682089358, + "scoreConfidence" : [ + 0.9493604376934016, + 1.0573045513351889 + ], + "scorePercentiles" : { + "0.0" : 0.9846515982081323, + "50.0" : 1.0035884769390897, + "90.0" : 1.0218775064377683, + "95.0" : 1.0218775064377683, + "99.0" : 1.0218775064377683, + "99.9" : 1.0218775064377683, + "99.99" : 1.0218775064377683, + "99.999" : 1.0218775064377683, + "99.9999" : 1.0218775064377683, + "100.0" : 1.0218775064377683 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.020321899704112, + 1.0204522047959184, + 1.0218775064377683 + ], + [ + 0.9868550541740675, + 0.9858367037657729, + 0.9846515982081323 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012460747499087385, + "scoreError" : 2.344741054678024E-4, + "scoreConfidence" : [ + 0.012226273393619582, + 0.012695221604555188 + ], + "scorePercentiles" : { + "0.0" : 0.012383000222888135, + "50.0" : 0.012429302249815324, + "90.0" : 0.01256563645045122, + "95.0" : 0.01256563645045122, + "99.0" : 0.01256563645045122, + "99.9" : 0.01256563645045122, + "99.99" : 0.01256563645045122, + "99.999" : 0.01256563645045122, + "99.9999" : 0.01256563645045122, + "100.0" : 0.01256563645045122 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012383000222888135, + 0.01239570650212209, + 0.012401507561007672 + ], + [ + 0.012457096938622979, + 0.01256563645045122, + 0.012561537319432232 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6112984608750374, + "scoreError" : 0.12747358287926502, + "scoreConfidence" : [ + 3.4838248779957723, + 3.7387720437543024 + ], + "scorePercentiles" : { + "0.0" : 3.5527282151988637, + "50.0" : 3.6127836804227824, + "90.0" : 3.6556680263157895, + "95.0" : 3.6556680263157895, + "99.0" : 3.6556680263157895, + "99.9" : 3.6556680263157895, + "99.99" : 3.6556680263157895, + "99.999" : 3.6556680263157895, + "99.9999" : 3.6556680263157895, + "100.0" : 3.6556680263157895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6556680263157895, + 3.645465748542274, + 3.6538557699050402 + ], + [ + 3.5527282151988637, + 3.5801016123032903, + 3.5799713929849677 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8611117035417184, + "scoreError" : 0.04350602193530415, + "scoreConfidence" : [ + 2.8176056816064143, + 2.9046177254770225 + ], + "scorePercentiles" : { + "0.0" : 2.8315016531710078, + "50.0" : 2.8650410848719114, + "90.0" : 2.874777800229951, + "95.0" : 2.874777800229951, + "99.0" : 2.874777800229951, + "99.9" : 2.874777800229951, + "99.99" : 2.874777800229951, + "99.999" : 2.874777800229951, + "99.9999" : 2.874777800229951, + "100.0" : 2.874777800229951 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8601125501858737, + 2.8701960479196558, + 2.868619031832521 + ], + [ + 2.8315016531710078, + 2.861463137911302, + 2.874777800229951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18681796853368926, + "scoreError" : 0.02115320809019466, + "scoreConfidence" : [ + 0.1656647604434946, + 0.20797117662388392 + ], + "scorePercentiles" : { + "0.0" : 0.1779729366791244, + "50.0" : 0.18831507960067728, + "90.0" : 0.1942224326943619, + "95.0" : 0.1942224326943619, + "99.0" : 0.1942224326943619, + "99.9" : 0.1942224326943619, + "99.99" : 0.1942224326943619, + "99.999" : 0.1942224326943619, + "99.9999" : 0.1942224326943619, + "100.0" : 0.1942224326943619 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1837946036757949, + 0.17879898762739138, + 0.1779729366791244 + ], + [ + 0.19328329499990335, + 0.1928355555255597, + 0.1942224326943619 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3397743504691115, + "scoreError" : 0.019005977960164063, + "scoreConfidence" : [ + 0.3207683725089474, + 0.35878032842927554 + ], + "scorePercentiles" : { + "0.0" : 0.33394418957456756, + "50.0" : 0.33786573322545543, + "90.0" : 0.3492599469493242, + "95.0" : 0.3492599469493242, + "99.0" : 0.3492599469493242, + "99.9" : 0.3492599469493242, + "99.99" : 0.3492599469493242, + "99.999" : 0.3492599469493242, + "99.9999" : 0.3492599469493242, + "100.0" : 0.3492599469493242 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33405711611437733, + 0.33394418957456756, + 0.33396415846246325 + ], + [ + 0.3492599469493242, + 0.34574634137740284, + 0.34167435033653354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14969528232292936, + "scoreError" : 0.00440972774395302, + "scoreConfidence" : [ + 0.14528555457897635, + 0.15410501006688238 + ], + "scorePercentiles" : { + "0.0" : 0.1482274776699029, + "50.0" : 0.14961047337011923, + "90.0" : 0.1512611949872943, + "95.0" : 0.1512611949872943, + "99.0" : 0.1512611949872943, + "99.9" : 0.1512611949872943, + "99.99" : 0.1512611949872943, + "99.999" : 0.1512611949872943, + "99.9999" : 0.1512611949872943, + "100.0" : 0.1512611949872943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14827325643116612, + 0.1482274776699029, + 0.14828932528137373 + ], + [ + 0.1509316214588647, + 0.1512611949872943, + 0.15118881810897436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3981214765634346, + "scoreError" : 0.02086147318599553, + "scoreConfidence" : [ + 0.3772600033774391, + 0.4189829497494301 + ], + "scorePercentiles" : { + "0.0" : 0.389766691234361, + "50.0" : 0.39873682948768496, + "90.0" : 0.40715051367966776, + "95.0" : 0.40715051367966776, + "99.0" : 0.40715051367966776, + "99.9" : 0.40715051367966776, + "99.99" : 0.40715051367966776, + "99.999" : 0.40715051367966776, + "99.9999" : 0.40715051367966776, + "100.0" : 0.40715051367966776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39413904898908286, + 0.3908228704861654, + 0.389766691234361 + ], + [ + 0.40715051367966776, + 0.4035151250050438, + 0.403334609986287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15416333844967361, + "scoreError" : 0.0037646306821965255, + "scoreConfidence" : [ + 0.1503987077674771, + 0.15792796913187013 + ], + "scorePercentiles" : { + "0.0" : 0.15284310736993337, + "50.0" : 0.15399168125384866, + "90.0" : 0.1562776362712924, + "95.0" : 0.1562776362712924, + "99.0" : 0.1562776362712924, + "99.9" : 0.1562776362712924, + "99.99" : 0.1562776362712924, + "99.999" : 0.1562776362712924, + "99.9999" : 0.1562776362712924, + "100.0" : 0.1562776362712924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1562776362712924, + 0.15485281633348302, + 0.1546858990223982 + ], + [ + 0.15329746348529907, + 0.15284310736993337, + 0.15302310821563556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047172424366579944, + "scoreError" : 4.344566689682615E-4, + "scoreConfidence" : [ + 0.04673796769761168, + 0.04760688103554821 + ], + "scorePercentiles" : { + "0.0" : 0.04699316665883459, + "50.0" : 0.047182017704422256, + "90.0" : 0.04742785077946777, + "95.0" : 0.04742785077946777, + "99.0" : 0.04742785077946777, + "99.9" : 0.04742785077946777, + "99.99" : 0.04742785077946777, + "99.999" : 0.04742785077946777, + "99.9999" : 0.04742785077946777, + "100.0" : 0.04742785077946777 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04719294494100991, + 0.0471710904678346, + 0.04721875084992256 + ], + [ + 0.04742785077946777, + 0.04699316665883459, + 0.04703074250241023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9460456.227808142, + "scoreError" : 548391.4390651599, + "scoreConfidence" : [ + 8912064.788742982, + 1.0008847666873302E7 + ], + "scorePercentiles" : { + "0.0" : 9266164.849074075, + "50.0" : 9459758.150763154, + "90.0" : 9649990.819672132, + "95.0" : 9649990.819672132, + "99.0" : 9649990.819672132, + "99.9" : 9649990.819672132, + "99.99" : 9649990.819672132, + "99.999" : 9649990.819672132, + "99.9999" : 9649990.819672132, + "100.0" : 9649990.819672132 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9641715.66955684, + 9649990.819672132, + 9624122.20673077 + ], + [ + 9266164.849074075, + 9295394.094795538, + 9285349.727019498 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-14T08:13:36Z-1a760d719050ed692ebce51f120f07e8f46e979c-jdk17.json b/performance-results/2025-05-14T08:13:36Z-1a760d719050ed692ebce51f120f07e8f46e979c-jdk17.json new file mode 100644 index 0000000000..1b9e2d9405 --- /dev/null +++ b/performance-results/2025-05-14T08:13:36Z-1a760d719050ed692ebce51f120f07e8f46e979c-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3785679841698584, + "scoreError" : 0.04214487808540427, + "scoreConfidence" : [ + 3.336423106084454, + 3.4207128622552627 + ], + "scorePercentiles" : { + "0.0" : 3.370647753211857, + "50.0" : 3.3785073236231695, + "90.0" : 3.386609536221237, + "95.0" : 3.386609536221237, + "99.0" : 3.386609536221237, + "99.9" : 3.386609536221237, + "99.99" : 3.386609536221237, + "99.999" : 3.386609536221237, + "99.9999" : 3.386609536221237, + "100.0" : 3.386609536221237 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.378187819919075, + 3.386609536221237 + ], + [ + 3.370647753211857, + 3.378826827327264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7048257385279155, + "scoreError" : 0.006376021150997846, + "scoreConfidence" : [ + 1.6984497173769177, + 1.7112017596789133 + ], + "scorePercentiles" : { + "0.0" : 1.7037733059352842, + "50.0" : 1.7048595742862216, + "90.0" : 1.7058104996039343, + "95.0" : 1.7058104996039343, + "99.0" : 1.7058104996039343, + "99.9" : 1.7058104996039343, + "99.99" : 1.7058104996039343, + "99.999" : 1.7058104996039343, + "99.9999" : 1.7058104996039343, + "100.0" : 1.7058104996039343 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7037733059352842, + 1.7058104996039343 + ], + [ + 1.7042110951067069, + 1.7055080534657365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.859962288809697, + "scoreError" : 0.007710138801591379, + "scoreConfidence" : [ + 0.8522521500081057, + 0.8676724276112884 + ], + "scorePercentiles" : { + "0.0" : 0.8587517652150629, + "50.0" : 0.8598760657889408, + "90.0" : 0.8613452584458438, + "95.0" : 0.8613452584458438, + "99.0" : 0.8613452584458438, + "99.9" : 0.8613452584458438, + "99.99" : 0.8613452584458438, + "99.999" : 0.8613452584458438, + "99.9999" : 0.8613452584458438, + "100.0" : 0.8613452584458438 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8587517652150629, + 0.860538635619139 + ], + [ + 0.8592134959587427, + 0.8613452584458438 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.242222630252485, + "scoreError" : 0.40169282101150305, + "scoreConfidence" : [ + 15.840529809240982, + 16.64391545126399 + ], + "scorePercentiles" : { + "0.0" : 16.09772925138583, + "50.0" : 16.237817706656884, + "90.0" : 16.406707770808403, + "95.0" : 16.406707770808403, + "99.0" : 16.406707770808403, + "99.9" : 16.406707770808403, + "99.99" : 16.406707770808403, + "99.999" : 16.406707770808403, + "99.9999" : 16.406707770808403, + "100.0" : 16.406707770808403 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.406707770808403, + 16.363133279291233, + 16.34402255226887 + ], + [ + 16.131612861044893, + 16.09772925138583, + 16.110130066715666 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2603.5201174038452, + "scoreError" : 29.583333561553165, + "scoreConfidence" : [ + 2573.9367838422922, + 2633.103450965398 + ], + "scorePercentiles" : { + "0.0" : 2592.9156315080922, + "50.0" : 2603.610942717016, + "90.0" : 2614.175689792112, + "95.0" : 2614.175689792112, + "99.0" : 2614.175689792112, + "99.9" : 2614.175689792112, + "99.99" : 2614.175689792112, + "99.999" : 2614.175689792112, + "99.9999" : 2614.175689792112, + "100.0" : 2614.175689792112 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2612.3102358081533, + 2612.866457395936, + 2614.175689792112 + ], + [ + 2593.9410402928993, + 2594.911649625879, + 2592.9156315080922 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70916.54313720208, + "scoreError" : 870.4990256159559, + "scoreConfidence" : [ + 70046.04411158613, + 71787.04216281803 + ], + "scorePercentiles" : { + "0.0" : 70604.8350767051, + "50.0" : 70917.17821880765, + "90.0" : 71221.49522349113, + "95.0" : 71221.49522349113, + "99.0" : 71221.49522349113, + "99.9" : 71221.49522349113, + "99.99" : 71221.49522349113, + "99.999" : 71221.49522349113, + "99.9999" : 71221.49522349113, + "100.0" : 71221.49522349113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71221.49522349113, + 71167.65986097971, + 71207.53343280114 + ], + [ + 70604.8350767051, + 70666.6965766356, + 70631.0386525998 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 343.7176900430316, + "scoreError" : 3.572314029136568, + "scoreConfidence" : [ + 340.14537601389503, + 347.2900040721682 + ], + "scorePercentiles" : { + "0.0" : 341.8135134219375, + "50.0" : 343.88520629690936, + "90.0" : 345.10071956145265, + "95.0" : 345.10071956145265, + "99.0" : 345.10071956145265, + "99.9" : 345.10071956145265, + "99.99" : 345.10071956145265, + "99.999" : 345.10071956145265, + "99.9999" : 345.10071956145265, + "100.0" : 345.10071956145265 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.59626241288146, + 341.8135134219375, + 342.7301683169292 + ], + [ + 344.8913263640519, + 344.1741501809372, + 345.10071956145265 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.74790023600792, + "scoreError" : 0.9438948009680315, + "scoreConfidence" : [ + 105.8040054350399, + 107.69179503697595 + ], + "scorePercentiles" : { + "0.0" : 106.11924027619916, + "50.0" : 106.82078485079462, + "90.0" : 107.06307691042083, + "95.0" : 107.06307691042083, + "99.0" : 107.06307691042083, + "99.9" : 107.06307691042083, + "99.99" : 107.06307691042083, + "99.999" : 107.06307691042083, + "99.9999" : 107.06307691042083, + "100.0" : 107.06307691042083 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.11924027619916, + 107.06307691042083, + 106.97551988249337 + ], + [ + 106.76632816354338, + 106.87524153804587, + 106.68799464534494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06051150051051311, + "scoreError" : 0.001122511559034843, + "scoreConfidence" : [ + 0.05938898895147826, + 0.06163401206954795 + ], + "scorePercentiles" : { + "0.0" : 0.060066236892212514, + "50.0" : 0.06053216847167737, + "90.0" : 0.06088006549372945, + "95.0" : 0.06088006549372945, + "99.0" : 0.06088006549372945, + "99.9" : 0.06088006549372945, + "99.99" : 0.06088006549372945, + "99.999" : 0.06088006549372945, + "99.9999" : 0.06088006549372945, + "100.0" : 0.06088006549372945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06018400067405317, + 0.06019503745282281, + 0.060066236892212514 + ], + [ + 0.06088006549372945, + 0.06087436305972875, + 0.06086929949053193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6315896688861424E-4, + "scoreError" : 3.830660297141263E-5, + "scoreConfidence" : [ + 3.248523639172016E-4, + 4.014655698600269E-4 + ], + "scorePercentiles" : { + "0.0" : 3.501250659583308E-4, + "50.0" : 3.635080022294647E-4, + "90.0" : 3.7563639866240213E-4, + "95.0" : 3.7563639866240213E-4, + "99.0" : 3.7563639866240213E-4, + "99.9" : 3.7563639866240213E-4, + "99.99" : 3.7563639866240213E-4, + "99.999" : 3.7563639866240213E-4, + "99.9999" : 3.7563639866240213E-4, + "100.0" : 3.7563639866240213E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7563639866240213E-4, + 3.756110131631251E-4, + 3.756232867057088E-4 + ], + [ + 3.5055304554631425E-4, + 3.514049912958042E-4, + 3.501250659583308E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10255226672652944, + "scoreError" : 4.754330174721577E-4, + "scoreConfidence" : [ + 0.10207683370905728, + 0.1030276997440016 + ], + "scorePercentiles" : { + "0.0" : 0.10222656209110238, + "50.0" : 0.10258916137740645, + "90.0" : 0.10273096904759459, + "95.0" : 0.10273096904759459, + "99.0" : 0.10273096904759459, + "99.9" : 0.10273096904759459, + "99.99" : 0.10273096904759459, + "99.999" : 0.10273096904759459, + "99.9999" : 0.10273096904759459, + "100.0" : 0.10273096904759459 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10260120574354134, + 0.10258990820398659, + 0.10273096904759459 + ], + [ + 0.10258841455082633, + 0.10222656209110238, + 0.10257654072212534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014349260967523992, + "scoreError" : 1.0090775616586608E-4, + "scoreConfidence" : [ + 0.014248353211358126, + 0.014450168723689859 + ], + "scorePercentiles" : { + "0.0" : 0.014309645192448036, + "50.0" : 0.014348172366035115, + "90.0" : 0.014388673696402877, + "95.0" : 0.014388673696402877, + "99.0" : 0.014388673696402877, + "99.9" : 0.014388673696402877, + "99.99" : 0.014388673696402877, + "99.999" : 0.014388673696402877, + "99.9999" : 0.014388673696402877, + "100.0" : 0.014388673696402877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014374564100315805, + 0.014388673696402877, + 0.01438170378967321 + ], + [ + 0.014309645192448036, + 0.014319198394549601, + 0.014321780631754424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9793126411206203, + "scoreError" : 0.1073989532666016, + "scoreConfidence" : [ + 0.8719136878540188, + 1.0867115943872219 + ], + "scorePercentiles" : { + "0.0" : 0.9429985540782649, + "50.0" : 0.9784013443119111, + "90.0" : 1.0189078739684156, + "95.0" : 1.0189078739684156, + "99.0" : 1.0189078739684156, + "99.9" : 1.0189078739684156, + "99.99" : 1.0189078739684156, + "99.999" : 1.0189078739684156, + "99.9999" : 1.0189078739684156, + "100.0" : 1.0189078739684156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9429985540782649, + 0.9456022879160363, + 0.9447197945399585 + ], + [ + 1.0124469355132617, + 1.0112004007077857, + 1.0189078739684156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012344769242187971, + "scoreError" : 5.0372232441035845E-5, + "scoreConfidence" : [ + 0.012294397009746936, + 0.012395141474629006 + ], + "scorePercentiles" : { + "0.0" : 0.012325702427612864, + "50.0" : 0.012343249889004204, + "90.0" : 0.012363363621977545, + "95.0" : 0.012363363621977545, + "99.0" : 0.012363363621977545, + "99.9" : 0.012363363621977545, + "99.99" : 0.012363363621977545, + "99.999" : 0.012363363621977545, + "99.9999" : 0.012363363621977545, + "100.0" : 0.012363363621977545 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012325702427612864, + 0.012330029872387646, + 0.012330037290024758 + ], + [ + 0.012363019753141365, + 0.012363363621977545, + 0.01235646248798365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.505150055312686, + "scoreError" : 0.1860641105606592, + "scoreConfidence" : [ + 3.3190859447520267, + 3.6912141658733453 + ], + "scorePercentiles" : { + "0.0" : 3.4251966130136986, + "50.0" : 3.5107318360058617, + "90.0" : 3.5694156909350463, + "95.0" : 3.5694156909350463, + "99.0" : 3.5694156909350463, + "99.9" : 3.5694156909350463, + "99.99" : 3.5694156909350463, + "99.999" : 3.5694156909350463, + "99.9999" : 3.5694156909350463, + "100.0" : 3.5694156909350463 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5694156909350463, + 3.5603156014234876, + 3.5644246186742694 + ], + [ + 3.4251966130136986, + 3.4611480705882354, + 3.4503997372413795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8492045265280646, + "scoreError" : 0.018234642048560203, + "scoreConfidence" : [ + 2.8309698844795044, + 2.8674391685766247 + ], + "scorePercentiles" : { + "0.0" : 2.841439738068182, + "50.0" : 2.847963167551712, + "90.0" : 2.8602171629968542, + "95.0" : 2.8602171629968542, + "99.0" : 2.8602171629968542, + "99.9" : 2.8602171629968542, + "99.99" : 2.8602171629968542, + "99.999" : 2.8602171629968542, + "99.9999" : 2.8602171629968542, + "100.0" : 2.8602171629968542 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8602171629968542, + 2.8524446680923865, + 2.8483018832241527 + ], + [ + 2.847624451879271, + 2.845199254907539, + 2.841439738068182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1760942858874841, + "scoreError" : 0.0073879778428384705, + "scoreConfidence" : [ + 0.16870630804464562, + 0.1834822637303226 + ], + "scorePercentiles" : { + "0.0" : 0.17331126717041298, + "50.0" : 0.17622867737840928, + "90.0" : 0.1797891385243249, + "95.0" : 0.1797891385243249, + "99.0" : 0.1797891385243249, + "99.9" : 0.1797891385243249, + "99.99" : 0.1797891385243249, + "99.999" : 0.1797891385243249, + "99.9999" : 0.1797891385243249, + "100.0" : 0.1797891385243249 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17340231128296718, + 0.1748608251967127, + 0.17331126717041298 + ], + [ + 0.1797891385243249, + 0.17760564359038114, + 0.17759652956010585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33639321413002166, + "scoreError" : 0.007646768010038521, + "scoreConfidence" : [ + 0.32874644611998316, + 0.34403998214006015 + ], + "scorePercentiles" : { + "0.0" : 0.3337408923374716, + "50.0" : 0.33645028808166216, + "90.0" : 0.3389598427956479, + "95.0" : 0.3389598427956479, + "99.0" : 0.3389598427956479, + "99.9" : 0.3389598427956479, + "99.99" : 0.3389598427956479, + "99.999" : 0.3389598427956479, + "99.9999" : 0.3389598427956479, + "100.0" : 0.3389598427956479 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3340631234967932, + 0.3337408923374716, + 0.33391384994490636 + ], + [ + 0.3389598427956479, + 0.3388441235387795, + 0.33883745266653115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16242809379934284, + "scoreError" : 0.012330120698542165, + "scoreConfidence" : [ + 0.15009797310080067, + 0.174758214497885 + ], + "scorePercentiles" : { + "0.0" : 0.15807219257397573, + "50.0" : 0.1626438524479838, + "90.0" : 0.1666093599846723, + "95.0" : 0.1666093599846723, + "99.0" : 0.1666093599846723, + "99.9" : 0.1666093599846723, + "99.99" : 0.1666093599846723, + "99.999" : 0.1666093599846723, + "99.9999" : 0.1666093599846723, + "100.0" : 0.1666093599846723 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15820958676770713, + 0.15899491031368745, + 0.15807219257397573 + ], + [ + 0.1666093599846723, + 0.16629279458228016, + 0.16638971857373422 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39275317702564944, + "scoreError" : 0.029452107550936742, + "scoreConfidence" : [ + 0.3633010694747127, + 0.4222052845765862 + ], + "scorePercentiles" : { + "0.0" : 0.38266731810354726, + "50.0" : 0.3928501453295805, + "90.0" : 0.4024224785110664, + "95.0" : 0.4024224785110664, + "99.0" : 0.4024224785110664, + "99.9" : 0.4024224785110664, + "99.99" : 0.4024224785110664, + "99.999" : 0.4024224785110664, + "99.9999" : 0.4024224785110664, + "100.0" : 0.4024224785110664 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.402196212234556, + 0.40239322384516335, + 0.4024224785110664 + ], + [ + 0.383504078424605, + 0.3833357510349586, + 0.38266731810354726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15795994014912945, + "scoreError" : 0.0041476396878400365, + "scoreConfidence" : [ + 0.1538123004612894, + 0.1621075798369695 + ], + "scorePercentiles" : { + "0.0" : 0.15632779731123964, + "50.0" : 0.15804988071084491, + "90.0" : 0.1596122677445613, + "95.0" : 0.1596122677445613, + "99.0" : 0.1596122677445613, + "99.9" : 0.1596122677445613, + "99.99" : 0.1596122677445613, + "99.999" : 0.1596122677445613, + "99.9999" : 0.1596122677445613, + "100.0" : 0.1596122677445613 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1571954524105192, + 0.156437207915526, + 0.15632779731123964 + ], + [ + 0.15928260650176004, + 0.1589043090111706, + 0.1596122677445613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04852059916433813, + "scoreError" : 0.002269200882250536, + "scoreConfidence" : [ + 0.046251398282087595, + 0.050789800046588666 + ], + "scorePercentiles" : { + "0.0" : 0.047763267298406166, + "50.0" : 0.04840643381079313, + "90.0" : 0.04950884536133514, + "95.0" : 0.04950884536133514, + "99.0" : 0.04950884536133514, + "99.9" : 0.04950884536133514, + "99.99" : 0.04950884536133514, + "99.999" : 0.04950884536133514, + "99.9999" : 0.04950884536133514, + "100.0" : 0.04950884536133514 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04950884536133514, + 0.049234081318464906, + 0.04898786289176929 + ], + [ + 0.0478045333862363, + 0.047825004729816975, + 0.047763267298406166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9371481.263867075, + "scoreError" : 29270.826948461792, + "scoreConfidence" : [ + 9342210.436918613, + 9400752.090815537 + ], + "scorePercentiles" : { + "0.0" : 9352008.46448598, + "50.0" : 9373237.117619494, + "90.0" : 9383151.533771107, + "95.0" : 9383151.533771107, + "99.0" : 9383151.533771107, + "99.9" : 9383151.533771107, + "99.99" : 9383151.533771107, + "99.999" : 9383151.533771107, + "99.9999" : 9383151.533771107, + "100.0" : 9383151.533771107 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9373823.492970947, + 9371043.863295881, + 9376209.486410497 + ], + [ + 9383151.533771107, + 9372650.74226804, + 9352008.46448598 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-14T08:22:27Z-6fcb38196f6e372eaba3041d6eb3419c2da54a5c-jdk17.json b/performance-results/2025-05-14T08:22:27Z-6fcb38196f6e372eaba3041d6eb3419c2da54a5c-jdk17.json new file mode 100644 index 0000000000..9a22ea5428 --- /dev/null +++ b/performance-results/2025-05-14T08:22:27Z-6fcb38196f6e372eaba3041d6eb3419c2da54a5c-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3434326063413575, + "scoreError" : 0.05493111205750819, + "scoreConfidence" : [ + 3.2885014942838495, + 3.3983637183988655 + ], + "scorePercentiles" : { + "0.0" : 3.334027053494585, + "50.0" : 3.3426992370582087, + "90.0" : 3.3543048977544276, + "95.0" : 3.3543048977544276, + "99.0" : 3.3543048977544276, + "99.9" : 3.3543048977544276, + "99.99" : 3.3543048977544276, + "99.999" : 3.3543048977544276, + "99.9999" : 3.3543048977544276, + "100.0" : 3.3543048977544276 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3405736353167557, + 3.3543048977544276 + ], + [ + 3.334027053494585, + 3.3448248387996617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6859003716059564, + "scoreError" : 0.01671555296576354, + "scoreConfidence" : [ + 1.669184818640193, + 1.7026159245717198 + ], + "scorePercentiles" : { + "0.0" : 1.6832568786424777, + "50.0" : 1.6859059303483654, + "90.0" : 1.6885327470846165, + "95.0" : 1.6885327470846165, + "99.0" : 1.6885327470846165, + "99.9" : 1.6885327470846165, + "99.99" : 1.6885327470846165, + "99.999" : 1.6885327470846165, + "99.9999" : 1.6885327470846165, + "100.0" : 1.6885327470846165 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.684151462592159, + 1.6876603981045721 + ], + [ + 1.6832568786424777, + 1.6885327470846165 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8481499957170132, + "scoreError" : 0.026060872232263485, + "scoreConfidence" : [ + 0.8220891234847497, + 0.8742108679492767 + ], + "scorePercentiles" : { + "0.0" : 0.8435519365359572, + "50.0" : 0.8481193108900993, + "90.0" : 0.8528094245518967, + "95.0" : 0.8528094245518967, + "99.0" : 0.8528094245518967, + "99.9" : 0.8528094245518967, + "99.99" : 0.8528094245518967, + "99.999" : 0.8528094245518967, + "99.9999" : 0.8528094245518967, + "100.0" : 0.8528094245518967 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8435519365359572, + 0.8528094245518967 + ], + [ + 0.8463959826752865, + 0.8498426391049122 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.021151973806372, + "scoreError" : 0.10810940741657382, + "scoreConfidence" : [ + 15.913042566389798, + 16.129261381222946 + ], + "scorePercentiles" : { + "0.0" : 15.949247493108613, + "50.0" : 16.03753360034897, + "90.0" : 16.053561503474235, + "95.0" : 16.053561503474235, + "99.0" : 16.053561503474235, + "99.9" : 16.053561503474235, + "99.99" : 16.053561503474235, + "99.999" : 16.053561503474235, + "99.9999" : 16.053561503474235, + "100.0" : 16.053561503474235 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.042326985262434, + 15.949247493108613, + 16.006708660295004 + ], + [ + 16.04047263271662, + 16.053561503474235, + 16.034594567981316 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2587.1396952385066, + "scoreError" : 179.6508538136482, + "scoreConfidence" : [ + 2407.4888414248585, + 2766.790549052155 + ], + "scorePercentiles" : { + "0.0" : 2526.8868569546526, + "50.0" : 2587.9471865679134, + "90.0" : 2648.277777389688, + "95.0" : 2648.277777389688, + "99.0" : 2648.277777389688, + "99.9" : 2648.277777389688, + "99.99" : 2648.277777389688, + "99.999" : 2648.277777389688, + "99.9999" : 2648.277777389688, + "100.0" : 2648.277777389688 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2648.277777389688, + 2644.4880749569174, + 2643.9895780702805 + ], + [ + 2526.8868569546526, + 2531.904795065546, + 2527.291088993956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75852.64268313852, + "scoreError" : 2708.6832611939158, + "scoreConfidence" : [ + 73143.9594219446, + 78561.32594433244 + ], + "scorePercentiles" : { + "0.0" : 74904.0053887309, + "50.0" : 75882.75751871968, + "90.0" : 76759.27708483196, + "95.0" : 76759.27708483196, + "99.0" : 76759.27708483196, + "99.9" : 76759.27708483196, + "99.99" : 76759.27708483196, + "99.999" : 76759.27708483196, + "99.9999" : 76759.27708483196, + "100.0" : 76759.27708483196 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76736.50664592147, + 76759.27708483196, + 76703.28458083562 + ], + [ + 75062.23045660372, + 74904.0053887309, + 74950.55194190744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 341.1070724101766, + "scoreError" : 21.680346049536215, + "scoreConfidence" : [ + 319.4267263606404, + 362.78741845971285 + ], + "scorePercentiles" : { + "0.0" : 333.4360491331106, + "50.0" : 340.49308182545616, + "90.0" : 350.1156978118412, + "95.0" : 350.1156978118412, + "99.0" : 350.1156978118412, + "99.9" : 350.1156978118412, + "99.99" : 350.1156978118412, + "99.999" : 350.1156978118412, + "99.9999" : 350.1156978118412, + "100.0" : 350.1156978118412 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 333.4360491331106, + 334.3016383955047, + 334.70634906312023 + ], + [ + 346.2798145877921, + 350.1156978118412, + 347.8028854696908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.8209748936336, + "scoreError" : 4.6152265053975325, + "scoreConfidence" : [ + 112.20574838823607, + 121.43620139903113 + ], + "scorePercentiles" : { + "0.0" : 114.6190197369563, + "50.0" : 117.0268952790785, + "90.0" : 118.40734244182285, + "95.0" : 118.40734244182285, + "99.0" : 118.40734244182285, + "99.9" : 118.40734244182285, + "99.99" : 118.40734244182285, + "99.999" : 118.40734244182285, + "99.9999" : 118.40734244182285, + "100.0" : 118.40734244182285 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 118.25765538672955, + 118.40734244182285, + 118.14709624683381 + ], + [ + 114.6190197369563, + 115.90669431132319, + 115.5880412381359 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062389351554314416, + "scoreError" : 4.7932139097571475E-4, + "scoreConfidence" : [ + 0.0619100301633387, + 0.06286867294529012 + ], + "scorePercentiles" : { + "0.0" : 0.062199805672523714, + "50.0" : 0.06236838190339086, + "90.0" : 0.06261868740763932, + "95.0" : 0.06261868740763932, + "99.0" : 0.06261868740763932, + "99.9" : 0.06261868740763932, + "99.99" : 0.06261868740763932, + "99.999" : 0.06261868740763932, + "99.9999" : 0.06261868740763932, + "100.0" : 0.06261868740763932 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06261868740763932, + 0.06246388528686093, + 0.0625290629095593 + ], + [ + 0.062199805672523714, + 0.06227287851992079, + 0.06225178952938247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.810142103757004E-4, + "scoreError" : 1.8422944779307066E-5, + "scoreConfidence" : [ + 3.6259126559639335E-4, + 3.994371551550075E-4 + ], + "scorePercentiles" : { + "0.0" : 3.743604535086239E-4, + "50.0" : 3.8113356107916254E-4, + "90.0" : 3.875407688336346E-4, + "95.0" : 3.875407688336346E-4, + "99.0" : 3.875407688336346E-4, + "99.9" : 3.875407688336346E-4, + "99.99" : 3.875407688336346E-4, + "99.999" : 3.875407688336346E-4, + "99.9999" : 3.875407688336346E-4, + "100.0" : 3.875407688336346E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.862025061731704E-4, + 3.871842027022166E-4, + 3.875407688336346E-4 + ], + [ + 3.7606461598515466E-4, + 3.743604535086239E-4, + 3.747327150514023E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10148302255267977, + "scoreError" : 0.002113706935799896, + "scoreConfidence" : [ + 0.09936931561687987, + 0.10359672948847967 + ], + "scorePercentiles" : { + "0.0" : 0.10051683041170795, + "50.0" : 0.1015798621853776, + "90.0" : 0.10222254455779531, + "95.0" : 0.10222254455779531, + "99.0" : 0.10222254455779531, + "99.9" : 0.10222254455779531, + "99.99" : 0.10222254455779531, + "99.999" : 0.10222254455779531, + "99.9999" : 0.10222254455779531, + "100.0" : 0.10222254455779531 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10082921640451704, + 0.10110948764976492, + 0.10051683041170795 + ], + [ + 0.10216981957130306, + 0.10205023672099027, + 0.10222254455779531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012971430810405369, + "scoreError" : 1.79231537377462E-4, + "scoreConfidence" : [ + 0.012792199273027906, + 0.01315066234778283 + ], + "scorePercentiles" : { + "0.0" : 0.012909012750093266, + "50.0" : 0.012971260636224252, + "90.0" : 0.013039744782864952, + "95.0" : 0.013039744782864952, + "99.0" : 0.013039744782864952, + "99.9" : 0.013039744782864952, + "99.99" : 0.013039744782864952, + "99.999" : 0.013039744782864952, + "99.9999" : 0.013039744782864952, + "100.0" : 0.013039744782864952 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013025517492318332, + 0.013039744782864952, + 0.01302312893714887 + ], + [ + 0.012911788564707158, + 0.012909012750093266, + 0.012919392335299635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9266070008042951, + "scoreError" : 0.02764470085155464, + "scoreConfidence" : [ + 0.8989622999527405, + 0.9542517016558498 + ], + "scorePercentiles" : { + "0.0" : 0.9167091621596847, + "50.0" : 0.9270408048291614, + "90.0" : 0.9362849647069837, + "95.0" : 0.9362849647069837, + "99.0" : 0.9362849647069837, + "99.9" : 0.9362849647069837, + "99.99" : 0.9362849647069837, + "99.999" : 0.9362849647069837, + "99.9999" : 0.9362849647069837, + "100.0" : 0.9362849647069837 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9167091621596847, + 0.9192275517970402, + 0.9170195827067669 + ], + [ + 0.9355466855940131, + 0.9362849647069837, + 0.9348540578612825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010781186876464746, + "scoreError" : 1.7734658530255175E-4, + "scoreConfidence" : [ + 0.010603840291162195, + 0.010958533461767297 + ], + "scorePercentiles" : { + "0.0" : 0.010705549223973845, + "50.0" : 0.010788429068632921, + "90.0" : 0.010851521650339209, + "95.0" : 0.010851521650339209, + "99.0" : 0.010851521650339209, + "99.9" : 0.010851521650339209, + "99.99" : 0.010851521650339209, + "99.999" : 0.010851521650339209, + "99.9999" : 0.010851521650339209, + "100.0" : 0.010851521650339209 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010751896575822607, + 0.010705549223973845, + 0.010719524360700443 + ], + [ + 0.010833667886509149, + 0.010824961561443237, + 0.010851521650339209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5858491465959443, + "scoreError" : 0.21085157148421574, + "scoreConfidence" : [ + 3.3749975751117285, + 3.79670071808016 + ], + "scorePercentiles" : { + "0.0" : 3.511752580758427, + "50.0" : 3.586675970572024, + "90.0" : 3.6584904718361377, + "95.0" : 3.6584904718361377, + "99.0" : 3.6584904718361377, + "99.9" : 3.6584904718361377, + "99.99" : 3.6584904718361377, + "99.999" : 3.6584904718361377, + "99.9999" : 3.6584904718361377, + "100.0" : 3.6584904718361377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.511752580758427, + 3.5188561843771993, + 3.5212888163265306 + ], + [ + 3.652063124817518, + 3.6584904718361377, + 3.652643701459854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9431181133970252, + "scoreError" : 0.03185153532850182, + "scoreConfidence" : [ + 2.911266578068523, + 2.9749696487255273 + ], + "scorePercentiles" : { + "0.0" : 2.9315702010550995, + "50.0" : 2.942092324067618, + "90.0" : 2.9579960618160306, + "95.0" : 2.9579960618160306, + "99.0" : 2.9579960618160306, + "99.9" : 2.9579960618160306, + "99.99" : 2.9579960618160306, + "99.999" : 2.9579960618160306, + "99.9999" : 2.9579960618160306, + "100.0" : 2.9579960618160306 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9332771524926686, + 2.934407539612676, + 2.9315702010550995 + ], + [ + 2.9579960618160306, + 2.94977710852256, + 2.9516806168831167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1779339283835671, + "scoreError" : 0.0059975711928150245, + "scoreConfidence" : [ + 0.1719363571907521, + 0.18393149957638213 + ], + "scorePercentiles" : { + "0.0" : 0.1761909297367772, + "50.0" : 0.17731557852205032, + "90.0" : 0.18180954345138536, + "95.0" : 0.18180954345138536, + "99.0" : 0.18180954345138536, + "99.9" : 0.18180954345138536, + "99.99" : 0.18180954345138536, + "99.999" : 0.18180954345138536, + "99.9999" : 0.18180954345138536, + "100.0" : 0.18180954345138536 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17650980287706292, + 0.17640219948844593, + 0.1761909297367772 + ], + [ + 0.18180954345138536, + 0.17856974058069355, + 0.17812135416703775 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32390219678900667, + "scoreError" : 0.003910859976888052, + "scoreConfidence" : [ + 0.3199913368121186, + 0.32781305676589473 + ], + "scorePercentiles" : { + "0.0" : 0.3221171358028668, + "50.0" : 0.3241110730031184, + "90.0" : 0.32532988438140475, + "95.0" : 0.32532988438140475, + "99.0" : 0.32532988438140475, + "99.9" : 0.32532988438140475, + "99.99" : 0.32532988438140475, + "99.999" : 0.32532988438140475, + "99.9999" : 0.32532988438140475, + "100.0" : 0.32532988438140475 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3250109031167734, + 0.3250535409068747, + 0.32532988438140475 + ], + [ + 0.32321124288946346, + 0.3221171358028668, + 0.322690473636657 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14338331303770604, + "scoreError" : 0.00393181579501914, + "scoreConfidence" : [ + 0.1394514972426869, + 0.14731512883272518 + ], + "scorePercentiles" : { + "0.0" : 0.1419636853723631, + "50.0" : 0.14338507397679073, + "90.0" : 0.14476720678074062, + "95.0" : 0.14476720678074062, + "99.0" : 0.14476720678074062, + "99.9" : 0.14476720678074062, + "99.99" : 0.14476720678074062, + "99.999" : 0.14476720678074062, + "99.9999" : 0.14476720678074062, + "100.0" : 0.14476720678074062 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14219382243203277, + 0.14216237421812805, + 0.1419636853723631 + ], + [ + 0.14476720678074062, + 0.14457632552154867, + 0.14463646390142312 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40000971326889023, + "scoreError" : 0.008183865357448493, + "scoreConfidence" : [ + 0.39182584791144176, + 0.4081935786263387 + ], + "scorePercentiles" : { + "0.0" : 0.3960343752722664, + "50.0" : 0.40024346185840687, + "90.0" : 0.40336227892061954, + "95.0" : 0.40336227892061954, + "99.0" : 0.40336227892061954, + "99.9" : 0.40336227892061954, + "99.99" : 0.40336227892061954, + "99.999" : 0.40336227892061954, + "99.9999" : 0.40336227892061954, + "100.0" : 0.40336227892061954 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40160596767198103, + 0.39766769924841927, + 0.3960343752722664 + ], + [ + 0.40336227892061954, + 0.40250700245522236, + 0.3988809560448327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1596068760423844, + "scoreError" : 0.001700237433113472, + "scoreConfidence" : [ + 0.15790663860927093, + 0.1613071134754979 + ], + "scorePercentiles" : { + "0.0" : 0.15894328094155794, + "50.0" : 0.15969293815677532, + "90.0" : 0.16056366864152338, + "95.0" : 0.16056366864152338, + "99.0" : 0.16056366864152338, + "99.9" : 0.16056366864152338, + "99.99" : 0.16056366864152338, + "99.999" : 0.16056366864152338, + "99.9999" : 0.16056366864152338, + "100.0" : 0.16056366864152338 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16056366864152338, + 0.15973525842983788, + 0.1589525174288303 + ], + [ + 0.15965061788371276, + 0.1597959129288442, + 0.15894328094155794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047464815792502495, + "scoreError" : 0.00256346544085452, + "scoreConfidence" : [ + 0.044901350351647974, + 0.050028281233357015 + ], + "scorePercentiles" : { + "0.0" : 0.04656481634591655, + "50.0" : 0.047432617883775056, + "90.0" : 0.0484077992467882, + "95.0" : 0.0484077992467882, + "99.0" : 0.0484077992467882, + "99.9" : 0.0484077992467882, + "99.99" : 0.0484077992467882, + "99.999" : 0.0484077992467882, + "99.9999" : 0.0484077992467882, + "100.0" : 0.0484077992467882 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04656481634591655, + 0.046634040244545066, + 0.04670436355059874 + ], + [ + 0.0484077992467882, + 0.048317003150215004, + 0.048160872216951374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8767484.014163809, + "scoreError" : 512112.929789071, + "scoreConfidence" : [ + 8255371.084374738, + 9279596.94395288 + ], + "scorePercentiles" : { + "0.0" : 8514199.70893617, + "50.0" : 8819506.132189628, + "90.0" : 8940381.55227882, + "95.0" : 8940381.55227882, + "99.0" : 8940381.55227882, + "99.9" : 8940381.55227882, + "99.99" : 8940381.55227882, + "99.999" : 8940381.55227882, + "99.9999" : 8940381.55227882, + "100.0" : 8940381.55227882 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8940381.55227882, + 8912671.738201248, + 8913230.288770054 + ], + [ + 8726340.52617801, + 8598080.270618556, + 8514199.70893617 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-14T23:22:42Z-97de42ff192bffc720de50fb9784a9df59119837-jdk17.json b/performance-results/2025-05-14T23:22:42Z-97de42ff192bffc720de50fb9784a9df59119837-jdk17.json new file mode 100644 index 0000000000..6ec497f503 --- /dev/null +++ b/performance-results/2025-05-14T23:22:42Z-97de42ff192bffc720de50fb9784a9df59119837-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3702627691493348, + "scoreError" : 0.04297276945593371, + "scoreConfidence" : [ + 3.327289999693401, + 3.4132355386052686 + ], + "scorePercentiles" : { + "0.0" : 3.361946863749914, + "50.0" : 3.3716923975689124, + "90.0" : 3.3757194177096, + "95.0" : 3.3757194177096, + "99.0" : 3.3757194177096, + "99.9" : 3.3757194177096, + "99.99" : 3.3757194177096, + "99.999" : 3.3757194177096, + "99.9999" : 3.3757194177096, + "100.0" : 3.3757194177096 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.367841821875018, + 3.3757194177096 + ], + [ + 3.361946863749914, + 3.375542973262806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6894510351292862, + "scoreError" : 0.014552270244878223, + "scoreConfidence" : [ + 1.674898764884408, + 1.7040033053741643 + ], + "scorePercentiles" : { + "0.0" : 1.6863027738527496, + "50.0" : 1.6900671054227758, + "90.0" : 1.6913671558188432, + "95.0" : 1.6913671558188432, + "99.0" : 1.6913671558188432, + "99.9" : 1.6913671558188432, + "99.99" : 1.6913671558188432, + "99.999" : 1.6913671558188432, + "99.9999" : 1.6913671558188432, + "100.0" : 1.6913671558188432 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6907274417096398, + 1.6894067691359118 + ], + [ + 1.6863027738527496, + 1.6913671558188432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8592273065068963, + "scoreError" : 0.017420744170110605, + "scoreConfidence" : [ + 0.8418065623367856, + 0.8766480506770069 + ], + "scorePercentiles" : { + "0.0" : 0.8559820123270362, + "50.0" : 0.8592888370850831, + "90.0" : 0.8623495395303827, + "95.0" : 0.8623495395303827, + "99.0" : 0.8623495395303827, + "99.9" : 0.8623495395303827, + "99.99" : 0.8623495395303827, + "99.999" : 0.8623495395303827, + "99.9999" : 0.8623495395303827, + "100.0" : 0.8623495395303827 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8601593118226384, + 0.8584183623475278 + ], + [ + 0.8559820123270362, + 0.8623495395303827 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.49966247377747, + "scoreError" : 0.11404015314928159, + "scoreConfidence" : [ + 16.385622320628187, + 16.613702626926752 + ], + "scorePercentiles" : { + "0.0" : 16.442177606394132, + "50.0" : 16.508308902137315, + "90.0" : 16.545777495693393, + "95.0" : 16.545777495693393, + "99.0" : 16.545777495693393, + "99.9" : 16.545777495693393, + "99.99" : 16.545777495693393, + "99.999" : 16.545777495693393, + "99.9999" : 16.545777495693393, + "100.0" : 16.545777495693393 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.545777495693393, + 16.516747414336816, + 16.532259174580602 + ], + [ + 16.49987038993781, + 16.442177606394132, + 16.461142761722062 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2763.750811951975, + "scoreError" : 39.97685790883956, + "scoreConfidence" : [ + 2723.7739540431353, + 2803.7276698608143 + ], + "scorePercentiles" : { + "0.0" : 2745.3688929093114, + "50.0" : 2765.2758624970647, + "90.0" : 2778.805796493642, + "95.0" : 2778.805796493642, + "99.0" : 2778.805796493642, + "99.9" : 2778.805796493642, + "99.99" : 2778.805796493642, + "99.999" : 2778.805796493642, + "99.9999" : 2778.805796493642, + "100.0" : 2778.805796493642 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2774.139263507648, + 2775.927281843939, + 2778.805796493642 + ], + [ + 2745.3688929093114, + 2751.8511754708275, + 2756.412461486481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77902.17585896842, + "scoreError" : 3170.1260208224653, + "scoreConfidence" : [ + 74732.04983814595, + 81072.30187979089 + ], + "scorePercentiles" : { + "0.0" : 76848.66044059259, + "50.0" : 77885.23228959792, + "90.0" : 79006.12918058524, + "95.0" : 79006.12918058524, + "99.0" : 79006.12918058524, + "99.9" : 79006.12918058524, + "99.99" : 79006.12918058524, + "99.999" : 79006.12918058524, + "99.9999" : 79006.12918058524, + "100.0" : 79006.12918058524 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78875.92273631005, + 79006.12918058524, + 78918.07546186892 + ], + [ + 76848.66044059259, + 76894.5418428858, + 76869.72549156795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 371.4312955749431, + "scoreError" : 11.907841568516718, + "scoreConfidence" : [ + 359.52345400642633, + 383.3391371434598 + ], + "scorePercentiles" : { + "0.0" : 366.3388131755764, + "50.0" : 371.519961731325, + "90.0" : 375.66567546479934, + "95.0" : 375.66567546479934, + "99.0" : 375.66567546479934, + "99.9" : 375.66567546479934, + "99.99" : 375.66567546479934, + "99.999" : 375.66567546479934, + "99.9999" : 375.66567546479934, + "100.0" : 375.66567546479934 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 374.7269425607698, + 375.3410980968168, + 375.66567546479934 + ], + [ + 366.3388131755764, + 368.2022632498159, + 368.3129809018802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 119.00528098496886, + "scoreError" : 4.620284104528436, + "scoreConfidence" : [ + 114.38499688044043, + 123.6255650894973 + ], + "scorePercentiles" : { + "0.0" : 117.42018970841153, + "50.0" : 118.97582396455738, + "90.0" : 120.7091561118185, + "95.0" : 120.7091561118185, + "99.0" : 120.7091561118185, + "99.9" : 120.7091561118185, + "99.99" : 120.7091561118185, + "99.999" : 120.7091561118185, + "99.9999" : 120.7091561118185, + "100.0" : 120.7091561118185 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.43297619747537, + 117.67265287547174, + 117.42018970841153 + ], + [ + 120.278995053643, + 120.7091561118185, + 120.517715962993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060764193957138134, + "scoreError" : 6.267673513787958E-4, + "scoreConfidence" : [ + 0.06013742660575934, + 0.06139096130851693 + ], + "scorePercentiles" : { + "0.0" : 0.06046792128383894, + "50.0" : 0.06075066210136768, + "90.0" : 0.061016569014961074, + "95.0" : 0.061016569014961074, + "99.0" : 0.061016569014961074, + "99.9" : 0.061016569014961074, + "99.99" : 0.061016569014961074, + "99.999" : 0.061016569014961074, + "99.9999" : 0.061016569014961074, + "100.0" : 0.061016569014961074 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060862273133383646, + 0.06098744810362808, + 0.061016569014961074 + ], + [ + 0.06046792128383894, + 0.06061190113766539, + 0.06063905106935172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5157793050781435E-4, + "scoreError" : 1.2317728975975028E-6, + "scoreConfidence" : [ + 3.5034615761021684E-4, + 3.5280970340541187E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5076705821873147E-4, + "50.0" : 3.5170749317529676E-4, + "90.0" : 3.5202164630643334E-4, + "95.0" : 3.5202164630643334E-4, + "99.0" : 3.5202164630643334E-4, + "99.9" : 3.5202164630643334E-4, + "99.99" : 3.5202164630643334E-4, + "99.999" : 3.5202164630643334E-4, + "99.9999" : 3.5202164630643334E-4, + "100.0" : 3.5202164630643334E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5076705821873147E-4, + 3.516479314132526E-4, + 3.5181062842694284E-4 + ], + [ + 3.517670549373409E-4, + 3.5145326374418486E-4, + 3.5202164630643334E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10017210504415941, + "scoreError" : 0.001017140100009089, + "scoreConfidence" : [ + 0.09915496494415033, + 0.1011892451441685 + ], + "scorePercentiles" : { + "0.0" : 0.09976262063427141, + "50.0" : 0.1001800775399842, + "90.0" : 0.10052295692644826, + "95.0" : 0.10052295692644826, + "99.0" : 0.10052295692644826, + "99.9" : 0.10052295692644826, + "99.99" : 0.10052295692644826, + "99.999" : 0.10052295692644826, + "99.9999" : 0.10052295692644826, + "100.0" : 0.10052295692644826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10046018604838061, + 0.10052295692644826, + 0.10051679211354247 + ], + [ + 0.09987010551072584, + 0.09976262063427141, + 0.09989996903158778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012923516489972751, + "scoreError" : 5.5467603433215854E-5, + "scoreConfidence" : [ + 0.012868048886539534, + 0.012978984093405968 + ], + "scorePercentiles" : { + "0.0" : 0.01290104050225636, + "50.0" : 0.012920830054943537, + "90.0" : 0.012946059829579878, + "95.0" : 0.012946059829579878, + "99.0" : 0.012946059829579878, + "99.9" : 0.012946059829579878, + "99.99" : 0.012946059829579878, + "99.999" : 0.012946059829579878, + "99.9999" : 0.012946059829579878, + "100.0" : 0.012946059829579878 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012944956295767958, + 0.012946059829579878, + 0.012931040617164699 + ], + [ + 0.01290104050225636, + 0.012907382202345228, + 0.012910619492722377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9911694515097166, + "scoreError" : 0.01740561343700532, + "scoreConfidence" : [ + 0.9737638380727113, + 1.008575064946722 + ], + "scorePercentiles" : { + "0.0" : 0.9832274800904532, + "50.0" : 0.9911467255657341, + "90.0" : 0.9999467521247876, + "95.0" : 0.9999467521247876, + "99.0" : 0.9999467521247876, + "99.9" : 0.9999467521247876, + "99.99" : 0.9999467521247876, + "99.999" : 0.9999467521247876, + "99.9999" : 0.9999467521247876, + "100.0" : 0.9999467521247876 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9832274800904532, + 0.9869754419224317, + 0.9877305839012346 + ], + [ + 0.9945628672302337, + 0.9999467521247876, + 0.9945735837891596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011088656588665787, + "scoreError" : 9.478057085327789E-4, + "scoreConfidence" : [ + 0.010140850880133008, + 0.012036462297198566 + ], + "scorePercentiles" : { + "0.0" : 0.01076838455077595, + "50.0" : 0.011089013089414474, + "90.0" : 0.011402970298339315, + "95.0" : 0.011402970298339315, + "99.0" : 0.011402970298339315, + "99.9" : 0.011402970298339315, + "99.99" : 0.011402970298339315, + "99.999" : 0.011402970298339315, + "99.9999" : 0.011402970298339315, + "100.0" : 0.011402970298339315 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01076838455077595, + 0.010785549792383439, + 0.010786617354368146 + ], + [ + 0.01139700871166707, + 0.011402970298339315, + 0.011391408824460802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2004652916579146, + "scoreError" : 0.2719705954771019, + "scoreConfidence" : [ + 2.9284946961808127, + 3.4724358871350165 + ], + "scorePercentiles" : { + "0.0" : 3.103641433622829, + "50.0" : 3.2005559044071052, + "90.0" : 3.296763577455504, + "95.0" : 3.296763577455504, + "99.0" : 3.296763577455504, + "99.9" : 3.296763577455504, + "99.99" : 3.296763577455504, + "99.999" : 3.296763577455504, + "99.9999" : 3.296763577455504, + "100.0" : 3.296763577455504 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.288873658119658, + 3.296763577455504, + 3.2805970452459015 + ], + [ + 3.103641433622829, + 3.112401271935283, + 3.1205147635683095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7139550185222148, + "scoreError" : 0.07715827341526325, + "scoreConfidence" : [ + 2.6367967451069516, + 2.791113291937478 + ], + "scorePercentiles" : { + "0.0" : 2.6821136063287745, + "50.0" : 2.715442825177002, + "90.0" : 2.74460473298573, + "95.0" : 2.74460473298573, + "99.0" : 2.74460473298573, + "99.9" : 2.74460473298573, + "99.99" : 2.74460473298573, + "99.999" : 2.74460473298573, + "99.9999" : 2.74460473298573, + "100.0" : 2.74460473298573 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.74460473298573, + 2.7379467054475772, + 2.7325862098360654 + ], + [ + 2.698299440517939, + 2.6821136063287745, + 2.6881794160171997 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17757216552330304, + "scoreError" : 0.004471415576009319, + "scoreConfidence" : [ + 0.17310074994729371, + 0.18204358109931237 + ], + "scorePercentiles" : { + "0.0" : 0.17602356410617476, + "50.0" : 0.17733519749170545, + "90.0" : 0.1798441798906593, + "95.0" : 0.1798441798906593, + "99.0" : 0.1798441798906593, + "99.9" : 0.1798441798906593, + "99.99" : 0.1798441798906593, + "99.999" : 0.1798441798906593, + "99.9999" : 0.1798441798906593, + "100.0" : 0.1798441798906593 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1798441798906593, + 0.17866911597077056, + 0.17834124327216308 + ], + [ + 0.17622573818880294, + 0.17602356410617476, + 0.17632915171124786 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.317578457901899, + "scoreError" : 0.012006776637288224, + "scoreConfidence" : [ + 0.30557168126461076, + 0.3295852345391872 + ], + "scorePercentiles" : { + "0.0" : 0.31331157594460807, + "50.0" : 0.31773150891630086, + "90.0" : 0.32156549419595487, + "95.0" : 0.32156549419595487, + "99.0" : 0.32156549419595487, + "99.9" : 0.32156549419595487, + "99.99" : 0.32156549419595487, + "99.999" : 0.32156549419595487, + "99.9999" : 0.32156549419595487, + "100.0" : 0.32156549419595487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31331157594460807, + 0.31407069027354667, + 0.3136465905469828 + ], + [ + 0.32156549419595487, + 0.32148406889124637, + 0.3213923275590551 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14216086867376182, + "scoreError" : 0.010368065574487804, + "scoreConfidence" : [ + 0.13179280309927402, + 0.15252893424824962 + ], + "scorePercentiles" : { + "0.0" : 0.13855889363058208, + "50.0" : 0.14221082536841728, + "90.0" : 0.14560259804606737, + "95.0" : 0.14560259804606737, + "99.0" : 0.14560259804606737, + "99.9" : 0.14560259804606737, + "99.99" : 0.14560259804606737, + "99.999" : 0.14560259804606737, + "99.9999" : 0.14560259804606737, + "100.0" : 0.14560259804606737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13855889363058208, + 0.13884825309970425, + 0.13895681664952894 + ], + [ + 0.14546483408730562, + 0.14560259804606737, + 0.14553381652938266 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3925621364772381, + "scoreError" : 0.02619736322016944, + "scoreConfidence" : [ + 0.3663647732570686, + 0.41875949969740756 + ], + "scorePercentiles" : { + "0.0" : 0.38082825286568417, + "50.0" : 0.3936383001798788, + "90.0" : 0.40223659464242617, + "95.0" : 0.40223659464242617, + "99.0" : 0.40223659464242617, + "99.9" : 0.40223659464242617, + "99.99" : 0.40223659464242617, + "99.999" : 0.40223659464242617, + "99.9999" : 0.40223659464242617, + "100.0" : 0.40223659464242617 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38872586263458625, + 0.3837258425233107, + 0.38082825286568417 + ], + [ + 0.40223659464242617, + 0.4013055284722501, + 0.39855073772517136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15443369719654837, + "scoreError" : 0.005762011048327298, + "scoreConfidence" : [ + 0.14867168614822107, + 0.16019570824487567 + ], + "scorePercentiles" : { + "0.0" : 0.15249758541234598, + "50.0" : 0.15442639226726965, + "90.0" : 0.15644162202962938, + "95.0" : 0.15644162202962938, + "99.0" : 0.15644162202962938, + "99.9" : 0.15644162202962938, + "99.99" : 0.15644162202962938, + "99.999" : 0.15644162202962938, + "99.9999" : 0.15644162202962938, + "100.0" : 0.15644162202962938 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15252100424000245, + 0.15249758541234598, + 0.15266157675632766 + ], + [ + 0.1562891869627731, + 0.15644162202962938, + 0.15619120777821163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04648785248527262, + "scoreError" : 0.003010632165431645, + "scoreConfidence" : [ + 0.04347722031984097, + 0.049498484650704264 + ], + "scorePercentiles" : { + "0.0" : 0.04540210879514024, + "50.0" : 0.04636408027513523, + "90.0" : 0.047847239045559375, + "95.0" : 0.047847239045559375, + "99.0" : 0.047847239045559375, + "99.9" : 0.047847239045559375, + "99.99" : 0.047847239045559375, + "99.999" : 0.047847239045559375, + "99.9999" : 0.047847239045559375, + "100.0" : 0.047847239045559375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04580121610530462, + 0.045456981776527225, + 0.04540210879514024 + ], + [ + 0.047847239045559375, + 0.04749262474413833, + 0.04692694444496584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8547863.930717023, + "scoreError" : 521245.9431007223, + "scoreConfidence" : [ + 8026617.987616301, + 9069109.873817746 + ], + "scorePercentiles" : { + "0.0" : 8317483.216957606, + "50.0" : 8585747.05313152, + "90.0" : 8727523.605584642, + "95.0" : 8727523.605584642, + "99.0" : 8727523.605584642, + "99.9" : 8727523.605584642, + "99.99" : 8727523.605584642, + "99.999" : 8727523.605584642, + "99.9999" : 8727523.605584642, + "100.0" : 8727523.605584642 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8504309.926020408, + 8346981.887406172, + 8317483.216957606 + ], + [ + 8723700.76809067, + 8727523.605584642, + 8667184.180242633 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-15T02:24:00Z-06377ea866e5dae073d93c86528cda47dc49b7f5-jdk17.json b/performance-results/2025-05-15T02:24:00Z-06377ea866e5dae073d93c86528cda47dc49b7f5-jdk17.json new file mode 100644 index 0000000000..3977352090 --- /dev/null +++ b/performance-results/2025-05-15T02:24:00Z-06377ea866e5dae073d93c86528cda47dc49b7f5-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3416915306963952, + "scoreError" : 0.03779025622733417, + "scoreConfidence" : [ + 3.303901274469061, + 3.3794817869237295 + ], + "scorePercentiles" : { + "0.0" : 3.335327939554456, + "50.0" : 3.3412737980381317, + "90.0" : 3.3488905871548633, + "95.0" : 3.3488905871548633, + "99.0" : 3.3488905871548633, + "99.9" : 3.3488905871548633, + "99.99" : 3.3488905871548633, + "99.999" : 3.3488905871548633, + "99.9999" : 3.3488905871548633, + "100.0" : 3.3488905871548633 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.339045620359447, + 3.3488905871548633 + ], + [ + 3.335327939554456, + 3.343501975716816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.677158532278434, + "scoreError" : 0.040854497915147454, + "scoreConfidence" : [ + 1.6363040343632864, + 1.7180130301935814 + ], + "scorePercentiles" : { + "0.0" : 1.6707938687247332, + "50.0" : 1.6762302818494663, + "90.0" : 1.6853796966900698, + "95.0" : 1.6853796966900698, + "99.0" : 1.6853796966900698, + "99.9" : 1.6853796966900698, + "99.99" : 1.6853796966900698, + "99.999" : 1.6853796966900698, + "99.9999" : 1.6853796966900698, + "100.0" : 1.6853796966900698 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6784768172480575, + 1.6853796966900698 + ], + [ + 1.6707938687247332, + 1.673983746450875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.848086188458516, + "scoreError" : 0.017439862559141785, + "scoreConfidence" : [ + 0.8306463258993743, + 0.8655260510176578 + ], + "scorePercentiles" : { + "0.0" : 0.8442640292571827, + "50.0" : 0.8489191292997078, + "90.0" : 0.850242465977466, + "95.0" : 0.850242465977466, + "99.0" : 0.850242465977466, + "99.9" : 0.850242465977466, + "99.99" : 0.850242465977466, + "99.999" : 0.850242465977466, + "99.9999" : 0.850242465977466, + "100.0" : 0.850242465977466 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8496953913821156, + 0.850242465977466 + ], + [ + 0.8442640292571827, + 0.8481428672173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.017400794726104, + "scoreError" : 0.5672344061708663, + "scoreConfidence" : [ + 15.450166388555237, + 16.58463520089697 + ], + "scorePercentiles" : { + "0.0" : 15.825692291569359, + "50.0" : 16.00304025020426, + "90.0" : 16.230984293464935, + "95.0" : 16.230984293464935, + "99.0" : 16.230984293464935, + "99.9" : 16.230984293464935, + "99.99" : 16.230984293464935, + "99.999" : 16.230984293464935, + "99.9999" : 16.230984293464935, + "100.0" : 16.230984293464935 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.841025856790624, + 15.834698542176094, + 15.825692291569359 + ], + [ + 16.165054643617896, + 16.230984293464935, + 16.206949140737724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2583.4399970202944, + "scoreError" : 136.3379185593203, + "scoreConfidence" : [ + 2447.102078460974, + 2719.7779155796147 + ], + "scorePercentiles" : { + "0.0" : 2536.201048188304, + "50.0" : 2581.72340042013, + "90.0" : 2633.8071638746346, + "95.0" : 2633.8071638746346, + "99.0" : 2633.8071638746346, + "99.9" : 2633.8071638746346, + "99.99" : 2633.8071638746346, + "99.999" : 2633.8071638746346, + "99.9999" : 2633.8071638746346, + "100.0" : 2633.8071638746346 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2540.118744544158, + 2541.319218812213, + 2536.201048188304 + ], + [ + 2627.066224674409, + 2622.127582028047, + 2633.8071638746346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77007.68857457419, + "scoreError" : 2948.0850161172443, + "scoreConfidence" : [ + 74059.60355845695, + 79955.77359069143 + ], + "scorePercentiles" : { + "0.0" : 76048.4734445912, + "50.0" : 76941.03743983922, + "90.0" : 78125.00220309968, + "95.0" : 78125.00220309968, + "99.0" : 78125.00220309968, + "99.9" : 78125.00220309968, + "99.99" : 78125.00220309968, + "99.999" : 78125.00220309968, + "99.9999" : 78125.00220309968, + "100.0" : 78125.00220309968 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76048.4734445912, + 76057.06375275661, + 76050.34944947324 + ], + [ + 77940.23147060264, + 77825.01112692182, + 78125.00220309968 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.94202980014825, + "scoreError" : 21.972459091390952, + "scoreConfidence" : [ + 334.9695707087573, + 378.9144888915392 + ], + "scorePercentiles" : { + "0.0" : 348.3530476873264, + "50.0" : 357.2129490947517, + "90.0" : 364.5935261315126, + "95.0" : 364.5935261315126, + "99.0" : 364.5935261315126, + "99.9" : 364.5935261315126, + "99.99" : 364.5935261315126, + "99.999" : 364.5935261315126, + "99.9999" : 364.5935261315126, + "100.0" : 364.5935261315126 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 348.3530476873264, + 350.1778494651143, + 350.98790579913714 + ], + [ + 363.43799239036633, + 364.1018573274324, + 364.5935261315126 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.50140773119368, + "scoreError" : 4.338509547319294, + "scoreConfidence" : [ + 109.16289818387439, + 117.83991727851297 + ], + "scorePercentiles" : { + "0.0" : 111.34964722185775, + "50.0" : 113.63132500961723, + "90.0" : 115.2533591323223, + "95.0" : 115.2533591323223, + "99.0" : 115.2533591323223, + "99.9" : 115.2533591323223, + "99.99" : 115.2533591323223, + "99.999" : 115.2533591323223, + "99.9999" : 115.2533591323223, + "100.0" : 115.2533591323223 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.74883282989792, + 114.48360196416938, + 115.2533591323223 + ], + [ + 111.34964722185775, + 112.3939571838496, + 112.77904805506509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06212820909531347, + "scoreError" : 3.318097579313472E-4, + "scoreConfidence" : [ + 0.061796399337382124, + 0.062460018853244814 + ], + "scorePercentiles" : { + "0.0" : 0.06198472309275283, + "50.0" : 0.062100782046607295, + "90.0" : 0.0623046943191447, + "95.0" : 0.0623046943191447, + "99.0" : 0.0623046943191447, + "99.9" : 0.0623046943191447, + "99.99" : 0.0623046943191447, + "99.999" : 0.0623046943191447, + "99.9999" : 0.0623046943191447, + "100.0" : 0.0623046943191447 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062223889217979986, + 0.0623046943191447, + 0.06213365500851217 + ], + [ + 0.06198472309275283, + 0.06206790908470242, + 0.062054383848788724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8807399822264583E-4, + "scoreError" : 3.2063021521749736E-5, + "scoreConfidence" : [ + 3.560109767008961E-4, + 4.201370197443956E-4 + ], + "scorePercentiles" : { + "0.0" : 3.76835829749135E-4, + "50.0" : 3.87822918252944E-4, + "90.0" : 3.993693133005046E-4, + "95.0" : 3.993693133005046E-4, + "99.0" : 3.993693133005046E-4, + "99.9" : 3.993693133005046E-4, + "99.99" : 3.993693133005046E-4, + "99.999" : 3.993693133005046E-4, + "99.9999" : 3.993693133005046E-4, + "100.0" : 3.993693133005046E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7830526666293913E-4, + 3.76835829749135E-4, + 3.7784655983883635E-4 + ], + [ + 3.973405698429489E-4, + 3.993693133005046E-4, + 3.987464499415107E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1020710582835004, + "scoreError" : 2.827373090958066E-4, + "scoreConfidence" : [ + 0.10178832097440459, + 0.1023537955925962 + ], + "scorePercentiles" : { + "0.0" : 0.10195060061780628, + "50.0" : 0.1020752703567501, + "90.0" : 0.10220569794775357, + "95.0" : 0.10220569794775357, + "99.0" : 0.10220569794775357, + "99.9" : 0.10220569794775357, + "99.99" : 0.10220569794775357, + "99.999" : 0.10220569794775357, + "99.9999" : 0.10220569794775357, + "100.0" : 0.10220569794775357 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10210032208563903, + 0.10196852419165707, + 0.10220569794775357 + ], + [ + 0.1021509862302852, + 0.10205021862786118, + 0.10195060061780628 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012876698380756146, + "scoreError" : 4.288452609247336E-4, + "scoreConfidence" : [ + 0.012447853119831412, + 0.01330554364168088 + ], + "scorePercentiles" : { + "0.0" : 0.012731721089821122, + "50.0" : 0.012875197276563933, + "90.0" : 0.013023269628724765, + "95.0" : 0.013023269628724765, + "99.0" : 0.013023269628724765, + "99.9" : 0.013023269628724765, + "99.99" : 0.013023269628724765, + "99.999" : 0.013023269628724765, + "99.9999" : 0.013023269628724765, + "100.0" : 0.013023269628724765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013023269628724765, + 0.013008591062176335, + 0.013016764649069257 + ], + [ + 0.012731721089821122, + 0.01273804036379385, + 0.012741803490951532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0245459669121153, + "scoreError" : 0.048649310600998, + "scoreConfidence" : [ + 0.9758966563111173, + 1.0731952775131133 + ], + "scorePercentiles" : { + "0.0" : 1.0086042168431668, + "50.0" : 1.0230384311861536, + "90.0" : 1.0457039351735675, + "95.0" : 1.0457039351735675, + "99.0" : 1.0457039351735675, + "99.9" : 1.0457039351735675, + "99.99" : 1.0457039351735675, + "99.999" : 1.0457039351735675, + "99.9999" : 1.0457039351735675, + "100.0" : 1.0457039351735675 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0086042168431668, + 1.0096132381625442, + 1.008686192253379 + ], + [ + 1.0364636242097627, + 1.0457039351735675, + 1.038204594830271 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011292868346502456, + "scoreError" : 6.926357956585544E-4, + "scoreConfidence" : [ + 0.010600232550843901, + 0.011985504142161011 + ], + "scorePercentiles" : { + "0.0" : 0.011064454028456993, + "50.0" : 0.011291916264649218, + "90.0" : 0.011523494943628603, + "95.0" : 0.011523494943628603, + "99.0" : 0.011523494943628603, + "99.9" : 0.011523494943628603, + "99.99" : 0.011523494943628603, + "99.999" : 0.011523494943628603, + "99.9999" : 0.011523494943628603, + "100.0" : 0.011523494943628603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011072578049812104, + 0.011064454028456993, + 0.011065267172852729 + ], + [ + 0.011520161404777978, + 0.011523494943628603, + 0.011511254479486335 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.351669076554213, + "scoreError" : 0.24194605910437733, + "scoreConfidence" : [ + 3.1097230174498356, + 3.5936151356585904 + ], + "scorePercentiles" : { + "0.0" : 3.270666040549379, + "50.0" : 3.337274007152349, + "90.0" : 3.4503669055172415, + "95.0" : 3.4503669055172415, + "99.0" : 3.4503669055172415, + "99.9" : 3.4503669055172415, + "99.99" : 3.4503669055172415, + "99.999" : 3.4503669055172415, + "99.9999" : 3.4503669055172415, + "100.0" : 3.4503669055172415 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.44044342434663, + 3.4503669055172415, + 3.394673246435845 + ], + [ + 3.270666040549379, + 3.2798747678688525, + 3.27399007460733 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8743357161158207, + "scoreError" : 0.0839359983240515, + "scoreConfidence" : [ + 2.7903997177917694, + 2.958271714439872 + ], + "scorePercentiles" : { + "0.0" : 2.8410853928977273, + "50.0" : 2.8755319907158965, + "90.0" : 2.9123876371578334, + "95.0" : 2.9123876371578334, + "99.0" : 2.9123876371578334, + "99.9" : 2.9123876371578334, + "99.99" : 2.9123876371578334, + "99.999" : 2.9123876371578334, + "99.9999" : 2.9123876371578334, + "100.0" : 2.9123876371578334 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8410853928977273, + 2.843821853284049, + 2.860558034610984 + ], + [ + 2.8905059468208094, + 2.9123876371578334, + 2.8976554319235226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18282321170451432, + "scoreError" : 0.008593276045994714, + "scoreConfidence" : [ + 0.1742299356585196, + 0.19141648775050904 + ], + "scorePercentiles" : { + "0.0" : 0.17948118482689304, + "50.0" : 0.1829765233969919, + "90.0" : 0.18574667394776923, + "95.0" : 0.18574667394776923, + "99.0" : 0.18574667394776923, + "99.9" : 0.18574667394776923, + "99.99" : 0.18574667394776923, + "99.999" : 0.18574667394776923, + "99.9999" : 0.18574667394776923, + "100.0" : 0.18574667394776923 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18574667394776923, + 0.1854646528004451, + 0.1855997972383586 + ], + [ + 0.18015856742008104, + 0.18048839399353872, + 0.17948118482689304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3126876084849364, + "scoreError" : 0.026803395973569934, + "scoreConfidence" : [ + 0.2858842125113664, + 0.33949100445850633 + ], + "scorePercentiles" : { + "0.0" : 0.30367397646594396, + "50.0" : 0.31226506203567717, + "90.0" : 0.32340690065325656, + "95.0" : 0.32340690065325656, + "99.0" : 0.32340690065325656, + "99.9" : 0.32340690065325656, + "99.99" : 0.32340690065325656, + "99.999" : 0.32340690065325656, + "99.9999" : 0.32340690065325656, + "100.0" : 0.32340690065325656 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3042344764831153, + 0.30367397646594396, + 0.3041655567248616 + ], + [ + 0.32340690065325656, + 0.3202956475882391, + 0.3203490929942019 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14161281355510572, + "scoreError" : 0.011112042472218722, + "scoreConfidence" : [ + 0.130500771082887, + 0.15272485602732444 + ], + "scorePercentiles" : { + "0.0" : 0.13806423673238347, + "50.0" : 0.14019122286007996, + "90.0" : 0.14757952985449072, + "95.0" : 0.14757952985449072, + "99.0" : 0.14757952985449072, + "99.9" : 0.14757952985449072, + "99.99" : 0.14757952985449072, + "99.999" : 0.14757952985449072, + "99.9999" : 0.14757952985449072, + "100.0" : 0.14757952985449072 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13806423673238347, + 0.13868429644422256, + 0.1385355396411997 + ], + [ + 0.14757952985449072, + 0.14511512938240073, + 0.14169814927593732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3969469360522522, + "scoreError" : 0.015809864974863672, + "scoreConfidence" : [ + 0.3811370710773885, + 0.41275680102711587 + ], + "scorePercentiles" : { + "0.0" : 0.39084212037362726, + "50.0" : 0.39715000882084267, + "90.0" : 0.40212955786553, + "95.0" : 0.40212955786553, + "99.0" : 0.40212955786553, + "99.9" : 0.40212955786553, + "99.99" : 0.40212955786553, + "99.999" : 0.40212955786553, + "99.9999" : 0.40212955786553, + "100.0" : 0.40212955786553 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40212955786553, + 0.4019619879818321, + 0.40211811343439624 + ], + [ + 0.392291806998274, + 0.39233802965985326, + 0.39084212037362726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15805057070175219, + "scoreError" : 0.0018526366231976913, + "scoreConfidence" : [ + 0.1561979340785545, + 0.15990320732494986 + ], + "scorePercentiles" : { + "0.0" : 0.157346220250177, + "50.0" : 0.15789600243461305, + "90.0" : 0.15925193231945217, + "95.0" : 0.15925193231945217, + "99.0" : 0.15925193231945217, + "99.9" : 0.15925193231945217, + "99.99" : 0.15925193231945217, + "99.999" : 0.15925193231945217, + "99.9999" : 0.15925193231945217, + "100.0" : 0.15925193231945217 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1580120173808621, + 0.15823111662974684, + 0.15777998748836403 + ], + [ + 0.15925193231945217, + 0.15768215014191106, + 0.157346220250177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04766036399767399, + "scoreError" : 0.0016132330914923442, + "scoreConfidence" : [ + 0.04604713090618164, + 0.049273597089166336 + ], + "scorePercentiles" : { + "0.0" : 0.04706348164550409, + "50.0" : 0.04767556046906954, + "90.0" : 0.04835791123576489, + "95.0" : 0.04835791123576489, + "99.0" : 0.04835791123576489, + "99.9" : 0.04835791123576489, + "99.99" : 0.04835791123576489, + "99.999" : 0.04835791123576489, + "99.9999" : 0.04835791123576489, + "100.0" : 0.04835791123576489 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047278492331549384, + 0.04710107312788195, + 0.04706348164550409 + ], + [ + 0.04807262860658969, + 0.04808859703875395, + 0.04835791123576489 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8895570.16801502, + "scoreError" : 959801.5388019746, + "scoreConfidence" : [ + 7935768.629213045, + 9855371.706816994 + ], + "scorePercentiles" : { + "0.0" : 8550969.638461538, + "50.0" : 8902102.206025003, + "90.0" : 9216937.69953917, + "95.0" : 9216937.69953917, + "99.0" : 9216937.69953917, + "99.9" : 9216937.69953917, + "99.99" : 9216937.69953917, + "99.999" : 9216937.69953917, + "99.9999" : 9216937.69953917, + "100.0" : 9216937.69953917 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8594540.370274914, + 8550969.638461538, + 8605299.622527946 + ], + [ + 9206768.88776449, + 9216937.69953917, + 9198904.78952206 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-15T05:33:06Z-397c0502311d65d01eff00427ad686b0cb760d1f-jdk17.json b/performance-results/2025-05-15T05:33:06Z-397c0502311d65d01eff00427ad686b0cb760d1f-jdk17.json new file mode 100644 index 0000000000..0437c76d74 --- /dev/null +++ b/performance-results/2025-05-15T05:33:06Z-397c0502311d65d01eff00427ad686b0cb760d1f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3576310671127927, + "scoreError" : 0.0415843019176757, + "scoreConfidence" : [ + 3.316046765195117, + 3.3992153690304683 + ], + "scorePercentiles" : { + "0.0" : 3.352924776868835, + "50.0" : 3.355520383353268, + "90.0" : 3.366558724875801, + "95.0" : 3.366558724875801, + "99.0" : 3.366558724875801, + "99.9" : 3.366558724875801, + "99.99" : 3.366558724875801, + "99.999" : 3.366558724875801, + "99.9999" : 3.366558724875801, + "100.0" : 3.366558724875801 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3529248264663556, + 3.366558724875801 + ], + [ + 3.352924776868835, + 3.3581159402401806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6869758484194564, + "scoreError" : 0.05887312740784853, + "scoreConfidence" : [ + 1.628102721011608, + 1.7458489758273048 + ], + "scorePercentiles" : { + "0.0" : 1.6789235655274242, + "50.0" : 1.6863198084235946, + "90.0" : 1.6963402113032116, + "95.0" : 1.6963402113032116, + "99.0" : 1.6963402113032116, + "99.9" : 1.6963402113032116, + "99.99" : 1.6963402113032116, + "99.999" : 1.6963402113032116, + "99.9999" : 1.6963402113032116, + "100.0" : 1.6963402113032116 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6789235655274242, + 1.679405250208656 + ], + [ + 1.6963402113032116, + 1.6932343666385332 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8484962994249471, + "scoreError" : 0.0173525274587443, + "scoreConfidence" : [ + 0.8311437719662028, + 0.8658488268836914 + ], + "scorePercentiles" : { + "0.0" : 0.8456034309121245, + "50.0" : 0.8483122837075049, + "90.0" : 0.8517571993726539, + "95.0" : 0.8517571993726539, + "99.0" : 0.8517571993726539, + "99.9" : 0.8517571993726539, + "99.99" : 0.8517571993726539, + "99.999" : 0.8517571993726539, + "99.9999" : 0.8517571993726539, + "100.0" : 0.8517571993726539 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8456034309121245, + 0.8471802510508805 + ], + [ + 0.8494443163641293, + 0.8517571993726539 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.162875942385373, + "scoreError" : 0.12017514291829039, + "scoreConfidence" : [ + 16.04270079946708, + 16.283051085303665 + ], + "scorePercentiles" : { + "0.0" : 16.103487940169302, + "50.0" : 16.156871631066572, + "90.0" : 16.218051256756606, + "95.0" : 16.218051256756606, + "99.0" : 16.218051256756606, + "99.9" : 16.218051256756606, + "99.99" : 16.218051256756606, + "99.999" : 16.218051256756606, + "99.9999" : 16.218051256756606, + "100.0" : 16.218051256756606 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.103487940169302, + 16.218051256756606, + 16.201746061933097 + ], + [ + 16.17293104757061, + 16.140812214562533, + 16.140227133320085 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2660.167998901377, + "scoreError" : 271.93438150159545, + "scoreConfidence" : [ + 2388.2336173997815, + 2932.1023804029724 + ], + "scorePercentiles" : { + "0.0" : 2541.3364723384466, + "50.0" : 2668.160664662356, + "90.0" : 2750.2637248650417, + "95.0" : 2750.2637248650417, + "99.0" : 2750.2637248650417, + "99.9" : 2750.2637248650417, + "99.99" : 2750.2637248650417, + "99.999" : 2750.2637248650417, + "99.9999" : 2750.2637248650417, + "100.0" : 2750.2637248650417 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2750.2637248650417, + 2743.064737291189, + 2748.2491888664035 + ], + [ + 2593.2565920335223, + 2541.3364723384466, + 2584.837278013655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76506.69845297885, + "scoreError" : 2766.9181687214473, + "scoreConfidence" : [ + 73739.7802842574, + 79273.61662170029 + ], + "scorePercentiles" : { + "0.0" : 75405.31480946892, + "50.0" : 76525.0593393334, + "90.0" : 77498.30489470302, + "95.0" : 77498.30489470302, + "99.0" : 77498.30489470302, + "99.9" : 77498.30489470302, + "99.99" : 77498.30489470302, + "99.999" : 77498.30489470302, + "99.9999" : 77498.30489470302, + "100.0" : 77498.30489470302 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77249.91068356884, + 77442.52836731783, + 77498.30489470302 + ], + [ + 75800.20799509795, + 75643.92396771653, + 75405.31480946892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.7352574794391, + "scoreError" : 10.603132736480525, + "scoreConfidence" : [ + 344.1321247429586, + 365.3383902159196 + ], + "scorePercentiles" : { + "0.0" : 348.537146936998, + "50.0" : 354.7675971787069, + "90.0" : 359.6472243233259, + "95.0" : 359.6472243233259, + "99.0" : 359.6472243233259, + "99.9" : 359.6472243233259, + "99.99" : 359.6472243233259, + "99.999" : 359.6472243233259, + "99.9999" : 359.6472243233259, + "100.0" : 359.6472243233259 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.00698218738137, + 348.537146936998, + 357.22181496852437 + ], + [ + 353.47016429037257, + 355.5282121700325, + 359.6472243233259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.72517238154826, + "scoreError" : 2.8658123465032697, + "scoreConfidence" : [ + 114.85936003504499, + 120.59098472805154 + ], + "scorePercentiles" : { + "0.0" : 116.91119632460001, + "50.0" : 117.20478092604213, + "90.0" : 119.30623538036792, + "95.0" : 119.30623538036792, + "99.0" : 119.30623538036792, + "99.9" : 119.30623538036792, + "99.99" : 119.30623538036792, + "99.999" : 119.30623538036792, + "99.9999" : 119.30623538036792, + "100.0" : 119.30623538036792 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.3196170096426, + 119.30623538036792, + 118.71478543483884 + ], + [ + 117.08994484244168, + 117.00925529739848, + 116.91119632460001 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061822297005635775, + "scoreError" : 0.0019075267653216393, + "scoreConfidence" : [ + 0.059914770240314136, + 0.06372982377095741 + ], + "scorePercentiles" : { + "0.0" : 0.06108622431202468, + "50.0" : 0.06171337632035827, + "90.0" : 0.06290883672403814, + "95.0" : 0.06290883672403814, + "99.0" : 0.06290883672403814, + "99.9" : 0.06290883672403814, + "99.99" : 0.06290883672403814, + "99.999" : 0.06290883672403814, + "99.9999" : 0.06290883672403814, + "100.0" : 0.06290883672403814 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062248457164377, + 0.06290883672403814, + 0.06190533423507636 + ], + [ + 0.06108622431202468, + 0.061263511192658306, + 0.06152141840564018 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8376115104972285E-4, + "scoreError" : 1.1427849771660066E-5, + "scoreConfidence" : [ + 3.723333012780628E-4, + 3.951890008213829E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7898194232727597E-4, + "50.0" : 3.8442046429865064E-4, + "90.0" : 3.877544257638569E-4, + "95.0" : 3.877544257638569E-4, + "99.0" : 3.877544257638569E-4, + "99.9" : 3.877544257638569E-4, + "99.99" : 3.877544257638569E-4, + "99.999" : 3.877544257638569E-4, + "99.9999" : 3.877544257638569E-4, + "100.0" : 3.877544257638569E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8672475016956993E-4, + 3.875334787626185E-4, + 3.877544257638569E-4 + ], + [ + 3.794561308472842E-4, + 3.821161784277313E-4, + 3.7898194232727597E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10580525988515939, + "scoreError" : 0.010719114943689476, + "scoreConfidence" : [ + 0.09508614494146991, + 0.11652437482884886 + ], + "scorePercentiles" : { + "0.0" : 0.10202988230012651, + "50.0" : 0.10576612512381728, + "90.0" : 0.1096183773731749, + "95.0" : 0.1096183773731749, + "99.0" : 0.1096183773731749, + "99.9" : 0.1096183773731749, + "99.99" : 0.1096183773731749, + "99.999" : 0.1096183773731749, + "99.9999" : 0.1096183773731749, + "100.0" : 0.1096183773731749 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.10253038448130908, + 0.10241071968703916, + 0.10202988230012651 + ], + [ + 0.10924032970298111, + 0.10900186576632549, + 0.1096183773731749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012883102219746435, + "scoreError" : 1.086865344011196E-4, + "scoreConfidence" : [ + 0.012774415685345316, + 0.012991788754147554 + ], + "scorePercentiles" : { + "0.0" : 0.012841585523113886, + "50.0" : 0.012874251483095196, + "90.0" : 0.012943166010887658, + "95.0" : 0.012943166010887658, + "99.0" : 0.012943166010887658, + "99.9" : 0.012943166010887658, + "99.99" : 0.012943166010887658, + "99.999" : 0.012943166010887658, + "99.9999" : 0.012943166010887658, + "100.0" : 0.012943166010887658 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012943166010887658, + 0.012875831319576956, + 0.012872671646613435 + ], + [ + 0.012850915788959654, + 0.012841585523113886, + 0.012914443029327025 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9854996139058468, + "scoreError" : 0.01478742843482547, + "scoreConfidence" : [ + 0.9707121854710213, + 1.0002870423406722 + ], + "scorePercentiles" : { + "0.0" : 0.9776837813080458, + "50.0" : 0.9870169350998195, + "90.0" : 0.9915657243704145, + "95.0" : 0.9915657243704145, + "99.0" : 0.9915657243704145, + "99.9" : 0.9915657243704145, + "99.99" : 0.9915657243704145, + "99.999" : 0.9915657243704145, + "99.9999" : 0.9915657243704145, + "100.0" : 0.9915657243704145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9776837813080458, + 0.9889259861564323, + 0.9807883214005493 + ], + [ + 0.9858735241522082, + 0.9881603460474309, + 0.9915657243704145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01101034730368723, + "scoreError" : 4.29639234261356E-4, + "scoreConfidence" : [ + 0.010580708069425874, + 0.011439986537948586 + ], + "scorePercentiles" : { + "0.0" : 0.010761404310040548, + "50.0" : 0.011083609726920362, + "90.0" : 0.01113375885886822, + "95.0" : 0.01113375885886822, + "99.0" : 0.01113375885886822, + "99.9" : 0.01113375885886822, + "99.99" : 0.01113375885886822, + "99.999" : 0.01113375885886822, + "99.9999" : 0.01113375885886822, + "100.0" : 0.01113375885886822 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011120535529212909, + 0.01113375885886822, + 0.011077128610482195 + ], + [ + 0.010879165670160965, + 0.010761404310040548, + 0.01109009084335853 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.345838720085373, + "scoreError" : 0.105625257319342, + "scoreConfidence" : [ + 3.240213462766031, + 3.4514639774047153 + ], + "scorePercentiles" : { + "0.0" : 3.278457878112713, + "50.0" : 3.352372825858927, + "90.0" : 3.3933336635006786, + "95.0" : 3.3933336635006786, + "99.0" : 3.3933336635006786, + "99.9" : 3.3933336635006786, + "99.99" : 3.3933336635006786, + "99.999" : 3.3933336635006786, + "99.9999" : 3.3933336635006786, + "100.0" : 3.3933336635006786 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3398369586114818, + 3.354854007377599, + 3.3586581685695096 + ], + [ + 3.3498916443402544, + 3.3933336635006786, + 3.278457878112713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.799416641417924, + "scoreError" : 0.05761662646448499, + "scoreConfidence" : [ + 2.741800014953439, + 2.857033267882409 + ], + "scorePercentiles" : { + "0.0" : 2.767933941599779, + "50.0" : 2.8004025858936226, + "90.0" : 2.8272792108535896, + "95.0" : 2.8272792108535896, + "99.0" : 2.8272792108535896, + "99.9" : 2.8272792108535896, + "99.99" : 2.8272792108535896, + "99.999" : 2.8272792108535896, + "99.9999" : 2.8272792108535896, + "100.0" : 2.8272792108535896 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.767933941599779, + 2.787698459587514, + 2.8039675901317636 + ], + [ + 2.812783064679415, + 2.796837581655481, + 2.8272792108535896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.180852914552783, + "scoreError" : 0.012798413822687834, + "scoreConfidence" : [ + 0.16805450073009515, + 0.19365132837547083 + ], + "scorePercentiles" : { + "0.0" : 0.17619229721444052, + "50.0" : 0.18067314763750955, + "90.0" : 0.18551996150563965, + "95.0" : 0.18551996150563965, + "99.0" : 0.18551996150563965, + "99.9" : 0.18551996150563965, + "99.99" : 0.18551996150563965, + "99.999" : 0.18551996150563965, + "99.9999" : 0.18551996150563965, + "100.0" : 0.18551996150563965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18520264418393614, + 0.18425725998194314, + 0.18551996150563965 + ], + [ + 0.17685628913766271, + 0.17708903529307596, + 0.17619229721444052 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32733455267693395, + "scoreError" : 0.008499350373305967, + "scoreConfidence" : [ + 0.318835202303628, + 0.3358339030502399 + ], + "scorePercentiles" : { + "0.0" : 0.32502584334373374, + "50.0" : 0.3263787826415744, + "90.0" : 0.3330953996402638, + "95.0" : 0.3330953996402638, + "99.0" : 0.3330953996402638, + "99.9" : 0.3330953996402638, + "99.99" : 0.3330953996402638, + "99.999" : 0.3330953996402638, + "99.9999" : 0.3330953996402638, + "100.0" : 0.3330953996402638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3330953996402638, + 0.32502584334373374, + 0.326137314678929 + ], + [ + 0.32802806278291674, + 0.32510044501154056, + 0.32662025060421973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.144662571972952, + "scoreError" : 0.003921182810745997, + "scoreConfidence" : [ + 0.140741389162206, + 0.14858375478369798 + ], + "scorePercentiles" : { + "0.0" : 0.1419665936457461, + "50.0" : 0.14495787474025662, + "90.0" : 0.1460983882306535, + "95.0" : 0.1460983882306535, + "99.0" : 0.1460983882306535, + "99.9" : 0.1460983882306535, + "99.99" : 0.1460983882306535, + "99.999" : 0.1460983882306535, + "99.9999" : 0.1460983882306535, + "100.0" : 0.1460983882306535 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1460983882306535, + 0.14514985444728287, + 0.14498713946036856 + ], + [ + 0.14492861002014465, + 0.1419665936457461, + 0.14484484603351633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4071434480112923, + "scoreError" : 0.006497629960740587, + "scoreConfidence" : [ + 0.4006458180505517, + 0.4136410779720329 + ], + "scorePercentiles" : { + "0.0" : 0.4049782277071353, + "50.0" : 0.40629956871338696, + "90.0" : 0.41040625395001434, + "95.0" : 0.41040625395001434, + "99.0" : 0.41040625395001434, + "99.9" : 0.41040625395001434, + "99.99" : 0.41040625395001434, + "99.999" : 0.41040625395001434, + "99.9999" : 0.41040625395001434, + "100.0" : 0.41040625395001434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4058837990096599, + 0.4052514200672691, + 0.4049782277071353 + ], + [ + 0.40671533841711405, + 0.40962564891656084, + 0.41040625395001434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16152343348339, + "scoreError" : 0.00777651056117432, + "scoreConfidence" : [ + 0.15374692292221567, + 0.1692999440445643 + ], + "scorePercentiles" : { + "0.0" : 0.1587053428766406, + "50.0" : 0.1615866547872588, + "90.0" : 0.16416808761532653, + "95.0" : 0.16416808761532653, + "99.0" : 0.16416808761532653, + "99.9" : 0.16416808761532653, + "99.99" : 0.16416808761532653, + "99.999" : 0.16416808761532653, + "99.9999" : 0.16416808761532653, + "100.0" : 0.16416808761532653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15933769790637647, + 0.1587053428766406, + 0.15895926208453212 + ], + [ + 0.16383561166814115, + 0.16413459874932296, + 0.16416808761532653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047829370874426104, + "scoreError" : 0.0019315818173346485, + "scoreConfidence" : [ + 0.04589778905709146, + 0.04976095269176075 + ], + "scorePercentiles" : { + "0.0" : 0.04717973539222208, + "50.0" : 0.0477591693389282, + "90.0" : 0.04867519937988873, + "95.0" : 0.04867519937988873, + "99.0" : 0.04867519937988873, + "99.9" : 0.04867519937988873, + "99.99" : 0.04867519937988873, + "99.999" : 0.04867519937988873, + "99.9999" : 0.04867519937988873, + "100.0" : 0.04867519937988873 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04719124506505212, + 0.047269914069627286, + 0.04717973539222208 + ], + [ + 0.04867519937988873, + 0.04824842460822912, + 0.04841170673153729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8633026.465523541, + "scoreError" : 252320.6805427409, + "scoreConfidence" : [ + 8380705.7849808, + 8885347.146066282 + ], + "scorePercentiles" : { + "0.0" : 8538413.633105801, + "50.0" : 8599622.056032673, + "90.0" : 8780030.765789473, + "95.0" : 8780030.765789473, + "99.0" : 8780030.765789473, + "99.9" : 8780030.765789473, + "99.99" : 8780030.765789473, + "99.999" : 8780030.765789473, + "99.9999" : 8780030.765789473, + "100.0" : 8780030.765789473 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8579003.468267582, + 8538413.633105801, + 8606174.22203098 + ], + [ + 8780030.765789473, + 8701466.813913044, + 8593069.890034365 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-15T06:54:22Z-abb2cddba09331511de89f1ea7215a576c2ec53e-jdk17.json b/performance-results/2025-05-15T06:54:22Z-abb2cddba09331511de89f1ea7215a576c2ec53e-jdk17.json new file mode 100644 index 0000000000..924abe6b17 --- /dev/null +++ b/performance-results/2025-05-15T06:54:22Z-abb2cddba09331511de89f1ea7215a576c2ec53e-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.37195428995437, + "scoreError" : 0.03656795654922715, + "scoreConfidence" : [ + 3.335386333405143, + 3.408522246503597 + ], + "scorePercentiles" : { + "0.0" : 3.364809599446622, + "50.0" : 3.3727481981213208, + "90.0" : 3.3775111641282174, + "95.0" : 3.3775111641282174, + "99.0" : 3.3775111641282174, + "99.9" : 3.3775111641282174, + "99.99" : 3.3775111641282174, + "99.999" : 3.3775111641282174, + "99.9999" : 3.3775111641282174, + "100.0" : 3.3775111641282174 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.364809599446622, + 3.3752863561549433 + ], + [ + 3.3702100400876986, + 3.3775111641282174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7053908831308398, + "scoreError" : 0.03334444870194397, + "scoreConfidence" : [ + 1.672046434428896, + 1.7387353318327836 + ], + "scorePercentiles" : { + "0.0" : 1.6986567178951304, + "50.0" : 1.706226771460252, + "90.0" : 1.710453271707724, + "95.0" : 1.710453271707724, + "99.0" : 1.710453271707724, + "99.9" : 1.710453271707724, + "99.99" : 1.710453271707724, + "99.999" : 1.710453271707724, + "99.9999" : 1.710453271707724, + "100.0" : 1.710453271707724 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.710453271707724, + 1.7081639626013112 + ], + [ + 1.6986567178951304, + 1.7042895803191926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8583783088895638, + "scoreError" : 0.020219181369093637, + "scoreConfidence" : [ + 0.8381591275204702, + 0.8785974902586574 + ], + "scorePercentiles" : { + "0.0" : 0.8560231000108657, + "50.0" : 0.8573746604752659, + "90.0" : 0.8627408145968576, + "95.0" : 0.8627408145968576, + "99.0" : 0.8627408145968576, + "99.9" : 0.8627408145968576, + "99.99" : 0.8627408145968576, + "99.999" : 0.8627408145968576, + "99.9999" : 0.8627408145968576, + "100.0" : 0.8627408145968576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8561961604774199, + 0.8627408145968576 + ], + [ + 0.8560231000108657, + 0.8585531604731119 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.270301891645246, + "scoreError" : 0.7391113944523202, + "scoreConfidence" : [ + 15.531190497192926, + 17.009413286097566 + ], + "scorePercentiles" : { + "0.0" : 15.990303431040326, + "50.0" : 16.291431187657636, + "90.0" : 16.519720237571345, + "95.0" : 16.519720237571345, + "99.0" : 16.519720237571345, + "99.9" : 16.519720237571345, + "99.99" : 16.519720237571345, + "99.999" : 16.519720237571345, + "99.9999" : 16.519720237571345, + "100.0" : 16.519720237571345 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.082491978464134, + 15.990303431040326, + 16.02107409003847 + ], + [ + 16.519720237571345, + 16.507851215906058, + 16.50037039685114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2845.3293027242885, + "scoreError" : 135.5364996353283, + "scoreConfidence" : [ + 2709.79280308896, + 2980.8658023596167 + ], + "scorePercentiles" : { + "0.0" : 2800.917356607162, + "50.0" : 2844.5395485450726, + "90.0" : 2892.636092844852, + "95.0" : 2892.636092844852, + "99.0" : 2892.636092844852, + "99.9" : 2892.636092844852, + "99.99" : 2892.636092844852, + "99.999" : 2892.636092844852, + "99.9999" : 2892.636092844852, + "100.0" : 2892.636092844852 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2892.636092844852, + 2888.214890071085, + 2887.4126101472834 + ], + [ + 2800.917356607162, + 2801.1283797324877, + 2801.6664869428614 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 78522.44985647289, + "scoreError" : 1288.6811817338073, + "scoreConfidence" : [ + 77233.76867473908, + 79811.13103820669 + ], + "scorePercentiles" : { + "0.0" : 78080.3588921106, + "50.0" : 78511.0817151787, + "90.0" : 79006.8170050835, + "95.0" : 79006.8170050835, + "99.0" : 79006.8170050835, + "99.9" : 79006.8170050835, + "99.99" : 79006.8170050835, + "99.999" : 79006.8170050835, + "99.9999" : 79006.8170050835, + "100.0" : 79006.8170050835 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78109.12394686391, + 78123.95189174458, + 78080.3588921106 + ], + [ + 79006.8170050835, + 78898.21153861281, + 78916.23586442192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.55121076179006, + "scoreError" : 11.350139942221542, + "scoreConfidence" : [ + 350.20107081956854, + 372.9013507040116 + ], + "scorePercentiles" : { + "0.0" : 357.2262618551446, + "50.0" : 361.3044979464174, + "90.0" : 365.8454757439234, + "95.0" : 365.8454757439234, + "99.0" : 365.8454757439234, + "99.9" : 365.8454757439234, + "99.99" : 365.8454757439234, + "99.999" : 365.8454757439234, + "99.9999" : 365.8454757439234, + "100.0" : 365.8454757439234 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 364.2136983258551, + 365.52690361123956, + 365.8454757439234 + ], + [ + 357.2262618551446, + 358.09962746759794, + 358.3952975669797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 118.45375967613869, + "scoreError" : 0.9106387601247157, + "scoreConfidence" : [ + 117.54312091601398, + 119.3643984362634 + ], + "scorePercentiles" : { + "0.0" : 117.81232443337488, + "50.0" : 118.57660372937849, + "90.0" : 118.66156583921091, + "95.0" : 118.66156583921091, + "99.0" : 118.66156583921091, + "99.9" : 118.66156583921091, + "99.99" : 118.66156583921091, + "99.999" : 118.66156583921091, + "99.9999" : 118.66156583921091, + "100.0" : 118.66156583921091 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.81232443337488, + 118.43632243883722, + 118.57611855628575 + ], + [ + 118.65913788665209, + 118.57708890247125, + 118.66156583921091 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060960917415130746, + "scoreError" : 0.0013431405636872367, + "scoreConfidence" : [ + 0.05961777685144351, + 0.06230405797881798 + ], + "scorePercentiles" : { + "0.0" : 0.060411443153672355, + "50.0" : 0.060959125434619024, + "90.0" : 0.06145845179271606, + "95.0" : 0.06145845179271606, + "99.0" : 0.06145845179271606, + "99.9" : 0.06145845179271606, + "99.99" : 0.06145845179271606, + "99.999" : 0.06145845179271606, + "99.9999" : 0.06145845179271606, + "100.0" : 0.06145845179271606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06145845179271606, + 0.06128789280307905, + 0.06142451641851551 + ], + [ + 0.060630358066159, + 0.06055284225664253, + 0.060411443153672355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6345906862424344E-4, + "scoreError" : 2.361115302174571E-5, + "scoreConfidence" : [ + 3.3984791560249774E-4, + 3.8707022164598915E-4 + ], + "scorePercentiles" : { + "0.0" : 3.545454816324163E-4, + "50.0" : 3.6380369544923244E-4, + "90.0" : 3.7192402972402753E-4, + "95.0" : 3.7192402972402753E-4, + "99.0" : 3.7192402972402753E-4, + "99.9" : 3.7192402972402753E-4, + "99.99" : 3.7192402972402753E-4, + "99.999" : 3.7192402972402753E-4, + "99.9999" : 3.7192402972402753E-4, + "100.0" : 3.7192402972402753E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7192402972402753E-4, + 3.7077138996286874E-4, + 3.706087230929873E-4 + ], + [ + 3.545454816324163E-4, + 3.5699866780547756E-4, + 3.5590611952768334E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0991451591398791, + "scoreError" : 0.004161848056231463, + "scoreConfidence" : [ + 0.09498331108364765, + 0.10330700719611056 + ], + "scorePercentiles" : { + "0.0" : 0.0975821024882904, + "50.0" : 0.09916111466065208, + "90.0" : 0.10072151672458075, + "95.0" : 0.10072151672458075, + "99.0" : 0.10072151672458075, + "99.9" : 0.10072151672458075, + "99.99" : 0.10072151672458075, + "99.999" : 0.10072151672458075, + "99.9999" : 0.10072151672458075, + "100.0" : 0.10072151672458075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0975821024882904, + 0.09785103980508425, + 0.0979672744300871 + ], + [ + 0.10039406650001506, + 0.10035495489121708, + 0.10072151672458075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013099467608308511, + "scoreError" : 1.4103692724244877E-4, + "scoreConfidence" : [ + 0.012958430681066063, + 0.01324050453555096 + ], + "scorePercentiles" : { + "0.0" : 0.01304987551366891, + "50.0" : 0.013098013276803266, + "90.0" : 0.013148424082055543, + "95.0" : 0.013148424082055543, + "99.0" : 0.013148424082055543, + "99.9" : 0.013148424082055543, + "99.99" : 0.013148424082055543, + "99.999" : 0.013148424082055543, + "99.9999" : 0.013148424082055543, + "100.0" : 0.013148424082055543 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013148424082055543, + 0.013147869971824468, + 0.013139441651764538 + ], + [ + 0.01304987551366891, + 0.013056584901841996, + 0.013054609528695613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9877065095343959, + "scoreError" : 0.09095707583910845, + "scoreConfidence" : [ + 0.8967494336952875, + 1.0786635853735043 + ], + "scorePercentiles" : { + "0.0" : 0.957401012444955, + "50.0" : 0.9870791514357575, + "90.0" : 1.0187789376528118, + "95.0" : 1.0187789376528118, + "99.0" : 1.0187789376528118, + "99.9" : 1.0187789376528118, + "99.99" : 1.0187789376528118, + "99.999" : 1.0187789376528118, + "99.9999" : 1.0187789376528118, + "100.0" : 1.0187789376528118 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9583194571674971, + 0.9586211597967791, + 0.957401012444955 + ], + [ + 1.015537143074736, + 1.0187789376528118, + 1.0175813470695971 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010834772869580176, + "scoreError" : 6.068451328571229E-4, + "scoreConfidence" : [ + 0.010227927736723054, + 0.0114416180024373 + ], + "scorePercentiles" : { + "0.0" : 0.010633836351494761, + "50.0" : 0.010831742475056574, + "90.0" : 0.011042859869741803, + "95.0" : 0.011042859869741803, + "99.0" : 0.011042859869741803, + "99.9" : 0.011042859869741803, + "99.99" : 0.011042859869741803, + "99.999" : 0.011042859869741803, + "99.9999" : 0.011042859869741803, + "100.0" : 0.011042859869741803 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01064356072562088, + 0.010634678313468263, + 0.010633836351494761 + ], + [ + 0.011033777732663086, + 0.011042859869741803, + 0.011019924224492269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.296616641413387, + "scoreError" : 0.14155502659447888, + "scoreConfidence" : [ + 3.155061614818908, + 3.438171668007866 + ], + "scorePercentiles" : { + "0.0" : 3.248337700649351, + "50.0" : 3.295346318359713, + "90.0" : 3.3462634153846156, + "95.0" : 3.3462634153846156, + "99.0" : 3.3462634153846156, + "99.9" : 3.3462634153846156, + "99.99" : 3.3462634153846156, + "99.999" : 3.3462634153846156, + "99.9999" : 3.3462634153846156, + "100.0" : 3.3462634153846156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2494850883690707, + 3.248337700649351, + 3.2541910409889394 + ], + [ + 3.3462634153846156, + 3.3449210073578595, + 3.336501595730487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7186639212584445, + "scoreError" : 0.3119715605849149, + "scoreConfidence" : [ + 2.4066923606735298, + 3.030635481843359 + ], + "scorePercentiles" : { + "0.0" : 2.615954781846717, + "50.0" : 2.7038807754803287, + "90.0" : 2.8478124487471526, + "95.0" : 2.8478124487471526, + "99.0" : 2.8478124487471526, + "99.9" : 2.8478124487471526, + "99.99" : 2.8478124487471526, + "99.999" : 2.8478124487471526, + "99.9999" : 2.8478124487471526, + "100.0" : 2.8478124487471526 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8478124487471526, + 2.8212246930888574, + 2.786988266369462 + ], + [ + 2.615954781846717, + 2.619230052907281, + 2.620773284591195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17605234556528881, + "scoreError" : 0.007570707459614557, + "scoreConfidence" : [ + 0.16848163810567426, + 0.18362305302490337 + ], + "scorePercentiles" : { + "0.0" : 0.1717007991140414, + "50.0" : 0.17661816932751023, + "90.0" : 0.1783451790911685, + "95.0" : 0.1783451790911685, + "99.0" : 0.1783451790911685, + "99.9" : 0.1783451790911685, + "99.99" : 0.1783451790911685, + "99.999" : 0.1783451790911685, + "99.9999" : 0.1783451790911685, + "100.0" : 0.1783451790911685 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1783451790911685, + 0.17821373678582886, + 0.17826079997860925 + ], + [ + 0.17502260186919158, + 0.17477095655289326, + 0.1717007991140414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32113381206472613, + "scoreError" : 0.006139268927095596, + "scoreConfidence" : [ + 0.31499454313763053, + 0.32727308099182173 + ], + "scorePercentiles" : { + "0.0" : 0.3191856957007437, + "50.0" : 0.3205128405748442, + "90.0" : 0.32458446212268743, + "95.0" : 0.32458446212268743, + "99.0" : 0.32458446212268743, + "99.9" : 0.32458446212268743, + "99.99" : 0.32458446212268743, + "99.999" : 0.32458446212268743, + "99.9999" : 0.32458446212268743, + "100.0" : 0.32458446212268743 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32458446212268743, + 0.3216074762180415, + 0.32259441287096774 + ], + [ + 0.31941820493164685, + 0.3191856957007437, + 0.31941262054426983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.13879002206253346, + "scoreError" : 0.006224974789872499, + "scoreConfidence" : [ + 0.13256504727266097, + 0.14501499685240596 + ], + "scorePercentiles" : { + "0.0" : 0.1370720149130983, + "50.0" : 0.13813471171344857, + "90.0" : 0.1426676694058064, + "95.0" : 0.1426676694058064, + "99.0" : 0.1426676694058064, + "99.9" : 0.1426676694058064, + "99.99" : 0.1426676694058064, + "99.999" : 0.1426676694058064, + "99.9999" : 0.1426676694058064, + "100.0" : 0.1426676694058064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1426676694058064, + 0.13915643811140643, + 0.13965869467215977 + ], + [ + 0.1370720149130983, + 0.1370723299572392, + 0.1371129853154907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40160948036562716, + "scoreError" : 0.02861953008608887, + "scoreConfidence" : [ + 0.3729899502795383, + 0.430229010451716 + ], + "scorePercentiles" : { + "0.0" : 0.39169938228036505, + "50.0" : 0.4014631203198312, + "90.0" : 0.41176186186025443, + "95.0" : 0.41176186186025443, + "99.0" : 0.41176186186025443, + "99.9" : 0.41176186186025443, + "99.99" : 0.41176186186025443, + "99.999" : 0.41176186186025443, + "99.9999" : 0.41176186186025443, + "100.0" : 0.41176186186025443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3929859131135301, + 0.3922602360555425, + 0.39169938228036505 + ], + [ + 0.41176186186025443, + 0.4099403275261324, + 0.4110091613579384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15550992133162486, + "scoreError" : 0.013671170635439368, + "scoreConfidence" : [ + 0.14183875069618548, + 0.16918109196706424 + ], + "scorePercentiles" : { + "0.0" : 0.15103718238936717, + "50.0" : 0.154299127902926, + "90.0" : 0.16184881107676372, + "95.0" : 0.16184881107676372, + "99.0" : 0.16184881107676372, + "99.9" : 0.16184881107676372, + "99.99" : 0.16184881107676372, + "99.999" : 0.16184881107676372, + "99.9999" : 0.16184881107676372, + "100.0" : 0.16184881107676372 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15146836601435884, + 0.15103718238936717, + 0.15134119667963133 + ], + [ + 0.16184881107676372, + 0.1602340820381349, + 0.15712988979149317 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047701765467678764, + "scoreError" : 0.001656950263455347, + "scoreConfidence" : [ + 0.04604481520422342, + 0.04935871573113411 + ], + "scorePercentiles" : { + "0.0" : 0.046794948329675574, + "50.0" : 0.04793205925220363, + "90.0" : 0.048216510132545166, + "95.0" : 0.048216510132545166, + "99.0" : 0.048216510132545166, + "99.9" : 0.048216510132545166, + "99.99" : 0.048216510132545166, + "99.999" : 0.048216510132545166, + "99.9999" : 0.048216510132545166, + "100.0" : 0.048216510132545166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04812390186717998, + 0.048216510132545166, + 0.04815557443068818 + ], + [ + 0.04774021663722729, + 0.04717944140875637, + 0.046794948329675574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8632929.072036976, + "scoreError" : 34464.53796412084, + "scoreConfidence" : [ + 8598464.534072855, + 8667393.610001097 + ], + "scorePercentiles" : { + "0.0" : 8618219.789836347, + "50.0" : 8632032.17428818, + "90.0" : 8651978.74567474, + "95.0" : 8651978.74567474, + "99.0" : 8651978.74567474, + "99.9" : 8651978.74567474, + "99.99" : 8651978.74567474, + "99.999" : 8651978.74567474, + "99.9999" : 8651978.74567474, + "100.0" : 8651978.74567474 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8651978.74567474, + 8634976.036238136, + 8622885.630172415 + ], + [ + 8640425.917962003, + 8629088.312338222, + 8618219.789836347 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-15T06:54:24Z-abb2cddba09331511de89f1ea7215a576c2ec53e-jdk17.json b/performance-results/2025-05-15T06:54:24Z-abb2cddba09331511de89f1ea7215a576c2ec53e-jdk17.json new file mode 100644 index 0000000000..4b816ad32f --- /dev/null +++ b/performance-results/2025-05-15T06:54:24Z-abb2cddba09331511de89f1ea7215a576c2ec53e-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3619693022144115, + "scoreError" : 0.0346155048003694, + "scoreConfidence" : [ + 3.327353797414042, + 3.396584807014781 + ], + "scorePercentiles" : { + "0.0" : 3.3560782862736076, + "50.0" : 3.3624626206166175, + "90.0" : 3.366873681350802, + "95.0" : 3.366873681350802, + "99.0" : 3.366873681350802, + "99.9" : 3.366873681350802, + "99.99" : 3.366873681350802, + "99.999" : 3.366873681350802, + "99.9999" : 3.366873681350802, + "100.0" : 3.366873681350802 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3560782862736076, + 3.3661260748119513 + ], + [ + 3.358799166421284, + 3.366873681350802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7043465364070687, + "scoreError" : 0.01259928411751115, + "scoreConfidence" : [ + 1.6917472522895576, + 1.7169458205245798 + ], + "scorePercentiles" : { + "0.0" : 1.7026592286585995, + "50.0" : 1.7041490966947093, + "90.0" : 1.706428723580257, + "95.0" : 1.706428723580257, + "99.0" : 1.706428723580257, + "99.9" : 1.706428723580257, + "99.99" : 1.706428723580257, + "99.999" : 1.706428723580257, + "99.9999" : 1.706428723580257, + "100.0" : 1.706428723580257 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.702709628658194, + 1.7055885647312243 + ], + [ + 1.7026592286585995, + 1.706428723580257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8527199659895021, + "scoreError" : 0.012818551607094471, + "scoreConfidence" : [ + 0.8399014143824076, + 0.8655385175965965 + ], + "scorePercentiles" : { + "0.0" : 0.8506495123151063, + "50.0" : 0.8524542751860122, + "90.0" : 0.8553218012708776, + "95.0" : 0.8553218012708776, + "99.0" : 0.8553218012708776, + "99.9" : 0.8553218012708776, + "99.99" : 0.8553218012708776, + "99.999" : 0.8553218012708776, + "99.9999" : 0.8553218012708776, + "100.0" : 0.8553218012708776 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8506495123151063, + 0.8519031351479918 + ], + [ + 0.8530054152240326, + 0.8553218012708776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.16502511474498, + "scoreError" : 0.10246523625935697, + "scoreConfidence" : [ + 16.062559878485626, + 16.267490351004337 + ], + "scorePercentiles" : { + "0.0" : 16.120308535989917, + "50.0" : 16.1676799465021, + "90.0" : 16.204897696012992, + "95.0" : 16.204897696012992, + "99.0" : 16.204897696012992, + "99.9" : 16.204897696012992, + "99.99" : 16.204897696012992, + "99.999" : 16.204897696012992, + "99.9999" : 16.204897696012992, + "100.0" : 16.204897696012992 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.204897696012992, + 16.20379604919371, + 16.171533737314167 + ], + [ + 16.163826155690035, + 16.120308535989917, + 16.125788514269058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2727.9219353261765, + "scoreError" : 308.86139876953905, + "scoreConfidence" : [ + 2419.0605365566375, + 3036.7833340957154 + ], + "scorePercentiles" : { + "0.0" : 2625.720920916892, + "50.0" : 2726.712793958962, + "90.0" : 2831.61210236092, + "95.0" : 2831.61210236092, + "99.0" : 2831.61210236092, + "99.9" : 2831.61210236092, + "99.99" : 2831.61210236092, + "99.999" : 2831.61210236092, + "99.9999" : 2831.61210236092, + "100.0" : 2831.61210236092 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2625.720920916892, + 2626.5576145671957, + 2629.9681570868142 + ], + [ + 2830.215386194129, + 2823.45743083111, + 2831.61210236092 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76619.60159904526, + "scoreError" : 1185.3111157436413, + "scoreConfidence" : [ + 75434.29048330162, + 77804.9127147889 + ], + "scorePercentiles" : { + "0.0" : 76212.86159865643, + "50.0" : 76626.37534973578, + "90.0" : 77032.94237558937, + "95.0" : 77032.94237558937, + "99.0" : 77032.94237558937, + "99.9" : 77032.94237558937, + "99.99" : 77032.94237558937, + "99.999" : 77032.94237558937, + "99.9999" : 77032.94237558937, + "100.0" : 77032.94237558937 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76986.91811654503, + 76994.74392469338, + 77032.94237558937 + ], + [ + 76212.86159865643, + 76224.31099586085, + 76265.83258292654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.9604739966983, + "scoreError" : 4.318961573188895, + "scoreConfidence" : [ + 353.64151242350937, + 362.2794355698872 + ], + "scorePercentiles" : { + "0.0" : 355.27336828198554, + "50.0" : 358.4125965204686, + "90.0" : 359.29035165282573, + "95.0" : 359.29035165282573, + "99.0" : 359.29035165282573, + "99.9" : 359.29035165282573, + "99.99" : 359.29035165282573, + "99.999" : 359.29035165282573, + "99.9999" : 359.29035165282573, + "100.0" : 359.29035165282573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.29035165282573, + 358.5699914567, + 359.26184657152504 + ], + [ + 355.27336828198554, + 357.1120844329163, + 358.25520158423717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.19278461900154, + "scoreError" : 3.693452106666015, + "scoreConfidence" : [ + 112.49933251233553, + 119.88623672566756 + ], + "scorePercentiles" : { + "0.0" : 114.6236954071504, + "50.0" : 116.28043773374716, + "90.0" : 117.48474766011977, + "95.0" : 117.48474766011977, + "99.0" : 117.48474766011977, + "99.9" : 117.48474766011977, + "99.99" : 117.48474766011977, + "99.999" : 117.48474766011977, + "99.9999" : 117.48474766011977, + "100.0" : 117.48474766011977 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.35311290156567, + 117.29548851054362, + 117.48474766011977 + ], + [ + 114.6236954071504, + 115.13427627767912, + 115.26538695695069 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06163297424202521, + "scoreError" : 0.002170615650729767, + "scoreConfidence" : [ + 0.05946235859129544, + 0.06380358989275497 + ], + "scorePercentiles" : { + "0.0" : 0.06086966160644722, + "50.0" : 0.06160315455879634, + "90.0" : 0.06243518140838739, + "95.0" : 0.06243518140838739, + "99.0" : 0.06243518140838739, + "99.9" : 0.06243518140838739, + "99.99" : 0.06243518140838739, + "99.999" : 0.06243518140838739, + "99.9999" : 0.06243518140838739, + "100.0" : 0.06243518140838739 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06220352153142786, + 0.06243518140838739, + 0.0623668127151624 + ], + [ + 0.06100278758616483, + 0.06086966160644722, + 0.060919880604561626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6996404217497827E-4, + "scoreError" : 3.8890227470509756E-5, + "scoreConfidence" : [ + 3.310738147044685E-4, + 4.08854269645488E-4 + ], + "scorePercentiles" : { + "0.0" : 3.571925648607826E-4, + "50.0" : 3.7000096411347893E-4, + "90.0" : 3.8267256861147645E-4, + "95.0" : 3.8267256861147645E-4, + "99.0" : 3.8267256861147645E-4, + "99.9" : 3.8267256861147645E-4, + "99.99" : 3.8267256861147645E-4, + "99.999" : 3.8267256861147645E-4, + "99.9999" : 3.8267256861147645E-4, + "100.0" : 3.8267256861147645E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.825868129404473E-4, + 3.8261298644305013E-4, + 3.8267256861147645E-4 + ], + [ + 3.571925648607826E-4, + 3.574151152865106E-4, + 3.5730420490760257E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.10073400889652667, + "scoreError" : 0.002989392075828481, + "scoreConfidence" : [ + 0.0977446168206982, + 0.10372340097235515 + ], + "scorePercentiles" : { + "0.0" : 0.09961565138263538, + "50.0" : 0.1007482534611579, + "90.0" : 0.10176195647705302, + "95.0" : 0.10176195647705302, + "99.0" : 0.10176195647705302, + "99.9" : 0.10176195647705302, + "99.99" : 0.10176195647705302, + "99.999" : 0.10176195647705302, + "99.9999" : 0.10176195647705302, + "100.0" : 0.10176195647705302 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1017232468161289, + 0.10162459706513013, + 0.10176195647705302 + ], + [ + 0.09987190985718566, + 0.09961565138263538, + 0.099806691781027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012938159454429027, + "scoreError" : 3.106674172131585E-4, + "scoreConfidence" : [ + 0.012627492037215868, + 0.013248826871642186 + ], + "scorePercentiles" : { + "0.0" : 0.012833961275170369, + "50.0" : 0.012938728767601387, + "90.0" : 0.013044523378749437, + "95.0" : 0.013044523378749437, + "99.0" : 0.013044523378749437, + "99.9" : 0.013044523378749437, + "99.99" : 0.013044523378749437, + "99.999" : 0.013044523378749437, + "99.9999" : 0.013044523378749437, + "100.0" : 0.013044523378749437 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01303669574019852, + 0.013036495524645086, + 0.013044523378749437 + ], + [ + 0.012840962010557688, + 0.012833961275170369, + 0.012836318797253065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9498497469960206, + "scoreError" : 0.014164299500634742, + "scoreConfidence" : [ + 0.935685447495386, + 0.9640140464966553 + ], + "scorePercentiles" : { + "0.0" : 0.9428600098039216, + "50.0" : 0.9492197338705611, + "90.0" : 0.9564556433626625, + "95.0" : 0.9564556433626625, + "99.0" : 0.9564556433626625, + "99.9" : 0.9564556433626625, + "99.99" : 0.9564556433626625, + "99.999" : 0.9564556433626625, + "99.9999" : 0.9564556433626625, + "100.0" : 0.9564556433626625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.947116597973293, + 0.9472636086009283, + 0.9428600098039216 + ], + [ + 0.951175859140194, + 0.9542267630951246, + 0.9564556433626625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010973149688501877, + "scoreError" : 0.0014137093168784477, + "scoreConfidence" : [ + 0.009559440371623429, + 0.012386859005380325 + ], + "scorePercentiles" : { + "0.0" : 0.010496211194961953, + "50.0" : 0.010973621890873681, + "90.0" : 0.011449813897736145, + "95.0" : 0.011449813897736145, + "99.0" : 0.011449813897736145, + "99.9" : 0.011449813897736145, + "99.99" : 0.011449813897736145, + "99.999" : 0.011449813897736145, + "99.9999" : 0.011449813897736145, + "100.0" : 0.011449813897736145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010519976071853869, + 0.01052307094046414, + 0.010496211194961953 + ], + [ + 0.011424172841283223, + 0.01142565318471192, + 0.011449813897736145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1585801498753443, + "scoreError" : 0.08097212523440647, + "scoreConfidence" : [ + 3.077608024640938, + 3.2395522751097507 + ], + "scorePercentiles" : { + "0.0" : 3.129428031289111, + "50.0" : 3.15424663399424, + "90.0" : 3.1915879559668157, + "95.0" : 3.1915879559668157, + "99.0" : 3.1915879559668157, + "99.9" : 3.1915879559668157, + "99.99" : 3.1915879559668157, + "99.999" : 3.1915879559668157, + "99.9999" : 3.1915879559668157, + "100.0" : 3.1915879559668157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1915879559668157, + 3.169854698352345, + 3.1900825338010206 + ], + [ + 3.1318891102066373, + 3.1386385696361354, + 3.129428031289111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7190414302712753, + "scoreError" : 0.17550582426468056, + "scoreConfidence" : [ + 2.5435356060065946, + 2.894547254535956 + ], + "scorePercentiles" : { + "0.0" : 2.6598154445626165, + "50.0" : 2.717206667021072, + "90.0" : 2.7806592051709758, + "95.0" : 2.7806592051709758, + "99.0" : 2.7806592051709758, + "99.9" : 2.7806592051709758, + "99.99" : 2.7806592051709758, + "99.999" : 2.7806592051709758, + "99.9999" : 2.7806592051709758, + "100.0" : 2.7806592051709758 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6623827324993345, + 2.6598154445626165, + 2.663785386950732 + ], + [ + 2.7806592051709758, + 2.776977865352582, + 2.7706279470914126 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1787179587512269, + "scoreError" : 0.0033078899798098063, + "scoreConfidence" : [ + 0.1754100687714171, + 0.1820258487310367 + ], + "scorePercentiles" : { + "0.0" : 0.1766384218214576, + "50.0" : 0.1792555473139359, + "90.0" : 0.17970526009919494, + "95.0" : 0.17970526009919494, + "99.0" : 0.17970526009919494, + "99.9" : 0.17970526009919494, + "99.99" : 0.17970526009919494, + "99.999" : 0.17970526009919494, + "99.9999" : 0.17970526009919494, + "100.0" : 0.17970526009919494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17917072557064537, + 0.1793403690572264, + 0.17945648973549153 + ], + [ + 0.17970526009919494, + 0.17799648622334555, + 0.1766384218214576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3246324442300104, + "scoreError" : 0.00897567559493461, + "scoreConfidence" : [ + 0.3156567686350758, + 0.33360811982494504 + ], + "scorePercentiles" : { + "0.0" : 0.32072831690186016, + "50.0" : 0.32465153844389766, + "90.0" : 0.32876527375238346, + "95.0" : 0.32876527375238346, + "99.0" : 0.32876527375238346, + "99.9" : 0.32876527375238346, + "99.99" : 0.32876527375238346, + "99.999" : 0.32876527375238346, + "99.9999" : 0.32876527375238346, + "100.0" : 0.32876527375238346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32876527375238346, + 0.3268396783998431, + 0.32664020685262607 + ], + [ + 0.32266287003516925, + 0.32072831690186016, + 0.3221583194381805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.13995119928186395, + "scoreError" : 0.0074268372832595984, + "scoreConfidence" : [ + 0.13252436199860435, + 0.14737803656512355 + ], + "scorePercentiles" : { + "0.0" : 0.13765918293069035, + "50.0" : 0.13935433607492367, + "90.0" : 0.14450633475427366, + "95.0" : 0.14450633475427366, + "99.0" : 0.14450633475427366, + "99.9" : 0.14450633475427366, + "99.99" : 0.14450633475427366, + "99.999" : 0.14450633475427366, + "99.9999" : 0.14450633475427366, + "100.0" : 0.14450633475427366 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13809952799911618, + 0.13789395562664608, + 0.13765918293069035 + ], + [ + 0.14450633475427366, + 0.1409390502297263, + 0.14060914415073117 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3854714736904563, + "scoreError" : 0.010920080632331224, + "scoreConfidence" : [ + 0.37455139305812507, + 0.39639155432278755 + ], + "scorePercentiles" : { + "0.0" : 0.3818199040510099, + "50.0" : 0.38534273178153144, + "90.0" : 0.38941936670560745, + "95.0" : 0.38941936670560745, + "99.0" : 0.38941936670560745, + "99.9" : 0.38941936670560745, + "99.99" : 0.38941936670560745, + "99.999" : 0.38941936670560745, + "99.9999" : 0.38941936670560745, + "100.0" : 0.38941936670560745 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38941936670560745, + 0.3890532366557734, + 0.3885779630090146 + ], + [ + 0.3818199040510099, + 0.38210750055404835, + 0.381850871167284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1558298173177769, + "scoreError" : 0.0025495043941361852, + "scoreConfidence" : [ + 0.15328031292364072, + 0.15837932171191307 + ], + "scorePercentiles" : { + "0.0" : 0.15481046526100686, + "50.0" : 0.15572319557897962, + "90.0" : 0.1568925131552111, + "95.0" : 0.1568925131552111, + "99.0" : 0.1568925131552111, + "99.9" : 0.1568925131552111, + "99.99" : 0.1568925131552111, + "99.999" : 0.1568925131552111, + "99.9999" : 0.1568925131552111, + "100.0" : 0.1568925131552111 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1550859539406346, + 0.15519708319883296, + 0.15481046526100686 + ], + [ + 0.15624930795912628, + 0.1568925131552111, + 0.15674358039184952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046923209411195425, + "scoreError" : 0.0013603600469595239, + "scoreConfidence" : [ + 0.0455628493642359, + 0.04828356945815495 + ], + "scorePercentiles" : { + "0.0" : 0.046373586909846366, + "50.0" : 0.04697889587217166, + "90.0" : 0.047369550734454716, + "95.0" : 0.047369550734454716, + "99.0" : 0.047369550734454716, + "99.9" : 0.047369550734454716, + "99.99" : 0.047369550734454716, + "99.999" : 0.047369550734454716, + "99.9999" : 0.047369550734454716, + "100.0" : 0.047369550734454716 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04736314282128276, + 0.047369550734454716, + 0.04734965155446548 + ], + [ + 0.04660814018987784, + 0.046373586909846366, + 0.04647518425724537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8761586.107490508, + "scoreError" : 226991.68683237876, + "scoreConfidence" : [ + 8534594.420658128, + 8988577.794322887 + ], + "scorePercentiles" : { + "0.0" : 8669208.551126517, + "50.0" : 8762259.52210733, + "90.0" : 8858118.155004429, + "95.0" : 8858118.155004429, + "99.0" : 8858118.155004429, + "99.9" : 8858118.155004429, + "99.99" : 8858118.155004429, + "99.999" : 8858118.155004429, + "99.9999" : 8858118.155004429, + "100.0" : 8858118.155004429 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8817195.985903084, + 8858118.155004429, + 8825387.334215168 + ], + [ + 8669208.551126517, + 8707323.058311576, + 8692283.560382277 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-16T00:55:25Z-cab5b9fb685c333e14cca9df99ee262ad037da76-jdk17.json b/performance-results/2025-05-16T00:55:25Z-cab5b9fb685c333e14cca9df99ee262ad037da76-jdk17.json new file mode 100644 index 0000000000..92da28494c --- /dev/null +++ b/performance-results/2025-05-16T00:55:25Z-cab5b9fb685c333e14cca9df99ee262ad037da76-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3534673779873008, + "scoreError" : 0.040895235869392636, + "scoreConfidence" : [ + 3.312572142117908, + 3.3943626138566936 + ], + "scorePercentiles" : { + "0.0" : 3.348056855166135, + "50.0" : 3.3520672087412704, + "90.0" : 3.361678239300528, + "95.0" : 3.361678239300528, + "99.0" : 3.361678239300528, + "99.9" : 3.361678239300528, + "99.99" : 3.361678239300528, + "99.999" : 3.361678239300528, + "99.9999" : 3.361678239300528, + "100.0" : 3.361678239300528 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.348056855166135, + 3.3551929039078474 + ], + [ + 3.3489415135746934, + 3.361678239300528 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6888742432465573, + "scoreError" : 0.013335283830812448, + "scoreConfidence" : [ + 1.6755389594157448, + 1.7022095270773698 + ], + "scorePercentiles" : { + "0.0" : 1.6866107939987056, + "50.0" : 1.6886986487753723, + "90.0" : 1.6914888814367792, + "95.0" : 1.6914888814367792, + "99.0" : 1.6914888814367792, + "99.9" : 1.6914888814367792, + "99.99" : 1.6914888814367792, + "99.999" : 1.6914888814367792, + "99.9999" : 1.6914888814367792, + "100.0" : 1.6914888814367792 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6893129577168926, + 1.688084339833852 + ], + [ + 1.6866107939987056, + 1.6914888814367792 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8465062382843163, + "scoreError" : 0.030874564151205215, + "scoreConfidence" : [ + 0.815631674133111, + 0.8773808024355215 + ], + "scorePercentiles" : { + "0.0" : 0.8423525926177947, + "50.0" : 0.8456111706607004, + "90.0" : 0.8524500191980695, + "95.0" : 0.8524500191980695, + "99.0" : 0.8524500191980695, + "99.9" : 0.8524500191980695, + "99.99" : 0.8524500191980695, + "99.999" : 0.8524500191980695, + "99.9999" : 0.8524500191980695, + "100.0" : 0.8524500191980695 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8482851765151651, + 0.8524500191980695 + ], + [ + 0.8429371648062355, + 0.8423525926177947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.26239604170146, + "scoreError" : 0.13515206335529997, + "scoreConfidence" : [ + 16.12724397834616, + 16.39754810505676 + ], + "scorePercentiles" : { + "0.0" : 16.106850757759318, + "50.0" : 16.30007047963325, + "90.0" : 16.334633023490937, + "95.0" : 16.334633023490937, + "99.0" : 16.334633023490937, + "99.9" : 16.334633023490937, + "99.99" : 16.334633023490937, + "99.999" : 16.334633023490937, + "99.9999" : 16.334633023490937, + "100.0" : 16.334633023490937 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.19116695243847, + 16.186626209692314, + 16.106850757759318 + ], + [ + 16.287107699367837, + 16.30007047963325, + 16.312161216059256 + ], + [ + 16.325573374920637, + 16.31737466195113, + 16.334633023490937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2651.011932202933, + "scoreError" : 215.1304329534489, + "scoreConfidence" : [ + 2435.8814992494845, + 2866.142365156382 + ], + "scorePercentiles" : { + "0.0" : 2553.4467147998175, + "50.0" : 2574.5226270161975, + "90.0" : 2823.590932139633, + "95.0" : 2823.590932139633, + "99.0" : 2823.590932139633, + "99.9" : 2823.590932139633, + "99.99" : 2823.590932139633, + "99.999" : 2823.590932139633, + "99.9999" : 2823.590932139633, + "100.0" : 2823.590932139633 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2553.4467147998175, + 2559.1656064475105, + 2556.629406697637 + ], + [ + 2820.660311473938, + 2823.590932139633, + 2819.6435857264178 + ], + [ + 2574.5226270161975, + 2570.0801509094613, + 2581.3680546157857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77203.20016579951, + "scoreError" : 957.8515277349302, + "scoreConfidence" : [ + 76245.34863806458, + 78161.05169353445 + ], + "scorePercentiles" : { + "0.0" : 76573.47101335388, + "50.0" : 77111.80701865598, + "90.0" : 77928.82384796672, + "95.0" : 77928.82384796672, + "99.0" : 77928.82384796672, + "99.9" : 77928.82384796672, + "99.99" : 77928.82384796672, + "99.999" : 77928.82384796672, + "99.9999" : 77928.82384796672, + "100.0" : 77928.82384796672 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77057.03716615487, + 77243.45087109742, + 77111.80701865598 + ], + [ + 77928.82384796672, + 77868.31951928424, + 77870.21936158196 + ], + [ + 76596.50718019278, + 76573.47101335388, + 76579.16551390772 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.10862168518247, + "scoreError" : 5.7359838456138625, + "scoreConfidence" : [ + 350.3726378395686, + 361.84460553079634 + ], + "scorePercentiles" : { + "0.0" : 350.77361193256684, + "50.0" : 357.10945793237164, + "90.0" : 359.6653385837557, + "95.0" : 359.6653385837557, + "99.0" : 359.6653385837557, + "99.9" : 359.6653385837557, + "99.99" : 359.6653385837557, + "99.999" : 359.6653385837557, + "99.9999" : 359.6653385837557, + "100.0" : 359.6653385837557 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.68261261434156, + 357.4540481739997, + 357.10945793237164 + ], + [ + 359.6653385837557, + 359.3025899060137, + 359.2645049183992 + ], + [ + 350.77361193256684, + 351.7579736105755, + 352.9674574946181 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.82841204144792, + "scoreError" : 4.265816128720171, + "scoreConfidence" : [ + 109.56259591272774, + 118.0942281701681 + ], + "scorePercentiles" : { + "0.0" : 109.41096697879635, + "50.0" : 114.21922508919265, + "90.0" : 116.79808555089993, + "95.0" : 116.79808555089993, + "99.0" : 116.79808555089993, + "99.9" : 116.79808555089993, + "99.99" : 116.79808555089993, + "99.999" : 116.79808555089993, + "99.9999" : 116.79808555089993, + "100.0" : 116.79808555089993 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.41096697879635, + 111.08582789224916, + 111.8911726144754 + ], + [ + 115.87980734099584, + 116.36546895436693, + 116.79808555089993 + ], + [ + 114.21922508919265, + 113.90849822603386, + 114.89665572602111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061790546867354385, + "scoreError" : 6.105863341445122E-4, + "scoreConfidence" : [ + 0.06117996053320987, + 0.0624011332014989 + ], + "scorePercentiles" : { + "0.0" : 0.061242978816439766, + "50.0" : 0.06190882366852183, + "90.0" : 0.062198397034401685, + "95.0" : 0.062198397034401685, + "99.0" : 0.062198397034401685, + "99.9" : 0.062198397034401685, + "99.99" : 0.062198397034401685, + "99.999" : 0.062198397034401685, + "99.9999" : 0.062198397034401685, + "100.0" : 0.062198397034401685 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06190882366852183, + 0.06188176751381489, + 0.06214347138951032 + ], + [ + 0.062198397034401685, + 0.06195416120238892, + 0.06204289397079078 + ], + [ + 0.06139378686189643, + 0.061348641348424895, + 0.061242978816439766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8037665718987357E-4, + "scoreError" : 3.0760954973572304E-5, + "scoreConfidence" : [ + 3.496157022163013E-4, + 4.1113761216344586E-4 + ], + "scorePercentiles" : { + "0.0" : 3.552504588709267E-4, + "50.0" : 3.9203119328728883E-4, + "90.0" : 3.935684671393577E-4, + "95.0" : 3.935684671393577E-4, + "99.0" : 3.935684671393577E-4, + "99.9" : 3.935684671393577E-4, + "99.99" : 3.935684671393577E-4, + "99.999" : 3.935684671393577E-4, + "99.9999" : 3.935684671393577E-4, + "100.0" : 3.935684671393577E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.930545217028878E-4, + 3.935684671393577E-4, + 3.925294679372791E-4 + ], + [ + 3.9164624942051755E-4, + 3.9260785747270087E-4, + 3.9203119328728883E-4 + ], + [ + 3.552504588709267E-4, + 3.5640166362956293E-4, + 3.563000352483412E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01288682501059022, + "scoreError" : 2.315572965674496E-4, + "scoreConfidence" : [ + 0.012655267714022771, + 0.01311838230715767 + ], + "scorePercentiles" : { + "0.0" : 0.012691638868582569, + "50.0" : 0.012901039640706512, + "90.0" : 0.013047250257027148, + "95.0" : 0.013047250257027148, + "99.0" : 0.013047250257027148, + "99.9" : 0.013047250257027148, + "99.99" : 0.013047250257027148, + "99.999" : 0.013047250257027148, + "99.9999" : 0.013047250257027148, + "100.0" : 0.013047250257027148 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012691638868582569, + 0.01277703399543099, + 0.012699944983337905 + ], + [ + 0.012907003135071368, + 0.012901039640706512, + 0.01289994060425151 + ], + [ + 0.013029868165430364, + 0.013027705445473613, + 0.013047250257027148 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.053638657611185, + "scoreError" : 0.1020238635039845, + "scoreConfidence" : [ + 0.9516147941072004, + 1.1556625211151694 + ], + "scorePercentiles" : { + "0.0" : 1.0064871770330113, + "50.0" : 1.0202947283207509, + "90.0" : 1.1349413142305946, + "95.0" : 1.1349413142305946, + "99.0" : 1.1349413142305946, + "99.9" : 1.1349413142305946, + "99.99" : 1.1349413142305946, + "99.999" : 1.1349413142305946, + "99.9999" : 1.1349413142305946, + "100.0" : 1.1349413142305946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0067225163076303, + 1.0064871770330113, + 1.0074844953657063 + ], + [ + 1.133879839909297, + 1.1349413142305946, + 1.1338963595238096 + ], + [ + 1.020894702633728, + 1.0181467851761352, + 1.0202947283207509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01052963737140567, + "scoreError" : 1.2117379812278244E-4, + "scoreConfidence" : [ + 0.010408463573282888, + 0.010650811169528452 + ], + "scorePercentiles" : { + "0.0" : 0.010485816813567283, + "50.0" : 0.01052741050421943, + "90.0" : 0.010576258130769166, + "95.0" : 0.010576258130769166, + "99.0" : 0.010576258130769166, + "99.9" : 0.010576258130769166, + "99.99" : 0.010576258130769166, + "99.999" : 0.010576258130769166, + "99.9999" : 0.010576258130769166, + "100.0" : 0.010576258130769166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010556058373480495, + 0.010572830702967408, + 0.010576258130769166 + ], + [ + 0.010485816813567283, + 0.01048809757269131, + 0.010498762634958364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.227228623277515, + "scoreError" : 0.2536200409139891, + "scoreConfidence" : [ + 2.973608582363526, + 3.4808486641915044 + ], + "scorePercentiles" : { + "0.0" : 3.1355214952978057, + "50.0" : 3.231385594921664, + "90.0" : 3.3151863326706428, + "95.0" : 3.3151863326706428, + "99.0" : 3.3151863326706428, + "99.9" : 3.3151863326706428, + "99.99" : 3.3151863326706428, + "99.999" : 3.3151863326706428, + "99.9999" : 3.3151863326706428, + "100.0" : 3.3151863326706428 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3075624523809526, + 3.3151863326706428, + 3.3057409114342367 + ], + [ + 3.1423302694723616, + 3.157030278409091, + 3.1355214952978057 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7761640327720176, + "scoreError" : 0.05586433016158096, + "scoreConfidence" : [ + 2.7202997026104367, + 2.8320283629335985 + ], + "scorePercentiles" : { + "0.0" : 2.733869421541826, + "50.0" : 2.770709843490305, + "90.0" : 2.8172938123943663, + "95.0" : 2.8172938123943663, + "99.0" : 2.8172938123943663, + "99.9" : 2.8172938123943663, + "99.99" : 2.8172938123943663, + "99.999" : 2.8172938123943663, + "99.9999" : 2.8172938123943663, + "100.0" : 2.8172938123943663 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.783549381853604, + 2.770709843490305, + 2.761674409718388 + ], + [ + 2.7493244431006048, + 2.733869421541826, + 2.7394475979183786 + ], + [ + 2.8123490826771653, + 2.8172938123943663, + 2.817258302253521 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1790134549531295, + "scoreError" : 0.002862209757215734, + "scoreConfidence" : [ + 0.17615124519591377, + 0.18187566471034525 + ], + "scorePercentiles" : { + "0.0" : 0.176835408675355, + "50.0" : 0.17921648241935484, + "90.0" : 0.18152882640817586, + "95.0" : 0.18152882640817586, + "99.0" : 0.18152882640817586, + "99.9" : 0.18152882640817586, + "99.99" : 0.18152882640817586, + "99.999" : 0.18152882640817586, + "99.9999" : 0.18152882640817586, + "100.0" : 0.18152882640817586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17915963537990218, + 0.18073763526116032, + 0.17921648241935484 + ], + [ + 0.18152882640817586, + 0.17984586364535562, + 0.1797403719826734 + ], + [ + 0.17701539027153326, + 0.1770414805346552, + 0.176835408675355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3258793135740633, + "scoreError" : 0.006485738578294348, + "scoreConfidence" : [ + 0.3193935749957689, + 0.3323650521523577 + ], + "scorePercentiles" : { + "0.0" : 0.32213417062878497, + "50.0" : 0.3240410555717572, + "90.0" : 0.3310495732587394, + "95.0" : 0.3310495732587394, + "99.0" : 0.3310495732587394, + "99.9" : 0.3310495732587394, + "99.99" : 0.3310495732587394, + "99.999" : 0.3310495732587394, + "99.9999" : 0.3310495732587394, + "100.0" : 0.3310495732587394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32251011606682145, + 0.32213417062878497, + 0.3228926847696232 + ], + [ + 0.32366887733436905, + 0.3240410555717572, + 0.3249576049587314 + ], + [ + 0.3310495732587394, + 0.3307603734537276, + 0.3308993661240156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14241536578409383, + "scoreError" : 0.0077280678118041915, + "scoreConfidence" : [ + 0.13468729797228965, + 0.15014343359589802 + ], + "scorePercentiles" : { + "0.0" : 0.13692587486650054, + "50.0" : 0.14274127025792546, + "90.0" : 0.14764767623392538, + "95.0" : 0.14764767623392538, + "99.0" : 0.14764767623392538, + "99.9" : 0.14764767623392538, + "99.99" : 0.14764767623392538, + "99.999" : 0.14764767623392538, + "99.9999" : 0.14764767623392538, + "100.0" : 0.14764767623392538 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1427466895483613, + 0.14262076473943924, + 0.14274127025792546 + ], + [ + 0.13704001903443738, + 0.13693696730021362, + 0.13692587486650054 + ], + [ + 0.14758714126745182, + 0.14764767623392538, + 0.1474918888085897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4047976336353598, + "scoreError" : 0.011996243351085895, + "scoreConfidence" : [ + 0.3928013902842739, + 0.4167938769864457 + ], + "scorePercentiles" : { + "0.0" : 0.3970063332804002, + "50.0" : 0.4016961715536632, + "90.0" : 0.41466724754322676, + "95.0" : 0.41466724754322676, + "99.0" : 0.41466724754322676, + "99.9" : 0.41466724754322676, + "99.99" : 0.41466724754322676, + "99.999" : 0.41466724754322676, + "99.9999" : 0.41466724754322676, + "100.0" : 0.41466724754322676 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41466724754322676, + 0.41275569328875683, + 0.41367709795648216 + ], + [ + 0.40577278320146076, + 0.4016961715536632, + 0.4004024747357463 + ], + [ + 0.3980047477115339, + 0.3970063332804002, + 0.3991961534469682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1570760144790013, + "scoreError" : 0.002791944801991304, + "scoreConfidence" : [ + 0.15428406967701, + 0.1598679592809926 + ], + "scorePercentiles" : { + "0.0" : 0.15511718703562952, + "50.0" : 0.15741889816928234, + "90.0" : 0.16024883169617818, + "95.0" : 0.16024883169617818, + "99.0" : 0.16024883169617818, + "99.9" : 0.16024883169617818, + "99.99" : 0.16024883169617818, + "99.999" : 0.16024883169617818, + "99.9999" : 0.16024883169617818, + "100.0" : 0.16024883169617818 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15531637040661014, + 0.15518899359083785, + 0.15511718703562952 + ], + [ + 0.15741889816928234, + 0.1574912640282218, + 0.15719385694075483 + ], + [ + 0.16024883169617818, + 0.1577969593524158, + 0.15791176909108134 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048080740514219136, + "scoreError" : 7.735893804021649E-4, + "scoreConfidence" : [ + 0.04730715113381697, + 0.0488543298946213 + ], + "scorePercentiles" : { + "0.0" : 0.04755119428158419, + "50.0" : 0.04809009220618715, + "90.0" : 0.0489788298648695, + "95.0" : 0.0489788298648695, + "99.0" : 0.0489788298648695, + "99.9" : 0.0489788298648695, + "99.99" : 0.0489788298648695, + "99.999" : 0.0489788298648695, + "99.9999" : 0.0489788298648695, + "100.0" : 0.0489788298648695 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04755119428158419, + 0.04764913158145519, + 0.04758649213735482 + ], + [ + 0.0489788298648695, + 0.048483318108212936, + 0.04810017364347797 + ], + [ + 0.04809009220618715, + 0.0480830349990624, + 0.04820439780576805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8564577.069390323, + "scoreError" : 215018.68304839788, + "scoreConfidence" : [ + 8349558.386341925, + 8779595.75243872 + ], + "scorePercentiles" : { + "0.0" : 8366116.078595318, + "50.0" : 8609619.247848537, + "90.0" : 8688698.606429191, + "95.0" : 8688698.606429191, + "99.0" : 8688698.606429191, + "99.9" : 8688698.606429191, + "99.99" : 8688698.606429191, + "99.999" : 8688698.606429191, + "99.9999" : 8688698.606429191, + "100.0" : 8688698.606429191 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8470700.714648603, + 8378140.517587939, + 8366116.078595318 + ], + [ + 8616968.260981912, + 8609619.247848537, + 8588286.163090128 + ], + [ + 8684041.736979166, + 8688698.606429191, + 8678622.298352124 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-16T03:56:23Z-c16cf96e83acf6f2551e95f499bfa909c47d2007-jdk17.json b/performance-results/2025-05-16T03:56:23Z-c16cf96e83acf6f2551e95f499bfa909c47d2007-jdk17.json new file mode 100644 index 0000000000..bfb44a33fd --- /dev/null +++ b/performance-results/2025-05-16T03:56:23Z-c16cf96e83acf6f2551e95f499bfa909c47d2007-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3553703725435438, + "scoreError" : 0.032657057547065105, + "scoreConfidence" : [ + 3.3227133149964785, + 3.388027430090609 + ], + "scorePercentiles" : { + "0.0" : 3.3499177306463777, + "50.0" : 3.355360011656905, + "90.0" : 3.360843736213989, + "95.0" : 3.360843736213989, + "99.0" : 3.360843736213989, + "99.9" : 3.360843736213989, + "99.99" : 3.360843736213989, + "99.999" : 3.360843736213989, + "99.9999" : 3.360843736213989, + "100.0" : 3.360843736213989 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.352450466840584, + 3.358269556473226 + ], + [ + 3.3499177306463777, + 3.360843736213989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.702491965048374, + "scoreError" : 0.015110338721156047, + "scoreConfidence" : [ + 1.687381626327218, + 1.71760230376953 + ], + "scorePercentiles" : { + "0.0" : 1.6991305141367838, + "50.0" : 1.7031811360639257, + "90.0" : 1.7044750739288603, + "95.0" : 1.7044750739288603, + "99.0" : 1.7044750739288603, + "99.9" : 1.7044750739288603, + "99.99" : 1.7044750739288603, + "99.999" : 1.7044750739288603, + "99.9999" : 1.7044750739288603, + "100.0" : 1.7044750739288603 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7028483159315277, + 1.6991305141367838 + ], + [ + 1.7044750739288603, + 1.7035139561963237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8518040848096116, + "scoreError" : 0.015434812926358853, + "scoreConfidence" : [ + 0.8363692718832527, + 0.8672388977359704 + ], + "scorePercentiles" : { + "0.0" : 0.8495899774033487, + "50.0" : 0.8517530267189388, + "90.0" : 0.8541203083972198, + "95.0" : 0.8541203083972198, + "99.0" : 0.8541203083972198, + "99.9" : 0.8541203083972198, + "99.99" : 0.8541203083972198, + "99.999" : 0.8541203083972198, + "99.9999" : 0.8541203083972198, + "100.0" : 0.8541203083972198 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8536027833229437, + 0.8541203083972198 + ], + [ + 0.8495899774033487, + 0.849903270114934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.228714477595517, + "scoreError" : 0.08651454881848845, + "scoreConfidence" : [ + 16.14219992877703, + 16.315229026414006 + ], + "scorePercentiles" : { + "0.0" : 16.170915239207936, + "50.0" : 16.24097170234195, + "90.0" : 16.25561034290486, + "95.0" : 16.25561034290486, + "99.0" : 16.25561034290486, + "99.9" : 16.25561034290486, + "99.99" : 16.25561034290486, + "99.999" : 16.25561034290486, + "99.9999" : 16.25561034290486, + "100.0" : 16.25561034290486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.237693552340406, + 16.25561034290486, + 16.2451883398166 + ], + [ + 16.170915239207936, + 16.21862953895982, + 16.244249852343494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2645.2444536259627, + "scoreError" : 258.5530761003146, + "scoreConfidence" : [ + 2386.691377525648, + 2903.7975297262774 + ], + "scorePercentiles" : { + "0.0" : 2560.1199026348786, + "50.0" : 2645.3601504827247, + "90.0" : 2730.987798107538, + "95.0" : 2730.987798107538, + "99.0" : 2730.987798107538, + "99.9" : 2730.987798107538, + "99.99" : 2730.987798107538, + "99.999" : 2730.987798107538, + "99.9999" : 2730.987798107538, + "100.0" : 2730.987798107538 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2560.1199026348786, + 2560.7173687801046, + 2562.4091622042693 + ], + [ + 2730.987798107538, + 2728.3111387611802, + 2728.921351267805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77319.17682906751, + "scoreError" : 1091.6954622467447, + "scoreConfidence" : [ + 76227.48136682076, + 78410.87229131426 + ], + "scorePercentiles" : { + "0.0" : 76932.68907560426, + "50.0" : 77328.01517228465, + "90.0" : 77684.12244353759, + "95.0" : 77684.12244353759, + "99.0" : 77684.12244353759, + "99.9" : 77684.12244353759, + "99.99" : 77684.12244353759, + "99.999" : 77684.12244353759, + "99.9999" : 77684.12244353759, + "100.0" : 77684.12244353759 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77661.38655773611, + 77676.64661237481, + 77684.12244353759 + ], + [ + 76994.64378683319, + 76932.68907560426, + 76965.57249831907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.03095712236194, + "scoreError" : 7.4937784731266195, + "scoreConfidence" : [ + 353.53717864923533, + 368.52473559548855 + ], + "scorePercentiles" : { + "0.0" : 356.43992087508474, + "50.0" : 361.47107602818596, + "90.0" : 363.5445707591954, + "95.0" : 363.5445707591954, + "99.0" : 363.5445707591954, + "99.9" : 363.5445707591954, + "99.99" : 363.5445707591954, + "99.999" : 363.5445707591954, + "99.9999" : 363.5445707591954, + "100.0" : 363.5445707591954 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.43992087508474, + 360.13072208514933, + 360.3060655424482 + ], + [ + 363.1283769583699, + 362.6360865139238, + 363.5445707591954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.2151330572169, + "scoreError" : 6.9149393246398905, + "scoreConfidence" : [ + 105.30019373257701, + 119.13007238185679 + ], + "scorePercentiles" : { + "0.0" : 109.84956905149458, + "50.0" : 111.78811476516739, + "90.0" : 115.40671540168225, + "95.0" : 115.40671540168225, + "99.0" : 115.40671540168225, + "99.9" : 115.40671540168225, + "99.99" : 115.40671540168225, + "99.999" : 115.40671540168225, + "99.9999" : 115.40671540168225, + "100.0" : 115.40671540168225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.84956905149458, + 110.12366994761211, + 110.1463241982282 + ], + [ + 113.42990533210657, + 114.33461441217766, + 115.40671540168225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06088126613168612, + "scoreError" : 5.22041055550832E-4, + "scoreConfidence" : [ + 0.06035922507613529, + 0.061403307187236945 + ], + "scorePercentiles" : { + "0.0" : 0.06069725215016236, + "50.0" : 0.06084511941189625, + "90.0" : 0.061121216799501256, + "95.0" : 0.061121216799501256, + "99.0" : 0.061121216799501256, + "99.9" : 0.061121216799501256, + "99.99" : 0.061121216799501256, + "99.999" : 0.061121216799501256, + "99.9999" : 0.061121216799501256, + "100.0" : 0.061121216799501256 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06069725215016236, + 0.06074769567726494, + 0.06071606686581301 + ], + [ + 0.06106282215084754, + 0.060942543146527556, + 0.061121216799501256 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.72757742636935E-4, + "scoreError" : 2.8281785331329748E-5, + "scoreConfidence" : [ + 3.4447595730560524E-4, + 4.0103952796826476E-4 + ], + "scorePercentiles" : { + "0.0" : 3.634110671151054E-4, + "50.0" : 3.727601105921812E-4, + "90.0" : 3.8210939651776637E-4, + "95.0" : 3.8210939651776637E-4, + "99.0" : 3.8210939651776637E-4, + "99.9" : 3.8210939651776637E-4, + "99.99" : 3.8210939651776637E-4, + "99.999" : 3.8210939651776637E-4, + "99.9999" : 3.8210939651776637E-4, + "100.0" : 3.8210939651776637E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8192090817917325E-4, + 3.8210939651776637E-4, + 3.8186157194333074E-4 + ], + [ + 3.634110671151054E-4, + 3.635848628252025E-4, + 3.6365864924103164E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12378884025089688, + "scoreError" : 0.002609165204847373, + "scoreConfidence" : [ + 0.12117967504604951, + 0.12639800545574426 + ], + "scorePercentiles" : { + "0.0" : 0.12276025089918122, + "50.0" : 0.12386527738914205, + "90.0" : 0.12465295960112184, + "95.0" : 0.12465295960112184, + "99.0" : 0.12465295960112184, + "99.9" : 0.12465295960112184, + "99.99" : 0.12465295960112184, + "99.999" : 0.12465295960112184, + "99.9999" : 0.12465295960112184, + "100.0" : 0.12465295960112184 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12276025089918122, + 0.12294303046471601, + 0.12313664987932818 + ], + [ + 0.12465295960112184, + 0.12464624576207808, + 0.12459390489895592 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013017202759325006, + "scoreError" : 2.2596415049446224E-4, + "scoreConfidence" : [ + 0.012791238608830543, + 0.013243166909819469 + ], + "scorePercentiles" : { + "0.0" : 0.012934287448748626, + "50.0" : 0.013014979483601155, + "90.0" : 0.013097654594272467, + "95.0" : 0.013097654594272467, + "99.0" : 0.013097654594272467, + "99.9" : 0.013097654594272467, + "99.99" : 0.013097654594272467, + "99.999" : 0.013097654594272467, + "99.9999" : 0.013097654594272467, + "100.0" : 0.013097654594272467 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01294916990521327, + 0.012948465411199246, + 0.012934287448748626 + ], + [ + 0.013080789061989038, + 0.013092850134527387, + 0.013097654594272467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.010850876444796, + "scoreError" : 0.027264327039679657, + "scoreConfidence" : [ + 0.9835865494051165, + 1.0381152034844758 + ], + "scorePercentiles" : { + "0.0" : 0.9998249461107779, + "50.0" : 1.0107009774638844, + "90.0" : 1.024357302366076, + "95.0" : 1.024357302366076, + "99.0" : 1.024357302366076, + "99.9" : 1.024357302366076, + "99.99" : 1.024357302366076, + "99.999" : 1.024357302366076, + "99.9999" : 1.024357302366076, + "100.0" : 1.024357302366076 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0050143791578736, + 1.0026343631441748, + 0.9998249461107779 + ], + [ + 1.024357302366076, + 1.0163875757698952, + 1.0168866921199797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011449980648462164, + "scoreError" : 1.5143040230067135E-4, + "scoreConfidence" : [ + 0.011298550246161493, + 0.011601411050762836 + ], + "scorePercentiles" : { + "0.0" : 0.011397680155824735, + "50.0" : 0.011448375552722552, + "90.0" : 0.011502706189669927, + "95.0" : 0.011502706189669927, + "99.0" : 0.011502706189669927, + "99.9" : 0.011502706189669927, + "99.99" : 0.011502706189669927, + "99.999" : 0.011502706189669927, + "99.9999" : 0.011502706189669927, + "100.0" : 0.011502706189669927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011402490656858744, + 0.011397680155824735, + 0.011402151126384465 + ], + [ + 0.011502706189669927, + 0.011500595313448764, + 0.011494260448586358 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.287366772677738, + "scoreError" : 0.035271139700450906, + "scoreConfidence" : [ + 3.2520956329772868, + 3.322637912378189 + ], + "scorePercentiles" : { + "0.0" : 3.265128242819843, + "50.0" : 3.291970129315079, + "90.0" : 3.2976442781806194, + "95.0" : 3.2976442781806194, + "99.0" : 3.2976442781806194, + "99.9" : 3.2976442781806194, + "99.99" : 3.2976442781806194, + "99.999" : 3.2976442781806194, + "99.9999" : 3.2976442781806194, + "100.0" : 3.2976442781806194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2972307580751483, + 3.2976442781806194, + 3.291410140789474 + ], + [ + 3.2925301178406845, + 3.280257098360656, + 3.265128242819843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7573124710191284, + "scoreError" : 0.05370785558329982, + "scoreConfidence" : [ + 2.7036046154358284, + 2.8110203266024283 + ], + "scorePercentiles" : { + "0.0" : 2.736961, + "50.0" : 2.756286582845668, + "90.0" : 2.783874885054272, + "95.0" : 2.783874885054272, + "99.0" : 2.783874885054272, + "99.9" : 2.783874885054272, + "99.99" : 2.783874885054272, + "99.999" : 2.783874885054272, + "99.9999" : 2.783874885054272, + "100.0" : 2.783874885054272 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7440335736625516, + 2.741031372156755, + 2.736961 + ], + [ + 2.783874885054272, + 2.7694344032124065, + 2.7685395920287847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1824581992452332, + "scoreError" : 0.01263337015323987, + "scoreConfidence" : [ + 0.16982482909199334, + 0.19509156939847308 + ], + "scorePercentiles" : { + "0.0" : 0.1783783544111876, + "50.0" : 0.1818142796479224, + "90.0" : 0.18801836031361047, + "95.0" : 0.18801836031361047, + "99.0" : 0.18801836031361047, + "99.9" : 0.18801836031361047, + "99.99" : 0.18801836031361047, + "99.999" : 0.18801836031361047, + "99.9999" : 0.18801836031361047, + "100.0" : 0.18801836031361047 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18628539033568048, + 0.18515257173538724, + 0.18801836031361047 + ], + [ + 0.17843853111507582, + 0.1783783544111876, + 0.1784759875604576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3221278195931336, + "scoreError" : 0.006196440491176188, + "scoreConfidence" : [ + 0.3159313791019574, + 0.32832426008430976 + ], + "scorePercentiles" : { + "0.0" : 0.32062849788393716, + "50.0" : 0.3212660450332257, + "90.0" : 0.32650045456919913, + "95.0" : 0.32650045456919913, + "99.0" : 0.32650045456919913, + "99.9" : 0.32650045456919913, + "99.99" : 0.32650045456919913, + "99.999" : 0.32650045456919913, + "99.9999" : 0.32650045456919913, + "100.0" : 0.32650045456919913 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32062849788393716, + 0.3209410500657916, + 0.32099118572253965 + ], + [ + 0.32650045456919913, + 0.32216482497342225, + 0.32154090434391175 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14073558263808947, + "scoreError" : 0.005065998009303859, + "scoreConfidence" : [ + 0.13566958462878562, + 0.14580158064739332 + ], + "scorePercentiles" : { + "0.0" : 0.13909703171335577, + "50.0" : 0.1401810541738386, + "90.0" : 0.14385419664254787, + "95.0" : 0.14385419664254787, + "99.0" : 0.14385419664254787, + "99.9" : 0.14385419664254787, + "99.99" : 0.14385419664254787, + "99.999" : 0.14385419664254787, + "99.9999" : 0.14385419664254787, + "100.0" : 0.14385419664254787 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14385419664254787, + 0.14181902571084168, + 0.13909703171335577 + ], + [ + 0.1392811334141144, + 0.14013720411995514, + 0.14022490422772207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4029450634253009, + "scoreError" : 0.028920544530209154, + "scoreConfidence" : [ + 0.37402451889509175, + 0.43186560795551004 + ], + "scorePercentiles" : { + "0.0" : 0.3932387117691007, + "50.0" : 0.4023735325715181, + "90.0" : 0.4137857563720622, + "95.0" : 0.4137857563720622, + "99.0" : 0.4137857563720622, + "99.9" : 0.4137857563720622, + "99.99" : 0.4137857563720622, + "99.999" : 0.4137857563720622, + "99.9999" : 0.4137857563720622, + "100.0" : 0.4137857563720622 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4137857563720622, + 0.41232167465160385, + 0.4108517400681977 + ], + [ + 0.3938953250748385, + 0.3932387117691007, + 0.3935771726160022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15889903022691718, + "scoreError" : 0.0013640564201312852, + "scoreConfidence" : [ + 0.15753497380678588, + 0.16026308664704847 + ], + "scorePercentiles" : { + "0.0" : 0.15840507866183015, + "50.0" : 0.15887285332889767, + "90.0" : 0.15975560961387925, + "95.0" : 0.15975560961387925, + "99.0" : 0.15975560961387925, + "99.9" : 0.15975560961387925, + "99.99" : 0.15975560961387925, + "99.999" : 0.15975560961387925, + "99.9999" : 0.15975560961387925, + "100.0" : 0.15975560961387925 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15884170446495227, + 0.15890400219284306, + 0.15840507866183015 + ], + [ + 0.15975560961387925, + 0.15846646222229266, + 0.15902132420570556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04718610007413779, + "scoreError" : 0.001326334888219713, + "scoreConfidence" : [ + 0.045859765185918076, + 0.0485124349623575 + ], + "scorePercentiles" : { + "0.0" : 0.04670062911074374, + "50.0" : 0.04716122024754414, + "90.0" : 0.04779456044964441, + "95.0" : 0.04779456044964441, + "99.0" : 0.04779456044964441, + "99.9" : 0.04779456044964441, + "99.99" : 0.04779456044964441, + "99.999" : 0.04779456044964441, + "99.9999" : 0.04779456044964441, + "100.0" : 0.04779456044964441 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04670062911074374, + 0.046786509881164035, + 0.04681104828018799 + ], + [ + 0.047512460508186284, + 0.0475113922149003, + 0.04779456044964441 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8453659.808721319, + "scoreError" : 225905.11525009322, + "scoreConfidence" : [ + 8227754.693471226, + 8679564.923971413 + ], + "scorePercentiles" : { + "0.0" : 8373439.4234309625, + "50.0" : 8455909.886086714, + "90.0" : 8528363.404092072, + "95.0" : 8528363.404092072, + "99.0" : 8528363.404092072, + "99.9" : 8528363.404092072, + "99.99" : 8528363.404092072, + "99.999" : 8528363.404092072, + "99.9999" : 8528363.404092072, + "100.0" : 8528363.404092072 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8381523.269681742, + 8385666.062028499, + 8373439.4234309625 + ], + [ + 8528363.404092072, + 8526812.982949702, + 8526153.710144928 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-16T04:29:15Z-444af98a224b7d26cf1571233daa581b856fc53a-jdk17.json b/performance-results/2025-05-16T04:29:15Z-444af98a224b7d26cf1571233daa581b856fc53a-jdk17.json new file mode 100644 index 0000000000..c753ce812c --- /dev/null +++ b/performance-results/2025-05-16T04:29:15Z-444af98a224b7d26cf1571233daa581b856fc53a-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3486397495147173, + "scoreError" : 0.021052002959585835, + "scoreConfidence" : [ + 3.3275877465551313, + 3.3696917524743033 + ], + "scorePercentiles" : { + "0.0" : 3.344461233285716, + "50.0" : 3.3493418564862587, + "90.0" : 3.3514140518006355, + "95.0" : 3.3514140518006355, + "99.0" : 3.3514140518006355, + "99.9" : 3.3514140518006355, + "99.99" : 3.3514140518006355, + "99.999" : 3.3514140518006355, + "99.9999" : 3.3514140518006355, + "100.0" : 3.3514140518006355 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3476540281646368, + 3.3514140518006355 + ], + [ + 3.344461233285716, + 3.35102968480788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6745915078987168, + "scoreError" : 0.05814685454503823, + "scoreConfidence" : [ + 1.6164446533536785, + 1.7327383624437551 + ], + "scorePercentiles" : { + "0.0" : 1.6647441277709387, + "50.0" : 1.6754529716801128, + "90.0" : 1.6827159604637032, + "95.0" : 1.6827159604637032, + "99.0" : 1.6827159604637032, + "99.9" : 1.6827159604637032, + "99.99" : 1.6827159604637032, + "99.999" : 1.6827159604637032, + "99.9999" : 1.6827159604637032, + "100.0" : 1.6827159604637032 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6827159604637032, + 1.6817157909299627 + ], + [ + 1.6647441277709387, + 1.669190152430263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8415276701310598, + "scoreError" : 0.023072166052072265, + "scoreConfidence" : [ + 0.8184555040789875, + 0.8645998361831321 + ], + "scorePercentiles" : { + "0.0" : 0.8380459354325034, + "50.0" : 0.8407896450094752, + "90.0" : 0.8464854550727857, + "95.0" : 0.8464854550727857, + "99.0" : 0.8464854550727857, + "99.9" : 0.8464854550727857, + "99.99" : 0.8464854550727857, + "99.999" : 0.8464854550727857, + "99.9999" : 0.8464854550727857, + "100.0" : 0.8464854550727857 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8403138695885073, + 0.8464854550727857 + ], + [ + 0.8380459354325034, + 0.841265420430443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.254336188437463, + "scoreError" : 0.04522065263163152, + "scoreConfidence" : [ + 16.209115535805832, + 16.299556841069094 + ], + "scorePercentiles" : { + "0.0" : 16.230523024, + "50.0" : 16.250792736932066, + "90.0" : 16.272678912875218, + "95.0" : 16.272678912875218, + "99.0" : 16.272678912875218, + "99.9" : 16.272678912875218, + "99.99" : 16.272678912875218, + "99.999" : 16.272678912875218, + "99.9999" : 16.272678912875218, + "100.0" : 16.272678912875218 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.24926018691846, + 16.27261659936383, + 16.272678912875218 + ], + [ + 16.2486131205216, + 16.252325286945673, + 16.230523024 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2651.709722800399, + "scoreError" : 67.28487903274501, + "scoreConfidence" : [ + 2584.4248437676542, + 2718.994601833144 + ], + "scorePercentiles" : { + "0.0" : 2625.4630574330176, + "50.0" : 2649.531599919619, + "90.0" : 2682.0414502632066, + "95.0" : 2682.0414502632066, + "99.0" : 2682.0414502632066, + "99.9" : 2682.0414502632066, + "99.99" : 2682.0414502632066, + "99.999" : 2682.0414502632066, + "99.9999" : 2682.0414502632066, + "100.0" : 2682.0414502632066 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.0414502632066, + 2665.6722416878174, + 2671.0702700891547 + ], + [ + 2625.4630574330176, + 2632.6203591777744, + 2633.3909581514213 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77350.11743981263, + "scoreError" : 677.1399205096427, + "scoreConfidence" : [ + 76672.977519303, + 78027.25736032227 + ], + "scorePercentiles" : { + "0.0" : 77121.10839293046, + "50.0" : 77343.00595908737, + "90.0" : 77622.35288222185, + "95.0" : 77622.35288222185, + "99.0" : 77622.35288222185, + "99.9" : 77622.35288222185, + "99.99" : 77622.35288222185, + "99.999" : 77622.35288222185, + "99.9999" : 77622.35288222185, + "100.0" : 77622.35288222185 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77546.95793173401, + 77536.83561754768, + 77622.35288222185 + ], + [ + 77149.17630062706, + 77124.27351381471, + 77121.10839293046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 366.7524418237054, + "scoreError" : 12.873858422778126, + "scoreConfidence" : [ + 353.87858340092725, + 379.62630024648354 + ], + "scorePercentiles" : { + "0.0" : 362.28466506978305, + "50.0" : 365.57710195754044, + "90.0" : 373.2687714014126, + "95.0" : 373.2687714014126, + "99.0" : 373.2687714014126, + "99.9" : 373.2687714014126, + "99.99" : 373.2687714014126, + "99.999" : 373.2687714014126, + "99.9999" : 373.2687714014126, + "100.0" : 373.2687714014126 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 367.6800766940573, + 370.85993455491626, + 373.2687714014126 + ], + [ + 362.28466506978305, + 362.94707600103993, + 363.4741272210236 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 118.52945997693017, + "scoreError" : 3.4834645517908753, + "scoreConfidence" : [ + 115.0459954251393, + 122.01292452872104 + ], + "scorePercentiles" : { + "0.0" : 117.34897556234512, + "50.0" : 118.38284580487621, + "90.0" : 119.92411168633737, + "95.0" : 119.92411168633737, + "99.0" : 119.92411168633737, + "99.9" : 119.92411168633737, + "99.99" : 119.92411168633737, + "99.999" : 119.92411168633737, + "99.9999" : 119.92411168633737, + "100.0" : 119.92411168633737 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.48958524985825, + 117.34897556234512, + 117.39954157621182 + ], + [ + 119.27610635989416, + 119.73843942693425, + 119.92411168633737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06072738315468815, + "scoreError" : 6.600570602612759E-4, + "scoreConfidence" : [ + 0.06006732609442687, + 0.06138744021494942 + ], + "scorePercentiles" : { + "0.0" : 0.06049536013042637, + "50.0" : 0.06072163141781364, + "90.0" : 0.060976845407593946, + "95.0" : 0.060976845407593946, + "99.0" : 0.060976845407593946, + "99.9" : 0.060976845407593946, + "99.99" : 0.060976845407593946, + "99.999" : 0.060976845407593946, + "99.9999" : 0.060976845407593946, + "100.0" : 0.060976845407593946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06091257444281337, + 0.06093412547375605, + 0.060976845407593946 + ], + [ + 0.060530688392813906, + 0.06051470508072519, + 0.06049536013042637 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.617192809677106E-4, + "scoreError" : 2.1375662334148513E-5, + "scoreConfidence" : [ + 3.403436186335621E-4, + 3.8309494330185915E-4 + ], + "scorePercentiles" : { + "0.0" : 3.546447875159397E-4, + "50.0" : 3.616479935680319E-4, + "90.0" : 3.689266811938284E-4, + "95.0" : 3.689266811938284E-4, + "99.0" : 3.689266811938284E-4, + "99.9" : 3.689266811938284E-4, + "99.99" : 3.689266811938284E-4, + "99.999" : 3.689266811938284E-4, + "99.9999" : 3.689266811938284E-4, + "100.0" : 3.689266811938284E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.547972581367566E-4, + 3.546447875159397E-4, + 3.5484487245150876E-4 + ], + [ + 3.689266811938284E-4, + 3.686509718236753E-4, + 3.6845111468455493E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12356891125388027, + "scoreError" : 0.0011513017325794671, + "scoreConfidence" : [ + 0.1224176095213008, + 0.12472021298645973 + ], + "scorePercentiles" : { + "0.0" : 0.12313493344743517, + "50.0" : 0.12351449757675095, + "90.0" : 0.12414115408106263, + "95.0" : 0.12414115408106263, + "99.0" : 0.12414115408106263, + "99.9" : 0.12414115408106263, + "99.99" : 0.12414115408106263, + "99.999" : 0.12414115408106263, + "99.9999" : 0.12414115408106263, + "100.0" : 0.12414115408106263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12323341219238684, + 0.12327484595850643, + 0.12313493344743517 + ], + [ + 0.12414115408106263, + 0.12387497264889505, + 0.12375414919499549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012897936102508669, + "scoreError" : 4.191945820707046E-5, + "scoreConfidence" : [ + 0.012856016644301598, + 0.01293985556071574 + ], + "scorePercentiles" : { + "0.0" : 0.012877975964869354, + "50.0" : 0.012898875423619078, + "90.0" : 0.012914283443619664, + "95.0" : 0.012914283443619664, + "99.0" : 0.012914283443619664, + "99.9" : 0.012914283443619664, + "99.99" : 0.012914283443619664, + "99.999" : 0.012914283443619664, + "99.9999" : 0.012914283443619664, + "100.0" : 0.012914283443619664 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012914283443619664, + 0.012906736482963345, + 0.012911547629407459 + ], + [ + 0.012891014364274813, + 0.012886058729917375, + 0.012877975964869354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9866651210372711, + "scoreError" : 0.02733537609581743, + "scoreConfidence" : [ + 0.9593297449414537, + 1.0140004971330885 + ], + "scorePercentiles" : { + "0.0" : 0.9762133196993362, + "50.0" : 0.9857869378481827, + "90.0" : 0.9977272287738203, + "95.0" : 0.9977272287738203, + "99.0" : 0.9977272287738203, + "99.9" : 0.9977272287738203, + "99.99" : 0.9977272287738203, + "99.999" : 0.9977272287738203, + "99.9999" : 0.9977272287738203, + "100.0" : 0.9977272287738203 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9799263633512983, + 0.977947805691375, + 0.9762133196993362 + ], + [ + 0.9977272287738203, + 0.991647512345067, + 0.9965284963627304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010752751417349321, + "scoreError" : 3.84877393380212E-4, + "scoreConfidence" : [ + 0.010367874023969109, + 0.011137628810729534 + ], + "scorePercentiles" : { + "0.0" : 0.010622569864969365, + "50.0" : 0.010753898425173231, + "90.0" : 0.010880908953219899, + "95.0" : 0.010880908953219899, + "99.0" : 0.010880908953219899, + "99.9" : 0.010880908953219899, + "99.99" : 0.010880908953219899, + "99.999" : 0.010880908953219899, + "99.9999" : 0.010880908953219899, + "100.0" : 0.010880908953219899 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010622569864969365, + 0.010627355154230526, + 0.010632584495092119 + ], + [ + 0.010877877681329678, + 0.010880908953219899, + 0.010875212355254344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.132369830691392, + "scoreError" : 0.2254012314917079, + "scoreConfidence" : [ + 2.906968599199684, + 3.3577710621830996 + ], + "scorePercentiles" : { + "0.0" : 3.054211153846154, + "50.0" : 3.1344008644659658, + "90.0" : 3.207172176282051, + "95.0" : 3.207172176282051, + "99.0" : 3.207172176282051, + "99.9" : 3.207172176282051, + "99.99" : 3.207172176282051, + "99.999" : 3.207172176282051, + "99.9999" : 3.207172176282051, + "100.0" : 3.207172176282051 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0583114648318044, + 3.064661156862745, + 3.054211153846154 + ], + [ + 3.207172176282051, + 3.2041405720691865, + 3.20572246025641 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.755751717843389, + "scoreError" : 0.224103079278987, + "scoreConfidence" : [ + 2.531648638564402, + 2.9798547971223757 + ], + "scorePercentiles" : { + "0.0" : 2.6799126232583066, + "50.0" : 2.7488218531539115, + "90.0" : 2.8446509729806597, + "95.0" : 2.8446509729806597, + "99.0" : 2.8446509729806597, + "99.9" : 2.8446509729806597, + "99.99" : 2.8446509729806597, + "99.999" : 2.8446509729806597, + "99.9999" : 2.8446509729806597, + "100.0" : 2.8446509729806597 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.807409103564412, + 2.831377642412231, + 2.8446509729806597 + ], + [ + 2.6902346027434105, + 2.680925362101313, + 2.6799126232583066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18069378773291658, + "scoreError" : 0.007482142358572619, + "scoreConfidence" : [ + 0.17321164537434397, + 0.1881759300914892 + ], + "scorePercentiles" : { + "0.0" : 0.1773874220487805, + "50.0" : 0.1805687114124219, + "90.0" : 0.18402020941059566, + "95.0" : 0.18402020941059566, + "99.0" : 0.18402020941059566, + "99.9" : 0.18402020941059566, + "99.99" : 0.18402020941059566, + "99.999" : 0.18402020941059566, + "99.9999" : 0.18402020941059566, + "100.0" : 0.18402020941059566 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18183246037056566, + 0.17853424317569136, + 0.1773874220487805 + ], + [ + 0.1830834289375881, + 0.18402020941059566, + 0.17930496245427813 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32073315389110973, + "scoreError" : 0.004118638267239754, + "scoreConfidence" : [ + 0.31661451562387, + 0.3248517921583495 + ], + "scorePercentiles" : { + "0.0" : 0.3193641372273497, + "50.0" : 0.32055670670649206, + "90.0" : 0.3223893649376189, + "95.0" : 0.3223893649376189, + "99.0" : 0.3223893649376189, + "99.9" : 0.3223893649376189, + "99.99" : 0.3223893649376189, + "99.999" : 0.3223893649376189, + "99.9999" : 0.3223893649376189, + "100.0" : 0.3223893649376189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31944930279508066, + 0.3194147597738597, + 0.3193641372273497 + ], + [ + 0.3223893649376189, + 0.32166411061790345, + 0.3221172479948462 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14074623102859005, + "scoreError" : 0.013656340907119615, + "scoreConfidence" : [ + 0.12708989012147043, + 0.15440257193570966 + ], + "scorePercentiles" : { + "0.0" : 0.13624503378792627, + "50.0" : 0.14074474274269233, + "90.0" : 0.1452655243822722, + "95.0" : 0.1452655243822722, + "99.0" : 0.1452655243822722, + "99.9" : 0.1452655243822722, + "99.99" : 0.1452655243822722, + "99.999" : 0.1452655243822722, + "99.9999" : 0.1452655243822722, + "100.0" : 0.1452655243822722 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14520759298948713, + 0.1452655243822722, + 0.14510113045749357 + ], + [ + 0.13638835502789107, + 0.13624503378792627, + 0.13626974952646997 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4048787683522633, + "scoreError" : 0.014694050411327732, + "scoreConfidence" : [ + 0.39018471794093557, + 0.419572818763591 + ], + "scorePercentiles" : { + "0.0" : 0.39963506242007674, + "50.0" : 0.4047466854531962, + "90.0" : 0.41064748790703404, + "95.0" : 0.41064748790703404, + "99.0" : 0.41064748790703404, + "99.9" : 0.41064748790703404, + "99.99" : 0.41064748790703404, + "99.999" : 0.41064748790703404, + "99.9999" : 0.41064748790703404, + "100.0" : 0.41064748790703404 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4007099738740183, + 0.400065582349882, + 0.39963506242007674 + ], + [ + 0.4094311065301945, + 0.41064748790703404, + 0.4087833970323741 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15720273461936463, + "scoreError" : 0.010275625071061818, + "scoreConfidence" : [ + 0.14692710954830282, + 0.16747835969042643 + ], + "scorePercentiles" : { + "0.0" : 0.15366278443122974, + "50.0" : 0.15673182414429515, + "90.0" : 0.1612035853147417, + "95.0" : 0.1612035853147417, + "99.0" : 0.1612035853147417, + "99.9" : 0.1612035853147417, + "99.99" : 0.1612035853147417, + "99.999" : 0.1612035853147417, + "99.9999" : 0.1612035853147417, + "100.0" : 0.1612035853147417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15921509982486864, + 0.1612035853147417, + 0.1610284515152491 + ], + [ + 0.1538579381663769, + 0.15366278443122974, + 0.15424854846372163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048078161137925936, + "scoreError" : 0.005000568832200431, + "scoreConfidence" : [ + 0.043077592305725505, + 0.053078729970126366 + ], + "scorePercentiles" : { + "0.0" : 0.04627695980897114, + "50.0" : 0.0481695254169037, + "90.0" : 0.050022558673022764, + "95.0" : 0.050022558673022764, + "99.0" : 0.050022558673022764, + "99.9" : 0.050022558673022764, + "99.99" : 0.050022558673022764, + "99.999" : 0.050022558673022764, + "99.9999" : 0.050022558673022764, + "100.0" : 0.050022558673022764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.050022558673022764, + 0.04953634246439628, + 0.04950160851314493 + ], + [ + 0.046837442320662455, + 0.04629405504735804, + 0.04627695980897114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8575413.919945104, + "scoreError" : 164706.9264814469, + "scoreConfidence" : [ + 8410706.993463658, + 8740120.84642655 + ], + "scorePercentiles" : { + "0.0" : 8458832.218089603, + "50.0" : 8591315.29586412, + "90.0" : 8622857.265517242, + "95.0" : 8622857.265517242, + "99.0" : 8622857.265517242, + "99.9" : 8622857.265517242, + "99.99" : 8622857.265517242, + "99.999" : 8622857.265517242, + "99.9999" : 8622857.265517242, + "100.0" : 8622857.265517242 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8585675.61888412, + 8585682.228326181, + 8458832.218089603 + ], + [ + 8602487.825451419, + 8622857.265517242, + 8596948.363402061 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-16T23:25:50Z-d5fdf3a58cfc02adc0ffca775bcf55f27036025f-jdk17.json b/performance-results/2025-05-16T23:25:50Z-d5fdf3a58cfc02adc0ffca775bcf55f27036025f-jdk17.json new file mode 100644 index 0000000000..1278df91d4 --- /dev/null +++ b/performance-results/2025-05-16T23:25:50Z-d5fdf3a58cfc02adc0ffca775bcf55f27036025f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3485332952594336, + "scoreError" : 0.04879126773174917, + "scoreConfidence" : [ + 3.2997420275276843, + 3.397324562991183 + ], + "scorePercentiles" : { + "0.0" : 3.3412172259327924, + "50.0" : 3.348830052853981, + "90.0" : 3.355255849396979, + "95.0" : 3.355255849396979, + "99.0" : 3.355255849396979, + "99.9" : 3.355255849396979, + "99.99" : 3.355255849396979, + "99.999" : 3.355255849396979, + "99.9999" : 3.355255849396979, + "100.0" : 3.355255849396979 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3412172259327924, + 3.355255849396979 + ], + [ + 3.3428243664670387, + 3.3548357392409236 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6916768527424648, + "scoreError" : 0.009872646749575645, + "scoreConfidence" : [ + 1.6818042059928893, + 1.7015494994920404 + ], + "scorePercentiles" : { + "0.0" : 1.6907214860064301, + "50.0" : 1.6910134608650778, + "90.0" : 1.6939590032332736, + "95.0" : 1.6939590032332736, + "99.0" : 1.6939590032332736, + "99.9" : 1.6939590032332736, + "99.99" : 1.6939590032332736, + "99.999" : 1.6939590032332736, + "99.9999" : 1.6939590032332736, + "100.0" : 1.6939590032332736 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6907214860064301, + 1.6939590032332736 + ], + [ + 1.6910402200619792, + 1.6909867016681763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8461978928693442, + "scoreError" : 0.041057934226326614, + "scoreConfidence" : [ + 0.8051399586430176, + 0.8872558270956709 + ], + "scorePercentiles" : { + "0.0" : 0.8387615585495802, + "50.0" : 0.8465910640552544, + "90.0" : 0.8528478848172879, + "95.0" : 0.8528478848172879, + "99.0" : 0.8528478848172879, + "99.9" : 0.8528478848172879, + "99.99" : 0.8528478848172879, + "99.999" : 0.8528478848172879, + "99.9999" : 0.8528478848172879, + "100.0" : 0.8528478848172879 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8433291474731703, + 0.8498529806373385 + ], + [ + 0.8387615585495802, + 0.8528478848172879 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.256599471459527, + "scoreError" : 0.2787524220185262, + "scoreConfidence" : [ + 15.977847049441001, + 16.535351893478055 + ], + "scorePercentiles" : { + "0.0" : 16.155066260423812, + "50.0" : 16.26108550605796, + "90.0" : 16.355515477817196, + "95.0" : 16.355515477817196, + "99.0" : 16.355515477817196, + "99.9" : 16.355515477817196, + "99.99" : 16.355515477817196, + "99.999" : 16.355515477817196, + "99.9999" : 16.355515477817196, + "100.0" : 16.355515477817196 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.182277888526613, + 16.16168199143196, + 16.155066260423812 + ], + [ + 16.34516208696827, + 16.33989312358931, + 16.355515477817196 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2683.9936271796705, + "scoreError" : 19.319469889376673, + "scoreConfidence" : [ + 2664.674157290294, + 2703.313097069047 + ], + "scorePercentiles" : { + "0.0" : 2676.389209418719, + "50.0" : 2683.8525718996325, + "90.0" : 2691.329297784617, + "95.0" : 2691.329297784617, + "99.0" : 2691.329297784617, + "99.9" : 2691.329297784617, + "99.99" : 2691.329297784617, + "99.999" : 2691.329297784617, + "99.9999" : 2691.329297784617, + "100.0" : 2691.329297784617 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2688.3946117641317, + 2691.329297784617, + 2690.758881758454 + ], + [ + 2677.7792303169663, + 2676.389209418719, + 2679.3105320351333 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77142.05573032568, + "scoreError" : 220.90521261295947, + "scoreConfidence" : [ + 76921.15051771273, + 77362.96094293863 + ], + "scorePercentiles" : { + "0.0" : 77054.66709590497, + "50.0" : 77143.46969524735, + "90.0" : 77224.817896545, + "95.0" : 77224.817896545, + "99.0" : 77224.817896545, + "99.9" : 77224.817896545, + "99.99" : 77224.817896545, + "99.999" : 77224.817896545, + "99.9999" : 77224.817896545, + "100.0" : 77224.817896545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77202.83787507354, + 77224.817896545, + 77211.83131580667 + ], + [ + 77084.10151542115, + 77074.07868320274, + 77054.66709590497 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.5613405009665, + "scoreError" : 2.097969084329703, + "scoreConfidence" : [ + 359.4633714166368, + 363.65930958529617 + ], + "scorePercentiles" : { + "0.0" : 360.768968493252, + "50.0" : 361.4501338279872, + "90.0" : 362.76065577734784, + "95.0" : 362.76065577734784, + "99.0" : 362.76065577734784, + "99.9" : 362.76065577734784, + "99.99" : 362.76065577734784, + "99.999" : 362.76065577734784, + "99.9999" : 362.76065577734784, + "100.0" : 362.76065577734784 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.768968493252, + 361.5579749957365, + 360.8913829603599 + ], + [ + 361.34229266023794, + 362.0467681188648, + 362.76065577734784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.41286281722006, + "scoreError" : 2.7658785609669714, + "scoreConfidence" : [ + 112.64698425625309, + 118.17874137818703 + ], + "scorePercentiles" : { + "0.0" : 114.46377517976738, + "50.0" : 115.3826217566801, + "90.0" : 116.43094615643359, + "95.0" : 116.43094615643359, + "99.0" : 116.43094615643359, + "99.9" : 116.43094615643359, + "99.99" : 116.43094615643359, + "99.999" : 116.43094615643359, + "99.9999" : 116.43094615643359, + "100.0" : 116.43094615643359 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.5410049109041, + 114.54011354922763, + 114.46377517976738 + ], + [ + 116.43094615643359, + 116.2242386024561, + 116.27709850453152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06123955041553603, + "scoreError" : 6.686315176849867E-4, + "scoreConfidence" : [ + 0.060570918897851045, + 0.06190818193322102 + ], + "scorePercentiles" : { + "0.0" : 0.06098943727358111, + "50.0" : 0.06121367408569922, + "90.0" : 0.06153322701149425, + "95.0" : 0.06153322701149425, + "99.0" : 0.06153322701149425, + "99.9" : 0.06153322701149425, + "99.99" : 0.06153322701149425, + "99.999" : 0.06153322701149425, + "99.9999" : 0.06153322701149425, + "100.0" : 0.06153322701149425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061380435174102785, + 0.061441730188377834, + 0.06153322701149425 + ], + [ + 0.06098943727358111, + 0.06104555984836461, + 0.061046912997295665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6379009231795E-4, + "scoreError" : 3.9808509128719546E-5, + "scoreConfidence" : [ + 3.2398158318923046E-4, + 4.0359860144666956E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5024822091671396E-4, + "50.0" : 3.639527746232146E-4, + "90.0" : 3.768244804063268E-4, + "95.0" : 3.768244804063268E-4, + "99.0" : 3.768244804063268E-4, + "99.9" : 3.768244804063268E-4, + "99.99" : 3.768244804063268E-4, + "99.999" : 3.768244804063268E-4, + "99.9999" : 3.768244804063268E-4, + "100.0" : 3.768244804063268E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5123385198576916E-4, + 3.510211961113107E-4, + 3.5024822091671396E-4 + ], + [ + 3.768244804063268E-4, + 3.767411072269191E-4, + 3.7667169726066E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12497599318251795, + "scoreError" : 0.004576699170764069, + "scoreConfidence" : [ + 0.12039929401175388, + 0.129552692353282 + ], + "scorePercentiles" : { + "0.0" : 0.12328780417442334, + "50.0" : 0.12500886529403304, + "90.0" : 0.1266213751851805, + "95.0" : 0.1266213751851805, + "99.0" : 0.1266213751851805, + "99.9" : 0.1266213751851805, + "99.99" : 0.1266213751851805, + "99.999" : 0.1266213751851805, + "99.9999" : 0.1266213751851805, + "100.0" : 0.1266213751851805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12636516821248958, + 0.1266213751851805, + 0.12639278700707784 + ], + [ + 0.12365256237557652, + 0.12328780417442334, + 0.12353626214035998 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01293874240767341, + "scoreError" : 2.1020577336480913E-4, + "scoreConfidence" : [ + 0.0127285366343086, + 0.01314894818103822 + ], + "scorePercentiles" : { + "0.0" : 0.012866964603477892, + "50.0" : 0.012937122921233453, + "90.0" : 0.01302185110156481, + "95.0" : 0.01302185110156481, + "99.0" : 0.01302185110156481, + "99.9" : 0.01302185110156481, + "99.99" : 0.01302185110156481, + "99.999" : 0.01302185110156481, + "99.9999" : 0.01302185110156481, + "100.0" : 0.01302185110156481 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012869310811889037, + 0.01287609668148686, + 0.012866964603477892 + ], + [ + 0.012998149160980048, + 0.013000082086641811, + 0.01302185110156481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0507447085083805, + "scoreError" : 0.18511727393568816, + "scoreConfidence" : [ + 0.8656274345726924, + 1.2358619824440686 + ], + "scorePercentiles" : { + "0.0" : 0.9882363250988142, + "50.0" : 1.0519249063666862, + "90.0" : 1.1120452586456133, + "95.0" : 1.1120452586456133, + "99.0" : 1.1120452586456133, + "99.9" : 1.1120452586456133, + "99.99" : 1.1120452586456133, + "99.999" : 1.1120452586456133, + "99.9999" : 1.1120452586456133, + "100.0" : 1.1120452586456133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.109943247835738, + 1.1120452586456133, + 1.1109503237058431 + ], + [ + 0.9939065648976346, + 0.9882363250988142, + 0.9893865308666403 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01114496222190449, + "scoreError" : 9.845403968771883E-4, + "scoreConfidence" : [ + 0.010160421825027301, + 0.012129502618781677 + ], + "scorePercentiles" : { + "0.0" : 0.010818756617168178, + "50.0" : 0.011145967326004973, + "90.0" : 0.011474907342171877, + "95.0" : 0.011474907342171877, + "99.0" : 0.011474907342171877, + "99.9" : 0.011474907342171877, + "99.99" : 0.011474907342171877, + "99.999" : 0.011474907342171877, + "99.9999" : 0.011474907342171877, + "100.0" : 0.011474907342171877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01082326582045582, + 0.010831517569151253, + 0.010818756617168178 + ], + [ + 0.011474907342171877, + 0.011460417082858694, + 0.011460908899621113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.259013992367413, + "scoreError" : 0.05551585960771413, + "scoreConfidence" : [ + 3.203498132759699, + 3.314529851975127 + ], + "scorePercentiles" : { + "0.0" : 3.229602766946417, + "50.0" : 3.258843932496002, + "90.0" : 3.284254667760998, + "95.0" : 3.284254667760998, + "99.0" : 3.284254667760998, + "99.9" : 3.284254667760998, + "99.99" : 3.284254667760998, + "99.999" : 3.284254667760998, + "99.9999" : 3.284254667760998, + "100.0" : 3.284254667760998 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2652488929503916, + 3.284254667760998, + 3.2747843798297316 + ], + [ + 3.229602766946417, + 3.2524389720416127, + 3.2477542746753247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.736860866743806, + "scoreError" : 0.06131591517156935, + "scoreConfidence" : [ + 2.675544951572237, + 2.7981767819153753 + ], + "scorePercentiles" : { + "0.0" : 2.715666369264187, + "50.0" : 2.729530704848, + "90.0" : 2.766776043430152, + "95.0" : 2.766776043430152, + "99.0" : 2.766776043430152, + "99.9" : 2.766776043430152, + "99.99" : 2.766776043430152, + "99.999" : 2.766776043430152, + "99.9999" : 2.766776043430152, + "100.0" : 2.766776043430152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.736017878522572, + 2.7602901918299754, + 2.766776043430152 + ], + [ + 2.715666369264187, + 2.7230435311734276, + 2.719371186242523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1762838807846657, + "scoreError" : 0.002834068184915265, + "scoreConfidence" : [ + 0.17344981259975042, + 0.17911794896958097 + ], + "scorePercentiles" : { + "0.0" : 0.17529885929146144, + "50.0" : 0.17625626323278742, + "90.0" : 0.17736376577631158, + "95.0" : 0.17736376577631158, + "99.0" : 0.17736376577631158, + "99.9" : 0.17736376577631158, + "99.99" : 0.17736376577631158, + "99.999" : 0.17736376577631158, + "99.9999" : 0.17736376577631158, + "100.0" : 0.17736376577631158 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17713494489416348, + 0.17710818466633607, + 0.17736376577631158 + ], + [ + 0.17540434179923878, + 0.17539318828048267, + 0.17529885929146144 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31711075907888536, + "scoreError" : 0.015524970061448703, + "scoreConfidence" : [ + 0.30158578901743666, + 0.33263572914033407 + ], + "scorePercentiles" : { + "0.0" : 0.31133116599732263, + "50.0" : 0.31737682917524723, + "90.0" : 0.3224552843001322, + "95.0" : 0.3224552843001322, + "99.0" : 0.3224552843001322, + "99.9" : 0.3224552843001322, + "99.99" : 0.3224552843001322, + "99.999" : 0.3224552843001322, + "99.9999" : 0.3224552843001322, + "100.0" : 0.3224552843001322 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.313052211557726, + 0.3118787157960393, + 0.31133116599732263 + ], + [ + 0.3222457300293236, + 0.3224552843001322, + 0.32170144679276846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14568844816893337, + "scoreError" : 0.010220215553954378, + "scoreConfidence" : [ + 0.13546823261497898, + 0.15590866372288775 + ], + "scorePercentiles" : { + "0.0" : 0.13968616668296294, + "50.0" : 0.146890473771341, + "90.0" : 0.1493058369613903, + "95.0" : 0.1493058369613903, + "99.0" : 0.1493058369613903, + "99.9" : 0.1493058369613903, + "99.99" : 0.1493058369613903, + "99.999" : 0.1493058369613903, + "99.9999" : 0.1493058369613903, + "100.0" : 0.1493058369613903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1493058369613903, + 0.14802655261482897, + 0.14811119206730058 + ], + [ + 0.14575439492785308, + 0.1432465457592643, + 0.13968616668296294 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3959323552236957, + "scoreError" : 0.04674963050880147, + "scoreConfidence" : [ + 0.3491827247148942, + 0.4426819857324972 + ], + "scorePercentiles" : { + "0.0" : 0.3808367657945847, + "50.0" : 0.3937994517094966, + "90.0" : 0.41643206408761557, + "95.0" : 0.41643206408761557, + "99.0" : 0.41643206408761557, + "99.9" : 0.41643206408761557, + "99.99" : 0.41643206408761557, + "99.999" : 0.41643206408761557, + "99.9999" : 0.41643206408761557, + "100.0" : 0.41643206408761557 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41643206408761557, + 0.40973263051583564, + 0.4064258172396976 + ], + [ + 0.3808367657945847, + 0.3809937675251448, + 0.38117308617929563 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15748971492947586, + "scoreError" : 0.004117480189868355, + "scoreConfidence" : [ + 0.1533722347396075, + 0.1616071951193442 + ], + "scorePercentiles" : { + "0.0" : 0.1562519462977141, + "50.0" : 0.1570571049900381, + "90.0" : 0.1598164303453566, + "95.0" : 0.1598164303453566, + "99.0" : 0.1598164303453566, + "99.9" : 0.1598164303453566, + "99.99" : 0.1598164303453566, + "99.999" : 0.1598164303453566, + "99.9999" : 0.1598164303453566, + "100.0" : 0.1598164303453566 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15635164122889306, + 0.1562519462977141, + 0.1562733953150394 + ], + [ + 0.1598164303453566, + 0.15848230763866877, + 0.1577625687511832 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047417499189958266, + "scoreError" : 0.0010754251010530894, + "scoreConfidence" : [ + 0.04634207408890518, + 0.048492924291011354 + ], + "scorePercentiles" : { + "0.0" : 0.04706691139800534, + "50.0" : 0.04731835108258424, + "90.0" : 0.0480060865008881, + "95.0" : 0.0480060865008881, + "99.0" : 0.0480060865008881, + "99.9" : 0.0480060865008881, + "99.99" : 0.0480060865008881, + "99.999" : 0.0480060865008881, + "99.9999" : 0.0480060865008881, + "100.0" : 0.0480060865008881 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04715241316094718, + 0.04708900419556711, + 0.04706691139800534 + ], + [ + 0.0480060865008881, + 0.0477062908801206, + 0.047484289004221296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8418890.226238409, + "scoreError" : 359756.97733033716, + "scoreConfidence" : [ + 8059133.248908072, + 8778647.203568745 + ], + "scorePercentiles" : { + "0.0" : 8300239.660580913, + "50.0" : 8416218.803516183, + "90.0" : 8541675.653287789, + "95.0" : 8541675.653287789, + "99.0" : 8541675.653287789, + "99.9" : 8541675.653287789, + "99.99" : 8541675.653287789, + "99.999" : 8541675.653287789, + "99.9999" : 8541675.653287789, + "100.0" : 8541675.653287789 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8541675.653287789, + 8538739.727815699, + 8527320.139812447 + ], + [ + 8300239.660580913, + 8305117.467219917, + 8300248.708713693 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-19T12:39:17Z-f1a512cab0cc343e4da7f6ecc15afabaf521a9c1-jdk17.json b/performance-results/2025-05-19T12:39:17Z-f1a512cab0cc343e4da7f6ecc15afabaf521a9c1-jdk17.json new file mode 100644 index 0000000000..0132b3cca8 --- /dev/null +++ b/performance-results/2025-05-19T12:39:17Z-f1a512cab0cc343e4da7f6ecc15afabaf521a9c1-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3121402580415644, + "scoreError" : 0.02028391942989787, + "scoreConfidence" : [ + 3.2918563386116664, + 3.3324241774714625 + ], + "scorePercentiles" : { + "0.0" : 3.308974889215251, + "50.0" : 3.311580657577065, + "90.0" : 3.316424827796877, + "95.0" : 3.316424827796877, + "99.0" : 3.316424827796877, + "99.9" : 3.316424827796877, + "99.99" : 3.316424827796877, + "99.999" : 3.316424827796877, + "99.9999" : 3.316424827796877, + "100.0" : 3.316424827796877 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.308974889215251, + 3.316424827796877 + ], + [ + 3.311053501353287, + 3.3121078138008424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6735854199994473, + "scoreError" : 0.023589887737052586, + "scoreConfidence" : [ + 1.6499955322623947, + 1.6971753077365 + ], + "scorePercentiles" : { + "0.0" : 1.6690259000647742, + "50.0" : 1.6743220071926057, + "90.0" : 1.676671765547804, + "95.0" : 1.676671765547804, + "99.0" : 1.676671765547804, + "99.9" : 1.676671765547804, + "99.99" : 1.676671765547804, + "99.999" : 1.676671765547804, + "99.9999" : 1.676671765547804, + "100.0" : 1.676671765547804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.672250785351506, + 1.6763932290337056 + ], + [ + 1.6690259000647742, + 1.676671765547804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8430090854288081, + "scoreError" : 0.026911393872755086, + "scoreConfidence" : [ + 0.816097691556053, + 0.8699204793015632 + ], + "scorePercentiles" : { + "0.0" : 0.8378909150493596, + "50.0" : 0.8433555202774811, + "90.0" : 0.8474343861109108, + "95.0" : 0.8474343861109108, + "99.0" : 0.8474343861109108, + "99.9" : 0.8474343861109108, + "99.99" : 0.8474343861109108, + "99.999" : 0.8474343861109108, + "99.9999" : 0.8474343861109108, + "100.0" : 0.8474343861109108 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8378909150493596, + 0.8450892865944613 + ], + [ + 0.8416217539605009, + 0.8474343861109108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.938019006834173, + "scoreError" : 0.15457242385146122, + "scoreConfidence" : [ + 15.783446582982712, + 16.092591430685633 + ], + "scorePercentiles" : { + "0.0" : 15.867640865557025, + "50.0" : 15.946860258386561, + "90.0" : 16.016217456306233, + "95.0" : 16.016217456306233, + "99.0" : 16.016217456306233, + "99.9" : 16.016217456306233, + "99.99" : 16.016217456306233, + "99.999" : 16.016217456306233, + "99.9999" : 16.016217456306233, + "100.0" : 16.016217456306233 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.884564970388242, + 16.016217456306233, + 15.959689174101978 + ], + [ + 15.965970231980414, + 15.934031342671144, + 15.867640865557025 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2725.61884870853, + "scoreError" : 113.64970415838532, + "scoreConfidence" : [ + 2611.969144550145, + 2839.2685528669153 + ], + "scorePercentiles" : { + "0.0" : 2680.388351024052, + "50.0" : 2716.9758113546254, + "90.0" : 2792.2587875657173, + "95.0" : 2792.2587875657173, + "99.0" : 2792.2587875657173, + "99.9" : 2792.2587875657173, + "99.99" : 2792.2587875657173, + "99.999" : 2792.2587875657173, + "99.9999" : 2792.2587875657173, + "100.0" : 2792.2587875657173 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2707.811082218431, + 2697.0972000224874, + 2680.388351024052 + ], + [ + 2726.14054049082, + 2792.2587875657173, + 2750.0171309296725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75810.08383031965, + "scoreError" : 3141.8662676566746, + "scoreConfidence" : [ + 72668.21756266298, + 78951.95009797633 + ], + "scorePercentiles" : { + "0.0" : 74679.74027226919, + "50.0" : 75850.58456337653, + "90.0" : 76832.58544107577, + "95.0" : 76832.58544107577, + "99.0" : 76832.58544107577, + "99.9" : 76832.58544107577, + "99.99" : 76832.58544107577, + "99.999" : 76832.58544107577, + "99.9999" : 76832.58544107577, + "100.0" : 76832.58544107577 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74679.74027226919, + 74814.6829365795, + 74872.20956046304 + ], + [ + 76832.32520524043, + 76832.58544107577, + 76828.95956629 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 341.32415407808384, + "scoreError" : 7.543962031610742, + "scoreConfidence" : [ + 333.7801920464731, + 348.8681161096946 + ], + "scorePercentiles" : { + "0.0" : 337.8196560471646, + "50.0" : 341.8869142863537, + "90.0" : 343.8692681627958, + "95.0" : 343.8692681627958, + "99.0" : 343.8692681627958, + "99.9" : 343.8692681627958, + "99.99" : 343.8692681627958, + "99.999" : 343.8692681627958, + "99.9999" : 343.8692681627958, + "100.0" : 343.8692681627958 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.1918644652569, + 343.8692681627958, + 343.8271167655657 + ], + [ + 337.8196560471646, + 338.65505492026915, + 340.5819641074505 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.27834841420095, + "scoreError" : 3.889262504071276, + "scoreConfidence" : [ + 108.38908591012967, + 116.16761091827223 + ], + "scorePercentiles" : { + "0.0" : 110.83269828479163, + "50.0" : 112.22137383181743, + "90.0" : 114.79967199761434, + "95.0" : 114.79967199761434, + "99.0" : 114.79967199761434, + "99.9" : 114.79967199761434, + "99.99" : 114.79967199761434, + "99.999" : 114.79967199761434, + "99.9999" : 114.79967199761434, + "100.0" : 114.79967199761434 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.83269828479163, + 112.33188657205643, + 112.37962813567452 + ], + [ + 111.21534440349028, + 112.11086109157844, + 114.79967199761434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06276492044795608, + "scoreError" : 7.965691903985652E-4, + "scoreConfidence" : [ + 0.061968351257557515, + 0.06356148963835465 + ], + "scorePercentiles" : { + "0.0" : 0.06234056212128768, + "50.0" : 0.06283716544870513, + "90.0" : 0.06311808624302558, + "95.0" : 0.06311808624302558, + "99.0" : 0.06311808624302558, + "99.9" : 0.06311808624302558, + "99.99" : 0.06311808624302558, + "99.999" : 0.06311808624302558, + "99.9999" : 0.06311808624302558, + "100.0" : 0.06311808624302558 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06291894641902138, + 0.06291722101143814, + 0.06311808624302558 + ], + [ + 0.06234056212128768, + 0.0625375970069916, + 0.06275710988597212 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.853481788238693E-4, + "scoreError" : 5.249140156433392E-5, + "scoreConfidence" : [ + 3.328567772595354E-4, + 4.3783958038820324E-4 + ], + "scorePercentiles" : { + "0.0" : 3.648880582091008E-4, + "50.0" : 3.8651054012512416E-4, + "90.0" : 4.0370106381488487E-4, + "95.0" : 4.0370106381488487E-4, + "99.0" : 4.0370106381488487E-4, + "99.9" : 4.0370106381488487E-4, + "99.99" : 4.0370106381488487E-4, + "99.999" : 4.0370106381488487E-4, + "99.9999" : 4.0370106381488487E-4, + "100.0" : 4.0370106381488487E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.71514461758944E-4, + 3.687461337037666E-4, + 3.648880582091008E-4 + ], + [ + 4.015066184913043E-4, + 4.017327369652154E-4, + 4.0370106381488487E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12482460744059132, + "scoreError" : 0.0010689589775819187, + "scoreConfidence" : [ + 0.1237556484630094, + 0.12589356641817323 + ], + "scorePercentiles" : { + "0.0" : 0.1241299858621717, + "50.0" : 0.12498991572853144, + "90.0" : 0.1251225155962614, + "95.0" : 0.1251225155962614, + "99.0" : 0.1251225155962614, + "99.9" : 0.1251225155962614, + "99.99" : 0.1251225155962614, + "99.999" : 0.1251225155962614, + "99.9999" : 0.1251225155962614, + "100.0" : 0.1251225155962614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1241299858621717, + 0.12499992591435215, + 0.1251225155962614 + ], + [ + 0.12497990554271074, + 0.12507933626846443, + 0.12463597545958746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01313064531699191, + "scoreError" : 3.673643974808897E-5, + "scoreConfidence" : [ + 0.01309390887724382, + 0.01316738175674 + ], + "scorePercentiles" : { + "0.0" : 0.013115192152532236, + "50.0" : 0.013130055202360037, + "90.0" : 0.013148006523925662, + "95.0" : 0.013148006523925662, + "99.0" : 0.013148006523925662, + "99.9" : 0.013148006523925662, + "99.99" : 0.013148006523925662, + "99.999" : 0.013148006523925662, + "99.9999" : 0.013148006523925662, + "100.0" : 0.013148006523925662 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013129806353691265, + 0.013130304051028809, + 0.013115192152532236 + ], + [ + 0.013117695158503936, + 0.01314286766226956, + 0.013148006523925662 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0333822377778963, + "scoreError" : 0.28805500263543654, + "scoreConfidence" : [ + 0.7453272351424598, + 1.3214372404133328 + ], + "scorePercentiles" : { + "0.0" : 0.9373642665666886, + "50.0" : 1.0331401602532695, + "90.0" : 1.1285810742579845, + "95.0" : 1.1285810742579845, + "99.0" : 1.1285810742579845, + "99.9" : 1.1285810742579845, + "99.99" : 1.1285810742579845, + "99.999" : 1.1285810742579845, + "99.9999" : 1.1285810742579845, + "100.0" : 1.1285810742579845 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1285810742579845, + 1.1274754954904171, + 1.12537454056487 + ], + [ + 0.9373642665666886, + 0.940905779941669, + 0.9405922698457487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011185019594943302, + "scoreError" : 5.92307371630041E-4, + "scoreConfidence" : [ + 0.010592712223313261, + 0.011777326966573343 + ], + "scorePercentiles" : { + "0.0" : 0.010958918005983365, + "50.0" : 0.011187293368333495, + "90.0" : 0.011389528301113184, + "95.0" : 0.011389528301113184, + "99.0" : 0.011389528301113184, + "99.9" : 0.011389528301113184, + "99.99" : 0.011389528301113184, + "99.999" : 0.011389528301113184, + "99.9999" : 0.011389528301113184, + "100.0" : 0.011389528301113184 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010958918005983365, + 0.011015194562609736, + 0.011005476577649335 + ], + [ + 0.011359392174057254, + 0.011381607948246938, + 0.011389528301113184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.335579489186422, + "scoreError" : 0.06194368295443053, + "scoreConfidence" : [ + 3.2736358062319915, + 3.3975231721408528 + ], + "scorePercentiles" : { + "0.0" : 3.308568775132275, + "50.0" : 3.3403229046044913, + "90.0" : 3.359624419744795, + "95.0" : 3.359624419744795, + "99.0" : 3.359624419744795, + "99.9" : 3.359624419744795, + "99.99" : 3.359624419744795, + "99.999" : 3.359624419744795, + "99.9999" : 3.359624419744795, + "100.0" : 3.359624419744795 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3093267915287887, + 3.308568775132275, + 3.338261614152203 + ], + [ + 3.355311139503689, + 3.359624419744795, + 3.34238419505678 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9200156228834935, + "scoreError" : 0.03468371532879787, + "scoreConfidence" : [ + 2.8853319075546957, + 2.9546993382122912 + ], + "scorePercentiles" : { + "0.0" : 2.9046826526285217, + "50.0" : 2.918061654318713, + "90.0" : 2.935145964201878, + "95.0" : 2.935145964201878, + "99.0" : 2.935145964201878, + "99.9" : 2.935145964201878, + "99.99" : 2.935145964201878, + "99.999" : 2.935145964201878, + "99.9999" : 2.935145964201878, + "100.0" : 2.935145964201878 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.910921332654249, + 2.9138091704545452, + 2.9046826526285217 + ], + [ + 2.933220479178886, + 2.935145964201878, + 2.9223141381828803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18249072178489034, + "scoreError" : 0.011949274627893655, + "scoreConfidence" : [ + 0.17054144715699668, + 0.194439996412784 + ], + "scorePercentiles" : { + "0.0" : 0.17864398808481752, + "50.0" : 0.18200473028051978, + "90.0" : 0.18827531001957978, + "95.0" : 0.18827531001957978, + "99.0" : 0.18827531001957978, + "99.9" : 0.18827531001957978, + "99.99" : 0.18827531001957978, + "99.999" : 0.18827531001957978, + "99.9999" : 0.18827531001957978, + "100.0" : 0.18827531001957978 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18523700585336939, + 0.18827531001957978, + 0.18522473663641414 + ], + [ + 0.17878472392462544, + 0.17877856619053578, + 0.17864398808481752 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3204501963942008, + "scoreError" : 0.0021333915829879137, + "scoreConfidence" : [ + 0.3183168048112129, + 0.3225835879771887 + ], + "scorePercentiles" : { + "0.0" : 0.31899667329101405, + "50.0" : 0.3206204946649439, + "90.0" : 0.3212193724665146, + "95.0" : 0.3212193724665146, + "99.0" : 0.3212193724665146, + "99.9" : 0.3212193724665146, + "99.99" : 0.3212193724665146, + "99.999" : 0.3212193724665146, + "99.9999" : 0.3212193724665146, + "100.0" : 0.3212193724665146 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3207515224196549, + 0.3204838529034739, + 0.320489466910233 + ], + [ + 0.31899667329101405, + 0.3212193724665146, + 0.3207602903743144 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1456780624236438, + "scoreError" : 0.006062498037854331, + "scoreConfidence" : [ + 0.13961556438578948, + 0.15174056046149814 + ], + "scorePercentiles" : { + "0.0" : 0.14327140853020817, + "50.0" : 0.14555049015311, + "90.0" : 0.1481327087647573, + "95.0" : 0.1481327087647573, + "99.0" : 0.1481327087647573, + "99.9" : 0.1481327087647573, + "99.99" : 0.1481327087647573, + "99.999" : 0.1481327087647573, + "99.9999" : 0.1481327087647573, + "100.0" : 0.1481327087647573 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1481327087647573, + 0.14700531095463498, + 0.14768764885101607 + ], + [ + 0.14409566935158502, + 0.1438756280896613, + 0.14327140853020817 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.393988910174538, + "scoreError" : 0.007616769645711548, + "scoreConfidence" : [ + 0.38637214052882646, + 0.4016056798202496 + ], + "scorePercentiles" : { + "0.0" : 0.39127959421707487, + "50.0" : 0.3938838809398213, + "90.0" : 0.3972072719942805, + "95.0" : 0.3972072719942805, + "99.0" : 0.3972072719942805, + "99.9" : 0.3972072719942805, + "99.99" : 0.3972072719942805, + "99.999" : 0.3972072719942805, + "99.9999" : 0.3972072719942805, + "100.0" : 0.3972072719942805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39180001014731236, + 0.3915547898981989, + 0.39127959421707487 + ], + [ + 0.3972072719942805, + 0.3961240430580313, + 0.39596775173233023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15573958080067427, + "scoreError" : 0.0044784914690043556, + "scoreConfidence" : [ + 0.1512610893316699, + 0.16021807226967863 + ], + "scorePercentiles" : { + "0.0" : 0.15444332881853282, + "50.0" : 0.15536494872211853, + "90.0" : 0.1585405062225534, + "95.0" : 0.1585405062225534, + "99.0" : 0.1585405062225534, + "99.9" : 0.1585405062225534, + "99.99" : 0.1585405062225534, + "99.999" : 0.1585405062225534, + "99.9999" : 0.1585405062225534, + "100.0" : 0.1585405062225534 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1585405062225534, + 0.15625105103045264, + 0.15609995815057054 + ], + [ + 0.15444332881853282, + 0.1546299392936665, + 0.15447270128826965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04802610219461675, + "scoreError" : 0.0013919515088104935, + "scoreConfidence" : [ + 0.04663415068580625, + 0.049418053703427244 + ], + "scorePercentiles" : { + "0.0" : 0.0475161795750221, + "50.0" : 0.04785542582467714, + "90.0" : 0.04871813496633636, + "95.0" : 0.04871813496633636, + "99.0" : 0.04871813496633636, + "99.9" : 0.04871813496633636, + "99.99" : 0.04871813496633636, + "99.999" : 0.04871813496633636, + "99.9999" : 0.04871813496633636, + "100.0" : 0.04871813496633636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04871813496633636, + 0.04853959621591974, + 0.048006456477907716 + ], + [ + 0.04767185076106802, + 0.0475161795750221, + 0.04770439517144656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9050300.601748051, + "scoreError" : 216867.14926966996, + "scoreConfidence" : [ + 8833433.45247838, + 9267167.751017721 + ], + "scorePercentiles" : { + "0.0" : 8902809.979537366, + "50.0" : 9071584.07643768, + "90.0" : 9107113.215650592, + "95.0" : 9107113.215650592, + "99.0" : 9107113.215650592, + "99.9" : 9107113.215650592, + "99.99" : 9107113.215650592, + "99.999" : 9107113.215650592, + "99.9999" : 9107113.215650592, + "100.0" : 9107113.215650592 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9107113.215650592, + 9051294.767420815, + 8902809.979537366 + ], + [ + 9042440.513562387, + 9106271.748862602, + 9091873.385454545 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-22T22:09:31Z-9ac3e6348793f5ce7536c5833a1dddb7cefb58ab-jdk17.json b/performance-results/2025-05-22T22:09:31Z-9ac3e6348793f5ce7536c5833a1dddb7cefb58ab-jdk17.json new file mode 100644 index 0000000000..3c820c84ef --- /dev/null +++ b/performance-results/2025-05-22T22:09:31Z-9ac3e6348793f5ce7536c5833a1dddb7cefb58ab-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.33689114770609, + "scoreError" : 0.040328856012277293, + "scoreConfidence" : [ + 3.296562291693813, + 3.3772200037183673 + ], + "scorePercentiles" : { + "0.0" : 3.3292767884336545, + "50.0" : 3.337568421406037, + "90.0" : 3.3431509595786317, + "95.0" : 3.3431509595786317, + "99.0" : 3.3431509595786317, + "99.9" : 3.3431509595786317, + "99.99" : 3.3431509595786317, + "99.999" : 3.3431509595786317, + "99.9999" : 3.3431509595786317, + "100.0" : 3.3431509595786317 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3345051958206513, + 3.3431509595786317 + ], + [ + 3.3292767884336545, + 3.3406316469914223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6831562025835927, + "scoreError" : 0.03442981630637006, + "scoreConfidence" : [ + 1.6487263862772226, + 1.7175860188899628 + ], + "scorePercentiles" : { + "0.0" : 1.678523315992677, + "50.0" : 1.681699102127212, + "90.0" : 1.6907032900872698, + "95.0" : 1.6907032900872698, + "99.0" : 1.6907032900872698, + "99.9" : 1.6907032900872698, + "99.99" : 1.6907032900872698, + "99.999" : 1.6907032900872698, + "99.9999" : 1.6907032900872698, + "100.0" : 1.6907032900872698 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6805819699008329, + 1.6907032900872698 + ], + [ + 1.678523315992677, + 1.6828162343535913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8488580671569362, + "scoreError" : 0.020632400380486464, + "scoreConfidence" : [ + 0.8282256667764498, + 0.8694904675374227 + ], + "scorePercentiles" : { + "0.0" : 0.8450366414615168, + "50.0" : 0.8488991330101565, + "90.0" : 0.8525973611459151, + "95.0" : 0.8525973611459151, + "99.0" : 0.8525973611459151, + "99.9" : 0.8525973611459151, + "99.99" : 0.8525973611459151, + "99.999" : 0.8525973611459151, + "99.9999" : 0.8525973611459151, + "100.0" : 0.8525973611459151 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8498977799987801, + 0.8525973611459151 + ], + [ + 0.8450366414615168, + 0.8479004860215329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.364539522171743, + "scoreError" : 0.2983349242996803, + "scoreConfidence" : [ + 16.066204597872062, + 16.662874446471424 + ], + "scorePercentiles" : { + "0.0" : 16.231913683651342, + "50.0" : 16.364767003662926, + "90.0" : 16.47296123647928, + "95.0" : 16.47296123647928, + "99.0" : 16.47296123647928, + "99.9" : 16.47296123647928, + "99.99" : 16.47296123647928, + "99.999" : 16.47296123647928, + "99.9999" : 16.47296123647928, + "100.0" : 16.47296123647928 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.231913683651342, + 16.293027639232772, + 16.285109276600682 + ], + [ + 16.47296123647928, + 16.43650636809308, + 16.46771892897332 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2757.516066190327, + "scoreError" : 44.67263750389502, + "scoreConfidence" : [ + 2712.8434286864317, + 2802.188703694222 + ], + "scorePercentiles" : { + "0.0" : 2739.672995709291, + "50.0" : 2758.206657395908, + "90.0" : 2773.9705683119923, + "95.0" : 2773.9705683119923, + "99.0" : 2773.9705683119923, + "99.9" : 2773.9705683119923, + "99.99" : 2773.9705683119923, + "99.999" : 2773.9705683119923, + "99.9999" : 2773.9705683119923, + "100.0" : 2773.9705683119923 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2739.672995709291, + 2743.3007782964974, + 2746.4913601598564 + ], + [ + 2773.9705683119923, + 2769.9219546319605, + 2771.7387400323655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 78137.43869305775, + "scoreError" : 237.38701687681254, + "scoreConfidence" : [ + 77900.05167618093, + 78374.82570993456 + ], + "scorePercentiles" : { + "0.0" : 78045.11995699845, + "50.0" : 78114.77731486593, + "90.0" : 78246.79995894844, + "95.0" : 78246.79995894844, + "99.0" : 78246.79995894844, + "99.9" : 78246.79995894844, + "99.99" : 78246.79995894844, + "99.999" : 78246.79995894844, + "99.9999" : 78246.79995894844, + "100.0" : 78246.79995894844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78246.79995894844, + 78229.77685284622, + 78143.86728830791 + ], + [ + 78045.11995699845, + 78073.38075982152, + 78085.68734142394 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 366.4805760888209, + "scoreError" : 14.67950795879988, + "scoreConfidence" : [ + 351.801068130021, + 381.1600840476208 + ], + "scorePercentiles" : { + "0.0" : 361.4855469522038, + "50.0" : 366.5380425803455, + "90.0" : 371.4912375618814, + "95.0" : 371.4912375618814, + "99.0" : 371.4912375618814, + "99.9" : 371.4912375618814, + "99.99" : 371.4912375618814, + "99.999" : 371.4912375618814, + "99.9999" : 371.4912375618814, + "100.0" : 371.4912375618814 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 361.4855469522038, + 361.59691848165767, + 362.03732974525684 + ], + [ + 371.4912375618814, + 371.03875541543425, + 371.23366837649155 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.37575384165285, + "scoreError" : 0.6201983356151941, + "scoreConfidence" : [ + 116.75555550603765, + 117.99595217726805 + ], + "scorePercentiles" : { + "0.0" : 117.10847749977286, + "50.0" : 117.34181519017628, + "90.0" : 117.74357632450233, + "95.0" : 117.74357632450233, + "99.0" : 117.74357632450233, + "99.9" : 117.74357632450233, + "99.99" : 117.74357632450233, + "99.999" : 117.74357632450233, + "99.9999" : 117.74357632450233, + "100.0" : 117.74357632450233 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.24023340278019, + 117.3992610089999, + 117.10847749977286 + ], + [ + 117.47860544250914, + 117.28436937135264, + 117.74357632450233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06089952398349054, + "scoreError" : 3.006484522745726E-4, + "scoreConfidence" : [ + 0.06059887553121597, + 0.061200172435765116 + ], + "scorePercentiles" : { + "0.0" : 0.06077398178028162, + "50.0" : 0.06088298605387938, + "90.0" : 0.06104455426143647, + "95.0" : 0.06104455426143647, + "99.0" : 0.06104455426143647, + "99.9" : 0.06104455426143647, + "99.99" : 0.06104455426143647, + "99.999" : 0.06104455426143647, + "99.9999" : 0.06104455426143647, + "100.0" : 0.06104455426143647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060861840057452724, + 0.06077398178028162, + 0.060808475911050576 + ], + [ + 0.06104455426143647, + 0.06090413205030604, + 0.061004159840415795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.684864130484098E-4, + "scoreError" : 1.355533726832454E-6, + "scoreConfidence" : [ + 3.671308793215773E-4, + 3.6984194677524223E-4 + ], + "scorePercentiles" : { + "0.0" : 3.677474976396435E-4, + "50.0" : 3.6842054785400126E-4, + "90.0" : 3.6905014069388514E-4, + "95.0" : 3.6905014069388514E-4, + "99.0" : 3.6905014069388514E-4, + "99.9" : 3.6905014069388514E-4, + "99.99" : 3.6905014069388514E-4, + "99.999" : 3.6905014069388514E-4, + "99.9999" : 3.6905014069388514E-4, + "100.0" : 3.6905014069388514E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6898918388738244E-4, + 3.6905014069388514E-4, + 3.683717511008368E-4 + ], + [ + 3.677474976396435E-4, + 3.684693446071657E-4, + 3.6829056036154494E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1230624515954224, + "scoreError" : 5.272794088452165E-4, + "scoreConfidence" : [ + 0.12253517218657718, + 0.12358973100426761 + ], + "scorePercentiles" : { + "0.0" : 0.12279985495180205, + "50.0" : 0.1230435173095858, + "90.0" : 0.12327772081756432, + "95.0" : 0.12327772081756432, + "99.0" : 0.12327772081756432, + "99.9" : 0.12327772081756432, + "99.99" : 0.12327772081756432, + "99.999" : 0.12327772081756432, + "99.9999" : 0.12327772081756432, + "100.0" : 0.12327772081756432 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12279985495180205, + 0.12299122569734836, + 0.12294431839584948 + ], + [ + 0.12309580892182326, + 0.12327772081756432, + 0.12326578078814698 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012910590324822946, + "scoreError" : 2.792659836352556E-4, + "scoreConfidence" : [ + 0.01263132434118769, + 0.013189856308458201 + ], + "scorePercentiles" : { + "0.0" : 0.012815531948758958, + "50.0" : 0.012911860895510711, + "90.0" : 0.013004634032885634, + "95.0" : 0.013004634032885634, + "99.0" : 0.013004634032885634, + "99.9" : 0.013004634032885634, + "99.99" : 0.013004634032885634, + "99.999" : 0.013004634032885634, + "99.9999" : 0.013004634032885634, + "100.0" : 0.013004634032885634 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012999149780772165, + 0.013000564010561499, + 0.013004634032885634 + ], + [ + 0.012815531948758958, + 0.012824572010249256, + 0.012819090165710161 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0011203722859954, + "scoreError" : 0.08380700843743881, + "scoreConfidence" : [ + 0.9173133638485566, + 1.084927380723434 + ], + "scorePercentiles" : { + "0.0" : 0.972361766478709, + "50.0" : 1.0020919277685993, + "90.0" : 1.029254303519967, + "95.0" : 1.029254303519967, + "99.0" : 1.029254303519967, + "99.9" : 1.029254303519967, + "99.99" : 1.029254303519967, + "99.999" : 1.029254303519967, + "99.9999" : 1.029254303519967, + "100.0" : 1.029254303519967 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.029254303519967, + 1.0275243268262613, + 1.0283092615938303 + ], + [ + 0.972361766478709, + 0.9766595287109375, + 0.9726130465862672 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011176691726336596, + "scoreError" : 0.0017618390379087504, + "scoreConfidence" : [ + 0.009414852688427846, + 0.012938530764245346 + ], + "scorePercentiles" : { + "0.0" : 0.010598490973489593, + "50.0" : 0.011174476592963231, + "90.0" : 0.011762573605935711, + "95.0" : 0.011762573605935711, + "99.0" : 0.011762573605935711, + "99.9" : 0.011762573605935711, + "99.99" : 0.011762573605935711, + "99.999" : 0.011762573605935711, + "99.9999" : 0.011762573605935711, + "100.0" : 0.011762573605935711 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010598490973489593, + 0.010605626090497795, + 0.010605433371936165 + ], + [ + 0.011762573605935711, + 0.011744699220731639, + 0.011743327095428668 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1355409437163875, + "scoreError" : 0.20895367450490537, + "scoreConfidence" : [ + 2.926587269211482, + 3.344494618221293 + ], + "scorePercentiles" : { + "0.0" : 3.061306892900857, + "50.0" : 3.1378143618561616, + "90.0" : 3.207713130128205, + "95.0" : 3.207713130128205, + "99.0" : 3.207713130128205, + "99.9" : 3.207713130128205, + "99.99" : 3.207713130128205, + "99.999" : 3.207713130128205, + "99.9999" : 3.207713130128205, + "100.0" : 3.207713130128205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.200091075495841, + 3.2023889314980796, + 3.207713130128205 + ], + [ + 3.061306892900857, + 3.0662079840588596, + 3.075537648216482 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8083632951915227, + "scoreError" : 0.09129852497252103, + "scoreConfidence" : [ + 2.7170647702190016, + 2.899661820164044 + ], + "scorePercentiles" : { + "0.0" : 2.772142431263858, + "50.0" : 2.8108115090890484, + "90.0" : 2.8409348028969044, + "95.0" : 2.8409348028969044, + "99.0" : 2.8409348028969044, + "99.9" : 2.8409348028969044, + "99.99" : 2.8409348028969044, + "99.999" : 2.8409348028969044, + "99.9999" : 2.8409348028969044, + "100.0" : 2.8409348028969044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8312534735352393, + 2.8409348028969044, + 2.8399789293015334 + ], + [ + 2.790369544642857, + 2.775500589508743, + 2.772142431263858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17832405237582152, + "scoreError" : 0.0026770469580971058, + "scoreConfidence" : [ + 0.1756470054177244, + 0.18100109933391864 + ], + "scorePercentiles" : { + "0.0" : 0.17784544945758493, + "50.0" : 0.17794948826844714, + "90.0" : 0.1802703837903124, + "95.0" : 0.1802703837903124, + "99.0" : 0.1802703837903124, + "99.9" : 0.1802703837903124, + "99.99" : 0.1802703837903124, + "99.999" : 0.1802703837903124, + "99.9999" : 0.1802703837903124, + "100.0" : 0.1802703837903124 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1802703837903124, + 0.1779537101928963, + 0.17798467055850212 + ], + [ + 0.17794526634399802, + 0.17794483391163543, + 0.17784544945758493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3312494210612915, + "scoreError" : 0.003861330257279199, + "scoreConfidence" : [ + 0.3273880908040123, + 0.3351107513185707 + ], + "scorePercentiles" : { + "0.0" : 0.32994058408393545, + "50.0" : 0.33107271639023794, + "90.0" : 0.33329966611118517, + "95.0" : 0.33329966611118517, + "99.0" : 0.33329966611118517, + "99.9" : 0.33329966611118517, + "99.99" : 0.33329966611118517, + "99.999" : 0.33329966611118517, + "99.9999" : 0.33329966611118517, + "100.0" : 0.33329966611118517 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33329966611118517, + 0.3320768963937039, + 0.33189106017058845 + ], + [ + 0.32994058408393545, + 0.3300339469984489, + 0.3302543726098874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1410414341822426, + "scoreError" : 0.003062258760121863, + "scoreConfidence" : [ + 0.13797917542212074, + 0.14410369294236447 + ], + "scorePercentiles" : { + "0.0" : 0.13968855237536493, + "50.0" : 0.14130215268249957, + "90.0" : 0.14221909218516676, + "95.0" : 0.14221909218516676, + "99.0" : 0.14221909218516676, + "99.9" : 0.14221909218516676, + "99.99" : 0.14221909218516676, + "99.999" : 0.14221909218516676, + "99.9999" : 0.14221909218516676, + "100.0" : 0.14221909218516676 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14079858942625836, + 0.1398577686530635, + 0.13968855237536493 + ], + [ + 0.14221909218516676, + 0.14187888651486133, + 0.14180571593874078 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3902911183330701, + "scoreError" : 0.00761128279467112, + "scoreConfidence" : [ + 0.382679835538399, + 0.3979024011277412 + ], + "scorePercentiles" : { + "0.0" : 0.38746394633862846, + "50.0" : 0.3901324214494687, + "90.0" : 0.3939931007406824, + "95.0" : 0.3939931007406824, + "99.0" : 0.3939931007406824, + "99.9" : 0.3939931007406824, + "99.99" : 0.3939931007406824, + "99.999" : 0.3939931007406824, + "99.9999" : 0.3939931007406824, + "100.0" : 0.3939931007406824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.392382461155144, + 0.3876423588650283, + 0.38746394633862846 + ], + [ + 0.3914922675383652, + 0.3939931007406824, + 0.38877257536057225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15921345674452006, + "scoreError" : 0.004143751146812588, + "scoreConfidence" : [ + 0.15506970559770747, + 0.16335720789133265 + ], + "scorePercentiles" : { + "0.0" : 0.15723523635220127, + "50.0" : 0.15906303165528918, + "90.0" : 0.16147497104842487, + "95.0" : 0.16147497104842487, + "99.0" : 0.16147497104842487, + "99.9" : 0.16147497104842487, + "99.99" : 0.16147497104842487, + "99.999" : 0.16147497104842487, + "99.9999" : 0.16147497104842487, + "100.0" : 0.16147497104842487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1584426240414475, + 0.15962392880858128, + 0.15723523635220127 + ], + [ + 0.16147497104842487, + 0.16000184571446857, + 0.15850213450199707 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048834946368335706, + "scoreError" : 6.325623771865807E-4, + "scoreConfidence" : [ + 0.04820238399114912, + 0.04946750874552229 + ], + "scorePercentiles" : { + "0.0" : 0.048519972897178125, + "50.0" : 0.04889447395551033, + "90.0" : 0.04908195467351186, + "95.0" : 0.04908195467351186, + "99.0" : 0.04908195467351186, + "99.9" : 0.04908195467351186, + "99.99" : 0.04908195467351186, + "99.999" : 0.04908195467351186, + "99.9999" : 0.04908195467351186, + "100.0" : 0.04908195467351186 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04881297619419523, + 0.048975971716825425, + 0.0486189683300597 + ], + [ + 0.048999834398243874, + 0.04908195467351186, + 0.048519972897178125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8566661.459651751, + "scoreError" : 432264.60236985097, + "scoreConfidence" : [ + 8134396.857281901, + 8998926.062021602 + ], + "scorePercentiles" : { + "0.0" : 8395757.823825503, + "50.0" : 8556445.875525326, + "90.0" : 8753329.12248469, + "95.0" : 8753329.12248469, + "99.0" : 8753329.12248469, + "99.9" : 8753329.12248469, + "99.99" : 8753329.12248469, + "99.999" : 8753329.12248469, + "99.9999" : 8753329.12248469, + "100.0" : 8753329.12248469 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8537574.704778157, + 8404943.263865545, + 8395757.823825503 + ], + [ + 8753329.12248469, + 8733046.796684118, + 8575317.046272494 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-23T08:33:15Z-ed6c2fbb1cceee0ddb9f6a4ce154631e775c7453-jdk17.json b/performance-results/2025-05-23T08:33:15Z-ed6c2fbb1cceee0ddb9f6a4ce154631e775c7453-jdk17.json new file mode 100644 index 0000000000..8f478e5fd1 --- /dev/null +++ b/performance-results/2025-05-23T08:33:15Z-ed6c2fbb1cceee0ddb9f6a4ce154631e775c7453-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3368853082521843, + "scoreError" : 0.04366888105685862, + "scoreConfidence" : [ + 3.2932164271953255, + 3.380554189309043 + ], + "scorePercentiles" : { + "0.0" : 3.328478258637335, + "50.0" : 3.3383080808021868, + "90.0" : 3.342446812767029, + "95.0" : 3.342446812767029, + "99.0" : 3.342446812767029, + "99.9" : 3.342446812767029, + "99.99" : 3.342446812767029, + "99.999" : 3.342446812767029, + "99.9999" : 3.342446812767029, + "100.0" : 3.342446812767029 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.328478258637335, + 3.334349134297776 + ], + [ + 3.342446812767029, + 3.342267027306598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6836478081966015, + "scoreError" : 0.028191839061743464, + "scoreConfidence" : [ + 1.655455969134858, + 1.711839647258345 + ], + "scorePercentiles" : { + "0.0" : 1.6782198710288996, + "50.0" : 1.6837354586595263, + "90.0" : 1.6889004444384537, + "95.0" : 1.6889004444384537, + "99.0" : 1.6889004444384537, + "99.9" : 1.6889004444384537, + "99.99" : 1.6889004444384537, + "99.999" : 1.6889004444384537, + "99.9999" : 1.6889004444384537, + "100.0" : 1.6889004444384537 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6838617090765755, + 1.6782198710288996 + ], + [ + 1.6836092082424772, + 1.6889004444384537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8496949450012029, + "scoreError" : 0.03618414483110517, + "scoreConfidence" : [ + 0.8135108001700977, + 0.8858790898323081 + ], + "scorePercentiles" : { + "0.0" : 0.8434106483488939, + "50.0" : 0.8492377908669799, + "90.0" : 0.8568935499219578, + "95.0" : 0.8568935499219578, + "99.0" : 0.8568935499219578, + "99.9" : 0.8568935499219578, + "99.99" : 0.8568935499219578, + "99.999" : 0.8568935499219578, + "99.9999" : 0.8568935499219578, + "100.0" : 0.8568935499219578 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8481574786716781, + 0.8503181030622817 + ], + [ + 0.8434106483488939, + 0.8568935499219578 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.0342353693201, + "scoreError" : 0.4696352422869809, + "scoreConfidence" : [ + 15.56460012703312, + 16.50387061160708 + ], + "scorePercentiles" : { + "0.0" : 15.827939161893788, + "50.0" : 16.011625326875638, + "90.0" : 16.28797697524647, + "95.0" : 16.28797697524647, + "99.0" : 16.28797697524647, + "99.9" : 16.28797697524647, + "99.99" : 16.28797697524647, + "99.999" : 16.28797697524647, + "99.9999" : 16.28797697524647, + "100.0" : 16.28797697524647 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.907557770845557, + 15.827939161893788, + 15.99237866547927 + ], + [ + 16.030871988272008, + 16.158687654183513, + 16.28797697524647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2666.6163039636576, + "scoreError" : 67.73104106703518, + "scoreConfidence" : [ + 2598.8852628966224, + 2734.347345030693 + ], + "scorePercentiles" : { + "0.0" : 2644.2330569203446, + "50.0" : 2659.8307716586005, + "90.0" : 2706.603435598254, + "95.0" : 2706.603435598254, + "99.0" : 2706.603435598254, + "99.9" : 2706.603435598254, + "99.99" : 2706.603435598254, + "99.999" : 2706.603435598254, + "99.9999" : 2706.603435598254, + "100.0" : 2706.603435598254 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2667.345784256022, + 2706.603435598254, + 2681.9754212316357 + ], + [ + 2652.315759061179, + 2647.224366714513, + 2644.2330569203446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76525.81287667895, + "scoreError" : 1111.859628252806, + "scoreConfidence" : [ + 75413.95324842614, + 77637.67250493175 + ], + "scorePercentiles" : { + "0.0" : 76057.25109304917, + "50.0" : 76512.12974721203, + "90.0" : 77032.78711516388, + "95.0" : 77032.78711516388, + "99.0" : 77032.78711516388, + "99.9" : 77032.78711516388, + "99.99" : 77032.78711516388, + "99.999" : 77032.78711516388, + "99.9999" : 77032.78711516388, + "100.0" : 77032.78711516388 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77032.78711516388, + 76692.559260679, + 76869.5336504553 + ], + [ + 76171.04590698122, + 76331.70023374507, + 76057.25109304917 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 360.6511668267501, + "scoreError" : 3.8829095920800603, + "scoreConfidence" : [ + 356.76825723467005, + 364.5340764188302 + ], + "scorePercentiles" : { + "0.0" : 358.91099488267645, + "50.0" : 360.7814849934582, + "90.0" : 362.1414211625653, + "95.0" : 362.1414211625653, + "99.0" : 362.1414211625653, + "99.9" : 362.1414211625653, + "99.99" : 362.1414211625653, + "99.999" : 362.1414211625653, + "99.9999" : 362.1414211625653, + "100.0" : 362.1414211625653 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 358.91099488267645, + 361.1196966213673, + 362.07319684366456 + ], + [ + 360.4432733655491, + 362.1414211625653, + 359.218418084678 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.40127880201021, + "scoreError" : 2.221792064769706, + "scoreConfidence" : [ + 112.17948673724051, + 116.62307086677991 + ], + "scorePercentiles" : { + "0.0" : 113.26386823706027, + "50.0" : 114.53312533808344, + "90.0" : 115.42054106000217, + "95.0" : 115.42054106000217, + "99.0" : 115.42054106000217, + "99.9" : 115.42054106000217, + "99.99" : 115.42054106000217, + "99.999" : 115.42054106000217, + "99.9999" : 115.42054106000217, + "100.0" : 115.42054106000217 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.42054106000217, + 114.92597279060936, + 114.68626903734736 + ], + [ + 113.73104004822267, + 113.26386823706027, + 114.3799816388195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0625063673871074, + "scoreError" : 0.0023291554961452016, + "scoreConfidence" : [ + 0.060177211890962194, + 0.0648355228832526 + ], + "scorePercentiles" : { + "0.0" : 0.061721294313700076, + "50.0" : 0.06238741780594462, + "90.0" : 0.06342995156574081, + "95.0" : 0.06342995156574081, + "99.0" : 0.06342995156574081, + "99.9" : 0.06342995156574081, + "99.99" : 0.06342995156574081, + "99.999" : 0.06342995156574081, + "99.9999" : 0.06342995156574081, + "100.0" : 0.06342995156574081 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06173081600780266, + 0.06184666303426865, + 0.061721294313700076 + ], + [ + 0.06342995156574081, + 0.0629281725776206, + 0.06338130682351152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8394543418184397E-4, + "scoreError" : 1.9122747462921474E-5, + "scoreConfidence" : [ + 3.648226867189225E-4, + 4.0306818164476544E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7750758305852737E-4, + "50.0" : 3.824604654390173E-4, + "90.0" : 3.936078335619306E-4, + "95.0" : 3.936078335619306E-4, + "99.0" : 3.936078335619306E-4, + "99.9" : 3.936078335619306E-4, + "99.99" : 3.936078335619306E-4, + "99.999" : 3.936078335619306E-4, + "99.9999" : 3.936078335619306E-4, + "100.0" : 3.936078335619306E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8977231602350254E-4, + 3.936078335619306E-4, + 3.858043270315457E-4 + ], + [ + 3.7750758305852737E-4, + 3.791166038464889E-4, + 3.7786394156906847E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12555735775806184, + "scoreError" : 0.005365496873346317, + "scoreConfidence" : [ + 0.12019186088471552, + 0.13092285463140815 + ], + "scorePercentiles" : { + "0.0" : 0.12310637570169392, + "50.0" : 0.12559933882645982, + "90.0" : 0.1277276631116447, + "95.0" : 0.1277276631116447, + "99.0" : 0.1277276631116447, + "99.9" : 0.1277276631116447, + "99.99" : 0.1277276631116447, + "99.999" : 0.1277276631116447, + "99.9999" : 0.1277276631116447, + "100.0" : 0.1277276631116447 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12692706952835456, + 0.1277276631116447, + 0.12707682668310163 + ], + [ + 0.12427160812456507, + 0.1242346033990111, + 0.12310637570169392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013046195283202005, + "scoreError" : 4.769874703931685E-4, + "scoreConfidence" : [ + 0.012569207812808837, + 0.013523182753595174 + ], + "scorePercentiles" : { + "0.0" : 0.012883810447874648, + "50.0" : 0.013026893365341888, + "90.0" : 0.013222338525676116, + "95.0" : 0.013222338525676116, + "99.0" : 0.013222338525676116, + "99.9" : 0.013222338525676116, + "99.99" : 0.013222338525676116, + "99.999" : 0.013222338525676116, + "99.9999" : 0.013222338525676116, + "100.0" : 0.013222338525676116 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012883810447874648, + 0.012895665817718052, + 0.01289822455447026 + ], + [ + 0.013155562176213517, + 0.01322157017725944, + 0.013222338525676116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0008528274076403, + "scoreError" : 0.07247363632639794, + "scoreConfidence" : [ + 0.9283791910812423, + 1.0733264637340383 + ], + "scorePercentiles" : { + "0.0" : 0.9718420679300291, + "50.0" : 1.00258471376137, + "90.0" : 1.0274792475084764, + "95.0" : 1.0274792475084764, + "99.0" : 1.0274792475084764, + "99.9" : 1.0274792475084764, + "99.99" : 1.0274792475084764, + "99.999" : 1.0274792475084764, + "99.9999" : 1.0274792475084764, + "100.0" : 1.0274792475084764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9772408520617549, + 0.9836382428444969, + 0.9718420679300291 + ], + [ + 1.021531184678243, + 1.0233853694228408, + 1.0274792475084764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01048112165937097, + "scoreError" : 3.2858283889881403E-4, + "scoreConfidence" : [ + 0.010152538820472156, + 0.010809704498269785 + ], + "scorePercentiles" : { + "0.0" : 0.010343414143629036, + "50.0" : 0.010492933655505368, + "90.0" : 0.010666617439441937, + "95.0" : 0.010666617439441937, + "99.0" : 0.010666617439441937, + "99.9" : 0.010666617439441937, + "99.99" : 0.010666617439441937, + "99.999" : 0.010666617439441937, + "99.9999" : 0.010666617439441937, + "100.0" : 0.010666617439441937 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010522802418081949, + 0.010666617439441937, + 0.010508303114367196 + ], + [ + 0.010368028644062173, + 0.010343414143629036, + 0.01047756419664354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.181822692653299, + "scoreError" : 0.1602402071629384, + "scoreConfidence" : [ + 3.021582485490361, + 3.3420628998162374 + ], + "scorePercentiles" : { + "0.0" : 3.111689081518357, + "50.0" : 3.1757361550490537, + "90.0" : 3.2671744121489223, + "95.0" : 3.2671744121489223, + "99.0" : 3.2671744121489223, + "99.9" : 3.2671744121489223, + "99.99" : 3.2671744121489223, + "99.999" : 3.2671744121489223, + "99.9999" : 3.2671744121489223, + "100.0" : 3.2671744121489223 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1389224526051476, + 3.1581275214646465, + 3.111689081518357 + ], + [ + 3.193344788633461, + 3.2216778995492596, + 3.2671744121489223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8214042861936686, + "scoreError" : 0.09588760321668656, + "scoreConfidence" : [ + 2.725516682976982, + 2.917291889410355 + ], + "scorePercentiles" : { + "0.0" : 2.777473387947792, + "50.0" : 2.8298773190435766, + "90.0" : 2.872572923319931, + "95.0" : 2.872572923319931, + "99.0" : 2.872572923319931, + "99.9" : 2.872572923319931, + "99.99" : 2.872572923319931, + "99.999" : 2.872572923319931, + "99.9999" : 2.872572923319931, + "100.0" : 2.872572923319931 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.872572923319931, + 2.788550323111235, + 2.777473387947792 + ], + [ + 2.8298168851160157, + 2.8299377529711376, + 2.830074444695898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18290622012399874, + "scoreError" : 0.004058598274795433, + "scoreConfidence" : [ + 0.1788476218492033, + 0.18696481839879417 + ], + "scorePercentiles" : { + "0.0" : 0.18097177178378182, + "50.0" : 0.18302590179846326, + "90.0" : 0.18426716231803944, + "95.0" : 0.18426716231803944, + "99.0" : 0.18426716231803944, + "99.9" : 0.18426716231803944, + "99.99" : 0.18426716231803944, + "99.999" : 0.18426716231803944, + "99.9999" : 0.18426716231803944, + "100.0" : 0.18426716231803944 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18197678592615507, + 0.18097177178378182, + 0.1819344585380053 + ], + [ + 0.18407501767077145, + 0.18426716231803944, + 0.18421212450723942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32632256057157966, + "scoreError" : 0.0013296847068736766, + "scoreConfidence" : [ + 0.324992875864706, + 0.3276522452784533 + ], + "scorePercentiles" : { + "0.0" : 0.3255198149799811, + "50.0" : 0.32636255789213686, + "90.0" : 0.3269260892804603, + "95.0" : 0.3269260892804603, + "99.0" : 0.3269260892804603, + "99.9" : 0.3269260892804603, + "99.99" : 0.3269260892804603, + "99.999" : 0.3269260892804603, + "99.9999" : 0.3269260892804603, + "100.0" : 0.3269260892804603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32655644858439736, + 0.32620789480036533, + 0.3269260892804603 + ], + [ + 0.3265117672391276, + 0.3255198149799811, + 0.32621334854514616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1463139842498076, + "scoreError" : 0.004158853261690341, + "scoreConfidence" : [ + 0.14215513098811725, + 0.15047283751149795 + ], + "scorePercentiles" : { + "0.0" : 0.1446591200347172, + "50.0" : 0.14644836033845438, + "90.0" : 0.1484301051608211, + "95.0" : 0.1484301051608211, + "99.0" : 0.1484301051608211, + "99.9" : 0.1484301051608211, + "99.99" : 0.1484301051608211, + "99.999" : 0.1484301051608211, + "99.9999" : 0.1484301051608211, + "100.0" : 0.1484301051608211 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1484301051608211, + 0.14708309789674953, + 0.14710501616651955 + ], + [ + 0.14581362278015922, + 0.14479294345987895, + 0.1446591200347172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4063850946909137, + "scoreError" : 0.0335227165435586, + "scoreConfidence" : [ + 0.3728623781473551, + 0.4399078112344723 + ], + "scorePercentiles" : { + "0.0" : 0.39548623416119594, + "50.0" : 0.40531292875936986, + "90.0" : 0.4201236399613494, + "95.0" : 0.4201236399613494, + "99.0" : 0.4201236399613494, + "99.9" : 0.4201236399613494, + "99.99" : 0.4201236399613494, + "99.999" : 0.4201236399613494, + "99.9999" : 0.4201236399613494, + "100.0" : 0.4201236399613494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39548623416119594, + 0.3955503506447275, + 0.3957076599002849 + ], + [ + 0.4201236399613494, + 0.4165244858594694, + 0.4149181976184549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15885093466052472, + "scoreError" : 0.003049744993945281, + "scoreConfidence" : [ + 0.15580118966657944, + 0.16190067965447 + ], + "scorePercentiles" : { + "0.0" : 0.15787372603128996, + "50.0" : 0.1584433455884178, + "90.0" : 0.1605397828097157, + "95.0" : 0.1605397828097157, + "99.0" : 0.1605397828097157, + "99.9" : 0.1605397828097157, + "99.99" : 0.1605397828097157, + "99.999" : 0.1605397828097157, + "99.9999" : 0.1605397828097157, + "100.0" : 0.1605397828097157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15826346466836533, + 0.15797951691126522, + 0.15787372603128996 + ], + [ + 0.15982589103404188, + 0.1605397828097157, + 0.15862322650847027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04664455933774688, + "scoreError" : 0.002191785324931511, + "scoreConfidence" : [ + 0.04445277401281537, + 0.048836344662678395 + ], + "scorePercentiles" : { + "0.0" : 0.045911793620186214, + "50.0" : 0.04642862947690648, + "90.0" : 0.0476626823760432, + "95.0" : 0.0476626823760432, + "99.0" : 0.0476626823760432, + "99.9" : 0.0476626823760432, + "99.99" : 0.0476626823760432, + "99.999" : 0.0476626823760432, + "99.9999" : 0.0476626823760432, + "100.0" : 0.0476626823760432 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0476626823760432, + 0.04746826093890919, + 0.046782698756064126 + ], + [ + 0.04607456019774883, + 0.045911793620186214, + 0.04596736013752971 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8605379.099783057, + "scoreError" : 164401.15696770872, + "scoreConfidence" : [ + 8440977.942815349, + 8769780.256750766 + ], + "scorePercentiles" : { + "0.0" : 8556294.344739093, + "50.0" : 8592459.056410734, + "90.0" : 8712649.466898955, + "95.0" : 8712649.466898955, + "99.0" : 8712649.466898955, + "99.9" : 8712649.466898955, + "99.99" : 8712649.466898955, + "99.999" : 8712649.466898955, + "99.9999" : 8712649.466898955, + "100.0" : 8712649.466898955 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8712649.466898955, + 8610993.132530121, + 8573924.980291346 + ], + [ + 8618578.148148147, + 8559834.526090676, + 8556294.344739093 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-26T00:46:24Z-4b1f2316e8053adfb4c50abbbaf898657480e1ed-jdk17.json b/performance-results/2025-05-26T00:46:24Z-4b1f2316e8053adfb4c50abbbaf898657480e1ed-jdk17.json new file mode 100644 index 0000000000..f2f2bbb0d3 --- /dev/null +++ b/performance-results/2025-05-26T00:46:24Z-4b1f2316e8053adfb4c50abbbaf898657480e1ed-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3602205783710297, + "scoreError" : 0.026557289603301223, + "scoreConfidence" : [ + 3.3336632887677284, + 3.386777867974331 + ], + "scorePercentiles" : { + "0.0" : 3.3557709373676095, + "50.0" : 3.3597527525630744, + "90.0" : 3.3656058709903607, + "95.0" : 3.3656058709903607, + "99.0" : 3.3656058709903607, + "99.9" : 3.3656058709903607, + "99.99" : 3.3656058709903607, + "99.999" : 3.3656058709903607, + "99.9999" : 3.3656058709903607, + "100.0" : 3.3656058709903607 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3557709373676095, + 3.3656058709903607 + ], + [ + 3.358906518604916, + 3.3605989865212327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6937317416595927, + "scoreError" : 0.015431761513365057, + "scoreConfidence" : [ + 1.6782999801462277, + 1.7091635031729577 + ], + "scorePercentiles" : { + "0.0" : 1.6910585813576287, + "50.0" : 1.6937055738270748, + "90.0" : 1.696457237626593, + "95.0" : 1.696457237626593, + "99.0" : 1.696457237626593, + "99.9" : 1.696457237626593, + "99.99" : 1.696457237626593, + "99.999" : 1.696457237626593, + "99.9999" : 1.696457237626593, + "100.0" : 1.696457237626593 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.696457237626593, + 1.6948310349908955 + ], + [ + 1.6925801126632538, + 1.6910585813576287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8497856099305433, + "scoreError" : 0.037959632752125765, + "scoreConfidence" : [ + 0.8118259771784175, + 0.8877452426826691 + ], + "scorePercentiles" : { + "0.0" : 0.844952825095208, + "50.0" : 0.8479398723901039, + "90.0" : 0.8583098698467573, + "95.0" : 0.8583098698467573, + "99.0" : 0.8583098698467573, + "99.9" : 0.8583098698467573, + "99.99" : 0.8583098698467573, + "99.999" : 0.8583098698467573, + "99.9999" : 0.8583098698467573, + "100.0" : 0.8583098698467573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.844952825095208, + 0.8583098698467573 + ], + [ + 0.8473526240112758, + 0.8485271207689321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.360666480505966, + "scoreError" : 0.18848979930966828, + "scoreConfidence" : [ + 16.172176681196298, + 16.549156279815634 + ], + "scorePercentiles" : { + "0.0" : 16.29171205229308, + "50.0" : 16.34145448256377, + "90.0" : 16.44877223056117, + "95.0" : 16.44877223056117, + "99.0" : 16.44877223056117, + "99.9" : 16.44877223056117, + "99.99" : 16.44877223056117, + "99.999" : 16.44877223056117, + "99.9999" : 16.44877223056117, + "100.0" : 16.44877223056117 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.29171205229308, + 16.303422029915076, + 16.331367935928895 + ], + [ + 16.437183605138927, + 16.44877223056117, + 16.351541029198643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2847.219314180182, + "scoreError" : 47.6687574536888, + "scoreConfidence" : [ + 2799.5505567264936, + 2894.888071633871 + ], + "scorePercentiles" : { + "0.0" : 2830.743929818157, + "50.0" : 2847.456219941718, + "90.0" : 2863.572418171459, + "95.0" : 2863.572418171459, + "99.0" : 2863.572418171459, + "99.9" : 2863.572418171459, + "99.99" : 2863.572418171459, + "99.999" : 2863.572418171459, + "99.9999" : 2863.572418171459, + "100.0" : 2863.572418171459 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2861.4726506950783, + 2863.572418171459, + 2863.057550035444 + ], + [ + 2830.743929818157, + 2831.029547172599, + 2833.4397891883573 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77173.4701098917, + "scoreError" : 754.1415796799811, + "scoreConfidence" : [ + 76419.32853021171, + 77927.61168957168 + ], + "scorePercentiles" : { + "0.0" : 76903.42716890328, + "50.0" : 77163.09766392107, + "90.0" : 77507.12296039943, + "95.0" : 77507.12296039943, + "99.0" : 77507.12296039943, + "99.9" : 77507.12296039943, + "99.99" : 77507.12296039943, + "99.999" : 77507.12296039943, + "99.9999" : 77507.12296039943, + "100.0" : 77507.12296039943 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76983.3752602997, + 76915.76835730243, + 76903.42716890328 + ], + [ + 77388.30684490294, + 77342.82006754245, + 77507.12296039943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 368.77632945642944, + "scoreError" : 25.687615108069487, + "scoreConfidence" : [ + 343.08871434835993, + 394.46394456449895 + ], + "scorePercentiles" : { + "0.0" : 360.34814262310846, + "50.0" : 368.4880339814724, + "90.0" : 377.53462021562336, + "95.0" : 377.53462021562336, + "99.0" : 377.53462021562336, + "99.9" : 377.53462021562336, + "99.99" : 377.53462021562336, + "99.999" : 377.53462021562336, + "99.9999" : 377.53462021562336, + "100.0" : 377.53462021562336 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 376.5148920466809, + 377.53462021562336, + 377.3485319243367 + ], + [ + 360.4611759162639, + 360.45061401256305, + 360.34814262310846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.5584373677998, + "scoreError" : 1.5342001779384482, + "scoreConfidence" : [ + 116.02423718986135, + 119.09263754573824 + ], + "scorePercentiles" : { + "0.0" : 116.90349656106073, + "50.0" : 117.55716747987739, + "90.0" : 118.29358831007322, + "95.0" : 118.29358831007322, + "99.0" : 118.29358831007322, + "99.9" : 118.29358831007322, + "99.99" : 118.29358831007322, + "99.999" : 118.29358831007322, + "99.9999" : 118.29358831007322, + "100.0" : 118.29358831007322 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 118.29358831007322, + 117.80255005515481, + 117.96894097206436 + ], + [ + 116.90349656106073, + 117.07026340384574, + 117.31178490459996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06092838087560045, + "scoreError" : 5.502083722971356E-4, + "scoreConfidence" : [ + 0.060378172503303316, + 0.061478589247897585 + ], + "scorePercentiles" : { + "0.0" : 0.06072943971506303, + "50.0" : 0.06092112683012177, + "90.0" : 0.06121079013539652, + "95.0" : 0.06121079013539652, + "99.0" : 0.06121079013539652, + "99.9" : 0.06121079013539652, + "99.99" : 0.06121079013539652, + "99.999" : 0.06121079013539652, + "99.9999" : 0.06121079013539652, + "100.0" : 0.06121079013539652 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061044156759330476, + 0.061034091037260825, + 0.06121079013539652 + ], + [ + 0.06072943971506303, + 0.060743644983569114, + 0.06080816262298272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.630495193739473E-4, + "scoreError" : 2.027537177186093E-5, + "scoreConfidence" : [ + 3.427741476020863E-4, + 3.8332489114580823E-4 + ], + "scorePercentiles" : { + "0.0" : 3.562624227260778E-4, + "50.0" : 3.626886563353374E-4, + "90.0" : 3.707248799802154E-4, + "95.0" : 3.707248799802154E-4, + "99.0" : 3.707248799802154E-4, + "99.9" : 3.707248799802154E-4, + "99.99" : 3.707248799802154E-4, + "99.999" : 3.707248799802154E-4, + "99.9999" : 3.707248799802154E-4, + "100.0" : 3.707248799802154E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.565912667211388E-4, + 3.562624227260778E-4, + 3.5657147000965226E-4 + ], + [ + 3.6878604594953597E-4, + 3.707248799802154E-4, + 3.6936103085706323E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12289439409353096, + "scoreError" : 9.329502932930627E-4, + "scoreConfidence" : [ + 0.1219614438002379, + 0.12382734438682402 + ], + "scorePercentiles" : { + "0.0" : 0.12257835035914785, + "50.0" : 0.12281178943900778, + "90.0" : 0.12349538276300678, + "95.0" : 0.12349538276300678, + "99.0" : 0.12349538276300678, + "99.9" : 0.12349538276300678, + "99.99" : 0.12349538276300678, + "99.999" : 0.12349538276300678, + "99.9999" : 0.12349538276300678, + "100.0" : 0.12349538276300678 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12349538276300678, + 0.12301598529990651, + 0.12275839381068707 + ], + [ + 0.12286518506732848, + 0.12257835035914785, + 0.122653067261109 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012917029108279921, + "scoreError" : 3.9187874156510453E-4, + "scoreConfidence" : [ + 0.012525150366714817, + 0.013308907849845026 + ], + "scorePercentiles" : { + "0.0" : 0.012785314601799894, + "50.0" : 0.012919970969676321, + "90.0" : 0.013047729825188602, + "95.0" : 0.013047729825188602, + "99.0" : 0.013047729825188602, + "99.9" : 0.013047729825188602, + "99.99" : 0.013047729825188602, + "99.999" : 0.013047729825188602, + "99.9999" : 0.013047729825188602, + "100.0" : 0.013047729825188602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013047729825188602, + 0.013043413701396018, + 0.013042440623785439 + ], + [ + 0.012785774581942366, + 0.012797501315567204, + 0.012785314601799894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9541839001962235, + "scoreError" : 0.0027601384411125563, + "scoreConfidence" : [ + 0.9514237617551109, + 0.956944038637336 + ], + "scorePercentiles" : { + "0.0" : 0.9533739846520496, + "50.0" : 0.9538841733174372, + "90.0" : 0.9561116341300191, + "95.0" : 0.9561116341300191, + "99.0" : 0.9561116341300191, + "99.9" : 0.9561116341300191, + "99.99" : 0.9561116341300191, + "99.999" : 0.9561116341300191, + "99.9999" : 0.9561116341300191, + "100.0" : 0.9561116341300191 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9541993032153421, + 0.9536501325450558, + 0.9533739846520496 + ], + [ + 0.953824113304721, + 0.9561116341300191, + 0.9539442333301535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011101639820944108, + "scoreError" : 0.0014781236413846357, + "scoreConfidence" : [ + 0.009623516179559472, + 0.012579763462328744 + ], + "scorePercentiles" : { + "0.0" : 0.010619703991215588, + "50.0" : 0.011098379613741185, + "90.0" : 0.01159072897059778, + "95.0" : 0.01159072897059778, + "99.0" : 0.01159072897059778, + "99.9" : 0.01159072897059778, + "99.99" : 0.01159072897059778, + "99.999" : 0.01159072897059778, + "99.9999" : 0.01159072897059778, + "100.0" : 0.01159072897059778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010619703991215588, + 0.010620667875265775, + 0.0106210484646626 + ], + [ + 0.011581978861103133, + 0.01159072897059778, + 0.01157571076281977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1546525047068026, + "scoreError" : 0.13638269792049654, + "scoreConfidence" : [ + 3.018269806786306, + 3.2910352026272993 + ], + "scorePercentiles" : { + "0.0" : 3.104949684667908, + "50.0" : 3.1542624448445213, + "90.0" : 3.209651849165597, + "95.0" : 3.209651849165597, + "99.0" : 3.209651849165597, + "99.9" : 3.209651849165597, + "99.99" : 3.209651849165597, + "99.999" : 3.209651849165597, + "99.9999" : 3.209651849165597, + "100.0" : 3.209651849165597 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.194790556832695, + 3.209651849165597, + 3.191183418367347 + ], + [ + 3.1173414713216956, + 3.109998047885572, + 3.104949684667908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.751089085298536, + "scoreError" : 0.03134477128550224, + "scoreConfidence" : [ + 2.7197443140130337, + 2.7824338565840385 + ], + "scorePercentiles" : { + "0.0" : 2.740577685941354, + "50.0" : 2.7501860386307397, + "90.0" : 2.77214739883592, + "95.0" : 2.77214739883592, + "99.0" : 2.77214739883592, + "99.9" : 2.77214739883592, + "99.99" : 2.77214739883592, + "99.999" : 2.77214739883592, + "99.9999" : 2.77214739883592, + "100.0" : 2.77214739883592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.77214739883592, + 2.75005715039868, + 2.740577685941354 + ], + [ + 2.7427871300054854, + 2.750314926862799, + 2.7506502197469747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17919790306991587, + "scoreError" : 0.015853815780527587, + "scoreConfidence" : [ + 0.1633440872893883, + 0.19505171885044345 + ], + "scorePercentiles" : { + "0.0" : 0.1740034737089365, + "50.0" : 0.17890113617389405, + "90.0" : 0.18513699846341825, + "95.0" : 0.18513699846341825, + "99.0" : 0.18513699846341825, + "99.9" : 0.18513699846341825, + "99.99" : 0.18513699846341825, + "99.999" : 0.18513699846341825, + "99.9999" : 0.18513699846341825, + "100.0" : 0.18513699846341825 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18421843722943723, + 0.18513699846341825, + 0.18366738737878344 + ], + [ + 0.17402623666991507, + 0.1740034737089365, + 0.17413488496900467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3184364190500539, + "scoreError" : 0.01071793412012776, + "scoreConfidence" : [ + 0.3077184849299261, + 0.32915435317018166 + ], + "scorePercentiles" : { + "0.0" : 0.3140165639954782, + "50.0" : 0.31804847677458875, + "90.0" : 0.3242084317069217, + "95.0" : 0.3242084317069217, + "99.0" : 0.3242084317069217, + "99.9" : 0.3242084317069217, + "99.99" : 0.3242084317069217, + "99.999" : 0.3242084317069217, + "99.9999" : 0.3242084317069217, + "100.0" : 0.3242084317069217 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3242084317069217, + 0.3197950272776694, + 0.3207582424222985 + ], + [ + 0.3163019262715081, + 0.3155383226264475, + 0.3140165639954782 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14318679714089835, + "scoreError" : 0.006936757578552282, + "scoreConfidence" : [ + 0.13625003956234608, + 0.15012355471945063 + ], + "scorePercentiles" : { + "0.0" : 0.14037445077203817, + "50.0" : 0.14327897979553111, + "90.0" : 0.14564875122341975, + "95.0" : 0.14564875122341975, + "99.0" : 0.14564875122341975, + "99.9" : 0.14564875122341975, + "99.99" : 0.14564875122341975, + "99.999" : 0.14564875122341975, + "99.9999" : 0.14564875122341975, + "100.0" : 0.14564875122341975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14538712085659455, + 0.14564875122341975, + 0.14523205762667557 + ], + [ + 0.14037445077203817, + 0.14115250040227534, + 0.14132590196438666 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3866835328503511, + "scoreError" : 0.024597066683524273, + "scoreConfidence" : [ + 0.3620864661668268, + 0.4112805995338754 + ], + "scorePercentiles" : { + "0.0" : 0.3786501283556094, + "50.0" : 0.3857915962267088, + "90.0" : 0.39879501738714307, + "95.0" : 0.39879501738714307, + "99.0" : 0.39879501738714307, + "99.9" : 0.39879501738714307, + "99.99" : 0.39879501738714307, + "99.999" : 0.39879501738714307, + "99.9999" : 0.39879501738714307, + "100.0" : 0.39879501738714307 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39879501738714307, + 0.3923343547020283, + 0.39198960046252745 + ], + [ + 0.3795935919908901, + 0.3787385042039085, + 0.3786501283556094 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15549794985525098, + "scoreError" : 0.005600189489897454, + "scoreConfidence" : [ + 0.14989776036535352, + 0.16109813934514844 + ], + "scorePercentiles" : { + "0.0" : 0.1536378334613612, + "50.0" : 0.15526240812412084, + "90.0" : 0.15767040851399292, + "95.0" : 0.15767040851399292, + "99.0" : 0.15767040851399292, + "99.9" : 0.15767040851399292, + "99.99" : 0.15767040851399292, + "99.999" : 0.15767040851399292, + "99.9999" : 0.15767040851399292, + "100.0" : 0.15767040851399292 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15376034619760756, + 0.1536378334613612, + 0.15368971296182454 + ], + [ + 0.15767040851399292, + 0.1567644700506341, + 0.15746492794608552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047322421253506795, + "scoreError" : 0.005250741507082252, + "scoreConfidence" : [ + 0.04207167974642454, + 0.05257316276058905 + ], + "scorePercentiles" : { + "0.0" : 0.045606956797161466, + "50.0" : 0.047192443621667426, + "90.0" : 0.04928546776276232, + "95.0" : 0.04928546776276232, + "99.0" : 0.04928546776276232, + "99.9" : 0.04928546776276232, + "99.99" : 0.04928546776276232, + "99.999" : 0.04928546776276232, + "99.9999" : 0.04928546776276232, + "100.0" : 0.04928546776276232 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045647531201928125, + 0.04560714302653842, + 0.045606956797161466 + ], + [ + 0.049050072691243694, + 0.04928546776276232, + 0.048737356041406735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8445745.78103538, + "scoreError" : 80742.13937181125, + "scoreConfidence" : [ + 8365003.641663569, + 8526487.92040719 + ], + "scorePercentiles" : { + "0.0" : 8405974.074789915, + "50.0" : 8449801.171343591, + "90.0" : 8472685.052497882, + "95.0" : 8472685.052497882, + "99.0" : 8472685.052497882, + "99.9" : 8472685.052497882, + "99.99" : 8472685.052497882, + "99.999" : 8472685.052497882, + "99.9999" : 8472685.052497882, + "100.0" : 8472685.052497882 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8405974.074789915, + 8431196.714406066, + 8424638.517676767 + ], + [ + 8471574.698560541, + 8468405.628281118, + 8472685.052497882 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-26T00:46:54Z-4b1f2316e8053adfb4c50abbbaf898657480e1ed-jdk17.json b/performance-results/2025-05-26T00:46:54Z-4b1f2316e8053adfb4c50abbbaf898657480e1ed-jdk17.json new file mode 100644 index 0000000000..1891c276d5 --- /dev/null +++ b/performance-results/2025-05-26T00:46:54Z-4b1f2316e8053adfb4c50abbbaf898657480e1ed-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.355314158445994, + "scoreError" : 0.03012316097364703, + "scoreConfidence" : [ + 3.325190997472347, + 3.385437319419641 + ], + "scorePercentiles" : { + "0.0" : 3.3489262131874447, + "50.0" : 3.3563192708112775, + "90.0" : 3.359691878973976, + "95.0" : 3.359691878973976, + "99.0" : 3.359691878973976, + "99.9" : 3.359691878973976, + "99.99" : 3.359691878973976, + "99.999" : 3.359691878973976, + "99.9999" : 3.359691878973976, + "100.0" : 3.359691878973976 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3489262131874447, + 3.355054250916895 + ], + [ + 3.35758429070566, + 3.359691878973976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.693390837980584, + "scoreError" : 0.02960694075601076, + "scoreConfidence" : [ + 1.6637838972245733, + 1.7229977787365947 + ], + "scorePercentiles" : { + "0.0" : 1.6887998988299189, + "50.0" : 1.6936222215794623, + "90.0" : 1.6975190099334927, + "95.0" : 1.6975190099334927, + "99.0" : 1.6975190099334927, + "99.9" : 1.6975190099334927, + "99.99" : 1.6975190099334927, + "99.999" : 1.6975190099334927, + "99.9999" : 1.6975190099334927, + "100.0" : 1.6975190099334927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6887998988299189, + 1.6901043734861991 + ], + [ + 1.6971400696727252, + 1.6975190099334927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8581819685206622, + "scoreError" : 0.015737855953137942, + "scoreConfidence" : [ + 0.8424441125675243, + 0.8739198244738001 + ], + "scorePercentiles" : { + "0.0" : 0.8560888448782534, + "50.0" : 0.8575889101396239, + "90.0" : 0.8614612089251477, + "95.0" : 0.8614612089251477, + "99.0" : 0.8614612089251477, + "99.9" : 0.8614612089251477, + "99.99" : 0.8614612089251477, + "99.999" : 0.8614612089251477, + "99.9999" : 0.8614612089251477, + "100.0" : 0.8614612089251477 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8565999109974037, + 0.8614612089251477 + ], + [ + 0.8560888448782534, + 0.8585779092818442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.650268493017055, + "scoreError" : 0.7767883489313367, + "scoreConfidence" : [ + 15.873480144085718, + 17.427056841948392 + ], + "scorePercentiles" : { + "0.0" : 16.390146442378825, + "50.0" : 16.64256496798029, + "90.0" : 16.93202356270371, + "95.0" : 16.93202356270371, + "99.0" : 16.93202356270371, + "99.9" : 16.93202356270371, + "99.99" : 16.93202356270371, + "99.999" : 16.93202356270371, + "99.9999" : 16.93202356270371, + "100.0" : 16.93202356270371 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.87951694231654, + 16.93202356270371, + 16.896347533085525 + ], + [ + 16.390146442378825, + 16.39796348397369, + 16.405612993644045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2782.5178180288585, + "scoreError" : 150.78187530267343, + "scoreConfidence" : [ + 2631.735942726185, + 2933.299693331532 + ], + "scorePercentiles" : { + "0.0" : 2729.649988265249, + "50.0" : 2781.975064833364, + "90.0" : 2836.866598164395, + "95.0" : 2836.866598164395, + "99.0" : 2836.866598164395, + "99.9" : 2836.866598164395, + "99.99" : 2836.866598164395, + "99.999" : 2836.866598164395, + "99.9999" : 2836.866598164395, + "100.0" : 2836.866598164395 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2832.4251745689007, + 2824.9035332360822, + 2836.866598164395 + ], + [ + 2732.2150175078787, + 2729.649988265249, + 2739.046596430645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76784.9357927587, + "scoreError" : 983.6004942484963, + "scoreConfidence" : [ + 75801.3352985102, + 77768.5362870072 + ], + "scorePercentiles" : { + "0.0" : 76424.49424601327, + "50.0" : 76783.8121241946, + "90.0" : 77138.80417438509, + "95.0" : 77138.80417438509, + "99.0" : 77138.80417438509, + "99.9" : 77138.80417438509, + "99.99" : 77138.80417438509, + "99.999" : 77138.80417438509, + "99.9999" : 77138.80417438509, + "100.0" : 77138.80417438509 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76496.15537192616, + 76477.50260703718, + 76424.49424601327 + ], + [ + 77101.18948072744, + 77138.80417438509, + 77071.46887646307 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.65470880480916, + "scoreError" : 10.423132454794835, + "scoreConfidence" : [ + 351.23157635001434, + 372.077841259604 + ], + "scorePercentiles" : { + "0.0" : 358.2272006025982, + "50.0" : 361.3078071206453, + "90.0" : 366.16631658023755, + "95.0" : 366.16631658023755, + "99.0" : 366.16631658023755, + "99.9" : 366.16631658023755, + "99.99" : 366.16631658023755, + "99.999" : 366.16631658023755, + "99.9999" : 366.16631658023755, + "100.0" : 366.16631658023755 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.16631658023755, + 364.25809480170295, + 364.5621719718059 + ], + [ + 358.2272006025982, + 358.35694943292236, + 358.3575194395876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.14577470612043, + "scoreError" : 6.319167859770692, + "scoreConfidence" : [ + 108.82660684634975, + 121.46494256589112 + ], + "scorePercentiles" : { + "0.0" : 112.8896660348153, + "50.0" : 114.69414174834648, + "90.0" : 117.98841173274515, + "95.0" : 117.98841173274515, + "99.0" : 117.98841173274515, + "99.9" : 117.98841173274515, + "99.99" : 117.98841173274515, + "99.999" : 117.98841173274515, + "99.9999" : 117.98841173274515, + "100.0" : 117.98841173274515 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.90448259432385, + 117.98841173274515, + 117.40559606217705 + ], + [ + 113.20269091029216, + 113.48380090236913, + 112.8896660348153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06059127442503907, + "scoreError" : 1.5554258024931013E-4, + "scoreConfidence" : [ + 0.06043573184478976, + 0.060746817005288375 + ], + "scorePercentiles" : { + "0.0" : 0.06050131054886017, + "50.0" : 0.060603343537398824, + "90.0" : 0.06064565371903333, + "95.0" : 0.06064565371903333, + "99.0" : 0.06064565371903333, + "99.9" : 0.06064565371903333, + "99.99" : 0.06064565371903333, + "99.999" : 0.06064565371903333, + "99.9999" : 0.06064565371903333, + "100.0" : 0.06064565371903333 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060641574199847184, + 0.06060236977310741, + 0.06064565371903333 + ], + [ + 0.06060431730169023, + 0.06055242100769608, + 0.06050131054886017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.601026604506969E-4, + "scoreError" : 1.9819603092252923E-6, + "scoreConfidence" : [ + 3.581207001414716E-4, + 3.620846207599222E-4 + ], + "scorePercentiles" : { + "0.0" : 3.594077976533664E-4, + "50.0" : 3.6009308724864036E-4, + "90.0" : 3.6095189598293263E-4, + "95.0" : 3.6095189598293263E-4, + "99.0" : 3.6095189598293263E-4, + "99.9" : 3.6095189598293263E-4, + "99.99" : 3.6095189598293263E-4, + "99.999" : 3.6095189598293263E-4, + "99.9999" : 3.6095189598293263E-4, + "100.0" : 3.6095189598293263E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.606163546400467E-4, + 3.6064198798842727E-4, + 3.6095189598293263E-4 + ], + [ + 3.594077976533664E-4, + 3.594281065821746E-4, + 3.5956981985723404E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12418701275997601, + "scoreError" : 0.0035839483863352346, + "scoreConfidence" : [ + 0.12060306437364078, + 0.12777096114631126 + ], + "scorePercentiles" : { + "0.0" : 0.12293411060162762, + "50.0" : 0.1241676744395013, + "90.0" : 0.1254135146479721, + "95.0" : 0.1254135146479721, + "99.0" : 0.1254135146479721, + "99.9" : 0.1254135146479721, + "99.99" : 0.1254135146479721, + "99.999" : 0.1254135146479721, + "99.9999" : 0.1254135146479721, + "100.0" : 0.1254135146479721 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1230992162069008, + 0.12293411060162762, + 0.12303481936293507 + ], + [ + 0.1252361326721018, + 0.1254135146479721, + 0.1254042830683186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012976240293775027, + "scoreError" : 1.5034914932536146E-4, + "scoreConfidence" : [ + 0.012825891144449665, + 0.013126589443100389 + ], + "scorePercentiles" : { + "0.0" : 0.012925125507145599, + "50.0" : 0.012975020998023883, + "90.0" : 0.01303144844953765, + "95.0" : 0.01303144844953765, + "99.0" : 0.01303144844953765, + "99.9" : 0.01303144844953765, + "99.99" : 0.01303144844953765, + "99.999" : 0.01303144844953765, + "99.9999" : 0.01303144844953765, + "100.0" : 0.01303144844953765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01303144844953765, + 0.013022313691198608, + 0.013021437488931946 + ], + [ + 0.012928604507115818, + 0.012925125507145599, + 0.01292851211872054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9735437818773524, + "scoreError" : 0.01770260727615262, + "scoreConfidence" : [ + 0.9558411746011998, + 0.9912463891535049 + ], + "scorePercentiles" : { + "0.0" : 0.964080837944664, + "50.0" : 0.9720882981926966, + "90.0" : 0.9809756350171652, + "95.0" : 0.9809756350171652, + "99.0" : 0.9809756350171652, + "99.9" : 0.9809756350171652, + "99.99" : 0.9809756350171652, + "99.999" : 0.9809756350171652, + "99.9999" : 0.9809756350171652, + "100.0" : 0.9809756350171652 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.964080837944664, + 0.9803636567983531, + 0.9809756350171652 + ], + [ + 0.9716659651185386, + 0.9724133431544146, + 0.9717632532309786 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011280642379926794, + "scoreError" : 3.505701381248431E-4, + "scoreConfidence" : [ + 0.01093007224180195, + 0.011631212518051636 + ], + "scorePercentiles" : { + "0.0" : 0.011160072226177748, + "50.0" : 0.011279874302047757, + "90.0" : 0.011410773677352217, + "95.0" : 0.011410773677352217, + "99.0" : 0.011410773677352217, + "99.9" : 0.011410773677352217, + "99.99" : 0.011410773677352217, + "99.999" : 0.011410773677352217, + "99.9999" : 0.011410773677352217, + "100.0" : 0.011410773677352217 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011410773677352217, + 0.011391183885526042, + 0.011380859270049733 + ], + [ + 0.011162075886409247, + 0.011178889334045783, + 0.011160072226177748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1910874204484645, + "scoreError" : 0.0627220484176189, + "scoreConfidence" : [ + 3.1283653720308457, + 3.2538094688660832 + ], + "scorePercentiles" : { + "0.0" : 3.163626561669829, + "50.0" : 3.193272353999566, + "90.0" : 3.2125267071290944, + "95.0" : 3.2125267071290944, + "99.0" : 3.2125267071290944, + "99.9" : 3.2125267071290944, + "99.99" : 3.2125267071290944, + "99.999" : 3.2125267071290944, + "99.9999" : 3.2125267071290944, + "100.0" : 3.2125267071290944 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.17214985225111, + 3.1775300819567978, + 3.163626561669829 + ], + [ + 3.2116766936416186, + 3.2125267071290944, + 3.2090146260423347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6533328512416032, + "scoreError" : 0.017166451234994457, + "scoreConfidence" : [ + 2.636166400006609, + 2.6704993024765975 + ], + "scorePercentiles" : { + "0.0" : 2.6453069418143347, + "50.0" : 2.653733123391657, + "90.0" : 2.6608787720138336, + "95.0" : 2.6608787720138336, + "99.0" : 2.6608787720138336, + "99.9" : 2.6608787720138336, + "99.99" : 2.6608787720138336, + "99.999" : 2.6608787720138336, + "99.9999" : 2.6608787720138336, + "100.0" : 2.6608787720138336 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6608787720138336, + 2.657953804677119, + 2.656889790382572 + ], + [ + 2.650576456400742, + 2.648391342161017, + 2.6453069418143347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1787263824513697, + "scoreError" : 0.0035420271382964846, + "scoreConfidence" : [ + 0.17518435531307322, + 0.1822684095896662 + ], + "scorePercentiles" : { + "0.0" : 0.17749152617940436, + "50.0" : 0.1786193503115488, + "90.0" : 0.18011950147694525, + "95.0" : 0.18011950147694525, + "99.0" : 0.18011950147694525, + "99.9" : 0.18011950147694525, + "99.99" : 0.18011950147694525, + "99.999" : 0.18011950147694525, + "99.9999" : 0.18011950147694525, + "100.0" : 0.18011950147694525 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17761668992220525, + 0.1776449230468611, + 0.17749152617940436 + ], + [ + 0.17989187650656593, + 0.18011950147694525, + 0.17959377757623649 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3277736552476341, + "scoreError" : 0.009626807327651036, + "scoreConfidence" : [ + 0.31814684791998304, + 0.3374004625752851 + ], + "scorePercentiles" : { + "0.0" : 0.3229094516774839, + "50.0" : 0.3287168355966337, + "90.0" : 0.330930362619544, + "95.0" : 0.330930362619544, + "99.0" : 0.330930362619544, + "99.9" : 0.330930362619544, + "99.99" : 0.330930362619544, + "99.999" : 0.330930362619544, + "99.9999" : 0.330930362619544, + "100.0" : 0.330930362619544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32693886128547145, + 0.3229094516774839, + 0.32475292404364486 + ], + [ + 0.330930362619544, + 0.330494809907796, + 0.3306155219518646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.13945600831798408, + "scoreError" : 0.009609701362911878, + "scoreConfidence" : [ + 0.1298463069550722, + 0.14906570968089594 + ], + "scorePercentiles" : { + "0.0" : 0.13572622595312098, + "50.0" : 0.13907296816708287, + "90.0" : 0.14378956588255593, + "95.0" : 0.14378956588255593, + "99.0" : 0.14378956588255593, + "99.9" : 0.14378956588255593, + "99.99" : 0.14378956588255593, + "99.999" : 0.14378956588255593, + "99.9999" : 0.14378956588255593, + "100.0" : 0.14378956588255593 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14378956588255593, + 0.14307050002146016, + 0.13845975851851852 + ], + [ + 0.1396861778156472, + 0.13572622595312098, + 0.1360038217166016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3985150274811047, + "scoreError" : 0.02800248730669272, + "scoreConfidence" : [ + 0.37051254017441193, + 0.4265175147877974 + ], + "scorePercentiles" : { + "0.0" : 0.3871723473227767, + "50.0" : 0.4003953489419816, + "90.0" : 0.4079391089581464, + "95.0" : 0.4079391089581464, + "99.0" : 0.4079391089581464, + "99.9" : 0.4079391089581464, + "99.99" : 0.4079391089581464, + "99.999" : 0.4079391089581464, + "99.9999" : 0.4079391089581464, + "100.0" : 0.4079391089581464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4072222865985259, + 0.4079391089581464, + 0.40698896605754753 + ], + [ + 0.3938017318264157, + 0.3879657241232154, + 0.3871723473227767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15448244128381358, + "scoreError" : 5.89213777021657E-4, + "scoreConfidence" : [ + 0.15389322750679194, + 0.15507165506083523 + ], + "scorePercentiles" : { + "0.0" : 0.15422005116895934, + "50.0" : 0.1544669877670076, + "90.0" : 0.15473506907222875, + "95.0" : 0.15473506907222875, + "99.0" : 0.15473506907222875, + "99.9" : 0.15473506907222875, + "99.99" : 0.15473506907222875, + "99.999" : 0.15473506907222875, + "99.9999" : 0.15473506907222875, + "100.0" : 0.15473506907222875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15469080968954477, + 0.15473506907222875, + 0.15455660713733732 + ], + [ + 0.15422005116895934, + 0.15431474223813346, + 0.15437736839667787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047019876893764086, + "scoreError" : 6.3864915970609E-4, + "scoreConfidence" : [ + 0.046381227734058, + 0.04765852605347017 + ], + "scorePercentiles" : { + "0.0" : 0.046678125893874045, + "50.0" : 0.046971939101597374, + "90.0" : 0.04731776117630359, + "95.0" : 0.04731776117630359, + "99.0" : 0.04731776117630359, + "99.9" : 0.04731776117630359, + "99.99" : 0.04731776117630359, + "99.999" : 0.04731776117630359, + "99.9999" : 0.04731776117630359, + "100.0" : 0.04731776117630359 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046992444194865673, + 0.04695143400832907, + 0.046950792949969955 + ], + [ + 0.04731776117630359, + 0.04722870313924218, + 0.046678125893874045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8401325.853389855, + "scoreError" : 131504.84064462886, + "scoreConfidence" : [ + 8269821.012745227, + 8532830.694034485 + ], + "scorePercentiles" : { + "0.0" : 8358130.066833751, + "50.0" : 8395696.085385714, + "90.0" : 8467619.102455545, + "95.0" : 8467619.102455545, + "99.0" : 8467619.102455545, + "99.9" : 8467619.102455545, + "99.99" : 8467619.102455545, + "99.999" : 8467619.102455545, + "99.9999" : 8467619.102455545, + "100.0" : 8467619.102455545 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8359222.380952381, + 8364205.1438127095, + 8358130.066833751 + ], + [ + 8467619.102455545, + 8427187.026958719, + 8431591.399326032 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-26T03:45:33Z-6e9e023a9bfcb7ac009ca303bb6aadb9f59c634f-jdk17.json b/performance-results/2025-05-26T03:45:33Z-6e9e023a9bfcb7ac009ca303bb6aadb9f59c634f-jdk17.json new file mode 100644 index 0000000000..f529f26b93 --- /dev/null +++ b/performance-results/2025-05-26T03:45:33Z-6e9e023a9bfcb7ac009ca303bb6aadb9f59c634f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3614714348268766, + "scoreError" : 0.023730264725304887, + "scoreConfidence" : [ + 3.337741170101572, + 3.3852016995521814 + ], + "scorePercentiles" : { + "0.0" : 3.357414067104462, + "50.0" : 3.3613794971751148, + "90.0" : 3.3657126778528133, + "95.0" : 3.3657126778528133, + "99.0" : 3.3657126778528133, + "99.9" : 3.3657126778528133, + "99.99" : 3.3657126778528133, + "99.999" : 3.3657126778528133, + "99.9999" : 3.3657126778528133, + "100.0" : 3.3657126778528133 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.357414067104462, + 3.359648927153407 + ], + [ + 3.3631100671968226, + 3.3657126778528133 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6962817844570828, + "scoreError" : 0.03622820318709655, + "scoreConfidence" : [ + 1.6600535812699861, + 1.7325099876441794 + ], + "scorePercentiles" : { + "0.0" : 1.690711715576101, + "50.0" : 1.6963508243773273, + "90.0" : 1.7017137734975756, + "95.0" : 1.7017137734975756, + "99.0" : 1.7017137734975756, + "99.9" : 1.7017137734975756, + "99.99" : 1.7017137734975756, + "99.999" : 1.7017137734975756, + "99.9999" : 1.7017137734975756, + "100.0" : 1.7017137734975756 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.690711715576101, + 1.6922427878287205 + ], + [ + 1.7004588609259341, + 1.7017137734975756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.851620858898376, + "scoreError" : 0.030261899132737996, + "scoreConfidence" : [ + 0.821358959765638, + 0.881882758031114 + ], + "scorePercentiles" : { + "0.0" : 0.8454826620983287, + "50.0" : 0.8523796671157864, + "90.0" : 0.8562414392636027, + "95.0" : 0.8562414392636027, + "99.0" : 0.8562414392636027, + "99.9" : 0.8562414392636027, + "99.99" : 0.8562414392636027, + "99.999" : 0.8562414392636027, + "99.9999" : 0.8562414392636027, + "100.0" : 0.8562414392636027 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8507041944482526, + 0.8562414392636027 + ], + [ + 0.8454826620983287, + 0.85405513978332 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.328236098591066, + "scoreError" : 0.1599667742886451, + "scoreConfidence" : [ + 16.168269324302422, + 16.48820287287971 + ], + "scorePercentiles" : { + "0.0" : 16.259886445903398, + "50.0" : 16.331649995849233, + "90.0" : 16.391977039606704, + "95.0" : 16.391977039606704, + "99.0" : 16.391977039606704, + "99.9" : 16.391977039606704, + "99.99" : 16.391977039606704, + "99.999" : 16.391977039606704, + "99.9999" : 16.391977039606704, + "100.0" : 16.391977039606704 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.37098061248881, + 16.37412073937079, + 16.391977039606704 + ], + [ + 16.28013237496706, + 16.29231937920966, + 16.259886445903398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2813.852287068455, + "scoreError" : 73.46350599468525, + "scoreConfidence" : [ + 2740.3887810737697, + 2887.3157930631405 + ], + "scorePercentiles" : { + "0.0" : 2778.689724756634, + "50.0" : 2816.1433312413237, + "90.0" : 2838.152239402783, + "95.0" : 2838.152239402783, + "99.0" : 2838.152239402783, + "99.9" : 2838.152239402783, + "99.99" : 2838.152239402783, + "99.999" : 2838.152239402783, + "99.9999" : 2838.152239402783, + "100.0" : 2838.152239402783 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2778.689724756634, + 2797.497743153841, + 2796.0259982634466 + ], + [ + 2837.9590975052183, + 2838.152239402783, + 2834.7889193288065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77596.47334592814, + "scoreError" : 2214.590397392616, + "scoreConfidence" : [ + 75381.88294853552, + 79811.06374332076 + ], + "scorePercentiles" : { + "0.0" : 76865.39029436032, + "50.0" : 77591.17630082692, + "90.0" : 78369.13659056665, + "95.0" : 78369.13659056665, + "99.0" : 78369.13659056665, + "99.9" : 78369.13659056665, + "99.99" : 78369.13659056665, + "99.999" : 78369.13659056665, + "99.9999" : 78369.13659056665, + "100.0" : 78369.13659056665 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76894.50354849873, + 76865.39029436032, + 76868.32781949542 + ], + [ + 78287.84905315512, + 78293.63276949254, + 78369.13659056665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 368.1424097942556, + "scoreError" : 19.501545043130996, + "scoreConfidence" : [ + 348.64086475112464, + 387.6439548373866 + ], + "scorePercentiles" : { + "0.0" : 361.63724429339584, + "50.0" : 368.0868787665804, + "90.0" : 374.8018399977875, + "95.0" : 374.8018399977875, + "99.0" : 374.8018399977875, + "99.9" : 374.8018399977875, + "99.99" : 374.8018399977875, + "99.999" : 374.8018399977875, + "99.9999" : 374.8018399977875, + "100.0" : 374.8018399977875 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 374.25302555664666, + 374.8018399977875, + 374.4099290270758 + ], + [ + 361.9207319765142, + 361.8316879141139, + 361.63724429339584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.64137479006438, + "scoreError" : 4.4047327208724765, + "scoreConfidence" : [ + 108.2366420691919, + 117.04610751093685 + ], + "scorePercentiles" : { + "0.0" : 110.49395248918994, + "50.0" : 113.06679898430392, + "90.0" : 114.25698865358899, + "95.0" : 114.25698865358899, + "99.0" : 114.25698865358899, + "99.9" : 114.25698865358899, + "99.99" : 114.25698865358899, + "99.999" : 114.25698865358899, + "99.9999" : 114.25698865358899, + "100.0" : 114.25698865358899 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.49395248918994, + 111.07185808985291, + 112.46433866036132 + ], + [ + 113.66925930824652, + 114.25698865358899, + 113.89185153914651 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06147850547103111, + "scoreError" : 0.0023284702367402255, + "scoreConfidence" : [ + 0.05915003523429089, + 0.06380697570777134 + ], + "scorePercentiles" : { + "0.0" : 0.0606144883045721, + "50.0" : 0.061487224399485244, + "90.0" : 0.062443772532564036, + "95.0" : 0.062443772532564036, + "99.0" : 0.062443772532564036, + "99.9" : 0.062443772532564036, + "99.99" : 0.062443772532564036, + "99.999" : 0.062443772532564036, + "99.9999" : 0.062443772532564036, + "100.0" : 0.062443772532564036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0621282459555169, + 0.06210219740045209, + 0.062443772532564036 + ], + [ + 0.060872251398518394, + 0.060710077234563106, + 0.0606144883045721 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.655511578901231E-4, + "scoreError" : 3.0723521523622295E-6, + "scoreConfidence" : [ + 3.6247880573776086E-4, + 3.6862351004248535E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6427925177357244E-4, + "50.0" : 3.6528128404572863E-4, + "90.0" : 3.674832453939252E-4, + "95.0" : 3.674832453939252E-4, + "99.0" : 3.674832453939252E-4, + "99.9" : 3.674832453939252E-4, + "99.99" : 3.674832453939252E-4, + "99.999" : 3.674832453939252E-4, + "99.9999" : 3.674832453939252E-4, + "100.0" : 3.674832453939252E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.650033329407174E-4, + 3.651743189870615E-4, + 3.653882491043957E-4 + ], + [ + 3.674832453939252E-4, + 3.659785491410664E-4, + 3.6427925177357244E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12147732072933852, + "scoreError" : 3.219580011016646E-4, + "scoreConfidence" : [ + 0.12115536272823685, + 0.12179927873044019 + ], + "scorePercentiles" : { + "0.0" : 0.12135218729218747, + "50.0" : 0.12146356598028832, + "90.0" : 0.1216369989782762, + "95.0" : 0.1216369989782762, + "99.0" : 0.1216369989782762, + "99.9" : 0.1216369989782762, + "99.99" : 0.1216369989782762, + "99.999" : 0.1216369989782762, + "99.9999" : 0.1216369989782762, + "100.0" : 0.1216369989782762 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12153447687857759, + 0.12139265508199905, + 0.12138925979291341 + ], + [ + 0.1216369989782762, + 0.12135218729218747, + 0.1215583463520774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012766078080547286, + "scoreError" : 7.432614842799652E-4, + "scoreConfidence" : [ + 0.01202281659626732, + 0.013509339564827251 + ], + "scorePercentiles" : { + "0.0" : 0.012514292589009844, + "50.0" : 0.012768145273215195, + "90.0" : 0.013017491898027618, + "95.0" : 0.013017491898027618, + "99.0" : 0.013017491898027618, + "99.9" : 0.013017491898027618, + "99.99" : 0.013017491898027618, + "99.999" : 0.013017491898027618, + "99.9999" : 0.013017491898027618, + "100.0" : 0.013017491898027618 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012543586387651273, + 0.012514292589009844, + 0.01251540483863499 + ], + [ + 0.013017491898027618, + 0.013012988611180875, + 0.012992704158779117 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0196311993562193, + "scoreError" : 0.01283966206251965, + "scoreConfidence" : [ + 1.0067915372936995, + 1.032470861418739 + ], + "scorePercentiles" : { + "0.0" : 1.0133841465194042, + "50.0" : 1.0188113735998054, + "90.0" : 1.0266213273791192, + "95.0" : 1.0266213273791192, + "99.0" : 1.0266213273791192, + "99.9" : 1.0266213273791192, + "99.99" : 1.0266213273791192, + "99.999" : 1.0266213273791192, + "99.9999" : 1.0266213273791192, + "100.0" : 1.0266213273791192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0228221251917766, + 1.0185404550361543, + 1.0266213273791192 + ], + [ + 1.0190822921634566, + 1.0133841465194042, + 1.0173368498474058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011282248798704155, + "scoreError" : 8.665969514843246E-4, + "scoreConfidence" : [ + 0.01041565184721983, + 0.01214884575018848 + ], + "scorePercentiles" : { + "0.0" : 0.010991958227171904, + "50.0" : 0.01128469994569675, + "90.0" : 0.011566696598308985, + "95.0" : 0.011566696598308985, + "99.0" : 0.011566696598308985, + "99.9" : 0.011566696598308985, + "99.99" : 0.011566696598308985, + "99.999" : 0.011566696598308985, + "99.9999" : 0.011566696598308985, + "100.0" : 0.011566696598308985 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011566696598308985, + 0.011560329199468238, + 0.011565901123252436 + ], + [ + 0.010991958227171904, + 0.011009070691925263, + 0.010999536952098113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1373012986232642, + "scoreError" : 0.30535302635071476, + "scoreConfidence" : [ + 2.8319482722725495, + 3.442654324973979 + ], + "scorePercentiles" : { + "0.0" : 3.035403775485437, + "50.0" : 3.1366105918609364, + "90.0" : 3.241204611147116, + "95.0" : 3.241204611147116, + "99.0" : 3.241204611147116, + "99.9" : 3.241204611147116, + "99.99" : 3.241204611147116, + "99.999" : 3.241204611147116, + "99.9999" : 3.241204611147116, + "100.0" : 3.241204611147116 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0415834020681265, + 3.0368725094110505, + 3.035403775485437 + ], + [ + 3.2316377816537467, + 3.241204611147116, + 3.23710571197411 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6491367156774066, + "scoreError" : 0.05650122024386562, + "scoreConfidence" : [ + 2.592635495433541, + 2.7056379359212723 + ], + "scorePercentiles" : { + "0.0" : 2.6254675991073775, + "50.0" : 2.648729287550855, + "90.0" : 2.678552433851098, + "95.0" : 2.678552433851098, + "99.0" : 2.678552433851098, + "99.9" : 2.678552433851098, + "99.99" : 2.678552433851098, + "99.999" : 2.678552433851098, + "99.9999" : 2.678552433851098, + "100.0" : 2.678552433851098 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6380909680823, + 2.6331517006319114, + 2.6254675991073775 + ], + [ + 2.678552433851098, + 2.6601899853723405, + 2.65936760701941 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17702547118618883, + "scoreError" : 0.002225237339140757, + "scoreConfidence" : [ + 0.17480023384704807, + 0.1792507085253296 + ], + "scorePercentiles" : { + "0.0" : 0.17618010371375215, + "50.0" : 0.17704507386369328, + "90.0" : 0.17782491446760082, + "95.0" : 0.17782491446760082, + "99.0" : 0.17782491446760082, + "99.9" : 0.17782491446760082, + "99.99" : 0.17782491446760082, + "99.999" : 0.17782491446760082, + "99.9999" : 0.17782491446760082, + "100.0" : 0.17782491446760082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17782491446760082, + 0.1777458098005759, + 0.1776638920906765 + ], + [ + 0.17642625563671008, + 0.17618010371375215, + 0.1763118514078175 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31393337094165, + "scoreError" : 0.014401946094595957, + "scoreConfidence" : [ + 0.2995314248470541, + 0.32833531703624597 + ], + "scorePercentiles" : { + "0.0" : 0.30903255562422743, + "50.0" : 0.31388112620180975, + "90.0" : 0.31902956533529, + "95.0" : 0.31902956533529, + "99.0" : 0.31902956533529, + "99.9" : 0.31902956533529, + "99.99" : 0.31902956533529, + "99.999" : 0.31902956533529, + "99.9999" : 0.31902956533529, + "100.0" : 0.31902956533529 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3094502182819656, + 0.30903255562422743, + 0.30927158153703416 + ], + [ + 0.31902956533529, + 0.31850427074972926, + 0.3183120341216539 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14760101212202417, + "scoreError" : 0.01383644471042753, + "scoreConfidence" : [ + 0.13376456741159665, + 0.1614374568324517 + ], + "scorePercentiles" : { + "0.0" : 0.14302856689264568, + "50.0" : 0.14756751791979614, + "90.0" : 0.15221194875190258, + "95.0" : 0.15221194875190258, + "99.0" : 0.15221194875190258, + "99.9" : 0.15221194875190258, + "99.99" : 0.15221194875190258, + "99.999" : 0.15221194875190258, + "99.9999" : 0.15221194875190258, + "100.0" : 0.15221194875190258 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15221194875190258, + 0.1521647355143031, + 0.1519359289718774 + ], + [ + 0.14319910686771486, + 0.14302856689264568, + 0.1430657857337015 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3916138479368183, + "scoreError" : 0.012535842365686277, + "scoreConfidence" : [ + 0.379078005571132, + 0.4041496903025046 + ], + "scorePercentiles" : { + "0.0" : 0.3860144325085884, + "50.0" : 0.3925293881449001, + "90.0" : 0.39639481040906926, + "95.0" : 0.39639481040906926, + "99.0" : 0.39639481040906926, + "99.9" : 0.39639481040906926, + "99.99" : 0.39639481040906926, + "99.999" : 0.39639481040906926, + "99.9999" : 0.39639481040906926, + "100.0" : 0.39639481040906926 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39532098248804204, + 0.39639481040906926, + 0.39453138635735985 + ], + [ + 0.39052738993244035, + 0.3868940859254101, + 0.3860144325085884 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15209557792349654, + "scoreError" : 0.007169311210385957, + "scoreConfidence" : [ + 0.14492626671311057, + 0.1592648891338825 + ], + "scorePercentiles" : { + "0.0" : 0.14992068262772848, + "50.0" : 0.15152611853143644, + "90.0" : 0.15630555441629285, + "95.0" : 0.15630555441629285, + "99.0" : 0.15630555441629285, + "99.9" : 0.15630555441629285, + "99.99" : 0.15630555441629285, + "99.999" : 0.15630555441629285, + "99.9999" : 0.15630555441629285, + "100.0" : 0.15630555441629285 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15630555441629285, + 0.15322737660885022, + 0.1529728295320698 + ], + [ + 0.14992068262772848, + 0.15007940753080307, + 0.15006761682523484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04745508248648409, + "scoreError" : 0.0010635545155073974, + "scoreConfidence" : [ + 0.0463915279709767, + 0.04851863700199149 + ], + "scorePercentiles" : { + "0.0" : 0.04702969041785219, + "50.0" : 0.047468857613714166, + "90.0" : 0.04792646974445978, + "95.0" : 0.04792646974445978, + "99.0" : 0.04792646974445978, + "99.9" : 0.04792646974445978, + "99.99" : 0.04792646974445978, + "99.999" : 0.04792646974445978, + "99.9999" : 0.04792646974445978, + "100.0" : 0.04792646974445978 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04792646974445978, + 0.04780433725960734, + 0.047382369942004815 + ], + [ + 0.047555345285423524, + 0.04702969041785219, + 0.04703228226955691 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8618132.613253148, + "scoreError" : 28997.403884526953, + "scoreConfidence" : [ + 8589135.209368622, + 8647130.017137675 + ], + "scorePercentiles" : { + "0.0" : 8603472.471195186, + "50.0" : 8620817.683484066, + "90.0" : 8628014.930172414, + "95.0" : 8628014.930172414, + "99.0" : 8628014.930172414, + "99.9" : 8628014.930172414, + "99.99" : 8628014.930172414, + "99.999" : 8628014.930172414, + "99.9999" : 8628014.930172414, + "100.0" : 8628014.930172414 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8628014.930172414, + 8623291.05, + 8627716.897413794 + ], + [ + 8607956.013769364, + 8618344.316968132, + 8603472.471195186 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-27T08:51:22Z-27a71b2d3a48a9b168878df96c7dd7166471c4ec-jdk17.json b/performance-results/2025-05-27T08:51:22Z-27a71b2d3a48a9b168878df96c7dd7166471c4ec-jdk17.json new file mode 100644 index 0000000000..2acf834a18 --- /dev/null +++ b/performance-results/2025-05-27T08:51:22Z-27a71b2d3a48a9b168878df96c7dd7166471c4ec-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.34814208392132, + "scoreError" : 0.03980385542138689, + "scoreConfidence" : [ + 3.3083382284999328, + 3.387945939342707 + ], + "scorePercentiles" : { + "0.0" : 3.342277998332218, + "50.0" : 3.347096749364452, + "90.0" : 3.3560968386241568, + "95.0" : 3.3560968386241568, + "99.0" : 3.3560968386241568, + "99.9" : 3.3560968386241568, + "99.99" : 3.3560968386241568, + "99.999" : 3.3560968386241568, + "99.9999" : 3.3560968386241568, + "100.0" : 3.3560968386241568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.342277998332218, + 3.34974007087489 + ], + [ + 3.3444534278540137, + 3.3560968386241568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6881478079426446, + "scoreError" : 0.04575941559937918, + "scoreConfidence" : [ + 1.6423883923432654, + 1.7339072235420239 + ], + "scorePercentiles" : { + "0.0" : 1.6807256329018374, + "50.0" : 1.6881508810246513, + "90.0" : 1.6955638368194386, + "95.0" : 1.6955638368194386, + "99.0" : 1.6955638368194386, + "99.9" : 1.6955638368194386, + "99.99" : 1.6955638368194386, + "99.999" : 1.6955638368194386, + "99.9999" : 1.6955638368194386, + "100.0" : 1.6955638368194386 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6807256329018374, + 1.6836592720421095 + ], + [ + 1.6926424900071932, + 1.6955638368194386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8505912976048506, + "scoreError" : 0.029344760700535943, + "scoreConfidence" : [ + 0.8212465369043147, + 0.8799360583053866 + ], + "scorePercentiles" : { + "0.0" : 0.8459571299364086, + "50.0" : 0.8502503813332682, + "90.0" : 0.8559072978164576, + "95.0" : 0.8559072978164576, + "99.0" : 0.8559072978164576, + "99.9" : 0.8559072978164576, + "99.99" : 0.8559072978164576, + "99.999" : 0.8559072978164576, + "99.9999" : 0.8559072978164576, + "100.0" : 0.8559072978164576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8459571299364086, + 0.8526894265828573 + ], + [ + 0.8478113360836792, + 0.8559072978164576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.257992756399528, + "scoreError" : 0.03758079825652606, + "scoreConfidence" : [ + 16.220411958143, + 16.295573554656055 + ], + "scorePercentiles" : { + "0.0" : 16.242897432179504, + "50.0" : 16.258776498158145, + "90.0" : 16.274466607874377, + "95.0" : 16.274466607874377, + "99.0" : 16.274466607874377, + "99.9" : 16.274466607874377, + "99.99" : 16.274466607874377, + "99.999" : 16.274466607874377, + "99.9999" : 16.274466607874377, + "100.0" : 16.274466607874377 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.274466607874377, + 16.269067978687023, + 16.265032846835492 + ], + [ + 16.24397152333997, + 16.242897432179504, + 16.252520149480798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2617.983139296641, + "scoreError" : 184.7011599734979, + "scoreConfidence" : [ + 2433.2819793231433, + 2802.684299270139 + ], + "scorePercentiles" : { + "0.0" : 2556.381605593551, + "50.0" : 2619.039889932432, + "90.0" : 2678.329687455635, + "95.0" : 2678.329687455635, + "99.0" : 2678.329687455635, + "99.9" : 2678.329687455635, + "99.99" : 2678.329687455635, + "99.999" : 2678.329687455635, + "99.9999" : 2678.329687455635, + "100.0" : 2678.329687455635 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2678.090770519794, + 2678.329687455635, + 2677.8756924811564 + ], + [ + 2556.381605593551, + 2560.204087383707, + 2557.0169923460035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76399.52247218134, + "scoreError" : 277.31048491386997, + "scoreConfidence" : [ + 76122.21198726747, + 76676.83295709522 + ], + "scorePercentiles" : { + "0.0" : 76295.56853250694, + "50.0" : 76386.39102129872, + "90.0" : 76543.8514960974, + "95.0" : 76543.8514960974, + "99.0" : 76543.8514960974, + "99.9" : 76543.8514960974, + "99.99" : 76543.8514960974, + "99.999" : 76543.8514960974, + "99.9999" : 76543.8514960974, + "100.0" : 76543.8514960974 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76462.8635095208, + 76543.8514960974, + 76445.1468131089 + ], + [ + 76327.63522948854, + 76322.06925236547, + 76295.56853250694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.9028577206111, + "scoreError" : 10.683519201534338, + "scoreConfidence" : [ + 352.21933851907676, + 373.58637692214546 + ], + "scorePercentiles" : { + "0.0" : 358.3340361147952, + "50.0" : 363.1677812123269, + "90.0" : 366.62538256901263, + "95.0" : 366.62538256901263, + "99.0" : 366.62538256901263, + "99.9" : 366.62538256901263, + "99.99" : 366.62538256901263, + "99.999" : 366.62538256901263, + "99.9999" : 366.62538256901263, + "100.0" : 366.62538256901263 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.65117104123647, + 359.5265237441057, + 358.3340361147952 + ], + [ + 365.6843913834173, + 366.62538256901263, + 366.59564147109944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.86006505853636, + "scoreError" : 6.48731814507662, + "scoreConfidence" : [ + 110.37274691345975, + 123.34738320361298 + ], + "scorePercentiles" : { + "0.0" : 114.66861380144546, + "50.0" : 116.78126588593946, + "90.0" : 119.10672745026966, + "95.0" : 119.10672745026966, + "99.0" : 119.10672745026966, + "99.9" : 119.10672745026966, + "99.99" : 119.10672745026966, + "99.999" : 119.10672745026966, + "99.9999" : 119.10672745026966, + "100.0" : 119.10672745026966 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 119.07252825308761, + 119.10672745026966, + 118.72423311504211 + ], + [ + 114.66861380144546, + 114.8382986568368, + 114.74998907453659 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06155172133323721, + "scoreError" : 3.2266152824694306E-4, + "scoreConfidence" : [ + 0.06122905980499027, + 0.06187438286148415 + ], + "scorePercentiles" : { + "0.0" : 0.06141200833962797, + "50.0" : 0.06151803176198145, + "90.0" : 0.06175221790786711, + "95.0" : 0.06175221790786711, + "99.0" : 0.06175221790786711, + "99.9" : 0.06175221790786711, + "99.99" : 0.06175221790786711, + "99.999" : 0.06175221790786711, + "99.9999" : 0.06175221790786711, + "100.0" : 0.06175221790786711 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06141200833962797, + 0.06152190000369126, + 0.06175221790786711 + ], + [ + 0.06151416352027164, + 0.061509419703651765, + 0.06160061852431347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.74179419012454E-4, + "scoreError" : 1.0756214526763104E-5, + "scoreConfidence" : [ + 3.634232044856909E-4, + 3.849356335392171E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7050227880352414E-4, + "50.0" : 3.740571455804957E-4, + "90.0" : 3.7808743226131944E-4, + "95.0" : 3.7808743226131944E-4, + "99.0" : 3.7808743226131944E-4, + "99.9" : 3.7808743226131944E-4, + "99.99" : 3.7808743226131944E-4, + "99.999" : 3.7808743226131944E-4, + "99.9999" : 3.7808743226131944E-4, + "100.0" : 3.7808743226131944E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7055961828791697E-4, + 3.7050227880352414E-4, + 3.710209701303108E-4 + ], + [ + 3.770933210306806E-4, + 3.7808743226131944E-4, + 3.7781289356097217E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1268802022980863, + "scoreError" : 0.009520261154938854, + "scoreConfidence" : [ + 0.11735994114314745, + 0.13640046345302514 + ], + "scorePercentiles" : { + "0.0" : 0.12376695106314513, + "50.0" : 0.12634937875526825, + "90.0" : 0.13065661295548675, + "95.0" : 0.13065661295548675, + "99.0" : 0.13065661295548675, + "99.9" : 0.13065661295548675, + "99.99" : 0.13065661295548675, + "99.999" : 0.13065661295548675, + "99.9999" : 0.13065661295548675, + "100.0" : 0.13065661295548675 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1287227311167748, + 0.13065661295548675, + 0.1303785778021147 + ], + [ + 0.12397602639376169, + 0.12376695106314513, + 0.12378031445723481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012874845402550739, + "scoreError" : 4.610545707824252E-4, + "scoreConfidence" : [ + 0.012413790831768313, + 0.013335899973333164 + ], + "scorePercentiles" : { + "0.0" : 0.012714385865094512, + "50.0" : 0.01287412766541373, + "90.0" : 0.013031731777973541, + "95.0" : 0.013031731777973541, + "99.0" : 0.013031731777973541, + "99.9" : 0.013031731777973541, + "99.99" : 0.013031731777973541, + "99.999" : 0.013031731777973541, + "99.9999" : 0.013031731777973541, + "100.0" : 0.013031731777973541 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012729758377027665, + 0.012730560000865667, + 0.012714385865094512 + ], + [ + 0.01302494106438126, + 0.013031731777973541, + 0.013017695329961793 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9983100431779817, + "scoreError" : 0.050988826937066856, + "scoreConfidence" : [ + 0.9473212162409148, + 1.0492988701150485 + ], + "scorePercentiles" : { + "0.0" : 0.9794604709108717, + "50.0" : 0.9997606056636592, + "90.0" : 1.0149253270752994, + "95.0" : 1.0149253270752994, + "99.0" : 1.0149253270752994, + "99.9" : 1.0149253270752994, + "99.99" : 1.0149253270752994, + "99.999" : 1.0149253270752994, + "99.9999" : 1.0149253270752994, + "100.0" : 1.0149253270752994 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0148305803734523, + 1.014747443429731, + 1.0149253270752994 + ], + [ + 0.9811226693809477, + 0.9847737678975874, + 0.9794604709108717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011120742015541911, + "scoreError" : 5.928333425436988E-4, + "scoreConfidence" : [ + 0.010527908672998212, + 0.01171357535808561 + ], + "scorePercentiles" : { + "0.0" : 0.0109265402284031, + "50.0" : 0.011120019902827228, + "90.0" : 0.01131878381908524, + "95.0" : 0.01131878381908524, + "99.0" : 0.01131878381908524, + "99.9" : 0.01131878381908524, + "99.99" : 0.01131878381908524, + "99.999" : 0.01131878381908524, + "99.9999" : 0.01131878381908524, + "100.0" : 0.01131878381908524 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0109265402284031, + 0.0109299854351105, + 0.010926792841814503 + ], + [ + 0.01131878381908524, + 0.011310054370543955, + 0.011312295398294156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1827640717500816, + "scoreError" : 0.07564698986787523, + "scoreConfidence" : [ + 3.1071170818822065, + 3.2584110616179567 + ], + "scorePercentiles" : { + "0.0" : 3.1556967766561512, + "50.0" : 3.1827721291788187, + "90.0" : 3.208490781270045, + "95.0" : 3.208490781270045, + "99.0" : 3.208490781270045, + "99.9" : 3.208490781270045, + "99.99" : 3.208490781270045, + "99.999" : 3.208490781270045, + "99.9999" : 3.208490781270045, + "100.0" : 3.208490781270045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1556967766561512, + 3.158570057449495, + 3.1603266683512317 + ], + [ + 3.2082825567671582, + 3.208490781270045, + 3.205217590006406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7805940401948113, + "scoreError" : 0.0567602358259444, + "scoreConfidence" : [ + 2.723833804368867, + 2.8373542760207555 + ], + "scorePercentiles" : { + "0.0" : 2.760562223019597, + "50.0" : 2.778956413453237, + "90.0" : 2.8047508244531687, + "95.0" : 2.8047508244531687, + "99.0" : 2.8047508244531687, + "99.9" : 2.8047508244531687, + "99.99" : 2.8047508244531687, + "99.999" : 2.8047508244531687, + "99.9999" : 2.8047508244531687, + "100.0" : 2.8047508244531687 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7653904863146255, + 2.761596043622308, + 2.760562223019597 + ], + [ + 2.792522340591848, + 2.8047508244531687, + 2.7987423231673194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1797801207245702, + "scoreError" : 0.0043665419335601405, + "scoreConfidence" : [ + 0.17541357879101005, + 0.18414666265813034 + ], + "scorePercentiles" : { + "0.0" : 0.17831252896599684, + "50.0" : 0.1795732957180716, + "90.0" : 0.18199993797546682, + "95.0" : 0.18199993797546682, + "99.0" : 0.18199993797546682, + "99.9" : 0.18199993797546682, + "99.99" : 0.18199993797546682, + "99.999" : 0.18199993797546682, + "99.9999" : 0.18199993797546682, + "100.0" : 0.18199993797546682 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1806539862706843, + 0.18074298286581839, + 0.18199993797546682 + ], + [ + 0.1784926051654589, + 0.178478683103996, + 0.17831252896599684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3224227646702594, + "scoreError" : 0.008193754716902424, + "scoreConfidence" : [ + 0.31422900995335695, + 0.3306165193871618 + ], + "scorePercentiles" : { + "0.0" : 0.31967130061055526, + "50.0" : 0.3223839148859723, + "90.0" : 0.32533177364260385, + "95.0" : 0.32533177364260385, + "99.0" : 0.32533177364260385, + "99.9" : 0.32533177364260385, + "99.99" : 0.32533177364260385, + "99.999" : 0.32533177364260385, + "99.9999" : 0.32533177364260385, + "100.0" : 0.32533177364260385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32500753950404626, + 0.32533177364260385, + 0.32492088452790957 + ], + [ + 0.31967130061055526, + 0.31984694524403506, + 0.3197581444924061 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14231707366577723, + "scoreError" : 4.300216237360895E-4, + "scoreConfidence" : [ + 0.14188705204204113, + 0.14274709528951332 + ], + "scorePercentiles" : { + "0.0" : 0.1421596775037316, + "50.0" : 0.14231843833318913, + "90.0" : 0.1425031159529747, + "95.0" : 0.1425031159529747, + "99.0" : 0.1425031159529747, + "99.9" : 0.1425031159529747, + "99.99" : 0.1425031159529747, + "99.999" : 0.1425031159529747, + "99.9999" : 0.1425031159529747, + "100.0" : 0.1425031159529747 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14220723069922214, + 0.1421596775037316, + 0.14217300098097757 + ], + [ + 0.14242964596715615, + 0.1425031159529747, + 0.1424297708906012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4062989175231066, + "scoreError" : 0.009717542657617439, + "scoreConfidence" : [ + 0.39658137486548917, + 0.416016460180724 + ], + "scorePercentiles" : { + "0.0" : 0.40164894863041206, + "50.0" : 0.4066761272176605, + "90.0" : 0.4096687818606366, + "95.0" : 0.4096687818606366, + "99.0" : 0.4096687818606366, + "99.9" : 0.4096687818606366, + "99.99" : 0.4096687818606366, + "99.999" : 0.4096687818606366, + "99.9999" : 0.4096687818606366, + "100.0" : 0.4096687818606366 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4096687818606366, + 0.4090726300417246, + 0.40931462479535036 + ], + [ + 0.4042796243935964, + 0.40380889541691906, + 0.40164894863041206 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15484678447249986, + "scoreError" : 0.010819375231709463, + "scoreConfidence" : [ + 0.14402740924079038, + 0.16566615970420934 + ], + "scorePercentiles" : { + "0.0" : 0.15109161676185295, + "50.0" : 0.15487128021113755, + "90.0" : 0.15842573994803713, + "95.0" : 0.15842573994803713, + "99.0" : 0.15842573994803713, + "99.9" : 0.15842573994803713, + "99.99" : 0.15842573994803713, + "99.999" : 0.15842573994803713, + "99.9999" : 0.15842573994803713, + "100.0" : 0.15842573994803713 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15829102056160568, + 0.15842573994803713, + 0.15838339020256895 + ], + [ + 0.1514515398606694, + 0.15109161676185295, + 0.15143739950026502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04770164499451853, + "scoreError" : 0.0012118748336652936, + "scoreConfidence" : [ + 0.04648977016085324, + 0.04891351982818382 + ], + "scorePercentiles" : { + "0.0" : 0.04708700749613892, + "50.0" : 0.04779880272805559, + "90.0" : 0.04822899591990277, + "95.0" : 0.04822899591990277, + "99.0" : 0.04822899591990277, + "99.9" : 0.04822899591990277, + "99.99" : 0.04822899591990277, + "99.999" : 0.04822899591990277, + "99.9999" : 0.04822899591990277, + "100.0" : 0.04822899591990277 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04800020566000605, + 0.04729605543495226, + 0.04708700749613892 + ], + [ + 0.04785095360977664, + 0.04822899591990277, + 0.047746651846334545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8563892.022033507, + "scoreError" : 333523.4156191505, + "scoreConfidence" : [ + 8230368.606414356, + 8897415.437652657 + ], + "scorePercentiles" : { + "0.0" : 8448510.170608109, + "50.0" : 8562976.644572806, + "90.0" : 8682584.618923612, + "95.0" : 8682584.618923612, + "99.0" : 8682584.618923612, + "99.9" : 8682584.618923612, + "99.99" : 8682584.618923612, + "99.999" : 8682584.618923612, + "99.9999" : 8682584.618923612, + "100.0" : 8682584.618923612 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8448644.847972972, + 8448510.170608109, + 8470501.309906859 + ], + [ + 8682584.618923612, + 8677659.205550738, + 8655451.979238754 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-05-27T08:52:28Z-27a71b2d3a48a9b168878df96c7dd7166471c4ec-jdk17.json b/performance-results/2025-05-27T08:52:28Z-27a71b2d3a48a9b168878df96c7dd7166471c4ec-jdk17.json new file mode 100644 index 0000000000..cdca43f5f5 --- /dev/null +++ b/performance-results/2025-05-27T08:52:28Z-27a71b2d3a48a9b168878df96c7dd7166471c4ec-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.350689929561259, + "scoreError" : 0.012276688251055153, + "scoreConfidence" : [ + 3.338413241310204, + 3.3629666178123143 + ], + "scorePercentiles" : { + "0.0" : 3.347875106864924, + "50.0" : 3.3515175103853525, + "90.0" : 3.351849590609409, + "95.0" : 3.351849590609409, + "99.0" : 3.351849590609409, + "99.9" : 3.351849590609409, + "99.99" : 3.351849590609409, + "99.999" : 3.351849590609409, + "99.9999" : 3.351849590609409, + "100.0" : 3.351849590609409 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.347875106864924, + 3.351209083745472 + ], + [ + 3.351849590609409, + 3.351825937025233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6894862130819415, + "scoreError" : 0.05216217510598638, + "scoreConfidence" : [ + 1.637324037975955, + 1.7416483881879279 + ], + "scorePercentiles" : { + "0.0" : 1.6809447002715603, + "50.0" : 1.6894022093117624, + "90.0" : 1.698195733432681, + "95.0" : 1.698195733432681, + "99.0" : 1.698195733432681, + "99.9" : 1.698195733432681, + "99.99" : 1.698195733432681, + "99.999" : 1.698195733432681, + "99.9999" : 1.698195733432681, + "100.0" : 1.698195733432681 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6809447002715603, + 1.684572523615142 + ], + [ + 1.6942318950083826, + 1.698195733432681 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8509807483206872, + "scoreError" : 0.029850930209643727, + "scoreConfidence" : [ + 0.8211298181110435, + 0.8808316785303308 + ], + "scorePercentiles" : { + "0.0" : 0.8459063545815967, + "50.0" : 0.8514082374283676, + "90.0" : 0.8552001638444165, + "95.0" : 0.8552001638444165, + "99.0" : 0.8552001638444165, + "99.9" : 0.8552001638444165, + "99.99" : 0.8552001638444165, + "99.999" : 0.8552001638444165, + "99.9999" : 0.8552001638444165, + "100.0" : 0.8552001638444165 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8482380699605424, + 0.8545784048961926 + ], + [ + 0.8459063545815967, + 0.8552001638444165 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.128498155054952, + "scoreError" : 0.2588607840101835, + "scoreConfidence" : [ + 15.86963737104477, + 16.387358939065138 + ], + "scorePercentiles" : { + "0.0" : 16.038335112461116, + "50.0" : 16.1231065107601, + "90.0" : 16.22738749250472, + "95.0" : 16.22738749250472, + "99.0" : 16.22738749250472, + "99.9" : 16.22738749250472, + "99.99" : 16.22738749250472, + "99.999" : 16.22738749250472, + "99.9999" : 16.22738749250472, + "100.0" : 16.22738749250472 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.051804367029096, + 16.044464807399283, + 16.038335112461116 + ], + [ + 16.22738749250472, + 16.214588496444403, + 16.194408654491102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2658.5956986978254, + "scoreError" : 353.2868358169668, + "scoreConfidence" : [ + 2305.3088628808587, + 3011.882534514792 + ], + "scorePercentiles" : { + "0.0" : 2540.660151974212, + "50.0" : 2657.7861780799713, + "90.0" : 2778.8285049599554, + "95.0" : 2778.8285049599554, + "99.0" : 2778.8285049599554, + "99.9" : 2778.8285049599554, + "99.99" : 2778.8285049599554, + "99.999" : 2778.8285049599554, + "99.9999" : 2778.8285049599554, + "100.0" : 2778.8285049599554 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2770.1725149727795, + 2778.8285049599554, + 2771.689561163659 + ], + [ + 2540.660151974212, + 2544.8236179291816, + 2545.399841187163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77130.86090650568, + "scoreError" : 273.6456293169485, + "scoreConfidence" : [ + 76857.21527718873, + 77404.50653582263 + ], + "scorePercentiles" : { + "0.0" : 76939.73063633371, + "50.0" : 77160.63337032148, + "90.0" : 77212.76221304128, + "95.0" : 77212.76221304128, + "99.0" : 77212.76221304128, + "99.9" : 77212.76221304128, + "99.99" : 77212.76221304128, + "99.999" : 77212.76221304128, + "99.9999" : 77212.76221304128, + "100.0" : 77212.76221304128 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77181.85020786953, + 77129.55564114664, + 76939.73063633371 + ], + [ + 77159.99280039931, + 77161.27394024366, + 77212.76221304128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 360.51803455692396, + "scoreError" : 30.949289883062324, + "scoreConfidence" : [ + 329.56874467386166, + 391.46732443998627 + ], + "scorePercentiles" : { + "0.0" : 349.78137669509505, + "50.0" : 360.6718032082213, + "90.0" : 370.68349783790654, + "95.0" : 370.68349783790654, + "99.0" : 370.68349783790654, + "99.9" : 370.68349783790654, + "99.99" : 370.68349783790654, + "99.999" : 370.68349783790654, + "99.9999" : 370.68349783790654, + "100.0" : 370.68349783790654 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.78137669509505, + 350.6710515085572, + 350.89405964428545 + ], + [ + 370.4495467721572, + 370.68349783790654, + 370.6286748835422 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.15578416430783, + "scoreError" : 1.4634621757737745, + "scoreConfidence" : [ + 115.69232198853406, + 118.6192463400816 + ], + "scorePercentiles" : { + "0.0" : 116.63455961436804, + "50.0" : 117.14589718624941, + "90.0" : 117.67010079224434, + "95.0" : 117.67010079224434, + "99.0" : 117.67010079224434, + "99.9" : 117.67010079224434, + "99.99" : 117.67010079224434, + "99.999" : 117.67010079224434, + "99.9999" : 117.67010079224434, + "100.0" : 117.67010079224434 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.70100416031477, + 116.70612694829401, + 116.63455961436804 + ], + [ + 117.67010079224434, + 117.58566742420483, + 117.63724604642107 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06234401436829248, + "scoreError" : 2.090261150153013E-4, + "scoreConfidence" : [ + 0.06213498825327718, + 0.06255304048330779 + ], + "scorePercentiles" : { + "0.0" : 0.062259162300307556, + "50.0" : 0.062333574685813374, + "90.0" : 0.0624437480252518, + "95.0" : 0.0624437480252518, + "99.0" : 0.0624437480252518, + "99.9" : 0.0624437480252518, + "99.99" : 0.0624437480252518, + "99.999" : 0.0624437480252518, + "99.9999" : 0.0624437480252518, + "100.0" : 0.0624437480252518 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062278048613706, + 0.062259162300307556, + 0.062312518581291595 + ], + [ + 0.06235463079033515, + 0.0624159778988628, + 0.0624437480252518 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7515238077002935E-4, + "scoreError" : 1.6580303682836416E-5, + "scoreConfidence" : [ + 3.5857207708719295E-4, + 3.9173268445286575E-4 + ], + "scorePercentiles" : { + "0.0" : 3.696236985477625E-4, + "50.0" : 3.752001244070216E-4, + "90.0" : 3.8066848620039415E-4, + "95.0" : 3.8066848620039415E-4, + "99.0" : 3.8066848620039415E-4, + "99.9" : 3.8066848620039415E-4, + "99.99" : 3.8066848620039415E-4, + "99.999" : 3.8066848620039415E-4, + "99.9999" : 3.8066848620039415E-4, + "100.0" : 3.8066848620039415E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6966821058004545E-4, + 3.69977489226882E-4, + 3.696236985477625E-4 + ], + [ + 3.8042275958716123E-4, + 3.8066848620039415E-4, + 3.805536404779307E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12692875661514072, + "scoreError" : 0.01016085172952964, + "scoreConfidence" : [ + 0.11676790488561108, + 0.13708960834467035 + ], + "scorePercentiles" : { + "0.0" : 0.12354302556056582, + "50.0" : 0.12688676577676555, + "90.0" : 0.13037678598993507, + "95.0" : 0.13037678598993507, + "99.0" : 0.13037678598993507, + "99.9" : 0.13037678598993507, + "99.99" : 0.13037678598993507, + "99.999" : 0.13037678598993507, + "99.9999" : 0.13037678598993507, + "100.0" : 0.13037678598993507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12359314431728298, + 0.12373288928620037, + 0.12354302556056582 + ], + [ + 0.1302860522695294, + 0.13037678598993507, + 0.13004064226733072 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012863104759860812, + "scoreError" : 4.7507273248622575E-4, + "scoreConfidence" : [ + 0.012388032027374585, + 0.013338177492347038 + ], + "scorePercentiles" : { + "0.0" : 0.012703400030741791, + "50.0" : 0.012863003582298646, + "90.0" : 0.01302204036393563, + "95.0" : 0.01302204036393563, + "99.0" : 0.01302204036393563, + "99.9" : 0.01302204036393563, + "99.99" : 0.01302204036393563, + "99.999" : 0.01302204036393563, + "99.9999" : 0.01302204036393563, + "100.0" : 0.01302204036393563 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012703400030741791, + 0.012706899360344403, + 0.012715292319429345 + ], + [ + 0.01302204036393563, + 0.013020281639545755, + 0.013010714845167947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9658364336905084, + "scoreError" : 0.07133241066239478, + "scoreConfidence" : [ + 0.8945040230281136, + 1.0371688443529032 + ], + "scorePercentiles" : { + "0.0" : 0.9412807003294118, + "50.0" : 0.9651567787214905, + "90.0" : 0.99028982552728, + "95.0" : 0.99028982552728, + "99.0" : 0.99028982552728, + "99.9" : 0.99028982552728, + "99.99" : 0.99028982552728, + "99.999" : 0.99028982552728, + "99.9999" : 0.99028982552728, + "100.0" : 0.99028982552728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9868763195184528, + 0.99028982552728, + 0.9899017109769376 + ], + [ + 0.9412807003294118, + 0.9432328078664403, + 0.9434372379245283 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011013876092997123, + "scoreError" : 1.1462732064827779E-4, + "scoreConfidence" : [ + 0.010899248772348845, + 0.0111285034136454 + ], + "scorePercentiles" : { + "0.0" : 0.010972415736599796, + "50.0" : 0.011014744432220974, + "90.0" : 0.011052374926779884, + "95.0" : 0.011052374926779884, + "99.0" : 0.011052374926779884, + "99.9" : 0.011052374926779884, + "99.99" : 0.011052374926779884, + "99.999" : 0.011052374926779884, + "99.9999" : 0.011052374926779884, + "100.0" : 0.011052374926779884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010978459034930365, + 0.010979001574339798, + 0.010972415736599796 + ], + [ + 0.011050517995230739, + 0.011052374926779884, + 0.011050487290102148 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2822900515506137, + "scoreError" : 0.40313736153920837, + "scoreConfidence" : [ + 2.8791526900114053, + 3.685427413089822 + ], + "scorePercentiles" : { + "0.0" : 3.1472569181875394, + "50.0" : 3.28234366891121, + "90.0" : 3.418200850307587, + "95.0" : 3.418200850307587, + "99.0" : 3.418200850307587, + "99.9" : 3.418200850307587, + "99.99" : 3.418200850307587, + "99.999" : 3.418200850307587, + "99.9999" : 3.418200850307587, + "100.0" : 3.418200850307587 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4084303258350377, + 3.418200850307587, + 3.413776100341297 + ], + [ + 3.156257011987382, + 3.149819102644836, + 3.1472569181875394 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7183110648108944, + "scoreError" : 0.017655089924838312, + "scoreConfidence" : [ + 2.700655974886056, + 2.7359661547357326 + ], + "scorePercentiles" : { + "0.0" : 2.711118488750339, + "50.0" : 2.718760513449465, + "90.0" : 2.7260558871627145, + "95.0" : 2.7260558871627145, + "99.0" : 2.7260558871627145, + "99.9" : 2.7260558871627145, + "99.99" : 2.7260558871627145, + "99.999" : 2.7260558871627145, + "99.9999" : 2.7260558871627145, + "100.0" : 2.7260558871627145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7260558871627145, + 2.711118488750339, + 2.7113011301165626 + ], + [ + 2.7238698559368193, + 2.720498002992383, + 2.717023023906547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17596604949463376, + "scoreError" : 0.007393577568151005, + "scoreConfidence" : [ + 0.16857247192648275, + 0.18335962706278477 + ], + "scorePercentiles" : { + "0.0" : 0.17336598110361806, + "50.0" : 0.1760392860208222, + "90.0" : 0.1784005122825796, + "95.0" : 0.1784005122825796, + "99.0" : 0.1784005122825796, + "99.9" : 0.1784005122825796, + "99.99" : 0.1784005122825796, + "99.999" : 0.1784005122825796, + "99.9999" : 0.1784005122825796, + "100.0" : 0.1784005122825796 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17375143537485882, + 0.17336598110361806, + 0.17356808020480777 + ], + [ + 0.1784005122825796, + 0.17838315133515278, + 0.17832713666678554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32346813478562775, + "scoreError" : 0.006628423948974936, + "scoreConfidence" : [ + 0.3168397108366528, + 0.3300965587346027 + ], + "scorePercentiles" : { + "0.0" : 0.32109080542623214, + "50.0" : 0.32334465215816954, + "90.0" : 0.3263243923641703, + "95.0" : 0.3263243923641703, + "99.0" : 0.3263243923641703, + "99.9" : 0.3263243923641703, + "99.99" : 0.3263243923641703, + "99.999" : 0.3263243923641703, + "99.9999" : 0.3263243923641703, + "100.0" : 0.3263243923641703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32109080542623214, + 0.32161448736090564, + 0.3213418597043702 + ], + [ + 0.3263243923641703, + 0.3250748169554335, + 0.32536244690265487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.13919824785042312, + "scoreError" : 0.002889235881228295, + "scoreConfidence" : [ + 0.13630901196919482, + 0.14208748373165142 + ], + "scorePercentiles" : { + "0.0" : 0.1382112894242198, + "50.0" : 0.13918007066075988, + "90.0" : 0.1402040985755545, + "95.0" : 0.1402040985755545, + "99.0" : 0.1402040985755545, + "99.9" : 0.1402040985755545, + "99.99" : 0.1402040985755545, + "99.999" : 0.1402040985755545, + "99.9999" : 0.1402040985755545, + "100.0" : 0.1402040985755545 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1383433134813585, + 0.13822694527686397, + 0.1382112894242198 + ], + [ + 0.1402040985755545, + 0.14001682784016128, + 0.14018701250438073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40117093865788195, + "scoreError" : 0.009465644537727053, + "scoreConfidence" : [ + 0.39170529412015487, + 0.41063658319560903 + ], + "scorePercentiles" : { + "0.0" : 0.39666430268533576, + "50.0" : 0.40065464728991446, + "90.0" : 0.4069779666286831, + "95.0" : 0.4069779666286831, + "99.0" : 0.4069779666286831, + "99.9" : 0.4069779666286831, + "99.99" : 0.4069779666286831, + "99.999" : 0.4069779666286831, + "99.9999" : 0.4069779666286831, + "100.0" : 0.4069779666286831 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4069779666286831, + 0.4020224, + 0.40111786647146125 + ], + [ + 0.40019142810836766, + 0.4000516680534443, + 0.39666430268533576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15930800313631852, + "scoreError" : 0.003264534159678587, + "scoreConfidence" : [ + 0.15604346897663993, + 0.1625725372959971 + ], + "scorePercentiles" : { + "0.0" : 0.1580271695110774, + "50.0" : 0.1594463812250709, + "90.0" : 0.16111799102597152, + "95.0" : 0.16111799102597152, + "99.0" : 0.16111799102597152, + "99.9" : 0.16111799102597152, + "99.99" : 0.16111799102597152, + "99.999" : 0.16111799102597152, + "99.9999" : 0.16111799102597152, + "100.0" : 0.16111799102597152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15925291894259097, + 0.15963984350755084, + 0.15974822757188498 + ], + [ + 0.16111799102597152, + 0.15806186825883542, + 0.1580271695110774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046995216255561655, + "scoreError" : 9.350558881015056E-4, + "scoreConfidence" : [ + 0.04606016036746015, + 0.04793027214366316 + ], + "scorePercentiles" : { + "0.0" : 0.04639994337906747, + "50.0" : 0.047048089353178696, + "90.0" : 0.047294220174418054, + "95.0" : 0.047294220174418054, + "99.0" : 0.047294220174418054, + "99.9" : 0.047294220174418054, + "99.99" : 0.047294220174418054, + "99.999" : 0.047294220174418054, + "99.9999" : 0.047294220174418054, + "100.0" : 0.047294220174418054 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04726533066761196, + 0.046931248849029245, + 0.04691562460591503 + ], + [ + 0.047294220174418054, + 0.04716492985732815, + 0.04639994337906747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8648908.744124115, + "scoreError" : 708250.5562980257, + "scoreConfidence" : [ + 7940658.187826089, + 9357159.30042214 + ], + "scorePercentiles" : { + "0.0" : 8414266.977291841, + "50.0" : 8610720.038868744, + "90.0" : 8954862.264995523, + "95.0" : 8954862.264995523, + "99.0" : 8954862.264995523, + "99.9" : 8954862.264995523, + "99.99" : 8954862.264995523, + "99.999" : 8954862.264995523, + "99.9999" : 8954862.264995523, + "100.0" : 8954862.264995523 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8954862.264995523, + 8881767.031083481, + 8785737.02546093 + ], + [ + 8435703.05227656, + 8421116.113636363, + 8414266.977291841 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-02T12:04:37Z-589b33d9c662ea926020bf1a384ab91d9bd6566b-jdk17.json b/performance-results/2025-06-02T12:04:37Z-589b33d9c662ea926020bf1a384ab91d9bd6566b-jdk17.json new file mode 100644 index 0000000000..2e323f621b --- /dev/null +++ b/performance-results/2025-06-02T12:04:37Z-589b33d9c662ea926020bf1a384ab91d9bd6566b-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3542550442231147, + "scoreError" : 0.05415665989140512, + "scoreConfidence" : [ + 3.3000983843317098, + 3.4084117041145197 + ], + "scorePercentiles" : { + "0.0" : 3.3443292696067717, + "50.0" : 3.354238714374313, + "90.0" : 3.3642134785370614, + "95.0" : 3.3642134785370614, + "99.0" : 3.3642134785370614, + "99.9" : 3.3642134785370614, + "99.99" : 3.3642134785370614, + "99.999" : 3.3642134785370614, + "99.9999" : 3.3642134785370614, + "100.0" : 3.3642134785370614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3516870844007705, + 3.3642134785370614 + ], + [ + 3.3443292696067717, + 3.3567903443478557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6945902792679637, + "scoreError" : 0.019106667992435454, + "scoreConfidence" : [ + 1.6754836112755283, + 1.7136969472603991 + ], + "scorePercentiles" : { + "0.0" : 1.6906900680502455, + "50.0" : 1.6949680324169336, + "90.0" : 1.6977349841877427, + "95.0" : 1.6977349841877427, + "99.0" : 1.6977349841877427, + "99.9" : 1.6977349841877427, + "99.99" : 1.6977349841877427, + "99.999" : 1.6977349841877427, + "99.9999" : 1.6977349841877427, + "100.0" : 1.6977349841877427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6943194195319953, + 1.6977349841877427 + ], + [ + 1.6906900680502455, + 1.695616645301872 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8481344005483605, + "scoreError" : 0.02911045238592997, + "scoreConfidence" : [ + 0.8190239481624305, + 0.8772448529342906 + ], + "scorePercentiles" : { + "0.0" : 0.8440078743151324, + "50.0" : 0.8474938871318505, + "90.0" : 0.853541953614609, + "95.0" : 0.853541953614609, + "99.0" : 0.853541953614609, + "99.9" : 0.853541953614609, + "99.99" : 0.853541953614609, + "99.999" : 0.853541953614609, + "99.9999" : 0.853541953614609, + "100.0" : 0.853541953614609 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8440078743151324, + 0.8448679277634978 + ], + [ + 0.8501198465002031, + 0.853541953614609 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.430343692640687, + "scoreError" : 0.24321196561449052, + "scoreConfidence" : [ + 16.187131727026195, + 16.67355565825518 + ], + "scorePercentiles" : { + "0.0" : 16.333994152472094, + "50.0" : 16.431857836943376, + "90.0" : 16.52569285870286, + "95.0" : 16.52569285870286, + "99.0" : 16.52569285870286, + "99.9" : 16.52569285870286, + "99.99" : 16.52569285870286, + "99.999" : 16.52569285870286, + "99.9999" : 16.52569285870286, + "100.0" : 16.52569285870286 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.48898207171955, + 16.52569285870286, + 16.509030016275823 + ], + [ + 16.333994152472094, + 16.3747336021672, + 16.3496294545066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2696.0097486690083, + "scoreError" : 175.79335193872143, + "scoreConfidence" : [ + 2520.2163967302868, + 2871.80310060773 + ], + "scorePercentiles" : { + "0.0" : 2631.2637440908234, + "50.0" : 2697.2978177332175, + "90.0" : 2758.2496362055895, + "95.0" : 2758.2496362055895, + "99.0" : 2758.2496362055895, + "99.9" : 2758.2496362055895, + "99.99" : 2758.2496362055895, + "99.999" : 2758.2496362055895, + "99.9999" : 2758.2496362055895, + "100.0" : 2758.2496362055895 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2631.2637440908234, + 2639.119572285854, + 2646.722417168577 + ], + [ + 2758.2496362055895, + 2752.829903965346, + 2747.873218297858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77005.48988535638, + "scoreError" : 1854.0672961124958, + "scoreConfidence" : [ + 75151.42258924388, + 78859.55718146887 + ], + "scorePercentiles" : { + "0.0" : 76392.55390662995, + "50.0" : 76974.08555952754, + "90.0" : 77649.95947201247, + "95.0" : 77649.95947201247, + "99.0" : 77649.95947201247, + "99.9" : 77649.95947201247, + "99.99" : 77649.95947201247, + "99.999" : 77649.95947201247, + "99.9999" : 77649.95947201247, + "100.0" : 77649.95947201247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77539.3221801599, + 77634.84781635502, + 77649.95947201247 + ], + [ + 76408.84893889516, + 76407.40699808573, + 76392.55390662995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.3582915533586, + "scoreError" : 12.380271337109436, + "scoreConfidence" : [ + 337.97802021624915, + 362.738562890468 + ], + "scorePercentiles" : { + "0.0" : 345.4613081952976, + "50.0" : 350.29537065860774, + "90.0" : 354.9760181041977, + "95.0" : 354.9760181041977, + "99.0" : 354.9760181041977, + "99.9" : 354.9760181041977, + "99.99" : 354.9760181041977, + "99.999" : 354.9760181041977, + "99.9999" : 354.9760181041977, + "100.0" : 354.9760181041977 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.94643230352375, + 346.7116085104185, + 345.4613081952976 + ], + [ + 353.6443090136917, + 354.41007319302224, + 354.9760181041977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.7374852433923, + "scoreError" : 3.567448632303928, + "scoreConfidence" : [ + 114.17003661108838, + 121.30493387569622 + ], + "scorePercentiles" : { + "0.0" : 116.48967852522601, + "50.0" : 117.50102886972141, + "90.0" : 119.32975966341384, + "95.0" : 119.32975966341384, + "99.0" : 119.32975966341384, + "99.9" : 119.32975966341384, + "99.99" : 119.32975966341384, + "99.999" : 119.32975966341384, + "99.9999" : 119.32975966341384, + "100.0" : 119.32975966341384 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 118.20728429387502, + 119.00218014841691, + 119.32975966341384 + ], + [ + 116.60123538385417, + 116.48967852522601, + 116.79477344556778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06071555517335542, + "scoreError" : 0.001330523606268949, + "scoreConfidence" : [ + 0.059385031567086466, + 0.06204607877962437 + ], + "scorePercentiles" : { + "0.0" : 0.06016159537603552, + "50.0" : 0.06068404152331893, + "90.0" : 0.06129165527681926, + "95.0" : 0.06129165527681926, + "99.0" : 0.06129165527681926, + "99.9" : 0.06129165527681926, + "99.99" : 0.06129165527681926, + "99.999" : 0.06129165527681926, + "99.9999" : 0.06129165527681926, + "100.0" : 0.06129165527681926 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06034680117795439, + 0.06038311761225032, + 0.06016159537603552 + ], + [ + 0.06098496543438754, + 0.06112519616268551, + 0.06129165527681926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.703583113332299E-4, + "scoreError" : 7.219314219478108E-6, + "scoreConfidence" : [ + 3.631389971137518E-4, + 3.7757762555270803E-4 + ], + "scorePercentiles" : { + "0.0" : 3.679141111677487E-4, + "50.0" : 3.7012400025787184E-4, + "90.0" : 3.7303834028090427E-4, + "95.0" : 3.7303834028090427E-4, + "99.0" : 3.7303834028090427E-4, + "99.9" : 3.7303834028090427E-4, + "99.99" : 3.7303834028090427E-4, + "99.999" : 3.7303834028090427E-4, + "99.9999" : 3.7303834028090427E-4, + "100.0" : 3.7303834028090427E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7210494082876234E-4, + 3.729239771483686E-4, + 3.7303834028090427E-4 + ], + [ + 3.6802543888661473E-4, + 3.679141111677487E-4, + 3.681430596869813E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12264900608969875, + "scoreError" : 0.0011896876152817652, + "scoreConfidence" : [ + 0.12145931847441699, + 0.12383869370498052 + ], + "scorePercentiles" : { + "0.0" : 0.12228445021337997, + "50.0" : 0.12247990734607563, + "90.0" : 0.12334902619893429, + "95.0" : 0.12334902619893429, + "99.0" : 0.12334902619893429, + "99.9" : 0.12334902619893429, + "99.99" : 0.12334902619893429, + "99.999" : 0.12334902619893429, + "99.9999" : 0.12334902619893429, + "100.0" : 0.12334902619893429 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12228445021337997, + 0.1224672832982267, + 0.12231907438077182 + ], + [ + 0.12249253139392455, + 0.12334902619893429, + 0.12298167105295521 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012930714105879067, + "scoreError" : 1.1634760040524515E-4, + "scoreConfidence" : [ + 0.012814366505473821, + 0.013047061706284313 + ], + "scorePercentiles" : { + "0.0" : 0.012888652145222178, + "50.0" : 0.012929809354510147, + "90.0" : 0.012975725108994654, + "95.0" : 0.012975725108994654, + "99.0" : 0.012975725108994654, + "99.9" : 0.012975725108994654, + "99.99" : 0.012975725108994654, + "99.999" : 0.012975725108994654, + "99.9999" : 0.012975725108994654, + "100.0" : 0.012975725108994654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01289585343792596, + 0.012888652145222178, + 0.0128947615245552 + ], + [ + 0.012963765271094333, + 0.012965527147482066, + 0.012975725108994654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9671551972519126, + "scoreError" : 0.04451526150886872, + "scoreConfidence" : [ + 0.9226399357430438, + 1.0116704587607812 + ], + "scorePercentiles" : { + "0.0" : 0.952344129130559, + "50.0" : 0.9657353875350614, + "90.0" : 0.9831889283326779, + "95.0" : 0.9831889283326779, + "99.0" : 0.9831889283326779, + "99.9" : 0.9831889283326779, + "99.99" : 0.9831889283326779, + "99.999" : 0.9831889283326779, + "99.9999" : 0.9831889283326779, + "100.0" : 0.9831889283326779 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9783571948738016, + 0.9831889283326779, + 0.9831228761305545 + ], + [ + 0.9531135801963213, + 0.952344129130559, + 0.9528044748475609 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010676157581029746, + "scoreError" : 8.572126287263604E-4, + "scoreConfidence" : [ + 0.009818944952303385, + 0.011533370209756106 + ], + "scorePercentiles" : { + "0.0" : 0.010384952155852787, + "50.0" : 0.010676539010044204, + "90.0" : 0.010959189083154155, + "95.0" : 0.010959189083154155, + "99.0" : 0.010959189083154155, + "99.9" : 0.010959189083154155, + "99.99" : 0.010959189083154155, + "99.999" : 0.010959189083154155, + "99.9999" : 0.010959189083154155, + "100.0" : 0.010959189083154155 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0109564313884446, + 0.010949776575523058, + 0.010959189083154155 + ], + [ + 0.01040330144456535, + 0.010384952155852787, + 0.010403294838638534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.212647787031693, + "scoreError" : 0.02632272311351372, + "scoreConfidence" : [ + 3.1863250639181793, + 3.238970510145207 + ], + "scorePercentiles" : { + "0.0" : 3.2016699180537773, + "50.0" : 3.213095294766111, + "90.0" : 3.2273036812903224, + "95.0" : 3.2273036812903224, + "99.0" : 3.2273036812903224, + "99.9" : 3.2273036812903224, + "99.99" : 3.2273036812903224, + "99.999" : 3.2273036812903224, + "99.9999" : 3.2273036812903224, + "100.0" : 3.2273036812903224 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2035007828315183, + 3.2273036812903224, + 3.2127246878612716 + ], + [ + 3.213465901670951, + 3.2172217504823153, + 3.2016699180537773 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.745571660611588, + "scoreError" : 0.08293417143932898, + "scoreConfidence" : [ + 2.6626374891722593, + 2.828505832050917 + ], + "scorePercentiles" : { + "0.0" : 2.7161789818033677, + "50.0" : 2.745333682556835, + "90.0" : 2.775075796337403, + "95.0" : 2.775075796337403, + "99.0" : 2.775075796337403, + "99.9" : 2.775075796337403, + "99.99" : 2.775075796337403, + "99.999" : 2.775075796337403, + "99.9999" : 2.775075796337403, + "100.0" : 2.775075796337403 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7161789818033677, + 2.719147842033714, + 2.72060443960827 + ], + [ + 2.775075796337403, + 2.772359978381375, + 2.7700629255054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.177874960329253, + "scoreError" : 0.003693004241928387, + "scoreConfidence" : [ + 0.17418195608732462, + 0.1815679645711814 + ], + "scorePercentiles" : { + "0.0" : 0.1766362772233507, + "50.0" : 0.1778651937971314, + "90.0" : 0.179150174901469, + "95.0" : 0.179150174901469, + "99.0" : 0.179150174901469, + "99.9" : 0.179150174901469, + "99.99" : 0.179150174901469, + "99.999" : 0.179150174901469, + "99.9999" : 0.179150174901469, + "100.0" : 0.179150174901469 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.179150174901469, + 0.17905393418202, + 0.17902512959415673 + ], + [ + 0.17667898807441565, + 0.17670525800010603, + 0.1766362772233507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32462472883601207, + "scoreError" : 0.023296253827589198, + "scoreConfidence" : [ + 0.30132847500842286, + 0.3479209826636013 + ], + "scorePercentiles" : { + "0.0" : 0.31719164101750824, + "50.0" : 0.3225894406411488, + "90.0" : 0.3365256245793512, + "95.0" : 0.3365256245793512, + "99.0" : 0.3365256245793512, + "99.9" : 0.3365256245793512, + "99.99" : 0.3365256245793512, + "99.999" : 0.3365256245793512, + "99.9999" : 0.3365256245793512, + "100.0" : 0.3365256245793512 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31719164101750824, + 0.3176828877664475, + 0.31765512889905345 + ], + [ + 0.3365256245793512, + 0.3274959935158501, + 0.33119709723786184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1404437415020914, + "scoreError" : 0.006615461265367119, + "scoreConfidence" : [ + 0.1338282802367243, + 0.1470592027674585 + ], + "scorePercentiles" : { + "0.0" : 0.13827158509741022, + "50.0" : 0.14040977140978317, + "90.0" : 0.14269332814417396, + "95.0" : 0.14269332814417396, + "99.0" : 0.14269332814417396, + "99.9" : 0.14269332814417396, + "99.99" : 0.14269332814417396, + "99.999" : 0.14269332814417396, + "99.9999" : 0.14269332814417396, + "100.0" : 0.14269332814417396 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1383152868879668, + 0.13827158509741022, + 0.13828578321533272 + ], + [ + 0.14269332814417396, + 0.14250425593159957, + 0.14259220973606537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38923083065742786, + "scoreError" : 0.009029075146993878, + "scoreConfidence" : [ + 0.380201755510434, + 0.3982599058044217 + ], + "scorePercentiles" : { + "0.0" : 0.38664925715279924, + "50.0" : 0.38765779789484217, + "90.0" : 0.3934577652752095, + "95.0" : 0.3934577652752095, + "99.0" : 0.3934577652752095, + "99.9" : 0.3934577652752095, + "99.99" : 0.3934577652752095, + "99.999" : 0.3934577652752095, + "99.9999" : 0.3934577652752095, + "100.0" : 0.3934577652752095 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3934577652752095, + 0.3881304453328158, + 0.3932048551881414 + ], + [ + 0.3871851504568685, + 0.38664925715279924, + 0.38675751053873225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15958860758972224, + "scoreError" : 0.0032495747385322465, + "scoreConfidence" : [ + 0.15633903285119, + 0.16283818232825448 + ], + "scorePercentiles" : { + "0.0" : 0.15815088529542004, + "50.0" : 0.15938910494422867, + "90.0" : 0.16151672896713237, + "95.0" : 0.16151672896713237, + "99.0" : 0.16151672896713237, + "99.9" : 0.16151672896713237, + "99.99" : 0.16151672896713237, + "99.999" : 0.16151672896713237, + "99.9999" : 0.16151672896713237, + "100.0" : 0.16151672896713237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16151672896713237, + 0.16018490334620128, + 0.15890091804112244 + ], + [ + 0.15928507309419898, + 0.15949313679425836, + 0.15815088529542004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04765020702902307, + "scoreError" : 0.001390738104659118, + "scoreConfidence" : [ + 0.04625946892436395, + 0.049040945133682186 + ], + "scorePercentiles" : { + "0.0" : 0.04724274734499896, + "50.0" : 0.04743248341570385, + "90.0" : 0.04845506719158833, + "95.0" : 0.04845506719158833, + "99.0" : 0.04845506719158833, + "99.9" : 0.04845506719158833, + "99.99" : 0.04845506719158833, + "99.999" : 0.04845506719158833, + "99.9999" : 0.04845506719158833, + "100.0" : 0.04845506719158833 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04806604303292478, + 0.04845506719158833, + 0.047485210501574095 + ], + [ + 0.04727241777321868, + 0.04724274734499896, + 0.04737975632983361 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8609341.948687557, + "scoreError" : 134606.12511506703, + "scoreConfidence" : [ + 8474735.82357249, + 8743948.073802624 + ], + "scorePercentiles" : { + "0.0" : 8559126.613344738, + "50.0" : 8608140.893795703, + "90.0" : 8661007.152380953, + "95.0" : 8661007.152380953, + "99.0" : 8661007.152380953, + "99.9" : 8661007.152380953, + "99.99" : 8661007.152380953, + "99.999" : 8661007.152380953, + "99.9999" : 8661007.152380953, + "100.0" : 8661007.152380953 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8574941.663239075, + 8559126.613344738, + 8564418.211472603 + ], + [ + 8661007.152380953, + 8641340.124352332, + 8655217.92733564 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-05T03:13:41Z-4373db51579b5e849f0e42db412503664fa48092-jdk17.json b/performance-results/2025-06-05T03:13:41Z-4373db51579b5e849f0e42db412503664fa48092-jdk17.json new file mode 100644 index 0000000000..cc1c4f259d --- /dev/null +++ b/performance-results/2025-06-05T03:13:41Z-4373db51579b5e849f0e42db412503664fa48092-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3583487614414915, + "scoreError" : 0.03017521966767004, + "scoreConfidence" : [ + 3.3281735417738214, + 3.3885239811091616 + ], + "scorePercentiles" : { + "0.0" : 3.3538188921638743, + "50.0" : 3.3580976326952188, + "90.0" : 3.363380888211654, + "95.0" : 3.363380888211654, + "99.0" : 3.363380888211654, + "99.9" : 3.363380888211654, + "99.99" : 3.363380888211654, + "99.999" : 3.363380888211654, + "99.9999" : 3.363380888211654, + "100.0" : 3.363380888211654 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3538188921638743, + 3.3549792429970204 + ], + [ + 3.3612160223934175, + 3.363380888211654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.696775350498371, + "scoreError" : 0.02058790614396534, + "scoreConfidence" : [ + 1.6761874443544056, + 1.7173632566423362 + ], + "scorePercentiles" : { + "0.0" : 1.6922234061208514, + "50.0" : 1.6977641538847275, + "90.0" : 1.6993496881031775, + "95.0" : 1.6993496881031775, + "99.0" : 1.6993496881031775, + "99.9" : 1.6993496881031775, + "99.99" : 1.6993496881031775, + "99.999" : 1.6993496881031775, + "99.9999" : 1.6993496881031775, + "100.0" : 1.6993496881031775 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6985220906209715, + 1.6922234061208514 + ], + [ + 1.6970062171484832, + 1.6993496881031775 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8528450139874564, + "scoreError" : 0.016197477432025972, + "scoreConfidence" : [ + 0.8366475365554304, + 0.8690424914194823 + ], + "scorePercentiles" : { + "0.0" : 0.8497942404064186, + "50.0" : 0.8528336161124015, + "90.0" : 0.8559185833186042, + "95.0" : 0.8559185833186042, + "99.0" : 0.8559185833186042, + "99.9" : 0.8559185833186042, + "99.99" : 0.8559185833186042, + "99.999" : 0.8559185833186042, + "99.9999" : 0.8559185833186042, + "100.0" : 0.8559185833186042 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8526162621090654, + 0.8559185833186042 + ], + [ + 0.8497942404064186, + 0.8530509701157377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.39367057626973, + "scoreError" : 0.3870293050768862, + "scoreConfidence" : [ + 16.006641271192844, + 16.780699881346617 + ], + "scorePercentiles" : { + "0.0" : 16.226559014504108, + "50.0" : 16.39675004625169, + "90.0" : 16.55246005222859, + "95.0" : 16.55246005222859, + "99.0" : 16.55246005222859, + "99.9" : 16.55246005222859, + "99.99" : 16.55246005222859, + "99.999" : 16.55246005222859, + "99.9999" : 16.55246005222859, + "100.0" : 16.55246005222859 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.55246005222859, + 16.50084169912421, + 16.49567855871189 + ], + [ + 16.297821533791492, + 16.288662599258082, + 16.226559014504108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2733.1957546460653, + "scoreError" : 327.56007173561, + "scoreConfidence" : [ + 2405.635682910455, + 3060.7558263816754 + ], + "scorePercentiles" : { + "0.0" : 2625.3376944308184, + "50.0" : 2733.336262573395, + "90.0" : 2840.612317151373, + "95.0" : 2840.612317151373, + "99.0" : 2840.612317151373, + "99.9" : 2840.612317151373, + "99.99" : 2840.612317151373, + "99.999" : 2840.612317151373, + "99.9999" : 2840.612317151373, + "100.0" : 2840.612317151373 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2839.413529660308, + 2839.4542276708635, + 2840.612317151373 + ], + [ + 2627.0977634765495, + 2625.3376944308184, + 2627.2589954864816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 78265.2258013661, + "scoreError" : 378.71340215341013, + "scoreConfidence" : [ + 77886.51239921269, + 78643.93920351952 + ], + "scorePercentiles" : { + "0.0" : 78136.99963543477, + "50.0" : 78244.09131701662, + "90.0" : 78432.7267780164, + "95.0" : 78432.7267780164, + "99.0" : 78432.7267780164, + "99.9" : 78432.7267780164, + "99.99" : 78432.7267780164, + "99.999" : 78432.7267780164, + "99.9999" : 78432.7267780164, + "100.0" : 78432.7267780164 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78335.02779180357, + 78387.6797546668, + 78432.7267780164 + ], + [ + 78136.99963543477, + 78153.15484222966, + 78145.76600604542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 364.0378493796623, + "scoreError" : 7.462741062086967, + "scoreConfidence" : [ + 356.5751083175753, + 371.5005904417493 + ], + "scorePercentiles" : { + "0.0" : 361.1540563284553, + "50.0" : 363.9944231699365, + "90.0" : 367.01781494855913, + "95.0" : 367.01781494855913, + "99.0" : 367.01781494855913, + "99.9" : 367.01781494855913, + "99.99" : 367.01781494855913, + "99.999" : 367.01781494855913, + "99.9999" : 367.01781494855913, + "100.0" : 367.01781494855913 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 361.8803986034575, + 361.1540563284553, + 361.8798516155016 + ], + [ + 367.01781494855913, + 366.186527045585, + 366.10844773641554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.86461422940145, + "scoreError" : 0.8516714280613955, + "scoreConfidence" : [ + 117.01294280134006, + 118.71628565746285 + ], + "scorePercentiles" : { + "0.0" : 117.47220531265368, + "50.0" : 117.83144814322866, + "90.0" : 118.21124743280906, + "95.0" : 118.21124743280906, + "99.0" : 118.21124743280906, + "99.9" : 118.21124743280906, + "99.99" : 118.21124743280906, + "99.999" : 118.21124743280906, + "99.9999" : 118.21124743280906, + "100.0" : 118.21124743280906 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.47220531265368, + 117.65211023796213, + 117.70041083404337 + ], + [ + 117.96248545241394, + 118.18922610652658, + 118.21124743280906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06121126352802388, + "scoreError" : 9.424252173118608E-4, + "scoreConfidence" : [ + 0.060268838310712024, + 0.06215368874533574 + ], + "scorePercentiles" : { + "0.0" : 0.060794728860545565, + "50.0" : 0.06125431181862533, + "90.0" : 0.061585775565504965, + "95.0" : 0.061585775565504965, + "99.0" : 0.061585775565504965, + "99.9" : 0.061585775565504965, + "99.99" : 0.061585775565504965, + "99.999" : 0.061585775565504965, + "99.9999" : 0.061585775565504965, + "100.0" : 0.061585775565504965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06104217750865263, + 0.06090967162260933, + 0.060794728860545565 + ], + [ + 0.061585775565504965, + 0.061466446128598036, + 0.061468781482232754 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6177776478349633E-4, + "scoreError" : 3.5437822475386245E-5, + "scoreConfidence" : [ + 3.263399423081101E-4, + 3.9721558725888255E-4 + ], + "scorePercentiles" : { + "0.0" : 3.4955457993828557E-4, + "50.0" : 3.617766884796719E-4, + "90.0" : 3.7398545671454245E-4, + "95.0" : 3.7398545671454245E-4, + "99.0" : 3.7398545671454245E-4, + "99.9" : 3.7398545671454245E-4, + "99.99" : 3.7398545671454245E-4, + "99.999" : 3.7398545671454245E-4, + "99.9999" : 3.7398545671454245E-4, + "100.0" : 3.7398545671454245E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7398545671454245E-4, + 3.729793164029726E-4, + 3.7294672855555776E-4 + ], + [ + 3.4955457993828557E-4, + 3.5059385868583376E-4, + 3.50606648403786E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12338572543943184, + "scoreError" : 3.86327320099816E-4, + "scoreConfidence" : [ + 0.12299939811933203, + 0.12377205275953165 + ], + "scorePercentiles" : { + "0.0" : 0.12314839799763558, + "50.0" : 0.12340167388629494, + "90.0" : 0.12354554830500099, + "95.0" : 0.12354554830500099, + "99.0" : 0.12354554830500099, + "99.9" : 0.12354554830500099, + "99.99" : 0.12354554830500099, + "99.999" : 0.12354554830500099, + "99.9999" : 0.12354554830500099, + "100.0" : 0.12354554830500099 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12354554830500099, + 0.12346972597631894, + 0.12344636000938167 + ], + [ + 0.12334733258504577, + 0.1233569877632082, + 0.12314839799763558 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012926122934714694, + "scoreError" : 3.499613568935553E-4, + "scoreConfidence" : [ + 0.012576161577821139, + 0.01327608429160825 + ], + "scorePercentiles" : { + "0.0" : 0.01280441648388654, + "50.0" : 0.012925891577536047, + "90.0" : 0.013045700979068417, + "95.0" : 0.013045700979068417, + "99.0" : 0.013045700979068417, + "99.9" : 0.013045700979068417, + "99.99" : 0.013045700979068417, + "99.999" : 0.013045700979068417, + "99.9999" : 0.013045700979068417, + "100.0" : 0.013045700979068417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01281291295768837, + 0.012819738808888023, + 0.01280441648388654 + ], + [ + 0.013045700979068417, + 0.013041924032572746, + 0.01303204434618407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.050172894751404, + "scoreError" : 0.2349325371415315, + "scoreConfidence" : [ + 0.8152403576098725, + 1.2851054318929354 + ], + "scorePercentiles" : { + "0.0" : 0.9725198707575611, + "50.0" : 1.0486663463982568, + "90.0" : 1.1293367393562959, + "95.0" : 1.1293367393562959, + "99.0" : 1.1293367393562959, + "99.9" : 1.1293367393562959, + "99.99" : 1.1293367393562959, + "99.999" : 1.1293367393562959, + "99.9999" : 1.1293367393562959, + "100.0" : 1.1293367393562959 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1226961092276606, + 1.1293367393562959, + 1.127837591068005 + ], + [ + 0.9725198707575611, + 0.974636583568853, + 0.9740104745300477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011321600938389296, + "scoreError" : 5.083905043625274E-4, + "scoreConfidence" : [ + 0.01081321043402677, + 0.011829991442751823 + ], + "scorePercentiles" : { + "0.0" : 0.01115289260716532, + "50.0" : 0.011318274238287278, + "90.0" : 0.011494069411080486, + "95.0" : 0.011494069411080486, + "99.0" : 0.011494069411080486, + "99.9" : 0.011494069411080486, + "99.99" : 0.011494069411080486, + "99.999" : 0.011494069411080486, + "99.9999" : 0.011494069411080486, + "100.0" : 0.011494069411080486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011489850217612103, + 0.011494069411080486, + 0.011477117683514667 + ], + [ + 0.011156244917903305, + 0.01115289260716532, + 0.011159430793059888 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2048260390540855, + "scoreError" : 0.015495690676250553, + "scoreConfidence" : [ + 3.189330348377835, + 3.220321729730336 + ], + "scorePercentiles" : { + "0.0" : 3.198452440537084, + "50.0" : 3.2060237576923076, + "90.0" : 3.2130152536929995, + "95.0" : 3.2130152536929995, + "99.0" : 3.2130152536929995, + "99.9" : 3.2130152536929995, + "99.99" : 3.2130152536929995, + "99.999" : 3.2130152536929995, + "99.9999" : 3.2130152536929995, + "100.0" : 3.2130152536929995 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2067924115384616, + 3.2130152536929995, + 3.205804346153846 + ], + [ + 3.206243169230769, + 3.198452440537084, + 3.1986486131713554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7944454605828013, + "scoreError" : 0.07110962568798375, + "scoreConfidence" : [ + 2.7233358348948173, + 2.8655550862707853 + ], + "scorePercentiles" : { + "0.0" : 2.7687413604651163, + "50.0" : 2.7910282464056175, + "90.0" : 2.8228587174710698, + "95.0" : 2.8228587174710698, + "99.0" : 2.8228587174710698, + "99.9" : 2.8228587174710698, + "99.99" : 2.8228587174710698, + "99.999" : 2.8228587174710698, + "99.9999" : 2.8228587174710698, + "100.0" : 2.8228587174710698 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.772537483781536, + 2.7742029908460473, + 2.7687413604651163 + ], + [ + 2.8228587174710698, + 2.820478708967851, + 2.8078535019651882 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17650772315135188, + "scoreError" : 0.0026793685192294183, + "scoreConfidence" : [ + 0.17382835463212246, + 0.1791870916705813 + ], + "scorePercentiles" : { + "0.0" : 0.1753855408548028, + "50.0" : 0.17672741032169487, + "90.0" : 0.17746352226224912, + "95.0" : 0.17746352226224912, + "99.0" : 0.17746352226224912, + "99.9" : 0.17746352226224912, + "99.99" : 0.17746352226224912, + "99.999" : 0.17746352226224912, + "99.9999" : 0.17746352226224912, + "100.0" : 0.17746352226224912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17746352226224912, + 0.17735057802330326, + 0.1771396638325008 + ], + [ + 0.17631515681088897, + 0.1753918771243664, + 0.1753855408548028 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3269457326987292, + "scoreError" : 0.017583334057544888, + "scoreConfidence" : [ + 0.3093623986411843, + 0.34452906675627404 + ], + "scorePercentiles" : { + "0.0" : 0.3211144117911502, + "50.0" : 0.326975257113473, + "90.0" : 0.33279908040201006, + "95.0" : 0.33279908040201006, + "99.0" : 0.33279908040201006, + "99.9" : 0.33279908040201006, + "99.99" : 0.33279908040201006, + "99.999" : 0.33279908040201006, + "99.9999" : 0.33279908040201006, + "100.0" : 0.33279908040201006 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32143746006235735, + 0.3211144117911502, + 0.32111799707790123 + ], + [ + 0.33251305416458854, + 0.33269239269436773, + 0.33279908040201006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1412733797584331, + "scoreError" : 0.007565164666258601, + "scoreConfidence" : [ + 0.1337082150921745, + 0.1488385444246917 + ], + "scorePercentiles" : { + "0.0" : 0.13695183340180772, + "50.0" : 0.14128373197677582, + "90.0" : 0.14544687773980075, + "95.0" : 0.14544687773980075, + "99.0" : 0.14544687773980075, + "99.9" : 0.14544687773980075, + "99.99" : 0.14544687773980075, + "99.999" : 0.14544687773980075, + "99.9999" : 0.14544687773980075, + "100.0" : 0.14544687773980075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1414526031317189, + 0.14099668117025027, + 0.14111486082183275 + ], + [ + 0.14544687773980075, + 0.14167742228518806, + 0.13695183340180772 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40002429473897233, + "scoreError" : 0.018591547315398273, + "scoreConfidence" : [ + 0.3814327474235741, + 0.4186158420543706 + ], + "scorePercentiles" : { + "0.0" : 0.3922989703828652, + "50.0" : 0.401533559595563, + "90.0" : 0.40660868341872003, + "95.0" : 0.40660868341872003, + "99.0" : 0.40660868341872003, + "99.9" : 0.40660868341872003, + "99.99" : 0.40660868341872003, + "99.999" : 0.40660868341872003, + "99.9999" : 0.40660868341872003, + "100.0" : 0.40660868341872003 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39781197987111144, + 0.3922989703828652, + 0.39265409211197927 + ], + [ + 0.40660868341872003, + 0.4055169033291432, + 0.4052551393200146 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16151324697656924, + "scoreError" : 0.0034961079272124414, + "scoreConfidence" : [ + 0.1580171390493568, + 0.16500935490378169 + ], + "scorePercentiles" : { + "0.0" : 0.16023828249583386, + "50.0" : 0.16134038297771214, + "90.0" : 0.16300352472697638, + "95.0" : 0.16300352472697638, + "99.0" : 0.16300352472697638, + "99.9" : 0.16300352472697638, + "99.99" : 0.16300352472697638, + "99.999" : 0.16300352472697638, + "99.9999" : 0.16300352472697638, + "100.0" : 0.16300352472697638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16198587736292216, + 0.16300352472697638, + 0.162808051609332 + ], + [ + 0.1603488570718489, + 0.16069488859250214, + 0.16023828249583386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0463763750803837, + "scoreError" : 0.005020839607295861, + "scoreConfidence" : [ + 0.04135553547308784, + 0.051397214687679556 + ], + "scorePercentiles" : { + "0.0" : 0.044610879173283845, + "50.0" : 0.046213061774170144, + "90.0" : 0.04829509015570065, + "95.0" : 0.04829509015570065, + "99.0" : 0.04829509015570065, + "99.9" : 0.04829509015570065, + "99.99" : 0.04829509015570065, + "99.999" : 0.04829509015570065, + "99.9999" : 0.04829509015570065, + "100.0" : 0.04829509015570065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04829509015570065, + 0.048168760480137955, + 0.04750603667423588 + ], + [ + 0.044610879173283845, + 0.044757397124839435, + 0.04492008687410442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8692789.728057452, + "scoreError" : 529507.1265061001, + "scoreConfidence" : [ + 8163282.601551351, + 9222296.854563551 + ], + "scorePercentiles" : { + "0.0" : 8516815.311489362, + "50.0" : 8692485.68268945, + "90.0" : 8870875.319148935, + "95.0" : 8870875.319148935, + "99.0" : 8870875.319148935, + "99.9" : 8870875.319148935, + "99.99" : 8870875.319148935, + "99.999" : 8870875.319148935, + "99.9999" : 8870875.319148935, + "100.0" : 8870875.319148935 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8516815.311489362, + 8520480.325383306, + 8524063.833049404 + ], + [ + 8870875.319148935, + 8863596.0469442, + 8860907.532329496 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-05T07:40:26Z-2b26495c3b73738ff36f6d7c8aff3b9a11f372d8-jdk17.json b/performance-results/2025-06-05T07:40:26Z-2b26495c3b73738ff36f6d7c8aff3b9a11f372d8-jdk17.json new file mode 100644 index 0000000000..44819b32ea --- /dev/null +++ b/performance-results/2025-06-05T07:40:26Z-2b26495c3b73738ff36f6d7c8aff3b9a11f372d8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3414395805070933, + "scoreError" : 0.046871730438032486, + "scoreConfidence" : [ + 3.2945678500690607, + 3.388311310945126 + ], + "scorePercentiles" : { + "0.0" : 3.3342719312088582, + "50.0" : 3.3408602416443793, + "90.0" : 3.349765907530756, + "95.0" : 3.349765907530756, + "99.0" : 3.349765907530756, + "99.9" : 3.349765907530756, + "99.99" : 3.349765907530756, + "99.999" : 3.349765907530756, + "99.9999" : 3.349765907530756, + "100.0" : 3.349765907530756 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.345130108147345, + 3.3342719312088582 + ], + [ + 3.336590375141414, + 3.349765907530756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6868891038103977, + "scoreError" : 0.02374132039693783, + "scoreConfidence" : [ + 1.6631477834134598, + 1.7106304242073356 + ], + "scorePercentiles" : { + "0.0" : 1.6828580143091856, + "50.0" : 1.687131522216376, + "90.0" : 1.6904353564996533, + "95.0" : 1.6904353564996533, + "99.0" : 1.6904353564996533, + "99.9" : 1.6904353564996533, + "99.99" : 1.6904353564996533, + "99.999" : 1.6904353564996533, + "99.9999" : 1.6904353564996533, + "100.0" : 1.6904353564996533 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6847282320560697, + 1.6828580143091856 + ], + [ + 1.6904353564996533, + 1.6895348123766825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8521760159633964, + "scoreError" : 0.052399630945909534, + "scoreConfidence" : [ + 0.7997763850174869, + 0.9045756469093059 + ], + "scorePercentiles" : { + "0.0" : 0.840186427117903, + "50.0" : 0.8554541224921689, + "90.0" : 0.8576093917513448, + "95.0" : 0.8576093917513448, + "99.0" : 0.8576093917513448, + "99.9" : 0.8576093917513448, + "99.99" : 0.8576093917513448, + "99.999" : 0.8576093917513448, + "99.9999" : 0.8576093917513448, + "100.0" : 0.8576093917513448 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8543363025042242, + 0.8565719424801136 + ], + [ + 0.840186427117903, + 0.8576093917513448 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.26044330123182, + "scoreError" : 0.061014681563519996, + "scoreConfidence" : [ + 16.1994286196683, + 16.32145798279534 + ], + "scorePercentiles" : { + "0.0" : 16.23538573601834, + "50.0" : 16.260390943702564, + "90.0" : 16.28712557333508, + "95.0" : 16.28712557333508, + "99.0" : 16.28712557333508, + "99.9" : 16.28712557333508, + "99.99" : 16.28712557333508, + "99.999" : 16.28712557333508, + "99.9999" : 16.28712557333508, + "100.0" : 16.28712557333508 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.237456160497093, + 16.28712557333508, + 16.256028199208508 + ], + [ + 16.28191045013528, + 16.26475368819662, + 16.23538573601834 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2682.8696701358167, + "scoreError" : 9.702727245015499, + "scoreConfidence" : [ + 2673.1669428908012, + 2692.572397380832 + ], + "scorePercentiles" : { + "0.0" : 2677.848755035492, + "50.0" : 2683.345453382898, + "90.0" : 2687.1617887209823, + "95.0" : 2687.1617887209823, + "99.0" : 2687.1617887209823, + "99.9" : 2687.1617887209823, + "99.99" : 2687.1617887209823, + "99.999" : 2687.1617887209823, + "99.9999" : 2687.1617887209823, + "100.0" : 2687.1617887209823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2680.257553263025, + 2682.0718300463427, + 2677.848755035492 + ], + [ + 2685.2590170296035, + 2687.1617887209823, + 2684.619076719453 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76751.3037439017, + "scoreError" : 162.20627971714285, + "scoreConfidence" : [ + 76589.09746418457, + 76913.51002361884 + ], + "scorePercentiles" : { + "0.0" : 76679.71186689303, + "50.0" : 76760.0581561534, + "90.0" : 76821.37127832204, + "95.0" : 76821.37127832204, + "99.0" : 76821.37127832204, + "99.9" : 76821.37127832204, + "99.99" : 76821.37127832204, + "99.999" : 76821.37127832204, + "99.9999" : 76821.37127832204, + "100.0" : 76821.37127832204 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76689.18579588505, + 76743.40348690572, + 76679.71186689303 + ], + [ + 76797.4372100032, + 76821.37127832204, + 76776.71282540109 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 366.84163305013243, + "scoreError" : 16.126028157710902, + "scoreConfidence" : [ + 350.71560489242154, + 382.9676612078433 + ], + "scorePercentiles" : { + "0.0" : 361.0489187989683, + "50.0" : 366.7129216111448, + "90.0" : 372.6018908667993, + "95.0" : 372.6018908667993, + "99.0" : 372.6018908667993, + "99.9" : 372.6018908667993, + "99.99" : 372.6018908667993, + "99.999" : 372.6018908667993, + "99.9999" : 372.6018908667993, + "100.0" : 372.6018908667993 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 361.0489187989683, + 362.11539546763754, + 361.6824785816711 + ], + [ + 371.31044775465205, + 372.2906668310661, + 372.6018908667993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.09832284560314, + "scoreError" : 1.6733126385018424, + "scoreConfidence" : [ + 114.4250102071013, + 117.77163548410498 + ], + "scorePercentiles" : { + "0.0" : 115.49558217848609, + "50.0" : 116.04750179445273, + "90.0" : 116.89519600488786, + "95.0" : 116.89519600488786, + "99.0" : 116.89519600488786, + "99.9" : 116.89519600488786, + "99.99" : 116.89519600488786, + "99.999" : 116.89519600488786, + "99.9999" : 116.89519600488786, + "100.0" : 116.89519600488786 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.67187474223924, + 116.54727101932599, + 116.4231288466662 + ], + [ + 115.49558217848609, + 115.55688428201333, + 116.89519600488786 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06111106039408757, + "scoreError" : 5.664424634283335E-4, + "scoreConfidence" : [ + 0.06054461793065924, + 0.0616775028575159 + ], + "scorePercentiles" : { + "0.0" : 0.06089610361899194, + "50.0" : 0.061106452395836536, + "90.0" : 0.06134028017886498, + "95.0" : 0.06134028017886498, + "99.0" : 0.06134028017886498, + "99.9" : 0.06134028017886498, + "99.99" : 0.06134028017886498, + "99.999" : 0.06134028017886498, + "99.9999" : 0.06134028017886498, + "100.0" : 0.06134028017886498 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06092414317568432, + 0.06097004813525427, + 0.06089610361899194 + ], + [ + 0.0612428566564188, + 0.06129293059931108, + 0.06134028017886498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6208296152911973E-4, + "scoreError" : 6.269044336205225E-6, + "scoreConfidence" : [ + 3.558139171929145E-4, + 3.6835200586532495E-4 + ], + "scorePercentiles" : { + "0.0" : 3.598733395451569E-4, + "50.0" : 3.6207523471659155E-4, + "90.0" : 3.6463127250748904E-4, + "95.0" : 3.6463127250748904E-4, + "99.0" : 3.6463127250748904E-4, + "99.9" : 3.6463127250748904E-4, + "99.99" : 3.6463127250748904E-4, + "99.999" : 3.6463127250748904E-4, + "99.9999" : 3.6463127250748904E-4, + "100.0" : 3.6463127250748904E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.639577312825218E-4, + 3.6369806355412103E-4, + 3.6463127250748904E-4 + ], + [ + 3.598733395451569E-4, + 3.6045240587906206E-4, + 3.5988495640636755E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12233218943311586, + "scoreError" : 0.0010413720738431669, + "scoreConfidence" : [ + 0.12129081735927269, + 0.12337356150695902 + ], + "scorePercentiles" : { + "0.0" : 0.12199824691960473, + "50.0" : 0.12226286580960624, + "90.0" : 0.12294852500737681, + "95.0" : 0.12294852500737681, + "99.0" : 0.12294852500737681, + "99.9" : 0.12294852500737681, + "99.99" : 0.12294852500737681, + "99.999" : 0.12294852500737681, + "99.9999" : 0.12294852500737681, + "100.0" : 0.12294852500737681 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12251935851853667, + 0.12241122001885106, + 0.12294852500737681 + ], + [ + 0.12211451160036144, + 0.12199824691960473, + 0.12200127453396448 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012770732156686735, + "scoreError" : 3.445818928663633E-4, + "scoreConfidence" : [ + 0.012426150263820372, + 0.013115314049553097 + ], + "scorePercentiles" : { + "0.0" : 0.012646308104669721, + "50.0" : 0.01277044279092674, + "90.0" : 0.012891148131580847, + "95.0" : 0.012891148131580847, + "99.0" : 0.012891148131580847, + "99.9" : 0.012891148131580847, + "99.99" : 0.012891148131580847, + "99.999" : 0.012891148131580847, + "99.9999" : 0.012891148131580847, + "100.0" : 0.012891148131580847 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012885210215515131, + 0.012871279644448105, + 0.012891148131580847 + ], + [ + 0.012646308104669721, + 0.012660840906501235, + 0.012669605937405376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0135445399567617, + "scoreError" : 0.05863018093752046, + "scoreConfidence" : [ + 0.9549143590192413, + 1.0721747208942822 + ], + "scorePercentiles" : { + "0.0" : 0.992837416757669, + "50.0" : 1.012872757032553, + "90.0" : 1.0349437505950534, + "95.0" : 1.0349437505950534, + "99.0" : 1.0349437505950534, + "99.9" : 1.0349437505950534, + "99.99" : 1.0349437505950534, + "99.999" : 1.0349437505950534, + "99.9999" : 1.0349437505950534, + "100.0" : 1.0349437505950534 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0349437505950534, + 1.0301878420889987, + 1.0325557049044916 + ], + [ + 0.9951848534182506, + 0.9955576719761076, + 0.992837416757669 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01087323187166928, + "scoreError" : 1.3417266082953273E-4, + "scoreConfidence" : [ + 0.010739059210839747, + 0.011007404532498814 + ], + "scorePercentiles" : { + "0.0" : 0.010828105880569542, + "50.0" : 0.010869751756007177, + "90.0" : 0.010929093596791293, + "95.0" : 0.010929093596791293, + "99.0" : 0.010929093596791293, + "99.9" : 0.010929093596791293, + "99.99" : 0.010929093596791293, + "99.999" : 0.010929093596791293, + "99.9999" : 0.010929093596791293, + "100.0" : 0.010929093596791293 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010828105880569542, + 0.010829799562486463, + 0.010832290673188994 + ], + [ + 0.010907212838825361, + 0.010912888678154022, + 0.010929093596791293 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2166360642089464, + "scoreError" : 0.41701653968057645, + "scoreConfidence" : [ + 2.79961952452837, + 3.633652603889523 + ], + "scorePercentiles" : { + "0.0" : 3.0776599193846153, + "50.0" : 3.2162520343284062, + "90.0" : 3.3564145751677854, + "95.0" : 3.3564145751677854, + "99.0" : 3.3564145751677854, + "99.9" : 3.3564145751677854, + "99.99" : 3.3564145751677854, + "99.999" : 3.3564145751677854, + "99.9999" : 3.3564145751677854, + "100.0" : 3.3564145751677854 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.349930972538513, + 3.3564145751677854, + 3.3507525244474214 + ], + [ + 3.0825730961182995, + 3.0824852975970427, + 3.0776599193846153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7325655714716564, + "scoreError" : 0.17111138604912524, + "scoreConfidence" : [ + 2.561454185422531, + 2.9036769575207817 + ], + "scorePercentiles" : { + "0.0" : 2.6723747563451776, + "50.0" : 2.7329903645014735, + "90.0" : 2.7918626769960917, + "95.0" : 2.7918626769960917, + "99.0" : 2.7918626769960917, + "99.9" : 2.7918626769960917, + "99.99" : 2.7918626769960917, + "99.999" : 2.7918626769960917, + "99.9999" : 2.7918626769960917, + "100.0" : 2.7918626769960917 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6801927033762056, + 2.67826197643278, + 2.6723747563451776 + ], + [ + 2.7869132900529396, + 2.7918626769960917, + 2.785788025626741 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1837080428215959, + "scoreError" : 0.023837178825182676, + "scoreConfidence" : [ + 0.1598708639964132, + 0.20754522164677858 + ], + "scorePercentiles" : { + "0.0" : 0.17586422177866098, + "50.0" : 0.18360247702795607, + "90.0" : 0.19174997802577082, + "95.0" : 0.19174997802577082, + "99.0" : 0.19174997802577082, + "99.9" : 0.19174997802577082, + "99.99" : 0.19174997802577082, + "99.999" : 0.19174997802577082, + "99.9999" : 0.19174997802577082, + "100.0" : 0.19174997802577082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19145767355261142, + 0.19174997802577082, + 0.19119081500812543 + ], + [ + 0.17597142951662004, + 0.17601413904778668, + 0.17586422177866098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31892102930624616, + "scoreError" : 0.03806269812438478, + "scoreConfidence" : [ + 0.2808583311818614, + 0.35698372743063095 + ], + "scorePercentiles" : { + "0.0" : 0.3055318921817238, + "50.0" : 0.31907028784776503, + "90.0" : 0.3339448963467575, + "95.0" : 0.3339448963467575, + "99.0" : 0.3339448963467575, + "99.9" : 0.3339448963467575, + "99.99" : 0.3339448963467575, + "99.999" : 0.3339448963467575, + "99.9999" : 0.3339448963467575, + "100.0" : 0.3339448963467575 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3339448963467575, + 0.3302890899362552, + 0.3293176085224092 + ], + [ + 0.30882296717312085, + 0.30561972167721035, + 0.3055318921817238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1402900360119306, + "scoreError" : 0.007428553056603889, + "scoreConfidence" : [ + 0.1328614829553267, + 0.1477185890685345 + ], + "scorePercentiles" : { + "0.0" : 0.1378113738630726, + "50.0" : 0.14014746715830104, + "90.0" : 0.14307564805276562, + "95.0" : 0.14307564805276562, + "99.0" : 0.14307564805276562, + "99.9" : 0.14307564805276562, + "99.99" : 0.14307564805276562, + "99.999" : 0.14307564805276562, + "99.9999" : 0.14307564805276562, + "100.0" : 0.14307564805276562 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13792411646093372, + 0.1378113738630726, + 0.13790661888738726 + ], + [ + 0.14307564805276562, + 0.14237081785566835, + 0.142651640951756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4092967325656189, + "scoreError" : 0.0121157111598231, + "scoreConfidence" : [ + 0.3971810214057958, + 0.42141244372544195 + ], + "scorePercentiles" : { + "0.0" : 0.4041225980360462, + "50.0" : 0.4083675004407429, + "90.0" : 0.41586958156942655, + "95.0" : 0.41586958156942655, + "99.0" : 0.41586958156942655, + "99.9" : 0.41586958156942655, + "99.99" : 0.41586958156942655, + "99.999" : 0.41586958156942655, + "99.9999" : 0.41586958156942655, + "100.0" : 0.41586958156942655 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41269858162759987, + 0.41586958156942655, + 0.40920641218593995 + ], + [ + 0.40752858869554587, + 0.40635463327915483, + 0.4041225980360462 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15983828064684039, + "scoreError" : 0.007843807728838907, + "scoreConfidence" : [ + 0.15199447291800147, + 0.1676820883756793 + ], + "scorePercentiles" : { + "0.0" : 0.15716707081787892, + "50.0" : 0.15944649042566278, + "90.0" : 0.1628719169543974, + "95.0" : 0.1628719169543974, + "99.0" : 0.1628719169543974, + "99.9" : 0.1628719169543974, + "99.99" : 0.1628719169543974, + "99.999" : 0.1628719169543974, + "99.9999" : 0.1628719169543974, + "100.0" : 0.1628719169543974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1628719169543974, + 0.16274452030204892, + 0.16142813327306774 + ], + [ + 0.15735319495539157, + 0.15746484757825785, + 0.15716707081787892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04645975449587328, + "scoreError" : 0.0031885827727397105, + "scoreConfidence" : [ + 0.04327117172313357, + 0.04964833726861299 + ], + "scorePercentiles" : { + "0.0" : 0.04539349169083836, + "50.0" : 0.04646975527885863, + "90.0" : 0.04752755751947416, + "95.0" : 0.04752755751947416, + "99.0" : 0.04752755751947416, + "99.9" : 0.04752755751947416, + "99.99" : 0.04752755751947416, + "99.999" : 0.04752755751947416, + "99.9999" : 0.04752755751947416, + "100.0" : 0.04752755751947416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047485382456290304, + 0.04752755751947416, + 0.047479445864590256 + ], + [ + 0.04539349169083836, + 0.04546006469312701, + 0.045412584750919575 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8419345.796838839, + "scoreError" : 103562.52099104252, + "scoreConfidence" : [ + 8315783.275847796, + 8522908.31782988 + ], + "scorePercentiles" : { + "0.0" : 8380159.912897822, + "50.0" : 8416146.237416815, + "90.0" : 8460306.114116652, + "95.0" : 8460306.114116652, + "99.0" : 8460306.114116652, + "99.9" : 8460306.114116652, + "99.99" : 8460306.114116652, + "99.999" : 8460306.114116652, + "99.9999" : 8460306.114116652, + "100.0" : 8460306.114116652 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8389732.617449664, + 8388644.272422465, + 8380159.912897822 + ], + [ + 8460306.114116652, + 8454672.00676247, + 8442559.857383966 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-05T07:40:52Z-2b26495c3b73738ff36f6d7c8aff3b9a11f372d8-jdk17.json b/performance-results/2025-06-05T07:40:52Z-2b26495c3b73738ff36f6d7c8aff3b9a11f372d8-jdk17.json new file mode 100644 index 0000000000..04a95bc9c5 --- /dev/null +++ b/performance-results/2025-06-05T07:40:52Z-2b26495c3b73738ff36f6d7c8aff3b9a11f372d8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.346800541757778, + "scoreError" : 0.01795258592853953, + "scoreConfidence" : [ + 3.3288479558292385, + 3.364753127686318 + ], + "scorePercentiles" : { + "0.0" : 3.343041574244067, + "50.0" : 3.3472073423986926, + "90.0" : 3.34974590798966, + "95.0" : 3.34974590798966, + "99.0" : 3.34974590798966, + "99.9" : 3.34974590798966, + "99.99" : 3.34974590798966, + "99.999" : 3.34974590798966, + "99.9999" : 3.34974590798966, + "100.0" : 3.34974590798966 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.343041574244067, + 3.3471101255694107 + ], + [ + 3.3473045592279744, + 3.34974590798966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.688834364463484, + "scoreError" : 0.0710313933416004, + "scoreConfidence" : [ + 1.6178029711218835, + 1.7598657578050845 + ], + "scorePercentiles" : { + "0.0" : 1.678078661551572, + "50.0" : 1.6888565871216203, + "90.0" : 1.6995456220591239, + "95.0" : 1.6995456220591239, + "99.0" : 1.6995456220591239, + "99.9" : 1.6995456220591239, + "99.99" : 1.6995456220591239, + "99.999" : 1.6995456220591239, + "99.9999" : 1.6995456220591239, + "100.0" : 1.6995456220591239 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.678078661551572, + 1.68073047684942 + ], + [ + 1.6969826973938207, + 1.6995456220591239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8520010071018522, + "scoreError" : 0.01340114517920515, + "scoreConfidence" : [ + 0.8385998619226471, + 0.8654021522810573 + ], + "scorePercentiles" : { + "0.0" : 0.8495619047606462, + "50.0" : 0.8519279137889959, + "90.0" : 0.8545862960687713, + "95.0" : 0.8545862960687713, + "99.0" : 0.8545862960687713, + "99.9" : 0.8545862960687713, + "99.99" : 0.8545862960687713, + "99.999" : 0.8545862960687713, + "99.9999" : 0.8545862960687713, + "100.0" : 0.8545862960687713 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8495619047606462, + 0.8545862960687713 + ], + [ + 0.8515681652553272, + 0.8522876623226645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.112989259433288, + "scoreError" : 0.34282622247933536, + "scoreConfidence" : [ + 15.770163036953953, + 16.455815481912623 + ], + "scorePercentiles" : { + "0.0" : 15.985740816789841, + "50.0" : 16.118236718346175, + "90.0" : 16.241124233681205, + "95.0" : 16.241124233681205, + "99.0" : 16.241124233681205, + "99.9" : 16.241124233681205, + "99.99" : 16.241124233681205, + "99.999" : 16.241124233681205, + "99.9999" : 16.241124233681205, + "100.0" : 16.241124233681205 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.22043562311978, + 16.20879335409353, + 16.241124233681205 + ], + [ + 15.994161446316557, + 16.02768008259882, + 15.985740816789841 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2780.647348200287, + "scoreError" : 275.5496490193163, + "scoreConfidence" : [ + 2505.0976991809707, + 3056.1969972196034 + ], + "scorePercentiles" : { + "0.0" : 2675.8728519192077, + "50.0" : 2779.4591041552685, + "90.0" : 2879.1671450252084, + "95.0" : 2879.1671450252084, + "99.0" : 2879.1671450252084, + "99.9" : 2879.1671450252084, + "99.99" : 2879.1671450252084, + "99.999" : 2879.1671450252084, + "99.9999" : 2879.1671450252084, + "100.0" : 2879.1671450252084 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2696.509120804338, + 2702.3012831430515, + 2675.8728519192077 + ], + [ + 2879.1671450252084, + 2856.616925167485, + 2873.416763142431 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76928.57720658074, + "scoreError" : 3056.045495554094, + "scoreConfidence" : [ + 73872.53171102665, + 79984.62270213483 + ], + "scorePercentiles" : { + "0.0" : 75916.00701031623, + "50.0" : 76909.51089956146, + "90.0" : 77970.82208215236, + "95.0" : 77970.82208215236, + "99.0" : 77970.82208215236, + "99.9" : 77970.82208215236, + "99.99" : 77970.82208215236, + "99.999" : 77970.82208215236, + "99.9999" : 77970.82208215236, + "100.0" : 77970.82208215236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77853.89921148181, + 77943.3536416547, + 77970.82208215236 + ], + [ + 75922.25870623822, + 75916.00701031623, + 75965.12258764109 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 365.6214443274716, + "scoreError" : 14.871053515394365, + "scoreConfidence" : [ + 350.7503908120772, + 380.49249784286593 + ], + "scorePercentiles" : { + "0.0" : 360.3963346972968, + "50.0" : 365.7084965133279, + "90.0" : 370.65408652232134, + "95.0" : 370.65408652232134, + "99.0" : 370.65408652232134, + "99.9" : 370.65408652232134, + "99.99" : 370.65408652232134, + "99.999" : 370.65408652232134, + "99.9999" : 370.65408652232134, + "100.0" : 370.65408652232134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 370.48917493614, + 370.223028522099, + 370.65408652232134 + ], + [ + 361.1939645045568, + 360.3963346972968, + 360.7720767824152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.28509013810505, + "scoreError" : 6.236868789193347, + "scoreConfidence" : [ + 109.0482213489117, + 121.5219589272984 + ], + "scorePercentiles" : { + "0.0" : 112.39772540723094, + "50.0" : 116.03719204371811, + "90.0" : 117.21807898061627, + "95.0" : 117.21807898061627, + "99.0" : 117.21807898061627, + "99.9" : 117.21807898061627, + "99.99" : 117.21807898061627, + "99.999" : 117.21807898061627, + "99.9999" : 117.21807898061627, + "100.0" : 117.21807898061627 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.39772540723094, + 112.85464333513782, + 115.01609436746419 + ], + [ + 117.21807898061627, + 117.05828971997201, + 117.16570901820907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06154713140579223, + "scoreError" : 0.0010052292743893078, + "scoreConfidence" : [ + 0.060541902131402925, + 0.06255236068018154 + ], + "scorePercentiles" : { + "0.0" : 0.061191925096222684, + "50.0" : 0.061498076086224956, + "90.0" : 0.06202456001091615, + "95.0" : 0.06202456001091615, + "99.0" : 0.06202456001091615, + "99.9" : 0.06202456001091615, + "99.99" : 0.06202456001091615, + "99.999" : 0.06202456001091615, + "99.9999" : 0.06202456001091615, + "100.0" : 0.06202456001091615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06124222500734898, + 0.061191925096222684, + 0.061261661633085635 + ], + [ + 0.061827926147815654, + 0.06173449053936427, + 0.06202456001091615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6575890749415E-4, + "scoreError" : 1.3828591895466834E-5, + "scoreConfidence" : [ + 3.519303155986832E-4, + 3.7958749938961687E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6046085047311625E-4, + "50.0" : 3.656176093781589E-4, + "90.0" : 3.71789535425747E-4, + "95.0" : 3.71789535425747E-4, + "99.0" : 3.71789535425747E-4, + "99.9" : 3.71789535425747E-4, + "99.99" : 3.71789535425747E-4, + "99.999" : 3.71789535425747E-4, + "99.9999" : 3.71789535425747E-4, + "100.0" : 3.71789535425747E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6046085047311625E-4, + 3.610734094781565E-4, + 3.626831063278454E-4 + ], + [ + 3.699944308315629E-4, + 3.71789535425747E-4, + 3.685521124284723E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12664009562942016, + "scoreError" : 9.381624397491443E-4, + "scoreConfidence" : [ + 0.12570193318967102, + 0.1275782580691693 + ], + "scorePercentiles" : { + "0.0" : 0.12612485943648472, + "50.0" : 0.12663474022440227, + "90.0" : 0.12713994263628967, + "95.0" : 0.12713994263628967, + "99.0" : 0.12713994263628967, + "99.9" : 0.12713994263628967, + "99.99" : 0.12713994263628967, + "99.999" : 0.12713994263628967, + "99.9999" : 0.12713994263628967, + "100.0" : 0.12713994263628967 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12612485943648472, + 0.12656488020806966, + 0.12670460024073488 + ], + [ + 0.12713994263628967, + 0.12678385582433185, + 0.1265224354306102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012766302846904956, + "scoreError" : 4.8622731258282393E-4, + "scoreConfidence" : [ + 0.012280075534322131, + 0.01325253015948778 + ], + "scorePercentiles" : { + "0.0" : 0.012601365308886999, + "50.0" : 0.012769128912713318, + "90.0" : 0.012934245718823725, + "95.0" : 0.012934245718823725, + "99.0" : 0.012934245718823725, + "99.9" : 0.012934245718823725, + "99.99" : 0.012934245718823725, + "99.999" : 0.012934245718823725, + "99.9999" : 0.012934245718823725, + "100.0" : 0.012934245718823725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012601365308886999, + 0.012619525593961888, + 0.012603700137882706 + ], + [ + 0.01292024809040967, + 0.012918732231464747, + 0.012934245718823725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0381645193554132, + "scoreError" : 0.09028927776853148, + "scoreConfidence" : [ + 0.9478752415868817, + 1.1284537971239448 + ], + "scorePercentiles" : { + "0.0" : 1.0068082438336856, + "50.0" : 1.0386005208966131, + "90.0" : 1.0681727486648152, + "95.0" : 1.0681727486648152, + "99.0" : 1.0681727486648152, + "99.9" : 1.0681727486648152, + "99.99" : 1.0681727486648152, + "99.999" : 1.0681727486648152, + "99.9999" : 1.0681727486648152, + "100.0" : 1.0681727486648152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.068098819181886, + 1.0681727486648152, + 1.0663099347478409 + ], + [ + 1.0108911070453857, + 1.0087062626588663, + 1.0068082438336856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011107134460866646, + "scoreError" : 0.0016983355767711118, + "scoreConfidence" : [ + 0.009408798884095534, + 0.012805470037637759 + ], + "scorePercentiles" : { + "0.0" : 0.010534898578878061, + "50.0" : 0.011115936138504316, + "90.0" : 0.011676937712368083, + "95.0" : 0.011676937712368083, + "99.0" : 0.011676937712368083, + "99.9" : 0.011676937712368083, + "99.99" : 0.011676937712368083, + "99.999" : 0.011676937712368083, + "99.9999" : 0.011676937712368083, + "100.0" : 0.011676937712368083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01166030222519682, + 0.011641639650945395, + 0.011676937712368083 + ], + [ + 0.010534898578878061, + 0.010590232626063236, + 0.010538795971748281 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2741913629104027, + "scoreError" : 0.1272162716327141, + "scoreConfidence" : [ + 3.146975091277689, + 3.4014076345431166 + ], + "scorePercentiles" : { + "0.0" : 3.2216848235672892, + "50.0" : 3.2807756638793326, + "90.0" : 3.315588143141153, + "95.0" : 3.315588143141153, + "99.0" : 3.315588143141153, + "99.9" : 3.315588143141153, + "99.99" : 3.315588143141153, + "99.999" : 3.315588143141153, + "99.9999" : 3.315588143141153, + "100.0" : 3.315588143141153 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.315440432736912, + 3.315588143141153, + 3.3136102582781457 + ], + [ + 3.230883450258398, + 3.2216848235672892, + 3.2479410694805195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8267180525545563, + "scoreError" : 0.045743115058050426, + "scoreConfidence" : [ + 2.780974937496506, + 2.872461167612607 + ], + "scorePercentiles" : { + "0.0" : 2.8131432396624474, + "50.0" : 2.8233969917348984, + "90.0" : 2.8532055044222537, + "95.0" : 2.8532055044222537, + "99.0" : 2.8532055044222537, + "99.9" : 2.8532055044222537, + "99.99" : 2.8532055044222537, + "99.999" : 2.8532055044222537, + "99.9999" : 2.8532055044222537, + "100.0" : 2.8532055044222537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8131432396624474, + 2.8136968140646976, + 2.81322152883263 + ], + [ + 2.8532055044222537, + 2.83394405894021, + 2.8330971694050993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18393929359352265, + "scoreError" : 0.009864984179311535, + "scoreConfidence" : [ + 0.17407430941421112, + 0.19380427777283418 + ], + "scorePercentiles" : { + "0.0" : 0.18089873929559885, + "50.0" : 0.1831129950010586, + "90.0" : 0.1894004436068865, + "95.0" : 0.1894004436068865, + "99.0" : 0.1894004436068865, + "99.9" : 0.1894004436068865, + "99.99" : 0.1894004436068865, + "99.999" : 0.1894004436068865, + "99.9999" : 0.1894004436068865, + "100.0" : 0.1894004436068865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1894004436068865, + 0.18607028862756772, + 0.18517452746092883 + ], + [ + 0.18104030002896557, + 0.1810514625411884, + 0.18089873929559885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31973503069035514, + "scoreError" : 0.002340966167381667, + "scoreConfidence" : [ + 0.3173940645229735, + 0.3220759968577368 + ], + "scorePercentiles" : { + "0.0" : 0.31879358028626986, + "50.0" : 0.31973810436332917, + "90.0" : 0.3209818412132884, + "95.0" : 0.3209818412132884, + "99.0" : 0.3209818412132884, + "99.9" : 0.3209818412132884, + "99.99" : 0.3209818412132884, + "99.999" : 0.3209818412132884, + "99.9999" : 0.3209818412132884, + "100.0" : 0.3209818412132884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3197548508073541, + 0.31879358028626986, + 0.3188740875609834 + ], + [ + 0.3197213579193043, + 0.3202844663549307, + 0.3209818412132884 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1427815629437479, + "scoreError" : 0.009744923940682299, + "scoreConfidence" : [ + 0.1330366390030656, + 0.15252648688443018 + ], + "scorePercentiles" : { + "0.0" : 0.13979187326660703, + "50.0" : 0.14217908933503132, + "90.0" : 0.14841604611160583, + "95.0" : 0.14841604611160583, + "99.0" : 0.14841604611160583, + "99.9" : 0.14841604611160583, + "99.99" : 0.14841604611160583, + "99.999" : 0.14841604611160583, + "99.9999" : 0.14841604611160583, + "100.0" : 0.14841604611160583 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14018814910141028, + 0.13979187326660703, + 0.13982479890658425 + ], + [ + 0.14841604611160583, + 0.1442984807076275, + 0.14417002956865232 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40131010395932104, + "scoreError" : 0.0356162690745942, + "scoreConfidence" : [ + 0.36569383488472684, + 0.43692637303391524 + ], + "scorePercentiles" : { + "0.0" : 0.38920219019264446, + "50.0" : 0.39943109835112733, + "90.0" : 0.4156298187938988, + "95.0" : 0.4156298187938988, + "99.0" : 0.4156298187938988, + "99.9" : 0.4156298187938988, + "99.99" : 0.4156298187938988, + "99.999" : 0.4156298187938988, + "99.9999" : 0.4156298187938988, + "100.0" : 0.4156298187938988 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.391164942227959, + 0.38920219019264446, + 0.3896329257772929 + ], + [ + 0.4156298187938988, + 0.4145334922898358, + 0.4076972544742957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1565493334604792, + "scoreError" : 0.004195158002448803, + "scoreConfidence" : [ + 0.1523541754580304, + 0.160744491462928 + ], + "scorePercentiles" : { + "0.0" : 0.1549165470318503, + "50.0" : 0.15653063931033043, + "90.0" : 0.1581113321211738, + "95.0" : 0.1581113321211738, + "99.0" : 0.1581113321211738, + "99.9" : 0.1581113321211738, + "99.99" : 0.1581113321211738, + "99.999" : 0.1581113321211738, + "99.9999" : 0.1581113321211738, + "100.0" : 0.1581113321211738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1581113321211738, + 0.15794151854191674, + 0.15764804618974051 + ], + [ + 0.15541323243092034, + 0.1549165470318503, + 0.15526532444727362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047689161432700446, + "scoreError" : 0.0010190283998247136, + "scoreConfidence" : [ + 0.04667013303287573, + 0.04870818983252516 + ], + "scorePercentiles" : { + "0.0" : 0.04721845914016574, + "50.0" : 0.04783774370152301, + "90.0" : 0.048017714866032846, + "95.0" : 0.048017714866032846, + "99.0" : 0.048017714866032846, + "99.9" : 0.048017714866032846, + "99.99" : 0.048017714866032846, + "99.999" : 0.048017714866032846, + "99.9999" : 0.048017714866032846, + "100.0" : 0.048017714866032846 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04777892620162446, + 0.048017714866032846, + 0.04797749889173551 + ], + [ + 0.04789656120142155, + 0.04721845914016574, + 0.04724580829522262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8628959.413159462, + "scoreError" : 66738.33212440078, + "scoreConfidence" : [ + 8562221.08103506, + 8695697.745283863 + ], + "scorePercentiles" : { + "0.0" : 8598174.565292096, + "50.0" : 8630070.847784579, + "90.0" : 8661977.858874459, + "95.0" : 8661977.858874459, + "99.0" : 8661977.858874459, + "99.9" : 8661977.858874459, + "99.99" : 8661977.858874459, + "99.999" : 8661977.858874459, + "99.9999" : 8661977.858874459, + "100.0" : 8661977.858874459 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8661977.858874459, + 8645937.082973206, + 8634762.86022433 + ], + [ + 8625378.835344827, + 8607525.276247848, + 8598174.565292096 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-05T08:39:29Z-fa22b821dd44aa991c3746f36b49661aa97db913-jdk17.json b/performance-results/2025-06-05T08:39:29Z-fa22b821dd44aa991c3746f36b49661aa97db913-jdk17.json new file mode 100644 index 0000000000..22466414f1 --- /dev/null +++ b/performance-results/2025-06-05T08:39:29Z-fa22b821dd44aa991c3746f36b49661aa97db913-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3275185541629226, + "scoreError" : 0.03553605784569815, + "scoreConfidence" : [ + 3.2919824963172246, + 3.3630546120086207 + ], + "scorePercentiles" : { + "0.0" : 3.3206265226352634, + "50.0" : 3.3286442233336073, + "90.0" : 3.332159247349212, + "95.0" : 3.332159247349212, + "99.0" : 3.332159247349212, + "99.9" : 3.332159247349212, + "99.99" : 3.332159247349212, + "99.999" : 3.332159247349212, + "99.9999" : 3.332159247349212, + "100.0" : 3.332159247349212 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3206265226352634, + 3.331738950237085 + ], + [ + 3.32554949643013, + 3.332159247349212 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6783071368347324, + "scoreError" : 0.03742877767379456, + "scoreConfidence" : [ + 1.640878359160938, + 1.715735914508527 + ], + "scorePercentiles" : { + "0.0" : 1.6705872749133792, + "50.0" : 1.679398823553512, + "90.0" : 1.6838436253185265, + "95.0" : 1.6838436253185265, + "99.0" : 1.6838436253185265, + "99.9" : 1.6838436253185265, + "99.99" : 1.6838436253185265, + "99.999" : 1.6838436253185265, + "99.9999" : 1.6838436253185265, + "100.0" : 1.6838436253185265 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6773970380100793, + 1.6838436253185265 + ], + [ + 1.6705872749133792, + 1.6814006090969447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.837734827737114, + "scoreError" : 0.056575984181638735, + "scoreConfidence" : [ + 0.7811588435554753, + 0.8943108119187528 + ], + "scorePercentiles" : { + "0.0" : 0.831071620013888, + "50.0" : 0.8346987268326309, + "90.0" : 0.8504702372693066, + "95.0" : 0.8504702372693066, + "99.0" : 0.8504702372693066, + "99.9" : 0.8504702372693066, + "99.99" : 0.8504702372693066, + "99.999" : 0.8504702372693066, + "99.9999" : 0.8504702372693066, + "100.0" : 0.8504702372693066 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.831071620013888, + 0.8504702372693066 + ], + [ + 0.8331278083400208, + 0.8362696453252411 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.100386170470006, + "scoreError" : 0.051845933379740895, + "scoreConfidence" : [ + 16.048540237090265, + 16.152232103849748 + ], + "scorePercentiles" : { + "0.0" : 16.076321609097263, + "50.0" : 16.101201851337187, + "90.0" : 16.124197152104248, + "95.0" : 16.124197152104248, + "99.0" : 16.124197152104248, + "99.9" : 16.124197152104248, + "99.99" : 16.124197152104248, + "99.999" : 16.124197152104248, + "99.9999" : 16.124197152104248, + "100.0" : 16.124197152104248 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.124197152104248, + 16.087072280598328, + 16.112202854308315 + ], + [ + 16.09020084836606, + 16.112322278345818, + 16.076321609097263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2661.108134772785, + "scoreError" : 40.74426752627458, + "scoreConfidence" : [ + 2620.3638672465104, + 2701.8524022990596 + ], + "scorePercentiles" : { + "0.0" : 2645.760867496771, + "50.0" : 2661.4692396823148, + "90.0" : 2676.1943510441174, + "95.0" : 2676.1943510441174, + "99.0" : 2676.1943510441174, + "99.9" : 2676.1943510441174, + "99.99" : 2676.1943510441174, + "99.999" : 2676.1943510441174, + "99.9999" : 2676.1943510441174, + "100.0" : 2676.1943510441174 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2647.385801023843, + 2645.760867496771, + 2650.791677688593 + ], + [ + 2672.1468016760364, + 2674.3693097073483, + 2676.1943510441174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76062.25624319282, + "scoreError" : 3286.3003218041436, + "scoreConfidence" : [ + 72775.95592138868, + 79348.55656499696 + ], + "scorePercentiles" : { + "0.0" : 74976.73753861556, + "50.0" : 76068.11337509079, + "90.0" : 77161.06996916088, + "95.0" : 77161.06996916088, + "99.0" : 77161.06996916088, + "99.9" : 77161.06996916088, + "99.99" : 77161.06996916088, + "99.999" : 77161.06996916088, + "99.9999" : 77161.06996916088, + "100.0" : 77161.06996916088 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77117.18294774441, + 77161.06996916088, + 77117.42175779326 + ], + [ + 74976.73753861556, + 74982.08144340567, + 75019.04380243717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.19808083250183, + "scoreError" : 16.278482393815015, + "scoreConfidence" : [ + 330.9195984386868, + 363.47656322631684 + ], + "scorePercentiles" : { + "0.0" : 340.23628691060594, + "50.0" : 347.44731119614687, + "90.0" : 353.02060217166763, + "95.0" : 353.02060217166763, + "99.0" : 353.02060217166763, + "99.9" : 353.02060217166763, + "99.99" : 353.02060217166763, + "99.999" : 353.02060217166763, + "99.9999" : 353.02060217166763, + "100.0" : 353.02060217166763 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 352.5952866825053, + 351.58543536238886, + 353.02060217166763 + ], + [ + 340.23628691060594, + 343.3091870299048, + 342.44168683793845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.1248913157721, + "scoreError" : 5.070437280189476, + "scoreConfidence" : [ + 108.05445403558262, + 118.19532859596158 + ], + "scorePercentiles" : { + "0.0" : 110.80431543202809, + "50.0" : 113.19278472780539, + "90.0" : 115.00996289791087, + "95.0" : 115.00996289791087, + "99.0" : 115.00996289791087, + "99.9" : 115.00996289791087, + "99.99" : 115.00996289791087, + "99.999" : 115.00996289791087, + "99.9999" : 115.00996289791087, + "100.0" : 115.00996289791087 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.00996289791087, + 114.67741122197295, + 114.50040033826056 + ], + [ + 110.80431543202809, + 111.88516911735023, + 111.87208888710984 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06305882537886515, + "scoreError" : 3.868245116256811E-4, + "scoreConfidence" : [ + 0.06267200086723947, + 0.06344564989049083 + ], + "scorePercentiles" : { + "0.0" : 0.06288577523094434, + "50.0" : 0.06306533821042906, + "90.0" : 0.06322890090921736, + "95.0" : 0.06322890090921736, + "99.0" : 0.06322890090921736, + "99.9" : 0.06322890090921736, + "99.99" : 0.06322890090921736, + "99.999" : 0.06322890090921736, + "99.9999" : 0.06322890090921736, + "100.0" : 0.06322890090921736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06313659345918303, + 0.06322890090921736, + 0.06316777921306795 + ], + [ + 0.06299408296167511, + 0.06288577523094434, + 0.06293982049910313 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.819890204839837E-4, + "scoreError" : 2.8155049448342767E-5, + "scoreConfidence" : [ + 3.5383397103564096E-4, + 4.1014406993232646E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7240742095874285E-4, + "50.0" : 3.820694401702231E-4, + "90.0" : 3.9159490862441854E-4, + "95.0" : 3.9159490862441854E-4, + "99.0" : 3.9159490862441854E-4, + "99.9" : 3.9159490862441854E-4, + "99.99" : 3.9159490862441854E-4, + "99.999" : 3.9159490862441854E-4, + "99.9999" : 3.9159490862441854E-4, + "100.0" : 3.9159490862441854E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7332782283147934E-4, + 3.7275582259353637E-4, + 3.7240742095874285E-4 + ], + [ + 3.9159490862441854E-4, + 3.9103709038675825E-4, + 3.9081105750896685E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12793495400057106, + "scoreError" : 0.005903153005339292, + "scoreConfidence" : [ + 0.12203180099523177, + 0.13383810700591034 + ], + "scorePercentiles" : { + "0.0" : 0.1258542628810189, + "50.0" : 0.12795132062774078, + "90.0" : 0.12999869358864363, + "95.0" : 0.12999869358864363, + "99.0" : 0.12999869358864363, + "99.9" : 0.12999869358864363, + "99.99" : 0.12999869358864363, + "99.999" : 0.12999869358864363, + "99.9999" : 0.12999869358864363, + "100.0" : 0.12999869358864363 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1298626153676337, + 0.12999869358864363, + 0.129694305877623 + ], + [ + 0.12620833537785855, + 0.1258542628810189, + 0.12599151091064859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012827324761851227, + "scoreError" : 5.921921710726301E-4, + "scoreConfidence" : [ + 0.012235132590778597, + 0.013419516932923857 + ], + "scorePercentiles" : { + "0.0" : 0.012630132576379504, + "50.0" : 0.012824285422540403, + "90.0" : 0.013033911165997602, + "95.0" : 0.013033911165997602, + "99.0" : 0.013033911165997602, + "99.9" : 0.013033911165997602, + "99.99" : 0.013033911165997602, + "99.999" : 0.013033911165997602, + "99.9999" : 0.013033911165997602, + "100.0" : 0.013033911165997602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01263935978922915, + 0.01263460896894074, + 0.012630132576379504 + ], + [ + 0.013009211055851656, + 0.013016725014708715, + 0.013033911165997602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0329025282873017, + "scoreError" : 0.11404561656718837, + "scoreConfidence" : [ + 0.9188569117201133, + 1.14694814485449 + ], + "scorePercentiles" : { + "0.0" : 0.9949510858621032, + "50.0" : 1.0324422948250203, + "90.0" : 1.073087094527897, + "95.0" : 1.073087094527897, + "99.0" : 1.073087094527897, + "99.9" : 1.073087094527897, + "99.99" : 1.073087094527897, + "99.999" : 1.073087094527897, + "99.9999" : 1.073087094527897, + "100.0" : 1.073087094527897 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.06913593884969, + 1.073087094527897, + 1.0677413523382446 + ], + [ + 0.9971432373117958, + 0.9949510858621032, + 0.9953564608340798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011002983045993883, + "scoreError" : 4.693119569182763E-4, + "scoreConfidence" : [ + 0.010533671089075608, + 0.011472295002912159 + ], + "scorePercentiles" : { + "0.0" : 0.010840400550677507, + "50.0" : 0.0110005442616239, + "90.0" : 0.011161152678384086, + "95.0" : 0.011161152678384086, + "99.0" : 0.011161152678384086, + "99.9" : 0.011161152678384086, + "99.99" : 0.011161152678384086, + "99.999" : 0.011161152678384086, + "99.9999" : 0.011161152678384086, + "100.0" : 0.011161152678384086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011145391949213934, + 0.011161152678384086, + 0.011160241073142424 + ], + [ + 0.010855015450511471, + 0.010840400550677507, + 0.010855696574033869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3181149783541666, + "scoreError" : 0.2516155743197692, + "scoreConfidence" : [ + 3.0664994040343974, + 3.569730552673936 + ], + "scorePercentiles" : { + "0.0" : 3.2335043639301873, + "50.0" : 3.3187364709667073, + "90.0" : 3.406899996596324, + "95.0" : 3.406899996596324, + "99.0" : 3.406899996596324, + "99.9" : 3.406899996596324, + "99.99" : 3.406899996596324, + "99.999" : 3.406899996596324, + "99.9999" : 3.406899996596324, + "100.0" : 3.406899996596324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.406899996596324, + 3.3965266510522745, + 3.3963181771894093 + ], + [ + 3.2335043639301873, + 3.2411547647440053, + 3.234285916612799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.881322080291804, + "scoreError" : 0.1835931396267798, + "scoreConfidence" : [ + 2.697728940665024, + 3.064915219918584 + ], + "scorePercentiles" : { + "0.0" : 2.818735461104848, + "50.0" : 2.881099468845196, + "90.0" : 2.9456323422680413, + "95.0" : 2.9456323422680413, + "99.0" : 2.9456323422680413, + "99.9" : 2.9456323422680413, + "99.99" : 2.9456323422680413, + "99.999" : 2.9456323422680413, + "99.9999" : 2.9456323422680413, + "100.0" : 2.9456323422680413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9347947799295775, + 2.9456323422680413, + 2.942376180935569 + ], + [ + 2.818735461104848, + 2.827404157760814, + 2.818989559751973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17904732672856902, + "scoreError" : 0.004497225572885277, + "scoreConfidence" : [ + 0.17455010115568373, + 0.1835445523014543 + ], + "scorePercentiles" : { + "0.0" : 0.17746791201419698, + "50.0" : 0.1786121480766729, + "90.0" : 0.1812736734582895, + "95.0" : 0.1812736734582895, + "99.0" : 0.1812736734582895, + "99.9" : 0.1812736734582895, + "99.99" : 0.1812736734582895, + "99.999" : 0.1812736734582895, + "99.9999" : 0.1812736734582895, + "100.0" : 0.1812736734582895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1812736734582895, + 0.17926846310770114, + 0.18059843925739982 + ], + [ + 0.17771963948818198, + 0.17795583304564463, + 0.17746791201419698 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3305803018138836, + "scoreError" : 0.01763758958924229, + "scoreConfidence" : [ + 0.3129427122246413, + 0.34821789140312587 + ], + "scorePercentiles" : { + "0.0" : 0.32463925681729644, + "50.0" : 0.3305187612350788, + "90.0" : 0.3366173438131143, + "95.0" : 0.3366173438131143, + "99.0" : 0.3366173438131143, + "99.9" : 0.3366173438131143, + "99.99" : 0.3366173438131143, + "99.999" : 0.3366173438131143, + "99.9999" : 0.3366173438131143, + "100.0" : 0.3366173438131143 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3250161059182944, + 0.32463925681729644, + 0.32487127772724317 + ], + [ + 0.3363164100554902, + 0.3360214165518632, + 0.3366173438131143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14281373981692372, + "scoreError" : 0.006608722763422632, + "scoreConfidence" : [ + 0.13620501705350108, + 0.14942246258034636 + ], + "scorePercentiles" : { + "0.0" : 0.1406003855887522, + "50.0" : 0.14279134187358195, + "90.0" : 0.14507544514079296, + "95.0" : 0.14507544514079296, + "99.0" : 0.14507544514079296, + "99.9" : 0.14507544514079296, + "99.99" : 0.14507544514079296, + "99.999" : 0.14507544514079296, + "99.9999" : 0.14507544514079296, + "100.0" : 0.14507544514079296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14507544514079296, + 0.14482979243424865, + 0.14498511217270277 + ], + [ + 0.1407528913129152, + 0.1406003855887522, + 0.14063881225213062 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39974282188467364, + "scoreError" : 0.009756078694397848, + "scoreConfidence" : [ + 0.38998674319027576, + 0.4094989005790715 + ], + "scorePercentiles" : { + "0.0" : 0.39739409974170475, + "50.0" : 0.3985827173317513, + "90.0" : 0.40667370359074456, + "95.0" : 0.40667370359074456, + "99.0" : 0.40667370359074456, + "99.9" : 0.40667370359074456, + "99.99" : 0.40667370359074456, + "99.999" : 0.40667370359074456, + "99.9999" : 0.40667370359074456, + "100.0" : 0.40667370359074456 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40667370359074456, + 0.39931313999361123, + 0.399188502953856 + ], + [ + 0.39739409974170475, + 0.3979769317096466, + 0.3979105533184784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15677058408348474, + "scoreError" : 8.390759070516399E-4, + "scoreConfidence" : [ + 0.1559315081764331, + 0.1576096599905364 + ], + "scorePercentiles" : { + "0.0" : 0.15642070479572046, + "50.0" : 0.15670050516204867, + "90.0" : 0.15724425567243738, + "95.0" : 0.15724425567243738, + "99.0" : 0.15724425567243738, + "99.9" : 0.15724425567243738, + "99.99" : 0.15724425567243738, + "99.999" : 0.15724425567243738, + "99.9999" : 0.15724425567243738, + "100.0" : 0.15724425567243738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15724425567243738, + 0.1566387478971853, + 0.1565746756485932 + ], + [ + 0.15676226242691205, + 0.15642070479572046, + 0.15698285806005996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0480776971696018, + "scoreError" : 0.0010786891038840646, + "scoreConfidence" : [ + 0.04699900806571774, + 0.04915638627348586 + ], + "scorePercentiles" : { + "0.0" : 0.04737427092492231, + "50.0" : 0.048219409502382106, + "90.0" : 0.0483855027990536, + "95.0" : 0.0483855027990536, + "99.0" : 0.0483855027990536, + "99.9" : 0.0483855027990536, + "99.99" : 0.0483855027990536, + "99.999" : 0.0483855027990536, + "99.9999" : 0.0483855027990536, + "100.0" : 0.0483855027990536 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0483855027990536, + 0.048353952826721856, + 0.048160637607035185 + ], + [ + 0.04827818139772903, + 0.0479136374621488, + 0.04737427092492231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9169404.804392328, + "scoreError" : 1012465.4981652143, + "scoreConfidence" : [ + 8156939.306227114, + 1.0181870302557543E7 + ], + "scorePercentiles" : { + "0.0" : 8781089.880701754, + "50.0" : 9227210.741988193, + "90.0" : 9496339.839658445, + "95.0" : 9496339.839658445, + "99.0" : 9496339.839658445, + "99.9" : 9496339.839658445, + "99.99" : 9496339.839658445, + "99.999" : 9496339.839658445, + "99.9999" : 9496339.839658445, + "100.0" : 9496339.839658445 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8962382.046594983, + 8791784.67135325, + 8781089.880701754 + ], + [ + 9496339.839658445, + 9492792.950664137, + 9492039.437381404 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-05T08:40:24Z-fa22b821dd44aa991c3746f36b49661aa97db913-jdk17.json b/performance-results/2025-06-05T08:40:24Z-fa22b821dd44aa991c3746f36b49661aa97db913-jdk17.json new file mode 100644 index 0000000000..ffb4c0b41f --- /dev/null +++ b/performance-results/2025-06-05T08:40:24Z-fa22b821dd44aa991c3746f36b49661aa97db913-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.323303541062623, + "scoreError" : 0.04784951378278793, + "scoreConfidence" : [ + 3.2754540272798347, + 3.371153054845411 + ], + "scorePercentiles" : { + "0.0" : 3.3159772105007193, + "50.0" : 3.3230378246394165, + "90.0" : 3.3311613044709394, + "95.0" : 3.3311613044709394, + "99.0" : 3.3311613044709394, + "99.9" : 3.3311613044709394, + "99.99" : 3.3311613044709394, + "99.999" : 3.3311613044709394, + "99.9999" : 3.3311613044709394, + "100.0" : 3.3311613044709394 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3180915700790323, + 3.3279840791998003 + ], + [ + 3.3159772105007193, + 3.3311613044709394 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6803825942852157, + "scoreError" : 0.010372906680830163, + "scoreConfidence" : [ + 1.6700096876043855, + 1.690755500966046 + ], + "scorePercentiles" : { + "0.0" : 1.6789057952699855, + "50.0" : 1.6803956196189893, + "90.0" : 1.6818333426328989, + "95.0" : 1.6818333426328989, + "99.0" : 1.6818333426328989, + "99.9" : 1.6818333426328989, + "99.99" : 1.6818333426328989, + "99.999" : 1.6818333426328989, + "99.9999" : 1.6818333426328989, + "100.0" : 1.6818333426328989 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6790833245526493, + 1.6817079146853295 + ], + [ + 1.6789057952699855, + 1.6818333426328989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8454517793297212, + "scoreError" : 0.029177788222166153, + "scoreConfidence" : [ + 0.816273991107555, + 0.8746295675518873 + ], + "scorePercentiles" : { + "0.0" : 0.8392436471945683, + "50.0" : 0.8467668325477291, + "90.0" : 0.8490298050288578, + "95.0" : 0.8490298050288578, + "99.0" : 0.8490298050288578, + "99.9" : 0.8490298050288578, + "99.99" : 0.8490298050288578, + "99.999" : 0.8490298050288578, + "99.9999" : 0.8490298050288578, + "100.0" : 0.8490298050288578 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8449833296670461, + 0.848550335428412 + ], + [ + 0.8392436471945683, + 0.8490298050288578 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.18154154425366, + "scoreError" : 0.4876887572569573, + "scoreConfidence" : [ + 15.6938527869967, + 16.669230301510616 + ], + "scorePercentiles" : { + "0.0" : 15.996149452382825, + "50.0" : 16.193279965398506, + "90.0" : 16.343634615329844, + "95.0" : 16.343634615329844, + "99.0" : 16.343634615329844, + "99.9" : 16.343634615329844, + "99.99" : 16.343634615329844, + "99.999" : 16.343634615329844, + "99.9999" : 16.343634615329844, + "100.0" : 16.343634615329844 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.343634615329844, + 16.332619418664482, + 16.341890046639865 + ], + [ + 16.021015220372423, + 16.05394051213253, + 15.996149452382825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2655.826396014289, + "scoreError" : 177.34839923387736, + "scoreConfidence" : [ + 2478.4779967804116, + 2833.1747952481664 + ], + "scorePercentiles" : { + "0.0" : 2597.0197297809823, + "50.0" : 2655.273185437959, + "90.0" : 2715.160658768505, + "95.0" : 2715.160658768505, + "99.0" : 2715.160658768505, + "99.9" : 2715.160658768505, + "99.99" : 2715.160658768505, + "99.999" : 2715.160658768505, + "99.9999" : 2715.160658768505, + "100.0" : 2715.160658768505 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2714.1519215725325, + 2711.3230373626725, + 2715.160658768505 + ], + [ + 2597.0197297809823, + 2599.223333513246, + 2598.0796950877966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76369.51630663862, + "scoreError" : 3185.3504945248087, + "scoreConfidence" : [ + 73184.1658121138, + 79554.86680116343 + ], + "scorePercentiles" : { + "0.0" : 75303.62208568261, + "50.0" : 76377.87393196806, + "90.0" : 77418.3657705047, + "95.0" : 77418.3657705047, + "99.0" : 77418.3657705047, + "99.9" : 77418.3657705047, + "99.99" : 77418.3657705047, + "99.999" : 77418.3657705047, + "99.9999" : 77418.3657705047, + "100.0" : 77418.3657705047 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75338.30044503884, + 75303.62208568261, + 75356.15977841077 + ], + [ + 77399.58808552533, + 77418.3657705047, + 77401.06167466943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.82147509309766, + "scoreError" : 14.901992740186317, + "scoreConfidence" : [ + 342.91948235291136, + 372.72346783328396 + ], + "scorePercentiles" : { + "0.0" : 351.6833825733217, + "50.0" : 358.0103417265581, + "90.0" : 363.0555009770507, + "95.0" : 363.0555009770507, + "99.0" : 363.0555009770507, + "99.9" : 363.0555009770507, + "99.99" : 363.0555009770507, + "99.999" : 363.0555009770507, + "99.9999" : 363.0555009770507, + "100.0" : 363.0555009770507 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.6833825733217, + 353.63924311592825, + 353.7442487744116 + ], + [ + 362.2764346787047, + 363.0555009770507, + 362.5300404391692 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.86327790473626, + "scoreError" : 11.811822184389225, + "scoreConfidence" : [ + 102.05145572034704, + 125.6751000891255 + ], + "scorePercentiles" : { + "0.0" : 108.74637929180025, + "50.0" : 114.37264820715622, + "90.0" : 118.07686482202945, + "95.0" : 118.07686482202945, + "99.0" : 118.07686482202945, + "99.9" : 118.07686482202945, + "99.99" : 118.07686482202945, + "99.999" : 118.07686482202945, + "99.9999" : 118.07686482202945, + "100.0" : 118.07686482202945 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.74637929180025, + 109.88723944321818, + 111.77029569149941 + ], + [ + 116.97500072281302, + 117.72388745705729, + 118.07686482202945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061061494890769084, + "scoreError" : 9.799797262308853E-4, + "scoreConfidence" : [ + 0.0600815151645382, + 0.06204147461699997 + ], + "scorePercentiles" : { + "0.0" : 0.06063107086470952, + "50.0" : 0.061066911992722746, + "90.0" : 0.06145504228658518, + "95.0" : 0.06145504228658518, + "99.0" : 0.06145504228658518, + "99.9" : 0.06145504228658518, + "99.99" : 0.06145504228658518, + "99.999" : 0.06145504228658518, + "99.9999" : 0.06145504228658518, + "100.0" : 0.06145504228658518 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06145504228658518, + 0.061320686987981356, + 0.06134031814975433 + ], + [ + 0.06063107086470952, + 0.060808714058119946, + 0.060813136997464136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5882177092025737E-4, + "scoreError" : 1.2259069440694305E-5, + "scoreConfidence" : [ + 3.4656270147956304E-4, + 3.710808403609517E-4 + ], + "scorePercentiles" : { + "0.0" : 3.547846618292102E-4, + "50.0" : 3.587636434204854E-4, + "90.0" : 3.6314266514681474E-4, + "95.0" : 3.6314266514681474E-4, + "99.0" : 3.6314266514681474E-4, + "99.9" : 3.6314266514681474E-4, + "99.99" : 3.6314266514681474E-4, + "99.999" : 3.6314266514681474E-4, + "99.9999" : 3.6314266514681474E-4, + "100.0" : 3.6314266514681474E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6314266514681474E-4, + 3.626083114667236E-4, + 3.626754409789806E-4 + ], + [ + 3.548005707255676E-4, + 3.547846618292102E-4, + 3.549189753742472E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12340197858834524, + "scoreError" : 0.001002323575216014, + "scoreConfidence" : [ + 0.12239965501312923, + 0.12440430216356126 + ], + "scorePercentiles" : { + "0.0" : 0.12293044180557604, + "50.0" : 0.1234042305649592, + "90.0" : 0.12389656478430013, + "95.0" : 0.12389656478430013, + "99.0" : 0.12389656478430013, + "99.9" : 0.12389656478430013, + "99.99" : 0.12389656478430013, + "99.999" : 0.12389656478430013, + "99.9999" : 0.12389656478430013, + "100.0" : 0.12389656478430013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12342505851424904, + 0.12389656478430013, + 0.1236802555809783 + ], + [ + 0.12338340261566934, + 0.12309614822929874, + 0.12293044180557604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012832217076013092, + "scoreError" : 9.581721888366957E-5, + "scoreConfidence" : [ + 0.012736399857129422, + 0.012928034294896761 + ], + "scorePercentiles" : { + "0.0" : 0.012790897798203157, + "50.0" : 0.012833786044344308, + "90.0" : 0.012870691539323862, + "95.0" : 0.012870691539323862, + "99.0" : 0.012870691539323862, + "99.9" : 0.012870691539323862, + "99.99" : 0.012870691539323862, + "99.999" : 0.012870691539323862, + "99.9999" : 0.012870691539323862, + "100.0" : 0.012870691539323862 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012812670975082256, + 0.012802460597099, + 0.012790897798203157 + ], + [ + 0.012854901113606359, + 0.012870691539323862, + 0.012861680432763912 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0254152102121374, + "scoreError" : 0.12231853119959481, + "scoreConfidence" : [ + 0.9030966790125426, + 1.1477337414117323 + ], + "scorePercentiles" : { + "0.0" : 0.9848525858774867, + "50.0" : 1.025284698354441, + "90.0" : 1.0663285682908625, + "95.0" : 1.0663285682908625, + "99.0" : 1.0663285682908625, + "99.9" : 1.0663285682908625, + "99.99" : 1.0663285682908625, + "99.999" : 1.0663285682908625, + "99.9999" : 1.0663285682908625, + "100.0" : 1.0663285682908625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.986467190175577, + 0.9854915258178951, + 0.9848525858774867 + ], + [ + 1.0663285682908625, + 1.0652491845776972, + 1.064102206533305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011010103944000189, + "scoreError" : 2.0142751264376913E-4, + "scoreConfidence" : [ + 0.010808676431356419, + 0.011211531456643959 + ], + "scorePercentiles" : { + "0.0" : 0.010938657639584692, + "50.0" : 0.011010386150836736, + "90.0" : 0.011081204604787844, + "95.0" : 0.011081204604787844, + "99.0" : 0.011081204604787844, + "99.9" : 0.011081204604787844, + "99.99" : 0.011081204604787844, + "99.999" : 0.011081204604787844, + "99.9999" : 0.011081204604787844, + "100.0" : 0.011081204604787844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011070807794071085, + 0.011074557880911459, + 0.011081204604787844 + ], + [ + 0.01094543123704367, + 0.010938657639584692, + 0.010949964507602385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3788180381553885, + "scoreError" : 0.5232751358365683, + "scoreConfidence" : [ + 2.8555429023188204, + 3.9020931739919567 + ], + "scorePercentiles" : { + "0.0" : 3.2042892459961565, + "50.0" : 3.3762090318307703, + "90.0" : 3.559737034163701, + "95.0" : 3.559737034163701, + "99.0" : 3.559737034163701, + "99.9" : 3.559737034163701, + "99.99" : 3.559737034163701, + "99.999" : 3.559737034163701, + "99.9999" : 3.559737034163701, + "100.0" : 3.559737034163701 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.209370641848524, + 3.2042892459961565, + 3.212086389210019 + ], + [ + 3.559737034163701, + 3.5403316744515214, + 3.5470932432624114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.78863590640011, + "scoreError" : 0.16727359202285144, + "scoreConfidence" : [ + 2.6213623143772584, + 2.9559094984229612 + ], + "scorePercentiles" : { + "0.0" : 2.728995936425648, + "50.0" : 2.79033693146956, + "90.0" : 2.845823271200911, + "95.0" : 2.845823271200911, + "99.0" : 2.845823271200911, + "99.9" : 2.845823271200911, + "99.99" : 2.845823271200911, + "99.999" : 2.845823271200911, + "99.9999" : 2.845823271200911, + "100.0" : 2.845823271200911 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.843148814951677, + 2.845823271200911, + 2.8398878886996024 + ], + [ + 2.7331735528833017, + 2.728995936425648, + 2.7407859742395178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18127349255683864, + "scoreError" : 0.005453197264984373, + "scoreConfidence" : [ + 0.17582029529185428, + 0.186726689821823 + ], + "scorePercentiles" : { + "0.0" : 0.17978007473258428, + "50.0" : 0.18056594887905647, + "90.0" : 0.1848200959931988, + "95.0" : 0.1848200959931988, + "99.0" : 0.1848200959931988, + "99.9" : 0.1848200959931988, + "99.99" : 0.1848200959931988, + "99.999" : 0.1848200959931988, + "99.9999" : 0.1848200959931988, + "100.0" : 0.1848200959931988 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18010049245398552, + 0.17978007473258428, + 0.17984499498246562 + ], + [ + 0.1848200959931988, + 0.18206389187467, + 0.18103140530412745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31766891096410366, + "scoreError" : 0.016605056666604986, + "scoreConfidence" : [ + 0.30106385429749866, + 0.33427396763070866 + ], + "scorePercentiles" : { + "0.0" : 0.3120143881314156, + "50.0" : 0.31761500724974473, + "90.0" : 0.3234757575287078, + "95.0" : 0.3234757575287078, + "99.0" : 0.3234757575287078, + "99.9" : 0.3234757575287078, + "99.99" : 0.3234757575287078, + "99.999" : 0.3234757575287078, + "99.9999" : 0.3234757575287078, + "100.0" : 0.3234757575287078 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3120143881314156, + 0.31245948411185753, + 0.3123332994565557 + ], + [ + 0.3234757575287078, + 0.3227705303876319, + 0.32296000616845366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1432583922352052, + "scoreError" : 0.0027195257904943054, + "scoreConfidence" : [ + 0.1405388664447109, + 0.1459779180256995 + ], + "scorePercentiles" : { + "0.0" : 0.14227658420476047, + "50.0" : 0.14331239219448794, + "90.0" : 0.14423656390988288, + "95.0" : 0.14423656390988288, + "99.0" : 0.14423656390988288, + "99.9" : 0.14423656390988288, + "99.99" : 0.14423656390988288, + "99.999" : 0.14423656390988288, + "99.9999" : 0.14423656390988288, + "100.0" : 0.14423656390988288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14254842202044105, + 0.14227658420476047, + 0.14231086056638678 + ], + [ + 0.14410156034122512, + 0.1440763623685348, + 0.14423656390988288 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3954007548563778, + "scoreError" : 0.009612892665008213, + "scoreConfidence" : [ + 0.3857878621913696, + 0.405013647521386 + ], + "scorePercentiles" : { + "0.0" : 0.3920099395923167, + "50.0" : 0.3951932186072826, + "90.0" : 0.3991148948754789, + "95.0" : 0.3991148948754789, + "99.0" : 0.3991148948754789, + "99.9" : 0.3991148948754789, + "99.99" : 0.3991148948754789, + "99.999" : 0.3991148948754789, + "99.9999" : 0.3991148948754789, + "100.0" : 0.3991148948754789 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3920099395923167, + 0.39239127658322215, + 0.3924817181711146 + ], + [ + 0.3985019808726838, + 0.3991148948754789, + 0.3979047190434506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15457273773458435, + "scoreError" : 0.004487606358980273, + "scoreConfidence" : [ + 0.1500851313756041, + 0.15906034409356462 + ], + "scorePercentiles" : { + "0.0" : 0.15162810465186802, + "50.0" : 0.15528336667650727, + "90.0" : 0.155838691257597, + "95.0" : 0.155838691257597, + "99.0" : 0.155838691257597, + "99.9" : 0.155838691257597, + "99.99" : 0.155838691257597, + "99.999" : 0.155838691257597, + "99.9999" : 0.155838691257597, + "100.0" : 0.155838691257597 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15556203618262426, + 0.15384086096240232, + 0.15162810465186802 + ], + [ + 0.15522280799379123, + 0.155838691257597, + 0.1553439253592233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04791317225830927, + "scoreError" : 0.0014018961247334808, + "scoreConfidence" : [ + 0.04651127613357579, + 0.04931506838304275 + ], + "scorePercentiles" : { + "0.0" : 0.047294115943948126, + "50.0" : 0.04800083165145018, + "90.0" : 0.04862845883663029, + "95.0" : 0.04862845883663029, + "99.0" : 0.04862845883663029, + "99.9" : 0.04862845883663029, + "99.99" : 0.04862845883663029, + "99.999" : 0.04862845883663029, + "99.9999" : 0.04862845883663029, + "100.0" : 0.04862845883663029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04862845883663029, + 0.048058310712552205, + 0.04794335259034816 + ], + [ + 0.04816206464228093, + 0.047294115943948126, + 0.04739273082409588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8674925.832979992, + "scoreError" : 259741.95199489142, + "scoreConfidence" : [ + 8415183.8809851, + 8934667.784974884 + ], + "scorePercentiles" : { + "0.0" : 8588854.972532189, + "50.0" : 8666197.591014167, + "90.0" : 8796064.36939314, + "95.0" : 8796064.36939314, + "99.0" : 8796064.36939314, + "99.9" : 8796064.36939314, + "99.99" : 8796064.36939314, + "99.999" : 8796064.36939314, + "99.9999" : 8796064.36939314, + "100.0" : 8796064.36939314 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8796064.36939314, + 8742092.52972028, + 8733147.452879582 + ], + [ + 8599247.729148753, + 8588854.972532189, + 8590147.944206009 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-05T10:10:46Z-9c358d367dc60598589a88ac1e6ef3b1260f16b8-jdk17.json b/performance-results/2025-06-05T10:10:46Z-9c358d367dc60598589a88ac1e6ef3b1260f16b8-jdk17.json new file mode 100644 index 0000000000..5d4919c314 --- /dev/null +++ b/performance-results/2025-06-05T10:10:46Z-9c358d367dc60598589a88ac1e6ef3b1260f16b8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3576612924458096, + "scoreError" : 0.021753557915125017, + "scoreConfidence" : [ + 3.3359077345306845, + 3.3794148503609347 + ], + "scorePercentiles" : { + "0.0" : 3.3540459133993603, + "50.0" : 3.357204654393395, + "90.0" : 3.3621899475970873, + "95.0" : 3.3621899475970873, + "99.0" : 3.3621899475970873, + "99.9" : 3.3621899475970873, + "99.99" : 3.3621899475970873, + "99.999" : 3.3621899475970873, + "99.9999" : 3.3621899475970873, + "100.0" : 3.3621899475970873 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3572266535483415, + 3.357182655238448 + ], + [ + 3.3540459133993603, + 3.3621899475970873 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7006866709964206, + "scoreError" : 0.02068371391057096, + "scoreConfidence" : [ + 1.6800029570858497, + 1.7213703849069915 + ], + "scorePercentiles" : { + "0.0" : 1.6967987488935095, + "50.0" : 1.7009901377436487, + "90.0" : 1.7039676596048754, + "95.0" : 1.7039676596048754, + "99.0" : 1.7039676596048754, + "99.9" : 1.7039676596048754, + "99.99" : 1.7039676596048754, + "99.999" : 1.7039676596048754, + "99.9999" : 1.7039676596048754, + "100.0" : 1.7039676596048754 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.699461922484166, + 1.7039676596048754 + ], + [ + 1.6967987488935095, + 1.7025183530031314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8516483565783783, + "scoreError" : 0.016101229051777344, + "scoreConfidence" : [ + 0.835547127526601, + 0.8677495856301557 + ], + "scorePercentiles" : { + "0.0" : 0.8494790285376405, + "50.0" : 0.8515494268236375, + "90.0" : 0.8540155441285977, + "95.0" : 0.8540155441285977, + "99.0" : 0.8540155441285977, + "99.9" : 0.8540155441285977, + "99.99" : 0.8540155441285977, + "99.999" : 0.8540155441285977, + "99.9999" : 0.8540155441285977, + "100.0" : 0.8540155441285977 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8495127239048758, + 0.8540155441285977 + ], + [ + 0.8494790285376405, + 0.8535861297423993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.562638218496232, + "scoreError" : 0.025391089586609263, + "scoreConfidence" : [ + 16.537247128909623, + 16.58802930808284 + ], + "scorePercentiles" : { + "0.0" : 16.546847860786983, + "50.0" : 16.562785285798185, + "90.0" : 16.57260199147099, + "95.0" : 16.57260199147099, + "99.0" : 16.57260199147099, + "99.9" : 16.57260199147099, + "99.99" : 16.57260199147099, + "99.999" : 16.57260199147099, + "99.9999" : 16.57260199147099, + "100.0" : 16.57260199147099 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.546847860786983, + 16.57260199147099, + 16.561563530683596 + ], + [ + 16.570040918928267, + 16.560767968194774, + 16.564007040912777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2765.908320493483, + "scoreError" : 111.38626898148688, + "scoreConfidence" : [ + 2654.5220515119963, + 2877.29458947497 + ], + "scorePercentiles" : { + "0.0" : 2728.452946640882, + "50.0" : 2765.6559885780007, + "90.0" : 2804.372783041907, + "95.0" : 2804.372783041907, + "99.0" : 2804.372783041907, + "99.9" : 2804.372783041907, + "99.99" : 2804.372783041907, + "99.999" : 2804.372783041907, + "99.9999" : 2804.372783041907, + "100.0" : 2804.372783041907 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2801.987170513875, + 2800.0535755298024, + 2804.372783041907 + ], + [ + 2729.325045608231, + 2731.258401626199, + 2728.452946640882 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77919.02116995126, + "scoreError" : 2262.0009898416997, + "scoreConfidence" : [ + 75657.02018010955, + 80181.02215979296 + ], + "scorePercentiles" : { + "0.0" : 77156.2772308574, + "50.0" : 77910.54648707797, + "90.0" : 78682.07805159144, + "95.0" : 78682.07805159144, + "99.0" : 78682.07805159144, + "99.9" : 78682.07805159144, + "99.99" : 78682.07805159144, + "99.999" : 78682.07805159144, + "99.9999" : 78682.07805159144, + "100.0" : 78682.07805159144 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78682.07805159144, + 78616.25589001142, + 78666.61750114738 + ], + [ + 77188.06126195536, + 77156.2772308574, + 77204.83708414451 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 364.64907863296025, + "scoreError" : 5.29246948189975, + "scoreConfidence" : [ + 359.3566091510605, + 369.94154811486 + ], + "scorePercentiles" : { + "0.0" : 362.46956542417394, + "50.0" : 364.77088490851816, + "90.0" : 366.52135151852195, + "95.0" : 366.52135151852195, + "99.0" : 366.52135151852195, + "99.9" : 366.52135151852195, + "99.99" : 366.52135151852195, + "99.999" : 366.52135151852195, + "99.9999" : 366.52135151852195, + "100.0" : 366.52135151852195 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.1674983869752, + 366.3574853861649, + 366.52135151852195 + ], + [ + 362.46956542417394, + 363.0042996518647, + 363.3742714300611 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.53510822932536, + "scoreError" : 6.621341450475171, + "scoreConfidence" : [ + 107.91376677885019, + 121.15644967980053 + ], + "scorePercentiles" : { + "0.0" : 111.96423207436787, + "50.0" : 114.51590385439837, + "90.0" : 117.01965949746193, + "95.0" : 117.01965949746193, + "99.0" : 117.01965949746193, + "99.9" : 117.01965949746193, + "99.99" : 117.01965949746193, + "99.999" : 117.01965949746193, + "99.9999" : 117.01965949746193, + "100.0" : 117.01965949746193 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.41270865217597, + 116.58373793258814, + 117.01965949746193 + ], + [ + 111.96423207436787, + 112.61909905662078, + 112.61121216273737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061193585134175894, + "scoreError" : 8.593602311481436E-4, + "scoreConfidence" : [ + 0.06033422490302775, + 0.06205294536532404 + ], + "scorePercentiles" : { + "0.0" : 0.06089888648612439, + "50.0" : 0.06117957348277493, + "90.0" : 0.061501597672802416, + "95.0" : 0.061501597672802416, + "99.0" : 0.061501597672802416, + "99.9" : 0.061501597672802416, + "99.99" : 0.061501597672802416, + "99.999" : 0.061501597672802416, + "99.9999" : 0.061501597672802416, + "100.0" : 0.061501597672802416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06142937817815481, + 0.061501597672802416, + 0.06148602946981389 + ], + [ + 0.060915850210764844, + 0.06092976878739505, + 0.06089888648612439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6406987535314556E-4, + "scoreError" : 4.1000923063178546E-5, + "scoreConfidence" : [ + 3.23068952289967E-4, + 4.050707984163241E-4 + ], + "scorePercentiles" : { + "0.0" : 3.505447480146687E-4, + "50.0" : 3.640375832678535E-4, + "90.0" : 3.7774011552205736E-4, + "95.0" : 3.7774011552205736E-4, + "99.0" : 3.7774011552205736E-4, + "99.9" : 3.7774011552205736E-4, + "99.99" : 3.7774011552205736E-4, + "99.999" : 3.7774011552205736E-4, + "99.9999" : 3.7774011552205736E-4, + "100.0" : 3.7774011552205736E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.771203952946018E-4, + 3.773859913654269E-4, + 3.7774011552205736E-4 + ], + [ + 3.506732306810138E-4, + 3.509547712411052E-4, + 3.505447480146687E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12203659209549732, + "scoreError" : 0.0025233851086143644, + "scoreConfidence" : [ + 0.11951320698688295, + 0.12455997720411169 + ], + "scorePercentiles" : { + "0.0" : 0.12117420249130588, + "50.0" : 0.12204650191068676, + "90.0" : 0.12288566790778835, + "95.0" : 0.12288566790778835, + "99.0" : 0.12288566790778835, + "99.9" : 0.12288566790778835, + "99.99" : 0.12288566790778835, + "99.999" : 0.12288566790778835, + "99.9999" : 0.12288566790778835, + "100.0" : 0.12288566790778835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12121104204695587, + 0.12117420249130588, + 0.12126178452248144 + ], + [ + 0.12288566790778835, + 0.12285563630556033, + 0.12283121929889208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012768508534902322, + "scoreError" : 1.0192026186285195E-4, + "scoreConfidence" : [ + 0.012666588273039469, + 0.012870428796765174 + ], + "scorePercentiles" : { + "0.0" : 0.012732495483256537, + "50.0" : 0.012770634060230934, + "90.0" : 0.012802965638558967, + "95.0" : 0.012802965638558967, + "99.0" : 0.012802965638558967, + "99.9" : 0.012802965638558967, + "99.99" : 0.012802965638558967, + "99.999" : 0.012802965638558967, + "99.9999" : 0.012802965638558967, + "100.0" : 0.012802965638558967 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01273297782834122, + 0.012740875102722055, + 0.012732495483256537 + ], + [ + 0.012800393017739815, + 0.012801344138795334, + 0.012802965638558967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9970706969896166, + "scoreError" : 0.01956761240766671, + "scoreConfidence" : [ + 0.9775030845819499, + 1.0166383093972833 + ], + "scorePercentiles" : { + "0.0" : 0.990227232894346, + "50.0" : 0.9967368204025804, + "90.0" : 1.0039164215017065, + "95.0" : 1.0039164215017065, + "99.0" : 1.0039164215017065, + "99.9" : 1.0039164215017065, + "99.99" : 1.0039164215017065, + "99.999" : 1.0039164215017065, + "99.9999" : 1.0039164215017065, + "100.0" : 1.0039164215017065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.990227232894346, + 0.9910560289366762, + 0.9908927506192411 + ], + [ + 1.0039141361172454, + 1.0039164215017065, + 1.0024176118684844 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010718515281552434, + "scoreError" : 0.001243442240400771, + "scoreConfidence" : [ + 0.009475073041151662, + 0.011961957521953205 + ], + "scorePercentiles" : { + "0.0" : 0.010307293212809598, + "50.0" : 0.010719685368391728, + "90.0" : 0.011125491135398773, + "95.0" : 0.011125491135398773, + "99.0" : 0.011125491135398773, + "99.9" : 0.011125491135398773, + "99.99" : 0.011125491135398773, + "99.999" : 0.011125491135398773, + "99.9999" : 0.011125491135398773, + "100.0" : 0.011125491135398773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010307293212809598, + 0.01031858877694635, + 0.010315347357063577 + ], + [ + 0.011125491135398773, + 0.0111235892472592, + 0.011120781959837107 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.070055183460948, + "scoreError" : 0.08136554834042345, + "scoreConfidence" : [ + 2.9886896351205245, + 3.151420731801372 + ], + "scorePercentiles" : { + "0.0" : 3.03781039854192, + "50.0" : 3.069473719279751, + "90.0" : 3.10023378983261, + "95.0" : 3.10023378983261, + "99.0" : 3.10023378983261, + "99.9" : 3.10023378983261, + "99.99" : 3.10023378983261, + "99.999" : 3.10023378983261, + "99.9999" : 3.10023378983261, + "100.0" : 3.10023378983261 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0965967789473683, + 3.10023378983261, + 3.0919513337453646 + ], + [ + 3.03781039854192, + 3.046996104814138, + 3.0467426948842875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6826081257481817, + "scoreError" : 0.08764445560548972, + "scoreConfidence" : [ + 2.594963670142692, + 2.7702525813536716 + ], + "scorePercentiles" : { + "0.0" : 2.6482670503044745, + "50.0" : 2.684230876499164, + "90.0" : 2.713629004069452, + "95.0" : 2.713629004069452, + "99.0" : 2.713629004069452, + "99.9" : 2.713629004069452, + "99.99" : 2.713629004069452, + "99.999" : 2.713629004069452, + "99.9999" : 2.713629004069452, + "100.0" : 2.713629004069452 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.660365699654163, + 2.6482670503044745, + 2.654375671974522 + ], + [ + 2.710915275142315, + 2.713629004069452, + 2.7080960533441645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18224116251614567, + "scoreError" : 0.010187895284626708, + "scoreConfidence" : [ + 0.17205326723151895, + 0.19242905780077238 + ], + "scorePercentiles" : { + "0.0" : 0.17880543652553282, + "50.0" : 0.18223486526138216, + "90.0" : 0.18578910755025452, + "95.0" : 0.18578910755025452, + "99.0" : 0.18578910755025452, + "99.9" : 0.18578910755025452, + "99.99" : 0.18578910755025452, + "99.999" : 0.18578910755025452, + "99.9999" : 0.18578910755025452, + "100.0" : 0.18578910755025452 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18578910755025452, + 0.18533132048407125, + 0.18553977505658836 + ], + [ + 0.17884292544173402, + 0.17913841003869305, + 0.17880543652553282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.314596113979403, + "scoreError" : 0.011400531090064723, + "scoreConfidence" : [ + 0.3031955828893383, + 0.32599664506946774 + ], + "scorePercentiles" : { + "0.0" : 0.30884754865808084, + "50.0" : 0.31516173638371325, + "90.0" : 0.3199233938191823, + "95.0" : 0.3199233938191823, + "99.0" : 0.3199233938191823, + "99.9" : 0.3199233938191823, + "99.99" : 0.3199233938191823, + "99.999" : 0.3199233938191823, + "99.9999" : 0.3199233938191823, + "100.0" : 0.3199233938191823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3162245512585378, + 0.30884754865808084, + 0.31409892150888874 + ], + [ + 0.3199233938191823, + 0.3172466377767908, + 0.3112356308549376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14129161946283383, + "scoreError" : 0.003717121071394576, + "scoreConfidence" : [ + 0.13757449839143926, + 0.1450087405342284 + ], + "scorePercentiles" : { + "0.0" : 0.14001808822335168, + "50.0" : 0.14125736705007447, + "90.0" : 0.14256779541793194, + "95.0" : 0.14256779541793194, + "99.0" : 0.14256779541793194, + "99.9" : 0.14256779541793194, + "99.99" : 0.14256779541793194, + "99.999" : 0.14256779541793194, + "99.9999" : 0.14256779541793194, + "100.0" : 0.14256779541793194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14256779541793194, + 0.1425408141739242, + 0.14239137337320235 + ], + [ + 0.14012336072694662, + 0.14001808822335168, + 0.14010828486164623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39755571915728455, + "scoreError" : 0.011955348665881453, + "scoreConfidence" : [ + 0.3856003704914031, + 0.409511067823166 + ], + "scorePercentiles" : { + "0.0" : 0.3922925302840107, + "50.0" : 0.39907157998522547, + "90.0" : 0.4013064882619688, + "95.0" : 0.4013064882619688, + "99.0" : 0.4013064882619688, + "99.9" : 0.4013064882619688, + "99.99" : 0.4013064882619688, + "99.999" : 0.4013064882619688, + "99.9999" : 0.4013064882619688, + "100.0" : 0.4013064882619688 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40110979957484355, + 0.4008246898472885, + 0.4013064882619688 + ], + [ + 0.3973184701231625, + 0.3924823368524333, + 0.3922925302840107 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1636868781485565, + "scoreError" : 0.005189545134376114, + "scoreConfidence" : [ + 0.1584973330141804, + 0.16887642328293262 + ], + "scorePercentiles" : { + "0.0" : 0.16157942053643562, + "50.0" : 0.163977986407841, + "90.0" : 0.16566474602412035, + "95.0" : 0.16566474602412035, + "99.0" : 0.16566474602412035, + "99.9" : 0.16566474602412035, + "99.99" : 0.16566474602412035, + "99.999" : 0.16566474602412035, + "99.9999" : 0.16566474602412035, + "100.0" : 0.16566474602412035 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16566474602412035, + 0.16505563239638865, + 0.16290034041929335 + ], + [ + 0.1652179023592387, + 0.16170322715586244, + 0.16157942053643562 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04821899877841073, + "scoreError" : 5.210557666998475E-4, + "scoreConfidence" : [ + 0.04769794301171088, + 0.04874005454511058 + ], + "scorePercentiles" : { + "0.0" : 0.048077048860107115, + "50.0" : 0.04815326076810051, + "90.0" : 0.04857906723244257, + "95.0" : 0.04857906723244257, + "99.0" : 0.04857906723244257, + "99.9" : 0.04857906723244257, + "99.99" : 0.04857906723244257, + "99.999" : 0.04857906723244257, + "99.9999" : 0.04857906723244257, + "100.0" : 0.04857906723244257 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04824663094209996, + 0.04813967744979108, + 0.048077048860107115 + ], + [ + 0.04857906723244257, + 0.04810472409961373, + 0.04816684408640994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8530017.971034542, + "scoreError" : 542943.2522141851, + "scoreConfidence" : [ + 7987074.718820357, + 9072961.223248728 + ], + "scorePercentiles" : { + "0.0" : 8342149.070058382, + "50.0" : 8524797.408754895, + "90.0" : 8766196.874671342, + "95.0" : 8766196.874671342, + "99.0" : 8766196.874671342, + "99.9" : 8766196.874671342, + "99.99" : 8766196.874671342, + "99.999" : 8766196.874671342, + "99.9999" : 8766196.874671342, + "100.0" : 8766196.874671342 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8343192.874895747, + 8384761.862531434, + 8342149.070058382 + ], + [ + 8766196.874671342, + 8664832.954978354, + 8678974.189071987 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-06T01:04:20Z-b96a9ea7c55ef11c8aa72b3f71f2348f3f234d9d-jdk17.json b/performance-results/2025-06-06T01:04:20Z-b96a9ea7c55ef11c8aa72b3f71f2348f3f234d9d-jdk17.json new file mode 100644 index 0000000000..24d03d625d --- /dev/null +++ b/performance-results/2025-06-06T01:04:20Z-b96a9ea7c55ef11c8aa72b3f71f2348f3f234d9d-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3466312091896038, + "scoreError" : 0.02325363858737208, + "scoreConfidence" : [ + 3.3233775706022315, + 3.369884847776976 + ], + "scorePercentiles" : { + "0.0" : 3.3433205374816457, + "50.0" : 3.346584927983306, + "90.0" : 3.3500344433101574, + "95.0" : 3.3500344433101574, + "99.0" : 3.3500344433101574, + "99.9" : 3.3500344433101574, + "99.99" : 3.3500344433101574, + "99.999" : 3.3500344433101574, + "99.9999" : 3.3500344433101574, + "100.0" : 3.3500344433101574 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3433205374816457, + 3.3494398659255946 + ], + [ + 3.343729990041018, + 3.3500344433101574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.681302980958336, + "scoreError" : 0.020262622986746148, + "scoreConfidence" : [ + 1.6610403579715898, + 1.7015656039450822 + ], + "scorePercentiles" : { + "0.0" : 1.6768774779337476, + "50.0" : 1.6820306998510288, + "90.0" : 1.6842730461975384, + "95.0" : 1.6842730461975384, + "99.0" : 1.6842730461975384, + "99.9" : 1.6842730461975384, + "99.99" : 1.6842730461975384, + "99.999" : 1.6842730461975384, + "99.9999" : 1.6842730461975384, + "100.0" : 1.6842730461975384 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6768774779337476, + 1.681904923141496 + ], + [ + 1.6821564765605617, + 1.6842730461975384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.851427308039495, + "scoreError" : 0.015419533182996402, + "scoreConfidence" : [ + 0.8360077748564986, + 0.8668468412224913 + ], + "scorePercentiles" : { + "0.0" : 0.8490141431345646, + "50.0" : 0.8514160749862232, + "90.0" : 0.8538629390509689, + "95.0" : 0.8538629390509689, + "99.0" : 0.8538629390509689, + "99.9" : 0.8538629390509689, + "99.99" : 0.8538629390509689, + "99.999" : 0.8538629390509689, + "99.9999" : 0.8538629390509689, + "100.0" : 0.8538629390509689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8497842370581803, + 0.8538629390509689 + ], + [ + 0.8490141431345646, + 0.8530479129142661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.417855075772422, + "scoreError" : 0.1959738179567229, + "scoreConfidence" : [ + 16.2218812578157, + 16.613828893729146 + ], + "scorePercentiles" : { + "0.0" : 16.338509927728595, + "50.0" : 16.418416977981718, + "90.0" : 16.49057064089824, + "95.0" : 16.49057064089824, + "99.0" : 16.49057064089824, + "99.9" : 16.49057064089824, + "99.99" : 16.49057064089824, + "99.999" : 16.49057064089824, + "99.9999" : 16.49057064089824, + "100.0" : 16.49057064089824 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.368945991606786, + 16.338509927728595, + 16.357653141749143 + ], + [ + 16.48356278829511, + 16.46788796435665, + 16.49057064089824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2793.858268612083, + "scoreError" : 104.14067876254514, + "scoreConfidence" : [ + 2689.717589849538, + 2897.998947374628 + ], + "scorePercentiles" : { + "0.0" : 2757.431112427251, + "50.0" : 2794.4432551862537, + "90.0" : 2828.669220889821, + "95.0" : 2828.669220889821, + "99.0" : 2828.669220889821, + "99.9" : 2828.669220889821, + "99.99" : 2828.669220889821, + "99.999" : 2828.669220889821, + "99.9999" : 2828.669220889821, + "100.0" : 2828.669220889821 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2760.0606472069103, + 2757.431112427251, + 2762.4929023097466 + ], + [ + 2828.102120776009, + 2826.393608062761, + 2828.669220889821 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76573.32681249721, + "scoreError" : 140.0676958431153, + "scoreConfidence" : [ + 76433.2591166541, + 76713.39450834032 + ], + "scorePercentiles" : { + "0.0" : 76525.1390095577, + "50.0" : 76567.94055104232, + "90.0" : 76661.03154981975, + "95.0" : 76661.03154981975, + "99.0" : 76661.03154981975, + "99.9" : 76661.03154981975, + "99.99" : 76661.03154981975, + "99.999" : 76661.03154981975, + "99.9999" : 76661.03154981975, + "100.0" : 76661.03154981975 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76588.08277240224, + 76661.03154981975, + 76529.8264411189 + ], + [ + 76525.1390095577, + 76555.8465860446, + 76580.03451604005 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.16476239814307, + "scoreError" : 2.93797727784493, + "scoreConfidence" : [ + 348.22678512029813, + 354.102739675988 + ], + "scorePercentiles" : { + "0.0" : 349.55208053447325, + "50.0" : 351.21582346515845, + "90.0" : 352.50954287871144, + "95.0" : 352.50954287871144, + "99.0" : 352.50954287871144, + "99.9" : 352.50954287871144, + "99.99" : 352.50954287871144, + "99.999" : 352.50954287871144, + "99.9999" : 352.50954287871144, + "100.0" : 352.50954287871144 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 352.50954287871144, + 350.6647853305287, + 351.6522242826524 + ], + [ + 349.55208053447325, + 351.83051871482854, + 350.77942264766455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.53599302908223, + "scoreError" : 1.0593264794417006, + "scoreConfidence" : [ + 115.47666654964054, + 117.59531950852393 + ], + "scorePercentiles" : { + "0.0" : 116.0898386215985, + "50.0" : 116.50513092656439, + "90.0" : 117.12753593430179, + "95.0" : 117.12753593430179, + "99.0" : 117.12753593430179, + "99.9" : 117.12753593430179, + "99.99" : 117.12753593430179, + "99.999" : 117.12753593430179, + "99.9999" : 117.12753593430179, + "100.0" : 117.12753593430179 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.719967709325, + 116.67421204727998, + 117.12753593430179 + ], + [ + 116.0898386215985, + 116.33604980584882, + 116.26835405613933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06159391448048709, + "scoreError" : 8.615057153433739E-4, + "scoreConfidence" : [ + 0.060732408765143714, + 0.06245542019583046 + ], + "scorePercentiles" : { + "0.0" : 0.061182862646607154, + "50.0" : 0.061616163128566014, + "90.0" : 0.0618983784484733, + "95.0" : 0.0618983784484733, + "99.0" : 0.0618983784484733, + "99.9" : 0.0618983784484733, + "99.99" : 0.0618983784484733, + "99.999" : 0.0618983784484733, + "99.9999" : 0.0618983784484733, + "100.0" : 0.0618983784484733 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061182862646607154, + 0.06140608510742817, + 0.061380952234225385 + ], + [ + 0.06182624114970386, + 0.06186896729648465, + 0.0618983784484733 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.698584289572545E-4, + "scoreError" : 1.1954735914294045E-5, + "scoreConfidence" : [ + 3.579036930429605E-4, + 3.8181316487154854E-4 + ], + "scorePercentiles" : { + "0.0" : 3.657335809070759E-4, + "50.0" : 3.697422832276202E-4, + "90.0" : 3.742179012609938E-4, + "95.0" : 3.742179012609938E-4, + "99.0" : 3.742179012609938E-4, + "99.9" : 3.742179012609938E-4, + "99.99" : 3.742179012609938E-4, + "99.999" : 3.742179012609938E-4, + "99.9999" : 3.742179012609938E-4, + "100.0" : 3.742179012609938E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.742179012609938E-4, + 3.733859061265959E-4, + 3.7361724487490575E-4 + ], + [ + 3.6609728024531113E-4, + 3.657335809070759E-4, + 3.6609866032864444E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12435993343202244, + "scoreError" : 0.0027096101417100277, + "scoreConfidence" : [ + 0.1216503232903124, + 0.12706954357373246 + ], + "scorePercentiles" : { + "0.0" : 0.12326425689034612, + "50.0" : 0.12451499031533848, + "90.0" : 0.1253072608417808, + "95.0" : 0.1253072608417808, + "99.0" : 0.1253072608417808, + "99.9" : 0.1253072608417808, + "99.99" : 0.1253072608417808, + "99.999" : 0.1253072608417808, + "99.9999" : 0.1253072608417808, + "100.0" : 0.1253072608417808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12397420041158386, + 0.12329813180282594, + 0.12326425689034612 + ], + [ + 0.1253072608417808, + 0.12525997042650466, + 0.1250557802190931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012959620700319223, + "scoreError" : 3.3376210635461574E-4, + "scoreConfidence" : [ + 0.012625858593964607, + 0.013293382806673838 + ], + "scorePercentiles" : { + "0.0" : 0.012841967672134262, + "50.0" : 0.01295822928992828, + "90.0" : 0.013079059918309266, + "95.0" : 0.013079059918309266, + "99.0" : 0.013079059918309266, + "99.9" : 0.013079059918309266, + "99.99" : 0.013079059918309266, + "99.999" : 0.013079059918309266, + "99.9999" : 0.013079059918309266, + "100.0" : 0.013079059918309266 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013060326159383665, + 0.013079059918309266, + 0.013064694924820134 + ], + [ + 0.012856132420472894, + 0.012855543106795118, + 0.012841967672134262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0182778966801935, + "scoreError" : 0.060600327826022204, + "scoreConfidence" : [ + 0.9576775688541713, + 1.0788782245062158 + ], + "scorePercentiles" : { + "0.0" : 0.9963874177543091, + "50.0" : 1.017808907528047, + "90.0" : 1.0405659978150037, + "95.0" : 1.0405659978150037, + "99.0" : 1.0405659978150037, + "99.9" : 1.0405659978150037, + "99.99" : 1.0405659978150037, + "99.999" : 1.0405659978150037, + "99.9999" : 1.0405659978150037, + "100.0" : 1.0405659978150037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0358437097876747, + 1.0405659978150037, + 1.0373637154859454 + ], + [ + 0.9963874177543091, + 0.999732433969809, + 0.9997741052684195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010720676981911176, + "scoreError" : 2.0727623449036842E-4, + "scoreConfidence" : [ + 0.010513400747420807, + 0.010927953216401545 + ], + "scorePercentiles" : { + "0.0" : 0.010646202747070246, + "50.0" : 0.010718251974902218, + "90.0" : 0.01079558140403528, + "95.0" : 0.01079558140403528, + "99.0" : 0.01079558140403528, + "99.9" : 0.01079558140403528, + "99.99" : 0.01079558140403528, + "99.999" : 0.01079558140403528, + "99.9999" : 0.01079558140403528, + "100.0" : 0.01079558140403528 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010778818299402438, + 0.010789231533088639, + 0.01079558140403528 + ], + [ + 0.010646202747070246, + 0.010657685650401998, + 0.010656542257468453 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2382184355428225, + "scoreError" : 0.15560106018909467, + "scoreConfidence" : [ + 3.082617375353728, + 3.393819495731917 + ], + "scorePercentiles" : { + "0.0" : 3.1803714348378893, + "50.0" : 3.2414223156782525, + "90.0" : 3.29081365, + "95.0" : 3.29081365, + "99.0" : 3.29081365, + "99.9" : 3.29081365, + "99.99" : 3.29081365, + "99.999" : 3.29081365, + "99.9999" : 3.29081365, + "100.0" : 3.29081365 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.186944449330784, + 3.196028722683706, + 3.1803714348378893 + ], + [ + 3.29081365, + 3.2883364477317554, + 3.286815908672799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8668854944912154, + "scoreError" : 0.0497693409703118, + "scoreConfidence" : [ + 2.8171161535209035, + 2.9166548354615274 + ], + "scorePercentiles" : { + "0.0" : 2.844454523037543, + "50.0" : 2.8710284255860596, + "90.0" : 2.8850163766945487, + "95.0" : 2.8850163766945487, + "99.0" : 2.8850163766945487, + "99.9" : 2.8850163766945487, + "99.99" : 2.8850163766945487, + "99.999" : 2.8850163766945487, + "99.9999" : 2.8850163766945487, + "100.0" : 2.8850163766945487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8850163766945487, + 2.878910797063903, + 2.881871798617113 + ], + [ + 2.8631460541082165, + 2.847913417425968, + 2.844454523037543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17934533372583464, + "scoreError" : 0.010453566215828845, + "scoreConfidence" : [ + 0.16889176751000579, + 0.1897988999416635 + ], + "scorePercentiles" : { + "0.0" : 0.17593362551679245, + "50.0" : 0.1790673041792642, + "90.0" : 0.18375777786148728, + "95.0" : 0.18375777786148728, + "99.0" : 0.18375777786148728, + "99.9" : 0.18375777786148728, + "99.99" : 0.18375777786148728, + "99.999" : 0.18375777786148728, + "99.9999" : 0.18375777786148728, + "100.0" : 0.18375777786148728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17607055705406977, + 0.17594808012527272, + 0.17593362551679245 + ], + [ + 0.18375777786148728, + 0.18229791049292693, + 0.18206405130445866 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32150134630822297, + "scoreError" : 0.02495639820464376, + "scoreConfidence" : [ + 0.29654494810357923, + 0.3464577445128667 + ], + "scorePercentiles" : { + "0.0" : 0.31339818646776774, + "50.0" : 0.32063907850280193, + "90.0" : 0.33303493392833355, + "95.0" : 0.33303493392833355, + "99.0" : 0.33303493392833355, + "99.9" : 0.33303493392833355, + "99.99" : 0.33303493392833355, + "99.999" : 0.33303493392833355, + "99.9999" : 0.33303493392833355, + "100.0" : 0.33303493392833355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33303493392833355, + 0.32747483568013624, + 0.3277526436156266 + ], + [ + 0.31380332132546757, + 0.31354415683200604, + 0.31339818646776774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14421020207516558, + "scoreError" : 4.224752422180992E-4, + "scoreConfidence" : [ + 0.14378772683294747, + 0.1446326773173837 + ], + "scorePercentiles" : { + "0.0" : 0.14404212790781418, + "50.0" : 0.14422801717342568, + "90.0" : 0.14444164534253895, + "95.0" : 0.14444164534253895, + "99.0" : 0.14444164534253895, + "99.9" : 0.14444164534253895, + "99.99" : 0.14444164534253895, + "99.999" : 0.14444164534253895, + "99.9999" : 0.14444164534253895, + "100.0" : 0.14444164534253895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14444164534253895, + 0.1442585996162779, + 0.14404212790781418 + ], + [ + 0.144270860522823, + 0.14419743473057345, + 0.14405054433096615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39102399151392714, + "scoreError" : 0.0254313169814734, + "scoreConfidence" : [ + 0.36559267453245375, + 0.4164553084954005 + ], + "scorePercentiles" : { + "0.0" : 0.3822442730295849, + "50.0" : 0.39121009811639296, + "90.0" : 0.3993929591437358, + "95.0" : 0.3993929591437358, + "99.0" : 0.3993929591437358, + "99.9" : 0.3993929591437358, + "99.99" : 0.3993929591437358, + "99.999" : 0.3993929591437358, + "99.9999" : 0.3993929591437358, + "100.0" : 0.3993929591437358 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3827909746602871, + 0.3832149417918455, + 0.3822442730295849 + ], + [ + 0.39920525444094046, + 0.3992955460171691, + 0.3993929591437358 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15335932327862026, + "scoreError" : 0.0025434730042375284, + "scoreConfidence" : [ + 0.15081585027438274, + 0.15590279628285778 + ], + "scorePercentiles" : { + "0.0" : 0.15233132269071412, + "50.0" : 0.1534542217455895, + "90.0" : 0.15431652338626298, + "95.0" : 0.15431652338626298, + "99.0" : 0.15431652338626298, + "99.9" : 0.15431652338626298, + "99.99" : 0.15431652338626298, + "99.999" : 0.15431652338626298, + "99.9999" : 0.15431652338626298, + "100.0" : 0.15431652338626298 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15283995378266851, + 0.15233132269071412, + 0.152474982450523 + ], + [ + 0.1540684897085105, + 0.15431652338626298, + 0.15412466765304236 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047100241875724556, + "scoreError" : 0.0010409544009827613, + "scoreConfidence" : [ + 0.04605928747474179, + 0.04814119627670732 + ], + "scorePercentiles" : { + "0.0" : 0.046733874016851966, + "50.0" : 0.047111543056984465, + "90.0" : 0.04745215932751896, + "95.0" : 0.04745215932751896, + "99.0" : 0.04745215932751896, + "99.9" : 0.04745215932751896, + "99.99" : 0.04745215932751896, + "99.999" : 0.04745215932751896, + "99.9999" : 0.04745215932751896, + "100.0" : 0.04745215932751896 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04744072937431509, + 0.04745215932751896, + 0.04742234250310612 + ], + [ + 0.046733874016851966, + 0.04675160242169238, + 0.04680074361086282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8546608.906856257, + "scoreError" : 359602.9147876238, + "scoreConfidence" : [ + 8187005.992068633, + 8906211.821643881 + ], + "scorePercentiles" : { + "0.0" : 8409282.046218487, + "50.0" : 8506915.41147989, + "90.0" : 8701880.559130434, + "95.0" : 8701880.559130434, + "99.0" : 8701880.559130434, + "99.9" : 8701880.559130434, + "99.99" : 8701880.559130434, + "99.999" : 8701880.559130434, + "99.9999" : 8701880.559130434, + "100.0" : 8701880.559130434 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8461005.928087987, + 8454849.97717667, + 8409282.046218487 + ], + [ + 8699810.035652174, + 8701880.559130434, + 8552824.894871796 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-06T04:49:08Z-52eefcdcd13f09c48da85fa4590755e4cba6a5cc-jdk17.json b/performance-results/2025-06-06T04:49:08Z-52eefcdcd13f09c48da85fa4590755e4cba6a5cc-jdk17.json new file mode 100644 index 0000000000..7f02f54887 --- /dev/null +++ b/performance-results/2025-06-06T04:49:08Z-52eefcdcd13f09c48da85fa4590755e4cba6a5cc-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.34855108705949, + "scoreError" : 0.007578080085977567, + "scoreConfidence" : [ + 3.3409730069735124, + 3.3561291671454674 + ], + "scorePercentiles" : { + "0.0" : 3.3472065251581262, + "50.0" : 3.348714773534019, + "90.0" : 3.3495682760117966, + "95.0" : 3.3495682760117966, + "99.0" : 3.3495682760117966, + "99.9" : 3.3495682760117966, + "99.99" : 3.3495682760117966, + "99.999" : 3.3495682760117966, + "99.9999" : 3.3495682760117966, + "100.0" : 3.3495682760117966 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3479306549724765, + 3.3495682760117966 + ], + [ + 3.3472065251581262, + 3.349498892095561 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6896217438285726, + "scoreError" : 0.023925104779922667, + "scoreConfidence" : [ + 1.6656966390486498, + 1.7135468486084953 + ], + "scorePercentiles" : { + "0.0" : 1.6845287676157337, + "50.0" : 1.6903555106174297, + "90.0" : 1.6932471864636967, + "95.0" : 1.6932471864636967, + "99.0" : 1.6932471864636967, + "99.9" : 1.6932471864636967, + "99.99" : 1.6932471864636967, + "99.999" : 1.6932471864636967, + "99.9999" : 1.6932471864636967, + "100.0" : 1.6932471864636967 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.69105014669201, + 1.6932471864636967 + ], + [ + 1.6845287676157337, + 1.6896608745428494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8518611329425024, + "scoreError" : 0.017012329720268227, + "scoreConfidence" : [ + 0.8348488032222342, + 0.8688734626627707 + ], + "scorePercentiles" : { + "0.0" : 0.8493988589471697, + "50.0" : 0.851792395411735, + "90.0" : 0.8544608819993701, + "95.0" : 0.8544608819993701, + "99.0" : 0.8544608819993701, + "99.9" : 0.8544608819993701, + "99.99" : 0.8544608819993701, + "99.999" : 0.8544608819993701, + "99.9999" : 0.8544608819993701, + "100.0" : 0.8544608819993701 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8537876427894755, + 0.8544608819993701 + ], + [ + 0.8493988589471697, + 0.8497971480339945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.161780121402703, + "scoreError" : 0.08392981125066477, + "scoreConfidence" : [ + 16.077850310152037, + 16.24570993265337 + ], + "scorePercentiles" : { + "0.0" : 16.121393605858362, + "50.0" : 16.16060210953796, + "90.0" : 16.20653245283835, + "95.0" : 16.20653245283835, + "99.0" : 16.20653245283835, + "99.9" : 16.20653245283835, + "99.99" : 16.20653245283835, + "99.999" : 16.20653245283835, + "99.9999" : 16.20653245283835, + "100.0" : 16.20653245283835 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.14274371134374, + 16.121393605858362, + 16.17035327043407 + ], + [ + 16.17880673929986, + 16.20653245283835, + 16.15085094864185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2728.5457140911562, + "scoreError" : 226.49558301940226, + "scoreConfidence" : [ + 2502.050131071754, + 2955.0412971105584 + ], + "scorePercentiles" : { + "0.0" : 2650.354042990703, + "50.0" : 2726.5980865679508, + "90.0" : 2807.868510164806, + "95.0" : 2807.868510164806, + "99.0" : 2807.868510164806, + "99.9" : 2807.868510164806, + "99.99" : 2807.868510164806, + "99.999" : 2807.868510164806, + "99.9999" : 2807.868510164806, + "100.0" : 2807.868510164806 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2804.2784149498893, + 2807.868510164806, + 2794.2216386558225 + ], + [ + 2655.577143305638, + 2658.974534480079, + 2650.354042990703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77111.36449958193, + "scoreError" : 788.2067277091307, + "scoreConfidence" : [ + 76323.15777187281, + 77899.57122729106 + ], + "scorePercentiles" : { + "0.0" : 76814.64174004368, + "50.0" : 77112.58092512525, + "90.0" : 77382.79112266192, + "95.0" : 77382.79112266192, + "99.0" : 77382.79112266192, + "99.9" : 77382.79112266192, + "99.99" : 77382.79112266192, + "99.999" : 77382.79112266192, + "99.9999" : 77382.79112266192, + "100.0" : 77382.79112266192 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76876.3495923097, + 76814.64174004368, + 76876.37885874725 + ], + [ + 77348.78299150325, + 77382.79112266192, + 77369.2426922258 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 365.39982602139133, + "scoreError" : 17.10703644662201, + "scoreConfidence" : [ + 348.2927895747693, + 382.50686246801337 + ], + "scorePercentiles" : { + "0.0" : 359.52730181788866, + "50.0" : 365.3167582268056, + "90.0" : 371.25271161160794, + "95.0" : 371.25271161160794, + "99.0" : 371.25271161160794, + "99.9" : 371.25271161160794, + "99.99" : 371.25271161160794, + "99.999" : 371.25271161160794, + "99.9999" : 371.25271161160794, + "100.0" : 371.25271161160794 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.02276222868704, + 359.52730181788866, + 359.9584597498653 + ], + [ + 371.25271161160794, + 371.0269664953746, + 370.6107542249241 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.87664467998341, + "scoreError" : 4.209807610016364, + "scoreConfidence" : [ + 112.66683706996704, + 121.08645228999978 + ], + "scorePercentiles" : { + "0.0" : 115.27136442597494, + "50.0" : 116.90865121152463, + "90.0" : 118.41025780105362, + "95.0" : 118.41025780105362, + "99.0" : 118.41025780105362, + "99.9" : 118.41025780105362, + "99.99" : 118.41025780105362, + "99.999" : 118.41025780105362, + "99.9999" : 118.41025780105362, + "100.0" : 118.41025780105362 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.27136442597494, + 115.47345997256967, + 115.81811441572754 + ], + [ + 118.41025780105362, + 117.99918800732172, + 118.28748345725296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06101413041775949, + "scoreError" : 5.586329308800986E-4, + "scoreConfidence" : [ + 0.060455497486879395, + 0.06157276334863959 + ], + "scorePercentiles" : { + "0.0" : 0.06068102533995959, + "50.0" : 0.061039908935551265, + "90.0" : 0.06124316624205382, + "95.0" : 0.06124316624205382, + "99.0" : 0.06124316624205382, + "99.9" : 0.06124316624205382, + "99.99" : 0.06124316624205382, + "99.999" : 0.06124316624205382, + "99.9999" : 0.06124316624205382, + "100.0" : 0.06124316624205382 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06124316624205382, + 0.061165142604621574, + 0.061064183086636865 + ], + [ + 0.06068102533995959, + 0.061015634784465665, + 0.06091563044881947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6557233157775586E-4, + "scoreError" : 1.8172014387358202E-5, + "scoreConfidence" : [ + 3.4740031719039763E-4, + 3.837443459651141E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5930529210687794E-4, + "50.0" : 3.658830017293834E-4, + "90.0" : 3.714994001315754E-4, + "95.0" : 3.714994001315754E-4, + "99.0" : 3.714994001315754E-4, + "99.9" : 3.714994001315754E-4, + "99.99" : 3.714994001315754E-4, + "99.999" : 3.714994001315754E-4, + "99.9999" : 3.714994001315754E-4, + "100.0" : 3.714994001315754E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.603071418246206E-4, + 3.593837766667977E-4, + 3.5930529210687794E-4 + ], + [ + 3.714588616341462E-4, + 3.714994001315754E-4, + 3.7147951710251703E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12398553405912653, + "scoreError" : 0.0013991073609022338, + "scoreConfidence" : [ + 0.1225864266982243, + 0.12538464142002875 + ], + "scorePercentiles" : { + "0.0" : 0.12326611146720574, + "50.0" : 0.1240177284255026, + "90.0" : 0.12461342621806853, + "95.0" : 0.12461342621806853, + "99.0" : 0.12461342621806853, + "99.9" : 0.12461342621806853, + "99.99" : 0.12461342621806853, + "99.999" : 0.12461342621806853, + "99.9999" : 0.12461342621806853, + "100.0" : 0.12461342621806853 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12428503084647602, + 0.12461342621806853, + 0.12430530875845267 + ], + [ + 0.12326611146720574, + 0.12369290106002696, + 0.1237504260045292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012999232761343738, + "scoreError" : 2.767127089931583E-4, + "scoreConfidence" : [ + 0.01272252005235058, + 0.013275945470336895 + ], + "scorePercentiles" : { + "0.0" : 0.012893604586965519, + "50.0" : 0.013002369566817166, + "90.0" : 0.013109529199778714, + "95.0" : 0.013109529199778714, + "99.0" : 0.013109529199778714, + "99.9" : 0.013109529199778714, + "99.99" : 0.013109529199778714, + "99.999" : 0.013109529199778714, + "99.9999" : 0.013109529199778714, + "100.0" : 0.013109529199778714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012907978678858536, + 0.012929680167204102, + 0.012893604586965519 + ], + [ + 0.01307954496882533, + 0.013109529199778714, + 0.01307505896643023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9926524026051903, + "scoreError" : 0.10681762181816905, + "scoreConfidence" : [ + 0.8858347807870213, + 1.0994700244233593 + ], + "scorePercentiles" : { + "0.0" : 0.9569506252631579, + "50.0" : 0.9915446640314953, + "90.0" : 1.0294522447761194, + "95.0" : 1.0294522447761194, + "99.0" : 1.0294522447761194, + "99.9" : 1.0294522447761194, + "99.99" : 1.0294522447761194, + "99.999" : 1.0294522447761194, + "99.9999" : 1.0294522447761194, + "100.0" : 1.0294522447761194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9569506252631579, + 0.9582028583884258, + 0.95859017377552 + ], + [ + 1.0282193591404483, + 1.0294522447761194, + 1.0244991542874706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01076043635400553, + "scoreError" : 0.0014976211026030365, + "scoreConfidence" : [ + 0.009262815251402493, + 0.012258057456608566 + ], + "scorePercentiles" : { + "0.0" : 0.010269545301813551, + "50.0" : 0.010759797482236676, + "90.0" : 0.011256786643913486, + "95.0" : 0.011256786643913486, + "99.0" : 0.011256786643913486, + "99.9" : 0.011256786643913486, + "99.99" : 0.011256786643913486, + "99.999" : 0.011256786643913486, + "99.9999" : 0.011256786643913486, + "100.0" : 0.011256786643913486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010269545301813551, + 0.010277058946485717, + 0.01027218057453011 + ], + [ + 0.011242536017987633, + 0.011244510639302678, + 0.011256786643913486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0278886362501116, + "scoreError" : 0.03802084980744342, + "scoreConfidence" : [ + 2.989867786442668, + 3.065909486057555 + ], + "scorePercentiles" : { + "0.0" : 3.0078587883343357, + "50.0" : 3.0255275738052028, + "90.0" : 3.0484487483241924, + "95.0" : 3.0484487483241924, + "99.0" : 3.0484487483241924, + "99.9" : 3.0484487483241924, + "99.99" : 3.0484487483241924, + "99.999" : 3.0484487483241924, + "99.9999" : 3.0484487483241924, + "100.0" : 3.0484487483241924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0255470852994555, + 3.0484487483241924, + 3.0361217275485437 + ], + [ + 3.0238474056831923, + 3.0255080623109496, + 3.0078587883343357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7266708630315555, + "scoreError" : 0.011051789314758096, + "scoreConfidence" : [ + 2.7156190737167973, + 2.7377226523463136 + ], + "scorePercentiles" : { + "0.0" : 2.720755473068553, + "50.0" : 2.7263289882336075, + "90.0" : 2.731086132441289, + "95.0" : 2.731086132441289, + "99.0" : 2.731086132441289, + "99.9" : 2.731086132441289, + "99.99" : 2.731086132441289, + "99.999" : 2.731086132441289, + "99.9999" : 2.731086132441289, + "100.0" : 2.731086132441289 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7255501591280655, + 2.7271078173391494, + 2.720755473068553 + ], + [ + 2.731086132441289, + 2.730872966138722, + 2.7246526300735496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.180610820564118, + "scoreError" : 0.006173128828743966, + "scoreConfidence" : [ + 0.17443769173537405, + 0.18678394939286197 + ], + "scorePercentiles" : { + "0.0" : 0.17908764691977078, + "50.0" : 0.17930672878690407, + "90.0" : 0.18384680639408757, + "95.0" : 0.18384680639408757, + "99.0" : 0.18384680639408757, + "99.9" : 0.18384680639408757, + "99.99" : 0.18384680639408757, + "99.999" : 0.18384680639408757, + "99.9999" : 0.18384680639408757, + "100.0" : 0.18384680639408757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18384680639408757, + 0.18301234711394165, + 0.17933789076790646 + ], + [ + 0.17927556680590165, + 0.17908764691977078, + 0.1791046653830999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3251072766823573, + "scoreError" : 0.03778983531375931, + "scoreConfidence" : [ + 0.287317441368598, + 0.3628971119961166 + ], + "scorePercentiles" : { + "0.0" : 0.3126096298530791, + "50.0" : 0.32517183704677055, + "90.0" : 0.33744229501282225, + "95.0" : 0.33744229501282225, + "99.0" : 0.33744229501282225, + "99.9" : 0.33744229501282225, + "99.99" : 0.33744229501282225, + "99.999" : 0.33744229501282225, + "99.9999" : 0.33744229501282225, + "100.0" : 0.33744229501282225 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3126096298530791, + 0.3129672137514474, + 0.31284021960833386 + ], + [ + 0.33737646034209373, + 0.33740784152636727, + 0.33744229501282225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14076251955387628, + "scoreError" : 0.010213692251744498, + "scoreConfidence" : [ + 0.13054882730213177, + 0.1509762118056208 + ], + "scorePercentiles" : { + "0.0" : 0.1373793959088911, + "50.0" : 0.1407917102552879, + "90.0" : 0.1441659815183231, + "95.0" : 0.1441659815183231, + "99.0" : 0.1441659815183231, + "99.9" : 0.1441659815183231, + "99.99" : 0.1441659815183231, + "99.999" : 0.1441659815183231, + "99.9999" : 0.1441659815183231, + "100.0" : 0.1441659815183231 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.144053357346586, + 0.14404113098839053, + 0.1441659815183231 + ], + [ + 0.13739296203888163, + 0.1373793959088911, + 0.13754228952218525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39820884779712284, + "scoreError" : 0.002635916815896139, + "scoreConfidence" : [ + 0.3955729309812267, + 0.400844764613019 + ], + "scorePercentiles" : { + "0.0" : 0.39703040066698425, + "50.0" : 0.3983806257745231, + "90.0" : 0.3996614534409719, + "95.0" : 0.3996614534409719, + "99.0" : 0.3996614534409719, + "99.9" : 0.3996614534409719, + "99.99" : 0.3996614534409719, + "99.999" : 0.3996614534409719, + "99.9999" : 0.3996614534409719, + "100.0" : 0.3996614534409719 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3996614534409719, + 0.3982930794169189, + 0.39847183268916603 + ], + [ + 0.39703040066698425, + 0.3984681721321273, + 0.3973281484365688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15878401783001664, + "scoreError" : 0.0019372022877405463, + "scoreConfidence" : [ + 0.15684681554227609, + 0.1607212201177572 + ], + "scorePercentiles" : { + "0.0" : 0.15791370135960964, + "50.0" : 0.1588629026970258, + "90.0" : 0.15954436182195278, + "95.0" : 0.15954436182195278, + "99.0" : 0.15954436182195278, + "99.9" : 0.15954436182195278, + "99.99" : 0.15954436182195278, + "99.999" : 0.15954436182195278, + "99.9999" : 0.15954436182195278, + "100.0" : 0.15954436182195278 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15850221126291764, + 0.15791370135960964, + 0.15813688666803713 + ], + [ + 0.15954436182195278, + 0.15922359413113396, + 0.1593833517364487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.045923568350921866, + "scoreError" : 0.0011502405957562127, + "scoreConfidence" : [ + 0.044773327755165654, + 0.04707380894667808 + ], + "scorePercentiles" : { + "0.0" : 0.04550853706830252, + "50.0" : 0.04587061409772908, + "90.0" : 0.046491582456205605, + "95.0" : 0.046491582456205605, + "99.0" : 0.046491582456205605, + "99.9" : 0.046491582456205605, + "99.99" : 0.046491582456205605, + "99.999" : 0.046491582456205605, + "99.9999" : 0.046491582456205605, + "100.0" : 0.046491582456205605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04625820486536745, + 0.046491582456205605, + 0.04566679761257826 + ], + [ + 0.04607443058287989, + 0.045541857520197467, + 0.04550853706830252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8771781.299119929, + "scoreError" : 56228.89335273691, + "scoreConfidence" : [ + 8715552.405767191, + 8828010.192472667 + ], + "scorePercentiles" : { + "0.0" : 8743717.043706294, + "50.0" : 8768926.599474145, + "90.0" : 8796175.488126649, + "95.0" : 8796175.488126649, + "99.0" : 8796175.488126649, + "99.9" : 8796175.488126649, + "99.99" : 8796175.488126649, + "99.999" : 8796175.488126649, + "99.9999" : 8796175.488126649, + "100.0" : 8796175.488126649 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8769313.71779141, + 8768539.48115688, + 8743717.043706294 + ], + [ + 8793310.004393673, + 8796175.488126649, + 8759632.059544658 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-08T03:25:28Z-8950aa312751869089a0302484955777babbf1a3-jdk17.json b/performance-results/2025-06-08T03:25:28Z-8950aa312751869089a0302484955777babbf1a3-jdk17.json new file mode 100644 index 0000000000..77823e7327 --- /dev/null +++ b/performance-results/2025-06-08T03:25:28Z-8950aa312751869089a0302484955777babbf1a3-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.326300008660375, + "scoreError" : 0.036861237386349555, + "scoreConfidence" : [ + 3.289438771274025, + 3.3631612460467246 + ], + "scorePercentiles" : { + "0.0" : 3.3209603564489116, + "50.0" : 3.3249869973032977, + "90.0" : 3.334265683585993, + "95.0" : 3.334265683585993, + "99.0" : 3.334265683585993, + "99.9" : 3.334265683585993, + "99.99" : 3.334265683585993, + "99.999" : 3.334265683585993, + "99.9999" : 3.334265683585993, + "100.0" : 3.334265683585993 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3209603564489116, + 3.326037198896786 + ], + [ + 3.323936795709809, + 3.334265683585993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6724787244596493, + "scoreError" : 0.025381193001681648, + "scoreConfidence" : [ + 1.6470975314579677, + 1.697859917461331 + ], + "scorePercentiles" : { + "0.0" : 1.6678689369085122, + "50.0" : 1.6723381036036176, + "90.0" : 1.677369753722849, + "95.0" : 1.677369753722849, + "99.0" : 1.677369753722849, + "99.9" : 1.677369753722849, + "99.99" : 1.677369753722849, + "99.999" : 1.677369753722849, + "99.9999" : 1.677369753722849, + "100.0" : 1.677369753722849 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6678689369085122, + 1.673069615952946 + ], + [ + 1.6716065912542895, + 1.677369753722849 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8441799846879083, + "scoreError" : 0.0294894117773398, + "scoreConfidence" : [ + 0.8146905729105686, + 0.8736693964652481 + ], + "scorePercentiles" : { + "0.0" : 0.8399224103195174, + "50.0" : 0.8439531649936853, + "90.0" : 0.848891198444745, + "95.0" : 0.848891198444745, + "99.0" : 0.848891198444745, + "99.9" : 0.848891198444745, + "99.99" : 0.848891198444745, + "99.999" : 0.848891198444745, + "99.9999" : 0.848891198444745, + "100.0" : 0.848891198444745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8406326415985236, + 0.8472736883888471 + ], + [ + 0.8399224103195174, + 0.848891198444745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.923373812318886, + "scoreError" : 0.1774856773892179, + "scoreConfidence" : [ + 15.745888134929668, + 16.100859489708103 + ], + "scorePercentiles" : { + "0.0" : 15.855860462344824, + "50.0" : 15.92046959076927, + "90.0" : 16.001072717258857, + "95.0" : 16.001072717258857, + "99.0" : 16.001072717258857, + "99.9" : 16.001072717258857, + "99.99" : 16.001072717258857, + "99.999" : 16.001072717258857, + "99.9999" : 16.001072717258857, + "100.0" : 16.001072717258857 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.855860462344824, + 15.877970591905294, + 15.867351561703128 + ], + [ + 16.001072717258857, + 15.975018951067964, + 15.962968589633247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2700.815957300882, + "scoreError" : 70.81316290228325, + "scoreConfidence" : [ + 2630.002794398599, + 2771.6291202031653 + ], + "scorePercentiles" : { + "0.0" : 2674.980686587218, + "50.0" : 2700.8310489142837, + "90.0" : 2726.7702619859783, + "95.0" : 2726.7702619859783, + "99.0" : 2726.7702619859783, + "99.9" : 2726.7702619859783, + "99.99" : 2726.7702619859783, + "99.999" : 2726.7702619859783, + "99.9999" : 2726.7702619859783, + "100.0" : 2726.7702619859783 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2678.4516660937898, + 2674.980686587218, + 2680.1704033415463 + ], + [ + 2723.0310313097393, + 2721.491694487021, + 2726.7702619859783 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76014.16147118887, + "scoreError" : 608.2102829145441, + "scoreConfidence" : [ + 75405.95118827432, + 76622.37175410341 + ], + "scorePercentiles" : { + "0.0" : 75752.58096772344, + "50.0" : 76016.78097898219, + "90.0" : 76261.17239722954, + "95.0" : 76261.17239722954, + "99.0" : 76261.17239722954, + "99.9" : 76261.17239722954, + "99.99" : 76261.17239722954, + "99.999" : 76261.17239722954, + "99.9999" : 76261.17239722954, + "100.0" : 76261.17239722954 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75752.58096772344, + 75867.16202392904, + 75844.260727533 + ], + [ + 76166.39993403533, + 76193.39277668287, + 76261.17239722954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.3841676492919, + "scoreError" : 23.230451597898497, + "scoreConfidence" : [ + 324.1537160513934, + 370.6146192471904 + ], + "scorePercentiles" : { + "0.0" : 338.629058837593, + "50.0" : 347.50529630069497, + "90.0" : 355.79994073094787, + "95.0" : 355.79994073094787, + "99.0" : 355.79994073094787, + "99.9" : 355.79994073094787, + "99.99" : 355.79994073094787, + "99.999" : 355.79994073094787, + "99.9999" : 355.79994073094787, + "100.0" : 355.79994073094787 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 338.629058837593, + 340.072642380182, + 340.89894480313984 + ], + [ + 354.79277134563876, + 354.1116477982501, + 355.79994073094787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.83925674769597, + "scoreError" : 3.902105615234272, + "scoreConfidence" : [ + 108.9371511324617, + 116.74136236293025 + ], + "scorePercentiles" : { + "0.0" : 110.69833407863078, + "50.0" : 112.96052134287146, + "90.0" : 114.16084214617881, + "95.0" : 114.16084214617881, + "99.0" : 114.16084214617881, + "99.9" : 114.16084214617881, + "99.99" : 114.16084214617881, + "99.999" : 114.16084214617881, + "99.9999" : 114.16084214617881, + "100.0" : 114.16084214617881 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.12969287931604, + 113.71805639473017, + 114.16084214617881 + ], + [ + 110.69833407863078, + 112.20298629101276, + 112.12562869630736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06205154221928095, + "scoreError" : 4.633917286503495E-4, + "scoreConfidence" : [ + 0.0615881504906306, + 0.0625149339479313 + ], + "scorePercentiles" : { + "0.0" : 0.06188737159159828, + "50.0" : 0.062036046793786145, + "90.0" : 0.06226950594974937, + "95.0" : 0.06226950594974937, + "99.0" : 0.06226950594974937, + "99.9" : 0.06226950594974937, + "99.99" : 0.06226950594974937, + "99.999" : 0.06226950594974937, + "99.9999" : 0.06226950594974937, + "100.0" : 0.06226950594974937 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06190328379089418, + 0.06192678215179213, + 0.06188737159159828 + ], + [ + 0.06217699839587155, + 0.06214531143578016, + 0.06226950594974937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8442595146646826E-4, + "scoreError" : 1.626423048094481E-6, + "scoreConfidence" : [ + 3.827995284183738E-4, + 3.860523745145627E-4 + ], + "scorePercentiles" : { + "0.0" : 3.8334160880106803E-4, + "50.0" : 3.84615165513068E-4, + "90.0" : 3.849239774000826E-4, + "95.0" : 3.849239774000826E-4, + "99.0" : 3.849239774000826E-4, + "99.9" : 3.849239774000826E-4, + "99.99" : 3.849239774000826E-4, + "99.999" : 3.849239774000826E-4, + "99.9999" : 3.849239774000826E-4, + "100.0" : 3.849239774000826E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8481677395665333E-4, + 3.8424301761486973E-4, + 3.8334160880106803E-4 + ], + [ + 3.849239774000826E-4, + 3.846283822251221E-4, + 3.8460194880101387E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12505591959082105, + "scoreError" : 7.387214206481599E-4, + "scoreConfidence" : [ + 0.1243171981701729, + 0.1257946410114692 + ], + "scorePercentiles" : { + "0.0" : 0.12471996552842284, + "50.0" : 0.12507586764744089, + "90.0" : 0.125330207153689, + "95.0" : 0.125330207153689, + "99.0" : 0.125330207153689, + "99.9" : 0.125330207153689, + "99.99" : 0.125330207153689, + "99.999" : 0.125330207153689, + "99.9999" : 0.125330207153689, + "100.0" : 0.125330207153689 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12519514417166394, + 0.125330207153689, + 0.12532117169818413 + ], + [ + 0.12471996552842284, + 0.12495659112321783, + 0.12481243786974863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01312297568888591, + "scoreError" : 4.773371917494584E-4, + "scoreConfidence" : [ + 0.012645638497136453, + 0.013600312880635368 + ], + "scorePercentiles" : { + "0.0" : 0.012959037725726505, + "50.0" : 0.013121381985909515, + "90.0" : 0.013312890358765588, + "95.0" : 0.013312890358765588, + "99.0" : 0.013312890358765588, + "99.9" : 0.013312890358765588, + "99.99" : 0.013312890358765588, + "99.999" : 0.013312890358765588, + "99.9999" : 0.013312890358765588, + "100.0" : 0.013312890358765588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012985584339594465, + 0.012959037725726505, + 0.012961932411501127 + ], + [ + 0.01326122966550323, + 0.013312890358765588, + 0.013257179632224564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.019857742519362, + "scoreError" : 0.02433631590564748, + "scoreConfidence" : [ + 0.9955214266137146, + 1.0441940584250096 + ], + "scorePercentiles" : { + "0.0" : 1.0109205237036287, + "50.0" : 1.01946077565627, + "90.0" : 1.030164497012773, + "95.0" : 1.030164497012773, + "99.0" : 1.030164497012773, + "99.9" : 1.030164497012773, + "99.99" : 1.030164497012773, + "99.999" : 1.030164497012773, + "99.9999" : 1.030164497012773, + "100.0" : 1.030164497012773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0276875902784914, + 1.030164497012773, + 1.024855731194917 + ], + [ + 1.0114522928087388, + 1.0109205237036287, + 1.0140658201176231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010972491073741195, + "scoreError" : 8.317736302414524E-4, + "scoreConfidence" : [ + 0.010140717443499743, + 0.011804264703982647 + ], + "scorePercentiles" : { + "0.0" : 0.010690179782823888, + "50.0" : 0.010969496319929894, + "90.0" : 0.01129249920841586, + "95.0" : 0.01129249920841586, + "99.0" : 0.01129249920841586, + "99.9" : 0.01129249920841586, + "99.99" : 0.01129249920841586, + "99.999" : 0.01129249920841586, + "99.9999" : 0.01129249920841586, + "100.0" : 0.01129249920841586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011216567148141584, + 0.011216636603870088, + 0.01129249920841586 + ], + [ + 0.010722425491718205, + 0.010696638207477543, + 0.010690179782823888 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.4183261502028164, + "scoreError" : 0.2232241419302077, + "scoreConfidence" : [ + 3.1951020082726087, + 3.641550292133024 + ], + "scorePercentiles" : { + "0.0" : 3.342383076871658, + "50.0" : 3.41602260156317, + "90.0" : 3.495865106219427, + "95.0" : 3.495865106219427, + "99.0" : 3.495865106219427, + "99.9" : 3.495865106219427, + "99.99" : 3.495865106219427, + "99.999" : 3.495865106219427, + "99.9999" : 3.495865106219427, + "100.0" : 3.495865106219427 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3480300053547523, + 3.342383076871658, + 3.346882750334672 + ], + [ + 3.4927807646648046, + 3.484015197771588, + 3.495865106219427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8832666881843774, + "scoreError" : 0.08555421836469514, + "scoreConfidence" : [ + 2.797712469819682, + 2.9688209065490727 + ], + "scorePercentiles" : { + "0.0" : 2.852367781579698, + "50.0" : 2.8832497851990375, + "90.0" : 2.9161354944606415, + "95.0" : 2.9161354944606415, + "99.0" : 2.9161354944606415, + "99.9" : 2.9161354944606415, + "99.99" : 2.9161354944606415, + "99.999" : 2.9161354944606415, + "99.9999" : 2.9161354944606415, + "100.0" : 2.9161354944606415 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.906483815751235, + 2.9161354944606415, + 2.910025156240908 + ], + [ + 2.8600157546468403, + 2.852367781579698, + 2.8545721264269406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1793276064048396, + "scoreError" : 0.0041980538770803625, + "scoreConfidence" : [ + 0.17512955252775925, + 0.18352566028191997 + ], + "scorePercentiles" : { + "0.0" : 0.17784321056375602, + "50.0" : 0.17926328954075682, + "90.0" : 0.18110110710081676, + "95.0" : 0.18110110710081676, + "99.0" : 0.18110110710081676, + "99.9" : 0.18110110710081676, + "99.99" : 0.18110110710081676, + "99.999" : 0.18110110710081676, + "99.9999" : 0.18110110710081676, + "100.0" : 0.18110110710081676 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17808047731319895, + 0.17801488032468804, + 0.17784321056375602 + ], + [ + 0.18110110710081676, + 0.1804461017683147, + 0.1804798613582631 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3223147454949445, + "scoreError" : 0.00737541692117947, + "scoreConfidence" : [ + 0.314939328573765, + 0.329690162416124 + ], + "scorePercentiles" : { + "0.0" : 0.31734292990194524, + "50.0" : 0.3236373854753921, + "90.0" : 0.32397040384864584, + "95.0" : 0.32397040384864584, + "99.0" : 0.32397040384864584, + "99.9" : 0.32397040384864584, + "99.99" : 0.32397040384864584, + "99.999" : 0.32397040384864584, + "99.9999" : 0.32397040384864584, + "100.0" : 0.32397040384864584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3239417102458618, + 0.32135865802243, + 0.31734292990194524 + ], + [ + 0.32345261422518357, + 0.32397040384864584, + 0.32382215672560066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14840744222130792, + "scoreError" : 0.002301891751961203, + "scoreConfidence" : [ + 0.1461055504693467, + 0.15070933397326913 + ], + "scorePercentiles" : { + "0.0" : 0.14750392349106142, + "50.0" : 0.14838924703963544, + "90.0" : 0.1493168357845699, + "95.0" : 0.1493168357845699, + "99.0" : 0.1493168357845699, + "99.9" : 0.1493168357845699, + "99.99" : 0.1493168357845699, + "99.999" : 0.1493168357845699, + "99.9999" : 0.1493168357845699, + "100.0" : 0.1493168357845699 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14776423210248682, + 0.14773588284827893, + 0.14750392349106142 + ], + [ + 0.14901426197678405, + 0.14910951712466639, + 0.1493168357845699 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4032389044779767, + "scoreError" : 0.00803422370051802, + "scoreConfidence" : [ + 0.3952046807774587, + 0.41127312817849476 + ], + "scorePercentiles" : { + "0.0" : 0.40002715704628183, + "50.0" : 0.4035986385135548, + "90.0" : 0.4062878975786138, + "95.0" : 0.4062878975786138, + "99.0" : 0.4062878975786138, + "99.9" : 0.4062878975786138, + "99.99" : 0.4062878975786138, + "99.999" : 0.4062878975786138, + "99.9999" : 0.4062878975786138, + "100.0" : 0.4062878975786138 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4058214473662852, + 0.4062878975786138, + 0.40512318833299577 + ], + [ + 0.4020740886941139, + 0.40002715704628183, + 0.4000996478495699 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15908551586024422, + "scoreError" : 0.005931200288687198, + "scoreConfidence" : [ + 0.153154315571557, + 0.16501671614893143 + ], + "scorePercentiles" : { + "0.0" : 0.15733547998741346, + "50.0" : 0.15863692199878837, + "90.0" : 0.16270222910972276, + "95.0" : 0.16270222910972276, + "99.0" : 0.16270222910972276, + "99.9" : 0.16270222910972276, + "99.99" : 0.16270222910972276, + "99.999" : 0.16270222910972276, + "99.9999" : 0.16270222910972276, + "100.0" : 0.16270222910972276 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1575088468892739, + 0.15733547998741346, + 0.15741587553323783 + ], + [ + 0.16270222910972276, + 0.15978566653351442, + 0.15976499710830286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048212365670898726, + "scoreError" : 0.0011907334760381243, + "scoreConfidence" : [ + 0.0470216321948606, + 0.04940309914693685 + ], + "scorePercentiles" : { + "0.0" : 0.047399205994018305, + "50.0" : 0.04829948107880795, + "90.0" : 0.04865486060564778, + "95.0" : 0.04865486060564778, + "99.0" : 0.04865486060564778, + "99.9" : 0.04865486060564778, + "99.99" : 0.04865486060564778, + "99.999" : 0.04865486060564778, + "99.9999" : 0.04865486060564778, + "100.0" : 0.04865486060564778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04837945356600323, + 0.04828286189864617, + 0.04831610025896973 + ], + [ + 0.04865486060564778, + 0.04824171170210713, + 0.047399205994018305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8612026.139965571, + "scoreError" : 208415.05689595002, + "scoreConfidence" : [ + 8403611.08306962, + 8820441.196861522 + ], + "scorePercentiles" : { + "0.0" : 8534150.870307168, + "50.0" : 8608030.897169497, + "90.0" : 8692508.815812336, + "95.0" : 8692508.815812336, + "99.0" : 8692508.815812336, + "99.9" : 8692508.815812336, + "99.99" : 8692508.815812336, + "99.999" : 8692508.815812336, + "99.9999" : 8692508.815812336, + "100.0" : 8692508.815812336 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8553063.569230769, + 8547679.78034188, + 8534150.870307168 + ], + [ + 8662998.225108225, + 8692508.815812336, + 8681755.578993056 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-12T04:49:15Z-4dc7965b406a690fedb0abde79f925db1c7a9249-jdk17.json b/performance-results/2025-06-12T04:49:15Z-4dc7965b406a690fedb0abde79f925db1c7a9249-jdk17.json new file mode 100644 index 0000000000..faec207901 --- /dev/null +++ b/performance-results/2025-06-12T04:49:15Z-4dc7965b406a690fedb0abde79f925db1c7a9249-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3454357927276748, + "scoreError" : 0.03346623788303074, + "scoreConfidence" : [ + 3.311969554844644, + 3.3789020306107056 + ], + "scorePercentiles" : { + "0.0" : 3.3388439482953935, + "50.0" : 3.345695436374289, + "90.0" : 3.3515083498667275, + "95.0" : 3.3515083498667275, + "99.0" : 3.3515083498667275, + "99.9" : 3.3515083498667275, + "99.99" : 3.3515083498667275, + "99.999" : 3.3515083498667275, + "99.9999" : 3.3515083498667275, + "100.0" : 3.3515083498667275 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3388439482953935, + 3.345673260052136 + ], + [ + 3.345717612696442, + 3.3515083498667275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6892424696520048, + "scoreError" : 0.037218593382815274, + "scoreConfidence" : [ + 1.6520238762691895, + 1.72646106303482 + ], + "scorePercentiles" : { + "0.0" : 1.6814803265125757, + "50.0" : 1.690682490886024, + "90.0" : 1.6941245703233956, + "95.0" : 1.6941245703233956, + "99.0" : 1.6941245703233956, + "99.9" : 1.6941245703233956, + "99.99" : 1.6941245703233956, + "99.999" : 1.6941245703233956, + "99.9999" : 1.6941245703233956, + "100.0" : 1.6941245703233956 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6814803265125757, + 1.6883069360823495 + ], + [ + 1.6941245703233956, + 1.6930580456896989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.849495016030323, + "scoreError" : 0.050678993212390416, + "scoreConfidence" : [ + 0.7988160228179325, + 0.9001740092427134 + ], + "scorePercentiles" : { + "0.0" : 0.838006091613769, + "50.0" : 0.8522563515387271, + "90.0" : 0.8554612694300683, + "95.0" : 0.8554612694300683, + "99.0" : 0.8554612694300683, + "99.9" : 0.8554612694300683, + "99.99" : 0.8554612694300683, + "99.999" : 0.8554612694300683, + "99.9999" : 0.8554612694300683, + "100.0" : 0.8554612694300683 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.838006091613769, + 0.8531726043713805 + ], + [ + 0.8513400987060737, + 0.8554612694300683 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.147131900506867, + "scoreError" : 0.10299292847783706, + "scoreConfidence" : [ + 16.04413897202903, + 16.250124828984703 + ], + "scorePercentiles" : { + "0.0" : 16.10162403909608, + "50.0" : 16.154565084863677, + "90.0" : 16.184147658388124, + "95.0" : 16.184147658388124, + "99.0" : 16.184147658388124, + "99.9" : 16.184147658388124, + "99.99" : 16.184147658388124, + "99.999" : 16.184147658388124, + "99.9999" : 16.184147658388124, + "100.0" : 16.184147658388124 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.10162403909608, + 16.1084565061823, + 16.13648133615506 + ], + [ + 16.17264883357229, + 16.179433029647353, + 16.184147658388124 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2830.3758981251326, + "scoreError" : 235.27508411293192, + "scoreConfidence" : [ + 2595.1008140122008, + 3065.6509822380644 + ], + "scorePercentiles" : { + "0.0" : 2752.4217717537435, + "50.0" : 2830.9825710172527, + "90.0" : 2907.6578160049808, + "95.0" : 2907.6578160049808, + "99.0" : 2907.6578160049808, + "99.9" : 2907.6578160049808, + "99.99" : 2907.6578160049808, + "99.999" : 2907.6578160049808, + "99.9999" : 2907.6578160049808, + "100.0" : 2907.6578160049808 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2906.116809288673, + 2907.6578160049808, + 2907.1009837420484 + ], + [ + 2752.4217717537435, + 2753.109675215517, + 2755.8483327458325 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76601.3864598707, + "scoreError" : 902.6894045488183, + "scoreConfidence" : [ + 75698.69705532189, + 77504.07586441952 + ], + "scorePercentiles" : { + "0.0" : 76241.75440401683, + "50.0" : 76608.75172089232, + "90.0" : 76913.62879622646, + "95.0" : 76913.62879622646, + "99.0" : 76913.62879622646, + "99.9" : 76913.62879622646, + "99.99" : 76913.62879622646, + "99.999" : 76913.62879622646, + "99.9999" : 76913.62879622646, + "100.0" : 76913.62879622646 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76241.75440401683, + 76341.82333599713, + 76345.6765699282 + ], + [ + 76871.82687185645, + 76913.62879622646, + 76893.60878119916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 368.0559647780049, + "scoreError" : 16.580615212591304, + "scoreConfidence" : [ + 351.47534956541364, + 384.6365799905962 + ], + "scorePercentiles" : { + "0.0" : 362.39781207966365, + "50.0" : 367.83190254778924, + "90.0" : 374.1082585914812, + "95.0" : 374.1082585914812, + "99.0" : 374.1082585914812, + "99.9" : 374.1082585914812, + "99.99" : 374.1082585914812, + "99.999" : 374.1082585914812, + "99.9999" : 374.1082585914812, + "100.0" : 374.1082585914812 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 372.6262213123719, + 373.5642262569317, + 374.1082585914812 + ], + [ + 362.6016866443747, + 363.03758378320657, + 362.39781207966365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.63134159337665, + "scoreError" : 5.927605613830075, + "scoreConfidence" : [ + 109.70373597954656, + 121.55894720720673 + ], + "scorePercentiles" : { + "0.0" : 112.42741814052104, + "50.0" : 116.10110530294807, + "90.0" : 117.48420478909345, + "95.0" : 117.48420478909345, + "99.0" : 117.48420478909345, + "99.9" : 117.48420478909345, + "99.99" : 117.48420478909345, + "99.999" : 117.48420478909345, + "99.9999" : 117.48420478909345, + "100.0" : 117.48420478909345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.42741814052104, + 114.26977394217266, + 114.83534679255655 + ], + [ + 117.4044420825766, + 117.36686381333958, + 117.48420478909345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06141427195493044, + "scoreError" : 3.212316364439723E-4, + "scoreConfidence" : [ + 0.06109304031848647, + 0.06173550359137441 + ], + "scorePercentiles" : { + "0.0" : 0.06125492063336498, + "50.0" : 0.06141106216968727, + "90.0" : 0.061591201294621964, + "95.0" : 0.061591201294621964, + "99.0" : 0.061591201294621964, + "99.9" : 0.061591201294621964, + "99.99" : 0.061591201294621964, + "99.999" : 0.061591201294621964, + "99.9999" : 0.061591201294621964, + "100.0" : 0.061591201294621964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06125492063336498, + 0.061350614871165644, + 0.061591201294621964 + ], + [ + 0.061443370544683726, + 0.06146677059105549, + 0.06137875379469081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6838182371264555E-4, + "scoreError" : 1.903310830236175E-5, + "scoreConfidence" : [ + 3.493487154102838E-4, + 3.874149320150073E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6202698495705054E-4, + "50.0" : 3.6814786140893516E-4, + "90.0" : 3.7599648647197525E-4, + "95.0" : 3.7599648647197525E-4, + "99.0" : 3.7599648647197525E-4, + "99.9" : 3.7599648647197525E-4, + "99.99" : 3.7599648647197525E-4, + "99.999" : 3.7599648647197525E-4, + "99.9999" : 3.7599648647197525E-4, + "100.0" : 3.7599648647197525E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.625053749681407E-4, + 3.6216015949765834E-4, + 3.6202698495705054E-4 + ], + [ + 3.7381158853131883E-4, + 3.737903478497297E-4, + 3.7599648647197525E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12306254881918803, + "scoreError" : 0.002722389008229372, + "scoreConfidence" : [ + 0.12034015981095866, + 0.1257849378274174 + ], + "scorePercentiles" : { + "0.0" : 0.12215084521235663, + "50.0" : 0.12298111060762147, + "90.0" : 0.12427056703657219, + "95.0" : 0.12427056703657219, + "99.0" : 0.12427056703657219, + "99.9" : 0.12427056703657219, + "99.99" : 0.12427056703657219, + "99.999" : 0.12427056703657219, + "99.9999" : 0.12427056703657219, + "100.0" : 0.12427056703657219 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12226971381237085, + 0.12215084521235663, + 0.12216285123381383 + ], + [ + 0.12427056703657219, + 0.12382880821714258, + 0.12369250740287209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013007208569849694, + "scoreError" : 1.9890754769820944E-4, + "scoreConfidence" : [ + 0.012808301022151485, + 0.013206116117547904 + ], + "scorePercentiles" : { + "0.0" : 0.012939799746383375, + "50.0" : 0.01300579114382538, + "90.0" : 0.013079719174104573, + "95.0" : 0.013079719174104573, + "99.0" : 0.013079719174104573, + "99.9" : 0.013079719174104573, + "99.99" : 0.013079719174104573, + "99.999" : 0.013079719174104573, + "99.9999" : 0.013079719174104573, + "100.0" : 0.013079719174104573 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01294331463569636, + 0.012939799746383375, + 0.012944672768271482 + ], + [ + 0.013068835575263105, + 0.013066909519379277, + 0.013079719174104573 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0266511110017034, + "scoreError" : 0.01631301319977663, + "scoreConfidence" : [ + 1.0103380978019267, + 1.04296412420148 + ], + "scorePercentiles" : { + "0.0" : 1.0201625281036417, + "50.0" : 1.0259300933042172, + "90.0" : 1.0346968341438179, + "95.0" : 1.0346968341438179, + "99.0" : 1.0346968341438179, + "99.9" : 1.0346968341438179, + "99.99" : 1.0346968341438179, + "99.999" : 1.0346968341438179, + "99.9999" : 1.0346968341438179, + "100.0" : 1.0346968341438179 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0346968341438179, + 1.031042740927835, + 1.0292268523206751 + ], + [ + 1.0226333342877594, + 1.0221443762264921, + 1.0201625281036417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011084942421516059, + "scoreError" : 0.001417778510777805, + "scoreConfidence" : [ + 0.009667163910738253, + 0.012502720932293864 + ], + "scorePercentiles" : { + "0.0" : 0.010620506982810075, + "50.0" : 0.01107784994876481, + "90.0" : 0.011558327431050784, + "95.0" : 0.011558327431050784, + "99.0" : 0.011558327431050784, + "99.9" : 0.011558327431050784, + "99.99" : 0.011558327431050784, + "99.999" : 0.011558327431050784, + "99.9999" : 0.011558327431050784, + "100.0" : 0.011558327431050784 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010620506982810075, + 0.010627579553908086, + 0.01062241013542939 + ], + [ + 0.011552710082276478, + 0.011528120343621537, + 0.011558327431050784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1331987242477624, + "scoreError" : 0.1955358491941313, + "scoreConfidence" : [ + 2.937662875053631, + 3.328734573441894 + ], + "scorePercentiles" : { + "0.0" : 3.068296353374233, + "50.0" : 3.1340730939624857, + "90.0" : 3.197649632992327, + "95.0" : 3.197649632992327, + "99.0" : 3.197649632992327, + "99.9" : 3.197649632992327, + "99.99" : 3.197649632992327, + "99.999" : 3.197649632992327, + "99.9999" : 3.197649632992327, + "100.0" : 3.197649632992327 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0683552012269937, + 3.068296353374233, + 3.0720216332923833 + ], + [ + 3.197649632992327, + 3.196744969968051, + 3.196124554632588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7714272639288695, + "scoreError" : 0.021129936380113935, + "scoreConfidence" : [ + 2.7502973275487554, + 2.7925572003089836 + ], + "scorePercentiles" : { + "0.0" : 2.759330518344828, + "50.0" : 2.7735923442569677, + "90.0" : 2.77904220561267, + "95.0" : 2.77904220561267, + "99.0" : 2.77904220561267, + "99.9" : 2.77904220561267, + "99.99" : 2.77904220561267, + "99.999" : 2.77904220561267, + "99.9999" : 2.77904220561267, + "100.0" : 2.77904220561267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.77904220561267, + 2.775864974465723, + 2.776973764575236 + ], + [ + 2.7713197140482126, + 2.7660324065265485, + 2.759330518344828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18025176902212237, + "scoreError" : 0.004885508880853, + "scoreConfidence" : [ + 0.17536626014126935, + 0.18513727790297538 + ], + "scorePercentiles" : { + "0.0" : 0.17711319218235275, + "50.0" : 0.1805237782963995, + "90.0" : 0.1820507791411043, + "95.0" : 0.1820507791411043, + "99.0" : 0.1820507791411043, + "99.9" : 0.1820507791411043, + "99.99" : 0.1820507791411043, + "99.999" : 0.1820507791411043, + "99.9999" : 0.1820507791411043, + "100.0" : 0.1820507791411043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18020209689335784, + 0.17980747480087023, + 0.181491611415608 + ], + [ + 0.1820507791411043, + 0.18084545969944119, + 0.17711319218235275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32322875170664583, + "scoreError" : 0.0363996863467658, + "scoreConfidence" : [ + 0.28682906535988006, + 0.3596284380534116 + ], + "scorePercentiles" : { + "0.0" : 0.31117704960014936, + "50.0" : 0.32334204089846375, + "90.0" : 0.33515043370869363, + "95.0" : 0.33515043370869363, + "99.0" : 0.33515043370869363, + "99.9" : 0.33515043370869363, + "99.99" : 0.33515043370869363, + "99.999" : 0.33515043370869363, + "99.9999" : 0.33515043370869363, + "100.0" : 0.33515043370869363 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31117704960014936, + 0.3112637747758964, + 0.3117005543122526 + ], + [ + 0.3349835274846749, + 0.33509717035820796, + 0.33515043370869363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14412107804474347, + "scoreError" : 0.013194177153618411, + "scoreConfidence" : [ + 0.13092690089112508, + 0.15731525519836187 + ], + "scorePercentiles" : { + "0.0" : 0.13979213077331692, + "50.0" : 0.14388323389337696, + "90.0" : 0.14930642058586402, + "95.0" : 0.14930642058586402, + "99.0" : 0.14930642058586402, + "99.9" : 0.14930642058586402, + "99.99" : 0.14930642058586402, + "99.999" : 0.14930642058586402, + "99.9999" : 0.14930642058586402, + "100.0" : 0.14930642058586402 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13985680801074066, + 0.1399028825965305, + 0.13979213077331692 + ], + [ + 0.14930642058586402, + 0.14800464111178535, + 0.1478635851902234 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4051289352510445, + "scoreError" : 0.0106598646203304, + "scoreConfidence" : [ + 0.39446907063071407, + 0.4157887998713749 + ], + "scorePercentiles" : { + "0.0" : 0.3984384051954261, + "50.0" : 0.4054499986249511, + "90.0" : 0.4099162485653386, + "95.0" : 0.4099162485653386, + "99.0" : 0.4099162485653386, + "99.9" : 0.4099162485653386, + "99.99" : 0.4099162485653386, + "99.999" : 0.4099162485653386, + "99.9999" : 0.4099162485653386, + "100.0" : 0.4099162485653386 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40471256341562123, + 0.4046452348466456, + 0.3984384051954261 + ], + [ + 0.4061874338342811, + 0.4099162485653386, + 0.40687372564895435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15578051319478628, + "scoreError" : 0.00856324314292947, + "scoreConfidence" : [ + 0.1472172700518568, + 0.16434375633771575 + ], + "scorePercentiles" : { + "0.0" : 0.1530146542116135, + "50.0" : 0.15554438874709248, + "90.0" : 0.15947986682082768, + "95.0" : 0.15947986682082768, + "99.0" : 0.15947986682082768, + "99.9" : 0.15947986682082768, + "99.99" : 0.15947986682082768, + "99.999" : 0.15947986682082768, + "99.9999" : 0.15947986682082768, + "100.0" : 0.15947986682082768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1530146542116135, + 0.15306931962897202, + 0.1530179467660245 + ], + [ + 0.15947986682082768, + 0.15808183387606703, + 0.15801945786521293 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04759288639126818, + "scoreError" : 0.0012461336410645929, + "scoreConfidence" : [ + 0.046346752750203585, + 0.04883902003233277 + ], + "scorePercentiles" : { + "0.0" : 0.04685687221849976, + "50.0" : 0.047567805047909514, + "90.0" : 0.04819953176301609, + "95.0" : 0.04819953176301609, + "99.0" : 0.04819953176301609, + "99.9" : 0.04819953176301609, + "99.99" : 0.04819953176301609, + "99.999" : 0.04819953176301609, + "99.9999" : 0.04819953176301609, + "100.0" : 0.04819953176301609 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047603448346281274, + 0.04751275197768835, + 0.047532161749537755 + ], + [ + 0.04819953176301609, + 0.04785255229258582, + 0.04685687221849976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8610764.430470346, + "scoreError" : 530501.2515003902, + "scoreConfidence" : [ + 8080263.178969955, + 9141265.681970736 + ], + "scorePercentiles" : { + "0.0" : 8434098.327993255, + "50.0" : 8606902.140823618, + "90.0" : 8795628.941072999, + "95.0" : 8795628.941072999, + "99.0" : 8795628.941072999, + "99.9" : 8795628.941072999, + "99.99" : 8795628.941072999, + "99.999" : 8795628.941072999, + "99.9999" : 8795628.941072999, + "100.0" : 8795628.941072999 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8444266.764556961, + 8436411.753794266, + 8434098.327993255 + ], + [ + 8795628.941072999, + 8784643.278314311, + 8769537.517090272 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-06-16T00:20:30Z-2dc43f7f1f5c1b710bd683a347eed01751f2648e-jdk17.json b/performance-results/2025-06-16T00:20:30Z-2dc43f7f1f5c1b710bd683a347eed01751f2648e-jdk17.json new file mode 100644 index 0000000000..a001420f9b --- /dev/null +++ b/performance-results/2025-06-16T00:20:30Z-2dc43f7f1f5c1b710bd683a347eed01751f2648e-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3437734562883676, + "scoreError" : 0.04530443995195778, + "scoreConfidence" : [ + 3.29846901633641, + 3.3890778962403254 + ], + "scorePercentiles" : { + "0.0" : 3.3337930666656512, + "50.0" : 3.3462436618084546, + "90.0" : 3.3488134348709115, + "95.0" : 3.3488134348709115, + "99.0" : 3.3488134348709115, + "99.9" : 3.3488134348709115, + "99.99" : 3.3488134348709115, + "99.999" : 3.3488134348709115, + "99.9999" : 3.3488134348709115, + "100.0" : 3.3488134348709115 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3337930666656512, + 3.343980336909365 + ], + [ + 3.348506986707544, + 3.3488134348709115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6898731625384302, + "scoreError" : 0.04689607828437407, + "scoreConfidence" : [ + 1.642977084254056, + 1.7367692408228044 + ], + "scorePercentiles" : { + "0.0" : 1.6815122980913808, + "50.0" : 1.6900683536061343, + "90.0" : 1.697843644850071, + "95.0" : 1.697843644850071, + "99.0" : 1.697843644850071, + "99.9" : 1.697843644850071, + "99.99" : 1.697843644850071, + "99.999" : 1.697843644850071, + "99.9999" : 1.697843644850071, + "100.0" : 1.697843644850071 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6815122980913808, + 1.686568861800249 + ], + [ + 1.6935678454120198, + 1.697843644850071 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8463780786153096, + "scoreError" : 0.04218795989312758, + "scoreConfidence" : [ + 0.8041901187221819, + 0.8885660385084372 + ], + "scorePercentiles" : { + "0.0" : 0.8386450646265594, + "50.0" : 0.8463313469918654, + "90.0" : 0.8542045558509483, + "95.0" : 0.8542045558509483, + "99.0" : 0.8542045558509483, + "99.9" : 0.8542045558509483, + "99.99" : 0.8542045558509483, + "99.999" : 0.8542045558509483, + "99.9999" : 0.8542045558509483, + "100.0" : 0.8542045558509483 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8481768207638288, + 0.8542045558509483 + ], + [ + 0.8386450646265594, + 0.844485873219902 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.26822194461779, + "scoreError" : 0.07968288915334563, + "scoreConfidence" : [ + 16.188539055464442, + 16.347904833771135 + ], + "scorePercentiles" : { + "0.0" : 16.213274053202415, + "50.0" : 16.274612731568666, + "90.0" : 16.294907465891345, + "95.0" : 16.294907465891345, + "99.0" : 16.294907465891345, + "99.9" : 16.294907465891345, + "99.99" : 16.294907465891345, + "99.999" : 16.294907465891345, + "99.9999" : 16.294907465891345, + "100.0" : 16.294907465891345 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.276762408099128, + 16.269066179353963, + 16.213274053202415 + ], + [ + 16.282858506121695, + 16.27246305503821, + 16.294907465891345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2799.7126991856508, + "scoreError" : 287.31060789903313, + "scoreConfidence" : [ + 2512.4020912866176, + 3087.023307084684 + ], + "scorePercentiles" : { + "0.0" : 2704.9302267335274, + "50.0" : 2799.0326818499443, + "90.0" : 2895.2784520573177, + "95.0" : 2895.2784520573177, + "99.0" : 2895.2784520573177, + "99.9" : 2895.2784520573177, + "99.99" : 2895.2784520573177, + "99.999" : 2895.2784520573177, + "99.9999" : 2895.2784520573177, + "100.0" : 2895.2784520573177 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2890.83490756246, + 2895.2784520573177, + 2893.5826289600004 + ], + [ + 2704.9302267335274, + 2706.419523663169, + 2707.230456137429 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77226.39889933485, + "scoreError" : 805.7016869196405, + "scoreConfidence" : [ + 76420.69721241521, + 78032.10058625448 + ], + "scorePercentiles" : { + "0.0" : 76917.23038112016, + "50.0" : 77219.46314062207, + "90.0" : 77534.38502843317, + "95.0" : 77534.38502843317, + "99.0" : 77534.38502843317, + "99.9" : 77534.38502843317, + "99.99" : 77534.38502843317, + "99.999" : 77534.38502843317, + "99.9999" : 77534.38502843317, + "100.0" : 77534.38502843317 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77031.6604602437, + 76917.23038112016, + 76958.62883593282 + ], + [ + 77407.26582100046, + 77509.22286927875, + 77534.38502843317 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 366.4149540519022, + "scoreError" : 14.307999017063269, + "scoreConfidence" : [ + 352.10695503483896, + 380.72295306896547 + ], + "scorePercentiles" : { + "0.0" : 361.5685637827905, + "50.0" : 366.46401042586683, + "90.0" : 371.1707859640125, + "95.0" : 371.1707859640125, + "99.0" : 371.1707859640125, + "99.9" : 371.1707859640125, + "99.99" : 371.1707859640125, + "99.999" : 371.1707859640125, + "99.9999" : 371.1707859640125, + "100.0" : 371.1707859640125 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 371.08574555747305, + 370.9560839930404, + 371.1707859640125 + ], + [ + 361.73660815540336, + 361.5685637827905, + 361.97193685869325 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.15781377990079, + "scoreError" : 11.064188157926136, + "scoreConfidence" : [ + 102.09362562197465, + 124.22200193782693 + ], + "scorePercentiles" : { + "0.0" : 108.99345209847239, + "50.0" : 113.4446281131207, + "90.0" : 116.88076166039222, + "95.0" : 116.88076166039222, + "99.0" : 116.88076166039222, + "99.9" : 116.88076166039222, + "99.99" : 116.88076166039222, + "99.999" : 116.88076166039222, + "99.9999" : 116.88076166039222, + "100.0" : 116.88076166039222 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.65650936840193, + 116.68550414815113, + 116.88076166039222 + ], + [ + 109.4979085461476, + 108.99345209847239, + 110.23274685783946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06126016299608595, + "scoreError" : 0.0010888239447645724, + "scoreConfidence" : [ + 0.060171339051321375, + 0.062348986940850525 + ], + "scorePercentiles" : { + "0.0" : 0.060908707576302054, + "50.0" : 0.06120148196475759, + "90.0" : 0.061670831808034336, + "95.0" : 0.061670831808034336, + "99.0" : 0.061670831808034336, + "99.9" : 0.061670831808034336, + "99.99" : 0.061670831808034336, + "99.999" : 0.061670831808034336, + "99.9999" : 0.061670831808034336, + "100.0" : 0.061670831808034336 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06148854661665693, + 0.06166888654345427, + 0.061670831808034336 + ], + [ + 0.060908707576302054, + 0.0609095881192099, + 0.060914417312858245 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.550149737365908E-4, + "scoreError" : 1.7432098896703561E-6, + "scoreConfidence" : [ + 3.532717638469204E-4, + 3.5675818362626116E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5418618853920594E-4, + "50.0" : 3.5503154484607045E-4, + "90.0" : 3.558955880334308E-4, + "95.0" : 3.558955880334308E-4, + "99.0" : 3.558955880334308E-4, + "99.9" : 3.558955880334308E-4, + "99.99" : 3.558955880334308E-4, + "99.999" : 3.558955880334308E-4, + "99.9999" : 3.558955880334308E-4, + "100.0" : 3.558955880334308E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5418618853920594E-4, + 3.558955880334308E-4, + 3.54533222458149E-4 + ], + [ + 3.548318188055081E-4, + 3.552312708866328E-4, + 3.554117536966181E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12618428775466198, + "scoreError" : 0.004821740370329758, + "scoreConfidence" : [ + 0.12136254738433222, + 0.13100602812499174 + ], + "scorePercentiles" : { + "0.0" : 0.1244358393683739, + "50.0" : 0.12617461991038056, + "90.0" : 0.12788440960881853, + "95.0" : 0.12788440960881853, + "99.0" : 0.12788440960881853, + "99.9" : 0.12788440960881853, + "99.99" : 0.12788440960881853, + "99.999" : 0.12788440960881853, + "99.9999" : 0.12788440960881853, + "100.0" : 0.12788440960881853 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12458568206508197, + 0.1244358393683739, + 0.12485110577175175 + ], + [ + 0.12788440960881853, + 0.12785055566493647, + 0.12749813404900937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012978090687244537, + "scoreError" : 1.9572829974510604E-4, + "scoreConfidence" : [ + 0.01278236238749943, + 0.013173818986989643 + ], + "scorePercentiles" : { + "0.0" : 0.012913511909327692, + "50.0" : 0.012970946070467712, + "90.0" : 0.013065657839243251, + "95.0" : 0.013065657839243251, + "99.0" : 0.013065657839243251, + "99.9" : 0.013065657839243251, + "99.99" : 0.013065657839243251, + "99.999" : 0.013065657839243251, + "99.9999" : 0.013065657839243251, + "100.0" : 0.013065657839243251 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012920237924569988, + 0.012913511909327692, + 0.012913582013690793 + ], + [ + 0.013021654216365437, + 0.013065657839243251, + 0.013033900220270058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.028562150342937, + "scoreError" : 0.04470070915251111, + "scoreConfidence" : [ + 0.9838614411904258, + 1.073262859495448 + ], + "scorePercentiles" : { + "0.0" : 1.0130934063418093, + "50.0" : 1.0285121155218908, + "90.0" : 1.044383840538847, + "95.0" : 1.044383840538847, + "99.0" : 1.044383840538847, + "99.9" : 1.044383840538847, + "99.99" : 1.044383840538847, + "99.999" : 1.044383840538847, + "99.9999" : 1.044383840538847, + "100.0" : 1.044383840538847 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.044383840538847, + 1.041686903125, + 1.043162136956295 + ], + [ + 1.013709287176888, + 1.0153373279187816, + 1.0130934063418093 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010495474707258477, + "scoreError" : 3.305329233212566E-4, + "scoreConfidence" : [ + 0.010164941783937221, + 0.010826007630579733 + ], + "scorePercentiles" : { + "0.0" : 0.01037974303899161, + "50.0" : 0.010494958705089581, + "90.0" : 0.010609473131193108, + "95.0" : 0.010609473131193108, + "99.0" : 0.010609473131193108, + "99.9" : 0.010609473131193108, + "99.99" : 0.010609473131193108, + "99.999" : 0.010609473131193108, + "99.9999" : 0.010609473131193108, + "100.0" : 0.010609473131193108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010391757095293913, + 0.010392532651326359, + 0.01037974303899161 + ], + [ + 0.010609473131193108, + 0.010601957567893068, + 0.010597384758852803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1143205326002517, + "scoreError" : 0.03321486006653464, + "scoreConfidence" : [ + 3.081105672533717, + 3.147535392666786 + ], + "scorePercentiles" : { + "0.0" : 3.100018301301922, + "50.0" : 3.1146745324214296, + "90.0" : 3.129520176470588, + "95.0" : 3.129520176470588, + "99.0" : 3.129520176470588, + "99.9" : 3.129520176470588, + "99.99" : 3.129520176470588, + "99.999" : 3.129520176470588, + "99.9999" : 3.129520176470588, + "100.0" : 3.129520176470588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1216792996254683, + 3.129520176470588, + 3.1226346622971284 + ], + [ + 3.104400990689013, + 3.100018301301922, + 3.1076697652173912 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.702333601132635, + "scoreError" : 0.10685277567848961, + "scoreConfidence" : [ + 2.5954808254541453, + 2.809186376811125 + ], + "scorePercentiles" : { + "0.0" : 2.660223896276596, + "50.0" : 2.7049965552209247, + "90.0" : 2.737997322200931, + "95.0" : 2.737997322200931, + "99.0" : 2.737997322200931, + "99.9" : 2.737997322200931, + "99.99" : 2.737997322200931, + "99.999" : 2.737997322200931, + "99.9999" : 2.737997322200931, + "100.0" : 2.737997322200931 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7366642848153213, + 2.737997322200931, + 2.7359723577680524 + ], + [ + 2.660223896276596, + 2.669122993061116, + 2.6740207526737967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18055492354994107, + "scoreError" : 0.004433512537167173, + "scoreConfidence" : [ + 0.1761214110127739, + 0.18498843608710824 + ], + "scorePercentiles" : { + "0.0" : 0.17926074683612375, + "50.0" : 0.17975328052040385, + "90.0" : 0.18300023593675657, + "95.0" : 0.18300023593675657, + "99.0" : 0.18300023593675657, + "99.9" : 0.18300023593675657, + "99.99" : 0.18300023593675657, + "99.999" : 0.18300023593675657, + "99.9999" : 0.18300023593675657, + "100.0" : 0.18300023593675657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1794705150481865, + 0.17926074683612375, + 0.17964919640707805 + ], + [ + 0.18300023593675657, + 0.18209148243777198, + 0.17985736463372962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3205630258901815, + "scoreError" : 0.02193666979870561, + "scoreConfidence" : [ + 0.29862635609147586, + 0.3424996956888871 + ], + "scorePercentiles" : { + "0.0" : 0.3131518901171165, + "50.0" : 0.3206333650320337, + "90.0" : 0.3280536231465687, + "95.0" : 0.3280536231465687, + "99.0" : 0.3280536231465687, + "99.9" : 0.3280536231465687, + "99.99" : 0.3280536231465687, + "99.999" : 0.3280536231465687, + "99.9999" : 0.3280536231465687, + "100.0" : 0.3280536231465687 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3280536231465687, + 0.327453637491814, + 0.32759028155403414 + ], + [ + 0.3131518901171165, + 0.3138130925722534, + 0.31331563045930194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14797053956729145, + "scoreError" : 0.010380943530007944, + "scoreConfidence" : [ + 0.1375895960372835, + 0.1583514830972994 + ], + "scorePercentiles" : { + "0.0" : 0.14184062000198572, + "50.0" : 0.14918402258817665, + "90.0" : 0.15231480217805193, + "95.0" : 0.15231480217805193, + "99.0" : 0.15231480217805193, + "99.9" : 0.15231480217805193, + "99.99" : 0.15231480217805193, + "99.999" : 0.15231480217805193, + "99.9999" : 0.15231480217805193, + "100.0" : 0.15231480217805193 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14867865043635986, + 0.14559904254327855, + 0.14184062000198572 + ], + [ + 0.15231480217805193, + 0.1496893947399934, + 0.14970072750407928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39613360155640015, + "scoreError" : 0.007282878780686697, + "scoreConfidence" : [ + 0.3888507227757135, + 0.4034164803370868 + ], + "scorePercentiles" : { + "0.0" : 0.39363329348553433, + "50.0" : 0.39588728646652827, + "90.0" : 0.39970631599984013, + "95.0" : 0.39970631599984013, + "99.0" : 0.39970631599984013, + "99.9" : 0.39970631599984013, + "99.99" : 0.39970631599984013, + "99.999" : 0.39970631599984013, + "99.9999" : 0.39970631599984013, + "100.0" : 0.39970631599984013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39378401992518214, + 0.39363329348553433, + 0.3941645143667967 + ], + [ + 0.39970631599984013, + 0.3979034069947877, + 0.3976100585662598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15701583311696257, + "scoreError" : 0.0068470743625372605, + "scoreConfidence" : [ + 0.1501687587544253, + 0.16386290747949983 + ], + "scorePercentiles" : { + "0.0" : 0.15412730177396236, + "50.0" : 0.15767006533039554, + "90.0" : 0.15949435629984052, + "95.0" : 0.15949435629984052, + "99.0" : 0.15949435629984052, + "99.9" : 0.15949435629984052, + "99.99" : 0.15949435629984052, + "99.999" : 0.15949435629984052, + "99.9999" : 0.15949435629984052, + "100.0" : 0.15949435629984052 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1589615707836592, + 0.15949435629984052, + 0.15880853536604733 + ], + [ + 0.15653159529474375, + 0.15417163918352245, + 0.15412730177396236 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04775808731800734, + "scoreError" : 0.0032267564743731748, + "scoreConfidence" : [ + 0.04453133084363416, + 0.05098484379238052 + ], + "scorePercentiles" : { + "0.0" : 0.04672263088697017, + "50.0" : 0.047552917901705016, + "90.0" : 0.049031240994336985, + "95.0" : 0.049031240994336985, + "99.0" : 0.049031240994336985, + "99.9" : 0.049031240994336985, + "99.99" : 0.049031240994336985, + "99.999" : 0.049031240994336985, + "99.9999" : 0.049031240994336985, + "100.0" : 0.049031240994336985 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04672263088697017, + 0.046726391009975936, + 0.04673794576607061 + ], + [ + 0.048962425213350896, + 0.049031240994336985, + 0.04836789003733942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8638023.594341721, + "scoreError" : 334285.629776753, + "scoreConfidence" : [ + 8303737.964564968, + 8972309.224118475 + ], + "scorePercentiles" : { + "0.0" : 8520767.283645656, + "50.0" : 8640151.180326223, + "90.0" : 8759941.232049037, + "95.0" : 8759941.232049037, + "99.0" : 8759941.232049037, + "99.9" : 8759941.232049037, + "99.99" : 8759941.232049037, + "99.999" : 8759941.232049037, + "99.9999" : 8759941.232049037, + "100.0" : 8759941.232049037 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8525900.724637682, + 8542147.617421007, + 8520767.283645656 + ], + [ + 8759941.232049037, + 8738154.743231442, + 8741229.965065502 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-04T01:42:51Z-268bdd6b52c5c73ba8cb59786949154c6951a77a-jdk17.json b/performance-results/2025-07-04T01:42:51Z-268bdd6b52c5c73ba8cb59786949154c6951a77a-jdk17.json new file mode 100644 index 0000000000..16cd9e4592 --- /dev/null +++ b/performance-results/2025-07-04T01:42:51Z-268bdd6b52c5c73ba8cb59786949154c6951a77a-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.328569635572334, + "scoreError" : 0.04499031091502342, + "scoreConfidence" : [ + 3.283579324657311, + 3.3735599464873576 + ], + "scorePercentiles" : { + "0.0" : 3.3191582999768867, + "50.0" : 3.330006998780836, + "90.0" : 3.335106244750779, + "95.0" : 3.335106244750779, + "99.0" : 3.335106244750779, + "99.9" : 3.335106244750779, + "99.99" : 3.335106244750779, + "99.999" : 3.335106244750779, + "99.9999" : 3.335106244750779, + "100.0" : 3.335106244750779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3277722327984507, + 3.335106244750779 + ], + [ + 3.3191582999768867, + 3.3322417647632205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.676618813728786, + "scoreError" : 0.018943931506279238, + "scoreConfidence" : [ + 1.657674882222507, + 1.6955627452350652 + ], + "scorePercentiles" : { + "0.0" : 1.6728819247175617, + "50.0" : 1.6771856545725192, + "90.0" : 1.6792220210525435, + "95.0" : 1.6792220210525435, + "99.0" : 1.6792220210525435, + "99.9" : 1.6792220210525435, + "99.99" : 1.6792220210525435, + "99.999" : 1.6792220210525435, + "99.9999" : 1.6792220210525435, + "100.0" : 1.6792220210525435 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.67570256797388, + 1.6728819247175617 + ], + [ + 1.6786687411711585, + 1.6792220210525435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8405517538440088, + "scoreError" : 0.031080222523943737, + "scoreConfidence" : [ + 0.8094715313200651, + 0.8716319763679525 + ], + "scorePercentiles" : { + "0.0" : 0.8364098239245641, + "50.0" : 0.8391998768241387, + "90.0" : 0.8473974378031941, + "95.0" : 0.8473974378031941, + "99.0" : 0.8473974378031941, + "99.9" : 0.8473974378031941, + "99.99" : 0.8473974378031941, + "99.999" : 0.8473974378031941, + "99.9999" : 0.8473974378031941, + "100.0" : 0.8473974378031941 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8364098239245641, + 0.8473974378031941 + ], + [ + 0.8382710352085699, + 0.8401287184397074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.21760710382724, + "scoreError" : 0.15787985480029326, + "scoreConfidence" : [ + 16.05972724902695, + 16.375486958627533 + ], + "scorePercentiles" : { + "0.0" : 16.122730263498145, + "50.0" : 16.215068331439333, + "90.0" : 16.286459054380217, + "95.0" : 16.286459054380217, + "99.0" : 16.286459054380217, + "99.9" : 16.286459054380217, + "99.99" : 16.286459054380217, + "99.999" : 16.286459054380217, + "99.9999" : 16.286459054380217, + "100.0" : 16.286459054380217 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.26028553984196, + 16.122730263498145, + 16.206739698691678 + ], + [ + 16.286459054380217, + 16.206031102364456, + 16.223396964186993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2693.5846812396653, + "scoreError" : 454.5426011347362, + "scoreConfidence" : [ + 2239.042080104929, + 3148.1272823744016 + ], + "scorePercentiles" : { + "0.0" : 2518.23157869718, + "50.0" : 2701.740523794515, + "90.0" : 2844.303868030501, + "95.0" : 2844.303868030501, + "99.0" : 2844.303868030501, + "99.9" : 2844.303868030501, + "99.99" : 2844.303868030501, + "99.999" : 2844.303868030501, + "99.9999" : 2844.303868030501, + "100.0" : 2844.303868030501 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2567.938621545183, + 2552.945563563044, + 2518.23157869718 + ], + [ + 2842.5460295582384, + 2835.542426043847, + 2844.303868030501 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75647.27460356419, + "scoreError" : 722.3248209283865, + "scoreConfidence" : [ + 74924.9497826358, + 76369.59942449258 + ], + "scorePercentiles" : { + "0.0" : 75217.8592051042, + "50.0" : 75662.48929821365, + "90.0" : 76009.48589288088, + "95.0" : 76009.48589288088, + "99.0" : 76009.48589288088, + "99.9" : 76009.48589288088, + "99.99" : 76009.48589288088, + "99.999" : 76009.48589288088, + "99.9999" : 76009.48589288088, + "100.0" : 76009.48589288088 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75581.88399052445, + 76009.48589288088, + 75640.27896969432 + ], + [ + 75217.8592051042, + 75684.69962673298, + 75749.43993644835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.20347929983217, + "scoreError" : 31.29104056759904, + "scoreConfidence" : [ + 315.9124387322331, + 378.4945198674312 + ], + "scorePercentiles" : { + "0.0" : 333.6026527109628, + "50.0" : 348.3806538706525, + "90.0" : 358.2138652909862, + "95.0" : 358.2138652909862, + "99.0" : 358.2138652909862, + "99.9" : 358.2138652909862, + "99.99" : 358.2138652909862, + "99.999" : 358.2138652909862, + "99.9999" : 358.2138652909862, + "100.0" : 358.2138652909862 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.910233792627, + 356.4331167513741, + 358.2138652909862 + ], + [ + 333.6026527109628, + 337.7328162631119, + 340.3281909899309 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.16431633892027, + "scoreError" : 13.548919211491588, + "scoreConfidence" : [ + 101.61539712742868, + 128.71323555041187 + ], + "scorePercentiles" : { + "0.0" : 109.67076055788982, + "50.0" : 116.1405656443205, + "90.0" : 120.20279445226346, + "95.0" : 120.20279445226346, + "99.0" : 120.20279445226346, + "99.9" : 120.20279445226346, + "99.99" : 120.20279445226346, + "99.999" : 120.20279445226346, + "99.9999" : 120.20279445226346, + "100.0" : 120.20279445226346 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.67076055788982, + 109.82067469266423, + 113.32046282619633 + ], + [ + 119.01053704206313, + 118.96066846244467, + 120.20279445226346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06266591277642168, + "scoreError" : 0.002625876614673094, + "scoreConfidence" : [ + 0.060040036161748585, + 0.06529178939109477 + ], + "scorePercentiles" : { + "0.0" : 0.0616495696997719, + "50.0" : 0.06258968207936447, + "90.0" : 0.0636766039185971, + "95.0" : 0.0636766039185971, + "99.0" : 0.0636766039185971, + "99.9" : 0.0636766039185971, + "99.99" : 0.0636766039185971, + "99.999" : 0.0636766039185971, + "99.9999" : 0.0636766039185971, + "100.0" : 0.0636766039185971 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0616495696997719, + 0.06184238756617029, + 0.06200810427104519 + ], + [ + 0.0636766039185971, + 0.06317125988768374, + 0.06364755131526187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7953539036866715E-4, + "scoreError" : 2.3145334662497465E-5, + "scoreConfidence" : [ + 3.563900557061697E-4, + 4.026807250311646E-4 + ], + "scorePercentiles" : { + "0.0" : 3.708554576369343E-4, + "50.0" : 3.790656615752058E-4, + "90.0" : 3.8854873230873314E-4, + "95.0" : 3.8854873230873314E-4, + "99.0" : 3.8854873230873314E-4, + "99.9" : 3.8854873230873314E-4, + "99.99" : 3.8854873230873314E-4, + "99.999" : 3.8854873230873314E-4, + "99.9999" : 3.8854873230873314E-4, + "100.0" : 3.8854873230873314E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8401351560791763E-4, + 3.8854873230873314E-4, + 3.880378389176149E-4 + ], + [ + 3.7163899019830896E-4, + 3.708554576369343E-4, + 3.7411780754249396E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.13016217860590687, + "scoreError" : 0.012255974476987364, + "scoreConfidence" : [ + 0.1179062041289195, + 0.14241815308289424 + ], + "scorePercentiles" : { + "0.0" : 0.12594823671582767, + "50.0" : 0.12966313654388942, + "90.0" : 0.13542895576982977, + "95.0" : 0.13542895576982977, + "99.0" : 0.13542895576982977, + "99.9" : 0.13542895576982977, + "99.99" : 0.13542895576982977, + "99.999" : 0.13542895576982977, + "99.9999" : 0.13542895576982977, + "100.0" : 0.13542895576982977 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12692428802243969, + 0.12594823671582767, + 0.12598075417931695 + ], + [ + 0.13542895576982977, + 0.13428885188268785, + 0.13240198506533915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013036678612754905, + "scoreError" : 2.3725758161708682E-4, + "scoreConfidence" : [ + 0.012799421031137818, + 0.013273936194371993 + ], + "scorePercentiles" : { + "0.0" : 0.012929688491694078, + "50.0" : 0.013030795956163473, + "90.0" : 0.01314815389540808, + "95.0" : 0.01314815389540808, + "99.0" : 0.01314815389540808, + "99.9" : 0.01314815389540808, + "99.99" : 0.01314815389540808, + "99.999" : 0.01314815389540808, + "99.9999" : 0.01314815389540808, + "100.0" : 0.01314815389540808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012929688491694078, + 0.012978251873385851, + 0.01298541457279907 + ], + [ + 0.013076177339527878, + 0.013102385503714477, + 0.01314815389540808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0572838331070766, + "scoreError" : 0.05991101274435279, + "scoreConfidence" : [ + 0.9973728203627239, + 1.1171948458514294 + ], + "scorePercentiles" : { + "0.0" : 1.0335207425589086, + "50.0" : 1.056997560738023, + "90.0" : 1.082338166017316, + "95.0" : 1.082338166017316, + "99.0" : 1.082338166017316, + "99.9" : 1.082338166017316, + "99.99" : 1.082338166017316, + "99.999" : 1.082338166017316, + "99.9999" : 1.082338166017316, + "100.0" : 1.082338166017316 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.082338166017316, + 1.074705080601827, + 1.0721163802530018 + ], + [ + 1.0391438879883623, + 1.0418787412230441, + 1.0335207425589086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010985166013428284, + "scoreError" : 9.558302337604837E-4, + "scoreConfidence" : [ + 0.0100293357796678, + 0.011940996247188768 + ], + "scorePercentiles" : { + "0.0" : 0.010627249693411916, + "50.0" : 0.010984774938781958, + "90.0" : 0.01132889475532556, + "95.0" : 0.01132889475532556, + "99.0" : 0.01132889475532556, + "99.9" : 0.01132889475532556, + "99.99" : 0.01132889475532556, + "99.999" : 0.01132889475532556, + "99.9999" : 0.01132889475532556, + "100.0" : 0.01132889475532556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010627249693411916, + 0.010689134302162765, + 0.01071062964644896 + ], + [ + 0.011258920231114954, + 0.011296167452105548, + 0.01132889475532556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1431437141102188, + "scoreError" : 0.30182764200753, + "scoreConfidence" : [ + 2.8413160721026887, + 3.444971356117749 + ], + "scorePercentiles" : { + "0.0" : 3.0455057679658952, + "50.0" : 3.1239017227965267, + "90.0" : 3.306339204890945, + "95.0" : 3.306339204890945, + "99.0" : 3.306339204890945, + "99.9" : 3.306339204890945, + "99.99" : 3.306339204890945, + "99.999" : 3.306339204890945, + "99.9999" : 3.306339204890945, + "100.0" : 3.306339204890945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2072099205128204, + 3.306339204890945, + 3.1895092767857145 + ], + [ + 3.052003945698597, + 3.0582941688073393, + 3.0455057679658952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8366126365123487, + "scoreError" : 0.11192807361441415, + "scoreConfidence" : [ + 2.7246845628979344, + 2.948540710126763 + ], + "scorePercentiles" : { + "0.0" : 2.7947252179379714, + "50.0" : 2.8310708502559776, + "90.0" : 2.886915958429561, + "95.0" : 2.886915958429561, + "99.0" : 2.886915958429561, + "99.9" : 2.886915958429561, + "99.99" : 2.886915958429561, + "99.999" : 2.886915958429561, + "99.9999" : 2.886915958429561, + "100.0" : 2.886915958429561 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7997416735722283, + 2.7947252179379714, + 2.812406526152981 + ], + [ + 2.886915958429561, + 2.8497351743589743, + 2.8761512686223756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17977832978042338, + "scoreError" : 0.004877102964240993, + "scoreConfidence" : [ + 0.1749012268161824, + 0.18465543274466437 + ], + "scorePercentiles" : { + "0.0" : 0.1777849959643727, + "50.0" : 0.1797032127486152, + "90.0" : 0.18211270738636365, + "95.0" : 0.18211270738636365, + "99.0" : 0.18211270738636365, + "99.9" : 0.18211270738636365, + "99.99" : 0.18211270738636365, + "99.999" : 0.18211270738636365, + "99.9999" : 0.18211270738636365, + "100.0" : 0.18211270738636365 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18211270738636365, + 0.18070151829565784, + 0.18103921550381982 + ], + [ + 0.1783266343307536, + 0.17870490720157256, + 0.1777849959643727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3101527324158909, + "scoreError" : 0.02168362204182396, + "scoreConfidence" : [ + 0.288469110374067, + 0.33183635445771487 + ], + "scorePercentiles" : { + "0.0" : 0.3028557830102968, + "50.0" : 0.31001197527496527, + "90.0" : 0.3176828542202738, + "95.0" : 0.3176828542202738, + "99.0" : 0.3176828542202738, + "99.9" : 0.3176828542202738, + "99.99" : 0.3176828542202738, + "99.999" : 0.3176828542202738, + "99.9999" : 0.3176828542202738, + "100.0" : 0.3176828542202738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3176828542202738, + 0.31743217632681564, + 0.3164810422178619 + ], + [ + 0.30292163038802894, + 0.3028557830102968, + 0.3035429083320686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14420180106861882, + "scoreError" : 0.0041929587533655775, + "scoreConfidence" : [ + 0.14000884231525323, + 0.1483947598219844 + ], + "scorePercentiles" : { + "0.0" : 0.14193640824639842, + "50.0" : 0.14428982220825337, + "90.0" : 0.14608486293185305, + "95.0" : 0.14608486293185305, + "99.0" : 0.14608486293185305, + "99.9" : 0.14608486293185305, + "99.99" : 0.14608486293185305, + "99.999" : 0.14608486293185305, + "99.9999" : 0.14608486293185305, + "100.0" : 0.14608486293185305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14193640824639842, + 0.14330323165768658, + 0.1438116514086026 + ], + [ + 0.1447679930079041, + 0.14530665915926824, + 0.14608486293185305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40256510419185343, + "scoreError" : 0.03837545291742832, + "scoreConfidence" : [ + 0.3641896512744251, + 0.44094055710928176 + ], + "scorePercentiles" : { + "0.0" : 0.3868554717601547, + "50.0" : 0.40257871915665266, + "90.0" : 0.4174543263483052, + "95.0" : 0.4174543263483052, + "99.0" : 0.4174543263483052, + "99.9" : 0.4174543263483052, + "99.99" : 0.4174543263483052, + "99.999" : 0.4174543263483052, + "99.9999" : 0.4174543263483052, + "100.0" : 0.4174543263483052 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39398967673942165, + 0.3903113171226728, + 0.3868554717601547 + ], + [ + 0.41561207160668273, + 0.4174543263483052, + 0.41116776157388374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15931755939366926, + "scoreError" : 0.005422266089113401, + "scoreConfidence" : [ + 0.15389529330455587, + 0.16473982548278265 + ], + "scorePercentiles" : { + "0.0" : 0.15754395212363728, + "50.0" : 0.15882352632361643, + "90.0" : 0.16233668514009286, + "95.0" : 0.16233668514009286, + "99.0" : 0.16233668514009286, + "99.9" : 0.16233668514009286, + "99.99" : 0.16233668514009286, + "99.999" : 0.16233668514009286, + "99.9999" : 0.16233668514009286, + "100.0" : 0.16233668514009286 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15757453417685616, + 0.15754395212363728, + 0.1582316371044304 + ], + [ + 0.16233668514009286, + 0.1608031322741964, + 0.15941541554280247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04742637600013449, + "scoreError" : 0.00247058092297966, + "scoreConfidence" : [ + 0.04495579507715483, + 0.04989695692311415 + ], + "scorePercentiles" : { + "0.0" : 0.04659008959145736, + "50.0" : 0.04730976450273462, + "90.0" : 0.048550663520638526, + "95.0" : 0.048550663520638526, + "99.0" : 0.048550663520638526, + "99.9" : 0.048550663520638526, + "99.99" : 0.048550663520638526, + "99.999" : 0.048550663520638526, + "99.9999" : 0.048550663520638526, + "100.0" : 0.048550663520638526 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046712032184079856, + 0.04663268631117536, + 0.04659008959145736 + ], + [ + 0.04816528757206641, + 0.048550663520638526, + 0.04790749682138939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8603037.06604283, + "scoreError" : 183557.92827805484, + "scoreConfidence" : [ + 8419479.137764774, + 8786594.994320884 + ], + "scorePercentiles" : { + "0.0" : 8543200.56618275, + "50.0" : 8583624.577461895, + "90.0" : 8692733.995655952, + "95.0" : 8692733.995655952, + "99.0" : 8692733.995655952, + "99.9" : 8692733.995655952, + "99.99" : 8692733.995655952, + "99.999" : 8692733.995655952, + "99.9999" : 8692733.995655952, + "100.0" : 8692733.995655952 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8671240.39341421, + 8604642.790197764, + 8692733.995655952 + ], + [ + 8543200.56618275, + 8562606.364726027, + 8543798.286080273 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-04T05:58:15Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json b/performance-results/2025-07-04T05:58:15Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json new file mode 100644 index 0000000000..f62bfe5cd9 --- /dev/null +++ b/performance-results/2025-07-04T05:58:15Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3323523993996833, + "scoreError" : 0.10836096358190753, + "scoreConfidence" : [ + 3.223991435817776, + 3.4407133629815907 + ], + "scorePercentiles" : { + "0.0" : 3.316409452045907, + "50.0" : 3.3309917873255532, + "90.0" : 3.3510165709017192, + "95.0" : 3.3510165709017192, + "99.0" : 3.3510165709017192, + "99.9" : 3.3510165709017192, + "99.99" : 3.3510165709017192, + "99.999" : 3.3510165709017192, + "99.9999" : 3.3510165709017192, + "100.0" : 3.3510165709017192 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3418859274427857, + 3.3510165709017192 + ], + [ + 3.316409452045907, + 3.3200976472083203 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6874784345492486, + "scoreError" : 0.02872424979591711, + "scoreConfidence" : [ + 1.6587541847533316, + 1.7162026843451657 + ], + "scorePercentiles" : { + "0.0" : 1.6830669938656884, + "50.0" : 1.6868807704975217, + "90.0" : 1.6930852033362633, + "95.0" : 1.6930852033362633, + "99.0" : 1.6930852033362633, + "99.9" : 1.6930852033362633, + "99.99" : 1.6930852033362633, + "99.999" : 1.6930852033362633, + "99.9999" : 1.6930852033362633, + "100.0" : 1.6930852033362633 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6888385657294533, + 1.6830669938656884 + ], + [ + 1.6849229752655899, + 1.6930852033362633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8470965053221642, + "scoreError" : 0.04389317719369074, + "scoreConfidence" : [ + 0.8032033281284734, + 0.890989682515855 + ], + "scorePercentiles" : { + "0.0" : 0.836962581717173, + "50.0" : 0.8500846488465077, + "90.0" : 0.8512541418784684, + "95.0" : 0.8512541418784684, + "99.0" : 0.8512541418784684, + "99.9" : 0.8512541418784684, + "99.99" : 0.8512541418784684, + "99.999" : 0.8512541418784684, + "99.9999" : 0.8512541418784684, + "100.0" : 0.8512541418784684 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.836962581717173, + 0.8495486732650098 + ], + [ + 0.8512541418784684, + 0.8506206244280056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.063876927422527, + "scoreError" : 0.29710123818011275, + "scoreConfidence" : [ + 15.766775689242413, + 16.36097816560264 + ], + "scorePercentiles" : { + "0.0" : 15.883611601264155, + "50.0" : 16.11394515319412, + "90.0" : 16.14780049876918, + "95.0" : 16.14780049876918, + "99.0" : 16.14780049876918, + "99.9" : 16.14780049876918, + "99.99" : 16.14780049876918, + "99.999" : 16.14780049876918, + "99.9999" : 16.14780049876918, + "100.0" : 16.14780049876918 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.14780049876918, + 15.986649959202648, + 16.137309198910955 + ], + [ + 16.124371443230906, + 16.103518863157333, + 15.883611601264155 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2608.889916115124, + "scoreError" : 150.2012147905411, + "scoreConfidence" : [ + 2458.688701324583, + 2759.091130905665 + ], + "scorePercentiles" : { + "0.0" : 2551.694837093502, + "50.0" : 2603.4606607707783, + "90.0" : 2671.7147111368527, + "95.0" : 2671.7147111368527, + "99.0" : 2671.7147111368527, + "99.9" : 2671.7147111368527, + "99.99" : 2671.7147111368527, + "99.999" : 2671.7147111368527, + "99.9999" : 2671.7147111368527, + "100.0" : 2671.7147111368527 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2671.7147111368527, + 2640.5448253394898, + 2657.8926513843385 + ], + [ + 2565.1159755344947, + 2566.3764962020673, + 2551.694837093502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77472.04522761896, + "scoreError" : 1627.3034473631394, + "scoreConfidence" : [ + 75844.74178025582, + 79099.3486749821 + ], + "scorePercentiles" : { + "0.0" : 76764.98685570348, + "50.0" : 77574.24116308108, + "90.0" : 78038.36240973724, + "95.0" : 78038.36240973724, + "99.0" : 78038.36240973724, + "99.9" : 78038.36240973724, + "99.99" : 78038.36240973724, + "99.999" : 78038.36240973724, + "99.9999" : 78038.36240973724, + "100.0" : 78038.36240973724 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76764.98685570348, + 76875.37716592866, + 77256.31383860511 + ], + [ + 78005.06260818211, + 77892.16848755706, + 78038.36240973724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.1199549742569, + "scoreError" : 12.18998028177667, + "scoreConfidence" : [ + 337.92997469248024, + 362.3099352560336 + ], + "scorePercentiles" : { + "0.0" : 344.4559231445097, + "50.0" : 349.6430205680216, + "90.0" : 356.7510454442657, + "95.0" : 356.7510454442657, + "99.0" : 356.7510454442657, + "99.9" : 356.7510454442657, + "99.99" : 356.7510454442657, + "99.999" : 356.7510454442657, + "99.9999" : 356.7510454442657, + "100.0" : 356.7510454442657 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.7510454442657, + 351.24881939402655, + 352.6451605389943 + ], + [ + 347.58155958172875, + 344.4559231445097, + 348.03722174201664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.04846632547981, + "scoreError" : 1.9870677769056013, + "scoreConfidence" : [ + 114.0613985485742, + 118.03553410238541 + ], + "scorePercentiles" : { + "0.0" : 115.24299335926284, + "50.0" : 115.82781848615889, + "90.0" : 117.0797233841941, + "95.0" : 117.0797233841941, + "99.0" : 117.0797233841941, + "99.9" : 117.0797233841941, + "99.99" : 117.0797233841941, + "99.999" : 117.0797233841941, + "99.9999" : 117.0797233841941, + "100.0" : 117.0797233841941 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.6226675362829, + 115.61143875918565, + 115.24299335926284 + ], + [ + 116.03296943603486, + 116.70100547791841, + 117.0797233841941 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06206072630840462, + "scoreError" : 0.0012569148226224216, + "scoreConfidence" : [ + 0.0608038114857822, + 0.06331764113102704 + ], + "scorePercentiles" : { + "0.0" : 0.061424995368635715, + "50.0" : 0.06207792806229913, + "90.0" : 0.0627229876939674, + "95.0" : 0.0627229876939674, + "99.0" : 0.0627229876939674, + "99.9" : 0.0627229876939674, + "99.99" : 0.0627229876939674, + "99.999" : 0.0627229876939674, + "99.9999" : 0.0627229876939674, + "100.0" : 0.0627229876939674 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062218338070143785, + 0.061424995368635715, + 0.06178539281941021 + ], + [ + 0.061937518054454466, + 0.06227512584381616, + 0.0627229876939674 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.760003069214069E-4, + "scoreError" : 1.1322024188618305E-5, + "scoreConfidence" : [ + 3.646782827327886E-4, + 3.873223311100252E-4 + ], + "scorePercentiles" : { + "0.0" : 3.725059712204462E-4, + "50.0" : 3.749595351790482E-4, + "90.0" : 3.837030479488953E-4, + "95.0" : 3.837030479488953E-4, + "99.0" : 3.837030479488953E-4, + "99.9" : 3.837030479488953E-4, + "99.99" : 3.837030479488953E-4, + "99.999" : 3.837030479488953E-4, + "99.9999" : 3.837030479488953E-4, + "100.0" : 3.837030479488953E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.725059712204462E-4, + 3.741678237734874E-4, + 3.7640049574240485E-4 + ], + [ + 3.734732562585984E-4, + 3.75751246584609E-4, + 3.837030479488953E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1286117464936559, + "scoreError" : 0.001409369129219998, + "scoreConfidence" : [ + 0.1272023773644359, + 0.13002111562287588 + ], + "scorePercentiles" : { + "0.0" : 0.127877823979233, + "50.0" : 0.1286863755561996, + "90.0" : 0.1293028226121362, + "95.0" : 0.1293028226121362, + "99.0" : 0.1293028226121362, + "99.9" : 0.1293028226121362, + "99.99" : 0.1293028226121362, + "99.999" : 0.1293028226121362, + "99.9999" : 0.1293028226121362, + "100.0" : 0.1293028226121362 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.127877823979233, + 0.1285704188094626, + 0.12887719842773374 + ], + [ + 0.12823988283043306, + 0.12880233230293664, + 0.1293028226121362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013020736146484774, + "scoreError" : 8.07372172896285E-5, + "scoreConfidence" : [ + 0.012939998929195146, + 0.013101473363774402 + ], + "scorePercentiles" : { + "0.0" : 0.012975599161527313, + "50.0" : 0.013022768538688166, + "90.0" : 0.013060617274260094, + "95.0" : 0.013060617274260094, + "99.0" : 0.013060617274260094, + "99.9" : 0.013060617274260094, + "99.99" : 0.013060617274260094, + "99.999" : 0.013060617274260094, + "99.9999" : 0.013060617274260094, + "100.0" : 0.013060617274260094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012975599161527313, + 0.01303725834859754, + 0.01302219344967191 + ], + [ + 0.013005405017147361, + 0.013023343627704421, + 0.013060617274260094 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.093264672094142, + "scoreError" : 0.030655672923689987, + "scoreConfidence" : [ + 1.062608999170452, + 1.123920345017832 + ], + "scorePercentiles" : { + "0.0" : 1.0813420767733564, + "50.0" : 1.0937734159830863, + "90.0" : 1.1038023586092716, + "95.0" : 1.1038023586092716, + "99.0" : 1.1038023586092716, + "99.9" : 1.1038023586092716, + "99.99" : 1.1038023586092716, + "99.999" : 1.1038023586092716, + "99.9999" : 1.1038023586092716, + "100.0" : 1.1038023586092716 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1034647006509986, + 1.1038023586092716, + 1.102232891325912 + ], + [ + 1.0853139406402605, + 1.0834320645650526, + 1.0813420767733564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01076947678615732, + "scoreError" : 0.0012862089174365315, + "scoreConfidence" : [ + 0.009483267868720788, + 0.012055685703593852 + ], + "scorePercentiles" : { + "0.0" : 0.010314508410243292, + "50.0" : 0.010767445537056889, + "90.0" : 0.011279167167067814, + "95.0" : 0.011279167167067814, + "99.0" : 0.011279167167067814, + "99.9" : 0.011279167167067814, + "99.99" : 0.011279167167067814, + "99.999" : 0.011279167167067814, + "99.9999" : 0.011279167167067814, + "100.0" : 0.011279167167067814 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010314508410243292, + 0.010401478633954351, + 0.010346670027852386 + ], + [ + 0.011141624037666647, + 0.011133412440159427, + 0.011279167167067814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.081990037463644, + "scoreError" : 0.26187695977865455, + "scoreConfidence" : [ + 2.820113077684989, + 3.3438669972422987 + ], + "scorePercentiles" : { + "0.0" : 2.9890510932456666, + "50.0" : 3.080605347862321, + "90.0" : 3.186042552866242, + "95.0" : 3.186042552866242, + "99.0" : 3.186042552866242, + "99.9" : 3.186042552866242, + "99.99" : 3.186042552866242, + "99.999" : 3.186042552866242, + "99.9999" : 3.186042552866242, + "100.0" : 3.186042552866242 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0059038389423076, + 2.9973735578190532, + 2.9890510932456666 + ], + [ + 3.1553068567823344, + 3.186042552866242, + 3.1582623251262625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8157565876808555, + "scoreError" : 0.08497694789334033, + "scoreConfidence" : [ + 2.730779639787515, + 2.900733535574196 + ], + "scorePercentiles" : { + "0.0" : 2.7805151912705033, + "50.0" : 2.813436575745383, + "90.0" : 2.8503097232829866, + "95.0" : 2.8503097232829866, + "99.0" : 2.8503097232829866, + "99.9" : 2.8503097232829866, + "99.99" : 2.8503097232829866, + "99.999" : 2.8503097232829866, + "99.9999" : 2.8503097232829866, + "100.0" : 2.8503097232829866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.801535624089636, + 2.788027971006412, + 2.7805151912705033 + ], + [ + 2.82533752740113, + 2.848813489034463, + 2.8503097232829866 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17730000919048186, + "scoreError" : 0.004476859054980772, + "scoreConfidence" : [ + 0.1728231501355011, + 0.18177686824546263 + ], + "scorePercentiles" : { + "0.0" : 0.1759902577653415, + "50.0" : 0.17676542623774572, + "90.0" : 0.18011637657823165, + "95.0" : 0.18011637657823165, + "99.0" : 0.18011637657823165, + "99.9" : 0.18011637657823165, + "99.99" : 0.18011637657823165, + "99.999" : 0.18011637657823165, + "99.9999" : 0.18011637657823165, + "100.0" : 0.18011637657823165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18011637657823165, + 0.17811741397121686, + 0.1771410426896234 + ], + [ + 0.1759902577653415, + 0.176389809785868, + 0.1760451543526098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3274763135193081, + "scoreError" : 0.027021335929683133, + "scoreConfidence" : [ + 0.30045497758962497, + 0.35449764944899126 + ], + "scorePercentiles" : { + "0.0" : 0.31752955905886837, + "50.0" : 0.3250746689283508, + "90.0" : 0.33977580959499865, + "95.0" : 0.33977580959499865, + "99.0" : 0.33977580959499865, + "99.9" : 0.33977580959499865, + "99.99" : 0.33977580959499865, + "99.999" : 0.33977580959499865, + "99.9999" : 0.33977580959499865, + "100.0" : 0.33977580959499865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3202610748759007, + 0.31752955905886837, + 0.31995019282697723 + ], + [ + 0.33977580959499865, + 0.3374529817783027, + 0.32988826298080093 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14821245076765757, + "scoreError" : 0.014948824693493979, + "scoreConfidence" : [ + 0.1332636260741636, + 0.16316127546115156 + ], + "scorePercentiles" : { + "0.0" : 0.1423789941198246, + "50.0" : 0.14889153283216483, + "90.0" : 0.153198552683988, + "95.0" : 0.153198552683988, + "99.0" : 0.153198552683988, + "99.9" : 0.153198552683988, + "99.99" : 0.153198552683988, + "99.999" : 0.153198552683988, + "99.9999" : 0.153198552683988, + "100.0" : 0.153198552683988 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14504189059712533, + 0.14283310646594205, + 0.1423789941198246 + ], + [ + 0.15308098567186113, + 0.153198552683988, + 0.1527411750672043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3979270022771164, + "scoreError" : 0.00504921754899508, + "scoreConfidence" : [ + 0.39287778472812135, + 0.4029762198261115 + ], + "scorePercentiles" : { + "0.0" : 0.3969118106370312, + "50.0" : 0.39726089769902595, + "90.0" : 0.40158917693357965, + "95.0" : 0.40158917693357965, + "99.0" : 0.40158917693357965, + "99.9" : 0.40158917693357965, + "99.99" : 0.40158917693357965, + "99.999" : 0.40158917693357965, + "99.9999" : 0.40158917693357965, + "100.0" : 0.40158917693357965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3971821769331586, + 0.39728971531860796, + 0.3973570537608773 + ], + [ + 0.40158917693357965, + 0.3972320800794439, + 0.3969118106370312 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15698157133931076, + "scoreError" : 0.01110033778686666, + "scoreConfidence" : [ + 0.1458812335524441, + 0.16808190912617743 + ], + "scorePercentiles" : { + "0.0" : 0.15289820270931442, + "50.0" : 0.1567068278305195, + "90.0" : 0.16114186169389927, + "95.0" : 0.16114186169389927, + "99.0" : 0.16114186169389927, + "99.9" : 0.16114186169389927, + "99.99" : 0.16114186169389927, + "99.999" : 0.16114186169389927, + "99.9999" : 0.16114186169389927, + "100.0" : 0.16114186169389927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16090068511069636, + 0.16114186169389927, + 0.15962033770151637 + ], + [ + 0.15353502286091536, + 0.15379331795952264, + 0.15289820270931442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04753752717638143, + "scoreError" : 0.0022810970219840723, + "scoreConfidence" : [ + 0.04525643015439736, + 0.0498186241983655 + ], + "scorePercentiles" : { + "0.0" : 0.04648255789772146, + "50.0" : 0.04755419141638124, + "90.0" : 0.04862141765609654, + "95.0" : 0.04862141765609654, + "99.0" : 0.04862141765609654, + "99.9" : 0.04862141765609654, + "99.99" : 0.04862141765609654, + "99.999" : 0.04862141765609654, + "99.9999" : 0.04862141765609654, + "100.0" : 0.04862141765609654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047094913431289444, + 0.046960301978407976, + 0.04648255789772146 + ], + [ + 0.04862141765609654, + 0.04801346940147303, + 0.04805250269330014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8840426.954699269, + "scoreError" : 223143.3744572984, + "scoreConfidence" : [ + 8617283.58024197, + 9063570.329156566 + ], + "scorePercentiles" : { + "0.0" : 8735764.425327512, + "50.0" : 8862566.415559158, + "90.0" : 8939953.336014299, + "95.0" : 8939953.336014299, + "99.0" : 8939953.336014299, + "99.9" : 8939953.336014299, + "99.99" : 8939953.336014299, + "99.999" : 8939953.336014299, + "99.9999" : 8939953.336014299, + "100.0" : 8939953.336014299 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8882317.137655417, + 8842815.693462897, + 8735764.425327512 + ], + [ + 8939953.336014299, + 8885177.596802842, + 8756533.538932633 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-04T05:58:39Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json b/performance-results/2025-07-04T05:58:39Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json new file mode 100644 index 0000000000..402e6bb938 --- /dev/null +++ b/performance-results/2025-07-04T05:58:39Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3233015473720835, + "scoreError" : 0.02386213287029164, + "scoreConfidence" : [ + 3.299439414501792, + 3.347163680242375 + ], + "scorePercentiles" : { + "0.0" : 3.3178417450494915, + "50.0" : 3.3247782982539595, + "90.0" : 3.3258078479309248, + "95.0" : 3.3258078479309248, + "99.0" : 3.3258078479309248, + "99.9" : 3.3258078479309248, + "99.99" : 3.3258078479309248, + "99.999" : 3.3258078479309248, + "99.9999" : 3.3258078479309248, + "100.0" : 3.3258078479309248 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3258078479309248, + 3.3243011500740036 + ], + [ + 3.3178417450494915, + 3.325255446433915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6854330157729682, + "scoreError" : 0.016374279653121594, + "scoreConfidence" : [ + 1.6690587361198466, + 1.7018072954260899 + ], + "scorePercentiles" : { + "0.0" : 1.6834050662533355, + "50.0" : 1.6846514630158076, + "90.0" : 1.6890240708069222, + "95.0" : 1.6890240708069222, + "99.0" : 1.6890240708069222, + "99.9" : 1.6890240708069222, + "99.99" : 1.6890240708069222, + "99.999" : 1.6890240708069222, + "99.9999" : 1.6890240708069222, + "100.0" : 1.6890240708069222 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6853700097892022, + 1.6834050662533355 + ], + [ + 1.6839329162424128, + 1.6890240708069222 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8402844882171241, + "scoreError" : 0.044364506070087885, + "scoreConfidence" : [ + 0.7959199821470362, + 0.884648994287212 + ], + "scorePercentiles" : { + "0.0" : 0.8332741510397709, + "50.0" : 0.8408242306500534, + "90.0" : 0.8462153405286185, + "95.0" : 0.8462153405286185, + "99.0" : 0.8462153405286185, + "99.9" : 0.8462153405286185, + "99.99" : 0.8462153405286185, + "99.999" : 0.8462153405286185, + "99.9999" : 0.8462153405286185, + "100.0" : 0.8462153405286185 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8355091109235648, + 0.846139350376542 + ], + [ + 0.8332741510397709, + 0.8462153405286185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.983346863123282, + "scoreError" : 0.5175247001946739, + "scoreConfidence" : [ + 15.465822162928609, + 16.500871563317958 + ], + "scorePercentiles" : { + "0.0" : 15.71308730922149, + "50.0" : 15.990099348897706, + "90.0" : 16.18345366194174, + "95.0" : 16.18345366194174, + "99.0" : 16.18345366194174, + "99.9" : 16.18345366194174, + "99.99" : 16.18345366194174, + "99.999" : 16.18345366194174, + "99.9999" : 16.18345366194174, + "100.0" : 16.18345366194174 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.18345366194174, + 16.172674538361527, + 16.032985036149828 + ], + [ + 15.947213661645584, + 15.71308730922149, + 15.85066697141952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2685.7513511606635, + "scoreError" : 263.4420271908575, + "scoreConfidence" : [ + 2422.309323969806, + 2949.193378351521 + ], + "scorePercentiles" : { + "0.0" : 2559.324739561141, + "50.0" : 2686.6226981204727, + "90.0" : 2792.169964266401, + "95.0" : 2792.169964266401, + "99.0" : 2792.169964266401, + "99.9" : 2792.169964266401, + "99.99" : 2792.169964266401, + "99.999" : 2792.169964266401, + "99.9999" : 2792.169964266401, + "100.0" : 2792.169964266401 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2559.324739561141, + 2632.6230323288096, + 2621.3300944358384 + ], + [ + 2768.437912459654, + 2792.169964266401, + 2740.6223639121363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76201.57549971544, + "scoreError" : 1338.88356449073, + "scoreConfidence" : [ + 74862.69193522472, + 77540.45906420617 + ], + "scorePercentiles" : { + "0.0" : 75452.48178102297, + "50.0" : 76371.21942271676, + "90.0" : 76673.37431985492, + "95.0" : 76673.37431985492, + "99.0" : 76673.37431985492, + "99.9" : 76673.37431985492, + "99.99" : 76673.37431985492, + "99.999" : 76673.37431985492, + "99.9999" : 76673.37431985492, + "100.0" : 76673.37431985492 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75452.48178102297, + 76279.53213501253, + 76462.90671042098 + ], + [ + 75796.54287157524, + 76673.37431985492, + 76544.6151804061 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 355.02138183383585, + "scoreError" : 4.473423820863153, + "scoreConfidence" : [ + 350.5479580129727, + 359.494805654699 + ], + "scorePercentiles" : { + "0.0" : 352.7172187854351, + "50.0" : 354.8952843264268, + "90.0" : 357.54994543897817, + "95.0" : 357.54994543897817, + "99.0" : 357.54994543897817, + "99.9" : 357.54994543897817, + "99.99" : 357.54994543897817, + "99.999" : 357.54994543897817, + "99.9999" : 357.54994543897817, + "100.0" : 357.54994543897817 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 357.54994543897817, + 355.65806019692286, + 354.41249792882513 + ], + [ + 352.7172187854351, + 354.5684302906722, + 355.2221383621814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.7246171186274, + "scoreError" : 3.7255123292650167, + "scoreConfidence" : [ + 110.99910478936239, + 118.45012944789242 + ], + "scorePercentiles" : { + "0.0" : 112.77792707028043, + "50.0" : 114.79055506261317, + "90.0" : 116.69147337737861, + "95.0" : 116.69147337737861, + "99.0" : 116.69147337737861, + "99.9" : 116.69147337737861, + "99.99" : 116.69147337737861, + "99.999" : 116.69147337737861, + "99.9999" : 116.69147337737861, + "100.0" : 116.69147337737861 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.69147337737861, + 115.3935931400004, + 114.65481237146845 + ], + [ + 113.90359899887869, + 114.92629775375788, + 112.77792707028043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06279275174251553, + "scoreError" : 0.0017315571428124618, + "scoreConfidence" : [ + 0.061061194599703064, + 0.064524308885328 + ], + "scorePercentiles" : { + "0.0" : 0.0620837101164054, + "50.0" : 0.06271956483240969, + "90.0" : 0.06377590104718052, + "95.0" : 0.06377590104718052, + "99.0" : 0.06377590104718052, + "99.9" : 0.06377590104718052, + "99.99" : 0.06377590104718052, + "99.999" : 0.06377590104718052, + "99.9999" : 0.06377590104718052, + "100.0" : 0.06377590104718052 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0620837101164054, + 0.06229525981137247, + 0.06257428105348126 + ], + [ + 0.06286484861133812, + 0.06377590104718052, + 0.06316250981531543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.811345319612806E-4, + "scoreError" : 5.053153374270462E-5, + "scoreConfidence" : [ + 3.30602998218576E-4, + 4.3166606570398526E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6284439455391333E-4, + "50.0" : 3.8109618528231503E-4, + "90.0" : 4.0249718080478367E-4, + "95.0" : 4.0249718080478367E-4, + "99.0" : 4.0249718080478367E-4, + "99.9" : 4.0249718080478367E-4, + "99.99" : 4.0249718080478367E-4, + "99.999" : 4.0249718080478367E-4, + "99.9999" : 4.0249718080478367E-4, + "100.0" : 4.0249718080478367E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9367227448069915E-4, + 3.956352069015953E-4, + 4.0249718080478367E-4 + ], + [ + 3.6284439455391333E-4, + 3.636380389427614E-4, + 3.6852009608393085E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.13109199782479133, + "scoreError" : 0.003971364865176752, + "scoreConfidence" : [ + 0.1271206329596146, + 0.13506336268996808 + ], + "scorePercentiles" : { + "0.0" : 0.12980312457003415, + "50.0" : 0.1308906781469002, + "90.0" : 0.1331832480489039, + "95.0" : 0.1331832480489039, + "99.0" : 0.1331832480489039, + "99.9" : 0.1331832480489039, + "99.99" : 0.1331832480489039, + "99.999" : 0.1331832480489039, + "99.9999" : 0.1331832480489039, + "100.0" : 0.1331832480489039 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1298393443391327, + 0.12999170459774598, + 0.12980312457003415 + ], + [ + 0.1317896516960544, + 0.13194491369687694, + 0.1331832480489039 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012930163833154422, + "scoreError" : 4.340288036853427E-4, + "scoreConfidence" : [ + 0.012496135029469078, + 0.013364192636839765 + ], + "scorePercentiles" : { + "0.0" : 0.012776318978932171, + "50.0" : 0.01293451590469918, + "90.0" : 0.013080545458231743, + "95.0" : 0.013080545458231743, + "99.0" : 0.013080545458231743, + "99.9" : 0.013080545458231743, + "99.99" : 0.013080545458231743, + "99.999" : 0.013080545458231743, + "99.9999" : 0.013080545458231743, + "100.0" : 0.013080545458231743 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01307416622411185, + 0.013080545458231743, + 0.013057908489068099 + ], + [ + 0.012811123320330265, + 0.012780920528252403, + 0.012776318978932171 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0844811976047588, + "scoreError" : 0.02104566505039116, + "scoreConfidence" : [ + 1.0634355325543676, + 1.10552686265515 + ], + "scorePercentiles" : { + "0.0" : 1.0775616377545523, + "50.0" : 1.0830124945462791, + "90.0" : 1.0982940855479904, + "95.0" : 1.0982940855479904, + "99.0" : 1.0982940855479904, + "99.9" : 1.0982940855479904, + "99.99" : 1.0982940855479904, + "99.999" : 1.0982940855479904, + "99.9999" : 1.0982940855479904, + "100.0" : 1.0982940855479904 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.085861358849077, + 1.0775616377545523, + 1.0982940855479904 + ], + [ + 1.0791451143843747, + 1.0809799274673009, + 1.0850450616252576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011104517140232174, + "scoreError" : 7.446308431767102E-4, + "scoreConfidence" : [ + 0.010359886297055464, + 0.011849147983408885 + ], + "scorePercentiles" : { + "0.0" : 0.01081200276339859, + "50.0" : 0.011092823028238621, + "90.0" : 0.011457501020831377, + "95.0" : 0.011457501020831377, + "99.0" : 0.011457501020831377, + "99.9" : 0.011457501020831377, + "99.99" : 0.011457501020831377, + "99.999" : 0.011457501020831377, + "99.9999" : 0.011457501020831377, + "100.0" : 0.011457501020831377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010889363835732191, + 0.01091375906572899, + 0.01081200276339859 + ], + [ + 0.011457501020831377, + 0.011282589164953642, + 0.011271886990748254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.333994104913327, + "scoreError" : 0.31103947138207233, + "scoreConfidence" : [ + 3.0229546335312545, + 3.6450335762953996 + ], + "scorePercentiles" : { + "0.0" : 3.22893523692705, + "50.0" : 3.3108708894015573, + "90.0" : 3.504104070077085, + "95.0" : 3.504104070077085, + "99.0" : 3.504104070077085, + "99.9" : 3.504104070077085, + "99.99" : 3.504104070077085, + "99.999" : 3.504104070077085, + "99.9999" : 3.504104070077085, + "100.0" : 3.504104070077085 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.369503977762803, + 3.4065040722070843, + 3.504104070077085 + ], + [ + 3.242679471465629, + 3.22893523692705, + 3.252237801040312 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8536313516660896, + "scoreError" : 0.11059181611693907, + "scoreConfidence" : [ + 2.7430395355491504, + 2.964223167783029 + ], + "scorePercentiles" : { + "0.0" : 2.81440027855937, + "50.0" : 2.850127059632415, + "90.0" : 2.922285966111598, + "95.0" : 2.922285966111598, + "99.0" : 2.922285966111598, + "99.9" : 2.922285966111598, + "99.99" : 2.922285966111598, + "99.999" : 2.922285966111598, + "99.9999" : 2.922285966111598, + "100.0" : 2.922285966111598 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.81440027855937, + 2.818012483234714, + 2.844803478100114 + ], + [ + 2.922285966111598, + 2.8668352628260245, + 2.855450641164716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1779223704763966, + "scoreError" : 0.005796313879332599, + "scoreConfidence" : [ + 0.172126056597064, + 0.18371868435572922 + ], + "scorePercentiles" : { + "0.0" : 0.1754829869092951, + "50.0" : 0.17826857401539326, + "90.0" : 0.18029101718138713, + "95.0" : 0.18029101718138713, + "99.0" : 0.18029101718138713, + "99.9" : 0.18029101718138713, + "99.99" : 0.18029101718138713, + "99.999" : 0.18029101718138713, + "99.9999" : 0.18029101718138713, + "100.0" : 0.18029101718138713 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18029101718138713, + 0.17938147884266983, + 0.17946784113709374 + ], + [ + 0.1757552295998172, + 0.1754829869092951, + 0.1771556691881167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3291860465021783, + "scoreError" : 0.0063159190303111006, + "scoreConfidence" : [ + 0.3228701274718672, + 0.3355019655324894 + ], + "scorePercentiles" : { + "0.0" : 0.32666764593473363, + "50.0" : 0.3291065716023091, + "90.0" : 0.33299979427924475, + "95.0" : 0.33299979427924475, + "99.0" : 0.33299979427924475, + "99.9" : 0.33299979427924475, + "99.99" : 0.33299979427924475, + "99.999" : 0.33299979427924475, + "99.9999" : 0.33299979427924475, + "100.0" : 0.33299979427924475 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32666764593473363, + 0.3272453779901175, + 0.32926778545322843 + ], + [ + 0.3289453577513898, + 0.33299979427924475, + 0.3299903176043557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.149413082509113, + "scoreError" : 0.024819846947753115, + "scoreConfidence" : [ + 0.12459323556135989, + 0.1742329294568661 + ], + "scorePercentiles" : { + "0.0" : 0.14083324044108328, + "50.0" : 0.1497588124115123, + "90.0" : 0.15782029568373707, + "95.0" : 0.15782029568373707, + "99.0" : 0.15782029568373707, + "99.9" : 0.15782029568373707, + "99.99" : 0.15782029568373707, + "99.999" : 0.15782029568373707, + "99.9999" : 0.15782029568373707, + "100.0" : 0.15782029568373707 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1423078943676002, + 0.14083324044108328, + 0.14090746299845006 + ], + [ + 0.15782029568373707, + 0.1573998711083829, + 0.15720973045542438 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4046092111966606, + "scoreError" : 0.004078930328007259, + "scoreConfidence" : [ + 0.40053028086865333, + 0.40868814152466787 + ], + "scorePercentiles" : { + "0.0" : 0.4028121823088697, + "50.0" : 0.4043870153615131, + "90.0" : 0.4063646225771059, + "95.0" : 0.4063646225771059, + "99.0" : 0.4063646225771059, + "99.9" : 0.4063646225771059, + "99.99" : 0.4063646225771059, + "99.999" : 0.4063646225771059, + "99.9999" : 0.4063646225771059, + "100.0" : 0.4063646225771059 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4062440527684121, + 0.40408948117019555, + 0.40468454955283073 + ], + [ + 0.4063646225771059, + 0.4034603788025498, + 0.4028121823088697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1564718776358229, + "scoreError" : 0.0036802843827632155, + "scoreConfidence" : [ + 0.1527915932530597, + 0.16015216201858612 + ], + "scorePercentiles" : { + "0.0" : 0.15500489808729617, + "50.0" : 0.1562280147463201, + "90.0" : 0.1581943587914261, + "95.0" : 0.1581943587914261, + "99.0" : 0.1581943587914261, + "99.9" : 0.1581943587914261, + "99.99" : 0.1581943587914261, + "99.999" : 0.1581943587914261, + "99.9999" : 0.1581943587914261, + "100.0" : 0.1581943587914261 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15500489808729617, + 0.15579941976443462, + 0.1553673269478754 + ], + [ + 0.1581943587914261, + 0.15780865249569978, + 0.15665660972820553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04770177718638726, + "scoreError" : 0.0012206843363661952, + "scoreConfidence" : [ + 0.04648109285002106, + 0.04892246152275346 + ], + "scorePercentiles" : { + "0.0" : 0.04739612044115626, + "50.0" : 0.047463216718565696, + "90.0" : 0.04842430951228016, + "95.0" : 0.04842430951228016, + "99.0" : 0.04842430951228016, + "99.9" : 0.04842430951228016, + "99.99" : 0.04842430951228016, + "99.999" : 0.04842430951228016, + "99.9999" : 0.04842430951228016, + "100.0" : 0.04842430951228016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04742685051267702, + 0.04740501806580675, + 0.04739612044115626 + ], + [ + 0.048058781661948956, + 0.04842430951228016, + 0.047499582924454366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8652808.40043153, + "scoreError" : 347713.6176915485, + "scoreConfidence" : [ + 8305094.782739982, + 9000522.01812308 + ], + "scorePercentiles" : { + "0.0" : 8493101.295415958, + "50.0" : 8672612.843025256, + "90.0" : 8774329.630701754, + "95.0" : 8774329.630701754, + "99.0" : 8774329.630701754, + "99.9" : 8774329.630701754, + "99.99" : 8774329.630701754, + "99.999" : 8774329.630701754, + "99.9999" : 8774329.630701754, + "100.0" : 8774329.630701754 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8764825.302366346, + 8774329.630701754, + 8744734.098776223 + ], + [ + 8539368.488054607, + 8493101.295415958, + 8600491.58727429 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-04T06:01:13Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json b/performance-results/2025-07-04T06:01:13Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json new file mode 100644 index 0000000000..084cb7ae78 --- /dev/null +++ b/performance-results/2025-07-04T06:01:13Z-52bdcf19bbbd38425db05beebee12a9416f45542-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3500725580646846, + "scoreError" : 0.04194196075777726, + "scoreConfidence" : [ + 3.3081305973069073, + 3.392014518822462 + ], + "scorePercentiles" : { + "0.0" : 3.341338862182018, + "50.0" : 3.350956431619352, + "90.0" : 3.357038506838016, + "95.0" : 3.357038506838016, + "99.0" : 3.357038506838016, + "99.9" : 3.357038506838016, + "99.99" : 3.357038506838016, + "99.999" : 3.357038506838016, + "99.9999" : 3.357038506838016, + "100.0" : 3.357038506838016 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3508617073502753, + 3.357038506838016 + ], + [ + 3.341338862182018, + 3.351051155888429 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.692582888762888, + "scoreError" : 0.03688262082282431, + "scoreConfidence" : [ + 1.6557002679400636, + 1.7294655095857123 + ], + "scorePercentiles" : { + "0.0" : 1.6852540969269847, + "50.0" : 1.6935580510912405, + "90.0" : 1.6979613559420867, + "95.0" : 1.6979613559420867, + "99.0" : 1.6979613559420867, + "99.9" : 1.6979613559420867, + "99.99" : 1.6979613559420867, + "99.999" : 1.6979613559420867, + "99.9999" : 1.6979613559420867, + "100.0" : 1.6979613559420867 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6909899764015754, + 1.6979613559420867 + ], + [ + 1.6852540969269847, + 1.6961261257809055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8500638292472653, + "scoreError" : 0.029291617594760833, + "scoreConfidence" : [ + 0.8207722116525045, + 0.8793554468420262 + ], + "scorePercentiles" : { + "0.0" : 0.8443811995128514, + "50.0" : 0.850430680471193, + "90.0" : 0.8550127565338237, + "95.0" : 0.8550127565338237, + "99.0" : 0.8550127565338237, + "99.9" : 0.8550127565338237, + "99.99" : 0.8550127565338237, + "99.999" : 0.8550127565338237, + "99.9999" : 0.8550127565338237, + "100.0" : 0.8550127565338237 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8519453593620813, + 0.8550127565338237 + ], + [ + 0.8443811995128514, + 0.8489160015803047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.29526577215442, + "scoreError" : 0.5578150790049303, + "scoreConfidence" : [ + 15.737450693149489, + 16.853080851159348 + ], + "scorePercentiles" : { + "0.0" : 16.06880658941637, + "50.0" : 16.300167743808423, + "90.0" : 16.514787487714607, + "95.0" : 16.514787487714607, + "99.0" : 16.514787487714607, + "99.9" : 16.514787487714607, + "99.99" : 16.514787487714607, + "99.999" : 16.514787487714607, + "99.9999" : 16.514787487714607, + "100.0" : 16.514787487714607 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.06880658941637, + 16.11111479943471, + 16.17456317366347 + ], + [ + 16.425772313953374, + 16.476550268743996, + 16.514787487714607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2719.3390505525326, + "scoreError" : 144.8300863697524, + "scoreConfidence" : [ + 2574.5089641827803, + 2864.169136922285 + ], + "scorePercentiles" : { + "0.0" : 2667.9730695619264, + "50.0" : 2720.197683089517, + "90.0" : 2767.244563568595, + "95.0" : 2767.244563568595, + "99.0" : 2767.244563568595, + "99.9" : 2767.244563568595, + "99.99" : 2767.244563568595, + "99.999" : 2767.244563568595, + "99.9999" : 2767.244563568595, + "100.0" : 2767.244563568595 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2765.7859362232207, + 2766.278561460637, + 2767.244563568595 + ], + [ + 2674.609429955813, + 2674.142742545004, + 2667.9730695619264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76544.68390482895, + "scoreError" : 169.1299010954944, + "scoreConfidence" : [ + 76375.55400373346, + 76713.81380592445 + ], + "scorePercentiles" : { + "0.0" : 76450.52293716864, + "50.0" : 76562.29305717247, + "90.0" : 76610.52052003574, + "95.0" : 76610.52052003574, + "99.0" : 76610.52052003574, + "99.9" : 76610.52052003574, + "99.99" : 76610.52052003574, + "99.999" : 76610.52052003574, + "99.9999" : 76610.52052003574, + "100.0" : 76610.52052003574 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76577.4123222941, + 76547.17379205086, + 76610.52052003574 + ], + [ + 76450.52293716864, + 76585.32004487883, + 76497.15381254557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.379381293902, + "scoreError" : 4.166390488642571, + "scoreConfidence" : [ + 358.21299080525944, + 366.54577178254453 + ], + "scorePercentiles" : { + "0.0" : 360.4523875197254, + "50.0" : 362.45704233371777, + "90.0" : 363.97303069034496, + "95.0" : 363.97303069034496, + "99.0" : 363.97303069034496, + "99.9" : 363.97303069034496, + "99.99" : 363.97303069034496, + "99.999" : 363.97303069034496, + "99.9999" : 363.97303069034496, + "100.0" : 363.97303069034496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 362.0003655895777, + 363.97303069034496, + 363.9414160954921 + ], + [ + 360.9953687904138, + 360.4523875197254, + 362.9137190778578 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.14665569399104, + "scoreError" : 8.306301674587809, + "scoreConfidence" : [ + 107.84035401940322, + 124.45295736857885 + ], + "scorePercentiles" : { + "0.0" : 113.12450181610805, + "50.0" : 116.12419738459572, + "90.0" : 119.16251002056491, + "95.0" : 119.16251002056491, + "99.0" : 119.16251002056491, + "99.9" : 119.16251002056491, + "99.99" : 119.16251002056491, + "99.999" : 119.16251002056491, + "99.9999" : 119.16251002056491, + "100.0" : 119.16251002056491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.76256176478627, + 113.48110809635233, + 113.12450181610805 + ], + [ + 119.16251002056491, + 118.86341946172942, + 118.48583300440517 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061146793957996354, + "scoreError" : 2.7648286613596865E-4, + "scoreConfidence" : [ + 0.060870311091860384, + 0.061423276824132324 + ], + "scorePercentiles" : { + "0.0" : 0.06103525587456208, + "50.0" : 0.06114801436808863, + "90.0" : 0.06128008322303111, + "95.0" : 0.06128008322303111, + "99.0" : 0.06128008322303111, + "99.9" : 0.06128008322303111, + "99.99" : 0.06128008322303111, + "99.999" : 0.06128008322303111, + "99.9999" : 0.06128008322303111, + "100.0" : 0.06128008322303111 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06128008322303111, + 0.061184514515763906, + 0.06122255979209139 + ], + [ + 0.06104683612211634, + 0.06103525587456208, + 0.06111151422041335 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5647121084516183E-4, + "scoreError" : 2.619131817377669E-5, + "scoreConfidence" : [ + 3.3027989267138516E-4, + 3.826625290189385E-4 + ], + "scorePercentiles" : { + "0.0" : 3.4763775625082843E-4, + "50.0" : 3.563446240873886E-4, + "90.0" : 3.653637245117119E-4, + "95.0" : 3.653637245117119E-4, + "99.0" : 3.653637245117119E-4, + "99.9" : 3.653637245117119E-4, + "99.99" : 3.653637245117119E-4, + "99.999" : 3.653637245117119E-4, + "99.9999" : 3.653637245117119E-4, + "100.0" : 3.653637245117119E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.645490262089927E-4, + 3.653637245117119E-4, + 3.6506541747342153E-4 + ], + [ + 3.4763775625082843E-4, + 3.481402219657846E-4, + 3.480711186602321E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12586257494255446, + "scoreError" : 0.0038474665319434406, + "scoreConfidence" : [ + 0.12201510841061101, + 0.12971004147449788 + ], + "scorePercentiles" : { + "0.0" : 0.12453125221971782, + "50.0" : 0.12582808264594852, + "90.0" : 0.12730493236413631, + "95.0" : 0.12730493236413631, + "99.0" : 0.12730493236413631, + "99.9" : 0.12730493236413631, + "99.99" : 0.12730493236413631, + "99.999" : 0.12730493236413631, + "99.9999" : 0.12730493236413631, + "100.0" : 0.12730493236413631 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12477112111192903, + 0.12455273171916452, + 0.12453125221971782 + ], + [ + 0.12688504417996802, + 0.12730493236413631, + 0.12713036806041114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012867241822973845, + "scoreError" : 3.5674173458045895E-4, + "scoreConfidence" : [ + 0.012510500088393385, + 0.013223983557554305 + ], + "scorePercentiles" : { + "0.0" : 0.012737975367676093, + "50.0" : 0.01287252940963858, + "90.0" : 0.01298491315277601, + "95.0" : 0.01298491315277601, + "99.0" : 0.01298491315277601, + "99.9" : 0.01298491315277601, + "99.99" : 0.01298491315277601, + "99.999" : 0.01298491315277601, + "99.9999" : 0.01298491315277601, + "100.0" : 0.01298491315277601 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012982692845069106, + 0.01298491315277601, + 0.012981813048637056 + ], + [ + 0.012752810753044698, + 0.012763245770640107, + 0.012737975367676093 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.1340015385480036, + "scoreError" : 0.12730010224125868, + "scoreConfidence" : [ + 1.0067014363067448, + 1.2613016407892623 + ], + "scorePercentiles" : { + "0.0" : 1.0915954262169831, + "50.0" : 1.1339126950459173, + "90.0" : 1.1759154796002351, + "95.0" : 1.1759154796002351, + "99.0" : 1.1759154796002351, + "99.9" : 1.1759154796002351, + "99.99" : 1.1759154796002351, + "99.999" : 1.1759154796002351, + "99.9999" : 1.1759154796002351, + "100.0" : 1.1759154796002351 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1756312722463853, + 1.1747683332550218, + 1.1759154796002351 + ], + [ + 1.0930416631325828, + 1.0915954262169831, + 1.0930570568368128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011408165491865949, + "scoreError" : 0.0010844108086044875, + "scoreConfidence" : [ + 0.01032375468326146, + 0.012492576300470437 + ], + "scorePercentiles" : { + "0.0" : 0.011053376555450183, + "50.0" : 0.011407695387048528, + "90.0" : 0.011766439164321282, + "95.0" : 0.011766439164321282, + "99.0" : 0.011766439164321282, + "99.9" : 0.011766439164321282, + "99.99" : 0.011766439164321282, + "99.999" : 0.011766439164321282, + "99.9999" : 0.011766439164321282, + "100.0" : 0.011766439164321282 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011053376555450183, + 0.011058010007253876, + 0.011054097479069623 + ], + [ + 0.011757380766843179, + 0.011766439164321282, + 0.011759688978257547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1989598753194195, + "scoreError" : 0.15695047164652745, + "scoreConfidence" : [ + 3.042009403672892, + 3.355910346965947 + ], + "scorePercentiles" : { + "0.0" : 3.1439406530483973, + "50.0" : 3.196734009650096, + "90.0" : 3.257687003908795, + "95.0" : 3.257687003908795, + "99.0" : 3.257687003908795, + "99.9" : 3.257687003908795, + "99.99" : 3.257687003908795, + "99.999" : 3.257687003908795, + "99.9999" : 3.257687003908795, + "100.0" : 3.257687003908795 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1536363619167718, + 3.1439406530483973, + 3.1470716595342982 + ], + [ + 3.2515919161248377, + 3.257687003908795, + 3.23983165738342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.753497233629058, + "scoreError" : 0.021138909173763303, + "scoreConfidence" : [ + 2.7323583244552947, + 2.7746361428028217 + ], + "scorePercentiles" : { + "0.0" : 2.744687479418222, + "50.0" : 2.7542216562759188, + "90.0" : 2.7658151789269914, + "95.0" : 2.7658151789269914, + "99.0" : 2.7658151789269914, + "99.9" : 2.7658151789269914, + "99.99" : 2.7658151789269914, + "99.999" : 2.7658151789269914, + "99.9999" : 2.7658151789269914, + "100.0" : 2.7658151789269914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7658151789269914, + 2.7554722567493113, + 2.744687479418222 + ], + [ + 2.755166500275482, + 2.7465651741279866, + 2.7532768122763556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1794522531389187, + "scoreError" : 0.003844117348925061, + "scoreConfidence" : [ + 0.17560813578999362, + 0.18329637048784375 + ], + "scorePercentiles" : { + "0.0" : 0.17858327411693276, + "50.0" : 0.1790348205393349, + "90.0" : 0.18220874551318259, + "95.0" : 0.18220874551318259, + "99.0" : 0.18220874551318259, + "99.9" : 0.18220874551318259, + "99.99" : 0.18220874551318259, + "99.999" : 0.18220874551318259, + "99.9999" : 0.18220874551318259, + "100.0" : 0.18220874551318259 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18220874551318259, + 0.17858327411693276, + 0.17867991259134847 + ], + [ + 0.17913275350195249, + 0.17917194553337873, + 0.1789368875767173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32986299242006795, + "scoreError" : 0.00217983133936684, + "scoreConfidence" : [ + 0.3276831610807011, + 0.3320428237594348 + ], + "scorePercentiles" : { + "0.0" : 0.3290730533416697, + "50.0" : 0.32983079635338886, + "90.0" : 0.330833399100172, + "95.0" : 0.330833399100172, + "99.0" : 0.330833399100172, + "99.9" : 0.330833399100172, + "99.99" : 0.330833399100172, + "99.999" : 0.330833399100172, + "99.9999" : 0.330833399100172, + "100.0" : 0.330833399100172 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3304542961139383, + 0.330833399100172, + 0.3303801436122766 + ], + [ + 0.3290730533416697, + 0.32928144909450113, + 0.32915561325785003 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14425143101892393, + "scoreError" : 0.00204122626266484, + "scoreConfidence" : [ + 0.1422102047562591, + 0.14629265728158877 + ], + "scorePercentiles" : { + "0.0" : 0.14348940708536007, + "50.0" : 0.14424958230627327, + "90.0" : 0.14513155353022278, + "95.0" : 0.14513155353022278, + "99.0" : 0.14513155353022278, + "99.9" : 0.14513155353022278, + "99.99" : 0.14513155353022278, + "99.999" : 0.14513155353022278, + "99.9999" : 0.14513155353022278, + "100.0" : 0.14513155353022278 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14348940708536007, + 0.14357860815506102, + 0.14373503581797797 + ], + [ + 0.14513155353022278, + 0.14480985273035318, + 0.14476412879456854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40425709775325186, + "scoreError" : 0.013424458440701779, + "scoreConfidence" : [ + 0.3908326393125501, + 0.41768155619395364 + ], + "scorePercentiles" : { + "0.0" : 0.39627328871453477, + "50.0" : 0.40533617371336095, + "90.0" : 0.40966577501945844, + "95.0" : 0.40966577501945844, + "99.0" : 0.40966577501945844, + "99.9" : 0.40966577501945844, + "99.99" : 0.40966577501945844, + "99.999" : 0.40966577501945844, + "99.9999" : 0.40966577501945844, + "100.0" : 0.40966577501945844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40750355401165395, + 0.40966577501945844, + 0.4059368249238888 + ], + [ + 0.40473552250283307, + 0.40142762134714194, + 0.39627328871453477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15352778244750315, + "scoreError" : 0.0013621800589627478, + "scoreConfidence" : [ + 0.1521656023885404, + 0.1548899625064659 + ], + "scorePercentiles" : { + "0.0" : 0.15305123913742175, + "50.0" : 0.15353682117903084, + "90.0" : 0.15404932877872943, + "95.0" : 0.15404932877872943, + "99.0" : 0.15404932877872943, + "99.9" : 0.15404932877872943, + "99.99" : 0.15404932877872943, + "99.999" : 0.15404932877872943, + "99.9999" : 0.15404932877872943, + "100.0" : 0.15404932877872943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15315545479745768, + 0.15305123913742175, + 0.15305595371688324 + ], + [ + 0.1539365306939228, + 0.15391818756060396, + 0.15404932877872943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046570546393412314, + "scoreError" : 6.883326908825211E-4, + "scoreConfidence" : [ + 0.045882213702529796, + 0.04725887908429483 + ], + "scorePercentiles" : { + "0.0" : 0.04637265599076311, + "50.0" : 0.04649219567312299, + "90.0" : 0.04705325463819055, + "95.0" : 0.04705325463819055, + "99.0" : 0.04705325463819055, + "99.9" : 0.04705325463819055, + "99.99" : 0.04705325463819055, + "99.999" : 0.04705325463819055, + "99.9999" : 0.04705325463819055, + "100.0" : 0.04705325463819055 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046488068355089444, + 0.04644098458180467, + 0.04649632299115653 + ], + [ + 0.04705325463819055, + 0.046571991803469555, + 0.04637265599076311 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8658541.392568666, + "scoreError" : 609930.2638127445, + "scoreConfidence" : [ + 8048611.1287559215, + 9268471.656381411 + ], + "scorePercentiles" : { + "0.0" : 8439101.735864978, + "50.0" : 8657563.667085737, + "90.0" : 8885968.184724689, + "95.0" : 8885968.184724689, + "99.0" : 8885968.184724689, + "99.9" : 8885968.184724689, + "99.99" : 8885968.184724689, + "99.999" : 8885968.184724689, + "99.9999" : 8885968.184724689, + "100.0" : 8885968.184724689 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8444694.48185654, + 8503047.969413763, + 8439101.735864978 + ], + [ + 8885968.184724689, + 8866356.618794326, + 8812079.36475771 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-04T06:34:06Z-309fa9df4d8fe7013cc2f85590ec8499c87a598f-jdk17.json b/performance-results/2025-07-04T06:34:06Z-309fa9df4d8fe7013cc2f85590ec8499c87a598f-jdk17.json new file mode 100644 index 0000000000..103870983c --- /dev/null +++ b/performance-results/2025-07-04T06:34:06Z-309fa9df4d8fe7013cc2f85590ec8499c87a598f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.310779230008781, + "scoreError" : 0.05632580666148456, + "scoreConfidence" : [ + 3.2544534233472966, + 3.3671050366702655 + ], + "scorePercentiles" : { + "0.0" : 3.3014928548718276, + "50.0" : 3.3114967271433793, + "90.0" : 3.318630610876537, + "95.0" : 3.318630610876537, + "99.0" : 3.318630610876537, + "99.9" : 3.318630610876537, + "99.99" : 3.318630610876537, + "99.999" : 3.318630610876537, + "99.9999" : 3.318630610876537, + "100.0" : 3.318630610876537 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3014928548718276, + 3.317782447881846 + ], + [ + 3.3052110064049125, + 3.318630610876537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.666751293523411, + "scoreError" : 0.0561262389375135, + "scoreConfidence" : [ + 1.6106250545858976, + 1.7228775324609245 + ], + "scorePercentiles" : { + "0.0" : 1.6599736195078536, + "50.0" : 1.6643052774174847, + "90.0" : 1.6784209997508208, + "95.0" : 1.6784209997508208, + "99.0" : 1.6784209997508208, + "99.9" : 1.6784209997508208, + "99.99" : 1.6784209997508208, + "99.999" : 1.6784209997508208, + "99.9999" : 1.6784209997508208, + "100.0" : 1.6784209997508208 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6599736195078536, + 1.6602906840933942 + ], + [ + 1.6683198707415754, + 1.6784209997508208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8417482969892729, + "scoreError" : 0.023149148147354023, + "scoreConfidence" : [ + 0.8185991488419189, + 0.8648974451366269 + ], + "scorePercentiles" : { + "0.0" : 0.8377894734843169, + "50.0" : 0.8413580260699426, + "90.0" : 0.8464876623328894, + "95.0" : 0.8464876623328894, + "99.0" : 0.8464876623328894, + "99.9" : 0.8464876623328894, + "99.99" : 0.8464876623328894, + "99.999" : 0.8464876623328894, + "99.9999" : 0.8464876623328894, + "100.0" : 0.8464876623328894 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8377894734843169, + 0.8411828978264981 + ], + [ + 0.841533154313387, + 0.8464876623328894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.889693198569367, + "scoreError" : 0.5775976886996227, + "scoreConfidence" : [ + 15.312095509869744, + 16.46729088726899 + ], + "scorePercentiles" : { + "0.0" : 15.691093648656713, + "50.0" : 15.893844337554953, + "90.0" : 16.08341958397121, + "95.0" : 16.08341958397121, + "99.0" : 16.08341958397121, + "99.9" : 16.08341958397121, + "99.99" : 16.08341958397121, + "99.999" : 16.08341958397121, + "99.9999" : 16.08341958397121, + "100.0" : 16.08341958397121 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.08341958397121, + 16.067222618682155, + 16.08162822569627 + ], + [ + 15.694329057982097, + 15.691093648656713, + 15.72046605642775 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2589.365066588849, + "scoreError" : 74.89636178891053, + "scoreConfidence" : [ + 2514.4687047999387, + 2664.2614283777593 + ], + "scorePercentiles" : { + "0.0" : 2558.990799096778, + "50.0" : 2589.8837581422927, + "90.0" : 2619.9599495184384, + "95.0" : 2619.9599495184384, + "99.0" : 2619.9599495184384, + "99.9" : 2619.9599495184384, + "99.99" : 2619.9599495184384, + "99.999" : 2619.9599495184384, + "99.9999" : 2619.9599495184384, + "100.0" : 2619.9599495184384 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2619.9599495184384, + 2609.431316398439, + 2610.4455581122666 + ], + [ + 2558.990799096778, + 2570.3361998861465, + 2567.0265765210233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75986.62216798366, + "scoreError" : 2421.5315160719383, + "scoreConfidence" : [ + 73565.09065191173, + 78408.1536840556 + ], + "scorePercentiles" : { + "0.0" : 75172.77276406018, + "50.0" : 75992.71742034989, + "90.0" : 76794.62769536201, + "95.0" : 76794.62769536201, + "99.0" : 76794.62769536201, + "99.9" : 76794.62769536201, + "99.99" : 76794.62769536201, + "99.999" : 76794.62769536201, + "99.9999" : 76794.62769536201, + "100.0" : 76794.62769536201 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76772.83721825983, + 76794.62769536201, + 76756.56724347614 + ], + [ + 75172.77276406018, + 75194.06048952017, + 75228.86759722362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 334.4355494104156, + "scoreError" : 4.688730227725187, + "scoreConfidence" : [ + 329.74681918269044, + 339.12427963814076 + ], + "scorePercentiles" : { + "0.0" : 331.8032716816492, + "50.0" : 334.6263901503445, + "90.0" : 336.14359413008856, + "95.0" : 336.14359413008856, + "99.0" : 336.14359413008856, + "99.9" : 336.14359413008856, + "99.99" : 336.14359413008856, + "99.999" : 336.14359413008856, + "99.9999" : 336.14359413008856, + "100.0" : 336.14359413008856 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 331.8032716816492, + 336.0002439131839, + 336.14359413008856 + ], + [ + 333.413406436883, + 335.1586057671727, + 334.0941745335163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 102.81566102614795, + "scoreError" : 7.317487885811224, + "scoreConfidence" : [ + 95.49817314033673, + 110.13314891195917 + ], + "scorePercentiles" : { + "0.0" : 100.01337366643226, + "50.0" : 102.8093900629585, + "90.0" : 106.00965306115933, + "95.0" : 106.00965306115933, + "99.0" : 106.00965306115933, + "99.9" : 106.00965306115933, + "99.99" : 106.00965306115933, + "99.999" : 106.00965306115933, + "99.9999" : 106.00965306115933, + "100.0" : 106.00965306115933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.71390147623063, + 104.70711805361874, + 106.00965306115933 + ], + [ + 100.01337366643226, + 100.91166207229824, + 100.53825782714857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06258784679799705, + "scoreError" : 3.6649498655505545E-4, + "scoreConfidence" : [ + 0.06222135181144199, + 0.0629543417845521 + ], + "scorePercentiles" : { + "0.0" : 0.06233805733770525, + "50.0" : 0.06261126664259425, + "90.0" : 0.06272414579347806, + "95.0" : 0.06272414579347806, + "99.0" : 0.06272414579347806, + "99.9" : 0.06272414579347806, + "99.99" : 0.06272414579347806, + "99.999" : 0.06272414579347806, + "99.9999" : 0.06272414579347806, + "100.0" : 0.06272414579347806 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06233805733770525, + 0.06261216871822485, + 0.06259756291038376 + ], + [ + 0.06272414579347806, + 0.06264478146122669, + 0.06261036456696364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7058941333374613E-4, + "scoreError" : 1.8777290496220368E-5, + "scoreConfidence" : [ + 3.5181212283752575E-4, + 3.893667038299665E-4 + ], + "scorePercentiles" : { + "0.0" : 3.641316806545124E-4, + "50.0" : 3.707258980845138E-4, + "90.0" : 3.767821805799545E-4, + "95.0" : 3.767821805799545E-4, + "99.0" : 3.767821805799545E-4, + "99.9" : 3.767821805799545E-4, + "99.99" : 3.767821805799545E-4, + "99.999" : 3.767821805799545E-4, + "99.9999" : 3.767821805799545E-4, + "100.0" : 3.767821805799545E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6446115330064595E-4, + 3.641316806545124E-4, + 3.648484013812049E-4 + ], + [ + 3.767096692983364E-4, + 3.7660339478782264E-4, + 3.767821805799545E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12919006510917605, + "scoreError" : 0.0033714267349582833, + "scoreConfidence" : [ + 0.12581863837421778, + 0.13256149184413432 + ], + "scorePercentiles" : { + "0.0" : 0.12787845977084986, + "50.0" : 0.1292011989874538, + "90.0" : 0.1305010063552963, + "95.0" : 0.1305010063552963, + "99.0" : 0.1305010063552963, + "99.9" : 0.1305010063552963, + "99.99" : 0.1305010063552963, + "99.999" : 0.1305010063552963, + "99.9999" : 0.1305010063552963, + "100.0" : 0.1305010063552963 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13029987649189556, + 0.1300001108482288, + 0.1305010063552963 + ], + [ + 0.12787845977084986, + 0.1284022871266788, + 0.12805865006210704 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013142325704766785, + "scoreError" : 1.4502746199646733E-4, + "scoreConfidence" : [ + 0.012997298242770317, + 0.013287353166763253 + ], + "scorePercentiles" : { + "0.0" : 0.013074430222889299, + "50.0" : 0.013149246701169532, + "90.0" : 0.01319282479287599, + "95.0" : 0.01319282479287599, + "99.0" : 0.01319282479287599, + "99.9" : 0.01319282479287599, + "99.99" : 0.01319282479287599, + "99.999" : 0.01319282479287599, + "99.9999" : 0.01319282479287599, + "100.0" : 0.01319282479287599 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013187208180419161, + 0.01319282479287599, + 0.01318385634411494 + ], + [ + 0.013114637058224124, + 0.01310099763007719, + 0.013074430222889299 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.146450260032444, + "scoreError" : 0.19957128047526873, + "scoreConfidence" : [ + 0.9468789795571753, + 1.3460215405077127 + ], + "scorePercentiles" : { + "0.0" : 1.0802802871340607, + "50.0" : 1.1465256864386346, + "90.0" : 1.2124430883743484, + "95.0" : 1.2124430883743484, + "99.0" : 1.2124430883743484, + "99.9" : 1.2124430883743484, + "99.99" : 1.2124430883743484, + "99.999" : 1.2124430883743484, + "99.9999" : 1.2124430883743484, + "100.0" : 1.2124430883743484 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.081472527738726, + 1.08271344960485, + 1.0802802871340607 + ], + [ + 1.2103379232724192, + 1.2124430883743484, + 1.2114542840702605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011688679633861008, + "scoreError" : 4.275255013433637E-4, + "scoreConfidence" : [ + 0.011261154132517643, + 0.012116205135204372 + ], + "scorePercentiles" : { + "0.0" : 0.011516216362375887, + "50.0" : 0.011667033868928516, + "90.0" : 0.01190556935637871, + "95.0" : 0.01190556935637871, + "99.0" : 0.01190556935637871, + "99.9" : 0.01190556935637871, + "99.99" : 0.01190556935637871, + "99.999" : 0.01190556935637871, + "99.9999" : 0.01190556935637871, + "100.0" : 0.01190556935637871 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011585717285323694, + 0.011516216362375887, + 0.011575700893621947 + ], + [ + 0.011800523452932471, + 0.01190556935637871, + 0.01174835045253334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.342553598046463, + "scoreError" : 0.2278396912566572, + "scoreConfidence" : [ + 3.114713906789806, + 3.5703932893031203 + ], + "scorePercentiles" : { + "0.0" : 3.258577357654723, + "50.0" : 3.3412090617270733, + "90.0" : 3.4336416307481126, + "95.0" : 3.4336416307481126, + "99.0" : 3.4336416307481126, + "99.9" : 3.4336416307481126, + "99.99" : 3.4336416307481126, + "99.999" : 3.4336416307481126, + "99.9999" : 3.4336416307481126, + "100.0" : 3.4336416307481126 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.258577357654723, + 3.2817071207349082, + 3.2676639163945134 + ], + [ + 3.4336416307481126, + 3.4007110027192384, + 3.413020560027285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9932401162781663, + "scoreError" : 0.16033437025974975, + "scoreConfidence" : [ + 2.8329057460184166, + 3.153574486537916 + ], + "scorePercentiles" : { + "0.0" : 2.936681811215502, + "50.0" : 2.9908967706467626, + "90.0" : 3.0534030213675214, + "95.0" : 3.0534030213675214, + "99.0" : 3.0534030213675214, + "99.9" : 3.0534030213675214, + "99.99" : 3.0534030213675214, + "99.999" : 3.0534030213675214, + "99.9999" : 3.0534030213675214, + "100.0" : 3.0534030213675214 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0479379548918013, + 3.033616905975129, + 3.0534030213675214 + ], + [ + 2.9396243689006467, + 2.936681811215502, + 2.9481766353183962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18327301452443348, + "scoreError" : 0.0314362583643107, + "scoreConfidence" : [ + 0.15183675616012277, + 0.2147092728887442 + ], + "scorePercentiles" : { + "0.0" : 0.17296033679822892, + "50.0" : 0.1832540174683389, + "90.0" : 0.19355382371385438, + "95.0" : 0.19355382371385438, + "99.0" : 0.19355382371385438, + "99.9" : 0.19355382371385438, + "99.99" : 0.19355382371385438, + "99.999" : 0.19355382371385438, + "99.9999" : 0.19355382371385438, + "100.0" : 0.19355382371385438 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19342033170863795, + 0.19355382371385438, + 0.19354552522789292 + ], + [ + 0.17308770322803982, + 0.17307036646994686, + 0.17296033679822892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3221902224486494, + "scoreError" : 0.009116362867446095, + "scoreConfidence" : [ + 0.3130738595812033, + 0.3313065853160955 + ], + "scorePercentiles" : { + "0.0" : 0.31915992965882617, + "50.0" : 0.3220608809609805, + "90.0" : 0.3258501210492017, + "95.0" : 0.3258501210492017, + "99.0" : 0.3258501210492017, + "99.9" : 0.3258501210492017, + "99.99" : 0.3258501210492017, + "99.999" : 0.3258501210492017, + "99.9999" : 0.3258501210492017, + "100.0" : 0.3258501210492017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31940817595579546, + 0.31915992965882617, + 0.31916830406613045 + ], + [ + 0.3258501210492017, + 0.32471358596616556, + 0.32484121799577714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1449397669593481, + "scoreError" : 4.4980405135949336E-4, + "scoreConfidence" : [ + 0.1444899629079886, + 0.1453895710107076 + ], + "scorePercentiles" : { + "0.0" : 0.14469883416532825, + "50.0" : 0.14496806129135137, + "90.0" : 0.14516775397389928, + "95.0" : 0.14516775397389928, + "99.0" : 0.14516775397389928, + "99.9" : 0.14516775397389928, + "99.99" : 0.14516775397389928, + "99.999" : 0.14516775397389928, + "99.9999" : 0.14516775397389928, + "100.0" : 0.14516775397389928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14496843625873415, + 0.1450075766776869, + 0.14469883416532825 + ], + [ + 0.14516775397389928, + 0.1448283143564715, + 0.14496768632396856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40339714281684064, + "scoreError" : 0.0033643665607053994, + "scoreConfidence" : [ + 0.40003277625613526, + 0.406761509377546 + ], + "scorePercentiles" : { + "0.0" : 0.4018458712930965, + "50.0" : 0.403458428500145, + "90.0" : 0.40473725372349034, + "95.0" : 0.40473725372349034, + "99.0" : 0.40473725372349034, + "99.9" : 0.40473725372349034, + "99.99" : 0.40473725372349034, + "99.999" : 0.40473725372349034, + "99.9999" : 0.40473725372349034, + "100.0" : 0.40473725372349034 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40463937751881524, + 0.40473725372349034, + 0.4032204272005161 + ], + [ + 0.40369642979977394, + 0.40224349736535137, + 0.4018458712930965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15570504805497148, + "scoreError" : 8.215578599921024E-4, + "scoreConfidence" : [ + 0.15488349019497938, + 0.1565266059149636 + ], + "scorePercentiles" : { + "0.0" : 0.15546321660318693, + "50.0" : 0.15561148094989805, + "90.0" : 0.15624039546910398, + "95.0" : 0.15624039546910398, + "99.0" : 0.15624039546910398, + "99.9" : 0.15624039546910398, + "99.99" : 0.15624039546910398, + "99.999" : 0.15624039546910398, + "99.9999" : 0.15624039546910398, + "100.0" : 0.15624039546910398 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15558667097627382, + 0.1558246208084019, + 0.15547909354934 + ], + [ + 0.15563629092352227, + 0.15624039546910398, + 0.15546321660318693 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0471531086801415, + "scoreError" : 0.0022651536142112025, + "scoreConfidence" : [ + 0.044887955065930296, + 0.0494182622943527 + ], + "scorePercentiles" : { + "0.0" : 0.046358381305803054, + "50.0" : 0.047195712627227826, + "90.0" : 0.04791857923714601, + "95.0" : 0.04791857923714601, + "99.0" : 0.04791857923714601, + "99.9" : 0.04791857923714601, + "99.99" : 0.04791857923714601, + "99.999" : 0.04791857923714601, + "99.9999" : 0.04791857923714601, + "100.0" : 0.04791857923714601 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04791857923714601, + 0.04787348356767056, + 0.04787380796131843 + ], + [ + 0.04637645832212586, + 0.046358381305803054, + 0.0465179416867851 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8852045.93074288, + "scoreError" : 321094.2552875456, + "scoreConfidence" : [ + 8530951.675455336, + 9173140.186030425 + ], + "scorePercentiles" : { + "0.0" : 8733761.735602094, + "50.0" : 8843992.989574993, + "90.0" : 8984241.272890484, + "95.0" : 8984241.272890484, + "99.0" : 8984241.272890484, + "99.9" : 8984241.272890484, + "99.99" : 8984241.272890484, + "99.999" : 8984241.272890484, + "99.9999" : 8984241.272890484, + "100.0" : 8984241.272890484 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8929840.326785713, + 8951171.166368514, + 8984241.272890484 + ], + [ + 8758145.652364273, + 8733761.735602094, + 8755115.430446194 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-04T06:34:37Z-309fa9df4d8fe7013cc2f85590ec8499c87a598f-jdk17.json b/performance-results/2025-07-04T06:34:37Z-309fa9df4d8fe7013cc2f85590ec8499c87a598f-jdk17.json new file mode 100644 index 0000000000..cbb9bbb787 --- /dev/null +++ b/performance-results/2025-07-04T06:34:37Z-309fa9df4d8fe7013cc2f85590ec8499c87a598f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3223905606245654, + "scoreError" : 0.04660683881217576, + "scoreConfidence" : [ + 3.2757837218123895, + 3.3689973994367413 + ], + "scorePercentiles" : { + "0.0" : 3.3153268654854235, + "50.0" : 3.321717620309384, + "90.0" : 3.330800136394071, + "95.0" : 3.330800136394071, + "99.0" : 3.330800136394071, + "99.9" : 3.330800136394071, + "99.99" : 3.330800136394071, + "99.999" : 3.330800136394071, + "99.9999" : 3.330800136394071, + "100.0" : 3.330800136394071 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3153268654854235, + 3.3258731156054853 + ], + [ + 3.317562125013282, + 3.330800136394071 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6693352423556278, + "scoreError" : 0.02304713508133312, + "scoreConfidence" : [ + 1.6462881072742948, + 1.6923823774369608 + ], + "scorePercentiles" : { + "0.0" : 1.6660048478741867, + "50.0" : 1.6686773116501616, + "90.0" : 1.6739814982480017, + "95.0" : 1.6739814982480017, + "99.0" : 1.6739814982480017, + "99.9" : 1.6739814982480017, + "99.99" : 1.6739814982480017, + "99.999" : 1.6739814982480017, + "99.9999" : 1.6739814982480017, + "100.0" : 1.6739814982480017 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6660048478741867, + 1.6671580534940376 + ], + [ + 1.6701965698062857, + 1.6739814982480017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8445951317899303, + "scoreError" : 0.032592002874542454, + "scoreConfidence" : [ + 0.8120031289153878, + 0.8771871346644727 + ], + "scorePercentiles" : { + "0.0" : 0.8377154222416822, + "50.0" : 0.8455350837476133, + "90.0" : 0.8495949374228121, + "95.0" : 0.8495949374228121, + "99.0" : 0.8495949374228121, + "99.9" : 0.8495949374228121, + "99.99" : 0.8495949374228121, + "99.999" : 0.8495949374228121, + "99.9999" : 0.8495949374228121, + "100.0" : 0.8495949374228121 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8377154222416822, + 0.8495949374228121 + ], + [ + 0.8444815914506458, + 0.8465885760445808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.173252376025662, + "scoreError" : 0.06897577074273747, + "scoreConfidence" : [ + 16.104276605282923, + 16.2422281467684 + ], + "scorePercentiles" : { + "0.0" : 16.14354257638967, + "50.0" : 16.168215835480993, + "90.0" : 16.210500225703527, + "95.0" : 16.210500225703527, + "99.0" : 16.210500225703527, + "99.9" : 16.210500225703527, + "99.99" : 16.210500225703527, + "99.999" : 16.210500225703527, + "99.9999" : 16.210500225703527, + "100.0" : 16.210500225703527 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.191202650288258, + 16.210500225703527, + 16.157837132810545 + ], + [ + 16.15971535434042, + 16.17671631662157, + 16.14354257638967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2668.7630844816576, + "scoreError" : 174.5413703452925, + "scoreConfidence" : [ + 2494.2217141363653, + 2843.30445482695 + ], + "scorePercentiles" : { + "0.0" : 2609.073030535963, + "50.0" : 2667.7424280206706, + "90.0" : 2731.349677333966, + "95.0" : 2731.349677333966, + "99.0" : 2731.349677333966, + "99.9" : 2731.349677333966, + "99.99" : 2731.349677333966, + "99.999" : 2731.349677333966, + "99.9999" : 2731.349677333966, + "100.0" : 2731.349677333966 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2731.349677333966, + 2720.8236736229237, + 2724.2522313854774 + ], + [ + 2609.073030535963, + 2614.661182418417, + 2612.4187115932 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75742.48719679959, + "scoreError" : 4135.892610707586, + "scoreConfidence" : [ + 71606.594586092, + 79878.37980750717 + ], + "scorePercentiles" : { + "0.0" : 74348.41445572967, + "50.0" : 75744.43637060063, + "90.0" : 77145.0533807753, + "95.0" : 77145.0533807753, + "99.0" : 77145.0533807753, + "99.9" : 77145.0533807753, + "99.99" : 77145.0533807753, + "99.999" : 77145.0533807753, + "99.9999" : 77145.0533807753, + "100.0" : 77145.0533807753 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77145.0533807753, + 77076.19330417206, + 77043.52213030799 + ], + [ + 74396.38929891931, + 74445.35061089325, + 74348.41445572967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 358.0378898729861, + "scoreError" : 28.021606321459128, + "scoreConfidence" : [ + 330.016283551527, + 386.0594961944452 + ], + "scorePercentiles" : { + "0.0" : 346.9356405937976, + "50.0" : 359.31071294658034, + "90.0" : 367.31059450762643, + "95.0" : 367.31059450762643, + "99.0" : 367.31059450762643, + "99.9" : 367.31059450762643, + "99.99" : 367.31059450762643, + "99.999" : 367.31059450762643, + "99.9999" : 367.31059450762643, + "100.0" : 367.31059450762643 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.9356405937976, + 348.3098404854241, + 351.86274547623447 + ], + [ + 367.04983775790754, + 366.7586804169262, + 367.31059450762643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.66095399613873, + "scoreError" : 4.094370353186251, + "scoreConfidence" : [ + 108.56658364295248, + 116.75532434932498 + ], + "scorePercentiles" : { + "0.0" : 111.24146703162218, + "50.0" : 112.61082406822008, + "90.0" : 114.24459238946798, + "95.0" : 114.24459238946798, + "99.0" : 114.24459238946798, + "99.9" : 114.24459238946798, + "99.99" : 114.24459238946798, + "99.999" : 114.24459238946798, + "99.9999" : 114.24459238946798, + "100.0" : 114.24459238946798 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.24146703162218, + 111.41053965399706, + 111.35463470086697 + ], + [ + 113.8111084824431, + 114.24459238946798, + 113.90338171843511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06261099082401529, + "scoreError" : 4.956520780921011E-4, + "scoreConfidence" : [ + 0.06211533874592319, + 0.0631066429021074 + ], + "scorePercentiles" : { + "0.0" : 0.06241721383765565, + "50.0" : 0.06260167198997668, + "90.0" : 0.06288100587299492, + "95.0" : 0.06288100587299492, + "99.0" : 0.06288100587299492, + "99.9" : 0.06288100587299492, + "99.99" : 0.06288100587299492, + "99.999" : 0.06288100587299492, + "99.9999" : 0.06288100587299492, + "100.0" : 0.06288100587299492 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0625102763039456, + 0.06246554190429193, + 0.06241721383765565 + ], + [ + 0.0626988393491959, + 0.06288100587299492, + 0.06269306767600777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.912288169450611E-4, + "scoreError" : 3.0339665385459026E-6, + "scoreConfidence" : [ + 3.881948504065152E-4, + 3.94262783483607E-4 + ], + "scorePercentiles" : { + "0.0" : 3.8996756928150514E-4, + "50.0" : 3.912044322116263E-4, + "90.0" : 3.929956763891778E-4, + "95.0" : 3.929956763891778E-4, + "99.0" : 3.929956763891778E-4, + "99.9" : 3.929956763891778E-4, + "99.99" : 3.929956763891778E-4, + "99.999" : 3.929956763891778E-4, + "99.9999" : 3.929956763891778E-4, + "100.0" : 3.929956763891778E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8996756928150514E-4, + 3.9029854779935077E-4, + 3.910467485029898E-4 + ], + [ + 3.917022437770805E-4, + 3.913621159202627E-4, + 3.929956763891778E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12800446240427837, + "scoreError" : 0.0029370367734169174, + "scoreConfidence" : [ + 0.12506742563086146, + 0.1309414991776953 + ], + "scorePercentiles" : { + "0.0" : 0.12681882571588, + "50.0" : 0.12792656396328667, + "90.0" : 0.1291921476242152, + "95.0" : 0.1291921476242152, + "99.0" : 0.1291921476242152, + "99.9" : 0.1291921476242152, + "99.99" : 0.1291921476242152, + "99.999" : 0.1291921476242152, + "99.9999" : 0.1291921476242152, + "100.0" : 0.1291921476242152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1271791801302269, + 0.12681882571588, + 0.1272135002798626 + ], + [ + 0.12898349302877485, + 0.12863962764671075, + 0.1291921476242152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013311272714631728, + "scoreError" : 8.532200436913206E-5, + "scoreConfidence" : [ + 0.013225950710262595, + 0.01339659471900086 + ], + "scorePercentiles" : { + "0.0" : 0.013270442549007118, + "50.0" : 0.013312601687575615, + "90.0" : 0.013345328956130553, + "95.0" : 0.013345328956130553, + "99.0" : 0.013345328956130553, + "99.9" : 0.013345328956130553, + "99.99" : 0.013345328956130553, + "99.999" : 0.013345328956130553, + "99.9999" : 0.013345328956130553, + "100.0" : 0.013345328956130553 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013289629892514844, + 0.013294346347890014, + 0.013270442549007118 + ], + [ + 0.013330857027261214, + 0.013337031514986624, + 0.013345328956130553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9535213620939125, + "scoreError" : 0.002705721874497277, + "scoreConfidence" : [ + 0.9508156402194152, + 0.9562270839684097 + ], + "scorePercentiles" : { + "0.0" : 0.951957043407901, + "50.0" : 0.9534785772700956, + "90.0" : 0.9548349386098911, + "95.0" : 0.9548349386098911, + "99.0" : 0.9548349386098911, + "99.9" : 0.9548349386098911, + "99.99" : 0.9548349386098911, + "99.999" : 0.9548349386098911, + "99.9999" : 0.9548349386098911, + "100.0" : 0.9548349386098911 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9535449720633105, + 0.9548349386098911, + 0.9534121824768805 + ], + [ + 0.9532348626441712, + 0.951957043407901, + 0.9541441733613205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01113306117699941, + "scoreError" : 1.9031839852077574E-4, + "scoreConfidence" : [ + 0.010942742778478634, + 0.011323379575520185 + ], + "scorePercentiles" : { + "0.0" : 0.01106317554833271, + "50.0" : 0.011130154172857747, + "90.0" : 0.011220509855886828, + "95.0" : 0.011220509855886828, + "99.0" : 0.011220509855886828, + "99.9" : 0.011220509855886828, + "99.99" : 0.011220509855886828, + "99.999" : 0.011220509855886828, + "99.9999" : 0.011220509855886828, + "100.0" : 0.011220509855886828 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011066711058435033, + 0.011090787498280963, + 0.01106317554833271 + ], + [ + 0.011187662253626383, + 0.011220509855886828, + 0.011169520847434531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1710597358200108, + "scoreError" : 0.12612005924033698, + "scoreConfidence" : [ + 3.044939676579674, + 3.2971797950603476 + ], + "scorePercentiles" : { + "0.0" : 3.120866799750468, + "50.0" : 3.172580523095402, + "90.0" : 3.224539889748549, + "95.0" : 3.224539889748549, + "99.0" : 3.224539889748549, + "99.9" : 3.224539889748549, + "99.99" : 3.224539889748549, + "99.999" : 3.224539889748549, + "99.9999" : 3.224539889748549, + "100.0" : 3.224539889748549 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.199296238643634, + 3.224539889748549, + 3.208407477228993 + ], + [ + 3.120866799750468, + 3.14586480754717, + 3.127383202001251 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8481420019271595, + "scoreError" : 0.015357709176996354, + "scoreConfidence" : [ + 2.832784292750163, + 2.863499711104156 + ], + "scorePercentiles" : { + "0.0" : 2.84049393638171, + "50.0" : 2.8495964757901544, + "90.0" : 2.8534116393723252, + "95.0" : 2.8534116393723252, + "99.0" : 2.8534116393723252, + "99.9" : 2.8534116393723252, + "99.99" : 2.8534116393723252, + "99.999" : 2.8534116393723252, + "99.9999" : 2.8534116393723252, + "100.0" : 2.8534116393723252 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.843070857873792, + 2.852160150270887, + 2.84049393638171 + ], + [ + 2.8534116393723252, + 2.85268262635482, + 2.847032801309422 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18168995026015697, + "scoreError" : 0.008528871812957278, + "scoreConfidence" : [ + 0.1731610784471997, + 0.19021882207311425 + ], + "scorePercentiles" : { + "0.0" : 0.17923422871634942, + "50.0" : 0.18078582189119435, + "90.0" : 0.18674005223058393, + "95.0" : 0.18674005223058393, + "99.0" : 0.18674005223058393, + "99.9" : 0.18674005223058393, + "99.99" : 0.18674005223058393, + "99.999" : 0.18674005223058393, + "99.9999" : 0.18674005223058393, + "100.0" : 0.18674005223058393 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18674005223058393, + 0.18225354017458495, + 0.1833543812981298 + ], + [ + 0.17931810360780376, + 0.17923939553348986, + 0.17923422871634942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32434916561988625, + "scoreError" : 0.004825802250987568, + "scoreConfidence" : [ + 0.3195233633688987, + 0.3291749678708738 + ], + "scorePercentiles" : { + "0.0" : 0.322592585483871, + "50.0" : 0.3243666415269308, + "90.0" : 0.326057949462015, + "95.0" : 0.326057949462015, + "99.0" : 0.326057949462015, + "99.9" : 0.326057949462015, + "99.99" : 0.326057949462015, + "99.999" : 0.326057949462015, + "99.9999" : 0.326057949462015, + "100.0" : 0.326057949462015 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.326057949462015, + 0.32586196822965885, + 0.32582667330248927 + ], + [ + 0.3228492074899112, + 0.322592585483871, + 0.3229066097513723 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14140108751100935, + "scoreError" : 0.00235294349197454, + "scoreConfidence" : [ + 0.13904814401903481, + 0.1437540310029839 + ], + "scorePercentiles" : { + "0.0" : 0.1405672350650811, + "50.0" : 0.1414246343504953, + "90.0" : 0.14219950264482553, + "95.0" : 0.14219950264482553, + "99.0" : 0.14219950264482553, + "99.9" : 0.14219950264482553, + "99.99" : 0.14219950264482553, + "99.999" : 0.14219950264482553, + "99.9999" : 0.14219950264482553, + "100.0" : 0.14219950264482553 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14060492660602056, + 0.140740130673422, + 0.1405672350650811 + ], + [ + 0.14219950264482553, + 0.14218559204913836, + 0.14210913802756855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4021932146886104, + "scoreError" : 0.008033109536830998, + "scoreConfidence" : [ + 0.3941601051517794, + 0.4102263242254414 + ], + "scorePercentiles" : { + "0.0" : 0.397637907391944, + "50.0" : 0.4022633405586866, + "90.0" : 0.4064574175337344, + "95.0" : 0.4064574175337344, + "99.0" : 0.4064574175337344, + "99.9" : 0.4064574175337344, + "99.99" : 0.4064574175337344, + "99.999" : 0.4064574175337344, + "99.9999" : 0.4064574175337344, + "100.0" : 0.4064574175337344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4012538257834129, + 0.4023553053834393, + 0.397637907391944 + ], + [ + 0.4032834563051982, + 0.4064574175337344, + 0.4021713757339339 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15751860517048544, + "scoreError" : 0.007590748094782307, + "scoreConfidence" : [ + 0.14992785707570314, + 0.16510935326526774 + ], + "scorePercentiles" : { + "0.0" : 0.15514829899466304, + "50.0" : 0.15683363652669063, + "90.0" : 0.16145503568026606, + "95.0" : 0.16145503568026606, + "99.0" : 0.16145503568026606, + "99.9" : 0.16145503568026606, + "99.99" : 0.16145503568026606, + "99.999" : 0.16145503568026606, + "99.9999" : 0.16145503568026606, + "100.0" : 0.16145503568026606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1553055947104409, + 0.15514829899466304, + 0.15519608063815257 + ], + [ + 0.16145503568026606, + 0.15964494265644955, + 0.1583616783429404 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04713011408296786, + "scoreError" : 0.001990847566553604, + "scoreConfidence" : [ + 0.045139266516414256, + 0.04912096164952147 + ], + "scorePercentiles" : { + "0.0" : 0.04647591019575401, + "50.0" : 0.04700599101631811, + "90.0" : 0.04826770737322741, + "95.0" : 0.04826770737322741, + "99.0" : 0.04826770737322741, + "99.9" : 0.04826770737322741, + "99.99" : 0.04826770737322741, + "99.999" : 0.04826770737322741, + "99.9999" : 0.04826770737322741, + "100.0" : 0.04826770737322741 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04826770737322741, + 0.04752489379336565, + 0.04733356942031798 + ], + [ + 0.046500191102823905, + 0.04647591019575401, + 0.04667841261231825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8602079.70534184, + "scoreError" : 133472.1860724081, + "scoreConfidence" : [ + 8468607.519269433, + 8735551.891414247 + ], + "scorePercentiles" : { + "0.0" : 8557229.815226689, + "50.0" : 8591195.367993671, + "90.0" : 8693881.691572545, + "95.0" : 8693881.691572545, + "99.0" : 8693881.691572545, + "99.9" : 8693881.691572545, + "99.99" : 8693881.691572545, + "99.999" : 8693881.691572545, + "99.9999" : 8693881.691572545, + "100.0" : 8693881.691572545 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8693881.691572545, + 8601898.160791058, + 8557229.815226689 + ], + [ + 8587561.310729614, + 8577077.828473413, + 8594829.425257731 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-05T00:46:34Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json b/performance-results/2025-07-05T00:46:34Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json new file mode 100644 index 0000000000..5e2b0f9f12 --- /dev/null +++ b/performance-results/2025-07-05T00:46:34Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.312495434793269, + "scoreError" : 0.055104365981316086, + "scoreConfidence" : [ + 3.257391068811953, + 3.367599800774585 + ], + "scorePercentiles" : { + "0.0" : 3.3050152389032688, + "50.0" : 3.311346978562999, + "90.0" : 3.3222725431438107, + "95.0" : 3.3222725431438107, + "99.0" : 3.3222725431438107, + "99.9" : 3.3222725431438107, + "99.99" : 3.3222725431438107, + "99.999" : 3.3222725431438107, + "99.9999" : 3.3222725431438107, + "100.0" : 3.3222725431438107 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3050152389032688, + 3.3222725431438107 + ], + [ + 3.3056914624945657, + 3.317002494631432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6712549644739547, + "scoreError" : 0.035683691083668014, + "scoreConfidence" : [ + 1.6355712733902867, + 1.7069386555576227 + ], + "scorePercentiles" : { + "0.0" : 1.666553392993196, + "50.0" : 1.6700889832309609, + "90.0" : 1.6782884984407014, + "95.0" : 1.6782884984407014, + "99.0" : 1.6782884984407014, + "99.9" : 1.6782884984407014, + "99.99" : 1.6782884984407014, + "99.999" : 1.6782884984407014, + "99.9999" : 1.6782884984407014, + "100.0" : 1.6782884984407014 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.673020370099939, + 1.6782884984407014 + ], + [ + 1.666553392993196, + 1.6671575963619825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8404361628264534, + "scoreError" : 0.044951627981280426, + "scoreConfidence" : [ + 0.795484534845173, + 0.8853877908077338 + ], + "scorePercentiles" : { + "0.0" : 0.8325612977001957, + "50.0" : 0.8398510572580533, + "90.0" : 0.8494812390895119, + "95.0" : 0.8494812390895119, + "99.0" : 0.8494812390895119, + "99.9" : 0.8494812390895119, + "99.99" : 0.8494812390895119, + "99.999" : 0.8494812390895119, + "99.9999" : 0.8494812390895119, + "100.0" : 0.8494812390895119 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8325612977001957, + 0.8392768975003958 + ], + [ + 0.8404252170157107, + 0.8494812390895119 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.07533284505306, + "scoreError" : 0.2029903731494133, + "scoreConfidence" : [ + 15.872342471903648, + 16.278323218202473 + ], + "scorePercentiles" : { + "0.0" : 15.995141955173379, + "50.0" : 16.077282909125962, + "90.0" : 16.177113482289982, + "95.0" : 16.177113482289982, + "99.0" : 16.177113482289982, + "99.9" : 16.177113482289982, + "99.99" : 16.177113482289982, + "99.999" : 16.177113482289982, + "99.9999" : 16.177113482289982, + "100.0" : 16.177113482289982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.995141955173379, + 16.12307419459052, + 16.002101620012564 + ], + [ + 16.047611247972185, + 16.106954570279736, + 16.177113482289982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2583.231976407065, + "scoreError" : 84.4780047733168, + "scoreConfidence" : [ + 2498.753971633748, + 2667.709981180382 + ], + "scorePercentiles" : { + "0.0" : 2545.3753576371155, + "50.0" : 2582.7853455531163, + "90.0" : 2623.4845593923255, + "95.0" : 2623.4845593923255, + "99.0" : 2623.4845593923255, + "99.9" : 2623.4845593923255, + "99.99" : 2623.4845593923255, + "99.999" : 2623.4845593923255, + "99.9999" : 2623.4845593923255, + "100.0" : 2623.4845593923255 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2570.1220700462004, + 2558.375222019917, + 2545.3753576371155 + ], + [ + 2623.4845593923255, + 2606.5860282867975, + 2595.448621060032 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74507.7330081277, + "scoreError" : 6349.067345176075, + "scoreConfidence" : [ + 68158.66566295162, + 80856.80035330378 + ], + "scorePercentiles" : { + "0.0" : 72276.89683772357, + "50.0" : 74588.97297555914, + "90.0" : 76635.05449644031, + "95.0" : 76635.05449644031, + "99.0" : 76635.05449644031, + "99.9" : 76635.05449644031, + "99.99" : 76635.05449644031, + "99.999" : 76635.05449644031, + "99.9999" : 76635.05449644031, + "100.0" : 76635.05449644031 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72356.80308243849, + 72276.89683772357, + 72703.0414909472 + ], + [ + 76635.05449644031, + 76599.69768104557, + 76474.90446017108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.6507038869407, + "scoreError" : 10.780100333105285, + "scoreConfidence" : [ + 333.8706035538354, + 355.43080422004596 + ], + "scorePercentiles" : { + "0.0" : 340.55136415692795, + "50.0" : 344.64557895956494, + "90.0" : 349.46117353566774, + "95.0" : 349.46117353566774, + "99.0" : 349.46117353566774, + "99.9" : 349.46117353566774, + "99.99" : 349.46117353566774, + "99.999" : 349.46117353566774, + "99.9999" : 349.46117353566774, + "100.0" : 349.46117353566774 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.5770716934263, + 340.75453271379456, + 340.55136415692795 + ], + [ + 346.71408622570357, + 347.84599499612386, + 349.46117353566774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 110.24589481871557, + "scoreError" : 3.5021685470376376, + "scoreConfidence" : [ + 106.74372627167793, + 113.74806336575321 + ], + "scorePercentiles" : { + "0.0" : 108.86793358159755, + "50.0" : 110.06584872014065, + "90.0" : 111.81348743369448, + "95.0" : 111.81348743369448, + "99.0" : 111.81348743369448, + "99.9" : 111.81348743369448, + "99.99" : 111.81348743369448, + "99.999" : 111.81348743369448, + "99.9999" : 111.81348743369448, + "100.0" : 111.81348743369448 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.81348743369448, + 109.76107559440356, + 110.37062184587775 + ], + [ + 109.07065205425394, + 111.59159840246619, + 108.86793358159755 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06291075132999228, + "scoreError" : 9.081578740106059E-4, + "scoreConfidence" : [ + 0.06200259345598168, + 0.06381890920400289 + ], + "scorePercentiles" : { + "0.0" : 0.06258517562645505, + "50.0" : 0.06276471809176434, + "90.0" : 0.06342224443796139, + "95.0" : 0.06342224443796139, + "99.0" : 0.06342224443796139, + "99.9" : 0.06342224443796139, + "99.99" : 0.06342224443796139, + "99.999" : 0.06342224443796139, + "99.9999" : 0.06342224443796139, + "100.0" : 0.06342224443796139 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06342224443796139, + 0.06319625503665319, + 0.06274950428573221 + ], + [ + 0.06273139669535543, + 0.06258517562645505, + 0.06277993189779647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7018960618612613E-4, + "scoreError" : 1.1382248546367458E-5, + "scoreConfidence" : [ + 3.588073576397587E-4, + 3.815718547324936E-4 + ], + "scorePercentiles" : { + "0.0" : 3.660308912564523E-4, + "50.0" : 3.691559065803218E-4, + "90.0" : 3.767173440400918E-4, + "95.0" : 3.767173440400918E-4, + "99.0" : 3.767173440400918E-4, + "99.9" : 3.767173440400918E-4, + "99.99" : 3.767173440400918E-4, + "99.999" : 3.767173440400918E-4, + "99.9999" : 3.767173440400918E-4, + "100.0" : 3.767173440400918E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.660308912564523E-4, + 3.668596297509768E-4, + 3.6896201069406496E-4 + ], + [ + 3.767173440400918E-4, + 3.7321795890859225E-4, + 3.6934980246657864E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12810017113405692, + "scoreError" : 5.925426798072235E-4, + "scoreConfidence" : [ + 0.1275076284542497, + 0.12869271381386413 + ], + "scorePercentiles" : { + "0.0" : 0.12770335411452213, + "50.0" : 0.12817685138292834, + "90.0" : 0.128260545993228, + "95.0" : 0.128260545993228, + "99.0" : 0.128260545993228, + "99.9" : 0.128260545993228, + "99.99" : 0.128260545993228, + "99.999" : 0.128260545993228, + "99.9999" : 0.128260545993228, + "100.0" : 0.128260545993228 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1282530472727739, + 0.12803037665796077, + 0.12818259966673076 + ], + [ + 0.12770335411452213, + 0.12817110309912588, + 0.128260545993228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013118787104508674, + "scoreError" : 9.695854494899747E-5, + "scoreConfidence" : [ + 0.013021828559559677, + 0.013215745649457671 + ], + "scorePercentiles" : { + "0.0" : 0.01305034815177319, + "50.0" : 0.01313271395440551, + "90.0" : 0.013140213319264736, + "95.0" : 0.013140213319264736, + "99.0" : 0.013140213319264736, + "99.9" : 0.013140213319264736, + "99.99" : 0.013140213319264736, + "99.999" : 0.013140213319264736, + "99.9999" : 0.013140213319264736, + "100.0" : 0.013140213319264736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013140213319264736, + 0.013116909089716668, + 0.01305034815177319 + ], + [ + 0.01313328339554052, + 0.0131321445132705, + 0.01313982415748644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9996355470203412, + "scoreError" : 0.028902186328048883, + "scoreConfidence" : [ + 0.9707333606922923, + 1.02853773334839 + ], + "scorePercentiles" : { + "0.0" : 0.9876470546118902, + "50.0" : 0.999253798628897, + "90.0" : 1.0117724146094698, + "95.0" : 1.0117724146094698, + "99.0" : 1.0117724146094698, + "99.9" : 1.0117724146094698, + "99.99" : 1.0117724146094698, + "99.999" : 1.0117724146094698, + "99.9999" : 1.0117724146094698, + "100.0" : 1.0117724146094698 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0058027616413556, + 1.00871420929998, + 1.0117724146094698 + ], + [ + 0.9927048356164384, + 0.9911720063429138, + 0.9876470546118902 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01121098501109073, + "scoreError" : 7.257903194991022E-4, + "scoreConfidence" : [ + 0.010485194691591627, + 0.011936775330589833 + ], + "scorePercentiles" : { + "0.0" : 0.01093589604808178, + "50.0" : 0.011214258542165284, + "90.0" : 0.011465852192337768, + "95.0" : 0.011465852192337768, + "99.0" : 0.011465852192337768, + "99.9" : 0.011465852192337768, + "99.99" : 0.011465852192337768, + "99.999" : 0.011465852192337768, + "99.9999" : 0.011465852192337768, + "100.0" : 0.011465852192337768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011440626980894635, + 0.011465852192337768, + 0.011432110453657935 + ], + [ + 0.010996406630672634, + 0.010995017760899634, + 0.01093589604808178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3774034778582434, + "scoreError" : 0.30080554099110474, + "scoreConfidence" : [ + 3.0765979368671386, + 3.678209018849348 + ], + "scorePercentiles" : { + "0.0" : 3.2649472088772846, + "50.0" : 3.3779815823879358, + "90.0" : 3.4924981766759777, + "95.0" : 3.4924981766759777, + "99.0" : 3.4924981766759777, + "99.9" : 3.4924981766759777, + "99.99" : 3.4924981766759777, + "99.999" : 3.4924981766759777, + "99.9999" : 3.4924981766759777, + "100.0" : 3.4924981766759777 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2649472088772846, + 3.3047389729194188, + 3.2732701583769632 + ], + [ + 3.4924981766759777, + 3.4777421584433634, + 3.451224191856453 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9220159821461387, + "scoreError" : 0.09270550202631823, + "scoreConfidence" : [ + 2.8293104801198203, + 3.014721484172457 + ], + "scorePercentiles" : { + "0.0" : 2.8892281695551705, + "50.0" : 2.914053094703559, + "90.0" : 2.983260933492395, + "95.0" : 2.983260933492395, + "99.0" : 2.983260933492395, + "99.9" : 2.983260933492395, + "99.99" : 2.983260933492395, + "99.999" : 2.983260933492395, + "99.9999" : 2.983260933492395, + "100.0" : 2.983260933492395 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.930189960445356, + 2.911190788998836, + 2.9169154004082825 + ], + [ + 2.9013106399767916, + 2.8892281695551705, + 2.983260933492395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17737929883037862, + "scoreError" : 0.0037697458153534524, + "scoreConfidence" : [ + 0.17360955301502518, + 0.18114904464573206 + ], + "scorePercentiles" : { + "0.0" : 0.17593688344475722, + "50.0" : 0.177344208263511, + "90.0" : 0.17904414562967738, + "95.0" : 0.17904414562967738, + "99.0" : 0.17904414562967738, + "99.9" : 0.17904414562967738, + "99.99" : 0.17904414562967738, + "99.999" : 0.17904414562967738, + "99.9999" : 0.17904414562967738, + "100.0" : 0.17904414562967738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17649124339492772, + 0.17613812937032144, + 0.17593688344475722 + ], + [ + 0.17904414562967738, + 0.1781971731320943, + 0.17846821801049362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32062561056588973, + "scoreError" : 0.002561009998316468, + "scoreConfidence" : [ + 0.31806460056757324, + 0.3231866205642062 + ], + "scorePercentiles" : { + "0.0" : 0.3194193083556918, + "50.0" : 0.32051917450705214, + "90.0" : 0.321804870092676, + "95.0" : 0.321804870092676, + "99.0" : 0.321804870092676, + "99.9" : 0.321804870092676, + "99.99" : 0.321804870092676, + "99.999" : 0.321804870092676, + "99.9999" : 0.321804870092676, + "100.0" : 0.321804870092676 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3194193083556918, + 0.3205667761251442, + 0.31994913130278985 + ], + [ + 0.3204715728889601, + 0.321804870092676, + 0.3215420046300762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14610574181099337, + "scoreError" : 0.0028194471004581796, + "scoreConfidence" : [ + 0.1432862947105352, + 0.14892518891145154 + ], + "scorePercentiles" : { + "0.0" : 0.14541311144232308, + "50.0" : 0.14573029123129017, + "90.0" : 0.14803312681706488, + "95.0" : 0.14803312681706488, + "99.0" : 0.14803312681706488, + "99.9" : 0.14803312681706488, + "99.99" : 0.14803312681706488, + "99.999" : 0.14803312681706488, + "99.9999" : 0.14803312681706488, + "100.0" : 0.14803312681706488 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14803312681706488, + 0.14543053310646714, + 0.14552344786740204 + ], + [ + 0.14541311144232308, + 0.14593713459517832, + 0.1462970970375247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.41092122340295095, + "scoreError" : 0.009474079039296762, + "scoreConfidence" : [ + 0.4014471443636542, + 0.4203953024422477 + ], + "scorePercentiles" : { + "0.0" : 0.4061669763210268, + "50.0" : 0.4106982601127916, + "90.0" : 0.41674692411235204, + "95.0" : 0.41674692411235204, + "99.0" : 0.41674692411235204, + "99.9" : 0.41674692411235204, + "99.99" : 0.41674692411235204, + "99.999" : 0.41674692411235204, + "99.9999" : 0.41674692411235204, + "100.0" : 0.41674692411235204 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41674692411235204, + 0.4109359526216305, + 0.4108024318695313 + ], + [ + 0.4102809671371133, + 0.4105940883560519, + 0.4061669763210268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15839800179137106, + "scoreError" : 0.003123740167910204, + "scoreConfidence" : [ + 0.15527426162346086, + 0.16152174195928126 + ], + "scorePercentiles" : { + "0.0" : 0.1570603831571673, + "50.0" : 0.15827852887098906, + "90.0" : 0.15993384616245782, + "95.0" : 0.15993384616245782, + "99.0" : 0.15993384616245782, + "99.9" : 0.15993384616245782, + "99.99" : 0.15993384616245782, + "99.999" : 0.15993384616245782, + "99.9999" : 0.15993384616245782, + "100.0" : 0.15993384616245782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15763281685056746, + 0.1576488829473618, + 0.1570603831571673 + ], + [ + 0.15890817479461633, + 0.15993384616245782, + 0.15920390683605565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04764037291617812, + "scoreError" : 0.0011872650101901765, + "scoreConfidence" : [ + 0.046453107905987945, + 0.048827637926368295 + ], + "scorePercentiles" : { + "0.0" : 0.04724036632087148, + "50.0" : 0.04761753282515352, + "90.0" : 0.04806067320603827, + "95.0" : 0.04806067320603827, + "99.0" : 0.04806067320603827, + "99.9" : 0.04806067320603827, + "99.99" : 0.04806067320603827, + "99.999" : 0.04806067320603827, + "99.9999" : 0.04806067320603827, + "100.0" : 0.04806067320603827 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04724036632087148, + 0.04727325140871703, + 0.047252308453785564 + ], + [ + 0.04796181424159001, + 0.048053823866066325, + 0.04806067320603827 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9082529.955939034, + "scoreError" : 849981.3211799804, + "scoreConfidence" : [ + 8232548.634759054, + 9932511.277119014 + ], + "scorePercentiles" : { + "0.0" : 8742775.296328671, + "50.0" : 9002722.989551485, + "90.0" : 9501022.41025641, + "95.0" : 9501022.41025641, + "99.0" : 9501022.41025641, + "99.9" : 9501022.41025641, + "99.99" : 9501022.41025641, + "99.999" : 9501022.41025641, + "99.9999" : 9501022.41025641, + "100.0" : 9501022.41025641 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8886845.03374778, + 8742775.296328671, + 8872020.175531914 + ], + [ + 9501022.41025641, + 9373915.874414245, + 9118600.945355192 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-05T00:47:12Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json b/performance-results/2025-07-05T00:47:12Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json new file mode 100644 index 0000000000..3133c909d5 --- /dev/null +++ b/performance-results/2025-07-05T00:47:12Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3070641466544872, + "scoreError" : 0.04244598012815704, + "scoreConfidence" : [ + 3.26461816652633, + 3.3495101267826444 + ], + "scorePercentiles" : { + "0.0" : 3.2990266891359092, + "50.0" : 3.3070682585058804, + "90.0" : 3.3150933804702793, + "95.0" : 3.3150933804702793, + "99.0" : 3.3150933804702793, + "99.9" : 3.3150933804702793, + "99.99" : 3.3150933804702793, + "99.999" : 3.3150933804702793, + "99.9999" : 3.3150933804702793, + "100.0" : 3.3150933804702793 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.2990266891359092, + 3.306638908099548 + ], + [ + 3.307497608912213, + 3.3150933804702793 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6630032481221397, + "scoreError" : 0.024106819712119015, + "scoreConfidence" : [ + 1.6388964284100207, + 1.6871100678342588 + ], + "scorePercentiles" : { + "0.0" : 1.6581145436107447, + "50.0" : 1.663434868376007, + "90.0" : 1.6670287121258003, + "95.0" : 1.6670287121258003, + "99.0" : 1.6670287121258003, + "99.9" : 1.6670287121258003, + "99.99" : 1.6670287121258003, + "99.999" : 1.6670287121258003, + "99.9999" : 1.6670287121258003, + "100.0" : 1.6670287121258003 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6581145436107447, + 1.6642332364127526 + ], + [ + 1.6626365003392614, + 1.6670287121258003 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8403780479411779, + "scoreError" : 0.017884758773049632, + "scoreConfidence" : [ + 0.8224932891681282, + 0.8582628067142275 + ], + "scorePercentiles" : { + "0.0" : 0.8364775579050634, + "50.0" : 0.8413099187173936, + "90.0" : 0.842414796424861, + "95.0" : 0.842414796424861, + "99.0" : 0.842414796424861, + "99.9" : 0.842414796424861, + "99.99" : 0.842414796424861, + "99.999" : 0.842414796424861, + "99.9999" : 0.842414796424861, + "100.0" : 0.842414796424861 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8364775579050634, + 0.8422797970083116 + ], + [ + 0.842414796424861, + 0.8403400404264755 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.178863985332343, + "scoreError" : 0.8144359449277992, + "scoreConfidence" : [ + 14.364428040404544, + 15.993299930260143 + ], + "scorePercentiles" : { + "0.0" : 14.736716387882165, + "50.0" : 15.213239768138987, + "90.0" : 15.547112696159793, + "95.0" : 15.547112696159793, + "99.0" : 15.547112696159793, + "99.9" : 15.547112696159793, + "99.99" : 15.547112696159793, + "99.999" : 15.547112696159793, + "99.9999" : 15.547112696159793, + "100.0" : 15.547112696159793 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 14.736716387882165, + 15.374654765031705, + 15.547112696159793 + ], + [ + 15.130715433197334, + 14.988220526642417, + 15.295764103080637 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2375.174949210943, + "scoreError" : 212.3633008651267, + "scoreConfidence" : [ + 2162.811648345816, + 2587.5382500760697 + ], + "scorePercentiles" : { + "0.0" : 2307.641007094073, + "50.0" : 2344.1093865796092, + "90.0" : 2502.8580415617425, + "95.0" : 2502.8580415617425, + "99.0" : 2502.8580415617425, + "99.9" : 2502.8580415617425, + "99.99" : 2502.8580415617425, + "99.999" : 2502.8580415617425, + "99.9999" : 2502.8580415617425, + "100.0" : 2502.8580415617425 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2347.235226260049, + 2307.641007094073, + 2322.034985306579 + ], + [ + 2340.98354689917, + 2502.8580415617425, + 2430.296888144043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75340.38013917883, + "scoreError" : 1806.8890433444574, + "scoreConfidence" : [ + 73533.49109583437, + 77147.26918252329 + ], + "scorePercentiles" : { + "0.0" : 74422.34738651122, + "50.0" : 75384.57640165939, + "90.0" : 76036.69337782524, + "95.0" : 76036.69337782524, + "99.0" : 76036.69337782524, + "99.9" : 76036.69337782524, + "99.99" : 76036.69337782524, + "99.999" : 76036.69337782524, + "99.9999" : 76036.69337782524, + "100.0" : 76036.69337782524 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75052.25110726464, + 74899.77175872226, + 74422.34738651122 + ], + [ + 75716.90169605413, + 75914.31550869542, + 76036.69337782524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 339.85148247059175, + "scoreError" : 11.685876741341024, + "scoreConfidence" : [ + 328.16560572925073, + 351.53735921193277 + ], + "scorePercentiles" : { + "0.0" : 335.35346383820684, + "50.0" : 339.0080858723947, + "90.0" : 345.52334796026145, + "95.0" : 345.52334796026145, + "99.0" : 345.52334796026145, + "99.9" : 345.52334796026145, + "99.99" : 345.52334796026145, + "99.999" : 345.52334796026145, + "99.9999" : 345.52334796026145, + "100.0" : 345.52334796026145 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 336.54239720136957, + 345.52334796026145, + 337.07819565871216 + ], + [ + 343.6735140789231, + 335.35346383820684, + 340.93797608607724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 100.3002190845122, + "scoreError" : 8.926514210325456, + "scoreConfidence" : [ + 91.37370487418674, + 109.22673329483764 + ], + "scorePercentiles" : { + "0.0" : 97.30175457408934, + "50.0" : 99.4518309109109, + "90.0" : 105.19803679423734, + "95.0" : 105.19803679423734, + "99.0" : 105.19803679423734, + "99.9" : 105.19803679423734, + "99.99" : 105.19803679423734, + "99.999" : 105.19803679423734, + "99.9999" : 105.19803679423734, + "100.0" : 105.19803679423734 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 97.30175457408934, + 97.96441801065532, + 105.19803679423734 + ], + [ + 100.93924381116649, + 102.62814273015086, + 97.7697185867738 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06559008106718416, + "scoreError" : 0.00237429763551806, + "scoreConfidence" : [ + 0.06321578343166609, + 0.06796437870270222 + ], + "scorePercentiles" : { + "0.0" : 0.0648344508369964, + "50.0" : 0.06536141221201949, + "90.0" : 0.06714946196717789, + "95.0" : 0.06714946196717789, + "99.0" : 0.06714946196717789, + "99.9" : 0.06714946196717789, + "99.99" : 0.06714946196717789, + "99.999" : 0.06714946196717789, + "99.9999" : 0.06714946196717789, + "100.0" : 0.06714946196717789 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0650969900210255, + 0.06562583440301348, + 0.0648344508369964 + ], + [ + 0.06714946196717789, + 0.06504443759756479, + 0.06578931157732691 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 4.017333031287936E-4, + "scoreError" : 1.8785393050945348E-5, + "scoreConfidence" : [ + 3.829479100778482E-4, + 4.2051869617973895E-4 + ], + "scorePercentiles" : { + "0.0" : 3.9200961676605345E-4, + "50.0" : 4.022701977280716E-4, + "90.0" : 4.1173720620955775E-4, + "95.0" : 4.1173720620955775E-4, + "99.0" : 4.1173720620955775E-4, + "99.9" : 4.1173720620955775E-4, + "99.99" : 4.1173720620955775E-4, + "99.999" : 4.1173720620955775E-4, + "99.9999" : 4.1173720620955775E-4, + "100.0" : 4.1173720620955775E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.973917512171938E-4, + 4.0310904447393004E-4, + 4.1173720620955775E-4 + ], + [ + 4.0472084912381327E-4, + 4.014313509822131E-4, + 3.9200961676605345E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.13111215973873416, + "scoreError" : 0.0017730616321248167, + "scoreConfidence" : [ + 0.12933909810660935, + 0.13288522137085898 + ], + "scorePercentiles" : { + "0.0" : 0.13030984673320997, + "50.0" : 0.13100747266286702, + "90.0" : 0.13201151215713192, + "95.0" : 0.13201151215713192, + "99.0" : 0.13201151215713192, + "99.9" : 0.13201151215713192, + "99.99" : 0.13201151215713192, + "99.999" : 0.13201151215713192, + "99.9999" : 0.13201151215713192, + "100.0" : 0.13201151215713192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1310256165638143, + 0.13030984673320997, + 0.13167701709131607 + ], + [ + 0.13201151215713192, + 0.13065963712501308, + 0.13098932876191974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013202864386591831, + "scoreError" : 2.4750806215052053E-4, + "scoreConfidence" : [ + 0.01295535632444131, + 0.013450372448742353 + ], + "scorePercentiles" : { + "0.0" : 0.013103349656892098, + "50.0" : 0.013213838281703546, + "90.0" : 0.01334939433141417, + "95.0" : 0.01334939433141417, + "99.0" : 0.01334939433141417, + "99.9" : 0.01334939433141417, + "99.99" : 0.01334939433141417, + "99.999" : 0.01334939433141417, + "99.9999" : 0.01334939433141417, + "100.0" : 0.01334939433141417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013103349656892098, + 0.013118643366982166, + 0.01334939433141417 + ], + [ + 0.013218122400855466, + 0.01321144977606912, + 0.013216226787337972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0641845110937815, + "scoreError" : 0.12206935913433964, + "scoreConfidence" : [ + 0.942115151959442, + 1.1862538702281211 + ], + "scorePercentiles" : { + "0.0" : 1.018122407309376, + "50.0" : 1.0651541851716382, + "90.0" : 1.1078630178353828, + "95.0" : 1.1078630178353828, + "99.0" : 1.1078630178353828, + "99.9" : 1.1078630178353828, + "99.99" : 1.1078630178353828, + "99.999" : 1.1078630178353828, + "99.9999" : 1.1078630178353828, + "100.0" : 1.1078630178353828 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.018122407309376, + 1.0269542911275416, + 1.0288366780864198 + ], + [ + 1.1018589799471132, + 1.1014716922568564, + 1.1078630178353828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011167890222464292, + "scoreError" : 6.419110739446407E-4, + "scoreConfidence" : [ + 0.010525979148519651, + 0.011809801296408932 + ], + "scorePercentiles" : { + "0.0" : 0.010939053593266987, + "50.0" : 0.011147164016119593, + "90.0" : 0.011430697824342582, + "95.0" : 0.011430697824342582, + "99.0" : 0.011430697824342582, + "99.9" : 0.011430697824342582, + "99.99" : 0.011430697824342582, + "99.999" : 0.011430697824342582, + "99.9999" : 0.011430697824342582, + "100.0" : 0.011430697824342582 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010939053593266987, + 0.010976313115481036, + 0.01097001059012466 + ], + [ + 0.011318014916758152, + 0.011373251294812335, + 0.011430697824342582 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.424486985533617, + "scoreError" : 0.32093045613689936, + "scoreConfidence" : [ + 3.1035565293967173, + 3.7454174416705164 + ], + "scorePercentiles" : { + "0.0" : 3.309536432825943, + "50.0" : 3.392504927704642, + "90.0" : 3.5695522919343325, + "95.0" : 3.5695522919343325, + "99.0" : 3.5695522919343325, + "99.9" : 3.5695522919343325, + "99.99" : 3.5695522919343325, + "99.999" : 3.5695522919343325, + "99.9999" : 3.5695522919343325, + "100.0" : 3.5695522919343325 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3243864823920264, + 3.367761222895623, + 3.309536432825943 + ], + [ + 3.4172486325136613, + 3.558436850640114, + 3.5695522919343325 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9831855064973034, + "scoreError" : 0.2697092574551622, + "scoreConfidence" : [ + 2.713476249042141, + 3.2528947639524657 + ], + "scorePercentiles" : { + "0.0" : 2.8905141589595376, + "50.0" : 2.9523966833870112, + "90.0" : 3.11839525662613, + "95.0" : 3.11839525662613, + "99.0" : 3.11839525662613, + "99.9" : 3.11839525662613, + "99.99" : 3.11839525662613, + "99.999" : 3.11839525662613, + "99.9999" : 3.11839525662613, + "100.0" : 3.11839525662613 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.078011810403201, + 2.9894950753138074, + 3.11839525662613 + ], + [ + 2.8905141589595376, + 2.90739844622093, + 2.9152982914602155 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18552579974179229, + "scoreError" : 0.012781564142265011, + "scoreConfidence" : [ + 0.17274423559952728, + 0.19830736388405729 + ], + "scorePercentiles" : { + "0.0" : 0.1797718868355295, + "50.0" : 0.18627357166137082, + "90.0" : 0.1900898517906022, + "95.0" : 0.1900898517906022, + "99.0" : 0.1900898517906022, + "99.9" : 0.1900898517906022, + "99.99" : 0.1900898517906022, + "99.999" : 0.1900898517906022, + "99.9999" : 0.1900898517906022, + "100.0" : 0.1900898517906022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18341209942593034, + 0.18134810055491077, + 0.1797718868355295 + ], + [ + 0.1900898517906022, + 0.1893978159469697, + 0.1891350438968113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3383710501281317, + "scoreError" : 0.0197584361650953, + "scoreConfidence" : [ + 0.31861261396303636, + 0.358129486293227 + ], + "scorePercentiles" : { + "0.0" : 0.33087119249602964, + "50.0" : 0.3385230243624009, + "90.0" : 0.34676105222095077, + "95.0" : 0.34676105222095077, + "99.0" : 0.34676105222095077, + "99.9" : 0.34676105222095077, + "99.99" : 0.34676105222095077, + "99.999" : 0.34676105222095077, + "99.9999" : 0.34676105222095077, + "100.0" : 0.34676105222095077 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34403806553823923, + 0.34312508618974097, + 0.34676105222095077 + ], + [ + 0.33392096253506076, + 0.3315099417887688, + 0.33087119249602964 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1530989316994479, + "scoreError" : 0.0034390765349487707, + "scoreConfidence" : [ + 0.14965985516449914, + 0.15653800823439668 + ], + "scorePercentiles" : { + "0.0" : 0.15139773350188485, + "50.0" : 0.1533867524409367, + "90.0" : 0.15464553746230572, + "95.0" : 0.15464553746230572, + "99.0" : 0.15464553746230572, + "99.9" : 0.15464553746230572, + "99.99" : 0.15464553746230572, + "99.999" : 0.15464553746230572, + "99.9999" : 0.15464553746230572, + "100.0" : 0.15464553746230572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15139773350188485, + 0.15386806497722796, + 0.15190874937339552 + ], + [ + 0.15321277758541443, + 0.15356072729645895, + 0.15464553746230572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4054485564485772, + "scoreError" : 0.00847866632650995, + "scoreConfidence" : [ + 0.39696989012206724, + 0.41392722277508714 + ], + "scorePercentiles" : { + "0.0" : 0.4027023718036484, + "50.0" : 0.40401676949545795, + "90.0" : 0.4104843854773828, + "95.0" : 0.4104843854773828, + "99.0" : 0.4104843854773828, + "99.9" : 0.4104843854773828, + "99.99" : 0.4104843854773828, + "99.999" : 0.4104843854773828, + "99.9999" : 0.4104843854773828, + "100.0" : 0.4104843854773828 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4104843854773828, + 0.4038437279408795, + 0.40367587498486257 + ], + [ + 0.40779516743465316, + 0.4041898110500364, + 0.4027023718036484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.165794414553091, + "scoreError" : 0.006078914237342212, + "scoreConfidence" : [ + 0.15971550031574877, + 0.1718733287904332 + ], + "scorePercentiles" : { + "0.0" : 0.16295015312041713, + "50.0" : 0.16585375321459717, + "90.0" : 0.16815868010761728, + "95.0" : 0.16815868010761728, + "99.0" : 0.16815868010761728, + "99.9" : 0.16815868010761728, + "99.99" : 0.16815868010761728, + "99.999" : 0.16815868010761728, + "99.9999" : 0.16815868010761728, + "100.0" : 0.16815868010761728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16386224047583936, + 0.1652147114771432, + 0.16295015312041713 + ], + [ + 0.16808790718547778, + 0.16815868010761728, + 0.16649279495205113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04688887769197516, + "scoreError" : 0.0019141384083800725, + "scoreConfidence" : [ + 0.044974739283595085, + 0.048803016100355236 + ], + "scorePercentiles" : { + "0.0" : 0.046138794567759975, + "50.0" : 0.046913393690992414, + "90.0" : 0.04783971637764011, + "95.0" : 0.04783971637764011, + "99.0" : 0.04783971637764011, + "99.9" : 0.04783971637764011, + "99.99" : 0.04783971637764011, + "99.999" : 0.04783971637764011, + "99.9999" : 0.04783971637764011, + "100.0" : 0.04783971637764011 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04618629552739264, + 0.046138794567759975, + 0.04662778074118283 + ], + [ + 0.047199006640801996, + 0.04734167229707339, + 0.04783971637764011 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9357641.47941507, + "scoreError" : 528623.571754874, + "scoreConfidence" : [ + 8829017.907660196, + 9886265.051169945 + ], + "scorePercentiles" : { + "0.0" : 8985705.25965858, + "50.0" : 9406346.279001884, + "90.0" : 9513393.257604564, + "95.0" : 9513393.257604564, + "99.0" : 9513393.257604564, + "99.9" : 9513393.257604564, + "99.99" : 9513393.257604564, + "99.999" : 9513393.257604564, + "99.9999" : 9513393.257604564, + "100.0" : 9513393.257604564 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9396004.8, + 9513393.257604564, + 9416687.758003766 + ], + [ + 9377803.58950328, + 8985705.25965858, + 9456254.211720226 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-05T00:50:56Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json b/performance-results/2025-07-05T00:50:56Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json new file mode 100644 index 0000000000..aacbcbfe8a --- /dev/null +++ b/performance-results/2025-07-05T00:50:56Z-7c8a0200d0b9a8d0f4a59eb4fca6f3c8070dc7bc-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3282631703131016, + "scoreError" : 0.02125555360245804, + "scoreConfidence" : [ + 3.3070076167106435, + 3.3495187239155597 + ], + "scorePercentiles" : { + "0.0" : 3.32418039002193, + "50.0" : 3.3283678738294675, + "90.0" : 3.332136543571541, + "95.0" : 3.332136543571541, + "99.0" : 3.332136543571541, + "99.9" : 3.332136543571541, + "99.99" : 3.332136543571541, + "99.999" : 3.332136543571541, + "99.9999" : 3.332136543571541, + "100.0" : 3.332136543571541 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.32418039002193, + 3.3277494702073094 + ], + [ + 3.332136543571541, + 3.3289862774516252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.683155833477382, + "scoreError" : 0.0339231255101849, + "scoreConfidence" : [ + 1.6492327079671971, + 1.7170789589875668 + ], + "scorePercentiles" : { + "0.0" : 1.6774398957936762, + "50.0" : 1.6833439919972277, + "90.0" : 1.6884954541213957, + "95.0" : 1.6884954541213957, + "99.0" : 1.6884954541213957, + "99.9" : 1.6884954541213957, + "99.99" : 1.6884954541213957, + "99.999" : 1.6884954541213957, + "99.9999" : 1.6884954541213957, + "100.0" : 1.6884954541213957 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6866167507293455, + 1.6884954541213957 + ], + [ + 1.6774398957936762, + 1.6800712332651102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8413683160338967, + "scoreError" : 0.017272283420540588, + "scoreConfidence" : [ + 0.8240960326133562, + 0.8586405994544373 + ], + "scorePercentiles" : { + "0.0" : 0.8377150694089133, + "50.0" : 0.8418685397254648, + "90.0" : 0.8440211152757442, + "95.0" : 0.8440211152757442, + "99.0" : 0.8440211152757442, + "99.9" : 0.8440211152757442, + "99.99" : 0.8440211152757442, + "99.999" : 0.8440211152757442, + "99.9999" : 0.8440211152757442, + "100.0" : 0.8440211152757442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8377150694089133, + 0.8440211152757442 + ], + [ + 0.8413444877863161, + 0.8423925916646136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.09708598192805, + "scoreError" : 0.1244310755511922, + "scoreConfidence" : [ + 15.972654906376858, + 16.221517057479243 + ], + "scorePercentiles" : { + "0.0" : 16.06170320702963, + "50.0" : 16.07389110818133, + "90.0" : 16.15428070240861, + "95.0" : 16.15428070240861, + "99.0" : 16.15428070240861, + "99.9" : 16.15428070240861, + "99.99" : 16.15428070240861, + "99.999" : 16.15428070240861, + "99.9999" : 16.15428070240861, + "100.0" : 16.15428070240861 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.065306255619618, + 16.07935254519607, + 16.06170320702963 + ], + [ + 16.068429671166584, + 16.15428070240861, + 16.15344351014778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2655.4904221352263, + "scoreError" : 120.33481500092981, + "scoreConfidence" : [ + 2535.1556071342966, + 2775.825237136156 + ], + "scorePercentiles" : { + "0.0" : 2605.9249957763427, + "50.0" : 2655.7756175673812, + "90.0" : 2704.377999303586, + "95.0" : 2704.377999303586, + "99.0" : 2704.377999303586, + "99.9" : 2704.377999303586, + "99.99" : 2704.377999303586, + "99.999" : 2704.377999303586, + "99.9999" : 2704.377999303586, + "100.0" : 2704.377999303586 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2630.9608279533168, + 2615.990429316044, + 2605.9249957763427 + ], + [ + 2680.5904071814457, + 2704.377999303586, + 2695.097873280623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76742.37307341881, + "scoreError" : 1757.091001617286, + "scoreConfidence" : [ + 74985.28207180153, + 78499.4640750361 + ], + "scorePercentiles" : { + "0.0" : 76015.11955360694, + "50.0" : 76785.77199469347, + "90.0" : 77414.67242513646, + "95.0" : 77414.67242513646, + "99.0" : 77414.67242513646, + "99.9" : 77414.67242513646, + "99.99" : 77414.67242513646, + "99.999" : 77414.67242513646, + "99.9999" : 77414.67242513646, + "100.0" : 77414.67242513646 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77414.67242513646, + 77235.2765005379, + 77262.10198225007 + ], + [ + 76190.80049013249, + 76015.11955360694, + 76336.26748884903 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.67273486606126, + "scoreError" : 15.925846303569283, + "scoreConfidence" : [ + 340.74688856249196, + 372.59858116963056 + ], + "scorePercentiles" : { + "0.0" : 350.5004593416489, + "50.0" : 356.96551285551715, + "90.0" : 363.06577487859954, + "95.0" : 363.06577487859954, + "99.0" : 363.06577487859954, + "99.9" : 363.06577487859954, + "99.99" : 363.06577487859954, + "99.999" : 363.06577487859954, + "99.9999" : 363.06577487859954, + "100.0" : 363.06577487859954 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.88968490667014, + 361.3198275744951, + 363.06577487859954 + ], + [ + 353.04134080436415, + 351.21932169058994, + 350.5004593416489 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.74174034107342, + "scoreError" : 6.071749601747298, + "scoreConfidence" : [ + 107.66999073932612, + 119.81348994282072 + ], + "scorePercentiles" : { + "0.0" : 110.70818137992639, + "50.0" : 113.99574150699002, + "90.0" : 115.78602886408476, + "95.0" : 115.78602886408476, + "99.0" : 115.78602886408476, + "99.9" : 115.78602886408476, + "99.99" : 115.78602886408476, + "99.999" : 115.78602886408476, + "99.9999" : 115.78602886408476, + "100.0" : 115.78602886408476 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.70818137992639, + 112.67367968757445, + 112.20483629565771 + ], + [ + 115.31780332640557, + 115.78602886408476, + 115.75991249279163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06196478749521104, + "scoreError" : 0.0010502060183412998, + "scoreConfidence" : [ + 0.06091458147686974, + 0.06301499351355234 + ], + "scorePercentiles" : { + "0.0" : 0.06148123020030248, + "50.0" : 0.06184440165185134, + "90.0" : 0.06247178431985007, + "95.0" : 0.06247178431985007, + "99.0" : 0.06247178431985007, + "99.9" : 0.06247178431985007, + "99.99" : 0.06247178431985007, + "99.999" : 0.06247178431985007, + "99.9999" : 0.06247178431985007, + "100.0" : 0.06247178431985007 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061812698598722966, + 0.06247178431985007, + 0.06148123020030248 + ], + [ + 0.061794333189149106, + 0.06187610470497971, + 0.06235257395826189 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7664859309785435E-4, + "scoreError" : 7.234165973674477E-6, + "scoreConfidence" : [ + 3.6941442712417987E-4, + 3.838827590715288E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7218151179250857E-4, + "50.0" : 3.7752821194703915E-4, + "90.0" : 3.789832873398393E-4, + "95.0" : 3.789832873398393E-4, + "99.0" : 3.789832873398393E-4, + "99.9" : 3.789832873398393E-4, + "99.99" : 3.789832873398393E-4, + "99.999" : 3.789832873398393E-4, + "99.9999" : 3.789832873398393E-4, + "100.0" : 3.789832873398393E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7846667328723086E-4, + 3.7821006193809883E-4, + 3.768463619559795E-4 + ], + [ + 3.789832873398393E-4, + 3.752036622734693E-4, + 3.7218151179250857E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12805361843389454, + "scoreError" : 0.0011874300634604079, + "scoreConfidence" : [ + 0.12686618837043412, + 0.12924104849735496 + ], + "scorePercentiles" : { + "0.0" : 0.12740925286345858, + "50.0" : 0.12804254626663714, + "90.0" : 0.12870310352638353, + "95.0" : 0.12870310352638353, + "99.0" : 0.12870310352638353, + "99.9" : 0.12870310352638353, + "99.99" : 0.12870310352638353, + "99.999" : 0.12870310352638353, + "99.9999" : 0.12870310352638353, + "100.0" : 0.12870310352638353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12795344277543919, + 0.12740925286345858, + 0.12813164975783511 + ], + [ + 0.12870310352638353, + 0.12820916557904588, + 0.12791509610120494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01312182801615632, + "scoreError" : 6.886535460805714E-5, + "scoreConfidence" : [ + 0.013052962661548262, + 0.013190693370764377 + ], + "scorePercentiles" : { + "0.0" : 0.013073739049890117, + "50.0" : 0.013130433226206408, + "90.0" : 0.013140150708637414, + "95.0" : 0.013140150708637414, + "99.0" : 0.013140150708637414, + "99.9" : 0.013140150708637414, + "99.99" : 0.013140150708637414, + "99.999" : 0.013140150708637414, + "99.9999" : 0.013140150708637414, + "100.0" : 0.013140150708637414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013140150708637414, + 0.01313617208593591, + 0.013132688192165407 + ], + [ + 0.013073739049890117, + 0.013120039800061661, + 0.013128178260247411 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.006372279111726, + "scoreError" : 0.07782383378537393, + "scoreConfidence" : [ + 0.9285484453263521, + 1.0841961128970998 + ], + "scorePercentiles" : { + "0.0" : 0.9780806067481662, + "50.0" : 1.0058241523084424, + "90.0" : 1.0354943400289915, + "95.0" : 1.0354943400289915, + "99.0" : 1.0354943400289915, + "99.9" : 1.0354943400289915, + "99.99" : 1.0354943400289915, + "99.999" : 1.0354943400289915, + "99.9999" : 1.0354943400289915, + "100.0" : 1.0354943400289915 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.031795528064383, + 1.0273034468412943, + 1.0354943400289915 + ], + [ + 0.981214895211931, + 0.9780806067481662, + 0.9843448577755906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010784641487549268, + "scoreError" : 6.053543134433913E-4, + "scoreConfidence" : [ + 0.010179287174105876, + 0.01138999580099266 + ], + "scorePercentiles" : { + "0.0" : 0.010543396271212173, + "50.0" : 0.010781962351705211, + "90.0" : 0.011048356408318749, + "95.0" : 0.011048356408318749, + "99.0" : 0.011048356408318749, + "99.9" : 0.011048356408318749, + "99.99" : 0.011048356408318749, + "99.999" : 0.011048356408318749, + "99.9999" : 0.011048356408318749, + "100.0" : 0.011048356408318749 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010586487528397482, + 0.010543396271212173, + 0.010653102139518235 + ], + [ + 0.011048356408318749, + 0.010965684013956783, + 0.010910822563892187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2991135967285623, + "scoreError" : 0.3058686030747992, + "scoreConfidence" : [ + 2.993244993653763, + 3.6049821998033615 + ], + "scorePercentiles" : { + "0.0" : 3.1891481575255103, + "50.0" : 3.2964677696343463, + "90.0" : 3.417100868852459, + "95.0" : 3.417100868852459, + "99.0" : 3.417100868852459, + "99.9" : 3.417100868852459, + "99.99" : 3.417100868852459, + "99.999" : 3.417100868852459, + "99.9999" : 3.417100868852459, + "100.0" : 3.417100868852459 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3928123181818184, + 3.384166552097429, + 3.417100868852459 + ], + [ + 3.2026846965428937, + 3.1891481575255103, + 3.2087689871712635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.857292351202217, + "scoreError" : 0.09215514615230923, + "scoreConfidence" : [ + 2.7651372050499075, + 2.949447497354526 + ], + "scorePercentiles" : { + "0.0" : 2.836068081655798, + "50.0" : 2.845798895908323, + "90.0" : 2.922696489772063, + "95.0" : 2.922696489772063, + "99.0" : 2.922696489772063, + "99.9" : 2.922696489772063, + "99.99" : 2.922696489772063, + "99.999" : 2.922696489772063, + "99.9999" : 2.922696489772063, + "100.0" : 2.922696489772063 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.922696489772063, + 2.844483116040956, + 2.8561725865219874 + ], + [ + 2.8372191574468086, + 2.836068081655798, + 2.8471146757756904 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17907193816760078, + "scoreError" : 0.004601833163891263, + "scoreConfidence" : [ + 0.17447010500370952, + 0.18367377133149204 + ], + "scorePercentiles" : { + "0.0" : 0.17743187083266798, + "50.0" : 0.17865722001703827, + "90.0" : 0.18125369515886394, + "95.0" : 0.18125369515886394, + "99.0" : 0.18125369515886394, + "99.9" : 0.18125369515886394, + "99.99" : 0.18125369515886394, + "99.999" : 0.18125369515886394, + "99.9999" : 0.18125369515886394, + "100.0" : 0.18125369515886394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1807023101678683, + 0.18125369515886394, + 0.17943527366683412 + ], + [ + 0.1777293128121279, + 0.17787916636724238, + 0.17743187083266798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3250820687025236, + "scoreError" : 0.007468818995772884, + "scoreConfidence" : [ + 0.3176132497067507, + 0.3325508876982965 + ], + "scorePercentiles" : { + "0.0" : 0.3218076919066774, + "50.0" : 0.325907237413153, + "90.0" : 0.3275825915225367, + "95.0" : 0.3275825915225367, + "99.0" : 0.3275825915225367, + "99.9" : 0.3275825915225367, + "99.99" : 0.3275825915225367, + "99.999" : 0.3275825915225367, + "99.9999" : 0.3275825915225367, + "100.0" : 0.3275825915225367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32740551568229437, + 0.3275825915225367, + 0.3267721012645819 + ], + [ + 0.325042373561724, + 0.32188213827732715, + 0.3218076919066774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14490277516728287, + "scoreError" : 0.0037427120732352608, + "scoreConfidence" : [ + 0.1411600630940476, + 0.14864548724051813 + ], + "scorePercentiles" : { + "0.0" : 0.143360292605654, + "50.0" : 0.1448584661757905, + "90.0" : 0.14671547334213614, + "95.0" : 0.14671547334213614, + "99.0" : 0.14671547334213614, + "99.9" : 0.14671547334213614, + "99.99" : 0.14671547334213614, + "99.999" : 0.14671547334213614, + "99.9999" : 0.14671547334213614, + "100.0" : 0.14671547334213614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14569518172149537, + 0.14671547334213614, + 0.1457662354818961 + ], + [ + 0.14402175063008568, + 0.143360292605654, + 0.14385771722243001 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4055291250280828, + "scoreError" : 0.007215221539136638, + "scoreConfidence" : [ + 0.3983139034889462, + 0.4127443465672194 + ], + "scorePercentiles" : { + "0.0" : 0.40238874468855623, + "50.0" : 0.40509361377844355, + "90.0" : 0.4084964676688044, + "95.0" : 0.4084964676688044, + "99.0" : 0.4084964676688044, + "99.9" : 0.4084964676688044, + "99.99" : 0.4084964676688044, + "99.999" : 0.4084964676688044, + "99.9999" : 0.4084964676688044, + "100.0" : 0.4084964676688044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40609787358888977, + 0.4036539131786075, + 0.40238874468855623 + ], + [ + 0.4084964676688044, + 0.40844839707564123, + 0.4040893539679974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1527937242784688, + "scoreError" : 0.001113980091395116, + "scoreConfidence" : [ + 0.15167974418707367, + 0.15390770436986392 + ], + "scorePercentiles" : { + "0.0" : 0.15221025520547946, + "50.0" : 0.15297208724042827, + "90.0" : 0.1531666853423189, + "95.0" : 0.1531666853423189, + "99.0" : 0.1531666853423189, + "99.9" : 0.1531666853423189, + "99.99" : 0.1531666853423189, + "99.999" : 0.1531666853423189, + "99.9999" : 0.1531666853423189, + "100.0" : 0.1531666853423189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1531666853423189, + 0.15221025520547946, + 0.15306064646820233 + ], + [ + 0.15301662242555927, + 0.1529275520552973, + 0.15238058417395545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046545531764455104, + "scoreError" : 0.003868384550060691, + "scoreConfidence" : [ + 0.04267714721439441, + 0.0504139163145158 + ], + "scorePercentiles" : { + "0.0" : 0.045270606834859686, + "50.0" : 0.04645417379088988, + "90.0" : 0.04806224739146525, + "95.0" : 0.04806224739146525, + "99.0" : 0.04806224739146525, + "99.9" : 0.04806224739146525, + "99.99" : 0.04806224739146525, + "99.999" : 0.04806224739146525, + "99.9999" : 0.04806224739146525, + "100.0" : 0.04806224739146525 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045270606834859686, + 0.045296542315532, + 0.045314717503013385 + ], + [ + 0.04806224739146525, + 0.04773544646309388, + 0.04759363007876639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8667036.010033628, + "scoreError" : 101145.17545612513, + "scoreConfidence" : [ + 8565890.834577503, + 8768181.185489753 + ], + "scorePercentiles" : { + "0.0" : 8621243.338501291, + "50.0" : 8667030.769689955, + "90.0" : 8709799.25413403, + "95.0" : 8709799.25413403, + "99.0" : 8709799.25413403, + "99.9" : 8709799.25413403, + "99.99" : 8709799.25413403, + "99.999" : 8709799.25413403, + "99.9999" : 8709799.25413403, + "100.0" : 8709799.25413403 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8709799.25413403, + 8696734.98, + 8621243.338501291 + ], + [ + 8689241.010425717, + 8644820.528954191, + 8640376.948186528 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-07T22:42:09Z-d9ef509a7fc499523f41f4537546a4dd273cf6f2-jdk17.json b/performance-results/2025-07-07T22:42:09Z-d9ef509a7fc499523f41f4537546a4dd273cf6f2-jdk17.json new file mode 100644 index 0000000000..a3e2d61be6 --- /dev/null +++ b/performance-results/2025-07-07T22:42:09Z-d9ef509a7fc499523f41f4537546a4dd273cf6f2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.31990237191701, + "scoreError" : 0.05714858679725346, + "scoreConfidence" : [ + 3.2627537851197563, + 3.3770509587142636 + ], + "scorePercentiles" : { + "0.0" : 3.3116116182038695, + "50.0" : 3.3202238237359607, + "90.0" : 3.3275502219922477, + "95.0" : 3.3275502219922477, + "99.0" : 3.3275502219922477, + "99.9" : 3.3275502219922477, + "99.99" : 3.3275502219922477, + "99.999" : 3.3275502219922477, + "99.9999" : 3.3275502219922477, + "100.0" : 3.3275502219922477 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3129024201874766, + 3.3275502219922477 + ], + [ + 3.3116116182038695, + 3.3275452272844452 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6741411149940104, + "scoreError" : 0.039358034238974465, + "scoreConfidence" : [ + 1.6347830807550359, + 1.713499149232985 + ], + "scorePercentiles" : { + "0.0" : 1.6668245237734332, + "50.0" : 1.674424513338548, + "90.0" : 1.680890909525512, + "95.0" : 1.680890909525512, + "99.0" : 1.680890909525512, + "99.9" : 1.680890909525512, + "99.99" : 1.680890909525512, + "99.999" : 1.680890909525512, + "99.9999" : 1.680890909525512, + "100.0" : 1.680890909525512 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6768777758317097, + 1.680890909525512 + ], + [ + 1.6668245237734332, + 1.6719712508453863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8432130876598983, + "scoreError" : 0.04139592559380058, + "scoreConfidence" : [ + 0.8018171620660978, + 0.8846090132536989 + ], + "scorePercentiles" : { + "0.0" : 0.8339357877732736, + "50.0" : 0.8452000079301425, + "90.0" : 0.8485165470060348, + "95.0" : 0.8485165470060348, + "99.0" : 0.8485165470060348, + "99.9" : 0.8485165470060348, + "99.99" : 0.8485165470060348, + "99.999" : 0.8485165470060348, + "99.9999" : 0.8485165470060348, + "100.0" : 0.8485165470060348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8339357877732736, + 0.8444850465139759 + ], + [ + 0.845914969346309, + 0.8485165470060348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.037437139176333, + "scoreError" : 0.7043619399624873, + "scoreConfidence" : [ + 15.333075199213846, + 16.741799079138822 + ], + "scorePercentiles" : { + "0.0" : 15.798806477134223, + "50.0" : 16.04253471450666, + "90.0" : 16.278968865693592, + "95.0" : 16.278968865693592, + "99.0" : 16.278968865693592, + "99.9" : 16.278968865693592, + "99.99" : 16.278968865693592, + "99.999" : 16.278968865693592, + "99.9999" : 16.278968865693592, + "100.0" : 16.278968865693592 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.800191200473286, + 15.798806477134223, + 15.826201928389622 + ], + [ + 16.261586862743563, + 16.2588675006237, + 16.278968865693592 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2694.8845566737223, + "scoreError" : 188.06612129577456, + "scoreConfidence" : [ + 2506.818435377948, + 2882.9506779694966 + ], + "scorePercentiles" : { + "0.0" : 2631.427541740983, + "50.0" : 2695.829303337882, + "90.0" : 2758.953209506096, + "95.0" : 2758.953209506096, + "99.0" : 2758.953209506096, + "99.9" : 2758.953209506096, + "99.99" : 2758.953209506096, + "99.999" : 2758.953209506096, + "99.9999" : 2758.953209506096, + "100.0" : 2758.953209506096 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2753.490900271555, + 2755.695058103969, + 2758.953209506096 + ], + [ + 2631.427541740983, + 2638.1677064042087, + 2631.572924015522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74784.30275247949, + "scoreError" : 1630.3998704373248, + "scoreConfidence" : [ + 73153.90288204217, + 76414.70262291681 + ], + "scorePercentiles" : { + "0.0" : 74224.7843242149, + "50.0" : 74775.82092588797, + "90.0" : 75352.73065250221, + "95.0" : 75352.73065250221, + "99.0" : 75352.73065250221, + "99.9" : 75352.73065250221, + "99.99" : 75352.73065250221, + "99.999" : 75352.73065250221, + "99.9999" : 75352.73065250221, + "100.0" : 75352.73065250221 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74263.39249391739, + 74224.7843242149, + 74274.44349371668 + ], + [ + 75313.26719246653, + 75277.19835805925, + 75352.73065250221 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 336.1185224107435, + "scoreError" : 5.3785567262035086, + "scoreConfidence" : [ + 330.73996568454, + 341.497079136947 + ], + "scorePercentiles" : { + "0.0" : 333.38271037258085, + "50.0" : 337.17422338754193, + "90.0" : 337.5327784569867, + "95.0" : 337.5327784569867, + "99.0" : 337.5327784569867, + "99.9" : 337.5327784569867, + "99.99" : 337.5327784569867, + "99.999" : 337.5327784569867, + "99.9999" : 337.5327784569867, + "100.0" : 337.5327784569867 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 337.03763809434224, + 337.3108086807416, + 337.5327784569867 + ], + [ + 337.50284781398994, + 333.38271037258085, + 333.94435104581964 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.43141528097944, + "scoreError" : 2.8009427265859266, + "scoreConfidence" : [ + 111.6304725543935, + 117.23235800756537 + ], + "scorePercentiles" : { + "0.0" : 113.30833164478857, + "50.0" : 114.43762995197244, + "90.0" : 115.5437693190163, + "95.0" : 115.5437693190163, + "99.0" : 115.5437693190163, + "99.9" : 115.5437693190163, + "99.99" : 115.5437693190163, + "99.999" : 115.5437693190163, + "99.9999" : 115.5437693190163, + "100.0" : 115.5437693190163 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.32963387282035, + 115.09833526371808, + 115.5437693190163 + ], + [ + 113.30833164478857, + 113.7769246402268, + 113.5314969453066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06149146215282423, + "scoreError" : 0.0011245371398410611, + "scoreConfidence" : [ + 0.060366925012983165, + 0.06261599929266529 + ], + "scorePercentiles" : { + "0.0" : 0.061098236781651334, + "50.0" : 0.061486946022951065, + "90.0" : 0.06196044229720687, + "95.0" : 0.06196044229720687, + "99.0" : 0.06196044229720687, + "99.9" : 0.06196044229720687, + "99.99" : 0.06196044229720687, + "99.999" : 0.06196044229720687, + "99.9999" : 0.06196044229720687, + "100.0" : 0.06196044229720687 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06178045218884756, + 0.06181514520166898, + 0.06196044229720687 + ], + [ + 0.06110105659051611, + 0.061098236781651334, + 0.06119343985705457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.703225980431764E-4, + "scoreError" : 5.853931892235732E-6, + "scoreConfidence" : [ + 3.644686661509407E-4, + 3.7617652993541216E-4 + ], + "scorePercentiles" : { + "0.0" : 3.682098666525767E-4, + "50.0" : 3.700933378832847E-4, + "90.0" : 3.729604929701932E-4, + "95.0" : 3.729604929701932E-4, + "99.0" : 3.729604929701932E-4, + "99.9" : 3.729604929701932E-4, + "99.99" : 3.729604929701932E-4, + "99.999" : 3.729604929701932E-4, + "99.9999" : 3.729604929701932E-4, + "100.0" : 3.729604929701932E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7152963357769216E-4, + 3.7204061249331173E-4, + 3.729604929701932E-4 + ], + [ + 3.685379403764076E-4, + 3.682098666525767E-4, + 3.686570421888773E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12842081857070092, + "scoreError" : 0.004490872425351868, + "scoreConfidence" : [ + 0.12392994614534905, + 0.1329116909960528 + ], + "scorePercentiles" : { + "0.0" : 0.12681905886828823, + "50.0" : 0.1284635171913314, + "90.0" : 0.13011089740954215, + "95.0" : 0.13011089740954215, + "99.0" : 0.13011089740954215, + "99.9" : 0.13011089740954215, + "99.99" : 0.13011089740954215, + "99.999" : 0.13011089740954215, + "99.9999" : 0.13011089740954215, + "100.0" : 0.13011089740954215 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1268990734978745, + 0.12681905886828823, + 0.12718576749717017 + ], + [ + 0.13011089740954215, + 0.12974126688549262, + 0.1297688472658379 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013181385627247454, + "scoreError" : 2.5336854265830037E-4, + "scoreConfidence" : [ + 0.012928017084589153, + 0.013434754169905755 + ], + "scorePercentiles" : { + "0.0" : 0.013095606861726995, + "50.0" : 0.01317923264126971, + "90.0" : 0.013275303586813525, + "95.0" : 0.013275303586813525, + "99.0" : 0.013275303586813525, + "99.9" : 0.013275303586813525, + "99.99" : 0.013275303586813525, + "99.999" : 0.013275303586813525, + "99.9999" : 0.013275303586813525, + "100.0" : 0.013275303586813525 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013099001016470489, + 0.013095606861726995, + 0.013102833927539593 + ], + [ + 0.013275303586813525, + 0.013259937015934305, + 0.013255631354999829 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9815514904137438, + "scoreError" : 0.002173920531779427, + "scoreConfidence" : [ + 0.9793775698819643, + 0.9837254109455232 + ], + "scorePercentiles" : { + "0.0" : 0.9805930128443965, + "50.0" : 0.9817451579151826, + "90.0" : 0.9824273466601179, + "95.0" : 0.9824273466601179, + "99.0" : 0.9824273466601179, + "99.9" : 0.9824273466601179, + "99.99" : 0.9824273466601179, + "99.999" : 0.9824273466601179, + "99.9999" : 0.9824273466601179, + "100.0" : 0.9824273466601179 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9805930128443965, + 0.9806279314571484, + 0.9818093639308856 + ], + [ + 0.9816809518994797, + 0.9821703356904341, + 0.9824273466601179 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011340780563144496, + "scoreError" : 6.186687000832155E-4, + "scoreConfidence" : [ + 0.010722111863061282, + 0.011959449263227711 + ], + "scorePercentiles" : { + "0.0" : 0.011124146111661123, + "50.0" : 0.01134408245752975, + "90.0" : 0.01156234933588005, + "95.0" : 0.01156234933588005, + "99.0" : 0.01156234933588005, + "99.9" : 0.01156234933588005, + "99.99" : 0.01156234933588005, + "99.999" : 0.01156234933588005, + "99.9999" : 0.01156234933588005, + "100.0" : 0.01156234933588005 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011534057594714795, + 0.011528504198541923, + 0.01156234933588005 + ], + [ + 0.011135965421551508, + 0.011159660716517578, + 0.011124146111661123 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.4626516390351956, + "scoreError" : 0.35573125344180156, + "scoreConfidence" : [ + 3.1069203855933942, + 3.818382892476997 + ], + "scorePercentiles" : { + "0.0" : 3.3370025997331556, + "50.0" : 3.4615579650107016, + "90.0" : 3.5836596296561605, + "95.0" : 3.5836596296561605, + "99.0" : 3.5836596296561605, + "99.9" : 3.5836596296561605, + "99.99" : 3.5836596296561605, + "99.999" : 3.5836596296561605, + "99.9999" : 3.5836596296561605, + "100.0" : 3.5836596296561605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3543576304493627, + 3.3498255874079037, + 3.3370025997331556 + ], + [ + 3.58230608739255, + 3.5836596296561605, + 3.56875829957204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.918934735397606, + "scoreError" : 0.06937621192197704, + "scoreConfidence" : [ + 2.849558523475629, + 2.988310947319583 + ], + "scorePercentiles" : { + "0.0" : 2.8936495923032406, + "50.0" : 2.910698691166844, + "90.0" : 2.9567036816435115, + "95.0" : 2.9567036816435115, + "99.0" : 2.9567036816435115, + "99.9" : 2.9567036816435115, + "99.99" : 2.9567036816435115, + "99.999" : 2.9567036816435115, + "99.9999" : 2.9567036816435115, + "100.0" : 2.9567036816435115 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9190311260945707, + 2.9397979667842447, + 2.9567036816435115 + ], + [ + 2.8936495923032406, + 2.9020597893209517, + 2.9023662562391177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.181825310717497, + "scoreError" : 0.007967813393787004, + "scoreConfidence" : [ + 0.17385749732371, + 0.189793124111284 + ], + "scorePercentiles" : { + "0.0" : 0.17758674225742294, + "50.0" : 0.18271204289147855, + "90.0" : 0.18448476788547394, + "95.0" : 0.18448476788547394, + "99.0" : 0.18448476788547394, + "99.9" : 0.18448476788547394, + "99.99" : 0.18448476788547394, + "99.999" : 0.18448476788547394, + "99.9999" : 0.18448476788547394, + "100.0" : 0.18448476788547394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18448476788547394, + 0.18434896012609225, + 0.1826942237404552 + ], + [ + 0.18272986204250188, + 0.17910730825303578, + 0.17758674225742294 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3202340092839608, + "scoreError" : 0.0013211108822978345, + "scoreConfidence" : [ + 0.3189128984016629, + 0.32155512016625865 + ], + "scorePercentiles" : { + "0.0" : 0.3197066691815857, + "50.0" : 0.32013615167755005, + "90.0" : 0.3209069882873921, + "95.0" : 0.3209069882873921, + "99.0" : 0.3209069882873921, + "99.9" : 0.3209069882873921, + "99.99" : 0.3209069882873921, + "99.999" : 0.3209069882873921, + "99.9999" : 0.3209069882873921, + "100.0" : 0.3209069882873921 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3209069882873921, + 0.32032071297245357, + 0.32064000298191614 + ], + [ + 0.3197066691815857, + 0.31995159038264653, + 0.3198780918977705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1449938383777594, + "scoreError" : 0.006443120741508636, + "scoreConfidence" : [ + 0.13855071763625076, + 0.15143695911926802 + ], + "scorePercentiles" : { + "0.0" : 0.14277880988006852, + "50.0" : 0.14500988356295377, + "90.0" : 0.14713980126243306, + "95.0" : 0.14713980126243306, + "99.0" : 0.14713980126243306, + "99.9" : 0.14713980126243306, + "99.99" : 0.14713980126243306, + "99.999" : 0.14713980126243306, + "99.9999" : 0.14713980126243306, + "100.0" : 0.14713980126243306 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1471236607720826, + 0.14700593800899656, + 0.14713980126243306 + ], + [ + 0.143013829116911, + 0.1429009912260646, + 0.14277880988006852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.42052974135001775, + "scoreError" : 0.01099764743342641, + "scoreConfidence" : [ + 0.40953209391659134, + 0.43152738878344415 + ], + "scorePercentiles" : { + "0.0" : 0.4148416518709035, + "50.0" : 0.42176803755962167, + "90.0" : 0.42436678056439636, + "95.0" : 0.42436678056439636, + "99.0" : 0.42436678056439636, + "99.9" : 0.42436678056439636, + "99.99" : 0.42436678056439636, + "99.999" : 0.42436678056439636, + "99.9999" : 0.42436678056439636, + "100.0" : 0.42436678056439636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.42238973973644195, + 0.423808107899644, + 0.42436678056439636 + ], + [ + 0.42114633538280133, + 0.41662583264591924, + 0.4148416518709035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1555364832791507, + "scoreError" : 0.0029891635677358848, + "scoreConfidence" : [ + 0.15254731971141483, + 0.15852564684688658 + ], + "scorePercentiles" : { + "0.0" : 0.15440890871471805, + "50.0" : 0.1555592074448786, + "90.0" : 0.15654313662690586, + "95.0" : 0.15654313662690586, + "99.0" : 0.15654313662690586, + "99.9" : 0.15654313662690586, + "99.99" : 0.15654313662690586, + "99.999" : 0.15654313662690586, + "99.9999" : 0.15654313662690586, + "100.0" : 0.15654313662690586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15654313662690586, + 0.1564500871088861, + 0.15652432825682042 + ], + [ + 0.15462411118670275, + 0.15440890871471805, + 0.15466832778087108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04573451129948288, + "scoreError" : 0.0012527752540614772, + "scoreConfidence" : [ + 0.044481736045421404, + 0.04698728655354436 + ], + "scorePercentiles" : { + "0.0" : 0.045305776759421185, + "50.0" : 0.04561632253040336, + "90.0" : 0.046378149400339484, + "95.0" : 0.046378149400339484, + "99.0" : 0.046378149400339484, + "99.9" : 0.046378149400339484, + "99.99" : 0.046378149400339484, + "99.999" : 0.046378149400339484, + "99.9999" : 0.046378149400339484, + "100.0" : 0.046378149400339484 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046378149400339484, + 0.04616591756765491, + 0.04571055410909124 + ], + [ + 0.045324579008675, + 0.045305776759421185, + 0.04552209095171547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9014688.75682218, + "scoreError" : 173268.30077746915, + "scoreConfidence" : [ + 8841420.456044711, + 9187957.057599649 + ], + "scorePercentiles" : { + "0.0" : 8916912.598039215, + "50.0" : 9043801.118047899, + "90.0" : 9069720.723481415, + "95.0" : 9069720.723481415, + "99.0" : 9069720.723481415, + "99.9" : 9069720.723481415, + "99.99" : 9069720.723481415, + "99.999" : 9069720.723481415, + "99.9999" : 9069720.723481415, + "100.0" : 9069720.723481415 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9038600.878048781, + 9069720.723481415, + 9049001.358047016 + ], + [ + 9055072.447058823, + 8958824.536257833, + 8916912.598039215 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-07T22:42:34Z-d9ef509a7fc499523f41f4537546a4dd273cf6f2-jdk17.json b/performance-results/2025-07-07T22:42:34Z-d9ef509a7fc499523f41f4537546a4dd273cf6f2-jdk17.json new file mode 100644 index 0000000000..39819b825a --- /dev/null +++ b/performance-results/2025-07-07T22:42:34Z-d9ef509a7fc499523f41f4537546a4dd273cf6f2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3179772336837954, + "scoreError" : 0.044381955591668916, + "scoreConfidence" : [ + 3.2735952780921265, + 3.3623591892754643 + ], + "scorePercentiles" : { + "0.0" : 3.309505944706429, + "50.0" : 3.318537668038254, + "90.0" : 3.3253276539522454, + "95.0" : 3.3253276539522454, + "99.0" : 3.3253276539522454, + "99.9" : 3.3253276539522454, + "99.99" : 3.3253276539522454, + "99.999" : 3.3253276539522454, + "99.9999" : 3.3253276539522454, + "100.0" : 3.3253276539522454 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.315790383627429, + 3.3253276539522454 + ], + [ + 3.309505944706429, + 3.3212849524490786 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6622561836525855, + "scoreError" : 0.020574307599716547, + "scoreConfidence" : [ + 1.641681876052869, + 1.682830491252302 + ], + "scorePercentiles" : { + "0.0" : 1.6588557259026173, + "50.0" : 1.662073862029811, + "90.0" : 1.666021284648103, + "95.0" : 1.666021284648103, + "99.0" : 1.666021284648103, + "99.9" : 1.666021284648103, + "99.99" : 1.666021284648103, + "99.999" : 1.666021284648103, + "99.9999" : 1.666021284648103, + "100.0" : 1.666021284648103 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.660556295363069, + 1.666021284648103 + ], + [ + 1.6588557259026173, + 1.6635914286965532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8428306894526094, + "scoreError" : 0.024087334337411587, + "scoreConfidence" : [ + 0.8187433551151978, + 0.866918023790021 + ], + "scorePercentiles" : { + "0.0" : 0.8383750052149138, + "50.0" : 0.8433099239371674, + "90.0" : 0.8463279047211891, + "95.0" : 0.8463279047211891, + "99.0" : 0.8463279047211891, + "99.9" : 0.8463279047211891, + "99.99" : 0.8463279047211891, + "99.999" : 0.8463279047211891, + "99.9999" : 0.8463279047211891, + "100.0" : 0.8463279047211891 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8411720824727722, + 0.8454477654015626 + ], + [ + 0.8383750052149138, + 0.8463279047211891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.928341236797332, + "scoreError" : 0.43850608913405387, + "scoreConfidence" : [ + 15.489835147663278, + 16.366847325931385 + ], + "scorePercentiles" : { + "0.0" : 15.631851616130561, + "50.0" : 15.98079310165991, + "90.0" : 16.07195369631061, + "95.0" : 16.07195369631061, + "99.0" : 16.07195369631061, + "99.9" : 16.07195369631061, + "99.99" : 16.07195369631061, + "99.999" : 16.07195369631061, + "99.9999" : 16.07195369631061, + "100.0" : 16.07195369631061 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.897077375738723, + 16.002900459834166, + 15.631851616130561 + ], + [ + 16.007578529284284, + 16.07195369631061, + 15.958685743485653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2599.7520288567107, + "scoreError" : 302.3614360358014, + "scoreConfidence" : [ + 2297.390592820909, + 2902.113464892512 + ], + "scorePercentiles" : { + "0.0" : 2486.216825780872, + "50.0" : 2595.1186396923886, + "90.0" : 2726.6502409390805, + "95.0" : 2726.6502409390805, + "99.0" : 2726.6502409390805, + "99.9" : 2726.6502409390805, + "99.99" : 2726.6502409390805, + "99.999" : 2726.6502409390805, + "99.9999" : 2726.6502409390805, + "100.0" : 2726.6502409390805 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2726.6502409390805, + 2672.2414247571724, + 2690.41470384476 + ], + [ + 2504.993123190774, + 2486.216825780872, + 2517.9958546276052 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76729.36243833984, + "scoreError" : 2810.9321112311795, + "scoreConfidence" : [ + 73918.43032710867, + 79540.29454957102 + ], + "scorePercentiles" : { + "0.0" : 75413.51372112431, + "50.0" : 76885.3183266782, + "90.0" : 77673.61132152652, + "95.0" : 77673.61132152652, + "99.0" : 77673.61132152652, + "99.9" : 77673.61132152652, + "99.99" : 77673.61132152652, + "99.999" : 77673.61132152652, + "99.9999" : 77673.61132152652, + "100.0" : 77673.61132152652 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75899.48210445554, + 75413.51372112431, + 76224.88587362839 + ], + [ + 77545.75077972801, + 77618.93082957633, + 77673.61132152652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.21152729871534, + "scoreError" : 11.276590970840466, + "scoreConfidence" : [ + 337.9349363278749, + 360.4881182695558 + ], + "scorePercentiles" : { + "0.0" : 345.4135675774814, + "50.0" : 348.8476038156191, + "90.0" : 354.8662693223416, + "95.0" : 354.8662693223416, + "99.0" : 354.8662693223416, + "99.9" : 354.8662693223416, + "99.99" : 354.8662693223416, + "99.999" : 354.8662693223416, + "99.9999" : 354.8662693223416, + "100.0" : 354.8662693223416 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.4135675774814, + 346.3101834150008, + 345.4317697641454 + ], + [ + 351.3850242162374, + 354.8662693223416, + 351.8623494970856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.43694598604448, + "scoreError" : 3.8330806035218843, + "scoreConfidence" : [ + 105.6038653825226, + 113.27002658956636 + ], + "scorePercentiles" : { + "0.0" : 107.74298613964223, + "50.0" : 109.33432508710804, + "90.0" : 111.3223466740526, + "95.0" : 111.3223466740526, + "99.0" : 111.3223466740526, + "99.9" : 111.3223466740526, + "99.99" : 111.3223466740526, + "99.999" : 111.3223466740526, + "99.9999" : 111.3223466740526, + "100.0" : 111.3223466740526 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.04835231638275, + 111.3223466740526, + 110.4126599975305 + ], + [ + 108.4750329308255, + 107.74298613964223, + 108.62029785783334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06276930135621368, + "scoreError" : 8.180630991347804E-4, + "scoreConfidence" : [ + 0.061951238257078906, + 0.06358736445534846 + ], + "scorePercentiles" : { + "0.0" : 0.06227668064343364, + "50.0" : 0.06284613863222183, + "90.0" : 0.06307034354423674, + "95.0" : 0.06307034354423674, + "99.0" : 0.06307034354423674, + "99.9" : 0.06307034354423674, + "99.99" : 0.06307034354423674, + "99.999" : 0.06307034354423674, + "99.9999" : 0.06307034354423674, + "100.0" : 0.06307034354423674 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06307034354423674, + 0.06276790410494602, + 0.06292437315949762 + ], + [ + 0.06227668064343364, + 0.06297191123019572, + 0.0626045954549723 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9176789812820565E-4, + "scoreError" : 5.8286195474601557E-5, + "scoreConfidence" : [ + 3.334817026536041E-4, + 4.500540936028072E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7022717837265735E-4, + "50.0" : 3.895439988966469E-4, + "90.0" : 4.16843519504263E-4, + "95.0" : 4.16843519504263E-4, + "99.0" : 4.16843519504263E-4, + "99.9" : 4.16843519504263E-4, + "99.99" : 4.16843519504263E-4, + "99.999" : 4.16843519504263E-4, + "99.9999" : 4.16843519504263E-4, + "100.0" : 4.16843519504263E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7022717837265735E-4, + 3.7385320480978583E-4, + 3.7572240471911466E-4 + ], + [ + 4.16843519504263E-4, + 4.033655930741791E-4, + 4.1059548828923406E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12882819912825097, + "scoreError" : 0.004177637349988674, + "scoreConfidence" : [ + 0.1246505617782623, + 0.13300583647823963 + ], + "scorePercentiles" : { + "0.0" : 0.12715831988454301, + "50.0" : 0.1288186684001209, + "90.0" : 0.13050251340241165, + "95.0" : 0.13050251340241165, + "99.0" : 0.13050251340241165, + "99.9" : 0.13050251340241165, + "99.99" : 0.13050251340241165, + "99.999" : 0.13050251340241165, + "99.9999" : 0.13050251340241165, + "100.0" : 0.13050251340241165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12783469918699186, + 0.12749969741052875, + 0.12715831988454301 + ], + [ + 0.12980263761324992, + 0.13050251340241165, + 0.13017132727178057 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013054138897850322, + "scoreError" : 4.5383416670467737E-4, + "scoreConfidence" : [ + 0.012600304731145644, + 0.013507973064555 + ], + "scorePercentiles" : { + "0.0" : 0.012889926233227208, + "50.0" : 0.013035698222892949, + "90.0" : 0.013235337216089195, + "95.0" : 0.013235337216089195, + "99.0" : 0.013235337216089195, + "99.9" : 0.013235337216089195, + "99.99" : 0.013235337216089195, + "99.999" : 0.013235337216089195, + "99.9999" : 0.013235337216089195, + "100.0" : 0.013235337216089195 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013235337216089195, + 0.013126978319768967, + 0.013227828611300339 + ], + [ + 0.012900344880699292, + 0.012944418126016929, + 0.012889926233227208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9646815023881117, + "scoreError" : 0.031010418126798535, + "scoreConfidence" : [ + 0.9336710842613132, + 0.9956919205149102 + ], + "scorePercentiles" : { + "0.0" : 0.9522563815463722, + "50.0" : 0.9646899451581596, + "90.0" : 0.9768986981832389, + "95.0" : 0.9768986981832389, + "99.0" : 0.9768986981832389, + "99.9" : 0.9768986981832389, + "99.99" : 0.9768986981832389, + "99.999" : 0.9768986981832389, + "99.9999" : 0.9768986981832389, + "100.0" : 0.9768986981832389 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9563302923400593, + 0.9556109101767798, + 0.9522563815463722 + ], + [ + 0.97304959797626, + 0.9768986981832389, + 0.9739431341059602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010831312673456377, + "scoreError" : 4.92220047129527E-4, + "scoreConfidence" : [ + 0.01033909262632685, + 0.011323532720585904 + ], + "scorePercentiles" : { + "0.0" : 0.010640821911044903, + "50.0" : 0.010807452107362147, + "90.0" : 0.011114534514261835, + "95.0" : 0.011114534514261835, + "99.0" : 0.011114534514261835, + "99.9" : 0.011114534514261835, + "99.99" : 0.011114534514261835, + "99.999" : 0.011114534514261835, + "99.9999" : 0.011114534514261835, + "100.0" : 0.011114534514261835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01073145331098396, + 0.010699605941551702, + 0.010640821911044903 + ], + [ + 0.010918009459155532, + 0.010883450903740335, + 0.011114534514261835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3982641902945168, + "scoreError" : 0.2541062410605777, + "scoreConfidence" : [ + 3.144157949233939, + 3.6523704313550946 + ], + "scorePercentiles" : { + "0.0" : 3.2946570507246378, + "50.0" : 3.406327492420843, + "90.0" : 3.4902471772505232, + "95.0" : 3.4902471772505232, + "99.0" : 3.4902471772505232, + "99.9" : 3.4902471772505232, + "99.99" : 3.4902471772505232, + "99.999" : 3.4902471772505232, + "99.9999" : 3.4902471772505232, + "100.0" : 3.4902471772505232 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4792921488178026, + 3.4689798578363384, + 3.4902471772505232 + ], + [ + 3.2946570507246378, + 3.3127337801324503, + 3.3436751270053477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8692957377200057, + "scoreError" : 0.04661408342578394, + "scoreConfidence" : [ + 2.8226816542942217, + 2.9159098211457897 + ], + "scorePercentiles" : { + "0.0" : 2.8428308465036953, + "50.0" : 2.8688340281461073, + "90.0" : 2.891147969355305, + "95.0" : 2.891147969355305, + "99.0" : 2.891147969355305, + "99.9" : 2.891147969355305, + "99.99" : 2.891147969355305, + "99.999" : 2.891147969355305, + "99.9999" : 2.891147969355305, + "100.0" : 2.891147969355305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8804319386520736, + 2.8639395085910655, + 2.891147969355305 + ], + [ + 2.8636956155167477, + 2.8428308465036953, + 2.8737285477011496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18011416649034798, + "scoreError" : 0.012591881445920133, + "scoreConfidence" : [ + 0.16752228504442784, + 0.1927060479362681 + ], + "scorePercentiles" : { + "0.0" : 0.17565802445108028, + "50.0" : 0.17996186928506674, + "90.0" : 0.1850035576172417, + "95.0" : 0.1850035576172417, + "99.0" : 0.1850035576172417, + "99.9" : 0.1850035576172417, + "99.99" : 0.1850035576172417, + "99.999" : 0.1850035576172417, + "99.9999" : 0.1850035576172417, + "100.0" : 0.1850035576172417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17616101985273394, + 0.17565802445108028, + 0.17630441124098659 + ], + [ + 0.1850035576172417, + 0.18393865845089852, + 0.18361932732914693 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34556955133005357, + "scoreError" : 0.028966373167414836, + "scoreConfidence" : [ + 0.3166031781626387, + 0.3745359244974684 + ], + "scorePercentiles" : { + "0.0" : 0.33555554120528824, + "50.0" : 0.3454442617298198, + "90.0" : 0.35584910639433515, + "95.0" : 0.35584910639433515, + "99.0" : 0.35584910639433515, + "99.9" : 0.35584910639433515, + "99.99" : 0.35584910639433515, + "99.999" : 0.35584910639433515, + "99.9999" : 0.35584910639433515, + "100.0" : 0.35584910639433515 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.35429784748104587, + 0.35584910639433515, + 0.3548021745547435 + ], + [ + 0.33659067597859377, + 0.3363219623663147, + 0.33555554120528824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14512224421431838, + "scoreError" : 0.0030392361538840876, + "scoreConfidence" : [ + 0.14208300806043428, + 0.14816148036820248 + ], + "scorePercentiles" : { + "0.0" : 0.14374463335681123, + "50.0" : 0.1455985411303492, + "90.0" : 0.1460549326556544, + "95.0" : 0.1460549326556544, + "99.0" : 0.1460549326556544, + "99.9" : 0.1460549326556544, + "99.99" : 0.1460549326556544, + "99.999" : 0.1460549326556544, + "99.9999" : 0.1460549326556544, + "100.0" : 0.1460549326556544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1455807497961917, + 0.14374463335681123, + 0.1437453761157987 + ], + [ + 0.1460549326556544, + 0.14561633246450673, + 0.1459914408969474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40011214047933, + "scoreError" : 0.02687909982744918, + "scoreConfidence" : [ + 0.37323304065188084, + 0.4269912403067792 + ], + "scorePercentiles" : { + "0.0" : 0.3910888125928823, + "50.0" : 0.39956063779791406, + "90.0" : 0.4097242616052772, + "95.0" : 0.4097242616052772, + "99.0" : 0.4097242616052772, + "99.9" : 0.4097242616052772, + "99.99" : 0.4097242616052772, + "99.999" : 0.4097242616052772, + "99.9999" : 0.4097242616052772, + "100.0" : 0.4097242616052772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39180752836545996, + 0.3910888125928823, + 0.3912967872598505 + ], + [ + 0.4097242616052772, + 0.4094417058221422, + 0.4073137472303682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15496893821552374, + "scoreError" : 0.0011346435053134173, + "scoreConfidence" : [ + 0.15383429471021032, + 0.15610358172083716 + ], + "scorePercentiles" : { + "0.0" : 0.1544363012524516, + "50.0" : 0.15505503897753825, + "90.0" : 0.15545565113712323, + "95.0" : 0.15545565113712323, + "99.0" : 0.15545565113712323, + "99.9" : 0.15545565113712323, + "99.99" : 0.15545565113712323, + "99.999" : 0.15545565113712323, + "99.9999" : 0.15545565113712323, + "100.0" : 0.15545565113712323 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1548946530621728, + 0.1544363012524516, + 0.154571309122666 + ], + [ + 0.15524028982582508, + 0.15545565113712323, + 0.15521542489290371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04652006301007155, + "scoreError" : 0.001005773949428659, + "scoreConfidence" : [ + 0.045514289060642886, + 0.04752583695950021 + ], + "scorePercentiles" : { + "0.0" : 0.04615464651583543, + "50.0" : 0.04652105650404263, + "90.0" : 0.04713101404481143, + "95.0" : 0.04713101404481143, + "99.0" : 0.04713101404481143, + "99.9" : 0.04713101404481143, + "99.99" : 0.04713101404481143, + "99.999" : 0.04713101404481143, + "99.9999" : 0.04713101404481143, + "100.0" : 0.04713101404481143 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04713101404481143, + 0.04616709146938248, + 0.04615464651583543 + ], + [ + 0.04650214700972346, + 0.04653996599836181, + 0.046625513022314644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8990981.808598017, + "scoreError" : 145391.99193079592, + "scoreConfidence" : [ + 8845589.816667221, + 9136373.800528813 + ], + "scorePercentiles" : { + "0.0" : 8931278.847321428, + "50.0" : 8987126.52909914, + "90.0" : 9083879.376930064, + "95.0" : 9083879.376930064, + "99.0" : 9083879.376930064, + "99.9" : 9083879.376930064, + "99.99" : 9083879.376930064, + "99.999" : 9083879.376930064, + "99.9999" : 9083879.376930064, + "100.0" : 9083879.376930064 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8983321.225314183, + 8990931.832884097, + 8957462.823634736 + ], + [ + 9083879.376930064, + 8931278.847321428, + 8999016.745503597 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-08T02:45:03Z-48f469d204c9b0e955bc8fbb7ae15d40f05711ea-jdk17.json b/performance-results/2025-07-08T02:45:03Z-48f469d204c9b0e955bc8fbb7ae15d40f05711ea-jdk17.json new file mode 100644 index 0000000000..8073a7d49c --- /dev/null +++ b/performance-results/2025-07-08T02:45:03Z-48f469d204c9b0e955bc8fbb7ae15d40f05711ea-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3111861877386053, + "scoreError" : 0.04470102755307947, + "scoreConfidence" : [ + 3.266485160185526, + 3.3558872152916845 + ], + "scorePercentiles" : { + "0.0" : 3.3049687089703568, + "50.0" : 3.3094569453262896, + "90.0" : 3.320862151331487, + "95.0" : 3.320862151331487, + "99.0" : 3.320862151331487, + "99.9" : 3.320862151331487, + "99.99" : 3.320862151331487, + "99.999" : 3.320862151331487, + "99.9999" : 3.320862151331487, + "100.0" : 3.320862151331487 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3078298410530467, + 3.3110840495995326 + ], + [ + 3.3049687089703568, + 3.320862151331487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6753659085298707, + "scoreError" : 0.02860010959827416, + "scoreConfidence" : [ + 1.6467657989315965, + 1.7039660181281449 + ], + "scorePercentiles" : { + "0.0" : 1.6725027788648428, + "50.0" : 1.6735065161850493, + "90.0" : 1.6819478228845417, + "95.0" : 1.6819478228845417, + "99.0" : 1.6819478228845417, + "99.9" : 1.6819478228845417, + "99.99" : 1.6819478228845417, + "99.999" : 1.6819478228845417, + "99.9999" : 1.6819478228845417, + "100.0" : 1.6819478228845417 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6739139151999702, + 1.6819478228845417 + ], + [ + 1.6725027788648428, + 1.6730991171701284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8421832733153307, + "scoreError" : 0.0354929934469997, + "scoreConfidence" : [ + 0.806690279868331, + 0.8776762667623305 + ], + "scorePercentiles" : { + "0.0" : 0.8343765017386404, + "50.0" : 0.8436491691662704, + "90.0" : 0.8470582531901418, + "95.0" : 0.8470582531901418, + "99.0" : 0.8470582531901418, + "99.9" : 0.8470582531901418, + "99.99" : 0.8470582531901418, + "99.999" : 0.8470582531901418, + "99.9999" : 0.8470582531901418, + "100.0" : 0.8470582531901418 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8343765017386404, + 0.8470582531901418 + ], + [ + 0.8427841566094152, + 0.8445141817231258 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.877844446876482, + "scoreError" : 0.17759586155784932, + "scoreConfidence" : [ + 15.700248585318633, + 16.05544030843433 + ], + "scorePercentiles" : { + "0.0" : 15.778433816243677, + "50.0" : 15.875790957114207, + "90.0" : 15.959411956553302, + "95.0" : 15.959411956553302, + "99.0" : 15.959411956553302, + "99.9" : 15.959411956553302, + "99.99" : 15.959411956553302, + "99.999" : 15.959411956553302, + "99.9999" : 15.959411956553302, + "100.0" : 15.959411956553302 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.959411956553302, + 15.881307320211134, + 15.778433816243677 + ], + [ + 15.848763089624175, + 15.87027459401728, + 15.928875904609336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2625.129232819502, + "scoreError" : 74.74242116017345, + "scoreConfidence" : [ + 2550.3868116593285, + 2699.871653979675 + ], + "scorePercentiles" : { + "0.0" : 2590.7559302768545, + "50.0" : 2633.3223789418107, + "90.0" : 2650.3388720892685, + "95.0" : 2650.3388720892685, + "99.0" : 2650.3388720892685, + "99.9" : 2650.3388720892685, + "99.99" : 2650.3388720892685, + "99.999" : 2650.3388720892685, + "99.9999" : 2650.3388720892685, + "100.0" : 2650.3388720892685 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2630.719588056037, + 2650.3388720892685, + 2635.925169827584 + ], + [ + 2590.7559302768545, + 2593.5786459636256, + 2649.4571907036425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76722.39059217849, + "scoreError" : 463.7358071425132, + "scoreConfidence" : [ + 76258.65478503598, + 77186.126399321 + ], + "scorePercentiles" : { + "0.0" : 76508.45852063182, + "50.0" : 76711.13400314134, + "90.0" : 76973.16205956138, + "95.0" : 76973.16205956138, + "99.0" : 76973.16205956138, + "99.9" : 76973.16205956138, + "99.99" : 76973.16205956138, + "99.999" : 76973.16205956138, + "99.9999" : 76973.16205956138, + "100.0" : 76973.16205956138 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76973.16205956138, + 76779.59769384586, + 76811.03124363018 + ], + [ + 76619.42372296487, + 76642.6703124368, + 76508.45852063182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 336.5046428066452, + "scoreError" : 11.584847503522433, + "scoreConfidence" : [ + 324.9197953031228, + 348.08949031016766 + ], + "scorePercentiles" : { + "0.0" : 330.8177965082622, + "50.0" : 336.09940638505753, + "90.0" : 342.3118122616779, + "95.0" : 342.3118122616779, + "99.0" : 342.3118122616779, + "99.9" : 342.3118122616779, + "99.99" : 342.3118122616779, + "99.999" : 342.3118122616779, + "99.9999" : 342.3118122616779, + "100.0" : 342.3118122616779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 337.5329349398442, + 339.5512776513493, + 342.3118122616779 + ], + [ + 330.8177965082622, + 334.66587783027086, + 334.1481576484668 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.6112473012206, + "scoreError" : 10.262775363795884, + "scoreConfidence" : [ + 96.34847193742472, + 116.87402266501648 + ], + "scorePercentiles" : { + "0.0" : 102.27929920169393, + "50.0" : 106.99108172242693, + "90.0" : 111.23888913643067, + "95.0" : 111.23888913643067, + "99.0" : 111.23888913643067, + "99.9" : 111.23888913643067, + "99.99" : 111.23888913643067, + "99.999" : 111.23888913643067, + "99.9999" : 111.23888913643067, + "100.0" : 111.23888913643067 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.27929920169393, + 102.51190470324684, + 106.52684513921808 + ], + [ + 111.23888913643067, + 109.65522732109837, + 107.45531830563577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06277289458362904, + "scoreError" : 0.0016463727331435215, + "scoreConfidence" : [ + 0.061126521850485525, + 0.06441926731677257 + ], + "scorePercentiles" : { + "0.0" : 0.06205951003487694, + "50.0" : 0.06269829759126007, + "90.0" : 0.06345989360027922, + "95.0" : 0.06345989360027922, + "99.0" : 0.06345989360027922, + "99.9" : 0.06345989360027922, + "99.99" : 0.06345989360027922, + "99.999" : 0.06345989360027922, + "99.9999" : 0.06345989360027922, + "100.0" : 0.06345989360027922 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06234717211259703, + 0.06337419657150099, + 0.06345989360027922 + ], + [ + 0.06300545099200473, + 0.062391144190515405, + 0.06205951003487694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7993614329277125E-4, + "scoreError" : 8.952824358270682E-6, + "scoreConfidence" : [ + 3.709833189345006E-4, + 3.888889676510419E-4 + ], + "scorePercentiles" : { + "0.0" : 3.767672024697854E-4, + "50.0" : 3.785163843943335E-4, + "90.0" : 3.84583105211169E-4, + "95.0" : 3.84583105211169E-4, + "99.0" : 3.84583105211169E-4, + "99.9" : 3.84583105211169E-4, + "99.99" : 3.84583105211169E-4, + "99.999" : 3.84583105211169E-4, + "99.9999" : 3.84583105211169E-4, + "100.0" : 3.84583105211169E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7824936950372465E-4, + 3.787833992849424E-4, + 3.7794966499175457E-4 + ], + [ + 3.767672024697854E-4, + 3.84583105211169E-4, + 3.832841182952514E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12830921352283547, + "scoreError" : 0.002731332017477503, + "scoreConfidence" : [ + 0.12557788150535798, + 0.13104054554031297 + ], + "scorePercentiles" : { + "0.0" : 0.1269519347983395, + "50.0" : 0.12827221420476245, + "90.0" : 0.1293692783958603, + "95.0" : 0.1293692783958603, + "99.0" : 0.1293692783958603, + "99.9" : 0.1293692783958603, + "99.99" : 0.1293692783958603, + "99.999" : 0.1293692783958603, + "99.9999" : 0.1293692783958603, + "100.0" : 0.1293692783958603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12777093854370297, + 0.1269519347983395, + 0.12771911583948503 + ], + [ + 0.12927052369380315, + 0.1293692783958603, + 0.12877348986582193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013348862864830328, + "scoreError" : 3.2105634440955406E-4, + "scoreConfidence" : [ + 0.013027806520420774, + 0.013669919209239883 + ], + "scorePercentiles" : { + "0.0" : 0.013227774104624892, + "50.0" : 0.013356163110647475, + "90.0" : 0.013468953135459332, + "95.0" : 0.013468953135459332, + "99.0" : 0.013468953135459332, + "99.9" : 0.013468953135459332, + "99.99" : 0.013468953135459332, + "99.999" : 0.013468953135459332, + "99.9999" : 0.013468953135459332, + "100.0" : 0.013468953135459332 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013468953135459332, + 0.013444068554458533, + 0.013444049000114273 + ], + [ + 0.013268277221180676, + 0.013240055173144269, + 0.013227774104624892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9968187037689585, + "scoreError" : 0.009986572694560615, + "scoreConfidence" : [ + 0.9868321310743979, + 1.0068052764635191 + ], + "scorePercentiles" : { + "0.0" : 0.9929747458047861, + "50.0" : 0.9963180555242077, + "90.0" : 1.0023362932745314, + "95.0" : 1.0023362932745314, + "99.0" : 1.0023362932745314, + "99.9" : 1.0023362932745314, + "99.99" : 1.0023362932745314, + "99.999" : 1.0023362932745314, + "99.9999" : 1.0023362932745314, + "100.0" : 1.0023362932745314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9980668740518962, + 1.0023362932745314, + 0.9988648376947663 + ], + [ + 0.9929747458047861, + 0.9941002347912525, + 0.9945692369965191 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010905440239151456, + "scoreError" : 8.594165241699118E-4, + "scoreConfidence" : [ + 0.010046023714981544, + 0.011764856763321369 + ], + "scorePercentiles" : { + "0.0" : 0.010556125764507433, + "50.0" : 0.01092512002364807, + "90.0" : 0.011205883796085673, + "95.0" : 0.011205883796085673, + "99.0" : 0.011205883796085673, + "99.9" : 0.011205883796085673, + "99.99" : 0.011205883796085673, + "99.999" : 0.011205883796085673, + "99.9999" : 0.011205883796085673, + "100.0" : 0.011205883796085673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01068130523880527, + 0.010647859976021686, + 0.010556125764507433 + ], + [ + 0.011168934808490868, + 0.011205883796085673, + 0.011172531850997794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3453512570174113, + "scoreError" : 0.06386717355793192, + "scoreConfidence" : [ + 3.281484083459479, + 3.4092184305753435 + ], + "scorePercentiles" : { + "0.0" : 3.3175940039787797, + "50.0" : 3.3403724550869565, + "90.0" : 3.373957721322537, + "95.0" : 3.373957721322537, + "99.0" : 3.373957721322537, + "99.9" : 3.373957721322537, + "99.99" : 3.373957721322537, + "99.999" : 3.373957721322537, + "99.9999" : 3.373957721322537, + "100.0" : 3.373957721322537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3707236138814016, + 3.373957721322537, + 3.335524458 + ], + [ + 3.3175940039787797, + 3.345220452173913, + 3.329087292747838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0079616733984746, + "scoreError" : 0.08355177916826348, + "scoreConfidence" : [ + 2.924409894230211, + 3.0915134525667383 + ], + "scorePercentiles" : { + "0.0" : 2.9821529499105544, + "50.0" : 2.999913718133117, + "90.0" : 3.0636365065849924, + "95.0" : 3.0636365065849924, + "99.0" : 3.0636365065849924, + "99.9" : 3.0636365065849924, + "99.99" : 3.0636365065849924, + "99.999" : 3.0636365065849924, + "99.9999" : 3.0636365065849924, + "100.0" : 3.0636365065849924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.008593572330827, + 2.9821529499105544, + 2.9912338639354066 + ], + [ + 2.9888697149686285, + 3.01328343266044, + 3.0636365065849924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18122155300118947, + "scoreError" : 0.009063308059644172, + "scoreConfidence" : [ + 0.1721582449415453, + 0.19028486106083364 + ], + "scorePercentiles" : { + "0.0" : 0.1780329494935109, + "50.0" : 0.1809839238952508, + "90.0" : 0.18515482881264927, + "95.0" : 0.18515482881264927, + "99.0" : 0.18515482881264927, + "99.9" : 0.18515482881264927, + "99.99" : 0.18515482881264927, + "99.999" : 0.18515482881264927, + "99.9999" : 0.18515482881264927, + "100.0" : 0.18515482881264927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18313498903050945, + 0.18515482881264927, + 0.18401856169954364 + ], + [ + 0.17883285875999214, + 0.17815513021093138, + 0.1780329494935109 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31816100737555447, + "scoreError" : 0.008830802387586744, + "scoreConfidence" : [ + 0.3093302049879677, + 0.32699180976314124 + ], + "scorePercentiles" : { + "0.0" : 0.3145582155888274, + "50.0" : 0.31776938356964624, + "90.0" : 0.3220582074329329, + "95.0" : 0.3220582074329329, + "99.0" : 0.3220582074329329, + "99.9" : 0.3220582074329329, + "99.99" : 0.3220582074329329, + "99.999" : 0.3220582074329329, + "99.9999" : 0.3220582074329329, + "100.0" : 0.3220582074329329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3158951409167009, + 0.3145582155888274, + 0.31576292491316704 + ], + [ + 0.3220582074329329, + 0.32104792917910685, + 0.31964362622259157 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1424024796974789, + "scoreError" : 0.004456492077122292, + "scoreConfidence" : [ + 0.13794598762035662, + 0.1468589717746012 + ], + "scorePercentiles" : { + "0.0" : 0.14066881949895205, + "50.0" : 0.14223852714229443, + "90.0" : 0.14494651903119202, + "95.0" : 0.14494651903119202, + "99.0" : 0.14494651903119202, + "99.9" : 0.14494651903119202, + "99.99" : 0.14494651903119202, + "99.999" : 0.14494651903119202, + "99.9999" : 0.14494651903119202, + "100.0" : 0.14494651903119202 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14147809809857959, + 0.14120629286924596, + 0.14066881949895205 + ], + [ + 0.14494651903119202, + 0.14299895618600927, + 0.14311619250089447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40966062381724605, + "scoreError" : 0.022533144263186478, + "scoreConfidence" : [ + 0.3871274795540596, + 0.4321937680804325 + ], + "scorePercentiles" : { + "0.0" : 0.40210735778045836, + "50.0" : 0.409238245903968, + "90.0" : 0.41810533075507983, + "95.0" : 0.41810533075507983, + "99.0" : 0.41810533075507983, + "99.9" : 0.41810533075507983, + "99.99" : 0.41810533075507983, + "99.999" : 0.41810533075507983, + "99.9999" : 0.41810533075507983, + "100.0" : 0.41810533075507983 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4024812152688345, + 0.40246750116709595, + 0.40210735778045836 + ], + [ + 0.4159952765391015, + 0.41810533075507983, + 0.41680706139290624 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15530993485383823, + "scoreError" : 0.0018728554582300564, + "scoreConfidence" : [ + 0.1534370793956082, + 0.15718279031206828 + ], + "scorePercentiles" : { + "0.0" : 0.15455439169139465, + "50.0" : 0.15528874632037193, + "90.0" : 0.15612519779241865, + "95.0" : 0.15612519779241865, + "99.0" : 0.15612519779241865, + "99.9" : 0.15612519779241865, + "99.99" : 0.15612519779241865, + "99.999" : 0.15612519779241865, + "99.9999" : 0.15612519779241865, + "100.0" : 0.15612519779241865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15587509144896813, + 0.15569813772809366, + 0.15612519779241865 + ], + [ + 0.15455439169139465, + 0.1547274355495041, + 0.15487935491265023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047980968429249295, + "scoreError" : 0.0071018296586655, + "scoreConfidence" : [ + 0.040879138770583794, + 0.055082798087914796 + ], + "scorePercentiles" : { + "0.0" : 0.045308783196125246, + "50.0" : 0.04797000298196152, + "90.0" : 0.05074128772941075, + "95.0" : 0.05074128772941075, + "99.0" : 0.05074128772941075, + "99.9" : 0.05074128772941075, + "99.99" : 0.05074128772941075, + "99.999" : 0.05074128772941075, + "99.9999" : 0.05074128772941075, + "100.0" : 0.05074128772941075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.05074128772941075, + 0.050183216461838785, + 0.049882316368624516 + ], + [ + 0.04605768959529852, + 0.04571251722419799, + 0.045308783196125246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9167712.766603893, + "scoreError" : 627819.1233977225, + "scoreConfidence" : [ + 8539893.64320617, + 9795531.890001616 + ], + "scorePercentiles" : { + "0.0" : 8894901.506666666, + "50.0" : 9234356.134530727, + "90.0" : 9458672.793005671, + "95.0" : 9458672.793005671, + "99.0" : 9458672.793005671, + "99.9" : 9458672.793005671, + "99.99" : 9458672.793005671, + "99.999" : 9458672.793005671, + "99.9999" : 9458672.793005671, + "100.0" : 9458672.793005671 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8904308.558718862, + 8894901.506666666, + 9253595.640148012 + ], + [ + 9279681.472170686, + 9215116.628913444, + 9458672.793005671 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:24:24Z-ecaebb16aeb692ba23468c5cd82b1cad34aa5554-jdk17.json b/performance-results/2025-07-10T01:24:24Z-ecaebb16aeb692ba23468c5cd82b1cad34aa5554-jdk17.json new file mode 100644 index 0000000000..496e0044c2 --- /dev/null +++ b/performance-results/2025-07-10T01:24:24Z-ecaebb16aeb692ba23468c5cd82b1cad34aa5554-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.323005923108179, + "scoreError" : 0.04315431117395122, + "scoreConfidence" : [ + 3.2798516119342276, + 3.3661602342821304 + ], + "scorePercentiles" : { + "0.0" : 3.3160301993257795, + "50.0" : 3.3225227127798456, + "90.0" : 3.330948067547246, + "95.0" : 3.330948067547246, + "99.0" : 3.330948067547246, + "99.9" : 3.330948067547246, + "99.99" : 3.330948067547246, + "99.999" : 3.330948067547246, + "99.9999" : 3.330948067547246, + "100.0" : 3.330948067547246 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.319237229857945, + 3.3258081957017462 + ], + [ + 3.3160301993257795, + 3.330948067547246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.673868262976891, + "scoreError" : 0.03020656530751464, + "scoreConfidence" : [ + 1.6436616976693765, + 1.7040748282844056 + ], + "scorePercentiles" : { + "0.0" : 1.6668959889018127, + "50.0" : 1.6758426967660927, + "90.0" : 1.6768916694735663, + "95.0" : 1.6768916694735663, + "99.0" : 1.6768916694735663, + "99.9" : 1.6768916694735663, + "99.99" : 1.6768916694735663, + "99.999" : 1.6768916694735663, + "99.9999" : 1.6768916694735663, + "100.0" : 1.6768916694735663 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6668959889018127, + 1.6768916694735663 + ], + [ + 1.6758777982453095, + 1.675807595286876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8442386528591477, + "scoreError" : 0.05158203258772448, + "scoreConfidence" : [ + 0.7926566202714231, + 0.8958206854468722 + ], + "scorePercentiles" : { + "0.0" : 0.8324064853223972, + "50.0" : 0.8473190211568677, + "90.0" : 0.8499100838004581, + "95.0" : 0.8499100838004581, + "99.0" : 0.8499100838004581, + "99.9" : 0.8499100838004581, + "99.99" : 0.8499100838004581, + "99.999" : 0.8499100838004581, + "99.9999" : 0.8499100838004581, + "100.0" : 0.8499100838004581 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8324064853223972, + 0.8472404232345855 + ], + [ + 0.8473976190791499, + 0.8499100838004581 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.014154586259714, + "scoreError" : 0.1540343587331148, + "scoreConfidence" : [ + 15.860120227526599, + 16.168188944992828 + ], + "scorePercentiles" : { + "0.0" : 15.952568887888775, + "50.0" : 16.01106336493644, + "90.0" : 16.0848092840248, + "95.0" : 16.0848092840248, + "99.0" : 16.0848092840248, + "99.9" : 16.0848092840248, + "99.99" : 16.0848092840248, + "99.999" : 16.0848092840248, + "99.9999" : 16.0848092840248, + "100.0" : 16.0848092840248 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.0848092840248, + 16.04405008087214, + 16.058000326794936 + ], + [ + 15.952568887888775, + 15.978076649000737, + 15.967422288976893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2596.719602636972, + "scoreError" : 45.01215347233643, + "scoreConfidence" : [ + 2551.7074491646354, + 2641.7317561093087 + ], + "scorePercentiles" : { + "0.0" : 2579.2937183539243, + "50.0" : 2597.756551787292, + "90.0" : 2612.1209995924146, + "95.0" : 2612.1209995924146, + "99.0" : 2612.1209995924146, + "99.9" : 2612.1209995924146, + "99.99" : 2612.1209995924146, + "99.999" : 2612.1209995924146, + "99.9999" : 2612.1209995924146, + "100.0" : 2612.1209995924146 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2609.3685423544284, + 2612.1209995924146, + 2612.1157164536526 + ], + [ + 2579.2937183539243, + 2586.144561220156, + 2581.2740778472557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72962.98512175732, + "scoreError" : 4736.504566248494, + "scoreConfidence" : [ + 68226.48055550882, + 77699.48968800581 + ], + "scorePercentiles" : { + "0.0" : 71336.90040608442, + "50.0" : 72977.00617270188, + "90.0" : 74628.15749514847, + "95.0" : 74628.15749514847, + "99.0" : 74628.15749514847, + "99.9" : 74628.15749514847, + "99.99" : 74628.15749514847, + "99.999" : 74628.15749514847, + "99.9999" : 74628.15749514847, + "100.0" : 74628.15749514847 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74443.86631713864, + 74436.170108594, + 74628.15749514847 + ], + [ + 71517.84223680975, + 71336.90040608442, + 71414.97416676856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 333.47620038744043, + "scoreError" : 1.9553043344013494, + "scoreConfidence" : [ + 331.52089605303905, + 335.4315047218418 + ], + "scorePercentiles" : { + "0.0" : 332.3582652408605, + "50.0" : 333.44214791303096, + "90.0" : 334.3035836037439, + "95.0" : 334.3035836037439, + "99.0" : 334.3035836037439, + "99.9" : 334.3035836037439, + "99.99" : 334.3035836037439, + "99.999" : 334.3035836037439, + "99.9999" : 334.3035836037439, + "100.0" : 334.3035836037439 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 334.3035836037439, + 334.10335365560536, + 333.32188391657627 + ], + [ + 332.3582652408605, + 333.56241190948566, + 333.207703998371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.4578486544778, + "scoreError" : 3.5201569945154336, + "scoreConfidence" : [ + 108.93769165996237, + 115.97800564899323 + ], + "scorePercentiles" : { + "0.0" : 111.12071324869143, + "50.0" : 112.48890692528505, + "90.0" : 113.87634312350211, + "95.0" : 113.87634312350211, + "99.0" : 113.87634312350211, + "99.9" : 113.87634312350211, + "99.99" : 113.87634312350211, + "99.999" : 113.87634312350211, + "99.9999" : 113.87634312350211, + "100.0" : 113.87634312350211 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.87634312350211, + 113.3029176413511, + 113.55693511080062 + ], + [ + 111.12071324869143, + 111.21528659330252, + 111.674896209219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062176378242574694, + "scoreError" : 0.001597868950891, + "scoreConfidence" : [ + 0.060578509291683694, + 0.0637742471934657 + ], + "scorePercentiles" : { + "0.0" : 0.06154697670482521, + "50.0" : 0.062192199937072534, + "90.0" : 0.0627719292758099, + "95.0" : 0.0627719292758099, + "99.0" : 0.0627719292758099, + "99.9" : 0.0627719292758099, + "99.99" : 0.0627719292758099, + "99.999" : 0.0627719292758099, + "99.9999" : 0.0627719292758099, + "100.0" : 0.0627719292758099 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061761136966081175, + 0.06154697670482521, + 0.061677238205961625 + ], + [ + 0.0626232629080639, + 0.06267772539470633, + 0.0627719292758099 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6888442651416214E-4, + "scoreError" : 2.134356696497218E-5, + "scoreConfidence" : [ + 3.4754085954919E-4, + 3.902279934791343E-4 + ], + "scorePercentiles" : { + "0.0" : 3.604473438141589E-4, + "50.0" : 3.686788237354444E-4, + "90.0" : 3.773868659548477E-4, + "95.0" : 3.773868659548477E-4, + "99.0" : 3.773868659548477E-4, + "99.9" : 3.773868659548477E-4, + "99.99" : 3.773868659548477E-4, + "99.999" : 3.773868659548477E-4, + "99.9999" : 3.773868659548477E-4, + "100.0" : 3.773868659548477E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.604473438141589E-4, + 3.6252952839136565E-4, + 3.6316448081670754E-4 + ], + [ + 3.773868659548477E-4, + 3.741931666541812E-4, + 3.7558517345371147E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12730998644290217, + "scoreError" : 0.0023791726137559342, + "scoreConfidence" : [ + 0.12493081382914624, + 0.12968915905665812 + ], + "scorePercentiles" : { + "0.0" : 0.1264087550625711, + "50.0" : 0.12727730516329772, + "90.0" : 0.1281651864506703, + "95.0" : 0.1281651864506703, + "99.0" : 0.1281651864506703, + "99.9" : 0.1281651864506703, + "99.99" : 0.1281651864506703, + "99.999" : 0.1281651864506703, + "99.9999" : 0.1281651864506703, + "100.0" : 0.1281651864506703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1281651864506703, + 0.12816447271422346, + 0.12789825723567252 + ], + [ + 0.1266563530909229, + 0.1265668941033527, + 0.1264087550625711 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0132658907922358, + "scoreError" : 6.420574643064141E-4, + "scoreConfidence" : [ + 0.012623833327929386, + 0.013907948256542214 + ], + "scorePercentiles" : { + "0.0" : 0.01305284900525501, + "50.0" : 0.013263493753057905, + "90.0" : 0.013480998916145522, + "95.0" : 0.013480998916145522, + "99.0" : 0.013480998916145522, + "99.9" : 0.013480998916145522, + "99.99" : 0.013480998916145522, + "99.999" : 0.013480998916145522, + "99.9999" : 0.013480998916145522, + "100.0" : 0.013480998916145522 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01305663237820928, + 0.013061348668021546, + 0.01305284900525501 + ], + [ + 0.013480998916145522, + 0.013477876947689189, + 0.013465638838094263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.979885543890148, + "scoreError" : 0.04365298879395025, + "scoreConfidence" : [ + 0.9362325550961977, + 1.0235385326840982 + ], + "scorePercentiles" : { + "0.0" : 0.96500151288237, + "50.0" : 0.979892679717701, + "90.0" : 0.9948080274544912, + "95.0" : 0.9948080274544912, + "99.0" : 0.9948080274544912, + "99.9" : 0.9948080274544912, + "99.99" : 0.9948080274544912, + "99.999" : 0.9948080274544912, + "99.9999" : 0.9948080274544912, + "100.0" : 0.9948080274544912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9658729567316979, + 0.96500151288237, + 0.9661772877016713 + ], + [ + 0.9948080274544912, + 0.9936080717337308, + 0.9938454068369273 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011066147284259961, + "scoreError" : 1.1634427171318027E-4, + "scoreConfidence" : [ + 0.01094980301254678, + 0.011182491555973142 + ], + "scorePercentiles" : { + "0.0" : 0.011028912152653706, + "50.0" : 0.011055648834345812, + "90.0" : 0.01112291139955732, + "95.0" : 0.01112291139955732, + "99.0" : 0.01112291139955732, + "99.9" : 0.01112291139955732, + "99.99" : 0.01112291139955732, + "99.999" : 0.01112291139955732, + "99.9999" : 0.01112291139955732, + "100.0" : 0.01112291139955732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011030897964631445, + 0.011028912152653706, + 0.011031285301728987 + ], + [ + 0.011080012366962638, + 0.011102864520025669, + 0.01112291139955732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.4680176054707488, + "scoreError" : 0.7913755381501821, + "scoreConfidence" : [ + 2.6766420673205666, + 4.259393143620931 + ], + "scorePercentiles" : { + "0.0" : 3.1984932007672633, + "50.0" : 3.4700025430439356, + "90.0" : 3.7328222425373134, + "95.0" : 3.7328222425373134, + "99.0" : 3.7328222425373134, + "99.9" : 3.7328222425373134, + "99.99" : 3.7328222425373134, + "99.999" : 3.7328222425373134, + "99.9999" : 3.7328222425373134, + "100.0" : 3.7328222425373134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7148553781575036, + 3.7287188635346755, + 3.7328222425373134 + ], + [ + 3.1984932007672633, + 3.2251497079303677, + 3.20806623989737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9458121083249114, + "scoreError" : 0.09713012775807732, + "scoreConfidence" : [ + 2.848681980566834, + 3.0429422360829887 + ], + "scorePercentiles" : { + "0.0" : 2.907372673837209, + "50.0" : 2.941439248068595, + "90.0" : 2.9957614534291706, + "95.0" : 2.9957614534291706, + "99.0" : 2.9957614534291706, + "99.9" : 2.9957614534291706, + "99.99" : 2.9957614534291706, + "99.999" : 2.9957614534291706, + "99.9999" : 2.9957614534291706, + "100.0" : 2.9957614534291706 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9957614534291706, + 2.9753003117192147, + 2.935184107100939 + ], + [ + 2.947694389036251, + 2.913559714826682, + 2.907372673837209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1812379655142996, + "scoreError" : 0.0051469256021169415, + "scoreConfidence" : [ + 0.17609103991218267, + 0.18638489111641654 + ], + "scorePercentiles" : { + "0.0" : 0.17882158725390268, + "50.0" : 0.18221568091872486, + "90.0" : 0.18278863983988008, + "95.0" : 0.18278863983988008, + "99.0" : 0.18278863983988008, + "99.9" : 0.18278863983988008, + "99.99" : 0.18278863983988008, + "99.999" : 0.18278863983988008, + "99.9999" : 0.18278863983988008, + "100.0" : 0.18278863983988008 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18278863983988008, + 0.1823920969377519, + 0.18242989977561705 + ], + [ + 0.18203926489969782, + 0.17895630437894813, + 0.17882158725390268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33161202983987215, + "scoreError" : 0.0038698449713568182, + "scoreConfidence" : [ + 0.3277421848685153, + 0.335481874811229 + ], + "scorePercentiles" : { + "0.0" : 0.3302999030254987, + "50.0" : 0.3315259270111735, + "90.0" : 0.3331047863495553, + "95.0" : 0.3331047863495553, + "99.0" : 0.3331047863495553, + "99.9" : 0.3331047863495553, + "99.99" : 0.3331047863495553, + "99.999" : 0.3331047863495553, + "99.9999" : 0.3331047863495553, + "100.0" : 0.3331047863495553 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3302999030254987, + 0.3303105337076796, + 0.3304791277594184 + ], + [ + 0.3331047863495553, + 0.3325727262629286, + 0.3329051019341523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14245758436713765, + "scoreError" : 0.00563701590517682, + "scoreConfidence" : [ + 0.13682056846196083, + 0.14809460027231447 + ], + "scorePercentiles" : { + "0.0" : 0.14041816567440815, + "50.0" : 0.14251290525350271, + "90.0" : 0.14436567547278764, + "95.0" : 0.14436567547278764, + "99.0" : 0.14436567547278764, + "99.9" : 0.14436567547278764, + "99.99" : 0.14436567547278764, + "99.999" : 0.14436567547278764, + "99.9999" : 0.14436567547278764, + "100.0" : 0.14436567547278764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14041816567440815, + 0.140652842501301, + 0.14080859239650803 + ], + [ + 0.14436567547278764, + 0.1442830120473236, + 0.1442172181104974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4143546864033436, + "scoreError" : 0.03462237626150933, + "scoreConfidence" : [ + 0.3797323101418343, + 0.44897706266485293 + ], + "scorePercentiles" : { + "0.0" : 0.4030289238302503, + "50.0" : 0.4128423201026994, + "90.0" : 0.4314309465895854, + "95.0" : 0.4314309465895854, + "99.0" : 0.4314309465895854, + "99.9" : 0.4314309465895854, + "99.99" : 0.4314309465895854, + "99.999" : 0.4314309465895854, + "99.9999" : 0.4314309465895854, + "100.0" : 0.4314309465895854 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4030289238302503, + 0.40363529201646753, + 0.40392738690524277 + ], + [ + 0.4314309465895854, + 0.4223483157783597, + 0.42175725330015607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15547550080585767, + "scoreError" : 0.0040648289914254135, + "scoreConfidence" : [ + 0.15141067181443227, + 0.15954032979728308 + ], + "scorePercentiles" : { + "0.0" : 0.1533972472082464, + "50.0" : 0.15618186896438918, + "90.0" : 0.15680970081382403, + "95.0" : 0.15680970081382403, + "99.0" : 0.15680970081382403, + "99.9" : 0.15680970081382403, + "99.99" : 0.15680970081382403, + "99.999" : 0.15680970081382403, + "99.9999" : 0.15680970081382403, + "100.0" : 0.15680970081382403 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15680970081382403, + 0.15639404070813068, + 0.15633344265011648 + ], + [ + 0.1560302952786619, + 0.1533972472082464, + 0.15388827817616643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047523319880979166, + "scoreError" : 0.005152506381493881, + "scoreConfidence" : [ + 0.04237081349948529, + 0.052675826262473045 + ], + "scorePercentiles" : { + "0.0" : 0.045832362385993856, + "50.0" : 0.04750050541317424, + "90.0" : 0.04924132040278701, + "95.0" : 0.04924132040278701, + "99.0" : 0.04924132040278701, + "99.9" : 0.04924132040278701, + "99.99" : 0.04924132040278701, + "99.999" : 0.04924132040278701, + "99.9999" : 0.04924132040278701, + "100.0" : 0.04924132040278701 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04584105408254946, + 0.04586557592004843, + 0.045832362385993856 + ], + [ + 0.049135434906300055, + 0.04924132040278701, + 0.049224171588196204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8841982.883323878, + "scoreError" : 201193.75607458787, + "scoreConfidence" : [ + 8640789.12724929, + 9043176.639398467 + ], + "scorePercentiles" : { + "0.0" : 8775809.737719297, + "50.0" : 8819903.516331566, + "90.0" : 8941838.508489722, + "95.0" : 8941838.508489722, + "99.0" : 8941838.508489722, + "99.9" : 8941838.508489722, + "99.99" : 8941838.508489722, + "99.999" : 8941838.508489722, + "99.9999" : 8941838.508489722, + "100.0" : 8941838.508489722 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8781483.432835821, + 8775809.737719297, + 8790613.151142355 + ], + [ + 8912958.588235294, + 8941838.508489722, + 8849193.881520778 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:28:11Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json b/performance-results/2025-07-10T01:28:11Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json new file mode 100644 index 0000000000..4b1bd189df --- /dev/null +++ b/performance-results/2025-07-10T01:28:11Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3386711035583634, + "scoreError" : 0.047335172573526624, + "scoreConfidence" : [ + 3.291335930984837, + 3.38600627613189 + ], + "scorePercentiles" : { + "0.0" : 3.3302764451585163, + "50.0" : 3.339187001546528, + "90.0" : 3.346033965981881, + "95.0" : 3.346033965981881, + "99.0" : 3.346033965981881, + "99.9" : 3.346033965981881, + "99.99" : 3.346033965981881, + "99.999" : 3.346033965981881, + "99.9999" : 3.346033965981881, + "100.0" : 3.346033965981881 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3302764451585163, + 3.34341547809828 + ], + [ + 3.334958524994777, + 3.346033965981881 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6880200346087548, + "scoreError" : 0.02934086640834834, + "scoreConfidence" : [ + 1.6586791682004065, + 1.7173609010171031 + ], + "scorePercentiles" : { + "0.0" : 1.6825774172996646, + "50.0" : 1.6880061953836756, + "90.0" : 1.6934903303680033, + "95.0" : 1.6934903303680033, + "99.0" : 1.6934903303680033, + "99.9" : 1.6934903303680033, + "99.99" : 1.6934903303680033, + "99.999" : 1.6934903303680033, + "99.9999" : 1.6934903303680033, + "100.0" : 1.6934903303680033 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6825774172996646, + 1.6869331906092062 + ], + [ + 1.6890792001581452, + 1.6934903303680033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8477616128920233, + "scoreError" : 0.03181944314820865, + "scoreConfidence" : [ + 0.8159421697438147, + 0.879581056040232 + ], + "scorePercentiles" : { + "0.0" : 0.8429903065929959, + "50.0" : 0.8467150912270157, + "90.0" : 0.8546259625210659, + "95.0" : 0.8546259625210659, + "99.0" : 0.8546259625210659, + "99.9" : 0.8546259625210659, + "99.99" : 0.8546259625210659, + "99.999" : 0.8546259625210659, + "99.9999" : 0.8546259625210659, + "100.0" : 0.8546259625210659 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8472917331416456, + 0.8546259625210659 + ], + [ + 0.8429903065929959, + 0.8461384493123858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.34542776986988, + "scoreError" : 0.3809278845808266, + "scoreConfidence" : [ + 15.964499885289053, + 16.726355654450707 + ], + "scorePercentiles" : { + "0.0" : 16.218984517815493, + "50.0" : 16.33571789275313, + "90.0" : 16.485411400695025, + "95.0" : 16.485411400695025, + "99.0" : 16.485411400695025, + "99.9" : 16.485411400695025, + "99.99" : 16.485411400695025, + "99.999" : 16.485411400695025, + "99.9999" : 16.485411400695025, + "100.0" : 16.485411400695025 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.221132507036504, + 16.22594683304194, + 16.218984517815493 + ], + [ + 16.485411400695025, + 16.475602408165997, + 16.44548895246432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2659.3394598612563, + "scoreError" : 119.998444375737, + "scoreConfidence" : [ + 2539.341015485519, + 2779.3379042369934 + ], + "scorePercentiles" : { + "0.0" : 2617.9552038750894, + "50.0" : 2658.096153759663, + "90.0" : 2706.0509268899073, + "95.0" : 2706.0509268899073, + "99.0" : 2706.0509268899073, + "99.9" : 2706.0509268899073, + "99.99" : 2706.0509268899073, + "99.999" : 2706.0509268899073, + "99.9999" : 2706.0509268899073, + "100.0" : 2706.0509268899073 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2692.4137442399046, + 2695.990774844529, + 2706.0509268899073 + ], + [ + 2619.8475460386835, + 2623.778563279422, + 2617.9552038750894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75087.19970446477, + "scoreError" : 4797.158260667454, + "scoreConfidence" : [ + 70290.04144379732, + 79884.35796513222 + ], + "scorePercentiles" : { + "0.0" : 73489.34419758937, + "50.0" : 75074.53538069059, + "90.0" : 76703.66991430972, + "95.0" : 76703.66991430972, + "99.0" : 76703.66991430972, + "99.9" : 76703.66991430972, + "99.99" : 76703.66991430972, + "99.999" : 76703.66991430972, + "99.9999" : 76703.66991430972, + "100.0" : 76703.66991430972 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76703.66991430972, + 76604.12674456972, + 76637.63962183472 + ], + [ + 73489.34419758937, + 73544.94401681147, + 73543.4737316737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.5812539036665, + "scoreError" : 3.646295318685582, + "scoreConfidence" : [ + 353.9349585849809, + 361.2275492223521 + ], + "scorePercentiles" : { + "0.0" : 355.96787126545604, + "50.0" : 357.73720973394086, + "90.0" : 358.99393135118805, + "95.0" : 358.99393135118805, + "99.0" : 358.99393135118805, + "99.9" : 358.99393135118805, + "99.99" : 358.99393135118805, + "99.999" : 358.99393135118805, + "99.9999" : 358.99393135118805, + "100.0" : 358.99393135118805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 358.99393135118805, + 358.570202816146, + 358.6239923703594 + ], + [ + 356.4273089671137, + 355.96787126545604, + 356.9042166517358 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.98566579693492, + "scoreError" : 2.149268750674122, + "scoreConfidence" : [ + 112.8363970462608, + 117.13493454760905 + ], + "scorePercentiles" : { + "0.0" : 113.60100727569281, + "50.0" : 115.10344375336534, + "90.0" : 115.67250089874734, + "95.0" : 115.67250089874734, + "99.0" : 115.67250089874734, + "99.9" : 115.67250089874734, + "99.99" : 115.67250089874734, + "99.999" : 115.67250089874734, + "99.9999" : 115.67250089874734, + "100.0" : 115.67250089874734 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.67250089874734, + 115.3082896786432, + 115.6228126383617 + ], + [ + 113.60100727569281, + 114.8107864620769, + 114.89859782808747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06205823492492347, + "scoreError" : 0.002462803424417031, + "scoreConfidence" : [ + 0.05959543150050644, + 0.0645210383493405 + ], + "scorePercentiles" : { + "0.0" : 0.061113345895998976, + "50.0" : 0.062083060660186505, + "90.0" : 0.06291792813011199, + "95.0" : 0.06291792813011199, + "99.0" : 0.06291792813011199, + "99.9" : 0.06291792813011199, + "99.99" : 0.06291792813011199, + "99.999" : 0.06291792813011199, + "99.9999" : 0.06291792813011199, + "100.0" : 0.06291792813011199 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06128660753815039, + 0.061113345895998976, + 0.06138426071290459 + ], + [ + 0.06278186060746842, + 0.06291792813011199, + 0.06286540666490646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.743359031687043E-4, + "scoreError" : 2.7932749301509125E-5, + "scoreConfidence" : [ + 3.464031538671952E-4, + 4.0226865247021344E-4 + ], + "scorePercentiles" : { + "0.0" : 3.648290643195147E-4, + "50.0" : 3.7433905038306367E-4, + "90.0" : 3.8389494331663793E-4, + "95.0" : 3.8389494331663793E-4, + "99.0" : 3.8389494331663793E-4, + "99.9" : 3.8389494331663793E-4, + "99.99" : 3.8389494331663793E-4, + "99.999" : 3.8389494331663793E-4, + "99.9999" : 3.8389494331663793E-4, + "100.0" : 3.8389494331663793E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8389494331663793E-4, + 3.8321592089950304E-4, + 3.831597455898701E-4 + ], + [ + 3.655183551762572E-4, + 3.6539738971044306E-4, + 3.648290643195147E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12784193772271693, + "scoreError" : 0.005973645277113812, + "scoreConfidence" : [ + 0.12186829244560311, + 0.13381558299983073 + ], + "scorePercentiles" : { + "0.0" : 0.125846247042686, + "50.0" : 0.12772844797683292, + "90.0" : 0.13019946719700026, + "95.0" : 0.13019946719700026, + "99.0" : 0.13019946719700026, + "99.9" : 0.13019946719700026, + "99.99" : 0.13019946719700026, + "99.999" : 0.13019946719700026, + "99.9999" : 0.13019946719700026, + "100.0" : 0.13019946719700026 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13019946719700026, + 0.12948817115332323, + 0.12963477625677322 + ], + [ + 0.125846247042686, + 0.12596872480034263, + 0.1259142398861762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013209420583128352, + "scoreError" : 3.2622524769913836E-4, + "scoreConfidence" : [ + 0.012883195335429214, + 0.01353564583082749 + ], + "scorePercentiles" : { + "0.0" : 0.013095547648730405, + "50.0" : 0.013209395008418796, + "90.0" : 0.013322633812630477, + "95.0" : 0.013322633812630477, + "99.0" : 0.013322633812630477, + "99.9" : 0.013322633812630477, + "99.99" : 0.013322633812630477, + "99.999" : 0.013322633812630477, + "99.9999" : 0.013322633812630477, + "100.0" : 0.013322633812630477 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013095547648730405, + 0.013098903132298447, + 0.01311639201615918 + ], + [ + 0.013320648888273187, + 0.013322633812630477, + 0.013302398000678412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0333141812876503, + "scoreError" : 0.0880836785083081, + "scoreConfidence" : [ + 0.9452305027793422, + 1.1213978597959584 + ], + "scorePercentiles" : { + "0.0" : 1.0003615240572172, + "50.0" : 1.036171193633142, + "90.0" : 1.0623858547753107, + "95.0" : 1.0623858547753107, + "99.0" : 1.0623858547753107, + "99.9" : 1.0623858547753107, + "99.99" : 1.0623858547753107, + "99.999" : 1.0623858547753107, + "99.9999" : 1.0623858547753107, + "100.0" : 1.0623858547753107 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0623858547753107, + 1.0617533774946921, + 1.0612794283137006 + ], + [ + 1.0003615240572172, + 1.0110629589525832, + 1.0030419441323972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010793445745626039, + "scoreError" : 6.925182447429463E-4, + "scoreConfidence" : [ + 0.010100927500883093, + 0.011485963990368985 + ], + "scorePercentiles" : { + "0.0" : 0.010562353175282166, + "50.0" : 0.010793412100052541, + "90.0" : 0.011023545018827659, + "95.0" : 0.011023545018827659, + "99.0" : 0.011023545018827659, + "99.9" : 0.011023545018827659, + "99.99" : 0.011023545018827659, + "99.999" : 0.011023545018827659, + "99.9999" : 0.011023545018827659, + "100.0" : 0.011023545018827659 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011017424191010889, + 0.011015599827280058, + 0.011023545018827659 + ], + [ + 0.01057052788853044, + 0.010571224372825025, + 0.010562353175282166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.122557366993984, + "scoreError" : 0.08011890952441872, + "scoreConfidence" : [ + 3.0424384574695655, + 3.2026762765184027 + ], + "scorePercentiles" : { + "0.0" : 3.092819901669759, + "50.0" : 3.123848700005852, + "90.0" : 3.1502229414357683, + "95.0" : 3.1502229414357683, + "99.0" : 3.1502229414357683, + "99.9" : 3.1502229414357683, + "99.99" : 3.1502229414357683, + "99.999" : 3.1502229414357683, + "99.9999" : 3.1502229414357683, + "100.0" : 3.1502229414357683 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0948857982673266, + 3.102341726426799, + 3.092819901669759 + ], + [ + 3.1502229414357683, + 3.149718160579345, + 3.1453556735849055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7699728148832015, + "scoreError" : 0.14940413522694126, + "scoreConfidence" : [ + 2.62056867965626, + 2.9193769501101428 + ], + "scorePercentiles" : { + "0.0" : 2.7210124458650706, + "50.0" : 2.767843020407134, + "90.0" : 2.821346806488011, + "95.0" : 2.821346806488011, + "99.0" : 2.821346806488011, + "99.9" : 2.821346806488011, + "99.99" : 2.821346806488011, + "99.999" : 2.821346806488011, + "99.9999" : 2.821346806488011, + "100.0" : 2.821346806488011 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.820621964467005, + 2.821346806488011, + 2.813672436568214 + ], + [ + 2.7210124458650706, + 2.721169631664853, + 2.722013604246053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.182361906716641, + "scoreError" : 0.006260704333333856, + "scoreConfidence" : [ + 0.17610120238330712, + 0.18862261104997485 + ], + "scorePercentiles" : { + "0.0" : 0.17975124118344896, + "50.0" : 0.18280763988388, + "90.0" : 0.1844741830843018, + "95.0" : 0.1844741830843018, + "99.0" : 0.1844741830843018, + "99.9" : 0.1844741830843018, + "99.99" : 0.1844741830843018, + "99.999" : 0.1844741830843018, + "99.9999" : 0.1844741830843018, + "100.0" : 0.1844741830843018 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17999564194175457, + 0.18143727372679935, + 0.17975124118344896 + ], + [ + 0.18433509432258063, + 0.1844741830843018, + 0.18417800604096066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3272153851648061, + "scoreError" : 0.0034131243715917474, + "scoreConfidence" : [ + 0.32380226079321434, + 0.33062850953639783 + ], + "scorePercentiles" : { + "0.0" : 0.32583248362712197, + "50.0" : 0.3272278174478433, + "90.0" : 0.3285037850009855, + "95.0" : 0.3285037850009855, + "99.0" : 0.3285037850009855, + "99.9" : 0.3285037850009855, + "99.99" : 0.3285037850009855, + "99.999" : 0.3285037850009855, + "99.9999" : 0.3285037850009855, + "100.0" : 0.3285037850009855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32639225304350666, + 0.3261466079838236, + 0.32583248362712197 + ], + [ + 0.3283537994812188, + 0.3285037850009855, + 0.3280633818521799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1466265380405978, + "scoreError" : 0.0013295659768003507, + "scoreConfidence" : [ + 0.14529697206379746, + 0.14795610401739814 + ], + "scorePercentiles" : { + "0.0" : 0.1457049814523414, + "50.0" : 0.14675010369343117, + "90.0" : 0.14704247655457367, + "95.0" : 0.14704247655457367, + "99.0" : 0.14704247655457367, + "99.9" : 0.14704247655457367, + "99.99" : 0.14704247655457367, + "99.999" : 0.14704247655457367, + "99.9999" : 0.14704247655457367, + "100.0" : 0.14704247655457367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14663352956788223, + 0.1457049814523414, + 0.14668718379440843 + ], + [ + 0.14704247655457367, + 0.146878033281927, + 0.14681302359245393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40180722547472003, + "scoreError" : 0.006243360729656814, + "scoreConfidence" : [ + 0.3955638647450632, + 0.40805058620437684 + ], + "scorePercentiles" : { + "0.0" : 0.39985738656537384, + "50.0" : 0.4012504780753967, + "90.0" : 0.4057324315563129, + "95.0" : 0.4057324315563129, + "99.0" : 0.4057324315563129, + "99.9" : 0.4057324315563129, + "99.99" : 0.4057324315563129, + "99.999" : 0.4057324315563129, + "99.9999" : 0.4057324315563129, + "100.0" : 0.4057324315563129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4057324315563129, + 0.3998781027671145, + 0.39985738656537384 + ], + [ + 0.40287447580872576, + 0.4014691618692039, + 0.4010317942815896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16207254905005605, + "scoreError" : 0.008273960633344839, + "scoreConfidence" : [ + 0.1537985884167112, + 0.1703465096834009 + ], + "scorePercentiles" : { + "0.0" : 0.1597576347370439, + "50.0" : 0.16039306416151727, + "90.0" : 0.16627270743548817, + "95.0" : 0.16627270743548817, + "99.0" : 0.16627270743548817, + "99.9" : 0.16627270743548817, + "99.99" : 0.16627270743548817, + "99.999" : 0.16627270743548817, + "99.9999" : 0.16627270743548817, + "100.0" : 0.16627270743548817 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16048986081109273, + 0.1602962675119418, + 0.1601842199138221 + ], + [ + 0.16627270743548817, + 0.1597576347370439, + 0.16543460389094758 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0466384038173576, + "scoreError" : 8.698947453721076E-4, + "scoreConfidence" : [ + 0.04576850907198549, + 0.04750829856272971 + ], + "scorePercentiles" : { + "0.0" : 0.046393041298427765, + "50.0" : 0.04653162533323939, + "90.0" : 0.047191698817866494, + "95.0" : 0.047191698817866494, + "99.0" : 0.047191698817866494, + "99.9" : 0.047191698817866494, + "99.99" : 0.047191698817866494, + "99.999" : 0.047191698817866494, + "99.9999" : 0.047191698817866494, + "100.0" : 0.047191698817866494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04643167857308682, + 0.04640738657731825, + 0.046393041298427765 + ], + [ + 0.047191698817866494, + 0.046631572093391964, + 0.046775045544054296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8623520.088084025, + "scoreError" : 180031.65244300725, + "scoreConfidence" : [ + 8443488.435641019, + 8803551.740527032 + ], + "scorePercentiles" : { + "0.0" : 8554261.375213675, + "50.0" : 8619693.963995753, + "90.0" : 8694329.051259775, + "95.0" : 8694329.051259775, + "99.0" : 8694329.051259775, + "99.9" : 8694329.051259775, + "99.99" : 8694329.051259775, + "99.999" : 8694329.051259775, + "99.9999" : 8694329.051259775, + "100.0" : 8694329.051259775 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8694329.051259775, + 8685962.642361112, + 8662679.821645021 + ], + [ + 8576708.106346484, + 8567179.531678082, + 8554261.375213675 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:31:19Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json b/performance-results/2025-07-10T01:31:19Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json new file mode 100644 index 0000000000..8bc37ff42b --- /dev/null +++ b/performance-results/2025-07-10T01:31:19Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.350819914645622, + "scoreError" : 0.02333452740089837, + "scoreConfidence" : [ + 3.3274853872447236, + 3.37415444204652 + ], + "scorePercentiles" : { + "0.0" : 3.3467376436328893, + "50.0" : 3.3511692012658485, + "90.0" : 3.3542036124179013, + "95.0" : 3.3542036124179013, + "99.0" : 3.3542036124179013, + "99.9" : 3.3542036124179013, + "99.99" : 3.3542036124179013, + "99.999" : 3.3542036124179013, + "99.9999" : 3.3542036124179013, + "100.0" : 3.3542036124179013 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.348849657604126, + 3.353488744927571 + ], + [ + 3.3467376436328893, + 3.3542036124179013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.689308129574393, + "scoreError" : 0.047443854042694716, + "scoreConfidence" : [ + 1.6418642755316983, + 1.7367519836170877 + ], + "scorePercentiles" : { + "0.0" : 1.6828186069646558, + "50.0" : 1.688609535642259, + "90.0" : 1.6971948400483985, + "95.0" : 1.6971948400483985, + "99.0" : 1.6971948400483985, + "99.9" : 1.6971948400483985, + "99.99" : 1.6971948400483985, + "99.999" : 1.6971948400483985, + "99.9999" : 1.6971948400483985, + "100.0" : 1.6971948400483985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6939210435067305, + 1.6971948400483985 + ], + [ + 1.6828186069646558, + 1.6832980277777876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8485872258925267, + "scoreError" : 0.04086454089765866, + "scoreConfidence" : [ + 0.807722684994868, + 0.8894517667901853 + ], + "scorePercentiles" : { + "0.0" : 0.839106231535581, + "50.0" : 0.8516091497694063, + "90.0" : 0.852024372495713, + "95.0" : 0.852024372495713, + "99.0" : 0.852024372495713, + "99.9" : 0.852024372495713, + "99.99" : 0.852024372495713, + "99.999" : 0.852024372495713, + "99.9999" : 0.852024372495713, + "100.0" : 0.852024372495713 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.839106231535581, + 0.8516606788257489 + ], + [ + 0.8515576207130636, + 0.852024372495713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.40461695193473, + "scoreError" : 0.2161016591656955, + "scoreConfidence" : [ + 16.188515292769036, + 16.620718611100425 + ], + "scorePercentiles" : { + "0.0" : 16.3297274878599, + "50.0" : 16.40653404546939, + "90.0" : 16.47793679209158, + "95.0" : 16.47793679209158, + "99.0" : 16.47793679209158, + "99.9" : 16.47793679209158, + "99.99" : 16.47793679209158, + "99.999" : 16.47793679209158, + "99.9999" : 16.47793679209158, + "100.0" : 16.47793679209158 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.3297274878599, + 16.333590373927436, + 16.33971459325851 + ], + [ + 16.473353497680268, + 16.47793679209158, + 16.473378966790694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2691.2529136656676, + "scoreError" : 127.79663441169158, + "scoreConfidence" : [ + 2563.456279253976, + 2819.0495480773593 + ], + "scorePercentiles" : { + "0.0" : 2647.1976602028967, + "50.0" : 2691.8918649164098, + "90.0" : 2732.9144928019823, + "95.0" : 2732.9144928019823, + "99.0" : 2732.9144928019823, + "99.9" : 2732.9144928019823, + "99.99" : 2732.9144928019823, + "99.999" : 2732.9144928019823, + "99.9999" : 2732.9144928019823, + "100.0" : 2732.9144928019823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2732.9144928019823, + 2732.839303423572, + 2732.7578452780895 + ], + [ + 2651.02588455473, + 2647.1976602028967, + 2650.7822957327357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76176.971313861, + "scoreError" : 2227.4548357244817, + "scoreConfidence" : [ + 73949.51647813652, + 78404.42614958547 + ], + "scorePercentiles" : { + "0.0" : 75433.2501407948, + "50.0" : 76166.36462532615, + "90.0" : 76923.92912758036, + "95.0" : 76923.92912758036, + "99.0" : 76923.92912758036, + "99.9" : 76923.92912758036, + "99.99" : 76923.92912758036, + "99.999" : 76923.92912758036, + "99.9999" : 76923.92912758036, + "100.0" : 76923.92912758036 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75462.11227880357, + 75460.9014175589, + 75433.2501407948 + ], + [ + 76911.01794657961, + 76870.61697184872, + 76923.92912758036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.22255299217386, + "scoreError" : 19.069456850411857, + "scoreConfidence" : [ + 343.153096141762, + 381.29200984258574 + ], + "scorePercentiles" : { + "0.0" : 354.1557393864702, + "50.0" : 363.0498586240968, + "90.0" : 368.6176535071154, + "95.0" : 368.6176535071154, + "99.0" : 368.6176535071154, + "99.9" : 368.6176535071154, + "99.99" : 368.6176535071154, + "99.999" : 368.6176535071154, + "99.9999" : 368.6176535071154, + "100.0" : 368.6176535071154 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 367.85846734438877, + 368.461621295449, + 368.6176535071154 + ], + [ + 354.1557393864702, + 356.0005865158149, + 358.2412499038049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.65045311741228, + "scoreError" : 5.192763991695376, + "scoreConfidence" : [ + 111.45768912571691, + 121.84321710910766 + ], + "scorePercentiles" : { + "0.0" : 114.9042774634322, + "50.0" : 116.63514901899373, + "90.0" : 118.44694596648905, + "95.0" : 118.44694596648905, + "99.0" : 118.44694596648905, + "99.9" : 118.44694596648905, + "99.99" : 118.44694596648905, + "99.999" : 118.44694596648905, + "99.9999" : 118.44694596648905, + "100.0" : 118.44694596648905 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.02988948941001, + 114.9042774634322, + 114.95022442624429 + ], + [ + 118.33097281032083, + 118.24040854857743, + 118.44694596648905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061894241695642345, + "scoreError" : 0.002614448102822521, + "scoreConfidence" : [ + 0.059279793592819825, + 0.06450868979846487 + ], + "scorePercentiles" : { + "0.0" : 0.060928018619273626, + "50.0" : 0.06189595270510471, + "90.0" : 0.06287789266289824, + "95.0" : 0.06287789266289824, + "99.0" : 0.06287789266289824, + "99.9" : 0.06287789266289824, + "99.99" : 0.06287789266289824, + "99.999" : 0.06287789266289824, + "99.9999" : 0.06287789266289824, + "100.0" : 0.06287789266289824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061049256231494764, + 0.060928018619273626, + 0.06117072757523856 + ], + [ + 0.06287789266289824, + 0.06271837724997804, + 0.06262117783497086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.777970476362235E-4, + "scoreError" : 2.7864521438112513E-5, + "scoreConfidence" : [ + 3.4993252619811097E-4, + 4.05661569074336E-4 + ], + "scorePercentiles" : { + "0.0" : 3.68515105776253E-4, + "50.0" : 3.77867803407144E-4, + "90.0" : 3.8687994063328466E-4, + "95.0" : 3.8687994063328466E-4, + "99.0" : 3.8687994063328466E-4, + "99.9" : 3.8687994063328466E-4, + "99.99" : 3.8687994063328466E-4, + "99.999" : 3.8687994063328466E-4, + "99.9999" : 3.8687994063328466E-4, + "100.0" : 3.8687994063328466E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.868609797143012E-4, + 3.868611961185294E-4, + 3.8687994063328466E-4 + ], + [ + 3.68515105776253E-4, + 3.6887462709998673E-4, + 3.6879043647498574E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12477273281815464, + "scoreError" : 0.0013113660080159109, + "scoreConfidence" : [ + 0.12346136681013872, + 0.12608409882617055 + ], + "scorePercentiles" : { + "0.0" : 0.12417440569704345, + "50.0" : 0.12483444633477972, + "90.0" : 0.1252465153925154, + "95.0" : 0.1252465153925154, + "99.0" : 0.1252465153925154, + "99.9" : 0.1252465153925154, + "99.99" : 0.1252465153925154, + "99.999" : 0.1252465153925154, + "99.9999" : 0.1252465153925154, + "100.0" : 0.1252465153925154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12517691182766089, + 0.1252465153925154, + 0.12513240699725967 + ], + [ + 0.12453648567229977, + 0.12436967132214857, + 0.12417440569704345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013306685107809737, + "scoreError" : 5.665022797275359E-4, + "scoreConfidence" : [ + 0.012740182828082201, + 0.013873187387537273 + ], + "scorePercentiles" : { + "0.0" : 0.013117763114330465, + "50.0" : 0.013307326384480053, + "90.0" : 0.013493517064383589, + "95.0" : 0.013493517064383589, + "99.0" : 0.013493517064383589, + "99.9" : 0.013493517064383589, + "99.99" : 0.013493517064383589, + "99.999" : 0.013493517064383589, + "99.9999" : 0.013493517064383589, + "100.0" : 0.013493517064383589 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013490528424190915, + 0.013489207860318557, + 0.013493517064383589 + ], + [ + 0.01312364927499334, + 0.013125444908641547, + 0.013117763114330465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.030876720215693, + "scoreError" : 0.021711880521495325, + "scoreConfidence" : [ + 1.0091648396941977, + 1.0525886007371883 + ], + "scorePercentiles" : { + "0.0" : 1.022915315741025, + "50.0" : 1.0309249203114617, + "90.0" : 1.038546202928653, + "95.0" : 1.038546202928653, + "99.0" : 1.038546202928653, + "99.9" : 1.038546202928653, + "99.99" : 1.038546202928653, + "99.999" : 1.038546202928653, + "99.9999" : 1.038546202928653, + "100.0" : 1.038546202928653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.024495459127228, + 1.0240882725038403, + 1.022915315741025 + ], + [ + 1.038546202928653, + 1.037860689497717, + 1.0373543814956954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010776716633841521, + "scoreError" : 2.637657165126356E-4, + "scoreConfidence" : [ + 0.010512950917328887, + 0.011040482350354156 + ], + "scorePercentiles" : { + "0.0" : 0.010689400152641075, + "50.0" : 0.010776800099100774, + "90.0" : 0.010864438780343657, + "95.0" : 0.010864438780343657, + "99.0" : 0.010864438780343657, + "99.9" : 0.010864438780343657, + "99.99" : 0.010864438780343657, + "99.999" : 0.010864438780343657, + "99.9999" : 0.010864438780343657, + "100.0" : 0.010864438780343657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010690820255205237, + 0.010689400152641075, + 0.010692360659488703 + ], + [ + 0.010861239538712845, + 0.010864438780343657, + 0.010862040416657615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.067124041181389, + "scoreError" : 0.07368588225741621, + "scoreConfidence" : [ + 2.993438158923973, + 3.1408099234388054 + ], + "scorePercentiles" : { + "0.0" : 3.0285718267716537, + "50.0" : 3.0758596359560353, + "90.0" : 3.091910981458591, + "95.0" : 3.091910981458591, + "99.0" : 3.091910981458591, + "99.9" : 3.091910981458591, + "99.99" : 3.091910981458591, + "99.999" : 3.091910981458591, + "99.9999" : 3.091910981458591, + "100.0" : 3.091910981458591 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.091910981458591, + 3.0879196858024693, + 3.0849798488587292 + ], + [ + 3.0285718267716537, + 3.0667394230533414, + 3.0426224811435523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8070905351331277, + "scoreError" : 0.11741319941302322, + "scoreConfidence" : [ + 2.6896773357201043, + 2.924503734546151 + ], + "scorePercentiles" : { + "0.0" : 2.7666692979253114, + "50.0" : 2.805843725031397, + "90.0" : 2.8491565190883192, + "95.0" : 2.8491565190883192, + "99.0" : 2.8491565190883192, + "99.9" : 2.8491565190883192, + "99.99" : 2.8491565190883192, + "99.999" : 2.8491565190883192, + "99.9999" : 2.8491565190883192, + "100.0" : 2.8491565190883192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8491565190883192, + 2.8460913645418326, + 2.8403589349616585 + ], + [ + 2.7666692979253114, + 2.771328515101136, + 2.7689385791805092 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17310895297613224, + "scoreError" : 0.007363597113679554, + "scoreConfidence" : [ + 0.16574535586245268, + 0.1804725500898118 + ], + "scorePercentiles" : { + "0.0" : 0.17005229540700936, + "50.0" : 0.17369525572785827, + "90.0" : 0.17556015241740108, + "95.0" : 0.17556015241740108, + "99.0" : 0.17556015241740108, + "99.9" : 0.17556015241740108, + "99.99" : 0.17556015241740108, + "99.999" : 0.17556015241740108, + "99.9999" : 0.17556015241740108, + "100.0" : 0.17556015241740108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17219792952095603, + 0.17019919409081627, + 0.17005229540700936 + ], + [ + 0.17556015241740108, + 0.17519258193476053, + 0.17545156448585014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32881208395442413, + "scoreError" : 0.015697675201900792, + "scoreConfidence" : [ + 0.31311440875252333, + 0.3445097591563249 + ], + "scorePercentiles" : { + "0.0" : 0.3235423501245592, + "50.0" : 0.32885457860065725, + "90.0" : 0.33409412598135835, + "95.0" : 0.33409412598135835, + "99.0" : 0.33409412598135835, + "99.9" : 0.33409412598135835, + "99.99" : 0.33409412598135835, + "99.999" : 0.33409412598135835, + "99.9999" : 0.33409412598135835, + "100.0" : 0.33409412598135835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3239609487511743, + 0.3235423501245592, + 0.3236102250339784 + ], + [ + 0.33391664538533455, + 0.3337482084501402, + 0.33409412598135835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.144110729217939, + "scoreError" : 0.004438371044765838, + "scoreConfidence" : [ + 0.13967235817317317, + 0.14854910026270482 + ], + "scorePercentiles" : { + "0.0" : 0.1425443439811845, + "50.0" : 0.14409787077368802, + "90.0" : 0.14561675334546778, + "95.0" : 0.14561675334546778, + "99.0" : 0.14561675334546778, + "99.9" : 0.14561675334546778, + "99.99" : 0.14561675334546778, + "99.999" : 0.14561675334546778, + "99.9999" : 0.14561675334546778, + "100.0" : 0.14561675334546778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14275026592343049, + 0.1425443439811845, + 0.14271016949225104 + ], + [ + 0.14561675334546778, + 0.1455973669413546, + 0.14544547562394555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4054655095119229, + "scoreError" : 0.012388019419332931, + "scoreConfidence" : [ + 0.39307749009258997, + 0.4178535289312558 + ], + "scorePercentiles" : { + "0.0" : 0.4013408142232211, + "50.0" : 0.4054086563721775, + "90.0" : 0.4098287064054752, + "95.0" : 0.4098287064054752, + "99.0" : 0.4098287064054752, + "99.9" : 0.4098287064054752, + "99.99" : 0.4098287064054752, + "99.999" : 0.4098287064054752, + "99.9999" : 0.4098287064054752, + "100.0" : 0.4098287064054752 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4098287064054752, + 0.4093563019771583, + 0.40929835562558836 + ], + [ + 0.40151895711876656, + 0.40144992172132793, + 0.4013408142232211 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.158931407183529, + "scoreError" : 0.007700048312805177, + "scoreConfidence" : [ + 0.1512313588707238, + 0.16663145549633418 + ], + "scorePercentiles" : { + "0.0" : 0.1563435273361162, + "50.0" : 0.15832637049988685, + "90.0" : 0.1620935687262943, + "95.0" : 0.1620935687262943, + "99.0" : 0.1620935687262943, + "99.9" : 0.1620935687262943, + "99.99" : 0.1620935687262943, + "99.999" : 0.1620935687262943, + "99.9999" : 0.1620935687262943, + "100.0" : 0.1620935687262943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1568328969481212, + 0.1563435273361162, + 0.15645568720371733 + ], + [ + 0.1620429188352724, + 0.1620935687262943, + 0.1598198440516525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04645898786157401, + "scoreError" : 0.0012709537808444872, + "scoreConfidence" : [ + 0.04518803408072952, + 0.04772994164241849 + ], + "scorePercentiles" : { + "0.0" : 0.045811569795088165, + "50.0" : 0.04655808571537229, + "90.0" : 0.047015186078109644, + "95.0" : 0.047015186078109644, + "99.0" : 0.047015186078109644, + "99.9" : 0.047015186078109644, + "99.99" : 0.047015186078109644, + "99.999" : 0.047015186078109644, + "99.9999" : 0.047015186078109644, + "100.0" : 0.047015186078109644 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04673454051351073, + 0.047015186078109644, + 0.046389707823053516 + ], + [ + 0.04672646360769105, + 0.04607645935199093, + 0.045811569795088165 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8738210.149962107, + "scoreError" : 179757.9484483726, + "scoreConfidence" : [ + 8558452.201513734, + 8917968.09841048 + ], + "scorePercentiles" : { + "0.0" : 8673455.924544666, + "50.0" : 8735008.831389125, + "90.0" : 8819877.789241623, + "95.0" : 8819877.789241623, + "99.0" : 8819877.789241623, + "99.9" : 8819877.789241623, + "99.99" : 8819877.789241623, + "99.999" : 8819877.789241623, + "99.9999" : 8819877.789241623, + "100.0" : 8819877.789241623 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8689234.174630756, + 8680910.774305556, + 8673455.924544666 + ], + [ + 8819877.789241623, + 8784998.748902546, + 8780783.488147497 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:37:12Z-cc111070ee2f6b3cb7494ce6a5c086454386f656-jdk17.json b/performance-results/2025-07-10T01:37:12Z-cc111070ee2f6b3cb7494ce6a5c086454386f656-jdk17.json new file mode 100644 index 0000000000..b24de1c3f8 --- /dev/null +++ b/performance-results/2025-07-10T01:37:12Z-cc111070ee2f6b3cb7494ce6a5c086454386f656-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3308319072363797, + "scoreError" : 0.0157149575188142, + "scoreConfidence" : [ + 3.3151169497175657, + 3.3465468647551937 + ], + "scorePercentiles" : { + "0.0" : 3.3292496261295756, + "50.0" : 3.329816875335484, + "90.0" : 3.334444252144974, + "95.0" : 3.334444252144974, + "99.0" : 3.334444252144974, + "99.9" : 3.334444252144974, + "99.99" : 3.334444252144974, + "99.999" : 3.334444252144974, + "99.9999" : 3.334444252144974, + "100.0" : 3.334444252144974 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.330071126444625, + 3.334444252144974 + ], + [ + 3.3292496261295756, + 3.3295626242263427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.674695400547804, + "scoreError" : 0.04751559309026891, + "scoreConfidence" : [ + 1.6271798074575352, + 1.722210993638073 + ], + "scorePercentiles" : { + "0.0" : 1.6676677630469123, + "50.0" : 1.6744752117100288, + "90.0" : 1.6821634157242462, + "95.0" : 1.6821634157242462, + "99.0" : 1.6821634157242462, + "99.9" : 1.6821634157242462, + "99.99" : 1.6821634157242462, + "99.999" : 1.6821634157242462, + "99.9999" : 1.6821634157242462, + "100.0" : 1.6821634157242462 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6798113113881936, + 1.6821634157242462 + ], + [ + 1.6676677630469123, + 1.669139112031864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8411903488071606, + "scoreError" : 0.036464610804582506, + "scoreConfidence" : [ + 0.8047257380025781, + 0.8776549596117431 + ], + "scorePercentiles" : { + "0.0" : 0.8345142027654179, + "50.0" : 0.8421119833674082, + "90.0" : 0.8460232257284079, + "95.0" : 0.8460232257284079, + "99.0" : 0.8460232257284079, + "99.9" : 0.8460232257284079, + "99.99" : 0.8460232257284079, + "99.999" : 0.8460232257284079, + "99.9999" : 0.8460232257284079, + "100.0" : 0.8460232257284079 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8385132452568219, + 0.8457107214779946 + ], + [ + 0.8345142027654179, + 0.8460232257284079 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.043239319662742, + "scoreError" : 0.49704189522200887, + "scoreConfidence" : [ + 15.546197424440733, + 16.54028121488475 + ], + "scorePercentiles" : { + "0.0" : 15.885454860426231, + "50.0" : 15.99909534057647, + "90.0" : 16.31540553831293, + "95.0" : 16.31540553831293, + "99.0" : 16.31540553831293, + "99.9" : 16.31540553831293, + "99.99" : 16.31540553831293, + "99.999" : 16.31540553831293, + "99.9999" : 16.31540553831293, + "100.0" : 16.31540553831293 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.905649605311089, + 15.885454860426231, + 15.895256762833387 + ], + [ + 16.31540553831293, + 16.165128075250973, + 16.09254107584185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2561.3547643355937, + "scoreError" : 57.94079389860759, + "scoreConfidence" : [ + 2503.413970436986, + 2619.2955582342015 + ], + "scorePercentiles" : { + "0.0" : 2527.8596270082235, + "50.0" : 2563.4745944662063, + "90.0" : 2585.3446476311337, + "95.0" : 2585.3446476311337, + "99.0" : 2585.3446476311337, + "99.9" : 2585.3446476311337, + "99.99" : 2585.3446476311337, + "99.999" : 2585.3446476311337, + "99.9999" : 2585.3446476311337, + "100.0" : 2585.3446476311337 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2560.58312746906, + 2578.0877634907515, + 2566.366061463353 + ], + [ + 2585.3446476311337, + 2549.8873589510426, + 2527.8596270082235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75700.0420558788, + "scoreError" : 3597.5186002174855, + "scoreConfidence" : [ + 72102.52345566131, + 79297.56065609629 + ], + "scorePercentiles" : { + "0.0" : 74359.10315485684, + "50.0" : 75671.20854140012, + "90.0" : 76983.88807110753, + "95.0" : 76983.88807110753, + "99.0" : 76983.88807110753, + "99.9" : 76983.88807110753, + "99.99" : 76983.88807110753, + "99.999" : 76983.88807110753, + "99.9999" : 76983.88807110753, + "100.0" : 76983.88807110753 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74593.24525151214, + 74359.10315485684, + 74655.3229260646 + ], + [ + 76687.09415673562, + 76921.59877499603, + 76983.88807110753 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.09464699412456, + "scoreError" : 7.483846050821221, + "scoreConfidence" : [ + 341.61080094330333, + 356.5784930449458 + ], + "scorePercentiles" : { + "0.0" : 345.3748546037982, + "50.0" : 349.7822833447527, + "90.0" : 352.5884652093961, + "95.0" : 352.5884652093961, + "99.0" : 352.5884652093961, + "99.9" : 352.5884652093961, + "99.99" : 352.5884652093961, + "99.999" : 352.5884652093961, + "99.9999" : 352.5884652093961, + "100.0" : 352.5884652093961 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.3748546037982, + 350.0261998459773, + 352.5884652093961 + ], + [ + 350.5004060106329, + 349.5383668435281, + 346.53958945141494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.92073282823394, + "scoreError" : 9.361952187042274, + "scoreConfidence" : [ + 104.55878064119166, + 123.28268501527621 + ], + "scorePercentiles" : { + "0.0" : 110.21043964634602, + "50.0" : 113.85116353797076, + "90.0" : 117.66975407227746, + "95.0" : 117.66975407227746, + "99.0" : 117.66975407227746, + "99.9" : 117.66975407227746, + "99.99" : 117.66975407227746, + "99.999" : 117.66975407227746, + "99.9999" : 117.66975407227746, + "100.0" : 117.66975407227746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.21043964634602, + 111.86787375045598, + 110.80652986089763 + ], + [ + 117.66975407227746, + 115.83445332548553, + 117.13534631394106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06274318949190916, + "scoreError" : 8.199798131444502E-4, + "scoreConfidence" : [ + 0.061923209678764704, + 0.06356316930505361 + ], + "scorePercentiles" : { + "0.0" : 0.06220937561430793, + "50.0" : 0.06284629158119515, + "90.0" : 0.06298133465171936, + "95.0" : 0.06298133465171936, + "99.0" : 0.06298133465171936, + "99.9" : 0.06298133465171936, + "99.99" : 0.06298133465171936, + "99.999" : 0.06298133465171936, + "99.9999" : 0.06298133465171936, + "100.0" : 0.06298133465171936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06295236890080766, + 0.06278924858569052, + 0.06220937561430793 + ], + [ + 0.06298133465171936, + 0.06262347462222974, + 0.06290333457669978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7457967877873905E-4, + "scoreError" : 7.18272753027571E-6, + "scoreConfidence" : [ + 3.6739695124846333E-4, + 3.8176240630901476E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6958459479113047E-4, + "50.0" : 3.7537403850749E-4, + "90.0" : 3.76731680727499E-4, + "95.0" : 3.76731680727499E-4, + "99.0" : 3.76731680727499E-4, + "99.9" : 3.76731680727499E-4, + "99.99" : 3.76731680727499E-4, + "99.999" : 3.76731680727499E-4, + "99.9999" : 3.76731680727499E-4, + "100.0" : 3.76731680727499E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.76731680727499E-4, + 3.6958459479113047E-4, + 3.7517337845215484E-4 + ], + [ + 3.7446747485138615E-4, + 3.755746985628251E-4, + 3.7594624528743863E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12852723463754115, + "scoreError" : 0.0058290532630292475, + "scoreConfidence" : [ + 0.1226981813745119, + 0.1343562879005704 + ], + "scorePercentiles" : { + "0.0" : 0.1263418249823125, + "50.0" : 0.12862674289347187, + "90.0" : 0.1309475298816258, + "95.0" : 0.1309475298816258, + "99.0" : 0.1309475298816258, + "99.9" : 0.1309475298816258, + "99.99" : 0.1309475298816258, + "99.999" : 0.1309475298816258, + "99.9999" : 0.1309475298816258, + "100.0" : 0.1309475298816258 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12724858061027128, + 0.1263418249823125, + 0.1264316603747345 + ], + [ + 0.13018890679963027, + 0.1309475298816258, + 0.1300049051766725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013237524956391425, + "scoreError" : 1.6958037246543213E-4, + "scoreConfidence" : [ + 0.013067944583925992, + 0.013407105328856857 + ], + "scorePercentiles" : { + "0.0" : 0.013154269843295156, + "50.0" : 0.013234641389906598, + "90.0" : 0.013303247526293525, + "95.0" : 0.013303247526293525, + "99.0" : 0.013303247526293525, + "99.9" : 0.013303247526293525, + "99.99" : 0.013303247526293525, + "99.999" : 0.013303247526293525, + "99.9999" : 0.013303247526293525, + "100.0" : 0.013303247526293525 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013303247526293525, + 0.013264492654237145, + 0.013298996409330952 + ], + [ + 0.013199353179615719, + 0.013154269843295156, + 0.013204790125576052 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0406793201805093, + "scoreError" : 0.08603849521313481, + "scoreConfidence" : [ + 0.9546408249673746, + 1.1267178153936441 + ], + "scorePercentiles" : { + "0.0" : 1.007942221023987, + "50.0" : 1.0415386652472598, + "90.0" : 1.0733267749275517, + "95.0" : 1.0733267749275517, + "99.0" : 1.0733267749275517, + "99.9" : 1.0733267749275517, + "99.99" : 1.0733267749275517, + "99.999" : 1.0733267749275517, + "99.9999" : 1.0733267749275517, + "100.0" : 1.0733267749275517 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0113651396642396, + 1.0198345784213747, + 1.007942221023987 + ], + [ + 1.0683644549727593, + 1.0733267749275517, + 1.063242752073145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011216801328603643, + "scoreError" : 3.000537292775303E-4, + "scoreConfidence" : [ + 0.010916747599326112, + 0.011516855057881173 + ], + "scorePercentiles" : { + "0.0" : 0.011086911923440223, + "50.0" : 0.011187821759084247, + "90.0" : 0.011409034098480354, + "95.0" : 0.011409034098480354, + "99.0" : 0.011409034098480354, + "99.9" : 0.011409034098480354, + "99.99" : 0.011409034098480354, + "99.999" : 0.011409034098480354, + "99.9999" : 0.011409034098480354, + "100.0" : 0.011409034098480354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011086911923440223, + 0.011244025925867625, + 0.011409034098480354 + ], + [ + 0.011185192505665156, + 0.011188955596580738, + 0.011186687921587755 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2000498808925495, + "scoreError" : 0.5342452733870223, + "scoreConfidence" : [ + 2.6658046075055273, + 3.7342951542795717 + ], + "scorePercentiles" : { + "0.0" : 3.014500322483424, + "50.0" : 3.1894549831946684, + "90.0" : 3.4202595328317376, + "95.0" : 3.4202595328317376, + "99.0" : 3.4202595328317376, + "99.9" : 3.4202595328317376, + "99.99" : 3.4202595328317376, + "99.999" : 3.4202595328317376, + "99.9999" : 3.4202595328317376, + "100.0" : 3.4202595328317376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.014500322483424, + 3.0344179053398057, + 3.034937837378641 + ], + [ + 3.3439721290106954, + 3.4202595328317376, + 3.352211558310992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.809899452708773, + "scoreError" : 0.13392968917126652, + "scoreConfidence" : [ + 2.6759697635375064, + 2.9438291418800393 + ], + "scorePercentiles" : { + "0.0" : 2.746953985992859, + "50.0" : 2.8083206490557453, + "90.0" : 2.875143469962633, + "95.0" : 2.875143469962633, + "99.0" : 2.875143469962633, + "99.9" : 2.875143469962633, + "99.99" : 2.875143469962633, + "99.999" : 2.875143469962633, + "99.9999" : 2.875143469962633, + "100.0" : 2.875143469962633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7729238505683393, + 2.794485414082146, + 2.746953985992859 + ], + [ + 2.8477341116173123, + 2.8221558840293453, + 2.875143469962633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18777746342704849, + "scoreError" : 0.004572960506774189, + "scoreConfidence" : [ + 0.1832045029202743, + 0.19235042393382268 + ], + "scorePercentiles" : { + "0.0" : 0.18517129965743911, + "50.0" : 0.18839868879963878, + "90.0" : 0.18919563365306394, + "95.0" : 0.18919563365306394, + "99.0" : 0.18919563365306394, + "99.9" : 0.18919563365306394, + "99.99" : 0.18919563365306394, + "99.999" : 0.18919563365306394, + "99.9999" : 0.18919563365306394, + "100.0" : 0.18919563365306394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18904637954175962, + 0.18645409011075065, + 0.18517129965743911 + ], + [ + 0.18919563365306394, + 0.18797423834586466, + 0.18882313925341287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3601624216064699, + "scoreError" : 0.03292187933563572, + "scoreConfidence" : [ + 0.32724054227083416, + 0.3930843009421056 + ], + "scorePercentiles" : { + "0.0" : 0.3480167627631808, + "50.0" : 0.36055106540577764, + "90.0" : 0.3714486345739544, + "95.0" : 0.3714486345739544, + "99.0" : 0.3714486345739544, + "99.9" : 0.3714486345739544, + "99.99" : 0.3714486345739544, + "99.999" : 0.3714486345739544, + "99.9999" : 0.3714486345739544, + "100.0" : 0.3714486345739544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3480167627631808, + 0.3491084902775353, + 0.3513922217576162 + ], + [ + 0.36970990905393913, + 0.3712985112125938, + 0.3714486345739544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14979917517497288, + "scoreError" : 0.006823645828235725, + "scoreConfidence" : [ + 0.14297552934673716, + 0.1566228210032086 + ], + "scorePercentiles" : { + "0.0" : 0.14710716330043103, + "50.0" : 0.15015725712252548, + "90.0" : 0.1522981194450367, + "95.0" : 0.1522981194450367, + "99.0" : 0.1522981194450367, + "99.9" : 0.1522981194450367, + "99.99" : 0.1522981194450367, + "99.999" : 0.1522981194450367, + "99.9999" : 0.1522981194450367, + "100.0" : 0.1522981194450367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1522981194450367, + 0.15191000710922073, + 0.15165147152042704 + ], + [ + 0.14716524695009786, + 0.14866304272462388, + 0.14710716330043103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4091450545041764, + "scoreError" : 0.007969279186245602, + "scoreConfidence" : [ + 0.40117577531793075, + 0.417114333690422 + ], + "scorePercentiles" : { + "0.0" : 0.406487306072677, + "50.0" : 0.4086165006825696, + "90.0" : 0.41332784215747054, + "95.0" : 0.41332784215747054, + "99.0" : 0.41332784215747054, + "99.9" : 0.41332784215747054, + "99.99" : 0.41332784215747054, + "99.999" : 0.41332784215747054, + "99.9999" : 0.41332784215747054, + "100.0" : 0.41332784215747054 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41332784215747054, + 0.4100862018781268, + 0.4065835369165718 + ], + [ + 0.4112386405132001, + 0.40714679948701243, + 0.406487306072677 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16004545186081076, + "scoreError" : 0.010464600465073564, + "scoreConfidence" : [ + 0.1495808513957372, + 0.17051005232588431 + ], + "scorePercentiles" : { + "0.0" : 0.15640643608552168, + "50.0" : 0.16004523200898693, + "90.0" : 0.16366322930134364, + "95.0" : 0.16366322930134364, + "99.0" : 0.16366322930134364, + "99.9" : 0.16366322930134364, + "99.99" : 0.16366322930134364, + "99.999" : 0.16366322930134364, + "99.9999" : 0.16366322930134364, + "100.0" : 0.16366322930134364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16366322930134364, + 0.16345824472449696, + 0.1632196017007247 + ], + [ + 0.15687086231724917, + 0.15665433703552853, + 0.15640643608552168 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04779986683027423, + "scoreError" : 0.0037868361909343114, + "scoreConfidence" : [ + 0.044013030639339916, + 0.05158670302120854 + ], + "scorePercentiles" : { + "0.0" : 0.04630165130244747, + "50.0" : 0.04800056592721949, + "90.0" : 0.04906355881386118, + "95.0" : 0.04906355881386118, + "99.0" : 0.04906355881386118, + "99.9" : 0.04906355881386118, + "99.99" : 0.04906355881386118, + "99.999" : 0.04906355881386118, + "99.9999" : 0.04906355881386118, + "100.0" : 0.04906355881386118 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04703185517763585, + 0.04630165130244747, + 0.046430865542745975 + ], + [ + 0.04896927667680314, + 0.049001993468151726, + 0.04906355881386118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8909326.354449812, + "scoreError" : 987324.7309505814, + "scoreConfidence" : [ + 7922001.623499231, + 9896651.085400393 + ], + "scorePercentiles" : { + "0.0" : 8549841.861538462, + "50.0" : 8894660.020037945, + "90.0" : 9373885.413308341, + "95.0" : 9373885.413308341, + "99.0" : 9373885.413308341, + "99.9" : 9373885.413308341, + "99.99" : 9373885.413308341, + "99.999" : 9373885.413308341, + "99.9999" : 9373885.413308341, + "100.0" : 9373885.413308341 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8683100.074652778, + 8549841.861538462, + 8569812.359897172 + ], + [ + 9373885.413308341, + 9173098.45187901, + 9106219.965423113 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-14T22:01:02Z-d6003326db74b5a55959257d090abfd548e1ed2a-jdk17.json b/performance-results/2025-07-14T22:01:02Z-d6003326db74b5a55959257d090abfd548e1ed2a-jdk17.json new file mode 100644 index 0000000000..14704a4663 --- /dev/null +++ b/performance-results/2025-07-14T22:01:02Z-d6003326db74b5a55959257d090abfd548e1ed2a-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3581073436412483, + "scoreError" : 0.02710646485880727, + "scoreConfidence" : [ + 3.331000878782441, + 3.3852138085000556 + ], + "scorePercentiles" : { + "0.0" : 3.35379066231419, + "50.0" : 3.3578930723381877, + "90.0" : 3.362852567574427, + "95.0" : 3.362852567574427, + "99.0" : 3.362852567574427, + "99.9" : 3.362852567574427, + "99.99" : 3.362852567574427, + "99.999" : 3.362852567574427, + "99.9999" : 3.362852567574427, + "100.0" : 3.362852567574427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.35379066231419, + 3.362852567574427 + ], + [ + 3.355490448000643, + 3.360295696675732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7012690471370124, + "scoreError" : 0.010666331042968364, + "scoreConfidence" : [ + 1.690602716094044, + 1.7119353781799809 + ], + "scorePercentiles" : { + "0.0" : 1.6993004308091342, + "50.0" : 1.7012222918155686, + "90.0" : 1.7033311741077786, + "95.0" : 1.7033311741077786, + "99.0" : 1.7033311741077786, + "99.9" : 1.7033311741077786, + "99.99" : 1.7033311741077786, + "99.999" : 1.7033311741077786, + "99.9999" : 1.7033311741077786, + "100.0" : 1.7033311741077786 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7013663644917127, + 1.7010782191394243 + ], + [ + 1.7033311741077786, + 1.6993004308091342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8531227132939547, + "scoreError" : 0.03378060483417919, + "scoreConfidence" : [ + 0.8193421084597755, + 0.8869033181281339 + ], + "scorePercentiles" : { + "0.0" : 0.8477087372047541, + "50.0" : 0.8522775109118934, + "90.0" : 0.8602270941472778, + "95.0" : 0.8602270941472778, + "99.0" : 0.8602270941472778, + "99.9" : 0.8602270941472778, + "99.99" : 0.8602270941472778, + "99.999" : 0.8602270941472778, + "99.9999" : 0.8602270941472778, + "100.0" : 0.8602270941472778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8477087372047541, + 0.8516566778662232 + ], + [ + 0.8528983439575635, + 0.8602270941472778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.658771275196315, + "scoreError" : 0.0365474205988281, + "scoreConfidence" : [ + 16.622223854597486, + 16.695318695795144 + ], + "scorePercentiles" : { + "0.0" : 16.647568678703696, + "50.0" : 16.65301353161767, + "90.0" : 16.675259034169326, + "95.0" : 16.675259034169326, + "99.0" : 16.675259034169326, + "99.9" : 16.675259034169326, + "99.99" : 16.675259034169326, + "99.999" : 16.675259034169326, + "99.9999" : 16.675259034169326, + "100.0" : 16.675259034169326 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.647568678703696, + 16.64888306520242, + 16.649266189360123 + ], + [ + 16.674889809867114, + 16.675259034169326, + 16.656760873875218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2674.9488730356693, + "scoreError" : 67.11968555061144, + "scoreConfidence" : [ + 2607.829187485058, + 2742.0685585862807 + ], + "scorePercentiles" : { + "0.0" : 2651.8960493684235, + "50.0" : 2674.447994063885, + "90.0" : 2700.0108998225237, + "95.0" : 2700.0108998225237, + "99.0" : 2700.0108998225237, + "99.9" : 2700.0108998225237, + "99.99" : 2700.0108998225237, + "99.999" : 2700.0108998225237, + "99.9999" : 2700.0108998225237, + "100.0" : 2700.0108998225237 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2651.8960493684235, + 2654.718934796574, + 2652.933194796615 + ], + [ + 2694.177053331196, + 2695.9571060986823, + 2700.0108998225237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77038.52841575335, + "scoreError" : 2978.8169924909735, + "scoreConfidence" : [ + 74059.71142326237, + 80017.34540824432 + ], + "scorePercentiles" : { + "0.0" : 76004.13672085656, + "50.0" : 77055.58013060322, + "90.0" : 78027.56413739573, + "95.0" : 78027.56413739573, + "99.0" : 78027.56413739573, + "99.9" : 78027.56413739573, + "99.99" : 78027.56413739573, + "99.999" : 78027.56413739573, + "99.9999" : 78027.56413739573, + "100.0" : 78027.56413739573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76126.26593886662, + 76078.21299169592, + 76004.13672085656 + ], + [ + 78010.09638336545, + 78027.56413739573, + 77984.89432233982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 363.44285954652145, + "scoreError" : 6.0287047235114954, + "scoreConfidence" : [ + 357.41415482300994, + 369.47156427003296 + ], + "scorePercentiles" : { + "0.0" : 361.30552272469043, + "50.0" : 363.5534651948339, + "90.0" : 365.4603657502423, + "95.0" : 365.4603657502423, + "99.0" : 365.4603657502423, + "99.9" : 365.4603657502423, + "99.99" : 365.4603657502423, + "99.999" : 365.4603657502423, + "99.9999" : 365.4603657502423, + "100.0" : 365.4603657502423 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 365.4388498747584, + 365.4603657502423, + 365.29476861361866 + ], + [ + 361.3454885397699, + 361.81216177604915, + 361.30552272469043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.84324182878305, + "scoreError" : 4.076898359803688, + "scoreConfidence" : [ + 111.76634346897936, + 119.92014018858674 + ], + "scorePercentiles" : { + "0.0" : 114.49490570946332, + "50.0" : 115.83590586825932, + "90.0" : 117.25459165852146, + "95.0" : 117.25459165852146, + "99.0" : 117.25459165852146, + "99.9" : 117.25459165852146, + "99.99" : 117.25459165852146, + "99.999" : 117.25459165852146, + "99.9999" : 117.25459165852146, + "100.0" : 117.25459165852146 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.25459165852146, + 117.12774698505744, + 117.12666177321468 + ], + [ + 114.49490570946332, + 114.51039488313742, + 114.54514996330396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060678850049020884, + "scoreError" : 7.681907580550135E-4, + "scoreConfidence" : [ + 0.05991065929096587, + 0.0614470408070759 + ], + "scorePercentiles" : { + "0.0" : 0.06038200073061015, + "50.0" : 0.0606895397252282, + "90.0" : 0.06095123389692079, + "95.0" : 0.06095123389692079, + "99.0" : 0.06095123389692079, + "99.9" : 0.06095123389692079, + "99.99" : 0.06095123389692079, + "99.999" : 0.06095123389692079, + "99.9999" : 0.06095123389692079, + "100.0" : 0.06095123389692079 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06095123389692079, + 0.06090183969646957, + 0.06092791972875325 + ], + [ + 0.06038200073061015, + 0.060477239753986826, + 0.0604328664873848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.607754363793428E-4, + "scoreError" : 2.0620266806125745E-5, + "scoreConfidence" : [ + 3.4015516957321704E-4, + 3.8139570318546854E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5374183551567485E-4, + "50.0" : 3.6064620727426703E-4, + "90.0" : 3.683799092742162E-4, + "95.0" : 3.683799092742162E-4, + "99.0" : 3.683799092742162E-4, + "99.9" : 3.683799092742162E-4, + "99.99" : 3.683799092742162E-4, + "99.999" : 3.683799092742162E-4, + "99.9999" : 3.683799092742162E-4, + "100.0" : 3.683799092742162E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.542190211591999E-4, + 3.5374183551567485E-4, + 3.5428011236902446E-4 + ], + [ + 3.683799092742162E-4, + 3.670194377784314E-4, + 3.6701230217950966E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12390292081696497, + "scoreError" : 0.0024803731041723996, + "scoreConfidence" : [ + 0.12142254771279257, + 0.12638329392113737 + ], + "scorePercentiles" : { + "0.0" : 0.12289101978494624, + "50.0" : 0.12406299844820684, + "90.0" : 0.12473521069700144, + "95.0" : 0.12473521069700144, + "99.0" : 0.12473521069700144, + "99.9" : 0.12473521069700144, + "99.99" : 0.12473521069700144, + "99.999" : 0.12473521069700144, + "99.9999" : 0.12473521069700144, + "100.0" : 0.12473521069700144 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12289101978494624, + 0.1235471942254948, + 0.122937652193155 + ], + [ + 0.12473521069700144, + 0.1247276453302734, + 0.12457880267091888 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012972946635625806, + "scoreError" : 7.347243648482396E-5, + "scoreConfidence" : [ + 0.012899474199140983, + 0.01304641907211063 + ], + "scorePercentiles" : { + "0.0" : 0.01294594748023178, + "50.0" : 0.012973183065703237, + "90.0" : 0.012998232414586433, + "95.0" : 0.012998232414586433, + "99.0" : 0.012998232414586433, + "99.9" : 0.012998232414586433, + "99.99" : 0.012998232414586433, + "99.999" : 0.012998232414586433, + "99.9999" : 0.012998232414586433, + "100.0" : 0.012998232414586433 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012950047602459441, + 0.01294594748023178, + 0.0129513091539929 + ], + [ + 0.012995056977413575, + 0.012998232414586433, + 0.012997086185070715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9689787832196171, + "scoreError" : 0.014699200456419358, + "scoreConfidence" : [ + 0.9542795827631977, + 0.9836779836760364 + ], + "scorePercentiles" : { + "0.0" : 0.9628837318505681, + "50.0" : 0.9692995504052865, + "90.0" : 0.9742356146127618, + "95.0" : 0.9742356146127618, + "99.0" : 0.9742356146127618, + "99.9" : 0.9742356146127618, + "99.99" : 0.9742356146127618, + "99.999" : 0.9742356146127618, + "99.9999" : 0.9742356146127618, + "100.0" : 0.9742356146127618 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9742356146127618, + 0.9728151185797665, + 0.973958665368134 + ], + [ + 0.9641955866756653, + 0.9628837318505681, + 0.9657839822308064 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010700078671117464, + "scoreError" : 0.0013654921210303175, + "scoreConfidence" : [ + 0.009334586550087147, + 0.01206557079214778 + ], + "scorePercentiles" : { + "0.0" : 0.010246345338970026, + "50.0" : 0.010701962800476757, + "90.0" : 0.011156180661009877, + "95.0" : 0.011156180661009877, + "99.0" : 0.011156180661009877, + "99.9" : 0.011156180661009877, + "99.99" : 0.011156180661009877, + "99.999" : 0.011156180661009877, + "99.9999" : 0.011156180661009877, + "100.0" : 0.011156180661009877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010251043734085606, + 0.010269592040485614, + 0.010246345338970026 + ], + [ + 0.011142976691685758, + 0.011134333560467898, + 0.011156180661009877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0139715932456617, + "scoreError" : 0.1340680251275121, + "scoreConfidence" : [ + 2.8799035681181495, + 3.148039618373174 + ], + "scorePercentiles" : { + "0.0" : 2.9669904816132857, + "50.0" : 3.0120378698953774, + "90.0" : 3.062598700551133, + "95.0" : 3.062598700551133, + "99.0" : 3.062598700551133, + "99.9" : 3.062598700551133, + "99.99" : 3.062598700551133, + "99.999" : 3.062598700551133, + "99.9999" : 3.062598700551133, + "100.0" : 3.062598700551133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0600207669724773, + 3.062598700551133, + 3.0495096030487803 + ], + [ + 2.974566136741974, + 2.9701438705463183, + 2.9669904816132857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7391876225229788, + "scoreError" : 0.031165467815250692, + "scoreConfidence" : [ + 2.708022154707728, + 2.7703530903382294 + ], + "scorePercentiles" : { + "0.0" : 2.7282466879432623, + "50.0" : 2.7390798846947897, + "90.0" : 2.750732664191419, + "95.0" : 2.750732664191419, + "99.0" : 2.750732664191419, + "99.9" : 2.750732664191419, + "99.99" : 2.750732664191419, + "99.999" : 2.750732664191419, + "99.9999" : 2.750732664191419, + "100.0" : 2.750732664191419 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7282466879432623, + 2.7299096476528386, + 2.729085802728513 + ], + [ + 2.750732664191419, + 2.7482501217367408, + 2.7489008108851016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1781733904485464, + "scoreError" : 0.01539419483907109, + "scoreConfidence" : [ + 0.16277919560947532, + 0.1935675852876175 + ], + "scorePercentiles" : { + "0.0" : 0.17305912070606558, + "50.0" : 0.1780484700590578, + "90.0" : 0.18383466120077943, + "95.0" : 0.18383466120077943, + "99.0" : 0.18383466120077943, + "99.9" : 0.18383466120077943, + "99.99" : 0.18383466120077943, + "99.999" : 0.18383466120077943, + "99.9999" : 0.18383466120077943, + "100.0" : 0.18383466120077943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18383466120077943, + 0.18283883526529418, + 0.18284708814817524 + ], + [ + 0.1732025325181426, + 0.17325810485282142, + 0.17305912070606558 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31881618772709136, + "scoreError" : 0.009639145862982517, + "scoreConfidence" : [ + 0.3091770418641088, + 0.3284553335900739 + ], + "scorePercentiles" : { + "0.0" : 0.31538235041629875, + "50.0" : 0.3189867864157143, + "90.0" : 0.32218294055865204, + "95.0" : 0.32218294055865204, + "99.0" : 0.32218294055865204, + "99.9" : 0.32218294055865204, + "99.99" : 0.32218294055865204, + "99.999" : 0.32218294055865204, + "99.9999" : 0.32218294055865204, + "100.0" : 0.32218294055865204 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3155245565091184, + 0.31538235041629875, + 0.31616240227632 + ], + [ + 0.32183370604705047, + 0.3218111705551086, + 0.32218294055865204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14649771378338938, + "scoreError" : 0.002088090981567289, + "scoreConfidence" : [ + 0.1444096228018221, + 0.14858580476495667 + ], + "scorePercentiles" : { + "0.0" : 0.14576349823630586, + "50.0" : 0.14649918355558894, + "90.0" : 0.14729270019442073, + "95.0" : 0.14729270019442073, + "99.0" : 0.14729270019442073, + "99.9" : 0.14729270019442073, + "99.99" : 0.14729270019442073, + "99.999" : 0.14729270019442073, + "99.9999" : 0.14729270019442073, + "100.0" : 0.14729270019442073 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14593693022882492, + 0.14577050726644608, + 0.14576349823630586 + ], + [ + 0.14729270019442073, + 0.14716120989198575, + 0.14706143688235293 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4067546131704393, + "scoreError" : 0.01027505742572403, + "scoreConfidence" : [ + 0.3964795557447153, + 0.41702967059616336 + ], + "scorePercentiles" : { + "0.0" : 0.40224895885121276, + "50.0" : 0.4070826563132047, + "90.0" : 0.4112681787300543, + "95.0" : 0.4112681787300543, + "99.0" : 0.4112681787300543, + "99.9" : 0.4112681787300543, + "99.99" : 0.4112681787300543, + "99.999" : 0.4112681787300543, + "99.9999" : 0.4112681787300543, + "100.0" : 0.4112681787300543 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40847265619638917, + 0.40975114062115875, + 0.4112681787300543 + ], + [ + 0.4056926564300203, + 0.40309408819380066, + 0.40224895885121276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.160258416830071, + "scoreError" : 0.004033999764718583, + "scoreConfidence" : [ + 0.15622441706535242, + 0.16429241659478958 + ], + "scorePercentiles" : { + "0.0" : 0.1588153917386609, + "50.0" : 0.16015476044348922, + "90.0" : 0.16231229376247747, + "95.0" : 0.16231229376247747, + "99.0" : 0.16231229376247747, + "99.9" : 0.16231229376247747, + "99.99" : 0.16231229376247747, + "99.999" : 0.16231229376247747, + "99.9999" : 0.16231229376247747, + "100.0" : 0.16231229376247747 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16231229376247747, + 0.1610217482328315, + 0.1611612606565567 + ], + [ + 0.15928777265414695, + 0.1588153917386609, + 0.15895203393575255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04593580255077625, + "scoreError" : 7.083037066726166E-4, + "scoreConfidence" : [ + 0.04522749884410363, + 0.046644106257448865 + ], + "scorePercentiles" : { + "0.0" : 0.0456801348319226, + "50.0" : 0.04593701852658313, + "90.0" : 0.04618633716521105, + "95.0" : 0.04618633716521105, + "99.0" : 0.04618633716521105, + "99.9" : 0.04618633716521105, + "99.99" : 0.04618633716521105, + "99.999" : 0.04618633716521105, + "99.9999" : 0.04618633716521105, + "100.0" : 0.04618633716521105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04615976102048541, + 0.04618633716521105, + 0.046151208360639094 + ], + [ + 0.045714545233872146, + 0.04572282869252716, + 0.0456801348319226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8506987.78981484, + "scoreError" : 186618.74042547448, + "scoreConfidence" : [ + 8320369.049389364, + 8693606.530240314 + ], + "scorePercentiles" : { + "0.0" : 8447312.75168919, + "50.0" : 8480112.02351723, + "90.0" : 8602675.13327601, + "95.0" : 8602675.13327601, + "99.0" : 8602675.13327601, + "99.9" : 8602675.13327601, + "99.99" : 8602675.13327601, + "99.999" : 8602675.13327601, + "99.9999" : 8602675.13327601, + "100.0" : 8602675.13327601 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8455794.64750634, + 8462642.928087987, + 8447312.75168919 + ], + [ + 8602675.13327601, + 8575920.159383034, + 8497581.118946474 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-21T02:43:48Z-ff857a65e6b9bd520ec49334dd6d3a0caa412380-jdk17.json b/performance-results/2025-07-21T02:43:48Z-ff857a65e6b9bd520ec49334dd6d3a0caa412380-jdk17.json new file mode 100644 index 0000000000..56d907a3bc --- /dev/null +++ b/performance-results/2025-07-21T02:43:48Z-ff857a65e6b9bd520ec49334dd6d3a0caa412380-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.353402942875439, + "scoreError" : 0.03810684829635145, + "scoreConfidence" : [ + 3.3152960945790877, + 3.3915097911717904 + ], + "scorePercentiles" : { + "0.0" : 3.3471181071710974, + "50.0" : 3.3530688207997947, + "90.0" : 3.360356022731068, + "95.0" : 3.360356022731068, + "99.0" : 3.360356022731068, + "99.9" : 3.360356022731068, + "99.99" : 3.360356022731068, + "99.999" : 3.360356022731068, + "99.9999" : 3.360356022731068, + "100.0" : 3.360356022731068 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3471181071710974, + 3.3502176109313764 + ], + [ + 3.3559200306682135, + 3.360356022731068 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6946906581819468, + "scoreError" : 0.035853813858369464, + "scoreConfidence" : [ + 1.6588368443235773, + 1.7305444720403163 + ], + "scorePercentiles" : { + "0.0" : 1.6868776184155958, + "50.0" : 1.6963950887611206, + "90.0" : 1.6990948367899503, + "95.0" : 1.6990948367899503, + "99.0" : 1.6990948367899503, + "99.9" : 1.6990948367899503, + "99.99" : 1.6990948367899503, + "99.999" : 1.6990948367899503, + "99.9999" : 1.6990948367899503, + "100.0" : 1.6990948367899503 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6990948367899503, + 1.6981421233265421 + ], + [ + 1.6868776184155958, + 1.694648054195699 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8508200475523294, + "scoreError" : 0.04645159544140204, + "scoreConfidence" : [ + 0.8043684521109273, + 0.8972716429937315 + ], + "scorePercentiles" : { + "0.0" : 0.843254449769734, + "50.0" : 0.850645700666328, + "90.0" : 0.8587343391069278, + "95.0" : 0.8587343391069278, + "99.0" : 0.8587343391069278, + "99.9" : 0.8587343391069278, + "99.99" : 0.8587343391069278, + "99.999" : 0.8587343391069278, + "99.9999" : 0.8587343391069278, + "100.0" : 0.8587343391069278 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.843254449769734, + 0.8587343391069278 + ], + [ + 0.8464572788851009, + 0.8548341224475552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.397386851362327, + "scoreError" : 0.2150537322381261, + "scoreConfidence" : [ + 16.182333119124202, + 16.612440583600453 + ], + "scorePercentiles" : { + "0.0" : 16.323944069940083, + "50.0" : 16.368158309349546, + "90.0" : 16.50637214768951, + "95.0" : 16.50637214768951, + "99.0" : 16.50637214768951, + "99.9" : 16.50637214768951, + "99.99" : 16.50637214768951, + "99.999" : 16.50637214768951, + "99.9999" : 16.50637214768951, + "100.0" : 16.50637214768951 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.479128830991346, + 16.50637214768951, + 16.356235828799505 + ], + [ + 16.38008078989959, + 16.338559440853928, + 16.323944069940083 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2726.45504496448, + "scoreError" : 36.22420433010142, + "scoreConfidence" : [ + 2690.2308406343786, + 2762.679249294581 + ], + "scorePercentiles" : { + "0.0" : 2715.457363983382, + "50.0" : 2720.3673402409045, + "90.0" : 2746.855852259408, + "95.0" : 2746.855852259408, + "99.0" : 2746.855852259408, + "99.9" : 2746.855852259408, + "99.99" : 2746.855852259408, + "99.999" : 2746.855852259408, + "99.9999" : 2746.855852259408, + "100.0" : 2746.855852259408 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2722.88827922299, + 2746.855852259408, + 2738.0035057394325 + ], + [ + 2717.846401258819, + 2717.678867322848, + 2715.457363983382 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77621.1373828074, + "scoreError" : 921.2202000774472, + "scoreConfidence" : [ + 76699.91718272996, + 78542.35758288484 + ], + "scorePercentiles" : { + "0.0" : 77278.87456229345, + "50.0" : 77633.4273386586, + "90.0" : 77921.94452890838, + "95.0" : 77921.94452890838, + "99.0" : 77921.94452890838, + "99.9" : 77921.94452890838, + "99.99" : 77921.94452890838, + "99.999" : 77921.94452890838, + "99.9999" : 77921.94452890838, + "100.0" : 77921.94452890838 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77919.06400503554, + 77921.94452890838, + 77919.71655188149 + ], + [ + 77278.87456229345, + 77339.43397644389, + 77347.79067228167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.17313933194123, + "scoreError" : 3.9017040406889434, + "scoreConfidence" : [ + 357.27143529125226, + 365.0748433726302 + ], + "scorePercentiles" : { + "0.0" : 358.50403854284554, + "50.0" : 361.4382420800065, + "90.0" : 362.3453350609023, + "95.0" : 362.3453350609023, + "99.0" : 362.3453350609023, + "99.9" : 362.3453350609023, + "99.99" : 362.3453350609023, + "99.999" : 362.3453350609023, + "99.9999" : 362.3453350609023, + "100.0" : 362.3453350609023 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 361.12260604479775, + 361.4815286192209, + 362.1903721830885 + ], + [ + 358.50403854284554, + 361.39495554079207, + 362.3453350609023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.13993254337142, + "scoreError" : 2.6777186807158353, + "scoreConfidence" : [ + 113.46221386265557, + 118.81765122408726 + ], + "scorePercentiles" : { + "0.0" : 115.12859215845955, + "50.0" : 116.05088725599444, + "90.0" : 117.51271812193997, + "95.0" : 117.51271812193997, + "99.0" : 117.51271812193997, + "99.9" : 117.51271812193997, + "99.99" : 117.51271812193997, + "99.999" : 117.51271812193997, + "99.9999" : 117.51271812193997, + "100.0" : 117.51271812193997 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.61434673899734, + 116.74974732453428, + 117.51271812193997 + ], + [ + 115.34676314330575, + 115.48742777299155, + 115.12859215845955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061015735143366695, + "scoreError" : 4.2347589352947695E-4, + "scoreConfidence" : [ + 0.060592259249837216, + 0.061439211036896174 + ], + "scorePercentiles" : { + "0.0" : 0.06086907150813505, + "50.0" : 0.06099386796819187, + "90.0" : 0.06124963805743895, + "95.0" : 0.06124963805743895, + "99.0" : 0.06124963805743895, + "99.9" : 0.06124963805743895, + "99.99" : 0.06124963805743895, + "99.999" : 0.06124963805743895, + "99.9999" : 0.06124963805743895, + "100.0" : 0.06124963805743895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06088822633008195, + 0.06124963805743895, + 0.06086907150813505 + ], + [ + 0.061099739028160495, + 0.06107613655158093, + 0.060911599384802805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.698613204164069E-4, + "scoreError" : 1.2032536153959123E-5, + "scoreConfidence" : [ + 3.578287842624478E-4, + 3.81893856570366E-4 + ], + "scorePercentiles" : { + "0.0" : 3.658432186096184E-4, + "50.0" : 3.6982689642658945E-4, + "90.0" : 3.742085838040515E-4, + "95.0" : 3.742085838040515E-4, + "99.0" : 3.742085838040515E-4, + "99.9" : 3.742085838040515E-4, + "99.99" : 3.742085838040515E-4, + "99.999" : 3.742085838040515E-4, + "99.9999" : 3.742085838040515E-4, + "100.0" : 3.742085838040515E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.742085838040515E-4, + 3.735528801338856E-4, + 3.7355306743065843E-4 + ], + [ + 3.661009127192933E-4, + 3.6590925980093444E-4, + 3.658432186096184E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12542027208140236, + "scoreError" : 0.0028396758885504718, + "scoreConfidence" : [ + 0.12258059619285189, + 0.12825994796995283 + ], + "scorePercentiles" : { + "0.0" : 0.12435404469148698, + "50.0" : 0.1254747168213527, + "90.0" : 0.12643094644482655, + "95.0" : 0.12643094644482655, + "99.0" : 0.12643094644482655, + "99.9" : 0.12643094644482655, + "99.99" : 0.12643094644482655, + "99.999" : 0.12643094644482655, + "99.9999" : 0.12643094644482655, + "100.0" : 0.12643094644482655 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12634322542987456, + 0.12643094644482655, + 0.126235683960716 + ], + [ + 0.12471374968198938, + 0.12435404469148698, + 0.12444398227952065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013138433227355202, + "scoreError" : 5.462299977901367E-4, + "scoreConfidence" : [ + 0.012592203229565065, + 0.01368466322514534 + ], + "scorePercentiles" : { + "0.0" : 0.012956229647739242, + "50.0" : 0.013140072719325536, + "90.0" : 0.013321377321216384, + "95.0" : 0.013321377321216384, + "99.0" : 0.013321377321216384, + "99.9" : 0.013321377321216384, + "99.99" : 0.013321377321216384, + "99.999" : 0.013321377321216384, + "99.9999" : 0.013321377321216384, + "100.0" : 0.013321377321216384 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013321377321216384, + 0.013315264706861405, + 0.013311928651489455 + ], + [ + 0.012957582249663108, + 0.012956229647739242, + 0.012968216787161615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9553106707726821, + "scoreError" : 0.054922474432973614, + "scoreConfidence" : [ + 0.9003881963397085, + 1.0102331452056557 + ], + "scorePercentiles" : { + "0.0" : 0.9363559752808989, + "50.0" : 0.9549902011085116, + "90.0" : 0.975399884424071, + "95.0" : 0.975399884424071, + "99.0" : 0.975399884424071, + "99.9" : 0.975399884424071, + "99.99" : 0.975399884424071, + "99.999" : 0.975399884424071, + "99.9999" : 0.975399884424071, + "100.0" : 0.975399884424071 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9363559752808989, + 0.9379142220763388, + 0.9381582622889306 + ], + [ + 0.9722135406377601, + 0.975399884424071, + 0.9718221399280925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010813104411587766, + "scoreError" : 4.1008980937896086E-4, + "scoreConfidence" : [ + 0.010403014602208806, + 0.011223194220966726 + ], + "scorePercentiles" : { + "0.0" : 0.01067158939357075, + "50.0" : 0.010810696315419477, + "90.0" : 0.010955279795447973, + "95.0" : 0.010955279795447973, + "99.0" : 0.010955279795447973, + "99.9" : 0.010955279795447973, + "99.99" : 0.010955279795447973, + "99.999" : 0.010955279795447973, + "99.9999" : 0.010955279795447973, + "100.0" : 0.010955279795447973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01067158939357075, + 0.0106864217368817, + 0.010681420104375616 + ], + [ + 0.010934970893957254, + 0.010948944545293302, + 0.010955279795447973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.146371888171615, + "scoreError" : 0.028376781575687078, + "scoreConfidence" : [ + 3.117995106595928, + 3.174748669747302 + ], + "scorePercentiles" : { + "0.0" : 3.1281348605378363, + "50.0" : 3.1499273746887098, + "90.0" : 3.1568726875, + "95.0" : 3.1568726875, + "99.0" : 3.1568726875, + "99.9" : 3.1568726875, + "99.99" : 3.1568726875, + "99.999" : 3.1568726875, + "99.9999" : 3.1568726875, + "100.0" : 3.1568726875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.151264666036547, + 3.1489987380352646, + 3.1281348605378363 + ], + [ + 3.1568726875, + 3.150856011342155, + 3.1421043655778895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7211642564000003, + "scoreError" : 0.037442297211382695, + "scoreConfidence" : [ + 2.6837219591886177, + 2.758606553611383 + ], + "scorePercentiles" : { + "0.0" : 2.7088432941495126, + "50.0" : 2.7159281527522077, + "90.0" : 2.740524019731433, + "95.0" : 2.740524019731433, + "99.0" : 2.740524019731433, + "99.9" : 2.740524019731433, + "99.99" : 2.740524019731433, + "99.999" : 2.740524019731433, + "99.9999" : 2.740524019731433, + "100.0" : 2.740524019731433 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7109609113580917, + 2.7088432941495126, + 2.7127731505288852 + ], + [ + 2.734801007656549, + 2.71908315497553, + 2.740524019731433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1795068574280204, + "scoreError" : 0.024607155862681012, + "scoreConfidence" : [ + 0.1548997015653394, + 0.2041140132907014 + ], + "scorePercentiles" : { + "0.0" : 0.1713882382943717, + "50.0" : 0.17890938241654963, + "90.0" : 0.18849500701185606, + "95.0" : 0.18849500701185606, + "99.0" : 0.18849500701185606, + "99.9" : 0.18849500701185606, + "99.99" : 0.18849500701185606, + "99.999" : 0.18849500701185606, + "99.9999" : 0.18849500701185606, + "100.0" : 0.18849500701185606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18849500701185606, + 0.1878270849141655, + 0.18613642479292694 + ], + [ + 0.17168234004017235, + 0.1715120495146297, + 0.1713882382943717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33029560932878804, + "scoreError" : 0.016685196094065477, + "scoreConfidence" : [ + 0.31361041323472255, + 0.34698080542285353 + ], + "scorePercentiles" : { + "0.0" : 0.3246752081101263, + "50.0" : 0.3302238419566086, + "90.0" : 0.3362218044918132, + "95.0" : 0.3362218044918132, + "99.0" : 0.3362218044918132, + "99.9" : 0.3362218044918132, + "99.99" : 0.3362218044918132, + "99.999" : 0.3362218044918132, + "99.9999" : 0.3362218044918132, + "100.0" : 0.3362218044918132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3246752081101263, + 0.32481457723788487, + 0.3251263675466545 + ], + [ + 0.3353213163665627, + 0.3362218044918132, + 0.33561438221968654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1479445980007159, + "scoreError" : 0.006920948817668318, + "scoreConfidence" : [ + 0.1410236491830476, + 0.15486554681838421 + ], + "scorePercentiles" : { + "0.0" : 0.14554108755512218, + "50.0" : 0.14801026432394207, + "90.0" : 0.1502116938294229, + "95.0" : 0.1502116938294229, + "99.0" : 0.1502116938294229, + "99.9" : 0.1502116938294229, + "99.99" : 0.1502116938294229, + "99.999" : 0.1502116938294229, + "99.9999" : 0.1502116938294229, + "100.0" : 0.1502116938294229 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14554108755512218, + 0.1458399522677556, + 0.14569866294655864 + ], + [ + 0.1501956150253075, + 0.1502116938294229, + 0.15018057638012855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40364748065801476, + "scoreError" : 0.009978192428891515, + "scoreConfidence" : [ + 0.3936692882291232, + 0.4136256730869063 + ], + "scorePercentiles" : { + "0.0" : 0.40044748192047414, + "50.0" : 0.40292384584281526, + "90.0" : 0.40862512058186573, + "95.0" : 0.40862512058186573, + "99.0" : 0.40862512058186573, + "99.9" : 0.40862512058186573, + "99.99" : 0.40862512058186573, + "99.999" : 0.40862512058186573, + "99.9999" : 0.40862512058186573, + "100.0" : 0.40862512058186573 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40862512058186573, + 0.4064025708944609, + 0.40517477979012195 + ], + [ + 0.40067291189550863, + 0.4005620188656573, + 0.40044748192047414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15721684111093398, + "scoreError" : 0.008404918614946223, + "scoreConfidence" : [ + 0.14881192249598776, + 0.1656217597258802 + ], + "scorePercentiles" : { + "0.0" : 0.15445115148192196, + "50.0" : 0.15708830267784868, + "90.0" : 0.1605590765365102, + "95.0" : 0.1605590765365102, + "99.0" : 0.1605590765365102, + "99.9" : 0.1605590765365102, + "99.99" : 0.1605590765365102, + "99.999" : 0.1605590765365102, + "99.9999" : 0.1605590765365102, + "100.0" : 0.1605590765365102 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15457688193650107, + 0.15446865479849858, + 0.15445115148192196 + ], + [ + 0.1605590765365102, + 0.15964555849297574, + 0.15959972341919626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04760987561911223, + "scoreError" : 0.0030562434476176376, + "scoreConfidence" : [ + 0.04455363217149459, + 0.05066611906672987 + ], + "scorePercentiles" : { + "0.0" : 0.04654766798549598, + "50.0" : 0.04750736183864036, + "90.0" : 0.049141659885206586, + "95.0" : 0.049141659885206586, + "99.0" : 0.049141659885206586, + "99.9" : 0.049141659885206586, + "99.99" : 0.049141659885206586, + "99.999" : 0.049141659885206586, + "99.9999" : 0.049141659885206586, + "100.0" : 0.049141659885206586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.049141659885206586, + 0.048230377289695286, + 0.04830315963464056 + ], + [ + 0.04678434638758544, + 0.046652042532049486, + 0.04654766798549598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8497163.683661932, + "scoreError" : 427494.6368391711, + "scoreConfidence" : [ + 8069669.046822761, + 8924658.320501104 + ], + "scorePercentiles" : { + "0.0" : 8339939.269166667, + "50.0" : 8500156.331570048, + "90.0" : 8652731.56314879, + "95.0" : 8652731.56314879, + "99.0" : 8652731.56314879, + "99.9" : 8652731.56314879, + "99.99" : 8652731.56314879, + "99.999" : 8652731.56314879, + "99.9999" : 8652731.56314879, + "100.0" : 8652731.56314879 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8347720.316360601, + 8390902.781040268, + 8339939.269166667 + ], + [ + 8642278.29015544, + 8652731.56314879, + 8609409.882099828 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-21T09:01:44Z-43a54fc9a2e2004d5e6593943deac2988a089bcd-jdk17.json b/performance-results/2025-07-21T09:01:44Z-43a54fc9a2e2004d5e6593943deac2988a089bcd-jdk17.json new file mode 100644 index 0000000000..08d3754fcb --- /dev/null +++ b/performance-results/2025-07-21T09:01:44Z-43a54fc9a2e2004d5e6593943deac2988a089bcd-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3395296683647198, + "scoreError" : 0.052074839604582555, + "scoreConfidence" : [ + 3.2874548287601373, + 3.3916045079693022 + ], + "scorePercentiles" : { + "0.0" : 3.3300617520363356, + "50.0" : 3.339731628772678, + "90.0" : 3.348593663877187, + "95.0" : 3.348593663877187, + "99.0" : 3.348593663877187, + "99.9" : 3.348593663877187, + "99.99" : 3.348593663877187, + "99.999" : 3.348593663877187, + "99.9999" : 3.348593663877187, + "100.0" : 3.348593663877187 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.343118807600336, + 3.348593663877187 + ], + [ + 3.3300617520363356, + 3.33634444994502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6841453793729038, + "scoreError" : 0.039986765756976766, + "scoreConfidence" : [ + 1.644158613615927, + 1.7241321451298806 + ], + "scorePercentiles" : { + "0.0" : 1.6772598569488215, + "50.0" : 1.6836510465834902, + "90.0" : 1.6920195673758136, + "95.0" : 1.6920195673758136, + "99.0" : 1.6920195673758136, + "99.9" : 1.6920195673758136, + "99.99" : 1.6920195673758136, + "99.999" : 1.6920195673758136, + "99.9999" : 1.6920195673758136, + "100.0" : 1.6920195673758136 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6772598569488215, + 1.6820743557923434 + ], + [ + 1.6852277373746372, + 1.6920195673758136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.845445131274986, + "scoreError" : 0.021027380397238386, + "scoreConfidence" : [ + 0.8244177508777476, + 0.8664725116722244 + ], + "scorePercentiles" : { + "0.0" : 0.8425504084557296, + "50.0" : 0.8449012418409492, + "90.0" : 0.849427632962316, + "95.0" : 0.849427632962316, + "99.0" : 0.849427632962316, + "99.9" : 0.849427632962316, + "99.99" : 0.849427632962316, + "99.999" : 0.849427632962316, + "99.9999" : 0.849427632962316, + "100.0" : 0.849427632962316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8425504084557296, + 0.8430392026928639 + ], + [ + 0.8467632809890344, + 0.849427632962316 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.134890085465816, + "scoreError" : 0.426288903731031, + "scoreConfidence" : [ + 15.708601181734785, + 16.561178989196847 + ], + "scorePercentiles" : { + "0.0" : 15.95100229530205, + "50.0" : 16.135567151530807, + "90.0" : 16.302067481838954, + "95.0" : 16.302067481838954, + "99.0" : 16.302067481838954, + "99.9" : 16.302067481838954, + "99.99" : 16.302067481838954, + "99.999" : 16.302067481838954, + "99.9999" : 16.302067481838954, + "100.0" : 16.302067481838954 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.007061610032853, + 16.043527582506, + 15.95100229530205 + ], + [ + 16.227606720555613, + 16.278074822559443, + 16.302067481838954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2665.8740617669464, + "scoreError" : 114.46676969627923, + "scoreConfidence" : [ + 2551.407292070667, + 2780.3408314632256 + ], + "scorePercentiles" : { + "0.0" : 2612.5779056346055, + "50.0" : 2667.119844069909, + "90.0" : 2725.500101763791, + "95.0" : 2725.500101763791, + "99.0" : 2725.500101763791, + "99.9" : 2725.500101763791, + "99.99" : 2725.500101763791, + "99.999" : 2725.500101763791, + "99.9999" : 2725.500101763791, + "100.0" : 2725.500101763791 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2612.5779056346055, + 2648.559111065983, + 2636.9217069611495 + ], + [ + 2686.004968102314, + 2725.500101763791, + 2685.6805770738356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75890.4625431142, + "scoreError" : 1933.2438813452575, + "scoreConfidence" : [ + 73957.21866176894, + 77823.70642445947 + ], + "scorePercentiles" : { + "0.0" : 75171.86796656065, + "50.0" : 75898.53799604665, + "90.0" : 76624.48414828714, + "95.0" : 76624.48414828714, + "99.0" : 76624.48414828714, + "99.9" : 76624.48414828714, + "99.99" : 76624.48414828714, + "99.999" : 76624.48414828714, + "99.9999" : 76624.48414828714, + "100.0" : 76624.48414828714 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76624.48414828714, + 76521.80172849288, + 76390.02021178631 + ], + [ + 75171.86796656065, + 75407.05578030701, + 75227.54542325121 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 358.7245600605024, + "scoreError" : 24.35427538070495, + "scoreConfidence" : [ + 334.37028467979746, + 383.0788354412074 + ], + "scorePercentiles" : { + "0.0" : 349.08482301369224, + "50.0" : 358.0562225279694, + "90.0" : 368.7800317782533, + "95.0" : 368.7800317782533, + "99.0" : 368.7800317782533, + "99.9" : 368.7800317782533, + "99.99" : 368.7800317782533, + "99.999" : 368.7800317782533, + "99.9999" : 368.7800317782533, + "100.0" : 368.7800317782533 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.5370553245632, + 364.12600209537857, + 368.7800317782533 + ], + [ + 349.08482301369224, + 351.9864429605602, + 351.8330051905671 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.64367989581547, + "scoreError" : 1.2034438547428785, + "scoreConfidence" : [ + 115.4402360410726, + 117.84712375055834 + ], + "scorePercentiles" : { + "0.0" : 115.91318028612135, + "50.0" : 116.81532519696273, + "90.0" : 117.02108909877536, + "95.0" : 117.02108909877536, + "99.0" : 117.02108909877536, + "99.9" : 117.02108909877536, + "99.99" : 117.02108909877536, + "99.999" : 117.02108909877536, + "99.9999" : 117.02108909877536, + "100.0" : 117.02108909877536 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.75727205747702, + 117.02108909877536, + 115.91318028612135 + ], + [ + 116.34932224927984, + 116.94783734679078, + 116.87337833644843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06136364903368103, + "scoreError" : 3.025204838736298E-4, + "scoreConfidence" : [ + 0.0610611285498074, + 0.06166616951755466 + ], + "scorePercentiles" : { + "0.0" : 0.06121976743516909, + "50.0" : 0.06140227874427741, + "90.0" : 0.061469299898577, + "95.0" : 0.061469299898577, + "99.0" : 0.061469299898577, + "99.9" : 0.061469299898577, + "99.99" : 0.061469299898577, + "99.999" : 0.061469299898577, + "99.9999" : 0.061469299898577, + "100.0" : 0.061469299898577 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06123948405349794, + 0.061383857739147514, + 0.0614206997494073 + ], + [ + 0.061469299898577, + 0.06121976743516909, + 0.06144878532628733 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.643976712244534E-4, + "scoreError" : 2.468188723939987E-5, + "scoreConfidence" : [ + 3.397157839850535E-4, + 3.8907955846385325E-4 + ], + "scorePercentiles" : { + "0.0" : 3.55307915918976E-4, + "50.0" : 3.641154636049315E-4, + "90.0" : 3.7552256004423304E-4, + "95.0" : 3.7552256004423304E-4, + "99.0" : 3.7552256004423304E-4, + "99.9" : 3.7552256004423304E-4, + "99.99" : 3.7552256004423304E-4, + "99.999" : 3.7552256004423304E-4, + "99.9999" : 3.7552256004423304E-4, + "100.0" : 3.7552256004423304E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7552256004423304E-4, + 3.6943930681771625E-4, + 3.7150591145516693E-4 + ], + [ + 3.55307915918976E-4, + 3.558187127184809E-4, + 3.5879162039214674E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12749728648834927, + "scoreError" : 0.003829018675387292, + "scoreConfidence" : [ + 0.12366826781296197, + 0.13132630516373656 + ], + "scorePercentiles" : { + "0.0" : 0.12600521034991116, + "50.0" : 0.12759610020486023, + "90.0" : 0.1292823132821388, + "95.0" : 0.1292823132821388, + "99.0" : 0.1292823132821388, + "99.9" : 0.1292823132821388, + "99.99" : 0.1292823132821388, + "99.999" : 0.1292823132821388, + "99.9999" : 0.1292823132821388, + "100.0" : 0.1292823132821388 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12607663913613557, + 0.12600521034991116, + 0.12688650007613053 + ], + [ + 0.1292823132821388, + 0.12830570033358993, + 0.12842735575218966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013145683190638602, + "scoreError" : 1.8475533071340449E-4, + "scoreConfidence" : [ + 0.012960927859925198, + 0.013330438521352007 + ], + "scorePercentiles" : { + "0.0" : 0.013074028748074876, + "50.0" : 0.013142266174467974, + "90.0" : 0.013234839565532721, + "95.0" : 0.013234839565532721, + "99.0" : 0.013234839565532721, + "99.9" : 0.013234839565532721, + "99.99" : 0.013234839565532721, + "99.999" : 0.013234839565532721, + "99.9999" : 0.013234839565532721, + "100.0" : 0.013234839565532721 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013089071269073804, + 0.013101755788938588, + 0.013074028748074876 + ], + [ + 0.013182776559997363, + 0.013191627212214271, + 0.013234839565532721 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0327181301780206, + "scoreError" : 0.011641240884108813, + "scoreConfidence" : [ + 1.0210768892939117, + 1.0443593710621295 + ], + "scorePercentiles" : { + "0.0" : 1.0278013557040082, + "50.0" : 1.0331959079865263, + "90.0" : 1.0372554411368116, + "95.0" : 1.0372554411368116, + "99.0" : 1.0372554411368116, + "99.9" : 1.0372554411368116, + "99.99" : 1.0372554411368116, + "99.999" : 1.0372554411368116, + "99.9999" : 1.0372554411368116, + "100.0" : 1.0372554411368116 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.031690665015991, + 1.0278013557040082, + 1.0281725106404853 + ], + [ + 1.0372554411368116, + 1.0347011509570616, + 1.036687657613766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010855624609490862, + "scoreError" : 0.0016129789246444564, + "scoreConfidence" : [ + 0.009242645684846406, + 0.012468603534135318 + ], + "scorePercentiles" : { + "0.0" : 0.01028154978779579, + "50.0" : 0.010858672997300044, + "90.0" : 0.011439420927524428, + "95.0" : 0.011439420927524428, + "99.0" : 0.011439420927524428, + "99.9" : 0.011439420927524428, + "99.99" : 0.011439420927524428, + "99.999" : 0.011439420927524428, + "99.9999" : 0.011439420927524428, + "100.0" : 0.011439420927524428 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010407942039574201, + 0.010310381006680963, + 0.01028154978779579 + ], + [ + 0.011439420927524428, + 0.011309403955025887, + 0.01138504994034391 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.323051102738992, + "scoreError" : 0.22578671324912253, + "scoreConfidence" : [ + 3.0972643894898693, + 3.5488378159881147 + ], + "scorePercentiles" : { + "0.0" : 3.233474136393019, + "50.0" : 3.3344086587187345, + "90.0" : 3.399839808293678, + "95.0" : 3.399839808293678, + "99.0" : 3.399839808293678, + "99.9" : 3.399839808293678, + "99.99" : 3.399839808293678, + "99.999" : 3.399839808293678, + "99.9999" : 3.399839808293678, + "100.0" : 3.399839808293678 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2794511114754097, + 3.2401548465025907, + 3.233474136393019 + ], + [ + 3.3960205078071963, + 3.3893662059620597, + 3.399839808293678 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8233421626990425, + "scoreError" : 0.09277570281225515, + "scoreConfidence" : [ + 2.7305664598867874, + 2.9161178655112976 + ], + "scorePercentiles" : { + "0.0" : 2.7830908870339455, + "50.0" : 2.826048434893754, + "90.0" : 2.861434471816881, + "95.0" : 2.861434471816881, + "99.0" : 2.861434471816881, + "99.9" : 2.861434471816881, + "99.99" : 2.861434471816881, + "99.999" : 2.861434471816881, + "99.9999" : 2.861434471816881, + "100.0" : 2.861434471816881 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8418254893435635, + 2.861434471816881, + 2.8524076297775243 + ], + [ + 2.810271380443945, + 2.7830908870339455, + 2.791023117778398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18183386840603266, + "scoreError" : 0.017888929166994777, + "scoreConfidence" : [ + 0.16394493923903788, + 0.19972279757302744 + ], + "scorePercentiles" : { + "0.0" : 0.17586656111286975, + "50.0" : 0.18103952522767514, + "90.0" : 0.18879722628756984, + "95.0" : 0.18879722628756984, + "99.0" : 0.18879722628756984, + "99.9" : 0.18879722628756984, + "99.99" : 0.18879722628756984, + "99.999" : 0.18879722628756984, + "99.9999" : 0.18879722628756984, + "100.0" : 0.18879722628756984 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18564282915645652, + 0.18827697247481878, + 0.18879722628756984 + ], + [ + 0.17586656111286975, + 0.17598340010558733, + 0.17643622129889378 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3294255143815663, + "scoreError" : 0.01278462688370167, + "scoreConfidence" : [ + 0.3166408874978646, + 0.342210141265268 + ], + "scorePercentiles" : { + "0.0" : 0.3248514578677235, + "50.0" : 0.32914625044051615, + "90.0" : 0.33575594117647056, + "95.0" : 0.33575594117647056, + "99.0" : 0.33575594117647056, + "99.9" : 0.33575594117647056, + "99.99" : 0.33575594117647056, + "99.999" : 0.33575594117647056, + "99.9999" : 0.33575594117647056, + "100.0" : 0.33575594117647056 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33575594117647056, + 0.3315880841871415, + 0.33270816088894806 + ], + [ + 0.3267044166938909, + 0.3249450254752234, + 0.3248514578677235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1462685779301067, + "scoreError" : 0.006878577052161618, + "scoreConfidence" : [ + 0.1393900008779451, + 0.1531471549822683 + ], + "scorePercentiles" : { + "0.0" : 0.14338569941069354, + "50.0" : 0.14655260835111644, + "90.0" : 0.14902003106978406, + "95.0" : 0.14902003106978406, + "99.0" : 0.14902003106978406, + "99.9" : 0.14902003106978406, + "99.99" : 0.14902003106978406, + "99.999" : 0.14902003106978406, + "99.9999" : 0.14902003106978406, + "100.0" : 0.14902003106978406 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14902003106978406, + 0.1480221387803434, + 0.14824434741617007 + ], + [ + 0.1438561729817596, + 0.14508307792188951, + 0.14338569941069354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40002628351912356, + "scoreError" : 0.012611016860689536, + "scoreConfidence" : [ + 0.387415266658434, + 0.4126373003798131 + ], + "scorePercentiles" : { + "0.0" : 0.3940947955862069, + "50.0" : 0.3998577084150632, + "90.0" : 0.4057242382343395, + "95.0" : 0.4057242382343395, + "99.0" : 0.4057242382343395, + "99.9" : 0.4057242382343395, + "99.99" : 0.4057242382343395, + "99.999" : 0.4057242382343395, + "99.9999" : 0.4057242382343395, + "100.0" : 0.4057242382343395 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39708418610283897, + 0.39736543489490206, + 0.3940947955862069 + ], + [ + 0.40353906436122994, + 0.4057242382343395, + 0.4023499819352243 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15236921783977786, + "scoreError" : 0.01105649940733485, + "scoreConfidence" : [ + 0.141312718432443, + 0.16342571724711272 + ], + "scorePercentiles" : { + "0.0" : 0.14852456077528592, + "50.0" : 0.1523615217339061, + "90.0" : 0.15635272212928947, + "95.0" : 0.15635272212928947, + "99.0" : 0.15635272212928947, + "99.9" : 0.15635272212928947, + "99.99" : 0.15635272212928947, + "99.999" : 0.15635272212928947, + "99.9999" : 0.15635272212928947, + "100.0" : 0.15635272212928947 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14897401303499336, + 0.14852456077528592, + 0.1488345497693109 + ], + [ + 0.15635272212928947, + 0.15578043089696855, + 0.15574903043281885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04703852858078635, + "scoreError" : 7.881321045162739E-4, + "scoreConfidence" : [ + 0.04625039647627008, + 0.04782666068530263 + ], + "scorePercentiles" : { + "0.0" : 0.046583208736077665, + "50.0" : 0.047166424486323036, + "90.0" : 0.0472888680090226, + "95.0" : 0.0472888680090226, + "99.0" : 0.0472888680090226, + "99.9" : 0.0472888680090226, + "99.99" : 0.0472888680090226, + "99.999" : 0.0472888680090226, + "99.9999" : 0.0472888680090226, + "100.0" : 0.0472888680090226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0471998917627957, + 0.046802493777700814, + 0.046583208736077665 + ], + [ + 0.0472888680090226, + 0.04722375198927092, + 0.04713295720985036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8586794.273687998, + "scoreError" : 136819.62220666892, + "scoreConfidence" : [ + 8449974.651481329, + 8723613.895894667 + ], + "scorePercentiles" : { + "0.0" : 8543041.335610589, + "50.0" : 8573917.744420212, + "90.0" : 8668276.213171577, + "95.0" : 8668276.213171577, + "99.0" : 8668276.213171577, + "99.9" : 8668276.213171577, + "99.99" : 8668276.213171577, + "99.999" : 8668276.213171577, + "99.9999" : 8668276.213171577, + "100.0" : 8668276.213171577 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8668276.213171577, + 8613698.919035314, + 8593692.823883161 + ], + [ + 8547913.685470086, + 8554142.664957264, + 8543041.335610589 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-23T07:28:34Z-e8028d9097760fa289e0439c0c2ec14b36531832-jdk17.json b/performance-results/2025-07-23T07:28:34Z-e8028d9097760fa289e0439c0c2ec14b36531832-jdk17.json new file mode 100644 index 0000000000..cde2d353c1 --- /dev/null +++ b/performance-results/2025-07-23T07:28:34Z-e8028d9097760fa289e0439c0c2ec14b36531832-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3210693322577427, + "scoreError" : 0.04412599747722316, + "scoreConfidence" : [ + 3.2769433347805195, + 3.365195329734966 + ], + "scorePercentiles" : { + "0.0" : 3.311714602616375, + "50.0" : 3.323190266743688, + "90.0" : 3.32618219292722, + "95.0" : 3.32618219292722, + "99.0" : 3.32618219292722, + "99.9" : 3.32618219292722, + "99.99" : 3.32618219292722, + "99.999" : 3.32618219292722, + "99.9999" : 3.32618219292722, + "100.0" : 3.32618219292722 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3202544428868146, + 3.326126090600561 + ], + [ + 3.311714602616375, + 3.32618219292722 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6728462100885109, + "scoreError" : 0.06637088928819275, + "scoreConfidence" : [ + 1.6064753208003182, + 1.7392170993767035 + ], + "scorePercentiles" : { + "0.0" : 1.6614069284180348, + "50.0" : 1.6736975929349045, + "90.0" : 1.6825827260661992, + "95.0" : 1.6825827260661992, + "99.0" : 1.6825827260661992, + "99.9" : 1.6825827260661992, + "99.99" : 1.6825827260661992, + "99.999" : 1.6825827260661992, + "99.9999" : 1.6825827260661992, + "100.0" : 1.6825827260661992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6614069284180348, + 1.6670128426393849 + ], + [ + 1.6803823432304243, + 1.6825827260661992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8403205807665421, + "scoreError" : 0.0409450543545081, + "scoreConfidence" : [ + 0.799375526412034, + 0.8812656351210503 + ], + "scorePercentiles" : { + "0.0" : 0.8346553689345669, + "50.0" : 0.8386182143697944, + "90.0" : 0.8493905253920129, + "95.0" : 0.8493905253920129, + "99.0" : 0.8493905253920129, + "99.9" : 0.8493905253920129, + "99.99" : 0.8493905253920129, + "99.999" : 0.8493905253920129, + "99.9999" : 0.8493905253920129, + "100.0" : 0.8493905253920129 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8346553689345669, + 0.8389997796000715 + ], + [ + 0.8382366491395175, + 0.8493905253920129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.904028462861662, + "scoreError" : 0.3210965131777212, + "scoreConfidence" : [ + 15.58293194968394, + 16.225124976039382 + ], + "scorePercentiles" : { + "0.0" : 15.772808742468323, + "50.0" : 15.885731976728243, + "90.0" : 16.039565463012917, + "95.0" : 16.039565463012917, + "99.0" : 16.039565463012917, + "99.9" : 16.039565463012917, + "99.99" : 16.039565463012917, + "99.999" : 16.039565463012917, + "99.9999" : 16.039565463012917, + "100.0" : 16.039565463012917 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.815260802087998, + 15.827557073905762, + 15.772808742468323 + ], + [ + 16.039565463012917, + 15.943906879550724, + 16.025071816144248 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2663.424897868778, + "scoreError" : 316.21383478370404, + "scoreConfidence" : [ + 2347.211063085074, + 2979.638732652482 + ], + "scorePercentiles" : { + "0.0" : 2556.047755010782, + "50.0" : 2664.87683489745, + "90.0" : 2776.4688962236846, + "95.0" : 2776.4688962236846, + "99.0" : 2776.4688962236846, + "99.9" : 2776.4688962236846, + "99.99" : 2776.4688962236846, + "99.999" : 2776.4688962236846, + "99.9999" : 2776.4688962236846, + "100.0" : 2776.4688962236846 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2568.7994825505266, + 2556.047755010782, + 2557.237235957458 + ], + [ + 2776.4688962236846, + 2761.041830225842, + 2760.9541872443733 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74369.42246699448, + "scoreError" : 2478.9298893132095, + "scoreConfidence" : [ + 71890.49257768127, + 76848.35235630769 + ], + "scorePercentiles" : { + "0.0" : 73430.44287823535, + "50.0" : 74350.25196964684, + "90.0" : 75243.70201380273, + "95.0" : 75243.70201380273, + "99.0" : 75243.70201380273, + "99.9" : 75243.70201380273, + "99.99" : 75243.70201380273, + "99.999" : 75243.70201380273, + "99.9999" : 75243.70201380273, + "100.0" : 75243.70201380273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75206.51453895739, + 75064.75683004271, + 75243.70201380273 + ], + [ + 73430.44287823535, + 73635.37143167769, + 73635.74710925095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 345.8325098273844, + "scoreError" : 5.333215622290192, + "scoreConfidence" : [ + 340.4992942050942, + 351.1657254496746 + ], + "scorePercentiles" : { + "0.0" : 343.0816229357919, + "50.0" : 346.2311985247809, + "90.0" : 347.89370235862117, + "95.0" : 347.89370235862117, + "99.0" : 347.89370235862117, + "99.9" : 347.89370235862117, + "99.99" : 347.89370235862117, + "99.999" : 347.89370235862117, + "99.9999" : 347.89370235862117, + "100.0" : 347.89370235862117 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.89084187364006, + 347.3717482904487, + 347.89370235862117 + ], + [ + 345.57155517592173, + 343.0816229357919, + 344.1855883298826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.8763820125598, + "scoreError" : 2.1504869059830325, + "scoreConfidence" : [ + 111.72589510657677, + 116.02686891854283 + ], + "scorePercentiles" : { + "0.0" : 112.93312515921971, + "50.0" : 114.02124266844669, + "90.0" : 114.78958134174972, + "95.0" : 114.78958134174972, + "99.0" : 114.78958134174972, + "99.9" : 114.78958134174972, + "99.99" : 114.78958134174972, + "99.999" : 114.78958134174972, + "99.9999" : 114.78958134174972, + "100.0" : 114.78958134174972 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.78958134174972, + 114.20290144982496, + 114.47976557550679 + ], + [ + 112.93312515921971, + 113.83958388706841, + 113.0133346619891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062498624819781384, + "scoreError" : 3.5393198837301905E-4, + "scoreConfidence" : [ + 0.06214469283140837, + 0.06285255680815441 + ], + "scorePercentiles" : { + "0.0" : 0.062321238394376206, + "50.0" : 0.06246576123335251, + "90.0" : 0.06265961065196278, + "95.0" : 0.06265961065196278, + "99.0" : 0.06265961065196278, + "99.9" : 0.06265961065196278, + "99.99" : 0.06265961065196278, + "99.999" : 0.06265961065196278, + "99.9999" : 0.06265961065196278, + "100.0" : 0.06265961065196278 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06265961065196278, + 0.06263016651844429, + 0.06244921088720001 + ], + [ + 0.062321238394376206, + 0.062479260596291296, + 0.062452261870413736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.82931855293523E-4, + "scoreError" : 4.80534574179295E-5, + "scoreConfidence" : [ + 3.348783978755935E-4, + 4.309853127114525E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6712111417559713E-4, + "50.0" : 3.8238391221777574E-4, + "90.0" : 3.9972883960500013E-4, + "95.0" : 3.9972883960500013E-4, + "99.0" : 3.9972883960500013E-4, + "99.9" : 3.9972883960500013E-4, + "99.99" : 3.9972883960500013E-4, + "99.999" : 3.9972883960500013E-4, + "99.9999" : 3.9972883960500013E-4, + "100.0" : 3.9972883960500013E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9882352020140645E-4, + 3.9972883960500013E-4, + 3.9711368449191724E-4 + ], + [ + 3.671498333435828E-4, + 3.6712111417559713E-4, + 3.6765413994363424E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1280177638901225, + "scoreError" : 0.004624635539129939, + "scoreConfidence" : [ + 0.12339312835099257, + 0.13264239942925246 + ], + "scorePercentiles" : { + "0.0" : 0.12643302672735318, + "50.0" : 0.1279505834810614, + "90.0" : 0.12986649093553582, + "95.0" : 0.12986649093553582, + "99.0" : 0.12986649093553582, + "99.9" : 0.12986649093553582, + "99.99" : 0.12986649093553582, + "99.999" : 0.12986649093553582, + "99.9999" : 0.12986649093553582, + "100.0" : 0.12986649093553582 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12663277876408763, + 0.12650738700536382, + 0.12643302672735318 + ], + [ + 0.12939851171035946, + 0.12986649093553582, + 0.12926838819803516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013281114539635106, + "scoreError" : 7.986062210596716E-5, + "scoreConfidence" : [ + 0.013201253917529139, + 0.013360975161741073 + ], + "scorePercentiles" : { + "0.0" : 0.013235320004658772, + "50.0" : 0.013280349961591307, + "90.0" : 0.013316014101480056, + "95.0" : 0.013316014101480056, + "99.0" : 0.013316014101480056, + "99.9" : 0.013316014101480056, + "99.99" : 0.013316014101480056, + "99.999" : 0.013316014101480056, + "99.9999" : 0.013316014101480056, + "100.0" : 0.013316014101480056 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013235320004658772, + 0.013276786587980696, + 0.01326948811269355 + ], + [ + 0.013316014101480056, + 0.01328391333520192, + 0.013305165095795636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0165166842574735, + "scoreError" : 0.0352455868899257, + "scoreConfidence" : [ + 0.9812710973675478, + 1.0517622711473993 + ], + "scorePercentiles" : { + "0.0" : 1.0028103538554096, + "50.0" : 1.0171845207526777, + "90.0" : 1.0288915903292182, + "95.0" : 1.0288915903292182, + "99.0" : 1.0288915903292182, + "99.9" : 1.0288915903292182, + "99.99" : 1.0288915903292182, + "99.999" : 1.0288915903292182, + "99.9999" : 1.0288915903292182, + "100.0" : 1.0288915903292182 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.026361710591133, + 1.028337266529563, + 1.0288915903292182 + ], + [ + 1.0046918533252964, + 1.0028103538554096, + 1.0080073309142223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01152877189871051, + "scoreError" : 9.0023643687256E-4, + "scoreConfidence" : [ + 0.010628535461837951, + 0.01242900833558307 + ], + "scorePercentiles" : { + "0.0" : 0.011226953346446085, + "50.0" : 0.011510304062614371, + "90.0" : 0.01185988414373814, + "95.0" : 0.01185988414373814, + "99.0" : 0.01185988414373814, + "99.9" : 0.01185988414373814, + "99.99" : 0.01185988414373814, + "99.999" : 0.01185988414373814, + "99.9999" : 0.01185988414373814, + "100.0" : 0.01185988414373814 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011830040583159633, + 0.011771952249446143, + 0.01185988414373814 + ], + [ + 0.0112486558757826, + 0.011235145193690455, + 0.011226953346446085 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.380113235191704, + "scoreError" : 0.34118619387210386, + "scoreConfidence" : [ + 3.0389270413196003, + 3.7212994290638077 + ], + "scorePercentiles" : { + "0.0" : 3.246664155094095, + "50.0" : 3.3967437457418215, + "90.0" : 3.4949635296995107, + "95.0" : 3.4949635296995107, + "99.0" : 3.4949635296995107, + "99.9" : 3.4949635296995107, + "99.99" : 3.4949635296995107, + "99.999" : 3.4949635296995107, + "99.9999" : 3.4949635296995107, + "100.0" : 3.4949635296995107 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4928898324022346, + 3.4949635296995107, + 3.478922445757997 + ], + [ + 3.314565045725646, + 3.252674402470741, + 3.246664155094095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.890360681688394, + "scoreError" : 0.09906966435672872, + "scoreConfidence" : [ + 2.791291017331665, + 2.989430346045123 + ], + "scorePercentiles" : { + "0.0" : 2.846870462852263, + "50.0" : 2.900062499935226, + "90.0" : 2.924440034502924, + "95.0" : 2.924440034502924, + "99.0" : 2.924440034502924, + "99.9" : 2.924440034502924, + "99.99" : 2.924440034502924, + "99.999" : 2.924440034502924, + "99.9999" : 2.924440034502924, + "100.0" : 2.924440034502924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.924440034502924, + 2.9199205772262773, + 2.916818213764946 + ], + [ + 2.8833067861055057, + 2.846870462852263, + 2.8508080156784494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17554518688559415, + "scoreError" : 0.004750111818234367, + "scoreConfidence" : [ + 0.17079507506735978, + 0.18029529870382852 + ], + "scorePercentiles" : { + "0.0" : 0.17391181494556712, + "50.0" : 0.175523412460851, + "90.0" : 0.17719244254655633, + "95.0" : 0.17719244254655633, + "99.0" : 0.17719244254655633, + "99.9" : 0.17719244254655633, + "99.99" : 0.17719244254655633, + "99.999" : 0.17719244254655633, + "99.9999" : 0.17719244254655633, + "100.0" : 0.17719244254655633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17391181494556712, + 0.17397717526096032, + 0.17411743329735 + ], + [ + 0.17714286363877915, + 0.176929391624352, + 0.17719244254655633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3284708466388047, + "scoreError" : 0.025412264021217428, + "scoreConfidence" : [ + 0.3030585826175873, + 0.35388311066002215 + ], + "scorePercentiles" : { + "0.0" : 0.3199065666986564, + "50.0" : 0.3280011422187443, + "90.0" : 0.33808313735632184, + "95.0" : 0.33808313735632184, + "99.0" : 0.33808313735632184, + "99.9" : 0.33808313735632184, + "99.99" : 0.33808313735632184, + "99.999" : 0.33808313735632184, + "99.9999" : 0.33808313735632184, + "100.0" : 0.33808313735632184 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33651154667205063, + 0.335530231337024, + 0.33808313735632184 + ], + [ + 0.320321544668311, + 0.3199065666986564, + 0.32047205310046467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14497358251569623, + "scoreError" : 0.008356850940807696, + "scoreConfidence" : [ + 0.13661673157488852, + 0.15333043345650393 + ], + "scorePercentiles" : { + "0.0" : 0.14197348209037863, + "50.0" : 0.1449930684363192, + "90.0" : 0.14793544317223628, + "95.0" : 0.14793544317223628, + "99.0" : 0.14793544317223628, + "99.9" : 0.14793544317223628, + "99.99" : 0.14793544317223628, + "99.999" : 0.14793544317223628, + "99.9999" : 0.14793544317223628, + "100.0" : 0.14793544317223628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14197348209037863, + 0.1422311287299104, + 0.14258538193483994 + ], + [ + 0.14793544317223628, + 0.14771530422901372, + 0.14740075493779847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.41140711342600295, + "scoreError" : 0.019916798435813315, + "scoreConfidence" : [ + 0.3914903149901896, + 0.4313239118618163 + ], + "scorePercentiles" : { + "0.0" : 0.4047791495992876, + "50.0" : 0.41058531593608677, + "90.0" : 0.4196176641910037, + "95.0" : 0.4196176641910037, + "99.0" : 0.4196176641910037, + "99.9" : 0.4196176641910037, + "99.99" : 0.4196176641910037, + "99.999" : 0.4196176641910037, + "99.9999" : 0.4196176641910037, + "100.0" : 0.4196176641910037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4051201206400648, + 0.4051212531901965, + 0.4047791495992876 + ], + [ + 0.4196176641910037, + 0.41775511425348816, + 0.41604937868197706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16088846584649133, + "scoreError" : 0.012547586364348488, + "scoreConfidence" : [ + 0.14834087948214283, + 0.17343605221083983 + ], + "scorePercentiles" : { + "0.0" : 0.15652884564934963, + "50.0" : 0.16068996562679355, + "90.0" : 0.16583116544507828, + "95.0" : 0.16583116544507828, + "99.0" : 0.16583116544507828, + "99.9" : 0.16583116544507828, + "99.99" : 0.16583116544507828, + "99.999" : 0.16583116544507828, + "99.9999" : 0.16583116544507828, + "100.0" : 0.16583116544507828 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1572895279258875, + 0.15652884564934963, + 0.1567057351876518 + ], + [ + 0.16583116544507828, + 0.1648851175432811, + 0.16409040332769964 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04837959948905729, + "scoreError" : 0.0037902092083928873, + "scoreConfidence" : [ + 0.0445893902806644, + 0.05216980869745018 + ], + "scorePercentiles" : { + "0.0" : 0.04707020434809212, + "50.0" : 0.04836821901307904, + "90.0" : 0.04966591475952083, + "95.0" : 0.04966591475952083, + "99.0" : 0.04966591475952083, + "99.9" : 0.04966591475952083, + "99.99" : 0.04966591475952083, + "99.999" : 0.04966591475952083, + "99.9999" : 0.04966591475952083, + "100.0" : 0.04966591475952083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04954455266769388, + 0.04966591475952083, + 0.049626549759811026 + ], + [ + 0.04719188535846421, + 0.04717849004076164, + 0.04707020434809212 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9043415.83336745, + "scoreError" : 434704.9609345177, + "scoreConfidence" : [ + 8608710.872432932, + 9478120.794301968 + ], + "scorePercentiles" : { + "0.0" : 8834682.399293287, + "50.0" : 9060342.61479463, + "90.0" : 9223578.02764977, + "95.0" : 9223578.02764977, + "99.0" : 9223578.02764977, + "99.9" : 9223578.02764977, + "99.99" : 9223578.02764977, + "99.999" : 9223578.02764977, + "99.9999" : 9223578.02764977, + "100.0" : 9223578.02764977 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8989382.492362984, + 8834682.399293287, + 8911410.376669634 + ], + [ + 9223578.02764977, + 9131302.737226278, + 9170138.96700275 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-25T00:33:09Z-378eb2b1ff6cadd27994b2e8fa23fba57c6286ab-jdk17.json b/performance-results/2025-07-25T00:33:09Z-378eb2b1ff6cadd27994b2e8fa23fba57c6286ab-jdk17.json new file mode 100644 index 0000000000..0fcb044cd0 --- /dev/null +++ b/performance-results/2025-07-25T00:33:09Z-378eb2b1ff6cadd27994b2e8fa23fba57c6286ab-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3066775275726714, + "scoreError" : 0.033919743261016475, + "scoreConfidence" : [ + 3.272757784311655, + 3.3405972708336877 + ], + "scorePercentiles" : { + "0.0" : 3.301072458041701, + "50.0" : 3.306422217105671, + "90.0" : 3.3127932180376423, + "95.0" : 3.3127932180376423, + "99.0" : 3.3127932180376423, + "99.9" : 3.3127932180376423, + "99.99" : 3.3127932180376423, + "99.999" : 3.3127932180376423, + "99.9999" : 3.3127932180376423, + "100.0" : 3.3127932180376423 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3038039283157077, + 3.3127932180376423 + ], + [ + 3.301072458041701, + 3.3090405058956347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6814308976912047, + "scoreError" : 0.022089312539861548, + "scoreConfidence" : [ + 1.6593415851513431, + 1.7035202102310663 + ], + "scorePercentiles" : { + "0.0" : 1.6785182901910285, + "50.0" : 1.6807376668985228, + "90.0" : 1.6857299667767454, + "95.0" : 1.6857299667767454, + "99.0" : 1.6857299667767454, + "99.9" : 1.6857299667767454, + "99.99" : 1.6857299667767454, + "99.999" : 1.6857299667767454, + "99.9999" : 1.6857299667767454, + "100.0" : 1.6857299667767454 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6788496992175892, + 1.6785182901910285 + ], + [ + 1.6826256345794561, + 1.6857299667767454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8381848165625602, + "scoreError" : 0.04411699408186375, + "scoreConfidence" : [ + 0.7940678224806964, + 0.8823018106444239 + ], + "scorePercentiles" : { + "0.0" : 0.8299295997776214, + "50.0" : 0.838692253199008, + "90.0" : 0.8454251600746033, + "95.0" : 0.8454251600746033, + "99.0" : 0.8454251600746033, + "99.9" : 0.8454251600746033, + "99.99" : 0.8454251600746033, + "99.999" : 0.8454251600746033, + "99.9999" : 0.8454251600746033, + "100.0" : 0.8454251600746033 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8299295997776214, + 0.8454251600746033 + ], + [ + 0.8356308875372876, + 0.8417536188607282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.004961566280702, + "scoreError" : 0.1528592055047278, + "scoreConfidence" : [ + 15.852102360775975, + 16.15782077178543 + ], + "scorePercentiles" : { + "0.0" : 15.955488873780125, + "50.0" : 15.988206082006558, + "90.0" : 16.10950939067394, + "95.0" : 16.10950939067394, + "99.0" : 16.10950939067394, + "99.9" : 16.10950939067394, + "99.99" : 16.10950939067394, + "99.999" : 16.10950939067394, + "99.9999" : 16.10950939067394, + "100.0" : 16.10950939067394 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.955488873780125, + 16.10950939067394, + 15.991094934683712 + ], + [ + 15.985317229329404, + 15.975892928959603, + 16.01246604025744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2582.118025703376, + "scoreError" : 188.36873932962732, + "scoreConfidence" : [ + 2393.749286373749, + 2770.4867650330034 + ], + "scorePercentiles" : { + "0.0" : 2519.5276419027423, + "50.0" : 2576.4650052428824, + "90.0" : 2663.3688734556135, + "95.0" : 2663.3688734556135, + "99.0" : 2663.3688734556135, + "99.9" : 2663.3688734556135, + "99.99" : 2663.3688734556135, + "99.999" : 2663.3688734556135, + "99.9999" : 2663.3688734556135, + "100.0" : 2663.3688734556135 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2526.3379058760356, + 2519.5276419027423, + 2519.592969574141 + ], + [ + 2626.592104609729, + 2663.3688734556135, + 2637.2886588019974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75929.43713956332, + "scoreError" : 1795.725219760547, + "scoreConfidence" : [ + 74133.71191980278, + 77725.16235932386 + ], + "scorePercentiles" : { + "0.0" : 75254.86153805364, + "50.0" : 75898.6036985468, + "90.0" : 76573.93021625052, + "95.0" : 76573.93021625052, + "99.0" : 76573.93021625052, + "99.9" : 76573.93021625052, + "99.99" : 76573.93021625052, + "99.999" : 76573.93021625052, + "99.9999" : 76573.93021625052, + "100.0" : 76573.93021625052 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76389.67320304408, + 76573.93021625052, + 76563.3402721159 + ], + [ + 75407.53419404951, + 75387.28341386627, + 75254.86153805364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 336.6049353290876, + "scoreError" : 16.489521506150968, + "scoreConfidence" : [ + 320.1154138229366, + 353.0944568352386 + ], + "scorePercentiles" : { + "0.0" : 331.32458413008754, + "50.0" : 335.20008333375665, + "90.0" : 347.06334480071985, + "95.0" : 347.06334480071985, + "99.0" : 347.06334480071985, + "99.9" : 347.06334480071985, + "99.99" : 347.06334480071985, + "99.999" : 347.06334480071985, + "99.9999" : 347.06334480071985, + "100.0" : 347.06334480071985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 332.05922428946457, + 333.42823124036664, + 331.32458413008754 + ], + [ + 336.9719354271467, + 338.78229208674026, + 347.06334480071985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.60582690655242, + "scoreError" : 11.173389818839349, + "scoreConfidence" : [ + 96.43243708771307, + 118.77921672539178 + ], + "scorePercentiles" : { + "0.0" : 102.11801195009656, + "50.0" : 108.69010971957573, + "90.0" : 111.67494993512767, + "95.0" : 111.67494993512767, + "99.0" : 111.67494993512767, + "99.9" : 111.67494993512767, + "99.99" : 111.67494993512767, + "99.999" : 111.67494993512767, + "99.9999" : 111.67494993512767, + "100.0" : 111.67494993512767 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.11801195009656, + 103.77459901875596, + 106.93163472430241 + ], + [ + 110.68718109618288, + 110.44858471484906, + 111.67494993512767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06257742894897945, + "scoreError" : 4.616417683000458E-4, + "scoreConfidence" : [ + 0.06211578718067941, + 0.0630390707172795 + ], + "scorePercentiles" : { + "0.0" : 0.0623212224264935, + "50.0" : 0.0625570274063876, + "90.0" : 0.06276186021991263, + "95.0" : 0.06276186021991263, + "99.0" : 0.06276186021991263, + "99.9" : 0.06276186021991263, + "99.99" : 0.06276186021991263, + "99.999" : 0.06276186021991263, + "99.9999" : 0.06276186021991263, + "100.0" : 0.06276186021991263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06256933182543407, + 0.0623212224264935, + 0.06275283901655392 + ], + [ + 0.06251459721814147, + 0.06254472298734114, + 0.06276186021991263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.804979073315174E-4, + "scoreError" : 3.1290959030715905E-5, + "scoreConfidence" : [ + 3.492069483008015E-4, + 4.117888663622333E-4 + ], + "scorePercentiles" : { + "0.0" : 3.686052191223459E-4, + "50.0" : 3.805710213074775E-4, + "90.0" : 3.9295602562939327E-4, + "95.0" : 3.9295602562939327E-4, + "99.0" : 3.9295602562939327E-4, + "99.9" : 3.9295602562939327E-4, + "99.99" : 3.9295602562939327E-4, + "99.999" : 3.9295602562939327E-4, + "99.9999" : 3.9295602562939327E-4, + "100.0" : 3.9295602562939327E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7203306319338707E-4, + 3.706584066808534E-4, + 3.686052191223459E-4 + ], + [ + 3.89108979421568E-4, + 3.8962574994155693E-4, + 3.9295602562939327E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12677889442068035, + "scoreError" : 0.008951730346661569, + "scoreConfidence" : [ + 0.11782716407401879, + 0.13573062476734193 + ], + "scorePercentiles" : { + "0.0" : 0.12342886066403357, + "50.0" : 0.12693422320553238, + "90.0" : 0.12988056201052017, + "95.0" : 0.12988056201052017, + "99.0" : 0.12988056201052017, + "99.9" : 0.12988056201052017, + "99.99" : 0.12988056201052017, + "99.999" : 0.12988056201052017, + "99.9999" : 0.12988056201052017, + "100.0" : 0.12988056201052017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12956015696943785, + 0.12988056201052017, + 0.12959982908685622 + ], + [ + 0.12430828944162689, + 0.12389566835160751, + 0.12342886066403357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013185124640204576, + "scoreError" : 9.870438880579569E-5, + "scoreConfidence" : [ + 0.01308642025139878, + 0.013283829029010373 + ], + "scorePercentiles" : { + "0.0" : 0.013149310564282202, + "50.0" : 0.01317385008032829, + "90.0" : 0.013235472953066414, + "95.0" : 0.013235472953066414, + "99.0" : 0.013235472953066414, + "99.9" : 0.013235472953066414, + "99.99" : 0.013235472953066414, + "99.999" : 0.013235472953066414, + "99.9999" : 0.013235472953066414, + "100.0" : 0.013235472953066414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013149310564282202, + 0.013156921266151537, + 0.013176660858920927 + ], + [ + 0.013171039301735651, + 0.013221342897070722, + 0.013235472953066414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0354221684983729, + "scoreError" : 0.027954869197301387, + "scoreConfidence" : [ + 1.0074672993010716, + 1.0633770376956742 + ], + "scorePercentiles" : { + "0.0" : 1.025096790692907, + "50.0" : 1.034103071230585, + "90.0" : 1.047773467993714, + "95.0" : 1.047773467993714, + "99.0" : 1.047773467993714, + "99.9" : 1.047773467993714, + "99.99" : 1.047773467993714, + "99.999" : 1.047773467993714, + "99.9999" : 1.047773467993714, + "100.0" : 1.047773467993714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.047773467993714, + 1.0442930651629072, + 1.0407120288271412 + ], + [ + 1.025096790692907, + 1.0271635446795397, + 1.0274941136340285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01068772594921502, + "scoreError" : 1.462473792761726E-4, + "scoreConfidence" : [ + 0.010541478569938846, + 0.010833973328491193 + ], + "scorePercentiles" : { + "0.0" : 0.010607628229144347, + "50.0" : 0.01068450706691373, + "90.0" : 0.01077134530715823, + "95.0" : 0.01077134530715823, + "99.0" : 0.01077134530715823, + "99.9" : 0.01077134530715823, + "99.99" : 0.01077134530715823, + "99.999" : 0.01077134530715823, + "99.9999" : 0.01077134530715823, + "100.0" : 0.01077134530715823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010607628229144347, + 0.010680124086609009, + 0.01068332102292151 + ], + [ + 0.01068569311090595, + 0.010698243938551072, + 0.01077134530715823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.279232238968176, + "scoreError" : 0.12999334086418882, + "scoreConfidence" : [ + 3.149238898103987, + 3.4092255798323645 + ], + "scorePercentiles" : { + "0.0" : 3.228267479018722, + "50.0" : 3.278079688598224, + "90.0" : 3.338102288192128, + "95.0" : 3.338102288192128, + "99.0" : 3.338102288192128, + "99.9" : 3.338102288192128, + "99.99" : 3.338102288192128, + "99.999" : 3.338102288192128, + "99.9999" : 3.338102288192128, + "100.0" : 3.338102288192128 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.252843413524057, + 3.235263989003881, + 3.228267479018722 + ], + [ + 3.303315963672391, + 3.338102288192128, + 3.317600300397878 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.942751566759662, + "scoreError" : 0.033475477865511326, + "scoreConfidence" : [ + 2.909276088894151, + 2.9762270446251735 + ], + "scorePercentiles" : { + "0.0" : 2.9285283704245972, + "50.0" : 2.9419997167171643, + "90.0" : 2.95762009668835, + "95.0" : 2.95762009668835, + "99.0" : 2.95762009668835, + "99.9" : 2.95762009668835, + "99.99" : 2.95762009668835, + "99.999" : 2.95762009668835, + "99.9999" : 2.95762009668835, + "100.0" : 2.95762009668835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9285283704245972, + 2.95762009668835, + 2.9320072486074467 + ], + [ + 2.9463571843888072, + 2.9543542514032497, + 2.9376422490455214 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1780843687883823, + "scoreError" : 0.00337053557336736, + "scoreConfidence" : [ + 0.17471383321501494, + 0.18145490436174966 + ], + "scorePercentiles" : { + "0.0" : 0.17633287293694455, + "50.0" : 0.17868748060792106, + "90.0" : 0.17911248701461527, + "95.0" : 0.17911248701461527, + "99.0" : 0.17911248701461527, + "99.9" : 0.17911248701461527, + "99.99" : 0.17911248701461527, + "99.999" : 0.17911248701461527, + "99.9999" : 0.17911248701461527, + "100.0" : 0.17911248701461527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17858500491097737, + 0.1767861157211802, + 0.17633287293694455 + ], + [ + 0.17889977584171168, + 0.17878995630486474, + 0.17911248701461527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3334283231280681, + "scoreError" : 0.018617853315637842, + "scoreConfidence" : [ + 0.3148104698124302, + 0.35204617644370595 + ], + "scorePercentiles" : { + "0.0" : 0.32690004857637867, + "50.0" : 0.33342136438463, + "90.0" : 0.33975365040429434, + "95.0" : 0.33975365040429434, + "99.0" : 0.33975365040429434, + "99.9" : 0.33975365040429434, + "99.99" : 0.33975365040429434, + "99.999" : 0.33975365040429434, + "99.9999" : 0.33975365040429434, + "100.0" : 0.33975365040429434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32787988878688523, + 0.32690004857637867, + 0.3273588003142595 + ], + [ + 0.3389628399823747, + 0.33971471070421577, + 0.33975365040429434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14758968251906296, + "scoreError" : 0.003533857499484376, + "scoreConfidence" : [ + 0.1440558250195786, + 0.15112354001854733 + ], + "scorePercentiles" : { + "0.0" : 0.14604092429685447, + "50.0" : 0.14751047342677978, + "90.0" : 0.14905529530041287, + "95.0" : 0.14905529530041287, + "99.0" : 0.14905529530041287, + "99.9" : 0.14905529530041287, + "99.99" : 0.14905529530041287, + "99.999" : 0.14905529530041287, + "99.9999" : 0.14905529530041287, + "100.0" : 0.14905529530041287 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14905529530041287, + 0.1482887649099914, + 0.14874505205931787 + ], + [ + 0.14673218194356816, + 0.14667587660423298, + 0.14604092429685447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4102380454104919, + "scoreError" : 0.01905155753606237, + "scoreConfidence" : [ + 0.39118648787442956, + 0.42928960294655427 + ], + "scorePercentiles" : { + "0.0" : 0.40432925112198276, + "50.0" : 0.40806549427284267, + "90.0" : 0.4200787366210199, + "95.0" : 0.4200787366210199, + "99.0" : 0.4200787366210199, + "99.9" : 0.4200787366210199, + "99.99" : 0.4200787366210199, + "99.999" : 0.4200787366210199, + "99.9999" : 0.4200787366210199, + "100.0" : 0.4200787366210199 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40432925112198276, + 0.40499237293969953, + 0.4045022773126239 + ], + [ + 0.4200787366210199, + 0.41638701886163965, + 0.41113861560598586 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15779309849350384, + "scoreError" : 0.004036259275626001, + "scoreConfidence" : [ + 0.15375683921787783, + 0.16182935776912985 + ], + "scorePercentiles" : { + "0.0" : 0.156635180784412, + "50.0" : 0.15725132103513056, + "90.0" : 0.16036106122416255, + "95.0" : 0.16036106122416255, + "99.0" : 0.16036106122416255, + "99.9" : 0.16036106122416255, + "99.99" : 0.16036106122416255, + "99.999" : 0.16036106122416255, + "99.9999" : 0.16036106122416255, + "100.0" : 0.16036106122416255 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.156635180784412, + 0.15675691365959182, + 0.1568912394728585 + ], + [ + 0.16036106122416255, + 0.15850279322259558, + 0.1576114025974026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046463276420450415, + "scoreError" : 0.0018381035938579088, + "scoreConfidence" : [ + 0.04462517282659251, + 0.04830138001430832 + ], + "scorePercentiles" : { + "0.0" : 0.04589555564530564, + "50.0" : 0.04632686305658129, + "90.0" : 0.047575926943680596, + "95.0" : 0.047575926943680596, + "99.0" : 0.047575926943680596, + "99.9" : 0.047575926943680596, + "99.99" : 0.047575926943680596, + "99.999" : 0.047575926943680596, + "99.9999" : 0.047575926943680596, + "100.0" : 0.047575926943680596 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04594306312941047, + 0.04589555564530564, + 0.04599624998045195 + ], + [ + 0.047575926943680596, + 0.04671138669114316, + 0.046657476132710624 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9459466.352530636, + "scoreError" : 635263.0245088574, + "scoreConfidence" : [ + 8824203.328021778, + 1.0094729377039494E7 + ], + "scorePercentiles" : { + "0.0" : 9219518.085714286, + "50.0" : 9453558.55638749, + "90.0" : 9734180.823929962, + "95.0" : 9734180.823929962, + "99.0" : 9734180.823929962, + "99.9" : 9734180.823929962, + "99.99" : 9734180.823929962, + "99.999" : 9734180.823929962, + "99.9999" : 9734180.823929962, + "100.0" : 9734180.823929962 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9219518.085714286, + 9287835.073351903, + 9263195.210185185 + ], + [ + 9632786.882579403, + 9619282.039423076, + 9734180.823929962 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-27T09:24:22Z-b09381df9d22c7e0cf40fbec37c0c31777cd1f1c-jdk17.json b/performance-results/2025-07-27T09:24:22Z-b09381df9d22c7e0cf40fbec37c0c31777cd1f1c-jdk17.json new file mode 100644 index 0000000000..2bfb72f2d0 --- /dev/null +++ b/performance-results/2025-07-27T09:24:22Z-b09381df9d22c7e0cf40fbec37c0c31777cd1f1c-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3480527247230194, + "scoreError" : 0.012743480511871318, + "scoreConfidence" : [ + 3.3353092442111483, + 3.3607962052348905 + ], + "scorePercentiles" : { + "0.0" : 3.3455154146994603, + "50.0" : 3.3483735517415854, + "90.0" : 3.349948380709445, + "95.0" : 3.349948380709445, + "99.0" : 3.349948380709445, + "99.9" : 3.349948380709445, + "99.99" : 3.349948380709445, + "99.999" : 3.349948380709445, + "99.9999" : 3.349948380709445, + "100.0" : 3.349948380709445 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3455154146994603, + 3.3492190810125106 + ], + [ + 3.3475280224706605, + 3.349948380709445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6899168268853022, + "scoreError" : 0.07319984246382837, + "scoreConfidence" : [ + 1.616716984421474, + 1.7631166693491305 + ], + "scorePercentiles" : { + "0.0" : 1.6758231560635783, + "50.0" : 1.692186231166425, + "90.0" : 1.6994716891447805, + "95.0" : 1.6994716891447805, + "99.0" : 1.6994716891447805, + "99.9" : 1.6994716891447805, + "99.99" : 1.6994716891447805, + "99.999" : 1.6994716891447805, + "99.9999" : 1.6994716891447805, + "100.0" : 1.6994716891447805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.698694951104173, + 1.6994716891447805 + ], + [ + 1.6758231560635783, + 1.6856775112286773 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8496055007675353, + "scoreError" : 0.024271144244446485, + "scoreConfidence" : [ + 0.8253343565230888, + 0.8738766450119817 + ], + "scorePercentiles" : { + "0.0" : 0.8460206409848652, + "50.0" : 0.8487520857991151, + "90.0" : 0.8548971904870462, + "95.0" : 0.8548971904870462, + "99.0" : 0.8548971904870462, + "99.9" : 0.8548971904870462, + "99.99" : 0.8548971904870462, + "99.999" : 0.8548971904870462, + "99.9999" : 0.8548971904870462, + "100.0" : 0.8548971904870462 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8486731288187406, + 0.8548971904870462 + ], + [ + 0.8460206409848652, + 0.8488310427794895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.375572927204825, + "scoreError" : 0.32121140463545256, + "scoreConfidence" : [ + 16.054361522569373, + 16.696784331840277 + ], + "scorePercentiles" : { + "0.0" : 16.223867171282226, + "50.0" : 16.385003305280673, + "90.0" : 16.48545098231728, + "95.0" : 16.48545098231728, + "99.0" : 16.48545098231728, + "99.9" : 16.48545098231728, + "99.99" : 16.48545098231728, + "99.999" : 16.48545098231728, + "99.9999" : 16.48545098231728, + "100.0" : 16.48545098231728 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.303640931884864, + 16.223867171282226, + 16.29530655026829 + ], + [ + 16.466365678676482, + 16.47880624879981, + 16.48545098231728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2752.0578556027504, + "scoreError" : 123.19634072686533, + "scoreConfidence" : [ + 2628.861514875885, + 2875.2541963296158 + ], + "scorePercentiles" : { + "0.0" : 2710.2566488690954, + "50.0" : 2752.0432644794128, + "90.0" : 2792.8334573625502, + "95.0" : 2792.8334573625502, + "99.0" : 2792.8334573625502, + "99.9" : 2792.8334573625502, + "99.99" : 2792.8334573625502, + "99.999" : 2792.8334573625502, + "99.9999" : 2792.8334573625502, + "100.0" : 2792.8334573625502 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2712.841558289169, + 2710.2566488690954, + 2712.7954990856365 + ], + [ + 2792.3749993403962, + 2792.8334573625502, + 2791.244970669656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75688.79805559274, + "scoreError" : 6403.278749229374, + "scoreConfidence" : [ + 69285.51930636336, + 82092.0768048221 + ], + "scorePercentiles" : { + "0.0" : 73588.24872656632, + "50.0" : 75665.19656631522, + "90.0" : 77812.64230236896, + "95.0" : 77812.64230236896, + "99.0" : 77812.64230236896, + "99.9" : 77812.64230236896, + "99.99" : 77812.64230236896, + "99.999" : 77812.64230236896, + "99.9999" : 77812.64230236896, + "100.0" : 77812.64230236896 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77700.82911163302, + 77812.64230236896, + 77805.41060635136 + ], + [ + 73588.24872656632, + 73629.56402099741, + 73596.09356563933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 365.8627288594442, + "scoreError" : 10.42048602500302, + "scoreConfidence" : [ + 355.4422428344412, + 376.2832148844472 + ], + "scorePercentiles" : { + "0.0" : 362.15098246615713, + "50.0" : 365.84617795527276, + "90.0" : 369.81297960361985, + "95.0" : 369.81297960361985, + "99.0" : 369.81297960361985, + "99.9" : 369.81297960361985, + "99.99" : 369.81297960361985, + "99.999" : 369.81297960361985, + "99.9999" : 369.81297960361985, + "100.0" : 369.81297960361985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 368.7153027027884, + 369.16429250997413, + 369.81297960361985 + ], + [ + 362.15098246615713, + 362.3557626663687, + 362.9770532077572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.74427882855461, + "scoreError" : 1.9491424437607001, + "scoreConfidence" : [ + 111.7951363847939, + 115.69342127231532 + ], + "scorePercentiles" : { + "0.0" : 112.58434260275494, + "50.0" : 113.79067030125663, + "90.0" : 114.69661771144031, + "95.0" : 114.69661771144031, + "99.0" : 114.69661771144031, + "99.9" : 114.69661771144031, + "99.99" : 114.69661771144031, + "99.999" : 114.69661771144031, + "99.9999" : 114.69661771144031, + "100.0" : 114.69661771144031 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.07493084756696, + 113.52844120705214, + 114.69661771144031 + ], + [ + 112.58434260275494, + 113.82990878972608, + 113.75143181278719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06162743718018923, + "scoreError" : 3.591914278173167E-4, + "scoreConfidence" : [ + 0.061268245752371914, + 0.06198662860800655 + ], + "scorePercentiles" : { + "0.0" : 0.061477613267922025, + "50.0" : 0.06161646286462216, + "90.0" : 0.06180226438578818, + "95.0" : 0.06180226438578818, + "99.0" : 0.06180226438578818, + "99.9" : 0.06180226438578818, + "99.99" : 0.06180226438578818, + "99.999" : 0.06180226438578818, + "99.9999" : 0.06180226438578818, + "100.0" : 0.06180226438578818 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06180226438578818, + 0.061477613267922025, + 0.0616938086468879 + ], + [ + 0.06153911708235642, + 0.06171760130468861, + 0.061534218393492254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.707365752780934E-4, + "scoreError" : 1.3112036792635523E-5, + "scoreConfidence" : [ + 3.5762453848545785E-4, + 3.838486120707289E-4 + ], + "scorePercentiles" : { + "0.0" : 3.661568925578196E-4, + "50.0" : 3.7081394770288687E-4, + "90.0" : 3.7513296348639264E-4, + "95.0" : 3.7513296348639264E-4, + "99.0" : 3.7513296348639264E-4, + "99.9" : 3.7513296348639264E-4, + "99.99" : 3.7513296348639264E-4, + "99.999" : 3.7513296348639264E-4, + "99.9999" : 3.7513296348639264E-4, + "100.0" : 3.7513296348639264E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.747989706723821E-4, + 3.750661881631323E-4, + 3.7513296348639264E-4 + ], + [ + 3.668289247333916E-4, + 3.661568925578196E-4, + 3.664355120554419E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12515975337827603, + "scoreError" : 0.0018819369363948916, + "scoreConfidence" : [ + 0.12327781644188114, + 0.1270416903146709 + ], + "scorePercentiles" : { + "0.0" : 0.12451498170906329, + "50.0" : 0.125113702460143, + "90.0" : 0.12585044662161313, + "95.0" : 0.12585044662161313, + "99.0" : 0.12585044662161313, + "99.9" : 0.12585044662161313, + "99.99" : 0.12585044662161313, + "99.999" : 0.12585044662161313, + "99.9999" : 0.12585044662161313, + "100.0" : 0.12585044662161313 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12461622089024026, + 0.12452751233422577, + 0.12451498170906329 + ], + [ + 0.12583817468446815, + 0.12585044662161313, + 0.12561118403004573 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01298828611601984, + "scoreError" : 2.2829858274778095E-4, + "scoreConfidence" : [ + 0.012759987533272059, + 0.01321658469876762 + ], + "scorePercentiles" : { + "0.0" : 0.012909820407557303, + "50.0" : 0.012986902508766352, + "90.0" : 0.013068841367296184, + "95.0" : 0.013068841367296184, + "99.0" : 0.013068841367296184, + "99.9" : 0.013068841367296184, + "99.99" : 0.013068841367296184, + "99.999" : 0.013068841367296184, + "99.9999" : 0.013068841367296184, + "100.0" : 0.013068841367296184 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013068841367296184, + 0.013054219633024649, + 0.013064214315854932 + ], + [ + 0.012919585384508055, + 0.012913035587877911, + 0.012909820407557303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9570497101032437, + "scoreError" : 0.06870793812974671, + "scoreConfidence" : [ + 0.888341771973497, + 1.0257576482329904 + ], + "scorePercentiles" : { + "0.0" : 0.9341369757145526, + "50.0" : 0.9572804363022998, + "90.0" : 0.9797242170846395, + "95.0" : 0.9797242170846395, + "99.0" : 0.9797242170846395, + "99.9" : 0.9797242170846395, + "99.99" : 0.9797242170846395, + "99.999" : 0.9797242170846395, + "99.9999" : 0.9797242170846395, + "100.0" : 0.9797242170846395 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9341369757145526, + 0.9346130296261682, + 0.935307234006734 + ], + [ + 0.9792631655895025, + 0.9797242170846395, + 0.9792536385978655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010662369221472366, + "scoreError" : 3.6261902408499366E-4, + "scoreConfidence" : [ + 0.010299750197387372, + 0.01102498824555736 + ], + "scorePercentiles" : { + "0.0" : 0.010541451729808362, + "50.0" : 0.01066228605668934, + "90.0" : 0.010782180810757776, + "95.0" : 0.010782180810757776, + "99.0" : 0.010782180810757776, + "99.9" : 0.010782180810757776, + "99.99" : 0.010782180810757776, + "99.999" : 0.010782180810757776, + "99.9999" : 0.010782180810757776, + "100.0" : 0.010782180810757776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010780964613447408, + 0.010778053849453465, + 0.010782180810757776 + ], + [ + 0.010545046061441968, + 0.010546518263925215, + 0.010541451729808362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.088338168746136, + "scoreError" : 0.0692484451009362, + "scoreConfidence" : [ + 3.0190897236452, + 3.157586613847072 + ], + "scorePercentiles" : { + "0.0" : 3.060924018971848, + "50.0" : 3.092390426173913, + "90.0" : 3.1151917391033623, + "95.0" : 3.1151917391033623, + "99.0" : 3.1151917391033623, + "99.9" : 3.1151917391033623, + "99.99" : 3.1151917391033623, + "99.999" : 3.1151917391033623, + "99.9999" : 3.1151917391033623, + "100.0" : 3.1151917391033623 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1151917391033623, + 3.1066782043478263, + 3.1080917582349286 + ], + [ + 3.0610406438188495, + 3.078102648, + 3.060924018971848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7125927608610696, + "scoreError" : 0.12439364757781035, + "scoreConfidence" : [ + 2.588199113283259, + 2.83698640843888 + ], + "scorePercentiles" : { + "0.0" : 2.6691942740859353, + "50.0" : 2.71111360511988, + "90.0" : 2.7617167856945595, + "95.0" : 2.7617167856945595, + "99.0" : 2.7617167856945595, + "99.9" : 2.7617167856945595, + "99.99" : 2.7617167856945595, + "99.999" : 2.7617167856945595, + "99.9999" : 2.7617167856945595, + "100.0" : 2.7617167856945595 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6741723772727273, + 2.6737596859128576, + 2.6691942740859353 + ], + [ + 2.7617167856945595, + 2.748054832967033, + 2.748658609233306 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17593930609518574, + "scoreError" : 0.012829140597269412, + "scoreConfidence" : [ + 0.16311016549791632, + 0.18876844669245516 + ], + "scorePercentiles" : { + "0.0" : 0.17177691756703367, + "50.0" : 0.1754336300504918, + "90.0" : 0.18198033134371816, + "95.0" : 0.18198033134371816, + "99.0" : 0.18198033134371816, + "99.9" : 0.18198033134371816, + "99.99" : 0.18198033134371816, + "99.999" : 0.18198033134371816, + "99.9999" : 0.18198033134371816, + "100.0" : 0.18198033134371816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18198033134371816, + 0.17908566701885711, + 0.17892025329206326 + ], + [ + 0.17194700680892036, + 0.17177691756703367, + 0.17192566054052194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3285984612365002, + "scoreError" : 0.010586300929319519, + "scoreConfidence" : [ + 0.3180121603071807, + 0.3391847621658197 + ], + "scorePercentiles" : { + "0.0" : 0.32475763852174194, + "50.0" : 0.32874220721812786, + "90.0" : 0.33208890107262645, + "95.0" : 0.33208890107262645, + "99.0" : 0.33208890107262645, + "99.9" : 0.33208890107262645, + "99.99" : 0.33208890107262645, + "99.999" : 0.33208890107262645, + "99.9999" : 0.33208890107262645, + "100.0" : 0.33208890107262645 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33208890107262645, + 0.3320516788192715, + 0.3319720958372062 + ], + [ + 0.32551231859904955, + 0.3252081345691057, + 0.32475763852174194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14286089464430035, + "scoreError" : 0.001063750751637408, + "scoreConfidence" : [ + 0.14179714389266293, + 0.14392464539593777 + ], + "scorePercentiles" : { + "0.0" : 0.14241141853576567, + "50.0" : 0.1429526327523724, + "90.0" : 0.14326526219879088, + "95.0" : 0.14326526219879088, + "99.0" : 0.14326526219879088, + "99.9" : 0.14326526219879088, + "99.99" : 0.14326526219879088, + "99.999" : 0.14326526219879088, + "99.9999" : 0.14326526219879088, + "100.0" : 0.14326526219879088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14326526219879088, + 0.14314880849997852, + 0.14314305923190335 + ], + [ + 0.14276220627284147, + 0.14243461312652225, + 0.14241141853576567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40193088818342976, + "scoreError" : 0.005279078413821035, + "scoreConfidence" : [ + 0.39665180976960873, + 0.4072099665972508 + ], + "scorePercentiles" : { + "0.0" : 0.3989974169326524, + "50.0" : 0.40267258137708883, + "90.0" : 0.40403318698234414, + "95.0" : 0.40403318698234414, + "99.0" : 0.40403318698234414, + "99.9" : 0.40403318698234414, + "99.99" : 0.40403318698234414, + "99.999" : 0.40403318698234414, + "99.9999" : 0.40403318698234414, + "100.0" : 0.40403318698234414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40403318698234414, + 0.400304297454167, + 0.3989974169326524 + ], + [ + 0.4026699213609825, + 0.4026752413931951, + 0.402905264977237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15779688562509273, + "scoreError" : 0.007626460758325325, + "scoreConfidence" : [ + 0.1501704248667674, + 0.16542334638341805 + ], + "scorePercentiles" : { + "0.0" : 0.155282176878882, + "50.0" : 0.15775205581729318, + "90.0" : 0.16046199895701288, + "95.0" : 0.16046199895701288, + "99.0" : 0.16046199895701288, + "99.9" : 0.16046199895701288, + "99.99" : 0.16046199895701288, + "99.999" : 0.16046199895701288, + "99.9999" : 0.16046199895701288, + "100.0" : 0.16046199895701288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.155282176878882, + 0.1553703675714308, + 0.1552961208497686 + ], + [ + 0.16013374406315553, + 0.16046199895701288, + 0.16023690543030653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04733881393774781, + "scoreError" : 1.6565757249014737E-4, + "scoreConfidence" : [ + 0.047173156365257665, + 0.047504471510237956 + ], + "scorePercentiles" : { + "0.0" : 0.04728205182978724, + "50.0" : 0.047333661675769204, + "90.0" : 0.0474455739499267, + "95.0" : 0.0474455739499267, + "99.0" : 0.0474455739499267, + "99.9" : 0.0474455739499267, + "99.99" : 0.0474455739499267, + "99.999" : 0.0474455739499267, + "99.9999" : 0.0474455739499267, + "100.0" : 0.0474455739499267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04735047274543784, + 0.047335008023174904, + 0.04733231532836351 + ], + [ + 0.04728205182978724, + 0.047287461749796665, + 0.0474455739499267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8692433.674385035, + "scoreError" : 67675.5941264889, + "scoreConfidence" : [ + 8624758.080258546, + 8760109.268511524 + ], + "scorePercentiles" : { + "0.0" : 8656142.101211073, + "50.0" : 8697235.26347826, + "90.0" : 8717519.744773518, + "95.0" : 8717519.744773518, + "99.0" : 8717519.744773518, + "99.9" : 8717519.744773518, + "99.99" : 8717519.744773518, + "99.999" : 8717519.744773518, + "99.9999" : 8717519.744773518, + "100.0" : 8717519.744773518 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8714644.011324042, + 8717519.744773518, + 8696311.950434783 + ], + [ + 8698158.57652174, + 8656142.101211073, + 8671825.662045062 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-27T23:52:34Z-72fb3d09a570c0bd653b66257fcfac5a8cb603c2-jdk17.json b/performance-results/2025-07-27T23:52:34Z-72fb3d09a570c0bd653b66257fcfac5a8cb603c2-jdk17.json new file mode 100644 index 0000000000..08183a5cd3 --- /dev/null +++ b/performance-results/2025-07-27T23:52:34Z-72fb3d09a570c0bd653b66257fcfac5a8cb603c2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3381787744528983, + "scoreError" : 0.052908944469568946, + "scoreConfidence" : [ + 3.2852698299833296, + 3.391087718922467 + ], + "scorePercentiles" : { + "0.0" : 3.3273248563057742, + "50.0" : 3.339745418065334, + "90.0" : 3.345899405375152, + "95.0" : 3.345899405375152, + "99.0" : 3.345899405375152, + "99.9" : 3.345899405375152, + "99.99" : 3.345899405375152, + "99.999" : 3.345899405375152, + "99.9999" : 3.345899405375152, + "100.0" : 3.345899405375152 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3366801497940215, + 3.345899405375152 + ], + [ + 3.3273248563057742, + 3.342810686336647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.684586894404262, + "scoreError" : 0.053426960880809275, + "scoreConfidence" : [ + 1.6311599335234526, + 1.7380138552850712 + ], + "scorePercentiles" : { + "0.0" : 1.6756625743866254, + "50.0" : 1.6843055253887116, + "90.0" : 1.6940739524529989, + "95.0" : 1.6940739524529989, + "99.0" : 1.6940739524529989, + "99.9" : 1.6940739524529989, + "99.99" : 1.6940739524529989, + "99.999" : 1.6940739524529989, + "99.9999" : 1.6940739524529989, + "100.0" : 1.6940739524529989 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6885047806877211, + 1.6940739524529989 + ], + [ + 1.6756625743866254, + 1.680106270089702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8487724778959634, + "scoreError" : 0.010759981800526824, + "scoreConfidence" : [ + 0.8380124960954366, + 0.8595324596964903 + ], + "scorePercentiles" : { + "0.0" : 0.8468391144089067, + "50.0" : 0.8486759279560974, + "90.0" : 0.8508989412627525, + "95.0" : 0.8508989412627525, + "99.0" : 0.8508989412627525, + "99.9" : 0.8508989412627525, + "99.99" : 0.8508989412627525, + "99.999" : 0.8508989412627525, + "99.9999" : 0.8508989412627525, + "100.0" : 0.8508989412627525 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8468391144089067, + 0.8488164274018315 + ], + [ + 0.8485354285103631, + 0.8508989412627525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.30642368772897, + "scoreError" : 0.0764152475644141, + "scoreConfidence" : [ + 16.230008440164557, + 16.382838935293382 + ], + "scorePercentiles" : { + "0.0" : 16.26766054704475, + "50.0" : 16.313080658309325, + "90.0" : 16.33602976449483, + "95.0" : 16.33602976449483, + "99.0" : 16.33602976449483, + "99.9" : 16.33602976449483, + "99.99" : 16.33602976449483, + "99.999" : 16.33602976449483, + "99.9999" : 16.33602976449483, + "100.0" : 16.33602976449483 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.323152150890056, + 16.30300916572859, + 16.33602976449483 + ], + [ + 16.32707940886456, + 16.26766054704475, + 16.281611089351014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2667.4873988008935, + "scoreError" : 217.89883159883343, + "scoreConfidence" : [ + 2449.58856720206, + 2885.386230399727 + ], + "scorePercentiles" : { + "0.0" : 2594.679516462749, + "50.0" : 2667.548815857057, + "90.0" : 2741.5360445700167, + "95.0" : 2741.5360445700167, + "99.0" : 2741.5360445700167, + "99.9" : 2741.5360445700167, + "99.99" : 2741.5360445700167, + "99.999" : 2741.5360445700167, + "99.9999" : 2741.5360445700167, + "100.0" : 2741.5360445700167 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2594.679516462749, + 2595.014748203577, + 2600.1054418880676 + ], + [ + 2741.5360445700167, + 2734.992189826047, + 2738.5964518549044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75876.55191802412, + "scoreError" : 1318.6896735964767, + "scoreConfidence" : [ + 74557.86224442764, + 77195.24159162061 + ], + "scorePercentiles" : { + "0.0" : 75433.44483697362, + "50.0" : 75868.92013544834, + "90.0" : 76341.06389809935, + "95.0" : 76341.06389809935, + "99.0" : 76341.06389809935, + "99.9" : 76341.06389809935, + "99.99" : 76341.06389809935, + "99.999" : 76341.06389809935, + "99.9999" : 76341.06389809935, + "100.0" : 76341.06389809935 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75442.0607811654, + 75468.16307212332, + 75433.44483697362 + ], + [ + 76269.67719877334, + 76304.90172100966, + 76341.06389809935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.23399785959253, + "scoreError" : 12.615174785571135, + "scoreConfidence" : [ + 348.6188230740214, + 373.84917264516366 + ], + "scorePercentiles" : { + "0.0" : 356.41651299599584, + "50.0" : 361.15588964219916, + "90.0" : 366.1894802917049, + "95.0" : 366.1894802917049, + "99.0" : 366.1894802917049, + "99.9" : 366.1894802917049, + "99.99" : 366.1894802917049, + "99.999" : 366.1894802917049, + "99.9999" : 366.1894802917049, + "100.0" : 366.1894802917049 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 364.99490730833463, + 366.1894802917049, + 364.70989061673146 + ], + [ + 357.60188866766686, + 357.4913072771214, + 356.41651299599584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.52427543965842, + "scoreError" : 5.10604691303488, + "scoreConfidence" : [ + 110.41822852662355, + 120.6303223526933 + ], + "scorePercentiles" : { + "0.0" : 113.53031875737602, + "50.0" : 115.54220750898128, + "90.0" : 117.35603432208174, + "95.0" : 117.35603432208174, + "99.0" : 117.35603432208174, + "99.9" : 117.35603432208174, + "99.99" : 117.35603432208174, + "99.999" : 117.35603432208174, + "99.9999" : 117.35603432208174, + "100.0" : 117.35603432208174 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.35603432208174, + 116.92626534996757, + 117.23162852130869 + ], + [ + 114.15814966799498, + 113.9432560192216, + 113.53031875737602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061462049003638615, + "scoreError" : 9.829962077341746E-4, + "scoreConfidence" : [ + 0.06047905279590444, + 0.06244504521137279 + ], + "scorePercentiles" : { + "0.0" : 0.061129893672557445, + "50.0" : 0.06139802352929069, + "90.0" : 0.06188336952418671, + "95.0" : 0.06188336952418671, + "99.0" : 0.06188336952418671, + "99.9" : 0.06188336952418671, + "99.99" : 0.06188336952418671, + "99.999" : 0.06188336952418671, + "99.9999" : 0.06188336952418671, + "100.0" : 0.06188336952418671 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06118066556135403, + 0.061147478030108476, + 0.061129893672557445 + ], + [ + 0.06181550573639769, + 0.06161538149722735, + 0.06188336952418671 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6742406229967224E-4, + "scoreError" : 3.252810535800362E-5, + "scoreConfidence" : [ + 3.3489595694166863E-4, + 3.9995216765767585E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5652459844805456E-4, + "50.0" : 3.6744417209059305E-4, + "90.0" : 3.7819231221456487E-4, + "95.0" : 3.7819231221456487E-4, + "99.0" : 3.7819231221456487E-4, + "99.9" : 3.7819231221456487E-4, + "99.99" : 3.7819231221456487E-4, + "99.999" : 3.7819231221456487E-4, + "99.9999" : 3.7819231221456487E-4, + "100.0" : 3.7819231221456487E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5702991159574125E-4, + 3.5652459844805456E-4, + 3.5695507345340216E-4 + ], + [ + 3.7798404550082554E-4, + 3.7785843258544485E-4, + 3.7819231221456487E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1244396962610237, + "scoreError" : 0.003998894076406452, + "scoreConfidence" : [ + 0.12044080218461725, + 0.12843859033743016 + ], + "scorePercentiles" : { + "0.0" : 0.1231189042893726, + "50.0" : 0.12431504513525693, + "90.0" : 0.12608096121841747, + "95.0" : 0.12608096121841747, + "99.0" : 0.12608096121841747, + "99.9" : 0.12608096121841747, + "99.99" : 0.12608096121841747, + "99.999" : 0.12608096121841747, + "99.9999" : 0.12608096121841747, + "100.0" : 0.12608096121841747 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1231727407284238, + 0.12316184676585054, + 0.1231189042893726 + ], + [ + 0.12608096121841747, + 0.1256463750219877, + 0.12545734954209006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013228661642077283, + "scoreError" : 2.1192761188391186E-4, + "scoreConfidence" : [ + 0.01301673403019337, + 0.013440589253961195 + ], + "scorePercentiles" : { + "0.0" : 0.013141296478179167, + "50.0" : 0.013232700958132924, + "90.0" : 0.01329895060170304, + "95.0" : 0.01329895060170304, + "99.0" : 0.01329895060170304, + "99.9" : 0.01329895060170304, + "99.99" : 0.01329895060170304, + "99.999" : 0.01329895060170304, + "99.9999" : 0.01329895060170304, + "100.0" : 0.01329895060170304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01329895060170304, + 0.013298824676145045, + 0.013293067834753897 + ], + [ + 0.013167496180170596, + 0.013172334081511953, + 0.013141296478179167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0042422484438465, + "scoreError" : 0.060493074322720886, + "scoreConfidence" : [ + 0.9437491741211256, + 1.0647353227665675 + ], + "scorePercentiles" : { + "0.0" : 0.983829284800787, + "50.0" : 1.0044252953689092, + "90.0" : 1.024237226136829, + "95.0" : 1.024237226136829, + "99.0" : 1.024237226136829, + "99.9" : 1.024237226136829, + "99.99" : 1.024237226136829, + "99.999" : 1.024237226136829, + "99.9999" : 1.024237226136829, + "100.0" : 1.024237226136829 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.983829284800787, + 0.9846654595313116, + 0.9851671281520883 + ], + [ + 1.0236834625857303, + 1.024237226136829, + 1.0238709294563326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01097491510325437, + "scoreError" : 2.1227888608834453E-4, + "scoreConfidence" : [ + 0.010762636217166026, + 0.011187193989342715 + ], + "scorePercentiles" : { + "0.0" : 0.010899842078760068, + "50.0" : 0.010974946828584149, + "90.0" : 0.011050464476961463, + "95.0" : 0.011050464476961463, + "99.0" : 0.011050464476961463, + "99.9" : 0.011050464476961463, + "99.99" : 0.011050464476961463, + "99.999" : 0.011050464476961463, + "99.9999" : 0.011050464476961463, + "100.0" : 0.011050464476961463 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011038484160168841, + 0.011042598043740876, + 0.011050464476961463 + ], + [ + 0.010906692362895522, + 0.010911409496999454, + 0.010899842078760068 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2075394143939917, + "scoreError" : 0.08543657729638544, + "scoreConfidence" : [ + 3.1221028370976063, + 3.292975991690377 + ], + "scorePercentiles" : { + "0.0" : 3.1772210565438375, + "50.0" : 3.207404272871176, + "90.0" : 3.238036270550162, + "95.0" : 3.238036270550162, + "99.0" : 3.238036270550162, + "99.9" : 3.238036270550162, + "99.99" : 3.238036270550162, + "99.999" : 3.238036270550162, + "99.9999" : 3.238036270550162, + "100.0" : 3.238036270550162 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2351129288486415, + 3.238036270550162, + 3.232667912790698 + ], + [ + 3.1772210565438375, + 3.1821406329516537, + 3.180057684678957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8013710442343194, + "scoreError" : 0.09908869720702473, + "scoreConfidence" : [ + 2.7022823470272948, + 2.900459741441344 + ], + "scorePercentiles" : { + "0.0" : 2.7667862246196404, + "50.0" : 2.7997444810839576, + "90.0" : 2.838148126276958, + "95.0" : 2.838148126276958, + "99.0" : 2.838148126276958, + "99.9" : 2.838148126276958, + "99.99" : 2.838148126276958, + "99.999" : 2.838148126276958, + "99.9999" : 2.838148126276958, + "100.0" : 2.838148126276958 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.838148126276958, + 2.8275970070681367, + 2.8345902721088434 + ], + [ + 2.7718919550997785, + 2.7692126802325583, + 2.7667862246196404 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18831522247602908, + "scoreError" : 0.01320230585813595, + "scoreConfidence" : [ + 0.17511291661789313, + 0.20151752833416503 + ], + "scorePercentiles" : { + "0.0" : 0.18232057179580674, + "50.0" : 0.18956005307675755, + "90.0" : 0.1925366986657425, + "95.0" : 0.1925366986657425, + "99.0" : 0.1925366986657425, + "99.9" : 0.1925366986657425, + "99.99" : 0.1925366986657425, + "99.999" : 0.1925366986657425, + "99.9999" : 0.1925366986657425, + "100.0" : 0.1925366986657425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18683431329870712, + 0.1835491625461153, + 0.18232057179580674 + ], + [ + 0.19236479569499482, + 0.1925366986657425, + 0.192285792854808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33122974542499567, + "scoreError" : 0.00936213599925976, + "scoreConfidence" : [ + 0.3218676094257359, + 0.34059188142425545 + ], + "scorePercentiles" : { + "0.0" : 0.32807261216455613, + "50.0" : 0.33130213506674144, + "90.0" : 0.33431934437683875, + "95.0" : 0.33431934437683875, + "99.0" : 0.33431934437683875, + "99.9" : 0.33431934437683875, + "99.99" : 0.33431934437683875, + "99.999" : 0.33431934437683875, + "99.9999" : 0.33431934437683875, + "100.0" : 0.33431934437683875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33428951552732744, + 0.334218085291267, + 0.33431934437683875 + ], + [ + 0.3283861848422159, + 0.32809273034776903, + 0.32807261216455613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14199090320111704, + "scoreError" : 6.406888073906941E-4, + "scoreConfidence" : [ + 0.14135021439372636, + 0.14263159200850772 + ], + "scorePercentiles" : { + "0.0" : 0.1415685460015006, + "50.0" : 0.1420378276953001, + "90.0" : 0.14224588614833147, + "95.0" : 0.14224588614833147, + "99.0" : 0.14224588614833147, + "99.9" : 0.14224588614833147, + "99.99" : 0.14224588614833147, + "99.999" : 0.14224588614833147, + "99.9999" : 0.14224588614833147, + "100.0" : 0.14224588614833147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14202898292856128, + 0.1415685460015006, + 0.1420466724620389 + ], + [ + 0.14209957129662523, + 0.14195576036964483, + 0.14224588614833147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.41481445061366445, + "scoreError" : 0.025023534227998082, + "scoreConfidence" : [ + 0.3897909163856664, + 0.43983798484166253 + ], + "scorePercentiles" : { + "0.0" : 0.40636495729204763, + "50.0" : 0.414385713218664, + "90.0" : 0.4236801572191154, + "95.0" : 0.4236801572191154, + "99.0" : 0.4236801572191154, + "99.9" : 0.4236801572191154, + "99.99" : 0.4236801572191154, + "99.999" : 0.4236801572191154, + "99.9999" : 0.4236801572191154, + "100.0" : 0.4236801572191154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4072214660613217, + 0.40651910788617884, + 0.40636495729204763 + ], + [ + 0.4236801572191154, + 0.4235510548473169, + 0.4215499603760064 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15830778150074207, + "scoreError" : 0.005984104324630183, + "scoreConfidence" : [ + 0.1523236771761119, + 0.16429188582537224 + ], + "scorePercentiles" : { + "0.0" : 0.15638672403277765, + "50.0" : 0.15795887540542858, + "90.0" : 0.16156183815047578, + "95.0" : 0.16156183815047578, + "99.0" : 0.16156183815047578, + "99.9" : 0.16156183815047578, + "99.99" : 0.16156183815047578, + "99.999" : 0.16156183815047578, + "99.9999" : 0.16156183815047578, + "100.0" : 0.16156183815047578 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15638672403277765, + 0.15658995474617143, + 0.15652439225844825 + ], + [ + 0.16156183815047578, + 0.1594559837518935, + 0.15932779606468572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048243928350234104, + "scoreError" : 0.004235270320438999, + "scoreConfidence" : [ + 0.0440086580297951, + 0.052479198670673105 + ], + "scorePercentiles" : { + "0.0" : 0.04681095559570843, + "50.0" : 0.048234986205287045, + "90.0" : 0.04988847041157396, + "95.0" : 0.04988847041157396, + "99.0" : 0.04988847041157396, + "99.9" : 0.04988847041157396, + "99.99" : 0.04988847041157396, + "99.999" : 0.04988847041157396, + "99.9999" : 0.04988847041157396, + "100.0" : 0.04988847041157396 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046993042800148495, + 0.04681593707105606, + 0.04681095559570843 + ], + [ + 0.04988847041157396, + 0.04947823461249208, + 0.049476929610425595 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9133420.639616901, + "scoreError" : 412419.678574724, + "scoreConfidence" : [ + 8721000.961042177, + 9545840.318191625 + ], + "scorePercentiles" : { + "0.0" : 8939655.63538874, + "50.0" : 9201217.744126346, + "90.0" : 9254384.480111009, + "95.0" : 9254384.480111009, + "99.0" : 9254384.480111009, + "99.9" : 9254384.480111009, + "99.99" : 9254384.480111009, + "99.999" : 9254384.480111009, + "99.9999" : 9254384.480111009, + "100.0" : 9254384.480111009 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9254384.480111009, + 9251219.370027753, + 9213303.569060773 + ], + [ + 8952828.863921218, + 8939655.63538874, + 9189131.91919192 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-28T21:23:46Z-db9f64ea67056746df85dc2901f82970e1dcc487-jdk17.json b/performance-results/2025-07-28T21:23:46Z-db9f64ea67056746df85dc2901f82970e1dcc487-jdk17.json new file mode 100644 index 0000000000..f4502dfb3e --- /dev/null +++ b/performance-results/2025-07-28T21:23:46Z-db9f64ea67056746df85dc2901f82970e1dcc487-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.331643164772836, + "scoreError" : 0.051247818181749914, + "scoreConfidence" : [ + 3.280395346591086, + 3.382890982954586 + ], + "scorePercentiles" : { + "0.0" : 3.3206381936419542, + "50.0" : 3.333204573495289, + "90.0" : 3.3395253184588114, + "95.0" : 3.3395253184588114, + "99.0" : 3.3395253184588114, + "99.9" : 3.3395253184588114, + "99.99" : 3.3395253184588114, + "99.999" : 3.3395253184588114, + "99.9999" : 3.3395253184588114, + "100.0" : 3.3395253184588114 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.333739461894395, + 3.3326696850961826 + ], + [ + 3.3206381936419542, + 3.3395253184588114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6818165999056673, + "scoreError" : 0.0268110540331406, + "scoreConfidence" : [ + 1.6550055458725268, + 1.7086276539388079 + ], + "scorePercentiles" : { + "0.0" : 1.676581598598524, + "50.0" : 1.6820594087665177, + "90.0" : 1.68656598349111, + "95.0" : 1.68656598349111, + "99.0" : 1.68656598349111, + "99.9" : 1.68656598349111, + "99.99" : 1.68656598349111, + "99.999" : 1.68656598349111, + "99.9999" : 1.68656598349111, + "100.0" : 1.68656598349111 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6829436628482946, + 1.68656598349111 + ], + [ + 1.676581598598524, + 1.6811751546847407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8451206185553661, + "scoreError" : 0.028158247701432854, + "scoreConfidence" : [ + 0.8169623708539333, + 0.873278866256799 + ], + "scorePercentiles" : { + "0.0" : 0.839166147307282, + "50.0" : 0.8462662582459716, + "90.0" : 0.8487838104222392, + "95.0" : 0.8487838104222392, + "99.0" : 0.8487838104222392, + "99.9" : 0.8487838104222392, + "99.99" : 0.8487838104222392, + "99.999" : 0.8487838104222392, + "99.9999" : 0.8487838104222392, + "100.0" : 0.8487838104222392 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.839166147307282, + 0.8487838104222392 + ], + [ + 0.844613342854886, + 0.8479191736370572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.991852858006974, + "scoreError" : 0.2893930297259564, + "scoreConfidence" : [ + 15.702459828281018, + 16.28124588773293 + ], + "scorePercentiles" : { + "0.0" : 15.825655653459275, + "50.0" : 15.994339276151408, + "90.0" : 16.131730692048308, + "95.0" : 16.131730692048308, + "99.0" : 16.131730692048308, + "99.9" : 16.131730692048308, + "99.99" : 16.131730692048308, + "99.999" : 16.131730692048308, + "99.9999" : 16.131730692048308, + "100.0" : 16.131730692048308 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.131730692048308, + 15.825655653459275, + 15.987034413792097 + ], + [ + 16.055992516436707, + 16.00164413851072, + 15.949059733794734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2635.2188133655827, + "scoreError" : 121.33905865655838, + "scoreConfidence" : [ + 2513.8797547090244, + 2756.557872022141 + ], + "scorePercentiles" : { + "0.0" : 2587.552765539256, + "50.0" : 2625.0432501873474, + "90.0" : 2686.5489180150803, + "95.0" : 2686.5489180150803, + "99.0" : 2686.5489180150803, + "99.9" : 2686.5489180150803, + "99.99" : 2686.5489180150803, + "99.999" : 2686.5489180150803, + "99.9999" : 2686.5489180150803, + "100.0" : 2686.5489180150803 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2609.501709446339, + 2587.552765539256, + 2600.9857496997092 + ], + [ + 2686.5489180150803, + 2640.584790928356, + 2686.138946564755 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75121.99264019799, + "scoreError" : 2899.2101794917526, + "scoreConfidence" : [ + 72222.78246070624, + 78021.20281968974 + ], + "scorePercentiles" : { + "0.0" : 74003.79761382437, + "50.0" : 75206.79416276628, + "90.0" : 76205.35181396423, + "95.0" : 76205.35181396423, + "99.0" : 76205.35181396423, + "99.9" : 76205.35181396423, + "99.99" : 76205.35181396423, + "99.999" : 76205.35181396423, + "99.9999" : 76205.35181396423, + "100.0" : 76205.35181396423 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76038.22467289977, + 75900.37684015009, + 76205.35181396423 + ], + [ + 74513.21148538248, + 74070.99341496703, + 74003.79761382437 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.31523010548176, + "scoreError" : 14.34267483846891, + "scoreConfidence" : [ + 333.97255526701286, + 362.65790494395065 + ], + "scorePercentiles" : { + "0.0" : 342.2807512258495, + "50.0" : 348.4780580738318, + "90.0" : 353.8869869384937, + "95.0" : 353.8869869384937, + "99.0" : 353.8869869384937, + "99.9" : 353.8869869384937, + "99.99" : 353.8869869384937, + "99.999" : 353.8869869384937, + "99.9999" : 353.8869869384937, + "100.0" : 353.8869869384937 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 353.56004531067157, + 350.67953479823257, + 353.8869869384937 + ], + [ + 346.276581349431, + 343.2074810102121, + 342.2807512258495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.41423355966064, + "scoreError" : 3.66211911767386, + "scoreConfidence" : [ + 109.75211444198679, + 117.0763526773345 + ], + "scorePercentiles" : { + "0.0" : 112.14262805577192, + "50.0" : 113.37295573035257, + "90.0" : 114.79595469387294, + "95.0" : 114.79595469387294, + "99.0" : 114.79595469387294, + "99.9" : 114.79595469387294, + "99.99" : 114.79595469387294, + "99.999" : 114.79595469387294, + "99.9999" : 114.79595469387294, + "100.0" : 114.79595469387294 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.14262805577192, + 112.3311606901494, + 112.21156920423408 + ], + [ + 114.41475077055574, + 114.58933794337959, + 114.79595469387294 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06229997289667589, + "scoreError" : 8.386683911875162E-4, + "scoreConfidence" : [ + 0.061461304505488375, + 0.06313864128786341 + ], + "scorePercentiles" : { + "0.0" : 0.061992412597946835, + "50.0" : 0.06227300967056189, + "90.0" : 0.06266411988745668, + "95.0" : 0.06266411988745668, + "99.0" : 0.06266411988745668, + "99.9" : 0.06266411988745668, + "99.99" : 0.06266411988745668, + "99.999" : 0.06266411988745668, + "99.9999" : 0.06266411988745668, + "100.0" : 0.06266411988745668 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06266411988745668, + 0.061992412597946835, + 0.06211519034249723 + ], + [ + 0.062008153430229675, + 0.06258913212329839, + 0.06243082899862654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7806239285135683E-4, + "scoreError" : 3.299084706897687E-5, + "scoreConfidence" : [ + 3.4507154578238E-4, + 4.110532399203337E-4 + ], + "scorePercentiles" : { + "0.0" : 3.643146844686191E-4, + "50.0" : 3.7814691054728936E-4, + "90.0" : 3.9005836309059924E-4, + "95.0" : 3.9005836309059924E-4, + "99.0" : 3.9005836309059924E-4, + "99.9" : 3.9005836309059924E-4, + "99.99" : 3.9005836309059924E-4, + "99.999" : 3.9005836309059924E-4, + "99.9999" : 3.9005836309059924E-4, + "100.0" : 3.9005836309059924E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8585234062375913E-4, + 3.9005836309059924E-4, + 3.8978859857380344E-4 + ], + [ + 3.6791888988054047E-4, + 3.643146844686191E-4, + 3.7044148047081954E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12713244157367373, + "scoreError" : 0.0046481853466590435, + "scoreConfidence" : [ + 0.12248425622701468, + 0.13178062692033277 + ], + "scorePercentiles" : { + "0.0" : 0.12543768301493924, + "50.0" : 0.12718442822571785, + "90.0" : 0.12886493870003352, + "95.0" : 0.12886493870003352, + "99.0" : 0.12886493870003352, + "99.9" : 0.12886493870003352, + "99.99" : 0.12886493870003352, + "99.999" : 0.12886493870003352, + "99.9999" : 0.12886493870003352, + "100.0" : 0.12886493870003352 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12843506913513653, + 0.12859790914702365, + 0.12886493870003352 + ], + [ + 0.12593378731629917, + 0.12543768301493924, + 0.12552526212861034 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013143034323990497, + "scoreError" : 4.8252151400674344E-4, + "scoreConfidence" : [ + 0.012660512809983754, + 0.01362555583799724 + ], + "scorePercentiles" : { + "0.0" : 0.012943142682783194, + "50.0" : 0.013151494756082769, + "90.0" : 0.013377522964142147, + "95.0" : 0.013377522964142147, + "99.0" : 0.013377522964142147, + "99.9" : 0.013377522964142147, + "99.99" : 0.013377522964142147, + "99.999" : 0.013377522964142147, + "99.9999" : 0.013377522964142147, + "100.0" : 0.013377522964142147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013377522964142147, + 0.013273398080159704, + 0.013189463002919989 + ], + [ + 0.01311352650924555, + 0.012961152704692384, + 0.012943142682783194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0189571718304444, + "scoreError" : 0.05048367241199941, + "scoreConfidence" : [ + 0.9684734994184451, + 1.069440844242444 + ], + "scorePercentiles" : { + "0.0" : 1.002440727947073, + "50.0" : 1.0178045820635433, + "90.0" : 1.0372601136811535, + "95.0" : 1.0372601136811535, + "99.0" : 1.0372601136811535, + "99.9" : 1.0372601136811535, + "99.99" : 1.0372601136811535, + "99.999" : 1.0372601136811535, + "99.9999" : 1.0372601136811535, + "100.0" : 1.0372601136811535 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0327662514716514, + 1.0372601136811535, + 1.035983271418212 + ], + [ + 1.002449753809142, + 1.002440727947073, + 1.0028429126554352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01095586365769796, + "scoreError" : 4.40702445061621E-4, + "scoreConfidence" : [ + 0.01051516121263634, + 0.01139656610275958 + ], + "scorePercentiles" : { + "0.0" : 0.010765138448786264, + "50.0" : 0.010970742090528885, + "90.0" : 0.011130419814617772, + "95.0" : 0.011130419814617772, + "99.0" : 0.011130419814617772, + "99.9" : 0.011130419814617772, + "99.99" : 0.011130419814617772, + "99.999" : 0.011130419814617772, + "99.9999" : 0.011130419814617772, + "100.0" : 0.011130419814617772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011098440128738694, + 0.0110465389135833, + 0.011130419814617772 + ], + [ + 0.010799699372987264, + 0.010765138448786264, + 0.010894945267474468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.2042947257471455, + "scoreError" : 0.2941758148099074, + "scoreConfidence" : [ + 2.9101189109372383, + 3.4984705405570526 + ], + "scorePercentiles" : { + "0.0" : 3.103877549348231, + "50.0" : 3.1971679404254294, + "90.0" : 3.321170586321381, + "95.0" : 3.321170586321381, + "99.0" : 3.321170586321381, + "99.9" : 3.321170586321381, + "99.99" : 3.321170586321381, + "99.999" : 3.321170586321381, + "99.9999" : 3.321170586321381, + "100.0" : 3.321170586321381 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.103877549348231, + 3.1202652407985028, + 3.1048289894475483 + ], + [ + 3.274070640052356, + 3.321170586321381, + 3.3015553485148517 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8547099613500584, + "scoreError" : 0.03933021225603408, + "scoreConfidence" : [ + 2.815379749094024, + 2.8940401736060926 + ], + "scorePercentiles" : { + "0.0" : 2.8406476160181766, + "50.0" : 2.8517831442122312, + "90.0" : 2.881364099106886, + "95.0" : 2.881364099106886, + "99.0" : 2.881364099106886, + "99.9" : 2.881364099106886, + "99.99" : 2.881364099106886, + "99.999" : 2.881364099106886, + "99.9999" : 2.881364099106886, + "100.0" : 2.881364099106886 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8478931976082005, + 2.8547885669426205, + 2.8406476160181766 + ], + [ + 2.8493563934472936, + 2.854209894977169, + 2.881364099106886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1756349745244731, + "scoreError" : 0.004332128107500396, + "scoreConfidence" : [ + 0.17130284641697271, + 0.1799671026319735 + ], + "scorePercentiles" : { + "0.0" : 0.17369850514138818, + "50.0" : 0.1761021839924573, + "90.0" : 0.1772355841943888, + "95.0" : 0.1772355841943888, + "99.0" : 0.1772355841943888, + "99.9" : 0.1772355841943888, + "99.99" : 0.1772355841943888, + "99.999" : 0.1772355841943888, + "99.9999" : 0.1772355841943888, + "100.0" : 0.1772355841943888 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1737629930670188, + 0.17593057899829354, + 0.17369850514138818 + ], + [ + 0.17690839675912823, + 0.1772355841943888, + 0.17627378898662108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33801709073173153, + "scoreError" : 0.00600661825870432, + "scoreConfidence" : [ + 0.33201047247302723, + 0.34402370899043583 + ], + "scorePercentiles" : { + "0.0" : 0.33513639282841823, + "50.0" : 0.3379684057409665, + "90.0" : 0.34079614309569245, + "95.0" : 0.34079614309569245, + "99.0" : 0.34079614309569245, + "99.9" : 0.34079614309569245, + "99.99" : 0.34079614309569245, + "99.999" : 0.34079614309569245, + "99.9999" : 0.34079614309569245, + "100.0" : 0.34079614309569245 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34079614309569245, + 0.3371740507434506, + 0.33979485769622836 + ], + [ + 0.33643833928811734, + 0.33513639282841823, + 0.3387627607384824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14765633204777087, + "scoreError" : 0.011111430803548622, + "scoreConfidence" : [ + 0.13654490124422225, + 0.1587677628513195 + ], + "scorePercentiles" : { + "0.0" : 0.14350285903911833, + "50.0" : 0.14749487041746023, + "90.0" : 0.15259609337137975, + "95.0" : 0.15259609337137975, + "99.0" : 0.15259609337137975, + "99.9" : 0.15259609337137975, + "99.99" : 0.15259609337137975, + "99.999" : 0.15259609337137975, + "99.9999" : 0.15259609337137975, + "100.0" : 0.15259609337137975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14350285903911833, + 0.1445069205080778, + 0.14435569037892457 + ], + [ + 0.15048282032684263, + 0.15049360866228234, + 0.15259609337137975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4096547899709148, + "scoreError" : 0.012798631943481974, + "scoreConfidence" : [ + 0.39685615802743285, + 0.4224534219143968 + ], + "scorePercentiles" : { + "0.0" : 0.40474324971669096, + "50.0" : 0.40932563235845926, + "90.0" : 0.4151857947770489, + "95.0" : 0.4151857947770489, + "99.0" : 0.4151857947770489, + "99.9" : 0.4151857947770489, + "99.99" : 0.4151857947770489, + "99.999" : 0.4151857947770489, + "99.9999" : 0.4151857947770489, + "100.0" : 0.4151857947770489 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4086183155185094, + 0.40474324971669096, + 0.40476389614279357 + ], + [ + 0.4100329491984091, + 0.4151857947770489, + 0.4145845344720368 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15859302569501932, + "scoreError" : 0.008073820047993934, + "scoreConfidence" : [ + 0.1505192056470254, + 0.16666684574301324 + ], + "scorePercentiles" : { + "0.0" : 0.1556597189465164, + "50.0" : 0.15854398725939578, + "90.0" : 0.16206386583152368, + "95.0" : 0.16206386583152368, + "99.0" : 0.16206386583152368, + "99.9" : 0.16206386583152368, + "99.99" : 0.16206386583152368, + "99.999" : 0.16206386583152368, + "99.9999" : 0.16206386583152368, + "100.0" : 0.16206386583152368 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16206386583152368, + 0.16082867278341562, + 0.16062231524759474 + ], + [ + 0.1564656592711968, + 0.1556597189465164, + 0.1559179220898687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046799052754565175, + "scoreError" : 7.884140873007828E-4, + "scoreConfidence" : [ + 0.04601063866726439, + 0.04758746684186596 + ], + "scorePercentiles" : { + "0.0" : 0.04639564129794332, + "50.0" : 0.04679468600142449, + "90.0" : 0.04713802923929746, + "95.0" : 0.04713802923929746, + "99.0" : 0.04713802923929746, + "99.9" : 0.04713802923929746, + "99.99" : 0.04713802923929746, + "99.999" : 0.04713802923929746, + "99.9999" : 0.04713802923929746, + "100.0" : 0.04713802923929746 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04713802923929746, + 0.04693714135383518, + 0.04639564129794332 + ], + [ + 0.04702837487302483, + 0.04665223064901379, + 0.04664289911427652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8775559.738631895, + "scoreError" : 269473.8422176585, + "scoreConfidence" : [ + 8506085.896414237, + 9045033.580849553 + ], + "scorePercentiles" : { + "0.0" : 8678199.808326107, + "50.0" : 8781481.356036095, + "90.0" : 8866652.171985816, + "95.0" : 8866652.171985816, + "99.0" : 8866652.171985816, + "99.9" : 8866652.171985816, + "99.99" : 8866652.171985816, + "99.999" : 8866652.171985816, + "99.9999" : 8866652.171985816, + "100.0" : 8866652.171985816 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8704656.553524803, + 8678199.808326107, + 8681924.269965278 + ], + [ + 8858306.158547387, + 8866652.171985816, + 8863619.469441984 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-30T22:03:05Z-80f35b3b901ac8dd68ab8b45afabc0db3087a5b6-jdk17.json b/performance-results/2025-07-30T22:03:05Z-80f35b3b901ac8dd68ab8b45afabc0db3087a5b6-jdk17.json new file mode 100644 index 0000000000..b44612e96a --- /dev/null +++ b/performance-results/2025-07-30T22:03:05Z-80f35b3b901ac8dd68ab8b45afabc0db3087a5b6-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3460800372190596, + "scoreError" : 0.026018905589721572, + "scoreConfidence" : [ + 3.320061131629338, + 3.372098942808781 + ], + "scorePercentiles" : { + "0.0" : 3.3410183864073546, + "50.0" : 3.3465459993581894, + "90.0" : 3.3502097637525043, + "95.0" : 3.3502097637525043, + "99.0" : 3.3502097637525043, + "99.9" : 3.3502097637525043, + "99.99" : 3.3502097637525043, + "99.999" : 3.3502097637525043, + "99.9999" : 3.3502097637525043, + "100.0" : 3.3502097637525043 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3410183864073546, + 3.3482084996574164 + ], + [ + 3.3448834990589624, + 3.3502097637525043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6884764675376813, + "scoreError" : 0.01851244470576729, + "scoreConfidence" : [ + 1.6699640228319141, + 1.7069889122434485 + ], + "scorePercentiles" : { + "0.0" : 1.6845142944551652, + "50.0" : 1.6890237266310426, + "90.0" : 1.691344122433475, + "95.0" : 1.691344122433475, + "99.0" : 1.691344122433475, + "99.9" : 1.691344122433475, + "99.99" : 1.691344122433475, + "99.999" : 1.691344122433475, + "99.9999" : 1.691344122433475, + "100.0" : 1.691344122433475 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6845142944551652, + 1.6892477336076865 + ], + [ + 1.6887997196543987, + 1.691344122433475 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8483547677000283, + "scoreError" : 0.009248879937832943, + "scoreConfidence" : [ + 0.8391058877621953, + 0.8576036476378612 + ], + "scorePercentiles" : { + "0.0" : 0.8470417117721241, + "50.0" : 0.8480400135686396, + "90.0" : 0.8502973318907097, + "95.0" : 0.8502973318907097, + "99.0" : 0.8502973318907097, + "99.9" : 0.8502973318907097, + "99.99" : 0.8502973318907097, + "99.999" : 0.8502973318907097, + "99.9999" : 0.8502973318907097, + "100.0" : 0.8502973318907097 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8485142642745391, + 0.8502973318907097 + ], + [ + 0.84756576286274, + 0.8470417117721241 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.11748871557649, + "scoreError" : 0.06158701905901077, + "scoreConfidence" : [ + 16.055901696517477, + 16.1790757346355 + ], + "scorePercentiles" : { + "0.0" : 16.08579749911244, + "50.0" : 16.113787786571887, + "90.0" : 16.147999399668446, + "95.0" : 16.147999399668446, + "99.0" : 16.147999399668446, + "99.9" : 16.147999399668446, + "99.99" : 16.147999399668446, + "99.999" : 16.147999399668446, + "99.9999" : 16.147999399668446, + "100.0" : 16.147999399668446 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.11480246676955, + 16.112773106374224, + 16.10745780021079 + ], + [ + 16.147999399668446, + 16.13610202132347, + 16.08579749911244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2727.4950486614894, + "scoreError" : 31.130154912431564, + "scoreConfidence" : [ + 2696.364893749058, + 2758.6252035739208 + ], + "scorePercentiles" : { + "0.0" : 2715.017580095496, + "50.0" : 2727.9003271961824, + "90.0" : 2738.7885308400705, + "95.0" : 2738.7885308400705, + "99.0" : 2738.7885308400705, + "99.9" : 2738.7885308400705, + "99.99" : 2738.7885308400705, + "99.999" : 2738.7885308400705, + "99.9999" : 2738.7885308400705, + "100.0" : 2738.7885308400705 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2715.017580095496, + 2716.996133953458, + 2720.6822170732016 + ], + [ + 2738.7885308400705, + 2738.3673926875476, + 2735.118437319163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75520.93425397173, + "scoreError" : 208.36580917073772, + "scoreConfidence" : [ + 75312.568444801, + 75729.30006314247 + ], + "scorePercentiles" : { + "0.0" : 75441.10262054022, + "50.0" : 75506.95709001189, + "90.0" : 75614.04948602953, + "95.0" : 75614.04948602953, + "99.0" : 75614.04948602953, + "99.9" : 75614.04948602953, + "99.99" : 75614.04948602953, + "99.999" : 75614.04948602953, + "99.9999" : 75614.04948602953, + "100.0" : 75614.04948602953 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75451.72553724766, + 75493.79486898505, + 75441.10262054022 + ], + [ + 75614.04948602953, + 75520.11931103874, + 75604.8136999892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.0250529144755, + "scoreError" : 16.630689264489344, + "scoreConfidence" : [ + 339.3943636499862, + 372.65574217896483 + ], + "scorePercentiles" : { + "0.0" : 350.32916186698924, + "50.0" : 355.9283726253776, + "90.0" : 361.836969519625, + "95.0" : 361.836969519625, + "99.0" : 361.836969519625, + "99.9" : 361.836969519625, + "99.99" : 361.836969519625, + "99.999" : 361.836969519625, + "99.9999" : 361.836969519625, + "100.0" : 361.836969519625 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.32916186698924, + 350.8930297205004, + 350.6364150665372 + ], + [ + 360.96371553025483, + 361.49102578294594, + 361.836969519625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.8920167010855, + "scoreError" : 5.543464396779908, + "scoreConfidence" : [ + 112.34855230430558, + 123.4354810978654 + ], + "scorePercentiles" : { + "0.0" : 115.96053380638747, + "50.0" : 117.80244936542726, + "90.0" : 119.91662000747624, + "95.0" : 119.91662000747624, + "99.0" : 119.91662000747624, + "99.9" : 119.91662000747624, + "99.99" : 119.91662000747624, + "99.999" : 119.91662000747624, + "99.9999" : 119.91662000747624, + "100.0" : 119.91662000747624 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.33225670228359, + 115.96053380638747, + 116.0157253186122 + ], + [ + 119.91662000747624, + 119.85432234318266, + 119.27264202857093 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0614265552673224, + "scoreError" : 3.3668008544388516E-4, + "scoreConfidence" : [ + 0.061089875181878514, + 0.06176323535276629 + ], + "scorePercentiles" : { + "0.0" : 0.06129606563486469, + "50.0" : 0.06140238501599983, + "90.0" : 0.06159755376787848, + "95.0" : 0.06159755376787848, + "99.0" : 0.06159755376787848, + "99.9" : 0.06159755376787848, + "99.99" : 0.06159755376787848, + "99.999" : 0.06159755376787848, + "99.9999" : 0.06159755376787848, + "100.0" : 0.06159755376787848 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06133819969946026, + 0.06129606563486469, + 0.06134081823758174 + ], + [ + 0.06152274246973127, + 0.061463951794417916, + 0.06159755376787848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6681746603231313E-4, + "scoreError" : 3.989741437255106E-5, + "scoreConfidence" : [ + 3.2692005165976205E-4, + 4.067148804048642E-4 + ], + "scorePercentiles" : { + "0.0" : 3.537229808475251E-4, + "50.0" : 3.666446673142193E-4, + "90.0" : 3.803598765869038E-4, + "95.0" : 3.803598765869038E-4, + "99.0" : 3.803598765869038E-4, + "99.9" : 3.803598765869038E-4, + "99.99" : 3.803598765869038E-4, + "99.999" : 3.803598765869038E-4, + "99.9999" : 3.803598765869038E-4, + "100.0" : 3.803598765869038E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.803598765869038E-4, + 3.793440103911502E-4, + 3.797022554929362E-4 + ], + [ + 3.537229808475251E-4, + 3.538303486380751E-4, + 3.5394532423728837E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1249983755167423, + "scoreError" : 0.0011489724205739774, + "scoreConfidence" : [ + 0.12384940309616832, + 0.12614734793731627 + ], + "scorePercentiles" : { + "0.0" : 0.12447274743589744, + "50.0" : 0.12507293334945305, + "90.0" : 0.12543530287484636, + "95.0" : 0.12543530287484636, + "99.0" : 0.12543530287484636, + "99.9" : 0.12543530287484636, + "99.99" : 0.12543530287484636, + "99.999" : 0.12543530287484636, + "99.9999" : 0.12543530287484636, + "100.0" : 0.12543530287484636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12543530287484636, + 0.12529770734610518, + 0.125327495563465 + ], + [ + 0.12484815935280091, + 0.12447274743589744, + 0.12460884052733888 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013248594903843634, + "scoreError" : 5.094146825521463E-4, + "scoreConfidence" : [ + 0.012739180221291488, + 0.01375800958639578 + ], + "scorePercentiles" : { + "0.0" : 0.013075960317584848, + "50.0" : 0.01325006685660348, + "90.0" : 0.013416597166991343, + "95.0" : 0.013416597166991343, + "99.0" : 0.013416597166991343, + "99.9" : 0.013416597166991343, + "99.99" : 0.013416597166991343, + "99.999" : 0.013416597166991343, + "99.9999" : 0.013416597166991343, + "100.0" : 0.013416597166991343 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013084574541914617, + 0.013087875810458149, + 0.013075960317584848 + ], + [ + 0.013412257902748812, + 0.013416597166991343, + 0.01341430368336403 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9821103882463782, + "scoreError" : 0.08673128197615132, + "scoreConfidence" : [ + 0.8953791062702269, + 1.0688416702225294 + ], + "scorePercentiles" : { + "0.0" : 0.9538307179780638, + "50.0" : 0.9820338022176116, + "90.0" : 1.0107782253891247, + "95.0" : 1.0107782253891247, + "99.0" : 1.0107782253891247, + "99.9" : 1.0107782253891247, + "99.99" : 1.0107782253891247, + "99.999" : 1.0107782253891247, + "99.9999" : 1.0107782253891247, + "100.0" : 1.0107782253891247 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.010139483030303, + 1.0101140005050504, + 1.0107782253891247 + ], + [ + 0.9539536039301727, + 0.9538307179780638, + 0.9538462986455551 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010729451493956557, + "scoreError" : 6.346760668853688E-4, + "scoreConfidence" : [ + 0.010094775427071188, + 0.011364127560841927 + ], + "scorePercentiles" : { + "0.0" : 0.010519571615514731, + "50.0" : 0.01072981262668108, + "90.0" : 0.010937844242804737, + "95.0" : 0.010937844242804737, + "99.0" : 0.010937844242804737, + "99.9" : 0.010937844242804737, + "99.99" : 0.010937844242804737, + "99.999" : 0.010937844242804737, + "99.9999" : 0.010937844242804737, + "100.0" : 0.010937844242804737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010937844242804737, + 0.010935829899939855, + 0.010934487524109849 + ], + [ + 0.010523837952117863, + 0.010519571615514731, + 0.01052513772925231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1521960089884797, + "scoreError" : 0.18666857592276306, + "scoreConfidence" : [ + 2.965527433065717, + 3.3388645849112426 + ], + "scorePercentiles" : { + "0.0" : 3.0855574713140035, + "50.0" : 3.15077570937262, + "90.0" : 3.217996956241956, + "95.0" : 3.217996956241956, + "99.0" : 3.217996956241956, + "99.9" : 3.217996956241956, + "99.99" : 3.217996956241956, + "99.999" : 3.217996956241956, + "99.9999" : 3.217996956241956, + "100.0" : 3.217996956241956 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.213506692159383, + 3.217996956241956, + 3.206906673076923 + ], + [ + 3.094563515470297, + 3.094644745668317, + 3.0855574713140035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.742696288578506, + "scoreError" : 0.11503660288956712, + "scoreConfidence" : [ + 2.627659685688939, + 2.857732891468073 + ], + "scorePercentiles" : { + "0.0" : 2.7040657499324143, + "50.0" : 2.7413798741813262, + "90.0" : 2.785626130362117, + "95.0" : 2.785626130362117, + "99.0" : 2.785626130362117, + "99.9" : 2.785626130362117, + "99.99" : 2.785626130362117, + "99.999" : 2.785626130362117, + "99.9999" : 2.785626130362117, + "100.0" : 2.785626130362117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7061974829545457, + 2.7040657499324143, + 2.705816186147186 + ], + [ + 2.785626130362117, + 2.7779099166666668, + 2.776562265408107 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17420262646833398, + "scoreError" : 0.005749665359104493, + "scoreConfidence" : [ + 0.1684529611092295, + 0.17995229182743847 + ], + "scorePercentiles" : { + "0.0" : 0.17168228134388575, + "50.0" : 0.17430648289974532, + "90.0" : 0.1768495236798359, + "95.0" : 0.1768495236798359, + "99.0" : 0.1768495236798359, + "99.9" : 0.1768495236798359, + "99.99" : 0.1768495236798359, + "99.999" : 0.1768495236798359, + "99.9999" : 0.1768495236798359, + "100.0" : 0.1768495236798359 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1768495236798359, + 0.17562005298187694, + 0.175438542358906 + ], + [ + 0.17317442344058462, + 0.17168228134388575, + 0.17245093500491473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3259979455684359, + "scoreError" : 0.004489274816290288, + "scoreConfidence" : [ + 0.3215086707521456, + 0.3304872203847262 + ], + "scorePercentiles" : { + "0.0" : 0.32407702284658757, + "50.0" : 0.3263130527466429, + "90.0" : 0.3276310654894509, + "95.0" : 0.3276310654894509, + "99.0" : 0.3276310654894509, + "99.9" : 0.3276310654894509, + "99.99" : 0.3276310654894509, + "99.999" : 0.3276310654894509, + "99.9999" : 0.3276310654894509, + "100.0" : 0.3276310654894509 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32543521032249667, + 0.32407702284658757, + 0.32430042802477543 + ], + [ + 0.3273530515565158, + 0.32719089517078914, + 0.3276310654894509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14449774652122083, + "scoreError" : 3.9635351046255114E-4, + "scoreConfidence" : [ + 0.14410139301075828, + 0.14489410003168338 + ], + "scorePercentiles" : { + "0.0" : 0.14436442583476491, + "50.0" : 0.14445022494750426, + "90.0" : 0.14474523102420103, + "95.0" : 0.14474523102420103, + "99.0" : 0.14474523102420103, + "99.9" : 0.14474523102420103, + "99.99" : 0.14474523102420103, + "99.999" : 0.14474523102420103, + "99.9999" : 0.14474523102420103, + "100.0" : 0.14474523102420103 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14474523102420103, + 0.14443204809497676, + 0.14457623934132344 + ], + [ + 0.1444684018000318, + 0.14436442583476491, + 0.14440013303202703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40710077240933656, + "scoreError" : 0.006942328913300606, + "scoreConfidence" : [ + 0.40015844349603596, + 0.41404310132263716 + ], + "scorePercentiles" : { + "0.0" : 0.4050743493195075, + "50.0" : 0.40632440813205617, + "90.0" : 0.4115546036462406, + "95.0" : 0.4115546036462406, + "99.0" : 0.4115546036462406, + "99.9" : 0.4115546036462406, + "99.99" : 0.4115546036462406, + "99.999" : 0.4115546036462406, + "99.9999" : 0.4115546036462406, + "100.0" : 0.4115546036462406 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4115546036462406, + 0.40811117666503427, + 0.4070035775507712 + ], + [ + 0.4050743493195075, + 0.4056452387133412, + 0.40521568856112483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15907875000332258, + "scoreError" : 0.012651090802988084, + "scoreConfidence" : [ + 0.1464276592003345, + 0.17172984080631068 + ], + "scorePercentiles" : { + "0.0" : 0.15449959529400858, + "50.0" : 0.1590325722030273, + "90.0" : 0.16438924245064357, + "95.0" : 0.16438924245064357, + "99.0" : 0.16438924245064357, + "99.9" : 0.16438924245064357, + "99.99" : 0.16438924245064357, + "99.999" : 0.16438924245064357, + "99.9999" : 0.16438924245064357, + "100.0" : 0.16438924245064357 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15598926339926375, + 0.15449959529400858, + 0.15464426556459346 + ], + [ + 0.16438924245064357, + 0.16287425230463534, + 0.16207588100679082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04745177076858712, + "scoreError" : 0.0032115805946338004, + "scoreConfidence" : [ + 0.04424019017395332, + 0.05066335136322092 + ], + "scorePercentiles" : { + "0.0" : 0.04638537488171884, + "50.0" : 0.04728441744428115, + "90.0" : 0.04872298560257254, + "95.0" : 0.04872298560257254, + "99.0" : 0.04872298560257254, + "99.9" : 0.04872298560257254, + "99.99" : 0.04872298560257254, + "99.999" : 0.04872298560257254, + "99.9999" : 0.04872298560257254, + "100.0" : 0.04872298560257254 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04872298560257254, + 0.04861319215493731, + 0.04810178364559032 + ], + [ + 0.04642023708373177, + 0.04638537488171884, + 0.04646705124297198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8658420.181959266, + "scoreError" : 240687.8205461195, + "scoreConfidence" : [ + 8417732.361413145, + 8899108.002505386 + ], + "scorePercentiles" : { + "0.0" : 8579289.288164666, + "50.0" : 8647310.401244972, + "90.0" : 8766050.457493426, + "95.0" : 8766050.457493426, + "99.0" : 8766050.457493426, + "99.9" : 8766050.457493426, + "99.99" : 8766050.457493426, + "99.999" : 8766050.457493426, + "99.9999" : 8766050.457493426, + "100.0" : 8766050.457493426 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8766050.457493426, + 8709770.618798956, + 8729172.792321118 + ], + [ + 8579289.288164666, + 8581387.751286449, + 8584850.183690988 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-31T05:01:36Z-1b2f619e4b944ca224a7296197479e79bc39a9e1-jdk17.json b/performance-results/2025-07-31T05:01:36Z-1b2f619e4b944ca224a7296197479e79bc39a9e1-jdk17.json new file mode 100644 index 0000000000..09d80e6758 --- /dev/null +++ b/performance-results/2025-07-31T05:01:36Z-1b2f619e4b944ca224a7296197479e79bc39a9e1-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.353482858631146, + "scoreError" : 0.038276186398402176, + "scoreConfidence" : [ + 3.3152066722327436, + 3.391759045029548 + ], + "scorePercentiles" : { + "0.0" : 3.346497691792046, + "50.0" : 3.353255068379298, + "90.0" : 3.3609236059739396, + "95.0" : 3.3609236059739396, + "99.0" : 3.3609236059739396, + "99.9" : 3.3609236059739396, + "99.99" : 3.3609236059739396, + "99.999" : 3.3609236059739396, + "99.9999" : 3.3609236059739396, + "100.0" : 3.3609236059739396 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3539603211651747, + 3.3609236059739396 + ], + [ + 3.346497691792046, + 3.3525498155934215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7020432718910865, + "scoreError" : 0.013755654946980111, + "scoreConfidence" : [ + 1.6882876169441063, + 1.7157989268380667 + ], + "scorePercentiles" : { + "0.0" : 1.6991756177622328, + "50.0" : 1.7023371607273865, + "90.0" : 1.7043231483473402, + "95.0" : 1.7043231483473402, + "99.0" : 1.7043231483473402, + "99.9" : 1.7043231483473402, + "99.99" : 1.7043231483473402, + "99.999" : 1.7043231483473402, + "99.9999" : 1.7043231483473402, + "100.0" : 1.7043231483473402 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7023445450305896, + 1.7023297764241831 + ], + [ + 1.6991756177622328, + 1.7043231483473402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.851553165364491, + "scoreError" : 0.037225329252169405, + "scoreConfidence" : [ + 0.8143278361123216, + 0.8887784946166604 + ], + "scorePercentiles" : { + "0.0" : 0.8444278799178012, + "50.0" : 0.852215983388291, + "90.0" : 0.8573528147635805, + "95.0" : 0.8573528147635805, + "99.0" : 0.8573528147635805, + "99.9" : 0.8573528147635805, + "99.99" : 0.8573528147635805, + "99.999" : 0.8573528147635805, + "99.9999" : 0.8573528147635805, + "100.0" : 0.8573528147635805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8444278799178012, + 0.8495447139367008 + ], + [ + 0.854887252839881, + 0.8573528147635805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.483937486809797, + "scoreError" : 0.12424298772002351, + "scoreConfidence" : [ + 16.359694499089773, + 16.60818047452982 + ], + "scorePercentiles" : { + "0.0" : 16.440802488419305, + "50.0" : 16.478395945076294, + "90.0" : 16.53481312099235, + "95.0" : 16.53481312099235, + "99.0" : 16.53481312099235, + "99.9" : 16.53481312099235, + "99.99" : 16.53481312099235, + "99.999" : 16.53481312099235, + "99.9999" : 16.53481312099235, + "100.0" : 16.53481312099235 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.44343717796621, + 16.448880022547907, + 16.440802488419305 + ], + [ + 16.52778024332833, + 16.53481312099235, + 16.50791186760468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2757.119904801759, + "scoreError" : 288.38943624942414, + "scoreConfidence" : [ + 2468.7304685523345, + 3045.509341051183 + ], + "scorePercentiles" : { + "0.0" : 2661.9909168135537, + "50.0" : 2756.459464719503, + "90.0" : 2852.9335470111214, + "95.0" : 2852.9335470111214, + "99.0" : 2852.9335470111214, + "99.9" : 2852.9335470111214, + "99.99" : 2852.9335470111214, + "99.999" : 2852.9335470111214, + "99.9999" : 2852.9335470111214, + "100.0" : 2852.9335470111214 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2852.9335470111214, + 2848.9655643403053, + 2851.07892392382 + ], + [ + 2663.953365098701, + 2661.9909168135537, + 2663.797111623049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76585.05858938322, + "scoreError" : 1266.263550159021, + "scoreConfidence" : [ + 75318.79503922419, + 77851.32213954224 + ], + "scorePercentiles" : { + "0.0" : 76115.07745482646, + "50.0" : 76610.95525768644, + "90.0" : 77000.19535442891, + "95.0" : 77000.19535442891, + "99.0" : 77000.19535442891, + "99.9" : 77000.19535442891, + "99.99" : 77000.19535442891, + "99.999" : 77000.19535442891, + "99.9999" : 77000.19535442891, + "100.0" : 77000.19535442891 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76177.91179091227, + 76115.07745482646, + 76229.54514109461 + ], + [ + 76992.36537427825, + 77000.19535442891, + 76995.25642075881 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.7264432334691, + "scoreError" : 3.5096609700386523, + "scoreConfidence" : [ + 359.21678226343045, + 366.2361042035078 + ], + "scorePercentiles" : { + "0.0" : 361.6276971707852, + "50.0" : 362.2416763776158, + "90.0" : 364.4246887591129, + "95.0" : 364.4246887591129, + "99.0" : 364.4246887591129, + "99.9" : 364.4246887591129, + "99.99" : 364.4246887591129, + "99.999" : 364.4246887591129, + "99.9999" : 364.4246887591129, + "100.0" : 364.4246887591129 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 362.5172587346009, + 364.1464940256564, + 364.4246887591129 + ], + [ + 361.96609402063075, + 361.6276971707852, + 361.67642669002885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.12040759178154, + "scoreError" : 5.587069436645381, + "scoreConfidence" : [ + 108.53333815513616, + 119.70747702842692 + ], + "scorePercentiles" : { + "0.0" : 111.26196446325504, + "50.0" : 114.31630357553416, + "90.0" : 116.01487473534624, + "95.0" : 116.01487473534624, + "99.0" : 116.01487473534624, + "99.9" : 116.01487473534624, + "99.99" : 116.01487473534624, + "99.999" : 116.01487473534624, + "99.9999" : 116.01487473534624, + "100.0" : 116.01487473534624 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.96548381306346, + 115.53845946785674, + 116.01487473534624 + ], + [ + 111.26196446325504, + 113.09414768321159, + 112.84751538795616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06039248248481773, + "scoreError" : 6.181374848629453E-4, + "scoreConfidence" : [ + 0.059774344999954786, + 0.06101061996968068 + ], + "scorePercentiles" : { + "0.0" : 0.060203173237732305, + "50.0" : 0.060354282456001385, + "90.0" : 0.060750003942628375, + "95.0" : 0.060750003942628375, + "99.0" : 0.060750003942628375, + "99.9" : 0.060750003942628375, + "99.99" : 0.060750003942628375, + "99.999" : 0.060750003942628375, + "99.9999" : 0.060750003942628375, + "100.0" : 0.060750003942628375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060481614526254675, + 0.060750003942628375, + 0.06048752949324365 + ], + [ + 0.0602269503857481, + 0.06020562332329922, + 0.060203173237732305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6682822158171725E-4, + "scoreError" : 4.884083095039461E-5, + "scoreConfidence" : [ + 3.1798739063132263E-4, + 4.156690525321119E-4 + ], + "scorePercentiles" : { + "0.0" : 3.508456336502254E-4, + "50.0" : 3.6679063090814466E-4, + "90.0" : 3.829964732939617E-4, + "95.0" : 3.829964732939617E-4, + "99.0" : 3.829964732939617E-4, + "99.9" : 3.829964732939617E-4, + "99.99" : 3.829964732939617E-4, + "99.999" : 3.829964732939617E-4, + "99.9999" : 3.829964732939617E-4, + "100.0" : 3.829964732939617E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5094553394315783E-4, + 3.5099667298510163E-4, + 3.508456336502254E-4 + ], + [ + 3.825845888311877E-4, + 3.829964732939617E-4, + 3.826004267866694E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1240012052451922, + "scoreError" : 5.23147068183301E-4, + "scoreConfidence" : [ + 0.1234780581770089, + 0.12452435231337551 + ], + "scorePercentiles" : { + "0.0" : 0.1237848824192011, + "50.0" : 0.12398571541574485, + "90.0" : 0.12425495182773788, + "95.0" : 0.12425495182773788, + "99.0" : 0.12425495182773788, + "99.9" : 0.12425495182773788, + "99.99" : 0.12425495182773788, + "99.999" : 0.12425495182773788, + "99.9999" : 0.12425495182773788, + "100.0" : 0.12425495182773788 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1237848824192011, + 0.12395541131191433, + 0.12382405558375949 + ], + [ + 0.12425495182773788, + 0.12401601951957539, + 0.12417191080896504 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013177677040063696, + "scoreError" : 3.375376591257966E-4, + "scoreConfidence" : [ + 0.0128401393809379, + 0.013515214699189492 + ], + "scorePercentiles" : { + "0.0" : 0.01306630065108403, + "50.0" : 0.013166360446818431, + "90.0" : 0.013300087010762298, + "95.0" : 0.013300087010762298, + "99.0" : 0.013300087010762298, + "99.9" : 0.013300087010762298, + "99.99" : 0.013300087010762298, + "99.999" : 0.013300087010762298, + "99.9999" : 0.013300087010762298, + "100.0" : 0.013300087010762298 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013262698887938408, + 0.013300087010762298, + 0.013297864781053444 + ], + [ + 0.013070022005698453, + 0.01306630065108403, + 0.013069088903845526 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9885506742744191, + "scoreError" : 0.0632063612825815, + "scoreConfidence" : [ + 0.9253443129918376, + 1.0517570355570007 + ], + "scorePercentiles" : { + "0.0" : 0.9671989556092844, + "50.0" : 0.9886548614717992, + "90.0" : 1.009485964772383, + "95.0" : 1.009485964772383, + "99.0" : 1.009485964772383, + "99.9" : 1.009485964772383, + "99.99" : 1.009485964772383, + "99.999" : 1.009485964772383, + "99.9999" : 1.009485964772383, + "100.0" : 1.009485964772383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9682148281537419, + 0.9685245988766221, + 0.9671989556092844 + ], + [ + 1.008785124066976, + 1.0090945741675075, + 1.009485964772383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010733988396759986, + "scoreError" : 0.0010812263513256348, + "scoreConfidence" : [ + 0.009652762045434351, + 0.01181521474808562 + ], + "scorePercentiles" : { + "0.0" : 0.010373753348575506, + "50.0" : 0.010735976162856625, + "90.0" : 0.011094092872896059, + "95.0" : 0.011094092872896059, + "99.0" : 0.011094092872896059, + "99.9" : 0.011094092872896059, + "99.99" : 0.011094092872896059, + "99.999" : 0.011094092872896059, + "99.9999" : 0.011094092872896059, + "100.0" : 0.011094092872896059 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011094092872896059, + 0.011075956253225796, + 0.011087530743030486 + ], + [ + 0.010395996072487453, + 0.010376601090344618, + 0.010373753348575506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0244017929846456, + "scoreError" : 0.02350721394922381, + "scoreConfidence" : [ + 3.000894579035422, + 3.0479090069338692 + ], + "scorePercentiles" : { + "0.0" : 3.0140141271850514, + "50.0" : 3.027378536565311, + "90.0" : 3.033068093389933, + "95.0" : 3.033068093389933, + "99.0" : 3.033068093389933, + "99.9" : 3.033068093389933, + "99.99" : 3.033068093389933, + "99.999" : 3.033068093389933, + "99.9999" : 3.033068093389933, + "100.0" : 3.033068093389933 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0305397575757578, + 3.033068093389933, + 3.029024942459116 + ], + [ + 3.014031706626506, + 3.025732130671506, + 3.0140141271850514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8081195794171196, + "scoreError" : 0.04451368328698103, + "scoreConfidence" : [ + 2.7636058961301386, + 2.8526332627041007 + ], + "scorePercentiles" : { + "0.0" : 2.7892624670942556, + "50.0" : 2.809088813599385, + "90.0" : 2.824478731996611, + "95.0" : 2.824478731996611, + "99.0" : 2.824478731996611, + "99.9" : 2.824478731996611, + "99.99" : 2.824478731996611, + "99.999" : 2.824478731996611, + "99.9999" : 2.824478731996611, + "100.0" : 2.824478731996611 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.824478731996611, + 2.819786429940795, + 2.822643530906012 + ], + [ + 2.7983911972579745, + 2.794155119307069, + 2.7892624670942556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17612863827510697, + "scoreError" : 0.0016477289885006518, + "scoreConfidence" : [ + 0.1744809092866063, + 0.17777636726360763 + ], + "scorePercentiles" : { + "0.0" : 0.1756184496601865, + "50.0" : 0.17597844740560853, + "90.0" : 0.17728533952630832, + "95.0" : 0.17728533952630832, + "99.0" : 0.17728533952630832, + "99.9" : 0.17728533952630832, + "99.99" : 0.17728533952630832, + "99.999" : 0.17728533952630832, + "99.9999" : 0.17728533952630832, + "100.0" : 0.17728533952630832 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17602657610321945, + 0.17605160570744502, + 0.17728533952630832 + ], + [ + 0.17585953994548492, + 0.1759303187079976, + 0.1756184496601865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32291559915548146, + "scoreError" : 3.2985694367027133E-4, + "scoreConfidence" : [ + 0.3225857422118112, + 0.32324545609915173 + ], + "scorePercentiles" : { + "0.0" : 0.32278306817081437, + "50.0" : 0.32292217191202494, + "90.0" : 0.3230849756397002, + "95.0" : 0.3230849756397002, + "99.0" : 0.3230849756397002, + "99.9" : 0.3230849756397002, + "99.99" : 0.3230849756397002, + "99.999" : 0.3230849756397002, + "99.9999" : 0.3230849756397002, + "100.0" : 0.3230849756397002 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32298991101995994, + 0.32279129627836417, + 0.3228915813825837 + ], + [ + 0.3230849756397002, + 0.32278306817081437, + 0.32295276244146615 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14388199181729064, + "scoreError" : 0.004925840882024297, + "scoreConfidence" : [ + 0.13895615093526634, + 0.14880783269931494 + ], + "scorePercentiles" : { + "0.0" : 0.1413976640178723, + "50.0" : 0.14356822943939596, + "90.0" : 0.14681751623038186, + "95.0" : 0.14681751623038186, + "99.0" : 0.14681751623038186, + "99.9" : 0.14681751623038186, + "99.99" : 0.14681751623038186, + "99.999" : 0.14681751623038186, + "99.9999" : 0.14681751623038186, + "100.0" : 0.14681751623038186 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1435107920840389, + 0.14361619035788142, + 0.14352026852091046 + ], + [ + 0.14681751623038186, + 0.14442951969265877, + 0.1413976640178723 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4018423565058164, + "scoreError" : 0.01027690974808848, + "scoreConfidence" : [ + 0.3915654467577279, + 0.4121192662539049 + ], + "scorePercentiles" : { + "0.0" : 0.39786439737417945, + "50.0" : 0.4016776301419805, + "90.0" : 0.4064869786602715, + "95.0" : 0.4064869786602715, + "99.0" : 0.4064869786602715, + "99.9" : 0.4064869786602715, + "99.99" : 0.4064869786602715, + "99.999" : 0.4064869786602715, + "99.9999" : 0.4064869786602715, + "100.0" : 0.4064869786602715 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39786439737417945, + 0.39879919620354126, + 0.3991162329182631 + ], + [ + 0.404548306512945, + 0.4042390273656979, + 0.4064869786602715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16364278704681767, + "scoreError" : 0.02976645612587646, + "scoreConfidence" : [ + 0.1338763309209412, + 0.19340924317269415 + ], + "scorePercentiles" : { + "0.0" : 0.15386256352027078, + "50.0" : 0.16283202349547626, + "90.0" : 0.176492349482007, + "95.0" : 0.176492349482007, + "99.0" : 0.176492349482007, + "99.9" : 0.176492349482007, + "99.99" : 0.176492349482007, + "99.999" : 0.176492349482007, + "99.9999" : 0.176492349482007, + "100.0" : 0.176492349482007 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1542853183269821, + 0.15386256352027078, + 0.15413900257406207 + ], + [ + 0.176492349482007, + 0.1713787286639704, + 0.17169875971361365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04661222868382268, + "scoreError" : 0.0017142685469840424, + "scoreConfidence" : [ + 0.04489796013683864, + 0.04832649723080672 + ], + "scorePercentiles" : { + "0.0" : 0.04604029042282831, + "50.0" : 0.04661151299084754, + "90.0" : 0.047195157842077694, + "95.0" : 0.047195157842077694, + "99.0" : 0.047195157842077694, + "99.9" : 0.047195157842077694, + "99.99" : 0.047195157842077694, + "99.999" : 0.047195157842077694, + "99.9999" : 0.047195157842077694, + "100.0" : 0.047195157842077694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046073407637941835, + 0.04604029042282831, + 0.04604954747147291 + ], + [ + 0.04714961834375324, + 0.04716535038486209, + 0.047195157842077694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8684522.139708702, + "scoreError" : 165967.2367030303, + "scoreConfidence" : [ + 8518554.90300567, + 8850489.376411732 + ], + "scorePercentiles" : { + "0.0" : 8632144.482312338, + "50.0" : 8658058.607342992, + "90.0" : 8781617.052677788, + "95.0" : 8781617.052677788, + "99.0" : 8781617.052677788, + "99.9" : 8781617.052677788, + "99.99" : 8781617.052677788, + "99.999" : 8781617.052677788, + "99.9999" : 8781617.052677788, + "100.0" : 8781617.052677788 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8649923.417458946, + 8645169.681071738, + 8666193.797227036 + ], + [ + 8781617.052677788, + 8732084.407504363, + 8632144.482312338 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-31T05:01:42Z-1b2f619e4b944ca224a7296197479e79bc39a9e1-jdk17.json b/performance-results/2025-07-31T05:01:42Z-1b2f619e4b944ca224a7296197479e79bc39a9e1-jdk17.json new file mode 100644 index 0000000000..a4f31fdcb4 --- /dev/null +++ b/performance-results/2025-07-31T05:01:42Z-1b2f619e4b944ca224a7296197479e79bc39a9e1-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.318403365647165, + "scoreError" : 0.020195822723520666, + "scoreConfidence" : [ + 3.2982075429236444, + 3.3385991883706856 + ], + "scorePercentiles" : { + "0.0" : 3.3151508428359695, + "50.0" : 3.318040275916247, + "90.0" : 3.322382067920195, + "95.0" : 3.322382067920195, + "99.0" : 3.322382067920195, + "99.9" : 3.322382067920195, + "99.99" : 3.322382067920195, + "99.999" : 3.322382067920195, + "99.9999" : 3.322382067920195, + "100.0" : 3.322382067920195 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3151508428359695, + 3.319187084887637 + ], + [ + 3.3168934669448573, + 3.322382067920195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6646723633911307, + "scoreError" : 0.05434315514451174, + "scoreConfidence" : [ + 1.610329208246619, + 1.7190155185356424 + ], + "scorePercentiles" : { + "0.0" : 1.6570171460694267, + "50.0" : 1.6646417879500253, + "90.0" : 1.6723887315950448, + "95.0" : 1.6723887315950448, + "99.0" : 1.6723887315950448, + "99.9" : 1.6723887315950448, + "99.99" : 1.6723887315950448, + "99.999" : 1.6723887315950448, + "99.9999" : 1.6723887315950448, + "100.0" : 1.6723887315950448 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6577853765003463, + 1.6570171460694267 + ], + [ + 1.6723887315950448, + 1.6714981993997042 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8398016456176536, + "scoreError" : 0.03432004917268803, + "scoreConfidence" : [ + 0.8054815964449655, + 0.8741216947903416 + ], + "scorePercentiles" : { + "0.0" : 0.8320322913729159, + "50.0" : 0.8415760657814932, + "90.0" : 0.8440221595347125, + "95.0" : 0.8440221595347125, + "99.0" : 0.8440221595347125, + "99.9" : 0.8440221595347125, + "99.99" : 0.8440221595347125, + "99.999" : 0.8440221595347125, + "99.9999" : 0.8440221595347125, + "100.0" : 0.8440221595347125 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8320322913729159, + 0.8418494852989352 + ], + [ + 0.8413026462640512, + 0.8440221595347125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.04832769592115, + "scoreError" : 0.27187067208350196, + "scoreConfidence" : [ + 15.776457023837647, + 16.32019836800465 + ], + "scorePercentiles" : { + "0.0" : 15.894931377249218, + "50.0" : 16.09193448463687, + "90.0" : 16.148261716250115, + "95.0" : 16.148261716250115, + "99.0" : 16.148261716250115, + "99.9" : 16.148261716250115, + "99.99" : 16.148261716250115, + "99.999" : 16.148261716250115, + "99.9999" : 16.148261716250115, + "100.0" : 16.148261716250115 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.894931377249218, + 15.964115685485288, + 16.0874696157206 + ], + [ + 16.098788427268538, + 16.09639935355314, + 16.148261716250115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2647.9264001933484, + "scoreError" : 141.246126687054, + "scoreConfidence" : [ + 2506.6802735062943, + 2789.1725268804025 + ], + "scorePercentiles" : { + "0.0" : 2588.698634241166, + "50.0" : 2647.3617284989086, + "90.0" : 2704.505620773411, + "95.0" : 2704.505620773411, + "99.0" : 2704.505620773411, + "99.9" : 2704.505620773411, + "99.99" : 2704.505620773411, + "99.999" : 2704.505620773411, + "99.9999" : 2704.505620773411, + "100.0" : 2704.505620773411 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2618.1870490834576, + 2588.698634241166, + 2603.6292320701937 + ], + [ + 2676.53640791436, + 2704.505620773411, + 2696.0014570775043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74665.97443450178, + "scoreError" : 3158.7404424063757, + "scoreConfidence" : [ + 71507.23399209541, + 77824.71487690815 + ], + "scorePercentiles" : { + "0.0" : 73582.99072670742, + "50.0" : 74651.26138451396, + "90.0" : 75772.54357622322, + "95.0" : 75772.54357622322, + "99.0" : 75772.54357622322, + "99.9" : 75772.54357622322, + "99.99" : 75772.54357622322, + "99.999" : 75772.54357622322, + "99.9999" : 75772.54357622322, + "100.0" : 75772.54357622322 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73740.63996323425, + 73599.30538572317, + 73582.99072670742 + ], + [ + 75772.54357622322, + 75561.88280579365, + 75738.48414932893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.0629998053023, + "scoreError" : 18.94138527021444, + "scoreConfidence" : [ + 325.1216145350879, + 363.0043850755167 + ], + "scorePercentiles" : { + "0.0" : 337.25004844514956, + "50.0" : 343.62889235954134, + "90.0" : 352.3469807290136, + "95.0" : 352.3469807290136, + "99.0" : 352.3469807290136, + "99.9" : 352.3469807290136, + "99.99" : 352.3469807290136, + "99.999" : 352.3469807290136, + "99.9999" : 352.3469807290136, + "100.0" : 352.3469807290136 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.29597583092163, + 352.3469807290136, + 348.69201906732917 + ], + [ + 338.22720910764633, + 337.25004844514956, + 338.5657656517535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.35505918929802, + "scoreError" : 9.190780657305664, + "scoreConfidence" : [ + 97.16427853199235, + 115.54583984660368 + ], + "scorePercentiles" : { + "0.0" : 102.85647297148368, + "50.0" : 105.68465179322885, + "90.0" : 112.16757070644547, + "95.0" : 112.16757070644547, + "99.0" : 112.16757070644547, + "99.9" : 112.16757070644547, + "99.99" : 112.16757070644547, + "99.999" : 112.16757070644547, + "99.9999" : 112.16757070644547, + "100.0" : 112.16757070644547 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.94208342292123, + 107.62640252596964, + 112.16757070644547 + ], + [ + 105.42722016353646, + 102.85647297148368, + 104.11060534543167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06254438412278612, + "scoreError" : 0.0015033842946808585, + "scoreConfidence" : [ + 0.061040999828105263, + 0.06404776841746698 + ], + "scorePercentiles" : { + "0.0" : 0.06179052928200692, + "50.0" : 0.06264674495475323, + "90.0" : 0.06306537395943695, + "95.0" : 0.06306537395943695, + "99.0" : 0.06306537395943695, + "99.9" : 0.06306537395943695, + "99.99" : 0.06306537395943695, + "99.999" : 0.06306537395943695, + "99.9999" : 0.06306537395943695, + "100.0" : 0.06306537395943695 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06296256803314298, + 0.06306537395943695, + 0.06299236989140294 + ], + [ + 0.06212454169436351, + 0.06179052928200692, + 0.06233092187636346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9458640404245714E-4, + "scoreError" : 9.70964383767474E-6, + "scoreConfidence" : [ + 3.848767602047824E-4, + 4.042960478801319E-4 + ], + "scorePercentiles" : { + "0.0" : 3.903585827686922E-4, + "50.0" : 3.9492492658870957E-4, + "90.0" : 3.980631731868366E-4, + "95.0" : 3.980631731868366E-4, + "99.0" : 3.980631731868366E-4, + "99.9" : 3.980631731868366E-4, + "99.99" : 3.980631731868366E-4, + "99.999" : 3.980631731868366E-4, + "99.9999" : 3.980631731868366E-4, + "100.0" : 3.980631731868366E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9257645310684854E-4, + 3.9156388434290256E-4, + 3.903585827686922E-4 + ], + [ + 3.972734000705706E-4, + 3.976829307788922E-4, + 3.980631731868366E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1255006748516653, + "scoreError" : 0.002253001087482237, + "scoreConfidence" : [ + 0.12324767376418307, + 0.12775367593914755 + ], + "scorePercentiles" : { + "0.0" : 0.12461556924783172, + "50.0" : 0.12547914510805042, + "90.0" : 0.1263697855662547, + "95.0" : 0.1263697855662547, + "99.0" : 0.1263697855662547, + "99.9" : 0.1263697855662547, + "99.99" : 0.1263697855662547, + "99.999" : 0.1263697855662547, + "99.9999" : 0.1263697855662547, + "100.0" : 0.1263697855662547 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1262420374297797, + 0.12605911880751292, + 0.1263697855662547 + ], + [ + 0.12481836665002496, + 0.12489917140858792, + 0.12461556924783172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01319577608563824, + "scoreError" : 3.907740862088009E-5, + "scoreConfidence" : [ + 0.01315669867701736, + 0.013234853494259121 + ], + "scorePercentiles" : { + "0.0" : 0.013177232390208935, + "50.0" : 0.013198787004726969, + "90.0" : 0.013212527298022905, + "95.0" : 0.013212527298022905, + "99.0" : 0.013212527298022905, + "99.9" : 0.013212527298022905, + "99.99" : 0.013212527298022905, + "99.999" : 0.013212527298022905, + "99.9999" : 0.013212527298022905, + "100.0" : 0.013212527298022905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013212527298022905, + 0.013201464978310288, + 0.01319610903114365 + ], + [ + 0.013181310612631185, + 0.013177232390208935, + 0.013206012203512488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9594635033562505, + "scoreError" : 0.016855352369805343, + "scoreConfidence" : [ + 0.9426081509864452, + 0.9763188557260558 + ], + "scorePercentiles" : { + "0.0" : 0.9520353520228463, + "50.0" : 0.9592794800224103, + "90.0" : 0.9669648454844324, + "95.0" : 0.9669648454844324, + "99.0" : 0.9669648454844324, + "99.9" : 0.9669648454844324, + "99.99" : 0.9669648454844324, + "99.999" : 0.9669648454844324, + "99.9999" : 0.9669648454844324, + "100.0" : 0.9669648454844324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9552573530423154, + 0.9553309745892243, + 0.9520353520228463 + ], + [ + 0.9639645095430885, + 0.9632279854555962, + 0.9669648454844324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011122006218449066, + "scoreError" : 0.0014124151794276225, + "scoreConfidence" : [ + 0.009709591039021444, + 0.012534421397876689 + ], + "scorePercentiles" : { + "0.0" : 0.010642811646335883, + "50.0" : 0.011116983379102878, + "90.0" : 0.011621793595158018, + "95.0" : 0.011621793595158018, + "99.0" : 0.011621793595158018, + "99.9" : 0.011621793595158018, + "99.99" : 0.011621793595158018, + "99.999" : 0.011621793595158018, + "99.9999" : 0.011621793595158018, + "100.0" : 0.011621793595158018 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011548253599490044, + 0.011573330450884177, + 0.011621793595158018 + ], + [ + 0.010642811646335883, + 0.010660134860110564, + 0.01068571315871571 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.389075628542314, + "scoreError" : 0.08934401070662355, + "scoreConfidence" : [ + 3.29973161783569, + 3.4784196392489375 + ], + "scorePercentiles" : { + "0.0" : 3.332509489673551, + "50.0" : 3.4006833887686287, + "90.0" : 3.4159558674863386, + "95.0" : 3.4159558674863386, + "99.0" : 3.4159558674863386, + "99.9" : 3.4159558674863386, + "99.99" : 3.4159558674863386, + "99.999" : 3.4159558674863386, + "99.9999" : 3.4159558674863386, + "100.0" : 3.4159558674863386 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.393344762550882, + 3.3728789298718813, + 3.332509489673551 + ], + [ + 3.408022014986376, + 3.4159558674863386, + 3.4117427066848567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.92610005753114, + "scoreError" : 0.10223805544992967, + "scoreConfidence" : [ + 2.8238620020812104, + 3.02833811298107 + ], + "scorePercentiles" : { + "0.0" : 2.8899446047385147, + "50.0" : 2.9219609696081195, + "90.0" : 2.980806488822653, + "95.0" : 2.980806488822653, + "99.0" : 2.980806488822653, + "99.9" : 2.980806488822653, + "99.99" : 2.980806488822653, + "99.999" : 2.980806488822653, + "99.9999" : 2.980806488822653, + "100.0" : 2.980806488822653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.980806488822653, + 2.947704010904804, + 2.942322551632833 + ], + [ + 2.8899446047385147, + 2.901599387583406, + 2.8942233015046295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18184344814445005, + "scoreError" : 0.0072012532464625694, + "scoreConfidence" : [ + 0.1746421948979875, + 0.18904470139091262 + ], + "scorePercentiles" : { + "0.0" : 0.17927036310345446, + "50.0" : 0.1817668604106166, + "90.0" : 0.18496747709238878, + "95.0" : 0.18496747709238878, + "99.0" : 0.18496747709238878, + "99.9" : 0.18496747709238878, + "99.99" : 0.18496747709238878, + "99.999" : 0.18496747709238878, + "99.9999" : 0.18496747709238878, + "100.0" : 0.18496747709238878 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17939653808481631, + 0.17927036310345446, + 0.1799786145456509 + ], + [ + 0.18496747709238878, + 0.1835551062755823, + 0.18389258976480757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3337631399472168, + "scoreError" : 0.030501669192729765, + "scoreConfidence" : [ + 0.303261470754487, + 0.3642648091399466 + ], + "scorePercentiles" : { + "0.0" : 0.32348158958434414, + "50.0" : 0.33328192560874653, + "90.0" : 0.34450988772908914, + "95.0" : 0.34450988772908914, + "99.0" : 0.34450988772908914, + "99.9" : 0.34450988772908914, + "99.99" : 0.34450988772908914, + "99.999" : 0.34450988772908914, + "99.9999" : 0.34450988772908914, + "100.0" : 0.34450988772908914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34450988772908914, + 0.3441212088365851, + 0.3423751785750967 + ], + [ + 0.3239023023157895, + 0.32418867264239637, + 0.32348158958434414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15040484837488619, + "scoreError" : 0.0035886436967529182, + "scoreConfidence" : [ + 0.14681620467813328, + 0.1539934920716391 + ], + "scorePercentiles" : { + "0.0" : 0.14919495652563108, + "50.0" : 0.1502442421332506, + "90.0" : 0.15176951359062693, + "95.0" : 0.15176951359062693, + "99.0" : 0.15176951359062693, + "99.9" : 0.15176951359062693, + "99.99" : 0.15176951359062693, + "99.999" : 0.15176951359062693, + "99.9999" : 0.15176951359062693, + "100.0" : 0.15176951359062693 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15176951359062693, + 0.15174155141647572, + 0.15115383114920117 + ], + [ + 0.1492345844500821, + 0.14933465311730007, + 0.14919495652563108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.41562631564230706, + "scoreError" : 0.009840468667838151, + "scoreConfidence" : [ + 0.4057858469744689, + 0.42546678431014523 + ], + "scorePercentiles" : { + "0.0" : 0.4124977937548983, + "50.0" : 0.41429262462655747, + "90.0" : 0.42002929736654204, + "95.0" : 0.42002929736654204, + "99.0" : 0.42002929736654204, + "99.9" : 0.42002929736654204, + "99.99" : 0.42002929736654204, + "99.999" : 0.42002929736654204, + "99.9999" : 0.42002929736654204, + "100.0" : 0.42002929736654204 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4124977937548983, + 0.41304656189335426, + 0.4128038415686274 + ], + [ + 0.42002929736654204, + 0.41984171191065955, + 0.4155386873597607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16031556314285697, + "scoreError" : 0.0028330169401163583, + "scoreConfidence" : [ + 0.1574825462027406, + 0.16314858008297334 + ], + "scorePercentiles" : { + "0.0" : 0.15926494830387003, + "50.0" : 0.16029965080255174, + "90.0" : 0.16164282374810074, + "95.0" : 0.16164282374810074, + "99.0" : 0.16164282374810074, + "99.9" : 0.16164282374810074, + "99.99" : 0.16164282374810074, + "99.999" : 0.16164282374810074, + "99.9999" : 0.16164282374810074, + "100.0" : 0.16164282374810074 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16164282374810074, + 0.15975494800070292, + 0.1592948068431616 + ], + [ + 0.16084435360440055, + 0.15926494830387003, + 0.16109149835690584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04628224904856556, + "scoreError" : 0.004966382401929507, + "scoreConfidence" : [ + 0.04131586664663605, + 0.05124863145049507 + ], + "scorePercentiles" : { + "0.0" : 0.044660849366274555, + "50.0" : 0.046199723221185846, + "90.0" : 0.04825054774334874, + "95.0" : 0.04825054774334874, + "99.0" : 0.04825054774334874, + "99.9" : 0.04825054774334874, + "99.99" : 0.04825054774334874, + "99.999" : 0.04825054774334874, + "99.9999" : 0.04825054774334874, + "100.0" : 0.04825054774334874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.044669575807388215, + 0.044660849366274555, + 0.04469663826240089 + ], + [ + 0.04825054774334874, + 0.047713074932010116, + 0.04770280817997081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9252879.439628795, + "scoreError" : 627035.8808514815, + "scoreConfidence" : [ + 8625843.558777314, + 9879915.320480276 + ], + "scorePercentiles" : { + "0.0" : 9035202.729900632, + "50.0" : 9197328.971140334, + "90.0" : 9658543.075289575, + "95.0" : 9658543.075289575, + "99.0" : 9658543.075289575, + "99.9" : 9658543.075289575, + "99.99" : 9658543.075289575, + "99.999" : 9658543.075289575, + "99.9999" : 9658543.075289575, + "100.0" : 9658543.075289575 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9035202.729900632, + 9094981.092727272, + 9183404.227731865 + ], + [ + 9658543.075289575, + 9211253.714548804, + 9333891.797574626 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-31T22:55:18Z-d61c53a270cff0016e5a0f1f4a43a367f0e76ec8-jdk17.json b/performance-results/2025-07-31T22:55:18Z-d61c53a270cff0016e5a0f1f4a43a367f0e76ec8-jdk17.json new file mode 100644 index 0000000000..ec6df10b4e --- /dev/null +++ b/performance-results/2025-07-31T22:55:18Z-d61c53a270cff0016e5a0f1f4a43a367f0e76ec8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3447429434627516, + "scoreError" : 0.03581451591722982, + "scoreConfidence" : [ + 3.308928427545522, + 3.380557459379981 + ], + "scorePercentiles" : { + "0.0" : 3.337836809185784, + "50.0" : 3.345077001097102, + "90.0" : 3.3509809624710187, + "95.0" : 3.3509809624710187, + "99.0" : 3.3509809624710187, + "99.9" : 3.3509809624710187, + "99.99" : 3.3509809624710187, + "99.999" : 3.3509809624710187, + "99.9999" : 3.3509809624710187, + "100.0" : 3.3509809624710187 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.337836809185784, + 3.346708212858601 + ], + [ + 3.343445789335603, + 3.3509809624710187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6833351354222796, + "scoreError" : 0.029750920572430017, + "scoreConfidence" : [ + 1.6535842148498496, + 1.7130860559947096 + ], + "scorePercentiles" : { + "0.0" : 1.6779923228996667, + "50.0" : 1.6834081003792578, + "90.0" : 1.6885320180309362, + "95.0" : 1.6885320180309362, + "99.0" : 1.6885320180309362, + "99.9" : 1.6885320180309362, + "99.99" : 1.6885320180309362, + "99.999" : 1.6885320180309362, + "99.9999" : 1.6885320180309362, + "100.0" : 1.6885320180309362 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6885320180309362, + 1.6854113765992647 + ], + [ + 1.6779923228996667, + 1.6814048241592512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8509271113617204, + "scoreError" : 0.01930545126804809, + "scoreConfidence" : [ + 0.8316216600936723, + 0.8702325626297684 + ], + "scorePercentiles" : { + "0.0" : 0.848026120672921, + "50.0" : 0.8503695143478552, + "90.0" : 0.8549432960782498, + "95.0" : 0.8549432960782498, + "99.0" : 0.8549432960782498, + "99.9" : 0.8549432960782498, + "99.99" : 0.8549432960782498, + "99.999" : 0.8549432960782498, + "99.9999" : 0.8549432960782498, + "100.0" : 0.8549432960782498 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8494726115078388, + 0.8512664171878717 + ], + [ + 0.848026120672921, + 0.8549432960782498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.23359191816515, + "scoreError" : 0.20565572903796425, + "scoreConfidence" : [ + 16.027936189127185, + 16.439247647203114 + ], + "scorePercentiles" : { + "0.0" : 16.146802884674425, + "50.0" : 16.240562669235327, + "90.0" : 16.30811201802358, + "95.0" : 16.30811201802358, + "99.0" : 16.30811201802358, + "99.9" : 16.30811201802358, + "99.99" : 16.30811201802358, + "99.999" : 16.30811201802358, + "99.9999" : 16.30811201802358, + "100.0" : 16.30811201802358 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.29560499740361, + 16.294454506118964, + 16.30811201802358 + ], + [ + 16.16990627041862, + 16.18667083235169, + 16.146802884674425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2742.3468009268727, + "scoreError" : 14.196156095864847, + "scoreConfidence" : [ + 2728.150644831008, + 2756.5429570227375 + ], + "scorePercentiles" : { + "0.0" : 2738.059704068701, + "50.0" : 2739.686991758973, + "90.0" : 2749.215413532476, + "95.0" : 2749.215413532476, + "99.0" : 2749.215413532476, + "99.9" : 2749.215413532476, + "99.99" : 2749.215413532476, + "99.999" : 2749.215413532476, + "99.9999" : 2749.215413532476, + "100.0" : 2749.215413532476 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2749.215413532476, + 2748.4145869528884, + 2738.059704068701 + ], + [ + 2739.1708541459966, + 2739.0171174892253, + 2740.2031293719497 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75882.37380601972, + "scoreError" : 216.86245467898758, + "scoreConfidence" : [ + 75665.51135134073, + 76099.23626069872 + ], + "scorePercentiles" : { + "0.0" : 75791.66267788902, + "50.0" : 75883.50426015347, + "90.0" : 75960.92447942347, + "95.0" : 75960.92447942347, + "99.0" : 75960.92447942347, + "99.9" : 75960.92447942347, + "99.99" : 75960.92447942347, + "99.999" : 75960.92447942347, + "99.9999" : 75960.92447942347, + "100.0" : 75960.92447942347 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75818.68947607337, + 75791.66267788902, + 75828.58548661624 + ], + [ + 75960.92447942347, + 75955.95768242556, + 75938.42303369069 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 358.20639413166924, + "scoreError" : 2.503616116668585, + "scoreConfidence" : [ + 355.70277801500066, + 360.7100102483378 + ], + "scorePercentiles" : { + "0.0" : 357.1544925888796, + "50.0" : 358.1230203107281, + "90.0" : 359.6826421832757, + "95.0" : 359.6826421832757, + "99.0" : 359.6826421832757, + "99.9" : 359.6826421832757, + "99.99" : 359.6826421832757, + "99.999" : 359.6826421832757, + "99.9999" : 359.6826421832757, + "100.0" : 359.6826421832757 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 357.9541121441845, + 358.62332116975807, + 359.6826421832757 + ], + [ + 357.1544925888796, + 358.29192847727177, + 357.5318682266461 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.45953970685032, + "scoreError" : 8.540372108085162, + "scoreConfidence" : [ + 105.91916759876516, + 122.99991181493549 + ], + "scorePercentiles" : { + "0.0" : 110.93164893203861, + "50.0" : 114.61952880377628, + "90.0" : 117.37124946643245, + "95.0" : 117.37124946643245, + "99.0" : 117.37124946643245, + "99.9" : 117.37124946643245, + "99.99" : 117.37124946643245, + "99.999" : 117.37124946643245, + "99.9999" : 117.37124946643245, + "100.0" : 117.37124946643245 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.16683158143142, + 117.09538384235908, + 117.37124946643245 + ], + [ + 110.93164893203861, + 112.14367376519347, + 112.04845065364694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06161090972431956, + "scoreError" : 0.001154035149373283, + "scoreConfidence" : [ + 0.06045687457494628, + 0.06276494487369284 + ], + "scorePercentiles" : { + "0.0" : 0.061172217654075545, + "50.0" : 0.06162349173350587, + "90.0" : 0.06210324555193293, + "95.0" : 0.06210324555193293, + "99.0" : 0.06210324555193293, + "99.9" : 0.06210324555193293, + "99.99" : 0.06210324555193293, + "99.999" : 0.06210324555193293, + "99.9999" : 0.06210324555193293, + "100.0" : 0.06210324555193293 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061172217654075545, + 0.06133272215543889, + 0.06122548204588173 + ], + [ + 0.06191752962701538, + 0.06210324555193293, + 0.06191426131157285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.759438405070489E-4, + "scoreError" : 1.5227227062947226E-5, + "scoreConfidence" : [ + 3.607166134441017E-4, + 3.911710675699961E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7057527735488406E-4, + "50.0" : 3.7597120138570115E-4, + "90.0" : 3.811299878352407E-4, + "95.0" : 3.811299878352407E-4, + "99.0" : 3.811299878352407E-4, + "99.9" : 3.811299878352407E-4, + "99.99" : 3.811299878352407E-4, + "99.999" : 3.811299878352407E-4, + "99.9999" : 3.811299878352407E-4, + "100.0" : 3.811299878352407E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.811299878352407E-4, + 3.80545023616607E-4, + 3.810010383679906E-4 + ], + [ + 3.7057527735488406E-4, + 3.710143367127759E-4, + 3.7139737915479527E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12403572272138354, + "scoreError" : 0.0016099867476702095, + "scoreConfidence" : [ + 0.12242573597371333, + 0.12564570946905373 + ], + "scorePercentiles" : { + "0.0" : 0.12342072772937082, + "50.0" : 0.12401077159131019, + "90.0" : 0.12463167110346718, + "95.0" : 0.12463167110346718, + "99.0" : 0.12463167110346718, + "99.9" : 0.12463167110346718, + "99.99" : 0.12463167110346718, + "99.999" : 0.12463167110346718, + "99.9999" : 0.12463167110346718, + "100.0" : 0.12463167110346718 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12445210571969037, + 0.12463167110346718, + 0.1245808918787607 + ], + [ + 0.12342072772937082, + 0.12356943746293002, + 0.12355950243408209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013001622683439037, + "scoreError" : 3.24255455442878E-4, + "scoreConfidence" : [ + 0.012677367227996159, + 0.013325878138881916 + ], + "scorePercentiles" : { + "0.0" : 0.012887285901516811, + "50.0" : 0.013007222950893977, + "90.0" : 0.01311277812089003, + "95.0" : 0.01311277812089003, + "99.0" : 0.01311277812089003, + "99.9" : 0.01311277812089003, + "99.99" : 0.01311277812089003, + "99.999" : 0.01311277812089003, + "99.9999" : 0.01311277812089003, + "100.0" : 0.01311277812089003 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012887285901516811, + 0.012890106533732052, + 0.0129117874132664 + ], + [ + 0.013102658488521553, + 0.01311277812089003, + 0.013105119642707372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9898452145949371, + "scoreError" : 0.028663340129279874, + "scoreConfidence" : [ + 0.9611818744656573, + 1.018508554724217 + ], + "scorePercentiles" : { + "0.0" : 0.9803023719858851, + "50.0" : 0.9895225049491614, + "90.0" : 0.9996415455817673, + "95.0" : 0.9996415455817673, + "99.0" : 0.9996415455817673, + "99.9" : 0.9996415455817673, + "99.99" : 0.9996415455817673, + "99.999" : 0.9996415455817673, + "99.9999" : 0.9996415455817673, + "100.0" : 0.9996415455817673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9996415455817673, + 0.9994696580051969, + 0.9983908891883797 + ], + [ + 0.9806541207099432, + 0.9803023719858851, + 0.9806127020984506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010542894109932498, + "scoreError" : 2.009888932115536E-4, + "scoreConfidence" : [ + 0.010341905216720943, + 0.010743883003144052 + ], + "scorePercentiles" : { + "0.0" : 0.01047359392464244, + "50.0" : 0.010543936494095782, + "90.0" : 0.01060966379222543, + "95.0" : 0.01060966379222543, + "99.0" : 0.01060966379222543, + "99.9" : 0.01060966379222543, + "99.99" : 0.01060966379222543, + "99.999" : 0.01060966379222543, + "99.9999" : 0.01060966379222543, + "100.0" : 0.01060966379222543 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010477509751124726, + 0.01047359392464244, + 0.010481427978794542 + ], + [ + 0.010608724203410832, + 0.01060644500939702, + 0.01060966379222543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.148146948868682, + "scoreError" : 0.26140079187105253, + "scoreConfidence" : [ + 2.8867461569976296, + 3.4095477407397343 + ], + "scorePercentiles" : { + "0.0" : 3.0555105430665854, + "50.0" : 3.149699198716333, + "90.0" : 3.236624098381877, + "95.0" : 3.236624098381877, + "99.0" : 3.236624098381877, + "99.9" : 3.236624098381877, + "99.99" : 3.236624098381877, + "99.999" : 3.236624098381877, + "99.9999" : 3.236624098381877, + "100.0" : 3.236624098381877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.236624098381877, + 3.232234904330963, + 3.2305329489664083 + ], + [ + 3.0555105430665854, + 3.0688654484662576, + 3.06511375 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8055585408599355, + "scoreError" : 0.06611911919208836, + "scoreConfidence" : [ + 2.7394394216678473, + 2.8716776600520237 + ], + "scorePercentiles" : { + "0.0" : 2.785817532590529, + "50.0" : 2.796373105520504, + "90.0" : 2.84690062852263, + "95.0" : 2.84690062852263, + "99.0" : 2.84690062852263, + "99.9" : 2.84690062852263, + "99.99" : 2.84690062852263, + "99.999" : 2.84690062852263, + "99.9999" : 2.84690062852263, + "100.0" : 2.84690062852263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.785817532590529, + 2.790505919642857, + 2.789143199386503 + ], + [ + 2.802240291398151, + 2.81874367361894, + 2.84690062852263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17818622258417713, + "scoreError" : 9.51045486120946E-4, + "scoreConfidence" : [ + 0.1772351770980562, + 0.17913726807029806 + ], + "scorePercentiles" : { + "0.0" : 0.1777865706945901, + "50.0" : 0.17822540837365275, + "90.0" : 0.1786671407514606, + "95.0" : 0.1786671407514606, + "99.0" : 0.1786671407514606, + "99.9" : 0.1786671407514606, + "99.99" : 0.1786671407514606, + "99.999" : 0.1786671407514606, + "99.9999" : 0.1786671407514606, + "100.0" : 0.1786671407514606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1786671407514606, + 0.17831284710161724, + 0.1783830009989119 + ], + [ + 0.17782980631279452, + 0.1777865706945901, + 0.17813796964568823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3346599006855217, + "scoreError" : 0.010793068198533514, + "scoreConfidence" : [ + 0.32386683248698817, + 0.34545296888405524 + ], + "scorePercentiles" : { + "0.0" : 0.3309993482391103, + "50.0" : 0.3346490690556416, + "90.0" : 0.33853017345971564, + "95.0" : 0.33853017345971564, + "99.0" : 0.33853017345971564, + "99.9" : 0.33853017345971564, + "99.99" : 0.33853017345971564, + "99.999" : 0.33853017345971564, + "99.9999" : 0.33853017345971564, + "100.0" : 0.33853017345971564 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3310541459595458, + 0.3314079576139188, + 0.3309993482391103 + ], + [ + 0.3378901804973645, + 0.33853017345971564, + 0.33807759834347534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14282208398860097, + "scoreError" : 0.0023631804398264182, + "scoreConfidence" : [ + 0.14045890354877455, + 0.14518526442842739 + ], + "scorePercentiles" : { + "0.0" : 0.14186982019634548, + "50.0" : 0.14302447002571195, + "90.0" : 0.14356884727366698, + "95.0" : 0.14356884727366698, + "99.0" : 0.14356884727366698, + "99.9" : 0.14356884727366698, + "99.99" : 0.14356884727366698, + "99.999" : 0.14356884727366698, + "99.9999" : 0.14356884727366698, + "100.0" : 0.14356884727366698 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14356884727366698, + 0.14355641794430088, + 0.14356471303261745 + ], + [ + 0.14249252210712302, + 0.14188018337755204, + 0.14186982019634548 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40609635142939066, + "scoreError" : 0.005372799986368221, + "scoreConfidence" : [ + 0.4007235514430224, + 0.4114691514157589 + ], + "scorePercentiles" : { + "0.0" : 0.40335263808333, + "50.0" : 0.4059603653504845, + "90.0" : 0.40936235646158253, + "95.0" : 0.40936235646158253, + "99.0" : 0.40936235646158253, + "99.9" : 0.40936235646158253, + "99.99" : 0.40936235646158253, + "99.999" : 0.40936235646158253, + "99.9999" : 0.40936235646158253, + "100.0" : 0.40936235646158253 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40613637062908664, + 0.4060972901928934, + 0.4058234405080756 + ], + [ + 0.40936235646158253, + 0.4058060127013756, + 0.40335263808333 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1536626369787302, + "scoreError" : 0.0018848814311616332, + "scoreConfidence" : [ + 0.15177775554756856, + 0.15554751840989184 + ], + "scorePercentiles" : { + "0.0" : 0.15280170508510835, + "50.0" : 0.15367310626538933, + "90.0" : 0.15464760590736876, + "95.0" : 0.15464760590736876, + "99.0" : 0.15464760590736876, + "99.9" : 0.15464760590736876, + "99.99" : 0.15464760590736876, + "99.999" : 0.15464760590736876, + "99.9999" : 0.15464760590736876, + "100.0" : 0.15464760590736876 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15464760590736876, + 0.1540523418060819, + 0.153907308949596 + ], + [ + 0.15343890358118267, + 0.15280170508510835, + 0.1531279565430435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04684310548716889, + "scoreError" : 0.003715849866710442, + "scoreConfidence" : [ + 0.04312725562045845, + 0.05055895535387933 + ], + "scorePercentiles" : { + "0.0" : 0.045580877894919165, + "50.0" : 0.04688522018283306, + "90.0" : 0.04809616717487495, + "95.0" : 0.04809616717487495, + "99.0" : 0.04809616717487495, + "99.9" : 0.04809616717487495, + "99.99" : 0.04809616717487495, + "99.999" : 0.04809616717487495, + "99.9999" : 0.04809616717487495, + "100.0" : 0.04809616717487495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04809616717487495, + 0.04802994055406665, + 0.04802794923036285 + ], + [ + 0.045742491135303265, + 0.045580877894919165, + 0.04558120693348648 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8650758.197539447, + "scoreError" : 323224.16376427445, + "scoreConfidence" : [ + 8327534.033775172, + 8973982.36130372 + ], + "scorePercentiles" : { + "0.0" : 8534389.760238908, + "50.0" : 8652048.152955076, + "90.0" : 8767666.733567046, + "95.0" : 8767666.733567046, + "99.0" : 8767666.733567046, + "99.9" : 8767666.733567046, + "99.99" : 8767666.733567046, + "99.999" : 8767666.733567046, + "99.9999" : 8767666.733567046, + "100.0" : 8767666.733567046 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8767666.733567046, + 8760342.227670753, + 8737214.230567686 + ], + [ + 8566882.075342465, + 8538054.15784983, + 8534389.760238908 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-02T02:49:39Z-141af0809b409b0c1845c37ecddd9072f3e3b87c-jdk17.json b/performance-results/2025-08-02T02:49:39Z-141af0809b409b0c1845c37ecddd9072f3e3b87c-jdk17.json new file mode 100644 index 0000000000..1cb62b413b --- /dev/null +++ b/performance-results/2025-08-02T02:49:39Z-141af0809b409b0c1845c37ecddd9072f3e3b87c-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3538692326094255, + "scoreError" : 0.03612309866043596, + "scoreConfidence" : [ + 3.3177461339489893, + 3.3899923312698617 + ], + "scorePercentiles" : { + "0.0" : 3.348261028598882, + "50.0" : 3.3532623470115914, + "90.0" : 3.3606912078156372, + "95.0" : 3.3606912078156372, + "99.0" : 3.3606912078156372, + "99.9" : 3.3606912078156372, + "99.99" : 3.3606912078156372, + "99.999" : 3.3606912078156372, + "99.9999" : 3.3606912078156372, + "100.0" : 3.3606912078156372 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3505219653067173, + 3.3606912078156372 + ], + [ + 3.348261028598882, + 3.3560027287164655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6945835007607855, + "scoreError" : 0.015589009096169493, + "scoreConfidence" : [ + 1.678994491664616, + 1.710172509856955 + ], + "scorePercentiles" : { + "0.0" : 1.6910643592749353, + "50.0" : 1.6954557765435476, + "90.0" : 1.6963580906811107, + "95.0" : 1.6963580906811107, + "99.0" : 1.6963580906811107, + "99.9" : 1.6963580906811107, + "99.99" : 1.6963580906811107, + "99.999" : 1.6963580906811107, + "99.9999" : 1.6963580906811107, + "100.0" : 1.6963580906811107 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6959052220868958, + 1.6963580906811107 + ], + [ + 1.6910643592749353, + 1.6950063310001997 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8529746015749877, + "scoreError" : 0.041808631673772065, + "scoreConfidence" : [ + 0.8111659699012157, + 0.8947832332487597 + ], + "scorePercentiles" : { + "0.0" : 0.8437251175707257, + "50.0" : 0.8546738574637633, + "90.0" : 0.8588255738016985, + "95.0" : 0.8588255738016985, + "99.0" : 0.8588255738016985, + "99.9" : 0.8588255738016985, + "99.99" : 0.8588255738016985, + "99.999" : 0.8588255738016985, + "99.9999" : 0.8588255738016985, + "100.0" : 0.8588255738016985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8545782280814558, + 0.8547694868460708 + ], + [ + 0.8437251175707257, + 0.8588255738016985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.570208179654887, + "scoreError" : 0.25431646247726825, + "scoreConfidence" : [ + 16.31589171717762, + 16.824524642132154 + ], + "scorePercentiles" : { + "0.0" : 16.47710476158917, + "50.0" : 16.57294711407239, + "90.0" : 16.65673234796492, + "95.0" : 16.65673234796492, + "99.0" : 16.65673234796492, + "99.9" : 16.65673234796492, + "99.99" : 16.65673234796492, + "99.999" : 16.65673234796492, + "99.9999" : 16.65673234796492, + "100.0" : 16.65673234796492 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.489999214169334, + 16.47710476158917, + 16.495777203084362 + ], + [ + 16.65151852606114, + 16.650117025060418, + 16.65673234796492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2780.459318554716, + "scoreError" : 29.84078468038006, + "scoreConfidence" : [ + 2750.6185338743358, + 2810.3001032350962 + ], + "scorePercentiles" : { + "0.0" : 2768.0277428002055, + "50.0" : 2781.6714029216055, + "90.0" : 2790.358083526049, + "95.0" : 2790.358083526049, + "99.0" : 2790.358083526049, + "99.9" : 2790.358083526049, + "99.99" : 2790.358083526049, + "99.999" : 2790.358083526049, + "99.9999" : 2790.358083526049, + "100.0" : 2790.358083526049 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2789.673732697351, + 2790.358083526049, + 2790.070323764354 + ], + [ + 2770.956955394474, + 2773.66907314586, + 2768.0277428002055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75667.85235526373, + "scoreError" : 3305.78989098499, + "scoreConfidence" : [ + 72362.06246427874, + 78973.64224624872 + ], + "scorePercentiles" : { + "0.0" : 74565.58948713128, + "50.0" : 75676.2576000201, + "90.0" : 76780.24572712336, + "95.0" : 76780.24572712336, + "99.0" : 76780.24572712336, + "99.9" : 76780.24572712336, + "99.99" : 76780.24572712336, + "99.999" : 76780.24572712336, + "99.9999" : 76780.24572712336, + "100.0" : 76780.24572712336 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76710.76973616649, + 76780.24572712336, + 76739.60346718333 + ], + [ + 74565.58948713128, + 74641.74546387368, + 74569.16025010435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 373.0041791672965, + "scoreError" : 4.0136771917274485, + "scoreConfidence" : [ + 368.9905019755691, + 377.01785635902394 + ], + "scorePercentiles" : { + "0.0" : 371.4930048610171, + "50.0" : 372.83837099293794, + "90.0" : 374.8792616792439, + "95.0" : 374.8792616792439, + "99.0" : 374.8792616792439, + "99.9" : 374.8792616792439, + "99.99" : 374.8792616792439, + "99.999" : 374.8792616792439, + "99.9999" : 374.8792616792439, + "100.0" : 374.8792616792439 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 373.386673493575, + 374.3640723361575, + 374.8792616792439 + ], + [ + 371.6119941414846, + 372.29006849230086, + 371.4930048610171 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.37655665345265, + "scoreError" : 3.3837661670949624, + "scoreConfidence" : [ + 110.99279048635769, + 117.76032282054761 + ], + "scorePercentiles" : { + "0.0" : 113.17497237343437, + "50.0" : 114.39786457566868, + "90.0" : 115.51022681474026, + "95.0" : 115.51022681474026, + "99.0" : 115.51022681474026, + "99.9" : 115.51022681474026, + "99.99" : 115.51022681474026, + "99.999" : 115.51022681474026, + "99.9999" : 115.51022681474026, + "100.0" : 115.51022681474026 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.29118232069762, + 113.17497237343437, + 113.36372852685723 + ], + [ + 115.43200062448012, + 115.51022681474026, + 115.48722926050625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06068878381783934, + "scoreError" : 2.6477453476700955E-4, + "scoreConfidence" : [ + 0.06042400928307233, + 0.06095355835260635 + ], + "scorePercentiles" : { + "0.0" : 0.06055761485823634, + "50.0" : 0.0607017497929746, + "90.0" : 0.060793160679655914, + "95.0" : 0.060793160679655914, + "99.0" : 0.060793160679655914, + "99.9" : 0.060793160679655914, + "99.99" : 0.060793160679655914, + "99.999" : 0.060793160679655914, + "99.9999" : 0.060793160679655914, + "100.0" : 0.060793160679655914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060793160679655914, + 0.06076683056038307, + 0.06074698056129267 + ], + [ + 0.06055761485823634, + 0.06065651902465654, + 0.060611597222811495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.665463547441459E-4, + "scoreError" : 1.0163305176535358E-5, + "scoreConfidence" : [ + 3.5638304956761053E-4, + 3.767096599206812E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6315320603756517E-4, + "50.0" : 3.665395814910835E-4, + "90.0" : 3.700238909975227E-4, + "95.0" : 3.700238909975227E-4, + "99.0" : 3.700238909975227E-4, + "99.9" : 3.700238909975227E-4, + "99.99" : 3.700238909975227E-4, + "99.999" : 3.700238909975227E-4, + "99.9999" : 3.700238909975227E-4, + "100.0" : 3.700238909975227E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.631553729872792E-4, + 3.6341307933253635E-4, + 3.6315320603756517E-4 + ], + [ + 3.700238909975227E-4, + 3.69866495460341E-4, + 3.6966608364963073E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12400797335580338, + "scoreError" : 0.0034661896838241047, + "scoreConfidence" : [ + 0.12054178367197928, + 0.1274741630396275 + ], + "scorePercentiles" : { + "0.0" : 0.12297680757027964, + "50.0" : 0.12354673326243973, + "90.0" : 0.12565758567784577, + "95.0" : 0.12565758567784577, + "99.0" : 0.12565758567784577, + "99.9" : 0.12565758567784577, + "99.99" : 0.12565758567784577, + "99.999" : 0.12565758567784577, + "99.9999" : 0.12565758567784577, + "100.0" : 0.12565758567784577 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12565758567784577, + 0.12409282715359989, + 0.12534040607139277 + ], + [ + 0.12300063937127959, + 0.12297680757027964, + 0.12297957429042256 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013013662593494733, + "scoreError" : 2.2378766104029175E-5, + "scoreConfidence" : [ + 0.012991283827390704, + 0.013036041359598762 + ], + "scorePercentiles" : { + "0.0" : 0.013002671547804334, + "50.0" : 0.013013698752754863, + "90.0" : 0.01302614761442029, + "95.0" : 0.01302614761442029, + "99.0" : 0.01302614761442029, + "99.9" : 0.01302614761442029, + "99.99" : 0.01302614761442029, + "99.999" : 0.01302614761442029, + "99.9999" : 0.01302614761442029, + "100.0" : 0.01302614761442029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01302614761442029, + 0.01301728620354352, + 0.013014618940466646 + ], + [ + 0.013002671547804334, + 0.013008472689690518, + 0.01301277856504308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9703116016415669, + "scoreError" : 0.06631356112427532, + "scoreConfidence" : [ + 0.9039980405172916, + 1.0366251627658423 + ], + "scorePercentiles" : { + "0.0" : 0.948474313353566, + "50.0" : 0.9703890799940342, + "90.0" : 0.9920238530899712, + "95.0" : 0.9920238530899712, + "99.0" : 0.9920238530899712, + "99.9" : 0.9920238530899712, + "99.99" : 0.9920238530899712, + "99.999" : 0.9920238530899712, + "99.9999" : 0.9920238530899712, + "100.0" : 0.9920238530899712 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.948474313353566, + 0.9487564482496916, + 0.9489427386848848 + ], + [ + 0.9918368351681047, + 0.9920238530899712, + 0.9918354213031836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010656141134302946, + "scoreError" : 0.001117436934315331, + "scoreConfidence" : [ + 0.009538704199987615, + 0.011773578068618278 + ], + "scorePercentiles" : { + "0.0" : 0.010290066931183721, + "50.0" : 0.010653311125516885, + "90.0" : 0.011024971598288092, + "95.0" : 0.011024971598288092, + "99.0" : 0.011024971598288092, + "99.9" : 0.011024971598288092, + "99.99" : 0.011024971598288092, + "99.999" : 0.011024971598288092, + "99.9999" : 0.011024971598288092, + "100.0" : 0.011024971598288092 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011022484485153099, + 0.011024971598288092, + 0.011012204200831181 + ], + [ + 0.010292701540158997, + 0.010290066931183721, + 0.01029441805020259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.038373796103457, + "scoreError" : 0.09059080459191333, + "scoreConfidence" : [ + 2.9477829915115437, + 3.12896460069537 + ], + "scorePercentiles" : { + "0.0" : 3.006889778111846, + "50.0" : 3.038135464581415, + "90.0" : 3.0710444530386742, + "95.0" : 3.0710444530386742, + "99.0" : 3.0710444530386742, + "99.9" : 3.0710444530386742, + "99.99" : 3.0710444530386742, + "99.999" : 3.0710444530386742, + "99.9999" : 3.0710444530386742, + "100.0" : 3.0710444530386742 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.06550787377451, + 3.0710444530386742, + 3.066835171060699 + ], + [ + 3.006889778111846, + 3.0107630553883205, + 3.009202445246691 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6968318191828335, + "scoreError" : 0.02532849952986353, + "scoreConfidence" : [ + 2.67150331965297, + 2.7221603187126973 + ], + "scorePercentiles" : { + "0.0" : 2.688398769354839, + "50.0" : 2.6954899621679917, + "90.0" : 2.7072846253383864, + "95.0" : 2.7072846253383864, + "99.0" : 2.7072846253383864, + "99.9" : 2.7072846253383864, + "99.99" : 2.7072846253383864, + "99.999" : 2.7072846253383864, + "99.9999" : 2.7072846253383864, + "100.0" : 2.7072846253383864 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7072846253383864, + 2.7054583205301594, + 2.702052080518779 + ], + [ + 2.6888692755376344, + 2.688927843817204, + 2.688398769354839 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1760095219852856, + "scoreError" : 0.0025447639255362143, + "scoreConfidence" : [ + 0.1734647580597494, + 0.17855428591082181 + ], + "scorePercentiles" : { + "0.0" : 0.17487516932762087, + "50.0" : 0.17619766117759345, + "90.0" : 0.17693832892175945, + "95.0" : 0.17693832892175945, + "99.0" : 0.17693832892175945, + "99.9" : 0.17693832892175945, + "99.99" : 0.17693832892175945, + "99.999" : 0.17693832892175945, + "99.9999" : 0.17693832892175945, + "100.0" : 0.17693832892175945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17693832892175945, + 0.17671940400791689, + 0.1767422110602499 + ], + [ + 0.1751061002468963, + 0.17567591834727003, + 0.17487516932762087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3318867529874087, + "scoreError" : 0.010010212818511206, + "scoreConfidence" : [ + 0.3218765401688975, + 0.34189696580591994 + ], + "scorePercentiles" : { + "0.0" : 0.32840706433286265, + "50.0" : 0.3318677800591868, + "90.0" : 0.33537746971627874, + "95.0" : 0.33537746971627874, + "99.0" : 0.33537746971627874, + "99.9" : 0.33537746971627874, + "99.99" : 0.33537746971627874, + "99.999" : 0.33537746971627874, + "99.9999" : 0.33537746971627874, + "100.0" : 0.33537746971627874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33537746971627874, + 0.3349437455203135, + 0.3351015875749757 + ], + [ + 0.3287918145980602, + 0.3286988361819616, + 0.32840706433286265 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14688343135764284, + "scoreError" : 0.006940425772100712, + "scoreConfidence" : [ + 0.13994300558554212, + 0.15382385712974356 + ], + "scorePercentiles" : { + "0.0" : 0.14458298824566984, + "50.0" : 0.14683738440994837, + "90.0" : 0.1492717196871315, + "95.0" : 0.1492717196871315, + "99.0" : 0.1492717196871315, + "99.9" : 0.1492717196871315, + "99.99" : 0.1492717196871315, + "99.999" : 0.1492717196871315, + "99.9999" : 0.1492717196871315, + "100.0" : 0.1492717196871315 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14467778987268518, + 0.14461610861894433, + 0.14458298824566984 + ], + [ + 0.14915500277421473, + 0.1492717196871315, + 0.1489969789472116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39991443001602334, + "scoreError" : 0.005986701874403861, + "scoreConfidence" : [ + 0.39392772814161947, + 0.4059011318904272 + ], + "scorePercentiles" : { + "0.0" : 0.397049660499464, + "50.0" : 0.4006146245204564, + "90.0" : 0.4026165764554312, + "95.0" : 0.4026165764554312, + "99.0" : 0.4026165764554312, + "99.9" : 0.4026165764554312, + "99.99" : 0.4026165764554312, + "99.999" : 0.4026165764554312, + "99.9999" : 0.4026165764554312, + "100.0" : 0.4026165764554312 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4026165764554312, + 0.3976360146327886, + 0.397049660499464 + ], + [ + 0.4009550794675434, + 0.40072897010619113, + 0.4005002789347217 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1541356535041077, + "scoreError" : 0.013634881816485101, + "scoreConfidence" : [ + 0.14050077168762262, + 0.1677705353205928 + ], + "scorePercentiles" : { + "0.0" : 0.14974724517085441, + "50.0" : 0.15354035008862116, + "90.0" : 0.16062211953291894, + "95.0" : 0.16062211953291894, + "99.0" : 0.16062211953291894, + "99.9" : 0.16062211953291894, + "99.99" : 0.16062211953291894, + "99.999" : 0.16062211953291894, + "99.9999" : 0.16062211953291894, + "100.0" : 0.16062211953291894 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14989337458780502, + 0.14986371256874823, + 0.14974724517085441 + ], + [ + 0.16062211953291894, + 0.15750014357488226, + 0.1571873255894373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046725013202832795, + "scoreError" : 0.0024956819775445597, + "scoreConfidence" : [ + 0.044229331225288236, + 0.049220695180377354 + ], + "scorePercentiles" : { + "0.0" : 0.045770405705628736, + "50.0" : 0.046713371945552085, + "90.0" : 0.04776599891572768, + "95.0" : 0.04776599891572768, + "99.0" : 0.04776599891572768, + "99.9" : 0.04776599891572768, + "99.99" : 0.04776599891572768, + "99.999" : 0.04776599891572768, + "99.9999" : 0.04776599891572768, + "100.0" : 0.04776599891572768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04776599891572768, + 0.047406149136987014, + 0.047401607019107256 + ], + [ + 0.046025136871996906, + 0.045770405705628736, + 0.04598078156754917 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8741998.630667271, + "scoreError" : 133134.10169957188, + "scoreConfidence" : [ + 8608864.528967699, + 8875132.732366843 + ], + "scorePercentiles" : { + "0.0" : 8692009.231972199, + "50.0" : 8742702.747062664, + "90.0" : 8795589.088830255, + "95.0" : 8795589.088830255, + "99.0" : 8795589.088830255, + "99.9" : 8795589.088830255, + "99.99" : 8795589.088830255, + "99.999" : 8795589.088830255, + "99.9999" : 8795589.088830255, + "100.0" : 8795589.088830255 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8692009.231972199, + 8697880.474782608, + 8707899.744125327 + ], + [ + 8795589.088830255, + 8781107.494293239, + 8777505.75 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-07T01:48:36Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json b/performance-results/2025-08-07T01:48:36Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json new file mode 100644 index 0000000000..3ca8d4f4b5 --- /dev/null +++ b/performance-results/2025-08-07T01:48:36Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3208636819786546, + "scoreError" : 0.04580967327287364, + "scoreConfidence" : [ + 3.275054008705781, + 3.366673355251528 + ], + "scorePercentiles" : { + "0.0" : 3.3132820513451287, + "50.0" : 3.3199293041279994, + "90.0" : 3.330314068313491, + "95.0" : 3.330314068313491, + "99.0" : 3.330314068313491, + "99.9" : 3.330314068313491, + "99.99" : 3.330314068313491, + "99.999" : 3.330314068313491, + "99.9999" : 3.330314068313491, + "100.0" : 3.330314068313491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3132820513451287, + 3.3209849715656574 + ], + [ + 3.318873636690341, + 3.330314068313491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6833359157782506, + "scoreError" : 0.027371723311678902, + "scoreConfidence" : [ + 1.6559641924665718, + 1.7107076390899294 + ], + "scorePercentiles" : { + "0.0" : 1.6770908381894634, + "50.0" : 1.6849180589355717, + "90.0" : 1.6864167070523952, + "95.0" : 1.6864167070523952, + "99.0" : 1.6864167070523952, + "99.9" : 1.6864167070523952, + "99.99" : 1.6864167070523952, + "99.999" : 1.6864167070523952, + "99.9999" : 1.6864167070523952, + "100.0" : 1.6864167070523952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6770908381894634, + 1.6853227167551017 + ], + [ + 1.6845134011160414, + 1.6864167070523952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8428819633863808, + "scoreError" : 0.03064381179271536, + "scoreConfidence" : [ + 0.8122381515936654, + 0.8735257751790961 + ], + "scorePercentiles" : { + "0.0" : 0.838343794770164, + "50.0" : 0.8420920187446153, + "90.0" : 0.8490000212861285, + "95.0" : 0.8490000212861285, + "99.0" : 0.8490000212861285, + "99.9" : 0.8490000212861285, + "99.99" : 0.8490000212861285, + "99.999" : 0.8490000212861285, + "99.9999" : 0.8490000212861285, + "100.0" : 0.8490000212861285 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.838343794770164, + 0.8400683191048959 + ], + [ + 0.8441157183843346, + 0.8490000212861285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.13158589597619, + "scoreError" : 0.2949796815419324, + "scoreConfidence" : [ + 15.836606214434259, + 16.426565577518122 + ], + "scorePercentiles" : { + "0.0" : 16.00707175755424, + "50.0" : 16.127908886444196, + "90.0" : 16.2512795822699, + "95.0" : 16.2512795822699, + "99.0" : 16.2512795822699, + "99.9" : 16.2512795822699, + "99.99" : 16.2512795822699, + "99.999" : 16.2512795822699, + "99.9999" : 16.2512795822699, + "100.0" : 16.2512795822699 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.230027418003452, + 16.2512795822699, + 16.192473907725322 + ], + [ + 16.00707175755424, + 16.045318845141175, + 16.063343865163066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2652.8745605883023, + "scoreError" : 173.23432477660106, + "scoreConfidence" : [ + 2479.640235811701, + 2826.1088853649035 + ], + "scorePercentiles" : { + "0.0" : 2589.289657289064, + "50.0" : 2653.720236189015, + "90.0" : 2715.7792490270385, + "95.0" : 2715.7792490270385, + "99.0" : 2715.7792490270385, + "99.9" : 2715.7792490270385, + "99.99" : 2715.7792490270385, + "99.999" : 2715.7792490270385, + "99.9999" : 2715.7792490270385, + "100.0" : 2715.7792490270385 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2715.7792490270385, + 2701.3560855860956, + 2709.5602372662547 + ], + [ + 2589.289657289064, + 2606.084386791935, + 2595.177747569427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77452.58901901603, + "scoreError" : 130.37351494547053, + "scoreConfidence" : [ + 77322.21550407055, + 77582.9625339615 + ], + "scorePercentiles" : { + "0.0" : 77396.64791708409, + "50.0" : 77461.68315541977, + "90.0" : 77519.13192653612, + "95.0" : 77519.13192653612, + "99.0" : 77519.13192653612, + "99.9" : 77519.13192653612, + "99.99" : 77519.13192653612, + "99.999" : 77519.13192653612, + "99.9999" : 77519.13192653612, + "100.0" : 77519.13192653612 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77519.13192653612, + 77403.1431374836, + 77472.01298331299 + ], + [ + 77451.35332752657, + 77396.64791708409, + 77473.24482215285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 355.6776502403723, + "scoreError" : 16.88069459927166, + "scoreConfidence" : [ + 338.7969556411007, + 372.55834483964395 + ], + "scorePercentiles" : { + "0.0" : 349.4690699254441, + "50.0" : 355.79798047323163, + "90.0" : 361.88205282147237, + "95.0" : 361.88205282147237, + "99.0" : 361.88205282147237, + "99.9" : 361.88205282147237, + "99.99" : 361.88205282147237, + "99.999" : 361.88205282147237, + "99.9999" : 361.88205282147237, + "100.0" : 361.88205282147237 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.4690699254441, + 349.6388975607928, + 351.67559329181483 + ], + [ + 361.88205282147237, + 361.47992018806144, + 359.92036765464843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 111.92848815247207, + "scoreError" : 3.1426868238339214, + "scoreConfidence" : [ + 108.78580132863814, + 115.071174976306 + ], + "scorePercentiles" : { + "0.0" : 110.82227061142484, + "50.0" : 111.88808486678838, + "90.0" : 113.15070203821811, + "95.0" : 113.15070203821811, + "99.0" : 113.15070203821811, + "99.9" : 113.15070203821811, + "99.99" : 113.15070203821811, + "99.999" : 113.15070203821811, + "99.9999" : 113.15070203821811, + "100.0" : 113.15070203821811 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.1171218945592, + 110.82236087941833, + 110.82227061142484 + ], + [ + 113.15070203821811, + 112.99942565219425, + 112.65904783901756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06235659807570962, + "scoreError" : 0.0014464124231325201, + "scoreConfidence" : [ + 0.060910185652577095, + 0.06380301049884214 + ], + "scorePercentiles" : { + "0.0" : 0.061804266081184646, + "50.0" : 0.06232507727881316, + "90.0" : 0.06302065593234224, + "95.0" : 0.06302065593234224, + "99.0" : 0.06302065593234224, + "99.9" : 0.06302065593234224, + "99.99" : 0.06302065593234224, + "99.999" : 0.06302065593234224, + "99.9999" : 0.06302065593234224, + "100.0" : 0.06302065593234224 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06276964583372564, + 0.06302065593234224, + 0.06264006651674976 + ], + [ + 0.061804266081184646, + 0.0618948660493789, + 0.062010088040876564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.714960413853132E-4, + "scoreError" : 2.6429742408544177E-5, + "scoreConfidence" : [ + 3.4506629897676906E-4, + 3.979257837938574E-4 + ], + "scorePercentiles" : { + "0.0" : 3.619770998204943E-4, + "50.0" : 3.72127742135605E-4, + "90.0" : 3.802390087861573E-4, + "95.0" : 3.802390087861573E-4, + "99.0" : 3.802390087861573E-4, + "99.9" : 3.802390087861573E-4, + "99.99" : 3.802390087861573E-4, + "99.999" : 3.802390087861573E-4, + "99.9999" : 3.802390087861573E-4, + "100.0" : 3.802390087861573E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8017938542329676E-4, + 3.797701007249324E-4, + 3.802390087861573E-4 + ], + [ + 3.644853835462777E-4, + 3.619770998204943E-4, + 3.6232527001072107E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12215615043149258, + "scoreError" : 0.001683679663807582, + "scoreConfidence" : [ + 0.120472470767685, + 0.12383983009530017 + ], + "scorePercentiles" : { + "0.0" : 0.12155620009967302, + "50.0" : 0.12212646035053538, + "90.0" : 0.12278038979471564, + "95.0" : 0.12278038979471564, + "99.0" : 0.12278038979471564, + "99.9" : 0.12278038979471564, + "99.99" : 0.12278038979471564, + "99.999" : 0.12278038979471564, + "99.9999" : 0.12278038979471564, + "100.0" : 0.12278038979471564 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12155620009967302, + 0.1215864094374263, + 0.12170178735548254 + ], + [ + 0.12276098255606978, + 0.12255113334558823, + 0.12278038979471564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013095239311012754, + "scoreError" : 2.1457643491175555E-4, + "scoreConfidence" : [ + 0.012880662876100998, + 0.013309815745924509 + ], + "scorePercentiles" : { + "0.0" : 0.013023623038183389, + "50.0" : 0.013092765134537328, + "90.0" : 0.013174280811631167, + "95.0" : 0.013174280811631167, + "99.0" : 0.013174280811631167, + "99.9" : 0.013174280811631167, + "99.99" : 0.013174280811631167, + "99.999" : 0.013174280811631167, + "99.9999" : 0.013174280811631167, + "100.0" : 0.013174280811631167 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013174280811631167, + 0.013163488156337659, + 0.013156905002479992 + ], + [ + 0.013023623038183389, + 0.013024513590849652, + 0.013028625266594663 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9793543314561045, + "scoreError" : 0.04708738317838406, + "scoreConfidence" : [ + 0.9322669482777205, + 1.0264417146344886 + ], + "scorePercentiles" : { + "0.0" : 0.9632218911682559, + "50.0" : 0.979271090448355, + "90.0" : 0.9957121061330148, + "95.0" : 0.9957121061330148, + "99.0" : 0.9957121061330148, + "99.9" : 0.9957121061330148, + "99.99" : 0.9957121061330148, + "99.999" : 0.9957121061330148, + "99.9999" : 0.9957121061330148, + "100.0" : 0.9957121061330148 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.964778833783523, + 0.9641274360358624, + 0.9632218911682559 + ], + [ + 0.9957121061330148, + 0.9945223745027844, + 0.9937633471131869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.0111349196208136, + "scoreError" : 9.503379772231944E-4, + "scoreConfidence" : [ + 0.010184581643590407, + 0.012085257598036794 + ], + "scorePercentiles" : { + "0.0" : 0.01082286327616846, + "50.0" : 0.01113552968040572, + "90.0" : 0.011446806116562198, + "95.0" : 0.011446806116562198, + "99.0" : 0.011446806116562198, + "99.9" : 0.011446806116562198, + "99.99" : 0.011446806116562198, + "99.999" : 0.011446806116562198, + "99.9999" : 0.011446806116562198, + "100.0" : 0.011446806116562198 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010823839758159834, + 0.01082997867427918, + 0.01082286327616846 + ], + [ + 0.011446806116562198, + 0.01144494921317967, + 0.011441080686532261 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1590813478106075, + "scoreError" : 0.11972455084288515, + "scoreConfidence" : [ + 3.039356796967722, + 3.2788058986534927 + ], + "scorePercentiles" : { + "0.0" : 3.1031715552109183, + "50.0" : 3.162815038149388, + "90.0" : 3.2102676148908857, + "95.0" : 3.2102676148908857, + "99.0" : 3.2102676148908857, + "99.9" : 3.2102676148908857, + "99.99" : 3.2102676148908857, + "99.999" : 3.2102676148908857, + "99.9999" : 3.2102676148908857, + "100.0" : 3.2102676148908857 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.190967752393108, + 3.186526501910828, + 3.2102676148908857 + ], + [ + 3.1391035743879474, + 3.1031715552109183, + 3.1244510880699563 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.85322322362272, + "scoreError" : 0.09885376417133689, + "scoreConfidence" : [ + 2.7543694594513832, + 2.952076987794057 + ], + "scorePercentiles" : { + "0.0" : 2.809723872752809, + "50.0" : 2.85834809433244, + "90.0" : 2.886439058874459, + "95.0" : 2.886439058874459, + "99.0" : 2.886439058874459, + "99.9" : 2.886439058874459, + "99.99" : 2.886439058874459, + "99.999" : 2.886439058874459, + "99.9999" : 2.886439058874459, + "100.0" : 2.886439058874459 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.809723872752809, + 2.8222250530474042, + 2.8334311560906515 + ], + [ + 2.886439058874459, + 2.883265032574229, + 2.8842551683967703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18325042593071827, + "scoreError" : 0.002102624871295671, + "scoreConfidence" : [ + 0.1811478010594226, + 0.18535305080201395 + ], + "scorePercentiles" : { + "0.0" : 0.1825286501907387, + "50.0" : 0.18324116609043567, + "90.0" : 0.18404596240061838, + "95.0" : 0.18404596240061838, + "99.0" : 0.18404596240061838, + "99.9" : 0.18404596240061838, + "99.99" : 0.18404596240061838, + "99.999" : 0.18404596240061838, + "99.9999" : 0.18404596240061838, + "100.0" : 0.18404596240061838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18389021076826892, + 0.18404596240061838, + 0.18385952144656284 + ], + [ + 0.18262281073430853, + 0.1825554000438124, + 0.1825286501907387 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3298057717309419, + "scoreError" : 0.014314023604912345, + "scoreConfidence" : [ + 0.31549174812602954, + 0.34411979533585424 + ], + "scorePercentiles" : { + "0.0" : 0.3249710869918435, + "50.0" : 0.3293926807585337, + "90.0" : 0.33626212286482854, + "95.0" : 0.33626212286482854, + "99.0" : 0.33626212286482854, + "99.9" : 0.33626212286482854, + "99.99" : 0.33626212286482854, + "99.999" : 0.33626212286482854, + "99.9999" : 0.33626212286482854, + "100.0" : 0.33626212286482854 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32522578721259227, + 0.32554677889185496, + 0.3249710869918435 + ], + [ + 0.33626212286482854, + 0.3335902717993195, + 0.33323858262521244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14617845675663657, + "scoreError" : 0.004749918590184482, + "scoreConfidence" : [ + 0.1414285381664521, + 0.15092837534682105 + ], + "scorePercentiles" : { + "0.0" : 0.14452339662398475, + "50.0" : 0.14612928532678543, + "90.0" : 0.14800443399242244, + "95.0" : 0.14800443399242244, + "99.0" : 0.14800443399242244, + "99.9" : 0.14800443399242244, + "99.99" : 0.14800443399242244, + "99.999" : 0.14800443399242244, + "99.9999" : 0.14800443399242244, + "100.0" : 0.14800443399242244 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14800443399242244, + 0.14763115093448287, + 0.1475132841928251 + ], + [ + 0.14452339662398475, + 0.14474528646074572, + 0.14465318833535845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40320287410244265, + "scoreError" : 0.0176026626440897, + "scoreConfidence" : [ + 0.38560021145835294, + 0.42080553674653237 + ], + "scorePercentiles" : { + "0.0" : 0.3975365605819685, + "50.0" : 0.40213085753327055, + "90.0" : 0.41145547895494755, + "95.0" : 0.41145547895494755, + "99.0" : 0.41145547895494755, + "99.9" : 0.41145547895494755, + "99.99" : 0.41145547895494755, + "99.999" : 0.41145547895494755, + "99.9999" : 0.41145547895494755, + "100.0" : 0.41145547895494755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4083749086491343, + 0.41145547895494755, + 0.406387611183355 + ], + [ + 0.3978741038831861, + 0.39758858136206415, + 0.3975365605819685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15886284220924662, + "scoreError" : 0.006720146896817238, + "scoreConfidence" : [ + 0.15214269531242938, + 0.16558298910606387 + ], + "scorePercentiles" : { + "0.0" : 0.1567474936675131, + "50.0" : 0.1583959596263405, + "90.0" : 0.16280497667073668, + "95.0" : 0.16280497667073668, + "99.0" : 0.16280497667073668, + "99.9" : 0.16280497667073668, + "99.99" : 0.16280497667073668, + "99.999" : 0.16280497667073668, + "99.9999" : 0.16280497667073668, + "100.0" : 0.16280497667073668 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16280497667073668, + 0.1599544472240439, + 0.15964773795877968 + ], + [ + 0.15714418129390134, + 0.15687821644050515, + 0.1567474936675131 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047515188635482764, + "scoreError" : 0.003605761918698489, + "scoreConfidence" : [ + 0.04390942671678427, + 0.051120950554181255 + ], + "scorePercentiles" : { + "0.0" : 0.046330033199596006, + "50.0" : 0.04749170311889411, + "90.0" : 0.04880777814220452, + "95.0" : 0.04880777814220452, + "99.0" : 0.04880777814220452, + "99.9" : 0.04880777814220452, + "99.99" : 0.04880777814220452, + "99.999" : 0.04880777814220452, + "99.9999" : 0.04880777814220452, + "100.0" : 0.04880777814220452 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04880777814220452, + 0.048628350406527784, + 0.04862617113209566 + ], + [ + 0.046330033199596006, + 0.04635723510569256, + 0.04634156382678004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8752967.31729354, + "scoreError" : 103177.6190069826, + "scoreConfidence" : [ + 8649789.698286558, + 8856144.936300522 + ], + "scorePercentiles" : { + "0.0" : 8714258.959930314, + "50.0" : 8753963.713495454, + "90.0" : 8796975.933157431, + "95.0" : 8796975.933157431, + "99.0" : 8796975.933157431, + "99.9" : 8796975.933157431, + "99.99" : 8796975.933157431, + "99.999" : 8796975.933157431, + "99.9999" : 8796975.933157431, + "100.0" : 8796975.933157431 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8775682.888596492, + 8796975.933157431, + 8783685.896400351 + ], + [ + 8732244.538394416, + 8714258.959930314, + 8714955.68728223 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-07T01:49:00Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json b/performance-results/2025-08-07T01:49:00Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json new file mode 100644 index 0000000000..06a95fe354 --- /dev/null +++ b/performance-results/2025-08-07T01:49:00Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3553767474307996, + "scoreError" : 0.03923900512356873, + "scoreConfidence" : [ + 3.3161377423072307, + 3.3946157525543685 + ], + "scorePercentiles" : { + "0.0" : 3.349702898564459, + "50.0" : 3.354481304238947, + "90.0" : 3.362841482680845, + "95.0" : 3.362841482680845, + "99.0" : 3.362841482680845, + "99.9" : 3.362841482680845, + "99.99" : 3.362841482680845, + "99.999" : 3.362841482680845, + "99.9999" : 3.362841482680845, + "100.0" : 3.362841482680845 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.351233284546996, + 3.3577293239308985 + ], + [ + 3.349702898564459, + 3.362841482680845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6827242034938557, + "scoreError" : 0.01606673242181253, + "scoreConfidence" : [ + 1.6666574710720432, + 1.698790935915668 + ], + "scorePercentiles" : { + "0.0" : 1.6804007362502646, + "50.0" : 1.682170684023235, + "90.0" : 1.686154709678688, + "95.0" : 1.686154709678688, + "99.0" : 1.686154709678688, + "99.9" : 1.686154709678688, + "99.99" : 1.686154709678688, + "99.999" : 1.686154709678688, + "99.9999" : 1.686154709678688, + "100.0" : 1.686154709678688 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6804007362502646, + 1.686154709678688 + ], + [ + 1.6815517783403309, + 1.6827895897061393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8465421218673161, + "scoreError" : 0.025219223195345496, + "scoreConfidence" : [ + 0.8213228986719706, + 0.8717613450626617 + ], + "scorePercentiles" : { + "0.0" : 0.8430296661096958, + "50.0" : 0.8457877764480806, + "90.0" : 0.8515632684634078, + "95.0" : 0.8515632684634078, + "99.0" : 0.8515632684634078, + "99.9" : 0.8515632684634078, + "99.99" : 0.8515632684634078, + "99.999" : 0.8515632684634078, + "99.9999" : 0.8515632684634078, + "100.0" : 0.8515632684634078 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8430296661096958, + 0.8476593977519014 + ], + [ + 0.8439161551442599, + 0.8515632684634078 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.317191768123365, + "scoreError" : 0.10865551846388044, + "scoreConfidence" : [ + 16.208536249659485, + 16.425847286587246 + ], + "scorePercentiles" : { + "0.0" : 16.244522121204593, + "50.0" : 16.330395034066186, + "90.0" : 16.34799854290687, + "95.0" : 16.34799854290687, + "99.0" : 16.34799854290687, + "99.9" : 16.34799854290687, + "99.99" : 16.34799854290687, + "99.999" : 16.34799854290687, + "99.9999" : 16.34799854290687, + "100.0" : 16.34799854290687 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.308098020434834, + 16.31937473877467, + 16.244522121204593 + ], + [ + 16.341415329357705, + 16.341741856061535, + 16.34799854290687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2717.6842537697908, + "scoreError" : 35.13614267279007, + "scoreConfidence" : [ + 2682.548111097001, + 2752.8203964425807 + ], + "scorePercentiles" : { + "0.0" : 2704.3867070628435, + "50.0" : 2717.726321649926, + "90.0" : 2730.0705368652452, + "95.0" : 2730.0705368652452, + "99.0" : 2730.0705368652452, + "99.9" : 2730.0705368652452, + "99.99" : 2730.0705368652452, + "99.999" : 2730.0705368652452, + "99.9999" : 2730.0705368652452, + "100.0" : 2730.0705368652452 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2727.9579265635703, + 2729.166432993967, + 2730.0705368652452 + ], + [ + 2704.3867070628435, + 2707.494716736282, + 2707.0292023968345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75746.85030993138, + "scoreError" : 2575.805105209659, + "scoreConfidence" : [ + 73171.04520472173, + 78322.65541514104 + ], + "scorePercentiles" : { + "0.0" : 74857.2209027777, + "50.0" : 75750.24782517519, + "90.0" : 76617.45575115184, + "95.0" : 76617.45575115184, + "99.0" : 76617.45575115184, + "99.9" : 76617.45575115184, + "99.99" : 76617.45575115184, + "99.999" : 76617.45575115184, + "99.9999" : 76617.45575115184, + "100.0" : 76617.45575115184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76588.85152366273, + 76547.69015415483, + 76617.45575115184 + ], + [ + 74952.80549619555, + 74917.07803164568, + 74857.2209027777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.39537425344446, + "scoreError" : 2.8352800652013377, + "scoreConfidence" : [ + 359.5600941882431, + 365.2306543186458 + ], + "scorePercentiles" : { + "0.0" : 361.44481597898664, + "50.0" : 361.98994286065476, + "90.0" : 363.75557907807195, + "95.0" : 363.75557907807195, + "99.0" : 363.75557907807195, + "99.9" : 363.75557907807195, + "99.99" : 363.75557907807195, + "99.999" : 363.75557907807195, + "99.9999" : 363.75557907807195, + "100.0" : 363.75557907807195 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 363.558728349338, + 363.75557907807195, + 362.2076379216283 + ], + [ + 361.63323639296016, + 361.7722477996812, + 361.44481597898664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.620252125954, + "scoreError" : 4.415550724330574, + "scoreConfidence" : [ + 111.20470140162342, + 120.03580285028457 + ], + "scorePercentiles" : { + "0.0" : 113.16468960666198, + "50.0" : 116.01025594509699, + "90.0" : 117.0057133562096, + "95.0" : 117.0057133562096, + "99.0" : 117.0057133562096, + "99.9" : 117.0057133562096, + "99.99" : 117.0057133562096, + "99.999" : 117.0057133562096, + "99.9999" : 117.0057133562096, + "100.0" : 117.0057133562096 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.905316758973, + 116.87697708217105, + 117.0057133562096 + ], + [ + 113.16468960666198, + 114.62528114368558, + 115.1435348080229 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060930622380201326, + "scoreError" : 0.0012205252989673568, + "scoreConfidence" : [ + 0.05971009708123397, + 0.06215114767916868 + ], + "scorePercentiles" : { + "0.0" : 0.06050883949608815, + "50.0" : 0.060910588813798155, + "90.0" : 0.06138525038058291, + "95.0" : 0.06138525038058291, + "99.0" : 0.06138525038058291, + "99.9" : 0.06138525038058291, + "99.99" : 0.06138525038058291, + "99.999" : 0.06138525038058291, + "99.9999" : 0.06138525038058291, + "100.0" : 0.06138525038058291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06138525038058291, + 0.061271278798610385, + 0.06132256751801318 + ], + [ + 0.06050883949608815, + 0.06054589925892738, + 0.060549898828985926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6517484236350817E-4, + "scoreError" : 3.193417905794263E-5, + "scoreConfidence" : [ + 3.3324066330556553E-4, + 3.971090214214508E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5437801649659855E-4, + "50.0" : 3.652435895852092E-4, + "90.0" : 3.756493454225255E-4, + "95.0" : 3.756493454225255E-4, + "99.0" : 3.756493454225255E-4, + "99.9" : 3.756493454225255E-4, + "99.99" : 3.756493454225255E-4, + "99.999" : 3.756493454225255E-4, + "99.9999" : 3.756493454225255E-4, + "100.0" : 3.756493454225255E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.756493454225255E-4, + 3.755593965944598E-4, + 3.7549706011544607E-4 + ], + [ + 3.5437801649659855E-4, + 3.549751164970467E-4, + 3.5499011905497233E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1248036613823344, + "scoreError" : 0.0038036023392918573, + "scoreConfidence" : [ + 0.12100005904304253, + 0.12860726372162626 + ], + "scorePercentiles" : { + "0.0" : 0.12354733625311952, + "50.0" : 0.12440581979603876, + "90.0" : 0.1264828635644992, + "95.0" : 0.1264828635644992, + "99.0" : 0.1264828635644992, + "99.9" : 0.1264828635644992, + "99.99" : 0.1264828635644992, + "99.999" : 0.1264828635644992, + "99.9999" : 0.1264828635644992, + "100.0" : 0.1264828635644992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12497333607018334, + 0.1264828635644992, + 0.1263631724582375 + ], + [ + 0.12383830352189419, + 0.12361695642607266, + 0.12354733625311952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013121941207441897, + "scoreError" : 5.429389356505544E-5, + "scoreConfidence" : [ + 0.013067647313876841, + 0.013176235101006952 + ], + "scorePercentiles" : { + "0.0" : 0.013094138865537966, + "50.0" : 0.013124708757678384, + "90.0" : 0.013140412744737326, + "95.0" : 0.013140412744737326, + "99.0" : 0.013140412744737326, + "99.9" : 0.013140412744737326, + "99.99" : 0.013140412744737326, + "99.999" : 0.013140412744737326, + "99.9999" : 0.013140412744737326, + "100.0" : 0.013140412744737326 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013140412744737326, + 0.013138840004729934, + 0.013136701152988746 + ], + [ + 0.013094138865537966, + 0.013108838114289385, + 0.013112716362368023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9630344500065394, + "scoreError" : 0.025536951600930387, + "scoreConfidence" : [ + 0.937497498405609, + 0.9885714016074698 + ], + "scorePercentiles" : { + "0.0" : 0.9541509278694781, + "50.0" : 0.9630544518321223, + "90.0" : 0.9717229493781578, + "95.0" : 0.9717229493781578, + "99.0" : 0.9717229493781578, + "99.9" : 0.9717229493781578, + "99.99" : 0.9717229493781578, + "99.999" : 0.9717229493781578, + "99.9999" : 0.9717229493781578, + "100.0" : 0.9717229493781578 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9717229493781578, + 0.9715299550223431, + 0.970752403377657 + ], + [ + 0.9553565002865877, + 0.954693964105012, + 0.9541509278694781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010526555822248457, + "scoreError" : 4.1045130330325644E-5, + "scoreConfidence" : [ + 0.01048551069191813, + 0.010567600952578783 + ], + "scorePercentiles" : { + "0.0" : 0.010512005070870247, + "50.0" : 0.010521775493899644, + "90.0" : 0.01054557401759803, + "95.0" : 0.01054557401759803, + "99.0" : 0.01054557401759803, + "99.9" : 0.01054557401759803, + "99.99" : 0.01054557401759803, + "99.999" : 0.01054557401759803, + "99.9999" : 0.01054557401759803, + "100.0" : 0.01054557401759803 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010522018570932545, + 0.010514286658746097, + 0.010512005070870247 + ], + [ + 0.010543918198477081, + 0.010521532416866744, + 0.01054557401759803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.070620598438744, + "scoreError" : 0.050961860277633456, + "scoreConfidence" : [ + 3.01965873816111, + 3.1215824587163774 + ], + "scorePercentiles" : { + "0.0" : 3.0516446809029896, + "50.0" : 3.0703694945337934, + "90.0" : 3.0904961440049443, + "95.0" : 3.0904961440049443, + "99.0" : 3.0904961440049443, + "99.9" : 3.0904961440049443, + "99.99" : 3.0904961440049443, + "99.999" : 3.0904961440049443, + "99.9999" : 3.0904961440049443, + "100.0" : 3.0904961440049443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.055274002443494, + 3.0555854825901037, + 3.0516446809029896 + ], + [ + 3.085153506477483, + 3.0855697742134485, + 3.0904961440049443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.745861209352848, + "scoreError" : 0.07330577316060438, + "scoreConfidence" : [ + 2.6725554361922437, + 2.8191669825134524 + ], + "scorePercentiles" : { + "0.0" : 2.7186507931503128, + "50.0" : 2.748398332755598, + "90.0" : 2.7713910016625105, + "95.0" : 2.7713910016625105, + "99.0" : 2.7713910016625105, + "99.9" : 2.7713910016625105, + "99.99" : 2.7713910016625105, + "99.999" : 2.7713910016625105, + "99.9999" : 2.7713910016625105, + "100.0" : 2.7713910016625105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7192661302338226, + 2.7186507931503128, + 2.728824817462483 + ], + [ + 2.7713910016625105, + 2.7690626655592467, + 2.7679718480487128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17586683197191588, + "scoreError" : 0.0021011380467388435, + "scoreConfidence" : [ + 0.17376569392517704, + 0.17796797001865472 + ], + "scorePercentiles" : { + "0.0" : 0.17490174882817966, + "50.0" : 0.17617868243842588, + "90.0" : 0.17660694362814355, + "95.0" : 0.17660694362814355, + "99.0" : 0.17660694362814355, + "99.9" : 0.17660694362814355, + "99.99" : 0.17660694362814355, + "99.999" : 0.17660694362814355, + "99.9999" : 0.17660694362814355, + "100.0" : 0.17660694362814355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17494469135089744, + 0.17660694362814355, + 0.17490174882817966 + ], + [ + 0.17624648107155447, + 0.17639024314742302, + 0.17611088380529727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3222080167217422, + "scoreError" : 0.005419801945432811, + "scoreConfidence" : [ + 0.3167882147763094, + 0.327627818667175 + ], + "scorePercentiles" : { + "0.0" : 0.320119753673293, + "50.0" : 0.3222621813348538, + "90.0" : 0.3240192545118751, + "95.0" : 0.3240192545118751, + "99.0" : 0.3240192545118751, + "99.9" : 0.3240192545118751, + "99.99" : 0.3240192545118751, + "99.999" : 0.3240192545118751, + "99.9999" : 0.3240192545118751, + "100.0" : 0.3240192545118751 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32062945896120554, + 0.320119753673293, + 0.32060645316106695 + ], + [ + 0.32389490370850205, + 0.3240192545118751, + 0.32397827631451065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14626277049637187, + "scoreError" : 0.010397823416195181, + "scoreConfidence" : [ + 0.13586494708017668, + 0.15666059391256706 + ], + "scorePercentiles" : { + "0.0" : 0.142817049270933, + "50.0" : 0.1462983079729472, + "90.0" : 0.1496881730656967, + "95.0" : 0.1496881730656967, + "99.0" : 0.1496881730656967, + "99.9" : 0.1496881730656967, + "99.99" : 0.1496881730656967, + "99.999" : 0.1496881730656967, + "99.9999" : 0.1496881730656967, + "100.0" : 0.1496881730656967 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1429790913042235, + 0.14283883420939866, + 0.142817049270933 + ], + [ + 0.1496881730656967, + 0.14963595048630854, + 0.1496175246416709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4022734997796377, + "scoreError" : 0.009996752926662975, + "scoreConfidence" : [ + 0.39227674685297476, + 0.4122702527063007 + ], + "scorePercentiles" : { + "0.0" : 0.3980044095757383, + "50.0" : 0.40331459345349885, + "90.0" : 0.40585686473214283, + "95.0" : 0.40585686473214283, + "99.0" : 0.40585686473214283, + "99.9" : 0.40585686473214283, + "99.99" : 0.40585686473214283, + "99.999" : 0.40585686473214283, + "99.9999" : 0.40585686473214283, + "100.0" : 0.40585686473214283 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40585686473214283, + 0.40512003694551346, + 0.4047645459586352 + ], + [ + 0.4018646409483625, + 0.3980044095757383, + 0.39803050051743355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1561740705053884, + "scoreError" : 0.004420547548079618, + "scoreConfidence" : [ + 0.1517535229573088, + 0.160594618053468 + ], + "scorePercentiles" : { + "0.0" : 0.1546447804994974, + "50.0" : 0.15607942689446086, + "90.0" : 0.1578349646301236, + "95.0" : 0.1578349646301236, + "99.0" : 0.1578349646301236, + "99.9" : 0.1578349646301236, + "99.99" : 0.1578349646301236, + "99.999" : 0.1578349646301236, + "99.9999" : 0.1578349646301236, + "100.0" : 0.1578349646301236 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15731484062735968, + 0.15766167351958127, + 0.1578349646301236 + ], + [ + 0.15484401316156204, + 0.1547441505942065, + 0.1546447804994974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047148849667884074, + "scoreError" : 0.0015902214116356617, + "scoreConfidence" : [ + 0.045558628256248415, + 0.04873907107951973 + ], + "scorePercentiles" : { + "0.0" : 0.04645296886830578, + "50.0" : 0.04724657241227666, + "90.0" : 0.04768806424892704, + "95.0" : 0.04768806424892704, + "99.0" : 0.04768806424892704, + "99.9" : 0.04768806424892704, + "99.99" : 0.04768806424892704, + "99.999" : 0.04768806424892704, + "99.9999" : 0.04768806424892704, + "100.0" : 0.04768806424892704 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0476479718262212, + 0.04768806424892704, + 0.04761764030112995 + ], + [ + 0.046875504523423366, + 0.04645296886830578, + 0.046610948239297116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8753841.322483579, + "scoreError" : 284082.41472918954, + "scoreConfidence" : [ + 8469758.90775439, + 9037923.737212768 + ], + "scorePercentiles" : { + "0.0" : 8637662.1044905, + "50.0" : 8746436.413518436, + "90.0" : 8863388.26040744, + "95.0" : 8863388.26040744, + "99.0" : 8863388.26040744, + "99.9" : 8863388.26040744, + "99.99" : 8863388.26040744, + "99.999" : 8863388.26040744, + "99.9999" : 8863388.26040744, + "100.0" : 8863388.26040744 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8863388.26040744, + 8809268.17165493, + 8858321.93534101 + ], + [ + 8670802.80762565, + 8683604.655381944, + 8637662.1044905 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-07T01:49:50Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json b/performance-results/2025-08-07T01:49:50Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json new file mode 100644 index 0000000000..96be8d6205 --- /dev/null +++ b/performance-results/2025-08-07T01:49:50Z-21bcb4a452a43aba0b9ac161b711dba520843525-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3536619392460922, + "scoreError" : 0.03438477327903431, + "scoreConfidence" : [ + 3.319277165967058, + 3.3880467125251266 + ], + "scorePercentiles" : { + "0.0" : 3.3487755126350396, + "50.0" : 3.3523588596310008, + "90.0" : 3.361154525087327, + "95.0" : 3.361154525087327, + "99.0" : 3.361154525087327, + "99.9" : 3.361154525087327, + "99.99" : 3.361154525087327, + "99.999" : 3.361154525087327, + "99.9999" : 3.361154525087327, + "100.0" : 3.361154525087327 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3514843049894876, + 3.361154525087327 + ], + [ + 3.3487755126350396, + 3.3532334142725144 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6858284005642281, + "scoreError" : 0.03325546398992875, + "scoreConfidence" : [ + 1.6525729365742994, + 1.7190838645541568 + ], + "scorePercentiles" : { + "0.0" : 1.6799361165831015, + "50.0" : 1.685795115686143, + "90.0" : 1.6917872543015255, + "95.0" : 1.6917872543015255, + "99.0" : 1.6917872543015255, + "99.9" : 1.6917872543015255, + "99.99" : 1.6917872543015255, + "99.999" : 1.6917872543015255, + "99.9999" : 1.6917872543015255, + "100.0" : 1.6917872543015255 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6836474820715919, + 1.6799361165831015 + ], + [ + 1.6917872543015255, + 1.6879427493006942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8469397227587913, + "scoreError" : 0.03755178951046535, + "scoreConfidence" : [ + 0.8093879332483259, + 0.8844915122692566 + ], + "scorePercentiles" : { + "0.0" : 0.840565751038696, + "50.0" : 0.846348070263397, + "90.0" : 0.8544969994696753, + "95.0" : 0.8544969994696753, + "99.0" : 0.8544969994696753, + "99.9" : 0.8544969994696753, + "99.99" : 0.8544969994696753, + "99.999" : 0.8544969994696753, + "99.9999" : 0.8544969994696753, + "100.0" : 0.8544969994696753 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8451502761424292, + 0.8475458643843646 + ], + [ + 0.840565751038696, + 0.8544969994696753 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.24246667521709, + "scoreError" : 0.13330573302986878, + "scoreConfidence" : [ + 16.109160942187223, + 16.37577240824696 + ], + "scorePercentiles" : { + "0.0" : 16.19417151481468, + "50.0" : 16.236479670961074, + "90.0" : 16.31598298926825, + "95.0" : 16.31598298926825, + "99.0" : 16.31598298926825, + "99.9" : 16.31598298926825, + "99.99" : 16.31598298926825, + "99.999" : 16.31598298926825, + "99.9999" : 16.31598298926825, + "100.0" : 16.31598298926825 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.19417151481468, + 16.20815607211356, + 16.205856409772306 + ], + [ + 16.265829795525185, + 16.31598298926825, + 16.264803269808585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2712.56494584262, + "scoreError" : 89.31490954529845, + "scoreConfidence" : [ + 2623.2500362973215, + 2801.8798553879187 + ], + "scorePercentiles" : { + "0.0" : 2683.356043650895, + "50.0" : 2710.1919958976587, + "90.0" : 2746.6766726448413, + "95.0" : 2746.6766726448413, + "99.0" : 2746.6766726448413, + "99.9" : 2746.6766726448413, + "99.99" : 2746.6766726448413, + "99.999" : 2746.6766726448413, + "99.9999" : 2746.6766726448413, + "100.0" : 2746.6766726448413 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2746.6766726448413, + 2736.244060557197, + 2741.5280556731327 + ], + [ + 2683.356043650895, + 2683.4449112915377, + 2684.1399312381204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74850.42000287138, + "scoreError" : 5945.021339870654, + "scoreConfidence" : [ + 68905.39866300073, + 80795.44134274204 + ], + "scorePercentiles" : { + "0.0" : 72449.88754180155, + "50.0" : 74965.47568189533, + "90.0" : 76785.37104531385, + "95.0" : 76785.37104531385, + "99.0" : 76785.37104531385, + "99.9" : 76785.37104531385, + "99.99" : 76785.37104531385, + "99.999" : 76785.37104531385, + "99.9999" : 76785.37104531385, + "100.0" : 76785.37104531385 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76752.43934269024, + 76774.50927102256, + 76785.37104531385 + ], + [ + 72449.88754180155, + 73178.51202110041, + 73161.80079529967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 360.2381003397688, + "scoreError" : 10.597247664779028, + "scoreConfidence" : [ + 349.64085267498973, + 370.8353480045478 + ], + "scorePercentiles" : { + "0.0" : 356.43026709147057, + "50.0" : 360.16634642598564, + "90.0" : 364.03545065362835, + "95.0" : 364.03545065362835, + "99.0" : 364.03545065362835, + "99.9" : 364.03545065362835, + "99.99" : 364.03545065362835, + "99.999" : 364.03545065362835, + "99.9999" : 364.03545065362835, + "100.0" : 364.03545065362835 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 357.0245246227678, + 356.944372860878, + 356.43026709147057 + ], + [ + 363.3081682292035, + 363.6858185806646, + 364.03545065362835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.7138832030367, + "scoreError" : 7.594402191221892, + "scoreConfidence" : [ + 107.11948101181481, + 122.30828539425859 + ], + "scorePercentiles" : { + "0.0" : 111.77782948230025, + "50.0" : 114.99659289632532, + "90.0" : 117.38560537884634, + "95.0" : 117.38560537884634, + "99.0" : 117.38560537884634, + "99.9" : 117.38560537884634, + "99.99" : 117.38560537884634, + "99.999" : 117.38560537884634, + "99.9999" : 117.38560537884634, + "100.0" : 117.38560537884634 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.19242172861044, + 116.85197713262424, + 117.38560537884634 + ], + [ + 111.93425683581255, + 111.77782948230025, + 113.14120866002641 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061371458331936544, + "scoreError" : 8.15929234320626E-4, + "scoreConfidence" : [ + 0.06055552909761592, + 0.06218738756625717 + ], + "scorePercentiles" : { + "0.0" : 0.061100917844879206, + "50.0" : 0.06133025863830799, + "90.0" : 0.061730857780439026, + "95.0" : 0.061730857780439026, + "99.0" : 0.061730857780439026, + "99.9" : 0.061730857780439026, + "99.99" : 0.061730857780439026, + "99.999" : 0.061730857780439026, + "99.9999" : 0.061730857780439026, + "100.0" : 0.061730857780439026 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061100917844879206, + 0.061119652338402115, + 0.061114430691193544 + ], + [ + 0.06154086493821386, + 0.061730857780439026, + 0.061622026398491514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7793359196776517E-4, + "scoreError" : 3.8959550050263445E-5, + "scoreConfidence" : [ + 3.389740419175017E-4, + 4.168931420180286E-4 + ], + "scorePercentiles" : { + "0.0" : 3.650415335387452E-4, + "50.0" : 3.778435392447382E-4, + "90.0" : 3.9105369539325685E-4, + "95.0" : 3.9105369539325685E-4, + "99.0" : 3.9105369539325685E-4, + "99.9" : 3.9105369539325685E-4, + "99.99" : 3.9105369539325685E-4, + "99.999" : 3.9105369539325685E-4, + "99.9999" : 3.9105369539325685E-4, + "100.0" : 3.9105369539325685E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9105369539325685E-4, + 3.9071967801257505E-4, + 3.9006178945230624E-4 + ], + [ + 3.656252890371702E-4, + 3.650415335387452E-4, + 3.6509956637253727E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12226799022279823, + "scoreError" : 8.685677275495095E-4, + "scoreConfidence" : [ + 0.12139942249524872, + 0.12313655795034774 + ], + "scorePercentiles" : { + "0.0" : 0.12193006270727663, + "50.0" : 0.12224291643862245, + "90.0" : 0.12264513168093405, + "95.0" : 0.12264513168093405, + "99.0" : 0.12264513168093405, + "99.9" : 0.12264513168093405, + "99.99" : 0.12264513168093405, + "99.999" : 0.12264513168093405, + "99.9999" : 0.12264513168093405, + "100.0" : 0.12264513168093405 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12203114869185337, + 0.1220163051807023, + 0.12193006270727663 + ], + [ + 0.12245468418539154, + 0.12253060889063151, + 0.12264513168093405 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013136952756678205, + "scoreError" : 6.112927037590135E-4, + "scoreConfidence" : [ + 0.01252566005291919, + 0.013748245460437219 + ], + "scorePercentiles" : { + "0.0" : 0.012936253689696791, + "50.0" : 0.013124057278914986, + "90.0" : 0.013356179419200857, + "95.0" : 0.013356179419200857, + "99.0" : 0.013356179419200857, + "99.9" : 0.013356179419200857, + "99.99" : 0.013356179419200857, + "99.999" : 0.013356179419200857, + "99.9999" : 0.013356179419200857, + "100.0" : 0.013356179419200857 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013356179419200857, + 0.013341681998292287, + 0.013308481492818177 + ], + [ + 0.012939633065011794, + 0.012936253689696791, + 0.012939486875049332 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9784550340529479, + "scoreError" : 0.002287147274399012, + "scoreConfidence" : [ + 0.9761678867785488, + 0.9807421813273469 + ], + "scorePercentiles" : { + "0.0" : 0.977492648910175, + "50.0" : 0.978415199484991, + "90.0" : 0.9797705126848859, + "95.0" : 0.9797705126848859, + "99.0" : 0.9797705126848859, + "99.9" : 0.9797705126848859, + "99.99" : 0.9797705126848859, + "99.999" : 0.9797705126848859, + "99.9999" : 0.9797705126848859, + "100.0" : 0.9797705126848859 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9788403001859646, + 0.9786201675310696, + 0.9797705126848859 + ], + [ + 0.9782102314389123, + 0.977492648910175, + 0.9777963435666797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010650005762342553, + "scoreError" : 9.262584344790854E-5, + "scoreConfidence" : [ + 0.010557379918894645, + 0.01074263160579046 + ], + "scorePercentiles" : { + "0.0" : 0.010613410845358023, + "50.0" : 0.010652172472746576, + "90.0" : 0.010681700297369815, + "95.0" : 0.010681700297369815, + "99.0" : 0.010681700297369815, + "99.9" : 0.010681700297369815, + "99.99" : 0.010681700297369815, + "99.999" : 0.010681700297369815, + "99.9999" : 0.010681700297369815, + "100.0" : 0.010681700297369815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010621256633840873, + 0.01062556178810649, + 0.010613410845358023 + ], + [ + 0.010681700297369815, + 0.010679321851993447, + 0.010678783157386663 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.055242936812215, + "scoreError" : 0.07154720932299528, + "scoreConfidence" : [ + 2.98369572748922, + 3.1267901461352103 + ], + "scorePercentiles" : { + "0.0" : 3.023346483675937, + "50.0" : 3.0553576343305124, + "90.0" : 3.0847400647748304, + "95.0" : 3.0847400647748304, + "99.0" : 3.0847400647748304, + "99.9" : 3.0847400647748304, + "99.99" : 3.0847400647748304, + "99.999" : 3.0847400647748304, + "99.9999" : 3.0847400647748304, + "100.0" : 3.0847400647748304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0790771761083744, + 3.0847400647748304, + 3.0682033599019007 + ], + [ + 3.033578627653123, + 3.042511908759124, + 3.023346483675937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.796950429791837, + "scoreError" : 0.015569060297775937, + "scoreConfidence" : [ + 2.7813813694940612, + 2.812519490089613 + ], + "scorePercentiles" : { + "0.0" : 2.789528611436541, + "50.0" : 2.79638408672798, + "90.0" : 2.80609754657688, + "95.0" : 2.80609754657688, + "99.0" : 2.80609754657688, + "99.9" : 2.80609754657688, + "99.99" : 2.80609754657688, + "99.999" : 2.80609754657688, + "99.9999" : 2.80609754657688, + "100.0" : 2.80609754657688 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.789528611436541, + 2.7989215034984607, + 2.7949219737356805 + ], + [ + 2.80609754657688, + 2.7943867437831797, + 2.7978461997202797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17785033384017568, + "scoreError" : 0.003750596270401966, + "scoreConfidence" : [ + 0.1740997375697737, + 0.18160093011057765 + ], + "scorePercentiles" : { + "0.0" : 0.17653166990891117, + "50.0" : 0.17764309205761575, + "90.0" : 0.18022122968516283, + "95.0" : 0.18022122968516283, + "99.0" : 0.18022122968516283, + "99.9" : 0.18022122968516283, + "99.99" : 0.18022122968516283, + "99.999" : 0.18022122968516283, + "99.9999" : 0.18022122968516283, + "100.0" : 0.18022122968516283 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18022122968516283, + 0.17673834949277156, + 0.17653166990891117 + ], + [ + 0.17832456983897715, + 0.17777944767204137, + 0.1775067364431901 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3308607994661946, + "scoreError" : 0.010480800599952827, + "scoreConfidence" : [ + 0.3203799988662418, + 0.34134160006614744 + ], + "scorePercentiles" : { + "0.0" : 0.3273698471863031, + "50.0" : 0.3308263458590424, + "90.0" : 0.33452472241921455, + "95.0" : 0.33452472241921455, + "99.0" : 0.33452472241921455, + "99.9" : 0.33452472241921455, + "99.99" : 0.33452472241921455, + "99.999" : 0.33452472241921455, + "99.9999" : 0.33452472241921455, + "100.0" : 0.33452472241921455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32757947156708594, + 0.32740705395495023, + 0.3273698471863031 + ], + [ + 0.33452472241921455, + 0.33421048151861504, + 0.3340732201509989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14625859890630358, + "scoreError" : 0.010556563505873962, + "scoreConfidence" : [ + 0.1357020354004296, + 0.15681516241217755 + ], + "scorePercentiles" : { + "0.0" : 0.14294837777491887, + "50.0" : 0.14539829600525694, + "90.0" : 0.15167139483422817, + "95.0" : 0.15167139483422817, + "99.0" : 0.15167139483422817, + "99.9" : 0.15167139483422817, + "99.99" : 0.15167139483422817, + "99.999" : 0.15167139483422817, + "99.9999" : 0.15167139483422817, + "100.0" : 0.15167139483422817 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15167139483422817, + 0.14911512576046762, + 0.14768699146384687 + ], + [ + 0.14302010305769286, + 0.14294837777491887, + 0.14310960054666705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40398766036467143, + "scoreError" : 0.014300786928609664, + "scoreConfidence" : [ + 0.3896868734360618, + 0.4182884472932811 + ], + "scorePercentiles" : { + "0.0" : 0.3962160711965135, + "50.0" : 0.40663445854323593, + "90.0" : 0.407955883979929, + "95.0" : 0.407955883979929, + "99.0" : 0.407955883979929, + "99.9" : 0.407955883979929, + "99.99" : 0.407955883979929, + "99.999" : 0.407955883979929, + "99.9999" : 0.407955883979929, + "100.0" : 0.407955883979929 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.407564979948649, + 0.407955883979929, + 0.4074731948417064 + ], + [ + 0.40579572224476546, + 0.3962160711965135, + 0.39892010997646493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1571069799884299, + "scoreError" : 0.0030859409703396855, + "scoreConfidence" : [ + 0.15402103901809022, + 0.16019292095876958 + ], + "scorePercentiles" : { + "0.0" : 0.15610340576316692, + "50.0" : 0.1569789874359973, + "90.0" : 0.15866786540475358, + "95.0" : 0.15866786540475358, + "99.0" : 0.15866786540475358, + "99.9" : 0.15866786540475358, + "99.99" : 0.15866786540475358, + "99.999" : 0.15866786540475358, + "99.9999" : 0.15866786540475358, + "100.0" : 0.15866786540475358 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15866786540475358, + 0.15780294680532106, + 0.157720603422443 + ], + [ + 0.1561096870853432, + 0.15610340576316692, + 0.1562373714495516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04636653388143363, + "scoreError" : 0.0039008169389196435, + "scoreConfidence" : [ + 0.042465716942513984, + 0.050267350820353274 + ], + "scorePercentiles" : { + "0.0" : 0.04473217972884116, + "50.0" : 0.04656581074930752, + "90.0" : 0.04762261058727165, + "95.0" : 0.04762261058727165, + "99.0" : 0.04762261058727165, + "99.9" : 0.04762261058727165, + "99.99" : 0.04762261058727165, + "99.999" : 0.04762261058727165, + "99.9999" : 0.04762261058727165, + "100.0" : 0.04762261058727165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04762261058727165, + 0.04761992425678217, + 0.047603569019193416 + ], + [ + 0.04552805247942162, + 0.045092867217091735, + 0.04473217972884116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8763012.210608648, + "scoreError" : 559309.3959529683, + "scoreConfidence" : [ + 8203702.81465568, + 9322321.606561616 + ], + "scorePercentiles" : { + "0.0" : 8553371.0, + "50.0" : 8775249.804187644, + "90.0" : 8946173.307692308, + "95.0" : 8946173.307692308, + "99.0" : 8946173.307692308, + "99.9" : 8946173.307692308, + "99.99" : 8946173.307692308, + "99.999" : 8946173.307692308, + "99.9999" : 8946173.307692308, + "100.0" : 8946173.307692308 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8946173.307692308, + 8944673.64432529, + 8942338.765862377 + ], + [ + 8553371.0, + 8583355.703259004, + 8608160.84251291 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-10T00:58:51Z-e62055e9b3353e84110b59d65450483809ebb494-jdk17.json b/performance-results/2025-08-10T00:58:51Z-e62055e9b3353e84110b59d65450483809ebb494-jdk17.json new file mode 100644 index 0000000000..7cf9344315 --- /dev/null +++ b/performance-results/2025-08-10T00:58:51Z-e62055e9b3353e84110b59d65450483809ebb494-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.321778067926701, + "scoreError" : 0.06017942358096126, + "scoreConfidence" : [ + 3.2615986443457397, + 3.381957491507662 + ], + "scorePercentiles" : { + "0.0" : 3.3120987070643566, + "50.0" : 3.3206747441821904, + "90.0" : 3.333664076278065, + "95.0" : 3.333664076278065, + "99.0" : 3.333664076278065, + "99.9" : 3.333664076278065, + "99.99" : 3.333664076278065, + "99.999" : 3.333664076278065, + "99.9999" : 3.333664076278065, + "100.0" : 3.333664076278065 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.317299490495786, + 3.333664076278065 + ], + [ + 3.3120987070643566, + 3.324049997868595 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6797370871853792, + "scoreError" : 0.04207283752159059, + "scoreConfidence" : [ + 1.6376642496637885, + 1.7218099247069698 + ], + "scorePercentiles" : { + "0.0" : 1.6718009621370309, + "50.0" : 1.6803353460386576, + "90.0" : 1.6864766945271703, + "95.0" : 1.6864766945271703, + "99.0" : 1.6864766945271703, + "99.9" : 1.6864766945271703, + "99.99" : 1.6864766945271703, + "99.999" : 1.6864766945271703, + "99.9999" : 1.6864766945271703, + "100.0" : 1.6864766945271703 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6833396799777685, + 1.6864766945271703 + ], + [ + 1.6718009621370309, + 1.6773310120995466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8442547773833415, + "scoreError" : 0.020257401121910767, + "scoreConfidence" : [ + 0.8239973762614308, + 0.8645121785052523 + ], + "scorePercentiles" : { + "0.0" : 0.8417024477175072, + "50.0" : 0.8432457074462938, + "90.0" : 0.8488252469232714, + "95.0" : 0.8488252469232714, + "99.0" : 0.8488252469232714, + "99.9" : 0.8488252469232714, + "99.99" : 0.8488252469232714, + "99.999" : 0.8488252469232714, + "99.9999" : 0.8488252469232714, + "100.0" : 0.8488252469232714 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8431009154432363, + 0.8488252469232714 + ], + [ + 0.8417024477175072, + 0.8433904994493512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.20027142681322, + "scoreError" : 0.3238406903965271, + "scoreConfidence" : [ + 15.876430736416694, + 16.524112117209746 + ], + "scorePercentiles" : { + "0.0" : 16.080331593537174, + "50.0" : 16.207478729169996, + "90.0" : 16.30780863164474, + "95.0" : 16.30780863164474, + "99.0" : 16.30780863164474, + "99.9" : 16.30780863164474, + "99.99" : 16.30780863164474, + "99.999" : 16.30780863164474, + "99.9999" : 16.30780863164474, + "100.0" : 16.30780863164474 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.30370736475651, + 16.30780863164474, + 16.304403352591166 + ], + [ + 16.111250093583482, + 16.094127524766268, + 16.080331593537174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2697.603994271927, + "scoreError" : 19.814257961873277, + "scoreConfidence" : [ + 2677.7897363100537, + 2717.4182522338006 + ], + "scorePercentiles" : { + "0.0" : 2686.0152872116787, + "50.0" : 2697.725057676475, + "90.0" : 2707.5108612046392, + "95.0" : 2707.5108612046392, + "99.0" : 2707.5108612046392, + "99.9" : 2707.5108612046392, + "99.99" : 2707.5108612046392, + "99.999" : 2707.5108612046392, + "99.9999" : 2707.5108612046392, + "100.0" : 2707.5108612046392 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2686.0152872116787, + 2695.485174895187, + 2701.1625269671067 + ], + [ + 2707.5108612046392, + 2697.645647797982, + 2697.804467554968 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75337.87958556948, + "scoreError" : 418.4145999976774, + "scoreConfidence" : [ + 74919.4649855718, + 75756.29418556715 + ], + "scorePercentiles" : { + "0.0" : 75186.79983511387, + "50.0" : 75328.27216108268, + "90.0" : 75501.9619513773, + "95.0" : 75501.9619513773, + "99.0" : 75501.9619513773, + "99.9" : 75501.9619513773, + "99.99" : 75501.9619513773, + "99.999" : 75501.9619513773, + "99.9999" : 75501.9619513773, + "100.0" : 75501.9619513773 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75483.22148080665, + 75501.9619513773, + 75430.5098312405 + ], + [ + 75226.03449092487, + 75186.79983511387, + 75198.74992395371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.73843484400606, + "scoreError" : 4.966405842771722, + "scoreConfidence" : [ + 332.77202900123433, + 342.7048406867778 + ], + "scorePercentiles" : { + "0.0" : 335.84969932034323, + "50.0" : 337.44871393610606, + "90.0" : 340.46662773352284, + "95.0" : 340.46662773352284, + "99.0" : 340.46662773352284, + "99.9" : 340.46662773352284, + "99.99" : 340.46662773352284, + "99.999" : 340.46662773352284, + "99.9999" : 340.46662773352284, + "100.0" : 340.46662773352284 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.84969932034323, + 336.1780939294256, + 337.8844131892889 + ], + [ + 339.03876020853266, + 340.46662773352284, + 337.01301468292314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.28515233156683, + "scoreError" : 5.348608376034191, + "scoreConfidence" : [ + 107.93654395553264, + 118.63376070760103 + ], + "scorePercentiles" : { + "0.0" : 111.17781836868595, + "50.0" : 113.2612083998196, + "90.0" : 115.31063193097873, + "95.0" : 115.31063193097873, + "99.0" : 115.31063193097873, + "99.9" : 115.31063193097873, + "99.99" : 115.31063193097873, + "99.999" : 115.31063193097873, + "99.9999" : 115.31063193097873, + "100.0" : 115.31063193097873 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.31063193097873, + 114.74575132985568, + 114.96704057050371 + ], + [ + 111.77666546978352, + 111.73300631959326, + 111.17781836868595 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06193014219243833, + "scoreError" : 2.6863577664159905E-4, + "scoreConfidence" : [ + 0.06166150641579673, + 0.06219877796907993 + ], + "scorePercentiles" : { + "0.0" : 0.06176354682230869, + "50.0" : 0.06193738990042652, + "90.0" : 0.06204704301021896, + "95.0" : 0.06204704301021896, + "99.0" : 0.06204704301021896, + "99.9" : 0.06204704301021896, + "99.99" : 0.06204704301021896, + "99.999" : 0.06204704301021896, + "99.9999" : 0.06204704301021896, + "100.0" : 0.06204704301021896 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06191079722024454, + 0.06198468630100475, + 0.061959886794674006 + ], + [ + 0.06204704301021896, + 0.06176354682230869, + 0.06191489300617903 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.685196658632991E-4, + "scoreError" : 2.3942502423480805E-5, + "scoreConfidence" : [ + 3.445771634398183E-4, + 3.924621682867799E-4 + ], + "scorePercentiles" : { + "0.0" : 3.606428488687736E-4, + "50.0" : 3.681985941374151E-4, + "90.0" : 3.772912687044325E-4, + "95.0" : 3.772912687044325E-4, + "99.0" : 3.772912687044325E-4, + "99.9" : 3.772912687044325E-4, + "99.99" : 3.772912687044325E-4, + "99.999" : 3.772912687044325E-4, + "99.9999" : 3.772912687044325E-4, + "100.0" : 3.772912687044325E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7614169322739284E-4, + 3.754512109854938E-4, + 3.772912687044325E-4 + ], + [ + 3.606428488687736E-4, + 3.606449961043658E-4, + 3.609459772893363E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12550309194144402, + "scoreError" : 0.0018973263214985816, + "scoreConfidence" : [ + 0.12360576561994543, + 0.1274004182629426 + ], + "scorePercentiles" : { + "0.0" : 0.12480652030551881, + "50.0" : 0.12544488604441703, + "90.0" : 0.12625016539578335, + "95.0" : 0.12625016539578335, + "99.0" : 0.12625016539578335, + "99.9" : 0.12625016539578335, + "99.99" : 0.12625016539578335, + "99.999" : 0.12625016539578335, + "99.9999" : 0.12625016539578335, + "100.0" : 0.12625016539578335 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1261478709034488, + 0.12593886717461117, + 0.12625016539578335 + ], + [ + 0.1249242229550792, + 0.12480652030551881, + 0.12495090491422288 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013012037266278545, + "scoreError" : 2.650845980540564E-4, + "scoreConfidence" : [ + 0.012746952668224489, + 0.013277121864332601 + ], + "scorePercentiles" : { + "0.0" : 0.012922141628816023, + "50.0" : 0.01301348104187932, + "90.0" : 0.013105257174384257, + "95.0" : 0.013105257174384257, + "99.0" : 0.013105257174384257, + "99.9" : 0.013105257174384257, + "99.99" : 0.013105257174384257, + "99.999" : 0.013105257174384257, + "99.9999" : 0.013105257174384257, + "100.0" : 0.013105257174384257 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01293311627236268, + 0.012922141628816023, + 0.01292241661670147 + ], + [ + 0.013105257174384257, + 0.013095446094010883, + 0.013093845811395957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9482690844532632, + "scoreError" : 0.06266368397890038, + "scoreConfidence" : [ + 0.8856054004743628, + 1.0109327684321636 + ], + "scorePercentiles" : { + "0.0" : 0.9274287045349161, + "50.0" : 0.9475473330727355, + "90.0" : 0.9698123789759503, + "95.0" : 0.9698123789759503, + "99.0" : 0.9698123789759503, + "99.9" : 0.9698123789759503, + "99.99" : 0.9698123789759503, + "99.999" : 0.9698123789759503, + "99.9999" : 0.9698123789759503, + "100.0" : 0.9698123789759503 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9666323954185192, + 0.9694791732428503, + 0.9698123789759503 + ], + [ + 0.9277995838203915, + 0.928462270726952, + 0.9274287045349161 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010321762326941849, + "scoreError" : 7.921850886930279E-5, + "scoreConfidence" : [ + 0.010242543818072545, + 0.010400980835811152 + ], + "scorePercentiles" : { + "0.0" : 0.010290568372937308, + "50.0" : 0.010323231981216981, + "90.0" : 0.010350156109112437, + "95.0" : 0.010350156109112437, + "99.0" : 0.010350156109112437, + "99.9" : 0.010350156109112437, + "99.99" : 0.010350156109112437, + "99.999" : 0.010350156109112437, + "99.9999" : 0.010350156109112437, + "100.0" : 0.010350156109112437 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010341486276253607, + 0.010349444320714999, + 0.010350156109112437 + ], + [ + 0.010304977686180354, + 0.010293941196452393, + 0.010290568372937308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.161475491166344, + "scoreError" : 0.09101410884471757, + "scoreConfidence" : [ + 3.0704613823216262, + 3.2524896000110615 + ], + "scorePercentiles" : { + "0.0" : 3.1204619631940114, + "50.0" : 3.1625255298414428, + "90.0" : 3.1975480812020463, + "95.0" : 3.1975480812020463, + "99.0" : 3.1975480812020463, + "99.9" : 3.1975480812020463, + "99.99" : 3.1975480812020463, + "99.999" : 3.1975480812020463, + "99.9999" : 3.1975480812020463, + "100.0" : 3.1975480812020463 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1204619631940114, + 3.142991798868636, + 3.13537856677116 + ], + [ + 3.190413276147959, + 3.1820592608142495, + 3.1975480812020463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.897403921009786, + "scoreError" : 0.05900639446323345, + "scoreConfidence" : [ + 2.8383975265465526, + 2.9564103154730192 + ], + "scorePercentiles" : { + "0.0" : 2.867888256954402, + "50.0" : 2.9047655933254974, + "90.0" : 2.920863092581776, + "95.0" : 2.920863092581776, + "99.0" : 2.920863092581776, + "99.9" : 2.920863092581776, + "99.99" : 2.920863092581776, + "99.999" : 2.920863092581776, + "99.9999" : 2.920863092581776, + "100.0" : 2.920863092581776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9110427619324795, + 2.9052258260238166, + 2.920863092581776 + ], + [ + 2.904305360627178, + 2.875098227939063, + 2.867888256954402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1749812130276415, + "scoreError" : 0.004638338536154302, + "scoreConfidence" : [ + 0.1703428744914872, + 0.1796195515637958 + ], + "scorePercentiles" : { + "0.0" : 0.17344220262934248, + "50.0" : 0.1748887393124293, + "90.0" : 0.17666563887220435, + "95.0" : 0.17666563887220435, + "99.0" : 0.17666563887220435, + "99.9" : 0.17666563887220435, + "99.99" : 0.17666563887220435, + "99.999" : 0.17666563887220435, + "99.9999" : 0.17666563887220435, + "100.0" : 0.17666563887220435 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17666563887220435, + 0.17651663562388575, + 0.17627828653269875 + ], + [ + 0.17344220262934248, + 0.17349919209215983, + 0.17348532241555784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33007612569864825, + "scoreError" : 0.020004809758620647, + "scoreConfidence" : [ + 0.3100713159400276, + 0.35008093545726887 + ], + "scorePercentiles" : { + "0.0" : 0.32345676757123915, + "50.0" : 0.3300183758535818, + "90.0" : 0.3369215387958627, + "95.0" : 0.3369215387958627, + "99.0" : 0.3369215387958627, + "99.9" : 0.3369215387958627, + "99.99" : 0.3369215387958627, + "99.999" : 0.3369215387958627, + "99.9999" : 0.3369215387958627, + "100.0" : 0.3369215387958627 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32365199614861806, + 0.3235899358982656, + 0.32345676757123915 + ], + [ + 0.3369215387958627, + 0.3363847555585455, + 0.33645176021935874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14460657985773762, + "scoreError" : 0.004127252677088936, + "scoreConfidence" : [ + 0.14047932718064868, + 0.14873383253482655 + ], + "scorePercentiles" : { + "0.0" : 0.14315282445567373, + "50.0" : 0.14462592479770905, + "90.0" : 0.14605969636467203, + "95.0" : 0.14605969636467203, + "99.0" : 0.14605969636467203, + "99.9" : 0.14605969636467203, + "99.99" : 0.14605969636467203, + "99.999" : 0.14605969636467203, + "99.9999" : 0.14605969636467203, + "100.0" : 0.14605969636467203 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14327865907788412, + 0.14336528933107778, + 0.14315282445567373 + ], + [ + 0.1458964496527778, + 0.14588656026434033, + 0.14605969636467203 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4052789081948393, + "scoreError" : 0.005784482209340655, + "scoreConfidence" : [ + 0.39949442598549867, + 0.41106339040417994 + ], + "scorePercentiles" : { + "0.0" : 0.4024967646703695, + "50.0" : 0.40484495168124035, + "90.0" : 0.4087639782546495, + "95.0" : 0.4087639782546495, + "99.0" : 0.4087639782546495, + "99.9" : 0.4087639782546495, + "99.99" : 0.4087639782546495, + "99.999" : 0.4087639782546495, + "99.9999" : 0.4087639782546495, + "100.0" : 0.4087639782546495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4087639782546495, + 0.4048226489090394, + 0.4024967646703695 + ], + [ + 0.40606797222560603, + 0.4048672544534413, + 0.40465483065593005 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1562775176508592, + "scoreError" : 0.013567284867229292, + "scoreConfidence" : [ + 0.1427102327836299, + 0.1698448025180885 + ], + "scorePercentiles" : { + "0.0" : 0.15180776898671727, + "50.0" : 0.15620879328266668, + "90.0" : 0.16084495966094606, + "95.0" : 0.16084495966094606, + "99.0" : 0.16084495966094606, + "99.9" : 0.16084495966094606, + "99.99" : 0.16084495966094606, + "99.999" : 0.16084495966094606, + "99.9999" : 0.16084495966094606, + "100.0" : 0.16084495966094606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16084495966094606, + 0.1607522307383176, + 0.16048082721378823 + ], + [ + 0.15184255995384077, + 0.15180776898671727, + 0.15193675935154516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04609910800295767, + "scoreError" : 0.0020054306697937273, + "scoreConfidence" : [ + 0.04409367733316394, + 0.0481045386727514 + ], + "scorePercentiles" : { + "0.0" : 0.04531589885262691, + "50.0" : 0.046189144027595, + "90.0" : 0.0469024258203103, + "95.0" : 0.0469024258203103, + "99.0" : 0.0469024258203103, + "99.9" : 0.0469024258203103, + "99.99" : 0.0469024258203103, + "99.999" : 0.0469024258203103, + "99.9999" : 0.0469024258203103, + "100.0" : 0.0469024258203103 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045753826659468165, + 0.04531589885262691, + 0.04533446812397717 + ], + [ + 0.0469024258203103, + 0.04662446139572182, + 0.04666356716564165 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8842699.314488744, + "scoreError" : 275129.4390939223, + "scoreConfidence" : [ + 8567569.875394821, + 9117828.753582668 + ], + "scorePercentiles" : { + "0.0" : 8720771.571926765, + "50.0" : 8850722.605901606, + "90.0" : 8943478.028596962, + "95.0" : 8943478.028596962, + "99.0" : 8943478.028596962, + "99.9" : 8943478.028596962, + "99.99" : 8943478.028596962, + "99.999" : 8943478.028596962, + "99.9999" : 8943478.028596962, + "100.0" : 8943478.028596962 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8933892.490178572, + 8943478.028596962, + 8910940.202137133 + ], + [ + 8720771.571926765, + 8756608.584426947, + 8790505.009666082 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-10T00:59:21Z-e62055e9b3353e84110b59d65450483809ebb494-jdk17.json b/performance-results/2025-08-10T00:59:21Z-e62055e9b3353e84110b59d65450483809ebb494-jdk17.json new file mode 100644 index 0000000000..c6ec66b397 --- /dev/null +++ b/performance-results/2025-08-10T00:59:21Z-e62055e9b3353e84110b59d65450483809ebb494-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.314241485308907, + "scoreError" : 0.0448766378380948, + "scoreConfidence" : [ + 3.269364847470812, + 3.3591181231470015 + ], + "scorePercentiles" : { + "0.0" : 3.30469589138146, + "50.0" : 3.3156116516955576, + "90.0" : 3.321046746463052, + "95.0" : 3.321046746463052, + "99.0" : 3.321046746463052, + "99.9" : 3.321046746463052, + "99.99" : 3.321046746463052, + "99.999" : 3.321046746463052, + "99.9999" : 3.321046746463052, + "100.0" : 3.321046746463052 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.30469589138146, + 3.3142883394694502 + ], + [ + 3.3169349639216645, + 3.321046746463052 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.672411943764561, + "scoreError" : 0.0170175325435611, + "scoreConfidence" : [ + 1.655394411221, + 1.6894294763081221 + ], + "scorePercentiles" : { + "0.0" : 1.6698980905545864, + "50.0" : 1.6719227472851887, + "90.0" : 1.6759041899332803, + "95.0" : 1.6759041899332803, + "99.0" : 1.6759041899332803, + "99.9" : 1.6759041899332803, + "99.99" : 1.6759041899332803, + "99.999" : 1.6759041899332803, + "99.9999" : 1.6759041899332803, + "100.0" : 1.6759041899332803 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6698980905545864, + 1.6759041899332803 + ], + [ + 1.6728745389252595, + 1.6709709556451182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8376702682332442, + "scoreError" : 0.05001458965415688, + "scoreConfidence" : [ + 0.7876556785790874, + 0.887684857887401 + ], + "scorePercentiles" : { + "0.0" : 0.8263738236394508, + "50.0" : 0.8401926937668663, + "90.0" : 0.8439218617597934, + "95.0" : 0.8439218617597934, + "99.0" : 0.8439218617597934, + "99.9" : 0.8439218617597934, + "99.99" : 0.8439218617597934, + "99.999" : 0.8439218617597934, + "99.9999" : 0.8439218617597934, + "100.0" : 0.8439218617597934 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8263738236394508, + 0.840577906557115 + ], + [ + 0.8398074809766177, + 0.8439218617597934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.840350900971098, + "scoreError" : 0.23220231220249005, + "scoreConfidence" : [ + 15.608148588768607, + 16.072553213173588 + ], + "scorePercentiles" : { + "0.0" : 15.744957557569032, + "50.0" : 15.821157943453933, + "90.0" : 15.96306995939143, + "95.0" : 15.96306995939143, + "99.0" : 15.96306995939143, + "99.9" : 15.96306995939143, + "99.99" : 15.96306995939143, + "99.999" : 15.96306995939143, + "99.9999" : 15.96306995939143, + "100.0" : 15.96306995939143 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.744957557569032, + 15.85308176330583, + 15.96306995939143 + ], + [ + 15.906245727670672, + 15.789234123602034, + 15.78551627428759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2654.2909465541547, + "scoreError" : 93.17097192294823, + "scoreConfidence" : [ + 2561.1199746312063, + 2747.461918477103 + ], + "scorePercentiles" : { + "0.0" : 2602.9160123915294, + "50.0" : 2653.1209273299664, + "90.0" : 2697.744132487091, + "95.0" : 2697.744132487091, + "99.0" : 2697.744132487091, + "99.9" : 2697.744132487091, + "99.99" : 2697.744132487091, + "99.999" : 2697.744132487091, + "99.9999" : 2697.744132487091, + "100.0" : 2697.744132487091 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2697.744132487091, + 2678.6829799756924, + 2640.160699810684 + ], + [ + 2602.9160123915294, + 2662.989771169244, + 2643.2520834906895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75482.78742610964, + "scoreError" : 2030.6275869270132, + "scoreConfidence" : [ + 73452.15983918263, + 77513.41501303666 + ], + "scorePercentiles" : { + "0.0" : 74723.50901187926, + "50.0" : 75485.01111203729, + "90.0" : 76185.90345028992, + "95.0" : 76185.90345028992, + "99.0" : 76185.90345028992, + "99.9" : 76185.90345028992, + "99.99" : 76185.90345028992, + "99.999" : 76185.90345028992, + "99.9999" : 76185.90345028992, + "100.0" : 76185.90345028992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74886.80831528471, + 74862.89444160186, + 74723.50901187926 + ], + [ + 76185.90345028992, + 76154.39542881229, + 76083.21390878987 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 341.35709905231573, + "scoreError" : 12.367853139149881, + "scoreConfidence" : [ + 328.98924591316586, + 353.7249521914656 + ], + "scorePercentiles" : { + "0.0" : 336.6858052927803, + "50.0" : 341.03891123609515, + "90.0" : 346.36553295799604, + "95.0" : 346.36553295799604, + "99.0" : 346.36553295799604, + "99.9" : 346.36553295799604, + "99.99" : 346.36553295799604, + "99.999" : 346.36553295799604, + "99.9999" : 346.36553295799604, + "100.0" : 346.36553295799604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.0818858779343, + 345.4810288766461, + 346.36553295799604 + ], + [ + 337.5324047142815, + 336.6858052927803, + 337.99593659425597 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 110.27076571734129, + "scoreError" : 4.912661381916792, + "scoreConfidence" : [ + 105.3581043354245, + 115.18342709925808 + ], + "scorePercentiles" : { + "0.0" : 107.62582519609437, + "50.0" : 110.06187939592867, + "90.0" : 112.78436462458303, + "95.0" : 112.78436462458303, + "99.0" : 112.78436462458303, + "99.9" : 112.78436462458303, + "99.99" : 112.78436462458303, + "99.999" : 112.78436462458303, + "99.9999" : 112.78436462458303, + "100.0" : 112.78436462458303 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.62582519609437, + 109.66193772315671, + 112.78436462458303 + ], + [ + 109.72044783664668, + 110.40331095521066, + 111.42870796835619 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06326632979284742, + "scoreError" : 0.0022894109747256283, + "scoreConfidence" : [ + 0.0609769188181218, + 0.06555574076757305 + ], + "scorePercentiles" : { + "0.0" : 0.06232494769184746, + "50.0" : 0.06334517971761158, + "90.0" : 0.06413928341906436, + "95.0" : 0.06413928341906436, + "99.0" : 0.06413928341906436, + "99.9" : 0.06413928341906436, + "99.99" : 0.06413928341906436, + "99.999" : 0.06413928341906436, + "99.9999" : 0.06413928341906436, + "100.0" : 0.06413928341906436 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06239755305554515, + 0.06232494769184746, + 0.06295168728714866 + ], + [ + 0.06404583515540441, + 0.0637386721480745, + 0.06413928341906436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9128153000748646E-4, + "scoreError" : 2.873393242371398E-6, + "scoreConfidence" : [ + 3.8840813676511505E-4, + 3.941549232498579E-4 + ], + "scorePercentiles" : { + "0.0" : 3.9020809833837067E-4, + "50.0" : 3.9107640636765434E-4, + "90.0" : 3.928522614436148E-4, + "95.0" : 3.928522614436148E-4, + "99.0" : 3.928522614436148E-4, + "99.9" : 3.928522614436148E-4, + "99.99" : 3.928522614436148E-4, + "99.999" : 3.928522614436148E-4, + "99.9999" : 3.928522614436148E-4, + "100.0" : 3.928522614436148E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9110461260082887E-4, + 3.921157446368011E-4, + 3.9036026289082323E-4 + ], + [ + 3.9020809833837067E-4, + 3.9104820013447986E-4, + 3.928522614436148E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12531456045649733, + "scoreError" : 0.00307411399812817, + "scoreConfidence" : [ + 0.12224044645836916, + 0.1283886744546255 + ], + "scorePercentiles" : { + "0.0" : 0.12365783431433164, + "50.0" : 0.12552688706244375, + "90.0" : 0.12667958988358394, + "95.0" : 0.12667958988358394, + "99.0" : 0.12667958988358394, + "99.9" : 0.12667958988358394, + "99.99" : 0.12667958988358394, + "99.999" : 0.12667958988358394, + "99.9999" : 0.12667958988358394, + "100.0" : 0.12667958988358394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12573941613438616, + 0.12602639042218022, + 0.12667958988358394 + ], + [ + 0.12446977399400072, + 0.12531435799050136, + 0.12365783431433164 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013038024350847078, + "scoreError" : 2.628846559497434E-4, + "scoreConfidence" : [ + 0.012775139694897334, + 0.013300909006796821 + ], + "scorePercentiles" : { + "0.0" : 0.012938928823827004, + "50.0" : 0.013035530742388224, + "90.0" : 0.013146320388336751, + "95.0" : 0.013146320388336751, + "99.0" : 0.013146320388336751, + "99.9" : 0.013146320388336751, + "99.99" : 0.013146320388336751, + "99.999" : 0.013146320388336751, + "99.9999" : 0.013146320388336751, + "100.0" : 0.013146320388336751 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013107145699860542, + 0.013113750912378846, + 0.013146320388336751 + ], + [ + 0.012938928823827004, + 0.012963915784915904, + 0.01295808449576342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0211754416662497, + "scoreError" : 0.028504756141734134, + "scoreConfidence" : [ + 0.9926706855245157, + 1.049680197807984 + ], + "scorePercentiles" : { + "0.0" : 1.0113308321367176, + "50.0" : 1.0193873499276875, + "90.0" : 1.032894407457137, + "95.0" : 1.032894407457137, + "99.0" : 1.032894407457137, + "99.9" : 1.032894407457137, + "99.99" : 1.032894407457137, + "99.999" : 1.032894407457137, + "99.9999" : 1.032894407457137, + "100.0" : 1.032894407457137 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0317668414319612, + 1.032894407457137, + 1.0258987251743947 + ], + [ + 1.0113308321367176, + 1.0128759746809803, + 1.0122858691163072 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010658715046327913, + "scoreError" : 1.5374315278234845E-4, + "scoreConfidence" : [ + 0.010504971893545564, + 0.010812458199110262 + ], + "scorePercentiles" : { + "0.0" : 0.010602114442439522, + "50.0" : 0.010651404341008378, + "90.0" : 0.010742738643663591, + "95.0" : 0.010742738643663591, + "99.0" : 0.010742738643663591, + "99.9" : 0.010742738643663591, + "99.99" : 0.010742738643663591, + "99.999" : 0.010742738643663591, + "99.9999" : 0.010742738643663591, + "100.0" : 0.010742738643663591 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010651900564962123, + 0.010700150910125873, + 0.010742738643663591 + ], + [ + 0.010602114442439522, + 0.010604477599721746, + 0.010650908117054634 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.4382215303404653, + "scoreError" : 0.5451237699005419, + "scoreConfidence" : [ + 2.8930977604399235, + 3.983345300241007 + ], + "scorePercentiles" : { + "0.0" : 3.2528599057217167, + "50.0" : 3.440334851062314, + "90.0" : 3.6309184165457182, + "95.0" : 3.6309184165457182, + "99.0" : 3.6309184165457182, + "99.9" : 3.6309184165457182, + "99.99" : 3.6309184165457182, + "99.999" : 3.6309184165457182, + "99.9999" : 3.6309184165457182, + "100.0" : 3.6309184165457182 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.274063681937173, + 3.256243556640625, + 3.2528599057217167 + ], + [ + 3.608637601010101, + 3.606606020187455, + 3.6309184165457182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.890485484888236, + "scoreError" : 0.06829794888036585, + "scoreConfidence" : [ + 2.8221875360078705, + 2.958783433768602 + ], + "scorePercentiles" : { + "0.0" : 2.8619255064377684, + "50.0" : 2.89243763271919, + "90.0" : 2.9170488314377367, + "95.0" : 2.9170488314377367, + "99.0" : 2.9170488314377367, + "99.9" : 2.9170488314377367, + "99.99" : 2.9170488314377367, + "99.999" : 2.9170488314377367, + "99.9999" : 2.9170488314377367, + "100.0" : 2.9170488314377367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8638599026345934, + 2.8847825835015866, + 2.8619255064377684 + ], + [ + 2.9170488314377367, + 2.9152034033809384, + 2.900092681936793 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18015471253528567, + "scoreError" : 0.007531678254298898, + "scoreConfidence" : [ + 0.17262303428098677, + 0.18768639078958457 + ], + "scorePercentiles" : { + "0.0" : 0.17765863126010412, + "50.0" : 0.17937288614973781, + "90.0" : 0.1848235253848855, + "95.0" : 0.1848235253848855, + "99.0" : 0.1848235253848855, + "99.9" : 0.1848235253848855, + "99.99" : 0.1848235253848855, + "99.999" : 0.1848235253848855, + "99.9999" : 0.1848235253848855, + "100.0" : 0.1848235253848855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17881892570273944, + 0.17811531162169383, + 0.17765863126010412 + ], + [ + 0.1848235253848855, + 0.18158503464555492, + 0.1799268465967362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3307123182673856, + "scoreError" : 0.006132333375807538, + "scoreConfidence" : [ + 0.3245799848915781, + 0.33684465164319316 + ], + "scorePercentiles" : { + "0.0" : 0.3282446893258058, + "50.0" : 0.3305912574271351, + "90.0" : 0.3335465067040224, + "95.0" : 0.3335465067040224, + "99.0" : 0.3335465067040224, + "99.9" : 0.3335465067040224, + "99.99" : 0.3335465067040224, + "99.999" : 0.3335465067040224, + "99.9999" : 0.3335465067040224, + "100.0" : 0.3335465067040224 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32908114696107144, + 0.3290389183693614, + 0.3282446893258058 + ], + [ + 0.3321013678931987, + 0.3322612803508539, + 0.3335465067040224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14903994834202133, + "scoreError" : 0.007121844548758751, + "scoreConfidence" : [ + 0.14191810379326258, + 0.15616179289078008 + ], + "scorePercentiles" : { + "0.0" : 0.14704774167365126, + "50.0" : 0.14771863569804766, + "90.0" : 0.15351056511727865, + "95.0" : 0.15351056511727865, + "99.0" : 0.15351056511727865, + "99.9" : 0.15351056511727865, + "99.99" : 0.15351056511727865, + "99.999" : 0.15351056511727865, + "99.9999" : 0.15351056511727865, + "100.0" : 0.15351056511727865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14704774167365126, + 0.1476247174089547, + 0.14781255398714063 + ], + [ + 0.15351056511727865, + 0.15066683527940578, + 0.147577276585697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4026375365578448, + "scoreError" : 0.021466295108100372, + "scoreConfidence" : [ + 0.3811712414497444, + 0.4241038316659452 + ], + "scorePercentiles" : { + "0.0" : 0.39542367216291024, + "50.0" : 0.4025711390696852, + "90.0" : 0.4099623057024556, + "95.0" : 0.4099623057024556, + "99.0" : 0.4099623057024556, + "99.9" : 0.4099623057024556, + "99.99" : 0.4099623057024556, + "99.999" : 0.4099623057024556, + "99.9999" : 0.4099623057024556, + "100.0" : 0.4099623057024556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40969899463312714, + 0.4099623057024556, + 0.40919991071647777 + ], + [ + 0.39542367216291024, + 0.39559796870920527, + 0.3959423674228927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1595075753531734, + "scoreError" : 0.016702735722032028, + "scoreConfidence" : [ + 0.14280483963114138, + 0.1762103110752054 + ], + "scorePercentiles" : { + "0.0" : 0.15400105496180855, + "50.0" : 0.15861204371832976, + "90.0" : 0.16585605859621189, + "95.0" : 0.16585605859621189, + "99.0" : 0.16585605859621189, + "99.9" : 0.16585605859621189, + "99.99" : 0.16585605859621189, + "99.999" : 0.16585605859621189, + "99.9999" : 0.16585605859621189, + "100.0" : 0.16585605859621189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16579791284236356, + 0.16585605859621189, + 0.1629169706591509 + ], + [ + 0.15400105496180855, + 0.1543071167775086, + 0.15416633828199675 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04683078043086106, + "scoreError" : 0.002194719613108145, + "scoreConfidence" : [ + 0.04463606081775291, + 0.0490255000439692 + ], + "scorePercentiles" : { + "0.0" : 0.04609252335475069, + "50.0" : 0.04679773882646884, + "90.0" : 0.047731446324501575, + "95.0" : 0.047731446324501575, + "99.0" : 0.047731446324501575, + "99.9" : 0.047731446324501575, + "99.99" : 0.047731446324501575, + "99.999" : 0.047731446324501575, + "99.9999" : 0.047731446324501575, + "100.0" : 0.047731446324501575 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047731446324501575, + 0.047410180848441175, + 0.04747165794308229 + ], + [ + 0.04618529680449652, + 0.04609252335475069, + 0.04609357730989408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9196988.38098221, + "scoreError" : 777788.4121037301, + "scoreConfidence" : [ + 8419199.968878482, + 9974776.79308594 + ], + "scorePercentiles" : { + "0.0" : 8815721.799118944, + "50.0" : 9177878.500463411, + "90.0" : 9559845.782234957, + "95.0" : 9559845.782234957, + "99.0" : 9559845.782234957, + "99.9" : 9559845.782234957, + "99.99" : 9559845.782234957, + "99.999" : 9559845.782234957, + "99.9999" : 9559845.782234957, + "100.0" : 9559845.782234957 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9022959.051397655, + 9069683.53853128, + 8815721.799118944 + ], + [ + 9286073.462395543, + 9559845.782234957, + 9427646.652214892 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-10T01:46:15Z-fc171b107f5f4cdfbb180f5aa0cb0f1bc75377e2-jdk17.json b/performance-results/2025-08-10T01:46:15Z-fc171b107f5f4cdfbb180f5aa0cb0f1bc75377e2-jdk17.json new file mode 100644 index 0000000000..c02c3c033a --- /dev/null +++ b/performance-results/2025-08-10T01:46:15Z-fc171b107f5f4cdfbb180f5aa0cb0f1bc75377e2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3578520810822936, + "scoreError" : 0.04170804404739272, + "scoreConfidence" : [ + 3.316144037034901, + 3.3995601251296863 + ], + "scorePercentiles" : { + "0.0" : 3.3484779716496833, + "50.0" : 3.3603875250713298, + "90.0" : 3.362155302536833, + "95.0" : 3.362155302536833, + "99.0" : 3.362155302536833, + "99.9" : 3.362155302536833, + "99.99" : 3.362155302536833, + "99.999" : 3.362155302536833, + "99.9999" : 3.362155302536833, + "100.0" : 3.362155302536833 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3484779716496833, + 3.3620798497733806 + ], + [ + 3.3586952003692785, + 3.362155302536833 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6965545813761094, + "scoreError" : 0.014804673221205619, + "scoreConfidence" : [ + 1.6817499081549037, + 1.711359254597315 + ], + "scorePercentiles" : { + "0.0" : 1.6946056288386402, + "50.0" : 1.6961397766131392, + "90.0" : 1.6993331434395187, + "95.0" : 1.6993331434395187, + "99.0" : 1.6993331434395187, + "99.9" : 1.6993331434395187, + "99.99" : 1.6993331434395187, + "99.999" : 1.6993331434395187, + "99.9999" : 1.6993331434395187, + "100.0" : 1.6993331434395187 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6975332682350228, + 1.6993331434395187 + ], + [ + 1.6946056288386402, + 1.6947462849912553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.852539875943776, + "scoreError" : 0.041583140552373374, + "scoreConfidence" : [ + 0.8109567353914027, + 0.8941230164961493 + ], + "scorePercentiles" : { + "0.0" : 0.8429795051939707, + "50.0" : 0.8552125735941242, + "90.0" : 0.8567548513928852, + "95.0" : 0.8567548513928852, + "99.0" : 0.8567548513928852, + "99.9" : 0.8567548513928852, + "99.99" : 0.8567548513928852, + "99.999" : 0.8567548513928852, + "99.9999" : 0.8567548513928852, + "100.0" : 0.8567548513928852 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8429795051939707, + 0.854589768500283 + ], + [ + 0.8558353786879653, + 0.8567548513928852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.54155599539207, + "scoreError" : 0.2954629628833302, + "scoreConfidence" : [ + 16.24609303250874, + 16.8370189582754 + ], + "scorePercentiles" : { + "0.0" : 16.44024089851539, + "50.0" : 16.540400456998363, + "90.0" : 16.650720146351283, + "95.0" : 16.650720146351283, + "99.0" : 16.650720146351283, + "99.9" : 16.650720146351283, + "99.99" : 16.650720146351283, + "99.999" : 16.650720146351283, + "99.9999" : 16.650720146351283, + "100.0" : 16.650720146351283 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.631280763130725, + 16.6303979454082, + 16.650720146351283 + ], + [ + 16.44629325035829, + 16.450402968588524, + 16.44024089851539 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2709.8302983366048, + "scoreError" : 49.39353859122522, + "scoreConfidence" : [ + 2660.4367597453797, + 2759.22383692783 + ], + "scorePercentiles" : { + "0.0" : 2693.3522760436945, + "50.0" : 2707.7597968038385, + "90.0" : 2729.942798266261, + "95.0" : 2729.942798266261, + "99.0" : 2729.942798266261, + "99.9" : 2729.942798266261, + "99.99" : 2729.942798266261, + "99.999" : 2729.942798266261, + "99.9999" : 2729.942798266261, + "100.0" : 2729.942798266261 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2729.942798266261, + 2726.24161596544, + 2720.8822332755626 + ], + [ + 2693.925506136556, + 2694.6373603321144, + 2693.3522760436945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77417.45878112779, + "scoreError" : 160.6656806563549, + "scoreConfidence" : [ + 77256.79310047143, + 77578.12446178414 + ], + "scorePercentiles" : { + "0.0" : 77366.66933312459, + "50.0" : 77406.74309022399, + "90.0" : 77497.2804845266, + "95.0" : 77497.2804845266, + "99.0" : 77497.2804845266, + "99.9" : 77497.2804845266, + "99.99" : 77497.2804845266, + "99.999" : 77497.2804845266, + "99.9999" : 77497.2804845266, + "100.0" : 77497.2804845266 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77368.98836121014, + 77367.00486375373, + 77366.66933312459 + ], + [ + 77497.2804845266, + 77460.31182491382, + 77444.49781923782 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 374.99739677233407, + "scoreError" : 29.042549952003064, + "scoreConfidence" : [ + 345.954846820331, + 404.03994672433714 + ], + "scorePercentiles" : { + "0.0" : 365.3220018894544, + "50.0" : 374.82235058044637, + "90.0" : 385.0952307881143, + "95.0" : 385.0952307881143, + "99.0" : 385.0952307881143, + "99.9" : 385.0952307881143, + "99.99" : 385.0952307881143, + "99.999" : 385.0952307881143, + "99.9999" : 385.0952307881143, + "100.0" : 385.0952307881143 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 383.8673238698566, + 385.0952307881143, + 384.37014278073804 + ], + [ + 365.5523040148052, + 365.3220018894544, + 365.7773772910361 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.18061396669134, + "scoreError" : 1.9475600889380174, + "scoreConfidence" : [ + 114.23305387775332, + 118.12817405562936 + ], + "scorePercentiles" : { + "0.0" : 115.4375425753084, + "50.0" : 116.142875296657, + "90.0" : 116.95034210117655, + "95.0" : 116.95034210117655, + "99.0" : 116.95034210117655, + "99.9" : 116.95034210117655, + "99.99" : 116.95034210117655, + "99.999" : 116.95034210117655, + "99.9999" : 116.95034210117655, + "100.0" : 116.95034210117655 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.51128704277293, + 115.4375425753084, + 115.75521452743425 + ], + [ + 116.8987614875761, + 116.95034210117655, + 116.53053606587976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06067180108189951, + "scoreError" : 1.7778103371464936E-4, + "scoreConfidence" : [ + 0.06049402004818486, + 0.06084958211561416 + ], + "scorePercentiles" : { + "0.0" : 0.06059998696513735, + "50.0" : 0.060668033323660234, + "90.0" : 0.060764907924239386, + "95.0" : 0.060764907924239386, + "99.0" : 0.060764907924239386, + "99.9" : 0.060764907924239386, + "99.99" : 0.060764907924239386, + "99.999" : 0.060764907924239386, + "99.9999" : 0.060764907924239386, + "100.0" : 0.060764907924239386 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06059998696513735, + 0.06065419458125091, + 0.06061123538075496 + ], + [ + 0.060681872066069564, + 0.06071860957394488, + 0.060764907924239386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7625239901502625E-4, + "scoreError" : 6.507436401293764E-6, + "scoreConfidence" : [ + 3.6974496261373246E-4, + 3.8275983541632004E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7350582582150086E-4, + "50.0" : 3.7639675463173506E-4, + "90.0" : 3.783826175079246E-4, + "95.0" : 3.783826175079246E-4, + "99.0" : 3.783826175079246E-4, + "99.9" : 3.783826175079246E-4, + "99.99" : 3.783826175079246E-4, + "99.999" : 3.783826175079246E-4, + "99.9999" : 3.783826175079246E-4, + "100.0" : 3.783826175079246E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7350582582150086E-4, + 3.74517487222197E-4, + 3.74455848446912E-4 + ], + [ + 3.783765930503499E-4, + 3.7827602204127314E-4, + 3.783826175079246E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12231023013418056, + "scoreError" : 0.0012736495267368917, + "scoreConfidence" : [ + 0.12103658060744367, + 0.12358387966091745 + ], + "scorePercentiles" : { + "0.0" : 0.12177308990392226, + "50.0" : 0.12228649048511926, + "90.0" : 0.12279530937645816, + "95.0" : 0.12279530937645816, + "99.0" : 0.12279530937645816, + "99.9" : 0.12279530937645816, + "99.99" : 0.12279530937645816, + "99.999" : 0.12279530937645816, + "99.9999" : 0.12279530937645816, + "100.0" : 0.12279530937645816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12279530937645816, + 0.12276644100568398, + 0.12257904622343165 + ], + [ + 0.12195355954878048, + 0.12199393474680688, + 0.12177308990392226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013111989882552329, + "scoreError" : 4.3776558560913666E-4, + "scoreConfidence" : [ + 0.012674224296943192, + 0.013549755468161466 + ], + "scorePercentiles" : { + "0.0" : 0.012951516102419312, + "50.0" : 0.013113845410859328, + "90.0" : 0.013261396614669324, + "95.0" : 0.013261396614669324, + "99.0" : 0.013261396614669324, + "99.9" : 0.013261396614669324, + "99.99" : 0.013261396614669324, + "99.999" : 0.013261396614669324, + "99.9999" : 0.013261396614669324, + "100.0" : 0.013261396614669324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012951516102419312, + 0.012981332090172234, + 0.012976696338801644 + ], + [ + 0.013261396614669324, + 0.013254639417705043, + 0.013246358731546424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0737944578601812, + "scoreError" : 0.1667444515086843, + "scoreConfidence" : [ + 0.9070500063514969, + 1.2405389093688655 + ], + "scorePercentiles" : { + "0.0" : 1.0191663128503006, + "50.0" : 1.0739247008846324, + "90.0" : 1.1284834018280299, + "95.0" : 1.1284834018280299, + "99.0" : 1.1284834018280299, + "99.9" : 1.1284834018280299, + "99.99" : 1.1284834018280299, + "99.999" : 1.1284834018280299, + "99.9999" : 1.1284834018280299, + "100.0" : 1.1284834018280299 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0191663128503006, + 1.019235173461068, + 1.0201407565279477 + ], + [ + 1.1284834018280299, + 1.1277086452413172, + 1.128032457252425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010638811570419291, + "scoreError" : 0.0011614337150658354, + "scoreConfidence" : [ + 0.009477377855353457, + 0.011800245285485126 + ], + "scorePercentiles" : { + "0.0" : 0.010259340775955993, + "50.0" : 0.010637812533889745, + "90.0" : 0.011018777255258008, + "95.0" : 0.011018777255258008, + "99.0" : 0.011018777255258008, + "99.9" : 0.011018777255258008, + "99.99" : 0.011018777255258008, + "99.999" : 0.011018777255258008, + "99.9999" : 0.011018777255258008, + "100.0" : 0.011018777255258008 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011018777255258008, + 0.011017772985181513, + 0.01101414913441989 + ], + [ + 0.010259340775955993, + 0.010261475933359602, + 0.010261353338340742 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0827285542303806, + "scoreError" : 0.08365090115802343, + "scoreConfidence" : [ + 2.9990776530723573, + 3.166379455388404 + ], + "scorePercentiles" : { + "0.0" : 3.049663473780488, + "50.0" : 3.0861501204309834, + "90.0" : 3.115209204234122, + "95.0" : 3.115209204234122, + "99.0" : 3.115209204234122, + "99.9" : 3.115209204234122, + "99.99" : 3.115209204234122, + "99.999" : 3.115209204234122, + "99.9999" : 3.115209204234122, + "100.0" : 3.115209204234122 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1022891978908187, + 3.115209204234122, + 3.1090706022374146 + ], + [ + 3.0501278042682927, + 3.070011042971148, + 3.049663473780488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7119318334761715, + "scoreError" : 0.14436848601531116, + "scoreConfidence" : [ + 2.5675633474608603, + 2.8563003194914827 + ], + "scorePercentiles" : { + "0.0" : 2.663133615282215, + "50.0" : 2.709559625403682, + "90.0" : 2.7626440524861877, + "95.0" : 2.7626440524861877, + "99.0" : 2.7626440524861877, + "99.9" : 2.7626440524861877, + "99.99" : 2.7626440524861877, + "99.999" : 2.7626440524861877, + "99.9999" : 2.7626440524861877, + "100.0" : 2.7626440524861877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6659775495735607, + 2.6659901255665157, + 2.663133615282215 + ], + [ + 2.753129125240848, + 2.7626440524861877, + 2.760716532707701 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17250331924478768, + "scoreError" : 0.0038377511787421564, + "scoreConfidence" : [ + 0.16866556806604552, + 0.17634107042352984 + ], + "scorePercentiles" : { + "0.0" : 0.171199877456687, + "50.0" : 0.1723776480088797, + "90.0" : 0.17451642544762835, + "95.0" : 0.17451642544762835, + "99.0" : 0.17451642544762835, + "99.9" : 0.17451642544762835, + "99.99" : 0.17451642544762835, + "99.999" : 0.17451642544762835, + "99.9999" : 0.17451642544762835, + "100.0" : 0.17451642544762835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17451642544762835, + 0.1732385074404504, + 0.17327283537789792 + ], + [ + 0.17151678857730898, + 0.17127548116875332, + 0.171199877456687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32976411110048703, + "scoreError" : 0.02641316216150992, + "scoreConfidence" : [ + 0.3033509489389771, + 0.35617727326199694 + ], + "scorePercentiles" : { + "0.0" : 0.32108948264568954, + "50.0" : 0.3296047258198368, + "90.0" : 0.3386812274867071, + "95.0" : 0.3386812274867071, + "99.0" : 0.3386812274867071, + "99.9" : 0.3386812274867071, + "99.99" : 0.3386812274867071, + "99.999" : 0.3386812274867071, + "99.9999" : 0.3386812274867071, + "100.0" : 0.3386812274867071 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3384311082608549, + 0.3379675409104735, + 0.3386812274867071 + ], + [ + 0.3211733965699971, + 0.32108948264568954, + 0.3212419107292001 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1473522006334595, + "scoreError" : 0.004636256673300404, + "scoreConfidence" : [ + 0.1427159439601591, + 0.1519884573067599 + ], + "scorePercentiles" : { + "0.0" : 0.14540217546818657, + "50.0" : 0.14776724613040498, + "90.0" : 0.1489661265585199, + "95.0" : 0.1489661265585199, + "99.0" : 0.1489661265585199, + "99.9" : 0.1489661265585199, + "99.99" : 0.1489661265585199, + "99.999" : 0.1489661265585199, + "99.9999" : 0.1489661265585199, + "100.0" : 0.1489661265585199 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1489661265585199, + 0.14867030679115129, + 0.14871185212283441 + ], + [ + 0.1468641854696587, + 0.14549855739040607, + 0.14540217546818657 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4068186304479915, + "scoreError" : 0.03155188489795706, + "scoreConfidence" : [ + 0.3752667455500344, + 0.43837051534594856 + ], + "scorePercentiles" : { + "0.0" : 0.3963528583488566, + "50.0" : 0.40671411868394014, + "90.0" : 0.41801421577561343, + "95.0" : 0.41801421577561343, + "99.0" : 0.41801421577561343, + "99.9" : 0.41801421577561343, + "99.99" : 0.41801421577561343, + "99.999" : 0.41801421577561343, + "99.9999" : 0.41801421577561343, + "100.0" : 0.41801421577561343 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41801421577561343, + 0.4165849729234358, + 0.41663558521851435 + ], + [ + 0.39684326444444445, + 0.3964808859770844, + 0.3963528583488566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1538528611241408, + "scoreError" : 0.00720371164247281, + "scoreConfidence" : [ + 0.146649149481668, + 0.1610565727666136 + ], + "scorePercentiles" : { + "0.0" : 0.15138993747729199, + "50.0" : 0.15391928129100524, + "90.0" : 0.15626938653623776, + "95.0" : 0.15626938653623776, + "99.0" : 0.15626938653623776, + "99.9" : 0.15626938653623776, + "99.99" : 0.15626938653623776, + "99.999" : 0.15626938653623776, + "99.9999" : 0.15626938653623776, + "100.0" : 0.15626938653623776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15626938653623776, + 0.15616167960710214, + 0.15615694098908478 + ], + [ + 0.15138993747729199, + 0.15168162159292572, + 0.15145760054220242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04738492024290411, + "scoreError" : 0.002666267328978843, + "scoreConfidence" : [ + 0.044718652913925266, + 0.050051187571882955 + ], + "scorePercentiles" : { + "0.0" : 0.04636883006593529, + "50.0" : 0.047270152920560304, + "90.0" : 0.048545326796021304, + "95.0" : 0.048545326796021304, + "99.0" : 0.048545326796021304, + "99.9" : 0.048545326796021304, + "99.99" : 0.048545326796021304, + "99.999" : 0.048545326796021304, + "99.9999" : 0.048545326796021304, + "100.0" : 0.048545326796021304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04664576500221564, + 0.0466115686392408, + 0.04636883006593529 + ], + [ + 0.048545326796021304, + 0.04789454083890496, + 0.04824349011510667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8590358.256264187, + "scoreError" : 133975.92039598845, + "scoreConfidence" : [ + 8456382.335868198, + 8724334.176660176 + ], + "scorePercentiles" : { + "0.0" : 8529077.79198636, + "50.0" : 8583848.588268487, + "90.0" : 8647488.84096802, + "95.0" : 8647488.84096802, + "99.0" : 8647488.84096802, + "99.9" : 8647488.84096802, + "99.99" : 8647488.84096802, + "99.999" : 8647488.84096802, + "99.9999" : 8647488.84096802, + "100.0" : 8647488.84096802 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8568406.9375, + 8529077.79198636, + 8556018.35158255 + ], + [ + 8599290.239036974, + 8641867.376511225, + 8647488.84096802 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-10T02:14:29Z-da04414d24783191bfc1dad4d5539c3ef09f39db-jdk17.json b/performance-results/2025-08-10T02:14:29Z-da04414d24783191bfc1dad4d5539c3ef09f39db-jdk17.json new file mode 100644 index 0000000000..564e293f91 --- /dev/null +++ b/performance-results/2025-08-10T02:14:29Z-da04414d24783191bfc1dad4d5539c3ef09f39db-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3084673082669753, + "scoreError" : 0.0495787054088271, + "scoreConfidence" : [ + 3.258888602858148, + 3.3580460136758026 + ], + "scorePercentiles" : { + "0.0" : 3.298682395085806, + "50.0" : 3.3089108791092228, + "90.0" : 3.3173650797636496, + "95.0" : 3.3173650797636496, + "99.0" : 3.3173650797636496, + "99.9" : 3.3173650797636496, + "99.99" : 3.3173650797636496, + "99.999" : 3.3173650797636496, + "99.9999" : 3.3173650797636496, + "100.0" : 3.3173650797636496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.309713041525624, + 3.3173650797636496 + ], + [ + 3.298682395085806, + 3.308108716692822 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.671533028586416, + "scoreError" : 0.03384416598181523, + "scoreConfidence" : [ + 1.637688862604601, + 1.7053771945682312 + ], + "scorePercentiles" : { + "0.0" : 1.6647722465964487, + "50.0" : 1.672384250976591, + "90.0" : 1.6765913657960334, + "95.0" : 1.6765913657960334, + "99.0" : 1.6765913657960334, + "99.9" : 1.6765913657960334, + "99.99" : 1.6765913657960334, + "99.999" : 1.6765913657960334, + "99.9999" : 1.6765913657960334, + "100.0" : 1.6765913657960334 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6647722465964487, + 1.6701993408251181 + ], + [ + 1.6745691611280638, + 1.6765913657960334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8389227710839395, + "scoreError" : 0.02075559956838633, + "scoreConfidence" : [ + 0.8181671715155532, + 0.8596783706523259 + ], + "scorePercentiles" : { + "0.0" : 0.8358714735480048, + "50.0" : 0.8383871054252953, + "90.0" : 0.8430453999371632, + "95.0" : 0.8430453999371632, + "99.0" : 0.8430453999371632, + "99.9" : 0.8430453999371632, + "99.99" : 0.8430453999371632, + "99.999" : 0.8430453999371632, + "99.9999" : 0.8430453999371632, + "100.0" : 0.8430453999371632 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8358714735480048, + 0.8398135601915034 + ], + [ + 0.8369606506590871, + 0.8430453999371632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.86578054756908, + "scoreError" : 0.17255775746977414, + "scoreConfidence" : [ + 15.693222790099307, + 16.038338305038856 + ], + "scorePercentiles" : { + "0.0" : 15.805260980199249, + "50.0" : 15.841317797183972, + "90.0" : 15.961612668625706, + "95.0" : 15.961612668625706, + "99.0" : 15.961612668625706, + "99.9" : 15.961612668625706, + "99.99" : 15.961612668625706, + "99.999" : 15.961612668625706, + "99.9999" : 15.961612668625706, + "100.0" : 15.961612668625706 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.824633196684303, + 15.805260980199249, + 15.831363214660925 + ], + [ + 15.85127237970702, + 15.920540845537275, + 15.961612668625706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2730.1837149564008, + "scoreError" : 141.3425765942073, + "scoreConfidence" : [ + 2588.8411383621933, + 2871.526291550608 + ], + "scorePercentiles" : { + "0.0" : 2673.7443335675944, + "50.0" : 2731.7312424123206, + "90.0" : 2781.30107337162, + "95.0" : 2781.30107337162, + "99.0" : 2781.30107337162, + "99.9" : 2781.30107337162, + "99.99" : 2781.30107337162, + "99.999" : 2781.30107337162, + "99.9999" : 2781.30107337162, + "100.0" : 2781.30107337162 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2686.5404243909197, + 2693.712276430712, + 2673.7443335675944 + ], + [ + 2781.30107337162, + 2769.7502083939294, + 2776.0539735836305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77083.19252376433, + "scoreError" : 965.4739208701415, + "scoreConfidence" : [ + 76117.7186028942, + 78048.66644463447 + ], + "scorePercentiles" : { + "0.0" : 76682.09120401308, + "50.0" : 77105.38732060436, + "90.0" : 77484.89337224307, + "95.0" : 77484.89337224307, + "99.0" : 77484.89337224307, + "99.9" : 77484.89337224307, + "99.99" : 77484.89337224307, + "99.999" : 77484.89337224307, + "99.9999" : 77484.89337224307, + "100.0" : 77484.89337224307 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77307.72406729138, + 77366.13189091973, + 77484.89337224307 + ], + [ + 76755.26403420133, + 76903.05057391735, + 76682.09120401308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.4958631038318, + "scoreError" : 5.533643698395508, + "scoreConfidence" : [ + 336.9622194054363, + 348.02950680222733 + ], + "scorePercentiles" : { + "0.0" : 339.22904702213935, + "50.0" : 343.18539602696586, + "90.0" : 344.24139816885514, + "95.0" : 344.24139816885514, + "99.0" : 344.24139816885514, + "99.9" : 344.24139816885514, + "99.99" : 344.24139816885514, + "99.999" : 344.24139816885514, + "99.9999" : 344.24139816885514, + "100.0" : 344.24139816885514 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.24139816885514, + 342.60363529307494, + 339.22904702213935 + ], + [ + 341.13280386497433, + 344.0011375130901, + 343.7671567608568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 110.90408209978482, + "scoreError" : 2.6998966244935403, + "scoreConfidence" : [ + 108.20418547529127, + 113.60397872427836 + ], + "scorePercentiles" : { + "0.0" : 109.35632375136728, + "50.0" : 111.02080270157111, + "90.0" : 111.8723713391271, + "95.0" : 111.8723713391271, + "99.0" : 111.8723713391271, + "99.9" : 111.8723713391271, + "99.99" : 111.8723713391271, + "99.999" : 111.8723713391271, + "99.9999" : 111.8723713391271, + "100.0" : 111.8723713391271 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.29807389782495, + 109.35632375136728, + 111.04317679679615 + ], + [ + 111.8723713391271, + 110.99842860634607, + 111.85611820724742 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06255932109035364, + "scoreError" : 6.566493253165014E-4, + "scoreConfidence" : [ + 0.061902671765037144, + 0.06321597041567015 + ], + "scorePercentiles" : { + "0.0" : 0.062260569431819596, + "50.0" : 0.062573523670248, + "90.0" : 0.06281568887995527, + "95.0" : 0.06281568887995527, + "99.0" : 0.06281568887995527, + "99.9" : 0.06281568887995527, + "99.99" : 0.06281568887995527, + "99.999" : 0.06281568887995527, + "99.9999" : 0.06281568887995527, + "100.0" : 0.06281568887995527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06276702714628238, + 0.06271158075541035, + 0.062260569431819596 + ], + [ + 0.062365593743568634, + 0.06243546658508566, + 0.06281568887995527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.814052184783808E-4, + "scoreError" : 2.1149740800615543E-5, + "scoreConfidence" : [ + 3.6025547767776526E-4, + 4.0255495927899636E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7333318980091543E-4, + "50.0" : 3.810589611966397E-4, + "90.0" : 3.903457537529501E-4, + "95.0" : 3.903457537529501E-4, + "99.0" : 3.903457537529501E-4, + "99.9" : 3.903457537529501E-4, + "99.99" : 3.903457537529501E-4, + "99.999" : 3.903457537529501E-4, + "99.9999" : 3.903457537529501E-4, + "100.0" : 3.903457537529501E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8644576969418547E-4, + 3.876828527683982E-4, + 3.903457537529501E-4 + ], + [ + 3.7333318980091543E-4, + 3.756721526990939E-4, + 3.7495159215474185E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12454567316972526, + "scoreError" : 5.561965564698811E-4, + "scoreConfidence" : [ + 0.12398947661325538, + 0.12510186972619514 + ], + "scorePercentiles" : { + "0.0" : 0.12432865041711735, + "50.0" : 0.12453315596535776, + "90.0" : 0.1248082304648986, + "95.0" : 0.1248082304648986, + "99.0" : 0.1248082304648986, + "99.9" : 0.1248082304648986, + "99.99" : 0.1248082304648986, + "99.999" : 0.1248082304648986, + "99.9999" : 0.1248082304648986, + "100.0" : 0.1248082304648986 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12470748977428607, + 0.12443085440541515, + 0.12432865041711735 + ], + [ + 0.12436335643133402, + 0.1248082304648986, + 0.12463545752530036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013189883031203713, + "scoreError" : 1.4657010338322763E-4, + "scoreConfidence" : [ + 0.013043312927820485, + 0.01333645313458694 + ], + "scorePercentiles" : { + "0.0" : 0.013124220356133245, + "50.0" : 0.013185911105323592, + "90.0" : 0.013245436990305793, + "95.0" : 0.013245436990305793, + "99.0" : 0.013245436990305793, + "99.9" : 0.013245436990305793, + "99.99" : 0.013245436990305793, + "99.999" : 0.013245436990305793, + "99.9999" : 0.013245436990305793, + "100.0" : 0.013245436990305793 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013244804703962661, + 0.01321636417462281, + 0.013245436990305793 + ], + [ + 0.013124220356133245, + 0.013155458036024375, + 0.013153013926173393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0158686166819377, + "scoreError" : 0.0027004496604895495, + "scoreConfidence" : [ + 1.013168167021448, + 1.0185690663424274 + ], + "scorePercentiles" : { + "0.0" : 1.0144033046962166, + "50.0" : 1.015954432040874, + "90.0" : 1.0171452855980472, + "95.0" : 1.0171452855980472, + "99.0" : 1.0171452855980472, + "99.9" : 1.0171452855980472, + "99.99" : 1.0171452855980472, + "99.999" : 1.0171452855980472, + "99.9999" : 1.0171452855980472, + "100.0" : 1.0171452855980472 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.015931843356359, + 1.016526734193942, + 1.0171452855980472 + ], + [ + 1.0159770207253886, + 1.015227511521673, + 1.0144033046962166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010630762054109823, + "scoreError" : 3.770589840622781E-4, + "scoreConfidence" : [ + 0.010253703070047545, + 0.0110078210381721 + ], + "scorePercentiles" : { + "0.0" : 0.010470807807241833, + "50.0" : 0.010650233294003733, + "90.0" : 0.010754240363914012, + "95.0" : 0.010754240363914012, + "99.0" : 0.010754240363914012, + "99.9" : 0.010754240363914012, + "99.99" : 0.010754240363914012, + "99.999" : 0.010754240363914012, + "99.9999" : 0.010754240363914012, + "100.0" : 0.010754240363914012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010754240363914012, + 0.010751918055241966, + 0.010747314417810868 + ], + [ + 0.0105531521701966, + 0.010507139510253657, + 0.010470807807241833 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3743637225332868, + "scoreError" : 0.05062411893758047, + "scoreConfidence" : [ + 3.323739603595706, + 3.4249878414708674 + ], + "scorePercentiles" : { + "0.0" : 3.354650947015426, + "50.0" : 3.3718571618341198, + "90.0" : 3.399334186267845, + "95.0" : 3.399334186267845, + "99.0" : 3.399334186267845, + "99.9" : 3.399334186267845, + "99.99" : 3.399334186267845, + "99.999" : 3.399334186267845, + "99.9999" : 3.399334186267845, + "100.0" : 3.399334186267845 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.370012, + 3.37370232366824, + 3.3569492389261746 + ], + [ + 3.391533639322034, + 3.399334186267845, + 3.354650947015426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9429261094411276, + "scoreError" : 0.05777431256667438, + "scoreConfidence" : [ + 2.885151796874453, + 3.000700422007802 + ], + "scorePercentiles" : { + "0.0" : 2.915625160058309, + "50.0" : 2.9440864791437624, + "90.0" : 2.9637986296296295, + "95.0" : 2.9637986296296295, + "99.0" : 2.9637986296296295, + "99.9" : 2.9637986296296295, + "99.99" : 2.9637986296296295, + "99.999" : 2.9637986296296295, + "99.9999" : 2.9637986296296295, + "100.0" : 2.9637986296296295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9289662029282577, + 2.915625160058309, + 2.929640394844757 + ], + [ + 2.9609937057430433, + 2.9585325634427684, + 2.9637986296296295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17583020770185076, + "scoreError" : 0.003197375533510414, + "scoreConfidence" : [ + 0.17263283216834036, + 0.17902758323536117 + ], + "scorePercentiles" : { + "0.0" : 0.17476914024816498, + "50.0" : 0.17578685804798821, + "90.0" : 0.17704897825894517, + "95.0" : 0.17704897825894517, + "99.0" : 0.17704897825894517, + "99.9" : 0.17704897825894517, + "99.99" : 0.17704897825894517, + "99.999" : 0.17704897825894517, + "99.9999" : 0.17704897825894517, + "100.0" : 0.17704897825894517 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17476914024816498, + 0.17478097782088925, + 0.17483092487630902 + ], + [ + 0.17704897825894517, + 0.1768084337871287, + 0.17674279121966738 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3281124634783437, + "scoreError" : 0.00117163453717925, + "scoreConfidence" : [ + 0.3269408289411645, + 0.32928409801552294 + ], + "scorePercentiles" : { + "0.0" : 0.32754155533719825, + "50.0" : 0.32806511711445724, + "90.0" : 0.3288240634617914, + "95.0" : 0.3288240634617914, + "99.0" : 0.3288240634617914, + "99.9" : 0.3288240634617914, + "99.99" : 0.3288240634617914, + "99.999" : 0.3288240634617914, + "99.9999" : 0.3288240634617914, + "100.0" : 0.3288240634617914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.327957180205293, + 0.32806606770987107, + 0.3280641665190434 + ], + [ + 0.32754155533719825, + 0.3282217476368649, + 0.3288240634617914 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14697488455267071, + "scoreError" : 0.00711081737744563, + "scoreConfidence" : [ + 0.1398640671752251, + 0.15408570193011634 + ], + "scorePercentiles" : { + "0.0" : 0.1447065321458029, + "50.0" : 0.14659036040772058, + "90.0" : 0.15110987861708397, + "95.0" : 0.15110987861708397, + "99.0" : 0.15110987861708397, + "99.9" : 0.15110987861708397, + "99.99" : 0.15110987861708397, + "99.999" : 0.15110987861708397, + "99.9999" : 0.15110987861708397, + "100.0" : 0.15110987861708397 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15110987861708397, + 0.14799934717103996, + 0.1480133643710315 + ], + [ + 0.1451813736444012, + 0.1447065321458029, + 0.14483881136666474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40520965762676947, + "scoreError" : 0.016664606129852037, + "scoreConfidence" : [ + 0.3885450514969174, + 0.4218742637566215 + ], + "scorePercentiles" : { + "0.0" : 0.3994700642326436, + "50.0" : 0.4048545111868923, + "90.0" : 0.41188960459656493, + "95.0" : 0.41188960459656493, + "99.0" : 0.41188960459656493, + "99.9" : 0.41188960459656493, + "99.99" : 0.41188960459656493, + "99.999" : 0.41188960459656493, + "99.9999" : 0.41188960459656493, + "100.0" : 0.41188960459656493 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4001176691073501, + 0.39990505910345103, + 0.3994700642326436 + ], + [ + 0.41188960459656493, + 0.4102841954541725, + 0.4095913532664346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15923400265217158, + "scoreError" : 0.0038352243884063465, + "scoreConfidence" : [ + 0.15539877826376525, + 0.1630692270405779 + ], + "scorePercentiles" : { + "0.0" : 0.1579531635576756, + "50.0" : 0.15911995105030075, + "90.0" : 0.16094071142332947, + "95.0" : 0.16094071142332947, + "99.0" : 0.16094071142332947, + "99.9" : 0.16094071142332947, + "99.99" : 0.16094071142332947, + "99.999" : 0.16094071142332947, + "99.9999" : 0.16094071142332947, + "100.0" : 0.16094071142332947 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15799123985717897, + 0.15808631203958393, + 0.1579531635576756 + ], + [ + 0.16094071142332947, + 0.1602789989742439, + 0.1601535900610176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0463123233009882, + "scoreError" : 0.00137270057338245, + "scoreConfidence" : [ + 0.04493962272760575, + 0.04768502387437065 + ], + "scorePercentiles" : { + "0.0" : 0.045670728177819996, + "50.0" : 0.04653111273649652, + "90.0" : 0.046858487620306075, + "95.0" : 0.046858487620306075, + "99.0" : 0.046858487620306075, + "99.9" : 0.046858487620306075, + "99.99" : 0.046858487620306075, + "99.999" : 0.046858487620306075, + "99.9999" : 0.046858487620306075, + "100.0" : 0.046858487620306075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046858487620306075, + 0.045732791626460566, + 0.045670728177819996 + ], + [ + 0.04654970690834951, + 0.046542409548498795, + 0.04651981592449425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8977540.945111837, + "scoreError" : 276635.6541227947, + "scoreConfidence" : [ + 8700905.290989043, + 9254176.599234631 + ], + "scorePercentiles" : { + "0.0" : 8834439.696113074, + "50.0" : 8982979.323865527, + "90.0" : 9130289.430656934, + "95.0" : 9130289.430656934, + "99.0" : 9130289.430656934, + "99.9" : 9130289.430656934, + "99.99" : 9130289.430656934, + "99.999" : 9130289.430656934, + "99.9999" : 9130289.430656934, + "100.0" : 9130289.430656934 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9014402.625225225, + 8974645.037668161, + 8991313.610062893 + ], + [ + 9130289.430656934, + 8920155.27094474, + 8834439.696113074 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-20T05:27:05Z-784a37ea628ff3de01aa8be415da7f228a20286b-jdk17.json b/performance-results/2025-08-20T05:27:05Z-784a37ea628ff3de01aa8be415da7f228a20286b-jdk17.json new file mode 100644 index 0000000000..7922c4e665 --- /dev/null +++ b/performance-results/2025-08-20T05:27:05Z-784a37ea628ff3de01aa8be415da7f228a20286b-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3481055486647313, + "scoreError" : 0.03929988919235386, + "scoreConfidence" : [ + 3.3088056594723776, + 3.387405437857085 + ], + "scorePercentiles" : { + "0.0" : 3.341048827216639, + "50.0" : 3.3477618669899405, + "90.0" : 3.355849633462407, + "95.0" : 3.355849633462407, + "99.0" : 3.355849633462407, + "99.9" : 3.355849633462407, + "99.99" : 3.355849633462407, + "99.999" : 3.355849633462407, + "99.9999" : 3.355849633462407, + "100.0" : 3.355849633462407 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.341048827216639, + 3.3470701759564183 + ], + [ + 3.3484535580234622, + 3.355849633462407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6897251852531046, + "scoreError" : 0.043060148079593574, + "scoreConfidence" : [ + 1.646665037173511, + 1.7327853333326981 + ], + "scorePercentiles" : { + "0.0" : 1.6829333490100358, + "50.0" : 1.6896625319831622, + "90.0" : 1.6966423280360576, + "95.0" : 1.6966423280360576, + "99.0" : 1.6966423280360576, + "99.9" : 1.6966423280360576, + "99.99" : 1.6966423280360576, + "99.999" : 1.6966423280360576, + "99.9999" : 1.6966423280360576, + "100.0" : 1.6966423280360576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6940912543316682, + 1.6966423280360576 + ], + [ + 1.6829333490100358, + 1.685233809634656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8471177333921709, + "scoreError" : 0.02666310392978403, + "scoreConfidence" : [ + 0.8204546294623869, + 0.8737808373219549 + ], + "scorePercentiles" : { + "0.0" : 0.8411874011807506, + "50.0" : 0.8482701255824613, + "90.0" : 0.85074328122301, + "95.0" : 0.85074328122301, + "99.0" : 0.85074328122301, + "99.9" : 0.85074328122301, + "99.99" : 0.85074328122301, + "99.999" : 0.85074328122301, + "99.9999" : 0.85074328122301, + "100.0" : 0.85074328122301 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8480401677896545, + 0.848500083375268 + ], + [ + 0.8411874011807506, + 0.85074328122301 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.354356539314917, + "scoreError" : 0.07237800354153569, + "scoreConfidence" : [ + 16.28197853577338, + 16.426734542856455 + ], + "scorePercentiles" : { + "0.0" : 16.330167306547, + "50.0" : 16.349494703164638, + "90.0" : 16.402336550591027, + "95.0" : 16.402336550591027, + "99.0" : 16.402336550591027, + "99.9" : 16.402336550591027, + "99.99" : 16.402336550591027, + "99.999" : 16.402336550591027, + "99.9999" : 16.402336550591027, + "100.0" : 16.402336550591027 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.347289332482372, + 16.330167306547, + 16.359319131757623 + ], + [ + 16.351700073846906, + 16.402336550591027, + 16.33532684066457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2569.3294077283517, + "scoreError" : 158.76042814710144, + "scoreConfidence" : [ + 2410.5689795812505, + 2728.089835875453 + ], + "scorePercentiles" : { + "0.0" : 2513.7826679096847, + "50.0" : 2570.0237647390563, + "90.0" : 2622.612726625413, + "95.0" : 2622.612726625413, + "99.0" : 2622.612726625413, + "99.9" : 2622.612726625413, + "99.99" : 2622.612726625413, + "99.999" : 2622.612726625413, + "99.9999" : 2622.612726625413, + "100.0" : 2622.612726625413 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2620.2637976840274, + 2620.027627078389, + 2622.612726625413 + ], + [ + 2513.7826679096847, + 2519.2697246728735, + 2520.019902399724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77843.83063782762, + "scoreError" : 503.6381961606761, + "scoreConfidence" : [ + 77340.19244166694, + 78347.4688339883 + ], + "scorePercentiles" : { + "0.0" : 77671.74699398458, + "50.0" : 77836.80604854104, + "90.0" : 78027.7201044826, + "95.0" : 78027.7201044826, + "99.0" : 78027.7201044826, + "99.9" : 78027.7201044826, + "99.99" : 78027.7201044826, + "99.999" : 78027.7201044826, + "99.9999" : 78027.7201044826, + "100.0" : 78027.7201044826 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77688.93778246039, + 77680.59684937872, + 77671.74699398458 + ], + [ + 77984.67431462168, + 78027.7201044826, + 78009.30778203777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.3138440929183, + "scoreError" : 9.474606345524869, + "scoreConfidence" : [ + 351.83923774739344, + 370.7884504384432 + ], + "scorePercentiles" : { + "0.0" : 356.5764979360481, + "50.0" : 361.9825606305737, + "90.0" : 365.1075110748268, + "95.0" : 365.1075110748268, + "99.0" : 365.1075110748268, + "99.9" : 365.1075110748268, + "99.99" : 365.1075110748268, + "99.999" : 365.1075110748268, + "99.9999" : 365.1075110748268, + "100.0" : 365.1075110748268 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.6020260522307, + 358.3365636423047, + 356.5764979360481 + ], + [ + 363.36309520891666, + 363.897370643183, + 365.1075110748268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.20755996542543, + "scoreError" : 0.5446783151889296, + "scoreConfidence" : [ + 114.6628816502365, + 115.75223828061436 + ], + "scorePercentiles" : { + "0.0" : 115.03051113800528, + "50.0" : 115.1145583961866, + "90.0" : 115.5158983036923, + "95.0" : 115.5158983036923, + "99.0" : 115.5158983036923, + "99.9" : 115.5158983036923, + "99.99" : 115.5158983036923, + "99.999" : 115.5158983036923, + "99.9999" : 115.5158983036923, + "100.0" : 115.5158983036923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.08870153501064, + 115.03051113800528, + 115.13284924923335 + ], + [ + 115.09626754313985, + 115.5158983036923, + 115.38113202347114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06090328393808464, + "scoreError" : 4.670504031190234E-4, + "scoreConfidence" : [ + 0.06043623353496562, + 0.06137033434120366 + ], + "scorePercentiles" : { + "0.0" : 0.06064530710265865, + "50.0" : 0.06092413898130761, + "90.0" : 0.06111937604894357, + "95.0" : 0.06111937604894357, + "99.0" : 0.06111937604894357, + "99.9" : 0.06111937604894357, + "99.99" : 0.06111937604894357, + "99.999" : 0.06111937604894357, + "99.9999" : 0.06111937604894357, + "100.0" : 0.06111937604894357 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060976476079268295, + 0.06100111127648932, + 0.06111937604894357 + ], + [ + 0.06064530710265865, + 0.06087180188334693, + 0.06080563123780106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6899636001729887E-4, + "scoreError" : 2.999043165725129E-5, + "scoreConfidence" : [ + 3.3900592836004755E-4, + 3.989867916745502E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5853221834311133E-4, + "50.0" : 3.683424835114287E-4, + "90.0" : 3.7987749721031164E-4, + "95.0" : 3.7987749721031164E-4, + "99.0" : 3.7987749721031164E-4, + "99.9" : 3.7987749721031164E-4, + "99.99" : 3.7987749721031164E-4, + "99.999" : 3.7987749721031164E-4, + "99.9999" : 3.7987749721031164E-4, + "100.0" : 3.7987749721031164E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6019203612571446E-4, + 3.5919739579344794E-4, + 3.5853221834311133E-4 + ], + [ + 3.76492930897143E-4, + 3.7968608173406495E-4, + 3.7987749721031164E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12482872015838864, + "scoreError" : 0.001651445056926422, + "scoreConfidence" : [ + 0.12317727510146222, + 0.12648016521531505 + ], + "scorePercentiles" : { + "0.0" : 0.1241152106563074, + "50.0" : 0.12483818133866487, + "90.0" : 0.1256644473542015, + "95.0" : 0.1256644473542015, + "99.0" : 0.1256644473542015, + "99.9" : 0.1256644473542015, + "99.99" : 0.1256644473542015, + "99.999" : 0.1256644473542015, + "99.9999" : 0.1256644473542015, + "100.0" : 0.1256644473542015 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1241152106563074, + 0.1243487886471027, + 0.12453708973959825 + ], + [ + 0.1256644473542015, + 0.1251675116153904, + 0.1251392729377315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012835642659831918, + "scoreError" : 3.2867915797878637E-4, + "scoreConfidence" : [ + 0.012506963501853131, + 0.013164321817810704 + ], + "scorePercentiles" : { + "0.0" : 0.012715382869291343, + "50.0" : 0.012837872290568953, + "90.0" : 0.012945627808350584, + "95.0" : 0.012945627808350584, + "99.0" : 0.012945627808350584, + "99.9" : 0.012945627808350584, + "99.99" : 0.012945627808350584, + "99.999" : 0.012945627808350584, + "99.9999" : 0.012945627808350584, + "100.0" : 0.012945627808350584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012735089942972995, + 0.01273614474443342, + 0.012715382869291343 + ], + [ + 0.012942010757238682, + 0.012939599836704485, + 0.012945627808350584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9470193593680118, + "scoreError" : 0.05623167063148867, + "scoreConfidence" : [ + 0.8907876887365231, + 1.0032510299995006 + ], + "scorePercentiles" : { + "0.0" : 0.928436868907251, + "50.0" : 0.9472297954683266, + "90.0" : 0.9655064388878162, + "95.0" : 0.9655064388878162, + "99.0" : 0.9655064388878162, + "99.9" : 0.9655064388878162, + "99.99" : 0.9655064388878162, + "99.999" : 0.9655064388878162, + "99.9999" : 0.9655064388878162, + "100.0" : 0.9655064388878162 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9652297871827044, + 0.9655064388878162, + 0.9652324689701767 + ], + [ + 0.928436868907251, + 0.929229803753949, + 0.928480788506174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010562617915542026, + "scoreError" : 4.035558633805271E-4, + "scoreConfidence" : [ + 0.010159062052161499, + 0.010966173778922552 + ], + "scorePercentiles" : { + "0.0" : 0.010423209153446874, + "50.0" : 0.010562619497566272, + "90.0" : 0.01070475660359585, + "95.0" : 0.01070475660359585, + "99.0" : 0.01070475660359585, + "99.9" : 0.01070475660359585, + "99.99" : 0.01070475660359585, + "99.999" : 0.01070475660359585, + "99.9999" : 0.01070475660359585, + "100.0" : 0.01070475660359585 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01068766440735207, + 0.010688998745150016, + 0.01070475660359585 + ], + [ + 0.010437574587780475, + 0.010433503995926867, + 0.010423209153446874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0633842805316323, + "scoreError" : 0.24945548927706168, + "scoreConfidence" : [ + 2.8139287912545705, + 3.312839769808694 + ], + "scorePercentiles" : { + "0.0" : 2.974207533293698, + "50.0" : 3.0691086387526685, + "90.0" : 3.1474903121460036, + "95.0" : 3.1474903121460036, + "99.0" : 3.1474903121460036, + "99.9" : 3.1474903121460036, + "99.99" : 3.1474903121460036, + "99.999" : 3.1474903121460036, + "99.9999" : 3.1474903121460036, + "100.0" : 3.1474903121460036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.974207533293698, + 2.9967986261234274, + 2.9765347601190477 + ], + [ + 3.1438558001257073, + 3.1474903121460036, + 3.1414186513819096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.754872169934478, + "scoreError" : 0.08748019619302023, + "scoreConfidence" : [ + 2.6673919737414575, + 2.842352366127498 + ], + "scorePercentiles" : { + "0.0" : 2.725468605449591, + "50.0" : 2.7536521554326057, + "90.0" : 2.7854637137287663, + "95.0" : 2.7854637137287663, + "99.0" : 2.7854637137287663, + "99.9" : 2.7854637137287663, + "99.99" : 2.7854637137287663, + "99.999" : 2.7854637137287663, + "99.9999" : 2.7854637137287663, + "100.0" : 2.7854637137287663 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7271460545404964, + 2.7267169506543074, + 2.725468605449591 + ], + [ + 2.7854637137287663, + 2.780158256324715, + 2.7842794389089898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17466322585009306, + "scoreError" : 0.0127288363512104, + "scoreConfidence" : [ + 0.16193438949888267, + 0.18739206220130344 + ], + "scorePercentiles" : { + "0.0" : 0.17004018263590145, + "50.0" : 0.1751129124102042, + "90.0" : 0.17888705058852994, + "95.0" : 0.17888705058852994, + "99.0" : 0.17888705058852994, + "99.9" : 0.17888705058852994, + "99.99" : 0.17888705058852994, + "99.999" : 0.17888705058852994, + "99.9999" : 0.17888705058852994, + "100.0" : 0.17888705058852994 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17004018263590145, + 0.17150322198593723, + 0.1700991955401337 + ], + [ + 0.17888705058852994, + 0.17872260283447117, + 0.1787271015155848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3299036247577283, + "scoreError" : 0.005064740456996642, + "scoreConfidence" : [ + 0.32483888430073166, + 0.3349683652147249 + ], + "scorePercentiles" : { + "0.0" : 0.32805842151363057, + "50.0" : 0.3298960810699583, + "90.0" : 0.3317419187593299, + "95.0" : 0.3317419187593299, + "99.0" : 0.3317419187593299, + "99.9" : 0.3317419187593299, + "99.99" : 0.3317419187593299, + "99.999" : 0.3317419187593299, + "99.9999" : 0.3317419187593299, + "100.0" : 0.3317419187593299 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3317419187593299, + 0.3315355167418114, + 0.3313575143141153 + ], + [ + 0.32843464782580134, + 0.32829372939168117, + 0.32805842151363057 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14567677778474744, + "scoreError" : 0.0028555890197772024, + "scoreConfidence" : [ + 0.14282118876497024, + 0.14853236680452464 + ], + "scorePercentiles" : { + "0.0" : 0.1445258718801035, + "50.0" : 0.14583122678947527, + "90.0" : 0.1466726741027559, + "95.0" : 0.1466726741027559, + "99.0" : 0.1466726741027559, + "99.9" : 0.1466726741027559, + "99.99" : 0.1466726741027559, + "99.999" : 0.1466726741027559, + "99.9999" : 0.1466726741027559, + "100.0" : 0.1466726741027559 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1466726741027559, + 0.14650473137608228, + 0.1465749810043092 + ], + [ + 0.14515772220286827, + 0.14462468614236543, + 0.1445258718801035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4061403932745003, + "scoreError" : 0.022506198892622103, + "scoreConfidence" : [ + 0.3836341943818782, + 0.4286465921671224 + ], + "scorePercentiles" : { + "0.0" : 0.39846834665497866, + "50.0" : 0.40510007442277274, + "90.0" : 0.4152746352726216, + "95.0" : 0.4152746352726216, + "99.0" : 0.4152746352726216, + "99.9" : 0.4152746352726216, + "99.99" : 0.4152746352726216, + "99.999" : 0.4152746352726216, + "99.9999" : 0.4152746352726216, + "100.0" : 0.4152746352726216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40001473088, + 0.39852163640710925, + 0.39846834665497866 + ], + [ + 0.4152746352726216, + 0.41437759246674677, + 0.41018541796554553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16364712026707054, + "scoreError" : 0.005740254663860758, + "scoreConfidence" : [ + 0.15790686560320977, + 0.1693873749309313 + ], + "scorePercentiles" : { + "0.0" : 0.160553607520149, + "50.0" : 0.1641300293340589, + "90.0" : 0.16646828047542156, + "95.0" : 0.16646828047542156, + "99.0" : 0.16646828047542156, + "99.9" : 0.16646828047542156, + "99.99" : 0.16646828047542156, + "99.999" : 0.16646828047542156, + "99.9999" : 0.16646828047542156, + "100.0" : 0.16646828047542156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1644634740486136, + 0.16213730089012113, + 0.160553607520149 + ], + [ + 0.16646828047542156, + 0.16405755544983266, + 0.1642025032182851 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047060121984730065, + "scoreError" : 6.134371993338326E-4, + "scoreConfidence" : [ + 0.04644668478539623, + 0.0476735591840639 + ], + "scorePercentiles" : { + "0.0" : 0.04686641361258998, + "50.0" : 0.0470081451281045, + "90.0" : 0.04743384679090991, + "95.0" : 0.04743384679090991, + "99.0" : 0.04743384679090991, + "99.9" : 0.04743384679090991, + "99.99" : 0.04743384679090991, + "99.999" : 0.04743384679090991, + "99.9999" : 0.04743384679090991, + "100.0" : 0.04743384679090991 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04692841372352108, + 0.046878788224264015, + 0.04686641361258998 + ], + [ + 0.04743384679090991, + 0.04708787653268792, + 0.0471653930244075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8584423.750146763, + "scoreError" : 304009.9565947829, + "scoreConfidence" : [ + 8280413.7935519805, + 8888433.706741545 + ], + "scorePercentiles" : { + "0.0" : 8474155.465707028, + "50.0" : 8577629.37506578, + "90.0" : 8696232.69826087, + "95.0" : 8696232.69826087, + "99.0" : 8696232.69826087, + "99.9" : 8696232.69826087, + "99.99" : 8696232.69826087, + "99.999" : 8696232.69826087, + "99.9999" : 8696232.69826087, + "100.0" : 8696232.69826087 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8655087.233564014, + 8696232.69826087, + 8695190.529105127 + ], + [ + 8500171.516567545, + 8485705.057675997, + 8474155.465707028 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-27T10:34:01Z-7a411bc59d837a810f4b50f7400d2d917f831eb6-jdk17.json b/performance-results/2025-08-27T10:34:01Z-7a411bc59d837a810f4b50f7400d2d917f831eb6-jdk17.json new file mode 100644 index 0000000000..b651a6ce91 --- /dev/null +++ b/performance-results/2025-08-27T10:34:01Z-7a411bc59d837a810f4b50f7400d2d917f831eb6-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3390337902614204, + "scoreError" : 0.040181787519266904, + "scoreConfidence" : [ + 3.2988520027421537, + 3.379215577780687 + ], + "scorePercentiles" : { + "0.0" : 3.334204575044753, + "50.0" : 3.337209725730821, + "90.0" : 3.347511134539287, + "95.0" : 3.347511134539287, + "99.0" : 3.347511134539287, + "99.9" : 3.347511134539287, + "99.99" : 3.347511134539287, + "99.999" : 3.347511134539287, + "99.9999" : 3.347511134539287, + "100.0" : 3.347511134539287 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3398701799671238, + 3.347511134539287 + ], + [ + 3.334204575044753, + 3.3345492714945184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.688411404540354, + "scoreError" : 0.02536036491619441, + "scoreConfidence" : [ + 1.6630510396241596, + 1.7137717694565484 + ], + "scorePercentiles" : { + "0.0" : 1.6835138363776097, + "50.0" : 1.6889813205194217, + "90.0" : 1.6921691407449626, + "95.0" : 1.6921691407449626, + "99.0" : 1.6921691407449626, + "99.9" : 1.6921691407449626, + "99.99" : 1.6921691407449626, + "99.999" : 1.6921691407449626, + "99.9999" : 1.6921691407449626, + "100.0" : 1.6921691407449626 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6909113186892744, + 1.6870513223495691 + ], + [ + 1.6835138363776097, + 1.6921691407449626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8482055391713899, + "scoreError" : 0.02816535450979951, + "scoreConfidence" : [ + 0.8200401846615903, + 0.8763708936811894 + ], + "scorePercentiles" : { + "0.0" : 0.8444548916733913, + "50.0" : 0.8469458364398222, + "90.0" : 0.8544755921325234, + "95.0" : 0.8544755921325234, + "99.0" : 0.8544755921325234, + "99.9" : 0.8544755921325234, + "99.99" : 0.8544755921325234, + "99.999" : 0.8544755921325234, + "99.9999" : 0.8544755921325234, + "100.0" : 0.8544755921325234 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8444548916733913, + 0.8544755921325234 + ], + [ + 0.8464778211497682, + 0.8474138517298763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.194405746452734, + "scoreError" : 0.2818172877667651, + "scoreConfidence" : [ + 15.912588458685969, + 16.476223034219498 + ], + "scorePercentiles" : { + "0.0" : 16.100474488657024, + "50.0" : 16.18084988153969, + "90.0" : 16.350086561065005, + "95.0" : 16.350086561065005, + "99.0" : 16.350086561065005, + "99.9" : 16.350086561065005, + "99.99" : 16.350086561065005, + "99.999" : 16.350086561065005, + "99.9999" : 16.350086561065005, + "100.0" : 16.350086561065005 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.100474488657024, + 16.350086561065005, + 16.233727606167633 + ], + [ + 16.103327473673886, + 16.250846192241127, + 16.127972156911746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2652.3469234215167, + "scoreError" : 63.521546694356736, + "scoreConfidence" : [ + 2588.82537672716, + 2715.8684701158736 + ], + "scorePercentiles" : { + "0.0" : 2617.452192645777, + "50.0" : 2654.7661322210365, + "90.0" : 2676.9207346853805, + "95.0" : 2676.9207346853805, + "99.0" : 2676.9207346853805, + "99.9" : 2676.9207346853805, + "99.99" : 2676.9207346853805, + "99.999" : 2676.9207346853805, + "99.9999" : 2676.9207346853805, + "100.0" : 2676.9207346853805 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2676.9207346853805, + 2666.3580722280626, + 2643.1741922140104 + ], + [ + 2670.0658321066194, + 2617.452192645777, + 2640.1105166492507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75772.2727941917, + "scoreError" : 3152.903105798766, + "scoreConfidence" : [ + 72619.36968839294, + 78925.17589999046 + ], + "scorePercentiles" : { + "0.0" : 74715.05052723303, + "50.0" : 75695.52533501977, + "90.0" : 77177.83602567468, + "95.0" : 77177.83602567468, + "99.0" : 77177.83602567468, + "99.9" : 77177.83602567468, + "99.99" : 77177.83602567468, + "99.999" : 77177.83602567468, + "99.9999" : 77177.83602567468, + "100.0" : 77177.83602567468 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76537.97803882413, + 76617.54137664581, + 77177.83602567468 + ], + [ + 74732.15816555708, + 74715.05052723303, + 74853.0726312154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 359.0986410632618, + "scoreError" : 9.08988419474538, + "scoreConfidence" : [ + 350.00875686851646, + 368.1885252580072 + ], + "scorePercentiles" : { + "0.0" : 352.95917391827123, + "50.0" : 360.17985089931534, + "90.0" : 362.12810424499315, + "95.0" : 362.12810424499315, + "99.0" : 362.12810424499315, + "99.9" : 362.12810424499315, + "99.99" : 362.12810424499315, + "99.999" : 362.12810424499315, + "99.9999" : 362.12810424499315, + "100.0" : 362.12810424499315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.4349063569992, + 358.3998039946362, + 352.95917391827123 + ], + [ + 362.12810424499315, + 360.74506242303966, + 359.9247954416315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.68400614479106, + "scoreError" : 2.235401740135939, + "scoreConfidence" : [ + 112.44860440465511, + 116.919407884927 + ], + "scorePercentiles" : { + "0.0" : 113.70201859305065, + "50.0" : 114.43293070775633, + "90.0" : 115.75131455724222, + "95.0" : 115.75131455724222, + "99.0" : 115.75131455724222, + "99.9" : 115.75131455724222, + "99.99" : 115.75131455724222, + "99.999" : 115.75131455724222, + "99.9999" : 115.75131455724222, + "100.0" : 115.75131455724222 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.24320303196976, + 113.70201859305065, + 114.33806236272213 + ], + [ + 114.52779905279053, + 115.75131455724222, + 115.54163927097105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06143616736855179, + "scoreError" : 0.0013484169245515257, + "scoreConfidence" : [ + 0.06008775044400027, + 0.06278458429310332 + ], + "scorePercentiles" : { + "0.0" : 0.060915389583650593, + "50.0" : 0.061371202135880626, + "90.0" : 0.06222678957095299, + "95.0" : 0.06222678957095299, + "99.0" : 0.06222678957095299, + "99.9" : 0.06222678957095299, + "99.99" : 0.06222678957095299, + "99.999" : 0.06222678957095299, + "99.9999" : 0.06222678957095299, + "100.0" : 0.06222678957095299 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06155168843095256, + 0.06222678957095299, + 0.06166323886072984 + ], + [ + 0.06106918192421605, + 0.061190715840808686, + 0.060915389583650593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.829091797873001E-4, + "scoreError" : 7.6282105637454275E-6, + "scoreConfidence" : [ + 3.7528096922355463E-4, + 3.9053739035104553E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7944976195889606E-4, + "50.0" : 3.828158352802029E-4, + "90.0" : 3.8650623778317694E-4, + "95.0" : 3.8650623778317694E-4, + "99.0" : 3.8650623778317694E-4, + "99.9" : 3.8650623778317694E-4, + "99.99" : 3.8650623778317694E-4, + "99.999" : 3.8650623778317694E-4, + "99.9999" : 3.8650623778317694E-4, + "100.0" : 3.8650623778317694E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.853830244194048E-4, + 3.826201136603075E-4, + 3.8301155690009835E-4 + ], + [ + 3.8650623778317694E-4, + 3.7944976195889606E-4, + 3.804843840019164E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1252938866061631, + "scoreError" : 0.0029961725246053445, + "scoreConfidence" : [ + 0.12229771408155776, + 0.12829005913076846 + ], + "scorePercentiles" : { + "0.0" : 0.1241225439075552, + "50.0" : 0.1252945209307919, + "90.0" : 0.12634637766743737, + "95.0" : 0.12634637766743737, + "99.0" : 0.12634637766743737, + "99.9" : 0.12634637766743737, + "99.99" : 0.12634637766743737, + "99.999" : 0.12634637766743737, + "99.9999" : 0.12634637766743737, + "100.0" : 0.12634637766743737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12634637766743737, + 0.12628474388796282, + 0.12615588273956704 + ], + [ + 0.12442061231243935, + 0.1241225439075552, + 0.12443315912201677 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01348185290798655, + "scoreError" : 7.087319451469934E-4, + "scoreConfidence" : [ + 0.012773120962839557, + 0.014190584853133542 + ], + "scorePercentiles" : { + "0.0" : 0.013228790655835076, + "50.0" : 0.013476799982965651, + "90.0" : 0.013740421682658023, + "95.0" : 0.013740421682658023, + "99.0" : 0.013740421682658023, + "99.9" : 0.013740421682658023, + "99.99" : 0.013740421682658023, + "99.999" : 0.013740421682658023, + "99.9999" : 0.013740421682658023, + "100.0" : 0.013740421682658023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013269341777375576, + 0.013257932122899474, + 0.013228790655835076 + ], + [ + 0.013684258188555728, + 0.013740421682658023, + 0.013710373020595405 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.000315453717323, + "scoreError" : 0.010281803079813455, + "scoreConfidence" : [ + 0.9900336506375097, + 1.0105972567971366 + ], + "scorePercentiles" : { + "0.0" : 0.9975146206862159, + "50.0" : 0.9991784542125127, + "90.0" : 1.0074632220207516, + "95.0" : 1.0074632220207516, + "99.0" : 1.0074632220207516, + "99.9" : 1.0074632220207516, + "99.99" : 1.0074632220207516, + "99.999" : 1.0074632220207516, + "99.9999" : 1.0074632220207516, + "100.0" : 1.0074632220207516 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.000598892046023, + 1.0074632220207516, + 0.997959079125923 + ], + [ + 0.9989970976925382, + 0.9975146206862159, + 0.9993598107324873 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010895967165661968, + "scoreError" : 4.569968083251853E-4, + "scoreConfidence" : [ + 0.010438970357336782, + 0.011352963973987154 + ], + "scorePercentiles" : { + "0.0" : 0.01068820548847092, + "50.0" : 0.010906926846812453, + "90.0" : 0.01106819204836239, + "95.0" : 0.01106819204836239, + "99.0" : 0.01106819204836239, + "99.9" : 0.01106819204836239, + "99.99" : 0.01106819204836239, + "99.999" : 0.01106819204836239, + "99.9999" : 0.01106819204836239, + "100.0" : 0.01106819204836239 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010802823625490433, + 0.010765006148785098, + 0.01068820548847092 + ], + [ + 0.011011030068134472, + 0.01104054561472849, + 0.01106819204836239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.21862355526878, + "scoreError" : 0.30278729613574984, + "scoreConfidence" : [ + 2.9158362591330302, + 3.5214108514045295 + ], + "scorePercentiles" : { + "0.0" : 3.1073994062111803, + "50.0" : 3.216452829987154, + "90.0" : 3.3269261669993346, + "95.0" : 3.3269261669993346, + "99.0" : 3.3269261669993346, + "99.9" : 3.3269261669993346, + "99.99" : 3.3269261669993346, + "99.999" : 3.3269261669993346, + "99.9999" : 3.3269261669993346, + "100.0" : 3.3269261669993346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.123449860712055, + 3.1309133028785983, + 3.1073994062111803 + ], + [ + 3.3210602377158036, + 3.3019923570957097, + 3.3269261669993346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.742389212740728, + "scoreError" : 0.03467718116297298, + "scoreConfidence" : [ + 2.707712031577755, + 2.777066393903701 + ], + "scorePercentiles" : { + "0.0" : 2.7278318311511183, + "50.0" : 2.7430890119044493, + "90.0" : 2.7558241328189585, + "95.0" : 2.7558241328189585, + "99.0" : 2.7558241328189585, + "99.9" : 2.7558241328189585, + "99.99" : 2.7558241328189585, + "99.999" : 2.7558241328189585, + "99.9999" : 2.7558241328189585, + "100.0" : 2.7558241328189585 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7278318311511183, + 2.728815456480218, + 2.7453446464452376 + ], + [ + 2.740833377363661, + 2.7558241328189585, + 2.755685832185175 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17781331834387862, + "scoreError" : 0.005071955394277396, + "scoreConfidence" : [ + 0.1727413629496012, + 0.18288527373815602 + ], + "scorePercentiles" : { + "0.0" : 0.17599284872056598, + "50.0" : 0.17782411953489902, + "90.0" : 0.1796192968118545, + "95.0" : 0.1796192968118545, + "99.0" : 0.1796192968118545, + "99.9" : 0.1796192968118545, + "99.99" : 0.1796192968118545, + "99.999" : 0.1796192968118545, + "99.9999" : 0.1796192968118545, + "100.0" : 0.1796192968118545 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17917406951785425, + 0.1796192968118545, + 0.17956140046325392 + ], + [ + 0.17605812499779933, + 0.17599284872056598, + 0.1764741695519438 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32363920910783217, + "scoreError" : 0.021666965543669203, + "scoreConfidence" : [ + 0.30197224356416297, + 0.3453061746515014 + ], + "scorePercentiles" : { + "0.0" : 0.3162001661607538, + "50.0" : 0.3233073381117014, + "90.0" : 0.33203949604887445, + "95.0" : 0.33203949604887445, + "99.0" : 0.33203949604887445, + "99.9" : 0.33203949604887445, + "99.99" : 0.33203949604887445, + "99.999" : 0.33203949604887445, + "99.9999" : 0.33203949604887445, + "100.0" : 0.33203949604887445 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31751860342911575, + 0.3162338099168327, + 0.3162001661607538 + ], + [ + 0.33203949604887445, + 0.3307471062971292, + 0.32909607279428704 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14634197941326763, + "scoreError" : 0.00121342474064956, + "scoreConfidence" : [ + 0.14512855467261807, + 0.14755540415391719 + ], + "scorePercentiles" : { + "0.0" : 0.14587210253081467, + "50.0" : 0.14626416095736489, + "90.0" : 0.14709430583216887, + "95.0" : 0.14709430583216887, + "99.0" : 0.14709430583216887, + "99.9" : 0.14709430583216887, + "99.99" : 0.14709430583216887, + "99.999" : 0.14709430583216887, + "99.9999" : 0.14709430583216887, + "100.0" : 0.14709430583216887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1464074375960764, + 0.14709430583216887, + 0.1464886214220842 + ], + [ + 0.14606852477980808, + 0.14587210253081467, + 0.1461208843186534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3985283491054757, + "scoreError" : 0.04191430842945069, + "scoreConfidence" : [ + 0.356614040676025, + 0.4404426575349264 + ], + "scorePercentiles" : { + "0.0" : 0.3839633240929161, + "50.0" : 0.3986570056303643, + "90.0" : 0.41242252857967665, + "95.0" : 0.41242252857967665, + "99.0" : 0.41242252857967665, + "99.9" : 0.41242252857967665, + "99.99" : 0.41242252857967665, + "99.999" : 0.41242252857967665, + "99.9999" : 0.41242252857967665, + "100.0" : 0.41242252857967665 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41242252857967665, + 0.4123810570309278, + 0.41168276295747397 + ], + [ + 0.3856312483032547, + 0.3850891736686049, + 0.3839633240929161 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15914319424519666, + "scoreError" : 0.008784679767922776, + "scoreConfidence" : [ + 0.15035851447727389, + 0.16792787401311943 + ], + "scorePercentiles" : { + "0.0" : 0.1562858656758404, + "50.0" : 0.15859133283704407, + "90.0" : 0.16314787811602716, + "95.0" : 0.16314787811602716, + "99.0" : 0.16314787811602716, + "99.9" : 0.16314787811602716, + "99.99" : 0.16314787811602716, + "99.999" : 0.16314787811602716, + "99.9999" : 0.16314787811602716, + "100.0" : 0.16314787811602716 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1562858656758404, + 0.15634907707821954, + 0.15648350065721528 + ], + [ + 0.16189367892700457, + 0.16314787811602716, + 0.1606991650168729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04739547088272386, + "scoreError" : 0.001423599091643021, + "scoreConfidence" : [ + 0.04597187179108084, + 0.048819069974366885 + ], + "scorePercentiles" : { + "0.0" : 0.046999444647061864, + "50.0" : 0.04729328237685835, + "90.0" : 0.04836250592189578, + "95.0" : 0.04836250592189578, + "99.0" : 0.04836250592189578, + "99.9" : 0.04836250592189578, + "99.99" : 0.04836250592189578, + "99.999" : 0.04836250592189578, + "99.9999" : 0.04836250592189578, + "100.0" : 0.04836250592189578 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04836250592189578, + 0.047416492332859175, + 0.04740518493007822 + ], + [ + 0.04718137982363848, + 0.04700781764080965, + 0.046999444647061864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8805242.38946337, + "scoreError" : 351319.37218387827, + "scoreConfidence" : [ + 8453923.017279493, + 9156561.761647249 + ], + "scorePercentiles" : { + "0.0" : 8675478.313963573, + "50.0" : 8795151.81116318, + "90.0" : 8972276.431390135, + "95.0" : 8972276.431390135, + "99.0" : 8972276.431390135, + "99.9" : 8972276.431390135, + "99.99" : 8972276.431390135, + "99.999" : 8972276.431390135, + "99.9999" : 8972276.431390135, + "100.0" : 8972276.431390135 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8675478.313963573, + 8687455.127604166, + 8726146.37609075 + ], + [ + 8972276.431390135, + 8864157.246235607, + 8905940.841495993 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-08-27T10:34:09Z-7a411bc59d837a810f4b50f7400d2d917f831eb6-jdk17.json b/performance-results/2025-08-27T10:34:09Z-7a411bc59d837a810f4b50f7400d2d917f831eb6-jdk17.json new file mode 100644 index 0000000000..2b5faedce7 --- /dev/null +++ b/performance-results/2025-08-27T10:34:09Z-7a411bc59d837a810f4b50f7400d2d917f831eb6-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.348418290898171, + "scoreError" : 0.05253155075779109, + "scoreConfidence" : [ + 3.29588674014038, + 3.400949841655962 + ], + "scorePercentiles" : { + "0.0" : 3.3391856798555417, + "50.0" : 3.3489754079306633, + "90.0" : 3.3565366678758144, + "95.0" : 3.3565366678758144, + "99.0" : 3.3565366678758144, + "99.9" : 3.3565366678758144, + "99.99" : 3.3565366678758144, + "99.999" : 3.3565366678758144, + "99.9999" : 3.3565366678758144, + "100.0" : 3.3565366678758144 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3391856798555417, + 3.3565366678758144 + ], + [ + 3.3441542354809783, + 3.3537965803803482 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6942500988369928, + "scoreError" : 0.025669367803365952, + "scoreConfidence" : [ + 1.668580731033627, + 1.7199194666403588 + ], + "scorePercentiles" : { + "0.0" : 1.689255634475055, + "50.0" : 1.694455855774605, + "90.0" : 1.6988330493237065, + "95.0" : 1.6988330493237065, + "99.0" : 1.6988330493237065, + "99.9" : 1.6988330493237065, + "99.99" : 1.6988330493237065, + "99.999" : 1.6988330493237065, + "99.9999" : 1.6988330493237065, + "100.0" : 1.6988330493237065 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.689255634475055, + 1.6988330493237065 + ], + [ + 1.69364770229273, + 1.6952640092564797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8509181955269773, + "scoreError" : 0.0214721002100609, + "scoreConfidence" : [ + 0.8294460953169165, + 0.8723902957370382 + ], + "scorePercentiles" : { + "0.0" : 0.8468266606404825, + "50.0" : 0.8514447504142617, + "90.0" : 0.8539566206389035, + "95.0" : 0.8539566206389035, + "99.0" : 0.8539566206389035, + "99.9" : 0.8539566206389035, + "99.99" : 0.8539566206389035, + "99.999" : 0.8539566206389035, + "99.9999" : 0.8539566206389035, + "100.0" : 0.8539566206389035 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8468266606404825, + 0.8539566206389035 + ], + [ + 0.8496286532151931, + 0.8532608476133302 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.369539201814092, + "scoreError" : 0.23133610122967188, + "scoreConfidence" : [ + 16.13820310058442, + 16.600875303043765 + ], + "scorePercentiles" : { + "0.0" : 16.280857239393875, + "50.0" : 16.372328474863437, + "90.0" : 16.45349925142323, + "95.0" : 16.45349925142323, + "99.0" : 16.45349925142323, + "99.9" : 16.45349925142323, + "99.99" : 16.45349925142323, + "99.999" : 16.45349925142323, + "99.9999" : 16.45349925142323, + "100.0" : 16.45349925142323 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.313823687874052, + 16.280857239393875, + 16.290838331667466 + ], + [ + 16.430833261852825, + 16.44738343867308, + 16.45349925142323 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2825.5631629737945, + "scoreError" : 121.72355468367753, + "scoreConfidence" : [ + 2703.839608290117, + 2947.286717657472 + ], + "scorePercentiles" : { + "0.0" : 2784.8685278532257, + "50.0" : 2825.2152736916923, + "90.0" : 2868.666270966133, + "95.0" : 2868.666270966133, + "99.0" : 2868.666270966133, + "99.9" : 2868.666270966133, + "99.99" : 2868.666270966133, + "99.999" : 2868.666270966133, + "99.9999" : 2868.666270966133, + "100.0" : 2868.666270966133 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2785.4005001348196, + 2784.8685278532257, + 2787.6948176679407 + ], + [ + 2868.666270966133, + 2862.735729715444, + 2864.013131505203 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 78198.26833764707, + "scoreError" : 570.3557785203005, + "scoreConfidence" : [ + 77627.91255912677, + 78768.62411616737 + ], + "scorePercentiles" : { + "0.0" : 77949.33222786066, + "50.0" : 78230.89929536122, + "90.0" : 78395.0397320315, + "95.0" : 78395.0397320315, + "99.0" : 78395.0397320315, + "99.9" : 78395.0397320315, + "99.99" : 78395.0397320315, + "99.999" : 78395.0397320315, + "99.9999" : 78395.0397320315, + "100.0" : 78395.0397320315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78122.0133580323, + 77991.43175977214, + 77949.33222786066 + ], + [ + 78339.78523269012, + 78392.00771549562, + 78395.0397320315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 364.89581742746736, + "scoreError" : 5.895845231828615, + "scoreConfidence" : [ + 358.99997219563875, + 370.791662659296 + ], + "scorePercentiles" : { + "0.0" : 362.3449245860287, + "50.0" : 364.7081739103934, + "90.0" : 367.79599133940513, + "95.0" : 367.79599133940513, + "99.0" : 367.79599133940513, + "99.9" : 367.79599133940513, + "99.99" : 367.79599133940513, + "99.999" : 367.79599133940513, + "99.9999" : 367.79599133940513, + "100.0" : 367.79599133940513 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.5217749802183, + 367.79599133940513, + 365.68561564660286 + ], + [ + 363.73073217418386, + 363.2958658383651, + 362.3449245860287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.55987161189427, + "scoreError" : 0.4917094009477342, + "scoreConfidence" : [ + 116.06816221094653, + 117.05158101284201 + ], + "scorePercentiles" : { + "0.0" : 116.30546997283993, + "50.0" : 116.5669907137955, + "90.0" : 116.76506695121296, + "95.0" : 116.76506695121296, + "99.0" : 116.76506695121296, + "99.9" : 116.76506695121296, + "99.99" : 116.76506695121296, + "99.999" : 116.76506695121296, + "99.9999" : 116.76506695121296, + "100.0" : 116.76506695121296 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.72885772999473, + 116.57905977783506, + 116.76506695121296 + ], + [ + 116.30546997283993, + 116.55492164975595, + 116.42585358972694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06124889993698327, + "scoreError" : 5.844637687865314E-4, + "scoreConfidence" : [ + 0.060664436168196736, + 0.061833363705769806 + ], + "scorePercentiles" : { + "0.0" : 0.06101960443362378, + "50.0" : 0.061251267190739506, + "90.0" : 0.06155508280293984, + "95.0" : 0.06155508280293984, + "99.0" : 0.06155508280293984, + "99.9" : 0.06155508280293984, + "99.99" : 0.06155508280293984, + "99.999" : 0.06155508280293984, + "99.9999" : 0.06155508280293984, + "100.0" : 0.06155508280293984 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06155508280293984, + 0.061367762063146265, + 0.06134222909791316 + ], + [ + 0.06101960443362378, + 0.06104841594071071, + 0.06116030528356584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.695052860167507E-4, + "scoreError" : 2.8828153343741848E-5, + "scoreConfidence" : [ + 3.4067713267300887E-4, + 3.9833343936049255E-4 + ], + "scorePercentiles" : { + "0.0" : 3.600580062172536E-4, + "50.0" : 3.6940418456582523E-4, + "90.0" : 3.793294056317001E-4, + "95.0" : 3.793294056317001E-4, + "99.0" : 3.793294056317001E-4, + "99.9" : 3.793294056317001E-4, + "99.99" : 3.793294056317001E-4, + "99.999" : 3.793294056317001E-4, + "99.9999" : 3.793294056317001E-4, + "100.0" : 3.793294056317001E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7877642548584333E-4, + 3.793294056317001E-4, + 3.7855490170173684E-4 + ], + [ + 3.600580062172536E-4, + 3.602534674299136E-4, + 3.600595096340566E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12475117517619351, + "scoreError" : 0.004132553722866594, + "scoreConfidence" : [ + 0.12061862145332691, + 0.1288837288990601 + ], + "scorePercentiles" : { + "0.0" : 0.12327218898462829, + "50.0" : 0.12470280680783176, + "90.0" : 0.12626789583201808, + "95.0" : 0.12626789583201808, + "99.0" : 0.12626789583201808, + "99.9" : 0.12626789583201808, + "99.99" : 0.12626789583201808, + "99.999" : 0.12626789583201808, + "99.9999" : 0.12626789583201808, + "100.0" : 0.12626789583201808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12591662153110048, + 0.12608798834980836, + 0.12626789583201808 + ], + [ + 0.12347336427504291, + 0.12348899208456304, + 0.12327218898462829 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012980520289130057, + "scoreError" : 7.166707650873676E-4, + "scoreConfidence" : [ + 0.01226384952404269, + 0.013697191054217425 + ], + "scorePercentiles" : { + "0.0" : 0.012740515293512106, + "50.0" : 0.012979152217609499, + "90.0" : 0.013219519620816241, + "95.0" : 0.013219519620816241, + "99.0" : 0.013219519620816241, + "99.9" : 0.013219519620816241, + "99.99" : 0.013219519620816241, + "99.999" : 0.013219519620816241, + "99.9999" : 0.013219519620816241, + "100.0" : 0.013219519620816241 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012745910946690883, + 0.012740515293512106, + 0.012755540019949387 + ], + [ + 0.013202764415269611, + 0.013219519620816241, + 0.013218871438542132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0833504032064865, + "scoreError" : 0.01079171688957099, + "scoreConfidence" : [ + 1.0725586863169154, + 1.0941421200960575 + ], + "scorePercentiles" : { + "0.0" : 1.0791623952735514, + "50.0" : 1.0832560130188453, + "90.0" : 1.0873067735377255, + "95.0" : 1.0873067735377255, + "99.0" : 1.0873067735377255, + "99.9" : 1.0873067735377255, + "99.99" : 1.0873067735377255, + "99.999" : 1.0873067735377255, + "99.9999" : 1.0873067735377255, + "100.0" : 1.0873067735377255 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0859065773072747, + 1.0872145567514677, + 1.0873067735377255 + ], + [ + 1.080605448730416, + 1.0799066676384839, + 1.0791623952735514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010156438679503086, + "scoreError" : 1.9386913795007283E-4, + "scoreConfidence" : [ + 0.009962569541553013, + 0.010350307817453159 + ], + "scorePercentiles" : { + "0.0" : 0.01008582134594166, + "50.0" : 0.01015683186500409, + "90.0" : 0.010232662852710767, + "95.0" : 0.010232662852710767, + "99.0" : 0.010232662852710767, + "99.9" : 0.010232662852710767, + "99.99" : 0.010232662852710767, + "99.999" : 0.010232662852710767, + "99.9999" : 0.010232662852710767, + "100.0" : 0.010232662852710767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010091656708465279, + 0.01008582134594166, + 0.010104413048047076 + ], + [ + 0.010209250681961107, + 0.010232662852710767, + 0.010214827439892625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.136358566834668, + "scoreError" : 0.04481716559088227, + "scoreConfidence" : [ + 3.0915414012437856, + 3.1811757324255505 + ], + "scorePercentiles" : { + "0.0" : 3.1127683721219666, + "50.0" : 3.136553746405208, + "90.0" : 3.161544818584071, + "95.0" : 3.161544818584071, + "99.0" : 3.161544818584071, + "99.9" : 3.161544818584071, + "99.99" : 3.161544818584071, + "99.999" : 3.161544818584071, + "99.9999" : 3.161544818584071, + "100.0" : 3.161544818584071 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1127683721219666, + 3.161544818584071, + 3.1295162922403006 + ], + [ + 3.141214425251256, + 3.133739317669173, + 3.139368175141243 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7876548104472807, + "scoreError" : 0.01760703535917173, + "scoreConfidence" : [ + 2.770047775088109, + 2.805261845806452 + ], + "scorePercentiles" : { + "0.0" : 2.7797256495275153, + "50.0" : 2.7892098733859614, + "90.0" : 2.7948733095836826, + "95.0" : 2.7948733095836826, + "99.0" : 2.7948733095836826, + "99.9" : 2.7948733095836826, + "99.99" : 2.7948733095836826, + "99.999" : 2.7948733095836826, + "99.9999" : 2.7948733095836826, + "100.0" : 2.7948733095836826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.791922918202122, + 2.780987238598443, + 2.7797256495275153 + ], + [ + 2.7948733095836826, + 2.7919145949190396, + 2.7865051518528836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17603034332747022, + "scoreError" : 0.005608234707395024, + "scoreConfidence" : [ + 0.1704221086200752, + 0.18163857803486524 + ], + "scorePercentiles" : { + "0.0" : 0.17435669115159969, + "50.0" : 0.175568425794656, + "90.0" : 0.17935473700163207, + "95.0" : 0.17935473700163207, + "99.0" : 0.17935473700163207, + "99.9" : 0.17935473700163207, + "99.99" : 0.17935473700163207, + "99.999" : 0.17935473700163207, + "99.9999" : 0.17935473700163207, + "100.0" : 0.17935473700163207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17935473700163207, + 0.17694948330531718, + 0.17660892635501474 + ], + [ + 0.17452792523429728, + 0.1743842969169602, + 0.17435669115159969 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32716971681590173, + "scoreError" : 0.008582695131976629, + "scoreConfidence" : [ + 0.3185870216839251, + 0.33575241194787836 + ], + "scorePercentiles" : { + "0.0" : 0.3241755609115664, + "50.0" : 0.327179740328899, + "90.0" : 0.330020016500561, + "95.0" : 0.330020016500561, + "99.0" : 0.330020016500561, + "99.9" : 0.330020016500561, + "99.99" : 0.330020016500561, + "99.999" : 0.330020016500561, + "99.9999" : 0.330020016500561, + "100.0" : 0.330020016500561 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33001869790772886, + 0.32984487861996176, + 0.330020016500561 + ], + [ + 0.3241755609115664, + 0.3244445449177562, + 0.3245146020378363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14447980008128167, + "scoreError" : 0.004958414840948835, + "scoreConfidence" : [ + 0.13952138524033283, + 0.1494382149222305 + ], + "scorePercentiles" : { + "0.0" : 0.14283653247346845, + "50.0" : 0.14445053683420261, + "90.0" : 0.14622189675542102, + "95.0" : 0.14622189675542102, + "99.0" : 0.14622189675542102, + "99.9" : 0.14622189675542102, + "99.99" : 0.14622189675542102, + "99.999" : 0.14622189675542102, + "99.9999" : 0.14622189675542102, + "100.0" : 0.14622189675542102 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14289249054069503, + 0.1428721645141012, + 0.14283653247346845 + ], + [ + 0.14604713307629397, + 0.14622189675542102, + 0.1460085831277102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.399813786270103, + "scoreError" : 0.018859887922225312, + "scoreConfidence" : [ + 0.3809538983478777, + 0.4186736741923283 + ], + "scorePercentiles" : { + "0.0" : 0.39353117306784197, + "50.0" : 0.3992481166749704, + "90.0" : 0.4074663979953551, + "95.0" : 0.4074663979953551, + "99.0" : 0.4074663979953551, + "99.9" : 0.4074663979953551, + "99.99" : 0.4074663979953551, + "99.999" : 0.4074663979953551, + "99.9999" : 0.4074663979953551, + "100.0" : 0.4074663979953551 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39398527594358207, + 0.39353117306784197, + 0.39369143466792644 + ], + [ + 0.4074663979953551, + 0.40569747853955374, + 0.40451095740635873 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1559648926174102, + "scoreError" : 0.005690136312152007, + "scoreConfidence" : [ + 0.1502747563052582, + 0.1616550289295622 + ], + "scorePercentiles" : { + "0.0" : 0.1538426477854868, + "50.0" : 0.15608610744359558, + "90.0" : 0.15803876313668475, + "95.0" : 0.15803876313668475, + "99.0" : 0.15803876313668475, + "99.9" : 0.15803876313668475, + "99.99" : 0.15803876313668475, + "99.999" : 0.15803876313668475, + "99.9999" : 0.15803876313668475, + "100.0" : 0.15803876313668475 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15803876313668475, + 0.15767512583762988, + 0.15769602843175906 + ], + [ + 0.15449708904956125, + 0.1540397014633395, + 0.1538426477854868 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0465429591171968, + "scoreError" : 0.001531919884485541, + "scoreConfidence" : [ + 0.04501103923271126, + 0.04807487900168234 + ], + "scorePercentiles" : { + "0.0" : 0.04593341110896765, + "50.0" : 0.046551542184661565, + "90.0" : 0.047208760687916615, + "95.0" : 0.047208760687916615, + "99.0" : 0.047208760687916615, + "99.9" : 0.047208760687916615, + "99.99" : 0.047208760687916615, + "99.999" : 0.047208760687916615, + "99.9999" : 0.047208760687916615, + "100.0" : 0.047208760687916615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04707706223931608, + 0.047208760687916615, + 0.04665846789470246 + ], + [ + 0.04644461647462067, + 0.045935436297657325, + 0.04593341110896765 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8707910.047450403, + "scoreError" : 198252.620393171, + "scoreConfidence" : [ + 8509657.42705723, + 8906162.667843575 + ], + "scorePercentiles" : { + "0.0" : 8636079.027633851, + "50.0" : 8707175.335918924, + "90.0" : 8779058.336842105, + "95.0" : 8779058.336842105, + "99.0" : 8779058.336842105, + "99.9" : 8779058.336842105, + "99.99" : 8779058.336842105, + "99.999" : 8779058.336842105, + "99.9999" : 8779058.336842105, + "100.0" : 8779058.336842105 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8779058.336842105, + 8771173.524101665, + 8766470.707274321 + ], + [ + 8647879.964563526, + 8636079.027633851, + 8646798.72428695 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-14T22:47:12Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json b/performance-results/2025-09-14T22:47:12Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json new file mode 100644 index 0000000000..fc5f49ca2a --- /dev/null +++ b/performance-results/2025-09-14T22:47:12Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3564519638051014, + "scoreError" : 0.026754669074205307, + "scoreConfidence" : [ + 3.329697294730896, + 3.3832066328793067 + ], + "scorePercentiles" : { + "0.0" : 3.3525929748533447, + "50.0" : 3.355450816008278, + "90.0" : 3.3623132483505045, + "95.0" : 3.3623132483505045, + "99.0" : 3.3623132483505045, + "99.9" : 3.3623132483505045, + "99.99" : 3.3623132483505045, + "99.999" : 3.3623132483505045, + "99.9999" : 3.3623132483505045, + "100.0" : 3.3623132483505045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.355154530462503, + 3.355747101554053 + ], + [ + 3.3525929748533447, + 3.3623132483505045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6955963461669277, + "scoreError" : 0.025399219674262195, + "scoreConfidence" : [ + 1.6701971264926654, + 1.72099556584119 + ], + "scorePercentiles" : { + "0.0" : 1.690949165339102, + "50.0" : 1.6954724679214577, + "90.0" : 1.7004912834856927, + "95.0" : 1.7004912834856927, + "99.0" : 1.7004912834856927, + "99.9" : 1.7004912834856927, + "99.99" : 1.7004912834856927, + "99.999" : 1.7004912834856927, + "99.9999" : 1.7004912834856927, + "100.0" : 1.7004912834856927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6948558437102028, + 1.690949165339102 + ], + [ + 1.6960890921327125, + 1.7004912834856927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8534863812995895, + "scoreError" : 0.018651240545545403, + "scoreConfidence" : [ + 0.8348351407540441, + 0.872137621845135 + ], + "scorePercentiles" : { + "0.0" : 0.8497672901323416, + "50.0" : 0.8536869071818649, + "90.0" : 0.8568044207022865, + "95.0" : 0.8568044207022865, + "99.0" : 0.8568044207022865, + "99.9" : 0.8568044207022865, + "99.99" : 0.8568044207022865, + "99.999" : 0.8568044207022865, + "99.9999" : 0.8568044207022865, + "100.0" : 0.8568044207022865 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8497672901323416, + 0.8568044207022865 + ], + [ + 0.853874975391003, + 0.8534988389727268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.46773550256071, + "scoreError" : 0.14535237876637508, + "scoreConfidence" : [ + 16.322383123794335, + 16.613087881327086 + ], + "scorePercentiles" : { + "0.0" : 16.39883446360539, + "50.0" : 16.478862692989225, + "90.0" : 16.51826378882782, + "95.0" : 16.51826378882782, + "99.0" : 16.51826378882782, + "99.9" : 16.51826378882782, + "99.99" : 16.51826378882782, + "99.999" : 16.51826378882782, + "99.9999" : 16.51826378882782, + "100.0" : 16.51826378882782 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.515523911638322, + 16.51826378882782, + 16.500452432161843 + ], + [ + 16.457272953816602, + 16.39883446360539, + 16.416065465314304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2806.031346554064, + "scoreError" : 363.0932911374896, + "scoreConfidence" : [ + 2442.9380554165746, + 3169.1246376915533 + ], + "scorePercentiles" : { + "0.0" : 2685.0981111336173, + "50.0" : 2805.641025032317, + "90.0" : 2927.370860223729, + "95.0" : 2927.370860223729, + "99.0" : 2927.370860223729, + "99.9" : 2927.370860223729, + "99.99" : 2927.370860223729, + "99.999" : 2927.370860223729, + "99.9999" : 2927.370860223729, + "100.0" : 2927.370860223729 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2927.370860223729, + 2919.9838872547216, + 2925.238681771159 + ], + [ + 2691.298162809912, + 2687.198376131245, + 2685.0981111336173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77408.15419943158, + "scoreError" : 4762.3102375177195, + "scoreConfidence" : [ + 72645.84396191385, + 82170.4644369493 + ], + "scorePercentiles" : { + "0.0" : 75849.39108190239, + "50.0" : 77387.68640395226, + "90.0" : 79025.16019962257, + "95.0" : 79025.16019962257, + "99.0" : 79025.16019962257, + "99.9" : 79025.16019962257, + "99.99" : 79025.16019962257, + "99.999" : 79025.16019962257, + "99.9999" : 79025.16019962257, + "100.0" : 79025.16019962257 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75852.58956360034, + 75872.83228754788, + 75849.39108190239 + ], + [ + 78902.54052035665, + 79025.16019962257, + 78946.41154355963 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 372.5555731049557, + "scoreError" : 17.819402263067463, + "scoreConfidence" : [ + 354.7361708418883, + 390.3749753680232 + ], + "scorePercentiles" : { + "0.0" : 366.6306288288166, + "50.0" : 372.29609995145137, + "90.0" : 378.75634030214576, + "95.0" : 378.75634030214576, + "99.0" : 378.75634030214576, + "99.9" : 378.75634030214576, + "99.99" : 378.75634030214576, + "99.999" : 378.75634030214576, + "99.9999" : 378.75634030214576, + "100.0" : 378.75634030214576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.6306288288166, + 366.7820251499717, + 366.8794815312364 + ], + [ + 377.7127183716663, + 378.5722444458973, + 378.75634030214576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.1161850867327, + "scoreError" : 4.845730380355185, + "scoreConfidence" : [ + 109.2704547063775, + 118.96191546708789 + ], + "scorePercentiles" : { + "0.0" : 112.37966686592478, + "50.0" : 114.01556114102594, + "90.0" : 115.91073453534281, + "95.0" : 115.91073453534281, + "99.0" : 115.91073453534281, + "99.9" : 115.91073453534281, + "99.99" : 115.91073453534281, + "99.999" : 115.91073453534281, + "99.9999" : 115.91073453534281, + "100.0" : 115.91073453534281 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.27330072085228, + 115.8461484776648, + 115.91073453534281 + ], + [ + 112.37966686592478, + 112.7578215611996, + 112.52943835941201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06051366981378616, + "scoreError" : 8.270260221785121E-4, + "scoreConfidence" : [ + 0.05968664379160765, + 0.06134069583596467 + ], + "scorePercentiles" : { + "0.0" : 0.06024168675489907, + "50.0" : 0.06048885793870822, + "90.0" : 0.060841332372052276, + "95.0" : 0.060841332372052276, + "99.0" : 0.060841332372052276, + "99.9" : 0.060841332372052276, + "99.99" : 0.060841332372052276, + "99.999" : 0.060841332372052276, + "99.9999" : 0.060841332372052276, + "100.0" : 0.060841332372052276 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060841332372052276, + 0.06072616348366803, + 0.06077492409932905 + ], + [ + 0.06024635977902017, + 0.060251552393748416, + 0.06024168675489907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.558336269404063E-4, + "scoreError" : 2.7422425788469708E-5, + "scoreConfidence" : [ + 3.2841120115193655E-4, + 3.83256052728876E-4 + ], + "scorePercentiles" : { + "0.0" : 3.4670834123205004E-4, + "50.0" : 3.558511579118602E-4, + "90.0" : 3.6515849616556114E-4, + "95.0" : 3.6515849616556114E-4, + "99.0" : 3.6515849616556114E-4, + "99.9" : 3.6515849616556114E-4, + "99.99" : 3.6515849616556114E-4, + "99.999" : 3.6515849616556114E-4, + "99.9999" : 3.6515849616556114E-4, + "100.0" : 3.6515849616556114E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6447403044540883E-4, + 3.6515849616556114E-4, + 3.646380212699439E-4 + ], + [ + 3.4670834123205004E-4, + 3.467945871511623E-4, + 3.472282853783116E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12331382652256352, + "scoreError" : 4.6688850598333167E-4, + "scoreConfidence" : [ + 0.12284693801658018, + 0.12378071502854686 + ], + "scorePercentiles" : { + "0.0" : 0.12304664331680427, + "50.0" : 0.12334823201558294, + "90.0" : 0.12351932606654974, + "95.0" : 0.12351932606654974, + "99.0" : 0.12351932606654974, + "99.9" : 0.12351932606654974, + "99.99" : 0.12351932606654974, + "99.999" : 0.12351932606654974, + "99.9999" : 0.12351932606654974, + "100.0" : 0.12351932606654974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12351932606654974, + 0.123416112220467, + 0.12333853212299116 + ], + [ + 0.12335793190817472, + 0.12320441350039424, + 0.12304664331680427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01298259531269849, + "scoreError" : 2.4179243872811946E-5, + "scoreConfidence" : [ + 0.012958416068825678, + 0.013006774556571302 + ], + "scorePercentiles" : { + "0.0" : 0.012972689343071374, + "50.0" : 0.012981420286749045, + "90.0" : 0.012994162917464715, + "95.0" : 0.012994162917464715, + "99.0" : 0.012994162917464715, + "99.9" : 0.012994162917464715, + "99.99" : 0.012994162917464715, + "99.999" : 0.012994162917464715, + "99.9999" : 0.012994162917464715, + "100.0" : 0.012994162917464715 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012989887184496538, + 0.012994162917464715, + 0.012985907259802929 + ], + [ + 0.012975991857660222, + 0.01297693331369516, + 0.012972689343071374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0886759140037454, + "scoreError" : 0.2358416273907459, + "scoreConfidence" : [ + 0.8528342866129995, + 1.3245175413944914 + ], + "scorePercentiles" : { + "0.0" : 1.0112115004044488, + "50.0" : 1.088446113614558, + "90.0" : 1.1669702096849475, + "95.0" : 1.1669702096849475, + "99.0" : 1.1669702096849475, + "99.9" : 1.1669702096849475, + "99.99" : 1.1669702096849475, + "99.999" : 1.1669702096849475, + "99.9999" : 1.1669702096849475, + "100.0" : 1.1669702096849475 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0123010509160846, + 1.012202311437247, + 1.0112115004044488 + ], + [ + 1.1669702096849475, + 1.1645911763130312, + 1.1647792352667132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010936801716436862, + "scoreError" : 8.881047436962124E-4, + "scoreConfidence" : [ + 0.01004869697274065, + 0.011824906460133075 + ], + "scorePercentiles" : { + "0.0" : 0.010645533288765215, + "50.0" : 0.010933873830918435, + "90.0" : 0.011231595174130247, + "95.0" : 0.011231595174130247, + "99.0" : 0.011231595174130247, + "99.9" : 0.011231595174130247, + "99.99" : 0.011231595174130247, + "99.999" : 0.011231595174130247, + "99.9999" : 0.011231595174130247, + "100.0" : 0.011231595174130247 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01121760498361156, + 0.011228439646538366, + 0.011231595174130247 + ], + [ + 0.010645533288765215, + 0.010650142678225309, + 0.010647494527350471 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.042485461788847, + "scoreError" : 0.3027566329682602, + "scoreConfidence" : [ + 2.7397288288205868, + 3.345242094757107 + ], + "scorePercentiles" : { + "0.0" : 2.9359650181924883, + "50.0" : 3.04551420930689, + "90.0" : 3.145036716981132, + "95.0" : 3.145036716981132, + "99.0" : 3.145036716981132, + "99.9" : 3.145036716981132, + "99.99" : 3.145036716981132, + "99.999" : 3.145036716981132, + "99.9999" : 3.145036716981132, + "100.0" : 3.145036716981132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.145036716981132, + 3.139732849435383, + 3.1379178513174404 + ], + [ + 2.9431497675103, + 2.95311056729634, + 2.9359650181924883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6642307488982455, + "scoreError" : 0.2038368917526145, + "scoreConfidence" : [ + 2.460393857145631, + 2.86806764065086 + ], + "scorePercentiles" : { + "0.0" : 2.5970301004933782, + "50.0" : 2.663088486413512, + "90.0" : 2.7332158267286144, + "95.0" : 2.7332158267286144, + "99.0" : 2.7332158267286144, + "99.9" : 2.7332158267286144, + "99.99" : 2.7332158267286144, + "99.999" : 2.7332158267286144, + "99.9999" : 2.7332158267286144, + "100.0" : 2.7332158267286144 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7332158267286144, + 2.731629252390057, + 2.7268218857688113 + ], + [ + 2.5970301004933782, + 2.5993550870582123, + 2.5973323409504023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17667665791073298, + "scoreError" : 0.002204979660085408, + "scoreConfidence" : [ + 0.17447167825064758, + 0.17888163757081837 + ], + "scorePercentiles" : { + "0.0" : 0.17594032069529725, + "50.0" : 0.17657843697311018, + "90.0" : 0.1775555122154753, + "95.0" : 0.1775555122154753, + "99.0" : 0.1775555122154753, + "99.9" : 0.1775555122154753, + "99.99" : 0.1775555122154753, + "99.999" : 0.1775555122154753, + "99.9999" : 0.1775555122154753, + "100.0" : 0.1775555122154753 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1775555122154753, + 0.177433827430802, + 0.17716569377269908 + ], + [ + 0.17594032069529725, + 0.17599118017352128, + 0.1759734131766031 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33612278077529556, + "scoreError" : 0.05777838840566512, + "scoreConfidence" : [ + 0.27834439236963043, + 0.3939011691809607 + ], + "scorePercentiles" : { + "0.0" : 0.3171062451484018, + "50.0" : 0.33615472011963227, + "90.0" : 0.3552267063796533, + "95.0" : 0.3552267063796533, + "99.0" : 0.3552267063796533, + "99.9" : 0.3552267063796533, + "99.99" : 0.3552267063796533, + "99.999" : 0.3552267063796533, + "99.9999" : 0.3552267063796533, + "100.0" : 0.3552267063796533 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3548310689067878, + 0.3547345274733071, + 0.3552267063796533 + ], + [ + 0.3171062451484018, + 0.3172632239776657, + 0.31757491276595745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.146627079100471, + "scoreError" : 0.004652605002919793, + "scoreConfidence" : [ + 0.1419744740975512, + 0.15127968410339077 + ], + "scorePercentiles" : { + "0.0" : 0.14507447051399225, + "50.0" : 0.14664949006854702, + "90.0" : 0.14815177062222223, + "95.0" : 0.14815177062222223, + "99.0" : 0.14815177062222223, + "99.9" : 0.14815177062222223, + "99.99" : 0.14815177062222223, + "99.999" : 0.14815177062222223, + "99.9999" : 0.14815177062222223, + "100.0" : 0.14815177062222223 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14815177062222223, + 0.14813567558919816, + 0.14813688258995364 + ], + [ + 0.14510037073956383, + 0.1451633045478959, + 0.14507447051399225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38661649948233273, + "scoreError" : 0.00959993198780478, + "scoreConfidence" : [ + 0.37701656749452794, + 0.3962164314701375 + ], + "scorePercentiles" : { + "0.0" : 0.38158553096500936, + "50.0" : 0.3871190149001623, + "90.0" : 0.3912356432846915, + "95.0" : 0.3912356432846915, + "99.0" : 0.3912356432846915, + "99.9" : 0.3912356432846915, + "99.99" : 0.3912356432846915, + "99.999" : 0.3912356432846915, + "99.9999" : 0.3912356432846915, + "100.0" : 0.3912356432846915 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3912356432846915, + 0.3884361934356186, + 0.3881945970653313 + ], + [ + 0.38604343273499325, + 0.38420359940835225, + 0.38158553096500936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15931797368969283, + "scoreError" : 0.005880832666933082, + "scoreConfidence" : [ + 0.15343714102275974, + 0.16519880635662593 + ], + "scorePercentiles" : { + "0.0" : 0.1567474975547823, + "50.0" : 0.1600643076444174, + "90.0" : 0.1611456797138115, + "95.0" : 0.1611456797138115, + "99.0" : 0.1611456797138115, + "99.9" : 0.1611456797138115, + "99.99" : 0.1611456797138115, + "99.999" : 0.1611456797138115, + "99.9999" : 0.1611456797138115, + "100.0" : 0.1611456797138115 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1610017718352036, + 0.1611456797138115, + 0.1610513056383167 + ], + [ + 0.1591268434536312, + 0.1567474975547823, + 0.15683474394241173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046565999959954085, + "scoreError" : 0.0021620359483256217, + "scoreConfidence" : [ + 0.044403964011628466, + 0.048728035908279704 + ], + "scorePercentiles" : { + "0.0" : 0.04583468100962971, + "50.0" : 0.04657359427018569, + "90.0" : 0.047279804116985166, + "95.0" : 0.047279804116985166, + "99.0" : 0.047279804116985166, + "99.9" : 0.047279804116985166, + "99.99" : 0.047279804116985166, + "99.999" : 0.047279804116985166, + "99.9999" : 0.047279804116985166, + "100.0" : 0.047279804116985166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045861781251003216, + 0.04583468100962971, + 0.04589071867542861 + ], + [ + 0.04725646986494277, + 0.047279804116985166, + 0.04727254484173505 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8696717.03819724, + "scoreError" : 257580.01769427664, + "scoreConfidence" : [ + 8439137.020502964, + 8954297.055891516 + ], + "scorePercentiles" : { + "0.0" : 8600041.92261393, + "50.0" : 8703776.798315138, + "90.0" : 8809895.697183099, + "95.0" : 8809895.697183099, + "99.0" : 8809895.697183099, + "99.9" : 8809895.697183099, + "99.99" : 8809895.697183099, + "99.999" : 8809895.697183099, + "99.9999" : 8809895.697183099, + "100.0" : 8809895.697183099 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8646530.043215211, + 8600041.92261393, + 8601066.40154772 + ], + [ + 8761023.553415062, + 8809895.697183099, + 8761744.611208407 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-14T22:47:23Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json b/performance-results/2025-09-14T22:47:23Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json new file mode 100644 index 0000000000..b8ba221844 --- /dev/null +++ b/performance-results/2025-09-14T22:47:23Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3474405498837054, + "scoreError" : 0.02049456819412791, + "scoreConfidence" : [ + 3.3269459816895774, + 3.3679351180778334 + ], + "scorePercentiles" : { + "0.0" : 3.344873934123505, + "50.0" : 3.346410113714337, + "90.0" : 3.352068037982643, + "95.0" : 3.352068037982643, + "99.0" : 3.352068037982643, + "99.9" : 3.352068037982643, + "99.99" : 3.352068037982643, + "99.999" : 3.352068037982643, + "99.9999" : 3.352068037982643, + "100.0" : 3.352068037982643 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3465706808657867, + 3.352068037982643 + ], + [ + 3.344873934123505, + 3.3462495465628876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6867427603288274, + "scoreError" : 0.07816500882220505, + "scoreConfidence" : [ + 1.6085777515066224, + 1.7649077691510324 + ], + "scorePercentiles" : { + "0.0" : 1.6746762052419504, + "50.0" : 1.6874863994086438, + "90.0" : 1.6973220372560718, + "95.0" : 1.6973220372560718, + "99.0" : 1.6973220372560718, + "99.9" : 1.6973220372560718, + "99.99" : 1.6973220372560718, + "99.999" : 1.6973220372560718, + "99.9999" : 1.6973220372560718, + "100.0" : 1.6973220372560718 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.696981651536924, + 1.6973220372560718 + ], + [ + 1.6746762052419504, + 1.6779911472803635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8479622938605308, + "scoreError" : 0.03733457450798919, + "scoreConfidence" : [ + 0.8106277193525416, + 0.88529686836852 + ], + "scorePercentiles" : { + "0.0" : 0.8409735553462205, + "50.0" : 0.8485556848345444, + "90.0" : 0.853764250426814, + "95.0" : 0.853764250426814, + "99.0" : 0.853764250426814, + "99.9" : 0.853764250426814, + "99.99" : 0.853764250426814, + "99.999" : 0.853764250426814, + "99.9999" : 0.853764250426814, + "100.0" : 0.853764250426814 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8409735553462205, + 0.845646093771146 + ], + [ + 0.8514652758979429, + 0.853764250426814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.385918953391172, + "scoreError" : 0.6768746481881669, + "scoreConfidence" : [ + 15.709044305203005, + 17.06279360157934 + ], + "scorePercentiles" : { + "0.0" : 16.13967507103234, + "50.0" : 16.387768183131147, + "90.0" : 16.61649880410918, + "95.0" : 16.61649880410918, + "99.0" : 16.61649880410918, + "99.9" : 16.61649880410918, + "99.99" : 16.61649880410918, + "99.999" : 16.61649880410918, + "99.9999" : 16.61649880410918, + "100.0" : 16.61649880410918 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.61649880410918, + 16.59003216554371, + 16.610555105602913 + ], + [ + 16.17324837334032, + 16.185504200718583, + 16.13967507103234 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2649.3399046042123, + "scoreError" : 191.6605371467069, + "scoreConfidence" : [ + 2457.6793674575056, + 2841.000441750919 + ], + "scorePercentiles" : { + "0.0" : 2583.5510890864216, + "50.0" : 2649.1502811413757, + "90.0" : 2714.839753466136, + "95.0" : 2714.839753466136, + "99.0" : 2714.839753466136, + "99.9" : 2714.839753466136, + "99.99" : 2714.839753466136, + "99.999" : 2714.839753466136, + "99.9999" : 2714.839753466136, + "100.0" : 2714.839753466136 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2709.355424486396, + 2710.8672672112907, + 2714.839753466136 + ], + [ + 2588.9451377963555, + 2588.480755578674, + 2583.5510890864216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77542.9436330187, + "scoreError" : 1265.427147537831, + "scoreConfidence" : [ + 76277.51648548087, + 78808.37078055654 + ], + "scorePercentiles" : { + "0.0" : 77116.80534582536, + "50.0" : 77550.68546675013, + "90.0" : 77971.96881691243, + "95.0" : 77971.96881691243, + "99.0" : 77971.96881691243, + "99.9" : 77971.96881691243, + "99.99" : 77971.96881691243, + "99.999" : 77971.96881691243, + "99.9999" : 77971.96881691243, + "100.0" : 77971.96881691243 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77948.97273313592, + 77942.75864577311, + 77971.96881691243 + ], + [ + 77118.54396873823, + 77158.61228772716, + 77116.80534582536 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.15469345250966, + "scoreError" : 9.151755033279596, + "scoreConfidence" : [ + 348.0029384192301, + 366.30644848578925 + ], + "scorePercentiles" : { + "0.0" : 352.9391611238716, + "50.0" : 357.29837892405817, + "90.0" : 360.4220029485363, + "95.0" : 360.4220029485363, + "99.0" : 360.4220029485363, + "99.9" : 360.4220029485363, + "99.99" : 360.4220029485363, + "99.999" : 360.4220029485363, + "99.9999" : 360.4220029485363, + "100.0" : 360.4220029485363 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 352.9391611238716, + 354.60399437272196, + 355.3048751140479 + ], + [ + 359.2918827340685, + 360.4220029485363, + 360.36624442181176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.10123056031051, + "scoreError" : 3.3496344250937127, + "scoreConfidence" : [ + 111.7515961352168, + 118.45086498540422 + ], + "scorePercentiles" : { + "0.0" : 113.70208446075848, + "50.0" : 115.15709792215264, + "90.0" : 116.20581673107682, + "95.0" : 116.20581673107682, + "99.0" : 116.20581673107682, + "99.9" : 116.20581673107682, + "99.99" : 116.20581673107682, + "99.999" : 116.20581673107682, + "99.9999" : 116.20581673107682, + "100.0" : 116.20581673107682 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.70208446075848, + 114.18555715987274, + 114.18124925800997 + ], + [ + 116.20403706771256, + 116.20581673107682, + 116.12863868443254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061739402860730715, + "scoreError" : 0.0032912650238799547, + "scoreConfidence" : [ + 0.05844813783685076, + 0.06503066788461066 + ], + "scorePercentiles" : { + "0.0" : 0.0606476519740433, + "50.0" : 0.06174847929605563, + "90.0" : 0.06281967501319195, + "95.0" : 0.06281967501319195, + "99.0" : 0.06281967501319195, + "99.9" : 0.06281967501319195, + "99.99" : 0.06281967501319195, + "99.999" : 0.06281967501319195, + "99.9999" : 0.06281967501319195, + "100.0" : 0.06281967501319195 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060694221876270764, + 0.0606476519740433, + 0.060662331964403786 + ], + [ + 0.06281967501319195, + 0.06280273671584051, + 0.06280979962063399 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6427847345060207E-4, + "scoreError" : 1.920260108690281E-6, + "scoreConfidence" : [ + 3.623582133419118E-4, + 3.6619873355929234E-4 + ], + "scorePercentiles" : { + "0.0" : 3.636424398989318E-4, + "50.0" : 3.642023151705085E-4, + "90.0" : 3.6515286245821746E-4, + "95.0" : 3.6515286245821746E-4, + "99.0" : 3.6515286245821746E-4, + "99.9" : 3.6515286245821746E-4, + "99.99" : 3.6515286245821746E-4, + "99.999" : 3.6515286245821746E-4, + "99.9999" : 3.6515286245821746E-4, + "100.0" : 3.6515286245821746E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.636424398989318E-4, + 3.63656622975963E-4, + 3.637072629142328E-4 + ], + [ + 3.648142850294833E-4, + 3.6515286245821746E-4, + 3.6469736742678424E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12556165314184428, + "scoreError" : 0.004791183118854291, + "scoreConfidence" : [ + 0.12077047002298999, + 0.13035283626069857 + ], + "scorePercentiles" : { + "0.0" : 0.12398997256146703, + "50.0" : 0.1253580892943923, + "90.0" : 0.12736351574818192, + "95.0" : 0.12736351574818192, + "99.0" : 0.12736351574818192, + "99.9" : 0.12736351574818192, + "99.99" : 0.12736351574818192, + "99.999" : 0.12736351574818192, + "99.9999" : 0.12736351574818192, + "100.0" : 0.12736351574818192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12736351574818192, + 0.12729717427887674, + 0.1266533319148397 + ], + [ + 0.12400307767375535, + 0.12406284667394486, + 0.12398997256146703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013124672483431956, + "scoreError" : 8.229442897217138E-4, + "scoreConfidence" : [ + 0.012301728193710242, + 0.01394761677315367 + ], + "scorePercentiles" : { + "0.0" : 0.012843957393329197, + "50.0" : 0.013127712471558133, + "90.0" : 0.01339710950258494, + "95.0" : 0.01339710950258494, + "99.0" : 0.01339710950258494, + "99.9" : 0.01339710950258494, + "99.99" : 0.01339710950258494, + "99.999" : 0.01339710950258494, + "99.9999" : 0.01339710950258494, + "100.0" : 0.01339710950258494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013389179756641612, + 0.013391147419630866, + 0.01339710950258494 + ], + [ + 0.012866245186474654, + 0.012860395641930472, + 0.012843957393329197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.1127654524199293, + "scoreError" : 0.30953560956906634, + "scoreConfidence" : [ + 0.803229842850863, + 1.4223010619889958 + ], + "scorePercentiles" : { + "0.0" : 1.0117412898330804, + "50.0" : 1.1126156027974217, + "90.0" : 1.214143011776132, + "95.0" : 1.214143011776132, + "99.0" : 1.214143011776132, + "99.9" : 1.214143011776132, + "99.99" : 1.214143011776132, + "99.999" : 1.214143011776132, + "99.9999" : 1.214143011776132, + "100.0" : 1.214143011776132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0121661803643724, + 1.0117412898330804, + 1.0120933285092601 + ], + [ + 1.2130650252304707, + 1.2133838788062599, + 1.214143011776132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010382426583996572, + "scoreError" : 2.747821771391445E-4, + "scoreConfidence" : [ + 0.010107644406857427, + 0.010657208761135717 + ], + "scorePercentiles" : { + "0.0" : 0.010289354760645577, + "50.0" : 0.010382759616797806, + "90.0" : 0.010476854994269334, + "95.0" : 0.010476854994269334, + "99.0" : 0.010476854994269334, + "99.9" : 0.010476854994269334, + "99.99" : 0.010476854994269334, + "99.999" : 0.010476854994269334, + "99.9999" : 0.010476854994269334, + "100.0" : 0.010476854994269334 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010289354760645577, + 0.010293379446355527, + 0.01029636457087082 + ], + [ + 0.010469451069113386, + 0.010469154662724793, + 0.010476854994269334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1575941438198583, + "scoreError" : 0.4756481335322761, + "scoreConfidence" : [ + 2.6819460102875823, + 3.6332422773521342 + ], + "scorePercentiles" : { + "0.0" : 2.992346564931179, + "50.0" : 3.1607512185539957, + "90.0" : 3.3186850484406105, + "95.0" : 3.3186850484406105, + "99.0" : 3.3186850484406105, + "99.9" : 3.3186850484406105, + "99.99" : 3.3186850484406105, + "99.999" : 3.3186850484406105, + "99.9999" : 3.3186850484406105, + "100.0" : 3.3186850484406105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3054900118968935, + 3.3186850484406105, + 3.3125249894039737 + ], + [ + 2.992346564931179, + 3.016012425211098, + 3.0005058230353927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8762953283435664, + "scoreError" : 0.19598277351224572, + "scoreConfidence" : [ + 2.6803125548313207, + 3.072278101855812 + ], + "scorePercentiles" : { + "0.0" : 2.809718504494382, + "50.0" : 2.875434964702202, + "90.0" : 2.949641361545267, + "95.0" : 2.949641361545267, + "99.0" : 2.949641361545267, + "99.9" : 2.949641361545267, + "99.99" : 2.949641361545267, + "99.999" : 2.949641361545267, + "99.9999" : 2.949641361545267, + "100.0" : 2.949641361545267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.932312726473175, + 2.937513165345081, + 2.949641361545267 + ], + [ + 2.809718504494382, + 2.8100290092722675, + 2.818557202931229 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17797104068336722, + "scoreError" : 4.791070612877759E-4, + "scoreConfidence" : [ + 0.17749193362207943, + 0.178450147744655 + ], + "scorePercentiles" : { + "0.0" : 0.1776892362159953, + "50.0" : 0.17799680716173055, + "90.0" : 0.17818693036598837, + "95.0" : 0.17818693036598837, + "99.0" : 0.17818693036598837, + "99.9" : 0.17818693036598837, + "99.99" : 0.17818693036598837, + "99.999" : 0.17818693036598837, + "99.9999" : 0.17818693036598837, + "100.0" : 0.17818693036598837 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17806755279558403, + 0.17803248537501556, + 0.17818693036598837 + ], + [ + 0.17796112894844554, + 0.1776892362159953, + 0.17788891039917462 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3313144358611144, + "scoreError" : 0.02853629542341832, + "scoreConfidence" : [ + 0.3027781404376961, + 0.35985073128453277 + ], + "scorePercentiles" : { + "0.0" : 0.32185817183778564, + "50.0" : 0.3313736231112013, + "90.0" : 0.3407528401594657, + "95.0" : 0.3407528401594657, + "99.0" : 0.3407528401594657, + "99.9" : 0.3407528401594657, + "99.99" : 0.3407528401594657, + "99.999" : 0.3407528401594657, + "99.9999" : 0.3407528401594657, + "100.0" : 0.3407528401594657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3219447537183697, + 0.32185817183778564, + 0.3222750681276184 + ], + [ + 0.3407528401594657, + 0.3405836032286629, + 0.34047217809478414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14817834830922508, + "scoreError" : 0.008806819621003915, + "scoreConfidence" : [ + 0.13937152868822117, + 0.15698516793022899 + ], + "scorePercentiles" : { + "0.0" : 0.14529086439052738, + "50.0" : 0.14814149600295776, + "90.0" : 0.15119116332794097, + "95.0" : 0.15119116332794097, + "99.0" : 0.15119116332794097, + "99.9" : 0.15119116332794097, + "99.99" : 0.15119116332794097, + "99.999" : 0.15119116332794097, + "99.9999" : 0.15119116332794097, + "100.0" : 0.15119116332794097 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14531154353385645, + 0.14529086439052738, + 0.1453347535606325 + ], + [ + 0.15094823844528302, + 0.15119116332794097, + 0.15099352659711002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40384706217063404, + "scoreError" : 0.021240362330965427, + "scoreConfidence" : [ + 0.3826066998396686, + 0.4250874245015995 + ], + "scorePercentiles" : { + "0.0" : 0.3946689730049728, + "50.0" : 0.40364517733120114, + "90.0" : 0.4122678249165189, + "95.0" : 0.4122678249165189, + "99.0" : 0.4122678249165189, + "99.9" : 0.4122678249165189, + "99.99" : 0.4122678249165189, + "99.999" : 0.4122678249165189, + "99.9999" : 0.4122678249165189, + "100.0" : 0.4122678249165189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4122678249165189, + 0.4089156879293425, + 0.4105679637886439 + ], + [ + 0.3982872566512665, + 0.39837466673305977, + 0.3946689730049728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15524410337993863, + "scoreError" : 0.004295075235315681, + "scoreConfidence" : [ + 0.15094902814462294, + 0.15953917861525432 + ], + "scorePercentiles" : { + "0.0" : 0.15423349595915975, + "50.0" : 0.1547455508157778, + "90.0" : 0.1582567995727172, + "95.0" : 0.1582567995727172, + "99.0" : 0.1582567995727172, + "99.9" : 0.1582567995727172, + "99.99" : 0.1582567995727172, + "99.999" : 0.1582567995727172, + "99.9999" : 0.1582567995727172, + "100.0" : 0.1582567995727172 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15447859885687804, + 0.15423349595915975, + 0.1542478030447927 + ], + [ + 0.1582567995727172, + 0.1552354200714064, + 0.15501250277467757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04733081693723046, + "scoreError" : 5.555131646058355E-4, + "scoreConfidence" : [ + 0.04677530377262462, + 0.047886330101836294 + ], + "scorePercentiles" : { + "0.0" : 0.04719527595580705, + "50.0" : 0.047264985724402866, + "90.0" : 0.04772605865929786, + "95.0" : 0.04772605865929786, + "99.0" : 0.04772605865929786, + "99.9" : 0.04772605865929786, + "99.99" : 0.04772605865929786, + "99.999" : 0.04772605865929786, + "99.9999" : 0.04772605865929786, + "100.0" : 0.04772605865929786 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04731551202271114, + 0.047261610640339145, + 0.04726836080846659 + ], + [ + 0.04772605865929786, + 0.04719527595580705, + 0.04721808353676099 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8776000.174534973, + "scoreError" : 311197.49216569605, + "scoreConfidence" : [ + 8464802.682369277, + 9087197.666700669 + ], + "scorePercentiles" : { + "0.0" : 8614237.921619294, + "50.0" : 8812711.224438813, + "90.0" : 8870279.72251773, + "95.0" : 8870279.72251773, + "99.0" : 8870279.72251773, + "99.9" : 8870279.72251773, + "99.99" : 8870279.72251773, + "99.999" : 8870279.72251773, + "99.9999" : 8870279.72251773, + "100.0" : 8870279.72251773 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8763227.555166375, + 8675787.426712923, + 8614237.921619294 + ], + [ + 8862194.893711248, + 8870273.52748227, + 8870279.72251773 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-14T22:48:27Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json b/performance-results/2025-09-14T22:48:27Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json new file mode 100644 index 0000000000..9dc30429cf --- /dev/null +++ b/performance-results/2025-09-14T22:48:27Z-c40f35c220adec9c5882adbec74421041f7787c2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3445829539226324, + "scoreError" : 0.0475064086518884, + "scoreConfidence" : [ + 3.297076545270744, + 3.392089362574521 + ], + "scorePercentiles" : { + "0.0" : 3.3379063645354465, + "50.0" : 3.344066233319009, + "90.0" : 3.352292984517065, + "95.0" : 3.352292984517065, + "99.0" : 3.352292984517065, + "99.9" : 3.352292984517065, + "99.99" : 3.352292984517065, + "99.999" : 3.352292984517065, + "99.9999" : 3.352292984517065, + "100.0" : 3.352292984517065 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3379063645354465, + 3.352292984517065 + ], + [ + 3.338700336020903, + 3.349432130617116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.682346879548956, + "scoreError" : 0.05210560826619359, + "scoreConfidence" : [ + 1.6302412712827623, + 1.7344524878151497 + ], + "scorePercentiles" : { + "0.0" : 1.673744106584672, + "50.0" : 1.6822448975420858, + "90.0" : 1.6911536165269803, + "95.0" : 1.6911536165269803, + "99.0" : 1.6911536165269803, + "99.9" : 1.6911536165269803, + "99.99" : 1.6911536165269803, + "99.999" : 1.6911536165269803, + "99.9999" : 1.6911536165269803, + "100.0" : 1.6911536165269803 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.673744106584672, + 1.6775829148054577 + ], + [ + 1.6869068802787137, + 1.6911536165269803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8462664964426411, + "scoreError" : 0.025786842406286193, + "scoreConfidence" : [ + 0.8204796540363549, + 0.8720533388489272 + ], + "scorePercentiles" : { + "0.0" : 0.8416231124555156, + "50.0" : 0.8467604163676514, + "90.0" : 0.8499220405797462, + "95.0" : 0.8499220405797462, + "99.0" : 0.8499220405797462, + "99.9" : 0.8499220405797462, + "99.99" : 0.8499220405797462, + "99.999" : 0.8499220405797462, + "99.9999" : 0.8499220405797462, + "100.0" : 0.8499220405797462 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8442743195751514, + 0.8499220405797462 + ], + [ + 0.8416231124555156, + 0.8492465131601513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.18860002159096, + "scoreError" : 0.40119077412789583, + "scoreConfidence" : [ + 15.787409247463065, + 16.58979079571886 + ], + "scorePercentiles" : { + "0.0" : 16.051038809047864, + "50.0" : 16.18511616632528, + "90.0" : 16.33884000003908, + "95.0" : 16.33884000003908, + "99.0" : 16.33884000003908, + "99.9" : 16.33884000003908, + "99.99" : 16.33884000003908, + "99.999" : 16.33884000003908, + "99.9999" : 16.33884000003908, + "100.0" : 16.33884000003908 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33884000003908, + 16.313861118688525, + 16.303394463106002 + ], + [ + 16.057627869119724, + 16.066837869544557, + 16.051038809047864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2751.8294437657137, + "scoreError" : 51.69742739432418, + "scoreConfidence" : [ + 2700.1320163713895, + 2803.526871160038 + ], + "scorePercentiles" : { + "0.0" : 2732.557345277224, + "50.0" : 2750.567363754922, + "90.0" : 2777.153039119587, + "95.0" : 2777.153039119587, + "99.0" : 2777.153039119587, + "99.9" : 2777.153039119587, + "99.99" : 2777.153039119587, + "99.999" : 2777.153039119587, + "99.9999" : 2777.153039119587, + "100.0" : 2777.153039119587 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2777.153039119587, + 2764.4558551227037, + 2762.037758759128 + ], + [ + 2735.675695564923, + 2732.557345277224, + 2739.0969687507163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75802.17010332175, + "scoreError" : 2250.7785092723634, + "scoreConfidence" : [ + 73551.39159404939, + 78052.94861259412 + ], + "scorePercentiles" : { + "0.0" : 75004.89946811108, + "50.0" : 75787.07534752195, + "90.0" : 76636.4859843357, + "95.0" : 76636.4859843357, + "99.0" : 76636.4859843357, + "99.9" : 76636.4859843357, + "99.99" : 76636.4859843357, + "99.999" : 76636.4859843357, + "99.9999" : 76636.4859843357, + "100.0" : 76636.4859843357 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75142.82062604737, + 75004.89946811108, + 75071.10959213317 + ], + [ + 76526.37488030671, + 76431.33006899655, + 76636.4859843357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.4014412227016, + "scoreError" : 7.8124485433768704, + "scoreConfidence" : [ + 354.5889926793247, + 370.21388976607847 + ], + "scorePercentiles" : { + "0.0" : 359.03766625003425, + "50.0" : 362.0666161029553, + "90.0" : 365.8538307465605, + "95.0" : 365.8538307465605, + "99.0" : 365.8538307465605, + "99.9" : 365.8538307465605, + "99.99" : 365.8538307465605, + "99.999" : 365.8538307465605, + "99.9999" : 365.8538307465605, + "100.0" : 365.8538307465605 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.4000064055428, + 359.03766625003425, + 360.53760698415454 + ], + [ + 363.5956252217561, + 364.9839117281614, + 365.8538307465605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.8994158095233, + "scoreError" : 2.017710986201069, + "scoreConfidence" : [ + 113.88170482332224, + 117.91712679572437 + ], + "scorePercentiles" : { + "0.0" : 114.97121426618205, + "50.0" : 115.93330490624551, + "90.0" : 116.68807883080883, + "95.0" : 116.68807883080883, + "99.0" : 116.68807883080883, + "99.9" : 116.68807883080883, + "99.99" : 116.68807883080883, + "99.999" : 116.68807883080883, + "99.9999" : 116.68807883080883, + "100.0" : 116.68807883080883 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.47086300619593, + 115.35541230693576, + 114.97121426618205 + ], + [ + 116.51517964072221, + 116.3957468062951, + 116.68807883080883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06185252080196014, + "scoreError" : 4.4601294590707464E-4, + "scoreConfidence" : [ + 0.06140650785605306, + 0.062298533747867216 + ], + "scorePercentiles" : { + "0.0" : 0.061693308461087636, + "50.0" : 0.0618123711726776, + "90.0" : 0.06213660430103518, + "95.0" : 0.06213660430103518, + "99.0" : 0.06213660430103518, + "99.9" : 0.06213660430103518, + "99.99" : 0.06213660430103518, + "99.999" : 0.06213660430103518, + "99.9999" : 0.06213660430103518, + "100.0" : 0.06213660430103518 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0618161336687828, + 0.06180860867657239, + 0.06213660430103518 + ], + [ + 0.06174026018855227, + 0.06192020951573055, + 0.061693308461087636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.759135894521184E-4, + "scoreError" : 1.5743509109830077E-5, + "scoreConfidence" : [ + 3.6017008034228837E-4, + 3.916570985619485E-4 + ], + "scorePercentiles" : { + "0.0" : 3.696405728460527E-4, + "50.0" : 3.7562682510339056E-4, + "90.0" : 3.8175506812813454E-4, + "95.0" : 3.8175506812813454E-4, + "99.0" : 3.8175506812813454E-4, + "99.9" : 3.8175506812813454E-4, + "99.99" : 3.8175506812813454E-4, + "99.999" : 3.8175506812813454E-4, + "99.9999" : 3.8175506812813454E-4, + "100.0" : 3.8175506812813454E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8175506812813454E-4, + 3.81483566609206E-4, + 3.7963306781154304E-4 + ], + [ + 3.7134867892253584E-4, + 3.7162058239523807E-4, + 3.696405728460527E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1244767231375127, + "scoreError" : 0.0010234718313357042, + "scoreConfidence" : [ + 0.12345325130617699, + 0.1255001949688484 + ], + "scorePercentiles" : { + "0.0" : 0.12407943592034246, + "50.0" : 0.12439548191921468, + "90.0" : 0.12512003685955583, + "95.0" : 0.12512003685955583, + "99.0" : 0.12512003685955583, + "99.9" : 0.12512003685955583, + "99.99" : 0.12512003685955583, + "99.999" : 0.12512003685955583, + "99.9999" : 0.12512003685955583, + "100.0" : 0.12512003685955583 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1246277615308882, + 0.12512003685955583, + 0.1244362263202429 + ], + [ + 0.12435473751818646, + 0.12424214067586035, + 0.12407943592034246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012918754158222598, + "scoreError" : 1.9216849699697373E-4, + "scoreConfidence" : [ + 0.012726585661225623, + 0.013110922655219572 + ], + "scorePercentiles" : { + "0.0" : 0.012846908403958341, + "50.0" : 0.012923554916325573, + "90.0" : 0.012987892022681757, + "95.0" : 0.012987892022681757, + "99.0" : 0.012987892022681757, + "99.9" : 0.012987892022681757, + "99.99" : 0.012987892022681757, + "99.999" : 0.012987892022681757, + "99.9999" : 0.012987892022681757, + "100.0" : 0.012987892022681757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012846908403958341, + 0.012876031766040427, + 0.012848402183423506 + ], + [ + 0.01297107806661072, + 0.012982212506620832, + 0.012987892022681757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9881898448487646, + "scoreError" : 0.044491361325412426, + "scoreConfidence" : [ + 0.9436984835233522, + 1.032681206174177 + ], + "scorePercentiles" : { + "0.0" : 0.9745524231144026, + "50.0" : 0.985950733378903, + "90.0" : 1.0181516198330278, + "95.0" : 1.0181516198330278, + "99.0" : 1.0181516198330278, + "99.9" : 1.0181516198330278, + "99.99" : 1.0181516198330278, + "99.999" : 1.0181516198330278, + "99.9999" : 1.0181516198330278, + "100.0" : 1.0181516198330278 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9753838083487759, + 0.9745524231144026, + 1.0181516198330278 + ], + [ + 0.9891497510385757, + 0.9860667911860397, + 0.9858346755717665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010865166961127062, + "scoreError" : 0.0010176653219832836, + "scoreConfidence" : [ + 0.00984750163914378, + 0.011882832283110345 + ], + "scorePercentiles" : { + "0.0" : 0.010513296655375643, + "50.0" : 0.01087118163508993, + "90.0" : 0.011223849923230944, + "95.0" : 0.011223849923230944, + "99.0" : 0.011223849923230944, + "99.9" : 0.011223849923230944, + "99.99" : 0.011223849923230944, + "99.999" : 0.011223849923230944, + "99.9999" : 0.011223849923230944, + "100.0" : 0.011223849923230944 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010527487762101571, + 0.010562723603770316, + 0.010513296655375643 + ], + [ + 0.011179639666409542, + 0.011223849923230944, + 0.011184004155874366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.050876586696313, + "scoreError" : 0.1588846770175737, + "scoreConfidence" : [ + 2.8919919096787394, + 3.2097612637138866 + ], + "scorePercentiles" : { + "0.0" : 2.9755086139202858, + "50.0" : 3.066182332923821, + "90.0" : 3.1163936386292836, + "95.0" : 3.1163936386292836, + "99.0" : 3.1163936386292836, + "99.9" : 3.1163936386292836, + "99.99" : 3.1163936386292836, + "99.999" : 3.1163936386292836, + "99.9999" : 3.1163936386292836, + "100.0" : 3.1163936386292836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1163936386292836, + 3.0842620345252776, + 3.0891844373069794 + ], + [ + 2.9755086139202858, + 2.9918081644736843, + 3.0481026313223643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.809117279281304, + "scoreError" : 0.042254275925068745, + "scoreConfidence" : [ + 2.766863003356235, + 2.8513715552063728 + ], + "scorePercentiles" : { + "0.0" : 2.7865324728336582, + "50.0" : 2.809684095968277, + "90.0" : 2.8297224226308346, + "95.0" : 2.8297224226308346, + "99.0" : 2.8297224226308346, + "99.9" : 2.8297224226308346, + "99.99" : 2.8297224226308346, + "99.999" : 2.8297224226308346, + "99.9999" : 2.8297224226308346, + "100.0" : 2.8297224226308346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8297224226308346, + 2.8169954523943663, + 2.803033496076233 + ], + [ + 2.8163346958603213, + 2.7865324728336582, + 2.802085135892407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18284134528603757, + "scoreError" : 0.00589992366450785, + "scoreConfidence" : [ + 0.17694142162152973, + 0.1887412689505454 + ], + "scorePercentiles" : { + "0.0" : 0.1805053696142669, + "50.0" : 0.18271549579786478, + "90.0" : 0.18550744065815836, + "95.0" : 0.18550744065815836, + "99.0" : 0.18550744065815836, + "99.9" : 0.18550744065815836, + "99.99" : 0.18550744065815836, + "99.999" : 0.18550744065815836, + "99.9999" : 0.18550744065815836, + "100.0" : 0.18550744065815836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18441217550297823, + 0.18550744065815836, + 0.18419017904702265 + ], + [ + 0.1805053696142669, + 0.1812408125487069, + 0.1811920943450925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3330187080067945, + "scoreError" : 0.026755496232965335, + "scoreConfidence" : [ + 0.30626321177382915, + 0.35977420423975986 + ], + "scorePercentiles" : { + "0.0" : 0.32385127691958937, + "50.0" : 0.33309652585810995, + "90.0" : 0.34238378327855384, + "95.0" : 0.34238378327855384, + "99.0" : 0.34238378327855384, + "99.9" : 0.34238378327855384, + "99.99" : 0.34238378327855384, + "99.999" : 0.34238378327855384, + "99.9999" : 0.34238378327855384, + "100.0" : 0.34238378327855384 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32411795018474104, + 0.32385127691958937, + 0.3249990713682158 + ], + [ + 0.3411939803480041, + 0.34238378327855384, + 0.34156618594166266 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14712258756098864, + "scoreError" : 0.004402363977589694, + "scoreConfidence" : [ + 0.14272022358339895, + 0.15152495153857834 + ], + "scorePercentiles" : { + "0.0" : 0.14551320120771188, + "50.0" : 0.14702177265366578, + "90.0" : 0.14872335637483083, + "95.0" : 0.14872335637483083, + "99.0" : 0.14872335637483083, + "99.9" : 0.14872335637483083, + "99.99" : 0.14872335637483083, + "99.999" : 0.14872335637483083, + "99.9999" : 0.14872335637483083, + "100.0" : 0.14872335637483083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14579247574061116, + 0.14551320120771188, + 0.14579529140849382 + ], + [ + 0.14872335637483083, + 0.14866294673544628, + 0.14824825389883775 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40713135288276714, + "scoreError" : 0.0230428067923725, + "scoreConfidence" : [ + 0.38408854609039467, + 0.4301741596751396 + ], + "scorePercentiles" : { + "0.0" : 0.3987698630672302, + "50.0" : 0.4071819657061959, + "90.0" : 0.41667952629166666, + "95.0" : 0.41667952629166666, + "99.0" : 0.41667952629166666, + "99.9" : 0.41667952629166666, + "99.99" : 0.41667952629166666, + "99.999" : 0.41667952629166666, + "99.9999" : 0.41667952629166666, + "100.0" : 0.41667952629166666 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4010143789798701, + 0.3994296309062587, + 0.3987698630672302 + ], + [ + 0.41667952629166666, + 0.4133495524325218, + 0.4135451656190555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15625649217166274, + "scoreError" : 0.008028187589217955, + "scoreConfidence" : [ + 0.1482283045824448, + 0.16428467976088068 + ], + "scorePercentiles" : { + "0.0" : 0.15313626286694332, + "50.0" : 0.1563979669329519, + "90.0" : 0.158931304662916, + "95.0" : 0.158931304662916, + "99.0" : 0.158931304662916, + "99.9" : 0.158931304662916, + "99.99" : 0.158931304662916, + "99.999" : 0.158931304662916, + "99.9999" : 0.158931304662916, + "100.0" : 0.158931304662916 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15401446932898, + 0.15382018627330338, + 0.15313626286694332 + ], + [ + 0.15878146453692382, + 0.1588552653609099, + 0.158931304662916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04663174023075053, + "scoreError" : 7.084817035513027E-4, + "scoreConfidence" : [ + 0.04592325852719922, + 0.04734022193430183 + ], + "scorePercentiles" : { + "0.0" : 0.046323295899980084, + "50.0" : 0.046634672695296545, + "90.0" : 0.04697201119795581, + "95.0" : 0.04697201119795581, + "99.0" : 0.04697201119795581, + "99.9" : 0.04697201119795581, + "99.99" : 0.04697201119795581, + "99.999" : 0.04697201119795581, + "99.9999" : 0.04697201119795581, + "100.0" : 0.04697201119795581 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04697201119795581, + 0.046799219723701574, + 0.04677265760696713 + ], + [ + 0.046323295899980084, + 0.04649668778362595, + 0.04642656917227259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8637409.986487865, + "scoreError" : 82164.12640197344, + "scoreConfidence" : [ + 8555245.860085892, + 8719574.11288984 + ], + "scorePercentiles" : { + "0.0" : 8614189.802756244, + "50.0" : 8628143.722651066, + "90.0" : 8695358.835794961, + "95.0" : 8695358.835794961, + "99.0" : 8695358.835794961, + "99.9" : 8695358.835794961, + "99.99" : 8695358.835794961, + "99.999" : 8695358.835794961, + "99.9999" : 8695358.835794961, + "100.0" : 8695358.835794961 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8614189.802756244, + 8629152.550474547, + 8636036.34283247 + ], + [ + 8695358.835794961, + 8622587.492241379, + 8627134.894827586 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-15T00:29:03Z-f14da69b1381550817e68fc860d04bc58d26a940-jdk17.json b/performance-results/2025-09-15T00:29:03Z-f14da69b1381550817e68fc860d04bc58d26a940-jdk17.json new file mode 100644 index 0000000000..85db869658 --- /dev/null +++ b/performance-results/2025-09-15T00:29:03Z-f14da69b1381550817e68fc860d04bc58d26a940-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.361211655548786, + "scoreError" : 0.039755618474119646, + "scoreConfidence" : [ + 3.3214560370746664, + 3.4009672740229053 + ], + "scorePercentiles" : { + "0.0" : 3.353749188798845, + "50.0" : 3.36177439365012, + "90.0" : 3.3675486460960586, + "95.0" : 3.3675486460960586, + "99.0" : 3.3675486460960586, + "99.9" : 3.3675486460960586, + "99.99" : 3.3675486460960586, + "99.999" : 3.3675486460960586, + "99.9999" : 3.3675486460960586, + "100.0" : 3.3675486460960586 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3646959040014544, + 3.3675486460960586 + ], + [ + 3.353749188798845, + 3.3588528832987863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6908946214326968, + "scoreError" : 0.07045248289042995, + "scoreConfidence" : [ + 1.6204421385422667, + 1.7613471043231268 + ], + "scorePercentiles" : { + "0.0" : 1.6817676622955364, + "50.0" : 1.6878360846720644, + "90.0" : 1.706138654091122, + "95.0" : 1.706138654091122, + "99.0" : 1.706138654091122, + "99.9" : 1.706138654091122, + "99.99" : 1.706138654091122, + "99.999" : 1.706138654091122, + "99.9999" : 1.706138654091122, + "100.0" : 1.706138654091122 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6817676622955364, + 1.6845037557177505 + ], + [ + 1.691168413626378, + 1.706138654091122 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.854258929227458, + "scoreError" : 0.02374186403598579, + "scoreConfidence" : [ + 0.8305170651914723, + 0.8780007932634438 + ], + "scorePercentiles" : { + "0.0" : 0.8501824982905118, + "50.0" : 0.8546302843349012, + "90.0" : 0.8575926499495183, + "95.0" : 0.8575926499495183, + "99.0" : 0.8575926499495183, + "99.9" : 0.8575926499495183, + "99.99" : 0.8575926499495183, + "99.999" : 0.8575926499495183, + "99.9999" : 0.8575926499495183, + "100.0" : 0.8575926499495183 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8501824982905118, + 0.8571292634808951 + ], + [ + 0.8521313051889071, + 0.8575926499495183 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.175530493987974, + "scoreError" : 0.3063647766894457, + "scoreConfidence" : [ + 15.869165717298529, + 16.48189527067742 + ], + "scorePercentiles" : { + "0.0" : 16.06613773797418, + "50.0" : 16.170907122110176, + "90.0" : 16.377641901465747, + "95.0" : 16.377641901465747, + "99.0" : 16.377641901465747, + "99.9" : 16.377641901465747, + "99.99" : 16.377641901465747, + "99.999" : 16.377641901465747, + "99.9999" : 16.377641901465747, + "100.0" : 16.377641901465747 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.09309487492117, + 16.16734102829794, + 16.06613773797418 + ], + [ + 16.17447321592241, + 16.17449420534638, + 16.377641901465747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2766.0571286258632, + "scoreError" : 239.1946911343957, + "scoreConfidence" : [ + 2526.8624374914675, + 3005.251819760259 + ], + "scorePercentiles" : { + "0.0" : 2683.7764408597036, + "50.0" : 2768.942132510829, + "90.0" : 2844.515931399862, + "95.0" : 2844.515931399862, + "99.0" : 2844.515931399862, + "99.9" : 2844.515931399862, + "99.99" : 2844.515931399862, + "99.999" : 2844.515931399862, + "99.9999" : 2844.515931399862, + "100.0" : 2844.515931399862 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2844.515931399862, + 2842.597885975197, + 2844.4081242723605 + ], + [ + 2695.286379046461, + 2685.7580102015954, + 2683.7764408597036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77222.17128443792, + "scoreError" : 1843.1265658008306, + "scoreConfidence" : [ + 75379.04471863709, + 79065.29785023876 + ], + "scorePercentiles" : { + "0.0" : 76601.6696198021, + "50.0" : 77192.83028863273, + "90.0" : 77884.2781650968, + "95.0" : 77884.2781650968, + "99.0" : 77884.2781650968, + "99.9" : 77884.2781650968, + "99.99" : 77884.2781650968, + "99.999" : 77884.2781650968, + "99.9999" : 77884.2781650968, + "100.0" : 77884.2781650968 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77828.86083913625, + 77749.2555553755, + 77884.2781650968 + ], + [ + 76636.40502188996, + 76601.6696198021, + 76632.55850532698 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 371.25906358696596, + "scoreError" : 1.0414107134502435, + "scoreConfidence" : [ + 370.2176528735157, + 372.3004743004162 + ], + "scorePercentiles" : { + "0.0" : 370.8901389955185, + "50.0" : 371.17104962186244, + "90.0" : 371.9384487615729, + "95.0" : 371.9384487615729, + "99.0" : 371.9384487615729, + "99.9" : 371.9384487615729, + "99.99" : 371.9384487615729, + "99.999" : 371.9384487615729, + "99.9999" : 371.9384487615729, + "100.0" : 371.9384487615729 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 371.0455583404525, + 371.2819668719972, + 371.33813618052676 + ], + [ + 371.06013237172766, + 370.8901389955185, + 371.9384487615729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.60935633051457, + "scoreError" : 2.0278757057264754, + "scoreConfidence" : [ + 114.5814806247881, + 118.63723203624104 + ], + "scorePercentiles" : { + "0.0" : 115.88398242324227, + "50.0" : 116.59283976162146, + "90.0" : 117.3857659898333, + "95.0" : 117.3857659898333, + "99.0" : 117.3857659898333, + "99.9" : 117.3857659898333, + "99.99" : 117.3857659898333, + "99.999" : 117.3857659898333, + "99.9999" : 117.3857659898333, + "100.0" : 117.3857659898333 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.16683434578616, + 117.24307406747634, + 117.3857659898333 + ], + [ + 116.01884517745678, + 115.9576359792925, + 115.88398242324227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06033440223956187, + "scoreError" : 1.6115755471466926E-4, + "scoreConfidence" : [ + 0.0601732446848472, + 0.060495559794276545 + ], + "scorePercentiles" : { + "0.0" : 0.06024600925368099, + "50.0" : 0.06035304283862823, + "90.0" : 0.06040398988855667, + "95.0" : 0.06040398988855667, + "99.0" : 0.06040398988855667, + "99.9" : 0.06040398988855667, + "99.99" : 0.06040398988855667, + "99.999" : 0.06040398988855667, + "99.9999" : 0.06040398988855667, + "100.0" : 0.06040398988855667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060347620418927155, + 0.06028686281318575, + 0.06024600925368099 + ], + [ + 0.06040398988855667, + 0.06035846525832931, + 0.06036346580469137 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.557402257192811E-4, + "scoreError" : 1.619249833120728E-5, + "scoreConfidence" : [ + 3.395477273880738E-4, + 3.719327240504884E-4 + ], + "scorePercentiles" : { + "0.0" : 3.504143753042E-4, + "50.0" : 3.5562377856922586E-4, + "90.0" : 3.6164059112653464E-4, + "95.0" : 3.6164059112653464E-4, + "99.0" : 3.6164059112653464E-4, + "99.9" : 3.6164059112653464E-4, + "99.99" : 3.6164059112653464E-4, + "99.999" : 3.6164059112653464E-4, + "99.9999" : 3.6164059112653464E-4, + "100.0" : 3.6164059112653464E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.504143753042E-4, + 3.50606386174783E-4, + 3.5041647405665834E-4 + ], + [ + 3.6164059112653464E-4, + 3.606411709636687E-4, + 3.6072235668984184E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12389754274192781, + "scoreError" : 0.008762539698714027, + "scoreConfidence" : [ + 0.11513500304321378, + 0.13266008244064184 + ], + "scorePercentiles" : { + "0.0" : 0.1210098662979949, + "50.0" : 0.12373306274585338, + "90.0" : 0.1269922176844832, + "95.0" : 0.1269922176844832, + "99.0" : 0.1269922176844832, + "99.9" : 0.1269922176844832, + "99.99" : 0.1269922176844832, + "99.999" : 0.1269922176844832, + "99.9999" : 0.1269922176844832, + "100.0" : 0.1269922176844832 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1269922176844832, + 0.12688483139837337, + 0.12635205834786345 + ], + [ + 0.12111406714384333, + 0.1210098662979949, + 0.12103221557900852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013170666492886689, + "scoreError" : 4.8463679885879404E-4, + "scoreConfidence" : [ + 0.012686029694027896, + 0.013655303291745483 + ], + "scorePercentiles" : { + "0.0" : 0.012994495635213522, + "50.0" : 0.013170837154657465, + "90.0" : 0.01334003946064274, + "95.0" : 0.01334003946064274, + "99.0" : 0.01334003946064274, + "99.9" : 0.01334003946064274, + "99.99" : 0.01334003946064274, + "99.999" : 0.01334003946064274, + "99.9999" : 0.01334003946064274, + "100.0" : 0.01334003946064274 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01332690470980355, + 0.01334003946064274, + 0.013317083586354944 + ], + [ + 0.013020884842345393, + 0.012994495635213522, + 0.013024590722959984 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9550103456767943, + "scoreError" : 0.014770276557648869, + "scoreConfidence" : [ + 0.9402400691191455, + 0.9697806222344432 + ], + "scorePercentiles" : { + "0.0" : 0.9498669790083587, + "50.0" : 0.9548775180752445, + "90.0" : 0.9601006990207374, + "95.0" : 0.9601006990207374, + "99.0" : 0.9601006990207374, + "99.9" : 0.9601006990207374, + "99.99" : 0.9601006990207374, + "99.999" : 0.9601006990207374, + "99.9999" : 0.9601006990207374, + "100.0" : 0.9601006990207374 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9593393440767386, + 0.9599889342421043, + 0.9601006990207374 + ], + [ + 0.9504156920737502, + 0.9503504256390763, + 0.9498669790083587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010276883334616748, + "scoreError" : 1.3838557173169086E-4, + "scoreConfidence" : [ + 0.010138497762885057, + 0.010415268906348439 + ], + "scorePercentiles" : { + "0.0" : 0.010227897543523752, + "50.0" : 0.010278554129907594, + "90.0" : 0.010330106932570852, + "95.0" : 0.010330106932570852, + "99.0" : 0.010330106932570852, + "99.9" : 0.010330106932570852, + "99.99" : 0.010330106932570852, + "99.999" : 0.010330106932570852, + "99.9999" : 0.010330106932570852, + "100.0" : 0.010330106932570852 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010317553095911668, + 0.010330106932570852, + 0.010317005240906306 + ], + [ + 0.010240103018908884, + 0.010228634175879027, + 0.010227897543523752 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0441863702978007, + "scoreError" : 0.060008323815863164, + "scoreConfidence" : [ + 2.9841780464819374, + 3.104194694113664 + ], + "scorePercentiles" : { + "0.0" : 3.021537490634441, + "50.0" : 3.0454819839155545, + "90.0" : 3.0659607817290007, + "95.0" : 3.0659607817290007, + "99.0" : 3.0659607817290007, + "99.9" : 3.0659607817290007, + "99.99" : 3.0659607817290007, + "99.999" : 3.0659607817290007, + "99.9999" : 3.0659607817290007, + "100.0" : 3.0659607817290007 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.024092145707376, + 3.021537490634441, + 3.0287825850999393 + ], + [ + 3.0625638358848746, + 3.0621813827311697, + 3.0659607817290007 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7630421063182613, + "scoreError" : 0.03211009247862952, + "scoreConfidence" : [ + 2.730932013839632, + 2.795152198796891 + ], + "scorePercentiles" : { + "0.0" : 2.748393306128057, + "50.0" : 2.761890290608072, + "90.0" : 2.7833273757305874, + "95.0" : 2.7833273757305874, + "99.0" : 2.7833273757305874, + "99.9" : 2.7833273757305874, + "99.99" : 2.7833273757305874, + "99.999" : 2.7833273757305874, + "99.9999" : 2.7833273757305874, + "100.0" : 2.7833273757305874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7626691648715824, + 2.7582054809707666, + 2.748393306128057 + ], + [ + 2.764545893864013, + 2.761111416344561, + 2.7833273757305874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17707587524167934, + "scoreError" : 0.003824572557606421, + "scoreConfidence" : [ + 0.1732513026840729, + 0.18090044779928577 + ], + "scorePercentiles" : { + "0.0" : 0.17574228012582815, + "50.0" : 0.17710288455697243, + "90.0" : 0.17851226049625135, + "95.0" : 0.17851226049625135, + "99.0" : 0.17851226049625135, + "99.9" : 0.17851226049625135, + "99.99" : 0.17851226049625135, + "99.999" : 0.17851226049625135, + "99.9999" : 0.17851226049625135, + "100.0" : 0.17851226049625135 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.178176461844098, + 0.17825052051620263, + 0.17851226049625135 + ], + [ + 0.17602930726984686, + 0.17574228012582815, + 0.17574442119784894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32297668345180247, + "scoreError" : 0.00294958917201125, + "scoreConfidence" : [ + 0.3200270942797912, + 0.32592627262381374 + ], + "scorePercentiles" : { + "0.0" : 0.3217872655018181, + "50.0" : 0.32306885366340743, + "90.0" : 0.3241549621069692, + "95.0" : 0.3241549621069692, + "99.0" : 0.3241549621069692, + "99.9" : 0.3241549621069692, + "99.99" : 0.3241549621069692, + "99.999" : 0.3241549621069692, + "99.9999" : 0.3241549621069692, + "100.0" : 0.3241549621069692 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32253758313175296, + 0.32185750848057676, + 0.3217872655018181 + ], + [ + 0.3241549621069692, + 0.32360012419506196, + 0.32392265729463593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14401661219384138, + "scoreError" : 0.005720722706462169, + "scoreConfidence" : [ + 0.1382958894873792, + 0.14973733490030355 + ], + "scorePercentiles" : { + "0.0" : 0.14210896865141395, + "50.0" : 0.14400502076157506, + "90.0" : 0.14592225465847572, + "95.0" : 0.14592225465847572, + "99.0" : 0.14592225465847572, + "99.9" : 0.14592225465847572, + "99.99" : 0.14592225465847572, + "99.999" : 0.14592225465847572, + "99.9999" : 0.14592225465847572, + "100.0" : 0.14592225465847572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14589499452906163, + 0.14592225465847572, + 0.1458182791776028 + ], + [ + 0.1421634138009468, + 0.14219176234554737, + 0.14210896865141395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3949350798529321, + "scoreError" : 0.01019146701012959, + "scoreConfidence" : [ + 0.3847436128428025, + 0.40512654686306165 + ], + "scorePercentiles" : { + "0.0" : 0.39148704924835576, + "50.0" : 0.39465437781181467, + "90.0" : 0.3992593512995568, + "95.0" : 0.3992593512995568, + "99.0" : 0.3992593512995568, + "99.9" : 0.3992593512995568, + "99.99" : 0.3992593512995568, + "99.999" : 0.3992593512995568, + "99.9999" : 0.3992593512995568, + "100.0" : 0.3992593512995568 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39187713444884203, + 0.391629497630703, + 0.39148704924835576 + ], + [ + 0.3992593512995568, + 0.3979258253153476, + 0.39743162117478736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16077439629795479, + "scoreError" : 0.02074282703688582, + "scoreConfidence" : [ + 0.14003156926106897, + 0.1815172233348406 + ], + "scorePercentiles" : { + "0.0" : 0.15369803495020287, + "50.0" : 0.16024782655186814, + "90.0" : 0.16998476908040117, + "95.0" : 0.16998476908040117, + "99.0" : 0.16998476908040117, + "99.9" : 0.16998476908040117, + "99.99" : 0.16998476908040117, + "99.999" : 0.16998476908040117, + "99.9999" : 0.16998476908040117, + "100.0" : 0.16998476908040117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16998476908040117, + 0.16588405485701016, + 0.16631697588437808 + ], + [ + 0.15415094476901023, + 0.15369803495020287, + 0.15461159824672613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048212516395001036, + "scoreError" : 0.0027710056523221082, + "scoreConfidence" : [ + 0.04544151074267893, + 0.05098352204732314 + ], + "scorePercentiles" : { + "0.0" : 0.047261173309135936, + "50.0" : 0.048165574842213954, + "90.0" : 0.049325880386905205, + "95.0" : 0.049325880386905205, + "99.0" : 0.049325880386905205, + "99.9" : 0.049325880386905205, + "99.99" : 0.049325880386905205, + "99.999" : 0.049325880386905205, + "99.9999" : 0.049325880386905205, + "100.0" : 0.049325880386905205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04733547965786397, + 0.047356309076185786, + 0.047261173309135936 + ], + [ + 0.04902141533167317, + 0.04897484060824212, + 0.049325880386905205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8572364.241122572, + "scoreError" : 205536.76158843684, + "scoreConfidence" : [ + 8366827.479534135, + 8777901.00271101 + ], + "scorePercentiles" : { + "0.0" : 8500085.932030587, + "50.0" : 8572453.846048784, + "90.0" : 8644657.640449438, + "95.0" : 8644657.640449438, + "99.0" : 8644657.640449438, + "99.9" : 8644657.640449438, + "99.99" : 8644657.640449438, + "99.999" : 8644657.640449438, + "99.9999" : 8644657.640449438, + "100.0" : 8644657.640449438 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8509147.530612245, + 8507475.503401361, + 8500085.932030587 + ], + [ + 8644657.640449438, + 8635760.16148532, + 8637058.678756477 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-15T00:30:00Z-f14da69b1381550817e68fc860d04bc58d26a940-jdk17.json b/performance-results/2025-09-15T00:30:00Z-f14da69b1381550817e68fc860d04bc58d26a940-jdk17.json new file mode 100644 index 0000000000..50b75af609 --- /dev/null +++ b/performance-results/2025-09-15T00:30:00Z-f14da69b1381550817e68fc860d04bc58d26a940-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.344232590592511, + "scoreError" : 0.07320107736551677, + "scoreConfidence" : [ + 3.2710315132269945, + 3.417433667958028 + ], + "scorePercentiles" : { + "0.0" : 3.334166221784455, + "50.0" : 3.3426374330677193, + "90.0" : 3.3574892744501503, + "95.0" : 3.3574892744501503, + "99.0" : 3.3574892744501503, + "99.9" : 3.3574892744501503, + "99.99" : 3.3574892744501503, + "99.999" : 3.3574892744501503, + "99.9999" : 3.3574892744501503, + "100.0" : 3.3574892744501503 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3498070459515095, + 3.3574892744501503 + ], + [ + 3.334166221784455, + 3.335467820183929 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6922616586590529, + "scoreError" : 0.04239784834405045, + "scoreConfidence" : [ + 1.6498638103150025, + 1.7346595070031032 + ], + "scorePercentiles" : { + "0.0" : 1.683171211219564, + "50.0" : 1.693883622152578, + "90.0" : 1.6981081791114914, + "95.0" : 1.6981081791114914, + "99.0" : 1.6981081791114914, + "99.9" : 1.6981081791114914, + "99.99" : 1.6981081791114914, + "99.999" : 1.6981081791114914, + "99.9999" : 1.6981081791114914, + "100.0" : 1.6981081791114914 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.683171211219564, + 1.6981081791114914 + ], + [ + 1.6920041166193418, + 1.695763127685814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.855313839405497, + "scoreError" : 0.005973107856820491, + "scoreConfidence" : [ + 0.8493407315486765, + 0.8612869472623175 + ], + "scorePercentiles" : { + "0.0" : 0.854429164564699, + "50.0" : 0.8553314418046017, + "90.0" : 0.8561633094480855, + "95.0" : 0.8561633094480855, + "99.0" : 0.8561633094480855, + "99.9" : 0.8561633094480855, + "99.99" : 0.8561633094480855, + "99.999" : 0.8561633094480855, + "99.9999" : 0.8561633094480855, + "100.0" : 0.8561633094480855 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.854429164564699, + 0.8561633094480855 + ], + [ + 0.8546039898429291, + 0.8560588937662744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.465829243280737, + "scoreError" : 0.10117874756485866, + "scoreConfidence" : [ + 16.36465049571588, + 16.567007990845596 + ], + "scorePercentiles" : { + "0.0" : 16.427650161725282, + "50.0" : 16.463577425958185, + "90.0" : 16.512689471465585, + "95.0" : 16.512689471465585, + "99.0" : 16.512689471465585, + "99.9" : 16.512689471465585, + "99.99" : 16.512689471465585, + "99.999" : 16.512689471465585, + "99.9999" : 16.512689471465585, + "100.0" : 16.512689471465585 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.434334335698598, + 16.44004582045157, + 16.427650161725282 + ], + [ + 16.4871090314648, + 16.512689471465585, + 16.493146638878592 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2835.0833193886974, + "scoreError" : 83.1393013808791, + "scoreConfidence" : [ + 2751.944018007818, + 2918.2226207695767 + ], + "scorePercentiles" : { + "0.0" : 2805.908458354108, + "50.0" : 2834.867667528939, + "90.0" : 2866.573971195705, + "95.0" : 2866.573971195705, + "99.0" : 2866.573971195705, + "99.9" : 2866.573971195705, + "99.99" : 2866.573971195705, + "99.999" : 2866.573971195705, + "99.9999" : 2866.573971195705, + "100.0" : 2866.573971195705 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2805.908458354108, + 2807.51242504473, + 2811.0745081725436 + ], + [ + 2860.7697266797663, + 2866.573971195705, + 2858.6608268853342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76953.29654489252, + "scoreError" : 2586.5916067103835, + "scoreConfidence" : [ + 74366.70493818214, + 79539.8881516029 + ], + "scorePercentiles" : { + "0.0" : 76078.530532321, + "50.0" : 76936.57869018981, + "90.0" : 77838.14979989908, + "95.0" : 77838.14979989908, + "99.0" : 77838.14979989908, + "99.9" : 77838.14979989908, + "99.99" : 77838.14979989908, + "99.999" : 77838.14979989908, + "99.9999" : 77838.14979989908, + "100.0" : 77838.14979989908 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77717.78729837261, + 77826.52598476523, + 77838.14979989908 + ], + [ + 76155.37008200701, + 76103.41557199015, + 76078.530532321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 365.0365698677142, + "scoreError" : 2.321058535524212, + "scoreConfidence" : [ + 362.71551133219, + 367.35762840323844 + ], + "scorePercentiles" : { + "0.0" : 363.4458911206893, + "50.0" : 365.28163979799535, + "90.0" : 365.85938821764216, + "95.0" : 365.85938821764216, + "99.0" : 365.85938821764216, + "99.9" : 365.85938821764216, + "99.99" : 365.85938821764216, + "99.999" : 365.85938821764216, + "99.9999" : 365.85938821764216, + "100.0" : 365.85938821764216 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 365.34599557790244, + 365.3078833431128, + 365.85938821764216 + ], + [ + 365.0048646940603, + 363.4458911206893, + 365.255396252878 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.37218269799665, + "scoreError" : 1.188180728901576, + "scoreConfidence" : [ + 116.18400196909508, + 118.56036342689822 + ], + "scorePercentiles" : { + "0.0" : 116.91235231763682, + "50.0" : 117.3430986583922, + "90.0" : 117.81625264956585, + "95.0" : 117.81625264956585, + "99.0" : 117.81625264956585, + "99.9" : 117.81625264956585, + "99.99" : 117.81625264956585, + "99.999" : 117.81625264956585, + "99.9999" : 117.81625264956585, + "100.0" : 117.81625264956585 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.62405966046367, + 117.81625264956585, + 117.81333406094741 + ], + [ + 116.91235231763682, + 117.00495984304547, + 117.06213765632071 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06081367836241453, + "scoreError" : 4.126852877702864E-4, + "scoreConfidence" : [ + 0.06040099307464424, + 0.06122636365018482 + ], + "scorePercentiles" : { + "0.0" : 0.06065401640060168, + "50.0" : 0.06081926282936455, + "90.0" : 0.06102180868695005, + "95.0" : 0.06102180868695005, + "99.0" : 0.06102180868695005, + "99.9" : 0.06102180868695005, + "99.99" : 0.06102180868695005, + "99.999" : 0.06102180868695005, + "99.9999" : 0.06102180868695005, + "100.0" : 0.06102180868695005 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06074626425226123, + 0.06066770679164012, + 0.06065401640060168 + ], + [ + 0.06102180868695005, + 0.060892261406467876, + 0.06090001263656626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6098999758515547E-4, + "scoreError" : 3.1061384343038643E-5, + "scoreConfidence" : [ + 3.299286132421168E-4, + 3.920513819281941E-4 + ], + "scorePercentiles" : { + "0.0" : 3.504066573230701E-4, + "50.0" : 3.6142591843601595E-4, + "90.0" : 3.7117312466246875E-4, + "95.0" : 3.7117312466246875E-4, + "99.0" : 3.7117312466246875E-4, + "99.9" : 3.7117312466246875E-4, + "99.99" : 3.7117312466246875E-4, + "99.999" : 3.7117312466246875E-4, + "99.9999" : 3.7117312466246875E-4, + "100.0" : 3.7117312466246875E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7100770922258145E-4, + 3.710900526787672E-4, + 3.7117312466246875E-4 + ], + [ + 3.5184412764945045E-4, + 3.504183139745947E-4, + 3.504066573230701E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12454009173103497, + "scoreError" : 0.0023207612127116137, + "scoreConfidence" : [ + 0.12221933051832336, + 0.12686085294374658 + ], + "scorePercentiles" : { + "0.0" : 0.12358259940187101, + "50.0" : 0.12462321072656232, + "90.0" : 0.12539869912725085, + "95.0" : 0.12539869912725085, + "99.0" : 0.12539869912725085, + "99.9" : 0.12539869912725085, + "99.99" : 0.12539869912725085, + "99.999" : 0.12539869912725085, + "99.9999" : 0.12539869912725085, + "100.0" : 0.12539869912725085 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12539869912725085, + 0.1251949369155076, + 0.12524831519356738 + ], + [ + 0.12405148453761707, + 0.12376451521039604, + 0.12358259940187101 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013137245291107942, + "scoreError" : 1.0622924956219113E-4, + "scoreConfidence" : [ + 0.01303101604154575, + 0.013243474540670134 + ], + "scorePercentiles" : { + "0.0" : 0.013097326851999802, + "50.0" : 0.01313714965409778, + "90.0" : 0.013177223759545128, + "95.0" : 0.013177223759545128, + "99.0" : 0.013177223759545128, + "99.9" : 0.013177223759545128, + "99.99" : 0.013177223759545128, + "99.999" : 0.013177223759545128, + "99.9999" : 0.013177223759545128, + "100.0" : 0.013177223759545128 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013162275285978844, + 0.013174195800667393, + 0.013177223759545128 + ], + [ + 0.013100426026239774, + 0.013097326851999802, + 0.013112024022216714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9679761384991735, + "scoreError" : 0.04334209748707056, + "scoreConfidence" : [ + 0.924634041012103, + 1.011318235986244 + ], + "scorePercentiles" : { + "0.0" : 0.9537262587259203, + "50.0" : 0.9676833410034094, + "90.0" : 0.9832441938845737, + "95.0" : 0.9832441938845737, + "99.0" : 0.9832441938845737, + "99.9" : 0.9832441938845737, + "99.99" : 0.9832441938845737, + "99.999" : 0.9832441938845737, + "99.9999" : 0.9832441938845737, + "100.0" : 0.9832441938845737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9832441938845737, + 0.9816340804868473, + 0.9813406797173977 + ], + [ + 0.9538856158908814, + 0.9540260022894209, + 0.9537262587259203 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010521037902980155, + "scoreError" : 4.547709928083766E-4, + "scoreConfidence" : [ + 0.010066266910171777, + 0.010975808895788532 + ], + "scorePercentiles" : { + "0.0" : 0.010368745572142811, + "50.0" : 0.010522653938808938, + "90.0" : 0.01067395609284374, + "95.0" : 0.01067395609284374, + "99.0" : 0.01067395609284374, + "99.9" : 0.01067395609284374, + "99.99" : 0.01067395609284374, + "99.999" : 0.01067395609284374, + "99.9999" : 0.01067395609284374, + "100.0" : 0.01067395609284374 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01037981376694712, + 0.010368745572142811, + 0.010370602044604653 + ], + [ + 0.010667615830671847, + 0.01067395609284374, + 0.010665494110670757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.010146797053285, + "scoreError" : 0.2674722985859212, + "scoreConfidence" : [ + 2.742674498467364, + 3.277619095639206 + ], + "scorePercentiles" : { + "0.0" : 2.921180296728972, + "50.0" : 3.006823172533222, + "90.0" : 3.1026224342431763, + "95.0" : 3.1026224342431763, + "99.0" : 3.1026224342431763, + "99.9" : 3.1026224342431763, + "99.99" : 3.1026224342431763, + "99.999" : 3.1026224342431763, + "99.9999" : 3.1026224342431763, + "100.0" : 3.1026224342431763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.923244487434249, + 2.925148179532164, + 2.921180296728972 + ], + [ + 3.1026224342431763, + 3.100187218846869, + 3.0884981655342805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.729642674057592, + "scoreError" : 0.032059123252017076, + "scoreConfidence" : [ + 2.697583550805575, + 2.761701797309609 + ], + "scorePercentiles" : { + "0.0" : 2.715074183224756, + "50.0" : 2.7300454278271777, + "90.0" : 2.744416961855104, + "95.0" : 2.744416961855104, + "99.0" : 2.744416961855104, + "99.9" : 2.744416961855104, + "99.99" : 2.744416961855104, + "99.999" : 2.744416961855104, + "99.9999" : 2.744416961855104, + "100.0" : 2.744416961855104 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.723383799019608, + 2.715074183224756, + 2.7209697110990207 + ], + [ + 2.736707056634747, + 2.744416961855104, + 2.7373043325123154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17652233506429685, + "scoreError" : 5.489677945596517E-4, + "scoreConfidence" : [ + 0.1759733672697372, + 0.1770713028588565 + ], + "scorePercentiles" : { + "0.0" : 0.17617417544879588, + "50.0" : 0.17661149373378138, + "90.0" : 0.17668116913427562, + "95.0" : 0.17668116913427562, + "99.0" : 0.17668116913427562, + "99.9" : 0.17668116913427562, + "99.99" : 0.17668116913427562, + "99.999" : 0.17668116913427562, + "99.9999" : 0.17668116913427562, + "100.0" : 0.17668116913427562 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17668116913427562, + 0.17664823977672184, + 0.17662219117257458 + ], + [ + 0.17640743855842506, + 0.17660079629498818, + 0.17617417544879588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33086610210481754, + "scoreError" : 0.00474967351888446, + "scoreConfidence" : [ + 0.3261164285859331, + 0.335615775623702 + ], + "scorePercentiles" : { + "0.0" : 0.32928795719319043, + "50.0" : 0.3303980289258971, + "90.0" : 0.3329669544849171, + "95.0" : 0.3329669544849171, + "99.0" : 0.3329669544849171, + "99.9" : 0.3329669544849171, + "99.99" : 0.3329669544849171, + "99.999" : 0.3329669544849171, + "99.9999" : 0.3329669544849171, + "100.0" : 0.3329669544849171 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33117495919989404, + 0.33276241142020496, + 0.3329669544849171 + ], + [ + 0.32938323167879846, + 0.32928795719319043, + 0.3296210986519002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1451189023741535, + "scoreError" : 0.009012889054341095, + "scoreConfidence" : [ + 0.13610601331981242, + 0.1541317914284946 + ], + "scorePercentiles" : { + "0.0" : 0.14210293500348145, + "50.0" : 0.1451016025847538, + "90.0" : 0.1481631082598711, + "95.0" : 0.1481631082598711, + "99.0" : 0.1481631082598711, + "99.9" : 0.1481631082598711, + "99.99" : 0.1481631082598711, + "99.999" : 0.1481631082598711, + "99.9999" : 0.1481631082598711, + "100.0" : 0.1481631082598711 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14813388641346212, + 0.1481631082598711, + 0.14785349841800224 + ], + [ + 0.14234970675150532, + 0.14210293500348145, + 0.14211027939859883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40416547569483324, + "scoreError" : 0.004915244452317809, + "scoreConfidence" : [ + 0.3992502312425154, + 0.4090807201471511 + ], + "scorePercentiles" : { + "0.0" : 0.4025833841384863, + "50.0" : 0.403347456109614, + "90.0" : 0.40676451999186497, + "95.0" : 0.40676451999186497, + "99.0" : 0.40676451999186497, + "99.9" : 0.40676451999186497, + "99.99" : 0.40676451999186497, + "99.999" : 0.40676451999186497, + "99.9999" : 0.40676451999186497, + "100.0" : 0.40676451999186497 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40676451999186497, + 0.40356140423728815, + 0.40313350798193986 + ], + [ + 0.40597208484553243, + 0.40297795297388783, + 0.4025833841384863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15680901818471363, + "scoreError" : 0.005053863199666629, + "scoreConfidence" : [ + 0.151755154985047, + 0.16186288138438026 + ], + "scorePercentiles" : { + "0.0" : 0.15498692729724284, + "50.0" : 0.15690140180188056, + "90.0" : 0.15867090170567236, + "95.0" : 0.15867090170567236, + "99.0" : 0.15867090170567236, + "99.9" : 0.15867090170567236, + "99.99" : 0.15867090170567236, + "99.999" : 0.15867090170567236, + "99.9999" : 0.15867090170567236, + "100.0" : 0.15867090170567236 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15555055667377002, + 0.15499936303047213, + 0.15498692729724284 + ], + [ + 0.15825224692999112, + 0.15867090170567236, + 0.15839411347113327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0469541824718936, + "scoreError" : 5.165021932614059E-4, + "scoreConfidence" : [ + 0.04643768027863219, + 0.04747068466515501 + ], + "scorePercentiles" : { + "0.0" : 0.04678104134350002, + "50.0" : 0.04692366618671954, + "90.0" : 0.047218807647450456, + "95.0" : 0.047218807647450456, + "99.0" : 0.047218807647450456, + "99.9" : 0.047218807647450456, + "99.99" : 0.047218807647450456, + "99.999" : 0.047218807647450456, + "99.9999" : 0.047218807647450456, + "100.0" : 0.047218807647450456 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047218807647450456, + 0.04702844885252069, + 0.04708952211522614 + ], + [ + 0.04681888352091838, + 0.04678104134350002, + 0.04678839135174589 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8407284.231460277, + "scoreError" : 93734.80850280596, + "scoreConfidence" : [ + 8313549.422957471, + 8501019.039963083 + ], + "scorePercentiles" : { + "0.0" : 8370662.910460251, + "50.0" : 8405551.987879582, + "90.0" : 8442828.016033756, + "95.0" : 8442828.016033756, + "99.0" : 8442828.016033756, + "99.9" : 8442828.016033756, + "99.99" : 8442828.016033756, + "99.999" : 8442828.016033756, + "99.9999" : 8442828.016033756, + "100.0" : 8442828.016033756 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8439679.210126583, + 8442828.016033756, + 8429541.865206402 + ], + [ + 8381562.110552764, + 8370662.910460251, + 8379431.27638191 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-16T00:58:58Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json b/performance-results/2025-09-16T00:58:58Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json new file mode 100644 index 0000000000..431886e19f --- /dev/null +++ b/performance-results/2025-09-16T00:58:58Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3550449678177383, + "scoreError" : 0.023088513079917286, + "scoreConfidence" : [ + 3.331956454737821, + 3.3781334808976555 + ], + "scorePercentiles" : { + "0.0" : 3.350712348899915, + "50.0" : 3.3552118042551586, + "90.0" : 3.359043913860722, + "95.0" : 3.359043913860722, + "99.0" : 3.359043913860722, + "99.9" : 3.359043913860722, + "99.99" : 3.359043913860722, + "99.999" : 3.359043913860722, + "99.9999" : 3.359043913860722, + "100.0" : 3.359043913860722 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.350712348899915, + 3.359043913860722 + ], + [ + 3.3538927928243742, + 3.356530815685943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.703700700071189, + "scoreError" : 0.01957657445058494, + "scoreConfidence" : [ + 1.684124125620604, + 1.723277274521774 + ], + "scorePercentiles" : { + "0.0" : 1.7013826734137225, + "50.0" : 1.7026688592926011, + "90.0" : 1.7080824082858308, + "95.0" : 1.7080824082858308, + "99.0" : 1.7080824082858308, + "99.9" : 1.7080824082858308, + "99.99" : 1.7080824082858308, + "99.999" : 1.7080824082858308, + "99.9999" : 1.7080824082858308, + "100.0" : 1.7080824082858308 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7020240558009494, + 1.703313662784253 + ], + [ + 1.7013826734137225, + 1.7080824082858308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8573399039775881, + "scoreError" : 0.01749158541944735, + "scoreConfidence" : [ + 0.8398483185581407, + 0.8748314893970355 + ], + "scorePercentiles" : { + "0.0" : 0.8539934307109489, + "50.0" : 0.8575898420185514, + "90.0" : 0.8601865011623007, + "95.0" : 0.8601865011623007, + "99.0" : 0.8601865011623007, + "99.9" : 0.8601865011623007, + "99.99" : 0.8601865011623007, + "99.999" : 0.8601865011623007, + "99.9999" : 0.8601865011623007, + "100.0" : 0.8601865011623007 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8539934307109489, + 0.8564597873132151 + ], + [ + 0.8587198967238876, + 0.8601865011623007 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.451036717323344, + "scoreError" : 0.11004572043630732, + "scoreConfidence" : [ + 16.340990996887037, + 16.56108243775965 + ], + "scorePercentiles" : { + "0.0" : 16.402157620396196, + "50.0" : 16.445977458722616, + "90.0" : 16.505760419043106, + "95.0" : 16.505760419043106, + "99.0" : 16.505760419043106, + "99.9" : 16.505760419043106, + "99.99" : 16.505760419043106, + "99.999" : 16.505760419043106, + "99.9999" : 16.505760419043106, + "100.0" : 16.505760419043106 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.426984182281814, + 16.402157620396196, + 16.42547399861816 + ], + [ + 16.464970735163416, + 16.505760419043106, + 16.480873348437363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2762.2142120854023, + "scoreError" : 35.52146902776249, + "scoreConfidence" : [ + 2726.6927430576397, + 2797.735681113165 + ], + "scorePercentiles" : { + "0.0" : 2749.511600616329, + "50.0" : 2761.5504587299, + "90.0" : 2775.103563796102, + "95.0" : 2775.103563796102, + "99.0" : 2775.103563796102, + "99.9" : 2775.103563796102, + "99.99" : 2775.103563796102, + "99.999" : 2775.103563796102, + "99.9999" : 2775.103563796102, + "100.0" : 2775.103563796102 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2771.592763268247, + 2775.103563796102, + 2774.4375541740947 + ], + [ + 2751.131636466086, + 2751.5081541915533, + 2749.511600616329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77114.63909813233, + "scoreError" : 109.57309185044635, + "scoreConfidence" : [ + 77005.0660062819, + 77224.21218998278 + ], + "scorePercentiles" : { + "0.0" : 77066.0927702493, + "50.0" : 77127.63914907348, + "90.0" : 77152.59085435388, + "95.0" : 77152.59085435388, + "99.0" : 77152.59085435388, + "99.9" : 77152.59085435388, + "99.99" : 77152.59085435388, + "99.999" : 77152.59085435388, + "99.9999" : 77152.59085435388, + "100.0" : 77152.59085435388 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77113.79475111396, + 77066.0927702493, + 77068.2250715392 + ], + [ + 77152.59085435388, + 77145.64759450464, + 77141.483547033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 370.71452455056857, + "scoreError" : 9.13294739238112, + "scoreConfidence" : [ + 361.58157715818743, + 379.8474719429497 + ], + "scorePercentiles" : { + "0.0" : 367.58292213419594, + "50.0" : 370.509214731391, + "90.0" : 374.0681094966475, + "95.0" : 374.0681094966475, + "99.0" : 374.0681094966475, + "99.9" : 374.0681094966475, + "99.99" : 374.0681094966475, + "99.999" : 374.0681094966475, + "99.9999" : 374.0681094966475, + "100.0" : 374.0681094966475 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 373.07612984306036, + 374.0681094966475, + 373.866883544416 + ], + [ + 367.58292213419594, + 367.7508026653702, + 367.9422996197217 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.96901063647466, + "scoreError" : 0.4882902999085057, + "scoreConfidence" : [ + 114.48072033656616, + 115.45730093638316 + ], + "scorePercentiles" : { + "0.0" : 114.83549763592508, + "50.0" : 114.89491900916244, + "90.0" : 115.288016928934, + "95.0" : 115.288016928934, + "99.0" : 115.288016928934, + "99.9" : 115.288016928934, + "99.99" : 115.288016928934, + "99.999" : 115.288016928934, + "99.9999" : 115.288016928934, + "100.0" : 115.288016928934 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.90307142286534, + 114.83549763592508, + 114.84984251262325 + ], + [ + 115.288016928934, + 114.88676659545955, + 115.05086872304086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060371863591423665, + "scoreError" : 3.1126908674266457E-4, + "scoreConfidence" : [ + 0.060060594504681, + 0.06068313267816633 + ], + "scorePercentiles" : { + "0.0" : 0.06023596475038551, + "50.0" : 0.060363143690271126, + "90.0" : 0.060549442403288994, + "95.0" : 0.060549442403288994, + "99.0" : 0.060549442403288994, + "99.9" : 0.060549442403288994, + "99.99" : 0.060549442403288994, + "99.999" : 0.060549442403288994, + "99.9999" : 0.060549442403288994, + "100.0" : 0.060549442403288994 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06023596475038551, + 0.06028581103093218, + 0.060373776378466165 + ], + [ + 0.060352511002076094, + 0.060549442403288994, + 0.06043367598339306 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6576892854784586E-4, + "scoreError" : 1.2179376781158934E-5, + "scoreConfidence" : [ + 3.5358955176668694E-4, + 3.779483053290048E-4 + ], + "scorePercentiles" : { + "0.0" : 3.614166724071045E-4, + "50.0" : 3.657744911455902E-4, + "90.0" : 3.698686990401891E-4, + "95.0" : 3.698686990401891E-4, + "99.0" : 3.698686990401891E-4, + "99.9" : 3.698686990401891E-4, + "99.99" : 3.698686990401891E-4, + "99.999" : 3.698686990401891E-4, + "99.9999" : 3.698686990401891E-4, + "100.0" : 3.698686990401891E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6982354011258695E-4, + 3.6948861737635084E-4, + 3.698686990401891E-4 + ], + [ + 3.614166724071045E-4, + 3.6206036491482957E-4, + 3.61955677436014E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12241245175665555, + "scoreError" : 7.138693804545063E-4, + "scoreConfidence" : [ + 0.12169858237620104, + 0.12312632113711006 + ], + "scorePercentiles" : { + "0.0" : 0.12206150754320867, + "50.0" : 0.12246346430495153, + "90.0" : 0.12270866142708142, + "95.0" : 0.12270866142708142, + "99.0" : 0.12270866142708142, + "99.9" : 0.12270866142708142, + "99.99" : 0.12270866142708142, + "99.999" : 0.12270866142708142, + "99.9999" : 0.12270866142708142, + "100.0" : 0.12270866142708142 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12206150754320867, + 0.12218907419173529, + 0.12234721984193012 + ], + [ + 0.12257970876797293, + 0.12270866142708142, + 0.1225885387680049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013122014116494128, + "scoreError" : 4.0456715431769257E-4, + "scoreConfidence" : [ + 0.012717446962176436, + 0.01352658127081182 + ], + "scorePercentiles" : { + "0.0" : 0.012980473487115118, + "50.0" : 0.013122801917655502, + "90.0" : 0.013258719002533706, + "95.0" : 0.013258719002533706, + "99.0" : 0.013258719002533706, + "99.9" : 0.013258719002533706, + "99.99" : 0.013258719002533706, + "99.999" : 0.013258719002533706, + "99.9999" : 0.013258719002533706, + "100.0" : 0.013258719002533706 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012980473487115118, + 0.012990388756461002, + 0.013000674351697411 + ], + [ + 0.01325689961754393, + 0.013258719002533706, + 0.013244929483613593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9660182373169045, + "scoreError" : 0.021376572231093002, + "scoreConfidence" : [ + 0.9446416650858115, + 0.9873948095479975 + ], + "scorePercentiles" : { + "0.0" : 0.9580420342944727, + "50.0" : 0.9659752388028264, + "90.0" : 0.9743621377630554, + "95.0" : 0.9743621377630554, + "99.0" : 0.9743621377630554, + "99.9" : 0.9743621377630554, + "99.99" : 0.9743621377630554, + "99.999" : 0.9743621377630554, + "99.9999" : 0.9743621377630554, + "100.0" : 0.9743621377630554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9590697538122183, + 0.9602925449395046, + 0.9580420342944727 + ], + [ + 0.9716579326661484, + 0.9726850204260286, + 0.9743621377630554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010696727219903194, + "scoreError" : 0.0016455761339107344, + "scoreConfidence" : [ + 0.00905115108599246, + 0.012342303353813928 + ], + "scorePercentiles" : { + "0.0" : 0.010156158698336868, + "50.0" : 0.01069767036841036, + "90.0" : 0.011236189171333292, + "95.0" : 0.011236189171333292, + "99.0" : 0.011236189171333292, + "99.9" : 0.011236189171333292, + "99.99" : 0.011236189171333292, + "99.999" : 0.011236189171333292, + "99.9999" : 0.011236189171333292, + "100.0" : 0.011236189171333292 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011226767841105044, + 0.011236189171333292, + 0.011234256215764429 + ], + [ + 0.010158418497163847, + 0.010168572895715678, + 0.010156158698336868 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.9394150388445976, + "scoreError" : 0.008464426809669977, + "scoreConfidence" : [ + 2.930950612034928, + 2.9478794656542675 + ], + "scorePercentiles" : { + "0.0" : 2.936533395772167, + "50.0" : 2.939048057981333, + "90.0" : 2.9437703625662155, + "95.0" : 2.9437703625662155, + "99.0" : 2.9437703625662155, + "99.9" : 2.9437703625662155, + "99.99" : 2.9437703625662155, + "99.999" : 2.9437703625662155, + "99.9999" : 2.9437703625662155, + "100.0" : 2.9437703625662155 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9406712422104646, + 2.9415423264705884, + 2.936533395772167 + ], + [ + 2.9437703625662155, + 2.937424873752202, + 2.9365480322959483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.718082292105174, + "scoreError" : 0.17661847039226802, + "scoreConfidence" : [ + 2.541463821712906, + 2.8947007624974423 + ], + "scorePercentiles" : { + "0.0" : 2.6564675960159363, + "50.0" : 2.7180359866688555, + "90.0" : 2.7809428809788654, + "95.0" : 2.7809428809788654, + "99.0" : 2.7809428809788654, + "99.9" : 2.7809428809788654, + "99.99" : 2.7809428809788654, + "99.999" : 2.7809428809788654, + "99.9999" : 2.7809428809788654, + "100.0" : 2.7809428809788654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7809428809788654, + 2.7754469614317423, + 2.7698623356410965 + ], + [ + 2.6662096376966145, + 2.659564340866791, + 2.6564675960159363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17673625046473904, + "scoreError" : 0.006344659052973811, + "scoreConfidence" : [ + 0.17039159141176521, + 0.18308090951771286 + ], + "scorePercentiles" : { + "0.0" : 0.17411400168886568, + "50.0" : 0.17704545643031896, + "90.0" : 0.17901901213726928, + "95.0" : 0.17901901213726928, + "99.0" : 0.17901901213726928, + "99.9" : 0.17901901213726928, + "99.99" : 0.17901901213726928, + "99.999" : 0.17901901213726928, + "99.9999" : 0.17901901213726928, + "100.0" : 0.17901901213726928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17550981492856893, + 0.17452768905099297, + 0.17411400168886568 + ], + [ + 0.17901901213726928, + 0.1786658870506682, + 0.178581097932069 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3321955513740942, + "scoreError" : 0.016770376234733375, + "scoreConfidence" : [ + 0.3154251751393608, + 0.34896592760882755 + ], + "scorePercentiles" : { + "0.0" : 0.32670429153871283, + "50.0" : 0.33133186169618795, + "90.0" : 0.3386654079379593, + "95.0" : 0.3386654079379593, + "99.0" : 0.3386654079379593, + "99.9" : 0.3386654079379593, + "99.99" : 0.3386654079379593, + "99.999" : 0.3386654079379593, + "99.9999" : 0.3386654079379593, + "100.0" : 0.3386654079379593 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3268085365359477, + 0.32670429153871283, + 0.32693540113770103 + ], + [ + 0.33833134883956967, + 0.33572832225467486, + 0.3386654079379593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15057335959732468, + "scoreError" : 7.745994907699496E-4, + "scoreConfidence" : [ + 0.14979876010655474, + 0.15134795908809462 + ], + "scorePercentiles" : { + "0.0" : 0.15023308077818673, + "50.0" : 0.15056329840004645, + "90.0" : 0.15090615155127662, + "95.0" : 0.15090615155127662, + "99.0" : 0.15090615155127662, + "99.9" : 0.15090615155127662, + "99.99" : 0.15090615155127662, + "99.999" : 0.15090615155127662, + "99.9999" : 0.15090615155127662, + "100.0" : 0.15090615155127662 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15023308077818673, + 0.150333052389471, + 0.15045094923873142 + ], + [ + 0.15090615155127662, + 0.15084127606492095, + 0.15067564756136148 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40769737749400997, + "scoreError" : 0.013650682757160953, + "scoreConfidence" : [ + 0.394046694736849, + 0.42134806025117094 + ], + "scorePercentiles" : { + "0.0" : 0.4003315270616493, + "50.0" : 0.4077598938190644, + "90.0" : 0.4149509201659751, + "95.0" : 0.4149509201659751, + "99.0" : 0.4149509201659751, + "99.9" : 0.4149509201659751, + "99.99" : 0.4149509201659751, + "99.999" : 0.4149509201659751, + "99.9999" : 0.4149509201659751, + "100.0" : 0.4149509201659751 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40715925735922803, + 0.4053579532225375, + 0.4003315270616493 + ], + [ + 0.4149509201659751, + 0.41002407687576875, + 0.40836053027890074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15321770845192786, + "scoreError" : 0.004433040820125156, + "scoreConfidence" : [ + 0.1487846676318027, + 0.15765074927205303 + ], + "scorePercentiles" : { + "0.0" : 0.15157169904663748, + "50.0" : 0.1532523023523888, + "90.0" : 0.15473707255481456, + "95.0" : 0.15473707255481456, + "99.0" : 0.15473707255481456, + "99.9" : 0.15473707255481456, + "99.99" : 0.15473707255481456, + "99.999" : 0.15473707255481456, + "99.9999" : 0.15473707255481456, + "100.0" : 0.15473707255481456 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15473707255481456, + 0.15457073535094362, + 0.1546601702315223 + ], + [ + 0.15157169904663748, + 0.151933869353834, + 0.15183270417381534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04701340447310221, + "scoreError" : 0.0020515380375950238, + "scoreConfidence" : [ + 0.04496186643550719, + 0.049064942510697235 + ], + "scorePercentiles" : { + "0.0" : 0.04616091880389225, + "50.0" : 0.04716541850962565, + "90.0" : 0.04783490022290678, + "95.0" : 0.04783490022290678, + "99.0" : 0.04783490022290678, + "99.9" : 0.04783490022290678, + "99.99" : 0.04783490022290678, + "99.999" : 0.04783490022290678, + "99.9999" : 0.04783490022290678, + "100.0" : 0.04783490022290678 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046806734661686514, + 0.046193587113075855, + 0.04616091880389225 + ], + [ + 0.04783490022290678, + 0.04756018367948712, + 0.04752410235756478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8785675.387501236, + "scoreError" : 268140.73586703517, + "scoreConfidence" : [ + 8517534.651634201, + 9053816.12336827 + ], + "scorePercentiles" : { + "0.0" : 8699600.56, + "50.0" : 8754870.360699706, + "90.0" : 8921447.0, + "95.0" : 8921447.0, + "99.0" : 8921447.0, + "99.9" : 8921447.0, + "99.99" : 8921447.0, + "99.999" : 8921447.0, + "99.9999" : 8921447.0, + "100.0" : 8921447.0 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8881239.006216696, + 8921447.0, + 8785258.930640914 + ], + [ + 8699600.56, + 8724481.7907585, + 8702025.037391305 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-16T00:59:16Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json b/performance-results/2025-09-16T00:59:16Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json new file mode 100644 index 0000000000..e8d558c60c --- /dev/null +++ b/performance-results/2025-09-16T00:59:16Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3396823239955404, + "scoreError" : 0.05046504018688131, + "scoreConfidence" : [ + 3.289217283808659, + 3.390147364182422 + ], + "scorePercentiles" : { + "0.0" : 3.3296816985090474, + "50.0" : 3.340170671453315, + "90.0" : 3.3487062545664847, + "95.0" : 3.3487062545664847, + "99.0" : 3.3487062545664847, + "99.9" : 3.3487062545664847, + "99.99" : 3.3487062545664847, + "99.999" : 3.3487062545664847, + "99.9999" : 3.3487062545664847, + "100.0" : 3.3487062545664847 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3408935294089113, + 3.339447813497718 + ], + [ + 3.3296816985090474, + 3.3487062545664847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.685645028683013, + "scoreError" : 0.03326865373846976, + "scoreConfidence" : [ + 1.6523763749445433, + 1.7189136824214826 + ], + "scorePercentiles" : { + "0.0" : 1.6780804897663881, + "50.0" : 1.6875389194790769, + "90.0" : 1.6894217860075103, + "95.0" : 1.6894217860075103, + "99.0" : 1.6894217860075103, + "99.9" : 1.6894217860075103, + "99.99" : 1.6894217860075103, + "99.999" : 1.6894217860075103, + "99.9999" : 1.6894217860075103, + "100.0" : 1.6894217860075103 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6780804897663881, + 1.686884292442754 + ], + [ + 1.6894217860075103, + 1.6881935465153994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.846339044795851, + "scoreError" : 0.027499076332370538, + "scoreConfidence" : [ + 0.8188399684634804, + 0.8738381211282216 + ], + "scorePercentiles" : { + "0.0" : 0.8428882540177971, + "50.0" : 0.8451067328786906, + "90.0" : 0.8522544594082252, + "95.0" : 0.8522544594082252, + "99.0" : 0.8522544594082252, + "99.9" : 0.8522544594082252, + "99.99" : 0.8522544594082252, + "99.999" : 0.8522544594082252, + "99.9999" : 0.8522544594082252, + "100.0" : 0.8522544594082252 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8428882540177971, + 0.8522544594082252 + ], + [ + 0.843625029869833, + 0.8465884358875483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.14727833488808, + "scoreError" : 0.31694168081424867, + "scoreConfidence" : [ + 15.830336654073832, + 16.46422001570233 + ], + "scorePercentiles" : { + "0.0" : 16.028544615595784, + "50.0" : 16.097451904218943, + "90.0" : 16.3036936545558, + "95.0" : 16.3036936545558, + "99.0" : 16.3036936545558, + "99.9" : 16.3036936545558, + "99.99" : 16.3036936545558, + "99.999" : 16.3036936545558, + "99.9999" : 16.3036936545558, + "100.0" : 16.3036936545558 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.27386266849639, + 16.08266526224263, + 16.3036936545558 + ], + [ + 16.028544615595784, + 16.088925431941277, + 16.105978376496605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2697.4020232576963, + "scoreError" : 128.73326398214346, + "scoreConfidence" : [ + 2568.668759275553, + 2826.1352872398397 + ], + "scorePercentiles" : { + "0.0" : 2629.649932782624, + "50.0" : 2694.9133619076874, + "90.0" : 2758.9758354550722, + "95.0" : 2758.9758354550722, + "99.0" : 2758.9758354550722, + "99.9" : 2758.9758354550722, + "99.99" : 2758.9758354550722, + "99.999" : 2758.9758354550722, + "99.9999" : 2758.9758354550722, + "100.0" : 2758.9758354550722 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2689.513822656626, + 2671.176505137815, + 2629.649932782624 + ], + [ + 2758.9758354550722, + 2734.783142355294, + 2700.3129011587484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74282.38663578841, + "scoreError" : 3066.4847797686316, + "scoreConfidence" : [ + 71215.90185601977, + 77348.87141555705 + ], + "scorePercentiles" : { + "0.0" : 73233.20318619379, + "50.0" : 74316.13999017303, + "90.0" : 75299.46466769963, + "95.0" : 75299.46466769963, + "99.0" : 75299.46466769963, + "99.9" : 75299.46466769963, + "99.99" : 75299.46466769963, + "99.999" : 75299.46466769963, + "99.9999" : 75299.46466769963, + "100.0" : 75299.46466769963 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73233.20318619379, + 73240.82268178622, + 73382.22459408993 + ], + [ + 75299.46466769963, + 75250.05538625614, + 75288.54929870475 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.8467196504794, + "scoreError" : 3.6656781513250905, + "scoreConfidence" : [ + 354.1810414991543, + 361.51239780180447 + ], + "scorePercentiles" : { + "0.0" : 356.2544578551256, + "50.0" : 357.5220461321448, + "90.0" : 359.44765277565193, + "95.0" : 359.44765277565193, + "99.0" : 359.44765277565193, + "99.9" : 359.44765277565193, + "99.99" : 359.44765277565193, + "99.999" : 359.44765277565193, + "99.9999" : 359.44765277565193, + "100.0" : 359.44765277565193 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.2544578551256, + 357.00824145617435, + 357.93678578648525 + ], + [ + 359.44765277565193, + 357.10730647780434, + 359.3258735516348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.95257955609581, + "scoreError" : 0.8364592141112309, + "scoreConfidence" : [ + 114.11612034198458, + 115.78903877020704 + ], + "scorePercentiles" : { + "0.0" : 114.41632651662084, + "50.0" : 115.04001913490035, + "90.0" : 115.23315648397535, + "95.0" : 115.23315648397535, + "99.0" : 115.23315648397535, + "99.9" : 115.23315648397535, + "99.99" : 115.23315648397535, + "99.999" : 115.23315648397535, + "99.9999" : 115.23315648397535, + "100.0" : 115.23315648397535 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.81976580773376, + 115.03603465006977, + 114.41632651662084 + ], + [ + 115.04400361973093, + 115.23315648397535, + 115.16619025844416 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062215257634550734, + "scoreError" : 0.001265951070212804, + "scoreConfidence" : [ + 0.06094930656433793, + 0.06348120870476354 + ], + "scorePercentiles" : { + "0.0" : 0.06140721922628185, + "50.0" : 0.06236823656829643, + "90.0" : 0.06259354630922054, + "95.0" : 0.06259354630922054, + "99.0" : 0.06259354630922054, + "99.9" : 0.06259354630922054, + "99.99" : 0.06259354630922054, + "99.999" : 0.06259354630922054, + "99.9999" : 0.06259354630922054, + "100.0" : 0.06259354630922054 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06227581139383975, + 0.06255234126691228, + 0.062001965868296885 + ], + [ + 0.0624606617427531, + 0.06259354630922054, + 0.06140721922628185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.702551438027938E-4, + "scoreError" : 2.1678190667416058E-5, + "scoreConfidence" : [ + 3.485769531353777E-4, + 3.9193333447020985E-4 + ], + "scorePercentiles" : { + "0.0" : 3.60873784563828E-4, + "50.0" : 3.6946714369642564E-4, + "90.0" : 3.7904443770764507E-4, + "95.0" : 3.7904443770764507E-4, + "99.0" : 3.7904443770764507E-4, + "99.9" : 3.7904443770764507E-4, + "99.99" : 3.7904443770764507E-4, + "99.999" : 3.7904443770764507E-4, + "99.9999" : 3.7904443770764507E-4, + "100.0" : 3.7904443770764507E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.784885923029374E-4, + 3.73190908653602E-4, + 3.7904443770764507E-4 + ], + [ + 3.60873784563828E-4, + 3.64189760849501E-4, + 3.657433787392493E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12397908556326975, + "scoreError" : 0.004098085652230355, + "scoreConfidence" : [ + 0.1198809999110394, + 0.1280771712155001 + ], + "scorePercentiles" : { + "0.0" : 0.12243185160381978, + "50.0" : 0.1239494325147955, + "90.0" : 0.1255939366012333, + "95.0" : 0.1255939366012333, + "99.0" : 0.1255939366012333, + "99.9" : 0.1255939366012333, + "99.99" : 0.1255939366012333, + "99.999" : 0.1255939366012333, + "99.9999" : 0.1255939366012333, + "100.0" : 0.1255939366012333 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1248778289357026, + 0.1255939366012333, + 0.1253805235145877 + ], + [ + 0.12256933663038683, + 0.1230210360938884, + 0.12243185160381978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013113840469039463, + "scoreError" : 1.2299106511551013E-4, + "scoreConfidence" : [ + 0.012990849403923954, + 0.013236831534154973 + ], + "scorePercentiles" : { + "0.0" : 0.013055917546514315, + "50.0" : 0.013102937535531088, + "90.0" : 0.01317625580736544, + "95.0" : 0.01317625580736544, + "99.0" : 0.01317625580736544, + "99.9" : 0.01317625580736544, + "99.99" : 0.01317625580736544, + "99.999" : 0.01317625580736544, + "99.9999" : 0.01317625580736544, + "100.0" : 0.01317625580736544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013104913892722024, + 0.013091094706168043, + 0.013153899683126798 + ], + [ + 0.01317625580736544, + 0.013055917546514315, + 0.013100961178340153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9838195200849307, + "scoreError" : 0.033871023394463205, + "scoreConfidence" : [ + 0.9499484966904674, + 1.017690543479394 + ], + "scorePercentiles" : { + "0.0" : 0.9695870314136126, + "50.0" : 0.9848259598996902, + "90.0" : 0.9966390579031293, + "95.0" : 0.9966390579031293, + "99.0" : 0.9966390579031293, + "99.9" : 0.9966390579031293, + "99.99" : 0.9966390579031293, + "99.999" : 0.9966390579031293, + "99.9999" : 0.9966390579031293, + "100.0" : 0.9966390579031293 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9762672281335416, + 0.9695870314136126, + 0.9731787356232363 + ], + [ + 0.9966390579031293, + 0.9938603757702246, + 0.9933846916658389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01066327489026221, + "scoreError" : 8.300908076620776E-4, + "scoreConfidence" : [ + 0.009833184082600132, + 0.011493365697924288 + ], + "scorePercentiles" : { + "0.0" : 0.010373916702109782, + "50.0" : 0.010619239386234498, + "90.0" : 0.011077930709258041, + "95.0" : 0.011077930709258041, + "99.0" : 0.011077930709258041, + "99.9" : 0.011077930709258041, + "99.99" : 0.011077930709258041, + "99.999" : 0.011077930709258041, + "99.9999" : 0.011077930709258041, + "100.0" : 0.011077930709258041 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010902821588371768, + 0.011077930709258041, + 0.010768575331933452 + ], + [ + 0.010373916702109782, + 0.010469903440535543, + 0.010386501569364673 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.112003459184257, + "scoreError" : 0.6079393498961505, + "scoreConfidence" : [ + 2.504064109288106, + 3.7199428090804076 + ], + "scorePercentiles" : { + "0.0" : 2.8907546849710983, + "50.0" : 3.1292498949334036, + "90.0" : 3.3149736335321407, + "95.0" : 3.3149736335321407, + "99.0" : 3.3149736335321407, + "99.9" : 3.3149736335321407, + "99.99" : 3.3149736335321407, + "99.999" : 3.3149736335321407, + "99.9999" : 3.3149736335321407, + "100.0" : 3.3149736335321407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9612455393724098, + 2.8907546849710983, + 2.894516777199074 + ], + [ + 3.297254250494397, + 3.3149736335321407, + 3.3132758695364237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8207545568395553, + "scoreError" : 0.11667399366708205, + "scoreConfidence" : [ + 2.7040805631724734, + 2.9374285505066373 + ], + "scorePercentiles" : { + "0.0" : 2.762481432320442, + "50.0" : 2.8234998655820007, + "90.0" : 2.867837217665615, + "95.0" : 2.867837217665615, + "99.0" : 2.867837217665615, + "99.9" : 2.867837217665615, + "99.99" : 2.867837217665615, + "99.999" : 2.867837217665615, + "99.9999" : 2.867837217665615, + "100.0" : 2.867837217665615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8584534615604458, + 2.8405730434535643, + 2.867837217665615 + ], + [ + 2.8064266877104376, + 2.7887554983268266, + 2.762481432320442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18638368530268346, + "scoreError" : 0.0055880202496070815, + "scoreConfidence" : [ + 0.18079566505307637, + 0.19197170555229054 + ], + "scorePercentiles" : { + "0.0" : 0.18364413492121792, + "50.0" : 0.18695337587567679, + "90.0" : 0.18823122295631223, + "95.0" : 0.18823122295631223, + "99.0" : 0.18823122295631223, + "99.9" : 0.18823122295631223, + "99.99" : 0.18823122295631223, + "99.999" : 0.18823122295631223, + "99.9999" : 0.18823122295631223, + "100.0" : 0.18823122295631223 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18364413492121792, + 0.18450805802583026, + 0.1859242331604291 + ], + [ + 0.18801194416138675, + 0.18823122295631223, + 0.18798251859092446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3254067043321544, + "scoreError" : 0.0061391009779280985, + "scoreConfidence" : [ + 0.3192676033542263, + 0.3315458053100825 + ], + "scorePercentiles" : { + "0.0" : 0.32295087608590345, + "50.0" : 0.325256886210932, + "90.0" : 0.32801790635352773, + "95.0" : 0.32801790635352773, + "99.0" : 0.32801790635352773, + "99.9" : 0.32801790635352773, + "99.99" : 0.32801790635352773, + "99.999" : 0.32801790635352773, + "99.9999" : 0.32801790635352773, + "100.0" : 0.32801790635352773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3276230183462194, + 0.3262224295221008, + 0.32801790635352773 + ], + [ + 0.32333465278541174, + 0.32429134289976325, + 0.32295087608590345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14446823374864848, + "scoreError" : 0.0021403571150723885, + "scoreConfidence" : [ + 0.1423278766335761, + 0.14660859086372086 + ], + "scorePercentiles" : { + "0.0" : 0.14374948436758808, + "50.0" : 0.14419529004207776, + "90.0" : 0.14591659226077566, + "95.0" : 0.14591659226077566, + "99.0" : 0.14591659226077566, + "99.9" : 0.14591659226077566, + "99.99" : 0.14591659226077566, + "99.999" : 0.14591659226077566, + "99.9999" : 0.14591659226077566, + "100.0" : 0.14591659226077566 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14423956228184048, + 0.14374948436758808, + 0.1441226171184804 + ], + [ + 0.14591659226077566, + 0.144151017802315, + 0.1446301286608912 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40163718657722763, + "scoreError" : 0.011186819812014649, + "scoreConfidence" : [ + 0.390450366765213, + 0.41282400638924227 + ], + "scorePercentiles" : { + "0.0" : 0.39663524792765636, + "50.0" : 0.402094487659547, + "90.0" : 0.40641478151670324, + "95.0" : 0.40641478151670324, + "99.0" : 0.40641478151670324, + "99.9" : 0.40641478151670324, + "99.99" : 0.40641478151670324, + "99.999" : 0.40641478151670324, + "99.9999" : 0.40641478151670324, + "100.0" : 0.40641478151670324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40641478151670324, + 0.40458530015778615, + 0.404260301693819 + ], + [ + 0.39663524792765636, + 0.397998814542126, + 0.39992867362527496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1570335688170079, + "scoreError" : 0.003486444475015119, + "scoreConfidence" : [ + 0.15354712434199277, + 0.160520013292023 + ], + "scorePercentiles" : { + "0.0" : 0.15588541739021994, + "50.0" : 0.1567182133609804, + "90.0" : 0.1592927673744405, + "95.0" : 0.1592927673744405, + "99.0" : 0.1592927673744405, + "99.9" : 0.1592927673744405, + "99.99" : 0.1592927673744405, + "99.999" : 0.1592927673744405, + "99.9999" : 0.1592927673744405, + "100.0" : 0.1592927673744405 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15630531289954516, + 0.15588541739021994, + 0.15622265226832469 + ], + [ + 0.1592927673744405, + 0.15713111382241565, + 0.1573641491471014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0476145327037237, + "scoreError" : 0.001935070857659329, + "scoreConfidence" : [ + 0.04567946184606437, + 0.04954960356138303 + ], + "scorePercentiles" : { + "0.0" : 0.04678782224031291, + "50.0" : 0.04779397925641198, + "90.0" : 0.048259524307968496, + "95.0" : 0.048259524307968496, + "99.0" : 0.048259524307968496, + "99.9" : 0.048259524307968496, + "99.99" : 0.048259524307968496, + "99.999" : 0.048259524307968496, + "99.9999" : 0.048259524307968496, + "100.0" : 0.048259524307968496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04819725341713096, + 0.048259524307968496, + 0.048181327691373725 + ], + [ + 0.04740663082145024, + 0.04678782224031291, + 0.04685463774410585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8841695.396501116, + "scoreError" : 316967.82965096884, + "scoreConfidence" : [ + 8524727.566850148, + 9158663.226152085 + ], + "scorePercentiles" : { + "0.0" : 8731610.221640488, + "50.0" : 8805257.730112758, + "90.0" : 9054428.724231465, + "95.0" : 9054428.724231465, + "99.0" : 9054428.724231465, + "99.9" : 9054428.724231465, + "99.99" : 9054428.724231465, + "99.999" : 9054428.724231465, + "99.9999" : 9054428.724231465, + "100.0" : 9054428.724231465 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9054428.724231465, + 8867938.558510639, + 8808936.27640845 + ], + [ + 8731610.221640488, + 8785679.414398596, + 8801579.183817063 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-16T00:59:40Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json b/performance-results/2025-09-16T00:59:40Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json new file mode 100644 index 0000000000..ca6ed9728c --- /dev/null +++ b/performance-results/2025-09-16T00:59:40Z-d5930735f094a27ffab6f6f92e364e432c72c8d8-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3513732215583074, + "scoreError" : 0.04329533128760706, + "scoreConfidence" : [ + 3.3080778902707, + 3.3946685528459146 + ], + "scorePercentiles" : { + "0.0" : 3.3450462120357662, + "50.0" : 3.34993514170585, + "90.0" : 3.360576390785763, + "95.0" : 3.360576390785763, + "99.0" : 3.360576390785763, + "99.9" : 3.360576390785763, + "99.99" : 3.360576390785763, + "99.999" : 3.360576390785763, + "99.9999" : 3.360576390785763, + "100.0" : 3.360576390785763 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3450462120357662, + 3.360576390785763 + ], + [ + 3.348231542999079, + 3.351638740412621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6875759630004368, + "scoreError" : 0.029351828960631005, + "scoreConfidence" : [ + 1.6582241340398058, + 1.7169277919610677 + ], + "scorePercentiles" : { + "0.0" : 1.682027042664517, + "50.0" : 1.6880972764594329, + "90.0" : 1.6920822564183642, + "95.0" : 1.6920822564183642, + "99.0" : 1.6920822564183642, + "99.9" : 1.6920822564183642, + "99.99" : 1.6920822564183642, + "99.999" : 1.6920822564183642, + "99.9999" : 1.6920822564183642, + "100.0" : 1.6920822564183642 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6920822564183642, + 1.6903616498283525 + ], + [ + 1.682027042664517, + 1.6858329030905133 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8544711364734848, + "scoreError" : 0.02021196113868611, + "scoreConfidence" : [ + 0.8342591753347988, + 0.8746830976121709 + ], + "scorePercentiles" : { + "0.0" : 0.852189633376588, + "50.0" : 0.8534023271753635, + "90.0" : 0.8588902581666242, + "95.0" : 0.8588902581666242, + "99.0" : 0.8588902581666242, + "99.9" : 0.8588902581666242, + "99.99" : 0.8588902581666242, + "99.999" : 0.8588902581666242, + "99.9999" : 0.8588902581666242, + "100.0" : 0.8588902581666242 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.852189633376588, + 0.8588902581666242 + ], + [ + 0.8523226889597889, + 0.854481965390938 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.406256392178186, + "scoreError" : 0.516332672381059, + "scoreConfidence" : [ + 15.889923719797126, + 16.922589064559244 + ], + "scorePercentiles" : { + "0.0" : 16.227222090971747, + "50.0" : 16.40953911127422, + "90.0" : 16.58082036416752, + "95.0" : 16.58082036416752, + "99.0" : 16.58082036416752, + "99.9" : 16.58082036416752, + "99.99" : 16.58082036416752, + "99.999" : 16.58082036416752, + "99.9999" : 16.58082036416752, + "100.0" : 16.58082036416752 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.227222090971747, + 16.234592495932553, + 16.25341681996943 + ], + [ + 16.58082036416752, + 16.565661402579007, + 16.575825179448856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2790.794542202578, + "scoreError" : 205.75365189926077, + "scoreConfidence" : [ + 2585.0408903033176, + 2996.548194101839 + ], + "scorePercentiles" : { + "0.0" : 2719.1311592554384, + "50.0" : 2792.2965330302313, + "90.0" : 2857.8104575461466, + "95.0" : 2857.8104575461466, + "99.0" : 2857.8104575461466, + "99.9" : 2857.8104575461466, + "99.99" : 2857.8104575461466, + "99.999" : 2857.8104575461466, + "99.9999" : 2857.8104575461466, + "100.0" : 2857.8104575461466 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2725.5252434470494, + 2719.1311592554384, + 2726.9136721325312 + ], + [ + 2857.6793939279314, + 2857.8104575461466, + 2857.7073269063694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77367.53185838963, + "scoreError" : 1854.9656299200128, + "scoreConfidence" : [ + 75512.56622846962, + 79222.49748830964 + ], + "scorePercentiles" : { + "0.0" : 76728.84795612744, + "50.0" : 77381.47001218217, + "90.0" : 78008.60719901838, + "95.0" : 78008.60719901838, + "99.0" : 78008.60719901838, + "99.9" : 78008.60719901838, + "99.99" : 78008.60719901838, + "99.999" : 78008.60719901838, + "99.9999" : 78008.60719901838, + "100.0" : 78008.60719901838 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76728.84795612744, + 76741.55923091536, + 76823.83537687585 + ], + [ + 77939.10464748846, + 77963.23673991232, + 78008.60719901838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 370.00153933618486, + "scoreError" : 12.537266739357735, + "scoreConfidence" : [ + 357.46427259682713, + 382.5388060755426 + ], + "scorePercentiles" : { + "0.0" : 365.4982943978104, + "50.0" : 369.97779722994096, + "90.0" : 374.3559521556015, + "95.0" : 374.3559521556015, + "99.0" : 374.3559521556015, + "99.9" : 374.3559521556015, + "99.99" : 374.3559521556015, + "99.999" : 374.3559521556015, + "99.9999" : 374.3559521556015, + "100.0" : 374.3559521556015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 365.4982943978104, + 366.01715329841096, + 366.279802672377 + ], + [ + 374.3559521556015, + 374.18224170540446, + 373.67579178750486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.41140564861185, + "scoreError" : 3.859802086029224, + "scoreConfidence" : [ + 112.55160356258263, + 120.27120773464107 + ], + "scorePercentiles" : { + "0.0" : 114.85851580326698, + "50.0" : 116.4262762783896, + "90.0" : 117.8520412667565, + "95.0" : 117.8520412667565, + "99.0" : 117.8520412667565, + "99.9" : 117.8520412667565, + "99.99" : 117.8520412667565, + "99.999" : 117.8520412667565, + "99.9999" : 117.8520412667565, + "100.0" : 117.8520412667565 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.85851580326698, + 115.19520699238602, + 115.47237899539707 + ], + [ + 117.8520412667565, + 117.38017356138211, + 117.71011727248245 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06104651406060898, + "scoreError" : 6.400536445089513E-4, + "scoreConfidence" : [ + 0.060406460416100025, + 0.061686567705117934 + ], + "scorePercentiles" : { + "0.0" : 0.06080608401435, + "50.0" : 0.06100865473787888, + "90.0" : 0.06136843745742637, + "95.0" : 0.06136843745742637, + "99.0" : 0.06136843745742637, + "99.9" : 0.06136843745742637, + "99.99" : 0.06136843745742637, + "99.999" : 0.06136843745742637, + "99.9999" : 0.06136843745742637, + "100.0" : 0.06136843745742637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06080608401435, + 0.060848982201966606, + 0.060907681657885925 + ], + [ + 0.06110962781787183, + 0.06136843745742637, + 0.06123827121415318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.604555239205474E-4, + "scoreError" : 1.66167705428401E-6, + "scoreConfidence" : [ + 3.5879384686626336E-4, + 3.621172009748314E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5991789993936903E-4, + "50.0" : 3.601869040584312E-4, + "90.0" : 3.614226724555774E-4, + "95.0" : 3.614226724555774E-4, + "99.0" : 3.614226724555774E-4, + "99.9" : 3.614226724555774E-4, + "99.99" : 3.614226724555774E-4, + "99.999" : 3.614226724555774E-4, + "99.9999" : 3.614226724555774E-4, + "100.0" : 3.614226724555774E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.614226724555774E-4, + 3.609350589642829E-4, + 3.602837630229284E-4 + ], + [ + 3.6009004509393404E-4, + 3.6008370404719286E-4, + 3.5991789993936903E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.1240227049512289, + "scoreError" : 0.0010728537874539956, + "scoreConfidence" : [ + 0.12294985116377491, + 0.1250955587386829 + ], + "scorePercentiles" : { + "0.0" : 0.12351980975790514, + "50.0" : 0.12410367244722964, + "90.0" : 0.12440119361098671, + "95.0" : 0.12440119361098671, + "99.0" : 0.12440119361098671, + "99.9" : 0.12440119361098671, + "99.99" : 0.12440119361098671, + "99.999" : 0.12440119361098671, + "99.9999" : 0.12440119361098671, + "100.0" : 0.12440119361098671 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12440119361098671, + 0.12432500437614999, + 0.12433855017593594 + ], + [ + 0.1238823405183093, + 0.12351980975790514, + 0.12366933126808637 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013119273161628411, + "scoreError" : 4.116480417793642E-4, + "scoreConfidence" : [ + 0.012707625119849048, + 0.013530921203407775 + ], + "scorePercentiles" : { + "0.0" : 0.012979875252292536, + "50.0" : 0.013113079751351026, + "90.0" : 0.013265673457719528, + "95.0" : 0.013265673457719528, + "99.0" : 0.013265673457719528, + "99.9" : 0.013265673457719528, + "99.99" : 0.013265673457719528, + "99.999" : 0.013265673457719528, + "99.9999" : 0.013265673457719528, + "100.0" : 0.013265673457719528 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013258037430943071, + 0.013265673457719528, + 0.013235064416909968 + ], + [ + 0.012991095085792083, + 0.012979875252292536, + 0.012985893326113267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9746988448511705, + "scoreError" : 0.03492745536145124, + "scoreConfidence" : [ + 0.9397713894897193, + 1.0096263002126218 + ], + "scorePercentiles" : { + "0.0" : 0.9631206886556241, + "50.0" : 0.9739622614443544, + "90.0" : 0.9886826281759763, + "95.0" : 0.9886826281759763, + "99.0" : 0.9886826281759763, + "99.9" : 0.9886826281759763, + "99.99" : 0.9886826281759763, + "99.999" : 0.9886826281759763, + "99.9999" : 0.9886826281759763, + "100.0" : 0.9886826281759763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9631206886556241, + 0.9635264435880143, + 0.9635861025146931 + ], + [ + 0.9886826281759763, + 0.9849387857987, + 0.9843384203740158 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010564458236843223, + "scoreError" : 8.613505510968865E-4, + "scoreConfidence" : [ + 0.009703107685746335, + 0.01142580878794011 + ], + "scorePercentiles" : { + "0.0" : 0.010278222846665214, + "50.0" : 0.010564007460520504, + "90.0" : 0.010847722520165403, + "95.0" : 0.010847722520165403, + "99.0" : 0.010847722520165403, + "99.9" : 0.010847722520165403, + "99.99" : 0.010847722520165403, + "99.999" : 0.010847722520165403, + "99.9999" : 0.010847722520165403, + "100.0" : 0.010847722520165403 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010278222846665214, + 0.010286831047316133, + 0.010287181086875121 + ], + [ + 0.010840833834165887, + 0.010847722520165403, + 0.010845958085871578 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0281197261660853, + "scoreError" : 0.027418555531521838, + "scoreConfidence" : [ + 3.0007011706345637, + 3.055538281697607 + ], + "scorePercentiles" : { + "0.0" : 3.011746446718844, + "50.0" : 3.0315825912890233, + "90.0" : 3.0367838816029145, + "95.0" : 3.0367838816029145, + "99.0" : 3.0367838816029145, + "99.9" : 3.0367838816029145, + "99.99" : 3.0367838816029145, + "99.999" : 3.0367838816029145, + "99.9999" : 3.0367838816029145, + "100.0" : 3.0367838816029145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0367838816029145, + 3.0352256128640778, + 3.0347776547330096 + ], + [ + 3.011746446718844, + 3.0283875278450365, + 3.0217972332326286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6931020252481033, + "scoreError" : 0.0664020739179938, + "scoreConfidence" : [ + 2.6266999513301093, + 2.7595040991660973 + ], + "scorePercentiles" : { + "0.0" : 2.6701982106246662, + "50.0" : 2.6910557346573443, + "90.0" : 2.717999886956522, + "95.0" : 2.717999886956522, + "99.0" : 2.717999886956522, + "99.9" : 2.717999886956522, + "99.99" : 2.717999886956522, + "99.999" : 2.717999886956522, + "99.9999" : 2.717999886956522, + "100.0" : 2.717999886956522 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.717999886956522, + 2.716125870994025, + 2.7095326505012194 + ], + [ + 2.6701982106246662, + 2.672176713598718, + 2.6725788188134687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1767129632125861, + "scoreError" : 4.0776604955034814E-4, + "scoreConfidence" : [ + 0.17630519716303575, + 0.17712072926213643 + ], + "scorePercentiles" : { + "0.0" : 0.17657777536065544, + "50.0" : 0.1766553243992964, + "90.0" : 0.17694014763438196, + "95.0" : 0.17694014763438196, + "99.0" : 0.17694014763438196, + "99.9" : 0.17694014763438196, + "99.99" : 0.17694014763438196, + "99.999" : 0.17694014763438196, + "99.9999" : 0.17694014763438196, + "100.0" : 0.17694014763438196 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17668325992932862, + 0.17684156605775522, + 0.17662738886926418 + ], + [ + 0.1766076414241311, + 0.17694014763438196, + 0.17657777536065544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3306563734192656, + "scoreError" : 0.004978490231674825, + "scoreConfidence" : [ + 0.3256778831875908, + 0.3356348636509405 + ], + "scorePercentiles" : { + "0.0" : 0.32896239865131577, + "50.0" : 0.33065394551089033, + "90.0" : 0.3324176407938038, + "95.0" : 0.3324176407938038, + "99.0" : 0.3324176407938038, + "99.9" : 0.3324176407938038, + "99.99" : 0.3324176407938038, + "99.999" : 0.3324176407938038, + "99.9999" : 0.3324176407938038, + "100.0" : 0.3324176407938038 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3322135199654508, + 0.3321934985384002, + 0.3324176407938038 + ], + [ + 0.3290367900832428, + 0.3291143924833805, + 0.32896239865131577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14468580073601847, + "scoreError" : 8.665055195461925E-4, + "scoreConfidence" : [ + 0.14381929521647227, + 0.14555230625556467 + ], + "scorePercentiles" : { + "0.0" : 0.14435711028668766, + "50.0" : 0.14467398004191673, + "90.0" : 0.14514446807645975, + "95.0" : 0.14514446807645975, + "99.0" : 0.14514446807645975, + "99.9" : 0.14514446807645975, + "99.99" : 0.14514446807645975, + "99.999" : 0.14514446807645975, + "99.9999" : 0.14514446807645975, + "100.0" : 0.14514446807645975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14457854163775155, + 0.1447694184460819, + 0.14489230087803182 + ], + [ + 0.14514446807645975, + 0.14435711028668766, + 0.1443729650910981 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3971566388062775, + "scoreError" : 0.03094666276265523, + "scoreConfidence" : [ + 0.36620997604362227, + 0.4281033015689327 + ], + "scorePercentiles" : { + "0.0" : 0.3869390483265622, + "50.0" : 0.39663725734745137, + "90.0" : 0.4089756738917062, + "95.0" : 0.4089756738917062, + "99.0" : 0.4089756738917062, + "99.9" : 0.4089756738917062, + "99.99" : 0.4089756738917062, + "99.999" : 0.4089756738917062, + "99.9999" : 0.4089756738917062, + "100.0" : 0.4089756738917062 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3869390483265622, + 0.3872197171067916, + 0.3872112840825493 + ], + [ + 0.4089756738917062, + 0.4065393118419448, + 0.4060547975881111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15523795084849243, + "scoreError" : 0.0031123120636527965, + "scoreConfidence" : [ + 0.15212563878483965, + 0.1583502629121452 + ], + "scorePercentiles" : { + "0.0" : 0.15415504040326186, + "50.0" : 0.15520149828633079, + "90.0" : 0.15648289713015992, + "95.0" : 0.15648289713015992, + "99.0" : 0.15648289713015992, + "99.9" : 0.15648289713015992, + "99.99" : 0.15648289713015992, + "99.999" : 0.15648289713015992, + "99.9999" : 0.15648289713015992, + "100.0" : 0.15648289713015992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1543426213171176, + 0.15420479611410948, + 0.15415504040326186 + ], + [ + 0.15648289713015992, + 0.15606037525554395, + 0.1561819748707617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046699934113078524, + "scoreError" : 0.0023132303334222858, + "scoreConfidence" : [ + 0.04438670377965624, + 0.049013164446500807 + ], + "scorePercentiles" : { + "0.0" : 0.04591798964106473, + "50.0" : 0.04672285355758983, + "90.0" : 0.04746917375288963, + "95.0" : 0.04746917375288963, + "99.0" : 0.04746917375288963, + "99.9" : 0.04746917375288963, + "99.99" : 0.04746917375288963, + "99.999" : 0.04746917375288963, + "99.9999" : 0.04746917375288963, + "100.0" : 0.04746917375288963 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045922329589184525, + 0.04600197062814822, + 0.04591798964106473 + ], + [ + 0.04744373648703144, + 0.04746917375288963, + 0.04744440458015267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8514371.258650241, + "scoreError" : 137220.36361009316, + "scoreConfidence" : [ + 8377150.895040148, + 8651591.622260334 + ], + "scorePercentiles" : { + "0.0" : 8463827.32994924, + "50.0" : 8502923.55567645, + "90.0" : 8582671.80703259, + "95.0" : 8582671.80703259, + "99.0" : 8582671.80703259, + "99.9" : 8582671.80703259, + "99.99" : 8582671.80703259, + "99.999" : 8582671.80703259, + "99.9999" : 8582671.80703259, + "100.0" : 8582671.80703259 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8463827.32994924, + 8477749.911864407, + 8476876.011864407 + ], + [ + 8582671.80703259, + 8557005.29170231, + 8528097.19948849 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-22T06:49:47Z-e6ca15a18f62837564202a548f294c32aa3ca28f-jdk17.json b/performance-results/2025-09-22T06:49:47Z-e6ca15a18f62837564202a548f294c32aa3ca28f-jdk17.json new file mode 100644 index 0000000000..cc943175a6 --- /dev/null +++ b/performance-results/2025-09-22T06:49:47Z-e6ca15a18f62837564202a548f294c32aa3ca28f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3496359760769683, + "scoreError" : 0.029788854925604347, + "scoreConfidence" : [ + 3.319847121151364, + 3.3794248310025727 + ], + "scorePercentiles" : { + "0.0" : 3.343058943697042, + "50.0" : 3.35086586116409, + "90.0" : 3.353753238282651, + "95.0" : 3.353753238282651, + "99.0" : 3.353753238282651, + "99.9" : 3.353753238282651, + "99.99" : 3.353753238282651, + "99.999" : 3.353753238282651, + "99.9999" : 3.353753238282651, + "100.0" : 3.353753238282651 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.343058943697042, + 3.351374753228679 + ], + [ + 3.3503569690995008, + 3.353753238282651 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.697293564229039, + "scoreError" : 0.01614358808624621, + "scoreConfidence" : [ + 1.6811499761427928, + 1.7134371523152852 + ], + "scorePercentiles" : { + "0.0" : 1.6938488115852268, + "50.0" : 1.6977982046674653, + "90.0" : 1.6997290359959976, + "95.0" : 1.6997290359959976, + "99.0" : 1.6997290359959976, + "99.9" : 1.6997290359959976, + "99.99" : 1.6997290359959976, + "99.999" : 1.6997290359959976, + "99.9999" : 1.6997290359959976, + "100.0" : 1.6997290359959976 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6938488115852268, + 1.6982545015866084 + ], + [ + 1.6973419077483225, + 1.6997290359959976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8520049747056817, + "scoreError" : 0.030893589196560628, + "scoreConfidence" : [ + 0.8211113855091211, + 0.8828985639022423 + ], + "scorePercentiles" : { + "0.0" : 0.8474798972464561, + "50.0" : 0.8511394310643619, + "90.0" : 0.8582611394475472, + "95.0" : 0.8582611394475472, + "99.0" : 0.8582611394475472, + "99.9" : 0.8582611394475472, + "99.99" : 0.8582611394475472, + "99.999" : 0.8582611394475472, + "99.9999" : 0.8582611394475472, + "100.0" : 0.8582611394475472 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8530700245322967, + 0.8582611394475472 + ], + [ + 0.8474798972464561, + 0.8492088375964268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.485860471979176, + "scoreError" : 0.03824936393164474, + "scoreConfidence" : [ + 16.447611108047532, + 16.52410983591082 + ], + "scorePercentiles" : { + "0.0" : 16.470186216833234, + "50.0" : 16.48226527396083, + "90.0" : 16.502570084543326, + "95.0" : 16.502570084543326, + "99.0" : 16.502570084543326, + "99.9" : 16.502570084543326, + "99.99" : 16.502570084543326, + "99.999" : 16.502570084543326, + "99.9999" : 16.502570084543326, + "100.0" : 16.502570084543326 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.475557891676782, + 16.502570084543326, + 16.502318090900054 + ], + [ + 16.470186216833234, + 16.48114282263713, + 16.483387725284533 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.268536915973, + "scoreError" : 36.22216052793814, + "scoreConfidence" : [ + 2672.046376388035, + 2744.4906974439114 + ], + "scorePercentiles" : { + "0.0" : 2694.8842638461924, + "50.0" : 2708.0160123297355, + "90.0" : 2721.595279935854, + "95.0" : 2721.595279935854, + "99.0" : 2721.595279935854, + "99.9" : 2721.595279935854, + "99.99" : 2721.595279935854, + "99.999" : 2721.595279935854, + "99.9999" : 2721.595279935854, + "100.0" : 2721.595279935854 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2694.8842638461924, + 2696.2368011489557, + 2698.688130371997 + ], + [ + 2717.3438942874736, + 2721.595279935854, + 2720.8628519053696 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75945.7787225041, + "scoreError" : 1641.990158273962, + "scoreConfidence" : [ + 74303.78856423014, + 77587.76888077805 + ], + "scorePercentiles" : { + "0.0" : 75367.44129599974, + "50.0" : 75953.8848213015, + "90.0" : 76492.38929076183, + "95.0" : 76492.38929076183, + "99.0" : 76492.38929076183, + "99.9" : 76492.38929076183, + "99.99" : 76492.38929076183, + "99.999" : 76492.38929076183, + "99.9999" : 76492.38929076183, + "100.0" : 76492.38929076183 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76492.38929076183, + 76474.04136730185, + 76473.00932650767 + ], + [ + 75367.44129599974, + 75433.03073835814, + 75434.76031609531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 343.77591293827754, + "scoreError" : 2.8901245861991076, + "scoreConfidence" : [ + 340.8857883520784, + 346.6660375244767 + ], + "scorePercentiles" : { + "0.0" : 342.56633371119176, + "50.0" : 343.6449839679681, + "90.0" : 345.59208372253556, + "95.0" : 345.59208372253556, + "99.0" : 345.59208372253556, + "99.9" : 345.59208372253556, + "99.99" : 345.59208372253556, + "99.999" : 345.59208372253556, + "99.9999" : 345.59208372253556, + "100.0" : 345.59208372253556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.59208372253556, + 343.1261078956025, + 344.0809843643991 + ], + [ + 342.56633371119176, + 343.64546775983484, + 343.64450017610136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.32659320091456, + "scoreError" : 2.960395654273195, + "scoreConfidence" : [ + 111.36619754664136, + 117.28698885518776 + ], + "scorePercentiles" : { + "0.0" : 112.65183532479064, + "50.0" : 114.83129812160851, + "90.0" : 115.29110592527894, + "95.0" : 115.29110592527894, + "99.0" : 115.29110592527894, + "99.9" : 115.29110592527894, + "99.99" : 115.29110592527894, + "99.999" : 115.29110592527894, + "99.9999" : 115.29110592527894, + "100.0" : 115.29110592527894 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.37669102214478, + 112.65183532479064, + 115.29110592527894 + ], + [ + 114.7977916119232, + 114.86480463129382, + 114.97733069005595 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06159744638230849, + "scoreError" : 0.001637280741300189, + "scoreConfidence" : [ + 0.059960165641008305, + 0.06323472712360868 + ], + "scorePercentiles" : { + "0.0" : 0.06102665141427394, + "50.0" : 0.061625093759965575, + "90.0" : 0.062142634860367134, + "95.0" : 0.062142634860367134, + "99.0" : 0.062142634860367134, + "99.9" : 0.062142634860367134, + "99.99" : 0.062142634860367134, + "99.999" : 0.062142634860367134, + "99.9999" : 0.062142634860367134, + "100.0" : 0.062142634860367134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06213141885779611, + 0.06211351735425285, + 0.062142634860367134 + ], + [ + 0.0610337856414826, + 0.0611366701656783, + 0.06102665141427394 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.739469346231514E-4, + "scoreError" : 1.4079256770433099E-5, + "scoreConfidence" : [ + 3.598676778527183E-4, + 3.880261913935845E-4 + ], + "scorePercentiles" : { + "0.0" : 3.684522013233481E-4, + "50.0" : 3.741899766392553E-4, + "90.0" : 3.785810440056022E-4, + "95.0" : 3.785810440056022E-4, + "99.0" : 3.785810440056022E-4, + "99.9" : 3.785810440056022E-4, + "99.99" : 3.785810440056022E-4, + "99.999" : 3.785810440056022E-4, + "99.9999" : 3.785810440056022E-4, + "100.0" : 3.785810440056022E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7843791332732303E-4, + 3.785810440056022E-4, + 3.784986528433399E-4 + ], + [ + 3.6994203995118754E-4, + 3.697697562881073E-4, + 3.684522013233481E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.521398443060576, + "scoreError" : 0.08910038705621467, + "scoreConfidence" : [ + 2.432298056004361, + 2.6104988301167906 + ], + "scorePercentiles" : { + "0.0" : 2.4864232282446546, + "50.0" : 2.51697658935123, + "90.0" : 2.5723473112139916, + "95.0" : 2.5723473112139916, + "99.0" : 2.5723473112139916, + "99.9" : 2.5723473112139916, + "99.99" : 2.5723473112139916, + "99.999" : 2.5723473112139916, + "99.9999" : 2.5723473112139916, + "100.0" : 2.5723473112139916 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.5398777447943117, + 2.495789195408036, + 2.4864232282446546 + ], + [ + 2.5723473112139916, + 2.5267867046488126, + 2.5071664740536477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013080461824156937, + "scoreError" : 8.680639739726075E-5, + "scoreConfidence" : [ + 0.012993655426759676, + 0.013167268221554198 + ], + "scorePercentiles" : { + "0.0" : 0.013051508657604688, + "50.0" : 0.013078615058292987, + "90.0" : 0.013114501506180124, + "95.0" : 0.013114501506180124, + "99.0" : 0.013114501506180124, + "99.9" : 0.013114501506180124, + "99.99" : 0.013114501506180124, + "99.999" : 0.013114501506180124, + "99.9999" : 0.013114501506180124, + "100.0" : 0.013114501506180124 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013103365944549925, + 0.013114501506180124, + 0.01310770615436641 + ], + [ + 0.013053864172036049, + 0.013051508657604688, + 0.013051824510204427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.1120725154260704, + "scoreError" : 0.2997884248803559, + "scoreConfidence" : [ + 0.8122840905457145, + 1.4118609403064264 + ], + "scorePercentiles" : { + "0.0" : 1.0134889811511958, + "50.0" : 1.1122757973107193, + "90.0" : 1.2105479820844933, + "95.0" : 1.2105479820844933, + "99.0" : 1.2105479820844933, + "99.9" : 1.2105479820844933, + "99.99" : 1.2105479820844933, + "99.999" : 1.2105479820844933, + "99.9999" : 1.2105479820844933, + "100.0" : 1.2105479820844933 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.2092566726723095, + 1.2091833881030105, + 1.2105479820844933 + ], + [ + 1.0134889811511958, + 1.0153682065184282, + 1.014589862026986 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010576567943549407, + "scoreError" : 8.01183711594851E-4, + "scoreConfidence" : [ + 0.009775384231954556, + 0.011377751655144258 + ], + "scorePercentiles" : { + "0.0" : 0.010312777170942587, + "50.0" : 0.01057730979818363, + "90.0" : 0.010839297513960667, + "95.0" : 0.010839297513960667, + "99.0" : 0.010839297513960667, + "99.9" : 0.010839297513960667, + "99.99" : 0.010839297513960667, + "99.999" : 0.010839297513960667, + "99.9999" : 0.010839297513960667, + "100.0" : 0.010839297513960667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010833619389952724, + 0.010839175763382773, + 0.010839297513960667 + ], + [ + 0.010313537616643153, + 0.010321000206414539, + 0.010312777170942587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1242275525570045, + "scoreError" : 0.09976646116987556, + "scoreConfidence" : [ + 3.024461091387129, + 3.22399401372688 + ], + "scorePercentiles" : { + "0.0" : 3.0899167770228537, + "50.0" : 3.117203892057417, + "90.0" : 3.1720970196575777, + "95.0" : 3.1720970196575777, + "99.0" : 3.1720970196575777, + "99.9" : 3.1720970196575777, + "99.99" : 3.1720970196575777, + "99.999" : 3.1720970196575777, + "99.9999" : 3.1720970196575777, + "100.0" : 3.1720970196575777 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0899167770228537, + 3.102748251240695, + 3.09024156145769 + ], + [ + 3.131659532874139, + 3.1720970196575777, + 3.1587021730890714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8942256093892915, + "scoreError" : 0.1132928813899829, + "scoreConfidence" : [ + 2.780932727999309, + 3.0075184907792742 + ], + "scorePercentiles" : { + "0.0" : 2.8483187761321562, + "50.0" : 2.891599411155812, + "90.0" : 2.9406392446339313, + "95.0" : 2.9406392446339313, + "99.0" : 2.9406392446339313, + "99.9" : 2.9406392446339313, + "99.99" : 2.9406392446339313, + "99.999" : 2.9406392446339313, + "99.9999" : 2.9406392446339313, + "100.0" : 2.9406392446339313 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.862741448769319, + 2.8634743844832524, + 2.8483187761321562 + ], + [ + 2.9406392446339313, + 2.9304553644887195, + 2.9197244378283713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18359464893897617, + "scoreError" : 0.026735088381444335, + "scoreConfidence" : [ + 0.15685956055753184, + 0.2103297373204205 + ], + "scorePercentiles" : { + "0.0" : 0.17404164472058337, + "50.0" : 0.1838341954352512, + "90.0" : 0.192449687739353, + "95.0" : 0.192449687739353, + "99.0" : 0.192449687739353, + "99.9" : 0.192449687739353, + "99.99" : 0.192449687739353, + "99.999" : 0.192449687739353, + "99.9999" : 0.192449687739353, + "100.0" : 0.192449687739353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17554534597222954, + 0.17404164472058337, + 0.1751231626506024 + ], + [ + 0.192449687739353, + 0.19228500765281598, + 0.19212304489827284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3291284158749855, + "scoreError" : 0.02890070010517245, + "scoreConfidence" : [ + 0.30022771576981305, + 0.3580291159801579 + ], + "scorePercentiles" : { + "0.0" : 0.3196283847284815, + "50.0" : 0.32861018854278434, + "90.0" : 0.33912732657352146, + "95.0" : 0.33912732657352146, + "99.0" : 0.33912732657352146, + "99.9" : 0.33912732657352146, + "99.99" : 0.33912732657352146, + "99.999" : 0.33912732657352146, + "99.9999" : 0.33912732657352146, + "100.0" : 0.33912732657352146 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373141362026512, + 0.33910977202441506, + 0.33912732657352146 + ], + [ + 0.3196283847284815, + 0.319684634837926, + 0.31990624088291747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1479364146788637, + "scoreError" : 0.009020044394819867, + "scoreConfidence" : [ + 0.13891637028404383, + 0.15695645907368358 + ], + "scorePercentiles" : { + "0.0" : 0.14518249499128918, + "50.0" : 0.14735536607677147, + "90.0" : 0.15293019727485435, + "95.0" : 0.15293019727485435, + "99.0" : 0.15293019727485435, + "99.9" : 0.15293019727485435, + "99.99" : 0.15293019727485435, + "99.999" : 0.15293019727485435, + "99.9999" : 0.15293019727485435, + "100.0" : 0.15293019727485435 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15293019727485435, + 0.14958367144823048, + 0.14940442916903218 + ], + [ + 0.14521139220526522, + 0.14518249499128918, + 0.14530630298451078 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39726246744718513, + "scoreError" : 0.009123819141630388, + "scoreConfidence" : [ + 0.3881386483055547, + 0.40638628658881554 + ], + "scorePercentiles" : { + "0.0" : 0.3947651694694458, + "50.0" : 0.3953507804131454, + "90.0" : 0.40206225666385237, + "95.0" : 0.40206225666385237, + "99.0" : 0.40206225666385237, + "99.9" : 0.40206225666385237, + "99.99" : 0.40206225666385237, + "99.999" : 0.40206225666385237, + "99.9999" : 0.40206225666385237, + "100.0" : 0.40206225666385237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39526718150197626, + 0.39531371629046924, + 0.3947651694694458 + ], + [ + 0.40206225666385237, + 0.40077863622154536, + 0.3953878445358216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15360524371981474, + "scoreError" : 0.002750173499502835, + "scoreConfidence" : [ + 0.15085507022031192, + 0.15635541721931756 + ], + "scorePercentiles" : { + "0.0" : 0.1516243314734512, + "50.0" : 0.15395947178698044, + "90.0" : 0.15416787229056825, + "95.0" : 0.15416787229056825, + "99.0" : 0.15416787229056825, + "99.9" : 0.15416787229056825, + "99.99" : 0.15416787229056825, + "99.999" : 0.15416787229056825, + "99.9999" : 0.15416787229056825, + "100.0" : 0.15416787229056825 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15416787229056825, + 0.1538382793981909, + 0.1538252192893401 + ], + [ + 0.15408066417577, + 0.15409509569156804, + 0.1516243314734512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04662359449964403, + "scoreError" : 0.0017915052564357013, + "scoreConfidence" : [ + 0.044832089243208334, + 0.04841509975607973 + ], + "scorePercentiles" : { + "0.0" : 0.0460147077878753, + "50.0" : 0.04660958504281068, + "90.0" : 0.04731384416960796, + "95.0" : 0.04731384416960796, + "99.0" : 0.04731384416960796, + "99.9" : 0.04731384416960796, + "99.99" : 0.04731384416960796, + "99.999" : 0.04731384416960796, + "99.9999" : 0.04731384416960796, + "100.0" : 0.04731384416960796 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04731384416960796, + 0.04715483416796341, + 0.0471430772853486 + ], + [ + 0.04603901078679619, + 0.0460147077878753, + 0.046076092800272764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8751847.78459636, + "scoreError" : 215597.68497896375, + "scoreConfidence" : [ + 8536250.099617396, + 8967445.469575323 + ], + "scorePercentiles" : { + "0.0" : 8678622.612315698, + "50.0" : 8750421.270949967, + "90.0" : 8833320.883495146, + "95.0" : 8833320.883495146, + "99.0" : 8833320.883495146, + "99.9" : 8833320.883495146, + "99.99" : 8833320.883495146, + "99.999" : 8833320.883495146, + "99.9999" : 8833320.883495146, + "100.0" : 8833320.883495146 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8686107.290798612, + 8678622.612315698, + 8681088.158854166 + ], + [ + 8833320.883495146, + 8814735.251101322, + 8817212.511013215 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-22T21:17:24Z-8e4f4596733814ad92020cfcc5171448a0be2e1a-jdk17.json b/performance-results/2025-09-22T21:17:24Z-8e4f4596733814ad92020cfcc5171448a0be2e1a-jdk17.json new file mode 100644 index 0000000000..d28d866358 --- /dev/null +++ b/performance-results/2025-09-22T21:17:24Z-8e4f4596733814ad92020cfcc5171448a0be2e1a-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.314022811691902, + "scoreError" : 0.0541966896066759, + "scoreConfidence" : [ + 3.2598261220852263, + 3.368219501298578 + ], + "scorePercentiles" : { + "0.0" : 3.304194048355106, + "50.0" : 3.313707183089784, + "90.0" : 3.324482832232933, + "95.0" : 3.324482832232933, + "99.0" : 3.324482832232933, + "99.9" : 3.324482832232933, + "99.99" : 3.324482832232933, + "99.999" : 3.324482832232933, + "99.9999" : 3.324482832232933, + "100.0" : 3.324482832232933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.304194048355106, + 3.3152578813872067 + ], + [ + 3.312156484792362, + 3.324482832232933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6712603261970465, + "scoreError" : 0.018142346406554506, + "scoreConfidence" : [ + 1.653117979790492, + 1.6894026726036009 + ], + "scorePercentiles" : { + "0.0" : 1.668586385117959, + "50.0" : 1.6708547696159761, + "90.0" : 1.6747453804382741, + "95.0" : 1.6747453804382741, + "99.0" : 1.6747453804382741, + "99.9" : 1.6747453804382741, + "99.99" : 1.6747453804382741, + "99.999" : 1.6747453804382741, + "99.9999" : 1.6747453804382741, + "100.0" : 1.6747453804382741 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6694365904564337, + 1.6747453804382741 + ], + [ + 1.668586385117959, + 1.6722729487755186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8394464879842283, + "scoreError" : 0.02129677653453746, + "scoreConfidence" : [ + 0.8181497114496908, + 0.8607432645187657 + ], + "scorePercentiles" : { + "0.0" : 0.8354426843180475, + "50.0" : 0.8397314013517216, + "90.0" : 0.8428804649154225, + "95.0" : 0.8428804649154225, + "99.0" : 0.8428804649154225, + "99.9" : 0.8428804649154225, + "99.99" : 0.8428804649154225, + "99.999" : 0.8428804649154225, + "99.9999" : 0.8428804649154225, + "100.0" : 0.8428804649154225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8354426843180475, + 0.8428804649154225 + ], + [ + 0.841247962885109, + 0.8382148398183343 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.011288148980004, + "scoreError" : 0.5018285430660081, + "scoreConfidence" : [ + 15.509459605913996, + 16.51311669204601 + ], + "scorePercentiles" : { + "0.0" : 15.777353748640426, + "50.0" : 16.025052167576717, + "90.0" : 16.20868747168987, + "95.0" : 16.20868747168987, + "99.0" : 16.20868747168987, + "99.9" : 16.20868747168987, + "99.99" : 16.20868747168987, + "99.999" : 16.20868747168987, + "99.9999" : 16.20868747168987, + "100.0" : 16.20868747168987 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.20868747168987, + 16.179384309471292, + 16.104082184327684 + ], + [ + 15.777353748640426, + 15.852199028925018, + 15.946022150825748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2733.465575211411, + "scoreError" : 151.73841292032816, + "scoreConfidence" : [ + 2581.7271622910825, + 2885.203988131739 + ], + "scorePercentiles" : { + "0.0" : 2674.5303194476496, + "50.0" : 2737.309498514745, + "90.0" : 2790.6696012687553, + "95.0" : 2790.6696012687553, + "99.0" : 2790.6696012687553, + "99.9" : 2790.6696012687553, + "99.99" : 2790.6696012687553, + "99.999" : 2790.6696012687553, + "99.9999" : 2790.6696012687553, + "100.0" : 2790.6696012687553 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2790.6696012687553, + 2785.7195478920985, + 2766.8564123439705 + ], + [ + 2707.7625846855194, + 2674.5303194476496, + 2675.2549856304727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76531.1384609008, + "scoreError" : 515.4412416679229, + "scoreConfidence" : [ + 76015.69721923287, + 77046.57970256872 + ], + "scorePercentiles" : { + "0.0" : 76376.08383147985, + "50.0" : 76465.40591084602, + "90.0" : 76871.28084055861, + "95.0" : 76871.28084055861, + "99.0" : 76871.28084055861, + "99.9" : 76871.28084055861, + "99.99" : 76871.28084055861, + "99.999" : 76871.28084055861, + "99.9999" : 76871.28084055861, + "100.0" : 76871.28084055861 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76473.19417101903, + 76601.77884466675, + 76871.28084055861 + ], + [ + 76457.61765067301, + 76376.08383147985, + 76406.87542700753 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.7922444590617, + "scoreError" : 4.036389849878064, + "scoreConfidence" : [ + 333.75585460918364, + 341.82863430893974 + ], + "scorePercentiles" : { + "0.0" : 335.7420165479613, + "50.0" : 337.7801406204766, + "90.0" : 339.61496363944684, + "95.0" : 339.61496363944684, + "99.0" : 339.61496363944684, + "99.9" : 339.61496363944684, + "99.99" : 339.61496363944684, + "99.999" : 339.61496363944684, + "99.9999" : 339.61496363944684, + "100.0" : 339.61496363944684 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.7420165479613, + 337.3824893427294, + 336.80328909107857 + ], + [ + 339.03291623493044, + 338.1777918982238, + 339.61496363944684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.73988583126498, + "scoreError" : 7.837746310010851, + "scoreConfidence" : [ + 99.90213952125413, + 115.57763214127584 + ], + "scorePercentiles" : { + "0.0" : 104.42290378696231, + "50.0" : 108.02725454189343, + "90.0" : 111.64004355831095, + "95.0" : 111.64004355831095, + "99.0" : 111.64004355831095, + "99.9" : 111.64004355831095, + "99.99" : 111.64004355831095, + "99.999" : 111.64004355831095, + "99.9999" : 111.64004355831095, + "100.0" : 111.64004355831095 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.42290378696231, + 109.56750571822366, + 108.4899662186823 + ], + [ + 104.75435284030613, + 107.56454286510457, + 111.64004355831095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06224595222351487, + "scoreError" : 6.995150499724861E-4, + "scoreConfidence" : [ + 0.06154643717354238, + 0.06294546727348735 + ], + "scorePercentiles" : { + "0.0" : 0.0618431342098428, + "50.0" : 0.06223886530851824, + "90.0" : 0.06260241496547536, + "95.0" : 0.06260241496547536, + "99.0" : 0.06260241496547536, + "99.9" : 0.06260241496547536, + "99.99" : 0.06260241496547536, + "99.999" : 0.06260241496547536, + "99.9999" : 0.06260241496547536, + "100.0" : 0.06260241496547536 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06237238086446704, + 0.06226513855646738, + 0.06260241496547536 + ], + [ + 0.0618431342098428, + 0.06218005268426747, + 0.06221259206056911 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7179579434428334E-4, + "scoreError" : 8.041842088100423E-6, + "scoreConfidence" : [ + 3.637539522561829E-4, + 3.798376364323838E-4 + ], + "scorePercentiles" : { + "0.0" : 3.667811652424725E-4, + "50.0" : 3.720500442273067E-4, + "90.0" : 3.7544620580236553E-4, + "95.0" : 3.7544620580236553E-4, + "99.0" : 3.7544620580236553E-4, + "99.9" : 3.7544620580236553E-4, + "99.99" : 3.7544620580236553E-4, + "99.999" : 3.7544620580236553E-4, + "99.9999" : 3.7544620580236553E-4, + "100.0" : 3.7544620580236553E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7544620580236553E-4, + 3.71340739322794E-4, + 3.667811652424725E-4 + ], + [ + 3.7150468125177785E-4, + 3.731065672434549E-4, + 3.7259540720283556E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6065140423547306, + "scoreError" : 0.0878324362403623, + "scoreConfidence" : [ + 2.5186816061143684, + 2.694346478595093 + ], + "scorePercentiles" : { + "0.0" : 2.5654608116983066, + "50.0" : 2.600502211316018, + "90.0" : 2.6559617652681893, + "95.0" : 2.6559617652681893, + "99.0" : 2.6559617652681893, + "99.9" : 2.6559617652681893, + "99.99" : 2.6559617652681893, + "99.999" : 2.6559617652681893, + "99.9999" : 2.6559617652681893, + "100.0" : 2.6559617652681893 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.5951435586403737, + 2.6058608639916625, + 2.62619703282563 + ], + [ + 2.6559617652681893, + 2.590460221704222, + 2.5654608116983066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013068189520707547, + "scoreError" : 4.758208011554296E-5, + "scoreConfidence" : [ + 0.013020607440592004, + 0.013115771600823091 + ], + "scorePercentiles" : { + "0.0" : 0.013047852657811644, + "50.0" : 0.013066306973347515, + "90.0" : 0.013089392061414417, + "95.0" : 0.013089392061414417, + "99.0" : 0.013089392061414417, + "99.9" : 0.013089392061414417, + "99.99" : 0.013089392061414417, + "99.999" : 0.013089392061414417, + "99.9999" : 0.013089392061414417, + "100.0" : 0.013089392061414417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013047852657811644, + 0.013069138335855636, + 0.013053069020969437 + ], + [ + 0.013063475610839394, + 0.013089392061414417, + 0.013086209437354746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0458713106870163, + "scoreError" : 0.2555485889654377, + "scoreConfidence" : [ + 0.7903227217215787, + 1.301419899652454 + ], + "scorePercentiles" : { + "0.0" : 0.961285840430645, + "50.0" : 1.0453254822709421, + "90.0" : 1.1320143119764545, + "95.0" : 1.1320143119764545, + "99.0" : 1.1320143119764545, + "99.9" : 1.1320143119764545, + "99.99" : 1.1320143119764545, + "99.999" : 1.1320143119764545, + "99.9999" : 1.1320143119764545, + "100.0" : 1.1320143119764545 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1320143119764545, + 1.1263734874422795, + 1.1287370961625283 + ], + [ + 0.9625396510105871, + 0.9642774770996047, + 0.961285840430645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010504882869921947, + "scoreError" : 1.4108359247088276E-4, + "scoreConfidence" : [ + 0.010363799277451064, + 0.01064596646239283 + ], + "scorePercentiles" : { + "0.0" : 0.010447678010476674, + "50.0" : 0.010497536453350269, + "90.0" : 0.0105750908623698, + "95.0" : 0.0105750908623698, + "99.0" : 0.0105750908623698, + "99.9" : 0.0105750908623698, + "99.99" : 0.0105750908623698, + "99.999" : 0.0105750908623698, + "99.9999" : 0.0105750908623698, + "100.0" : 0.0105750908623698 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010525354146362, + 0.010543129568988965, + 0.0105750908623698 + ], + [ + 0.010468325870995701, + 0.010469718760338538, + 0.010447678010476674 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.159283885424873, + "scoreError" : 0.25586271124217214, + "scoreConfidence" : [ + 2.9034211741827005, + 3.415146596667045 + ], + "scorePercentiles" : { + "0.0" : 3.0489593652439027, + "50.0" : 3.165829379693399, + "90.0" : 3.2517827880364107, + "95.0" : 3.2517827880364107, + "99.0" : 3.2517827880364107, + "99.9" : 3.2517827880364107, + "99.99" : 3.2517827880364107, + "99.999" : 3.2517827880364107, + "99.9999" : 3.2517827880364107, + "100.0" : 3.2517827880364107 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0489593652439027, + 3.0843352638717634, + 3.0993215855018588 + ], + [ + 3.2389671360103627, + 3.2323371738849387, + 3.2517827880364107 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9637489833842348, + "scoreError" : 0.05950943704115313, + "scoreConfidence" : [ + 2.9042395463430815, + 3.023258420425388 + ], + "scorePercentiles" : { + "0.0" : 2.9441374901383575, + "50.0" : 2.9602015223628886, + "90.0" : 2.9914487071492672, + "95.0" : 2.9914487071492672, + "99.0" : 2.9914487071492672, + "99.9" : 2.9914487071492672, + "99.99" : 2.9914487071492672, + "99.999" : 2.9914487071492672, + "99.9999" : 2.9914487071492672, + "100.0" : 2.9914487071492672 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9914487071492672, + 2.981926377161598, + 2.9739274451382696 + ], + [ + 2.946475599587507, + 2.9441374901383575, + 2.944578281130409 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17877283202507357, + "scoreError" : 0.008750092929814521, + "scoreConfidence" : [ + 0.17002273909525906, + 0.1875229249548881 + ], + "scorePercentiles" : { + "0.0" : 0.17687838380175813, + "50.0" : 0.17771275120783386, + "90.0" : 0.1851039395279963, + "95.0" : 0.1851039395279963, + "99.0" : 0.1851039395279963, + "99.9" : 0.1851039395279963, + "99.99" : 0.1851039395279963, + "99.999" : 0.1851039395279963, + "99.9999" : 0.1851039395279963, + "100.0" : 0.1851039395279963 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1851039395279963, + 0.17779775649391058, + 0.17779605763965436 + ], + [ + 0.17762944477601336, + 0.17743140991110876, + 0.17687838380175813 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3263847193121482, + "scoreError" : 0.012345491264338093, + "scoreConfidence" : [ + 0.3140392280478101, + 0.3387302105764863 + ], + "scorePercentiles" : { + "0.0" : 0.3217403550929799, + "50.0" : 0.32647665116039054, + "90.0" : 0.3322582626752608, + "95.0" : 0.3322582626752608, + "99.0" : 0.3322582626752608, + "99.9" : 0.3322582626752608, + "99.99" : 0.3322582626752608, + "99.999" : 0.3322582626752608, + "99.9999" : 0.3322582626752608, + "100.0" : 0.3322582626752608 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3242301800408521, + 0.3218224348651606, + 0.3217403550929799 + ], + [ + 0.3322582626752608, + 0.328723122279929, + 0.32953396091870696 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.145944147393136, + "scoreError" : 0.007036163387471947, + "scoreConfidence" : [ + 0.13890798400566404, + 0.15298031078060795 + ], + "scorePercentiles" : { + "0.0" : 0.14348563015998278, + "50.0" : 0.1459663244243061, + "90.0" : 0.14841178771463764, + "95.0" : 0.14841178771463764, + "99.0" : 0.14841178771463764, + "99.9" : 0.14841178771463764, + "99.99" : 0.14841178771463764, + "99.999" : 0.14841178771463764, + "99.9999" : 0.14841178771463764, + "100.0" : 0.14841178771463764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14806305275314255, + 0.1482142547316625, + 0.14841178771463764 + ], + [ + 0.14362056290392072, + 0.14348563015998278, + 0.14386959609546965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40635855948103955, + "scoreError" : 0.013269123442330714, + "scoreConfidence" : [ + 0.39308943603870883, + 0.41962768292337027 + ], + "scorePercentiles" : { + "0.0" : 0.39969741011191046, + "50.0" : 0.4078320754049398, + "90.0" : 0.4105838537116111, + "95.0" : 0.4105838537116111, + "99.0" : 0.4105838537116111, + "99.9" : 0.4105838537116111, + "99.99" : 0.4105838537116111, + "99.999" : 0.4105838537116111, + "99.9999" : 0.4105838537116111, + "100.0" : 0.4105838537116111 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41034722905211324, + 0.4105838537116111, + 0.4099802880862578 + ], + [ + 0.4056838627236218, + 0.4018587132007233, + 0.39969741011191046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15945744478336296, + "scoreError" : 0.004099220421924381, + "scoreConfidence" : [ + 0.1553582243614386, + 0.16355666520528733 + ], + "scorePercentiles" : { + "0.0" : 0.15828925202209665, + "50.0" : 0.15894693119756265, + "90.0" : 0.1620532286339329, + "95.0" : 0.1620532286339329, + "99.0" : 0.1620532286339329, + "99.9" : 0.1620532286339329, + "99.99" : 0.1620532286339329, + "99.999" : 0.1620532286339329, + "99.9999" : 0.1620532286339329, + "100.0" : 0.1620532286339329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1620532286339329, + 0.16012251917441916, + 0.15943162768637203 + ], + [ + 0.15838580647460365, + 0.15846223470875326, + 0.15828925202209665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04675981633134168, + "scoreError" : 0.00194891175221639, + "scoreConfidence" : [ + 0.04481090457912529, + 0.04870872808355807 + ], + "scorePercentiles" : { + "0.0" : 0.046050023664688085, + "50.0" : 0.046769634315124944, + "90.0" : 0.047424308945017216, + "95.0" : 0.047424308945017216, + "99.0" : 0.047424308945017216, + "99.9" : 0.047424308945017216, + "99.99" : 0.047424308945017216, + "99.999" : 0.047424308945017216, + "99.9999" : 0.047424308945017216, + "100.0" : 0.047424308945017216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04734259124457343, + 0.047424308945017216, + 0.04741010129048775 + ], + [ + 0.0461351954576071, + 0.046050023664688085, + 0.04619667738567647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9071387.26860865, + "scoreError" : 861671.6769094984, + "scoreConfidence" : [ + 8209715.591699151, + 9933058.945518149 + ], + "scorePercentiles" : { + "0.0" : 8665944.31629116, + "50.0" : 9088677.52329212, + "90.0" : 9449535.86496695, + "95.0" : 9449535.86496695, + "99.0" : 9449535.86496695, + "99.9" : 9449535.86496695, + "99.99" : 9449535.86496695, + "99.999" : 9449535.86496695, + "99.9999" : 9449535.86496695, + "100.0" : 9449535.86496695 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8949361.397137746, + 8817460.832599118, + 8665944.31629116 + ], + [ + 9449535.86496695, + 9318027.551210428, + 9227993.649446495 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-23T02:19:02Z-2a24cd7606ed6da9e38ab7799ba91643a48235b4-jdk17.json b/performance-results/2025-09-23T02:19:02Z-2a24cd7606ed6da9e38ab7799ba91643a48235b4-jdk17.json new file mode 100644 index 0000000000..43ae7b889d --- /dev/null +++ b/performance-results/2025-09-23T02:19:02Z-2a24cd7606ed6da9e38ab7799ba91643a48235b4-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3095789782897893, + "scoreError" : 0.04801273377918843, + "scoreConfidence" : [ + 3.261566244510601, + 3.3575917120689778 + ], + "scorePercentiles" : { + "0.0" : 3.299009383359393, + "50.0" : 3.3119763758360063, + "90.0" : 3.315353778127752, + "95.0" : 3.315353778127752, + "99.0" : 3.315353778127752, + "99.9" : 3.315353778127752, + "99.99" : 3.315353778127752, + "99.999" : 3.315353778127752, + "99.9999" : 3.315353778127752, + "100.0" : 3.315353778127752 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.299009383359393, + 3.3141042945798667 + ], + [ + 3.309848457092146, + 3.315353778127752 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6660827371626785, + "scoreError" : 0.032886787999731326, + "scoreConfidence" : [ + 1.633195949162947, + 1.69896952516241 + ], + "scorePercentiles" : { + "0.0" : 1.661395463297402, + "50.0" : 1.6661021651352073, + "90.0" : 1.6707311550828976, + "95.0" : 1.6707311550828976, + "99.0" : 1.6707311550828976, + "99.9" : 1.6707311550828976, + "99.99" : 1.6707311550828976, + "99.999" : 1.6707311550828976, + "99.9999" : 1.6707311550828976, + "100.0" : 1.6707311550828976 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6707311550828976, + 1.6702327117552471 + ], + [ + 1.661395463297402, + 1.6619716185151676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8356100491743486, + "scoreError" : 0.014578931263266277, + "scoreConfidence" : [ + 0.8210311179110823, + 0.8501889804376148 + ], + "scorePercentiles" : { + "0.0" : 0.8322866494118423, + "50.0" : 0.8364279076296748, + "90.0" : 0.8372977320262023, + "95.0" : 0.8372977320262023, + "99.0" : 0.8372977320262023, + "99.9" : 0.8372977320262023, + "99.99" : 0.8372977320262023, + "99.999" : 0.8372977320262023, + "99.9999" : 0.8372977320262023, + "100.0" : 0.8372977320262023 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8322866494118423, + 0.8365675414037795 + ], + [ + 0.8372977320262023, + 0.83628827385557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.969170181416553, + "scoreError" : 0.28317620649087805, + "scoreConfidence" : [ + 15.685993974925674, + 16.25234638790743 + ], + "scorePercentiles" : { + "0.0" : 15.814964681233025, + "50.0" : 16.000453808931024, + "90.0" : 16.07259690184377, + "95.0" : 16.07259690184377, + "99.0" : 16.07259690184377, + "99.9" : 16.07259690184377, + "99.99" : 16.07259690184377, + "99.999" : 16.07259690184377, + "99.9999" : 16.07259690184377, + "100.0" : 16.07259690184377 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.985024269520867, + 16.0469682946154, + 16.07259690184377 + ], + [ + 15.814964681233025, + 15.879583592945076, + 16.01588334834118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2573.7185257361284, + "scoreError" : 155.4941527711142, + "scoreConfidence" : [ + 2418.224372965014, + 2729.212678507243 + ], + "scorePercentiles" : { + "0.0" : 2515.989393106845, + "50.0" : 2575.658216426219, + "90.0" : 2628.2329781854205, + "95.0" : 2628.2329781854205, + "99.0" : 2628.2329781854205, + "99.9" : 2628.2329781854205, + "99.99" : 2628.2329781854205, + "99.999" : 2628.2329781854205, + "99.9999" : 2628.2329781854205, + "100.0" : 2628.2329781854205 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2515.989393106845, + 2520.1619941941312, + 2534.4510758798106 + ], + [ + 2616.865356972628, + 2626.6103560779343, + 2628.2329781854205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76957.23559403383, + "scoreError" : 758.3029841918509, + "scoreConfidence" : [ + 76198.93260984198, + 77715.53857822568 + ], + "scorePercentiles" : { + "0.0" : 76615.1895682339, + "50.0" : 76975.5722330914, + "90.0" : 77232.2252515146, + "95.0" : 77232.2252515146, + "99.0" : 77232.2252515146, + "99.9" : 77232.2252515146, + "99.99" : 77232.2252515146, + "99.999" : 77232.2252515146, + "99.9999" : 77232.2252515146, + "100.0" : 77232.2252515146 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76615.1895682339, + 76753.11863462513, + 76781.03610547178 + ], + [ + 77191.7356436466, + 77232.2252515146, + 77170.10836071102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 339.3236232360392, + "scoreError" : 8.606615040571501, + "scoreConfidence" : [ + 330.7170081954677, + 347.93023827661074 + ], + "scorePercentiles" : { + "0.0" : 334.5973548333436, + "50.0" : 339.1572116456855, + "90.0" : 343.00540044827744, + "95.0" : 343.00540044827744, + "99.0" : 343.00540044827744, + "99.9" : 343.00540044827744, + "99.99" : 343.00540044827744, + "99.999" : 343.00540044827744, + "99.9999" : 343.00540044827744, + "100.0" : 343.00540044827744 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.00540044827744, + 342.05211479044726, + 340.12704961842326 + ], + [ + 334.5973548333436, + 338.18737367294773, + 337.97244605279616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.48432849157484, + "scoreError" : 2.5347782155776972, + "scoreConfidence" : [ + 104.94955027599714, + 110.01910670715255 + ], + "scorePercentiles" : { + "0.0" : 106.52150762450255, + "50.0" : 107.12267671091882, + "90.0" : 108.64698423730712, + "95.0" : 108.64698423730712, + "99.0" : 108.64698423730712, + "99.9" : 108.64698423730712, + "99.99" : 108.64698423730712, + "99.999" : 108.64698423730712, + "99.9999" : 108.64698423730712, + "100.0" : 108.64698423730712 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.57019407262297, + 106.96512784941628, + 108.64698423730712 + ], + [ + 106.52150762450255, + 107.28022557242136, + 106.92193159317883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06211041797514658, + "scoreError" : 9.250884679121894E-4, + "scoreConfidence" : [ + 0.06118532950723439, + 0.06303550644305878 + ], + "scorePercentiles" : { + "0.0" : 0.06164008986346966, + "50.0" : 0.06208369845160775, + "90.0" : 0.0626596128826091, + "95.0" : 0.0626596128826091, + "99.0" : 0.0626596128826091, + "99.9" : 0.0626596128826091, + "99.99" : 0.0626596128826091, + "99.999" : 0.0626596128826091, + "99.9999" : 0.0626596128826091, + "100.0" : 0.0626596128826091 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06164008986346966, + 0.0620058137997743, + 0.062189594401810926 + ], + [ + 0.0626596128826091, + 0.06212039099024108, + 0.06204700591297442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.739201694529456E-4, + "scoreError" : 2.0438533564249867E-5, + "scoreConfidence" : [ + 3.5348163588869576E-4, + 3.943587030171955E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6694989062872446E-4, + "50.0" : 3.7334034521908216E-4, + "90.0" : 3.8152067934462986E-4, + "95.0" : 3.8152067934462986E-4, + "99.0" : 3.8152067934462986E-4, + "99.9" : 3.8152067934462986E-4, + "99.99" : 3.8152067934462986E-4, + "99.999" : 3.8152067934462986E-4, + "99.9999" : 3.8152067934462986E-4, + "100.0" : 3.8152067934462986E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6708994313204075E-4, + 3.6694989062872446E-4, + 3.679656095995706E-4 + ], + [ + 3.787150808385938E-4, + 3.8127981317411425E-4, + 3.8152067934462986E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.708733128936368, + "scoreError" : 0.09480710099463438, + "scoreConfidence" : [ + 2.6139260279417336, + 2.803540229931002 + ], + "scorePercentiles" : { + "0.0" : 2.6735564448008553, + "50.0" : 2.706927408088565, + "90.0" : 2.7574730093741384, + "95.0" : 2.7574730093741384, + "99.0" : 2.7574730093741384, + "99.9" : 2.7574730093741384, + "99.99" : 2.7574730093741384, + "99.999" : 2.7574730093741384, + "99.9999" : 2.7574730093741384, + "100.0" : 2.7574730093741384 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7574730093741384, + 2.723458327342048, + 2.6735564448008553 + ], + [ + 2.690396488835082, + 2.731140889404697, + 2.676373613861386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013082249642555692, + "scoreError" : 6.953747280457144E-5, + "scoreConfidence" : [ + 0.01301271216975112, + 0.013151787115360263 + ], + "scorePercentiles" : { + "0.0" : 0.013056661024539597, + "50.0" : 0.013075846872048269, + "90.0" : 0.013123045050778907, + "95.0" : 0.013123045050778907, + "99.0" : 0.013123045050778907, + "99.9" : 0.013123045050778907, + "99.99" : 0.013123045050778907, + "99.999" : 0.013123045050778907, + "99.9999" : 0.013123045050778907, + "100.0" : 0.013123045050778907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013123045050778907, + 0.013098040561426303, + 0.013056661024539597 + ], + [ + 0.013069016938520268, + 0.013064057474492794, + 0.01308267680557627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.969529345158123, + "scoreError" : 0.023726873881165934, + "scoreConfidence" : [ + 0.945802471276957, + 0.9932562190392888 + ], + "scorePercentiles" : { + "0.0" : 0.9602343382621219, + "50.0" : 0.9690918609681216, + "90.0" : 0.9787368435114504, + "95.0" : 0.9787368435114504, + "99.0" : 0.9787368435114504, + "99.9" : 0.9787368435114504, + "99.99" : 0.9787368435114504, + "99.999" : 0.9787368435114504, + "99.9999" : 0.9787368435114504, + "100.0" : 0.9787368435114504 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9602343382621219, + 0.964078407500241, + 0.961774333237161 + ], + [ + 0.9787368435114504, + 0.9782468340017607, + 0.9741053144360023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.0102813420188602, + "scoreError" : 2.641824339899928E-4, + "scoreConfidence" : [ + 0.010017159584870207, + 0.010545524452850194 + ], + "scorePercentiles" : { + "0.0" : 0.010175120492298675, + "50.0" : 0.010282188849950719, + "90.0" : 0.01037699533046797, + "95.0" : 0.01037699533046797, + "99.0" : 0.01037699533046797, + "99.9" : 0.01037699533046797, + "99.99" : 0.01037699533046797, + "99.999" : 0.01037699533046797, + "99.9999" : 0.01037699533046797, + "100.0" : 0.01037699533046797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010204343369387756, + 0.01020924839668004, + 0.010175120492298675 + ], + [ + 0.01037699533046797, + 0.01036721522110536, + 0.010355129303221397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.265837577738878, + "scoreError" : 0.034587894230118855, + "scoreConfidence" : [ + 3.231249683508759, + 3.300425471968997 + ], + "scorePercentiles" : { + "0.0" : 3.2433177924773022, + "50.0" : 3.268676114782512, + "90.0" : 3.2775043931847967, + "95.0" : 3.2775043931847967, + "99.0" : 3.2775043931847967, + "99.9" : 3.2775043931847967, + "99.99" : 3.2775043931847967, + "99.999" : 3.2775043931847967, + "99.9999" : 3.2775043931847967, + "100.0" : 3.2775043931847967 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2619459680365295, + 3.274905083169614, + 3.2700814640522875 + ], + [ + 3.2433177924773022, + 3.2775043931847967, + 3.2672707655127367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9003792886728363, + "scoreError" : 0.14957413971308717, + "scoreConfidence" : [ + 2.750805148959749, + 3.0499534283859235 + ], + "scorePercentiles" : { + "0.0" : 2.845782786344239, + "50.0" : 2.900799230805492, + "90.0" : 2.9549145610044314, + "95.0" : 2.9549145610044314, + "99.0" : 2.9549145610044314, + "99.9" : 2.9549145610044314, + "99.99" : 2.9549145610044314, + "99.999" : 2.9549145610044314, + "99.9999" : 2.9549145610044314, + "100.0" : 2.9549145610044314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9549145610044314, + 2.952189377804014, + 2.9383522967097533 + ], + [ + 2.845782786344239, + 2.8477905452733485, + 2.863246164901231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17740550423110923, + "scoreError" : 8.012613890564514E-4, + "scoreConfidence" : [ + 0.17660424284205278, + 0.17820676562016569 + ], + "scorePercentiles" : { + "0.0" : 0.17697164089404852, + "50.0" : 0.17741756005622028, + "90.0" : 0.17776747002044263, + "95.0" : 0.17776747002044263, + "99.0" : 0.17776747002044263, + "99.9" : 0.17776747002044263, + "99.99" : 0.17776747002044263, + "99.999" : 0.17776747002044263, + "99.9999" : 0.17776747002044263, + "100.0" : 0.17776747002044263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17755434968573558, + 0.17776747002044263, + 0.17728077042670495 + ], + [ + 0.17758769723499848, + 0.17727109712472525, + 0.17697164089404852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.337242834382161, + "scoreError" : 0.018107217783755545, + "scoreConfidence" : [ + 0.31913561659840545, + 0.3553500521659166 + ], + "scorePercentiles" : { + "0.0" : 0.3308738535269984, + "50.0" : 0.336070955409201, + "90.0" : 0.34481690473070825, + "95.0" : 0.34481690473070825, + "99.0" : 0.34481690473070825, + "99.9" : 0.34481690473070825, + "99.99" : 0.34481690473070825, + "99.999" : 0.34481690473070825, + "99.9999" : 0.34481690473070825, + "100.0" : 0.34481690473070825 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33195921108713694, + 0.33175661457054706, + 0.3308738535269984 + ], + [ + 0.3401826997312651, + 0.34386772264631044, + 0.34481690473070825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14962478777569557, + "scoreError" : 0.013296020759109756, + "scoreConfidence" : [ + 0.1363287670165858, + 0.16292080853480534 + ], + "scorePercentiles" : { + "0.0" : 0.145046001334397, + "50.0" : 0.14964429165303766, + "90.0" : 0.1546479741436635, + "95.0" : 0.1546479741436635, + "99.0" : 0.1546479741436635, + "99.9" : 0.1546479741436635, + "99.99" : 0.1546479741436635, + "99.999" : 0.1546479741436635, + "99.9999" : 0.1546479741436635, + "100.0" : 0.1546479741436635 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1546479741436635, + 0.1534419615638378, + 0.15369867840895118 + ], + [ + 0.145046001334397, + 0.14584662174223753, + 0.14506748946108652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4000424865094383, + "scoreError" : 0.007436356398219337, + "scoreConfidence" : [ + 0.392606130111219, + 0.4074788429076576 + ], + "scorePercentiles" : { + "0.0" : 0.39681826352128885, + "50.0" : 0.399696655135814, + "90.0" : 0.4049147449487792, + "95.0" : 0.4049147449487792, + "99.0" : 0.4049147449487792, + "99.9" : 0.4049147449487792, + "99.99" : 0.4049147449487792, + "99.999" : 0.4049147449487792, + "99.9999" : 0.4049147449487792, + "100.0" : 0.4049147449487792 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4049147449487792, + 0.3991696065141899, + 0.39681826352128885 + ], + [ + 0.39959757212499003, + 0.3997957381466379, + 0.3999589938007439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15433508632479864, + "scoreError" : 0.013892588588388346, + "scoreConfidence" : [ + 0.1404424977364103, + 0.168227674913187 + ], + "scorePercentiles" : { + "0.0" : 0.14961103918195146, + "50.0" : 0.1543933164859873, + "90.0" : 0.15904309307059816, + "95.0" : 0.15904309307059816, + "99.0" : 0.15904309307059816, + "99.9" : 0.15904309307059816, + "99.99" : 0.15904309307059816, + "99.999" : 0.15904309307059816, + "99.9999" : 0.15904309307059816, + "100.0" : 0.15904309307059816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15883331398802433, + 0.15904309307059816, + 0.15868584941049524 + ], + [ + 0.14961103918195146, + 0.15010078356147935, + 0.14973643873624318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048113976404333035, + "scoreError" : 0.0010519157533025996, + "scoreConfidence" : [ + 0.047062060651030434, + 0.049165892157635636 + ], + "scorePercentiles" : { + "0.0" : 0.04757733251342852, + "50.0" : 0.04822778876981573, + "90.0" : 0.04857862111680552, + "95.0" : 0.04857862111680552, + "99.0" : 0.04857862111680552, + "99.9" : 0.04857862111680552, + "99.99" : 0.04857862111680552, + "99.999" : 0.04857862111680552, + "99.9999" : 0.04857862111680552, + "100.0" : 0.04857862111680552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04857862111680552, + 0.048192631236024366, + 0.048262946303607106 + ], + [ + 0.04757733251342852, + 0.047754013160785064, + 0.04831831409534761 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9339927.80242196, + "scoreError" : 646079.2773135401, + "scoreConfidence" : [ + 8693848.52510842, + 9986007.079735499 + ], + "scorePercentiles" : { + "0.0" : 9024597.714156898, + "50.0" : 9353948.21616831, + "90.0" : 9594757.45637584, + "95.0" : 9594757.45637584, + "99.0" : 9594757.45637584, + "99.9" : 9594757.45637584, + "99.99" : 9594757.45637584, + "99.999" : 9594757.45637584, + "99.9999" : 9594757.45637584, + "100.0" : 9594757.45637584 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9133683.376255708, + 9024597.714156898, + 9330118.939365672 + ], + [ + 9578631.835406698, + 9594757.45637584, + 9377777.492970947 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-24T22:01:42Z-bf3752790305d563f28174ef3343288a7b18b54f-jdk17.json b/performance-results/2025-09-24T22:01:42Z-bf3752790305d563f28174ef3343288a7b18b54f-jdk17.json new file mode 100644 index 0000000000..8f8673e0a2 --- /dev/null +++ b/performance-results/2025-09-24T22:01:42Z-bf3752790305d563f28174ef3343288a7b18b54f-jdk17.json @@ -0,0 +1,1225 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3231476944845446, + "scoreError" : 0.05576763148549442, + "scoreConfidence" : [ + 3.26738006299905, + 3.378915325970039 + ], + "scorePercentiles" : { + "0.0" : 3.3105681887881118, + "50.0" : 3.3263610998001942, + "90.0" : 3.329300389549678, + "95.0" : 3.329300389549678, + "99.0" : 3.329300389549678, + "99.9" : 3.329300389549678, + "99.99" : 3.329300389549678, + "99.999" : 3.329300389549678, + "99.9999" : 3.329300389549678, + "100.0" : 3.329300389549678 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.324532924420686, + 3.329300389549678 + ], + [ + 3.3105681887881118, + 3.3281892751797026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.673522800594215, + "scoreError" : 0.011992732645477735, + "scoreConfidence" : [ + 1.6615300679487373, + 1.685515533239693 + ], + "scorePercentiles" : { + "0.0" : 1.6710786181254627, + "50.0" : 1.6738182254695424, + "90.0" : 1.6753761333123123, + "95.0" : 1.6753761333123123, + "99.0" : 1.6753761333123123, + "99.9" : 1.6753761333123123, + "99.99" : 1.6753761333123123, + "99.999" : 1.6753761333123123, + "99.9999" : 1.6753761333123123, + "100.0" : 1.6753761333123123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6710786181254627, + 1.6744304126336462 + ], + [ + 1.6753761333123123, + 1.6732060383054388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8421733222098159, + "scoreError" : 0.05639745071895826, + "scoreConfidence" : [ + 0.7857758714908576, + 0.8985707729287742 + ], + "scorePercentiles" : { + "0.0" : 0.8294524478277855, + "50.0" : 0.8456688500567878, + "90.0" : 0.8479031408979021, + "95.0" : 0.8479031408979021, + "99.0" : 0.8479031408979021, + "99.9" : 0.8479031408979021, + "99.99" : 0.8479031408979021, + "99.999" : 0.8479031408979021, + "99.9999" : 0.8479031408979021, + "100.0" : 0.8479031408979021 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8294524478277855, + 0.8479031408979021 + ], + [ + 0.843498316866776, + 0.8478393832467996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.088623045270147, + "scoreError" : 0.21721500433002625, + "scoreConfidence" : [ + 15.871408040940121, + 16.305838049600172 + ], + "scorePercentiles" : { + "0.0" : 15.987394154754861, + "50.0" : 16.080145178605214, + "90.0" : 16.183393031782632, + "95.0" : 16.183393031782632, + "99.0" : 16.183393031782632, + "99.9" : 16.183393031782632, + "99.99" : 16.183393031782632, + "99.999" : 16.183393031782632, + "99.9999" : 16.183393031782632, + "100.0" : 16.183393031782632 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.048931726057265, + 15.987394154754861, + 16.035500066178074 + ], + [ + 16.165160661694888, + 16.111358631153166, + 16.183393031782632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2674.1967718242245, + "scoreError" : 275.451747785103, + "scoreConfidence" : [ + 2398.7450240391213, + 2949.6485196093276 + ], + "scorePercentiles" : { + "0.0" : 2577.6714732189, + "50.0" : 2672.2660062051855, + "90.0" : 2777.0927789771727, + "95.0" : 2777.0927789771727, + "99.0" : 2777.0927789771727, + "99.9" : 2777.0927789771727, + "99.99" : 2777.0927789771727, + "99.999" : 2777.0927789771727, + "99.9999" : 2777.0927789771727, + "100.0" : 2777.0927789771727 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2577.6714732189, + 2588.056523892936, + 2588.8455115893316 + ], + [ + 2777.0927789771727, + 2755.686500821039, + 2757.8278424459695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77188.55397778591, + "scoreError" : 1355.7922697502684, + "scoreConfidence" : [ + 75832.76170803564, + 78544.34624753617 + ], + "scorePercentiles" : { + "0.0" : 76725.66787864313, + "50.0" : 77191.39761701284, + "90.0" : 77656.63956431513, + "95.0" : 77656.63956431513, + "99.0" : 77656.63956431513, + "99.9" : 77656.63956431513, + "99.99" : 77656.63956431513, + "99.999" : 77656.63956431513, + "99.9999" : 77656.63956431513, + "100.0" : 77656.63956431513 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76734.40630395035, + 76783.54232299031, + 76725.66787864313 + ], + [ + 77599.25291103538, + 77631.81488578107, + 77656.63956431513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 343.34084509571943, + "scoreError" : 22.532472115448, + "scoreConfidence" : [ + 320.80837298027143, + 365.87331721116743 + ], + "scorePercentiles" : { + "0.0" : 335.7897845360169, + "50.0" : 343.19190842152534, + "90.0" : 351.2292382317256, + "95.0" : 351.2292382317256, + "99.0" : 351.2292382317256, + "99.9" : 351.2292382317256, + "99.99" : 351.2292382317256, + "99.999" : 351.2292382317256, + "99.9999" : 351.2292382317256, + "100.0" : 351.2292382317256 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 336.1767970869616, + 335.7897845360169, + 336.07142653517315 + ], + [ + 351.2292382317256, + 350.20701975608915, + 350.57080442835013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.38151335489005, + "scoreError" : 7.0127894170091025, + "scoreConfidence" : [ + 105.36872393788094, + 119.39430277189915 + ], + "scorePercentiles" : { + "0.0" : 109.85899414170567, + "50.0" : 112.30411326109922, + "90.0" : 114.84925754221614, + "95.0" : 114.84925754221614, + "99.0" : 114.84925754221614, + "99.9" : 114.84925754221614, + "99.99" : 114.84925754221614, + "99.999" : 114.84925754221614, + "99.9999" : 114.84925754221614, + "100.0" : 114.84925754221614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.14104747794393, + 110.33136452413314, + 109.85899414170567 + ], + [ + 114.84925754221614, + 114.8315544452761, + 114.2768619980653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06175043821743703, + "scoreError" : 3.2647425496025006E-4, + "scoreConfidence" : [ + 0.061423963962476784, + 0.06207691247239728 + ], + "scorePercentiles" : { + "0.0" : 0.06156763646829941, + "50.0" : 0.06174904444054971, + "90.0" : 0.061895949753657996, + "95.0" : 0.061895949753657996, + "99.0" : 0.061895949753657996, + "99.9" : 0.061895949753657996, + "99.99" : 0.061895949753657996, + "99.999" : 0.061895949753657996, + "99.9999" : 0.061895949753657996, + "100.0" : 0.061895949753657996 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06170244482699047, + 0.061838509374574864, + 0.061895949753657996 + ], + [ + 0.06178853313973246, + 0.06170955574136697, + 0.06156763646829941 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.856778035658799E-4, + "scoreError" : 2.4676566450271538E-5, + "scoreConfidence" : [ + 3.610012371156084E-4, + 4.1035437001615143E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7755603787877756E-4, + "50.0" : 3.8541237400743485E-4, + "90.0" : 3.9454129757862465E-4, + "95.0" : 3.9454129757862465E-4, + "99.0" : 3.9454129757862465E-4, + "99.9" : 3.9454129757862465E-4, + "99.99" : 3.9454129757862465E-4, + "99.999" : 3.9454129757862465E-4, + "99.9999" : 3.9454129757862465E-4, + "100.0" : 3.9454129757862465E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7780081177138397E-4, + 3.7755603787877756E-4, + 3.776152396684678E-4 + ], + [ + 3.935294982545399E-4, + 3.930239362434858E-4, + 3.9454129757862465E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01313944650746763, + "scoreError" : 3.3036500535129596E-4, + "scoreConfidence" : [ + 0.012809081502116333, + 0.013469811512818926 + ], + "scorePercentiles" : { + "0.0" : 0.013026900289713856, + "50.0" : 0.01313486772305534, + "90.0" : 0.013256904513246766, + "95.0" : 0.013256904513246766, + "99.0" : 0.013256904513246766, + "99.9" : 0.013256904513246766, + "99.99" : 0.013256904513246766, + "99.999" : 0.013256904513246766, + "99.9999" : 0.013256904513246766, + "100.0" : 0.013256904513246766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013035628478839531, + 0.013026900289713856, + 0.013033896908802035 + ], + [ + 0.013249241886932443, + 0.013256904513246766, + 0.01323410696727115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9925912770043442, + "scoreError" : 0.00515487370601758, + "scoreConfidence" : [ + 0.9874364032983267, + 0.9977461507103618 + ], + "scorePercentiles" : { + "0.0" : 0.9905894818740095, + "50.0" : 0.9922810043250647, + "90.0" : 0.9949423251417769, + "95.0" : 0.9949423251417769, + "99.0" : 0.9949423251417769, + "99.9" : 0.9949423251417769, + "99.99" : 0.9949423251417769, + "99.999" : 0.9949423251417769, + "99.9999" : 0.9949423251417769, + "100.0" : 0.9949423251417769 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9949423251417769, + 0.9942933991847286, + 0.9933356795788637 + ], + [ + 0.9911604471754212, + 0.9912263290712657, + 0.9905894818740095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010761148406008184, + "scoreError" : 8.811072557120488E-4, + "scoreConfidence" : [ + 0.009880041150296134, + 0.011642255661720233 + ], + "scorePercentiles" : { + "0.0" : 0.010463606288831737, + "50.0" : 0.01075893932734923, + "90.0" : 0.011056569420765753, + "95.0" : 0.011056569420765753, + "99.0" : 0.011056569420765753, + "99.9" : 0.011056569420765753, + "99.99" : 0.011056569420765753, + "99.999" : 0.011056569420765753, + "99.9999" : 0.011056569420765753, + "100.0" : 0.011056569420765753 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010479100573610562, + 0.010480554989855121, + 0.010463606288831737 + ], + [ + 0.011056569420765753, + 0.01103732366484334, + 0.011049735498142586 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.3629554933279664, + "scoreError" : 0.07084706215816614, + "scoreConfidence" : [ + 3.2921084311698, + 3.4338025554861327 + ], + "scorePercentiles" : { + "0.0" : 3.332798313790806, + "50.0" : 3.3605197265445237, + "90.0" : 3.392697289009498, + "95.0" : 3.392697289009498, + "99.0" : 3.392697289009498, + "99.9" : 3.392697289009498, + "99.99" : 3.392697289009498, + "99.999" : 3.392697289009498, + "99.9999" : 3.392697289009498, + "100.0" : 3.392697289009498 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.332798313790806, + 3.3430916290106953, + 3.347131188085676 + ], + [ + 3.392697289009498, + 3.388106275067751, + 3.3739082650033714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9354392314440556, + "scoreError" : 0.05115472897876458, + "scoreConfidence" : [ + 2.8842845024652912, + 2.98659396042282 + ], + "scorePercentiles" : { + "0.0" : 2.9136747786192836, + "50.0" : 2.936426058380065, + "90.0" : 2.9573701972205795, + "95.0" : 2.9573701972205795, + "99.0" : 2.9573701972205795, + "99.9" : 2.9573701972205795, + "99.99" : 2.9573701972205795, + "99.999" : 2.9573701972205795, + "99.9999" : 2.9573701972205795, + "100.0" : 2.9573701972205795 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9182054037339555, + 2.9268742999707347, + 2.9136747786192836 + ], + [ + 2.945977816789396, + 2.9505328923303833, + 2.9573701972205795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18308782767424345, + "scoreError" : 0.03048334682725773, + "scoreConfidence" : [ + 0.15260448084698572, + 0.21357117450150118 + ], + "scorePercentiles" : { + "0.0" : 0.17305646879867095, + "50.0" : 0.1830986727799045, + "90.0" : 0.19310122084266626, + "95.0" : 0.19310122084266626, + "99.0" : 0.19310122084266626, + "99.9" : 0.19310122084266626, + "99.99" : 0.19310122084266626, + "99.999" : 0.19310122084266626, + "99.9999" : 0.19310122084266626, + "100.0" : 0.19310122084266626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19310122084266626, + 0.19298346324707152, + 0.19294850380103418 + ], + [ + 0.1732488417587748, + 0.1731884675972429, + 0.17305646879867095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3400980680966395, + "scoreError" : 0.03444656442815107, + "scoreConfidence" : [ + 0.3056515036684884, + 0.3745446325247906 + ], + "scorePercentiles" : { + "0.0" : 0.3232931979762713, + "50.0" : 0.34131120267884263, + "90.0" : 0.35398818665486725, + "95.0" : 0.35398818665486725, + "99.0" : 0.35398818665486725, + "99.9" : 0.35398818665486725, + "99.99" : 0.35398818665486725, + "99.999" : 0.35398818665486725, + "99.9999" : 0.35398818665486725, + "100.0" : 0.35398818665486725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33611216391624377, + 0.3298062128157773, + 0.3232931979762713 + ], + [ + 0.34651024144144144, + 0.35087840577523594, + 0.35398818665486725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1502561927593922, + "scoreError" : 0.009203914482233668, + "scoreConfidence" : [ + 0.14105227827715852, + 0.15946010724162588 + ], + "scorePercentiles" : { + "0.0" : 0.14706316475242284, + "50.0" : 0.15025330358786043, + "90.0" : 0.1533787646165644, + "95.0" : 0.1533787646165644, + "99.0" : 0.1533787646165644, + "99.9" : 0.1533787646165644, + "99.99" : 0.1533787646165644, + "99.999" : 0.1533787646165644, + "99.9999" : 0.1533787646165644, + "100.0" : 0.1533787646165644 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15305326886344853, + 0.1533787646165644, + 0.15331390580587792 + ], + [ + 0.14727471420576713, + 0.14745333831227236, + 0.14706316475242284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4050257256483299, + "scoreError" : 0.006761442110198147, + "scoreConfidence" : [ + 0.39826428353813176, + 0.411787167758528 + ], + "scorePercentiles" : { + "0.0" : 0.40190211722863, + "50.0" : 0.40632125634744065, + "90.0" : 0.40693219995930824, + "95.0" : 0.40693219995930824, + "99.0" : 0.40693219995930824, + "99.9" : 0.40693219995930824, + "99.99" : 0.40693219995930824, + "99.999" : 0.40693219995930824, + "99.9999" : 0.40693219995930824, + "100.0" : 0.40693219995930824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40670188197974705, + 0.4066440817338972, + 0.40599843096098415 + ], + [ + 0.40693219995930824, + 0.40197564202741265, + 0.40190211722863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15717311502003936, + "scoreError" : 0.020348306551943675, + "scoreConfidence" : [ + 0.1368248084680957, + 0.17752142157198303 + ], + "scorePercentiles" : { + "0.0" : 0.150462264131923, + "50.0" : 0.1571170464237227, + "90.0" : 0.16415767261445527, + "95.0" : 0.16415767261445527, + "99.0" : 0.16415767261445527, + "99.9" : 0.16415767261445527, + "99.99" : 0.16415767261445527, + "99.999" : 0.16415767261445527, + "99.9999" : 0.16415767261445527, + "100.0" : 0.16415767261445527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15070725198926999, + 0.15048676344183107, + 0.150462264131923 + ], + [ + 0.16415767261445527, + 0.16369789708458152, + 0.1635268408581754 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04669520571657638, + "scoreError" : 0.004501776176268937, + "scoreConfidence" : [ + 0.04219342954030744, + 0.051196981892845314 + ], + "scorePercentiles" : { + "0.0" : 0.04521263395876662, + "50.0" : 0.04669549864524105, + "90.0" : 0.04818418672455081, + "95.0" : 0.04818418672455081, + "99.0" : 0.04818418672455081, + "99.9" : 0.04818418672455081, + "99.99" : 0.04818418672455081, + "99.999" : 0.04818418672455081, + "99.9999" : 0.04818418672455081, + "100.0" : 0.04818418672455081 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04521263395876662, + 0.04524873039402002, + 0.04522801630447073 + ], + [ + 0.04818418672455081, + 0.04815540002118807, + 0.04814226689646208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8884653.787414482, + "scoreError" : 420885.2406286423, + "scoreConfidence" : [ + 8463768.546785839, + 9305539.028043125 + ], + "scorePercentiles" : { + "0.0" : 8726034.162162162, + "50.0" : 8890614.237676539, + "90.0" : 9033791.406504065, + "95.0" : 9033791.406504065, + "99.0" : 9033791.406504065, + "99.9" : 9033791.406504065, + "99.99" : 9033791.406504065, + "99.999" : 9033791.406504065, + "99.9999" : 9033791.406504065, + "100.0" : 9033791.406504065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8783079.978050921, + 8738461.64978166, + 8726034.162162162 + ], + [ + 8998148.497302158, + 9028407.03068592, + 9033791.406504065 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-25T22:51:54Z-8044c9f9e5a411c83dc6ec8f1ba419dbb7be0111-jdk17.json b/performance-results/2025-09-25T22:51:54Z-8044c9f9e5a411c83dc6ec8f1ba419dbb7be0111-jdk17.json new file mode 100644 index 0000000000..5887ba79ec --- /dev/null +++ b/performance-results/2025-09-25T22:51:54Z-8044c9f9e5a411c83dc6ec8f1ba419dbb7be0111-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3203538141842515, + "scoreError" : 0.06843195450057515, + "scoreConfidence" : [ + 3.2519218596836765, + 3.3887857686848264 + ], + "scorePercentiles" : { + "0.0" : 3.310512942014138, + "50.0" : 3.3203396584728004, + "90.0" : 3.3302229977772653, + "95.0" : 3.3302229977772653, + "99.0" : 3.3302229977772653, + "99.9" : 3.3302229977772653, + "99.99" : 3.3302229977772653, + "99.999" : 3.3302229977772653, + "99.9999" : 3.3302229977772653, + "100.0" : 3.3302229977772653 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.310512942014138, + 3.328771601048764 + ], + [ + 3.3119077158968375, + 3.3302229977772653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6753101783662656, + "scoreError" : 0.06576345939874756, + "scoreConfidence" : [ + 1.609546718967518, + 1.7410736377650131 + ], + "scorePercentiles" : { + "0.0" : 1.6625179798556808, + "50.0" : 1.677170636525328, + "90.0" : 1.6843814605587257, + "95.0" : 1.6843814605587257, + "99.0" : 1.6843814605587257, + "99.9" : 1.6843814605587257, + "99.99" : 1.6843814605587257, + "99.999" : 1.6843814605587257, + "99.9999" : 1.6843814605587257, + "100.0" : 1.6843814605587257 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6625179798556808, + 1.6717919318042744 + ], + [ + 1.6825493412463817, + 1.6843814605587257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8441513970844166, + "scoreError" : 0.034194105502912873, + "scoreConfidence" : [ + 0.8099572915815036, + 0.8783455025873295 + ], + "scorePercentiles" : { + "0.0" : 0.8365719449310407, + "50.0" : 0.8455726558218887, + "90.0" : 0.848888331762848, + "95.0" : 0.848888331762848, + "99.0" : 0.848888331762848, + "99.9" : 0.848888331762848, + "99.99" : 0.848888331762848, + "99.999" : 0.848888331762848, + "99.9999" : 0.848888331762848, + "100.0" : 0.848888331762848 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8453780773671984, + 0.845767234276579 + ], + [ + 0.8365719449310407, + 0.848888331762848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.03294025280983, + "scoreError" : 0.1976556805950903, + "scoreConfidence" : [ + 15.83528457221474, + 16.23059593340492 + ], + "scorePercentiles" : { + "0.0" : 15.92770032875591, + "50.0" : 16.040820422105245, + "90.0" : 16.109845560843876, + "95.0" : 16.109845560843876, + "99.0" : 16.109845560843876, + "99.9" : 16.109845560843876, + "99.99" : 16.109845560843876, + "99.999" : 16.109845560843876, + "99.9999" : 16.109845560843876, + "100.0" : 16.109845560843876 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.984878534303371, + 15.92770032875591, + 16.011319494491513 + ], + [ + 16.070321349718977, + 16.09357624874532, + 16.109845560843876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2665.039836112213, + "scoreError" : 210.95958249609416, + "scoreConfidence" : [ + 2454.0802536161186, + 2875.999418608307 + ], + "scorePercentiles" : { + "0.0" : 2591.9228508739297, + "50.0" : 2664.515271634845, + "90.0" : 2739.3715729044493, + "95.0" : 2739.3715729044493, + "99.0" : 2739.3715729044493, + "99.9" : 2739.3715729044493, + "99.99" : 2739.3715729044493, + "99.999" : 2739.3715729044493, + "99.9999" : 2739.3715729044493, + "100.0" : 2739.3715729044493 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2739.3715729044493, + 2728.967405412545, + 2732.4770578174202 + ], + [ + 2591.9228508739297, + 2597.4369918077855, + 2600.063137857145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77753.14366768643, + "scoreError" : 1647.367701229895, + "scoreConfidence" : [ + 76105.77596645652, + 79400.51136891633 + ], + "scorePercentiles" : { + "0.0" : 77206.67910571207, + "50.0" : 77756.5331582586, + "90.0" : 78301.04017976095, + "95.0" : 78301.04017976095, + "99.0" : 78301.04017976095, + "99.9" : 78301.04017976095, + "99.99" : 78301.04017976095, + "99.999" : 78301.04017976095, + "99.9999" : 78301.04017976095, + "100.0" : 78301.04017976095 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77235.95262380512, + 77208.33979848209, + 77206.67910571207 + ], + [ + 78277.11369271205, + 78289.7366056462, + 78301.04017976095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.5743070034512, + "scoreError" : 12.160742174102838, + "scoreConfidence" : [ + 337.4135648293484, + 361.73504917755406 + ], + "scorePercentiles" : { + "0.0" : 345.0800448966692, + "50.0" : 349.7980760372046, + "90.0" : 353.9929245741677, + "95.0" : 353.9929245741677, + "99.0" : 353.9929245741677, + "99.9" : 353.9929245741677, + "99.99" : 353.9929245741677, + "99.999" : 353.9929245741677, + "99.9999" : 353.9929245741677, + "100.0" : 353.9929245741677 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.0800448966692, + 346.40421016010043, + 345.4447822060659 + ], + [ + 353.9929245741677, + 353.19194191430876, + 353.33193826939544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.77131852196857, + "scoreError" : 4.598849033798956, + "scoreConfidence" : [ + 108.17246948816961, + 117.37016755576752 + ], + "scorePercentiles" : { + "0.0" : 110.95237506881116, + "50.0" : 112.86997057982165, + "90.0" : 114.36707453124868, + "95.0" : 114.36707453124868, + "99.0" : 114.36707453124868, + "99.9" : 114.36707453124868, + "99.99" : 114.36707453124868, + "99.999" : 114.36707453124868, + "99.9999" : 114.36707453124868, + "100.0" : 114.36707453124868 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.36707453124868, + 114.06962242683949, + 114.31637936326293 + ], + [ + 111.25214100884533, + 110.95237506881116, + 111.67031873280384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06221255257751246, + "scoreError" : 7.461314301691277E-4, + "scoreConfidence" : [ + 0.06146642114734333, + 0.06295868400768159 + ], + "scorePercentiles" : { + "0.0" : 0.06179716534216608, + "50.0" : 0.062264965051082685, + "90.0" : 0.06248170116651775, + "95.0" : 0.06248170116651775, + "99.0" : 0.06248170116651775, + "99.9" : 0.06248170116651775, + "99.99" : 0.06248170116651775, + "99.999" : 0.06248170116651775, + "99.9999" : 0.06248170116651775, + "100.0" : 0.06248170116651775 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062045573153404684, + 0.06179716534216608, + 0.06213808889303135 + ], + [ + 0.06239184120913401, + 0.06248170116651775, + 0.062420945700820823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.638945930167579E-4, + "scoreError" : 1.5624370855895026E-5, + "scoreConfidence" : [ + 3.4827022216086286E-4, + 3.7951896387265294E-4 + ], + "scorePercentiles" : { + "0.0" : 3.582909813280584E-4, + "50.0" : 3.6394213113750636E-4, + "90.0" : 3.69441621723546E-4, + "95.0" : 3.69441621723546E-4, + "99.0" : 3.69441621723546E-4, + "99.9" : 3.69441621723546E-4, + "99.99" : 3.69441621723546E-4, + "99.999" : 3.69441621723546E-4, + "99.9999" : 3.69441621723546E-4, + "100.0" : 3.69441621723546E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5986307320535533E-4, + 3.5840853006221336E-4, + 3.582909813280584E-4 + ], + [ + 3.69441621723546E-4, + 3.680211890696574E-4, + 3.693421627117169E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.4188472974603, + "scoreError" : 0.07351996236762309, + "scoreConfidence" : [ + 2.345327335092677, + 2.492367259827923 + ], + "scorePercentiles" : { + "0.0" : 2.3821655207241546, + "50.0" : 2.4219387257152247, + "90.0" : 2.4530300706401764, + "95.0" : 2.4530300706401764, + "99.0" : 2.4530300706401764, + "99.9" : 2.4530300706401764, + "99.99" : 2.4530300706401764, + "99.999" : 2.4530300706401764, + "99.9999" : 2.4530300706401764, + "100.0" : 2.4530300706401764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.4530300706401764, + 2.4373710175481356, + 2.4161307424498673 + ], + [ + 2.4277467089805826, + 2.3966397244188835, + 2.3821655207241546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013284746179323487, + "scoreError" : 7.35070455023514E-5, + "scoreConfidence" : [ + 0.013211239133821136, + 0.013358253224825837 + ], + "scorePercentiles" : { + "0.0" : 0.013260811453736315, + "50.0" : 0.013277683403965193, + "90.0" : 0.013317628319385478, + "95.0" : 0.013317628319385478, + "99.0" : 0.013317628319385478, + "99.9" : 0.013317628319385478, + "99.99" : 0.013317628319385478, + "99.999" : 0.013317628319385478, + "99.9999" : 0.013317628319385478, + "100.0" : 0.013317628319385478 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013262359456728167, + 0.013260811453736315, + 0.013263177676507374 + ], + [ + 0.013312311038160581, + 0.013317628319385478, + 0.01329218913142301 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0524298727676078, + "scoreError" : 0.31651896165090876, + "scoreConfidence" : [ + 0.735910911116699, + 1.3689488344185166 + ], + "scorePercentiles" : { + "0.0" : 0.9482974781907832, + "50.0" : 1.0522439812975302, + "90.0" : 1.1560902230057803, + "95.0" : 1.1560902230057803, + "99.0" : 1.1560902230057803, + "99.9" : 1.1560902230057803, + "99.99" : 1.1560902230057803, + "99.999" : 1.1560902230057803, + "99.9999" : 1.1560902230057803, + "100.0" : 1.1560902230057803 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1560902230057803, + 1.1560513331406774, + 1.1542553313711912 + ], + [ + 0.9482974781907832, + 0.9502326312238693, + 0.9496522396733453 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010418188836098465, + "scoreError" : 3.314317211051785E-4, + "scoreConfidence" : [ + 0.010086757114993286, + 0.010749620557203644 + ], + "scorePercentiles" : { + "0.0" : 0.010306873812164262, + "50.0" : 0.010417321032912506, + "90.0" : 0.010531600576274185, + "95.0" : 0.010531600576274185, + "99.0" : 0.010531600576274185, + "99.9" : 0.010531600576274185, + "99.99" : 0.010531600576274185, + "99.999" : 0.010531600576274185, + "99.9999" : 0.010531600576274185, + "100.0" : 0.010531600576274185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010521872718128503, + 0.010531600576274185, + 0.010524613871535379 + ], + [ + 0.010306873812164262, + 0.010311402690791956, + 0.010312769347696508 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.143070142953624, + "scoreError" : 0.15924950116588002, + "scoreConfidence" : [ + 2.983820641787744, + 3.3023196441195037 + ], + "scorePercentiles" : { + "0.0" : 3.07903597044335, + "50.0" : 3.144520015235258, + "90.0" : 3.2052303288461537, + "95.0" : 3.2052303288461537, + "99.0" : 3.2052303288461537, + "99.9" : 3.2052303288461537, + "99.99" : 3.2052303288461537, + "99.999" : 3.2052303288461537, + "99.9999" : 3.2052303288461537, + "100.0" : 3.2052303288461537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2052303288461537, + 3.191565874282068, + 3.185463788535032 + ], + [ + 3.07903597044335, + 3.0935486536796537, + 3.103576241935484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.906543587131805, + "scoreError" : 0.03034544518526469, + "scoreConfidence" : [ + 2.8761981419465403, + 2.9368890323170698 + ], + "scorePercentiles" : { + "0.0" : 2.891932198091382, + "50.0" : 2.91206557131654, + "90.0" : 2.9155620335276966, + "95.0" : 2.9155620335276966, + "99.0" : 2.9155620335276966, + "99.9" : 2.9155620335276966, + "99.99" : 2.9155620335276966, + "99.999" : 2.9155620335276966, + "99.9999" : 2.9155620335276966, + "100.0" : 2.9155620335276966 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9140065979020977, + 2.910162496654059, + 2.9155620335276966 + ], + [ + 2.893629550636574, + 2.913968645979021, + 2.891932198091382 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17725705435945885, + "scoreError" : 6.055690093922831E-4, + "scoreConfidence" : [ + 0.17665148535006656, + 0.17786262336885114 + ], + "scorePercentiles" : { + "0.0" : 0.1769843884395519, + "50.0" : 0.1772270733808966, + "90.0" : 0.17753531285838556, + "95.0" : 0.17753531285838556, + "99.0" : 0.17753531285838556, + "99.9" : 0.17753531285838556, + "99.99" : 0.17753531285838556, + "99.999" : 0.17753531285838556, + "99.9999" : 0.17753531285838556, + "100.0" : 0.17753531285838556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17733039430425762, + 0.177115752966597, + 0.1769843884395519 + ], + [ + 0.17745272513042554, + 0.17753531285838556, + 0.17712375245753556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3261513059580012, + "scoreError" : 0.013117146293980968, + "scoreConfidence" : [ + 0.3130341596640202, + 0.33926845225198216 + ], + "scorePercentiles" : { + "0.0" : 0.32120384329029356, + "50.0" : 0.32638564338564535, + "90.0" : 0.330541314966616, + "95.0" : 0.330541314966616, + "99.0" : 0.330541314966616, + "99.9" : 0.330541314966616, + "99.99" : 0.330541314966616, + "99.999" : 0.330541314966616, + "99.9999" : 0.330541314966616, + "100.0" : 0.330541314966616 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3304295516933752, + 0.330541314966616, + 0.3302385647909649 + ], + [ + 0.32120384329029356, + 0.3219618390264319, + 0.32253272198032573 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14875283208564885, + "scoreError" : 0.0012435358783135042, + "scoreConfidence" : [ + 0.14750929620733536, + 0.14999636796396235 + ], + "scorePercentiles" : { + "0.0" : 0.14815042370596426, + "50.0" : 0.1487523356597178, + "90.0" : 0.14923021421536442, + "95.0" : 0.14923021421536442, + "99.0" : 0.14923021421536442, + "99.9" : 0.14923021421536442, + "99.99" : 0.14923021421536442, + "99.999" : 0.14923021421536442, + "99.9999" : 0.14923021421536442, + "100.0" : 0.14923021421536442 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1491745153124394, + 0.14923021421536442, + 0.1490045715882169 + ], + [ + 0.14845716796068942, + 0.14815042370596426, + 0.14850009973121872 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4172252503987513, + "scoreError" : 0.06007039679088737, + "scoreConfidence" : [ + 0.3571548536078639, + 0.4772956471896387 + ], + "scorePercentiles" : { + "0.0" : 0.39726845087991103, + "50.0" : 0.41712020490577295, + "90.0" : 0.4372320730587618, + "95.0" : 0.4372320730587618, + "99.0" : 0.4372320730587618, + "99.9" : 0.4372320730587618, + "99.99" : 0.4372320730587618, + "99.999" : 0.4372320730587618, + "99.9999" : 0.4372320730587618, + "100.0" : 0.4372320730587618 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3977801517899761, + 0.3979708047596307, + 0.39726845087991103 + ], + [ + 0.43683041685231294, + 0.4362696050519152, + 0.4372320730587618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15898513961172192, + "scoreError" : 0.012389838642356354, + "scoreConfidence" : [ + 0.14659530096936557, + 0.17137497825407827 + ], + "scorePercentiles" : { + "0.0" : 0.15537523358503466, + "50.0" : 0.15668613429757094, + "90.0" : 0.1662426866262156, + "95.0" : 0.1662426866262156, + "99.0" : 0.1662426866262156, + "99.9" : 0.1662426866262156, + "99.99" : 0.1662426866262156, + "99.999" : 0.1662426866262156, + "99.9999" : 0.1662426866262156, + "100.0" : 0.1662426866262156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.156546629492799, + 0.15623203763533253, + 0.15682563910234293 + ], + [ + 0.1662426866262156, + 0.15537523358503466, + 0.16268861122860676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04693592709633288, + "scoreError" : 0.002368394365338667, + "scoreConfidence" : [ + 0.044567532730994217, + 0.049304321461671546 + ], + "scorePercentiles" : { + "0.0" : 0.04609010241968936, + "50.0" : 0.04698496834144105, + "90.0" : 0.04770849034154068, + "95.0" : 0.04770849034154068, + "99.0" : 0.04770849034154068, + "99.9" : 0.04770849034154068, + "99.99" : 0.04770849034154068, + "99.999" : 0.04770849034154068, + "99.9999" : 0.04770849034154068, + "100.0" : 0.04770849034154068 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04770849034154068, + 0.04770098846605165, + 0.047705795030078095 + ], + [ + 0.04609010241968936, + 0.04614123810380706, + 0.046268948216830454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9363977.672261452, + "scoreError" : 567382.0574290771, + "scoreConfidence" : [ + 8796595.614832375, + 9931359.72969053 + ], + "scorePercentiles" : { + "0.0" : 9161486.075091574, + "50.0" : 9360385.903708858, + "90.0" : 9563297.985659655, + "95.0" : 9563297.985659655, + "99.0" : 9563297.985659655, + "99.9" : 9563297.985659655, + "99.99" : 9563297.985659655, + "99.999" : 9563297.985659655, + "99.9999" : 9563297.985659655, + "100.0" : 9563297.985659655 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9191993.295036765, + 9161486.075091574, + 9185890.162534434 + ], + [ + 9528778.512380952, + 9563297.985659655, + 9552420.00286533 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-28T11:37:28Z-3f0de4a7b48ad20c3e30e5c7fea0bf3f57ce5839-jdk17.json b/performance-results/2025-09-28T11:37:28Z-3f0de4a7b48ad20c3e30e5c7fea0bf3f57ce5839-jdk17.json new file mode 100644 index 0000000000..5c49c2f341 --- /dev/null +++ b/performance-results/2025-09-28T11:37:28Z-3f0de4a7b48ad20c3e30e5c7fea0bf3f57ce5839-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.314008789774307, + "scoreError" : 0.04241462006234165, + "scoreConfidence" : [ + 3.2715941697119653, + 3.356423409836649 + ], + "scorePercentiles" : { + "0.0" : 3.3058563388945497, + "50.0" : 3.314677463634016, + "90.0" : 3.320823892934646, + "95.0" : 3.320823892934646, + "99.0" : 3.320823892934646, + "99.9" : 3.320823892934646, + "99.99" : 3.320823892934646, + "99.999" : 3.320823892934646, + "99.9999" : 3.320823892934646, + "100.0" : 3.320823892934646 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.31189856928945, + 3.317456357978582 + ], + [ + 3.3058563388945497, + 3.320823892934646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6752113643392523, + "scoreError" : 0.0208028090179944, + "scoreConfidence" : [ + 1.654408555321258, + 1.6960141733572467 + ], + "scorePercentiles" : { + "0.0" : 1.673019823637084, + "50.0" : 1.6739201551979241, + "90.0" : 1.6799853233240771, + "95.0" : 1.6799853233240771, + "99.0" : 1.6799853233240771, + "99.9" : 1.6799853233240771, + "99.99" : 1.6799853233240771, + "99.999" : 1.6799853233240771, + "99.9999" : 1.6799853233240771, + "100.0" : 1.6799853233240771 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.673634774989389, + 1.6742055354064591 + ], + [ + 1.673019823637084, + 1.6799853233240771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8329697163970288, + "scoreError" : 0.05088711275775986, + "scoreConfidence" : [ + 0.782082603639269, + 0.8838568291547886 + ], + "scorePercentiles" : { + "0.0" : 0.8222081936816599, + "50.0" : 0.8351943924105409, + "90.0" : 0.8392818870853733, + "95.0" : 0.8392818870853733, + "99.0" : 0.8392818870853733, + "99.9" : 0.8392818870853733, + "99.99" : 0.8392818870853733, + "99.999" : 0.8392818870853733, + "99.9999" : 0.8392818870853733, + "100.0" : 0.8392818870853733 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8222081936816599, + 0.8383949343930645 + ], + [ + 0.8319938504280173, + 0.8392818870853733 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.01824741218742, + "scoreError" : 0.6005330335344947, + "scoreConfidence" : [ + 15.417714378652926, + 16.618780445721917 + ], + "scorePercentiles" : { + "0.0" : 15.7934490563086, + "50.0" : 16.017956958849943, + "90.0" : 16.235885357111663, + "95.0" : 16.235885357111663, + "99.0" : 16.235885357111663, + "99.9" : 16.235885357111663, + "99.99" : 16.235885357111663, + "99.999" : 16.235885357111663, + "99.9999" : 16.235885357111663, + "100.0" : 16.235885357111663 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.815825584355034, + 15.865855375482065, + 15.7934490563086 + ], + [ + 16.235885357111663, + 16.228410557649354, + 16.170058542217824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2577.5107578640273, + "scoreError" : 111.47374040521964, + "scoreConfidence" : [ + 2466.0370174588074, + 2688.984498269247 + ], + "scorePercentiles" : { + "0.0" : 2522.7080349621524, + "50.0" : 2588.7759700682336, + "90.0" : 2617.167645128689, + "95.0" : 2617.167645128689, + "99.0" : 2617.167645128689, + "99.9" : 2617.167645128689, + "99.99" : 2617.167645128689, + "99.999" : 2617.167645128689, + "99.9999" : 2617.167645128689, + "100.0" : 2617.167645128689 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2522.7080349621524, + 2537.3380664679185, + 2574.9443412598657 + ], + [ + 2617.167645128689, + 2610.2988604889374, + 2602.607598876601 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74536.45891510353, + "scoreError" : 760.9350853352792, + "scoreConfidence" : [ + 73775.52382976825, + 75297.39400043881 + ], + "scorePercentiles" : { + "0.0" : 74173.98060139695, + "50.0" : 74534.04451030455, + "90.0" : 74963.69515943294, + "95.0" : 74963.69515943294, + "99.0" : 74963.69515943294, + "99.9" : 74963.69515943294, + "99.99" : 74963.69515943294, + "99.999" : 74963.69515943294, + "99.9999" : 74963.69515943294, + "100.0" : 74963.69515943294 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74599.14211702555, + 74173.98060139695, + 74358.22370189102 + ], + [ + 74468.94690358356, + 74654.7650072912, + 74963.69515943294 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.37271673467336, + "scoreError" : 16.44807856446468, + "scoreConfidence" : [ + 332.9246381702087, + 365.820795299138 + ], + "scorePercentiles" : { + "0.0" : 341.9506007561679, + "50.0" : 351.2272547031589, + "90.0" : 354.8430323995652, + "95.0" : 354.8430323995652, + "99.0" : 354.8430323995652, + "99.9" : 354.8430323995652, + "99.99" : 354.8430323995652, + "99.999" : 354.8430323995652, + "99.9999" : 354.8430323995652, + "100.0" : 354.8430323995652 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.3449355411413, + 354.8430323995652, + 353.4770494067884 + ], + [ + 348.97745999952934, + 342.643222304848, + 341.9506007561679 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 111.53757013026215, + "scoreError" : 3.695342388965278, + "scoreConfidence" : [ + 107.84222774129688, + 115.23291251922743 + ], + "scorePercentiles" : { + "0.0" : 110.19823139333693, + "50.0" : 111.61922092653654, + "90.0" : 113.78792427929345, + "95.0" : 113.78792427929345, + "99.0" : 113.78792427929345, + "99.9" : 113.78792427929345, + "99.99" : 113.78792427929345, + "99.999" : 113.78792427929345, + "99.9999" : 113.78792427929345, + "100.0" : 113.78792427929345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.72446258808411, + 111.51397926498898, + 110.19823139333693 + ], + [ + 113.78792427929345, + 111.77900920988479, + 110.22181404598467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06257253346192261, + "scoreError" : 0.0010809347824334002, + "scoreConfidence" : [ + 0.06149159867948921, + 0.06365346824435601 + ], + "scorePercentiles" : { + "0.0" : 0.06227081769951181, + "50.0" : 0.06237118887658796, + "90.0" : 0.06317758539867456, + "95.0" : 0.06317758539867456, + "99.0" : 0.06317758539867456, + "99.9" : 0.06317758539867456, + "99.99" : 0.06317758539867456, + "99.999" : 0.06317758539867456, + "99.9999" : 0.06317758539867456, + "100.0" : 0.06317758539867456 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06317758539867456, + 0.06293695945673791, + 0.062400109822225276 + ], + [ + 0.06234226793095064, + 0.06227081769951181, + 0.06230746046343545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8104422908853084E-4, + "scoreError" : 2.9555531497728788E-5, + "scoreConfidence" : [ + 3.51488697590802E-4, + 4.1059976058625965E-4 + ], + "scorePercentiles" : { + "0.0" : 3.691059545201157E-4, + "50.0" : 3.805522832350023E-4, + "90.0" : 3.933463908654126E-4, + "95.0" : 3.933463908654126E-4, + "99.0" : 3.933463908654126E-4, + "99.9" : 3.933463908654126E-4, + "99.99" : 3.933463908654126E-4, + "99.999" : 3.933463908654126E-4, + "99.9999" : 3.933463908654126E-4, + "100.0" : 3.933463908654126E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.691059545201157E-4, + 3.7277062434607806E-4, + 3.7301779090383755E-4 + ], + [ + 3.933463908654126E-4, + 3.89937838329574E-4, + 3.88086775566167E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.5147762815884227, + "scoreError" : 0.09343401572962383, + "scoreConfidence" : [ + 2.421342265858799, + 2.6082102973180463 + ], + "scorePercentiles" : { + "0.0" : 2.4809094906970977, + "50.0" : 2.502931031156156, + "90.0" : 2.5740077578486877, + "95.0" : 2.5740077578486877, + "99.0" : 2.5740077578486877, + "99.9" : 2.5740077578486877, + "99.99" : 2.5740077578486877, + "99.999" : 2.5740077578486877, + "99.9999" : 2.5740077578486877, + "100.0" : 2.5740077578486877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.5740077578486877, + 2.5031390735735735, + 2.4809094906970977 + ], + [ + 2.5314534720323967, + 2.5027229887387388, + 2.49642490664004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013211917134388703, + "scoreError" : 9.018885064487795E-5, + "scoreConfidence" : [ + 0.013121728283743826, + 0.01330210598503358 + ], + "scorePercentiles" : { + "0.0" : 0.013163604345771449, + "50.0" : 0.013222687797023899, + "90.0" : 0.013245836489541927, + "95.0" : 0.013245836489541927, + "99.0" : 0.013245836489541927, + "99.9" : 0.013245836489541927, + "99.99" : 0.013245836489541927, + "99.999" : 0.013245836489541927, + "99.9999" : 0.013245836489541927, + "100.0" : 0.013245836489541927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013217681109002184, + 0.013182078220074452, + 0.013163604345771449 + ], + [ + 0.013227694485045615, + 0.013245836489541927, + 0.013234608156896584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9963920224707087, + "scoreError" : 0.1162429171424352, + "scoreConfidence" : [ + 0.8801491053282735, + 1.1126349396131439 + ], + "scorePercentiles" : { + "0.0" : 0.9579113626436782, + "50.0" : 0.9957960038934729, + "90.0" : 1.0357600411185914, + "95.0" : 1.0357600411185914, + "99.0" : 1.0357600411185914, + "99.9" : 1.0357600411185914, + "99.99" : 1.0357600411185914, + "99.999" : 1.0357600411185914, + "99.9999" : 1.0357600411185914, + "100.0" : 1.0357600411185914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9579113626436782, + 0.9590306858457998, + 0.9587477846050614 + ], + [ + 1.0357600411185914, + 1.032561321941146, + 1.0343409386699762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01040161657914577, + "scoreError" : 4.2741789208510704E-4, + "scoreConfidence" : [ + 0.009974198687060664, + 0.010829034471230877 + ], + "scorePercentiles" : { + "0.0" : 0.010244133399986888, + "50.0" : 0.01041135940838391, + "90.0" : 0.010548536998907206, + "95.0" : 0.010548536998907206, + "99.0" : 0.010548536998907206, + "99.9" : 0.010548536998907206, + "99.99" : 0.010548536998907206, + "99.999" : 0.010548536998907206, + "99.9999" : 0.010548536998907206, + "100.0" : 0.010548536998907206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010548536998907206, + 0.010544492568442452, + 0.010525658277917065 + ], + [ + 0.010297060538850756, + 0.010244133399986888, + 0.010249817690770257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.439188849709909, + "scoreError" : 0.6665965339509904, + "scoreConfidence" : [ + 2.7725923157589185, + 4.1057853836608995 + ], + "scorePercentiles" : { + "0.0" : 3.205009333119795, + "50.0" : 3.4269708064235713, + "90.0" : 3.677051331617647, + "95.0" : 3.677051331617647, + "99.0" : 3.677051331617647, + "99.9" : 3.677051331617647, + "99.99" : 3.677051331617647, + "99.999" : 3.677051331617647, + "99.9999" : 3.677051331617647, + "100.0" : 3.677051331617647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.205009333119795, + 3.2333436063348415, + 3.230903568475452 + ], + [ + 3.677051331617647, + 3.6682272521994137, + 3.620598006512301 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.904007474328752, + "scoreError" : 0.11602715317106929, + "scoreConfidence" : [ + 2.7879803211576824, + 3.0200346274998213 + ], + "scorePercentiles" : { + "0.0" : 2.8619051696709583, + "50.0" : 2.9044654440418958, + "90.0" : 2.946489165291691, + "95.0" : 2.946489165291691, + "99.0" : 2.946489165291691, + "99.9" : 2.946489165291691, + "99.99" : 2.946489165291691, + "99.999" : 2.946489165291691, + "99.9999" : 2.946489165291691, + "100.0" : 2.946489165291691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9331919228739003, + 2.9441706856049454, + 2.946489165291691 + ], + [ + 2.8619051696709583, + 2.862548937321122, + 2.875738965209891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18632433509154134, + "scoreError" : 0.026608797695635573, + "scoreConfidence" : [ + 0.15971553739590577, + 0.2129331327871769 + ], + "scorePercentiles" : { + "0.0" : 0.17736152262206695, + "50.0" : 0.18608439647790226, + "90.0" : 0.19589980917959568, + "95.0" : 0.19589980917959568, + "99.0" : 0.19589980917959568, + "99.9" : 0.19589980917959568, + "99.99" : 0.19589980917959568, + "99.999" : 0.19589980917959568, + "99.9999" : 0.19589980917959568, + "100.0" : 0.19589980917959568 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19428908323133415, + 0.19589980917959568, + 0.19472617065524292 + ], + [ + 0.17787970972447037, + 0.17778971513653818, + 0.17736152262206695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32866715540648106, + "scoreError" : 8.780975902669096E-4, + "scoreConfidence" : [ + 0.32778905781621415, + 0.329545252996748 + ], + "scorePercentiles" : { + "0.0" : 0.3283038378910738, + "50.0" : 0.3285750315159803, + "90.0" : 0.32920356144451396, + "95.0" : 0.32920356144451396, + "99.0" : 0.32920356144451396, + "99.9" : 0.32920356144451396, + "99.99" : 0.32920356144451396, + "99.999" : 0.32920356144451396, + "99.9999" : 0.32920356144451396, + "100.0" : 0.32920356144451396 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3283038378910738, + 0.32920356144451396, + 0.3285161100160967 + ], + [ + 0.3288293600552413, + 0.32852787493429697, + 0.3286221880976636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14574331270470028, + "scoreError" : 0.004478775253212766, + "scoreConfidence" : [ + 0.1412645374514875, + 0.15022208795791306 + ], + "scorePercentiles" : { + "0.0" : 0.14421321207620091, + "50.0" : 0.14557489910836663, + "90.0" : 0.1474142089536838, + "95.0" : 0.1474142089536838, + "99.0" : 0.1474142089536838, + "99.9" : 0.1474142089536838, + "99.99" : 0.1474142089536838, + "99.999" : 0.1474142089536838, + "99.9999" : 0.1474142089536838, + "100.0" : 0.1474142089536838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14435521397329484, + 0.14421321207620091, + 0.14432962018849135 + ], + [ + 0.14679458424343844, + 0.14735303679309228, + 0.1474142089536838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4034246492513369, + "scoreError" : 0.008997344566457217, + "scoreConfidence" : [ + 0.3944273046848797, + 0.41242199381779415 + ], + "scorePercentiles" : { + "0.0" : 0.4002134101568753, + "50.0" : 0.40292043651474885, + "90.0" : 0.4075895747299776, + "95.0" : 0.4075895747299776, + "99.0" : 0.4075895747299776, + "99.9" : 0.4075895747299776, + "99.99" : 0.4075895747299776, + "99.999" : 0.4075895747299776, + "99.9999" : 0.4075895747299776, + "100.0" : 0.4075895747299776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.401076211718938, + 0.4002134101568753, + 0.4005795036651312 + ], + [ + 0.4063245339265399, + 0.4075895747299776, + 0.40476466131055977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16576659391325677, + "scoreError" : 0.017149104156448592, + "scoreConfidence" : [ + 0.14861748975680816, + 0.18291569806970537 + ], + "scorePercentiles" : { + "0.0" : 0.1599088135663687, + "50.0" : 0.16560058402485228, + "90.0" : 0.17208362872334934, + "95.0" : 0.17208362872334934, + "99.0" : 0.17208362872334934, + "99.9" : 0.17208362872334934, + "99.99" : 0.17208362872334934, + "99.999" : 0.17208362872334934, + "99.9999" : 0.17208362872334934, + "100.0" : 0.17208362872334934 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17126788484329508, + 0.17208362872334934, + 0.1706394701385571 + ], + [ + 0.1605616979111475, + 0.1599088135663687, + 0.16013806829682295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04717768998541607, + "scoreError" : 0.001771405082294385, + "scoreConfidence" : [ + 0.04540628490312169, + 0.04894909506771045 + ], + "scorePercentiles" : { + "0.0" : 0.04658995523243354, + "50.0" : 0.04713105965922479, + "90.0" : 0.04792876627397602, + "95.0" : 0.04792876627397602, + "99.0" : 0.04792876627397602, + "99.9" : 0.04792876627397602, + "99.99" : 0.04792876627397602, + "99.999" : 0.04792876627397602, + "99.9999" : 0.04792876627397602, + "100.0" : 0.04792876627397602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04660038300232066, + 0.04658995523243354, + 0.04663569766498314 + ], + [ + 0.0476849160853166, + 0.04762642165346643, + 0.04792876627397602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9213264.924470434, + "scoreError" : 868967.8667856371, + "scoreConfidence" : [ + 8344297.057684797, + 1.008223279125607E7 + ], + "scorePercentiles" : { + "0.0" : 8886337.555950267, + "50.0" : 9140098.366477784, + "90.0" : 9639563.648362234, + "95.0" : 9639563.648362234, + "99.0" : 9639563.648362234, + "99.9" : 9639563.648362234, + "99.99" : 9639563.648362234, + "99.999" : 9639563.648362234, + "99.9999" : 9639563.648362234, + "100.0" : 9639563.648362234 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9128992.959854014, + 8937190.236818587, + 8886337.555950267 + ], + [ + 9639563.648362234, + 9536301.37273594, + 9151203.773101555 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-09-28T12:49:23Z-45a7d597c343e87ccd2736f634eb676520eef5a1-jdk17.json b/performance-results/2025-09-28T12:49:23Z-45a7d597c343e87ccd2736f634eb676520eef5a1-jdk17.json new file mode 100644 index 0000000000..976edbb79d --- /dev/null +++ b/performance-results/2025-09-28T12:49:23Z-45a7d597c343e87ccd2736f634eb676520eef5a1-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3573770676804315, + "scoreError" : 0.0372023740197798, + "scoreConfidence" : [ + 3.3201746936606518, + 3.3945794417002113 + ], + "scorePercentiles" : { + "0.0" : 3.351963127371617, + "50.0" : 3.356040705840449, + "90.0" : 3.365463731669212, + "95.0" : 3.365463731669212, + "99.0" : 3.365463731669212, + "99.9" : 3.365463731669212, + "99.99" : 3.365463731669212, + "99.999" : 3.365463731669212, + "99.9999" : 3.365463731669212, + "100.0" : 3.365463731669212 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3568010632721865, + 3.365463731669212 + ], + [ + 3.351963127371617, + 3.3552803484087113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.701446286514562, + "scoreError" : 0.03327606838783087, + "scoreConfidence" : [ + 1.6681702181267313, + 1.734722354902393 + ], + "scorePercentiles" : { + "0.0" : 1.6957454881850913, + "50.0" : 1.7015439786603643, + "90.0" : 1.7069517005524286, + "95.0" : 1.7069517005524286, + "99.0" : 1.7069517005524286, + "99.9" : 1.7069517005524286, + "99.99" : 1.7069517005524286, + "99.999" : 1.7069517005524286, + "99.9999" : 1.7069517005524286, + "100.0" : 1.7069517005524286 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6957454881850913, + 1.698652219853892 + ], + [ + 1.7044357374668364, + 1.7069517005524286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.854620592777377, + "scoreError" : 0.025643493474185607, + "scoreConfidence" : [ + 0.8289770993031914, + 0.8802640862515626 + ], + "scorePercentiles" : { + "0.0" : 0.8494265449807054, + "50.0" : 0.855568089030005, + "90.0" : 0.8579196480687928, + "95.0" : 0.8579196480687928, + "99.0" : 0.8579196480687928, + "99.9" : 0.8579196480687928, + "99.99" : 0.8579196480687928, + "99.999" : 0.8579196480687928, + "99.9999" : 0.8579196480687928, + "100.0" : 0.8579196480687928 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8579196480687928, + 0.8575156802151622 + ], + [ + 0.8494265449807054, + 0.8536204978448477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.395395271947198, + "scoreError" : 0.14479159077231285, + "scoreConfidence" : [ + 16.250603681174884, + 16.540186862719512 + ], + "scorePercentiles" : { + "0.0" : 16.338887723536807, + "50.0" : 16.378373580770432, + "90.0" : 16.466695458347516, + "95.0" : 16.466695458347516, + "99.0" : 16.466695458347516, + "99.9" : 16.466695458347516, + "99.99" : 16.466695458347516, + "99.999" : 16.466695458347516, + "99.9999" : 16.466695458347516, + "100.0" : 16.466695458347516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.338887723536807, + 16.364623136062534, + 16.36080159583121 + ], + [ + 16.44923969242679, + 16.466695458347516, + 16.39212402547833 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2696.341750705173, + "scoreError" : 233.58282054999106, + "scoreConfidence" : [ + 2462.758930155182, + 2929.924571255164 + ], + "scorePercentiles" : { + "0.0" : 2619.1688203144463, + "50.0" : 2694.571061141222, + "90.0" : 2775.160949253664, + "95.0" : 2775.160949253664, + "99.0" : 2775.160949253664, + "99.9" : 2775.160949253664, + "99.99" : 2775.160949253664, + "99.999" : 2775.160949253664, + "99.9999" : 2775.160949253664, + "100.0" : 2775.160949253664 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2621.766253649908, + 2620.1031231688867, + 2619.1688203144463 + ], + [ + 2767.375868632536, + 2774.4754892115957, + 2775.160949253664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77939.56196765513, + "scoreError" : 370.0781000400471, + "scoreConfidence" : [ + 77569.48386761508, + 78309.64006769517 + ], + "scorePercentiles" : { + "0.0" : 77810.96008250768, + "50.0" : 77916.24211682155, + "90.0" : 78094.8505761046, + "95.0" : 78094.8505761046, + "99.0" : 78094.8505761046, + "99.9" : 78094.8505761046, + "99.99" : 78094.8505761046, + "99.999" : 78094.8505761046, + "99.9999" : 78094.8505761046, + "100.0" : 78094.8505761046 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 78073.67239108359, + 78094.8505761046, + 78000.8788592945 + ], + [ + 77810.96008250768, + 77825.40452259178, + 77831.6053743486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 363.49503939201776, + "scoreError" : 1.1373509945862947, + "scoreConfidence" : [ + 362.35768839743145, + 364.6323903866041 + ], + "scorePercentiles" : { + "0.0" : 363.00841301369746, + "50.0" : 363.5043540533728, + "90.0" : 364.0557112029149, + "95.0" : 364.0557112029149, + "99.0" : 364.0557112029149, + "99.9" : 364.0557112029149, + "99.99" : 364.0557112029149, + "99.999" : 364.0557112029149, + "99.9999" : 364.0557112029149, + "100.0" : 364.0557112029149 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 363.8038489710616, + 363.589890237666, + 363.4188178690797 + ], + [ + 363.093555057687, + 364.0557112029149, + 363.00841301369746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.47123648883388, + "scoreError" : 4.5718040236269335, + "scoreConfidence" : [ + 111.89943246520694, + 121.04304051246082 + ], + "scorePercentiles" : { + "0.0" : 114.90833861798698, + "50.0" : 116.44918455538483, + "90.0" : 118.04070475442956, + "95.0" : 118.04070475442956, + "99.0" : 118.04070475442956, + "99.9" : 118.04070475442956, + "99.99" : 118.04070475442956, + "99.999" : 118.04070475442956, + "99.9999" : 118.04070475442956, + "100.0" : 118.04070475442956 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.97271818366463, + 117.86087688337253, + 118.04070475442956 + ], + [ + 114.90833861798698, + 115.00728826615243, + 115.03749222739714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06047494639856729, + "scoreError" : 1.5391103258267883E-4, + "scoreConfidence" : [ + 0.06032103536598461, + 0.06062885743114997 + ], + "scorePercentiles" : { + "0.0" : 0.06040109985926807, + "50.0" : 0.06047085468113968, + "90.0" : 0.06054552628679364, + "95.0" : 0.06054552628679364, + "99.0" : 0.06054552628679364, + "99.9" : 0.06054552628679364, + "99.99" : 0.06054552628679364, + "99.999" : 0.06054552628679364, + "99.9999" : 0.06054552628679364, + "100.0" : 0.06054552628679364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06047025328802162, + 0.06040109985926807, + 0.06054552628679364 + ], + [ + 0.06052825221075568, + 0.060471456074257725, + 0.060433090672307 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5307541354231633E-4, + "scoreError" : 8.108311117769504E-6, + "scoreConfidence" : [ + 3.449671024245468E-4, + 3.6118372466008585E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5036943791096623E-4, + "50.0" : 3.529057588032556E-4, + "90.0" : 3.56285345911571E-4, + "95.0" : 3.56285345911571E-4, + "99.0" : 3.56285345911571E-4, + "99.9" : 3.56285345911571E-4, + "99.99" : 3.56285345911571E-4, + "99.999" : 3.56285345911571E-4, + "99.9999" : 3.56285345911571E-4, + "100.0" : 3.56285345911571E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5551347483793217E-4, + 3.552934506510772E-4, + 3.56285345911571E-4 + ], + [ + 3.504727049869175E-4, + 3.5036943791096623E-4, + 3.50518066955434E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6495.137311416667, + "scoreError" : 10.580800927013952, + "scoreConfidence" : [ + 6484.556510489653, + 6505.718112343681 + ], + "scorePercentiles" : { + "0.0" : 6489.9264275, + "50.0" : 6496.776519, + "90.0" : 6498.245094, + "95.0" : 6498.245094, + "99.0" : 6498.245094, + "99.9" : 6498.245094, + "99.99" : 6498.245094, + "99.999" : 6498.245094, + "99.9999" : 6498.245094, + "100.0" : 6498.245094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 6497.7046415, + 6498.245094, + 6490.9036535 + ], + [ + 6498.1956555, + 6495.8483965, + 6489.9264275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013037776364079068, + "scoreError" : 3.272341730244028E-4, + "scoreConfidence" : [ + 0.012710542191054665, + 0.013365010537103471 + ], + "scorePercentiles" : { + "0.0" : 0.01292964683849046, + "50.0" : 0.013038261747219757, + "90.0" : 0.01314484805426117, + "95.0" : 0.01314484805426117, + "99.0" : 0.01314484805426117, + "99.9" : 0.01314484805426117, + "99.99" : 0.01314484805426117, + "99.999" : 0.01314484805426117, + "99.9999" : 0.01314484805426117, + "100.0" : 0.01314484805426117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01314484805426117, + 0.013144845183670144, + 0.013143196990247878 + ], + [ + 0.01292964683849046, + 0.012933326504191638, + 0.012930794613613118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9983094399180912, + "scoreError" : 0.049334236135696506, + "scoreConfidence" : [ + 0.9489752037823946, + 1.0476436760537877 + ], + "scorePercentiles" : { + "0.0" : 0.9814484756624141, + "50.0" : 0.9983464602973076, + "90.0" : 1.0151593442290123, + "95.0" : 1.0151593442290123, + "99.0" : 1.0151593442290123, + "99.9" : 1.0151593442290123, + "99.99" : 1.0151593442290123, + "99.999" : 1.0151593442290123, + "99.9999" : 1.0151593442290123, + "100.0" : 1.0151593442290123 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9814484756624141, + 0.9828023950471698, + 0.9825279108862252 + ], + [ + 1.0138905255474453, + 1.0151593442290123, + 1.0140279881362806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010196969733109624, + "scoreError" : 2.842842407934491E-4, + "scoreConfidence" : [ + 0.009912685492316175, + 0.010481253973903072 + ], + "scorePercentiles" : { + "0.0" : 0.010099291052644335, + "50.0" : 0.010196557820035843, + "90.0" : 0.010297588320338082, + "95.0" : 0.010297588320338082, + "99.0" : 0.010297588320338082, + "99.9" : 0.010297588320338082, + "99.99" : 0.010297588320338082, + "99.999" : 0.010297588320338082, + "99.9999" : 0.010297588320338082, + "100.0" : 0.010297588320338082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010099291052644335, + 0.010103434936703745, + 0.010111070112432258 + ], + [ + 0.01028838844889989, + 0.010297588320338082, + 0.01028204552763943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0740147590391533, + "scoreError" : 0.20419846165742117, + "scoreConfidence" : [ + 2.8698162973817323, + 3.2782132206965744 + ], + "scorePercentiles" : { + "0.0" : 3.0060921971153847, + "50.0" : 3.069600350254446, + "90.0" : 3.147572238514789, + "95.0" : 3.147572238514789, + "99.0" : 3.147572238514789, + "99.9" : 3.147572238514789, + "99.99" : 3.147572238514789, + "99.999" : 3.147572238514789, + "99.9999" : 3.147572238514789, + "100.0" : 3.147572238514789 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.147572238514789, + 3.144509776869893, + 3.1285537023139462 + ], + [ + 3.0060921971153847, + 3.0067136412259616, + 3.0106469981949457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.689742077173957, + "scoreError" : 0.05924811034072794, + "scoreConfidence" : [ + 2.630493966833229, + 2.7489901875146847 + ], + "scorePercentiles" : { + "0.0" : 2.668860516808965, + "50.0" : 2.6896800114771615, + "90.0" : 2.710820702900515, + "95.0" : 2.710820702900515, + "99.0" : 2.710820702900515, + "99.9" : 2.710820702900515, + "99.99" : 2.710820702900515, + "99.999" : 2.710820702900515, + "99.9999" : 2.710820702900515, + "100.0" : 2.710820702900515 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.67061774259012, + 2.668860516808965, + 2.6720305841346152 + ], + [ + 2.710820702900515, + 2.7087934777898157, + 2.707329438819708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17732525610375874, + "scoreError" : 0.0026547821042158673, + "scoreConfidence" : [ + 0.17467047399954286, + 0.17998003820797462 + ], + "scorePercentiles" : { + "0.0" : 0.17670998395504586, + "50.0" : 0.1770115686810908, + "90.0" : 0.17921452971326166, + "95.0" : 0.17921452971326166, + "99.0" : 0.17921452971326166, + "99.9" : 0.17921452971326166, + "99.99" : 0.17921452971326166, + "99.999" : 0.17921452971326166, + "99.9999" : 0.17921452971326166, + "100.0" : 0.17921452971326166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17921452971326166, + 0.17722614725481162, + 0.17712795079528146 + ], + [ + 0.17689518656690018, + 0.17670998395504586, + 0.17677773833725186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3214128758542316, + "scoreError" : 0.012688790318188231, + "scoreConfidence" : [ + 0.30872408553604336, + 0.3341016661724199 + ], + "scorePercentiles" : { + "0.0" : 0.3172479205951399, + "50.0" : 0.3212981714145742, + "90.0" : 0.3258250528476476, + "95.0" : 0.3258250528476476, + "99.0" : 0.3258250528476476, + "99.9" : 0.3258250528476476, + "99.99" : 0.3258250528476476, + "99.999" : 0.3258250528476476, + "99.9999" : 0.3258250528476476, + "100.0" : 0.3258250528476476 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3173584111262734, + 0.3172479205951399, + 0.3172511645517416 + ], + [ + 0.3258250528476476, + 0.32523793170287496, + 0.32555677430171237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14544657560568708, + "scoreError" : 0.013737668575178828, + "scoreConfidence" : [ + 0.13170890703050825, + 0.1591842441808659 + ], + "scorePercentiles" : { + "0.0" : 0.14093904800293147, + "50.0" : 0.14526542745690146, + "90.0" : 0.15074377021058502, + "95.0" : 0.15074377021058502, + "99.0" : 0.15074377021058502, + "99.9" : 0.15074377021058502, + "99.99" : 0.15074377021058502, + "99.999" : 0.15074377021058502, + "99.9999" : 0.15074377021058502, + "100.0" : 0.15074377021058502 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15074377021058502, + 0.1495175238999447, + 0.1494337046069246 + ], + [ + 0.14093904800293147, + 0.14094825660685845, + 0.1410971503068783 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4007326632808945, + "scoreError" : 0.014021736490580642, + "scoreConfidence" : [ + 0.3867109267903139, + 0.41475439977147516 + ], + "scorePercentiles" : { + "0.0" : 0.3945065894907097, + "50.0" : 0.4026830640948923, + "90.0" : 0.40494041778353645, + "95.0" : 0.40494041778353645, + "99.0" : 0.40494041778353645, + "99.9" : 0.40494041778353645, + "99.99" : 0.40494041778353645, + "99.999" : 0.40494041778353645, + "99.9999" : 0.40494041778353645, + "100.0" : 0.40494041778353645 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40494041778353645, + 0.4048262804112861, + 0.4047404325724462 + ], + [ + 0.40062569561733835, + 0.39475656381005014, + 0.3945065894907097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15950826254130665, + "scoreError" : 0.005857551022203361, + "scoreConfidence" : [ + 0.15365071151910328, + 0.16536581356351002 + ], + "scorePercentiles" : { + "0.0" : 0.15761391022711155, + "50.0" : 0.15910788549247828, + "90.0" : 0.16259217992033168, + "95.0" : 0.16259217992033168, + "99.0" : 0.16259217992033168, + "99.9" : 0.16259217992033168, + "99.99" : 0.16259217992033168, + "99.999" : 0.16259217992033168, + "99.9999" : 0.16259217992033168, + "100.0" : 0.16259217992033168 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15776121015018615, + 0.15778502313068998, + 0.15761391022711155 + ], + [ + 0.16259217992033168, + 0.1604307478542666, + 0.16086650396525376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046539717559369836, + "scoreError" : 0.0014585768209207485, + "scoreConfidence" : [ + 0.045081140738449085, + 0.04799829438029059 + ], + "scorePercentiles" : { + "0.0" : 0.04589920037453184, + "50.0" : 0.04672463978271757, + "90.0" : 0.0470626504428527, + "95.0" : 0.0470626504428527, + "99.0" : 0.0470626504428527, + "99.9" : 0.0470626504428527, + "99.99" : 0.0470626504428527, + "99.999" : 0.0470626504428527, + "99.9999" : 0.0470626504428527, + "100.0" : 0.0470626504428527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04653922285669077, + 0.045913561812455234, + 0.04589920037453184 + ], + [ + 0.046910056708744374, + 0.04691361316094408, + 0.0470626504428527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8516975.72418855, + "scoreError" : 115893.91510264672, + "scoreConfidence" : [ + 8401081.809085902, + 8632869.639291197 + ], + "scorePercentiles" : { + "0.0" : 8468265.323454699, + "50.0" : 8522485.578783356, + "90.0" : 8563004.254280822, + "95.0" : 8563004.254280822, + "99.0" : 8563004.254280822, + "99.9" : 8563004.254280822, + "99.99" : 8563004.254280822, + "99.999" : 8563004.254280822, + "99.9999" : 8563004.254280822, + "100.0" : 8563004.254280822 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8563004.254280822, + 8550074.05982906, + 8546733.076003416 + ], + [ + 8475539.55, + 8498238.081563296, + 8468265.323454699 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-06T21:44:36Z-bca9112f6208e7b5f3be90f18826e8055de171a6-jdk17.json b/performance-results/2025-10-06T21:44:36Z-bca9112f6208e7b5f3be90f18826e8055de171a6-jdk17.json new file mode 100644 index 0000000000..ea60a53faf --- /dev/null +++ b/performance-results/2025-10-06T21:44:36Z-bca9112f6208e7b5f3be90f18826e8055de171a6-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3393840661134018, + "scoreError" : 0.06577381372992772, + "scoreConfidence" : [ + 3.2736102523834743, + 3.4051578798433293 + ], + "scorePercentiles" : { + "0.0" : 3.324824336952175, + "50.0" : 3.342230541305809, + "90.0" : 3.348250844889814, + "95.0" : 3.348250844889814, + "99.0" : 3.348250844889814, + "99.9" : 3.348250844889814, + "99.99" : 3.348250844889814, + "99.999" : 3.348250844889814, + "99.9999" : 3.348250844889814, + "100.0" : 3.348250844889814 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.324824336952175, + 3.343644678852801 + ], + [ + 3.3408164037588173, + 3.348250844889814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6816654049867235, + "scoreError" : 0.021638080553336818, + "scoreConfidence" : [ + 1.6600273244333867, + 1.7033034855400602 + ], + "scorePercentiles" : { + "0.0" : 1.677480251522569, + "50.0" : 1.6820635190082318, + "90.0" : 1.6850543304078613, + "95.0" : 1.6850543304078613, + "99.0" : 1.6850543304078613, + "99.9" : 1.6850543304078613, + "99.99" : 1.6850543304078613, + "99.999" : 1.6850543304078613, + "99.9999" : 1.6850543304078613, + "100.0" : 1.6850543304078613 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.677480251522569, + 1.6805937601735885 + ], + [ + 1.6850543304078613, + 1.6835332778428749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8457285364386182, + "scoreError" : 0.038827145365275886, + "scoreConfidence" : [ + 0.8069013910733424, + 0.8845556818038941 + ], + "scorePercentiles" : { + "0.0" : 0.838465004910209, + "50.0" : 0.8462767806487431, + "90.0" : 0.8518955795467777, + "95.0" : 0.8518955795467777, + "99.0" : 0.8518955795467777, + "99.9" : 0.8518955795467777, + "99.99" : 0.8518955795467777, + "99.999" : 0.8518955795467777, + "99.9999" : 0.8518955795467777, + "100.0" : 0.8518955795467777 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.838465004910209, + 0.843368573411396 + ], + [ + 0.8491849878860902, + 0.8518955795467777 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.105836789241128, + "scoreError" : 0.7476140595016426, + "scoreConfidence" : [ + 15.358222729739484, + 16.85345084874277 + ], + "scorePercentiles" : { + "0.0" : 15.803397747375364, + "50.0" : 16.14443823731033, + "90.0" : 16.358409899958833, + "95.0" : 16.358409899958833, + "99.0" : 16.358409899958833, + "99.9" : 16.358409899958833, + "99.99" : 16.358409899958833, + "99.999" : 16.358409899958833, + "99.9999" : 16.358409899958833, + "100.0" : 16.358409899958833 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.965313861662315, + 15.834673292686755, + 15.803397747375364 + ], + [ + 16.34966332080516, + 16.358409899958833, + 16.323562612958344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2757.5314044709335, + "scoreError" : 118.10932654751461, + "scoreConfidence" : [ + 2639.422077923419, + 2875.640731018448 + ], + "scorePercentiles" : { + "0.0" : 2682.2377180417216, + "50.0" : 2775.9836814886876, + "90.0" : 2788.5927333305763, + "95.0" : 2788.5927333305763, + "99.0" : 2788.5927333305763, + "99.9" : 2788.5927333305763, + "99.99" : 2788.5927333305763, + "99.999" : 2788.5927333305763, + "99.9999" : 2788.5927333305763, + "100.0" : 2788.5927333305763 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.2377180417216, + 2734.191641631494, + 2770.073687822864 + ], + [ + 2788.198970844432, + 2788.5927333305763, + 2781.8936751545116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76135.30236437214, + "scoreError" : 1608.2176763015964, + "scoreConfidence" : [ + 74527.08468807054, + 77743.52004067374 + ], + "scorePercentiles" : { + "0.0" : 75483.43288316099, + "50.0" : 76001.59549419908, + "90.0" : 77079.4385852989, + "95.0" : 77079.4385852989, + "99.0" : 77079.4385852989, + "99.9" : 77079.4385852989, + "99.99" : 77079.4385852989, + "99.999" : 77079.4385852989, + "99.9999" : 77079.4385852989, + "100.0" : 77079.4385852989 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75483.43288316099, + 75778.4903955946, + 75835.83729909846 + ], + [ + 76467.26133378022, + 76167.35368929969, + 77079.4385852989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.07642789187395, + "scoreError" : 11.719217608540701, + "scoreConfidence" : [ + 340.35721028333325, + 363.79564550041465 + ], + "scorePercentiles" : { + "0.0" : 346.8989537117176, + "50.0" : 352.17126161735735, + "90.0" : 356.7194454721357, + "95.0" : 356.7194454721357, + "99.0" : 356.7194454721357, + "99.9" : 356.7194454721357, + "99.99" : 356.7194454721357, + "99.999" : 356.7194454721357, + "99.9999" : 356.7194454721357, + "100.0" : 356.7194454721357 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.9765745343409, + 354.5265137087858, + 356.7194454721357 + ], + [ + 346.8989537117176, + 348.52107039833476, + 349.81600952592885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.11206238986468, + "scoreError" : 6.764101107279889, + "scoreConfidence" : [ + 108.34796128258479, + 121.87616349714456 + ], + "scorePercentiles" : { + "0.0" : 112.51581700465533, + "50.0" : 115.40244783510373, + "90.0" : 117.60311527251159, + "95.0" : 117.60311527251159, + "99.0" : 117.60311527251159, + "99.9" : 117.60311527251159, + "99.99" : 117.60311527251159, + "99.999" : 117.60311527251159, + "99.9999" : 117.60311527251159, + "100.0" : 117.60311527251159 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.51581700465533, + 113.72433704917121, + 112.61235994888663 + ], + [ + 117.08055862103625, + 117.60311527251159, + 117.13618644292706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06174467706577219, + "scoreError" : 0.001565407068951718, + "scoreConfidence" : [ + 0.060179269996820474, + 0.06331008413472392 + ], + "scorePercentiles" : { + "0.0" : 0.06124538956393925, + "50.0" : 0.061552499225385256, + "90.0" : 0.06278906514887045, + "95.0" : 0.06278906514887045, + "99.0" : 0.06278906514887045, + "99.9" : 0.06278906514887045, + "99.99" : 0.06278906514887045, + "99.999" : 0.06278906514887045, + "99.9999" : 0.06278906514887045, + "100.0" : 0.06278906514887045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06124538956393925, + 0.061408047614953824, + 0.06155167350493636 + ], + [ + 0.061553324945834154, + 0.06278906514887045, + 0.061920561616099073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5724794934487446E-4, + "scoreError" : 3.526658847602442E-5, + "scoreConfidence" : [ + 3.2198136086885004E-4, + 3.925145378208989E-4 + ], + "scorePercentiles" : { + "0.0" : 3.443754723307163E-4, + "50.0" : 3.5712952669604493E-4, + "90.0" : 3.7053693491823493E-4, + "95.0" : 3.7053693491823493E-4, + "99.0" : 3.7053693491823493E-4, + "99.9" : 3.7053693491823493E-4, + "99.99" : 3.7053693491823493E-4, + "99.999" : 3.7053693491823493E-4, + "99.9999" : 3.7053693491823493E-4, + "100.0" : 3.7053693491823493E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7053693491823493E-4, + 3.670358949765986E-4, + 3.683878902289874E-4 + ], + [ + 3.443754723307163E-4, + 3.4722315841549125E-4, + 3.4592834519921834E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6494.962316916667, + "scoreError" : 13.879348012771155, + "scoreConfidence" : [ + 6481.082968903896, + 6508.841664929439 + ], + "scorePercentiles" : { + "0.0" : 6489.461133, + "50.0" : 6495.61089375, + "90.0" : 6500.003721, + "95.0" : 6500.003721, + "99.0" : 6500.003721, + "99.9" : 6500.003721, + "99.99" : 6500.003721, + "99.999" : 6500.003721, + "99.9999" : 6500.003721, + "100.0" : 6500.003721 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 6498.543426, + 6492.6783615, + 6489.623364 + ], + [ + 6499.463896, + 6500.003721, + 6489.461133 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012903655705554129, + "scoreError" : 9.944685277176038E-5, + "scoreConfidence" : [ + 0.012804208852782368, + 0.01300310255832589 + ], + "scorePercentiles" : { + "0.0" : 0.012854199278631713, + "50.0" : 0.012898045516914461, + "90.0" : 0.01295764951091865, + "95.0" : 0.01295764951091865, + "99.0" : 0.01295764951091865, + "99.9" : 0.01295764951091865, + "99.99" : 0.01295764951091865, + "99.999" : 0.01295764951091865, + "99.9999" : 0.01295764951091865, + "100.0" : 0.01295764951091865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012903236838234345, + 0.012854199278631713, + 0.01288714873378979 + ], + [ + 0.012892854195594577, + 0.012926845676155709, + 0.01295764951091865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0462064851949922, + "scoreError" : 0.35056126391919534, + "scoreConfidence" : [ + 0.6956452212757969, + 1.3967677491141874 + ], + "scorePercentiles" : { + "0.0" : 0.9313821275961628, + "50.0" : 1.0445490370813104, + "90.0" : 1.163402069799907, + "95.0" : 1.163402069799907, + "99.0" : 1.163402069799907, + "99.9" : 1.163402069799907, + "99.99" : 1.163402069799907, + "99.999" : 1.163402069799907, + "99.9999" : 1.163402069799907, + "100.0" : 1.163402069799907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9313821275961628, + 0.9329518383244706, + 0.9319859958997297 + ], + [ + 1.1613706437115319, + 1.1561462358381502, + 1.163402069799907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010154002720403862, + "scoreError" : 4.6861578855748024E-4, + "scoreConfidence" : [ + 0.009685386931846382, + 0.010622618508961342 + ], + "scorePercentiles" : { + "0.0" : 0.00995593061703174, + "50.0" : 0.010151347808365265, + "90.0" : 0.010376544259008691, + "95.0" : 0.010376544259008691, + "99.0" : 0.010376544259008691, + "99.9" : 0.010376544259008691, + "99.99" : 0.010376544259008691, + "99.999" : 0.010376544259008691, + "99.9999" : 0.010376544259008691, + "100.0" : 0.010376544259008691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010047634106446, + 0.01002366362289584, + 0.00995593061703174 + ], + [ + 0.010376544259008691, + 0.01025506151028453, + 0.010265182206756382 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.958952399173146, + "scoreError" : 0.21317415348341887, + "scoreConfidence" : [ + 2.7457782456897273, + 3.172126552656565 + ], + "scorePercentiles" : { + "0.0" : 2.8789451076568797, + "50.0" : 2.9589990730492977, + "90.0" : 3.0562721967012827, + "95.0" : 3.0562721967012827, + "99.0" : 3.0562721967012827, + "99.9" : 3.0562721967012827, + "99.99" : 3.0562721967012827, + "99.999" : 3.0562721967012827, + "99.9999" : 3.0562721967012827, + "100.0" : 3.0562721967012827 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0562721967012827, + 3.0114263010234796, + 3.0108939879590606 + ], + [ + 2.8789451076568797, + 2.9071041581395347, + 2.8890726435586367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7450186867506083, + "scoreError" : 0.06388448066908226, + "scoreConfidence" : [ + 2.681134206081526, + 2.8089031674196905 + ], + "scorePercentiles" : { + "0.0" : 2.7226824956450737, + "50.0" : 2.733702624873194, + "90.0" : 2.775657668609492, + "95.0" : 2.775657668609492, + "99.0" : 2.775657668609492, + "99.9" : 2.775657668609492, + "99.99" : 2.775657668609492, + "99.999" : 2.775657668609492, + "99.9999" : 2.775657668609492, + "100.0" : 2.775657668609492 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7322075648729856, + 2.775657668609492, + 2.7721591416297118 + ], + [ + 2.7342358220338983, + 2.7331694277124896, + 2.7226824956450737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17893616381101893, + "scoreError" : 0.003686012251206939, + "scoreConfidence" : [ + 0.175250151559812, + 0.18262217606222586 + ], + "scorePercentiles" : { + "0.0" : 0.17737092185172046, + "50.0" : 0.17902525011591824, + "90.0" : 0.18017217488829634, + "95.0" : 0.18017217488829634, + "99.0" : 0.18017217488829634, + "99.9" : 0.18017217488829634, + "99.99" : 0.18017217488829634, + "99.999" : 0.18017217488829634, + "99.9999" : 0.18017217488829634, + "100.0" : 0.18017217488829634 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18004657146715158, + 0.18017217488829634, + 0.18014039603336154 + ], + [ + 0.17788298986089865, + 0.17737092185172046, + 0.17800392876468493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.336362971121694, + "scoreError" : 0.01239194140341051, + "scoreConfidence" : [ + 0.3239710297182835, + 0.3487549125251045 + ], + "scorePercentiles" : { + "0.0" : 0.33160472132506547, + "50.0" : 0.3361841760169935, + "90.0" : 0.34100025878060425, + "95.0" : 0.34100025878060425, + "99.0" : 0.34100025878060425, + "99.9" : 0.34100025878060425, + "99.99" : 0.34100025878060425, + "99.999" : 0.34100025878060425, + "99.9999" : 0.34100025878060425, + "100.0" : 0.34100025878060425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33160472132506547, + 0.3325284469309038, + 0.3330119470862471 + ], + [ + 0.34100025878060425, + 0.34067604765960346, + 0.33935640494773994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14221811919264754, + "scoreError" : 0.0028900796566363246, + "scoreConfidence" : [ + 0.13932803953601122, + 0.14510819884928386 + ], + "scorePercentiles" : { + "0.0" : 0.1406805175494127, + "50.0" : 0.14265865027086397, + "90.0" : 0.14321378949403527, + "95.0" : 0.14321378949403527, + "99.0" : 0.14321378949403527, + "99.9" : 0.14321378949403527, + "99.99" : 0.14321378949403527, + "99.999" : 0.14321378949403527, + "99.9999" : 0.14321378949403527, + "100.0" : 0.14321378949403527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14289205060939889, + 0.14120505696131036, + 0.1406805175494127 + ], + [ + 0.14286697868480078, + 0.14245032185692716, + 0.14321378949403527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4093246647507926, + "scoreError" : 0.022818180545027447, + "scoreConfidence" : [ + 0.38650648420576517, + 0.43214284529582003 + ], + "scorePercentiles" : { + "0.0" : 0.4011830281221166, + "50.0" : 0.40808554162038446, + "90.0" : 0.4184315846443515, + "95.0" : 0.4184315846443515, + "99.0" : 0.4184315846443515, + "99.9" : 0.4184315846443515, + "99.99" : 0.4184315846443515, + "99.999" : 0.4184315846443515, + "99.9999" : 0.4184315846443515, + "100.0" : 0.4184315846443515 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4180183589282729, + 0.4184315846443515, + 0.4131665074367873 + ], + [ + 0.4021439335692456, + 0.40300457580398164, + 0.4011830281221166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15627084016303935, + "scoreError" : 0.0077204049524052356, + "scoreConfidence" : [ + 0.14855043521063413, + 0.16399124511544458 + ], + "scorePercentiles" : { + "0.0" : 0.15345857582174754, + "50.0" : 0.15635415420022053, + "90.0" : 0.15900438789690427, + "95.0" : 0.15900438789690427, + "99.0" : 0.15900438789690427, + "99.9" : 0.15900438789690427, + "99.99" : 0.15900438789690427, + "99.999" : 0.15900438789690427, + "99.9999" : 0.15900438789690427, + "100.0" : 0.15900438789690427 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15900438789690427, + 0.15869318895201218, + 0.15862743047492148 + ], + [ + 0.1540808779255196, + 0.15345857582174754, + 0.1537605799071312 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048036403601231466, + "scoreError" : 0.0035586084639872523, + "scoreConfidence" : [ + 0.044477795137244217, + 0.051595012065218715 + ], + "scorePercentiles" : { + "0.0" : 0.04678703789236304, + "50.0" : 0.04801571301418221, + "90.0" : 0.04925744200789089, + "95.0" : 0.04925744200789089, + "99.0" : 0.04925744200789089, + "99.9" : 0.04925744200789089, + "99.99" : 0.04925744200789089, + "99.999" : 0.04925744200789089, + "99.9999" : 0.04925744200789089, + "100.0" : 0.04925744200789089 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04692483524940172, + 0.04678703789236304, + 0.04692747305934359 + ], + [ + 0.049103952969020835, + 0.04925744200789089, + 0.04921768042936874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8631106.049286822, + "scoreError" : 176921.2337387386, + "scoreConfidence" : [ + 8454184.815548083, + 8808027.28302556 + ], + "scorePercentiles" : { + "0.0" : 8559601.050470488, + "50.0" : 8626663.338150673, + "90.0" : 8727479.771378709, + "95.0" : 8727479.771378709, + "99.0" : 8727479.771378709, + "99.9" : 8727479.771378709, + "99.99" : 8727479.771378709, + "99.999" : 8727479.771378709, + "99.9999" : 8727479.771378709, + "100.0" : 8727479.771378709 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8604117.75322442, + 8559601.050470488, + 8576648.216981132 + ], + [ + 8649208.923076924, + 8669580.580589255, + 8727479.771378709 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-11T21:29:33Z-7f39f56d028b91691118f3e83084acfa0f901c4f-jdk17.json b/performance-results/2025-10-11T21:29:33Z-7f39f56d028b91691118f3e83084acfa0f901c4f-jdk17.json new file mode 100644 index 0000000000..bef3068b9e --- /dev/null +++ b/performance-results/2025-10-11T21:29:33Z-7f39f56d028b91691118f3e83084acfa0f901c4f-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3494613256679293, + "scoreError" : 0.012779583252561342, + "scoreConfidence" : [ + 3.336681742415368, + 3.3622409089204908 + ], + "scorePercentiles" : { + "0.0" : 3.3474541789070957, + "50.0" : 3.3491249001542664, + "90.0" : 3.352141323456088, + "95.0" : 3.352141323456088, + "99.0" : 3.352141323456088, + "99.9" : 3.352141323456088, + "99.99" : 3.352141323456088, + "99.999" : 3.352141323456088, + "99.9999" : 3.352141323456088, + "100.0" : 3.352141323456088 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3495095839728055, + 3.352141323456088 + ], + [ + 3.348740216335727, + 3.3474541789070957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.686572471155633, + "scoreError" : 0.047281419068230565, + "scoreConfidence" : [ + 1.6392910520874024, + 1.7338538902238634 + ], + "scorePercentiles" : { + "0.0" : 1.6772410689506636, + "50.0" : 1.687943244507586, + "90.0" : 1.6931623266566964, + "95.0" : 1.6931623266566964, + "99.0" : 1.6931623266566964, + "99.9" : 1.6931623266566964, + "99.99" : 1.6931623266566964, + "99.999" : 1.6931623266566964, + "99.9999" : 1.6931623266566964, + "100.0" : 1.6931623266566964 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6772410689506636, + 1.6843135292946734 + ], + [ + 1.6931623266566964, + 1.6915729597204987 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8509698636908194, + "scoreError" : 0.018916648812393584, + "scoreConfidence" : [ + 0.8320532148784258, + 0.869886512503213 + ], + "scorePercentiles" : { + "0.0" : 0.8480475557494527, + "50.0" : 0.8503990331028728, + "90.0" : 0.8550338328080793, + "95.0" : 0.8550338328080793, + "99.0" : 0.8550338328080793, + "99.9" : 0.8550338328080793, + "99.99" : 0.8550338328080793, + "99.999" : 0.8550338328080793, + "99.9999" : 0.8550338328080793, + "100.0" : 0.8550338328080793 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8504225139057215, + 0.8550338328080793 + ], + [ + 0.8480475557494527, + 0.8503755523000239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.286763827512576, + "scoreError" : 0.19790390270391436, + "scoreConfidence" : [ + 16.088859924808663, + 16.48466773021649 + ], + "scorePercentiles" : { + "0.0" : 16.215664028035498, + "50.0" : 16.283609047752357, + "90.0" : 16.36605674475218, + "95.0" : 16.36605674475218, + "99.0" : 16.36605674475218, + "99.9" : 16.36605674475218, + "99.99" : 16.36605674475218, + "99.999" : 16.36605674475218, + "99.9999" : 16.36605674475218, + "100.0" : 16.36605674475218 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.215664028035498, + 16.217459681573708, + 16.237823117511546 + ], + [ + 16.329394977993168, + 16.354184415209364, + 16.36605674475218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2715.1767214367937, + "scoreError" : 230.66331323381922, + "scoreConfidence" : [ + 2484.5134082029745, + 2945.840034670613 + ], + "scorePercentiles" : { + "0.0" : 2637.2868368649133, + "50.0" : 2715.3782021816733, + "90.0" : 2793.077156751506, + "95.0" : 2793.077156751506, + "99.0" : 2793.077156751506, + "99.9" : 2793.077156751506, + "99.99" : 2793.077156751506, + "99.999" : 2793.077156751506, + "99.9999" : 2793.077156751506, + "100.0" : 2793.077156751506 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.2868368649133, + 2640.552561009385, + 2642.510192529743 + ], + [ + 2793.077156751506, + 2789.387369631609, + 2788.246211833604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77011.54157666425, + "scoreError" : 2608.583826799485, + "scoreConfidence" : [ + 74402.95774986477, + 79620.12540346374 + ], + "scorePercentiles" : { + "0.0" : 76141.46781103406, + "50.0" : 77003.79246194298, + "90.0" : 77904.83038225982, + "95.0" : 77904.83038225982, + "99.0" : 77904.83038225982, + "99.9" : 77904.83038225982, + "99.99" : 77904.83038225982, + "99.999" : 77904.83038225982, + "99.9999" : 77904.83038225982, + "100.0" : 77904.83038225982 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 77853.05253164405, + 77823.04437709686, + 77904.83038225982 + ], + [ + 76141.46781103406, + 76184.54054678911, + 76162.31381116158 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.00314996952335, + "scoreError" : 7.004109424366095, + "scoreConfidence" : [ + 354.99904054515724, + 369.00725939388946 + ], + "scorePercentiles" : { + "0.0" : 359.4051283673726, + "50.0" : 361.8253131228389, + "90.0" : 364.76532066666823, + "95.0" : 364.76532066666823, + "99.0" : 364.76532066666823, + "99.9" : 364.76532066666823, + "99.99" : 364.76532066666823, + "99.999" : 364.76532066666823, + "99.9999" : 364.76532066666823, + "100.0" : 364.76532066666823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.4051283673726, + 359.57121096695107, + 360.41927181378014 + ], + [ + 363.2313544318976, + 364.76532066666823, + 364.6266135704704 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.2575945189909, + "scoreError" : 2.6909687849759947, + "scoreConfidence" : [ + 113.5666257340149, + 118.94856330396689 + ], + "scorePercentiles" : { + "0.0" : 115.20419826240055, + "50.0" : 116.27446919995458, + "90.0" : 117.2160063387922, + "95.0" : 117.2160063387922, + "99.0" : 117.2160063387922, + "99.9" : 117.2160063387922, + "99.99" : 117.2160063387922, + "99.999" : 117.2160063387922, + "99.9999" : 117.2160063387922, + "100.0" : 117.2160063387922 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.14746705761324, + 117.01511921008053, + 117.2160063387922 + ], + [ + 115.20419826240055, + 115.53381918982862, + 115.42895705523017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06127907089888868, + "scoreError" : 0.00140137342345168, + "scoreConfidence" : [ + 0.059877697475436996, + 0.06268044432234035 + ], + "scorePercentiles" : { + "0.0" : 0.060764960078021034, + "50.0" : 0.06130504302101565, + "90.0" : 0.061773000957469806, + "95.0" : 0.061773000957469806, + "99.0" : 0.061773000957469806, + "99.9" : 0.061773000957469806, + "99.99" : 0.061773000957469806, + "99.999" : 0.061773000957469806, + "99.9999" : 0.061773000957469806, + "100.0" : 0.061773000957469806 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06079065115925642, + 0.060922942301014346, + 0.060764960078021034 + ], + [ + 0.061773000957469806, + 0.061687143741016956, + 0.06173572715655347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7406564529763204E-4, + "scoreError" : 4.44270288907878E-5, + "scoreConfidence" : [ + 3.2963861640684423E-4, + 4.1849267418841984E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5935791576016706E-4, + "50.0" : 3.7424486718456627E-4, + "90.0" : 3.886030735781437E-4, + "95.0" : 3.886030735781437E-4, + "99.0" : 3.886030735781437E-4, + "99.9" : 3.886030735781437E-4, + "99.99" : 3.886030735781437E-4, + "99.999" : 3.886030735781437E-4, + "99.9999" : 3.886030735781437E-4, + "100.0" : 3.886030735781437E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.88499872670635E-4, + 3.8847759570385975E-4, + 3.886030735781437E-4 + ], + [ + 3.600121386652728E-4, + 3.594432754077143E-4, + 3.5935791576016706E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 6496.576647083333, + "scoreError" : 21.584402158829644, + "scoreConfidence" : [ + 6474.992244924503, + 6518.161049242163 + ], + "scorePercentiles" : { + "0.0" : 6489.3069385, + "50.0" : 6493.81206575, + "90.0" : 6510.806913, + "95.0" : 6510.806913, + "99.0" : 6510.806913, + "99.9" : 6510.806913, + "99.99" : 6510.806913, + "99.999" : 6510.806913, + "99.9999" : 6510.806913, + "100.0" : 6510.806913 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 6510.806913, + 6493.8187355, + 6492.3555685 + ], + [ + 6499.366331, + 6493.805396, + 6489.3069385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013071534877972807, + "scoreError" : 3.7479608638009144E-4, + "scoreConfidence" : [ + 0.012696738791592716, + 0.013446330964352897 + ], + "scorePercentiles" : { + "0.0" : 0.012946525508143238, + "50.0" : 0.013068845767432493, + "90.0" : 0.013206303395625424, + "95.0" : 0.013206303395625424, + "99.0" : 0.013206303395625424, + "99.9" : 0.013206303395625424, + "99.99" : 0.013206303395625424, + "99.999" : 0.013206303395625424, + "99.9999" : 0.013206303395625424, + "100.0" : 0.013206303395625424 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012952457513884859, + 0.012946525508143238, + 0.012950153212699803 + ], + [ + 0.013206303395625424, + 0.013188535616503395, + 0.013185234020980128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0221122329669308, + "scoreError" : 0.23199484389062613, + "scoreConfidence" : [ + 0.7901173890763047, + 1.2541070768575568 + ], + "scorePercentiles" : { + "0.0" : 0.9462207809631943, + "50.0" : 1.0221016481154108, + "90.0" : 1.0979215361730157, + "95.0" : 1.0979215361730157, + "99.0" : 1.0979215361730157, + "99.9" : 1.0979215361730157, + "99.99" : 1.0979215361730157, + "99.999" : 1.0979215361730157, + "99.9999" : 1.0979215361730157, + "100.0" : 1.0979215361730157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0978496920627951, + 1.0971327613823367, + 1.0979215361730157 + ], + [ + 0.9464780923717585, + 0.9470705348484848, + 0.9462207809631943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010001778264607778, + "scoreError" : 3.1704221174474263E-5, + "scoreConfidence" : [ + 0.009970074043433303, + 0.010033482485782253 + ], + "scorePercentiles" : { + "0.0" : 0.009982376434440957, + "50.0" : 0.010004194726078478, + "90.0" : 0.01001315701655135, + "95.0" : 0.01001315701655135, + "99.0" : 0.01001315701655135, + "99.9" : 0.01001315701655135, + "99.99" : 0.01001315701655135, + "99.999" : 0.01001315701655135, + "99.9999" : 0.01001315701655135, + "100.0" : 0.01001315701655135 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.00999752049938317, + 0.009999298503940629, + 0.009982376434440957 + ], + [ + 0.01001315701655135, + 0.010009090948216327, + 0.010009226185114233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.9854324193862047, + "scoreError" : 0.2974404856609421, + "scoreConfidence" : [ + 2.6879919337252627, + 3.282872905047147 + ], + "scorePercentiles" : { + "0.0" : 2.8849622906574393, + "50.0" : 2.985709090209444, + "90.0" : 3.0915777416563657, + "95.0" : 3.0915777416563657, + "99.0" : 3.0915777416563657, + "99.9" : 3.0915777416563657, + "99.99" : 3.0915777416563657, + "99.999" : 3.0915777416563657, + "99.9999" : 3.0915777416563657, + "100.0" : 3.0915777416563657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.076804703567036, + 3.0915777416563657, + 3.077913464 + ], + [ + 2.894613476851852, + 2.8867228395845355, + 2.8849622906574393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.758253290363886, + "scoreError" : 0.10638071392243, + "scoreConfidence" : [ + 2.651872576441456, + 2.8646340042863163 + ], + "scorePercentiles" : { + "0.0" : 2.7190400421424687, + "50.0" : 2.7577134080266252, + "90.0" : 2.795686289069052, + "95.0" : 2.795686289069052, + "99.0" : 2.795686289069052, + "99.9" : 2.795686289069052, + "99.99" : 2.795686289069052, + "99.999" : 2.795686289069052, + "99.9999" : 2.795686289069052, + "100.0" : 2.795686289069052 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7256659572090487, + 2.726585385768811, + 2.7190400421424687 + ], + [ + 2.795686289069052, + 2.793700637709497, + 2.7888414302844393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17833646488861032, + "scoreError" : 0.0049199110990819726, + "scoreConfidence" : [ + 0.17341655378952836, + 0.1832563759876923 + ], + "scorePercentiles" : { + "0.0" : 0.17664254616430855, + "50.0" : 0.17833039055633187, + "90.0" : 0.1800755231569849, + "95.0" : 0.1800755231569849, + "99.0" : 0.1800755231569849, + "99.9" : 0.1800755231569849, + "99.99" : 0.1800755231569849, + "99.999" : 0.1800755231569849, + "99.9999" : 0.1800755231569849, + "100.0" : 0.1800755231569849 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17682031520970365, + 0.1767489541879496, + 0.17664254616430855 + ], + [ + 0.1800755231569849, + 0.17989098470975518, + 0.1798404659029601 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.35061888371486866, + "scoreError" : 0.06480043871515903, + "scoreConfidence" : [ + 0.28581844499970965, + 0.41541932243002766 + ], + "scorePercentiles" : { + "0.0" : 0.3292124717869371, + "50.0" : 0.34965080098693246, + "90.0" : 0.37486595854106536, + "95.0" : 0.37486595854106536, + "99.0" : 0.37486595854106536, + "99.9" : 0.37486595854106536, + "99.99" : 0.37486595854106536, + "99.999" : 0.37486595854106536, + "99.9999" : 0.37486595854106536, + "100.0" : 0.37486595854106536 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32971725901747445, + 0.3298365096474158, + 0.3292124717869371 + ], + [ + 0.37486595854106536, + 0.3706160109698699, + 0.3694650923264492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14415480048259902, + "scoreError" : 0.013568403847564548, + "scoreConfidence" : [ + 0.13058639663503446, + 0.15772320433016357 + ], + "scorePercentiles" : { + "0.0" : 0.13968993443035146, + "50.0" : 0.1441487075464331, + "90.0" : 0.14865968997606624, + "95.0" : 0.14865968997606624, + "99.0" : 0.14865968997606624, + "99.9" : 0.14865968997606624, + "99.99" : 0.14865968997606624, + "99.999" : 0.14865968997606624, + "99.9999" : 0.14865968997606624, + "100.0" : 0.14865968997606624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14856724076302535, + 0.14848728788216253, + 0.14865968997606624 + ], + [ + 0.1397145226332849, + 0.13981012721070366, + 0.13968993443035146 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40764824168324215, + "scoreError" : 0.026271745714335413, + "scoreConfidence" : [ + 0.3813764959689067, + 0.4339199873975776 + ], + "scorePercentiles" : { + "0.0" : 0.39886512599712826, + "50.0" : 0.4071241185520944, + "90.0" : 0.4171840606149097, + "95.0" : 0.4171840606149097, + "99.0" : 0.4171840606149097, + "99.9" : 0.4171840606149097, + "99.99" : 0.4171840606149097, + "99.999" : 0.4171840606149097, + "99.9999" : 0.4171840606149097, + "100.0" : 0.4171840606149097 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4171840606149097, + 0.4163693374136065, + 0.4149725665380306 + ], + [ + 0.39922268896961954, + 0.39886512599712826, + 0.39927567056615826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15661503203640717, + "scoreError" : 0.0063913625577149335, + "scoreConfidence" : [ + 0.15022366947869223, + 0.1630063945941221 + ], + "scorePercentiles" : { + "0.0" : 0.15438460297954457, + "50.0" : 0.15629548565528933, + "90.0" : 0.1591372248408657, + "95.0" : 0.1591372248408657, + "99.0" : 0.1591372248408657, + "99.9" : 0.1591372248408657, + "99.99" : 0.1591372248408657, + "99.999" : 0.1591372248408657, + "99.9999" : 0.1591372248408657, + "100.0" : 0.1591372248408657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1591372248408657, + 0.1590548418876147, + 0.15772772410964953 + ], + [ + 0.1545225511998393, + 0.15486324720092914, + 0.15438460297954457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046850472881795814, + "scoreError" : 8.054320376881869E-4, + "scoreConfidence" : [ + 0.046045040844107626, + 0.047655904919484 + ], + "scorePercentiles" : { + "0.0" : 0.04669379334528679, + "50.0" : 0.04674238058355962, + "90.0" : 0.047433880084241285, + "95.0" : 0.047433880084241285, + "99.0" : 0.047433880084241285, + "99.9" : 0.047433880084241285, + "99.99" : 0.047433880084241285, + "99.999" : 0.047433880084241285, + "99.9999" : 0.047433880084241285, + "100.0" : 0.047433880084241285 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04675632102413525, + 0.04671641505458724, + 0.04669379334528679 + ], + [ + 0.047433880084241285, + 0.046728440142983975, + 0.046773987639540375 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8886938.438708296, + "scoreError" : 23149.006762205292, + "scoreConfidence" : [ + 8863789.431946091, + 8910087.4454705 + ], + "scorePercentiles" : { + "0.0" : 8877689.346938776, + "50.0" : 8887936.207371226, + "90.0" : 8899201.033807829, + "95.0" : 8899201.033807829, + "99.0" : 8899201.033807829, + "99.9" : 8899201.033807829, + "99.99" : 8899201.033807829, + "99.999" : 8899201.033807829, + "99.9999" : 8899201.033807829, + "100.0" : 8899201.033807829 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8899201.033807829, + 8891072.514666667, + 8888971.351687388 + ], + [ + 8886901.063055063, + 8877795.322094055, + 8877689.346938776 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-12T11:58:07Z-bce4817846d0f6f7af02cfbaf6240b23b18d105d-jdk17.json b/performance-results/2025-10-12T11:58:07Z-bce4817846d0f6f7af02cfbaf6240b23b18d105d-jdk17.json new file mode 100644 index 0000000000..f48373c12b --- /dev/null +++ b/performance-results/2025-10-12T11:58:07Z-bce4817846d0f6f7af02cfbaf6240b23b18d105d-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.334874650478584, + "scoreError" : 0.0733294557766752, + "scoreConfidence" : [ + 3.2615451947019087, + 3.4082041062552593 + ], + "scorePercentiles" : { + "0.0" : 3.3275702771797944, + "50.0" : 3.3300628835170825, + "90.0" : 3.3518025577003767, + "95.0" : 3.3518025577003767, + "99.0" : 3.3518025577003767, + "99.9" : 3.3518025577003767, + "99.99" : 3.3518025577003767, + "99.999" : 3.3518025577003767, + "99.9999" : 3.3518025577003767, + "100.0" : 3.3518025577003767 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3302915358112926, + 3.3518025577003767 + ], + [ + 3.3275702771797944, + 3.329834231222873 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6798181561098573, + "scoreError" : 0.06588161009639824, + "scoreConfidence" : [ + 1.6139365460134592, + 1.7456997662062554 + ], + "scorePercentiles" : { + "0.0" : 1.668380585372984, + "50.0" : 1.680738721562854, + "90.0" : 1.689414595940737, + "95.0" : 1.689414595940737, + "99.0" : 1.689414595940737, + "99.9" : 1.689414595940737, + "99.99" : 1.689414595940737, + "99.999" : 1.689414595940737, + "99.9999" : 1.689414595940737, + "100.0" : 1.689414595940737 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.668380585372984, + 1.6741347480554005 + ], + [ + 1.6873426950703074, + 1.689414595940737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8405423298743612, + "scoreError" : 0.03920955751471709, + "scoreConfidence" : [ + 0.8013327723596441, + 0.8797518873890783 + ], + "scorePercentiles" : { + "0.0" : 0.8364682895407239, + "50.0" : 0.8380963816572362, + "90.0" : 0.849508266642248, + "95.0" : 0.849508266642248, + "99.0" : 0.849508266642248, + "99.9" : 0.849508266642248, + "99.99" : 0.849508266642248, + "99.999" : 0.849508266642248, + "99.9999" : 0.849508266642248, + "100.0" : 0.849508266642248 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8372301789521506, + 0.849508266642248 + ], + [ + 0.8364682895407239, + 0.838962584362322 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.202934641392456, + "scoreError" : 0.17032051883837662, + "scoreConfidence" : [ + 16.03261412255408, + 16.373255160230833 + ], + "scorePercentiles" : { + "0.0" : 16.13434717800659, + "50.0" : 16.19143722058228, + "90.0" : 16.276982669727392, + "95.0" : 16.276982669727392, + "99.0" : 16.276982669727392, + "99.9" : 16.276982669727392, + "99.99" : 16.276982669727392, + "99.999" : 16.276982669727392, + "99.9999" : 16.276982669727392, + "100.0" : 16.276982669727392 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.267457416421514, + 16.276982669727392, + 16.13434717800659 + ], + [ + 16.155946143034676, + 16.219920952065994, + 16.162953489098566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2672.7268209716517, + "scoreError" : 86.99684993135682, + "scoreConfidence" : [ + 2585.729971040295, + 2759.7236709030085 + ], + "scorePercentiles" : { + "0.0" : 2637.3461783380835, + "50.0" : 2675.1675506964343, + "90.0" : 2705.558934193761, + "95.0" : 2705.558934193761, + "99.0" : 2705.558934193761, + "99.9" : 2705.558934193761, + "99.99" : 2705.558934193761, + "99.999" : 2705.558934193761, + "99.9999" : 2705.558934193761, + "100.0" : 2705.558934193761 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2697.4596471956415, + 2705.558934193761, + 2698.7096483750893 + ], + [ + 2652.875454197227, + 2644.4110635301095, + 2637.3461783380835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76734.15561376506, + "scoreError" : 1313.109858193552, + "scoreConfidence" : [ + 75421.04575557151, + 78047.26547195861 + ], + "scorePercentiles" : { + "0.0" : 76128.44007663561, + "50.0" : 76675.12837955286, + "90.0" : 77345.99926588064, + "95.0" : 77345.99926588064, + "99.0" : 77345.99926588064, + "99.9" : 77345.99926588064, + "99.99" : 77345.99926588064, + "99.999" : 77345.99926588064, + "99.9999" : 77345.99926588064, + "100.0" : 77345.99926588064 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76128.44007663561, + 76478.3768232623, + 76426.47449832177 + ], + [ + 76871.87993584342, + 77153.76308264656, + 77345.99926588064 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.5610887067747, + "scoreError" : 4.90524211699213, + "scoreConfidence" : [ + 351.6558465897825, + 361.46633082376684 + ], + "scorePercentiles" : { + "0.0" : 353.5564931764435, + "50.0" : 356.73804154866207, + "90.0" : 358.47111998930075, + "95.0" : 358.47111998930075, + "99.0" : 358.47111998930075, + "99.9" : 358.47111998930075, + "99.99" : 358.47111998930075, + "99.999" : 358.47111998930075, + "99.9999" : 358.47111998930075, + "100.0" : 358.47111998930075 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.554261896737, + 357.9847976027941, + 356.92182120058715 + ], + [ + 353.5564931764435, + 355.87803837478606, + 358.47111998930075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.20357932001933, + "scoreError" : 3.8198043785548146, + "scoreConfidence" : [ + 109.38377494146451, + 117.02338369857415 + ], + "scorePercentiles" : { + "0.0" : 111.12235902999046, + "50.0" : 113.29084797747072, + "90.0" : 114.75715531278253, + "95.0" : 114.75715531278253, + "99.0" : 114.75715531278253, + "99.9" : 114.75715531278253, + "99.99" : 114.75715531278253, + "99.999" : 114.75715531278253, + "99.9999" : 114.75715531278253, + "100.0" : 114.75715531278253 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.9055018770005, + 114.30192716338375, + 114.75715531278253 + ], + [ + 112.67619407794093, + 111.12235902999046, + 112.4583384590178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06166578148892898, + "scoreError" : 0.001393558875137769, + "scoreConfidence" : [ + 0.060272222613791206, + 0.06305934036406674 + ], + "scorePercentiles" : { + "0.0" : 0.061040789558497684, + "50.0" : 0.06177333341616005, + "90.0" : 0.06223541570670202, + "95.0" : 0.06223541570670202, + "99.0" : 0.06223541570670202, + "99.9" : 0.06223541570670202, + "99.99" : 0.06223541570670202, + "99.999" : 0.06223541570670202, + "99.9999" : 0.06223541570670202, + "100.0" : 0.06223541570670202 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061040789558497684, + 0.0620748336985332, + 0.06109698313752085 + ], + [ + 0.06223541570670202, + 0.06182690927638738, + 0.061719757555932724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6795940097405095E-4, + "scoreError" : 1.1160501425676191E-5, + "scoreConfidence" : [ + 3.567988995483748E-4, + 3.7911990239972713E-4 + ], + "scorePercentiles" : { + "0.0" : 3.631679622235782E-4, + "50.0" : 3.6879224182151117E-4, + "90.0" : 3.7212592222979037E-4, + "95.0" : 3.7212592222979037E-4, + "99.0" : 3.7212592222979037E-4, + "99.9" : 3.7212592222979037E-4, + "99.99" : 3.7212592222979037E-4, + "99.999" : 3.7212592222979037E-4, + "99.9999" : 3.7212592222979037E-4, + "100.0" : 3.7212592222979037E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.716721979770859E-4, + 3.7212592222979037E-4, + 3.695383873047979E-4 + ], + [ + 3.632058397708289E-4, + 3.631679622235782E-4, + 3.680460963382244E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2602250666068544, + "scoreError" : 0.054856426911321365, + "scoreConfidence" : [ + 2.205368639695533, + 2.315081493518176 + ], + "scorePercentiles" : { + "0.0" : 2.1995577725973168, + "50.0" : 2.269421266057476, + "90.0" : 2.307198495439022, + "95.0" : 2.3079636125086544, + "99.0" : 2.3079636125086544, + "99.9" : 2.3079636125086544, + "99.99" : 2.3079636125086544, + "99.999" : 2.3079636125086544, + "99.9999" : 2.3079636125086544, + "100.0" : 2.3079636125086544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3079636125086544, + 2.2478529633625532, + 2.265563615088355, + 2.2095519714980116, + 2.1995577725973168 + ], + [ + 2.3003124418123275, + 2.285693322669104, + 2.273278917026597, + 2.2747068644530364, + 2.2377691850525845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013105716670155768, + "scoreError" : 3.031350262385553E-4, + "scoreConfidence" : [ + 0.012802581643917212, + 0.013408851696394324 + ], + "scorePercentiles" : { + "0.0" : 0.0129981063348034, + "50.0" : 0.013104397765924803, + "90.0" : 0.013230033270315359, + "95.0" : 0.013230033270315359, + "99.0" : 0.013230033270315359, + "99.9" : 0.013230033270315359, + "99.99" : 0.013230033270315359, + "99.999" : 0.013230033270315359, + "99.9999" : 0.013230033270315359, + "100.0" : 0.013230033270315359 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013230033270315359, + 0.013185797592048566, + 0.013193656350270202 + ], + [ + 0.0129981063348034, + 0.013022997939801039, + 0.013003708533696045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.05348536806851, + "scoreError" : 0.303074437140624, + "scoreConfidence" : [ + 0.7504109309278859, + 1.3565598052091339 + ], + "scorePercentiles" : { + "0.0" : 0.9523855518522045, + "50.0" : 1.0540417665761823, + "90.0" : 1.1570364536619229, + "95.0" : 1.1570364536619229, + "99.0" : 1.1570364536619229, + "99.9" : 1.1570364536619229, + "99.99" : 1.1570364536619229, + "99.999" : 1.1570364536619229, + "99.9999" : 1.1570364536619229, + "100.0" : 1.1570364536619229 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9536324994755412, + 0.9523855518522045, + 0.9585983586696061 + ], + [ + 1.1494851744827586, + 1.1497741702690274, + 1.1570364536619229 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010728574518038244, + "scoreError" : 2.5383307606501824E-4, + "scoreConfidence" : [ + 0.010474741441973225, + 0.010982407594103263 + ], + "scorePercentiles" : { + "0.0" : 0.010620956096265772, + "50.0" : 0.010725752554612528, + "90.0" : 0.010854886566963288, + "95.0" : 0.010854886566963288, + "99.0" : 0.010854886566963288, + "99.9" : 0.010854886566963288, + "99.99" : 0.010854886566963288, + "99.999" : 0.010854886566963288, + "99.9999" : 0.010854886566963288, + "100.0" : 0.010854886566963288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010854886566963288, + 0.010777689818766544, + 0.01078504270344423 + ], + [ + 0.010620956096265772, + 0.010659056632331122, + 0.010673815290458513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.104995500958499, + "scoreError" : 0.1978268273042192, + "scoreConfidence" : [ + 2.9071686736542794, + 3.3028223282627183 + ], + "scorePercentiles" : { + "0.0" : 3.023599038694075, + "50.0" : 3.1061568816139618, + "90.0" : 3.2185080135135133, + "95.0" : 3.2185080135135133, + "99.0" : 3.2185080135135133, + "99.9" : 3.2185080135135133, + "99.99" : 3.2185080135135133, + "99.999" : 3.2185080135135133, + "99.9999" : 3.2185080135135133, + "100.0" : 3.2185080135135133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.023599038694075, + 3.1354982413793104, + 3.0400539489361704 + ], + [ + 3.116724943302181, + 3.2185080135135133, + 3.0955888199257426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.811853634433998, + "scoreError" : 0.09752713229137792, + "scoreConfidence" : [ + 2.71432650214262, + 2.9093807667253757 + ], + "scorePercentiles" : { + "0.0" : 2.777064294362677, + "50.0" : 2.8049549662509614, + "90.0" : 2.86212831416309, + "95.0" : 2.86212831416309, + "99.0" : 2.86212831416309, + "99.9" : 2.86212831416309, + "99.99" : 2.86212831416309, + "99.999" : 2.86212831416309, + "99.9999" : 2.86212831416309, + "100.0" : 2.86212831416309 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.784424982739421, + 2.777064294362677, + 2.784954998886104 + ], + [ + 2.8375942828368794, + 2.86212831416309, + 2.8249549336158193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18397182498882592, + "scoreError" : 0.041681381837962585, + "scoreConfidence" : [ + 0.14229044315086334, + 0.2256532068267885 + ], + "scorePercentiles" : { + "0.0" : 0.17016233597645017, + "50.0" : 0.1836557068510387, + "90.0" : 0.19864490044098368, + "95.0" : 0.19864490044098368, + "99.0" : 0.19864490044098368, + "99.9" : 0.19864490044098368, + "99.99" : 0.19864490044098368, + "99.999" : 0.19864490044098368, + "99.9999" : 0.19864490044098368, + "100.0" : 0.19864490044098368 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19864490044098368, + 0.19748390550574668, + 0.19644301791537344 + ], + [ + 0.170868395786704, + 0.17016233597645017, + 0.17022839430769754 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32527489787834224, + "scoreError" : 0.0024176429533079866, + "scoreConfidence" : [ + 0.32285725492503425, + 0.3276925408316502 + ], + "scorePercentiles" : { + "0.0" : 0.3240460608535044, + "50.0" : 0.32526018961085174, + "90.0" : 0.3264472955866031, + "95.0" : 0.3264472955866031, + "99.0" : 0.3264472955866031, + "99.9" : 0.3264472955866031, + "99.99" : 0.3264472955866031, + "99.999" : 0.3264472955866031, + "99.9999" : 0.3264472955866031, + "100.0" : 0.3264472955866031 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3264472955866031, + 0.3240460608535044, + 0.32502842709958396 + ], + [ + 0.3259180138513183, + 0.3254919521221195, + 0.32471763775692436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14633436214857262, + "scoreError" : 0.0025690300876691063, + "scoreConfidence" : [ + 0.14376533206090353, + 0.14890339223624172 + ], + "scorePercentiles" : { + "0.0" : 0.14541748146694006, + "50.0" : 0.14617164832531737, + "90.0" : 0.14808852881596873, + "95.0" : 0.14808852881596873, + "99.0" : 0.14808852881596873, + "99.9" : 0.14808852881596873, + "99.99" : 0.14808852881596873, + "99.999" : 0.14808852881596873, + "99.9999" : 0.14808852881596873, + "100.0" : 0.14808852881596873 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1462846263073975, + 0.14610158686282818, + 0.14541748146694006 + ], + [ + 0.14808852881596873, + 0.14624170978780657, + 0.1458722396504945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4078401417111381, + "scoreError" : 0.006070400940484759, + "scoreConfidence" : [ + 0.4017697407706533, + 0.41391054265162286 + ], + "scorePercentiles" : { + "0.0" : 0.40549977824182953, + "50.0" : 0.40777394468676953, + "90.0" : 0.41060328404845003, + "95.0" : 0.41060328404845003, + "99.0" : 0.41060328404845003, + "99.9" : 0.41060328404845003, + "99.99" : 0.41060328404845003, + "99.999" : 0.41060328404845003, + "99.9999" : 0.41060328404845003, + "100.0" : 0.41060328404845003 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41060328404845003, + 0.40549977824182953, + 0.4057211696283674 + ], + [ + 0.40966872897464257, + 0.4088866461544752, + 0.4066612432190639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15776565180558264, + "scoreError" : 0.007791672781902128, + "scoreConfidence" : [ + 0.1499739790236805, + 0.16555732458748476 + ], + "scorePercentiles" : { + "0.0" : 0.15491989293736735, + "50.0" : 0.1578083312908437, + "90.0" : 0.16040673480583226, + "95.0" : 0.16040673480583226, + "99.0" : 0.16040673480583226, + "99.9" : 0.16040673480583226, + "99.99" : 0.16040673480583226, + "99.999" : 0.16040673480583226, + "99.9999" : 0.16040673480583226, + "100.0" : 0.16040673480583226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15544408446544594, + 0.15491989293736735, + 0.15534146862184664 + ], + [ + 0.1603091518867622, + 0.16017257811624144, + 0.16040673480583226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04748766377982861, + "scoreError" : 0.004794051268280141, + "scoreConfidence" : [ + 0.04269361251154847, + 0.05228171504810875 + ], + "scorePercentiles" : { + "0.0" : 0.04587141836388323, + "50.0" : 0.04747167515524625, + "90.0" : 0.04913096195361131, + "95.0" : 0.04913096195361131, + "99.0" : 0.04913096195361131, + "99.9" : 0.04913096195361131, + "99.99" : 0.04913096195361131, + "99.999" : 0.04913096195361131, + "99.9999" : 0.04913096195361131, + "100.0" : 0.04913096195361131 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.049028625839600715, + 0.04898273092277022, + 0.04913096195361131 + ], + [ + 0.04596061938772227, + 0.045951626211383906, + 0.04587141836388323 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8886472.121868137, + "scoreError" : 174410.93292251904, + "scoreConfidence" : [ + 8712061.188945618, + 9060883.054790657 + ], + "scorePercentiles" : { + "0.0" : 8782565.760316066, + "50.0" : 8910320.20035619, + "90.0" : 8946762.450805008, + "95.0" : 8946762.450805008, + "99.0" : 8946762.450805008, + "99.9" : 8946762.450805008, + "99.99" : 8946762.450805008, + "99.999" : 8946762.450805008, + "99.9999" : 8946762.450805008, + "100.0" : 8946762.450805008 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8946762.450805008, + 8911585.62511131, + 8927800.557537913 + ], + [ + 8909054.775601069, + 8841063.561837455, + 8782565.760316066 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-13T21:01:48Z-aa163f14936e8b09d766e5581963b91a29e9a6bb-jdk17.json b/performance-results/2025-10-13T21:01:48Z-aa163f14936e8b09d766e5581963b91a29e9a6bb-jdk17.json new file mode 100644 index 0000000000..bb54e21ac6 --- /dev/null +++ b/performance-results/2025-10-13T21:01:48Z-aa163f14936e8b09d766e5581963b91a29e9a6bb-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3618301409910187, + "scoreError" : 0.02023418754462769, + "scoreConfidence" : [ + 3.341595953446391, + 3.3820643285356464 + ], + "scorePercentiles" : { + "0.0" : 3.3577215376865004, + "50.0" : 3.362355835460109, + "90.0" : 3.3648873553573555, + "95.0" : 3.3648873553573555, + "99.0" : 3.3648873553573555, + "99.9" : 3.3648873553573555, + "99.99" : 3.3648873553573555, + "99.999" : 3.3648873553573555, + "99.9999" : 3.3648873553573555, + "100.0" : 3.3648873553573555 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3577215376865004, + 3.3635035576139694 + ], + [ + 3.361208113306249, + 3.3648873553573555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6956837516810332, + "scoreError" : 0.029576401808779948, + "scoreConfidence" : [ + 1.6661073498722534, + 1.725260153489813 + ], + "scorePercentiles" : { + "0.0" : 1.6903907284593391, + "50.0" : 1.695596727039809, + "90.0" : 1.7011508241851758, + "95.0" : 1.7011508241851758, + "99.0" : 1.7011508241851758, + "99.9" : 1.7011508241851758, + "99.99" : 1.7011508241851758, + "99.999" : 1.7011508241851758, + "99.9999" : 1.7011508241851758, + "100.0" : 1.7011508241851758 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6971661441021393, + 1.7011508241851758 + ], + [ + 1.6903907284593391, + 1.6940273099774783 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8551071311443119, + "scoreError" : 0.01621703997938533, + "scoreConfidence" : [ + 0.8388900911649266, + 0.8713241711236972 + ], + "scorePercentiles" : { + "0.0" : 0.8529944311597017, + "50.0" : 0.854736997031417, + "90.0" : 0.8579600993547118, + "95.0" : 0.8579600993547118, + "99.0" : 0.8579600993547118, + "99.9" : 0.8579600993547118, + "99.99" : 0.8579600993547118, + "99.999" : 0.8579600993547118, + "99.9999" : 0.8579600993547118, + "100.0" : 0.8579600993547118 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8564715607696112, + 0.8579600993547118 + ], + [ + 0.8529944311597017, + 0.8530024332932229 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.483442436598327, + "scoreError" : 0.37697273007453463, + "scoreConfidence" : [ + 16.106469706523793, + 16.860415166672862 + ], + "scorePercentiles" : { + "0.0" : 16.3535406787147, + "50.0" : 16.481759216567077, + "90.0" : 16.61597618778554, + "95.0" : 16.61597618778554, + "99.0" : 16.61597618778554, + "99.9" : 16.61597618778554, + "99.99" : 16.61597618778554, + "99.999" : 16.61597618778554, + "99.9999" : 16.61597618778554, + "100.0" : 16.61597618778554 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.603630616055433, + 16.598378759956994, + 16.61597618778554 + ], + [ + 16.3535406787147, + 16.363988703900148, + 16.36513967317716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2775.4714487287365, + "scoreError" : 129.49374910038117, + "scoreConfidence" : [ + 2645.9776996283554, + 2904.9651978291176 + ], + "scorePercentiles" : { + "0.0" : 2732.5740015828583, + "50.0" : 2775.4669241047322, + "90.0" : 2818.4589304483407, + "95.0" : 2818.4589304483407, + "99.0" : 2818.4589304483407, + "99.9" : 2818.4589304483407, + "99.99" : 2818.4589304483407, + "99.999" : 2818.4589304483407, + "99.9999" : 2818.4589304483407, + "100.0" : 2818.4589304483407 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2817.8268883973096, + 2818.4589304483407, + 2816.573019217914 + ], + [ + 2732.5740015828583, + 2733.035023734444, + 2734.3608289915505 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 78712.12026119139, + "scoreError" : 2166.9017193334544, + "scoreConfidence" : [ + 76545.21854185793, + 80879.02198052485 + ], + "scorePercentiles" : { + "0.0" : 77970.53839937503, + "50.0" : 78695.14190743159, + "90.0" : 79453.02445192987, + "95.0" : 79453.02445192987, + "99.0" : 79453.02445192987, + "99.9" : 79453.02445192987, + "99.99" : 79453.02445192987, + "99.999" : 79453.02445192987, + "99.9999" : 79453.02445192987, + "100.0" : 79453.02445192987 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 79453.02445192987, + 79351.75820389396, + 79444.72459356039 + ], + [ + 78038.52561096923, + 78014.1503074198, + 77970.53839937503 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 370.0351310847652, + "scoreError" : 24.621071382820464, + "scoreConfidence" : [ + 345.4140597019448, + 394.6562024675857 + ], + "scorePercentiles" : { + "0.0" : 361.4209203797791, + "50.0" : 370.248628088863, + "90.0" : 378.38919963707474, + "95.0" : 378.38919963707474, + "99.0" : 378.38919963707474, + "99.9" : 378.38919963707474, + "99.99" : 378.38919963707474, + "99.999" : 378.38919963707474, + "99.9999" : 378.38919963707474, + "100.0" : 378.38919963707474 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 377.9361827544014, + 378.38919963707474, + 377.7934220577596 + ], + [ + 361.4209203797791, + 362.70383411996636, + 361.9672275596102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.5592394540048, + "scoreError" : 4.27230160588356, + "scoreConfidence" : [ + 111.28693784812124, + 119.83154105988835 + ], + "scorePercentiles" : { + "0.0" : 114.03582614497601, + "50.0" : 115.56021853305391, + "90.0" : 117.19593152463364, + "95.0" : 117.19593152463364, + "99.0" : 117.19593152463364, + "99.9" : 117.19593152463364, + "99.99" : 117.19593152463364, + "99.999" : 117.19593152463364, + "99.9999" : 117.19593152463364, + "100.0" : 117.19593152463364 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.03582614497601, + 114.13240841378327, + 114.36643185112165 + ], + [ + 116.75400521498618, + 116.87083357452813, + 117.19593152463364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06086100024702932, + "scoreError" : 5.67080337678525E-4, + "scoreConfidence" : [ + 0.0602939199093508, + 0.06142808058470784 + ], + "scorePercentiles" : { + "0.0" : 0.060649711221222195, + "50.0" : 0.06083901075325816, + "90.0" : 0.06111157564868796, + "95.0" : 0.06111157564868796, + "99.0" : 0.06111157564868796, + "99.9" : 0.06111157564868796, + "99.99" : 0.06111157564868796, + "99.999" : 0.06111157564868796, + "99.9999" : 0.06111157564868796, + "100.0" : 0.06111157564868796 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06103651316231178, + 0.06111157564868796, + 0.06097335152339201 + ], + [ + 0.060649711221222195, + 0.06070466998312431, + 0.06069017994343768 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.63437866048912E-4, + "scoreError" : 3.741447709760074E-5, + "scoreConfidence" : [ + 3.2602338895131125E-4, + 4.008523431465127E-4 + ], + "scorePercentiles" : { + "0.0" : 3.509441232816086E-4, + "50.0" : 3.6351684768125064E-4, + "90.0" : 3.7596787708704324E-4, + "95.0" : 3.7596787708704324E-4, + "99.0" : 3.7596787708704324E-4, + "99.9" : 3.7596787708704324E-4, + "99.99" : 3.7596787708704324E-4, + "99.999" : 3.7596787708704324E-4, + "99.9999" : 3.7596787708704324E-4, + "100.0" : 3.7596787708704324E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7596787708704324E-4, + 3.7554318184609113E-4, + 3.7533142446469583E-4 + ], + [ + 3.517022708978054E-4, + 3.509441232816086E-4, + 3.5113831871622753E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2482011908604713, + "scoreError" : 0.0698027817316144, + "scoreConfidence" : [ + 2.178398409128857, + 2.3180039725920856 + ], + "scorePercentiles" : { + "0.0" : 2.204469547939167, + "50.0" : 2.239982586869294, + "90.0" : 2.33526553703727, + "95.0" : 2.3396837029239768, + "99.0" : 2.3396837029239768, + "99.9" : 2.3396837029239768, + "99.99" : 2.3396837029239768, + "99.999" : 2.3396837029239768, + "99.9999" : 2.3396837029239768, + "100.0" : 2.3396837029239768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.295502044056907, + 2.2383344630707254, + 2.2552243569334838, + 2.204469547939167, + 2.205688548522276 + ], + [ + 2.2857825499428572, + 2.3396837029239768, + 2.241630710667862, + 2.2079727885209715, + 2.2077231960264903 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01286902189876537, + "scoreError" : 5.142997078774713E-4, + "scoreConfidence" : [ + 0.0123547221908879, + 0.013383321606642842 + ], + "scorePercentiles" : { + "0.0" : 0.012694119618876915, + "50.0" : 0.012871102452407987, + "90.0" : 0.01303810375336379, + "95.0" : 0.01303810375336379, + "99.0" : 0.01303810375336379, + "99.9" : 0.01303810375336379, + "99.99" : 0.01303810375336379, + "99.999" : 0.01303810375336379, + "99.9999" : 0.01303810375336379, + "100.0" : 0.01303810375336379 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012704144525339732, + 0.012706666443879145, + 0.012694119618876915 + ], + [ + 0.01303810375336379, + 0.013035558590195818, + 0.013035538460936828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0067856127138273, + "scoreError" : 0.03912546296381674, + "scoreConfidence" : [ + 0.9676601497500106, + 1.045911075677644 + ], + "scorePercentiles" : { + "0.0" : 0.9935647962245405, + "50.0" : 1.006688662409876, + "90.0" : 1.0203711597796143, + "95.0" : 1.0203711597796143, + "99.0" : 1.0203711597796143, + "99.9" : 1.0203711597796143, + "99.99" : 1.0203711597796143, + "99.999" : 1.0203711597796143, + "99.9999" : 1.0203711597796143, + "100.0" : 1.0203711597796143 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0203711597796143, + 1.0189948671285918, + 1.0191719224498115 + ], + [ + 0.9935647962245405, + 0.9943824576911604, + 0.9942284730092454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010332671474928116, + "scoreError" : 2.3459612949795186E-4, + "scoreConfidence" : [ + 0.010098075345430163, + 0.010567267604426068 + ], + "scorePercentiles" : { + "0.0" : 0.010249317425438147, + "50.0" : 0.010334256453874681, + "90.0" : 0.010412607382787934, + "95.0" : 0.010412607382787934, + "99.0" : 0.010412607382787934, + "99.9" : 0.010412607382787934, + "99.99" : 0.010412607382787934, + "99.999" : 0.010412607382787934, + "99.9999" : 0.010412607382787934, + "100.0" : 0.010412607382787934 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01040893297013956, + 0.010412607382787934, + 0.010405171302404368 + ], + [ + 0.010249317425438147, + 0.010256658163453688, + 0.010263341605344992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.073316827693848, + "scoreError" : 0.39995355326333876, + "scoreConfidence" : [ + 2.673363274430509, + 3.4732703809571865 + ], + "scorePercentiles" : { + "0.0" : 2.9367759941280096, + "50.0" : 3.0765075490925784, + "90.0" : 3.206340585897436, + "95.0" : 3.206340585897436, + "99.0" : 3.206340585897436, + "99.9" : 3.206340585897436, + "99.99" : 3.206340585897436, + "99.999" : 3.206340585897436, + "99.9999" : 3.206340585897436, + "100.0" : 3.206340585897436 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2033417200512493, + 3.206340585897436, + 3.200579323096609 + ], + [ + 2.9404275679012346, + 2.952435775088548, + 2.9367759941280096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7205308176192737, + "scoreError" : 0.2327933489755726, + "scoreConfidence" : [ + 2.4877374686437013, + 2.953324166594846 + ], + "scorePercentiles" : { + "0.0" : 2.643450166270156, + "50.0" : 2.7068794818624315, + "90.0" : 2.8101845720708063, + "95.0" : 2.8101845720708063, + "99.0" : 2.8101845720708063, + "99.9" : 2.8101845720708063, + "99.99" : 2.8101845720708063, + "99.999" : 2.8101845720708063, + "99.9999" : 2.8101845720708063, + "100.0" : 2.8101845720708063 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8101845720708063, + 2.809873533014892, + 2.764139369817579 + ], + [ + 2.6496195939072846, + 2.643450166270156, + 2.645917670634921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18525275686516982, + "scoreError" : 0.021670110954073663, + "scoreConfidence" : [ + 0.16358264591109614, + 0.2069228678192435 + ], + "scorePercentiles" : { + "0.0" : 0.17654356247793235, + "50.0" : 0.18583562259744954, + "90.0" : 0.19227783575919552, + "95.0" : 0.19227783575919552, + "99.0" : 0.19227783575919552, + "99.9" : 0.19227783575919552, + "99.99" : 0.19227783575919552, + "99.999" : 0.19227783575919552, + "99.9999" : 0.19227783575919552, + "100.0" : 0.19227783575919552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1794385710825214, + 0.17877651987056867, + 0.17654356247793235 + ], + [ + 0.19223267411237768, + 0.19227783575919552, + 0.19224737788842325 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3321213532831711, + "scoreError" : 0.0016875546483844095, + "scoreConfidence" : [ + 0.3304337986347867, + 0.3338089079315555 + ], + "scorePercentiles" : { + "0.0" : 0.33113807854304633, + "50.0" : 0.3321662874579563, + "90.0" : 0.3327167295714666, + "95.0" : 0.3327167295714666, + "99.0" : 0.3327167295714666, + "99.9" : 0.3327167295714666, + "99.99" : 0.3327167295714666, + "99.999" : 0.3327167295714666, + "99.9999" : 0.3327167295714666, + "100.0" : 0.3327167295714666 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3327167295714666, + 0.3326719032633645, + 0.3324097969684882 + ], + [ + 0.33186883340523676, + 0.33113807854304633, + 0.3319227779474243 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14940571935339417, + "scoreError" : 0.013580856936990153, + "scoreConfidence" : [ + 0.135824862416404, + 0.16298657629038432 + ], + "scorePercentiles" : { + "0.0" : 0.14525114826864977, + "50.0" : 0.1484493666084486, + "90.0" : 0.15714747330127601, + "95.0" : 0.15714747330127601, + "99.0" : 0.15714747330127601, + "99.9" : 0.15714747330127601, + "99.99" : 0.15714747330127601, + "99.999" : 0.15714747330127601, + "99.9999" : 0.15714747330127601, + "100.0" : 0.15714747330127601 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15714747330127601, + 0.15171395127057574, + 0.15137015590706124 + ], + [ + 0.14542301006296623, + 0.14552857730983598, + 0.14525114826864977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4201719123847465, + "scoreError" : 0.03899866140933052, + "scoreConfidence" : [ + 0.381173250975416, + 0.459170573794077 + ], + "scorePercentiles" : { + "0.0" : 0.405516782247273, + "50.0" : 0.4201130886133986, + "90.0" : 0.43559025860266576, + "95.0" : 0.43559025860266576, + "99.0" : 0.43559025860266576, + "99.9" : 0.43559025860266576, + "99.99" : 0.43559025860266576, + "99.999" : 0.43559025860266576, + "99.9999" : 0.43559025860266576, + "100.0" : 0.43559025860266576 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.43165049905041436, + 0.43559025860266576, + 0.43097141454059645 + ], + [ + 0.4080477571813285, + 0.4092547626862007, + 0.405516782247273 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15771189534607225, + "scoreError" : 0.02111632289978842, + "scoreConfidence" : [ + 0.13659557244628381, + 0.17882821824586068 + ], + "scorePercentiles" : { + "0.0" : 0.1490085824293718, + "50.0" : 0.15807803330491588, + "90.0" : 0.1656815986778886, + "95.0" : 0.1656815986778886, + "99.0" : 0.1656815986778886, + "99.9" : 0.1656815986778886, + "99.99" : 0.1656815986778886, + "99.999" : 0.1656815986778886, + "99.9999" : 0.1656815986778886, + "100.0" : 0.1656815986778886 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1656815986778886, + 0.16391929975248742, + 0.16386365225797994 + ], + [ + 0.1515058246068539, + 0.15229241435185184, + 0.1490085824293718 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04751420916450067, + "scoreError" : 0.001044118960513014, + "scoreConfidence" : [ + 0.04647009020398766, + 0.048558328125013685 + ], + "scorePercentiles" : { + "0.0" : 0.04717623467500731, + "50.0" : 0.04746949231317757, + "90.0" : 0.048050593193382694, + "95.0" : 0.048050593193382694, + "99.0" : 0.048050593193382694, + "99.9" : 0.048050593193382694, + "99.99" : 0.048050593193382694, + "99.999" : 0.048050593193382694, + "99.9999" : 0.048050593193382694, + "100.0" : 0.048050593193382694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04722167857733117, + 0.04717623467500731, + 0.04717820644917793 + ], + [ + 0.048050593193382694, + 0.047741236043080976, + 0.04771730604902396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8654394.440319499, + "scoreError" : 306393.3292801032, + "scoreConfidence" : [ + 8348001.111039395, + 8960787.769599602 + ], + "scorePercentiles" : { + "0.0" : 8545898.676345004, + "50.0" : 8641886.39783615, + "90.0" : 8780518.95258999, + "95.0" : 8780518.95258999, + "99.0" : 8780518.95258999, + "99.9" : 8780518.95258999, + "99.99" : 8780518.95258999, + "99.999" : 8780518.95258999, + "99.9999" : 8780518.95258999, + "100.0" : 8780518.95258999 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8558833.401197605, + 8564523.92208904, + 8545898.676345004 + ], + [ + 8780518.95258999, + 8757342.816112084, + 8719248.87358326 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-15T01:34:13Z-694c3e1502c20a43ceb4f3bab18f7ccc4c5adb34-jdk17.json b/performance-results/2025-10-15T01:34:13Z-694c3e1502c20a43ceb4f3bab18f7ccc4c5adb34-jdk17.json new file mode 100644 index 0000000000..a1ce763dac --- /dev/null +++ b/performance-results/2025-10-15T01:34:13Z-694c3e1502c20a43ceb4f3bab18f7ccc4c5adb34-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.358221378109777, + "scoreError" : 0.03556027767010579, + "scoreConfidence" : [ + 3.3226611004396713, + 3.393781655779883 + ], + "scorePercentiles" : { + "0.0" : 3.352363955801793, + "50.0" : 3.3574639492170393, + "90.0" : 3.365593658203238, + "95.0" : 3.365593658203238, + "99.0" : 3.365593658203238, + "99.9" : 3.365593658203238, + "99.99" : 3.365593658203238, + "99.999" : 3.365593658203238, + "99.9999" : 3.365593658203238, + "100.0" : 3.365593658203238 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3581855678495747, + 3.365593658203238 + ], + [ + 3.352363955801793, + 3.356742330584504 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6973624438426897, + "scoreError" : 0.054081285050156934, + "scoreConfidence" : [ + 1.643281158792533, + 1.7514437288928466 + ], + "scorePercentiles" : { + "0.0" : 1.6899581839729236, + "50.0" : 1.6966327522399578, + "90.0" : 1.7062260869179198, + "95.0" : 1.7062260869179198, + "99.0" : 1.7062260869179198, + "99.9" : 1.7062260869179198, + "99.99" : 1.7062260869179198, + "99.999" : 1.7062260869179198, + "99.9999" : 1.7062260869179198, + "100.0" : 1.7062260869179198 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7027839844979273, + 1.7062260869179198 + ], + [ + 1.6899581839729236, + 1.6904815199819883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8489950118774371, + "scoreError" : 0.00938006808692092, + "scoreConfidence" : [ + 0.8396149437905162, + 0.858375079964358 + ], + "scorePercentiles" : { + "0.0" : 0.8469539977270211, + "50.0" : 0.8493279183111813, + "90.0" : 0.8503702131603644, + "95.0" : 0.8503702131603644, + "99.0" : 0.8503702131603644, + "99.9" : 0.8503702131603644, + "99.99" : 0.8503702131603644, + "99.999" : 0.8503702131603644, + "99.9999" : 0.8503702131603644, + "100.0" : 0.8503702131603644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8494739443921749, + 0.8503702131603644 + ], + [ + 0.8469539977270211, + 0.8491818922301876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.504963085918853, + "scoreError" : 0.2435191520883438, + "scoreConfidence" : [ + 16.26144393383051, + 16.748482238007195 + ], + "scorePercentiles" : { + "0.0" : 16.422834472327686, + "50.0" : 16.49592927303396, + "90.0" : 16.594174350944286, + "95.0" : 16.594174350944286, + "99.0" : 16.594174350944286, + "99.9" : 16.594174350944286, + "99.99" : 16.594174350944286, + "99.999" : 16.594174350944286, + "99.9999" : 16.594174350944286, + "100.0" : 16.594174350944286 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.429134214395418, + 16.422834472327686, + 16.427219275249804 + ], + [ + 16.59369187092342, + 16.594174350944286, + 16.562724331672495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2633.0439304321035, + "scoreError" : 166.42974993955406, + "scoreConfidence" : [ + 2466.6141804925496, + 2799.4736803716573 + ], + "scorePercentiles" : { + "0.0" : 2524.5076486819216, + "50.0" : 2633.888534151558, + "90.0" : 2687.409096451293, + "95.0" : 2687.409096451293, + "99.0" : 2687.409096451293, + "99.9" : 2687.409096451293, + "99.99" : 2687.409096451293, + "99.999" : 2687.409096451293, + "99.9999" : 2687.409096451293, + "100.0" : 2687.409096451293 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2687.409096451293, + 2686.64157576082, + 2524.5076486819216 + ], + [ + 2633.0804804201266, + 2634.6965878829888, + 2631.9281933954703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74336.85355829727, + "scoreError" : 1503.3170684914035, + "scoreConfidence" : [ + 72833.53648980586, + 75840.17062678868 + ], + "scorePercentiles" : { + "0.0" : 73835.69217539746, + "50.0" : 74328.44175965735, + "90.0" : 74840.78191300874, + "95.0" : 74840.78191300874, + "99.0" : 74840.78191300874, + "99.9" : 74840.78191300874, + "99.99" : 74840.78191300874, + "99.999" : 74840.78191300874, + "99.9999" : 74840.78191300874, + "100.0" : 74840.78191300874 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74835.66896195887, + 74840.78191300874, + 74801.69957454137 + ], + [ + 73852.09478010386, + 73855.18394477334, + 73835.69217539746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.7915988584579, + "scoreError" : 11.280401474195285, + "scoreConfidence" : [ + 350.51119738426263, + 373.0720003326532 + ], + "scorePercentiles" : { + "0.0" : 356.86683707856395, + "50.0" : 362.9560789968623, + "90.0" : 365.3501684291273, + "95.0" : 365.3501684291273, + "99.0" : 365.3501684291273, + "99.9" : 365.3501684291273, + "99.99" : 365.3501684291273, + "99.999" : 365.3501684291273, + "99.9999" : 365.3501684291273, + "100.0" : 365.3501684291273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 365.1582477329226, + 365.3501684291273, + 365.2547864249057 + ], + [ + 356.86683707856395, + 357.36564322442604, + 360.75391026080206 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.42825361127768, + "scoreError" : 1.5582317947083921, + "scoreConfidence" : [ + 112.87002181656929, + 115.98648540598607 + ], + "scorePercentiles" : { + "0.0" : 113.63176119570254, + "50.0" : 114.48032066407046, + "90.0" : 114.96493915400269, + "95.0" : 114.96493915400269, + "99.0" : 114.96493915400269, + "99.9" : 114.96493915400269, + "99.99" : 114.96493915400269, + "99.999" : 114.96493915400269, + "99.9999" : 114.96493915400269, + "100.0" : 114.96493915400269 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.0684143305966, + 113.63176119570254, + 114.14804559695018 + ], + [ + 114.96493915400269, + 114.81259573119073, + 114.94376565922336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06111189236899517, + "scoreError" : 6.15499020056652E-4, + "scoreConfidence" : [ + 0.06049639334893852, + 0.06172739138905182 + ], + "scorePercentiles" : { + "0.0" : 0.060841817684028646, + "50.0" : 0.06112647607643697, + "90.0" : 0.06137013169231902, + "95.0" : 0.06137013169231902, + "99.0" : 0.06137013169231902, + "99.9" : 0.06137013169231902, + "99.99" : 0.06137013169231902, + "99.999" : 0.06137013169231902, + "99.9999" : 0.06137013169231902, + "100.0" : 0.06137013169231902 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060989115828891355, + 0.060841817684028646, + 0.06092581933384916 + ], + [ + 0.06137013169231902, + 0.06126383632398258, + 0.0612806333509002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5966936254528043E-4, + "scoreError" : 6.548441749310073E-5, + "scoreConfidence" : [ + 2.941849450521797E-4, + 4.2515378003838116E-4 + ], + "scorePercentiles" : { + "0.0" : 3.3779458774237407E-4, + "50.0" : 3.596138110549902E-4, + "90.0" : 3.8134025046093886E-4, + "95.0" : 3.8134025046093886E-4, + "99.0" : 3.8134025046093886E-4, + "99.9" : 3.8134025046093886E-4, + "99.99" : 3.8134025046093886E-4, + "99.999" : 3.8134025046093886E-4, + "99.9999" : 3.8134025046093886E-4, + "100.0" : 3.8134025046093886E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3779458774237407E-4, + 3.38686722409847E-4, + 3.385831305924719E-4 + ], + [ + 3.805408997001334E-4, + 3.8134025046093886E-4, + 3.810705843659173E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.279722603485268, + "scoreError" : 0.08231757514557823, + "scoreConfidence" : [ + 2.19740502833969, + 2.362040178630846 + ], + "scorePercentiles" : { + "0.0" : 2.1994852940400262, + "50.0" : 2.276119858443332, + "90.0" : 2.3721909760002986, + "95.0" : 2.376684415161597, + "99.0" : 2.376684415161597, + "99.9" : 2.376684415161597, + "99.99" : 2.376684415161597, + "99.999" : 2.376684415161597, + "99.9999" : 2.376684415161597, + "100.0" : 2.376684415161597 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.376684415161597, + 2.3182380088085304, + 2.331750023548613, + 2.276138265361857, + 2.2761014515248066 + ], + [ + 2.2936369637614678, + 2.2616269283129804, + 2.2592393437994125, + 2.204325340533392, + 2.1994852940400262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013595437860568447, + "scoreError" : 2.505372626019602E-4, + "scoreConfidence" : [ + 0.013344900597966487, + 0.013845975123170406 + ], + "scorePercentiles" : { + "0.0" : 0.013500383802151397, + "50.0" : 0.013597178718720673, + "90.0" : 0.013680058485636115, + "95.0" : 0.013680058485636115, + "99.0" : 0.013680058485636115, + "99.9" : 0.013680058485636115, + "99.99" : 0.013680058485636115, + "99.999" : 0.013680058485636115, + "99.9999" : 0.013680058485636115, + "100.0" : 0.013680058485636115 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013679038309863008, + 0.013680058485636115, + 0.013670818735603114 + ], + [ + 0.013523538701838232, + 0.013500383802151397, + 0.013518789128318824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9724685663875733, + "scoreError" : 0.026288190702128143, + "scoreConfidence" : [ + 0.9461803756854451, + 0.9987567570897015 + ], + "scorePercentiles" : { + "0.0" : 0.9637943655551272, + "50.0" : 0.972447114273572, + "90.0" : 0.9813374969090374, + "95.0" : 0.9813374969090374, + "99.0" : 0.9813374969090374, + "99.9" : 0.9813374969090374, + "99.99" : 0.9813374969090374, + "99.999" : 0.9813374969090374, + "99.9999" : 0.9813374969090374, + "100.0" : 0.9813374969090374 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9641053437771137, + 0.9638388449306091, + 0.9637943655551272 + ], + [ + 0.9807888847700305, + 0.9809464623835213, + 0.9813374969090374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010798700917294029, + "scoreError" : 1.4446472235733353E-4, + "scoreConfidence" : [ + 0.010654236194936694, + 0.010943165639651363 + ], + "scorePercentiles" : { + "0.0" : 0.010747721983629532, + "50.0" : 0.010797712979320032, + "90.0" : 0.01085198286302137, + "95.0" : 0.01085198286302137, + "99.0" : 0.01085198286302137, + "99.9" : 0.01085198286302137, + "99.99" : 0.01085198286302137, + "99.999" : 0.01085198286302137, + "99.9999" : 0.01085198286302137, + "100.0" : 0.01085198286302137 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010847717730825721, + 0.01085198286302137, + 0.010836397777291356 + ], + [ + 0.01075902818134871, + 0.010749356967647483, + 0.010747721983629532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0756931284734144, + "scoreError" : 0.1955599016342595, + "scoreConfidence" : [ + 2.880133226839155, + 3.271253030107674 + ], + "scorePercentiles" : { + "0.0" : 3.0075154203247143, + "50.0" : 3.076403861044579, + "90.0" : 3.1423286582914574, + "95.0" : 3.1423286582914574, + "99.0" : 3.1423286582914574, + "99.9" : 3.1423286582914574, + "99.99" : 3.1423286582914574, + "99.999" : 3.1423286582914574, + "99.9999" : 3.1423286582914574, + "100.0" : 3.1423286582914574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1423286582914574, + 3.138963812303829, + 3.1365566702194356 + ], + [ + 3.0125431578313253, + 3.0162510518697228, + 3.0075154203247143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.793517804191912, + "scoreError" : 0.0252457145878594, + "scoreConfidence" : [ + 2.7682720896040527, + 2.8187635187797717 + ], + "scorePercentiles" : { + "0.0" : 2.781598669076752, + "50.0" : 2.7951065683199214, + "90.0" : 2.8046232027481772, + "95.0" : 2.8046232027481772, + "99.0" : 2.8046232027481772, + "99.9" : 2.8046232027481772, + "99.99" : 2.8046232027481772, + "99.999" : 2.8046232027481772, + "99.9999" : 2.8046232027481772, + "100.0" : 2.8046232027481772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7979029205594403, + 2.7999641769316908, + 2.8046232027481772 + ], + [ + 2.7847076397550112, + 2.781598669076752, + 2.792310216080402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18214136772790535, + "scoreError" : 0.015763273166526606, + "scoreConfidence" : [ + 0.16637809456137875, + 0.19790464089443194 + ], + "scorePercentiles" : { + "0.0" : 0.17688305769775012, + "50.0" : 0.18205309582834023, + "90.0" : 0.18750261356733042, + "95.0" : 0.18750261356733042, + "99.0" : 0.18750261356733042, + "99.9" : 0.18750261356733042, + "99.99" : 0.18750261356733042, + "99.999" : 0.18750261356733042, + "99.9999" : 0.18750261356733042, + "100.0" : 0.18750261356733042 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18729668549595446, + 0.18750261356733042, + 0.1870123094027004 + ], + [ + 0.1770596579497167, + 0.17709388225398007, + 0.17688305769775012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32598592453579894, + "scoreError" : 0.012955941767848025, + "scoreConfidence" : [ + 0.3130299827679509, + 0.338941866303647 + ], + "scorePercentiles" : { + "0.0" : 0.3216175759953689, + "50.0" : 0.32599137295499364, + "90.0" : 0.3305366355643695, + "95.0" : 0.3305366355643695, + "99.0" : 0.3305366355643695, + "99.9" : 0.3305366355643695, + "99.99" : 0.3305366355643695, + "99.999" : 0.3305366355643695, + "99.9999" : 0.3305366355643695, + "100.0" : 0.3305366355643695 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3217237529517743, + 0.3216175759953689, + 0.3219777575259989 + ], + [ + 0.3300548367932935, + 0.3305366355643695, + 0.3300049883839884 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1436416729157658, + "scoreError" : 0.003394448999497843, + "scoreConfidence" : [ + 0.14024722391626795, + 0.14703612191526363 + ], + "scorePercentiles" : { + "0.0" : 0.14248856941950927, + "50.0" : 0.1435855957504847, + "90.0" : 0.14496747445710476, + "95.0" : 0.14496747445710476, + "99.0" : 0.14496747445710476, + "99.9" : 0.14496747445710476, + "99.99" : 0.14496747445710476, + "99.999" : 0.14496747445710476, + "99.9999" : 0.14496747445710476, + "100.0" : 0.14496747445710476 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14496747445710476, + 0.14457887724092067, + 0.14467388244144497 + ], + [ + 0.14248856941950927, + 0.14259231426004876, + 0.14254891967556627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4043522695263309, + "scoreError" : 0.01780191722570313, + "scoreConfidence" : [ + 0.3865503523006278, + 0.42215418675203403 + ], + "scorePercentiles" : { + "0.0" : 0.39850757021598787, + "50.0" : 0.4043293976140303, + "90.0" : 0.41031339393566385, + "95.0" : 0.41031339393566385, + "99.0" : 0.41031339393566385, + "99.9" : 0.41031339393566385, + "99.99" : 0.41031339393566385, + "99.999" : 0.41031339393566385, + "99.9999" : 0.41031339393566385, + "100.0" : 0.41031339393566385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41006639135605033, + 0.41031339393566385, + 0.41006067589289374 + ], + [ + 0.3985674664222231, + 0.3985981193351668, + 0.39850757021598787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15629282295921976, + "scoreError" : 0.004555034924374707, + "scoreConfidence" : [ + 0.15173778803484506, + 0.16084785788359446 + ], + "scorePercentiles" : { + "0.0" : 0.15461642729254604, + "50.0" : 0.15626424522104793, + "90.0" : 0.15806076509451855, + "95.0" : 0.15806076509451855, + "99.0" : 0.15806076509451855, + "99.9" : 0.15806076509451855, + "99.99" : 0.15806076509451855, + "99.999" : 0.15806076509451855, + "99.9999" : 0.15806076509451855, + "100.0" : 0.15806076509451855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15806076509451855, + 0.15769848702947345, + 0.15753027709078307 + ], + [ + 0.15485276789668467, + 0.1549982133513128, + 0.15461642729254604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04669476371138736, + "scoreError" : 9.920732913827628E-4, + "scoreConfidence" : [ + 0.0457026904200046, + 0.04768683700277012 + ], + "scorePercentiles" : { + "0.0" : 0.04636662831283963, + "50.0" : 0.046678445080916946, + "90.0" : 0.04704397731111017, + "95.0" : 0.04704397731111017, + "99.0" : 0.04704397731111017, + "99.9" : 0.04704397731111017, + "99.99" : 0.04704397731111017, + "99.999" : 0.04704397731111017, + "99.9999" : 0.04704397731111017, + "100.0" : 0.04704397731111017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046975508295753476, + 0.047031523745479684, + 0.04704397731111017 + ], + [ + 0.04636662831283963, + 0.046381381866080415, + 0.04636956273706077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8529837.973993618, + "scoreError" : 370206.5431251566, + "scoreConfidence" : [ + 8159631.430868462, + 8900044.517118774 + ], + "scorePercentiles" : { + "0.0" : 8400766.229219144, + "50.0" : 8529683.942852532, + "90.0" : 8661036.68138528, + "95.0" : 8661036.68138528, + "99.0" : 8661036.68138528, + "99.9" : 8661036.68138528, + "99.99" : 8661036.68138528, + "99.999" : 8661036.68138528, + "99.9999" : 8661036.68138528, + "100.0" : 8661036.68138528 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8418873.178451179, + 8409109.905042017, + 8400766.229219144 + ], + [ + 8661036.68138528, + 8640494.707253886, + 8648747.142610198 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-15T01:47:22Z-43082799e033a83fd934df232d6ecb10b23663be-jdk17.json b/performance-results/2025-10-15T01:47:22Z-43082799e033a83fd934df232d6ecb10b23663be-jdk17.json new file mode 100644 index 0000000000..76ba21e84c --- /dev/null +++ b/performance-results/2025-10-15T01:47:22Z-43082799e033a83fd934df232d6ecb10b23663be-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3142526921538993, + "scoreError" : 0.06089829779633682, + "scoreConfidence" : [ + 3.2533543943575625, + 3.375150989950236 + ], + "scorePercentiles" : { + "0.0" : 3.3044063370493943, + "50.0" : 3.3149269996983977, + "90.0" : 3.322750432169406, + "95.0" : 3.322750432169406, + "99.0" : 3.322750432169406, + "99.9" : 3.322750432169406, + "99.99" : 3.322750432169406, + "99.999" : 3.322750432169406, + "99.9999" : 3.322750432169406, + "100.0" : 3.322750432169406 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3044063370493943, + 3.322750432169406 + ], + [ + 3.307985525822935, + 3.321868473573861 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6715608554193984, + "scoreError" : 0.02377100068069686, + "scoreConfidence" : [ + 1.6477898547387015, + 1.6953318561000952 + ], + "scorePercentiles" : { + "0.0" : 1.6681850081012481, + "50.0" : 1.6709519922678886, + "90.0" : 1.6761544290405685, + "95.0" : 1.6761544290405685, + "99.0" : 1.6761544290405685, + "99.9" : 1.6761544290405685, + "99.99" : 1.6761544290405685, + "99.999" : 1.6761544290405685, + "99.9999" : 1.6761544290405685, + "100.0" : 1.6761544290405685 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6681850081012481, + 1.6761544290405685 + ], + [ + 1.6690340048634709, + 1.6728699796723063 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8395464495543093, + "scoreError" : 0.020423111370492658, + "scoreConfidence" : [ + 0.8191233381838167, + 0.859969560924802 + ], + "scorePercentiles" : { + "0.0" : 0.8357130188031962, + "50.0" : 0.839867970697676, + "90.0" : 0.8427368380186893, + "95.0" : 0.8427368380186893, + "99.0" : 0.8427368380186893, + "99.9" : 0.8427368380186893, + "99.99" : 0.8427368380186893, + "99.999" : 0.8427368380186893, + "99.9999" : 0.8427368380186893, + "100.0" : 0.8427368380186893 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8414309393402474, + 0.8427368380186893 + ], + [ + 0.8357130188031962, + 0.8383050020551047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.669547543282995, + "scoreError" : 0.24906100992643931, + "scoreConfidence" : [ + 15.420486533356556, + 15.918608553209435 + ], + "scorePercentiles" : { + "0.0" : 15.515562138674634, + "50.0" : 15.717038714742444, + "90.0" : 15.733179298107443, + "95.0" : 15.733179298107443, + "99.0" : 15.733179298107443, + "99.9" : 15.733179298107443, + "99.99" : 15.733179298107443, + "99.999" : 15.733179298107443, + "99.9999" : 15.733179298107443, + "100.0" : 15.733179298107443 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.733179298107443, + 15.70981037707785, + 15.726631230299612 + ], + [ + 15.724267052407034, + 15.607835163131385, + 15.515562138674634 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2512.666505233547, + "scoreError" : 25.015632516507264, + "scoreConfidence" : [ + 2487.65087271704, + 2537.682137750054 + ], + "scorePercentiles" : { + "0.0" : 2499.291346933815, + "50.0" : 2513.2521998211905, + "90.0" : 2522.1021158264707, + "95.0" : 2522.1021158264707, + "99.0" : 2522.1021158264707, + "99.9" : 2522.1021158264707, + "99.99" : 2522.1021158264707, + "99.999" : 2522.1021158264707, + "99.9999" : 2522.1021158264707, + "100.0" : 2522.1021158264707 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2499.291346933815, + 2521.9689457438426, + 2513.426592122762 + ], + [ + 2513.0778075196185, + 2522.1021158264707, + 2506.1322232547764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72944.8532766683, + "scoreError" : 1811.6686089513873, + "scoreConfidence" : [ + 71133.18466771692, + 74756.52188561969 + ], + "scorePercentiles" : { + "0.0" : 72299.45755949058, + "50.0" : 72841.03893429958, + "90.0" : 73654.86103189577, + "95.0" : 73654.86103189577, + "99.0" : 73654.86103189577, + "99.9" : 73654.86103189577, + "99.99" : 73654.86103189577, + "99.999" : 73654.86103189577, + "99.9999" : 73654.86103189577, + "100.0" : 73654.86103189577 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73263.26246032969, + 73654.86103189577, + 73640.05383674607 + ], + [ + 72418.81540826947, + 72299.45755949058, + 72392.66936327827 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 331.00109484005526, + "scoreError" : 19.062948544695836, + "scoreConfidence" : [ + 311.93814629535945, + 350.0640433847511 + ], + "scorePercentiles" : { + "0.0" : 323.08835566949983, + "50.0" : 331.8093838082406, + "90.0" : 337.37771917057273, + "95.0" : 337.37771917057273, + "99.0" : 337.37771917057273, + "99.9" : 337.37771917057273, + "99.99" : 337.37771917057273, + "99.999" : 337.37771917057273, + "99.9999" : 337.37771917057273, + "100.0" : 337.37771917057273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 336.85793607792084, + 337.37771917057273, + 337.1052792484525 + ], + [ + 323.08835566949983, + 324.81644733532534, + 326.7608315385604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.16831810718206, + "scoreError" : 5.143175953499081, + "scoreConfidence" : [ + 101.02514215368298, + 111.31149406068114 + ], + "scorePercentiles" : { + "0.0" : 103.36200395163198, + "50.0" : 105.85721405981319, + "90.0" : 108.44710519555863, + "95.0" : 108.44710519555863, + "99.0" : 108.44710519555863, + "99.9" : 108.44710519555863, + "99.99" : 108.44710519555863, + "99.999" : 108.44710519555863, + "99.9999" : 108.44710519555863, + "100.0" : 108.44710519555863 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.5446620365646, + 107.94170933971071, + 108.44710519555863 + ], + [ + 103.36200395163198, + 105.7476211940178, + 105.96680692560858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0638832518832319, + "scoreError" : 0.0015083149234792243, + "scoreConfidence" : [ + 0.06237493695975268, + 0.06539156680671113 + ], + "scorePercentiles" : { + "0.0" : 0.06331936095914698, + "50.0" : 0.06390183831461523, + "90.0" : 0.06445239146155185, + "95.0" : 0.06445239146155185, + "99.0" : 0.06445239146155185, + "99.9" : 0.06445239146155185, + "99.99" : 0.06445239146155185, + "99.999" : 0.06445239146155185, + "99.9999" : 0.06445239146155185, + "100.0" : 0.06445239146155185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06445239146155185, + 0.06434315949041307, + 0.06431423326408942 + ], + [ + 0.06331936095914698, + 0.06338092275904905, + 0.06348944336514104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 4.0545589351634694E-4, + "scoreError" : 2.718698443078817E-5, + "scoreConfidence" : [ + 3.7826890908555875E-4, + 4.3264287794713514E-4 + ], + "scorePercentiles" : { + "0.0" : 3.916359272963846E-4, + "50.0" : 4.075803961889824E-4, + "90.0" : 4.182437980081773E-4, + "95.0" : 4.182437980081773E-4, + "99.0" : 4.182437980081773E-4, + "99.9" : 4.182437980081773E-4, + "99.99" : 4.182437980081773E-4, + "99.999" : 4.182437980081773E-4, + "99.9999" : 4.182437980081773E-4, + "100.0" : 4.182437980081773E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.182437980081773E-4, + 4.1038214859463376E-4, + 4.103879019528591E-4 + ], + [ + 3.916359272963846E-4, + 3.97306941462696E-4, + 4.0477864378333096E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.464310853264765, + "scoreError" : 0.09869931029222491, + "scoreConfidence" : [ + 2.3656115429725397, + 2.56301016355699 + ], + "scorePercentiles" : { + "0.0" : 2.40623983493744, + "50.0" : 2.435599433525828, + "90.0" : 2.584501354900003, + "95.0" : 2.590334935767936, + "99.0" : 2.590334935767936, + "99.9" : 2.590334935767936, + "99.99" : 2.590334935767936, + "99.999" : 2.590334935767936, + "99.9999" : 2.590334935767936, + "100.0" : 2.590334935767936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.5319991270886075, + 2.590334935767936, + 2.52758611119535, + 2.455099180412371, + 2.409812433493976 + ], + [ + 2.477070732045567, + 2.4143643008208593, + 2.414502190246258, + 2.40623983493744, + 2.416099686639285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013753834887277947, + "scoreError" : 3.2914042127123815E-5, + "scoreConfidence" : [ + 0.013720920845150824, + 0.01378674892940507 + ], + "scorePercentiles" : { + "0.0" : 0.013737788410049715, + "50.0" : 0.013757794897653374, + "90.0" : 0.01376681748888739, + "95.0" : 0.01376681748888739, + "99.0" : 0.01376681748888739, + "99.9" : 0.01376681748888739, + "99.99" : 0.01376681748888739, + "99.999" : 0.01376681748888739, + "99.9999" : 0.01376681748888739, + "100.0" : 0.01376681748888739 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013737788410049715, + 0.01376173273681574, + 0.01374108089260809 + ], + [ + 0.01375600615296155, + 0.01376681748888739, + 0.013759583642345197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.980615931371409, + "scoreError" : 0.05635167829220699, + "scoreConfidence" : [ + 0.924264253079202, + 1.036967609663616 + ], + "scorePercentiles" : { + "0.0" : 0.960495810026892, + "50.0" : 0.9808512407419551, + "90.0" : 1.000003198980102, + "95.0" : 1.000003198980102, + "99.0" : 1.000003198980102, + "99.9" : 1.000003198980102, + "99.99" : 1.000003198980102, + "99.999" : 1.000003198980102, + "99.9999" : 1.000003198980102, + "100.0" : 1.000003198980102 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9974313996210232, + 0.9993013209432454, + 1.000003198980102 + ], + [ + 0.9642710818628869, + 0.9621927767943044, + 0.960495810026892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010895342707204459, + "scoreError" : 4.2671867550227876E-4, + "scoreConfidence" : [ + 0.01046862403170218, + 0.011322061382706737 + ], + "scorePercentiles" : { + "0.0" : 0.010739087832526492, + "50.0" : 0.010890161033889775, + "90.0" : 0.011054926513305951, + "95.0" : 0.011054926513305951, + "99.0" : 0.011054926513305951, + "99.9" : 0.011054926513305951, + "99.99" : 0.011054926513305951, + "99.999" : 0.011054926513305951, + "99.9999" : 0.011054926513305951, + "100.0" : 0.011054926513305951 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010755495660347732, + 0.010778999133396567, + 0.010739087832526492 + ], + [ + 0.011054926513305951, + 0.01104222416926702, + 0.011001322934382983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.213659811043943, + "scoreError" : 0.033884292444003365, + "scoreConfidence" : [ + 3.1797755185999397, + 3.247544103487946 + ], + "scorePercentiles" : { + "0.0" : 3.2001368138195776, + "50.0" : 3.2120205353468085, + "90.0" : 3.2352481688227686, + "95.0" : 3.2352481688227686, + "99.0" : 3.2352481688227686, + "99.9" : 3.2352481688227686, + "99.99" : 3.2352481688227686, + "99.999" : 3.2352481688227686, + "99.9999" : 3.2352481688227686, + "100.0" : 3.2352481688227686 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.212857140655106, + 3.2056587794871794, + 3.2352481688227686 + ], + [ + 3.2001368138195776, + 3.2168740334405146, + 3.2111839300385108 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0323427456681245, + "scoreError" : 0.2474704712524874, + "scoreConfidence" : [ + 2.784872274415637, + 3.279813216920612 + ], + "scorePercentiles" : { + "0.0" : 2.9530944216120463, + "50.0" : 3.0071262848659694, + "90.0" : 3.1798429888712243, + "95.0" : 3.1798429888712243, + "99.0" : 3.1798429888712243, + "99.9" : 3.1798429888712243, + "99.99" : 3.1798429888712243, + "99.999" : 3.1798429888712243, + "99.9999" : 3.1798429888712243, + "100.0" : 3.1798429888712243 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9738734463276835, + 2.963175444148148, + 2.9530944216120463 + ], + [ + 3.08369104964539, + 3.0403791234042554, + 3.1798429888712243 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18786496693374835, + "scoreError" : 0.025440384158599987, + "scoreConfidence" : [ + 0.16242458277514837, + 0.21330535109234833 + ], + "scorePercentiles" : { + "0.0" : 0.17927279565092683, + "50.0" : 0.18785803165767817, + "90.0" : 0.19647382449556966, + "95.0" : 0.19647382449556966, + "99.0" : 0.19647382449556966, + "99.9" : 0.19647382449556966, + "99.99" : 0.19647382449556966, + "99.999" : 0.19647382449556966, + "99.9999" : 0.19647382449556966, + "100.0" : 0.19647382449556966 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1960343993883912, + 0.19592241857685827, + 0.19647382449556966 + ], + [ + 0.17927279565092683, + 0.1796927187522461, + 0.17979364473849804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3323462838816404, + "scoreError" : 0.009844476134683743, + "scoreConfidence" : [ + 0.32250180774695664, + 0.34219076001632415 + ], + "scorePercentiles" : { + "0.0" : 0.32910888504574476, + "50.0" : 0.33211196740762006, + "90.0" : 0.33579531805513585, + "95.0" : 0.33579531805513585, + "99.0" : 0.33579531805513585, + "99.9" : 0.33579531805513585, + "99.99" : 0.33579531805513585, + "99.999" : 0.33579531805513585, + "99.9999" : 0.33579531805513585, + "100.0" : 0.33579531805513585 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33503991855400694, + 0.33578820804512793, + 0.33579531805513585 + ], + [ + 0.32916135732859353, + 0.32910888504574476, + 0.3291840162612331 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14638320760906973, + "scoreError" : 0.005594611453734423, + "scoreConfidence" : [ + 0.14078859615533532, + 0.15197781906280414 + ], + "scorePercentiles" : { + "0.0" : 0.14441117103743067, + "50.0" : 0.14648890698556594, + "90.0" : 0.14827017913590132, + "95.0" : 0.14827017913590132, + "99.0" : 0.14827017913590132, + "99.9" : 0.14827017913590132, + "99.99" : 0.14827017913590132, + "99.999" : 0.14827017913590132, + "99.9999" : 0.14827017913590132, + "100.0" : 0.14827017913590132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1482157981414788, + 0.14827017913590132, + 0.14810666167061612 + ], + [ + 0.14487115230051573, + 0.14441117103743067, + 0.1444242833684758 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4165657287602406, + "scoreError" : 0.027093493067786408, + "scoreConfidence" : [ + 0.3894722356924542, + 0.44365922182802703 + ], + "scorePercentiles" : { + "0.0" : 0.4066838060187068, + "50.0" : 0.41671200873547287, + "90.0" : 0.4265218668429583, + "95.0" : 0.4265218668429583, + "99.0" : 0.4265218668429583, + "99.9" : 0.4265218668429583, + "99.99" : 0.4265218668429583, + "99.999" : 0.4265218668429583, + "99.9999" : 0.4265218668429583, + "100.0" : 0.4265218668429583 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4248157147408666, + 0.4265218668429583, + 0.4247001635452499 + ], + [ + 0.40794896748796605, + 0.4087238539256958, + 0.4066838060187068 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1570340854191275, + "scoreError" : 0.004974292264305018, + "scoreConfidence" : [ + 0.1520597931548225, + 0.16200837768343251 + ], + "scorePercentiles" : { + "0.0" : 0.15529285502003043, + "50.0" : 0.15695298936580857, + "90.0" : 0.15907769488101298, + "95.0" : 0.15907769488101298, + "99.0" : 0.15907769488101298, + "99.9" : 0.15907769488101298, + "99.99" : 0.15907769488101298, + "99.999" : 0.15907769488101298, + "99.9999" : 0.15907769488101298, + "100.0" : 0.15907769488101298 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.155485281080913, + 0.15551617223146666, + 0.15529285502003043 + ], + [ + 0.15907769488101298, + 0.15844270280119147, + 0.15838980650015047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047018274151710136, + "scoreError" : 0.004572800130771919, + "scoreConfidence" : [ + 0.04244547402093822, + 0.05159107428248205 + ], + "scorePercentiles" : { + "0.0" : 0.04536798490629381, + "50.0" : 0.047103290396752054, + "90.0" : 0.04865234943856303, + "95.0" : 0.04865234943856303, + "99.0" : 0.04865234943856303, + "99.9" : 0.04865234943856303, + "99.99" : 0.04865234943856303, + "99.999" : 0.04865234943856303, + "99.9999" : 0.04865234943856303, + "100.0" : 0.04865234943856303 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04579326818881196, + 0.04536798490629381, + 0.04545077297621591 + ], + [ + 0.048413312604692144, + 0.04843195679568393, + 0.04865234943856303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9669315.227578903, + "scoreError" : 270281.63628860674, + "scoreConfidence" : [ + 9399033.591290295, + 9939596.86386751 + ], + "scorePercentiles" : { + "0.0" : 9551889.490926456, + "50.0" : 9673984.17402568, + "90.0" : 9824911.040275048, + "95.0" : 9824911.040275048, + "99.0" : 9824911.040275048, + "99.9" : 9824911.040275048, + "99.99" : 9824911.040275048, + "99.999" : 9824911.040275048, + "99.9999" : 9824911.040275048, + "100.0" : 9824911.040275048 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9649584.56219865, + 9590385.475551294, + 9700737.010669254 + ], + [ + 9551889.490926456, + 9824911.040275048, + 9698383.785852714 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-16T00:14:35Z-fd372aeeccec4294c234219cf689d83b5f92501e-jdk17.json b/performance-results/2025-10-16T00:14:35Z-fd372aeeccec4294c234219cf689d83b5f92501e-jdk17.json new file mode 100644 index 0000000000..1b19cadfbc --- /dev/null +++ b/performance-results/2025-10-16T00:14:35Z-fd372aeeccec4294c234219cf689d83b5f92501e-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.344804978486017, + "scoreError" : 0.03372501614875968, + "scoreConfidence" : [ + 3.3110799623372573, + 3.3785299946347767 + ], + "scorePercentiles" : { + "0.0" : 3.3402421444586814, + "50.0" : 3.3447780369362374, + "90.0" : 3.349421695612912, + "95.0" : 3.349421695612912, + "99.0" : 3.349421695612912, + "99.9" : 3.349421695612912, + "99.99" : 3.349421695612912, + "99.999" : 3.349421695612912, + "99.9999" : 3.349421695612912, + "100.0" : 3.349421695612912 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.340329532370066, + 3.349421695612912 + ], + [ + 3.3402421444586814, + 3.349226541502409 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6914242428696418, + "scoreError" : 0.01648012479282642, + "scoreConfidence" : [ + 1.6749441180768154, + 1.7079043676624681 + ], + "scorePercentiles" : { + "0.0" : 1.6893068570324623, + "50.0" : 1.690676486590314, + "90.0" : 1.6950371412654766, + "95.0" : 1.6950371412654766, + "99.0" : 1.6950371412654766, + "99.9" : 1.6950371412654766, + "99.99" : 1.6950371412654766, + "99.999" : 1.6950371412654766, + "99.9999" : 1.6950371412654766, + "100.0" : 1.6950371412654766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6900216116514066, + 1.6950371412654766 + ], + [ + 1.6913313615292218, + 1.6893068570324623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8553555551773281, + "scoreError" : 0.022776176908929243, + "scoreConfidence" : [ + 0.8325793782683989, + 0.8781317320862573 + ], + "scorePercentiles" : { + "0.0" : 0.8513992368057242, + "50.0" : 0.8557170499741311, + "90.0" : 0.8585888839553258, + "95.0" : 0.8585888839553258, + "99.0" : 0.8585888839553258, + "99.9" : 0.8585888839553258, + "99.99" : 0.8585888839553258, + "99.999" : 0.8585888839553258, + "99.9999" : 0.8585888839553258, + "100.0" : 0.8585888839553258 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8513992368057242, + 0.8585888839553258 + ], + [ + 0.8533824188988806, + 0.8580516810493816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.519551896237306, + "scoreError" : 0.4029247206974454, + "scoreConfidence" : [ + 16.11662717553986, + 16.922476616934752 + ], + "scorePercentiles" : { + "0.0" : 16.38455625351044, + "50.0" : 16.51516518404042, + "90.0" : 16.66493061806253, + "95.0" : 16.66493061806253, + "99.0" : 16.66493061806253, + "99.9" : 16.66493061806253, + "99.99" : 16.66493061806253, + "99.999" : 16.66493061806253, + "99.9999" : 16.66493061806253, + "100.0" : 16.66493061806253 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.38455625351044, + 16.393312325187626, + 16.388104964946315 + ], + [ + 16.637018042893214, + 16.649389172823717, + 16.66493061806253 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2809.518893438351, + "scoreError" : 195.6415793306292, + "scoreConfidence" : [ + 2613.8773141077218, + 3005.16047276898 + ], + "scorePercentiles" : { + "0.0" : 2745.2180171931586, + "50.0" : 2808.9306875725015, + "90.0" : 2874.4506560017962, + "95.0" : 2874.4506560017962, + "99.0" : 2874.4506560017962, + "99.9" : 2874.4506560017962, + "99.99" : 2874.4506560017962, + "99.999" : 2874.4506560017962, + "99.9999" : 2874.4506560017962, + "100.0" : 2874.4506560017962 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2746.338280691674, + 2745.2180171931586, + 2745.954190218494 + ], + [ + 2871.5230944533287, + 2874.4506560017962, + 2873.629122071654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73853.73486527042, + "scoreError" : 1634.5047185256708, + "scoreConfidence" : [ + 72219.23014674475, + 75488.2395837961 + ], + "scorePercentiles" : { + "0.0" : 73315.98387712146, + "50.0" : 73839.14186242627, + "90.0" : 74402.75239762344, + "95.0" : 74402.75239762344, + "99.0" : 74402.75239762344, + "99.9" : 74402.75239762344, + "99.99" : 74402.75239762344, + "99.999" : 74402.75239762344, + "99.9999" : 74402.75239762344, + "100.0" : 74402.75239762344 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73315.98387712146, + 73323.64615468426, + 73326.10339773809 + ], + [ + 74401.74303734089, + 74352.18032711446, + 74402.75239762344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 369.26725142293543, + "scoreError" : 11.908843027218001, + "scoreConfidence" : [ + 357.35840839571745, + 381.1760944501534 + ], + "scorePercentiles" : { + "0.0" : 364.4323781873843, + "50.0" : 369.6336047812931, + "90.0" : 373.35143257889297, + "95.0" : 373.35143257889297, + "99.0" : 373.35143257889297, + "99.9" : 373.35143257889297, + "99.99" : 373.35143257889297, + "99.999" : 373.35143257889297, + "99.9999" : 373.35143257889297, + "100.0" : 373.35143257889297 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.28998310446104, + 365.5686735429993, + 364.4323781873843 + ], + [ + 372.9838146657496, + 373.35143257889297, + 372.97722645812513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.36974167547804, + "scoreError" : 3.988736019630814, + "scoreConfidence" : [ + 110.38100565584722, + 118.35847769510886 + ], + "scorePercentiles" : { + "0.0" : 112.81993133370868, + "50.0" : 114.35996027143432, + "90.0" : 115.82432564404856, + "95.0" : 115.82432564404856, + "99.0" : 115.82432564404856, + "99.9" : 115.82432564404856, + "99.99" : 115.82432564404856, + "99.999" : 115.82432564404856, + "99.9999" : 115.82432564404856, + "100.0" : 115.82432564404856 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.66071959556275, + 115.82432564404856, + 115.4887772163897 + ], + [ + 112.81993133370868, + 113.19355293667958, + 113.23114332647894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060717858666894636, + "scoreError" : 6.059387690707904E-4, + "scoreConfidence" : [ + 0.06011191989782384, + 0.06132379743596543 + ], + "scorePercentiles" : { + "0.0" : 0.06050704320124884, + "50.0" : 0.06070412478012961, + "90.0" : 0.0609398462086911, + "95.0" : 0.0609398462086911, + "99.0" : 0.0609398462086911, + "99.9" : 0.0609398462086911, + "99.99" : 0.0609398462086911, + "99.999" : 0.0609398462086911, + "99.9999" : 0.0609398462086911, + "100.0" : 0.0609398462086911 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06053004971854004, + 0.06052773307064691, + 0.06050704320124884 + ], + [ + 0.060878199841719174, + 0.0609398462086911, + 0.06092427996052174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5929797998013124E-4, + "scoreError" : 4.8201780241922105E-5, + "scoreConfidence" : [ + 3.110961997382091E-4, + 4.0749976022205335E-4 + ], + "scorePercentiles" : { + "0.0" : 3.433042501300425E-4, + "50.0" : 3.582602790223153E-4, + "90.0" : 3.8034456002248874E-4, + "95.0" : 3.8034456002248874E-4, + "99.0" : 3.8034456002248874E-4, + "99.9" : 3.8034456002248874E-4, + "99.99" : 3.8034456002248874E-4, + "99.999" : 3.8034456002248874E-4, + "99.9999" : 3.8034456002248874E-4, + "100.0" : 3.8034456002248874E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4479450895260054E-4, + 3.433042501300425E-4, + 3.4350282059581757E-4 + ], + [ + 3.721156910878079E-4, + 3.7172604909203004E-4, + 3.8034456002248874E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.4116853284428106, + "scoreError" : 0.3601896999024966, + "scoreConfidence" : [ + 2.051495628540314, + 2.771875028345307 + ], + "scorePercentiles" : { + "0.0" : 2.177098801915542, + "50.0" : 2.2890667546767487, + "90.0" : 2.727156159129847, + "95.0" : 2.730167951678952, + "99.0" : 2.730167951678952, + "99.9" : 2.730167951678952, + "99.99" : 2.730167951678952, + "99.999" : 2.730167951678952, + "99.9999" : 2.730167951678952, + "100.0" : 2.730167951678952 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.700050026187905, + 2.730167951678952, + 2.675195960417224, + 2.6286456739358908, + 2.2997501478500806 + ], + [ + 2.278383361503417, + 2.224587737322064, + 2.2243038318505337, + 2.1786697917664997, + 2.177098801915542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01365911281066772, + "scoreError" : 1.7220565428795008E-4, + "scoreConfidence" : [ + 0.01348690715637977, + 0.01383131846495567 + ], + "scorePercentiles" : { + "0.0" : 0.013600119455131735, + "50.0" : 0.013658907414950613, + "90.0" : 0.013717556483306654, + "95.0" : 0.013717556483306654, + "99.0" : 0.013717556483306654, + "99.9" : 0.013717556483306654, + "99.99" : 0.013717556483306654, + "99.999" : 0.013717556483306654, + "99.9999" : 0.013717556483306654, + "100.0" : 0.013717556483306654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013717556483306654, + 0.013714814521880331, + 0.01371304064631494 + ], + [ + 0.013604371573786371, + 0.013600119455131735, + 0.013604774183586289 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0431899206108504, + "scoreError" : 0.2893457720961509, + "scoreConfidence" : [ + 0.7538441485146994, + 1.3325356927070013 + ], + "scorePercentiles" : { + "0.0" : 0.9489547735079229, + "50.0" : 1.042728844238851, + "90.0" : 1.1382137088549966, + "95.0" : 1.1382137088549966, + "99.0" : 1.1382137088549966, + "99.9" : 1.1382137088549966, + "99.99" : 1.1382137088549966, + "99.999" : 1.1382137088549966, + "99.9999" : 1.1382137088549966, + "100.0" : 1.1382137088549966 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9489547735079229, + 0.9489822451129246, + 0.9490575880231565 + ], + [ + 1.1364001004545454, + 1.1382137088549966, + 1.137531107711556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01032750098793153, + "scoreError" : 7.773222868154133E-5, + "scoreConfidence" : [ + 0.010249768759249989, + 0.010405233216613071 + ], + "scorePercentiles" : { + "0.0" : 0.010300805985031242, + "50.0" : 0.010326478235850173, + "90.0" : 0.010357986808388108, + "95.0" : 0.010357986808388108, + "99.0" : 0.010357986808388108, + "99.9" : 0.010357986808388108, + "99.99" : 0.010357986808388108, + "99.999" : 0.010357986808388108, + "99.9999" : 0.010357986808388108, + "100.0" : 0.010357986808388108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010349764649751405, + 0.010357986808388108, + 0.010350206619815979 + ], + [ + 0.010300805985031242, + 0.010303191821948943, + 0.010303050042653502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1554392668319546, + "scoreError" : 0.2005836854224783, + "scoreConfidence" : [ + 2.9548555814094764, + 3.356022952254433 + ], + "scorePercentiles" : { + "0.0" : 3.0841508353884093, + "50.0" : 3.155915943811939, + "90.0" : 3.2321467756948934, + "95.0" : 3.2321467756948934, + "99.0" : 3.2321467756948934, + "99.9" : 3.2321467756948934, + "99.99" : 3.2321467756948934, + "99.999" : 3.2321467756948934, + "99.9999" : 3.2321467756948934, + "100.0" : 3.2321467756948934 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.087758537654321, + 3.0998943744575325, + 3.0841508353884093 + ], + [ + 3.2119375131663457, + 3.2321467756948934, + 3.216747564630225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7290293519755466, + "scoreError" : 0.038378126900840116, + "scoreConfidence" : [ + 2.6906512250747063, + 2.767407478876387 + ], + "scorePercentiles" : { + "0.0" : 2.7159294238392615, + "50.0" : 2.7251748647356013, + "90.0" : 2.7486795399835118, + "95.0" : 2.7486795399835118, + "99.0" : 2.7486795399835118, + "99.9" : 2.7486795399835118, + "99.99" : 2.7486795399835118, + "99.999" : 2.7486795399835118, + "99.9999" : 2.7486795399835118, + "100.0" : 2.7486795399835118 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7179188779891303, + 2.7190467922784123, + 2.7159294238392615 + ], + [ + 2.7486795399835118, + 2.7412985405701753, + 2.731302937192791 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1773765244219865, + "scoreError" : 0.004916984970571826, + "scoreConfidence" : [ + 0.17245953945141468, + 0.18229350939255834 + ], + "scorePercentiles" : { + "0.0" : 0.1753744505980148, + "50.0" : 0.17777417786064187, + "90.0" : 0.1789701104926893, + "95.0" : 0.1789701104926893, + "99.0" : 0.1789701104926893, + "99.9" : 0.1789701104926893, + "99.99" : 0.1789701104926893, + "99.999" : 0.1789701104926893, + "99.9999" : 0.1789701104926893, + "100.0" : 0.1789701104926893 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17668079446996465, + 0.17544487275215354, + 0.1753744505980148 + ], + [ + 0.17892135696777772, + 0.1789701104926893, + 0.1788675612513191 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32314382211508047, + "scoreError" : 0.0054237284500854395, + "scoreConfidence" : [ + 0.31772009366499504, + 0.3285675505651659 + ], + "scorePercentiles" : { + "0.0" : 0.32121306250602255, + "50.0" : 0.3231124482198333, + "90.0" : 0.325214354796748, + "95.0" : 0.325214354796748, + "99.0" : 0.325214354796748, + "99.9" : 0.325214354796748, + "99.99" : 0.325214354796748, + "99.999" : 0.325214354796748, + "99.9999" : 0.325214354796748, + "100.0" : 0.325214354796748 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32151843098736455, + 0.32143152638853173, + 0.32121306250602255 + ], + [ + 0.32477909255951415, + 0.3247064654523021, + 0.325214354796748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15182382172233433, + "scoreError" : 0.015586652645248441, + "scoreConfidence" : [ + 0.13623716907708588, + 0.16741047436758277 + ], + "scorePercentiles" : { + "0.0" : 0.1465370071801184, + "50.0" : 0.15182155966115324, + "90.0" : 0.15705126049060872, + "95.0" : 0.15705126049060872, + "99.0" : 0.15705126049060872, + "99.9" : 0.15705126049060872, + "99.99" : 0.15705126049060872, + "99.999" : 0.15705126049060872, + "99.9999" : 0.15705126049060872, + "100.0" : 0.15705126049060872 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15705126049060872, + 0.15693600644989172, + 0.15669906689335297 + ], + [ + 0.1467755368910807, + 0.1465370071801184, + 0.14694405242895348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4128329378796596, + "scoreError" : 0.02903631037840723, + "scoreConfidence" : [ + 0.3837966275012524, + 0.4418692482580668 + ], + "scorePercentiles" : { + "0.0" : 0.40121361652958876, + "50.0" : 0.41319984994189796, + "90.0" : 0.4236124690134282, + "95.0" : 0.4236124690134282, + "99.0" : 0.4236124690134282, + "99.9" : 0.4236124690134282, + "99.99" : 0.4236124690134282, + "99.999" : 0.4236124690134282, + "99.9999" : 0.4236124690134282, + "100.0" : 0.4236124690134282 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4236124690134282, + 0.4232945724021164, + 0.4190277899522333 + ], + [ + 0.40737190993156264, + 0.40247726944902806, + 0.40121361652958876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15804432944876773, + "scoreError" : 0.0025939366761875875, + "scoreConfidence" : [ + 0.15545039277258013, + 0.16063826612495533 + ], + "scorePercentiles" : { + "0.0" : 0.1572182601286022, + "50.0" : 0.15771325656284202, + "90.0" : 0.15980901208130913, + "95.0" : 0.15980901208130913, + "99.0" : 0.15980901208130913, + "99.9" : 0.15980901208130913, + "99.99" : 0.15980901208130913, + "99.999" : 0.15980901208130913, + "99.9999" : 0.15980901208130913, + "100.0" : 0.15980901208130913 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15774099626165275, + 0.15757227985944788, + 0.1576855168640313 + ], + [ + 0.15980901208130913, + 0.1572182601286022, + 0.15823991149756314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046359296190735165, + "scoreError" : 0.0014513607761411132, + "scoreConfidence" : [ + 0.04490793541459405, + 0.04781065696687628 + ], + "scorePercentiles" : { + "0.0" : 0.04586200895211627, + "50.0" : 0.04634238184322376, + "90.0" : 0.04687817887562287, + "95.0" : 0.04687817887562287, + "99.0" : 0.04687817887562287, + "99.9" : 0.04687817887562287, + "99.99" : 0.04687817887562287, + "99.999" : 0.04687817887562287, + "99.9999" : 0.04687817887562287, + "100.0" : 0.04687817887562287 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.045885107566796215, + 0.04591763342287118, + 0.04586200895211627 + ], + [ + 0.04676713026357633, + 0.04687817887562287, + 0.04684571806342812 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8726614.815432435, + "scoreError" : 344208.8043753692, + "scoreConfidence" : [ + 8382406.011057066, + 9070823.619807804 + ], + "scorePercentiles" : { + "0.0" : 8610436.327022376, + "50.0" : 8726611.250357991, + "90.0" : 8846042.899204245, + "95.0" : 8846042.899204245, + "99.0" : 8846042.899204245, + "99.9" : 8846042.899204245, + "99.99" : 8846042.899204245, + "99.999" : 8846042.899204245, + "99.9999" : 8846042.899204245, + "100.0" : 8846042.899204245 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8838834.816254416, + 8846042.899204245, + 8830654.882612534 + ], + [ + 8610436.327022376, + 8622567.618103448, + 8611152.34939759 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-19T00:18:40Z-dcb2f71942850c39d37d1af63587125c53ce56fd-jdk17.json b/performance-results/2025-10-19T00:18:40Z-dcb2f71942850c39d37d1af63587125c53ce56fd-jdk17.json new file mode 100644 index 0000000000..dcc120e001 --- /dev/null +++ b/performance-results/2025-10-19T00:18:40Z-dcb2f71942850c39d37d1af63587125c53ce56fd-jdk17.json @@ -0,0 +1,4 @@ +[ +] + + diff --git a/performance-results/2025-10-19T22:45:44Z-54044bbb4d07d257bf61d46c819678db37f65fa3-jdk17.json b/performance-results/2025-10-19T22:45:44Z-54044bbb4d07d257bf61d46c819678db37f65fa3-jdk17.json new file mode 100644 index 0000000000..7da7037b64 --- /dev/null +++ b/performance-results/2025-10-19T22:45:44Z-54044bbb4d07d257bf61d46c819678db37f65fa3-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3315740875669744, + "scoreError" : 0.043900532423843036, + "scoreConfidence" : [ + 3.2876735551431313, + 3.3754746199908174 + ], + "scorePercentiles" : { + "0.0" : 3.3248169769761087, + "50.0" : 3.3306939442236665, + "90.0" : 3.3400914848444567, + "95.0" : 3.3400914848444567, + "99.0" : 3.3400914848444567, + "99.9" : 3.3400914848444567, + "99.99" : 3.3400914848444567, + "99.999" : 3.3400914848444567, + "99.9999" : 3.3400914848444567, + "100.0" : 3.3400914848444567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3248169769761087, + 3.3400914848444567 + ], + [ + 3.3276355638924335, + 3.333752324554899 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6888718919173817, + "scoreError" : 0.04556435982128628, + "scoreConfidence" : [ + 1.6433075320960955, + 1.734436251738668 + ], + "scorePercentiles" : { + "0.0" : 1.680180614672038, + "50.0" : 1.689888431095068, + "90.0" : 1.6955300908073525, + "95.0" : 1.6955300908073525, + "99.0" : 1.6955300908073525, + "99.9" : 1.6955300908073525, + "99.99" : 1.6955300908073525, + "99.999" : 1.6955300908073525, + "99.9999" : 1.6955300908073525, + "100.0" : 1.6955300908073525 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6935775301033922, + 1.6955300908073525 + ], + [ + 1.680180614672038, + 1.6861993320867439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8464616659021951, + "scoreError" : 0.018387306467299042, + "scoreConfidence" : [ + 0.828074359434896, + 0.8648489723694941 + ], + "scorePercentiles" : { + "0.0" : 0.8435975269966616, + "50.0" : 0.8459395660171949, + "90.0" : 0.8503700045777288, + "95.0" : 0.8503700045777288, + "99.0" : 0.8503700045777288, + "99.9" : 0.8503700045777288, + "99.99" : 0.8503700045777288, + "99.999" : 0.8503700045777288, + "99.9999" : 0.8503700045777288, + "100.0" : 0.8503700045777288 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8435975269966616, + 0.8503700045777288 + ], + [ + 0.8455746820687182, + 0.8463044499656716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.02044155340253, + "scoreError" : 0.7269947066741034, + "scoreConfidence" : [ + 15.293446846728427, + 16.747436260076633 + ], + "scorePercentiles" : { + "0.0" : 15.770938259200275, + "50.0" : 16.025175644360306, + "90.0" : 16.260836364686103, + "95.0" : 16.260836364686103, + "99.0" : 16.260836364686103, + "99.9" : 16.260836364686103, + "99.99" : 16.260836364686103, + "99.999" : 16.260836364686103, + "99.9999" : 16.260836364686103, + "100.0" : 16.260836364686103 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.800002569487893, + 15.770938259200275, + 15.780919758224982 + ], + [ + 16.25034871923272, + 16.25960364958323, + 16.260836364686103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2707.8437849522866, + "scoreError" : 23.646187992860717, + "scoreConfidence" : [ + 2684.197596959426, + 2731.489972945147 + ], + "scorePercentiles" : { + "0.0" : 2700.7376827838043, + "50.0" : 2704.83747660651, + "90.0" : 2720.0176686494356, + "95.0" : 2720.0176686494356, + "99.0" : 2720.0176686494356, + "99.9" : 2720.0176686494356, + "99.99" : 2720.0176686494356, + "99.999" : 2720.0176686494356, + "99.9999" : 2720.0176686494356, + "100.0" : 2720.0176686494356 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2700.8993875900087, + 2700.7376827838043, + 2701.076411680091 + ], + [ + 2708.5985415329283, + 2720.0176686494356, + 2715.7330174774497 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72745.50134303547, + "scoreError" : 1607.3379596723846, + "scoreConfidence" : [ + 71138.16338336309, + 74352.83930270786 + ], + "scorePercentiles" : { + "0.0" : 72201.64592745072, + "50.0" : 72733.85730466901, + "90.0" : 73315.12135860852, + "95.0" : 73315.12135860852, + "99.0" : 73315.12135860852, + "99.9" : 73315.12135860852, + "99.99" : 73315.12135860852, + "99.999" : 73315.12135860852, + "99.9999" : 73315.12135860852, + "100.0" : 73315.12135860852 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73231.0356131689, + 73258.00136157704, + 73315.12135860852 + ], + [ + 72230.52480123856, + 72236.67899616912, + 72201.64592745072 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.46241971290624, + "scoreError" : 10.912860118816111, + "scoreConfidence" : [ + 335.5495595940901, + 357.37527983172237 + ], + "scorePercentiles" : { + "0.0" : 342.4273398975916, + "50.0" : 346.1759092515375, + "90.0" : 351.32447184345375, + "95.0" : 351.32447184345375, + "99.0" : 351.32447184345375, + "99.9" : 351.32447184345375, + "99.99" : 351.32447184345375, + "99.999" : 351.32447184345375, + "99.9999" : 351.32447184345375, + "100.0" : 351.32447184345375 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.32447184345375, + 349.83935275938796, + 348.52658635984915 + ], + [ + 342.4273398975916, + 342.8315352739291, + 343.8252321432259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.6935029822577, + "scoreError" : 7.241764642969726, + "scoreConfidence" : [ + 106.45173833928797, + 120.93526762522743 + ], + "scorePercentiles" : { + "0.0" : 111.16071035808464, + "50.0" : 113.64694735773341, + "90.0" : 116.29476403757978, + "95.0" : 116.29476403757978, + "99.0" : 116.29476403757978, + "99.9" : 116.29476403757978, + "99.99" : 116.29476403757978, + "99.999" : 116.29476403757978, + "99.9999" : 116.29476403757978, + "100.0" : 116.29476403757978 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.16071035808464, + 111.39128992517124, + 111.47373344418854 + ], + [ + 115.8201612712783, + 116.29476403757978, + 116.02035885724364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06139648845147374, + "scoreError" : 5.960544394699803E-4, + "scoreConfidence" : [ + 0.06080043401200376, + 0.06199254289094372 + ], + "scorePercentiles" : { + "0.0" : 0.061174615186977345, + "50.0" : 0.061382167665579614, + "90.0" : 0.06161735014849594, + "95.0" : 0.06161735014849594, + "99.0" : 0.06161735014849594, + "99.9" : 0.06161735014849594, + "99.99" : 0.06161735014849594, + "99.999" : 0.06161735014849594, + "99.9999" : 0.06161735014849594, + "100.0" : 0.06161735014849594 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061225942919942204, + 0.061174615186977345, + 0.06121353190707924 + ], + [ + 0.06153839241121702, + 0.06160909813513064, + 0.06161735014849594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.626127543844963E-4, + "scoreError" : 5.2543184509612905E-6, + "scoreConfidence" : [ + 3.57358435933535E-4, + 3.678670728354576E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6056127179811864E-4, + "50.0" : 3.624801655632518E-4, + "90.0" : 3.647912004436373E-4, + "95.0" : 3.647912004436373E-4, + "99.0" : 3.647912004436373E-4, + "99.9" : 3.647912004436373E-4, + "99.99" : 3.647912004436373E-4, + "99.999" : 3.647912004436373E-4, + "99.9999" : 3.647912004436373E-4, + "100.0" : 3.647912004436373E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.647912004436373E-4, + 3.64256707096856E-4, + 3.6382093437354007E-4 + ], + [ + 3.6110701584186243E-4, + 3.6113939675296345E-4, + 3.6056127179811864E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2667922308006805, + "scoreError" : 0.05202791333637616, + "scoreConfidence" : [ + 2.2147643174643044, + 2.3188201441370566 + ], + "scorePercentiles" : { + "0.0" : 2.2315042228915662, + "50.0" : 2.2695907637452066, + "90.0" : 2.3266673319967888, + "95.0" : 2.328365140628638, + "99.0" : 2.328365140628638, + "99.9" : 2.328365140628638, + "99.99" : 2.328365140628638, + "99.999" : 2.328365140628638, + "99.9999" : 2.328365140628638, + "100.0" : 2.328365140628638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3113870543101456, + 2.2692488772407535, + 2.2849624290610007, + 2.2315042228915662, + 2.2317529419772373 + ], + [ + 2.328365140628638, + 2.2710168410535876, + 2.2699326502496597, + 2.2334025904421617, + 2.2363495601520573 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013606438473996054, + "scoreError" : 4.040560826511415E-4, + "scoreConfidence" : [ + 0.013202382391344913, + 0.014010494556647195 + ], + "scorePercentiles" : { + "0.0" : 0.013471713023235764, + "50.0" : 0.01360433874515516, + "90.0" : 0.013743281382449466, + "95.0" : 0.013743281382449466, + "99.0" : 0.013743281382449466, + "99.9" : 0.013743281382449466, + "99.99" : 0.013743281382449466, + "99.999" : 0.013743281382449466, + "99.9999" : 0.013743281382449466, + "100.0" : 0.013743281382449466 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013741359119628219, + 0.013743281382449466, + 0.013728987506795754 + ], + [ + 0.013479689983514564, + 0.013471713023235764, + 0.013473599828352549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9754204026656489, + "scoreError" : 0.019739509259656007, + "scoreConfidence" : [ + 0.9556808934059928, + 0.995159911925305 + ], + "scorePercentiles" : { + "0.0" : 0.9684973713926012, + "50.0" : 0.9754340619675017, + "90.0" : 0.9822600787741872, + "95.0" : 0.9822600787741872, + "99.0" : 0.9822600787741872, + "99.9" : 0.9822600787741872, + "99.99" : 0.9822600787741872, + "99.999" : 0.9822600787741872, + "99.9999" : 0.9822600787741872, + "100.0" : 0.9822600787741872 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9813225676577372, + 0.9822600787741872, + 0.9819175085910653 + ], + [ + 0.9684973713926012, + 0.9695455562772661, + 0.9689793333010367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010176133485506203, + "scoreError" : 0.0010086627041381538, + "scoreConfidence" : [ + 0.009167470781368049, + 0.011184796189644358 + ], + "scorePercentiles" : { + "0.0" : 0.009842391703853596, + "50.0" : 0.010178115046449148, + "90.0" : 0.010508054501627652, + "95.0" : 0.010508054501627652, + "99.0" : 0.010508054501627652, + "99.9" : 0.010508054501627652, + "99.99" : 0.010508054501627652, + "99.999" : 0.010508054501627652, + "99.9999" : 0.010508054501627652, + "100.0" : 0.010508054501627652 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01050195138369641, + 0.010508054501627652, + 0.010503399811784081 + ], + [ + 0.009854278709201884, + 0.009846724802873595, + 0.009842391703853596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.056214959267822, + "scoreError" : 0.1817253953248134, + "scoreConfidence" : [ + 2.8744895639430084, + 3.2379403545926353 + ], + "scorePercentiles" : { + "0.0" : 2.9877507461170847, + "50.0" : 3.0615532435535595, + "90.0" : 3.12271168227216, + "95.0" : 3.12271168227216, + "99.0" : 3.12271168227216, + "99.9" : 3.12271168227216, + "99.99" : 3.12271168227216, + "99.999" : 3.12271168227216, + "99.9999" : 3.12271168227216, + "100.0" : 3.12271168227216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1143215597758407, + 3.12271168227216, + 3.106227554658385 + ], + [ + 2.9877507461170847, + 3.0168789324487335, + 2.989399280334728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.841375842550949, + "scoreError" : 0.1643556991600567, + "scoreConfidence" : [ + 2.6770201433908927, + 3.0057315417110058 + ], + "scorePercentiles" : { + "0.0" : 2.783482743946563, + "50.0" : 2.832620632437232, + "90.0" : 2.906042618826264, + "95.0" : 2.906042618826264, + "99.0" : 2.906042618826264, + "99.9" : 2.906042618826264, + "99.99" : 2.906042618826264, + "99.999" : 2.906042618826264, + "99.9999" : 2.906042618826264, + "100.0" : 2.906042618826264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7957030533967013, + 2.783482743946563, + 2.7888392052426103 + ], + [ + 2.906042618826264, + 2.9046492224157956, + 2.869538211477762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17824132961952385, + "scoreError" : 0.0062354394874895545, + "scoreConfidence" : [ + 0.1720058901320343, + 0.1844767691070134 + ], + "scorePercentiles" : { + "0.0" : 0.1761488206157965, + "50.0" : 0.17826658232813009, + "90.0" : 0.180300912249387, + "95.0" : 0.180300912249387, + "99.0" : 0.180300912249387, + "99.9" : 0.180300912249387, + "99.99" : 0.180300912249387, + "99.999" : 0.180300912249387, + "99.9999" : 0.180300912249387, + "100.0" : 0.180300912249387 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18025644127401852, + 0.180300912249387, + 0.18025506465626015 + ], + [ + 0.1762086389216809, + 0.1761488206157965, + 0.1762781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3281479274995302, + "scoreError" : 0.009494988208793766, + "scoreConfidence" : [ + 0.31865293929073646, + 0.33764291570832394 + ], + "scorePercentiles" : { + "0.0" : 0.3241930054786527, + "50.0" : 0.32886170433612677, + "90.0" : 0.3312057972046501, + "95.0" : 0.3312057972046501, + "99.0" : 0.3312057972046501, + "99.9" : 0.3312057972046501, + "99.99" : 0.3312057972046501, + "99.999" : 0.3312057972046501, + "99.9999" : 0.3312057972046501, + "100.0" : 0.3312057972046501 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3310179184403032, + 0.3312057972046501, + 0.33118986292432523 + ], + [ + 0.32670549023195034, + 0.3245754907172996, + 0.3241930054786527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14735763876016833, + "scoreError" : 0.002644237359203861, + "scoreConfidence" : [ + 0.14471340140096448, + 0.15000187611937219 + ], + "scorePercentiles" : { + "0.0" : 0.14545827604363637, + "50.0" : 0.14765267073222946, + "90.0" : 0.14793855684423865, + "95.0" : 0.14793855684423865, + "99.0" : 0.14793855684423865, + "99.9" : 0.14793855684423865, + "99.99" : 0.14793855684423865, + "99.999" : 0.14793855684423865, + "99.9999" : 0.14793855684423865, + "100.0" : 0.14793855684423865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14754666808799446, + 0.1478969901206815, + 0.14545827604363637 + ], + [ + 0.14793855684423865, + 0.14764530853717947, + 0.14766003292727944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40426995723344233, + "scoreError" : 0.03429697039329411, + "scoreConfidence" : [ + 0.36997298684014823, + 0.43856692762673644 + ], + "scorePercentiles" : { + "0.0" : 0.39312622033964933, + "50.0" : 0.40286351802594406, + "90.0" : 0.4180215306190695, + "95.0" : 0.4180215306190695, + "99.0" : 0.4180215306190695, + "99.9" : 0.4180215306190695, + "99.99" : 0.4180215306190695, + "99.999" : 0.4180215306190695, + "99.9999" : 0.4180215306190695, + "100.0" : 0.4180215306190695 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3931981737506389, + 0.39335179923691144, + 0.39312622033964933 + ], + [ + 0.4155467826394083, + 0.4180215306190695, + 0.4123752368149767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15333712559752977, + "scoreError" : 0.007725136591590981, + "scoreConfidence" : [ + 0.14561198900593877, + 0.16106226218912076 + ], + "scorePercentiles" : { + "0.0" : 0.1505838245595543, + "50.0" : 0.15341686330588195, + "90.0" : 0.15596691091425186, + "95.0" : 0.15596691091425186, + "99.0" : 0.15596691091425186, + "99.9" : 0.15596691091425186, + "99.99" : 0.15596691091425186, + "99.999" : 0.15596691091425186, + "99.9999" : 0.15596691091425186, + "100.0" : 0.15596691091425186 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15577898549731287, + 0.1557967629307659, + 0.15596691091425186 + ], + [ + 0.151054741114451, + 0.1505838245595543, + 0.15084152856884275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04721606023294866, + "scoreError" : 5.641411759515206E-4, + "scoreConfidence" : [ + 0.046651919056997136, + 0.04778020140890018 + ], + "scorePercentiles" : { + "0.0" : 0.04700781159100097, + "50.0" : 0.0472298123601346, + "90.0" : 0.04741054001621414, + "95.0" : 0.04741054001621414, + "99.0" : 0.04741054001621414, + "99.9" : 0.04741054001621414, + "99.99" : 0.04741054001621414, + "99.999" : 0.04741054001621414, + "99.9999" : 0.04741054001621414, + "100.0" : 0.04741054001621414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04740084685026307, + 0.04738349724468957, + 0.04741054001621414 + ], + [ + 0.04707612747557962, + 0.04701753821994452, + 0.04700781159100097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8689582.370710716, + "scoreError" : 569350.4993661795, + "scoreConfidence" : [ + 8120231.871344537, + 9258932.870076895 + ], + "scorePercentiles" : { + "0.0" : 8472024.248941574, + "50.0" : 8695699.80039107, + "90.0" : 8880616.475598935, + "95.0" : 8880616.475598935, + "99.0" : 8880616.475598935, + "99.9" : 8880616.475598935, + "99.99" : 8880616.475598935, + "99.999" : 8880616.475598935, + "99.9999" : 8880616.475598935, + "100.0" : 8880616.475598935 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8878482.526175687, + 8880616.475598935, + 8863099.243578387 + ], + [ + 8472024.248941574, + 8528300.357203752, + 8514971.372765958 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-20T21:41:58Z-d11e349d4adaa354708f7717c386be7e72bf8ef5-jdk17.json b/performance-results/2025-10-20T21:41:58Z-d11e349d4adaa354708f7717c386be7e72bf8ef5-jdk17.json new file mode 100644 index 0000000000..661510fda6 --- /dev/null +++ b/performance-results/2025-10-20T21:41:58Z-d11e349d4adaa354708f7717c386be7e72bf8ef5-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3054155981078175, + "scoreError" : 0.09376198144957841, + "scoreConfidence" : [ + 3.2116536166582392, + 3.3991775795573957 + ], + "scorePercentiles" : { + "0.0" : 3.285445739850843, + "50.0" : 3.3082782606159835, + "90.0" : 3.3196601313484595, + "95.0" : 3.3196601313484595, + "99.0" : 3.3196601313484595, + "99.9" : 3.3196601313484595, + "99.99" : 3.3196601313484595, + "99.999" : 3.3196601313484595, + "99.9999" : 3.3196601313484595, + "100.0" : 3.3196601313484595 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.310877171290436, + 3.3196601313484595 + ], + [ + 3.285445739850843, + 3.3056793499415313 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.676087374424178, + "scoreError" : 0.03178200866103777, + "scoreConfidence" : [ + 1.6443053657631401, + 1.7078693830852159 + ], + "scorePercentiles" : { + "0.0" : 1.671119403145298, + "50.0" : 1.6753007632402435, + "90.0" : 1.6826285680709272, + "95.0" : 1.6826285680709272, + "99.0" : 1.6826285680709272, + "99.9" : 1.6826285680709272, + "99.99" : 1.6826285680709272, + "99.999" : 1.6826285680709272, + "99.9999" : 1.6826285680709272, + "100.0" : 1.6826285680709272 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6739108734005115, + 1.6826285680709272 + ], + [ + 1.671119403145298, + 1.6766906530799757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8436356402436871, + "scoreError" : 0.00959422240117759, + "scoreConfidence" : [ + 0.8340414178425095, + 0.8532298626448647 + ], + "scorePercentiles" : { + "0.0" : 0.8420871256845944, + "50.0" : 0.843402010267976, + "90.0" : 0.8456514147542018, + "95.0" : 0.8456514147542018, + "99.0" : 0.8456514147542018, + "99.9" : 0.8456514147542018, + "99.99" : 0.8456514147542018, + "99.999" : 0.8456514147542018, + "99.9999" : 0.8456514147542018, + "100.0" : 0.8456514147542018 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8420871256845944, + 0.8432558264191192 + ], + [ + 0.8435481941168328, + 0.8456514147542018 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.393905218598888, + "scoreError" : 0.9344685569970417, + "scoreConfidence" : [ + 14.459436661601847, + 16.32837377559593 + ], + "scorePercentiles" : { + "0.0" : 14.997329291862652, + "50.0" : 15.392429766861255, + "90.0" : 15.813282366538774, + "95.0" : 15.813282366538774, + "99.0" : 15.813282366538774, + "99.9" : 15.813282366538774, + "99.99" : 15.813282366538774, + "99.999" : 15.813282366538774, + "99.9999" : 15.813282366538774, + "100.0" : 15.813282366538774 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.813282366538774, + 15.666522973574216, + 15.568830011577472 + ], + [ + 15.216029522145039, + 15.101437145895183, + 14.997329291862652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2535.8009731329826, + "scoreError" : 295.3597740024108, + "scoreConfidence" : [ + 2240.441199130572, + 2831.160747135393 + ], + "scorePercentiles" : { + "0.0" : 2426.4615104511795, + "50.0" : 2527.650345379056, + "90.0" : 2659.363919904804, + "95.0" : 2659.363919904804, + "99.0" : 2659.363919904804, + "99.9" : 2659.363919904804, + "99.99" : 2659.363919904804, + "99.999" : 2659.363919904804, + "99.9999" : 2659.363919904804, + "100.0" : 2659.363919904804 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2426.4615104511795, + 2449.7721015576794, + 2447.4471847015498 + ], + [ + 2626.232532982251, + 2605.5285892004326, + 2659.363919904804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72237.50456726363, + "scoreError" : 1388.7319582856005, + "scoreConfidence" : [ + 70848.77260897803, + 73626.23652554923 + ], + "scorePercentiles" : { + "0.0" : 71492.71188604925, + "50.0" : 72296.16133779299, + "90.0" : 72725.21768431854, + "95.0" : 72725.21768431854, + "99.0" : 72725.21768431854, + "99.9" : 72725.21768431854, + "99.99" : 72725.21768431854, + "99.999" : 72725.21768431854, + "99.9999" : 72725.21768431854, + "100.0" : 72725.21768431854 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72651.15450924686, + 72596.75188642036, + 72725.21768431854 + ], + [ + 71995.5707891656, + 71963.6206483811, + 71492.71188604925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 339.63248973383867, + "scoreError" : 12.547431652168951, + "scoreConfidence" : [ + 327.08505808166973, + 352.1799213860076 + ], + "scorePercentiles" : { + "0.0" : 334.98765634134037, + "50.0" : 339.10516584609513, + "90.0" : 346.90317495289065, + "95.0" : 346.90317495289065, + "99.0" : 346.90317495289065, + "99.9" : 346.90317495289065, + "99.99" : 346.90317495289065, + "99.999" : 346.90317495289065, + "99.9999" : 346.90317495289065, + "100.0" : 346.90317495289065 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.66641036581433, + 334.98765634134037, + 337.7544952487923 + ], + [ + 340.45583644339797, + 346.90317495289065, + 342.02736505079633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 110.24404594471368, + "scoreError" : 6.498981059130715, + "scoreConfidence" : [ + 103.74506488558296, + 116.74302700384439 + ], + "scorePercentiles" : { + "0.0" : 105.74660546167618, + "50.0" : 110.71420869768458, + "90.0" : 112.17633411392146, + "95.0" : 112.17633411392146, + "99.0" : 112.17633411392146, + "99.9" : 112.17633411392146, + "99.99" : 112.17633411392146, + "99.999" : 112.17633411392146, + "99.9999" : 112.17633411392146, + "100.0" : 112.17633411392146 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.78617927101136, + 112.17633411392146, + 110.89928102899106 + ], + [ + 105.74660546167618, + 110.52913636637811, + 110.32673942630389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06300509561981359, + "scoreError" : 7.240261937420414E-4, + "scoreConfidence" : [ + 0.06228106942607155, + 0.06372912181355563 + ], + "scorePercentiles" : { + "0.0" : 0.06269206481644014, + "50.0" : 0.06305455682868266, + "90.0" : 0.06331783412901429, + "95.0" : 0.06331783412901429, + "99.0" : 0.06331783412901429, + "99.9" : 0.06331783412901429, + "99.99" : 0.06331783412901429, + "99.999" : 0.06331783412901429, + "99.9999" : 0.06331783412901429, + "100.0" : 0.06331783412901429 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06296597251588286, + 0.06319250588629312, + 0.06269206481644014 + ], + [ + 0.06314314114148245, + 0.06331783412901429, + 0.06271905522976863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.916348420058627E-4, + "scoreError" : 4.748017203066632E-5, + "scoreConfidence" : [ + 3.4415466997519636E-4, + 4.39115014036529E-4 + ], + "scorePercentiles" : { + "0.0" : 3.768803234424144E-4, + "50.0" : 3.89035121373022E-4, + "90.0" : 4.242737592026761E-4, + "95.0" : 4.242737592026761E-4, + "99.0" : 4.242737592026761E-4, + "99.9" : 4.242737592026761E-4, + "99.99" : 4.242737592026761E-4, + "99.999" : 4.242737592026761E-4, + "99.9999" : 4.242737592026761E-4, + "100.0" : 4.242737592026761E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.893178825886359E-4, + 3.9059887500822693E-4, + 4.242737592026761E-4 + ], + [ + 3.768803234424144E-4, + 3.799858516358144E-4, + 3.887523601574081E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.4297639218442963, + "scoreError" : 0.03037990756592488, + "scoreConfidence" : [ + 2.3993840142783713, + 2.4601438294102214 + ], + "scorePercentiles" : { + "0.0" : 2.3830454822492255, + "50.0" : 2.4300618136540333, + "90.0" : 2.453854872938426, + "95.0" : 2.4541955484662576, + "99.0" : 2.4541955484662576, + "99.9" : 2.4541955484662576, + "99.99" : 2.4541955484662576, + "99.999" : 2.4541955484662576, + "99.9999" : 2.4541955484662576, + "100.0" : 2.4541955484662576 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.4207216732817036, + 2.4541955484662576, + 2.446255717221135, + 2.432871962539528, + 2.3830454822492255 + ], + [ + 2.4248905300678953, + 2.424745884121212, + 2.450788793187944, + 2.430026720845481, + 2.4300969064625852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014056837374271604, + "scoreError" : 5.667142021386464E-4, + "scoreConfidence" : [ + 0.013490123172132957, + 0.014623551576410251 + ], + "scorePercentiles" : { + "0.0" : 0.013792596786651182, + "50.0" : 0.014146656454890386, + "90.0" : 0.014247481118123923, + "95.0" : 0.014247481118123923, + "99.0" : 0.014247481118123923, + "99.9" : 0.014247481118123923, + "99.99" : 0.014247481118123923, + "99.999" : 0.014247481118123923, + "99.9999" : 0.014247481118123923, + "100.0" : 0.014247481118123923 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014199109719457374, + 0.0141445008670463, + 0.014247481118123923 + ], + [ + 0.013808523711616371, + 0.013792596786651182, + 0.014148812042734474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0156810751264758, + "scoreError" : 0.08398491301950424, + "scoreConfidence" : [ + 0.9316961621069715, + 1.09966598814598 + ], + "scorePercentiles" : { + "0.0" : 0.9816506152336082, + "50.0" : 1.0139148560343691, + "90.0" : 1.0506488708897994, + "95.0" : 1.0506488708897994, + "99.0" : 1.0506488708897994, + "99.9" : 1.0506488708897994, + "99.99" : 1.0506488708897994, + "99.999" : 1.0506488708897994, + "99.9999" : 1.0506488708897994, + "100.0" : 1.0506488708897994 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0506488708897994, + 1.0459323294289897, + 1.0283699962982005 + ], + [ + 0.9880249231377198, + 0.9816506152336082, + 0.9994597157705377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011027441312278556, + "scoreError" : 6.296653091615418E-4, + "scoreConfidence" : [ + 0.010397776003117015, + 0.011657106621440098 + ], + "scorePercentiles" : { + "0.0" : 0.010709623359878, + "50.0" : 0.0110429784971375, + "90.0" : 0.011265602926266554, + "95.0" : 0.011265602926266554, + "99.0" : 0.011265602926266554, + "99.9" : 0.011265602926266554, + "99.99" : 0.011265602926266554, + "99.999" : 0.011265602926266554, + "99.9999" : 0.011265602926266554, + "100.0" : 0.011265602926266554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011265602926266554, + 0.01123061306805803, + 0.0111627968320943 + ], + [ + 0.0109231601621807, + 0.010872851525193747, + 0.010709623359878 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.392844528970533, + "scoreError" : 0.4009873698024673, + "scoreConfidence" : [ + 2.991857159168066, + 3.793831898773 + ], + "scorePercentiles" : { + "0.0" : 3.2545695256994143, + "50.0" : 3.3339629376666666, + "90.0" : 3.620208074529667, + "95.0" : 3.620208074529667, + "99.0" : 3.620208074529667, + "99.9" : 3.620208074529667, + "99.99" : 3.620208074529667, + "99.999" : 3.620208074529667, + "99.9999" : 3.620208074529667, + "100.0" : 3.620208074529667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.2974563902439025, + 3.3344674513333334, + 3.2545695256994143 + ], + [ + 3.620208074529667, + 3.5169073080168776, + 3.333458424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.001755826123597, + "scoreError" : 0.173857245552785, + "scoreConfidence" : [ + 2.8278985805708117, + 3.175613071676382 + ], + "scorePercentiles" : { + "0.0" : 2.939990027042916, + "50.0" : 3.003299494898982, + "90.0" : 3.0656685107296138, + "95.0" : 3.0656685107296138, + "99.0" : 3.0656685107296138, + "99.9" : 3.0656685107296138, + "99.99" : 3.0656685107296138, + "99.999" : 3.0656685107296138, + "99.9999" : 3.0656685107296138, + "100.0" : 3.0656685107296138 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0560461885120684, + 3.0524129032651817, + 3.0656685107296138 + ], + [ + 2.942231240659017, + 2.9541860865327823, + 2.939990027042916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17909300194621844, + "scoreError" : 0.003575047757765611, + "scoreConfidence" : [ + 0.17551795418845284, + 0.18266804970398404 + ], + "scorePercentiles" : { + "0.0" : 0.17769852693865945, + "50.0" : 0.1791511911922719, + "90.0" : 0.18052178215426828, + "95.0" : 0.18052178215426828, + "99.0" : 0.18052178215426828, + "99.9" : 0.18052178215426828, + "99.99" : 0.18052178215426828, + "99.999" : 0.18052178215426828, + "99.9999" : 0.18052178215426828, + "100.0" : 0.18052178215426828 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18027940635647455, + 0.18052178215426828, + 0.17983628228460447 + ], + [ + 0.17846610009993932, + 0.1777559138433645, + 0.17769852693865945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3343652853640527, + "scoreError" : 0.018902742422715824, + "scoreConfidence" : [ + 0.31546254294133685, + 0.3532680277867685 + ], + "scorePercentiles" : { + "0.0" : 0.3228703011332451, + "50.0" : 0.3350653734175332, + "90.0" : 0.34138355695900047, + "95.0" : 0.34138355695900047, + "99.0" : 0.34138355695900047, + "99.9" : 0.34138355695900047, + "99.99" : 0.34138355695900047, + "99.999" : 0.34138355695900047, + "99.9999" : 0.34138355695900047, + "100.0" : 0.34138355695900047 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3402400753946652, + 0.33156703186233877, + 0.3339508688305617 + ], + [ + 0.3228703011332451, + 0.33617987800450466, + 0.34138355695900047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14822237494444893, + "scoreError" : 0.007460846633585029, + "scoreConfidence" : [ + 0.1407615283108639, + 0.15568322157803396 + ], + "scorePercentiles" : { + "0.0" : 0.1446915859160228, + "50.0" : 0.1490354061633209, + "90.0" : 0.1512626890730881, + "95.0" : 0.1512626890730881, + "99.0" : 0.1512626890730881, + "99.9" : 0.1512626890730881, + "99.99" : 0.1512626890730881, + "99.999" : 0.1512626890730881, + "99.9999" : 0.1512626890730881, + "100.0" : 0.1512626890730881 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14908345429201825, + 0.145234580704659, + 0.1446915859160228 + ], + [ + 0.1489873580346235, + 0.15007458164628198, + 0.1512626890730881 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40873200265399506, + "scoreError" : 0.03658691969404614, + "scoreConfidence" : [ + 0.3721450829599489, + 0.4453189223480412 + ], + "scorePercentiles" : { + "0.0" : 0.3972275969811321, + "50.0" : 0.40545372857322703, + "90.0" : 0.42818524547206166, + "95.0" : 0.42818524547206166, + "99.0" : 0.42818524547206166, + "99.9" : 0.42818524547206166, + "99.99" : 0.42818524547206166, + "99.999" : 0.42818524547206166, + "99.9999" : 0.42818524547206166, + "100.0" : 0.42818524547206166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3972275969811321, + 0.3972482878366569, + 0.3989281384234881 + ], + [ + 0.42818524547206166, + 0.41882342848766596, + 0.411979318722966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15735390202964428, + "scoreError" : 0.0036322914071087245, + "scoreConfidence" : [ + 0.15372161062253556, + 0.160986193436753 + ], + "scorePercentiles" : { + "0.0" : 0.1559640685912132, + "50.0" : 0.15741542144184106, + "90.0" : 0.15871133765017695, + "95.0" : 0.15871133765017695, + "99.0" : 0.15871133765017695, + "99.9" : 0.15871133765017695, + "99.99" : 0.15871133765017695, + "99.999" : 0.15871133765017695, + "99.9999" : 0.15871133765017695, + "100.0" : 0.15871133765017695 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15602689611970105, + 0.15660370697026169, + 0.1559640685912132 + ], + [ + 0.15871133765017695, + 0.15822713591342047, + 0.15859026693309228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04752460524168182, + "scoreError" : 0.0018567239580865274, + "scoreConfidence" : [ + 0.045667881283595294, + 0.04938132919976834 + ], + "scorePercentiles" : { + "0.0" : 0.046708471104219114, + "50.0" : 0.04756924361186725, + "90.0" : 0.048347433363952814, + "95.0" : 0.048347433363952814, + "99.0" : 0.048347433363952814, + "99.9" : 0.048347433363952814, + "99.99" : 0.048347433363952814, + "99.999" : 0.048347433363952814, + "99.9999" : 0.048347433363952814, + "100.0" : 0.048347433363952814 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047321103021412514, + 0.046708471104219114, + 0.04687779061896458 + ], + [ + 0.047817384202321976, + 0.048347433363952814, + 0.04807544913921994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8853861.58637777, + "scoreError" : 363352.09480054607, + "scoreConfidence" : [ + 8490509.491577223, + 9217213.681178316 + ], + "scorePercentiles" : { + "0.0" : 8711391.552264808, + "50.0" : 8856450.63330895, + "90.0" : 9034318.155374886, + "95.0" : 9034318.155374886, + "99.0" : 9034318.155374886, + "99.9" : 9034318.155374886, + "99.99" : 9034318.155374886, + "99.999" : 9034318.155374886, + "99.9999" : 9034318.155374886, + "100.0" : 9034318.155374886 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8831716.586937334, + 8711391.552264808, + 8712034.959930314 + ], + [ + 8881184.679680567, + 8952523.584078712, + 9034318.155374886 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-24T00:29:41Z-19e43cc8f2b9d2474b2bd241ebc0162290fd16db-jdk17.json b/performance-results/2025-10-24T00:29:41Z-19e43cc8f2b9d2474b2bd241ebc0162290fd16db-jdk17.json new file mode 100644 index 0000000000..e6b4b49d83 --- /dev/null +++ b/performance-results/2025-10-24T00:29:41Z-19e43cc8f2b9d2474b2bd241ebc0162290fd16db-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3293674619856723, + "scoreError" : 0.04906800470483081, + "scoreConfidence" : [ + 3.2802994572808415, + 3.378435466690503 + ], + "scorePercentiles" : { + "0.0" : 3.3225005687649474, + "50.0" : 3.3277383875539064, + "90.0" : 3.3394925040699315, + "95.0" : 3.3394925040699315, + "99.0" : 3.3394925040699315, + "99.9" : 3.3394925040699315, + "99.99" : 3.3394925040699315, + "99.999" : 3.3394925040699315, + "99.9999" : 3.3394925040699315, + "100.0" : 3.3394925040699315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3225005687649474, + 3.330738173011769 + ], + [ + 3.324738602096043, + 3.3394925040699315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6674029154769021, + "scoreError" : 0.029957270834028937, + "scoreConfidence" : [ + 1.6374456446428731, + 1.697360186310931 + ], + "scorePercentiles" : { + "0.0" : 1.663328364030914, + "50.0" : 1.6670442552473765, + "90.0" : 1.6721947873819412, + "95.0" : 1.6721947873819412, + "99.0" : 1.6721947873819412, + "99.9" : 1.6721947873819412, + "99.99" : 1.6721947873819412, + "99.999" : 1.6721947873819412, + "99.9999" : 1.6721947873819412, + "100.0" : 1.6721947873819412 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.67055523840381, + 1.663533272090943 + ], + [ + 1.663328364030914, + 1.6721947873819412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8461700286535581, + "scoreError" : 0.03757490799315342, + "scoreConfidence" : [ + 0.8085951206604046, + 0.8837449366467115 + ], + "scorePercentiles" : { + "0.0" : 0.8383434523406265, + "50.0" : 0.8471983875839716, + "90.0" : 0.8519398871056629, + "95.0" : 0.8519398871056629, + "99.0" : 0.8519398871056629, + "99.9" : 0.8519398871056629, + "99.99" : 0.8519398871056629, + "99.999" : 0.8519398871056629, + "99.9999" : 0.8519398871056629, + "100.0" : 0.8519398871056629 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8383434523406265, + 0.8519398871056629 + ], + [ + 0.8456536148857641, + 0.8487431602821791 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.292971644842336, + "scoreError" : 0.37238663727981264, + "scoreConfidence" : [ + 15.920585007562522, + 16.66535828212215 + ], + "scorePercentiles" : { + "0.0" : 16.152958440583, + "50.0" : 16.29708097418063, + "90.0" : 16.42610556800866, + "95.0" : 16.42610556800866, + "99.0" : 16.42610556800866, + "99.9" : 16.42610556800866, + "99.99" : 16.42610556800866, + "99.999" : 16.42610556800866, + "99.9999" : 16.42610556800866, + "100.0" : 16.42610556800866 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.17366967077022, + 16.152958440583, + 16.190627885736188 + ], + [ + 16.42610556800866, + 16.410934241330896, + 16.40353406262507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2715.5412171685844, + "scoreError" : 138.59475589647064, + "scoreConfidence" : [ + 2576.9464612721135, + 2854.135973065055 + ], + "scorePercentiles" : { + "0.0" : 2665.222074171529, + "50.0" : 2714.0247866511827, + "90.0" : 2764.834472664056, + "95.0" : 2764.834472664056, + "99.0" : 2764.834472664056, + "99.9" : 2764.834472664056, + "99.99" : 2764.834472664056, + "99.999" : 2764.834472664056, + "99.9999" : 2764.834472664056, + "100.0" : 2764.834472664056 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2764.834472664056, + 2753.402528597827, + 2763.0561933020626 + ], + [ + 2672.0849895714937, + 2665.222074171529, + 2674.647044704539 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73938.19579699199, + "scoreError" : 1128.3106220680852, + "scoreConfidence" : [ + 72809.88517492391, + 75066.50641906007 + ], + "scorePercentiles" : { + "0.0" : 73500.47329180085, + "50.0" : 73953.75252718109, + "90.0" : 74362.64091815453, + "95.0" : 74362.64091815453, + "99.0" : 74362.64091815453, + "99.9" : 74362.64091815453, + "99.99" : 74362.64091815453, + "99.999" : 74362.64091815453, + "99.9999" : 74362.64091815453, + "100.0" : 74362.64091815453 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73650.73302479598, + 73573.29013874497, + 73500.47329180085 + ], + [ + 74285.26537888941, + 74362.64091815453, + 74256.7720295662 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.25249083899575, + "scoreError" : 2.9677262834672304, + "scoreConfidence" : [ + 339.2847645555285, + 345.220217122463 + ], + "scorePercentiles" : { + "0.0" : 341.1551178373904, + "50.0" : 341.93942136464386, + "90.0" : 344.1495895875865, + "95.0" : 344.1495895875865, + "99.0" : 344.1495895875865, + "99.9" : 344.1495895875865, + "99.99" : 344.1495895875865, + "99.999" : 344.1495895875865, + "99.9999" : 344.1495895875865, + "100.0" : 344.1495895875865 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.1494899078328, + 341.729352821455, + 341.66687689961884 + ], + [ + 341.1551178373904, + 342.6645179800909, + 344.1495895875865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 111.78165809441879, + "scoreError" : 8.915384197811301, + "scoreConfidence" : [ + 102.86627389660748, + 120.6970422922301 + ], + "scorePercentiles" : { + "0.0" : 108.21500558634686, + "50.0" : 111.90101177012917, + "90.0" : 114.80428654122856, + "95.0" : 114.80428654122856, + "99.0" : 114.80428654122856, + "99.9" : 114.80428654122856, + "99.99" : 114.80428654122856, + "99.999" : 114.80428654122856, + "99.9999" : 114.80428654122856, + "100.0" : 114.80428654122856 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.80428654122856, + 114.7322592517242, + 114.44568856247923 + ], + [ + 109.13637364695475, + 108.21500558634686, + 109.35633497777913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061517816677902876, + "scoreError" : 0.0012288415620532555, + "scoreConfidence" : [ + 0.06028897511584962, + 0.06274665823995614 + ], + "scorePercentiles" : { + "0.0" : 0.06109344563710008, + "50.0" : 0.061507720005121155, + "90.0" : 0.061989358151500126, + "95.0" : 0.061989358151500126, + "99.0" : 0.061989358151500126, + "99.9" : 0.061989358151500126, + "99.99" : 0.061989358151500126, + "99.999" : 0.061989358151500126, + "99.9999" : 0.061989358151500126, + "100.0" : 0.061989358151500126 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061876423209479316, + 0.061989358151500126, + 0.061882002289589795 + ], + [ + 0.061139016800763, + 0.06109344563710008, + 0.061126653978984945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.664597585138933E-4, + "scoreError" : 1.3572492987186868E-5, + "scoreConfidence" : [ + 3.5288726552670644E-4, + 3.800322515010802E-4 + ], + "scorePercentiles" : { + "0.0" : 3.614254708353374E-4, + "50.0" : 3.667236615728571E-4, + "90.0" : 3.7110035653857717E-4, + "95.0" : 3.7110035653857717E-4, + "99.0" : 3.7110035653857717E-4, + "99.9" : 3.7110035653857717E-4, + "99.99" : 3.7110035653857717E-4, + "99.999" : 3.7110035653857717E-4, + "99.9999" : 3.7110035653857717E-4, + "100.0" : 3.7110035653857717E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.708311149545145E-4, + 3.7064191508186006E-4, + 3.7110035653857717E-4 + ], + [ + 3.6280540806385414E-4, + 3.614254708353374E-4, + 3.619542856092169E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2872196104083966, + "scoreError" : 0.07412844633319081, + "scoreConfidence" : [ + 2.213091164075206, + 2.3613480567415874 + ], + "scorePercentiles" : { + "0.0" : 2.2292657962550155, + "50.0" : 2.273387452077459, + "90.0" : 2.378048491631434, + "95.0" : 2.3831622041934715, + "99.0" : 2.3831622041934715, + "99.9" : 2.3831622041934715, + "99.99" : 2.3831622041934715, + "99.999" : 2.3831622041934715, + "99.9999" : 2.3831622041934715, + "100.0" : 2.3831622041934715 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.322240684699327, + 2.2596399317668325, + 2.282118416609628, + 2.2292657962550155, + 2.233890054277418 + ], + [ + 2.332025078573094, + 2.3831622041934715, + 2.3113784943378786, + 2.26465648754529, + 2.2538189558260084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013528699301644827, + "scoreError" : 5.473889630938144E-4, + "scoreConfidence" : [ + 0.012981310338551013, + 0.014076088264738641 + ], + "scorePercentiles" : { + "0.0" : 0.013335336667569014, + "50.0" : 0.01352824958300819, + "90.0" : 0.013722437970156955, + "95.0" : 0.013722437970156955, + "99.0" : 0.013722437970156955, + "99.9" : 0.013722437970156955, + "99.99" : 0.013722437970156955, + "99.999" : 0.013722437970156955, + "99.9999" : 0.013722437970156955, + "100.0" : 0.013722437970156955 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013362311777109078, + 0.01335499502666291, + 0.013335336667569014 + ], + [ + 0.0136941873889073, + 0.013702926979463702, + 0.013722437970156955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0271471908712344, + "scoreError" : 0.28097393522983644, + "scoreConfidence" : [ + 0.746173255641398, + 1.3081211261010708 + ], + "scorePercentiles" : { + "0.0" : 0.9354837229186155, + "50.0" : 1.026985876130871, + "90.0" : 1.1192243538495972, + "95.0" : 1.1192243538495972, + "99.0" : 1.1192243538495972, + "99.9" : 1.1192243538495972, + "99.99" : 1.1192243538495972, + "99.999" : 1.1192243538495972, + "99.9999" : 1.1192243538495972, + "100.0" : 1.1192243538495972 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9354837229186155, + 0.9356085478529329, + 0.9359480321946654 + ], + [ + 1.118594768344519, + 1.1180237200670766, + 1.1192243538495972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010446841228102835, + "scoreError" : 2.7556202950283364E-5, + "scoreConfidence" : [ + 0.010419285025152552, + 0.010474397431053118 + ], + "scorePercentiles" : { + "0.0" : 0.0104373416329027, + "50.0" : 0.01044416171410963, + "90.0" : 0.010459076265620228, + "95.0" : 0.010459076265620228, + "99.0" : 0.010459076265620228, + "99.9" : 0.010459076265620228, + "99.99" : 0.010459076265620228, + "99.999" : 0.010459076265620228, + "99.9999" : 0.010459076265620228, + "100.0" : 0.010459076265620228 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0104448630470067, + 0.010443460381212561, + 0.010437567480289156 + ], + [ + 0.0104373416329027, + 0.010459076265620228, + 0.010458738561585669 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.144877396489628, + "scoreError" : 0.14260135653996203, + "scoreConfidence" : [ + 3.002276039949666, + 3.28747875302959 + ], + "scorePercentiles" : { + "0.0" : 3.079296945812808, + "50.0" : 3.1496002536473107, + "90.0" : 3.203078624199744, + "95.0" : 3.203078624199744, + "99.0" : 3.203078624199744, + "99.9" : 3.203078624199744, + "99.99" : 3.203078624199744, + "99.999" : 3.203078624199744, + "99.9999" : 3.203078624199744, + "100.0" : 3.203078624199744 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.079296945812808, + 3.10354466191067, + 3.118398291147132 + ], + [ + 3.1841436397199234, + 3.1808022161474887, + 3.203078624199744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9189030338380753, + "scoreError" : 0.049008487358048546, + "scoreConfidence" : [ + 2.8698945464800265, + 2.967911521196124 + ], + "scorePercentiles" : { + "0.0" : 2.8922513603238866, + "50.0" : 2.9228719871736937, + "90.0" : 2.935256690049897, + "95.0" : 2.935256690049897, + "99.0" : 2.935256690049897, + "99.9" : 2.935256690049897, + "99.99" : 2.935256690049897, + "99.999" : 2.935256690049897, + "99.9999" : 2.935256690049897, + "100.0" : 2.935256690049897 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.935256690049897, + 2.9287700740849196, + 2.935009426056338 + ], + [ + 2.8922513603238866, + 2.905156752250944, + 2.9169739002624673 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17457404829406872, + "scoreError" : 0.002186901499397568, + "scoreConfidence" : [ + 0.17238714679467115, + 0.1767609497934663 + ], + "scorePercentiles" : { + "0.0" : 0.1737702649788003, + "50.0" : 0.1745163140671439, + "90.0" : 0.17543465041663012, + "95.0" : 0.17543465041663012, + "99.0" : 0.17543465041663012, + "99.9" : 0.17543465041663012, + "99.99" : 0.17543465041663012, + "99.999" : 0.17543465041663012, + "99.9999" : 0.17543465041663012, + "100.0" : 0.17543465041663012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.173855739255911, + 0.17400251235384187, + 0.1737702649788003 + ], + [ + 0.17543465041663012, + 0.17535100697878309, + 0.17503011578044597 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32857119250828254, + "scoreError" : 0.030698727794404492, + "scoreConfidence" : [ + 0.29787246471387807, + 0.359269920302687 + ], + "scorePercentiles" : { + "0.0" : 0.3182167640488767, + "50.0" : 0.32859766756867925, + "90.0" : 0.33868487055914925, + "95.0" : 0.33868487055914925, + "99.0" : 0.33868487055914925, + "99.9" : 0.33868487055914925, + "99.99" : 0.33868487055914925, + "99.999" : 0.33868487055914925, + "99.9999" : 0.33868487055914925, + "100.0" : 0.33868487055914925 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3182167640488767, + 0.3186485493101361, + 0.31887520292720256 + ], + [ + 0.33832013221015594, + 0.33868487055914925, + 0.33868163599417483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1442900670803878, + "scoreError" : 0.002941815164270516, + "scoreConfidence" : [ + 0.14134825191611727, + 0.14723188224465833 + ], + "scorePercentiles" : { + "0.0" : 0.14326695959943267, + "50.0" : 0.14432720178762953, + "90.0" : 0.14531220171754894, + "95.0" : 0.14531220171754894, + "99.0" : 0.14531220171754894, + "99.9" : 0.14531220171754894, + "99.99" : 0.14531220171754894, + "99.999" : 0.14531220171754894, + "99.9999" : 0.14531220171754894, + "100.0" : 0.14531220171754894 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14347273089338747, + 0.14326710064325726, + 0.14326695959943267 + ], + [ + 0.14531220171754894, + 0.14518167268187163, + 0.14523973694682876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40325564690883065, + "scoreError" : 0.0070256249152938115, + "scoreConfidence" : [ + 0.39623002199353685, + 0.41028127182412444 + ], + "scorePercentiles" : { + "0.0" : 0.3989540114896673, + "50.0" : 0.40379671858284355, + "90.0" : 0.40535863627888125, + "95.0" : 0.40535863627888125, + "99.0" : 0.40535863627888125, + "99.9" : 0.40535863627888125, + "99.99" : 0.40535863627888125, + "99.999" : 0.40535863627888125, + "99.9999" : 0.40535863627888125, + "100.0" : 0.40535863627888125 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40535863627888125, + 0.40492615224521195, + 0.4053466418061692 + ], + [ + 0.40228115471257897, + 0.40266728492047515, + 0.3989540114896673 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15931643362895745, + "scoreError" : 0.0014884631328600617, + "scoreConfidence" : [ + 0.1578279704960974, + 0.1608048967618175 + ], + "scorePercentiles" : { + "0.0" : 0.15845256862403345, + "50.0" : 0.1594386966503521, + "90.0" : 0.15988474033926486, + "95.0" : 0.15988474033926486, + "99.0" : 0.15988474033926486, + "99.9" : 0.15988474033926486, + "99.99" : 0.15988474033926486, + "99.999" : 0.15988474033926486, + "99.9999" : 0.15988474033926486, + "100.0" : 0.15988474033926486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15988474033926486, + 0.15966943127205377, + 0.15965528676799284 + ], + [ + 0.15845256862403345, + 0.15922210653271132, + 0.15901446823768864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046874457952116914, + "scoreError" : 0.002718500300690323, + "scoreConfidence" : [ + 0.04415595765142659, + 0.04959295825280724 + ], + "scorePercentiles" : { + "0.0" : 0.04593866457955302, + "50.0" : 0.04688006076861495, + "90.0" : 0.04778700371297774, + "95.0" : 0.04778700371297774, + "99.0" : 0.04778700371297774, + "99.9" : 0.04778700371297774, + "99.99" : 0.04778700371297774, + "99.999" : 0.04778700371297774, + "99.9999" : 0.04778700371297774, + "100.0" : 0.04778700371297774 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04600789939592468, + 0.04593866457955302, + 0.04602340212533884 + ], + [ + 0.04775305848701615, + 0.04773671941189107, + 0.04778700371297774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8580575.32143429, + "scoreError" : 79388.17243678583, + "scoreConfidence" : [ + 8501187.148997504, + 8659963.493871074 + ], + "scorePercentiles" : { + "0.0" : 8552452.967521368, + "50.0" : 8574542.189034205, + "90.0" : 8631861.628127696, + "95.0" : 8631861.628127696, + "99.0" : 8631861.628127696, + "99.9" : 8631861.628127696, + "99.99" : 8631861.628127696, + "99.999" : 8631861.628127696, + "99.9999" : 8631861.628127696, + "100.0" : 8631861.628127696 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8571343.172236504, + 8577741.205831904, + 8552452.967521368 + ], + [ + 8631861.628127696, + 8589714.06609442, + 8560338.888793841 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-24T02:09:57Z-01b880b701b2006782daf6e18da00714e889c7ef-jdk17.json b/performance-results/2025-10-24T02:09:57Z-01b880b701b2006782daf6e18da00714e889c7ef-jdk17.json new file mode 100644 index 0000000000..483f054d9b --- /dev/null +++ b/performance-results/2025-10-24T02:09:57Z-01b880b701b2006782daf6e18da00714e889c7ef-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3210369125033576, + "scoreError" : 0.04172593721389455, + "scoreConfidence" : [ + 3.279310975289463, + 3.362762849717252 + ], + "scorePercentiles" : { + "0.0" : 3.312460156310484, + "50.0" : 3.321867190137172, + "90.0" : 3.3279531134286016, + "95.0" : 3.3279531134286016, + "99.0" : 3.3279531134286016, + "99.9" : 3.3279531134286016, + "99.99" : 3.3279531134286016, + "99.999" : 3.3279531134286016, + "99.9999" : 3.3279531134286016, + "100.0" : 3.3279531134286016 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3207923710367173, + 3.3279531134286016 + ], + [ + 3.312460156310484, + 3.322942009237627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6636856359533012, + "scoreError" : 0.02051861975080529, + "scoreConfidence" : [ + 1.6431670162024958, + 1.6842042557041066 + ], + "scorePercentiles" : { + "0.0" : 1.6600188652824415, + "50.0" : 1.663868808095271, + "90.0" : 1.666986062340221, + "95.0" : 1.666986062340221, + "99.0" : 1.666986062340221, + "99.9" : 1.666986062340221, + "99.99" : 1.666986062340221, + "99.999" : 1.666986062340221, + "99.9999" : 1.666986062340221, + "100.0" : 1.666986062340221 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6600188652824415, + 1.6655779112077924 + ], + [ + 1.66215970498275, + 1.666986062340221 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8450150471480917, + "scoreError" : 0.015595597201265457, + "scoreConfidence" : [ + 0.8294194499468263, + 0.8606106443493572 + ], + "scorePercentiles" : { + "0.0" : 0.8417839617612871, + "50.0" : 0.8455979320504843, + "90.0" : 0.8470803627301118, + "95.0" : 0.8470803627301118, + "99.0" : 0.8470803627301118, + "99.9" : 0.8470803627301118, + "99.99" : 0.8470803627301118, + "99.999" : 0.8470803627301118, + "99.9999" : 0.8470803627301118, + "100.0" : 0.8470803627301118 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8445759075600573, + 0.8470803627301118 + ], + [ + 0.8417839617612871, + 0.8466199565409112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.0330502002778, + "scoreError" : 0.2526522014500542, + "scoreConfidence" : [ + 15.780397998827745, + 16.285702401727853 + ], + "scorePercentiles" : { + "0.0" : 15.875205675542759, + "50.0" : 16.05725843700849, + "90.0" : 16.117934590806474, + "95.0" : 16.117934590806474, + "99.0" : 16.117934590806474, + "99.9" : 16.117934590806474, + "99.99" : 16.117934590806474, + "99.999" : 16.117934590806474, + "99.9999" : 16.117934590806474, + "100.0" : 16.117934590806474 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.09737309293749, + 16.117934590806474, + 16.085332296640185 + ], + [ + 15.875205675542759, + 16.029184577376792, + 15.993270968363097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2649.372942283631, + "scoreError" : 39.101747123538004, + "scoreConfidence" : [ + 2610.2711951600927, + 2688.474689407169 + ], + "scorePercentiles" : { + "0.0" : 2632.885352682765, + "50.0" : 2649.8334448692594, + "90.0" : 2667.3853176243624, + "95.0" : 2667.3853176243624, + "99.0" : 2667.3853176243624, + "99.9" : 2667.3853176243624, + "99.99" : 2667.3853176243624, + "99.999" : 2667.3853176243624, + "99.9999" : 2667.3853176243624, + "100.0" : 2667.3853176243624 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2636.34554134594, + 2642.9854540551223, + 2632.885352682765 + ], + [ + 2667.3853176243624, + 2659.9545523101983, + 2656.681435683396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72020.95334279427, + "scoreError" : 480.03649832264887, + "scoreConfidence" : [ + 71540.91684447162, + 72500.98984111691 + ], + "scorePercentiles" : { + "0.0" : 71816.12917198088, + "50.0" : 72025.47165686978, + "90.0" : 72205.94105779473, + "95.0" : 72205.94105779473, + "99.0" : 72205.94105779473, + "99.9" : 72205.94105779473, + "99.99" : 72205.94105779473, + "99.999" : 72205.94105779473, + "99.9999" : 72205.94105779473, + "100.0" : 72205.94105779473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71816.12917198088, + 71873.1282681185, + 71917.54974622345 + ], + [ + 72179.57824513194, + 72205.94105779473, + 72133.39356751609 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 343.98378260632876, + "scoreError" : 6.630130206609123, + "scoreConfidence" : [ + 337.35365239971964, + 350.6139128129379 + ], + "scorePercentiles" : { + "0.0" : 340.9598935355472, + "50.0" : 343.9791877403902, + "90.0" : 347.0027757906712, + "95.0" : 347.0027757906712, + "99.0" : 347.0027757906712, + "99.9" : 347.0027757906712, + "99.99" : 347.0027757906712, + "99.999" : 347.0027757906712, + "99.9999" : 347.0027757906712, + "100.0" : 347.0027757906712 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.57465203015863, + 345.5082082469511, + 347.0027757906712 + ], + [ + 340.9598935355472, + 342.406998800815, + 342.4501672338294 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 110.87397842787352, + "scoreError" : 2.9428523185119047, + "scoreConfidence" : [ + 107.93112610936161, + 113.81683074638543 + ], + "scorePercentiles" : { + "0.0" : 109.64169676686471, + "50.0" : 110.89318100447663, + "90.0" : 111.92355117798563, + "95.0" : 111.92355117798563, + "99.0" : 111.92355117798563, + "99.9" : 111.92355117798563, + "99.99" : 111.92355117798563, + "99.999" : 111.92355117798563, + "99.9999" : 111.92355117798563, + "100.0" : 111.92355117798563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.64169676686471, + 110.09758246627445, + 110.04905262601321 + ], + [ + 111.68877954267882, + 111.92355117798563, + 111.84320798742445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06213138526714118, + "scoreError" : 2.1302783412955383E-4, + "scoreConfidence" : [ + 0.06191835743301163, + 0.062344413101270736 + ], + "scorePercentiles" : { + "0.0" : 0.06202080837762576, + "50.0" : 0.06213158856154434, + "90.0" : 0.06224537931742781, + "95.0" : 0.06224537931742781, + "99.0" : 0.06224537931742781, + "99.9" : 0.06224537931742781, + "99.99" : 0.06224537931742781, + "99.999" : 0.06224537931742781, + "99.9999" : 0.06224537931742781, + "100.0" : 0.06224537931742781 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0621116641553263, + 0.06224537931742781, + 0.06215151296776238 + ], + [ + 0.06202080837762576, + 0.0620918418418667, + 0.062167104942838135 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.829556980338355E-4, + "scoreError" : 3.057320762055153E-5, + "scoreConfidence" : [ + 3.5238249041328397E-4, + 4.1352890565438707E-4 + ], + "scorePercentiles" : { + "0.0" : 3.725302904423343E-4, + "50.0" : 3.8266317501775327E-4, + "90.0" : 3.9335144143207905E-4, + "95.0" : 3.9335144143207905E-4, + "99.0" : 3.9335144143207905E-4, + "99.9" : 3.9335144143207905E-4, + "99.99" : 3.9335144143207905E-4, + "99.999" : 3.9335144143207905E-4, + "99.9999" : 3.9335144143207905E-4, + "100.0" : 3.9335144143207905E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.932982616769802E-4, + 3.9335144143207905E-4, + 3.9203901834775274E-4 + ], + [ + 3.732278446161132E-4, + 3.732873316877538E-4, + 3.725302904423343E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.314442903550668, + "scoreError" : 0.06262821452443151, + "scoreConfidence" : [ + 2.2518146890262365, + 2.3770711180751 + ], + "scorePercentiles" : { + "0.0" : 2.2496335773729195, + "50.0" : 2.317720862411553, + "90.0" : 2.3701061520434026, + "95.0" : 2.3717347998577187, + "99.0" : 2.3717347998577187, + "99.9" : 2.3717347998577187, + "99.99" : 2.3717347998577187, + "99.999" : 2.3717347998577187, + "99.9999" : 2.3717347998577187, + "100.0" : 2.3717347998577187 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3717347998577187, + 2.351482994827181, + 2.33543129705745, + 2.3106805311922365, + 2.324761193630869 + ], + [ + 2.355448321714555, + 2.3014212128393927, + 2.288658347826087, + 2.2496335773729195, + 2.255176759188275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013589157505479966, + "scoreError" : 6.954534819397564E-4, + "scoreConfidence" : [ + 0.01289370402354021, + 0.014284610987419722 + ], + "scorePercentiles" : { + "0.0" : 0.013359860629160706, + "50.0" : 0.013587748121937929, + "90.0" : 0.013819611469263606, + "95.0" : 0.013819611469263606, + "99.0" : 0.013819611469263606, + "99.9" : 0.013819611469263606, + "99.99" : 0.013819611469263606, + "99.999" : 0.013819611469263606, + "99.9999" : 0.013819611469263606, + "100.0" : 0.013819611469263606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013361712180548374, + 0.013359860629160706, + 0.01336681604586289 + ], + [ + 0.013819611469263606, + 0.013818264510031243, + 0.013808680198012966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9890004632001608, + "scoreError" : 0.022754092046625908, + "scoreConfidence" : [ + 0.9662463711535348, + 1.0117545552467866 + ], + "scorePercentiles" : { + "0.0" : 0.9807814896538197, + "50.0" : 0.9889291942160152, + "90.0" : 0.9968365565191387, + "95.0" : 0.9968365565191387, + "99.0" : 0.9968365565191387, + "99.9" : 0.9968365565191387, + "99.99" : 0.9968365565191387, + "99.999" : 0.9968365565191387, + "99.9999" : 0.9968365565191387, + "100.0" : 0.9968365565191387 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9821383520919269, + 0.9807814896538197, + 0.9819189065292097 + ], + [ + 0.9957200363401035, + 0.9968365565191387, + 0.9966074380667663 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010590792200904897, + "scoreError" : 2.0682118072503017E-4, + "scoreConfidence" : [ + 0.010383971020179867, + 0.010797613381629927 + ], + "scorePercentiles" : { + "0.0" : 0.010516604925418338, + "50.0" : 0.010595347755324749, + "90.0" : 0.010658605101488325, + "95.0" : 0.010658605101488325, + "99.0" : 0.010658605101488325, + "99.9" : 0.010658605101488325, + "99.99" : 0.010658605101488325, + "99.999" : 0.010658605101488325, + "99.9999" : 0.010658605101488325, + "100.0" : 0.010658605101488325 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010516604925418338, + 0.010520794982556989, + 0.010533577432803372 + ], + [ + 0.010657118077846124, + 0.010658605101488325, + 0.010658052685316236 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1920085519040042, + "scoreError" : 0.12860164165527976, + "scoreConfidence" : [ + 3.0634069102487245, + 3.320610193559284 + ], + "scorePercentiles" : { + "0.0" : 3.1460579157232704, + "50.0" : 3.1932998885685455, + "90.0" : 3.242655664072633, + "95.0" : 3.242655664072633, + "99.0" : 3.242655664072633, + "99.9" : 3.242655664072633, + "99.99" : 3.242655664072633, + "99.999" : 3.242655664072633, + "99.9999" : 3.242655664072633, + "100.0" : 3.242655664072633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.147572612334802, + 3.158080148989899, + 3.1460579157232704 + ], + [ + 3.242655664072633, + 3.228519628147192, + 3.2291653421562296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9291783017743267, + "scoreError" : 0.10761966492112027, + "scoreConfidence" : [ + 2.8215586368532066, + 3.0367979666954468 + ], + "scorePercentiles" : { + "0.0" : 2.888735502888504, + "50.0" : 2.9270577828780393, + "90.0" : 2.9703944018414017, + "95.0" : 2.9703944018414017, + "99.0" : 2.9703944018414017, + "99.9" : 2.9703944018414017, + "99.99" : 2.9703944018414017, + "99.999" : 2.9703944018414017, + "99.9999" : 2.9703944018414017, + "100.0" : 2.9703944018414017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9015838630693356, + 2.888735502888504, + 2.894052972800926 + ], + [ + 2.9703944018414017, + 2.9677713673590502, + 2.9525317026867435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17664737522600174, + "scoreError" : 0.003692460381228464, + "scoreConfidence" : [ + 0.17295491484477327, + 0.18033983560723021 + ], + "scorePercentiles" : { + "0.0" : 0.17535345736379737, + "50.0" : 0.17661367730410205, + "90.0" : 0.17802446935360405, + "95.0" : 0.17802446935360405, + "99.0" : 0.17802446935360405, + "99.9" : 0.17802446935360405, + "99.99" : 0.17802446935360405, + "99.999" : 0.17802446935360405, + "99.9999" : 0.17802446935360405, + "100.0" : 0.17802446935360405 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17802446935360405, + 0.1778656540452096, + 0.17763577994884183 + ], + [ + 0.17559157465936226, + 0.17535345736379737, + 0.17541331598519533 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3301453077998189, + "scoreError" : 0.007931341498795107, + "scoreConfidence" : [ + 0.3222139663010238, + 0.338076649298614 + ], + "scorePercentiles" : { + "0.0" : 0.3273475501980425, + "50.0" : 0.3300948131157766, + "90.0" : 0.3328700934993176, + "95.0" : 0.3328700934993176, + "99.0" : 0.3328700934993176, + "99.9" : 0.3328700934993176, + "99.99" : 0.3328700934993176, + "99.999" : 0.3328700934993176, + "99.9999" : 0.3328700934993176, + "100.0" : 0.3328700934993176 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3328700934993176, + 0.33282991782600013, + 0.33246457432095483 + ], + [ + 0.3273475501980425, + 0.32763465904399963, + 0.3277250519105984 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14957535930308802, + "scoreError" : 0.002576310695993399, + "scoreConfidence" : [ + 0.14699904860709462, + 0.15215166999908142 + ], + "scorePercentiles" : { + "0.0" : 0.14857441209068759, + "50.0" : 0.14958852113247872, + "90.0" : 0.15054726929214465, + "95.0" : 0.15054726929214465, + "99.0" : 0.15054726929214465, + "99.9" : 0.15054726929214465, + "99.99" : 0.15054726929214465, + "99.999" : 0.15054726929214465, + "99.9999" : 0.15054726929214465, + "100.0" : 0.15054726929214465 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15035705778078484, + 0.15054726929214465, + 0.150315043500481 + ], + [ + 0.14879637438995358, + 0.14886199876447648, + 0.14857441209068759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4029479850071576, + "scoreError" : 0.0336924683190746, + "scoreConfidence" : [ + 0.369255516688083, + 0.43664045332623225 + ], + "scorePercentiles" : { + "0.0" : 0.3919055269036329, + "50.0" : 0.4029302259477193, + "90.0" : 0.4139810925611624, + "95.0" : 0.4139810925611624, + "99.0" : 0.4139810925611624, + "99.9" : 0.4139810925611624, + "99.99" : 0.4139810925611624, + "99.999" : 0.4139810925611624, + "99.9999" : 0.4139810925611624, + "100.0" : 0.4139810925611624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3919055269036329, + 0.39201086177969424, + 0.39202340695440824 + ], + [ + 0.4139299769030175, + 0.4138370449410304, + 0.4139810925611624 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15362750503700207, + "scoreError" : 0.0016445278876601435, + "scoreConfidence" : [ + 0.15198297714934192, + 0.1552720329246622 + ], + "scorePercentiles" : { + "0.0" : 0.15296614901720842, + "50.0" : 0.15365937055787976, + "90.0" : 0.15433506208716588, + "95.0" : 0.15433506208716588, + "99.0" : 0.15433506208716588, + "99.9" : 0.15433506208716588, + "99.99" : 0.15433506208716588, + "99.999" : 0.15433506208716588, + "99.9999" : 0.15433506208716588, + "100.0" : 0.15433506208716588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15306992573317824, + 0.15329310425225337, + 0.15296614901720842 + ], + [ + 0.15407515226870042, + 0.15402563686350615, + 0.15433506208716588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046832601695245696, + "scoreError" : 4.4133402273143716E-4, + "scoreConfidence" : [ + 0.04639126767251426, + 0.04727393571797713 + ], + "scorePercentiles" : { + "0.0" : 0.046661237833272674, + "50.0" : 0.046836549044438874, + "90.0" : 0.046983828215295856, + "95.0" : 0.046983828215295856, + "99.0" : 0.046983828215295856, + "99.9" : 0.046983828215295856, + "99.99" : 0.046983828215295856, + "99.999" : 0.046983828215295856, + "99.9999" : 0.046983828215295856, + "100.0" : 0.046983828215295856 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046710812351111235, + 0.046661237833272674, + 0.04669749980620789 + ], + [ + 0.04696228573776651, + 0.046979946227820035, + 0.046983828215295856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8909363.898800766, + "scoreError" : 206938.47181179698, + "scoreConfidence" : [ + 8702425.426988969, + 9116302.370612564 + ], + "scorePercentiles" : { + "0.0" : 8807268.819542253, + "50.0" : 8913634.1669885, + "90.0" : 8987508.461814914, + "95.0" : 8987508.461814914, + "99.0" : 8987508.461814914, + "99.9" : 8987508.461814914, + "99.99" : 8987508.461814914, + "99.999" : 8987508.461814914, + "99.9999" : 8987508.461814914, + "100.0" : 8987508.461814914 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8987508.461814914, + 8959840.611459266, + 8973078.626008969 + ], + [ + 8867427.72251773, + 8861059.15146147, + 8807268.819542253 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-24T08:09:44Z-031fb5f2f8f918d8e57044f1b1474e5cf2fa1485-jdk17.json b/performance-results/2025-10-24T08:09:44Z-031fb5f2f8f918d8e57044f1b1474e5cf2fa1485-jdk17.json new file mode 100644 index 0000000000..b8f36dd80b --- /dev/null +++ b/performance-results/2025-10-24T08:09:44Z-031fb5f2f8f918d8e57044f1b1474e5cf2fa1485-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3474525734051666, + "scoreError" : 0.04271315127368843, + "scoreConfidence" : [ + 3.3047394221314783, + 3.390165724678855 + ], + "scorePercentiles" : { + "0.0" : 3.3406016483522656, + "50.0" : 3.3465326527210797, + "90.0" : 3.356143339826241, + "95.0" : 3.356143339826241, + "99.0" : 3.356143339826241, + "99.9" : 3.356143339826241, + "99.99" : 3.356143339826241, + "99.999" : 3.356143339826241, + "99.9999" : 3.356143339826241, + "100.0" : 3.356143339826241 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3406016483522656, + 3.356143339826241 + ], + [ + 3.344673146616353, + 3.3483921588258068 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6868907052069833, + "scoreError" : 0.017008658111480907, + "scoreConfidence" : [ + 1.6698820470955023, + 1.7038993633184643 + ], + "scorePercentiles" : { + "0.0" : 1.6837871469518557, + "50.0" : 1.6872702568111806, + "90.0" : 1.689235160253716, + "95.0" : 1.689235160253716, + "99.0" : 1.689235160253716, + "99.9" : 1.689235160253716, + "99.99" : 1.689235160253716, + "99.999" : 1.689235160253716, + "99.9999" : 1.689235160253716, + "100.0" : 1.689235160253716 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6837871469518557, + 1.689235160253716 + ], + [ + 1.6856320678713113, + 1.6889084457510501 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8472157668168813, + "scoreError" : 0.030873809850010613, + "scoreConfidence" : [ + 0.8163419569668706, + 0.8780895766668919 + ], + "scorePercentiles" : { + "0.0" : 0.8427208155376084, + "50.0" : 0.8461946693762439, + "90.0" : 0.8537529129774293, + "95.0" : 0.8537529129774293, + "99.0" : 0.8537529129774293, + "99.9" : 0.8537529129774293, + "99.99" : 0.8537529129774293, + "99.999" : 0.8537529129774293, + "99.9999" : 0.8537529129774293, + "100.0" : 0.8537529129774293 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8448799988005258, + 0.8537529129774293 + ], + [ + 0.8427208155376084, + 0.8475093399519619 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.45764984708954, + "scoreError" : 0.381515846756941, + "scoreConfidence" : [ + 16.0761340003326, + 16.839165693846482 + ], + "scorePercentiles" : { + "0.0" : 16.330631067167587, + "50.0" : 16.456527283308255, + "90.0" : 16.58924738557651, + "95.0" : 16.58924738557651, + "99.0" : 16.58924738557651, + "99.9" : 16.58924738557651, + "99.99" : 16.58924738557651, + "99.999" : 16.58924738557651, + "99.9999" : 16.58924738557651, + "100.0" : 16.58924738557651 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.330631067167587, + 16.330736771386277, + 16.33933114118232 + ], + [ + 16.57372342543419, + 16.582229291790366, + 16.58924738557651 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2768.518803928198, + "scoreError" : 95.12815903974456, + "scoreConfidence" : [ + 2673.3906448884536, + 2863.6469629679423 + ], + "scorePercentiles" : { + "0.0" : 2734.6587420539886, + "50.0" : 2769.3846544570397, + "90.0" : 2802.9517895999143, + "95.0" : 2802.9517895999143, + "99.0" : 2802.9517895999143, + "99.9" : 2802.9517895999143, + "99.99" : 2802.9517895999143, + "99.999" : 2802.9517895999143, + "99.9999" : 2802.9517895999143, + "100.0" : 2802.9517895999143 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2734.6587420539886, + 2736.404383414345, + 2741.994276170634 + ], + [ + 2798.3285995868596, + 2802.9517895999143, + 2796.775032743446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74205.63553165675, + "scoreError" : 460.38722592709195, + "scoreConfidence" : [ + 73745.24830572966, + 74666.02275758384 + ], + "scorePercentiles" : { + "0.0" : 73939.03791518132, + "50.0" : 74266.3543593444, + "90.0" : 74341.10318244976, + "95.0" : 74341.10318244976, + "99.0" : 74341.10318244976, + "99.9" : 74341.10318244976, + "99.99" : 74341.10318244976, + "99.999" : 74341.10318244976, + "99.9999" : 74341.10318244976, + "100.0" : 74341.10318244976 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73939.03791518132, + 74218.85829623505, + 74081.22441694753 + ], + [ + 74341.10318244976, + 74339.73895667304, + 74313.85042245376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 360.7819038885025, + "scoreError" : 4.003600298327854, + "scoreConfidence" : [ + 356.77830359017463, + 364.78550418683034 + ], + "scorePercentiles" : { + "0.0" : 359.02367350574053, + "50.0" : 360.8458229170519, + "90.0" : 362.3021711315208, + "95.0" : 362.3021711315208, + "99.0" : 362.3021711315208, + "99.9" : 362.3021711315208, + "99.99" : 362.3021711315208, + "99.999" : 362.3021711315208, + "99.9999" : 362.3021711315208, + "100.0" : 362.3021711315208 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.81270414872677, + 359.68795243187725, + 359.02367350574053 + ], + [ + 361.9859804277724, + 361.878941685377, + 362.3021711315208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.60697203041325, + "scoreError" : 5.626542349659386, + "scoreConfidence" : [ + 110.98042968075386, + 122.23351438007263 + ], + "scorePercentiles" : { + "0.0" : 114.71319134307444, + "50.0" : 116.59851319432708, + "90.0" : 118.52678317324377, + "95.0" : 118.52678317324377, + "99.0" : 118.52678317324377, + "99.9" : 118.52678317324377, + "99.99" : 118.52678317324377, + "99.999" : 118.52678317324377, + "99.9999" : 118.52678317324377, + "100.0" : 118.52678317324377 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.83536339988358, + 114.78031042485729, + 114.71319134307444 + ], + [ + 118.36166298877059, + 118.42452085264974, + 118.52678317324377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06101120417621756, + "scoreError" : 2.1524866262934096E-4, + "scoreConfidence" : [ + 0.06079595551358822, + 0.0612264528388469 + ], + "scorePercentiles" : { + "0.0" : 0.060903018087918245, + "50.0" : 0.06099360204599541, + "90.0" : 0.061104474703035636, + "95.0" : 0.061104474703035636, + "99.0" : 0.061104474703035636, + "99.9" : 0.061104474703035636, + "99.99" : 0.061104474703035636, + "99.999" : 0.061104474703035636, + "99.9999" : 0.061104474703035636, + "100.0" : 0.061104474703035636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0609865047233386, + 0.060903018087918245, + 0.061104474703035636 + ], + [ + 0.060976765093959974, + 0.06100069936865221, + 0.06109576308040078 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8011075984222177E-4, + "scoreError" : 2.104885598455048E-5, + "scoreConfidence" : [ + 3.590619038576713E-4, + 4.011596158267722E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7300528079021176E-4, + "50.0" : 3.8012161320148696E-4, + "90.0" : 3.874412000415487E-4, + "95.0" : 3.874412000415487E-4, + "99.0" : 3.874412000415487E-4, + "99.9" : 3.874412000415487E-4, + "99.99" : 3.874412000415487E-4, + "99.999" : 3.874412000415487E-4, + "99.9999" : 3.874412000415487E-4, + "100.0" : 3.874412000415487E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.866517019291696E-4, + 3.8677635412697045E-4, + 3.874412000415487E-4 + ], + [ + 3.7319849769162564E-4, + 3.735915244738044E-4, + 3.7300528079021176E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.182654708021226, + "scoreError" : 0.05642952477327827, + "scoreConfidence" : [ + 2.1262251832479477, + 2.239084232794504 + ], + "scorePercentiles" : { + "0.0" : 2.1338573260081075, + "50.0" : 2.1725456195660278, + "90.0" : 2.246977753770333, + "95.0" : 2.2494558544759333, + "99.0" : 2.2494558544759333, + "99.9" : 2.2494558544759333, + "99.99" : 2.2494558544759333, + "99.999" : 2.2494558544759333, + "99.9999" : 2.2494558544759333, + "100.0" : 2.2494558544759333 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2494558544759333, + 2.200670472387239, + 2.2246748474199287, + 2.1669079947995664, + 2.1656597784755305 + ], + [ + 2.2055932304808117, + 2.168595599306158, + 2.1764956398258977, + 2.1338573260081075, + 2.1346363370330845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013668940878112617, + "scoreError" : 2.2369975428687934E-5, + "scoreConfidence" : [ + 0.013646570902683928, + 0.013691310853541305 + ], + "scorePercentiles" : { + "0.0" : 0.01365564617483354, + "50.0" : 0.01366815747229495, + "90.0" : 0.013677514691541234, + "95.0" : 0.013677514691541234, + "99.0" : 0.013677514691541234, + "99.9" : 0.013677514691541234, + "99.99" : 0.013677514691541234, + "99.999" : 0.013677514691541234, + "99.9999" : 0.013677514691541234, + "100.0" : 0.013677514691541234 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013677514691541234, + 0.013676906328085572, + 0.01365564617483354 + ], + [ + 0.013667263129625453, + 0.013668626710606169, + 0.013667688233983729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0418822297914916, + "scoreError" : 0.22416642914069096, + "scoreConfidence" : [ + 0.8177158006508006, + 1.2660486589321827 + ], + "scorePercentiles" : { + "0.0" : 0.9684818112531474, + "50.0" : 1.041625272999146, + "90.0" : 1.115485827997769, + "95.0" : 1.115485827997769, + "99.0" : 1.115485827997769, + "99.9" : 1.115485827997769, + "99.99" : 1.115485827997769, + "99.999" : 1.115485827997769, + "99.9999" : 1.115485827997769, + "100.0" : 1.115485827997769 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1137514311170509, + 1.1153256847329096, + 1.115485827997769 + ], + [ + 0.9687495087668313, + 0.9684818112531474, + 0.969499114881241 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.0104744369113848, + "scoreError" : 9.902702598763213E-4, + "scoreConfidence" : [ + 0.009484166651508478, + 0.011464707171261121 + ], + "scorePercentiles" : { + "0.0" : 0.010150016531945387, + "50.0" : 0.010473615322279058, + "90.0" : 0.010804194996942504, + "95.0" : 0.010804194996942504, + "99.0" : 0.010804194996942504, + "99.9" : 0.010804194996942504, + "99.99" : 0.010804194996942504, + "99.999" : 0.010804194996942504, + "99.9999" : 0.010804194996942504, + "100.0" : 0.010804194996942504 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010150833869284708, + 0.0101554264785929, + 0.010150016531945387 + ], + [ + 0.010804194996942504, + 0.010794345425578077, + 0.010791804165965216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.9599213552284134, + "scoreError" : 0.12017356487660469, + "scoreConfidence" : [ + 2.839747790351809, + 3.080094920105018 + ], + "scorePercentiles" : { + "0.0" : 2.9185440624270713, + "50.0" : 2.95837221264219, + "90.0" : 3.0039103021021023, + "95.0" : 3.0039103021021023, + "99.0" : 3.0039103021021023, + "99.9" : 3.0039103021021023, + "99.99" : 3.0039103021021023, + "99.999" : 3.0039103021021023, + "99.9999" : 3.0039103021021023, + "100.0" : 3.0039103021021023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9261447817437096, + 2.9185440624270713, + 2.918610270128355 + ], + [ + 2.9905996435406696, + 3.0039103021021023, + 3.0017190714285715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7343163787222617, + "scoreError" : 0.01861488566180693, + "scoreConfidence" : [ + 2.715701493060455, + 2.7529312643840687 + ], + "scorePercentiles" : { + "0.0" : 2.7245300190683737, + "50.0" : 2.735662783320242, + "90.0" : 2.741873180921053, + "95.0" : 2.741873180921053, + "99.0" : 2.741873180921053, + "99.9" : 2.741873180921053, + "99.99" : 2.741873180921053, + "99.999" : 2.741873180921053, + "99.9999" : 2.741873180921053, + "100.0" : 2.741873180921053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.733653010385351, + 2.7245300190683737, + 2.728810178396072 + ], + [ + 2.741873180921053, + 2.737672556255133, + 2.739359327307587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18013322147568314, + "scoreError" : 0.012649604156886193, + "scoreConfidence" : [ + 0.16748361731879696, + 0.19278282563256932 + ], + "scorePercentiles" : { + "0.0" : 0.17520214846090507, + "50.0" : 0.1808590974331582, + "90.0" : 0.18454827694834555, + "95.0" : 0.18454827694834555, + "99.0" : 0.18454827694834555, + "99.9" : 0.18454827694834555, + "99.99" : 0.18454827694834555, + "99.999" : 0.18454827694834555, + "99.9999" : 0.18454827694834555, + "100.0" : 0.18454827694834555 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17520778717849883, + 0.17520214846090507, + 0.1779690553113488 + ], + [ + 0.18454827694834555, + 0.18374913955496758, + 0.18412292140003314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32560400190749145, + "scoreError" : 0.007574676886122166, + "scoreConfidence" : [ + 0.31802932502136927, + 0.3331786787936136 + ], + "scorePercentiles" : { + "0.0" : 0.32299085168916736, + "50.0" : 0.32510495034654974, + "90.0" : 0.3292063348586101, + "95.0" : 0.3292063348586101, + "99.0" : 0.3292063348586101, + "99.9" : 0.3292063348586101, + "99.99" : 0.3292063348586101, + "99.999" : 0.3292063348586101, + "99.9999" : 0.3292063348586101, + "100.0" : 0.3292063348586101 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3280138916259389, + 0.32662264555639026, + 0.3292063348586101 + ], + [ + 0.32299085168916736, + 0.3232030325781326, + 0.3235872551367093 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14713104252054773, + "scoreError" : 0.015982822334303284, + "scoreConfidence" : [ + 0.13114822018624445, + 0.16311386485485102 + ], + "scorePercentiles" : { + "0.0" : 0.14187851711026617, + "50.0" : 0.14712708715206405, + "90.0" : 0.1524288398317227, + "95.0" : 0.1524288398317227, + "99.0" : 0.1524288398317227, + "99.9" : 0.1524288398317227, + "99.99" : 0.1524288398317227, + "99.999" : 0.1524288398317227, + "99.9999" : 0.1524288398317227, + "100.0" : 0.1524288398317227 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15233782644527383, + 0.1524288398317227, + 0.15223401639518952 + ], + [ + 0.14202015790893857, + 0.14187851711026617, + 0.1418868974318956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4080858313477824, + "scoreError" : 0.025077490827759587, + "scoreConfidence" : [ + 0.38300834052002286, + 0.433163322175542 + ], + "scorePercentiles" : { + "0.0" : 0.39792475536190364, + "50.0" : 0.40794221576411777, + "90.0" : 0.4189350280256378, + "95.0" : 0.4189350280256378, + "99.0" : 0.4189350280256378, + "99.9" : 0.4189350280256378, + "99.99" : 0.4189350280256378, + "99.999" : 0.4189350280256378, + "99.9999" : 0.4189350280256378, + "100.0" : 0.4189350280256378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40137505823800923, + 0.40108296819476197, + 0.39792475536190364 + ], + [ + 0.4189350280256378, + 0.4145093732902263, + 0.4146878049761559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1583688499103881, + "scoreError" : 0.005694230622413238, + "scoreConfidence" : [ + 0.15267461928797488, + 0.16406308053280133 + ], + "scorePercentiles" : { + "0.0" : 0.15542731462542742, + "50.0" : 0.15854511418215056, + "90.0" : 0.16027232819937495, + "95.0" : 0.16027232819937495, + "99.0" : 0.16027232819937495, + "99.9" : 0.16027232819937495, + "99.99" : 0.16027232819937495, + "99.999" : 0.16027232819937495, + "99.9999" : 0.16027232819937495, + "100.0" : 0.16027232819937495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15723555223974467, + 0.15719270666645707, + 0.15542731462542742 + ], + [ + 0.15985467612455642, + 0.16027232819937495, + 0.16023052160676804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04765522074328293, + "scoreError" : 0.0014421212788623947, + "scoreConfidence" : [ + 0.04621309946442054, + 0.04909734202214533 + ], + "scorePercentiles" : { + "0.0" : 0.047159967511919525, + "50.0" : 0.04767252795705185, + "90.0" : 0.0481306597937152, + "95.0" : 0.0481306597937152, + "99.0" : 0.0481306597937152, + "99.9" : 0.0481306597937152, + "99.99" : 0.0481306597937152, + "99.999" : 0.0481306597937152, + "99.9999" : 0.0481306597937152, + "100.0" : 0.0481306597937152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048125524598999964, + 0.04811635317298023, + 0.0481306597937152 + ], + [ + 0.047228702741123466, + 0.04717011664095924, + 0.047159967511919525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8907239.858514825, + "scoreError" : 375232.46617757285, + "scoreConfidence" : [ + 8532007.392337251, + 9282472.324692398 + ], + "scorePercentiles" : { + "0.0" : 8780151.30904302, + "50.0" : 8910261.341025963, + "90.0" : 9034700.886178862, + "95.0" : 9034700.886178862, + "99.0" : 9034700.886178862, + "99.9" : 9034700.886178862, + "99.99" : 9034700.886178862, + "99.999" : 9034700.886178862, + "99.9999" : 9034700.886178862, + "100.0" : 9034700.886178862 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8794559.44288225, + 8780151.30904302, + 8780912.08428446 + ], + [ + 9025963.239169676, + 9034700.886178862, + 9027152.189530686 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-25T05:50:56Z-0269e6dbc85d1ec095f80111709462eb06c7737f-jdk17.json b/performance-results/2025-10-25T05:50:56Z-0269e6dbc85d1ec095f80111709462eb06c7737f-jdk17.json new file mode 100644 index 0000000000..94ae88597e --- /dev/null +++ b/performance-results/2025-10-25T05:50:56Z-0269e6dbc85d1ec095f80111709462eb06c7737f-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3553595256001887, + "scoreError" : 0.06388683438179214, + "scoreConfidence" : [ + 3.2914726912183965, + 3.419246359981981 + ], + "scorePercentiles" : { + "0.0" : 3.3426204828635293, + "50.0" : 3.356237832860183, + "90.0" : 3.366341953816858, + "95.0" : 3.366341953816858, + "99.0" : 3.366341953816858, + "99.9" : 3.366341953816858, + "99.99" : 3.366341953816858, + "99.999" : 3.366341953816858, + "99.9999" : 3.366341953816858, + "100.0" : 3.366341953816858 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3426204828635293, + 3.354141130603727 + ], + [ + 3.358334535116639, + 3.366341953816858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6932745213310365, + "scoreError" : 0.00902711585640254, + "scoreConfidence" : [ + 1.684247405474634, + 1.702301637187439 + ], + "scorePercentiles" : { + "0.0" : 1.6913198406181882, + "50.0" : 1.6937057133845923, + "90.0" : 1.6943668179367728, + "95.0" : 1.6943668179367728, + "99.0" : 1.6943668179367728, + "99.9" : 1.6943668179367728, + "99.99" : 1.6943668179367728, + "99.999" : 1.6943668179367728, + "99.9999" : 1.6943668179367728, + "100.0" : 1.6943668179367728 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.694189819723356, + 1.6932216070458284 + ], + [ + 1.6913198406181882, + 1.6943668179367728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8505325872234646, + "scoreError" : 0.021813275256625273, + "scoreConfidence" : [ + 0.8287193119668393, + 0.8723458624800898 + ], + "scorePercentiles" : { + "0.0" : 0.8468304804126937, + "50.0" : 0.8501384787932513, + "90.0" : 0.8550229108946623, + "95.0" : 0.8550229108946623, + "99.0" : 0.8550229108946623, + "99.9" : 0.8550229108946623, + "99.99" : 0.8550229108946623, + "99.999" : 0.8550229108946623, + "99.9999" : 0.8550229108946623, + "100.0" : 0.8550229108946623 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8501902413456917, + 0.8550229108946623 + ], + [ + 0.8468304804126937, + 0.850086716240811 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.21121936206457, + "scoreError" : 0.5591508617011858, + "scoreConfidence" : [ + 15.652068500363383, + 16.770370223765752 + ], + "scorePercentiles" : { + "0.0" : 15.923288939989758, + "50.0" : 16.246720649195552, + "90.0" : 16.40514380086926, + "95.0" : 16.40514380086926, + "99.0" : 16.40514380086926, + "99.9" : 16.40514380086926, + "99.99" : 16.40514380086926, + "99.999" : 16.40514380086926, + "99.9999" : 16.40514380086926, + "100.0" : 16.40514380086926 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.15930492971868, + 15.923288939989758, + 16.049198614655783 + ], + [ + 16.40514380086926, + 16.396243518481512, + 16.334136368672425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2623.975367749841, + "scoreError" : 117.38269572474653, + "scoreConfidence" : [ + 2506.5926720250945, + 2741.3580634745877 + ], + "scorePercentiles" : { + "0.0" : 2578.0529564305216, + "50.0" : 2610.8889001705747, + "90.0" : 2675.2406469579296, + "95.0" : 2675.2406469579296, + "99.0" : 2675.2406469579296, + "99.9" : 2675.2406469579296, + "99.99" : 2675.2406469579296, + "99.999" : 2675.2406469579296, + "99.9999" : 2675.2406469579296, + "100.0" : 2675.2406469579296 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2674.5744912855753, + 2675.2406469579296, + 2621.7341366310566 + ], + [ + 2594.2063114838716, + 2600.0436637100925, + 2578.0529564305216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73983.72534361202, + "scoreError" : 600.8367788374738, + "scoreConfidence" : [ + 73382.88856477455, + 74584.5621224495 + ], + "scorePercentiles" : { + "0.0" : 73787.17541230674, + "50.0" : 73965.54300046922, + "90.0" : 74228.27441053223, + "95.0" : 74228.27441053223, + "99.0" : 74228.27441053223, + "99.9" : 74228.27441053223, + "99.99" : 74228.27441053223, + "99.999" : 74228.27441053223, + "99.9999" : 74228.27441053223, + "100.0" : 74228.27441053223 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74137.04272026329, + 74228.27441053223, + 74167.05937626946 + ], + [ + 73794.04328067513, + 73788.7568616253, + 73787.17541230674 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 366.5402341884121, + "scoreError" : 6.591803781870206, + "scoreConfidence" : [ + 359.9484304065419, + 373.13203797028234 + ], + "scorePercentiles" : { + "0.0" : 364.29507662489846, + "50.0" : 366.4864561823265, + "90.0" : 368.86186831418405, + "95.0" : 368.86186831418405, + "99.0" : 368.86186831418405, + "99.9" : 368.86186831418405, + "99.99" : 368.86186831418405, + "99.999" : 368.86186831418405, + "99.9999" : 368.86186831418405, + "100.0" : 368.86186831418405 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 368.3627036446187, + 368.8087026596062, + 368.86186831418405 + ], + [ + 364.29507662489846, + 364.6102087200342, + 364.3028451671309 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.43213549074261, + "scoreError" : 8.60960210358748, + "scoreConfidence" : [ + 106.82253338715513, + 124.04173759433009 + ], + "scorePercentiles" : { + "0.0" : 112.5818149183744, + "50.0" : 115.41868694216726, + "90.0" : 118.34604745711687, + "95.0" : 118.34604745711687, + "99.0" : 118.34604745711687, + "99.9" : 118.34604745711687, + "99.99" : 118.34604745711687, + "99.999" : 118.34604745711687, + "99.9999" : 118.34604745711687, + "100.0" : 118.34604745711687 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.5818149183744, + 112.62896766950055, + 112.67952638921798 + ], + [ + 118.34604745711687, + 118.15784749511653, + 118.19860901512939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06058382837859296, + "scoreError" : 0.001218898930340094, + "scoreConfidence" : [ + 0.05936492944825287, + 0.061802727308933054 + ], + "scorePercentiles" : { + "0.0" : 0.06014271138001131, + "50.0" : 0.06047994523867374, + "90.0" : 0.06128982283252228, + "95.0" : 0.06128982283252228, + "99.0" : 0.06128982283252228, + "99.9" : 0.06128982283252228, + "99.99" : 0.06128982283252228, + "99.999" : 0.06128982283252228, + "99.9999" : 0.06128982283252228, + "100.0" : 0.06128982283252228 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06014271138001131, + 0.060223666732911775, + 0.060414588372823604 + ], + [ + 0.06054530210452388, + 0.06128982283252228, + 0.060886878848764925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7354492431256747E-4, + "scoreError" : 3.337431688153503E-5, + "scoreConfidence" : [ + 3.4017060743103244E-4, + 4.069192411941025E-4 + ], + "scorePercentiles" : { + "0.0" : 3.613204736531253E-4, + "50.0" : 3.7420168966276603E-4, + "90.0" : 3.869323420529169E-4, + "95.0" : 3.869323420529169E-4, + "99.0" : 3.869323420529169E-4, + "99.9" : 3.869323420529169E-4, + "99.99" : 3.869323420529169E-4, + "99.999" : 3.869323420529169E-4, + "99.9999" : 3.869323420529169E-4, + "100.0" : 3.869323420529169E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.657565265037708E-4, + 3.613204736531253E-4, + 3.615129307904831E-4 + ], + [ + 3.869323420529169E-4, + 3.8310042005334767E-4, + 3.8264685282176123E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2183507574305956, + "scoreError" : 0.05865965581939143, + "scoreConfidence" : [ + 2.1596911016112044, + 2.277010413249987 + ], + "scorePercentiles" : { + "0.0" : 2.176182914273281, + "50.0" : 2.210085909771697, + "90.0" : 2.293977419221665, + "95.0" : 2.2975017169767975, + "99.0" : 2.2975017169767975, + "99.9" : 2.2975017169767975, + "99.99" : 2.2975017169767975, + "99.999" : 2.2975017169767975, + "99.9999" : 2.2975017169767975, + "100.0" : 2.2975017169767975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2622587394254694, + 2.2975017169767975, + 2.2298677030100333, + 2.183130996944566, + 2.184415633901267 + ], + [ + 2.2361148023697743, + 2.193863247861373, + 2.210916690981432, + 2.176182914273281, + 2.2092551285619617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013549706587438011, + "scoreError" : 2.5798092109804673E-4, + "scoreConfidence" : [ + 0.013291725666339965, + 0.013807687508536058 + ], + "scorePercentiles" : { + "0.0" : 0.013459444804845223, + "50.0" : 0.013539954841749899, + "90.0" : 0.013676991396099457, + "95.0" : 0.013676991396099457, + "99.0" : 0.013676991396099457, + "99.9" : 0.013676991396099457, + "99.99" : 0.013676991396099457, + "99.999" : 0.013676991396099457, + "99.9999" : 0.013676991396099457, + "100.0" : 0.013676991396099457 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013676991396099457, + 0.013610388848436678, + 0.013603128967973274 + ], + [ + 0.013476780715526524, + 0.013471504791746934, + 0.013459444804845223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9700014501810363, + "scoreError" : 0.02083309811539651, + "scoreConfidence" : [ + 0.9491683520656399, + 0.9908345482964328 + ], + "scorePercentiles" : { + "0.0" : 0.9599354371280476, + "50.0" : 0.972084027889506, + "90.0" : 0.9768789005568037, + "95.0" : 0.9768789005568037, + "99.0" : 0.9768789005568037, + "99.9" : 0.9768789005568037, + "99.99" : 0.9768789005568037, + "99.999" : 0.9768789005568037, + "99.9999" : 0.9768789005568037, + "100.0" : 0.9768789005568037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9599354371280476, + 0.9627444702541393, + 0.9684394400116201 + ], + [ + 0.9757286157673919, + 0.9762818373682155, + 0.9768789005568037 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010627361797033186, + "scoreError" : 0.0018683468522038779, + "scoreConfidence" : [ + 0.008759014944829308, + 0.012495708649237065 + ], + "scorePercentiles" : { + "0.0" : 0.010015794936561798, + "50.0" : 0.010627084950899169, + "90.0" : 0.011244179801028141, + "95.0" : 0.011244179801028141, + "99.0" : 0.011244179801028141, + "99.9" : 0.011244179801028141, + "99.99" : 0.011244179801028141, + "99.999" : 0.011244179801028141, + "99.9999" : 0.011244179801028141, + "100.0" : 0.011244179801028141 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011244179801028141, + 0.011228467308020516, + 0.011234016625888306 + ], + [ + 0.010015794936561798, + 0.010016009516922535, + 0.010025702593777821 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1027288738432133, + "scoreError" : 0.03032957037427941, + "scoreConfidence" : [ + 3.072399303468934, + 3.1330584442174927 + ], + "scorePercentiles" : { + "0.0" : 3.091941803461063, + "50.0" : 3.0985579476265706, + "90.0" : 3.117482646508728, + "95.0" : 3.117482646508728, + "99.0" : 3.117482646508728, + "99.9" : 3.117482646508728, + "99.99" : 3.117482646508728, + "99.999" : 3.117482646508728, + "99.9999" : 3.117482646508728, + "100.0" : 3.117482646508728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.095666652227723, + 3.1014492430254186, + 3.091941803461063 + ], + [ + 3.0951750068027213, + 3.114657891033624, + 3.117482646508728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6992912577710406, + "scoreError" : 0.036506395066302155, + "scoreConfidence" : [ + 2.6627848627047386, + 2.7357976528373427 + ], + "scorePercentiles" : { + "0.0" : 2.6829072583154505, + "50.0" : 2.7005371957744746, + "90.0" : 2.716617763172189, + "95.0" : 2.716617763172189, + "99.0" : 2.716617763172189, + "99.9" : 2.716617763172189, + "99.99" : 2.716617763172189, + "99.999" : 2.716617763172189, + "99.9999" : 2.716617763172189, + "100.0" : 2.716617763172189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.6872034363245567, + 2.6953091223389922, + 2.6829072583154505 + ], + [ + 2.7057652692099565, + 2.7079446972650962, + 2.716617763172189 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1756723636494308, + "scoreError" : 0.007265169152717635, + "scoreConfidence" : [ + 0.16840719449671318, + 0.18293753280214844 + ], + "scorePercentiles" : { + "0.0" : 0.17310405667301368, + "50.0" : 0.17569230015300794, + "90.0" : 0.1782144843176391, + "95.0" : 0.1782144843176391, + "99.0" : 0.1782144843176391, + "99.9" : 0.1782144843176391, + "99.99" : 0.1782144843176391, + "99.999" : 0.1782144843176391, + "99.9999" : 0.1782144843176391, + "100.0" : 0.1782144843176391 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17327243363828534, + 0.17356523784646893, + 0.17310405667301368 + ], + [ + 0.17805860696163092, + 0.1782144843176391, + 0.17781936245954694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3219323058089911, + "scoreError" : 0.0027612036160313902, + "scoreConfidence" : [ + 0.31917110219295974, + 0.3246935094250225 + ], + "scorePercentiles" : { + "0.0" : 0.3212567948536734, + "50.0" : 0.32151928342301533, + "90.0" : 0.3237682216466475, + "95.0" : 0.3237682216466475, + "99.0" : 0.3237682216466475, + "99.9" : 0.3237682216466475, + "99.99" : 0.3237682216466475, + "99.999" : 0.3237682216466475, + "99.9999" : 0.3237682216466475, + "100.0" : 0.3237682216466475 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3212567948536734, + 0.32125868523515805, + 0.3212837483775622 + ], + [ + 0.3237682216466475, + 0.3217548184684685, + 0.32227156627243725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14456478868818165, + "scoreError" : 0.0037917956243987134, + "scoreConfidence" : [ + 0.14077299306378294, + 0.14835658431258036 + ], + "scorePercentiles" : { + "0.0" : 0.14317895041807457, + "50.0" : 0.14460385058163097, + "90.0" : 0.14582462665325108, + "95.0" : 0.14582462665325108, + "99.0" : 0.14582462665325108, + "99.9" : 0.14582462665325108, + "99.99" : 0.14582462665325108, + "99.999" : 0.14582462665325108, + "99.9999" : 0.14582462665325108, + "100.0" : 0.14582462665325108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14317895041807457, + 0.14342782809116073, + 0.14339204288786922 + ], + [ + 0.14582462665325108, + 0.14577987307210122, + 0.14578541100663314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4005145995882278, + "scoreError" : 0.005530552924669233, + "scoreConfidence" : [ + 0.3949840466635586, + 0.4060451525128971 + ], + "scorePercentiles" : { + "0.0" : 0.398679937091373, + "50.0" : 0.4004251666239806, + "90.0" : 0.40252414260988567, + "95.0" : 0.40252414260988567, + "99.0" : 0.40252414260988567, + "99.9" : 0.40252414260988567, + "99.99" : 0.40252414260988567, + "99.999" : 0.40252414260988567, + "99.9999" : 0.40252414260988567, + "100.0" : 0.40252414260988567 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40230237509051414, + 0.4021060183755529, + 0.40252414260988567 + ], + [ + 0.3987308094896332, + 0.3987443148724083, + 0.398679937091373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15721586362647166, + "scoreError" : 7.063322655492045E-4, + "scoreConfidence" : [ + 0.15650953136092247, + 0.15792219589202086 + ], + "scorePercentiles" : { + "0.0" : 0.15688673408427725, + "50.0" : 0.15720894857328935, + "90.0" : 0.15759771714943108, + "95.0" : 0.15759771714943108, + "99.0" : 0.15759771714943108, + "99.9" : 0.15759771714943108, + "99.99" : 0.15759771714943108, + "99.999" : 0.15759771714943108, + "99.9999" : 0.15759771714943108, + "100.0" : 0.15759771714943108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15759771714943108, + 0.15734182524348223, + 0.15730882930896165 + ], + [ + 0.15710906783761705, + 0.15705100813506084, + 0.15688673408427725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04579103534441176, + "scoreError" : 0.0010769215708082223, + "scoreConfidence" : [ + 0.044714113773603535, + 0.04686795691521998 + ], + "scorePercentiles" : { + "0.0" : 0.045334554359257984, + "50.0" : 0.04587706442073404, + "90.0" : 0.04630675579058503, + "95.0" : 0.04630675579058503, + "99.0" : 0.04630675579058503, + "99.9" : 0.04630675579058503, + "99.99" : 0.04630675579058503, + "99.999" : 0.04630675579058503, + "99.9999" : 0.04630675579058503, + "100.0" : 0.04630675579058503 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04630675579058503, + 0.04588999455753593, + 0.045864134283932156 + ], + [ + 0.04600795817940071, + 0.045342814895758705, + 0.045334554359257984 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8576608.991116704, + "scoreError" : 97079.22382924934, + "scoreConfidence" : [ + 8479529.767287455, + 8673688.214945953 + ], + "scorePercentiles" : { + "0.0" : 8535263.148464164, + "50.0" : 8574938.285896175, + "90.0" : 8625042.240517242, + "95.0" : 8625042.240517242, + "99.0" : 8625042.240517242, + "99.9" : 8625042.240517242, + "99.99" : 8625042.240517242, + "99.999" : 8625042.240517242, + "99.9999" : 8625042.240517242, + "100.0" : 8625042.240517242 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8549608.623931624, + 8535263.148464164, + 8556746.486740803 + ], + [ + 8625042.240517242, + 8593130.085051546, + 8599863.36199484 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-25T05:53:19Z-0269e6dbc85d1ec095f80111709462eb06c7737f-jdk17.json b/performance-results/2025-10-25T05:53:19Z-0269e6dbc85d1ec095f80111709462eb06c7737f-jdk17.json new file mode 100644 index 0000000000..76331c0bee --- /dev/null +++ b/performance-results/2025-10-25T05:53:19Z-0269e6dbc85d1ec095f80111709462eb06c7737f-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.352768079717045, + "scoreError" : 0.04264693482798888, + "scoreConfidence" : [ + 3.3101211448890564, + 3.395415014545034 + ], + "scorePercentiles" : { + "0.0" : 3.344100996591639, + "50.0" : 3.3534700904693473, + "90.0" : 3.3600311413378465, + "95.0" : 3.3600311413378465, + "99.0" : 3.3600311413378465, + "99.9" : 3.3600311413378465, + "99.99" : 3.3600311413378465, + "99.999" : 3.3600311413378465, + "99.9999" : 3.3600311413378465, + "100.0" : 3.3600311413378465 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.352518639243401, + 3.3600311413378465 + ], + [ + 3.344100996591639, + 3.354421541695294 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.681359989539579, + "scoreError" : 0.021152097488946805, + "scoreConfidence" : [ + 1.6602078920506322, + 1.7025120870285257 + ], + "scorePercentiles" : { + "0.0" : 1.6766806821496374, + "50.0" : 1.6823451114193313, + "90.0" : 1.684069053170016, + "95.0" : 1.684069053170016, + "99.0" : 1.684069053170016, + "99.9" : 1.684069053170016, + "99.99" : 1.684069053170016, + "99.999" : 1.684069053170016, + "99.9999" : 1.684069053170016, + "100.0" : 1.684069053170016 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6766806821496374, + 1.6830407446761644 + ], + [ + 1.6816494781624984, + 1.684069053170016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8540486134924351, + "scoreError" : 0.025046997463115436, + "scoreConfidence" : [ + 0.8290016160293197, + 0.8790956109555506 + ], + "scorePercentiles" : { + "0.0" : 0.8501402349438542, + "50.0" : 0.8539655861519894, + "90.0" : 0.8581230467219072, + "95.0" : 0.8581230467219072, + "99.0" : 0.8581230467219072, + "99.9" : 0.8581230467219072, + "99.99" : 0.8581230467219072, + "99.999" : 0.8581230467219072, + "99.9999" : 0.8581230467219072, + "100.0" : 0.8581230467219072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8501402349438542, + 0.8581230467219072 + ], + [ + 0.8565327916619959, + 0.8513983806419828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.34183649826462, + "scoreError" : 0.39516512789592645, + "scoreConfidence" : [ + 15.946671370368692, + 16.737001626160545 + ], + "scorePercentiles" : { + "0.0" : 16.191739585013906, + "50.0" : 16.329633360332878, + "90.0" : 16.538321961038854, + "95.0" : 16.538321961038854, + "99.0" : 16.538321961038854, + "99.9" : 16.538321961038854, + "99.99" : 16.538321961038854, + "99.999" : 16.538321961038854, + "99.9999" : 16.538321961038854, + "100.0" : 16.538321961038854 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.437177951806767, + 16.538321961038854, + 16.416245985296953 + ], + [ + 16.191739585013906, + 16.224512771062443, + 16.2430207353688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2791.789508326479, + "scoreError" : 214.06152423268296, + "scoreConfidence" : [ + 2577.727984093796, + 3005.851032559162 + ], + "scorePercentiles" : { + "0.0" : 2710.559635085139, + "50.0" : 2794.1724357095377, + "90.0" : 2863.6065705920532, + "95.0" : 2863.6065705920532, + "99.0" : 2863.6065705920532, + "99.9" : 2863.6065705920532, + "99.99" : 2863.6065705920532, + "99.999" : 2863.6065705920532, + "99.9999" : 2863.6065705920532, + "100.0" : 2863.6065705920532 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2710.559635085139, + 2728.202855790939, + 2728.332463470018 + ], + [ + 2863.6065705920532, + 2860.0124079490574, + 2860.023117071664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73893.22825198968, + "scoreError" : 547.5943937728342, + "scoreConfidence" : [ + 73345.63385821685, + 74440.82264576251 + ], + "scorePercentiles" : { + "0.0" : 73670.0739524364, + "50.0" : 73855.73534465821, + "90.0" : 74128.47536670328, + "95.0" : 74128.47536670328, + "99.0" : 74128.47536670328, + "99.9" : 74128.47536670328, + "99.99" : 74128.47536670328, + "99.999" : 74128.47536670328, + "99.9999" : 74128.47536670328, + "100.0" : 74128.47536670328 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73745.47532023405, + 73670.0739524364, + 73764.86933077312 + ], + [ + 73946.60135854331, + 74103.87418324788, + 74128.47536670328 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.09928492101216, + "scoreError" : 6.9567457516349585, + "scoreConfidence" : [ + 349.1425391693772, + 363.0560306726471 + ], + "scorePercentiles" : { + "0.0" : 351.33753106269694, + "50.0" : 356.80451622649866, + "90.0" : 358.0188896748837, + "95.0" : 358.0188896748837, + "99.0" : 358.0188896748837, + "99.9" : 358.0188896748837, + "99.99" : 358.0188896748837, + "99.999" : 358.0188896748837, + "99.9999" : 358.0188896748837, + "100.0" : 358.0188896748837 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.9154477297961, + 357.9035994528753, + 358.0188896748837 + ], + [ + 355.72665688261924, + 356.6935847232013, + 351.33753106269694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.25164099813007, + "scoreError" : 1.101592828148412, + "scoreConfidence" : [ + 115.15004816998166, + 117.35323382627848 + ], + "scorePercentiles" : { + "0.0" : 115.73740074170115, + "50.0" : 116.31928447897604, + "90.0" : 116.63391251925982, + "95.0" : 116.63391251925982, + "99.0" : 116.63391251925982, + "99.9" : 116.63391251925982, + "99.99" : 116.63391251925982, + "99.999" : 116.63391251925982, + "99.9999" : 116.63391251925982, + "100.0" : 116.63391251925982 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.73740074170115, + 116.072669146283, + 115.91068754656398 + ], + [ + 116.58927622330333, + 116.5658998116691, + 116.63391251925982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06143870021377751, + "scoreError" : 0.001956142052680842, + "scoreConfidence" : [ + 0.05948255816109667, + 0.06339484226645835 + ], + "scorePercentiles" : { + "0.0" : 0.06076186305664757, + "50.0" : 0.06146070731145759, + "90.0" : 0.06210202618178205, + "95.0" : 0.06210202618178205, + "99.0" : 0.06210202618178205, + "99.9" : 0.06210202618178205, + "99.99" : 0.06210202618178205, + "99.999" : 0.06210202618178205, + "99.9999" : 0.06210202618178205, + "100.0" : 0.06210202618178205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06207180052263727, + 0.06204927299972078, + 0.06210202618178205 + ], + [ + 0.060872141623194403, + 0.06077509689868302, + 0.06076186305664757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.628211296939751E-4, + "scoreError" : 7.168022562586908E-7, + "scoreConfidence" : [ + 3.621043274377164E-4, + 3.635379319502338E-4 + ], + "scorePercentiles" : { + "0.0" : 3.624866944966299E-4, + "50.0" : 3.6280004100307207E-4, + "90.0" : 3.632627909243302E-4, + "95.0" : 3.632627909243302E-4, + "99.0" : 3.632627909243302E-4, + "99.9" : 3.632627909243302E-4, + "99.99" : 3.632627909243302E-4, + "99.999" : 3.632627909243302E-4, + "99.9999" : 3.632627909243302E-4, + "100.0" : 3.632627909243302E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6284127395572684E-4, + 3.627067905436995E-4, + 3.632627909243302E-4 + ], + [ + 3.6287042019304697E-4, + 3.6275880805041724E-4, + 3.624866944966299E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.248039924640726, + "scoreError" : 0.08365304972189293, + "scoreConfidence" : [ + 2.1643868749188333, + 2.331692974362619 + ], + "scorePercentiles" : { + "0.0" : 2.16292664900519, + "50.0" : 2.247864890761969, + "90.0" : 2.3232531418430074, + "95.0" : 2.3258217669767443, + "99.0" : 2.3258217669767443, + "99.9" : 2.3258217669767443, + "99.99" : 2.3258217669767443, + "99.999" : 2.3258217669767443, + "99.9999" : 2.3258217669767443, + "100.0" : 2.3258217669767443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3258217669767443, + 2.3001355156393744, + 2.2984059715008045, + 2.247864054394246, + 2.247865727129692 + ], + [ + 2.2425950367713003, + 2.275859426490669, + 2.215373581302614, + 2.1635515171966255, + 2.16292664900519 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013531555623131962, + "scoreError" : 4.463118873289947E-4, + "scoreConfidence" : [ + 0.013085243735802967, + 0.013977867510460956 + ], + "scorePercentiles" : { + "0.0" : 0.013383061842314812, + "50.0" : 0.013528407249982315, + "90.0" : 0.013686975206464523, + "95.0" : 0.013686975206464523, + "99.0" : 0.013686975206464523, + "99.9" : 0.013686975206464523, + "99.99" : 0.013686975206464523, + "99.999" : 0.013686975206464523, + "99.9999" : 0.013686975206464523, + "100.0" : 0.013686975206464523 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013675307974225169, + 0.0136679097970341, + 0.013686975206464523 + ], + [ + 0.013388904702930528, + 0.013387174215822637, + 0.013383061842314812 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0248621880247188, + "scoreError" : 0.20183541777864986, + "scoreConfidence" : [ + 0.823026770246069, + 1.2266976058033687 + ], + "scorePercentiles" : { + "0.0" : 0.9589538909770832, + "50.0" : 1.0244934698463535, + "90.0" : 1.0910909182849662, + "95.0" : 1.0910909182849662, + "99.0" : 1.0910909182849662, + "99.9" : 1.0910909182849662, + "99.99" : 1.0910909182849662, + "99.999" : 1.0910909182849662, + "99.9999" : 1.0910909182849662, + "100.0" : 1.0910909182849662 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9589538909770832, + 0.9593017149160672, + 0.9592200523690773 + ], + [ + 1.090921326824479, + 1.0910909182849662, + 1.0896852247766398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010819306772369272, + "scoreError" : 4.1644975375780183E-4, + "scoreConfidence" : [ + 0.01040285701861147, + 0.011235756526127074 + ], + "scorePercentiles" : { + "0.0" : 0.010682092355218295, + "50.0" : 0.01081240089970182, + "90.0" : 0.010985899056046291, + "95.0" : 0.010985899056046291, + "99.0" : 0.010985899056046291, + "99.9" : 0.010985899056046291, + "99.99" : 0.010985899056046291, + "99.999" : 0.010985899056046291, + "99.9999" : 0.010985899056046291, + "100.0" : 0.010985899056046291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010940291148657223, + 0.01093552008249515, + 0.010985899056046291 + ], + [ + 0.010682092355218295, + 0.010682756274890183, + 0.010689281716908488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.0281492219550645, + "scoreError" : 0.21281379774612394, + "scoreConfidence" : [ + 2.8153354242089406, + 3.2409630197011885 + ], + "scorePercentiles" : { + "0.0" : 2.952864507083825, + "50.0" : 3.0274383635991775, + "90.0" : 3.1000338195908244, + "95.0" : 3.1000338195908244, + "99.0" : 3.1000338195908244, + "99.9" : 3.1000338195908244, + "99.99" : 3.1000338195908244, + "99.999" : 3.1000338195908244, + "99.9999" : 3.1000338195908244, + "100.0" : 3.1000338195908244 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9618375938425103, + 2.9622303678909954, + 2.952864507083825 + ], + [ + 3.0992826840148697, + 3.1000338195908244, + 3.092646359307359 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.719699264036118, + "scoreError" : 0.17781555270053628, + "scoreConfidence" : [ + 2.541883711335582, + 2.8975148167366545 + ], + "scorePercentiles" : { + "0.0" : 2.6578408700504914, + "50.0" : 2.7206783482821892, + "90.0" : 2.7812192716907673, + "95.0" : 2.7812192716907673, + "99.0" : 2.7812192716907673, + "99.9" : 2.7812192716907673, + "99.99" : 2.7812192716907673, + "99.999" : 2.7812192716907673, + "99.9999" : 2.7812192716907673, + "100.0" : 2.7812192716907673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7812192716907673, + 2.776403994447529, + 2.7748740327413985 + ], + [ + 2.6664826638229804, + 2.6613747514635446, + 2.6578408700504914 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17798650905692645, + "scoreError" : 0.002330358843276353, + "scoreConfidence" : [ + 0.1756561502136501, + 0.1803168679002028 + ], + "scorePercentiles" : { + "0.0" : 0.1770504662641857, + "50.0" : 0.17796050225724158, + "90.0" : 0.17905542981199643, + "95.0" : 0.17905542981199643, + "99.0" : 0.17905542981199643, + "99.9" : 0.17905542981199643, + "99.99" : 0.17905542981199643, + "99.999" : 0.17905542981199643, + "99.9999" : 0.17905542981199643, + "100.0" : 0.17905542981199643 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17747519282304294, + 0.1770504662641857, + 0.17725376166758247 + ], + [ + 0.178638392083311, + 0.17905542981199643, + 0.1784458116914402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3321164150319755, + "scoreError" : 0.034066562891181866, + "scoreConfidence" : [ + 0.2980498521407936, + 0.36618297792315735 + ], + "scorePercentiles" : { + "0.0" : 0.3206518963029467, + "50.0" : 0.33216007612172277, + "90.0" : 0.34344363599835154, + "95.0" : 0.34344363599835154, + "99.0" : 0.34344363599835154, + "99.9" : 0.34344363599835154, + "99.99" : 0.34344363599835154, + "99.999" : 0.34344363599835154, + "99.9999" : 0.34344363599835154, + "100.0" : 0.34344363599835154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3206518963029467, + 0.320868837515241, + 0.3215761660556949 + ], + [ + 0.34344363599835154, + 0.34274398618775065, + 0.34341396813186814 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14412094691175026, + "scoreError" : 0.007124005926364263, + "scoreConfidence" : [ + 0.136996940985386, + 0.1512449528381145 + ], + "scorePercentiles" : { + "0.0" : 0.14162737747312665, + "50.0" : 0.14417933512641584, + "90.0" : 0.1467884951781232, + "95.0" : 0.1467884951781232, + "99.0" : 0.1467884951781232, + "99.9" : 0.1467884951781232, + "99.99" : 0.1467884951781232, + "99.999" : 0.1467884951781232, + "99.9999" : 0.1467884951781232, + "100.0" : 0.1467884951781232 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14211552690892038, + 0.14162737747312665, + 0.14169861664352312 + ], + [ + 0.14625252192289692, + 0.1462431433439113, + 0.1467884951781232 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4074762850985379, + "scoreError" : 0.013224964845848128, + "scoreConfidence" : [ + 0.3942513202526898, + 0.420701249944386 + ], + "scorePercentiles" : { + "0.0" : 0.4026791133123943, + "50.0" : 0.4072955228941181, + "90.0" : 0.4139871829359165, + "95.0" : 0.4139871829359165, + "99.0" : 0.4139871829359165, + "99.9" : 0.4139871829359165, + "99.99" : 0.4139871829359165, + "99.999" : 0.4139871829359165, + "99.9999" : 0.4139871829359165, + "100.0" : 0.4139871829359165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4107859019470917, + 0.4139871829359165, + 0.40985034524590164 + ], + [ + 0.40474070054233446, + 0.4028144666075888, + 0.4026791133123943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.157342276758176, + "scoreError" : 0.001745010919274208, + "scoreConfidence" : [ + 0.1555972658389018, + 0.1590872876774502 + ], + "scorePercentiles" : { + "0.0" : 0.15665487754558557, + "50.0" : 0.15738705791749386, + "90.0" : 0.15809931430920274, + "95.0" : 0.15809931430920274, + "99.0" : 0.15809931430920274, + "99.9" : 0.15809931430920274, + "99.99" : 0.15809931430920274, + "99.999" : 0.15809931430920274, + "99.9999" : 0.15809931430920274, + "100.0" : 0.15809931430920274 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1578608358458697, + 0.15809931430920274, + 0.15766840636332102 + ], + [ + 0.1571057094716667, + 0.1566645170134102, + 0.15665487754558557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047108931074722166, + "scoreError" : 0.0025784569792767853, + "scoreConfidence" : [ + 0.04453047409544538, + 0.04968738805399895 + ], + "scorePercentiles" : { + "0.0" : 0.04625512065496427, + "50.0" : 0.047090830759458496, + "90.0" : 0.048037058839635695, + "95.0" : 0.048037058839635695, + "99.0" : 0.048037058839635695, + "99.9" : 0.048037058839635695, + "99.99" : 0.048037058839635695, + "99.999" : 0.048037058839635695, + "99.9999" : 0.048037058839635695, + "100.0" : 0.048037058839635695 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047901275605562024, + 0.047902888206017465, + 0.048037058839635695 + ], + [ + 0.04628038591335496, + 0.046276857228798575, + 0.04625512065496427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8735155.287903985, + "scoreError" : 545987.7141178759, + "scoreConfidence" : [ + 8189167.573786109, + 9281143.00202186 + ], + "scorePercentiles" : { + "0.0" : 8536880.263651878, + "50.0" : 8738094.22370287, + "90.0" : 8919706.523172906, + "95.0" : 8919706.523172906, + "99.0" : 8919706.523172906, + "99.9" : 8919706.523172906, + "99.99" : 8919706.523172906, + "99.999" : 8919706.523172906, + "99.9999" : 8919706.523172906, + "100.0" : 8919706.523172906 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8567793.869863013, + 8568606.323630137, + 8536880.263651878 + ], + [ + 8919706.523172906, + 8907582.123775601, + 8910362.623330366 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-10-27T00:14:29Z-fce33a1fb9a54b8513f5a5e4a31c825f2a9eaff4-jdk17.json b/performance-results/2025-10-27T00:14:29Z-fce33a1fb9a54b8513f5a5e4a31c825f2a9eaff4-jdk17.json new file mode 100644 index 0000000000..63fd127812 --- /dev/null +++ b/performance-results/2025-10-27T00:14:29Z-fce33a1fb9a54b8513f5a5e4a31c825f2a9eaff4-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.318116433132777, + "scoreError" : 0.052895869285582146, + "scoreConfidence" : [ + 3.265220563847195, + 3.371012302418359 + ], + "scorePercentiles" : { + "0.0" : 3.310923570794055, + "50.0" : 3.3158300804974, + "90.0" : 3.3298820007422534, + "95.0" : 3.3298820007422534, + "99.0" : 3.3298820007422534, + "99.9" : 3.3298820007422534, + "99.99" : 3.3298820007422534, + "99.999" : 3.3298820007422534, + "99.9999" : 3.3298820007422534, + "100.0" : 3.3298820007422534 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.316275113169961, + 3.315385047824839 + ], + [ + 3.310923570794055, + 3.3298820007422534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6719676834936277, + "scoreError" : 0.027662077333330256, + "scoreConfidence" : [ + 1.6443056061602974, + 1.699629760826958 + ], + "scorePercentiles" : { + "0.0" : 1.6678421526590803, + "50.0" : 1.6710409905704129, + "90.0" : 1.6779466001746044, + "95.0" : 1.6779466001746044, + "99.0" : 1.6779466001746044, + "99.9" : 1.6779466001746044, + "99.99" : 1.6779466001746044, + "99.999" : 1.6779466001746044, + "99.9999" : 1.6779466001746044, + "100.0" : 1.6779466001746044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.671535541448086, + 1.6779466001746044 + ], + [ + 1.6678421526590803, + 1.6705464396927399 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8421445491293048, + "scoreError" : 0.020733550046580385, + "scoreConfidence" : [ + 0.8214109990827244, + 0.8628780991758852 + ], + "scorePercentiles" : { + "0.0" : 0.8375691044823509, + "50.0" : 0.842966617850788, + "90.0" : 0.8450758563332925, + "95.0" : 0.8450758563332925, + "99.0" : 0.8450758563332925, + "99.9" : 0.8450758563332925, + "99.99" : 0.8450758563332925, + "99.999" : 0.8450758563332925, + "99.9999" : 0.8450758563332925, + "100.0" : 0.8450758563332925 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8430182595447957, + 0.8450758563332925 + ], + [ + 0.8429149761567801, + 0.8375691044823509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.226728646999888, + "scoreError" : 0.2437865854836192, + "scoreConfidence" : [ + 15.982942061516269, + 16.470515232483507 + ], + "scorePercentiles" : { + "0.0" : 16.127192620663525, + "50.0" : 16.22949487531681, + "90.0" : 16.31126535266114, + "95.0" : 16.31126535266114, + "99.0" : 16.31126535266114, + "99.9" : 16.31126535266114, + "99.99" : 16.31126535266114, + "99.999" : 16.31126535266114, + "99.9999" : 16.31126535266114, + "100.0" : 16.31126535266114 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.295716721778795, + 16.308615320072697, + 16.31126535266114 + ], + [ + 16.127192620663525, + 16.16327302885482, + 16.154308837968365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2767.979382412242, + "scoreError" : 60.16236489409217, + "scoreConfidence" : [ + 2707.81701751815, + 2828.1417473063343 + ], + "scorePercentiles" : { + "0.0" : 2742.2462164985386, + "50.0" : 2768.0503583014215, + "90.0" : 2802.0461603983485, + "95.0" : 2802.0461603983485, + "99.0" : 2802.0461603983485, + "99.9" : 2802.0461603983485, + "99.99" : 2802.0461603983485, + "99.999" : 2802.0461603983485, + "99.9999" : 2802.0461603983485, + "100.0" : 2802.0461603983485 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2765.762907774518, + 2778.4443145465443, + 2770.3378088283253 + ], + [ + 2802.0461603983485, + 2742.2462164985386, + 2749.038886427176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73793.60221919957, + "scoreError" : 1694.9332203010924, + "scoreConfidence" : [ + 72098.66899889849, + 75488.53543950066 + ], + "scorePercentiles" : { + "0.0" : 73137.66363424751, + "50.0" : 73804.1715184138, + "90.0" : 74520.04589189493, + "95.0" : 74520.04589189493, + "99.0" : 74520.04589189493, + "99.9" : 74520.04589189493, + "99.99" : 74520.04589189493, + "99.999" : 74520.04589189493, + "99.9999" : 74520.04589189493, + "100.0" : 74520.04589189493 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73137.66363424751, + 73486.83198559505, + 73172.07737631541 + ], + [ + 74323.48337591188, + 74520.04589189493, + 74121.51105123255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 355.3533822489787, + "scoreError" : 11.140909107564008, + "scoreConfidence" : [ + 344.21247314141465, + 366.4942913565427 + ], + "scorePercentiles" : { + "0.0" : 350.0014823177603, + "50.0" : 354.1664246076142, + "90.0" : 360.81107179716184, + "95.0" : 360.81107179716184, + "99.0" : 360.81107179716184, + "99.9" : 360.81107179716184, + "99.99" : 360.81107179716184, + "99.999" : 360.81107179716184, + "99.9999" : 360.81107179716184, + "100.0" : 360.81107179716184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.81107179716184, + 350.0014823177603, + 359.2234657881859 + ], + [ + 353.9103808668498, + 353.75142437553586, + 354.4224683483787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.13338262280293, + "scoreError" : 2.3561485847231736, + "scoreConfidence" : [ + 109.77723403807975, + 114.4895312075261 + ], + "scorePercentiles" : { + "0.0" : 111.13231377519854, + "50.0" : 112.11209574524487, + "90.0" : 113.1994518999635, + "95.0" : 113.1994518999635, + "99.0" : 113.1994518999635, + "99.9" : 113.1994518999635, + "99.99" : 113.1994518999635, + "99.999" : 113.1994518999635, + "99.9999" : 113.1994518999635, + "100.0" : 113.1994518999635 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.60128641897656, + 111.13231377519854, + 111.463291448691 + ], + [ + 112.62290507151319, + 112.78104712247486, + 113.1994518999635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06167465778337048, + "scoreError" : 0.00296056466422145, + "scoreConfidence" : [ + 0.05871409311914903, + 0.06463522244759193 + ], + "scorePercentiles" : { + "0.0" : 0.06112820517381551, + "50.0" : 0.06120152701463895, + "90.0" : 0.06380782261810572, + "95.0" : 0.06380782261810572, + "99.0" : 0.06380782261810572, + "99.9" : 0.06380782261810572, + "99.99" : 0.06380782261810572, + "99.999" : 0.06380782261810572, + "99.9999" : 0.06380782261810572, + "100.0" : 0.06380782261810572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06112820517381551, + 0.0611661318107308, + 0.061217291561323495 + ], + [ + 0.06154273306829301, + 0.0611857624679544, + 0.06380782261810572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9395152765222185E-4, + "scoreError" : 3.842493331368884E-5, + "scoreConfidence" : [ + 3.5552659433853303E-4, + 4.323764609659107E-4 + ], + "scorePercentiles" : { + "0.0" : 3.791762182405829E-4, + "50.0" : 3.916302999459161E-4, + "90.0" : 4.102772299666478E-4, + "95.0" : 4.102772299666478E-4, + "99.0" : 4.102772299666478E-4, + "99.9" : 4.102772299666478E-4, + "99.99" : 4.102772299666478E-4, + "99.999" : 4.102772299666478E-4, + "99.9999" : 4.102772299666478E-4, + "100.0" : 4.102772299666478E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.998012872042821E-4, + 4.102772299666478E-4, + 4.0784452438432603E-4 + ], + [ + 3.8345931268755006E-4, + 3.8315059342994257E-4, + 3.791762182405829E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.5312022982651055, + "scoreError" : 0.3657819194495139, + "scoreConfidence" : [ + 2.1654203788155915, + 2.8969842177146194 + ], + "scorePercentiles" : { + "0.0" : 2.2720759352567015, + "50.0" : 2.484396389269522, + "90.0" : 2.81751212106385, + "95.0" : 2.8190098441375424, + "99.0" : 2.8190098441375424, + "99.9" : 2.8190098441375424, + "99.99" : 2.8190098441375424, + "99.999" : 2.8190098441375424, + "99.9999" : 2.8190098441375424, + "100.0" : 2.8190098441375424 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7978571104277328, + 2.8190098441375424, + 2.736778631463748, + 2.804032613400617, + 2.6052459283854166 + ], + [ + 2.363546850153628, + 2.310162743127743, + 2.326249732263317, + 2.2770635940346082, + 2.2720759352567015 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01354327057280267, + "scoreError" : 3.2678221540545873E-4, + "scoreConfidence" : [ + 0.013216488357397211, + 0.013870052788208128 + ], + "scorePercentiles" : { + "0.0" : 0.013425996720127382, + "50.0" : 0.013550395275020756, + "90.0" : 0.013654580711803541, + "95.0" : 0.013654580711803541, + "99.0" : 0.013654580711803541, + "99.9" : 0.013654580711803541, + "99.99" : 0.013654580711803541, + "99.999" : 0.013654580711803541, + "99.9999" : 0.013654580711803541, + "100.0" : 0.013654580711803541 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013425996720127382, + 0.0134292365893913, + 0.013456935597385086 + ], + [ + 0.013654580711803541, + 0.013643854952656425, + 0.013649018865452282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.013825197687308, + "scoreError" : 0.0885718886545728, + "scoreConfidence" : [ + 0.9252533090327353, + 1.1023970863418808 + ], + "scorePercentiles" : { + "0.0" : 0.9840148028141297, + "50.0" : 1.0125766433496355, + "90.0" : 1.0488805943366544, + "95.0" : 1.0488805943366544, + "99.0" : 1.0488805943366544, + "99.9" : 1.0488805943366544, + "99.99" : 1.0488805943366544, + "99.999" : 1.0488805943366544, + "99.9999" : 1.0488805943366544, + "100.0" : 1.0488805943366544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9840148028141297, + 0.9862010858889656, + 0.9853175700492611 + ], + [ + 1.0488805943366544, + 1.0389522008103054, + 1.0395849322245323 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010247405796104744, + "scoreError" : 8.816517569246826E-4, + "scoreConfidence" : [ + 0.00936575403918006, + 0.011129057553029427 + ], + "scorePercentiles" : { + "0.0" : 0.009958100972482509, + "50.0" : 0.010244378657187907, + "90.0" : 0.010546960365589992, + "95.0" : 0.010546960365589992, + "99.0" : 0.010546960365589992, + "99.9" : 0.010546960365589992, + "99.99" : 0.010546960365589992, + "99.999" : 0.010546960365589992, + "99.9999" : 0.010546960365589992, + "100.0" : 0.010546960365589992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.009961742210613767, + 0.009958100972482509, + 0.009961556365078037 + ], + [ + 0.010529059759102108, + 0.010546960365589992, + 0.010527015103762045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1214476061491485, + "scoreError" : 0.11936972671723725, + "scoreConfidence" : [ + 3.002077879431911, + 3.240817332866386 + ], + "scorePercentiles" : { + "0.0" : 3.055012532070861, + "50.0" : 3.1208049446080235, + "90.0" : 3.168293920835972, + "95.0" : 3.168293920835972, + "99.0" : 3.168293920835972, + "99.9" : 3.168293920835972, + "99.99" : 3.168293920835972, + "99.999" : 3.168293920835972, + "99.9999" : 3.168293920835972, + "100.0" : 3.168293920835972 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.168293920835972, + 3.0986753605947954, + 3.055012532070861 + ], + [ + 3.1650939341772153, + 3.124529297938788, + 3.117080591277259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.774418060674177, + "scoreError" : 0.2881676951223225, + "scoreConfidence" : [ + 2.4862503655518546, + 3.0625857557964995 + ], + "scorePercentiles" : { + "0.0" : 2.6759237512038525, + "50.0" : 2.766151644867291, + "90.0" : 2.8804170008640555, + "95.0" : 2.8804170008640555, + "99.0" : 2.8804170008640555, + "99.9" : 2.8804170008640555, + "99.99" : 2.8804170008640555, + "99.999" : 2.8804170008640555, + "99.9999" : 2.8804170008640555, + "100.0" : 2.8804170008640555 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8804170008640555, + 2.8754172492811962, + 2.846986312553373 + ], + [ + 2.685316977181208, + 2.682447072961373, + 2.6759237512038525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18775865622520857, + "scoreError" : 0.02346067632710101, + "scoreConfidence" : [ + 0.16429797989810757, + 0.21121933255230957 + ], + "scorePercentiles" : { + "0.0" : 0.1799133703830308, + "50.0" : 0.1876751842039233, + "90.0" : 0.1957628340348061, + "95.0" : 0.1957628340348061, + "99.0" : 0.1957628340348061, + "99.9" : 0.1957628340348061, + "99.99" : 0.1957628340348061, + "99.999" : 0.1957628340348061, + "99.9999" : 0.1957628340348061, + "100.0" : 0.1957628340348061 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1801090709976046, + 0.18035431425840426, + 0.1799133703830308 + ], + [ + 0.19499605414944232, + 0.19541629352796341, + 0.1957628340348061 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32882556728471046, + "scoreError" : 0.012768660420702396, + "scoreConfidence" : [ + 0.31605690686400806, + 0.34159422770541287 + ], + "scorePercentiles" : { + "0.0" : 0.322700623297838, + "50.0" : 0.3300341939203026, + "90.0" : 0.33391614845732603, + "95.0" : 0.33391614845732603, + "99.0" : 0.33391614845732603, + "99.9" : 0.33391614845732603, + "99.99" : 0.33391614845732603, + "99.999" : 0.33391614845732603, + "99.9999" : 0.33391614845732603, + "100.0" : 0.33391614845732603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3281901492238522, + 0.32428959384525585, + 0.322700623297838 + ], + [ + 0.33391614845732603, + 0.331878238616753, + 0.33197865026723766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1477876931733991, + "scoreError" : 0.009745291084649884, + "scoreConfidence" : [ + 0.1380424020887492, + 0.15753298425804899 + ], + "scorePercentiles" : { + "0.0" : 0.14354601085193425, + "50.0" : 0.1489091529610974, + "90.0" : 0.15101524845967987, + "95.0" : 0.15101524845967987, + "99.0" : 0.15101524845967987, + "99.9" : 0.15101524845967987, + "99.99" : 0.15101524845967987, + "99.999" : 0.15101524845967987, + "99.9999" : 0.15101524845967987, + "100.0" : 0.15101524845967987 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15043355863770383, + 0.15101524845967987, + 0.15064175519703543 + ], + [ + 0.14370483860955036, + 0.14354601085193425, + 0.14738474728449102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3986982069089043, + "scoreError" : 0.0391469628991468, + "scoreConfidence" : [ + 0.35955124400975746, + 0.4378451698080511 + ], + "scorePercentiles" : { + "0.0" : 0.38572116111239685, + "50.0" : 0.39854315509724103, + "90.0" : 0.4122581619738632, + "95.0" : 0.4122581619738632, + "99.0" : 0.4122581619738632, + "99.9" : 0.4122581619738632, + "99.99" : 0.4122581619738632, + "99.999" : 0.4122581619738632, + "99.9999" : 0.4122581619738632, + "100.0" : 0.4122581619738632 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4122581619738632, + 0.4109925693736643, + 0.41105373093838626 + ], + [ + 0.3860937408208177, + 0.3860698772342972, + 0.38572116111239685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1591783976311689, + "scoreError" : 0.004138488725661054, + "scoreConfidence" : [ + 0.15503990890550784, + 0.16331688635682995 + ], + "scorePercentiles" : { + "0.0" : 0.15774553940436004, + "50.0" : 0.15914387254308793, + "90.0" : 0.16071820844717302, + "95.0" : 0.16071820844717302, + "99.0" : 0.16071820844717302, + "99.9" : 0.16071820844717302, + "99.99" : 0.16071820844717302, + "99.999" : 0.16071820844717302, + "99.9999" : 0.16071820844717302, + "100.0" : 0.16071820844717302 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1603960745986174, + 0.16071820844717302, + 0.16044922820331803 + ], + [ + 0.15786966464598626, + 0.15789167048755842, + 0.15774553940436004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04602919991622715, + "scoreError" : 3.298953382579348E-4, + "scoreConfidence" : [ + 0.04569930457796922, + 0.04635909525448508 + ], + "scorePercentiles" : { + "0.0" : 0.04590731049331142, + "50.0" : 0.04603060817759103, + "90.0" : 0.046171805452824524, + "95.0" : 0.046171805452824524, + "99.0" : 0.046171805452824524, + "99.9" : 0.046171805452824524, + "99.99" : 0.046171805452824524, + "99.999" : 0.046171805452824524, + "99.9999" : 0.046171805452824524, + "100.0" : 0.046171805452824524 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046171805452824524, + 0.04612034924617322, + 0.04610980064276064 + ], + [ + 0.04590731049331142, + 0.04591451794987167, + 0.04595141571242142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8771636.614182353, + "scoreError" : 140641.71712423506, + "scoreConfidence" : [ + 8630994.897058118, + 8912278.331306588 + ], + "scorePercentiles" : { + "0.0" : 8703980.281984335, + "50.0" : 8777784.474397104, + "90.0" : 8834836.232332155, + "95.0" : 8834836.232332155, + "99.0" : 8834836.232332155, + "99.9" : 8834836.232332155, + "99.99" : 8834836.232332155, + "99.999" : 8834836.232332155, + "99.9999" : 8834836.232332155, + "100.0" : 8834836.232332155 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8834836.232332155, + 8703980.281984335, + 8811226.884581497 + ], + [ + 8785305.287093943, + 8770263.661700264, + 8724207.337401917 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-01T00:24:50Z-472823edc35c10c3dae982746566e5ac7d1620ce-jdk17.json b/performance-results/2025-11-01T00:24:50Z-472823edc35c10c3dae982746566e5ac7d1620ce-jdk17.json new file mode 100644 index 0000000000..0aeec95322 --- /dev/null +++ b/performance-results/2025-11-01T00:24:50Z-472823edc35c10c3dae982746566e5ac7d1620ce-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3332668156780283, + "scoreError" : 0.042580806435155674, + "scoreConfidence" : [ + 3.2906860092428727, + 3.375847622113184 + ], + "scorePercentiles" : { + "0.0" : 3.323757951961249, + "50.0" : 3.3353035341388573, + "90.0" : 3.338702242473151, + "95.0" : 3.338702242473151, + "99.0" : 3.338702242473151, + "99.9" : 3.338702242473151, + "99.99" : 3.338702242473151, + "99.999" : 3.338702242473151, + "99.9999" : 3.338702242473151, + "100.0" : 3.338702242473151 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.323757951961249, + 3.3343028233945744 + ], + [ + 3.3363042448831397, + 3.338702242473151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.68397499269957, + "scoreError" : 0.025181198641415173, + "scoreConfidence" : [ + 1.6587937940581547, + 1.7091561913409852 + ], + "scorePercentiles" : { + "0.0" : 1.679515374882242, + "50.0" : 1.6842585169310396, + "90.0" : 1.6878675620539585, + "95.0" : 1.6878675620539585, + "99.0" : 1.6878675620539585, + "99.9" : 1.6878675620539585, + "99.99" : 1.6878675620539585, + "99.999" : 1.6878675620539585, + "99.9999" : 1.6878675620539585, + "100.0" : 1.6878675620539585 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.679515374882242, + 1.6878675620539585 + ], + [ + 1.686533876335918, + 1.681983157526161 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8471424796689891, + "scoreError" : 0.016476646879735348, + "scoreConfidence" : [ + 0.8306658327892538, + 0.8636191265487245 + ], + "scorePercentiles" : { + "0.0" : 0.8454064384132701, + "50.0" : 0.8461410652649735, + "90.0" : 0.8508813497327395, + "95.0" : 0.8508813497327395, + "99.0" : 0.8508813497327395, + "99.9" : 0.8508813497327395, + "99.99" : 0.8508813497327395, + "99.999" : 0.8508813497327395, + "99.9999" : 0.8508813497327395, + "100.0" : 0.8508813497327395 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8466437947570158, + 0.845638335772931 + ], + [ + 0.8454064384132701, + 0.8508813497327395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.345039711573794, + "scoreError" : 0.136392089430829, + "scoreConfidence" : [ + 16.208647622142966, + 16.48143180100462 + ], + "scorePercentiles" : { + "0.0" : 16.278891192259856, + "50.0" : 16.35080675673555, + "90.0" : 16.39424258416064, + "95.0" : 16.39424258416064, + "99.0" : 16.39424258416064, + "99.9" : 16.39424258416064, + "99.99" : 16.39424258416064, + "99.999" : 16.39424258416064, + "99.9999" : 16.39424258416064, + "100.0" : 16.39424258416064 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.304165922720266, + 16.32680087178319, + 16.278891192259856 + ], + [ + 16.374812641687914, + 16.39424258416064, + 16.391325056830894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2838.419894846654, + "scoreError" : 62.64968987099645, + "scoreConfidence" : [ + 2775.7702049756576, + 2901.0695847176507 + ], + "scorePercentiles" : { + "0.0" : 2813.4609533014263, + "50.0" : 2838.782496957513, + "90.0" : 2862.8327887871246, + "95.0" : 2862.8327887871246, + "99.0" : 2862.8327887871246, + "99.9" : 2862.8327887871246, + "99.99" : 2862.8327887871246, + "99.999" : 2862.8327887871246, + "99.9999" : 2862.8327887871246, + "100.0" : 2862.8327887871246 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2819.6919321771506, + 2821.727975725238, + 2813.4609533014263 + ], + [ + 2856.9687008991946, + 2862.8327887871246, + 2855.837018189788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68681.17674779969, + "scoreError" : 10938.812142103745, + "scoreConfidence" : [ + 57742.36460569595, + 79619.98888990344 + ], + "scorePercentiles" : { + "0.0" : 63835.9496997512, + "50.0" : 69059.08291745286, + "90.0" : 72196.55567627141, + "95.0" : 72196.55567627141, + "99.0" : 72196.55567627141, + "99.9" : 72196.55567627141, + "99.99" : 72196.55567627141, + "99.999" : 72196.55567627141, + "99.9999" : 72196.55567627141, + "100.0" : 72196.55567627141 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72185.73562132826, + 72148.978604371, + 72196.55567627141 + ], + [ + 63835.9496997512, + 65969.18723053472, + 65750.65365454159 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.3073140667022, + "scoreError" : 15.899178106774404, + "scoreConfidence" : [ + 328.4081359599278, + 360.2064921734766 + ], + "scorePercentiles" : { + "0.0" : 333.14341798908714, + "50.0" : 346.31037055003674, + "90.0" : 347.94255858053504, + "95.0" : 347.94255858053504, + "99.0" : 347.94255858053504, + "99.9" : 347.94255858053504, + "99.99" : 347.94255858053504, + "99.999" : 347.94255858053504, + "99.9999" : 347.94255858053504, + "100.0" : 347.94255858053504 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 333.14341798908714, + 345.16232304727066, + 344.3335112994025 + ], + [ + 347.45841805280287, + 347.8036554311145, + 347.94255858053504 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.411176902201, + "scoreError" : 5.97825819033905, + "scoreConfidence" : [ + 109.43291871186196, + 121.38943509254005 + ], + "scorePercentiles" : { + "0.0" : 113.2650585336243, + "50.0" : 115.46814973560717, + "90.0" : 117.4515968462463, + "95.0" : 117.4515968462463, + "99.0" : 117.4515968462463, + "99.9" : 117.4515968462463, + "99.99" : 117.4515968462463, + "99.999" : 117.4515968462463, + "99.9999" : 117.4515968462463, + "100.0" : 117.4515968462463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.2650585336243, + 113.38999281154041, + 113.7633984581368 + ], + [ + 117.4241137505806, + 117.17290101307755, + 117.4515968462463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061465860645767485, + "scoreError" : 9.062290132979142E-4, + "scoreConfidence" : [ + 0.06055963163246957, + 0.0623720896590654 + ], + "scorePercentiles" : { + "0.0" : 0.06111634637738732, + "50.0" : 0.061464616156439646, + "90.0" : 0.061807388139312094, + "95.0" : 0.061807388139312094, + "99.0" : 0.061807388139312094, + "99.9" : 0.061807388139312094, + "99.99" : 0.061807388139312094, + "99.999" : 0.061807388139312094, + "99.9999" : 0.061807388139312094, + "100.0" : 0.061807388139312094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06174453941714003, + 0.061807388139312094, + 0.06172326182599249 + ], + [ + 0.0611976576278862, + 0.0612059704868868, + 0.06111634637738732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.763984642247905E-4, + "scoreError" : 2.3155070012137825E-5, + "scoreConfidence" : [ + 3.532433942126527E-4, + 3.995535342369283E-4 + ], + "scorePercentiles" : { + "0.0" : 3.686848264511805E-4, + "50.0" : 3.7632877443613717E-4, + "90.0" : 3.846354969359411E-4, + "95.0" : 3.846354969359411E-4, + "99.0" : 3.846354969359411E-4, + "99.9" : 3.846354969359411E-4, + "99.99" : 3.846354969359411E-4, + "99.999" : 3.846354969359411E-4, + "99.9999" : 3.846354969359411E-4, + "100.0" : 3.846354969359411E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8355957594942824E-4, + 3.8358600288437557E-4, + 3.846354969359411E-4 + ], + [ + 3.688269102049716E-4, + 3.686848264511805E-4, + 3.6909797292284605E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.24675389279762, + "scoreError" : 0.05109200128508905, + "scoreConfidence" : [ + 2.1956618915125308, + 2.297845894082709 + ], + "scorePercentiles" : { + "0.0" : 2.201299265903588, + "50.0" : 2.248579403682282, + "90.0" : 2.3022335259096915, + "95.0" : 2.304681170046083, + "99.0" : 2.304681170046083, + "99.9" : 2.304681170046083, + "99.99" : 2.304681170046083, + "99.999" : 2.304681170046083, + "99.9999" : 2.304681170046083, + "100.0" : 2.304681170046083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2802047286821705, + 2.250621548379838, + 2.2594129909624945, + 2.202413606254129, + 2.201299265903588 + ], + [ + 2.304681170046083, + 2.246537258984726, + 2.2719469770558836, + 2.221115097712636, + 2.22930628399465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013513792954655638, + "scoreError" : 1.9845516318258937E-4, + "scoreConfidence" : [ + 0.013315337791473049, + 0.013712248117838227 + ], + "scorePercentiles" : { + "0.0" : 0.01344380711867779, + "50.0" : 0.01351694006709887, + "90.0" : 0.013583441678450102, + "95.0" : 0.013583441678450102, + "99.0" : 0.013583441678450102, + "99.9" : 0.013583441678450102, + "99.99" : 0.013583441678450102, + "99.999" : 0.013583441678450102, + "99.9999" : 0.013583441678450102, + "100.0" : 0.013583441678450102 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013445930553818807, + 0.01344380711867779, + 0.01345847491642397 + ], + [ + 0.013575698242789381, + 0.013575405217773772, + 0.013583441678450102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9730092350198404, + "scoreError" : 0.009095101085314592, + "scoreConfidence" : [ + 0.9639141339345257, + 0.982104336105155 + ], + "scorePercentiles" : { + "0.0" : 0.969856518281447, + "50.0" : 0.9729823274658758, + "90.0" : 0.9761461142020498, + "95.0" : 0.9761461142020498, + "99.0" : 0.9761461142020498, + "99.9" : 0.9761461142020498, + "99.99" : 0.9761461142020498, + "99.999" : 0.9761461142020498, + "99.9999" : 0.9761461142020498, + "100.0" : 0.9761461142020498 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9700346527643064, + 0.969856518281447, + 0.9702710868341904 + ], + [ + 0.9761461142020498, + 0.9760534699394886, + 0.975693568097561 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010776690458907804, + "scoreError" : 5.493932674132044E-5, + "scoreConfidence" : [ + 0.010721751132166484, + 0.010831629785649124 + ], + "scorePercentiles" : { + "0.0" : 0.010758011244005241, + "50.0" : 0.01077492144316085, + "90.0" : 0.010803854073710753, + "95.0" : 0.010803854073710753, + "99.0" : 0.010803854073710753, + "99.9" : 0.010803854073710753, + "99.99" : 0.010803854073710753, + "99.999" : 0.010803854073710753, + "99.9999" : 0.010803854073710753, + "100.0" : 0.010803854073710753 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010758011244005241, + 0.010758450746833863, + 0.010762336185279652 + ], + [ + 0.010789983802575275, + 0.010787506701042048, + 0.010803854073710753 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1483333549644374, + "scoreError" : 0.1225780988414299, + "scoreConfidence" : [ + 3.0257552561230074, + 3.2709114538058675 + ], + "scorePercentiles" : { + "0.0" : 3.1056007492240845, + "50.0" : 3.148381890522329, + "90.0" : 3.1920120363752393, + "95.0" : 3.1920120363752393, + "99.0" : 3.1920120363752393, + "99.9" : 3.1920120363752393, + "99.99" : 3.1920120363752393, + "99.999" : 3.1920120363752393, + "99.9999" : 3.1920120363752393, + "100.0" : 3.1920120363752393 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1072272055900623, + 3.1128483883011824, + 3.1056007492240845 + ], + [ + 3.1883963575525813, + 3.1839153927434753, + 3.1920120363752393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8612607743489176, + "scoreError" : 0.02738533701871313, + "scoreConfidence" : [ + 2.8338754373302044, + 2.8886461113676307 + ], + "scorePercentiles" : { + "0.0" : 2.851486233818078, + "50.0" : 2.858391421964061, + "90.0" : 2.8764853692838654, + "95.0" : 2.8764853692838654, + "99.0" : 2.8764853692838654, + "99.9" : 2.8764853692838654, + "99.99" : 2.8764853692838654, + "99.999" : 2.8764853692838654, + "99.9999" : 2.8764853692838654, + "100.0" : 2.8764853692838654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8764853692838654, + 2.8588288742138364, + 2.853261363195435 + ], + [ + 2.851486233818078, + 2.869548835868006, + 2.8579539697142855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17398553107952974, + "scoreError" : 0.00781891509952943, + "scoreConfidence" : [ + 0.16616661598000032, + 0.18180444617905916 + ], + "scorePercentiles" : { + "0.0" : 0.17142901676437314, + "50.0" : 0.1738310700618565, + "90.0" : 0.17695231535548714, + "95.0" : 0.17695231535548714, + "99.0" : 0.17695231535548714, + "99.9" : 0.17695231535548714, + "99.99" : 0.17695231535548714, + "99.999" : 0.17695231535548714, + "99.9999" : 0.17695231535548714, + "100.0" : 0.17695231535548714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17695231535548714, + 0.17641606670077267, + 0.17619431659530982 + ], + [ + 0.17142901676437314, + 0.1714536475328327, + 0.17146782352840315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33206001508497934, + "scoreError" : 0.01770927126785185, + "scoreConfidence" : [ + 0.31435074381712746, + 0.3497692863528312 + ], + "scorePercentiles" : { + "0.0" : 0.32610508044740105, + "50.0" : 0.3320138531253267, + "90.0" : 0.3381192184879632, + "95.0" : 0.3381192184879632, + "99.0" : 0.3381192184879632, + "99.9" : 0.3381192184879632, + "99.99" : 0.3381192184879632, + "99.999" : 0.3381192184879632, + "99.9999" : 0.3381192184879632, + "100.0" : 0.3381192184879632 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3377350236744343, + 0.33761243543432023, + 0.3381192184879632 + ], + [ + 0.3264152708163332, + 0.326373061649424, + 0.32610508044740105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14570984196706474, + "scoreError" : 0.004519529055515116, + "scoreConfidence" : [ + 0.14119031291154963, + 0.15022937102257986 + ], + "scorePercentiles" : { + "0.0" : 0.14418146164825976, + "50.0" : 0.14572527442519906, + "90.0" : 0.14720866813872696, + "95.0" : 0.14720866813872696, + "99.0" : 0.14720866813872696, + "99.9" : 0.14720866813872696, + "99.99" : 0.14720866813872696, + "99.999" : 0.14720866813872696, + "99.9999" : 0.14720866813872696, + "100.0" : 0.14720866813872696 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1442916409113208, + 0.14424383793217846, + 0.14418146164825976 + ], + [ + 0.1471745352328251, + 0.14715890793907732, + 0.14720866813872696 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40789399450130376, + "scoreError" : 0.015523477131468538, + "scoreConfidence" : [ + 0.3923705173698352, + 0.4234174716327723 + ], + "scorePercentiles" : { + "0.0" : 0.40280403907036694, + "50.0" : 0.4078683683210663, + "90.0" : 0.4130463018049647, + "95.0" : 0.4130463018049647, + "99.0" : 0.4130463018049647, + "99.9" : 0.4130463018049647, + "99.99" : 0.4130463018049647, + "99.999" : 0.4130463018049647, + "99.9999" : 0.4130463018049647, + "100.0" : 0.4130463018049647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4028727405229022, + 0.4028456919513374, + 0.40280403907036694 + ], + [ + 0.41286399611923047, + 0.4130463018049647, + 0.4129311975390206 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15561644149062026, + "scoreError" : 0.0045629985716752084, + "scoreConfidence" : [ + 0.15105344291894504, + 0.16017944006229548 + ], + "scorePercentiles" : { + "0.0" : 0.15372625049191416, + "50.0" : 0.15569463015741808, + "90.0" : 0.15720485867668557, + "95.0" : 0.15720485867668557, + "99.0" : 0.15720485867668557, + "99.9" : 0.15720485867668557, + "99.99" : 0.15720485867668557, + "99.999" : 0.15720485867668557, + "99.9999" : 0.15720485867668557, + "100.0" : 0.15720485867668557 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.154253806540182, + 0.15372625049191416, + 0.1544698855404007 + ], + [ + 0.1569193747744355, + 0.15720485867668557, + 0.1571244729201037 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046992378970760106, + "scoreError" : 0.0034973328879974383, + "scoreConfidence" : [ + 0.04349504608276267, + 0.050489711858757544 + ], + "scorePercentiles" : { + "0.0" : 0.04582895578031768, + "50.0" : 0.04698664696846963, + "90.0" : 0.04815230945169662, + "95.0" : 0.04815230945169662, + "99.0" : 0.04815230945169662, + "99.9" : 0.04815230945169662, + "99.99" : 0.04815230945169662, + "99.999" : 0.04815230945169662, + "99.9999" : 0.04815230945169662, + "100.0" : 0.04815230945169662 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04813857737705549, + 0.04815230945169662, + 0.04810127373519707 + ], + [ + 0.04587202020174219, + 0.045861137278551546, + 0.04582895578031768 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8661823.956667257, + "scoreError" : 407197.30272051884, + "scoreConfidence" : [ + 8254626.653946739, + 9069021.259387776 + ], + "scorePercentiles" : { + "0.0" : 8518651.694207836, + "50.0" : 8660609.716732962, + "90.0" : 8804014.860915493, + "95.0" : 8804014.860915493, + "99.0" : 8804014.860915493, + "99.9" : 8804014.860915493, + "99.99" : 8804014.860915493, + "99.999" : 8804014.860915493, + "99.9999" : 8804014.860915493, + "100.0" : 8804014.860915493 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8799311.872471416, + 8804014.860915493, + 8778573.825438596 + ], + [ + 8542645.608027328, + 8527745.87894288, + 8518651.694207836 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-01T00:25:16Z-472823edc35c10c3dae982746566e5ac7d1620ce-jdk17.json b/performance-results/2025-11-01T00:25:16Z-472823edc35c10c3dae982746566e5ac7d1620ce-jdk17.json new file mode 100644 index 0000000000..904cd44ddf --- /dev/null +++ b/performance-results/2025-11-01T00:25:16Z-472823edc35c10c3dae982746566e5ac7d1620ce-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.339898881721718, + "scoreError" : 0.08348715839408095, + "scoreConfidence" : [ + 3.2564117233276373, + 3.423386040115799 + ], + "scorePercentiles" : { + "0.0" : 3.321382722492788, + "50.0" : 3.3439306512341336, + "90.0" : 3.350351501925818, + "95.0" : 3.350351501925818, + "99.0" : 3.350351501925818, + "99.9" : 3.350351501925818, + "99.99" : 3.350351501925818, + "99.999" : 3.350351501925818, + "99.9999" : 3.350351501925818, + "100.0" : 3.350351501925818 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3467716485016026, + 3.350351501925818 + ], + [ + 3.321382722492788, + 3.341089653966664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.689104011794499, + "scoreError" : 0.012970331054300923, + "scoreConfidence" : [ + 1.676133680740198, + 1.7020743428488 + ], + "scorePercentiles" : { + "0.0" : 1.68705241610597, + "50.0" : 1.6888460408196164, + "90.0" : 1.6916715494327943, + "95.0" : 1.6916715494327943, + "99.0" : 1.6916715494327943, + "99.9" : 1.6916715494327943, + "99.99" : 1.6916715494327943, + "99.999" : 1.6916715494327943, + "99.9999" : 1.6916715494327943, + "100.0" : 1.6916715494327943 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.68705241610597, + 1.688087147225704 + ], + [ + 1.6916715494327943, + 1.6896049344135289 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8506994510579455, + "scoreError" : 0.02031016368849518, + "scoreConfidence" : [ + 0.8303892873694504, + 0.8710096147464407 + ], + "scorePercentiles" : { + "0.0" : 0.8468664538092489, + "50.0" : 0.8510241503156757, + "90.0" : 0.8538830497911821, + "95.0" : 0.8538830497911821, + "99.0" : 0.8538830497911821, + "99.9" : 0.8538830497911821, + "99.99" : 0.8538830497911821, + "99.999" : 0.8538830497911821, + "99.9999" : 0.8538830497911821, + "100.0" : 0.8538830497911821 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8525403465498131, + 0.8538830497911821 + ], + [ + 0.8468664538092489, + 0.8495079540815382 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.264091804745693, + "scoreError" : 0.2657622742204209, + "scoreConfidence" : [ + 15.998329530525272, + 16.529854078966114 + ], + "scorePercentiles" : { + "0.0" : 16.17018400191614, + "50.0" : 16.23181068116692, + "90.0" : 16.42485104853266, + "95.0" : 16.42485104853266, + "99.0" : 16.42485104853266, + "99.9" : 16.42485104853266, + "99.99" : 16.42485104853266, + "99.999" : 16.42485104853266, + "99.9999" : 16.42485104853266, + "100.0" : 16.42485104853266 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.42485104853266, + 16.326053747600902, + 16.24171350429464 + ], + [ + 16.199840668090633, + 16.221907858039195, + 16.17018400191614 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2723.8352683019075, + "scoreError" : 339.89188458320183, + "scoreConfidence" : [ + 2383.9433837187057, + 3063.7271528851093 + ], + "scorePercentiles" : { + "0.0" : 2613.1500228630425, + "50.0" : 2721.84105788757, + "90.0" : 2836.640247136588, + "95.0" : 2836.640247136588, + "99.0" : 2836.640247136588, + "99.9" : 2836.640247136588, + "99.99" : 2836.640247136588, + "99.999" : 2836.640247136588, + "99.9999" : 2836.640247136588, + "100.0" : 2836.640247136588 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2613.1500228630425, + 2613.2283953037027, + 2613.238579286954 + ], + [ + 2836.3108287329715, + 2836.640247136588, + 2830.4435364881865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72721.90090956341, + "scoreError" : 7482.016668066584, + "scoreConfidence" : [ + 65239.884241496824, + 80203.91757763 + ], + "scorePercentiles" : { + "0.0" : 70038.52796328581, + "50.0" : 72745.38932586942, + "90.0" : 75262.31931483952, + "95.0" : 75262.31931483952, + "99.0" : 75262.31931483952, + "99.9" : 75262.31931483952, + "99.99" : 75262.31931483952, + "99.999" : 75262.31931483952, + "99.9999" : 75262.31931483952, + "100.0" : 75262.31931483952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75060.14732646983, + 75138.35272163976, + 75262.31931483952 + ], + [ + 70430.631325269, + 70401.42680587654, + 70038.52796328581 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.847648883529, + "scoreError" : 21.72366914330137, + "scoreConfidence" : [ + 340.12397974022764, + 383.5713180268304 + ], + "scorePercentiles" : { + "0.0" : 354.701776728862, + "50.0" : 360.99409706732325, + "90.0" : 369.8835097424036, + "95.0" : 369.8835097424036, + "99.0" : 369.8835097424036, + "99.9" : 369.8835097424036, + "99.99" : 369.8835097424036, + "99.999" : 369.8835097424036, + "99.9999" : 369.8835097424036, + "100.0" : 369.8835097424036 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 366.9436563519826, + 369.8835097424036, + 369.7343728882811 + ], + [ + 354.7780398069808, + 354.701776728862, + 355.0445377826639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.80510095070849, + "scoreError" : 5.090612574340337, + "scoreConfidence" : [ + 110.71448837636815, + 120.89571352504883 + ], + "scorePercentiles" : { + "0.0" : 113.8040783206789, + "50.0" : 115.97103446413846, + "90.0" : 117.52416186988886, + "95.0" : 117.52416186988886, + "99.0" : 117.52416186988886, + "99.9" : 117.52416186988886, + "99.99" : 117.52416186988886, + "99.999" : 117.52416186988886, + "99.9999" : 117.52416186988886, + "100.0" : 117.52416186988886 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.52416186988886, + 117.41879013533762, + 117.401387084779 + ], + [ + 113.8040783206789, + 114.14150645006876, + 114.54068184349791 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06134106325257765, + "scoreError" : 0.0026637661337922357, + "scoreConfidence" : [ + 0.058677297118785415, + 0.06400482938636988 + ], + "scorePercentiles" : { + "0.0" : 0.060407896371961534, + "50.0" : 0.06129826636624154, + "90.0" : 0.06236315404763241, + "95.0" : 0.06236315404763241, + "99.0" : 0.06236315404763241, + "99.9" : 0.06236315404763241, + "99.99" : 0.06236315404763241, + "99.999" : 0.06236315404763241, + "99.9999" : 0.06236315404763241, + "100.0" : 0.06236315404763241 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060514218731278706, + 0.060407896371961534, + 0.06051381225870478 + ], + [ + 0.062082314001204376, + 0.06216498410468405, + 0.06236315404763241 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6394038693937365E-4, + "scoreError" : 3.811584900824561E-5, + "scoreConfidence" : [ + 3.2582453793112803E-4, + 4.0205623594761927E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5082607572869566E-4, + "50.0" : 3.638879025044674E-4, + "90.0" : 3.7707990114591326E-4, + "95.0" : 3.7707990114591326E-4, + "99.0" : 3.7707990114591326E-4, + "99.9" : 3.7707990114591326E-4, + "99.99" : 3.7707990114591326E-4, + "99.999" : 3.7707990114591326E-4, + "99.9999" : 3.7707990114591326E-4, + "100.0" : 3.7707990114591326E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5082607572869566E-4, + 3.51915902447092E-4, + 3.518873139956693E-4 + ], + [ + 3.7607322575702884E-4, + 3.758599025618428E-4, + 3.7707990114591326E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.252708664061074, + "scoreError" : 0.06676230515802696, + "scoreConfidence" : [ + 2.185946358903047, + 2.319470969219101 + ], + "scorePercentiles" : { + "0.0" : 2.1836971737991266, + "50.0" : 2.2478640335803024, + "90.0" : 2.3086575862501584, + "95.0" : 2.3096542457274825, + "99.0" : 2.3096542457274825, + "99.9" : 2.3096542457274825, + "99.99" : 2.3096542457274825, + "99.999" : 2.3096542457274825, + "99.9999" : 2.3096542457274825, + "100.0" : 2.3096542457274825 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.250790472772277, + 2.2786407486899067, + 2.231847486275385, + 2.1877154251968505, + 2.1836971737991266 + ], + [ + 2.3096542457274825, + 2.2996876509542425, + 2.295942320707071, + 2.244173522100067, + 2.2449375943883276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013521038877782025, + "scoreError" : 2.3114037456095684E-4, + "scoreConfidence" : [ + 0.013289898503221069, + 0.013752179252342981 + ], + "scorePercentiles" : { + "0.0" : 0.013439145921414422, + "50.0" : 0.013514267078967088, + "90.0" : 0.013611825855558852, + "95.0" : 0.013611825855558852, + "99.0" : 0.013611825855558852, + "99.9" : 0.013611825855558852, + "99.99" : 0.013611825855558852, + "99.999" : 0.013611825855558852, + "99.9999" : 0.013611825855558852, + "100.0" : 0.013611825855558852 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013450893606146364, + 0.013449582548337117, + 0.013439145921414422 + ], + [ + 0.013577640551787812, + 0.013597144783447571, + 0.013611825855558852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9957757613052959, + "scoreError" : 0.09639728441147183, + "scoreConfidence" : [ + 0.899378476893824, + 1.0921730457167678 + ], + "scorePercentiles" : { + "0.0" : 0.9635195726948647, + "50.0" : 0.9959847180209875, + "90.0" : 1.0279118206393256, + "95.0" : 1.0279118206393256, + "99.0" : 1.0279118206393256, + "99.9" : 1.0279118206393256, + "99.99" : 1.0279118206393256, + "99.999" : 1.0279118206393256, + "99.9999" : 1.0279118206393256, + "100.0" : 1.0279118206393256 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0275207903010377, + 1.025991814096645, + 1.0279118206393256 + ], + [ + 0.9635195726948647, + 0.9659776219453299, + 0.9637329481545727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010717058836746873, + "scoreError" : 8.101079610502865E-4, + "scoreConfidence" : [ + 0.009906950875696586, + 0.01152716679779716 + ], + "scorePercentiles" : { + "0.0" : 0.010449105961247502, + "50.0" : 0.010712658068898099, + "90.0" : 0.010994778252743144, + "95.0" : 0.010994778252743144, + "99.0" : 0.010994778252743144, + "99.9" : 0.010994778252743144, + "99.99" : 0.010994778252743144, + "99.999" : 0.010994778252743144, + "99.9999" : 0.010994778252743144, + "100.0" : 0.010994778252743144 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010966512408294861, + 0.010980625330782964, + 0.010994778252743144 + ], + [ + 0.010449105961247502, + 0.010458803729501339, + 0.010452527337911428 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.032561986040744, + "scoreError" : 0.07008814334921284, + "scoreConfidence" : [ + 2.9624738426915314, + 3.1026501293899567 + ], + "scorePercentiles" : { + "0.0" : 3.0049176580528845, + "50.0" : 3.0348772528664614, + "90.0" : 3.056907945599022, + "95.0" : 3.056907945599022, + "99.0" : 3.056907945599022, + "99.9" : 3.056907945599022, + "99.99" : 3.056907945599022, + "99.999" : 3.056907945599022, + "99.9999" : 3.056907945599022, + "100.0" : 3.056907945599022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.052451710799268, + 3.0557418772144165, + 3.056907945599022 + ], + [ + 3.0080499296452197, + 3.0049176580528845, + 3.017302794933655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.6946373979157587, + "scoreError" : 0.04118820365745651, + "scoreConfidence" : [ + 2.653449194258302, + 2.7358256015732154 + ], + "scorePercentiles" : { + "0.0" : 2.669587230912974, + "50.0" : 2.7022787700621453, + "90.0" : 2.7055171760887204, + "95.0" : 2.7055171760887204, + "99.0" : 2.7055171760887204, + "99.9" : 2.7055171760887204, + "99.99" : 2.7055171760887204, + "99.999" : 2.7055171760887204, + "99.9999" : 2.7055171760887204, + "100.0" : 2.7055171760887204 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7055171760887204, + 2.7024976357741153, + 2.702059904350176 + ], + [ + 2.6837051212771668, + 2.669587230912974, + 2.704457319091401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17654081685676146, + "scoreError" : 0.004131968062082881, + "scoreConfidence" : [ + 0.17240884879467858, + 0.18067278491884434 + ], + "scorePercentiles" : { + "0.0" : 0.1751191878644602, + "50.0" : 0.17660002087603346, + "90.0" : 0.17790238559382338, + "95.0" : 0.17790238559382338, + "99.0" : 0.17790238559382338, + "99.9" : 0.17790238559382338, + "99.99" : 0.17790238559382338, + "99.999" : 0.17790238559382338, + "99.9999" : 0.17790238559382338, + "100.0" : 0.17790238559382338 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17786198553998292, + 0.1778877398118007, + 0.17790238559382338 + ], + [ + 0.17513554611841758, + 0.175338056212084, + 0.1751191878644602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32369955815859175, + "scoreError" : 0.006290086193241131, + "scoreConfidence" : [ + 0.31740947196535063, + 0.32998964435183287 + ], + "scorePercentiles" : { + "0.0" : 0.3213327693197519, + "50.0" : 0.3237605855857443, + "90.0" : 0.32583304398683655, + "95.0" : 0.32583304398683655, + "99.0" : 0.32583304398683655, + "99.9" : 0.32583304398683655, + "99.99" : 0.32583304398683655, + "99.999" : 0.32583304398683655, + "99.9999" : 0.32583304398683655, + "100.0" : 0.32583304398683655 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3257978606613455, + 0.32583304398683655, + 0.3255834198274459 + ], + [ + 0.321712503812128, + 0.32193775134404273, + 0.3213327693197519 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14362765804657898, + "scoreError" : 0.009171072219787045, + "scoreConfidence" : [ + 0.13445658582679193, + 0.15279873026636603 + ], + "scorePercentiles" : { + "0.0" : 0.14063578600157506, + "50.0" : 0.1436191319340258, + "90.0" : 0.14664151525771685, + "95.0" : 0.14664151525771685, + "99.0" : 0.14664151525771685, + "99.9" : 0.14664151525771685, + "99.99" : 0.14664151525771685, + "99.999" : 0.14664151525771685, + "99.9999" : 0.14664151525771685, + "100.0" : 0.14664151525771685 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14660925247031228, + 0.14664151525771685, + 0.14658869271474642 + ], + [ + 0.14063578600157506, + 0.1406495711533052, + 0.1406411306818182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4056662162235345, + "scoreError" : 0.006732867758196177, + "scoreConfidence" : [ + 0.3989333484653383, + 0.4123990839817307 + ], + "scorePercentiles" : { + "0.0" : 0.40316832023060795, + "50.0" : 0.40585907968151874, + "90.0" : 0.408018060750714, + "95.0" : 0.408018060750714, + "99.0" : 0.408018060750714, + "99.9" : 0.408018060750714, + "99.99" : 0.408018060750714, + "99.999" : 0.408018060750714, + "99.9999" : 0.408018060750714, + "100.0" : 0.408018060750714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4039929088228165, + 0.4033119683000605, + 0.40316832023060795 + ], + [ + 0.4077807886967868, + 0.40772525054022096, + 0.408018060750714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15635632073729863, + "scoreError" : 0.00492223042592804, + "scoreConfidence" : [ + 0.1514340903113706, + 0.16127855116322667 + ], + "scorePercentiles" : { + "0.0" : 0.15451648358287365, + "50.0" : 0.1563471294223619, + "90.0" : 0.1582164569819321, + "95.0" : 0.1582164569819321, + "99.0" : 0.1582164569819321, + "99.9" : 0.1582164569819321, + "99.99" : 0.1582164569819321, + "99.999" : 0.1582164569819321, + "99.9999" : 0.1582164569819321, + "100.0" : 0.1582164569819321 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15492956690473608, + 0.15451648358287365, + 0.1548484775398337 + ], + [ + 0.1582164569819321, + 0.1578622474744286, + 0.15776469193998768 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046613423181111446, + "scoreError" : 0.003349967544519245, + "scoreConfidence" : [ + 0.0432634556365922, + 0.04996339072563069 + ], + "scorePercentiles" : { + "0.0" : 0.04551597461607785, + "50.0" : 0.04661306857918751, + "90.0" : 0.04771895480595334, + "95.0" : 0.04771895480595334, + "99.0" : 0.04771895480595334, + "99.9" : 0.04771895480595334, + "99.99" : 0.04771895480595334, + "99.999" : 0.04771895480595334, + "99.9999" : 0.04771895480595334, + "100.0" : 0.04771895480595334 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04553507612902638, + 0.04551772982002567, + 0.04551597461607785 + ], + [ + 0.04771895480595334, + 0.047701742686236816, + 0.04769106102934865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8699319.35916636, + "scoreError" : 296388.9607061089, + "scoreConfidence" : [ + 8402930.39846025, + 8995708.319872469 + ], + "scorePercentiles" : { + "0.0" : 8594989.73281787, + "50.0" : 8694129.473043535, + "90.0" : 8817211.433480177, + "95.0" : 8817211.433480177, + "99.0" : 8817211.433480177, + "99.9" : 8817211.433480177, + "99.99" : 8817211.433480177, + "99.999" : 8817211.433480177, + "99.9999" : 8817211.433480177, + "100.0" : 8817211.433480177 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8594989.73281787, + 8622796.606034482, + 8595653.464776631 + ], + [ + 8817211.433480177, + 8799802.577836411, + 8765462.340052586 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-01T04:03:47Z-bb406240212aecc2dd8bd202451de0056f0a1cdc-jdk17.json b/performance-results/2025-11-01T04:03:47Z-bb406240212aecc2dd8bd202451de0056f0a1cdc-jdk17.json new file mode 100644 index 0000000000..b6f6710863 --- /dev/null +++ b/performance-results/2025-11-01T04:03:47Z-bb406240212aecc2dd8bd202451de0056f0a1cdc-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3570418103356245, + "scoreError" : 0.038696940427636134, + "scoreConfidence" : [ + 3.3183448699079885, + 3.3957387507632606 + ], + "scorePercentiles" : { + "0.0" : 3.349244441798918, + "50.0" : 3.35797427705121, + "90.0" : 3.36297424544116, + "95.0" : 3.36297424544116, + "99.0" : 3.36297424544116, + "99.9" : 3.36297424544116, + "99.99" : 3.36297424544116, + "99.999" : 3.36297424544116, + "99.9999" : 3.36297424544116, + "100.0" : 3.36297424544116 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3557549448857764, + 3.3601936092166436 + ], + [ + 3.349244441798918, + 3.36297424544116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6925357460922603, + "scoreError" : 0.061397580117481046, + "scoreConfidence" : [ + 1.6311381659747792, + 1.7539333262097414 + ], + "scorePercentiles" : { + "0.0" : 1.6826108556937471, + "50.0" : 1.6930218676324449, + "90.0" : 1.7014883934104041, + "95.0" : 1.7014883934104041, + "99.0" : 1.7014883934104041, + "99.9" : 1.7014883934104041, + "99.99" : 1.7014883934104041, + "99.999" : 1.7014883934104041, + "99.9999" : 1.7014883934104041, + "100.0" : 1.7014883934104041 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6826108556937471, + 1.686250582215458 + ], + [ + 1.699793153049432, + 1.7014883934104041 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8524943525901215, + "scoreError" : 0.013004060386869559, + "scoreConfidence" : [ + 0.839490292203252, + 0.865498412976991 + ], + "scorePercentiles" : { + "0.0" : 0.8495812087888298, + "50.0" : 0.8531459748609425, + "90.0" : 0.8541042518497716, + "95.0" : 0.8541042518497716, + "99.0" : 0.8541042518497716, + "99.9" : 0.8541042518497716, + "99.99" : 0.8541042518497716, + "99.999" : 0.8541042518497716, + "99.9999" : 0.8541042518497716, + "100.0" : 0.8541042518497716 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8495812087888298, + 0.8534789673630445 + ], + [ + 0.8528129823588403, + 0.8541042518497716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.47352455872438, + "scoreError" : 0.10407167849004768, + "scoreConfidence" : [ + 16.369452880234334, + 16.57759623721443 + ], + "scorePercentiles" : { + "0.0" : 16.438123713797026, + "50.0" : 16.459100757046457, + "90.0" : 16.524775076329004, + "95.0" : 16.524775076329004, + "99.0" : 16.524775076329004, + "99.9" : 16.524775076329004, + "99.99" : 16.524775076329004, + "99.999" : 16.524775076329004, + "99.9999" : 16.524775076329004, + "100.0" : 16.524775076329004 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.465686132737506, + 16.524775076329004, + 16.514806603357272 + ], + [ + 16.438123713797026, + 16.45251538135541, + 16.44524044477006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2685.495151131999, + "scoreError" : 34.79311086621372, + "scoreConfidence" : [ + 2650.7020402657854, + 2720.288261998213 + ], + "scorePercentiles" : { + "0.0" : 2673.3276757991703, + "50.0" : 2684.6217183675044, + "90.0" : 2697.9195934598306, + "95.0" : 2697.9195934598306, + "99.0" : 2697.9195934598306, + "99.9" : 2697.9195934598306, + "99.99" : 2697.9195934598306, + "99.999" : 2697.9195934598306, + "99.9999" : 2697.9195934598306, + "100.0" : 2697.9195934598306 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2674.736558661194, + 2674.6371937962654, + 2673.3276757991703 + ], + [ + 2694.506878073815, + 2697.8430070017203, + 2697.9195934598306 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73071.31538741344, + "scoreError" : 2080.131187609566, + "scoreConfidence" : [ + 70991.18419980387, + 75151.44657502302 + ], + "scorePercentiles" : { + "0.0" : 72368.11484735468, + "50.0" : 73093.01092677476, + "90.0" : 73756.7359767164, + "95.0" : 73756.7359767164, + "99.0" : 73756.7359767164, + "99.9" : 73756.7359767164, + "99.99" : 73756.7359767164, + "99.999" : 73756.7359767164, + "99.9999" : 73756.7359767164, + "100.0" : 73756.7359767164 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73756.7359767164, + 73745.46279841148, + 73741.82802371318 + ], + [ + 72368.11484735468, + 72444.19382983632, + 72371.5568484486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 361.95722779284165, + "scoreError" : 9.008018009123036, + "scoreConfidence" : [ + 352.94920978371863, + 370.96524580196467 + ], + "scorePercentiles" : { + "0.0" : 358.7918726106224, + "50.0" : 361.9333701667848, + "90.0" : 365.1806838407644, + "95.0" : 365.1806838407644, + "99.0" : 365.1806838407644, + "99.9" : 365.1806838407644, + "99.99" : 365.1806838407644, + "99.999" : 365.1806838407644, + "99.9999" : 365.1806838407644, + "100.0" : 365.1806838407644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 358.7918726106224, + 359.1037371439855, + 359.198512016495 + ], + [ + 364.80033282810797, + 364.6682283170747, + 365.1806838407644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 117.50678845690676, + "scoreError" : 1.7015780182126163, + "scoreConfidence" : [ + 115.80521043869415, + 119.20836647511938 + ], + "scorePercentiles" : { + "0.0" : 116.79993396921057, + "50.0" : 117.5774675546032, + "90.0" : 118.07291846481674, + "95.0" : 118.07291846481674, + "99.0" : 118.07291846481674, + "99.9" : 118.07291846481674, + "99.99" : 118.07291846481674, + "99.999" : 118.07291846481674, + "99.9999" : 118.07291846481674, + "100.0" : 118.07291846481674 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 118.07291846481674, + 118.06302649714945, + 118.01983696126939 + ], + [ + 117.135098147937, + 116.79993396921057, + 116.94991670105742 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06033017674644498, + "scoreError" : 4.4570332830211345E-4, + "scoreConfidence" : [ + 0.05988447341814287, + 0.060775880074747095 + ], + "scorePercentiles" : { + "0.0" : 0.060186168590584635, + "50.0" : 0.060293016065657304, + "90.0" : 0.06060401705371861, + "95.0" : 0.06060401705371861, + "99.0" : 0.06060401705371861, + "99.9" : 0.06060401705371861, + "99.99" : 0.06060401705371861, + "99.999" : 0.06060401705371861, + "99.9999" : 0.06060401705371861, + "100.0" : 0.06060401705371861 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06021771590211121, + 0.060186168590584635, + 0.06021598262189064 + ], + [ + 0.06038886008116138, + 0.06060401705371861, + 0.06036831622920339 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.628476219294533E-4, + "scoreError" : 4.6784382792974576E-5, + "scoreConfidence" : [ + 3.1606323913647874E-4, + 4.096320047224279E-4 + ], + "scorePercentiles" : { + "0.0" : 3.471615489770117E-4, + "50.0" : 3.6270047532149037E-4, + "90.0" : 3.786156037265357E-4, + "95.0" : 3.786156037265357E-4, + "99.0" : 3.786156037265357E-4, + "99.9" : 3.786156037265357E-4, + "99.99" : 3.786156037265357E-4, + "99.999" : 3.786156037265357E-4, + "99.9999" : 3.786156037265357E-4, + "100.0" : 3.786156037265357E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4769066973196585E-4, + 3.480194610979542E-4, + 3.471615489770117E-4 + ], + [ + 3.782169584982259E-4, + 3.773814895450265E-4, + 3.786156037265357E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.229249616156044, + "scoreError" : 0.09085326015117651, + "scoreConfidence" : [ + 2.138396356004867, + 2.3201028763072205 + ], + "scorePercentiles" : { + "0.0" : 2.1483050792696026, + "50.0" : 2.2316555325252514, + "90.0" : 2.3162692301086283, + "95.0" : 2.318206156235512, + "99.0" : 2.318206156235512, + "99.9" : 2.318206156235512, + "99.99" : 2.318206156235512, + "99.999" : 2.318206156235512, + "99.9999" : 2.318206156235512, + "100.0" : 2.318206156235512 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2193437157123834, + 2.186857992127706, + 2.1962009964866054, + 2.149104738719381, + 2.1483050792696026 + ], + [ + 2.318206156235512, + 2.2869233212897324, + 2.298836894966674, + 2.24396734933812, + 2.2447499174147216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013525443455558277, + "scoreError" : 2.5011915896881268E-5, + "scoreConfidence" : [ + 0.013500431539661396, + 0.013550455371455158 + ], + "scorePercentiles" : { + "0.0" : 0.013514175606169947, + "50.0" : 0.013526590714408109, + "90.0" : 0.013537222556435762, + "95.0" : 0.013537222556435762, + "99.0" : 0.013537222556435762, + "99.9" : 0.013537222556435762, + "99.99" : 0.013537222556435762, + "99.999" : 0.013537222556435762, + "99.9999" : 0.013537222556435762, + "100.0" : 0.013537222556435762 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013523740983163161, + 0.013514175606169947, + 0.013516649212395145 + ], + [ + 0.013529440445653056, + 0.013537222556435762, + 0.013531431929532585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0924664437566836, + "scoreError" : 0.27604402785507937, + "scoreConfidence" : [ + 0.8164224159016042, + 1.3685104716117629 + ], + "scorePercentiles" : { + "0.0" : 1.0013084754705648, + "50.0" : 1.0932055449001488, + "90.0" : 1.1827943651094026, + "95.0" : 1.1827943651094026, + "99.0" : 1.1827943651094026, + "99.9" : 1.1827943651094026, + "99.99" : 1.1827943651094026, + "99.999" : 1.1827943651094026, + "99.9999" : 1.1827943651094026, + "100.0" : 1.1827943651094026 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1822855365882492, + 1.1827943651094026, + 1.1818913233278185 + ], + [ + 1.004519766472479, + 1.0013084754705648, + 1.0019991955715861 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.009959569332811552, + "scoreError" : 7.207322938912672E-4, + "scoreConfidence" : [ + 0.009238837038920285, + 0.01068030162670282 + ], + "scorePercentiles" : { + "0.0" : 0.009723977425389824, + "50.0" : 0.009957334962364454, + "90.0" : 0.010197496561499398, + "95.0" : 0.010197496561499398, + "99.0" : 0.010197496561499398, + "99.9" : 0.010197496561499398, + "99.99" : 0.010197496561499398, + "99.999" : 0.010197496561499398, + "99.9999" : 0.010197496561499398, + "100.0" : 0.010197496561499398 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010195873301672686, + 0.010197496561499398, + 0.010189173586289813 + ], + [ + 0.009725496338439096, + 0.009725398783578504, + 0.009723977425389824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.049996558668877, + "scoreError" : 0.30997853919162127, + "scoreConfidence" : [ + 2.740018019477256, + 3.3599750978604983 + ], + "scorePercentiles" : { + "0.0" : 2.944192894643908, + "50.0" : 3.0483202383683268, + "90.0" : 3.1613380613147912, + "95.0" : 3.1613380613147912, + "99.0" : 3.1613380613147912, + "99.9" : 3.1613380613147912, + "99.99" : 3.1613380613147912, + "99.999" : 3.1613380613147912, + "99.9999" : 3.1613380613147912, + "100.0" : 3.1613380613147912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.140455865034526, + 3.1613380613147912, + 3.150194707178841 + ], + [ + 2.947613212139069, + 2.9561846117021275, + 2.944192894643908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7795844062815207, + "scoreError" : 0.13912714452355146, + "scoreConfidence" : [ + 2.640457261757969, + 2.9187115508050723 + ], + "scorePercentiles" : { + "0.0" : 2.7314059290005464, + "50.0" : 2.7794528740653277, + "90.0" : 2.830839760260402, + "95.0" : 2.830839760260402, + "99.0" : 2.830839760260402, + "99.9" : 2.830839760260402, + "99.99" : 2.830839760260402, + "99.999" : 2.830839760260402, + "99.9999" : 2.830839760260402, + "100.0" : 2.830839760260402 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.830839760260402, + 2.8227692593847022, + 2.8205543601240834 + ], + [ + 2.738351388006572, + 2.7314059290005464, + 2.733585740912818 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17930671254479127, + "scoreError" : 0.001332213279766144, + "scoreConfidence" : [ + 0.17797449926502512, + 0.18063892582455743 + ], + "scorePercentiles" : { + "0.0" : 0.1788006407588192, + "50.0" : 0.1792172042339652, + "90.0" : 0.18004350513088252, + "95.0" : 0.18004350513088252, + "99.0" : 0.18004350513088252, + "99.9" : 0.18004350513088252, + "99.99" : 0.18004350513088252, + "99.999" : 0.18004350513088252, + "99.9999" : 0.18004350513088252, + "100.0" : 0.18004350513088252 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17897435452348992, + 0.178969234568785, + 0.1788006407588192 + ], + [ + 0.18004350513088252, + 0.17946005394444045, + 0.1795924863423307 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3298636927699552, + "scoreError" : 0.00593593183700658, + "scoreConfidence" : [ + 0.3239277609329486, + 0.3357996246069618 + ], + "scorePercentiles" : { + "0.0" : 0.32761794027650376, + "50.0" : 0.329992924226164, + "90.0" : 0.33224702687796936, + "95.0" : 0.33224702687796936, + "99.0" : 0.33224702687796936, + "99.9" : 0.33224702687796936, + "99.99" : 0.33224702687796936, + "99.999" : 0.33224702687796936, + "99.9999" : 0.33224702687796936, + "100.0" : 0.33224702687796936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32761794027650376, + 0.32770844281688294, + 0.3285951689613249 + ], + [ + 0.33224702687796936, + 0.33162289819604723, + 0.3313906794910031 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14397150446552284, + "scoreError" : 0.002158343904585973, + "scoreConfidence" : [ + 0.14181316056093687, + 0.1461298483701088 + ], + "scorePercentiles" : { + "0.0" : 0.14313087653861567, + "50.0" : 0.14402673570557267, + "90.0" : 0.14473396373056996, + "95.0" : 0.14473396373056996, + "99.0" : 0.14473396373056996, + "99.9" : 0.14473396373056996, + "99.99" : 0.14473396373056996, + "99.999" : 0.14473396373056996, + "99.9999" : 0.14473396373056996, + "100.0" : 0.14473396373056996 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14473396373056996, + 0.14463301132452056, + 0.14463811751688627 + ], + [ + 0.1434204600866248, + 0.14327259759591965, + 0.14313087653861567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4027640561153735, + "scoreError" : 0.0047269496985690275, + "scoreConfidence" : [ + 0.3980371064168045, + 0.40749100581394254 + ], + "scorePercentiles" : { + "0.0" : 0.4008251837749008, + "50.0" : 0.40292732038261947, + "90.0" : 0.4044212487159785, + "95.0" : 0.4044212487159785, + "99.0" : 0.4044212487159785, + "99.9" : 0.4044212487159785, + "99.99" : 0.4044212487159785, + "99.999" : 0.4044212487159785, + "99.9999" : 0.4044212487159785, + "100.0" : 0.4044212487159785 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40126023950726264, + 0.4016508723241897, + 0.4008251837749008 + ], + [ + 0.4044212487159785, + 0.40420376844104927, + 0.40422302392886017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15560499162846134, + "scoreError" : 0.006508857189332861, + "scoreConfidence" : [ + 0.14909613443912847, + 0.1621138488177942 + ], + "scorePercentiles" : { + "0.0" : 0.1533296514412757, + "50.0" : 0.1556761305654506, + "90.0" : 0.15782157366959157, + "95.0" : 0.15782157366959157, + "99.0" : 0.15782157366959157, + "99.9" : 0.15782157366959157, + "99.99" : 0.15782157366959157, + "99.999" : 0.15782157366959157, + "99.9999" : 0.15782157366959157, + "100.0" : 0.15782157366959157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1533296514412757, + 0.15370897837347638, + 0.15343078905135246 + ], + [ + 0.15769567447764724, + 0.15782157366959157, + 0.1576432827574248 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04690115382714879, + "scoreError" : 0.001623051153752824, + "scoreConfidence" : [ + 0.045278102673395965, + 0.04852420498090161 + ], + "scorePercentiles" : { + "0.0" : 0.046363474875979416, + "50.0" : 0.046903627917283475, + "90.0" : 0.0474385331189131, + "95.0" : 0.0474385331189131, + "99.0" : 0.0474385331189131, + "99.9" : 0.0474385331189131, + "99.99" : 0.0474385331189131, + "99.999" : 0.0474385331189131, + "99.9999" : 0.0474385331189131, + "100.0" : 0.0474385331189131 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0463892805817136, + 0.046365904802971085, + 0.046363474875979416 + ], + [ + 0.047417975252853344, + 0.0474385331189131, + 0.04743175433046217 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8570122.92481445, + "scoreError" : 49279.656155038145, + "scoreConfidence" : [ + 8520843.268659411, + 8619402.580969488 + ], + "scorePercentiles" : { + "0.0" : 8545014.417591803, + "50.0" : 8573582.540274207, + "90.0" : 8589274.05751073, + "95.0" : 8589274.05751073, + "99.0" : 8589274.05751073, + "99.9" : 8589274.05751073, + "99.99" : 8589274.05751073, + "99.999" : 8589274.05751073, + "99.9999" : 8589274.05751073, + "100.0" : 8589274.05751073 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8572620.763496144, + 8553506.576068375, + 8545014.417591803 + ], + [ + 8585777.417167382, + 8574544.317052271, + 8589274.05751073 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-01T04:49:13Z-45620c05914d15f4c26ee00375396665caf3d881-jdk17.json b/performance-results/2025-11-01T04:49:13Z-45620c05914d15f4c26ee00375396665caf3d881-jdk17.json new file mode 100644 index 0000000000..5f68318c3f --- /dev/null +++ b/performance-results/2025-11-01T04:49:13Z-45620c05914d15f4c26ee00375396665caf3d881-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3477698621961447, + "scoreError" : 0.02337445789816345, + "scoreConfidence" : [ + 3.3243954042979813, + 3.371144320094308 + ], + "scorePercentiles" : { + "0.0" : 3.3430315008197784, + "50.0" : 3.348200788017799, + "90.0" : 3.351646371929201, + "95.0" : 3.351646371929201, + "99.0" : 3.351646371929201, + "99.9" : 3.351646371929201, + "99.99" : 3.351646371929201, + "99.999" : 3.351646371929201, + "99.9999" : 3.351646371929201, + "100.0" : 3.351646371929201 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3430315008197784, + 3.349038081692665 + ], + [ + 3.3473634943429333, + 3.351646371929201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.684317011370639, + "scoreError" : 0.049974544199096534, + "scoreConfidence" : [ + 1.6343424671715423, + 1.7342915555697356 + ], + "scorePercentiles" : { + "0.0" : 1.6746761065881235, + "50.0" : 1.6848854242402518, + "90.0" : 1.6928210904139285, + "95.0" : 1.6928210904139285, + "99.0" : 1.6928210904139285, + "99.9" : 1.6928210904139285, + "99.99" : 1.6928210904139285, + "99.999" : 1.6928210904139285, + "99.9999" : 1.6928210904139285, + "100.0" : 1.6928210904139285 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6746761065881235, + 1.6822860147814667 + ], + [ + 1.6874848336990371, + 1.6928210904139285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8482168370479347, + "scoreError" : 0.006544992967447337, + "scoreConfidence" : [ + 0.8416718440804873, + 0.8547618300153821 + ], + "scorePercentiles" : { + "0.0" : 0.8471017847847564, + "50.0" : 0.8482363658182547, + "90.0" : 0.8492928317704731, + "95.0" : 0.8492928317704731, + "99.0" : 0.8492928317704731, + "99.9" : 0.8492928317704731, + "99.99" : 0.8492928317704731, + "99.999" : 0.8492928317704731, + "99.9999" : 0.8492928317704731, + "100.0" : 0.8492928317704731 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8476551191081338, + 0.8492928317704731 + ], + [ + 0.8471017847847564, + 0.8488176125283755 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.332941660913594, + "scoreError" : 0.21532491358643763, + "scoreConfidence" : [ + 16.117616747327155, + 16.548266574500033 + ], + "scorePercentiles" : { + "0.0" : 16.241053712540975, + "50.0" : 16.338029469198265, + "90.0" : 16.40915551999191, + "95.0" : 16.40915551999191, + "99.0" : 16.40915551999191, + "99.9" : 16.40915551999191, + "99.99" : 16.40915551999191, + "99.999" : 16.40915551999191, + "99.9999" : 16.40915551999191, + "100.0" : 16.40915551999191 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.272271343670305, + 16.278371047966885, + 16.241053712540975 + ], + [ + 16.397687890429644, + 16.399110450881853, + 16.40915551999191 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2667.971279872579, + "scoreError" : 163.20559208081158, + "scoreConfidence" : [ + 2504.7656877917675, + 2831.1768719533907 + ], + "scorePercentiles" : { + "0.0" : 2613.502201620675, + "50.0" : 2665.880971923183, + "90.0" : 2723.8536125298388, + "95.0" : 2723.8536125298388, + "99.0" : 2723.8536125298388, + "99.9" : 2723.8536125298388, + "99.99" : 2723.8536125298388, + "99.999" : 2723.8536125298388, + "99.9999" : 2723.8536125298388, + "100.0" : 2723.8536125298388 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2723.5892246331605, + 2715.6384092563126, + 2723.8536125298388 + ], + [ + 2616.123534590053, + 2615.1206966054337, + 2613.502201620675 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74298.24183616, + "scoreError" : 2520.890311093483, + "scoreConfidence" : [ + 71777.35152506652, + 76819.13214725348 + ], + "scorePercentiles" : { + "0.0" : 73412.43293067976, + "50.0" : 74335.59546539557, + "90.0" : 75137.06253757878, + "95.0" : 75137.06253757878, + "99.0" : 75137.06253757878, + "99.9" : 75137.06253757878, + "99.99" : 75137.06253757878, + "99.999" : 75137.06253757878, + "99.9999" : 75137.06253757878, + "100.0" : 75137.06253757878 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75137.06253757878, + 75096.45244047276, + 75118.50165482805 + ], + [ + 73574.7384903184, + 73450.26296308225, + 73412.43293067976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.059297064909, + "scoreError" : 12.714796379320177, + "scoreConfidence" : [ + 343.34450068558886, + 368.77409344422915 + ], + "scorePercentiles" : { + "0.0" : 350.20785961172044, + "50.0" : 357.9517522131721, + "90.0" : 360.84132164414433, + "95.0" : 360.84132164414433, + "99.0" : 360.84132164414433, + "99.9" : 360.84132164414433, + "99.99" : 360.84132164414433, + "99.999" : 360.84132164414433, + "99.9999" : 360.84132164414433, + "100.0" : 360.84132164414433 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 358.46266281581126, + 358.8438200215719, + 360.84132164414433 + ], + [ + 350.20785961172044, + 350.559276685673, + 357.4408416105329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.7430103926024, + "scoreError" : 1.041994337392339, + "scoreConfidence" : [ + 114.70101605521006, + 116.78500472999474 + ], + "scorePercentiles" : { + "0.0" : 115.15317263991709, + "50.0" : 115.73671697975331, + "90.0" : 116.1464559030964, + "95.0" : 116.1464559030964, + "99.0" : 116.1464559030964, + "99.9" : 116.1464559030964, + "99.99" : 116.1464559030964, + "99.999" : 116.1464559030964, + "99.9999" : 116.1464559030964, + "100.0" : 116.1464559030964 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.11771362348803, + 116.1464559030964, + 115.80129372172226 + ], + [ + 115.67214023778438, + 115.56728622960624, + 115.15317263991709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06089329375592398, + "scoreError" : 5.288895363507938E-4, + "scoreConfidence" : [ + 0.06036440421957318, + 0.06142218329227477 + ], + "scorePercentiles" : { + "0.0" : 0.06069182257085635, + "50.0" : 0.060852542791584016, + "90.0" : 0.06113383820562667, + "95.0" : 0.06113383820562667, + "99.0" : 0.06113383820562667, + "99.9" : 0.06113383820562667, + "99.99" : 0.06113383820562667, + "99.999" : 0.06113383820562667, + "99.9999" : 0.06113383820562667, + "100.0" : 0.06113383820562667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06075168266841629, + 0.06069182257085635, + 0.060748912164214464 + ], + [ + 0.061080104011678335, + 0.06095340291475174, + 0.06113383820562667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.5833250066176617E-4, + "scoreError" : 2.6420738191710447E-5, + "scoreConfidence" : [ + 3.3191176247005574E-4, + 3.847532388534766E-4 + ], + "scorePercentiles" : { + "0.0" : 3.491182044597868E-4, + "50.0" : 3.584910531158554E-4, + "90.0" : 3.6700913125087254E-4, + "95.0" : 3.6700913125087254E-4, + "99.0" : 3.6700913125087254E-4, + "99.9" : 3.6700913125087254E-4, + "99.99" : 3.6700913125087254E-4, + "99.999" : 3.6700913125087254E-4, + "99.9999" : 3.6700913125087254E-4, + "100.0" : 3.6700913125087254E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6685989362878016E-4, + 3.6700913125087254E-4, + 3.6691400510862704E-4 + ], + [ + 3.491182044597868E-4, + 3.5012221260293067E-4, + 3.499715569195997E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.242600327506432, + "scoreError" : 0.053480477988934884, + "scoreConfidence" : [ + 2.189119849517497, + 2.296080805495367 + ], + "scorePercentiles" : { + "0.0" : 2.20269414030837, + "50.0" : 2.2444634133862853, + "90.0" : 2.2956833527113867, + "95.0" : 2.2964620197428833, + "99.0" : 2.2964620197428833, + "99.9" : 2.2964620197428833, + "99.99" : 2.2964620197428833, + "99.999" : 2.2964620197428833, + "99.9999" : 2.2964620197428833, + "100.0" : 2.2964620197428833 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2964620197428833, + 2.2566467624097473, + 2.267719983219955, + 2.210037549834254, + 2.2104139893922654 + ], + [ + 2.2886753494279177, + 2.2331356686760437, + 2.255791158096527, + 2.2044266539563586, + 2.20269414030837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013424362970768317, + "scoreError" : 2.0879102880618964E-4, + "scoreConfidence" : [ + 0.013215571941962127, + 0.013633153999574507 + ], + "scorePercentiles" : { + "0.0" : 0.013355831342229084, + "50.0" : 0.013420079437107713, + "90.0" : 0.013499268325344125, + "95.0" : 0.013499268325344125, + "99.0" : 0.013499268325344125, + "99.9" : 0.013499268325344125, + "99.99" : 0.013499268325344125, + "99.999" : 0.013499268325344125, + "99.9999" : 0.013499268325344125, + "100.0" : 0.013499268325344125 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013355946686718023, + 0.013355831342229084, + 0.013357996656595043 + ], + [ + 0.013499268325344125, + 0.01348216221762038, + 0.01349497259610324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.166441011100209, + "scoreError" : 0.03473682554077747, + "scoreConfidence" : [ + 1.1317041855594316, + 1.2011778366409864 + ], + "scorePercentiles" : { + "0.0" : 1.1547661139722865, + "50.0" : 1.1662165984028365, + "90.0" : 1.1783749528690939, + "95.0" : 1.1783749528690939, + "99.0" : 1.1783749528690939, + "99.9" : 1.1783749528690939, + "99.99" : 1.1783749528690939, + "99.999" : 1.1783749528690939, + "99.9999" : 1.1783749528690939, + "100.0" : 1.1783749528690939 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.1770702409369116, + 1.1777787901307266, + 1.1783749528690939 + ], + [ + 1.1553629558687615, + 1.1547661139722865, + 1.155293012823475 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010642173821088681, + "scoreError" : 9.457847564693583E-4, + "scoreConfidence" : [ + 0.009696389064619323, + 0.011587958577558038 + ], + "scorePercentiles" : { + "0.0" : 0.010329407786525418, + "50.0" : 0.010643935805756989, + "90.0" : 0.010956223244042728, + "95.0" : 0.010956223244042728, + "99.0" : 0.010956223244042728, + "99.9" : 0.010956223244042728, + "99.99" : 0.010956223244042728, + "99.999" : 0.010956223244042728, + "99.9999" : 0.010956223244042728, + "100.0" : 0.010956223244042728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010956223244042728, + 0.010946212451317572, + 0.010947638304906618 + ], + [ + 0.010329407786525418, + 0.010331901979543342, + 0.010341659160196404 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.940190498434172, + "scoreError" : 0.06142933203096586, + "scoreConfidence" : [ + 2.8787611664032062, + 3.001619830465138 + ], + "scorePercentiles" : { + "0.0" : 2.9156215037900877, + "50.0" : 2.942321784469356, + "90.0" : 2.9657602829181493, + "95.0" : 2.9657602829181493, + "99.0" : 2.9657602829181493, + "99.9" : 2.9657602829181493, + "99.99" : 2.9657602829181493, + "99.999" : 2.9657602829181493, + "99.9999" : 2.9657602829181493, + "100.0" : 2.9657602829181493 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9301669847686, + 2.9172664037339557, + 2.9156215037900877 + ], + [ + 2.9544765841701124, + 2.9657602829181493, + 2.9578512312241276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7532438195802533, + "scoreError" : 0.18973399140734085, + "scoreConfidence" : [ + 2.5635098281729123, + 2.9429778109875944 + ], + "scorePercentiles" : { + "0.0" : 2.6895095700457112, + "50.0" : 2.7473748944497993, + "90.0" : 2.8248451107031913, + "95.0" : 2.8248451107031913, + "99.0" : 2.8248451107031913, + "99.9" : 2.8248451107031913, + "99.99" : 2.8248451107031913, + "99.999" : 2.8248451107031913, + "99.9999" : 2.8248451107031913, + "100.0" : 2.8248451107031913 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8015469442577032, + 2.8248451107031913, + 2.8174513369014083 + ], + [ + 2.6895095700457112, + 2.69290711093161, + 2.6932028446418954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17815129784106434, + "scoreError" : 4.361238840332713E-4, + "scoreConfidence" : [ + 0.17771517395703107, + 0.17858742172509762 + ], + "scorePercentiles" : { + "0.0" : 0.1779504766268662, + "50.0" : 0.17813149960763708, + "90.0" : 0.1784264714079255, + "95.0" : 0.1784264714079255, + "99.0" : 0.1784264714079255, + "99.9" : 0.1784264714079255, + "99.99" : 0.1784264714079255, + "99.999" : 0.1784264714079255, + "99.9999" : 0.1784264714079255, + "100.0" : 0.1784264714079255 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17811622784269024, + 0.17817289179895593, + 0.1779504766268662 + ], + [ + 0.17814677137258395, + 0.1784264714079255, + 0.17809494799736425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33124873443413755, + "scoreError" : 0.023368261633373952, + "scoreConfidence" : [ + 0.3078804728007636, + 0.3546169960675115 + ], + "scorePercentiles" : { + "0.0" : 0.323503151392618, + "50.0" : 0.3312562012230619, + "90.0" : 0.3389621482222147, + "95.0" : 0.3389621482222147, + "99.0" : 0.3389621482222147, + "99.9" : 0.3389621482222147, + "99.99" : 0.3389621482222147, + "99.999" : 0.3389621482222147, + "99.9999" : 0.3389621482222147, + "100.0" : 0.3389621482222147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32369884437107527, + 0.323503151392618, + 0.3237239297853744 + ], + [ + 0.33878847266074935, + 0.3389621482222147, + 0.33881586017279347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14417557613560647, + "scoreError" : 0.00203271610776868, + "scoreConfidence" : [ + 0.1421428600278378, + 0.14620829224337514 + ], + "scorePercentiles" : { + "0.0" : 0.14348456741516608, + "50.0" : 0.1441196258590285, + "90.0" : 0.14513379388415598, + "95.0" : 0.14513379388415598, + "99.0" : 0.14513379388415598, + "99.9" : 0.14513379388415598, + "99.99" : 0.14513379388415598, + "99.999" : 0.14513379388415598, + "99.9999" : 0.14513379388415598, + "100.0" : 0.14513379388415598 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14348456741516608, + 0.14360080093051308, + 0.14351699786165328 + ], + [ + 0.14513379388415598, + 0.14467884593460648, + 0.14463845078754392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40567663052668906, + "scoreError" : 0.012223461444932478, + "scoreConfidence" : [ + 0.3934531690817566, + 0.41790009197162153 + ], + "scorePercentiles" : { + "0.0" : 0.40142238764450866, + "50.0" : 0.40571418603360265, + "90.0" : 0.4098885288958111, + "95.0" : 0.4098885288958111, + "99.0" : 0.4098885288958111, + "99.9" : 0.4098885288958111, + "99.99" : 0.4098885288958111, + "99.999" : 0.4098885288958111, + "99.9999" : 0.4098885288958111, + "100.0" : 0.4098885288958111 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40199469304980506, + 0.40169204241645246, + 0.40142238764450866 + ], + [ + 0.40962845213615695, + 0.4094336790174002, + 0.4098885288958111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15890190123618497, + "scoreError" : 0.002754464588329338, + "scoreConfidence" : [ + 0.15614743664785563, + 0.16165636582451431 + ], + "scorePercentiles" : { + "0.0" : 0.15784463639807433, + "50.0" : 0.1589100640049304, + "90.0" : 0.1599444591750236, + "95.0" : 0.1599444591750236, + "99.0" : 0.1599444591750236, + "99.9" : 0.1599444591750236, + "99.99" : 0.1599444591750236, + "99.999" : 0.1599444591750236, + "99.9999" : 0.1599444591750236, + "100.0" : 0.1599444591750236 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1599444591750236, + 0.15980733256627835, + 0.1596089356954752 + ], + [ + 0.15799485126787266, + 0.15784463639807433, + 0.1582111923143856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04700158852626916, + "scoreError" : 0.0021264963876325964, + "scoreConfidence" : [ + 0.04487509213863656, + 0.049128084913901755 + ], + "scorePercentiles" : { + "0.0" : 0.04630083734755674, + "50.0" : 0.046896972994682304, + "90.0" : 0.04798373915943322, + "95.0" : 0.04798373915943322, + "99.0" : 0.04798373915943322, + "99.9" : 0.04798373915943322, + "99.99" : 0.04798373915943322, + "99.999" : 0.04798373915943322, + "99.9999" : 0.04798373915943322, + "100.0" : 0.04798373915943322 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046381039144933654, + 0.04630870353099169, + 0.04630083734755674 + ], + [ + 0.04798373915943322, + 0.04762230513026873, + 0.04741290684443096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8555942.139944317, + "scoreError" : 261339.54566526916, + "scoreConfidence" : [ + 8294602.594279048, + 8817281.685609587 + ], + "scorePercentiles" : { + "0.0" : 8456880.835164836, + "50.0" : 8560133.361073758, + "90.0" : 8663657.688311689, + "95.0" : 8663657.688311689, + "99.0" : 8663657.688311689, + "99.9" : 8663657.688311689, + "99.99" : 8663657.688311689, + "99.999" : 8663657.688311689, + "99.9999" : 8663657.688311689, + "100.0" : 8663657.688311689 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8459343.604395604, + 8456880.835164836, + 8503940.039115647 + ], + [ + 8635503.989646247, + 8616326.683031868, + 8663657.688311689 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-01T05:59:55Z-4531f09593eb3f2f72d47d686d25d1155835c4d5-jdk17.json b/performance-results/2025-11-01T05:59:55Z-4531f09593eb3f2f72d47d686d25d1155835c4d5-jdk17.json new file mode 100644 index 0000000000..122878a46f --- /dev/null +++ b/performance-results/2025-11-01T05:59:55Z-4531f09593eb3f2f72d47d686d25d1155835c4d5-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.331891384863794, + "scoreError" : 0.03251362551583261, + "scoreConfidence" : [ + 3.299377759347961, + 3.3644050103796266 + ], + "scorePercentiles" : { + "0.0" : 3.3251371545140835, + "50.0" : 3.3333284949645576, + "90.0" : 3.3357713950119763, + "95.0" : 3.3357713950119763, + "99.0" : 3.3357713950119763, + "99.9" : 3.3357713950119763, + "99.99" : 3.3357713950119763, + "99.999" : 3.3357713950119763, + "99.9999" : 3.3357713950119763, + "100.0" : 3.3357713950119763 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.33096799826232, + 3.335688991666795 + ], + [ + 3.3251371545140835, + 3.3357713950119763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6801623357953641, + "scoreError" : 0.036664699351752456, + "scoreConfidence" : [ + 1.6434976364436116, + 1.7168270351471167 + ], + "scorePercentiles" : { + "0.0" : 1.6749049157267533, + "50.0" : 1.6794848939734095, + "90.0" : 1.6867746395078844, + "95.0" : 1.6867746395078844, + "99.0" : 1.6867746395078844, + "99.9" : 1.6867746395078844, + "99.99" : 1.6867746395078844, + "99.999" : 1.6867746395078844, + "99.9999" : 1.6867746395078844, + "100.0" : 1.6867746395078844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6749049157267533, + 1.675999306628045 + ], + [ + 1.6829704813187738, + 1.6867746395078844 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8410273664978456, + "scoreError" : 0.014486152847996443, + "scoreConfidence" : [ + 0.8265412136498491, + 0.8555135193458421 + ], + "scorePercentiles" : { + "0.0" : 0.8382979167801241, + "50.0" : 0.8412632000283302, + "90.0" : 0.8432851491545976, + "95.0" : 0.8432851491545976, + "99.0" : 0.8432851491545976, + "99.9" : 0.8432851491545976, + "99.99" : 0.8432851491545976, + "99.999" : 0.8432851491545976, + "99.9999" : 0.8432851491545976, + "100.0" : 0.8432851491545976 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8432851491545976, + 0.8382979167801241 + ], + [ + 0.8401637475223157, + 0.8423626525343447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.92852306781342, + "scoreError" : 0.32470145698488584, + "scoreConfidence" : [ + 15.603821610828534, + 16.253224524798306 + ], + "scorePercentiles" : { + "0.0" : 15.782638612674088, + "50.0" : 15.89632930446573, + "90.0" : 16.095992199560367, + "95.0" : 16.095992199560367, + "99.0" : 16.095992199560367, + "99.9" : 16.095992199560367, + "99.99" : 16.095992199560367, + "99.999" : 16.095992199560367, + "99.9999" : 16.095992199560367, + "100.0" : 16.095992199560367 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.782638612674088, + 15.912006046967093, + 15.865574248029539 + ], + [ + 16.034274737685067, + 15.880652561964366, + 16.095992199560367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2621.6783029837075, + "scoreError" : 347.83063619223327, + "scoreConfidence" : [ + 2273.8476667914742, + 2969.5089391759407 + ], + "scorePercentiles" : { + "0.0" : 2477.5846469216513, + "50.0" : 2627.644437491162, + "90.0" : 2738.433113903462, + "95.0" : 2738.433113903462, + "99.0" : 2738.433113903462, + "99.9" : 2738.433113903462, + "99.99" : 2738.433113903462, + "99.999" : 2738.433113903462, + "99.9999" : 2738.433113903462, + "100.0" : 2738.433113903462 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2738.433113903462, + 2725.6591062410125, + 2736.924642417969 + ], + [ + 2521.83853967684, + 2529.6297687413116, + 2477.5846469216513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72166.13397572777, + "scoreError" : 1163.099037645591, + "scoreConfidence" : [ + 71003.03493808219, + 73329.23301337336 + ], + "scorePercentiles" : { + "0.0" : 71532.15604150001, + "50.0" : 72230.40405532901, + "90.0" : 72613.06782430779, + "95.0" : 72613.06782430779, + "99.0" : 72613.06782430779, + "99.9" : 72613.06782430779, + "99.99" : 72613.06782430779, + "99.999" : 72613.06782430779, + "99.9999" : 72613.06782430779, + "100.0" : 72613.06782430779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72613.06782430779, + 72431.70057290916, + 72484.77260807382 + ], + [ + 71905.99926982696, + 71532.15604150001, + 72029.10753774887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.0893615237961, + "scoreError" : 12.155044598705157, + "scoreConfidence" : [ + 331.9343169250909, + 356.24440612250123 + ], + "scorePercentiles" : { + "0.0" : 338.764867948975, + "50.0" : 343.1742960285771, + "90.0" : 350.76979770318536, + "95.0" : 350.76979770318536, + "99.0" : 350.76979770318536, + "99.9" : 350.76979770318536, + "99.99" : 350.76979770318536, + "99.999" : 350.76979770318536, + "99.9999" : 350.76979770318536, + "100.0" : 350.76979770318536 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 338.764867948975, + 347.11184174932396, + 350.76979770318536 + ], + [ + 344.52738851008525, + 341.82120354706893, + 341.5410696841381 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 111.92745851150347, + "scoreError" : 1.6475043111780345, + "scoreConfidence" : [ + 110.27995420032543, + 113.57496282268151 + ], + "scorePercentiles" : { + "0.0" : 111.36897514273787, + "50.0" : 111.79602064537337, + "90.0" : 112.9329983879452, + "95.0" : 112.9329983879452, + "99.0" : 112.9329983879452, + "99.9" : 112.9329983879452, + "99.99" : 112.9329983879452, + "99.999" : 112.9329983879452, + "99.9999" : 112.9329983879452, + "100.0" : 112.9329983879452 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.58840398971071, + 112.9329983879452, + 112.19946847962603 + ], + [ + 111.47126776796497, + 111.36897514273787, + 112.00363730103605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06279068040235579, + "scoreError" : 6.119917721056596E-4, + "scoreConfidence" : [ + 0.06217868863025013, + 0.06340267217446145 + ], + "scorePercentiles" : { + "0.0" : 0.06258484192607612, + "50.0" : 0.06273629360471389, + "90.0" : 0.06305487835605382, + "95.0" : 0.06305487835605382, + "99.0" : 0.06305487835605382, + "99.9" : 0.06305487835605382, + "99.99" : 0.06305487835605382, + "99.999" : 0.06305487835605382, + "99.9999" : 0.06305487835605382, + "100.0" : 0.06305487835605382 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06305487835605382, + 0.06261993746869052, + 0.06285264974073725 + ], + [ + 0.06260174495283048, + 0.06303002996974663, + 0.06258484192607612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.830771716436987E-4, + "scoreError" : 1.2042647431225331E-5, + "scoreConfidence" : [ + 3.710345242124734E-4, + 3.95119819074924E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7853053682702437E-4, + "50.0" : 3.826497725795037E-4, + "90.0" : 3.8792826009776603E-4, + "95.0" : 3.8792826009776603E-4, + "99.0" : 3.8792826009776603E-4, + "99.9" : 3.8792826009776603E-4, + "99.99" : 3.8792826009776603E-4, + "99.999" : 3.8792826009776603E-4, + "99.9999" : 3.8792826009776603E-4, + "100.0" : 3.8792826009776603E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.876485373668257E-4, + 3.849495988618241E-4, + 3.8792826009776603E-4 + ], + [ + 3.7853053682702437E-4, + 3.790561504115684E-4, + 3.803499462971833E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.346785363021913, + "scoreError" : 0.05997008187668316, + "scoreConfidence" : [ + 2.28681528114523, + 2.406755444898596 + ], + "scorePercentiles" : { + "0.0" : 2.296827368856224, + "50.0" : 2.3461829009485475, + "90.0" : 2.418269725522952, + "95.0" : 2.4232333033680638, + "99.0" : 2.4232333033680638, + "99.9" : 2.4232333033680638, + "99.99" : 2.4232333033680638, + "99.999" : 2.4232333033680638, + "99.9999" : 2.4232333033680638, + "100.0" : 2.4232333033680638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.4232333033680638, + 2.3735975249169434, + 2.3535371819251587, + 2.3364703919644945, + 2.304362129032258 + ], + [ + 2.372712674970344, + 2.3665069159962138, + 2.3388286199719364, + 2.301777519217491, + 2.296827368856224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013806770964828997, + "scoreError" : 3.268550197256487E-4, + "scoreConfidence" : [ + 0.013479915945103348, + 0.014133625984554646 + ], + "scorePercentiles" : { + "0.0" : 0.013696704500536219, + "50.0" : 0.013780107329397107, + "90.0" : 0.014014539573789467, + "95.0" : 0.014014539573789467, + "99.0" : 0.014014539573789467, + "99.9" : 0.014014539573789467, + "99.99" : 0.014014539573789467, + "99.999" : 0.014014539573789467, + "99.9999" : 0.014014539573789467, + "100.0" : 0.014014539573789467 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013768856228831061, + 0.013696704500536219, + 0.013713912816546398 + ], + [ + 0.013855254239307689, + 0.01379135842996315, + 0.014014539573789467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0857069580066923, + "scoreError" : 0.17271268983677865, + "scoreConfidence" : [ + 0.9129942681699136, + 1.2584196478434708 + ], + "scorePercentiles" : { + "0.0" : 1.025855275105139, + "50.0" : 1.0857095735582911, + "90.0" : 1.145439935517123, + "95.0" : 1.145439935517123, + "99.0" : 1.145439935517123, + "99.9" : 1.145439935517123, + "99.99" : 1.145439935517123, + "99.999" : 1.145439935517123, + "99.9999" : 1.145439935517123, + "100.0" : 1.145439935517123 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.025855275105139, + 1.031436192141089, + 1.0313311540682686 + ], + [ + 1.145439935517123, + 1.139982954975493, + 1.1401962362330407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010729017744437743, + "scoreError" : 7.247708949146882E-4, + "scoreConfidence" : [ + 0.010004246849523054, + 0.011453788639352432 + ], + "scorePercentiles" : { + "0.0" : 0.01041045969906246, + "50.0" : 0.010765281796947097, + "90.0" : 0.011004608724167529, + "95.0" : 0.011004608724167529, + "99.0" : 0.011004608724167529, + "99.9" : 0.011004608724167529, + "99.99" : 0.011004608724167529, + "99.999" : 0.011004608724167529, + "99.9999" : 0.011004608724167529, + "100.0" : 0.011004608724167529 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011004608724167529, + 0.010980254617043423, + 0.010842681332740618 + ], + [ + 0.010448219832458852, + 0.010687882261153577, + 0.01041045969906246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1958591348409158, + "scoreError" : 0.4944777383834739, + "scoreConfidence" : [ + 2.701381396457442, + 3.6903368732243895 + ], + "scorePercentiles" : { + "0.0" : 3.019203842486421, + "50.0" : 3.180597427187406, + "90.0" : 3.4302976275720165, + "95.0" : 3.4302976275720165, + "99.0" : 3.4302976275720165, + "99.9" : 3.4302976275720165, + "99.99" : 3.4302976275720165, + "99.999" : 3.4302976275720165, + "99.9999" : 3.4302976275720165, + "100.0" : 3.4302976275720165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3142256852220013, + 3.310249033752482, + 3.4302976275720165 + ], + [ + 3.0509458206223306, + 3.019203842486421, + 3.050232799390244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.863354274052144, + "scoreError" : 0.08391199928131193, + "scoreConfidence" : [ + 2.779442274770832, + 2.947266273333456 + ], + "scorePercentiles" : { + "0.0" : 2.8281498331447965, + "50.0" : 2.861301315594676, + "90.0" : 2.897399832271147, + "95.0" : 2.897399832271147, + "99.0" : 2.897399832271147, + "99.9" : 2.897399832271147, + "99.99" : 2.897399832271147, + "99.999" : 2.897399832271147, + "99.9999" : 2.897399832271147, + "100.0" : 2.897399832271147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8281498331447965, + 2.8410609488636362, + 2.8411289008522727 + ], + [ + 2.8814737303370785, + 2.897399832271147, + 2.8909123988439305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1817232191628542, + "scoreError" : 0.010306240285060927, + "scoreConfidence" : [ + 0.17141697887779328, + 0.1920294594479151 + ], + "scorePercentiles" : { + "0.0" : 0.1778002790342081, + "50.0" : 0.18191503704204776, + "90.0" : 0.18548494385502837, + "95.0" : 0.18548494385502837, + "99.0" : 0.18548494385502837, + "99.9" : 0.18548494385502837, + "99.99" : 0.18548494385502837, + "99.999" : 0.18548494385502837, + "99.9999" : 0.18548494385502837, + "100.0" : 0.18548494385502837 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18485091010924418, + 0.18548494385502837, + 0.18482364512909605 + ], + [ + 0.17900642895499946, + 0.17837310789454908, + 0.1778002790342081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32784405908654923, + "scoreError" : 0.006129186006338858, + "scoreConfidence" : [ + 0.32171487308021035, + 0.3339732450928881 + ], + "scorePercentiles" : { + "0.0" : 0.32519039831555674, + "50.0" : 0.3279427160795765, + "90.0" : 0.33076220493484154, + "95.0" : 0.33076220493484154, + "99.0" : 0.33076220493484154, + "99.9" : 0.33076220493484154, + "99.99" : 0.33076220493484154, + "99.999" : 0.33076220493484154, + "99.9999" : 0.33076220493484154, + "100.0" : 0.33076220493484154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32597855632700956, + 0.32519039831555674, + 0.3267469807554074 + ], + [ + 0.32913845140374554, + 0.32924776278273465, + 0.33076220493484154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14746814073815903, + "scoreError" : 0.0020280931125989934, + "scoreConfidence" : [ + 0.14544004762556004, + 0.14949623385075803 + ], + "scorePercentiles" : { + "0.0" : 0.1465289295353642, + "50.0" : 0.14734827175724274, + "90.0" : 0.14866888964543223, + "95.0" : 0.14866888964543223, + "99.0" : 0.14866888964543223, + "99.9" : 0.14866888964543223, + "99.99" : 0.14866888964543223, + "99.999" : 0.14866888964543223, + "99.9999" : 0.14866888964543223, + "100.0" : 0.14866888964543223 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14747957351639923, + 0.14779487381582254, + 0.1465289295353642 + ], + [ + 0.14866888964543223, + 0.14721696999808623, + 0.14711960791784973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40202878378538687, + "scoreError" : 0.024456529965787052, + "scoreConfidence" : [ + 0.3775722538195998, + 0.42648531375117393 + ], + "scorePercentiles" : { + "0.0" : 0.39359629990554157, + "50.0" : 0.40145676220206644, + "90.0" : 0.4123902381030928, + "95.0" : 0.4123902381030928, + "99.0" : 0.4123902381030928, + "99.9" : 0.4123902381030928, + "99.99" : 0.4123902381030928, + "99.999" : 0.4123902381030928, + "99.9999" : 0.4123902381030928, + "100.0" : 0.4123902381030928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3952085714116345, + 0.3938002400866312, + 0.39359629990554157 + ], + [ + 0.4123902381030928, + 0.40770495299249837, + 0.40947240021292275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15968802554611805, + "scoreError" : 0.00289990376059485, + "scoreConfidence" : [ + 0.1567881217855232, + 0.1625879293067129 + ], + "scorePercentiles" : { + "0.0" : 0.15787117648080323, + "50.0" : 0.16023359604230092, + "90.0" : 0.1604711242658622, + "95.0" : 0.1604711242658622, + "99.0" : 0.1604711242658622, + "99.9" : 0.1604711242658622, + "99.99" : 0.1604711242658622, + "99.999" : 0.1604711242658622, + "99.9999" : 0.1604711242658622, + "100.0" : 0.1604711242658622 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16030587328075407, + 0.15901278716468698, + 0.15787117648080323 + ], + [ + 0.16023410626502163, + 0.1604711242658622, + 0.1602330858195802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04731617293218265, + "scoreError" : 0.0019227948116767978, + "scoreConfidence" : [ + 0.045393378120505846, + 0.04923896774385945 + ], + "scorePercentiles" : { + "0.0" : 0.04663350619747997, + "50.0" : 0.04727615638843023, + "90.0" : 0.04808685457780342, + "95.0" : 0.04808685457780342, + "99.0" : 0.04808685457780342, + "99.9" : 0.04808685457780342, + "99.99" : 0.04808685457780342, + "99.999" : 0.04808685457780342, + "99.9999" : 0.04808685457780342, + "100.0" : 0.04808685457780342 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04671782441346576, + 0.046737132338782794, + 0.04663350619747997 + ], + [ + 0.0479065396274863, + 0.04808685457780342, + 0.04781518043807766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8840004.978480019, + "scoreError" : 141673.3435806348, + "scoreConfidence" : [ + 8698331.634899383, + 8981678.322060654 + ], + "scorePercentiles" : { + "0.0" : 8756502.923884515, + "50.0" : 8848451.234890025, + "90.0" : 8909324.657168299, + "95.0" : 8909324.657168299, + "99.0" : 8909324.657168299, + "99.9" : 8909324.657168299, + "99.99" : 8909324.657168299, + "99.999" : 8909324.657168299, + "99.9999" : 8909324.657168299, + "100.0" : 8909324.657168299 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8909324.657168299, + 8853233.321238939, + 8818743.833333334 + ], + [ + 8843669.148541113, + 8858555.986713907, + 8756502.923884515 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-01T06:00:20Z-4531f09593eb3f2f72d47d686d25d1155835c4d5-jdk17.json b/performance-results/2025-11-01T06:00:20Z-4531f09593eb3f2f72d47d686d25d1155835c4d5-jdk17.json new file mode 100644 index 0000000000..63f025e4b2 --- /dev/null +++ b/performance-results/2025-11-01T06:00:20Z-4531f09593eb3f2f72d47d686d25d1155835c4d5-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3516421209171643, + "scoreError" : 0.020266879680893895, + "scoreConfidence" : [ + 3.3313752412362705, + 3.371909000598058 + ], + "scorePercentiles" : { + "0.0" : 3.3481196017623884, + "50.0" : 3.3516027833167685, + "90.0" : 3.355243315272732, + "95.0" : 3.355243315272732, + "99.0" : 3.355243315272732, + "99.9" : 3.355243315272732, + "99.99" : 3.355243315272732, + "99.999" : 3.355243315272732, + "99.9999" : 3.355243315272732, + "100.0" : 3.355243315272732 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3501658227389575, + 3.3530397438945796 + ], + [ + 3.3481196017623884, + 3.355243315272732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6946104900202834, + "scoreError" : 0.015262060789982762, + "scoreConfidence" : [ + 1.6793484292303007, + 1.7098725508102661 + ], + "scorePercentiles" : { + "0.0" : 1.6921948024089524, + "50.0" : 1.6942917162049038, + "90.0" : 1.6976637252623739, + "95.0" : 1.6976637252623739, + "99.0" : 1.6976637252623739, + "99.9" : 1.6976637252623739, + "99.99" : 1.6976637252623739, + "99.999" : 1.6976637252623739, + "99.9999" : 1.6976637252623739, + "100.0" : 1.6976637252623739 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6921948024089524, + 1.6951204402008255 + ], + [ + 1.693462992208982, + 1.6976637252623739 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8518091300945192, + "scoreError" : 0.009963066921643438, + "scoreConfidence" : [ + 0.8418460631728758, + 0.8617721970161626 + ], + "scorePercentiles" : { + "0.0" : 0.8505252586146297, + "50.0" : 0.8513591371942701, + "90.0" : 0.8539929873749069, + "95.0" : 0.8539929873749069, + "99.0" : 0.8539929873749069, + "99.9" : 0.8539929873749069, + "99.99" : 0.8539929873749069, + "99.999" : 0.8539929873749069, + "99.9999" : 0.8539929873749069, + "100.0" : 0.8539929873749069 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.85096616421951, + 0.8539929873749069 + ], + [ + 0.8517521101690302, + 0.8505252586146297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.132278648136566, + "scoreError" : 0.5965023787437737, + "scoreConfidence" : [ + 15.535776269392793, + 16.72878102688034 + ], + "scorePercentiles" : { + "0.0" : 15.93017405119031, + "50.0" : 16.121098467605933, + "90.0" : 16.34539481625887, + "95.0" : 16.34539481625887, + "99.0" : 16.34539481625887, + "99.9" : 16.34539481625887, + "99.99" : 16.34539481625887, + "99.999" : 16.34539481625887, + "99.9999" : 16.34539481625887, + "100.0" : 16.34539481625887 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.34539481625887, + 16.334315207947487, + 16.297946467514958 + ], + [ + 15.944250467696905, + 15.94159087821086, + 15.93017405119031 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2659.649167351619, + "scoreError" : 48.51515620270553, + "scoreConfidence" : [ + 2611.1340111489135, + 2708.1643235543243 + ], + "scorePercentiles" : { + "0.0" : 2642.4541441188912, + "50.0" : 2657.871324692631, + "90.0" : 2678.929957872718, + "95.0" : 2678.929957872718, + "99.0" : 2678.929957872718, + "99.9" : 2678.929957872718, + "99.99" : 2678.929957872718, + "99.999" : 2678.929957872718, + "99.9999" : 2678.929957872718, + "100.0" : 2678.929957872718 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2670.826305970804, + 2675.974758238456, + 2678.929957872718 + ], + [ + 2644.916343414458, + 2644.7934944943863, + 2642.4541441188912 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74269.04404589452, + "scoreError" : 909.8190264036471, + "scoreConfidence" : [ + 73359.22501949087, + 75178.86307229818 + ], + "scorePercentiles" : { + "0.0" : 73968.07965727508, + "50.0" : 74264.35709327293, + "90.0" : 74582.90341654317, + "95.0" : 74582.90341654317, + "99.0" : 74582.90341654317, + "99.9" : 74582.90341654317, + "99.99" : 74582.90341654317, + "99.999" : 74582.90341654317, + "99.9999" : 74582.90341654317, + "100.0" : 74582.90341654317 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73982.80358736034, + 73968.40426692912, + 73968.07965727508 + ], + [ + 74566.16274807396, + 74545.91059918552, + 74582.90341654317 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 358.50599781778834, + "scoreError" : 11.310423788100827, + "scoreConfidence" : [ + 347.1955740296875, + 369.81642160588916 + ], + "scorePercentiles" : { + "0.0" : 354.1872944162811, + "50.0" : 358.6259102566306, + "90.0" : 362.3576173485875, + "95.0" : 362.3576173485875, + "99.0" : 362.3576173485875, + "99.9" : 362.3576173485875, + "99.99" : 362.3576173485875, + "99.999" : 362.3576173485875, + "99.9999" : 362.3576173485875, + "100.0" : 362.3576173485875 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.1872944162811, + 355.01996809710585, + 355.31789147164466 + ], + [ + 362.3576173485875, + 361.9339290416166, + 362.21928653149445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.66894571506573, + "scoreError" : 5.077425707609744, + "scoreConfidence" : [ + 110.59152000745598, + 120.74637142267548 + ], + "scorePercentiles" : { + "0.0" : 113.22014526544356, + "50.0" : 115.87076230118706, + "90.0" : 117.40345355174001, + "95.0" : 117.40345355174001, + "99.0" : 117.40345355174001, + "99.9" : 117.40345355174001, + "99.99" : 117.40345355174001, + "99.999" : 117.40345355174001, + "99.9999" : 117.40345355174001, + "100.0" : 117.40345355174001 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.22014526544356, + 114.42486420592014, + 114.57830931775703 + ], + [ + 117.40345355174001, + 117.16321528461707, + 117.22368666491666 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061308036583078034, + "scoreError" : 0.0012960963013278312, + "scoreConfidence" : [ + 0.0600119402817502, + 0.06260413288440586 + ], + "scorePercentiles" : { + "0.0" : 0.06083194671273541, + "50.0" : 0.06130769536717939, + "90.0" : 0.06176275952369188, + "95.0" : 0.06176275952369188, + "99.0" : 0.06176275952369188, + "99.9" : 0.06176275952369188, + "99.99" : 0.06176275952369188, + "99.999" : 0.06176275952369188, + "99.9999" : 0.06176275952369188, + "100.0" : 0.06176275952369188 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06169039015558105, + 0.06176275952369188, + 0.06173231526053595 + ], + [ + 0.060905807267146186, + 0.06083194671273541, + 0.06092500057877774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6978574528622545E-4, + "scoreError" : 2.8804646310127816E-5, + "scoreConfidence" : [ + 3.4098109897609763E-4, + 3.9859039159635326E-4 + ], + "scorePercentiles" : { + "0.0" : 3.599732699750661E-4, + "50.0" : 3.700691248737965E-4, + "90.0" : 3.7919445184600925E-4, + "95.0" : 3.7919445184600925E-4, + "99.0" : 3.7919445184600925E-4, + "99.9" : 3.7919445184600925E-4, + "99.99" : 3.7919445184600925E-4, + "99.999" : 3.7919445184600925E-4, + "99.9999" : 3.7919445184600925E-4, + "100.0" : 3.7919445184600925E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7908868919217677E-4, + 3.7918802546846173E-4, + 3.7919445184600925E-4 + ], + [ + 3.602204746802226E-4, + 3.610495605554163E-4, + 3.599732699750661E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2984450825409515, + "scoreError" : 0.06247796819270518, + "scoreConfidence" : [ + 2.2359671143482465, + 2.3609230507336565 + ], + "scorePercentiles" : { + "0.0" : 2.2550255170236753, + "50.0" : 2.2963708047992473, + "90.0" : 2.3735609150681896, + "95.0" : 2.3766705962452472, + "99.0" : 2.3766705962452472, + "99.9" : 2.3766705962452472, + "99.99" : 2.3766705962452472, + "99.999" : 2.3766705962452472, + "99.9999" : 2.3766705962452472, + "100.0" : 2.3766705962452472 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.320249714153132, + 2.3766705962452472, + 2.3129362430619795, + 2.2550255170236753, + 2.2565208264891696 + ], + [ + 2.345573784474672, + 2.3030489090490445, + 2.2896927005494505, + 2.2620621149061297, + 2.2626704194570135 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013606860141480201, + "scoreError" : 3.7307320519917636E-4, + "scoreConfidence" : [ + 0.013233786936281024, + 0.013979933346679378 + ], + "scorePercentiles" : { + "0.0" : 0.013483910160779681, + "50.0" : 0.013605018602527467, + "90.0" : 0.01373194384261211, + "95.0" : 0.01373194384261211, + "99.0" : 0.01373194384261211, + "99.9" : 0.01373194384261211, + "99.99" : 0.01373194384261211, + "99.999" : 0.01373194384261211, + "99.9999" : 0.01373194384261211, + "100.0" : 0.01373194384261211 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013730945973444644, + 0.01373194384261211, + 0.013721890986331784 + ], + [ + 0.013484323666989838, + 0.01348814621872315, + 0.013483910160779681 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0094466817045884, + "scoreError" : 0.012517406569889786, + "scoreConfidence" : [ + 0.9969292751346986, + 1.0219640882744783 + ], + "scorePercentiles" : { + "0.0" : 1.0048441890072348, + "50.0" : 1.009483349726306, + "90.0" : 1.013677873809041, + "95.0" : 1.013677873809041, + "99.0" : 1.013677873809041, + "99.9" : 1.013677873809041, + "99.99" : 1.013677873809041, + "99.999" : 1.013677873809041, + "99.9999" : 1.013677873809041, + "100.0" : 1.013677873809041 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0133115514236497, + 1.013677873809041, + 1.013544431438127 + ], + [ + 1.0056551480289622, + 1.0048441890072348, + 1.005646896520515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010940957687832716, + "scoreError" : 3.274447266980534E-4, + "scoreConfidence" : [ + 0.010613512961134662, + 0.01126840241453077 + ], + "scorePercentiles" : { + "0.0" : 0.01083395779210227, + "50.0" : 0.010940101542594474, + "90.0" : 0.011051805549170254, + "95.0" : 0.011051805549170254, + "99.0" : 0.011051805549170254, + "99.9" : 0.011051805549170254, + "99.99" : 0.011051805549170254, + "99.999" : 0.011051805549170254, + "99.9999" : 0.011051805549170254, + "100.0" : 0.011051805549170254 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010834255077343768, + 0.010834938060691161, + 0.01083395779210227 + ], + [ + 0.011045265024497784, + 0.011045524623191062, + 0.011051805549170254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.005894334878715, + "scoreError" : 0.13420488329212987, + "scoreConfidence" : [ + 2.871689451586585, + 3.140099218170845 + ], + "scorePercentiles" : { + "0.0" : 2.961421139135583, + "50.0" : 3.0048807512100897, + "90.0" : 3.0515776955460647, + "95.0" : 3.0515776955460647, + "99.0" : 3.0515776955460647, + "99.9" : 3.0515776955460647, + "99.99" : 3.0515776955460647, + "99.999" : 3.0515776955460647, + "99.9999" : 3.0515776955460647, + "100.0" : 3.0515776955460647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.961421139135583, + 2.96166996625222, + 2.9636442831753556 + ], + [ + 3.0515776955460647, + 3.0461172192448234, + 3.050935705918243 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7748131192422254, + "scoreError" : 0.010805884825145603, + "scoreConfidence" : [ + 2.76400723441708, + 2.785619004067371 + ], + "scorePercentiles" : { + "0.0" : 2.770273811357341, + "50.0" : 2.7746606380087213, + "90.0" : 2.7808075665832637, + "95.0" : 2.7808075665832637, + "99.0" : 2.7808075665832637, + "99.9" : 2.7808075665832637, + "99.99" : 2.7808075665832637, + "99.999" : 2.7808075665832637, + "99.9999" : 2.7808075665832637, + "100.0" : 2.7808075665832637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.770273811357341, + 2.773268169717138, + 2.771676582317073 + ], + [ + 2.776053106300305, + 2.7767994791782344, + 2.7808075665832637 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1848705224547488, + "scoreError" : 0.03374183665216868, + "scoreConfidence" : [ + 0.15112868580258013, + 0.21861235910691748 + ], + "scorePercentiles" : { + "0.0" : 0.1738388615930188, + "50.0" : 0.18486622901291733, + "90.0" : 0.1959017577722491, + "95.0" : 0.1959017577722491, + "99.0" : 0.1959017577722491, + "99.9" : 0.1959017577722491, + "99.99" : 0.1959017577722491, + "99.999" : 0.1959017577722491, + "99.9999" : 0.1959017577722491, + "100.0" : 0.1959017577722491 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1957884436243319, + 0.19587388537626826, + 0.1959017577722491 + ], + [ + 0.17394401440150276, + 0.1738388615930188, + 0.17387617196112184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32782790137313605, + "scoreError" : 0.014024198854110981, + "scoreConfidence" : [ + 0.31380370251902506, + 0.34185210022724705 + ], + "scorePercentiles" : { + "0.0" : 0.3231566922704065, + "50.0" : 0.3276213205926992, + "90.0" : 0.3330608998168193, + "95.0" : 0.3330608998168193, + "99.0" : 0.3330608998168193, + "99.9" : 0.3330608998168193, + "99.99" : 0.3330608998168193, + "99.999" : 0.3330608998168193, + "99.9999" : 0.3330608998168193, + "100.0" : 0.3330608998168193 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3234106920862844, + 0.3231566922704065, + 0.3232647914983029 + ], + [ + 0.3330608998168193, + 0.33183194909911407, + 0.3322423834678893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14500696484986755, + "scoreError" : 0.003669228959419107, + "scoreConfidence" : [ + 0.14133773589044846, + 0.14867619380928665 + ], + "scorePercentiles" : { + "0.0" : 0.1436726480518361, + "50.0" : 0.14505250257753702, + "90.0" : 0.14625810623765997, + "95.0" : 0.14625810623765997, + "99.0" : 0.14625810623765997, + "99.9" : 0.14625810623765997, + "99.99" : 0.14625810623765997, + "99.999" : 0.14625810623765997, + "99.9999" : 0.14625810623765997, + "100.0" : 0.14625810623765997 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14625810623765997, + 0.14616711723694403, + 0.14617048313966235 + ], + [ + 0.14383554651497282, + 0.14393788791813, + 0.1436726480518361 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3990304949743202, + "scoreError" : 0.023773515064168343, + "scoreConfidence" : [ + 0.37525697991015183, + 0.42280401003848855 + ], + "scorePercentiles" : { + "0.0" : 0.3913256195656427, + "50.0" : 0.398245167759847, + "90.0" : 0.4093590786769823, + "95.0" : 0.4093590786769823, + "99.0" : 0.4093590786769823, + "99.9" : 0.4093590786769823, + "99.99" : 0.4093590786769823, + "99.999" : 0.4093590786769823, + "99.9999" : 0.4093590786769823, + "100.0" : 0.4093590786769823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4093590786769823, + 0.4050236961240938, + 0.4055623443507178 + ], + [ + 0.3913256195656427, + 0.3914666393956001, + 0.3914455917328845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1573914933575806, + "scoreError" : 0.0025462428469788323, + "scoreConfidence" : [ + 0.15484525051060177, + 0.15993773620455942 + ], + "scorePercentiles" : { + "0.0" : 0.1564783146241472, + "50.0" : 0.15740681349678315, + "90.0" : 0.1583921985396604, + "95.0" : 0.1583921985396604, + "99.0" : 0.1583921985396604, + "99.9" : 0.1583921985396604, + "99.99" : 0.1583921985396604, + "99.999" : 0.1583921985396604, + "99.9999" : 0.1583921985396604, + "100.0" : 0.1583921985396604 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15671211301772367, + 0.15652170694944437, + 0.1564783146241472 + ], + [ + 0.15810151397584266, + 0.1583921985396604, + 0.1581431130386653 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04673965841320554, + "scoreError" : 5.522774934194014E-4, + "scoreConfidence" : [ + 0.04618738091978614, + 0.04729193590662494 + ], + "scorePercentiles" : { + "0.0" : 0.04645369147260894, + "50.0" : 0.0467052195842247, + "90.0" : 0.04703625385103831, + "95.0" : 0.04703625385103831, + "99.0" : 0.04703625385103831, + "99.9" : 0.04703625385103831, + "99.99" : 0.04703625385103831, + "99.999" : 0.04703625385103831, + "99.9999" : 0.04703625385103831, + "100.0" : 0.04703625385103831 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04703625385103831, + 0.04686860591190724, + 0.04645369147260894 + ], + [ + 0.04671516480898415, + 0.046668960075229374, + 0.04669527435946525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8715377.581151882, + "scoreError" : 198578.84507244098, + "scoreConfidence" : [ + 8516798.736079441, + 8913956.426224323 + ], + "scorePercentiles" : { + "0.0" : 8646876.089023337, + "50.0" : 8718291.34030531, + "90.0" : 8782186.192273924, + "95.0" : 8782186.192273924, + "99.0" : 8782186.192273924, + "99.9" : 8782186.192273924, + "99.99" : 8782186.192273924, + "99.999" : 8782186.192273924, + "99.9999" : 8782186.192273924, + "100.0" : 8782186.192273924 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8782186.192273924, + 8777885.87368421, + 8779603.260526316 + ], + [ + 8658696.806926407, + 8646876.089023337, + 8647017.264477096 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-03T00:31:23Z-7afaeef534eb67767fc67dcded65e4a7759b71f8-jdk17.json b/performance-results/2025-11-03T00:31:23Z-7afaeef534eb67767fc67dcded65e4a7759b71f8-jdk17.json new file mode 100644 index 0000000000..b0f32d8e5e --- /dev/null +++ b/performance-results/2025-11-03T00:31:23Z-7afaeef534eb67767fc67dcded65e4a7759b71f8-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.338851040015466, + "scoreError" : 0.047754666231120485, + "scoreConfidence" : [ + 3.2910963737843457, + 3.3866057062465864 + ], + "scorePercentiles" : { + "0.0" : 3.3313057804470665, + "50.0" : 3.339162959616608, + "90.0" : 3.3457724603815806, + "95.0" : 3.3457724603815806, + "99.0" : 3.3457724603815806, + "99.9" : 3.3457724603815806, + "99.99" : 3.3457724603815806, + "99.999" : 3.3457724603815806, + "99.9999" : 3.3457724603815806, + "100.0" : 3.3457724603815806 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3313057804470665, + 3.3457724603815806 + ], + [ + 3.333740386956628, + 3.3445855322765876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6800604945260473, + "scoreError" : 0.019392526322408534, + "scoreConfidence" : [ + 1.6606679682036387, + 1.699453020848456 + ], + "scorePercentiles" : { + "0.0" : 1.6760121933069514, + "50.0" : 1.6807048427156537, + "90.0" : 1.6828200993659297, + "95.0" : 1.6828200993659297, + "99.0" : 1.6828200993659297, + "99.9" : 1.6828200993659297, + "99.99" : 1.6828200993659297, + "99.999" : 1.6828200993659297, + "99.9999" : 1.6828200993659297, + "100.0" : 1.6828200993659297 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6760121933069514, + 1.679659916703582 + ], + [ + 1.6817497687277256, + 1.6828200993659297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8435235397020698, + "scoreError" : 0.028135573439379998, + "scoreConfidence" : [ + 0.8153879662626898, + 0.8716591131414498 + ], + "scorePercentiles" : { + "0.0" : 0.8392332772388195, + "50.0" : 0.8428235337044931, + "90.0" : 0.8492138141604734, + "95.0" : 0.8492138141604734, + "99.0" : 0.8492138141604734, + "99.9" : 0.8492138141604734, + "99.99" : 0.8492138141604734, + "99.999" : 0.8492138141604734, + "99.9999" : 0.8492138141604734, + "100.0" : 0.8492138141604734 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8412256215269625, + 0.844421445882024 + ], + [ + 0.8392332772388195, + 0.8492138141604734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.03161159787452, + "scoreError" : 0.243417215367289, + "scoreConfidence" : [ + 15.78819438250723, + 16.275028813241807 + ], + "scorePercentiles" : { + "0.0" : 15.888823474094021, + "50.0" : 16.065117484217957, + "90.0" : 16.114313785615696, + "95.0" : 16.114313785615696, + "99.0" : 16.114313785615696, + "99.9" : 16.114313785615696, + "99.99" : 16.114313785615696, + "99.999" : 16.114313785615696, + "99.9999" : 16.114313785615696, + "100.0" : 16.114313785615696 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.07842885980708, + 16.114313785615696, + 16.090693527438795 + ], + [ + 15.888823474094021, + 16.051806108628835, + 15.965603831662682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2693.1539295752973, + "scoreError" : 210.29242172306684, + "scoreConfidence" : [ + 2482.8615078522303, + 2903.4463512983643 + ], + "scorePercentiles" : { + "0.0" : 2584.0895296204944, + "50.0" : 2692.8387653481313, + "90.0" : 2776.8278413028997, + "95.0" : 2776.8278413028997, + "99.0" : 2776.8278413028997, + "99.9" : 2776.8278413028997, + "99.99" : 2776.8278413028997, + "99.999" : 2776.8278413028997, + "99.9999" : 2776.8278413028997, + "100.0" : 2776.8278413028997 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2584.0895296204944, + 2681.006917139994, + 2640.574187752328 + ], + [ + 2771.754488079799, + 2704.6706135562686, + 2776.8278413028997 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73500.41533106759, + "scoreError" : 2258.5840663723475, + "scoreConfidence" : [ + 71241.83126469524, + 75758.99939743994 + ], + "scorePercentiles" : { + "0.0" : 72528.0723787537, + "50.0" : 73555.08735753338, + "90.0" : 74299.894113401, + "95.0" : 74299.894113401, + "99.0" : 74299.894113401, + "99.9" : 74299.894113401, + "99.99" : 74299.894113401, + "99.999" : 74299.894113401, + "99.9999" : 74299.894113401, + "100.0" : 74299.894113401 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72829.2712846707, + 72979.3924319122, + 72528.0723787537 + ], + [ + 74130.78228315456, + 74235.07949451337, + 74299.894113401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.9140217646739, + "scoreError" : 14.238212631464789, + "scoreConfidence" : [ + 332.67580913320916, + 361.1522343961387 + ], + "scorePercentiles" : { + "0.0" : 340.0957261190386, + "50.0" : 348.34802506179386, + "90.0" : 352.0222681676523, + "95.0" : 352.0222681676523, + "99.0" : 352.0222681676523, + "99.9" : 352.0222681676523, + "99.99" : 352.0222681676523, + "99.999" : 352.0222681676523, + "99.9999" : 352.0222681676523, + "100.0" : 352.0222681676523 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.606978882465, + 351.25275485358424, + 352.0222681676523 + ], + [ + 341.4173313241806, + 340.0957261190386, + 347.0890712411227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.72182295421091, + "scoreError" : 2.3848719718328297, + "scoreConfidence" : [ + 111.33695098237808, + 116.10669492604373 + ], + "scorePercentiles" : { + "0.0" : 112.44458552038664, + "50.0" : 113.83317053044219, + "90.0" : 114.86895202500958, + "95.0" : 114.86895202500958, + "99.0" : 114.86895202500958, + "99.9" : 114.86895202500958, + "99.99" : 114.86895202500958, + "99.999" : 114.86895202500958, + "99.9999" : 114.86895202500958, + "100.0" : 114.86895202500958 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.13672828470678, + 114.21433083427812, + 114.00571746546578 + ], + [ + 112.44458552038664, + 113.6606235954186, + 114.86895202500958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062395982043706937, + "scoreError" : 0.0011444521084475385, + "scoreConfidence" : [ + 0.0612515299352594, + 0.06354043415215448 + ], + "scorePercentiles" : { + "0.0" : 0.06184447802693911, + "50.0" : 0.0626117205685088, + "90.0" : 0.06272703167653552, + "95.0" : 0.06272703167653552, + "99.0" : 0.06272703167653552, + "99.9" : 0.06272703167653552, + "99.99" : 0.06272703167653552, + "99.999" : 0.06272703167653552, + "99.9999" : 0.06272703167653552, + "100.0" : 0.06272703167653552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06261038335837717, + 0.06261305777864043, + 0.06272703167653552 + ], + [ + 0.06190078182741054, + 0.06184447802693911, + 0.0626801595943388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.834644697716739E-4, + "scoreError" : 1.8133161136988404E-5, + "scoreConfidence" : [ + 3.653313086346855E-4, + 4.015976309086623E-4 + ], + "scorePercentiles" : { + "0.0" : 3.758408125828908E-4, + "50.0" : 3.8358266583541354E-4, + "90.0" : 3.9165436489979686E-4, + "95.0" : 3.9165436489979686E-4, + "99.0" : 3.9165436489979686E-4, + "99.9" : 3.9165436489979686E-4, + "99.99" : 3.9165436489979686E-4, + "99.999" : 3.9165436489979686E-4, + "99.9999" : 3.9165436489979686E-4, + "100.0" : 3.9165436489979686E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.758408125828908E-4, + 3.797167618284504E-4, + 3.7788432697965347E-4 + ], + [ + 3.8744856984237666E-4, + 3.8824198249687525E-4, + 3.9165436489979686E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.287399423749537, + "scoreError" : 0.05648190036612994, + "scoreConfidence" : [ + 2.230917523383407, + 2.343881324115667 + ], + "scorePercentiles" : { + "0.0" : 2.2303623320695807, + "50.0" : 2.2864320740596065, + "90.0" : 2.34749072976074, + "95.0" : 2.3501509534774434, + "99.0" : 2.3501509534774434, + "99.9" : 2.3501509534774434, + "99.99" : 2.3501509534774434, + "99.999" : 2.3501509534774434, + "99.9999" : 2.3501509534774434, + "100.0" : 2.3501509534774434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.299269732643678, + 2.27613740873919, + 2.296726739380023, + 2.2730379295454544, + 2.273541474426006 + ], + [ + 2.323548716310409, + 2.3501509534774434, + 2.314549489932886, + 2.2366694609707, + 2.2303623320695807 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01363144268594813, + "scoreError" : 3.210461024017795E-4, + "scoreConfidence" : [ + 0.01331039658354635, + 0.01395248878834991 + ], + "scorePercentiles" : { + "0.0" : 0.013480149203131129, + "50.0" : 0.013644903103147591, + "90.0" : 0.013755843276160187, + "95.0" : 0.013755843276160187, + "99.0" : 0.013755843276160187, + "99.9" : 0.013755843276160187, + "99.99" : 0.013755843276160187, + "99.999" : 0.013755843276160187, + "99.9999" : 0.013755843276160187, + "100.0" : 0.013755843276160187 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013709053226038617, + 0.013755843276160187, + 0.0137278123115909 + ], + [ + 0.013580752980256565, + 0.01353504511851138, + 0.013480149203131129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0274229580074778, + "scoreError" : 0.020567815223362575, + "scoreConfidence" : [ + 1.0068551427841153, + 1.0479907732308404 + ], + "scorePercentiles" : { + "0.0" : 1.017064719007424, + "50.0" : 1.0277226276139957, + "90.0" : 1.036484477458804, + "95.0" : 1.036484477458804, + "99.0" : 1.036484477458804, + "99.9" : 1.036484477458804, + "99.99" : 1.036484477458804, + "99.999" : 1.036484477458804, + "99.9999" : 1.036484477458804, + "100.0" : 1.036484477458804 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.036484477458804, + 1.0306988530351437, + 1.033314430460839 + ], + [ + 1.0222288658898089, + 1.017064719007424, + 1.0247464021928476 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010579283252758502, + "scoreError" : 7.87971924020664E-4, + "scoreConfidence" : [ + 0.009791311328737838, + 0.011367255176779166 + ], + "scorePercentiles" : { + "0.0" : 0.010289162674936158, + "50.0" : 0.010581860290922916, + "90.0" : 0.010874904633586707, + "95.0" : 0.010874904633586707, + "99.0" : 0.010874904633586707, + "99.9" : 0.010874904633586707, + "99.99" : 0.010874904633586707, + "99.999" : 0.010874904633586707, + "99.9999" : 0.010874904633586707, + "100.0" : 0.010874904633586707 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010289162674936158, + 0.010301363718210737, + 0.010388785761479327 + ], + [ + 0.010846547907971574, + 0.010774934820366507, + 0.010874904633586707 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.198229494752843, + "scoreError" : 0.3974107624382248, + "scoreConfidence" : [ + 2.8008187323146183, + 3.595640257191068 + ], + "scorePercentiles" : { + "0.0" : 3.0548731111789857, + "50.0" : 3.1678394153920157, + "90.0" : 3.3912169545762714, + "95.0" : 3.3912169545762714, + "99.0" : 3.3912169545762714, + "99.9" : 3.3912169545762714, + "99.99" : 3.3912169545762714, + "99.999" : 3.3912169545762714, + "99.9999" : 3.3912169545762714, + "100.0" : 3.3912169545762714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.085570961752005, + 3.0879616574074076, + 3.0548731111789857 + ], + [ + 3.3220371102257635, + 3.3912169545762714, + 3.2477171733766235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.867815433534951, + "scoreError" : 0.05507173609449702, + "scoreConfidence" : [ + 2.8127436974404536, + 2.922887169629448 + ], + "scorePercentiles" : { + "0.0" : 2.8462401346044395, + "50.0" : 2.8657226108916256, + "90.0" : 2.8929361298814, + "95.0" : 2.8929361298814, + "99.0" : 2.8929361298814, + "99.9" : 2.8929361298814, + "99.99" : 2.8929361298814, + "99.999" : 2.8929361298814, + "99.9999" : 2.8929361298814, + "100.0" : 2.8929361298814 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8462401346044395, + 2.849602194017094, + 2.8574765597142857 + ], + [ + 2.886668920923521, + 2.8929361298814, + 2.8739686620689655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1811501483612857, + "scoreError" : 0.01407224194100451, + "scoreConfidence" : [ + 0.1670779064202812, + 0.19522239030229022 + ], + "scorePercentiles" : { + "0.0" : 0.1746134868083323, + "50.0" : 0.18238340268334705, + "90.0" : 0.18574356217611768, + "95.0" : 0.18574356217611768, + "99.0" : 0.18574356217611768, + "99.9" : 0.18574356217611768, + "99.99" : 0.18574356217611768, + "99.999" : 0.18574356217611768, + "99.9999" : 0.18574356217611768, + "100.0" : 0.18574356217611768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1795984258903396, + 0.1746134868083323, + 0.17623028830733986 + ], + [ + 0.18554674750923023, + 0.18516837947635448, + 0.18574356217611768 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3452374280541257, + "scoreError" : 0.06544022307005015, + "scoreConfidence" : [ + 0.27979720498407556, + 0.41067765112417587 + ], + "scorePercentiles" : { + "0.0" : 0.3228209660726968, + "50.0" : 0.34423442750593003, + "90.0" : 0.3715529136912502, + "95.0" : 0.3715529136912502, + "99.0" : 0.3715529136912502, + "99.9" : 0.3715529136912502, + "99.99" : 0.3715529136912502, + "99.999" : 0.3715529136912502, + "99.9999" : 0.3715529136912502, + "100.0" : 0.3715529136912502 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3228209660726968, + 0.3251469417693533, + 0.32434703064997406 + ], + [ + 0.3715529136912502, + 0.364234802898973, + 0.3633219132425068 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1455967067783341, + "scoreError" : 0.0031735430006814046, + "scoreConfidence" : [ + 0.1424231637776527, + 0.1487702497790155 + ], + "scorePercentiles" : { + "0.0" : 0.14426401736897532, + "50.0" : 0.1456170108735834, + "90.0" : 0.14692406889104373, + "95.0" : 0.14692406889104373, + "99.0" : 0.14692406889104373, + "99.9" : 0.14692406889104373, + "99.99" : 0.14692406889104373, + "99.999" : 0.14692406889104373, + "99.9999" : 0.14692406889104373, + "100.0" : 0.14692406889104373 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14426401736897532, + 0.14444310967313276, + 0.14524037285230854 + ], + [ + 0.1467150229896862, + 0.14599364889485825, + 0.14692406889104373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3970719375983826, + "scoreError" : 0.007360635333864862, + "scoreConfidence" : [ + 0.3897113022645177, + 0.4044325729322475 + ], + "scorePercentiles" : { + "0.0" : 0.39446546197538657, + "50.0" : 0.3969462258287454, + "90.0" : 0.4001840756332786, + "95.0" : 0.4001840756332786, + "99.0" : 0.4001840756332786, + "99.9" : 0.4001840756332786, + "99.99" : 0.4001840756332786, + "99.999" : 0.4001840756332786, + "99.9999" : 0.4001840756332786, + "100.0" : 0.4001840756332786 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39446546197538657, + 0.39473431976790085, + 0.3949295263802227 + ], + [ + 0.4001840756332786, + 0.39915531655623854, + 0.398962925277268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15628538885826707, + "scoreError" : 0.003218721364228217, + "scoreConfidence" : [ + 0.15306666749403885, + 0.15950411022249528 + ], + "scorePercentiles" : { + "0.0" : 0.15508311317711646, + "50.0" : 0.1563108235778879, + "90.0" : 0.15745303358208956, + "95.0" : 0.15745303358208956, + "99.0" : 0.15745303358208956, + "99.9" : 0.15745303358208956, + "99.99" : 0.15745303358208956, + "99.999" : 0.15745303358208956, + "99.9999" : 0.15745303358208956, + "100.0" : 0.15745303358208956 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15538224018396807, + 0.15526417690802957, + 0.15508311317711646 + ], + [ + 0.15729036232659097, + 0.15745303358208956, + 0.15723940697180774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047176598701910065, + "scoreError" : 0.0012509597036877182, + "scoreConfidence" : [ + 0.04592563899822235, + 0.04842755840559778 + ], + "scorePercentiles" : { + "0.0" : 0.04653195050463219, + "50.0" : 0.04724167716329663, + "90.0" : 0.04758861540804332, + "95.0" : 0.04758861540804332, + "99.0" : 0.04758861540804332, + "99.9" : 0.04758861540804332, + "99.99" : 0.04758861540804332, + "99.999" : 0.04758861540804332, + "99.9999" : 0.04758861540804332, + "100.0" : 0.04758861540804332 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046960089691994875, + 0.04688329851054154, + 0.04653195050463219 + ], + [ + 0.04752326463459838, + 0.04758861540804332, + 0.04757237346165007 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8711442.049987761, + "scoreError" : 170063.394430552, + "scoreConfidence" : [ + 8541378.65555721, + 8881505.444418313 + ], + "scorePercentiles" : { + "0.0" : 8634824.708369283, + "50.0" : 8727806.282404942, + "90.0" : 8793714.970123023, + "95.0" : 8793714.970123023, + "99.0" : 8793714.970123023, + "99.9" : 8793714.970123023, + "99.99" : 8793714.970123023, + "99.999" : 8793714.970123023, + "99.9999" : 8793714.970123023, + "100.0" : 8793714.970123023 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8645903.43042351, + 8737359.46724891, + 8634824.708369283 + ], + [ + 8718253.097560976, + 8793714.970123023, + 8738596.626200873 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-03T05:39:19Z-f28e60c1f83f6218e8a5ccdd7c544c95d676684d-jdk17.json b/performance-results/2025-11-03T05:39:19Z-f28e60c1f83f6218e8a5ccdd7c544c95d676684d-jdk17.json new file mode 100644 index 0000000000..21738ca05e --- /dev/null +++ b/performance-results/2025-11-03T05:39:19Z-f28e60c1f83f6218e8a5ccdd7c544c95d676684d-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.34878606965172, + "scoreError" : 0.054919289121376676, + "scoreConfidence" : [ + 3.2938667805303434, + 3.4037053587730965 + ], + "scorePercentiles" : { + "0.0" : 3.339189284968844, + "50.0" : 3.3481622829193225, + "90.0" : 3.359630427799391, + "95.0" : 3.359630427799391, + "99.0" : 3.359630427799391, + "99.9" : 3.359630427799391, + "99.99" : 3.359630427799391, + "99.999" : 3.359630427799391, + "99.9999" : 3.359630427799391, + "100.0" : 3.359630427799391 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.346399718811323, + 3.359630427799391 + ], + [ + 3.339189284968844, + 3.349924847027322 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.693938428811356, + "scoreError" : 0.03404838941527292, + "scoreConfidence" : [ + 1.659890039396083, + 1.727986818226629 + ], + "scorePercentiles" : { + "0.0" : 1.6874096924326163, + "50.0" : 1.694619467333157, + "90.0" : 1.6991050881464935, + "95.0" : 1.6991050881464935, + "99.0" : 1.6991050881464935, + "99.9" : 1.6991050881464935, + "99.99" : 1.6991050881464935, + "99.999" : 1.6991050881464935, + "99.9999" : 1.6991050881464935, + "100.0" : 1.6991050881464935 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6971730441482407, + 1.6991050881464935 + ], + [ + 1.6920658905180732, + 1.6874096924326163 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8491484239698657, + "scoreError" : 0.04400095492111771, + "scoreConfidence" : [ + 0.805147469048748, + 0.8931493788909833 + ], + "scorePercentiles" : { + "0.0" : 0.8392460794092773, + "50.0" : 0.8512692893724247, + "90.0" : 0.854809037725336, + "95.0" : 0.854809037725336, + "99.0" : 0.854809037725336, + "99.9" : 0.854809037725336, + "99.99" : 0.854809037725336, + "99.999" : 0.854809037725336, + "99.9999" : 0.854809037725336, + "100.0" : 0.854809037725336 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8512559830154341, + 0.8512825957294153 + ], + [ + 0.8392460794092773, + 0.854809037725336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.399613036279742, + "scoreError" : 0.10388828914932066, + "scoreConfidence" : [ + 16.29572474713042, + 16.503501325429063 + ], + "scorePercentiles" : { + "0.0" : 16.35411569024037, + "50.0" : 16.396037208898328, + "90.0" : 16.445764541055336, + "95.0" : 16.445764541055336, + "99.0" : 16.445764541055336, + "99.9" : 16.445764541055336, + "99.99" : 16.445764541055336, + "99.999" : 16.445764541055336, + "99.9999" : 16.445764541055336, + "100.0" : 16.445764541055336 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.445764541055336, + 16.435694396037384, + 16.41120292276357 + ], + [ + 16.37002917254871, + 16.38087149503308, + 16.35411569024037 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2754.850209368849, + "scoreError" : 44.099312945455075, + "scoreConfidence" : [ + 2710.750896423394, + 2798.949522314304 + ], + "scorePercentiles" : { + "0.0" : 2736.8428169579456, + "50.0" : 2754.0594272191156, + "90.0" : 2774.0030909413963, + "95.0" : 2774.0030909413963, + "99.0" : 2774.0030909413963, + "99.9" : 2774.0030909413963, + "99.99" : 2774.0030909413963, + "99.999" : 2774.0030909413963, + "99.9999" : 2774.0030909413963, + "100.0" : 2774.0030909413963 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2774.0030909413963, + 2763.4022542780353, + 2768.661470436311 + ], + [ + 2741.4750234392086, + 2744.716600160196, + 2736.8428169579456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71742.34723503793, + "scoreError" : 1296.2451233409079, + "scoreConfidence" : [ + 70446.10211169702, + 73038.59235837884 + ], + "scorePercentiles" : { + "0.0" : 71279.37123475065, + "50.0" : 71761.52672694647, + "90.0" : 72220.81173347631, + "95.0" : 72220.81173347631, + "99.0" : 72220.81173347631, + "99.9" : 72220.81173347631, + "99.99" : 72220.81173347631, + "99.999" : 72220.81173347631, + "99.9999" : 72220.81173347631, + "100.0" : 72220.81173347631 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72220.81173347631, + 72125.57245792563, + 72138.43197988952 + ], + [ + 71279.37123475065, + 71292.41500821811, + 71397.4809959673 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 369.37929912629926, + "scoreError" : 18.243374911111466, + "scoreConfidence" : [ + 351.1359242151878, + 387.6226740374107 + ], + "scorePercentiles" : { + "0.0" : 363.05767368353474, + "50.0" : 369.3683557305564, + "90.0" : 375.6515112410154, + "95.0" : 375.6515112410154, + "99.0" : 375.6515112410154, + "99.9" : 375.6515112410154, + "99.99" : 375.6515112410154, + "99.999" : 375.6515112410154, + "99.9999" : 375.6515112410154, + "100.0" : 375.6515112410154 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 363.6373850241265, + 363.05767368353474, + 363.6430650598611 + ], + [ + 375.0936464012517, + 375.192513348006, + 375.6515112410154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.17908600423998, + "scoreError" : 4.559808918512926, + "scoreConfidence" : [ + 110.61927708572705, + 119.7388949227529 + ], + "scorePercentiles" : { + "0.0" : 113.5002174415385, + "50.0" : 115.2346315387374, + "90.0" : 116.9522325096579, + "95.0" : 116.9522325096579, + "99.0" : 116.9522325096579, + "99.9" : 116.9522325096579, + "99.99" : 116.9522325096579, + "99.999" : 116.9522325096579, + "99.9999" : 116.9522325096579, + "100.0" : 116.9522325096579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 116.9522325096579, + 116.64181400092161, + 116.31389231373902 + ], + [ + 113.5002174415385, + 113.51098899584704, + 114.15537076373579 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060782098381352366, + "scoreError" : 5.805433432615847E-4, + "scoreConfidence" : [ + 0.060201555038090784, + 0.06136264172461395 + ], + "scorePercentiles" : { + "0.0" : 0.06052403259172285, + "50.0" : 0.060793818844840405, + "90.0" : 0.061002763222106994, + "95.0" : 0.061002763222106994, + "99.0" : 0.061002763222106994, + "99.9" : 0.061002763222106994, + "99.99" : 0.061002763222106994, + "99.999" : 0.061002763222106994, + "99.9999" : 0.061002763222106994, + "100.0" : 0.061002763222106994 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06093795618632087, + 0.06095802715025907, + 0.061002763222106994 + ], + [ + 0.06064968150335994, + 0.06052403259172285, + 0.06062012963434446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.721377179285996E-4, + "scoreError" : 5.920970720784705E-5, + "scoreConfidence" : [ + 3.1292801072075254E-4, + 4.313474251364466E-4 + ], + "scorePercentiles" : { + "0.0" : 3.522345232547696E-4, + "50.0" : 3.7216431256680016E-4, + "90.0" : 3.9180112321753215E-4, + "95.0" : 3.9180112321753215E-4, + "99.0" : 3.9180112321753215E-4, + "99.9" : 3.9180112321753215E-4, + "99.99" : 3.9180112321753215E-4, + "99.999" : 3.9180112321753215E-4, + "99.9999" : 3.9180112321753215E-4, + "100.0" : 3.9180112321753215E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5340331120211124E-4, + 3.529643639188084E-4, + 3.522345232547696E-4 + ], + [ + 3.909253139314891E-4, + 3.9149767204688676E-4, + 3.9180112321753215E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2314491388984314, + "scoreError" : 0.052739180611990705, + "scoreConfidence" : [ + 2.178709958286441, + 2.284188319510422 + ], + "scorePercentiles" : { + "0.0" : 2.1795928640226627, + "50.0" : 2.2286018949347404, + "90.0" : 2.2877012800566874, + "95.0" : 2.289715370650183, + "99.0" : 2.289715370650183, + "99.9" : 2.289715370650183, + "99.99" : 2.289715370650183, + "99.999" : 2.289715370650183, + "99.9999" : 2.289715370650183, + "100.0" : 2.289715370650183 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.253824037863421, + 2.2216473258551757, + 2.235556464014305, + 2.184422264525994, + 2.1795928640226627 + ], + [ + 2.289715370650183, + 2.245367233722497, + 2.269574464715226, + 2.2178781332889774, + 2.2169132303258703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01330657690880029, + "scoreError" : 4.72080511413149E-5, + "scoreConfidence" : [ + 0.013259368857658976, + 0.013353784959941606 + ], + "scorePercentiles" : { + "0.0" : 0.013287191297011088, + "50.0" : 0.013302617131281133, + "90.0" : 0.013328422127028894, + "95.0" : 0.013328422127028894, + "99.0" : 0.013328422127028894, + "99.9" : 0.013328422127028894, + "99.99" : 0.013328422127028894, + "99.999" : 0.013328422127028894, + "99.9999" : 0.013328422127028894, + "100.0" : 0.013328422127028894 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013309592061447056, + 0.013323806541096028, + 0.013328422127028894 + ], + [ + 0.013294807225103466, + 0.013287191297011088, + 0.01329564220111521 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0224144251013123, + "scoreError" : 0.08695241366628681, + "scoreConfidence" : [ + 0.9354620114350255, + 1.109366838767599 + ], + "scorePercentiles" : { + "0.0" : 0.9934269251018178, + "50.0" : 1.0218864224021, + "90.0" : 1.0535551176780447, + "95.0" : 1.0535551176780447, + "99.0" : 1.0535551176780447, + "99.9" : 1.0535551176780447, + "99.99" : 1.0535551176780447, + "99.999" : 1.0535551176780447, + "99.9999" : 1.0535551176780447, + "100.0" : 1.0535551176780447 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0483554215932913, + 1.0501068327207812, + 1.0535551176780447 + ], + [ + 0.9936248303030303, + 0.9934269251018178, + 0.9954174232109088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010743469306970834, + "scoreError" : 5.812565370481378E-4, + "scoreConfidence" : [ + 0.010162212769922697, + 0.011324725844018972 + ], + "scorePercentiles" : { + "0.0" : 0.01055238825763971, + "50.0" : 0.01074301251495343, + "90.0" : 0.010934640921904078, + "95.0" : 0.010934640921904078, + "99.0" : 0.010934640921904078, + "99.9" : 0.010934640921904078, + "99.99" : 0.010934640921904078, + "99.999" : 0.010934640921904078, + "99.9999" : 0.010934640921904078, + "100.0" : 0.010934640921904078 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010933654741601729, + 0.010934640921904078, + 0.010929748799398443 + ], + [ + 0.01055238825763971, + 0.010554106890772621, + 0.010556276230508418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.99824403795847, + "scoreError" : 0.04669198008056282, + "scoreConfidence" : [ + 2.951552057877907, + 3.044936018039033 + ], + "scorePercentiles" : { + "0.0" : 2.982036313059034, + "50.0" : 2.9951447591789404, + "90.0" : 3.0231775362756954, + "95.0" : 3.0231775362756954, + "99.0" : 3.0231775362756954, + "99.9" : 3.0231775362756954, + "99.99" : 3.0231775362756954, + "99.999" : 3.0231775362756954, + "99.9999" : 3.0231775362756954, + "100.0" : 3.0231775362756954 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9876025519713263, + 2.9834581628878283, + 2.982036313059034 + ], + [ + 3.0105026971703794, + 3.0231775362756954, + 3.0026869663865545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7203368005928628, + "scoreError" : 0.21779713240122703, + "scoreConfidence" : [ + 2.502539668191636, + 2.9381339329940896 + ], + "scorePercentiles" : { + "0.0" : 2.6395366215360254, + "50.0" : 2.720006403100175, + "90.0" : 2.801366812044818, + "95.0" : 2.801366812044818, + "99.0" : 2.801366812044818, + "99.9" : 2.801366812044818, + "99.99" : 2.801366812044818, + "99.999" : 2.801366812044818, + "99.9999" : 2.801366812044818, + "100.0" : 2.801366812044818 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.801366812044818, + 2.788420324783942, + 2.7826763208124654 + ], + [ + 2.6573364853878854, + 2.6395366215360254, + 2.6526842389920424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17783119663908956, + "scoreError" : 0.006615158104344093, + "scoreConfidence" : [ + 0.17121603853474546, + 0.18444635474343365 + ], + "scorePercentiles" : { + "0.0" : 0.17552657107752795, + "50.0" : 0.17784160479584976, + "90.0" : 0.18044190271187052, + "95.0" : 0.18044190271187052, + "99.0" : 0.18044190271187052, + "99.9" : 0.18044190271187052, + "99.99" : 0.18044190271187052, + "99.999" : 0.18044190271187052, + "99.9999" : 0.18044190271187052, + "100.0" : 0.18044190271187052 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17597202289364397, + 0.17558764173968008, + 0.17552657107752795 + ], + [ + 0.18044190271187052, + 0.17974785471375931, + 0.17971118669805555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32775898600507747, + "scoreError" : 0.014894209038956215, + "scoreConfidence" : [ + 0.31286477696612125, + 0.3426531950440337 + ], + "scorePercentiles" : { + "0.0" : 0.32217470911726803, + "50.0" : 0.3282566234125877, + "90.0" : 0.3336024789672082, + "95.0" : 0.3336024789672082, + "99.0" : 0.3336024789672082, + "99.9" : 0.3336024789672082, + "99.99" : 0.3336024789672082, + "99.999" : 0.3336024789672082, + "99.9999" : 0.3336024789672082, + "100.0" : 0.3336024789672082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32460995296523515, + 0.322240590416962, + 0.32217470911726803 + ], + [ + 0.33202289070385127, + 0.3336024789672082, + 0.3319032938599403 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14693683787283682, + "scoreError" : 0.008757927502277536, + "scoreConfidence" : [ + 0.1381789103705593, + 0.15569476537511434 + ], + "scorePercentiles" : { + "0.0" : 0.1439829489446252, + "50.0" : 0.14697574673266522, + "90.0" : 0.1498390602637099, + "95.0" : 0.1498390602637099, + "99.0" : 0.1498390602637099, + "99.9" : 0.1498390602637099, + "99.99" : 0.1498390602637099, + "99.999" : 0.1498390602637099, + "99.9999" : 0.1498390602637099, + "100.0" : 0.1498390602637099 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1442613120744374, + 0.1439829489446252, + 0.14401836664890477 + ], + [ + 0.14982915791445053, + 0.1498390602637099, + 0.14969018139089305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4080560238612739, + "scoreError" : 0.006385642299664086, + "scoreConfidence" : [ + 0.4016703815616098, + 0.41444166616093797 + ], + "scorePercentiles" : { + "0.0" : 0.40645890355226794, + "50.0" : 0.4068837434540745, + "90.0" : 0.41232288171023335, + "95.0" : 0.41232288171023335, + "99.0" : 0.41232288171023335, + "99.9" : 0.41232288171023335, + "99.99" : 0.41232288171023335, + "99.999" : 0.41232288171023335, + "99.9999" : 0.41232288171023335, + "100.0" : 0.41232288171023335 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41232288171023335, + 0.4089799215197121, + 0.40645890355226794 + ], + [ + 0.406806949477281, + 0.40681796489301114, + 0.40694952201513795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15853079979898202, + "scoreError" : 0.014277353656815107, + "scoreConfidence" : [ + 0.14425344614216692, + 0.17280815345579711 + ], + "scorePercentiles" : { + "0.0" : 0.15373089412759416, + "50.0" : 0.1582324745447997, + "90.0" : 0.16398364462227177, + "95.0" : 0.16398364462227177, + "99.0" : 0.16398364462227177, + "99.9" : 0.16398364462227177, + "99.99" : 0.16398364462227177, + "99.999" : 0.16398364462227177, + "99.9999" : 0.16398364462227177, + "100.0" : 0.16398364462227177 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15408377120537434, + 0.15373089412759416, + 0.15390710162213742 + ], + [ + 0.16309820933228952, + 0.16398364462227177, + 0.16238117788422504 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046879353624185015, + "scoreError" : 0.001446976764769169, + "scoreConfidence" : [ + 0.04543237685941585, + 0.04832633038895418 + ], + "scorePercentiles" : { + "0.0" : 0.04622852423261834, + "50.0" : 0.04711900832021206, + "90.0" : 0.04729292747763086, + "95.0" : 0.04729292747763086, + "99.0" : 0.04729292747763086, + "99.9" : 0.04729292747763086, + "99.99" : 0.04729292747763086, + "99.999" : 0.04729292747763086, + "99.9999" : 0.04729292747763086, + "100.0" : 0.04729292747763086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04696899968061622, + 0.04622852423261834, + 0.04623510637619112 + ], + [ + 0.04729292747763086, + 0.04728154701824561, + 0.047269016959807904 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8663474.17094701, + "scoreError" : 260291.04713927515, + "scoreConfidence" : [ + 8403183.123807734, + 8923765.218086286 + ], + "scorePercentiles" : { + "0.0" : 8563190.721746575, + "50.0" : 8654325.470320448, + "90.0" : 8775574.314035088, + "95.0" : 8775574.314035088, + "99.0" : 8775574.314035088, + "99.9" : 8775574.314035088, + "99.99" : 8775574.314035088, + "99.999" : 8775574.314035088, + "99.9999" : 8775574.314035088, + "100.0" : 8775574.314035088 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8775574.314035088, + 8750551.975503063, + 8710051.79373368 + ], + [ + 8582877.073756432, + 8563190.721746575, + 8598599.146907216 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-06T00:14:45Z-71e6199af4a1fd32da0685cd24093765b47cead1-jdk17.json b/performance-results/2025-11-06T00:14:45Z-71e6199af4a1fd32da0685cd24093765b47cead1-jdk17.json new file mode 100644 index 0000000000..341fca9542 --- /dev/null +++ b/performance-results/2025-11-06T00:14:45Z-71e6199af4a1fd32da0685cd24093765b47cead1-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3252757104157276, + "scoreError" : 0.06472528322216695, + "scoreConfidence" : [ + 3.260550427193561, + 3.3900009936378943 + ], + "scorePercentiles" : { + "0.0" : 3.3129222498085946, + "50.0" : 3.3256795310412564, + "90.0" : 3.3368215297718034, + "95.0" : 3.3368215297718034, + "99.0" : 3.3368215297718034, + "99.9" : 3.3368215297718034, + "99.99" : 3.3368215297718034, + "99.999" : 3.3368215297718034, + "99.9999" : 3.3368215297718034, + "100.0" : 3.3368215297718034 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3368215297718034, + 3.3129222498085946 + ], + [ + 3.3229648233487823, + 3.328394238733731 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6751096195277564, + "scoreError" : 0.041776852007068814, + "scoreConfidence" : [ + 1.6333327675206877, + 1.716886471534825 + ], + "scorePercentiles" : { + "0.0" : 1.6685044407193181, + "50.0" : 1.6747552731318907, + "90.0" : 1.6824234911279259, + "95.0" : 1.6824234911279259, + "99.0" : 1.6824234911279259, + "99.9" : 1.6824234911279259, + "99.99" : 1.6824234911279259, + "99.999" : 1.6824234911279259, + "99.9999" : 1.6824234911279259, + "100.0" : 1.6824234911279259 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6824234911279259, + 1.6784980658076352 + ], + [ + 1.6685044407193181, + 1.6710124804561464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8434749232028882, + "scoreError" : 0.03552907308030231, + "scoreConfidence" : [ + 0.8079458501225859, + 0.8790039962831905 + ], + "scorePercentiles" : { + "0.0" : 0.8356147758363387, + "50.0" : 0.8449282249692869, + "90.0" : 0.84842846703664, + "95.0" : 0.84842846703664, + "99.0" : 0.84842846703664, + "99.9" : 0.84842846703664, + "99.99" : 0.84842846703664, + "99.999" : 0.84842846703664, + "99.9999" : 0.84842846703664, + "100.0" : 0.84842846703664 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8356147758363387, + 0.8451981478476167 + ], + [ + 0.8446583020909572, + 0.84842846703664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.868495055785246, + "scoreError" : 0.8309093421598696, + "scoreConfidence" : [ + 15.037585713625376, + 16.699404397945116 + ], + "scorePercentiles" : { + "0.0" : 15.525602218949441, + "50.0" : 15.872134635576593, + "90.0" : 16.252404455250627, + "95.0" : 16.252404455250627, + "99.0" : 16.252404455250627, + "99.9" : 16.252404455250627, + "99.99" : 16.252404455250627, + "99.999" : 16.252404455250627, + "99.9999" : 16.252404455250627, + "100.0" : 16.252404455250627 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.569393434629545, + 15.525602218949441, + 15.768103147846682 + ], + [ + 16.252404455250627, + 15.976166123306504, + 16.119300954728686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2692.621747523342, + "scoreError" : 104.8033504903957, + "scoreConfidence" : [ + 2587.8183970329465, + 2797.4250980137376 + ], + "scorePercentiles" : { + "0.0" : 2651.0399838499584, + "50.0" : 2681.8023326221028, + "90.0" : 2746.3300042556884, + "95.0" : 2746.3300042556884, + "99.0" : 2746.3300042556884, + "99.9" : 2746.3300042556884, + "99.99" : 2746.3300042556884, + "99.999" : 2746.3300042556884, + "99.9999" : 2746.3300042556884, + "100.0" : 2746.3300042556884 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2665.048706172474, + 2651.0399838499584, + 2681.2111914805373 + ], + [ + 2682.393473763668, + 2729.707125617724, + 2746.3300042556884 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72738.70926471605, + "scoreError" : 1238.1413004583924, + "scoreConfidence" : [ + 71500.56796425766, + 73976.85056517443 + ], + "scorePercentiles" : { + "0.0" : 72108.79340450934, + "50.0" : 72700.32146032978, + "90.0" : 73396.41457712303, + "95.0" : 73396.41457712303, + "99.0" : 73396.41457712303, + "99.9" : 73396.41457712303, + "99.99" : 73396.41457712303, + "99.999" : 73396.41457712303, + "99.9999" : 73396.41457712303, + "100.0" : 73396.41457712303 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72108.79340450934, + 72662.2231436045, + 72500.20314489643 + ], + [ + 72738.41977705508, + 73396.41457712303, + 73026.2015411079 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.85498851942856, + "scoreError" : 13.419519871851167, + "scoreConfidence" : [ + 340.4354686475774, + 367.2745083912797 + ], + "scorePercentiles" : { + "0.0" : 345.8897868430859, + "50.0" : 354.31505696571884, + "90.0" : 359.2356186186731, + "95.0" : 359.2356186186731, + "99.0" : 359.2356186186731, + "99.9" : 359.2356186186731, + "99.99" : 359.2356186186731, + "99.999" : 359.2356186186731, + "99.9999" : 359.2356186186731, + "100.0" : 359.2356186186731 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.8897868430859, + 352.68449711809706, + 351.9499697134903 + ], + [ + 355.9456168133406, + 357.4244420098842, + 359.2356186186731 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 111.6344897214568, + "scoreError" : 2.550967283187546, + "scoreConfidence" : [ + 109.08352243826926, + 114.18545700464435 + ], + "scorePercentiles" : { + "0.0" : 110.16476093693053, + "50.0" : 111.75865956817216, + "90.0" : 112.50203199301812, + "95.0" : 112.50203199301812, + "99.0" : 112.50203199301812, + "99.9" : 112.50203199301812, + "99.99" : 112.50203199301812, + "99.999" : 112.50203199301812, + "99.9999" : 112.50203199301812, + "100.0" : 112.50203199301812 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.15547982936997, + 112.12682840886913, + 110.16476093693053 + ], + [ + 112.50203199301812, + 111.39049072747518, + 112.46734643307785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06262044897520276, + "scoreError" : 0.001452351480495483, + "scoreConfidence" : [ + 0.06116809749470728, + 0.06407280045569824 + ], + "scorePercentiles" : { + "0.0" : 0.06184608550100808, + "50.0" : 0.06274666092628206, + "90.0" : 0.0631932205904656, + "95.0" : 0.0631932205904656, + "99.0" : 0.0631932205904656, + "99.9" : 0.0631932205904656, + "99.99" : 0.0631932205904656, + "99.999" : 0.0631932205904656, + "99.9999" : 0.0631932205904656, + "100.0" : 0.0631932205904656 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06281132435980379, + 0.0631932205904656, + 0.06302630956657654 + ], + [ + 0.062163756340602234, + 0.06268199749276035, + 0.06184608550100808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 4.049967617749583E-4, + "scoreError" : 5.8395599119734644E-5, + "scoreConfidence" : [ + 3.4660116265522364E-4, + 4.6339236089469295E-4 + ], + "scorePercentiles" : { + "0.0" : 3.858400611729819E-4, + "50.0" : 4.023530067271767E-4, + "90.0" : 4.2947091715562645E-4, + "95.0" : 4.2947091715562645E-4, + "99.0" : 4.2947091715562645E-4, + "99.9" : 4.2947091715562645E-4, + "99.99" : 4.2947091715562645E-4, + "99.999" : 4.2947091715562645E-4, + "99.9999" : 4.2947091715562645E-4, + "100.0" : 4.2947091715562645E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.179272262588647E-4, + 4.237331849554373E-4, + 4.2947091715562645E-4 + ], + [ + 3.858400611729819E-4, + 3.867787871954887E-4, + 3.862303939113504E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.5268449773627024, + "scoreError" : 0.23233352104652552, + "scoreConfidence" : [ + 2.294511456316177, + 2.759178498409228 + ], + "scorePercentiles" : { + "0.0" : 2.3110673911737525, + "50.0" : 2.5411378190594025, + "90.0" : 2.7107896177794957, + "95.0" : 2.7113587820547576, + "99.0" : 2.7113587820547576, + "99.9" : 2.7113587820547576, + "99.99" : 2.7113587820547576, + "99.999" : 2.7113587820547576, + "99.9999" : 2.7113587820547576, + "100.0" : 2.7113587820547576 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.705667139302137, + 2.7113587820547576, + 2.643921308485329, + 2.6371633996836277, + 2.6298799463581384 + ], + [ + 2.4401083125152474, + 2.452395691760667, + 2.378891284490961, + 2.3110673911737525, + 2.357996517802405 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013748809439801946, + "scoreError" : 6.150439167861335E-4, + "scoreConfidence" : [ + 0.013133765523015812, + 0.01436385335658808 + ], + "scorePercentiles" : { + "0.0" : 0.013462063923443172, + "50.0" : 0.013769455643650966, + "90.0" : 0.013985409888384023, + "95.0" : 0.013985409888384023, + "99.0" : 0.013985409888384023, + "99.9" : 0.013985409888384023, + "99.99" : 0.013985409888384023, + "99.999" : 0.013985409888384023, + "99.9999" : 0.013985409888384023, + "100.0" : 0.013985409888384023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01392866188733803, + 0.013910676045131253, + 0.013985409888384023 + ], + [ + 0.013628235242170678, + 0.013577809652344518, + 0.013462063923443172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0285888079379262, + "scoreError" : 0.014867831220400838, + "scoreConfidence" : [ + 1.0137209767175253, + 1.043456639158327 + ], + "scorePercentiles" : { + "0.0" : 1.0206090354117767, + "50.0" : 1.0284222566239403, + "90.0" : 1.0362132003937417, + "95.0" : 1.0362132003937417, + "99.0" : 1.0362132003937417, + "99.9" : 1.0362132003937417, + "99.99" : 1.0362132003937417, + "99.999" : 1.0362132003937417, + "99.9999" : 1.0362132003937417, + "100.0" : 1.0362132003937417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0276546513563503, + 1.0318722327692942, + 1.0206090354117767 + ], + [ + 1.025993865804863, + 1.0362132003937417, + 1.0291898618915303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.011076871219711354, + "scoreError" : 3.8401532825164676E-4, + "scoreConfidence" : [ + 0.010692855891459708, + 0.011460886547963 + ], + "scorePercentiles" : { + "0.0" : 0.010918657431165013, + "50.0" : 0.01102912658521347, + "90.0" : 0.011272657752467524, + "95.0" : 0.011272657752467524, + "99.0" : 0.011272657752467524, + "99.9" : 0.011272657752467524, + "99.99" : 0.011272657752467524, + "99.999" : 0.011272657752467524, + "99.9999" : 0.011272657752467524, + "100.0" : 0.011272657752467524 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010918657431165013, + 0.01103771664930111, + 0.01102053652112583 + ], + [ + 0.010996239586288495, + 0.011215419377920135, + 0.011272657752467524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1106708456208594, + "scoreError" : 0.08235553134905174, + "scoreConfidence" : [ + 3.028315314271808, + 3.193026376969911 + ], + "scorePercentiles" : { + "0.0" : 3.0847934194941393, + "50.0" : 3.1004373022028906, + "90.0" : 3.158215380050505, + "95.0" : 3.158215380050505, + "99.0" : 3.158215380050505, + "99.9" : 3.158215380050505, + "99.99" : 3.158215380050505, + "99.999" : 3.158215380050505, + "99.9999" : 3.158215380050505, + "100.0" : 3.158215380050505 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0898210105003088, + 3.088311711728395, + 3.0847934194941393 + ], + [ + 3.1110535939054724, + 3.1318299580463367, + 3.158215380050505 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8598359598135876, + "scoreError" : 0.06665401379218214, + "scoreConfidence" : [ + 2.7931819460214053, + 2.92648997360577 + ], + "scorePercentiles" : { + "0.0" : 2.8339095848682345, + "50.0" : 2.8585101837086606, + "90.0" : 2.8850892177675225, + "95.0" : 2.8850892177675225, + "99.0" : 2.8850892177675225, + "99.9" : 2.8850892177675225, + "99.99" : 2.8850892177675225, + "99.999" : 2.8850892177675225, + "99.9999" : 2.8850892177675225, + "100.0" : 2.8850892177675225 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8389182171444793, + 2.8339095848682345, + 2.842917378624218 + ], + [ + 2.8840783716839677, + 2.8850892177675225, + 2.8741029887931036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17927078875273736, + "scoreError" : 0.0036462522880476547, + "scoreConfidence" : [ + 0.1756245364646897, + 0.18291704104078502 + ], + "scorePercentiles" : { + "0.0" : 0.17782959429181114, + "50.0" : 0.17891155434168857, + "90.0" : 0.18168540676210893, + "95.0" : 0.18168540676210893, + "99.0" : 0.18168540676210893, + "99.9" : 0.18168540676210893, + "99.99" : 0.18168540676210893, + "99.999" : 0.18168540676210893, + "99.9999" : 0.18168540676210893, + "100.0" : 0.18168540676210893 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18168540676210893, + 0.1789295917695473, + 0.17782959429181114 + ], + [ + 0.17878618297370255, + 0.17889351691382982, + 0.17950043980542443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32775948015502393, + "scoreError" : 0.003472351474260248, + "scoreConfidence" : [ + 0.3242871286807637, + 0.33123183162928416 + ], + "scorePercentiles" : { + "0.0" : 0.3260457674350363, + "50.0" : 0.32777740607739136, + "90.0" : 0.3291492522217102, + "95.0" : 0.3291492522217102, + "99.0" : 0.3291492522217102, + "99.9" : 0.3291492522217102, + "99.99" : 0.3291492522217102, + "99.999" : 0.3291492522217102, + "99.9999" : 0.3291492522217102, + "100.0" : 0.3291492522217102 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3276673376802097, + 0.32907227694231467, + 0.3291492522217102 + ], + [ + 0.32673477217629954, + 0.3260457674350363, + 0.32788747447457295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14596437023710027, + "scoreError" : 0.00724584985826108, + "scoreConfidence" : [ + 0.1387185203788392, + 0.15321022009536134 + ], + "scorePercentiles" : { + "0.0" : 0.1431149839000515, + "50.0" : 0.1462734980820382, + "90.0" : 0.1487656560798548, + "95.0" : 0.1487656560798548, + "99.0" : 0.1487656560798548, + "99.9" : 0.1487656560798548, + "99.99" : 0.1487656560798548, + "99.999" : 0.1487656560798548, + "99.9999" : 0.1487656560798548, + "100.0" : 0.1487656560798548 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1487656560798548, + 0.1478452815641632, + 0.1481412893859714 + ], + [ + 0.1431149839000515, + 0.14470171459991318, + 0.14321729589264745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4005924655150199, + "scoreError" : 0.011973160973363506, + "scoreConfidence" : [ + 0.38861930454165644, + 0.4125656264883834 + ], + "scorePercentiles" : { + "0.0" : 0.3958047031188158, + "50.0" : 0.40076383835291796, + "90.0" : 0.4078505327079935, + "95.0" : 0.4078505327079935, + "99.0" : 0.4078505327079935, + "99.9" : 0.4078505327079935, + "99.99" : 0.4078505327079935, + "99.999" : 0.4078505327079935, + "99.9999" : 0.4078505327079935, + "100.0" : 0.4078505327079935 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40059628220637716, + 0.3967901241122089, + 0.3958047031188158 + ], + [ + 0.4078505327079935, + 0.40158175644526545, + 0.40093139449945875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15795696320790106, + "scoreError" : 0.00621714164070581, + "scoreConfidence" : [ + 0.15173982156719526, + 0.16417410484860687 + ], + "scorePercentiles" : { + "0.0" : 0.15541324264134523, + "50.0" : 0.15794075923534617, + "90.0" : 0.1604735391626683, + "95.0" : 0.1604735391626683, + "99.0" : 0.1604735391626683, + "99.9" : 0.1604735391626683, + "99.99" : 0.1604735391626683, + "99.999" : 0.1604735391626683, + "99.9999" : 0.1604735391626683, + "100.0" : 0.1604735391626683 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1598801501087165, + 0.1604735391626683, + 0.15945758538763274 + ], + [ + 0.15609332886398403, + 0.15541324264134523, + 0.1564239330830596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04689798592153349, + "scoreError" : 6.687616980002682E-4, + "scoreConfidence" : [ + 0.046229224223533226, + 0.04756674761953376 + ], + "scorePercentiles" : { + "0.0" : 0.04659923983336362, + "50.0" : 0.046839958484034126, + "90.0" : 0.04719165077275194, + "95.0" : 0.04719165077275194, + "99.0" : 0.04719165077275194, + "99.9" : 0.04719165077275194, + "99.99" : 0.04719165077275194, + "99.999" : 0.04719165077275194, + "99.9999" : 0.04719165077275194, + "100.0" : 0.04719165077275194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04717612, + 0.046740987955017105, + 0.04659923983336362 + ], + [ + 0.04719165077275194, + 0.04684862903067128, + 0.04683128793739697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8837974.717597118, + "scoreError" : 387665.8953735547, + "scoreConfidence" : [ + 8450308.822223563, + 9225640.612970673 + ], + "scorePercentiles" : { + "0.0" : 8625197.588793103, + "50.0" : 8861546.72299222, + "90.0" : 8988541.389937107, + "95.0" : 8988541.389937107, + "99.0" : 8988541.389937107, + "99.9" : 8988541.389937107, + "99.99" : 8988541.389937107, + "99.999" : 8988541.389937107, + "99.9999" : 8988541.389937107, + "100.0" : 8988541.389937107 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8988541.389937107, + 8908523.016028496, + 8950332.05903399 + ], + [ + 8740683.821834061, + 8814570.429955946, + 8625197.588793103 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-08T05:56:43Z-6ce63f3531d032fa4c15ea8d5b4c4c3bbf0a95b7-jdk17.json b/performance-results/2025-11-08T05:56:43Z-6ce63f3531d032fa4c15ea8d5b4c4c3bbf0a95b7-jdk17.json new file mode 100644 index 0000000000..0a5017cc50 --- /dev/null +++ b/performance-results/2025-11-08T05:56:43Z-6ce63f3531d032fa4c15ea8d5b4c4c3bbf0a95b7-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3594005063950316, + "scoreError" : 0.05526945491621342, + "scoreConfidence" : [ + 3.304131051478818, + 3.4146699613112452 + ], + "scorePercentiles" : { + "0.0" : 3.348505528093966, + "50.0" : 3.360982329148857, + "90.0" : 3.367131839188446, + "95.0" : 3.367131839188446, + "99.0" : 3.367131839188446, + "99.9" : 3.367131839188446, + "99.99" : 3.367131839188446, + "99.999" : 3.367131839188446, + "99.9999" : 3.367131839188446, + "100.0" : 3.367131839188446 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3652239986488364, + 3.367131839188446 + ], + [ + 3.348505528093966, + 3.3567406596488776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6942069299215068, + "scoreError" : 0.04807019269754271, + "scoreConfidence" : [ + 1.6461367372239641, + 1.7422771226190494 + ], + "scorePercentiles" : { + "0.0" : 1.6882447851570228, + "50.0" : 1.6920894032795653, + "90.0" : 1.704404127969874, + "95.0" : 1.704404127969874, + "99.0" : 1.704404127969874, + "99.9" : 1.704404127969874, + "99.99" : 1.704404127969874, + "99.999" : 1.704404127969874, + "99.9999" : 1.704404127969874, + "100.0" : 1.704404127969874 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6882447851570228, + 1.6891301350916106 + ], + [ + 1.69504867146752, + 1.704404127969874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8538762986747745, + "scoreError" : 0.02206920080077257, + "scoreConfidence" : [ + 0.831807097874002, + 0.8759454994755471 + ], + "scorePercentiles" : { + "0.0" : 0.8508833529624418, + "50.0" : 0.8537160805690689, + "90.0" : 0.8571896805985186, + "95.0" : 0.8571896805985186, + "99.0" : 0.8571896805985186, + "99.9" : 0.8571896805985186, + "99.99" : 0.8571896805985186, + "99.999" : 0.8571896805985186, + "99.9999" : 0.8571896805985186, + "100.0" : 0.8571896805985186 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8571896805985186, + 0.8564550485339744 + ], + [ + 0.8508833529624418, + 0.8509771126041635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.473431108381195, + "scoreError" : 0.07380222387260409, + "scoreConfidence" : [ + 16.39962888450859, + 16.5472333322538 + ], + "scorePercentiles" : { + "0.0" : 16.443510549816846, + "50.0" : 16.464783905525067, + "90.0" : 16.517475596880036, + "95.0" : 16.517475596880036, + "99.0" : 16.517475596880036, + "99.9" : 16.517475596880036, + "99.99" : 16.517475596880036, + "99.999" : 16.517475596880036, + "99.9999" : 16.517475596880036, + "100.0" : 16.517475596880036 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.490404780528415, + 16.517475596880036, + 16.464767937328308 + ], + [ + 16.46479987372183, + 16.45962791201173, + 16.443510549816846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2754.845630443546, + "scoreError" : 167.06791644507962, + "scoreConfidence" : [ + 2587.7777139984664, + 2921.913546888625 + ], + "scorePercentiles" : { + "0.0" : 2699.483376401566, + "50.0" : 2753.7120586850383, + "90.0" : 2811.1564890745117, + "95.0" : 2811.1564890745117, + "99.0" : 2811.1564890745117, + "99.9" : 2811.1564890745117, + "99.99" : 2811.1564890745117, + "99.999" : 2811.1564890745117, + "99.9999" : 2811.1564890745117, + "100.0" : 2811.1564890745117 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2806.3356057070364, + 2811.1564890745117, + 2810.1395991082954 + ], + [ + 2699.483376401566, + 2701.08851166304, + 2700.870200706825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74419.30590171668, + "scoreError" : 1553.1624701460244, + "scoreConfidence" : [ + 72866.14343157066, + 75972.4683718627 + ], + "scorePercentiles" : { + "0.0" : 73857.34089595686, + "50.0" : 74442.50046543565, + "90.0" : 74940.98571747156, + "95.0" : 74940.98571747156, + "99.0" : 74940.98571747156, + "99.9" : 74940.98571747156, + "99.99" : 74940.98571747156, + "99.999" : 74940.98571747156, + "99.9999" : 74940.98571747156, + "100.0" : 74940.98571747156 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73910.87124795647, + 73976.66658295617, + 73857.34089595686 + ], + [ + 74921.63661804394, + 74940.98571747156, + 74908.33434791514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 364.23902627199254, + "scoreError" : 30.656721370040824, + "scoreConfidence" : [ + 333.5823049019517, + 394.89574764203337 + ], + "scorePercentiles" : { + "0.0" : 353.63476457061796, + "50.0" : 364.3511006158385, + "90.0" : 374.42273865416644, + "95.0" : 374.42273865416644, + "99.0" : 374.42273865416644, + "99.9" : 374.42273865416644, + "99.99" : 374.42273865416644, + "99.999" : 374.42273865416644, + "99.9999" : 374.42273865416644, + "100.0" : 374.42273865416644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 374.3219560058079, + 373.89058214490444, + 374.42273865416644 + ], + [ + 353.63476457061796, + 354.35249716968616, + 354.8116190867726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.12867053766718, + "scoreError" : 2.093889117785237, + "scoreConfidence" : [ + 114.03478141988194, + 118.22255965545241 + ], + "scorePercentiles" : { + "0.0" : 115.40202360118118, + "50.0" : 116.1078736860909, + "90.0" : 116.86250849723893, + "95.0" : 116.86250849723893, + "99.0" : 116.86250849723893, + "99.9" : 116.86250849723893, + "99.99" : 116.86250849723893, + "99.999" : 116.86250849723893, + "99.9999" : 116.86250849723893, + "100.0" : 116.86250849723893 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.40202360118118, + 115.49644493857728, + 115.44868782629202 + ], + [ + 116.7193024336045, + 116.84305592910906, + 116.86250849723893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060792348591181135, + "scoreError" : 1.41737577453612E-4, + "scoreConfidence" : [ + 0.060650611013727526, + 0.060934086168634743 + ], + "scorePercentiles" : { + "0.0" : 0.06075159138432752, + "50.0" : 0.060781467880800764, + "90.0" : 0.060890042634549696, + "95.0" : 0.060890042634549696, + "99.0" : 0.060890042634549696, + "99.9" : 0.060890042634549696, + "99.99" : 0.060890042634549696, + "99.999" : 0.060890042634549696, + "99.9999" : 0.060890042634549696, + "100.0" : 0.060890042634549696 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06075705164861203, + 0.060890042634549696, + 0.06075159138432752 + ], + [ + 0.06079247011799607, + 0.06077490917930766, + 0.06078802658229387 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6197912738362227E-4, + "scoreError" : 1.092119867764769E-5, + "scoreConfidence" : [ + 3.510579287059746E-4, + 3.7290032606126995E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5833278182987634E-4, + "50.0" : 3.6192969931376855E-4, + "90.0" : 3.6569638771764536E-4, + "95.0" : 3.6569638771764536E-4, + "99.0" : 3.6569638771764536E-4, + "99.9" : 3.6569638771764536E-4, + "99.99" : 3.6569638771764536E-4, + "99.999" : 3.6569638771764536E-4, + "99.9999" : 3.6569638771764536E-4, + "100.0" : 3.6569638771764536E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6529613109648635E-4, + 3.6569638771764536E-4, + 3.6560245148297023E-4 + ], + [ + 3.585632675310508E-4, + 3.5838374464370465E-4, + 3.5833278182987634E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.232168097367838, + "scoreError" : 0.0463355360655884, + "scoreConfidence" : [ + 2.1858325613022496, + 2.2785036334334263 + ], + "scorePercentiles" : { + "0.0" : 2.199888549593138, + "50.0" : 2.2292098479191997, + "90.0" : 2.2760427719804777, + "95.0" : 2.2762817139280838, + "99.0" : 2.2762817139280838, + "99.9" : 2.2762817139280838, + "99.99" : 2.2762817139280838, + "99.999" : 2.2762817139280838, + "99.9999" : 2.2762817139280838, + "100.0" : 2.2762817139280838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2738922944520237, + 2.226303540739092, + 2.2519210466111237, + 2.2000990761108667, + 2.199888549593138 + ], + [ + 2.2762817139280838, + 2.255564209968426, + 2.232116155099308, + 2.203230583829037, + 2.2023838033472805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013684476420215258, + "scoreError" : 1.689158775577832E-4, + "scoreConfidence" : [ + 0.013515560542657474, + 0.013853392297773041 + ], + "scorePercentiles" : { + "0.0" : 0.013624716590210213, + "50.0" : 0.013683162208824208, + "90.0" : 0.013746661037475703, + "95.0" : 0.013746661037475703, + "99.0" : 0.013746661037475703, + "99.9" : 0.013746661037475703, + "99.99" : 0.013746661037475703, + "99.999" : 0.013746661037475703, + "99.9999" : 0.013746661037475703, + "100.0" : 0.013746661037475703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013635306892987843, + 0.013624716590210213, + 0.01362925827352445 + ], + [ + 0.013739898202432755, + 0.013731017524660574, + 0.013746661037475703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0266616487063076, + "scoreError" : 0.03638582633034947, + "scoreConfidence" : [ + 0.9902758223759581, + 1.063047475036657 + ], + "scorePercentiles" : { + "0.0" : 1.0146300498173701, + "50.0" : 1.0266499891334449, + "90.0" : 1.0386595916078105, + "95.0" : 1.0386595916078105, + "99.0" : 1.0386595916078105, + "99.9" : 1.0386595916078105, + "99.99" : 1.0386595916078105, + "99.999" : 1.0386595916078105, + "99.9999" : 1.0386595916078105, + "100.0" : 1.0386595916078105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0386512508309098, + 1.0386595916078105, + 1.0382036524447213 + ], + [ + 1.0146300498173701, + 1.0147290217148655, + 1.0150963258221681 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010329842606944065, + "scoreError" : 2.4007169641690704E-4, + "scoreConfidence" : [ + 0.010089770910527159, + 0.010569914303360971 + ], + "scorePercentiles" : { + "0.0" : 0.010249575436618563, + "50.0" : 0.010330546994798484, + "90.0" : 0.010412314042547874, + "95.0" : 0.010412314042547874, + "99.0" : 0.010412314042547874, + "99.9" : 0.010412314042547874, + "99.99" : 0.010412314042547874, + "99.999" : 0.010412314042547874, + "99.9999" : 0.010412314042547874, + "100.0" : 0.010412314042547874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010406178092683202, + 0.010405322484314358, + 0.010412314042547874 + ], + [ + 0.010255771505282611, + 0.010249575436618563, + 0.010249894080217785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.012926673991302, + "scoreError" : 0.21036862062023617, + "scoreConfidence" : [ + 2.802558053371066, + 3.223295294611538 + ], + "scorePercentiles" : { + "0.0" : 2.938330124559342, + "50.0" : 3.0133914302333933, + "90.0" : 3.086112232572486, + "95.0" : 3.086112232572486, + "99.0" : 3.086112232572486, + "99.9" : 3.086112232572486, + "99.99" : 3.086112232572486, + "99.999" : 3.086112232572486, + "99.9999" : 3.086112232572486, + "100.0" : 3.086112232572486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0717505810810812, + 3.085301695249846, + 3.086112232572486 + ], + [ + 2.938330124559342, + 2.955032279385706, + 2.941033131099353 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.740812395400416, + "scoreError" : 0.024136735024319705, + "scoreConfidence" : [ + 2.7166756603760964, + 2.7649491304247356 + ], + "scorePercentiles" : { + "0.0" : 2.7320954550669216, + "50.0" : 2.739419123337621, + "90.0" : 2.7528915218827414, + "95.0" : 2.7528915218827414, + "99.0" : 2.7528915218827414, + "99.9" : 2.7528915218827414, + "99.99" : 2.7528915218827414, + "99.999" : 2.7528915218827414, + "99.9999" : 2.7528915218827414, + "100.0" : 2.7528915218827414 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7528915218827414, + 2.7477991777472526, + 2.743815590946502 + ], + [ + 2.7350226557287396, + 2.7320954550669216, + 2.733249971030336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17637212638578423, + "scoreError" : 0.00904187723525529, + "scoreConfidence" : [ + 0.16733024915052894, + 0.18541400362103952 + ], + "scorePercentiles" : { + "0.0" : 0.17312876984868944, + "50.0" : 0.17653220771380693, + "90.0" : 0.17955134807433343, + "95.0" : 0.17955134807433343, + "99.0" : 0.17955134807433343, + "99.9" : 0.17955134807433343, + "99.99" : 0.17955134807433343, + "99.999" : 0.17955134807433343, + "99.9999" : 0.17955134807433343, + "100.0" : 0.17955134807433343 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17390793779454986, + 0.17328607140876798, + 0.17312876984868944 + ], + [ + 0.17955134807433343, + 0.179156477633064, + 0.1792021535553007 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3248439071496512, + "scoreError" : 0.02391998646650746, + "scoreConfidence" : [ + 0.3009239206831438, + 0.34876389361615867 + ], + "scorePercentiles" : { + "0.0" : 0.3152782435133516, + "50.0" : 0.32622288268035976, + "90.0" : 0.33387898818108974, + "95.0" : 0.33387898818108974, + "99.0" : 0.33387898818108974, + "99.9" : 0.33387898818108974, + "99.99" : 0.33387898818108974, + "99.999" : 0.33387898818108974, + "99.9999" : 0.33387898818108974, + "100.0" : 0.33387898818108974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33387898818108974, + 0.33109160137730104, + 0.33200626181069687 + ], + [ + 0.3213541639834185, + 0.3152782435133516, + 0.31545418403204945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14793487823051077, + "scoreError" : 0.004457507397176232, + "scoreConfidence" : [ + 0.14347737083333453, + 0.152392385627687 + ], + "scorePercentiles" : { + "0.0" : 0.1468460868575624, + "50.0" : 0.14753649347943615, + "90.0" : 0.15112139958291776, + "95.0" : 0.15112139958291776, + "99.0" : 0.15112139958291776, + "99.9" : 0.15112139958291776, + "99.99" : 0.15112139958291776, + "99.999" : 0.15112139958291776, + "99.9999" : 0.15112139958291776, + "100.0" : 0.15112139958291776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14754023332841545, + 0.14753297587890768, + 0.1475400110799646 + ], + [ + 0.15112139958291776, + 0.14702856265529662, + 0.1468460868575624 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4096493153763896, + "scoreError" : 0.015528988418896375, + "scoreConfidence" : [ + 0.3941203269574932, + 0.425178303795286 + ], + "scorePercentiles" : { + "0.0" : 0.4040386179952325, + "50.0" : 0.4099445158465487, + "90.0" : 0.41492897327911704, + "95.0" : 0.41492897327911704, + "99.0" : 0.41492897327911704, + "99.9" : 0.41492897327911704, + "99.99" : 0.41492897327911704, + "99.999" : 0.41492897327911704, + "99.9999" : 0.41492897327911704, + "100.0" : 0.41492897327911704 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4044591147017189, + 0.4053317585927367, + 0.4040386179952325 + ], + [ + 0.4145801545891717, + 0.41455727310036067, + 0.41492897327911704 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15633569705068795, + "scoreError" : 0.004814089202509768, + "scoreConfidence" : [ + 0.15152160784817817, + 0.16114978625319773 + ], + "scorePercentiles" : { + "0.0" : 0.15473251883829242, + "50.0" : 0.15621713556605588, + "90.0" : 0.15817527477776724, + "95.0" : 0.15817527477776724, + "99.0" : 0.15817527477776724, + "99.9" : 0.15817527477776724, + "99.99" : 0.15817527477776724, + "99.999" : 0.15817527477776724, + "99.9999" : 0.15817527477776724, + "100.0" : 0.15817527477776724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15473251883829242, + 0.15485897948185887, + 0.15474473127630603 + ], + [ + 0.1575752916502529, + 0.15792738627965006, + 0.15817527477776724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04736390409485358, + "scoreError" : 8.02947926079999E-4, + "scoreConfidence" : [ + 0.046560956168773586, + 0.04816685202093358 + ], + "scorePercentiles" : { + "0.0" : 0.04703275623647822, + "50.0" : 0.047416993026451706, + "90.0" : 0.04764231262982373, + "95.0" : 0.04764231262982373, + "99.0" : 0.04764231262982373, + "99.9" : 0.04764231262982373, + "99.99" : 0.04764231262982373, + "99.999" : 0.04764231262982373, + "99.9999" : 0.04764231262982373, + "100.0" : 0.04764231262982373 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04764231262982373, + 0.0476160489105592, + 0.04759046454320917 + ], + [ + 0.04724352150969424, + 0.047058320739356924, + 0.04703275623647822 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8640667.74035131, + "scoreError" : 16969.958023406107, + "scoreConfidence" : [ + 8623697.782327903, + 8657637.698374717 + ], + "scorePercentiles" : { + "0.0" : 8632319.877480587, + "50.0" : 8640460.054835923, + "90.0" : 8650352.838375108, + "95.0" : 8650352.838375108, + "99.0" : 8650352.838375108, + "99.9" : 8650352.838375108, + "99.99" : 8650352.838375108, + "99.999" : 8650352.838375108, + "99.9999" : 8650352.838375108, + "100.0" : 8650352.838375108 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8641967.005181348, + 8638953.1044905, + 8642906.0164076 + ], + [ + 8650352.838375108, + 8632319.877480587, + 8637507.600172712 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-08T05:57:33Z-6ce63f3531d032fa4c15ea8d5b4c4c3bbf0a95b7-jdk17.json b/performance-results/2025-11-08T05:57:33Z-6ce63f3531d032fa4c15ea8d5b4c4c3bbf0a95b7-jdk17.json new file mode 100644 index 0000000000..f694da41dc --- /dev/null +++ b/performance-results/2025-11-08T05:57:33Z-6ce63f3531d032fa4c15ea8d5b4c4c3bbf0a95b7-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3217173660367996, + "scoreError" : 0.03563332143594775, + "scoreConfidence" : [ + 3.2860840446008517, + 3.3573506874727475 + ], + "scorePercentiles" : { + "0.0" : 3.315097655201924, + "50.0" : 3.321586882973614, + "90.0" : 3.328598042998047, + "95.0" : 3.328598042998047, + "99.0" : 3.328598042998047, + "99.9" : 3.328598042998047, + "99.99" : 3.328598042998047, + "99.999" : 3.328598042998047, + "99.9999" : 3.328598042998047, + "100.0" : 3.328598042998047 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.321477246383218, + 3.328598042998047 + ], + [ + 3.315097655201924, + 3.32169651956401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.673332979891782, + "scoreError" : 0.055262602516705554, + "scoreConfidence" : [ + 1.6180703773750764, + 1.7285955824084875 + ], + "scorePercentiles" : { + "0.0" : 1.6623393896060727, + "50.0" : 1.6751067578585705, + "90.0" : 1.6807790142439143, + "95.0" : 1.6807790142439143, + "99.0" : 1.6807790142439143, + "99.9" : 1.6807790142439143, + "99.99" : 1.6807790142439143, + "99.999" : 1.6807790142439143, + "99.9999" : 1.6807790142439143, + "100.0" : 1.6807790142439143 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6793970060481909, + 1.6807790142439143 + ], + [ + 1.6623393896060727, + 1.6708165096689502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8430436040330936, + "scoreError" : 0.013863109395345715, + "scoreConfidence" : [ + 0.8291804946377479, + 0.8569067134284394 + ], + "scorePercentiles" : { + "0.0" : 0.8405797830574405, + "50.0" : 0.8428902408147322, + "90.0" : 0.8458141514454699, + "95.0" : 0.8458141514454699, + "99.0" : 0.8458141514454699, + "99.9" : 0.8458141514454699, + "99.99" : 0.8458141514454699, + "99.999" : 0.8458141514454699, + "99.9999" : 0.8458141514454699, + "100.0" : 0.8458141514454699 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8429737714429187, + 0.8458141514454699 + ], + [ + 0.8405797830574405, + 0.8428067101865456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.19408119764227, + "scoreError" : 0.20843977193522417, + "scoreConfidence" : [ + 15.985641425707046, + 16.402520969577495 + ], + "scorePercentiles" : { + "0.0" : 16.077466469742593, + "50.0" : 16.209684200672093, + "90.0" : 16.25918836227468, + "95.0" : 16.25918836227468, + "99.0" : 16.25918836227468, + "99.9" : 16.25918836227468, + "99.99" : 16.25918836227468, + "99.999" : 16.25918836227468, + "99.9999" : 16.25918836227468, + "100.0" : 16.25918836227468 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.151333373788667, + 16.077466469742593, + 16.16786010129182 + ], + [ + 16.25150830005237, + 16.25918836227468, + 16.257130578703485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2587.1295394693457, + "scoreError" : 84.88095498522746, + "scoreConfidence" : [ + 2502.248584484118, + 2672.0104944545733 + ], + "scorePercentiles" : { + "0.0" : 2552.229260903395, + "50.0" : 2586.835506661164, + "90.0" : 2621.3143063723173, + "95.0" : 2621.3143063723173, + "99.0" : 2621.3143063723173, + "99.9" : 2621.3143063723173, + "99.99" : 2621.3143063723173, + "99.999" : 2621.3143063723173, + "99.9999" : 2621.3143063723173, + "100.0" : 2621.3143063723173 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2621.3143063723173, + 2609.65913940441, + 2611.778056343531 + ], + [ + 2564.0118739179184, + 2552.229260903395, + 2563.7845998745047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72861.35535029546, + "scoreError" : 2067.96163443678, + "scoreConfidence" : [ + 70793.39371585868, + 74929.31698473224 + ], + "scorePercentiles" : { + "0.0" : 72145.21974712652, + "50.0" : 72878.74334106712, + "90.0" : 73552.82552803571, + "95.0" : 73552.82552803571, + "99.0" : 73552.82552803571, + "99.9" : 73552.82552803571, + "99.99" : 73552.82552803571, + "99.999" : 73552.82552803571, + "99.9999" : 73552.82552803571, + "100.0" : 73552.82552803571 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73529.05232178683, + 73552.82552803571, + 73519.98100930687 + ], + [ + 72183.54782268946, + 72145.21974712652, + 72237.50567282738 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.91610321530027, + "scoreError" : 8.372565683754177, + "scoreConfidence" : [ + 332.54353753154606, + 349.28866889905447 + ], + "scorePercentiles" : { + "0.0" : 337.202504606123, + "50.0" : 340.8787875957295, + "90.0" : 344.61567109789655, + "95.0" : 344.61567109789655, + "99.0" : 344.61567109789655, + "99.9" : 344.61567109789655, + "99.99" : 344.61567109789655, + "99.999" : 344.61567109789655, + "99.9999" : 344.61567109789655, + "100.0" : 344.61567109789655 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 337.202504606123, + 338.72682274437625, + 338.9932145271762 + ], + [ + 342.7643606642827, + 344.61567109789655, + 343.19404565194674 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.2301300708791, + "scoreError" : 1.7992527411719943, + "scoreConfidence" : [ + 110.4308773297071, + 114.0293828120511 + ], + "scorePercentiles" : { + "0.0" : 111.40614267546553, + "50.0" : 112.33121734801375, + "90.0" : 112.8834696494899, + "95.0" : 112.8834696494899, + "99.0" : 112.8834696494899, + "99.9" : 112.8834696494899, + "99.99" : 112.8834696494899, + "99.999" : 112.8834696494899, + "99.9999" : 112.8834696494899, + "100.0" : 112.8834696494899 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.40614267546553, + 111.63332991849941, + 111.97309639208952 + ], + [ + 112.7954034857921, + 112.68933830393799, + 112.8834696494899 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06165637323698698, + "scoreError" : 0.00166087876455846, + "scoreConfidence" : [ + 0.059995494472428516, + 0.06331725200154543 + ], + "scorePercentiles" : { + "0.0" : 0.061094191191564236, + "50.0" : 0.061613096056593986, + "90.0" : 0.06232337207708032, + "95.0" : 0.06232337207708032, + "99.0" : 0.06232337207708032, + "99.9" : 0.06232337207708032, + "99.99" : 0.06232337207708032, + "99.999" : 0.06232337207708032, + "99.9999" : 0.06232337207708032, + "100.0" : 0.06232337207708032 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06111981267724428, + 0.061094191191564236, + 0.061147909178182705 + ], + [ + 0.06207828293500527, + 0.06232337207708032, + 0.06217467136284506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.577837515499256E-4, + "scoreError" : 1.5586686948099576E-6, + "scoreConfidence" : [ + 3.5622508285511567E-4, + 3.5934242024473557E-4 + ], + "scorePercentiles" : { + "0.0" : 3.573248871880158E-4, + "50.0" : 3.576655250774589E-4, + "90.0" : 3.588122316477025E-4, + "95.0" : 3.588122316477025E-4, + "99.0" : 3.588122316477025E-4, + "99.9" : 3.588122316477025E-4, + "99.99" : 3.588122316477025E-4, + "99.999" : 3.588122316477025E-4, + "99.9999" : 3.588122316477025E-4, + "100.0" : 3.588122316477025E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.573248871880158E-4, + 3.577804001697863E-4, + 3.5790578381902086E-4 + ], + [ + 3.5755064998513146E-4, + 3.588122316477025E-4, + 3.5732855648989693E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.33360719644346, + "scoreError" : 0.04666488736616923, + "scoreConfidence" : [ + 2.2869423090772907, + 2.380272083809629 + ], + "scorePercentiles" : { + "0.0" : 2.2917868609074246, + "50.0" : 2.3340543498658146, + "90.0" : 2.378974474762125, + "95.0" : 2.379878364350309, + "99.0" : 2.379878364350309, + "99.9" : 2.379878364350309, + "99.99" : 2.379878364350309, + "99.999" : 2.379878364350309, + "99.9999" : 2.379878364350309, + "100.0" : 2.379878364350309 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.379878364350309, + 2.3232818411149827, + 2.344826858616647, + 2.2917868609074246, + 2.300799769726248 + ], + [ + 2.3588109504716983, + 2.34701823421732, + 2.3708394684684686, + 2.308054704361874, + 2.3107749121996304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013488721951660934, + "scoreError" : 1.60584445178182E-4, + "scoreConfidence" : [ + 0.013328137506482752, + 0.013649306396839117 + ], + "scorePercentiles" : { + "0.0" : 0.013430144272854124, + "50.0" : 0.013486704314671066, + "90.0" : 0.013552767914813916, + "95.0" : 0.013552767914813916, + "99.0" : 0.013552767914813916, + "99.9" : 0.013552767914813916, + "99.99" : 0.013552767914813916, + "99.999" : 0.013552767914813916, + "99.9999" : 0.013552767914813916, + "100.0" : 0.013552767914813916 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013442156051143772, + 0.013430144272854124, + 0.013438581479510521 + ], + [ + 0.013537429413444916, + 0.013552767914813916, + 0.01353125257819836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9926818283940871, + "scoreError" : 0.014524784611150119, + "scoreConfidence" : [ + 0.978157043782937, + 1.0072066130052373 + ], + "scorePercentiles" : { + "0.0" : 0.9874386994470774, + "50.0" : 0.9927300848496741, + "90.0" : 0.997791227776115, + "95.0" : 0.997791227776115, + "99.0" : 0.997791227776115, + "99.9" : 0.997791227776115, + "99.99" : 0.997791227776115, + "99.999" : 0.997791227776115, + "99.9999" : 0.997791227776115, + "100.0" : 0.997791227776115 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9876471212719732, + 0.9874386994470774, + 0.9888913598338772 + ], + [ + 0.9965688098654708, + 0.997753752170009, + 0.997791227776115 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010453675723455479, + "scoreError" : 3.230543036164259E-4, + "scoreConfidence" : [ + 0.010130621419839054, + 0.010776730027071904 + ], + "scorePercentiles" : { + "0.0" : 0.01033481321824826, + "50.0" : 0.010455363339615675, + "90.0" : 0.010567539642954512, + "95.0" : 0.010567539642954512, + "99.0" : 0.010567539642954512, + "99.9" : 0.010567539642954512, + "99.99" : 0.010567539642954512, + "99.999" : 0.010567539642954512, + "99.9999" : 0.010567539642954512, + "100.0" : 0.010567539642954512 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010563508168529665, + 0.01054336552682463, + 0.010567539642954512 + ], + [ + 0.010367361152406721, + 0.01033481321824826, + 0.01034546663176908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.1667128566214164, + "scoreError" : 0.06042414429492609, + "scoreConfidence" : [ + 3.1062887123264904, + 3.2271370009163425 + ], + "scorePercentiles" : { + "0.0" : 3.139436860640301, + "50.0" : 3.16711050842804, + "90.0" : 3.1978320319693094, + "95.0" : 3.1978320319693094, + "99.0" : 3.1978320319693094, + "99.9" : 3.1978320319693094, + "99.99" : 3.1978320319693094, + "99.999" : 3.1978320319693094, + "99.9999" : 3.1978320319693094, + "100.0" : 3.1978320319693094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1978320319693094, + 3.1753865853968253, + 3.1795775104895103 + ], + [ + 3.1492097197732996, + 3.1588344314592547, + 3.139436860640301 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.926723305194503, + "scoreError" : 0.05748798980795705, + "scoreConfidence" : [ + 2.869235315386546, + 2.98421129500246 + ], + "scorePercentiles" : { + "0.0" : 2.9013312323759792, + "50.0" : 2.931681763542504, + "90.0" : 2.9473431040377247, + "95.0" : 2.9473431040377247, + "99.0" : 2.9473431040377247, + "99.9" : 2.9473431040377247, + "99.99" : 2.9473431040377247, + "99.999" : 2.9473431040377247, + "99.9999" : 2.9473431040377247, + "100.0" : 2.9473431040377247 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9349867136150234, + 2.9459135997054493, + 2.9473431040377247 + ], + [ + 2.9283768134699852, + 2.9023883679628555, + 2.9013312323759792 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17765003401732937, + "scoreError" : 0.0019788478352611265, + "scoreConfidence" : [ + 0.17567118618206826, + 0.1796288818525905 + ], + "scorePercentiles" : { + "0.0" : 0.17685811246109226, + "50.0" : 0.1777649717725917, + "90.0" : 0.17829940499581007, + "95.0" : 0.17829940499581007, + "99.0" : 0.17829940499581007, + "99.9" : 0.17829940499581007, + "99.99" : 0.17829940499581007, + "99.999" : 0.17829940499581007, + "99.9999" : 0.17829940499581007, + "100.0" : 0.17829940499581007 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17725992152935338, + 0.176935295405085, + 0.17685811246109226 + ], + [ + 0.17827744769680548, + 0.17829940499581007, + 0.17827002201583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32323956477272464, + "scoreError" : 0.0022482369968709146, + "scoreConfidence" : [ + 0.3209913277758537, + 0.3254878017695956 + ], + "scorePercentiles" : { + "0.0" : 0.32173737510456213, + "50.0" : 0.3235869041747599, + "90.0" : 0.3238111152737752, + "95.0" : 0.3238111152737752, + "99.0" : 0.3238111152737752, + "99.9" : 0.3238111152737752, + "99.99" : 0.3238111152737752, + "99.999" : 0.3238111152737752, + "99.9999" : 0.3238111152737752, + "100.0" : 0.3238111152737752 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32173737510456213, + 0.32294230375250277, + 0.3238111152737752 + ], + [ + 0.323772786155988, + 0.323495425484424, + 0.3236783828650958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1499221167176389, + "scoreError" : 0.007489774443286479, + "scoreConfidence" : [ + 0.14243234227435242, + 0.15741189116092535 + ], + "scorePercentiles" : { + "0.0" : 0.14667441535640952, + "50.0" : 0.15018825969500682, + "90.0" : 0.15291169406260036, + "95.0" : 0.15291169406260036, + "99.0" : 0.15291169406260036, + "99.9" : 0.15291169406260036, + "99.99" : 0.15291169406260036, + "99.999" : 0.15291169406260036, + "99.9999" : 0.15291169406260036, + "100.0" : 0.15291169406260036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15291169406260036, + 0.15140724459484012, + 0.1523377783075634 + ], + [ + 0.14896927479517355, + 0.1472322931892465, + 0.14667441535640952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4106929383564373, + "scoreError" : 0.015760203502452642, + "scoreConfidence" : [ + 0.3949327348539846, + 0.42645314185888994 + ], + "scorePercentiles" : { + "0.0" : 0.40414945514064016, + "50.0" : 0.4113604375891287, + "90.0" : 0.4174321183370205, + "95.0" : 0.4174321183370205, + "99.0" : 0.4174321183370205, + "99.9" : 0.4174321183370205, + "99.99" : 0.4174321183370205, + "99.999" : 0.4174321183370205, + "99.9999" : 0.4174321183370205, + "100.0" : 0.4174321183370205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4097834942632355, + 0.4043300169004973, + 0.40414945514064016 + ], + [ + 0.415525164582208, + 0.4174321183370205, + 0.4129373809150219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.160500655717378, + "scoreError" : 0.0060130551966752896, + "scoreConfidence" : [ + 0.15448760052070273, + 0.1665137109140533 + ], + "scorePercentiles" : { + "0.0" : 0.1580453592628884, + "50.0" : 0.16042055711352468, + "90.0" : 0.1632064869602115, + "95.0" : 0.1632064869602115, + "99.0" : 0.1632064869602115, + "99.9" : 0.1632064869602115, + "99.99" : 0.1632064869602115, + "99.999" : 0.1632064869602115, + "99.9999" : 0.1632064869602115, + "100.0" : 0.1632064869602115 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15987815501446867, + 0.15833003586130462, + 0.1580453592628884 + ], + [ + 0.1632064869602115, + 0.16258093799281406, + 0.1609629592125807 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04628679498355103, + "scoreError" : 5.941087789864789E-4, + "scoreConfidence" : [ + 0.045692686204564556, + 0.04688090376253751 + ], + "scorePercentiles" : { + "0.0" : 0.04602433796179106, + "50.0" : 0.04634115500947737, + "90.0" : 0.0465945009621612, + "95.0" : 0.0465945009621612, + "99.0" : 0.0465945009621612, + "99.9" : 0.0465945009621612, + "99.99" : 0.0465945009621612, + "99.999" : 0.0465945009621612, + "99.9999" : 0.0465945009621612, + "100.0" : 0.0465945009621612 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0465945009621612, + 0.046063310991450786, + 0.04602433796179106 + ], + [ + 0.04635063124913094, + 0.04635630996694835, + 0.0463316787698238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8764699.034843305, + "scoreError" : 422901.5549446551, + "scoreConfidence" : [ + 8341797.47989865, + 9187600.58978796 + ], + "scorePercentiles" : { + "0.0" : 8622612.279310346, + "50.0" : 8711866.694814844, + "90.0" : 8950869.188729875, + "95.0" : 8950869.188729875, + "99.0" : 8950869.188729875, + "99.9" : 8950869.188729875, + "99.99" : 8950869.188729875, + "99.999" : 8950869.188729875, + "99.9999" : 8950869.188729875, + "100.0" : 8950869.188729875 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8950869.188729875, + 8945343.937388193, + 8768788.694127958 + ], + [ + 8622612.279310346, + 8654944.69550173, + 8645635.41400173 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-10T01:16:16Z-bbe6a653939113bedffe947fbf70315ff448f127-jdk17.json b/performance-results/2025-11-10T01:16:16Z-bbe6a653939113bedffe947fbf70315ff448f127-jdk17.json new file mode 100644 index 0000000000..60fb290575 --- /dev/null +++ b/performance-results/2025-11-10T01:16:16Z-bbe6a653939113bedffe947fbf70315ff448f127-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3534362036051895, + "scoreError" : 0.014026906108698223, + "scoreConfidence" : [ + 3.3394092974964913, + 3.3674631097138876 + ], + "scorePercentiles" : { + "0.0" : 3.3508071596310645, + "50.0" : 3.353837873365009, + "90.0" : 3.355261908059676, + "95.0" : 3.355261908059676, + "99.0" : 3.355261908059676, + "99.9" : 3.355261908059676, + "99.99" : 3.355261908059676, + "99.999" : 3.355261908059676, + "99.9999" : 3.355261908059676, + "100.0" : 3.355261908059676 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3525022463554697, + 3.3551735003745486 + ], + [ + 3.3508071596310645, + 3.355261908059676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6918985881401423, + "scoreError" : 0.03299784355850022, + "scoreConfidence" : [ + 1.6589007445816422, + 1.7248964316986424 + ], + "scorePercentiles" : { + "0.0" : 1.687584402567114, + "50.0" : 1.6904889085351644, + "90.0" : 1.6990321329231264, + "95.0" : 1.6990321329231264, + "99.0" : 1.6990321329231264, + "99.9" : 1.6990321329231264, + "99.99" : 1.6990321329231264, + "99.999" : 1.6990321329231264, + "99.9999" : 1.6990321329231264, + "100.0" : 1.6990321329231264 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.688947232562085, + 1.6990321329231264 + ], + [ + 1.692030584508244, + 1.687584402567114 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8515570329183769, + "scoreError" : 0.018086275771559787, + "scoreConfidence" : [ + 0.8334707571468172, + 0.8696433086899367 + ], + "scorePercentiles" : { + "0.0" : 0.8476730191566222, + "50.0" : 0.8522787662233744, + "90.0" : 0.8539975800701368, + "95.0" : 0.8539975800701368, + "99.0" : 0.8539975800701368, + "99.9" : 0.8539975800701368, + "99.99" : 0.8539975800701368, + "99.999" : 0.8539975800701368, + "99.9999" : 0.8539975800701368, + "100.0" : 0.8539975800701368 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8476730191566222, + 0.8531206120185655 + ], + [ + 0.8514369204281832, + 0.8539975800701368 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.45233460599521, + "scoreError" : 0.12388411044122191, + "scoreConfidence" : [ + 16.328450495553987, + 16.57621871643643 + ], + "scorePercentiles" : { + "0.0" : 16.39619097279064, + "50.0" : 16.45729861247805, + "90.0" : 16.500485487269433, + "95.0" : 16.500485487269433, + "99.0" : 16.500485487269433, + "99.9" : 16.500485487269433, + "99.99" : 16.500485487269433, + "99.999" : 16.500485487269433, + "99.9999" : 16.500485487269433, + "100.0" : 16.500485487269433 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.39619097279064, + 16.408036478730132, + 16.441778266178304 + ], + [ + 16.500485487269433, + 16.494697472224956, + 16.472818958777797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2731.7962617179587, + "scoreError" : 22.873285602882046, + "scoreConfidence" : [ + 2708.922976115077, + 2754.6695473208406 + ], + "scorePercentiles" : { + "0.0" : 2723.465253682258, + "50.0" : 2731.356136960222, + "90.0" : 2741.3126132637994, + "95.0" : 2741.3126132637994, + "99.0" : 2741.3126132637994, + "99.9" : 2741.3126132637994, + "99.99" : 2741.3126132637994, + "99.999" : 2741.3126132637994, + "99.9999" : 2741.3126132637994, + "100.0" : 2741.3126132637994 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2738.674650823369, + 2737.414229730505, + 2741.3126132637994 + ], + [ + 2723.465253682258, + 2725.2980441899385, + 2724.6127786178836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 74796.25638944522, + "scoreError" : 249.69907600820702, + "scoreConfidence" : [ + 74546.557313437, + 75045.95546545343 + ], + "scorePercentiles" : { + "0.0" : 74692.39569169612, + "50.0" : 74797.01046734903, + "90.0" : 74891.40044445868, + "95.0" : 74891.40044445868, + "99.0" : 74891.40044445868, + "99.9" : 74891.40044445868, + "99.99" : 74891.40044445868, + "99.999" : 74891.40044445868, + "99.9999" : 74891.40044445868, + "100.0" : 74891.40044445868 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74864.55142121477, + 74891.40044445868, + 74872.85046251044 + ], + [ + 74729.4695134833, + 74692.39569169612, + 74726.87080330795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 360.9385356941964, + "scoreError" : 1.2650266388163631, + "scoreConfidence" : [ + 359.67350905538, + 362.20356233301277 + ], + "scorePercentiles" : { + "0.0" : 360.13711238925634, + "50.0" : 361.00824105406446, + "90.0" : 361.43067853557665, + "95.0" : 361.43067853557665, + "99.0" : 361.43067853557665, + "99.9" : 361.43067853557665, + "99.99" : 361.43067853557665, + "99.999" : 361.43067853557665, + "99.9999" : 361.43067853557665, + "100.0" : 361.43067853557665 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.13711238925634, + 360.8584409798418, + 360.8445294994628 + ], + [ + 361.43067853557665, + 361.15804112828715, + 361.20241163275375 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.05301962786608, + "scoreError" : 2.9450336038538127, + "scoreConfidence" : [ + 112.10798602401226, + 117.9980532317199 + ], + "scorePercentiles" : { + "0.0" : 113.6321683225358, + "50.0" : 114.89515472282648, + "90.0" : 116.43118630468675, + "95.0" : 116.43118630468675, + "99.0" : 116.43118630468675, + "99.9" : 116.43118630468675, + "99.99" : 116.43118630468675, + "99.999" : 116.43118630468675, + "99.9999" : 116.43118630468675, + "100.0" : 116.43118630468675 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 114.37142636924446, + 116.43118630468675, + 116.09302732507652 + ], + [ + 113.6321683225358, + 114.91383099048667, + 114.87647845516626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06116252179412316, + "scoreError" : 4.025873432820136E-4, + "scoreConfidence" : [ + 0.060759934450841144, + 0.06156510913740518 + ], + "scorePercentiles" : { + "0.0" : 0.06102103047943325, + "50.0" : 0.061142404724427835, + "90.0" : 0.06140113519703314, + "95.0" : 0.06140113519703314, + "99.0" : 0.06140113519703314, + "99.9" : 0.06140113519703314, + "99.99" : 0.06140113519703314, + "99.999" : 0.06140113519703314, + "99.9999" : 0.06140113519703314, + "100.0" : 0.06140113519703314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06122180725834594, + 0.06120674820055819, + 0.06140113519703314 + ], + [ + 0.06102103047943325, + 0.06107806124829747, + 0.06104634838107098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7891116213767005E-4, + "scoreError" : 9.920388253321774E-6, + "scoreConfidence" : [ + 3.689907738843483E-4, + 3.888315503909918E-4 + ], + "scorePercentiles" : { + "0.0" : 3.752768928502539E-4, + "50.0" : 3.7898629176869665E-4, + "90.0" : 3.8235559455817154E-4, + "95.0" : 3.8235559455817154E-4, + "99.0" : 3.8235559455817154E-4, + "99.9" : 3.8235559455817154E-4, + "99.99" : 3.8235559455817154E-4, + "99.999" : 3.8235559455817154E-4, + "99.9999" : 3.8235559455817154E-4, + "100.0" : 3.8235559455817154E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8231771145017744E-4, + 3.8168373738181046E-4, + 3.8235559455817154E-4 + ], + [ + 3.7628884615558284E-4, + 3.755441904300241E-4, + 3.752768928502539E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.2801828382365965, + "scoreError" : 0.06252674262719322, + "scoreConfidence" : [ + 2.2176560956094034, + 2.3427095808637897 + ], + "scorePercentiles" : { + "0.0" : 2.224180704692017, + "50.0" : 2.2714915270144544, + "90.0" : 2.3503174295140443, + "95.0" : 2.3535823532595903, + "99.0" : 2.3535823532595903, + "99.9" : 2.3535823532595903, + "99.99" : 2.3535823532595903, + "99.999" : 2.3535823532595903, + "99.9999" : 2.3535823532595903, + "100.0" : 2.3535823532595903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3535823532595903, + 2.311263704645251, + 2.320933115804131, + 2.265789713864975, + 2.261194267465521 + ], + [ + 2.299530068291561, + 2.262600461085973, + 2.2771933401639344, + 2.224180704692017, + 2.2255606530930128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01355827395809932, + "scoreError" : 2.194294587722317E-4, + "scoreConfidence" : [ + 0.013338844499327087, + 0.013777703416871552 + ], + "scorePercentiles" : { + "0.0" : 0.01348539579450721, + "50.0" : 0.013558445306233112, + "90.0" : 0.013631206088983397, + "95.0" : 0.013631206088983397, + "99.0" : 0.013631206088983397, + "99.9" : 0.013631206088983397, + "99.99" : 0.013631206088983397, + "99.999" : 0.013631206088983397, + "99.9999" : 0.013631206088983397, + "100.0" : 0.013631206088983397 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01362976056349546, + 0.013628115628922289, + 0.013631206088983397 + ], + [ + 0.013488774983543936, + 0.013486390689143628, + 0.01348539579450721 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0228747715573396, + "scoreError" : 0.10595314869486147, + "scoreConfidence" : [ + 0.9169216228624781, + 1.1288279202522011 + ], + "scorePercentiles" : { + "0.0" : 0.98800886455246, + "50.0" : 1.0224519138388233, + "90.0" : 1.0583589339612658, + "95.0" : 1.0583589339612658, + "99.0" : 1.0583589339612658, + "99.9" : 1.0583589339612658, + "99.99" : 1.0583589339612658, + "99.999" : 1.0583589339612658, + "99.9999" : 1.0583589339612658, + "100.0" : 1.0583589339612658 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.98800886455246, + 0.9886026736852511, + 0.9885542327995255 + ], + [ + 1.0563011539923954, + 1.0574227703531403, + 1.0583589339612658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010487139695487648, + "scoreError" : 8.744670276453759E-5, + "scoreConfidence" : [ + 0.01039969299272311, + 0.010574586398252185 + ], + "scorePercentiles" : { + "0.0" : 0.010455218948904743, + "50.0" : 0.01048722333994811, + "90.0" : 0.010518294883607433, + "95.0" : 0.010518294883607433, + "99.0" : 0.010518294883607433, + "99.9" : 0.010518294883607433, + "99.99" : 0.010518294883607433, + "99.999" : 0.010518294883607433, + "99.9999" : 0.010518294883607433, + "100.0" : 0.010518294883607433 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010461154608828096, + 0.01045993079513838, + 0.010455218948904743 + ], + [ + 0.010518294883607433, + 0.010514946865379115, + 0.010513292071068124 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.9518212589690296, + "scoreError" : 0.34192688170158997, + "scoreConfidence" : [ + 2.6098943772674397, + 3.2937481406706195 + ], + "scorePercentiles" : { + "0.0" : 2.8356830164399094, + "50.0" : 2.9505404365628882, + "90.0" : 3.0710113738489873, + "95.0" : 3.0710113738489873, + "99.0" : 3.0710113738489873, + "99.9" : 3.0710113738489873, + "99.99" : 3.0710113738489873, + "99.999" : 3.0710113738489873, + "99.9999" : 3.0710113738489873, + "100.0" : 3.0710113738489873 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8428890198976693, + 2.8432640289937465, + 2.8356830164399094 + ], + [ + 3.0578168441320295, + 3.0710113738489873, + 3.060263270501836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7332595804318456, + "scoreError" : 0.1452925481449267, + "scoreConfidence" : [ + 2.587967032286919, + 2.8785521285767723 + ], + "scorePercentiles" : { + "0.0" : 2.683292622752884, + "50.0" : 2.7343599741098332, + "90.0" : 2.784299445155902, + "95.0" : 2.784299445155902, + "99.0" : 2.784299445155902, + "99.9" : 2.784299445155902, + "99.99" : 2.784299445155902, + "99.999" : 2.784299445155902, + "99.9999" : 2.784299445155902, + "100.0" : 2.784299445155902 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.784299445155902, + 2.7788298113364824, + 2.7782702780555555 + ], + [ + 2.690449670164111, + 2.6844156551261404, + 2.683292622752884 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18080761564094674, + "scoreError" : 0.00856995462947624, + "scoreConfidence" : [ + 0.1722376610114705, + 0.18937757027042298 + ], + "scorePercentiles" : { + "0.0" : 0.17841730801070474, + "50.0" : 0.179962581219319, + "90.0" : 0.18616668705785985, + "95.0" : 0.18616668705785985, + "99.0" : 0.18616668705785985, + "99.9" : 0.18616668705785985, + "99.99" : 0.18616668705785985, + "99.999" : 0.18616668705785985, + "99.9999" : 0.18616668705785985, + "100.0" : 0.18616668705785985 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18616668705785985, + 0.18185579523549736, + 0.18143315836931673 + ], + [ + 0.17849200406932125, + 0.17841730801070474, + 0.17848074110298054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32580763252364614, + "scoreError" : 8.221381126396146E-4, + "scoreConfidence" : [ + 0.32498549441100655, + 0.32662977063628573 + ], + "scorePercentiles" : { + "0.0" : 0.325442810921635, + "50.0" : 0.325789780638358, + "90.0" : 0.3262663136276141, + "95.0" : 0.3262663136276141, + "99.0" : 0.3262663136276141, + "99.9" : 0.3262663136276141, + "99.99" : 0.3262663136276141, + "99.999" : 0.3262663136276141, + "99.9999" : 0.3262663136276141, + "100.0" : 0.3262663136276141 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3262663136276141, + 0.32593867700932144, + 0.325442810921635 + ], + [ + 0.32591762741583286, + 0.32561843230659027, + 0.32566193386088316 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14531407758730455, + "scoreError" : 0.0010929333087624006, + "scoreConfidence" : [ + 0.14422114427854216, + 0.14640701089606695 + ], + "scorePercentiles" : { + "0.0" : 0.14491489538894042, + "50.0" : 0.14527776121381342, + "90.0" : 0.14586640892979563, + "95.0" : 0.14586640892979563, + "99.0" : 0.14586640892979563, + "99.9" : 0.14586640892979563, + "99.99" : 0.14586640892979563, + "99.999" : 0.14586640892979563, + "99.9999" : 0.14586640892979563, + "100.0" : 0.14586640892979563 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14586640892979563, + 0.1455502984892149, + 0.1455388651327279 + ], + [ + 0.14499734028824962, + 0.14491489538894042, + 0.14501665729489893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40137883165507976, + "scoreError" : 0.01247182447286934, + "scoreConfidence" : [ + 0.38890700718221044, + 0.4138506561279491 + ], + "scorePercentiles" : { + "0.0" : 0.3974426656068675, + "50.0" : 0.40082812017306735, + "90.0" : 0.40744287671121254, + "95.0" : 0.40744287671121254, + "99.0" : 0.40744287671121254, + "99.9" : 0.40744287671121254, + "99.99" : 0.40744287671121254, + "99.999" : 0.40744287671121254, + "99.9999" : 0.40744287671121254, + "100.0" : 0.40744287671121254 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40744287671121254, + 0.4042794588858344, + 0.40415950753748536 + ], + [ + 0.3974426656068675, + 0.39745174838043, + 0.39749673280864933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15712028535164976, + "scoreError" : 0.00405298043017915, + "scoreConfidence" : [ + 0.1530673049214706, + 0.16117326578182892 + ], + "scorePercentiles" : { + "0.0" : 0.1547631281261607, + "50.0" : 0.15752608547193903, + "90.0" : 0.1586554193174787, + "95.0" : 0.1586554193174787, + "99.0" : 0.1586554193174787, + "99.9" : 0.1586554193174787, + "99.99" : 0.1586554193174787, + "99.999" : 0.1586554193174787, + "99.9999" : 0.1586554193174787, + "100.0" : 0.1586554193174787 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1571647070675321, + 0.1561402293820067, + 0.1547631281261607 + ], + [ + 0.1586554193174787, + 0.15788746387634595, + 0.1581107643403744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04648459384877703, + "scoreError" : 4.7733442409830443E-4, + "scoreConfidence" : [ + 0.04600725942467873, + 0.04696192827287533 + ], + "scorePercentiles" : { + "0.0" : 0.04624192319323767, + "50.0" : 0.04657238597760258, + "90.0" : 0.04662558920262218, + "95.0" : 0.04662558920262218, + "99.0" : 0.04662558920262218, + "99.9" : 0.04662558920262218, + "99.99" : 0.04662558920262218, + "99.999" : 0.04662558920262218, + "99.9999" : 0.04662558920262218, + "100.0" : 0.04662558920262218 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04662558920262218, + 0.04624192319323767, + 0.04629310755535393 + ], + [ + 0.046582452123199614, + 0.04660217118624321, + 0.04656231983200555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8655553.070426846, + "scoreError" : 384360.397660727, + "scoreConfidence" : [ + 8271192.672766119, + 9039913.468087573 + ], + "scorePercentiles" : { + "0.0" : 8522752.352640545, + "50.0" : 8640619.287938498, + "90.0" : 8845249.438549956, + "95.0" : 8845249.438549956, + "99.0" : 8845249.438549956, + "99.9" : 8845249.438549956, + "99.99" : 8845249.438549956, + "99.999" : 8845249.438549956, + "99.9999" : 8845249.438549956, + "100.0" : 8845249.438549956 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8845249.438549956, + 8734361.513537118, + 8746750.64423077 + ], + [ + 8546877.06233988, + 8537327.411262799, + 8522752.352640545 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-10T02:38:55Z-aed1e8071dff708221d62f697d9cc2ccb8abeec9-jdk17.json b/performance-results/2025-11-10T02:38:55Z-aed1e8071dff708221d62f697d9cc2ccb8abeec9-jdk17.json new file mode 100644 index 0000000000..782d562ce9 --- /dev/null +++ b/performance-results/2025-11-10T02:38:55Z-aed1e8071dff708221d62f697d9cc2ccb8abeec9-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.338044625229986, + "scoreError" : 0.09054041694677148, + "scoreConfidence" : [ + 3.2475042082832144, + 3.4285850421767576 + ], + "scorePercentiles" : { + "0.0" : 3.3189585959882937, + "50.0" : 3.3402727761830593, + "90.0" : 3.3526743525655314, + "95.0" : 3.3526743525655314, + "99.0" : 3.3526743525655314, + "99.9" : 3.3526743525655314, + "99.99" : 3.3526743525655314, + "99.999" : 3.3526743525655314, + "99.9999" : 3.3526743525655314, + "100.0" : 3.3526743525655314 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3408681455663123, + 3.3526743525655314 + ], + [ + 3.3189585959882937, + 3.3396774067998063 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6890051397807382, + "scoreError" : 0.020880868956775756, + "scoreConfidence" : [ + 1.6681242708239625, + 1.7098860087375138 + ], + "scorePercentiles" : { + "0.0" : 1.68528380102628, + "50.0" : 1.688841751533499, + "90.0" : 1.6930532550296746, + "95.0" : 1.6930532550296746, + "99.0" : 1.6930532550296746, + "99.9" : 1.6930532550296746, + "99.99" : 1.6930532550296746, + "99.999" : 1.6930532550296746, + "99.9999" : 1.6930532550296746, + "100.0" : 1.6930532550296746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.688122155421942, + 1.68528380102628 + ], + [ + 1.6895613476450562, + 1.6930532550296746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.846051952914502, + "scoreError" : 0.026721360269501077, + "scoreConfidence" : [ + 0.8193305926450009, + 0.8727733131840031 + ], + "scorePercentiles" : { + "0.0" : 0.8427957494904019, + "50.0" : 0.8446666033592609, + "90.0" : 0.8520788554490841, + "95.0" : 0.8520788554490841, + "99.0" : 0.8520788554490841, + "99.9" : 0.8520788554490841, + "99.99" : 0.8520788554490841, + "99.999" : 0.8520788554490841, + "99.9999" : 0.8520788554490841, + "100.0" : 0.8520788554490841 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8441499579335127, + 0.8451832487850092 + ], + [ + 0.8427957494904019, + 0.8520788554490841 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.252088060357288, + "scoreError" : 0.4771648154313855, + "scoreConfidence" : [ + 15.774923244925903, + 16.729252875788674 + ], + "scorePercentiles" : { + "0.0" : 16.029608992066514, + "50.0" : 16.296599252695735, + "90.0" : 16.420465351550128, + "95.0" : 16.420465351550128, + "99.0" : 16.420465351550128, + "99.9" : 16.420465351550128, + "99.99" : 16.420465351550128, + "99.999" : 16.420465351550128, + "99.9999" : 16.420465351550128, + "100.0" : 16.420465351550128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.208576632847137, + 16.081561151829305, + 16.029608992066514 + ], + [ + 16.38462187254433, + 16.420465351550128, + 16.387694361306316 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2698.663645759781, + "scoreError" : 288.62368282476183, + "scoreConfidence" : [ + 2410.039962935019, + 2987.287328584543 + ], + "scorePercentiles" : { + "0.0" : 2578.736405499461, + "50.0" : 2706.2046102896543, + "90.0" : 2811.9951768453902, + "95.0" : 2811.9951768453902, + "99.0" : 2811.9951768453902, + "99.9" : 2811.9951768453902, + "99.99" : 2811.9951768453902, + "99.999" : 2811.9951768453902, + "99.9999" : 2811.9951768453902, + "100.0" : 2811.9951768453902 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2778.2800974206293, + 2781.6063194935978, + 2811.9951768453902 + ], + [ + 2634.1291231586792, + 2578.736405499461, + 2607.2347521409283 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73698.75873160781, + "scoreError" : 992.867119322088, + "scoreConfidence" : [ + 72705.89161228572, + 74691.62585092991 + ], + "scorePercentiles" : { + "0.0" : 73258.00645744364, + "50.0" : 73757.72794435843, + "90.0" : 74111.34667025204, + "95.0" : 74111.34667025204, + "99.0" : 74111.34667025204, + "99.9" : 74111.34667025204, + "99.99" : 74111.34667025204, + "99.999" : 74111.34667025204, + "99.9999" : 74111.34667025204, + "100.0" : 74111.34667025204 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73959.93202597754, + 74111.34667025204, + 73936.60209172322 + ], + [ + 73347.81134725684, + 73258.00645744364, + 73578.85379699363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.09273416120294, + "scoreError" : 13.107932920180547, + "scoreConfidence" : [ + 343.9848012410224, + 370.2006670813835 + ], + "scorePercentiles" : { + "0.0" : 350.5880334137143, + "50.0" : 356.85041446282776, + "90.0" : 362.5048329112332, + "95.0" : 362.5048329112332, + "99.0" : 362.5048329112332, + "99.9" : 362.5048329112332, + "99.99" : 362.5048329112332, + "99.999" : 362.5048329112332, + "99.9999" : 362.5048329112332, + "100.0" : 362.5048329112332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 362.5048329112332, + 358.11616529219805, + 361.94849802246273 + ], + [ + 353.8142116941517, + 355.58466363345747, + 350.5880334137143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.42890177800757, + "scoreError" : 3.936705964118912, + "scoreConfidence" : [ + 110.49219581388866, + 118.36560774212649 + ], + "scorePercentiles" : { + "0.0" : 112.77024860342567, + "50.0" : 114.32655619066726, + "90.0" : 116.24946385869715, + "95.0" : 116.24946385869715, + "99.0" : 116.24946385869715, + "99.9" : 116.24946385869715, + "99.99" : 116.24946385869715, + "99.999" : 116.24946385869715, + "99.9999" : 116.24946385869715, + "100.0" : 116.24946385869715 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.77024860342567, + 113.49250606090219, + 113.36045433020341 + ], + [ + 115.16060632043234, + 115.54013149438461, + 116.24946385869715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06157939679865463, + "scoreError" : 9.618583003999885E-4, + "scoreConfidence" : [ + 0.060617538498254644, + 0.06254125509905462 + ], + "scorePercentiles" : { + "0.0" : 0.061229960868473744, + "50.0" : 0.06147676479370781, + "90.0" : 0.062097512732940466, + "95.0" : 0.062097512732940466, + "99.0" : 0.062097512732940466, + "99.9" : 0.062097512732940466, + "99.99" : 0.062097512732940466, + "99.999" : 0.062097512732940466, + "99.9999" : 0.062097512732940466, + "100.0" : 0.062097512732940466 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06140025590048383, + 0.061884289181529016, + 0.062097512732940466 + ], + [ + 0.061311088421568925, + 0.061229960868473744, + 0.061553273686931795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.724632635424617E-4, + "scoreError" : 2.6344581985985653E-5, + "scoreConfidence" : [ + 3.4611868155647605E-4, + 3.988078455284473E-4 + ], + "scorePercentiles" : { + "0.0" : 3.625593599814025E-4, + "50.0" : 3.728100420698519E-4, + "90.0" : 3.821870424103129E-4, + "95.0" : 3.821870424103129E-4, + "99.0" : 3.821870424103129E-4, + "99.9" : 3.821870424103129E-4, + "99.99" : 3.821870424103129E-4, + "99.999" : 3.821870424103129E-4, + "99.9999" : 3.821870424103129E-4, + "100.0" : 3.821870424103129E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.821870424103129E-4, + 3.8139131156599243E-4, + 3.791177213093357E-4 + ], + [ + 3.625593599814025E-4, + 3.6650236283036807E-4, + 3.630217831573588E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.269559016282703, + "scoreError" : 0.038937029374821984, + "scoreConfidence" : [ + 2.230621986907881, + 2.3084960456575248 + ], + "scorePercentiles" : { + "0.0" : 2.2346375109472745, + "50.0" : 2.26701463722846, + "90.0" : 2.3134616884494674, + "95.0" : 2.3147344126359637, + "99.0" : 2.3147344126359637, + "99.9" : 2.3147344126359637, + "99.99" : 2.3147344126359637, + "99.999" : 2.3147344126359637, + "99.9999" : 2.3147344126359637, + "100.0" : 2.3147344126359637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.2730313879545454, + 2.3147344126359637, + 2.281271373859489, + 2.248245282598921, + 2.2346375109472745 + ], + [ + 2.302007170771001, + 2.257334576844956, + 2.280447496124031, + 2.260997886502374, + 2.2428830645884728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013697955450872107, + "scoreError" : 1.6732340910096316E-4, + "scoreConfidence" : [ + 0.013530632041771143, + 0.01386527885997307 + ], + "scorePercentiles" : { + "0.0" : 0.013631215790191107, + "50.0" : 0.01369503703284702, + "90.0" : 0.013766701071858282, + "95.0" : 0.013766701071858282, + "99.0" : 0.013766701071858282, + "99.9" : 0.013766701071858282, + "99.99" : 0.013766701071858282, + "99.999" : 0.013766701071858282, + "99.9999" : 0.013766701071858282, + "100.0" : 0.013766701071858282 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013631215790191107, + 0.01364387506873014, + 0.013660930930048932 + ], + [ + 0.013755866708759073, + 0.013766701071858282, + 0.01372914313564511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0378782012816015, + "scoreError" : 0.08766788535217386, + "scoreConfidence" : [ + 0.9502103159294276, + 1.1255460866337754 + ], + "scorePercentiles" : { + "0.0" : 1.007746763401854, + "50.0" : 1.0387699109643656, + "90.0" : 1.068172570925016, + "95.0" : 1.068172570925016, + "99.0" : 1.068172570925016, + "99.9" : 1.068172570925016, + "99.99" : 1.068172570925016, + "99.999" : 1.068172570925016, + "99.9999" : 1.068172570925016, + "100.0" : 1.068172570925016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0122736328575768, + 1.0081500267137096, + 1.007746763401854 + ], + [ + 1.0652661890711546, + 1.0656600247202983, + 1.068172570925016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010652945232675425, + "scoreError" : 3.803584764238686E-4, + "scoreConfidence" : [ + 0.010272586756251556, + 0.011033303709099293 + ], + "scorePercentiles" : { + "0.0" : 0.010503102322806693, + "50.0" : 0.010668442017940065, + "90.0" : 0.010807558290284233, + "95.0" : 0.010807558290284233, + "99.0" : 0.010807558290284233, + "99.9" : 0.010807558290284233, + "99.99" : 0.010807558290284233, + "99.999" : 0.010807558290284233, + "99.9999" : 0.010807558290284233, + "100.0" : 0.010807558290284233 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010513685606928759, + 0.010581702974843872, + 0.010503102322806693 + ], + [ + 0.010755181061036257, + 0.010756441140152737, + 0.010807558290284233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 2.9375419162556966, + "scoreError" : 0.1109063733466398, + "scoreConfidence" : [ + 2.826635542909057, + 3.0484482896023364 + ], + "scorePercentiles" : { + "0.0" : 2.894246222800926, + "50.0" : 2.931331565912193, + "90.0" : 3.002136018007203, + "95.0" : 3.002136018007203, + "99.0" : 3.002136018007203, + "99.9" : 3.002136018007203, + "99.99" : 3.002136018007203, + "99.999" : 3.002136018007203, + "99.9999" : 3.002136018007203, + "100.0" : 3.002136018007203 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.958260201064459, + 3.002136018007203, + 2.945329809187279 + ], + [ + 2.917333322637106, + 2.907945923837209, + 2.894246222800926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7796126456285033, + "scoreError" : 0.23283875805603949, + "scoreConfidence" : [ + 2.546773887572464, + 3.0124514036845427 + ], + "scorePercentiles" : { + "0.0" : 2.670534453137517, + "50.0" : 2.789565300194353, + "90.0" : 2.8773518420598387, + "95.0" : 2.8773518420598387, + "99.0" : 2.8773518420598387, + "99.9" : 2.8773518420598387, + "99.99" : 2.8773518420598387, + "99.999" : 2.8773518420598387, + "99.9999" : 2.8773518420598387, + "100.0" : 2.8773518420598387 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8773518420598387, + 2.8383128785471055, + 2.838707560885609 + ], + [ + 2.670534453137517, + 2.7119514172993493, + 2.7408177218416006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18599123334867573, + "scoreError" : 0.0011423937507426631, + "scoreConfidence" : [ + 0.18484883959793308, + 0.1871336270994184 + ], + "scorePercentiles" : { + "0.0" : 0.18543118206934917, + "50.0" : 0.18608913251624842, + "90.0" : 0.18654264109834354, + "95.0" : 0.18654264109834354, + "99.0" : 0.18654264109834354, + "99.9" : 0.18654264109834354, + "99.99" : 0.18654264109834354, + "99.999" : 0.18654264109834354, + "99.9999" : 0.18654264109834354, + "100.0" : 0.18654264109834354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18654264109834354, + 0.1861797835160948, + 0.1859990059518274 + ], + [ + 0.18561552837577017, + 0.18617925908066948, + 0.18543118206934917 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32810876796822175, + "scoreError" : 0.015056919358553808, + "scoreConfidence" : [ + 0.31305184860966795, + 0.34316568732677555 + ], + "scorePercentiles" : { + "0.0" : 0.32172933050220376, + "50.0" : 0.32864011410203586, + "90.0" : 0.33372230854968965, + "95.0" : 0.33372230854968965, + "99.0" : 0.33372230854968965, + "99.9" : 0.33372230854968965, + "99.99" : 0.33372230854968965, + "99.999" : 0.33372230854968965, + "99.9999" : 0.33372230854968965, + "100.0" : 0.33372230854968965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3319940365181595, + 0.3329019899800266, + 0.33372230854968965 + ], + [ + 0.32172933050220376, + 0.3252861916859122, + 0.32301875057333895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14600779372912423, + "scoreError" : 0.004776046754015337, + "scoreConfidence" : [ + 0.1412317469751089, + 0.15078384048313956 + ], + "scorePercentiles" : { + "0.0" : 0.14385533641176132, + "50.0" : 0.14608959001721966, + "90.0" : 0.14786604679875795, + "95.0" : 0.14786604679875795, + "99.0" : 0.14786604679875795, + "99.9" : 0.14786604679875795, + "99.99" : 0.14786604679875795, + "99.999" : 0.14786604679875795, + "99.9999" : 0.14786604679875795, + "100.0" : 0.14786604679875795 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14786604679875795, + 0.14740259283934967, + 0.14728562320868374 + ], + [ + 0.1448935568257556, + 0.14474360629043698, + 0.14385533641176132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4079880299513116, + "scoreError" : 0.03205713356793089, + "scoreConfidence" : [ + 0.37593089638338073, + 0.4400451635192425 + ], + "scorePercentiles" : { + "0.0" : 0.3966877857199524, + "50.0" : 0.40782736912460515, + "90.0" : 0.4199952694132964, + "95.0" : 0.4199952694132964, + "99.0" : 0.4199952694132964, + "99.9" : 0.4199952694132964, + "99.99" : 0.4199952694132964, + "99.999" : 0.4199952694132964, + "99.9999" : 0.4199952694132964, + "100.0" : 0.4199952694132964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4167199247020585, + 0.4199952694132964, + 0.41836139633534136 + ], + [ + 0.39893481354715177, + 0.3972289899900695, + 0.3966877857199524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15616937704345435, + "scoreError" : 0.0028553900692412384, + "scoreConfidence" : [ + 0.1533139869742131, + 0.1590247671126956 + ], + "scorePercentiles" : { + "0.0" : 0.1551964147371035, + "50.0" : 0.15608924906496224, + "90.0" : 0.15729753432953206, + "95.0" : 0.15729753432953206, + "99.0" : 0.15729753432953206, + "99.9" : 0.15729753432953206, + "99.99" : 0.15729753432953206, + "99.999" : 0.15729753432953206, + "99.9999" : 0.15729753432953206, + "100.0" : 0.15729753432953206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1553434619961165, + 0.15521284077046052, + 0.1551964147371035 + ], + [ + 0.15729753432953206, + 0.156835036133808, + 0.15713097429370543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046545122453364195, + "scoreError" : 0.0013062904647217822, + "scoreConfidence" : [ + 0.04523883198864241, + 0.04785141291808598 + ], + "scorePercentiles" : { + "0.0" : 0.045753262881692486, + "50.0" : 0.04659668735039607, + "90.0" : 0.04721084632634466, + "95.0" : 0.04721084632634466, + "99.0" : 0.04721084632634466, + "99.9" : 0.04721084632634466, + "99.99" : 0.04721084632634466, + "99.999" : 0.04721084632634466, + "99.9999" : 0.04721084632634466, + "100.0" : 0.04721084632634466 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04721084632634466, + 0.04662441498393812, + 0.04659428227301954 + ], + [ + 0.0465990924277726, + 0.04648883582741773, + 0.045753262881692486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8622900.335059777, + "scoreError" : 277916.9358002958, + "scoreConfidence" : [ + 8344983.399259482, + 8900817.270860072 + ], + "scorePercentiles" : { + "0.0" : 8503745.420068027, + "50.0" : 8625339.583503839, + "90.0" : 8735112.358951965, + "95.0" : 8735112.358951965, + "99.0" : 8735112.358951965, + "99.9" : 8735112.358951965, + "99.99" : 8735112.358951965, + "99.999" : 8735112.358951965, + "99.9999" : 8735112.358951965, + "100.0" : 8735112.358951965 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8503745.420068027, + 8560569.320786998, + 8540511.912894962 + ], + [ + 8690109.846220678, + 8707353.15143603, + 8735112.358951965 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-16T05:25:16Z-1846e706cdbc72dc6bd34f28103e4920bf007e7a-jdk17.json b/performance-results/2025-11-16T05:25:16Z-1846e706cdbc72dc6bd34f28103e4920bf007e7a-jdk17.json new file mode 100644 index 0000000000..d622bcca10 --- /dev/null +++ b/performance-results/2025-11-16T05:25:16Z-1846e706cdbc72dc6bd34f28103e4920bf007e7a-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.327378099396822, + "scoreError" : 0.03183314961136015, + "scoreConfidence" : [ + 3.295544949785462, + 3.359211249008182 + ], + "scorePercentiles" : { + "0.0" : 3.320861425421507, + "50.0" : 3.3280309675102933, + "90.0" : 3.332589037145195, + "95.0" : 3.332589037145195, + "99.0" : 3.332589037145195, + "99.9" : 3.332589037145195, + "99.99" : 3.332589037145195, + "99.999" : 3.332589037145195, + "99.9999" : 3.332589037145195, + "100.0" : 3.332589037145195 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3269517545246052, + 3.3291101804959813 + ], + [ + 3.320861425421507, + 3.332589037145195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.673722884212292, + "scoreError" : 0.055329545142390364, + "scoreConfidence" : [ + 1.6183933390699017, + 1.7290524293546823 + ], + "scorePercentiles" : { + "0.0" : 1.6626785964307167, + "50.0" : 1.6751245793092413, + "90.0" : 1.6819637817999684, + "95.0" : 1.6819637817999684, + "99.0" : 1.6819637817999684, + "99.9" : 1.6819637817999684, + "99.99" : 1.6819637817999684, + "99.999" : 1.6819637817999684, + "99.9999" : 1.6819637817999684, + "100.0" : 1.6819637817999684 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6626785964307167, + 1.671510634840157 + ], + [ + 1.6819637817999684, + 1.6787385237783259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8412974822060514, + "scoreError" : 0.023214019611741347, + "scoreConfidence" : [ + 0.8180834625943101, + 0.8645115018177927 + ], + "scorePercentiles" : { + "0.0" : 0.8376630575467057, + "50.0" : 0.8409841132577003, + "90.0" : 0.8455586447620994, + "95.0" : 0.8455586447620994, + "99.0" : 0.8455586447620994, + "99.9" : 0.8455586447620994, + "99.99" : 0.8455586447620994, + "99.999" : 0.8455586447620994, + "99.9999" : 0.8455586447620994, + "100.0" : 0.8455586447620994 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8376630575467057, + 0.8455586447620994 + ], + [ + 0.8390929547022318, + 0.8428752718131687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.16522528726286, + "scoreError" : 0.40949754560731466, + "scoreConfidence" : [ + 15.755727741655546, + 16.574722832870176 + ], + "scorePercentiles" : { + "0.0" : 15.963690598134303, + "50.0" : 16.157867252381752, + "90.0" : 16.324350639724614, + "95.0" : 16.324350639724614, + "99.0" : 16.324350639724614, + "99.9" : 16.324350639724614, + "99.99" : 16.324350639724614, + "99.999" : 16.324350639724614, + "99.9999" : 16.324350639724614, + "100.0" : 16.324350639724614 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.963690598134303, + 16.07387247272776, + 16.08649352020377 + ], + [ + 16.31370350822696, + 16.324350639724614, + 16.229240984559734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2655.2596867611664, + "scoreError" : 45.567783081374444, + "scoreConfidence" : [ + 2609.691903679792, + 2700.8274698425407 + ], + "scorePercentiles" : { + "0.0" : 2632.926827718069, + "50.0" : 2652.48199722392, + "90.0" : 2679.7330804823773, + "95.0" : 2679.7330804823773, + "99.0" : 2679.7330804823773, + "99.9" : 2679.7330804823773, + "99.99" : 2679.7330804823773, + "99.999" : 2679.7330804823773, + "99.9999" : 2679.7330804823773, + "100.0" : 2679.7330804823773 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2666.991799009253, + 2632.926827718069, + 2652.896621728474 + ], + [ + 2652.0673727193666, + 2679.7330804823773, + 2646.9424189094584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72716.70428481487, + "scoreError" : 773.51522606465, + "scoreConfidence" : [ + 71943.18905875023, + 73490.21951087951 + ], + "scorePercentiles" : { + "0.0" : 72361.96984601567, + "50.0" : 72743.6495886003, + "90.0" : 73062.02595898345, + "95.0" : 73062.02595898345, + "99.0" : 73062.02595898345, + "99.9" : 73062.02595898345, + "99.99" : 73062.02595898345, + "99.999" : 73062.02595898345, + "99.9999" : 73062.02595898345, + "100.0" : 73062.02595898345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 73062.02595898345, + 72771.50004473145, + 72950.75683425504 + ], + [ + 72438.17389243442, + 72361.96984601567, + 72715.79913246915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.8020048520273, + "scoreError" : 5.589346398060289, + "scoreConfidence" : [ + 349.21265845396704, + 360.3913512500876 + ], + "scorePercentiles" : { + "0.0" : 351.3893597193541, + "50.0" : 355.15810343396356, + "90.0" : 356.68610308140063, + "95.0" : 356.68610308140063, + "99.0" : 356.68610308140063, + "99.9" : 356.68610308140063, + "99.99" : 356.68610308140063, + "99.999" : 356.68610308140063, + "99.9999" : 356.68610308140063, + "100.0" : 356.68610308140063 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3893597193541, + 356.68610308140063, + 355.56759633412054 + ], + [ + 354.74861053380664, + 353.84153844255513, + 356.57882100092667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.67117331897435, + "scoreError" : 2.141232590269903, + "scoreConfidence" : [ + 111.52994072870445, + 115.81240590924426 + ], + "scorePercentiles" : { + "0.0" : 112.21291599952424, + "50.0" : 113.9334653575641, + "90.0" : 114.30750900497944, + "95.0" : 114.30750900497944, + "99.0" : 114.30750900497944, + "99.9" : 114.30750900497944, + "99.99" : 114.30750900497944, + "99.999" : 114.30750900497944, + "99.9999" : 114.30750900497944, + "100.0" : 114.30750900497944 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 112.21291599952424, + 113.83810797380151, + 114.12305926055407 + ], + [ + 114.02882274132669, + 113.51662493366017, + 114.30750900497944 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062188169191476565, + "scoreError" : 0.0023936540451980092, + "scoreConfidence" : [ + 0.05979451514627856, + 0.06458182323667458 + ], + "scorePercentiles" : { + "0.0" : 0.06124934209591474, + "50.0" : 0.06218335943952324, + "90.0" : 0.06310011249929014, + "95.0" : 0.06310011249929014, + "99.0" : 0.06310011249929014, + "99.9" : 0.06310011249929014, + "99.99" : 0.06310011249929014, + "99.999" : 0.06310011249929014, + "99.9999" : 0.06310011249929014, + "100.0" : 0.06310011249929014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06171534671710782, + 0.06124934209591474, + 0.06134289772420562 + ], + [ + 0.06310011249929014, + 0.06265137216193865, + 0.06306994395040239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.885695361014419E-4, + "scoreError" : 2.1193939375008083E-5, + "scoreConfidence" : [ + 3.673755967264338E-4, + 4.0976347547645E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7943277669210106E-4, + "50.0" : 3.880578797527108E-4, + "90.0" : 3.9682762402683697E-4, + "95.0" : 3.9682762402683697E-4, + "99.0" : 3.9682762402683697E-4, + "99.9" : 3.9682762402683697E-4, + "99.99" : 3.9682762402683697E-4, + "99.999" : 3.9682762402683697E-4, + "99.9999" : 3.9682762402683697E-4, + "100.0" : 3.9682762402683697E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.841483443532056E-4, + 3.824129146613142E-4, + 3.7943277669210106E-4 + ], + [ + 3.9662814172297754E-4, + 3.9196741515221605E-4, + 3.9682762402683697E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.283195489673956, + "scoreError" : 0.08190031629242615, + "scoreConfidence" : [ + 2.20129517338153, + 2.3650958059663822 + ], + "scorePercentiles" : { + "0.0" : 2.2148474663418956, + "50.0" : 2.2721119023953036, + "90.0" : 2.3884783060226558, + "95.0" : 2.394353457026574, + "99.0" : 2.394353457026574, + "99.9" : 2.394353457026574, + "99.99" : 2.394353457026574, + "99.999" : 2.394353457026574, + "99.9999" : 2.394353457026574, + "100.0" : 2.394353457026574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.335601946987389, + 2.394353457026574, + 2.3170578288163077, + 2.256142710128581, + 2.271859116537937 + ], + [ + 2.2815659466240876, + 2.27236468825267, + 2.271011917801998, + 2.217149818222124, + 2.2148474663418956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013910520126715792, + "scoreError" : 2.4229036072343765E-4, + "scoreConfidence" : [ + 0.013668229765992353, + 0.01415281048743923 + ], + "scorePercentiles" : { + "0.0" : 0.013824107031821317, + "50.0" : 0.013899307881602922, + "90.0" : 0.014015726485819802, + "95.0" : 0.014015726485819802, + "99.0" : 0.014015726485819802, + "99.9" : 0.014015726485819802, + "99.99" : 0.014015726485819802, + "99.999" : 0.014015726485819802, + "99.9999" : 0.014015726485819802, + "100.0" : 0.014015726485819802 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013824107031821317, + 0.013844417641415268, + 0.013833253634986617 + ], + [ + 0.014015726485819802, + 0.013991417844461172, + 0.013954198121790579 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9900315466248917, + "scoreError" : 0.027514047175033664, + "scoreConfidence" : [ + 0.962517499449858, + 1.0175455937999254 + ], + "scorePercentiles" : { + "0.0" : 0.9789323362372748, + "50.0" : 0.9907887843401966, + "90.0" : 1.0000819201, + "95.0" : 1.0000819201, + "99.0" : 1.0000819201, + "99.9" : 1.0000819201, + "99.99" : 1.0000819201, + "99.999" : 1.0000819201, + "99.9999" : 1.0000819201, + "100.0" : 1.0000819201 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0000819201, + 0.9971159973080758, + 0.9991750170846239 + ], + [ + 0.9789323362372748, + 0.9844615713723174, + 0.9804224376470588 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01061439932673366, + "scoreError" : 2.0629379472911498E-4, + "scoreConfidence" : [ + 0.010408105532004544, + 0.010820693121462775 + ], + "scorePercentiles" : { + "0.0" : 0.010498731685910397, + "50.0" : 0.010612826508393892, + "90.0" : 0.010706867523051293, + "95.0" : 0.010706867523051293, + "99.0" : 0.010706867523051293, + "99.9" : 0.010706867523051293, + "99.99" : 0.010706867523051293, + "99.999" : 0.010706867523051293, + "99.9999" : 0.010706867523051293, + "100.0" : 0.010706867523051293 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010669737240466893, + 0.010706867523051293, + 0.010637553573707994 + ], + [ + 0.010498731685910397, + 0.01058809944307979, + 0.01058540649418559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.11285542775532, + "scoreError" : 0.2942878379339343, + "scoreConfidence" : [ + 2.8185675898213858, + 3.4071432656892546 + ], + "scorePercentiles" : { + "0.0" : 3.0090079386281587, + "50.0" : 3.106764922887427, + "90.0" : 3.230603739018088, + "95.0" : 3.230603739018088, + "99.0" : 3.230603739018088, + "99.9" : 3.230603739018088, + "99.99" : 3.230603739018088, + "99.999" : 3.230603739018088, + "99.9999" : 3.230603739018088, + "100.0" : 3.230603739018088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.183559154678549, + 3.230603739018088, + 3.208299325208467 + ], + [ + 3.0090079386281587, + 3.015691717902351, + 3.029970691096305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7859016069509877, + "scoreError" : 0.11239032496128941, + "scoreConfidence" : [ + 2.6735112819896982, + 2.898291931912277 + ], + "scorePercentiles" : { + "0.0" : 2.7253621708446865, + "50.0" : 2.7929375539885237, + "90.0" : 2.826023061599322, + "95.0" : 2.826023061599322, + "99.0" : 2.826023061599322, + "99.9" : 2.826023061599322, + "99.99" : 2.826023061599322, + "99.999" : 2.826023061599322, + "99.9999" : 2.826023061599322, + "100.0" : 2.826023061599322 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8099440691205393, + 2.8211641935119887, + 2.826023061599322 + ], + [ + 2.7759310388565086, + 2.7569851077728775, + 2.7253621708446865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18206567706696045, + "scoreError" : 0.009759337338625104, + "scoreConfidence" : [ + 0.17230633972833534, + 0.19182501440558555 + ], + "scorePercentiles" : { + "0.0" : 0.17867768248494703, + "50.0" : 0.18196781425481853, + "90.0" : 0.18580717712417086, + "95.0" : 0.18580717712417086, + "99.0" : 0.18580717712417086, + "99.9" : 0.18580717712417086, + "99.99" : 0.18580717712417086, + "99.999" : 0.18580717712417086, + "99.9999" : 0.18580717712417086, + "100.0" : 0.18580717712417086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18580717712417086, + 0.18460062992634707, + 0.18524171856997315 + ], + [ + 0.17867768248494703, + 0.17873185571303463, + 0.17933499858329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33441093559191254, + "scoreError" : 0.02075850677141205, + "scoreConfidence" : [ + 0.3136524288205005, + 0.3551694423633246 + ], + "scorePercentiles" : { + "0.0" : 0.32701770281229564, + "50.0" : 0.334749931126727, + "90.0" : 0.3418399474601764, + "95.0" : 0.3418399474601764, + "99.0" : 0.3418399474601764, + "99.9" : 0.3418399474601764, + "99.99" : 0.3418399474601764, + "99.999" : 0.3418399474601764, + "99.9999" : 0.3418399474601764, + "100.0" : 0.3418399474601764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3418399474601764, + 0.34048287031425556, + 0.34105157693881727 + ], + [ + 0.32901699193919853, + 0.32705652408673186, + 0.32701770281229564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14688081130821792, + "scoreError" : 9.95243265407193E-4, + "scoreConfidence" : [ + 0.14588556804281072, + 0.14787605457362513 + ], + "scorePercentiles" : { + "0.0" : 0.14637150941877314, + "50.0" : 0.1469702237968893, + "90.0" : 0.14730876705064372, + "95.0" : 0.14730876705064372, + "99.0" : 0.14730876705064372, + "99.9" : 0.14730876705064372, + "99.99" : 0.14730876705064372, + "99.999" : 0.14730876705064372, + "99.9999" : 0.14730876705064372, + "100.0" : 0.14730876705064372 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14696345241454312, + 0.14712056010474747, + 0.14637150941877314 + ], + [ + 0.14697699517923543, + 0.14654358368136458, + 0.14730876705064372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4071153460605485, + "scoreError" : 0.010540961127230457, + "scoreConfidence" : [ + 0.39657438493331804, + 0.41765630718777896 + ], + "scorePercentiles" : { + "0.0" : 0.40016624413765506, + "50.0" : 0.4076376666386089, + "90.0" : 0.41121837855174964, + "95.0" : 0.41121837855174964, + "99.0" : 0.41121837855174964, + "99.9" : 0.41121837855174964, + "99.99" : 0.41121837855174964, + "99.999" : 0.41121837855174964, + "99.9999" : 0.41121837855174964, + "100.0" : 0.41121837855174964 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41121837855174964, + 0.40824708613651206, + 0.4091594825498138 + ], + [ + 0.4068726378468549, + 0.4070282471407058, + 0.40016624413765506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16088992989651651, + "scoreError" : 0.0025937778570492473, + "scoreConfidence" : [ + 0.15829615203946726, + 0.16348370775356577 + ], + "scorePercentiles" : { + "0.0" : 0.15933190744546946, + "50.0" : 0.16100376340478484, + "90.0" : 0.16192922300667142, + "95.0" : 0.16192922300667142, + "99.0" : 0.16192922300667142, + "99.9" : 0.16192922300667142, + "99.99" : 0.16192922300667142, + "99.999" : 0.16192922300667142, + "99.9999" : 0.16192922300667142, + "100.0" : 0.16192922300667142 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16044997558001475, + 0.15933190744546946, + 0.1609132463192109 + ], + [ + 0.16162094653737374, + 0.16192922300667142, + 0.16109428049035876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04744451404896547, + "scoreError" : 6.62743760118256E-4, + "scoreConfidence" : [ + 0.04678177028884722, + 0.048107257809083724 + ], + "scorePercentiles" : { + "0.0" : 0.047186734389671914, + "50.0" : 0.047450652044874725, + "90.0" : 0.04767438158007647, + "95.0" : 0.04767438158007647, + "99.0" : 0.04767438158007647, + "99.9" : 0.04767438158007647, + "99.99" : 0.04767438158007647, + "99.999" : 0.04767438158007647, + "99.9999" : 0.04767438158007647, + "100.0" : 0.04767438158007647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047270189243357456, + 0.047186734389671914, + 0.04723477268175635 + ], + [ + 0.04767438158007647, + 0.047631114846392, + 0.047669891552538625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8897667.018465847, + "scoreError" : 441879.25162602786, + "scoreConfidence" : [ + 8455787.766839819, + 9339546.270091875 + ], + "scorePercentiles" : { + "0.0" : 8742629.097027972, + "50.0" : 8900571.31654723, + "90.0" : 9062588.54076087, + "95.0" : 9062588.54076087, + "99.0" : 9062588.54076087, + "99.9" : 9062588.54076087, + "99.99" : 9062588.54076087, + "99.999" : 9062588.54076087, + "99.9999" : 9062588.54076087, + "100.0" : 9062588.54076087 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8777410.319298245, + 8744147.249125874, + 8742629.097027972 + ], + [ + 9023732.313796213, + 9062588.54076087, + 9035494.590785908 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-11-20T02:37:33Z-09b4ae614a7ea82407e31f305bbe9dac2bdba994-jdk17.json b/performance-results/2025-11-20T02:37:33Z-09b4ae614a7ea82407e31f305bbe9dac2bdba994-jdk17.json new file mode 100644 index 0000000000..57e04b04e2 --- /dev/null +++ b/performance-results/2025-11-20T02:37:33Z-09b4ae614a7ea82407e31f305bbe9dac2bdba994-jdk17.json @@ -0,0 +1,1283 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3326121799410506, + "scoreError" : 0.0533259641710732, + "scoreConfidence" : [ + 3.2792862157699774, + 3.385938144112124 + ], + "scorePercentiles" : { + "0.0" : 3.3234316308114926, + "50.0" : 3.3318518843464564, + "90.0" : 3.3433133202597984, + "95.0" : 3.3433133202597984, + "99.0" : 3.3433133202597984, + "99.9" : 3.3433133202597984, + "99.99" : 3.3433133202597984, + "99.999" : 3.3433133202597984, + "99.9999" : 3.3433133202597984, + "100.0" : 3.3433133202597984 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3234316308114926, + 3.333325994787398 + ], + [ + 3.3303777739055147, + 3.3433133202597984 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.6774785117316764, + "scoreError" : 0.05056351626412096, + "scoreConfidence" : [ + 1.6269149954675555, + 1.7280420279957973 + ], + "scorePercentiles" : { + "0.0" : 1.6702908421203708, + "50.0" : 1.6773979495401985, + "90.0" : 1.6848273057259373, + "95.0" : 1.6848273057259373, + "99.0" : 1.6848273057259373, + "99.9" : 1.6848273057259373, + "99.99" : 1.6848273057259373, + "99.999" : 1.6848273057259373, + "99.9999" : 1.6848273057259373, + "100.0" : 1.6848273057259373 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6702908421203708, + 1.6711529409613788 + ], + [ + 1.6836429581190182, + 1.6848273057259373 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8488397672830397, + "scoreError" : 0.02242793414311625, + "scoreConfidence" : [ + 0.8264118331399234, + 0.871267701426156 + ], + "scorePercentiles" : { + "0.0" : 0.8442988686156693, + "50.0" : 0.849155810320029, + "90.0" : 0.8527485798764316, + "95.0" : 0.8527485798764316, + "99.0" : 0.8527485798764316, + "99.9" : 0.8527485798764316, + "99.99" : 0.8527485798764316, + "99.999" : 0.8527485798764316, + "99.9999" : 0.8527485798764316, + "100.0" : 0.8527485798764316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.849014522609059, + 0.8527485798764316 + ], + [ + 0.8442988686156693, + 0.8492970980309988 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.899122127589441, + "scoreError" : 0.27253274998355265, + "scoreConfidence" : [ + 15.626589377605889, + 16.171654877572994 + ], + "scorePercentiles" : { + "0.0" : 15.801665169873743, + "50.0" : 15.902694269895637, + "90.0" : 15.992728398692151, + "95.0" : 15.992728398692151, + "99.0" : 15.992728398692151, + "99.9" : 15.992728398692151, + "99.99" : 15.992728398692151, + "99.999" : 15.992728398692151, + "99.9999" : 15.992728398692151, + "100.0" : 15.992728398692151 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.80828302499217, + 15.801665169873743, + 15.821991496481004 + ], + [ + 15.983397043310271, + 15.986667632187299, + 15.992728398692151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2796.687529758879, + "scoreError" : 37.706857594543095, + "scoreConfidence" : [ + 2758.980672164336, + 2834.394387353422 + ], + "scorePercentiles" : { + "0.0" : 2773.7580170020374, + "50.0" : 2800.250995170519, + "90.0" : 2808.1397930766097, + "95.0" : 2808.1397930766097, + "99.0" : 2808.1397930766097, + "99.9" : 2808.1397930766097, + "99.99" : 2808.1397930766097, + "99.999" : 2808.1397930766097, + "99.9999" : 2808.1397930766097, + "100.0" : 2808.1397930766097 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2808.1397930766097, + 2805.69201451705, + 2807.6112212161775 + ], + [ + 2794.809975823988, + 2790.114156917409, + 2773.7580170020374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 73420.24655182673, + "scoreError" : 3271.465487640519, + "scoreConfidence" : [ + 70148.7810641862, + 76691.71203946725 + ], + "scorePercentiles" : { + "0.0" : 72340.86073027016, + "50.0" : 73426.31897810308, + "90.0" : 74498.83382483949, + "95.0" : 74498.83382483949, + "99.0" : 74498.83382483949, + "99.9" : 74498.83382483949, + "99.99" : 74498.83382483949, + "99.999" : 74498.83382483949, + "99.9999" : 74498.83382483949, + "100.0" : 74498.83382483949 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 72349.98456796659, + 72340.86073027016, + 72375.14394606101 + ], + [ + 74498.83382483949, + 74479.16223167797, + 74477.49401014515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.28449094473893, + "scoreError" : 2.944282103546426, + "scoreConfidence" : [ + 345.3402088411925, + 351.22877304828535 + ], + "scorePercentiles" : { + "0.0" : 347.22962679792204, + "50.0" : 347.8858816876976, + "90.0" : 349.6384360837405, + "95.0" : 349.6384360837405, + "99.0" : 349.6384360837405, + "99.9" : 349.6384360837405, + "99.99" : 349.6384360837405, + "99.999" : 349.6384360837405, + "99.9999" : 349.6384360837405, + "100.0" : 349.6384360837405 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.77980623510695, + 349.5586973328227, + 349.6384360837405 + ], + [ + 347.9919571402882, + 347.5084220785532, + 347.22962679792204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.5994046390989, + "scoreError" : 1.974937366634112, + "scoreConfidence" : [ + 111.6244672724648, + 115.57434200573302 + ], + "scorePercentiles" : { + "0.0" : 112.88383951566979, + "50.0" : 113.41914024034145, + "90.0" : 114.80140033760979, + "95.0" : 114.80140033760979, + "99.0" : 114.80140033760979, + "99.9" : 114.80140033760979, + "99.99" : 114.80140033760979, + "99.999" : 114.80140033760979, + "99.9999" : 114.80140033760979, + "100.0" : 114.80140033760979 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.46228762041908, + 113.37599286026382, + 113.06390911831095 + ], + [ + 112.88383951566979, + 114.00899838232003, + 114.80140033760979 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061715292701327217, + "scoreError" : 0.0010679257974093729, + "scoreConfidence" : [ + 0.060647366903917845, + 0.0627832184987366 + ], + "scorePercentiles" : { + "0.0" : 0.06133311753738209, + "50.0" : 0.06169531959481761, + "90.0" : 0.062112434071838064, + "95.0" : 0.062112434071838064, + "99.0" : 0.062112434071838064, + "99.9" : 0.062112434071838064, + "99.99" : 0.062112434071838064, + "99.999" : 0.062112434071838064, + "99.9999" : 0.062112434071838064, + "100.0" : 0.062112434071838064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06207946847355777, + 0.06198935421302868, + 0.062112434071838064 + ], + [ + 0.0613760969355502, + 0.06140128497660653, + 0.06133311753738209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.55042230292301E-4, + "scoreError" : 9.637342642250621E-7, + "scoreConfidence" : [ + 3.540784960280759E-4, + 3.5600596455652607E-4 + ], + "scorePercentiles" : { + "0.0" : 3.545310466418344E-4, + "50.0" : 3.5504888349907946E-4, + "90.0" : 3.5553672322892135E-4, + "95.0" : 3.5553672322892135E-4, + "99.0" : 3.5553672322892135E-4, + "99.9" : 3.5553672322892135E-4, + "99.99" : 3.5553672322892135E-4, + "99.999" : 3.5553672322892135E-4, + "99.9999" : 3.5553672322892135E-4, + "100.0" : 3.5553672322892135E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5553672322892135E-4, + 3.550015089536837E-4, + 3.552441150918679E-4 + ], + [ + 3.548437297930234E-4, + 3.545310466418344E-4, + 3.550962580444752E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.302143630427227, + "scoreError" : 0.052317498216517766, + "scoreConfidence" : [ + 2.249826132210709, + 2.3544611286437447 + ], + "scorePercentiles" : { + "0.0" : 2.26184855269109, + "50.0" : 2.306344401854405, + "90.0" : 2.3549109678331117, + "95.0" : 2.3567763475494816, + "99.0" : 2.3567763475494816, + "99.9" : 2.3567763475494816, + "99.99" : 2.3567763475494816, + "99.999" : 2.3567763475494816, + "99.9999" : 2.3567763475494816, + "100.0" : 2.3567763475494816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.3567763475494816, + 2.314865398148148, + 2.3296003265781504, + 2.2705494022701473, + 2.2654343877689693 + ], + [ + 2.3381225503857843, + 2.319991144514034, + 2.2978234055606617, + 2.26184855269109, + 2.266424788805801 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013627935993796006, + "scoreError" : 3.307157778531404E-4, + "scoreConfidence" : [ + 0.013297220215942866, + 0.013958651771649146 + ], + "scorePercentiles" : { + "0.0" : 0.013499447578974083, + "50.0" : 0.013636207227776136, + "90.0" : 0.013738793438433797, + "95.0" : 0.013738793438433797, + "99.0" : 0.013738793438433797, + "99.9" : 0.013738793438433797, + "99.99" : 0.013738793438433797, + "99.999" : 0.013738793438433797, + "99.9999" : 0.013738793438433797, + "100.0" : 0.013738793438433797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013734436426664323, + 0.013738793438433797, + 0.013731484508577816 + ], + [ + 0.013499447578974083, + 0.013540929946974457, + 0.013522524063151575 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0020056461280555, + "scoreError" : 0.022476500791931805, + "scoreConfidence" : [ + 0.9795291453361238, + 1.0244821469199874 + ], + "scorePercentiles" : { + "0.0" : 0.9941846916194452, + "50.0" : 1.0019669453453228, + "90.0" : 1.0097236476171243, + "95.0" : 1.0097236476171243, + "99.0" : 1.0097236476171243, + "99.9" : 1.0097236476171243, + "99.99" : 1.0097236476171243, + "99.999" : 1.0097236476171243, + "99.9999" : 1.0097236476171243, + "100.0" : 1.0097236476171243 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0095309820310923, + 1.0086718245083208, + 1.0097236476171243 + ], + [ + 0.9941846916194452, + 0.9952620661823248, + 0.9946606648100259 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.010475178566971985, + "scoreError" : 4.2114359024176E-4, + "scoreConfidence" : [ + 0.010054034976730224, + 0.010896322157213745 + ], + "scorePercentiles" : { + "0.0" : 0.010328362365631378, + "50.0" : 0.01047641341280271, + "90.0" : 0.010618157349540355, + "95.0" : 0.010618157349540355, + "99.0" : 0.010618157349540355, + "99.9" : 0.010618157349540355, + "99.99" : 0.010618157349540355, + "99.999" : 0.010618157349540355, + "99.9999" : 0.010618157349540355, + "100.0" : 0.010618157349540355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010618157349540355, + 0.010605451926747944, + 0.010612742250776833 + ], + [ + 0.010347374898857477, + 0.010338982610277925, + 0.010328362365631378 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.129938372235572, + "scoreError" : 0.2796094491523664, + "scoreConfidence" : [ + 2.8503289230832056, + 3.409547821387938 + ], + "scorePercentiles" : { + "0.0" : 3.0270567263922517, + "50.0" : 3.13591966013266, + "90.0" : 3.2233045837628866, + "95.0" : 3.2233045837628866, + "99.0" : 3.2233045837628866, + "99.9" : 3.2233045837628866, + "99.99" : 3.2233045837628866, + "99.999" : 3.2233045837628866, + "99.9999" : 3.2233045837628866, + "100.0" : 3.2233045837628866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.220407182227946, + 3.218140173745174, + 3.2233045837628866 + ], + [ + 3.037022420765027, + 3.0270567263922517, + 3.0536991465201466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8905156273330963, + "scoreError" : 0.02328378849501425, + "scoreConfidence" : [ + 2.867231838838082, + 2.9137994158281106 + ], + "scorePercentiles" : { + "0.0" : 2.882803729682997, + "50.0" : 2.888308531331263, + "90.0" : 2.906259704532249, + "95.0" : 2.906259704532249, + "99.0" : 2.906259704532249, + "99.9" : 2.906259704532249, + "99.99" : 2.906259704532249, + "99.999" : 2.906259704532249, + "99.9999" : 2.906259704532249, + "100.0" : 2.906259704532249 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.88566757559146, + 2.887166375, + 2.889450687662525 + ], + [ + 2.906259704532249, + 2.882803729682997, + 2.891745691529344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17917726512401685, + "scoreError" : 0.0012261384702520679, + "scoreConfidence" : [ + 0.17795112665376478, + 0.18040340359426893 + ], + "scorePercentiles" : { + "0.0" : 0.17867455089424503, + "50.0" : 0.17922075401153353, + "90.0" : 0.17965633972297576, + "95.0" : 0.17965633972297576, + "99.0" : 0.17965633972297576, + "99.9" : 0.17965633972297576, + "99.99" : 0.17965633972297576, + "99.999" : 0.17965633972297576, + "99.9999" : 0.17965633972297576, + "100.0" : 0.17965633972297576 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17895480598056585, + 0.17874157203882107, + 0.17867455089424503 + ], + [ + 0.1795496200649922, + 0.17965633972297576, + 0.17948670204250125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33430754270456425, + "scoreError" : 0.011186792367567826, + "scoreConfidence" : [ + 0.32312075033699644, + 0.34549433507213206 + ], + "scorePercentiles" : { + "0.0" : 0.3295819205391866, + "50.0" : 0.33542790244649223, + "90.0" : 0.33800336926248903, + "95.0" : 0.33800336926248903, + "99.0" : 0.33800336926248903, + "99.9" : 0.33800336926248903, + "99.99" : 0.33800336926248903, + "99.999" : 0.33800336926248903, + "99.9999" : 0.33800336926248903, + "100.0" : 0.33800336926248903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33800336926248903, + 0.33764448254439866, + 0.3375789492641102 + ], + [ + 0.3332768556288742, + 0.3295819205391866, + 0.32975967898832687 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14627044433358438, + "scoreError" : 0.004956424273074186, + "scoreConfidence" : [ + 0.1413140200605102, + 0.15122686860665857 + ], + "scorePercentiles" : { + "0.0" : 0.14507583078730904, + "50.0" : 0.14515113705021365, + "90.0" : 0.1485801867320407, + "95.0" : 0.1485801867320407, + "99.0" : 0.1485801867320407, + "99.9" : 0.1485801867320407, + "99.99" : 0.1485801867320407, + "99.999" : 0.1485801867320407, + "99.9999" : 0.1485801867320407, + "100.0" : 0.1485801867320407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.145159835493751, + 0.14514243860667633, + 0.14514081740203194 + ], + [ + 0.14507583078730904, + 0.14852355697969732, + 0.1485801867320407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4058748977538484, + "scoreError" : 0.01585443709450083, + "scoreConfidence" : [ + 0.39002046065934753, + 0.42172933484834924 + ], + "scorePercentiles" : { + "0.0" : 0.40091500797787044, + "50.0" : 0.4045229172737388, + "90.0" : 0.41416803661061874, + "95.0" : 0.41416803661061874, + "99.0" : 0.41416803661061874, + "99.9" : 0.41416803661061874, + "99.99" : 0.41416803661061874, + "99.999" : 0.41416803661061874, + "99.9999" : 0.41416803661061874, + "100.0" : 0.41416803661061874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41416803661061874, + 0.4100750950916472, + 0.4078268442967253 + ], + [ + 0.40121899025075225, + 0.4010454122954764, + 0.40091500797787044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15889447440725357, + "scoreError" : 0.0048813889177607905, + "scoreConfidence" : [ + 0.15401308548949277, + 0.16377586332501437 + ], + "scorePercentiles" : { + "0.0" : 0.15678026067257192, + "50.0" : 0.15937500256557674, + "90.0" : 0.1604771103568907, + "95.0" : 0.1604771103568907, + "99.0" : 0.1604771103568907, + "99.9" : 0.1604771103568907, + "99.99" : 0.1604771103568907, + "99.999" : 0.1604771103568907, + "99.9999" : 0.1604771103568907, + "100.0" : 0.1604771103568907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16039131121589761, + 0.1604771103568907, + 0.1603139903493163 + ], + [ + 0.1584360147818372, + 0.15678026067257192, + 0.1569681590670078 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046874595405080044, + "scoreError" : 7.112796634006733E-5, + "scoreConfidence" : [ + 0.046803467438739976, + 0.04694572337142011 + ], + "scorePercentiles" : { + "0.0" : 0.04684279002075107, + "50.0" : 0.04687867667457685, + "90.0" : 0.04690527301466691, + "95.0" : 0.04690527301466691, + "99.0" : 0.04690527301466691, + "99.9" : 0.04690527301466691, + "99.99" : 0.04690527301466691, + "99.999" : 0.04690527301466691, + "99.9999" : 0.04690527301466691, + "100.0" : 0.04690527301466691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04684279002075107, + 0.04687845594198414, + 0.04684652153504539 + ], + [ + 0.04690527301466691, + 0.04689563451086319, + 0.046878897407169544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8755460.501280613, + "scoreError" : 231832.52216371533, + "scoreConfidence" : [ + 8523627.979116898, + 8987293.023444328 + ], + "scorePercentiles" : { + "0.0" : 8705755.225413403, + "50.0" : 8723361.412629273, + "90.0" : 8922448.074041035, + "95.0" : 8922448.074041035, + "99.0" : 8922448.074041035, + "99.9" : 8922448.074041035, + "99.99" : 8922448.074041035, + "99.999" : 8922448.074041035, + "99.9999" : 8922448.074041035, + "100.0" : 8922448.074041035 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8720436.253705319, + 8726286.571553228, + 8705755.225413403 + ], + [ + 8922448.074041035, + 8741811.662587412, + 8716025.220383275 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/security/SECURITY_README.md b/security/SECURITY_README.md new file mode 100644 index 0000000000..ecb543ef05 --- /dev/null +++ b/security/SECURITY_README.md @@ -0,0 +1,9 @@ +## Submitting CVE records + +Use https://vulnogram.github.io/ as a UI to write, validate, and submit CVE records. + +In this Vulnogram UI, you'll be able to view a JSON preview of the CVE payload. You'll find a sample payload in this directory. + +It's better to use the Vulnogram UI as it'll provide extra validation of input. + +Also note, as a CNA we do not need to provide a CVSS score for CVEs. This will be done by security vendors instead. diff --git a/security/cve-sample.json b/security/cve-sample.json new file mode 100644 index 0000000000..715d583209 --- /dev/null +++ b/security/cve-sample.json @@ -0,0 +1,75 @@ +{ + "dataType": "CVE_RECORD", + "dataVersion": "5.1", + "cveMetadata": { + "cveId": "", + "assignerOrgId": "00000000-0000-4000-9000-000000000000", + "requesterUserId": "00000000-0000-4000-9000-000000000000", + "serial": 1, + "state": "PUBLISHED" + }, + "containers": { + "cna": { + "providerMetadata": { + "orgId": "00000000-0000-4000-9000-000000000000" + }, + "problemTypes": [ + { + "descriptions": [ + { + "lang": "en", + "description": "" + } + ] + } + ], + "impacts": [ + { + "descriptions": [ + { + "lang": "en", + "value": "" + } + ] + } + ], + "affected": [ + { + "vendor": "GraphQL Java", + "product": "GraphQL Java [or other library]", + "versions": [ + { + "status": "affected", + "version": "" + } + ], + "defaultStatus": "unaffected" + } + ], + "descriptions": [ + { + "lang": "en", + "value": "[PROBLEMTYPE] in [COMPONENT] in [VENDOR] [PRODUCT] [VERSION] on [PLATFORMS] allows [ATTACKER] to [IMPACT] via [VECTOR]", + "supportingMedia": [ + { + "type": "text/html", + "base64": false, + "value": "[PROBLEMTYPE] in [COMPONENT] in [VENDOR] [PRODUCT] [VERSION] on [PLATFORMS] allows [ATTACKER] to [IMPACT] via [VECTOR]" + } + ] + } + ], + "references": [ + { + "url": "https://add-github-links-here" + } + ], + "source": { + "discovery": "UNKNOWN" + }, + "x_generator": { + "engine": "Vulnogram 0.2.0" + } + } + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 72827aa7ad..62e3428491 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,19 @@ -rootProject.name = 'graphql-java' +pluginManagement { + repositories { + mavenCentral() + maven { + url = 'https://plugins.gradle.org/m2' + metadataSources { + // Avoid redirection to defunct JCenter when Gradle module metadata is not published by a plugin (e.g. JMH plugin) + ignoreGradleMetadataRedirection() + mavenPom() + artifact() + } + } + } +} +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} +rootProject.name = 'graphql-java' diff --git a/src/jmh/java/benchmark/AssertBenchmark.java b/src/jmh/java/benchmark/AssertBenchmark.java new file mode 100644 index 0000000000..d3ecc838a7 --- /dev/null +++ b/src/jmh/java/benchmark/AssertBenchmark.java @@ -0,0 +1,90 @@ +package benchmark; + +import graphql.Assert; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.Random; +import java.util.concurrent.TimeUnit; + +@Warmup(iterations = 2, time = 5, batchSize = 50) +@Measurement(iterations = 3, batchSize = 50) +@Fork(2) +public class AssertBenchmark { + + private static final int LOOPS = 100; + private static final boolean BOOL = new Random().nextBoolean(); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAssertWithString() { + for (int i = 0; i < LOOPS; i++) { + Assert.assertTrue(jitTrue(), "This string is constant"); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAssertWithStringSupplier() { + for (int i = 0; i < LOOPS; i++) { + Assert.assertTrue(jitTrue(), () -> "This string is constant"); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAssertWithStringSupplierFormatted() { + for (int i = 0; i < LOOPS; i++) { + final int captured = i; + Assert.assertTrue(jitTrue(), () -> String.format("This string is not constant %d", captured)); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAssertWithStringFormatted() { + for (int i = 0; i < LOOPS; i++) { + Assert.assertTrue(jitTrue(), "This string is not constant %d", i); + } + } + + private boolean jitTrue() { + // can you jit this away, Mr JIT?? + //noinspection ConstantValue,SimplifiableConditionalExpression + return BOOL ? BOOL : !BOOL; + } + + public static void main(String[] args) throws RunnerException { + runAtStartup(); + Options opt = new OptionsBuilder() + .include("benchmark.AssertBenchmark") + .build(); + + new Runner(opt).run(); + } + + private static void runAtStartup() { + AssertBenchmark benchMark = new AssertBenchmark(); + BenchmarkUtils.runInToolingForSomeTimeThenExit( + () -> { + }, + benchMark::benchMarkAssertWithStringSupplier, + () -> { + } + + ); + } +} diff --git a/src/jmh/java/benchmark/AstPrinterBenchmark.java b/src/jmh/java/benchmark/AstPrinterBenchmark.java new file mode 100644 index 0000000000..f3eb10d068 --- /dev/null +++ b/src/jmh/java/benchmark/AstPrinterBenchmark.java @@ -0,0 +1,248 @@ +package benchmark; + +import graphql.language.AstPrinter; +import graphql.language.Document; +import graphql.parser.Parser; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3, time = 10) +@Fork(2) +public class AstPrinterBenchmark { + /** + * Note: this query is a redacted version of a real query + */ + private static final Document document = Parser.parse("query fang($slip: dinner!) {\n" + + " instinctive(thin: $slip) {\n" + + " annoy {\n" + + " ...account\n" + + " }\n" + + " massive {\n" + + " ...cellar\n" + + " }\n" + + " used {\n" + + " ...rinse\n" + + " }\n" + + " distinct(sedate: [disarm]) {\n" + + " ...lamp\n" + + " }\n" + + " venomous {\n" + + " uninterested\n" + + " }\n" + + " correct {\n" + + " ...plane\n" + + " }\n" + + " drown\n" + + " talk {\n" + + " house\n" + + " womanly\n" + + " royal {\n" + + " ...snore\n" + + " }\n" + + " gray\n" + + " normal\n" + + " proud\n" + + " crate\n" + + " billowy {\n" + + " frogs\n" + + " abstracted\n" + + " market\n" + + " corn\n" + + " }\n" + + " tip {\n" + + " ...public\n" + + " }\n" + + " stick {\n" + + " ...precious\n" + + " }\n" + + " null {\n" + + " ...precious\n" + + " }\n" + + " }\n" + + " }\n" + + "}\n" + + "\n" + + "fragment account on bath {\n" + + " purpose\n" + + " festive\n" + + " ruddy\n" + + "}\n" + + "\n" + + "fragment cellar on thunder {\n" + + " debonair\n" + + " immense\n" + + " object\n" + + " moon\n" + + " icy {\n" + + " furniture\n" + + " historical\n" + + " team\n" + + " root\n" + + " }\n" + + "}\n" + + "\n" + + "fragment rinse on song {\n" + + " reply {\n" + + " sticks\n" + + " unbecoming\n" + + " }\n" + + " love {\n" + + " annoying\n" + + " sign\n" + + " }\n" + + "}\n" + + "\n" + + "fragment lamp on heartbreaking {\n" + + " innocent\n" + + " decorate\n" + + " pancake\n" + + " arithmetic\n" + + " grey\n" + + " brass\n" + + " pocket\n" + + "}\n" + + "\n" + + "fragment snore on tired {\n" + + " share\n" + + " baseball\n" + + " suspend\n" + + "}\n" + + "\n" + + "fragment settle on incompetent {\n" + + " name\n" + + " juggle\n" + + " depressed\n" + + "}\n" + + "\n" + + "fragment few on puffy {\n" + + " ticket\n" + + " puny\n" + + " copy\n" + + " coast\n" + + "}\n" + + "\n" + + "fragment plane on seat {\n" + + " ice\n" + + " mug\n" + + " wobble\n" + + " clear\n" + + " toys {\n" + + " ...few\n" + + " }\n" + + "}\n" + + "\n" + + "fragment public on basin {\n" + + " different\n" + + " fang\n" + + " slip\n" + + " dinner\n" + + " instinctive\n" + + " thin {\n" + + " annoy {\n" + + " account\n" + + " massive\n" + + " cellar\n" + + " used\n" + + " rinse {\n" + + " distinct\n" + + " }\n" + + " sedate {\n" + + " disarm\n" + + " }\n" + + " lamp {\n" + + " venomous\n" + + " }\n" + + " }\n" + + " uninterested {\n" + + " ...settle\n" + + " }\n" + + " }\n" + + "}\n" + + "\n" + + "fragment precious on drown {\n" + + " talk\n" + + " house\n" + + " womanly\n" + + " royal {\n" + + " snore {\n" + + " gray\n" + + " }\n" + + " normal {\n" + + " proud\n" + + " crate\n" + + " billowy\n" + + " frogs\n" + + " abstracted {\n" + + " ...snore\n" + + " }\n" + + " corn {\n" + + " tip\n" + + " public\n" + + " }\n" + + " stick {\n" + + " ...settle\n" + + " }\n" + + " null {\n" + + " ...few\n" + + " }\n" + + " marry\n" + + " bath {\n" + + " purpose\n" + + " festive\n" + + " }\n" + + " ruddy\n" + + " help\n" + + " thunder\n" + + " debonair {\n" + + " immense\n" + + " }\n" + + " object\n" + + " }\n" + + " }\n" + + "}"); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkAstPrinterThroughput(Blackhole blackhole) { + printAst(blackhole); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAstPrinterAvgTime(Blackhole blackhole) { + printAst(blackhole); + } + + public static void printAst(Blackhole blackhole) { + blackhole.consume(AstPrinter.printAst(document)); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkAstPrinterCompactThroughput(Blackhole blackhole) { + printAstCompact(blackhole); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAstPrinterCompactAvgTime(Blackhole blackhole) { + printAstCompact(blackhole); + } + + public static void printAstCompact(Blackhole blackhole) { + blackhole.consume(AstPrinter.printAstCompact(document)); + } +} diff --git a/src/jmh/java/benchmark/AsyncBenchmark.java b/src/jmh/java/benchmark/AsyncBenchmark.java new file mode 100644 index 0000000000..a2fa43addd --- /dev/null +++ b/src/jmh/java/benchmark/AsyncBenchmark.java @@ -0,0 +1,68 @@ +package benchmark; + +import graphql.execution.Async; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@BenchmarkMode(Mode.Throughput) +@Warmup(iterations = 2) +@Measurement(iterations = 2, timeUnit = TimeUnit.NANOSECONDS) +@Fork(2) +public class AsyncBenchmark { + + @Param({"1", "5", "20"}) + public int numberOfFieldCFs; + + List> futures; + + @Setup(Level.Trial) + public void setUp() throws ExecutionException, InterruptedException { + futures = new ArrayList<>(); + for (int i = 0; i < numberOfFieldCFs; i++) { + futures.add(mkFuture(i)); + } + + } + + private CompletableFuture mkFuture(int i) { + return CompletableFuture.completedFuture(i); + } + + + @Benchmark + @Warmup(iterations = 2, batchSize = 100) + @Measurement(iterations = 2, batchSize = 100) + public List benchmarkAsync() { + Async.CombinedBuilder builder = Async.ofExpectedSize(futures.size()); + futures.forEach(builder::add); + return builder.await().join(); + } + + public static void main(String[] args) throws Exception { + Options opt = new OptionsBuilder() + .include("benchmark.AsyncBenchmark") + .build(); + + new Runner(opt).run(); + } + +} diff --git a/src/jmh/java/benchmark/BenchmarkUtils.java b/src/jmh/java/benchmark/BenchmarkUtils.java new file mode 100644 index 0000000000..c8dda196d0 --- /dev/null +++ b/src/jmh/java/benchmark/BenchmarkUtils.java @@ -0,0 +1,84 @@ +package benchmark; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.Callable; + +public class BenchmarkUtils { + + @SuppressWarnings("UnstableApiUsage") + static String loadResource(String name) { + return asRTE(() -> { + URL resource = BenchmarkUtils.class.getClassLoader().getResource(name); + if (resource == null) { + throw new IllegalArgumentException("missing resource: " + name); + } + byte[] bytes; + try (InputStream inputStream = resource.openStream()) { + bytes = inputStream.readAllBytes(); + } + return new String(bytes, Charset.defaultCharset()); + }); + } + + static T asRTE(Callable callable) { + try { + return callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static void runInToolingForSomeTimeThenExit(Runnable setup, Runnable r, Runnable tearDown) { + int runForMillis = getRunForMillis(); + if (runForMillis <= 0) { + System.out.print("'runForMillis' environment var is not set - continuing \n"); + return; + } + System.out.printf("Running initial code in some tooling - runForMillis=%d \n", runForMillis); + System.out.print("Get your tooling in order and press enter..."); + readLine(); + System.out.print("Lets go...\n"); + setup.run(); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss"); + long now, then = System.currentTimeMillis(); + do { + now = System.currentTimeMillis(); + long msLeft = runForMillis - (now - then); + System.out.printf("\t%s Running in loop... %s ms left\n", dtf.format(LocalDateTime.now()), msLeft); + r.run(); + now = System.currentTimeMillis(); + } while ((now - then) < runForMillis); + + tearDown.run(); + + System.out.printf("This ran for %d millis. Exiting...\n", System.currentTimeMillis() - then); + System.exit(0); + } + + private static void readLine() { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + try { + br.readLine(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static int getRunForMillis() { + String runFor = System.getenv("runForMillis"); + try { + return Integer.parseInt(runFor); + } catch (NumberFormatException e) { + return -1; + } + } + +} diff --git a/src/jmh/java/benchmark/ChainedInstrumentationBenchmark.java b/src/jmh/java/benchmark/ChainedInstrumentationBenchmark.java new file mode 100644 index 0000000000..da28bdbade --- /dev/null +++ b/src/jmh/java/benchmark/ChainedInstrumentationBenchmark.java @@ -0,0 +1,85 @@ +package benchmark; + +import graphql.ExecutionInput; +import graphql.execution.instrumentation.ChainedInstrumentation; +import graphql.execution.instrumentation.Instrumentation; +import graphql.execution.instrumentation.InstrumentationState; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ExecutionException; + +import static graphql.Scalars.GraphQLString; +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; +import static graphql.schema.GraphQLObjectType.newObject; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class ChainedInstrumentationBenchmark { + + @Param({"0", "1", "10"}) + public int num; + + ChainedInstrumentation chainedInstrumentation; + GraphQLSchema schema; + InstrumentationExecutionParameters parameters; + InstrumentationState instrumentationState; + + @Setup(Level.Trial) + public void setUp() throws ExecutionException, InterruptedException { + GraphQLObjectType queryType = newObject() + .name("benchmarkQuery") + .field(newFieldDefinition() + .type(GraphQLString) + .name("benchmark")) + .build(); + schema = GraphQLSchema.newSchema() + .query(queryType) + .build(); + + ExecutionInput executionInput = ExecutionInput.newExecutionInput().query("benchmark").build(); + InstrumentationCreateStateParameters createStateParameters = new InstrumentationCreateStateParameters(schema, executionInput); + + List instrumentations = Collections.nCopies(num, new SimplePerformantInstrumentation()); + chainedInstrumentation = new ChainedInstrumentation(instrumentations); + instrumentationState = chainedInstrumentation.createStateAsync(createStateParameters).get(); + parameters = new InstrumentationExecutionParameters(executionInput, schema); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + public GraphQLSchema benchmarkInstrumentSchema() { + return chainedInstrumentation.instrumentSchema(schema, parameters, instrumentationState); + } + + public static void main(String[] args) throws Exception { + Options opt = new OptionsBuilder() + .include("benchmark.ChainedInstrumentationBenchmark") + .forks(1) + .build(); + + new Runner(opt).run(); + } + +} diff --git a/src/jmh/java/benchmark/CompletableFuturesBenchmark.java b/src/jmh/java/benchmark/CompletableFuturesBenchmark.java new file mode 100644 index 0000000000..746a1fb194 --- /dev/null +++ b/src/jmh/java/benchmark/CompletableFuturesBenchmark.java @@ -0,0 +1,108 @@ +package benchmark; + +import com.google.common.collect.ImmutableList; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CompletableFuture; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 1) +@Measurement(iterations = 3, time = 10, batchSize = 10) +@Fork(2) +public class CompletableFuturesBenchmark { + + + @Param({"2", "5"}) + public int depth; + public int howMany = 10; + + @Setup(Level.Trial) + public void setUp() { + } + + private List> mkCFObjects(int howMany, int depth) { + if (depth <= 0) { + return Collections.emptyList(); + } + ImmutableList.Builder> builder = ImmutableList.builder(); + for (int i = 0; i < howMany; i++) { + CompletableFuture cf = CompletableFuture.completedFuture(mkCFObjects(howMany, depth - 1)); + builder.add(cf); + } + return builder.build(); + } + + private List mkObjects(int howMany, int depth) { + if (depth <= 0) { + return Collections.emptyList(); + } + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < howMany; i++) { + Object obj = mkObjects(howMany, depth - 1); + builder.add(obj); + } + return builder.build(); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + public void benchmarkCFApproach() { + // make results + List> completableFutures = mkCFObjects(howMany, depth); + // traverse results + traverseCFS(completableFutures); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + public void benchmarkMaterializedApproach() { + // make results + List objects = mkObjects(howMany, depth); + // traverse results + traverseObjects(objects); + } + + @SuppressWarnings("unchecked") + private void traverseCFS(List> completableFutures) { + for (CompletableFuture completableFuture : completableFutures) { + // and when it's done - visit its child results - which are always immediate on completed CFs + // so this whenComplete executed now + completableFuture.whenComplete((list, t) -> { + List> cfs = (List>) list; + traverseCFS(cfs); + }); + } + } + + @SuppressWarnings("unchecked") + private void traverseObjects(List objects) { + for (Object object : objects) { + List list = (List) object; + traverseObjects(list); + } + } + + public static void main(String[] args) throws Exception { + Options opt = new OptionsBuilder() + .include("benchmark.CompletableFuturesBenchmark") + .build(); + + new Runner(opt).run(); + } + +} diff --git a/src/jmh/java/benchmark/ComplexQueryBenchmark.java b/src/jmh/java/benchmark/ComplexQueryBenchmark.java new file mode 100644 index 0000000000..07e9a6c1b8 --- /dev/null +++ b/src/jmh/java/benchmark/ComplexQueryBenchmark.java @@ -0,0 +1,272 @@ +package benchmark; + +import com.google.common.collect.ImmutableList; +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; + +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * This benchmark is an attempt to have a more complex query that involves async and sync work together + * along with multiple threads happening. + *

+ * It can also be run in a forever mode say if you want to connect a profiler to it say + */ +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class ComplexQueryBenchmark { + + @Param({"5", "10", "20"}) + int howManyItems = 5; + int howLongToSleep = 5; + int howManyQueries = 10; + int howManyQueryThreads = 10; + int howManyFetcherThreads = 10; + + ExecutorService queryExecutorService; + ExecutorService fetchersExecutorService; + GraphQL graphQL; + volatile boolean shutDown; + + @Setup(Level.Trial) + public void setUp() { + shutDown = false; + queryExecutorService = Executors.newFixedThreadPool(howManyQueryThreads); + fetchersExecutorService = Executors.newFixedThreadPool(howManyFetcherThreads); + graphQL = buildGraphQL(); + } + + @TearDown(Level.Trial) + public void tearDown() { + shutDown = true; + queryExecutorService.shutdownNow(); + fetchersExecutorService.shutdownNow(); + } + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public Object benchMarkSimpleQueriesThroughput() { + return runManyQueriesToCompletion(); + } + + + public static void main(String[] args) throws Exception { + // just to make sure it's all valid before testing + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("benchmark.ComplexQueryBenchmark") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + + @SuppressWarnings({"ConstantValue", "LoopConditionNotUpdatedInsideLoop"}) + private static void runAtStartup() { + + ComplexQueryBenchmark complexQueryBenchmark = new ComplexQueryBenchmark(); + complexQueryBenchmark.howManyQueries = 5; + complexQueryBenchmark.howManyItems = 10; + + BenchmarkUtils.runInToolingForSomeTimeThenExit( + complexQueryBenchmark::setUp, + complexQueryBenchmark::runManyQueriesToCompletion, + complexQueryBenchmark::tearDown + + ); + } + + + + @SuppressWarnings("UnnecessaryLocalVariable") + private Void runManyQueriesToCompletion() { + CompletableFuture[] cfs = new CompletableFuture[howManyQueries]; + for (int i = 0; i < howManyQueries; i++) { + cfs[i] = CompletableFuture.supplyAsync(() -> executeQuery(howManyItems, howLongToSleep), queryExecutorService).thenCompose(cf -> cf); + } + Void result = CompletableFuture.allOf(cfs).join(); + return result; + } + + public CompletableFuture executeQuery(int howMany, int howLong) { + String fields = "id name f1 f2 f3 f4 f5 f6 f7 f8 f9 f10"; + String query = "query q {" + + String.format("shops(howMany : %d) { %s departments( howMany : %d) { %s products(howMany : %d) { %s }}}\n" + , howMany, fields, 10, fields, 5, fields) + + String.format("expensiveShops(howMany : %d howLong : %d) { %s expensiveDepartments( howMany : %d howLong : %d) { %s expensiveProducts(howMany : %d howLong : %d) { %s }}}\n" + , howMany, howLong, fields, 10, howLong, fields, 5, howLong, fields) + + "}"; + return graphQL.executeAsync(ExecutionInput.newExecutionInput(query).build()); + } + + private GraphQL buildGraphQL() { + TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(BenchmarkUtils.loadResource("storesanddepartments.graphqls")); + + DataFetcher shopsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveShopsDF = env -> supplyAsync(() -> sleepAndReturnThings(env)); + DataFetcher departmentsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveDepartmentsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + DataFetcher productsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveProductsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + + RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("shops", shopsDF) + .dataFetcher("expensiveShops", expensiveShopsDF)) + .type(newTypeWiring("Shop") + .dataFetcher("departments", departmentsDF) + .dataFetcher("expensiveDepartments", expensiveDepartmentsDF)) + .type(newTypeWiring("Department") + .dataFetcher("products", productsDF) + .dataFetcher("expensiveProducts", expensiveProductsDF)) + .build(); + + GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(definitionRegistry, runtimeWiring); + + return GraphQL.newGraphQL(graphQLSchema).build(); + } + + private CompletableFuture supplyAsyncListItems(DataFetchingEnvironment environment, Supplier codeToRun) { + return supplyAsync(codeToRun); + } + + private CompletableFuture supplyAsync(Supplier codeToRun) { + if (!shutDown) { + //logEvery(100, "async fetcher"); + return CompletableFuture.supplyAsync(codeToRun, fetchersExecutorService); + } else { + // if we have shutdown - get on with it, so we shut down quicker + return CompletableFuture.completedFuture(codeToRun.get()); + } + } + + private List sleepAndReturnThings(DataFetchingEnvironment env) { + // by sleeping, we hope to cause the objects to stay longer in GC land and hence have a longer lifecycle + // then a simple stack say or young gen gc. I don't know this will work, but I am trying it + // to represent work that takes some tie to complete + sleep(env.getArgument("howLong")); + return mkHowManyThings(env.getArgument("howMany")); + } + + private void sleep(Integer howLong) { + if (howLong > 0) { + try { + Thread.sleep(howLong); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + AtomicInteger logCount = new AtomicInteger(); + + private void logEvery(int every, String s) { + int count = logCount.getAndIncrement(); + if (count == 0 || count % every == 0) { + System.out.println("\t" + count + "\t" + s); + } + } + + private List mkHowManyThings(Integer howMany) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < howMany; i++) { + builder.add(new IdAndNamedThing(i)); + } + return builder.build(); + } + + @SuppressWarnings("unused") + static class IdAndNamedThing { + private final int i; + + public IdAndNamedThing(int i) { + this.i = i; + } + + public String getId() { + return "id" + i; + } + + public String getName() { + return "name" + i; + } + + public String getF1() { + return "f1" + i; + } + + public String getF2() { + return "f2" + i; + } + + public String getF3() { + return "f3" + i; + } + + public String getF4() { + return "f4" + i; + } + + public String getF5() { + return "f5" + i; + } + + public String getF6() { + return "f6" + i; + } + + public String getF7() { + return "f7" + i; + } + + public String getF8() { + return "f8" + i; + } + + public String getF9() { + return "f9" + i; + } + + public String getF10() { + return "f10" + i; + } + } +} diff --git a/src/jmh/java/benchmark/CreateExtendedSchemaBenchmark.java b/src/jmh/java/benchmark/CreateExtendedSchemaBenchmark.java new file mode 100644 index 0000000000..54ade0d761 --- /dev/null +++ b/src/jmh/java/benchmark/CreateExtendedSchemaBenchmark.java @@ -0,0 +1,121 @@ +package benchmark; + +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +import static benchmark.BenchmarkUtils.runInToolingForSomeTimeThenExit; + +/** + * This JMH + */ +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class CreateExtendedSchemaBenchmark { + + private static final String SDL = mkSDL(); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MINUTES) + public void benchmarkLargeSchemaCreate(Blackhole blackhole) { + blackhole.consume(createSchema(SDL)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkLargeSchemaCreateAvgTime(Blackhole blackhole) { + blackhole.consume(createSchema(SDL)); + } + + private static GraphQLSchema createSchema(String sdl) { + TypeDefinitionRegistry registry = new SchemaParser().parse(sdl); + return new SchemaGenerator().makeExecutableSchema(registry, RuntimeWiring.MOCKED_WIRING); + } + + /* something like + type Query { q : String } interface I { f : String } + interface I1 implements I { + f : String + f1 : String + } + type O1_1 implements I1 & I { + f : String + f1 : String + } + type O1_2 implements I1 & I { + f : String + f1 : String + } + */ + private static String mkSDL() { + int numTypes = 10000; + int numExtends = 10; + + StringBuilder sb = new StringBuilder(); + sb.append("type Query { q : String } interface I { f : String } interface X { x : String }\n"); + for (int i = 0; i < numTypes; i++) { + sb.append("interface I").append(i).append(" implements I { \n") + .append("\tf : String \n") + .append("\tf").append(i).append(" : String \n").append("}\n"); + + sb.append("type O").append(i).append(" implements I").append(i).append(" & I { \n") + .append("\tf : String \n") + .append("\tf").append(i).append(" : String \n") + .append("}\n"); + + sb.append("extend type O").append(i).append(" implements X").append(" { \n") + .append("\tx : String \n") + .append("}\n"); + + for (int j = 0; j < numExtends; j++) { + sb.append("extend type O").append(i).append(" { \n") + .append("\textendedF").append(j).append(" : String \n") + .append("}\n"); + + } + } + return sb.toString(); + } + + public static void main(String[] args) throws RunnerException { + try { + runAtStartup(); + } catch (Throwable e) { + throw new RuntimeException(e); + } + Options opt = new OptionsBuilder() + .include("benchmark.CreateExtendedSchemaBenchmark") + .build(); + + new Runner(opt).run(); + } + + private static void runAtStartup() { + runInToolingForSomeTimeThenExit( + () -> { + }, + () -> createSchema(SDL), + () -> { + } + ); + } +} \ No newline at end of file diff --git a/src/jmh/java/benchmark/CreateSchemaBenchmark.java b/src/jmh/java/benchmark/CreateSchemaBenchmark.java new file mode 100644 index 0000000000..6d20990415 --- /dev/null +++ b/src/jmh/java/benchmark/CreateSchemaBenchmark.java @@ -0,0 +1,57 @@ +package benchmark; + +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class CreateSchemaBenchmark { + + static String largeSDL = BenchmarkUtils.loadResource("large-schema-3.graphqls"); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MINUTES) + public void benchmarkLargeSchemaCreate(Blackhole blackhole) { + blackhole.consume(createSchema(largeSDL)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkLargeSchemaCreateAvgTime(Blackhole blackhole) { + blackhole.consume(createSchema(largeSDL)); + } + + private static GraphQLSchema createSchema(String sdl) { + TypeDefinitionRegistry registry = new SchemaParser().parse(sdl); + return new SchemaGenerator().makeExecutableSchema(registry, RuntimeWiring.MOCKED_WIRING); + } + + @SuppressWarnings("InfiniteLoopStatement") + /// make this a main method if you want to run it in JProfiler etc.. + public static void mainXXX(String[] args) { + int i = 0; + while (true) { + createSchema(largeSDL); + i++; + if (i % 100 == 0) { + System.out.printf("%d\n", i); + } + } + } +} \ No newline at end of file diff --git a/src/jmh/java/benchmark/GetterAccessBenchmark.java b/src/jmh/java/benchmark/GetterAccessBenchmark.java new file mode 100644 index 0000000000..5bf8811609 --- /dev/null +++ b/src/jmh/java/benchmark/GetterAccessBenchmark.java @@ -0,0 +1,74 @@ +package benchmark; + +import graphql.schema.fetching.LambdaFetchingSupport; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.function.Function; + +@Warmup(iterations = 2, time = 5, batchSize = 500) +@Measurement(iterations = 3, batchSize = 500) +@Fork(2) +public class GetterAccessBenchmark { + + public static class Pojo { + final String name; + final int age; + + public Pojo(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + } + + static Pojo pojo = new Pojo("Brad", 42); + + static Function getter = LambdaFetchingSupport.createGetter(Pojo.class, "name").get(); + + static Method getterMethod; + + static { + try { + getterMethod = Pojo.class.getMethod("getName"); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + + @Benchmark + public void measureDirectAccess(Blackhole bh) { + Object name = pojo.getName(); + bh.consume(name); + } + + @Benchmark + public void measureLambdaAccess(Blackhole bh) { + Object value = getter.apply(pojo); + bh.consume(value); + } + + @Benchmark + public void measureReflectionAccess(Blackhole bh) { + try { + Object name = getterMethod.invoke(pojo); + bh.consume(name); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } +} + diff --git a/src/jmh/java/benchmark/IntrospectionBenchmark.java b/src/jmh/java/benchmark/IntrospectionBenchmark.java new file mode 100644 index 0000000000..261a64047a --- /dev/null +++ b/src/jmh/java/benchmark/IntrospectionBenchmark.java @@ -0,0 +1,57 @@ +package benchmark; + +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.introspection.IntrospectionQuery; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class IntrospectionBenchmark { + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public ExecutionResult benchMarkIntrospectionAvgTime() { + return graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + public ExecutionResult benchMarkIntrospectionThroughput() { + return graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY); + } + + private final GraphQL graphQL; + + + public IntrospectionBenchmark() { + String largeSchema = BenchmarkUtils.loadResource("large-schema-4.graphqls"); + GraphQLSchema graphQLSchema = SchemaGenerator.createdMockedSchema(largeSchema); + graphQL = GraphQL.newGraphQL(graphQLSchema) + .build(); + } + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include("benchmark.IntrospectionBenchmark") + .build(); + + new Runner(opt).run(); + } + +} diff --git a/src/jmh/java/benchmark/MapBenchmark.java b/src/jmh/java/benchmark/MapBenchmark.java new file mode 100644 index 0000000000..50cbe576f5 --- /dev/null +++ b/src/jmh/java/benchmark/MapBenchmark.java @@ -0,0 +1,92 @@ +package benchmark; + +import com.google.common.collect.ImmutableMap; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Random; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 1) +@Measurement(iterations = 3, time = 1, batchSize = 1000) +@Fork(2) +public class MapBenchmark { + + @Param({"10", "50", "300"}) + int numberEntries = 300; + + Map hashMap; + Map linkedHashMap; + Map immutableMap; + + Random random; + + @Setup(Level.Trial) + public void setUp() { + random = new Random(); + linkedHashMap = new LinkedHashMap<>(); + for (int i = 0; i < numberEntries; i++) { + linkedHashMap.put("string" + i, i); + } + hashMap = new HashMap<>(); + for (int i = 0; i < numberEntries; i++) { + hashMap.put("string" + i, i); + } + ImmutableMap.Builder builder = ImmutableMap.builder(); + for (int i = 0; i < numberEntries; i++) { + builder.put("string" + i, i); + } + immutableMap = builder.build(); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + public void benchmarkLinkedHashMap(Blackhole blackhole) { + mapGet(blackhole, linkedHashMap); + } + @Benchmark + @BenchmarkMode(Mode.Throughput) + public void benchmarkHashMap(Blackhole blackhole) { + mapGet(blackhole, hashMap); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + public void benchmarkImmutableMap(Blackhole blackhole) { + mapGet(blackhole, immutableMap); + } + + private void mapGet(Blackhole blackhole, Map mapp) { + int index = rand(0, numberEntries); + blackhole.consume(mapp.get("string" + index)); + } + + private int rand(int loInc, int hiExc) { + return random.nextInt(hiExc - loInc) + loInc; + } + + public static void main(String[] args) throws Exception { + Options opt = new OptionsBuilder() + .include("benchmark.MapBenchmark") + .build(); + + new Runner(opt).run(); + } +} + diff --git a/src/jmh/java/benchmark/OverlappingFieldValidationBenchmark.java b/src/jmh/java/benchmark/OverlappingFieldValidationBenchmark.java new file mode 100644 index 0000000000..837a0f639e --- /dev/null +++ b/src/jmh/java/benchmark/OverlappingFieldValidationBenchmark.java @@ -0,0 +1,86 @@ +package benchmark; + +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.i18n.I18n; +import graphql.language.Document; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import graphql.validation.LanguageTraversal; +import graphql.validation.RulesVisitor; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationError; +import graphql.validation.ValidationErrorCollector; +import graphql.validation.rules.OverlappingFieldsCanBeMerged; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +import static graphql.Assert.assertTrue; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class OverlappingFieldValidationBenchmark { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = BenchmarkUtils.loadResource("large-schema-4.graphqls"); + String query = BenchmarkUtils.loadResource("large-schema-4-query.graphql"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + document = Parser.parse(query); + + // make sure this is a valid query overall + GraphQL graphQL = GraphQL.newGraphQL(schema).build(); + ExecutionResult executionResult = graphQL.execute(query); + assertTrue(executionResult.getErrors().size() == 0); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void overlappingFieldValidationAbgTime(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + @Benchmark + @OutputTimeUnit(TimeUnit.SECONDS) + public void overlappingFieldValidationThroughput(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + private List validateQuery(GraphQLSchema schema, Document document) { + ValidationErrorCollector errorCollector = new ValidationErrorCollector(); + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH); + ValidationContext validationContext = new ValidationContext(schema, document, i18n); + OverlappingFieldsCanBeMerged overlappingFieldsCanBeMerged = new OverlappingFieldsCanBeMerged(validationContext, errorCollector); + LanguageTraversal languageTraversal = new LanguageTraversal(); + languageTraversal.traverse(document, new RulesVisitor(validationContext, Collections.singletonList(overlappingFieldsCanBeMerged))); + return errorCollector.getErrors(); + } +} diff --git a/src/jmh/java/benchmark/PropertyFetcherBenchMark.java b/src/jmh/java/benchmark/PropertyFetcherBenchMark.java new file mode 100644 index 0000000000..7bb85410ef --- /dev/null +++ b/src/jmh/java/benchmark/PropertyFetcherBenchMark.java @@ -0,0 +1,63 @@ +package benchmark; + +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.DataFetchingEnvironmentImpl; +import graphql.schema.PropertyDataFetcher; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@Warmup(iterations = 2, time = 5, batchSize = 50) +@Measurement(iterations = 3, batchSize = 50) +@Fork(2) +public class PropertyFetcherBenchMark { + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkThroughputInDirectClassHierarchy(Blackhole blackhole) { + executeTest(blackhole, dfeFoo); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkThroughputDirectClassHierarchy(Blackhole blackhole) { + executeTest(blackhole, dfeBar); + } + + static PropertyDataFetcher nameFetcher = PropertyDataFetcher.fetching("name"); + + static DataFetchingEnvironment dfeFoo = DataFetchingEnvironmentImpl.newDataFetchingEnvironment().source(new Foo("brad")).build(); + static DataFetchingEnvironment dfeBar = DataFetchingEnvironmentImpl.newDataFetchingEnvironment().source(new Bar("brad")).build(); + + public static void executeTest(Blackhole blackhole, DataFetchingEnvironment dfe) { + blackhole.consume(nameFetcher.get(dfe)); + } + + static class Foo extends Bar { + + Foo(String name) { + super(name); + } + } + + static class Bar { + private final String name; + + Bar(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } +} diff --git a/src/jmh/java/benchmark/QueryExecutionOrientedBenchmarks.java b/src/jmh/java/benchmark/QueryExecutionOrientedBenchmarks.java new file mode 100644 index 0000000000..96166a0f5f --- /dev/null +++ b/src/jmh/java/benchmark/QueryExecutionOrientedBenchmarks.java @@ -0,0 +1,23 @@ +package benchmark; + +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +/** + * A runner of benchmarks that are whole query runners and they do + * so from the top of the stack all the way in + */ +public class QueryExecutionOrientedBenchmarks { + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include("benchmark.ComplexQueryBenchmark") + .include("benchmark.IntrospectionBenchmark") + .include("benchmark.TwitterBenchmark") + .build(); + + new Runner(opt).run(); + } +} diff --git a/src/jmh/java/benchmark/SchemaTransformerBenchmark.java b/src/jmh/java/benchmark/SchemaTransformerBenchmark.java new file mode 100644 index 0000000000..353dd0253e --- /dev/null +++ b/src/jmh/java/benchmark/SchemaTransformerBenchmark.java @@ -0,0 +1,117 @@ +package benchmark; + +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.SchemaTransformer; +import graphql.schema.idl.SchemaGenerator; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; + +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +@State(Scope.Benchmark) +@BenchmarkMode(Mode.AverageTime) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3, time = 10) +@Fork(2) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +public class SchemaTransformerBenchmark { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + GraphQLSchema txSchema; + + GraphQLDirective infoDirective = GraphQLDirective.newDirective() + .name("Info") + .build(); + GraphQLTypeVisitor directiveAdder = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + // add directive + GraphQLFieldDefinition changedNode = node.transform(builder -> { + builder.withDirective(infoDirective); + }); + return changeNode(context, changedNode); + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + // add directive info + GraphQLObjectType changedNode = node.transform(builder -> { + builder.withDirective(infoDirective); + }); + return changeNode(context, changedNode); + } + }; + + GraphQLTypeVisitor directiveRemover = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + List filteredDirectives = node.getDirectives().stream() + .filter(d -> !d.getName().equals(infoDirective.getName())) + .collect(Collectors.toList()); + // remove directive info + GraphQLFieldDefinition changedNode = node.transform(builder -> { + builder.replaceDirectives(filteredDirectives); + }); + return changeNode(context, changedNode); + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + List filteredDirectives = node.getDirectives().stream() + .filter(d -> !d.getName().equals(infoDirective.getName())) + .collect(Collectors.toList()); + // remove directive info + GraphQLObjectType changedNode = node.transform(builder -> { + builder.replaceDirectives(filteredDirectives); + }); + return changeNode(context, changedNode); + } + }; + + @Setup + public void setup() { + try { + String schemaString = BenchmarkUtils.loadResource("large-schema-3.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + txSchema = SchemaTransformer.transformSchema(schema, directiveAdder); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + } + + @Benchmark + public GraphQLSchema benchMarkSchemaTransformerAdd(MyState myState) { + GraphQLSchema schema = myState.schema; + return SchemaTransformer.transformSchema(schema, myState.directiveAdder); + } + + + @Benchmark + public GraphQLSchema benchMarkSchemaTransformerRemove(MyState myState) { + GraphQLSchema schema = myState.txSchema; + return SchemaTransformer.transformSchema(schema, myState.directiveRemover); + } +} diff --git a/src/test/java/benchmark/BenchMark.java b/src/jmh/java/benchmark/SimpleQueryBenchmark.java similarity index 56% rename from src/test/java/benchmark/BenchMark.java rename to src/jmh/java/benchmark/SimpleQueryBenchmark.java index 4eb5c8b2d5..fe95a7b833 100644 --- a/src/test/java/benchmark/BenchMark.java +++ b/src/jmh/java/benchmark/SimpleQueryBenchmark.java @@ -1,80 +1,72 @@ package benchmark; +import graphql.Assert; +import graphql.ExecutionResult; import graphql.GraphQL; -import graphql.execution.instrumentation.tracing.TracingInstrumentation; +import graphql.execution.ExecutionStepInfo; import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; import graphql.schema.GraphQLSchema; +import graphql.schema.TypeResolver; import graphql.schema.idl.RuntimeWiring; import graphql.schema.idl.SchemaGenerator; import graphql.schema.idl.SchemaParser; import graphql.schema.idl.TypeDefinitionRegistry; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; import org.openjdk.jmh.annotations.Measurement; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; import org.openjdk.jmh.annotations.Warmup; -import java.io.InputStream; -import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; -/** - * See http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/ for more samples - * on what you can do with JMH - * - * You MUST have the JMH plugin for IDEA in place for this to work : https://github.com/artyushov/idea-jmh-plugin - * - * Install it and then just hit "Run" on a certain benchmark method - */ -@Warmup(iterations = 2, time = 5, batchSize = 3) -@Measurement(iterations = 3, time = 10, batchSize = 4) -public class BenchMark { +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class SimpleQueryBenchmark { private static final int NUMBER_OF_FRIENDS = 10 * 100; - - static GraphQL graphQL = buildGraphQL(); + private static final GraphQL GRAPHQL = buildGraphQL(); @Benchmark @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.SECONDS) - public void benchMarkSimpleQueriesThroughput() { - executeQuery(); + public ExecutionResult benchMarkSimpleQueriesThroughput() { + return executeQuery(); } @Benchmark @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MILLISECONDS) - public void benchMarkSimpleQueriesAvgTime() { - executeQuery(); + public ExecutionResult benchMarkSimpleQueriesAvgTime() { + return executeQuery(); } - public static void executeQuery() { + public static ExecutionResult executeQuery() { String query = "{ hero { name friends { name friends { name } } } }"; - graphQL.execute(query); + return GRAPHQL.execute(query); } private static GraphQL buildGraphQL() { - InputStream sdl = BenchMark.class.getClassLoader().getResourceAsStream("starWarsSchema.graphqls"); - TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(new InputStreamReader(sdl)); + TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(BenchmarkUtils.loadResource("starWarsSchema.graphqls")); - DataFetcher heroDataFetcher = environment -> CharacterDTO.mkCharacter("r2d2", NUMBER_OF_FRIENDS); + DataFetcher heroDataFetcher = environment -> CharacterDTO.mkCharacter(environment, "r2d2", NUMBER_OF_FRIENDS); + TypeResolver typeResolver = env -> env.getSchema().getObjectType("Human"); RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() - .type( - newTypeWiring("QueryType").dataFetcher("hero", heroDataFetcher)) - .type(newTypeWiring("Character").typeResolver( - env -> env.getSchema().getObjectType("Human") - )) + .type(newTypeWiring("QueryType").dataFetcher("hero", heroDataFetcher)) + .type(newTypeWiring("Character").typeResolver(typeResolver)) .build(); + GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(definitionRegistry, runtimeWiring); return GraphQL.newGraphQL(graphQLSchema) - .instrumentation(new TracingInstrumentation()) .build(); } @@ -95,10 +87,14 @@ public List getFriends() { return friends; } - public static CharacterDTO mkCharacter(String name, int friendCount) { + public static CharacterDTO mkCharacter(DataFetchingEnvironment environment, String name, int friendCount) { + Object sideEffect = environment.getArgument("episode"); + Assert.assertNull(sideEffect); + ExecutionStepInfo anotherSideEffect = environment.getExecutionStepInfo(); + Assert.assertNotNull(anotherSideEffect); List friends = new ArrayList<>(friendCount); for (int i = 0; i < friendCount; i++) { - friends.add(mkCharacter("friend" + i, 0)); + friends.add(mkCharacter(environment, "friend" + i, 0)); } return new CharacterDTO(name, friends); } diff --git a/src/jmh/java/benchmark/TwitterBenchmark.java b/src/jmh/java/benchmark/TwitterBenchmark.java new file mode 100644 index 0000000000..8fe58b0822 --- /dev/null +++ b/src/jmh/java/benchmark/TwitterBenchmark.java @@ -0,0 +1,148 @@ +package benchmark; + +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.execution.preparsed.persisted.InMemoryPersistedQueryCache; +import graphql.execution.preparsed.persisted.PersistedQueryCache; +import graphql.execution.preparsed.persisted.PersistedQuerySupport; +import graphql.parser.ParserOptions; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLTypeReference; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.TimeUnit; + +import static graphql.Scalars.GraphQLString; + +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class TwitterBenchmark { + private static final int BREADTH = 150; + private static final int DEPTH = 150; + + static String query = mkQuery(); + static Object queryId = "QUERY_ID"; + static GraphQL graphQL = buildGraphQL(); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchmarkThroughput(Blackhole bh) { + bh.consume(execute()); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void benchmarkAvgTime(Blackhole bh) { + bh.consume(execute()); + } + + private static ExecutionResult execute() { + return graphQL.execute(query); + } + + public static String mkQuery() { + StringBuilder sb = new StringBuilder(); + sb.append("{"); + for (int d = 1; d <= DEPTH; d++) { + for (int b = 1; b <= BREADTH; b++) { + sb.append("leaf_"); + sb.append(b); + sb.append(" "); + } + if (d < DEPTH) { + sb.append("branch { "); + } + } + for (int d = 1; d <= DEPTH; d++) { + sb.append("}"); + } + return sb.toString(); + } + + private static GraphQL buildGraphQL() { + ParserOptions.setDefaultOperationParserOptions(ParserOptions.newParserOptions().maxTokens(100_000).build()); + + List leafFields = new ArrayList<>(BREADTH); + for (int i = 1; i <= BREADTH; i++) { + leafFields.add( + GraphQLFieldDefinition.newFieldDefinition() + .name("leaf_" + i) + .type(GraphQLString) + .build() + ); + } + + GraphQLObjectType branchType = GraphQLObjectType.newObject() + .name("Branch") + .fields(leafFields) + .field(GraphQLFieldDefinition.newFieldDefinition() + .name("branch") + .type(GraphQLTypeReference.typeRef("Branch"))) + .build(); + + + DataFetcher simpleFetcher = env -> env.getField().getName(); + GraphQLCodeRegistry codeReg = GraphQLCodeRegistry.newCodeRegistry() + .defaultDataFetcher( + environment -> simpleFetcher + ) + .build(); + + GraphQLSchema graphQLSchema = GraphQLSchema.newSchema() + .query(branchType) + .codeRegistry(codeReg) + .build(); + + return GraphQL + .newGraphQL(graphQLSchema) + .preparsedDocumentProvider( + new PersistedQuery( + InMemoryPersistedQueryCache + .newInMemoryPersistedQueryCache() + .addQuery(queryId, query) + .build() + ) + ) + .build(); + } + + static class PersistedQuery extends PersistedQuerySupport { + public PersistedQuery(PersistedQueryCache persistedQueryCache) { + super(persistedQueryCache); + } + + @Override + protected Optional getPersistedQueryId(ExecutionInput executionInput) { + return Optional.of(queryId); + } + } + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include("benchmark.TwitterBenchmark") + .build(); + + new Runner(opt).run(); + } +} diff --git a/src/jmh/java/benchmark/TypeDefinitionParserVersusSerializeBenchmark.java b/src/jmh/java/benchmark/TypeDefinitionParserVersusSerializeBenchmark.java new file mode 100644 index 0000000000..a27444b558 --- /dev/null +++ b/src/jmh/java/benchmark/TypeDefinitionParserVersusSerializeBenchmark.java @@ -0,0 +1,65 @@ +package benchmark; + +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.concurrent.TimeUnit; + +import static benchmark.BenchmarkUtils.asRTE; + +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class TypeDefinitionParserVersusSerializeBenchmark { + + static SchemaParser schemaParser = new SchemaParser(); + static String SDL = BenchmarkUtils.loadResource("large-schema-2.graphqls"); + static TypeDefinitionRegistry registryOut = schemaParser.parse(SDL); + static ByteArrayOutputStream baOS = serialisedRegistryStream(registryOut); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkParsing(Blackhole blackhole) { + blackhole.consume(schemaParser.parse(SDL)); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkSerializing(Blackhole blackhole) { + blackhole.consume(serialise()); + } + + static TypeDefinitionRegistry serialise() { + return asRTE(() -> { + + ByteArrayInputStream baIS = new ByteArrayInputStream(baOS.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(baIS); + + return (TypeDefinitionRegistry) ois.readObject(); + }); + } + + private static ByteArrayOutputStream serialisedRegistryStream(TypeDefinitionRegistry registryOut) { + return asRTE(() -> { + ByteArrayOutputStream baOS = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baOS); + + oos.writeObject(registryOut); + return baOS; + }); + } +} diff --git a/src/jmh/java/benchmark/ValidatorBenchmark.java b/src/jmh/java/benchmark/ValidatorBenchmark.java new file mode 100644 index 0000000000..f9dd34a0c8 --- /dev/null +++ b/src/jmh/java/benchmark/ValidatorBenchmark.java @@ -0,0 +1,96 @@ +package benchmark; + +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.language.Document; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import graphql.validation.Validator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; + +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +import static graphql.Assert.assertTrue; + + +@State(Scope.Benchmark) +@BenchmarkMode(Mode.AverageTime) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +public class ValidatorBenchmark { + + private static class Scenario { + public final GraphQLSchema schema; + public final Document document; + + Scenario(GraphQLSchema schema, Document document) { + this.schema = schema; + this.document = document; + } + } + + @State(Scope.Benchmark) + public static class MyState { + Scenario largeSchema1; + Scenario largeSchema4; + Scenario manyFragments; + + @Setup + public void setup() { + largeSchema1 = load("large-schema-1.graphqls", "large-schema-1-query.graphql"); + largeSchema4 = load("large-schema-4.graphqls", "large-schema-4-query.graphql"); + manyFragments = load("many-fragments.graphqls", "many-fragments-query.graphql"); + } + + private Scenario load(String schemaPath, String queryPath) { + try { + String schemaString = BenchmarkUtils.loadResource(schemaPath); + String query = BenchmarkUtils.loadResource(queryPath); + GraphQLSchema schema = SchemaGenerator.createdMockedSchema(schemaString); + Document document = Parser.parse(query); + + // make sure this is a valid query overall + GraphQL graphQL = GraphQL.newGraphQL(schema).build(); + ExecutionResult executionResult = graphQL.execute(query); + assertTrue(executionResult.getErrors().size() == 0); + return new Scenario(schema, document); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + } + + private void run(Scenario scenario) { + Validator validator = new Validator(); + validator.validateDocument(scenario.schema, scenario.document, Locale.ENGLISH); + } + + @Benchmark + public void largeSchema1(MyState state) { + run(state.largeSchema1); + } + + @Benchmark + public void largeSchema4(MyState state) { + run(state.largeSchema4); + } + + @Benchmark + public void manyFragments(MyState state) { + run(state.manyFragments); + } +} diff --git a/src/jmh/java/graphql/execution/ExecutionStepInfoBenchmark.java b/src/jmh/java/graphql/execution/ExecutionStepInfoBenchmark.java new file mode 100644 index 0000000000..e2678c67f8 --- /dev/null +++ b/src/jmh/java/graphql/execution/ExecutionStepInfoBenchmark.java @@ -0,0 +1,86 @@ +package graphql.execution; + +import graphql.Scalars; +import graphql.language.Field; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class ExecutionStepInfoBenchmark { + @Param({"1000000", "2000000"}) + int howManyItems = 1000000; + + @Setup(Level.Trial) + public void setUp() { + } + + @TearDown(Level.Trial) + public void tearDown() { + } + + + MergedField mergedField = MergedField.newMergedField().addField(Field.newField("f").build()).build(); + + ResultPath path = ResultPath.rootPath().segment("f"); + ExecutionStepInfo rootStepInfo = newExecutionStepInfo() + .path(path).type(Scalars.GraphQLString) + .field(mergedField) + .build(); + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkDirectConstructorThroughput(Blackhole blackhole) { + for (int i = 0; i < howManyItems; i++) { + ResultPath newPath = path.segment(1); + ExecutionStepInfo newOne = rootStepInfo.transform(Scalars.GraphQLInt, rootStepInfo, newPath); + blackhole.consume(newOne); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkBuilderThroughput(Blackhole blackhole) { + for (int i = 0; i < howManyItems; i++) { + ResultPath newPath = path.segment(1); + ExecutionStepInfo newOne = newExecutionStepInfo(rootStepInfo).parentInfo(rootStepInfo) + .type(Scalars.GraphQLInt).path(newPath).build(); + blackhole.consume(newOne); + } + } + + public static void main(String[] args) throws Exception { + Options opt = new OptionsBuilder() + .include("graphql.execution.ExecutionStepInfoBenchmark") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + +} diff --git a/src/jmh/java/performance/ComplexQueryPerformance.java b/src/jmh/java/performance/ComplexQueryPerformance.java new file mode 100644 index 0000000000..e8b2c3da0e --- /dev/null +++ b/src/jmh/java/performance/ComplexQueryPerformance.java @@ -0,0 +1,272 @@ +package performance; + +import benchmark.BenchmarkUtils; +import com.google.common.collect.ImmutableList; +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; + +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * This benchmark is an attempt to have a more complex query that involves async and sync work together + * along with multiple threads happening. + *

+ * It can also be run in a forever mode say if you want to connect a profiler to it say + */ +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class ComplexQueryPerformance { + + @Param({"5", "10", "20"}) + int howManyItems = 5; + int howLongToSleep = 5; + int howManyQueries = 10; + int howManyQueryThreads = 10; + int howManyFetcherThreads = 10; + + ExecutorService queryExecutorService; + ExecutorService fetchersExecutorService; + GraphQL graphQL; + volatile boolean shutDown; + + @Setup(Level.Trial) + public void setUp() { + shutDown = false; + queryExecutorService = Executors.newFixedThreadPool(howManyQueryThreads); + fetchersExecutorService = Executors.newFixedThreadPool(howManyFetcherThreads); + graphQL = buildGraphQL(); + } + + @TearDown(Level.Trial) + public void tearDown() { + shutDown = true; + queryExecutorService.shutdownNow(); + fetchersExecutorService.shutdownNow(); + } + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public Object benchMarkSimpleQueriesThroughput() { + return runManyQueriesToCompletion(); + } + + + public static void main(String[] args) throws Exception { + // just to make sure it's all valid before testing + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("benchmark.ComplexQueryBenchmark") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + + @SuppressWarnings({"ConstantValue", "LoopConditionNotUpdatedInsideLoop"}) + private static void runAtStartup() { + + ComplexQueryPerformance complexQueryBenchmark = new ComplexQueryPerformance(); + complexQueryBenchmark.howManyQueries = 5; + complexQueryBenchmark.howManyItems = 10; + + BenchmarkUtils.runInToolingForSomeTimeThenExit( + complexQueryBenchmark::setUp, + complexQueryBenchmark::runManyQueriesToCompletion, + complexQueryBenchmark::tearDown + + ); + } + + + @SuppressWarnings("UnnecessaryLocalVariable") + private Void runManyQueriesToCompletion() { + CompletableFuture[] cfs = new CompletableFuture[howManyQueries]; + for (int i = 0; i < howManyQueries; i++) { + cfs[i] = CompletableFuture.supplyAsync(() -> executeQuery(howManyItems, howLongToSleep), queryExecutorService).thenCompose(cf -> cf); + } + Void result = CompletableFuture.allOf(cfs).join(); + return result; + } + + public CompletableFuture executeQuery(int howMany, int howLong) { + String fields = "id name f1 f2 f3 f4 f5 f6 f7 f8 f9 f10"; + String query = "query q {" + + String.format("shops(howMany : %d) { %s departments( howMany : %d) { %s products(howMany : %d) { %s }}}\n" + , howMany, fields, 10, fields, 5, fields) + + String.format("expensiveShops(howMany : %d howLong : %d) { %s expensiveDepartments( howMany : %d howLong : %d) { %s expensiveProducts(howMany : %d howLong : %d) { %s }}}\n" + , howMany, howLong, fields, 10, howLong, fields, 5, howLong, fields) + + "}"; + return graphQL.executeAsync(ExecutionInput.newExecutionInput(query).build()); + } + + private GraphQL buildGraphQL() { + TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(PerformanceTestingUtils.loadResource("storesanddepartments.graphqls")); + + DataFetcher shopsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveShopsDF = env -> supplyAsync(() -> sleepAndReturnThings(env)); + DataFetcher departmentsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveDepartmentsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + DataFetcher productsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveProductsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + + RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("shops", shopsDF) + .dataFetcher("expensiveShops", expensiveShopsDF)) + .type(newTypeWiring("Shop") + .dataFetcher("departments", departmentsDF) + .dataFetcher("expensiveDepartments", expensiveDepartmentsDF)) + .type(newTypeWiring("Department") + .dataFetcher("products", productsDF) + .dataFetcher("expensiveProducts", expensiveProductsDF)) + .build(); + + GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(definitionRegistry, runtimeWiring); + + return GraphQL.newGraphQL(graphQLSchema).build(); + } + + private CompletableFuture supplyAsyncListItems(DataFetchingEnvironment environment, Supplier codeToRun) { + return supplyAsync(codeToRun); + } + + private CompletableFuture supplyAsync(Supplier codeToRun) { + if (!shutDown) { + //logEvery(100, "async fetcher"); + return CompletableFuture.supplyAsync(codeToRun, fetchersExecutorService); + } else { + // if we have shutdown - get on with it, so we shut down quicker + return CompletableFuture.completedFuture(codeToRun.get()); + } + } + + private List sleepAndReturnThings(DataFetchingEnvironment env) { + // by sleeping, we hope to cause the objects to stay longer in GC land and hence have a longer lifecycle + // then a simple stack say or young gen gc. I don't know this will work, but I am trying it + // to represent work that takes some tie to complete + sleep(env.getArgument("howLong")); + return mkHowManyThings(env.getArgument("howMany")); + } + + private void sleep(Integer howLong) { + if (howLong > 0) { + try { + Thread.sleep(howLong); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + AtomicInteger logCount = new AtomicInteger(); + + private void logEvery(int every, String s) { + int count = logCount.getAndIncrement(); + if (count == 0 || count % every == 0) { + System.out.println("\t" + count + "\t" + s); + } + } + + private List mkHowManyThings(Integer howMany) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < howMany; i++) { + builder.add(new IdAndNamedThing(i)); + } + return builder.build(); + } + + @SuppressWarnings("unused") + static class IdAndNamedThing { + private final int i; + + public IdAndNamedThing(int i) { + this.i = i; + } + + public String getId() { + return "id" + i; + } + + public String getName() { + return "name" + i; + } + + public String getF1() { + return "f1" + i; + } + + public String getF2() { + return "f2" + i; + } + + public String getF3() { + return "f3" + i; + } + + public String getF4() { + return "f4" + i; + } + + public String getF5() { + return "f5" + i; + } + + public String getF6() { + return "f6" + i; + } + + public String getF7() { + return "f7" + i; + } + + public String getF8() { + return "f8" + i; + } + + public String getF9() { + return "f9" + i; + } + + public String getF10() { + return "f10" + i; + } + } +} diff --git a/src/jmh/java/performance/DFSelectionSetPerformance.java b/src/jmh/java/performance/DFSelectionSetPerformance.java new file mode 100644 index 0000000000..bbc34b03f0 --- /dev/null +++ b/src/jmh/java/performance/DFSelectionSetPerformance.java @@ -0,0 +1,118 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedField; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.DataFetchingFieldSelectionSet; +import graphql.schema.DataFetchingFieldSelectionSetImpl; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.SelectedField; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class DFSelectionSetPerformance { + + @State(Scope.Benchmark) + public static class MyState { + + public ExecutableNormalizedField normalisedField; + public GraphQLOutputType outputFieldType; + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("large-schema-2-query.graphql"); + document = Parser.parse(query); + + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(schema, document, null, CoercedVariables.emptyVariables()); + + normalisedField = executableNormalizedOperation.getTopLevelFields().get(0); + + outputFieldType = schema.getObjectType("Object42"); + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { + List fields = getSelectedFields(myState); + blackhole.consume(fields); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkThroughput(MyState myState, Blackhole blackhole) { + List fields = getSelectedFields(myState); + blackhole.consume(fields); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime_getImmediateFields(MyState myState, Blackhole blackhole) { + List fields = getImmediateFields(myState); + blackhole.consume(fields); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkThroughput_getImmediateFields(MyState myState, Blackhole blackhole) { + List fields = getImmediateFields(myState); + blackhole.consume(fields); + } + + private List getSelectedFields(MyState myState) { + DataFetchingFieldSelectionSet dataFetchingFieldSelectionSet = DataFetchingFieldSelectionSetImpl.newCollector(myState.schema, myState.outputFieldType, () -> myState.normalisedField); + return dataFetchingFieldSelectionSet.getFields("wontBeFound"); + } + + private List getImmediateFields(MyState myState) { + DataFetchingFieldSelectionSet dataFetchingFieldSelectionSet = DataFetchingFieldSelectionSetImpl.newCollector(myState.schema, myState.outputFieldType, () -> myState.normalisedField); + return dataFetchingFieldSelectionSet.getImmediateFields(); + } + + public static void mainX(String[] args) throws InterruptedException { + MyState myState = new MyState(); + myState.setup(); + + while (true) { + List selectedFields = new DFSelectionSetPerformance().getSelectedFields(myState); + Thread.sleep(500); + } + } + +} diff --git a/src/jmh/java/performance/DataLoaderPerformance.java b/src/jmh/java/performance/DataLoaderPerformance.java new file mode 100644 index 0000000000..83a62b5072 --- /dev/null +++ b/src/jmh/java/performance/DataLoaderPerformance.java @@ -0,0 +1,616 @@ +package performance; + +import graphql.Assert; +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.dataloader.BatchLoader; +import org.dataloader.DataLoader; +import org.dataloader.DataLoaderFactory; +import org.dataloader.DataLoaderRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 5) +@Fork(2) +public class DataLoaderPerformance { + + static Owner o1 = new Owner("O-1", "Andi", List.of("P-1", "P-2", "P-3")); + static Owner o2 = new Owner("O-2", "George", List.of("P-4", "P-5", "P-6")); + static Owner o3 = new Owner("O-3", "Peppa", List.of("P-7", "P-8", "P-9", "P-10")); + + // Additional 100 owners with variety of names and different pets + static Owner o4 = new Owner("O-4", "Emma", List.of("P-11", "P-12")); + static Owner o5 = new Owner("O-5", "Liam", List.of("P-13", "P-14", "P-15")); + static Owner o6 = new Owner("O-6", "Olivia", List.of("P-16", "P-17", "P-18")); + static Owner o7 = new Owner("O-7", "Noah", List.of("P-19", "P-20")); + static Owner o8 = new Owner("O-8", "Sophia", List.of("P-21", "P-22", "P-23", "P-24")); + static Owner o9 = new Owner("O-9", "Jackson", List.of("P-25", "P-26")); + static Owner o10 = new Owner("O-10", "Isabella", List.of("P-27", "P-28", "P-29")); + static Owner o11 = new Owner("O-11", "Mason", List.of("P-30", "P-31")); + static Owner o12 = new Owner("O-12", "Mia", List.of("P-32", "P-33", "P-34")); + static Owner o13 = new Owner("O-13", "Ethan", List.of("P-35", "P-36")); + static Owner o14 = new Owner("O-14", "Charlotte", List.of("P-37", "P-38", "P-39")); + static Owner o15 = new Owner("O-15", "Alexander", List.of("P-40", "P-41")); + static Owner o16 = new Owner("O-16", "Amelia", List.of("P-42", "P-43", "P-44")); + static Owner o17 = new Owner("O-17", "Michael", List.of("P-45", "P-46")); + static Owner o18 = new Owner("O-18", "Harper", List.of("P-47", "P-48", "P-49")); + static Owner o19 = new Owner("O-19", "Benjamin", List.of("P-50", "P-51")); + static Owner o20 = new Owner("O-20", "Evelyn", List.of("P-52", "P-53", "P-54")); + static Owner o21 = new Owner("O-21", "Lucas", List.of("P-55", "P-56")); + static Owner o22 = new Owner("O-22", "Abigail", List.of("P-57", "P-58", "P-59")); + static Owner o23 = new Owner("O-23", "Henry", List.of("P-60", "P-61")); + static Owner o24 = new Owner("O-24", "Emily", List.of("P-62", "P-63", "P-64")); + static Owner o25 = new Owner("O-25", "Sebastian", List.of("P-65", "P-66")); + static Owner o26 = new Owner("O-26", "Elizabeth", List.of("P-67", "P-68", "P-69")); + static Owner o27 = new Owner("O-27", "Mateo", List.of("P-70", "P-71")); + static Owner o28 = new Owner("O-28", "Camila", List.of("P-72", "P-73", "P-74")); + static Owner o29 = new Owner("O-29", "Daniel", List.of("P-75", "P-76")); + static Owner o30 = new Owner("O-30", "Sofia", List.of("P-77", "P-78", "P-79")); + static Owner o31 = new Owner("O-31", "Matthew", List.of("P-80", "P-81")); + static Owner o32 = new Owner("O-32", "Avery", List.of("P-82", "P-83", "P-84")); + static Owner o33 = new Owner("O-33", "Aiden", List.of("P-85", "P-86")); + static Owner o34 = new Owner("O-34", "Ella", List.of("P-87", "P-88", "P-89")); + static Owner o35 = new Owner("O-35", "Joseph", List.of("P-90", "P-91")); + static Owner o36 = new Owner("O-36", "Scarlett", List.of("P-92", "P-93", "P-94")); + static Owner o37 = new Owner("O-37", "David", List.of("P-95", "P-96")); + static Owner o38 = new Owner("O-38", "Grace", List.of("P-97", "P-98", "P-99")); + static Owner o39 = new Owner("O-39", "Carter", List.of("P-100", "P-101")); + static Owner o40 = new Owner("O-40", "Chloe", List.of("P-102", "P-103", "P-104")); + static Owner o41 = new Owner("O-41", "Wyatt", List.of("P-105", "P-106")); + static Owner o42 = new Owner("O-42", "Victoria", List.of("P-107", "P-108", "P-109")); + static Owner o43 = new Owner("O-43", "Jayden", List.of("P-110", "P-111")); + static Owner o44 = new Owner("O-44", "Madison", List.of("P-112", "P-113", "P-114")); + static Owner o45 = new Owner("O-45", "Luke", List.of("P-115", "P-116")); + static Owner o46 = new Owner("O-46", "Aria", List.of("P-117", "P-118", "P-119")); + static Owner o47 = new Owner("O-47", "Gabriel", List.of("P-120", "P-121")); + static Owner o48 = new Owner("O-48", "Luna", List.of("P-122", "P-123", "P-124")); + static Owner o49 = new Owner("O-49", "Anthony", List.of("P-125", "P-126")); + static Owner o50 = new Owner("O-50", "Layla", List.of("P-127", "P-128", "P-129")); + static Owner o51 = new Owner("O-51", "Isaac", List.of("P-130", "P-131")); + static Owner o52 = new Owner("O-52", "Penelope", List.of("P-132", "P-133", "P-134")); + static Owner o53 = new Owner("O-53", "Grayson", List.of("P-135", "P-136")); + static Owner o54 = new Owner("O-54", "Riley", List.of("P-137", "P-138", "P-139")); + static Owner o55 = new Owner("O-55", "Jack", List.of("P-140", "P-141")); + static Owner o56 = new Owner("O-56", "Nora", List.of("P-142", "P-143", "P-144")); + static Owner o57 = new Owner("O-57", "Julian", List.of("P-145", "P-146")); + static Owner o58 = new Owner("O-58", "Lillian", List.of("P-147", "P-148", "P-149")); + static Owner o59 = new Owner("O-59", "Levi", List.of("P-150", "P-151")); + static Owner o60 = new Owner("O-60", "Addison", List.of("P-152", "P-153", "P-154")); + static Owner o61 = new Owner("O-61", "Christopher", List.of("P-155", "P-156")); + static Owner o62 = new Owner("O-62", "Aubrey", List.of("P-157", "P-158", "P-159")); + static Owner o63 = new Owner("O-63", "Andrew", List.of("P-160", "P-161")); + static Owner o64 = new Owner("O-64", "Zoey", List.of("P-162", "P-163", "P-164")); + static Owner o65 = new Owner("O-65", "Joshua", List.of("P-165", "P-166")); + static Owner o66 = new Owner("O-66", "Hannah", List.of("P-167", "P-168", "P-169")); + static Owner o67 = new Owner("O-67", "Nathan", List.of("P-170", "P-171")); + static Owner o68 = new Owner("O-68", "Leah", List.of("P-172", "P-173", "P-174")); + static Owner o69 = new Owner("O-69", "Aaron", List.of("P-175", "P-176")); + static Owner o70 = new Owner("O-70", "Zoe", List.of("P-177", "P-178", "P-179")); + static Owner o71 = new Owner("O-71", "Eli", List.of("P-180", "P-181")); + static Owner o72 = new Owner("O-72", "Hazel", List.of("P-182", "P-183", "P-184")); + static Owner o73 = new Owner("O-73", "Adrian", List.of("P-185", "P-186")); + static Owner o74 = new Owner("O-74", "Violet", List.of("P-187", "P-188", "P-189")); + static Owner o75 = new Owner("O-75", "Christian", List.of("P-190", "P-191")); + static Owner o76 = new Owner("O-76", "Aurora", List.of("P-192", "P-193", "P-194")); + static Owner o77 = new Owner("O-77", "Ryan", List.of("P-195", "P-196")); + static Owner o78 = new Owner("O-78", "Savannah", List.of("P-197", "P-198", "P-199")); + static Owner o79 = new Owner("O-79", "Thomas", List.of("P-200", "P-201")); + static Owner o80 = new Owner("O-80", "Audrey", List.of("P-202", "P-203", "P-204")); + static Owner o81 = new Owner("O-81", "Caleb", List.of("P-205", "P-206")); + static Owner o82 = new Owner("O-82", "Brooklyn", List.of("P-207", "P-208", "P-209")); + static Owner o83 = new Owner("O-83", "Jose", List.of("P-210", "P-211")); + static Owner o84 = new Owner("O-84", "Bella", List.of("P-212", "P-213", "P-214")); + static Owner o85 = new Owner("O-85", "Colton", List.of("P-215", "P-216")); + static Owner o86 = new Owner("O-86", "Claire", List.of("P-217", "P-218", "P-219")); + static Owner o87 = new Owner("O-87", "Jordan", List.of("P-220", "P-221")); + static Owner o88 = new Owner("O-88", "Skylar", List.of("P-222", "P-223", "P-224")); + static Owner o89 = new Owner("O-89", "Jeremiah", List.of("P-225", "P-226")); + static Owner o90 = new Owner("O-90", "Lucy", List.of("P-227", "P-228", "P-229")); + static Owner o91 = new Owner("O-91", "Cameron", List.of("P-230", "P-231")); + static Owner o92 = new Owner("O-92", "Paisley", List.of("P-232", "P-233", "P-234")); + static Owner o93 = new Owner("O-93", "Cooper", List.of("P-235", "P-236")); + static Owner o94 = new Owner("O-94", "Sarah", List.of("P-237", "P-238", "P-239")); + static Owner o95 = new Owner("O-95", "Robert", List.of("P-240", "P-241")); + static Owner o96 = new Owner("O-96", "Natalie", List.of("P-242", "P-243", "P-244")); + static Owner o97 = new Owner("O-97", "Brayden", List.of("P-245", "P-246")); + static Owner o98 = new Owner("O-98", "Mila", List.of("P-247", "P-248", "P-249")); + static Owner o99 = new Owner("O-99", "Jonathan", List.of("P-250", "P-251")); + static Owner o100 = new Owner("O-100", "Naomi", List.of("P-252", "P-253", "P-254")); + static Owner o101 = new Owner("O-101", "Carlos", List.of("P-255", "P-256")); + static Owner o102 = new Owner("O-102", "Elena", List.of("P-257", "P-258", "P-259")); + static Owner o103 = new Owner("O-103", "Hunter", List.of("P-260", "P-261")); + + static Pet p1 = new Pet("P-1", "Bella", "O-1", List.of("P-2", "P-3", "P-4")); + static Pet p2 = new Pet("P-2", "Charlie", "O-2", List.of("P-1", "P-5", "P-6")); + static Pet p3 = new Pet("P-3", "Luna", "O-3", List.of("P-1", "P-2", "P-7", "P-8")); + static Pet p4 = new Pet("P-4", "Max", "O-1", List.of("P-1", "P-9", "P-10")); + static Pet p5 = new Pet("P-5", "Lucy", "O-2", List.of("P-2", "P-6")); + static Pet p6 = new Pet("P-6", "Cooper", "O-3", List.of("P-3", "P-5", "P-7")); + static Pet p7 = new Pet("P-7", "Daisy", "O-1", List.of("P-4", "P-6", "P-8")); + static Pet p8 = new Pet("P-8", "Milo", "O-2", List.of("P-3", "P-7", "P-9")); + static Pet p9 = new Pet("P-9", "Lola", "O-3", List.of("P-4", "P-8", "P-10")); + static Pet p10 = new Pet("P-10", "Rocky", "O-1", List.of("P-4", "P-9")); + + // Additional pets for the new owners + static Pet p11 = new Pet("P-11", "Buddy", "O-4", List.of("P-12", "P-13", "P-14")); + static Pet p12 = new Pet("P-12", "Oscar", "O-4", List.of("P-11", "P-15", "P-16")); + static Pet p13 = new Pet("P-13", "Tucker", "O-5", List.of("P-14", "P-15", "P-11")); + static Pet p14 = new Pet("P-14", "Bailey", "O-5", List.of("P-13", "P-16", "P-17")); + static Pet p15 = new Pet("P-15", "Ollie", "O-5", List.of("P-12", "P-13", "P-18")); + static Pet p16 = new Pet("P-16", "Coco", "O-6", List.of("P-17", "P-18", "P-12")); + static Pet p17 = new Pet("P-17", "Ruby", "O-6", List.of("P-16", "P-19", "P-20")); + static Pet p18 = new Pet("P-18", "Sadie", "O-6", List.of("P-15", "P-16", "P-21")); + static Pet p19 = new Pet("P-19", "Zeus", "O-7", List.of("P-20", "P-17", "P-22")); + static Pet p20 = new Pet("P-20", "Sophie", "O-7", List.of("P-19", "P-23", "P-24")); + static Pet p21 = new Pet("P-21", "Maggie", "O-8", List.of("P-22", "P-23", "P-18")); + static Pet p22 = new Pet("P-22", "Shadow", "O-8", List.of("P-21", "P-24", "P-19")); + static Pet p23 = new Pet("P-23", "Bear", "O-8", List.of("P-20", "P-21", "P-25")); + static Pet p24 = new Pet("P-24", "Stella", "O-8", List.of("P-22", "P-25", "P-20")); + static Pet p25 = new Pet("P-25", "Duke", "O-9", List.of("P-26", "P-23", "P-24")); + static Pet p26 = new Pet("P-26", "Zoe", "O-9", List.of("P-25", "P-27", "P-28")); + static Pet p27 = new Pet("P-27", "Toby", "O-10", List.of("P-28", "P-29", "P-26")); + static Pet p28 = new Pet("P-28", "Lily", "O-10", List.of("P-27", "P-29", "P-30")); + static Pet p29 = new Pet("P-29", "Jake", "O-10", List.of("P-27", "P-28", "P-31")); + static Pet p30 = new Pet("P-30", "Molly", "O-11", List.of("P-31", "P-32", "P-28")); + static Pet p31 = new Pet("P-31", "Gus", "O-11", List.of("P-30", "P-33", "P-29")); + static Pet p32 = new Pet("P-32", "Penny", "O-12", List.of("P-33", "P-34", "P-30")); + static Pet p33 = new Pet("P-33", "Buster", "O-12", List.of("P-32", "P-34", "P-31")); + static Pet p34 = new Pet("P-34", "Rosie", "O-12", List.of("P-32", "P-33", "P-35")); + static Pet p35 = new Pet("P-35", "Finn", "O-13", List.of("P-36", "P-37", "P-34")); + static Pet p36 = new Pet("P-36", "Nala", "O-13", List.of("P-35", "P-38", "P-39")); + static Pet p37 = new Pet("P-37", "Mochi", "O-14", List.of("P-38", "P-39", "P-35")); + static Pet p38 = new Pet("P-38", "Leo", "O-14", List.of("P-37", "P-39", "P-36")); + static Pet p39 = new Pet("P-39", "Cleo", "O-14", List.of("P-37", "P-38", "P-40")); + static Pet p40 = new Pet("P-40", "Bandit", "O-15", List.of("P-41", "P-42", "P-39")); + static Pet p41 = new Pet("P-41", "Kona", "O-15", List.of("P-40", "P-43", "P-44")); + static Pet p42 = new Pet("P-42", "Maya", "O-16", List.of("P-43", "P-44", "P-40")); + static Pet p43 = new Pet("P-43", "Scout", "O-16", List.of("P-42", "P-44", "P-41")); + static Pet p44 = new Pet("P-44", "Hazel", "O-16", List.of("P-42", "P-43", "P-45")); + static Pet p45 = new Pet("P-45", "Oliver", "O-17", List.of("P-46", "P-47", "P-44")); + static Pet p46 = new Pet("P-46", "Piper", "O-17", List.of("P-45", "P-48", "P-49")); + static Pet p47 = new Pet("P-47", "Rusty", "O-18", List.of("P-48", "P-49", "P-45")); + static Pet p48 = new Pet("P-48", "Luna", "O-18", List.of("P-47", "P-49", "P-46")); + static Pet p49 = new Pet("P-49", "Jasper", "O-18", List.of("P-47", "P-48", "P-50")); + static Pet p50 = new Pet("P-50", "Willow", "O-19", List.of("P-51", "P-52", "P-49")); + static Pet p51 = new Pet("P-51", "Murphy", "O-19", List.of("P-50", "P-53", "P-54")); + static Pet p52 = new Pet("P-52", "Maple", "O-20", List.of("P-53", "P-54", "P-50")); + static Pet p53 = new Pet("P-53", "Ace", "O-20", List.of("P-52", "P-54", "P-51")); + static Pet p54 = new Pet("P-54", "Honey", "O-20", List.of("P-52", "P-53", "P-55")); + static Pet p55 = new Pet("P-55", "Ziggy", "O-21", List.of("P-56", "P-57", "P-54")); + static Pet p56 = new Pet("P-56", "Pearl", "O-21", List.of("P-55", "P-58", "P-59")); + static Pet p57 = new Pet("P-57", "Rocco", "O-22", List.of("P-58", "P-59", "P-55")); + static Pet p58 = new Pet("P-58", "Ivy", "O-22", List.of("P-57", "P-59", "P-56")); + static Pet p59 = new Pet("P-59", "Koda", "O-22", List.of("P-57", "P-58", "P-60")); + static Pet p60 = new Pet("P-60", "Nova", "O-23", List.of("P-61", "P-62", "P-59")); + static Pet p61 = new Pet("P-61", "Tank", "O-23", List.of("P-60", "P-63", "P-64")); + static Pet p62 = new Pet("P-62", "Poppy", "O-24", List.of("P-63", "P-64", "P-60")); + static Pet p63 = new Pet("P-63", "Diesel", "O-24", List.of("P-62", "P-64", "P-61")); + static Pet p64 = new Pet("P-64", "Roxy", "O-24", List.of("P-62", "P-63", "P-65")); + static Pet p65 = new Pet("P-65", "Bruno", "O-25", List.of("P-66", "P-67", "P-64")); + static Pet p66 = new Pet("P-66", "Athena", "O-25", List.of("P-65", "P-68", "P-69")); + static Pet p67 = new Pet("P-67", "Oreo", "O-26", List.of("P-68", "P-69", "P-65")); + static Pet p68 = new Pet("P-68", "Sage", "O-26", List.of("P-67", "P-69", "P-66")); + static Pet p69 = new Pet("P-69", "Beau", "O-26", List.of("P-67", "P-68", "P-70")); + static Pet p70 = new Pet("P-70", "Aria", "O-27", List.of("P-71", "P-72", "P-69")); + static Pet p71 = new Pet("P-71", "Ranger", "O-27", List.of("P-70", "P-73", "P-74")); + static Pet p72 = new Pet("P-72", "Mia", "O-28", List.of("P-73", "P-74", "P-70")); + static Pet p73 = new Pet("P-73", "Rex", "O-28", List.of("P-72", "P-74", "P-71")); + static Pet p74 = new Pet("P-74", "Zara", "O-28", List.of("P-72", "P-73", "P-75")); + static Pet p75 = new Pet("P-75", "Hank", "O-29", List.of("P-76", "P-77", "P-74")); + static Pet p76 = new Pet("P-76", "Lola", "O-29", List.of("P-75", "P-78", "P-79")); + static Pet p77 = new Pet("P-77", "Cash", "O-30", List.of("P-78", "P-79", "P-75")); + static Pet p78 = new Pet("P-78", "Belle", "O-30", List.of("P-77", "P-79", "P-76")); + static Pet p79 = new Pet("P-79", "Copper", "O-30", List.of("P-77", "P-78", "P-80")); + static Pet p80 = new Pet("P-80", "Tessa", "O-31", List.of("P-81", "P-82", "P-79")); + static Pet p81 = new Pet("P-81", "Gunner", "O-31", List.of("P-80", "P-83", "P-84")); + static Pet p82 = new Pet("P-82", "Freya", "O-32", List.of("P-83", "P-84", "P-80")); + static Pet p83 = new Pet("P-83", "Boomer", "O-32", List.of("P-82", "P-84", "P-81")); + static Pet p84 = new Pet("P-84", "Violet", "O-32", List.of("P-82", "P-83", "P-85")); + static Pet p85 = new Pet("P-85", "Apollo", "O-33", List.of("P-86", "P-87", "P-84")); + static Pet p86 = new Pet("P-86", "Raven", "O-33", List.of("P-85", "P-88", "P-89")); + static Pet p87 = new Pet("P-87", "Jax", "O-34", List.of("P-88", "P-89", "P-85")); + static Pet p88 = new Pet("P-88", "Storm", "O-34", List.of("P-87", "P-89", "P-86")); + static Pet p89 = new Pet("P-89", "Ember", "O-34", List.of("P-87", "P-88", "P-90")); + static Pet p90 = new Pet("P-90", "Thor", "O-35", List.of("P-91", "P-92", "P-89")); + static Pet p91 = new Pet("P-91", "Misty", "O-35", List.of("P-90", "P-93", "P-94")); + static Pet p92 = new Pet("P-92", "Blaze", "O-36", List.of("P-93", "P-94", "P-90")); + static Pet p93 = new Pet("P-93", "Sunny", "O-36", List.of("P-92", "P-94", "P-91")); + static Pet p94 = new Pet("P-94", "Ghost", "O-36", List.of("P-92", "P-93", "P-95")); + static Pet p95 = new Pet("P-95", "Clover", "O-37", List.of("P-96", "P-97", "P-94")); + static Pet p96 = new Pet("P-96", "Ridge", "O-37", List.of("P-95", "P-98", "P-99")); + static Pet p97 = new Pet("P-97", "Indie", "O-38", List.of("P-98", "P-99", "P-95")); + static Pet p98 = new Pet("P-98", "Forest", "O-38", List.of("P-97", "P-99", "P-96")); + static Pet p99 = new Pet("P-99", "River", "O-38", List.of("P-97", "P-98", "P-100")); + static Pet p100 = new Pet("P-100", "Onyx", "O-39", List.of("P-101", "P-102", "P-99")); + static Pet p101 = new Pet("P-101", "Star", "O-39", List.of("P-100", "P-103", "P-104")); + static Pet p102 = new Pet("P-102", "Atlas", "O-40", List.of("P-103", "P-104", "P-100")); + static Pet p103 = new Pet("P-103", "Echo", "O-40", List.of("P-102", "P-104", "P-101")); + static Pet p104 = new Pet("P-104", "Phoenix", "O-40", List.of("P-102", "P-103", "P-105")); + static Pet p105 = new Pet("P-105", "Aspen", "O-41", List.of("P-106", "P-107", "P-104")); + static Pet p106 = new Pet("P-106", "Knox", "O-41", List.of("P-105", "P-108", "P-109")); + static Pet p107 = new Pet("P-107", "Jade", "O-42", List.of("P-108", "P-109", "P-105")); + static Pet p108 = new Pet("P-108", "Blaze", "O-42", List.of("P-107", "P-109", "P-106")); + static Pet p109 = new Pet("P-109", "Sky", "O-42", List.of("P-107", "P-108", "P-110")); + static Pet p110 = new Pet("P-110", "Neo", "O-43", List.of("P-111", "P-112", "P-109")); + static Pet p111 = new Pet("P-111", "Fern", "O-43", List.of("P-110", "P-113", "P-114")); + static Pet p112 = new Pet("P-112", "Axel", "O-44", List.of("P-113", "P-114", "P-110")); + static Pet p113 = new Pet("P-113", "Iris", "O-44", List.of("P-112", "P-114", "P-111")); + static Pet p114 = new Pet("P-114", "Rebel", "O-44", List.of("P-112", "P-113", "P-115")); + static Pet p115 = new Pet("P-115", "Wren", "O-45", List.of("P-116", "P-117", "P-114")); + static Pet p116 = new Pet("P-116", "Cruz", "O-45", List.of("P-115", "P-118", "P-119")); + static Pet p117 = new Pet("P-117", "Ocean", "O-46", List.of("P-118", "P-119", "P-115")); + static Pet p118 = new Pet("P-118", "Titan", "O-46", List.of("P-117", "P-119", "P-116")); + static Pet p119 = new Pet("P-119", "Luna", "O-46", List.of("P-117", "P-118", "P-120")); + static Pet p120 = new Pet("P-120", "Cosmos", "O-47", List.of("P-121", "P-122", "P-119")); + static Pet p121 = new Pet("P-121", "Maple", "O-47", List.of("P-120", "P-123", "P-124")); + static Pet p122 = new Pet("P-122", "Orion", "O-48", List.of("P-123", "P-124", "P-120")); + static Pet p123 = new Pet("P-123", "Vega", "O-48", List.of("P-122", "P-124", "P-121")); + static Pet p124 = new Pet("P-124", "Nova", "O-48", List.of("P-122", "P-123", "P-125")); + static Pet p125 = new Pet("P-125", "Blitz", "O-49", List.of("P-126", "P-127", "P-124")); + static Pet p126 = new Pet("P-126", "Dawn", "O-49", List.of("P-125", "P-128", "P-129")); + static Pet p127 = new Pet("P-127", "Storm", "O-50", List.of("P-128", "P-129", "P-125")); + static Pet p128 = new Pet("P-128", "Ember", "O-50", List.of("P-127", "P-129", "P-126")); + static Pet p129 = new Pet("P-129", "Thunder", "O-50", List.of("P-127", "P-128", "P-130")); + static Pet p130 = new Pet("P-130", "Frost", "O-51", List.of("P-131", "P-132", "P-129")); + static Pet p131 = new Pet("P-131", "Crimson", "O-51", List.of("P-130", "P-133", "P-134")); + static Pet p132 = new Pet("P-132", "Sage", "O-52", List.of("P-133", "P-134", "P-130")); + static Pet p133 = new Pet("P-133", "Dash", "O-52", List.of("P-132", "P-134", "P-131")); + static Pet p134 = new Pet("P-134", "Amber", "O-52", List.of("P-132", "P-133", "P-135")); + static Pet p135 = new Pet("P-135", "Blaze", "O-53", List.of("P-136", "P-137", "P-134")); + static Pet p136 = new Pet("P-136", "Stellar", "O-53", List.of("P-135", "P-138", "P-139")); + static Pet p137 = new Pet("P-137", "Midnight", "O-54", List.of("P-138", "P-139", "P-135")); + static Pet p138 = new Pet("P-138", "Aurora", "O-54", List.of("P-137", "P-139", "P-136")); + static Pet p139 = new Pet("P-139", "Galaxy", "O-54", List.of("P-137", "P-138", "P-140")); + static Pet p140 = new Pet("P-140", "Comet", "O-55", List.of("P-141", "P-142", "P-139")); + static Pet p141 = new Pet("P-141", "Nebula", "O-55", List.of("P-140", "P-143", "P-144")); + static Pet p142 = new Pet("P-142", "Zeus", "O-56", List.of("P-143", "P-144", "P-140")); + static Pet p143 = new Pet("P-143", "Hera", "O-56", List.of("P-142", "P-144", "P-141")); + static Pet p144 = new Pet("P-144", "Atlas", "O-56", List.of("P-142", "P-143", "P-145")); + static Pet p145 = new Pet("P-145", "Artemis", "O-57", List.of("P-146", "P-147", "P-144")); + static Pet p146 = new Pet("P-146", "Apollo", "O-57", List.of("P-145", "P-148", "P-149")); + static Pet p147 = new Pet("P-147", "Persephone", "O-58", List.of("P-148", "P-149", "P-145")); + static Pet p148 = new Pet("P-148", "Hades", "O-58", List.of("P-147", "P-149", "P-146")); + static Pet p149 = new Pet("P-149", "Demeter", "O-58", List.of("P-147", "P-148", "P-150")); + static Pet p150 = new Pet("P-150", "Poseidon", "O-59", List.of("P-151", "P-152", "P-149")); + static Pet p151 = new Pet("P-151", "Athena", "O-59", List.of("P-150", "P-153", "P-154")); + static Pet p152 = new Pet("P-152", "Hermes", "O-60", List.of("P-153", "P-154", "P-150")); + static Pet p153 = new Pet("P-153", "Aphrodite", "O-60", List.of("P-152", "P-154", "P-151")); + static Pet p154 = new Pet("P-154", "Ares", "O-60", List.of("P-152", "P-153", "P-155")); + static Pet p155 = new Pet("P-155", "Hestia", "O-61", List.of("P-156", "P-157", "P-154")); + static Pet p156 = new Pet("P-156", "Dionysus", "O-61", List.of("P-155", "P-158", "P-159")); + static Pet p157 = new Pet("P-157", "Hephaestus", "O-62", List.of("P-158", "P-159", "P-155")); + static Pet p158 = new Pet("P-158", "Iris", "O-62", List.of("P-157", "P-159", "P-156")); + static Pet p159 = new Pet("P-159", "Hecate", "O-62", List.of("P-157", "P-158", "P-160")); + static Pet p160 = new Pet("P-160", "Helios", "O-63", List.of("P-161", "P-162", "P-159")); + static Pet p161 = new Pet("P-161", "Selene", "O-63", List.of("P-160", "P-163", "P-164")); + static Pet p162 = new Pet("P-162", "Eos", "O-64", List.of("P-163", "P-164", "P-160")); + static Pet p163 = new Pet("P-163", "Nyx", "O-64", List.of("P-162", "P-164", "P-161")); + static Pet p164 = new Pet("P-164", "Chaos", "O-64", List.of("P-162", "P-163", "P-165")); + static Pet p165 = new Pet("P-165", "Gaia", "O-65", List.of("P-166", "P-167", "P-164")); + static Pet p166 = new Pet("P-166", "Uranus", "O-65", List.of("P-165", "P-168", "P-169")); + static Pet p167 = new Pet("P-167", "Chronos", "O-66", List.of("P-168", "P-169", "P-165")); + static Pet p168 = new Pet("P-168", "Rhea", "O-66", List.of("P-167", "P-169", "P-166")); + static Pet p169 = new Pet("P-169", "Oceanus", "O-66", List.of("P-167", "P-168", "P-170")); + static Pet p170 = new Pet("P-170", "Tethys", "O-67", List.of("P-171", "P-172", "P-169")); + static Pet p171 = new Pet("P-171", "Hyperion", "O-67", List.of("P-170", "P-173", "P-174")); + static Pet p172 = new Pet("P-172", "Theia", "O-68", List.of("P-173", "P-174", "P-170")); + static Pet p173 = new Pet("P-173", "Coeus", "O-68", List.of("P-172", "P-174", "P-171")); + static Pet p174 = new Pet("P-174", "Phoebe", "O-68", List.of("P-172", "P-173", "P-175")); + static Pet p175 = new Pet("P-175", "Mnemosyne", "O-69", List.of("P-176", "P-177", "P-174")); + static Pet p176 = new Pet("P-176", "Themis", "O-69", List.of("P-175", "P-178", "P-179")); + static Pet p177 = new Pet("P-177", "Iapetus", "O-70", List.of("P-178", "P-179", "P-175")); + static Pet p178 = new Pet("P-178", "Crius", "O-70", List.of("P-177", "P-179", "P-176")); + static Pet p179 = new Pet("P-179", "Prometheus", "O-70", List.of("P-177", "P-178", "P-180")); + static Pet p180 = new Pet("P-180", "Epimetheus", "O-71", List.of("P-181", "P-182", "P-179")); + static Pet p181 = new Pet("P-181", "Pandora", "O-71", List.of("P-180", "P-183", "P-184")); + static Pet p182 = new Pet("P-182", "Perseus", "O-72", List.of("P-183", "P-184", "P-180")); + static Pet p183 = new Pet("P-183", "Andromeda", "O-72", List.of("P-182", "P-184", "P-181")); + static Pet p184 = new Pet("P-184", "Medusa", "O-72", List.of("P-182", "P-183", "P-185")); + static Pet p185 = new Pet("P-185", "Pegasus", "O-73", List.of("P-186", "P-187", "P-184")); + static Pet p186 = new Pet("P-186", "Hercules", "O-73", List.of("P-185", "P-188", "P-189")); + static Pet p187 = new Pet("P-187", "Achilles", "O-74", List.of("P-188", "P-189", "P-185")); + static Pet p188 = new Pet("P-188", "Hector", "O-74", List.of("P-187", "P-189", "P-186")); + static Pet p189 = new Pet("P-189", "Odysseus", "O-74", List.of("P-187", "P-188", "P-190")); + static Pet p190 = new Pet("P-190", "Penelope", "O-75", List.of("P-191", "P-192", "P-189")); + static Pet p191 = new Pet("P-191", "Telemachus", "O-75", List.of("P-190", "P-193", "P-194")); + static Pet p192 = new Pet("P-192", "Circe", "O-76", List.of("P-193", "P-194", "P-190")); + static Pet p193 = new Pet("P-193", "Calypso", "O-76", List.of("P-192", "P-194", "P-191")); + static Pet p194 = new Pet("P-194", "Nausicaa", "O-76", List.of("P-192", "P-193", "P-195")); + static Pet p195 = new Pet("P-195", "Ariadne", "O-77", List.of("P-196", "P-197", "P-194")); + static Pet p196 = new Pet("P-196", "Theseus", "O-77", List.of("P-195", "P-198", "P-199")); + static Pet p197 = new Pet("P-197", "Minotaur", "O-78", List.of("P-198", "P-199", "P-195")); + static Pet p198 = new Pet("P-198", "Icarus", "O-78", List.of("P-197", "P-199", "P-196")); + static Pet p199 = new Pet("P-199", "Daedalus", "O-78", List.of("P-197", "P-198", "P-200")); + static Pet p200 = new Pet("P-200", "Phoenix", "O-79", List.of("P-201", "P-202", "P-199")); + static Pet p201 = new Pet("P-201", "Griffin", "O-79", List.of("P-200", "P-203", "P-204")); + static Pet p202 = new Pet("P-202", "Dragon", "O-80", List.of("P-203", "P-204", "P-200")); + static Pet p203 = new Pet("P-203", "Sphinx", "O-80", List.of("P-202", "P-204", "P-201")); + static Pet p204 = new Pet("P-204", "Chimera", "O-80", List.of("P-202", "P-203", "P-205")); + static Pet p205 = new Pet("P-205", "Hydra", "O-81", List.of("P-206", "P-207", "P-204")); + static Pet p206 = new Pet("P-206", "Kraken", "O-81", List.of("P-205", "P-208", "P-209")); + static Pet p207 = new Pet("P-207", "Cerberus", "O-82", List.of("P-208", "P-209", "P-205")); + static Pet p208 = new Pet("P-208", "Fenrir", "O-82", List.of("P-207", "P-209", "P-206")); + static Pet p209 = new Pet("P-209", "Jormungandr", "O-82", List.of("P-207", "P-208", "P-210")); + static Pet p210 = new Pet("P-210", "Sleipnir", "O-83", List.of("P-211", "P-212", "P-209")); + static Pet p211 = new Pet("P-211", "Odin", "O-83", List.of("P-210", "P-213", "P-214")); + static Pet p212 = new Pet("P-212", "Freya", "O-84", List.of("P-213", "P-214", "P-210")); + static Pet p213 = new Pet("P-213", "Thor", "O-84", List.of("P-212", "P-214", "P-211")); + static Pet p214 = new Pet("P-214", "Loki", "O-84", List.of("P-212", "P-213", "P-215")); + static Pet p215 = new Pet("P-215", "Balder", "O-85", List.of("P-216", "P-217", "P-214")); + static Pet p216 = new Pet("P-216", "Frigg", "O-85", List.of("P-215", "P-218", "P-219")); + static Pet p217 = new Pet("P-217", "Heimdall", "O-86", List.of("P-218", "P-219", "P-215")); + static Pet p218 = new Pet("P-218", "Tyr", "O-86", List.of("P-217", "P-219", "P-216")); + static Pet p219 = new Pet("P-219", "Vidar", "O-86", List.of("P-217", "P-218", "P-220")); + static Pet p220 = new Pet("P-220", "Vali", "O-87", List.of("P-221", "P-222", "P-219")); + static Pet p221 = new Pet("P-221", "Hod", "O-87", List.of("P-220", "P-223", "P-224")); + static Pet p222 = new Pet("P-222", "Bragi", "O-88", List.of("P-223", "P-224", "P-220")); + static Pet p223 = new Pet("P-223", "Idunn", "O-88", List.of("P-222", "P-224", "P-221")); + static Pet p224 = new Pet("P-224", "Sigyn", "O-88", List.of("P-222", "P-223", "P-225")); + static Pet p225 = new Pet("P-225", "Sif", "O-89", List.of("P-226", "P-227", "P-224")); + static Pet p226 = new Pet("P-226", "Angrboda", "O-89", List.of("P-225", "P-228", "P-229")); + static Pet p227 = new Pet("P-227", "Hel", "O-90", List.of("P-228", "P-229", "P-225")); + static Pet p228 = new Pet("P-228", "Mimir", "O-90", List.of("P-227", "P-229", "P-226")); + static Pet p229 = new Pet("P-229", "Ymir", "O-90", List.of("P-227", "P-228", "P-230")); + static Pet p230 = new Pet("P-230", "Surtr", "O-91", List.of("P-231", "P-232", "P-229")); + static Pet p231 = new Pet("P-231", "Jotun", "O-91", List.of("P-230", "P-233", "P-234")); + static Pet p232 = new Pet("P-232", "Ragnar", "O-92", List.of("P-233", "P-234", "P-230")); + static Pet p233 = new Pet("P-233", "Bjorn", "O-92", List.of("P-232", "P-234", "P-231")); + static Pet p234 = new Pet("P-234", "Erik", "O-92", List.of("P-232", "P-233", "P-235")); + static Pet p235 = new Pet("P-235", "Olaf", "O-93", List.of("P-236", "P-237", "P-234")); + static Pet p236 = new Pet("P-236", "Magnus", "O-93", List.of("P-235", "P-238", "P-239")); + static Pet p237 = new Pet("P-237", "Astrid", "O-94", List.of("P-238", "P-239", "P-235")); + static Pet p238 = new Pet("P-238", "Ingrid", "O-94", List.of("P-237", "P-239", "P-236")); + static Pet p239 = new Pet("P-239", "Sigrid", "O-94", List.of("P-237", "P-238", "P-240")); + static Pet p240 = new Pet("P-240", "Gunnar", "O-95", List.of("P-241", "P-242", "P-239")); + static Pet p241 = new Pet("P-241", "Leif", "O-95", List.of("P-240", "P-243", "P-244")); + static Pet p242 = new Pet("P-242", "Helga", "O-96", List.of("P-243", "P-244", "P-240")); + static Pet p243 = new Pet("P-243", "Solveig", "O-96", List.of("P-242", "P-244", "P-241")); + static Pet p244 = new Pet("P-244", "Ragnhild", "O-96", List.of("P-242", "P-243", "P-245")); + static Pet p245 = new Pet("P-245", "Svein", "O-97", List.of("P-246", "P-247", "P-244")); + static Pet p246 = new Pet("P-246", "Hakon", "O-97", List.of("P-245", "P-248", "P-249")); + static Pet p247 = new Pet("P-247", "Valdis", "O-98", List.of("P-248", "P-249", "P-245")); + static Pet p248 = new Pet("P-248", "Thora", "O-98", List.of("P-247", "P-249", "P-246")); + static Pet p249 = new Pet("P-249", "Eirik", "O-98", List.of("P-247", "P-248", "P-250")); + static Pet p250 = new Pet("P-250", "Knut", "O-99", List.of("P-251", "P-252", "P-249")); + static Pet p251 = new Pet("P-251", "Rune", "O-99", List.of("P-250", "P-253", "P-254")); + static Pet p252 = new Pet("P-252", "Saga", "O-100", List.of("P-253", "P-254", "P-250")); + static Pet p253 = new Pet("P-253", "Urd", "O-100", List.of("P-252", "P-254", "P-251")); + static Pet p254 = new Pet("P-254", "Verdandi", "O-100", List.of("P-252", "P-253", "P-255")); + static Pet p255 = new Pet("P-255", "Skuld", "O-101", List.of("P-256", "P-257", "P-254")); + static Pet p256 = new Pet("P-256", "Norns", "O-101", List.of("P-255", "P-258", "P-259")); + static Pet p257 = new Pet("P-257", "Eir", "O-102", List.of("P-258", "P-259", "P-255")); + static Pet p258 = new Pet("P-258", "Vara", "O-102", List.of("P-257", "P-259", "P-256")); + static Pet p259 = new Pet("P-259", "Vor", "O-102", List.of("P-257", "P-258", "P-260")); + static Pet p260 = new Pet("P-260", "Syn", "O-103", List.of("P-261", "P-1", "P-259")); + static Pet p261 = new Pet("P-261", "Lofn", "O-103", List.of("P-260", "P-2", "P-3")); + + static Map owners = Map.ofEntries( + Map.entry(o1.id, o1), Map.entry(o2.id, o2), Map.entry(o3.id, o3), + Map.entry(o4.id, o4), Map.entry(o5.id, o5), Map.entry(o6.id, o6), Map.entry(o7.id, o7), Map.entry(o8.id, o8), Map.entry(o9.id, o9), Map.entry(o10.id, o10), + Map.entry(o11.id, o11), Map.entry(o12.id, o12), Map.entry(o13.id, o13), Map.entry(o14.id, o14), Map.entry(o15.id, o15), Map.entry(o16.id, o16), Map.entry(o17.id, o17), Map.entry(o18.id, o18), Map.entry(o19.id, o19), Map.entry(o20.id, o20), + Map.entry(o21.id, o21), Map.entry(o22.id, o22), Map.entry(o23.id, o23), Map.entry(o24.id, o24), Map.entry(o25.id, o25), Map.entry(o26.id, o26), Map.entry(o27.id, o27), Map.entry(o28.id, o28), Map.entry(o29.id, o29), Map.entry(o30.id, o30), + Map.entry(o31.id, o31), Map.entry(o32.id, o32), Map.entry(o33.id, o33), Map.entry(o34.id, o34), Map.entry(o35.id, o35), Map.entry(o36.id, o36), Map.entry(o37.id, o37), Map.entry(o38.id, o38), Map.entry(o39.id, o39), Map.entry(o40.id, o40), + Map.entry(o41.id, o41), Map.entry(o42.id, o42), Map.entry(o43.id, o43), Map.entry(o44.id, o44), Map.entry(o45.id, o45), Map.entry(o46.id, o46), Map.entry(o47.id, o47), Map.entry(o48.id, o48), Map.entry(o49.id, o49), Map.entry(o50.id, o50), + Map.entry(o51.id, o51), Map.entry(o52.id, o52), Map.entry(o53.id, o53), Map.entry(o54.id, o54), Map.entry(o55.id, o55), Map.entry(o56.id, o56), Map.entry(o57.id, o57), Map.entry(o58.id, o58), Map.entry(o59.id, o59), Map.entry(o60.id, o60), + Map.entry(o61.id, o61), Map.entry(o62.id, o62), Map.entry(o63.id, o63), Map.entry(o64.id, o64), Map.entry(o65.id, o65), Map.entry(o66.id, o66), Map.entry(o67.id, o67), Map.entry(o68.id, o68), Map.entry(o69.id, o69), Map.entry(o70.id, o70), + Map.entry(o71.id, o71), Map.entry(o72.id, o72), Map.entry(o73.id, o73), Map.entry(o74.id, o74), Map.entry(o75.id, o75), Map.entry(o76.id, o76), Map.entry(o77.id, o77), Map.entry(o78.id, o78), Map.entry(o79.id, o79), Map.entry(o80.id, o80), + Map.entry(o81.id, o81), Map.entry(o82.id, o82), Map.entry(o83.id, o83), Map.entry(o84.id, o84), Map.entry(o85.id, o85), Map.entry(o86.id, o86), Map.entry(o87.id, o87), Map.entry(o88.id, o88), Map.entry(o89.id, o89), Map.entry(o90.id, o90), + Map.entry(o91.id, o91), Map.entry(o92.id, o92), Map.entry(o93.id, o93), Map.entry(o94.id, o94), Map.entry(o95.id, o95), Map.entry(o96.id, o96), Map.entry(o97.id, o97), Map.entry(o98.id, o98), Map.entry(o99.id, o99), Map.entry(o100.id, o100), + Map.entry(o101.id, o101), Map.entry(o102.id, o102), Map.entry(o103.id, o103) + ); + static Map pets = Map.ofEntries( + Map.entry(p1.id, p1), Map.entry(p2.id, p2), Map.entry(p3.id, p3), Map.entry(p4.id, p4), Map.entry(p5.id, p5), Map.entry(p6.id, p6), Map.entry(p7.id, p7), Map.entry(p8.id, p8), Map.entry(p9.id, p9), Map.entry(p10.id, p10), + Map.entry(p11.id, p11), Map.entry(p12.id, p12), Map.entry(p13.id, p13), Map.entry(p14.id, p14), Map.entry(p15.id, p15), Map.entry(p16.id, p16), Map.entry(p17.id, p17), Map.entry(p18.id, p18), Map.entry(p19.id, p19), Map.entry(p20.id, p20), + Map.entry(p21.id, p21), Map.entry(p22.id, p22), Map.entry(p23.id, p23), Map.entry(p24.id, p24), Map.entry(p25.id, p25), Map.entry(p26.id, p26), Map.entry(p27.id, p27), Map.entry(p28.id, p28), Map.entry(p29.id, p29), Map.entry(p30.id, p30), + Map.entry(p31.id, p31), Map.entry(p32.id, p32), Map.entry(p33.id, p33), Map.entry(p34.id, p34), Map.entry(p35.id, p35), Map.entry(p36.id, p36), Map.entry(p37.id, p37), Map.entry(p38.id, p38), Map.entry(p39.id, p39), Map.entry(p40.id, p40), + Map.entry(p41.id, p41), Map.entry(p42.id, p42), Map.entry(p43.id, p43), Map.entry(p44.id, p44), Map.entry(p45.id, p45), Map.entry(p46.id, p46), Map.entry(p47.id, p47), Map.entry(p48.id, p48), Map.entry(p49.id, p49), Map.entry(p50.id, p50), + Map.entry(p51.id, p51), Map.entry(p52.id, p52), Map.entry(p53.id, p53), Map.entry(p54.id, p54), Map.entry(p55.id, p55), Map.entry(p56.id, p56), Map.entry(p57.id, p57), Map.entry(p58.id, p58), Map.entry(p59.id, p59), Map.entry(p60.id, p60), + Map.entry(p61.id, p61), Map.entry(p62.id, p62), Map.entry(p63.id, p63), Map.entry(p64.id, p64), Map.entry(p65.id, p65), Map.entry(p66.id, p66), Map.entry(p67.id, p67), Map.entry(p68.id, p68), Map.entry(p69.id, p69), Map.entry(p70.id, p70), + Map.entry(p71.id, p71), Map.entry(p72.id, p72), Map.entry(p73.id, p73), Map.entry(p74.id, p74), Map.entry(p75.id, p75), Map.entry(p76.id, p76), Map.entry(p77.id, p77), Map.entry(p78.id, p78), Map.entry(p79.id, p79), Map.entry(p80.id, p80), + Map.entry(p81.id, p81), Map.entry(p82.id, p82), Map.entry(p83.id, p83), Map.entry(p84.id, p84), Map.entry(p85.id, p85), Map.entry(p86.id, p86), Map.entry(p87.id, p87), Map.entry(p88.id, p88), Map.entry(p89.id, p89), Map.entry(p90.id, p90), + Map.entry(p91.id, p91), Map.entry(p92.id, p92), Map.entry(p93.id, p93), Map.entry(p94.id, p94), Map.entry(p95.id, p95), Map.entry(p96.id, p96), Map.entry(p97.id, p97), Map.entry(p98.id, p98), Map.entry(p99.id, p99), Map.entry(p100.id, p100), + Map.entry(p101.id, p101), Map.entry(p102.id, p102), Map.entry(p103.id, p103), Map.entry(p104.id, p104), Map.entry(p105.id, p105), Map.entry(p106.id, p106), Map.entry(p107.id, p107), Map.entry(p108.id, p108), Map.entry(p109.id, p109), Map.entry(p110.id, p110), + Map.entry(p111.id, p111), Map.entry(p112.id, p112), Map.entry(p113.id, p113), Map.entry(p114.id, p114), Map.entry(p115.id, p115), Map.entry(p116.id, p116), Map.entry(p117.id, p117), Map.entry(p118.id, p118), Map.entry(p119.id, p119), Map.entry(p120.id, p120), + Map.entry(p121.id, p121), Map.entry(p122.id, p122), Map.entry(p123.id, p123), Map.entry(p124.id, p124), Map.entry(p125.id, p125), Map.entry(p126.id, p126), Map.entry(p127.id, p127), Map.entry(p128.id, p128), Map.entry(p129.id, p129), Map.entry(p130.id, p130), + Map.entry(p131.id, p131), Map.entry(p132.id, p132), Map.entry(p133.id, p133), Map.entry(p134.id, p134), Map.entry(p135.id, p135), Map.entry(p136.id, p136), Map.entry(p137.id, p137), Map.entry(p138.id, p138), Map.entry(p139.id, p139), Map.entry(p140.id, p140), + Map.entry(p141.id, p141), Map.entry(p142.id, p142), Map.entry(p143.id, p143), Map.entry(p144.id, p144), Map.entry(p145.id, p145), Map.entry(p146.id, p146), Map.entry(p147.id, p147), Map.entry(p148.id, p148), Map.entry(p149.id, p149), Map.entry(p150.id, p150), + Map.entry(p151.id, p151), Map.entry(p152.id, p152), Map.entry(p153.id, p153), Map.entry(p154.id, p154), Map.entry(p155.id, p155), Map.entry(p156.id, p156), Map.entry(p157.id, p157), Map.entry(p158.id, p158), Map.entry(p159.id, p159), Map.entry(p160.id, p160), + Map.entry(p161.id, p161), Map.entry(p162.id, p162), Map.entry(p163.id, p163), Map.entry(p164.id, p164), Map.entry(p165.id, p165), Map.entry(p166.id, p166), Map.entry(p167.id, p167), Map.entry(p168.id, p168), Map.entry(p169.id, p169), Map.entry(p170.id, p170), + Map.entry(p171.id, p171), Map.entry(p172.id, p172), Map.entry(p173.id, p173), Map.entry(p174.id, p174), Map.entry(p175.id, p175), Map.entry(p176.id, p176), Map.entry(p177.id, p177), Map.entry(p178.id, p178), Map.entry(p179.id, p179), Map.entry(p180.id, p180), + Map.entry(p181.id, p181), Map.entry(p182.id, p182), Map.entry(p183.id, p183), Map.entry(p184.id, p184), Map.entry(p185.id, p185), Map.entry(p186.id, p186), Map.entry(p187.id, p187), Map.entry(p188.id, p188), Map.entry(p189.id, p189), Map.entry(p190.id, p190), + Map.entry(p191.id, p191), Map.entry(p192.id, p192), Map.entry(p193.id, p193), Map.entry(p194.id, p194), Map.entry(p195.id, p195), Map.entry(p196.id, p196), Map.entry(p197.id, p197), Map.entry(p198.id, p198), Map.entry(p199.id, p199), Map.entry(p200.id, p200), + Map.entry(p201.id, p201), Map.entry(p202.id, p202), Map.entry(p203.id, p203), Map.entry(p204.id, p204), Map.entry(p205.id, p205), Map.entry(p206.id, p206), Map.entry(p207.id, p207), Map.entry(p208.id, p208), Map.entry(p209.id, p209), Map.entry(p210.id, p210), + Map.entry(p211.id, p211), Map.entry(p212.id, p212), Map.entry(p213.id, p213), Map.entry(p214.id, p214), Map.entry(p215.id, p215), Map.entry(p216.id, p216), Map.entry(p217.id, p217), Map.entry(p218.id, p218), Map.entry(p219.id, p219), Map.entry(p220.id, p220), + Map.entry(p221.id, p221), Map.entry(p222.id, p222), Map.entry(p223.id, p223), Map.entry(p224.id, p224), Map.entry(p225.id, p225), Map.entry(p226.id, p226), Map.entry(p227.id, p227), Map.entry(p228.id, p228), Map.entry(p229.id, p229), Map.entry(p230.id, p230), + Map.entry(p231.id, p231), Map.entry(p232.id, p232), Map.entry(p233.id, p233), Map.entry(p234.id, p234), Map.entry(p235.id, p235), Map.entry(p236.id, p236), Map.entry(p237.id, p237), Map.entry(p238.id, p238), Map.entry(p239.id, p239), Map.entry(p240.id, p240), + Map.entry(p241.id, p241), Map.entry(p242.id, p242), Map.entry(p243.id, p243), Map.entry(p244.id, p244), Map.entry(p245.id, p245), Map.entry(p246.id, p246), Map.entry(p247.id, p247), Map.entry(p248.id, p248), Map.entry(p249.id, p249), Map.entry(p250.id, p250), + Map.entry(p251.id, p251), Map.entry(p252.id, p252), Map.entry(p253.id, p253), Map.entry(p254.id, p254), Map.entry(p255.id, p255), Map.entry(p256.id, p256), Map.entry(p257.id, p257), Map.entry(p258.id, p258), Map.entry(p259.id, p259), Map.entry(p260.id, p260), + Map.entry(p261.id, p261) + ); + + static class Owner { + public Owner(String id, String name, List petIds) { + this.id = id; + this.name = name; + this.petIds = petIds; + } + + String id; + String name; + List petIds; + } + + static class Pet { + public Pet(String id, String name, String ownerId, List friendsIds) { + this.id = id; + this.name = name; + this.ownerId = ownerId; + this.friendsIds = friendsIds; + } + + String id; + String name; + String ownerId; + List friendsIds; + } + + + static BatchLoader ownerBatchLoader = list -> { +// System.out.println("OwnerBatchLoader with " + list.size() ); + List collect = list.stream().map(key -> { + Owner owner = owners.get(key); + return owner; + }).collect(Collectors.toList()); + return CompletableFuture.completedFuture(collect); + }; + static BatchLoader petBatchLoader = list -> { +// System.out.println("PetBatchLoader with list: " + list.size()); + List collect = list.stream().map(key -> { + Pet owner = pets.get(key); + return owner; + }).collect(Collectors.toList()); + return CompletableFuture.completedFuture(collect); + }; + + static final String ownerDLName = "ownerDL"; + static final String petDLName = "petDL"; + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + GraphQL graphQL; + private String query; + + @Setup + public void setup() { + try { + String sdl = PerformanceTestingUtils.loadResource("dataLoaderPerformanceSchema.graphqls"); + + DataFetcher ownersDF = (env -> { + // Load all 103 owners (O-1 through O-103) + List allOwnerIds = List.of( + "O-1", "O-2", "O-3", "O-4", "O-5", "O-6", "O-7", "O-8", "O-9", "O-10", + "O-11", "O-12", "O-13", "O-14", "O-15", "O-16", "O-17", "O-18", "O-19", "O-20", + "O-21", "O-22", "O-23", "O-24", "O-25", "O-26", "O-27", "O-28", "O-29", "O-30", + "O-31", "O-32", "O-33", "O-34", "O-35", "O-36", "O-37", "O-38", "O-39", "O-40", + "O-41", "O-42", "O-43", "O-44", "O-45", "O-46", "O-47", "O-48", "O-49", "O-50", + "O-51", "O-52", "O-53", "O-54", "O-55", "O-56", "O-57", "O-58", "O-59", "O-60", + "O-61", "O-62", "O-63", "O-64", "O-65", "O-66", "O-67", "O-68", "O-69", "O-70", + "O-71", "O-72", "O-73", "O-74", "O-75", "O-76", "O-77", "O-78", "O-79", "O-80", + "O-81", "O-82", "O-83", "O-84", "O-85", "O-86", "O-87", "O-88", "O-89", "O-90", + "O-91", "O-92", "O-93", "O-94", "O-95", "O-96", "O-97", "O-98", "O-99", "O-100", + "O-101", "O-102", "O-103" + ); + return env.getDataLoader(ownerDLName).loadMany(allOwnerIds); + }); + DataFetcher petsDf = (env -> { + Owner owner = env.getSource(); + return env.getDataLoader(petDLName).loadMany((List) owner.petIds) + .thenCompose((result) -> CompletableFuture.supplyAsync(() -> null).thenApply((__) -> result)); + }); + + DataFetcher petFriendsDF = (env -> { + Pet pet = env.getSource(); + return env.getDataLoader(petDLName).loadMany((List) pet.friendsIds) + .thenCompose((result) -> CompletableFuture.supplyAsync(() -> null).thenApply((__) -> result)); + }); + + DataFetcher petOwnerDF = (env -> { + Pet pet = env.getSource(); + return env.getDataLoader(ownerDLName).load(pet.ownerId) + .thenCompose((result) -> CompletableFuture.supplyAsync(() -> null).thenApply((__) -> result)); + }); + + + TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(sdl); + RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type("Query", builder -> builder + .dataFetcher("owners", ownersDF)) + .type("Owner", builder -> builder + .dataFetcher("pets", petsDf)) + .type("Pet", builder -> builder + .dataFetcher("friends", petFriendsDF) + .dataFetcher("owner", petOwnerDF)) + .build(); + + query = "{owners{name pets { name friends{name owner {name }}}}}"; + + schema = new SchemaGenerator().makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + + graphQL = GraphQL.newGraphQL(schema).build(); + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void executeRequestWithDataLoaders(MyState myState, Blackhole blackhole) { + DataLoader ownerDL = DataLoaderFactory.newDataLoader(ownerBatchLoader); + DataLoader petDL = DataLoaderFactory.newDataLoader(petBatchLoader); + + DataLoaderRegistry registry = DataLoaderRegistry.newRegistry().register(ownerDLName, ownerDL).register(petDLName, petDL).build(); + + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(myState.query) + .dataLoaderRegistry(registry) +// .profileExecution(true) + .build(); + executionInput.getGraphQLContext().put(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, true); +// executionInput.getGraphQLContext().put(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, true); + ExecutionResult execute = myState.graphQL.execute(executionInput); +// ProfilerResult profilerResult = executionInput.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY); +// System.out.println("execute: " + execute); + Assert.assertTrue(execute.isDataPresent()); + Assert.assertTrue(execute.getErrors().isEmpty()); + blackhole.consume(execute); + } + + public static void main(String[] args) { + DataLoaderPerformance dataLoaderPerformance = new DataLoaderPerformance(); + MyState myState = new MyState(); + myState.setup(); + Blackhole blackhole = new Blackhole("Today's password is swordfish. I understand instantiating Blackholes directly is dangerous."); + for (int i = 0; i < 1; i++) { + dataLoaderPerformance.executeRequestWithDataLoaders(myState, blackhole); + } +// System.out.println(PerLevelDataLoaderDispatchStrategy.fieldFetchedCount); +// System.out.println(PerLevelDataLoaderDispatchStrategy.onCompletionFinishedCount); +// System.out.println(PerLevelDataLoaderDispatchStrategy.isReadyCounter); +// System.out.println(Duration.ofNanos(PerLevelDataLoaderDispatchStrategy.isReadyCounterNS.get()).toMillis()); + + + } + + +} diff --git a/src/jmh/java/performance/ENF1Performance.java b/src/jmh/java/performance/ENF1Performance.java new file mode 100644 index 0000000000..06cc1a234d --- /dev/null +++ b/src/jmh/java/performance/ENF1Performance.java @@ -0,0 +1,70 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class ENF1Performance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-1.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("large-schema-1-query.graphql"); + document = Parser.parse(query); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkThroughput(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + private void runImpl(MyState myState, Blackhole blackhole) { + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); + blackhole.consume(executableNormalizedOperation); + } + + +} diff --git a/src/jmh/java/performance/ENF2Performance.java b/src/jmh/java/performance/ENF2Performance.java new file mode 100644 index 0000000000..f6240d625c --- /dev/null +++ b/src/jmh/java/performance/ENF2Performance.java @@ -0,0 +1,59 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class ENF2Performance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("large-schema-2-query.graphql"); + document = Parser.parse(query); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public ExecutableNormalizedOperation benchMarkAvgTime(MyState myState) { + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); +// System.out.println("fields size:" + normalizedQuery.getFieldToNormalizedField().size()); + return executableNormalizedOperation; + } + +} diff --git a/src/jmh/java/performance/ENFDeepIntrospectionPerformance.java b/src/jmh/java/performance/ENFDeepIntrospectionPerformance.java new file mode 100644 index 0000000000..02d3626d0c --- /dev/null +++ b/src/jmh/java/performance/ENFDeepIntrospectionPerformance.java @@ -0,0 +1,128 @@ +package performance; + +import benchmark.BenchmarkUtils; +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +import static graphql.normalized.ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3, time = 5) +@Fork(2) +public class ENFDeepIntrospectionPerformance { + + @Param({"2", "10"}) + int howDeep = 2; + + String query = ""; + + GraphQLSchema schema; + Document document; + + @Setup(Level.Trial) + public void setUp() { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + query = createDeepQuery(howDeep); + document = Parser.parse(query); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public ExecutableNormalizedOperation benchMarkAvgTime() { + ExecutableNormalizedOperationFactory.Options options = ExecutableNormalizedOperationFactory.Options.defaultOptions(); + ExecutableNormalizedOperation executableNormalizedOperation = createExecutableNormalizedOperation(schema, + document, + null, + CoercedVariables.emptyVariables(), + options); + return executableNormalizedOperation; + } + + public static void main(String[] args) throws RunnerException { + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("performance.ENFDeepIntrospectionPerformance") + .build(); + + new Runner(opt).run(); + } + + private static void runAtStartup() { + + ENFDeepIntrospectionPerformance benchmarkIntrospection = new ENFDeepIntrospectionPerformance(); + benchmarkIntrospection.howDeep = 2; + + BenchmarkUtils.runInToolingForSomeTimeThenExit( + benchmarkIntrospection::setUp, + () -> { + while (true) { + benchmarkIntrospection.benchMarkAvgTime(); + } + }, + () -> { + } + ); + } + + + private static String createDeepQuery(int depth) { + String result = "query test {\n" + + " __schema {\n" + + " types {\n" + + " ...F1\n" + + " }\n" + + " }\n" + + "}\n"; + + for (int i = 1; i < depth; i++) { + result += " fragment F" + i + " on __Type {\n" + + " fields {\n" + + " type {\n" + + " ...F" + (i + 1) + "\n" + + " }\n" + + " }\n" + + "\n" + + " ofType {\n" + + " ...F" + (i + 1) + "\n" + + " }\n" + + " }\n"; + } + result += " fragment F" + depth + " on __Type {\n" + + " fields {\n" + + " type {\n" + + "name\n" + + " }\n" + + " }\n" + + "}\n"; + return result; + } + +} diff --git a/src/jmh/java/performance/ENFExtraLargePerformance.java b/src/jmh/java/performance/ENFExtraLargePerformance.java new file mode 100644 index 0000000000..ce8d3d6da4 --- /dev/null +++ b/src/jmh/java/performance/ENFExtraLargePerformance.java @@ -0,0 +1,68 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class ENFExtraLargePerformance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("extra-large-schema-1.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("extra-large-schema-1-query.graphql"); + document = Parser.parse(query); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkThroughput(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + private void runImpl(MyState myState, Blackhole blackhole) { + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); + blackhole.consume(executableNormalizedOperation); + } +} diff --git a/src/jmh/java/performance/LargeInMemoryQueryPerformance.java b/src/jmh/java/performance/LargeInMemoryQueryPerformance.java new file mode 100644 index 0000000000..502cc67b52 --- /dev/null +++ b/src/jmh/java/performance/LargeInMemoryQueryPerformance.java @@ -0,0 +1,140 @@ +package performance; + +import benchmark.BenchmarkUtils; +import graphql.GraphQL; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * This benchmark is an attempt to have a large in memory query that involves only sync work but lots of + * data fetching invocation + *

+ * It can also be run in a forever mode say if you want to connect a profiler to it say + */ +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class LargeInMemoryQueryPerformance { + + GraphQL graphQL; + volatile boolean shutDown; + + @Setup(Level.Trial) + public void setUp() { + shutDown = false; + graphQL = buildGraphQL(); + } + + @TearDown(Level.Trial) + public void tearDown() { + shutDown = true; + } + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public Object benchMarkSimpleQueriesThroughput() { + return runManyQueriesToCompletion(); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.SECONDS) + public Object benchMarkSimpleQueriesAvgTime() { + return runManyQueriesToCompletion(); + } + + + public static void main(String[] args) throws Exception { + // just to make sure it's all valid before testing + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("performance.LargeInMemoryQueryPerformance") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + + private static void runAtStartup() { + + LargeInMemoryQueryPerformance complexQueryBenchmark = new LargeInMemoryQueryPerformance(); + BenchmarkUtils.runInToolingForSomeTimeThenExit( + complexQueryBenchmark::setUp, + complexQueryBenchmark::runManyQueriesToCompletion, + complexQueryBenchmark::tearDown + + ); + } + + + private Object runManyQueriesToCompletion() { + return graphQL.execute( + "query {\n" + + "\n" + + " giveMeLargeResponse {\n" + + " someValue\n" + + " }\n" + + "}" + ); + } + + private static final List manyObjects = IntStream + .range(0, 10_000_000) + .mapToObj(i -> new SomeWrapper("value #" + i)) + .collect(Collectors.toList()); + + public static class SomeWrapper { + String someValue; + + public SomeWrapper(String someValue) { + this.someValue = someValue; + } + } + + private GraphQL buildGraphQL() { + TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse("\n" + + "type Query {\n" + + " giveMeLargeResponse: [SomeWrapper]\n" + + "}\n" + + "type SomeWrapper {\n" + + " someValue: String\n" + + "}\n" + ); + RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("giveMeLargeResponse", env -> manyObjects)) + .build(); + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(typeDefinitionRegistry, wiring); + return GraphQL.newGraphQL(schema).build(); + } +} diff --git a/src/jmh/java/performance/OverlappingFieldValidationPerformance.java b/src/jmh/java/performance/OverlappingFieldValidationPerformance.java new file mode 100644 index 0000000000..37fab1cf81 --- /dev/null +++ b/src/jmh/java/performance/OverlappingFieldValidationPerformance.java @@ -0,0 +1,246 @@ +package performance; + +import graphql.Assert; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.i18n.I18n; +import graphql.language.Document; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import graphql.validation.LanguageTraversal; +import graphql.validation.RulesVisitor; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationError; +import graphql.validation.ValidationErrorCollector; +import graphql.validation.rules.OverlappingFieldsCanBeMerged; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +import static graphql.Assert.assertTrue; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(2) +public class OverlappingFieldValidationPerformance { + + + static String schemaSdl = " type Query { viewer: Viewer } interface Abstract { field: Abstract leaf: Int } interface Abstract1 { field: Abstract leaf: Int } interface Abstract2 { field: Abstract leaf: Int }" + + " type Concrete1 implements Abstract1{ field: Abstract leaf: Int} " + + "type Concrete2 implements Abstract2{ field: Abstract leaf: Int} " + + "type Viewer { xingId: XingId } type XingId { firstName: String! lastName: String! }"; + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + GraphQLSchema schema2; + Document document; + + @Param({"100"}) + int size; + + Document overlapFrag; + Document overlapNoFrag; + Document noOverlapFrag; + Document noOverlapNoFrag; + Document repeatedFields; + Document deepAbstractConcrete; + + @Setup + public void setup() { + try { + overlapFrag = makeQuery(size, true, true); + overlapNoFrag = makeQuery(size, true, false); + noOverlapFrag = makeQuery(size, false, true); + noOverlapNoFrag = makeQuery(size, false, false); + repeatedFields = makeRepeatedFieldsQuery(size); + deepAbstractConcrete = makeDeepAbstractConcreteQuery(size); + + + schema2 = SchemaGenerator.createdMockedSchema(schemaSdl); + + String schemaString = PerformanceTestingUtils.loadResource("large-schema-4.graphqls"); + String query = PerformanceTestingUtils.loadResource("large-schema-4-query.graphql"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + document = Parser.parse(query); + + // make sure this is a valid query overall + GraphQL graphQL = GraphQL.newGraphQL(schema).build(); + ExecutionResult executionResult = graphQL.execute(query); + assertTrue(executionResult.getErrors().size() == 0); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void overlappingFieldValidationAvgTime(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void overlappingFieldValidationThroughput(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkRepeatedFields(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.repeatedFields)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkOverlapFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.overlapFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkOverlapNoFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.overlapNoFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkNoOverlapFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.noOverlapFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkNoOverlapNoFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.noOverlapNoFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkDeepAbstractConcrete(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.deepAbstractConcrete)); + } + + private List validateQuery(GraphQLSchema schema, Document document) { + ValidationErrorCollector errorCollector = new ValidationErrorCollector(); + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH); + ValidationContext validationContext = new ValidationContext(schema, document, i18n); + OverlappingFieldsCanBeMerged overlappingFieldsCanBeMerged = new OverlappingFieldsCanBeMerged(validationContext, errorCollector); + LanguageTraversal languageTraversal = new LanguageTraversal(); + languageTraversal.traverse(document, new RulesVisitor(validationContext, Collections.singletonList(overlappingFieldsCanBeMerged))); + Assert.assertTrue(errorCollector.getErrors().size() == 0); + return errorCollector.getErrors(); + } + + + private static Document makeQuery(int size, boolean overlapping, boolean fragments) { + if (fragments) { + return makeQueryWithFragments(size, overlapping); + } else { + return makeQueryWithoutFragments(size, overlapping); + } + } + + private static Document makeRepeatedFieldsQuery(int size) { + StringBuilder b = new StringBuilder(); + + b.append(" query testQuery { viewer { xingId {"); + + b.append("firstName\n".repeat(Math.max(0, size))); + + b.append("} } }"); + + return Parser.parse(b.toString()); + } + + + private static Document makeQueryWithFragments(int size, boolean overlapping) { + StringBuilder b = new StringBuilder(); + + for (int i = 1; i <= size; i++) { + if (overlapping) { + b.append(" fragment mergeIdenticalFields" + i + " on Query {viewer { xingId { firstName lastName }}}"); + } else { + b.append("fragment mergeIdenticalFields" + i + " on Query {viewer" + i + " { xingId" + i + " { firstName" + i + " lastName" + i + " } }}"); + } + + b.append("\n\n"); + } + + b.append("query testQuery {"); + for (int i = 1; i <= size; i++) { + b.append("...mergeIdenticalFields" + i + "\n"); + } + b.append("}"); + return Parser.parse(b.toString()); + } + + private static Document makeQueryWithoutFragments(int size, boolean overlapping) { + StringBuilder b = new StringBuilder(); + + b.append("query testQuery {"); + + for (int i = 1; i <= size; i++) { + if (overlapping) { + b.append(" viewer { xingId { firstName } } "); + } else { + b.append(" viewer" + i + " { xingId" + i + " { firstName" + i + " } } "); + } + + b.append("\n\n"); + } + + b.append("}"); + + return Parser.parse(b.toString()); + } + + private static Document makeDeepAbstractConcreteQuery(int depth) { + StringBuilder q = new StringBuilder(); + + q.append("fragment multiply on Whatever { field { " + + "... on Abstract1 { field { leaf } } " + + "... on Abstract2 { field { leaf } } " + + "... on Concrete1 { field { leaf } } " + + "... on Concrete2 { field { leaf } } } } " + + "query DeepAbstractConcrete { "); + + for (int i = 1; i <= depth; i++) { + q.append("field { ...multiply "); + } + + for (int i = 1; i <= depth; i++) { + q.append(" }"); + } + + q.append("\n}"); + + return Parser.parse(q.toString()); + } +} diff --git a/src/jmh/java/performance/PerformanceTestingUtils.java b/src/jmh/java/performance/PerformanceTestingUtils.java new file mode 100644 index 0000000000..9e05fd661c --- /dev/null +++ b/src/jmh/java/performance/PerformanceTestingUtils.java @@ -0,0 +1,84 @@ +package performance; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.Callable; + +public class PerformanceTestingUtils { + + @SuppressWarnings("UnstableApiUsage") + static String loadResource(String name) { + return asRTE(() -> { + URL resource = PerformanceTestingUtils.class.getClassLoader().getResource(name); + if (resource == null) { + throw new IllegalArgumentException("missing resource: " + name); + } + byte[] bytes; + try (InputStream inputStream = resource.openStream()) { + bytes = inputStream.readAllBytes(); + } + return new String(bytes, Charset.defaultCharset()); + }); + } + + static T asRTE(Callable callable) { + try { + return callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static void runInToolingForSomeTimeThenExit(Runnable setup, Runnable r, Runnable tearDown) { + int runForMillis = getRunForMillis(); + if (runForMillis <= 0) { + System.out.print("'runForMillis' environment var is not set - continuing \n"); + return; + } + System.out.printf("Running initial code in some tooling - runForMillis=%d \n", runForMillis); + System.out.print("Get your tooling in order and press enter..."); + readLine(); + System.out.print("Lets go...\n"); + setup.run(); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss"); + long now, then = System.currentTimeMillis(); + do { + now = System.currentTimeMillis(); + long msLeft = runForMillis - (now - then); + System.out.printf("\t%s Running in loop... %s ms left\n", dtf.format(LocalDateTime.now()), msLeft); + r.run(); + now = System.currentTimeMillis(); + } while ((now - then) < runForMillis); + + tearDown.run(); + + System.out.printf("This ran for %d millis. Exiting...\n", System.currentTimeMillis() - then); + System.exit(0); + } + + private static void readLine() { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + try { + br.readLine(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static int getRunForMillis() { + String runFor = System.getenv("runForMillis"); + try { + return Integer.parseInt(runFor); + } catch (NumberFormatException e) { + return -1; + } + } + +} diff --git a/src/main/antlr/Graphql.g4 b/src/main/antlr/Graphql.g4 index 2e4ee2601a..e3dd7f4cda 100644 --- a/src/main/antlr/Graphql.g4 +++ b/src/main/antlr/Graphql.g4 @@ -5,6 +5,20 @@ import GraphqlSDL, GraphqlOperation, GraphqlCommon; package graphql.parser.antlr; } +@lexer::members { + public boolean isDigit(int c) { + return c >= '0' && c <= '9'; + } + public boolean isNameStart(int c) { + return '_' == c || + (c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z'); + } + public boolean isDot(int c) { + return '.' == c; + } +} + document : definition+; diff --git a/src/main/antlr/GraphqlCommon.g4 b/src/main/antlr/GraphqlCommon.g4 index ed7f579128..5ee4110a77 100644 --- a/src/main/antlr/GraphqlCommon.g4 +++ b/src/main/antlr/GraphqlCommon.g4 @@ -1,8 +1,9 @@ grammar GraphqlCommon; + operationType : SUBSCRIPTION | MUTATION | QUERY; -description : stringValue; +description : StringValue; enumValue : enumValueName ; @@ -28,14 +29,14 @@ arguments : '(' argument+ ')'; argument : name ':' valueWithVariable; -baseName: NAME | FRAGMENT | QUERY | MUTATION | SUBSCRIPTION | SCHEMA | SCALAR | TYPE | INTERFACE | IMPLEMENTS | ENUM | UNION | INPUT | EXTEND | DIRECTIVE; +baseName: NAME | FRAGMENT | QUERY | MUTATION | SUBSCRIPTION | SCHEMA | SCALAR | TYPE | INTERFACE | IMPLEMENTS | ENUM | UNION | INPUT | EXTEND | DIRECTIVE | REPEATABLE; fragmentName: baseName | BooleanValue | NullValue; enumValueName: baseName | ON_KEYWORD; name: baseName | BooleanValue | NullValue | ON_KEYWORD; value : -stringValue | +StringValue | IntValue | FloatValue | BooleanValue | @@ -47,7 +48,7 @@ objectValue; valueWithVariable : variable | -stringValue | +StringValue | IntValue | FloatValue | BooleanValue | @@ -61,10 +62,6 @@ variable : '$' name; defaultValue : '=' value; -stringValue - : TripleQuotedStringValue - | StringValue - ; type : typeName | listType | nonNullType; typeName : name; @@ -91,55 +88,58 @@ INPUT: 'input'; EXTEND: 'extend'; DIRECTIVE: 'directive'; ON_KEYWORD: 'on'; +REPEATABLE: 'repeatable'; NAME: [_A-Za-z][_0-9A-Za-z]*; -IntValue : Sign? IntegerPart; - -FloatValue : Sign? IntegerPart ('.' Digit+)? ExponentPart?; - -Sign : '-'; - -IntegerPart : '0' | NonZeroDigit | NonZeroDigit Digit+; - -NonZeroDigit: '1'.. '9'; - -ExponentPart : ('e'|'E') ('+'|'-')? Digit+; - -Digit : '0'..'9'; - - -StringValue - : '"' ( ~["\\\n\r\u2028\u2029] | EscapedChar )* '"' - ; - -TripleQuotedStringValue - : '"""' TripleQuotedStringPart? '"""' - ; - - -// Fragments never become a token of their own: they are only used inside other lexer rules -fragment TripleQuotedStringPart : ( EscapedTripleQuote | ExtendedSourceCharacter )+?; -fragment EscapedTripleQuote : '\\"""'; - -// this is currently not covered by the spec because we allow all unicode chars -// u0009 = \t Horizontal tab -// u000a = \n line feed -// u000d = \r carriage return -// u0020 = space -fragment ExtendedSourceCharacter :[\u0009\u000A\u000D\u0020-\u{10FFFF}]; - -fragment ExtendedSourceCharacterWithoutLineFeed :[\u0009\u0020-\u{10FFFF}]; - -// this is the spec definition -// fragment SourceCharacter :[\u0009\u000A\u000D\u0020-\uFFFF]; - - -Comment: '#' ExtendedSourceCharacterWithoutLineFeed* -> channel(2); -fragment EscapedChar : '\\' (["\\/bfnrt] | Unicode) ; -fragment Unicode : 'u' Hex Hex Hex Hex ; -fragment Hex : [0-9a-fA-F] ; +// Int Value +IntValue : IntegerPart { !isDigit(_input.LA(1)) && !isDot(_input.LA(1)) && !isNameStart(_input.LA(1)) }?; +fragment IntegerPart : NegativeSign? '0' | NegativeSign? NonZeroDigit Digit*; +fragment NegativeSign : '-'; +fragment NonZeroDigit: '1'..'9'; + +// Float Value +FloatValue : ((IntegerPart FractionalPart ExponentPart) { !isDigit(_input.LA(1)) && !isDot(_input.LA(1)) && !isNameStart(_input.LA(1)) }?) | + ((IntegerPart FractionalPart ) { !isDigit(_input.LA(1)) && !isDot(_input.LA(1)) && !isNameStart(_input.LA(1)) }?) | + ((IntegerPart ExponentPart) { !isDigit(_input.LA(1)) && !isDot(_input.LA(1)) && !isNameStart(_input.LA(1)) }?); +fragment FractionalPart: '.' Digit+; +fragment ExponentPart : ExponentIndicator Sign? Digit+; +fragment ExponentIndicator: 'e' | 'E'; +fragment Sign: '+'|'-'; +fragment Digit : '0'..'9'; + +// StringValue +StringValue: +'""' { _input.LA(1) != '"'}? | +'"' StringCharacter+ '"' | +'"""' BlockStringCharacter*? '"""'; + +fragment BlockStringCharacter: +'\\"""'| +SourceCharacter; + +// this is SourceCharacter without +// \u000a New line +// \u000d Carriage return +// \u0022 '"' +// \u005c '\' +fragment StringCharacter: +([\u0000-\u0009] | [\u000b\u000c\u000e-\u0021] | [\u0023-\u005b] | [\u005d-\ud7ff] | [\ue000-\u{10ffff}]) | +'\\u' EscapedUnicode | +'\\' EscapedCharacter; + +fragment EscapedCharacter : ["\\/bfnrt]; +fragment EscapedUnicode : Hex Hex Hex Hex | '{' Hex+ '}'; +fragment Hex : [0-9a-fA-F]; + +// this is the spec definition. Excludes surrogate leading and trailing values. +fragment SourceCharacter : [\u0000-\ud7ff] | [\ue000-\u{10ffff}]; + +// CommentChar +fragment SourceCharacterWithoutLineFeed : [\u0000-\u0009] | [\u000b\u000c\u000e-\ud7ff] | [\ue000-\u{10ffff}]; + +Comment: '#' SourceCharacterWithoutLineFeed* -> channel(2); LF: [\n] -> channel(3); CR: [\r] -> channel(3); diff --git a/src/main/antlr/GraphqlOperation.g4 b/src/main/antlr/GraphqlOperation.g4 index b0fa93369b..e5c862940a 100644 --- a/src/main/antlr/GraphqlOperation.g4 +++ b/src/main/antlr/GraphqlOperation.g4 @@ -7,7 +7,7 @@ operationType name? variableDefinitions? directives? selectionSet; variableDefinitions : '(' variableDefinition+ ')'; -variableDefinition : variable ':' type defaultValue?; +variableDefinition : variable ':' type defaultValue? directives?; selectionSet : '{' selection+ '}'; diff --git a/src/main/antlr/GraphqlSDL.g4 b/src/main/antlr/GraphqlSDL.g4 index fd0bf349ac..9c4ef2a4f1 100644 --- a/src/main/antlr/GraphqlSDL.g4 +++ b/src/main/antlr/GraphqlSDL.g4 @@ -1,7 +1,7 @@ grammar GraphqlSDL; import GraphqlCommon; -typeSystemDefinition: description? +typeSystemDefinition: schemaDefinition | typeDefinition | directiveDefinition @@ -16,7 +16,7 @@ schemaDefinition : description? SCHEMA directives? '{' operationTypeDefinition+ schemaExtension : EXTEND SCHEMA directives? '{' operationTypeDefinition+ '}' | - EXTEND SCHEMA directives+ + EXTEND SCHEMA directives ; operationTypeDefinition : description? operationType ':' typeName; @@ -59,7 +59,7 @@ objectTypeExtensionDefinition : ; implementsInterfaces : - IMPLEMENTS '&'? typeName+ | + IMPLEMENTS '&'? typeName | implementsInterfaces '&' typeName ; fieldsDefinition : '{' fieldDefinition* '}'; @@ -72,11 +72,12 @@ argumentsDefinition : '(' inputValueDefinition+ ')'; inputValueDefinition : description? name ':' type defaultValue? directives?; -interfaceTypeDefinition : description? INTERFACE name directives? fieldsDefinition?; +interfaceTypeDefinition : description? INTERFACE name implementsInterfaces? directives? fieldsDefinition?; interfaceTypeExtensionDefinition : - EXTEND INTERFACE name directives? extensionFieldsDefinition | - EXTEND INTERFACE name directives emptyParentheses? + EXTEND INTERFACE name implementsInterfaces? directives? extensionFieldsDefinition | + EXTEND INTERFACE name implementsInterfaces? directives emptyParentheses? | + EXTEND INTERFACE name implementsInterfaces ; @@ -120,11 +121,11 @@ inputObjectValueDefinitions : '{' inputValueDefinition* '}'; extensionInputObjectValueDefinitions : '{' inputValueDefinition+ '}'; -directiveDefinition : description? DIRECTIVE '@' name argumentsDefinition? 'on' directiveLocations; +directiveDefinition : description? DIRECTIVE '@' name argumentsDefinition? REPEATABLE? ON_KEYWORD directiveLocations; directiveLocation : name; directiveLocations : -directiveLocation | +'|'? directiveLocation | directiveLocations '|' directiveLocation ; diff --git a/src/main/java/graphql/Assert.java b/src/main/java/graphql/Assert.java index 48629fbd70..8a29252782 100644 --- a/src/main/java/graphql/Assert.java +++ b/src/main/java/graphql/Assert.java @@ -1,97 +1,231 @@ package graphql; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + import java.util.Collection; +import java.util.function.Supplier; +import java.util.regex.Pattern; import static java.lang.String.format; @SuppressWarnings("TypeParameterUnusedInFormals") @Internal +@NullMarked public class Assert { - public static T assertNotNull(T object, String format, Object... args) { + public static T assertNotNullWithNPE(T object, Supplier msg) { if (object != null) { return object; } - throw new AssertException(format(format, args)); + throw new NullPointerException(msg.get()); + } + + public static T assertNotNullWithNPE(T object, String constantMsg) { + if (object != null) { + return object; + } + throw new NullPointerException(constantMsg); + } + + @Contract("null -> fail") + public static T assertNotNull(@Nullable T object) { + if (object != null) { + return object; + } + return throwAssert("Object required to be not null"); } - public static T assertNotNullWithNPE(T object, String format, Object... args) { + @Contract("null,_ -> fail") + public static T assertNotNull(@Nullable T object, Supplier msg) { if (object != null) { return object; } - throw new NullPointerException(format(format, args)); + return throwAssert(msg.get()); } - public static T assertNotNull(T object) { + @Contract("null,_ -> fail") + public static T assertNotNull(@Nullable T object, String constantMsg) { if (object != null) { return object; } - throw new AssertException("Object required to be not null"); + return throwAssert(constantMsg); } - public static void assertNull(T object, String format, Object... args) { + @Contract("null,_,_ -> fail") + public static T assertNotNull(@Nullable T object, String msgFmt, Object arg1) { + if (object != null) { + return object; + } + return throwAssert(msgFmt, arg1); + } + + @Contract("null,_,_,_ -> fail") + public static T assertNotNull(@Nullable T object, String msgFmt, Object arg1, Object arg2) { + if (object != null) { + return object; + } + return throwAssert(msgFmt, arg1, arg2); + } + + @Contract("null,_,_,_,_ -> fail") + public static T assertNotNull(@Nullable T object, String msgFmt, Object arg1, Object arg2, Object arg3) { + if (object != null) { + return object; + } + return throwAssert(msgFmt, arg1, arg2, arg3); + } + + + @Contract("!null,_ -> fail") + public static void assertNull(@Nullable T object, Supplier msg) { if (object == null) { return; } - throw new AssertException(format(format, args)); + throwAssert(msg.get()); + } + + @Contract("!null,_ -> fail") + public static void assertNull(@Nullable T object, String constantMsg) { + if (object == null) { + return; + } + throwAssert(constantMsg); } - public static void assertNull(T object) { + @Contract("!null -> fail") + public static void assertNull(@Nullable Object object) { if (object == null) { return; } - throw new AssertException("Object required to be null"); + throwAssert("Object required to be null"); } + @Contract("-> fail") public static T assertNeverCalled() { - throw new AssertException("Should never been called"); + return throwAssert("Should never been called"); } + @Contract("_,_-> fail") public static T assertShouldNeverHappen(String format, Object... args) { - throw new AssertException("Internal error: should never happen: " + format(format, args)); + return throwAssert("Internal error: should never happen: %s", format(format, args)); } + @Contract("-> fail") public static T assertShouldNeverHappen() { - throw new AssertException("Internal error: should never happen"); + return throwAssert("Internal error: should never happen"); } public static Collection assertNotEmpty(Collection collection) { if (collection == null || collection.isEmpty()) { - throw new AssertException("collection must be not null and not empty"); + throwAssert("collection must be not null and not empty"); } return collection; } - public static Collection assertNotEmpty(Collection collection, String format, Object... args) { + // @Contract("null,_-> fail") + public static Collection assertNotEmpty(Collection collection, Supplier msg) { if (collection == null || collection.isEmpty()) { - throw new AssertException(format(format, args)); + throwAssert(msg.get()); } return collection; } - public static void assertTrue(boolean condition, String format, Object... args) { + public static Collection assertNotEmpty(Collection collection, String constantMsg) { + if (collection == null || collection.isEmpty()) { + throwAssert(constantMsg); + } + return collection; + } + + public static void assertTrue(boolean condition, Supplier msg) { if (condition) { return; } - throw new AssertException(format(format, args)); + throwAssert(msg.get()); } public static void assertTrue(boolean condition) { if (condition) { return; } - throw new AssertException("condition expected to be true"); + throwAssert("condition expected to be true"); + } + + public static void assertTrue(boolean condition, String constantMsg) { + if (condition) { + return; + } + throwAssert(constantMsg); } - public static void assertFalse(boolean condition, String format, Object... args) { + public static void assertTrue(boolean condition, String msgFmt, Object arg1) { + if (condition) { + return; + } + throwAssert(msgFmt, arg1); + } + + public static void assertTrue(boolean condition, String msgFmt, Object arg1, Object arg2) { + if (condition) { + return; + } + throwAssert(msgFmt, arg1, arg2); + } + + public static void assertTrue(boolean condition, String msgFmt, Object arg1, Object arg2, Object arg3) { + if (condition) { + return; + } + throwAssert(msgFmt, arg1, arg2, arg3); + } + + public static void assertFalse(boolean condition, Supplier msg) { if (!condition) { return; } - throw new AssertException(format(format, args)); + throwAssert(msg.get()); + } + + public static void assertFalse(boolean condition) { + if (!condition) { + return; + } + throwAssert("condition expected to be false"); + } + + public static void assertFalse(boolean condition, String constantMsg) { + if (!condition) { + return; + } + throwAssert(constantMsg); + } + + public static void assertFalse(boolean condition, String msgFmt, Object arg1) { + if (!condition) { + return; + } + throwAssert(msgFmt, arg1); + } + + public static void assertFalse(boolean condition, String msgFmt, Object arg1, Object arg2) { + if (!condition) { + return; + } + throwAssert(msgFmt, arg1, arg2); + } + + public static void assertFalse(boolean condition, String msgFmt, Object arg1, Object arg2, Object arg3) { + if (!condition) { + return; + } + throwAssert(msgFmt, arg1, arg2, arg3); } private static final String invalidNameErrorMessage = "Name must be non-null, non-empty and match [_A-Za-z][_0-9A-Za-z]* - was '%s'"; + private static final Pattern validNamePattern = Pattern.compile("[_A-Za-z][_0-9A-Za-z]*"); + /** * Validates that the Lexical token name matches the current spec. * currently non null, non empty, @@ -101,10 +235,13 @@ public static void assertFalse(boolean condition, String format, Object... args) * @return the name if valid, or AssertException if invalid. */ public static String assertValidName(String name) { - if (name != null && !name.isEmpty() && name.matches("[_A-Za-z][_0-9A-Za-z]*")) { + if (name != null && !name.isEmpty() && validNamePattern.matcher(name).matches()) { return name; } - throw new AssertException(String.format(invalidNameErrorMessage, name)); + return throwAssert(invalidNameErrorMessage, name); } + private static T throwAssert(String format, Object... args) { + throw new AssertException(format(format, args)); + } } diff --git a/src/main/java/graphql/Contract.java b/src/main/java/graphql/Contract.java new file mode 100644 index 0000000000..93ba900bf2 --- /dev/null +++ b/src/main/java/graphql/Contract.java @@ -0,0 +1,27 @@ +package graphql; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +/** + * Custom contract annotation used for jspecify and NullAway checks. + * + * This is the same as Spring does: we don't want any additional dependencies, therefore we define our own Contract annotation. + * + * @see Spring Framework Contract + * @see org.jetbrains.annotations.Contract + * @see + * NullAway custom contract annotations + */ +@Documented +@Target(ElementType.METHOD) +@Internal +public @interface Contract { + + /** + * Describing the contract between call arguments and the returned value. + */ + String value() default ""; + +} diff --git a/src/main/java/graphql/DeferredExecutionResult.java b/src/main/java/graphql/DeferredExecutionResult.java deleted file mode 100644 index 18eb23c74a..0000000000 --- a/src/main/java/graphql/DeferredExecutionResult.java +++ /dev/null @@ -1,16 +0,0 @@ -package graphql; - -import java.util.List; - -/** - * Results that come back from @defer fields have an extra path property that tells you where - * that deferred result came in the original query - */ -@PublicApi -public interface DeferredExecutionResult extends ExecutionResult { - - /** - * @return the execution path of this deferred result in the original query - */ - List getPath(); -} diff --git a/src/main/java/graphql/DeferredExecutionResultImpl.java b/src/main/java/graphql/DeferredExecutionResultImpl.java deleted file mode 100644 index c47a9a5312..0000000000 --- a/src/main/java/graphql/DeferredExecutionResultImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -package graphql; - -import graphql.execution.ExecutionPath; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import static graphql.Assert.assertNotNull; - -/** - * Results that come back from @defer fields have an extra path property that tells you where - * that deferred result came in the original query - */ -@PublicApi -public class DeferredExecutionResultImpl extends ExecutionResultImpl implements DeferredExecutionResult { - - private final List path; - - private DeferredExecutionResultImpl(List path, ExecutionResultImpl executionResult) { - super(executionResult); - this.path = assertNotNull(path); - } - - /** - * @return the execution path of this deferred result in the original query - */ - public List getPath() { - return path; - } - - @Override - public Map toSpecification() { - Map map = new LinkedHashMap<>(super.toSpecification()); - map.put("path", path); - return map; - } - - public static Builder newDeferredExecutionResult() { - return new Builder(); - } - - public static class Builder { - private List path = Collections.emptyList(); - private ExecutionResultImpl.Builder builder = ExecutionResultImpl.newExecutionResult(); - - public Builder path(ExecutionPath path) { - this.path = assertNotNull(path).toList(); - return this; - } - - public Builder from(ExecutionResult executionResult) { - builder.from((ExecutionResultImpl) executionResult); - return this; - } - - public Builder addErrors(List errors) { - builder.addErrors(errors); - return this; - } - - public DeferredExecutionResult build() { - ExecutionResultImpl build = builder.build(); - return new DeferredExecutionResultImpl(path, build); - } - } -} diff --git a/src/main/java/graphql/Directives.java b/src/main/java/graphql/Directives.java index d8e1acfacc..37f2b28550 100644 --- a/src/main/java/graphql/Directives.java +++ b/src/main/java/graphql/Directives.java @@ -1,74 +1,275 @@ package graphql; +import graphql.language.BooleanValue; +import graphql.language.Description; +import graphql.language.DirectiveDefinition; +import graphql.language.StringValue; import graphql.schema.GraphQLDirective; +import java.util.concurrent.atomic.AtomicBoolean; + import static graphql.Scalars.GraphQLBoolean; import static graphql.Scalars.GraphQLString; +import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.ENUM_VALUE; import static graphql.introspection.Introspection.DirectiveLocation.FIELD; import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.FRAGMENT_SPREAD; import static graphql.introspection.Introspection.DirectiveLocation.INLINE_FRAGMENT; +import static graphql.introspection.Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION; +import static graphql.introspection.Introspection.DirectiveLocation.INPUT_OBJECT; +import static graphql.introspection.Introspection.DirectiveLocation.MUTATION; +import static graphql.introspection.Introspection.DirectiveLocation.QUERY; +import static graphql.introspection.Introspection.DirectiveLocation.SCALAR; +import static graphql.introspection.Introspection.DirectiveLocation.SUBSCRIPTION; +import static graphql.language.DirectiveLocation.newDirectiveLocation; +import static graphql.language.InputValueDefinition.newInputValueDefinition; +import static graphql.language.NonNullType.newNonNullType; +import static graphql.language.TypeName.newTypeName; import static graphql.schema.GraphQLArgument.newArgument; import static graphql.schema.GraphQLNonNull.nonNull; /** * The directives that are understood by graphql-java */ +@PublicApi public class Directives { + private static final String DEPRECATED = "deprecated"; + private static final String INCLUDE = "include"; + private static final String SKIP = "skip"; + private static final String SPECIFIED_BY = "specifiedBy"; + private static final String ONE_OF = "oneOf"; + private static final String DEFER = "defer"; + private static final String EXPERIMENTAL_DISABLE_ERROR_PROPAGATION = "experimental_disableErrorPropagation"; + + public static final DirectiveDefinition DEPRECATED_DIRECTIVE_DEFINITION; + public static final DirectiveDefinition INCLUDE_DIRECTIVE_DEFINITION; + public static final DirectiveDefinition SKIP_DIRECTIVE_DEFINITION; + public static final DirectiveDefinition SPECIFIED_BY_DIRECTIVE_DEFINITION; + @ExperimentalApi + public static final DirectiveDefinition ONE_OF_DIRECTIVE_DEFINITION; + @ExperimentalApi + public static final DirectiveDefinition DEFER_DIRECTIVE_DEFINITION; + @ExperimentalApi + public static final DirectiveDefinition EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION; + + public static final String BOOLEAN = "Boolean"; + public static final String STRING = "String"; + public static final String NO_LONGER_SUPPORTED = "No longer supported"; + + static { + DEPRECATED_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(DEPRECATED) + .directiveLocation(newDirectiveLocation().name(FIELD_DEFINITION.name()).build()) + .directiveLocation(newDirectiveLocation().name(ENUM_VALUE.name()).build()) + .directiveLocation(newDirectiveLocation().name(ARGUMENT_DEFINITION.name()).build()) + .directiveLocation(newDirectiveLocation().name(INPUT_FIELD_DEFINITION.name()).build()) + .description(createDescription("Marks the field, argument, input field or enum value as deprecated")) + .inputValueDefinition( + newInputValueDefinition() + .name("reason") + .description(createDescription("The reason for the deprecation")) + .type(newNonNullType(newTypeName().name(STRING).build()).build()) + .defaultValue(StringValue.newStringValue().value(NO_LONGER_SUPPORTED).build()) + .build()) + .build(); + + INCLUDE_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(INCLUDE) + .directiveLocation(newDirectiveLocation().name(FRAGMENT_SPREAD.name()).build()) + .directiveLocation(newDirectiveLocation().name(INLINE_FRAGMENT.name()).build()) + .directiveLocation(newDirectiveLocation().name(FIELD.name()).build()) + .description(createDescription("Directs the executor to include this field or fragment only when the `if` argument is true")) + .inputValueDefinition( + newInputValueDefinition() + .name("if") + .description(createDescription("Included when true.")) + .type(newNonNullType(newTypeName().name(BOOLEAN).build()).build()) + .build()) + .build(); + + SKIP_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(SKIP) + .directiveLocation(newDirectiveLocation().name(FRAGMENT_SPREAD.name()).build()) + .directiveLocation(newDirectiveLocation().name(INLINE_FRAGMENT.name()).build()) + .directiveLocation(newDirectiveLocation().name(FIELD.name()).build()) + .description(createDescription("Directs the executor to skip this field or fragment when the `if` argument is true.")) + .inputValueDefinition( + newInputValueDefinition() + .name("if") + .description(createDescription("Skipped when true.")) + .type(newNonNullType(newTypeName().name(BOOLEAN).build()).build()) + .build()) + .build(); + + SPECIFIED_BY_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(SPECIFIED_BY) + .directiveLocation(newDirectiveLocation().name(SCALAR.name()).build()) + .description(createDescription("Exposes a URL that specifies the behaviour of this scalar.")) + .inputValueDefinition( + newInputValueDefinition() + .name("url") + .description(createDescription("The URL that specifies the behaviour of this scalar.")) + .type(newNonNullType(newTypeName().name(STRING).build()).build()) + .build()) + .build(); + + ONE_OF_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(ONE_OF) + .directiveLocation(newDirectiveLocation().name(INPUT_OBJECT.name()).build()) + .description(createDescription("Indicates an Input Object is a OneOf Input Object.")) + .build(); + + DEFER_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(DEFER) + .directiveLocation(newDirectiveLocation().name(FRAGMENT_SPREAD.name()).build()) + .directiveLocation(newDirectiveLocation().name(INLINE_FRAGMENT.name()).build()) + .description(createDescription("This directive allows results to be deferred during execution")) + .inputValueDefinition( + newInputValueDefinition() + .name("if") + .description(createDescription("Deferred behaviour is controlled by this argument")) + .type(newNonNullType(newTypeName().name(BOOLEAN).build()).build()) + .defaultValue(BooleanValue.newBooleanValue(true).build()) + .build()) + .inputValueDefinition( + newInputValueDefinition() + .name("label") + .description(createDescription("A unique label that represents the fragment being deferred")) + .type(newTypeName().name(STRING).build()) + .build()) + .build(); + EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION) + .directiveLocation(newDirectiveLocation().name(QUERY.name()).build()) + .directiveLocation(newDirectiveLocation().name(MUTATION.name()).build()) + .directiveLocation(newDirectiveLocation().name(SUBSCRIPTION.name()).build()) + .description(createDescription("This directive allows returning null in non-null positions that have an associated error")) + .build(); + } + + /** + * The @defer directive can be used to defer sending data for a fragment until later in the query. + * This is an opt-in directive that is not available unless it is explicitly put into the schema. + *

+ * This implementation is based on the state of Defer/Stream PR + * More specifically at the state of this + * commit + *

+ * The execution behaviour should match what we get from running Apollo Server 4.9.5 with graphql-js v17.0.0-alpha.2 + */ + @ExperimentalApi + public static final GraphQLDirective DeferDirective = GraphQLDirective.newDirective() + .name(DEFER) + .description("This directive allows results to be deferred during execution") + .validLocations(FRAGMENT_SPREAD, INLINE_FRAGMENT) + .argument(newArgument() + .name("if") + .type(nonNull(GraphQLBoolean)) + .description("Deferred behaviour is controlled by this argument") + .defaultValueLiteral(BooleanValue.newBooleanValue(true).build()) + ) + .argument(newArgument() + .name("label") + .type(GraphQLString) + .description("A unique label that represents the fragment being deferred") + ) + .definition(DEFER_DIRECTIVE_DEFINITION) + .build(); + public static final GraphQLDirective IncludeDirective = GraphQLDirective.newDirective() - .name("include") + .name(INCLUDE) .description("Directs the executor to include this field or fragment only when the `if` argument is true") .argument(newArgument() .name("if") .type(nonNull(GraphQLBoolean)) .description("Included when true.")) .validLocations(FRAGMENT_SPREAD, INLINE_FRAGMENT, FIELD) + .definition(INCLUDE_DIRECTIVE_DEFINITION) .build(); public static final GraphQLDirective SkipDirective = GraphQLDirective.newDirective() - .name("skip") - .description("Directs the executor to skip this field or fragment when the `if`'argument is true.") + .name(SKIP) + .description("Directs the executor to skip this field or fragment when the `if` argument is true.") .argument(newArgument() .name("if") .type(nonNull(GraphQLBoolean)) .description("Skipped when true.")) .validLocations(FRAGMENT_SPREAD, INLINE_FRAGMENT, FIELD) + .definition(SKIP_DIRECTIVE_DEFINITION) .build(); - /** - * The @defer directive can be used to defer sending data for a field till later in the query. This is an opt in - * directive that is not available unless it is explicitly put into the schema. - */ - public static final GraphQLDirective DeferDirective = GraphQLDirective.newDirective() - .name("defer") - .description("This directive allows results to be deferred during execution") - .argument(newArgument() - .name("if") - .type(nonNull(GraphQLBoolean)) - .description("Deferred behaviour is controlled by this argument") - .defaultValue(true) - ) - .validLocations(FIELD) - .build(); /** * The "deprecated" directive is special and is always available in a graphql schema - * - * See https://graphql.github.io/graphql-spec/June2018/#sec--deprecated + *

+ * See the GraphQL specification for @deprecated */ public static final GraphQLDirective DeprecatedDirective = GraphQLDirective.newDirective() - .name("deprecated") - .description("Marks the field or enum value as deprecated") + .name(DEPRECATED) + .description("Marks the field, argument, input field or enum value as deprecated") .argument(newArgument() .name("reason") .type(nonNull(GraphQLString)) - .defaultValue("No longer supported") + .defaultValueProgrammatic(NO_LONGER_SUPPORTED) .description("The reason for the deprecation")) - .validLocations(FIELD_DEFINITION, ENUM_VALUE) + .validLocations(FIELD_DEFINITION, ENUM_VALUE, ARGUMENT_DEFINITION, INPUT_FIELD_DEFINITION) + .definition(DEPRECATED_DIRECTIVE_DEFINITION) .build(); + /** + * The "specifiedBy" directive allows to provide a specification URL for a Scalar + */ + public static final GraphQLDirective SpecifiedByDirective = GraphQLDirective.newDirective() + .name(SPECIFIED_BY) + .description("Exposes a URL that specifies the behaviour of this scalar.") + .argument(newArgument() + .name("url") + .type(nonNull(GraphQLString)) + .description("The URL that specifies the behaviour of this scalar.")) + .validLocations(SCALAR) + .definition(SPECIFIED_BY_DIRECTIVE_DEFINITION) + .build(); + @ExperimentalApi + public static final GraphQLDirective OneOfDirective = GraphQLDirective.newDirective() + .name(ONE_OF) + .description("Indicates an Input Object is a OneOf Input Object.") + .validLocations(INPUT_OBJECT) + .definition(ONE_OF_DIRECTIVE_DEFINITION) + .build(); + + @ExperimentalApi + public static final GraphQLDirective ExperimentalDisableErrorPropagationDirective = GraphQLDirective.newDirective() + .name(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION) + .description("This directive disables error propagation when a non nullable field returns null for the given operation.") + .validLocations(QUERY, MUTATION, SUBSCRIPTION) + .definition(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION) + .build(); + + private static Description createDescription(String s) { + return new Description(s, null, false); + } + + private static final AtomicBoolean EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED = new AtomicBoolean(true); + + /** + * This can be used to get the state the `@experimental_disableErrorPropagation` directive support on a JVM wide basis . + * @return true if the `@experimental_disableErrorPropagation` directive will be respected + */ + public static boolean isExperimentalDisableErrorPropagationDirectiveEnabled() { + return EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED.get(); + } + + /** + * This can be used to disable the `@experimental_disableErrorPropagation` directive support on a JVM wide basis in case your server + * implementation does NOT want to act on this directive ever. + * + * @param flag the desired state of the flag + */ + public static void setExperimentalDisableErrorPropagationEnabled(boolean flag) { + EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED.set(flag); + } } diff --git a/src/main/java/graphql/DirectivesUtil.java b/src/main/java/graphql/DirectivesUtil.java index 39abe7dbed..a618489f85 100644 --- a/src/main/java/graphql/DirectivesUtil.java +++ b/src/main/java/graphql/DirectivesUtil.java @@ -1,26 +1,207 @@ package graphql; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.schema.GraphQLAppliedDirective; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; import graphql.util.FpKit; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; +import java.util.StringJoiner; +import java.util.stream.Collectors; + +import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static java.util.stream.Collectors.toSet; @Internal public class DirectivesUtil { - public static Map directivesByName(List directiveList) { - return FpKit.getByName(directiveList, GraphQLDirective::getName, FpKit.mergeFirst()); + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static Map nonRepeatableDirectivesByName(List directives) { + // filter the repeatable directives + List singletonDirectives = directives.stream() + .filter(d -> !d.isRepeatable()).collect(Collectors.toList()); + + return FpKit.getByName(singletonDirectives, GraphQLDirective::getName); } - public static Optional directiveWithArg(List directiveList, String directiveName, String argumentName) { - GraphQLDirective directive = directivesByName(directiveList).get(directiveName); + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static Map> allDirectivesByName(List directives) { + + return ImmutableMap.copyOf(FpKit.groupingBy(directives, GraphQLDirective::getName)); + } + + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static Optional directiveWithArg(List directives, String directiveName, String argumentName) { + GraphQLDirective directive = nonRepeatableDirectivesByName(directives).get(directiveName); GraphQLArgument argument = null; if (directive != null) { argument = directive.getArgument(argumentName); } return Optional.ofNullable(argument); } + + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static boolean isAllNonRepeatable(List directives) { + if (directives == null || directives.isEmpty()) { + return false; + } + for (GraphQLDirective graphQLDirective : directives) { + if (graphQLDirective.isRepeatable()) { + return false; + } + } + return true; + } + + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static List add(List targetList, GraphQLDirective newDirective) { + assertNotNull(targetList, "directive list can't be null"); + assertNotNull(newDirective, "directive can't be null"); + targetList.add(newDirective); + return targetList; + } + + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static List addAll(List targetList, List newDirectives) { + assertNotNull(targetList, "directive list can't be null"); + assertNotNull(newDirectives, "directive list can't be null"); + targetList.addAll(newDirectives); + return targetList; + } + + @Deprecated(since = "2022-02-24") // use GraphQLAppliedDirectives eventually + public static GraphQLDirective getFirstDirective(String name, Map> allDirectivesByName) { + List directives = allDirectivesByName.getOrDefault(name, emptyList()); + if (directives.isEmpty()) { + return null; + } + return directives.get(0); + } + + /** + * This can take a collection of legacy directives and turn them applied directives, and combine them with any applied directives. The applied + * directives collection takes precedence. + * + * @param directiveContainer the schema element holding applied directives + * @return a combined list unique by name + */ + public static List toAppliedDirectives(GraphQLDirectiveContainer directiveContainer) { + return toAppliedDirectives(directiveContainer.getAppliedDirectives(), directiveContainer.getDirectives()); + } + + /** + * This can take a collection of legacy directives and turn them applied directives, and combine them with any applied directives. The applied + * directives collection takes precedence. + * + * @param appliedDirectives the applied directives to use + * @param directives the legacy directives to use + * @return a combined list unique by name + */ + public static List toAppliedDirectives(Collection appliedDirectives, Collection directives) { + Set named = appliedDirectives.stream() + .map(GraphQLAppliedDirective::getName).collect(toSet()); + + ImmutableList.Builder list = ImmutableList.builder() + .addAll(appliedDirectives); + // we only put in legacy directives if the list does not already contain them. We need this mechanism + // (and not a map) because of repeated directives + directives.forEach(directive -> { + if (!named.contains(directive.getName())) { + list.add(directive.toAppliedDirective()); + } + }); + return list.build(); + } + + /** + * A holder class that breaks a list of directives into maps to be more easily accessible in using classes + */ + public static class DirectivesHolder { + private static final DirectivesHolder EMPTY_HOLDER = new DirectivesHolder(Collections.emptyList(), Collections.emptyList()); + + private final ImmutableMap> allDirectivesByName; + private final ImmutableMap nonRepeatableDirectivesByName; + private final List allDirectives; + + private final ImmutableMap> allAppliedDirectivesByName; + private final List allAppliedDirectives; + + public DirectivesHolder(Collection allDirectives, Collection allAppliedDirectives) { + this.allDirectives = ImmutableList.copyOf(allDirectives); + this.allDirectivesByName = ImmutableMap.copyOf(FpKit.groupingBy(allDirectives, GraphQLDirective::getName)); + // filter out the repeatable directives + List nonRepeatableDirectives = allDirectives.stream() + .filter(d -> !d.isRepeatable()).collect(Collectors.toList()); + this.nonRepeatableDirectivesByName = ImmutableMap.copyOf(FpKit.getByName(nonRepeatableDirectives, GraphQLDirective::getName)); + + this.allAppliedDirectives = ImmutableList.copyOf(allAppliedDirectives); + this.allAppliedDirectivesByName = ImmutableMap.copyOf(FpKit.groupingBy(allAppliedDirectives, GraphQLAppliedDirective::getName)); + } + + public static DirectivesHolder create(List directives, List appliedDirectives) { + if (directives.isEmpty() && appliedDirectives.isEmpty()) { + return EMPTY_HOLDER; + } + + return new DirectivesHolder(directives, appliedDirectives); + } + + public ImmutableMap> getAllDirectivesByName() { + return allDirectivesByName; + } + + public ImmutableMap getDirectivesByName() { + return nonRepeatableDirectivesByName; + } + + public List getDirectives() { + return allDirectives; + } + + public GraphQLDirective getDirective(String directiveName) { + List directiveList = allDirectivesByName.get(directiveName); + if (directiveList == null || directiveList.isEmpty()) { + return null; + } + return directiveList.get(0); + } + + public List getDirectives(String directiveName) { + return allDirectivesByName.getOrDefault(directiveName, emptyList()); + } + + public ImmutableMap> getAllAppliedDirectivesByName() { + return allAppliedDirectivesByName; + } + + public List getAppliedDirectives() { + return allAppliedDirectives; + } + + public List getAppliedDirectives(String directiveName) { + return allAppliedDirectivesByName.getOrDefault(directiveName, emptyList()); + } + + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + List list = allAppliedDirectivesByName.getOrDefault(directiveName, emptyList()); + return list.isEmpty() ? null : list.get(0); + } + + @Override + public String toString() { + return new StringJoiner(", ", DirectivesHolder.class.getSimpleName() + "[", "]") + .add("allDirectivesByName=" + String.join(",", allDirectivesByName.keySet())) + .add("allAppliedDirectivesByName=" + String.join(",", allAppliedDirectivesByName.keySet())) + .toString(); + } + } } diff --git a/src/main/java/graphql/DuckTyped.java b/src/main/java/graphql/DuckTyped.java new file mode 100644 index 0000000000..83e298b6e1 --- /dev/null +++ b/src/main/java/graphql/DuckTyped.java @@ -0,0 +1,22 @@ +package graphql; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; + +/** + * An annotation that marks a method return value or method parameter as returning a duck type value. + *

+ * For efficiency reasons, the graphql engine methods can return {@link Object} values + * which maybe two well known types of values. Often a {@link java.util.concurrent.CompletableFuture} + * or a plain old {@link Object}, to represent an async value or a materialised value. + */ +@Internal +@Retention(RetentionPolicy.RUNTIME) +@Target(value = {METHOD, PARAMETER}) +public @interface DuckTyped { + String shape(); +} diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java new file mode 100644 index 0000000000..df1ee017ba --- /dev/null +++ b/src/main/java/graphql/EngineRunningState.java @@ -0,0 +1,259 @@ +package graphql; + +import graphql.execution.AbortExecutionException; +import graphql.execution.EngineRunningObserver; +import graphql.execution.ExecutionId; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Supplier; + +import static graphql.Assert.assertTrue; +import static graphql.execution.EngineRunningObserver.RunningState.CANCELLED; +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING_FINISH; +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING_START; + +@Internal +@NullMarked +public class EngineRunningState { + + @Nullable + private final EngineRunningObserver engineRunningObserver; + private volatile ExecutionInput executionInput; + private final GraphQLContext graphQLContext; + + // will be null after updateExecutionInput is called + @Nullable + private volatile ExecutionId executionId; + + // if true the last decrementRunning() call will be ignored + private volatile boolean finished; + + private final AtomicInteger isRunning = new AtomicInteger(0); + + + public EngineRunningState(ExecutionInput executionInput, Profiler profiler) { + EngineRunningObserver engineRunningObserver = executionInput.getGraphQLContext().get(EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY); + EngineRunningObserver wrappedObserver = profiler.wrapEngineRunningObserver(engineRunningObserver); + this.engineRunningObserver = wrappedObserver; + this.executionInput = executionInput; + this.graphQLContext = executionInput.getGraphQLContext(); + this.executionId = executionInput.getExecutionId(); + } + + + + public CompletableFuture handle(CompletableFuture src, BiFunction fn) { + if (engineRunningObserver == null) { + return src.handle(fn); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = src.handle((t, throwable) -> { + // because we added an artificial dependent CF on src (in observeCompletableFutureStart) , a throwable is a CompletionException + // that needs to be unwrapped + if (throwable != null) { + throwable = throwable.getCause(); + } + //noinspection DataFlowIssue + return fn.apply(t, throwable); + }); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture whenComplete(CompletableFuture src, BiConsumer fn) { + if (engineRunningObserver == null) { + return src.whenComplete(fn); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = src.whenComplete((t, throwable) -> { + // because we added an artificial dependent CF on src (in observeCompletableFutureStart) , a throwable is a CompletionException + // that needs to be unwrapped + if (throwable != null) { + throwable = throwable.getCause(); + } + fn.accept(t, throwable); + }); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture compose(CompletableFuture src, Function> fn) { + if (engineRunningObserver == null) { + return src.thenCompose(fn); + } + CompletableFuture result = new CompletableFuture<>(); + src = observeCompletableFutureStart(src); + src.whenComplete((u, t) -> { + CompletionStage innerCF; + try { + innerCF = fn.apply(u).toCompletableFuture(); + } catch (Throwable e) { + innerCF = CompletableFuture.failedFuture(e); + } + // this run is needed to wrap around the result.complete()/result.completeExceptionally() call + innerCF.whenComplete((u1, t1) -> run(() -> { + if (t1 != null) { + result.completeExceptionally(t1); + } else { + result.complete(u1); + } + })); + }); + observerCompletableFutureEnd(src); + return result; + } + + + private CompletableFuture observeCompletableFutureStart(CompletableFuture future) { + if (engineRunningObserver == null) { + return future; + } + // the completion order of dependent CFs is in stack order for + // directly dependent CFs, but in reverse stack order for indirect dependent ones + // By creating one dependent CF on originalFetchValue, we make sure the order it is always + // in reverse stack order + future = future.thenApply(Function.identity()); + incrementRunningWhenCompleted(future); + return future; + } + + private void observerCompletableFutureEnd(CompletableFuture future) { + if (engineRunningObserver == null) { + return; + } + decrementRunningWhenCompleted(future); + } + + + private void incrementRunningWhenCompleted(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + incrementRunning(); + }); + } + + private void decrementRunningWhenCompleted(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + decrementRunning(); + }); + + } + + private void decrementRunning() { + if (engineRunningObserver == null) { + return; + } + assertTrue(isRunning.get() > 0); + if (isRunning.decrementAndGet() == 0 && !finished) { + changeOfState(NOT_RUNNING); + } + } + + + private void incrementRunning() { + if (engineRunningObserver == null) { + return; + } + assertTrue(isRunning.get() >= 0); + if (isRunning.incrementAndGet() == 1) { + changeOfState(RUNNING); + } + + } + + + public void updateExecutionInput(ExecutionInput executionInput) { + this.executionInput = executionInput; + this.executionId = executionInput.getExecutionIdNonNull(); + } + + private void changeOfState(EngineRunningObserver.RunningState runningState) { + if (engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); + } + } + + private void run(Runnable runnable) { + if (engineRunningObserver == null) { + runnable.run(); + return; + } + incrementRunning(); + try { + runnable.run(); + } finally { + decrementRunning(); + } + } + + /** + * Only used once outside of this class: when the execution starts + */ + public CompletableFuture engineRun(Supplier> engineRun) { + if (engineRunningObserver == null) { + return engineRun.get(); + } + isRunning.incrementAndGet(); + changeOfState(RUNNING_START); + + CompletableFuture erCF = engineRun.get(); + erCF = erCF.whenComplete((result, throwable) -> { + finished = true; + changeOfState(NOT_RUNNING_FINISH); + }); + decrementRunning(); + return erCF; + } + + + /** + * This will abort the execution via throwing {@link AbortExecutionException} if the {@link ExecutionInput} has been cancelled + */ + public void throwIfCancelled() throws AbortExecutionException { + AbortExecutionException abortExecutionException = ifCancelledMakeException(); + if (abortExecutionException != null) { + throw abortExecutionException; + } + } + + /** + * if the passed in {@link Throwable}is non-null then it is returned as id and if there is no exception then + * the cancellation state is checked in {@link ExecutionInput#isCancelled()} and a {@link AbortExecutionException} + * is made as the returned {@link Throwable} + * + * @param currentThrowable the current exception state + * + * @return a current throwable or a cancellation exception or null if none are in error + */ + @Internal + @Nullable + public Throwable possibleCancellation(@Nullable Throwable currentThrowable) { + // no need to check we are cancelled if we already have an exception in play + // since it can lead to an exception being thrown when an exception has already been + // thrown + if (currentThrowable == null) { + return ifCancelledMakeException(); + } + return currentThrowable; + } + + /** + * @return a AbortExecutionException if the current operation has been cancelled via {@link ExecutionInput#cancel()} + */ + public @Nullable AbortExecutionException ifCancelledMakeException() { + if (executionInput.isCancelled()) { + changeOfState(CANCELLED); + return new AbortExecutionException("Execution has been asked to be cancelled"); + } + return null; + } + +} diff --git a/src/main/java/graphql/ErrorClassification.java b/src/main/java/graphql/ErrorClassification.java index e23f172810..db9764f2ce 100644 --- a/src/main/java/graphql/ErrorClassification.java +++ b/src/main/java/graphql/ErrorClassification.java @@ -23,4 +23,21 @@ public interface ErrorClassification { default Object toSpecification(GraphQLError error) { return String.valueOf(this); } + + /** + * This produces a simple ErrorClassification that represents the provided String. You can + * use this factory method to give out simple but custom error classifications. + * + * @param errorClassification the string that represents the error classification + * + * @return a ErrorClassification that is that provided string + */ + static ErrorClassification errorClassification(String errorClassification) { + return new ErrorClassification() { + @Override + public String toString() { + return errorClassification; + } + }; + } } diff --git a/src/main/java/graphql/ErrorType.java b/src/main/java/graphql/ErrorType.java index bf90f955ae..9adee6d461 100644 --- a/src/main/java/graphql/ErrorType.java +++ b/src/main/java/graphql/ErrorType.java @@ -9,6 +9,7 @@ public enum ErrorType implements ErrorClassification { InvalidSyntax, ValidationError, DataFetchingException, + NullValueInNonNullableField, OperationNotSupported, ExecutionAborted } diff --git a/src/main/java/graphql/ExceptionWhileDataFetching.java b/src/main/java/graphql/ExceptionWhileDataFetching.java index e3c43abaf4..73413f55e0 100644 --- a/src/main/java/graphql/ExceptionWhileDataFetching.java +++ b/src/main/java/graphql/ExceptionWhileDataFetching.java @@ -1,7 +1,7 @@ package graphql; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.language.SourceLocation; import java.util.Collections; @@ -24,7 +24,7 @@ public class ExceptionWhileDataFetching implements GraphQLError { private final List locations; private final Map extensions; - public ExceptionWhileDataFetching(ExecutionPath path, Throwable exception, SourceLocation sourceLocation) { + public ExceptionWhileDataFetching(ResultPath path, Throwable exception, SourceLocation sourceLocation) { this.path = assertNotNull(path).toList(); this.exception = assertNotNull(exception); this.locations = Collections.singletonList(sourceLocation); @@ -32,7 +32,7 @@ public ExceptionWhileDataFetching(ExecutionPath path, Throwable exception, Sourc this.message = mkMessage(path, exception); } - private String mkMessage(ExecutionPath path, Throwable exception) { + private String mkMessage(ResultPath path, Throwable exception) { return format("Exception while fetching data (%s) : %s", path, exception.getMessage()); } @@ -46,8 +46,7 @@ private Map mkExtensions(Throwable exception) { if (exception instanceof GraphQLError) { Map map = ((GraphQLError) exception).getExtensions(); if (map != null) { - extensions = new LinkedHashMap<>(); - extensions.putAll(map); + extensions = new LinkedHashMap<>(map); } } return extensions; diff --git a/src/main/java/graphql/ExecutionInput.java b/src/main/java/graphql/ExecutionInput.java index dc4544b8a9..669ff4ff1d 100644 --- a/src/main/java/graphql/ExecutionInput.java +++ b/src/main/java/graphql/ExecutionInput.java @@ -1,45 +1,91 @@ package graphql; -import graphql.cachecontrol.CacheControl; +import graphql.collect.ImmutableKit; import graphql.execution.ExecutionId; -import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationState; +import graphql.execution.RawVariables; +import graphql.execution.preparsed.persisted.PersistedQuerySupport; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.Collections; import java.util.Locale; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; -import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; +import static graphql.execution.instrumentation.dataloader.EmptyDataLoaderRegistryInstance.EMPTY_DATALOADER_REGISTRY; /** * This represents the series of values that can be input on a graphql query execution */ @PublicApi +@NullMarked public class ExecutionInput { private final String query; private final String operationName; private final Object context; + private final GraphQLContext graphQLContext; + private final Object localContext; private final Object root; - private final Map variables; + private final RawVariables rawVariables; + private final Map extensions; private final DataLoaderRegistry dataLoaderRegistry; - private final CacheControl cacheControl; private final ExecutionId executionId; private final Locale locale; + private final AtomicBoolean cancelled; + private final boolean profileExecution; + + /** + * In order for {@link #getQuery()} to never be null, use this to mark + * them so that invariant can be satisfied while assuming that the persisted query + * id is elsewhere. + */ + public final static String PERSISTED_QUERY_MARKER = PersistedQuerySupport.PERSISTED_QUERY_MARKER; + + private final static String APOLLO_AUTOMATIC_PERSISTED_QUERY_EXTENSION = "persistedQuery"; @Internal - private ExecutionInput(String query, String operationName, Object context, Object root, Map variables, DataLoaderRegistry dataLoaderRegistry, CacheControl cacheControl, ExecutionId executionId, Locale locale) { - this.query = assertNotNull(query, "query can't be null"); - this.operationName = operationName; - this.context = context; - this.root = root; - this.variables = variables; - this.dataLoaderRegistry = dataLoaderRegistry; - this.cacheControl = cacheControl; - this.executionId = executionId; - this.locale = locale; + private ExecutionInput(Builder builder) { + this.query = assertQuery(builder); + this.operationName = builder.operationName; + this.context = builder.context; + this.graphQLContext = assertNotNull(builder.graphQLContext); + this.root = builder.root; + this.rawVariables = builder.rawVariables; + this.dataLoaderRegistry = builder.dataLoaderRegistry; + this.executionId = builder.executionId; + this.locale = builder.locale != null ? builder.locale : Locale.getDefault(); // always have a locale in place + this.localContext = builder.localContext; + this.extensions = builder.extensions; + this.cancelled = builder.cancelled; + this.profileExecution = builder.profileExecution; + } + + private static String assertQuery(Builder builder) { + if ((builder.query == null || builder.query.isEmpty()) && isPersistedQuery(builder)) { + return PERSISTED_QUERY_MARKER; + } + + return assertNotNull(builder.query, "query can't be null"); + } + + /** + * This is used to determine if this execution input is a persisted query or not. + * + * @implNote The current implementation supports Apollo Persisted Queries (APQ) by checking for + * the extensions property for the persisted query extension. + * See Apollo Persisted Queries for more details. + * + * @param builder the builder to check + * + * @return true if this is a persisted query + */ + private static boolean isPersistedQuery(Builder builder) { + return builder.extensions != null && + builder.extensions.containsKey(APOLLO_AUTOMATIC_PERSISTED_QUERY_EXTENSION); } /** @@ -52,52 +98,92 @@ public String getQuery() { /** * @return the name of the query operation */ + @Nullable public String getOperationName() { return operationName; } /** + * The legacy context object has been deprecated in favour of the more shareable + * {@link #getGraphQLContext()} + * * @return the context object to pass to all data fetchers + * + * @deprecated - use {@link #getGraphQLContext()} */ + @Deprecated(since = "2021-07-05") + @Nullable public Object getContext() { return context; } + /** + * @return the shared {@link GraphQLContext} object to pass to all data fetchers + */ + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * @return the local context object to pass to all top level (i.e. query, mutation, subscription) data fetchers + */ + @Nullable + public Object getLocalContext() { + return localContext; + } + /** * @return the root object to start the query execution on */ + @Nullable public Object getRoot() { return root; } /** - * @return a map of variables that can be referenced via $syntax in the query + * @return a map of raw variables that can be referenced via $syntax in the query. */ public Map getVariables() { - return variables; + return rawVariables.toMap(); } /** - * @return the data loader registry associated with this execution + * @return a map of raw variables that can be referenced via $syntax in the query. */ - public DataLoaderRegistry getDataLoaderRegistry() { - return dataLoaderRegistry; + public RawVariables getRawVariables() { + return rawVariables; } /** - * @return the cache control helper associated with this execution + * @return the data loader registry associated with this execution */ - public CacheControl getCacheControl() { - return cacheControl; + public DataLoaderRegistry getDataLoaderRegistry() { + return dataLoaderRegistry; } + /** + * This value can be null before the execution starts, but once the execution starts, it will be set to a non-null value. + * See #getExecutionIdNonNull() for a non-null version of this. + * * @return Id that will be/was used to execute this operation. */ + @Nullable public ExecutionId getExecutionId() { return executionId; } + + /** + * Once the execution starts, GraphQL Java will make sure that this execution id is non-null. + * Therefore use this method if you are sue that the execution has started to get a guaranteed non-null execution id. + * + * @return the non null execution id of this operation. + */ + public ExecutionId getExecutionIdNonNull() { + return Assert.assertNotNull(this.executionId); + } + /** * This returns the locale of this operation. * @@ -107,11 +193,46 @@ public Locale getLocale() { return locale; } + /** + * @return a map of extension values that can be sent in to a request + */ + public Map getExtensions() { + return extensions; + } + + + /** + * The graphql engine will check this frequently and if that is true, it will + * throw a {@link graphql.execution.AbortExecutionException} to cancel the execution. + *

+ * This is a cooperative cancellation. Some asynchronous data fetching code may still continue to + * run but there will be no more efforts run future field fetches say. + * + * @return true if the execution should be cancelled + */ + public boolean isCancelled() { + return cancelled.get(); + } + + /** + * This can be called to cancel the graphql execution. Remember this is a cooperative cancellation + * and the graphql engine needs to be running on a thread to allow is to respect this flag. + */ + public void cancel() { + cancelled.set(true); + } + + + public boolean isProfileExecution() { + return profileExecution; + } + /** * This helps you transform the current ExecutionInput object into another one by starting a builder with all * the current values and allows you to transform it how you want. * * @param builderConsumer the consumer code that will be given a builder to transform + * * @return a new ExecutionInput object based on calling build on that builder */ public ExecutionInput transform(Consumer builderConsumer) { @@ -119,10 +240,13 @@ public ExecutionInput transform(Consumer builderConsumer) { .query(this.query) .operationName(this.operationName) .context(this.context) + .internalTransferContext(this.graphQLContext) + .internalTransferCancelBoolean(this.cancelled) + .localContext(this.localContext) .root(this.root) .dataLoaderRegistry(this.dataLoaderRegistry) - .cacheControl(this.cacheControl) - .variables(this.variables) + .variables(this.rawVariables.toMap()) + .extensions(this.extensions) .executionId(this.executionId) .locale(this.locale); @@ -137,8 +261,9 @@ public String toString() { "query='" + query + '\'' + ", operationName='" + operationName + '\'' + ", context=" + context + + ", graphQLContext=" + graphQLContext + ", root=" + root + - ", variables=" + variables + + ", rawVariables=" + rawVariables + ", dataLoaderRegistry=" + dataLoaderRegistry + ", executionId= " + executionId + ", locale= " + locale + @@ -156,30 +281,45 @@ public static Builder newExecutionInput() { * Creates a new builder of ExecutionInput objects with the given query * * @param query the query to execute + * * @return a new builder of ExecutionInput objects */ public static Builder newExecutionInput(String query) { return new Builder().query(query); } + @NullUnmarked public static class Builder { private String query; private String operationName; - private Object context = GraphQLContext.newContext().build(); + private GraphQLContext graphQLContext = GraphQLContext.newContext().build(); + private Object context = graphQLContext; // we make these the same object on purpose - legacy code will get the same object if this change nothing + private Object localContext; private Object root; - private Map variables = Collections.emptyMap(); + private RawVariables rawVariables = RawVariables.emptyVariables(); + private Map extensions = ImmutableKit.emptyMap(); // // this is important - it allows code to later known if we never really set a dataloader and hence it can optimize // dataloader field tracking away. // - private DataLoaderRegistry dataLoaderRegistry = DataLoaderDispatcherInstrumentationState.EMPTY_DATALOADER_REGISTRY; - private CacheControl cacheControl = CacheControl.newCacheControl(); - private Locale locale; + private DataLoaderRegistry dataLoaderRegistry = EMPTY_DATALOADER_REGISTRY; + private Locale locale = Locale.getDefault(); private ExecutionId executionId; + private AtomicBoolean cancelled = new AtomicBoolean(false); + private boolean profileExecution; + + /** + * Package level access to the graphql context + * + * @return shhh but it's the graphql context + */ + GraphQLContext graphQLContext() { + return graphQLContext; + } public Builder query(String query) { - this.query = assertNotNull(query, "query can't be null"); + this.query = query; return this; } @@ -192,6 +332,7 @@ public Builder operationName(String operationName) { * A default one will be assigned, but you can set your own. * * @param executionId an execution id object + * * @return this builder */ public Builder executionId(ExecutionId executionId) { @@ -199,7 +340,6 @@ public Builder executionId(ExecutionId executionId) { return this; } - /** * Sets the locale to use for this operation * @@ -213,34 +353,92 @@ public Builder locale(Locale locale) { } /** - * By default you will get a {@link GraphQLContext} object but you can set your own. + * Sets initial localContext in root data fetchers + * + * @param localContext the local context to use + * + * @return this builder + */ + public Builder localContext(Object localContext) { + this.localContext = localContext; + return this; + } + + /** + * The legacy context object * * @param context the context object to use + * * @return this builder + * + * @deprecated - the {@link ExecutionInput#getGraphQLContext()} is a fixed mutable instance now */ + @Deprecated(since = "2021-07-05") public Builder context(Object context) { this.context = context; return this; } - public Builder context(GraphQLContext.Builder contextBuilder) { - this.context = contextBuilder.build(); + /** + * This will give you a builder of {@link GraphQLContext} and any values you set will be copied + * into the underlying {@link GraphQLContext} of this execution input + * + * @param builderFunction a builder function you can use to put values into the context + * + * @return this builder + */ + public Builder graphQLContext(Consumer builderFunction) { + GraphQLContext.Builder builder = GraphQLContext.newContext(); + builderFunction.accept(builder); + this.graphQLContext.putAll(builder); + return this; + } + + /** + * This will put all the values from the map into the underlying {@link GraphQLContext} of this execution input + * + * @param mapOfContext a map of values to put in the context + * + * @return this builder + */ + public Builder graphQLContext(Map mapOfContext) { + this.graphQLContext.putAll(mapOfContext); return this; } - public Builder context(UnaryOperator contextBuilderFunction) { - GraphQLContext.Builder builder = GraphQLContext.newContext(); - builder = contextBuilderFunction.apply(builder); - return context(builder.build()); + // hidden on purpose + private Builder internalTransferContext(GraphQLContext graphQLContext) { + this.graphQLContext = Assert.assertNotNull(graphQLContext); + return this; } + // hidden on purpose + private Builder internalTransferCancelBoolean(AtomicBoolean cancelled) { + this.cancelled = cancelled; + return this; + } + + public Builder root(Object root) { this.root = root; return this; } - public Builder variables(Map variables) { - this.variables = assertNotNull(variables, "variables map can't be null"); + /** + * Adds raw (not coerced) variables + * + * @param rawVariables the map of raw variables + * + * @return this builder + */ + public Builder variables(Map rawVariables) { + assertNotNull(rawVariables, "variables map can't be null"); + this.rawVariables = RawVariables.of(rawVariables); + return this; + } + + public Builder extensions(Map extensions) { + this.extensions = assertNotNull(extensions, "extensions map can't be null"); return this; } @@ -250,6 +448,7 @@ public Builder variables(Map variables) { * instances as this will create unexpected results. * * @param dataLoaderRegistry a registry of {@link org.dataloader.DataLoader}s + * * @return this builder */ public Builder dataLoaderRegistry(DataLoaderRegistry dataLoaderRegistry) { @@ -257,13 +456,13 @@ public Builder dataLoaderRegistry(DataLoaderRegistry dataLoaderRegistry) { return this; } - public Builder cacheControl(CacheControl cacheControl) { - this.cacheControl = assertNotNull(cacheControl); + public Builder profileExecution(boolean profileExecution) { + this.profileExecution = profileExecution; return this; } public ExecutionInput build() { - return new ExecutionInput(query, operationName, context, root, variables, dataLoaderRegistry, cacheControl, executionId, locale); + return new ExecutionInput(this); } } } \ No newline at end of file diff --git a/src/main/java/graphql/ExecutionResult.java b/src/main/java/graphql/ExecutionResult.java index e3715ee550..f2e94765bb 100644 --- a/src/main/java/graphql/ExecutionResult.java +++ b/src/main/java/graphql/ExecutionResult.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import java.util.function.Consumer; /** * This simple value class represents the result of performing a graphql query. @@ -34,7 +35,7 @@ public interface ExecutionResult { * See : https://graphql.github.io/graphql-spec/June2018/#sec-Data * * @return true if the entry "data" should be present in the result - * false otherwise + * false otherwise */ boolean isDataPresent(); @@ -49,9 +50,113 @@ public interface ExecutionResult { * should be present. Certain JSON serializers may or may interpret {@link ExecutionResult} to spec, so this method * is provided to produce a map that strictly follows the specification. * - * See : http://facebook.github.io/graphql/#sec-Response-Format + * See : https://spec.graphql.org/October2021/#sec-Response-Format * * @return a map of the result that strictly follows the spec */ Map toSpecification(); + + /** + * This allows you to turn a map of results from {@link #toSpecification()} and turn it back into a {@link ExecutionResult} + * + * @param specificationMap the specification result map + * + * @return a new {@link ExecutionResult} from that map + */ + static ExecutionResult fromSpecification(Map specificationMap) { + return ExecutionResultImpl.fromSpecification(specificationMap); + } + + /** + * This helps you transform the current {@link ExecutionResult} object into another one by starting a builder with all + * the current values and allows you to transform it how you want. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new {@link ExecutionResult} object based on calling build on that builder + */ + default ExecutionResult transform(Consumer> builderConsumer) { + Builder builder = newExecutionResult().from(this); + builderConsumer.accept(builder); + return builder.build(); + } + + /** + * @return a builder that allows you to build a new execution result + */ + static Builder newExecutionResult() { + return ExecutionResultImpl.newExecutionResult(); + } + + interface Builder> { + + /** + * Sets values into the builder based on a previous {@link ExecutionResult} + * + * @param executionResult the previous {@link ExecutionResult} + * + * @return the builder + */ + B from(ExecutionResult executionResult); + + /** + * Sets new data into the builder + * + * @param data the data to use + * + * @return the builder + */ + B data(Object data); + + /** + * Sets error list as the errors for this builder + * + * @param errors the errors to use + * + * @return the builder + */ + B errors(List errors); + + /** + * Adds the error list to any existing the errors for this builder + * + * @param errors the errors to add + * + * @return the builder + */ + B addErrors(List errors); + + /** + * Adds the error to any existing the errors for this builder + * + * @param error the error to add + * + * @return the builder + */ + B addError(GraphQLError error); + + /** + * Sets the extension map for this builder + * + * @param extensions the extensions to use + * + * @return the builder + */ + B extensions(Map extensions); + + /** + * Adds a new entry into the extensions map for this builder + * + * @param key the key of the extension entry + * @param value the value of the extension entry + * + * @return the builder + */ + B addExtension(String key, Object value); + + /** + * @return a newly built {@link ExecutionResult} + */ + ExecutionResult build(); + } } diff --git a/src/main/java/graphql/ExecutionResultImpl.java b/src/main/java/graphql/ExecutionResultImpl.java index f755b3b39e..d39dbda157 100644 --- a/src/main/java/graphql/ExecutionResultImpl.java +++ b/src/main/java/graphql/ExecutionResultImpl.java @@ -1,14 +1,16 @@ package graphql; +import com.google.common.collect.ImmutableList; +import graphql.collect.ImmutableKit; + import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.function.Consumer; -import static java.util.stream.Collectors.toList; +import static graphql.collect.ImmutableKit.map; @Internal public class ExecutionResultImpl implements ExecutionResult { @@ -38,14 +40,18 @@ public ExecutionResultImpl(ExecutionResultImpl other) { this(other.dataPresent, other.data, other.errors, other.extensions); } + public > ExecutionResultImpl(Builder builder) { + this(builder.dataPresent, builder.data, builder.errors, builder.extensions); + } + private ExecutionResultImpl(boolean dataPresent, Object data, List errors, Map extensions) { this.dataPresent = dataPresent; this.data = data; - if (errors != null && !errors.isEmpty()) { - this.errors = Collections.unmodifiableList(new ArrayList<>(errors)); + if (errors != null) { + this.errors = ImmutableList.copyOf(errors); } else { - this.errors = Collections.emptyList(); + this.errors = ImmutableKit.emptyList(); } this.extensions = extensions; @@ -88,7 +94,25 @@ public Map toSpecification() { } private Object errorsToSpec(List errors) { - return errors.stream().map(GraphQLError::toSpecification).collect(toList()); + return map(errors, GraphQLError::toSpecification); + } + + @SuppressWarnings("unchecked") + static ExecutionResult fromSpecification(Map specificationMap) { + ExecutionResult.Builder builder = ExecutionResult.newExecutionResult(); + Object data = specificationMap.get("data"); + if (data != null) { + builder.data(data); + } + List> errors = (List>) specificationMap.get("errors"); + if (errors != null) { + builder.errors(GraphqlErrorHelper.fromSpecification(errors)); + } + Map extensions = (Map) specificationMap.get("extensions"); + if (extensions != null) { + builder.extensions(extensions); + } + return builder.build(); } @Override @@ -101,63 +125,65 @@ public String toString() { '}'; } - public ExecutionResultImpl transform(Consumer builderConsumer) { - Builder builder = newExecutionResult().from(this); - builderConsumer.accept(builder); - return builder.build(); - } - - public static Builder newExecutionResult() { - return new Builder(); + public static > Builder newExecutionResult() { + return new Builder<>(); } - public static class Builder { + public static class Builder> implements ExecutionResult.Builder { private boolean dataPresent; private Object data; private List errors = new ArrayList<>(); private Map extensions; - public Builder from(ExecutionResult executionResult) { + @Override + public T from(ExecutionResult executionResult) { dataPresent = executionResult.isDataPresent(); data = executionResult.getData(); errors = new ArrayList<>(executionResult.getErrors()); extensions = executionResult.getExtensions(); - return this; + return (T) this; } - public Builder data(Object data) { + @Override + public T data(Object data) { dataPresent = true; this.data = data; - return this; + return (T) this; } - public Builder errors(List errors) { + @Override + public T errors(List errors) { this.errors = errors; - return this; + return (T) this; } - public Builder addErrors(List errors) { + @Override + public T addErrors(List errors) { this.errors.addAll(errors); - return this; + return (T) this; } - public Builder addError(GraphQLError error) { + @Override + public T addError(GraphQLError error) { this.errors.add(error); - return this; + return (T) this; } - public Builder extensions(Map extensions) { + @Override + public T extensions(Map extensions) { this.extensions = extensions; - return this; + return (T) this; } - public Builder addExtension(String key, Object value) { + @Override + public T addExtension(String key, Object value) { this.extensions = (this.extensions == null ? new LinkedHashMap<>() : this.extensions); this.extensions.put(key, value); - return this; + return (T) this; } - public ExecutionResultImpl build() { + @Override + public ExecutionResult build() { return new ExecutionResultImpl(dataPresent, data, errors, extensions); } } diff --git a/src/main/java/graphql/ExperimentalApi.java b/src/main/java/graphql/ExperimentalApi.java new file mode 100644 index 0000000000..80be253cd1 --- /dev/null +++ b/src/main/java/graphql/ExperimentalApi.java @@ -0,0 +1,27 @@ +package graphql; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; + +/** + * This represents code that the graphql-java project considers experimental API and while our intention is that it will + * progress to be {@link PublicApi}, its existence, signature or behavior may change between releases. + *

+ * In general unnecessary changes will be avoided, but you should not depend on experimental classes being stable. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD}) +@Documented +public @interface ExperimentalApi { + /** + * The key that should be associated with a boolean value which indicates whether @defer and @stream behaviour is enabled for this execution. + */ + String ENABLE_INCREMENTAL_SUPPORT = "ENABLE_INCREMENTAL_SUPPORT"; +} diff --git a/src/main/java/graphql/GraphQL.java b/src/main/java/graphql/GraphQL.java index d0242a48e3..5c0bd83494 100644 --- a/src/main/java/graphql/GraphQL.java +++ b/src/main/java/graphql/GraphQL.java @@ -1,21 +1,22 @@ package graphql; import graphql.execution.AbortExecutionException; +import graphql.execution.Async; import graphql.execution.AsyncExecutionStrategy; import graphql.execution.AsyncSerialExecutionStrategy; +import graphql.execution.DataFetcherExceptionHandler; import graphql.execution.Execution; import graphql.execution.ExecutionId; import graphql.execution.ExecutionIdProvider; import graphql.execution.ExecutionStrategy; +import graphql.execution.SimpleDataFetcherExceptionHandler; import graphql.execution.SubscriptionExecutionStrategy; import graphql.execution.ValueUnboxer; -import graphql.execution.instrumentation.ChainedInstrumentation; import graphql.execution.instrumentation.DocumentAndVariables; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.SimpleInstrumentation; -import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; @@ -23,42 +24,39 @@ import graphql.execution.preparsed.PreparsedDocumentEntry; import graphql.execution.preparsed.PreparsedDocumentProvider; import graphql.language.Document; -import graphql.parser.InvalidSyntaxException; -import graphql.parser.Parser; import graphql.schema.GraphQLSchema; -import graphql.util.LogKit; import graphql.validation.ValidationError; -import graphql.validation.Validator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; -import java.util.ArrayList; import java.util.List; -import java.util.Map; +import java.util.Locale; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Predicate; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; import static graphql.execution.ExecutionIdProvider.DEFAULT_EXECUTION_ID_PROVIDER; -import static graphql.execution.instrumentation.DocumentAndVariables.newDocumentAndVariables; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.completeInstrumentationCtxCF; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.nonNullCtx; /** * This class is where all graphql-java query execution begins. It combines the objects that are needed * to make a successful graphql query, with the most important being the {@link graphql.schema.GraphQLSchema schema} * and the {@link graphql.execution.ExecutionStrategy execution strategy} - * + *

* Building this object is very cheap and can be done on each execution if necessary. Building the schema is often not - * as cheap, especially if its parsed from graphql IDL schema format via {@link graphql.schema.idl.SchemaParser}. - * + * as cheap, especially if it's parsed from graphql IDL schema format via {@link graphql.schema.idl.SchemaParser}. + *

* The data for a query is returned via {@link ExecutionResult#getData()} and any errors encountered as placed in * {@link ExecutionResult#getErrors()}. * *

Runtime Exceptions

- * + *

* Runtime exceptions can be thrown by the graphql engine if certain situations are encountered. These are not errors * in execution but rather totally unacceptable conditions in which to execute a graphql query. *

    @@ -67,7 +65,7 @@ * * *
  • {@link graphql.execution.UnresolvedTypeException} - is thrown if a {@link graphql.schema.TypeResolver} fails to provide a concrete - * object type given a interface or union type. + * object type given an interface or union type. *
  • * *
  • {@link graphql.schema.validation.InvalidSchemaException} - is thrown if the schema is not valid when built via @@ -85,18 +83,74 @@ */ @SuppressWarnings("Duplicates") @PublicApi +@NullMarked public class GraphQL { /** - * When @defer directives are used, this is the extension key name used to contain the {@link org.reactivestreams.Publisher} - * of deferred results + * This allows you to control "unusual" aspects of the GraphQL system + * including some JVM wide settings + *

    + * This is named unusual because in general we don't expect you to + * have to make ths configuration by default, but you can opt into certain features + * or disable them if you want to. + * + * @return a {@link GraphQLUnusualConfiguration} object */ - public static final String DEFERRED_RESULTS = "deferredResults"; + public static GraphQLUnusualConfiguration unusualConfiguration() { + return new GraphQLUnusualConfiguration(); + } - private static final Logger log = LoggerFactory.getLogger(GraphQL.class); - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(GraphQL.class); + /** + * This allows you to control "unusual" per execution aspects of the GraphQL system + *

    + * This is named unusual because in general we don't expect you to + * have to make ths configuration by default, but you can opt into certain features + * or disable them if you want to. + * + * @return a {@link GraphQLUnusualConfiguration.GraphQLContextConfiguration} object + */ + public static GraphQLUnusualConfiguration.GraphQLContextConfiguration unusualConfiguration(ExecutionInput executionInput) { + return new GraphQLUnusualConfiguration.GraphQLContextConfiguration(executionInput.getGraphQLContext()); + } + + /** + * This allows you to control "unusual" per execution aspects of the GraphQL system + *

    + * This is named unusual because in general we don't expect you to + * have to make ths configuration by default, but you can opt into certain features + * or disable them if you want to. + * + * @return a {@link GraphQLUnusualConfiguration.GraphQLContextConfiguration} object + */ + public static GraphQLUnusualConfiguration.GraphQLContextConfiguration unusualConfiguration(ExecutionInput.Builder executionInputBuilder) { + return new GraphQLUnusualConfiguration.GraphQLContextConfiguration(executionInputBuilder.graphQLContext()); + } + + /** + * This allows you to control "unusual" per execution aspects of the GraphQL system + *

    + * This is named unusual because in general we don't expect you to + * have to make ths configuration by default, but you can opt into certain features + * or disable them if you want to. + * + * @return a {@link GraphQLUnusualConfiguration.GraphQLContextConfiguration} object + */ + public static GraphQLUnusualConfiguration.GraphQLContextConfiguration unusualConfiguration(GraphQLContext graphQLContext) { + return new GraphQLUnusualConfiguration.GraphQLContextConfiguration(graphQLContext); + } - private final static Instrumentation DEFAULT_INSTRUMENTATION = new DataLoaderDispatcherInstrumentation(); + /** + * This allows you to control "unusual" per execution aspects of the GraphQL system + *

    + * This is named unusual because in general we don't expect you to + * have to make ths configuration by default, but you can opt into certain features + * or disable them if you want to. + * + * @return a {@link GraphQLUnusualConfiguration.GraphQLContextConfiguration} object + */ + public static GraphQLUnusualConfiguration.GraphQLContextConfiguration unusualConfiguration(GraphQLContext.Builder graphQLContextBuilder) { + return new GraphQLUnusualConfiguration.GraphQLContextConfiguration(graphQLContextBuilder); + } private final GraphQLSchema graphQLSchema; private final ExecutionStrategy queryStrategy; @@ -106,84 +160,79 @@ public class GraphQL { private final Instrumentation instrumentation; private final PreparsedDocumentProvider preparsedDocumentProvider; private final ValueUnboxer valueUnboxer; + private final boolean doNotAutomaticallyDispatchDataLoader; + + + private GraphQL(Builder builder) { + this.graphQLSchema = assertNotNull(builder.graphQLSchema, "graphQLSchema must be non null"); + this.queryStrategy = assertNotNull(builder.queryExecutionStrategy, "queryStrategy must not be null"); + this.mutationStrategy = assertNotNull(builder.mutationExecutionStrategy, "mutationStrategy must not be null"); + this.subscriptionStrategy = assertNotNull(builder.subscriptionExecutionStrategy, "subscriptionStrategy must not be null"); + this.idProvider = assertNotNull(builder.idProvider, "idProvider must be non null"); + this.instrumentation = assertNotNull(builder.instrumentation, "instrumentation must not be null"); + this.preparsedDocumentProvider = assertNotNull(builder.preparsedDocumentProvider, "preparsedDocumentProvider must be non null"); + this.valueUnboxer = assertNotNull(builder.valueUnboxer, "valueUnboxer must not be null"); + this.doNotAutomaticallyDispatchDataLoader = builder.doNotAutomaticallyDispatchDataLoader; + } + /** + * @return the schema backing this {@link GraphQL} instance + */ + public GraphQLSchema getGraphQLSchema() { + return graphQLSchema; + } /** - * A GraphQL object ready to execute queries - * - * @param graphQLSchema the schema to use - * - * @deprecated use the {@link #newGraphQL(GraphQLSchema)} builder instead. This will be removed in a future version. + * @return the execution strategy used for queries in this {@link GraphQL} instance */ - @Internal - @Deprecated - public GraphQL(GraphQLSchema graphQLSchema) { - //noinspection deprecation - this(graphQLSchema, null, null); + public ExecutionStrategy getQueryStrategy() { + return queryStrategy; } /** - * A GraphQL object ready to execute queries - * - * @param graphQLSchema the schema to use - * @param queryStrategy the query execution strategy to use - * - * @deprecated use the {@link #newGraphQL(GraphQLSchema)} builder instead. This will be removed in a future version. + * @return the execution strategy used for mutation in this {@link GraphQL} instance */ - @Internal - @Deprecated - public GraphQL(GraphQLSchema graphQLSchema, ExecutionStrategy queryStrategy) { - //noinspection deprecation - this(graphQLSchema, queryStrategy, null); + public ExecutionStrategy getMutationStrategy() { + return mutationStrategy; } /** - * A GraphQL object ready to execute queries - * - * @param graphQLSchema the schema to use - * @param queryStrategy the query execution strategy to use - * @param mutationStrategy the mutation execution strategy to use - * - * @deprecated use the {@link #newGraphQL(GraphQLSchema)} builder instead. This will be removed in a future version. + * @return the execution strategy used for subscriptions in this {@link GraphQL} instance */ - @Internal - @Deprecated - public GraphQL(GraphQLSchema graphQLSchema, ExecutionStrategy queryStrategy, ExecutionStrategy mutationStrategy) { - this(graphQLSchema, queryStrategy, mutationStrategy, null, DEFAULT_EXECUTION_ID_PROVIDER, DEFAULT_INSTRUMENTATION, NoOpPreparsedDocumentProvider.INSTANCE, ValueUnboxer.DEFAULT); + public ExecutionStrategy getSubscriptionStrategy() { + return subscriptionStrategy; } /** - * A GraphQL object ready to execute queries - * - * @param graphQLSchema the schema to use - * @param queryStrategy the query execution strategy to use - * @param mutationStrategy the mutation execution strategy to use - * @param subscriptionStrategy the subscription execution strategy to use - * - * @deprecated use the {@link #newGraphQL(GraphQLSchema)} builder instead. This will be removed in a future version. + * @return the provider of execution ids for this {@link GraphQL} instance + */ + public ExecutionIdProvider getIdProvider() { + return idProvider; + } + + /** + * @return the Instrumentation for this {@link GraphQL} instance, if any */ - @Internal - @Deprecated - public GraphQL(GraphQLSchema graphQLSchema, ExecutionStrategy queryStrategy, ExecutionStrategy mutationStrategy, ExecutionStrategy subscriptionStrategy) { - this(graphQLSchema, queryStrategy, mutationStrategy, subscriptionStrategy, DEFAULT_EXECUTION_ID_PROVIDER, DEFAULT_INSTRUMENTATION, NoOpPreparsedDocumentProvider.INSTANCE, ValueUnboxer.DEFAULT); - } - - private GraphQL(GraphQLSchema graphQLSchema, - ExecutionStrategy queryStrategy, - ExecutionStrategy mutationStrategy, - ExecutionStrategy subscriptionStrategy, - ExecutionIdProvider idProvider, - Instrumentation instrumentation, - PreparsedDocumentProvider preparsedDocumentProvider, - ValueUnboxer valueUnboxer) { - this.graphQLSchema = assertNotNull(graphQLSchema, "graphQLSchema must be non null"); - this.queryStrategy = queryStrategy != null ? queryStrategy : new AsyncExecutionStrategy(); - this.mutationStrategy = mutationStrategy != null ? mutationStrategy : new AsyncSerialExecutionStrategy(); - this.subscriptionStrategy = subscriptionStrategy != null ? subscriptionStrategy : new SubscriptionExecutionStrategy(); - this.idProvider = assertNotNull(idProvider, "idProvider must be non null"); - this.instrumentation = assertNotNull(instrumentation); - this.preparsedDocumentProvider = assertNotNull(preparsedDocumentProvider, "preparsedDocumentProvider must be non null"); - this.valueUnboxer = valueUnboxer; + public Instrumentation getInstrumentation() { + return instrumentation; + } + + public boolean isDoNotAutomaticallyDispatchDataLoader() { + return doNotAutomaticallyDispatchDataLoader; + } + + /** + * @return the PreparsedDocumentProvider for this {@link GraphQL} instance + */ + public PreparsedDocumentProvider getPreparsedDocumentProvider() { + return preparsedDocumentProvider; + } + + /** + * @return the ValueUnboxer for this {@link GraphQL} instance + */ + public ValueUnboxer getValueUnboxer() { + return valueUnboxer; } /** @@ -208,35 +257,32 @@ public static Builder newGraphQL(GraphQLSchema graphQLSchema) { public GraphQL transform(Consumer builderConsumer) { Builder builder = new Builder(this.graphQLSchema); builder - .queryExecutionStrategy(nvl(this.queryStrategy, builder.queryExecutionStrategy)) - .mutationExecutionStrategy(nvl(this.mutationStrategy, builder.mutationExecutionStrategy)) - .subscriptionExecutionStrategy(nvl(this.subscriptionStrategy, builder.subscriptionExecutionStrategy)) - .executionIdProvider(nvl(this.idProvider, builder.idProvider)) - .instrumentation(nvl(this.instrumentation, builder.instrumentation)) - .preparsedDocumentProvider(nvl(this.preparsedDocumentProvider, builder.preparsedDocumentProvider)); + .queryExecutionStrategy(this.queryStrategy) + .mutationExecutionStrategy(this.mutationStrategy) + .subscriptionExecutionStrategy(this.subscriptionStrategy) + .executionIdProvider(this.idProvider) + .instrumentation(this.instrumentation) + .preparsedDocumentProvider(this.preparsedDocumentProvider); builderConsumer.accept(builder); return builder.build(); } - private static T nvl(T obj, T elseObj) { - return obj == null ? elseObj : obj; - } - @PublicApi + @NullUnmarked public static class Builder { private GraphQLSchema graphQLSchema; - private ExecutionStrategy queryExecutionStrategy = new AsyncExecutionStrategy(); - private ExecutionStrategy mutationExecutionStrategy = new AsyncSerialExecutionStrategy(); - private ExecutionStrategy subscriptionExecutionStrategy = new SubscriptionExecutionStrategy(); + private ExecutionStrategy queryExecutionStrategy; + private ExecutionStrategy mutationExecutionStrategy; + private ExecutionStrategy subscriptionExecutionStrategy; + private DataFetcherExceptionHandler defaultExceptionHandler = new SimpleDataFetcherExceptionHandler(); private ExecutionIdProvider idProvider = DEFAULT_EXECUTION_ID_PROVIDER; private Instrumentation instrumentation = null; // deliberate default here private PreparsedDocumentProvider preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE; - private boolean doNotAddDefaultInstrumentations = false; + private boolean doNotAutomaticallyDispatchDataLoader = false; private ValueUnboxer valueUnboxer = ValueUnboxer.DEFAULT; - public Builder(GraphQLSchema graphQLSchema) { this.graphQLSchema = graphQLSchema; } @@ -261,6 +307,19 @@ public Builder subscriptionExecutionStrategy(ExecutionStrategy executionStrategy return this; } + /** + * This allows you to set a default {@link graphql.execution.DataFetcherExceptionHandler} that will be used to handle exceptions that happen + * in {@link graphql.schema.DataFetcher} invocations. + * + * @param dataFetcherExceptionHandler the default handler for data fetching exception + * + * @return this builder + */ + public Builder defaultDataFetcherExceptionHandler(DataFetcherExceptionHandler dataFetcherExceptionHandler) { + this.defaultExceptionHandler = assertNotNull(dataFetcherExceptionHandler, "The DataFetcherExceptionHandler must be non null"); + return this; + } + public Builder instrumentation(Instrumentation instrumentation) { this.instrumentation = assertNotNull(instrumentation, "Instrumentation must be non null"); return this; @@ -276,20 +335,15 @@ public Builder executionIdProvider(ExecutionIdProvider executionIdProvider) { return this; } + /** - * For performance reasons you can opt into situation where the default instrumentations (such - * as {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} will not be - * automatically added into the graphql instance. - *

    - * For most situations this is not needed unless you are really pushing the boundaries of performance - *

    - * By default a certain graphql instrumentations will be added to the mix to more easily enable certain functionality. This - * allows you to stop this behavior + * Deactivates the automatic dispatching of DataLoaders. + * If deactivated the user is responsible for dispatching the DataLoaders manually. * * @return this builder */ - public Builder doNotAddDefaultInstrumentations() { - this.doNotAddDefaultInstrumentations = true; + public Builder doNotAutomaticallyDispatchDataLoader() { + this.doNotAutomaticallyDispatchDataLoader = true; return this; } @@ -299,11 +353,21 @@ public Builder valueUnboxer(ValueUnboxer valueUnboxer) { } public GraphQL build() { - assertNotNull(graphQLSchema, "graphQLSchema must be non null"); - assertNotNull(queryExecutionStrategy, "queryStrategy must be non null"); - assertNotNull(idProvider, "idProvider must be non null"); - final Instrumentation augmentedInstrumentation = checkInstrumentationDefaultState(instrumentation, doNotAddDefaultInstrumentations); - return new GraphQL(graphQLSchema, queryExecutionStrategy, mutationExecutionStrategy, subscriptionExecutionStrategy, idProvider, augmentedInstrumentation, preparsedDocumentProvider, valueUnboxer); + // we use the data fetcher exception handler unless they set their own strategy in which case bets are off + if (queryExecutionStrategy == null) { + this.queryExecutionStrategy = new AsyncExecutionStrategy(this.defaultExceptionHandler); + } + if (mutationExecutionStrategy == null) { + this.mutationExecutionStrategy = new AsyncSerialExecutionStrategy(this.defaultExceptionHandler); + } + if (subscriptionExecutionStrategy == null) { + this.subscriptionExecutionStrategy = new SubscriptionExecutionStrategy(this.defaultExceptionHandler); + } + + if (instrumentation == null) { + this.instrumentation = SimplePerformantInstrumentation.INSTANCE; + } + return new GraphQL(this); } } @@ -321,93 +385,6 @@ public ExecutionResult execute(String query) { return execute(executionInput); } - /** - * Info: This sets context = root to be backwards compatible. - * - * @param query the query/mutation/subscription - * @param context custom object provided to each {@link graphql.schema.DataFetcher} - * - * @return an {@link ExecutionResult} which can include errors - * - * @deprecated Use {@link #execute(ExecutionInput)} - */ - @Deprecated - public ExecutionResult execute(String query, Object context) { - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) - .context(context) - .root(context) // This we are doing do be backwards compatible - .build(); - return execute(executionInput); - } - - /** - * Info: This sets context = root to be backwards compatible. - * - * @param query the query/mutation/subscription - * @param operationName the name of the operation to execute - * @param context custom object provided to each {@link graphql.schema.DataFetcher} - * - * @return an {@link ExecutionResult} which can include errors - * - * @deprecated Use {@link #execute(ExecutionInput)} - */ - @Deprecated - public ExecutionResult execute(String query, String operationName, Object context) { - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) - .operationName(operationName) - .context(context) - .root(context) // This we are doing do be backwards compatible - .build(); - return execute(executionInput); - } - - /** - * Info: This sets context = root to be backwards compatible. - * - * @param query the query/mutation/subscription - * @param context custom object provided to each {@link graphql.schema.DataFetcher} - * @param variables variable values uses as argument - * - * @return an {@link ExecutionResult} which can include errors - * - * @deprecated Use {@link #execute(ExecutionInput)} - */ - @Deprecated - public ExecutionResult execute(String query, Object context, Map variables) { - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) - .context(context) - .root(context) // This we are doing do be backwards compatible - .variables(variables) - .build(); - return execute(executionInput); - } - - /** - * Info: This sets context = root to be backwards compatible. - * - * @param query the query/mutation/subscription - * @param operationName name of the operation to execute - * @param context custom object provided to each {@link graphql.schema.DataFetcher} - * @param variables variable values uses as argument - * - * @return an {@link ExecutionResult} which can include errors - * - * @deprecated Use {@link #execute(ExecutionInput)} - */ - @Deprecated - public ExecutionResult execute(String query, String operationName, Object context, Map variables) { - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) - .operationName(operationName) - .context(context) - .root(context) // This we are doing do be backwards compatible - .variables(variables) - .build(); - return execute(executionInput); - } /** * Executes the graphql query using the provided input object builder @@ -503,31 +480,46 @@ public CompletableFuture executeAsync(UnaryOperator executeAsync(ExecutionInput executionInput) { - try { - logNotSafe.debug("Executing request. operation name: '{}'. query: '{}'. variables '{}'", executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); - executionInput = ensureInputHasId(executionInput); - - InstrumentationState instrumentationState = instrumentation.createState(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInput)); - - InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema, instrumentationState); - executionInput = instrumentation.instrumentExecutionInput(executionInput, inputInstrumentationParameters); - - InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema, instrumentationState); - InstrumentationContext executionInstrumentation = instrumentation.beginExecution(instrumentationParameters); + Profiler profiler = executionInput.isProfileExecution() ? new ProfilerImpl(executionInput.getGraphQLContext()) : Profiler.NO_OP; + EngineRunningState engineRunningState = new EngineRunningState(executionInput, profiler); + return engineRunningState.engineRun(() -> { + ExecutionInput executionInputWithId = ensureInputHasId(executionInput); + profiler.setExecutionInputAndInstrumentation(executionInputWithId, instrumentation); + engineRunningState.updateExecutionInput(executionInputWithId); + + CompletableFuture instrumentationStateCF = instrumentation.createStateAsync(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInputWithId)); + instrumentationStateCF = Async.orNullCompletedFuture(instrumentationStateCF); + + return engineRunningState.compose(instrumentationStateCF, (instrumentationState -> { + try { + InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInputWithId, this.graphQLSchema); + ExecutionInput instrumentedExecutionInput = instrumentation.instrumentExecutionInput(executionInputWithId, inputInstrumentationParameters, instrumentationState); + + InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(instrumentedExecutionInput, this.graphQLSchema); + InstrumentationContext executionInstrumentation = nonNullCtx(instrumentation.beginExecution(instrumentationParameters, instrumentationState)); + executionInstrumentation.onDispatched(); + + GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters, instrumentationState); + + CompletableFuture executionResult = parseValidateAndExecute(instrumentedExecutionInput, graphQLSchema, instrumentationState, engineRunningState, profiler); + // + // finish up instrumentation + executionResult = executionResult.whenComplete(completeInstrumentationCtxCF(executionInstrumentation)); + // + // allow instrumentation to tweak the result + executionResult = engineRunningState.compose(executionResult, (result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState))); + return executionResult; + } catch (AbortExecutionException abortException) { + return handleAbortException(executionInput, instrumentationState, abortException); + } + })); + }); + } - GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters); - CompletableFuture executionResult = parseValidateAndExecute(executionInput, graphQLSchema, instrumentationState); - // - // finish up instrumentation - executionResult = executionResult.whenComplete(executionInstrumentation::onCompleted); - // - // allow instrumentation to tweak the result - executionResult = executionResult.thenCompose(result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters)); - return executionResult; - } catch (AbortExecutionException abortException) { - return CompletableFuture.completedFuture(abortException.toExecutionResult()); - } + private CompletableFuture handleAbortException(ExecutionInput executionInput, InstrumentationState instrumentationState, AbortExecutionException abortException) { + InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema); + return instrumentation.instrumentExecutionResult(abortException.toExecutionResult(), instrumentationParameters, instrumentationState); } private ExecutionInput ensureInputHasId(ExecutionInput executionInput) { @@ -536,131 +528,96 @@ private ExecutionInput ensureInputHasId(ExecutionInput executionInput) { } String queryString = executionInput.getQuery(); String operationName = executionInput.getOperationName(); - Object context = executionInput.getContext(); + Object context = executionInput.getGraphQLContext(); return executionInput.transform(builder -> builder.executionId(idProvider.provide(queryString, operationName, context))); } - private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { + private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState, EngineRunningState engineRunningState, Profiler profiler) { AtomicReference executionInputRef = new AtomicReference<>(executionInput); Function computeFunction = transformedInput -> { // if they change the original query in the pre-parser, then we want to see it downstream from then on executionInputRef.set(transformedInput); return parseAndValidate(executionInputRef, graphQLSchema, instrumentationState); }; - PreparsedDocumentEntry preparsedDoc = preparsedDocumentProvider.getDocument(executionInput, computeFunction); - if (preparsedDoc.hasErrors()) { - return CompletableFuture.completedFuture(new ExecutionResultImpl(preparsedDoc.getErrors())); - } - - return execute(executionInputRef.get(), preparsedDoc.getDocument(), graphQLSchema, instrumentationState); + CompletableFuture preparsedDoc = preparsedDocumentProvider.getDocumentAsync(executionInput, computeFunction); + return engineRunningState.compose(preparsedDoc, (preparsedDocumentEntry -> { + if (preparsedDocumentEntry.hasErrors()) { + return CompletableFuture.completedFuture(new ExecutionResultImpl(preparsedDocumentEntry.getErrors())); + } + try { + return execute(Assert.assertNotNull(executionInputRef.get()), preparsedDocumentEntry.getDocument(), graphQLSchema, instrumentationState, engineRunningState, profiler); + } catch (AbortExecutionException e) { + return CompletableFuture.completedFuture(e.toExecutionResult()); + } + })); } private PreparsedDocumentEntry parseAndValidate(AtomicReference executionInputRef, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - ExecutionInput executionInput = executionInputRef.get(); - String query = executionInput.getQuery(); + ExecutionInput executionInput = assertNotNull(executionInputRef.get()); - logNotSafe.debug("Parsing query: '{}'...", query); - ParseResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); + ParseAndValidateResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); if (parseResult.isFailure()) { - logNotSafe.warn("Query failed to parse : '{}'", executionInput.getQuery()); - return new PreparsedDocumentEntry(parseResult.getException().toInvalidSyntaxError()); + return new PreparsedDocumentEntry(parseResult.getSyntaxException().toInvalidSyntaxError()); } else { final Document document = parseResult.getDocument(); // they may have changed the document and the variables via instrumentation so update the reference to it executionInput = executionInput.transform(builder -> builder.variables(parseResult.getVariables())); executionInputRef.set(executionInput); - logNotSafe.debug("Validating query: '{}'", query); final List errors = validate(executionInput, document, graphQLSchema, instrumentationState); if (!errors.isEmpty()) { - logNotSafe.warn("Query failed to validate : '{}'", query); - return new PreparsedDocumentEntry(errors); + return new PreparsedDocumentEntry(document, errors); } return new PreparsedDocumentEntry(document); } } - private ParseResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema, instrumentationState); - InstrumentationContext parseInstrumentation = instrumentation.beginParse(parameters); + private ParseAndValidateResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { + InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema); + InstrumentationContext parseInstrumentationCtx = nonNullCtx(instrumentation.beginParse(parameters, instrumentationState)); + parseInstrumentationCtx.onDispatched(); - Parser parser = new Parser(); - Document document; - DocumentAndVariables documentAndVariables; - try { - document = parser.parseDocument(executionInput.getQuery()); - documentAndVariables = newDocumentAndVariables() - .document(document).variables(executionInput.getVariables()).build(); - documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters); - } catch (InvalidSyntaxException e) { - parseInstrumentation.onCompleted(null, e); - return ParseResult.ofError(e); - } + ParseAndValidateResult parseResult = ParseAndValidate.parse(executionInput); + if (parseResult.isFailure()) { + parseInstrumentationCtx.onCompleted(null, parseResult.getSyntaxException()); + return parseResult; + } else { + parseInstrumentationCtx.onCompleted(parseResult.getDocument(), null); - parseInstrumentation.onCompleted(documentAndVariables.getDocument(), null); - return ParseResult.of(documentAndVariables); + DocumentAndVariables documentAndVariables = parseResult.getDocumentAndVariables(); + documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters, instrumentationState); + return ParseAndValidateResult.newResult() + .document(documentAndVariables.getDocument()).variables(documentAndVariables.getVariables()).build(); + } } private List validate(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - InstrumentationContext> validationCtx = instrumentation.beginValidation(new InstrumentationValidationParameters(executionInput, document, graphQLSchema, instrumentationState)); + InstrumentationContext> validationCtx = nonNullCtx(instrumentation.beginValidation(new InstrumentationValidationParameters(executionInput, document, graphQLSchema), instrumentationState)); + validationCtx.onDispatched(); - Validator validator = new Validator(); - List validationErrors = validator.validateDocument(graphQLSchema, document); + Predicate> validationRulePredicate = executionInput.getGraphQLContext().getOrDefault(ParseAndValidate.INTERNAL_VALIDATION_PREDICATE_HINT, r -> true); + Locale locale = executionInput.getLocale() != null ? executionInput.getLocale() : Locale.getDefault(); + List validationErrors = ParseAndValidate.validate(graphQLSchema, document, validationRulePredicate, locale); validationCtx.onCompleted(validationErrors, null); return validationErrors; } - private CompletableFuture execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { + private CompletableFuture execute(ExecutionInput executionInput, + Document document, + GraphQLSchema graphQLSchema, + InstrumentationState instrumentationState, + EngineRunningState engineRunningState, + Profiler profiler + ) { - Execution execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation, valueUnboxer); + Execution execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation, valueUnboxer, doNotAutomaticallyDispatchDataLoader); ExecutionId executionId = executionInput.getExecutionId(); - logNotSafe.debug("Executing '{}'. operation name: '{}'. query: '{}'. variables '{}'", executionId, executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); - CompletableFuture future = execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState); - future = future.whenComplete((result, throwable) -> { - if (throwable != null) { - logNotSafe.error(String.format("Execution '%s' threw exception when executing : query : '%s'. variables '%s'", executionId, executionInput.getQuery(), executionInput.getVariables()), throwable); - } else { - int errorCount = result.getErrors().size(); - if (errorCount > 0) { - log.debug("Execution '{}' completed with '{}' errors", executionId, errorCount); - } else { - log.debug("Execution '{}' completed with zero errors", executionId); - } - } - }); - return future; + return execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState, engineRunningState, profiler); } - private static Instrumentation checkInstrumentationDefaultState(Instrumentation instrumentation, boolean doNotAddDefaultInstrumentations) { - if (doNotAddDefaultInstrumentations) { - return instrumentation == null ? SimpleInstrumentation.INSTANCE : instrumentation; - } - if (instrumentation instanceof DataLoaderDispatcherInstrumentation) { - return instrumentation; - } - if (instrumentation == null) { - return new DataLoaderDispatcherInstrumentation(); - } - - // - // if we don't have a DataLoaderDispatcherInstrumentation in play, we add one. We want DataLoader to be 1st class in graphql without requiring - // people to remember to wire it in. Later we may decide to have more default instrumentations but for now its just the one - // - List instrumentationList = new ArrayList<>(); - if (instrumentation instanceof ChainedInstrumentation) { - instrumentationList.addAll(((ChainedInstrumentation) instrumentation).getInstrumentations()); - } else { - instrumentationList.add(instrumentation); - } - boolean containsDLInstrumentation = instrumentationList.stream().anyMatch(instr -> instr instanceof DataLoaderDispatcherInstrumentation); - if (!containsDLInstrumentation) { - instrumentationList.add(new DataLoaderDispatcherInstrumentation()); - } - return new ChainedInstrumentation(instrumentationList); - } } diff --git a/src/main/java/graphql/GraphQLContext.java b/src/main/java/graphql/GraphQLContext.java index 907583df95..64ec5c406b 100644 --- a/src/main/java/graphql/GraphQLContext.java +++ b/src/main/java/graphql/GraphQLContext.java @@ -1,9 +1,13 @@ package graphql; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.function.BiFunction; +import java.util.function.Consumer; +import java.util.function.Function; import java.util.stream.Stream; import static graphql.Assert.assertNotNull; @@ -17,7 +21,7 @@ * {@code * DataFetcher df = new DataFetcher() { * public Object get(DataFetchingEnvironment env) { - * GraphQLContext ctx = env.getContext() + * GraphQLContext ctx = env.getGraphqlContext() * User currentUser = ctx.getOrDefault("userKey",new AnonymousUser()) * ... * } @@ -25,7 +29,11 @@ * } * * - * You can set this up via {@link ExecutionInput.Builder#context(graphql.GraphQLContext.Builder)} + * You can set this up via {@link ExecutionInput#getGraphQLContext()} + * + * All keys and values in the context MUST be non null. + * + * The class is mutable via a thread safe implementation but it is recommended to try to use this class in an immutable way if you can. */ @PublicApi @ThreadSafe @@ -38,42 +46,271 @@ private GraphQLContext(ConcurrentMap map) { this.map = map; } - public void delete(Object key) { + /** + * Deletes a key in the context + * + * @param key the key to delete + * + * @return this GraphQLContext object + */ + public GraphQLContext delete(Object key) { map.remove(assertNotNull(key)); + return this; } + /** + * Returns a value in the context by key + * + * @param key the key to look up + * @param for two + * + * @return a value or null + */ public T get(Object key) { return (T) map.get(assertNotNull(key)); } + /** + * Returns a value in the context by key + * + * @param key the key to look up + * @param defaultValue the default value to use if these is no key entry + * @param for two + * + * @return a value or default value + */ public T getOrDefault(Object key, T defaultValue) { return (T) map.getOrDefault(assertNotNull(key), defaultValue); } + /** + * Returns a {@link Optional} value in the context by key + * + * @param key the key to look up + * @param for two + * + * @return a value or an empty optional value + */ public Optional getOrEmpty(Object key) { T t = (T) map.get(assertNotNull(key)); return Optional.ofNullable(t); } + /** + * This returns true if the value at the specified key is equal to + * {@link Boolean#TRUE} + * + * @param key the key to look up + * + * @return true if the value is equal to {@link Boolean#TRUE} + */ + public boolean getBoolean(Object key) { + Object val = map.get(assertNotNull(key)); + return Boolean.TRUE.equals(val); + } + + /** + * This returns true if the value at the specified key is equal to + * {@link Boolean#TRUE} or the default value if the key is missing + * + * @param key the key to look up + * @param defaultValue the value to use if the key is not present + * + * @return true if the value is equal to {@link Boolean#TRUE} + */ + public boolean getBoolean(Object key, Boolean defaultValue) { + Object val = map.getOrDefault(assertNotNull(key), defaultValue); + return Boolean.TRUE.equals(val); + } + + /** + * Returns true if the context contains a value for that key + * + * @param key the key to lookup + * + * @return true if there is a value for that key + */ public boolean hasKey(Object key) { return map.containsKey(assertNotNull(key)); } - public void put(Object key, Object value) { + /** + * Puts a value into the context + * + * @param key the key to set + * @param value the new value (which not must be null) + * + * @return this {@link GraphQLContext} object + */ + public GraphQLContext put(Object key, Object value) { map.put(assertNotNull(key), assertNotNull(value)); + return this; } - public void putAll(GraphQLContext context) { - assertNotNull(context); - for (Map.Entry entry : context.map.entrySet()) { + /** + * Puts all of the values into the context + * + * @param map the map of values to use + * + * @return this {@link GraphQLContext} object + */ + public GraphQLContext putAll(Map map) { + assertNotNull(map); + for (Map.Entry entry : map.entrySet()) { put(entry.getKey(), entry.getValue()); } + return this; } + /** + * Puts all of the values into the context + * + * @param context the other context to use + * + * @return this {@link GraphQLContext} object + */ + public GraphQLContext putAll(GraphQLContext context) { + assertNotNull(context); + return putAll(context.map); + } + + /** + * Puts all of the values into the context + * + * @param contextBuilder the other context to use + * + * @return this {@link GraphQLContext} object + */ + public GraphQLContext putAll(GraphQLContext.Builder contextBuilder) { + assertNotNull(contextBuilder); + return putAll(contextBuilder.build()); + } + + /** + * Puts all of the values into the context + * + * @param contextBuilderConsumer a call back to that gives out a builder to use + * + * @return this {@link GraphQLContext} object + */ + public GraphQLContext putAll(Consumer contextBuilderConsumer) { + assertNotNull(contextBuilderConsumer); + Builder builder = newContext(); + contextBuilderConsumer.accept(builder); + return putAll(builder); + } + + /** + * Attempts to compute a mapping for the specified key and its + * current mapped value (or null if there is no current mapping). + * + * @param key key with which the specified value is to be associated + * @param remappingFunction the function to compute a value + * @param for two + * + * @return the new value associated with the specified key, or null if none + */ + public T compute(Object key, BiFunction remappingFunction) { + assertNotNull(remappingFunction); + return (T) map.compute(assertNotNull(key), (k, v) -> remappingFunction.apply(k, (T) v)); + } + + /** + * If the specified key is not already associated with a value (or is mapped to null), + * attempts to compute its value using the given mapping function and enters it into this map unless null. + * + * @param key key with which the specified value is to be associated + * @param mappingFunction the function to compute a value + * @param for two + * + * @return the current (existing or computed) value associated with the specified key, or null if the computed value is null + */ + + public T computeIfAbsent(Object key, Function mappingFunction) { + return (T) map.computeIfAbsent(assertNotNull(key), assertNotNull(mappingFunction)); + } + + /** + * If the value for the specified key is present and non-null, + * attempts to compute a new mapping given the key and its current mapped value. + * + * @param key key with which the specified value is to be associated + * @param remappingFunction the function to compute a value + * @param for two + * + * @return the new value associated with the specified key, or null if none + */ + + public T computeIfPresent(Object key, BiFunction remappingFunction) { + assertNotNull(remappingFunction); + return (T) map.computeIfPresent(assertNotNull(key), (k, v) -> remappingFunction.apply(k, (T) v)); + } + + /** + * @return a stream of entries in the context + */ public Stream> stream() { return map.entrySet().stream(); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GraphQLContext that = (GraphQLContext) o; + return map.equals(that.map); + } + + @Override + public int hashCode() { + return Objects.hash(map); + } + + @Override + public String toString() { + return map.toString(); + } + + /** + * Creates a new GraphqlContext with the map of context added to it + * + * @param mapOfContext the map of context value to use + * + * @return the new GraphqlContext + */ + public static GraphQLContext of(Map mapOfContext) { + return new Builder().of(mapOfContext).build(); + } + + /** + * Creates a new GraphqlContext with the map of context added to it + * + * @param contextBuilderConsumer a callback that is given a new builder + * + * @return the new GraphqlContext + */ + public static GraphQLContext of(Consumer contextBuilderConsumer) { + Builder builder = GraphQLContext.newContext(); + contextBuilderConsumer.accept(builder); + return of(builder.map); + } + + /** + * @return a new and empty graphql context object + */ + public static GraphQLContext getDefault() { + return GraphQLContext.newContext().build(); + } + + /** + * Creates a new GraphqlContext builder + * + * @return the new builder + */ public static Builder newContext() { return new Builder(); } @@ -81,6 +318,23 @@ public static Builder newContext() { public static class Builder { private final ConcurrentMap map = new ConcurrentHashMap<>(); + public Builder put( + Object key1, Object value1 + ) { + return putImpl( + key1, value1 + ); + } + + public Object get(Object key) { + return map.get(key); + } + + public boolean getBoolean(Object key) { + return Boolean.parseBoolean(String.valueOf(get(key))); + } + + public Builder of( Object key1, Object value1 ) { @@ -141,6 +395,56 @@ public Builder of( ); } + /** + * Adds all of the values in the map into the context builder. All keys and values MUST be non null + * + * @param mapOfContext the map to put into context + * + * @return this builder + */ + public Builder of(Map mapOfContext) { + assertNotNull(mapOfContext); + for (Map.Entry entry : mapOfContext.entrySet()) { + map.put(assertNotNull(entry.getKey()), assertNotNull(entry.getValue())); + } + return this; + } + + /** + * Adds all of the values in the map into the context builder. All keys and values MUST be non null + * + * @param mapOfContext the map to put into context + * + * @return this builder + */ + public Builder putAll(Map mapOfContext) { + return of(mapOfContext); + } + + /** + * Adds all of the values in the map into the context builder. All keys and values MUST be non null + * + * @param graphQLContext a previous graphql context + * + * @return this builder + */ + public Builder of(GraphQLContext graphQLContext) { + assertNotNull(graphQLContext); + return of(graphQLContext.map); + } + + /** + * Adds all of the values in the map into the context builder. All keys and values MUST be non null + * + * @param graphQLContextBuilder a graphql context builder + * + * @return this builder + */ + public Builder of(GraphQLContext.Builder graphQLContextBuilder) { + assertNotNull(graphQLContextBuilder); + return of(graphQLContextBuilder.build()); + } + private Builder putImpl(Object... kvs) { for (int i = 0; i < kvs.length; i = i + 2) { Object k = kvs[i]; diff --git a/src/main/java/graphql/GraphQLError.java b/src/main/java/graphql/GraphQLError.java index 59706738f0..90c3527b50 100644 --- a/src/main/java/graphql/GraphQLError.java +++ b/src/main/java/graphql/GraphQLError.java @@ -1,7 +1,9 @@ package graphql; +import graphql.execution.ResultPath; import graphql.language.SourceLocation; +import org.jspecify.annotations.Nullable; import java.io.Serializable; import java.util.List; @@ -15,7 +17,7 @@ * with times frames that cross graphql-java versions. While we don't change things unnecessarily, we may inadvertently break * the serialised compatibility across versions. * - * @see GraphQL Spec - 7.2.2 Errors + * @see GraphQL Spec - 7.1.2 Errors */ @PublicApi public interface GraphQLError extends Serializable { @@ -37,8 +39,10 @@ public interface GraphQLError extends Serializable { ErrorClassification getErrorType(); /** - * The graphql spec says that the (optional) path field of any error should be a list - * of path entries - http://facebook.github.io/graphql/#sec-Errors + * The graphql spec says that the (optional) path field of any error must be + * a list of path entries starting at the root of the response + * and ending with the field associated with the error + * https://spec.graphql.org/draft/#sec-Errors.Error-Result-Format * * @return the path in list format */ @@ -51,7 +55,7 @@ default List getPath() { * should be present. Certain JSON serializers may or may interpret the error to spec, so this method * is provided to produce a map that strictly follows the specification. * - * See : http://facebook.github.io/graphql/#sec-Errors + * See : GraphQL Spec - 7.1.2 Errors * * @return a map of the error that strictly follows the specification */ @@ -66,5 +70,96 @@ default Map getExtensions() { return null; } + /** + * This can be called to turn a specification error map into {@link GraphQLError} + * + * @param specificationMap the map of values that should have come via {@link GraphQLError#toSpecification()} + * + * @return a {@link GraphQLError} + */ + static GraphQLError fromSpecification(Map specificationMap) { + return GraphqlErrorHelper.fromSpecification(specificationMap); + } + + /** + * @return a new builder of {@link GraphQLError}s + */ + static Builder newError() { + return new GraphqlErrorBuilder<>(); + } + + /** + * A builder of {@link GraphQLError}s + */ + interface Builder> { + + /** + * Sets the message of the error using {@link String#format(String, Object...)} with the arguments + * + * @param message the message + * @param formatArgs the arguments to use + * + * @return this builder + */ + B message(String message, Object... formatArgs); + + /** + * This adds locations to the error + * + * @param locations the locations to add + * + * @return this builder + */ + B locations(@Nullable List locations); + + /** + * This adds a location to the error + * + * @param location the locations to add + * + * @return this builder + */ + B location(@Nullable SourceLocation location); + /** + * Sets the path of the message + * + * @param path can be null + * + * @return this builder + */ + B path(@Nullable ResultPath path); + + /** + * Sets the path of the message + * + * @param path can be null + * + * @return this builder + */ + B path(@Nullable List path); + + /** + * Sets the {@link ErrorClassification} of the message + * + * @param errorType the error classification to use + * + * @return this builder + */ + B errorType(ErrorClassification errorType); + + /** + * Sets the extensions of the message + * + * @param extensions the extensions to use + * + * @return this builder + */ + B extensions(@Nullable Map extensions); + + /** + * @return a newly built GraphqlError + */ + GraphQLError build(); + } } diff --git a/src/main/java/graphql/GraphQLException.java b/src/main/java/graphql/GraphQLException.java index 1ad66921cf..a658769c82 100644 --- a/src/main/java/graphql/GraphQLException.java +++ b/src/main/java/graphql/GraphQLException.java @@ -1,6 +1,7 @@ package graphql; +@Internal public class GraphQLException extends RuntimeException { public GraphQLException() { @@ -18,5 +19,4 @@ public GraphQLException(Throwable cause) { super(cause); } - } diff --git a/src/main/java/graphql/GraphQLUnusualConfiguration.java b/src/main/java/graphql/GraphQLUnusualConfiguration.java new file mode 100644 index 0000000000..e96b0b7380 --- /dev/null +++ b/src/main/java/graphql/GraphQLUnusualConfiguration.java @@ -0,0 +1,413 @@ +package graphql; + +import graphql.execution.ResponseMapFactory; +import graphql.execution.incremental.IncrementalExecutionContextKeys; +import graphql.introspection.GoodFaithIntrospection; +import graphql.parser.ParserOptions; +import graphql.schema.PropertyDataFetcherHelper; + +import static graphql.Assert.assertNotNull; +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING; +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING; + +/** + * This allows you to control "unusual" aspects of the GraphQL system + * including some JVM wide settings and some per execution settings + * as well as experimental ones. + *

    + * This is named unusual because in general we don't expect you to + * have to make ths configuration by default, but you can opt into certain features + * or disable them if you want to. + */ +public class GraphQLUnusualConfiguration { + GraphQLUnusualConfiguration() { + } + + /** + * @return an element that allows you to control JVM wide parsing configuration + */ + public ParserConfig parsing() { + return new ParserConfig(this); + } + + /** + * @return an element that allows you to control JVM wide {@link graphql.schema.PropertyDataFetcher} configuration + */ + public PropertyDataFetcherConfig propertyDataFetching() { + return new PropertyDataFetcherConfig(this); + } + + /** + * @return an element that allows you to control JVM wide configuration + * of {@link graphql.introspection.GoodFaithIntrospection} + */ + public GoodFaithIntrospectionConfig goodFaithIntrospection() { + return new GoodFaithIntrospectionConfig(this); + } + + private static class BaseConfig { + protected final GraphQLUnusualConfiguration configuration; + + private BaseConfig(GraphQLUnusualConfiguration configuration) { + this.configuration = configuration; + } + + /** + * @return an element that allows you to chain multiple configuration elements + */ + public GraphQLUnusualConfiguration then() { + return configuration; + } + } + + public static class ParserConfig extends BaseConfig { + + private ParserConfig(GraphQLUnusualConfiguration configuration) { + super(configuration); + } + + /** + * By default, the Parser will not capture ignored characters. A static holds this default + * value in a JVM wide basis options object. + *

    + * Significant memory savings can be made if we do NOT capture ignored characters, + * especially in SDL parsing. + * + * @return the static default JVM value + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public ParserOptions getDefaultParserOptions() { + return ParserOptions.getDefaultParserOptions(); + } + + /** + * By default, the Parser will not capture ignored characters. A static holds this default + * value in a JVM wide basis options object. + *

    + * Significant memory savings can be made if we do NOT capture ignored characters, + * especially in SDL parsing. So we have set this to false by default. + *

    + * This static can be set to true to allow the behavior of version 16.x or before. + * + * @param options - the new default JVM parser options + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public ParserConfig setDefaultParserOptions(ParserOptions options) { + ParserOptions.setDefaultParserOptions(options); + return this; + } + + + /** + * By default, for operation parsing, the Parser will not capture ignored characters, and it will not capture line comments into AST + * elements . A static holds this default value for operation parsing in a JVM wide basis options object. + * + * @return the static default JVM value for operation parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public ParserOptions getDefaultOperationParserOptions() { + return ParserOptions.getDefaultOperationParserOptions(); + } + + /** + * By default, the Parser will not capture ignored characters or line comments. A static holds this default + * value in a JVM wide basis options object for operation parsing. + *

    + * This static can be set to true to allow the behavior of version 16.x or before. + * + * @param options - the new default JVM parser options for operation parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public ParserConfig setDefaultOperationParserOptions(ParserOptions options) { + ParserOptions.setDefaultOperationParserOptions(options); + return this; + } + + /** + * By default, for SDL parsing, the Parser will not capture ignored characters, but it will capture line comments into AST + * elements. The SDL default options allow unlimited tokens and whitespace, since a DOS attack vector is + * not commonly available via schema SDL parsing. + *

    + * A static holds this default value for SDL parsing in a JVM wide basis options object. + * + * @return the static default JVM value for SDL parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + * @see graphql.schema.idl.SchemaParser + */ + public ParserOptions getDefaultSdlParserOptions() { + return ParserOptions.getDefaultSdlParserOptions(); + } + + /** + * By default, for SDL parsing, the Parser will not capture ignored characters, but it will capture line comments into AST + * elements . A static holds this default value for operation parsing in a JVM wide basis options object. + *

    + * This static can be set to true to allow the behavior of version 16.x or before. + * + * @param options - the new default JVM parser options for SDL parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public ParserConfig setDefaultSdlParserOptions(ParserOptions options) { + ParserOptions.setDefaultSdlParserOptions(options); + return this; + } + } + + public static class PropertyDataFetcherConfig extends BaseConfig { + private PropertyDataFetcherConfig(GraphQLUnusualConfiguration configuration) { + super(configuration); + } + + /** + * PropertyDataFetcher caches the methods and fields that map from a class to a property for runtime performance reasons + * as well as negative misses. + *

    + * However during development you might be using an assistance tool like JRebel to allow you to tweak your code base and this + * caching may interfere with this. So you can call this method to clear the cache. A JRebel plugin could + * be developed to do just that. + */ + @SuppressWarnings("unused") + public PropertyDataFetcherConfig clearReflectionCache() { + PropertyDataFetcherHelper.clearReflectionCache(); + return this; + } + + /** + * This can be used to control whether PropertyDataFetcher will use {@link java.lang.reflect.Method#setAccessible(boolean)} to gain access to property + * values. By default, it PropertyDataFetcher WILL use setAccessible. + * + * @param flag whether to use setAccessible + * + * @return the previous value of the flag + */ + public boolean setUseSetAccessible(boolean flag) { + return PropertyDataFetcherHelper.setUseSetAccessible(flag); + } + + /** + * This can be used to control whether PropertyDataFetcher will cache negative lookups for a property for performance reasons. By default it PropertyDataFetcher WILL cache misses. + * + * @param flag whether to cache misses + * + * @return the previous value of the flag + */ + public boolean setUseNegativeCache(boolean flag) { + return PropertyDataFetcherHelper.setUseNegativeCache(flag); + } + } + + public static class GoodFaithIntrospectionConfig extends BaseConfig { + private GoodFaithIntrospectionConfig(GraphQLUnusualConfiguration configuration) { + super(configuration); + } + + /** + * @return true if good faith introspection is enabled + */ + public boolean isEnabledJvmWide() { + return GoodFaithIntrospection.isEnabledJvmWide(); + } + + /** + * This allows you to disable good faith introspection, which is on by default. + * + * @param enabled the desired state + * + * @return the previous state + */ + public GoodFaithIntrospectionConfig enabledJvmWide(boolean enabled) { + GoodFaithIntrospection.enabledJvmWide(enabled); + return this; + } + } + + /* + * =============================================== + * Per GraphqlContext code down here + * =============================================== + */ + + @SuppressWarnings("DataFlowIssue") + public static class GraphQLContextConfiguration { + // it will be one or the other types of GraphQLContext + private final GraphQLContext graphQLContext; + private final GraphQLContext.Builder graphQLContextBuilder; + + GraphQLContextConfiguration(GraphQLContext graphQLContext) { + this.graphQLContext = graphQLContext; + this.graphQLContextBuilder = null; + } + + GraphQLContextConfiguration(GraphQLContext.Builder graphQLContextBuilder) { + this.graphQLContextBuilder = graphQLContextBuilder; + this.graphQLContext = null; + } + + /** + * @return an element that allows you to control incremental support, that is @defer configuration + */ + public IncrementalSupportConfig incrementalSupport() { + return new IncrementalSupportConfig(this); + } + + /** + * @return an element that allows you to precisely control {@link org.dataloader.DataLoader} behavior + * in graphql-java. + */ + public DataloaderConfig dataloaderConfig() { + return new DataloaderConfig(this); + } + + /** + * @return an element that allows you to control the {@link ResponseMapFactory} used + */ + public ResponseMapFactoryConfig responseMapFactory() { + return new ResponseMapFactoryConfig(this); + } + + private void put(String named, Object value) { + if (graphQLContext != null) { + graphQLContext.put(named, value); + } else { + assertNotNull(graphQLContextBuilder).put(named, value); + } + } + + private boolean getBoolean(String named) { + if (graphQLContext != null) { + return graphQLContext.getBoolean(named); + } else { + return assertNotNull(graphQLContextBuilder).getBoolean(named); + } + } + + private T get(String named) { + if (graphQLContext != null) { + return graphQLContext.get(named); + } else { + //noinspection unchecked + return (T) assertNotNull(graphQLContextBuilder).get(named); + } + } + } + + private static class BaseContextConfig { + protected final GraphQLContextConfiguration contextConfig; + + private BaseContextConfig(GraphQLContextConfiguration contextConfig) { + this.contextConfig = contextConfig; + } + + /** + * @return an element that allows you to chain multiple configuration elements + */ + public GraphQLContextConfiguration then() { + return contextConfig; + } + } + + public static class IncrementalSupportConfig extends BaseContextConfig { + private IncrementalSupportConfig(GraphQLContextConfiguration contextConfig) { + super(contextConfig); + } + + /** + * @return true if @defer and @stream behaviour is enabled for this execution. + */ + public boolean isIncrementalSupportEnabled() { + return contextConfig.getBoolean(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT); + } + + /** + * This controls whether @defer and @stream behaviour is enabled for this execution. + */ + @ExperimentalApi + public IncrementalSupportConfig enableIncrementalSupport(boolean enable) { + contextConfig.put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, enable); + return this; + } + + /** + * This controls whether @defer field execution starts as early as possible. + */ + @ExperimentalApi + public IncrementalSupportConfig enableEarlyIncrementalFieldExecution(boolean enable) { + contextConfig.put(IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START, enable); + return this; + } + } + + public static class DataloaderConfig extends BaseContextConfig { + private DataloaderConfig(GraphQLContextConfiguration contextConfig) { + super(contextConfig); + } + + /** + * returns true if chained data loader dispatching is enabled + */ + public boolean isDataLoaderChainingEnabled() { + return contextConfig.getBoolean(ENABLE_DATA_LOADER_CHAINING); + } + + public boolean isDataLoaderExhaustedDispatchingEnabled() { + return contextConfig.get(ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING); + } + + /** + * Enables the ability that chained DataLoaders are dispatched automatically. + */ + @ExperimentalApi + public DataloaderConfig enableDataLoaderChaining(boolean enable) { + contextConfig.put(ENABLE_DATA_LOADER_CHAINING, enable); + return this; + } + + /** + * Enables a dispatching strategy that will dispatch as long as there is no + * other data fetcher or batch loader running. + */ + @ExperimentalApi + public DataloaderConfig enableDataLoaderExhaustedDispatching(boolean enable) { + contextConfig.put(ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, enable); + return this; + } + + + } + + public static class ResponseMapFactoryConfig extends BaseContextConfig { + private ResponseMapFactoryConfig(GraphQLContextConfiguration contextConfig) { + super(contextConfig); + } + + /** + * @return the {@link ResponseMapFactory} in play - this can be null + */ + @ExperimentalApi + public ResponseMapFactory getOr(ResponseMapFactory defaultFactory) { + ResponseMapFactory responseMapFactory = contextConfig.get(ResponseMapFactory.class.getCanonicalName()); + return responseMapFactory != null ? responseMapFactory : defaultFactory; + } + + /** + * This controls the {@link ResponseMapFactory} to use for this request + */ + @ExperimentalApi + public ResponseMapFactoryConfig setFactory(ResponseMapFactory factory) { + contextConfig.put(ResponseMapFactory.class.getCanonicalName(), factory); + return this; + } + } +} diff --git a/src/main/java/graphql/GraphqlErrorBuilder.java b/src/main/java/graphql/GraphqlErrorBuilder.java index f02b451914..efca0a3d69 100644 --- a/src/main/java/graphql/GraphqlErrorBuilder.java +++ b/src/main/java/graphql/GraphqlErrorBuilder.java @@ -1,22 +1,27 @@ package graphql; import graphql.execution.DataFetcherResult; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.language.SourceLocation; import graphql.schema.DataFetchingEnvironment; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import static graphql.Assert.assertNotNull; /** * This helps you build {@link graphql.GraphQLError}s and also has a quick way to make a {@link graphql.execution.DataFetcherResult}s * from that error. + * + * @param this base class allows you to derive new classes from this base error builder */ +@SuppressWarnings("unchecked") @PublicApi -public class GraphqlErrorBuilder { +public class GraphqlErrorBuilder> implements GraphQLError.Builder { private String message; private List path; @@ -24,12 +29,34 @@ public class GraphqlErrorBuilder { private ErrorClassification errorType = ErrorType.DataFetchingException; private Map extensions = null; + public String getMessage() { + return message; + } + + @Nullable + public List getPath() { + return path; + } + + @Nullable + public List getLocations() { + return locations; + } + + public ErrorClassification getErrorType() { + return errorType; + } + + @Nullable + public Map getExtensions() { + return extensions; + } /** * @return a builder of {@link graphql.GraphQLError}s */ - public static GraphqlErrorBuilder newError() { - return new GraphqlErrorBuilder(); + public static GraphqlErrorBuilder newError() { + return new GraphqlErrorBuilder<>(); } /** @@ -40,52 +67,62 @@ public static GraphqlErrorBuilder newError() { * * @return a builder of {@link graphql.GraphQLError}s */ - public static GraphqlErrorBuilder newError(DataFetchingEnvironment dataFetchingEnvironment) { - return new GraphqlErrorBuilder() + public static GraphqlErrorBuilder newError(DataFetchingEnvironment dataFetchingEnvironment) { + return new GraphqlErrorBuilder<>() .location(dataFetchingEnvironment.getField().getSourceLocation()) .path(dataFetchingEnvironment.getExecutionStepInfo().getPath()); } - private GraphqlErrorBuilder() { + protected GraphqlErrorBuilder() { } - public GraphqlErrorBuilder message(String message, Object... formatArgs) { + public B message(String message, Object... formatArgs) { if (formatArgs == null || formatArgs.length == 0) { this.message = assertNotNull(message); } else { this.message = String.format(assertNotNull(message), formatArgs); } - return this; + return (B) this; } - public GraphqlErrorBuilder locations(List locations) { - this.locations.addAll(assertNotNull(locations)); - return this; + public B locations(@Nullable List locations) { + if (locations != null) { + this.locations.addAll(locations); + } else { + this.locations = null; + } + return (B) this; } - public GraphqlErrorBuilder location(SourceLocation location) { - this.locations.add(assertNotNull(location)); - return this; + public B location(@Nullable SourceLocation location) { + if (locations != null) { + this.locations.add(location); + } + return (B) this; } - public GraphqlErrorBuilder path(ExecutionPath path) { - this.path = assertNotNull(path).toList(); - return this; + public B path(@Nullable ResultPath path) { + if (path != null) { + this.path = path.toList(); + } else { + this.path = null; + } + return (B) this; } - public GraphqlErrorBuilder path(List path) { - this.path = assertNotNull(path); - return this; + public B path(@Nullable List path) { + this.path = path; + return (B) this; } - public GraphqlErrorBuilder errorType(ErrorClassification errorType) { + public B errorType(ErrorClassification errorType) { this.errorType = assertNotNull(errorType); - return this; + return (B) this; } - public GraphqlErrorBuilder extensions(Map extensions) { - this.extensions = assertNotNull(extensions); - return this; + public B extensions(@Nullable Map extensions) { + this.extensions = extensions; + return (B) this; } /** @@ -96,6 +133,18 @@ public GraphQLError build() { return new GraphqlErrorImpl(message, locations, errorType, path, extensions); } + /** + * A simple implementation of a {@link GraphQLError}. + *

    + * This provides {@link #hashCode()} and {@link #equals(Object)} methods that afford comparison with other + * {@link GraphQLError} implementations. However, the values provided in the following fields must + * in turn implement {@link #hashCode()} and {@link #equals(Object)} for this to function correctly: + *

      + *
    • the values in the {@link #getPath()} {@link List}. + *
    • the {@link #getErrorType()} {@link ErrorClassification}. + *
    • the values in the {@link #getExtensions()} {@link Map}. + *
    + */ private static class GraphqlErrorImpl implements GraphQLError { private final String message; private final List locations; @@ -135,6 +184,33 @@ public List getPath() { public Map getExtensions() { return extensions; } + + @Override + public String toString() { + return message; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof GraphQLError)) return false; + GraphQLError that = (GraphQLError) o; + return Objects.equals(getMessage(), that.getMessage()) + && Objects.equals(getLocations(), that.getLocations()) + && Objects.equals(getErrorType(), that.getErrorType()) + && Objects.equals(getPath(), that.getPath()) + && Objects.equals(getExtensions(), that.getExtensions()); + } + + @Override + public int hashCode() { + return Objects.hash( + getMessage(), + getLocations(), + getErrorType(), + getPath(), + getExtensions()); + } } /** @@ -142,7 +218,7 @@ public Map getExtensions() { * * @return a new data fetcher result that contains the built error */ - public DataFetcherResult toResult() { + public DataFetcherResult toResult() { return DataFetcherResult.newResult() .error(build()) .build(); diff --git a/src/main/java/graphql/GraphqlErrorHelper.java b/src/main/java/graphql/GraphqlErrorHelper.java index 454bdc2ff0..0f4f834a72 100644 --- a/src/main/java/graphql/GraphqlErrorHelper.java +++ b/src/main/java/graphql/GraphqlErrorHelper.java @@ -1,22 +1,27 @@ package graphql; +import com.google.common.collect.Maps; import graphql.language.SourceLocation; +import graphql.util.FpKit; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; -import static java.util.stream.Collectors.toList; +import static graphql.collect.ImmutableKit.mapAndDropNulls; /** * This little helper allows GraphQlErrors to implement * common things (hashcode/ equals ) and to specification more easily */ -@SuppressWarnings("SimplifiableIfStatement") +@SuppressWarnings({"SimplifiableIfStatement", "unchecked"}) +@Internal public class GraphqlErrorHelper { public static Map toSpecification(GraphQLError error) { - Map errorMap = new LinkedHashMap<>(); + Map errorMap = Maps.newLinkedHashMapWithExpectedSize(4); errorMap.put("message", error.getMessage()); if (error.getLocations() != null) { errorMap.put("locations", locations(error.getLocations())); @@ -36,7 +41,7 @@ public static Map toSpecification(GraphQLError error) { } else { extensions = new LinkedHashMap<>(); } - // put in the classification unless its already there + // put in the classification unless it's already there if (!extensions.containsKey("classification")) { extensions.put("classification", errorClassification.toSpecification(error)); } @@ -49,21 +54,94 @@ public static Map toSpecification(GraphQLError error) { } public static Object locations(List locations) { - return locations.stream().map(GraphqlErrorHelper::location).collect(toList()); + return mapAndDropNulls(locations, GraphqlErrorHelper::location); } + /** + * Positive integers starting from 1 required for error locations, + * from the spec ... + * + * @param location the source location in play + * + * @return a value for source location of the error + */ public static Object location(SourceLocation location) { - Map map = new LinkedHashMap<>(); - map.put("line", location.getLine()); - map.put("column", location.getColumn()); + if (location == null) { + return null; + } + int line = location.getLine(); + int column = location.getColumn(); + if (line < 1 || column < 1) { + return null; + } + Map map = Maps.newLinkedHashMapWithExpectedSize(2); + map.put("line", line); + map.put("column", column); return map; } + static List fromSpecification(List> specificationMaps) { + List list = FpKit.arrayListSizedTo(specificationMaps); + for (Map specificationMap : specificationMaps) { + list.add(fromSpecification(specificationMap)); + } + return list; + } + + static GraphQLError fromSpecification(Map specificationMap) { + GraphQLError.Builder errorBuilder = GraphQLError.newError(); + // builder will enforce not null message + errorBuilder.message((String) specificationMap.get("message")); + extractLocations(errorBuilder, specificationMap); + extractPath(errorBuilder, specificationMap); + extractExtensions(errorBuilder, specificationMap); + return errorBuilder.build(); + } + + private static void extractPath(GraphQLError.Builder errorBuilder, Map rawError) { + List path = (List) rawError.get("path"); + if (path != null) { + errorBuilder.path(path); + } + } + + private static void extractExtensions(GraphQLError.Builder errorBuilder, Map rawError) { + Map extensions = (Map) rawError.get("extensions"); + if (extensions != null) { + errorBuilder.extensions(extensions); + Object classification = extensions.get("classification"); + if (classification != null) { + ErrorClassification errorClassification = ErrorClassification.errorClassification((String) classification); + errorBuilder.errorType(errorClassification); + } + } + + } + + private static void extractLocations(GraphQLError.Builder errorBuilder, Map rawError) { + List locations = (List) rawError.get("locations"); + if (locations != null) { + List sourceLocations = new ArrayList<>(locations.size()); + for (Object locationObj : locations) { + Map location = (Map) locationObj; + if (location != null) { + Integer line = (Integer) location.get("line"); + Integer column = (Integer) location.get("column"); + if (line != null && column != null) { + sourceLocations.add(new SourceLocation(line, column)); + } + } + } + errorBuilder.locations(sourceLocations); + } + } + public static int hashCode(GraphQLError dis) { - int result = dis.getMessage() != null ? dis.getMessage().hashCode() : 0; - result = 31 * result + (dis.getLocations() != null ? dis.getLocations().hashCode() : 0); - result = 31 * result + (dis.getPath() != null ? dis.getPath().hashCode() : 0); - result = 31 * result + dis.getErrorType().hashCode(); + int result = 1; + result = 31 * result + Objects.hashCode(dis.getMessage()); + result = 31 * result + Objects.hashCode(dis.getLocations()); + result = 31 * result + Objects.hashCode(dis.getPath()); + result = 31 * result + Objects.hashCode(dis.getErrorType()); return result; } @@ -71,16 +149,21 @@ public static boolean equals(GraphQLError dis, Object o) { if (dis == o) { return true; } - if (o == null || dis.getClass() != o.getClass()) return false; + if (o == null || dis.getClass() != o.getClass()) { + return false; + } GraphQLError dat = (GraphQLError) o; - if (dis.getMessage() != null ? !dis.getMessage().equals(dat.getMessage()) : dat.getMessage() != null) + if (!Objects.equals(dis.getMessage(), dat.getMessage())) { return false; - if (dis.getLocations() != null ? !dis.getLocations().equals(dat.getLocations()) : dat.getLocations() != null) + } + if (!Objects.equals(dis.getLocations(), dat.getLocations())) { return false; - if (dis.getPath() != null ? !dis.getPath().equals(dat.getPath()) : dat.getPath() != null) + } + if (!Objects.equals(dis.getPath(), dat.getPath())) { return false; + } return dis.getErrorType() == dat.getErrorType(); } } diff --git a/src/main/java/graphql/Internal.java b/src/main/java/graphql/Internal.java index 8be75e560b..cf9d0c3e4b 100644 --- a/src/main/java/graphql/Internal.java +++ b/src/main/java/graphql/Internal.java @@ -4,9 +4,11 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PACKAGE; import static java.lang.annotation.ElementType.TYPE; /** @@ -16,6 +18,6 @@ * In general unnecessary changes will be avoided but you should not depend on internal classes being stable */ @Retention(RetentionPolicy.RUNTIME) -@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD}) -public @interface Internal { +@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD, PACKAGE, ANNOTATION_TYPE}) +public @interface Internal { } diff --git a/src/main/java/graphql/InvalidSyntaxError.java b/src/main/java/graphql/InvalidSyntaxError.java index 5c6146c97e..69451cb689 100644 --- a/src/main/java/graphql/InvalidSyntaxError.java +++ b/src/main/java/graphql/InvalidSyntaxError.java @@ -8,6 +8,7 @@ import static java.util.Collections.singletonList; +@Internal public class InvalidSyntaxError implements GraphQLError { private final String message; diff --git a/src/main/java/graphql/Mutable.java b/src/main/java/graphql/Mutable.java new file mode 100644 index 0000000000..5cc1b30e4c --- /dev/null +++ b/src/main/java/graphql/Mutable.java @@ -0,0 +1,16 @@ +package graphql; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; + +/** + * This marks a type as mutable which means after constructing it can be changed. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(value = {TYPE,METHOD}) +public @interface Mutable { +} diff --git a/src/main/java/graphql/ParseAndValidate.java b/src/main/java/graphql/ParseAndValidate.java new file mode 100644 index 0000000000..0ecb17947d --- /dev/null +++ b/src/main/java/graphql/ParseAndValidate.java @@ -0,0 +1,134 @@ +package graphql; + +import graphql.language.Document; +import graphql.parser.InvalidSyntaxException; +import graphql.parser.Parser; +import graphql.parser.ParserEnvironment; +import graphql.parser.ParserOptions; +import graphql.schema.GraphQLSchema; +import graphql.validation.ValidationError; +import graphql.validation.Validator; +import org.jspecify.annotations.NonNull; + +import java.util.List; +import java.util.Locale; +import java.util.function.Predicate; + +import static java.util.Optional.ofNullable; + +/** + * This class allows you to parse and validate a graphql query without executing it. It will tell you + * if it's syntactically valid and also semantically valid according to the graphql specification + * and the provided schema. + */ +@PublicApi +public class ParseAndValidate { + + /** + * This {@link GraphQLContext} hint can be used to supply a Predicate to the Validator so that certain rules can be skipped. + * + * This is an internal capability that you should use at your own risk. While we intend for this to be present for some time, the validation + * rule class names may change, as may this mechanism. + */ + @Internal + public static final String INTERNAL_VALIDATION_PREDICATE_HINT = "graphql.ParseAndValidate.Predicate"; + + /** + * This can be called to parse and validate a graphql query against a schema, which is useful if you want to know if it would be acceptable + * for execution. + * + * @param graphQLSchema the schema to validate against + * @param executionInput the execution input containing the query + * + * @return a result object that indicates how this operation went + */ + public static ParseAndValidateResult parseAndValidate(@NonNull GraphQLSchema graphQLSchema, @NonNull ExecutionInput executionInput) { + ParseAndValidateResult result = parse(executionInput); + if (!result.isFailure()) { + List errors = validate(graphQLSchema, result.getDocument(), executionInput.getLocale()); + return result.transform(builder -> builder.validationErrors(errors)); + } + return result; + } + + /** + * This can be called to parse (but not validate) a graphql query. + * + * @param executionInput the input containing the query + * + * @return a result object that indicates how this operation went + */ + public static ParseAndValidateResult parse(@NonNull ExecutionInput executionInput) { + try { + // + // we allow the caller to specify new parser options by context + ParserOptions parserOptions = executionInput.getGraphQLContext().get(ParserOptions.class); + // we use the query parser options by default if they are not specified + parserOptions = ofNullable(parserOptions).orElse(ParserOptions.getDefaultOperationParserOptions()); + Parser parser = new Parser(); + Locale locale = executionInput.getLocale() == null ? Locale.getDefault() : executionInput.getLocale(); + ParserEnvironment parserEnvironment = ParserEnvironment.newParserEnvironment() + .document(executionInput.getQuery()).parserOptions(parserOptions) + .locale(locale) + .build(); + Document document = parser.parseDocument(parserEnvironment); + return ParseAndValidateResult.newResult().document(document).variables(executionInput.getVariables()).build(); + } catch (InvalidSyntaxException e) { + return ParseAndValidateResult.newResult().syntaxException(e).variables(executionInput.getVariables()).build(); + } + } + + /** + * This can be called to validate a parsed graphql query. + * + * @param graphQLSchema the graphql schema to validate against + * @param parsedDocument the previously parsed document + * @param locale the current locale + * + * @return a result object that indicates how this operation went + */ + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Locale locale) { + return validate(graphQLSchema, parsedDocument, ruleClass -> true, locale); + } + + /** + * This can be called to validate a parsed graphql query, with the JVM default locale. + * + * @param graphQLSchema the graphql schema to validate against + * @param parsedDocument the previously parsed document + * + * @return a result object that indicates how this operation went + */ + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument) { + return validate(graphQLSchema, parsedDocument, ruleClass -> true, Locale.getDefault()); + } + + /** + * This can be called to validate a parsed graphql query. + * + * @param graphQLSchema the graphql schema to validate against + * @param parsedDocument the previously parsed document + * @param rulePredicate this predicate is used to decide what validation rules will be applied + * @param locale the current locale + * + * @return a result object that indicates how this operation went + */ + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Predicate> rulePredicate, @NonNull Locale locale) { + Validator validator = new Validator(); + return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, locale); + } + + /** + * This can be called to validate a parsed graphql query, with the JVM default locale. + * + * @param graphQLSchema the graphql schema to validate against + * @param parsedDocument the previously parsed document + * @param rulePredicate this predicate is used to decide what validation rules will be applied + * + * @return a result object that indicates how this operation went + */ + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Predicate> rulePredicate) { + Validator validator = new Validator(); + return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, Locale.getDefault()); + } +} diff --git a/src/main/java/graphql/ParseAndValidateResult.java b/src/main/java/graphql/ParseAndValidateResult.java new file mode 100644 index 0000000000..d7f1332e90 --- /dev/null +++ b/src/main/java/graphql/ParseAndValidateResult.java @@ -0,0 +1,133 @@ +package graphql; + +import graphql.collect.ImmutableKit; +import graphql.execution.instrumentation.DocumentAndVariables; +import graphql.language.Document; +import graphql.parser.InvalidSyntaxException; +import graphql.validation.ValidationError; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + * A result object used in {@link graphql.ParseAndValidate} helper that indicates the outcomes of a parse + * and validate operation. + */ +@PublicApi +public class ParseAndValidateResult { + + private final Document document; + private final Map variables; + private final InvalidSyntaxException syntaxException; + private final List validationErrors; + + private ParseAndValidateResult(Builder builder) { + this.document = builder.document; + this.variables = builder.variables == null ? ImmutableKit.emptyMap() : builder.variables; + this.syntaxException = builder.syntaxException; + this.validationErrors = builder.validationErrors == null ? ImmutableKit.emptyList() : builder.validationErrors; + } + + /** + * @return true if there was a parse exception or the validation failed + */ + public boolean isFailure() { + return syntaxException != null || !validationErrors.isEmpty(); + } + + /** + * @return the parsed document or null if it's syntactically invalid. + */ + public Document getDocument() { + return document; + } + + /** + * @return the document variables or null if it's syntactically invalid. + */ + public Map getVariables() { + return variables; + } + + /** + * @return the parsed document and variables or null if it's syntactically invalid. + */ + public DocumentAndVariables getDocumentAndVariables() { + if (document != null) { + return DocumentAndVariables.newDocumentAndVariables().document(document).variables(variables).build(); + } + return null; + } + + /** + * @return the syntax exception or null if it's syntactically valid. + */ + public InvalidSyntaxException getSyntaxException() { + return syntaxException; + } + + /** + * @return a list of validation errors, which might be empty if it's syntactically invalid. + */ + public List getValidationErrors() { + return validationErrors; + } + + /** + * A list of all the errors (parse and validate) that have occurred + * + * @return the errors that have occurred or empty list if there are none + */ + public List getErrors() { + List errors = new ArrayList<>(); + if (syntaxException != null) { + errors.add(syntaxException.toInvalidSyntaxError()); + } + errors.addAll(validationErrors); + return errors; + } + + public ParseAndValidateResult transform(Consumer builderConsumer) { + Builder builder = new Builder() + .document(document).variables(variables).syntaxException(syntaxException).validationErrors(validationErrors); + builderConsumer.accept(builder); + return builder.build(); + } + + public static Builder newResult() { + return new Builder(); + } + + public static class Builder { + private Document document; + private Map variables = ImmutableKit.emptyMap(); + private InvalidSyntaxException syntaxException; + private List validationErrors = ImmutableKit.emptyList(); + + public Builder document(Document document) { + this.document = document; + return this; + } + + public Builder variables(Map variables) { + this.variables = variables; + return this; + } + + public Builder validationErrors(List validationErrors) { + this.validationErrors = validationErrors; + return this; + } + + public Builder syntaxException(InvalidSyntaxException syntaxException) { + this.syntaxException = syntaxException; + return this; + } + + public ParseAndValidateResult build() { + return new ParseAndValidateResult(this); + } + } +} diff --git a/src/main/java/graphql/ParseResult.java b/src/main/java/graphql/ParseResult.java deleted file mode 100644 index eeec599a7c..0000000000 --- a/src/main/java/graphql/ParseResult.java +++ /dev/null @@ -1,42 +0,0 @@ -package graphql; - -import graphql.execution.instrumentation.DocumentAndVariables; -import graphql.language.Document; -import graphql.parser.InvalidSyntaxException; - -import java.util.Map; - -@Internal -public class ParseResult { - private final DocumentAndVariables documentAndVariables; - private final InvalidSyntaxException exception; - - public ParseResult(DocumentAndVariables documentAndVariables, InvalidSyntaxException exception) { - this.documentAndVariables = documentAndVariables; - this.exception = exception; - } - - public boolean isFailure() { - return documentAndVariables == null; - } - - public Document getDocument() { - return documentAndVariables.getDocument(); - } - - public Map getVariables() { - return documentAndVariables.getVariables(); - } - - public InvalidSyntaxException getException() { - return exception; - } - - public static ParseResult of(DocumentAndVariables document) { - return new ParseResult(document, null); - } - - public static ParseResult ofError(InvalidSyntaxException e) { - return new ParseResult(null, e); - } -} diff --git a/src/main/java/graphql/Profiler.java b/src/main/java/graphql/Profiler.java new file mode 100644 index 0000000000..cdfed60638 --- /dev/null +++ b/src/main/java/graphql/Profiler.java @@ -0,0 +1,59 @@ +package graphql; + +import graphql.execution.EngineRunningObserver; +import graphql.execution.ResultPath; +import graphql.execution.instrumentation.Instrumentation; +import graphql.language.OperationDefinition; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLOutputType; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +@Internal +@NullMarked +public interface Profiler { + + + Profiler NO_OP = new Profiler() { + }; + + + default void setExecutionInputAndInstrumentation(ExecutionInput executionInput, Instrumentation instrumentation) { + + } + + default void dataLoaderUsed(String dataLoaderName) { + + + } + + default void fieldFetched(Object fetchedObject, DataFetcher originalDataFetcher, DataFetcher dataFetcher, ResultPath path, GraphQLFieldDefinition fieldDef, GraphQLOutputType parentType) { + + } + + default @Nullable EngineRunningObserver wrapEngineRunningObserver(@Nullable EngineRunningObserver engineRunningObserver) { + return engineRunningObserver; + } + + default void operationDefinition(OperationDefinition operationDefinition) { + + } + + default void oldStrategyDispatchingAll(int level) { + + } + + default void batchLoadedOldStrategy(String name, int level, int count) { + + } + + + default void batchLoadedNewStrategy(String dataLoaderName, Integer level, int count, boolean delayed, boolean chained) { + + } + + default void manualDispatch(String dataLoaderName, int level, int count) { + + } +} diff --git a/src/main/java/graphql/ProfilerImpl.java b/src/main/java/graphql/ProfilerImpl.java new file mode 100644 index 0000000000..1f42c6781d --- /dev/null +++ b/src/main/java/graphql/ProfilerImpl.java @@ -0,0 +1,172 @@ +package graphql; + +import graphql.execution.EngineRunningObserver; +import graphql.execution.ExecutionId; +import graphql.execution.ResultPath; +import graphql.execution.instrumentation.ChainedInstrumentation; +import graphql.execution.instrumentation.Instrumentation; +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys; +import graphql.introspection.Introspection; +import graphql.language.OperationDefinition; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.PropertyDataFetcher; +import graphql.schema.SingletonPropertyDataFetcher; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicLong; + +@Internal +@NullMarked +public class ProfilerImpl implements Profiler { + + private volatile long startTime; + private volatile long endTime; + private volatile long lastStartTime; + private final AtomicLong engineTotalRunningTime = new AtomicLong(); + + final ProfilerResult profilerResult = new ProfilerResult(); + + public ProfilerImpl(GraphQLContext graphQLContext) { + // No real work can happen here, since the engine didn't "officially" start yet. + graphQLContext.put(ProfilerResult.PROFILER_CONTEXT_KEY, profilerResult); + } + + @Override + public void setExecutionInputAndInstrumentation(ExecutionInput executionInput, Instrumentation instrumentation) { + profilerResult.setExecutionId(executionInput.getExecutionIdNonNull()); + boolean dataLoaderChainingEnabled = executionInput.getGraphQLContext().getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, false); + profilerResult.setDataLoaderChainingEnabled(dataLoaderChainingEnabled); + + List instrumentationClasses = new ArrayList<>(); + collectInstrumentationClasses(instrumentationClasses, instrumentation); + profilerResult.setInstrumentationClasses(instrumentationClasses); + } + + private void collectInstrumentationClasses(List result, Instrumentation instrumentation) { + if (instrumentation instanceof ChainedInstrumentation) { + ChainedInstrumentation chainedInstrumentation = (ChainedInstrumentation) instrumentation; + for (Instrumentation child : chainedInstrumentation.getInstrumentations()) { + collectInstrumentationClasses(result, child); + } + } else { + result.add(instrumentation.getClass().getName()); + } + } + + + @Override + public void fieldFetched(Object fetchedObject, DataFetcher originalDataFetcher, DataFetcher dataFetcher, ResultPath path, GraphQLFieldDefinition fieldDef, GraphQLOutputType parentType) { + String key = "/" + String.join("/", path.getKeysOnly()); + if (Introspection.isIntrospectionTypes(GraphQLTypeUtil.unwrapAll(fieldDef.getType())) + || Introspection.isIntrospectionTypes(GraphQLTypeUtil.unwrapAll(parentType)) + || fieldDef.getName().equals(Introspection.SchemaMetaFieldDef.getName()) + || fieldDef.getName().equals(Introspection.TypeMetaFieldDef.getName()) + || fieldDef.getName().equals(Introspection.TypeNameMetaFieldDef.getName())) { + return; + } + profilerResult.addFieldFetched(key); + profilerResult.incrementDataFetcherInvocationCount(key); + ProfilerResult.DataFetcherType dataFetcherType; + if (dataFetcher instanceof PropertyDataFetcher || dataFetcher instanceof SingletonPropertyDataFetcher) { + dataFetcherType = ProfilerResult.DataFetcherType.TRIVIAL_DATA_FETCHER; + } else if (originalDataFetcher instanceof PropertyDataFetcher || originalDataFetcher instanceof SingletonPropertyDataFetcher) { + dataFetcherType = ProfilerResult.DataFetcherType.WRAPPED_TRIVIAL_DATA_FETCHER; + } else { + dataFetcherType = ProfilerResult.DataFetcherType.CUSTOM; + // we only record the type of the result if it is not a PropertyDataFetcher + ProfilerResult.DataFetcherResultType dataFetcherResultType; + if (fetchedObject instanceof CompletableFuture) { + CompletableFuture completableFuture = (CompletableFuture) fetchedObject; + if (completableFuture.isDone()) { + dataFetcherResultType = ProfilerResult.DataFetcherResultType.COMPLETABLE_FUTURE_COMPLETED; + } else { + dataFetcherResultType = ProfilerResult.DataFetcherResultType.COMPLETABLE_FUTURE_NOT_COMPLETED; + } + } else { + dataFetcherResultType = ProfilerResult.DataFetcherResultType.MATERIALIZED; + } + profilerResult.setDataFetcherResultType(key, dataFetcherResultType); + } + + profilerResult.setDataFetcherType(key, dataFetcherType); + } + + @Override + public EngineRunningObserver wrapEngineRunningObserver(@Nullable EngineRunningObserver engineRunningObserver) { + // nothing to wrap here + return new EngineRunningObserver() { + @Override + public void runningStateChanged(@Nullable ExecutionId executionId, GraphQLContext graphQLContext, RunningState runningState) { + runningStateChangedImpl(executionId, graphQLContext, runningState); + if (engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); + } + } + }; + } + + private void runningStateChangedImpl(@Nullable ExecutionId executionId, GraphQLContext graphQLContext, EngineRunningObserver.RunningState runningState) { + long now = System.nanoTime(); + if (runningState == EngineRunningObserver.RunningState.RUNNING_START) { + startTime = now; + lastStartTime = startTime; + } else if (runningState == EngineRunningObserver.RunningState.NOT_RUNNING_FINISH) { + endTime = now; + engineTotalRunningTime.set(engineTotalRunningTime.get() + (endTime - lastStartTime)); + profilerResult.setTimes(startTime, endTime, engineTotalRunningTime.get()); + } else if (runningState == EngineRunningObserver.RunningState.RUNNING) { + lastStartTime = now; + } else if (runningState == EngineRunningObserver.RunningState.NOT_RUNNING) { + engineTotalRunningTime.set(engineTotalRunningTime.get() + (now - lastStartTime)); + } else { + Assert.assertShouldNeverHappen(); + } + } + + @Override + public void operationDefinition(OperationDefinition operationDefinition) { + profilerResult.setOperation(operationDefinition); + } + + @Override + public void dataLoaderUsed(String dataLoaderName) { + profilerResult.addDataLoaderUsed(dataLoaderName); + } + + @Override + public void oldStrategyDispatchingAll(int level) { + profilerResult.oldStrategyDispatchingAll(level); + } + + @Override + public void batchLoadedOldStrategy(String name, int level, int count) { + profilerResult.addDispatchEvent(name, level, count, ProfilerResult.DispatchEventType.LEVEL_STRATEGY_DISPATCH); + } + + @Override + public void batchLoadedNewStrategy(String dataLoaderName, Integer level, int count, boolean delayed, boolean chained) { + ProfilerResult.DispatchEventType dispatchEventType = null; + if (delayed && !chained) { + dispatchEventType = ProfilerResult.DispatchEventType.DELAYED_DISPATCH; + } else if (delayed) { + dispatchEventType = ProfilerResult.DispatchEventType.CHAINED_DELAYED_DISPATCH; + } else if (!chained) { + dispatchEventType = ProfilerResult.DispatchEventType.LEVEL_STRATEGY_DISPATCH; + } else { + dispatchEventType = ProfilerResult.DispatchEventType.CHAINED_STRATEGY_DISPATCH; + } + profilerResult.addDispatchEvent(dataLoaderName, level, count, dispatchEventType); + } + + @Override + public void manualDispatch(String dataLoaderName, int level, int count) { + profilerResult.addDispatchEvent(dataLoaderName, level, count, ProfilerResult.DispatchEventType.MANUAL_DISPATCH); + } +} diff --git a/src/main/java/graphql/ProfilerResult.java b/src/main/java/graphql/ProfilerResult.java new file mode 100644 index 0000000000..c18533ab7a --- /dev/null +++ b/src/main/java/graphql/ProfilerResult.java @@ -0,0 +1,347 @@ +package graphql; + +import graphql.execution.ExecutionId; +import graphql.language.OperationDefinition; +import graphql.language.OperationDefinition.Operation; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +@ExperimentalApi +@NullMarked +public class ProfilerResult { + + public static final String PROFILER_CONTEXT_KEY = "__GJ_PROFILER"; + + @Nullable + private volatile ExecutionId executionId; + private long startTime; + private long endTime; + private long engineTotalRunningTime; + private final AtomicInteger totalDataFetcherInvocations = new AtomicInteger(); + private final AtomicInteger totalTrivialDataFetcherInvocations = new AtomicInteger(); + private final AtomicInteger totalWrappedTrivialDataFetcherInvocations = new AtomicInteger(); + + // this is the count of how many times a data loader was invoked per data loader name + private final Map dataLoaderLoadInvocations = new ConcurrentHashMap<>(); + + @Nullable + private volatile String operationName; + @Nullable + private volatile Operation operationType; + private volatile boolean dataLoaderChainingEnabled; + private final Set oldStrategyDispatchingAll = ConcurrentHashMap.newKeySet(); + + private final List instrumentationClasses = Collections.synchronizedList(new ArrayList<>()); + + private final List dispatchEvents = Collections.synchronizedList(new ArrayList<>()); + + /** + * the following fields can contain a lot of data for large requests + */ + // all fields fetched during the execution, key is the field path + private final Set fieldsFetched = ConcurrentHashMap.newKeySet(); + // this is the count of how many times a data fetcher was invoked per field + private final Map dataFetcherInvocationCount = new ConcurrentHashMap<>(); + // the type of the data fetcher per field, key is the field path + private final Map dataFetcherTypeMap = new ConcurrentHashMap<>(); + // the type of the data fetcher result field, key is the field path + // in theory different DataFetcher invocations can return different types, but we only record the first one + private final Map dataFetcherResultType = new ConcurrentHashMap<>(); + + public void setInstrumentationClasses(List instrumentationClasses) { + this.instrumentationClasses.addAll(instrumentationClasses); + } + + + public enum DispatchEventType { + LEVEL_STRATEGY_DISPATCH, + CHAINED_STRATEGY_DISPATCH, + DELAYED_DISPATCH, + CHAINED_DELAYED_DISPATCH, + MANUAL_DISPATCH, + } + + public static class DispatchEvent { + final String dataLoaderName; + final Integer level; // is null for delayed dispatching + final int keyCount; // how many + final DispatchEventType type; + + public DispatchEvent(String dataLoaderName, Integer level, int keyCount, DispatchEventType type) { + this.dataLoaderName = dataLoaderName; + this.level = level; + this.keyCount = keyCount; + this.type = type; + } + + public String getDataLoaderName() { + return dataLoaderName; + } + + public Integer getLevel() { + return level; + } + + public int getKeyCount() { + return keyCount; + } + + public DispatchEventType getType() { + return type; + } + + @Override + public String toString() { + return "DispatchEvent{" + + "type=" + type + + ", dataLoaderName='" + dataLoaderName + '\'' + + ", level=" + level + + ", keyCount=" + keyCount + + '}'; + } + } + + public enum DataFetcherType { + WRAPPED_TRIVIAL_DATA_FETCHER, + TRIVIAL_DATA_FETCHER, + CUSTOM + } + + public enum DataFetcherResultType { + COMPLETABLE_FUTURE_COMPLETED, + COMPLETABLE_FUTURE_NOT_COMPLETED, + MATERIALIZED + + } + + + // setters are package private to prevent exposure + + void setDataLoaderChainingEnabled(boolean dataLoaderChainingEnabled) { + this.dataLoaderChainingEnabled = dataLoaderChainingEnabled; + } + + + void setDataFetcherType(String key, DataFetcherType dataFetcherType) { + dataFetcherTypeMap.putIfAbsent(key, dataFetcherType); + totalDataFetcherInvocations.incrementAndGet(); + if (dataFetcherType == DataFetcherType.TRIVIAL_DATA_FETCHER) { + totalTrivialDataFetcherInvocations.incrementAndGet(); + } else if (dataFetcherType == DataFetcherType.WRAPPED_TRIVIAL_DATA_FETCHER) { + totalWrappedTrivialDataFetcherInvocations.incrementAndGet(); + } + } + + void setDataFetcherResultType(String key, DataFetcherResultType fetchedType) { + dataFetcherResultType.putIfAbsent(key, fetchedType); + } + + void incrementDataFetcherInvocationCount(String key) { + dataFetcherInvocationCount.compute(key, (k, v) -> v == null ? 1 : v + 1); + } + + void addFieldFetched(String fieldPath) { + fieldsFetched.add(fieldPath); + } + + void setExecutionId(ExecutionId executionId) { + this.executionId = executionId; + } + + void setTimes(long startTime, long endTime, long engineTotalRunningTime) { + this.startTime = startTime; + this.endTime = endTime; + this.engineTotalRunningTime = engineTotalRunningTime; + } + + void setOperation(OperationDefinition operationDefinition) { + this.operationName = operationDefinition.getName(); + this.operationType = operationDefinition.getOperation(); + } + + void addDataLoaderUsed(String dataLoaderName) { + dataLoaderLoadInvocations.compute(dataLoaderName, (k, v) -> v == null ? 1 : v + 1); + } + + void oldStrategyDispatchingAll(int level) { + oldStrategyDispatchingAll.add(level); + } + + + void addDispatchEvent(String dataLoaderName, Integer level, int count, DispatchEventType type) { + dispatchEvents.add(new DispatchEvent(dataLoaderName, level, count, type)); + } + + // public getters + + public @Nullable String getOperationName() { + return operationName; + } + + public Operation getOperationType() { + return Assert.assertNotNull(operationType); + } + + public Set getFieldsFetched() { + return fieldsFetched; + } + + public Set getCustomDataFetcherFields() { + Set result = new LinkedHashSet<>(fieldsFetched); + for (String field : fieldsFetched) { + if (dataFetcherTypeMap.get(field) == DataFetcherType.CUSTOM) { + result.add(field); + } + } + return result; + } + + public Set getTrivialDataFetcherFields() { + Set result = new LinkedHashSet<>(fieldsFetched); + for (String field : fieldsFetched) { + if (dataFetcherTypeMap.get(field) == DataFetcherType.TRIVIAL_DATA_FETCHER) { + result.add(field); + } + } + return result; + } + + + public int getTotalDataFetcherInvocations() { + return totalDataFetcherInvocations.get(); + } + + public int getTotalTrivialDataFetcherInvocations() { + return totalTrivialDataFetcherInvocations.get(); + } + + public int getTotalCustomDataFetcherInvocations() { + return totalDataFetcherInvocations.get() - totalTrivialDataFetcherInvocations.get() - totalWrappedTrivialDataFetcherInvocations.get(); + } + + public long getStartTime() { + return startTime; + } + + public long getEndTime() { + return endTime; + } + + public long getEngineTotalRunningTime() { + return engineTotalRunningTime; + } + + public long getTotalExecutionTime() { + return endTime - startTime; + } + + public Map getDataFetcherResultType() { + return dataFetcherResultType; + } + + public Map getDataLoaderLoadInvocations() { + return dataLoaderLoadInvocations; + } + + + public Set getOldStrategyDispatchingAll() { + return oldStrategyDispatchingAll; + } + + public boolean isDataLoaderChainingEnabled() { + return dataLoaderChainingEnabled; + } + + public List getDispatchEvents() { + return dispatchEvents; + } + + public List getInstrumentationClasses() { + return instrumentationClasses; + } + + + public Map shortSummaryMap() { + Map result = new LinkedHashMap<>(); + result.put("executionId", Assert.assertNotNull(executionId).toString()); + result.put("operationName", operationName); + result.put("operationType", Assert.assertNotNull(operationType).toString()); + result.put("startTimeNs", startTime); + result.put("endTimeNs", endTime); + result.put("totalRunTimeNs", endTime - startTime); + result.put("engineTotalRunningTimeNs", engineTotalRunningTime); + result.put("totalDataFetcherInvocations", totalDataFetcherInvocations); + result.put("totalCustomDataFetcherInvocations", getTotalCustomDataFetcherInvocations()); + result.put("totalTrivialDataFetcherInvocations", totalTrivialDataFetcherInvocations); + result.put("totalWrappedTrivialDataFetcherInvocations", totalWrappedTrivialDataFetcherInvocations); + result.put("fieldsFetchedCount", fieldsFetched.size()); + result.put("dataLoaderChainingEnabled", dataLoaderChainingEnabled); + result.put("dataLoaderLoadInvocations", dataLoaderLoadInvocations); + result.put("oldStrategyDispatchingAll", oldStrategyDispatchingAll); + result.put("dispatchEvents", getDispatchEventsAsMap()); + result.put("instrumentationClasses", instrumentationClasses); + int completedCount = 0; + int completedInvokeCount = 0; + int notCompletedCount = 0; + int notCompletedInvokeCount = 0; + int materializedCount = 0; + int materializedInvokeCount = 0; + for (String field : dataFetcherResultType.keySet()) { + DataFetcherResultType dFRT = dataFetcherResultType.get(field); + if (dFRT == DataFetcherResultType.COMPLETABLE_FUTURE_COMPLETED) { + completedInvokeCount += Assert.assertNotNull(dataFetcherInvocationCount.get(field)); + completedCount++; + } else if (dFRT == DataFetcherResultType.COMPLETABLE_FUTURE_NOT_COMPLETED) { + notCompletedInvokeCount += Assert.assertNotNull(dataFetcherInvocationCount.get(field)); + notCompletedCount++; + } else if (dFRT == DataFetcherResultType.MATERIALIZED) { + materializedInvokeCount += Assert.assertNotNull(dataFetcherInvocationCount.get(field)); + materializedCount++; + } else { + Assert.assertShouldNeverHappen(); + } + } + LinkedHashMap dFRTinfo = new LinkedHashMap<>(3); + dFRTinfo.put(DataFetcherResultType.COMPLETABLE_FUTURE_COMPLETED.name(), createCountMap(completedCount, completedInvokeCount)); + dFRTinfo.put(DataFetcherResultType.COMPLETABLE_FUTURE_NOT_COMPLETED.name(), createCountMap(notCompletedCount, notCompletedInvokeCount)); + dFRTinfo.put(DataFetcherResultType.MATERIALIZED.name(), createCountMap(materializedCount, materializedInvokeCount)); + result.put("dataFetcherResultTypes", dFRTinfo); + return result; + } + + private LinkedHashMap createCountMap(int count, int invocations) { + LinkedHashMap map = new LinkedHashMap<>(2); + map.put("count", count); + map.put("invocations", invocations); + return map; + } + + public List> getDispatchEventsAsMap() { + List> result = new ArrayList<>(); + for (DispatchEvent event : dispatchEvents) { + Map eventMap = new LinkedHashMap<>(); + eventMap.put("type", event.getType().name()); + eventMap.put("dataLoader", event.getDataLoaderName()); + eventMap.put("level", event.getLevel()); + eventMap.put("keyCount", event.getKeyCount()); + result.add(eventMap); + } + return result; + } + + @Override + public String toString() { + return "ProfilerResult" + shortSummaryMap(); + } + +} diff --git a/src/main/java/graphql/PublicSpi.java b/src/main/java/graphql/PublicSpi.java index 597fe94f2c..1b05060ccb 100644 --- a/src/main/java/graphql/PublicSpi.java +++ b/src/main/java/graphql/PublicSpi.java @@ -15,7 +15,7 @@ * * The guarantee is for callers of code with this annotation as well as derivations that inherit / implement this code. * - * New methods will not be added (without using default methods say) that would nominally breaks SPI implementations + * New methods will not be added (without using default methods say) that would nominally break SPI implementations * within a major release. */ @Retention(RetentionPolicy.RUNTIME) diff --git a/src/main/java/graphql/Scalars.java b/src/main/java/graphql/Scalars.java index cea0e2afa0..25f9dc640c 100644 --- a/src/main/java/graphql/Scalars.java +++ b/src/main/java/graphql/Scalars.java @@ -1,715 +1,59 @@ package graphql; -import graphql.language.BooleanValue; -import graphql.language.FloatValue; -import graphql.language.IntValue; -import graphql.language.StringValue; -import graphql.schema.Coercing; -import graphql.schema.CoercingParseLiteralException; -import graphql.schema.CoercingParseValueException; -import graphql.schema.CoercingSerializeException; +import graphql.scalar.GraphqlBooleanCoercing; +import graphql.scalar.GraphqlFloatCoercing; +import graphql.scalar.GraphqlIDCoercing; +import graphql.scalar.GraphqlIntCoercing; +import graphql.scalar.GraphqlStringCoercing; import graphql.schema.GraphQLScalarType; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.UUID; - -import static graphql.Assert.assertShouldNeverHappen; - /** * This contains the implementations of the Scalar types that ship with graphql-java. Some are proscribed * by the graphql specification (Int, Float, String, Boolean and ID) while others are offer because they are common on * Java platforms. - * - * For more info see http://graphql.org/learn/schema/#scalar-types and more specifically http://facebook.github.io/graphql/#sec-Scalars + *

    + * For more info see https://graphql.org/learn/schema/#scalar-types and + * more specifically https://spec.graphql.org/draft/#sec-Scalars */ +@PublicApi public class Scalars { - private static final BigInteger LONG_MAX = BigInteger.valueOf(Long.MAX_VALUE); - private static final BigInteger LONG_MIN = BigInteger.valueOf(Long.MIN_VALUE); - private static final BigInteger INT_MAX = BigInteger.valueOf(Integer.MAX_VALUE); - private static final BigInteger INT_MIN = BigInteger.valueOf(Integer.MIN_VALUE); - private static final BigInteger BYTE_MAX = BigInteger.valueOf(Byte.MAX_VALUE); - private static final BigInteger BYTE_MIN = BigInteger.valueOf(Byte.MIN_VALUE); - private static final BigInteger SHORT_MAX = BigInteger.valueOf(Short.MAX_VALUE); - private static final BigInteger SHORT_MIN = BigInteger.valueOf(Short.MIN_VALUE); - - - private static boolean isNumberIsh(Object input) { - return input instanceof Number || input instanceof String; - } - - private static String typeName(Object input) { - if (input == null) { - return "null"; - } - - return input.getClass().getSimpleName(); - } - /** - * This represents the "Int" type as defined in the graphql specification : http://facebook.github.io/graphql/#sec-Int - * + * This represents the "Int" type as defined in the graphql specification : https://spec.graphql.org/October2021/#sec-Int + *

    * The Int scalar type represents a signed 32‐bit numeric non‐fractional value. */ - public static final GraphQLScalarType GraphQLInt = new GraphQLScalarType("Int", "Built-in Int", new Coercing() { - - private Integer convertImpl(Object input) { - if (input instanceof Integer) { - return (Integer) input; - } else if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - try { - return value.intValueExact(); - } catch (ArithmeticException e) { - return null; - } - } else { - return null; - } - } - - @Override - public Integer serialize(Object input) { - Integer result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Int' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Integer parseValue(Object input) { - Integer result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Int' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Integer parseLiteral(Object input) { - if (!(input instanceof IntValue)) { - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue' but was '" + typeName(input) + "'." - ); - } - BigInteger value = ((IntValue) input).getValue(); - if (value.compareTo(INT_MIN) < 0 || value.compareTo(INT_MAX) > 0) { - throw new CoercingParseLiteralException( - "Expected value to be in the Integer range but it was '" + value.toString() + "'" - ); - } - return value.intValue(); - } - }); + public static final GraphQLScalarType GraphQLInt = GraphQLScalarType.newScalar() + .name("Int").description("Built-in Int").coercing(new GraphqlIntCoercing()).build(); /** - * This represents the "Float" type as defined in the graphql specification : http://facebook.github.io/graphql/#sec-Float - * + * This represents the "Float" type as defined in the graphql specification : https://spec.graphql.org/October2021/#sec-Float + *

    * Note: The Float type in GraphQL is equivalent to Double in Java. (double precision IEEE 754) */ - public static final GraphQLScalarType GraphQLFloat = new GraphQLScalarType("Float", "Built-in Float", new Coercing() { - - private Double convertImpl(Object input) { - if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - return value.doubleValue(); - } else { - return null; - } - - } - - @Override - public Double serialize(Object input) { - Double result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Float' but was '" + typeName(input) + "'." - ); - } - return result; - - } - - @Override - public Double parseValue(Object input) { - Double result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Float' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Double parseLiteral(Object input) { - if (input instanceof IntValue) { - return ((IntValue) input).getValue().doubleValue(); - } else if (input instanceof FloatValue) { - return ((FloatValue) input).getValue().doubleValue(); - } else { - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue' or 'FloatValue' but was '" + typeName(input) + "'." - ); - } - } - }); + public static final GraphQLScalarType GraphQLFloat = GraphQLScalarType.newScalar() + .name("Float").description("Built-in Float").coercing(new GraphqlFloatCoercing()).build(); /** - * This represents the "String" type as defined in the graphql specification : http://facebook.github.io/graphql/#sec-String + * This represents the "String" type as defined in the graphql specification : https://spec.graphql.org/October2021/#sec-String */ - public static final GraphQLScalarType GraphQLString = new GraphQLScalarType("String", "Built-in String", new Coercing() { - @Override - public String serialize(Object input) { - return input.toString(); - } - - @Override - public String parseValue(Object input) { - return serialize(input); - } - - @Override - public String parseLiteral(Object input) { - if (!(input instanceof StringValue)) { - throw new CoercingParseLiteralException( - "Expected AST type 'StringValue' but was '" + typeName(input) + "'." - ); - } - return ((StringValue) input).getValue(); - } - }); + public static final GraphQLScalarType GraphQLString = GraphQLScalarType.newScalar() + .name("String").description("Built-in String").coercing(new GraphqlStringCoercing()).build(); /** - * This represents the "Boolean" type as defined in the graphql specification : http://facebook.github.io/graphql/#sec-Boolean + * This represents the "Boolean" type as defined in the graphql specification : https://spec.graphql.org/October2021/#sec-Boolean */ - public static final GraphQLScalarType GraphQLBoolean = new GraphQLScalarType("Boolean", "Built-in Boolean", new Coercing() { - - private Boolean convertImpl(Object input) { - if (input instanceof Boolean) { - return (Boolean) input; - } else if (input instanceof String) { - return Boolean.parseBoolean((String) input); - } else if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - // this should never happen because String is handled above - return assertShouldNeverHappen(); - } - return value.compareTo(BigDecimal.ZERO) != 0; - } else { - return null; - } - - } - - @Override - public Boolean serialize(Object input) { - Boolean result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Boolean' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Boolean parseValue(Object input) { - Boolean result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Boolean' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Boolean parseLiteral(Object input) { - if (!(input instanceof BooleanValue)) { - throw new CoercingParseLiteralException( - "Expected AST type 'BooleanValue' but was '" + typeName(input) + "'." - ); - } - return ((BooleanValue) input).isValue(); - } - }); + public static final GraphQLScalarType GraphQLBoolean = GraphQLScalarType.newScalar() + .name("Boolean").description("Built-in Boolean").coercing(new GraphqlBooleanCoercing()).build(); /** - * This represents the "ID" type as defined in the graphql specification : http://facebook.github.io/graphql/#sec-ID - * + * This represents the "ID" type as defined in the graphql specification : https://spec.graphql.org/October2021/#sec-ID + *

    * The ID scalar type represents a unique identifier, often used to re-fetch an object or as the key for a cache. The * ID type is serialized in the same way as a String; however, it is not intended to be human‐readable. While it is * often numeric, it should always serialize as a String. */ - public static final GraphQLScalarType GraphQLID = new GraphQLScalarType("ID", "Built-in ID", new Coercing() { - - private String convertImpl(Object input) { - if (input instanceof String) { - return (String) input; - } - if (input instanceof Integer) { - return String.valueOf(input); - } - if (input instanceof Long) { - return String.valueOf(input); - } - if (input instanceof UUID) { - return String.valueOf(input); - } - if (input instanceof BigInteger) { - return String.valueOf(input); - } - return String.valueOf(input); - - } - - @Override - public String serialize(Object input) { - String result = String.valueOf(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'ID' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public String parseValue(Object input) { - String result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'ID' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public String parseLiteral(Object input) { - if (input instanceof StringValue) { - return ((StringValue) input).getValue(); - } - if (input instanceof IntValue) { - return ((IntValue) input).getValue().toString(); - } - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue' or 'StringValue' but was '" + typeName(input) + "'." - ); - } - }); - - /** - * This represents the "Long" type which is a representation of java.lang.Long - */ - public static final GraphQLScalarType GraphQLLong = new GraphQLScalarType("Long", "Long type", new Coercing() { - - private Long convertImpl(Object input) { - if (input instanceof Long) { - return (Long) input; - } else if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - try { - return value.longValueExact(); - } catch (ArithmeticException e) { - return null; - } - } else { - return null; - } - - } - - @Override - public Long serialize(Object input) { - Long result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Long' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Long parseValue(Object input) { - Long result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Long' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Long parseLiteral(Object input) { - if (input instanceof StringValue) { - try { - return Long.parseLong(((StringValue) input).getValue()); - } catch (NumberFormatException e) { - throw new CoercingParseLiteralException( - "Expected value to be a Long but it was '" + String.valueOf(input) + "'" - ); - } - } else if (input instanceof IntValue) { - BigInteger value = ((IntValue) input).getValue(); - if (value.compareTo(LONG_MIN) < 0 || value.compareTo(LONG_MAX) > 0) { - throw new CoercingParseLiteralException( - "Expected value to be in the Long range but it was '" + value.toString() + "'" - ); - } - return value.longValue(); - } - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue' or 'StringValue' but was '" + typeName(input) + "'." - ); - } - }); - - /** - * This represents the "Short" type which is a representation of java.lang.Short - */ - public static final GraphQLScalarType GraphQLShort = new GraphQLScalarType("Short", "Built-in Short as Int", new Coercing() { - - private Short convertImpl(Object input) { - if (input instanceof Short) { - return (Short) input; - } else if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - try { - return value.shortValueExact(); - } catch (ArithmeticException e) { - return null; - } - } else { - return null; - } - - } - - @Override - public Short serialize(Object input) { - Short result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Short' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Short parseValue(Object input) { - Short result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Short' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Short parseLiteral(Object input) { - if (!(input instanceof IntValue)) { - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue' but was '" + typeName(input) + "'." - ); - } - BigInteger value = ((IntValue) input).getValue(); - if (value.compareTo(SHORT_MIN) < 0 || value.compareTo(SHORT_MAX) > 0) { - throw new CoercingParseLiteralException( - "Expected value to be in the Short range but it was '" + value.toString() + "'" - ); - } - return value.shortValue(); - } - }); - - /** - * This represents the "Byte" type which is a representation of java.lang.Byte - */ - public static final GraphQLScalarType GraphQLByte = new GraphQLScalarType("Byte", "Built-in Byte as Int", new Coercing() { - - private Byte convertImpl(Object input) { - if (input instanceof Byte) { - return (Byte) input; - } else if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - try { - return value.byteValueExact(); - } catch (ArithmeticException e) { - return null; - } - } else { - return null; - } - - } - - @Override - public Byte serialize(Object input) { - Byte result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Byte' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Byte parseValue(Object input) { - Byte result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Byte' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Byte parseLiteral(Object input) { - if (!(input instanceof IntValue)) { - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue' but was '" + typeName(input) + "'." - ); - } - BigInteger value = ((IntValue) input).getValue(); - if (value.compareTo(BYTE_MIN) < 0 || value.compareTo(BYTE_MAX) > 0) { - throw new CoercingParseLiteralException( - "Expected value to be in the Byte range but it was '" + value.toString() + "'" - ); - } - return value.byteValue(); - } - }); - - - /** - * This represents the "BigInteger" type which is a representation of java.math.BigInteger - */ - public static final GraphQLScalarType GraphQLBigInteger = new GraphQLScalarType("BigInteger", "Built-in java.math.BigInteger", new Coercing() { - - private BigInteger convertImpl(Object input) { - if (isNumberIsh(input)) { - BigDecimal value; - try { - value = new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - try { - return value.toBigIntegerExact(); - } catch (ArithmeticException e) { - return null; - } - } - return null; - - } - - @Override - public BigInteger serialize(Object input) { - BigInteger result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'BigInteger' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public BigInteger parseValue(Object input) { - BigInteger result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'BigInteger' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public BigInteger parseLiteral(Object input) { - if (input instanceof StringValue) { - try { - return new BigDecimal(((StringValue) input).getValue()).toBigIntegerExact(); - } catch (NumberFormatException | ArithmeticException e) { - throw new CoercingParseLiteralException( - "Unable to turn AST input into a 'BigInteger' : '" + String.valueOf(input) + "'" - ); - } - } else if (input instanceof IntValue) { - return ((IntValue) input).getValue(); - } else if (input instanceof FloatValue) { - try { - return ((FloatValue) input).getValue().toBigIntegerExact(); - } catch (ArithmeticException e) { - throw new CoercingParseLiteralException( - "Unable to turn AST input into a 'BigInteger' : '" + String.valueOf(input) + "'" - ); - } - } - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue', 'StringValue' or 'FloatValue' but was '" + typeName(input) + "'." - ); - } - }); - - /** - * This represents the "BigDecimal" type which is a representation of java.math.BigDecimal - */ - public static final GraphQLScalarType GraphQLBigDecimal = new GraphQLScalarType("BigDecimal", "Built-in java.math.BigDecimal", new Coercing() { - - private BigDecimal convertImpl(Object input) { - if (isNumberIsh(input)) { - try { - return new BigDecimal(input.toString()); - } catch (NumberFormatException e) { - return null; - } - } - return null; - - } - - @Override - public BigDecimal serialize(Object input) { - BigDecimal result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'BigDecimal' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public BigDecimal parseValue(Object input) { - BigDecimal result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'BigDecimal' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public BigDecimal parseLiteral(Object input) { - if (input instanceof StringValue) { - try { - return new BigDecimal(((StringValue) input).getValue()); - } catch (NumberFormatException e) { - throw new CoercingParseLiteralException( - "Unable to turn AST input into a 'BigDecimal' : '" + String.valueOf(input) + "'" - ); - } - } else if (input instanceof IntValue) { - return new BigDecimal(((IntValue) input).getValue()); - } else if (input instanceof FloatValue) { - return ((FloatValue) input).getValue(); - } - throw new CoercingParseLiteralException( - "Expected AST type 'IntValue', 'StringValue' or 'FloatValue' but was '" + typeName(input) + "'." - ); - } - }); - - - /** - * This represents the "Char" type which is a representation of java.lang.Character - */ - public static final GraphQLScalarType GraphQLChar = new GraphQLScalarType("Char", "Built-in Char as Character", new Coercing() { - - private Character convertImpl(Object input) { - if (input instanceof String && ((String) input).length() == 1) { - return ((String) input).charAt(0); - } else if (input instanceof Character) { - return (Character) input; - } else { - return null; - } - - } - - @Override - public Character serialize(Object input) { - Character result = convertImpl(input); - if (result == null) { - throw new CoercingSerializeException( - "Expected type 'Char' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Character parseValue(Object input) { - Character result = convertImpl(input); - if (result == null) { - throw new CoercingParseValueException( - "Expected type 'Char' but was '" + typeName(input) + "'." - ); - } - return result; - } - - @Override - public Character parseLiteral(Object input) { - if (!(input instanceof StringValue)) { - throw new CoercingParseLiteralException( - "Expected AST type 'StringValue' but was '" + typeName(input) + "'." - ); - } - String value = ((StringValue) input).getValue(); - if (value.length() != 1) { - throw new CoercingParseLiteralException( - "Empty 'StringValue' provided." - ); - } - return value.charAt(0); - } - }); + public static final GraphQLScalarType GraphQLID = GraphQLScalarType.newScalar() + .name("ID").description("Built-in ID").coercing(new GraphqlIDCoercing()).build(); } diff --git a/src/main/java/graphql/SerializationError.java b/src/main/java/graphql/SerializationError.java index c9565e7b67..9e03017565 100644 --- a/src/main/java/graphql/SerializationError.java +++ b/src/main/java/graphql/SerializationError.java @@ -1,7 +1,7 @@ package graphql; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.language.SourceLocation; import graphql.schema.CoercingSerializeException; @@ -18,13 +18,13 @@ public class SerializationError implements GraphQLError { private final List path; private final CoercingSerializeException exception; - public SerializationError(ExecutionPath path, CoercingSerializeException exception) { + public SerializationError(ResultPath path, CoercingSerializeException exception) { this.path = assertNotNull(path).toList(); this.exception = assertNotNull(exception); this.message = mkMessage(path, exception); } - private String mkMessage(ExecutionPath path, CoercingSerializeException exception) { + private String mkMessage(ResultPath path, CoercingSerializeException exception) { return format("Can't serialize value (%s) : %s", path, exception.getMessage()); } diff --git a/src/main/java/graphql/TypeMismatchError.java b/src/main/java/graphql/TypeMismatchError.java index 51e5de6e14..f5e41b3391 100644 --- a/src/main/java/graphql/TypeMismatchError.java +++ b/src/main/java/graphql/TypeMismatchError.java @@ -1,6 +1,6 @@ package graphql; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.introspection.Introspection; import graphql.language.SourceLocation; import graphql.schema.GraphQLEnumType; @@ -27,13 +27,13 @@ public class TypeMismatchError implements GraphQLError { private final List path; private final GraphQLType expectedType; - public TypeMismatchError(ExecutionPath path, GraphQLType expectedType) { + public TypeMismatchError(ResultPath path, GraphQLType expectedType) { this.path = assertNotNull(path).toList(); this.expectedType = assertNotNull(expectedType); this.message = mkMessage(path, expectedType); } - private String mkMessage(ExecutionPath path, GraphQLType expectedType) { + private String mkMessage(ResultPath path, GraphQLType expectedType) { String expectedTypeKind = GraphQLTypeToTypeKindMapping.getTypeKindFromGraphQLType(expectedType).name(); return format("Can't resolve value (%s) : type mismatch error, expected type %s", path, expectedTypeKind); } diff --git a/src/main/java/graphql/TypeResolutionEnvironment.java b/src/main/java/graphql/TypeResolutionEnvironment.java index e4797aff05..ca57979bf5 100644 --- a/src/main/java/graphql/TypeResolutionEnvironment.java +++ b/src/main/java/graphql/TypeResolutionEnvironment.java @@ -1,37 +1,51 @@ package graphql; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.execution.DataFetcherResult; import graphql.execution.MergedField; +import graphql.execution.TypeResolutionParameters; +import graphql.schema.DataFetchingFieldSelectionSet; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLType; import java.util.Map; +import java.util.function.Supplier; /** * This is passed to a {@link graphql.schema.TypeResolver} to help with object type resolution. * - * See {@link graphql.schema.TypeResolver#getType(TypeResolutionEnvironment)} for how this is used + * See {@link graphql.schema.TypeResolver#getType} for how this is used */ @SuppressWarnings("TypeParameterUnusedInFormals") +@PublicApi public class TypeResolutionEnvironment { private final Object object; - private final Map arguments; + private final Supplier> arguments; private final MergedField field; private final GraphQLType fieldType; private final GraphQLSchema schema; private final Object context; + private final GraphQLContext graphQLContext; + private final Object localContext; + private final DataFetchingFieldSelectionSet fieldSelectionSet; - public TypeResolutionEnvironment(Object object, Map arguments, MergedField field, GraphQLType fieldType, GraphQLSchema schema, final Object context) { - this.object = object; - this.arguments = arguments; - this.field = field; - this.fieldType = fieldType; - this.schema = schema; - this.context = context; + @Internal + public TypeResolutionEnvironment(TypeResolutionParameters parameters) { + this.object = parameters.getValue(); + this.arguments = () -> ImmutableMapWithNullValues.copyOf(parameters.getArgumentValues()); + this.field = parameters.getField(); + this.fieldType = parameters.getFieldType(); + this.schema = parameters.getSchema(); + this.context = parameters.getContext(); + this.graphQLContext = parameters.getGraphQLContext(); + this.localContext = parameters.getLocalContext(); + this.fieldSelectionSet = parameters.getSelectionSet(); } + /** - * You will be passed the specific source object that needs to be resolve into a concrete graphql object type + * You will be passed the specific source object that needs to be resolved into a concrete graphql object type * * @param you decide what type it is * @@ -46,7 +60,7 @@ public T getObject() { * @return the runtime arguments to this the graphql field */ public Map getArguments() { - return arguments; + return arguments.get(); } /** @@ -71,7 +85,44 @@ public GraphQLSchema getSchema() { return schema; } + /** + * Returns the context object set in via {@link ExecutionInput#getContext()} + * + * @param the type to cast the result to + * + * @return the context object + * + * @deprecated use {@link #getGraphQLContext()} instead + */ + @Deprecated(since = "2021-12-27") public T getContext() { + //noinspection unchecked return (T) context; } + + /** + * @return the {@link GraphQLContext} object set in via {@link ExecutionInput#getGraphQLContext()} + */ + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * Returns the local context object set in via {@link DataFetcherResult#getLocalContext()} + * + * @param the type to cast the result to + * + * @return the local context object + */ + public T getLocalContext() { + //noinspection unchecked + return (T) localContext; + } + + /** + * @return the {@link DataFetchingFieldSelectionSet} for the current field fetch that needs type resolution + */ + public DataFetchingFieldSelectionSet getSelectionSet() { + return fieldSelectionSet; + } } diff --git a/src/main/java/graphql/UnresolvedTypeError.java b/src/main/java/graphql/UnresolvedTypeError.java index c71b973a1a..8f38b1fc4e 100644 --- a/src/main/java/graphql/UnresolvedTypeError.java +++ b/src/main/java/graphql/UnresolvedTypeError.java @@ -1,7 +1,7 @@ package graphql; -import graphql.execution.ExecutionPath; import graphql.execution.ExecutionStepInfo; +import graphql.execution.ResultPath; import graphql.execution.UnresolvedTypeException; import graphql.language.SourceLocation; @@ -18,14 +18,14 @@ public class UnresolvedTypeError implements GraphQLError { private final List path; private final UnresolvedTypeException exception; - public UnresolvedTypeError(ExecutionPath path, ExecutionStepInfo info, + public UnresolvedTypeError(ResultPath path, ExecutionStepInfo info, UnresolvedTypeException exception) { this.path = assertNotNull(path).toList(); this.exception = assertNotNull(exception); this.message = mkMessage(path, exception, assertNotNull(info)); } - private String mkMessage(ExecutionPath path, UnresolvedTypeException exception, ExecutionStepInfo info) { + private String mkMessage(ResultPath path, UnresolvedTypeException exception, ExecutionStepInfo info) { return format("Can't resolve '%s'. Abstract type '%s' must resolve to an Object type at runtime for field '%s.%s'. %s", path, exception.getInterfaceOrUnionType().getName(), diff --git a/src/main/java/graphql/analysis/FieldComplexityEnvironment.java b/src/main/java/graphql/analysis/FieldComplexityEnvironment.java index 95626f5f81..e813c56d75 100644 --- a/src/main/java/graphql/analysis/FieldComplexityEnvironment.java +++ b/src/main/java/graphql/analysis/FieldComplexityEnvironment.java @@ -6,6 +6,7 @@ import graphql.schema.GraphQLFieldDefinition; import java.util.Map; +import java.util.Objects; @PublicApi public class FieldComplexityEnvironment { @@ -46,12 +47,11 @@ public Map getArguments() { @Override public String toString() { return "FieldComplexityEnvironment{" + - "field=" + field + - ", fieldDefinition=" + fieldDefinition + - ", parentType=" + parentType + - ", parentEnvironment=" + parentEnvironment + - ", arguments=" + arguments + - '}'; + "field=" + field + + ", fieldDefinition=" + fieldDefinition + + ", parentType=" + parentType + + ", arguments=" + arguments + + '}'; } @Override @@ -60,23 +60,21 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; FieldComplexityEnvironment that = (FieldComplexityEnvironment) o; - - if (field != null ? !field.equals(that.field) : that.field != null) return false; - if (fieldDefinition != null ? !fieldDefinition.equals(that.fieldDefinition) : that.fieldDefinition != null) - return false; - if (parentType != null ? !parentType.equals(that.parentType) : that.parentType != null) return false; - if (parentEnvironment != null ? !parentEnvironment.equals(that.parentEnvironment) : that.parentEnvironment != null) - return false; - return arguments != null ? arguments.equals(that.arguments) : that.arguments == null; + return Objects.equals(field, that.field) + && Objects.equals(fieldDefinition, that.fieldDefinition) + && Objects.equals(parentType, that.parentType) + && Objects.equals(parentEnvironment, that.parentEnvironment) + && Objects.equals(arguments, that.arguments); } @Override public int hashCode() { - int result = field != null ? field.hashCode() : 0; - result = 31 * result + (fieldDefinition != null ? fieldDefinition.hashCode() : 0); - result = 31 * result + (parentType != null ? parentType.hashCode() : 0); - result = 31 * result + (parentEnvironment != null ? parentEnvironment.hashCode() : 0); - result = 31 * result + (arguments != null ? arguments.hashCode() : 0); + int result = 1; + result = 31 * result + Objects.hashCode(field); + result = 31 * result + Objects.hashCode(fieldDefinition); + result = 31 * result + Objects.hashCode(parentType); + result = 31 * result + Objects.hashCode(parentEnvironment); + result = 31 * result + Objects.hashCode(arguments); return result; } } diff --git a/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java index 82036a40e7..0872e47b68 100644 --- a/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java @@ -1,33 +1,35 @@ package graphql.analysis; +import graphql.ExecutionResult; import graphql.PublicApi; import graphql.execution.AbortExecutionException; +import graphql.execution.ExecutionContext; import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.SimpleInstrumentation; +import graphql.execution.instrumentation.InstrumentationState; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.validation.ValidationError; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.jspecify.annotations.Nullable; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import static graphql.Assert.assertNotNull; -import static graphql.execution.instrumentation.SimpleInstrumentationContext.whenCompleted; -import static java.util.Optional.ofNullable; +import static graphql.execution.instrumentation.InstrumentationState.ofState; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp; /** * Prevents execution if the query complexity is greater than the specified maxComplexity. - * + *

    * Use the {@code Function} parameter to supply a function to perform a custom action when the max complexity * is exceeded. If the function returns {@code true} a {@link AbortExecutionException} is thrown. */ @PublicApi -public class MaxQueryComplexityInstrumentation extends SimpleInstrumentation { - - private static final Logger log = LoggerFactory.getLogger(MaxQueryComplexityInstrumentation.class); +public class MaxQueryComplexityInstrumentation extends SimplePerformantInstrumentation { private final int maxComplexity; private final FieldComplexityCalculator fieldComplexityCalculator; @@ -77,37 +79,45 @@ public MaxQueryComplexityInstrumentation(int maxComplexity, FieldComplexityCalcu } @Override - public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - return whenCompleted((errors, throwable) -> { - if ((errors != null && errors.size() > 0) || throwable != null) { - return; - } - QueryTraverser queryTraverser = newQueryTraverser(parameters); - - Map valuesByParent = new LinkedHashMap<>(); - queryTraverser.visitPostOrder(new QueryVisitorStub() { - @Override - public void visitField(QueryVisitorFieldEnvironment env) { - int childsComplexity = valuesByParent.getOrDefault(env, 0); - int value = calculateComplexity(env, childsComplexity); - - valuesByParent.compute(env.getParentEnvironment(), (key, oldValue) -> - ofNullable(oldValue).orElse(0) + value - ); - } - }); - int totalComplexity = valuesByParent.getOrDefault(null, 0); - log.debug("Query complexity: {}", totalComplexity); - if (totalComplexity > maxComplexity) { - QueryComplexityInfo queryComplexityInfo = QueryComplexityInfo.newQueryComplexityInfo() - .complexity(totalComplexity) - .build(); - boolean throwAbortException = maxQueryComplexityExceededFunction.apply(queryComplexityInfo); - if (throwAbortException) { - throw mkAbortException(totalComplexity, maxComplexity); - } + public @Nullable CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.completedFuture(new State()); + } + + @Override + public @Nullable InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState rawState) { + State state = ofState(rawState); + // for API backwards compatibility reasons we capture the validation parameters, so we can put them into QueryComplexityInfo + state.instrumentationValidationParameters.set(parameters); + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters instrumentationExecuteOperationParameters, InstrumentationState rawState) { + State state = ofState(rawState); + QueryComplexityCalculator queryComplexityCalculator = newQueryComplexityCalculator(instrumentationExecuteOperationParameters.getExecutionContext()); + int totalComplexity = queryComplexityCalculator.calculate(); + if (totalComplexity > maxComplexity) { + QueryComplexityInfo queryComplexityInfo = QueryComplexityInfo.newQueryComplexityInfo() + .complexity(totalComplexity) + .instrumentationValidationParameters(state.instrumentationValidationParameters.get()) + .instrumentationExecuteOperationParameters(instrumentationExecuteOperationParameters) + .build(); + boolean throwAbortException = maxQueryComplexityExceededFunction.apply(queryComplexityInfo); + if (throwAbortException) { + throw mkAbortException(totalComplexity, maxComplexity); } - }); + } + return noOp(); + } + + private QueryComplexityCalculator newQueryComplexityCalculator(ExecutionContext executionContext) { + return QueryComplexityCalculator.newCalculator() + .fieldComplexityCalculator(fieldComplexityCalculator) + .schema(executionContext.getGraphQLSchema()) + .document(executionContext.getDocument()) + .operationName(executionContext.getExecutionInput().getOperationName()) + .variables(executionContext.getCoercedVariables()) + .build(); } /** @@ -116,42 +126,14 @@ public void visitField(QueryVisitorFieldEnvironment env) { * @param totalComplexity the complexity of the query * @param maxComplexity the maximum complexity allowed * - * @return a instance of AbortExecutionException + * @return an instance of AbortExecutionException */ protected AbortExecutionException mkAbortException(int totalComplexity, int maxComplexity) { return new AbortExecutionException("maximum query complexity exceeded " + totalComplexity + " > " + maxComplexity); } - QueryTraverser newQueryTraverser(InstrumentationValidationParameters parameters) { - return QueryTraverser.newQueryTraverser() - .schema(parameters.getSchema()) - .document(parameters.getDocument()) - .operationName(parameters.getOperation()) - .variables(parameters.getVariables()) - .build(); - } - - private int calculateComplexity(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment, int childsComplexity) { - if (queryVisitorFieldEnvironment.isTypeNameIntrospectionField()) { - return 0; - } - FieldComplexityEnvironment fieldComplexityEnvironment = convertEnv(queryVisitorFieldEnvironment); - return fieldComplexityCalculator.calculate(fieldComplexityEnvironment, childsComplexity); + private static class State implements InstrumentationState { + AtomicReference instrumentationValidationParameters = new AtomicReference<>(); } - private FieldComplexityEnvironment convertEnv(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { - FieldComplexityEnvironment parentEnv = null; - if (queryVisitorFieldEnvironment.getParentEnvironment() != null) { - parentEnv = convertEnv(queryVisitorFieldEnvironment.getParentEnvironment()); - } - return new FieldComplexityEnvironment( - queryVisitorFieldEnvironment.getField(), - queryVisitorFieldEnvironment.getFieldDefinition(), - queryVisitorFieldEnvironment.getFieldsContainer(), - queryVisitorFieldEnvironment.getArguments(), - parentEnv - ); - } - - } diff --git a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java index 8bd16cfe8b..f242baf33d 100644 --- a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java @@ -1,29 +1,28 @@ package graphql.analysis; +import graphql.ExecutionResult; import graphql.PublicApi; import graphql.execution.AbortExecutionException; +import graphql.execution.ExecutionContext; import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.SimpleInstrumentation; -import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; -import graphql.validation.ValidationError; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import graphql.execution.instrumentation.InstrumentationState; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; +import org.jspecify.annotations.Nullable; -import java.util.List; import java.util.function.Function; -import static graphql.execution.instrumentation.SimpleInstrumentationContext.whenCompleted; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp; /** * Prevents execution if the query depth is greater than the specified maxDepth. - * + *

    * Use the {@code Function} parameter to supply a function to perform a custom action when the max depth is * exceeded. If the function returns {@code true} a {@link AbortExecutionException} is thrown. */ @PublicApi -public class MaxQueryDepthInstrumentation extends SimpleInstrumentation { +public class MaxQueryDepthInstrumentation extends SimplePerformantInstrumentation { - private static final Logger log = LoggerFactory.getLogger(MaxQueryDepthInstrumentation.class); private final int maxDepth; private final Function maxQueryDepthExceededFunction; @@ -49,24 +48,19 @@ public MaxQueryDepthInstrumentation(int maxDepth, Function> beginValidation(InstrumentationValidationParameters parameters) { - return whenCompleted((errors, throwable) -> { - if ((errors != null && errors.size() > 0) || throwable != null) { - return; + public @Nullable InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + QueryTraverser queryTraverser = newQueryTraverser(parameters.getExecutionContext()); + int depth = queryTraverser.reducePreOrder((env, acc) -> Math.max(getPathLength(env.getParentEnvironment()), acc), 0); + if (depth > maxDepth) { + QueryDepthInfo queryDepthInfo = QueryDepthInfo.newQueryDepthInfo() + .depth(depth) + .build(); + boolean throwAbortException = maxQueryDepthExceededFunction.apply(queryDepthInfo); + if (throwAbortException) { + throw mkAbortException(depth, maxDepth); } - QueryTraverser queryTraverser = newQueryTraverser(parameters); - int depth = queryTraverser.reducePreOrder((env, acc) -> Math.max(getPathLength(env.getParentEnvironment()), acc), 0); - log.debug("Query depth info: {}", depth); - if (depth > maxDepth) { - QueryDepthInfo queryDepthInfo = QueryDepthInfo.newQueryDepthInfo() - .depth(depth) - .build(); - boolean throwAbortException = maxQueryDepthExceededFunction.apply(queryDepthInfo); - if (throwAbortException) { - throw mkAbortException(depth, maxDepth); - } - } - }); + } + return noOp(); } /** @@ -75,18 +69,18 @@ public InstrumentationContext> beginValidation(Instrumenta * @param depth the depth of the query * @param maxDepth the maximum depth allowed * - * @return a instance of AbortExecutionException + * @return an instance of AbortExecutionException */ protected AbortExecutionException mkAbortException(int depth, int maxDepth) { return new AbortExecutionException("maximum query depth exceeded " + depth + " > " + maxDepth); } - QueryTraverser newQueryTraverser(InstrumentationValidationParameters parameters) { + QueryTraverser newQueryTraverser(ExecutionContext executionContext) { return QueryTraverser.newQueryTraverser() - .schema(parameters.getSchema()) - .document(parameters.getDocument()) - .operationName(parameters.getOperation()) - .variables(parameters.getVariables()) + .schema(executionContext.getGraphQLSchema()) + .document(executionContext.getDocument()) + .operationName(executionContext.getExecutionInput().getOperationName()) + .coercedVariables(executionContext.getCoercedVariables()) .build(); } diff --git a/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java b/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java index f1121fc706..c2f0bebd3f 100644 --- a/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java +++ b/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java @@ -1,8 +1,10 @@ package graphql.analysis; +import graphql.GraphQLContext; import graphql.Internal; -import graphql.execution.ConditionalNodes; +import graphql.execution.CoercedVariables; import graphql.execution.ValuesResolver; +import graphql.execution.conditional.ConditionalNodes; import graphql.introspection.Introspection; import graphql.language.Argument; import graphql.language.Directive; @@ -28,6 +30,8 @@ import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import java.util.Collections; +import java.util.Locale; import java.util.Map; import static graphql.Assert.assertNotNull; @@ -41,23 +45,26 @@ @Internal public class NodeVisitorWithTypeTracking extends NodeVisitorStub { - private final QueryVisitor preOrderCallback; private final QueryVisitor postOrderCallback; private final Map variables; private final GraphQLSchema schema; private final Map fragmentsByName; - private final ConditionalNodes conditionalNodes = new ConditionalNodes(); - private final ValuesResolver valuesResolver = new ValuesResolver(); - - - public NodeVisitorWithTypeTracking(QueryVisitor preOrderCallback, QueryVisitor postOrderCallback, Map variables, GraphQLSchema schema, Map fragmentsByName) { + private final QueryTraversalOptions options; + + public NodeVisitorWithTypeTracking(QueryVisitor preOrderCallback, + QueryVisitor postOrderCallback, + Map variables, + GraphQLSchema schema, + Map fragmentsByName, + QueryTraversalOptions options) { this.preOrderCallback = preOrderCallback; this.postOrderCallback = postOrderCallback; this.variables = variables; this.schema = schema; this.fragmentsByName = fragmentsByName; + this.options = options; } @Override @@ -68,7 +75,9 @@ public TraversalControl visitDirective(Directive node, TraverserContext co @Override public TraversalControl visitInlineFragment(InlineFragment inlineFragment, TraverserContext context) { - if (!conditionalNodes.shouldInclude(variables, inlineFragment.getDirectives())) { + QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); + GraphQLContext graphQLContext = parentEnv.getGraphQLContext(); + if (!conditionalNodes.shouldInclude(inlineFragment, variables, null, graphQLContext)) { return TraversalControl.ABORT; } @@ -82,7 +91,6 @@ public TraversalControl visitInlineFragment(InlineFragment inlineFragment, Trave preOrderCallback.visitInlineFragment(inlineFragmentEnvironment); // inline fragments are allowed not have type conditions, if so the parent type counts - QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); GraphQLCompositeType fragmentCondition; if (inlineFragment.getTypeCondition() != null) { @@ -92,17 +100,19 @@ public TraversalControl visitInlineFragment(InlineFragment inlineFragment, Trave fragmentCondition = parentEnv.getUnwrappedOutputType(); } // for unions we only have other fragments inside - context.setVar(QueryTraversalContext.class, new QueryTraversalContext(fragmentCondition, parentEnv.getEnvironment(), inlineFragment)); + context.setVar(QueryTraversalContext.class, new QueryTraversalContext(fragmentCondition, parentEnv.getEnvironment(), inlineFragment, graphQLContext)); return TraversalControl.CONTINUE; } @Override - public TraversalControl visitFragmentDefinition(FragmentDefinition node, TraverserContext context) { - if (!conditionalNodes.shouldInclude(variables, node.getDirectives())) { + public TraversalControl visitFragmentDefinition(FragmentDefinition fragmentDefinition, TraverserContext context) { + QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); + GraphQLContext graphQLContext = parentEnv.getGraphQLContext(); + if (!conditionalNodes.shouldInclude(fragmentDefinition, variables, null, graphQLContext)) { return TraversalControl.ABORT; } - QueryVisitorFragmentDefinitionEnvironment fragmentEnvironment = new QueryVisitorFragmentDefinitionEnvironmentImpl(node, context, schema); + QueryVisitorFragmentDefinitionEnvironment fragmentEnvironment = new QueryVisitorFragmentDefinitionEnvironmentImpl(fragmentDefinition, context, schema); if (context.getPhase() == LEAVE) { postOrderCallback.visitFragmentDefinition(fragmentEnvironment); @@ -110,20 +120,21 @@ public TraversalControl visitFragmentDefinition(FragmentDefinition node, Travers } preOrderCallback.visitFragmentDefinition(fragmentEnvironment); - QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); - GraphQLCompositeType typeCondition = (GraphQLCompositeType) schema.getType(node.getTypeCondition().getName()); - context.setVar(QueryTraversalContext.class, new QueryTraversalContext(typeCondition, parentEnv.getEnvironment(), node)); + GraphQLCompositeType typeCondition = (GraphQLCompositeType) schema.getType(fragmentDefinition.getTypeCondition().getName()); + context.setVar(QueryTraversalContext.class, new QueryTraversalContext(typeCondition, parentEnv.getEnvironment(), fragmentDefinition, graphQLContext)); return TraversalControl.CONTINUE; } @Override public TraversalControl visitFragmentSpread(FragmentSpread fragmentSpread, TraverserContext context) { - if (!conditionalNodes.shouldInclude(variables, fragmentSpread.getDirectives())) { + QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); + GraphQLContext graphQLContext = parentEnv.getGraphQLContext(); + if (!conditionalNodes.shouldInclude(fragmentSpread, variables, null, graphQLContext)) { return TraversalControl.ABORT; } FragmentDefinition fragmentDefinition = fragmentsByName.get(fragmentSpread.getName()); - if (!conditionalNodes.shouldInclude(variables, fragmentDefinition.getDirectives())) { + if (!conditionalNodes.shouldInclude(fragmentDefinition, variables, null, graphQLContext)) { return TraversalControl.ABORT; } @@ -135,24 +146,35 @@ public TraversalControl visitFragmentSpread(FragmentSpread fragmentSpread, Trave preOrderCallback.visitFragmentSpread(fragmentSpreadEnvironment); - QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); GraphQLCompositeType typeCondition = (GraphQLCompositeType) schema.getType(fragmentDefinition.getTypeCondition().getName()); - assertNotNull(typeCondition, "Invalid type condition '%s' in fragment '%s'", fragmentDefinition.getTypeCondition().getName(), + assertNotNull(typeCondition, + "Invalid type condition '%s' in fragment '%s'", fragmentDefinition.getTypeCondition().getName(), fragmentDefinition.getName()); - context.setVar(QueryTraversalContext.class, new QueryTraversalContext(typeCondition, parentEnv.getEnvironment(), fragmentDefinition)); + context.setVar(QueryTraversalContext.class, new QueryTraversalContext(typeCondition, parentEnv.getEnvironment(), fragmentDefinition, graphQLContext)); return TraversalControl.CONTINUE; } @Override public TraversalControl visitField(Field field, TraverserContext context) { QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); + GraphQLContext graphQLContext = parentEnv.getGraphQLContext(); GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(schema, (GraphQLCompositeType) unwrapAll(parentEnv.getOutputType()), field.getName()); - boolean isTypeNameIntrospectionField = fieldDefinition == Introspection.TypeNameMetaFieldDef; + boolean isTypeNameIntrospectionField = fieldDefinition == schema.getIntrospectionTypenameFieldDefinition(); GraphQLFieldsContainer fieldsContainer = !isTypeNameIntrospectionField ? (GraphQLFieldsContainer) unwrapAll(parentEnv.getOutputType()) : null; GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDefinition.getArguments(), field.getArguments(), variables); + Map argumentValues; + if (options.isCoerceFieldArguments()) { + argumentValues = ValuesResolver.getArgumentValues(codeRegistry, + fieldDefinition.getArguments(), + field.getArguments(), + CoercedVariables.of(variables), + GraphQLContext.getDefault(), + Locale.getDefault()); + } else { + argumentValues = Collections.emptyMap(); + } QueryVisitorFieldEnvironment environment = new QueryVisitorFieldEnvironmentImpl(isTypeNameIntrospectionField, field, fieldDefinition, @@ -168,7 +190,7 @@ public TraversalControl visitField(Field field, TraverserContext context) return TraversalControl.CONTINUE; } - if (!conditionalNodes.shouldInclude(variables, field.getDirectives())) { + if (!conditionalNodes.shouldInclude(field, variables, null, graphQLContext)) { return TraversalControl.ABORT; } @@ -176,8 +198,8 @@ public TraversalControl visitField(Field field, TraverserContext context) GraphQLUnmodifiedType unmodifiedType = unwrapAll(fieldDefinition.getType()); QueryTraversalContext fieldEnv = (unmodifiedType instanceof GraphQLCompositeType) - ? new QueryTraversalContext(fieldDefinition.getType(), environment, field) - : new QueryTraversalContext(null, environment, field);// Terminal (scalar) node, EMPTY FRAME + ? new QueryTraversalContext(fieldDefinition.getType(), environment, field, graphQLContext) + : new QueryTraversalContext(null, environment, field, graphQLContext);// Terminal (scalar) node, EMPTY FRAME context.setVar(QueryTraversalContext.class, fieldEnv); @@ -194,7 +216,7 @@ public TraversalControl visitArgument(Argument argument, TraverserContext QueryVisitorFieldEnvironment fieldEnv = fieldCtx.getEnvironment(); GraphQLFieldsContainer fieldsContainer = fieldEnv.getFieldsContainer(); - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(schema, fieldsContainer, field.getName()); + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDefinition(schema, fieldsContainer, field.getName()); GraphQLArgument graphQLArgument = fieldDefinition.getArgument(argument.getName()); String argumentName = graphQLArgument.getName(); @@ -234,7 +256,8 @@ public TraversalControl visitObjectField(ObjectField node, TraverserContext value, TraverserContext context) { if (context.getParentNode() instanceof VariableDefinition) { - return TraversalControl.CONTINUE; + visitVariableDefinition(((VariableDefinition) context.getParentNode()), context); + return TraversalControl.ABORT; } QueryVisitorFieldArgumentEnvironment fieldArgEnv = context.getVarFromParents(QueryVisitorFieldArgumentEnvironment.class); diff --git a/src/main/java/graphql/analysis/QueryComplexityCalculator.java b/src/main/java/graphql/analysis/QueryComplexityCalculator.java new file mode 100644 index 0000000000..e16035cc7a --- /dev/null +++ b/src/main/java/graphql/analysis/QueryComplexityCalculator.java @@ -0,0 +1,134 @@ +package graphql.analysis; + +import graphql.PublicApi; +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.schema.GraphQLSchema; + +import java.util.LinkedHashMap; +import java.util.Map; + +import static graphql.Assert.assertNotNull; +import static java.util.Optional.ofNullable; + +/** + * This can calculate the complexity of an operation using the specified {@link FieldComplexityCalculator} you pass + * into it. + */ +@PublicApi +public class QueryComplexityCalculator { + + private final FieldComplexityCalculator fieldComplexityCalculator; + private final GraphQLSchema schema; + private final Document document; + private final String operationName; + private final CoercedVariables variables; + + public QueryComplexityCalculator(Builder builder) { + this.fieldComplexityCalculator = assertNotNull(builder.fieldComplexityCalculator, "fieldComplexityCalculator can't be null"); + this.schema = assertNotNull(builder.schema, "schema can't be null"); + this.document = assertNotNull(builder.document, "document can't be null"); + this.variables = assertNotNull(builder.variables, "variables can't be null"); + this.operationName = builder.operationName; + } + + + public int calculate() { + Map valuesByParent = calculateByParents(); + return valuesByParent.getOrDefault(null, 0); + } + + /** + * @return a map that shows the field complexity for each field level in the operation + */ + public Map calculateByParents() { + QueryTraverser queryTraverser = QueryTraverser.newQueryTraverser() + .schema(this.schema) + .document(this.document) + .operationName(this.operationName) + .coercedVariables(this.variables) + .build(); + + + Map valuesByParent = new LinkedHashMap<>(); + queryTraverser.visitPostOrder(new QueryVisitorStub() { + @Override + public void visitField(QueryVisitorFieldEnvironment env) { + int childComplexity = valuesByParent.getOrDefault(env, 0); + int value = calculateComplexity(env, childComplexity); + + QueryVisitorFieldEnvironment parentEnvironment = env.getParentEnvironment(); + valuesByParent.compute(parentEnvironment, (key, oldValue) -> { + Integer currentValue = ofNullable(oldValue).orElse(0); + return currentValue + value; + } + ); + } + }); + + return valuesByParent; + } + + private int calculateComplexity(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment, int childComplexity) { + if (queryVisitorFieldEnvironment.isTypeNameIntrospectionField()) { + return 0; + } + FieldComplexityEnvironment fieldComplexityEnvironment = convertEnv(queryVisitorFieldEnvironment); + return fieldComplexityCalculator.calculate(fieldComplexityEnvironment, childComplexity); + } + + private FieldComplexityEnvironment convertEnv(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { + FieldComplexityEnvironment parentEnv = null; + if (queryVisitorFieldEnvironment.getParentEnvironment() != null) { + parentEnv = convertEnv(queryVisitorFieldEnvironment.getParentEnvironment()); + } + return new FieldComplexityEnvironment( + queryVisitorFieldEnvironment.getField(), + queryVisitorFieldEnvironment.getFieldDefinition(), + queryVisitorFieldEnvironment.getFieldsContainer(), + queryVisitorFieldEnvironment.getArguments(), + parentEnv + ); + } + + public static Builder newCalculator() { + return new Builder(); + } + + public static class Builder { + private FieldComplexityCalculator fieldComplexityCalculator; + private GraphQLSchema schema; + private Document document; + private String operationName; + private CoercedVariables variables = CoercedVariables.emptyVariables(); + + public Builder schema(GraphQLSchema graphQLSchema) { + this.schema = graphQLSchema; + return this; + } + + public Builder fieldComplexityCalculator(FieldComplexityCalculator complexityCalculator) { + this.fieldComplexityCalculator = complexityCalculator; + return this; + } + + public Builder document(Document document) { + this.document = document; + return this; + } + + public Builder operationName(String operationName) { + this.operationName = operationName; + return this; + } + + public Builder variables(CoercedVariables variables) { + this.variables = variables; + return this; + } + + public QueryComplexityCalculator build() { + return new QueryComplexityCalculator(this); + } + } +} \ No newline at end of file diff --git a/src/main/java/graphql/analysis/QueryComplexityInfo.java b/src/main/java/graphql/analysis/QueryComplexityInfo.java index 9a7a2de0d1..29914e960a 100644 --- a/src/main/java/graphql/analysis/QueryComplexityInfo.java +++ b/src/main/java/graphql/analysis/QueryComplexityInfo.java @@ -1,6 +1,9 @@ package graphql.analysis; import graphql.PublicApi; +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; +import org.jspecify.annotations.NullUnmarked; /** * The query complexity info. @@ -9,9 +12,13 @@ public class QueryComplexityInfo { private final int complexity; + private final InstrumentationValidationParameters instrumentationValidationParameters; + private final InstrumentationExecuteOperationParameters instrumentationExecuteOperationParameters; - private QueryComplexityInfo(int complexity) { - this.complexity = complexity; + private QueryComplexityInfo(Builder builder) { + this.complexity = builder.complexity; + this.instrumentationValidationParameters = builder.instrumentationValidationParameters; + this.instrumentationExecuteOperationParameters = builder.instrumentationExecuteOperationParameters; } /** @@ -23,6 +30,24 @@ public int getComplexity() { return complexity; } + /** + * This returns the instrumentation validation parameters. + * + * @return the instrumentation validation parameters. + */ + public InstrumentationValidationParameters getInstrumentationValidationParameters() { + return instrumentationValidationParameters; + } + + /** + * This returns the instrumentation execute operation parameters. + * + * @return the instrumentation execute operation parameters. + */ + public InstrumentationExecuteOperationParameters getInstrumentationExecuteOperationParameters() { + return instrumentationExecuteOperationParameters; + } + @Override public String toString() { return "QueryComplexityInfo{" + @@ -38,9 +63,12 @@ public static Builder newQueryComplexityInfo() { } @PublicApi + @NullUnmarked public static class Builder { private int complexity; + private InstrumentationValidationParameters instrumentationValidationParameters; + private InstrumentationExecuteOperationParameters instrumentationExecuteOperationParameters; private Builder() { } @@ -49,6 +77,7 @@ private Builder() { * The query complexity. * * @param complexity the query complexity + * * @return this builder */ public Builder complexity(int complexity) { @@ -56,11 +85,28 @@ public Builder complexity(int complexity) { return this; } + /** + * The instrumentation validation parameters. + * + * @param parameters the instrumentation validation parameters. + * + * @return this builder + */ + public Builder instrumentationValidationParameters(InstrumentationValidationParameters parameters) { + this.instrumentationValidationParameters = parameters; + return this; + } + + public Builder instrumentationExecuteOperationParameters(InstrumentationExecuteOperationParameters instrumentationExecuteOperationParameters) { + this.instrumentationExecuteOperationParameters = instrumentationExecuteOperationParameters; + return this; + } + /** * @return a built {@link QueryComplexityInfo} object */ public QueryComplexityInfo build() { - return new QueryComplexityInfo(complexity); + return new QueryComplexityInfo(this); } } } diff --git a/src/main/java/graphql/analysis/QueryDepthInfo.java b/src/main/java/graphql/analysis/QueryDepthInfo.java index 38550b4e01..a8d4a0ac03 100644 --- a/src/main/java/graphql/analysis/QueryDepthInfo.java +++ b/src/main/java/graphql/analysis/QueryDepthInfo.java @@ -1,6 +1,7 @@ package graphql.analysis; import graphql.PublicApi; +import org.jspecify.annotations.NullUnmarked; /** * The query depth info. @@ -38,6 +39,7 @@ public static Builder newQueryDepthInfo() { } @PublicApi + @NullUnmarked public static class Builder { private int depth; diff --git a/src/main/java/graphql/analysis/QueryTransformer.java b/src/main/java/graphql/analysis/QueryTransformer.java index 1fa67c0875..fbf5052a91 100644 --- a/src/main/java/graphql/analysis/QueryTransformer.java +++ b/src/main/java/graphql/analysis/QueryTransformer.java @@ -1,5 +1,6 @@ package graphql.analysis; +import graphql.GraphQLContext; import graphql.PublicApi; import graphql.language.FragmentDefinition; import graphql.language.Node; @@ -12,6 +13,7 @@ import java.util.LinkedHashMap; import java.util.Map; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotNull; import static graphql.language.AstNodeAdapter.AST_NODE_ADAPTER; @@ -35,20 +37,22 @@ public class QueryTransformer { private final GraphQLSchema schema; private final Map fragmentsByName; private final Map variables; - private final GraphQLCompositeType rootParentType; + private final QueryTraversalOptions options; private QueryTransformer(GraphQLSchema schema, Node root, GraphQLCompositeType rootParentType, Map fragmentsByName, - Map variables) { + Map variables, + QueryTraversalOptions options) { this.schema = assertNotNull(schema, "schema can't be null"); this.variables = assertNotNull(variables, "variables can't be null"); this.root = assertNotNull(root, "root can't be null"); this.rootParentType = assertNotNull(rootParentType); this.fragmentsByName = assertNotNull(fragmentsByName, "fragmentsByName can't be null"); + this.options = assertNotNull(options, "options can't be null"); } /** @@ -64,12 +68,17 @@ private QueryTransformer(GraphQLSchema schema, */ public Node transform(QueryVisitor queryVisitor) { QueryVisitor noOp = new QueryVisitorStub(); - NodeVisitorWithTypeTracking nodeVisitor = new NodeVisitorWithTypeTracking(queryVisitor, noOp, variables, schema, fragmentsByName); + NodeVisitorWithTypeTracking nodeVisitor = new NodeVisitorWithTypeTracking(queryVisitor, + noOp, + variables, + schema, + fragmentsByName, + options); Map, Object> rootVars = new LinkedHashMap<>(); - rootVars.put(QueryTraversalContext.class, new QueryTraversalContext(rootParentType, null, null)); + rootVars.put(QueryTraversalContext.class, new QueryTraversalContext(rootParentType, null, null, GraphQLContext.getDefault())); - TraverserVisitor nodeTraverserVisitor = new TraverserVisitor() { + TraverserVisitor nodeTraverserVisitor = new TraverserVisitor<>() { @Override public TraversalControl enter(TraverserContext context) { @@ -90,6 +99,7 @@ public static Builder newQueryTransformer() { } @PublicApi + @NullUnmarked public static class Builder { private GraphQLSchema schema; private Map variables; @@ -97,6 +107,7 @@ public static class Builder { private Node root; private GraphQLCompositeType rootParentType; private Map fragmentsByName; + private QueryTraversalOptions options = QueryTraversalOptions.defaultOptions(); /** @@ -160,11 +171,24 @@ public Builder fragmentsByName(Map fragmentsByName) } /** - + * Sets the options to use while traversing + * + * @param options the options to use + * @return this builder */ - public QueryTransformer build() { - return new QueryTransformer(schema, root, rootParentType, fragmentsByName, variables); + public Builder options(QueryTraversalOptions options) { + this.options = assertNotNull(options, "options can't be null"); + return this; } + public QueryTransformer build() { + return new QueryTransformer( + schema, + root, + rootParentType, + fragmentsByName, + variables, + options); + } } } diff --git a/src/main/java/graphql/analysis/QueryTraversalContext.java b/src/main/java/graphql/analysis/QueryTraversalContext.java index de591141cc..8fc02fd582 100644 --- a/src/main/java/graphql/analysis/QueryTraversalContext.java +++ b/src/main/java/graphql/analysis/QueryTraversalContext.java @@ -1,5 +1,6 @@ package graphql.analysis; +import graphql.GraphQLContext; import graphql.Internal; import graphql.language.SelectionSetContainer; import graphql.schema.GraphQLCompositeType; @@ -16,14 +17,17 @@ class QueryTraversalContext { // never used for scalars/enums, always a possibly wrapped composite type private final GraphQLOutputType outputType; private final QueryVisitorFieldEnvironment environment; - private final SelectionSetContainer selectionSetContainer; + private final SelectionSetContainer selectionSetContainer; + private final GraphQLContext graphQLContext; QueryTraversalContext(GraphQLOutputType outputType, QueryVisitorFieldEnvironment environment, - SelectionSetContainer selectionSetContainer) { + SelectionSetContainer selectionSetContainer, + GraphQLContext graphQLContext) { this.outputType = outputType; this.environment = environment; this.selectionSetContainer = selectionSetContainer; + this.graphQLContext = graphQLContext; } public GraphQLOutputType getOutputType() { @@ -34,13 +38,15 @@ public GraphQLCompositeType getUnwrappedOutputType() { return (GraphQLCompositeType) GraphQLTypeUtil.unwrapAll(outputType); } - public QueryVisitorFieldEnvironment getEnvironment() { return environment; } - public SelectionSetContainer getSelectionSetContainer() { - + public SelectionSetContainer getSelectionSetContainer() { return selectionSetContainer; } + + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } } diff --git a/src/main/java/graphql/analysis/QueryTraversalOptions.java b/src/main/java/graphql/analysis/QueryTraversalOptions.java new file mode 100644 index 0000000000..7ce73f05ce --- /dev/null +++ b/src/main/java/graphql/analysis/QueryTraversalOptions.java @@ -0,0 +1,31 @@ +package graphql.analysis; + +import graphql.PublicApi; + +/** + * This options object controls how {@link QueryTraverser} works + */ +@PublicApi +public class QueryTraversalOptions { + + private final boolean coerceFieldArguments; + + private QueryTraversalOptions(boolean coerceFieldArguments) { + this.coerceFieldArguments = coerceFieldArguments; + } + + /** + * @return true if field arguments should be coerced. This is true by default. + */ + public boolean isCoerceFieldArguments() { + return coerceFieldArguments; + } + + public static QueryTraversalOptions defaultOptions() { + return new QueryTraversalOptions(true); + } + + public QueryTraversalOptions coerceFieldArguments(boolean coerceFieldArguments) { + return new QueryTraversalOptions(coerceFieldArguments); + } +} diff --git a/src/main/java/graphql/analysis/QueryTraverser.java b/src/main/java/graphql/analysis/QueryTraverser.java index 1103d737fc..4825dbf746 100644 --- a/src/main/java/graphql/analysis/QueryTraverser.java +++ b/src/main/java/graphql/analysis/QueryTraverser.java @@ -1,6 +1,10 @@ package graphql.analysis; +import graphql.GraphQLContext; import graphql.PublicApi; +import graphql.execution.CoercedVariables; +import graphql.execution.RawVariables; +import graphql.execution.ValuesResolver; import graphql.language.Document; import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; @@ -8,6 +12,7 @@ import graphql.language.NodeTraverser; import graphql.language.NodeUtil; import graphql.language.OperationDefinition; +import graphql.language.VariableDefinition; import graphql.schema.GraphQLCompositeType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; @@ -16,7 +21,9 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; @@ -35,39 +42,60 @@ * visitField calls. */ @PublicApi -public class QueryTraverser { +public class QueryTraverser { private final Collection roots; private final GraphQLSchema schema; private final Map fragmentsByName; - private final Map variables; + private CoercedVariables coercedVariables; private final GraphQLCompositeType rootParentType; + private final QueryTraversalOptions options; private QueryTraverser(GraphQLSchema schema, Document document, String operation, - Map variables) { - assertNotNull(document, "document can't be null"); + CoercedVariables coercedVariables, + QueryTraversalOptions options + ) { + this.schema = schema; NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operation); - this.schema = assertNotNull(schema, "schema can't be null"); - this.variables = assertNotNull(variables, "variables can't be null"); this.fragmentsByName = getOperationResult.fragmentsByName; this.roots = singletonList(getOperationResult.operationDefinition); this.rootParentType = getRootTypeFromOperation(getOperationResult.operationDefinition); + this.coercedVariables = coercedVariables; + this.options = options; + } + + private QueryTraverser(GraphQLSchema schema, + Document document, + String operation, + RawVariables rawVariables, + QueryTraversalOptions options + ) { + this.schema = schema; + NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operation); + List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); + this.fragmentsByName = getOperationResult.fragmentsByName; + this.roots = singletonList(getOperationResult.operationDefinition); + this.rootParentType = getRootTypeFromOperation(getOperationResult.operationDefinition); + this.coercedVariables = ValuesResolver.coerceVariableValues(schema, variableDefinitions, rawVariables, GraphQLContext.getDefault(), Locale.getDefault()); + this.options = options; } private QueryTraverser(GraphQLSchema schema, Node root, GraphQLCompositeType rootParentType, Map fragmentsByName, - Map variables) { - this.schema = assertNotNull(schema, "schema can't be null"); - this.variables = assertNotNull(variables, "variables can't be null"); - assertNotNull(root, "root can't be null"); + CoercedVariables coercedVariables, + QueryTraversalOptions options + ) { + this.schema = schema; this.roots = Collections.singleton(root); - this.rootParentType = assertNotNull(rootParentType, "rootParentType can't be null"); - this.fragmentsByName = assertNotNull(fragmentsByName, "fragmentsByName can't be null"); + this.rootParentType = rootParentType; + this.fragmentsByName = fragmentsByName; + this.coercedVariables = coercedVariables; + this.options = options; } public Object visitDepthFirst(QueryVisitor queryVisitor) { @@ -122,7 +150,7 @@ public void visitField(QueryVisitorFieldEnvironment env) { * @param initialValue the initial value to pass to the reducer * @param the type of reduced value * - * @return the calucalated overall value + * @return the calculated overall value */ @SuppressWarnings("unchecked") public T reducePreOrder(QueryReducer queryReducer, T initialValue) { @@ -160,7 +188,7 @@ private List childrenOf(Node node) { private Object visitImpl(QueryVisitor visitFieldCallback, Boolean preOrder) { Map, Object> rootVars = new LinkedHashMap<>(); - rootVars.put(QueryTraversalContext.class, new QueryTraversalContext(rootParentType, null, null)); + rootVars.put(QueryTraversalContext.class, new QueryTraversalContext(rootParentType, null, null, GraphQLContext.getDefault())); QueryVisitor preOrderCallback; QueryVisitor postOrderCallback; @@ -174,7 +202,12 @@ private Object visitImpl(QueryVisitor visitFieldCallback, Boolean preOrder) { } NodeTraverser nodeTraverser = new NodeTraverser(rootVars, this::childrenOf); - NodeVisitorWithTypeTracking nodeVisitorWithTypeTracking = new NodeVisitorWithTypeTracking(preOrderCallback, postOrderCallback, variables, schema, fragmentsByName); + NodeVisitorWithTypeTracking nodeVisitorWithTypeTracking = new NodeVisitorWithTypeTracking(preOrderCallback, + postOrderCallback, + coercedVariables.toMap(), + schema, + fragmentsByName, + options); return nodeTraverser.depthFirst(nodeVisitorWithTypeTracking, roots); } @@ -183,15 +216,18 @@ public static Builder newQueryTraverser() { } @PublicApi + @NullUnmarked public static class Builder { private GraphQLSchema schema; private Document document; private String operation; - private Map variables; + private CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + private RawVariables rawVariables; private Node root; private GraphQLCompositeType rootParentType; private Map fragmentsByName; + private QueryTraversalOptions options = QueryTraversalOptions.defaultOptions(); /** @@ -202,7 +238,7 @@ public static class Builder { * @return this builder */ public Builder schema(GraphQLSchema schema) { - this.schema = schema; + this.schema = assertNotNull(schema, "schema can't be null"); return this; } @@ -228,19 +264,33 @@ public Builder operationName(String operationName) { * @return this builder */ public Builder document(Document document) { - this.document = document; + this.document = assertNotNull(document, "document can't be null"); return this; } /** - * Variables used in the query. + * Raw variables used in the query. * * @param variables the variables to use * * @return this builder */ public Builder variables(Map variables) { - this.variables = variables; + assertNotNull(variables, "variables can't be null"); + this.rawVariables = RawVariables.of(variables); + return this; + } + + /** + * Variables (already coerced) used in the query. + * + * @param coercedVariables the variables to use + * + * @return this builder + */ + public Builder coercedVariables(CoercedVariables coercedVariables) { + assertNotNull(coercedVariables, "coercedVariables can't be null"); + this.coercedVariables = coercedVariables; return this; } @@ -253,7 +303,7 @@ public Builder variables(Map variables) { * @return this builder */ public Builder root(Node root) { - this.root = root; + this.root = assertNotNull(root, "root can't be null"); return this; } @@ -265,7 +315,7 @@ public Builder root(Node root) { * @return this builder */ public Builder rootParentType(GraphQLCompositeType rootParentType) { - this.rootParentType = rootParentType; + this.rootParentType = assertNotNull(rootParentType, "rootParentType can't be null"); return this; } @@ -277,7 +327,18 @@ public Builder rootParentType(GraphQLCompositeType rootParentType) { * @return this builder */ public Builder fragmentsByName(Map fragmentsByName) { - this.fragmentsByName = fragmentsByName; + this.fragmentsByName = assertNotNull(fragmentsByName, "fragmentsByName can't be null"); + return this; + } + + /** + * Sets the options to use while traversing + * + * @param options the options to use + * @return this builder + */ + public Builder options(QueryTraversalOptions options) { + this.options = assertNotNull(options, "options can't be null"); return this; } @@ -287,9 +348,36 @@ public Builder fragmentsByName(Map fragmentsByName) public QueryTraverser build() { checkState(); if (document != null) { - return new QueryTraverser(schema, document, operation, variables); + if (rawVariables != null) { + return new QueryTraverser(schema, + document, + operation, + rawVariables, + options); + } + return new QueryTraverser(schema, + document, + operation, + coercedVariables, + options); } else { - return new QueryTraverser(schema, root, rootParentType, fragmentsByName, variables); + if (rawVariables != null) { + // When traversing with an arbitrary root, there is no variable definition context available + // Thus, the variables must have already been coerced + // Retaining this builder for backwards compatibility + return new QueryTraverser(schema, + root, + rootParentType, + fragmentsByName, + CoercedVariables.of(rawVariables.toMap()), + options); + } + return new QueryTraverser(schema, + root, + rootParentType, + fragmentsByName, + coercedVariables, + options); } } diff --git a/src/main/java/graphql/analysis/QueryVisitor.java b/src/main/java/graphql/analysis/QueryVisitor.java index 2238db4f95..69d86f2449 100644 --- a/src/main/java/graphql/analysis/QueryVisitor.java +++ b/src/main/java/graphql/analysis/QueryVisitor.java @@ -17,8 +17,8 @@ public interface QueryVisitor { * visitField variant which lets you control the traversal. * default implementation calls visitField for backwards compatibility reason * - * @param queryVisitorFieldEnvironment - * @return + * @param queryVisitorFieldEnvironment the environment in play + * @return traversal control */ default TraversalControl visitFieldWithControl(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { visitField(queryVisitorFieldEnvironment); diff --git a/src/main/java/graphql/analysis/QueryVisitorFieldArgumentEnvironmentImpl.java b/src/main/java/graphql/analysis/QueryVisitorFieldArgumentEnvironmentImpl.java index 4e91ebd390..22f1de9afd 100644 --- a/src/main/java/graphql/analysis/QueryVisitorFieldArgumentEnvironmentImpl.java +++ b/src/main/java/graphql/analysis/QueryVisitorFieldArgumentEnvironmentImpl.java @@ -80,7 +80,6 @@ public String toString() { ", graphQLArgument=" + graphQLArgument + ", argumentValue=" + argumentValue + ", variables=" + variables + - ", parentEnvironment=" + parentEnvironment + ", traverserContext=" + traverserContext + ", schema=" + schema + '}'; diff --git a/src/main/java/graphql/analysis/QueryVisitorFieldArgumentInputValueImpl.java b/src/main/java/graphql/analysis/QueryVisitorFieldArgumentInputValueImpl.java index a9b90f718c..f12751bb42 100644 --- a/src/main/java/graphql/analysis/QueryVisitorFieldArgumentInputValueImpl.java +++ b/src/main/java/graphql/analysis/QueryVisitorFieldArgumentInputValueImpl.java @@ -64,7 +64,6 @@ public String toString() { return "QueryVisitorFieldArgumentInputValueImpl{" + "inputValue=" + inputValueDefinition + ", value=" + value + - ", parent=" + parent + '}'; } } diff --git a/src/main/java/graphql/analysis/QueryVisitorFieldArgumentValueEnvironment.java b/src/main/java/graphql/analysis/QueryVisitorFieldArgumentValueEnvironment.java index b45e30b603..5da2d02e8a 100644 --- a/src/main/java/graphql/analysis/QueryVisitorFieldArgumentValueEnvironment.java +++ b/src/main/java/graphql/analysis/QueryVisitorFieldArgumentValueEnvironment.java @@ -1,5 +1,6 @@ package graphql.analysis; +import graphql.PublicApi; import graphql.language.Node; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLFieldDefinition; @@ -8,6 +9,7 @@ import java.util.Map; +@PublicApi public interface QueryVisitorFieldArgumentValueEnvironment { GraphQLSchema getSchema(); diff --git a/src/main/java/graphql/analysis/QueryVisitorFieldEnvironmentImpl.java b/src/main/java/graphql/analysis/QueryVisitorFieldEnvironmentImpl.java index 747896d7f8..77da33450b 100644 --- a/src/main/java/graphql/analysis/QueryVisitorFieldEnvironmentImpl.java +++ b/src/main/java/graphql/analysis/QueryVisitorFieldEnvironmentImpl.java @@ -119,8 +119,16 @@ public boolean equals(Object o) { @Override public int hashCode() { - - return Objects.hash(typeNameIntrospectionField, field, fieldDefinition, parentType, unmodifiedParentType, arguments, parentEnvironment, selectionSetContainer); + int result = 1; + result = 31 * result + Objects.hashCode(typeNameIntrospectionField); + result = 31 * result + Objects.hashCode(field); + result = 31 * result + Objects.hashCode(fieldDefinition); + result = 31 * result + Objects.hashCode(parentType); + result = 31 * result + Objects.hashCode(unmodifiedParentType); + result = 31 * result + Objects.hashCode(arguments); + result = 31 * result + Objects.hashCode(parentEnvironment); + result = 31 * result + Objects.hashCode(selectionSetContainer); + return result; } @Override @@ -129,7 +137,6 @@ public String toString() { "field=" + field + ", fieldDefinition=" + fieldDefinition + ", parentType=" + parentType + - ", parentEnvironment=" + parentEnvironment + ", arguments=" + arguments + '}'; } diff --git a/src/main/java/graphql/analysis/QueryVisitorFragmentDefinitionEnvironmentImpl.java b/src/main/java/graphql/analysis/QueryVisitorFragmentDefinitionEnvironmentImpl.java index 11cac4c9f9..926a0d22ca 100644 --- a/src/main/java/graphql/analysis/QueryVisitorFragmentDefinitionEnvironmentImpl.java +++ b/src/main/java/graphql/analysis/QueryVisitorFragmentDefinitionEnvironmentImpl.java @@ -51,7 +51,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(fragmentDefinition); + return Objects.hashCode(fragmentDefinition); } @Override diff --git a/src/main/java/graphql/analysis/QueryVisitorFragmentSpreadEnvironmentImpl.java b/src/main/java/graphql/analysis/QueryVisitorFragmentSpreadEnvironmentImpl.java index 9386e27c71..b068fcb380 100644 --- a/src/main/java/graphql/analysis/QueryVisitorFragmentSpreadEnvironmentImpl.java +++ b/src/main/java/graphql/analysis/QueryVisitorFragmentSpreadEnvironmentImpl.java @@ -55,7 +55,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(fragmentSpread); + return Objects.hashCode(fragmentSpread); } } diff --git a/src/main/java/graphql/analysis/QueryVisitorInlineFragmentEnvironmentImpl.java b/src/main/java/graphql/analysis/QueryVisitorInlineFragmentEnvironmentImpl.java index fdbec69fbe..5a5d339f06 100644 --- a/src/main/java/graphql/analysis/QueryVisitorInlineFragmentEnvironmentImpl.java +++ b/src/main/java/graphql/analysis/QueryVisitorInlineFragmentEnvironmentImpl.java @@ -45,8 +45,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - - return Objects.hash(inlineFragment); + return Objects.hashCode(inlineFragment); } @Override diff --git a/src/main/java/graphql/analysis/values/ValueTraverser.java b/src/main/java/graphql/analysis/values/ValueTraverser.java new file mode 100644 index 0000000000..664cda26be --- /dev/null +++ b/src/main/java/graphql/analysis/values/ValueTraverser.java @@ -0,0 +1,321 @@ +package graphql.analysis.values; + +import com.google.common.collect.ImmutableList; +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.DataFetchingEnvironmentImpl; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputSchemaElement; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLInputValueDefinition; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLNonNull; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLTypeUtil; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Assert.assertTrue; +import static graphql.analysis.values.ValueVisitor.ABSENCE_SENTINEL; + +/** + * This class allows you to traverse a set of input values according to the type system and optional + * change the values present. + *

    + * If you just want to traverse without changing anything, just return the value presented to you and nothing will change. + *

    + * If you want to change a value, perhaps in the presence of a directive say on the containing element, then return + * a new value back in your visitor. + *

    + * This class is intended to be used say inside a DataFetcher, allowing you to change the {@link DataFetchingEnvironment#getArguments()} + * say before further processing. + *

    + * The values passed in are assumed to be valid and coerced. This classes does not check for non nullness say or the right coerced objects given + * the type system. This is assumed to have occurred earlier in the graphql validation phase. This also means if you are not careful you can undo the + * validation that has gone before you. For example, it would be possible to change values that are illegal according to the type system, such as + * null values for non-nullable types say, so you need to be careful. + */ +@PublicApi +public class ValueTraverser { + + private static class InputElements implements ValueVisitor.InputElements { + + private final ImmutableList inputElements; + private final List unwrappedInputElements; + private final GraphQLInputValueDefinition lastElement; + + private InputElements(GraphQLInputSchemaElement startElement) { + this.inputElements = ImmutableList.of(startElement); + this.unwrappedInputElements = ImmutableList.of(startElement); + this.lastElement = startElement instanceof GraphQLInputValueDefinition ? (GraphQLInputValueDefinition) startElement : null; + } + + private InputElements(ImmutableList inputElements) { + this.inputElements = inputElements; + this.unwrappedInputElements = ImmutableKit.filter(inputElements, + it -> !(it instanceof GraphQLNonNull || it instanceof GraphQLList)); + + List inputValDefs = ImmutableKit.filterAndMap(unwrappedInputElements, + it -> it instanceof GraphQLInputValueDefinition, + GraphQLInputValueDefinition.class::cast); + this.lastElement = inputValDefs.isEmpty() ? null : inputValDefs.get(inputValDefs.size() - 1); + } + + + private InputElements push(GraphQLInputSchemaElement inputElement) { + ImmutableList newSchemaElements = ImmutableList.builder() + .addAll(inputElements).add(inputElement).build(); + return new InputElements(newSchemaElements); + } + + @Override + public List getInputElements() { + return inputElements; + } + + public List getUnwrappedInputElements() { + return unwrappedInputElements; + } + + @Override + public GraphQLInputValueDefinition getLastInputValueDefinition() { + return lastElement; + } + } + + /** + * This will visit the arguments of a {@link DataFetchingEnvironment} and if the values are changed by the visitor a new environment will be built + * + * @param environment the starting data fetching environment + * @param visitor the visitor to use + * + * @return the same environment if nothing changes or a new one with the {@link DataFetchingEnvironment#getArguments()} changed + */ + public static DataFetchingEnvironment visitPreOrder(DataFetchingEnvironment environment, ValueVisitor visitor) { + GraphQLFieldDefinition fieldDefinition = environment.getFieldDefinition(); + Map originalArgs = environment.getArguments(); + Map newArgs = visitPreOrder(originalArgs, fieldDefinition, visitor); + if (newArgs != originalArgs) { + return DataFetchingEnvironmentImpl.newDataFetchingEnvironment(environment).arguments(newArgs).build(); + } + return environment; + } + + /** + * This will visit the arguments of a {@link GraphQLFieldDefinition} and if the visitor changes the values, it will return a new set of arguments + * + * @param coercedArgumentValues the starting coerced arguments + * @param fieldDefinition the field definition + * @param visitor the visitor to use + * + * @return the same set of arguments if nothing changes or new ones if the visitor changes anything + */ + public static Map visitPreOrder(Map coercedArgumentValues, GraphQLFieldDefinition fieldDefinition, ValueVisitor visitor) { + List fieldArguments = fieldDefinition.getArguments(); + boolean copied = false; + for (GraphQLArgument fieldArgument : fieldArguments) { + String key = fieldArgument.getName(); + Object argValue = coercedArgumentValues.get(key); + InputElements inputElements = new InputElements(fieldArgument); + Object newValue = visitor.visitArgumentValue(argValue, fieldArgument, inputElements); + if (hasChanged(newValue, argValue)) { + if (!copied) { + coercedArgumentValues = new LinkedHashMap<>(coercedArgumentValues); + copied = true; + } + setNewValue(coercedArgumentValues, key, newValue); + } + if (newValue != ABSENCE_SENTINEL) { + newValue = visitPreOrderImpl(argValue, fieldArgument.getType(), inputElements, visitor); + if (hasChanged(newValue, argValue)) { + if (!copied) { + coercedArgumentValues = new LinkedHashMap<>(coercedArgumentValues); + copied = true; + } + setNewValue(coercedArgumentValues, key, newValue); + } + } + } + return coercedArgumentValues; + } + + /** + * This will visit a single argument of a {@link GraphQLArgument} and if the visitor changes the value, it will return a new argument value + *

    + * Note you cannot return the ABSENCE_SENTINEL from this method as its makes no sense to be somehow make the argument disappear. Use + * {@link #visitPreOrder(Map, GraphQLFieldDefinition, ValueVisitor)} say to remove arguments in the fields map of arguments. + * + * @param coercedArgumentValue the starting coerced argument value + * @param argument the argument definition + * @param visitor the visitor to use + * + * @return the same value if nothing changes or a new value if the visitor changes anything + */ + public static Object visitPreOrder(Object coercedArgumentValue, GraphQLArgument argument, ValueVisitor visitor) { + InputElements inputElements = new InputElements(argument); + Object newValue = visitor.visitArgumentValue(coercedArgumentValue, argument, inputElements); + if (newValue == ABSENCE_SENTINEL) { + assertShouldNeverHappen("It makes no sense to return the ABSENCE_SENTINEL during the visitPreOrder GraphQLArgument method"); + } + newValue = visitPreOrderImpl(newValue, argument.getType(), inputElements, visitor); + if (newValue == ABSENCE_SENTINEL) { + assertShouldNeverHappen("It makes no sense to return the ABSENCE_SENTINEL during the visitPreOrder GraphQLArgument method"); + } + return newValue; + } + + /** + * This will visit a single argument of a {@link GraphQLAppliedDirective} and if the visitor changes the value, it will return a new argument value + *

    + * Note you cannot return the ABSENCE_SENTINEL from this method as its makes no sense to be somehow make the argument disappear. + * + * @param coercedArgumentValue the starting coerced argument value + * @param argument the applied argument + * @param visitor the visitor to use + * + * @return the same value if nothing changes or a new value if the visitor changes anything + */ + public static Object visitPreOrder(Object coercedArgumentValue, GraphQLAppliedDirectiveArgument argument, ValueVisitor visitor) { + InputElements inputElements = new InputElements(argument); + Object newValue = visitor.visitAppliedDirectiveArgumentValue(coercedArgumentValue, argument, inputElements); + if (newValue == ABSENCE_SENTINEL) { + assertShouldNeverHappen("It makes no sense to return the ABSENCE_SENTINEL during the visitPreOrder GraphQLAppliedDirectiveArgument method"); + } + newValue = visitPreOrderImpl(newValue, argument.getType(), inputElements, visitor); + if (newValue == ABSENCE_SENTINEL) { + assertShouldNeverHappen("It makes no sense to return the ABSENCE_SENTINEL during the visitPreOrder GraphQLAppliedDirectiveArgument method"); + } + return newValue; + } + + private static Object visitPreOrderImpl(Object coercedValue, GraphQLInputType startingInputType, InputElements containingElements, ValueVisitor visitor) { + if (startingInputType instanceof GraphQLNonNull) { + containingElements = containingElements.push(startingInputType); + } + GraphQLInputType inputType = GraphQLTypeUtil.unwrapNonNullAs(startingInputType); + containingElements = containingElements.push(inputType); + if (inputType instanceof GraphQLList) { + return visitListValue(coercedValue, (GraphQLList) inputType, containingElements, visitor); + } else if (inputType instanceof GraphQLInputObjectType) { + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) inputType; + return visitObjectValue(coercedValue, inputObjectType, containingElements, visitor); + } else if (inputType instanceof GraphQLScalarType) { + return visitor.visitScalarValue(coercedValue, (GraphQLScalarType) inputType, containingElements); + } else if (inputType instanceof GraphQLEnumType) { + return visitor.visitEnumValue(coercedValue, (GraphQLEnumType) inputType, containingElements); + } else { + return assertShouldNeverHappen("ValueTraverser can only be called on full materialised schemas"); + } + } + + private static Object visitObjectValue(Object coercedValue, GraphQLInputObjectType inputObjectType, InputElements containingElements, ValueVisitor visitor) { + if (coercedValue != null) { + assertTrue(coercedValue instanceof Map, "A input object type MUST have an Map value"); + } + @SuppressWarnings("unchecked") + Map map = (Map) coercedValue; + Map newMap = visitor.visitInputObjectValue(map, inputObjectType, containingElements); + if (newMap == ABSENCE_SENTINEL) { + return ABSENCE_SENTINEL; + } + if (newMap != null) { + boolean copied = false; + for (Map.Entry entry : newMap.entrySet()) { + String key = entry.getKey(); + GraphQLInputObjectField inputField = inputObjectType.getField(key); + /// should we assert if the map contain a key that's not a field ? + if (inputField != null) { + InputElements inputElementsWithField = containingElements.push(inputField); + Object newValue = visitor.visitInputObjectFieldValue(entry.getValue(), inputObjectType, inputField, inputElementsWithField); + if (hasChanged(newValue, entry.getValue())) { + if (!copied) { + newMap = new LinkedHashMap<>(newMap); + copied = true; + } + setNewValue(newMap, key, newValue); + } + // if the value has gone - then we cant descend into it + if (newValue != ABSENCE_SENTINEL) { + newValue = visitPreOrderImpl(newValue, inputField.getType(), inputElementsWithField, visitor); + if (hasChanged(newValue, entry.getValue())) { + if (!copied) { + newMap = new LinkedHashMap<>(newMap); + copied = true; + } + setNewValue(newMap, key, newValue); + } + } + } + } + return newMap; + } else { + return null; + } + } + + private static Object visitListValue(Object coercedValue, GraphQLList listInputType, InputElements containingElements, ValueVisitor visitor) { + if (coercedValue != null) { + assertTrue(coercedValue instanceof List, "A list type MUST have an List value"); + } + @SuppressWarnings("unchecked") + List list = (List) coercedValue; + List newList = visitor.visitListValue(list, listInputType, containingElements); + if (newList == ABSENCE_SENTINEL) { + return ABSENCE_SENTINEL; + } + if (newList != null) { + GraphQLInputType inputType = GraphQLTypeUtil.unwrapOneAs(listInputType); + ImmutableList.Builder copiedList = null; + int i = 0; + for (Object subValue : newList) { + Object newValue = visitPreOrderImpl(subValue, inputType, containingElements, visitor); + if (copiedList != null) { + if (newValue != ABSENCE_SENTINEL) { + copiedList.add(newValue); + } + } else if (hasChanged(newValue, subValue)) { + // go into copy mode because something has changed + // copy previous values up to this point + copiedList = ImmutableList.builder(); + for (int j = 0; j < i; j++) { + copiedList.add(newList.get(j)); + } + if (newValue != ABSENCE_SENTINEL) { + copiedList.add(newValue); + } + } + i++; + } + if (copiedList != null) { + return copiedList.build(); + } else { + return newList; + } + } else { + return null; + } + } + + private static boolean hasChanged(Object newValue, Object oldValue) { + return newValue != oldValue || newValue == ABSENCE_SENTINEL; + } + + private static void setNewValue(Map newMap, String key, Object newValue) { + if (newValue == ABSENCE_SENTINEL) { + newMap.remove(key); + } else { + newMap.put(key, newValue); + } + } + +} diff --git a/src/main/java/graphql/analysis/values/ValueVisitor.java b/src/main/java/graphql/analysis/values/ValueVisitor.java new file mode 100644 index 0000000000..b8ea0a221b --- /dev/null +++ b/src/main/java/graphql/analysis/values/ValueVisitor.java @@ -0,0 +1,156 @@ +package graphql.analysis.values; + +import graphql.PublicSpi; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputSchemaElement; +import graphql.schema.GraphQLInputValueDefinition; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLScalarType; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +/** + * A visitor callback used by {@link ValueTraverser} + */ +@PublicSpi +public interface ValueVisitor { + + /** + * This magic sentinel value indicates that a value should be removed from a list or object versus being set to null, + * that is the difference between a value not being present and a value being null + */ + Object ABSENCE_SENTINEL = new Object() { + @Override + public String toString() { + return "ABSENCE_SENTINEL"; + } + }; + + /** + * Represents the elements that leads to a value and type + */ + interface InputElements { + + /** + * @return then list of input schema elements that lead to an input value. + */ + List getInputElements(); + + /** + * This is the list of input schema elements that are unwrapped, e.g. + * {@link GraphQLList} and {@link graphql.schema.GraphQLNonNull} types have been removed + * + * @return then list of {@link GraphQLInputValueDefinition} elements that lead to an input value. + */ + List getUnwrappedInputElements(); + + /** + * This is the last {@link GraphQLInputValueDefinition} that pointed to the value during a callback. This will + * be either a {@link graphql.schema.GraphQLArgument} or a {@link GraphQLInputObjectField} + * + * @return the last {@link GraphQLInputValueDefinition} that contains this value + */ + GraphQLInputValueDefinition getLastInputValueDefinition(); + } + + /** + * This is called when a scalar value is encountered + * + * @param coercedValue the value that is in coerced form + * @param inputType the type of scalar + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable Object visitScalarValue(@Nullable Object coercedValue, GraphQLScalarType inputType, InputElements inputElements) { + return coercedValue; + } + + /** + * This is called when an enum value is encountered + * + * @param coercedValue the value that is in coerced form + * @param inputType the type of enum + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable Object visitEnumValue(@Nullable Object coercedValue, GraphQLEnumType inputType, InputElements inputElements) { + return coercedValue; + } + + /** + * This is called when an input object field value is encountered + * + * @param coercedValue the value that is in coerced form + * @param inputObjectType the input object type containing the input field + * @param inputObjectField the input object field + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable Object visitInputObjectFieldValue(@Nullable Object coercedValue, GraphQLInputObjectType inputObjectType, GraphQLInputObjectField inputObjectField, InputElements inputElements) { + return coercedValue; + } + + /** + * This is called when an input object value is encountered. + * + * @param coercedValue the value that is in coerced form + * @param inputObjectType the input object type + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable Map visitInputObjectValue(@Nullable Map coercedValue, GraphQLInputObjectType inputObjectType, InputElements inputElements) { + return coercedValue; + } + + /** + * This is called when an input list value is encountered. + * + * @param coercedValue the value that is in coerced form + * @param listInputType the input list type + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable List visitListValue(@Nullable List coercedValue, GraphQLList listInputType, InputElements inputElements) { + return coercedValue; + } + + + /** + * This is called when a {@link GraphQLArgument} is encountered + * + * @param coercedValue the value that is in coerced form + * @param graphQLArgument the {@link GraphQLArgument} in play + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable Object visitArgumentValue(@Nullable Object coercedValue, GraphQLArgument graphQLArgument, InputElements inputElements) { + return coercedValue; + } + + + /** + * This is called when a {@link GraphQLAppliedDirectiveArgument} is encountered + * + * @param coercedValue the value that is in coerced form + * @param graphQLAppliedDirectiveArgument the {@link GraphQLAppliedDirectiveArgument} in play + * @param inputElements the elements that lead to this value and type + * + * @return the same value or a new value + */ + default @Nullable Object visitAppliedDirectiveArgumentValue(@Nullable Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, InputElements inputElements) { + return coercedValue; + } + +} diff --git a/src/main/java/graphql/cachecontrol/CacheControl.java b/src/main/java/graphql/cachecontrol/CacheControl.java deleted file mode 100644 index 6981ad42c6..0000000000 --- a/src/main/java/graphql/cachecontrol/CacheControl.java +++ /dev/null @@ -1,189 +0,0 @@ -package graphql.cachecontrol; - -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.PublicApi; -import graphql.execution.ExecutionPath; -import graphql.schema.DataFetchingEnvironment; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArrayList; - -import static graphql.Assert.assertNotNull; -import static graphql.util.FpKit.map; - -/** - * This class implements the graphql Cache Control specification as outlined in https://github.com/apollographql/apollo-cache-control - *

    - * To best use this class you need to pass a CacheControl object to each {@link graphql.schema.DataFetcher} and have them decide on - * the caching hint values. - *

    - * The easiest why to do this is create a CacheControl object at query start and pass it in as a "context" object via {@link graphql.ExecutionInput#getContext()} and then have - * each {@link graphql.schema.DataFetcher} thats wants to make cache control hints use that. - *

    - * Then at the end of the query you would call {@link #addTo(graphql.ExecutionResult)} to record the cache control hints into the {@link graphql.ExecutionResult} - * extensions map as per the specification. - */ -@PublicApi -public class CacheControl { - - public static final String CACHE_CONTROL_EXTENSION_KEY = "cacheControl"; - - /** - * If the scope is set to PRIVATE, this indicates anything under this path should only be cached per-user, - * unless the value is overridden on a sub path. PUBLIC is the default and means anything under this path - * can be stored in a shared cache. - */ - public enum Scope { - PUBLIC, PRIVATE - } - - private class Hint { - private final List path; - private final Integer maxAge; - private final Scope scope; - - private Hint(List path, Integer maxAge, Scope scope) { - this.path = assertNotNull(path); - this.maxAge = maxAge; - this.scope = scope; - } - - Map toMap() { - Map map = new LinkedHashMap<>(); - map.put("path", path); - if (maxAge != null) { - map.put("maxAge", maxAge); - } - if (scope != null) { - map.put("scope", scope.name()); - } - return map; - } - } - - private final List hints; - - private CacheControl() { - hints = new CopyOnWriteArrayList<>(); - } - - - /** - * This creates a cache control hint for the specified path - * - * @param path the path to the field that has the cache control hint - * @param maxAge the caching time in seconds - * @param scope the scope of the cache control hint - * - * @return this object builder style - */ - public CacheControl hint(ExecutionPath path, Integer maxAge, Scope scope) { - assertNotNull(path); - assertNotNull(scope); - hints.add(new Hint(path.toList(), maxAge, scope)); - return this; - } - - /** - * This creates a cache control hint for the specified path - * - * @param path the path to the field that has the cache control hint - * @param scope the scope of the cache control hint - * - * @return this object builder style - */ - public CacheControl hint(ExecutionPath path, Scope scope) { - return hint(path, null, scope); - } - - /** - * This creates a cache control hint for the specified path - * - * @param path the path to the field that has the cache control hint - * @param maxAge the caching time in seconds - * - * @return this object builder style - */ - public CacheControl hint(ExecutionPath path, Integer maxAge) { - return hint(path, maxAge, Scope.PUBLIC); - } - - /** - * This creates a cache control hint for the specified field being fetched - * - * @param dataFetchingEnvironment the path to the field that has the cache control hint - * @param maxAge the caching time in seconds - * @param scope the scope of the cache control hint - * - * @return this object builder style - */ - public CacheControl hint(DataFetchingEnvironment dataFetchingEnvironment, Integer maxAge, Scope scope) { - assertNotNull(dataFetchingEnvironment); - assertNotNull(scope); - hint(dataFetchingEnvironment.getExecutionStepInfo().getPath(), maxAge, scope); - return this; - } - - /** - * This creates a cache control hint for the specified field being fetched with a PUBLIC scope - * - * @param dataFetchingEnvironment the path to the field that has the cache control hint - * @param maxAge the caching time in seconds - * - * @return this object builder style - */ - public CacheControl hint(DataFetchingEnvironment dataFetchingEnvironment, Integer maxAge) { - hint(dataFetchingEnvironment, maxAge, Scope.PUBLIC); - return this; - } - - /** - * This creates a cache control hint for the specified field being fetched with a specified scope - * - * @param dataFetchingEnvironment the path to the field that has the cache control hint - * @param scope the scope of the cache control hint - * - * @return this object builder style - */ - public CacheControl hint(DataFetchingEnvironment dataFetchingEnvironment, Scope scope) { - return hint(dataFetchingEnvironment, null, scope); - } - - /** - * Creates a new CacheControl object that can be used to trick caching hints - * - * @return the new object - */ - public static CacheControl newCacheControl() { - return new CacheControl(); - } - - /** - * This will record the values in the cache control object into the provided execution result object which creates a new {@link graphql.ExecutionResult} - * object back out - * - * @param executionResult the starting execution result object - * - * @return a new execution result with the hints in the extensions map. - */ - public ExecutionResult addTo(ExecutionResult executionResult) { - return ExecutionResultImpl.newExecutionResult() - .from(executionResult) - .addExtension(CACHE_CONTROL_EXTENSION_KEY, hintsToCacheControlProperties()) - .build(); - } - - private Map hintsToCacheControlProperties() { - List> recordedHints = map(hints, Hint::toMap); - - Map cacheControl = new LinkedHashMap<>(); - cacheControl.put("version", 1); - cacheControl.put("hints", recordedHints); - return cacheControl; - } -} diff --git a/src/main/java/graphql/collect/ImmutableKit.java b/src/main/java/graphql/collect/ImmutableKit.java new file mode 100644 index 0000000000..15b148c2fa --- /dev/null +++ b/src/main/java/graphql/collect/ImmutableKit.java @@ -0,0 +1,223 @@ +package graphql.collect; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.Internal; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.function.Predicate; + +import static graphql.Assert.assertNotNull; + +@Internal +@NullMarked +public final class ImmutableKit { + + public static ImmutableList emptyList() { + return ImmutableList.of(); + } + + public static ImmutableList nonNullCopyOf(@Nullable Collection collection) { + return collection == null ? emptyList() : ImmutableList.copyOf(collection); + } + + public static ImmutableMap emptyMap() { + return ImmutableMap.of(); + } + + public static ImmutableMap addToMap(Map existing, K newKey, V newVal) { + return ImmutableMap.builder().putAll(existing).put(newKey, newVal).build(); + } + + public static ImmutableList concatLists(List l1, List l2) { + return ImmutableList.builderWithExpectedSize(l1.size() + l2.size()).addAll(l1).addAll(l2).build(); + } + + /** + * This is more efficient than `c.stream().map().collect()` because it does not create the intermediate objects needed + * for the flexible style. Benchmarking has shown this to outperform `stream()`. + * + * @param collection the collection to map + * @param mapper the mapper function + * @param for two + * @param for result + * + * @return a map immutable list of results + */ + public static ImmutableList map(Collection collection, Function mapper) { + assertNotNull(collection); + assertNotNull(mapper); + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(collection.size()); + for (T t : collection) { + R r = mapper.apply(t); + builder.add(r); + } + return builder.build(); + } + + public static ImmutableSet mapToSet(Collection collection, Function mapper) { + assertNotNull(collection); + assertNotNull(mapper); + ImmutableSet.Builder builder = ImmutableSet.builderWithExpectedSize(collection.size()); + for (T t : collection) { + R r = mapper.apply(t); + builder.add(r); + } + return builder.build(); + } + + + /** + * This is more efficient than `c.stream().filter().collect()` because it does not create the intermediate objects needed + * for the flexible style. Benchmarking has shown this to outperform `stream()`. + * + * @param collection the collection to map + * @param filter the filter predicate + * @param for two + * + * @return a map immutable list of results + */ + public static ImmutableList filter(Collection collection, Predicate filter) { + assertNotNull(collection); + assertNotNull(filter); + return filterAndMap(collection, filter, Function.identity()); + } + + /** + * This is more efficient than `c.stream().filter().map().collect()` because it does not create the intermediate objects needed + * for the flexible style. Benchmarking has shown this to outperform `stream()`. + * + * @param collection the collection to map + * @param filter the filter predicate + * @param mapper the mapper function + * @param for two + * @param for result + * + * @return a map immutable list of results + */ + public static ImmutableList filterAndMap(Collection collection, Predicate filter, Function mapper) { + assertNotNull(collection); + assertNotNull(mapper); + assertNotNull(filter); + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(collection.size()); + for (T t : collection) { + if (filter.test(t)) { + R r = mapper.apply(t); + builder.add(r); + } + } + return builder.build(); + } + + public static ImmutableList flatMapList(Collection> listLists) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (List t : listLists) { + builder.addAll(t); + } + return builder.build(); + } + + + /** + * This will map a collection of items but drop any that are null from the input. + * This is more efficient than `c.stream().map().collect()` because it does not create the intermediate objects needed + * for the flexible style. Benchmarking has shown this to outperform `stream()`. + * + * @param collection the collection to map + * @param mapper the mapper function + * @param for two + * @param for result + * + * @return a map immutable list of results + */ + public static ImmutableList mapAndDropNulls(Collection collection, Function mapper) { + assertNotNull(collection); + assertNotNull(mapper); + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(collection.size()); + for (T t : collection) { + R r = mapper.apply(t); + if (r != null) { + builder.add(r); + } + } + return builder.build(); + } + + /** + * This constructs a new Immutable list from an existing collection and adds a new element to it. + * + * @param existing the existing collection + * @param newValue the new value to add + * @param extraValues more values to add + * @param for two + * + * @return an Immutable list with the extra items. + */ + @SafeVarargs + public static ImmutableList addToList(Collection existing, T newValue, T... extraValues) { + assertNotNull(existing); + assertNotNull(newValue); + int expectedSize = existing.size() + 1 + extraValues.length; + ImmutableList.Builder newList = ImmutableList.builderWithExpectedSize(expectedSize); + newList.addAll(existing); + newList.add(newValue); + for (T extraValue : extraValues) { + newList.add(extraValue); + } + return newList.build(); + } + + /** + * This constructs a new Immutable set from an existing collection and adds a new element to it. + * + * @param existing the existing collection + * @param newValue the new value to add + * @param extraValues more values to add + * @param for two + * + * @return an Immutable Set with the extra items. + */ + @SafeVarargs + public static ImmutableSet addToSet(Collection existing, T newValue, T... extraValues) { + assertNotNull(existing); + assertNotNull(newValue); + int expectedSize = existing.size() + 1 + extraValues.length; + ImmutableSet.Builder newSet = ImmutableSet.builderWithExpectedSize(expectedSize); + newSet.addAll(existing); + newSet.add(newValue); + for (T extraValue : extraValues) { + newSet.add(extraValue); + } + return newSet.build(); + } + + + /** + * Filters a variable args array to a list + * + * @param filter the predicate the filter with + * @param args the variable args + * @param fot two + * + * @return a filtered list + */ + @SafeVarargs + public static List filterVarArgs(Predicate filter, T... args) { + if (args.length == 0) { + return ImmutableList.of(); + } + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(args.length); + for (T arg : args) { + if (filter.test(arg)) { + builder.add(arg); + } + } + return builder.build(); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/collect/ImmutableMapWithNullValues.java b/src/main/java/graphql/collect/ImmutableMapWithNullValues.java new file mode 100644 index 0000000000..e9ca664efb --- /dev/null +++ b/src/main/java/graphql/collect/ImmutableMapWithNullValues.java @@ -0,0 +1,200 @@ +package graphql.collect; + +import graphql.Assert; +import graphql.Internal; + +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Function; + +/** + * The standard ImmutableMap does not allow null values. The implementation does. + * We have cases in graphql, around arguments where a map entry can be explicitly set to null + * and we want immutable smart maps for these cases. + * + * @param for key + * @param for victory + */ +@SuppressWarnings({"NullableProblems", "unchecked", "rawtypes"}) +@Internal +public final class ImmutableMapWithNullValues implements Map { + + private final Map delegate; + + private static final ImmutableMapWithNullValues emptyMap = new ImmutableMapWithNullValues(); + + private ImmutableMapWithNullValues(Map values) { + this.delegate = Collections.unmodifiableMap(new LinkedHashMap<>(values)); + } + + /** + * Only used to construct the singleton empty map + */ + private ImmutableMapWithNullValues() { + this(ImmutableKit.emptyMap()); + } + + + public static ImmutableMapWithNullValues emptyMap() { + return emptyMap; + } + + public static ImmutableMapWithNullValues copyOf(Map map) { + Assert.assertNotNull(map); + if (map instanceof ImmutableMapWithNullValues) { + return (ImmutableMapWithNullValues) map; + } + if (map.isEmpty()) { + return emptyMap(); + } + return new ImmutableMapWithNullValues<>(map); + } + + @Override + public int size() { + return delegate.size(); + } + + @Override + public boolean isEmpty() { + return delegate.isEmpty(); + } + + @Override + public boolean containsKey(Object key) { + return delegate.containsKey(key); + } + + @Override + public boolean containsValue(Object value) { + return delegate.containsValue(value); + } + + @Override + public V get(Object key) { + return delegate.get(key); + } + + @Override + @Deprecated(since = "2020-11-10") + public V put(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V remove(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public void putAll(Map m) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public Set keySet() { + return delegate.keySet(); + } + + @Override + public Collection values() { + return delegate.values(); + } + + @Override + public Set> entrySet() { + return delegate.entrySet(); + } + + @Override + public boolean equals(Object o) { + return delegate.equals(o); + } + + @Override + public int hashCode() { + return delegate.hashCode(); + } + + @Override + public V getOrDefault(Object key, V defaultValue) { + return delegate.getOrDefault(key, defaultValue); + } + + @Override + public void forEach(BiConsumer action) { + delegate.forEach(action); + } + + @Override + @Deprecated(since = "2020-11-10") + public void replaceAll(BiFunction function) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V putIfAbsent(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public boolean remove(Object key, Object value) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public boolean replace(K key, V oldValue, V newValue) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V replace(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V computeIfAbsent(K key, Function mappingFunction) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V computeIfPresent(K key, BiFunction remappingFunction) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V compute(K key, BiFunction remappingFunction) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated(since = "2020-11-10") + public V merge(K key, V value, BiFunction remappingFunction) { + throw new UnsupportedOperationException(); + } + + @Override + public String toString() { + return delegate.toString(); + } +} diff --git a/src/main/java/graphql/execution/AbortExecutionException.java b/src/main/java/graphql/execution/AbortExecutionException.java index ca855a0456..950dfde9a0 100644 --- a/src/main/java/graphql/execution/AbortExecutionException.java +++ b/src/main/java/graphql/execution/AbortExecutionException.java @@ -13,7 +13,7 @@ import java.util.List; import static graphql.Assert.assertNotNull; -import static java.util.Collections.emptyList; +import static graphql.collect.ImmutableKit.emptyList; /** * This Exception indicates that the current execution should be aborted. @@ -67,13 +67,13 @@ public List getUnderlyingErrors() { * This is useful for turning this abort signal into an execution result which * is an error state with the underlying errors in it. * - * @return an excution result with the errors from this exception + * @return an execution result with the errors from this exception */ public ExecutionResult toExecutionResult() { - ExecutionResult executionResult = new ExecutionResultImpl(this); if (!this.getUnderlyingErrors().isEmpty()) { - executionResult = new ExecutionResultImpl(this.getUnderlyingErrors()); + return new ExecutionResultImpl(this.getUnderlyingErrors()); } - return executionResult; + + return new ExecutionResultImpl(this); } } diff --git a/src/main/java/graphql/execution/AbsoluteGraphQLError.java b/src/main/java/graphql/execution/AbsoluteGraphQLError.java deleted file mode 100644 index f52bf3626a..0000000000 --- a/src/main/java/graphql/execution/AbsoluteGraphQLError.java +++ /dev/null @@ -1,144 +0,0 @@ -package graphql.execution; - -import graphql.ErrorClassification; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.language.SourceLocation; -import graphql.schema.DataFetcher; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import static graphql.Assert.assertNotNull; - -/** - * A {@link GraphQLError} that has been changed from a {@link DataFetcher} relative error to an absolute one. - */ -@Internal -public class AbsoluteGraphQLError implements GraphQLError { - - private final List locations; - private final List absolutePath; - private final String message; - private final ErrorClassification errorType; - private final Map extensions; - - public AbsoluteGraphQLError(ExecutionStrategyParameters executionStrategyParameters, GraphQLError relativeError) { - assertNotNull(executionStrategyParameters); - assertNotNull(relativeError); - this.absolutePath = createAbsolutePath(executionStrategyParameters.getPath(), relativeError); - this.locations = createAbsoluteLocations(relativeError, executionStrategyParameters.getField()); - this.message = relativeError.getMessage(); - this.errorType = relativeError.getErrorType(); - if (relativeError.getExtensions() != null) { - this.extensions = new LinkedHashMap<>(); - this.extensions.putAll(relativeError.getExtensions()); - } else { - this.extensions = null; - } - } - - public AbsoluteGraphQLError(MergedField sameField, ExecutionPath executionPath, GraphQLError relativeError) { - this.absolutePath = createAbsolutePath(executionPath, relativeError); - this.locations = createAbsoluteLocations(relativeError, sameField); - this.message = relativeError.getMessage(); - this.errorType = relativeError.getErrorType(); - if (relativeError.getExtensions() != null) { - this.extensions = new LinkedHashMap<>(); - this.extensions.putAll(relativeError.getExtensions()); - } else { - this.extensions = null; - } - - } - - @Override - public String getMessage() { - return message; - } - - @Override - public List getLocations() { - return locations; - } - - @Override - public ErrorClassification getErrorType() { - return errorType; - } - - @Override - public List getPath() { - return absolutePath; - } - - @Override - public Map getExtensions() { - return extensions; - } - - /** - * Creating absolute paths follows the following logic: - * Relative path is null -> Absolute path null - * Relative path is empty -> Absolute paths is path up to the field. - * Relative path is not empty -> Absolute paths [base Path, relative Path] - * - * - * @return List of paths from the root. - */ - private List createAbsolutePath(ExecutionPath executionPath, - GraphQLError relativeError) { - return Optional.ofNullable(relativeError.getPath()) - .map(originalPath -> { - List path = new ArrayList<>(); - path.addAll(executionPath.toList()); - path.addAll(relativeError.getPath()); - return path; - }) - .map(Collections::unmodifiableList) - .orElse(executionPath.toList()); - } - - /** - * Creating absolute locations follows the following logic: - * Relative locations is null -> Absolute locations null - * Relative locations is empty -> Absolute locations base locations of the field. - * Relative locations is not empty -> Absolute locations [base line + relative line location] - * - * @param relativeError relative error - * @param fields fields on the current field. - * - * @return List of locations from the root. - */ - private List createAbsoluteLocations(GraphQLError relativeError, MergedField fields) { - Optional baseLocation = Optional.ofNullable(fields.getSingleField().getSourceLocation()); -// if (!fields.isEmpty()) { -// baseLocation = Optional.ofNullable(fields.get(0).getSourceLocation()); -// } else { -// baseLocation = Optional.empty(); -// } - - // relative error empty path should yield an absolute error with the base path - if (relativeError.getLocations() != null && relativeError.getLocations().isEmpty()) { - return baseLocation.map(Collections::singletonList).orElse(null); - } - - return Optional.ofNullable( - relativeError.getLocations()) - .map(locations -> locations.stream() - .map(l -> - baseLocation - .map(base -> new SourceLocation( - base.getLine() + l.getLine(), - base.getColumn() + l.getColumn())) - .orElse(null)) - .collect(Collectors.toList())) - .map(Collections::unmodifiableList) - .orElse(null); - } -} diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index c2bb3b096e..25f2036cbf 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -2,14 +2,15 @@ import graphql.ExecutionResult; import graphql.ExecutionResultImpl; +import graphql.PublicSpi; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; +@PublicSpi public abstract class AbstractAsyncExecutionStrategy extends ExecutionStrategy { public AbstractAsyncExecutionStrategy() { @@ -19,19 +20,16 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc super(dataFetcherExceptionHandler); } - protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { - return (List results, Throwable exception) -> { + protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { + return (List results, Throwable exception) -> { + exception = executionContext.possibleCancellation(exception); + if (exception != null) { handleNonNullException(executionContext, overallResult, exception); return; } - Map resolvedValuesByField = new LinkedHashMap<>(); - int ix = 0; - for (ExecutionResult executionResult : results) { - String fieldName = fieldNames.get(ix++); - resolvedValuesByField.put(fieldName, executionResult.getData()); - } + Map resolvedValuesByField = executionContext.getResponseMapFactory().createInsertionOrdered(fieldNames, results); overallResult.complete(new ExecutionResultImpl(resolvedValuesByField, executionContext.getErrors())); }; } diff --git a/src/main/java/graphql/execution/Async.java b/src/main/java/graphql/execution/Async.java index ee4a65b80e..f268347341 100644 --- a/src/main/java/graphql/execution/Async.java +++ b/src/main/java/graphql/execution/Async.java @@ -2,10 +2,16 @@ import graphql.Assert; import graphql.Internal; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.CompletionStage; @@ -14,97 +20,367 @@ import java.util.function.Supplier; import java.util.stream.Collectors; +import static graphql.Assert.assertTrue; +import static java.util.stream.Collectors.toList; + @Internal @SuppressWarnings("FutureReturnValueIgnored") public class Async { - @FunctionalInterface - public interface CFFactory { - CompletableFuture apply(T input, int index, List previousResults); + /** + * A builder of materialized objects or {@link CompletableFuture}s than can present a promise to the list of them + *

    + * This builder has a strict contract on size whereby if the expectedSize is five, then there MUST be five elements presented to it. + * + * @param for two + */ + public interface CombinedBuilder { + + /** + * This adds a {@link CompletableFuture} into the collection of results + * + * @param completableFuture the CF to add + */ + void add(CompletableFuture completableFuture); + + /** + * This adds a new value which can be either a materialized value or a {@link CompletableFuture} + * + * @param object the object to add + */ + void addObject(Object object); + + /** + * This will return a {@code CompletableFuture>} even if the inputs are all materialized values + * + * @return a CompletableFuture to a List of values + */ + CompletableFuture> await(); + + /** + * This will return a {@code CompletableFuture>} if ANY of the input values are async + * otherwise it just return a materialised {@code List} + * + * @return either a CompletableFuture or a materialized list + */ + /* CompletableFuture> | List */ Object awaitPolymorphic(); } - public static CompletableFuture> each(List> futures) { - CompletableFuture> overallResult = new CompletableFuture<>(); + /** + * Combines zero or more CFs into one. It is a wrapper around CompletableFuture.allOf. + * + * @param expectedSize how many we expect + * @param for two + * + * @return a combined builder of CFs + */ + public static CombinedBuilder ofExpectedSize(int expectedSize) { + if (expectedSize == 0) { + return new Empty<>(); + } else if (expectedSize == 1) { + return new Single<>(); + } else { + return new Many<>(expectedSize); + } + } - CompletableFuture - .allOf(futures.toArray(new CompletableFuture[0])) - .whenComplete((noUsed, exception) -> { - if (exception != null) { - overallResult.completeExceptionally(exception); - return; - } - List results = new ArrayList<>(); - for (CompletableFuture future : futures) { - results.add(future.join()); + private static class Empty implements CombinedBuilder { + + private int ix; + + @Override + public void add(CompletableFuture completableFuture) { + this.ix++; + } + + @Override + public void addObject(Object object) { + this.ix++; + } + + @Override + public CompletableFuture> await() { + assertTrue(ix == 0, "expected size was 0 got %d", ix); + return typedEmpty(); + } + + @Override + public Object awaitPolymorphic() { + Assert.assertTrue(ix == 0, () -> "expected size was " + 0 + " got " + ix); + return Collections.emptyList(); + } + + // implementation details: infer the type of Completable> from a singleton empty + private static final CompletableFuture> EMPTY = CompletableFuture.completedFuture(Collections.emptyList()); + + @SuppressWarnings("unchecked") + private static CompletableFuture typedEmpty() { + return (CompletableFuture) EMPTY; + } + } + + private static class Single implements CombinedBuilder { + + // avoiding array allocation as there is only 1 CF + private Object value; + private int ix; + + @Override + public void add(CompletableFuture completableFuture) { + this.value = completableFuture; + this.ix++; + } + + @Override + public void addObject(Object object) { + this.value = object; + this.ix++; + } + + @Override + public CompletableFuture> await() { + commonSizeAssert(); + if (value instanceof CompletableFuture) { + @SuppressWarnings("unchecked") + CompletableFuture cf = (CompletableFuture) value; + return cf.thenApply(Collections::singletonList); + } + //noinspection unchecked + return CompletableFuture.completedFuture(Collections.singletonList((T) value)); + } + + @Override + public Object awaitPolymorphic() { + commonSizeAssert(); + if (value instanceof CompletableFuture) { + @SuppressWarnings("unchecked") + CompletableFuture cf = (CompletableFuture) value; + return cf.thenApply(Collections::singletonList); + } + //noinspection unchecked + return Collections.singletonList((T) value); + } + + private void commonSizeAssert() { + Assert.assertTrue(ix == 1, () -> "expected size was " + 1 + " got " + ix); + } + } + + private static class Many implements CombinedBuilder { + + private final Object[] array; + private int ix; + private int cfCount; + + private Many(int size) { + this.array = new Object[size]; + this.ix = 0; + cfCount = 0; + } + + @Override + public void add(CompletableFuture completableFuture) { + array[ix++] = completableFuture; + cfCount++; + } + + @Override + public void addObject(Object object) { + array[ix++] = object; + if (object instanceof CompletableFuture) { + cfCount++; + } + } + + @SuppressWarnings("unchecked") + @Override + public CompletableFuture> await() { + commonSizeAssert(); + + CompletableFuture> overallResult = new CompletableFuture<>(); + if (cfCount == 0) { + overallResult.complete(materialisedList(array)); + } else { + CompletableFuture[] cfsArr = copyOnlyCFsToArray(); + CompletableFuture.allOf(cfsArr) + .whenComplete((ignored, exception) -> { + if (exception != null) { + overallResult.completeExceptionally(exception); + return; + } + List results = new ArrayList<>(array.length); + if (cfsArr.length == array.length) { + // they are all CFs + for (CompletableFuture cf : cfsArr) { + results.add(cf.join()); + } + } else { + // it's a mixed bag of CFs and materialized objects + for (Object object : array) { + if (object instanceof CompletableFuture) { + CompletableFuture cf = (CompletableFuture) object; + // join is safe since they are all completed earlier via CompletableFuture.allOf() + results.add(cf.join()); + } else { + results.add((T) object); + } + } + } + overallResult.complete(results); + }); + } + return overallResult; + } + + @SuppressWarnings("unchecked") + @NonNull + private CompletableFuture[] copyOnlyCFsToArray() { + if (cfCount == array.length) { + // if it's all CFs - make a type safe copy via C code + return Arrays.copyOf(array, array.length, CompletableFuture[].class); + } else { + int i = 0; + CompletableFuture[] dest = new CompletableFuture[cfCount]; + for (Object o : array) { + if (o instanceof CompletableFuture) { + dest[i] = (CompletableFuture) o; + i++; } - overallResult.complete(results); - }); - return overallResult; + } + return dest; + } + } + + @Override + public Object awaitPolymorphic() { + if (cfCount == 0) { + commonSizeAssert(); + return materialisedList(array); + } else { + return await(); + } + } + + @NonNull + private List materialisedList(Object[] array) { + List results = new ArrayList<>(array.length); + for (Object object : array) { + //noinspection unchecked + results.add((T) object); + } + return results; + } + + private void commonSizeAssert() { + Assert.assertTrue(ix == array.length, () -> "expected size was " + array.length + " got " + ix); + } + } - public static CompletableFuture> each(Iterable list, BiFunction> cfFactory) { - List> futures = new ArrayList<>(); - int index = 0; + @SuppressWarnings("unchecked") + public static CompletableFuture> each(Collection list, Function cfOrMaterialisedValueFactory) { + Object l = eachPolymorphic(list, cfOrMaterialisedValueFactory); + if (l instanceof CompletableFuture) { + return (CompletableFuture>) l; + } else { + return CompletableFuture.completedFuture((List) l); + } + } + + /** + * This will run the value factory for each of the values in the provided list. + *

    + * If any of the values provided is a {@link CompletableFuture} it will return a {@link CompletableFuture} result object + * that joins on all values otherwise if none of the values are a {@link CompletableFuture} then it will return a materialized list. + * + * @param list the list to work over + * @param cfOrMaterialisedValueFactory the value factory to call for each iterm in the list + * @param for two + * + * @return a {@link CompletableFuture} to the list of resolved values or the list of values in a materialized fashion + */ + public static /* CompletableFuture> | List */ Object eachPolymorphic(Collection list, Function cfOrMaterialisedValueFactory) { + CombinedBuilder futures = ofExpectedSize(list.size()); for (T t : list) { - CompletableFuture cf; try { - cf = cfFactory.apply(t, index++); - Assert.assertNotNull(cf, "cfFactory must return a non null value"); + Object value = cfOrMaterialisedValueFactory.apply(t); + futures.addObject(value); } catch (Exception e) { - cf = new CompletableFuture<>(); + CompletableFuture cf = new CompletableFuture<>(); // Async.each makes sure that it is not a CompletionException inside a CompletionException cf.completeExceptionally(new CompletionException(e)); + futures.add(cf); } - futures.add(cf); } - return each(futures); - + return futures.awaitPolymorphic(); } - public static CompletableFuture> eachSequentially(Iterable list, CFFactory cfFactory) { + public static CompletableFuture> eachSequentially(Iterable list, BiFunction, Object> cfOrMaterialisedValueFactory) { CompletableFuture> result = new CompletableFuture<>(); - eachSequentiallyImpl(list.iterator(), cfFactory, 0, new ArrayList<>(), result); + eachSequentiallyPolymorphicImpl(list.iterator(), cfOrMaterialisedValueFactory, new ArrayList<>(), result); return result; } - private static void eachSequentiallyImpl(Iterator iterator, CFFactory cfFactory, int index, List tmpResult, CompletableFuture> overallResult) { + @SuppressWarnings("unchecked") + private static void eachSequentiallyPolymorphicImpl(Iterator iterator, BiFunction, Object> cfOrMaterialisedValueFactory, List tmpResult, CompletableFuture> overallResult) { if (!iterator.hasNext()) { overallResult.complete(tmpResult); return; } - CompletableFuture cf; + Object value; try { - cf = cfFactory.apply(iterator.next(), index, tmpResult); - Assert.assertNotNull(cf, "cfFactory must return a non null value"); + value = cfOrMaterialisedValueFactory.apply(iterator.next(), tmpResult); } catch (Exception e) { - cf = new CompletableFuture<>(); - cf.completeExceptionally(new CompletionException(e)); + overallResult.completeExceptionally(new CompletionException(e)); + return; + } + if (value instanceof CompletableFuture) { + CompletableFuture cf = (CompletableFuture) value; + cf.whenComplete((cfResult, exception) -> { + if (exception != null) { + overallResult.completeExceptionally(exception); + return; + } + tmpResult.add(cfResult); + eachSequentiallyPolymorphicImpl(iterator, cfOrMaterialisedValueFactory, tmpResult, overallResult); + }); + } else { + tmpResult.add((U) value); + eachSequentiallyPolymorphicImpl(iterator, cfOrMaterialisedValueFactory, tmpResult, overallResult); } - cf.whenComplete((cfResult, exception) -> { - if (exception != null) { - overallResult.completeExceptionally(exception); - return; - } - tmpResult.add(cfResult); - eachSequentiallyImpl(iterator, cfFactory, index + 1, tmpResult, overallResult); - }); } /** - * Turns an object T into a CompletableFuture if its not already + * Turns an object T into a CompletableFuture if it's not already * * @param t - the object to check * @param for two * * @return a CompletableFuture */ - public static CompletableFuture toCompletableFuture(T t) { + @SuppressWarnings("unchecked") + public static CompletableFuture toCompletableFuture(Object t) { if (t instanceof CompletionStage) { - //noinspection unchecked return ((CompletionStage) t).toCompletableFuture(); } else { - return CompletableFuture.completedFuture(t); + return CompletableFuture.completedFuture((T) t); + } + } + + /** + * Turns a CompletionStage into a CompletableFuture if it's not already, otherwise leaves it alone + * as a materialized object. + * + * @param object - the object to check + * + * @return a CompletableFuture from a CompletionStage or the materialized object itself + */ + public static Object toCompletableFutureOrMaterializedObject(Object object) { + if (object instanceof CompletionStage) { + return ((CompletionStage) object).toCompletableFuture(); + } else { + return object; } } @@ -124,65 +400,35 @@ public static CompletableFuture exceptionallyCompletedFuture(Throwable ex return result; } - public static void copyResults(CompletableFuture source, CompletableFuture target) { - source.whenComplete((o, throwable) -> { - if (throwable != null) { - target.completeExceptionally(throwable); - return; - } - target.complete(o); - }); - } - - - public static CompletableFuture reduce(List> values, U initialValue, BiFunction aggregator) { - CompletableFuture result = new CompletableFuture<>(); - reduceImpl(values, 0, initialValue, aggregator, result); - return result; - } - - public static CompletableFuture reduce(CompletableFuture> values, U initialValue, BiFunction aggregator) { - return values.thenApply(list -> { - U result = initialValue; - for (T value : list) { - result = aggregator.apply(result, value); - } - return result; - }); - } - - public static CompletableFuture> flatMap(List inputs, Function> mapper) { - List> collect = inputs - .stream() - .map(mapper) - .collect(Collectors.toList()); - return Async.each(collect); - } - - private static void reduceImpl(List> values, int curIndex, U curValue, BiFunction aggregator, CompletableFuture result) { - if (curIndex == values.size()) { - result.complete(curValue); - return; - } - values.get(curIndex). - thenApply(oneValue -> aggregator.apply(curValue, oneValue)) - .thenAccept(newValue -> reduceImpl(values, curIndex + 1, newValue, aggregator, result)); - } - - public static CompletableFuture> map(CompletableFuture> values, Function mapper) { - return values.thenApply(list -> list.stream().map(mapper).collect(Collectors.toList())); + /** + * If the passed in CompletableFuture is null, then it creates a CompletableFuture that resolves to null + * + * @param completableFuture the CF to use + * @param for two + * + * @return the completableFuture if it's not null or one that always resoles to null + */ + public static @NonNull CompletableFuture orNullCompletedFuture(@Nullable CompletableFuture completableFuture) { + return completableFuture != null ? completableFuture : CompletableFuture.completedFuture(null); } - public static List> map(List> values, Function mapper) { - return values - .stream() - .map(cf -> cf.thenApply(mapper::apply)).collect(Collectors.toList()); + public static CompletableFuture> allOf(List> cfs) { + return CompletableFuture.allOf(cfs.toArray(CompletableFuture[]::new)) + .thenApply(v -> cfs.stream() + .map(CompletableFuture::join) + .collect(toList()) + ); } - public static List> mapCompose(List> values, Function> mapper) { - return values - .stream() - .map(cf -> cf.thenCompose(mapper::apply)).collect(Collectors.toList()); + public static CompletableFuture> allOf(Map> cfs) { + return CompletableFuture.allOf(cfs.values().toArray(CompletableFuture[]::new)) + .thenApply(v -> cfs.entrySet().stream() + .collect( + Collectors.toMap( + Map.Entry::getKey, + task -> task.getValue().join()) + ) + ); } } diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index f5a33b0452..8d1d430581 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -1,31 +1,22 @@ package graphql.execution; import graphql.ExecutionResult; -import graphql.execution.defer.DeferSupport; -import graphql.execution.defer.DeferredCall; -import graphql.execution.defer.DeferredErrorSupport; -import graphql.execution.instrumentation.DeferredFieldInstrumentationContext; +import graphql.PublicApi; +import graphql.execution.incremental.DeferredExecutionSupport; import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLObjectType; +import graphql.introspection.Introspection; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import static graphql.execution.MergedSelectionSet.newMergedSelectionSet; /** * The standard graphql execution strategy that runs fields asynchronously non-blocking. */ +@PublicApi public class AsyncExecutionStrategy extends AbstractAsyncExecutionStrategy { /** @@ -47,50 +38,54 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - ExecutionStrategyInstrumentationContext executionStrategyCtx = instrumentation.beginExecutionStrategy(instrumentationParameters); + ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, executionContext.getInstrumentationState())); MergedSelectionSet fields = parameters.getFields(); - List fieldNames = new ArrayList<>(fields.keySet()); - List> futures = new ArrayList<>(); - List resolvedFields = new ArrayList<>(); - for (String fieldName : fieldNames) { - MergedField currentField = fields.getSubField(fieldName); - - ExecutionPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath).parent(parameters)); - - resolvedFields.add(fieldName); - CompletableFuture future; - - if (isDeferred(executionContext, newParameters, currentField)) { - executionStrategyCtx.onDeferredField(currentField); - future = resolveFieldWithInfoToNull(executionContext, newParameters); - } else { - future = resolveFieldWithInfo(executionContext, newParameters); - } - futures.add(future); + List fieldNames = fields.getKeys(); + + Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); + if (isNotSensible.isPresent()) { + return CompletableFuture.completedFuture(isNotSensible.get()); } + + DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); + + dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters, deferredExecutionSupport.getNonDeferredFieldNames(fieldNames).size()); + Async.CombinedBuilder futures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); + dataLoaderDispatcherStrategy.finishedFetching(executionContext, parameters); + + CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(overallResult); + executionStrategyCtx.onDispatched(); + + futures.await().whenComplete((completeValueInfos, throwable) -> { + List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); + + BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); + throwable = executionContext.possibleCancellation(throwable); - Async.each(futures).whenComplete((completeValueInfos, throwable) -> { - BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, resolvedFields, overallResult); if (throwable != null) { handleResultsConsumer.accept(null, throwable.getCause()); return; } - List> executionResultFuture = completeValueInfos.stream().map(FieldValueInfo::getFieldValue).collect(Collectors.toList()); + + Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); + for (FieldValueInfo completeValueInfo : completeValueInfos) { + fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); + } + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos, parameters); executionStrategyCtx.onFieldValuesInfo(completeValueInfos); - Async.each(executionResultFuture).whenComplete(handleResultsConsumer); + fieldValuesFutures.await().whenComplete(handleResultsConsumer); }).exceptionally((ex) -> { // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex, parameters); + executionStrategyCtx.onFieldValuesException(); overallResult.completeExceptionally(ex); return null; }); @@ -99,56 +94,4 @@ public CompletableFuture execute(ExecutionContext executionCont return overallResult; } - private boolean isDeferred(ExecutionContext executionContext, ExecutionStrategyParameters parameters, MergedField currentField) { - DeferSupport deferSupport = executionContext.getDeferSupport(); - if (deferSupport.checkForDeferDirective(currentField, executionContext.getVariables())) { - DeferredErrorSupport errorSupport = new DeferredErrorSupport(); - - // with a deferred field we are really resetting where we execute from, that is from this current field onwards - Map fields = new LinkedHashMap<>(); - fields.put(currentField.getName(), currentField); - - ExecutionStrategyParameters callParameters = parameters.transform(builder -> - { - MergedSelectionSet mergedSelectionSet = newMergedSelectionSet().subFields(fields).build(); - builder.deferredErrorSupport(errorSupport) - .field(currentField) - .fields(mergedSelectionSet) - .parent(null) // this is a break in the parent -> child chain - its a new start effectively - .listSize(0) - .currentListIndex(0); - } - ); - - DeferredCall call = new DeferredCall(parameters.getPath(), deferredExecutionResult(executionContext, callParameters), errorSupport); - deferSupport.enqueue(call); - return true; - } - return false; - } - - @SuppressWarnings("FutureReturnValueIgnored") - private Supplier> deferredExecutionResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - return () -> { - GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField()); - GraphQLObjectType fieldContainer = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); - - Instrumentation instrumentation = executionContext.getInstrumentation(); - DeferredFieldInstrumentationContext fieldCtx = instrumentation.beginDeferredField( - new InstrumentationDeferredFieldParameters(executionContext, parameters, fieldDef, createExecutionStepInfo(executionContext, parameters, fieldDef, fieldContainer)) - ); - CompletableFuture result = new CompletableFuture<>(); - fieldCtx.onDispatched(result); - CompletableFuture fieldValueInfoFuture = resolveFieldWithInfo(executionContext, parameters); - - fieldValueInfoFuture.whenComplete((fieldValueInfo, throwable) -> { - fieldCtx.onFieldValueInfo(fieldValueInfo); - - CompletableFuture execResultFuture = fieldValueInfo.getFieldValue(); - execResultFuture = execResultFuture.whenComplete(fieldCtx::onCompleted); - Async.copyResults(execResultFuture, result); - }); - return result; - }; - } } diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index 1be2e3bb7f..b5ff7cd5fa 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -1,18 +1,24 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; import graphql.ExecutionResult; +import graphql.PublicApi; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; +import graphql.introspection.Introspection; -import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.nonNullCtx; + /** - * Async non-blocking execution, but serial: only one field at the the time will be resolved. - * See {@link AsyncExecutionStrategy} for a non serial (parallel) execution of every field. + * Async non-blocking execution, but serial: only one field at the time will be resolved. + * See {@link AsyncExecutionStrategy} for a non-serial (parallel) execution of every field. */ +@PublicApi public class AsyncSerialExecutionStrategy extends AbstractAsyncExecutionStrategy { public AsyncSerialExecutionStrategy() { @@ -24,29 +30,59 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler } @Override - @SuppressWarnings({"TypeParameterUnusedInFormals","FutureReturnValueIgnored"}) + @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - InstrumentationContext executionStrategyCtx = instrumentation.beginExecutionStrategy(instrumentationParameters); + InstrumentationContext executionStrategyCtx = nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, + executionContext.getInstrumentationState()) + ); MergedSelectionSet fields = parameters.getFields(); - List fieldNames = new ArrayList<>(fields.keySet()); + ImmutableList fieldNames = ImmutableList.copyOf(fields.keySet()); + + // this is highly unlikely since Mutations cant do introspection BUT in theory someone could make the query strategy this code + // so belts and braces + Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); + if (isNotSensible.isPresent()) { + return CompletableFuture.completedFuture(isNotSensible.get()); + } - CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, index, prevResults) -> { + CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { MergedField currentField = fields.getSubField(fieldName); - ExecutionPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath)); - return resolveField(executionContext, newParameters); + ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); + ExecutionStrategyParameters newParameters = parameters.transform(currentField, fieldPath); + + return resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); }); CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(overallResult); + executionStrategyCtx.onDispatched(); resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); overallResult.whenComplete(executionStrategyCtx::onCompleted); return overallResult; } + private Object resolveSerialField(ExecutionContext executionContext, + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy, + ExecutionStrategyParameters newParameters) { + dataLoaderDispatcherStrategy.executionSerialStrategy(executionContext, newParameters); + + Object fieldWithInfo = resolveFieldWithInfo(executionContext, newParameters); + dataLoaderDispatcherStrategy.finishedFetching(executionContext, newParameters); + if (fieldWithInfo instanceof CompletableFuture) { + //noinspection unchecked + return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> { + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi), newParameters); + CompletableFuture fieldValueFuture = fvi.getFieldValueFuture(); + return fieldValueFuture; + }); + } else { + FieldValueInfo fvi = (FieldValueInfo) fieldWithInfo; + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi), newParameters); + return fvi.getFieldValueObject(); + } + } } diff --git a/src/main/java/graphql/execution/CoercedVariables.java b/src/main/java/graphql/execution/CoercedVariables.java new file mode 100644 index 0000000000..6123aeec82 --- /dev/null +++ b/src/main/java/graphql/execution/CoercedVariables.java @@ -0,0 +1,45 @@ +package graphql.execution; + +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.collect.ImmutableMapWithNullValues; + +import java.util.Map; + +/** + * Holds coerced variables, that is their values are now in a canonical form. + */ +@PublicApi +public class CoercedVariables { + private static final CoercedVariables EMPTY = CoercedVariables.of(ImmutableKit.emptyMap()); + private final ImmutableMapWithNullValues coercedVariables; + + public CoercedVariables(Map coercedVariables) { + this.coercedVariables = ImmutableMapWithNullValues.copyOf(coercedVariables); + } + + public Map toMap() { + return coercedVariables; + } + + public boolean containsKey(String key) { + return coercedVariables.containsKey(key); + } + + public Object get(String key) { + return coercedVariables.get(key); + } + + public static CoercedVariables emptyVariables() { + return EMPTY; + } + + public static CoercedVariables of(Map coercedVariables) { + return new CoercedVariables(coercedVariables); + } + + @Override + public String toString() { + return coercedVariables.toString(); + } +} diff --git a/src/main/java/graphql/execution/ConditionalNodes.java b/src/main/java/graphql/execution/ConditionalNodes.java deleted file mode 100644 index 822c4f18da..0000000000 --- a/src/main/java/graphql/execution/ConditionalNodes.java +++ /dev/null @@ -1,45 +0,0 @@ -package graphql.execution; - -import graphql.Internal; -import graphql.VisibleForTesting; -import graphql.language.Directive; - -import java.util.List; -import java.util.Map; - -import static graphql.Directives.IncludeDirective; -import static graphql.Directives.SkipDirective; -import static graphql.language.NodeUtil.directivesByName; - - -@Internal -public class ConditionalNodes { - - - @VisibleForTesting - ValuesResolver valuesResolver = new ValuesResolver(); - - public boolean shouldInclude(Map variables, List directives) { - boolean skip = getDirectiveResult(variables, directives, SkipDirective.getName(), false); - boolean include = getDirectiveResult(variables, directives, IncludeDirective.getName(), true); - return !skip && include; - } - - private Directive getDirectiveByName(List directives, String name) { - if (directives.isEmpty()) { - return null; - } - return directivesByName(directives).get(name); - } - - private boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { - Directive directive = getDirectiveByName(directives, directiveName); - if (directive != null) { - Map argumentValues = valuesResolver.getArgumentValues(SkipDirective.getArguments(), directive.getArguments(), variables); - return (Boolean) argumentValues.get("if"); - } - - return defaultValue; - } - -} diff --git a/src/main/java/graphql/execution/DataFetcherExceptionHandler.java b/src/main/java/graphql/execution/DataFetcherExceptionHandler.java index 4f3ccf4c2d..6daafd94dd 100644 --- a/src/main/java/graphql/execution/DataFetcherExceptionHandler.java +++ b/src/main/java/graphql/execution/DataFetcherExceptionHandler.java @@ -1,9 +1,12 @@ package graphql.execution; +import graphql.ExecutionResult; import graphql.PublicSpi; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; +import java.util.concurrent.CompletableFuture; + /** * This is called when an exception is thrown during {@link graphql.schema.DataFetcher#get(DataFetchingEnvironment)} execution */ @@ -11,12 +14,13 @@ public interface DataFetcherExceptionHandler { /** - * When an exception during a call to a {@link DataFetcher} then this handler - * is called back to shape the error that should be placed in the list of errors + * When an exception occurs during a call to a {@link DataFetcher} then this handler + * is called to shape the errors that should be placed in the {@link ExecutionResult#getErrors()} + * list of errors. * * @param handlerParameters the parameters to this callback * * @return a result that can contain custom formatted {@link graphql.GraphQLError}s */ - DataFetcherExceptionHandlerResult onException(DataFetcherExceptionHandlerParameters handlerParameters); + CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters); } diff --git a/src/main/java/graphql/execution/DataFetcherExceptionHandlerParameters.java b/src/main/java/graphql/execution/DataFetcherExceptionHandlerParameters.java index 76cc751378..b17e3582b5 100644 --- a/src/main/java/graphql/execution/DataFetcherExceptionHandlerParameters.java +++ b/src/main/java/graphql/execution/DataFetcherExceptionHandlerParameters.java @@ -25,7 +25,7 @@ public Throwable getException() { return exception; } - public ExecutionPath getPath() { + public ResultPath getPath() { return dataFetchingEnvironment.getExecutionStepInfo().getPath(); } diff --git a/src/main/java/graphql/execution/DataFetcherResult.java b/src/main/java/graphql/execution/DataFetcherResult.java index 7ac9624130..c7a58d84a1 100644 --- a/src/main/java/graphql/execution/DataFetcherResult.java +++ b/src/main/java/graphql/execution/DataFetcherResult.java @@ -1,62 +1,67 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; +import graphql.ExecutionResult; import graphql.GraphQLError; -import graphql.Internal; import graphql.PublicApi; import graphql.schema.DataFetcher; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; +import java.util.function.Function; import static graphql.Assert.assertNotNull; -import static java.util.Collections.unmodifiableList; /** - * An object that can be returned from a {@link DataFetcher} that contains both data, local context and errors to be relativized and - * added to the final result. This is a useful when your ``DataFetcher`` retrieves data from multiple sources - * or from another GraphQL resource or you want to pass extra context to lower levels. - * + * An object that can be returned from a {@link DataFetcher} that contains both data, local context and errors to be added to the final result. + * This is a useful when your ``DataFetcher`` retrieves data from multiple sources + * or from another GraphQL resource, or you want to pass extra context to lower levels. + *

    * This also allows you to pass down new local context objects between parent and child fields. If you return a * {@link #getLocalContext()} value then it will be passed down into any child fields via * {@link graphql.schema.DataFetchingEnvironment#getLocalContext()} + *

    + * You can also have {@link DataFetcher}s contribute to the {@link ExecutionResult#getExtensions()} by returning + * extensions maps that will be merged together via the {@link graphql.extensions.ExtensionsBuilder} and its {@link graphql.extensions.ExtensionsMerger} + * in place. + *

    + * This provides {@link #hashCode()} and {@link #equals(Object)} methods that afford comparison with other {@link DataFetcherResult} object.s + * However, to function correctly, this relies on the values provided in the following fields in turn also implementing {@link #hashCode()}} and {@link #equals(Object)} as appropriate: + *

      + *
    • The data returned in {@link #getData()}. + *
    • The individual errors returned in {@link #getErrors()}. + *
    • The context returned in {@link #getLocalContext()}. + *
    • The keys/values in the {@link #getExtensions()} {@link Map}. + *
    * * @param The type of the data fetched */ @PublicApi -public class DataFetcherResult { +@NullMarked +public class DataFetcherResult { - private final T data; + private final @Nullable T data; private final List errors; - private final Object localContext; - private final boolean mapRelativeErrors; - - /** - * Creates a data fetcher result - * - * @param data the data - * @param errors the errors - * - * @deprecated use the {@link #newResult()} builder instead - */ - @Internal - @Deprecated - public DataFetcherResult(T data, List errors) { - this(data, errors, null, false); - } + private final @Nullable Object localContext; + private final @Nullable Map extensions; - private DataFetcherResult(T data, List errors, Object localContext, boolean mapRelativeErrors) { + private DataFetcherResult(@Nullable T data, List errors, @Nullable Object localContext, @Nullable Map extensions) { this.data = data; - this.errors = unmodifiableList(assertNotNull(errors)); + this.errors = ImmutableList.copyOf(assertNotNull(errors)); this.localContext = localContext; - this.mapRelativeErrors = mapRelativeErrors; + this.extensions = extensions; } /** * @return The data fetched. May be null. */ - public T getData() { + public @Nullable T getData() { return data; } @@ -79,22 +84,24 @@ public boolean hasErrors() { * * @return a local context object */ - public Object getLocalContext() { + public @Nullable Object getLocalContext() { return localContext; } /** - * When this returns true, the data fetching code will map this error as being a relative error from the existing field. + * A data fetcher result can supply extension values that will be merged into the result + * via the {@link graphql.extensions.ExtensionsBuilder} at the end of the operation. *

    - * This is useful when you are calling a down stream graphql system and you want to make the errors appear to be from a point - * relative to the currently executing field. - *

    - * By default this behavior is off + * The {@link graphql.extensions.ExtensionsMerger} in place inside the {@link graphql.extensions.ExtensionsBuilder} + * will control how these extension values get merged. + * + * @return a map of extension values to be merged * - * @return true if relative error mapping should occur. + * @see graphql.extensions.ExtensionsBuilder + * @see graphql.extensions.ExtensionsMerger */ - public boolean isMapRelativeErrors() { - return mapRelativeErrors; + public @Nullable Map getExtensions() { + return extensions; } /** @@ -111,6 +118,52 @@ public DataFetcherResult transform(Consumer> builderConsumer) { return builder.build(); } + /** + * Transforms the data of the current DataFetcherResult using the provided function. + * All other values are left unmodified. + * + * @param transformation the transformation that should be applied to the data + * @param the result type + * + * @return a new instance with where the data value has been transformed + */ + public DataFetcherResult map(Function<@Nullable T, @Nullable R> transformation) { + return new Builder<>(transformation.apply(this.data)) + .errors(this.errors) + .extensions(this.extensions) + .localContext(this.localContext) + .build(); + } + + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) { + return false; + } + + DataFetcherResult that = (DataFetcherResult) o; + return Objects.equals(data, that.data) + && errors.equals(that.errors) + && Objects.equals(localContext, that.localContext) + && Objects.equals(extensions, that.extensions); + } + + @Override + public int hashCode() { + return Objects.hash(data, errors, localContext, extensions); + } + + @Override + public String toString() { + return "DataFetcherResult{" + + "data=" + data + + ", errors=" + errors + + ", localContext=" + localContext + + ", extensions=" + extensions + + '}'; + } + /** * Creates a new data fetcher result builder * @@ -122,27 +175,27 @@ public static Builder newResult() { return new Builder<>(); } - public static class Builder { - private T data; - private Object localContext; + public static class Builder { + private @Nullable T data; + private @Nullable Object localContext; private final List errors = new ArrayList<>(); - private boolean mapRelativeErrors = false; + private @Nullable Map extensions; public Builder(DataFetcherResult existing) { data = existing.getData(); localContext = existing.getLocalContext(); errors.addAll(existing.getErrors()); - mapRelativeErrors = existing.isMapRelativeErrors(); + extensions = existing.extensions; } - public Builder(T data) { + public Builder(@Nullable T data) { this.data = data; } public Builder() { } - public Builder data(T data) { + public Builder data(@Nullable T data) { this.data = data; return this; } @@ -157,8 +210,8 @@ public Builder error(GraphQLError error) { return this; } - public Builder mapRelativeErrors(boolean mapRelativeErrors) { - this.mapRelativeErrors = mapRelativeErrors; + public Builder clearErrors() { + this.errors.clear(); return this; } @@ -169,13 +222,18 @@ public boolean hasErrors() { return !errors.isEmpty(); } - public Builder localContext(Object localContext) { + public Builder localContext(@Nullable Object localContext) { this.localContext = localContext; return this; } + public Builder extensions(@Nullable Map extensions) { + this.extensions = extensions; + return this; + } + public DataFetcherResult build() { - return new DataFetcherResult<>(data, errors, localContext, mapRelativeErrors); + return new DataFetcherResult<>(data, errors, localContext, extensions); } } } diff --git a/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java new file mode 100644 index 0000000000..ae73dc2fe2 --- /dev/null +++ b/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java @@ -0,0 +1,83 @@ +package graphql.execution; + +import graphql.Internal; +import graphql.execution.incremental.AlternativeCallContext; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; + +import java.util.List; +import java.util.function.Supplier; + +@Internal +public interface DataLoaderDispatchStrategy { + + DataLoaderDispatchStrategy NO_OP = new DataLoaderDispatchStrategy() { + }; + + + default void executionStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters, int fieldCount) { + + } + + default void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + + } + + default void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + + } + + default void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + + } + + + default void executeObject(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, int fieldCount) { + + } + + default void executeObjectOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + + } + + default void deferredOnFieldValue(String resultKey, FieldValueInfo fieldValueInfo, Throwable throwable, ExecutionStrategyParameters parameters) { + + } + + default void executeObjectOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + + } + + default void fieldFetched(ExecutionContext executionContext, + ExecutionStrategyParameters executionStrategyParameters, + DataFetcher dataFetcher, + Object fetchedValue, + Supplier dataFetchingEnvironment) { + + } + + + default void newSubscriptionExecution(AlternativeCallContext alternativeCallContext) { + + } + + default void subscriptionEventCompletionDone(AlternativeCallContext alternativeCallContext) { + + } + + default void finishedFetching(ExecutionContext executionContext, ExecutionStrategyParameters newParameters) { + + } + + default void deferFieldFetched(ExecutionStrategyParameters executionStrategyParameters) { + + } + + default void startComplete(ExecutionStrategyParameters parameters) { + + } + + default void stopComplete(ExecutionStrategyParameters parameters) { + + } +} diff --git a/src/main/java/graphql/execution/DefaultResponseMapFactory.java b/src/main/java/graphql/execution/DefaultResponseMapFactory.java new file mode 100644 index 0000000000..3f3392c903 --- /dev/null +++ b/src/main/java/graphql/execution/DefaultResponseMapFactory.java @@ -0,0 +1,26 @@ +package graphql.execution; + +import com.google.common.collect.Maps; +import graphql.Internal; + +import java.util.List; +import java.util.Map; + +/** + * Implements the contract of {@link ResponseMapFactory} with {@link java.util.LinkedHashMap}. + * This is the default of graphql-java since a long time and changing it could cause breaking changes. + */ +@Internal +public class DefaultResponseMapFactory implements ResponseMapFactory { + + @Override + public Map createInsertionOrdered(List keys, List values) { + Map result = Maps.newLinkedHashMapWithExpectedSize(keys.size()); + int ix = 0; + for (Object fieldValue : values) { + String fieldName = keys.get(ix++); + result.put(fieldName, fieldValue); + } + return result; + } +} diff --git a/src/main/java/graphql/execution/DefaultValueUnboxer.java b/src/main/java/graphql/execution/DefaultValueUnboxer.java index e7dcc36ac3..db03d1cfad 100644 --- a/src/main/java/graphql/execution/DefaultValueUnboxer.java +++ b/src/main/java/graphql/execution/DefaultValueUnboxer.java @@ -24,11 +24,7 @@ public Object unbox(final Object object) { public static Object unboxValue(Object result) { if (result instanceof Optional) { Optional optional = (Optional) result; - if (optional.isPresent()) { - return optional.get(); - } else { - return null; - } + return optional.orElse(null); } else if (result instanceof OptionalInt) { OptionalInt optional = (OptionalInt) result; if (optional.isPresent()) { diff --git a/src/main/java/graphql/execution/EngineRunningObserver.java b/src/main/java/graphql/execution/EngineRunningObserver.java new file mode 100644 index 0000000000..008cb53b4d --- /dev/null +++ b/src/main/java/graphql/execution/EngineRunningObserver.java @@ -0,0 +1,55 @@ +package graphql.execution; + +import graphql.ExecutionInput; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +/** + * This class lets you observe the running state of the graphql-java engine. As it processes and dispatches graphql fields, + * the engine moves in and out of a running and not running state. As it does this, the callback is called with information telling you the current + * state. + *

    + * If the engine is cancelled via {@link ExecutionInput#cancel()} then the observer will also be called to indicate that. + */ +@ExperimentalApi +@NullMarked +public interface EngineRunningObserver { + + enum RunningState { + /** + * Represents that the engine is running, for the first time + */ + RUNNING_START, + /** + * Represents that the engine code is actively running its own code + */ + RUNNING, + /** + * Represents that the engine code is asynchronously waiting for fetching to happen + */ + NOT_RUNNING, + /** + * Represents that the engine is finished + */ + NOT_RUNNING_FINISH, + /** + * Represents that the engine code has been cancelled via {@link ExecutionInput#cancel()} + */ + CANCELLED + } + + + String ENGINE_RUNNING_OBSERVER_KEY = "__ENGINE_RUNNING_OBSERVER"; + + + /** + * This will be called when the running state of the graphql-java engine changes. + * + * @param executionId the id of the current execution. This could be null when the engine starts, + * if there is no execution id provided in the execution input + * @param graphQLContext the graphql context + */ + void runningStateChanged(@Nullable ExecutionId executionId, GraphQLContext graphQLContext, RunningState runningState); +} diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index d71945a62c..38c82f5a53 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -1,76 +1,90 @@ package graphql.execution; -import graphql.DeferredExecutionResult; +import graphql.Directives; +import graphql.EngineRunningState; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.GraphQL; +import graphql.GraphQLContext; import graphql.GraphQLError; +import graphql.GraphQLException; import graphql.Internal; -import graphql.execution.defer.DeferSupport; +import graphql.Profiler; +import graphql.execution.incremental.IncrementalCallState; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.InstrumentationState; +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys; +import graphql.execution.instrumentation.dataloader.ExhaustedDataLoaderDispatchStrategy; +import graphql.execution.instrumentation.dataloader.PerLevelDataLoaderDispatchStrategy; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; +import graphql.execution.instrumentation.parameters.InstrumentationReactiveResultsParameters; +import graphql.execution.reactive.ReactiveSupport; +import graphql.extensions.ExtensionsBuilder; +import graphql.incremental.DelayedIncrementalPartialResult; +import graphql.incremental.IncrementalExecutionResultImpl; +import graphql.language.Directive; import graphql.language.Document; -import graphql.language.FragmentDefinition; import graphql.language.NodeUtil; import graphql.language.OperationDefinition; import graphql.language.VariableDefinition; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; -import graphql.util.LogKit; +import graphql.schema.impl.SchemaUtil; +import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; -import org.slf4j.Logger; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; -import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Directives.EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION; import static graphql.execution.ExecutionContextBuilder.newExecutionContextBuilder; import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; import static graphql.execution.ExecutionStrategyParameters.newParameters; -import static graphql.language.OperationDefinition.Operation.MUTATION; -import static graphql.language.OperationDefinition.Operation.QUERY; -import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.nonNullCtx; +import static graphql.execution.instrumentation.dataloader.EmptyDataLoaderRegistryInstance.EMPTY_DATALOADER_REGISTRY; import static java.util.concurrent.CompletableFuture.completedFuture; @Internal public class Execution { - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(Execution.class); - private final FieldCollector fieldCollector = new FieldCollector(); - private final ValuesResolver valuesResolver = new ValuesResolver(); private final ExecutionStrategy queryStrategy; private final ExecutionStrategy mutationStrategy; private final ExecutionStrategy subscriptionStrategy; private final Instrumentation instrumentation; - private ValueUnboxer valueUnboxer; + private final ValueUnboxer valueUnboxer; + private final boolean doNotAutomaticallyDispatchDataLoader; + - public Execution(ExecutionStrategy queryStrategy, ExecutionStrategy mutationStrategy, ExecutionStrategy subscriptionStrategy, Instrumentation instrumentation, ValueUnboxer valueUnboxer) { + public Execution(ExecutionStrategy queryStrategy, + ExecutionStrategy mutationStrategy, + ExecutionStrategy subscriptionStrategy, + Instrumentation instrumentation, + ValueUnboxer valueUnboxer, + boolean doNotAutomaticallyDispatchDataLoader) { this.queryStrategy = queryStrategy != null ? queryStrategy : new AsyncExecutionStrategy(); this.mutationStrategy = mutationStrategy != null ? mutationStrategy : new AsyncSerialExecutionStrategy(); this.subscriptionStrategy = subscriptionStrategy != null ? subscriptionStrategy : new AsyncExecutionStrategy(); this.instrumentation = instrumentation; this.valueUnboxer = valueUnboxer; + this.doNotAutomaticallyDispatchDataLoader = doNotAutomaticallyDispatchDataLoader; } - public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState) { - - NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); - Map fragmentsByName = getOperationResult.fragmentsByName; - OperationDefinition operationDefinition = getOperationResult.operationDefinition; - - Map inputVariables = executionInput.getVariables(); - List variableDefinitions = operationDefinition.getVariableDefinitions(); - - Map coercedVariables; + public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState, EngineRunningState engineRunningState, Profiler profiler) { + NodeUtil.GetOperationResult getOperationResult; + CoercedVariables coercedVariables; + Supplier normalizedVariableValues; try { - coercedVariables = valuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables); + getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); + coercedVariables = coerceVariableValues(graphQLSchema, executionInput, getOperationResult.operationDefinition); + normalizedVariableValues = normalizedVariableValues(graphQLSchema, executionInput, getOperationResult); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { return completedFuture(new ExecutionResultImpl((GraphQLError) rte)); @@ -78,6 +92,17 @@ public CompletableFuture execute(Document document, GraphQLSche throw rte; } + // before we get started - did they ask us to cancel? + AbortExecutionException abortExecutionException = engineRunningState.ifCancelledMakeException(); + if (abortExecutionException != null) { + return completedFuture(abortExecutionException.toExecutionResult()); + } + + boolean propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure(getOperationResult.operationDefinition.getDirectives()); + + ResponseMapFactory responseMapFactory = GraphQL.unusualConfiguration(executionInput.getGraphQLContext()) + .responseMapFactory().getOr(ResponseMapFactory.DEFAULT); + ExecutionContext executionContext = newExecutionContextBuilder() .instrumentation(instrumentation) .instrumentationState(instrumentationState) @@ -87,42 +112,72 @@ public CompletableFuture execute(Document document, GraphQLSche .mutationStrategy(mutationStrategy) .subscriptionStrategy(subscriptionStrategy) .context(executionInput.getContext()) + .graphQLContext(executionInput.getGraphQLContext()) + .localContext(executionInput.getLocalContext()) .root(executionInput.getRoot()) - .fragmentsByName(fragmentsByName) - .variables(coercedVariables) + .fragmentsByName(getOperationResult.fragmentsByName) + .coercedVariables(coercedVariables) + .normalizedVariableValues(normalizedVariableValues) .document(document) - .operationDefinition(operationDefinition) + .operationDefinition(getOperationResult.operationDefinition) .dataLoaderRegistry(executionInput.getDataLoaderRegistry()) - .cacheControl(executionInput.getCacheControl()) .locale(executionInput.getLocale()) .valueUnboxer(valueUnboxer) + .responseMapFactory(responseMapFactory) + .executionInput(executionInput) + .propagapropagateErrorsOnNonNullContractFailureeErrors(propagateErrorsOnNonNullContractFailure) + .engineRunningState(engineRunningState) + .profiler(profiler) .build(); + executionContext.getGraphQLContext().put(ResultNodesInfo.RESULT_NODES_INFO, executionContext.getResultNodesInfo()); InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters( - executionInput, graphQLSchema, instrumentationState + executionInput, graphQLSchema ); - executionContext = instrumentation.instrumentExecutionContext(executionContext, parameters); - return executeOperation(executionContext, parameters, executionInput.getRoot(), executionContext.getOperationDefinition()); + executionContext = instrumentation.instrumentExecutionContext(executionContext, parameters, instrumentationState); + return executeOperation(executionContext, executionInput.getRoot(), executionContext.getOperationDefinition()); } + private static @NonNull CoercedVariables coerceVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, OperationDefinition operationDefinition) { + RawVariables inputVariables = executionInput.getRawVariables(); + List variableDefinitions = operationDefinition.getVariableDefinitions(); + return ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); + } + + private static @NonNull Supplier normalizedVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, NodeUtil.GetOperationResult getOperationResult) { + Supplier normalizedVariableValues; + RawVariables inputVariables = executionInput.getRawVariables(); + List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); + + normalizedVariableValues = FpKit.intraThreadMemoize(() -> + ValuesResolver.getNormalizedVariableValues(graphQLSchema, + variableDefinitions, + inputVariables, + executionInput.getGraphQLContext(), executionInput.getLocale())); + return normalizedVariableValues; + } - private CompletableFuture executeOperation(ExecutionContext executionContext, InstrumentationExecutionParameters instrumentationExecutionParameters, Object root, OperationDefinition operationDefinition) { + + private CompletableFuture executeOperation(ExecutionContext executionContext, Object root, OperationDefinition operationDefinition) { + + GraphQLContext graphQLContext = executionContext.getGraphQLContext(); + addExtensionsBuilderNotPresent(graphQLContext); InstrumentationExecuteOperationParameters instrumentationParams = new InstrumentationExecuteOperationParameters(executionContext); - InstrumentationContext executeOperationCtx = instrumentation.beginExecuteOperation(instrumentationParams); + InstrumentationContext executeOperationCtx = nonNullCtx(instrumentation.beginExecuteOperation(instrumentationParams, executionContext.getInstrumentationState())); OperationDefinition.Operation operation = operationDefinition.getOperation(); GraphQLObjectType operationRootType; - + executionContext.getProfiler().operationDefinition(operationDefinition); try { - operationRootType = getOperationRootType(executionContext.getGraphQLSchema(), operationDefinition); + operationRootType = SchemaUtil.getOperationRootType(executionContext.getGraphQLSchema(), operationDefinition); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { ExecutionResult executionResult = new ExecutionResultImpl(Collections.singletonList((GraphQLError) rte)); CompletableFuture resultCompletableFuture = completedFuture(executionResult); - executeOperationCtx.onDispatched(resultCompletableFuture); + executeOperationCtx.onDispatched(); executeOperationCtx.onCompleted(executionResult, rte); return resultCompletableFuture; } @@ -133,96 +188,129 @@ private CompletableFuture executeOperation(ExecutionContext exe .schema(executionContext.getGraphQLSchema()) .objectType(operationRootType) .fragments(executionContext.getFragmentsByName()) - .variables(executionContext.getVariables()) + .variables(executionContext.getCoercedVariables().toMap()) + .graphQLContext(graphQLContext) .build(); - MergedSelectionSet fields = fieldCollector.collectFields(collectorParameters, operationDefinition.getSelectionSet()); + MergedSelectionSet fields = fieldCollector.collectFields( + collectorParameters, + operationDefinition.getSelectionSet(), + executionContext.hasIncrementalSupport() + ); - ExecutionPath path = ExecutionPath.rootPath(); + ResultPath path = ResultPath.rootPath(); ExecutionStepInfo executionStepInfo = newExecutionStepInfo().type(operationRootType).path(path).build(); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); + NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext); ExecutionStrategyParameters parameters = newParameters() .executionStepInfo(executionStepInfo) .source(root) - .localContext(null) // this is important to default as this + .localContext(executionContext.getLocalContext()) .fields(fields) .nonNullFieldValidator(nonNullableFieldValidator) .path(path) .build(); + CompletableFuture result; try { - ExecutionStrategy executionStrategy; - if (operation == OperationDefinition.Operation.MUTATION) { - executionStrategy = executionContext.getMutationStrategy(); - } else if (operation == SUBSCRIPTION) { - executionStrategy = executionContext.getSubscriptionStrategy(); - } else { - executionStrategy = executionContext.getQueryStrategy(); - } - logNotSafe.debug("Executing '{}' query operation: '{}' using '{}' execution strategy", executionContext.getExecutionId(), operation, executionStrategy.getClass().getName()); + ExecutionStrategy executionStrategy = executionContext.getStrategy(operation); + DataLoaderDispatchStrategy dataLoaderDispatchStrategy = createDataLoaderDispatchStrategy(executionContext, executionStrategy); + executionContext.setDataLoaderDispatcherStrategy(dataLoaderDispatchStrategy); result = executionStrategy.execute(executionContext, parameters); } catch (NonNullableFieldWasNullException e) { - // this means it was non null types all the way from an offending non null type - // up to the root object type and there was a a null value some where. + // this means it was non-null types all the way from an offending non-null type + // up to the root object type and there was a null value somewhere. // // The spec says we should return null for the data in this case // - // http://facebook.github.io/graphql/#sec-Errors-and-Non-Nullability + // https://spec.graphql.org/October2021/#sec-Handling-Field-Errors // result = completedFuture(new ExecutionResultImpl(null, executionContext.getErrors())); } // note this happens NOW - not when the result completes - executeOperationCtx.onDispatched(result); + executeOperationCtx.onDispatched(); + + // fill out extensions if we have them + result = result.thenApply(er -> mergeExtensionsBuilderIfPresent(er, graphQLContext)); result = result.whenComplete(executeOperationCtx::onCompleted); - return deferSupport(executionContext, result); + return incrementalSupport(executionContext, result); } /* - * Adds the deferred publisher if its needed at the end of the query. This is also a good time for the deferred code to start running + * Adds the deferred publisher if it's needed at the end of the query. This is also a good time for the deferred code to start running */ - private CompletableFuture deferSupport(ExecutionContext executionContext, CompletableFuture result) { + private CompletableFuture incrementalSupport(ExecutionContext executionContext, CompletableFuture result) { return result.thenApply(er -> { - DeferSupport deferSupport = executionContext.getDeferSupport(); - if (deferSupport.isDeferDetected()) { - // we start the rest of the query now to maximize throughput. We have the initial important results - // and now we can start the rest of the calls as early as possible (even before some one subscribes) - Publisher publisher = deferSupport.startDeferredCalls(); - return ExecutionResultImpl.newExecutionResult().from(er) - .addExtension(GraphQL.DEFERRED_RESULTS, publisher) + IncrementalCallState incrementalCallState = executionContext.getIncrementalCallState(); + if (incrementalCallState.getIncrementalCallsDetected()) { + InstrumentationReactiveResultsParameters parameters = new InstrumentationReactiveResultsParameters(executionContext, InstrumentationReactiveResultsParameters.ResultType.DEFER); + InstrumentationContext ctx = nonNullCtx(executionContext.getInstrumentation().beginReactiveResults(parameters, executionContext.getInstrumentationState())); + + // we start the rest of the query now to maximize throughput. We have the initial important results, + // and now we can start the rest of the calls as early as possible (even before someone subscribes) + Publisher publisher = incrementalCallState.startDeferredCalls(); + ctx.onDispatched(); + + // + // wrap this Publisher into one that can call us back when the publishing is done either in error or successful + publisher = ReactiveSupport.whenPublisherFinishes(publisher, throwable -> ctx.onCompleted(null, throwable)); + + return IncrementalExecutionResultImpl.fromExecutionResult(er) + // "hasNext" can, in theory, be "false" when all the incremental items are delivered in the + // first response payload. However, the current implementation will never result in this. + // The behaviour might change if we decide to make optimizations in the future. + .hasNext(true) + .incrementalItemPublisher(publisher) .build(); } return er; }); - } - private GraphQLObjectType getOperationRootType(GraphQLSchema graphQLSchema, OperationDefinition operationDefinition) { - OperationDefinition.Operation operation = operationDefinition.getOperation(); - if (operation == MUTATION) { - GraphQLObjectType mutationType = graphQLSchema.getMutationType(); - if (mutationType == null) { - throw new MissingRootTypeException("Schema is not configured for mutations.", operationDefinition.getSourceLocation()); - } - return mutationType; - } else if (operation == QUERY) { - GraphQLObjectType queryType = graphQLSchema.getQueryType(); - if (queryType == null) { - throw new MissingRootTypeException("Schema does not define the required query root type.", operationDefinition.getSourceLocation()); + private DataLoaderDispatchStrategy createDataLoaderDispatchStrategy(ExecutionContext executionContext, ExecutionStrategy executionStrategy) { + if (executionContext.getDataLoaderRegistry() == EMPTY_DATALOADER_REGISTRY || doNotAutomaticallyDispatchDataLoader) { + return DataLoaderDispatchStrategy.NO_OP; + } + if (executionContext.getGraphQLContext().getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, false)) { + if (executionContext.getGraphQLContext().getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, false)) { + throw new GraphQLException("enabling data loader chaining and exhausted dispatching at the same time ambiguous"); } - return queryType; - } else if (operation == SUBSCRIPTION) { - GraphQLObjectType subscriptionType = graphQLSchema.getSubscriptionType(); - if (subscriptionType == null) { - throw new MissingRootTypeException("Schema is not configured for subscriptions.", operationDefinition.getSourceLocation()); + return new ExhaustedDataLoaderDispatchStrategy(executionContext); + } + return new PerLevelDataLoaderDispatchStrategy(executionContext); + } + + + private void addExtensionsBuilderNotPresent(GraphQLContext graphQLContext) { + Object builder = graphQLContext.get(ExtensionsBuilder.class); + if (builder == null) { + graphQLContext.put(ExtensionsBuilder.class, ExtensionsBuilder.newExtensionsBuilder()); + } + } + + private ExecutionResult mergeExtensionsBuilderIfPresent(ExecutionResult executionResult, GraphQLContext graphQLContext) { + Object builder = graphQLContext.get(ExtensionsBuilder.class); + if (builder instanceof ExtensionsBuilder) { + ExtensionsBuilder extensionsBuilder = (ExtensionsBuilder) builder; + Map currentExtensions = executionResult.getExtensions(); + if (currentExtensions != null) { + extensionsBuilder.addValues(currentExtensions); } - return subscriptionType; - } else { - return assertShouldNeverHappen("Unhandled case. An extra operation enum has been added without code support"); + executionResult = extensionsBuilder.setExtensions(executionResult); + } + return executionResult; + } + + private boolean propagateErrorsOnNonNullContractFailure(List directives) { + boolean jvmWideEnabled = Directives.isExperimentalDisableErrorPropagationDirectiveEnabled(); + if (!jvmWideEnabled) { + return true; } + Directive foundDirective = NodeUtil.findNodeByName(directives, EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION.getName()); + return foundDirective == null; } } diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 037d2369f4..c6a7edc916 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -1,26 +1,39 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.EngineRunningState; +import graphql.ExecutionInput; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; import graphql.GraphQLError; +import graphql.Internal; +import graphql.Profiler; import graphql.PublicApi; -import graphql.cachecontrol.CacheControl; -import graphql.execution.defer.DeferSupport; +import graphql.collect.ImmutableKit; +import graphql.execution.incremental.IncrementalCallState; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationState; import graphql.language.Document; import graphql.language.FragmentDefinition; import graphql.language.OperationDefinition; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; import graphql.schema.GraphQLSchema; +import graphql.util.FpKit; +import graphql.util.LockKit; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.Nullable; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; +import java.util.function.Supplier; @SuppressWarnings("TypeParameterUnusedInFormals") @PublicApi @@ -32,47 +45,75 @@ public class ExecutionContext { private final ExecutionStrategy queryStrategy; private final ExecutionStrategy mutationStrategy; private final ExecutionStrategy subscriptionStrategy; - private final Map fragmentsByName; + private final ImmutableMap fragmentsByName; private final OperationDefinition operationDefinition; private final Document document; - private final Map variables; + private final CoercedVariables coercedVariables; + private final Supplier normalizedVariables; private final Object root; private final Object context; + private final GraphQLContext graphQLContext; + private final Object localContext; private final Instrumentation instrumentation; - private final List errors = new CopyOnWriteArrayList<>(); - private final Set errorPaths = new HashSet<>(); + private final AtomicReference> errors = new AtomicReference<>(ImmutableKit.emptyList()); + private final LockKit.ReentrantLock errorsLock = new LockKit.ReentrantLock(); + private final Set errorPaths = new HashSet<>(); private final DataLoaderRegistry dataLoaderRegistry; - private final CacheControl cacheControl; private final Locale locale; - private final DeferSupport deferSupport = new DeferSupport(); + private final IncrementalCallState incrementalCallState = new IncrementalCallState(); private final ValueUnboxer valueUnboxer; + private final ResponseMapFactory responseMapFactory; - ExecutionContext(Instrumentation instrumentation, ExecutionId executionId, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState, ExecutionStrategy queryStrategy, ExecutionStrategy mutationStrategy, ExecutionStrategy subscriptionStrategy, Map fragmentsByName, Document document, OperationDefinition operationDefinition, Map variables, Object context, Object root, DataLoaderRegistry dataLoaderRegistry, CacheControl cacheControl, Locale locale, List startingErrors, ValueUnboxer valueUnboxer) { - this.graphQLSchema = graphQLSchema; - this.executionId = executionId; - this.instrumentationState = instrumentationState; - this.queryStrategy = queryStrategy; - this.mutationStrategy = mutationStrategy; - this.subscriptionStrategy = subscriptionStrategy; - this.fragmentsByName = Collections.unmodifiableMap(fragmentsByName); - this.variables = Collections.unmodifiableMap(variables); - this.document = document; - this.operationDefinition = operationDefinition; - this.context = context; - this.root = root; - this.instrumentation = instrumentation; - this.dataLoaderRegistry = dataLoaderRegistry; - this.cacheControl = cacheControl; - this.locale = locale; - this.valueUnboxer = valueUnboxer; - this.errors.addAll(startingErrors); - } + private final ExecutionInput executionInput; + private final Supplier queryTree; + private final boolean propagateErrorsOnNonNullContractFailure; + + // this is modified after creation so it needs to be volatile to ensure visibility across Threads + private volatile DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; + + private final ResultNodesInfo resultNodesInfo = new ResultNodesInfo(); + private final EngineRunningState engineRunningState; + private final Profiler profiler; + + ExecutionContext(ExecutionContextBuilder builder) { + this.graphQLSchema = builder.graphQLSchema; + this.executionId = builder.executionId; + this.instrumentationState = builder.instrumentationState; + this.queryStrategy = builder.queryStrategy; + this.mutationStrategy = builder.mutationStrategy; + this.subscriptionStrategy = builder.subscriptionStrategy; + this.fragmentsByName = builder.fragmentsByName; + this.coercedVariables = builder.coercedVariables; + this.normalizedVariables = builder.normalizedVariables; + this.document = builder.document; + this.operationDefinition = builder.operationDefinition; + this.context = builder.context; + this.graphQLContext = builder.graphQLContext; + this.root = builder.root; + this.instrumentation = builder.instrumentation; + this.dataLoaderRegistry = builder.dataLoaderRegistry; + this.locale = builder.locale; + this.valueUnboxer = builder.valueUnboxer; + this.responseMapFactory = builder.responseMapFactory; + this.errors.set(builder.errors); + this.localContext = builder.localContext; + this.executionInput = builder.executionInput; + this.dataLoaderDispatcherStrategy = builder.dataLoaderDispatcherStrategy; + this.queryTree = FpKit.interThreadMemoize(() -> ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, operationDefinition, fragmentsByName, coercedVariables)); + this.propagateErrorsOnNonNullContractFailure = builder.propagateErrorsOnNonNullContractFailure; + this.engineRunningState = builder.engineRunningState; + this.profiler = builder.profiler; + } public ExecutionId getExecutionId() { return executionId; } + public ExecutionInput getExecutionInput() { + return executionInput; + } + public InstrumentationState getInstrumentationState() { return instrumentationState; } @@ -97,15 +138,39 @@ public OperationDefinition getOperationDefinition() { return operationDefinition; } - public Map getVariables() { - return variables; + public CoercedVariables getCoercedVariables() { + return coercedVariables; } - @SuppressWarnings("unchecked") + /** + * @return a supplier that will give out the operations variables in normalized form + */ + public Supplier getNormalizedVariables() { + return normalizedVariables; + } + + /** + * @param for two + * + * @return the legacy context + * + * @deprecated use {@link #getGraphQLContext()} instead + */ + @Deprecated(since = "2021-07-05") + @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"}) public T getContext() { return (T) context; } + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + @SuppressWarnings("unchecked") + public T getLocalContext() { + return (T) localContext; + } + @SuppressWarnings("unchecked") public T getRoot() { return (T) root; @@ -119,10 +184,6 @@ public DataLoaderRegistry getDataLoaderRegistry() { return dataLoaderRegistry; } - public CacheControl getCacheControl() { - return cacheControl; - } - public Locale getLocale() { return locale; } @@ -131,22 +192,64 @@ public ValueUnboxer getValueUnboxer() { return valueUnboxer; } + /** + * @return true if the current operation should propagate errors in non-null positions + * Propagating errors is the default. Error aware clients may opt in returning null in non-null positions + * by using the `@experimental_disableErrorPropagation` directive. + * + * @see graphql.Directives#setExperimentalDisableErrorPropagationEnabled(boolean) to change the JVM wide default + */ + @ExperimentalApi + public boolean propagateErrorsOnNonNullContractFailure() { + return propagateErrorsOnNonNullContractFailure; + } + + /** + * @return true if the current operation is a Query + */ + public boolean isQueryOperation() { + return isOpType(OperationDefinition.Operation.QUERY); + } + + /** + * @return true if the current operation is a Mutation + */ + public boolean isMutationOperation() { + return isOpType(OperationDefinition.Operation.MUTATION); + } + + /** + * @return true if the current operation is a Subscription + */ + public boolean isSubscriptionOperation() { + return isOpType(OperationDefinition.Operation.SUBSCRIPTION); + } + + private boolean isOpType(OperationDefinition.Operation operation) { + if (operationDefinition != null) { + return operation.equals(operationDefinition.getOperation()); + } + return false; + } + /** * This method will only put one error per field path. * * @param error the error to add * @param fieldPath the field path to put it under */ - public void addError(GraphQLError error, ExecutionPath fieldPath) { - // - // see http://facebook.github.io/graphql/#sec-Errors-and-Non-Nullability about how per - // field errors should be handled - ie only once per field if its already there for nullability - // but unclear if its not that error path - // - if (!errorPaths.add(fieldPath)) { - return; - } - this.errors.add(error); + public void addError(GraphQLError error, ResultPath fieldPath) { + errorsLock.runLocked(() -> { + // + // see https://spec.graphql.org/October2021/#sec-Handling-Field-Errors about how per + // field errors should be handled - ie only once per field if it's already there for nullability + // but unclear if it's not that error path + // + if (!errorPaths.add(fieldPath)) { + return; + } + this.errors.set(ImmutableKit.addToList(this.errors.get(), error)); + }); } /** @@ -156,20 +259,56 @@ public void addError(GraphQLError error, ExecutionPath fieldPath) { * @param error the error to add */ public void addError(GraphQLError error) { - // see https://github.com/graphql-java/graphql-java/issues/888 on how the spec is unclear - // on how exactly multiple errors should be handled - ie only once per field or not outside the nullability - // aspect. - if (error.getPath() != null) { - this.errorPaths.add(ExecutionPath.fromList(error.getPath())); + errorsLock.runLocked(() -> { + // see https://github.com/graphql-java/graphql-java/issues/888 on how the spec is unclear + // on how exactly multiple errors should be handled - ie only once per field or not outside the nullability + // aspect. + if (error.getPath() != null) { + ResultPath path = ResultPath.fromList(error.getPath()); + this.errorPaths.add(path); + } + this.errors.set(ImmutableKit.addToList(this.errors.get(), error)); + }); + } + + /** + * This method will allow you to add errors into the running execution context, without a check + * for per field unique-ness + * + * @param errors the errors to add + */ + public void addErrors(List errors) { + if (errors.isEmpty()) { + return; } - this.errors.add(error); + // we are locked because we set two fields at once - but we only ever read one of them later + // in getErrors so no need for synchronised there. + errorsLock.runLocked(() -> { + Set newErrorPaths = new HashSet<>(); + for (GraphQLError error : errors) { + // see https://github.com/graphql-java/graphql-java/issues/888 on how the spec is unclear + // on how exactly multiple errors should be handled - ie only once per field or not outside the nullability + // aspect. + if (error.getPath() != null) { + ResultPath path = ResultPath.fromList(error.getPath()); + newErrorPaths.add(path); + } + } + this.errorPaths.addAll(newErrorPaths); + this.errors.set(ImmutableKit.concatLists(this.errors.get(), errors)); + }); + } + + @Internal + public ResponseMapFactory getResponseMapFactory() { + return responseMapFactory; } /** * @return the total list of errors for this execution context */ public List getErrors() { - return Collections.unmodifiableList(errors); + return errors.get(); } public ExecutionStrategy getQueryStrategy() { @@ -184,8 +323,32 @@ public ExecutionStrategy getSubscriptionStrategy() { return subscriptionStrategy; } - public DeferSupport getDeferSupport() { - return deferSupport; + public IncrementalCallState getIncrementalCallState() { + return incrementalCallState; + } + + public ExecutionStrategy getStrategy(OperationDefinition.Operation operation) { + if (operation == OperationDefinition.Operation.MUTATION) { + return getMutationStrategy(); + } else if (operation == OperationDefinition.Operation.SUBSCRIPTION) { + return getSubscriptionStrategy(); + } else { + return getQueryStrategy(); + } + } + + public Supplier getNormalizedQueryTree() { + return queryTree; + } + + @Internal + public void setDataLoaderDispatcherStrategy(DataLoaderDispatchStrategy dataLoaderDispatcherStrategy) { + this.dataLoaderDispatcherStrategy = dataLoaderDispatcherStrategy; + } + + @Internal + public DataLoaderDispatchStrategy getDataLoaderDispatcherStrategy() { + return dataLoaderDispatcherStrategy; } /** @@ -201,4 +364,36 @@ public ExecutionContext transform(Consumer builderConsu builderConsumer.accept(builder); return builder.build(); } + + public ResultNodesInfo getResultNodesInfo() { + return resultNodesInfo; + } + + @Internal + public boolean hasIncrementalSupport() { + GraphQLContext graphqlContext = getGraphQLContext(); + return graphqlContext != null && graphqlContext.getBoolean(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT); + } + + @Internal + public EngineRunningState getEngineRunningState() { + return engineRunningState; + } + + @Internal + @Nullable + Throwable possibleCancellation(@Nullable Throwable currentThrowable) { + return engineRunningState.possibleCancellation(currentThrowable); + } + + + @Internal + public Profiler getProfiler() { + return profiler; + } + + @Internal + void throwIfCancelled() throws AbortExecutionException { + engineRunningState.throwIfCancelled(); + } } diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index d6cb904d26..f8dd44898e 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -1,9 +1,15 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.EngineRunningState; +import graphql.ExecutionInput; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; -import graphql.PublicApi; -import graphql.cachecontrol.CacheControl; +import graphql.Profiler; +import graphql.collect.ImmutableKit; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationState; import graphql.language.Document; @@ -11,36 +17,44 @@ import graphql.language.OperationDefinition; import graphql.schema.GraphQLSchema; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; -@PublicApi +@Internal public class ExecutionContextBuilder { - private Instrumentation instrumentation; - private ExecutionId executionId; - private InstrumentationState instrumentationState; - private GraphQLSchema graphQLSchema; - private ExecutionStrategy queryStrategy; - private ExecutionStrategy mutationStrategy; - private ExecutionStrategy subscriptionStrategy; - private Object context; - private Object root; - private Document document; - private OperationDefinition operationDefinition; - private Map variables = new LinkedHashMap<>(); - private Map fragmentsByName = new LinkedHashMap<>(); - private DataLoaderRegistry dataLoaderRegistry; - private CacheControl cacheControl; - private Locale locale; - private List errors = new ArrayList<>(); - private ValueUnboxer valueUnboxer; + Instrumentation instrumentation; + ExecutionId executionId; + InstrumentationState instrumentationState; + GraphQLSchema graphQLSchema; + ExecutionStrategy queryStrategy; + ExecutionStrategy mutationStrategy; + ExecutionStrategy subscriptionStrategy; + Object context; + GraphQLContext graphQLContext; + Object root; + Document document; + OperationDefinition operationDefinition; + CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + Supplier normalizedVariables = NormalizedVariables::emptyVariables; + ImmutableMap fragmentsByName = ImmutableKit.emptyMap(); + DataLoaderRegistry dataLoaderRegistry; + Locale locale; + ImmutableList errors = emptyList(); + ValueUnboxer valueUnboxer; + Object localContext; + ExecutionInput executionInput; + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; + boolean propagateErrorsOnNonNullContractFailure = true; + EngineRunningState engineRunningState; + ResponseMapFactory responseMapFactory = ResponseMapFactory.DEFAULT; + Profiler profiler; /** * @return a new builder of {@link graphql.execution.ExecutionContext}s @@ -74,17 +88,23 @@ public ExecutionContextBuilder() { mutationStrategy = other.getMutationStrategy(); subscriptionStrategy = other.getSubscriptionStrategy(); context = other.getContext(); + graphQLContext = other.getGraphQLContext(); + localContext = other.getLocalContext(); root = other.getRoot(); document = other.getDocument(); operationDefinition = other.getOperationDefinition(); - variables = new LinkedHashMap<>(other.getVariables()); - fragmentsByName = new LinkedHashMap<>(other.getFragmentsByName()); + coercedVariables = other.getCoercedVariables(); + fragmentsByName = ImmutableMap.copyOf(other.getFragmentsByName()); dataLoaderRegistry = other.getDataLoaderRegistry(); - cacheControl = other.getCacheControl(); locale = other.getLocale(); - errors = new ArrayList<>(other.getErrors()); + errors = ImmutableList.copyOf(other.getErrors()); valueUnboxer = other.getValueUnboxer(); - + executionInput = other.getExecutionInput(); + dataLoaderDispatcherStrategy = other.getDataLoaderDispatcherStrategy(); + propagateErrorsOnNonNullContractFailure = other.propagateErrorsOnNonNullContractFailure(); + engineRunningState = other.getEngineRunningState(); + responseMapFactory = other.getResponseMapFactory(); + profiler = other.getProfiler(); } public ExecutionContextBuilder instrumentation(Instrumentation instrumentation) { @@ -122,23 +142,54 @@ public ExecutionContextBuilder subscriptionStrategy(ExecutionStrategy subscripti return this; } - public ExecutionContextBuilder context(Object context) { + /* + * @deprecated use {@link #graphQLContext(GraphQLContext)} instead + */ + @Deprecated(since = "2021-07-05") + public ExecutionContextBuilder context(@Nullable Object context) { this.context = context; return this; } + public ExecutionContextBuilder graphQLContext(GraphQLContext context) { + this.graphQLContext = context; + return this; + } + + public ExecutionContextBuilder localContext(Object localContext) { + this.localContext = localContext; + return this; + } + public ExecutionContextBuilder root(Object root) { this.root = root; return this; } + /** + * @param variables map of already coerced variables + * @return this builder + * + * @deprecated use {@link #coercedVariables(CoercedVariables)} instead + */ + @Deprecated(since = "2022-05-24") public ExecutionContextBuilder variables(Map variables) { - this.variables = variables; + this.coercedVariables = CoercedVariables.of(variables); + return this; + } + + public ExecutionContextBuilder coercedVariables(CoercedVariables coercedVariables) { + this.coercedVariables = coercedVariables; + return this; + } + + public ExecutionContextBuilder normalizedVariableValues(Supplier normalizedVariables) { + this.normalizedVariables = normalizedVariables; return this; } public ExecutionContextBuilder fragmentsByName(Map fragmentsByName) { - this.fragmentsByName = fragmentsByName; + this.fragmentsByName = ImmutableMap.copyOf(fragmentsByName); return this; } @@ -157,11 +208,6 @@ public ExecutionContextBuilder dataLoaderRegistry(DataLoaderRegistry dataLoaderR return this; } - public ExecutionContextBuilder cacheControl(CacheControl cacheControl) { - this.cacheControl = cacheControl; - return this; - } - public ExecutionContextBuilder locale(Locale locale) { this.locale = locale; return this; @@ -172,29 +218,48 @@ public ExecutionContextBuilder valueUnboxer(ValueUnboxer valueUnboxer) { return this; } + public ExecutionContextBuilder executionInput(ExecutionInput executionInput) { + this.executionInput = executionInput; + return this; + } + + @Internal + public ExecutionContextBuilder dataLoaderDispatcherStrategy(DataLoaderDispatchStrategy dataLoaderDispatcherStrategy) { + this.dataLoaderDispatcherStrategy = dataLoaderDispatcherStrategy; + return this; + } + + @Internal + public ExecutionContextBuilder responseMapFactory(ResponseMapFactory responseMapFactory) { + this.responseMapFactory = responseMapFactory; + return this; + } + + public ExecutionContextBuilder resetErrors() { + this.errors = emptyList(); + return this; + } + + @ExperimentalApi + public ExecutionContextBuilder propagapropagateErrorsOnNonNullContractFailureeErrors(boolean propagateErrorsOnNonNullContractFailure) { + this.propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure; + return this; + } + + public ExecutionContext build() { // preconditions assertNotNull(executionId, "You must provide a query identifier"); + return new ExecutionContext(this); + } - return new ExecutionContext( - instrumentation, - executionId, - graphQLSchema, - instrumentationState, - queryStrategy, - mutationStrategy, - subscriptionStrategy, - fragmentsByName, - document, - operationDefinition, - variables, - context, - root, - dataLoaderRegistry, - cacheControl, - locale, - errors, - valueUnboxer); + public ExecutionContextBuilder engineRunningState(EngineRunningState engineRunningState) { + this.engineRunningState = engineRunningState; + return this; } + public ExecutionContextBuilder profiler(Profiler profiler) { + this.profiler = profiler; + return this; + } } diff --git a/src/main/java/graphql/execution/ExecutionId.java b/src/main/java/graphql/execution/ExecutionId.java index 45307e218f..40ffd3466f 100644 --- a/src/main/java/graphql/execution/ExecutionId.java +++ b/src/main/java/graphql/execution/ExecutionId.java @@ -1,12 +1,13 @@ package graphql.execution; import graphql.Assert; - -import java.util.UUID; +import graphql.PublicApi; +import graphql.util.IdGenerator; /** * This opaque identifier is used to identify a unique query execution */ +@PublicApi public class ExecutionId { /** @@ -15,7 +16,7 @@ public class ExecutionId { * @return a query execution identifier */ public static ExecutionId generate() { - return new ExecutionId(UUID.randomUUID().toString()); + return new ExecutionId(IdGenerator.uuid().toString()); } /** diff --git a/src/main/java/graphql/execution/ExecutionIdProvider.java b/src/main/java/graphql/execution/ExecutionIdProvider.java index 7f4848c249..655d60560a 100644 --- a/src/main/java/graphql/execution/ExecutionIdProvider.java +++ b/src/main/java/graphql/execution/ExecutionIdProvider.java @@ -1,8 +1,11 @@ package graphql.execution; +import graphql.PublicSpi; + /** * A provider of {@link ExecutionId}s */ +@PublicSpi public interface ExecutionIdProvider { ExecutionIdProvider DEFAULT_EXECUTION_ID_PROVIDER = (query, operationName, context) -> ExecutionId.generate(); diff --git a/src/main/java/graphql/execution/ExecutionStepInfo.java b/src/main/java/graphql/execution/ExecutionStepInfo.java index 40cf8fd268..26737cd127 100644 --- a/src/main/java/graphql/execution/ExecutionStepInfo.java +++ b/src/main/java/graphql/execution/ExecutionStepInfo.java @@ -1,6 +1,8 @@ package graphql.execution; +import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableMapWithNullValues; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLNonNull; @@ -8,9 +10,9 @@ import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLTypeUtil; -import java.util.Collections; import java.util.Map; import java.util.function.Consumer; +import java.util.function.Supplier; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertTrue; @@ -26,7 +28,7 @@ @PublicApi public class ExecutionStepInfo { - /** + /* * An ExecutionStepInfo represent either a field or a list element inside a list of objects/interfaces/unions. * * A StepInfo never represent a Scalar/Enum inside a list (e.g. [String]) because GraphQL execution doesn't descend down @@ -36,7 +38,7 @@ public class ExecutionStepInfo { /** * If this StepInfo represent a field the type is equal to fieldDefinition.getType() - * + *

    * if this StepInfo is a list element this type is the actual current list element. For example: * Query.pets: [[Pet]] with Pet either a Dog or Cat and the actual result is [[Dog1],[[Cat1]] * Then the type is (for a query "{pets{name}}"): @@ -51,35 +53,48 @@ public class ExecutionStepInfo { private final GraphQLOutputType type; /** - * A list element is characterized by having a path ending with an index segment. (ExecutionPath.isListSegment()) + * A list element is characterized by having a path ending with an index segment. (ResultPath.isListSegment()) */ - private final ExecutionPath path; + private final ResultPath path; private final ExecutionStepInfo parent; /** * field, fieldDefinition, fieldContainer and arguments differ per field StepInfo. - * + *

    * But for list StepInfos these properties are the same as the field returning the list. */ private final MergedField field; private final GraphQLFieldDefinition fieldDefinition; private final GraphQLObjectType fieldContainer; - private final Map arguments; + private final Supplier> arguments; + + private ExecutionStepInfo(Builder builder) { + this.fieldDefinition = builder.fieldDefinition; + this.field = builder.field; + this.path = builder.path; + this.parent = builder.parentInfo; + this.type = assertNotNull(builder.type, "you must provide a graphql type"); + this.arguments = builder.arguments; + this.fieldContainer = builder.fieldContainer; + } + /* + * This constructor allows for a slightly ( 1% ish) faster transformation without an intermediate Builder object + */ private ExecutionStepInfo(GraphQLOutputType type, - GraphQLFieldDefinition fieldDefinition, - MergedField field, - ExecutionPath path, + ResultPath path, ExecutionStepInfo parent, - Map arguments, - GraphQLObjectType fieldsContainer) { - this.fieldDefinition = fieldDefinition; - this.field = field; + MergedField field, + GraphQLFieldDefinition fieldDefinition, + GraphQLObjectType fieldContainer, + Supplier> arguments) { + this.type = assertNotNull(type, "you must provide a graphql type"); this.path = path; this.parent = parent; - this.type = assertNotNull(type, "you must provide a graphql type"); + this.field = field; + this.fieldDefinition = fieldDefinition; + this.fieldContainer = fieldContainer; this.arguments = arguments; - this.fieldContainer = fieldsContainer; } /** @@ -87,9 +102,9 @@ private ExecutionStepInfo(GraphQLOutputType type, * Note: * For the Introspection field __typename the returned object type doesn't actually contain the fieldDefinition. * - * @return GraphQLObjectType defining {@link #getFieldDefinition()} + * @return the GraphQLObjectType defining the {@link #getFieldDefinition()} */ - public GraphQLObjectType getFieldContainer() { + public GraphQLObjectType getObjectType() { return fieldContainer; } @@ -111,6 +126,18 @@ public GraphQLOutputType getUnwrappedNonNullType() { return (GraphQLOutputType) GraphQLTypeUtil.unwrapNonNull(this.type); } + /** + * This returns the type which is unwrapped if it was {@link GraphQLNonNull} wrapped + * and then cast to the target type. + * + * @param for two + * + * @return the graphql type in question + */ + public T getUnwrappedNonNullTypeAs() { + return GraphQLTypeUtil.unwrapNonNullAs(this.type); + } + /** * This returns the field definition that is in play when this type info was created or null * if the type is a root query type @@ -131,9 +158,9 @@ public MergedField getField() { } /** - * @return the {@link ExecutionPath} to this info + * @return the {@link ResultPath} to this info */ - public ExecutionPath getPath() { + public ResultPath getPath() { return path; } @@ -155,7 +182,7 @@ public boolean isListType() { * @return the resolved arguments that have been passed to this field */ public Map getArguments() { - return Collections.unmodifiableMap(arguments); + return arguments.get(); } /** @@ -164,11 +191,11 @@ public Map getArguments() { * @param name the name of the argument * @param you decide what type it is * - * @return the named argument or null if its not present + * @return the named argument or null if it's not present */ @SuppressWarnings("unchecked") public T getArgument(String name) { - return (T) arguments.get(name); + return (T) getArguments().get(name); } /** @@ -198,13 +225,12 @@ public boolean hasParent() { public ExecutionStepInfo changeTypeWithPreservedNonNull(GraphQLOutputType newType) { assertTrue(!GraphQLTypeUtil.isNonNull(newType), "newType can't be non null"); if (isNonNullType()) { - return new ExecutionStepInfo(GraphQLNonNull.nonNull(newType), fieldDefinition, field, path, this.parent, arguments, this.fieldContainer); + return transform(GraphQLNonNull.nonNull(newType)); } else { - return new ExecutionStepInfo(newType, fieldDefinition, field, path, this.parent, arguments, this.fieldContainer); + return transform(newType); } } - /** * @return the type in graphql SDL format, eg [typeName!]! */ @@ -217,11 +243,20 @@ public String toString() { return "ExecutionStepInfo{" + " path=" + path + ", type=" + type + - ", parent=" + parent + ", fieldDefinition=" + fieldDefinition + '}'; } + @Internal + ExecutionStepInfo transform(GraphQLOutputType type) { + return new ExecutionStepInfo(type, path, parent, field, fieldDefinition, fieldContainer, arguments); + } + + @Internal + ExecutionStepInfo transform(GraphQLOutputType type, ExecutionStepInfo parent, ResultPath path) { + return new ExecutionStepInfo(type, path, parent, field, fieldDefinition, fieldContainer, arguments); + } + public ExecutionStepInfo transform(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); @@ -249,14 +284,14 @@ public static class Builder { GraphQLFieldDefinition fieldDefinition; GraphQLObjectType fieldContainer; MergedField field; - ExecutionPath path; - Map arguments; + ResultPath path; + Supplier> arguments; /** * @see ExecutionStepInfo#newExecutionStepInfo() */ private Builder() { - arguments = Collections.emptyMap(); + arguments = ImmutableMapWithNullValues::emptyMap; } private Builder(ExecutionStepInfo existing) { @@ -266,7 +301,7 @@ private Builder(ExecutionStepInfo existing) { this.fieldContainer = existing.fieldContainer; this.field = existing.field; this.path = existing.path; - this.arguments = existing.getArguments(); + this.arguments = existing.arguments; } public Builder type(GraphQLOutputType type) { @@ -289,13 +324,13 @@ public Builder field(MergedField field) { return this; } - public Builder path(ExecutionPath executionPath) { - this.path = executionPath; + public Builder path(ResultPath resultPath) { + this.path = resultPath; return this; } - public Builder arguments(Map arguments) { - this.arguments = arguments == null ? Collections.emptyMap() : arguments; + public Builder arguments(Supplier> arguments) { + this.arguments = arguments; return this; } @@ -305,7 +340,7 @@ public Builder fieldContainer(GraphQLObjectType fieldContainer) { } public ExecutionStepInfo build() { - return new ExecutionStepInfo(type, fieldDefinition, field, path, parentInfo, arguments, fieldContainer); + return new ExecutionStepInfo(this); } } } diff --git a/src/main/java/graphql/execution/ExecutionStepInfoFactory.java b/src/main/java/graphql/execution/ExecutionStepInfoFactory.java index 732074b386..286106a7dc 100644 --- a/src/main/java/graphql/execution/ExecutionStepInfoFactory.java +++ b/src/main/java/graphql/execution/ExecutionStepInfoFactory.java @@ -1,52 +1,92 @@ package graphql.execution; import graphql.Internal; -import graphql.introspection.Introspection; +import graphql.collect.ImmutableMapWithNullValues; import graphql.language.Argument; +import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLList; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLOutputType; +import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; +import java.util.function.Supplier; + +import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; @Internal +@NullMarked public class ExecutionStepInfoFactory { + public ExecutionStepInfo newExecutionStepInfoForListElement(ExecutionStepInfo executionInfo, ResultPath indexedPath) { + GraphQLList fieldType = executionInfo.getUnwrappedNonNullTypeAs(); + GraphQLOutputType typeInList = (GraphQLOutputType) fieldType.getWrappedType(); + return executionInfo.transform(typeInList, executionInfo, indexedPath); + } - ValuesResolver valuesResolver = new ValuesResolver(); - - - public ExecutionStepInfo newExecutionStepInfoForSubField(ExecutionContext executionContext, MergedField mergedField, ExecutionStepInfo parentInfo) { - GraphQLObjectType parentType = (GraphQLObjectType) parentInfo.getUnwrappedNonNullType(); - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(executionContext.getGraphQLSchema(), parentType, mergedField.getName()); + /** + * Builds the type info hierarchy for the current field + * + * @param executionContext the execution context in play + * @param parameters contains the parameters holding the fields to be executed and source object + * @param fieldDefinition the field definition to build type info for + * @param fieldContainer the field container + * + * @return a new type info + */ + public ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + GraphQLFieldDefinition fieldDefinition, + @Nullable GraphQLObjectType fieldContainer) { + MergedField field = parameters.getField(); + ExecutionStepInfo parentStepInfo = parameters.getExecutionStepInfo(); GraphQLOutputType fieldType = fieldDefinition.getType(); - List fieldArgs = mergedField.getArguments(); - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDefinition.getArguments(), fieldArgs, executionContext.getVariables()); + List fieldArgDefs = fieldDefinition.getArguments(); + Supplier> argumentValues = ImmutableMapWithNullValues::emptyMap; + // + // no need to create args at all if there are none on the field def + // + if (!fieldArgDefs.isEmpty()) { + argumentValues = getArgumentValues(executionContext, fieldArgDefs, field.getArguments()); + } - ExecutionPath newPath = parentInfo.getPath().segment(mergedField.getResultKey()); - return parentInfo.transform(builder -> builder - .parentInfo(parentInfo) + return newExecutionStepInfo() .type(fieldType) .fieldDefinition(fieldDefinition) - .fieldContainer(parentType) - .field(mergedField) - .path(newPath) - .arguments(argumentValues)); + .fieldContainer(fieldContainer) + .field(field) + .path(parameters.getPath()) + .parentInfo(parentStepInfo) + .arguments(argumentValues) + .build(); } - public ExecutionStepInfo newExecutionStepInfoForListElement(ExecutionStepInfo executionInfo, int index) { - GraphQLList fieldType = (GraphQLList) executionInfo.getUnwrappedNonNullType(); - GraphQLOutputType typeInList = (GraphQLOutputType) fieldType.getWrappedType(); - ExecutionPath indexedPath = executionInfo.getPath().segment(index); - return executionInfo.transform(builder -> builder - .parentInfo(executionInfo) - .type(typeInList) - .path(indexedPath)); + @NonNull + private static Supplier> getArgumentValues(ExecutionContext executionContext, + List fieldArgDefs, + List fieldArgs) { + Supplier> argumentValues; + GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); + Supplier> argValuesSupplier = () -> { + Map resolvedValues = ValuesResolver.getArgumentValues(codeRegistry, + fieldArgDefs, + fieldArgs, + executionContext.getCoercedVariables(), + executionContext.getGraphQLContext(), + executionContext.getLocale()); + + return ImmutableMapWithNullValues.copyOf(resolvedValues); + }; + argumentValues = FpKit.intraThreadMemoize(argValuesSupplier); + return argumentValues; } + } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index a5f4b92621..78ad4280b8 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -1,5 +1,8 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; +import graphql.DuckTyped; +import graphql.EngineRunningState; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.GraphQLError; @@ -9,15 +12,24 @@ import graphql.TrivialDataFetcher; import graphql.TypeMismatchError; import graphql.UnresolvedTypeError; +import graphql.execution.directives.QueryDirectives; import graphql.execution.directives.QueryDirectivesImpl; +import graphql.execution.incremental.DeferredExecutionSupport; +import graphql.execution.incremental.IncrementalExecutionContextKeys; +import graphql.execution.instrumentation.ExecuteObjectInstrumentationContext; +import graphql.execution.instrumentation.FieldFetchingInstrumentationContext; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.reactive.ReactiveSupport; +import graphql.extensions.ExtensionsBuilder; import graphql.introspection.Introspection; -import graphql.language.Argument; import graphql.language.Field; +import graphql.normalized.ExecutableNormalizedField; +import graphql.normalized.ExecutableNormalizedOperation; import graphql.schema.CoercingSerializeException; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; @@ -27,34 +39,37 @@ import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLType; +import graphql.schema.LightDataFetcher; import graphql.util.FpKit; -import graphql.util.LogKit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.OptionalInt; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.function.Supplier; import static graphql.execution.Async.exceptionallyCompletedFuture; -import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; import static graphql.execution.FieldCollectorParameters.newParameters; import static graphql.execution.FieldValueInfo.CompleteValueType.ENUM; import static graphql.execution.FieldValueInfo.CompleteValueType.LIST; import static graphql.execution.FieldValueInfo.CompleteValueType.NULL; import static graphql.execution.FieldValueInfo.CompleteValueType.OBJECT; import static graphql.execution.FieldValueInfo.CompleteValueType.SCALAR; +import static graphql.execution.ResultNodesInfo.MAX_RESULT_NODES; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.nonNullCtx; import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment; +import static graphql.schema.GraphQLTypeUtil.isEnum; import static graphql.schema.GraphQLTypeUtil.isList; -import static java.util.concurrent.CompletableFuture.completedFuture; +import static graphql.schema.GraphQLTypeUtil.isScalar; /** * An execution strategy is give a list of fields from the graphql query to execute and find values for using a recursive strategy. @@ -87,15 +102,15 @@ *

    * The execution of a field has two phases, first a raw object must be fetched for a field via a {@link DataFetcher} which * is defined on the {@link GraphQLFieldDefinition}. This object must then be 'completed' into a suitable value, either as a scalar/enum type via - * coercion or if its a complex object type by recursively calling the execution strategy for the lower level fields. + * coercion or if it's a complex object type by recursively calling the execution strategy for the lower level fields. *

    * The first phase (data fetching) is handled by the method {@link #fetchField(ExecutionContext, ExecutionStrategyParameters)} *

    - * The second phase (value completion) is handled by the methods {@link #completeField(ExecutionContext, ExecutionStrategyParameters, FetchedValue)} + * The second phase (value completion) is handled by the methods {@link #completeField(ExecutionContext, ExecutionStrategyParameters, Object)} * and the other "completeXXX" methods. *

    * The order of fields fetching and completion is up to the execution strategy. As the graphql specification - * http://facebook.github.io/graphql/#sec-Normal-and-Serial-Execution says: + * https://spec.graphql.org/October2021/#sec-Normal-and-Serial-Execution says: *

    * Normally the executor can execute the entries in a grouped field set in whatever order it chooses (often in parallel). Because * the resolution of fields other than top-level mutation fields must always be side effect-free and idempotent, the @@ -113,15 +128,11 @@ @SuppressWarnings("FutureReturnValueIgnored") public abstract class ExecutionStrategy { - private static final Logger log = LoggerFactory.getLogger(ExecutionStrategy.class); - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(ExecutionStrategy.class); - - protected final ValuesResolver valuesResolver = new ValuesResolver(); protected final FieldCollector fieldCollector = new FieldCollector(); - private final ExecutionStepInfoFactory executionStepInfoFactory = new ExecutionStepInfoFactory(); + protected final ExecutionStepInfoFactory executionStepInfoFactory = new ExecutionStepInfoFactory(); + protected final DataFetcherExceptionHandler dataFetcherExceptionHandler; private final ResolveType resolvedType = new ResolveType(); - protected final DataFetcherExceptionHandler dataFetcherExceptionHandler; /** * The default execution strategy constructor uses the {@link SimpleDataFetcherExceptionHandler} @@ -131,6 +142,7 @@ protected ExecutionStrategy() { dataFetcherExceptionHandler = new SimpleDataFetcherExceptionHandler(); } + /** * The consumers of the execution strategy can pass in a {@link DataFetcherExceptionHandler} to better * decide what do when a data fetching error happens @@ -141,6 +153,23 @@ protected ExecutionStrategy(DataFetcherExceptionHandler dataFetcherExceptionHand this.dataFetcherExceptionHandler = dataFetcherExceptionHandler; } + + @Internal + public static String mkNameForPath(Field currentField) { + return mkNameForPath(Collections.singletonList(currentField)); + } + + @Internal + public static String mkNameForPath(MergedField mergedField) { + return mergedField.getResultKey(); + } + + @Internal + public static String mkNameForPath(List currentField) { + Field field = currentField.get(0); + return field.getResultKey(); + } + /** * This is the entry point to an execution strategy. It will be passed the fields to execute and get values for. * @@ -149,28 +178,165 @@ protected ExecutionStrategy(DataFetcherExceptionHandler dataFetcherExceptionHand * * @return a promise to an {@link ExecutionResult} * - * @throws NonNullableFieldWasNullException in the future if a non null field resolves to a null value + * @throws NonNullableFieldWasNullException in the future if a non-null field resolves to a null value */ public abstract CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException; /** - * Called to fetch a value for a field and resolve it further in terms of the graphql query. This will call - * #fetchField followed by #completeField and the completed {@link ExecutionResult} is returned. - *

    - * An execution strategy can iterate the fields to be executed and call this method for each one - *

    - * Graphql fragments mean that for any give logical field can have one or more {@link Field} values associated with it - * in the query, hence the fieldList. However the first entry is representative of the field for most purposes. + * This is the re-entry point for an execution strategy when an object type needs to be resolved. * * @param executionContext contains the top level execution parameters * @param parameters contains the parameters holding the fields to be executed and source object * - * @return a promise to an {@link ExecutionResult} + * @return a {@link CompletableFuture} promise to a map of object field values or a materialized map of object field values * - * @throws NonNullableFieldWasNullException in the future if a non null field resolves to a null value + * @throws NonNullableFieldWasNullException in the {@link CompletableFuture} if a non-null field resolved to a null value */ - protected CompletableFuture resolveField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - return resolveFieldWithInfo(executionContext, parameters).thenCompose(FieldValueInfo::getFieldValue); + @SuppressWarnings("unchecked") + @DuckTyped(shape = "CompletableFuture> | Map") + protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + executionContext.throwIfCancelled(); + + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + + ExecuteObjectInstrumentationContext resolveObjectCtx = ExecuteObjectInstrumentationContext.nonNullCtx( + instrumentation.beginExecuteObject(instrumentationParameters, executionContext.getInstrumentationState()) + ); + + List fieldNames = parameters.getFields().getKeys(); + + DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); + List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); + dataLoaderDispatcherStrategy.executeObject(executionContext, parameters, fieldsExecutedOnInitialResult.size()); + Async.CombinedBuilder resolvedFieldFutures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); + + CompletableFuture> overallResult = new CompletableFuture<>(); + BiConsumer, Throwable> handleResultsConsumer = buildFieldValueMap(fieldsExecutedOnInitialResult, overallResult, executionContext); + + resolveObjectCtx.onDispatched(); + + Object fieldValueInfosResult = resolvedFieldFutures.awaitPolymorphic(); + if (fieldValueInfosResult instanceof CompletableFuture) { + CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; + fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { + throwable = executionContext.possibleCancellation(throwable); + + if (throwable != null) { + handleResultsConsumer.accept(null, throwable); + return; + } + + Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); + resolveObjectCtx.onFieldValuesInfo(completeValueInfos); + resultFutures.await().whenComplete(handleResultsConsumer); + }).exceptionally((ex) -> { + // if there are any issues with combining/handling the field results, + // complete the future at all costs and bubble up any thrown exception so + // the execution does not hang. + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesException(ex, parameters); + resolveObjectCtx.onFieldValuesException(); + overallResult.completeExceptionally(ex); + return null; + }); + overallResult.whenComplete(resolveObjectCtx::onCompleted); + return overallResult; + } else { + List completeValueInfos = (List) fieldValueInfosResult; + + Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); + resolveObjectCtx.onFieldValuesInfo(completeValueInfos); + + Object completedValuesObject = resultFutures.awaitPolymorphic(); + if (completedValuesObject instanceof CompletableFuture) { + CompletableFuture> completedValues = (CompletableFuture>) completedValuesObject; + completedValues.whenComplete(handleResultsConsumer); + overallResult.whenComplete(resolveObjectCtx::onCompleted); + return overallResult; + } else { + Map fieldValueMap = executionContext.getResponseMapFactory().createInsertionOrdered(fieldsExecutedOnInitialResult, (List) completedValuesObject); + resolveObjectCtx.onCompleted(fieldValueMap, null); + return fieldValueMap; + } + } + } + + private static Async.@NonNull CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { + Async.CombinedBuilder resultFutures = Async.ofExpectedSize(completeValueInfos.size()); + for (FieldValueInfo completeValueInfo : completeValueInfos) { + resultFutures.addObject(completeValueInfo.getFieldValueObject()); + } + return resultFutures; + } + + private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { + return (List results, Throwable exception) -> { + exception = executionContext.possibleCancellation(exception); + + if (exception != null) { + handleValueException(overallResult, exception, executionContext); + return; + } + Map resolvedValuesByField = executionContext.getResponseMapFactory().createInsertionOrdered(fieldNames, results); + overallResult.complete(resolvedValuesByField); + }; + } + + DeferredExecutionSupport createDeferredExecutionSupport(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + MergedSelectionSet fields = parameters.getFields(); + + return executionContext.hasIncrementalSupport() ? + new DeferredExecutionSupport.DeferredExecutionSupportImpl( + fields, + parameters, + executionContext, + (ec, esp) -> Async.toCompletableFuture(resolveFieldWithInfo(ec, esp)), + this::createExecutionStepInfo + ) : DeferredExecutionSupport.NOOP; + + } + + Async.@NonNull CombinedBuilder getAsyncFieldValueInfo( + ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + DeferredExecutionSupport deferredExecutionSupport + ) { + executionContext.throwIfCancelled(); + + MergedSelectionSet fields = parameters.getFields(); + + executionContext.getIncrementalCallState().enqueue(deferredExecutionSupport.createCalls()); + + // Only non-deferred fields should be considered for calculating the expected size of futures. + Async.CombinedBuilder futures = Async + .ofExpectedSize(fields.size() - deferredExecutionSupport.deferredFieldsCount()); + + for (String fieldName : fields.getKeys()) { + executionContext.throwIfCancelled(); + + MergedField currentField = fields.getSubField(fieldName); + + ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); + ExecutionStrategyParameters newParameters = parameters.transform(currentField, fieldPath, parameters); + + if (!deferredExecutionSupport.isDeferredField(currentField)) { + Object fieldValueInfo = resolveFieldWithInfo(executionContext, newParameters); + futures.addObject(fieldValueInfo); + } + + } + + if (executionContext.hasIncrementalSupport() + && deferredExecutionSupport.deferredFieldsCount() > 0 + && executionContext.getGraphQLContext().getBoolean(IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START, false)) { + + executionContext.getIncrementalCallState().startDrainingNow(); + } + + return futures; } /** @@ -185,217 +351,323 @@ protected CompletableFuture resolveField(ExecutionContext execu * @param executionContext contains the top level execution parameters * @param parameters contains the parameters holding the fields to be executed and source object * - * @return a promise to a {@link FieldValueInfo} + * @return a {@link CompletableFuture} promise to a {@link FieldValueInfo} or a materialised {@link FieldValueInfo} * - * @throws NonNullableFieldWasNullException in the {@link FieldValueInfo#getFieldValue()} future if a non null field resolves to a null value + * @throws NonNullableFieldWasNullException in the {@link FieldValueInfo#getFieldValueFuture()} future + * if a nonnull field resolves to a null value */ - protected CompletableFuture resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @SuppressWarnings("unchecked") + @DuckTyped(shape = "CompletableFuture | FieldValueInfo") + protected Object resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField()); + Supplier executionStepInfo = FpKit.intraThreadMemoize(() -> createExecutionStepInfo(executionContext, parameters, fieldDef, null)); Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationContext fieldCtx = instrumentation.beginField( - new InstrumentationFieldParameters(executionContext, fieldDef, createExecutionStepInfo(executionContext, parameters, fieldDef, null)) - ); - - CompletableFuture fetchFieldFuture = fetchField(executionContext, parameters); - CompletableFuture result = fetchFieldFuture.thenApply((fetchedValue) -> - completeField(executionContext, parameters, fetchedValue)); - - CompletableFuture executionResultFuture = result.thenCompose(FieldValueInfo::getFieldValue); - - fieldCtx.onDispatched(executionResultFuture); - executionResultFuture.whenComplete(fieldCtx::onCompleted); - return result; - } - - protected CompletableFuture resolveFieldWithInfoToNull(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - FetchedValue fetchedValue = FetchedValue.newFetchedValue().build(); - FieldValueInfo fieldValueInfo = completeField(executionContext, parameters, fetchedValue); - return CompletableFuture.completedFuture(fieldValueInfo); + InstrumentationContext fieldCtx = nonNullCtx(instrumentation.beginFieldExecution( + new InstrumentationFieldParameters(executionContext, executionStepInfo), executionContext.getInstrumentationState() + )); + + Object fetchedValueObj = fetchField(executionContext, parameters); + if (fetchedValueObj instanceof CompletableFuture) { + CompletableFuture fetchFieldFuture = (CompletableFuture) fetchedValueObj; + CompletableFuture result = fetchFieldFuture.thenApply((fetchedValue) -> { + executionContext.getDataLoaderDispatcherStrategy().startComplete(parameters); + FieldValueInfo completeFieldResult = completeField(fieldDef, executionContext, parameters, fetchedValue); + executionContext.getDataLoaderDispatcherStrategy().stopComplete(parameters); + return completeFieldResult; + }); + + fieldCtx.onDispatched(); + result.whenComplete(fieldCtx::onCompleted); + return result; + } else { + try { + FieldValueInfo fieldValueInfo = completeField(fieldDef, executionContext, parameters, fetchedValueObj); + fieldCtx.onDispatched(); + fieldCtx.onCompleted(FetchedValue.getFetchedValue(fetchedValueObj), null); + return fieldValueInfo; + } catch (Exception e) { + return Async.exceptionallyCompletedFuture(e); + } + } } - /** * Called to fetch a value for a field from the {@link DataFetcher} associated with the field * {@link GraphQLFieldDefinition}. *

    * Graphql fragments mean that for any give logical field can have one or more {@link Field} values associated with it - * in the query, hence the fieldList. However the first entry is representative of the field for most purposes. + * in the query, hence the fieldList. However, the first entry is representative of the field for most purposes. * * @param executionContext contains the top level execution parameters * @param parameters contains the parameters holding the fields to be executed and source object * - * @return a promise to a fetched object + * @return a promise to a value object or the value itself. The value maybe a raw object OR a {@link FetchedValue} * - * @throws NonNullableFieldWasNullException in the future if a non null field resolves to a null value + * @throws NonNullableFieldWasNullException in the future if a non-null field resolves to a null value */ - protected CompletableFuture fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | ") + protected Object fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedField field = parameters.getField(); - GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); + GraphQLObjectType parentType = parameters.getExecutionStepInfo().getUnwrappedNonNullTypeAs(); GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, field.getSingleField()); + return fetchField(fieldDef, executionContext, parameters); + } - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDef.getArguments(), field.getArguments(), executionContext.getVariables()); + @DuckTyped(shape = "CompletableFuture | ") + private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + executionContext.throwIfCancelled(); - QueryDirectivesImpl queryDirectives = new QueryDirectivesImpl(field, executionContext.getGraphQLSchema(), executionContext.getVariables()); + if (incrementAndCheckMaxNodesExceeded(executionContext)) { + return null; + } - GraphQLOutputType fieldType = fieldDef.getType(); - DataFetchingFieldSelectionSet fieldCollector = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, fieldType, parameters.getField()); - ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); + MergedField field = parameters.getField(); + GraphQLObjectType parentType = parameters.getExecutionStepInfo().getUnwrappedNonNullTypeAs(); + // if the DF (like PropertyDataFetcher) does not use the arguments or execution step info then dont build any - DataFetchingEnvironment environment = newDataFetchingEnvironment(executionContext) - .source(parameters.getSource()) - .localContext(parameters.getLocalContext()) - .arguments(argumentValues) - .fieldDefinition(fieldDef) - .mergedField(parameters.getField()) - .fieldType(fieldType) - .executionStepInfo(executionStepInfo) - .parentType(parentType) - .selectionSet(fieldCollector) - .queryDirectives(queryDirectives) - .build(); + Supplier dataFetchingEnvironment = FpKit.intraThreadMemoize(() -> { - DataFetcher dataFetcher = codeRegistry.getDataFetcher(parentType, fieldDef); + Supplier executionStepInfo = FpKit.intraThreadMemoize( + () -> createExecutionStepInfo(executionContext, parameters, fieldDef, parentType)); - Instrumentation instrumentation = executionContext.getInstrumentation(); + Supplier> argumentValues = () -> executionStepInfo.get().getArguments(); - InstrumentationFieldFetchParameters instrumentationFieldFetchParams = new InstrumentationFieldFetchParameters(executionContext, fieldDef, environment, parameters, dataFetcher instanceof TrivialDataFetcher); - InstrumentationContext fetchCtx = instrumentation.beginFieldFetch(instrumentationFieldFetchParams); + Supplier normalizedFieldSupplier = getNormalizedField(executionContext, parameters, executionStepInfo); - CompletableFuture fetchedValue; - dataFetcher = instrumentation.instrumentDataFetcher(dataFetcher, instrumentationFieldFetchParams); - ExecutionId executionId = executionContext.getExecutionId(); - try { - log.debug("'{}' fetching field '{}' using data fetcher '{}'...", executionId, executionStepInfo.getPath(), dataFetcher.getClass().getName()); - Object fetchedValueRaw = dataFetcher.get(environment); - logNotSafe.debug("'{}' field '{}' fetch returned '{}'", executionId, executionStepInfo.getPath(), fetchedValueRaw == null ? "null" : fetchedValueRaw.getClass().getName()); + // DataFetchingFieldSelectionSet and QueryDirectives is a supplier of sorts - eg a lazy pattern + DataFetchingFieldSelectionSet fieldCollector = DataFetchingFieldSelectionSetImpl.newCollector(executionContext.getGraphQLSchema(), fieldDef.getType(), normalizedFieldSupplier); + QueryDirectives queryDirectives = new QueryDirectivesImpl(field, + executionContext.getGraphQLSchema(), + executionContext.getCoercedVariables(), + executionContext.getNormalizedVariables(), + executionContext.getGraphQLContext(), + executionContext.getLocale()); - fetchedValue = Async.toCompletableFuture(fetchedValueRaw); - } catch (Exception e) { - logNotSafe.debug(String.format("'%s', field '%s' fetch threw exception", executionId, executionStepInfo.getPath()), e); - fetchedValue = new CompletableFuture<>(); - fetchedValue.completeExceptionally(e); + return newDataFetchingEnvironment(executionContext) + .source(parameters.getSource()) + .localContext(parameters.getLocalContext()) + .arguments(argumentValues) + .fieldDefinition(fieldDef) + .mergedField(parameters.getField()) + .fieldType(fieldDef.getType()) + .executionStepInfo(executionStepInfo) + .parentType(parentType) + .selectionSet(fieldCollector) + .queryDirectives(queryDirectives) + .deferredCallContext(parameters.getDeferredCallContext()) + .level(parameters.getPath().getLevel()) + .build(); + }); + + GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); + DataFetcher originalDataFetcher = codeRegistry.getDataFetcher(parentType, fieldDef); + + Instrumentation instrumentation = executionContext.getInstrumentation(); + + InstrumentationFieldFetchParameters instrumentationFieldFetchParams = new InstrumentationFieldFetchParameters(executionContext, dataFetchingEnvironment, parameters, originalDataFetcher instanceof TrivialDataFetcher); + FieldFetchingInstrumentationContext fetchCtx = FieldFetchingInstrumentationContext.nonNullCtx(instrumentation.beginFieldFetching(instrumentationFieldFetchParams, + executionContext.getInstrumentationState()) + ); + + DataFetcher dataFetcher = instrumentation.instrumentDataFetcher(originalDataFetcher, instrumentationFieldFetchParams, executionContext.getInstrumentationState()); + Object fetchedObject = invokeDataFetcher(executionContext, parameters, fieldDef, dataFetchingEnvironment, originalDataFetcher, dataFetcher); + executionContext.getDataLoaderDispatcherStrategy().fieldFetched(executionContext, parameters, dataFetcher, fetchedObject, dataFetchingEnvironment); + fetchCtx.onDispatched(); + fetchCtx.onFetchedValue(fetchedObject); + // if it's a subscription, leave any reactive objects alone + if (!executionContext.isSubscriptionOperation()) { + // possible convert reactive objects into CompletableFutures + fetchedObject = ReactiveSupport.fetchedObject(fetchedObject); } - fetchCtx.onDispatched(fetchedValue); - return fetchedValue - .handle((result, exception) -> { + if (fetchedObject instanceof CompletableFuture) { + @SuppressWarnings("unchecked") + CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; + EngineRunningState engineRunningState = executionContext.getEngineRunningState(); + + CompletableFuture> handleCF = engineRunningState.handle(fetchedValue, (result, exception) -> { + // because we added an artificial CF, we need to unwrap the exception + Throwable possibleWrappedException = engineRunningState.possibleCancellation(exception); + + if (possibleWrappedException != null) { + CompletableFuture> handledExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, possibleWrappedException); + return handledExceptionResult.thenApply( handledResult -> { + fetchCtx.onExceptionHandled(handledResult); + fetchCtx.onCompleted(result, exception); + return handledResult; + }); + } else { fetchCtx.onCompleted(result, exception); - if (exception != null) { - handleFetchingException(executionContext, parameters, environment, exception); - return null; - } else { - return result; - } - }) - .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); + // we can simply return the fetched value CF and avoid a allocation + return fetchedValue; + } + }); + CompletableFuture rawResultCF = engineRunningState.compose(handleCF, Function.identity()); + return rawResultCF + .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); + } else { + fetchCtx.onCompleted(fetchedObject, null); + return unboxPossibleDataFetcherResult(executionContext, parameters, fetchedObject); + } } - FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, - ExecutionStrategyParameters parameters, - Object result) { - - if (result instanceof DataFetcherResult) { - //noinspection unchecked - DataFetcherResult dataFetcherResult = (DataFetcherResult) result; - if (dataFetcherResult.isMapRelativeErrors()) { - dataFetcherResult.getErrors().stream() - .map(relError -> new AbsoluteGraphQLError(parameters, relError)) - .forEach(executionContext::addError); + /* + * ExecutionContext is not used in the method, but the java agent uses it, so it needs to be present + */ + @SuppressWarnings("unused") + private Object invokeDataFetcher(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLFieldDefinition fieldDef, Supplier dataFetchingEnvironment, DataFetcher originalDataFetcher, DataFetcher dataFetcher) { + Object fetchedValue; + try { + Object fetchedValueRaw; + if (dataFetcher instanceof LightDataFetcher) { + fetchedValueRaw = ((LightDataFetcher) dataFetcher).get(fieldDef, parameters.getSource(), dataFetchingEnvironment); } else { - dataFetcherResult.getErrors().forEach(executionContext::addError); + fetchedValueRaw = dataFetcher.get(dataFetchingEnvironment.get()); } + executionContext.getProfiler().fieldFetched(fetchedValueRaw, originalDataFetcher, dataFetcher, parameters.getPath(), fieldDef, parameters.getExecutionStepInfo().getType()); + fetchedValue = Async.toCompletableFutureOrMaterializedObject(fetchedValueRaw); + } catch (Exception e) { + fetchedValue = Async.exceptionallyCompletedFuture(e); + } + return fetchedValue; + } + + protected Supplier getNormalizedField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Supplier executionStepInfo) { + Supplier normalizedQuery = executionContext.getNormalizedQueryTree(); + return () -> normalizedQuery.get().getNormalizedField(parameters.getField(), executionStepInfo.get().getObjectType(), executionStepInfo.get().getPath()); + } + + /** + * If the data fetching returned a {@link DataFetcherResult} then it can contain errors and new local context + * and hence it gets turned into a {@link FetchedValue} but otherwise this method returns the unboxed + * value without the wrapper. This means its more efficient overall by default. + * + * @param executionContext the execution context in play + * @param parameters the parameters in play + * @param result the fetched raw object + * + * @return an unboxed value which can be a FetchedValue or an Object + */ + @DuckTyped(shape = "FetchedValue | Object") + protected Object unboxPossibleDataFetcherResult(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + Object result) { + if (result instanceof DataFetcherResult) { + DataFetcherResult dataFetcherResult = (DataFetcherResult) result; + + addErrorsToRightContext(dataFetcherResult.getErrors(), parameters, executionContext); + + addExtensionsIfPresent(executionContext, dataFetcherResult); Object localContext = dataFetcherResult.getLocalContext(); if (localContext == null) { // if the field returns nothing then they get the context of their parent field localContext = parameters.getLocalContext(); } - return FetchedValue.newFetchedValue() - .fetchedValue(executionContext.getValueUnboxer().unbox(dataFetcherResult.getData())) - .rawFetchedValue(dataFetcherResult.getData()) - .errors(dataFetcherResult.getErrors()) - .localContext(localContext) - .build(); + Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); + return new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); } else { - return FetchedValue.newFetchedValue() - .fetchedValue(executionContext.getValueUnboxer().unbox(result)) - .rawFetchedValue(result) - .localContext(parameters.getLocalContext()) - .build(); + return executionContext.getValueUnboxer().unbox(result); + } + } + + private void addExtensionsIfPresent(ExecutionContext executionContext, DataFetcherResult dataFetcherResult) { + Map extensions = dataFetcherResult.getExtensions(); + if (extensions != null) { + ExtensionsBuilder extensionsBuilder = executionContext.getGraphQLContext().get(ExtensionsBuilder.class); + if (extensionsBuilder != null) { + extensionsBuilder.addValues(extensions); + } } } - private void handleFetchingException(ExecutionContext executionContext, - ExecutionStrategyParameters parameters, - DataFetchingEnvironment environment, - Throwable e) { + protected CompletableFuture> handleFetchingException( + DataFetchingEnvironment environment, + ExecutionStrategyParameters parameters, + Throwable e + ) { DataFetcherExceptionHandlerParameters handlerParameters = DataFetcherExceptionHandlerParameters.newExceptionParameters() .dataFetchingEnvironment(environment) .exception(e) .build(); - DataFetcherExceptionHandlerResult handlerResult = dataFetcherExceptionHandler.onException(handlerParameters); - handlerResult.getErrors().forEach(executionContext::addError); + try { + return asyncHandleException(dataFetcherExceptionHandler, handlerParameters); + } catch (Exception handlerException) { + handlerParameters = DataFetcherExceptionHandlerParameters.newExceptionParameters() + .dataFetchingEnvironment(environment) + .exception(handlerException) + .build(); + return asyncHandleException(new SimpleDataFetcherExceptionHandler(), handlerParameters); + } + } - parameters.deferredErrorSupport().onFetchingException(parameters, e); + private CompletableFuture> asyncHandleException(DataFetcherExceptionHandler handler, DataFetcherExceptionHandlerParameters handlerParameters) { + //noinspection unchecked + return handler.handleException(handlerParameters).thenApply( + handlerResult -> (DataFetcherResult) DataFetcherResult.newResult().errors(handlerResult.getErrors()).build() + ); } /** * Called to complete a field based on the type of the field. *

    - * If the field is a scalar type, then it will be coerced and returned. However if the field type is an complex object type, then + * If the field is a scalar type, then it will be coerced and returned. However, if the field type is an complex object type, then * the execution strategy will be called recursively again to execute the fields of that type before returning. *

    * Graphql fragments mean that for any give logical field can have one or more {@link Field} values associated with it - * in the query, hence the fieldList. However the first entry is representative of the field for most purposes. + * in the query, hence the fieldList. However, the first entry is representative of the field for most purposes. * * @param executionContext contains the top level execution parameters * @param parameters contains the parameters holding the fields to be executed and source object - * @param fetchedValue the fetched raw value + * @param fetchedValue the fetched raw value or perhaps a {@link FetchedValue} wrapper of that value * * @return a {@link FieldValueInfo} * - * @throws NonNullableFieldWasNullException in the {@link FieldValueInfo#getFieldValue()} future if a non null field resolves to a null value + * @throws NonNullableFieldWasNullException in the {@link FieldValueInfo#getFieldValueFuture()} future + * if a nonnull field resolves to a null value */ - protected FieldValueInfo completeField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { + protected FieldValueInfo completeField(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + @DuckTyped(shape = "Object | FetchedValue") + Object fetchedValue) { + executionContext.throwIfCancelled(); + Field field = parameters.getField().getSingleField(); - GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); + GraphQLObjectType parentType = parameters.getExecutionStepInfo().getUnwrappedNonNullTypeAs(); GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, field); + return completeField(fieldDef, executionContext, parameters, fetchedValue); + } + + private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object fetchedValue) { + GraphQLObjectType parentType = parameters.getExecutionStepInfo().getUnwrappedNonNullTypeAs(); ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, fieldDef, executionStepInfo, fetchedValue); - InstrumentationContext ctxCompleteField = instrumentation.beginFieldComplete( - instrumentationParams - ); - - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDef.getArguments(), field.getArguments(), executionContext.getVariables()); - - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); - - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(executionStepInfo) - .arguments(argumentValues) - .source(fetchedValue.getFetchedValue()) - .localContext(fetchedValue.getLocalContext()) - .nonNullFieldValidator(nonNullableFieldValidator) + InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, () -> executionStepInfo, fetchedValue); + InstrumentationContext ctxCompleteField = nonNullCtx(instrumentation.beginFieldCompletion( + instrumentationParams, executionContext.getInstrumentationState() + )); + + ExecutionStrategyParameters newParameters = parameters.transform( + executionStepInfo, + FetchedValue.getLocalContext(fetchedValue, parameters.getLocalContext()), + FetchedValue.getFetchedValue(fetchedValue) ); - log.debug("'{}' completing field '{}'...", executionContext.getExecutionId(), executionStepInfo.getPath()); - FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); - - CompletableFuture executionResultFuture = fieldValueInfo.getFieldValue(); - ctxCompleteField.onDispatched(executionResultFuture); - executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + ctxCompleteField.onDispatched(); + if (fieldValueInfo.isFutureValue()) { + CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); + executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + } else { + ctxCompleteField.onCompleted(fieldValueInfo.getFieldValueObject(), null); + } return fieldValueInfo; } - /** * Called to complete a value for a field based on the type of the field. *

    @@ -416,19 +688,18 @@ protected FieldValueInfo completeValue(ExecutionContext executionContext, Execut ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); Object result = executionContext.getValueUnboxer().unbox(parameters.getSource()); GraphQLType fieldType = executionStepInfo.getUnwrappedNonNullType(); - CompletableFuture fieldValue; + Object fieldValue; if (result == null) { - fieldValue = completeValueForNull(parameters); - return FieldValueInfo.newFieldValueInfo(NULL).fieldValue(fieldValue).build(); + return getFieldValueInfoForNull(parameters); } else if (isList(fieldType)) { return completeValueForList(executionContext, parameters, result); - } else if (fieldType instanceof GraphQLScalarType) { + } else if (isScalar(fieldType)) { fieldValue = completeValueForScalar(executionContext, parameters, (GraphQLScalarType) fieldType, result); - return FieldValueInfo.newFieldValueInfo(SCALAR).fieldValue(fieldValue).build(); - } else if (fieldType instanceof GraphQLEnumType) { + return new FieldValueInfo(SCALAR, fieldValue); + } else if (isEnum(fieldType)) { fieldValue = completeValueForEnum(executionContext, parameters, (GraphQLEnumType) fieldType, result); - return FieldValueInfo.newFieldValueInfo(ENUM).fieldValue(fieldValue).build(); + return new FieldValueInfo(ENUM, fieldValue); } // when we are here, we have a complex type: Interface, Union or Object @@ -441,27 +712,48 @@ protected FieldValueInfo completeValue(ExecutionContext executionContext, Execut } catch (UnresolvedTypeException ex) { // consider the result to be null and add the error on the context handleUnresolvedTypeProblem(executionContext, parameters, ex); - // and validate the field is nullable, if non-nullable throw exception - parameters.getNonNullFieldValidator().validate(parameters.getPath(), null); - // complete the field as null - fieldValue = completedFuture(new ExecutionResultImpl(null, null)); + // complete field as null, validating it is nullable + return getFieldValueInfoForNull(parameters); } - return FieldValueInfo.newFieldValueInfo(OBJECT).fieldValue(fieldValue).build(); + return new FieldValueInfo(OBJECT, fieldValue); } private void handleUnresolvedTypeProblem(ExecutionContext context, ExecutionStrategyParameters parameters, UnresolvedTypeException e) { UnresolvedTypeError error = new UnresolvedTypeError(parameters.getPath(), parameters.getExecutionStepInfo(), e); - logNotSafe.warn(error.getMessage(), e); - context.addError(error); - parameters.deferredErrorSupport().onError(error); + addErrorToRightContext(error, parameters, context); } - private CompletableFuture completeValueForNull(ExecutionStrategyParameters parameters) { - return Async.tryCatch(() -> { - Object nullValue = parameters.getNonNullFieldValidator().validate(parameters.getPath(), null); - return completedFuture(new ExecutionResultImpl(nullValue, null)); - }); + /** + * Called to complete a null value. + * + * @param parameters contains the parameters holding the fields to be executed and source object + * + * @return a {@link FieldValueInfo} + * + * @throws NonNullableFieldWasNullException inside a {@link CompletableFuture} if a non null field resolves to a null value + */ + private FieldValueInfo getFieldValueInfoForNull(ExecutionStrategyParameters parameters) { + Object fieldValue = completeValueForNull(parameters); + return new FieldValueInfo(NULL, fieldValue); + } + + /** + * Called to complete a null value. + * + * @param parameters contains the parameters holding the fields to be executed and source object + * + * @return a null value or a {@link CompletableFuture} exceptionally completed + * + * @throws NonNullableFieldWasNullException inside the {@link CompletableFuture} if a non-null field resolves to a null value + */ + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForNull(ExecutionStrategyParameters parameters) { + try { + return parameters.getNonNullFieldValidator().validate(parameters, null); + } catch (Exception e) { + return Async.exceptionallyCompletedFuture(e); + } } /** @@ -477,12 +769,12 @@ private CompletableFuture completeValueForNull(ExecutionStrateg protected FieldValueInfo completeValueForList(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { Iterable resultIterable = toIterable(executionContext, parameters, result); try { - resultIterable = parameters.getNonNullFieldValidator().validate(parameters.getPath(), resultIterable); + resultIterable = parameters.getNonNullFieldValidator().validate(parameters, resultIterable); } catch (NonNullableFieldWasNullException e) { - return FieldValueInfo.newFieldValueInfo(LIST).fieldValue(exceptionallyCompletedFuture(e)).build(); + return new FieldValueInfo(LIST, exceptionallyCompletedFuture(e)); } if (resultIterable == null) { - return FieldValueInfo.newFieldValueInfo(LIST).fieldValue(completedFuture(new ExecutionResultImpl(null, null))).build(); + return new FieldValueInfo(LIST, null); } return completeValueForList(executionContext, parameters, resultIterable); } @@ -499,69 +791,90 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, */ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Iterable iterableValues) { - Collection values = FpKit.toCollection(iterableValues); + OptionalInt size = FpKit.toSize(iterableValues); ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); - GraphQLFieldDefinition fieldDef = parameters.getExecutionStepInfo().getFieldDefinition(); - GraphQLObjectType fieldContainer = parameters.getExecutionStepInfo().getFieldContainer(); - InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, fieldDef, createExecutionStepInfo(executionContext, parameters, fieldDef, fieldContainer), values); + InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, () -> executionStepInfo, iterableValues); Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationContext completeListCtx = instrumentation.beginFieldListComplete( - instrumentationParams - ); + InstrumentationContext completeListCtx = nonNullCtx(instrumentation.beginFieldListCompletion( + instrumentationParams, executionContext.getInstrumentationState() + )); - List fieldValueInfos = new ArrayList<>(); + List fieldValueInfos = new ArrayList<>(size.orElse(1)); int index = 0; - for (Object item : values) { - ExecutionPath indexedPath = parameters.getPath().segment(index); + for (Object item : iterableValues) { + if (incrementAndCheckMaxNodesExceeded(executionContext)) { + return new FieldValueInfo(NULL, null, fieldValueInfos); + } - ExecutionStepInfo stepInfoForListElement = executionStepInfoFactory.newExecutionStepInfoForListElement(executionStepInfo, index); + ResultPath indexedPath = parameters.getPath().segment(index); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, stepInfoForListElement); + ExecutionStepInfo stepInfoForListElement = executionStepInfoFactory.newExecutionStepInfoForListElement(executionStepInfo, indexedPath); - int finalIndex = index; - FetchedValue value = unboxPossibleDataFetcherResult(executionContext, parameters, item); + Object fetchedValue = unboxPossibleDataFetcherResult(executionContext, parameters, item); - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(stepInfoForListElement) - .nonNullFieldValidator(nonNullableFieldValidator) - .listSize(values.size()) - .localContext(value.getLocalContext()) - .currentListIndex(finalIndex) - .path(indexedPath) - .source(value.getFetchedValue()) + ExecutionStrategyParameters newParameters = parameters.transform( + stepInfoForListElement, + indexedPath, + FetchedValue.getLocalContext(fetchedValue, parameters.getLocalContext()), + FetchedValue.getFetchedValue(fetchedValue) ); + fieldValueInfos.add(completeValue(executionContext, newParameters)); index++; } - CompletableFuture> resultsFuture = Async.each(fieldValueInfos, (item, i) -> item.getFieldValue()); - - CompletableFuture overallResult = new CompletableFuture<>(); - completeListCtx.onDispatched(overallResult); + Object listResults = Async.eachPolymorphic(fieldValueInfos, FieldValueInfo::getFieldValueObject); + Object listOrPromiseToList; + if (listResults instanceof CompletableFuture) { + @SuppressWarnings("unchecked") + CompletableFuture> resultsFuture = (CompletableFuture>) listResults; + CompletableFuture overallResult = new CompletableFuture<>(); + completeListCtx.onDispatched(); + overallResult.whenComplete(completeListCtx::onCompleted); + + resultsFuture.whenComplete((results, exception) -> { + exception = executionContext.possibleCancellation(exception); + + if (exception != null) { + handleValueException(overallResult, exception, executionContext); + return; + } + List completedResults = new ArrayList<>(results.size()); + completedResults.addAll(results); + overallResult.complete(completedResults); + }); + listOrPromiseToList = overallResult; + } else { + completeListCtx.onCompleted(listResults, null); + listOrPromiseToList = listResults; + } + return new FieldValueInfo(LIST, listOrPromiseToList, fieldValueInfos); + } - resultsFuture.whenComplete((results, exception) -> { - if (exception != null) { - ExecutionResult executionResult = handleNonNullException(executionContext, overallResult, exception); - completeListCtx.onCompleted(executionResult, exception); - return; + protected void handleValueException(CompletableFuture overallResult, Throwable e, ExecutionContext executionContext) { + Throwable underlyingException = e; + if (e instanceof CompletionException) { + underlyingException = e.getCause(); + } + if (underlyingException instanceof NonNullableFieldWasNullException) { + assertNonNullFieldPrecondition((NonNullableFieldWasNullException) underlyingException, overallResult); + if (!overallResult.isDone()) { + overallResult.complete(null); } - List completedResults = new ArrayList<>(); - for (ExecutionResult completedValue : results) { - completedResults.add(completedValue.getData()); + } else if (underlyingException instanceof AbortExecutionException) { + AbortExecutionException abortException = (AbortExecutionException) underlyingException; + executionContext.addError(abortException); + if (!overallResult.isDone()) { + overallResult.complete(null); } - ExecutionResultImpl executionResult = new ExecutionResultImpl(completedResults, null); - overallResult.complete(executionResult); - }); - overallResult.whenComplete(completeListCtx::onCompleted); - - return FieldValueInfo.newFieldValueInfo(LIST) - .fieldValue(overallResult) - .fieldValueInfos(fieldValueInfos) - .build(); + } else { + overallResult.completeExceptionally(e); + } } + /** * Called to turn an object into a scalar value according to the {@link GraphQLScalarType} by asking that scalar type to coerce the object * into a valid value @@ -571,139 +884,140 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, * @param scalarType the type of the scalar * @param result the result to be coerced * - * @return a promise to an {@link ExecutionResult} + * @return a materialized scalar value or exceptionally completed {@link CompletableFuture} if there is a problem */ - protected CompletableFuture completeValueForScalar(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLScalarType scalarType, Object result) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForScalar(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLScalarType scalarType, Object result) { Object serialized; try { - serialized = scalarType.getCoercing().serialize(result); + serialized = scalarType.getCoercing().serialize(result, executionContext.getGraphQLContext(), executionContext.getLocale()); } catch (CoercingSerializeException e) { serialized = handleCoercionProblem(executionContext, parameters, e); } - // TODO: fix that: this should not be handled here - //6.6.1 http://facebook.github.io/graphql/#sec-Field-entries - if (serialized instanceof Double && ((Double) serialized).isNaN()) { - serialized = null; - } try { - serialized = parameters.getNonNullFieldValidator().validate(parameters.getPath(), serialized); + serialized = parameters.getNonNullFieldValidator().validate(parameters, serialized); } catch (NonNullableFieldWasNullException e) { return exceptionallyCompletedFuture(e); } - return completedFuture(new ExecutionResultImpl(serialized, null)); + return serialized; } /** - * Called to turn an object into a enum value according to the {@link GraphQLEnumType} by asking that enum type to coerce the object into a valid value + * Called to turn an object into an enum value according to the {@link GraphQLEnumType} by asking that enum type to coerce the object into a valid value * * @param executionContext contains the top level execution parameters * @param parameters contains the parameters holding the fields to be executed and source object * @param enumType the type of the enum * @param result the result to be coerced * - * @return a promise to an {@link ExecutionResult} + * @return a materialized enum value or exceptionally completed {@link CompletableFuture} if there is a problem */ - protected CompletableFuture completeValueForEnum(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLEnumType enumType, Object result) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForEnum(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLEnumType enumType, Object result) { Object serialized; try { - serialized = enumType.serialize(result); + serialized = enumType.serialize(result, executionContext.getGraphQLContext(), executionContext.getLocale()); } catch (CoercingSerializeException e) { serialized = handleCoercionProblem(executionContext, parameters, e); } try { - serialized = parameters.getNonNullFieldValidator().validate(parameters.getPath(), serialized); + serialized = parameters.getNonNullFieldValidator().validate(parameters, serialized); } catch (NonNullableFieldWasNullException e) { return exceptionallyCompletedFuture(e); } - return completedFuture(new ExecutionResultImpl(serialized, null)); + return serialized; } /** - * Called to turn an java object value into an graphql object value + * Called to turn a java object value into an graphql object value * * @param executionContext contains the top level execution parameters * @param parameters contains the parameters holding the fields to be executed and source object * @param resolvedObjectType the resolved object type * @param result the result to be coerced * - * @return a promise to an {@link ExecutionResult} + * @return a {@link CompletableFuture} promise to a map of object field values or a materialized map of object field values */ - protected CompletableFuture completeValueForObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLObjectType resolvedObjectType, Object result) { + @DuckTyped(shape = "CompletableFuture> | Map") + protected Object completeValueForObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLObjectType resolvedObjectType, Object result) { ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); FieldCollectorParameters collectorParameters = newParameters() .schema(executionContext.getGraphQLSchema()) .objectType(resolvedObjectType) .fragments(executionContext.getFragmentsByName()) - .variables(executionContext.getVariables()) + .variables(executionContext.getCoercedVariables().toMap()) + .graphQLContext(executionContext.getGraphQLContext()) .build(); - MergedSelectionSet subFields = fieldCollector.collectFields(collectorParameters, parameters.getField()); + MergedSelectionSet subFields = fieldCollector.collectFields( + collectorParameters, + parameters.getField(), + executionContext.hasIncrementalSupport() + ); ExecutionStepInfo newExecutionStepInfo = executionStepInfo.changeTypeWithPreservedNonNull(resolvedObjectType); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, newExecutionStepInfo); - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(newExecutionStepInfo) - .fields(subFields) - .nonNullFieldValidator(nonNullableFieldValidator) - .source(result) - ); + ExecutionStrategyParameters newParameters = parameters.transform(newExecutionStepInfo, + subFields, + result); // Calling this from the executionContext to ensure we shift back from mutation strategy to the query strategy. - - return executionContext.getQueryStrategy().execute(executionContext, newParameters); + return executionContext.getQueryStrategy().executeObject(executionContext, newParameters); } @SuppressWarnings("SameReturnValue") private Object handleCoercionProblem(ExecutionContext context, ExecutionStrategyParameters parameters, CoercingSerializeException e) { SerializationError error = new SerializationError(parameters.getPath(), e); - logNotSafe.warn(error.getMessage(), e); - context.addError(error); - parameters.deferredErrorSupport().onError(error); + addErrorToRightContext(error, parameters, context); return null; } - - /** - * Converts an object that is known to should be an Iterable into one - * - * @param result the result object - * - * @return an Iterable from that object - * - * @throws java.lang.ClassCastException if its not an Iterable - */ - @SuppressWarnings("unchecked") - protected Iterable toIterable(Object result) { - return FpKit.toCollection(result); - } - protected GraphQLObjectType resolveType(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLType fieldType) { - return resolvedType.resolveType(executionContext, parameters.getField(), parameters.getSource(), parameters.getArguments(), fieldType); + // we can avoid a method call and type resolver environment allocation if we know it's an object type + if (fieldType instanceof GraphQLObjectType) { + return (GraphQLObjectType) fieldType; + } + return resolvedType.resolveType(executionContext, parameters.getField(), parameters.getSource(), parameters.getExecutionStepInfo(), fieldType, parameters.getLocalContext()); } - protected Iterable toIterable(ExecutionContext context, ExecutionStrategyParameters parameters, Object result) { - if (result.getClass().isArray() || result instanceof Iterable) { - return toIterable(result); + if (FpKit.isIterable(result)) { + return FpKit.toIterable(result); } - handleTypeMismatchProblem(context, parameters, result); + handleTypeMismatchProblem(context, parameters); return null; } - private void handleTypeMismatchProblem(ExecutionContext context, ExecutionStrategyParameters parameters, Object result) { + private void handleTypeMismatchProblem(ExecutionContext context, ExecutionStrategyParameters parameters) { TypeMismatchError error = new TypeMismatchError(parameters.getPath(), parameters.getExecutionStepInfo().getUnwrappedNonNullType()); - logNotSafe.warn("{} got {}", error.getMessage(), result.getClass()); - context.addError(error); - parameters.deferredErrorSupport().onError(error); + addErrorToRightContext(error, parameters, context); } + /** + * This has a side effect of incrementing the number of nodes returned and also checks + * if max nodes were exceeded for this request. + * + * @param executionContext the execution context in play + * + * @return true if max nodes were exceeded + */ + private boolean incrementAndCheckMaxNodesExceeded(ExecutionContext executionContext) { + int resultNodesCount = executionContext.getResultNodesInfo().incrementAndGetResultNodesCount(); + Integer maxNodes; + if ((maxNodes = executionContext.getGraphQLContext().get(MAX_RESULT_NODES)) != null) { + if (resultNodesCount > maxNodes) { + executionContext.getResultNodesInfo().maxResultNodesExceeded(); + return true; + } + } + return false; + } /** * Called to discover the field definition give the current parameters and the AST {@link Field} @@ -715,7 +1029,7 @@ private void handleTypeMismatchProblem(ExecutionContext context, ExecutionStrate * @return a {@link GraphQLFieldDefinition} */ protected GraphQLFieldDefinition getFieldDef(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Field field) { - GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); + GraphQLObjectType parentType = parameters.getExecutionStepInfo().getUnwrappedNonNullTypeAs(); return getFieldDef(executionContext.getGraphQLSchema(), parentType, field); } @@ -729,11 +1043,11 @@ protected GraphQLFieldDefinition getFieldDef(ExecutionContext executionContext, * @return a {@link GraphQLFieldDefinition} */ protected GraphQLFieldDefinition getFieldDef(GraphQLSchema schema, GraphQLObjectType parentType, Field field) { - return Introspection.getFieldDef(schema, parentType, field.getName()); + return Introspection.getFieldDefinition(schema, parentType, field.getName()); } /** - * See (http://facebook.github.io/graphql/#sec-Errors-and-Non-Nullability), + * See (...), *

    * If a non nullable child field type actually resolves to a null value and the parent type is nullable * then the parent must in fact become null @@ -762,7 +1076,7 @@ protected void assertNonNullFieldPrecondition(NonNullableFieldWasNullException e protected ExecutionResult handleNonNullException(ExecutionContext executionContext, CompletableFuture result, Throwable e) { ExecutionResult executionResult = null; - List errors = new ArrayList<>(executionContext.getErrors()); + List errors = ImmutableList.copyOf(executionContext.getErrors()); Throwable underlyingException = e; if (e instanceof CompletionException) { underlyingException = e.getCause(); @@ -783,7 +1097,6 @@ protected ExecutionResult handleNonNullException(ExecutionContext executionConte return executionResult; } - /** * Builds the type info hierarchy for the current field * @@ -798,39 +1111,31 @@ protected ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionCo ExecutionStrategyParameters parameters, GraphQLFieldDefinition fieldDefinition, GraphQLObjectType fieldContainer) { - GraphQLOutputType fieldType = fieldDefinition.getType(); - MergedField field = parameters.getField(); - List fieldArgs = field.getArguments(); - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDefinition.getArguments(), fieldArgs, executionContext.getVariables()); - - return newExecutionStepInfo() - .type(fieldType) - .fieldDefinition(fieldDefinition) - .fieldContainer(fieldContainer) - .field(field) - .path(parameters.getPath()) - .parentInfo(parameters.getExecutionStepInfo()) - .arguments(argumentValues) - .build(); - + return executionStepInfoFactory.createExecutionStepInfo(executionContext, + parameters, + fieldDefinition, + fieldContainer); } - - @Internal - public static String mkNameForPath(Field currentField) { - return mkNameForPath(Collections.singletonList(currentField)); + private Supplier createExecutionStepInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField()); + return FpKit.intraThreadMemoize(() -> createExecutionStepInfo(executionContext, parameters, fieldDef, null)); } - @Internal - public static String mkNameForPath(MergedField mergedField) { - return mkNameForPath(mergedField.getFields()); + // Errors that result from the execution of deferred fields are kept in the deferred context only. + private static void addErrorToRightContext(GraphQLError error, ExecutionStrategyParameters parameters, ExecutionContext executionContext) { + if (parameters.getDeferredCallContext() != null) { + parameters.getDeferredCallContext().addError(error); + } else { + executionContext.addError(error); + } } - - @Internal - public static String mkNameForPath(List currentField) { - Field field = currentField.get(0); - return field.getAlias() != null ? field.getAlias() : field.getName(); + private static void addErrorsToRightContext(List errors, ExecutionStrategyParameters parameters, ExecutionContext executionContext) { + if (parameters.getDeferredCallContext() != null) { + parameters.getDeferredCallContext().addErrors(errors); + } else { + executionContext.addErrors(errors); + } } } diff --git a/src/main/java/graphql/execution/ExecutionStrategyParameters.java b/src/main/java/graphql/execution/ExecutionStrategyParameters.java index 79ed28ff71..71d7fd9f8b 100644 --- a/src/main/java/graphql/execution/ExecutionStrategyParameters.java +++ b/src/main/java/graphql/execution/ExecutionStrategyParameters.java @@ -1,10 +1,10 @@ package graphql.execution; -import graphql.Assert; +import graphql.Internal; import graphql.PublicApi; -import graphql.execution.defer.DeferredErrorSupport; +import graphql.execution.incremental.AlternativeCallContext; +import org.jspecify.annotations.Nullable; -import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; @@ -17,41 +17,32 @@ public class ExecutionStrategyParameters { private final ExecutionStepInfo executionStepInfo; private final Object source; private final Object localContext; - private final Map arguments; private final MergedSelectionSet fields; private final NonNullableFieldValidator nonNullableFieldValidator; - private final ExecutionPath path; + private final ResultPath path; private final MergedField currentField; - private final int listSize; - private final int currentListIndex; private final ExecutionStrategyParameters parent; - private final DeferredErrorSupport deferredErrorSupport; + private final AlternativeCallContext alternativeCallContext; private ExecutionStrategyParameters(ExecutionStepInfo executionStepInfo, Object source, Object localContext, MergedSelectionSet fields, - Map arguments, NonNullableFieldValidator nonNullableFieldValidator, - ExecutionPath path, + ResultPath path, MergedField currentField, - int listSize, - int currentListIndex, ExecutionStrategyParameters parent, - DeferredErrorSupport deferredErrorSupport) { + AlternativeCallContext alternativeCallContext) { this.executionStepInfo = assertNotNull(executionStepInfo, "executionStepInfo is null"); this.localContext = localContext; this.fields = assertNotNull(fields, "fields is null"); this.source = source; - this.arguments = arguments; - this.nonNullableFieldValidator = nonNullableFieldValidator; + this.nonNullableFieldValidator = assertNotNull(nonNullableFieldValidator, "requires a NonNullValidator");; this.path = path; this.currentField = currentField; - this.listSize = listSize; - this.currentListIndex = currentListIndex; this.parent = parent; - this.deferredErrorSupport = deferredErrorSupport; + this.alternativeCallContext = alternativeCallContext; } public ExecutionStepInfo getExecutionStepInfo() { @@ -66,15 +57,11 @@ public MergedSelectionSet getFields() { return fields; } - public Map getArguments() { - return arguments; - } - public NonNullableFieldValidator getNonNullFieldValidator() { return nonNullableFieldValidator; } - public ExecutionPath getPath() { + public ResultPath getPath() { return path; } @@ -82,20 +69,43 @@ public Object getLocalContext() { return localContext; } - public int getListSize() { - return listSize; - } - - public int getCurrentListIndex() { - return currentListIndex; - } - public ExecutionStrategyParameters getParent() { return parent; } - public DeferredErrorSupport deferredErrorSupport() { - return deferredErrorSupport; + /** + * Returns the deferred call context if we're in the scope of a deferred call. + * A new DeferredCallContext is created for each @defer block, and is passed down to all fields within the deferred call. + * + *

    +     *     query {
    +     *        ... @defer {
    +     *            field1 {        # new DeferredCallContext created here
    +     *                field1a     # DeferredCallContext passed down to this field
    +     *            }
    +     *        }
    +     *
    +     *        ... @defer {
    +     *            field2          # new DeferredCallContext created here
    +     *        }
    +     *     }
    +     * 
    + * + * @return the deferred call context or null if we're not in the scope of a deferred call + */ + @Nullable + @Internal + public AlternativeCallContext getDeferredCallContext() { + return alternativeCallContext; + } + + /** + * Returns true if we're in the scope of a deferred call. + * + * @return true if we're in the scope of a deferred call + */ + public boolean isInDeferredContext() { + return alternativeCallContext != null; } /** @@ -107,6 +117,81 @@ public MergedField getField() { return currentField; } + @Internal + ExecutionStrategyParameters transform(MergedField currentField, + ResultPath path) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + alternativeCallContext); + } + + @Internal + ExecutionStrategyParameters transform(ExecutionStepInfo executionStepInfo, + MergedSelectionSet fields, + Object source) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + alternativeCallContext); + } + + @Internal + ExecutionStrategyParameters transform(ExecutionStepInfo executionStepInfo, + ResultPath path, + Object localContext, + Object source) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + alternativeCallContext); + } + + @Internal + ExecutionStrategyParameters transform(ExecutionStepInfo executionStepInfo, + Object localContext, + Object source) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + alternativeCallContext); + } + + @Internal + ExecutionStrategyParameters transform(MergedField currentField, + ResultPath path, + ExecutionStrategyParameters parent) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + alternativeCallContext); + } + public ExecutionStrategyParameters transform(Consumer builderConsumer) { Builder builder = newParameters(this); builderConsumer.accept(builder); @@ -132,14 +217,11 @@ public static class Builder { Object source; Object localContext; MergedSelectionSet fields; - Map arguments; NonNullableFieldValidator nonNullableFieldValidator; - ExecutionPath path = ExecutionPath.rootPath(); + ResultPath path = ResultPath.rootPath(); MergedField currentField; - int listSize; - int currentListIndex; ExecutionStrategyParameters parent; - DeferredErrorSupport deferredErrorSupport = new DeferredErrorSupport(); + AlternativeCallContext alternativeCallContext; /** * @see ExecutionStrategyParameters#newParameters() @@ -155,14 +237,11 @@ private Builder(ExecutionStrategyParameters oldParameters) { this.source = oldParameters.source; this.localContext = oldParameters.localContext; this.fields = oldParameters.fields; - this.arguments = oldParameters.arguments; this.nonNullableFieldValidator = oldParameters.nonNullableFieldValidator; this.currentField = oldParameters.currentField; - this.deferredErrorSupport = oldParameters.deferredErrorSupport; + this.alternativeCallContext = oldParameters.alternativeCallContext; this.path = oldParameters.path; this.parent = oldParameters.parent; - this.listSize = oldParameters.listSize; - this.currentListIndex = oldParameters.currentListIndex; } public Builder executionStepInfo(ExecutionStepInfo executionStepInfo) { @@ -195,43 +274,28 @@ public Builder localContext(Object localContext) { return this; } - public Builder arguments(Map arguments) { - this.arguments = arguments; - return this; - } - public Builder nonNullFieldValidator(NonNullableFieldValidator nonNullableFieldValidator) { - this.nonNullableFieldValidator = Assert.assertNotNull(nonNullableFieldValidator, "requires a NonNullValidator"); + this.nonNullableFieldValidator = assertNotNull(nonNullableFieldValidator, "requires a NonNullValidator"); return this; } - public Builder path(ExecutionPath path) { + public Builder path(ResultPath path) { this.path = path; return this; } - public Builder listSize(int listSize) { - this.listSize = listSize; - return this; - } - - public Builder currentListIndex(int currentListIndex) { - this.currentListIndex = currentListIndex; - return this; - } - public Builder parent(ExecutionStrategyParameters parent) { this.parent = parent; return this; } - public Builder deferredErrorSupport(DeferredErrorSupport deferredErrorSupport) { - this.deferredErrorSupport = deferredErrorSupport; + public Builder deferredCallContext(AlternativeCallContext alternativeCallContext) { + this.alternativeCallContext = alternativeCallContext; return this; } public ExecutionStrategyParameters build() { - return new ExecutionStrategyParameters(executionStepInfo, source, localContext, fields, arguments, nonNullableFieldValidator, path, currentField, listSize, currentListIndex, parent, deferredErrorSupport); + return new ExecutionStrategyParameters(executionStepInfo, source, localContext, fields, nonNullableFieldValidator, path, currentField, parent, alternativeCallContext); } } } diff --git a/src/main/java/graphql/execution/ExecutorServiceExecutionStrategy.java b/src/main/java/graphql/execution/ExecutorServiceExecutionStrategy.java deleted file mode 100644 index e8a655011d..0000000000 --- a/src/main/java/graphql/execution/ExecutorServiceExecutionStrategy.java +++ /dev/null @@ -1,115 +0,0 @@ -package graphql.execution; - -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.GraphQLException; -import graphql.PublicApi; -import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.concurrent.Callable; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; - -/** - * - *

    Deprecation Notice : This execution strategy does not support all of the graphql-java capabilities - * such as data loader or @defer fields. Since its so easy to create a data fetcher that uses - * {@link java.util.concurrent.CompletableFuture#supplyAsync(java.util.function.Supplier, java.util.concurrent.Executor)} - * to make field fetching happen off thread we recommend that you use that instead of this class. This class - * will be removed in a future version. - *

    - * - *

    ExecutorServiceExecutionStrategy uses an {@link ExecutorService} to parallelize the resolve.

    - * - * Due to the nature of {@link #execute(ExecutionContext, ExecutionStrategyParameters)} implementation, {@link ExecutorService} - * MUST have the following 2 characteristics: - *
      - *
    • 1. The underlying {@link java.util.concurrent.ThreadPoolExecutor} MUST have a reasonable {@code maximumPoolSize} - *
    • 2. The underlying {@link java.util.concurrent.ThreadPoolExecutor} SHALL NOT use its task queue. - *
    - * - *

    Failure to follow 1. and 2. can result in a very large number of threads created or hanging. (deadlock)

    - * - * See {@code graphql.execution.ExecutorServiceExecutionStrategyTest} for example usage. - * - * @deprecated Use {@link graphql.execution.AsyncExecutionStrategy} and {@link java.util.concurrent.CompletableFuture#supplyAsync(java.util.function.Supplier, java.util.concurrent.Executor)} - * in your data fetchers instead. - */ -@PublicApi -@Deprecated -public class ExecutorServiceExecutionStrategy extends ExecutionStrategy { - - final ExecutorService executorService; - - public ExecutorServiceExecutionStrategy(ExecutorService executorService) { - this(executorService, new SimpleDataFetcherExceptionHandler()); - } - - public ExecutorServiceExecutionStrategy(ExecutorService executorService, DataFetcherExceptionHandler dataFetcherExceptionHandler) { - super(dataFetcherExceptionHandler); - this.executorService = executorService; - } - - - @Override - public CompletableFuture execute(final ExecutionContext executionContext, final ExecutionStrategyParameters parameters) { - if (executorService == null) { - return new AsyncExecutionStrategy().execute(executionContext, parameters); - } - - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - InstrumentationContext executionStrategyCtx = instrumentation.beginExecutionStrategy(instrumentationParameters); - - MergedSelectionSet fields = parameters.getFields(); - Map>> futures = new LinkedHashMap<>(); - for (String fieldName : fields.keySet()) { - final MergedField currentField = fields.getSubField(fieldName); - - ExecutionPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath)); - - Callable> resolveField = () -> resolveField(executionContext, newParameters); - futures.put(fieldName, executorService.submit(resolveField)); - } - - CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(overallResult); - - try { - Map results = new LinkedHashMap<>(); - for (String fieldName : futures.keySet()) { - ExecutionResult executionResult; - try { - executionResult = futures.get(fieldName).get().join(); - } catch (CompletionException e) { - if (e.getCause() instanceof NonNullableFieldWasNullException) { - assertNonNullFieldPrecondition((NonNullableFieldWasNullException) e.getCause()); - results = null; - break; - } else { - throw e; - } - } - results.put(fieldName, executionResult != null ? executionResult.getData() : null); - } - - ExecutionResultImpl executionResult = new ExecutionResultImpl(results, executionContext.getErrors()); - overallResult.complete(executionResult); - - overallResult = overallResult.whenComplete(executionStrategyCtx::onCompleted); - return overallResult; - } catch (InterruptedException | ExecutionException e) { - executionStrategyCtx.onCompleted(null, e); - throw new GraphQLException(e); - } - } -} diff --git a/src/main/java/graphql/execution/FetchedValue.java b/src/main/java/graphql/execution/FetchedValue.java index e7f4a3c07b..fe56fa0a10 100644 --- a/src/main/java/graphql/execution/FetchedValue.java +++ b/src/main/java/graphql/execution/FetchedValue.java @@ -1,23 +1,58 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; import graphql.GraphQLError; -import graphql.Internal; +import graphql.PublicApi; +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; -import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; -@Internal +/** + * Note: This MAY be returned by {@link InstrumentationFieldCompleteParameters#getFetchedObject()} + * and therefore part of the public despite never used in a method signature. + */ +@PublicApi public class FetchedValue { private final Object fetchedValue; - private final Object rawFetchedValue; private final Object localContext; - private final List errors; + private final ImmutableList errors; + + /** + * This allows you to get to the underlying fetched value depending on whether the source + * value is a {@link FetchedValue} or not + * + * @param sourceValue the source value in play + * + * @return the {@link FetchedValue#getFetchedValue()} if its wrapped otherwise the source value itself + */ + public static Object getFetchedValue(Object sourceValue) { + if (sourceValue instanceof FetchedValue) { + return ((FetchedValue) sourceValue).fetchedValue; + } else { + return sourceValue; + } + } + + /** + * This allows you to get to the local context depending on whether the source + * value is a {@link FetchedValue} or not + * + * @param sourceValue the source value in play + * @param defaultLocalContext the default local context to use + * + * @return the {@link FetchedValue#getFetchedValue()} if its wrapped otherwise the default local context + */ + public static Object getLocalContext(Object sourceValue, Object defaultLocalContext) { + if (sourceValue instanceof FetchedValue) { + return ((FetchedValue) sourceValue).localContext; + } else { + return defaultLocalContext; + } + } - private FetchedValue(Object fetchedValue, Object rawFetchedValue, List errors, Object localContext) { + public FetchedValue(Object fetchedValue, List errors, Object localContext) { this.fetchedValue = fetchedValue; - this.rawFetchedValue = rawFetchedValue; - this.errors = errors; + this.errors = ImmutableList.copyOf(errors); this.localContext = localContext; } @@ -28,76 +63,21 @@ public Object getFetchedValue() { return fetchedValue; } - public Object getRawFetchedValue() { - return rawFetchedValue; - } - public List getErrors() { - return new ArrayList<>(errors); + return errors; } public Object getLocalContext() { return localContext; } - public FetchedValue transform(Consumer builderConsumer) { - Builder builder = newFetchedValue(this); - builderConsumer.accept(builder); - return builder.build(); - } - @Override public String toString() { return "FetchedValue{" + "fetchedValue=" + fetchedValue + - ", rawFetchedValue=" + rawFetchedValue + ", localContext=" + localContext + ", errors=" + errors + '}'; } - public static Builder newFetchedValue() { - return new Builder(); - } - - public static Builder newFetchedValue(FetchedValue otherValue) { - return new Builder() - .fetchedValue(otherValue.getFetchedValue()) - .rawFetchedValue(otherValue.getRawFetchedValue()) - .errors(otherValue.getErrors()) - .localContext(otherValue.getLocalContext()) - ; - } - - public static class Builder { - - private Object fetchedValue; - private Object rawFetchedValue; - private Object localContext; - private List errors = new ArrayList<>(); - - public Builder fetchedValue(Object fetchedValue) { - this.fetchedValue = fetchedValue; - return this; - } - - public Builder rawFetchedValue(Object rawFetchedValue) { - this.rawFetchedValue = rawFetchedValue; - return this; - } - - public Builder localContext(Object localContext) { - this.localContext = localContext; - return this; - } - - public Builder errors(List errors) { - this.errors = errors; - return this; - } - - public FetchedValue build() { - return new FetchedValue(fetchedValue, rawFetchedValue, errors, localContext); - } - } } \ No newline at end of file diff --git a/src/main/java/graphql/execution/FieldCollector.java b/src/main/java/graphql/execution/FieldCollector.java index 22f893f64f..9a63e009b3 100644 --- a/src/main/java/graphql/execution/FieldCollector.java +++ b/src/main/java/graphql/execution/FieldCollector.java @@ -2,6 +2,9 @@ import graphql.Internal; +import graphql.execution.conditional.ConditionalNodes; +import graphql.execution.incremental.DeferredExecution; +import graphql.execution.incremental.IncrementalUtils; import graphql.language.Field; import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; @@ -13,17 +16,18 @@ import graphql.schema.GraphQLType; import graphql.schema.GraphQLUnionType; -import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import static graphql.execution.MergedSelectionSet.newMergedSelectionSet; import static graphql.execution.TypeFromAST.getTypeFromAST; /** * A field collector can iterate over field selection sets and build out the sub fields that have been selected, - * expanding named and inline fragments as it goes.s + * expanding named and inline fragments as it goes. */ @Internal public class FieldCollector { @@ -31,14 +35,17 @@ public class FieldCollector { private final ConditionalNodes conditionalNodes = new ConditionalNodes(); public MergedSelectionSet collectFields(FieldCollectorParameters parameters, MergedField mergedField) { + return collectFields(parameters, mergedField, false); + } + + public MergedSelectionSet collectFields(FieldCollectorParameters parameters, MergedField mergedField, boolean incrementalSupport) { Map subFields = new LinkedHashMap<>(); - List visitedFragments = new ArrayList<>(); - for (Field field : mergedField.getFields()) { - if (field.getSelectionSet() == null) { - continue; + Set visitedFragments = new LinkedHashSet<>(); + mergedField.forEach(field -> { + if (field.getSelectionSet() != null) { + this.collectFields(parameters, field.getSelectionSet(), visitedFragments, subFields, null, incrementalSupport); } - this.collectFields(parameters, field.getSelectionSet(), visitedFragments, subFields); - } + }); return newMergedSelectionSet().subFields(subFields).build(); } @@ -51,75 +58,96 @@ public MergedSelectionSet collectFields(FieldCollectorParameters parameters, Mer * @return a map of the sub field selections */ public MergedSelectionSet collectFields(FieldCollectorParameters parameters, SelectionSet selectionSet) { + return collectFields(parameters, selectionSet, false); + } + + public MergedSelectionSet collectFields(FieldCollectorParameters parameters, SelectionSet selectionSet, boolean incrementalSupport) { Map subFields = new LinkedHashMap<>(); - List visitedFragments = new ArrayList<>(); - this.collectFields(parameters, selectionSet, visitedFragments, subFields); + Set visitedFragments = new LinkedHashSet<>(); + this.collectFields(parameters, selectionSet, visitedFragments, subFields, null, incrementalSupport); return newMergedSelectionSet().subFields(subFields).build(); } - private void collectFields(FieldCollectorParameters parameters, SelectionSet selectionSet, List visitedFragments, Map fields) { + private void collectFields(FieldCollectorParameters parameters, SelectionSet selectionSet, Set visitedFragments, Map fields, DeferredExecution deferredExecution, boolean incrementalSupport) { for (Selection selection : selectionSet.getSelections()) { if (selection instanceof Field) { - collectField(parameters, fields, (Field) selection); + collectField(parameters, fields, (Field) selection, deferredExecution); } else if (selection instanceof InlineFragment) { - collectInlineFragment(parameters, visitedFragments, fields, (InlineFragment) selection); + collectInlineFragment(parameters, visitedFragments, fields, (InlineFragment) selection, incrementalSupport); } else if (selection instanceof FragmentSpread) { - collectFragmentSpread(parameters, visitedFragments, fields, (FragmentSpread) selection); + collectFragmentSpread(parameters, visitedFragments, fields, (FragmentSpread) selection, incrementalSupport); } } } - private void collectFragmentSpread(FieldCollectorParameters parameters, List visitedFragments, Map fields, FragmentSpread fragmentSpread) { + private void collectFragmentSpread(FieldCollectorParameters parameters, Set visitedFragments, Map fields, FragmentSpread fragmentSpread, boolean incrementalSupport) { if (visitedFragments.contains(fragmentSpread.getName())) { return; } - if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentSpread.getDirectives())) { + if (!conditionalNodes.shouldInclude(fragmentSpread, + parameters.getVariables(), + parameters.getGraphQLSchema(), + parameters.getGraphQLContext())) { return; } visitedFragments.add(fragmentSpread.getName()); FragmentDefinition fragmentDefinition = parameters.getFragmentsByName().get(fragmentSpread.getName()); - if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentDefinition.getDirectives())) { + if (!conditionalNodes.shouldInclude(fragmentDefinition, + parameters.getVariables(), + parameters.getGraphQLSchema(), + parameters.getGraphQLContext())) { return; } if (!doesFragmentConditionMatch(parameters, fragmentDefinition)) { return; } - collectFields(parameters, fragmentDefinition.getSelectionSet(), visitedFragments, fields); + + DeferredExecution deferredExecution = incrementalSupport ? IncrementalUtils.createDeferredExecution( + parameters.getVariables(), + fragmentSpread.getDirectives(), + DeferredExecution::new + ) : null; + + collectFields(parameters, fragmentDefinition.getSelectionSet(), visitedFragments, fields, deferredExecution, incrementalSupport); } - private void collectInlineFragment(FieldCollectorParameters parameters, List visitedFragments, Map fields, InlineFragment inlineFragment) { - if (!conditionalNodes.shouldInclude(parameters.getVariables(), inlineFragment.getDirectives()) || + private void collectInlineFragment(FieldCollectorParameters parameters, Set visitedFragments, Map fields, InlineFragment inlineFragment, boolean incrementalSupport) { + if (!conditionalNodes.shouldInclude(inlineFragment, + parameters.getVariables(), + parameters.getGraphQLSchema(), + parameters.getGraphQLContext()) || !doesFragmentConditionMatch(parameters, inlineFragment)) { return; } - collectFields(parameters, inlineFragment.getSelectionSet(), visitedFragments, fields); + + DeferredExecution deferredExecution = incrementalSupport ? IncrementalUtils.createDeferredExecution( + parameters.getVariables(), + inlineFragment.getDirectives(), + DeferredExecution::new + ) : null; + + collectFields(parameters, inlineFragment.getSelectionSet(), visitedFragments, fields, deferredExecution, incrementalSupport); } - private void collectField(FieldCollectorParameters parameters, Map fields, Field field) { - if (!conditionalNodes.shouldInclude(parameters.getVariables(), field.getDirectives())) { + private void collectField(FieldCollectorParameters parameters, Map fields, Field field, DeferredExecution deferredExecution) { + if (!conditionalNodes.shouldInclude(field, + parameters.getVariables(), + parameters.getGraphQLSchema(), + parameters.getGraphQLContext())) { return; } - String name = getFieldEntryKey(field); + String name = field.getResultKey(); if (fields.containsKey(name)) { - MergedField curFields = fields.get(name); - fields.put(name, curFields.transform(builder -> builder.addField(field))); + MergedField currentMergedField = fields.get(name); + fields.put(name, currentMergedField.newMergedFieldWith(field,deferredExecution)); } else { - fields.put(name, MergedField.newMergedField(field).build()); + fields.put(name, MergedField.newSingletonMergedField(field, deferredExecution)); } } - private String getFieldEntryKey(Field field) { - if (field.getAlias() != null) { - return field.getAlias(); - } else { - return field.getName(); - } - } - - private boolean doesFragmentConditionMatch(FieldCollectorParameters parameters, InlineFragment inlineFragment) { if (inlineFragment.getTypeCondition() == null) { return true; diff --git a/src/main/java/graphql/execution/FieldCollectorParameters.java b/src/main/java/graphql/execution/FieldCollectorParameters.java index 9c3eacb289..75dafc1eff 100644 --- a/src/main/java/graphql/execution/FieldCollectorParameters.java +++ b/src/main/java/graphql/execution/FieldCollectorParameters.java @@ -1,12 +1,12 @@ package graphql.execution; import graphql.Assert; +import graphql.GraphQLContext; import graphql.Internal; import graphql.language.FragmentDefinition; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; -import java.util.LinkedHashMap; import java.util.Map; /** @@ -18,6 +18,7 @@ public class FieldCollectorParameters { private final Map fragmentsByName; private final Map variables; private final GraphQLObjectType objectType; + private final GraphQLContext graphQLContext; public GraphQLSchema getGraphQLSchema() { return graphQLSchema; @@ -35,11 +36,16 @@ public GraphQLObjectType getObjectType() { return objectType; } - private FieldCollectorParameters(GraphQLSchema graphQLSchema, Map variables, Map fragmentsByName, GraphQLObjectType objectType) { - this.fragmentsByName = fragmentsByName; - this.graphQLSchema = graphQLSchema; - this.variables = variables; - this.objectType = objectType; + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + private FieldCollectorParameters(Builder builder) { + this.fragmentsByName = builder.fragmentsByName; + this.graphQLSchema = builder.graphQLSchema; + this.variables = builder.variables; + this.objectType = builder.objectType; + this.graphQLContext = builder.graphQLContext; } public static Builder newParameters() { @@ -48,9 +54,10 @@ public static Builder newParameters() { public static class Builder { private GraphQLSchema graphQLSchema; - private final Map fragmentsByName = new LinkedHashMap<>(); - private final Map variables = new LinkedHashMap<>(); + private Map fragmentsByName; + private Map variables; private GraphQLObjectType objectType; + private GraphQLContext graphQLContext = GraphQLContext.getDefault(); /** * @see FieldCollectorParameters#newParameters() @@ -69,19 +76,24 @@ public Builder objectType(GraphQLObjectType objectType) { return this; } + public Builder graphQLContext(GraphQLContext graphQLContext) { + this.graphQLContext = graphQLContext; + return this; + } + public Builder fragments(Map fragmentsByName) { - this.fragmentsByName.putAll(fragmentsByName); + this.fragmentsByName = fragmentsByName; return this; } public Builder variables(Map variables) { - this.variables.putAll(variables); + this.variables = variables; return this; } public FieldCollectorParameters build() { Assert.assertNotNull(graphQLSchema, "You must provide a schema"); - return new FieldCollectorParameters(graphQLSchema, variables, fragmentsByName, objectType); + return new FieldCollectorParameters(this); } } diff --git a/src/main/java/graphql/execution/FieldValueInfo.java b/src/main/java/graphql/execution/FieldValueInfo.java index e4da4ba0c8..2839a8cd5b 100644 --- a/src/main/java/graphql/execution/FieldValueInfo.java +++ b/src/main/java/graphql/execution/FieldValueInfo.java @@ -1,14 +1,23 @@ package graphql.execution; -import graphql.ExecutionResult; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; import static graphql.Assert.assertNotNull; +/** + * The {@link FieldValueInfo} holds the type of field that was fetched and completed along with the completed value. + *

    + * A field value is considered when its is both fetch via a {@link graphql.schema.DataFetcher} to a raw value, and then + * it is serialized into scalar or enum or if it's an object type, it is completed as an object given its field sub selection + *

    + * The {@link #getFieldValueObject()} method returns either a materialized value or a {@link CompletableFuture} + * promise to a materialized value. Simple in-memory values will tend to be materialized, while complicated + * values might need a call to a database or other systems will tend to be {@link CompletableFuture} promises. + */ @PublicApi public class FieldValueInfo { @@ -18,73 +27,76 @@ public enum CompleteValueType { NULL, SCALAR, ENUM - } private final CompleteValueType completeValueType; - private final CompletableFuture fieldValue; + private final Object /* CompletableFuture | Object */ fieldValueObject; private final List fieldValueInfos; - private FieldValueInfo(CompleteValueType completeValueType, CompletableFuture fieldValue, List fieldValueInfos) { + public FieldValueInfo(CompleteValueType completeValueType, Object fieldValueObject) { + this(completeValueType, fieldValueObject, ImmutableList.of()); + } + + public FieldValueInfo(CompleteValueType completeValueType, Object fieldValueObject, List fieldValueInfos) { assertNotNull(fieldValueInfos, "fieldValueInfos can't be null"); this.completeValueType = completeValueType; - this.fieldValue = fieldValue; + this.fieldValueObject = fieldValueObject; this.fieldValueInfos = fieldValueInfos; } + /** + * This is an enum that represents the type of field value that was completed for a field + * + * @return the type of field value + */ public CompleteValueType getCompleteValueType() { return completeValueType; } - public CompletableFuture getFieldValue() { - return fieldValue; + /** + * This value can be either an object that is materialized or a {@link CompletableFuture} promise to a value + * + * @return either an object that is materialized or a {@link CompletableFuture} promise to a value + */ + public Object /* CompletableFuture | Object */ getFieldValueObject() { + return fieldValueObject; + } + + /** + * This returns the value in {@link CompletableFuture} form. If it is already a {@link CompletableFuture} it is returned + * directly, otherwise the materialized value is wrapped in a {@link CompletableFuture} and returned + * + * @return a {@link CompletableFuture} promise to the value + */ + public CompletableFuture getFieldValueFuture() { + return Async.toCompletableFuture(fieldValueObject); } + /** + * @return true if the value is a {@link CompletableFuture} promise to a value + */ + public boolean isFutureValue() { + return fieldValueObject instanceof CompletableFuture; + } + + /** + * When the {@link #getCompleteValueType()} is {@link CompleteValueType#LIST} this holds the list + * of completed values inside that list object. + * + * @return the list of completed field values inside a list + */ public List getFieldValueInfos() { return fieldValueInfos; } - public static Builder newFieldValueInfo(CompleteValueType completeValueType) { - return new Builder(completeValueType); - } @Override public String toString() { return "FieldValueInfo{" + "completeValueType=" + completeValueType + - ", fieldValue=" + fieldValue + + ", fieldValueObject=" + fieldValueObject + ", fieldValueInfos=" + fieldValueInfos + '}'; } - @SuppressWarnings("unused") - public static class Builder { - private CompleteValueType completeValueType; - private CompletableFuture executionResultFuture; - private List listInfos = new ArrayList<>(); - - public Builder(CompleteValueType completeValueType) { - this.completeValueType = completeValueType; - } - - public Builder completeValueType(CompleteValueType completeValueType) { - this.completeValueType = completeValueType; - return this; - } - - public Builder fieldValue(CompletableFuture executionResultFuture) { - this.executionResultFuture = executionResultFuture; - return this; - } - - public Builder fieldValueInfos(List listInfos) { - assertNotNull(listInfos, "fieldValueInfos can't be null"); - this.listInfos = listInfos; - return this; - } - - public FieldValueInfo build() { - return new FieldValueInfo(completeValueType, executionResultFuture, listInfos); - } - } } \ No newline at end of file diff --git a/src/main/java/graphql/execution/MergedField.java b/src/main/java/graphql/execution/MergedField.java index d58aef5d9c..59238b1c90 100644 --- a/src/main/java/graphql/execution/MergedField.java +++ b/src/main/java/graphql/execution/MergedField.java @@ -1,21 +1,27 @@ package graphql.execution; +import com.google.common.collect.ImmutableList; +import graphql.ExperimentalApi; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.execution.incremental.DeferredExecution; import graphql.language.Argument; import graphql.language.Field; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotEmpty; -import static java.util.Collections.unmodifiableList; +import static graphql.Assert.assertNotNull; /** - * This represent all Fields in a query which overlap and are merged into one. + * This represents all Fields in a query which overlap and are merged into one. * This means they all represent the same field actually when the query is executed. - * + *

    * Example query with more than one Field merged together: * *

    @@ -42,8 +48,8 @@
      * }
      * 
    * - * Here the me field is merged together including the sub selections. - * + * Here the field is merged together including the sub selections. + *

    * A third example with different directives: *

      * {@code
    @@ -54,34 +60,30 @@
      * }
      * 
    * These examples make clear that you need to consider all merged fields together to have the full picture. - * - * The actual logic when fields can successfully merged together is implemented in {#graphql.validation.rules.OverlappingFieldsCanBeMerged} + *

    + * The actual logic when fields can be successfully merged together is implemented in {#graphql.validation.rules.OverlappingFieldsCanBeMerged} */ @PublicApi +@NullMarked public class MergedField { - private final List fields; private final Field singleField; - private final String name; - private final String resultKey; + private final ImmutableList deferredExecutions; - private MergedField(List fields) { - assertNotEmpty(fields); - this.fields = unmodifiableList(new ArrayList<>(fields)); - this.singleField = fields.get(0); - this.name = singleField.getName(); - this.resultKey = singleField.getAlias() != null ? singleField.getAlias() : name; + private MergedField(Field field, ImmutableList deferredExecutions) { + this.singleField = field; + this.deferredExecutions = deferredExecutions; } /** * All merged fields have the same name. - * + *

    * WARNING: This is not always the key in the execution result, because of possible aliases. See {@link #getResultKey()} * - * @return the name of of the merged fields. + * @return the name of the merged fields. */ public String getName() { - return name; + return singleField.getName(); } /** @@ -91,12 +93,12 @@ public String getName() { * @return the key for this MergedField. */ public String getResultKey() { - return resultKey; + return singleField.getResultKey(); } /** * The first of the merged fields. - * + *

    * Because all fields are almost identically * often only one of the merged fields are used. * @@ -122,9 +124,173 @@ public List getArguments() { * @return all merged fields */ public List getFields() { - return fields; + return ImmutableList.of(singleField); + } + + /** + * @return how many fields are in this merged field + */ + public int getFieldsCount() { + return 1; + } + + /** + * @return true if the field has a sub selection + */ + public boolean hasSubSelection() { + return singleField.getSelectionSet() != null; + } + + /** + * @return true if this {@link MergedField} represents a single {@link Field} in the operation + */ + public boolean isSingleField() { + return true; + } + + /** + * Get a list of all {@link DeferredExecution}s that this field is part of + * + * @return all defer executions. + */ + @ExperimentalApi + public List getDeferredExecutions() { + return deferredExecutions; + } + + /** + * Returns true if this field is part of a deferred execution + * + * @return true if this field is part of a deferred execution + */ + @ExperimentalApi + public boolean isDeferred() { + return !deferredExecutions.isEmpty(); + } + + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MergedField that = (MergedField) o; + return this.singleField.equals(that.singleField); + } + + @Override + public int hashCode() { + return Objects.hashCode(singleField); + } + + @Override + public String toString() { + return "MergedField{" + + "field(s)=" + singleField + + '}'; + } + + /** + * This is an important method because it creates a new MergedField from the existing one without using a builder + * to save memory. + * + * @param field the new field to add to the current merged field + * @param deferredExecution the deferred execution + * + * @return a new {@link MergedField} instance + */ + MergedField newMergedFieldWith(Field field, @Nullable DeferredExecution deferredExecution) { + ImmutableList deferredExecutions = mkDeferredExecutions(deferredExecution); + ImmutableList fields = ImmutableList.of(singleField, field); + return new MultiMergedField(fields, deferredExecutions); + } + + ImmutableList mkDeferredExecutions(@Nullable DeferredExecution deferredExecution) { + ImmutableList deferredExecutions = this.deferredExecutions; + if (deferredExecution != null) { + deferredExecutions = ImmutableKit.addToList(deferredExecutions, deferredExecution); + } + return deferredExecutions; + } + + /** + * Most of the time we have a single field inside a MergedField but when we need more than one field + * represented then this {@link MultiMergedField} is used + */ + static final class MultiMergedField extends MergedField { + private final ImmutableList fields; + + MultiMergedField(ImmutableList fields, ImmutableList deferredExecutions) { + super(fields.get(0), deferredExecutions); + this.fields = fields; + } + + @Override + public List getFields() { + return fields; + } + + @Override + public boolean hasSubSelection() { + for (Field field : this.fields) { + if (field.getSelectionSet() != null) { + return true; + } + } + return false; + } + + @Override + public int getFieldsCount() { + return fields.size(); + } + + @Override + public boolean isSingleField() { + return fields.size() == 1; + } + + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MultiMergedField that = (MultiMergedField) o; + return fields.equals(that.fields); + } + + @Override + public int hashCode() { + return Objects.hashCode(fields); + } + + @Override + public String toString() { + return "MultiMergedField{" + + "field(s)=" + fields + + '}'; + } + + + @Override + public void forEach(Consumer fieldConsumer) { + fields.forEach(fieldConsumer); + } + + @Override + MergedField newMergedFieldWith(Field field, @Nullable DeferredExecution deferredExecution) { + ImmutableList deferredExecutions = mkDeferredExecutions(deferredExecution); + ImmutableList fields = ImmutableKit.addToList(this.fields, field); + return new MultiMergedField(fields, deferredExecutions); + } } + public static Builder newMergedField() { return new Builder(); } @@ -133,65 +299,138 @@ public static Builder newMergedField(Field field) { return new Builder().addField(field); } - public static Builder newMergedField(List fields) { + public static Builder newMergedField(Collection fields) { return new Builder().fields(fields); } + + /** + * This is an important method in that it creates a MergedField direct without the list and without a builder and hence + * saves some micro memory in not allocating a list of 1 + * + * @param field the field to wrap + * @param deferredExecution the deferred execution + * + * @return a new {@link MergedField} + */ + static MergedField newSingletonMergedField(Field field, @Nullable DeferredExecution deferredExecution) { + return new MergedField(field, deferredExecution == null ? ImmutableList.of() : ImmutableList.of(deferredExecution)); + } + public MergedField transform(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); return builder.build(); } + /** + * Runs a consumer for each field + * + * @param fieldConsumer the consumer to run + */ + public void forEach(Consumer fieldConsumer) { + fieldConsumer.accept(singleField); + } + public static class Builder { - private List fields; + + /* + The builder logic is complicated by these dual singleton / list duality code, + but it prevents memory allocation and every bit counts + when the CPU is running hot and an operation has lots of fields! + */ + private ImmutableList.@Nullable Builder fields; + private @Nullable Field singleField; + private ImmutableList.@Nullable Builder deferredExecutions; private Builder() { - this.fields = new ArrayList<>(); } private Builder(MergedField existing) { - this.fields = new ArrayList<>(existing.getFields()); + if (existing instanceof MultiMergedField) { + this.singleField = null; + this.fields = new ImmutableList.Builder<>(); + this.fields.addAll(existing.getFields()); + } else { + this.singleField = existing.singleField; + } + if (!existing.deferredExecutions.isEmpty()) { + this.deferredExecutions = ensureDeferredExecutionsListBuilder(); + this.deferredExecutions.addAll(existing.deferredExecutions); + } } - public Builder fields(List fields) { - this.fields = fields; + private ImmutableList.Builder ensureDeferredExecutionsListBuilder() { + if (this.deferredExecutions == null) { + this.deferredExecutions = new ImmutableList.Builder<>(); + } + return this.deferredExecutions; + } + + private ImmutableList.Builder ensureFieldsListBuilder() { + if (this.fields == null) { + this.fields = new ImmutableList.Builder<>(); + if (this.singleField != null) { + this.fields.add(this.singleField); + this.singleField = null; + } + } + return this.fields; + } + + public Builder fields(Collection fields) { + if (singleField == null && this.fields == null && fields.size() == 1) { + // even if you present a list - if its a list of one, we dont allocate a list + singleField = fields.iterator().next(); + return this; + } else { + this.fields = ensureFieldsListBuilder(); + this.fields.addAll(fields); + } return this; } public Builder addField(Field field) { + if (singleField == null && this.fields == null) { + singleField = field; + return this; + } else { + this.fields = ensureFieldsListBuilder(); + } this.fields.add(field); return this; } - public MergedField build() { - return new MergedField(fields); + public Builder addDeferredExecutions(List deferredExecutions) { + if (!deferredExecutions.isEmpty()) { + this.deferredExecutions = ensureDeferredExecutionsListBuilder(); + this.deferredExecutions.addAll(deferredExecutions); + } + return this; } - - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; + @SuppressWarnings("UnusedReturnValue") + public Builder addDeferredExecution(@Nullable DeferredExecution deferredExecution) { + if (deferredExecution != null) { + this.deferredExecutions = ensureDeferredExecutionsListBuilder(); + this.deferredExecutions.add(deferredExecution); + } + return this; } - MergedField that = (MergedField) o; - return fields.equals(that.fields); - } - @Override - public int hashCode() { - return Objects.hash(fields); - } - - @Override - public String toString() { - return "MergedField{" + - "fields=" + fields + - '}'; + public MergedField build() { + ImmutableList deferredExecutions; + if (this.deferredExecutions == null) { + deferredExecutions = ImmutableList.of(); + } else { + deferredExecutions = this.deferredExecutions.build(); + } + if (this.singleField != null && this.fields == null) { + return new MergedField(singleField, deferredExecutions); + } + ImmutableList fields = assertNotNull(this.fields, "You MUST add at least one field via the builder").build(); + assertNotEmpty(fields); + return new MultiMergedField(fields, deferredExecutions); + } } } diff --git a/src/main/java/graphql/execution/MergedSelectionSet.java b/src/main/java/graphql/execution/MergedSelectionSet.java index e4b29e3298..434b8da4f5 100644 --- a/src/main/java/graphql/execution/MergedSelectionSet.java +++ b/src/main/java/graphql/execution/MergedSelectionSet.java @@ -1,10 +1,9 @@ package graphql.execution; -import graphql.Assert; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import graphql.PublicApi; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -14,9 +13,11 @@ public class MergedSelectionSet { private final Map subFields; + private final List keys; - private MergedSelectionSet(Map subFields) { - this.subFields = Assert.assertNotNull(subFields); + protected MergedSelectionSet(Map subFields) { + this.subFields = subFields == null ? ImmutableMap.of() : subFields; + this.keys = ImmutableList.copyOf(this.subFields.keySet()); } public Map getSubFields() { @@ -24,7 +25,7 @@ public Map getSubFields() { } public List getSubFieldsList() { - return new ArrayList<>(subFields.values()); + return ImmutableList.copyOf(subFields.values()); } public int size() { @@ -40,7 +41,7 @@ public MergedField getSubField(String key) { } public List getKeys() { - return new ArrayList<>(keySet()); + return keys; } public boolean isEmpty() { @@ -52,10 +53,10 @@ public static Builder newMergedSelectionSet() { } public static class Builder { - private Map subFields = new LinkedHashMap<>(); - private Builder() { + private Map subFields; + private Builder() { } public Builder subFields(Map subFields) { diff --git a/src/main/java/graphql/execution/NonNullableFieldValidator.java b/src/main/java/graphql/execution/NonNullableFieldValidator.java index 66c9fe8fe7..b59f633bac 100644 --- a/src/main/java/graphql/execution/NonNullableFieldValidator.java +++ b/src/main/java/graphql/execution/NonNullableFieldValidator.java @@ -1,29 +1,28 @@ package graphql.execution; +import graphql.GraphQLError; import graphql.Internal; /** - * This will check that a value is non null when the type definition says it must be and it will throw {@link NonNullableFieldWasNullException} + * This will check that a value is non-null when the type definition says it must be and, it will throw {@link NonNullableFieldWasNullException} * if this is not the case. * - * See: http://facebook.github.io/graphql/#sec-Errors-and-Non-Nullability + * See: https://spec.graphql.org/October2021/#sec-Errors-and-Non-Nullability */ @Internal public class NonNullableFieldValidator { private final ExecutionContext executionContext; - private final ExecutionStepInfo executionStepInfo; - public NonNullableFieldValidator(ExecutionContext executionContext, ExecutionStepInfo executionStepInfo) { + public NonNullableFieldValidator(ExecutionContext executionContext) { this.executionContext = executionContext; - this.executionStepInfo = executionStepInfo; } /** - * Called to check that a value is non null if the type requires it to be non null + * Called to check that a value is non-null if the type requires it to be non null * - * @param path the path to this place + * @param parameters the execution strategy parameters * @param result the result to check * @param the type of the result * @@ -31,10 +30,11 @@ public NonNullableFieldValidator(ExecutionContext executionContext, ExecutionSte * * @throws NonNullableFieldWasNullException if the value is null but the type requires it to be non null */ - public T validate(ExecutionPath path, T result) throws NonNullableFieldWasNullException { + public T validate(ExecutionStrategyParameters parameters, T result) throws NonNullableFieldWasNullException { if (result == null) { + ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); if (executionStepInfo.isNonNullType()) { - // see http://facebook.github.io/graphql/#sec-Errors-and-Non-Nullability + // see https://spec.graphql.org/October2021/#sec-Errors-and-Non-Nullability // // > If the field returns null because of an error which has already been added to the "errors" list in the response, // > the "errors" list must not be further affected. That is, only one error should be added to the errors list per field. @@ -46,9 +46,18 @@ public T validate(ExecutionPath path, T result) throws NonNullableFieldWasNu // // We will do this until the spec makes this more explicit. // + final ResultPath path = parameters.getPath(); + NonNullableFieldWasNullException nonNullException = new NonNullableFieldWasNullException(executionStepInfo, path); - executionContext.addError(new NonNullableFieldWasNullError(nonNullException), path); - throw nonNullException; + final GraphQLError error = new NonNullableFieldWasNullError(nonNullException); + if(parameters.getDeferredCallContext() != null) { + parameters.getDeferredCallContext().addError(error); + } else { + executionContext.addError(error, path); + } + if (executionContext.propagateErrorsOnNonNullContractFailure()) { + throw nonNullException; + } } } return result; diff --git a/src/main/java/graphql/execution/NonNullableFieldWasNullError.java b/src/main/java/graphql/execution/NonNullableFieldWasNullError.java index a2fce14dbd..2aab5529f2 100644 --- a/src/main/java/graphql/execution/NonNullableFieldWasNullError.java +++ b/src/main/java/graphql/execution/NonNullableFieldWasNullError.java @@ -3,6 +3,7 @@ import graphql.ErrorType; import graphql.GraphQLError; import graphql.GraphqlErrorHelper; +import graphql.Internal; import graphql.language.SourceLocation; import java.util.List; @@ -12,6 +13,7 @@ * * @see graphql.execution.NonNullableFieldWasNullException for details */ +@Internal public class NonNullableFieldWasNullError implements GraphQLError { private final String message; @@ -39,7 +41,7 @@ public List getLocations() { @Override public ErrorType getErrorType() { - return ErrorType.DataFetchingException; + return ErrorType.NullValueInNonNullableField; } @Override diff --git a/src/main/java/graphql/execution/NonNullableFieldWasNullException.java b/src/main/java/graphql/execution/NonNullableFieldWasNullException.java index 90ae7a32fe..87324bb005 100644 --- a/src/main/java/graphql/execution/NonNullableFieldWasNullException.java +++ b/src/main/java/graphql/execution/NonNullableFieldWasNullException.java @@ -1,22 +1,24 @@ package graphql.execution; +import graphql.Internal; import graphql.schema.GraphQLType; import static graphql.Assert.assertNotNull; import static graphql.schema.GraphQLTypeUtil.simplePrint; /** - * See (http://facebook.github.io/graphql/#sec-Errors-and-Non-Nullability), but if a non nullable field + * See (https://spec.graphql.org/October2021/#sec-Errors-and-Non-Nullability), but if a non nullable field * actually resolves to a null value and the parent type is nullable then the parent must in fact become null * so we use exceptions to indicate this special case */ +@Internal public class NonNullableFieldWasNullException extends RuntimeException { private final ExecutionStepInfo executionStepInfo; - private final ExecutionPath path; + private final ResultPath path; - public NonNullableFieldWasNullException(ExecutionStepInfo executionStepInfo, ExecutionPath path) { + public NonNullableFieldWasNullException(ExecutionStepInfo executionStepInfo, ResultPath path) { super( mkMessage(assertNotNull(executionStepInfo), assertNotNull(path)) @@ -38,28 +40,36 @@ public NonNullableFieldWasNullException(NonNullableFieldWasNullException previou } - private static String mkMessage(ExecutionStepInfo executionStepInfo, ExecutionPath path) { + private static String mkMessage(ExecutionStepInfo executionStepInfo, ResultPath path) { GraphQLType unwrappedTyped = executionStepInfo.getUnwrappedNonNullType(); if (executionStepInfo.hasParent()) { GraphQLType unwrappedParentType = executionStepInfo.getParent().getUnwrappedNonNullType(); - return String.format("Cannot return null for non-nullable type: '%s' within parent '%s' (%s)", simplePrint(unwrappedTyped), simplePrint(unwrappedParentType), path); + return String.format( + "The field at path '%s' was declared as a non null type, but the code involved in retrieving" + + " data has wrongly returned a null value. The graphql specification requires that the" + + " parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on." + + " The non-nullable type is '%s' within parent type '%s'", + path, simplePrint(unwrappedTyped), simplePrint(unwrappedParentType)); + } else { + return String.format( + "The field at path '%s' was declared as a non null type, but the code involved in retrieving" + + " data has wrongly returned a null value. The graphql specification requires that the" + + " parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on." + + " The non-nullable type is '%s'", + path, simplePrint(unwrappedTyped)); } - return String.format("Cannot return null for non-nullable type: '%s' (%s)", simplePrint(unwrappedTyped), path); } public ExecutionStepInfo getExecutionStepInfo() { return executionStepInfo; } - public ExecutionPath getPath() { + public ResultPath getPath() { return path; } @Override public String toString() { - return "NonNullableFieldWasNullException{" + - " path=" + path + - " executionStepInfo=" + executionStepInfo + - '}'; + return getMessage(); } } diff --git a/src/main/java/graphql/execution/NonNullableValueCoercedAsNullException.java b/src/main/java/graphql/execution/NonNullableValueCoercedAsNullException.java index 1ddde6c093..4dfb680815 100644 --- a/src/main/java/graphql/execution/NonNullableValueCoercedAsNullException.java +++ b/src/main/java/graphql/execution/NonNullableValueCoercedAsNullException.java @@ -1,26 +1,28 @@ package graphql.execution; -import static java.lang.String.format; - -import java.util.Collections; -import java.util.List; - import graphql.ErrorType; import graphql.GraphQLError; import graphql.GraphQLException; import graphql.PublicApi; import graphql.language.SourceLocation; import graphql.language.VariableDefinition; +import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLInputObjectField; import graphql.schema.GraphQLType; import graphql.schema.GraphQLTypeUtil; +import java.util.Collections; +import java.util.List; + +import static java.lang.String.format; + /** * This is thrown if a non nullable value is coerced to a null value */ @PublicApi public class NonNullableValueCoercedAsNullException extends GraphQLException implements GraphQLError { private List sourceLocations; + private List path; public NonNullableValueCoercedAsNullException(VariableDefinition variableDefinition, GraphQLType graphQLType) { super(format("Variable '%s' has coerced Null value for NonNull type '%s'", @@ -34,16 +36,53 @@ public NonNullableValueCoercedAsNullException(VariableDefinition variableDefinit this.sourceLocations = Collections.singletonList(variableDefinition.getSourceLocation()); } + public NonNullableValueCoercedAsNullException(VariableDefinition variableDefinition, String fieldName, List path, GraphQLType graphQLType) { + super(format("Field '%s' of variable '%s' has coerced Null value for NonNull type '%s'", + fieldName, variableDefinition.getName(), GraphQLTypeUtil.simplePrint(graphQLType))); + this.sourceLocations = Collections.singletonList(variableDefinition.getSourceLocation()); + this.path = path; + } + + public NonNullableValueCoercedAsNullException(GraphQLType graphQLType) { + super(format("Coerced Null value for NonNull type '%s'", GraphQLTypeUtil.simplePrint(graphQLType))); + } + + public NonNullableValueCoercedAsNullException(VariableDefinition variableDefinition, String causeMessage) { + super(format("Variable '%s' has an invalid value: %s", variableDefinition.getName(), causeMessage)); + this.sourceLocations = Collections.singletonList(variableDefinition.getSourceLocation()); + } + + public NonNullableValueCoercedAsNullException(String fieldName, List path, GraphQLType graphQLType) { + super(format("Field '%s' has coerced Null value for NonNull type '%s'", + fieldName, GraphQLTypeUtil.simplePrint(graphQLType))); + this.path = path; + } + public NonNullableValueCoercedAsNullException(GraphQLInputObjectField inputTypeField) { super(format("Input field '%s' has coerced Null value for NonNull type '%s'", inputTypeField.getName(), GraphQLTypeUtil.simplePrint(inputTypeField.getType()))); } + public NonNullableValueCoercedAsNullException(GraphQLInputObjectField inputTypeField, List path) { + super(format("Input field '%s' has coerced Null value for NonNull type '%s'", + inputTypeField.getName(), GraphQLTypeUtil.simplePrint(inputTypeField.getType()))); + this.path = path; + } + + public NonNullableValueCoercedAsNullException(GraphQLArgument graphQLArgument) { + super(format("Argument '%s' has coerced Null value for NonNull type '%s'", graphQLArgument.getName(), graphQLArgument.getType())); + } + @Override public List getLocations() { return sourceLocations; } + @Override + public List getPath() { + return path; + } + @Override public ErrorType getErrorType() { return ErrorType.ValidationError; diff --git a/src/main/java/graphql/execution/NormalizedVariables.java b/src/main/java/graphql/execution/NormalizedVariables.java new file mode 100644 index 0000000000..ef16fec3cf --- /dev/null +++ b/src/main/java/graphql/execution/NormalizedVariables.java @@ -0,0 +1,45 @@ +package graphql.execution; + +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.normalized.NormalizedInputValue; + +import java.util.Map; + +/** + * Holds coerced variables, that is their values are now in a normalized {@link graphql.normalized.NormalizedInputValue} form. + */ +@PublicApi +public class NormalizedVariables { + private final ImmutableMapWithNullValues normalisedVariables; + + public NormalizedVariables(Map normalisedVariables) { + this.normalisedVariables = ImmutableMapWithNullValues.copyOf(normalisedVariables); + } + + public Map toMap() { + return normalisedVariables; + } + + public boolean containsKey(String key) { + return normalisedVariables.containsKey(key); + } + + public Object get(String key) { + return normalisedVariables.get(key); + } + + public static NormalizedVariables emptyVariables() { + return new NormalizedVariables(ImmutableKit.emptyMap()); + } + + public static NormalizedVariables of(Map normalisedVariables) { + return new NormalizedVariables(normalisedVariables); + } + + @Override + public String toString() { + return normalisedVariables.toString(); + } +} diff --git a/src/main/java/graphql/execution/OneOfNullValueException.java b/src/main/java/graphql/execution/OneOfNullValueException.java new file mode 100644 index 0000000000..40e5bbccae --- /dev/null +++ b/src/main/java/graphql/execution/OneOfNullValueException.java @@ -0,0 +1,30 @@ +package graphql.execution; + +import graphql.ErrorType; +import graphql.GraphQLError; +import graphql.GraphQLException; +import graphql.PublicApi; +import graphql.language.SourceLocation; + +import java.util.List; + +/** + * The input map to One Of Input Types MUST only have 1 entry with a non null value + */ +@PublicApi +public class OneOfNullValueException extends GraphQLException implements GraphQLError { + + public OneOfNullValueException(String message) { + super(message); + } + + @Override + public List getLocations() { + return null; + } + + @Override + public ErrorType getErrorType() { + return ErrorType.ValidationError; + } +} diff --git a/src/main/java/graphql/execution/OneOfTooManyKeysException.java b/src/main/java/graphql/execution/OneOfTooManyKeysException.java new file mode 100644 index 0000000000..f8d3c0053a --- /dev/null +++ b/src/main/java/graphql/execution/OneOfTooManyKeysException.java @@ -0,0 +1,30 @@ +package graphql.execution; + +import graphql.ErrorType; +import graphql.GraphQLError; +import graphql.GraphQLException; +import graphql.PublicApi; +import graphql.language.SourceLocation; + +import java.util.List; + +/** + * The input map to One Of Input Types MUST only have 1 entry + */ +@PublicApi +public class OneOfTooManyKeysException extends GraphQLException implements GraphQLError { + + public OneOfTooManyKeysException(String message) { + super(message); + } + + @Override + public List getLocations() { + return null; + } + + @Override + public ErrorType getErrorType() { + return ErrorType.ValidationError; + } +} diff --git a/src/main/java/graphql/execution/RawVariables.java b/src/main/java/graphql/execution/RawVariables.java new file mode 100644 index 0000000000..4ebfa27f2a --- /dev/null +++ b/src/main/java/graphql/execution/RawVariables.java @@ -0,0 +1,48 @@ +package graphql.execution; + +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.collect.ImmutableMapWithNullValues; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.Map; + +/** + * Holds raw variables, which have not been coerced yet into {@link CoercedVariables} + */ +@PublicApi +@NullMarked +public class RawVariables { + private static final RawVariables EMPTY = RawVariables.of(ImmutableKit.emptyMap()); + private final ImmutableMapWithNullValues rawVariables; + + public RawVariables(Map rawVariables) { + this.rawVariables = ImmutableMapWithNullValues.copyOf(rawVariables); + } + + public Map toMap() { + return rawVariables; + } + + public boolean containsKey(String key) { + return rawVariables.containsKey(key); + } + + public @Nullable Object get(String key) { + return rawVariables.get(key); + } + + public static RawVariables emptyVariables() { + return EMPTY; + } + + public static RawVariables of(Map rawVariables) { + return new RawVariables(rawVariables); + } + + @Override + public String toString() { + return rawVariables.toString(); + } +} diff --git a/src/main/java/graphql/execution/ResolveType.java b/src/main/java/graphql/execution/ResolveType.java index a3cf29a591..3ef9c556fb 100644 --- a/src/main/java/graphql/execution/ResolveType.java +++ b/src/main/java/graphql/execution/ResolveType.java @@ -1,76 +1,71 @@ package graphql.execution; +import graphql.Assert; import graphql.Internal; import graphql.TypeResolutionEnvironment; +import graphql.normalized.ExecutableNormalizedField; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.schema.DataFetchingFieldSelectionSet; +import graphql.schema.DataFetchingFieldSelectionSetImpl; import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLType; import graphql.schema.GraphQLUnionType; import graphql.schema.TypeResolver; -import java.util.Map; +import java.util.function.Supplier; @Internal public class ResolveType { - - public GraphQLObjectType resolveType(ExecutionContext executionContext, MergedField field, Object source, Map arguments, GraphQLType fieldType) { - GraphQLObjectType resolvedType; + public GraphQLObjectType resolveType(ExecutionContext executionContext, MergedField field, Object source, ExecutionStepInfo executionStepInfo, GraphQLType fieldType, Object localContext) { + Assert.assertTrue(fieldType instanceof GraphQLInterfaceType || fieldType instanceof GraphQLUnionType, + () -> "The passed in fieldType MUST be an interface or union type : " + fieldType.getClass().getName()); + DataFetchingFieldSelectionSet fieldSelectionSet = buildSelectionSet(executionContext, field, (GraphQLOutputType) fieldType, executionStepInfo); + TypeResolutionEnvironment env = TypeResolutionParameters.newParameters() + .field(field) + .fieldType(fieldType) + .value(source) + .argumentValues(executionStepInfo::getArguments) + .selectionSet(fieldSelectionSet) + .context(executionContext.getContext()) + .graphQLContext(executionContext.getGraphQLContext()) + .localContext(localContext) + .schema(executionContext.getGraphQLSchema()) + .build(); if (fieldType instanceof GraphQLInterfaceType) { - TypeResolutionParameters resolutionParams = TypeResolutionParameters.newParameters() - .graphQLInterfaceType((GraphQLInterfaceType) fieldType) - .field(field) - .value(source) - .argumentValues(arguments) - .context(executionContext.getContext()) - .schema(executionContext.getGraphQLSchema()).build(); - resolvedType = resolveTypeForInterface(resolutionParams); - - } else if (fieldType instanceof GraphQLUnionType) { - TypeResolutionParameters resolutionParams = TypeResolutionParameters.newParameters() - .graphQLUnionType((GraphQLUnionType) fieldType) - .field(field) - .value(source) - .argumentValues(arguments) - .context(executionContext.getContext()) - .schema(executionContext.getGraphQLSchema()).build(); - resolvedType = resolveTypeForUnion(resolutionParams); + return resolveTypeForInterface(env, (GraphQLInterfaceType) fieldType); } else { - resolvedType = (GraphQLObjectType) fieldType; + return resolveTypeForUnion(env, (GraphQLUnionType) fieldType); } - - return resolvedType; } - public GraphQLObjectType resolveTypeForInterface(TypeResolutionParameters params) { - TypeResolutionEnvironment env = new TypeResolutionEnvironment(params.getValue(), params.getArgumentValues(), params.getField(), params.getGraphQLInterfaceType(), params.getSchema(), params.getContext()); - GraphQLInterfaceType abstractType = params.getGraphQLInterfaceType(); - TypeResolver typeResolver = params.getSchema().getCodeRegistry().getTypeResolver(abstractType); - GraphQLObjectType result = typeResolver.getType(env); - if (result == null) { - throw new UnresolvedTypeException(abstractType); - } + private DataFetchingFieldSelectionSet buildSelectionSet(ExecutionContext executionContext, MergedField field, GraphQLOutputType fieldType, ExecutionStepInfo executionStepInfo) { + Supplier normalizedQuery = executionContext.getNormalizedQueryTree(); + Supplier normalizedFieldSupplier = () -> normalizedQuery.get().getNormalizedField(field, executionStepInfo.getObjectType(), executionStepInfo.getPath()); + return DataFetchingFieldSelectionSetImpl.newCollector(executionContext.getGraphQLSchema(), fieldType, normalizedFieldSupplier); + } - if (!params.getSchema().isPossibleType(abstractType, result)) { - throw new UnresolvedTypeException(abstractType, result); - } + public GraphQLObjectType resolveTypeForInterface(TypeResolutionEnvironment env, GraphQLInterfaceType abstractType) { + TypeResolver typeResolver = env.getSchema().getCodeRegistry().getTypeResolver(abstractType); + return resolveAbstractType(env, typeResolver, abstractType); + } - return result; + public GraphQLObjectType resolveTypeForUnion(TypeResolutionEnvironment env, GraphQLUnionType abstractType) { + TypeResolver typeResolver = env.getSchema().getCodeRegistry().getTypeResolver(abstractType); + return resolveAbstractType(env, typeResolver, abstractType); } - public GraphQLObjectType resolveTypeForUnion(TypeResolutionParameters params) { - TypeResolutionEnvironment env = new TypeResolutionEnvironment(params.getValue(), params.getArgumentValues(), params.getField(), params.getGraphQLUnionType(), params.getSchema(), params.getContext()); - GraphQLUnionType abstractType = params.getGraphQLUnionType(); - TypeResolver typeResolver = params.getSchema().getCodeRegistry().getTypeResolver(abstractType); + private GraphQLObjectType resolveAbstractType(TypeResolutionEnvironment env, TypeResolver typeResolver, GraphQLNamedOutputType abstractType) { GraphQLObjectType result = typeResolver.getType(env); if (result == null) { throw new UnresolvedTypeException(abstractType); } - - if (!params.getSchema().isPossibleType(abstractType, result)) { + if (!env.getSchema().isPossibleType(abstractType, result)) { throw new UnresolvedTypeException(abstractType, result); } - return result; } diff --git a/src/main/java/graphql/execution/ResponseMapFactory.java b/src/main/java/graphql/execution/ResponseMapFactory.java new file mode 100644 index 0000000000..01a37d8491 --- /dev/null +++ b/src/main/java/graphql/execution/ResponseMapFactory.java @@ -0,0 +1,32 @@ +package graphql.execution; + +import graphql.ExperimentalApi; +import graphql.PublicSpi; + +import java.util.List; +import java.util.Map; + +/** + * Allows to customize the concrete class {@link Map} implementation. For example, it could be possible to use + * memory-efficient implementations, like eclipse-collections. + */ +@ExperimentalApi +@PublicSpi +public interface ResponseMapFactory { + + /** + * The default implementation uses JDK's {@link java.util.LinkedHashMap}. + */ + ResponseMapFactory DEFAULT = new DefaultResponseMapFactory(); + + /** + * The general contract is that the resulting map keeps the insertion orders of keys. Values are nullable but keys are not. + * Implementations are free to create or to reuse map instances. + * + * @param keys the keys like k1, k2, ..., kn + * @param values the values like v1, v2, ..., vn + * @return a new or reused map instance with (k1,v1), (k2, v2), ... (kn, vn) + */ + Map createInsertionOrdered(List keys, List values); + +} diff --git a/src/main/java/graphql/execution/ResultNodesInfo.java b/src/main/java/graphql/execution/ResultNodesInfo.java new file mode 100644 index 0000000000..afc366f6be --- /dev/null +++ b/src/main/java/graphql/execution/ResultNodesInfo.java @@ -0,0 +1,55 @@ +package graphql.execution; + +import graphql.Internal; +import graphql.PublicApi; + +import java.util.concurrent.atomic.AtomicInteger; + +/** + * This class is used to track the number of result nodes that have been created during execution. + * After each execution the GraphQLContext contains a ResultNodeInfo object under the key {@link ResultNodesInfo#RESULT_NODES_INFO} + *

    + * The number of result can be limited (and should be for security reasons) by setting the maximum number of result nodes + * in the GraphQLContext under the key {@link ResultNodesInfo#MAX_RESULT_NODES} to an Integer + *

    + */ +@PublicApi +public class ResultNodesInfo { + + public static final String MAX_RESULT_NODES = "__MAX_RESULT_NODES"; + public static final String RESULT_NODES_INFO = "__RESULT_NODES_INFO"; + + private volatile boolean maxResultNodesExceeded = false; + private final AtomicInteger resultNodesCount = new AtomicInteger(0); + + @Internal + public int incrementAndGetResultNodesCount() { + return resultNodesCount.incrementAndGet(); + } + + @Internal + public void maxResultNodesExceeded() { + this.maxResultNodesExceeded = true; + } + + /** + * The number of result nodes created. + * Note: this can be higher than max result nodes because + * a each node that exceeds the number of max nodes is set to null, + * but still is a result node (with value null) + * + * @return number of result nodes created + */ + public int getResultNodesCount() { + return resultNodesCount.get(); + } + + /** + * If the number of result nodes has exceeded the maximum allowed numbers. + * + * @return true if the number of result nodes has exceeded the maximum allowed numbers + */ + public boolean isMaxResultNodesExceeded() { + return maxResultNodesExceeded; + } +} diff --git a/src/main/java/graphql/execution/ExecutionPath.java b/src/main/java/graphql/execution/ResultPath.java similarity index 64% rename from src/main/java/graphql/execution/ExecutionPath.java rename to src/main/java/graphql/execution/ResultPath.java index 313e7883e7..696bfbc7f1 100644 --- a/src/main/java/graphql/execution/ExecutionPath.java +++ b/src/main/java/graphql/execution/ResultPath.java @@ -1,9 +1,11 @@ package graphql.execution; -import graphql.Assert; +import com.google.common.collect.ImmutableList; import graphql.AssertException; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Objects; @@ -19,52 +21,64 @@ * class represents that path as a series of segments. */ @PublicApi -public class ExecutionPath { - private static final ExecutionPath ROOT_PATH = new ExecutionPath(); +public class ResultPath { + private static final ResultPath ROOT_PATH = new ResultPath(); /** * All paths start from here * * @return the root path */ - public static ExecutionPath rootPath() { + public static ResultPath rootPath() { return ROOT_PATH; } - private final ExecutionPath parent; + private final ResultPath parent; private final Object segment; // hash is effective immutable but lazily initialized similar to the hash code of java.lang.String private int hash; + private final String toStringValue; + private final int level; - private ExecutionPath() { + private ResultPath() { parent = null; segment = null; + this.level = 0; + this.toStringValue = initString(); } - private ExecutionPath(ExecutionPath parent, String segment) { + private ResultPath(ResultPath parent, String segment) { this.parent = assertNotNull(parent, "Must provide a parent path"); this.segment = assertNotNull(segment, "Must provide a sub path"); + this.toStringValue = initString(); + this.level = parent.level + 1; } - private ExecutionPath(ExecutionPath parent, int segment) { + private ResultPath(ResultPath parent, int segment) { this.parent = assertNotNull(parent, "Must provide a parent path"); this.segment = segment; + this.toStringValue = initString(); + this.level = parent.level; } - public int getLevel() { - int counter = 0; - ExecutionPath currentPath = this; - while (currentPath != null) { - if (currentPath.segment instanceof String) { - counter++; - } - currentPath = currentPath.parent; + private String initString() { + if (parent == null) { + return ""; } - return counter; + + if (ROOT_PATH.equals(parent)) { + return segmentToString(); + } + return parent + segmentToString(); + } - public ExecutionPath getPathWithoutListEnd() { + public int getLevel() { + return level; + } + + public ResultPath getPathWithoutListEnd() { if (ROOT_PATH.equals(this)) { return ROOT_PATH; } @@ -101,7 +115,7 @@ public Object getSegmentValue() { return segment; } - public ExecutionPath getParent() { + public ResultPath getParent() { return parent; } @@ -112,21 +126,21 @@ public ExecutionPath getParent() { * * @return a parsed execution path */ - public static ExecutionPath parse(String pathString) { + public static ResultPath parse(String pathString) { pathString = pathString == null ? "" : pathString; - pathString = pathString.trim(); - StringTokenizer st = new StringTokenizer(pathString, "/[]", true); - ExecutionPath path = ExecutionPath.rootPath(); + String finalPathString = pathString.trim(); + StringTokenizer st = new StringTokenizer(finalPathString, "/[]", true); + ResultPath path = ResultPath.rootPath(); while (st.hasMoreTokens()) { String token = st.nextToken(); if ("/".equals(token)) { - assertTrue(st.hasMoreTokens(), mkErrMsg(), pathString); + assertTrue(st.hasMoreTokens(), mkErrMsg(), finalPathString); path = path.segment(st.nextToken()); } else if ("[".equals(token)) { - assertTrue(st.countTokens() >= 2, mkErrMsg(), pathString); + assertTrue(st.countTokens() >= 2, mkErrMsg(), finalPathString); path = path.segment(Integer.parseInt(st.nextToken())); String closingBrace = st.nextToken(); - assertTrue(closingBrace.equals("]"), mkErrMsg(), pathString); + assertTrue(closingBrace.equals("]"), mkErrMsg(), finalPathString); } else { throw new AssertException(format(mkErrMsg(), pathString)); } @@ -141,14 +155,16 @@ public static ExecutionPath parse(String pathString) { * * @return a new execution path */ - public static ExecutionPath fromList(List objects) { + public static ResultPath fromList(List objects) { assertNotNull(objects); - ExecutionPath path = ExecutionPath.rootPath(); + ResultPath path = ResultPath.rootPath(); for (Object object : objects) { if (object instanceof String) { path = path.segment(((String) object)); - } else { + } else if (object instanceof Integer) { path = path.segment((int) object); + } else if (object != null) { + path = path.segment(object.toString()); } } return path; @@ -165,8 +181,8 @@ private static String mkErrMsg() { * * @return a new path containing that segment */ - public ExecutionPath segment(String segment) { - return new ExecutionPath(this, segment); + public ResultPath segment(String segment) { + return new ResultPath(this, segment); } /** @@ -176,8 +192,8 @@ public ExecutionPath segment(String segment) { * * @return a new path containing that segment */ - public ExecutionPath segment(int segment) { - return new ExecutionPath(this, segment); + public ResultPath segment(int segment) { + return new ResultPath(this, segment); } /** @@ -185,7 +201,7 @@ public ExecutionPath segment(int segment) { * * @return a new path with the last segment dropped off */ - public ExecutionPath dropSegment() { + public ResultPath dropSegment() { if (this == rootPath()) { return null; } @@ -193,29 +209,29 @@ public ExecutionPath dropSegment() { } /** - * Replaces the last segment on the path eg ExecutionPath.parse("/a/b[1]").replaceSegment(9) + * Replaces the last segment on the path eg ResultPath.parse("/a/b[1]").replaceSegment(9) * equals "/a/b[9]" * * @param segment the integer segment to use * * @return a new path with the last segment replaced */ - public ExecutionPath replaceSegment(int segment) { - Assert.assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); - return new ExecutionPath(parent, segment); + public ResultPath replaceSegment(int segment) { + assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); + return new ResultPath(parent, segment); } /** - * Replaces the last segment on the path eg ExecutionPath.parse("/a/b[1]").replaceSegment("x") + * Replaces the last segment on the path eg ResultPath.parse("/a/b[1]").replaceSegment("x") * equals "/a/b/x" * * @param segment the string segment to use * * @return a new path with the last segment replaced */ - public ExecutionPath replaceSegment(String segment) { - Assert.assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); - return new ExecutionPath(parent, segment); + public ResultPath replaceSegment(String segment) { + assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); + return new ResultPath(parent, segment); } @@ -233,21 +249,21 @@ public boolean isRootPath() { * * @return a new path */ - public ExecutionPath append(ExecutionPath path) { - List objects = this.toList(); + public ResultPath append(ResultPath path) { + List objects = new ArrayList<>(this.toList()); objects.addAll(assertNotNull(path).toList()); return fromList(objects); } - public ExecutionPath sibling(String siblingField) { - Assert.assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); - return new ExecutionPath(this.parent, siblingField); + public ResultPath sibling(String siblingField) { + assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); + return new ResultPath(this.parent, siblingField); } - public ExecutionPath sibling(int siblingField) { - Assert.assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); - return new ExecutionPath(this.parent, siblingField); + public ResultPath sibling(int siblingField) { + assertTrue(!ROOT_PATH.equals(this), "You MUST not call this with the root path"); + return new ResultPath(this.parent, siblingField); } /** @@ -255,14 +271,32 @@ public ExecutionPath sibling(int siblingField) { */ public List toList() { if (parent == null) { - return new LinkedList<>(); + return ImmutableKit.emptyList(); } LinkedList list = new LinkedList<>(); - ExecutionPath p = this; + ResultPath p = this; while (p.segment != null) { list.addFirst(p.segment); p = p.parent; } + return ImmutableList.copyOf(list); + } + + /** + * @return this path as a list of result keys, without any indices + */ + public List getKeysOnly() { + if (parent == null) { + return new LinkedList<>(); + } + LinkedList list = new LinkedList<>(); + ResultPath p = this; + while (p.segment != null) { + if (p.segment instanceof String) { + list.addFirst((String) p.segment); + } + p = p.parent; + } return list; } @@ -272,15 +306,7 @@ public List toList() { */ @Override public String toString() { - if (parent == null) { - return ""; - } - - if (ROOT_PATH.equals(parent)) { - return segmentToString(); - } - - return parent.toString() + segmentToString(); + return toStringValue; } public String segmentToString() { @@ -300,8 +326,8 @@ public boolean equals(Object o) { return false; } - ExecutionPath self = this; - ExecutionPath that = (ExecutionPath) o; + ResultPath self = this; + ResultPath that = (ResultPath) o; while (self.segment != null && that.segment != null) { if (!Objects.equals(self.segment, that.segment)) { return false; @@ -318,7 +344,7 @@ public int hashCode() { int h = hash; if (h == 0) { h = 1; - ExecutionPath self = this; + ResultPath self = this; while (self != null) { Object value = self.segment; h = 31 * h + (value == null ? 0 : value.hashCode()); diff --git a/src/main/java/graphql/execution/SimpleDataFetcherExceptionHandler.java b/src/main/java/graphql/execution/SimpleDataFetcherExceptionHandler.java index a1e6679d71..79e201a333 100644 --- a/src/main/java/graphql/execution/SimpleDataFetcherExceptionHandler.java +++ b/src/main/java/graphql/execution/SimpleDataFetcherExceptionHandler.java @@ -3,9 +3,9 @@ import graphql.ExceptionWhileDataFetching; import graphql.PublicApi; import graphql.language.SourceLocation; -import graphql.util.LogKit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; /** * The standard handling of data fetcher error involves placing a {@link ExceptionWhileDataFetching} error @@ -14,17 +14,46 @@ @PublicApi public class SimpleDataFetcherExceptionHandler implements DataFetcherExceptionHandler { - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(SimpleDataFetcherExceptionHandler.class); + static final SimpleDataFetcherExceptionHandler defaultImpl = new SimpleDataFetcherExceptionHandler(); - @Override - public DataFetcherExceptionHandlerResult onException(DataFetcherExceptionHandlerParameters handlerParameters) { - Throwable exception = handlerParameters.getException(); + private DataFetcherExceptionHandlerResult handleExceptionImpl(DataFetcherExceptionHandlerParameters handlerParameters) { + Throwable exception = unwrap(handlerParameters.getException()); SourceLocation sourceLocation = handlerParameters.getSourceLocation(); - ExecutionPath path = handlerParameters.getPath(); + ResultPath path = handlerParameters.getPath(); ExceptionWhileDataFetching error = new ExceptionWhileDataFetching(path, exception, sourceLocation); - logNotSafe.warn(error.getMessage(), exception); + logException(error, exception); return DataFetcherExceptionHandlerResult.newResult().error(error).build(); } + + @Override + public CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { + return CompletableFuture.completedFuture(handleExceptionImpl(handlerParameters)); + } + + /** + * Called to log the exception - a subclass could choose to something different in logging terms + * + * @param error the graphql error + * @param exception the exception that happened + */ + protected void logException(ExceptionWhileDataFetching error, Throwable exception) { + } + + /** + * Called to unwrap an exception to a more suitable cause if required. + * + * @param exception the exception to unwrap + * + * @return the suitable exception + */ + protected Throwable unwrap(Throwable exception) { + if (exception.getCause() != null) { + if (exception instanceof CompletionException) { + return exception.getCause(); + } + } + return exception; + } } diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 87dc1e72d6..f1e1a9a919 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -1,28 +1,55 @@ package graphql.execution; +import graphql.Assert; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; -import graphql.execution.reactive.CompletionStageMappingPublisher; +import graphql.GraphQLContext; +import graphql.PublicApi; +import graphql.execution.incremental.AlternativeCallContext; +import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext; +import graphql.execution.instrumentation.Instrumentation; +import graphql.execution.instrumentation.InstrumentationContext; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.instrumentation.parameters.InstrumentationReactiveResultsParameters; +import graphql.execution.reactive.SubscriptionPublisher; import graphql.language.Field; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import org.reactivestreams.FlowAdapters; import org.reactivestreams.Publisher; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.Flow; +import java.util.function.Function; -import static graphql.Assert.assertTrue; +import static graphql.execution.instrumentation.SimpleInstrumentationContext.nonNullCtx; import static java.util.Collections.singletonMap; /** * An execution strategy that implements graphql subscriptions by using reactive-streams * as the output result of the subscription query. - * + *

    * Afterwards each object delivered on that stream will be mapped via running the original selection set over that object and hence producing an ExecutionResult * just like a normal graphql query. - * - * See https://github.com/facebook/graphql/blob/master/spec/Section%206%20--%20Execution.md - * See http://www.reactive-streams.org/ + *

    + * See https://spec.graphql.org/draft/#sec-Subscription + *

    + * See https://www.reactive-streams.org/ */ +@PublicApi public class SubscriptionExecutionStrategy extends ExecutionStrategy { + /** + * If a boolean value is placed into the {@link GraphQLContext} with this key then the order + * of the subscription events can be controlled. By default, subscription events are published + * as the graphql subselection calls complete, and not in the order they originally arrived from the + * source publisher. But this can be changed to {@link Boolean#TRUE} to keep them in order. + */ + public static final String KEEP_SUBSCRIPTION_EVENTS_ORDERED = "KEEP_SUBSCRIPTION_EVENTS_ORDERED"; + public SubscriptionExecutionStrategy() { super(); } @@ -33,23 +60,45 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( + instrumentationParameters, + executionContext.getInstrumentationState() + )); CompletableFuture> sourceEventStream = createSourceEventStream(executionContext, parameters); // // when the upstream source event stream completes, subscribe to it and wire in our adapter - return sourceEventStream.thenApply((publisher) -> { + CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> + { if (publisher == null) { return new ExecutionResultImpl(null, executionContext.getErrors()); } - CompletionStageMappingPublisher mapSourceToResponse = new CompletionStageMappingPublisher<>( - publisher, - eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload) - ); + Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); + boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); + + InstrumentationReactiveResultsParameters instrumentationReactiveResultsParameters = new InstrumentationReactiveResultsParameters(executionContext, InstrumentationReactiveResultsParameters.ResultType.SUBSCRIPTION); + InstrumentationContext reactiveCtx = nonNullCtx(executionContext.getInstrumentation().beginReactiveResults(instrumentationReactiveResultsParameters, executionContext.getInstrumentationState())); + reactiveCtx.onDispatched(); + + SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered, + throwable -> reactiveCtx.onCompleted(null, throwable)); return new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); }); + + // dispatched the subscription query + executionStrategyCtx.onDispatched(); + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; + } + + private boolean keepOrdered(GraphQLContext graphQLContext) { + return graphQLContext.getOrDefault(KEEP_SUBSCRIPTION_EVENTS_ORDERED, false); } + /* https://github.com/facebook/graphql/blob/master/spec/Section%206%20--%20Execution.md @@ -65,19 +114,38 @@ public CompletableFuture execute(ExecutionContext executionCont */ private CompletableFuture> createSourceEventStream(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); + ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(executionContext, parameters, false); - CompletableFuture fieldFetched = fetchField(executionContext, newParameters); + CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); return fieldFetched.thenApply(fetchedValue -> { - Object publisher = fetchedValue.getFetchedValue(); - if (publisher != null) { - assertTrue(publisher instanceof Publisher, "You data fetcher must return a Publisher of events when using graphql subscriptions"); - } - //noinspection unchecked - return (Publisher) publisher; + Object publisher = FetchedValue.getFetchedValue(fetchedValue); + return mkReactivePublisher(publisher); }); } + /** + * The user code can return either a reactive stream {@link Publisher} or a JDK {@link Flow.Publisher} + * and we adapt it to a reactive streams one since we use reactive streams in our implementation. + * + * @param publisherObj - the object returned from the data fetcher as the source of events + * + * @return a reactive streams {@link Publisher} always + */ + @SuppressWarnings("unchecked") + private static Publisher mkReactivePublisher(Object publisherObj) { + if (publisherObj != null) { + if (publisherObj instanceof Publisher) { + return (Publisher) publisherObj; + } else if (publisherObj instanceof Flow.Publisher) { + Flow.Publisher flowPublisher = (Flow.Publisher) publisherObj; + return FlowAdapters.toPublisher(flowPublisher); + } else { + return Assert.assertShouldNeverHappen("Your data fetcher must return a Publisher of events when using graphql subscriptions"); + } + } + return null; // null is valid - we return null data in this case + } + /* ExecuteSubscriptionEvent(subscription, schema, variableValues, initialValue): @@ -92,16 +160,41 @@ private CompletableFuture> createSourceEventStream(ExecutionCo */ private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { - ExecutionContext newExecutionContext = executionContext.transform(builder -> builder.root(eventPayload)); - ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); - FetchedValue fetchedValue = FetchedValue.newFetchedValue().fetchedValue(eventPayload) - .rawFetchedValue(eventPayload) - .localContext(parameters.getLocalContext()) - .build(); + Instrumentation instrumentation = executionContext.getInstrumentation(); - return completeField(newExecutionContext, newParameters, fetchedValue).getFieldValue() + ExecutionContext newExecutionContext = executionContext.transform(builder -> builder + .root(eventPayload) + .resetErrors() + ); + ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(newExecutionContext, parameters, true); + ExecutionStepInfo subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters); + + InstrumentationFieldParameters i13nFieldParameters = new InstrumentationFieldParameters(executionContext, () -> subscribedFieldStepInfo); + InstrumentationContext subscribedFieldCtx = nonNullCtx(instrumentation.beginSubscribedFieldEvent( + i13nFieldParameters, executionContext.getInstrumentationState() + )); + + + executionContext.getDataLoaderDispatcherStrategy().newSubscriptionExecution(newParameters.getDeferredCallContext()); + Object fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, newParameters, eventPayload); + FieldValueInfo fieldValueInfo = completeField(newExecutionContext, newParameters, fetchedValue); + executionContext.getDataLoaderDispatcherStrategy().subscriptionEventCompletionDone(newParameters.getDeferredCallContext()); + CompletableFuture overallResult = fieldValueInfo + .getFieldValueFuture() + .thenApply(val -> new ExecutionResultImpl(val, newParameters.getDeferredCallContext().getErrors())) .thenApply(executionResult -> wrapWithRootFieldName(newParameters, executionResult)); + + // dispatch instrumentation so they can know about each subscription event + subscribedFieldCtx.onDispatched(); + overallResult.whenComplete(subscribedFieldCtx::onCompleted); + + // allow them to instrument each ER should they want to + InstrumentationExecutionParameters i13nExecutionParameters = new InstrumentationExecutionParameters( + executionContext.getExecutionInput(), executionContext.getGraphQLSchema()); + + overallResult = overallResult.thenCompose(executionResult -> instrumentation.instrumentExecutionResult(executionResult, i13nExecutionParameters, executionContext.getInstrumentationState())); + return overallResult; } private ExecutionResult wrapWithRootFieldName(ExecutionStrategyParameters parameters, ExecutionResult executionResult) { @@ -114,15 +207,36 @@ private ExecutionResult wrapWithRootFieldName(ExecutionStrategyParameters parame private String getRootFieldName(ExecutionStrategyParameters parameters) { Field rootField = parameters.getField().getSingleField(); - return rootField.getAlias() != null ? rootField.getAlias() : rootField.getName(); + return rootField.getResultKey(); } - private ExecutionStrategyParameters firstFieldOfSubscriptionSelection(ExecutionStrategyParameters parameters) { + private ExecutionStrategyParameters firstFieldOfSubscriptionSelection(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + boolean newCallContext) { MergedSelectionSet fields = parameters.getFields(); MergedField firstField = fields.getSubField(fields.getKeys().get(0)); - ExecutionPath fieldPath = parameters.getPath().segment(mkNameForPath(firstField.getSingleField())); - return parameters.transform(builder -> builder.field(firstField).path(fieldPath)); + ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(firstField.getSingleField())); + NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext); + + + return parameters.transform(builder -> { + builder + .field(firstField) + .path(fieldPath) + .nonNullFieldValidator(nonNullableFieldValidator); + if (newCallContext) { + builder.deferredCallContext(new AlternativeCallContext(1, 1)); + } + }); + } + private ExecutionStepInfo createSubscribedFieldStepInfo(ExecutionContext + executionContext, ExecutionStrategyParameters parameters) { + Field field = parameters.getField().getSingleField(); + GraphQLObjectType parentType = parameters.getExecutionStepInfo().getUnwrappedNonNullTypeAs(); + GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, field); + return createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); + } } diff --git a/src/main/java/graphql/execution/TypeResolutionParameters.java b/src/main/java/graphql/execution/TypeResolutionParameters.java index 10a2691213..4f20fac4fd 100644 --- a/src/main/java/graphql/execution/TypeResolutionParameters.java +++ b/src/main/java/graphql/execution/TypeResolutionParameters.java @@ -1,88 +1,110 @@ package graphql.execution; -import graphql.PublicApi; -import graphql.schema.GraphQLInterfaceType; +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.TypeResolutionEnvironment; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.schema.DataFetchingFieldSelectionSet; import graphql.schema.GraphQLSchema; -import graphql.schema.GraphQLUnionType; +import graphql.schema.GraphQLType; import java.util.Map; +import java.util.function.Supplier; -@PublicApi +/** + * This class is a classic builder style one that SHOULD have been on have been on {@link TypeResolutionEnvironment} + * but for legacy reasons was not. So it acts as the builder of {@link TypeResolutionEnvironment} objects + */ +@Internal public class TypeResolutionParameters { - private final GraphQLInterfaceType graphQLInterfaceType; - private final GraphQLUnionType graphQLUnionType; private final MergedField field; + private final GraphQLType fieldType; private final Object value; - private final Map argumentValues; + private final Supplier> argumentValues; private final GraphQLSchema schema; private final Object context; - - private TypeResolutionParameters(GraphQLInterfaceType graphQLInterfaceType, GraphQLUnionType graphQLUnionType, - MergedField field, Object value, Map argumentValues, GraphQLSchema schema, final Object context) { - this.graphQLInterfaceType = graphQLInterfaceType; - this.graphQLUnionType = graphQLUnionType; - this.field = field; - this.value = value; - this.argumentValues = argumentValues; - this.schema = schema; - this.context = context; - } - - public GraphQLInterfaceType getGraphQLInterfaceType() { - return graphQLInterfaceType; - } - - public GraphQLUnionType getGraphQLUnionType() { - return graphQLUnionType; + private final Object localContext; + private final GraphQLContext graphQLContext; + private final DataFetchingFieldSelectionSet selectionSet; + + private TypeResolutionParameters(Builder builder) { + this.field = builder.field; + this.fieldType = builder.fieldType; + this.value = builder.value; + this.argumentValues = builder.argumentValues; + this.schema = builder.schema; + this.context = builder.context; + this.graphQLContext = builder.graphQLContext; + this.localContext = builder.localContext; + this.selectionSet = builder.selectionSet; } public MergedField getField() { return field; } + public GraphQLType getFieldType() { + return fieldType; + } + public Object getValue() { return value; } public Map getArgumentValues() { - return argumentValues; + return argumentValues.get(); } public GraphQLSchema getSchema() { return schema; } + public DataFetchingFieldSelectionSet getSelectionSet() { + return selectionSet; + } + public static Builder newParameters() { return new Builder(); } + /** + * @return the legacy context object + * + * @deprecated use {@link #getGraphQLContext()} instead + */ + @Deprecated(since = "2021-07-05") public Object getContext() { return context; } + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + public Object getLocalContext() { + return localContext; + } + public static class Builder { private MergedField field; - private GraphQLInterfaceType graphQLInterfaceType; - private GraphQLUnionType graphQLUnionType; + private GraphQLType fieldType; private Object value; - private Map argumentValues; + private Supplier> argumentValues; private GraphQLSchema schema; private Object context; + private GraphQLContext graphQLContext; + private Object localContext; + private DataFetchingFieldSelectionSet selectionSet; public Builder field(MergedField field) { this.field = field; return this; } - public Builder graphQLInterfaceType(GraphQLInterfaceType graphQLInterfaceType) { - this.graphQLInterfaceType = graphQLInterfaceType; - return this; - } - - public Builder graphQLUnionType(GraphQLUnionType graphQLUnionType) { - this.graphQLUnionType = graphQLUnionType; + public Builder fieldType(GraphQLType fieldType) { + this.fieldType = fieldType; return this; } @@ -91,8 +113,8 @@ public Builder value(Object value) { return this; } - public Builder argumentValues(Map argumentValues) { - this.argumentValues = argumentValues; + public Builder argumentValues(Supplier> argumentValues) { + this.argumentValues = () -> ImmutableMapWithNullValues.copyOf(argumentValues.get()); return this; } @@ -101,13 +123,31 @@ public Builder schema(GraphQLSchema schema) { return this; } + @Deprecated(since = "2021-07-05") public Builder context(Object context) { this.context = context; return this; } - public TypeResolutionParameters build() { - return new TypeResolutionParameters(graphQLInterfaceType, graphQLUnionType, field, value, argumentValues, schema, context); + public Builder graphQLContext(GraphQLContext context) { + this.graphQLContext = context; + return this; + } + + public Builder localContext(Object localContext) { + this.localContext = localContext; + return this; + } + + public Builder selectionSet(DataFetchingFieldSelectionSet selectionSet) { + this.selectionSet = selectionSet; + return this; + } + + public TypeResolutionEnvironment build() { + // this build should have always been in TypeResolutionEnvironment but this little workaround improves it a smidge, + // and we can fix it up later so this class is redundant + return new TypeResolutionEnvironment(new TypeResolutionParameters(this)); } } } diff --git a/src/main/java/graphql/execution/UnknownOperationException.java b/src/main/java/graphql/execution/UnknownOperationException.java index 5eb5b67e66..6ef523c9b1 100644 --- a/src/main/java/graphql/execution/UnknownOperationException.java +++ b/src/main/java/graphql/execution/UnknownOperationException.java @@ -1,7 +1,13 @@ package graphql.execution; +import graphql.ErrorClassification; +import graphql.ErrorType; +import graphql.GraphQLError; import graphql.GraphQLException; import graphql.PublicApi; +import graphql.language.SourceLocation; + +import java.util.List; /** * This is thrown if multiple operations are defined in the query and @@ -9,9 +15,18 @@ * contained in the GraphQL query. */ @PublicApi -public class UnknownOperationException extends GraphQLException { - +public class UnknownOperationException extends GraphQLException implements GraphQLError { public UnknownOperationException(String message) { super(message); } + + @Override + public List getLocations() { + return null; + } + + @Override + public ErrorClassification getErrorType() { + return ErrorType.ValidationError; + } } diff --git a/src/main/java/graphql/execution/ValueUnboxer.java b/src/main/java/graphql/execution/ValueUnboxer.java index 2f60605250..e012d37225 100644 --- a/src/main/java/graphql/execution/ValueUnboxer.java +++ b/src/main/java/graphql/execution/ValueUnboxer.java @@ -2,9 +2,17 @@ import graphql.PublicSpi; +/** + * A value unboxer takes values that are wrapped in classes like {@link java.util.Optional} / {@link java.util.OptionalInt} etc.. + * and returns value from them. You can provide your own implementation if you have your own specific + * holder classes. + */ @PublicSpi public interface ValueUnboxer { + /** + * The default value unboxer handles JDK classes such as {@link java.util.Optional} and {@link java.util.OptionalInt} etc.. + */ ValueUnboxer DEFAULT = new DefaultValueUnboxer(); /** @@ -13,7 +21,6 @@ public interface ValueUnboxer { * unmodified * * @param object to unbox - * * @return unboxed object, or original if cannot unbox */ Object unbox(final Object object); diff --git a/src/main/java/graphql/execution/ValuesResolver.java b/src/main/java/graphql/execution/ValuesResolver.java index b765c2f818..357e19d64b 100644 --- a/src/main/java/graphql/execution/ValuesResolver.java +++ b/src/main/java/graphql/execution/ValuesResolver.java @@ -1,7 +1,11 @@ package graphql.execution; +import com.google.common.collect.Maps; +import graphql.GraphQLContext; import graphql.Internal; +import graphql.collect.ImmutableKit; +import graphql.execution.values.InputInterceptor; import graphql.language.Argument; import graphql.language.ArrayValue; import graphql.language.NullValue; @@ -10,29 +14,37 @@ import graphql.language.Value; import graphql.language.VariableDefinition; import graphql.language.VariableReference; -import graphql.schema.Coercing; +import graphql.normalized.NormalizedInputValue; +import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLEnumType; -import graphql.schema.GraphQLInputObjectField; import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLList; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLType; +import graphql.schema.InputValueWithState; import graphql.schema.visibility.GraphqlFieldVisibility; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; -import java.util.stream.Collectors; import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Assert.assertTrue; +import static graphql.execution.ValuesResolver.ValueMode.NORMALIZED; +import static graphql.execution.ValuesResolverConversion.externalValueToInternalValueImpl; import static graphql.schema.GraphQLTypeUtil.isList; import static graphql.schema.GraphQLTypeUtil.isNonNull; +import static graphql.schema.GraphQLTypeUtil.simplePrint; import static graphql.schema.GraphQLTypeUtil.unwrapOne; import static graphql.schema.visibility.DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY; @@ -40,287 +52,449 @@ @Internal public class ValuesResolver { + private ValuesResolver() { + } + + public enum ValueMode { + LITERAL, + NORMALIZED + } + /** * This method coerces the "raw" variables values provided to the engine. The coerced values will be used to * provide arguments to {@link graphql.schema.DataFetchingEnvironment} - * The coercing is ultimately done via {@link Coercing}. + * + * This method is called once per execution and also performs validation. * * @param schema the schema * @param variableDefinitions the variable definitions - * @param variableValues the supplied variables + * @param rawVariables the supplied variables + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * * @return coerced variable values as a map */ - public Map coerceVariableValues(GraphQLSchema schema, List variableDefinitions, Map variableValues) { + public static CoercedVariables coerceVariableValues(GraphQLSchema schema, + List variableDefinitions, + RawVariables rawVariables, + GraphQLContext graphqlContext, + Locale locale) throws CoercingParseValueException, NonNullableValueCoercedAsNullException { + + InputInterceptor inputInterceptor = graphqlContext.get(InputInterceptor.class); + return ValuesResolverConversion.externalValueToInternalValueForVariables( + inputInterceptor, + schema, + variableDefinitions, + rawVariables, + graphqlContext, + locale); + } + + + /** + * Normalized variables values are Literals with type information. No validation here! + * + * @param schema the schema to use + * @param variableDefinitions the list of variable definitions + * @param rawVariables the raw variables + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * + * @return a map of the normalised values + */ + public static NormalizedVariables getNormalizedVariableValues( + GraphQLSchema schema, + List variableDefinitions, + RawVariables rawVariables, + GraphQLContext graphqlContext, + Locale locale + ) { GraphqlFieldVisibility fieldVisibility = schema.getCodeRegistry().getFieldVisibility(); - Map coercedValues = new LinkedHashMap<>(); + Map result = Maps.newLinkedHashMapWithExpectedSize(variableDefinitions.size()); for (VariableDefinition variableDefinition : variableDefinitions) { String variableName = variableDefinition.getName(); GraphQLType variableType = TypeFromAST.getTypeFromAST(schema, variableDefinition.getType()); - - if (!variableValues.containsKey(variableName)) { - Value defaultValue = variableDefinition.getDefaultValue(); - if (defaultValue != null) { - Object coercedValue = coerceValueAst(fieldVisibility, variableType, variableDefinition.getDefaultValue(), null); - coercedValues.put(variableName, coercedValue); - } else if (isNonNull(variableType)) { - throw new NonNullableValueCoercedAsNullException(variableDefinition, variableType); + assertTrue(variableType instanceof GraphQLInputType); + // can be NullValue + Value defaultValue = variableDefinition.getDefaultValue(); + boolean hasValue = rawVariables.containsKey(variableName); + Object value = rawVariables.get(variableName); + if (!hasValue && defaultValue != null) { + result.put(variableName, new NormalizedInputValue(simplePrint(variableType), defaultValue)); + } else if (isNonNull(variableType) && (!hasValue || value == null)) { + return assertShouldNeverHappen("variable values are expected to be valid"); + } else if (hasValue) { + if (value == null) { + result.put(variableName, new NormalizedInputValue(simplePrint(variableType), null)); + } else { + Object literal = ValuesResolverConversion.externalValueToLiteral(fieldVisibility, value, (GraphQLInputType) variableType, NORMALIZED, graphqlContext, locale); + result.put(variableName, new NormalizedInputValue(simplePrint(variableType), literal)); } - } else { - Object value = variableValues.get(variableName); - Object coercedValue = getVariableValue(fieldVisibility, variableDefinition, variableType, value); - coercedValues.put(variableName, coercedValue); } } - - return coercedValues; + return NormalizedVariables.of(result); } - private Object getVariableValue(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, GraphQLType variableType, Object value) { - - if (value == null && variableDefinition.getDefaultValue() != null) { - return coerceValueAst(fieldVisibility, variableType, variableDefinition.getDefaultValue(), null); - } - - return coerceValue(fieldVisibility, variableDefinition, variableDefinition.getName(), variableType, value); - } - public Map getArgumentValues(List argumentTypes, List arguments, Map variables) { - GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry().fieldVisibility(DEFAULT_FIELD_VISIBILITY).build(); - return getArgumentValuesImpl(codeRegistry, argumentTypes, arguments, variables); - } - - public Map getArgumentValues(GraphQLCodeRegistry codeRegistry, List argumentTypes, List arguments, Map variables) { - return getArgumentValuesImpl(codeRegistry, argumentTypes, arguments, variables); + /** + * This is not used for validation: the argument literals are all validated and the variables are validated (when coerced) + * + * @param argumentTypes the list of argument types + * @param arguments the AST arguments + * @param coercedVariables the coerced variables + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * + * @return a map of named argument values + */ + public static Map getArgumentValues( + List argumentTypes, + List arguments, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + InputInterceptor inputInterceptor = graphqlContext.get(InputInterceptor.class); + return getArgumentValuesImpl(inputInterceptor, DEFAULT_FIELD_VISIBILITY, argumentTypes, arguments, coercedVariables, graphqlContext, locale); } - private Map getArgumentValuesImpl(GraphQLCodeRegistry codeRegistry, List argumentTypes, List arguments, Map variables) { + /** + * No validation as the arguments are assumed valid + * + * @param argumentTypes the list of argument types + * @param arguments the AST arguments + * @param normalizedVariables the normalised variables + * + * @return a map of named normalised values + */ + public static Map getNormalizedArgumentValues( + List argumentTypes, + List arguments, + Map normalizedVariables + ) { if (argumentTypes.isEmpty()) { - return Collections.emptyMap(); + return ImmutableKit.emptyMap(); } - Map result = new LinkedHashMap<>(); + Map result = new LinkedHashMap<>(); Map argumentMap = argumentMap(arguments); - for (GraphQLArgument fieldArgument : argumentTypes) { - String argName = fieldArgument.getName(); - Argument argument = argumentMap.get(argName); - Object value; - if (argument != null) { - value = coerceValueAst(codeRegistry.getFieldVisibility(), fieldArgument.getType(), argument.getValue(), variables); - } else { - value = fieldArgument.getDefaultValue(); + for (GraphQLArgument argumentDefinition : argumentTypes) { + String argumentName = argumentDefinition.getName(); + Argument argument = argumentMap.get(argumentName); + if (argument == null) { + continue; } - // only put an arg into the result IF they specified a variable at all or - // the default value ended up being something non null - if (argumentMap.containsKey(argName) || value != null) { - result.put(argName, value); + + // If a variable doesn't exist then we can't put it into the result Map + if (isVariableAbsent(argument.getValue(), normalizedVariables)) { + continue; } + + GraphQLInputType argumentType = argumentDefinition.getType(); + Object value = literalToNormalizedValue(DEFAULT_FIELD_VISIBILITY, argumentType, argument.getValue(), normalizedVariables); + result.put(argumentName, new NormalizedInputValue(simplePrint(argumentType), value)); } return result; } + @NonNull + public static Map getArgumentValues( + GraphQLCodeRegistry codeRegistry, + List argumentTypes, + List arguments, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + InputInterceptor inputInterceptor = graphqlContext.get(InputInterceptor.class); + return getArgumentValuesImpl(inputInterceptor, codeRegistry.getFieldVisibility(), argumentTypes, arguments, coercedVariables, graphqlContext, locale); + } - private Map argumentMap(List arguments) { - Map result = new LinkedHashMap<>(); - for (Argument argument : arguments) { - result.put(argument.getName(), argument); - } - return result; + /** + * Takes a value which can be in different states (internal, literal, external value) and converts into Literal + *

    + * This assumes the value is valid! + * + * @param fieldVisibility the field visibility to use + * @param inputValueWithState the input value + * @param type the type of input value + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * + * @return a value converted to a literal + */ + public static Value valueToLiteral( + @NonNull GraphqlFieldVisibility fieldVisibility, + @NonNull InputValueWithState inputValueWithState, + @NonNull GraphQLType type, + GraphQLContext graphqlContext, + Locale locale + ) { + return (Value) ValuesResolverConversion.valueToLiteralImpl( + fieldVisibility, + inputValueWithState, + type, + ValueMode.LITERAL, + graphqlContext, + locale); } + public static Value valueToLiteral( + @NonNull InputValueWithState inputValueWithState, + @NonNull GraphQLType type, + GraphQLContext graphqlContext, + Locale locale + ) { + return (Value) ValuesResolverConversion.valueToLiteralImpl( + DEFAULT_FIELD_VISIBILITY, + inputValueWithState, + type, + ValueMode.LITERAL, + graphqlContext, + locale); + } - @SuppressWarnings("unchecked") - private Object coerceValue(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, String inputName, GraphQLType graphQLType, Object value) { - try { - if (isNonNull(graphQLType)) { - Object returnValue = - coerceValue(fieldVisibility, variableDefinition, inputName, unwrapOne(graphQLType), value); - if (returnValue == null) { - throw new NonNullableValueCoercedAsNullException(variableDefinition, inputName, graphQLType); - } - return returnValue; - } + public static Object valueToInternalValue( + InputValueWithState inputValueWithState, + GraphQLInputType inputType, + GraphQLContext graphqlContext, + Locale locale + ) throws CoercingParseValueException, CoercingParseLiteralException { + InputInterceptor inputInterceptor = graphqlContext.get(InputInterceptor.class); + return ValuesResolverConversion.valueToInternalValueImpl( + inputInterceptor, + inputValueWithState, + inputType, + graphqlContext, + locale); + } - if (value == null) { - return null; - } + /** + * Converts an external value to an internal value + * + * @param fieldVisibility the field visibility to use + * @param externalValue the input external value + * @param type the type of input value + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * + * @return a value converted to an internal value + */ + public static Object externalValueToInternalValue( + GraphqlFieldVisibility fieldVisibility, + Object externalValue, + GraphQLInputType type, + GraphQLContext graphqlContext, + Locale locale + ) { + InputInterceptor inputInterceptor = graphqlContext.get(InputInterceptor.class); + return externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + type, + externalValue, + graphqlContext, + locale); + } - if (graphQLType instanceof GraphQLScalarType) { - return coerceValueForScalar((GraphQLScalarType) graphQLType, value); - } else if (graphQLType instanceof GraphQLEnumType) { - return coerceValueForEnum((GraphQLEnumType) graphQLType, value); - } else if (graphQLType instanceof GraphQLList) { - return coerceValueForList(fieldVisibility, variableDefinition, inputName, (GraphQLList) graphQLType, value); - } else if (graphQLType instanceof GraphQLInputObjectType) { - if (value instanceof Map) { - return coerceValueForInputObjectType(fieldVisibility, variableDefinition, (GraphQLInputObjectType) graphQLType, (Map) value); - } else { - throw CoercingParseValueException.newCoercingParseValueException() - .message("Expected type 'Map' but was '" + value.getClass().getSimpleName() + - "'. Variables for input objects must be an instance of type 'Map'.") - .build(); - } - } else { - return assertShouldNeverHappen("unhandled type %s", graphQLType); - } - } catch (CoercingParseValueException e) { - if (e.getLocations() != null) { - throw e; - } - throw CoercingParseValueException.newCoercingParseValueException() - .message("Variable '" + inputName + "' has an invalid value : " + e.getMessage()) - .extensions(e.getExtensions()) - .cause(e.getCause()) - .sourceLocation(variableDefinition.getSourceLocation()) - .build(); - } + @Nullable + @SuppressWarnings("unchecked") + public static T getInputValueImpl( + GraphQLInputType inputType, + InputValueWithState inputValue, + GraphQLContext graphqlContext, + Locale locale + ) { + if (inputValue.isNotSet()) { + return null; + } + return (T) valueToInternalValue( + inputValue, + inputType, + graphqlContext, + locale); } - private Object coerceValueForInputObjectType(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, GraphQLInputObjectType inputObjectType, Map input) { - Map result = new LinkedHashMap<>(); - List fields = fieldVisibility.getFieldDefinitions(inputObjectType); - List fieldNames = fields.stream().map(GraphQLInputObjectField::getName).collect(Collectors.toList()); - for (String inputFieldName : input.keySet()) { - if (!fieldNames.contains(inputFieldName)) { - throw new InputMapDefinesTooManyFieldsException(inputObjectType, inputFieldName); - } + + @NonNull + private static Map getArgumentValuesImpl( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + List argumentTypes, + List arguments, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + if (argumentTypes.isEmpty()) { + return ImmutableKit.emptyMap(); } - for (GraphQLInputObjectField inputField : fields) { - if (input.containsKey(inputField.getName()) || alwaysHasValue(inputField)) { - Object value = coerceValue(fieldVisibility, variableDefinition, - inputField.getName(), - inputField.getType(), - input.get(inputField.getName())); - result.put(inputField.getName(), value == null ? inputField.getDefaultValue() : value); + Map coercedValues = Maps.newLinkedHashMapWithExpectedSize(arguments.size()); + Map argumentMap = argumentMap(arguments); + for (GraphQLArgument argumentDefinition : argumentTypes) { + GraphQLInputType argumentType = argumentDefinition.getType(); + String argumentName = argumentDefinition.getName(); + Argument argument = argumentMap.get(argumentName); + InputValueWithState defaultValue = argumentDefinition.getArgumentDefaultValue(); + boolean hasValue = argument != null; + Object value; + Value argumentValue = argument != null ? argument.getValue() : null; + if (argumentValue instanceof VariableReference) { + String variableName = ((VariableReference) argumentValue).getName(); + hasValue = coercedVariables.containsKey(variableName); + value = coercedVariables.get(variableName); + } else { + value = argumentValue; } - } - return result; - } + if (!hasValue && argumentDefinition.hasSetDefaultValue()) { + Object coercedDefaultValue = ValuesResolverConversion.defaultValueToInternalValue( + inputInterceptor, + fieldVisibility, + defaultValue, + argumentType, + graphqlContext, + locale); + coercedValues.put(argumentName, coercedDefaultValue); + } else if (isNonNull(argumentType) && (!hasValue || ValuesResolverConversion.isNullValue(value))) { + throw new NonNullableValueCoercedAsNullException(argumentDefinition); + } else if (hasValue) { + if (ValuesResolverConversion.isNullValue(value)) { + coercedValues.put(argumentName, value); + } else if (argumentValue instanceof VariableReference) { + coercedValues.put(argumentName, value); + } else { + value = ValuesResolverConversion.literalToInternalValue(inputInterceptor, + fieldVisibility, + argumentType, + argument.getValue(), + coercedVariables, + graphqlContext, + locale); + coercedValues.put(argumentName, value); + } - private boolean alwaysHasValue(GraphQLInputObjectField inputField) { - return inputField.getDefaultValue() != null - || isNonNull(inputField.getType()); - } + ValuesResolverOneOfValidation.validateOneOfInputTypes(argumentType, value, argumentValue, argumentName, locale); - private Object coerceValueForScalar(GraphQLScalarType graphQLScalarType, Object value) { - return graphQLScalarType.getCoercing().parseValue(value); - } + } + } - private Object coerceValueForEnum(GraphQLEnumType graphQLEnumType, Object value) { - return graphQLEnumType.parseValue(value); + + return coercedValues; } - private List coerceValueForList(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, String inputName, GraphQLList graphQLList, Object value) { - if (value instanceof Iterable) { - List result = new ArrayList<>(); - for (Object val : (Iterable) value) { - result.add(coerceValue(fieldVisibility, variableDefinition, inputName, graphQLList.getWrappedType(), val)); - } - return result; - } else { - return Collections.singletonList(coerceValue(fieldVisibility, variableDefinition, inputName, graphQLList.getWrappedType(), value)); + private static Map argumentMap(List arguments) { + Map result = Maps.newLinkedHashMapWithExpectedSize(arguments.size()); + for (Argument argument : arguments) { + result.put(argument.getName(), argument); } + return result; } - private Object coerceValueAst(GraphqlFieldVisibility fieldVisibility, GraphQLType type, Value inputValue, Map variables) { + + public static Object literalToNormalizedValue(GraphqlFieldVisibility fieldVisibility, + GraphQLType type, + Value inputValue, + Map normalizedVariables + ) { if (inputValue instanceof VariableReference) { - return variables.get(((VariableReference) inputValue).getName()); + String varName = ((VariableReference) inputValue).getName(); + return normalizedVariables.get(varName).getValue(); } + if (inputValue instanceof NullValue) { return null; } if (type instanceof GraphQLScalarType) { - return parseLiteral(inputValue, ((GraphQLScalarType) type).getCoercing(), variables); + return inputValue; } if (isNonNull(type)) { - return coerceValueAst(fieldVisibility, unwrapOne(type), inputValue, variables); + return literalToNormalizedValue( + fieldVisibility, + unwrapOne(type), + inputValue, + normalizedVariables); } if (type instanceof GraphQLInputObjectType) { - return coerceValueAstForInputObject(fieldVisibility, (GraphQLInputObjectType) type, (ObjectValue) inputValue, variables); + return literalToNormalizedValueForInputObject( + fieldVisibility, + (GraphQLInputObjectType) type, + (ObjectValue) inputValue, + normalizedVariables); } if (type instanceof GraphQLEnumType) { - return ((GraphQLEnumType) type).parseLiteral(inputValue); + return inputValue; } if (isList(type)) { - return coerceValueAstForList(fieldVisibility, (GraphQLList) type, inputValue, variables); + return literalToNormalizedValueForList( + fieldVisibility, + (GraphQLList) type, + inputValue, + normalizedVariables); } return null; } - private Object parseLiteral(Value inputValue, Coercing coercing, Map variables) { - // the CoercingParseLiteralException exception that could happen here has been validated earlier via ValidationUtil - return coercing.parseLiteral(inputValue, variables); + private static Object literalToNormalizedValueForInputObject(GraphqlFieldVisibility fieldVisibility, + GraphQLInputObjectType type, + ObjectValue inputObjectLiteral, + Map normalizedVariables) { + Map result = new LinkedHashMap<>(); + + for (ObjectField field : inputObjectLiteral.getObjectFields()) { + // If a variable doesn't exist then we can't put it into the result Map + if (isVariableAbsent(field.getValue(), normalizedVariables)) { + continue; + } + + GraphQLInputType fieldType = type.getField(field.getName()).getType(); + Object fieldValue = literalToNormalizedValue( + fieldVisibility, + fieldType, + field.getValue(), + normalizedVariables); + result.put(field.getName(), new NormalizedInputValue(simplePrint(fieldType), fieldValue)); + } + return result; } - private Object coerceValueAstForList(GraphqlFieldVisibility fieldVisibility, GraphQLList graphQLList, Value value, Map variables) { + private static List literalToNormalizedValueForList(GraphqlFieldVisibility fieldVisibility, + GraphQLList type, + Value value, + Map normalizedVariables) { if (value instanceof ArrayValue) { - ArrayValue arrayValue = (ArrayValue) value; - List result = new ArrayList<>(); - for (Value singleValue : arrayValue.getValues()) { - result.add(coerceValueAst(fieldVisibility, graphQLList.getWrappedType(), singleValue, variables)); + List values = ((ArrayValue) value).getValues(); + List result = new ArrayList<>(values.size()); + for (Value valueInArray : values) { + Object normalisedValue = literalToNormalizedValue( + fieldVisibility, + type.getWrappedType(), + valueInArray, + normalizedVariables); + result.add(normalisedValue); } return result; } else { - return Collections.singletonList(coerceValueAst(fieldVisibility, graphQLList.getWrappedType(), value, variables)); + return Collections.singletonList(literalToNormalizedValue( + fieldVisibility, + type.getWrappedType(), + value, + normalizedVariables)); } } - private Object coerceValueAstForInputObject(GraphqlFieldVisibility fieldVisibility, GraphQLInputObjectType type, ObjectValue inputValue, Map variables) { - Map result = new LinkedHashMap<>(); - - Map inputValueFieldsByName = mapObjectValueFieldsByName(inputValue); - - List inputFields = fieldVisibility.getFieldDefinitions(type); - for (GraphQLInputObjectField inputTypeField : inputFields) { - if (inputValueFieldsByName.containsKey(inputTypeField.getName())) { - boolean putObjectInMap = true; - ObjectField field = inputValueFieldsByName.get(inputTypeField.getName()); - Value fieldInputValue = field.getValue(); - - Object fieldObject = null; - if (fieldInputValue instanceof VariableReference) { - String varName = ((VariableReference) fieldInputValue).getName(); - if (!variables.containsKey(varName)) { - putObjectInMap = false; - } else { - fieldObject = variables.get(varName); - } - } else { - fieldObject = coerceValueAst(fieldVisibility, inputTypeField.getType(), fieldInputValue, variables); - } - - if (fieldObject == null) { - if (! (field.getValue() instanceof NullValue)) { - fieldObject = inputTypeField.getDefaultValue(); - } - } - if (putObjectInMap) { - result.put(field.getName(), fieldObject); - } else { - assertNonNullInputField(inputTypeField); - } - } else if (inputTypeField.getDefaultValue() != null) { - result.put(inputTypeField.getName(), inputTypeField.getDefaultValue()); - } else { - assertNonNullInputField(inputTypeField); - } - } - return result; - } - - private void assertNonNullInputField(GraphQLInputObjectField inputTypeField) { - if (isNonNull(inputTypeField.getType())) { - throw new NonNullableValueCoercedAsNullException(inputTypeField); + /** + * @return true if variable is absent from input, and if value is NOT a variable then false + */ + private static boolean isVariableAbsent(Value value, Map variables) { + if (value instanceof VariableReference) { + VariableReference varRef = (VariableReference) value; + return !variables.containsKey(varRef.getName()); } - } - private Map mapObjectValueFieldsByName(ObjectValue inputValue) { - Map inputValueFieldsByName = new LinkedHashMap<>(); - for (ObjectField objectField : inputValue.getObjectFields()) { - inputValueFieldsByName.put(objectField.getName(), objectField); - } - return inputValueFieldsByName; + // Not variable, return false + return false; } } diff --git a/src/main/java/graphql/execution/ValuesResolverConversion.java b/src/main/java/graphql/execution/ValuesResolverConversion.java new file mode 100644 index 0000000000..20e9feb552 --- /dev/null +++ b/src/main/java/graphql/execution/ValuesResolverConversion.java @@ -0,0 +1,885 @@ +package graphql.execution; + +import com.google.common.collect.ImmutableList; +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.values.InputInterceptor; +import graphql.language.ArrayValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.Value; +import graphql.language.VariableDefinition; +import graphql.language.VariableReference; +import graphql.normalized.NormalizedInputValue; +import graphql.schema.CoercingParseValueException; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.InputValueWithState; +import graphql.schema.visibility.DefaultGraphqlFieldVisibility; +import graphql.schema.visibility.GraphqlFieldVisibility; +import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Assert.assertTrue; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.map; +import static graphql.execution.ValuesResolver.ValueMode.NORMALIZED; +import static graphql.language.NullValue.newNullValue; +import static graphql.language.ObjectField.newObjectField; +import static graphql.schema.GraphQLTypeUtil.isList; +import static graphql.schema.GraphQLTypeUtil.isNonNull; +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.schema.GraphQLTypeUtil.unwrapNonNull; +import static graphql.schema.GraphQLTypeUtil.unwrapOneAs; +import static graphql.schema.visibility.DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY; + +/** + * This class, originally broken out from {@link ValuesResolver} contains code for the conversion of values + * from one form (literal, external etc..) to another. + */ +@SuppressWarnings("rawtypes") +@Internal +class ValuesResolverConversion { + + static Object valueToLiteralImpl(GraphqlFieldVisibility fieldVisibility, + InputValueWithState inputValueWithState, + GraphQLType type, + ValuesResolver.ValueMode valueMode, + GraphQLContext graphqlContext, + Locale locale) { + if (inputValueWithState.isInternal()) { + if (valueMode == NORMALIZED) { + return assertShouldNeverHappen("can't infer normalized structure"); + } + Value value = ValuesResolverLegacy.valueToLiteralLegacy( + inputValueWithState.getValue(), + type, + graphqlContext, + locale); + // + // the valueToLiteralLegacy() nominally cant know if null means never set or is set to a null value + // but this code can know - its is SET to a value so, it MUST be a Null Literal + // this method would assert at the end of it if inputValueWithState.isNotSet() were true + // + return value == null ? NullValue.of() : value; + } + if (inputValueWithState.isLiteral()) { + return inputValueWithState.getValue(); + } + if (inputValueWithState.isExternal()) { + return externalValueToLiteral( + fieldVisibility, + inputValueWithState.getValue(), + (GraphQLInputType) type, + valueMode, + graphqlContext, + locale); + } + return assertShouldNeverHappen("unexpected value state " + inputValueWithState); + } + + /** + * Converts an external value to an internal value + * + * @param fieldVisibility the field visibility to use + * @param externalValue the input external value + * @param type the type of input value + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * + * @return a value converted to an internal value + */ + static Object externalValueToInternalValue(GraphqlFieldVisibility fieldVisibility, + Object externalValue, + GraphQLInputType type, + GraphQLContext graphqlContext, + Locale locale) { + InputInterceptor inputInterceptor = graphqlContext.get(InputInterceptor.class); + return externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + type, + externalValue, + graphqlContext, + locale); + } + + @Nullable + static Object valueToInternalValueImpl( + InputInterceptor inputInterceptor, + InputValueWithState inputValueWithState, + GraphQLInputType inputType, + GraphQLContext graphqlContext, + Locale locale + ) { + DefaultGraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; + + if (inputValueWithState.isInternal()) { + return inputValueWithState.getValue(); + } + if (inputValueWithState.isLiteral()) { + return literalToInternalValue( + inputInterceptor, + fieldVisibility, + inputType, + (Value) inputValueWithState.getValue(), + CoercedVariables.emptyVariables(), + graphqlContext, + locale); + } + if (inputValueWithState.isExternal()) { + return externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + inputType, + inputValueWithState.getValue(), + graphqlContext, + locale); + } + return assertShouldNeverHappen("unexpected value state " + inputValueWithState); + } + + /** + * No validation: the external value is assumed to be valid. + */ + static Object externalValueToLiteral( + GraphqlFieldVisibility fieldVisibility, + @Nullable Object value, + GraphQLInputType type, + ValuesResolver.ValueMode valueMode, + GraphQLContext graphqlContext, + Locale locale + ) { + if (value == null) { + return newNullValue().build(); + } + if (GraphQLTypeUtil.isNonNull(type)) { + return externalValueToLiteral( + fieldVisibility, + value, + (GraphQLInputType) unwrapNonNull(type), + valueMode, + graphqlContext, + locale); + } + if (type instanceof GraphQLScalarType) { + return externalValueToLiteralForScalar( + (GraphQLScalarType) type, + value, + graphqlContext, + locale); + } else if (type instanceof GraphQLEnumType) { + return externalValueToLiteralForEnum( + (GraphQLEnumType) type, + value, + graphqlContext, + locale); + } else if (type instanceof GraphQLList) { + return externalValueToLiteralForList( + fieldVisibility, + (GraphQLList) type, + value, + valueMode, + graphqlContext, + locale); + } else if (type instanceof GraphQLInputObjectType) { + return externalValueToLiteralForObject( + fieldVisibility, + (GraphQLInputObjectType) type, + value, + valueMode, + graphqlContext, + locale); + } else { + return assertShouldNeverHappen("unexpected type %s", type); + } + } + + /** + * No validation + */ + private static Value externalValueToLiteralForScalar( + GraphQLScalarType scalarType, + Object value, + GraphQLContext graphqlContext, + @NonNull Locale locale + ) { + return scalarType.getCoercing().valueToLiteral(value, graphqlContext, locale); + + } + + /** + * No validation + */ + private static Value externalValueToLiteralForEnum( + GraphQLEnumType enumType, + Object value, + GraphQLContext graphqlContext, + Locale locale) { + return enumType.valueToLiteral( + value, + graphqlContext, + locale); + } + + /** + * No validation + */ + @SuppressWarnings("unchecked") + private static Object externalValueToLiteralForList( + GraphqlFieldVisibility fieldVisibility, + GraphQLList listType, + Object value, + ValuesResolver.ValueMode valueMode, + GraphQLContext graphqlContext, + Locale locale + ) { + GraphQLInputType wrappedType = (GraphQLInputType) listType.getWrappedType(); + List valueList = FpKit.toListOrSingletonList(value); + ImmutableList.Builder resultBuilder = ImmutableList.builderWithExpectedSize(valueList.size()); + for (Object item : valueList) { + resultBuilder.add(externalValueToLiteral( + fieldVisibility, + item, + wrappedType, + valueMode, + graphqlContext, + locale)); + } + ImmutableList result = resultBuilder.build(); + + if (valueMode == NORMALIZED) { + return result; + } else { + return ArrayValue.newArrayValue().values((ImmutableList) result).build(); + } + } + + /** + * No validation + */ + @SuppressWarnings("unchecked") + private static Object externalValueToLiteralForObject( + GraphqlFieldVisibility fieldVisibility, + GraphQLInputObjectType inputObjectType, + Object inputValue, + ValuesResolver.ValueMode valueMode, + GraphQLContext graphqlContext, + Locale locale + ) { + assertTrue(inputValue instanceof Map, "Expect Map as input"); + Map inputMap = (Map) inputValue; + List fieldDefinitions = fieldVisibility.getFieldDefinitions(inputObjectType); + + Map normalizedResult = new LinkedHashMap<>(); + ImmutableList.Builder objectFields = ImmutableList.builder(); + for (GraphQLInputObjectField inputFieldDefinition : fieldDefinitions) { + GraphQLInputType fieldType = inputFieldDefinition.getType(); + String fieldName = inputFieldDefinition.getName(); + boolean hasValue = inputMap.containsKey(fieldName); + Object fieldValue = inputMap.getOrDefault(fieldName, null); + if (!hasValue && inputFieldDefinition.hasSetDefaultValue()) { + //TODO: consider valueMode + Object defaultValueLiteral = valueToLiteralImpl( + fieldVisibility, + inputFieldDefinition.getInputFieldDefaultValue(), + fieldType, + ValuesResolver.ValueMode.LITERAL, + graphqlContext, + locale); + if (valueMode == ValuesResolver.ValueMode.LITERAL) { + normalizedResult.put(fieldName, new NormalizedInputValue(simplePrint(fieldType), defaultValueLiteral)); + } else { + objectFields.add(newObjectField().name(fieldName).value((Value) defaultValueLiteral).build()); + } + } else if (hasValue) { + if (fieldValue == null) { + if (valueMode == NORMALIZED) { + normalizedResult.put(fieldName, new NormalizedInputValue(simplePrint(fieldType), null)); + } else { + objectFields.add(newObjectField().name(fieldName).value(newNullValue().build()).build()); + } + } else { + Object literal = externalValueToLiteral( + fieldVisibility, + fieldValue, + fieldType, + valueMode, + graphqlContext, locale); + if (valueMode == NORMALIZED) { + normalizedResult.put(fieldName, new NormalizedInputValue(simplePrint(fieldType), literal)); + } else { + objectFields.add(newObjectField().name(fieldName).value((Value) literal).build()); + } + } + } + } + if (valueMode == NORMALIZED) { + return normalizedResult; + } + return ObjectValue.newObjectValue().objectFields(objectFields.build()).build(); + } + + /** + * performs validation too + */ + static CoercedVariables externalValueToInternalValueForVariables( + InputInterceptor inputInterceptor, + GraphQLSchema schema, + List variableDefinitions, + RawVariables rawVariables, + GraphQLContext graphqlContext, Locale locale + ) { + GraphqlFieldVisibility fieldVisibility = schema.getCodeRegistry().getFieldVisibility(); + Map coercedValues = new LinkedHashMap<>(); + for (VariableDefinition variableDefinition : variableDefinitions) { + try { + String variableName = variableDefinition.getName(); + GraphQLType variableType = TypeFromAST.getTypeFromAST(schema, variableDefinition.getType()); + assertTrue(variableType instanceof GraphQLInputType); + GraphQLInputType variableInputType = (GraphQLInputType) variableType; + // can be NullValue + Value defaultValue = variableDefinition.getDefaultValue(); + boolean hasValue = rawVariables.containsKey(variableName); + Object value = rawVariables.get(variableName); + if (!hasValue && defaultValue != null) { + Object coercedDefaultValue = literalToInternalValue( + inputInterceptor, + fieldVisibility, + variableInputType, + defaultValue, + CoercedVariables.emptyVariables(), + graphqlContext, + locale); + coercedValues.put(variableName, coercedDefaultValue); + } else if (isNonNull(variableType) && (!hasValue || value == null)) { + throw new NonNullableValueCoercedAsNullException(variableDefinition, variableType); + } else if (hasValue) { + if (value == null) { + coercedValues.put(variableName, null); + } else { + Object coercedValue = externalValueToInternalValueImpl( + variableName, + inputInterceptor, + fieldVisibility, + variableInputType, + value, + graphqlContext, + locale); + coercedValues.put(variableName, coercedValue); + } + } + } catch (CoercingParseValueException e) { + throw CoercingParseValueException.newCoercingParseValueException() + .message(String.format("Variable '%s' has an invalid value: %s", variableDefinition.getName(), e.getMessage())) + .extensions(e.getExtensions()) + .cause(e.getCause()) + .sourceLocation(variableDefinition.getSourceLocation()) + .build(); + } catch (NonNullableValueCoercedAsNullException e) { + throw new NonNullableValueCoercedAsNullException(variableDefinition, e.getMessage()); + } + } + + return CoercedVariables.of(coercedValues); + } + + static Object externalValueToInternalValueImpl( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLInputType graphQLType, + Object originalValue, + GraphQLContext graphqlContext, + Locale locale + ) throws NonNullableValueCoercedAsNullException, CoercingParseValueException { + return externalValueToInternalValueImpl("externalValue", + inputInterceptor, + fieldVisibility, + graphQLType, + originalValue, + graphqlContext, + locale); + } + + /** + * Performs validation too + */ + static Object externalValueToInternalValueImpl( + String variableName, + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLInputType graphQLType, + Object originalValue, + GraphQLContext graphqlContext, + Locale locale + ) throws NonNullableValueCoercedAsNullException, CoercingParseValueException { + if (isNonNull(graphQLType)) { + Object returnValue = externalValueToInternalValueImpl( + variableName, + inputInterceptor, + fieldVisibility, + unwrapOneAs(graphQLType), + originalValue, + graphqlContext, + locale); + if (returnValue == null) { + throw new NonNullableValueCoercedAsNullException(graphQLType); + } + return returnValue; + } + // + // we have a @Internal hook that allows input values to be changed before they are + // presented to scalars and enums - if it's not present then the cost is an extra `if` + // statement. We expect this to be NOT present most of the time + // + Object value = originalValue; + if (inputInterceptor != null) { + value = inputInterceptor.intercept(originalValue, graphQLType, graphqlContext, locale); + } + if (value == null) { + return null; + } + + if (graphQLType instanceof GraphQLScalarType) { + return externalValueToInternalValueForScalar( + (GraphQLScalarType) graphQLType, + value, + graphqlContext, + locale); + } else if (graphQLType instanceof GraphQLEnumType) { + return externalValueToInternalValueForEnum( + (GraphQLEnumType) graphQLType, + value, + graphqlContext, + locale); + } else if (graphQLType instanceof GraphQLList) { + return externalValueToInternalValueForList( + inputInterceptor, + fieldVisibility, + (GraphQLList) graphQLType, + value, + graphqlContext, + locale); + } else if (graphQLType instanceof GraphQLInputObjectType) { + if (value instanceof Map) { + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) graphQLType; + //noinspection unchecked + Map coercedMap = externalValueToInternalValueForObject( + inputInterceptor, + fieldVisibility, + inputObjectType, + (Map) value, + graphqlContext, + locale); + + ValuesResolverOneOfValidation.validateOneOfInputTypes(inputObjectType, coercedMap, null, variableName, locale); + return coercedMap; + } else { + throw CoercingParseValueException.newCoercingParseValueException() + .message("Expected type 'Map' but was '" + value.getClass().getSimpleName() + + "'. Variables for input objects must be an instance of type 'Map'.") + .build(); + } + } else { + return assertShouldNeverHappen("unhandled type %s", graphQLType); + } + } + + /** + * performs validation + */ + private static Map externalValueToInternalValueForObject( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLInputObjectType inputObjectType, + Map inputMap, + GraphQLContext graphqlContext, + Locale locale + ) throws NonNullableValueCoercedAsNullException, CoercingParseValueException { + List fieldDefinitions = fieldVisibility.getFieldDefinitions(inputObjectType); + List fieldNames = map(fieldDefinitions, GraphQLInputObjectField::getName); + for (String providedFieldName : inputMap.keySet()) { + if (!fieldNames.contains(providedFieldName)) { + throw new InputMapDefinesTooManyFieldsException(inputObjectType, providedFieldName); + } + } + + Map coercedValues = new LinkedHashMap<>(); + + for (GraphQLInputObjectField inputFieldDefinition : fieldDefinitions) { + GraphQLInputType fieldType = inputFieldDefinition.getType(); + String fieldName = inputFieldDefinition.getName(); + InputValueWithState defaultValue = inputFieldDefinition.getInputFieldDefaultValue(); + boolean hasValue = inputMap.containsKey(fieldName); + Object value = inputMap.getOrDefault(fieldName, null); + if (!hasValue && inputFieldDefinition.hasSetDefaultValue()) { + Object coercedDefaultValue = defaultValueToInternalValue( + inputInterceptor, + fieldVisibility, + defaultValue, + fieldType, + graphqlContext, + locale); + coercedValues.put(fieldName, coercedDefaultValue); + } else if (isNonNull(fieldType) && (!hasValue || value == null)) { + throw new NonNullableValueCoercedAsNullException(fieldName, emptyList(), fieldType); + } else if (hasValue) { + if (value == null) { + coercedValues.put(fieldName, null); + } else { + value = externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + fieldType, + value, + graphqlContext, + locale); + coercedValues.put(fieldName, value); + } + } + } + return coercedValues; + } + + /** + * including validation + */ + private static Object externalValueToInternalValueForScalar( + GraphQLScalarType graphQLScalarType, + Object value, + GraphQLContext graphqlContext, + Locale locale + ) throws CoercingParseValueException { + return graphQLScalarType.getCoercing().parseValue( + value, + graphqlContext, + locale); + } + + /** + * including validation + */ + private static Object externalValueToInternalValueForEnum( + GraphQLEnumType graphQLEnumType, + Object value, + GraphQLContext graphqlContext, + Locale locale + ) throws CoercingParseValueException { + return graphQLEnumType.parseValue( + value, + graphqlContext, + locale); + } + + /** + * including validation + */ + private static List externalValueToInternalValueForList( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLList graphQLList, + Object value, + GraphQLContext graphqlContext, + Locale locale + ) throws CoercingParseValueException, NonNullableValueCoercedAsNullException { + + GraphQLInputType wrappedType = (GraphQLInputType) graphQLList.getWrappedType(); + List listOrSingletonList = FpKit.toListOrSingletonList(value); + List list = FpKit.arrayListSizedTo(listOrSingletonList); + for (Object val : listOrSingletonList) { + list.add(externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + wrappedType, + val, + graphqlContext, + locale)); + } + return list; + } + + /** + * No validation (it was checked before via ArgumentsOfCorrectType and VariableDefaultValuesOfCorrectType) + * + * @param fieldVisibility the field visibility + * @param type the type of the input value + * @param inputValue the AST literal to be changed + * @param coercedVariables the coerced variable values + * @param graphqlContext the GraphqlContext to use + * @param locale the Locale to use + * + * @return literal converted to an internal value + */ + static Object literalToInternalValue( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLInputType type, + Value inputValue, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + return literalToInternalValueImpl( + inputInterceptor, + fieldVisibility, + type, + inputValue, + coercedVariables, + graphqlContext, + locale); + } + + @Nullable + private static Object literalToInternalValueImpl( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLType type, + Value inputValue, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + if (inputValue instanceof VariableReference) { + String variableName = ((VariableReference) inputValue).getName(); + return coercedVariables.get(variableName); + } + if (inputValue instanceof NullValue) { + return null; + } + if (type instanceof GraphQLScalarType) { + return literalToInternalValueForScalar( + inputValue, + (GraphQLScalarType) type, + coercedVariables, + graphqlContext, + locale); + } + if (isNonNull(type)) { + return literalToInternalValue( + inputInterceptor, + fieldVisibility, + unwrapOneAs(type), + inputValue, + coercedVariables, + graphqlContext, + locale); + } + if (type instanceof GraphQLInputObjectType) { + return literalToInternalValueForInputObject( + inputInterceptor, + fieldVisibility, + (GraphQLInputObjectType) type, + (ObjectValue) inputValue, + coercedVariables, + graphqlContext, + locale); + } + if (type instanceof GraphQLEnumType) { + return ((GraphQLEnumType) type).parseLiteral(inputValue, graphqlContext, locale); + } + if (isList(type)) { + return literalToInternalValueForList( + inputInterceptor, + fieldVisibility, + (GraphQLList) type, + inputValue, + coercedVariables, + graphqlContext, + locale); + } + return null; + } + + /** + * no validation + */ + private static Object literalToInternalValueForScalar( + Value inputValue, + GraphQLScalarType scalarType, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + @NonNull Locale locale + ) { + // the CoercingParseLiteralException exception that could happen here has been validated earlier via ValidationUtil + return scalarType.getCoercing().parseLiteral( + inputValue, + coercedVariables, + graphqlContext, + locale); + } + + /** + * no validation + */ + private static Object literalToInternalValueForList( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLList graphQLList, + Value value, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + + GraphQLInputType inputType = (GraphQLInputType) graphQLList.getWrappedType(); + if (value instanceof ArrayValue) { + ArrayValue arrayValue = (ArrayValue) value; + List result = new ArrayList<>(); + for (Value singleValue : arrayValue.getValues()) { + result.add(literalToInternalValue( + inputInterceptor, + fieldVisibility, + inputType, + singleValue, + coercedVariables, + graphqlContext, + locale)); + } + return result; + } else { + return Collections.singletonList( + literalToInternalValue( + inputInterceptor, + fieldVisibility, + inputType, + value, + coercedVariables, + graphqlContext, + locale)); + } + } + + /** + * no validation + */ + private static Object literalToInternalValueForInputObject( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLInputObjectType type, + ObjectValue inputValue, + CoercedVariables coercedVariables, + GraphQLContext graphqlContext, + Locale locale + ) { + Map coercedValues = new LinkedHashMap<>(); + + Map inputFieldsByName = mapObjectValueFieldsByName(inputValue); + + + List inputFieldTypes = fieldVisibility.getFieldDefinitions(type); + for (GraphQLInputObjectField inputFieldDefinition : inputFieldTypes) { + GraphQLInputType fieldType = inputFieldDefinition.getType(); + String fieldName = inputFieldDefinition.getName(); + ObjectField field = inputFieldsByName.get(fieldName); + boolean hasValue = field != null; + Object value; + Value fieldValue = field != null ? field.getValue() : null; + if (fieldValue instanceof VariableReference) { + String variableName = ((VariableReference) fieldValue).getName(); + hasValue = coercedVariables.containsKey(variableName); + value = coercedVariables.get(variableName); + } else { + value = fieldValue; + } + if (!hasValue && inputFieldDefinition.hasSetDefaultValue()) { + Object coercedDefaultValue = defaultValueToInternalValue( + inputInterceptor, + fieldVisibility, + inputFieldDefinition.getInputFieldDefaultValue(), + fieldType, + graphqlContext, + locale); + coercedValues.put(fieldName, coercedDefaultValue); + } else if (isNonNull(fieldType) && (!hasValue || isNullValue(value))) { + return assertShouldNeverHappen("Should have been validated before"); + } else if (hasValue) { + if (isNullValue(value)) { + coercedValues.put(fieldName, value); + } else if (fieldValue instanceof VariableReference) { + coercedValues.put(fieldName, value); + } else { + value = literalToInternalValue( + inputInterceptor, + fieldVisibility, + fieldType, + fieldValue, + coercedVariables, + graphqlContext, + locale); + coercedValues.put(fieldName, value); + } + } + } + return coercedValues; + } + + static boolean isNullValue(Object value) { + if (value == null) { + return true; + } + if (!(value instanceof NormalizedInputValue)) { + return false; + } + return ((NormalizedInputValue) value).getValue() == null; + } + + private static Map mapObjectValueFieldsByName(ObjectValue inputValue) { + Map inputValueFieldsByName = new LinkedHashMap<>(); + for (ObjectField objectField : inputValue.getObjectFields()) { + inputValueFieldsByName.put(objectField.getName(), objectField); + } + return inputValueFieldsByName; + } + + static Object defaultValueToInternalValue( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + InputValueWithState defaultValue, + GraphQLInputType type, + GraphQLContext graphqlContext, + Locale locale + ) { + if (defaultValue.isInternal()) { + return defaultValue.getValue(); + } + if (defaultValue.isLiteral()) { + // default value literals can't reference variables, this is why the variables are empty + return literalToInternalValue( + inputInterceptor, + fieldVisibility, + type, + (Value) defaultValue.getValue(), + CoercedVariables.emptyVariables(), + graphqlContext, + locale); + } + if (defaultValue.isExternal()) { + // performs validation too + return externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + type, + defaultValue.getValue(), + graphqlContext, + locale); + } + return assertShouldNeverHappen(); + } +} diff --git a/src/main/java/graphql/execution/ValuesResolverLegacy.java b/src/main/java/graphql/execution/ValuesResolverLegacy.java new file mode 100644 index 0000000000..704b365132 --- /dev/null +++ b/src/main/java/graphql/execution/ValuesResolverLegacy.java @@ -0,0 +1,157 @@ +package graphql.execution; + +import graphql.AssertException; +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.Scalars; +import graphql.VisibleForTesting; +import graphql.language.ArrayValue; +import graphql.language.BooleanValue; +import graphql.language.EnumValue; +import graphql.language.FloatValue; +import graphql.language.IntValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLNonNull; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLType; +import graphql.schema.PropertyDataFetcherHelper; +import graphql.util.FpKit; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import static graphql.Assert.assertTrue; +import static graphql.language.ObjectField.newObjectField; +import static graphql.schema.GraphQLTypeUtil.isList; +import static graphql.schema.GraphQLTypeUtil.isNonNull; + +/* + * ======================LEGACY=======+TO BE REMOVED IN THE FUTURE =============== + */ + +@Internal +class ValuesResolverLegacy { + /** + * Legacy logic to convert an arbitrary java object to an Ast Literal. + * Only provided here to preserve backwards compatibility. + */ + @VisibleForTesting + static Value valueToLiteralLegacy(Object value, GraphQLType type, GraphQLContext graphqlContext, Locale locale) { + assertTrue(!(value instanceof Value), "Unexpected literal %s", value); + if (value == null) { + return null; + } + + if (isNonNull(type)) { + return handleNonNullLegacy(value, (GraphQLNonNull) type, graphqlContext, locale); + } + + // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but + // the value is not an array, convert the value using the list's item type. + if (isList(type)) { + return handleListLegacy(value, (GraphQLList) type, graphqlContext, locale); + } + + // Populate the fields of the input object by creating ASTs from each value + // in the JavaScript object according to the fields in the input type. + if (type instanceof GraphQLInputObjectType) { + return handleInputObjectLegacy(value, (GraphQLInputObjectType) type, graphqlContext, locale); + } + + if (!(type instanceof GraphQLScalarType || type instanceof GraphQLEnumType)) { + throw new AssertException("Must provide Input Type, cannot use: " + type.getClass()); + } + + // Since value is an internally represented value, it must be serialized + // to an externally represented value before converting into an AST. + final Object serialized = serializeLegacy(type, value, graphqlContext, locale); + + // Others serialize based on their corresponding JavaScript scalar types. + if (serialized instanceof Boolean) { + return BooleanValue.newBooleanValue().value((Boolean) serialized).build(); + } + + String stringValue = serialized.toString(); + // numbers can be Int or Float values. + if (serialized instanceof Number) { + return handleNumberLegacy(stringValue); + } + + if (serialized instanceof String) { + // Enum types use Enum literals. + if (type instanceof GraphQLEnumType) { + return EnumValue.newEnumValue().name(stringValue).build(); + } + + // ID types can use Int literals. + if (type == Scalars.GraphQLID && stringValue.matches("^[0-9]+$")) { + return IntValue.newIntValue().value(new BigInteger(stringValue)).build(); + } + + return StringValue.newStringValue().value(stringValue).build(); + } + + throw new AssertException("'Cannot convert value to AST: " + serialized); + } + + private static Value handleInputObjectLegacy(Object javaValue, GraphQLInputObjectType type, GraphQLContext graphqlContext, Locale locale) { + List fields = type.getFields(); + List fieldNodes = new ArrayList<>(); + fields.forEach(field -> { + String fieldName = field.getName(); + GraphQLInputType fieldType = field.getType(); + Object fieldValueObj = PropertyDataFetcherHelper.getPropertyValue(fieldName, javaValue, fieldType); + Value nodeValue = valueToLiteralLegacy(fieldValueObj, fieldType, graphqlContext, locale); + if (nodeValue != null) { + fieldNodes.add(newObjectField().name(fieldName).value(nodeValue).build()); + } + }); + return ObjectValue.newObjectValue().objectFields(fieldNodes).build(); + } + + private static Value handleNumberLegacy(String stringValue) { + if (stringValue.matches("^[0-9]+$")) { + return IntValue.newIntValue().value(new BigInteger(stringValue)).build(); + } else { + return FloatValue.newFloatValue().value(new BigDecimal(stringValue)).build(); + } + } + + @SuppressWarnings("rawtypes") + private static Value handleListLegacy(Object value, GraphQLList type, GraphQLContext graphqlContext, Locale locale) { + GraphQLType itemType = type.getWrappedType(); + if (FpKit.isIterable(value)) { + List listOrSingletonList = FpKit.toListOrSingletonList(value); + List valuesNodes = FpKit.arrayListSizedTo(listOrSingletonList); + for (Object item : listOrSingletonList) { + valuesNodes.add(valueToLiteralLegacy(item, itemType, graphqlContext, locale)); + } + return ArrayValue.newArrayValue().values(valuesNodes).build(); + } + return valueToLiteralLegacy(value, itemType, graphqlContext, locale); + } + + private static Value handleNonNullLegacy(Object _value, GraphQLNonNull type, GraphQLContext graphqlContext, Locale locale) { + GraphQLType wrappedType = type.getWrappedType(); + return valueToLiteralLegacy(_value, wrappedType, graphqlContext, locale); + } + + private static Object serializeLegacy(GraphQLType type, Object value, GraphQLContext graphqlContext, Locale locale) { + if (type instanceof GraphQLScalarType) { + return ((GraphQLScalarType) type).getCoercing().serialize(value, graphqlContext, locale); + } else { + return ((GraphQLEnumType) type).serialize(value, graphqlContext, locale); + } + } +} diff --git a/src/main/java/graphql/execution/ValuesResolverOneOfValidation.java b/src/main/java/graphql/execution/ValuesResolverOneOfValidation.java new file mode 100644 index 0000000000..9955ce050d --- /dev/null +++ b/src/main/java/graphql/execution/ValuesResolverOneOfValidation.java @@ -0,0 +1,110 @@ +package graphql.execution; + +import graphql.Assert; +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.ArrayValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.Value; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeUtil; + +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +import static graphql.schema.GraphQLTypeUtil.isList; + +@Internal +final class ValuesResolverOneOfValidation { + + @SuppressWarnings("unchecked") + static void validateOneOfInputTypes(GraphQLType type, Object inputValue, Value argumentValue, String argumentName, Locale locale) { + GraphQLType unwrappedNonNullType = GraphQLTypeUtil.unwrapNonNull(type); + + if (isList(unwrappedNonNullType) + && !ValuesResolverConversion.isNullValue(inputValue) + && inputValue instanceof List + && argumentValue instanceof ArrayValue) { + GraphQLType elementType = ((GraphQLList) unwrappedNonNullType).getWrappedType(); + List inputList = (List) inputValue; + List argumentList = ((ArrayValue) argumentValue).getValues(); + + for (int i = 0; i < argumentList.size(); i++) { + validateOneOfInputTypes(elementType, inputList.get(i), argumentList.get(i), argumentName, locale); + } + } + + if (unwrappedNonNullType instanceof GraphQLInputObjectType && !ValuesResolverConversion.isNullValue(inputValue)) { + Assert.assertTrue(inputValue instanceof Map, "The coerced argument %s GraphQLInputObjectType is unexpectedly not a map", argumentName); + Map objectMap = (Map) inputValue; + + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) unwrappedNonNullType; + + if (inputObjectType.isOneOf()) { + validateOneOfInputTypesInternal(inputObjectType, argumentValue, objectMap, locale); + } + + for (GraphQLInputObjectField fieldDefinition : inputObjectType.getFields()) { + GraphQLInputType childFieldType = fieldDefinition.getType(); + String childFieldName = fieldDefinition.getName(); + Object childFieldInputValue = objectMap.get(childFieldName); + + if (argumentValue instanceof ObjectValue) { + List values = ((ObjectValue) argumentValue).getObjectFields().stream() + .filter(of -> of.getName().equals(childFieldName)) + .map(ObjectField::getValue) + .collect(Collectors.toList()); + + if (values.size() > 1) { + Assert.assertShouldNeverHappen("argument %s has %s object fields with the same name: '%s'. A maximum of 1 is expected", argumentName, values.size(), childFieldName); + } else if (!values.isEmpty()) { + validateOneOfInputTypes(childFieldType, childFieldInputValue, values.get(0), argumentName, locale); + } + } else { + validateOneOfInputTypes(childFieldType, childFieldInputValue, argumentValue, argumentName, locale); + } + } + } + } + + private static void validateOneOfInputTypesInternal(GraphQLInputObjectType oneOfInputType, Value argumentValue, Map objectMap, Locale locale) { + final String fieldName; + if (argumentValue instanceof ObjectValue) { + List objectFields = ((ObjectValue) argumentValue).getObjectFields(); + if (objectFields.size() != 1) { + throwNotOneFieldError(oneOfInputType, locale); + } + + fieldName = objectFields.iterator().next().getName(); + } else { + if (objectMap.size() != 1) { + throwNotOneFieldError(oneOfInputType, locale); + } + + fieldName = objectMap.keySet().iterator().next(); + } + + if (objectMap.get(fieldName) == null) { + throwValueIsNullError(oneOfInputType, locale, fieldName); + } + } + + private static void throwValueIsNullError(GraphQLInputObjectType oneOfInputType, Locale locale, String fieldName) { + String msg = I18n.i18n(I18n.BundleType.Execution, locale) + .msg("Execution.handleOneOfValueIsNullError", oneOfInputType.getName() + "." + fieldName); + throw new OneOfNullValueException(msg); + } + + private static void throwNotOneFieldError(GraphQLInputObjectType oneOfInputType, Locale locale) { + String msg = I18n.i18n(I18n.BundleType.Execution, locale) + .msg("Execution.handleOneOfNotOneFieldError", oneOfInputType.getName()); + throw new OneOfTooManyKeysException(msg); + } +} diff --git a/src/main/java/graphql/execution/batched/BatchAssertionFailed.java b/src/main/java/graphql/execution/batched/BatchAssertionFailed.java deleted file mode 100644 index 68541862d7..0000000000 --- a/src/main/java/graphql/execution/batched/BatchAssertionFailed.java +++ /dev/null @@ -1,23 +0,0 @@ -package graphql.execution.batched; - -import graphql.GraphQLException; - - -@Deprecated -public class BatchAssertionFailed extends GraphQLException { - public BatchAssertionFailed() { - super(); - } - - public BatchAssertionFailed(String message) { - super(message); - } - - public BatchAssertionFailed(String message, Throwable cause) { - super(message, cause); - } - - public BatchAssertionFailed(Throwable cause) { - super(cause); - } -} diff --git a/src/main/java/graphql/execution/batched/Batched.java b/src/main/java/graphql/execution/batched/Batched.java deleted file mode 100644 index 6dce1f6f3c..0000000000 --- a/src/main/java/graphql/execution/batched/Batched.java +++ /dev/null @@ -1,61 +0,0 @@ -package graphql.execution.batched; - -import graphql.schema.DataFetchingEnvironment; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - *

    - * When placed on {@link graphql.schema.DataFetcher#get(DataFetchingEnvironment)}, indicates that this DataFetcher is batched. - * This annotation must be used in conjunction with {@link BatchedExecutionStrategy}. Batching is valuable in many - * situations, such as when a {@link graphql.schema.DataFetcher} must make a network or file system request. - *

    - *

    - * When a {@link graphql.schema.DataFetcher} is batched, the {@link DataFetchingEnvironment#getSource()} method is - * guaranteed to return a {@link java.util.List}. The {@link graphql.schema.DataFetcher#get(DataFetchingEnvironment)} - * method MUST return a parallel {@link java.util.List} which is equivalent to running a {@link graphql.schema.DataFetcher} - * over each input element individually. - *

    - *

    - * Using the {@link Batched} annotation is equivalent to implementing {@link BatchedDataFetcher} instead of {@link graphql.schema.DataFetcher}. - * It is preferred to use the {@link Batched} annotation. - *

    - * For example, the following two {@link graphql.schema.DataFetcher} objects are interchangeable if used with a - * {@link BatchedExecutionStrategy}. - *
    - * 
    - * new DataFetcher() {
    - *   {@literal @}Override
    - *   {@literal @}Batched
    - *   public Object get(DataFetchingEnvironment environment) {
    - *     {@literal List retVal = new ArrayList<>();}
    - *     {@literal for (String s: (List) environment.getSource()) {}
    - *       retVal.add(s + environment.getArgument("text"));
    - *     }
    - *     return retVal;
    - *   }
    - * }
    - * 
    - * 
    - *
    - * 
    - * new DataFetcher() {
    - *   {@literal @}Override
    - *   public Object get(DataFetchingEnvironment e) {
    - *     return ((String)e.getSource()) + e.getArgument("text");
    - *   }
    - * }
    - * 
    - * 
    - * - * @deprecated This has been deprecated in favour of using {@link graphql.execution.AsyncExecutionStrategy} and {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Deprecated -public @interface Batched { -} diff --git a/src/main/java/graphql/execution/batched/BatchedDataFetcher.java b/src/main/java/graphql/execution/batched/BatchedDataFetcher.java deleted file mode 100644 index ae2eeb4569..0000000000 --- a/src/main/java/graphql/execution/batched/BatchedDataFetcher.java +++ /dev/null @@ -1,12 +0,0 @@ -package graphql.execution.batched; - -import graphql.schema.DataFetcher; - -/** - * See {@link Batched}. - * @deprecated This has been deprecated in favour of using {@link graphql.execution.AsyncExecutionStrategy} and {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} - */ -@Deprecated -public interface BatchedDataFetcher extends DataFetcher { - // Marker interface -} diff --git a/src/main/java/graphql/execution/batched/BatchedDataFetcherFactory.java b/src/main/java/graphql/execution/batched/BatchedDataFetcherFactory.java deleted file mode 100644 index 8bc3bc3e52..0000000000 --- a/src/main/java/graphql/execution/batched/BatchedDataFetcherFactory.java +++ /dev/null @@ -1,35 +0,0 @@ -package graphql.execution.batched; - -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; - -import java.lang.reflect.Method; - -/** - * Produces a BatchedDataFetcher for a given DataFetcher. - * If that fetcher is already a BatchedDataFetcher we return it. - * If that fetcher's get method is annotated @Batched then we delegate to it directly. - * Otherwise we wrap the fetcher in a BatchedDataFetcher that iterates over the sources and invokes the delegate - * on each source. Note that this forgoes any performance benefits of batching, - * so regular DataFetchers should normally only be used if they are in-memory. - * - * @deprecated This has been deprecated in favour of using {@link graphql.execution.AsyncExecutionStrategy} and {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} - */ -@Deprecated -public class BatchedDataFetcherFactory { - public BatchedDataFetcher create(final DataFetcher supplied) { - if (supplied instanceof BatchedDataFetcher) { - return (BatchedDataFetcher) supplied; - } - try { - Method getMethod = supplied.getClass().getMethod("get", DataFetchingEnvironment.class); - Batched batched = getMethod.getAnnotation(Batched.class); - if (batched != null) { - return supplied::get; - } - } catch (NoSuchMethodException e) { - throw new IllegalArgumentException(e); - } - return new UnbatchedDataFetcher(supplied); - } -} diff --git a/src/main/java/graphql/execution/batched/BatchedExecutionStrategy.java b/src/main/java/graphql/execution/batched/BatchedExecutionStrategy.java deleted file mode 100644 index 23c6b2f113..0000000000 --- a/src/main/java/graphql/execution/batched/BatchedExecutionStrategy.java +++ /dev/null @@ -1,501 +0,0 @@ -package graphql.execution.batched; - -import graphql.Assert; -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.PublicApi; -import graphql.TrivialDataFetcher; -import graphql.execution.Async; -import graphql.execution.DataFetcherExceptionHandler; -import graphql.execution.DataFetcherExceptionHandlerParameters; -import graphql.execution.DataFetcherExceptionHandlerResult; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionPath; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.ExecutionStrategy; -import graphql.execution.ExecutionStrategyParameters; -import graphql.execution.FieldCollectorParameters; -import graphql.execution.MergedField; -import graphql.execution.MergedSelectionSet; -import graphql.execution.NonNullableFieldValidator; -import graphql.execution.ResolveType; -import graphql.execution.SimpleDataFetcherExceptionHandler; -import graphql.execution.directives.QueryDirectivesImpl; -import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; -import graphql.schema.DataFetchingFieldSelectionSet; -import graphql.schema.DataFetchingFieldSelectionSetImpl; -import graphql.schema.GraphQLCodeRegistry; -import graphql.schema.GraphQLEnumType; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLInterfaceType; -import graphql.schema.GraphQLList; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLOutputType; -import graphql.schema.GraphQLScalarType; -import graphql.schema.GraphQLType; -import graphql.schema.GraphQLTypeUtil; -import graphql.schema.GraphQLUnionType; - -import java.lang.reflect.Array; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Queue; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; -import java.util.function.BiFunction; -import java.util.stream.IntStream; - -import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; -import static graphql.execution.FieldCollectorParameters.newParameters; -import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment; -import static java.util.Collections.singletonList; -import static java.util.stream.Collectors.toList; - -/** - *
    - * BatchedExecutionStrategy has been deprecated in favour of {@link graphql.execution.AsyncExecutionStrategy} - * and {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation}. - * - * BatchedExecutionStrategy does not properly implement the graphql runtime specification. Specifically it - * does not correctly handle non null fields and how they are to cascade up their parent fields. It has proven - * an intractable problem to make this code handle these cases. - * - * See http://facebook.github.io/graphql/October2016/#sec-Errors-and-Non-Nullability - * - * We will remove it once we are sure the alternative is as least good as the BatchedExecutionStrategy. - * - *
    - * - * Execution Strategy that minimizes calls to the data fetcher when used in conjunction with {@link DataFetcher}s that have - * {@link DataFetcher#get(DataFetchingEnvironment)} methods annotated with {@link Batched}. See the javadoc comment on - * {@link Batched} for a more detailed description of batched data fetchers. - *

    - * The strategy runs a BFS over terms of the query and passes a list of all the relevant sources to the batched data fetcher. - *

    - * Normal DataFetchers can be used, however they will not see benefits of batching as they expect a single source object - * at a time. - * - * @deprecated This has been deprecated in favour of using {@link graphql.execution.AsyncExecutionStrategy} and {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} - */ -@PublicApi -@Deprecated -public class BatchedExecutionStrategy extends ExecutionStrategy { - - private final BatchedDataFetcherFactory batchingFactory = new BatchedDataFetcherFactory(); - private final ResolveType resolveType = new ResolveType(); - - public BatchedExecutionStrategy() { - this(new SimpleDataFetcherExceptionHandler()); - } - - public BatchedExecutionStrategy(DataFetcherExceptionHandler dataFetcherExceptionHandler) { - super(dataFetcherExceptionHandler); - } - - @Override - @SuppressWarnings("FutureReturnValueIgnored") - public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - InstrumentationContext executionStrategyCtx = executionContext.getInstrumentation() - .beginExecutionStrategy(new InstrumentationExecutionStrategyParameters(executionContext, parameters)); - - GraphQLObjectType type = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); - - ExecutionNode root = new ExecutionNode(type, - parameters.getExecutionStepInfo(), - parameters.getFields().getSubFields(), - singletonList(MapOrList.createMap(new LinkedHashMap<>())), - Collections.singletonList(parameters.getSource()) - ); - - Queue nodes = new ArrayDeque<>(); - CompletableFuture result = new CompletableFuture<>(); - executeImpl(executionContext, - parameters, - root, - root, - nodes, - root.getFields().keySet().iterator(), - result); - - executionStrategyCtx.onDispatched(result); - result.whenComplete(executionStrategyCtx::onCompleted); - return result; - } - - @SuppressWarnings("FutureReturnValueIgnored") - private void executeImpl(ExecutionContext executionContext, - ExecutionStrategyParameters parameters, - ExecutionNode root, - ExecutionNode curNode, - Queue queueOfNodes, - Iterator curFieldNames, - CompletableFuture overallResult) { - - if (!curFieldNames.hasNext() && queueOfNodes.isEmpty()) { - overallResult.complete(new ExecutionResultImpl(root.getParentResults().get(0).toObject(), executionContext.getErrors())); - return; - } - - if (!curFieldNames.hasNext()) { - curNode = queueOfNodes.poll(); - curFieldNames = curNode.getFields().keySet().iterator(); - } - - String fieldName = curFieldNames.next(); - MergedField currentField = curNode.getFields().get(fieldName); - - - // - // once an object is resolved from a interface / union to a node with an object type, the - // parent type info has effectively changed (it has got more specific), even though the path etc... - // has not changed - ExecutionStepInfo currentParentExecutionStepInfo = parameters.getExecutionStepInfo(); - ExecutionStepInfo newParentExecutionStepInfo = newExecutionStepInfo() - .type(curNode.getType()) - .fieldDefinition(currentParentExecutionStepInfo.getFieldDefinition()) - .field(currentParentExecutionStepInfo.getField()) - .path(currentParentExecutionStepInfo.getPath()) - .parentInfo(currentParentExecutionStepInfo.getParent()) - .build(); - - ExecutionPath fieldPath = curNode.getExecutionStepInfo().getPath().segment(mkNameForPath(currentField)); - GraphQLFieldDefinition fieldDefinition = getFieldDef(executionContext.getGraphQLSchema(), curNode.getType(), currentField.getSingleField()); - - ExecutionStepInfo executionStepInfo = newExecutionStepInfo() - .type(fieldDefinition.getType()) - .fieldDefinition(fieldDefinition) - .field(currentField) - .path(fieldPath) - .parentInfo(newParentExecutionStepInfo) - .build(); - - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder - .path(fieldPath) - .field(currentField) - .executionStepInfo(executionStepInfo) - ); - - ExecutionNode finalCurNode = curNode; - Iterator finalCurFieldNames = curFieldNames; - - resolveField(executionContext, newParameters, fieldName, curNode) - .whenComplete((childNodes, exception) -> { - if (exception != null) { - handleNonNullException(executionContext, overallResult, exception); - return; - } - queueOfNodes.addAll(childNodes); - executeImpl(executionContext, newParameters, root, finalCurNode, queueOfNodes, finalCurFieldNames, overallResult); - }); - } - - - private CompletableFuture> resolveField(ExecutionContext executionContext, - ExecutionStrategyParameters parameters, - String fieldName, - ExecutionNode node) { - GraphQLObjectType parentType = node.getType(); - MergedField fields = node.getFields().get(fieldName); - - GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, fields.getSingleField()); - - Instrumentation instrumentation = executionContext.getInstrumentation(); - ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); - InstrumentationContext fieldCtx = instrumentation.beginField( - new InstrumentationFieldParameters(executionContext, fieldDef, executionStepInfo) - ); - - CompletableFuture fetchedData = fetchData(executionContext, parameters, fieldName, node, fieldDef); - - CompletableFuture> result = fetchedData.thenApply((fetchedValues) -> { - - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues( - codeRegistry, - fieldDef.getArguments(), fields.getSingleField().getArguments(), executionContext.getVariables()); - - return completeValues(executionContext, fetchedValues, executionStepInfo, fieldName, fields, argumentValues); - }); - fieldCtx.onDispatched(null); - result = result.whenComplete((nodes, throwable) -> fieldCtx.onCompleted(null, throwable)); - return result; - - } - - private CompletableFuture fetchData(ExecutionContext executionContext, - ExecutionStrategyParameters parameters, - String fieldName, - ExecutionNode node, - GraphQLFieldDefinition fieldDef) { - GraphQLObjectType parentType = node.getType(); - MergedField fields = node.getFields().get(fieldName); - List parentResults = node.getParentResults(); - - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Map argumentValues = valuesResolver.getArgumentValues( - codeRegistry, - fieldDef.getArguments(), fields.getSingleField().getArguments(), executionContext.getVariables()); - - QueryDirectivesImpl queryDirectives = new QueryDirectivesImpl(fields, executionContext.getGraphQLSchema(), executionContext.getVariables()); - - GraphQLOutputType fieldType = fieldDef.getType(); - DataFetchingFieldSelectionSet fieldCollector = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, fieldType, fields); - - DataFetchingEnvironment environment = newDataFetchingEnvironment(executionContext) - .source(node.getSources()) - .arguments(argumentValues) - .fieldDefinition(fieldDef) - .mergedField(fields) - .fieldType(fieldDef.getType()) - .executionStepInfo(parameters.getExecutionStepInfo()) - .parentType(parentType) - .selectionSet(fieldCollector) - .queryDirectives(queryDirectives) - .build(); - - DataFetcher supplied = codeRegistry.getDataFetcher(parentType, fieldDef); - boolean trivialDataFetcher = supplied instanceof TrivialDataFetcher; - BatchedDataFetcher batchedDataFetcher = batchingFactory.create(supplied); - - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationFieldFetchParameters instrumentationFieldFetchParameters = - new InstrumentationFieldFetchParameters(executionContext, fieldDef, environment, parameters, trivialDataFetcher); - InstrumentationContext fetchCtx = instrumentation.beginFieldFetch(instrumentationFieldFetchParameters); - - CompletableFuture fetchedValue; - try { - DataFetcher dataFetcher = instrumentation.instrumentDataFetcher( - batchedDataFetcher, instrumentationFieldFetchParameters); - Object fetchedValueRaw = dataFetcher.get(environment); - fetchedValue = Async.toCompletableFuture(fetchedValueRaw); - } catch (Exception e) { - fetchedValue = new CompletableFuture<>(); - fetchedValue.completeExceptionally(e); - } - return fetchedValue - .thenApply((result) -> assertResult(parentResults, result)) - .whenComplete(fetchCtx::onCompleted) - .handle(handleResult(executionContext, parameters, parentResults, environment)); - } - - private BiFunction, Throwable, FetchedValues> handleResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters, List parentResults, DataFetchingEnvironment environment) { - return (result, exception) -> { - if (exception != null) { - if (exception instanceof CompletionException) { - exception = exception.getCause(); - } - DataFetcherExceptionHandlerParameters handlerParameters = DataFetcherExceptionHandlerParameters.newExceptionParameters() - .dataFetchingEnvironment(environment) - .exception(exception) - .build(); - - DataFetcherExceptionHandlerResult handlerResult = dataFetcherExceptionHandler.onException(handlerParameters); - handlerResult.getErrors().forEach(executionContext::addError); - - result = Collections.nCopies(parentResults.size(), null); - } - List values = result; - List retVal = new ArrayList<>(); - for (int i = 0; i < parentResults.size(); i++) { - Object value = executionContext.getValueUnboxer().unbox(values.get(i)); - retVal.add(new FetchedValue(parentResults.get(i), value)); - } - return new FetchedValues(retVal, parameters.getExecutionStepInfo(), parameters.getPath()); - }; - } - - private List assertResult(List parentResults, Object result) { - result = convertPossibleArray(result); - if (result != null && !(result instanceof Iterable)) { - throw new BatchAssertionFailed(String.format("BatchedDataFetcher provided an invalid result: Iterable expected but got '%s'. Affected fields are set to null.", result.getClass().getName())); - } - @SuppressWarnings("unchecked") - Iterable iterableResult = (Iterable) result; - if (iterableResult == null) { - throw new BatchAssertionFailed("BatchedDataFetcher provided a null Iterable of result values. Affected fields are set to null."); - } - List resultList = new ArrayList<>(); - iterableResult.forEach(resultList::add); - - long size = resultList.size(); - if (size != parentResults.size()) { - throw new BatchAssertionFailed(String.format("BatchedDataFetcher provided invalid number of result values, expected %d but got %d. Affected fields are set to null.", parentResults.size(), size)); - } - return resultList; - } - - private List completeValues(ExecutionContext executionContext, - FetchedValues fetchedValues, ExecutionStepInfo executionStepInfo, - String fieldName, MergedField fields, - Map argumentValues) { - - handleNonNullType(executionContext, fetchedValues); - - GraphQLType unwrappedFieldType = executionStepInfo.getUnwrappedNonNullType(); - - if (isPrimitive(unwrappedFieldType)) { - handlePrimitives(fetchedValues, fieldName, unwrappedFieldType); - return Collections.emptyList(); - } else if (isObject(unwrappedFieldType)) { - return handleObject(executionContext, argumentValues, fetchedValues, fieldName, fields, executionStepInfo); - } else if (isList(unwrappedFieldType)) { - return handleList(executionContext, argumentValues, fetchedValues, fieldName, fields, executionStepInfo); - } else { - return Assert.assertShouldNeverHappen("can't handle type: %s", unwrappedFieldType); - } - } - - @SuppressWarnings("unchecked") - private List handleList(ExecutionContext executionContext, Map argumentValues, - FetchedValues fetchedValues, String fieldName, MergedField fields, - ExecutionStepInfo executionStepInfo) { - - GraphQLList listType = (GraphQLList) executionStepInfo.getUnwrappedNonNullType(); - List flattenedValues = new ArrayList<>(); - - for (FetchedValue value : fetchedValues.getValues()) { - MapOrList mapOrList = value.getParentResult(); - - if (value.getValue() == null) { - mapOrList.putOrAdd(fieldName, null); - continue; - } - - MapOrList listResult = mapOrList.createAndPutList(fieldName); - for (Object rawValue : toIterable(value.getValue())) { - rawValue = executionContext.getValueUnboxer().unbox(rawValue); - flattenedValues.add(new FetchedValue(listResult, rawValue)); - } - } - GraphQLOutputType innerSubType = (GraphQLOutputType) listType.getWrappedType(); - ExecutionStepInfo newExecutionStepInfo = executionStepInfo.changeTypeWithPreservedNonNull((GraphQLOutputType) GraphQLTypeUtil.unwrapNonNull(innerSubType)); - FetchedValues flattenedFetchedValues = new FetchedValues(flattenedValues, newExecutionStepInfo, fetchedValues.getPath()); - - return completeValues(executionContext, flattenedFetchedValues, newExecutionStepInfo, fieldName, fields, argumentValues); - } - - @SuppressWarnings("UnnecessaryLocalVariable") - private List handleObject(ExecutionContext executionContext, Map argumentValues, - FetchedValues fetchedValues, String fieldName, MergedField fields, - ExecutionStepInfo executionStepInfo) { - - // collect list of values by actual type (needed because of interfaces and unions) - Map> resultsByType = new LinkedHashMap<>(); - Map> sourceByType = new LinkedHashMap<>(); - - for (FetchedValue value : fetchedValues.getValues()) { - MapOrList mapOrList = value.getParentResult(); - if (value.getValue() == null) { - mapOrList.putOrAdd(fieldName, null); - continue; - } - MapOrList childResult = mapOrList.createAndPutMap(fieldName); - - GraphQLObjectType resolvedType = getGraphQLObjectType(executionContext, fields, executionStepInfo.getUnwrappedNonNullType(), value.getValue(), argumentValues); - resultsByType.putIfAbsent(resolvedType, new ArrayList<>()); - resultsByType.get(resolvedType).add(childResult); - - sourceByType.putIfAbsent(resolvedType, new ArrayList<>()); - sourceByType.get(resolvedType).add(value.getValue()); - } - - List childNodes = new ArrayList<>(); - for (GraphQLObjectType resolvedType : resultsByType.keySet()) { - List results = resultsByType.get(resolvedType); - List sources = sourceByType.get(resolvedType); - MergedSelectionSet childFields = getChildFields(executionContext, resolvedType, fields); - - ExecutionStepInfo newExecutionStepInfo = executionStepInfo.changeTypeWithPreservedNonNull(resolvedType); - - childNodes.add(new ExecutionNode(resolvedType, newExecutionStepInfo, childFields.getSubFields(), results, sources)); - } - return childNodes; - } - - - private void handleNonNullType(ExecutionContext executionContext, FetchedValues fetchedValues) { - - ExecutionStepInfo executionStepInfo = fetchedValues.getExecutionStepInfo(); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); - ExecutionPath path = fetchedValues.getPath(); - for (FetchedValue value : fetchedValues.getValues()) { - nonNullableFieldValidator.validate(path, value.getValue()); - } - } - - private MergedSelectionSet getChildFields(ExecutionContext executionContext, GraphQLObjectType resolvedType, - MergedField fields) { - - FieldCollectorParameters collectorParameters = newParameters() - .schema(executionContext.getGraphQLSchema()) - .objectType(resolvedType) - .fragments(executionContext.getFragmentsByName()) - .variables(executionContext.getVariables()) - .build(); - - return fieldCollector.collectFields(collectorParameters, fields); - } - - private GraphQLObjectType getGraphQLObjectType(ExecutionContext executionContext, MergedField field, GraphQLType fieldType, Object value, Map argumentValues) { - return resolveType.resolveType(executionContext, field, value, argumentValues, fieldType); - } - - private void handlePrimitives(FetchedValues fetchedValues, String fieldName, GraphQLType fieldType) { - for (FetchedValue value : fetchedValues.getValues()) { - Object coercedValue = coerce(fieldType, value.getValue()); - //6.6.1 http://facebook.github.io/graphql/#sec-Field-entries - if (coercedValue instanceof Double && ((Double) coercedValue).isNaN()) { - coercedValue = null; - } - value.getParentResult().putOrAdd(fieldName, coercedValue); - } - } - - private Object coerce(GraphQLType type, Object value) { - if (value == null) { - return null; - } - if (type instanceof GraphQLEnumType) { - return ((GraphQLEnumType) type).serialize(value); - } else { - return ((GraphQLScalarType) type).getCoercing().serialize(value); - } - } - - private boolean isList(GraphQLType type) { - return type instanceof GraphQLList; - } - - private boolean isPrimitive(GraphQLType type) { - return type instanceof GraphQLScalarType || type instanceof GraphQLEnumType; - } - - private boolean isObject(GraphQLType type) { - return type instanceof GraphQLObjectType || - type instanceof GraphQLInterfaceType || - type instanceof GraphQLUnionType; - } - - - private Object convertPossibleArray(Object result) { - if (result != null && result.getClass().isArray()) { - return IntStream.range(0, Array.getLength(result)) - .mapToObj(i -> Array.get(result, i)) - .collect(toList()); - } - return result; - } - -} diff --git a/src/main/java/graphql/execution/batched/ExecutionNode.java b/src/main/java/graphql/execution/batched/ExecutionNode.java deleted file mode 100644 index b654a24d9a..0000000000 --- a/src/main/java/graphql/execution/batched/ExecutionNode.java +++ /dev/null @@ -1,50 +0,0 @@ -package graphql.execution.batched; - -import graphql.execution.ExecutionStepInfo; -import graphql.execution.MergedField; -import graphql.schema.GraphQLObjectType; - -import java.util.List; -import java.util.Map; - -@Deprecated -class ExecutionNode { - - private final GraphQLObjectType type; - private final ExecutionStepInfo executionStepInfo; - private final Map fields; - private final List parentResults; - private final List sources; - - public ExecutionNode(GraphQLObjectType type, - ExecutionStepInfo executionStepInfo, - Map fields, - List parentResults, - List sources) { - this.type = type; - this.executionStepInfo = executionStepInfo; - this.fields = fields; - this.parentResults = parentResults; - this.sources = sources; - } - - public GraphQLObjectType getType() { - return type; - } - - public ExecutionStepInfo getExecutionStepInfo() { - return executionStepInfo; - } - - public Map getFields() { - return fields; - } - - public List getParentResults() { - return parentResults; - } - - public List getSources() { - return sources; - } -} diff --git a/src/main/java/graphql/execution/batched/FetchedValue.java b/src/main/java/graphql/execution/batched/FetchedValue.java deleted file mode 100644 index a3b51aa6e5..0000000000 --- a/src/main/java/graphql/execution/batched/FetchedValue.java +++ /dev/null @@ -1,21 +0,0 @@ -package graphql.execution.batched; - -@Deprecated -public class FetchedValue { - - private final MapOrList mapOrList; - private final Object value; - - public FetchedValue(MapOrList parentResult, Object value) { - this.mapOrList = parentResult; - this.value = value; - } - - public MapOrList getParentResult() { - return mapOrList; - } - - public Object getValue() { - return value; - } -} diff --git a/src/main/java/graphql/execution/batched/FetchedValues.java b/src/main/java/graphql/execution/batched/FetchedValues.java deleted file mode 100644 index 25610f6f7d..0000000000 --- a/src/main/java/graphql/execution/batched/FetchedValues.java +++ /dev/null @@ -1,32 +0,0 @@ -package graphql.execution.batched; - -import graphql.execution.ExecutionPath; -import graphql.execution.ExecutionStepInfo; - -import java.util.List; - -@Deprecated -public class FetchedValues { - - private final List fetchedValues; - private final ExecutionStepInfo executionStepInfo; - private final ExecutionPath path; - - public FetchedValues(List fetchedValues, ExecutionStepInfo executionStepInfo, ExecutionPath path) { - this.fetchedValues = fetchedValues; - this.executionStepInfo = executionStepInfo; - this.path = path; - } - - public List getValues() { - return fetchedValues; - } - - public ExecutionStepInfo getExecutionStepInfo() { - return executionStepInfo; - } - - public ExecutionPath getPath() { - return path; - } -} diff --git a/src/main/java/graphql/execution/batched/MapOrList.java b/src/main/java/graphql/execution/batched/MapOrList.java deleted file mode 100644 index b45d952f30..0000000000 --- a/src/main/java/graphql/execution/batched/MapOrList.java +++ /dev/null @@ -1,58 +0,0 @@ -package graphql.execution.batched; - -import graphql.Internal; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -@Internal -@Deprecated -public class MapOrList { - - - private Map map; - private List list; - - public static MapOrList createList(List list) { - MapOrList mapOrList = new MapOrList(); - mapOrList.list = list; - return mapOrList; - } - - public static MapOrList createMap(Map map) { - MapOrList mapOrList = new MapOrList(); - mapOrList.map = map; - return mapOrList; - } - - public MapOrList createAndPutMap(String key) { - Map map = new LinkedHashMap<>(); - putOrAdd(key, map); - return createMap(map); - } - - public MapOrList createAndPutList(String key) { - List resultList = new ArrayList<>(); - putOrAdd(key, resultList); - return createList(resultList); - } - - public void putOrAdd(String fieldName, Object value) { - if (this.map != null) { - this.map.put(fieldName, value); - } else { - this.list.add(value); - } - } - - - public Object toObject() { - if (this.map != null) { - return this.map; - } else { - return this.list; - } - } -} diff --git a/src/main/java/graphql/execution/batched/UnbatchedDataFetcher.java b/src/main/java/graphql/execution/batched/UnbatchedDataFetcher.java deleted file mode 100644 index 5b3488fbab..0000000000 --- a/src/main/java/graphql/execution/batched/UnbatchedDataFetcher.java +++ /dev/null @@ -1,44 +0,0 @@ -package graphql.execution.batched; - - -import graphql.execution.Async; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CompletableFuture; - -import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment; - -/** - * Given a normal data fetcher as a delegate, - * uses that fetcher in a batched context by iterating through each source value and calling - * the delegate. - * - * @deprecated This has been deprecated in favour of using {@link graphql.execution.AsyncExecutionStrategy} and {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} - */ -@Deprecated -public class UnbatchedDataFetcher implements BatchedDataFetcher { - - private final DataFetcher delegate; - - public UnbatchedDataFetcher(DataFetcher delegate) { - this.delegate = delegate; - } - - - @Override - public CompletableFuture> get(DataFetchingEnvironment environment) throws Exception { - List sources = environment.getSource(); - List> results = new ArrayList<>(); - for (Object source : sources) { - - DataFetchingEnvironment singleEnv = newDataFetchingEnvironment(environment) - .source(source).build(); - CompletableFuture cf = Async.toCompletableFuture(delegate.get(singleEnv)); - results.add(cf); - } - return Async.each(results); - } -} diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodeDecision.java b/src/main/java/graphql/execution/conditional/ConditionalNodeDecision.java new file mode 100644 index 0000000000..69afc6bbc2 --- /dev/null +++ b/src/main/java/graphql/execution/conditional/ConditionalNodeDecision.java @@ -0,0 +1,23 @@ +package graphql.execution.conditional; + +import graphql.ExperimentalApi; + +/** + * This callback interface allows custom implementations to decide if a field is included in a query or not. + *

    + * The default `@skip / @include` is built in, but you can create your own implementations to allow you to make + * decisions on whether fields are considered part of a query. + */ +@ExperimentalApi +public interface ConditionalNodeDecision { + + /** + * This is called to decide if a {@link graphql.language.Node} should be included or not + * + * @param decisionEnv ghe environment you can use to make the decision + * + * @return true if the node should be included or false if it should be excluded + */ + boolean shouldInclude(ConditionalNodeDecisionEnvironment decisionEnv); +} + diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java b/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java new file mode 100644 index 0000000000..8851e2df4a --- /dev/null +++ b/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java @@ -0,0 +1,49 @@ +package graphql.execution.conditional; + +import graphql.GraphQLContext; +import graphql.execution.CoercedVariables; +import graphql.language.Directive; +import graphql.language.DirectivesContainer; +import graphql.schema.GraphQLSchema; +import org.jspecify.annotations.Nullable; + +import java.util.List; + +/** + * The parameters given to a {@link ConditionalNodeDecision} + */ +public interface ConditionalNodeDecisionEnvironment { + + /** + * This is an AST {@link graphql.language.Node} that has directives on it. + * {@link graphql.language.Field}, @{@link graphql.language.FragmentSpread} and + * {@link graphql.language.InlineFragment} are examples of nodes + * that can be conditionally included. + * + * @return the AST element in question + */ + DirectivesContainer getDirectivesContainer(); + + /** + * @return the list of directives associated with the {@link #getDirectivesContainer()} + */ + default List getDirectives() { + return getDirectivesContainer().getDirectives(); + } + + /** + * @return a map of the current variables + */ + CoercedVariables getVariables(); + + /** + * @return the {@link GraphQLSchema} in question - this can be null for certain call paths + */ + @Nullable + GraphQLSchema getGraphQlSchema(); + + /** + * @return a graphql context + */ + GraphQLContext getGraphQLContext(); +} diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodes.java b/src/main/java/graphql/execution/conditional/ConditionalNodes.java new file mode 100644 index 0000000000..e922eeb427 --- /dev/null +++ b/src/main/java/graphql/execution/conditional/ConditionalNodes.java @@ -0,0 +1,156 @@ +package graphql.execution.conditional; + +import graphql.Assert; +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.language.Argument; +import graphql.language.BooleanValue; +import graphql.language.Directive; +import graphql.language.DirectivesContainer; +import graphql.language.NodeUtil; +import graphql.language.VariableReference; +import graphql.schema.GraphQLSchema; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +import static graphql.Directives.IncludeDirective; +import static graphql.Directives.SkipDirective; + +@Internal +public class ConditionalNodes { + + /** + * return null if skip/include argument contains a variable and therefore could not be resolved + */ + public Boolean shouldIncludeWithoutVariables(DirectivesContainer element) { + return shouldInclude(null, element.getDirectives()); + } + + public boolean shouldInclude(DirectivesContainer element, + Map variables, + GraphQLSchema graphQLSchema, + @Nullable GraphQLContext graphQLContext + ) { + // + // call the base @include / @skip first + if (!shouldInclude(variables, element.getDirectives())) { + return false; + } + // + // if they have declared a decision callback, then we will use it but we expect this to be mostly + // empty and hence the cost is a map lookup. + if (graphQLContext != null) { + ConditionalNodeDecision conditionalDecision = graphQLContext.get(ConditionalNodeDecision.class); + if (conditionalDecision != null) { + return customShouldInclude(variables, element, graphQLSchema, graphQLContext, conditionalDecision); + } + } + // if no one says otherwise, the node is considered included + return true; + } + + private boolean customShouldInclude(Map variables, + DirectivesContainer element, + GraphQLSchema graphQLSchema, + GraphQLContext graphQLContext, + ConditionalNodeDecision conditionalDecision + ) { + CoercedVariables coercedVariables = CoercedVariables.of(variables); + return conditionalDecision.shouldInclude(new ConditionalNodeDecisionEnvironment() { + @Override + public DirectivesContainer getDirectivesContainer() { + return element; + } + + @Override + public CoercedVariables getVariables() { + return coercedVariables; + } + + @Override + public GraphQLSchema getGraphQlSchema() { + return graphQLSchema; + } + + @Override + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + }); + } + + + private @Nullable Boolean shouldInclude(Map variables, List directives) { + // shortcut on no directives + if (directives.isEmpty()) { + return true; + } + Boolean skip = getDirectiveResult(variables, directives, SkipDirective.getName(), false); + if (skip == null) { + return null; + } + if (skip) { + return false; + } + + return getDirectiveResult(variables, directives, IncludeDirective.getName(), true); + } + + public boolean containsSkipOrIncludeDirective(DirectivesContainer directivesContainer) { + return NodeUtil.findNodeByName(directivesContainer.getDirectives(), SkipDirective.getName()) != null || + NodeUtil.findNodeByName(directivesContainer.getDirectives(), IncludeDirective.getName()) != null; + } + + + public String getSkipVariableName(DirectivesContainer directivesContainer) { + Directive skipDirective = NodeUtil.findNodeByName(directivesContainer.getDirectives(), SkipDirective.getName()); + if (skipDirective == null) { + return null; + } + Argument argument = skipDirective.getArgument("if"); + if (argument.getValue() instanceof VariableReference) { + return ((VariableReference) argument.getValue()).getName(); + } + return null; + } + + public String getIncludeVariableName(DirectivesContainer directivesContainer) { + Directive skipDirective = NodeUtil.findNodeByName(directivesContainer.getDirectives(), IncludeDirective.getName()); + if (skipDirective == null) { + return null; + } + Argument argument = skipDirective.getArgument("if"); + if (argument.getValue() instanceof VariableReference) { + return ((VariableReference) argument.getValue()).getName(); + } + return null; + } + + + private @Nullable Boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { + Directive foundDirective = NodeUtil.findNodeByName(directives, directiveName); + if (foundDirective != null) { + return getIfValue(foundDirective.getArguments(), variables); + } + return defaultValue; + } + + private @Nullable Boolean getIfValue(List arguments, @Nullable Map variables) { + for (Argument argument : arguments) { + if (argument.getName().equals("if")) { + Object value = argument.getValue(); + if (value instanceof BooleanValue) { + return ((BooleanValue) value).isValue(); + } + if (value instanceof VariableReference && variables != null) { + return (boolean) variables.get(((VariableReference) value).getName()); + } + return null; + } + } + return Assert.assertShouldNeverHappen("The 'if' argument must be present"); + } +} diff --git a/src/main/java/graphql/execution/defer/DeferSupport.java b/src/main/java/graphql/execution/defer/DeferSupport.java deleted file mode 100644 index 7e6fb97429..0000000000 --- a/src/main/java/graphql/execution/defer/DeferSupport.java +++ /dev/null @@ -1,82 +0,0 @@ -package graphql.execution.defer; - -import graphql.DeferredExecutionResult; -import graphql.Directives; -import graphql.ExecutionResult; -import graphql.Internal; -import graphql.execution.MergedField; -import graphql.execution.ValuesResolver; -import graphql.execution.reactive.SingleSubscriberPublisher; -import graphql.language.Directive; -import graphql.language.Field; -import org.reactivestreams.Publisher; - -import java.util.Deque; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicBoolean; - -import static graphql.Directives.*; - -/** - * This provides support for @defer directives on fields that mean that results will be sent AFTER - * the main result is sent via a Publisher stream. - */ -@Internal -public class DeferSupport { - - private final AtomicBoolean deferDetected = new AtomicBoolean(false); - private final Deque deferredCalls = new ConcurrentLinkedDeque<>(); - private final SingleSubscriberPublisher publisher = new SingleSubscriberPublisher<>(); - private final ValuesResolver valuesResolver = new ValuesResolver(); - - public boolean checkForDeferDirective(MergedField currentField, Map variables) { - for (Field field : currentField.getFields()) { - Directive directive = field.getDirective(DeferDirective.getName()); - if (directive != null) { - Map argumentValues = valuesResolver.getArgumentValues(DeferDirective.getArguments(), directive.getArguments(), variables); - return (Boolean) argumentValues.get("if"); - } - } - return false; - } - - @SuppressWarnings("FutureReturnValueIgnored") - private void drainDeferredCalls() { - if (deferredCalls.isEmpty()) { - publisher.noMoreData(); - return; - } - DeferredCall deferredCall = deferredCalls.pop(); - CompletableFuture future = deferredCall.invoke(); - future.whenComplete((executionResult, exception) -> { - if (exception != null) { - publisher.offerError(exception); - return; - } - publisher.offer(executionResult); - drainDeferredCalls(); - }); - } - - public void enqueue(DeferredCall deferredCall) { - deferDetected.set(true); - deferredCalls.offer(deferredCall); - } - - public boolean isDeferDetected() { - return deferDetected.get(); - } - - /** - * When this is called the deferred execution will begin - * - * @return the publisher of deferred results - */ - public Publisher startDeferredCalls() { - drainDeferredCalls(); - return publisher; - } -} diff --git a/src/main/java/graphql/execution/defer/DeferredCall.java b/src/main/java/graphql/execution/defer/DeferredCall.java deleted file mode 100644 index f1da0c8683..0000000000 --- a/src/main/java/graphql/execution/defer/DeferredCall.java +++ /dev/null @@ -1,43 +0,0 @@ -package graphql.execution.defer; - -import graphql.DeferredExecutionResult; -import graphql.DeferredExecutionResultImpl; -import graphql.ExecutionResult; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionPath; - -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.function.Supplier; - -/** - * This represents a deferred call (aka @defer) to get an execution result sometime after - * the initial query has returned - */ -@Internal -public class DeferredCall { - private final ExecutionPath path; - private final Supplier> call; - private final DeferredErrorSupport errorSupport; - - public DeferredCall(ExecutionPath path, Supplier> call, DeferredErrorSupport deferredErrorSupport) { - this.path = path; - this.call = call; - this.errorSupport = deferredErrorSupport; - } - - CompletableFuture invoke() { - CompletableFuture future = call.get(); - return future.thenApply(this::transformToDeferredResult); - } - - private DeferredExecutionResult transformToDeferredResult(ExecutionResult executionResult) { - List errorsEncountered = errorSupport.getErrors(); - DeferredExecutionResultImpl.Builder builder = DeferredExecutionResultImpl.newDeferredExecutionResult().from(executionResult); - return builder - .addErrors(errorsEncountered) - .path(path) - .build(); - } -} diff --git a/src/main/java/graphql/execution/defer/DeferredErrorSupport.java b/src/main/java/graphql/execution/defer/DeferredErrorSupport.java deleted file mode 100644 index 3ef4f34c5d..0000000000 --- a/src/main/java/graphql/execution/defer/DeferredErrorSupport.java +++ /dev/null @@ -1,31 +0,0 @@ -package graphql.execution.defer; - -import graphql.ExceptionWhileDataFetching; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStrategyParameters; - -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * This captures errors that occur while a deferred call is being made - */ -@Internal -public class DeferredErrorSupport { - - private final List errors = new CopyOnWriteArrayList<>(); - - public void onFetchingException(ExecutionStrategyParameters parameters, Throwable e) { - ExceptionWhileDataFetching error = new ExceptionWhileDataFetching(parameters.getPath(), e, parameters.getField().getSingleField().getSourceLocation()); - onError(error); - } - - public void onError(GraphQLError gError) { - errors.add(gError); - } - - public List getErrors() { - return errors; - } -} diff --git a/src/main/java/graphql/execution/directives/DirectivesResolver.java b/src/main/java/graphql/execution/directives/DirectivesResolver.java index 4c2327e89d..4f177052e4 100644 --- a/src/main/java/graphql/execution/directives/DirectivesResolver.java +++ b/src/main/java/graphql/execution/directives/DirectivesResolver.java @@ -1,6 +1,11 @@ package graphql.execution.directives; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.ImmutableBiMap; +import graphql.GraphQLContext; import graphql.Internal; +import graphql.execution.CoercedVariables; import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.schema.GraphQLArgument; @@ -8,8 +13,8 @@ import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; -import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; /** @@ -18,26 +23,30 @@ @Internal public class DirectivesResolver { - private final ValuesResolver valuesResolver = new ValuesResolver(); - public DirectivesResolver() { } - public Map resolveDirectives(List directives, GraphQLSchema schema, Map variables) { + public BiMap resolveDirectives(List directives, GraphQLSchema schema, CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry(); - Map directiveMap = new LinkedHashMap<>(); + BiMap directiveMap = HashBiMap.create(); directives.forEach(directive -> { GraphQLDirective protoType = schema.getDirective(directive.getName()); if (protoType != null) { - GraphQLDirective newDirective = protoType.transform(builder -> buildArguments(builder, codeRegistry, protoType, directive, variables)); - directiveMap.put(newDirective.getName(), newDirective); + GraphQLDirective graphQLDirective = protoType.transform(builder -> buildArguments(builder, codeRegistry, protoType, directive, variables, graphQLContext, locale)); + directiveMap.put(graphQLDirective, directive); } }); - return directiveMap; + return ImmutableBiMap.copyOf(directiveMap); } - private void buildArguments(GraphQLDirective.Builder directiveBuilder, GraphQLCodeRegistry codeRegistry, GraphQLDirective protoType, Directive fieldDirective, Map variables) { - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), variables); + private void buildArguments(GraphQLDirective.Builder directiveBuilder, + GraphQLCodeRegistry codeRegistry, + GraphQLDirective protoType, + Directive fieldDirective, + CoercedVariables variables, + GraphQLContext graphQLContext, + Locale locale) { + Map argumentValues = ValuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), variables, graphQLContext, locale); directiveBuilder.clearArguments(); protoType.getArguments().forEach(protoArg -> { if (argumentValues.containsKey(protoArg.getName())) { @@ -45,11 +54,11 @@ private void buildArguments(GraphQLDirective.Builder directiveBuilder, GraphQLCo GraphQLArgument newArgument = protoArg.transform(argBuilder -> argBuilder.value(argValue)); directiveBuilder.argument(newArgument); } else { - // this means they can ask for the argument default value because the arugment on the directive + // this means they can ask for the argument default value because the argument on the directive // object is present - but null GraphQLArgument newArgument = protoArg.transform(argBuilder -> argBuilder.value(null)); directiveBuilder.argument(newArgument); } }); } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/execution/directives/QueryAppliedDirective.java b/src/main/java/graphql/execution/directives/QueryAppliedDirective.java new file mode 100644 index 0000000000..84492143fd --- /dev/null +++ b/src/main/java/graphql/execution/directives/QueryAppliedDirective.java @@ -0,0 +1,190 @@ +package graphql.execution.directives; + + +import com.google.common.collect.ImmutableList; +import graphql.PublicApi; +import graphql.language.Directive; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphqlTypeBuilder; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; +import java.util.function.Consumer; +import java.util.function.UnaryOperator; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertValidName; +import static graphql.util.FpKit.getByName; + +/** + * An applied directive represents the instance of a directive that is applied to a query element such as a field or fragment. + *

    + * Originally graphql-java re-used the {@link GraphQLDirective} and {@link GraphQLArgument} + * classes to do both purposes. This was a modelling mistake. New {@link QueryAppliedDirective} and {@link QueryAppliedDirectiveArgument} + * classes have been introduced to better model when a directive is applied to a query element, + * as opposed to its schema definition itself. + *

    + * See https://graphql.org/learn/queries/#directives for more details on the concept. + */ +@PublicApi +public class QueryAppliedDirective { + + private final String name; + private final ImmutableList arguments; + private final Directive definition; + + private QueryAppliedDirective(String name, Directive definition, Collection arguments) { + assertValidName(name); + assertNotNull(arguments, "arguments can't be null"); + this.name = name; + this.arguments = ImmutableList.copyOf(arguments); + this.definition = definition; + } + + @NonNull + public String getName() { + return name; + } + + @Nullable + public String getDescription() { + return null; + } + + public List getArguments() { + return arguments; + } + + @Nullable + public QueryAppliedDirectiveArgument getArgument(String name) { + for (QueryAppliedDirectiveArgument argument : arguments) { + if (argument.getName().equals(name)) { + return argument; + } + } + return null; + } + + @Nullable + public Directive getDefinition() { + return definition; + } + + @Override + public String toString() { + return new StringJoiner(", ", QueryAppliedDirective.class.getSimpleName() + "[", "]") + .add("name='" + name + "'") + .add("arguments=" + arguments) + .add("definition=" + definition) + .toString(); + } + + /** + * This helps you transform the current GraphQLDirective into another one by starting a builder with all + * the current values and allows you to transform it how you want. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new field based on calling build on that builder + */ + public QueryAppliedDirective transform(Consumer builderConsumer) { + Builder builder = newDirective(this); + builderConsumer.accept(builder); + return builder.build(); + } + + public static Builder newDirective() { + return new Builder(); + } + + public static Builder newDirective(QueryAppliedDirective existing) { + return new Builder(existing); + } + + public static class Builder extends GraphqlTypeBuilder { + + private final Map arguments = new LinkedHashMap<>(); + private Directive definition; + + public Builder() { + } + + public Builder(QueryAppliedDirective existing) { + this.name = existing.getName(); + this.description = existing.getDescription(); + this.arguments.putAll(getByName(existing.getArguments(), QueryAppliedDirectiveArgument::getName)); + } + + public Builder argument(QueryAppliedDirectiveArgument argument) { + assertNotNull(argument,"argument must not be null"); + arguments.put(argument.getName(), argument); + return this; + } + + public Builder replaceArguments(List arguments) { + assertNotNull(arguments, "arguments must not be null"); + this.arguments.clear(); + for (QueryAppliedDirectiveArgument argument : arguments) { + this.arguments.put(argument.getName(), argument); + } + return this; + } + + /** + * Take an argument builder in a function definition and apply. Can be used in a jdk8 lambda + * e.g.: + *

    +         *     {@code
    +         *      argument(a -> a.name("argumentName"))
    +         *     }
    +         * 
    + * + * @param builderFunction a supplier for the builder impl + * + * @return this + */ + public Builder argument(UnaryOperator builderFunction) { + QueryAppliedDirectiveArgument.Builder builder = QueryAppliedDirectiveArgument.newArgument(); + builder = builderFunction.apply(builder); + return argument(builder); + } + + /** + * Same effect as the argument(GraphQLAppliedDirectiveArgument). Builder.build() is called + * from within + * + * @param builder an un-built/incomplete GraphQLAppliedDirectiveArgument + * + * @return this + */ + public Builder argument(QueryAppliedDirectiveArgument.Builder builder) { + return argument(builder.build()); + } + + /** + * This is used to clear all the arguments in the builder so far. + * + * @return the builder + */ + public Builder clearArguments() { + arguments.clear(); + return this; + } + + + public Builder definition(Directive definition) { + this.definition = definition; + return this; + } + + public QueryAppliedDirective build() { + return new QueryAppliedDirective(name, this.definition, arguments.values()); + } + } +} diff --git a/src/main/java/graphql/execution/directives/QueryAppliedDirectiveArgument.java b/src/main/java/graphql/execution/directives/QueryAppliedDirectiveArgument.java new file mode 100644 index 0000000000..8b772e91f7 --- /dev/null +++ b/src/main/java/graphql/execution/directives/QueryAppliedDirectiveArgument.java @@ -0,0 +1,209 @@ +package graphql.execution.directives; + + +import graphql.Assert; +import graphql.GraphQLContext; +import graphql.PublicApi; +import graphql.language.Argument; +import graphql.language.Value; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphqlTypeBuilder; +import graphql.schema.InputValueWithState; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.Locale; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertValidName; +import static graphql.execution.ValuesResolver.getInputValueImpl; + +/** + * This represents the argument values that can be placed on an {@link QueryAppliedDirective}. + *

    + * You can think of them as 'instances' of {@link GraphQLArgument}, when applied to a directive on a query element + */ +@PublicApi +public class QueryAppliedDirectiveArgument { + + private final String name; + private final InputValueWithState value; + private final GraphQLInputType originalType; + + private final Argument definition; + + + private QueryAppliedDirectiveArgument(String name, + InputValueWithState value, + GraphQLInputType type, + Argument definition + ) { + assertValidName(name); + this.name = name; + this.value = assertNotNull(value); + this.originalType = assertNotNull(type); + this.definition = definition; + } + + @NonNull + public String getName() { + return name; + } + + @NonNull + public GraphQLInputType getType() { + return originalType; + } + + public boolean hasSetValue() { + return value.isSet(); + } + + /** + * @return an input value with state for an applied directive argument + */ + public @NonNull InputValueWithState getArgumentValue() { + return value; + } + + /** + * This swill give out an internal java value based on the semantics captured + * in the {@link InputValueWithState} from {@link QueryAppliedDirectiveArgument#getArgumentValue()} + * + * Note : You MUST only call this on a {@link QueryAppliedDirectiveArgument} that is part of a fully formed schema. We need + * all the types to be resolved in order for this work correctly. + * + * Note: This method will return null if the value is not set or explicitly set to null. If you want to know the difference + * when "not set" and "set to null" then you can't use this method. Rather you should use {@link QueryAppliedDirectiveArgument#getArgumentValue()} + * and use the {@link InputValueWithState#isNotSet()} methods to decide how to handle those values. + * + * @param the type you want it cast as + * + * @return a value of type T which is the java value of the argument + */ + @Nullable + public T getValue() { + return getInputValueImpl(getType(), value, GraphQLContext.getDefault(), Locale.getDefault()); + } + + /** + * This will always be null. Applied arguments have no description + * + * @return always null + */ + public @Nullable String getDescription() { + return null; + } + + @Nullable + public Argument getDefinition() { + return definition; + } + + + /** + * This helps you transform the current GraphQLArgument into another one by starting a builder with all + * the current values and allows you to transform it how you want. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new field based on calling build on that builder + */ + public QueryAppliedDirectiveArgument transform(Consumer builderConsumer) { + Builder builder = newArgument(this); + builderConsumer.accept(builder); + return builder.build(); + } + + public static Builder newArgument() { + return new Builder(); + } + + public static Builder newArgument(QueryAppliedDirectiveArgument existing) { + return new Builder(existing); + } + + @Override + public String toString() { + return "QueryAppliedDirectiveArgument{" + + "name='" + name + '\'' + + ", type=" + getType() + + ", value=" + value + + '}'; + } + + public static class Builder extends GraphqlTypeBuilder { + + private InputValueWithState value = InputValueWithState.NOT_SET; + private Argument definition; + private GraphQLInputType type; + + public Builder() { + } + + public Builder(QueryAppliedDirectiveArgument existing) { + this.name = existing.getName(); + this.value = existing.getArgumentValue(); + this.type = existing.getType(); + } + + public Builder type(GraphQLInputType type) { + this.type = assertNotNull(type); + return this; + } + + public Builder definition(Argument definition) { + this.definition = definition; + return this; + } + + /** + * Sets a literal AST value as the arguments value + * + * @param value can't be null as a `null` is represented a @{@link graphql.language.NullValue} Literal + * + * @return this builder + */ + public Builder valueLiteral(@NonNull Value value) { + this.value = InputValueWithState.newLiteralValue(value); + return this; + } + + /** + * @param value values can be null to represent null value + * + * @return this builder + */ + public Builder valueProgrammatic(@Nullable Object value) { + this.value = InputValueWithState.newExternalValue(value); + return this; + } + + public Builder inputValueWithState(@NonNull InputValueWithState value) { + this.value = Assert.assertNotNull(value); + return this; + } + + /** + * Removes the value to represent a missing value (which is different from null) + * + * @return this builder + */ + public Builder clearValue() { + this.value = InputValueWithState.NOT_SET; + return this; + } + + + public QueryAppliedDirectiveArgument build() { + return new QueryAppliedDirectiveArgument( + name, + value, + type, + definition + ); + } + } +} diff --git a/src/main/java/graphql/execution/directives/QueryDirectives.java b/src/main/java/graphql/execution/directives/QueryDirectives.java index 7515b78743..6eee9f9323 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectives.java +++ b/src/main/java/graphql/execution/directives/QueryDirectives.java @@ -1,11 +1,19 @@ package graphql.execution.directives; +import graphql.GraphQLContext; import graphql.PublicApi; +import graphql.execution.CoercedVariables; +import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.language.Field; +import graphql.normalized.NormalizedInputValue; import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLSchema; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; /** * This gives you access to the immediate directives on a {@link graphql.execution.MergedField}. This does not include directives on parent @@ -16,8 +24,8 @@ * on the merged field. How you decide which one to use is up to your code. *

    * NOTE: A future version of the interface will try to add access to the inherited directives from - * parent fields and fragments. This proved to be a non trivial problem and hence we decide - * to give access to immediate field directives and provide this holder interface so we can + * parent fields and fragments. This proved to be a non-trivial problem and hence we decide + * to give access to immediate field directives and provide this holder interface, so we can * add the other directives in the future * * @see graphql.execution.MergedField @@ -25,13 +33,51 @@ @PublicApi public interface QueryDirectives { + /** + * This will return a map of the applied directives that are immediately on a merged field + * + * @return a map of all the applied directives immediately on this merged field + */ + Map> getImmediateAppliedDirectivesByName(); + + /** + * This will return a list of the named applied directives that are immediately on this merged field. + * + * Read above for why this is a list of applied directives and not just one + * + * @param directiveName the named directive + * + * @return a list of the named applied directives that are immediately on this merged field + */ + List getImmediateAppliedDirective(String directiveName); + /** * This will return a map of the directives that are immediately on a merged field * * @return a map of all the directives immediately on this merged field + * + * @deprecated - use the {@link QueryAppliedDirective} methods instead */ + @Deprecated(since = "2022-02-24") Map> getImmediateDirectivesByName(); + /** + * This will return a map of the {@link graphql.language.Field}s inside a {@link graphql.execution.MergedField} + * and the immediate applied directives that are on each specific field + * + * @return a map of all directives on each field inside this + */ + Map> getImmediateAppliedDirectivesByField(); + + /** + * This will return a map of {@link QueryAppliedDirective} to a map of their argument values in {@link NormalizedInputValue} form + *

    + * NOTE : This will only be available when {@link graphql.normalized.ExecutableNormalizedOperationFactory} is used + * to create the {@link QueryAppliedDirective} information + * + * @return a map of applied directive to named argument values + */ + Map> getNormalizedInputValueByImmediateAppliedDirectives(); /** * This will return a list of the named directives that are immediately on this merged field. @@ -41,7 +87,10 @@ public interface QueryDirectives { * @param directiveName the named directive * * @return a list of the named directives that are immediately on this merged field + * + * @deprecated - use the {@link QueryAppliedDirective} methods instead */ + @Deprecated(since = "2022-02-24") List getImmediateDirective(String directiveName); /** @@ -49,6 +98,35 @@ public interface QueryDirectives { * and the immediate directives that are on each specific field * * @return a map of all directives on each field inside this + * + * @deprecated - use the {@link QueryAppliedDirective} methods instead */ + @Deprecated(since = "2022-02-24") Map> getImmediateDirectivesByField(); + + /** + * @return a builder of {@link QueryDirectives} + */ + static Builder newQueryDirectives() { + return new QueryDirectivesBuilder(); + } + + interface Builder { + + Builder schema(GraphQLSchema schema); + + Builder mergedField(MergedField mergedField); + + Builder field(Field field); + + Builder coercedVariables(CoercedVariables coercedVariables); + + Builder normalizedVariables(Supplier normalizedVariables); + + Builder graphQLContext(GraphQLContext graphQLContext); + + Builder locale(Locale locale); + + QueryDirectives build(); + } } diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java new file mode 100644 index 0000000000..78b6998588 --- /dev/null +++ b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java @@ -0,0 +1,71 @@ +package graphql.execution.directives; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; +import graphql.language.Field; +import graphql.schema.GraphQLSchema; + +import java.util.Locale; +import java.util.function.Supplier; + +@Internal +public class QueryDirectivesBuilder implements QueryDirectives.Builder { + + private MergedField mergedField; + private GraphQLSchema schema; + private CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + private Supplier normalizedVariables = NormalizedVariables::emptyVariables; + private GraphQLContext graphQLContext = GraphQLContext.getDefault(); + private Locale locale = Locale.getDefault(); + + @Override + public QueryDirectives.Builder schema(GraphQLSchema schema) { + this.schema = schema; + return this; + } + + @Override + public QueryDirectives.Builder mergedField(MergedField mergedField) { + this.mergedField = mergedField; + return this; + } + + @Override + public QueryDirectives.Builder field(Field field) { + this.mergedField = MergedField.newMergedField(field).build(); + return this; + } + + @Override + public QueryDirectives.Builder coercedVariables(CoercedVariables coercedVariables) { + this.coercedVariables = coercedVariables; + return this; + } + + @Override + public QueryDirectives.Builder normalizedVariables(Supplier normalizedVariables) { + this.normalizedVariables = normalizedVariables; + return this; + } + + @Override + public QueryDirectives.Builder graphQLContext(GraphQLContext graphQLContext) { + this.graphQLContext = graphQLContext; + return this; + } + + @Override + public QueryDirectives.Builder locale(Locale locale) { + this.locale = locale; + return this; + } + + + @Override + public QueryDirectives build() { + return new QueryDirectivesImpl(mergedField, schema, coercedVariables, normalizedVariables, graphQLContext, locale); + } +} diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index cc567ffbdc..87f00d6f97 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -1,23 +1,36 @@ package graphql.execution.directives; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.GraphQLContext; import graphql.Internal; +import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; +import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.Field; +import graphql.normalized.NormalizedInputValue; +import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; +import graphql.util.LockKit; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; -import static java.util.Collections.emptyList; +import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; /** * These objects are ALWAYS in the context of a single MergedField - * + *

    * Also note we compute these values lazily */ @Internal @@ -26,43 +39,107 @@ public class QueryDirectivesImpl implements QueryDirectives { private final DirectivesResolver directivesResolver = new DirectivesResolver(); private final MergedField mergedField; private final GraphQLSchema schema; - private final Map variables; - private volatile Map> fieldDirectivesByField; - private volatile Map> fieldDirectivesByName; - - public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, Map variables) { - this.mergedField = mergedField; - this.schema = schema; - this.variables = variables; + private final CoercedVariables coercedVariables; + private final Supplier normalizedVariableValues; + private final GraphQLContext graphQLContext; + private final Locale locale; + + private final LockKit.ComputedOnce computedOnce = new LockKit.ComputedOnce(); + private volatile ImmutableMap> fieldDirectivesByField; + private volatile ImmutableMap> fieldDirectivesByName; + private volatile ImmutableMap> fieldAppliedDirectivesByField; + private volatile ImmutableMap> fieldAppliedDirectivesByName; + private volatile ImmutableMap> normalizedValuesByAppliedDirective; + + public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, CoercedVariables coercedVariables, Supplier normalizedVariableValues, GraphQLContext graphQLContext, Locale locale) { + this.mergedField = assertNotNull(mergedField); + this.schema = assertNotNull(schema); + this.coercedVariables = assertNotNull(coercedVariables); + this.normalizedVariableValues = assertNotNull(normalizedVariableValues); + this.graphQLContext = assertNotNull(graphQLContext); + this.locale = assertNotNull(locale); } private void computeValuesLazily() { - synchronized (this) { - if (fieldDirectivesByField != null) { - return; - } + computedOnce.runOnce(() -> { final Map> byField = new LinkedHashMap<>(); - mergedField.getFields().forEach(field -> { + final Map> byFieldApplied = new LinkedHashMap<>(); + + BiMap directiveCounterParts = HashBiMap.create(); + BiMap gqlDirectiveCounterParts = HashBiMap.create(); + BiMap gqlDirectiveCounterPartsInverse = gqlDirectiveCounterParts.inverse(); + mergedField.forEach(field -> { List directives = field.getDirectives(); - List resolvedDirectives = new ArrayList<>( - directivesResolver - .resolveDirectives(directives, schema, variables) - .values() - ); - byField.put(field, Collections.unmodifiableList(resolvedDirectives)); + BiMap directivesMap = directivesResolver + .resolveDirectives(directives, schema, coercedVariables, graphQLContext, locale); + + directiveCounterParts.putAll(directivesMap); + + ImmutableList resolvedDirectives = ImmutableList.copyOf(directivesMap.keySet()); + + ImmutableList.Builder appliedDirectiveBuilder = ImmutableList.builder(); + for (GraphQLDirective resolvedDirective : resolvedDirectives) { + QueryAppliedDirective appliedDirective = toAppliedDirective(resolvedDirective); + appliedDirectiveBuilder.add(appliedDirective); + gqlDirectiveCounterParts.put(resolvedDirective, appliedDirective); + } + byField.put(field, resolvedDirectives); + // at some point we will only use applied + byFieldApplied.put(field, appliedDirectiveBuilder.build()); }); Map> byName = new LinkedHashMap<>(); + Map> byNameApplied = new LinkedHashMap<>(); byField.forEach((field, directiveList) -> directiveList.forEach(directive -> { String name = directive.getName(); - byName.computeIfAbsent(name, k -> new ArrayList<>()); - byName.get(name).add(directive); + byName.computeIfAbsent(name, k -> new ArrayList<>()).add(directive); + // at some point we will only use applied + QueryAppliedDirective appliedDirective = gqlDirectiveCounterParts.get(directive); + byNameApplied.computeIfAbsent(name, k -> new ArrayList<>()).add(appliedDirective); })); - this.fieldDirectivesByName = Collections.unmodifiableMap(byName); - this.fieldDirectivesByField = Collections.unmodifiableMap(byField); + // create NormalizedInputValue values for directive arguments + Map> normalizedValuesByAppliedDirective = new LinkedHashMap<>(); + NormalizedVariables normalizedVariableValues = this.normalizedVariableValues.get(); + if (normalizedVariableValues != null) { + byNameApplied.values().forEach(directiveList -> { + for (QueryAppliedDirective queryAppliedDirective : directiveList) { + GraphQLDirective graphQLDirective = gqlDirectiveCounterPartsInverse.get(queryAppliedDirective); + // we need this counterpart because the ValuesResolver needs the runtime and AST element + Directive directive = directiveCounterParts.get(graphQLDirective); + if (directive != null) { + Map normalizedVariables = normalizedVariableValues.toMap(); + Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), normalizedVariables); + normalizedValuesByAppliedDirective.put(queryAppliedDirective, normalizedArgumentValues); + } + } + }); + } + + this.fieldDirectivesByName = ImmutableMap.copyOf(byName); + this.fieldDirectivesByField = ImmutableMap.copyOf(byField); + this.fieldAppliedDirectivesByName = ImmutableMap.copyOf(byNameApplied); + this.fieldAppliedDirectivesByField = ImmutableMap.copyOf(byFieldApplied); + this.normalizedValuesByAppliedDirective = ImmutableMap.copyOf(normalizedValuesByAppliedDirective); + }); + } + + private QueryAppliedDirective toAppliedDirective(GraphQLDirective directive) { + QueryAppliedDirective.Builder builder = QueryAppliedDirective.newDirective(); + builder.name(directive.getName()); + for (GraphQLArgument argument : directive.getArguments()) { + builder.argument(toAppliedArgument(argument)); } + return builder.build(); + } + + private QueryAppliedDirectiveArgument toAppliedArgument(GraphQLArgument argument) { + return QueryAppliedDirectiveArgument.newArgument() + .name(argument.getName()) + .type(argument.getType()) + .inputValueWithState(argument.getArgumentValue()) + .build(); } @@ -72,15 +149,39 @@ public Map> getImmediateDirectivesByField() { return fieldDirectivesByField; } + @Override + public Map> getImmediateAppliedDirectivesByField() { + computeValuesLazily(); + return fieldAppliedDirectivesByField; + } + + @Override + public Map> getNormalizedInputValueByImmediateAppliedDirectives() { + computeValuesLazily(); + return normalizedValuesByAppliedDirective; + } + @Override public Map> getImmediateDirectivesByName() { computeValuesLazily(); return fieldDirectivesByName; } + @Override + public Map> getImmediateAppliedDirectivesByName() { + computeValuesLazily(); + return fieldAppliedDirectivesByName; + } + @Override public List getImmediateDirective(String directiveName) { computeValuesLazily(); return getImmediateDirectivesByName().getOrDefault(directiveName, emptyList()); } + + @Override + public List getImmediateAppliedDirective(String directiveName) { + computeValuesLazily(); + return getImmediateAppliedDirectivesByName().getOrDefault(directiveName, emptyList()); + } } diff --git a/src/main/java/graphql/execution/incremental/AlternativeCallContext.java b/src/main/java/graphql/execution/incremental/AlternativeCallContext.java new file mode 100644 index 0000000000..47e956798e --- /dev/null +++ b/src/main/java/graphql/execution/incremental/AlternativeCallContext.java @@ -0,0 +1,64 @@ +package graphql.execution.incremental; + +import graphql.GraphQLError; +import graphql.Internal; +import graphql.VisibleForTesting; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Contains data relevant to the execution of a {@link DeferredFragmentCall} and Subscription events. + *

    + * The responsibilities of this class are similar to {@link graphql.execution.ExecutionContext}, but restricted to the + * execution of a deferred call (instead of the whole GraphQL execution like {@link graphql.execution.ExecutionContext}). + *

    + * Some behaviours, like error capturing, need to be scoped to a single {@link DeferredFragmentCall} for deferred, because each defer payload + * contains its own distinct list of errors. + */ +@Internal +public class AlternativeCallContext { + + private final int startLevel; + private final int fields; + + private final List errors = Collections.synchronizedList(new ArrayList<>()); + + public AlternativeCallContext(int startLevel, int fields) { + this.startLevel = startLevel; + this.fields = fields; + } + + @VisibleForTesting + public AlternativeCallContext() { + this.startLevel = 0; + this.fields = 0; + } + + public int getStartLevel() { + return startLevel; + } + + public int getFields() { + return fields; + } + + + public void addErrors(List errors) { + this.errors.addAll(errors); + } + + public void addError(GraphQLError graphqlError) { + errors.add(graphqlError); + } + + /** + * @return a list of errors that were encountered while executing this deferred call + */ + public List getErrors() { + return errors; + } + + +} diff --git a/src/main/java/graphql/execution/incremental/DeferredExecution.java b/src/main/java/graphql/execution/incremental/DeferredExecution.java new file mode 100644 index 0000000000..ae63808989 --- /dev/null +++ b/src/main/java/graphql/execution/incremental/DeferredExecution.java @@ -0,0 +1,39 @@ +package graphql.execution.incremental; + +import graphql.ExperimentalApi; +import graphql.normalized.incremental.NormalizedDeferredExecution; +import org.jspecify.annotations.Nullable; + +/** + * Represents details about the defer execution that can be associated with a {@link graphql.execution.MergedField}. + *

    + * This representation is used during graphql execution. Check {@link NormalizedDeferredExecution} + * for the normalized representation of @defer. + */ +@ExperimentalApi +public class DeferredExecution { + private final String label; + + public DeferredExecution(String label) { + this.label = label; + } + + @Nullable + public String getLabel() { + return label; + } + + // this class uses object identity - do not put .equals() / .hashCode() implementations on it + // otherwise it will break defer handling. I have put the code just to be explicit that object identity + // is needed + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } +} diff --git a/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java b/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java new file mode 100644 index 0000000000..86965d701e --- /dev/null +++ b/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java @@ -0,0 +1,237 @@ +package graphql.execution.incremental; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; +import graphql.ExecutionResult; +import graphql.ExecutionResultImpl; +import graphql.Internal; +import graphql.execution.ExecutionContext; +import graphql.execution.ExecutionStepInfo; +import graphql.execution.ExecutionStrategyParameters; +import graphql.execution.FieldValueInfo; +import graphql.execution.MergedField; +import graphql.execution.MergedSelectionSet; +import graphql.execution.ResultPath; +import graphql.execution.instrumentation.Instrumentation; +import graphql.execution.instrumentation.InstrumentationContext; +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.incremental.IncrementalPayload; +import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.function.BiFunction; +import java.util.function.Supplier; + +import static graphql.execution.instrumentation.SimpleInstrumentationContext.nonNullCtx; + +/** + * The purpose of this class hierarchy is to encapsulate most of the logic for deferring field execution, thus + * keeping the main execution strategy code clean and focused on the main execution logic. + *

    + * The {@link NoOp} instance should be used when incremental support is not enabled for the current execution. The + * methods in this class will return empty or no-op results, that should not impact the main execution. + *

    + * {@link DeferredExecutionSupportImpl} is the actual implementation that will be used when incremental support is enabled. + */ +@Internal +public interface DeferredExecutionSupport { + + boolean isDeferredField(MergedField mergedField); + + int deferredFieldsCount(); + + List getNonDeferredFieldNames(List allFieldNames); + + Set> createCalls(); + + DeferredExecutionSupport NOOP = new DeferredExecutionSupport.NoOp(); + + /** + * An implementation that actually executes the deferred fields. + */ + class DeferredExecutionSupportImpl implements DeferredExecutionSupport { + private final ImmutableListMultimap deferredExecutionToFields; + private final ImmutableSet deferredFields; + private final ImmutableList nonDeferredFieldNames; + private final ExecutionStrategyParameters parameters; + private final ExecutionContext executionContext; + private final BiFunction> resolveFieldWithInfoFn; + private final BiFunction> executionStepInfoFn; + private final Map>> dfCache = new HashMap<>(); + + public DeferredExecutionSupportImpl( + MergedSelectionSet mergedSelectionSet, + ExecutionStrategyParameters parameters, + ExecutionContext executionContext, + BiFunction> resolveFieldWithInfoFn, + BiFunction> executionStepInfoFn + ) { + this.executionContext = executionContext; + this.resolveFieldWithInfoFn = resolveFieldWithInfoFn; + this.executionStepInfoFn = executionStepInfoFn; + ImmutableListMultimap.Builder deferredExecutionToFieldsBuilder = ImmutableListMultimap.builder(); + ImmutableSet.Builder deferredFieldsBuilder = ImmutableSet.builder(); + ImmutableList.Builder nonDeferredFieldNamesBuilder = ImmutableList.builder(); + + mergedSelectionSet.getSubFields().values().forEach(mergedField -> { + if (mergedField.getFieldsCount() > mergedField.getDeferredExecutions().size()) { + nonDeferredFieldNamesBuilder.add(mergedField.getSingleField().getResultKey()); + return; + } + mergedField.getDeferredExecutions().forEach(de -> { + deferredExecutionToFieldsBuilder.put(de, mergedField); + deferredFieldsBuilder.add(mergedField); + }); + }); + + this.deferredExecutionToFields = deferredExecutionToFieldsBuilder.build(); + this.deferredFields = deferredFieldsBuilder.build(); + this.parameters = parameters; + this.nonDeferredFieldNames = nonDeferredFieldNamesBuilder.build(); + } + + @Override + public boolean isDeferredField(MergedField mergedField) { + return deferredFields.contains(mergedField); + } + + @Override + public int deferredFieldsCount() { + return deferredFields.size(); + } + + @Override + public List getNonDeferredFieldNames(List allFieldNames) { + return this.nonDeferredFieldNames; + } + + @Override + public Set> createCalls() { + ImmutableSet deferredExecutions = deferredExecutionToFields.keySet(); + Set> set = Sets.newHashSetWithExpectedSize(deferredExecutions.size()); + + for (DeferredExecution deferredExecution : deferredExecutions) { + set.add(this.createDeferredFragmentCall(deferredExecution)); + } + return set; + } + + private DeferredFragmentCall createDeferredFragmentCall(DeferredExecution deferredExecution) { + int level = parameters.getPath().getLevel() + 1; + AlternativeCallContext alternativeCallContext = new AlternativeCallContext(level, deferredFields.size()); + + List mergedFields = deferredExecutionToFields.get(deferredExecution); + + List>> calls = FpKit.arrayListSizedTo(mergedFields); + for (MergedField currentField : mergedFields) { + calls.add(this.createResultSupplier(currentField, alternativeCallContext)); + } + + return new DeferredFragmentCall( + deferredExecution.getLabel(), + this.parameters.getPath(), + calls, + alternativeCallContext + ); + } + + private Supplier> createResultSupplier( + MergedField currentField, + AlternativeCallContext alternativeCallContext + ) { + Map fields = new LinkedHashMap<>(); + fields.put(currentField.getResultKey(), currentField); + + ExecutionStrategyParameters executionStrategyParameters = parameters.transform(builder -> + { + MergedSelectionSet mergedSelectionSet = MergedSelectionSet.newMergedSelectionSet().subFields(fields).build(); + ResultPath path = parameters.getPath().segment(currentField.getResultKey()); + builder.deferredCallContext(alternativeCallContext) + .field(currentField) + .fields(mergedSelectionSet) + .path(path) + .parent(null); // this is a break in the parent -> child chain - it's a new start effectively + } + ); + + // todo: handle cached computations + return dfCache.computeIfAbsent( + currentField.getResultKey(), + // The same field can be associated with multiple defer executions, so + // we memoize the field resolution to avoid multiple calls to the same data fetcher + key -> FpKit.interThreadMemoize(resolveDeferredFieldValue(currentField, executionContext, executionStrategyParameters) + ) + ); + } + + @NonNull + private Supplier> resolveDeferredFieldValue(MergedField currentField, ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters) { + return () -> { + + Instrumentation instrumentation = executionContext.getInstrumentation(); + Supplier executionStepInfo = executionStepInfoFn.apply(executionContext, executionStrategyParameters); + InstrumentationFieldParameters fieldParameters = new InstrumentationFieldParameters(executionContext, executionStepInfo); + InstrumentationContext deferredFieldCtx = nonNullCtx(instrumentation.beginDeferredField(fieldParameters, executionContext.getInstrumentationState())); + + CompletableFuture fieldValueResult = resolveFieldWithInfoFn.apply(this.executionContext, executionStrategyParameters); + executionContext.getDataLoaderDispatcherStrategy().deferFieldFetched(executionStrategyParameters); + + + deferredFieldCtx.onDispatched(); + + fieldValueResult.whenComplete((fieldValueInfo, throwable) -> { + this.executionContext.getDataLoaderDispatcherStrategy().deferredOnFieldValue(currentField.getResultKey(), fieldValueInfo, throwable, executionStrategyParameters); + deferredFieldCtx.onCompleted(fieldValueInfo, throwable); + }); + + + CompletableFuture executionResultCF = fieldValueResult + .thenCompose(fvi -> fvi + .getFieldValueFuture() + .thenApply(fv -> ExecutionResultImpl.newExecutionResult().data(fv).build()) + ); + + return executionResultCF + .thenApply(executionResult -> + new DeferredFragmentCall.FieldWithExecutionResult(currentField.getResultKey(), executionResult) + ); + }; + } + } + + /** + * A no-op implementation that should be used when incremental support is not enabled for the current execution. + */ + class NoOp implements DeferredExecutionSupport { + + @Override + public boolean isDeferredField(MergedField mergedField) { + return false; + } + + @Override + public int deferredFieldsCount() { + return 0; + } + + @Override + public List getNonDeferredFieldNames(List allFieldNames) { + return allFieldNames; + } + + @Override + public Set> createCalls() { + return Collections.emptySet(); + } + } +} diff --git a/src/main/java/graphql/execution/incremental/DeferredFragmentCall.java b/src/main/java/graphql/execution/incremental/DeferredFragmentCall.java new file mode 100644 index 0000000000..79f4c9b78d --- /dev/null +++ b/src/main/java/graphql/execution/incremental/DeferredFragmentCall.java @@ -0,0 +1,135 @@ +package graphql.execution.incremental; + +import com.google.common.collect.ImmutableList; +import graphql.ExecutionResult; +import graphql.GraphQLError; +import graphql.Internal; +import graphql.execution.Async; +import graphql.execution.NonNullableFieldWasNullError; +import graphql.execution.NonNullableFieldWasNullException; +import graphql.execution.ResultPath; +import graphql.incremental.DeferPayload; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.function.Supplier; + +/** + * Represents a deferred call (aka @defer) to get an execution result sometime after the initial query has returned. + *

    + * A deferred call can encompass multiple fields. The deferred call will resolve once all sub-fields resolve. + *

    + * For example, this query: + *

    + * {
    + *     post {
    + *         ... @defer(label: "defer-post") {
    + *             text
    + *             summary
    + *         }
    + *     }
    + * }
    + * 
    + * Will result on 1 instance of `DeferredCall`, containing calls for the 2 fields: "text" and "summary". + */ +@Internal +public class DeferredFragmentCall implements IncrementalCall { + private final String label; + + public ResultPath getPath() { + return path; + } + + private final ResultPath path; + private final List>> calls; + private final AlternativeCallContext alternativeCallContext; + + public DeferredFragmentCall( + String label, + ResultPath path, + List>> calls, + AlternativeCallContext alternativeCallContext + ) { + this.label = label; + this.path = path; + this.calls = calls; + this.alternativeCallContext = alternativeCallContext; + } + + @Override + public CompletableFuture invoke() { + Async.CombinedBuilder futures = Async.ofExpectedSize(calls.size()); + + calls.forEach(call -> { + CompletableFuture cf = call.get(); + futures.add(cf); + }); + + return futures.await() + .thenApply(this::transformToDeferredPayload) + .handle(this::handleNonNullableFieldError); + } + + /** + * Non-nullable errors need special treatment. + * When they happen, all the sibling fields will be ignored in the result. So as soon as one of the field calls + * throw this error, we can ignore the {@link ExecutionResult} from all the fields associated with this {@link DeferredFragmentCall} + * and build a special {@link DeferPayload} that captures the details of the error. + */ + private DeferPayload handleNonNullableFieldError(DeferPayload result, Throwable throwable) { + if (throwable != null) { + Throwable cause = throwable.getCause(); + if (cause instanceof NonNullableFieldWasNullException) { + GraphQLError error = new NonNullableFieldWasNullError((NonNullableFieldWasNullException) cause); + return DeferPayload.newDeferredItem() + .errors(Collections.singletonList(error)) + .label(label) + .path(path) + .build(); + } + if (cause instanceof CompletionException) { + throw (CompletionException) cause; + } + throw new CompletionException(cause); + } + return result; + } + + private DeferPayload transformToDeferredPayload(List fieldWithExecutionResults) { + List errorsEncountered = alternativeCallContext.getErrors(); + + Map dataMap = new HashMap<>(); + + ImmutableList.Builder errorsBuilder = ImmutableList.builder(); + + fieldWithExecutionResults.forEach(entry -> { + dataMap.put(entry.resultKey, entry.executionResult.getData()); + errorsBuilder.addAll(entry.executionResult.getErrors()); + }); + + return DeferPayload.newDeferredItem() + .errors(errorsEncountered) + .path(path) + .label(label) + .data(dataMap) + .build(); + } + + public static class FieldWithExecutionResult { + private final String resultKey; + private final ExecutionResult executionResult; + + public FieldWithExecutionResult(String resultKey, ExecutionResult executionResult) { + this.resultKey = resultKey; + this.executionResult = executionResult; + } + + public ExecutionResult getExecutionResult() { + return executionResult; + } + } +} diff --git a/src/main/java/graphql/execution/incremental/IncrementalCall.java b/src/main/java/graphql/execution/incremental/IncrementalCall.java new file mode 100644 index 0000000000..7d36d48f69 --- /dev/null +++ b/src/main/java/graphql/execution/incremental/IncrementalCall.java @@ -0,0 +1,14 @@ +package graphql.execution.incremental; + +import graphql.incremental.IncrementalPayload; + +import java.util.concurrent.CompletableFuture; + +/** + * Represents an incremental call (resulted from the usage of @defer or @stream). + * + * @param the type of the payload that this call resolves. + */ +public interface IncrementalCall { + CompletableFuture invoke(); +} diff --git a/src/main/java/graphql/execution/incremental/IncrementalCallState.java b/src/main/java/graphql/execution/incremental/IncrementalCallState.java new file mode 100644 index 0000000000..fc1f352ca3 --- /dev/null +++ b/src/main/java/graphql/execution/incremental/IncrementalCallState.java @@ -0,0 +1,111 @@ +package graphql.execution.incremental; + +import graphql.Internal; +import graphql.execution.reactive.SingleSubscriberPublisher; +import graphql.incremental.DelayedIncrementalPartialResult; +import graphql.incremental.IncrementalPayload; +import graphql.util.InterThreadMemoizedSupplier; +import graphql.util.LockKit; +import org.reactivestreams.Publisher; + +import java.util.Collection; +import java.util.Collections; +import java.util.Deque; +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; + +import static graphql.incremental.DelayedIncrementalPartialResultImpl.newIncrementalExecutionResult; + +/** + * This provides support for @defer directives on fields that mean that results will be sent AFTER + * the main result is sent via a Publisher stream. + */ +@Internal +public class IncrementalCallState { + private final AtomicBoolean incrementalCallsDetected = new AtomicBoolean(false); + private final Deque> incrementalCalls = new ConcurrentLinkedDeque<>(); + private final Supplier> publisher = createPublisher(); + private final AtomicInteger pendingCalls = new AtomicInteger(); + private final LockKit.ReentrantLock publisherLock = new LockKit.ReentrantLock(); + + @SuppressWarnings("FutureReturnValueIgnored") + private void drainIncrementalCalls() { + IncrementalCall incrementalCall = incrementalCalls.poll(); + + while (incrementalCall != null) { + incrementalCall.invoke() + .whenComplete((payload, exception) -> { + if (exception != null) { + publisher.get().offerError(exception); + return; + } + + // The assigment of `remainingCalls` and `publisher.offer` need to be synchronized to ensure + // `hasNext` is `false` precisely on the last event offered to the publisher. + publisherLock.lock(); + final int remainingCalls; + + try { + remainingCalls = pendingCalls.decrementAndGet(); + + DelayedIncrementalPartialResult executionResult = newIncrementalExecutionResult() + .incrementalItems(Collections.singletonList(payload)) + .hasNext(remainingCalls != 0) + .build(); + + publisher.get().offer(executionResult); + } finally { + publisherLock.unlock(); + } + + if (remainingCalls == 0) { + publisher.get().noMoreData(); + } else { + // Nested calls were added, let's try to drain the queue again. + drainIncrementalCalls(); + } + }); + incrementalCall = incrementalCalls.poll(); + } + } + + public void enqueue(IncrementalCall incrementalCall) { + publisherLock.runLocked(() -> { + incrementalCallsDetected.set(true); + incrementalCalls.offer(incrementalCall); + pendingCalls.incrementAndGet(); + }); + } + + public void enqueue(Collection> calls) { + calls.forEach(this::enqueue); + } + + public boolean getIncrementalCallsDetected() { + return incrementalCallsDetected.get(); + } + + private Supplier> createPublisher() { + // this will be created once and once only - any extra calls to .get() will return the previously created + // singleton object + return new InterThreadMemoizedSupplier<>(() -> new SingleSubscriberPublisher<>(this::drainIncrementalCalls)); + } + + /** + * This method will return a {@link Publisher} of deferred results. No field processing will be done + * until a {@link org.reactivestreams.Subscriber} is attached to this publisher. Once a {@link org.reactivestreams.Subscriber} + * is attached the deferred field result processing will be started and published as a series of events. + * + * @return the publisher of deferred results + */ + public Publisher startDeferredCalls() { + return publisher.get(); + } + + public void startDrainingNow() { + drainIncrementalCalls(); + } + +} diff --git a/src/main/java/graphql/execution/incremental/IncrementalExecutionContextKeys.java b/src/main/java/graphql/execution/incremental/IncrementalExecutionContextKeys.java new file mode 100644 index 0000000000..293a4ca4fb --- /dev/null +++ b/src/main/java/graphql/execution/incremental/IncrementalExecutionContextKeys.java @@ -0,0 +1,26 @@ +package graphql.execution.incremental; + + +import graphql.Internal; +import org.jspecify.annotations.NullMarked; + +/** + * GraphQLContext keys for controlling incremental execution behavior. + */ +@Internal +@NullMarked +public final class IncrementalExecutionContextKeys { + private IncrementalExecutionContextKeys() { + } + + /** + * Enables eager start of @defer processing so defered work runs before the initial result is computed. + * Defaults to false. + *

    + * Expects a boolean value. + */ + public static final String ENABLE_EAGER_DEFER_START = "__GJ_enable_eager_defer_start"; + +} + + diff --git a/src/main/java/graphql/execution/incremental/IncrementalUtils.java b/src/main/java/graphql/execution/incremental/IncrementalUtils.java new file mode 100644 index 0000000000..5dc1ac171c --- /dev/null +++ b/src/main/java/graphql/execution/incremental/IncrementalUtils.java @@ -0,0 +1,54 @@ +package graphql.execution.incremental; + +import graphql.Assert; +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.execution.ValuesResolver; +import graphql.language.Directive; +import graphql.language.NodeUtil; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.function.Function; + +import static graphql.Directives.DeferDirective; + +@Internal +public class IncrementalUtils { + private IncrementalUtils() { + } + + public static @Nullable T createDeferredExecution( + Map variables, + List directives, + Function builderFunction + ) { + Directive deferDirective = NodeUtil.findNodeByName(directives, DeferDirective.getName()); + + if (deferDirective != null) { + Map argumentValues = ValuesResolver.getArgumentValues(DeferDirective.getArguments(), deferDirective.getArguments(), CoercedVariables.of(variables), GraphQLContext.getDefault(), Locale.getDefault()); + + Object flag = argumentValues.get("if"); + Assert.assertTrue(flag instanceof Boolean, "The '%s' directive MUST have a value for the 'if' argument", DeferDirective.getName()); + + if (!((Boolean) flag)) { + return null; + } + + Object label = argumentValues.get("label"); + + if (label == null) { + return builderFunction.apply(null); + } + + Assert.assertTrue(label instanceof String, "The 'label' argument from the '%s' directive MUST contain a String value", DeferDirective.getName()); + + return builderFunction.apply((String) label); + } + + return null; + } +} diff --git a/src/main/java/graphql/execution/incremental/StreamedCall.java b/src/main/java/graphql/execution/incremental/StreamedCall.java new file mode 100644 index 0000000000..beae535b3e --- /dev/null +++ b/src/main/java/graphql/execution/incremental/StreamedCall.java @@ -0,0 +1,19 @@ +package graphql.execution.incremental; + +import graphql.Internal; +import graphql.incremental.StreamPayload; + +import java.util.concurrent.CompletableFuture; + +/** + * Represents a call that fetches data that was streamed, via the @stream directive. + *

    + * This is a placeholder class, created to showcase the proposed structure that accommodates both @defer and @stream execution. + */ +@Internal +public class StreamedCall implements IncrementalCall { + @Override + public CompletableFuture invoke() { + throw new UnsupportedOperationException("Not implemented yet."); + } +} diff --git a/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java b/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java index 52e6783827..4ae65742bf 100644 --- a/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java @@ -1,34 +1,40 @@ package graphql.execution.instrumentation; +import com.google.common.collect.ImmutableList; import graphql.ExecutionInput; import graphql.ExecutionResult; +import graphql.ExperimentalApi; import graphql.PublicApi; import graphql.execution.Async; +import graphql.execution.DataFetcherResult; import graphql.execution.ExecutionContext; import graphql.execution.FieldValueInfo; -import graphql.execution.MergedField; import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.instrumentation.parameters.InstrumentationReactiveResultsParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; +import java.util.AbstractMap; +import java.util.Arrays; import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; import static graphql.Assert.assertNotNull; -import static java.util.stream.Collectors.toList; /** * This allows you to chain together a number of {@link graphql.execution.instrumentation.Instrumentation} implementations @@ -43,10 +49,14 @@ public class ChainedInstrumentation implements Instrumentation { // This class is inspired from https://github.com/leangen/graphql-spqr/blob/master/src/main/java/io/leangen/graphql/GraphQLRuntime.java#L80 - private final List instrumentations; + protected final ImmutableList instrumentations; public ChainedInstrumentation(List instrumentations) { - this.instrumentations = Collections.unmodifiableList(assertNotNull(instrumentations)); + this.instrumentations = ImmutableList.copyOf(assertNotNull(instrumentations)); + } + + public ChainedInstrumentation(Instrumentation... instrumentations) { + this(Arrays.asList(instrumentations)); } /** @@ -56,197 +66,237 @@ public List getInstrumentations() { return instrumentations; } - private InstrumentationState getState(Instrumentation instrumentation, InstrumentationState parametersInstrumentationState) { - ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) parametersInstrumentationState; - return chainedInstrumentationState.getState(instrumentation); + private InstrumentationContext chainedCtx(InstrumentationState state, BiFunction> mapper) { + // if we have zero or 1 instrumentations (and 1 is the most common), then we can avoid an object allocation + // of the ChainedInstrumentationContext since it won't be needed + if (instrumentations.isEmpty()) { + return SimpleInstrumentationContext.noOp(); + } + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + if (instrumentations.size() == 1) { + return mapper.apply(instrumentations.get(0), chainedInstrumentationState.getState(0)); + } + return new ChainedInstrumentationContext<>(chainedMapAndDropNulls(chainedInstrumentationState, mapper)); + } + + private T chainedInstrument(InstrumentationState state, T input, ChainedInstrumentationFunction mapper) { + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + for (int i = 0; i < instrumentations.size(); i++) { + Instrumentation instrumentation = instrumentations.get(i); + InstrumentationState specificState = chainedInstrumentationState.getState(i); + input = mapper.apply(instrumentation, specificState, input); + } + return input; + } + + protected ImmutableList chainedMapAndDropNulls(InstrumentationState state, BiFunction mapper) { + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + ImmutableList.Builder result = ImmutableList.builderWithExpectedSize(instrumentations.size()); + for (int i = 0; i < instrumentations.size(); i++) { + Instrumentation instrumentation = instrumentations.get(i); + InstrumentationState specificState = chainedInstrumentationState.getState(i); + T value = mapper.apply(instrumentation, specificState); + if (value != null) { + result.add(value); + } + } + return result.build(); + } + + protected void chainedConsume(InstrumentationState state, BiConsumer stateConsumer) { + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + for (int i = 0; i < instrumentations.size(); i++) { + Instrumentation instrumentation = instrumentations.get(i); + InstrumentationState specificState = chainedInstrumentationState.getState(i); + stateConsumer.accept(instrumentation, specificState); + } } @Override - public InstrumentationState createState(InstrumentationCreateStateParameters parameters) { - return new ChainedInstrumentationState(instrumentations, parameters); + public @NonNull CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return ChainedInstrumentationState.combineAll(instrumentations, parameters); } @Override - public InstrumentationContext beginExecution(final InstrumentationExecutionParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginExecution(parameters.withNewState(state)); - }) - .collect(toList())); + public InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginExecution(parameters, specificState)); } + @Override - public InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginParse(parameters.withNewState(state)); - }) - .collect(toList())); + public InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginParse(parameters, specificState)); } + @Override - public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginValidation(parameters.withNewState(state)); - }) - .collect(toList())); + public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginValidation(parameters, specificState)); } @Override - public InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginExecuteOperation(parameters.withNewState(state)); - }) - .collect(toList())); + public InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginExecuteOperation(parameters, specificState)); } @Override - public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { - return new ChainedExecutionStrategyInstrumentationContext(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginExecutionStrategy(parameters.withNewState(state)); - }) - .collect(toList())); + public @Nullable InstrumentationContext beginReactiveResults(InstrumentationReactiveResultsParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginReactiveResults(parameters, specificState)); } @Override - public DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) { - return new ChainedDeferredExecutionStrategyInstrumentationContext(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginDeferredField(parameters.withNewState(state)); - }) - .collect(toList())); + public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + if (instrumentations.isEmpty()) { + return ExecutionStrategyInstrumentationContext.NOOP; + } + BiFunction mapper = (instrumentation, specificState) -> instrumentation.beginExecutionStrategy(parameters, specificState); + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + if (instrumentations.size() == 1) { + return mapper.apply(instrumentations.get(0), chainedInstrumentationState.getState(0)); + } + return new ChainedExecutionStrategyInstrumentationContext(chainedMapAndDropNulls(chainedInstrumentationState, mapper)); } @Override - public InstrumentationContext beginField(InstrumentationFieldParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginField(parameters.withNewState(state)); - }) - .collect(toList())); + public @Nullable ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + if (instrumentations.isEmpty()) { + return ExecuteObjectInstrumentationContext.NOOP; + } + BiFunction mapper = (instrumentation, specificState) -> instrumentation.beginExecuteObject(parameters, specificState); + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + if (instrumentations.size() == 1) { + return mapper.apply(instrumentations.get(0), chainedInstrumentationState.getState(0)); + } + return new ChainedExecuteObjectInstrumentationContext(chainedMapAndDropNulls(chainedInstrumentationState, mapper)); } + @ExperimentalApi @Override - public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginFieldFetch(parameters.withNewState(state)); - }) - .collect(toList())); + public InstrumentationContext beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginDeferredField(parameters, specificState)); } @Override - public InstrumentationContext beginFieldComplete(InstrumentationFieldCompleteParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginFieldComplete(parameters.withNewState(state)); - }) - .collect(toList())); + public InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginSubscribedFieldEvent(parameters, specificState)); } @Override - public InstrumentationContext beginFieldListComplete(InstrumentationFieldCompleteParameters parameters) { - return new ChainedInstrumentationContext<>(instrumentations.stream() - .map(instrumentation -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - return instrumentation.beginFieldListComplete(parameters.withNewState(state)); - }) - .collect(toList())); + public @Nullable InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldExecution(parameters, specificState)); } + @SuppressWarnings("deprecation") @Override - public ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters) { - for (Instrumentation instrumentation : instrumentations) { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - executionInput = instrumentation.instrumentExecutionInput(executionInput, parameters.withNewState(state)); - } - return executionInput; + public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldFetch(parameters, specificState)); } @Override - public DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters) { - for (Instrumentation instrumentation : instrumentations) { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters.withNewState(state)); + public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + if (instrumentations.isEmpty()) { + return FieldFetchingInstrumentationContext.NOOP; + } + BiFunction mapper = (instrumentation, specificState) -> instrumentation.beginFieldFetching(parameters, specificState); + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + if (instrumentations.size() == 1) { + return mapper.apply(instrumentations.get(0), chainedInstrumentationState.getState(0)); } - return documentAndVariables; + ImmutableList objects = chainedMapAndDropNulls(chainedInstrumentationState, mapper); + return new ChainedFieldFetchingInstrumentationContext(objects); } @Override - public GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters) { - for (Instrumentation instrumentation : instrumentations) { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - schema = instrumentation.instrumentSchema(schema, parameters.withNewState(state)); - } - return schema; + public @Nullable InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldCompletion(parameters, specificState)); } + @Override - public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters) { - for (Instrumentation instrumentation : instrumentations) { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - executionContext = instrumentation.instrumentExecutionContext(executionContext, parameters.withNewState(state)); - } - return executionContext; + public @Nullable InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldListCompletion(parameters, specificState)); } + @NonNull @Override - public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { - for (Instrumentation instrumentation : instrumentations) { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - dataFetcher = instrumentation.instrumentDataFetcher(dataFetcher, parameters.withNewState(state)); - } - return dataFetcher; + public ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return chainedInstrument(state, executionInput, (instrumentation, specificState, accumulator) -> instrumentation.instrumentExecutionInput(accumulator, parameters, specificState)); } + @NonNull @Override - public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { - CompletableFuture> resultsFuture = Async.eachSequentially(instrumentations, (instrumentation, index, prevResults) -> { - InstrumentationState state = getState(instrumentation, parameters.getInstrumentationState()); - ExecutionResult lastResult = prevResults.size() > 0 ? prevResults.get(prevResults.size() - 1) : executionResult; - return instrumentation.instrumentExecutionResult(lastResult, parameters.withNewState(state)); + public DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return chainedInstrument(state, documentAndVariables, (instrumentation, specificState, accumulator) -> + instrumentation.instrumentDocumentAndVariables(accumulator, parameters, specificState)); + } + + @NonNull + @Override + public GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return chainedInstrument(state, schema, (instrumentation, specificState, accumulator) -> + instrumentation.instrumentSchema(accumulator, parameters, specificState)); + } + + @NonNull + @Override + public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return chainedInstrument(state, executionContext, (instrumentation, specificState, accumulator) -> + instrumentation.instrumentExecutionContext(accumulator, parameters, specificState)); + } + + @NonNull + @Override + public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return chainedInstrument(state, dataFetcher, (Instrumentation instrumentation, InstrumentationState specificState, DataFetcher accumulator) -> + instrumentation.instrumentDataFetcher(accumulator, parameters, specificState)); + } + + @NonNull + @Override + public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + ImmutableList> entries = chainedMapAndDropNulls(state, AbstractMap.SimpleEntry::new); + CompletableFuture> resultsFuture = Async.eachSequentially(entries, (entry, prevResults) -> { + Instrumentation instrumentation = entry.getKey(); + InstrumentationState specificState = entry.getValue(); + ExecutionResult lastResult = !prevResults.isEmpty() ? prevResults.get(prevResults.size() - 1) : executionResult; + return instrumentation.instrumentExecutionResult(lastResult, parameters, specificState); }); return resultsFuture.thenApply((results) -> results.isEmpty() ? executionResult : results.get(results.size() - 1)); } - private static class ChainedInstrumentationState implements InstrumentationState { - private final Map instrumentationStates; + static class ChainedInstrumentationState implements InstrumentationState { + private final List instrumentationStates; - - private ChainedInstrumentationState(List instrumentations, InstrumentationCreateStateParameters parameters) { - instrumentationStates = new LinkedHashMap<>(instrumentations.size()); - instrumentations.forEach(i -> instrumentationStates.put(i, i.createState(parameters))); + private ChainedInstrumentationState(List instrumentationStates) { + this.instrumentationStates = instrumentationStates; } - private InstrumentationState getState(Instrumentation instrumentation) { - return instrumentationStates.get(instrumentation); + private InstrumentationState getState(int index) { + return instrumentationStates.get(index); } + private static CompletableFuture combineAll(List instrumentations, InstrumentationCreateStateParameters parameters) { + Async.CombinedBuilder builder = Async.ofExpectedSize(instrumentations.size()); + for (Instrumentation instrumentation : instrumentations) { + // state can be null including the CF so handle that + CompletableFuture stateCF = Async.orNullCompletedFuture(instrumentation.createStateAsync(parameters)); + builder.add(stateCF); + } + return builder.await().thenApply(ChainedInstrumentationState::new); + } } private static class ChainedInstrumentationContext implements InstrumentationContext { - private final List> contexts; + private final ImmutableList> contexts; - ChainedInstrumentationContext(List> contexts) { - this.contexts = Collections.unmodifiableList(contexts); + ChainedInstrumentationContext(ImmutableList> contexts) { + this.contexts = contexts; } @Override - public void onDispatched(CompletableFuture result) { - contexts.forEach(context -> context.onDispatched(result)); + public void onDispatched() { + contexts.forEach(InstrumentationContext::onDispatched); } @Override @@ -257,15 +307,15 @@ public void onCompleted(T result, Throwable t) { private static class ChainedExecutionStrategyInstrumentationContext implements ExecutionStrategyInstrumentationContext { - private final List contexts; + private final ImmutableList contexts; - ChainedExecutionStrategyInstrumentationContext(List contexts) { - this.contexts = Collections.unmodifiableList(contexts); + ChainedExecutionStrategyInstrumentationContext(ImmutableList contexts) { + this.contexts = contexts; } @Override - public void onDispatched(CompletableFuture result) { - contexts.forEach(context -> context.onDispatched(result)); + public void onDispatched() { + contexts.forEach(InstrumentationContext::onDispatched); } @Override @@ -279,33 +329,94 @@ public void onFieldValuesInfo(List fieldValueInfoList) { } @Override - public void onDeferredField(MergedField field) { - contexts.forEach(context -> context.onDeferredField(field)); + public void onFieldValuesException() { + contexts.forEach(ExecutionStrategyInstrumentationContext::onFieldValuesException); } } - private static class ChainedDeferredExecutionStrategyInstrumentationContext implements DeferredFieldInstrumentationContext { + private static class ChainedExecuteObjectInstrumentationContext implements ExecuteObjectInstrumentationContext { - private final List contexts; + private final ImmutableList contexts; - ChainedDeferredExecutionStrategyInstrumentationContext(List contexts) { - this.contexts = Collections.unmodifiableList(contexts); + ChainedExecuteObjectInstrumentationContext(ImmutableList contexts) { + this.contexts = contexts; } @Override - public void onDispatched(CompletableFuture result) { - contexts.forEach(context -> context.onDispatched(result)); + public void onDispatched() { + contexts.forEach(InstrumentationContext::onDispatched); } @Override - public void onCompleted(ExecutionResult result, Throwable t) { + public void onCompleted(Map result, Throwable t) { + contexts.forEach(context -> context.onCompleted(result, t)); + } + + @Override + public void onFieldValuesInfo(List fieldValueInfoList) { + contexts.forEach(context -> context.onFieldValuesInfo(fieldValueInfoList)); + } + + @Override + public void onFieldValuesException() { + contexts.forEach(ExecuteObjectInstrumentationContext::onFieldValuesException); + } + } + + private static class ChainedFieldFetchingInstrumentationContext implements FieldFetchingInstrumentationContext { + + private final ImmutableList contexts; + + ChainedFieldFetchingInstrumentationContext(ImmutableList contexts) { + this.contexts = contexts; + } + + @Override + public void onDispatched() { + contexts.forEach(FieldFetchingInstrumentationContext::onDispatched); + } + + @Override + public void onFetchedValue(Object fetchedValue) { + contexts.forEach(context -> context.onFetchedValue(fetchedValue)); + } + + @Override + public void onExceptionHandled(DataFetcherResult dataFetcherResult) { + contexts.forEach(context -> context.onExceptionHandled(dataFetcherResult)); + } + + @Override + public void onCompleted(Object result, Throwable t) { contexts.forEach(context -> context.onCompleted(result, t)); } + } + + private static class ChainedDeferredExecutionStrategyInstrumentationContext implements InstrumentationContext { + + + private final List> contexts; + + ChainedDeferredExecutionStrategyInstrumentationContext(List> contexts) { + this.contexts = Collections.unmodifiableList(contexts); + } + + @Override + public void onDispatched() { + contexts.forEach(InstrumentationContext::onDispatched); + } @Override - public void onFieldValueInfo(FieldValueInfo fieldValueInfo) { - contexts.forEach(context -> context.onFieldValueInfo(fieldValueInfo)); + public void onCompleted(Object result, Throwable t) { + contexts.forEach(context -> context.onCompleted(result, t)); } } + + @FunctionalInterface + private interface ChainedInstrumentationFunction { + R apply(I instrumentation, S state, V value); + } + + } diff --git a/src/main/java/graphql/execution/instrumentation/DeferredFieldInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/DeferredFieldInstrumentationContext.java deleted file mode 100644 index 39de62be19..0000000000 --- a/src/main/java/graphql/execution/instrumentation/DeferredFieldInstrumentationContext.java +++ /dev/null @@ -1,12 +0,0 @@ -package graphql.execution.instrumentation; - -import graphql.ExecutionResult; -import graphql.execution.FieldValueInfo; - -public interface DeferredFieldInstrumentationContext extends InstrumentationContext { - - default void onFieldValueInfo(FieldValueInfo fieldValueInfo) { - - } - -} diff --git a/src/main/java/graphql/execution/instrumentation/DocumentAndVariables.java b/src/main/java/graphql/execution/instrumentation/DocumentAndVariables.java index aa8e18831b..7b5c4c4978 100644 --- a/src/main/java/graphql/execution/instrumentation/DocumentAndVariables.java +++ b/src/main/java/graphql/execution/instrumentation/DocumentAndVariables.java @@ -1,9 +1,9 @@ package graphql.execution.instrumentation; import graphql.PublicApi; +import graphql.collect.ImmutableMapWithNullValues; import graphql.language.Document; -import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Consumer; @@ -12,11 +12,11 @@ @PublicApi public class DocumentAndVariables { private final Document document; - private final Map variables; + private final ImmutableMapWithNullValues variables; private DocumentAndVariables(Document document, Map variables) { this.document = assertNotNull(document); - this.variables = assertNotNull(variables); + this.variables = ImmutableMapWithNullValues.copyOf(assertNotNull(variables)); } public Document getDocument() { @@ -24,7 +24,7 @@ public Document getDocument() { } public Map getVariables() { - return new LinkedHashMap<>(variables); + return variables; } public DocumentAndVariables transform(Consumer builderConsumer) { diff --git a/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java new file mode 100644 index 0000000000..a9d8417756 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java @@ -0,0 +1,44 @@ +package graphql.execution.instrumentation; + +import graphql.Internal; +import graphql.PublicSpi; +import graphql.execution.FieldValueInfo; +import org.jspecify.annotations.NonNull; + +import java.util.List; +import java.util.Map; + +@PublicSpi +public interface ExecuteObjectInstrumentationContext extends InstrumentationContext> { + + @Internal + ExecuteObjectInstrumentationContext NOOP = new ExecuteObjectInstrumentationContext() { + @Override + public void onDispatched() { + } + + @Override + public void onCompleted(Map result, Throwable t) { + } + }; + + /** + * This creates a no-op {@link InstrumentationContext} if the one pass in is null + * + * @param nullableContext a {@link InstrumentationContext} that can be null + * + * @return a non null {@link InstrumentationContext} that maybe a no-op + */ + @NonNull + @Internal + static ExecuteObjectInstrumentationContext nonNullCtx(ExecuteObjectInstrumentationContext nullableContext) { + return nullableContext == null ? NOOP : nullableContext; + } + + default void onFieldValuesInfo(List fieldValueInfoList) { + } + + default void onFieldValuesException() { + } + +} diff --git a/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java index e3079ccc85..5b9abac713 100644 --- a/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java @@ -1,18 +1,46 @@ package graphql.execution.instrumentation; import graphql.ExecutionResult; +import graphql.Internal; +import graphql.PublicSpi; import graphql.execution.FieldValueInfo; -import graphql.execution.MergedField; +import org.jspecify.annotations.NonNull; import java.util.List; +@PublicSpi public interface ExecutionStrategyInstrumentationContext extends InstrumentationContext { default void onFieldValuesInfo(List fieldValueInfoList) { } - default void onDeferredField(MergedField field) { + default void onFieldValuesException() { } + + /** + * This creates a no-op {@link InstrumentationContext} if the one pass in is null + * + * @param nullableContext a {@link InstrumentationContext} that can be null + * + * @return a non null {@link InstrumentationContext} that maybe a no-op + */ + @NonNull + @Internal + static ExecutionStrategyInstrumentationContext nonNullCtx(ExecutionStrategyInstrumentationContext nullableContext) { + return nullableContext == null ? NOOP : nullableContext; + } + + @Internal + ExecutionStrategyInstrumentationContext NOOP = new ExecutionStrategyInstrumentationContext() { + @Override + public void onDispatched() { + } + + @Override + public void onCompleted(ExecutionResult result, Throwable t) { + } + }; + } diff --git a/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java new file mode 100644 index 0000000000..f6ff09beca --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java @@ -0,0 +1,79 @@ +package graphql.execution.instrumentation; + +import graphql.Internal; +import graphql.PublicSpi; +import graphql.execution.DataFetcherResult; +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +/** + * FieldFetchingInstrumentationContext is returned back from the {@link Instrumentation#beginFieldFetching(InstrumentationFieldFetchParameters, InstrumentationState)} + * method, and it's much like the normal {@link InstrumentationContext} type except it also + * gives the value that was returned by a fields {@link graphql.schema.DataFetcher}. This allows + * you to know if the field value is a completely materialised field or if it's a {@link java.util.concurrent.CompletableFuture} + * promise to a value. + */ +@PublicSpi +public interface FieldFetchingInstrumentationContext extends InstrumentationContext { + + /** + * This is called back with the value fetched for the field by its {@link graphql.schema.DataFetcher}. + * This can be a materialised java object or it maybe a {@link java.util.concurrent.CompletableFuture} + * promise to some async value that has not yet completed. + * + * @param fetchedValue a value that a field's {@link graphql.schema.DataFetcher} returned + */ + default void onFetchedValue(Object fetchedValue) { + } + + /** + * This is called back after any {@link graphql.execution.DataFetcherExceptionHandler}) has run on any exception raised + * during a {@link graphql.schema.DataFetcher} invocation. This allows to see the final {@link DataFetcherResult} + * that will be used when performing the complete step. + * @param dataFetcherResult the final {@link DataFetcherResult} after the exception handler has run + */ + default void onExceptionHandled(DataFetcherResult dataFetcherResult) { + } + + @Internal + FieldFetchingInstrumentationContext NOOP = new FieldFetchingInstrumentationContext() { + @Override + public void onDispatched() { + } + + @Override + public void onCompleted(Object result, Throwable t) { + } + }; + + /** + * This creates a no-op {@link InstrumentationContext} if the one passed in is null + * + * @param nullableContext a {@link InstrumentationContext} that can be null + * @return a non-null {@link InstrumentationContext} that maybe a no-op + */ + @NonNull + @Internal + static FieldFetchingInstrumentationContext nonNullCtx(FieldFetchingInstrumentationContext nullableContext) { + return nullableContext == null ? NOOP : nullableContext; + } + + @Internal + static FieldFetchingInstrumentationContext adapter(@Nullable InstrumentationContext context) { + if (context == null) { + return null; + } + return new FieldFetchingInstrumentationContext() { + @Override + public void onDispatched() { + context.onDispatched(); + } + + @Override + public void onCompleted(Object result, Throwable t) { + context.onCompleted(result, t); + } + }; + } +} diff --git a/src/main/java/graphql/execution/instrumentation/Instrumentation.java b/src/main/java/graphql/execution/instrumentation/Instrumentation.java index b01d3d71cf..565c4333da 100644 --- a/src/main/java/graphql/execution/instrumentation/Instrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/Instrumentation.java @@ -2,20 +2,24 @@ import graphql.ExecutionInput; import graphql.ExecutionResult; +import graphql.ExperimentalApi; +import graphql.PublicSpi; import graphql.execution.ExecutionContext; import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.instrumentation.parameters.InstrumentationReactiveResultsParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -24,123 +28,231 @@ /** * Provides the capability to instrument the execution steps of a GraphQL query. - * + *

    * For example you might want to track which fields are taking the most time to fetch from the backing database * or log what fields are being asked for. - * + *

    * Remember that graphql calls can cross threads so make sure you think about the thread safety of any instrumentation * code when you are writing it. - * + *

    * Each step gives back an {@link graphql.execution.instrumentation.InstrumentationContext} object. This has two callbacks on it, * one for the step is `dispatched` and one for when the step has `completed`. This is done because many of the "steps" are asynchronous * operations such as fetching data and resolving it into objects. */ +@PublicSpi public interface Instrumentation { - /** - * This will be called just before execution to create an object that is given back to all instrumentation methods + * This will be called just before execution to create an object, in an asynchronous manner, that is given back to all instrumentation methods * to allow them to have per execution request state * + * @param parameters the parameters to this step + * * @return a state object that is passed to each method */ - default InstrumentationState createState() { - return null; + @Nullable + default CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + InstrumentationState state = createState(parameters); + return state == null ? null : CompletableFuture.completedFuture(state); } /** - * This will be called just before execution to create an object that is given back to all instrumentation methods - * to allow them to have per execution request state + * This method is retained for backwards compatibility reasons so that previous {@link Instrumentation} implementations + * continue to work. The graphql-java code only called {@link #createStateAsync(InstrumentationCreateStateParameters)} + * but the default implementation calls back to this method. * * @param parameters the parameters to this step * * @return a state object that is passed to each method */ + @Nullable default InstrumentationState createState(InstrumentationCreateStateParameters parameters) { - return createState(); + return null; } /** - * This is called right at the start of query execution and its the first step in the instrumentation chain. + * This is called right at the start of query execution, and it's the first step in the instrumentation chain. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters); + @Nullable + default InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return noOp(); + } /** * This is called just before a query is parsed. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - InstrumentationContext beginParse(InstrumentationExecutionParameters parameters); + @Nullable + default InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return noOp(); + } /** * This is called just before the parsed query document is validated. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters); + @Nullable + default InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + return noOp(); + } /** * This is called just before the execution of the query operation is started. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters); + @Nullable + default InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + return noOp(); + } + + /** + * This is called just before the execution of any reactive results, namely incremental deferred results or subscriptions. When the {@link org.reactivestreams.Publisher} + * finally ends (with either a {@link Throwable} or none) then the {@link InstrumentationContext} wil be called back to say the reactive results + * have finished. + * + * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} + * + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) + */ + @Nullable + default InstrumentationContext beginReactiveResults(InstrumentationReactiveResultsParameters parameters, InstrumentationState state) { + return noOp(); + } /** * This is called each time an {@link graphql.execution.ExecutionStrategy} is invoked, which may be multiple times - * per query as the engine recursively descends down over the query. + * per query as the engine recursively descends over the query. + * + * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} + * + * @return a nullable {@link ExecutionStrategyInstrumentationContext} object that will be called back when the step ends (assuming it's not null) + */ + @Nullable + default ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return ExecutionStrategyInstrumentationContext.NOOP; + } + + /** + * This is called each time an {@link graphql.execution.ExecutionStrategy} object resolution is called, which may be multiple times + * per query as the engine recursively descends over the query. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link ExecutionStrategyInstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters); + @Nullable + default ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return ExecuteObjectInstrumentationContext.NOOP; + } /** * This is called just before a deferred field is resolved into a value. + *

    + * This is an EXPERIMENTAL instrumentation callback. The method signature will definitely change. + * + * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} + * + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) + */ + @ExperimentalApi + default InstrumentationContext beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) { + return noOp(); + } + + /** + * This is called each time a subscription field produces a new reactive stream event value and it needs to be mapped over via the graphql field subselection. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters); + @Nullable + default InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + return noOp(); + } /** * This is called just before a field is resolved into a value. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - InstrumentationContext beginField(InstrumentationFieldParameters parameters); + @Nullable + default InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + return noOp(); + } + /** * This is called just before a field {@link DataFetcher} is invoked. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) + * + * @deprecated use {@link #beginFieldFetching(InstrumentationFieldFetchParameters, InstrumentationState)} instead */ - InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters); + @Deprecated(since = "2024-04-18") + @Nullable + default InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return noOp(); + } + /** + * This is called just before a field {@link DataFetcher} is invoked. The {@link FieldFetchingInstrumentationContext#onFetchedValue(Object)} + * callback will be invoked once a value is returned by a {@link DataFetcher} but perhaps before + * its value is completed if it's a {@link CompletableFuture} value. + *

    + * This method is the replacement method for the now deprecated {@link #beginFieldFetch(InstrumentationFieldFetchParameters, InstrumentationState)} + * method, and it should be implemented in new {@link Instrumentation} classes. This default version of this + * method calls back to the deprecated {@link #beginFieldFetch(InstrumentationFieldFetchParameters, InstrumentationState)} method + * so that older implementations continue to work. + * + * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} + * + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) + */ + @Nullable + default FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + InstrumentationContext ctx = beginFieldFetch(parameters, state); + return FieldFetchingInstrumentationContext.adapter(ctx); + } /** * This is called just before the complete field is started. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - default InstrumentationContext beginFieldComplete(InstrumentationFieldCompleteParameters parameters) { + @Nullable + default InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { return noOp(); } @@ -148,10 +260,12 @@ default InstrumentationContext beginFieldComplete(Instrumentati * This is called just before the complete field list is started. * * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null {@link InstrumentationContext} object that will be called back when the step ends + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) */ - default InstrumentationContext beginFieldListComplete(InstrumentationFieldCompleteParameters parameters) { + @Nullable + default InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { return noOp(); } @@ -161,10 +275,12 @@ default InstrumentationContext beginFieldListComplete(Instrumen * * @param executionInput the execution input to be used * @param parameters the parameters describing the field to be fetched + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null instrumented ExecutionInput, the default is to return to the same object + * @return a non-null instrumented ExecutionInput, the default is to return to the same object */ - default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters) { + @NonNull + default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionInput; } @@ -173,10 +289,12 @@ default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, I * * @param documentAndVariables the document and variables to be used * @param parameters the parameters describing the execution + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null instrumented DocumentAndVariables, the default is to return to the same objects + * @return a non-null instrumented DocumentAndVariables, the default is to return to the same objects */ - default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters) { + @NonNull + default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return documentAndVariables; } @@ -186,10 +304,12 @@ default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables * * @param schema the schema to be used * @param parameters the parameters describing the field to be fetched + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null instrumented GraphQLSchema, the default is to return to the same object + * @return a non-null instrumented GraphQLSchema, the default is to return to the same object */ - default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters) { + @NonNull + default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return schema; } @@ -199,14 +319,15 @@ default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExec * * @param executionContext the execution context to be used * @param parameters the parameters describing the field to be fetched + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null instrumented ExecutionContext, the default is to return to the same object + * @return a non-null instrumented ExecutionContext, the default is to return to the same object */ - default ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters) { + @NonNull + default ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionContext; } - /** * This is called to instrument a {@link DataFetcher} just before it is used to fetch a field, allowing you * to adjust what information is passed back or record information about specific data fetches. Note @@ -215,10 +336,12 @@ default ExecutionContext instrumentExecutionContext(ExecutionContext executionCo * * @param dataFetcher the data fetcher about to be used * @param parameters the parameters describing the field to be fetched + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * - * @return a non null instrumented DataFetcher, the default is to return to the same object + * @return a non-null instrumented DataFetcher, the default is to return to the same object */ - default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { + @NonNull + default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return dataFetcher; } @@ -227,11 +350,12 @@ default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, Instrum * * @param executionResult {@link java.util.concurrent.CompletableFuture} of the result to instrument * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * * @return a new execution result completable future */ - default CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { + @NonNull + default CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { return CompletableFuture.completedFuture(executionResult); } - } diff --git a/src/main/java/graphql/execution/instrumentation/InstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/InstrumentationContext.java index 4f76ca36f4..422d0ece71 100644 --- a/src/main/java/graphql/execution/instrumentation/InstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/InstrumentationContext.java @@ -1,6 +1,8 @@ package graphql.execution.instrumentation; -import java.util.concurrent.CompletableFuture; +import graphql.PublicSpi; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * When a {@link Instrumentation}.'beginXXX()' method is called then it must return a non null InstrumentationContext @@ -10,14 +12,14 @@ * This pattern of construction of an object then call back is intended to allow "timers" to be created that can instrument what has * just happened or "loggers" to be called to record what has happened. */ +@PublicSpi +@NullMarked public interface InstrumentationContext { /** * This is invoked when the instrumentation step is initially dispatched - * - * @param result the result of the step as a completable future */ - void onDispatched(CompletableFuture result); + void onDispatched(); /** * This is invoked when the instrumentation step is fully completed @@ -25,6 +27,6 @@ public interface InstrumentationContext { * @param result the result of the step (which may be null) * @param t this exception will be non null if an exception was thrown during the step */ - void onCompleted(T result, Throwable t); + void onCompleted(@Nullable T result, @Nullable Throwable t); } diff --git a/src/main/java/graphql/execution/instrumentation/InstrumentationState.java b/src/main/java/graphql/execution/instrumentation/InstrumentationState.java index c552dc0692..258c865474 100644 --- a/src/main/java/graphql/execution/instrumentation/InstrumentationState.java +++ b/src/main/java/graphql/execution/instrumentation/InstrumentationState.java @@ -1,10 +1,27 @@ package graphql.execution.instrumentation; +import graphql.PublicSpi; +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; + /** * An {@link Instrumentation} implementation can create this as a stateful object that is then passed * to each instrumentation method, allowing state to be passed down with the request execution * - * @see Instrumentation#createState(graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters) + * @see Instrumentation#createStateAsync(InstrumentationCreateStateParameters) */ +@PublicSpi public interface InstrumentationState { + + /** + * This helper method allows you to cast from {@link InstrumentationState} to a custom classes more easily. + * + * @param rawState the raw InstrumentationState + * @param for two + * + * @return a cast custom InstrumentationState + */ + static T ofState(InstrumentationState rawState) { + //noinspection unchecked + return (T) rawState; + } } diff --git a/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java b/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java new file mode 100644 index 0000000000..8d56230825 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java @@ -0,0 +1,128 @@ +package graphql.execution.instrumentation; + +import graphql.ExecutionResult; +import graphql.PublicApi; +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.instrumentation.parameters.InstrumentationReactiveResultsParameters; +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; +import graphql.language.Document; +import graphql.validation.ValidationError; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.function.BiConsumer; + +/** + * This version of {@link ChainedInstrumentation} will call a list of {@link Instrumentation}s + * but it will never back on the returned {@link InstrumentationContext} objects, hence it is only suitable to + * certain use cases. + * + * Only use this class if you are optimising for memory usage as scale. In most cases the {@link ChainedInstrumentation} + * will do the job required with all the instrumentation features used however some users require the fastest performance and lowest memory + * usage at scale and this class can be used. + * + * At scale, the fact that the graphql engine holds the {@link InstrumentationContext} objects in memory for a (relatively) long time + * (the length of the request or the length of a large field fetch) means that memory pressure can grow + * and objects move into longer tenure GC pools. Holding these contexts is also not necessary if the instrumentation never needs to know when a + * certain execution step finishes. + * + * The {@link InstrumentationContext} is used ot know when an execution step has completed, so instrumentations that do + * timings say need to use this callback mechanism. Putting such an instrumentation into {@link NoContextChainedInstrumentation} would + * be a mistake because no callback will occur. Therefore, use of this class is reserved for very specific us cases. You are fore-warned. + * + * This class never holds onto the returned {@link InstrumentationContext} objects and always returns null + * as itself. + */ +@PublicApi +public class NoContextChainedInstrumentation extends ChainedInstrumentation { + + public NoContextChainedInstrumentation(List instrumentations) { + super(instrumentations); + } + + public NoContextChainedInstrumentation(Instrumentation... instrumentations) { + super(instrumentations); + } + + private T runAll(InstrumentationState state, BiConsumer stateConsumer) { + chainedConsume(state, stateConsumer); + return null; + } + + @Override + public InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecution(parameters, specificState)); + } + + @Override + public InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginParse(parameters, specificState)); + } + + @Override + public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginValidation(parameters, specificState)); + } + + @Override + public InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecuteOperation(parameters, specificState)); + } + + @Override + public @Nullable InstrumentationContext beginReactiveResults(InstrumentationReactiveResultsParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginReactiveResults(parameters, specificState)); + } + + @Override + public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecutionStrategy(parameters, specificState)); + } + + @Override + public @Nullable ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecuteObject(parameters, specificState)); + } + + @Override + public InstrumentationContext beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginDeferredField(parameters, specificState)); + } + + @Override + public InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginSubscribedFieldEvent(parameters, specificState)); + } + + @Override + public @Nullable InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldExecution(parameters, specificState)); + } + + @Override + public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldFetch(parameters, specificState)); + } + + @Override + public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldFetching(parameters, specificState)); + } + + @Override + public @Nullable InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldCompletion(parameters, specificState)); + } + + @Override + public @Nullable InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldListCompletion(parameters, specificState)); + } + + // relies on the other methods from ChainedInstrumentation which this does not change +} diff --git a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentation.java b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentation.java index 398f9d758a..d2df536e75 100644 --- a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentation.java @@ -1,29 +1,17 @@ package graphql.execution.instrumentation; -import graphql.ExecutionResult; import graphql.PublicApi; -import graphql.execution.ExecutionContext; -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; -import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; -import graphql.language.Document; -import graphql.schema.DataFetcher; -import graphql.schema.GraphQLSchema; -import graphql.validation.ValidationError; - -import java.util.List; -import java.util.concurrent.CompletableFuture; /** * An implementation of {@link graphql.execution.instrumentation.Instrumentation} that does nothing. It can be used - * as a base for derived classes where you only implement the methods you want to + * as a base for derived classes where you only implement the methods you want to. With all the methods in {@link Instrumentation} + * now defaulted (post Java 6) this class is really not needed anymore but has been retained for backwards compatibility + * reasons. + * + * @deprecated use {@link SimplePerformantInstrumentation} instead as a base class. */ @PublicApi +@Deprecated(since = "2022-10-05") public class SimpleInstrumentation implements Instrumentation { /** @@ -31,103 +19,4 @@ public class SimpleInstrumentation implements Instrumentation { */ public static final SimpleInstrumentation INSTANCE = new SimpleInstrumentation(); - public SimpleInstrumentation() { - } - - @Override - public InstrumentationState createState() { - return null; - } - - @Override - public InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { - return new ExecutionStrategyInstrumentationContext() { - @Override - public void onDispatched(CompletableFuture result) { - - } - - @Override - public void onCompleted(ExecutionResult result, Throwable t) { - - } - }; - } - - @Override - public DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) { - return new DeferredFieldInstrumentationContext() { - @Override - public void onDispatched(CompletableFuture result) { - - } - - @Override - public void onCompleted(ExecutionResult result, Throwable t) { - - } - }; - } - - @Override - public InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public InstrumentationContext beginField(InstrumentationFieldParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - - @Override - public InstrumentationContext beginFieldComplete(InstrumentationFieldCompleteParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public InstrumentationContext beginFieldListComplete(InstrumentationFieldCompleteParameters parameters) { - return new SimpleInstrumentationContext<>(); - } - - @Override - public GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters) { - return schema; - } - - @Override - public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters) { - return executionContext; - } - - @Override - public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { - return dataFetcher; - } - - @Override - public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { - return CompletableFuture.completedFuture(executionResult); - } - } diff --git a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java index 7ded4f674b..0abfc744d6 100644 --- a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java @@ -1,10 +1,9 @@ package graphql.execution.instrumentation; import graphql.PublicApi; +import org.jspecify.annotations.NonNull; -import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; -import java.util.function.Consumer; /** * A simple implementation of {@link InstrumentationContext} @@ -12,6 +11,16 @@ @PublicApi public class SimpleInstrumentationContext implements InstrumentationContext { + private static final InstrumentationContext NO_OP = new InstrumentationContext() { + @Override + public void onDispatched() { + } + + @Override + public void onCompleted(Object result, Throwable t) { + } + }; + /** * A context that does nothing * @@ -19,26 +28,40 @@ public class SimpleInstrumentationContext implements InstrumentationContext InstrumentationContext noOp() { - return new SimpleInstrumentationContext<>(); + return (InstrumentationContext) NO_OP; + } + + /** + * This creates a no-op {@link InstrumentationContext} if the one pass in is null + * + * @param nullableContext a {@link InstrumentationContext} that can be null + * @param for two + * + * @return a non null {@link InstrumentationContext} that maybe a no-op + */ + @NonNull + public static InstrumentationContext nonNullCtx(InstrumentationContext nullableContext) { + return nullableContext == null ? noOp() : nullableContext; } private final BiConsumer codeToRunOnComplete; - private final Consumer> codeToRunOnDispatch; + private final Runnable codeToRunOnDispatch; public SimpleInstrumentationContext() { this(null, null); } - private SimpleInstrumentationContext(Consumer> codeToRunOnDispatch, BiConsumer codeToRunOnComplete) { + private SimpleInstrumentationContext(Runnable codeToRunOnDispatch, BiConsumer codeToRunOnComplete) { this.codeToRunOnComplete = codeToRunOnComplete; this.codeToRunOnDispatch = codeToRunOnDispatch; } @Override - public void onDispatched(CompletableFuture result) { + public void onDispatched() { if (codeToRunOnDispatch != null) { - codeToRunOnDispatch.accept(result); + codeToRunOnDispatch.run(); } } @@ -58,7 +81,7 @@ public void onCompleted(T result, Throwable t) { * * @return an instrumentation context */ - public static SimpleInstrumentationContext whenDispatched(Consumer> codeToRun) { + public static SimpleInstrumentationContext whenDispatched(Runnable codeToRun) { return new SimpleInstrumentationContext<>(codeToRun, null); } @@ -74,4 +97,12 @@ public static SimpleInstrumentationContext whenDispatched(Consumer SimpleInstrumentationContext whenCompleted(BiConsumer codeToRun) { return new SimpleInstrumentationContext<>(null, codeToRun); } + + public static BiConsumer completeInstrumentationCtxCF( + InstrumentationContext instrumentationContext) { + return (result, throwable) -> { + nonNullCtx(instrumentationContext).onCompleted(result, throwable); + }; + } + } diff --git a/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java b/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java new file mode 100644 index 0000000000..26f30714fa --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java @@ -0,0 +1,143 @@ +package graphql.execution.instrumentation; + +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.PublicApi; +import graphql.execution.ExecutionContext; +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; +import graphql.language.Document; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLSchema; +import graphql.validation.ValidationError; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp; + +/** + * An implementation of {@link Instrumentation} that does nothing. It can be used + * as a base for derived classes where you only implement the methods you want to. The reason this + * class is designated as more performant is that it does not delegate back to the deprecated methods + * and allocate a new state object per call. + *

    + * This behavior was left in place for backwards compatibility reasons inside {@link Instrumentation} + * and {@link SimpleInstrumentation} but has not been done in this class since no existing classes + * could have derived from it. If you want more performant behavior on methods you don't implement + * then this is the base class to use, since it will not delegate back to old methods + * and cause a new state to be allocated. + */ +@SuppressWarnings("deprecation") +@PublicApi +public class SimplePerformantInstrumentation implements Instrumentation { + + /** + * A singleton instance of a {@link Instrumentation} that does nothing + */ + public static final SimplePerformantInstrumentation INSTANCE = new SimplePerformantInstrumentation(); + + @Override + public @Nullable CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + InstrumentationState state = createState(parameters); + return state == null ? null : CompletableFuture.completedFuture(state); + } + + @Override + public @Nullable InstrumentationState createState(InstrumentationCreateStateParameters parameters) { + return null; + } + + @Override + public @Nullable InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return ExecutionStrategyInstrumentationContext.NOOP; + } + + @Override + public @Nullable ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return ExecuteObjectInstrumentationContext.NOOP; + } + + @Override + public @Nullable InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @Nullable InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + return noOp(); + } + + @Override + public @NonNull ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return executionInput; + } + + @Override + public @NonNull DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return documentAndVariables; + } + + @Override + public @NonNull GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return schema; + } + + @Override + public @NonNull ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return executionContext; + } + + @Override + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return dataFetcher; + } + + @Override + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return CompletableFuture.completedFuture(executionResult); + } +} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentation.java b/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentation.java deleted file mode 100644 index 9395b3f42c..0000000000 --- a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentation.java +++ /dev/null @@ -1,214 +0,0 @@ -package graphql.execution.instrumentation.dataloader; - -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.execution.AsyncExecutionStrategy; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionStrategy; -import graphql.execution.instrumentation.DeferredFieldInstrumentationContext; -import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext; -import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.SimpleInstrumentation; -import graphql.execution.instrumentation.SimpleInstrumentationContext; -import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import graphql.language.OperationDefinition; -import graphql.schema.DataFetcher; -import org.dataloader.DataLoader; -import org.dataloader.DataLoaderRegistry; -import org.dataloader.stats.Statistics; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.concurrent.CompletableFuture; - -/** - * This graphql {@link graphql.execution.instrumentation.Instrumentation} will dispatch - * all the contained {@link org.dataloader.DataLoader}s when each level of the graphql - * query is executed. - *

    - * This allows you to use {@link org.dataloader.DataLoader}s in your {@link graphql.schema.DataFetcher}s - * to optimal loading of data. - *

    - * A DataLoaderDispatcherInstrumentation will be automatically added to the {@link graphql.GraphQL} - * instrumentation list if one is not present. - * - * @see org.dataloader.DataLoader - * @see org.dataloader.DataLoaderRegistry - */ -public class DataLoaderDispatcherInstrumentation extends SimpleInstrumentation { - - private static final Logger log = LoggerFactory.getLogger(DataLoaderDispatcherInstrumentation.class); - - private final DataLoaderDispatcherInstrumentationOptions options; - - /** - * Creates a DataLoaderDispatcherInstrumentation with the default options - */ - public DataLoaderDispatcherInstrumentation() { - this(DataLoaderDispatcherInstrumentationOptions.newOptions()); - } - - /** - * Creates a DataLoaderDispatcherInstrumentation with the specified options - * - * @param options the options to control the behaviour - */ - public DataLoaderDispatcherInstrumentation(DataLoaderDispatcherInstrumentationOptions options) { - this.options = options; - } - - - @Override - public InstrumentationState createState(InstrumentationCreateStateParameters parameters) { - return new DataLoaderDispatcherInstrumentationState(log, parameters.getExecutionInput().getDataLoaderRegistry()); - } - - @Override - public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); - if (state.isAggressivelyBatching()) { - return dataFetcher; - } - // - // currently only AsyncExecutionStrategy with DataLoader and hence this allows us to "dispatch" - // on every object if its not using aggressive batching for other execution strategies - // which allows them to work if used. - return (DataFetcher) environment -> { - Object obj = dataFetcher.get(environment); - immediatelyDispatch(state); - return obj; - }; - } - - private void immediatelyDispatch(DataLoaderDispatcherInstrumentationState state) { - state.getApproach().dispatch(); - } - - @Override - public InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); - // - // during #instrumentExecutionInput they could have enhanced the data loader registry - // so we grab it now just before the query operation gets started - // - DataLoaderRegistry finalRegistry = parameters.getExecutionContext().getDataLoaderRegistry(); - state.setDataLoaderRegistry(finalRegistry); - if (!isDataLoaderCompatibleExecution(parameters.getExecutionContext())) { - state.setAggressivelyBatching(false); - } - return new SimpleInstrumentationContext<>(); - } - - private boolean isDataLoaderCompatibleExecution(ExecutionContext executionContext) { - // - // currently we only support Query operations and ONLY with AsyncExecutionStrategy as the query ES - // This may change in the future but this is the fix for now - // - if (executionContext.getOperationDefinition().getOperation() == OperationDefinition.Operation.QUERY) { - ExecutionStrategy queryStrategy = executionContext.getQueryStrategy(); - if (queryStrategy instanceof AsyncExecutionStrategy) { - return true; - } - } - return false; - } - - @Override - public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); - // - // if there are no data loaders, there is nothing to do - // - if (state.hasNoDataLoaders()) { - return new ExecutionStrategyInstrumentationContext() { - @Override - public void onDispatched(CompletableFuture result) { - } - - @Override - public void onCompleted(ExecutionResult result, Throwable t) { - } - }; - - } - return state.getApproach().beginExecutionStrategy(parameters.withNewState(state.getState())); - } - - @Override - public DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); - // - // if there are no data loaders, there is nothing to do - // - if (state.hasNoDataLoaders()) { - return new DeferredFieldInstrumentationContext() { - @Override - public void onDispatched(CompletableFuture result) { - } - - @Override - public void onCompleted(ExecutionResult result, Throwable t) { - } - }; - - } - return state.getApproach().beginDeferredField(parameters.withNewState(state.getState())); - } - - @Override - public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); - // - // if there are no data loaders, there is nothing to do - // - if (state.hasNoDataLoaders()) { - return new SimpleInstrumentationContext<>(); - } - return state.getApproach().beginFieldFetch(parameters.withNewState(state.getState())); - } - - @Override - public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { - if (!options.isIncludeStatistics()) { - return CompletableFuture.completedFuture(executionResult); - } - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); - Map currentExt = executionResult.getExtensions(); - Map statsMap = new LinkedHashMap<>(); - statsMap.putAll(currentExt == null ? Collections.emptyMap() : currentExt); - Map dataLoaderStats = buildStatsMap(state); - statsMap.put("dataloader", dataLoaderStats); - - log.debug("Data loader stats : {}", dataLoaderStats); - - return CompletableFuture.completedFuture(new ExecutionResultImpl(executionResult.getData(), executionResult.getErrors(), statsMap)); - } - - private Map buildStatsMap(DataLoaderDispatcherInstrumentationState state) { - DataLoaderRegistry dataLoaderRegistry = state.getDataLoaderRegistry(); - Statistics allStats = dataLoaderRegistry.getStatistics(); - Map statsMap = new LinkedHashMap<>(); - statsMap.put("overall-statistics", allStats.toMap()); - - Map individualStatsMap = new LinkedHashMap<>(); - - for (String dlKey : dataLoaderRegistry.getKeys()) { - DataLoader dl = dataLoaderRegistry.getDataLoader(dlKey); - Statistics statistics = dl.getStatistics(); - individualStatsMap.put(dlKey, statistics.toMap()); - } - - statsMap.put("individual-statistics", individualStatsMap); - - return statsMap; - } -} \ No newline at end of file diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationOptions.java b/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationOptions.java deleted file mode 100644 index 91d1805f2d..0000000000 --- a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationOptions.java +++ /dev/null @@ -1,35 +0,0 @@ -package graphql.execution.instrumentation.dataloader; - -/** - * The options that control the operation of {@link graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation} - */ -public class DataLoaderDispatcherInstrumentationOptions { - - private final boolean includeStatistics; - - private DataLoaderDispatcherInstrumentationOptions(boolean includeStatistics) { - this.includeStatistics = includeStatistics; - } - - public static DataLoaderDispatcherInstrumentationOptions newOptions() { - return new DataLoaderDispatcherInstrumentationOptions(false); - } - - /** - * This will toggle the ability to include java-dataloader statistics into the extensions - * output of your query - * - * @param flag the switch to follow - * - * @return a new options object - */ - public DataLoaderDispatcherInstrumentationOptions includeStatistics(boolean flag) { - return new DataLoaderDispatcherInstrumentationOptions(flag); - } - - - public boolean isIncludeStatistics() { - return includeStatistics; - } - -} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationState.java b/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationState.java deleted file mode 100644 index 06abe33e62..0000000000 --- a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationState.java +++ /dev/null @@ -1,74 +0,0 @@ -package graphql.execution.instrumentation.dataloader; - -import graphql.Assert; -import graphql.Internal; -import graphql.execution.instrumentation.InstrumentationState; -import org.dataloader.DataLoader; -import org.dataloader.DataLoaderRegistry; -import org.slf4j.Logger; - -import java.util.concurrent.atomic.AtomicReference; - -/** - * A base class that keeps track of whether aggressive batching can be used - */ -public class DataLoaderDispatcherInstrumentationState implements InstrumentationState { - - @Internal - public static final DataLoaderRegistry EMPTY_DATALOADER_REGISTRY = new DataLoaderRegistry() { - @Override - public DataLoaderRegistry register(String key, DataLoader dataLoader) { - return Assert.assertShouldNeverHappen("You MUST set in your own DataLoaderRegistry to use data loader"); - } - }; - - private final FieldLevelTrackingApproach approach; - private final AtomicReference dataLoaderRegistry; - private final InstrumentationState state; - private volatile boolean aggressivelyBatching = true; - private volatile boolean hasNoDataLoaders; - - public DataLoaderDispatcherInstrumentationState(Logger log, DataLoaderRegistry dataLoaderRegistry) { - this.dataLoaderRegistry = new AtomicReference<>(dataLoaderRegistry); - this.approach = new FieldLevelTrackingApproach(log, this::getDataLoaderRegistry); - this.state = approach.createState(); - hasNoDataLoaders = checkForNoDataLoader(dataLoaderRegistry); - } - - private boolean checkForNoDataLoader(DataLoaderRegistry dataLoaderRegistry) { - // - // if they have never set a dataloader into the execution input then we can optimize - // away the tracking code - // - return dataLoaderRegistry == EMPTY_DATALOADER_REGISTRY; - } - - boolean isAggressivelyBatching() { - return aggressivelyBatching; - } - - void setAggressivelyBatching(boolean aggressivelyBatching) { - this.aggressivelyBatching = aggressivelyBatching; - } - - FieldLevelTrackingApproach getApproach() { - return approach; - } - - DataLoaderRegistry getDataLoaderRegistry() { - return dataLoaderRegistry.get(); - } - - void setDataLoaderRegistry(DataLoaderRegistry newRegistry) { - dataLoaderRegistry.set(newRegistry); - hasNoDataLoaders = checkForNoDataLoader(newRegistry); - } - - boolean hasNoDataLoaders() { - return hasNoDataLoaders; - } - - InstrumentationState getState() { - return state; - } -} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatchingContextKeys.java b/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatchingContextKeys.java new file mode 100644 index 0000000000..c41196e050 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatchingContextKeys.java @@ -0,0 +1,54 @@ +package graphql.execution.instrumentation.dataloader; + + +import graphql.GraphQLContext; +import graphql.Internal; +import org.jspecify.annotations.NullMarked; + +/** + * GraphQLContext keys related to DataLoader dispatching. + */ +@Internal +@NullMarked +public final class DataLoaderDispatchingContextKeys { + private DataLoaderDispatchingContextKeys() { + } + + /** + * Enables the ability to chain DataLoader dispatching. + *

    + * Because this requires that all DataLoaders are accessed via DataFetchingEnvironment.getLoader() + * this is not completely backwards compatible and therefore disabled by default. + *

    + * Expects a boolean value. + */ + public static final String ENABLE_DATA_LOADER_CHAINING = "__GJ_enable_data_loader_chaining"; + + + /** + * Enabled a different dispatching strategy that mimics the JS event loop based one: + * DataLoader will be dispatched as soon as there is no data fetcher or batch loader currently running. + * + */ + public static final String ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING = "__GJ_enable_data_loader_exhausted_dispatching"; + + /** + * Enables the ability that chained DataLoaders are dispatched automatically. + * + * @param graphQLContext + */ + public static void setEnableDataLoaderChaining(GraphQLContext graphQLContext, boolean enabled) { + graphQLContext.put(ENABLE_DATA_LOADER_CHAINING, enabled); + } + + /** + * Enables the ability that chained DataLoaders are dispatched automatically. + * + * @param graphQLContext + */ + public static void setEnableDataLoaderExhaustedDispatching(GraphQLContext graphQLContext, boolean enabled) { + graphQLContext.put(ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, enabled); + } + + +} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/DelayedDataLoaderDispatcherExecutorFactory.java b/src/main/java/graphql/execution/instrumentation/dataloader/DelayedDataLoaderDispatcherExecutorFactory.java new file mode 100644 index 0000000000..29cb86076f --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/dataloader/DelayedDataLoaderDispatcherExecutorFactory.java @@ -0,0 +1,29 @@ +package graphql.execution.instrumentation.dataloader; + +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import graphql.execution.ExecutionId; +import org.jspecify.annotations.NullMarked; + +import java.util.concurrent.ScheduledExecutorService; + +/** + * See {@link DataLoaderDispatchingContextKeys} for how to set it. + */ +@ExperimentalApi +@NullMarked +@FunctionalInterface +public interface DelayedDataLoaderDispatcherExecutorFactory { + + /** + * Called once per execution to create the {@link ScheduledExecutorService} for the delayed DataLoader dispatching. + * + * Will only called if needed, i.e. if there are delayed DataLoaders. + * + * @param executionId + * @param graphQLContext + * + * @return + */ + ScheduledExecutorService createExecutor(ExecutionId executionId, GraphQLContext graphQLContext); +} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/EmptyDataLoaderRegistryInstance.java b/src/main/java/graphql/execution/instrumentation/dataloader/EmptyDataLoaderRegistryInstance.java new file mode 100644 index 0000000000..8684ce6c38 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/dataloader/EmptyDataLoaderRegistryInstance.java @@ -0,0 +1,30 @@ +package graphql.execution.instrumentation.dataloader; + +import graphql.Assert; +import org.dataloader.DataLoader; +import org.dataloader.DataLoaderRegistry; + +import java.util.function.Function; + +public class EmptyDataLoaderRegistryInstance { + public static final DataLoaderRegistry EMPTY_DATALOADER_REGISTRY = new DataLoaderRegistry() { + // + private static final String ERROR_MESSAGE = "You MUST set in your own DataLoaderRegistry to use data loader"; + + @Override + public DataLoaderRegistry register(String key, DataLoader dataLoader) { + return Assert.assertShouldNeverHappen(ERROR_MESSAGE); + } + + @Override + public DataLoader computeIfAbsent(final String key, + final Function> mappingFunction) { + return Assert.assertShouldNeverHappen(ERROR_MESSAGE); + } + + @Override + public DataLoaderRegistry unregister(String key) { + return Assert.assertShouldNeverHappen(ERROR_MESSAGE); + } + }; +} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/ExhaustedDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/ExhaustedDataLoaderDispatchStrategy.java new file mode 100644 index 0000000000..f237622ecb --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/dataloader/ExhaustedDataLoaderDispatchStrategy.java @@ -0,0 +1,277 @@ +package graphql.execution.instrumentation.dataloader; + +import graphql.Assert; +import graphql.Internal; +import graphql.Profiler; +import graphql.execution.DataLoaderDispatchStrategy; +import graphql.execution.ExecutionContext; +import graphql.execution.ExecutionStrategyParameters; +import graphql.execution.incremental.AlternativeCallContext; +import org.dataloader.DataLoader; +import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +@Internal +@NullMarked +public class ExhaustedDataLoaderDispatchStrategy implements DataLoaderDispatchStrategy { + + private final CallStack initialCallStack; + private final ExecutionContext executionContext; + + private final Profiler profiler; + + private final Map alternativeCallContextMap = new ConcurrentHashMap<>(); + + + private static class CallStack { + + // 30 bits for objectRunningCount + // 1 bit for dataLoaderToDispatch + // 1 bit for currentlyDispatching + + // Bit positions (from right to left) + static final int currentlyDispatchingShift = 0; + static final int dataLoaderToDispatchShift = 1; + static final int objectRunningCountShift = 2; + + // mask + static final int booleanMask = 1; + static final int objectRunningCountMask = (1 << 30) - 1; + + public static int getObjectRunningCount(int state) { + return (state >> objectRunningCountShift) & objectRunningCountMask; + } + + public static int setObjectRunningCount(int state, int objectRunningCount) { + return (state & ~(objectRunningCountMask << objectRunningCountShift)) | + (objectRunningCount << objectRunningCountShift); + } + + public static int setDataLoaderToDispatch(int state, boolean dataLoaderToDispatch) { + return (state & ~(booleanMask << dataLoaderToDispatchShift)) | + ((dataLoaderToDispatch ? 1 : 0) << dataLoaderToDispatchShift); + } + + public static int setCurrentlyDispatching(int state, boolean currentlyDispatching) { + return (state & ~(booleanMask << currentlyDispatchingShift)) | + ((currentlyDispatching ? 1 : 0) << currentlyDispatchingShift); + } + + + public static boolean getDataLoaderToDispatch(int state) { + return ((state >> dataLoaderToDispatchShift) & booleanMask) != 0; + } + + public static boolean getCurrentlyDispatching(int state) { + return ((state >> currentlyDispatchingShift) & booleanMask) != 0; + } + + + public int incrementObjectRunningCount() { + while (true) { + int oldState = getState(); + int objectRunningCount = getObjectRunningCount(oldState); + int newState = setObjectRunningCount(oldState, objectRunningCount + 1); + if (tryUpdateState(oldState, newState)) { + return newState; + } + } + } + + public int decrementObjectRunningCount() { + while (true) { + int oldState = getState(); + int objectRunningCount = getObjectRunningCount(oldState); + int newState = setObjectRunningCount(oldState, objectRunningCount - 1); + if (tryUpdateState(oldState, newState)) { + return newState; + } + } + } + + // for debugging + public static String printState(int state) { + return "objectRunningCount: " + getObjectRunningCount(state) + + ",dataLoaderToDispatch: " + getDataLoaderToDispatch(state) + + ",currentlyDispatching: " + getCurrentlyDispatching(state); + } + + private final AtomicInteger state = new AtomicInteger(); + + public int getState() { + return state.get(); + } + + public boolean tryUpdateState(int oldState, int newState) { + return state.compareAndSet(oldState, newState); + } + + private final AtomicInteger deferredFragmentRootFieldsCompleted = new AtomicInteger(); + + public CallStack() { + } + + + public void clear() { + deferredFragmentRootFieldsCompleted.set(0); + state.set(0); + } + } + + public ExhaustedDataLoaderDispatchStrategy(ExecutionContext executionContext) { + this.initialCallStack = new CallStack(); + this.executionContext = executionContext; + + this.profiler = executionContext.getProfiler(); + } + + + @Override + public void executionStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters, int fieldCount) { + Assert.assertTrue(parameters.getExecutionStepInfo().getPath().isRootPath()); + initialCallStack.incrementObjectRunningCount(); + } + + @Override + public void finishedFetching(ExecutionContext executionContext, ExecutionStrategyParameters newParameters) { + CallStack callStack = getCallStack(newParameters); + decrementObjectRunningAndMaybeDispatch(callStack); + } + + @Override + public void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + callStack.clear(); + callStack.incrementObjectRunningCount(); + } + + @Override + public void newSubscriptionExecution(AlternativeCallContext alternativeCallContext) { + CallStack callStack = new CallStack(); + alternativeCallContextMap.put(alternativeCallContext, callStack); + callStack.incrementObjectRunningCount(); + } + + @Override + public void subscriptionEventCompletionDone(AlternativeCallContext alternativeCallContext) { + CallStack callStack = getCallStack(alternativeCallContext); + decrementObjectRunningAndMaybeDispatch(callStack); + } + + @Override + public void deferFieldFetched(ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + int deferredFragmentRootFieldsCompleted = callStack.deferredFragmentRootFieldsCompleted.incrementAndGet(); + Assert.assertNotNull(parameters.getDeferredCallContext()); + if (deferredFragmentRootFieldsCompleted == parameters.getDeferredCallContext().getFields()) { + decrementObjectRunningAndMaybeDispatch(callStack); + } + } + + @Override + public void startComplete(ExecutionStrategyParameters parameters) { + getCallStack(parameters).incrementObjectRunningCount(); + } + + @Override + public void stopComplete(ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + decrementObjectRunningAndMaybeDispatch(callStack); + } + + private CallStack getCallStack(ExecutionStrategyParameters parameters) { + return getCallStack(parameters.getDeferredCallContext()); + } + + private CallStack getCallStack(@Nullable AlternativeCallContext alternativeCallContext) { + if (alternativeCallContext == null) { + return this.initialCallStack; + } else { + return alternativeCallContextMap.computeIfAbsent(alternativeCallContext, k -> { + /* + This is only for handling deferred cases. Subscription cases will also get a new callStack, but + it is explicitly created in `newSubscriptionExecution`. + The reason we are doing this lazily is, because we don't have explicit startDeferred callback. + */ + CallStack callStack = new CallStack(); + callStack.incrementObjectRunningCount(); + return callStack; + }); + } + } + + + private void decrementObjectRunningAndMaybeDispatch(CallStack callStack) { + int newState = callStack.decrementObjectRunningCount(); + if (CallStack.getObjectRunningCount(newState) == 0 && CallStack.getDataLoaderToDispatch(newState) && !CallStack.getCurrentlyDispatching(newState)) { + dispatchImpl(callStack); + } + } + + private void newDataLoaderInvocationMaybeDispatch(CallStack callStack) { + int currentState; + while (true) { + int oldState = callStack.getState(); + if (CallStack.getDataLoaderToDispatch(oldState)) { + return; + } + int newState = CallStack.setDataLoaderToDispatch(oldState, true); + if (callStack.tryUpdateState(oldState, newState)) { + currentState = newState; + break; + } + } + + if (CallStack.getObjectRunningCount(currentState) == 0 && !CallStack.getCurrentlyDispatching(currentState)) { + dispatchImpl(callStack); + } + } + + + private void dispatchImpl(CallStack callStack) { + while (true) { + int oldState = callStack.getState(); + if (!CallStack.getDataLoaderToDispatch(oldState)) { + int newState = CallStack.setCurrentlyDispatching(oldState, false); + if (callStack.tryUpdateState(oldState, newState)) { + return; + } + } + int newState = CallStack.setCurrentlyDispatching(oldState, true); + newState = CallStack.setDataLoaderToDispatch(newState, false); + if (callStack.tryUpdateState(oldState, newState)) { + break; + } + } + + DataLoaderRegistry dataLoaderRegistry = executionContext.getDataLoaderRegistry(); + List> dataLoaders = dataLoaderRegistry.getDataLoaders(); + List>> allDispatchedCFs = new ArrayList<>(); + for (DataLoader dataLoader : dataLoaders) { + CompletableFuture> dispatch = dataLoader.dispatch(); + allDispatchedCFs.add(dispatch); + } + CompletableFuture.allOf(allDispatchedCFs.toArray(new CompletableFuture[0])) + .whenComplete((unused, throwable) -> { + dispatchImpl(callStack); + }); + + } + + + public void newDataLoaderInvocation(@Nullable AlternativeCallContext alternativeCallContext) { + CallStack callStack = getCallStack(alternativeCallContext); + newDataLoaderInvocationMaybeDispatch(callStack); + } + + +} + diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/FieldLevelTrackingApproach.java b/src/main/java/graphql/execution/instrumentation/dataloader/FieldLevelTrackingApproach.java deleted file mode 100644 index 8912a20d1c..0000000000 --- a/src/main/java/graphql/execution/instrumentation/dataloader/FieldLevelTrackingApproach.java +++ /dev/null @@ -1,298 +0,0 @@ -package graphql.execution.instrumentation.dataloader; - -import graphql.Assert; -import graphql.ExecutionResult; -import graphql.Internal; -import graphql.execution.ExecutionPath; -import graphql.execution.FieldValueInfo; -import graphql.execution.MergedField; -import graphql.execution.instrumentation.DeferredFieldInstrumentationContext; -import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext; -import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters; -import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import org.dataloader.DataLoaderRegistry; -import org.slf4j.Logger; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.function.Supplier; - -/** - * This approach uses field level tracking to achieve its aims of making the data loader more efficient - */ -@Internal -public class FieldLevelTrackingApproach { - private final Supplier dataLoaderRegistrySupplier; - private final Logger log; - - private static class CallStack implements InstrumentationState { - - private final Map expectedFetchCountPerLevel = new LinkedHashMap<>(); - private final Map fetchCountPerLevel = new LinkedHashMap<>(); - private final Map expectedStrategyCallsPerLevel = new LinkedHashMap<>(); - private final Map happenedStrategyCallsPerLevel = new LinkedHashMap<>(); - private final Map happenedOnFieldValueCallsPerLevel = new LinkedHashMap<>(); - - - private final Set dispatchedLevels = new LinkedHashSet<>(); - - CallStack() { - expectedStrategyCallsPerLevel.put(1, 1); - } - - - int increaseExpectedFetchCount(int level, int count) { - expectedFetchCountPerLevel.put(level, expectedFetchCountPerLevel.getOrDefault(level, 0) + count); - return expectedFetchCountPerLevel.get(level); - } - - void increaseFetchCount(int level) { - fetchCountPerLevel.put(level, fetchCountPerLevel.getOrDefault(level, 0) + 1); - } - - void increaseExpectedStrategyCalls(int level, int count) { - expectedStrategyCallsPerLevel.put(level, expectedStrategyCallsPerLevel.getOrDefault(level, 0) + count); - } - - void increaseHappenedStrategyCalls(int level) { - happenedStrategyCallsPerLevel.put(level, happenedStrategyCallsPerLevel.getOrDefault(level, 0) + 1); - } - - void increaseHappenedOnFieldValueCalls(int level) { - happenedOnFieldValueCallsPerLevel.put(level, happenedOnFieldValueCallsPerLevel.getOrDefault(level, 0) + 1); - } - - boolean allStrategyCallsHappened(int level) { - return Objects.equals(happenedStrategyCallsPerLevel.get(level), expectedStrategyCallsPerLevel.get(level)); - } - - boolean allOnFieldCallsHappened(int level) { - return Objects.equals(happenedOnFieldValueCallsPerLevel.get(level), expectedStrategyCallsPerLevel.get(level)); - } - - boolean allFetchesHappened(int level) { - return Objects.equals(fetchCountPerLevel.get(level), expectedFetchCountPerLevel.get(level)); - } - - @Override - public String toString() { - return "CallStack{" + - "expectedFetchCountPerLevel=" + expectedFetchCountPerLevel + - ", fetchCountPerLevel=" + fetchCountPerLevel + - ", expectedStrategyCallsPerLevel=" + expectedStrategyCallsPerLevel + - ", happenedStrategyCallsPerLevel=" + happenedStrategyCallsPerLevel + - ", happenedOnFieldValueCallsPerLevel=" + happenedOnFieldValueCallsPerLevel + - ", dispatchedLevels" + dispatchedLevels + - '}'; - } - - public boolean dispatchIfNotDispatchedBefore(int level) { - if (dispatchedLevels.contains(level)) { - Assert.assertShouldNeverHappen("level " + level + " already dispatched"); - return false; - } - dispatchedLevels.add(level); - return true; - } - - public void clearAndMarkCurrentLevelAsReady(int level) { - expectedFetchCountPerLevel.clear(); - fetchCountPerLevel.clear(); - expectedStrategyCallsPerLevel.clear(); - happenedStrategyCallsPerLevel.clear(); - happenedOnFieldValueCallsPerLevel.clear(); - dispatchedLevels.clear(); - - // make sure the level is ready - expectedFetchCountPerLevel.put(level, 1); - expectedStrategyCallsPerLevel.put(level, 1); - happenedStrategyCallsPerLevel.put(level, 1); - } - } - - public FieldLevelTrackingApproach(Logger log, Supplier dataLoaderRegistrySupplier) { - this.dataLoaderRegistrySupplier = dataLoaderRegistrySupplier; - this.log = log; - } - - public InstrumentationState createState() { - return new CallStack(); - } - - ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { - CallStack callStack = parameters.getInstrumentationState(); - ExecutionPath path = parameters.getExecutionStrategyParameters().getPath(); - int parentLevel = path.getLevel(); - int curLevel = parentLevel + 1; - int fieldCount = parameters.getExecutionStrategyParameters().getFields().size(); - synchronized (callStack) { - callStack.increaseExpectedFetchCount(curLevel, fieldCount); - callStack.increaseHappenedStrategyCalls(curLevel); - } - - return new ExecutionStrategyInstrumentationContext() { - @Override - public void onDispatched(CompletableFuture result) { - - } - - @Override - public void onCompleted(ExecutionResult result, Throwable t) { - - } - - @Override - public void onFieldValuesInfo(List fieldValueInfoList) { - boolean dispatchNeeded; - synchronized (callStack) { - dispatchNeeded = handleOnFieldValuesInfo(fieldValueInfoList, callStack, curLevel); - } - if (dispatchNeeded) { - dispatch(); - } - } - - @Override - public void onDeferredField(MergedField field) { - boolean dispatchNeeded; - // fake fetch count for this field - synchronized (callStack) { - callStack.increaseFetchCount(curLevel); - dispatchNeeded = dispatchIfNeeded(callStack, curLevel); - } - if (dispatchNeeded) { - dispatch(); - } - } - }; - } - - // - // thread safety : called with synchronised(callStack) - // - private boolean handleOnFieldValuesInfo(List fieldValueInfoList, CallStack callStack, int curLevel) { - callStack.increaseHappenedOnFieldValueCalls(curLevel); - int expectedStrategyCalls = 0; - for (FieldValueInfo fieldValueInfo : fieldValueInfoList) { - if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.OBJECT) { - expectedStrategyCalls++; - } else if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.LIST) { - expectedStrategyCalls += getCountForList(fieldValueInfo); - } - } - callStack.increaseExpectedStrategyCalls(curLevel + 1, expectedStrategyCalls); - return dispatchIfNeeded(callStack, curLevel + 1); - } - - private int getCountForList(FieldValueInfo fieldValueInfo) { - int result = 0; - for (FieldValueInfo cvi : fieldValueInfo.getFieldValueInfos()) { - if (cvi.getCompleteValueType() == FieldValueInfo.CompleteValueType.OBJECT) { - result++; - } else if (cvi.getCompleteValueType() == FieldValueInfo.CompleteValueType.LIST) { - result += getCountForList(cvi); - } - } - return result; - } - - DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) { - CallStack callStack = parameters.getInstrumentationState(); - int level = parameters.getExecutionStrategyParameters().getPath().getLevel(); - synchronized (callStack) { - callStack.clearAndMarkCurrentLevelAsReady(level); - } - - return new DeferredFieldInstrumentationContext() { - @Override - public void onDispatched(CompletableFuture result) { - - } - - @Override - public void onCompleted(ExecutionResult result, Throwable t) { - } - - @Override - public void onFieldValueInfo(FieldValueInfo fieldValueInfo) { - boolean dispatchNeeded; - synchronized (callStack) { - dispatchNeeded = handleOnFieldValuesInfo(Collections.singletonList(fieldValueInfo), callStack, level); - } - if (dispatchNeeded) { - dispatch(); - } - } - }; - } - - public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - CallStack callStack = parameters.getInstrumentationState(); - ExecutionPath path = parameters.getEnvironment().getExecutionStepInfo().getPath(); - int level = path.getLevel(); - return new InstrumentationContext() { - - @Override - public void onDispatched(CompletableFuture result) { - boolean dispatchNeeded; - synchronized (callStack) { - callStack.increaseFetchCount(level); - dispatchNeeded = dispatchIfNeeded(callStack, level); - } - if (dispatchNeeded) { - dispatch(); - } - - } - - @Override - public void onCompleted(Object result, Throwable t) { - } - }; - } - - - // - // thread safety : called with synchronised(callStack) - // - private boolean dispatchIfNeeded(CallStack callStack, int level) { - if (levelReady(callStack, level)) { - return callStack.dispatchIfNotDispatchedBefore(level); - } - return false; - } - - // - // thread safety : called with synchronised(callStack) - // - private boolean levelReady(CallStack callStack, int level) { - if (level == 1) { - // level 1 is special: there is only one strategy call and that's it - return callStack.allFetchesHappened(1); - } - if (levelReady(callStack, level - 1) && callStack.allOnFieldCallsHappened(level - 1) - && callStack.allStrategyCallsHappened(level) && callStack.allFetchesHappened(level)) { - return true; - } - return false; - } - - void dispatch() { - DataLoaderRegistry dataLoaderRegistry = getDataLoaderRegistry(); - log.debug("Dispatching data loaders ({})", dataLoaderRegistry.getKeys()); - dataLoaderRegistry.dispatchAll(); - } - - private DataLoaderRegistry getDataLoaderRegistry() { - return dataLoaderRegistrySupplier.get(); - } -} diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java new file mode 100644 index 0000000000..e6bfc3f740 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java @@ -0,0 +1,516 @@ +package graphql.execution.instrumentation.dataloader; + +import graphql.Assert; +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.Profiler; +import graphql.execution.DataLoaderDispatchStrategy; +import graphql.execution.ExecutionContext; +import graphql.execution.ExecutionStrategyParameters; +import graphql.execution.FieldValueInfo; +import graphql.execution.incremental.AlternativeCallContext; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; +import org.dataloader.DataLoader; +import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; + +@Internal +@NullMarked +public class PerLevelDataLoaderDispatchStrategy implements DataLoaderDispatchStrategy { + + private final CallStack initialCallStack; + private final ExecutionContext executionContext; + private final boolean enableDataLoaderChaining; + + + private final Profiler profiler; + + private final Map alternativeCallContextMap = new ConcurrentHashMap<>(); + + private static class ChainedDLStack { + + private final Map> stateMapPerLevel = new ConcurrentHashMap<>(); + + // a state for level points to a previous one + // all the invocations that are linked together are the relevant invocations for the next dispatch + private static class StateForLevel { + final @Nullable DataLoader dataLoader; + final boolean dispatchingStarted; + final boolean dispatchingFinished; + final boolean currentlyDelayedDispatching; + final @Nullable StateForLevel prev; + + public StateForLevel(@Nullable DataLoader dataLoader, + boolean dispatchingStarted, + boolean dispatchingFinished, + boolean currentlyDelayedDispatching, + @Nullable StateForLevel prev) { + this.dataLoader = dataLoader; + this.dispatchingStarted = dispatchingStarted; + this.dispatchingFinished = dispatchingFinished; + this.currentlyDelayedDispatching = currentlyDelayedDispatching; + this.prev = prev; + } + } + + + public @Nullable StateForLevel aboutToStartDispatching(int level, boolean normalDispatchOrDelayed, boolean chained) { + AtomicReference<@Nullable StateForLevel> currentStateRef = stateMapPerLevel.computeIfAbsent(level, __ -> new AtomicReference<>()); + while (true) { + StateForLevel currentState = currentStateRef.get(); + + + boolean dispatchingStarted = false; + boolean dispatchingFinished = false; + boolean currentlyDelayedDispatching = false; + + if (currentState != null) { + dispatchingStarted = currentState.dispatchingStarted; + dispatchingFinished = currentState.dispatchingFinished; + currentlyDelayedDispatching = currentState.currentlyDelayedDispatching; + + } + + if (!chained) { + if (normalDispatchOrDelayed) { + dispatchingStarted = true; + } else { + currentlyDelayedDispatching = true; + } + } + + if (currentState == null || currentState.dataLoader == null) { + if (normalDispatchOrDelayed) { + dispatchingFinished = true; + } else { + currentlyDelayedDispatching = false; + } + } + + StateForLevel newState = new StateForLevel(null, dispatchingStarted, dispatchingFinished, currentlyDelayedDispatching, null); + + if (currentStateRef.compareAndSet(currentState, newState)) { + return currentState; + } + } + } + + + public boolean newDataLoaderInvocation(int level, DataLoader dataLoader) { + AtomicReference<@Nullable StateForLevel> currentStateRef = stateMapPerLevel.computeIfAbsent(level, __ -> new AtomicReference<>()); + while (true) { + StateForLevel currentState = currentStateRef.get(); + + boolean dispatchingStarted = false; + boolean dispatchingFinished = false; + boolean currentlyDelayedDispatching = false; + + if (currentState != null) { + dispatchingStarted = currentState.dispatchingStarted; + dispatchingFinished = currentState.dispatchingFinished; + currentlyDelayedDispatching = currentState.currentlyDelayedDispatching; + + } + + // we need to start a new delayed dispatching if + // the normal dispatching is finished and there is no currently delayed dispatching for this level + boolean newDelayedInvocation = dispatchingFinished && !currentlyDelayedDispatching; + if (newDelayedInvocation) { + currentlyDelayedDispatching = true; + } + + StateForLevel newState = new StateForLevel(dataLoader, dispatchingStarted, dispatchingFinished, currentlyDelayedDispatching, currentState); + + if (currentStateRef.compareAndSet(currentState, newState)) { + return newDelayedInvocation; + } + } + } + + public void clear() { + stateMapPerLevel.clear(); + } + + } + + private static class CallStack { + + /** + * We track three things per level: + * - the number of execute object calls + * - the number of object completion calls + * - if the level is already dispatched + *

    + * The number of execute object calls is the number of times the execution + * of a field with sub selection (meaning it is an object) started. + *

    + * For each execute object call there will be one matching object completion call, + * indicating that the all fields in the sub selection have been fetched AND completed. + * Completion implies the fetched value is "resolved" (CompletableFuture is completed if it was a CF) + * and it the engine has processed it and called any needed subsequent execute object calls (if the result + * was none null and of Object of [Object] (or [[Object]] etc). + *

    + * Together we know a that a level is ready for dispatch if: + * - the parent was dispatched + * - the #executeObject == #completionFinished in the grandparent level. + *

    + * The second condition implies that all execute object calls in the parent level happened + * which again implies that all fetch fields in the current level have happened. + *

    + * For the first level we track only if all expected fetched field calls have happened. + */ + + /** + * The whole algo is impleted lock free and relies purely on CAS methods to handle concurrency. + */ + + static class StateForLevel { + private final int happenedCompletionFinishedCount; + private final int happenedExecuteObjectCalls; + + + public StateForLevel() { + this.happenedCompletionFinishedCount = 0; + this.happenedExecuteObjectCalls = 0; + } + + public StateForLevel(int happenedCompletionFinishedCount, int happenedExecuteObjectCalls) { + this.happenedCompletionFinishedCount = happenedCompletionFinishedCount; + this.happenedExecuteObjectCalls = happenedExecuteObjectCalls; + } + + public StateForLevel(StateForLevel other) { + this.happenedCompletionFinishedCount = other.happenedCompletionFinishedCount; + this.happenedExecuteObjectCalls = other.happenedExecuteObjectCalls; + } + + public StateForLevel copy() { + return new StateForLevel(this); + } + + public StateForLevel increaseHappenedCompletionFinishedCount() { + return new StateForLevel(happenedCompletionFinishedCount + 1, happenedExecuteObjectCalls); + } + + public StateForLevel increaseHappenedExecuteObjectCalls() { + return new StateForLevel(happenedCompletionFinishedCount, happenedExecuteObjectCalls + 1); + } + + } + + private volatile int expectedFirstLevelFetchCount; + private final AtomicInteger happenedFirstLevelFetchCount = new AtomicInteger(); + + + private final Map> stateForLevelMap = new ConcurrentHashMap<>(); + + private final Set dispatchedLevels = ConcurrentHashMap.newKeySet(); + + public ChainedDLStack chainedDLStack = new ChainedDLStack(); + + private final AtomicInteger deferredFragmentRootFieldsCompleted = new AtomicInteger(); + + public CallStack() { + } + + + public StateForLevel get(int level) { + AtomicReference dataPerLevelAtomicReference = stateForLevelMap.computeIfAbsent(level, __ -> new AtomicReference<>(new StateForLevel())); + return Assert.assertNotNull(dataPerLevelAtomicReference.get()); + } + + public boolean tryUpdateLevel(int level, StateForLevel oldData, StateForLevel newData) { + AtomicReference dataPerLevelAtomicReference = Assert.assertNotNull(stateForLevelMap.get(level)); + return dataPerLevelAtomicReference.compareAndSet(oldData, newData); + } + + + public void clear() { + dispatchedLevels.clear(); + stateForLevelMap.clear(); + expectedFirstLevelFetchCount = 0; + happenedFirstLevelFetchCount.set(0); + deferredFragmentRootFieldsCompleted.set(0); + chainedDLStack.clear(); + } + } + + public PerLevelDataLoaderDispatchStrategy(ExecutionContext executionContext) { + this.initialCallStack = new CallStack(); + this.executionContext = executionContext; + + GraphQLContext graphQLContext = executionContext.getGraphQLContext(); + + this.enableDataLoaderChaining = graphQLContext.getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, false); + this.profiler = executionContext.getProfiler(); + } + + + @Override + public void executionStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters, int fieldCount) { + Assert.assertTrue(parameters.getExecutionStepInfo().getPath().isRootPath()); + // no concurrency access happening + CallStack.StateForLevel currentState = initialCallStack.get(0); + initialCallStack.tryUpdateLevel(0, currentState, new CallStack.StateForLevel(0, 1)); + initialCallStack.expectedFirstLevelFetchCount = fieldCount; + } + + @Override + public void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + callStack.clear(); + CallStack.StateForLevel currentState = initialCallStack.get(0); + initialCallStack.tryUpdateLevel(0, currentState, new CallStack.StateForLevel(0, 1)); + // field count is always 1 for serial execution + initialCallStack.expectedFirstLevelFetchCount = 1; + } + + @Override + public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + onCompletionFinished(0, callStack); + + } + + @Override + public void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + onCompletionFinished(0, callStack); + } + + + @Override + public void executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, int fieldCount) { + CallStack callStack = getCallStack(parameters); + int curLevel = parameters.getPath().getLevel(); + while (true) { + CallStack.StateForLevel currentState = callStack.get(curLevel); + if (callStack.tryUpdateLevel(curLevel, currentState, currentState.increaseHappenedExecuteObjectCalls())) { + return; + } + } + } + + @Override + public void executeObjectOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + int curLevel = parameters.getPath().getLevel(); + CallStack callStack = getCallStack(parameters); + onCompletionFinished(curLevel, callStack); + } + + @Override + public void executeObjectOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + int curLevel = parameters.getPath().getLevel(); + onCompletionFinished(curLevel, callStack); + } + + + private void onCompletionFinished(int level, CallStack callStack) { + while (true) { + CallStack.StateForLevel currentState = callStack.get(level); + if (callStack.tryUpdateLevel(level, currentState, currentState.increaseHappenedCompletionFinishedCount())) { + break; + } + } + + // due to synchronous DataFetcher the completion calls on higher levels + // can happen before the completion calls on lower level + // this means sometimes a lower level completion means multiple levels are ready + // hence this loop here until a level is not ready or already dispatched + int currentLevel = level + 2; + while (true) { + boolean levelReady; + if (callStack.dispatchedLevels.contains(currentLevel)) { + break; + } + levelReady = markLevelAsDispatchedIfReady(currentLevel, callStack); + if (levelReady) { + dispatch(currentLevel, callStack); + } else { + break; + } + currentLevel++; + } + + } + + + @Override + public void fieldFetched(ExecutionContext executionContext, + ExecutionStrategyParameters executionStrategyParameters, + DataFetcher dataFetcher, + Object fetchedValue, + Supplier dataFetchingEnvironment) { + CallStack callStack = getCallStack(executionStrategyParameters); + int level = executionStrategyParameters.getPath().getLevel(); + AlternativeCallContext deferredCallContext = executionStrategyParameters.getDeferredCallContext(); + if (level == 1 || (deferredCallContext != null && level == deferredCallContext.getStartLevel())) { + int happenedFirstLevelFetchCount = callStack.happenedFirstLevelFetchCount.incrementAndGet(); + if (happenedFirstLevelFetchCount == callStack.expectedFirstLevelFetchCount) { + callStack.dispatchedLevels.add(level); + dispatch(level, callStack); + } + } + } + + + @Override + public void newSubscriptionExecution(AlternativeCallContext alternativeCallContext) { + CallStack callStack = new CallStack(); + alternativeCallContextMap.put(alternativeCallContext, callStack); + + } + + @Override + public void subscriptionEventCompletionDone(AlternativeCallContext alternativeCallContext) { + CallStack callStack = getCallStack(alternativeCallContext); + // this means the single root field is completed (it was never "fetched" because it is + // the event payload) and we can mark level 1 (root fields) as dispatched and level 0 as completed + callStack.dispatchedLevels.add(1); + while (true) { + CallStack.StateForLevel currentState = callStack.get(0); + if (callStack.tryUpdateLevel(0, currentState, currentState.increaseHappenedExecuteObjectCalls())) { + break; + } + } + onCompletionFinished(0, callStack); + } + + @Override + public void deferredOnFieldValue(String resultKey, FieldValueInfo fieldValueInfo, Throwable throwable, ExecutionStrategyParameters parameters) { + CallStack callStack = getCallStack(parameters); + int deferredFragmentRootFieldsCompleted = callStack.deferredFragmentRootFieldsCompleted.incrementAndGet(); + Assert.assertNotNull(parameters.getDeferredCallContext()); + if (deferredFragmentRootFieldsCompleted == parameters.getDeferredCallContext().getFields()) { + onCompletionFinished(parameters.getDeferredCallContext().getStartLevel() - 1, callStack); + } + + } + + + private CallStack getCallStack(ExecutionStrategyParameters parameters) { + return getCallStack(parameters.getDeferredCallContext()); + } + + private CallStack getCallStack(@Nullable AlternativeCallContext alternativeCallContext) { + if (alternativeCallContext == null) { + return this.initialCallStack; + } else { + return alternativeCallContextMap.computeIfAbsent(alternativeCallContext, k -> { + /* + This is only for handling deferred cases. Subscription cases will also get a new callStack, but + it is explicitly created in `newSubscriptionExecution`. + The reason we are doing this lazily is, because we don't have explicit startDeferred callback. + */ + CallStack callStack = new CallStack(); + // on which level the fields are + int startLevel = k.getStartLevel(); + // how many fields are deferred on this level + int fields = k.getFields(); + if (startLevel > 1) { + // parent level is considered dispatched and all fields completed (meaning the grandparent level has all object completion call happened) + callStack.dispatchedLevels.add(startLevel - 1); + CallStack.StateForLevel stateForLevel = callStack.get(startLevel - 2); + CallStack.StateForLevel newStateForLevel = stateForLevel.increaseHappenedExecuteObjectCalls().increaseHappenedCompletionFinishedCount(); + callStack.tryUpdateLevel(startLevel - 2, stateForLevel, newStateForLevel); + } + // the parent will have one completion therefore we set the expectation to 1 + CallStack.StateForLevel stateForLevel = callStack.get(startLevel - 1); + callStack.tryUpdateLevel(startLevel - 1, stateForLevel, stateForLevel.increaseHappenedExecuteObjectCalls()); + + // for the current level we set the fetch expectations + callStack.expectedFirstLevelFetchCount = fields; + return callStack; + }); + } + } + + + private boolean markLevelAsDispatchedIfReady(int level, CallStack callStack) { + boolean ready = isLevelReady(level, callStack); + if (ready) { + if (!callStack.dispatchedLevels.add(level)) { + // meaning another thread came before us, so they will take care of dispatching + return false; + } + return true; + } + return false; + } + + + private boolean isLevelReady(int level, CallStack callStack) { + Assert.assertTrue(level > 1); + // we expect that parent has been dispatched and that all parents fields are completed + // all parent fields completed means all parent parent on completions finished calls must have happened + int happenedExecuteObjectCalls = callStack.get(level - 2).happenedExecuteObjectCalls; + return callStack.dispatchedLevels.contains(level - 1) && + happenedExecuteObjectCalls > 0 && happenedExecuteObjectCalls == callStack.get(level - 2).happenedCompletionFinishedCount; + + } + + void dispatch(int level, CallStack callStack) { + if (!enableDataLoaderChaining) { + profiler.oldStrategyDispatchingAll(level); + DataLoaderRegistry dataLoaderRegistry = executionContext.getDataLoaderRegistry(); + dispatchAll(dataLoaderRegistry, level); + return; + } + dispatchDLCFImpl(level, callStack, true, false); + } + + private void dispatchAll(DataLoaderRegistry dataLoaderRegistry, int level) { + dataLoaderRegistry.dispatchAll(); + } + + private void dispatchDLCFImpl(Integer level, CallStack callStack, boolean normalOrDelayed, boolean chained) { + + ChainedDLStack.StateForLevel stateForLevel = callStack.chainedDLStack.aboutToStartDispatching(level, normalOrDelayed, chained); + if (stateForLevel == null || stateForLevel.dataLoader == null) { + return; + } + + List allDispatchedCFs = new ArrayList<>(); + while (stateForLevel != null && stateForLevel.dataLoader != null) { + CompletableFuture dispatch = stateForLevel.dataLoader.dispatch(); + allDispatchedCFs.add(dispatch); + stateForLevel = stateForLevel.prev; + } + CompletableFuture.allOf(allDispatchedCFs.toArray(new CompletableFuture[0])) + .whenComplete((unused, throwable) -> { + dispatchDLCFImpl(level, callStack, normalOrDelayed, true); + } + ); + + } + + + public void newDataLoaderInvocation(int level, + DataLoader dataLoader, + @Nullable AlternativeCallContext alternativeCallContext) { + if (!enableDataLoaderChaining) { + return; + } + CallStack callStack = getCallStack(alternativeCallContext); + boolean newDelayedInvocation = callStack.chainedDLStack.newDataLoaderInvocation(level, dataLoader); + if (newDelayedInvocation) { + dispatchDLCFImpl(level, callStack, false, false); + } + } + + +} + diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldAndArguments.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldAndArguments.java index 912314a04a..3ad6bc3e9c 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldAndArguments.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldAndArguments.java @@ -1,7 +1,7 @@ package graphql.execution.instrumentation.fieldvalidation; import graphql.PublicApi; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.language.Field; import graphql.schema.GraphQLCompositeType; import graphql.schema.GraphQLFieldDefinition; @@ -37,7 +37,7 @@ public interface FieldAndArguments { /** * @return the path to this field */ - ExecutionPath getPath(); + ResultPath getPath(); /** * This will be a map of argument names to argument values. This will contain any variables transferred diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationEnvironment.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationEnvironment.java index 2e2998221b..047c3e7831 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationEnvironment.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationEnvironment.java @@ -3,7 +3,7 @@ import graphql.GraphQLError; import graphql.PublicApi; import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import java.util.List; import java.util.Map; @@ -36,7 +36,7 @@ public interface FieldValidationEnvironment { /** * @return a map of field paths to {@link FieldAndArguments} */ - Map> getFieldsByPath(); + Map> getFieldsByPath(); /** * This helper method allows you to make error messages to be passed back out in case of validation failure. Note you diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java index 19fa513628..408fd261be 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java @@ -5,8 +5,10 @@ import graphql.PublicApi; import graphql.execution.AbortExecutionException; import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.SimpleInstrumentation; +import graphql.execution.instrumentation.InstrumentationState; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; +import org.jspecify.annotations.Nullable; import java.util.List; @@ -22,7 +24,7 @@ * @see FieldValidation */ @PublicApi -public class FieldValidationInstrumentation extends SimpleInstrumentation { +public class FieldValidationInstrumentation extends SimplePerformantInstrumentation { private final FieldValidation fieldValidation; @@ -36,12 +38,11 @@ public FieldValidationInstrumentation(FieldValidation fieldValidation) { } @Override - public InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) { - + public @Nullable InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { List errors = FieldValidationSupport.validateFieldsAndArguments(fieldValidation, parameters.getExecutionContext()); if (errors != null && !errors.isEmpty()) { throw new AbortExecutionException(errors); } - return super.beginExecuteOperation(parameters); + return super.beginExecuteOperation(parameters, state); } } diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java index bb51e2df20..454fb30677 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java @@ -1,13 +1,15 @@ package graphql.execution.instrumentation.fieldvalidation; +import com.google.common.collect.ImmutableList; import graphql.ErrorType; import graphql.GraphQLError; import graphql.Internal; import graphql.analysis.QueryTraverser; import graphql.analysis.QueryVisitorFieldEnvironment; import graphql.analysis.QueryVisitorStub; +import graphql.collect.ImmutableKit; import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.language.Field; import graphql.language.SourceLocation; import graphql.schema.GraphQLCompositeType; @@ -20,20 +22,19 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @Internal class FieldValidationSupport { static List validateFieldsAndArguments(FieldValidation fieldValidation, ExecutionContext executionContext) { - Map> fieldArgumentsMap = new LinkedHashMap<>(); + Map> fieldArgumentsMap = new LinkedHashMap<>(); QueryTraverser queryTraverser = QueryTraverser.newQueryTraverser() .schema(executionContext.getGraphQLSchema()) .document(executionContext.getDocument()) .operationName(executionContext.getOperationDefinition().getName()) - .variables(executionContext.getVariables()) + .coercedVariables(executionContext.getCoercedVariables()) .build(); queryTraverser.visitPreOrder(new QueryVisitorStub() { @@ -45,7 +46,7 @@ public void visitField(QueryVisitorFieldEnvironment env) { // only fields that have arguments make any sense to placed in play // since only they have variable input FieldAndArguments fieldArguments = new FieldAndArgumentsImpl(env); - ExecutionPath path = fieldArguments.getPath(); + ResultPath path = fieldArguments.getPath(); List list = fieldArgumentsMap.getOrDefault(path, new ArrayList<>()); list.add(fieldArguments); fieldArgumentsMap.put(path, list); @@ -62,7 +63,7 @@ public void visitField(QueryVisitorFieldEnvironment env) { private static class FieldAndArgumentsImpl implements FieldAndArguments { private final QueryVisitorFieldEnvironment traversalEnv; private final FieldAndArguments parentArgs; - private final ExecutionPath path; + private final ResultPath path; FieldAndArgumentsImpl(QueryVisitorFieldEnvironment traversalEnv) { this.traversalEnv = traversalEnv; @@ -74,10 +75,10 @@ private FieldAndArguments mkParentArgs(QueryVisitorFieldEnvironment traversalEnv return traversalEnv.getParentEnvironment() != null ? new FieldAndArgumentsImpl(traversalEnv.getParentEnvironment()) : null; } - private ExecutionPath mkPath(QueryVisitorFieldEnvironment traversalEnv) { + private ResultPath mkPath(QueryVisitorFieldEnvironment traversalEnv) { QueryVisitorFieldEnvironment parentEnvironment = traversalEnv.getParentEnvironment(); if (parentEnvironment == null) { - return ExecutionPath.rootPath().segment(traversalEnv.getField().getName()); + return ResultPath.rootPath().segment(traversalEnv.getField().getName()); } else { Deque stack = new ArrayDeque<>(); stack.push(traversalEnv); @@ -85,7 +86,7 @@ private ExecutionPath mkPath(QueryVisitorFieldEnvironment traversalEnv) { stack.push(parentEnvironment); parentEnvironment = parentEnvironment.getParentEnvironment(); } - ExecutionPath path = ExecutionPath.rootPath(); + ResultPath path = ResultPath.rootPath(); while (!stack.isEmpty()) { QueryVisitorFieldEnvironment environment = stack.pop(); path = path.segment(environment.getField().getName()); @@ -110,7 +111,7 @@ public GraphQLCompositeType getParentType() { } @Override - public ExecutionPath getPath() { + public ResultPath getPath() { return path; } @@ -134,13 +135,13 @@ public FieldAndArguments getParentFieldAndArguments() { private static class FieldValidationEnvironmentImpl implements FieldValidationEnvironment { private final ExecutionContext executionContext; - private final Map> fieldArgumentsMap; - private final List fieldArguments; + private final Map> fieldArgumentsMap; + private final ImmutableList fieldArguments; - FieldValidationEnvironmentImpl(ExecutionContext executionContext, Map> fieldArgumentsMap) { + FieldValidationEnvironmentImpl(ExecutionContext executionContext, Map> fieldArgumentsMap) { this.executionContext = executionContext; this.fieldArgumentsMap = fieldArgumentsMap; - this.fieldArguments = fieldArgumentsMap.values().stream().flatMap(List::stream).collect(Collectors.toList()); + this.fieldArguments = ImmutableKit.flatMapList(fieldArgumentsMap.values()); } @@ -155,7 +156,7 @@ public List getFields() { } @Override - public Map> getFieldsByPath() { + public Map> getFieldsByPath() { return fieldArgumentsMap; } @@ -175,7 +176,7 @@ private static class FieldAndArgError implements GraphQLError { private final List locations; private final List path; - FieldAndArgError(String message, Field field, ExecutionPath path) { + FieldAndArgError(String message, Field field, ResultPath path) { this.message = message; this.locations = field == null ? null : Collections.singletonList(field.getSourceLocation()); this.path = path == null ? null : path.toList(); diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/SimpleFieldValidation.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/SimpleFieldValidation.java index 47b0e42def..9f0a340f19 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/SimpleFieldValidation.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/SimpleFieldValidation.java @@ -1,8 +1,9 @@ package graphql.execution.instrumentation.fieldvalidation; +import com.google.common.collect.ImmutableList; import graphql.GraphQLError; import graphql.PublicApi; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -15,13 +16,13 @@ * This very simple field validation will run the supplied function for a given field path and if it returns an error * it will be added to the list of problems. * - * Use {@link #addRule(graphql.execution.ExecutionPath, java.util.function.BiFunction)} to supply the rule callbacks where + * Use {@link #addRule(ResultPath, java.util.function.BiFunction)} to supply the rule callbacks where * you implement your specific business logic */ @PublicApi public class SimpleFieldValidation implements FieldValidation { - private final Map>> rules = new LinkedHashMap<>(); + private final Map>> rules = new LinkedHashMap<>(); /** * Adds the rule against the field address path. If the rule returns an error, it will be added to the list of errors @@ -31,7 +32,7 @@ public class SimpleFieldValidation implements FieldValidation { * * @return this validator */ - public SimpleFieldValidation addRule(ExecutionPath fieldPath, BiFunction> rule) { + public SimpleFieldValidation addRule(ResultPath fieldPath, BiFunction> rule) { rules.put(fieldPath, rule); return this; } @@ -39,17 +40,18 @@ public SimpleFieldValidation addRule(ExecutionPath fieldPath, BiFunction validateFields(FieldValidationEnvironment validationEnvironment) { List errors = new ArrayList<>(); - for (ExecutionPath fieldPath : rules.keySet()) { + for (Map.Entry>> entry : rules.entrySet()) { + ResultPath fieldPath = entry.getKey(); + BiFunction> ruleFunction = entry.getValue(); + List fieldAndArguments = validationEnvironment.getFieldsByPath().get(fieldPath); if (fieldAndArguments != null) { - BiFunction> ruleFunction = rules.get(fieldPath); - for (FieldAndArguments fieldAndArgument : fieldAndArguments) { Optional graphQLError = ruleFunction.apply(fieldAndArgument, validationEnvironment); graphQLError.ifPresent(errors::add); } } } - return errors; + return ImmutableList.copyOf(errors); } } diff --git a/src/main/java/graphql/execution/instrumentation/nextgen/Instrumentation.java b/src/main/java/graphql/execution/instrumentation/nextgen/Instrumentation.java deleted file mode 100644 index 3e59616284..0000000000 --- a/src/main/java/graphql/execution/instrumentation/nextgen/Instrumentation.java +++ /dev/null @@ -1,52 +0,0 @@ -package graphql.execution.instrumentation.nextgen; - -import graphql.ExecutionInput; -import graphql.ExecutionResult; -import graphql.Internal; -import graphql.execution.instrumentation.DocumentAndVariables; -import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.language.Document; -import graphql.schema.GraphQLSchema; -import graphql.validation.ValidationError; - -import java.util.List; - -import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp; - -@Internal -public interface Instrumentation { - - default InstrumentationState createState(InstrumentationCreateStateParameters parameters) { - return new InstrumentationState() { - }; - } - - default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters) { - return executionInput; - } - - default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters) { - return documentAndVariables; - } - - default GraphQLSchema instrumentSchema(GraphQLSchema graphQLSchema, InstrumentationExecutionParameters parameters) { - return graphQLSchema; - } - - default ExecutionResult instrumentExecutionResult(ExecutionResult result, InstrumentationExecutionParameters parameters) { - return result; - } - - default InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters) { - return noOp(); - } - - default InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { - return noOp(); - } - - default InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - return noOp(); - } -} diff --git a/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationCreateStateParameters.java b/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationCreateStateParameters.java deleted file mode 100644 index ff4ad52cdc..0000000000 --- a/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationCreateStateParameters.java +++ /dev/null @@ -1,27 +0,0 @@ -package graphql.execution.instrumentation.nextgen; - -import graphql.ExecutionInput; -import graphql.Internal; -import graphql.schema.GraphQLSchema; - -/** - * Parameters sent to {@link graphql.execution.instrumentation.nextgen.Instrumentation} methods - */ -@Internal -public class InstrumentationCreateStateParameters { - private final GraphQLSchema schema; - private final ExecutionInput executionInput; - - public InstrumentationCreateStateParameters(GraphQLSchema schema, ExecutionInput executionInput) { - this.schema = schema; - this.executionInput = executionInput; - } - - public GraphQLSchema getSchema() { - return schema; - } - - public ExecutionInput getExecutionInput() { - return executionInput; - } -} diff --git a/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationExecutionParameters.java b/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationExecutionParameters.java deleted file mode 100644 index 89c368c761..0000000000 --- a/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationExecutionParameters.java +++ /dev/null @@ -1,75 +0,0 @@ -package graphql.execution.instrumentation.nextgen; - -import graphql.ExecutionInput; -import graphql.Internal; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.schema.GraphQLSchema; - -import java.util.Collections; -import java.util.Map; - -/** - * Parameters sent to {@link graphql.execution.instrumentation.nextgen.Instrumentation} methods - */ -@Internal -public class InstrumentationExecutionParameters { - private final ExecutionInput executionInput; - private final String query; - private final String operation; - private final Object context; - private final Map variables; - private final InstrumentationState instrumentationState; - private final GraphQLSchema schema; - - public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema, InstrumentationState instrumentationState) { - this.executionInput = executionInput; - this.query = executionInput.getQuery(); - this.operation = executionInput.getOperationName(); - this.context = executionInput.getContext(); - this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : Collections.emptyMap(); - this.instrumentationState = instrumentationState; - this.schema = schema; - } - - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - public InstrumentationExecutionParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationExecutionParameters(this.getExecutionInput(), this.schema, instrumentationState); - } - - public ExecutionInput getExecutionInput() { - return executionInput; - } - - public String getQuery() { - return query; - } - - public String getOperation() { - return operation; - } - - @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"}) - public T getContext() { - return (T) context; - } - - public Map getVariables() { - return variables; - } - - @SuppressWarnings("TypeParameterUnusedInFormals") - public T getInstrumentationState() { - //noinspection unchecked - return (T) instrumentationState; - } - - public GraphQLSchema getSchema() { - return this.schema; - } -} diff --git a/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationValidationParameters.java b/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationValidationParameters.java deleted file mode 100644 index ebaa26d3b2..0000000000 --- a/src/main/java/graphql/execution/instrumentation/nextgen/InstrumentationValidationParameters.java +++ /dev/null @@ -1,38 +0,0 @@ -package graphql.execution.instrumentation.nextgen; - -import graphql.ExecutionInput; -import graphql.Internal; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.language.Document; -import graphql.schema.GraphQLSchema; - -/** - * Parameters sent to {@link graphql.execution.instrumentation.nextgen.Instrumentation} methods - */ -@Internal -public class InstrumentationValidationParameters extends InstrumentationExecutionParameters { - private final Document document; - - public InstrumentationValidationParameters(ExecutionInput executionInput, Document document, GraphQLSchema schema, InstrumentationState instrumentationState) { - super(executionInput, schema, instrumentationState); - this.document = document; - } - - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - @Override - public InstrumentationValidationParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationValidationParameters( - this.getExecutionInput(), document, getSchema(), instrumentationState); - } - - - public Document getDocument() { - return document; - } -} diff --git a/src/main/java/graphql/execution/instrumentation/nextgen/package-info.java b/src/main/java/graphql/execution/instrumentation/nextgen/package-info.java deleted file mode 100644 index 2f08b060ba..0000000000 --- a/src/main/java/graphql/execution/instrumentation/nextgen/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * WARNING: All code in this package is a work in progress for a new execution engine. - */ -package graphql.execution.instrumentation.nextgen; diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationCreateStateParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationCreateStateParameters.java index 8a41215ab4..da07ee2669 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationCreateStateParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationCreateStateParameters.java @@ -1,11 +1,13 @@ package graphql.execution.instrumentation.parameters; import graphql.ExecutionInput; +import graphql.PublicApi; import graphql.schema.GraphQLSchema; /** * Parameters sent to {@link graphql.execution.instrumentation.Instrumentation} methods */ +@PublicApi public class InstrumentationCreateStateParameters { private final GraphQLSchema schema; private final ExecutionInput executionInput; diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java deleted file mode 100644 index f8a0f47c2e..0000000000 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java +++ /dev/null @@ -1,41 +0,0 @@ -package graphql.execution.instrumentation.parameters; - -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.ExecutionStrategyParameters; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.schema.GraphQLFieldDefinition; - -/** - * Parameters sent to {@link graphql.execution.instrumentation.Instrumentation} methods - */ -public class InstrumentationDeferredFieldParameters extends InstrumentationFieldParameters { - - private final ExecutionStrategyParameters executionStrategyParameters; - - public InstrumentationDeferredFieldParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, GraphQLFieldDefinition fieldDef, ExecutionStepInfo executionStepInfo) { - this(executionContext, executionStrategyParameters, fieldDef, executionStepInfo, executionContext.getInstrumentationState()); - } - - InstrumentationDeferredFieldParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, GraphQLFieldDefinition fieldDef, ExecutionStepInfo executionStepInfo, InstrumentationState instrumentationState) { - super(executionContext, fieldDef, executionStepInfo, instrumentationState); - this.executionStrategyParameters = executionStrategyParameters; - } - - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - @Override - public InstrumentationDeferredFieldParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationDeferredFieldParameters( - this.getExecutionContext(), this.executionStrategyParameters, this.getField(), this.getExecutionStepInfo(), instrumentationState); - } - - public ExecutionStrategyParameters getExecutionStrategyParameters() { - return executionStrategyParameters; - } -} diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecuteOperationParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecuteOperationParameters.java index f7b628a85a..69587f3f44 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecuteOperationParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecuteOperationParameters.java @@ -1,43 +1,23 @@ package graphql.execution.instrumentation.parameters; +import graphql.PublicApi; import graphql.execution.ExecutionContext; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationState; /** * Parameters sent to {@link Instrumentation} methods */ @SuppressWarnings("TypeParameterUnusedInFormals") +@PublicApi public class InstrumentationExecuteOperationParameters { private final ExecutionContext executionContext; - private final InstrumentationState instrumentationState; - public InstrumentationExecuteOperationParameters(ExecutionContext executionContext) { - this(executionContext, executionContext.getInstrumentationState()); - } - - private InstrumentationExecuteOperationParameters(ExecutionContext executionContext, InstrumentationState instrumentationState) { this.executionContext = executionContext; - this.instrumentationState = instrumentationState; } - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - public InstrumentationExecuteOperationParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationExecuteOperationParameters(executionContext, instrumentationState); - } public ExecutionContext getExecutionContext() { return executionContext; } - public T getInstrumentationState() { - //noinspection unchecked - return (T) instrumentationState; - } } diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionParameters.java index ddcaf6a8ae..58ad4d5aee 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionParameters.java @@ -1,12 +1,12 @@ package graphql.execution.instrumentation.parameters; import graphql.ExecutionInput; +import graphql.GraphQLContext; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationState; import graphql.schema.GraphQLSchema; -import java.util.Collections; import java.util.Map; /** @@ -18,30 +18,20 @@ public class InstrumentationExecutionParameters { private final String query; private final String operation; private final Object context; + private final GraphQLContext graphQLContext; private final Map variables; - private final InstrumentationState instrumentationState; private final GraphQLSchema schema; - public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema, InstrumentationState instrumentationState) { + public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema) { this.executionInput = executionInput; this.query = executionInput.getQuery(); this.operation = executionInput.getOperationName(); this.context = executionInput.getContext(); - this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : Collections.emptyMap(); - this.instrumentationState = instrumentationState; + this.graphQLContext = executionInput.getGraphQLContext(); + this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : ImmutableKit.emptyMap(); this.schema = schema; } - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - public InstrumentationExecutionParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationExecutionParameters(this.getExecutionInput(), this.schema, instrumentationState); - } public ExecutionInput getExecutionInput() { return executionInput; @@ -55,20 +45,27 @@ public String getOperation() { return operation; } + /** + * @param for two + * + * @return the legacy context + * + * @deprecated use {@link #getGraphQLContext()} instead + */ + @Deprecated(since = "2021-07-05") @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"}) public T getContext() { return (T) context; } + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + public Map getVariables() { return variables; } - @SuppressWarnings("TypeParameterUnusedInFormals") - public T getInstrumentationState() { - //noinspection unchecked - return (T) instrumentationState; - } public GraphQLSchema getSchema() { return this.schema; diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionStrategyParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionStrategyParameters.java index b9e3f41684..9c93c84d42 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionStrategyParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationExecutionStrategyParameters.java @@ -1,38 +1,23 @@ package graphql.execution.instrumentation.parameters; +import graphql.PublicApi; import graphql.execution.ExecutionContext; import graphql.execution.ExecutionStrategyParameters; -import graphql.execution.instrumentation.InstrumentationState; /** * Parameters sent to {@link graphql.execution.instrumentation.Instrumentation} methods */ +@PublicApi public class InstrumentationExecutionStrategyParameters { private final ExecutionContext executionContext; private final ExecutionStrategyParameters executionStrategyParameters; - private final InstrumentationState instrumentationState; public InstrumentationExecutionStrategyParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters) { - this(executionContext, executionStrategyParameters, executionContext.getInstrumentationState()); - } - - private InstrumentationExecutionStrategyParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, InstrumentationState instrumentationState) { this.executionContext = executionContext; this.executionStrategyParameters = executionStrategyParameters; - this.instrumentationState = instrumentationState; } - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - public InstrumentationExecutionStrategyParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationExecutionStrategyParameters(executionContext, executionStrategyParameters, instrumentationState); - } public ExecutionContext getExecutionContext() { return executionContext; @@ -42,9 +27,4 @@ public ExecutionStrategyParameters getExecutionStrategyParameters() { return executionStrategyParameters; } - @SuppressWarnings("TypeParameterUnusedInFormals") - public T getInstrumentationState() { - //noinspection unchecked - return (T) instrumentationState; - } } diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java index 1e97454c29..ac7e1b27e5 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java @@ -1,46 +1,30 @@ package graphql.execution.instrumentation.parameters; +import graphql.PublicApi; import graphql.execution.ExecutionContext; import graphql.execution.ExecutionStepInfo; import graphql.execution.ExecutionStrategyParameters; -import graphql.execution.instrumentation.InstrumentationState; import graphql.schema.GraphQLFieldDefinition; +import java.util.function.Supplier; + /** * Parameters sent to {@link graphql.execution.instrumentation.Instrumentation} methods */ +@PublicApi public class InstrumentationFieldCompleteParameters { private final ExecutionContext executionContext; - private final GraphQLFieldDefinition fieldDef; - private final ExecutionStepInfo typeInfo; + private final Supplier executionStepInfo; private final Object fetchedValue; - private final InstrumentationState instrumentationState; private final ExecutionStrategyParameters executionStrategyParameters; - public InstrumentationFieldCompleteParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, GraphQLFieldDefinition fieldDef, ExecutionStepInfo typeInfo, Object fetchedValue) { - this(executionContext, executionStrategyParameters, fieldDef, typeInfo, fetchedValue, executionContext.getInstrumentationState()); - } - - InstrumentationFieldCompleteParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, GraphQLFieldDefinition fieldDef, ExecutionStepInfo typeInfo, Object fetchedValue, InstrumentationState instrumentationState) { + public InstrumentationFieldCompleteParameters(ExecutionContext executionContext, ExecutionStrategyParameters executionStrategyParameters, Supplier executionStepInfo, Object fetchedValue) { this.executionContext = executionContext; this.executionStrategyParameters = executionStrategyParameters; - this.fieldDef = fieldDef; - this.typeInfo = typeInfo; + this.executionStepInfo = executionStepInfo; this.fetchedValue = fetchedValue; - this.instrumentationState = instrumentationState; } - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - public InstrumentationFieldCompleteParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationFieldCompleteParameters( - this.executionContext, executionStrategyParameters, this.fieldDef, this.typeInfo, this.fetchedValue, instrumentationState); - } public ExecutionContext getExecutionContext() { @@ -52,20 +36,26 @@ public ExecutionStrategyParameters getExecutionStrategyParameters() { } public GraphQLFieldDefinition getField() { - return fieldDef; + return getExecutionStepInfo().getFieldDefinition(); } + @Deprecated(since = "2020-09-08") public ExecutionStepInfo getTypeInfo() { - return typeInfo; + return getExecutionStepInfo(); } - public Object getFetchedValue() { - return fetchedValue; + public ExecutionStepInfo getExecutionStepInfo() { + return executionStepInfo.get(); } - @SuppressWarnings("TypeParameterUnusedInFormals") - public T getInstrumentationState() { - //noinspection unchecked - return (T) instrumentationState; + /** + * This returns the object that was fetched, ready to be completed as a value. This can sometimes be a {@link graphql.execution.FetchedValue} object + * but most often it's a simple POJO. + * + * @return the object was fetched, ready to be completed as a value. + */ + public Object getFetchedObject() { + return fetchedValue; } + } diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java index 697512b4e2..fda194d73e 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java @@ -1,51 +1,31 @@ package graphql.execution.instrumentation.parameters; +import graphql.PublicApi; import graphql.execution.ExecutionContext; import graphql.execution.ExecutionStrategyParameters; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationState; import graphql.schema.DataFetchingEnvironment; -import graphql.schema.GraphQLFieldDefinition; + +import java.util.function.Supplier; /** * Parameters sent to {@link Instrumentation} methods */ +@PublicApi public class InstrumentationFieldFetchParameters extends InstrumentationFieldParameters { - private final DataFetchingEnvironment environment; + private final Supplier environment; private final ExecutionStrategyParameters executionStrategyParameters; private final boolean trivialDataFetcher; - public InstrumentationFieldFetchParameters(ExecutionContext getExecutionContext, GraphQLFieldDefinition fieldDef, DataFetchingEnvironment environment, ExecutionStrategyParameters executionStrategyParameters, boolean trivialDataFetcher) { - super(getExecutionContext, fieldDef, environment.getExecutionStepInfo()); + public InstrumentationFieldFetchParameters(ExecutionContext getExecutionContext, Supplier environment, ExecutionStrategyParameters executionStrategyParameters, boolean trivialDataFetcher) { + super(getExecutionContext, () -> environment.get().getExecutionStepInfo()); this.environment = environment; this.executionStrategyParameters = executionStrategyParameters; this.trivialDataFetcher = trivialDataFetcher; } - private InstrumentationFieldFetchParameters(ExecutionContext getExecutionContext, GraphQLFieldDefinition fieldDef, DataFetchingEnvironment environment, InstrumentationState instrumentationState, ExecutionStrategyParameters executionStrategyParameters, boolean trivialDataFetcher) { - super(getExecutionContext, fieldDef, environment.getExecutionStepInfo(), instrumentationState); - this.environment = environment; - this.executionStrategyParameters = executionStrategyParameters; - this.trivialDataFetcher = trivialDataFetcher; - } - - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - @Override - public InstrumentationFieldFetchParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationFieldFetchParameters( - this.getExecutionContext(), this.getField(), this.getEnvironment(), - instrumentationState, executionStrategyParameters, trivialDataFetcher); - } - - public DataFetchingEnvironment getEnvironment() { - return environment; + return environment.get(); } public boolean isTrivialDataFetcher() { diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldParameters.java index 78c2c5410a..ebac32ffb1 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldParameters.java @@ -1,59 +1,34 @@ package graphql.execution.instrumentation.parameters; +import graphql.PublicApi; import graphql.execution.ExecutionContext; import graphql.execution.ExecutionStepInfo; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationState; import graphql.schema.GraphQLFieldDefinition; +import java.util.function.Supplier; + /** * Parameters sent to {@link Instrumentation} methods */ +@PublicApi public class InstrumentationFieldParameters { private final ExecutionContext executionContext; - private final graphql.schema.GraphQLFieldDefinition fieldDef; - private final ExecutionStepInfo executionStepInfo; - private final InstrumentationState instrumentationState; - - public InstrumentationFieldParameters(ExecutionContext executionContext, GraphQLFieldDefinition fieldDef, ExecutionStepInfo executionStepInfo) { - this(executionContext, fieldDef, executionStepInfo, executionContext.getInstrumentationState()); - } - - InstrumentationFieldParameters(ExecutionContext executionContext, GraphQLFieldDefinition fieldDef, ExecutionStepInfo executionStepInfo, InstrumentationState instrumentationState) { + private final Supplier executionStepInfo; + public InstrumentationFieldParameters(ExecutionContext executionContext, Supplier executionStepInfo) { this.executionContext = executionContext; - this.fieldDef = fieldDef; this.executionStepInfo = executionStepInfo; - this.instrumentationState = instrumentationState; } - - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - public InstrumentationFieldParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationFieldParameters( - this.executionContext, this.fieldDef, this.executionStepInfo, instrumentationState); - } - - public ExecutionContext getExecutionContext() { return executionContext; } public GraphQLFieldDefinition getField() { - return fieldDef; + return executionStepInfo.get().getFieldDefinition(); } public ExecutionStepInfo getExecutionStepInfo() { - return executionStepInfo; + return executionStepInfo.get(); } - @SuppressWarnings("TypeParameterUnusedInFormals") - public T getInstrumentationState() { - //noinspection unchecked - return (T) instrumentationState; - } } diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationReactiveResultsParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationReactiveResultsParameters.java new file mode 100644 index 0000000000..a4e312efd6 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationReactiveResultsParameters.java @@ -0,0 +1,39 @@ +package graphql.execution.instrumentation.parameters; + +import graphql.PublicApi; +import graphql.execution.ExecutionContext; +import graphql.execution.instrumentation.Instrumentation; +import org.jspecify.annotations.NullMarked; + +/** + * Parameters sent to {@link Instrumentation} methods + */ +@SuppressWarnings("TypeParameterUnusedInFormals") +@PublicApi +@NullMarked +public class InstrumentationReactiveResultsParameters { + + /** + * What type of reactive results was the {@link org.reactivestreams.Publisher} + */ + public enum ResultType { + DEFER, SUBSCRIPTION + } + + private final ExecutionContext executionContext; + private final ResultType resultType; + + public InstrumentationReactiveResultsParameters(ExecutionContext executionContext, ResultType resultType) { + this.executionContext = executionContext; + this.resultType = resultType; + } + + + public ExecutionContext getExecutionContext() { + return executionContext; + } + + public ResultType getResultType() { + return resultType; + } +} diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java index f35c7616c8..c23a413941 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java @@ -1,35 +1,23 @@ package graphql.execution.instrumentation.parameters; import graphql.ExecutionInput; +import graphql.PublicApi; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.InstrumentationState; import graphql.language.Document; import graphql.schema.GraphQLSchema; /** * Parameters sent to {@link Instrumentation} methods */ +@PublicApi public class InstrumentationValidationParameters extends InstrumentationExecutionParameters { private final Document document; - public InstrumentationValidationParameters(ExecutionInput executionInput, Document document, GraphQLSchema schema, InstrumentationState instrumentationState) { - super(executionInput, schema, instrumentationState); + public InstrumentationValidationParameters(ExecutionInput executionInput, Document document, GraphQLSchema schema) { + super(executionInput, schema); this.document = document; } - /** - * Returns a cloned parameters object with the new state - * - * @param instrumentationState the new state for this parameters object - * - * @return a new parameters object with the new state - */ - @Override - public InstrumentationValidationParameters withNewState(InstrumentationState instrumentationState) { - return new InstrumentationValidationParameters( - this.getExecutionInput(), document, getSchema(), instrumentationState); - } - public Document getDocument() { return document; diff --git a/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java b/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java index 5f838eeb05..ed18f68ab8 100644 --- a/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java @@ -3,22 +3,26 @@ import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.SimpleInstrumentation; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.validation.ValidationError; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import static graphql.execution.instrumentation.InstrumentationState.ofState; import static graphql.execution.instrumentation.SimpleInstrumentationContext.whenCompleted; /** @@ -26,7 +30,7 @@ * capture tracing information and puts it into the {@link ExecutionResult} */ @PublicApi -public class TracingInstrumentation extends SimpleInstrumentation { +public class TracingInstrumentation extends SimplePerformantInstrumentation { public static class Options { private final boolean includeTrivialDataFetchers; @@ -68,39 +72,38 @@ public TracingInstrumentation(Options options) { private final Options options; @Override - public InstrumentationState createState() { - return new TracingSupport(options.includeTrivialDataFetchers); + public @Nullable CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.completedFuture(new TracingSupport(options.includeTrivialDataFetchers)); } @Override - public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState rawState) { Map currentExt = executionResult.getExtensions(); - TracingSupport tracingSupport = parameters.getInstrumentationState(); - Map tracingMap = new LinkedHashMap<>(); - tracingMap.putAll(currentExt == null ? Collections.emptyMap() : currentExt); - tracingMap.put("tracing", tracingSupport.snapshotTracingData()); + TracingSupport tracingSupport = ofState(rawState); + Map withTracingExt = new LinkedHashMap<>(currentExt == null ? ImmutableKit.emptyMap() : currentExt); + withTracingExt.put("tracing", tracingSupport.snapshotTracingData()); - return CompletableFuture.completedFuture(new ExecutionResultImpl(executionResult.getData(), executionResult.getErrors(), tracingMap)); + return CompletableFuture.completedFuture(new ExecutionResultImpl(executionResult.getData(), executionResult.getErrors(), withTracingExt)); } @Override - public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - TracingSupport tracingSupport = parameters.getInstrumentationState(); + public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState rawState) { + TracingSupport tracingSupport = ofState(rawState); TracingSupport.TracingContext ctx = tracingSupport.beginField(parameters.getEnvironment(), parameters.isTrivialDataFetcher()); return whenCompleted((result, t) -> ctx.onEnd()); } @Override - public InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { - TracingSupport tracingSupport = parameters.getInstrumentationState(); + public InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState rawState) { + TracingSupport tracingSupport = ofState(rawState); TracingSupport.TracingContext ctx = tracingSupport.beginParse(); return whenCompleted((result, t) -> ctx.onEnd()); } @Override - public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - TracingSupport tracingSupport = parameters.getInstrumentationState(); + public InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState rawState) { + TracingSupport tracingSupport = ofState(rawState); TracingSupport.TracingContext ctx = tracingSupport.beginValidation(); return whenCompleted((result, t) -> ctx.onEnd()); } diff --git a/src/main/java/graphql/execution/instrumentation/tracing/TracingSupport.java b/src/main/java/graphql/execution/instrumentation/tracing/TracingSupport.java index e32a810147..4a0f97a15c 100644 --- a/src/main/java/graphql/execution/instrumentation/tracing/TracingSupport.java +++ b/src/main/java/graphql/execution/instrumentation/tracing/TracingSupport.java @@ -1,5 +1,6 @@ package graphql.execution.instrumentation.tracing; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; import graphql.execution.ExecutionStepInfo; import graphql.execution.instrumentation.InstrumentationState; @@ -7,7 +8,6 @@ import java.time.Instant; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -140,15 +140,12 @@ public Map snapshotTracingData() { } private Object copyMap(Map map) { - Map mapCopy = new LinkedHashMap<>(); - mapCopy.putAll(map); - return mapCopy; - + return new LinkedHashMap<>(map); } private Map executionData() { Map map = new LinkedHashMap<>(); - List> list = new ArrayList<>(fieldData); + List> list = ImmutableList.copyOf(fieldData); map.put("resolvers", list); return map; } diff --git a/src/main/java/graphql/execution/nextgen/BatchedDataFetcher.java b/src/main/java/graphql/execution/nextgen/BatchedDataFetcher.java deleted file mode 100644 index 15252da80a..0000000000 --- a/src/main/java/graphql/execution/nextgen/BatchedDataFetcher.java +++ /dev/null @@ -1,8 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.schema.DataFetcher; - -@Internal -public interface BatchedDataFetcher extends DataFetcher { -} diff --git a/src/main/java/graphql/execution/nextgen/BatchedExecutionStrategy.java b/src/main/java/graphql/execution/nextgen/BatchedExecutionStrategy.java deleted file mode 100644 index e97b7b7a79..0000000000 --- a/src/main/java/graphql/execution/nextgen/BatchedExecutionStrategy.java +++ /dev/null @@ -1,147 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.Async; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.ExecutionStepInfoFactory; -import graphql.execution.FetchedValue; -import graphql.execution.MergedField; -import graphql.execution.MergedSelectionSet; -import graphql.execution.nextgen.result.ExecutionResultNode; -import graphql.execution.nextgen.result.ObjectExecutionResultNode; -import graphql.execution.nextgen.result.ResultNodesUtil; -import graphql.execution.nextgen.result.RootExecutionResultNode; -import graphql.execution.nextgen.result.UnresolvedObjectResultNode; -import graphql.util.FpKit; -import graphql.util.NodeMultiZipper; -import graphql.util.NodeZipper; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; - -import static graphql.Assert.assertNotEmpty; -import static graphql.Assert.assertTrue; -import static graphql.execution.nextgen.result.ResultNodeAdapter.RESULT_NODE_ADAPTER; -import static graphql.util.FpKit.flatList; -import static graphql.util.FpKit.map; -import static graphql.util.FpKit.mapEntries; -import static graphql.util.FpKit.transposeMatrix; -import static java.util.concurrent.CompletableFuture.completedFuture; - -@Internal -public class BatchedExecutionStrategy implements ExecutionStrategy { - - ExecutionStepInfoFactory executionInfoFactory = new ExecutionStepInfoFactory(); - ValueFetcher valueFetcher = new ValueFetcher(); - - FetchedValueAnalyzer fetchedValueAnalyzer = new FetchedValueAnalyzer(); - ExecutionStrategyUtil util = new ExecutionStrategyUtil(); - - - @Override - public CompletableFuture execute(ExecutionContext executionContext, FieldSubSelection fieldSubSelection) { - CompletableFuture rootCF = Async.each(util.fetchSubSelection(executionContext, fieldSubSelection)) - .thenApply(RootExecutionResultNode::new); - - return rootCF.thenCompose(rootNode -> { - NodeMultiZipper unresolvedNodes = ResultNodesUtil.getUnresolvedNodes(rootNode); - return nextStep(executionContext, unresolvedNodes); - }) - .thenApply(multiZipper -> multiZipper.toRootNode()) - .thenApply(RootExecutionResultNode.class::cast); - } - - - private CompletableFuture> nextStep(ExecutionContext executionContext, NodeMultiZipper multizipper) { - NodeMultiZipper nextUnresolvedNodes = ResultNodesUtil.getUnresolvedNodes(multizipper.toRootNode()); - if (nextUnresolvedNodes.getZippers().size() == 0) { - return completedFuture(nextUnresolvedNodes); - } - List> groups = groupNodesIntoBatches(nextUnresolvedNodes); - return resolveNodes(executionContext, groups).thenCompose(next -> nextStep(executionContext, next)); - } - - // all multizipper have the same root - private CompletableFuture> resolveNodes(ExecutionContext executionContext, List> unresolvedNodes) { - assertNotEmpty(unresolvedNodes, "unresolvedNodes can't be empty"); - ExecutionResultNode commonRoot = unresolvedNodes.get(0).getCommonRoot(); - CompletableFuture>>> listListCF = Async.flatMap(unresolvedNodes, - executionResultMultiZipper -> fetchAndAnalyze(executionContext, executionResultMultiZipper.getZippers())); - - return flatList(listListCF).thenApply(zippers -> new NodeMultiZipper(commonRoot, zippers, RESULT_NODE_ADAPTER)); - } - - private List> groupNodesIntoBatches(NodeMultiZipper unresolvedZipper) { - Map>> zipperBySubSelection = FpKit.groupingBy(unresolvedZipper.getZippers(), - (executionResultZipper -> executionResultZipper.getCurNode().getMergedField())); - return mapEntries(zipperBySubSelection, (key, value) -> new NodeMultiZipper(unresolvedZipper.getCommonRoot(), value, RESULT_NODE_ADAPTER)); - } - - private CompletableFuture>> fetchAndAnalyze(ExecutionContext executionContext, List> unresolvedNodes) { - assertTrue(unresolvedNodes.size() > 0, "unresolvedNodes can't be empty"); - - List fieldSubSelections = map(unresolvedNodes, - node -> util.createFieldSubSelection(executionContext, node.getCurNode().getExecutionStepInfo(), node.getCurNode().getResolvedValue())); - - //constrain: all fieldSubSelections have the same mergedSelectionSet - MergedSelectionSet mergedSelectionSet = fieldSubSelections.get(0).getMergedSelectionSet(); - - List>> fetchedValues = batchFetchForEachSubField(executionContext, fieldSubSelections, mergedSelectionSet); - - return mapBatchedResultsBack(unresolvedNodes, fetchedValues); - } - - private CompletableFuture>> mapBatchedResultsBack(List> unresolvedNodes, List>> fetchedValues) { - return Async.each(fetchedValues).thenApply(fetchedValuesMatrix -> { - List> result = new ArrayList<>(); - List> newChildsPerNode = transposeMatrix(fetchedValuesMatrix); - - for (int i = 0; i < newChildsPerNode.size(); i++) { - NodeZipper unresolvedNodeZipper = unresolvedNodes.get(i); - List fetchedValuesForNode = newChildsPerNode.get(i); - NodeZipper resolvedZipper = resolveZipper(unresolvedNodeZipper, fetchedValuesForNode); - result.add(resolvedZipper); - } - return result; - }); - } - - private List>> batchFetchForEachSubField(ExecutionContext executionContext, - List fieldSubSelections, - MergedSelectionSet mergedSelectionSet) { - List sources = map(fieldSubSelections, FieldSubSelection::getSource); - return mapEntries(mergedSelectionSet.getSubFields(), (name, mergedField) -> { - List newExecutionStepInfos = newExecutionInfos(executionContext, fieldSubSelections, mergedField); - return valueFetcher - .fetchBatchedValues(executionContext, sources, mergedField, newExecutionStepInfos) - .thenApply(fetchValue -> analyseValues(executionContext, fetchValue, newExecutionStepInfos)); - }); - } - - private List newExecutionInfos(ExecutionContext executionContext, List fieldSubSelections, MergedField mergedField) { - return map(fieldSubSelections, - subSelection -> executionInfoFactory.newExecutionStepInfoForSubField(executionContext, mergedField, subSelection.getExecutionStepInfo())); - } - - private NodeZipper resolveZipper(NodeZipper unresolvedNodeZipper, List fetchedValuesForNode) { - UnresolvedObjectResultNode unresolvedNode = (UnresolvedObjectResultNode) unresolvedNodeZipper.getCurNode(); - List newChildren = util.fetchedValueAnalysisToNodes(fetchedValuesForNode); - ObjectExecutionResultNode newNode = unresolvedNode.withNewChildren(newChildren); - return unresolvedNodeZipper.withNewNode(newNode); - } - - - private List analyseValues(ExecutionContext executionContext, List fetchedValues, List executionInfos) { - List result = new ArrayList<>(); - for (int i = 0; i < fetchedValues.size(); i++) { - FetchedValue fetchedValue = fetchedValues.get(i); - ExecutionStepInfo executionStepInfo = executionInfos.get(i); - FetchedValueAnalysis fetchedValueAnalysis = fetchedValueAnalyzer.analyzeFetchedValue(executionContext, fetchedValue, executionStepInfo); - result.add(fetchedValueAnalysis); - } - return result; - } -} diff --git a/src/main/java/graphql/execution/nextgen/Common.java b/src/main/java/graphql/execution/nextgen/Common.java deleted file mode 100644 index d7e7772161..0000000000 --- a/src/main/java/graphql/execution/nextgen/Common.java +++ /dev/null @@ -1,44 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.MissingRootTypeException; -import graphql.language.OperationDefinition; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLSchema; - -import static graphql.Assert.assertShouldNeverHappen; -import static graphql.language.OperationDefinition.Operation.MUTATION; -import static graphql.language.OperationDefinition.Operation.QUERY; -import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION; - -@Internal -public class Common { - - public static GraphQLObjectType getOperationRootType(GraphQLSchema graphQLSchema, OperationDefinition operationDefinition) { - OperationDefinition.Operation operation = operationDefinition.getOperation(); - if (operation == MUTATION) { - GraphQLObjectType mutationType = graphQLSchema.getMutationType(); - if (mutationType == null) { - throw new MissingRootTypeException("Schema is not configured for mutations.", operationDefinition.getSourceLocation()); - } - return mutationType; - } else if (operation == QUERY) { - GraphQLObjectType queryType = graphQLSchema.getQueryType(); - if (queryType == null) { - throw new MissingRootTypeException("Schema does not define the required query root type.", operationDefinition.getSourceLocation()); - } - return queryType; - } else if (operation == SUBSCRIPTION) { - GraphQLObjectType subscriptionType = graphQLSchema.getSubscriptionType(); - if (subscriptionType == null) { - throw new MissingRootTypeException("Schema is not configured for subscriptions.", operationDefinition.getSourceLocation()); - } - return subscriptionType; - } else { - return assertShouldNeverHappen("Unhandled case. An extra operation enum has been added without code support"); - } - } - - - -} diff --git a/src/main/java/graphql/execution/nextgen/DefaultExecutionStrategy.java b/src/main/java/graphql/execution/nextgen/DefaultExecutionStrategy.java deleted file mode 100644 index 43de895c94..0000000000 --- a/src/main/java/graphql/execution/nextgen/DefaultExecutionStrategy.java +++ /dev/null @@ -1,68 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.nextgen.result.ExecutionResultNode; -import graphql.execution.nextgen.result.ObjectExecutionResultNode; -import graphql.execution.nextgen.result.ResolvedValue; -import graphql.execution.nextgen.result.ResultNodesUtil; -import graphql.execution.nextgen.result.RootExecutionResultNode; -import graphql.util.NodeMultiZipper; -import graphql.util.NodeZipper; - -import java.util.List; -import java.util.concurrent.CompletableFuture; - -import static graphql.execution.Async.each; -import static graphql.execution.Async.mapCompose; -import static graphql.util.FpKit.map; - -@Internal -public class DefaultExecutionStrategy implements ExecutionStrategy { - - ExecutionStrategyUtil util = new ExecutionStrategyUtil(); - - - /* - * the fundamental algorithm is: - * - fetch sub selection and analyze it - * - convert the fetched value analysis into result node - * - get all unresolved result nodes and resolve the sub selection (start again recursively) - */ - @Override - public CompletableFuture execute(ExecutionContext context, FieldSubSelection fieldSubSelection) { - return resolveSubSelection(context, fieldSubSelection) - .thenApply(RootExecutionResultNode::new); - } - - private CompletableFuture> resolveSubSelection(ExecutionContext executionContext, FieldSubSelection fieldSubSelection) { - List> namedNodesCFList = - mapCompose(util.fetchSubSelection(executionContext, fieldSubSelection), node -> resolveAllChildNodes(executionContext, node)); - return each(namedNodesCFList); - } - - private CompletableFuture resolveAllChildNodes(ExecutionContext context, ExecutionResultNode node) { - NodeMultiZipper unresolvedNodes = ResultNodesUtil.getUnresolvedNodes(node); - List>> resolvedNodes = map(unresolvedNodes.getZippers(), unresolvedNode -> resolveNode(context, unresolvedNode)); - return resolvedNodesToResultNode(unresolvedNodes, resolvedNodes); - } - - private CompletableFuture> resolveNode(ExecutionContext executionContext, NodeZipper unresolvedNode) { - ExecutionStepInfo executionStepInfo = unresolvedNode.getCurNode().getExecutionStepInfo(); - ResolvedValue resolvedValue = unresolvedNode.getCurNode().getResolvedValue(); - FieldSubSelection fieldSubSelection = util.createFieldSubSelection(executionContext, executionStepInfo, resolvedValue); - return resolveSubSelection(executionContext, fieldSubSelection) - .thenApply(resolvedChildMap -> unresolvedNode.withNewNode(new ObjectExecutionResultNode(executionStepInfo, resolvedValue, resolvedChildMap))); - } - - private CompletableFuture resolvedNodesToResultNode( - NodeMultiZipper unresolvedNodes, - List>> resolvedNodes) { - return each(resolvedNodes) - .thenApply(unresolvedNodes::withReplacedZippers) - .thenApply(NodeMultiZipper::toRootNode); - } - - -} diff --git a/src/main/java/graphql/execution/nextgen/Execution.java b/src/main/java/graphql/execution/nextgen/Execution.java deleted file mode 100644 index 38a23a41ed..0000000000 --- a/src/main/java/graphql/execution/nextgen/Execution.java +++ /dev/null @@ -1,46 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.ExecutionInput; -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.Async; -import graphql.execution.ExecutionId; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.nextgen.result.ResultNodesUtil; -import graphql.language.Document; -import graphql.schema.GraphQLSchema; - -import java.util.concurrent.CompletableFuture; - -@Internal -public class Execution { - - ExecutionHelper executionHelper = new ExecutionHelper(); - - public CompletableFuture execute(ExecutionStrategy executionStrategy, - Document document, - GraphQLSchema graphQLSchema, - ExecutionId executionId, - ExecutionInput executionInput, - InstrumentationState instrumentationState) { - ExecutionHelper.ExecutionData executionData; - try { - executionData = executionHelper.createExecutionData(document, graphQLSchema, executionId, executionInput, instrumentationState); - } catch (RuntimeException rte) { - if (rte instanceof GraphQLError) { - return CompletableFuture.completedFuture(new ExecutionResultImpl((GraphQLError) rte)); - } - return Async.exceptionallyCompletedFuture(rte); - } - - try { - return executionStrategy - .execute(executionData.executionContext, executionData.fieldSubSelection) - .thenApply(ResultNodesUtil::toExecutionResult); - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/graphql/execution/nextgen/ExecutionHelper.java b/src/main/java/graphql/execution/nextgen/ExecutionHelper.java deleted file mode 100644 index c7b9948e70..0000000000 --- a/src/main/java/graphql/execution/nextgen/ExecutionHelper.java +++ /dev/null @@ -1,91 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.ExecutionInput; -import graphql.Internal; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionId; -import graphql.execution.ExecutionPath; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.FieldCollector; -import graphql.execution.FieldCollectorParameters; -import graphql.execution.MergedSelectionSet; -import graphql.execution.ValuesResolver; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.language.Document; -import graphql.language.FragmentDefinition; -import graphql.language.NodeUtil; -import graphql.language.OperationDefinition; -import graphql.language.VariableDefinition; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLSchema; - -import java.util.List; -import java.util.Map; - -import static graphql.execution.ExecutionContextBuilder.newExecutionContextBuilder; -import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; - -@Internal -public class ExecutionHelper { - - private final FieldCollector fieldCollector = new FieldCollector(); - - public static class ExecutionData { - public ExecutionContext executionContext; - public FieldSubSelection fieldSubSelection; - } - - public ExecutionData createExecutionData(Document document, - GraphQLSchema graphQLSchema, - ExecutionId executionId, - ExecutionInput executionInput, - InstrumentationState instrumentationState) { - - NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); - Map fragmentsByName = getOperationResult.fragmentsByName; - OperationDefinition operationDefinition = getOperationResult.operationDefinition; - - ValuesResolver valuesResolver = new ValuesResolver(); - Map inputVariables = executionInput.getVariables(); - List variableDefinitions = operationDefinition.getVariableDefinitions(); - - Map coercedVariables; - coercedVariables = valuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables); - - ExecutionContext executionContext = newExecutionContextBuilder() - .executionId(executionId) - .instrumentationState(instrumentationState) - .graphQLSchema(graphQLSchema) - .context(executionInput.getContext()) - .root(executionInput.getRoot()) - .fragmentsByName(fragmentsByName) - .variables(coercedVariables) - .document(document) - .operationDefinition(operationDefinition) - .build(); - - GraphQLObjectType operationRootType; - operationRootType = Common.getOperationRootType(executionContext.getGraphQLSchema(), operationDefinition); - FieldCollectorParameters collectorParameters = FieldCollectorParameters.newParameters() - .schema(executionContext.getGraphQLSchema()) - .objectType(operationRootType) - .fragments(executionContext.getFragmentsByName()) - .variables(executionContext.getVariables()) - .build(); - MergedSelectionSet mergedSelectionSet = fieldCollector.collectFields(collectorParameters, operationDefinition.getSelectionSet()); - ExecutionStepInfo executionInfo = newExecutionStepInfo().type(operationRootType).path(ExecutionPath.rootPath()).build(); - - FieldSubSelection fieldSubSelection = FieldSubSelection.newFieldSubSelection() - .source(executionInput.getRoot()) - .localContext(executionInput.getContext()) - .mergedSelectionSet(mergedSelectionSet) - .executionInfo(executionInfo) - .build(); - - ExecutionData executionData = new ExecutionData(); - executionData.executionContext = executionContext; - executionData.fieldSubSelection = fieldSubSelection; - return executionData; - - } -} diff --git a/src/main/java/graphql/execution/nextgen/ExecutionStrategy.java b/src/main/java/graphql/execution/nextgen/ExecutionStrategy.java deleted file mode 100644 index 21d930466b..0000000000 --- a/src/main/java/graphql/execution/nextgen/ExecutionStrategy.java +++ /dev/null @@ -1,14 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.ExecutionContext; -import graphql.execution.nextgen.result.RootExecutionResultNode; - -import java.util.concurrent.CompletableFuture; - -@Internal -public interface ExecutionStrategy { - - CompletableFuture execute(ExecutionContext context, FieldSubSelection fieldSubSelection); - -} diff --git a/src/main/java/graphql/execution/nextgen/ExecutionStrategyUtil.java b/src/main/java/graphql/execution/nextgen/ExecutionStrategyUtil.java deleted file mode 100644 index aae05415a4..0000000000 --- a/src/main/java/graphql/execution/nextgen/ExecutionStrategyUtil.java +++ /dev/null @@ -1,98 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.Async; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.ExecutionStepInfoFactory; -import graphql.execution.FetchedValue; -import graphql.execution.FieldCollector; -import graphql.execution.FieldCollectorParameters; -import graphql.execution.MergedField; -import graphql.execution.MergedSelectionSet; -import graphql.execution.ResolveType; -import graphql.execution.nextgen.result.ExecutionResultNode; -import graphql.execution.nextgen.result.ResolvedValue; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLOutputType; -import graphql.util.FpKit; - -import java.util.List; -import java.util.concurrent.CompletableFuture; - -import static graphql.execution.FieldCollectorParameters.newParameters; - -@Internal -public class ExecutionStrategyUtil { - - ExecutionStepInfoFactory executionStepInfoFactory = new ExecutionStepInfoFactory(); - FetchedValueAnalyzer fetchedValueAnalyzer = new FetchedValueAnalyzer(); - ValueFetcher valueFetcher = new ValueFetcher(); - ResultNodesCreator resultNodesCreator = new ResultNodesCreator(); - ResolveType resolveType = new ResolveType(); - FieldCollector fieldCollector = new FieldCollector(); - - public List> fetchSubSelection(ExecutionContext executionContext, FieldSubSelection fieldSubSelection) { - List> fetchedValueAnalysisList = fetchAndAnalyze(executionContext, fieldSubSelection); - return fetchedValueAnalysisToNodesAsync(fetchedValueAnalysisList); - } - - private List> fetchAndAnalyze(ExecutionContext context, FieldSubSelection fieldSubSelection) { - - return FpKit.map(fieldSubSelection.getMergedSelectionSet().getSubFieldsList(), - mergedField -> fetchAndAnalyzeField(context, fieldSubSelection.getSource(), fieldSubSelection.getLocalContext(), mergedField, fieldSubSelection.getExecutionStepInfo())); - - } - - private CompletableFuture fetchAndAnalyzeField(ExecutionContext context, Object source, Object localContext, MergedField mergedField, - ExecutionStepInfo executionStepInfo) { - - ExecutionStepInfo newExecutionStepInfo = executionStepInfoFactory.newExecutionStepInfoForSubField(context, mergedField, executionStepInfo); - return valueFetcher - .fetchValue(context, source, localContext, mergedField, newExecutionStepInfo) - .thenApply(fetchValue -> analyseValue(context, fetchValue, newExecutionStepInfo)); - } - - private List> fetchedValueAnalysisToNodesAsync(List> list) { - return Async.map(list, fetchedValueAnalysis -> resultNodesCreator.createResultNode(fetchedValueAnalysis)); - } - - public List fetchedValueAnalysisToNodes(List fetchedValueAnalysisList) { - return FpKit.map(fetchedValueAnalysisList, fetchedValueAnalysis -> resultNodesCreator.createResultNode(fetchedValueAnalysis)); - } - - - private FetchedValueAnalysis analyseValue(ExecutionContext executionContext, FetchedValue fetchedValue, ExecutionStepInfo executionInfo) { - FetchedValueAnalysis fetchedValueAnalysis = fetchedValueAnalyzer.analyzeFetchedValue(executionContext, fetchedValue, executionInfo); - return fetchedValueAnalysis; - } - - public FieldSubSelection createFieldSubSelection(ExecutionContext executionContext, ExecutionStepInfo executionInfo, ResolvedValue resolvedValue) { - MergedField field = executionInfo.getField(); - Object source = resolvedValue.getCompletedValue(); - Object localContext = resolvedValue.getLocalContext(); - - GraphQLOutputType sourceType = executionInfo.getUnwrappedNonNullType(); - GraphQLObjectType resolvedObjectType = resolveType.resolveType(executionContext, field, source, executionInfo.getArguments(), sourceType); - FieldCollectorParameters collectorParameters = newParameters() - .schema(executionContext.getGraphQLSchema()) - .objectType(resolvedObjectType) - .fragments(executionContext.getFragmentsByName()) - .variables(executionContext.getVariables()) - .build(); - MergedSelectionSet subFields = fieldCollector.collectFields(collectorParameters, - executionInfo.getField()); - - // it is not really a new step but rather a refinement - ExecutionStepInfo newExecutionStepInfoWithResolvedType = executionInfo.changeTypeWithPreservedNonNull(resolvedObjectType); - - return FieldSubSelection.newFieldSubSelection() - .source(source) - .localContext(localContext) - .mergedSelectionSet(subFields) - .executionInfo(newExecutionStepInfoWithResolvedType) - .build(); - } - - -} diff --git a/src/main/java/graphql/execution/nextgen/FetchedValueAnalysis.java b/src/main/java/graphql/execution/nextgen/FetchedValueAnalysis.java deleted file mode 100644 index 6b72c40f11..0000000000 --- a/src/main/java/graphql/execution/nextgen/FetchedValueAnalysis.java +++ /dev/null @@ -1,200 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.FetchedValue; -import graphql.execution.MergedField; -import graphql.schema.GraphQLObjectType; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import static graphql.Assert.assertNotNull; - -@Internal -public class FetchedValueAnalysis { - - public enum FetchedValueType { - OBJECT, - LIST, - SCALAR, - ENUM, - DEFER - } - - private final FetchedValueType valueType; - private final List errors; - // not applicable for LIST - private final Object completedValue; - private final boolean nullValue; - // only available for LIST - private final List children; - // only for object - private final GraphQLObjectType resolvedType; - private final ExecutionStepInfo executionStepInfo; - // for LIST this is the whole list - private final FetchedValue fetchedValue; - - private FetchedValueAnalysis(Builder builder) { - this.errors = new ArrayList<>(builder.errors); - this.errors.addAll(builder.fetchedValue.getErrors()); - this.valueType = assertNotNull(builder.valueType); - this.completedValue = builder.completedValue; - this.nullValue = builder.nullValue; - this.children = builder.children; - this.resolvedType = builder.resolvedType; - this.executionStepInfo = assertNotNull(builder.executionInfo); - this.fetchedValue = assertNotNull(builder.fetchedValue); - } - - public FetchedValueType getValueType() { - return valueType; - } - - public List getErrors() { - return errors; - } - - public Object getCompletedValue() { - return completedValue; - } - - public List getChildren() { - return children; - } - - public boolean isNullValue() { - return nullValue; - } - - public FetchedValue getFetchedValue() { - return fetchedValue; - } - - public FetchedValueAnalysis transfrom(Consumer builderConsumer) { - Builder builder = new Builder(this); - builderConsumer.accept(builder); - return builder.build(); - } - - public static Builder newFetchedValueAnalysis() { - return new Builder(); - } - - public static Builder newFetchedValueAnalysis(FetchedValueType valueType) { - return new Builder().valueType(valueType); - } - - public static Builder newFetchedValueAnalysis(FetchedValueAnalysis existing) { - return new Builder(existing); - } - - public ExecutionStepInfo getExecutionStepInfo() { - return executionStepInfo; - } - - public GraphQLObjectType getResolvedType() { - return resolvedType; - } - - public MergedField getField() { - return executionStepInfo.getField(); - } - - public String getResultKey() { - return executionStepInfo.getResultKey(); - } - - @Override - public String toString() { - return "{" + - "valueType=" + valueType + - ", completedValue=" + completedValue + - ", errors=" + errors + - ", children=" + children + - ", stepInfo=" + executionStepInfo + - ", nullValue=" + nullValue + - ", resolvedType=" + resolvedType + - ", fetchedValue=" + fetchedValue + - '}'; - } - - public static final class Builder { - private FetchedValueType valueType; - private final List errors = new ArrayList<>(); - private Object completedValue; - private FetchedValue fetchedValue; - private List children; - private GraphQLObjectType resolvedType; - private boolean nullValue; - private ExecutionStepInfo executionInfo; - - private Builder() { - } - - private Builder(FetchedValueAnalysis existing) { - valueType = existing.getValueType(); - errors.addAll(existing.getErrors()); - completedValue = existing.getCompletedValue(); - fetchedValue = existing.getFetchedValue(); - children = existing.getChildren(); - nullValue = existing.isNullValue(); - resolvedType = existing.getResolvedType(); - executionInfo = existing.getExecutionStepInfo(); - } - - - public Builder valueType(FetchedValueType val) { - valueType = val; - return this; - } - - public Builder errors(List errors) { - this.errors.addAll(errors); - return this; - } - - public Builder error(GraphQLError error) { - this.errors.add(error); - return this; - } - - - public Builder completedValue(Object completedValue) { - this.completedValue = completedValue; - return this; - } - - public Builder children(List children) { - this.children = children; - return this; - } - - - public Builder nullValue() { - this.nullValue = true; - return this; - } - - public Builder resolvedType(GraphQLObjectType resolvedType) { - this.resolvedType = resolvedType; - return this; - } - - public Builder executionStepInfo(ExecutionStepInfo executionInfo) { - this.executionInfo = executionInfo; - return this; - } - - public Builder fetchedValue(FetchedValue fetchedValue) { - this.fetchedValue = fetchedValue; - return this; - } - - public FetchedValueAnalysis build() { - return new FetchedValueAnalysis(this); - } - } -} diff --git a/src/main/java/graphql/execution/nextgen/FetchedValueAnalyzer.java b/src/main/java/graphql/execution/nextgen/FetchedValueAnalyzer.java deleted file mode 100644 index d29014fac3..0000000000 --- a/src/main/java/graphql/execution/nextgen/FetchedValueAnalyzer.java +++ /dev/null @@ -1,210 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.SerializationError; -import graphql.TypeMismatchError; -import graphql.UnresolvedTypeError; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.ExecutionStepInfoFactory; -import graphql.execution.FetchedValue; -import graphql.execution.MergedField; -import graphql.execution.NonNullableFieldWasNullException; -import graphql.execution.ResolveType; -import graphql.execution.UnresolvedTypeException; -import graphql.schema.CoercingSerializeException; -import graphql.schema.GraphQLEnumType; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLScalarType; -import graphql.schema.GraphQLType; -import graphql.util.FpKit; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static graphql.execution.nextgen.FetchedValueAnalysis.FetchedValueType.ENUM; -import static graphql.execution.nextgen.FetchedValueAnalysis.FetchedValueType.LIST; -import static graphql.execution.nextgen.FetchedValueAnalysis.FetchedValueType.OBJECT; -import static graphql.execution.nextgen.FetchedValueAnalysis.FetchedValueType.SCALAR; -import static graphql.execution.nextgen.FetchedValueAnalysis.newFetchedValueAnalysis; -import static graphql.schema.GraphQLTypeUtil.isList; - -@Internal -public class FetchedValueAnalyzer { - - ExecutionStepInfoFactory executionInfoFactory = new ExecutionStepInfoFactory(); - ResolveType resolveType = new ResolveType(); - - - /* - * scalar: the value, null and/or error - * enum: same as scalar - * list: list of X: X can be list again, list of scalars or enum or objects - */ - public FetchedValueAnalysis analyzeFetchedValue(ExecutionContext executionContext, FetchedValue fetchedValue, ExecutionStepInfo executionInfo) throws NonNullableFieldWasNullException { - return analyzeFetchedValueImpl(executionContext, fetchedValue, fetchedValue.getFetchedValue(), executionInfo); - } - - private FetchedValueAnalysis analyzeFetchedValueImpl(ExecutionContext executionContext, FetchedValue fetchedValue, Object toAnalyze, ExecutionStepInfo executionInfo) throws NonNullableFieldWasNullException { - GraphQLType fieldType = executionInfo.getUnwrappedNonNullType(); - MergedField field = executionInfo.getField(); - - if (isList(fieldType)) { - return analyzeList(executionContext, fetchedValue, toAnalyze, executionInfo); - } else if (fieldType instanceof GraphQLScalarType) { - return analyzeScalarValue(fetchedValue, toAnalyze, (GraphQLScalarType) fieldType, executionInfo); - } else if (fieldType instanceof GraphQLEnumType) { - return analyzeEnumValue(fetchedValue, toAnalyze, (GraphQLEnumType) fieldType, executionInfo); - } - - // when we are here, we have a complex type: Interface, Union or Object - // and we must go deeper - // - if (toAnalyze == null) { - return newFetchedValueAnalysis(OBJECT) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .build(); - } - try { - GraphQLObjectType resolvedObjectType = resolveType.resolveType(executionContext, field, toAnalyze, executionInfo.getArguments(), fieldType); - return newFetchedValueAnalysis(OBJECT) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .completedValue(toAnalyze) - .resolvedType(resolvedObjectType) - .build(); - } catch (UnresolvedTypeException ex) { - return handleUnresolvedTypeProblem(fetchedValue, executionInfo, ex); - } - } - - - private FetchedValueAnalysis handleUnresolvedTypeProblem(FetchedValue fetchedValue, ExecutionStepInfo executionInfo, UnresolvedTypeException e) { - UnresolvedTypeError error = new UnresolvedTypeError(executionInfo.getPath(), executionInfo, e); - return newFetchedValueAnalysis(OBJECT) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .error(error) - .build(); - } - - private FetchedValueAnalysis analyzeList(ExecutionContext executionContext, FetchedValue fetchedValue, Object toAnalyze, ExecutionStepInfo executionInfo) { - if (toAnalyze == null) { - return newFetchedValueAnalysis(LIST) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .build(); - } - - if (toAnalyze.getClass().isArray() || toAnalyze instanceof Iterable) { - Collection collection = FpKit.toCollection(toAnalyze); - return analyzeIterable(executionContext, fetchedValue, collection, executionInfo); - } else { - TypeMismatchError error = new TypeMismatchError(executionInfo.getPath(), executionInfo.getType()); - return newFetchedValueAnalysis(LIST) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .error(error) - .build(); - } - - } - - private FetchedValueAnalysis analyzeIterable(ExecutionContext executionContext, FetchedValue fetchedValue, Iterable iterableValues, ExecutionStepInfo executionInfo) { - - Collection values = FpKit.toCollection(iterableValues); - List children = new ArrayList<>(); - int index = 0; - for (Object item : values) { - ExecutionStepInfo executionInfoForListElement = executionInfoFactory.newExecutionStepInfoForListElement(executionInfo, index); - children.add(analyzeFetchedValueImpl(executionContext, fetchedValue, item, executionInfoForListElement)); - index++; - } - return newFetchedValueAnalysis(LIST) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .children(children) - .build(); - - } - - - private FetchedValueAnalysis analyzeScalarValue(FetchedValue fetchedValue, Object toAnalyze, GraphQLScalarType scalarType, ExecutionStepInfo executionInfo) { - if (toAnalyze == null) { - return newFetchedValueAnalysis(SCALAR) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .build(); - } - Object serialized; - try { - serialized = serializeScalarValue(toAnalyze, scalarType); - } catch (CoercingSerializeException e) { - SerializationError error = new SerializationError(executionInfo.getPath(), e); - return newFetchedValueAnalysis(SCALAR) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .error(error) - .nullValue() - .build(); - } - - // TODO: fix that: this should not be handled here - //6.6.1 http://facebook.github.io/graphql/#sec-Field-entries - if (serialized instanceof Double && ((Double) serialized).isNaN()) { - return newFetchedValueAnalysis(SCALAR) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .build(); - } - // handle non null - - return newFetchedValueAnalysis(SCALAR) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .completedValue(serialized) - .build(); - } - - protected Object serializeScalarValue(Object toAnalyze, GraphQLScalarType scalarType) throws CoercingSerializeException { - return scalarType.getCoercing().serialize(toAnalyze); - } - - private FetchedValueAnalysis analyzeEnumValue(FetchedValue fetchedValue, Object toAnalyze, GraphQLEnumType enumType, ExecutionStepInfo executionInfo) { - if (toAnalyze == null) { - return newFetchedValueAnalysis(SCALAR) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .build(); - - } - Object serialized; - try { - serialized = enumType.serialize(toAnalyze); - } catch (CoercingSerializeException e) { - SerializationError error = new SerializationError(executionInfo.getPath(), e); - return newFetchedValueAnalysis(SCALAR) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .nullValue() - .error(error) - .build(); - } - // handle non null values - return newFetchedValueAnalysis(ENUM) - .fetchedValue(fetchedValue) - .executionStepInfo(executionInfo) - .completedValue(serialized) - .build(); - } - -} diff --git a/src/main/java/graphql/execution/nextgen/FieldSubSelection.java b/src/main/java/graphql/execution/nextgen/FieldSubSelection.java deleted file mode 100644 index 983432bd1a..0000000000 --- a/src/main/java/graphql/execution/nextgen/FieldSubSelection.java +++ /dev/null @@ -1,97 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.MergedField; -import graphql.execution.MergedSelectionSet; - -import java.util.Map; - - -/** - * A map from name to List of Field representing the actual sub selections (during execution) of a Field with Fragments - * evaluated and conditional directives considered. - */ -@Internal -public class FieldSubSelection { - - private final Object source; - private final Object localContext; - // the type of this must be objectType and is the parent executionStepInfo for all mergedSelectionSet - private final ExecutionStepInfo executionInfo; - private final MergedSelectionSet mergedSelectionSet; - - private FieldSubSelection(Builder builder) { - this.source = builder.source; - this.localContext = builder.localContext; - this.executionInfo = builder.executionInfo; - this.mergedSelectionSet = builder.mergedSelectionSet; - } - - public Object getSource() { - return source; - } - - public Object getLocalContext() { - return localContext; - } - - public Map getSubFields() { - return mergedSelectionSet.getSubFields(); - } - - public MergedSelectionSet getMergedSelectionSet() { - return mergedSelectionSet; - } - - public ExecutionStepInfo getExecutionStepInfo() { - return executionInfo; - } - - @Override - public String toString() { - return "FieldSubSelection{" + - "source=" + source + - ", executionInfo=" + executionInfo + - ", mergedSelectionSet" + mergedSelectionSet + - '}'; - } - - public static Builder newFieldSubSelection() { - return new Builder(); - } - - public static class Builder { - private Object source; - private Object localContext; - private ExecutionStepInfo executionInfo; - private MergedSelectionSet mergedSelectionSet; - - public Builder source(Object source) { - this.source = source; - return this; - } - - public Builder localContext(Object localContext) { - this.localContext = localContext; - return this; - } - - public Builder executionInfo(ExecutionStepInfo executionInfo) { - this.executionInfo = executionInfo; - return this; - } - - public Builder mergedSelectionSet(MergedSelectionSet mergedSelectionSet) { - this.mergedSelectionSet = mergedSelectionSet; - return this; - } - - public FieldSubSelection build() { - return new FieldSubSelection(this); - } - - - } - -} diff --git a/src/main/java/graphql/execution/nextgen/ResultNodesCreator.java b/src/main/java/graphql/execution/nextgen/ResultNodesCreator.java deleted file mode 100644 index 78cd28afe8..0000000000 --- a/src/main/java/graphql/execution/nextgen/ResultNodesCreator.java +++ /dev/null @@ -1,70 +0,0 @@ -package graphql.execution.nextgen; - -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.NonNullableFieldWasNullException; -import graphql.execution.nextgen.result.ExecutionResultNode; -import graphql.execution.nextgen.result.LeafExecutionResultNode; -import graphql.execution.nextgen.result.ListExecutionResultNode; -import graphql.execution.nextgen.result.ResolvedValue; -import graphql.execution.nextgen.result.UnresolvedObjectResultNode; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -import static java.util.stream.Collectors.toList; - -@Internal -public class ResultNodesCreator { - - public ExecutionResultNode createResultNode(FetchedValueAnalysis fetchedValueAnalysis) { - ResolvedValue resolvedValue = createResolvedValue(fetchedValueAnalysis); - ExecutionStepInfo executionStepInfo = fetchedValueAnalysis.getExecutionStepInfo(); - - if (fetchedValueAnalysis.isNullValue() && executionStepInfo.isNonNullType()) { - NonNullableFieldWasNullException nonNullableFieldWasNullException = new NonNullableFieldWasNullException(executionStepInfo, executionStepInfo.getPath()); - - return new LeafExecutionResultNode(executionStepInfo, resolvedValue, nonNullableFieldWasNullException); - } - if (fetchedValueAnalysis.isNullValue()) { - return new LeafExecutionResultNode(executionStepInfo, resolvedValue, null); - } - if (fetchedValueAnalysis.getValueType() == FetchedValueAnalysis.FetchedValueType.OBJECT) { - return createUnresolvedNode(fetchedValueAnalysis); - } - if (fetchedValueAnalysis.getValueType() == FetchedValueAnalysis.FetchedValueType.LIST) { - return createListResultNode(fetchedValueAnalysis); - } - return new LeafExecutionResultNode(executionStepInfo, resolvedValue, null); - } - - private ExecutionResultNode createUnresolvedNode(FetchedValueAnalysis fetchedValueAnalysis) { - return new UnresolvedObjectResultNode(fetchedValueAnalysis.getExecutionStepInfo(), createResolvedValue(fetchedValueAnalysis)); - } - - private ResolvedValue createResolvedValue(FetchedValueAnalysis fetchedValueAnalysis) { - return ResolvedValue.newResolvedValue() - .completedValue(fetchedValueAnalysis.getCompletedValue()) - .localContext(fetchedValueAnalysis.getFetchedValue().getLocalContext()) - .nullValue(fetchedValueAnalysis.isNullValue()) - .errors(fetchedValueAnalysis.getErrors()) - .build(); - } - - private Optional getFirstNonNullableException(Collection collection) { - return collection.stream() - .filter(executionResultNode -> executionResultNode.getNonNullableFieldWasNullException() != null) - .map(ExecutionResultNode::getNonNullableFieldWasNullException) - .findFirst(); - } - - private ExecutionResultNode createListResultNode(FetchedValueAnalysis fetchedValueAnalysis) { - List executionResultNodes = fetchedValueAnalysis - .getChildren() - .stream() - .map(this::createResultNode) - .collect(toList()); - return new ListExecutionResultNode(fetchedValueAnalysis.getExecutionStepInfo(), createResolvedValue(fetchedValueAnalysis), executionResultNodes); - } -} diff --git a/src/main/java/graphql/execution/nextgen/ValueFetcher.java b/src/main/java/graphql/execution/nextgen/ValueFetcher.java deleted file mode 100644 index 0f891756ed..0000000000 --- a/src/main/java/graphql/execution/nextgen/ValueFetcher.java +++ /dev/null @@ -1,227 +0,0 @@ -package graphql.execution.nextgen; - - -import graphql.Assert; -import graphql.ExceptionWhileDataFetching; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.AbsoluteGraphQLError; -import graphql.execution.Async; -import graphql.execution.DataFetcherResult; -import graphql.execution.DefaultValueUnboxer; -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionId; -import graphql.execution.ExecutionPath; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.FetchedValue; -import graphql.execution.MergedField; -import graphql.execution.ValuesResolver; -import graphql.execution.directives.QueryDirectivesImpl; -import graphql.language.Field; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; -import graphql.schema.DataFetchingFieldSelectionSet; -import graphql.schema.DataFetchingFieldSelectionSetImpl; -import graphql.schema.GraphQLCodeRegistry; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLFieldsContainer; -import graphql.schema.GraphQLOutputType; -import graphql.schema.GraphQLTypeUtil; -import graphql.util.LogKit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; -import java.util.stream.Collectors; - -import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment; -import static java.util.Collections.singletonList; - -@Internal -public class ValueFetcher { - - - ValuesResolver valuesResolver = new ValuesResolver(); - - private static final Logger log = LoggerFactory.getLogger(ValueFetcher.class); - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(ExecutionStrategy.class); - - public static final Object NULL_VALUE = new Object(); - - public ValueFetcher() { - } - - - public CompletableFuture> fetchBatchedValues(ExecutionContext executionContext, List sources, MergedField field, List executionInfos) { - ExecutionStepInfo executionStepInfo = executionInfos.get(0); - // TODO - add support for field context to batching code - Object todoLocalContext = null; - if (isDataFetcherBatched(executionContext, executionStepInfo)) { - return fetchValue(executionContext, sources, todoLocalContext, field, executionStepInfo) - .thenApply(fetchedValue -> extractBatchedValues(fetchedValue, sources.size())); - } else { - List> fetchedValues = new ArrayList<>(); - for (int i = 0; i < sources.size(); i++) { - fetchedValues.add(fetchValue(executionContext, sources.get(i), todoLocalContext, field, executionInfos.get(i))); - } - return Async.each(fetchedValues); - } - } - - @SuppressWarnings("unchecked") - private List extractBatchedValues(FetchedValue fetchedValueContainingList, int expectedSize) { - List list = (List) fetchedValueContainingList.getFetchedValue(); - Assert.assertTrue(list.size() == expectedSize, "Unexpected result size"); - List result = new ArrayList<>(); - for (int i = 0; i < list.size(); i++) { - List errors; - if (i == 0) { - errors = fetchedValueContainingList.getErrors(); - } else { - errors = Collections.emptyList(); - } - FetchedValue fetchedValue = FetchedValue.newFetchedValue() - .fetchedValue(list.get(i)) - .rawFetchedValue(fetchedValueContainingList.getRawFetchedValue()) - .errors(errors) - .localContext(fetchedValueContainingList.getLocalContext()) - .build(); - result.add(fetchedValue); - } - return result; - } - - private GraphQLFieldsContainer getFieldsContainer(ExecutionStepInfo executionStepInfo) { - GraphQLOutputType type = executionStepInfo.getParent().getType(); - return (GraphQLFieldsContainer) GraphQLTypeUtil.unwrapAll(type); - } - - private boolean isDataFetcherBatched(ExecutionContext executionContext, ExecutionStepInfo executionStepInfo) { - GraphQLFieldsContainer parentType = getFieldsContainer(executionStepInfo); - GraphQLFieldDefinition fieldDef = executionStepInfo.getFieldDefinition(); - DataFetcher dataFetcher = executionContext.getGraphQLSchema().getCodeRegistry().getDataFetcher(parentType, fieldDef); - return dataFetcher instanceof BatchedDataFetcher; - } - - public CompletableFuture fetchValue(ExecutionContext executionContext, Object source, Object localContext, MergedField sameFields, ExecutionStepInfo executionInfo) { - Field field = sameFields.getSingleField(); - GraphQLFieldDefinition fieldDef = executionInfo.getFieldDefinition(); - - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - GraphQLFieldsContainer parentType = getFieldsContainer(executionInfo); - - Map argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDef.getArguments(), field.getArguments(), executionContext.getVariables()); - - QueryDirectivesImpl queryDirectives = new QueryDirectivesImpl(sameFields, executionContext.getGraphQLSchema(), executionContext.getVariables()); - - GraphQLOutputType fieldType = fieldDef.getType(); - DataFetchingFieldSelectionSet fieldCollector = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, fieldType, sameFields); - - DataFetchingEnvironment environment = newDataFetchingEnvironment(executionContext) - .source(source) - .localContext(localContext) - .arguments(argumentValues) - .fieldDefinition(fieldDef) - .mergedField(sameFields) - .fieldType(fieldType) - .executionStepInfo(executionInfo) - .parentType(parentType) - .selectionSet(fieldCollector) - .queryDirectives(queryDirectives) - .build(); - - ExecutionId executionId = executionContext.getExecutionId(); - ExecutionPath path = executionInfo.getPath(); - return callDataFetcher(codeRegistry, parentType, fieldDef, environment, executionId, path) - .thenApply(rawFetchedValue -> FetchedValue.newFetchedValue() - .fetchedValue(rawFetchedValue) - .rawFetchedValue(rawFetchedValue) - .build()) - .exceptionally(exception -> handleExceptionWhileFetching(field, path, exception)) - .thenApply(result -> unboxPossibleDataFetcherResult(sameFields, path, result, localContext)) - .thenApply(this::unboxPossibleOptional); - } - - private FetchedValue handleExceptionWhileFetching(Field field, ExecutionPath path, Throwable exception) { - ExceptionWhileDataFetching exceptionWhileDataFetching = new ExceptionWhileDataFetching(path, exception, field.getSourceLocation()); - return FetchedValue.newFetchedValue().errors(singletonList(exceptionWhileDataFetching)).build(); - } - - private FetchedValue unboxPossibleOptional(FetchedValue result) { - return result.transform( - builder -> builder.fetchedValue(DefaultValueUnboxer.unboxValue(result.getFetchedValue())) - ); - } - - private CompletableFuture callDataFetcher(GraphQLCodeRegistry codeRegistry, GraphQLFieldsContainer parentType, GraphQLFieldDefinition fieldDef, DataFetchingEnvironment environment, ExecutionId executionId, ExecutionPath path) { - CompletableFuture result = new CompletableFuture<>(); - try { - DataFetcher dataFetcher = codeRegistry.getDataFetcher(parentType, fieldDef); - log.debug("'{}' fetching field '{}' using data fetcher '{}'...", executionId, path, dataFetcher.getClass().getName()); - Object fetchedValueRaw = dataFetcher.get(environment); - logNotSafe.debug("'{}' field '{}' fetch returned '{}'", executionId, path, fetchedValueRaw == null ? "null" : fetchedValueRaw.getClass().getName()); - handleFetchedValue(fetchedValueRaw, result); - } catch (Exception e) { - logNotSafe.debug(String.format("'%s', field '%s' fetch threw exception", executionId, path), e); - result.completeExceptionally(e); - } - return result; - } - - private void handleFetchedValue(Object fetchedValue, CompletableFuture cf) { - if (fetchedValue == null) { - cf.complete(NULL_VALUE); - return; - } - if (fetchedValue instanceof CompletionStage) { - //noinspection unchecked - CompletionStage stage = (CompletionStage) fetchedValue; - stage.whenComplete((value, throwable) -> { - if (throwable != null) { - cf.completeExceptionally(throwable); - } else { - cf.complete(value); - } - }); - return; - } - cf.complete(fetchedValue); - } - - private FetchedValue unboxPossibleDataFetcherResult(MergedField sameField, ExecutionPath executionPath, FetchedValue result, Object localContext) { - if (result.getFetchedValue() instanceof DataFetcherResult) { - - List addErrors; - DataFetcherResult dataFetcherResult = (DataFetcherResult) result.getFetchedValue(); - if (dataFetcherResult.isMapRelativeErrors()) { - addErrors = dataFetcherResult.getErrors().stream() - .map(relError -> new AbsoluteGraphQLError(sameField, executionPath, relError)) - .collect(Collectors.toList()); - } else { - addErrors = new ArrayList<>(dataFetcherResult.getErrors()); - } - List newErrors; - newErrors = new ArrayList<>(result.getErrors()); - newErrors.addAll(addErrors); - - Object newLocalContext = dataFetcherResult.getLocalContext(); - if (newLocalContext == null) { - // if the field returns nothing then they get the context of their parent field - newLocalContext = localContext; - } - return FetchedValue.newFetchedValue() - .fetchedValue(dataFetcherResult.getData()) - .rawFetchedValue(result.getRawFetchedValue()) - .errors(newErrors) - .localContext(newLocalContext) - .build(); - } else { - return result; - } - } -} diff --git a/src/main/java/graphql/execution/nextgen/package-info.java b/src/main/java/graphql/execution/nextgen/package-info.java deleted file mode 100644 index ddf6b7f3b7..0000000000 --- a/src/main/java/graphql/execution/nextgen/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** - * WARNING: All code in this package is a work in progress for a new execution engine. - * It is not really "wired up" and can't be really used and should not be used yet! - */ -package graphql.execution.nextgen; \ No newline at end of file diff --git a/src/main/java/graphql/execution/nextgen/result/ExecutionResultNode.java b/src/main/java/graphql/execution/nextgen/result/ExecutionResultNode.java deleted file mode 100644 index 9374dc4af3..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ExecutionResultNode.java +++ /dev/null @@ -1,110 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.Assert; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.MergedField; -import graphql.execution.NonNullableFieldWasNullException; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import static graphql.Assert.assertNotNull; - -@Internal -public abstract class ExecutionResultNode { - - private final ExecutionStepInfo executionStepInfo; - private final ResolvedValue resolvedValue; - private final NonNullableFieldWasNullException nonNullableFieldWasNullException; - private final List children; - private final List errors; - - /* - * we are trusting here the the children list is not modified on the outside (no defensive copy) - */ - protected ExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - NonNullableFieldWasNullException nonNullableFieldWasNullException, - List children, - List errors) { - this.resolvedValue = resolvedValue; - this.executionStepInfo = executionStepInfo; - this.nonNullableFieldWasNullException = nonNullableFieldWasNullException; - this.children = Collections.unmodifiableList(assertNotNull(children)); - children.forEach(Assert::assertNotNull); - this.errors = Collections.unmodifiableList(errors); - } - - public List getErrors() { - return new ArrayList<>(errors); - } - - /* - * can be null for the RootExecutionResultNode - */ - public ResolvedValue getResolvedValue() { - return resolvedValue; - } - - public MergedField getMergedField() { - return executionStepInfo.getField(); - } - - public ExecutionStepInfo getExecutionStepInfo() { - return executionStepInfo; - } - - public NonNullableFieldWasNullException getNonNullableFieldWasNullException() { - return nonNullableFieldWasNullException; - } - - public List getChildren() { - return this.children; - } - - public Optional getChildNonNullableException() { - return children.stream() - .filter(executionResultNode -> executionResultNode.getNonNullableFieldWasNullException() != null) - .map(ExecutionResultNode::getNonNullableFieldWasNullException) - .findFirst(); - } - - /** - * Creates a new ExecutionResultNode of the same specific type with the new set of result children - * - * @param children the new children for this result node - * - * @return a new ExecutionResultNode with the new result children - */ - public abstract ExecutionResultNode withNewChildren(List children); - - public abstract ExecutionResultNode withNewResolvedValue(ResolvedValue resolvedValue); - - public abstract ExecutionResultNode withNewExecutionStepInfo(ExecutionStepInfo executionStepInfo); - - - /** - * Creates a new ExecutionResultNode of the same specific type with the new error collection - * - * @param errors the new errors for this result node - * - * @return a new ExecutionResultNode with the new errors - */ - public abstract ExecutionResultNode withNewErrors(List errors); - - - @Override - public String toString() { - return "ExecutionResultNode{" + - "executionStepInfo=" + executionStepInfo + - ", resolvedValue=" + resolvedValue + - ", nonNullableFieldWasNullException=" + nonNullableFieldWasNullException + - ", children=" + children + - ", errors=" + errors + - '}'; - } -} diff --git a/src/main/java/graphql/execution/nextgen/result/LeafExecutionResultNode.java b/src/main/java/graphql/execution/nextgen/result/LeafExecutionResultNode.java deleted file mode 100644 index d86024c133..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/LeafExecutionResultNode.java +++ /dev/null @@ -1,53 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.Assert; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.NonNullableFieldWasNullException; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -@Internal -public class LeafExecutionResultNode extends ExecutionResultNode { - - public LeafExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - NonNullableFieldWasNullException nonNullableFieldWasNullException) { - this(executionStepInfo, resolvedValue, nonNullableFieldWasNullException, Collections.emptyList()); - } - - public LeafExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - NonNullableFieldWasNullException nonNullableFieldWasNullException, - List errors) { - super(executionStepInfo, resolvedValue, nonNullableFieldWasNullException, Collections.emptyList(), errors); - } - - - public Object getValue() { - return getResolvedValue().getCompletedValue(); - } - - @Override - public ExecutionResultNode withNewChildren(List children) { - return Assert.assertShouldNeverHappen(); - } - - @Override - public ExecutionResultNode withNewExecutionStepInfo(ExecutionStepInfo executionStepInfo) { - return new LeafExecutionResultNode(executionStepInfo, getResolvedValue(), getNonNullableFieldWasNullException(), getErrors()); - } - - @Override - public ExecutionResultNode withNewResolvedValue(ResolvedValue resolvedValue) { - return new LeafExecutionResultNode(getExecutionStepInfo(), resolvedValue, getNonNullableFieldWasNullException(), getErrors()); - } - - @Override - public ExecutionResultNode withNewErrors(List errors) { - return new LeafExecutionResultNode(getExecutionStepInfo(), getResolvedValue(), getNonNullableFieldWasNullException(), new ArrayList<>(errors)); - } -} \ No newline at end of file diff --git a/src/main/java/graphql/execution/nextgen/result/ListExecutionResultNode.java b/src/main/java/graphql/execution/nextgen/result/ListExecutionResultNode.java deleted file mode 100644 index e9489fd05f..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ListExecutionResultNode.java +++ /dev/null @@ -1,47 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -@Internal -public class ListExecutionResultNode extends ExecutionResultNode { - - public ListExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - List children) { - this(executionStepInfo, resolvedValue, children, Collections.emptyList()); - - } - - public ListExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - List children, - List errors) { - super(executionStepInfo, resolvedValue, ResultNodesUtil.newNullableException(executionStepInfo, children), children, errors); - } - - @Override - public ExecutionResultNode withNewChildren(List children) { - return new ListExecutionResultNode(getExecutionStepInfo(), getResolvedValue(), children, getErrors()); - } - - @Override - public ExecutionResultNode withNewResolvedValue(ResolvedValue resolvedValue) { - return new ListExecutionResultNode(getExecutionStepInfo(), resolvedValue, getChildren(), getErrors()); - } - - @Override - public ExecutionResultNode withNewExecutionStepInfo(ExecutionStepInfo executionStepInfo) { - return new ListExecutionResultNode(executionStepInfo, getResolvedValue(), getChildren(), getErrors()); - } - - @Override - public ExecutionResultNode withNewErrors(List errors) { - return new ListExecutionResultNode(getExecutionStepInfo(), getResolvedValue(), getChildren(), new ArrayList<>(errors)); - } -} diff --git a/src/main/java/graphql/execution/nextgen/result/NamedResultNode.java b/src/main/java/graphql/execution/nextgen/result/NamedResultNode.java deleted file mode 100644 index fe993a26b3..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/NamedResultNode.java +++ /dev/null @@ -1,26 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.Internal; - -@Internal -public class NamedResultNode { - private final String name; - private final ExecutionResultNode node; - - public NamedResultNode(String name, ExecutionResultNode node) { - this.name = name; - this.node = node; - } - - public String getName() { - return name; - } - - public ExecutionResultNode getNode() { - return node; - } - - public NamedResultNode withNode(ExecutionResultNode newNode) { - return new NamedResultNode(name, newNode); - } -} diff --git a/src/main/java/graphql/execution/nextgen/result/ObjectExecutionResultNode.java b/src/main/java/graphql/execution/nextgen/result/ObjectExecutionResultNode.java deleted file mode 100644 index 05da6dfc9e..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ObjectExecutionResultNode.java +++ /dev/null @@ -1,49 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -@Internal -public class ObjectExecutionResultNode extends ExecutionResultNode { - - - public ObjectExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - List children) { - this(executionStepInfo, resolvedValue, children, Collections.emptyList()); - - } - - public ObjectExecutionResultNode(ExecutionStepInfo executionStepInfo, - ResolvedValue resolvedValue, - List children, - List errors) { - super(executionStepInfo, resolvedValue, ResultNodesUtil.newNullableException(executionStepInfo, children), children, errors); - } - - - @Override - public ObjectExecutionResultNode withNewChildren(List children) { - return new ObjectExecutionResultNode(getExecutionStepInfo(), getResolvedValue(), children, getErrors()); - } - - @Override - public ExecutionResultNode withNewResolvedValue(ResolvedValue resolvedValue) { - return new ObjectExecutionResultNode(getExecutionStepInfo(), resolvedValue, getChildren(), getErrors()); - } - - @Override - public ExecutionResultNode withNewExecutionStepInfo(ExecutionStepInfo executionStepInfo) { - return new ObjectExecutionResultNode(executionStepInfo, getResolvedValue(), getChildren(), getErrors()); - } - - @Override - public ExecutionResultNode withNewErrors(List errors) { - return new ObjectExecutionResultNode(getExecutionStepInfo(), getResolvedValue(), getChildren(), new ArrayList<>(errors)); - } -} diff --git a/src/main/java/graphql/execution/nextgen/result/ResolvedValue.java b/src/main/java/graphql/execution/nextgen/result/ResolvedValue.java deleted file mode 100644 index d28c85d032..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ResolvedValue.java +++ /dev/null @@ -1,96 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.GraphQLError; -import graphql.Internal; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.function.Consumer; - -@Internal -public class ResolvedValue { - - private final Object completedValue; - private final Object localContext; - private final boolean nullValue; - private final List errors; - - private ResolvedValue(Builder builder) { - this.completedValue = builder.completedValue; - this.localContext = builder.localContext; - this.nullValue = builder.nullValue; - this.errors = builder.errors; - } - - public Object getCompletedValue() { - return completedValue; - } - - public Object getLocalContext() { - return localContext; - } - - public boolean isNullValue() { - return nullValue; - } - - public List getErrors() { - return Collections.unmodifiableList(errors); - } - - public static Builder newResolvedValue() { - return new Builder(); - } - - - public ResolvedValue transform(Consumer builderConsumer) { - Builder builder = new Builder(this); - builderConsumer.accept(builder); - return builder.build(); - } - - - public static class Builder { - private Object completedValue; - private Object localContext; - private boolean nullValue; - private List errors = Collections.emptyList(); - - private Builder() { - - } - - private Builder(ResolvedValue existing) { - this.completedValue = existing.completedValue; - this.localContext = existing.localContext; - this.nullValue = existing.nullValue; - this.errors = existing.errors; - } - - public Builder completedValue(Object completedValue) { - this.completedValue = completedValue; - return this; - } - - public Builder localContext(Object localContext) { - this.localContext = localContext; - return this; - } - - public Builder nullValue(boolean nullValue) { - this.nullValue = nullValue; - return this; - } - - public Builder errors(List errors) { - this.errors = new ArrayList<>(errors); - return this; - } - - public ResolvedValue build() { - return new ResolvedValue(this); - } - } - -} diff --git a/src/main/java/graphql/execution/nextgen/result/ResultNodeAdapter.java b/src/main/java/graphql/execution/nextgen/result/ResultNodeAdapter.java deleted file mode 100644 index 9b4c1b29ae..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ResultNodeAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.PublicApi; -import graphql.util.NodeAdapter; -import graphql.util.NodeLocation; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static graphql.Assert.assertNotNull; -import static graphql.Assert.assertTrue; - -@PublicApi -public class ResultNodeAdapter implements NodeAdapter { - - public static final ResultNodeAdapter RESULT_NODE_ADAPTER = new ResultNodeAdapter(); - - private ResultNodeAdapter() { - - } - - @Override - public Map> getNamedChildren(ExecutionResultNode parentNode) { - return Collections.singletonMap(null, parentNode.getChildren()); - } - - @Override - public ExecutionResultNode withNewChildren(ExecutionResultNode parentNode, Map> newChildren) { - assertTrue(newChildren.size() == 1); - List childrenList = newChildren.get(null); - assertNotNull(childrenList); - return parentNode.withNewChildren(childrenList); - } - - @Override - public ExecutionResultNode removeChild(ExecutionResultNode parentNode, NodeLocation location) { - int index = location.getIndex(); - List childrenList = new ArrayList<>(parentNode.getChildren()); - assertTrue(index >= 0 && index < childrenList.size(), "The remove index MUST be within the range of the children"); - childrenList.remove(index); - return parentNode.withNewChildren(childrenList); - } -} diff --git a/src/main/java/graphql/execution/nextgen/result/ResultNodeTraverser.java b/src/main/java/graphql/execution/nextgen/result/ResultNodeTraverser.java deleted file mode 100644 index 1b8988c520..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ResultNodeTraverser.java +++ /dev/null @@ -1,30 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.Internal; -import graphql.util.Traverser; -import graphql.util.TraverserVisitor; - -import java.util.Collection; - -@Internal -public class ResultNodeTraverser { - - private final Traverser traverser; - - private ResultNodeTraverser(Traverser traverser) { - this.traverser = traverser; - } - - public static ResultNodeTraverser depthFirst() { - return new ResultNodeTraverser(Traverser.depthFirst(ExecutionResultNode::getChildren, null, null)); - } - - public void traverse(TraverserVisitor visitor, ExecutionResultNode root) { - traverser.traverse(root, visitor); - } - - public void traverse(TraverserVisitor visitor, Collection roots) { - traverser.traverse(roots, visitor); - } - -} diff --git a/src/main/java/graphql/execution/nextgen/result/ResultNodesUtil.java b/src/main/java/graphql/execution/nextgen/result/ResultNodesUtil.java deleted file mode 100644 index 3259e2ad2a..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/ResultNodesUtil.java +++ /dev/null @@ -1,183 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.Assert; -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.GraphQLError; -import graphql.Internal; -import graphql.execution.ExecutionStepInfo; -import graphql.execution.NonNullableFieldWasNullError; -import graphql.execution.NonNullableFieldWasNullException; -import graphql.util.NodeLocation; -import graphql.util.NodeMultiZipper; -import graphql.util.NodeZipper; -import graphql.util.TraversalControl; -import graphql.util.TraverserContext; -import graphql.util.TraverserVisitorStub; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import static graphql.execution.nextgen.result.ResultNodeAdapter.RESULT_NODE_ADAPTER; -import static java.util.Collections.emptyList; -import static java.util.Collections.singleton; - -@Internal -public class ResultNodesUtil { - - public static ExecutionResult toExecutionResult(RootExecutionResultNode root) { - ExecutionResultData executionResultData = toDataImpl(root); - return ExecutionResultImpl.newExecutionResult() - .data(executionResultData.data) - .errors(executionResultData.errors) - .build(); - } - - private static class ExecutionResultData { - Object data; - List errors; - - - public ExecutionResultData(Object data, List errors) { - this.data = data; - this.errors = errors; - } - } - - - private static ExecutionResultData data(Object data, ExecutionResultNode executionResultNode) { - List allErrors = new ArrayList<>(); - allErrors.addAll(executionResultNode.getResolvedValue().getErrors()); - allErrors.addAll(executionResultNode.getErrors()); - return new ExecutionResultData(data, allErrors); - } - - private static ExecutionResultData data(Object data, List errors) { - return new ExecutionResultData(data, errors); - } - - private static ExecutionResultData data(Object data, NonNullableFieldWasNullException exception) { - return new ExecutionResultData(data, Arrays.asList(new NonNullableFieldWasNullError(exception))); - } - - private static ExecutionResultData toDataImpl(ExecutionResultNode root) { - if (root instanceof LeafExecutionResultNode) { - return root.getResolvedValue().isNullValue() ? data(null, root) : data(((LeafExecutionResultNode) root).getValue(), root); - } - if (root instanceof ListExecutionResultNode) { - Optional childNonNullableException = root.getChildNonNullableException(); - if (childNonNullableException.isPresent()) { - return data(null, childNonNullableException.get()); - } - - List errors = new ArrayList<>(); - List data = new ArrayList<>(); - for (ExecutionResultNode child : root.getChildren()) { - ExecutionResultData erd = toDataImpl(child); - data.add(erd.data); - if (!erd.errors.isEmpty()) { - errors.addAll(erd.errors); - } - } - if (!root.getErrors().isEmpty()) { - errors.addAll(root.getErrors()); - } - return data(data, errors); - } - - if (root instanceof UnresolvedObjectResultNode) { - ExecutionStepInfo executionStepInfo = root.getExecutionStepInfo(); - return data("Not resolved : " + executionStepInfo.getPath() + " with field " + executionStepInfo.getField(), emptyList()); - } - if (root instanceof ObjectExecutionResultNode) { - Optional childrenNonNullableException = root.getChildNonNullableException(); - if (childrenNonNullableException.isPresent()) { - return data(null, childrenNonNullableException.get()); - } - Map resultMap = new LinkedHashMap<>(); - List errors = new ArrayList<>(); - root.getChildren().forEach(child -> { - ExecutionResultData executionResultData = toDataImpl(child); - resultMap.put(child.getMergedField().getResultKey(), executionResultData.data); - errors.addAll(executionResultData.errors); - }); - errors.addAll(root.getErrors()); - return data(resultMap, errors); - } - return Assert.assertShouldNeverHappen("An unexpected root type %s", root.getClass()); - } - - - public static Optional getFirstNonNullableException(Collection collection) { - return collection.stream() - .filter(executionResultNode -> executionResultNode.getNonNullableFieldWasNullException() != null) - .map(ExecutionResultNode::getNonNullableFieldWasNullException) - .findFirst(); - } - - public static NonNullableFieldWasNullException newNullableException(ExecutionStepInfo executionStepInfo, List children) { - return newNullableException(executionStepInfo, children.stream().map(NamedResultNode::getNode).collect(Collectors.toList())); - } - - public static Map namedNodesToMap(List namedResultNodes) { - Map result = new LinkedHashMap<>(); - for (NamedResultNode namedResultNode : namedResultNodes) { - result.put(namedResultNode.getName(), namedResultNode.getNode()); - } - return result; - } - - public static NonNullableFieldWasNullException newNullableException(ExecutionStepInfo executionStepInfo, Collection children) { - // can only happen for the root node - if (executionStepInfo == null) { - return null; - } - Assert.assertNotNull(children); - boolean listIsNonNull = executionStepInfo.isNonNullType(); - if (listIsNonNull) { - Optional firstNonNullableException = getFirstNonNullableException(children); - if (firstNonNullableException.isPresent()) { - return new NonNullableFieldWasNullException(firstNonNullableException.get()); - } - } - return null; - } - - public static List> getUnresolvedNodes(Collection roots) { - List> result = new ArrayList<>(); - - ResultNodeTraverser traverser = ResultNodeTraverser.depthFirst(); - traverser.traverse(new TraverserVisitorStub() { - @Override - public TraversalControl enter(TraverserContext context) { - if (context.thisNode() instanceof UnresolvedObjectResultNode) { - result.add(new NodeZipper<>(context.thisNode(), context.getBreadcrumbs(), RESULT_NODE_ADAPTER)); - } - return TraversalControl.CONTINUE; - } - - }, roots); - return result; - } - - public static NodeMultiZipper getUnresolvedNodes(ExecutionResultNode root) { - List> unresolvedNodes = getUnresolvedNodes(singleton(root)); - return new NodeMultiZipper<>(root, unresolvedNodes, RESULT_NODE_ADAPTER); - } - - - public static NodeLocation key(String name) { - return new NodeLocation(name, 0); - } - - public static NodeLocation index(int index) { - return new NodeLocation(null, index); - } - -} diff --git a/src/main/java/graphql/execution/nextgen/result/RootExecutionResultNode.java b/src/main/java/graphql/execution/nextgen/result/RootExecutionResultNode.java deleted file mode 100644 index cfb11eea6f..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/RootExecutionResultNode.java +++ /dev/null @@ -1,52 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.GraphQLError; -import graphql.execution.ExecutionStepInfo; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import static graphql.Assert.assertShouldNeverHappen; - -public class RootExecutionResultNode extends ObjectExecutionResultNode { - - - public RootExecutionResultNode(List children, List errors) { - super(null, null, children, errors); - } - - public RootExecutionResultNode(List children) { - super(null, null, children, Collections.emptyList()); - } - - @Override - public ExecutionStepInfo getExecutionStepInfo() { - return assertShouldNeverHappen("not supported at root node"); - } - - @Override - public ResolvedValue getResolvedValue() { - return assertShouldNeverHappen("not supported at root node"); - } - - @Override - public RootExecutionResultNode withNewChildren(List children) { - return new RootExecutionResultNode(children, getErrors()); - } - - @Override - public ExecutionResultNode withNewResolvedValue(ResolvedValue resolvedValue) { - return assertShouldNeverHappen("not supported at root node"); - } - - @Override - public ExecutionResultNode withNewExecutionStepInfo(ExecutionStepInfo executionStepInfo) { - return assertShouldNeverHappen("not supported at root node"); - } - - @Override - public ExecutionResultNode withNewErrors(List errors) { - return new RootExecutionResultNode(getChildren(), new ArrayList<>(errors)); - } -} diff --git a/src/main/java/graphql/execution/nextgen/result/UnresolvedObjectResultNode.java b/src/main/java/graphql/execution/nextgen/result/UnresolvedObjectResultNode.java deleted file mode 100644 index ecd33dcb91..0000000000 --- a/src/main/java/graphql/execution/nextgen/result/UnresolvedObjectResultNode.java +++ /dev/null @@ -1,13 +0,0 @@ -package graphql.execution.nextgen.result; - -import graphql.execution.ExecutionStepInfo; - -import java.util.Collections; - -public class UnresolvedObjectResultNode extends ObjectExecutionResultNode { - - public UnresolvedObjectResultNode(ExecutionStepInfo executionStepInfo, ResolvedValue resolvedValue) { - super(executionStepInfo, resolvedValue, Collections.emptyList(), Collections.emptyList()); - } - -} \ No newline at end of file diff --git a/src/main/java/graphql/execution/preparsed/NoOpPreparsedDocumentProvider.java b/src/main/java/graphql/execution/preparsed/NoOpPreparsedDocumentProvider.java index 268118f1fa..03a96776b6 100644 --- a/src/main/java/graphql/execution/preparsed/NoOpPreparsedDocumentProvider.java +++ b/src/main/java/graphql/execution/preparsed/NoOpPreparsedDocumentProvider.java @@ -2,14 +2,17 @@ import graphql.ExecutionInput; +import graphql.Internal; +import java.util.concurrent.CompletableFuture; import java.util.function.Function; +@Internal public class NoOpPreparsedDocumentProvider implements PreparsedDocumentProvider { public static final NoOpPreparsedDocumentProvider INSTANCE = new NoOpPreparsedDocumentProvider(); @Override - public PreparsedDocumentEntry getDocument(ExecutionInput executionInput, Function computeFunction) { - return computeFunction.apply(executionInput); + public CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { + return CompletableFuture.completedFuture(parseAndValidateFunction.apply(executionInput)); } } diff --git a/src/main/java/graphql/execution/preparsed/PreparsedDocumentEntry.java b/src/main/java/graphql/execution/preparsed/PreparsedDocumentEntry.java index f0ea47e247..8c14cf9bf8 100644 --- a/src/main/java/graphql/execution/preparsed/PreparsedDocumentEntry.java +++ b/src/main/java/graphql/execution/preparsed/PreparsedDocumentEntry.java @@ -11,8 +11,9 @@ import static java.util.Collections.singletonList; /** - * An instance of a preparsed document entry represents the result of a query parse and validation, like - * an either implementation it contains either the correct result in th document property or the errors. + * An instance of a preparsed document entry represents the result of a query parse and validation. In the case of + * failed parsing or no validation errors this class acts as an either implementation. In the case of successful + * parsing and failed validation this class provides both the document and the validation errors. * * NOTE: This class implements {@link java.io.Serializable} and hence it can be serialised and placed into a distributed cache. However we * are not aiming to provide long term compatibility and do not intend for you to place this serialised data into permanent storage, @@ -24,6 +25,14 @@ public class PreparsedDocumentEntry implements Serializable { private final Document document; private final List errors; + public PreparsedDocumentEntry(Document document, + List errors) { + assertNotNull(document); + assertNotNull(errors); + this.document = document; + this.errors = errors; + } + public PreparsedDocumentEntry(Document document) { assertNotNull(document); this.document = document; diff --git a/src/main/java/graphql/execution/preparsed/PreparsedDocumentProvider.java b/src/main/java/graphql/execution/preparsed/PreparsedDocumentProvider.java index a2a537c78f..7aac05d09d 100644 --- a/src/main/java/graphql/execution/preparsed/PreparsedDocumentProvider.java +++ b/src/main/java/graphql/execution/preparsed/PreparsedDocumentProvider.java @@ -4,23 +4,27 @@ import graphql.ExecutionInput; import graphql.PublicSpi; +import java.util.concurrent.CompletableFuture; import java.util.function.Function; /** - * Interface that allows clients to hook in Document caching and/or the whitelisting of queries + * Interface that allows clients to hook in Document caching and/or the whitelisting of queries. */ @PublicSpi public interface PreparsedDocumentProvider { /** - * This is called to get a "cached" pre-parsed query and if its not present, then the computeFunction - * can be called to parse and validate the query + * This is called to get a "cached" pre-parsed query and if it's not present, then the "parseAndValidateFunction" + * can be called to parse and validate the query. + *

    + * Note - the "parseAndValidateFunction" MUST be called if you don't have a per parsed version of the query because it not only parses + * and validates the query, it invokes {@link graphql.execution.instrumentation.Instrumentation} calls as well for parsing and validation. + * if you don't make a call back on this then these won't happen. * - * @param executionInput The {@link graphql.ExecutionInput} containing the query - * @param computeFunction If the query has not be pre-parsed, this function can be called to parse it - * - * @return an instance of {@link PreparsedDocumentEntry} + * @param executionInput The {@link graphql.ExecutionInput} containing the query + * @param parseAndValidateFunction If the query has not be pre-parsed, this function MUST be called to parse and validate it + * @return a promise to an {@link PreparsedDocumentEntry} */ - PreparsedDocumentEntry getDocument(ExecutionInput executionInput, Function computeFunction); + CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction); } diff --git a/src/main/java/graphql/execution/preparsed/persisted/ApolloPersistedQuerySupport.java b/src/main/java/graphql/execution/preparsed/persisted/ApolloPersistedQuerySupport.java new file mode 100644 index 0000000000..b7b1a15302 --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/ApolloPersistedQuerySupport.java @@ -0,0 +1,70 @@ +package graphql.execution.preparsed.persisted; + +import graphql.ExecutionInput; +import graphql.PublicApi; + +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Map; +import java.util.Optional; + +/** + * This persisted query support class supports the Apollo scheme where the persisted + * query id is in {@link graphql.ExecutionInput#getExtensions()}. + *

    + * You need to provide a {@link PersistedQueryCache} cache implementation + * as the backing cache. + *

    + * See Apollo Persisted Queries + *

    + * The Apollo client sends a hash of the persisted query in the input extensions in the following form + *

    + *     {
    + *      "extensions":{
    + *       "persistedQuery":{
    + *        "version":1,
    + *        "sha256Hash":"fcf31818e50ac3e818ca4bdbc433d6ab73176f0b9d5f9d5ad17e200cdab6fba4"
    + *      }
    + *    }
    + *  }
    + * 
    + * + * @see graphql.ExecutionInput#getExtensions() + */ +@PublicApi +public class ApolloPersistedQuerySupport extends PersistedQuerySupport { + + private static final String CHECKSUM_TYPE = "SHA-256"; + + public ApolloPersistedQuerySupport(PersistedQueryCache persistedQueryCache) { + super(persistedQueryCache); + } + + @SuppressWarnings("unchecked") + @Override + protected Optional getPersistedQueryId(ExecutionInput executionInput) { + Map extensions = executionInput.getExtensions(); + Map persistedQuery = (Map) extensions.get("persistedQuery"); + if (persistedQuery != null) { + Object sha256Hash = persistedQuery.get("sha256Hash"); + return Optional.ofNullable(sha256Hash); + } + return Optional.empty(); + } + + @Override + protected boolean persistedQueryIdIsInvalid(Object persistedQueryId, String queryText) { + MessageDigest messageDigest; + try { + messageDigest = MessageDigest.getInstance(CHECKSUM_TYPE); + } catch (NoSuchAlgorithmException e) { + return false; + } + + BigInteger bigInteger = new BigInteger(1, messageDigest.digest(queryText.getBytes(StandardCharsets.UTF_8))); + String calculatedChecksum = String.format("%064x", bigInteger); + return !calculatedChecksum.equalsIgnoreCase(persistedQueryId.toString()); + } +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/InMemoryPersistedQueryCache.java b/src/main/java/graphql/execution/preparsed/persisted/InMemoryPersistedQueryCache.java new file mode 100644 index 0000000000..5226332b85 --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/InMemoryPersistedQueryCache.java @@ -0,0 +1,68 @@ +package graphql.execution.preparsed.persisted; + +import graphql.Assert; +import graphql.ExecutionInput; +import graphql.PublicApi; +import graphql.execution.preparsed.PreparsedDocumentEntry; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; + +/** + * A PersistedQueryCache that is just an in memory map of known queries. + */ +@PublicApi +public class InMemoryPersistedQueryCache implements PersistedQueryCache { + + private final Map cache = new ConcurrentHashMap<>(); + private final Map knownQueries; + + public InMemoryPersistedQueryCache(Map knownQueries) { + this.knownQueries = Assert.assertNotNull(knownQueries); + } + + public Map getKnownQueries() { + return knownQueries; + } + + @Override + public CompletableFuture getPersistedQueryDocumentAsync(Object persistedQueryId, ExecutionInput executionInput, PersistedQueryCacheMiss onCacheMiss) throws PersistedQueryNotFound { + PreparsedDocumentEntry documentEntry = cache.compute(persistedQueryId, (k, v) -> { + if (v != null) { + return v; + } + + //get the query from the execution input. Make sure it's not null, empty or the APQ marker. + // if it is, fallback to the known queries. + String queryText = executionInput.getQuery(); + if (queryText == null || queryText.isEmpty() || queryText.equals(PersistedQuerySupport.PERSISTED_QUERY_MARKER)) { + queryText = knownQueries.get(persistedQueryId); + } + + if (queryText == null) { + throw new PersistedQueryNotFound(persistedQueryId); + } + return onCacheMiss.apply(queryText); + }); + return CompletableFuture.completedFuture(documentEntry); + } + + public static Builder newInMemoryPersistedQueryCache() { + return new Builder(); + } + + public static class Builder { + private final Map knownQueries = new HashMap<>(); + + public Builder addQuery(Object key, String queryText) { + knownQueries.put(key, queryText); + return this; + } + + public InMemoryPersistedQueryCache build() { + return new InMemoryPersistedQueryCache(knownQueries); + } + } +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryCache.java b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryCache.java new file mode 100644 index 0000000000..7690280e78 --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryCache.java @@ -0,0 +1,32 @@ +package graphql.execution.preparsed.persisted; + +import graphql.ExecutionInput; +import graphql.PublicSpi; +import graphql.execution.preparsed.PreparsedDocumentEntry; + +import java.util.concurrent.CompletableFuture; + +/** + * This interface is used to abstract an actual cache that can cache parsed persistent queries. + */ +@PublicSpi +public interface PersistedQueryCache { + /** + * This is called to get a persisted query from cache. + *

    + * If its present in cache then it must return a PreparsedDocumentEntry where {@link graphql.execution.preparsed.PreparsedDocumentEntry#getDocument()} + * is already parsed and validated. This will be passed onto the graphql engine as is. + *

    + * If it's a valid query id but its no present in cache, (cache miss) then you need to call back the "onCacheMiss" function with associated query text. + * This will be compiled and validated by the graphql engine and the PreparsedDocumentEntry will be passed back ready for you to cache it. + *

    + * If it's not a valid query id then throw a {@link graphql.execution.preparsed.persisted.PersistedQueryNotFound} to indicate this. + * + * @param persistedQueryId the persisted query id + * @param executionInput the original execution input + * @param onCacheMiss the call back should it be a valid query id but it's not currently in the cache + * @return a promise to parsed and validated {@link PreparsedDocumentEntry} where {@link graphql.execution.preparsed.PreparsedDocumentEntry#getDocument()} is set + * @throws graphql.execution.preparsed.persisted.PersistedQueryNotFound if the query id is not know at all and you have no query text + */ + CompletableFuture getPersistedQueryDocumentAsync(Object persistedQueryId, ExecutionInput executionInput, PersistedQueryCacheMiss onCacheMiss) throws PersistedQueryNotFound; +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryCacheMiss.java b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryCacheMiss.java new file mode 100644 index 0000000000..6e9cc03a3d --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryCacheMiss.java @@ -0,0 +1,23 @@ +package graphql.execution.preparsed.persisted; + +import graphql.PublicApi; +import graphql.execution.preparsed.PreparsedDocumentEntry; + +import java.util.function.Function; + +/** + * The call back when a valid persisted query is not in cache and it needs to be compiled and validated + * by the graphql engine. If you get a cache miss in your {@link graphql.execution.preparsed.persisted.PersistedQueryCache} implementation + * then you are required to call back on the provided instance of this interface + */ +@PublicApi +public interface PersistedQueryCacheMiss extends Function { + /** + * You give back the missing query text and graphql-java will compile and validate it. + * + * @param queryToBeParsedAndValidated the query text to be parsed and validated + * @return a parsed and validated query document ready for caching + */ + @Override + PreparsedDocumentEntry apply(String queryToBeParsedAndValidated); +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryError.java b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryError.java new file mode 100644 index 0000000000..fd34289bee --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryError.java @@ -0,0 +1,13 @@ +package graphql.execution.preparsed.persisted; + +import graphql.ErrorClassification; + +import java.util.LinkedHashMap; +import java.util.Map; + +public abstract class PersistedQueryError extends RuntimeException implements ErrorClassification { + + Map getExtensions() { + return new LinkedHashMap<>(); + } +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryIdInvalid.java b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryIdInvalid.java new file mode 100644 index 0000000000..2599069797 --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryIdInvalid.java @@ -0,0 +1,35 @@ +package graphql.execution.preparsed.persisted; + +import graphql.PublicApi; + +import java.util.LinkedHashMap; +import java.util.Map; + +@PublicApi +public class PersistedQueryIdInvalid extends PersistedQueryError { + private final Object persistedQueryId; + + public PersistedQueryIdInvalid(Object persistedQueryId) { + this.persistedQueryId = persistedQueryId; + } + + @Override + public String getMessage() { + return "PersistedQueryIdInvalid"; + } + + public Object getPersistedQueryId() { + return persistedQueryId; + } + + @Override + public String toString() { + return "PersistedQueryIdInvalid"; + } + + public Map getExtensions() { + LinkedHashMap extensions = new LinkedHashMap<>(); + extensions.put("persistedQueryId", getPersistedQueryId()); + return extensions; + } +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryNotFound.java b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryNotFound.java new file mode 100644 index 0000000000..22c38bf8e5 --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/PersistedQueryNotFound.java @@ -0,0 +1,40 @@ +package graphql.execution.preparsed.persisted; + +import graphql.PublicApi; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * An exception that indicates the query id is not valid and can be found ever in cache + */ +@PublicApi +public class PersistedQueryNotFound extends PersistedQueryError { + private final Object persistedQueryId; + + public PersistedQueryNotFound(Object persistedQueryId) { + this.persistedQueryId = persistedQueryId; + } + + @Override + public String getMessage() { + return "PersistedQueryNotFound"; + } + + public Object getPersistedQueryId() { + return persistedQueryId; + } + + @Override + public String toString() { + return "PersistedQueryNotFound"; + } + + @Override + public Map getExtensions() { + LinkedHashMap extensions = new LinkedHashMap<>(); + extensions.put("persistedQueryId", persistedQueryId); + extensions.put("generatedBy", "graphql-java"); + return extensions; + } +} diff --git a/src/main/java/graphql/execution/preparsed/persisted/PersistedQuerySupport.java b/src/main/java/graphql/execution/preparsed/persisted/PersistedQuerySupport.java new file mode 100644 index 0000000000..b65e20b78a --- /dev/null +++ b/src/main/java/graphql/execution/preparsed/persisted/PersistedQuerySupport.java @@ -0,0 +1,95 @@ +package graphql.execution.preparsed.persisted; + +import graphql.ExecutionInput; +import graphql.GraphQLError; +import graphql.GraphqlErrorBuilder; +import graphql.PublicSpi; +import graphql.execution.preparsed.PreparsedDocumentEntry; +import graphql.execution.preparsed.PreparsedDocumentProvider; + +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; + +import static graphql.Assert.assertNotNull; +import static java.util.concurrent.CompletableFuture.completedFuture; + +/** + * This abstract class forms the basis for persistent query support. Derived classes + * need to implement the method to work out the query id and you also need + * a {@link PersistedQueryCache} implementation. + * + * @see graphql.execution.preparsed.PreparsedDocumentProvider + * @see graphql.GraphQL.Builder#preparsedDocumentProvider(graphql.execution.preparsed.PreparsedDocumentProvider) + */ +@PublicSpi +public abstract class PersistedQuerySupport implements PreparsedDocumentProvider { + + /** + * In order for {@link graphql.ExecutionInput#getQuery()} to never be null, use this to mark + * them so that invariant can be satisfied while assuming that the persisted query id is elsewhere + */ + public static final String PERSISTED_QUERY_MARKER = "PersistedQueryMarker"; + + private final PersistedQueryCache persistedQueryCache; + + public PersistedQuerySupport(PersistedQueryCache persistedQueryCache) { + this.persistedQueryCache = assertNotNull(persistedQueryCache); + } + + @Override + public CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { + Optional queryIdOption = getPersistedQueryId(executionInput); + assertNotNull(queryIdOption, "The class %s MUST return a non null optional query id", this.getClass().getName()); + + try { + if (queryIdOption.isPresent()) { + Object persistedQueryId = queryIdOption.get(); + return persistedQueryCache.getPersistedQueryDocumentAsync(persistedQueryId, executionInput, (queryText) -> { + // we have a miss and they gave us nothing - bah! + if (queryText == null || queryText.isBlank()) { + throw new PersistedQueryNotFound(persistedQueryId); + } + // validate the queryText hash before returning to the cache which we assume will set it + if (persistedQueryIdIsInvalid(persistedQueryId, queryText)) { + throw new PersistedQueryIdInvalid(persistedQueryId); + } + ExecutionInput newEI = executionInput.transform(builder -> builder.query(queryText)); + return parseAndValidateFunction.apply(newEI); + }); + } + // ok there is no query id - we assume the query is indeed ready to go as is - ie its not a persisted query + return completedFuture(parseAndValidateFunction.apply(executionInput)); + } catch (PersistedQueryError e) { + return completedFuture(mkMissingError(e)); + } + } + + /** + * This method is required for concrete types to work out the query id (often a hash) that should be used to look + * up the persisted query in the cache. + * + * @param executionInput the execution input + * + * @return an optional id of the persisted query + */ + abstract protected Optional getPersistedQueryId(ExecutionInput executionInput); + + protected boolean persistedQueryIdIsInvalid(Object persistedQueryId, String queryText) { + return false; + } + + /** + * Allows you to customize the graphql error that is sent back on a missing persisted query + * + * @param persistedQueryError the missing persistent query exception + * + * @return a PreparsedDocumentEntry that holds an error + */ + protected PreparsedDocumentEntry mkMissingError(PersistedQueryError persistedQueryError) { + GraphQLError gqlError = GraphqlErrorBuilder.newError() + .errorType(persistedQueryError).message(persistedQueryError.getMessage()) + .extensions(persistedQueryError.getExtensions()).build(); + return new PreparsedDocumentEntry(gqlError); + } +} diff --git a/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java b/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java new file mode 100644 index 0000000000..91915c450e --- /dev/null +++ b/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java @@ -0,0 +1,36 @@ +package graphql.execution.reactive; + +import graphql.Internal; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; + +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * A reactive Publisher that bridges over another Publisher of `D` and maps the results + * to type `U` via a CompletionStage, handling errors in that stage but keeps the results + * in order of downstream publishing. This means it must queue unfinished + * completion stages in memory in arrival order. + * + * @param the downstream type + * @param the upstream type to be mapped to + */ +@Internal +public class CompletionStageMappingOrderedPublisher extends CompletionStageMappingPublisher { + /** + * You need the following : + * + * @param upstreamPublisher an upstream source of data + * @param mapper a mapper function that turns upstream data into a promise of mapped D downstream data + */ + public CompletionStageMappingOrderedPublisher(Publisher upstreamPublisher, Function> mapper) { + super(upstreamPublisher, mapper); + } + + @Override + protected @NonNull Subscriber createSubscriber(Subscriber downstreamSubscriber) { + return new CompletionStageOrderedSubscriber<>(mapper, downstreamSubscriber); + } +} diff --git a/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java b/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java index b686889795..4c334a13cc 100644 --- a/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java +++ b/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java @@ -1,22 +1,26 @@ package graphql.execution.reactive; +import graphql.Internal; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; -import org.reactivestreams.Subscription; import java.util.concurrent.CompletionStage; import java.util.function.Function; +import static graphql.Assert.assertNotNullWithNPE; + /** * A reactive Publisher that bridges over another Publisher of `D` and maps the results * to type `U` via a CompletionStage, handling errors in that stage * - * @param the down stream type - * @param the up stream type to be mapped to + * @param the downstream type + * @param the upstream type to be mapped to */ +@Internal public class CompletionStageMappingPublisher implements Publisher { - private final Publisher upstreamPublisher; - private final Function> mapper; + protected final Publisher upstreamPublisher; + protected final Function> mapper; /** * You need the following : @@ -31,53 +35,23 @@ public CompletionStageMappingPublisher(Publisher upstreamPublisher, Function< @Override public void subscribe(Subscriber downstreamSubscriber) { - upstreamPublisher.subscribe(new Subscriber() { - Subscription delegatingSubscription; - - @Override - public void onSubscribe(Subscription subscription) { - delegatingSubscription = new DelegatingSubscription(subscription); - downstreamSubscriber.onSubscribe(delegatingSubscription); - } - - @Override - public void onNext(U u) { - CompletionStage completionStage; - try { - completionStage = mapper.apply(u); - completionStage.whenComplete((d, throwable) -> { - if (throwable != null) { - handleThrowable(throwable); - } else { - downstreamSubscriber.onNext(d); - } - }); - } catch (RuntimeException throwable) { - handleThrowable(throwable); - } - } + assertNotNullWithNPE(downstreamSubscriber, "Subscriber passed to subscribe must not be null"); + upstreamPublisher.subscribe(createSubscriber(downstreamSubscriber)); + } - private void handleThrowable(Throwable throwable) { - downstreamSubscriber.onError(throwable); - // - // reactive semantics say that IF an exception happens on a publisher - // then onError is called and no more messages flow. But since the exception happened - // during the mapping, the upstream publisher does not no about this. - // so we cancel to bring the semantics back together, that is as soon as an exception - // has happened, no more messages flow - // - delegatingSubscription.cancel(); - } + @NonNull + protected Subscriber createSubscriber(Subscriber downstreamSubscriber) { + return new CompletionStageSubscriber<>(mapper, downstreamSubscriber); + } - @Override - public void onError(Throwable t) { - downstreamSubscriber.onError(t); - } - @Override - public void onComplete() { - downstreamSubscriber.onComplete(); - } - }); + /** + * Get instance of an upstreamPublisher + * + * @return upstream instance of {@link Publisher} + */ + public Publisher getUpstreamPublisher() { + return upstreamPublisher; } + } diff --git a/src/main/java/graphql/execution/reactive/CompletionStageOrderedSubscriber.java b/src/main/java/graphql/execution/reactive/CompletionStageOrderedSubscriber.java new file mode 100644 index 0000000000..53a8dd4719 --- /dev/null +++ b/src/main/java/graphql/execution/reactive/CompletionStageOrderedSubscriber.java @@ -0,0 +1,84 @@ +package graphql.execution.reactive; + +import graphql.Internal; +import org.reactivestreams.Subscriber; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This subscriber can be used to map between a {@link org.reactivestreams.Publisher} of U + * elements and map them into {@link CompletionStage} of D promises, and it keeps them in the order + * the Publisher provided them. + * + * @param published upstream elements + * @param mapped downstream values + */ +@Internal +public class CompletionStageOrderedSubscriber extends CompletionStageSubscriber implements Subscriber { + + public CompletionStageOrderedSubscriber(Function> mapper, Subscriber downstreamSubscriber) { + super(mapper, downstreamSubscriber); + } + + @Override + protected void whenNextFinished(CompletionStage completionStage, D d, Throwable throwable) { + try { + if (throwable != null) { + handleThrowableDuringMapping(throwable); + } else { + emptyInFlightQueueIfWeCan(); + } + } finally { + boolean empty = inFlightQIsEmpty(); + finallyAfterEachPromiseFinishes(empty); + } + } + + private void emptyInFlightQueueIfWeCan() { + // done inside a memory lock, so we cant offer new CFs to the queue + // until we have processed any completed ones from the start of + // the queue. + lock.runLocked(() -> { + // + // from the top of the in flight queue, take all the CFs that have + // completed... but stop if they are not done + while (!inFlightDataQ.isEmpty()) { + CompletionStage cs = inFlightDataQ.peek(); + if (cs != null) { + // + CompletableFuture cf = cs.toCompletableFuture(); + if (cf.isDone()) { + // take it off the queue + inFlightDataQ.poll(); + D value; + try { + //noinspection unchecked + value = (D) cf.join(); + } catch (RuntimeException rte) { + // + // if we get an exception while joining on a value, we + // send it into the exception handling and break out + handleThrowableDuringMapping(cfExceptionUnwrap(rte)); + break; + } + downstreamSubscriber.onNext(value); + } else { + // if the CF is not done, then we have to stop processing + // to keep the results in order inside the inFlightQueue + break; + } + } + } + }); + } + + private Throwable cfExceptionUnwrap(Throwable throwable) { + if (throwable instanceof CompletionException & throwable.getCause() != null) { + return throwable.getCause(); + } + return throwable; + } +} diff --git a/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java b/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java new file mode 100644 index 0000000000..b185ce9bba --- /dev/null +++ b/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java @@ -0,0 +1,201 @@ +package graphql.execution.reactive; + +import graphql.Internal; +import graphql.util.LockKit; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.BiConsumer; +import java.util.function.Function; + +/** + * This subscriber can be used to map between a {@link org.reactivestreams.Publisher} of U + * elements and map them into {@link CompletionStage} of D promises. + * + * @param published upstream elements + * @param mapped downstream values + */ +@Internal +public class CompletionStageSubscriber implements Subscriber { + protected final Function> mapper; + protected final Subscriber downstreamSubscriber; + protected Subscription delegatingSubscription; + protected final Queue> inFlightDataQ; + protected final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + protected final AtomicReference onCompleteRun; + protected final AtomicBoolean isTerminal; + + public CompletionStageSubscriber(Function> mapper, Subscriber downstreamSubscriber) { + this.mapper = mapper; + this.downstreamSubscriber = downstreamSubscriber; + inFlightDataQ = new ArrayDeque<>(); + onCompleteRun = new AtomicReference<>(); + isTerminal = new AtomicBoolean(false); + } + + /** + * Get instance of downstream subscriber + * + * @return {@link Subscriber} + */ + public Subscriber getDownstreamSubscriber() { + return downstreamSubscriber; + } + + @Override + public void onSubscribe(Subscription subscription) { + delegatingSubscription = new DelegatingSubscription(subscription); + downstreamSubscriber.onSubscribe(delegatingSubscription); + } + + @Override + public void onNext(U u) { + // for safety - no more data after we have called done/error - we should not get this BUT belts and braces + if (isTerminal()) { + return; + } + try { + CompletionStage completionStage = mapper.apply(u); + offerToInFlightQ(completionStage); + completionStage.whenComplete(whenComplete(completionStage)); + } catch (RuntimeException throwable) { + handleThrowableDuringMapping(throwable); + } + } + + @NonNull + private BiConsumer whenComplete(CompletionStage completionStage) { + return (d, throwable) -> { + if (isTerminal()) { + return; + } + whenNextFinished(completionStage, d, throwable); + }; + } + + /** + * This is called as each mapped {@link CompletionStage} completes with + * a value or exception + * + * @param completionStage the completion stage that has completed + * @param d the value completed + * @param throwable or the throwable that happened during completion + */ + protected void whenNextFinished(CompletionStage completionStage, D d, Throwable throwable) { + try { + if (throwable != null) { + handleThrowableDuringMapping(throwable); + } else { + downstreamSubscriber.onNext(d); + } + } finally { + boolean empty = removeFromInFlightQAndCheckIfEmpty(completionStage); + finallyAfterEachPromiseFinishes(empty); + } + } + + protected void finallyAfterEachPromiseFinishes(boolean isInFlightEmpty) { + // + // if the runOnCompleteOrErrorRun runnable is set, the upstream has + // called onComplete() already, but the CFs have not all completed + // yet, so we have to check whenever a CF completes + // + Runnable runOnCompleteOrErrorRun = onCompleteRun.get(); + if (isInFlightEmpty && runOnCompleteOrErrorRun != null) { + onCompleteRun.set(null); + runOnCompleteOrErrorRun.run(); + } + } + + protected void handleThrowableDuringMapping(Throwable throwable) { + // only do this once + if (isTerminal.compareAndSet(false, true)) { + downstreamSubscriber.onError(throwable); + // + // Reactive semantics say that IF an exception happens on a publisher, + // then onError is called and no more messages flow. But since the exception happened + // during the mapping, the upstream publisher does not know about this. + // So we cancel to bring the semantics back together, that is as soon as an exception + // has happened, no more messages flow + // + delegatingSubscription.cancel(); + + cancelInFlightFutures(); + } + } + + @Override + public void onError(Throwable t) { + // we immediately terminate - we don't wait for any promises to complete + if (isTerminal.compareAndSet(false, true)) { + downstreamSubscriber.onError(t); + cancelInFlightFutures(); + } + } + + @Override + public void onComplete() { + onComplete(() -> { + if (isTerminal.compareAndSet(false, true)) { + downstreamSubscriber.onComplete(); + } + }); + } + + private void onComplete(Runnable doneCodeToRun) { + if (inFlightQIsEmpty()) { + // run right now + doneCodeToRun.run(); + } else { + onCompleteRun.set(doneCodeToRun); + } + } + + protected void offerToInFlightQ(CompletionStage completionStage) { + lock.runLocked(() -> + inFlightDataQ.offer(completionStage) + ); + } + + private boolean removeFromInFlightQAndCheckIfEmpty(CompletionStage completionStage) { + // uncontested locks in java are cheap - we don't expect much contention here + return lock.callLocked(() -> { + inFlightDataQ.remove(completionStage); + return inFlightDataQ.isEmpty(); + }); + } + + /** + * If the promise is backed by frameworks such as Reactor, then the cancel() + * can cause them to propagate the cancel back into the reactive chain + */ + private void cancelInFlightFutures() { + lock.runLocked(() -> { + while (!inFlightDataQ.isEmpty()) { + CompletionStage cs = inFlightDataQ.poll(); + if (cs != null) { + cs.toCompletableFuture().cancel(false); + } + } + }); + } + + protected boolean inFlightQIsEmpty() { + return lock.callLocked(inFlightDataQ::isEmpty); + } + + /** + * The two terminal states are onComplete or onError + * + * @return true if it's in a terminal state + */ + protected boolean isTerminal() { + return isTerminal.get(); + } +} diff --git a/src/main/java/graphql/execution/reactive/DelegatingSubscription.java b/src/main/java/graphql/execution/reactive/DelegatingSubscription.java index 8918de578e..e8a3ff9df3 100644 --- a/src/main/java/graphql/execution/reactive/DelegatingSubscription.java +++ b/src/main/java/graphql/execution/reactive/DelegatingSubscription.java @@ -1,5 +1,6 @@ package graphql.execution.reactive; +import graphql.PublicApi; import org.reactivestreams.Subscription; import static graphql.Assert.assertNotNull; @@ -7,6 +8,7 @@ /** * A simple subscription that delegates to another */ +@PublicApi public class DelegatingSubscription implements Subscription { private final Subscription upstreamSubscription; @@ -23,4 +25,12 @@ public void request(long n) { public void cancel() { upstreamSubscription.cancel(); } + + /** + * Get instance of upstreamSubscription + * @return {@link Subscription} + */ + public Subscription getUpstreamSubscription() { + return upstreamSubscription; + } } diff --git a/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java b/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java index 28a86cf685..0b8397d602 100644 --- a/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java +++ b/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java @@ -2,6 +2,7 @@ import graphql.Internal; +import org.jspecify.annotations.NonNull; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicReference; @@ -12,37 +13,38 @@ /** * Executor that provides mutual exclusion between the operations submitted to it, * without blocking. - * + *

    * If an operation is submitted to this executor while no other operation is * running, it will run immediately. - * + *

    * If an operation is submitted to this executor while another operation is * running, it will be added to a queue of operations to run, and the executor will * return. The thread currently running an operation will end up running the * operation just submitted. - * + *

    * Operations submitted to this executor should run fast, as they can end up running * on other threads and interfere with the operation of other threads. - * + *

    * This executor can also be used to address infinite recursion problems, as * operations submitted recursively will run sequentially. + *

    * - * - * Inspired by Public Domain CC0 code at h - * https://github.com/jroper/reactive-streams-servlet/tree/master/reactive-streams-servlet/src/main/java/org/reactivestreams/servlet + * Inspired by Public Domain CC0 code at + * ... */ @Internal class NonBlockingMutexExecutor implements Executor { private final AtomicReference last = new AtomicReference<>(); @Override - public void execute(final Runnable command) { - final RunNode newNode = new RunNode(assertNotNull(command, "Runnable must not be null")); + public void execute(final @NonNull Runnable command) { + final RunNode newNode = new RunNode(assertNotNull(command, "Runnable must not be null")); final RunNode prevLast = last.getAndSet(newNode); - if (prevLast != null) + if (prevLast != null) { prevLast.lazySet(newNode); - else + } else { runAll(newNode); + } } private void reportFailure(final Thread runner, final Throwable thrown) { @@ -74,9 +76,9 @@ private void runAll(RunNode next) { if (last.compareAndSet(current, null)) { return; // end-of-queue: we're done. } else { - //noinspection StatementWithEmptyBody while ((next = current.get()) == null) { - // Thread.onSpinWait(); in Java 9 + // hint to the CPU we are actively waiting + Thread.onSpinWait(); } } } @@ -91,4 +93,4 @@ private RunNode(final Runnable runnable) { } } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/execution/reactive/ReactiveSupport.java b/src/main/java/graphql/execution/reactive/ReactiveSupport.java new file mode 100644 index 0000000000..c513cc75a5 --- /dev/null +++ b/src/main/java/graphql/execution/reactive/ReactiveSupport.java @@ -0,0 +1,198 @@ +package graphql.execution.reactive; + +import graphql.DuckTyped; +import graphql.Internal; +import org.reactivestreams.FlowAdapters; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Flow; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; + +/** + * This provides support for a DataFetcher to be able to + * return a reactive streams {@link Publisher} or Java JDK {@link Flow.Publisher} + * as a value, and it can be turned into a {@link CompletableFuture} + * that we can get an async value from. + */ +@Internal +public class ReactiveSupport { + + @DuckTyped(shape = "CompletableFuture | Object") + public static Object fetchedObject(Object fetchedObject) { + if (fetchedObject instanceof Flow.Publisher) { + return flowPublisherToCF((Flow.Publisher) fetchedObject); + } + if (fetchedObject instanceof Publisher) { + return flowPublisherToCF(FlowAdapters.toFlowPublisher((Publisher) fetchedObject)); + } + return fetchedObject; + } + + private static CompletableFuture flowPublisherToCF(Flow.Publisher publisher) { + FlowPublisherToCompletableFuture cf = new FlowPublisherToCompletableFuture<>(); + publisher.subscribe(cf); + return cf; + } + + /** + * The implementations between reactive Publishers and Flow.Publishers are almost exactly the same except the + * subscription class is different. So this is a common class that contains most of the common logic + * + * @param for two + * @param for subscription + */ + private static abstract class PublisherToCompletableFuture extends CompletableFuture { + + private final AtomicReference subscriptionRef = new AtomicReference<>(); + + abstract void doSubscriptionCancel(S s); + + @SuppressWarnings("SameParameterValue") + abstract void doSubscriptionRequest(S s, long n); + + private boolean validateSubscription(S current, S next) { + Objects.requireNonNull(next, "Subscription cannot be null"); + if (current != null) { + doSubscriptionCancel(next); + return false; + } + return true; + } + + /** + * This overrides the {@link CompletableFuture#cancel(boolean)} method + * such that subscription is also cancelled. + * + * @param mayInterruptIfRunning this value has no effect in this + * implementation because interrupts are not used to control + * processing. + * @return a boolean if it was cancelled + */ + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + boolean cancelled = super.cancel(mayInterruptIfRunning); + if (cancelled) { + S s = subscriptionRef.getAndSet(null); + if (s != null) { + doSubscriptionCancel(s); + } + } + return cancelled; + } + + void onSubscribeImpl(S s) { + if (validateSubscription(subscriptionRef.getAndSet(s), s)) { + doSubscriptionRequest(s, Long.MAX_VALUE); + } + } + + void onNextImpl(T t) { + S s = subscriptionRef.getAndSet(null); + if (s != null) { + complete(t); + doSubscriptionCancel(s); + } + } + + void onErrorImpl(Throwable t) { + if (subscriptionRef.getAndSet(null) != null) { + completeExceptionally(t); + } + } + + void onCompleteImpl() { + if (subscriptionRef.getAndSet(null) != null) { + complete(null); + } + } + } + + private static class FlowPublisherToCompletableFuture extends PublisherToCompletableFuture implements Flow.Subscriber { + + @Override + void doSubscriptionCancel(Flow.Subscription subscription) { + subscription.cancel(); + } + + @Override + void doSubscriptionRequest(Flow.Subscription subscription, long n) { + subscription.request(n); + } + + @Override + public void onSubscribe(Flow.Subscription s) { + onSubscribeImpl(s); + } + + @Override + public void onNext(T t) { + onNextImpl(t); + } + + @Override + public void onError(Throwable t) { + onErrorImpl(t); + } + + @Override + public void onComplete() { + onCompleteImpl(); + } + } + + /** + * Our reactive {@link SingleSubscriberPublisher} supports only a single subscription + * so this can be used a delegate to perform a call back when the given Publisher + * actually finishes without adding an extra subscription to the delegate Publisher + * + * @param publisher the publisher to wrap + * @param atTheEndCallback the callback when the {@link Publisher} has finished + * @param for two + */ + public static Publisher whenPublisherFinishes(Publisher publisher, Consumer atTheEndCallback) { + return new AtTheEndPublisher<>(publisher, atTheEndCallback); + } + + static class AtTheEndPublisher implements Publisher { + + private final Publisher delegatePublisher; + private final Consumer atTheEndCallback; + + public AtTheEndPublisher(Publisher delegatePublisher, Consumer atTheEndCallback) { + this.delegatePublisher = delegatePublisher; + this.atTheEndCallback = atTheEndCallback; + } + + @Override + public void subscribe(Subscriber originalSubscriber) { + delegatePublisher.subscribe(new Subscriber<>() { + @Override + public void onSubscribe(Subscription s) { + originalSubscriber.onSubscribe(s); + } + + @Override + public void onNext(T t) { + originalSubscriber.onNext(t); + } + + @Override + public void onError(Throwable t) { + originalSubscriber.onError(t); + atTheEndCallback.accept(t); + } + + @Override + public void onComplete() { + originalSubscriber.onComplete(); + atTheEndCallback.accept(null); + } + }); + } + } +} diff --git a/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java b/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java new file mode 100644 index 0000000000..4951b451df --- /dev/null +++ b/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java @@ -0,0 +1,60 @@ +package graphql.execution.reactive; + +import graphql.ExecutionResult; +import graphql.Internal; +import graphql.PublicApi; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; + +import java.util.concurrent.CompletionStage; +import java.util.function.Consumer; +import java.util.function.Function; + + +/** + * Subscription queries return an instance of this class in the {@link ExecutionResult} data element + * for the subscribed field. + * + *
    {@code
    + *      ExecutionResult er = graphQL.execute("subscription s { onEntityChanged(id : "1") { selection1, selection2 }}")
    + *      SubscriptionPublisher eventPublisher = er.getData("onEntityChanged")
    + * }
    + * 
    + */ +@SuppressWarnings("ReactiveStreamsPublisherImplementation") +@PublicApi +public class SubscriptionPublisher implements Publisher { + + private final CompletionStageMappingPublisher mappingPublisher; + private final Publisher publisher; + + /** + * Subscription consuming code is not expected to create instances of this class + * + * @param upstreamPublisher the original publisher of objects that then have a graphql selection set applied to them + * @param mapper a mapper that turns object into promises to execution results which are then published on this stream + * @param keepOrdered this indicates that the order of results should be kep in the same order as the source events arrive + */ + @Internal + public SubscriptionPublisher(Publisher upstreamPublisher, Function> mapper, boolean keepOrdered, Consumer whenDone) { + if (keepOrdered) { + mappingPublisher = new CompletionStageMappingOrderedPublisher<>(upstreamPublisher, mapper); + } else { + mappingPublisher = new CompletionStageMappingPublisher<>(upstreamPublisher, mapper); + } + publisher = ReactiveSupport.whenPublisherFinishes(mappingPublisher, whenDone); + } + + /** + * @return the underlying Publisher that was providing raw objects to the subscription field, whose published values are then mapped + * to execution results + */ + public Publisher getUpstreamPublisher() { + return mappingPublisher.getUpstreamPublisher(); + } + + @Override + public void subscribe(Subscriber subscriber) { + publisher.subscribe(subscriber); + } +} diff --git a/src/main/java/graphql/execution/values/InputInterceptor.java b/src/main/java/graphql/execution/values/InputInterceptor.java new file mode 100644 index 0000000000..0fb7534d59 --- /dev/null +++ b/src/main/java/graphql/execution/values/InputInterceptor.java @@ -0,0 +1,42 @@ +package graphql.execution.values; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.schema.GraphQLInputType; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.Locale; + +/** + * This INTERNAL class can be used to intercept input values before they are coerced into runtime values + * by the {@link graphql.execution.ValuesResolver} code. + *

    + * You could use it to observe input values and optionally change them. Perhaps some sort of migration of data + * needs to happen, and you need to know what data you are getting in type terms. This would help you do that. + *

    + * If this is present in a {@link GraphQLContext} it will be called. By default, it is not present + * so no calls to it will be made. + *

    + * There is a performance aspect to using this code. If you take too long to return values then you + * are going to slow down your system depending on how big your input objects are. + */ +@Internal +public interface InputInterceptor { + + /** + * This is called with a value that is to be presented to the {@link graphql.execution.ValuesResolver} code. The values + * may be scalars, enums and complex input types. + * + * @param value the input value that can be null + * @param graphQLType the input type + * @param graphqlContext the graphql context in play + * @param locale the locale in play + * + * @return a value that may differ from the original value + */ + Object intercept(@Nullable Object value, + @NonNull GraphQLInputType graphQLType, + @NonNull GraphQLContext graphqlContext, + @NonNull Locale locale); +} diff --git a/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java b/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java new file mode 100644 index 0000000000..6ac9041be4 --- /dev/null +++ b/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java @@ -0,0 +1,179 @@ +package graphql.execution.values.legacycoercing; + +import graphql.GraphQLContext; +import graphql.Scalars; +import graphql.execution.values.InputInterceptor; +import graphql.scalar.CoercingUtil; +import graphql.schema.GraphQLInputType; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.math.BigDecimal; +import java.util.Locale; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import static graphql.Assert.assertNotNull; +import static graphql.scalar.CoercingUtil.isNumberIsh; + +public class LegacyCoercingInputInterceptor implements InputInterceptor { + + /** + * This will ONLY observe legacy values and invoke the callback when it gets one. you can use this to enumerate how many + * legacy values are hitting you graphql implementation + * + * @param observerCallback a callback allowing you to observe a legacy scalar value + * + * @return an InputInterceptor that only observes values + */ + public static LegacyCoercingInputInterceptor observesValues(BiConsumer observerCallback) { + return new LegacyCoercingInputInterceptor(((input, graphQLInputType) -> { + observerCallback.accept(input, graphQLInputType); + return input; + })); + } + + /** + * This will change legacy values as it encounters them to something acceptable to the more strict coercion rules. + * + * @return an InputInterceptor that migrates values to a more strict value + */ + public static LegacyCoercingInputInterceptor migratesValues() { + return migratesValues((input, type) -> { + }); + } + + /** + * This will change legacy values as it encounters them to something acceptable to the more strict coercion rules. + * The observer callback will be invoked if it detects a legacy value that it will change. + * + * @param observerCallback a callback allowing you to observe a legacy scalar value before it is migrated + * + * @return an InputInterceptor that both observes values and migrates them to a more strict value + */ + public static LegacyCoercingInputInterceptor migratesValues(BiConsumer observerCallback) { + return new LegacyCoercingInputInterceptor(((input, graphQLInputType) -> { + observerCallback.accept(input, graphQLInputType); + if (Scalars.GraphQLBoolean.equals(graphQLInputType)) { + return coerceLegacyBooleanValue(input); + } + if (Scalars.GraphQLFloat.equals(graphQLInputType)) { + return coerceLegacyFloatValue(input); + } + if (Scalars.GraphQLInt.equals(graphQLInputType)) { + return coerceLegacyIntValue(input); + } + if (Scalars.GraphQLString.equals(graphQLInputType)) { + return coerceLegacyStringValue(input); + } + return input; + })); + } + + private final BiFunction behavior; + + private LegacyCoercingInputInterceptor(BiFunction behavior) { + this.behavior = assertNotNull(behavior); + } + + @Override + public Object intercept(@Nullable Object input, @NonNull GraphQLInputType graphQLType, @NonNull GraphQLContext graphqlContext, @NonNull Locale locale) { + if (isLegacyValue(input, graphQLType)) { + // we ONLY apply the new behavior IF it's an old acceptable legacy value. + // so for compliant values - we change nothing and invoke no behaviour + // and for values that would not coerce anyway, we also invoke no behavior + return behavior.apply(input, graphQLType); + } + return input; + } + + @SuppressWarnings("RedundantIfStatement") + static boolean isLegacyValue(Object input, GraphQLInputType graphQLType) { + if (Scalars.GraphQLBoolean.equals(graphQLType)) { + return isLegacyBooleanValue(input); + } else if (Scalars.GraphQLFloat.equals(graphQLType)) { + return isLegacyFloatValue(input); + } else if (Scalars.GraphQLInt.equals(graphQLType)) { + return isLegacyIntValue(input); + } else if (Scalars.GraphQLString.equals(graphQLType)) { + return isLegacyStringValue(input); + } else { + return false; + } + } + + static boolean isLegacyBooleanValue(Object input) { + return input instanceof String || CoercingUtil.isNumberIsh(input); + } + + static boolean isLegacyFloatValue(Object input) { + return input instanceof String; + } + + static boolean isLegacyIntValue(Object input) { + return input instanceof String; + } + + static boolean isLegacyStringValue(Object input) { + return !(input instanceof String); + } + + static Object coerceLegacyBooleanValue(Object input) { + if (input instanceof String) { + String lStr = ((String) input).toLowerCase(); + if (lStr.equals("true")) { + return true; + } + if (lStr.equals("false")) { + return false; + } + return input; + } else if (isNumberIsh(input)) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + // this should never happen because String is handled above + return input; + } + return value.compareTo(BigDecimal.ZERO) != 0; + } + // unchanged + return input; + } + + static Object coerceLegacyFloatValue(Object input) { + if (isNumberIsh(input)) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + return input; + } + return value.doubleValue(); + } + return input; + } + + static Object coerceLegacyIntValue(Object input) { + if (isNumberIsh(input)) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + return input; + } + try { + return value.intValueExact(); + } catch (ArithmeticException e) { + return input; + } + } + return input; + } + + + static Object coerceLegacyStringValue(Object input) { + return String.valueOf(input); + } +} diff --git a/src/main/java/graphql/extensions/DefaultExtensionsMerger.java b/src/main/java/graphql/extensions/DefaultExtensionsMerger.java new file mode 100644 index 0000000000..3c3aa3d8a9 --- /dev/null +++ b/src/main/java/graphql/extensions/DefaultExtensionsMerger.java @@ -0,0 +1,74 @@ +package graphql.extensions; + +import com.google.common.collect.Sets; +import graphql.Internal; +import org.jspecify.annotations.NonNull; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + + +@Internal +public class DefaultExtensionsMerger implements ExtensionsMerger { + @Override + @NonNull + public Map merge(@NonNull Map leftMap, @NonNull Map rightMap) { + if (leftMap.isEmpty()) { + return mapCast(rightMap); + } + if (rightMap.isEmpty()) { + return mapCast(leftMap); + } + Map targetMap = new LinkedHashMap<>(); + Set leftKeys = leftMap.keySet(); + for (Object key : leftKeys) { + Object leftVal = leftMap.get(key); + if (rightMap.containsKey(key)) { + Object rightVal = rightMap.get(key); + targetMap.put(key, mergeObjects(leftVal, rightVal)); + } else { + targetMap.put(key, leftVal); + } + } + Sets.SetView rightOnlyKeys = Sets.difference(rightMap.keySet(), leftKeys); + for (Object key : rightOnlyKeys) { + Object rightVal = rightMap.get(key); + targetMap.put(key, rightVal); + } + return targetMap; + } + + private Object mergeObjects(Object leftVal, Object rightVal) { + if (leftVal instanceof Map && rightVal instanceof Map) { + return merge(mapCast(leftVal), mapCast(rightVal)); + } else if (leftVal instanceof Collection && rightVal instanceof Collection) { + // we append - no equality or merging here + return appendLists(leftVal, rightVal); + } else { + // we have some primitive - so prefer the right since it was encountered last + // and last write wins here + return rightVal; + } + } + + @NonNull + private List appendLists(Object leftVal, Object rightVal) { + List target = new ArrayList<>(listCast(leftVal)); + target.addAll(listCast(rightVal)); + return target; + } + + private Map mapCast(Object map) { + //noinspection unchecked + return (Map) map; + } + + private Collection listCast(Object collection) { + //noinspection unchecked + return (Collection) collection; + } +} diff --git a/src/main/java/graphql/extensions/ExtensionsBuilder.java b/src/main/java/graphql/extensions/ExtensionsBuilder.java new file mode 100644 index 0000000000..e65e315e2f --- /dev/null +++ b/src/main/java/graphql/extensions/ExtensionsBuilder.java @@ -0,0 +1,133 @@ +package graphql.extensions; + +import com.google.common.collect.ImmutableMap; +import graphql.ExecutionResult; +import graphql.PublicApi; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; + +import static graphql.Assert.assertNotNull; + +/** + * This class can be used to help build the graphql `extensions` map. A series of changes to the extensions can + * be added and these will be merged together via a {@link ExtensionsMerger} implementation and that resultant + * map can be used as the `extensions` + *

    + * The engine will place a {@link ExtensionsBuilder} into the {@link graphql.GraphQLContext} (if one is not manually placed there) + * and hence {@link graphql.schema.DataFetcher}s can use it to build up extensions progressively. + *

    + * At the end of the execution, the {@link ExtensionsBuilder} will be used to build a graphql `extensions` map that + * is placed in the {@link ExecutionResult} + */ +@PublicApi +public class ExtensionsBuilder { + + // thread safe since there can be many changes say in DFs across threads + private final List> changes = new CopyOnWriteArrayList<>(); + private final ExtensionsMerger extensionsMerger; + + + private ExtensionsBuilder(ExtensionsMerger extensionsMerger) { + this.extensionsMerger = extensionsMerger; + } + + /** + * @return a new ExtensionsBuilder using a default merger + */ + public static ExtensionsBuilder newExtensionsBuilder() { + return new ExtensionsBuilder(ExtensionsMerger.DEFAULT); + } + + /** + * This creates a new ExtensionsBuilder with the provided {@link ExtensionsMerger} + * + * @param extensionsMerger the merging code to use + * + * @return a new ExtensionsBuilder using the provided merger + */ + public static ExtensionsBuilder newExtensionsBuilder(ExtensionsMerger extensionsMerger) { + return new ExtensionsBuilder(extensionsMerger); + } + + /** + * @return how many extension changes have been made so far + */ + public int getChangeCount() { + return changes.size(); + } + + /** + * Adds new values into the extension builder + * + * @param newValues the new values to add + * + * @return this builder for fluent style reasons + */ + public ExtensionsBuilder addValues(@NonNull Map newValues) { + assertNotNull(newValues); + if (!newValues.isEmpty()) { + changes.add(newValues); + } + return this; + } + + /** + * Adds a single new value into the extension builder + * + * @param key the key in the extensions + * @param value the value in the extensions + * + * @return this builder for fluent style reasons + */ + public ExtensionsBuilder addValue(@NonNull Object key, @Nullable Object value) { + assertNotNull(key); + return addValues(Collections.singletonMap(key, value)); + } + + /** + * This builds an extensions map from this builder, merging together the values provided + * + * @return a new extensions map + */ + public Map buildExtensions() { + if (changes.isEmpty()) { + return ImmutableMap.of(); + } + Map firstChange = changes.get(0); + if (changes.size() == 1) { + return firstChange; + } + Map outMap = new LinkedHashMap<>(firstChange); + for (int i = 1; i < changes.size(); i++) { + Map newMap = extensionsMerger.merge(outMap, changes.get(i)); + assertNotNull(outMap, "You MUST provide a non null Map from ExtensionsMerger.merge()"); + outMap = newMap; + } + return outMap; + } + + /** + * This sets new extensions into the provided {@link ExecutionResult}, overwriting any previous values + * + * @param executionResult the result to set these extensions into + * + * @return a new ExecutionResult with the extensions values in this builder + */ + public ExecutionResult setExtensions(ExecutionResult executionResult) { + assertNotNull(executionResult); + Map currentExtensions = executionResult.getExtensions(); + Map builderExtensions = buildExtensions(); + // if there was no extensions map before, and we are not adding anything new + // then leave it null + if (currentExtensions == null && builderExtensions.isEmpty()) { + return executionResult; + } + return executionResult.transform(builder -> builder.extensions(builderExtensions)); + } +} diff --git a/src/main/java/graphql/extensions/ExtensionsMerger.java b/src/main/java/graphql/extensions/ExtensionsMerger.java new file mode 100644 index 0000000000..9e4199ff3a --- /dev/null +++ b/src/main/java/graphql/extensions/ExtensionsMerger.java @@ -0,0 +1,45 @@ +package graphql.extensions; + +import graphql.PublicSpi; +import org.jspecify.annotations.NonNull; + +import java.util.Map; + +/** + * This interface is a callback asking code to merge two maps with an eye to creating + * the graphql `extensions` value. + *

    + * How best to merge two maps is hard to know up front. Should it be a shallow clone or a deep one, + * should keys be replaced or not and should lists of value be combined? The {@link ExtensionsMerger} is the + * interface asked to do this. + *

    + * This interface will be called repeatedly for each change that has been added to the {@link ExtensionsBuilder} and it is expected to merge the two maps as it sees fit + */ +@PublicSpi +public interface ExtensionsMerger { + + /** + * A default implementation will do the following + *

      + *
    • It will deep merge the maps
    • + *
    • It concatenate lists when they occur under the same key
    • + *
    • It will add any keys from the right hand side map that are not present in the left
    • + *
    • If a key is in both the left and right side, it will prefer the right hand side
    • + *
    • It will try to maintain key order if the maps are ordered
    • + *
    + */ + ExtensionsMerger DEFAULT = new DefaultExtensionsMerger(); + + /** + * Called to merge the map on the left with the map on the right according to whatever code strategy some-one might envisage + *

    + * The map on the left is guaranteed to have been encountered before the map on the right + * + * @param leftMap the map on the left + * @param rightMap the map on the right + * + * @return a non null merged map + */ + @NonNull + Map merge(@NonNull Map leftMap, @NonNull Map rightMap); +} diff --git a/src/main/java/graphql/i18n/I18n.java b/src/main/java/graphql/i18n/I18n.java new file mode 100644 index 0000000000..6898f7be8b --- /dev/null +++ b/src/main/java/graphql/i18n/I18n.java @@ -0,0 +1,94 @@ +package graphql.i18n; + +import graphql.Internal; +import graphql.VisibleForTesting; + +import java.text.MessageFormat; +import java.util.List; +import java.util.Locale; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; + +@Internal +public class I18n { + + + /** + * This enum is a type safe way to control what resource bundle to load from + */ + public enum BundleType { + Parsing, + Scalars, + Validation, + Execution, + General; + + private final String baseName; + + BundleType() { + this.baseName = "i18n." + this.name(); + } + } + + private final ResourceBundle resourceBundle; + private final Locale locale; + + @VisibleForTesting + protected I18n(BundleType bundleType, Locale locale) { + assertNotNull(bundleType); + assertNotNull(locale); + this.locale = locale; + // load the resource bundle with this classes class loader - to help avoid confusion in complicated worlds + // like OSGI + this.resourceBundle = ResourceBundle.getBundle(bundleType.baseName, locale, I18n.class.getClassLoader()); } + + public Locale getLocale() { + return locale; + } + + public ResourceBundle getResourceBundle() { + return resourceBundle; + } + + public static I18n i18n(BundleType bundleType, Locale locale) { + return new I18n(bundleType, locale); + } + + + /** + * Creates an I18N message using the key and arguments + * + * @param msgKey the key in the underlying message bundle + * @param msgArgs the message arguments + * + * @return the formatted I18N message + */ + public String msg(String msgKey, Object... msgArgs) { + return msgImpl(msgKey, msgArgs); + } + + /** + * Creates an I18N message using the key and arguments + * + * @param msgKey the key in the underlying message bundle + * @param msgArgs the message arguments + * + * @return the formatted I18N message + */ + public String msg(String msgKey, List msgArgs) { + return msgImpl(msgKey, msgArgs.toArray()); + } + + private String msgImpl(String msgKey, Object[] msgArgs) { + String msgPattern = null; + try { + msgPattern = resourceBundle.getString(msgKey); + } catch (MissingResourceException e) { + assertShouldNeverHappen("There must be a resource bundle key called %s", msgKey); + } + return new MessageFormat(msgPattern).format(msgArgs); + } +} diff --git a/src/main/java/graphql/i18n/I18nMsg.java b/src/main/java/graphql/i18n/I18nMsg.java new file mode 100644 index 0000000000..2db09cc947 --- /dev/null +++ b/src/main/java/graphql/i18n/I18nMsg.java @@ -0,0 +1,42 @@ +package graphql.i18n; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Arrays.asList; + +/** + * A class that represents the intention to create a I18n message + */ +public class I18nMsg { + private final String msgKey; + private final List msgArguments; + + public I18nMsg(String msgKey, List msgArguments) { + this.msgKey = msgKey; + this.msgArguments = msgArguments; + } + + public I18nMsg(String msgKey, Object... msgArguments) { + this.msgKey = msgKey; + this.msgArguments = asList(msgArguments); + } + + public String getMsgKey() { + return msgKey; + } + + public Object[] getMsgArguments() { + return msgArguments.toArray(); + } + + public I18nMsg addArgumentAt(int index, Object argument) { + List newArgs = new ArrayList<>(this.msgArguments); + newArgs.add(index, argument); + return new I18nMsg(this.msgKey, newArgs); + } + + public String toI18n(I18n i18n) { + return i18n.msg(msgKey, msgArguments); + } +} diff --git a/src/main/java/graphql/incremental/DeferPayload.java b/src/main/java/graphql/incremental/DeferPayload.java new file mode 100644 index 0000000000..ddec3d531b --- /dev/null +++ b/src/main/java/graphql/incremental/DeferPayload.java @@ -0,0 +1,92 @@ +package graphql.incremental; + +import graphql.ExecutionResult; +import graphql.ExperimentalApi; +import graphql.GraphQLError; +import org.jspecify.annotations.Nullable; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * Represents a defer payload + */ +@ExperimentalApi +public class DeferPayload extends IncrementalPayload { + private final Object data; + + private DeferPayload(Object data, List path, String label, List errors, Map extensions) { + super(path, label, errors, extensions); + this.data = data; + } + + /** + * @param the type to cast the result to + * @return the resolved data + */ + @Nullable + public T getData() { + // noinspection unchecked + return (T) this.data; + } + + /** + * @return a map of this payload that strictly follows the spec + */ + @Override + public Map toSpecification() { + Map map = new LinkedHashMap<>(super.toSpecification()); + map.put("data", data); + return map; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), data); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + DeferPayload that = (DeferPayload) obj; + return Objects.equals(data, that.data); + } + + /** + * @return a {@link DeferPayload.Builder} that can be used to create an instance of {@link DeferPayload} + */ + public static DeferPayload.Builder newDeferredItem() { + return new DeferPayload.Builder(); + } + + public static class Builder extends IncrementalPayload.Builder { + private Object data = null; + + public Builder data(Object data) { + this.data = data; + return this; + } + + public Builder from(DeferPayload deferredItem) { + super.from(deferredItem); + this.data = deferredItem.data; + return this; + } + + public Builder from(ExecutionResult executionResult) { + this.data = executionResult.getData(); + this.errors = executionResult.getErrors(); + this.extensions = executionResult.getExtensions(); + + return this; + } + + public DeferPayload build() { + return new DeferPayload(data, this.path, this.label, this.errors, this.extensions); + } + } +} diff --git a/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java b/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java new file mode 100644 index 0000000000..5992e3c83a --- /dev/null +++ b/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java @@ -0,0 +1,43 @@ +package graphql.incremental; + +import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +/** + * Represents a result that is delivered asynchronously, after the initial {@link IncrementalExecutionResult}. + *

    + * Multiple defer and/or stream payloads (represented by {@link IncrementalPayload}) can be part of the same + * {@link DelayedIncrementalPartialResult} + */ +@ExperimentalApi +public interface DelayedIncrementalPartialResult { + /** + * @return a list of defer and/or stream payloads. + */ + @Nullable + List getIncremental(); + + /** + * Indicates whether the stream will continue emitting {@link DelayedIncrementalPartialResult}s after this one. + *

    + * The value returned by this method should be "true" for all but the last response in the stream. The value of this + * entry is `false` for the last response of the stream. + * + * @return "true" if there are more responses in the stream, "false" otherwise. + */ + boolean hasNext(); + + /** + * @return a map of extensions or null if there are none + */ + @Nullable + Map getExtensions(); + + /** + * @return a map of the result that strictly follows the spec + */ + Map toSpecification(); +} diff --git a/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java b/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java new file mode 100644 index 0000000000..3412d77298 --- /dev/null +++ b/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java @@ -0,0 +1,89 @@ +package graphql.incremental; + +import graphql.ExperimentalApi; +import graphql.util.FpKit; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@ExperimentalApi +public class DelayedIncrementalPartialResultImpl implements DelayedIncrementalPartialResult { + private final List incrementalItems; + private final boolean hasNext; + private final Map extensions; + + private DelayedIncrementalPartialResultImpl(Builder builder) { + this.incrementalItems = builder.incrementalItems; + this.hasNext = builder.hasNext; + this.extensions = builder.extensions; + } + + @Override + public List getIncremental() { + return this.incrementalItems; + } + + @Override + public boolean hasNext() { + return this.hasNext; + } + + @Override + public Map getExtensions() { + return this.extensions; + } + + @Override + public Map toSpecification() { + Map result = new LinkedHashMap<>(); + result.put("hasNext", hasNext); + + if (extensions != null) { + result.put("extensions", extensions); + } + + if (incrementalItems != null) { + List> list = FpKit.arrayListSizedTo(incrementalItems); + for (IncrementalPayload incrementalItem : incrementalItems) { + list.add(incrementalItem.toSpecification()); + } + result.put("incremental", list); + } + + return result; + } + + /** + * @return a {@link Builder} that can be used to create an instance of {@link DelayedIncrementalPartialResultImpl} + */ + public static Builder newIncrementalExecutionResult() { + return new Builder(); + } + + public static class Builder { + private boolean hasNext = false; + private List incrementalItems = Collections.emptyList(); + private Map extensions; + + public Builder hasNext(boolean hasNext) { + this.hasNext = hasNext; + return this; + } + + public Builder incrementalItems(List incrementalItems) { + this.incrementalItems = incrementalItems; + return this; + } + + public Builder extensions(Map extensions) { + this.extensions = extensions; + return this; + } + + public DelayedIncrementalPartialResultImpl build() { + return new DelayedIncrementalPartialResultImpl(this); + } + } +} diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResult.java b/src/main/java/graphql/incremental/IncrementalExecutionResult.java new file mode 100644 index 0000000000..7d59fbe958 --- /dev/null +++ b/src/main/java/graphql/incremental/IncrementalExecutionResult.java @@ -0,0 +1,116 @@ +package graphql.incremental; + +import graphql.ExecutionResult; +import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; +import org.reactivestreams.Publisher; + +import java.util.List; + +/** + * A result that is part of an execution that includes incrementally delivered data (data has been deferred of streamed). + *

    + * For example, this query + *

    + * query {
    + *   person(id: "cGVvcGxlOjE=") {
    + *     ...HomeWorldFragment @defer(label: "homeWorldDefer")
    + *     name
    + *     films @stream(initialCount: 1, label: "filmsStream") {
    + *       title
    + *     }
    + *   }
    + * }
    + * fragment HomeWorldFragment on Person {
    + *   homeWorld {
    + *     name
    + *   }
    + * }
    + * 
    + * Could result on an incremental response with the following payloads (in JSON format here for simplicity). + *

    + * Response 1, the initial response does not contain any deferred or streamed results. + *

    + * {
    + *   "data": {
    + *     "person": {
    + *       "name": "Luke Skywalker",
    + *       "films": [{ "title": "A New Hope" }]
    + *     }
    + *   },
    + *   "hasNext": true
    + * }
    + * 
    + * + * Response 2, contains the defer payload and the first stream payload. + *
    + * {
    + *   "incremental": [
    + *     {
    + *       "label": "homeWorldDefer",
    + *       "path": ["person"],
    + *       "data": { "homeWorld": { "name": "Tatooine" } }
    + *     },
    + *     {
    + *       "label": "filmsStream",
    + *       "path": ["person", "films", 1],
    + *       "items": [{ "title": "The Empire Strikes Back" }]
    + *     }
    + *   ],
    + *   "hasNext": true
    + * }
    + * 
    + * + * Response 3, contains the final stream payload. Note how "hasNext" is "false", indicating this is the final response. + *
    + * {
    + *   "incremental": [
    + *     {
    + *       "label": "filmsStream",
    + *       "path": ["person", "films", 2],
    + *       "items": [{ "title": "Return of the Jedi" }]
    + *     }
    + *   ],
    + *   "hasNext": false
    + * }
    + * 
    + * + *

    + * This implementation is based on the state of Defer/Stream PR + * More specifically at the state of this + * commit + *

    + * The execution behaviour should match what we get from running Apollo Server 4.9.5 with graphql-js v17.0.0-alpha.2 + */ +@ExperimentalApi +public interface IncrementalExecutionResult extends ExecutionResult { + /** + * Indicates whether there are pending incremental data. + * + * @return "true" if there are incremental data, "false" otherwise. + */ + boolean hasNext(); + + /** + * Returns a list of defer and/or stream payloads that the execution engine decided (for whatever reason) to resolve at the same time as the initial payload. + *

    + * (...)this field may appear on both the initial and subsequent values. + *

    + * source + * + * @return a list of Stream and/or Defer payloads that were resolved at the same time as the initial payload. + */ + @Nullable + List getIncremental(); + + /** + * This method will return a {@link Publisher} of deferred results. No field processing will be done + * until a {@link org.reactivestreams.Subscriber} is attached to this publisher. + *

    + * Once a {@link org.reactivestreams.Subscriber} is attached the deferred field result processing will be + * started and published as a series of events. + * + * @return a {@link Publisher} that clients can subscribe to receive incremental payloads. + */ + Publisher getIncrementalItemPublisher(); +} diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java new file mode 100644 index 0000000000..d067ec1327 --- /dev/null +++ b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java @@ -0,0 +1,114 @@ +package graphql.incremental; + +import graphql.ExecutionResult; +import graphql.ExecutionResultImpl; +import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; +import org.reactivestreams.Publisher; + +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +@ExperimentalApi +public class IncrementalExecutionResultImpl extends ExecutionResultImpl implements IncrementalExecutionResult { + private final boolean hasNext; + private final List incremental; + private final Publisher incrementalItemPublisher; + + private IncrementalExecutionResultImpl(Builder builder) { + super(builder); + this.hasNext = builder.hasNext; + this.incremental = builder.incremental; + this.incrementalItemPublisher = builder.incrementalItemPublisher; + } + + @Override + public boolean hasNext() { + return this.hasNext; + } + + @Nullable + @Override + public List getIncremental() { + return this.incremental; + } + + @Override + public Publisher getIncrementalItemPublisher() { + return incrementalItemPublisher; + } + + /** + * @return a {@link Builder} that can be used to create an instance of {@link IncrementalExecutionResultImpl} + */ + public static Builder newIncrementalExecutionResult() { + return new Builder(); + } + + public static Builder fromExecutionResult(ExecutionResult executionResult) { + return new Builder().from(executionResult); + } + + public static Builder fromIncrementalExecutionResult(IncrementalExecutionResult executionResult) { + return new Builder().from(executionResult); + } + + @Override + public IncrementalExecutionResult transform(Consumer> builderConsumer) { + var builder = fromIncrementalExecutionResult(this); + builderConsumer.accept(builder); + return builder.build(); + } + + @Override + public Map toSpecification() { + Map map = new LinkedHashMap<>(super.toSpecification()); + map.put("hasNext", hasNext); + + if (this.incremental != null) { + LinkedList> linkedList = new LinkedList<>(); + for (IncrementalPayload incrementalPayload : this.incremental) { + linkedList.add(incrementalPayload.toSpecification()); + } + map.put("incremental", linkedList); + } + + return map; + } + + public static class Builder extends ExecutionResultImpl.Builder { + private boolean hasNext = true; + public List incremental; + private Publisher incrementalItemPublisher; + + public Builder hasNext(boolean hasNext) { + this.hasNext = hasNext; + return this; + } + + public Builder incremental(List incremental) { + this.incremental = incremental; + return this; + } + + public Builder incrementalItemPublisher(Publisher incrementalItemPublisher) { + this.incrementalItemPublisher = incrementalItemPublisher; + return this; + } + + public Builder from(IncrementalExecutionResult incrementalExecutionResult) { + super.from(incrementalExecutionResult); + this.hasNext = incrementalExecutionResult.hasNext(); + this.incremental = incrementalExecutionResult.getIncremental(); + this.incrementalItemPublisher = incrementalExecutionResult.getIncrementalItemPublisher(); + return this; + } + + public IncrementalExecutionResult build() { + return new IncrementalExecutionResultImpl(this); + } + } +} diff --git a/src/main/java/graphql/incremental/IncrementalPayload.java b/src/main/java/graphql/incremental/IncrementalPayload.java new file mode 100644 index 0000000000..742d857c89 --- /dev/null +++ b/src/main/java/graphql/incremental/IncrementalPayload.java @@ -0,0 +1,166 @@ +package graphql.incremental; + +import graphql.ExperimentalApi; +import graphql.GraphQLError; +import graphql.execution.ResultPath; +import graphql.util.FpKit; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * Represents a payload that can be resolved after the initial response. + */ +@ExperimentalApi +public abstract class IncrementalPayload { + private final List path; + private final String label; + private final List errors; + private final transient Map extensions; + + protected IncrementalPayload(List path, String label, List errors, Map extensions) { + this.path = path; + this.errors = errors; + this.label = label; + this.extensions = extensions; + } + + /** + * @return list of field names and indices from root to the location of the corresponding `@defer` or `@stream` directive. + */ + public List getPath() { + return this.path; + } + + /** + * @return value derived from the corresponding `@defer` or `@stream` directive. + */ + @Nullable + public String getLabel() { + return label; + } + + /** + * @return a list of field errors encountered during execution. + */ + @Nullable + public List getErrors() { + return this.errors; + } + + /** + * @return a map of extensions or null if there are none + */ + @Nullable + public Map getExtensions() { + return this.extensions; + } + + public Map toSpecification() { + Map result = new LinkedHashMap<>(); + + result.put("path", path); + + if (label != null) { + result.put("label", label); + } + + if (errors != null && !errors.isEmpty()) { + result.put("errors", errorsToSpec(errors)); + } + if (extensions != null) { + result.put("extensions", extensions); + } + return result; + } + + protected Object errorsToSpec(List errors) { + List> list = FpKit.arrayListSizedTo(errors); + for (GraphQLError error : errors) { + list.add(error.toSpecification()); + } + return list; + } + + public int hashCode() { + return Objects.hash(path, label, errors, extensions); + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + IncrementalPayload that = (IncrementalPayload) obj; + return Objects.equals(path, that.path) && + Objects.equals(label, that.label) && + Objects.equals(errors, that.errors) && + Objects.equals(extensions, that.extensions); + } + + protected static abstract class Builder> { + protected List path; + protected String label; + protected List errors = new ArrayList<>(); + protected Map extensions; + + public T from(IncrementalPayload incrementalPayload) { + this.path = incrementalPayload.getPath(); + this.label = incrementalPayload.getLabel(); + if (incrementalPayload.getErrors() != null) { + this.errors = new ArrayList<>(incrementalPayload.getErrors()); + } + this.extensions = incrementalPayload.getExtensions(); + return (T) this; + } + + public T path(ResultPath path) { + if (path != null) { + this.path = path.toList(); + } + return (T) this; + } + + public T path(List path) { + this.path = path; + return (T) this; + } + + public T label(String label) { + this.label = label; + return (T) this; + } + + public T errors(List errors) { + this.errors = errors; + return (T) this; + } + + public T addErrors(List errors) { + this.errors.addAll(errors); + return (T) this; + } + + public T addError(GraphQLError error) { + this.errors.add(error); + return (T) this; + } + + public T extensions(Map extensions) { + this.extensions = extensions; + return (T) this; + } + + public T addExtension(String key, Object value) { + this.extensions = (this.extensions == null ? new LinkedHashMap<>() : this.extensions); + this.extensions.put(key, value); + return (T) this; + } + } +} diff --git a/src/main/java/graphql/incremental/StreamPayload.java b/src/main/java/graphql/incremental/StreamPayload.java new file mode 100644 index 0000000000..c8b0f652e8 --- /dev/null +++ b/src/main/java/graphql/incremental/StreamPayload.java @@ -0,0 +1,83 @@ +package graphql.incremental; + +import graphql.ExperimentalApi; +import graphql.GraphQLError; +import org.jspecify.annotations.Nullable; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * Represents a stream payload + */ +@ExperimentalApi +public class StreamPayload extends IncrementalPayload { + private final List items; + + private StreamPayload(List items, List path, String label, List errors, Map extensions) { + super(path, label, errors, extensions); + this.items = items; + } + + /** + * @param the type to cast the result to + * @return the resolved list of items + */ + @Nullable + public List getItems() { + // noinspection unchecked + return (List) this.items; + } + + /** + * @return a map of this payload that strictly follows the spec + */ + @Override + public Map toSpecification() { + Map map = new LinkedHashMap<>(super.toSpecification()); + map.put("items", items); + return map; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), items); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + StreamPayload that = (StreamPayload) obj; + return Objects.equals(items, that.items); + } + + /** + * @return a {@link Builder} that can be used to create an instance of {@link StreamPayload} + */ + public static StreamPayload.Builder newStreamedItem() { + return new StreamPayload.Builder(); + } + + public static class Builder extends IncrementalPayload.Builder { + private List items = null; + + public Builder items(List items) { + this.items = items; + return this; + } + + public Builder from(StreamPayload streamedItem) { + super.from(streamedItem); + this.items = streamedItem.items; + return this; + } + + public StreamPayload build() { + return new StreamPayload(items, this.path, this.label, this.errors, this.extensions); + } + } +} diff --git a/src/main/java/graphql/introspection/GoodFaithIntrospection.java b/src/main/java/graphql/introspection/GoodFaithIntrospection.java new file mode 100644 index 0000000000..ae7da12569 --- /dev/null +++ b/src/main/java/graphql/introspection/GoodFaithIntrospection.java @@ -0,0 +1,177 @@ +package graphql.introspection; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import graphql.ErrorClassification; +import graphql.ExecutionResult; +import graphql.GraphQLContext; +import graphql.GraphQLError; +import graphql.PublicApi; +import graphql.execution.AbortExecutionException; +import graphql.execution.ExecutionContext; +import graphql.language.SourceLocation; +import graphql.normalized.ExecutableNormalizedField; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.schema.FieldCoordinates; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicBoolean; + +import static graphql.normalized.ExecutableNormalizedOperationFactory.Options; +import static graphql.normalized.ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation; +import static graphql.schema.FieldCoordinates.coordinates; + +/** + * This {@link graphql.execution.instrumentation.Instrumentation} ensure that a submitted introspection query is done in + * good faith. + *

    + * There are attack vectors where a crafted introspection query can cause the engine to spend too much time + * producing introspection data. This is especially true on large schemas with lots of types and fields. + *

    + * Schemas form a cyclic graph and hence it's possible to send in introspection queries that can reference those cycles + * and in large schemas this can be expensive and perhaps a "denial of service". + *

    + * This instrumentation only allows one __schema field or one __type field to be present, and it does not allow the `__Type` fields + * to form a cycle, i.e., that can only be present once. This allows the standard and common introspection queries to work + * so tooling such as graphiql can work. + */ +@PublicApi +public class GoodFaithIntrospection { + + /** + * Placing a boolean value under this key in the per request {@link GraphQLContext} will enable + * or disable Good Faith Introspection on that request. + */ + public static final String GOOD_FAITH_INTROSPECTION_DISABLED = "GOOD_FAITH_INTROSPECTION_DISABLED"; + + private static final AtomicBoolean ENABLED_STATE = new AtomicBoolean(true); + /** + * This is the maximum number of executable fields that can be in a good faith introspection query + */ + public static final int GOOD_FAITH_MAX_FIELDS_COUNT = 500; + /** + * This is the maximum depth a good faith introspection query can be + */ + public static final int GOOD_FAITH_MAX_DEPTH_COUNT = 20; + + /** + * @return true if good faith introspection is enabled + */ + public static boolean isEnabledJvmWide() { + return ENABLED_STATE.get(); + } + + /** + * This allows you to disable good faith introspection, which is on by default. + * + * @param flag the desired state + * + * @return the previous state + */ + public static boolean enabledJvmWide(boolean flag) { + return ENABLED_STATE.getAndSet(flag); + } + + private static final Map ALLOWED_FIELD_INSTANCES = Map.of( + coordinates("Query", "__schema"), 1 + , coordinates("Query", "__type"), 1 + + , coordinates("__Type", "fields"), 1 + , coordinates("__Type", "inputFields"), 1 + , coordinates("__Type", "interfaces"), 1 + , coordinates("__Type", "possibleTypes"), 1 + ); + + public static Optional checkIntrospection(ExecutionContext executionContext) { + if (isIntrospectionEnabled(executionContext.getGraphQLContext())) { + ExecutableNormalizedOperation operation; + try { + operation = mkOperation(executionContext); + } catch (AbortExecutionException e) { + BadFaithIntrospectionError error = BadFaithIntrospectionError.tooBigOperation(e.getMessage()); + return Optional.of(ExecutionResult.newExecutionResult().addError(error).build()); + } + ImmutableListMultimap coordinatesToENFs = operation.getCoordinatesToNormalizedFields(); + for (Map.Entry entry : ALLOWED_FIELD_INSTANCES.entrySet()) { + FieldCoordinates coordinates = entry.getKey(); + Integer allowSize = entry.getValue(); + ImmutableList normalizedFields = coordinatesToENFs.get(coordinates); + if (normalizedFields.size() > allowSize) { + BadFaithIntrospectionError error = BadFaithIntrospectionError.tooManyFields(coordinates.toString()); + return Optional.of(ExecutionResult.newExecutionResult().addError(error).build()); + } + } + } + return Optional.empty(); + } + + /** + * This makes an executable operation limited in size then which suits a good faith introspection query. This helps guard + * against malicious queries. + * + * @param executionContext the execution context + * + * @return an executable operation + */ + private static ExecutableNormalizedOperation mkOperation(ExecutionContext executionContext) throws AbortExecutionException { + Options options = Options.defaultOptions() + .maxFieldsCount(GOOD_FAITH_MAX_FIELDS_COUNT) + .maxChildrenDepth(GOOD_FAITH_MAX_DEPTH_COUNT) + .locale(executionContext.getLocale()) + .graphQLContext(executionContext.getGraphQLContext()); + + return createExecutableNormalizedOperation(executionContext.getGraphQLSchema(), + executionContext.getOperationDefinition(), + executionContext.getFragmentsByName(), + executionContext.getCoercedVariables(), + options); + + } + + private static boolean isIntrospectionEnabled(GraphQLContext graphQlContext) { + if (!isEnabledJvmWide()) { + return false; + } + return !graphQlContext.getBoolean(GOOD_FAITH_INTROSPECTION_DISABLED, false); + } + + public static class BadFaithIntrospectionError implements GraphQLError { + private final String message; + + public static BadFaithIntrospectionError tooManyFields(String fieldCoordinate) { + return new BadFaithIntrospectionError(String.format("This request is not asking for introspection in good faith - %s is present too often!", fieldCoordinate)); + } + + public static BadFaithIntrospectionError tooBigOperation(String message) { + return new BadFaithIntrospectionError(String.format("This request is not asking for introspection in good faith - the query is too big: %s", message)); + } + + private BadFaithIntrospectionError(String message) { + this.message = message; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public ErrorClassification getErrorType() { + return ErrorClassification.errorClassification("BadFaithIntrospection"); + } + + @Override + public List getLocations() { + return null; + } + + @Override + public String toString() { + return "BadFaithIntrospectionError{" + + "message='" + message + '\'' + + '}'; + } + } +} diff --git a/src/main/java/graphql/introspection/Introspection.java b/src/main/java/graphql/introspection/Introspection.java index 6b0207b641..a455ec9d78 100644 --- a/src/main/java/graphql/introspection/Introspection.java +++ b/src/main/java/graphql/introspection/Introspection.java @@ -1,13 +1,18 @@ package graphql.introspection; +import com.google.common.collect.ImmutableSet; import graphql.Assert; +import graphql.ExecutionResult; +import graphql.GraphQLContext; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.execution.ExecutionContext; +import graphql.execution.MergedField; +import graphql.execution.MergedSelectionSet; +import graphql.execution.ValuesResolver; import graphql.language.AstPrinter; -import graphql.language.AstValueHelper; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; import graphql.schema.FieldCoordinates; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLCodeRegistry; @@ -24,18 +29,26 @@ import graphql.schema.GraphQLList; import graphql.schema.GraphQLModifiedType; import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLNamedType; import graphql.schema.GraphQLNonNull; import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; -import graphql.schema.GraphQLTypeUtil; import graphql.schema.GraphQLUnionType; -import graphql.schema.visibility.GraphqlFieldVisibility; +import graphql.schema.InputValueWithState; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; import static graphql.Assert.assertTrue; import static graphql.Scalars.GraphQLBoolean; @@ -49,25 +62,129 @@ import static graphql.schema.GraphQLObjectType.newObject; import static graphql.schema.GraphQLTypeReference.typeRef; import static graphql.schema.GraphQLTypeUtil.simplePrint; - +import static graphql.schema.GraphQLTypeUtil.unwrapAllAs; +import static graphql.schema.GraphQLTypeUtil.unwrapOne; + +/** + * GraphQl has a unique capability called Introspection that allow + * consumers to inspect the system and discover the fields and types available and makes the system self documented. + *

    + * Some security recommendations such as OWASP + * recommend that introspection be disabled in production. The {@link Introspection#enabledJvmWide(boolean)} method can be used to disable + * introspection for the whole JVM or you can place {@link Introspection#INTROSPECTION_DISABLED} into the {@link GraphQLContext} of a request + * to disable introspection for that request. + */ @PublicApi public class Introspection { - private static final Map introspectionDataFetchers = new LinkedHashMap<>(); - private static void register(GraphQLFieldsContainer parentType, String fieldName, DataFetcher dataFetcher) { + + /** + * Placing a boolean value under this key in the per request {@link GraphQLContext} will enable + * or disable Introspection on that request. + */ + public static final String INTROSPECTION_DISABLED = "INTROSPECTION_DISABLED"; + private static final AtomicBoolean INTROSPECTION_ENABLED_STATE = new AtomicBoolean(true); + + /** + * This static method will enable / disable Introspection at a JVM wide level. + * + * @param enabled the flag indicating the desired enabled state + * + * @return the previous state of enablement + */ + public static boolean enabledJvmWide(boolean enabled) { + return INTROSPECTION_ENABLED_STATE.getAndSet(enabled); + } + + /** + * @return true if Introspection is enabled at a JVM wide level or false otherwise + */ + public static boolean isEnabledJvmWide() { + return INTROSPECTION_ENABLED_STATE.get(); + } + + /** + * This will look in to the field selection set and see if there are introspection fields, + * and if there is,it checks if introspection should run, and if not it will return an errored {@link ExecutionResult} + * that can be returned to the user. + * + * @param mergedSelectionSet the fields to be executed + * @param executionContext the execution context in play + * + * @return an optional error result + */ + public static Optional isIntrospectionSensible(MergedSelectionSet mergedSelectionSet, ExecutionContext executionContext) { + GraphQLContext graphQLContext = executionContext.getGraphQLContext(); + + boolean isIntrospection = false; + for (String key : mergedSelectionSet.getKeys()) { + String fieldName = mergedSelectionSet.getSubField(key).getName(); + if (fieldName.equals(SchemaMetaFieldDef.getName()) + || fieldName.equals(TypeMetaFieldDef.getName())) { + if (!isIntrospectionEnabled(graphQLContext)) { + return mkDisabledError(mergedSelectionSet.getSubField(key)); + } + isIntrospection = true; + break; + } + } + if (isIntrospection) { + return GoodFaithIntrospection.checkIntrospection(executionContext); + } + return Optional.empty(); + } + + @NonNull + private static Optional mkDisabledError(MergedField schemaField) { + IntrospectionDisabledError error = new IntrospectionDisabledError(schemaField.getSingleField().getSourceLocation()); + return Optional.of(ExecutionResult.newExecutionResult().addError(error).build()); + } + + private static boolean isIntrospectionEnabled(GraphQLContext graphQlContext) { + if (!isEnabledJvmWide()) { + return false; + } + return !graphQlContext.getBoolean(INTROSPECTION_DISABLED, false); + } + + private static final Map> introspectionDataFetchers = new LinkedHashMap<>(); + + private static void register(GraphQLFieldsContainer parentType, String fieldName, IntrospectionDataFetcher introspectionDataFetcher) { + introspectionDataFetchers.put(coordinates(parentType.getName(), fieldName), introspectionDataFetcher); + } + + /** + * To help runtimes such as graalvm, we make sure we have an explicit data fetchers rather then use {@link graphql.schema.PropertyDataFetcher} + * and its reflective mechanisms. This is not reflective because we have the class + * + * @param parentType the containing parent type + * @param fieldName the field name + * @param targetClass the target class of the getter + * @param getter the function to call to get a value of T + * @param for two + */ + private static void register(GraphQLFieldsContainer parentType, String fieldName, Class targetClass, Function getter) { + IntrospectionDataFetcher dataFetcher = env -> { + Object source = env.getSource(); + if (targetClass.isInstance(source)) { + return getter.apply(targetClass.cast(source)); + } + return null; + }; introspectionDataFetchers.put(coordinates(parentType.getName(), fieldName), dataFetcher); } @Internal public static void addCodeForIntrospectionTypes(GraphQLCodeRegistry.Builder codeRegistry) { // place the system __ fields into the mix. They have no parent types - codeRegistry.systemDataFetcher(systemCoordinates(SchemaMetaFieldDef.getName()), SchemaMetaFieldDefDataFetcher); - codeRegistry.systemDataFetcher(systemCoordinates(TypeNameMetaFieldDef.getName()), TypeNameMetaFieldDefDataFetcher); - codeRegistry.systemDataFetcher(systemCoordinates(TypeMetaFieldDef.getName()), TypeMetaFieldDefDataFetcher); + codeRegistry.dataFetcherIfAbsent(systemCoordinates(SchemaMetaFieldDef.getName()), SchemaMetaFieldDefDataFetcher); + codeRegistry.dataFetcherIfAbsent(systemCoordinates(TypeNameMetaFieldDef.getName()), TypeNameMetaFieldDefDataFetcher); + codeRegistry.dataFetcherIfAbsent(systemCoordinates(TypeMetaFieldDef.getName()), TypeMetaFieldDefDataFetcher); - introspectionDataFetchers.forEach(codeRegistry::dataFetcher); + introspectionDataFetchers.forEach(codeRegistry::dataFetcherIfAbsent); } + public enum TypeKind { SCALAR, OBJECT, @@ -82,7 +199,7 @@ public enum TypeKind { public static final GraphQLEnumType __TypeKind = GraphQLEnumType.newEnum() .name("__TypeKind") .description("An enum describing what kind of type a given __Type is") - .value("SCALAR", TypeKind.SCALAR, "Indicates this type is a scalar.") + .value("SCALAR", TypeKind.SCALAR, "Indicates this type is a scalar. `specifiedByURL` is a valid field") .value("OBJECT", TypeKind.OBJECT, "Indicates this type is an object. `fields` and `interfaces` are valid fields.") .value("INTERFACE", TypeKind.INTERFACE, "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.") .value("UNION", TypeKind.UNION, "Indicates this type is a union. `possibleTypes` is a valid field.") @@ -92,7 +209,7 @@ public enum TypeKind { .value("NON_NULL", TypeKind.NON_NULL, "Indicates this type is a non-null. `ofType` is a valid field.") .build(); - private static final DataFetcher kindDataFetcher = environment -> { + private static final IntrospectionDataFetcher kindDataFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLScalarType) { return TypeKind.SCALAR; @@ -114,14 +231,14 @@ public enum TypeKind { return Assert.assertShouldNeverHappen("Unknown kind of type: %s", type); } }; - private static final DataFetcher nameDataFetcher = environment -> { + private static final IntrospectionDataFetcher nameDataFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLNamedSchemaElement) { return ((GraphQLNamedSchemaElement) type).getName(); } return null; }; - private static final DataFetcher descriptionDataFetcher = environment -> { + private static final IntrospectionDataFetcher descriptionDataFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLNamedSchemaElement) { return ((GraphQLNamedSchemaElement) type).getDescription(); @@ -143,25 +260,68 @@ public enum TypeKind { .field(newFieldDefinition() .name("defaultValue") .type(GraphQLString)) + .field(newFieldDefinition() + .name("isDeprecated") + .type(GraphQLBoolean)) + .field(newFieldDefinition() + .name("deprecationReason") + .type(GraphQLString)) .build(); static { - register(__InputValue, "defaultValue", environment -> { - if (environment.getSource() instanceof GraphQLArgument) { - GraphQLArgument inputField = environment.getSource(); - return inputField.getDefaultValue() != null ? print(inputField.getDefaultValue(), inputField.getType()) : null; - } else if (environment.getSource() instanceof GraphQLInputObjectField) { - GraphQLInputObjectField inputField = environment.getSource(); - return inputField.getDefaultValue() != null ? print(inputField.getDefaultValue(), inputField.getType()) : null; + IntrospectionDataFetcher defaultValueDataFetcher = environment -> { + Object type = environment.getSource(); + if (type instanceof GraphQLArgument) { + GraphQLArgument inputField = (GraphQLArgument) type; + return inputField.hasSetDefaultValue() + ? printDefaultValue(inputField.getArgumentDefaultValue(), inputField.getType(), environment.getGraphQlContext(), environment.getLocale()) + : null; + } else if (type instanceof GraphQLInputObjectField) { + GraphQLInputObjectField inputField = (GraphQLInputObjectField) type; + return inputField.hasSetDefaultValue() + ? printDefaultValue(inputField.getInputFieldDefaultValue(), inputField.getType(), environment.getGraphQlContext(), environment.getLocale()) + : null; + } + return null; + }; + IntrospectionDataFetcher isDeprecatedDataFetcher = environment -> { + Object type = environment.getSource(); + if (type instanceof GraphQLArgument) { + return ((GraphQLArgument) type).isDeprecated(); + } else if (type instanceof GraphQLInputObjectField) { + return ((GraphQLInputObjectField) type).isDeprecated(); + } + return null; + }; + IntrospectionDataFetcher typeDataFetcher = environment -> { + Object type = environment.getSource(); + if (type instanceof GraphQLArgument) { + return ((GraphQLArgument) type).getType(); + } else if (type instanceof GraphQLInputObjectField) { + return ((GraphQLInputObjectField) type).getType(); } return null; - }); + }; + IntrospectionDataFetcher deprecationReasonDataFetcher = environment -> { + Object type = environment.getSource(); + if (type instanceof GraphQLArgument) { + return ((GraphQLArgument) type).getDeprecationReason(); + } else if (type instanceof GraphQLInputObjectField) { + return ((GraphQLInputObjectField) type).getDeprecationReason(); + } + return null; + }; + register(__InputValue, "name", nameDataFetcher); register(__InputValue, "description", descriptionDataFetcher); + register(__InputValue, "type", typeDataFetcher); + register(__InputValue, "defaultValue", defaultValueDataFetcher); + register(__InputValue, "isDeprecated", isDeprecatedDataFetcher); + register(__InputValue, "deprecationReason", deprecationReasonDataFetcher); } - private static String print(Object value, GraphQLInputType type) { - return AstPrinter.printAst(AstValueHelper.astFromValue(value, type)); + private static String printDefaultValue(InputValueWithState inputValueWithState, GraphQLInputType type, GraphQLContext graphQLContext, Locale locale) { + return AstPrinter.printAst(ValuesResolver.valueToLiteral(inputValueWithState, type, graphQLContext, locale)); } @@ -175,7 +335,11 @@ private static String print(Object value, GraphQLInputType type) { .type(GraphQLString)) .field(newFieldDefinition() .name("args") - .type(nonNull(list(nonNull(__InputValue))))) + .type(nonNull(list(nonNull(__InputValue)))) + .argument(newArgument() + .name("includeDeprecated") + .type(GraphQLBoolean) + .defaultValueProgrammatic(false))) .field(newFieldDefinition() .name("type") .type(nonNull(typeRef("__Type")))) @@ -188,16 +352,19 @@ private static String print(Object value, GraphQLInputType type) { .build(); static { - register(__Field, "args", environment -> { + IntrospectionDataFetcher argsDataFetcher = environment -> { Object type = environment.getSource(); - return ((GraphQLFieldDefinition) type).getArguments(); - }); - register(__Field, "isDeprecated", environment -> { - Object type = environment.getSource(); - return ((GraphQLFieldDefinition) type).isDeprecated(); - }); + GraphQLFieldDefinition fieldDef = (GraphQLFieldDefinition) type; + Boolean includeDeprecated = environment.getArgument("includeDeprecated"); + return ImmutableKit.filter(fieldDef.getArguments(), + arg -> includeDeprecated || !arg.isDeprecated()); + }; register(__Field, "name", nameDataFetcher); register(__Field, "description", descriptionDataFetcher); + register(__Field, "args", argsDataFetcher); + register(__Field, "type", GraphQLFieldDefinition.class, GraphQLFieldDefinition::getType); + register(__Field, "isDeprecated", GraphQLFieldDefinition.class, GraphQLFieldDefinition::isDeprecated); + register(__Field, "deprecationReason", GraphQLFieldDefinition.class, GraphQLFieldDefinition::getDeprecationReason); } @@ -218,48 +385,45 @@ private static String print(Object value, GraphQLInputType type) { .build(); static { - register(__EnumValue, "isDeprecated", environment -> { - GraphQLEnumValueDefinition enumValue = environment.getSource(); - return enumValue.isDeprecated(); - }); register(__EnumValue, "name", nameDataFetcher); register(__EnumValue, "description", descriptionDataFetcher); + register(__EnumValue, "isDeprecated", GraphQLEnumValueDefinition.class, GraphQLEnumValueDefinition::isDeprecated); + register(__EnumValue, "deprecationReason", GraphQLEnumValueDefinition.class, GraphQLEnumValueDefinition::getDeprecationReason); } - private static final DataFetcher fieldsFetcher = environment -> { + private static final IntrospectionDataFetcher fieldsFetcher = environment -> { Object type = environment.getSource(); - Boolean includeDeprecated = environment.getArgument("includeDeprecated"); if (type instanceof GraphQLFieldsContainer) { GraphQLFieldsContainer fieldsContainer = (GraphQLFieldsContainer) type; + Boolean includeDeprecated = environment.getArgument("includeDeprecated"); List fieldDefinitions = environment .getGraphQLSchema() + .getCodeRegistry() .getFieldVisibility() .getFieldDefinitions(fieldsContainer); if (includeDeprecated) { return fieldDefinitions; } - List filtered = new ArrayList<>(fieldDefinitions); - for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { - if (fieldDefinition.isDeprecated()) { - filtered.remove(fieldDefinition); - } - } - return filtered; + return ImmutableKit.filter(fieldDefinitions, + field -> !field.isDeprecated()); } return null; }; - private static final DataFetcher interfacesFetcher = environment -> { + private static final IntrospectionDataFetcher interfacesFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLObjectType) { return ((GraphQLObjectType) type).getInterfaces(); } + if (type instanceof GraphQLInterfaceType) { + return ((GraphQLInterfaceType) type).getInterfaces(); + } return null; }; - private static final DataFetcher possibleTypesFetcher = environment -> { + private static final IntrospectionDataFetcher possibleTypesFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLInterfaceType) { return environment.getGraphQLSchema().getImplementations((GraphQLInterfaceType) type); @@ -270,44 +434,61 @@ private static String print(Object value, GraphQLInputType type) { return null; }; - private static final DataFetcher enumValuesTypesFetcher = environment -> { + private static final IntrospectionDataFetcher enumValuesTypesFetcher = environment -> { Object type = environment.getSource(); - Boolean includeDeprecated = environment.getArgument("includeDeprecated"); if (type instanceof GraphQLEnumType) { + Boolean includeDeprecated = environment.getArgument("includeDeprecated"); List values = ((GraphQLEnumType) type).getValues(); if (includeDeprecated) { return values; } - List filtered = new ArrayList<>(values); - for (GraphQLEnumValueDefinition valueDefinition : values) { - if (valueDefinition.isDeprecated()) { - filtered.remove(valueDefinition); - } - } - return filtered; + return ImmutableKit.filter(values, + enumValue -> !enumValue.isDeprecated()); } return null; }; - private static final DataFetcher inputFieldsFetcher = environment -> { + private static final IntrospectionDataFetcher inputFieldsFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLInputObjectType) { - GraphqlFieldVisibility fieldVisibility = environment + Boolean includeDeprecated = environment.getArgument("includeDeprecated"); + List inputFields = environment .getGraphQLSchema() - .getFieldVisibility(); - return fieldVisibility.getFieldDefinitions((GraphQLInputObjectType) type); + .getCodeRegistry() + .getFieldVisibility() + .getFieldDefinitions((GraphQLInputObjectType) type); + if (includeDeprecated) { + return inputFields; + } + return ImmutableKit.filter(inputFields, + inputField -> !inputField.isDeprecated()); } return null; }; - private static final DataFetcher OfTypeFetcher = environment -> { + private static final IntrospectionDataFetcher OfTypeFetcher = environment -> { Object type = environment.getSource(); if (type instanceof GraphQLModifiedType) { - return GraphQLTypeUtil.unwrapOne((GraphQLModifiedType) type); + return unwrapOne((GraphQLModifiedType) type); + } + return null; + }; + + private static final IntrospectionDataFetcher specifiedByUrlDataFetcher = environment -> { + Object type = environment.getSource(); + if (type instanceof GraphQLScalarType) { + return ((GraphQLScalarType) type).getSpecifiedByUrl(); } return null; }; + private static final IntrospectionDataFetcher isOneOfFetcher = environment -> { + Object type = environment.getSource(); + if (type instanceof GraphQLInputObjectType) { + return ((GraphQLInputObjectType) type).isOneOf(); + } + return null; + }; public static final GraphQLObjectType __Type = newObject() .name("__Type") @@ -326,7 +507,7 @@ private static String print(Object value, GraphQLInputType type) { .argument(newArgument() .name("includeDeprecated") .type(GraphQLBoolean) - .defaultValue(false))) + .defaultValueProgrammatic(false))) .field(newFieldDefinition() .name("interfaces") .type(list(nonNull(typeRef("__Type"))))) @@ -339,25 +520,44 @@ private static String print(Object value, GraphQLInputType type) { .argument(newArgument() .name("includeDeprecated") .type(GraphQLBoolean) - .defaultValue(false))) + .defaultValueProgrammatic(false))) .field(newFieldDefinition() .name("inputFields") - .type(list(nonNull(__InputValue)))) + .type(list(nonNull(__InputValue))) + .argument(newArgument() + .name("includeDeprecated") + .type(GraphQLBoolean) + .defaultValueProgrammatic(false))) .field(newFieldDefinition() .name("ofType") .type(typeRef("__Type"))) + .field(newFieldDefinition() + .name("isOneOf") + .description("This field is considered experimental because it has not yet been ratified in the graphql specification") + .type(GraphQLBoolean)) + .field(newFieldDefinition() + .name("specifiedByURL") + .type(GraphQLString)) + .field(newFieldDefinition() + .name("specifiedByUrl") + .type(GraphQLString) + .deprecate("This legacy name has been replaced by `specifiedByURL`") + ) .build(); static { register(__Type, "kind", kindDataFetcher); + register(__Type, "name", nameDataFetcher); + register(__Type, "description", descriptionDataFetcher); register(__Type, "fields", fieldsFetcher); register(__Type, "interfaces", interfacesFetcher); register(__Type, "possibleTypes", possibleTypesFetcher); register(__Type, "enumValues", enumValuesTypesFetcher); register(__Type, "inputFields", inputFieldsFetcher); register(__Type, "ofType", OfTypeFetcher); - register(__Type, "name", nameDataFetcher); - register(__Type, "description", descriptionDataFetcher); + register(__Type, "isOneOf", isOneOfFetcher); + register(__Type, "specifiedByURL", specifiedByUrlDataFetcher); + register(__Type, "specifiedByUrl", specifiedByUrlDataFetcher); // note that this field is deprecated } @@ -369,6 +569,7 @@ public enum DirectiveLocation { FRAGMENT_DEFINITION, FRAGMENT_SPREAD, INLINE_FRAGMENT, + VARIABLE_DEFINITION, // // schema SDL places // @@ -390,10 +591,12 @@ public enum DirectiveLocation { .description("An enum describing valid locations where a directive can be placed") .value("QUERY", DirectiveLocation.QUERY, "Indicates the directive is valid on queries.") .value("MUTATION", DirectiveLocation.MUTATION, "Indicates the directive is valid on mutations.") + .value("SUBSCRIPTION", DirectiveLocation.SUBSCRIPTION, "Indicates the directive is valid on subscriptions.") .value("FIELD", DirectiveLocation.FIELD, "Indicates the directive is valid on fields.") .value("FRAGMENT_DEFINITION", DirectiveLocation.FRAGMENT_DEFINITION, "Indicates the directive is valid on fragment definitions.") .value("FRAGMENT_SPREAD", DirectiveLocation.FRAGMENT_SPREAD, "Indicates the directive is valid on fragment spreads.") .value("INLINE_FRAGMENT", DirectiveLocation.INLINE_FRAGMENT, "Indicates the directive is valid on inline fragments.") + .value("VARIABLE_DEFINITION", DirectiveLocation.VARIABLE_DEFINITION, "Indicates the directive is valid on variable definitions.") // // from schema SDL PR https://github.com/facebook/graphql/pull/90 // @@ -411,62 +614,46 @@ public enum DirectiveLocation { .build(); - @SuppressWarnings("deprecation") // because graphql spec still has the deprecated fields public static final GraphQLObjectType __Directive = newObject() .name("__Directive") .field(newFieldDefinition() .name("name") - .type(GraphQLString)) + .description("The __Directive type represents a Directive that a server supports.") + .type(nonNull(GraphQLString))) .field(newFieldDefinition() .name("description") .type(GraphQLString)) + .field(newFieldDefinition() + .name("isRepeatable") + .type(nonNull(GraphQLBoolean))) .field(newFieldDefinition() .name("locations") - .type(list(nonNull(__DirectiveLocation)))) + .type(nonNull(list(nonNull(__DirectiveLocation))))) .field(newFieldDefinition() .name("args") - .type(nonNull(list(nonNull(__InputValue))))) - .field(newFieldDefinition() - .name("onOperation") - .type(GraphQLBoolean) - .deprecate("Use `locations`.")) - .field(newFieldDefinition() - .name("onFragment") - .type(GraphQLBoolean) - .deprecate("Use `locations`.")) - .field(newFieldDefinition() - .name("onField") - .type(GraphQLBoolean) - .deprecate("Use `locations`.")) + .type(nonNull(list(nonNull(__InputValue)))) + .argument(newArgument() + .name("includeDeprecated") + .type(GraphQLBoolean) + .defaultValueProgrammatic(false))) .build(); static { - register(__Directive, "locations", environment -> { + IntrospectionDataFetcher locationsDataFetcher = environment -> { GraphQLDirective directive = environment.getSource(); return new ArrayList<>(directive.validLocations()); - }); - register(__Directive, "args", environment -> { + }; + IntrospectionDataFetcher argsDataFetcher = environment -> { GraphQLDirective directive = environment.getSource(); - return directive.getArguments(); - }); - register(__Directive, "onOperation", environment -> { - GraphQLDirective directive = environment.getSource(); - return directive.isOnOperation(); - }); - register(__Directive, "onFragment", environment -> { - GraphQLDirective directive = environment.getSource(); - return directive.isOnFragment() || - (directive.validLocations().contains(DirectiveLocation.INLINE_FRAGMENT) - && directive.validLocations().contains(DirectiveLocation.FRAGMENT_SPREAD)); - }); - register(__Directive, "onField", environment -> { - GraphQLDirective directive = environment.getSource(); - return directive.isOnField() || - directive.validLocations().contains(DirectiveLocation.FIELD); - }); - + Boolean includeDeprecated = environment.getArgument("includeDeprecated"); + return ImmutableKit.filter(directive.getArguments(), + arg -> includeDeprecated || !arg.isDeprecated()); + }; register(__Directive, "name", nameDataFetcher); register(__Directive, "description", descriptionDataFetcher); + register(__Directive, "isRepeatable", GraphQLDirective.class, GraphQLDirective::isRepeatable); + register(__Directive, "locations", locationsDataFetcher); + register(__Directive, "args", argsDataFetcher); } public static final GraphQLObjectType __Schema = newObject() @@ -474,6 +661,9 @@ public enum DirectiveLocation { .description("A GraphQL Introspection defines the capabilities" + " of a GraphQL server. It exposes all available types and directives on " + "the server, the entry points for query, mutation, and subscription operations.") + .field(newFieldDefinition() + .name("description") + .type(GraphQLString)) .field(newFieldDefinition() .name("types") .description("A list of all types supported by this server.") @@ -488,103 +678,166 @@ public enum DirectiveLocation { .type(__Type)) .field(newFieldDefinition() .name("directives") - .description("'A list of all directives supported by this server.") + .description("A list of all directives supported by this server.") .type(nonNull(list(nonNull(__Directive))))) .field(newFieldDefinition() .name("subscriptionType") - .description("'If this server support subscription, the type that subscription operations will be rooted at.") + .description("If this server support subscription, the type that subscription operations will be rooted at.") .type(__Type)) .build(); static { - register(__Schema, "types", environment -> { - GraphQLSchema schema = environment.getSource(); - return schema.getAllTypesAsList(); - }); - register(__Schema, "queryType", environment -> { - GraphQLSchema schema = environment.getSource(); - return schema.getQueryType(); - }); - register(__Schema, "mutationType", environment -> { - GraphQLSchema schema = environment.getSource(); - return schema.getMutationType(); - }); - register(__Schema, "directives", environment -> environment.getGraphQLSchema().getDirectives()); - register(__Schema, "subscriptionType", environment -> { - GraphQLSchema schema = environment.getSource(); - return schema.getSubscriptionType(); - }); + IntrospectionDataFetcher descriptionsDataFetcher = environment -> environment.getGraphQLSchema().getDescription(); + + register(__Schema, "description", descriptionsDataFetcher); + register(__Schema, "types", GraphQLSchema.class, GraphQLSchema::getAllTypesAsList); + register(__Schema, "queryType", GraphQLSchema.class, GraphQLSchema::getQueryType); + register(__Schema, "mutationType", GraphQLSchema.class, GraphQLSchema::getMutationType); + register(__Schema, "directives", GraphQLSchema.class, GraphQLSchema::getDirectives); + register(__Schema, "subscriptionType", GraphQLSchema.class, GraphQLSchema::getSubscriptionType); } - public static final DataFetcher SchemaMetaFieldDefDataFetcher = DataFetchingEnvironment::getGraphQLSchema; - public static final GraphQLFieldDefinition SchemaMetaFieldDef = newFieldDefinition() - .name("__schema") - .type(nonNull(__Schema)) - .description("Access the current type schema of this server.") + public static final GraphQLFieldDefinition SchemaMetaFieldDef = buildSchemaField(__Schema); + public static final GraphQLFieldDefinition TypeMetaFieldDef = buildTypeField(__Schema); + public static final GraphQLFieldDefinition TypeNameMetaFieldDef = newFieldDefinition() + .name("__typename") + .type(nonNull(GraphQLString)) + .description("The name of the current Object type at runtime.") .build(); - public static final DataFetcher TypeMetaFieldDefDataFetcher = environment -> { + public static final Set INTROSPECTION_SYSTEM_FIELDS = ImmutableSet.of( + Introspection.SchemaMetaFieldDef.getName(), + Introspection.TypeMetaFieldDef.getName(), + Introspection.TypeNameMetaFieldDef.getName() + ); + + public static final IntrospectionDataFetcher SchemaMetaFieldDefDataFetcher = IntrospectionDataFetchingEnvironment::getGraphQLSchema; + + public static final IntrospectionDataFetcher TypeMetaFieldDefDataFetcher = environment -> { String name = environment.getArgument("name"); return environment.getGraphQLSchema().getType(name); }; - public static final GraphQLFieldDefinition TypeMetaFieldDef = newFieldDefinition() - .name("__type") - .type(__Type) - .description("Request the type information of a single type.") - .argument(newArgument() - .name("name") - .type(nonNull(GraphQLString))) - .build(); - public static final DataFetcher TypeNameMetaFieldDefDataFetcher = environment -> simplePrint(environment.getParentType()); + // __typename is always available + public static final IntrospectionDataFetcher TypeNameMetaFieldDefDataFetcher = environment -> simplePrint(environment.getParentType()); - public static final GraphQLFieldDefinition TypeNameMetaFieldDef = newFieldDefinition() - .name("__typename") - .type(nonNull(GraphQLString)) - .description("The name of the current Object type at runtime.") - .build(); + @Internal + public static GraphQLFieldDefinition buildSchemaField(GraphQLObjectType introspectionSchemaType) { + return newFieldDefinition() + .name("__schema") + .type(nonNull(introspectionSchemaType)) + .description("Access the current type schema of this server.") + .build(); + } + + @Internal + public static GraphQLFieldDefinition buildTypeField(GraphQLObjectType introspectionSchemaType) { + + GraphQLOutputType fieldType = introspectionSchemaType.getFieldDefinition("types").getType(); + GraphQLObjectType underscoreType = unwrapAllAs(fieldType); + return newFieldDefinition() + .name("__type") + .type(underscoreType) + .description("Request the type information of a single type.") + .argument(newArgument() + .name("name") + .type(nonNull(GraphQLString))) + .build(); + } + private static final Set introspectionTypes = new HashSet<>(); static { - // make sure all TypeReferences are resolved - GraphQLSchema.newSchema() - .query(GraphQLObjectType.newObject() - .name("IntrospectionQuery") - .field(SchemaMetaFieldDef) - .field(TypeMetaFieldDef) - .field(TypeNameMetaFieldDef) - .build()) + GraphQLObjectType IntrospectionQuery = newObject() + .name("IntrospectionQuery") + .field(SchemaMetaFieldDef) + .field(TypeMetaFieldDef) + .field(TypeNameMetaFieldDef) .build(); + + introspectionTypes.add(__DirectiveLocation.getName()); + introspectionTypes.add(__TypeKind.getName()); + introspectionTypes.add(__Type.getName()); + introspectionTypes.add(__Schema.getName()); + introspectionTypes.add(__InputValue.getName()); + introspectionTypes.add(__Field.getName()); + introspectionTypes.add(__EnumValue.getName()); + introspectionTypes.add(__Directive.getName()); + + // make sure all TypeReferences are resolved. + // note: it is important to put this on the bottom of static code block. + GraphQLSchema.newSchema().query(IntrospectionQuery).build(); + } + + public static boolean isIntrospectionTypes(GraphQLNamedType type) { + return introspectionTypes.contains(type.getName()); + } + + public static boolean isIntrospectionTypes(String typeName) { + return introspectionTypes.contains(typeName); } /** * This will look up a field definition by name, and understand that fields like __typename and __schema are special - * and take precedence in field resolution + * and take precedence in field resolution. If the parent type is a union type, then the only field allowed + * is `__typename`. * * @param schema the schema to use * @param parentType the type of the parent object * @param fieldName the field to look up * - * @return a field definition otherwise throws an assertion exception if its null + * @return a field definition otherwise throws an assertion exception if it's null */ public static GraphQLFieldDefinition getFieldDef(GraphQLSchema schema, GraphQLCompositeType parentType, String fieldName) { - if (schema.getQueryType() == parentType) { - if (fieldName.equals(SchemaMetaFieldDef.getName())) { - return SchemaMetaFieldDef; - } - if (fieldName.equals(TypeMetaFieldDef.getName())) { - return TypeMetaFieldDef; - } - } - if (fieldName.equals(TypeNameMetaFieldDef.getName())) { - return TypeNameMetaFieldDef; + GraphQLFieldDefinition fieldDefinition = getSystemFieldDef(schema, parentType, fieldName); + if (fieldDefinition != null) { + return fieldDefinition; } assertTrue(parentType instanceof GraphQLFieldsContainer, "should not happen : parent type must be an object or interface %s", parentType); GraphQLFieldsContainer fieldsContainer = (GraphQLFieldsContainer) parentType; - GraphQLFieldDefinition fieldDefinition = schema.getCodeRegistry().getFieldVisibility().getFieldDefinition(fieldsContainer, fieldName); - Assert.assertTrue(fieldDefinition != null, "Unknown field '%s'", fieldName); + fieldDefinition = schema.getCodeRegistry().getFieldVisibility().getFieldDefinition(fieldsContainer, fieldName); + assertTrue(fieldDefinition != null, "Unknown field '%s' for type %s", fieldName, fieldsContainer.getName()); return fieldDefinition; } + + /** + * This will look up a field definition by name, and understand that fields like __typename and __schema are special + * and take precedence in field resolution + * + * @param schema the schema to use + * @param parentType the type of the parent {@link GraphQLFieldsContainer} + * @param fieldName the field to look up + * + * @return a field definition otherwise throws an assertion exception if it's null + */ + public static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, GraphQLFieldsContainer parentType, String fieldName) { + // this method is optimized to look up the most common case first (type for field) and hence suits the hot path of the execution engine + // and as a small benefit does not allocate any assertions unless it completely failed + GraphQLFieldDefinition fieldDefinition = schema.getCodeRegistry().getFieldVisibility().getFieldDefinition(parentType, fieldName); + if (fieldDefinition == null) { + // we look up system fields second because they are less likely to be the field in question + fieldDefinition = getSystemFieldDef(schema, parentType, fieldName); + if (fieldDefinition == null) { + Assert.assertShouldNeverHappen(String.format("Unknown field '%s' for type %s", fieldName, parentType.getName())); + } + } + return fieldDefinition; + } + + private static GraphQLFieldDefinition getSystemFieldDef(GraphQLSchema schema, GraphQLCompositeType parentType, String fieldName) { + if (schema.getQueryType() == parentType) { + if (fieldName.equals(schema.getIntrospectionSchemaFieldDefinition().getName())) { + return schema.getIntrospectionSchemaFieldDefinition(); + } + if (fieldName.equals(schema.getIntrospectionTypeFieldDefinition().getName())) { + return schema.getIntrospectionTypeFieldDefinition(); + } + } + if (fieldName.equals(schema.getIntrospectionTypenameFieldDefinition().getName())) { + return schema.getIntrospectionTypenameFieldDefinition(); + } + return null; + } } diff --git a/src/main/java/graphql/introspection/IntrospectionDataFetcher.java b/src/main/java/graphql/introspection/IntrospectionDataFetcher.java new file mode 100644 index 0000000000..8eb96d7cf3 --- /dev/null +++ b/src/main/java/graphql/introspection/IntrospectionDataFetcher.java @@ -0,0 +1,11 @@ +package graphql.introspection; + +import graphql.Internal; +import graphql.TrivialDataFetcher; + +/** + * Special DataFetcher which is only used inside {@link Introspection} + */ +@Internal +public interface IntrospectionDataFetcher extends TrivialDataFetcher { +} diff --git a/src/main/java/graphql/introspection/IntrospectionDataFetchingEnvironment.java b/src/main/java/graphql/introspection/IntrospectionDataFetchingEnvironment.java new file mode 100644 index 0000000000..a5892670df --- /dev/null +++ b/src/main/java/graphql/introspection/IntrospectionDataFetchingEnvironment.java @@ -0,0 +1,25 @@ +package graphql.introspection; + +import graphql.Internal; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; + +import java.util.Map; + +/** + * Extracted from {@link graphql.schema.DataFetchingEnvironment} to only capture + * the data really needed for {@link Introspection} + */ +@Internal +public interface IntrospectionDataFetchingEnvironment { + + T getSource(); + + Map getArguments(); + + GraphQLSchema getGraphQLSchema(); + + T getArgument(String name); + + GraphQLType getParentType(); +} diff --git a/src/main/java/graphql/introspection/IntrospectionDisabledError.java b/src/main/java/graphql/introspection/IntrospectionDisabledError.java new file mode 100644 index 0000000000..26e75d1bd5 --- /dev/null +++ b/src/main/java/graphql/introspection/IntrospectionDisabledError.java @@ -0,0 +1,34 @@ +package graphql.introspection; + +import graphql.ErrorClassification; +import graphql.GraphQLError; +import graphql.Internal; +import graphql.language.SourceLocation; + +import java.util.Collections; +import java.util.List; + +@Internal +public class IntrospectionDisabledError implements GraphQLError { + + private final List locations; + + public IntrospectionDisabledError(SourceLocation sourceLocation) { + locations = sourceLocation == null ? Collections.emptyList() : Collections.singletonList(sourceLocation); + } + + @Override + public String getMessage() { + return "Introspection has been disabled for this request"; + } + + @Override + public List getLocations() { + return locations; + } + + @Override + public ErrorClassification getErrorType() { + return ErrorClassification.errorClassification("IntrospectionDisabled"); + } +} diff --git a/src/main/java/graphql/introspection/IntrospectionQuery.java b/src/main/java/graphql/introspection/IntrospectionQuery.java index d7c8bdc6df..694ccaab42 100644 --- a/src/main/java/graphql/introspection/IntrospectionQuery.java +++ b/src/main/java/graphql/introspection/IntrospectionQuery.java @@ -1,103 +1,13 @@ package graphql.introspection; -public interface IntrospectionQuery { +import graphql.PublicApi; - String INTROSPECTION_QUERY = "\n" + - " query IntrospectionQuery {\n" + - " __schema {\n" + - " queryType { name }\n" + - " mutationType { name }\n" + - " subscriptionType { name }\n" + - " types {\n" + - " ...FullType\n" + - " }\n" + - " directives {\n" + - " name\n" + - " description\n" + - " locations\n" + - " args {\n" + - " ...InputValue\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - "\n" + - " fragment FullType on __Type {\n" + - " kind\n" + - " name\n" + - " description\n" + - " fields(includeDeprecated: true) {\n" + - " name\n" + - " description\n" + - " args {\n" + - " ...InputValue\n" + - " }\n" + - " type {\n" + - " ...TypeRef\n" + - " }\n" + - " isDeprecated\n" + - " deprecationReason\n" + - " }\n" + - " inputFields {\n" + - " ...InputValue\n" + - " }\n" + - " interfaces {\n" + - " ...TypeRef\n" + - " }\n" + - " enumValues(includeDeprecated: true) {\n" + - " name\n" + - " description\n" + - " isDeprecated\n" + - " deprecationReason\n" + - " }\n" + - " possibleTypes {\n" + - " ...TypeRef\n" + - " }\n" + - " }\n" + - "\n" + - " fragment InputValue on __InputValue {\n" + - " name\n" + - " description\n" + - " type { ...TypeRef }\n" + - " defaultValue\n" + - " }\n" + - "\n" + - // - // The depth of the types is actually an arbitrary decision. It could be any depth in fact. This depth - // was taken from GraphIQL https://github.com/graphql/graphiql/blob/master/src/utility/introspectionQueries.js - // which uses 7 levels and hence could represent a type like say [[[[[Float!]]]]] - // - "fragment TypeRef on __Type {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " ofType {\n" + - " kind\n" + - " name\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - " }\n" + - "\n"; +@PublicApi +public interface IntrospectionQuery { + /** + * This is the default introspection query provided by graphql-java + * + * @see IntrospectionQueryBuilder for ways to customize the introspection query + */ + String INTROSPECTION_QUERY = IntrospectionQueryBuilder.build(); } diff --git a/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java b/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java new file mode 100644 index 0000000000..d4d37005b0 --- /dev/null +++ b/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java @@ -0,0 +1,423 @@ +package graphql.introspection; + +import com.google.common.collect.ImmutableList; +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.language.AstPrinter; +import graphql.language.BooleanValue; +import graphql.language.Document; +import graphql.language.OperationDefinition; +import graphql.language.SelectionSet; + +import java.util.List; +import java.util.Objects; + +import static graphql.language.Argument.newArgument; +import static graphql.language.Document.newDocument; +import static graphql.language.Field.newField; +import static graphql.language.FragmentDefinition.newFragmentDefinition; +import static graphql.language.FragmentSpread.newFragmentSpread; +import static graphql.language.OperationDefinition.newOperationDefinition; +import static graphql.language.SelectionSet.newSelectionSet; +import static graphql.language.TypeName.newTypeName; + +/** + * {@link IntrospectionQueryBuilder} allows you to build introspection queries controlled + * by the options you specify + */ +@PublicApi +public class IntrospectionQueryBuilder { + public static class Options { + + private final boolean descriptions; + + private final boolean specifiedByUrl; + private final boolean isOneOf; + + private final boolean directiveIsRepeatable; + + private final boolean schemaDescription; + + private final boolean inputValueDeprecation; + + private final int typeRefFragmentDepth; + + private Options(boolean descriptions, + boolean specifiedByUrl, + boolean isOneOf, + boolean directiveIsRepeatable, + boolean schemaDescription, + boolean inputValueDeprecation, + int typeRefFragmentDepth) { + this.descriptions = descriptions; + this.specifiedByUrl = specifiedByUrl; + this.isOneOf = isOneOf; + this.directiveIsRepeatable = directiveIsRepeatable; + this.schemaDescription = schemaDescription; + this.inputValueDeprecation = inputValueDeprecation; + this.typeRefFragmentDepth = typeRefFragmentDepth; + } + + public boolean isDescriptions() { + return descriptions; + } + + public boolean isSpecifiedByUrl() { + return specifiedByUrl; + } + + public boolean isOneOf() { + return isOneOf; + } + + public boolean isDirectiveIsRepeatable() { + return directiveIsRepeatable; + } + + public boolean isSchemaDescription() { + return schemaDescription; + } + + public boolean isInputValueDeprecation() { + return inputValueDeprecation; + } + + public int getTypeRefFragmentDepth() { + return typeRefFragmentDepth; + } + + public static Options defaultOptions() { + return new Options( + true, + false, + true, + true, + false, + true, + 7 + ); + } + + /** + * This will allow you to include description fields in the introspection query + * + * @param flag whether to include them + * + * @return options + */ + public Options descriptions(boolean flag) { + return new Options(flag, + this.specifiedByUrl, + this.isOneOf, + this.directiveIsRepeatable, + this.schemaDescription, + this.inputValueDeprecation, + this.typeRefFragmentDepth); + } + + /** + * This will allow you to include the `specifiedByURL` field for scalar types in the introspection query. + * + * @param flag whether to include them + * + * @return options + */ + public Options specifiedByUrl(boolean flag) { + return new Options(this.descriptions, + flag, + this.isOneOf, + this.directiveIsRepeatable, + this.schemaDescription, + this.inputValueDeprecation, + this.typeRefFragmentDepth); + } + + /** + * This will allow you to include the `isOneOf` field for one of input types in the introspection query. + *

    + * This option is only needed while `@oneOf` input types are new and in time the reason for this + * option will go away. + * + * @param flag whether to include them + * + * @return options + */ + public Options isOneOf(boolean flag) { + return new Options(this.descriptions, + this.specifiedByUrl, + flag, + this.directiveIsRepeatable, + this.schemaDescription, + this.inputValueDeprecation, + this.typeRefFragmentDepth); + } + + /** + * This will allow you to include the `isRepeatable` field for directives in the introspection query. + * + * @param flag whether to include them + * + * @return options + */ + public Options directiveIsRepeatable(boolean flag) { + return new Options(this.descriptions, + this.specifiedByUrl, + this.isOneOf, + flag, + this.schemaDescription, + this.inputValueDeprecation, + this.typeRefFragmentDepth); + } + + /** + * This will allow you to include the `description` field for the schema type in the introspection query. + * + * @param flag whether to include them + * + * @return options + */ + public Options schemaDescription(boolean flag) { + return new Options(this.descriptions, + this.specifiedByUrl, + this.isOneOf, + this.directiveIsRepeatable, + flag, + this.inputValueDeprecation, + this.typeRefFragmentDepth); + } + + /** + * This will allow you to include deprecated input fields in the introspection query. + * + * @param flag whether to include them + * + * @return options + */ + public Options inputValueDeprecation(boolean flag) { + return new Options(this.descriptions, + this.specifiedByUrl, + this.isOneOf, + this.directiveIsRepeatable, + this.schemaDescription, + flag, + this.typeRefFragmentDepth); + } + + /** + * This will allow you to control the depth of the `TypeRef` fragment in the introspection query. + * + * @param typeRefFragmentDepth the depth of the `TypeRef` fragment. + * + * @return options + */ + public Options typeRefFragmentDepth(int typeRefFragmentDepth) { + return new Options(this.descriptions, + this.specifiedByUrl, + this.isOneOf, + this.directiveIsRepeatable, + this.schemaDescription, + this.inputValueDeprecation, + typeRefFragmentDepth); + } + } + + @SafeVarargs + private static List filter(T... args) { + return ImmutableKit.filterVarArgs(Objects::nonNull, args); + } + + /** + * This will build an introspection query in {@link Document} form + * + * @param options the options to use + * + * @return an introspection query in document form + */ + public static Document buildDocument(Options options) { + SelectionSet schemaSelectionSet = newSelectionSet().selections(filter( + options.schemaDescription ? newField("description").build() : null, + newField("queryType", newSelectionSet() + .selection(newField("name").build()) + .build() + ) + .build(), + newField("mutationType", newSelectionSet() + .selection(newField("name").build()) + .build() + ) + .build(), + newField("subscriptionType", newSelectionSet() + .selection(newField("name").build()) + .build() + ) + .build(), + newField("types", newSelectionSet() + .selection(newFragmentSpread("FullType").build()) + .build() + ) + .build(), + newField("directives", newSelectionSet().selections(filter( + newField("name").build(), + options.descriptions ? newField("description").build() : null, + newField("locations").build(), + newField("args") + .arguments(filter( + options.inputValueDeprecation ? newArgument("includeDeprecated", BooleanValue.of(true)).build() : null + )) + .selectionSet(newSelectionSet() + .selection(newFragmentSpread("InputValue").build()) + .build() + ) + .build(), + options.directiveIsRepeatable ? newField("isRepeatable").build() : null + )) + .build() + ) + .build() + ) + ).build(); + + SelectionSet fullTypeSelectionSet = newSelectionSet().selections(filter( + newField("kind").build(), + newField("name").build(), + options.descriptions ? newField("description").build() : null, + options.specifiedByUrl ? newField("specifiedByURL").build() : null, + options.isOneOf ? newField("isOneOf").build() : null, + newField("fields") + .arguments(ImmutableList.of( + newArgument("includeDeprecated", BooleanValue.of(true)).build() + )) + .selectionSet(newSelectionSet().selections(filter( + newField("name").build(), + options.descriptions ? newField("description").build() : null, + newField("args") + .arguments(filter( + options.inputValueDeprecation ? newArgument("includeDeprecated", BooleanValue.of(true)).build() : null + )) + .selectionSet(newSelectionSet() + .selection(newFragmentSpread("InputValue").build()) + .build() + ) + .build(), + newField("type", newSelectionSet() + .selection(newFragmentSpread("TypeRef").build()) + .build() + ) + .build(), + newField("isDeprecated").build(), + newField("deprecationReason").build() + )).build() + ) + .build(), + newField("inputFields") + .arguments(filter( + options.inputValueDeprecation ? newArgument("includeDeprecated", BooleanValue.of(true)).build() : null + )) + .selectionSet(newSelectionSet() + .selection(newFragmentSpread("InputValue").build()) + .build() + ) + .build(), + newField("interfaces", newSelectionSet() + .selection(newFragmentSpread("TypeRef").build()) + .build() + ) + .build(), + newField("enumValues") + .arguments(ImmutableList.of( + newArgument("includeDeprecated", BooleanValue.of(true)).build() + )) + .selectionSet(newSelectionSet().selections(filter( + newField("name").build(), + options.descriptions ? newField("description").build() : null, + newField("isDeprecated").build(), + newField("deprecationReason").build() + )) + .build() + ) + .build(), + newField("possibleTypes", newSelectionSet() + .selection(newFragmentSpread("TypeRef").build()) + .build() + ) + .build() + )).build(); + + SelectionSet inputValueSelectionSet = newSelectionSet().selections(filter( + newField("name").build(), + options.descriptions ? newField("description").build() : null, + newField("type", newSelectionSet() + .selection(newFragmentSpread("TypeRef").build()) + .build() + ) + .build(), + newField("defaultValue").build(), + options.inputValueDeprecation ? newField("isDeprecated").build() : null, + options.inputValueDeprecation ? newField("deprecationReason").build() : null + )).build(); + + SelectionSet typeRefSelectionSet = newSelectionSet().selections(filter( + newField("kind").build(), + newField("name").build() + )).build(); + + for (int i = options.typeRefFragmentDepth; i > 0; i -= 1) { + typeRefSelectionSet = newSelectionSet().selections(filter( + newField("kind").build(), + newField("name").build(), + newField("ofType", typeRefSelectionSet).build() + )).build(); + } + + return newDocument() + .definition(newOperationDefinition() + .operation(OperationDefinition.Operation.QUERY) + .name("IntrospectionQuery") + .selectionSet(newSelectionSet() + .selection(newField("__schema", schemaSelectionSet).build()) + .build() + ) + .build() + ) + .definition(newFragmentDefinition() + .name("FullType") + .typeCondition(newTypeName().name("__Type").build()) + .selectionSet(fullTypeSelectionSet) + .build() + ) + .definition(newFragmentDefinition() + .name("InputValue") + .typeCondition(newTypeName().name("__InputValue").build()) + .selectionSet(inputValueSelectionSet) + .build() + ) + .definition(newFragmentDefinition() + .name("TypeRef") + .typeCondition(newTypeName().name("__Type").build()) + .selectionSet(typeRefSelectionSet) + .build() + ) + .build(); + } + + /** + * This will build an introspection query in {@link String} form based on the options you provide + * + * @param options the options to use + * + * @return an introspection query in string form + */ + + public static String build(Options options) { + return AstPrinter.printAst(buildDocument(options)); + } + + /** + * This will build a default introspection query in {@link String} form + * + * @return an introspection query in string form + */ + public static String build() { + return build(Options.defaultOptions()); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/introspection/IntrospectionResultToSchema.java b/src/main/java/graphql/introspection/IntrospectionResultToSchema.java index c2c8e9b659..608c570909 100644 --- a/src/main/java/graphql/introspection/IntrospectionResultToSchema.java +++ b/src/main/java/graphql/introspection/IntrospectionResultToSchema.java @@ -3,9 +3,10 @@ import graphql.ExecutionResult; import graphql.PublicApi; import graphql.language.Argument; -import graphql.language.AstValueHelper; import graphql.language.Description; import graphql.language.Directive; +import graphql.language.DirectiveDefinition; +import graphql.language.DirectiveLocation; import graphql.language.Document; import graphql.language.EnumTypeDefinition; import graphql.language.EnumValueDefinition; @@ -20,24 +21,27 @@ import graphql.language.OperationTypeDefinition; import graphql.language.ScalarTypeDefinition; import graphql.language.SchemaDefinition; -import graphql.language.SourceLocation; import graphql.language.StringValue; import graphql.language.Type; import graphql.language.TypeDefinition; import graphql.language.TypeName; import graphql.language.UnionTypeDefinition; import graphql.language.Value; +import graphql.parser.Parser; import graphql.schema.idl.ScalarInfo; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; +import java.util.Optional; +import static graphql.Assert.assertNotEmpty; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertTrue; +import static graphql.collect.ImmutableKit.map; +import static graphql.schema.idl.DirectiveInfo.isGraphqlSpecifiedDirective; @SuppressWarnings("unchecked") @PublicApi @@ -51,13 +55,17 @@ public class IntrospectionResultToSchema { * @return a IDL Document of the schema */ public Document createSchemaDefinition(ExecutionResult introspectionResult) { + if (!introspectionResult.isDataPresent()) { + return null; + } + Map introspectionResultMap = introspectionResult.getData(); return createSchemaDefinition(introspectionResultMap); } /** - * Returns a IDL Document that reprSesents the schema as defined by the introspection result map + * Returns a IDL Document that represents the schema as defined by the introspection result map * * @param introspectionResult the result of an introspection query on a schema * @@ -65,9 +73,8 @@ public Document createSchemaDefinition(ExecutionResult introspectionResult) { */ @SuppressWarnings("unchecked") public Document createSchemaDefinition(Map introspectionResult) { - assertTrue(introspectionResult.get("__schema") != null, "__schema expected"); Map schema = (Map) introspectionResult.get("__schema"); - + assertNotNull(schema, "__schema expected"); Map queryType = (Map) schema.get("queryType"); assertNotNull(queryType, "queryType expected"); @@ -75,6 +82,7 @@ public Document createSchemaDefinition(Map introspectionResult) boolean nonDefaultQueryName = !"Query".equals(query.getName()); SchemaDefinition.Builder schemaDefinition = SchemaDefinition.newSchemaDefinition(); + schemaDefinition.description(toDescription(schema)); schemaDefinition.operationTypeDefinition(OperationTypeDefinition.newOperationTypeDefinition().name("query").typeName(query).build()); Map mutationType = (Map) schema.get("mutationType"); @@ -101,17 +109,66 @@ public Document createSchemaDefinition(Map introspectionResult) List> types = (List>) schema.get("types"); for (Map type : types) { TypeDefinition typeDefinition = createTypeDefinition(type); - if (typeDefinition == null) continue; + if (typeDefinition == null) { + continue; + } document.definition(typeDefinition); } + List> directives = (List>) schema.get("directives"); + if (directives != null) { + for (Map directive : directives) { + DirectiveDefinition directiveDefinition = createDirective(directive); + if (directiveDefinition == null) { + continue; + } + document.definition(directiveDefinition); + } + } + return document.build(); } + private DirectiveDefinition createDirective(Map input) { + String directiveName = (String) input.get("name"); + if (isGraphqlSpecifiedDirective(directiveName)) { + return null; + } + + DirectiveDefinition.Builder directiveDefBuilder = DirectiveDefinition.newDirectiveDefinition(); + directiveDefBuilder + .name(directiveName) + .description(toDescription(input)); + + List locations = (List) input.get("locations"); + List directiveLocations = createDirectiveLocations(locations); + directiveDefBuilder.directiveLocations(directiveLocations); + + + List> args = (List>) input.get("args"); + List inputValueDefinitions = createInputValueDefinitions(args); + directiveDefBuilder.inputValueDefinitions(inputValueDefinitions); + Optional.ofNullable((Boolean) input.get("isRepeatable")).ifPresent(value -> directiveDefBuilder.repeatable(value)); + + return directiveDefBuilder.build(); + } + + private List createDirectiveLocations(List locations) { + assertNotEmpty(locations, "the locations of directive should not be empty."); + List result = new ArrayList<>(locations.size()); + for (Object location : locations) { + DirectiveLocation directiveLocation = DirectiveLocation.newDirectiveLocation().name(location.toString()).build(); + result.add(directiveLocation); + } + return result; + } + private TypeDefinition createTypeDefinition(Map type) { String kind = (String) type.get("kind"); String name = (String) type.get("name"); - if (name.startsWith("__")) return null; + if (name.startsWith("__")) { + return null; + } switch (kind) { case "INTERFACE": return createInterface(type); @@ -135,7 +192,10 @@ private TypeDefinition createScalar(Map input) { if (ScalarInfo.isGraphqlSpecifiedScalar(name)) { return null; } - return ScalarTypeDefinition.newScalarTypeDefinition().name(name).build(); + return ScalarTypeDefinition.newScalarTypeDefinition() + .name(name) + .description(toDescription(input)) + .build(); } @@ -169,7 +229,7 @@ EnumTypeDefinition createEnum(Map input) { for (Map enumValue : enumValues) { EnumValueDefinition.Builder enumValueDefinition = EnumValueDefinition.newEnumValueDefinition().name((String) enumValue.get("name")); - enumTypeDefinition.description(toDescription(input)); + enumValueDefinition.description(toDescription(enumValue)); createDeprecatedDirective(enumValue, enumValueDefinition); @@ -185,6 +245,14 @@ InterfaceTypeDefinition createInterface(Map input) { InterfaceTypeDefinition.Builder interfaceTypeDefinition = InterfaceTypeDefinition.newInterfaceTypeDefinition().name((String) input.get("name")); interfaceTypeDefinition.description(toDescription(input)); + if (input.containsKey("interfaces") && input.get("interfaces") != null) { + interfaceTypeDefinition.implementz( + map( + (List>) input.get("interfaces"), + this::createTypeIndirection + ) + ); + } List> fields = (List>) input.get("fields"); interfaceTypeDefinition.definitions(createFields(fields)); @@ -215,9 +283,7 @@ ObjectTypeDefinition createObject(Map input) { objectTypeDefinition.description(toDescription(input)); if (input.containsKey("interfaces")) { objectTypeDefinition.implementz( - ((List>) input.get("interfaces")).stream() - .map(this::createTypeIndirection) - .collect(Collectors.toList()) + map((List>) input.get("interfaces"), this::createTypeIndirection) ); } List> fields = (List>) input.get("fields"); @@ -228,7 +294,7 @@ ObjectTypeDefinition createObject(Map input) { } private List createFields(List> fields) { - List result = new ArrayList<>(); + List result = new ArrayList<>(fields.size()); for (Map field : fields) { FieldDefinition.Builder fieldDefinition = FieldDefinition.newFieldDefinition().name((String) field.get("name")); fieldDefinition.description(toDescription(field)); @@ -245,22 +311,20 @@ private List createFields(List> fields) { } private void createDeprecatedDirective(Map field, NodeDirectivesBuilder nodeDirectivesBuilder) { - List directives = new ArrayList<>(); - if ((Boolean) field.get("isDeprecated")) { + if (Boolean.TRUE.equals(field.get("isDeprecated"))) { String reason = (String) field.get("deprecationReason"); if (reason == null) { reason = "No longer supported"; // default according to spec } Argument reasonArg = Argument.newArgument().name("reason").value(StringValue.newStringValue().value(reason).build()).build(); Directive deprecated = Directive.newDirective().name("deprecated").arguments(Collections.singletonList(reasonArg)).build(); - directives.add(deprecated); + nodeDirectivesBuilder.directive(deprecated); } - nodeDirectivesBuilder.directives(directives); } @SuppressWarnings("unchecked") private List createInputValueDefinitions(List> args) { - List result = new ArrayList<>(); + List result = new ArrayList<>(args.size()); for (Map arg : args) { Type argType = createTypeIndirection((Map) arg.get("type")); InputValueDefinition.Builder inputValueDefinition = InputValueDefinition.newInputValueDefinition().name((String) arg.get("name")).type(argType); @@ -268,8 +332,8 @@ private List createInputValueDefinitions(List value = Parser.parseValue(valueLiteral); + inputValueDefinition.defaultValue(value); } result.add(inputValueDefinition.build()); } @@ -310,4 +374,5 @@ private Description toDescription(Map input) { } } + } diff --git a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java new file mode 100644 index 0000000000..5d264e113c --- /dev/null +++ b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java @@ -0,0 +1,320 @@ +package graphql.introspection; + +import com.google.common.collect.ImmutableSet; +import graphql.DirectivesUtil; +import graphql.PublicApi; +import graphql.PublicSpi; +import graphql.collect.ImmutableKit; +import graphql.execution.ValuesResolver; +import graphql.language.AstPrinter; +import graphql.language.Node; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.InputValueWithState; +import graphql.schema.SchemaTransformer; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import org.jspecify.annotations.NonNull; + +import java.util.List; +import java.util.Set; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Scalars.GraphQLString; +import static graphql.introspection.Introspection.__EnumValue; +import static graphql.introspection.Introspection.__Field; +import static graphql.introspection.Introspection.__InputValue; +import static graphql.introspection.Introspection.__Schema; +import static graphql.introspection.Introspection.__Type; +import static graphql.schema.FieldCoordinates.coordinates; +import static graphql.schema.GraphQLList.list; +import static graphql.schema.GraphQLNonNull.nonNull; +import static graphql.schema.GraphQLObjectType.newObject; +import static graphql.util.TraversalControl.CONTINUE; + +/** + * The graphql specification does not allow you to retrieve the directives and their argument values that + * are present on types, enums, fields and input fields, so this class allows you to change the schema + * and enhance the Introspection types to contain this information. + * + * This allows you to get a directive say like `@example(argName : "someValue")` that is on a field or type + * at introspection time and act on it. + * + * This class takes a predicate that allows you to filter the directives you want to expose to the world. + * + * An `appliedDirectives` field is added and this contains extra fields that hold the directives and their applied values. + * + * For example the `__Field` type becomes as follows: + * + *
    + *      type __Field {
    + *          name: String!
    + *          // other fields ...
    + *          appliedDirectives: [_AppliedDirective!]!   // NEW FIELD
    + *      }
    + *
    + *     type _AppliedDirective {                        // NEW INTROSPECTION TYPE
    + *          name: String!
    + *          args: [_DirectiveArgument!]!
    + *      }
    + *
    + *      type _DirectiveArgument {                      // NEW INTROSPECTION TYPE
    + *          name: String!
    + *          value: String!
    + *      }
    + *  
    + */ +@PublicApi +public class IntrospectionWithDirectivesSupport { + + private final DirectivePredicate directivePredicate; + private final String typePrefix; + + private final Set INTROSPECTION_ELEMENTS = ImmutableSet.of( + __Schema.getName(), __Type.getName(), __Field.getName(), __EnumValue.getName(), __InputValue.getName() + ); + + + /** + * This version lists all directives on a schema element + */ + public IntrospectionWithDirectivesSupport() { + this(env -> true); + } + + /** + * This version allows you to filter what directives are listed via the provided predicate + * + * @param directivePredicate the filtering predicate to decide what directives are shown + */ + public IntrospectionWithDirectivesSupport(DirectivePredicate directivePredicate) { + this(directivePredicate, "_"); + } + + /** + * This version allows you to filter what directives are listed via the provided predicate + * + * Some graphql systems (graphql-js in 2021) cannot cope with extra types starting with `__` + * so we use a `_` as a prefix by default. You can supply your own prefix via this constructor. + * + * See: https://github.com/graphql-java/graphql-java/pull/2221 for more details + * + * @param directivePredicate the filtering predicate to decide what directives are shown + * @param typePrefix the prefix to put on the new `AppliedDirectives` type + */ + public IntrospectionWithDirectivesSupport(DirectivePredicate directivePredicate, String typePrefix) { + this.directivePredicate = assertNotNull(directivePredicate); + this.typePrefix = assertNotNull(typePrefix); + } + + /** + * This will transform the schema to have the new extension shapes + * + * @param schema the original schema + * + * @return the transformed schema with new extension types and fields in it for Introspection + */ + public GraphQLSchema apply(GraphQLSchema schema) { + GraphQLObjectType directiveArgumentType = mkDirectiveArgumentType(typePrefix + "DirectiveArgument"); + GraphQLObjectType appliedDirectiveType = mkAppliedDirectiveType(typePrefix + "AppliedDirective", directiveArgumentType); + GraphQLTypeVisitorStub visitor = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + GraphQLCodeRegistry.Builder codeRegistry = context.getVarFromParents(GraphQLCodeRegistry.Builder.class); + // we need to change __XXX introspection types to have directive extensions + if (INTROSPECTION_ELEMENTS.contains(objectType.getName())) { + GraphQLObjectType newObjectType = addAppliedDirectives(objectType, codeRegistry, appliedDirectiveType, directiveArgumentType); + return changeNode(context, newObjectType); + } + return CONTINUE; + } + }; + GraphQLSchema newSchema = SchemaTransformer.transformSchema(schema, visitor); + return addDirectiveDefinitionFilter(newSchema); + } + + private GraphQLObjectType mkDirectiveArgumentType(String name) { + return newObject().name(name) + .description("Directive arguments can have names and values. The values are in graphql SDL syntax printed as a string." + + " This type is NOT specified by the graphql specification presently.") + .field(fld -> fld + .name("name") + .type(nonNull(GraphQLString))) + .field(fld -> fld + .name("value") + .type(nonNull(GraphQLString))) + .build(); + } + + private GraphQLObjectType mkAppliedDirectiveType(String name, GraphQLType directiveArgumentType) { + return newObject().name(name) + .description("An Applied Directive is an instances of a directive as applied to a schema element." + + " This type is NOT specified by the graphql specification presently.") + .field(fld -> fld + .name("name") + .type(nonNull(GraphQLString))) + .field(fld -> fld + .name("args") + .type(nonNull(list(nonNull(directiveArgumentType))))) + .build(); + } + + private GraphQLSchema addDirectiveDefinitionFilter(GraphQLSchema schema) { + DataFetcher df = env -> { + List definedDirectives = env.getGraphQLSchema().getDirectives(); + return filterDirectives(schema, true, null, definedDirectives); + }; + GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry().transform(bld -> + bld.dataFetcher(coordinates(__Schema, "directives"), df)); + return schema.transform(bld -> bld.codeRegistry(codeRegistry)); + } + + private GraphQLObjectType addAppliedDirectives(GraphQLObjectType originalType, GraphQLCodeRegistry.Builder codeRegistry, GraphQLObjectType appliedDirectiveType, GraphQLObjectType directiveArgumentType) { + GraphQLObjectType objectType = originalType.transform(bld -> bld.field(fld -> fld.name("appliedDirectives").type(nonNull(list(nonNull(appliedDirectiveType)))))); + DataFetcher df = env -> { + Object source = env.getSource(); + GraphQLSchema schema = env.getGraphQLSchema(); + if (source instanceof GraphQLDirectiveContainer) { + GraphQLDirectiveContainer type = env.getSource(); + List appliedDirectives = DirectivesUtil.toAppliedDirectives(type); + return filterAppliedDirectives(schema, false, type, appliedDirectives); + } + if (source instanceof GraphQLSchema) { + List appliedDirectives = DirectivesUtil.toAppliedDirectives(schema.getSchemaAppliedDirectives(), schema.getSchemaDirectives()); + return filterAppliedDirectives(schema, true, null, appliedDirectives); + } + return assertShouldNeverHappen("What directive containing element have we not considered? - %s", originalType); + }; + DataFetcher argsDF = env -> { + final GraphQLAppliedDirective directive = env.getSource(); + // we only show directive arguments that have values set on them + return ImmutableKit.filter(directive.getArguments(), + arg -> arg.getArgumentValue().isSet()); + }; + DataFetcher argValueDF = env -> { + final GraphQLAppliedDirectiveArgument argument = env.getSource(); + InputValueWithState value = argument.getArgumentValue(); + Node literal = ValuesResolver.valueToLiteral(value, argument.getType(), env.getGraphQlContext(), env.getLocale()); + return AstPrinter.printAst(literal); + }; + DataFetcher nameDF = env -> { + if (env.getSource() instanceof GraphQLNamedSchemaElement) { + return ((GraphQLNamedSchemaElement) env.getSource()).getName(); + } + return null; + }; + + codeRegistry.dataFetcher(coordinates(objectType, "appliedDirectives"), df); + codeRegistry.dataFetcher(coordinates(appliedDirectiveType, "name"), nameDF); + codeRegistry.dataFetcher(coordinates(appliedDirectiveType, "args"), argsDF); + + codeRegistry.dataFetcher(coordinates(directiveArgumentType, "name"), nameDF); + codeRegistry.dataFetcher(coordinates(directiveArgumentType, "value"), argValueDF); + return objectType; + } + + private List filterDirectives(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, List directives) { + return ImmutableKit.filter(directives, + directive -> { + DirectivePredicateEnvironment env = buildDirectivePredicateEnv(schema, isDefinedDirective, container, directive.getName()); + return directivePredicate.isDirectiveIncluded(env); + }); + } + + private List filterAppliedDirectives(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, List directives) { + return ImmutableKit.filter(directives, + directive -> { + DirectivePredicateEnvironment env = buildDirectivePredicateEnv(schema, isDefinedDirective, container, directive.getName()); + return directivePredicate.isDirectiveIncluded(env); + }); + } + + @NonNull + private DirectivePredicateEnvironment buildDirectivePredicateEnv(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, String directiveName) { + return new DirectivePredicateEnvironment() { + @Override + public GraphQLDirectiveContainer getDirectiveContainer() { + return container; + } + + @Override + public boolean isDefinedDirective() { + return isDefinedDirective; + } + + @Override + public String getDirectiveName() { + return directiveName; + } + + @Override + public GraphQLSchema getSchema() { + return schema; + } + }; + } + + /** + * The parameter environment on a call to {@link DirectivePredicate} + */ + @PublicApi + public interface DirectivePredicateEnvironment { + + /** + * The schema element that contained this directive. If this is a {@link GraphQLSchema} + * then this will be null. This is the only case where this is true. + * + * @return the schema element that contained this directive. + */ + GraphQLDirectiveContainer getDirectiveContainer(); + + /** + * @return the directive to be included + */ + String getDirectiveName(); + + /** + * A schema has two list of directives. A list of directives that are defined + * in that schema and the list of directives that are applied to a schema element. + * + * This returns true if this filtering represents the defined directives. + * + * @return true if this is filtering defined directives + */ + boolean isDefinedDirective(); + + /** + * @return graphql schema in place + */ + GraphQLSchema getSchema(); + } + + + /** + * A callback which allows you to decide what directives may be included + * in introspection extensions + */ + @PublicSpi + @FunctionalInterface + public interface DirectivePredicate { + /** + * Return true if the directive should be included + * + * @param environment the callback parameters + * + * @return true if the directive should be included + */ + boolean isDirectiveIncluded(DirectivePredicateEnvironment environment); + } +} diff --git a/src/main/java/graphql/language/AbstractNode.java b/src/main/java/graphql/language/AbstractNode.java index 420f1b994a..bd3d74426e 100644 --- a/src/main/java/graphql/language/AbstractNode.java +++ b/src/main/java/graphql/language/AbstractNode.java @@ -1,44 +1,45 @@ package graphql.language; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import graphql.Assert; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import static java.util.Collections.unmodifiableList; -import static java.util.Collections.unmodifiableMap; +import static graphql.collect.ImmutableKit.map; @PublicApi +@NullMarked public abstract class AbstractNode implements Node { - private final SourceLocation sourceLocation; - private final List comments; + private final @Nullable SourceLocation sourceLocation; + private final ImmutableList comments; private final IgnoredChars ignoredChars; - private final Map additionalData; + private final ImmutableMap additionalData; - public AbstractNode(SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars) { - this(sourceLocation, comments, ignoredChars, Collections.emptyMap()); + public AbstractNode(@Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars) { + this(sourceLocation, comments, ignoredChars, ImmutableKit.emptyMap()); } - public AbstractNode(SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + public AbstractNode(@Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { Assert.assertNotNull(comments, "comments can't be null"); Assert.assertNotNull(ignoredChars, "ignoredChars can't be null"); Assert.assertNotNull(additionalData, "additionalData can't be null"); this.sourceLocation = sourceLocation; - this.additionalData = unmodifiableMap(new LinkedHashMap<>(additionalData)); - this.comments = unmodifiableList(new ArrayList<>(comments)); + this.additionalData = ImmutableMap.copyOf(additionalData); + this.comments = ImmutableList.copyOf(comments); this.ignoredChars = ignoredChars; } @Override - public SourceLocation getSourceLocation() { + public @Nullable SourceLocation getSourceLocation() { return sourceLocation; } @@ -58,7 +59,7 @@ public Map getAdditionalData() { } @SuppressWarnings("unchecked") - protected V deepCopy(V nullableObj) { + protected @Nullable V deepCopy(@Nullable V nullableObj) { if (nullableObj == null) { return null; } @@ -66,10 +67,10 @@ protected V deepCopy(V nullableObj) { } @SuppressWarnings("unchecked") - protected List deepCopy(List list) { + protected @Nullable List deepCopy(@Nullable List list) { if (list == null) { return null; } - return list.stream().map(Node::deepCopy).map(node -> (V) node).collect(Collectors.toList()); + return map(list, n -> (V) n.deepCopy()); } } diff --git a/src/main/java/graphql/language/Argument.java b/src/main/java/graphql/language/Argument.java index 141a389440..9125d25f1f 100644 --- a/src/main/java/graphql/language/Argument.java +++ b/src/main/java/graphql/language/Argument.java @@ -1,29 +1,30 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class Argument extends AbstractNode implements NamedNode { + public static final String CHILD_VALUE = "value"; private final String name; private final Value value; - public static final String CHILD_VALUE = "value"; - @Internal protected Argument(String name, Value value, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); @@ -38,7 +39,15 @@ protected Argument(String name, Value value, SourceLocation sourceLocation, List * @param value of the argument */ public Argument(String name, Value value) { - this(name, value, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, value, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); + } + + public static Builder newArgument() { + return new Builder(); + } + + public static Builder newArgument(String name, Value value) { + return new Builder().name(name).value(value); } @Override @@ -52,9 +61,7 @@ public Value getValue() { @Override public List getChildren() { - List result = new ArrayList<>(); - result.add(value); - return result; + return ImmutableList.of(value); } @Override @@ -82,7 +89,7 @@ public boolean isEqualTo(Node o) { Argument that = (Argument) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @@ -104,14 +111,6 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitArgument(this, context); } - public static Builder newArgument() { - return new Builder(); - } - - public static Builder newArgument(String name, Value value) { - return new Builder().name(name).value(value); - } - public Argument transform(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); @@ -120,7 +119,7 @@ public Argument transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Value value; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; @@ -131,7 +130,7 @@ private Builder() { private Builder(Argument existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.value = existing.getValue(); this.ignoredChars = existing.getIgnoredChars(); @@ -154,7 +153,7 @@ public Builder value(Value value) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/ArrayValue.java b/src/main/java/graphql/language/ArrayValue.java index 09770ec074..2d5ae6c100 100644 --- a/src/main/java/graphql/language/ArrayValue.java +++ b/src/main/java/graphql/language/ArrayValue.java @@ -1,32 +1,37 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class ArrayValue extends AbstractNode implements Value { - private final List values = new ArrayList<>(); - public static final String CHILD_VALUES = "values"; + private final ImmutableList values; @Internal - protected ArrayValue(List values, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected ArrayValue(List values, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); - this.values.addAll(values); + this.values = ImmutableList.copyOf(values); } /** @@ -35,7 +40,11 @@ protected ArrayValue(List values, SourceLocation sourceLocation, List values) { - this(values, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(values, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); + } + + public static Builder newArrayValue() { + return new Builder(); } public List getValues() { @@ -44,7 +53,7 @@ public List getValues() { @Override public List getChildren() { - return new ArrayList<>(values); + return ImmutableList.copyOf(values); } @Override @@ -62,7 +71,7 @@ public ArrayValue withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -82,7 +91,8 @@ public String toString() { @Override public ArrayValue deepCopy() { - return new ArrayValue(deepCopy(values), getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); + List copiedValues = assertNotNull(deepCopy(values)); + return new ArrayValue(copiedValues, getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); } @Override @@ -90,20 +100,17 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitArrayValue(this, context); } - public static Builder newArrayValue() { - return new Builder(); - } - public ArrayValue transform(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List values = new ArrayList<>(); - private List comments = new ArrayList<>(); + private ImmutableList values = emptyList(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -112,8 +119,8 @@ private Builder() { private Builder(ArrayValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); - this.values = existing.getValues(); + this.comments = ImmutableList.copyOf(existing.getComments()); + this.values = ImmutableList.copyOf(existing.getValues()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -124,17 +131,17 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder values(List values) { - this.values = values; + this.values = ImmutableList.copyOf(values); return this; } public Builder value(Value value) { - this.values.add(value); + this.values = ImmutableKit.addToList(this.values, value); return this; } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/AstComparator.java b/src/main/java/graphql/language/AstComparator.java index bc58052bc8..08e1d5a310 100644 --- a/src/main/java/graphql/language/AstComparator.java +++ b/src/main/java/graphql/language/AstComparator.java @@ -9,25 +9,54 @@ @Internal public class AstComparator { + private AstComparator() { - public boolean isEqual(Node node1, Node node2) { - if (null == node1) return null == node2; - if (!node1.isEqualTo(node2)) return false; + } + + public static boolean sameValue(Value value1, Value value2) { + if (value1 == null && value2 == null) { + return true; + } + if (value1 == null) { + return false; + } + if (value2 == null) { + return false; + } + return isEqual(value1, value2); + } + + + public static boolean isEqual(Node node1, Node node2) { + if (null == node1) { + return null == node2; + } + if (!node1.isEqualTo(node2)) { + return false; + } List childs1 = node1.getChildren(); List childs2 = node2.getChildren(); - if (childs1.size() != childs2.size()) return false; + if (childs1.size() != childs2.size()) { + return false; + } for (int i = 0; i < childs1.size(); i++) { - if (!isEqual(childs1.get(i), childs2.get(i))) return false; + if (!isEqual(childs1.get(i), childs2.get(i))) { + return false; + } } return true; } - public boolean isEqual(List nodes1, List nodes2) { - if (nodes1.size() != nodes2.size()) return false; + public static boolean isEqual(List nodes1, List nodes2) { + if (nodes1.size() != nodes2.size()) { + return false; + } Iterator iter1 = nodes1.iterator(); Iterator iter2 = nodes2.iterator(); while (iter1.hasNext()) { - if (!isEqual(iter1.next(), iter2.next())) return false; + if (!isEqual(iter1.next(), iter2.next())) { + return false; + } } return true; } diff --git a/src/main/java/graphql/language/AstPrinter.java b/src/main/java/graphql/language/AstPrinter.java index eeafd12194..a5e1535ea5 100644 --- a/src/main/java/graphql/language/AstPrinter.java +++ b/src/main/java/graphql/language/AstPrinter.java @@ -1,21 +1,19 @@ package graphql.language; -import graphql.AssertException; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.io.PrintWriter; -import java.io.StringWriter; +import java.io.IOException; +import java.io.UncheckedIOException; import java.io.Writer; -import java.util.Arrays; -import java.util.Collections; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertTrue; -import static graphql.util.EscapeUtil.escapeJsonString; -import static java.lang.String.valueOf; -import static java.util.stream.Collectors.joining; +import static graphql.util.EscapeUtil.escapeJsonStringTo; /** * This can take graphql language AST and print it out as a string @@ -24,11 +22,25 @@ @PublicApi public class AstPrinter { + /** + * @return an {@link AstPrinter} that is in full print mode + */ + static AstPrinter full() { + return new AstPrinter(false); + } + + /** + * @return an {@link AstPrinter} that is in compact print mode + */ + static AstPrinter compact() { + return new AstPrinter(true); + } + private final Map, NodePrinter> printers = new LinkedHashMap<>(); private final boolean compactMode; - private AstPrinter(boolean compactMode) { + AstPrinter(boolean compactMode) { this.compactMode = compactMode; printers.put(Argument.class, argument()); printers.put(ArrayValue.class, value()); @@ -65,6 +77,7 @@ private AstPrinter(boolean compactMode) { printers.put(ScalarTypeDefinition.class, scalarTypeDefinition()); printers.put(ScalarTypeExtensionDefinition.class, scalarTypeExtensionDefinition()); printers.put(SchemaDefinition.class, schemaDefinition()); + printers.put(SchemaExtensionDefinition.class, schemaExtensionDefinition()); printers.put(SelectionSet.class, selectionSet()); printers.put(StringValue.class, value()); printers.put(TypeName.class, type()); @@ -76,64 +89,90 @@ private AstPrinter(boolean compactMode) { private NodePrinter argument() { if (compactMode) { - return (out, node) -> out.printf("%s:%s", node.getName(), value(node.getValue())); + return (out, node) -> { + out.append(node.getName()).append(':'); + value(out, node.getValue()); + }; } - return (out, node) -> out.printf("%s: %s", node.getName(), value(node.getValue())); + return (out, node) -> { + out.append(node.getName()).append(": "); + value(out, node.getValue()); + }; } private NodePrinter document() { if (compactMode) { - return (out, node) -> out.printf("%s", join(node.getDefinitions(), " ")); + return (out, node) -> join(out, node.getDefinitions(), " "); } - return (out, node) -> out.printf("%s\n", join(node.getDefinitions(), "\n\n")); + return (out, node) -> { + join(out, node.getDefinitions(), "\n\n"); + out.append('\n'); + }; } private NodePrinter directive() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String arguments = wrap("(", join(node.getArguments(), argSep), ")"); - out.printf("@%s%s", node.getName(), arguments); + out.append('@'); + out.append(node.getName()); + if (!isEmpty(node.getArguments())) { + out.append('('); + join(out, node.getArguments(), argSep); + out.append(')'); + } }; } private NodePrinter directiveDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String arguments = wrap("(", join(node.getInputValueDefinitions(), argSep), ")"); - String locations = join(node.getDirectiveLocations(), " | "); - out.printf("directive @%s%s on %s", node.getName(), arguments, locations); + description(out, node); + out.append("directive @"); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append('('); + join(out, node.getInputValueDefinitions(), argSep); + out.append(')'); + } + out.append(" "); + if (node.isRepeatable()) { + out.append("repeatable "); + } + out.append("on "); + join(out, node.getDirectiveLocations(), " | "); }; } private NodePrinter directiveLocation() { - return (out, node) -> out.print(node.getName()); + return (out, node) -> out.append(node.getName()); } private NodePrinter enumTypeDefinition() { return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", - spaced( - "enum", - node.getName(), - directives(node.getDirectives()), - block(node.getEnumValueDefinitions()) - )); + description(out, node); + out.append("enum "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + block(out, node.getEnumValueDefinitions()); }; } private NodePrinter enumValue() { - return (out, node) -> out.printf("%s", node.getName()); + return (out, node) -> out.append(node.getName()); } private NodePrinter enumValueDefinition() { return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", - spaced( - node.getName(), - directives(node.getDirectives()) - )); + description(out, node); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } @@ -141,102 +180,131 @@ private NodePrinter field() { final String argSep = compactMode ? "," : ", "; final String aliasSuffix = compactMode ? ":" : ": "; return (out, node) -> { - String alias = wrap("", node.getAlias(), aliasSuffix); String name = node.getName(); - String arguments = wrap("(", join(node.getArguments(), argSep), ")"); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - out.printf("%s", spaced( - alias + name + arguments, - directives, - selectionSet - )); + if (!isEmpty(node.getAlias())) { + out.append(node.getAlias()); + out.append(aliasSuffix); + } + out.append(name); + if (!isEmpty(node.getArguments())) { + out.append('('); + join(out, node.getArguments(), argSep); + out.append(')'); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (node.getSelectionSet() != null && !isEmpty(node.getSelectionSet().getSelections())) { + if (!compactMode) { + out.append(' '); + } + node(out, node.getSelectionSet()); + } }; } - private NodePrinter fieldDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String args; - if (hasDescription(node.getInputValueDefinitions()) && !compactMode) { - out.printf("%s", description(node)); - args = join(node.getInputValueDefinitions(), "\n"); - out.printf("%s", node.getName() + - wrap("(\n", args, ")") + - ": " + - spaced( - type(node.getType()), - directives(node.getDirectives()) - ) - ); + if (hasDescription(node) && !compactMode) { + description(out, node); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append("(\n"); + join(out, node.getInputValueDefinitions(), "\n"); + out.append(')'); + } + out.append(": "); + type(out, node.getType()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } } else { - args = join(node.getInputValueDefinitions(), argSep); - out.printf("%s", node.getName() + - wrap("(", args, ")") + - ": " + - spaced( - type(node.getType()), - directives(node.getDirectives()) - ) - ); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append('('); + join(out, node.getInputValueDefinitions(), argSep); + out.append(')'); + } + out.append(": "); + type(out, node.getType()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } } }; } - private boolean hasDescription(List nodes) { - return nodes.stream().filter(it -> it instanceof AbstractDescribedNode).anyMatch(it -> ((AbstractDescribedNode) it).getDescription() != null); + private static boolean hasDescription(Node node) { + if (node instanceof AbstractDescribedNode) { + AbstractDescribedNode describedNode = (AbstractDescribedNode) node; + return describedNode.getDescription() != null; + } + return false; } private NodePrinter fragmentDefinition() { return (out, node) -> { - String name = node.getName(); - String typeCondition = type(node.getTypeCondition()); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - out.printf("fragment %s on %s ", name, typeCondition); - out.printf("%s", directives + selectionSet); + out.append("fragment "); + out.append(node.getName()); + out.append(" on "); + type(out, node.getTypeCondition()); + out.append(' '); + directives(out, node.getDirectives()); + node(out, node.getSelectionSet()); }; } private NodePrinter fragmentSpread() { return (out, node) -> { - String name = node.getName(); - String directives = directives(node.getDirectives()); - - out.printf("...%s%s", name, directives); + out.append("..."); + out.append(node.getName()); + directives(out, node.getDirectives()); }; } private NodePrinter inlineFragment() { return (out, node) -> { - TypeName typeName = node.getTypeCondition(); - //Inline fragments may not have a type condition - String typeCondition = typeName == null ? "" : wrap("on ", type(typeName), ""); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - out.printf("%s", spaced( - "...", - typeCondition, - directives, - selectionSet - )); + out.append("..."); + if (compactMode) { + // believe it or not but "...on Foo" is valid syntax + if (node.getTypeCondition() != null) { + out.append("on "); + type(out, node.getTypeCondition()); + } + directives(out, node.getDirectives()); + node(out, node.getSelectionSet()); + } else { + if (node.getTypeCondition() != null) { + out.append(" on "); + type(out, node.getTypeCondition()); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + node(out, node.getSelectionSet()); + } }; } private NodePrinter inputObjectTypeDefinition() { return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", spaced( - "input", - node.getName(), - directives(node.getDirectives()), - block(node.getInputValueDefinitions()) - ) - ); + description(out, node); + out.append("input "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getInputValueDefinitions())) { + out.append(' '); + block(out, node.getInputValueDefinitions()); + } }; } @@ -244,198 +312,285 @@ private NodePrinter inputValueDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : "= "; return (out, node) -> { - Value defaultValue = node.getDefaultValue(); - out.printf("%s", description(node)); - out.printf("%s", spaced( - node.getName() + nameTypeSep + type(node.getType()), - wrap(defaultValueEquals, defaultValue, ""), - directives(node.getDirectives()) - ) - ); + Value defaultValue = node.getDefaultValue(); + description(out, node); + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getType()); + if (defaultValue != null) { + out.append(' '); + out.append(defaultValueEquals); + node(out, defaultValue); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } private NodePrinter interfaceTypeDefinition() { return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", spaced( - "interface", - node.getName(), - directives(node.getDirectives()), - block(node.getFieldDefinitions()) - ) - ); + description(out, node); + out.append("interface "); + out.append(node.getName()); + if (!isEmpty(node.getImplements())) { + out.append(" implements "); + join(out, node.getImplements(), " & "); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getFieldDefinitions())) { + out.append(' '); + block(out, node.getFieldDefinitions()); + } }; } private NodePrinter objectField() { String nameValueSep = compactMode ? ":" : " : "; - return (out, node) -> out.printf("%s%s%s", node.getName(), nameValueSep, value(node.getValue())); + return (out, node) -> { + out.append(node.getName()); + out.append(nameValueSep); + value(out, node.getValue()); + }; } - private NodePrinter operationDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String op = node.getOperation().toString().toLowerCase(); String name = node.getName(); - String varDefinitions = wrap("(", join(nvl(node.getVariableDefinitions()), argSep), ")"); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - // Anonymous queries with no directives or variable definitions can use // the query short form. - if (isEmpty(name) && isEmpty(directives) && isEmpty(varDefinitions) && op.equals("QUERY")) { - out.printf("%s", selectionSet); + if (isEmpty(name) && isEmpty(node.getDirectives()) && isEmpty(node.getVariableDefinitions()) + && node.getOperation() == OperationDefinition.Operation.QUERY) { + node(out, node.getSelectionSet()); } else { - out.printf("%s", spaced(op, smooshed(name, varDefinitions), directives, selectionSet)); + out.append(node.getOperation().toString().toLowerCase()); + if (!isEmpty(name)) { + out.append(' '); + out.append(name); + } + if (!isEmpty(node.getVariableDefinitions())) { + if (isEmpty(name)) { + out.append(' '); + } + out.append('('); + join(out, node.getVariableDefinitions(), argSep); + out.append(')'); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!compactMode) { + out.append(' '); + } + node(out, node.getSelectionSet()); } }; } private NodePrinter operationTypeDefinition() { String nameTypeSep = compactMode ? ":" : ": "; - return (out, node) -> out.printf("%s%s%s", node.getName(), nameTypeSep, type(node.getTypeName())); + return (out, node) -> { + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getTypeName()); + }; } private NodePrinter objectTypeDefinition() { return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", spaced( - "type", - node.getName(), - wrap("implements ", join(node.getImplements(), " & "), ""), - directives(node.getDirectives()), - block(node.getFieldDefinitions()) - )); + description(out, node); + out.append("type "); + out.append(node.getName()); + if (!isEmpty(node.getImplements())) { + out.append(" implements "); + join(out, node.getImplements(), " & "); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getFieldDefinitions())) { + out.append(' '); + block(out, node.getFieldDefinitions()); + } }; } private NodePrinter selectionSet() { - return (out, node) -> { - out.printf("%s", block(node.getSelections())); - }; + return (out, node) -> block(out, node.getSelections()); } private NodePrinter scalarTypeDefinition() { return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", spaced( - "scalar", - node.getName(), - directives(node.getDirectives()))); + description(out, node); + out.append("scalar "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } private NodePrinter schemaDefinition() { return (out, node) -> { - out.printf("%s", spaced( - "schema", - directives(node.getDirectives()), - block(node.getOperationTypeDefinitions()) - - )); + description(out, node); + out.append("schema "); + if (!isEmpty(node.getDirectives())) { + directives(out, node.getDirectives()); + out.append(' '); + } + block(out, node.getOperationTypeDefinitions()); }; } - private NodePrinter type() { - return (out, node) -> out.print(type(node)); + private NodePrinter> type() { + return this::type; } - private String type(Type type) { + private void type(StringBuilder out, Type type) { if (type instanceof NonNullType) { NonNullType inner = (NonNullType) type; - return wrap("", type(inner.getType()), "!"); + type(out, inner.getType()); + out.append('!'); } else if (type instanceof ListType) { ListType inner = (ListType) type; - return wrap("[", type(inner.getType()), "]"); + out.append('['); + type(out, inner.getType()); + out.append(']'); } else { TypeName inner = (TypeName) type; - return inner.getName(); + out.append(inner.getName()); } } private NodePrinter objectTypeExtensionDefinition() { - return (out, node) -> out.printf("extend %s", node(node, ObjectTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, ObjectTypeDefinition.class); + }; } private NodePrinter enumTypeExtensionDefinition() { - return (out, node) -> out.printf("extend %s", node(node, EnumTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, EnumTypeDefinition.class); + }; } private NodePrinter interfaceTypeExtensionDefinition() { - return (out, node) -> out.printf("extend %s", node(node, InterfaceTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, InterfaceTypeDefinition.class); + }; } private NodePrinter unionTypeExtensionDefinition() { - return (out, node) -> out.printf("extend %s", node(node, UnionTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, UnionTypeDefinition.class); + }; } private NodePrinter scalarTypeExtensionDefinition() { - return (out, node) -> out.printf("extend %s", node(node, ScalarTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, ScalarTypeDefinition.class); + }; } private NodePrinter inputObjectTypeExtensionDefinition() { - return (out, node) -> out.printf("extend %s", node(node, InputObjectTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, InputObjectTypeDefinition.class); + }; + } + + private NodePrinter schemaExtensionDefinition() { + return (out, node) -> { + out.append("extend "); + node(out, node, SchemaDefinition.class); + }; } private NodePrinter unionTypeDefinition() { String barSep = compactMode ? "|" : " | "; String equals = compactMode ? "=" : "= "; return (out, node) -> { - out.printf("%s", description(node)); - out.printf("%s", spaced( - "union", - node.getName(), - directives(node.getDirectives()), - equals + join(node.getMemberTypes(), barSep) - )); + description(out, node); + out.append("union "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + out.append(equals); + join(out, node.getMemberTypes(), barSep); }; } private NodePrinter variableDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : " = "; - return (out, node) -> out.printf("$%s%s%s%s", - node.getName(), - nameTypeSep, - type(node.getType()), - wrap(defaultValueEquals, node.getDefaultValue(), "") - ); + return (out, node) -> { + out.append('$'); + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getType()); + if (node.getDefaultValue() != null) { + out.append(defaultValueEquals); + node(out, node.getDefaultValue()); + } + directives(out, node.getDirectives()); + }; } private NodePrinter variableReference() { - return (out, node) -> out.printf("$%s", node.getName()); + return (out, node) -> out.append('$').append(node.getName()); } - private String node(Node node) { + private String node(Node node) { return node(node, null); } - private String node(Node node, Class startClass) { + private void node(StringBuilder out, Node node) { + node(out, node, null); + } + + private String node(Node node, Class startClass) { + StringBuilder builder = new StringBuilder(); + node(builder, node, startClass); + return builder.toString(); + } + + private void node(StringBuilder out, Node node, Class startClass) { if (startClass != null) { assertTrue(startClass.isInstance(node), "The starting class must be in the inherit tree"); } - StringWriter sw = new StringWriter(); - PrintWriter out = new PrintWriter(sw); - NodePrinter printer = _findPrinter(node, startClass); + NodePrinter> printer = _findPrinter(node, startClass); printer.print(out, node); - return sw.toString(); } @SuppressWarnings("unchecked") - private NodePrinter _findPrinter(Node node) { + NodePrinter _findPrinter(Node node) { return _findPrinter(node, null); } - private NodePrinter _findPrinter(Node node, Class startClass) { + NodePrinter _findPrinter(Node node, Class startClass) { if (node == null) { return (out, type) -> { }; } - Class clazz = startClass != null ? startClass : node.getClass(); + Class clazz = startClass != null ? startClass : node.getClass(); while (clazz != Object.class) { NodePrinter nodePrinter = printers.get(clazz); if (nodePrinter != null) { @@ -444,89 +599,112 @@ private NodePrinter _findPrinter(Node node, Class startClass } clazz = clazz.getSuperclass(); } - throw new AssertException(String.format("We have a missing printer implementation for %s : report a bug!", clazz)); + return assertShouldNeverHappen("We have a missing printer implementation for %s : report a bug!", clazz); } - private boolean isEmpty(List list) { + private static boolean isEmpty(List list) { return list == null || list.isEmpty(); } - private boolean isEmpty(String s) { - return s == null || s.trim().length() == 0; + private static boolean isEmpty(String s) { + return s == null || s.isBlank(); } - private List nvl(List list) { - return list != null ? list : Collections.emptyList(); + private static List nvl(List list) { + return list != null ? list : ImmutableKit.emptyList(); } - private NodePrinter value() { - return (out, node) -> out.print(value(node)); + private NodePrinter> value() { + return this::value; } - private String value(Value value) { + private void value(StringBuilder out, Value value) { String argSep = compactMode ? "," : ", "; if (value instanceof IntValue) { - return valueOf(((IntValue) value).getValue()); + out.append(((IntValue) value).getValue()); } else if (value instanceof FloatValue) { - return valueOf(((FloatValue) value).getValue()); + out.append(((FloatValue) value).getValue()); } else if (value instanceof StringValue) { - return wrap("\"", escapeJsonString(((StringValue) value).getValue()), "\""); + out.append('"'); + escapeJsonStringTo(out, ((StringValue) value).getValue()); + out.append('"'); } else if (value instanceof EnumValue) { - return valueOf(((EnumValue) value).getName()); + out.append(((EnumValue) value).getName()); } else if (value instanceof BooleanValue) { - return valueOf(((BooleanValue) value).isValue()); + out.append(((BooleanValue) value).isValue()); } else if (value instanceof NullValue) { - return "null"; + out.append("null"); } else if (value instanceof ArrayValue) { - return "[" + join(((ArrayValue) value).getValues(), argSep) + "]"; + out.append('['); + join(out, ((ArrayValue) value).getValues(), argSep); + out.append(']'); } else if (value instanceof ObjectValue) { - return "{" + join(((ObjectValue) value).getObjectFields(), argSep) + "}"; + out.append('{'); + join(out, ((ObjectValue) value).getObjectFields(), argSep); + out.append('}'); } else if (value instanceof VariableReference) { - return "$" + ((VariableReference) value).getName(); + out.append('$'); + out.append(((VariableReference) value).getName()); } - return ""; } - private String description(Node node) { - Description description = ((AbstractDescribedNode) node).getDescription(); + private void description(StringBuilder out, Node node) { + Description description = ((AbstractDescribedNode) node).getDescription(); if (description == null || description.getContent() == null || compactMode) { - return ""; + return; } - String s; - boolean startNewLine = description.getContent().charAt(0) == '\n'; +; if (description.isMultiLine()) { - s = "\"\"\"" + (startNewLine ? "" : "\n") + description.getContent() + "\n\"\"\"\n"; + out.append("\"\"\""); + if (description.getContent().isEmpty() || description.getContent().charAt(0) != '\n') { + out.append('\n'); + } + out.append(description.getContent()); + out.append("\n\"\"\"\n"); } else { - s = "\"" + description.getContent() + "\"\n"; + out.append('"'); + escapeJsonStringTo(out, description.getContent()); + out.append("\"\n"); } - return s; } - private String directives(List directives) { - return join(nvl(directives), " "); + private void directives(StringBuilder out, List directives) { + join(out, nvl(directives), compactMode ? "" : " "); } - private String join(List nodes, String delim) { - return join(nodes, delim, "", ""); + private > void join(StringBuilder out, List nodes, String delim) { + if (isEmpty(nodes)) { + return; + } + Iterator iterator = nodes.iterator(); + node(out, iterator.next()); + while (iterator.hasNext()) { + out.append(delim); + node(out, iterator.next()); + } } + /* + * Some joined nodes don't need delimiters between them and some do + * This encodes that knowledge of those that don't require delimiters + */ @SuppressWarnings("SameParameterValue") - private String join(List nodes, String delim, String prefix, String suffix) { - String s = nvl(nodes).stream().map(this::node).collect(joining(delim, prefix, suffix)); - return s; - } + private > void joinTight(StringBuilder output, List nodes, String delim, String prefix, String suffix) { + output.append(prefix); - private String spaced(String... args) { - return join(" ", args); - } - - private String smooshed(String... args) { - return join("", args); - } + boolean first = true; + for (T node : nodes) { + if (first) { + first = false; + } else { + if (output.charAt(output.length() - 1) != '}') { + output.append(delim); + } + } + node(output, node); + } - private String join(String delim, String... args) { - String s = Arrays.stream(args).filter(arg -> !isEmpty(arg)).collect(joining(delim)); - return s; + output.append(suffix); } String wrap(String start, String maybeString, String end) { @@ -539,26 +717,31 @@ String wrap(String start, String maybeString, String end) { return start + maybeString + (!isEmpty(end) ? end : ""); } - private String block(List nodes) { + private > void block(StringBuilder out, List nodes) { if (isEmpty(nodes)) { - return "{}"; + return; } if (compactMode) { - return "{" - + join(nodes, " ") - + "}"; + out.append('{'); + joinTight(out, nodes, " ", "", ""); + out.append('}'); + } else { + int offset = out.length(); + out.append("{\n"); + join(out, nodes, "\n"); + indent(out, offset); + out.append("\n}"); } - return indent("{\n" - + join(nodes, "\n")) - + "\n}"; } - private String indent(String maybeString) { - if (isEmpty(maybeString)) { - return ""; + private static void indent(StringBuilder maybeString, int offset) { + for (int i = offset; i < maybeString.length(); i++) { + char c = maybeString.charAt(i); + if (c == '\n') { + maybeString.replace(i, i + 1, "\n "); + i += 3; + } } - maybeString = maybeString.replaceAll("\\n", "\n "); - return maybeString; } @SuppressWarnings("SameParameterValue") @@ -577,9 +760,32 @@ String wrap(String start, Node maybeNode, String end) { * @return the printed node in graphql language format */ public static String printAst(Node node) { - StringWriter sw = new StringWriter(); - printAst(sw, node); - return sw.toString(); + StringBuilder builder = new StringBuilder(); + printAstTo(node, builder); + return builder.toString(); + } + + /** + * This will pretty print the AST node in graphql language format to the given Appendable + * + * @param node the AST node to print + * @param appendable the Appendable to write the output to + * + */ + public static void printAstTo(Node node, Appendable appendable) { + if (appendable instanceof StringBuilder) { + printImpl((StringBuilder) appendable, node, false); + } else if (appendable instanceof Writer) { + printAst((Writer) appendable, node); + } else { + StringBuilder builder = new StringBuilder(); + printImpl(builder, node, false); + try { + appendable.append(builder); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } } /** @@ -589,27 +795,32 @@ public static String printAst(Node node) { * @param node the AST node to print */ public static void printAst(Writer writer, Node node) { - printImpl(writer, node, false); + String ast = printAst(node); + try { + writer.write(ast); + } catch (IOException e) { + throw new UncheckedIOException(e); + } } /** * This will print the Ast node in graphql language format in a compact manner, with no new lines - * and comments stripped out of the text. + * and descriptions stripped out of the text. * * @param node the AST node to print * * @return the printed node in a compact graphql language format */ public static String printAstCompact(Node node) { - StringWriter sw = new StringWriter(); - printImpl(sw, node, true); - return sw.toString(); + StringBuilder builder = new StringBuilder(); + printImpl(builder, node, true); + return builder.toString(); } - private static void printImpl(Writer writer, Node node, boolean compactMode) { - AstPrinter astPrinter = new AstPrinter(compactMode); + private static void printImpl(StringBuilder writer, Node node, boolean compactMode) { + AstPrinter astPrinter = compactMode ? compact() : full(); NodePrinter printer = astPrinter._findPrinter(node); - printer.print(new PrintWriter(writer), node); + printer.print(writer, node); } /** @@ -617,7 +828,17 @@ private static void printImpl(Writer writer, Node node, boolean compactMode) { * * @param the type of node */ - private interface NodePrinter { - void print(PrintWriter out, T node); + interface NodePrinter { + void print(StringBuilder out, T node); + } + + /** + * Allow subclasses to replace a printer for a specific {@link Node} + * + * @param nodeClass the class of the {@link Node} + * @param nodePrinter the custom {@link NodePrinter} + */ + void replacePrinter(Class nodeClass, NodePrinter nodePrinter) { + this.printers.put(nodeClass, nodePrinter); } } diff --git a/src/main/java/graphql/language/AstSignature.java b/src/main/java/graphql/language/AstSignature.java index d901cc6d3b..f6964305b2 100644 --- a/src/main/java/graphql/language/AstSignature.java +++ b/src/main/java/graphql/language/AstSignature.java @@ -1,31 +1,33 @@ package graphql.language; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; import static graphql.util.TreeTransformerUtil.changeNode; /** - * This will produce signature query documents that can be used say for logging. + * This will produce signature and privacy safe query documents that can be used for query categorisation and logging. */ @PublicApi public class AstSignature { /** * This can produce a "signature" canonical AST that conforms to the algorithm as outlined - * here + * here * which removes excess operations, removes any field aliases, hides literal values and sorts the result into a canonical - * query + * query. + * + * A signature says two queries with the same signature can be thought of as the same query. For example + * a tracing system will want a canonical signature for queries to group them. * * @param document the document to make a signature query from * @param operationName the name of the operation to do it for (since only one query can be run at a time) @@ -35,12 +37,35 @@ public class AstSignature { public Document signatureQuery(Document document, String operationName) { return sortAST( removeAliases( - hideLiterals( + hideLiterals(true, + dropUnusedQueryDefinitions(document, operationName))) + ); + } + + /** + * This can produce a "privacy safe" AST that some what conforms to the algorithm as outlined + * here + * which removes excess operations, removes any field aliases, hides some literal values and sorts the result. + * + * This is not a signature. For example object literal structures are retained like `{ a : "", b : 0}` which means + * you can infer what was asked for but not what the values are. This differs from {@link AstSignature#signatureQuery(Document, String)} + * which collapses literals to create more canonical signatures. A privacy safe Query is useful for logging say to show + * what shapes was asked for without revealing what data was provided + * + * @param document the document to make a privacy safe query from + * @param operationName the name of the operation to do it for (since only one query can be run at a time) + * + * @return the privacy safe query in document form + */ + public Document privacySafeQuery(Document document, String operationName) { + return sortAST( + removeAliases( + hideLiterals(false, dropUnusedQueryDefinitions(document, operationName))) ); } - private Document hideLiterals(Document document) { + private Document hideLiterals(boolean signatureMode, Document document) { final Map variableRemapping = new HashMap<>(); final AtomicInteger variableCount = new AtomicInteger(); @@ -67,12 +92,18 @@ public TraversalControl visitBooleanValue(BooleanValue node, TraverserContext context) { - return changeNode(context, node.transform(builder -> builder.values(Collections.emptyList()))); + if (signatureMode) { + return changeNode(context, node.transform(builder -> builder.values(ImmutableKit.emptyList()))); + } + return TraversalControl.CONTINUE; } @Override public TraversalControl visitObjectValue(ObjectValue node, TraverserContext context) { - return changeNode(context, node.transform(builder -> builder.objectFields(Collections.emptyList()))); + if (signatureMode) { + return changeNode(context, node.transform(builder -> builder.objectFields(ImmutableKit.emptyList()))); + } + return TraversalControl.CONTINUE; } @Override @@ -117,16 +148,15 @@ private Document dropUnusedQueryDefinitions(Document document, final String oper NodeVisitorStub visitor = new NodeVisitorStub() { @Override public TraversalControl visitDocument(Document node, TraverserContext context) { - List wantedDefinitions = node.getDefinitions().stream() - .filter(d -> { + List wantedDefinitions = ImmutableKit.filter(node.getDefinitions(), + d -> { if (d instanceof OperationDefinition) { OperationDefinition operationDefinition = (OperationDefinition) d; return isThisOperation(operationDefinition, operationName); } return d instanceof FragmentDefinition; // SDL in a query makes no sense - its gone should it be present - }) - .collect(Collectors.toList()); + }); Document changedNode = node.transform(builder -> { builder.definitions(wantedDefinitions); @@ -147,7 +177,7 @@ private boolean isThisOperation(OperationDefinition operationDefinition, String private Document transformDoc(Document document, NodeVisitorStub visitor) { AstTransformer astTransformer = new AstTransformer(); - Node newDoc = astTransformer.transform(document, visitor); + Node newDoc = astTransformer.transform(document, visitor); return (Document) newDoc; } diff --git a/src/main/java/graphql/language/AstSorter.java b/src/main/java/graphql/language/AstSorter.java index 34d6bac637..d24969ea94 100644 --- a/src/main/java/graphql/language/AstSorter.java +++ b/src/main/java/graphql/language/AstSorter.java @@ -178,6 +178,7 @@ public TraversalControl visitObjectTypeDefinition(ObjectTypeDefinition node, Tra public TraversalControl visitInterfaceTypeDefinition(InterfaceTypeDefinition node, TraverserContext context) { InterfaceTypeDefinition changedNode = node.transform(builder -> { builder.directives(sort(node.getDirectives(), comparing(Directive::getName))); + builder.implementz(sort(node.getImplements(), comparingTypes())); builder.definitions(sort(node.getFieldDefinitions(), comparing(FieldDefinition::getName))); }); return changeNode(context, changedNode); diff --git a/src/main/java/graphql/language/AstTransformer.java b/src/main/java/graphql/language/AstTransformer.java index 4340ff5d24..f4e218dffd 100644 --- a/src/main/java/graphql/language/AstTransformer.java +++ b/src/main/java/graphql/language/AstTransformer.java @@ -8,6 +8,7 @@ import graphql.util.TreeParallelTransformer; import graphql.util.TreeTransformer; +import java.util.Map; import java.util.concurrent.ForkJoinPool; import static graphql.Assert.assertNotNull; @@ -20,25 +21,38 @@ @PublicApi public class AstTransformer { - + /** + * Transforms the input tree using the Visitor Pattern. + * @param root the root node of the input tree. + * @param nodeVisitor the visitor which will transform the input tree. + * @return the transformed tree. + */ public Node transform(Node root, NodeVisitor nodeVisitor) { assertNotNull(root); assertNotNull(nodeVisitor); - TraverserVisitor traverserVisitor = new TraverserVisitor() { - @Override - public TraversalControl enter(TraverserContext context) { - return context.thisNode().accept(context, nodeVisitor); - } + TraverserVisitor traverserVisitor = getNodeTraverserVisitor(nodeVisitor); + TreeTransformer treeTransformer = new TreeTransformer<>(AST_NODE_ADAPTER); + return treeTransformer.transform(root, traverserVisitor); + } - @Override - public TraversalControl leave(TraverserContext context) { - return TraversalControl.CONTINUE; - } - }; + /** + * Transforms the input tree using the Visitor Pattern. + * @param root the root node of the input tree. + * @param nodeVisitor the visitor which will transform the input tree. + * @param rootVars a context argument to pass information into the nodeVisitor. Pass a contextual + * object to your visitor by adding it to this map such that such that the key + * is the class of the object, and the value is the object itself. The object + * can be retrieved within the visitor by calling context.getVarFromParents(). + * @return the transformed tree. + */ + public Node transform(Node root, NodeVisitor nodeVisitor, Map, Object> rootVars) { + assertNotNull(root); + assertNotNull(nodeVisitor); + TraverserVisitor traverserVisitor = getNodeTraverserVisitor(nodeVisitor); TreeTransformer treeTransformer = new TreeTransformer<>(AST_NODE_ADAPTER); - return treeTransformer.transform(root, traverserVisitor); + return treeTransformer.transform(root, traverserVisitor, rootVars); } public Node transformParallel(Node root, NodeVisitor nodeVisitor) { @@ -61,4 +75,17 @@ public TraversalControl enter(TraverserContext context) { return treeParallelTransformer.transform(root, traverserVisitor); } + private TraverserVisitor getNodeTraverserVisitor(NodeVisitor nodeVisitor) { + return new TraverserVisitor() { + @Override + public TraversalControl enter(TraverserContext context) { + return context.thisNode().accept(context, nodeVisitor); + } + + @Override + public TraversalControl leave(TraverserContext context) { + return TraversalControl.CONTINUE; + } + }; + } } diff --git a/src/main/java/graphql/language/AstValueHelper.java b/src/main/java/graphql/language/AstValueHelper.java deleted file mode 100644 index 8222775664..0000000000 --- a/src/main/java/graphql/language/AstValueHelper.java +++ /dev/null @@ -1,196 +0,0 @@ -package graphql.language; - -import graphql.Assert; -import graphql.AssertException; -import graphql.GraphQLException; -import graphql.Internal; -import graphql.Scalars; -import graphql.parser.Parser; -import graphql.schema.GraphQLEnumType; -import graphql.schema.GraphQLInputObjectField; -import graphql.schema.GraphQLInputObjectType; -import graphql.schema.GraphQLInputType; -import graphql.schema.GraphQLList; -import graphql.schema.GraphQLNonNull; -import graphql.schema.GraphQLScalarType; -import graphql.schema.GraphQLType; -import graphql.schema.PropertyDataFetcherHelper; -import graphql.util.FpKit; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; - -import static graphql.schema.GraphQLTypeUtil.isList; -import static graphql.schema.GraphQLTypeUtil.isNonNull; - -@Internal -public class AstValueHelper { - - /** - * Produces a GraphQL Value AST given a Java value. - *

    - * A GraphQL type must be provided, which will be used to interpret different - * Java values. - * - *

    -     * |      Value    | GraphQL Value        |
    -     * | ------------- | -------------------- |
    -     * | Object        | Input Object         |
    -     * | Array         | List                 |
    -     * | Boolean       | Boolean              |
    -     * | String        | String / Enum Value  |
    -     * | Number        | Int / Float          |
    -     * | Mixed         | Enum Value           |
    -     * 
    - * - * @param value - the java value to be converted into graphql ast - * @param type the graphql type of the object - * @return a grapql language ast {@link Value} - */ - public static Value astFromValue(Object value, GraphQLType type) { - if (value == null) { - return null; - } - - if (isNonNull(type)) { - return handleNonNull(value, (GraphQLNonNull) type); - } - - // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but - // the value is not an array, convert the value using the list's item type. - if (isList(type)) { - return handleList(value, (GraphQLList) type); - } - - // Populate the fields of the input object by creating ASTs from each value - // in the JavaScript object according to the fields in the input type. - if (type instanceof GraphQLInputObjectType) { - return handleInputObject(value, (GraphQLInputObjectType) type); - } - - if (!(type instanceof GraphQLScalarType || type instanceof GraphQLEnumType)) { - throw new AssertException("Must provide Input Type, cannot use: " + type.getClass()); - } - - // Since value is an internally represented value, it must be serialized - // to an externally represented value before converting into an AST. - final Object serialized = serialize(type, value); - if (isNullish(serialized)) { - return null; - } - - // Others serialize based on their corresponding JavaScript scalar types. - if (serialized instanceof Boolean) { - return BooleanValue.newBooleanValue().value((Boolean) serialized).build(); - } - - String stringValue = serialized.toString(); - // numbers can be Int or Float values. - if (serialized instanceof Number) { - return handleNumber(stringValue); - } - - if (serialized instanceof String) { - // Enum types use Enum literals. - if (type instanceof GraphQLEnumType) { - return EnumValue.newEnumValue().name(stringValue).build(); - } - - // ID types can use Int literals. - if (type == Scalars.GraphQLID && stringValue.matches("^[0-9]+$")) { - return IntValue.newIntValue().value(new BigInteger(stringValue)).build(); - } - - return StringValue.newStringValue().value(stringValue).build(); - } - - throw new AssertException("'Cannot convert value to AST: " + serialized); - } - - private static Value handleInputObject(Object javaValue, GraphQLInputObjectType type) { - List fields = type.getFields(); - List fieldNodes = new ArrayList<>(); - fields.forEach(field -> { - String fieldName = field.getName(); - GraphQLInputType fieldType = field.getType(); - Object fieldValueObj = PropertyDataFetcherHelper.getPropertyValue(fieldName, javaValue, fieldType); - Value nodeValue = astFromValue(fieldValueObj, fieldType); - if (nodeValue != null) { - - fieldNodes.add(ObjectField.newObjectField().name(fieldName).value(nodeValue).build()); - } - }); - return ObjectValue.newObjectValue().objectFields(fieldNodes).build(); - } - - private static Value handleNumber(String stringValue) { - if (stringValue.matches("^[0-9]+$")) { - return IntValue.newIntValue().value(new BigInteger(stringValue)).build(); - } else { - return FloatValue.newFloatValue().value(new BigDecimal(stringValue)).build(); - } - } - - @SuppressWarnings("rawtypes") - private static Value handleList(Object _value, GraphQLList type) { - GraphQLType itemType = type.getWrappedType(); - boolean isIterable = _value instanceof Iterable; - if (isIterable || (_value != null && _value.getClass().isArray())) { - Iterable iterable = isIterable ? (Iterable) _value : FpKit.toCollection(_value); - List valuesNodes = new ArrayList<>(); - for (Object item : iterable) { - Value itemNode = astFromValue(item, itemType); - if (itemNode != null) { - valuesNodes.add(itemNode); - } - } - return ArrayValue.newArrayValue().values(valuesNodes).build(); - } - return astFromValue(_value, itemType); - } - - private static Value handleNonNull(Object _value, GraphQLNonNull type) { - GraphQLType wrappedType = type.getWrappedType(); - return astFromValue(_value, wrappedType); - } - - private static Object serialize(GraphQLType type, Object value) { - if (type instanceof GraphQLScalarType) { - return ((GraphQLScalarType) type).getCoercing().serialize(value); - } else { - return ((GraphQLEnumType) type).serialize(value); - } - } - - private static boolean isNullish(Object serialized) { - if (serialized instanceof Number) { - return Double.isNaN(((Number) serialized).doubleValue()); - } - return serialized == null; - } - - - /** - * Parses an AST value literal into the correct {@link graphql.language.Value} which - * MUST be of the correct shape eg '"string"' or 'true' or '1' or '{ "object", "form" }' - * or '[ "array", "form" ]' otherwise an exception is thrown - * - * @param astLiteral the string to parse an AST literal - * @return a valid Value - * @throws graphql.AssertException if the input can be parsed - */ - public static Value valueFromAst(String astLiteral) { - // we use the parser to give us the AST elements as if we defined an inputType - String toParse = "input X { x : String = " + astLiteral + "}"; - try { - Document doc = new Parser().parseDocument(toParse); - InputObjectTypeDefinition inputType = (InputObjectTypeDefinition) doc.getDefinitions().get(0); - InputValueDefinition inputValueDefinition = inputType.getInputValueDefinitions().get(0); - return inputValueDefinition.getDefaultValue(); - } catch (Exception e) { - return Assert.assertShouldNeverHappen("valueFromAst of '%s' failed because of '%s'", astLiteral, e.getMessage()); - } - } -} diff --git a/src/main/java/graphql/language/BooleanValue.java b/src/main/java/graphql/language/BooleanValue.java index 7607247687..c1fd7e3450 100644 --- a/src/main/java/graphql/language/BooleanValue.java +++ b/src/main/java/graphql/language/BooleanValue.java @@ -1,29 +1,34 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; @PublicApi +@NullMarked public class BooleanValue extends AbstractNode implements ScalarValue { private final boolean value; @Internal - protected BooleanValue(boolean value, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected BooleanValue(boolean value, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.value = value; } @@ -34,7 +39,7 @@ protected BooleanValue(boolean value, SourceLocation sourceLocation, List(), IgnoredChars.EMPTY, Collections.emptyMap()); + this(value, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public boolean isValue() { @@ -43,7 +48,7 @@ public boolean isValue() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -58,7 +63,7 @@ public BooleanValue withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -89,6 +94,10 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitBooleanValue(this, context); } + public static BooleanValue of(boolean value) { + return BooleanValue.newBooleanValue(value).build(); + } + public static Builder newBooleanValue() { return new Builder(); } @@ -104,10 +113,11 @@ public BooleanValue transform(Consumer builderConsumer) { return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; private boolean value; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -116,7 +126,7 @@ private Builder() { private Builder(BooleanValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.value = existing.isValue(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -134,7 +144,7 @@ public Builder value(boolean value) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/Comment.java b/src/main/java/graphql/language/Comment.java index 6ab6163ac0..a7a546facf 100644 --- a/src/main/java/graphql/language/Comment.java +++ b/src/main/java/graphql/language/Comment.java @@ -4,6 +4,9 @@ import java.io.Serializable; +/** + * A single-line comment. These are comments that start with a {@code #} in source documents. + */ @PublicApi public class Comment implements Serializable { public final String content; diff --git a/src/main/java/graphql/language/Directive.java b/src/main/java/graphql/language/Directive.java index 8c9d6b3603..999722bec7 100644 --- a/src/main/java/graphql/language/Directive.java +++ b/src/main/java/graphql/language/Directive.java @@ -1,26 +1,29 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static graphql.language.NodeUtil.argumentsByName; -import static java.util.Collections.emptyMap; +import static graphql.language.NodeUtil.nodeByName; @PublicApi public class Directive extends AbstractNode implements NamedNode { private final String name; - private final List arguments = new ArrayList<>(); + private final ImmutableList arguments; public static final String CHILD_ARGUMENTS = "arguments"; @@ -28,7 +31,7 @@ public class Directive extends AbstractNode implements NamedNode arguments, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.name = name; - this.arguments.addAll(arguments); + this.arguments = ImmutableList.copyOf(arguments); } /** @@ -38,7 +41,7 @@ protected Directive(String name, List arguments, SourceLocation source * @param arguments of the directive */ public Directive(String name, List arguments) { - this(name, arguments, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, arguments, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @@ -48,20 +51,20 @@ public Directive(String name, List arguments) { * @param name of the directive */ public Directive(String name) { - this(name, new ArrayList<>(), null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public List getArguments() { - return new ArrayList<>(arguments); + return arguments; } public Map getArgumentsByName() { // the spec says that args MUST be unique within context - return argumentsByName(arguments); + return nodeByName(arguments); } public Argument getArgument(String argumentName) { - return getArgumentsByName().get(argumentName); + return NodeUtil.findNodeByName(arguments, argumentName); } @Override @@ -72,7 +75,7 @@ public String getName() { @Override public List getChildren() { - return new ArrayList<>(arguments); + return ImmutableList.copyOf(arguments); } @Override @@ -100,7 +103,7 @@ public boolean isEqualTo(Node o) { Directive that = (Directive) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @@ -134,9 +137,9 @@ public Directive transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; - private List arguments = new ArrayList<>(); + private ImmutableList arguments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -145,9 +148,9 @@ private Builder() { private Builder(Directive existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); - this.arguments = existing.getArguments(); + this.arguments = ImmutableList.copyOf(existing.getArguments()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -159,7 +162,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -169,7 +172,12 @@ public Builder name(String name) { } public Builder arguments(List arguments) { - this.arguments = arguments; + this.arguments = ImmutableList.copyOf(arguments); + return this; + } + + public Builder argument(Argument argument) { + this.arguments = ImmutableKit.addToList(arguments,argument); return this; } diff --git a/src/main/java/graphql/language/DirectiveDefinition.java b/src/main/java/graphql/language/DirectiveDefinition.java index cb5a977be9..8aed5bb9ff 100644 --- a/src/main/java/graphql/language/DirectiveDefinition.java +++ b/src/main/java/graphql/language/DirectiveDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,23 +12,27 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.addToList; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi -public class DirectiveDefinition extends AbstractDescribedNode implements SDLDefinition, NamedNode { +public class DirectiveDefinition extends AbstractDescribedNode implements SDLNamedDefinition, NamedNode { private final String name; - private final List inputValueDefinitions; - private final List directiveLocations; + private final boolean repeatable; + private final ImmutableList inputValueDefinitions; + private final ImmutableList directiveLocations; public static final String CHILD_INPUT_VALUE_DEFINITIONS = "inputValueDefinitions"; public static final String CHILD_DIRECTIVE_LOCATION = "directiveLocation"; @Internal protected DirectiveDefinition(String name, + boolean repeatable, Description description, List inputValueDefinitions, List directiveLocations, @@ -36,8 +42,9 @@ protected DirectiveDefinition(String name, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.inputValueDefinitions = inputValueDefinitions; - this.directiveLocations = directiveLocations; + this.repeatable = repeatable; + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); + this.directiveLocations = ImmutableList.copyOf(directiveLocations); } /** @@ -46,7 +53,7 @@ protected DirectiveDefinition(String name, * @param name of the directive definition */ public DirectiveDefinition(String name) { - this(name, null, new ArrayList<>(), new ArrayList<>(), null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, false, null, emptyList(), emptyList(), null, emptyList(), IgnoredChars.EMPTY, ImmutableKit.emptyMap()); } @Override @@ -54,12 +61,22 @@ public String getName() { return name; } + /** + * An AST node can have multiple directives associated with it IF the directive definition allows + * repeatable directives. + * + * @return true if this directive definition allows repeatable directives + */ + public boolean isRepeatable() { + return repeatable; + } + public List getInputValueDefinitions() { - return new ArrayList<>(inputValueDefinitions); + return inputValueDefinitions; } public List getDirectiveLocations() { - return new ArrayList<>(directiveLocations); + return directiveLocations; } @Override @@ -97,12 +114,13 @@ public boolean isEqualTo(Node o) { DirectiveDefinition that = (DirectiveDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public DirectiveDefinition deepCopy() { return new DirectiveDefinition(name, + repeatable, description, deepCopy(inputValueDefinitions), deepCopy(directiveLocations), @@ -138,11 +156,12 @@ public DirectiveDefinition transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; + private boolean repeatable = false; private Description description; - private List inputValueDefinitions = new ArrayList<>(); - private List directiveLocations = new ArrayList<>(); + private ImmutableList inputValueDefinitions = emptyList(); + private ImmutableList directiveLocations = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -151,11 +170,12 @@ private Builder() { private Builder(DirectiveDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); + this.repeatable = existing.isRepeatable(); this.description = existing.getDescription(); - this.inputValueDefinitions = existing.getInputValueDefinitions(); - this.directiveLocations = existing.getDirectiveLocations(); + this.inputValueDefinitions = ImmutableList.copyOf(existing.getInputValueDefinitions()); + this.directiveLocations = ImmutableList.copyOf(existing.getDirectiveLocations()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -166,7 +186,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -175,28 +195,34 @@ public Builder name(String name) { return this; } + public Builder repeatable(boolean repeatable) { + this.repeatable = repeatable; + return this; + } + public Builder description(Description description) { this.description = description; return this; } public Builder inputValueDefinitions(List inputValueDefinitions) { - this.inputValueDefinitions = inputValueDefinitions; + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); return this; } public Builder inputValueDefinition(InputValueDefinition inputValueDefinition) { - this.inputValueDefinitions.add(inputValueDefinition); + this.inputValueDefinitions = addToList(inputValueDefinitions, inputValueDefinition); return this; } + public Builder directiveLocations(List directiveLocations) { - this.directiveLocations = directiveLocations; + this.directiveLocations = ImmutableList.copyOf(directiveLocations); return this; } public Builder directiveLocation(DirectiveLocation directiveLocation) { - this.directiveLocations.add(directiveLocation); + this.directiveLocations = addToList(directiveLocations, directiveLocation); return this; } @@ -217,7 +243,7 @@ public Builder additionalData(String key, String value) { public DirectiveDefinition build() { - return new DirectiveDefinition(name, description, inputValueDefinitions, directiveLocations, sourceLocation, comments, ignoredChars, additionalData); + return new DirectiveDefinition(name, repeatable, description, inputValueDefinitions, directiveLocations, sourceLocation, comments, ignoredChars, additionalData); } } } diff --git a/src/main/java/graphql/language/DirectiveLocation.java b/src/main/java/graphql/language/DirectiveLocation.java index 89d4d56165..f9e5d920d0 100644 --- a/src/main/java/graphql/language/DirectiveLocation.java +++ b/src/main/java/graphql/language/DirectiveLocation.java @@ -1,19 +1,21 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; @@ -33,7 +35,7 @@ protected DirectiveLocation(String name, SourceLocation sourceLocation, List(), IgnoredChars.EMPTY, Collections.emptyMap()); + this(name, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override @@ -43,7 +45,7 @@ public String getName() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -68,7 +70,7 @@ public boolean isEqualTo(Node o) { DirectiveLocation that = (DirectiveLocation) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -100,7 +102,7 @@ public DirectiveLocation transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -110,7 +112,7 @@ private Builder() { private Builder(DirectiveLocation existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -121,7 +123,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/DirectivesContainer.java b/src/main/java/graphql/language/DirectivesContainer.java index cc8bae3e91..a300072486 100644 --- a/src/main/java/graphql/language/DirectivesContainer.java +++ b/src/main/java/graphql/language/DirectivesContainer.java @@ -6,34 +6,47 @@ import java.util.List; import java.util.Map; -import static graphql.language.NodeUtil.directivesByName; - /** - * Represents a language node that can contain Directives. + * Represents a language node that can contain Directives. Directives can be repeatable and (by default) non repeatable. + *

    + * There are access methods here that get the two different types. + * + * @see graphql.language.DirectiveDefinition + * @see DirectiveDefinition#isRepeatable() */ @PublicApi public interface DirectivesContainer extends Node { /** - * @return a list of directives associated with this Node + * This will return a list of all the directives that have been put on {@link graphql.language.Node} as a flat list, which may contain repeatable + * and non repeatable directives. + * + * @return a list of all the directives associated with this Node */ List getDirectives(); /** - * @return a a map of directives by directive name + * This will return a Map of the all directives that are associated with a {@link graphql.language.Node}, including both repeatable and non repeatable directives. + * + * @return a map of all directives by directive name + */ + Map> getDirectivesByName(); + + /** + * Returns all the directives with the provided name, including repeatable and non repeatable directives. + * + * @param directiveName the name of the directives to retrieve + * + * @return the directives or empty list if there is not one with that name */ - default Map getDirectivesByName() { - return directivesByName(getDirectives()); - } + List getDirectives(String directiveName); /** - * Returns a directive with the provided name + * This returns true if the AST node contains one or more directives by the specified name * - * @param directiveName the name of the directive to retrieve + * @param directiveName the name ot check * - * @return the directive or null if there is one one with that name + * @return true if the AST node contains one or more directives by the specified name */ - default Directive getDirective(String directiveName) { - return getDirectivesByName().get(directiveName); - } + boolean hasDirective(String directiveName); } diff --git a/src/main/java/graphql/language/Document.java b/src/main/java/graphql/language/Document.java index 4a4120ba79..1f613686e4 100644 --- a/src/main/java/graphql/language/Document.java +++ b/src/main/java/graphql/language/Document.java @@ -1,33 +1,36 @@ package graphql.language; +import com.google.common.collect.ImmutableList; +import graphql.Assert; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.function.Consumer; -import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class Document extends AbstractNode { - private final List definitions; + private final ImmutableList definitions; public static final String CHILD_DEFINITIONS = "definitions"; @Internal protected Document(List definitions, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); - this.definitions = definitions; + this.definitions = ImmutableList.copyOf(definitions); } /** @@ -36,11 +39,11 @@ protected Document(List definitions, SourceLocation sourceLocation, * @param definitions the definitions that make up this document */ public Document(List definitions) { - this(definitions, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(definitions, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public List getDefinitions() { - return new ArrayList<>(definitions); + return definitions; } /** @@ -52,15 +55,48 @@ public List getDefinitions() { * @return a list of definitions of that class or empty list */ public List getDefinitionsOfType(Class definitionClass) { + return ImmutableKit.filterAndMap(definitions, + d -> definitionClass.isAssignableFrom(d.getClass()), + definitionClass::cast); + } + + /** + * Returns the first of the specific type. It uses {@link java.lang.Class#isAssignableFrom(Class)} for the test. + * + * This is useful when you have generated a document in code and KNOW there is only one definition in it + * + * @param definitionClass the definition class + * @param the type of definition + * + * @return an optional definition which will be empty of there are none + */ + public Optional getFirstDefinitionOfType(Class definitionClass) { return definitions.stream() .filter(d -> definitionClass.isAssignableFrom(d.getClass())) .map(definitionClass::cast) - .collect(Collectors.toList()); + .findFirst(); + } + + /** + * This will allow you to find a {@link OperationDefinition} with the specified name + * in the document + * + * @param name the name of the operation to find + * + * @return an optional {@link OperationDefinition} + */ + public Optional getOperationDefinition(String name) { + Assert.assertNotNull(name); + return definitions.stream() + .filter(d -> OperationDefinition.class.isAssignableFrom(d.getClass())) + .map(OperationDefinition.class::cast) + .filter(opDef -> name.equals(opDef.getName())) + .findFirst(); } @Override public List getChildren() { - return new ArrayList<>(definitions); + return ImmutableList.copyOf(definitions); } @Override @@ -117,9 +153,9 @@ public Document transform(Consumer builderConsumer) { } public static final class Builder implements NodeBuilder { - private List definitions = new ArrayList<>(); + private ImmutableList definitions = emptyList(); private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -128,19 +164,19 @@ private Builder() { private Builder(Document existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); - this.definitions = existing.getDefinitions(); + this.comments = ImmutableList.copyOf(existing.getComments()); + this.definitions = ImmutableList.copyOf(existing.getDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } public Builder definitions(List definitions) { - this.definitions = definitions; + this.definitions = ImmutableList.copyOf(definitions); return this; } public Builder definition(Definition definition) { - this.definitions.add(definition); + this.definitions = ImmutableKit.addToList(definitions, definition); return this; } @@ -150,7 +186,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/EnumTypeDefinition.java b/src/main/java/graphql/language/EnumTypeDefinition.java index b16de0df73..51bad7b12a 100644 --- a/src/main/java/graphql/language/EnumTypeDefinition.java +++ b/src/main/java/graphql/language/EnumTypeDefinition.java @@ -1,7 +1,9 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -9,17 +11,19 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class EnumTypeDefinition extends AbstractDescribedNode implements TypeDefinition, DirectivesContainer, NamedNode { private final String name; - private final List enumValueDefinitions; - private final List directives; + private final ImmutableList enumValueDefinitions; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_ENUM_VALUE_DEFINITIONS = "enumValueDefinitions"; public static final String CHILD_DIRECTIVES = "directives"; @@ -34,8 +38,8 @@ protected EnumTypeDefinition(String name, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.directives = (null == directives) ? new ArrayList<>() : directives; - this.enumValueDefinitions = enumValueDefinitions; + this.directives = NodeUtil.DirectivesHolder.of(directives); + this.enumValueDefinitions = ImmutableKit.nonNullCopyOf(enumValueDefinitions); } /** @@ -44,16 +48,31 @@ protected EnumTypeDefinition(String name, * @param name of the enum */ public EnumTypeDefinition(String name) { - this(name, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public List getEnumValueDefinitions() { - return new ArrayList<>(enumValueDefinitions); + return enumValueDefinitions; } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -65,7 +84,7 @@ public String getName() { public List getChildren() { List result = new ArrayList<>(); result.addAll(enumValueDefinitions); - result.addAll(directives); + result.addAll(directives.getDirectives()); return result; } @@ -73,7 +92,7 @@ public List getChildren() { public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .children(CHILD_ENUM_VALUE_DEFINITIONS, enumValueDefinitions) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -96,14 +115,14 @@ public boolean isEqualTo(Node o) { EnumTypeDefinition that = (EnumTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public EnumTypeDefinition deepCopy() { return new EnumTypeDefinition(name, deepCopy(enumValueDefinitions), - deepCopy(directives), + deepCopy(directives.getDirectives()), description, getSourceLocation(), getComments(), @@ -135,13 +154,13 @@ public EnumTypeDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List enumValueDefinitions = new ArrayList<>(); - private List directives = new ArrayList<>(); + private ImmutableList enumValueDefinitions = emptyList(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -150,11 +169,11 @@ private Builder() { private Builder(EnumTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.enumValueDefinitions = existing.getEnumValueDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.enumValueDefinitions = ImmutableList.copyOf(existing.getEnumValueDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -165,7 +184,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -180,22 +199,23 @@ public Builder description(Description description) { } public Builder enumValueDefinitions(List enumValueDefinitions) { - this.enumValueDefinitions = enumValueDefinitions; + this.enumValueDefinitions = ImmutableList.copyOf(enumValueDefinitions); return this; } public Builder enumValueDefinition(EnumValueDefinition enumValueDefinition) { - this.enumValueDefinitions.add(enumValueDefinition); + this.enumValueDefinitions = ImmutableKit.addToList(enumValueDefinitions, enumValueDefinition); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/EnumTypeExtensionDefinition.java b/src/main/java/graphql/language/EnumTypeExtensionDefinition.java index aafb5cc7d7..82bb3eb634 100644 --- a/src/main/java/graphql/language/EnumTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/EnumTypeExtensionDefinition.java @@ -1,18 +1,20 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class EnumTypeExtensionDefinition extends EnumTypeDefinition { +public class EnumTypeExtensionDefinition extends EnumTypeDefinition implements SDLExtensionDefinition { @Internal protected EnumTypeExtensionDefinition(String name, @@ -51,19 +53,27 @@ public static Builder newEnumTypeExtensionDefinition() { return new Builder(); } + @Override + public EnumTypeExtensionDefinition withNewChildren(NodeChildrenContainer newChildren) { + return transformExtension(builder -> builder + .enumValueDefinitions(newChildren.getChildren(CHILD_ENUM_VALUE_DEFINITIONS)) + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) + ); + } + public EnumTypeExtensionDefinition transformExtension(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List enumValueDefinitions; - private List directives; + private ImmutableList enumValueDefinitions = emptyList(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -72,11 +82,11 @@ private Builder() { private Builder(EnumTypeExtensionDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.enumValueDefinitions = existing.getEnumValueDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.enumValueDefinitions = ImmutableList.copyOf(existing.getEnumValueDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -87,7 +97,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -102,12 +112,18 @@ public Builder description(Description description) { } public Builder enumValueDefinitions(List enumValueDefinitions) { - this.enumValueDefinitions = enumValueDefinitions; + this.enumValueDefinitions = ImmutableList.copyOf(enumValueDefinitions); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/EnumValue.java b/src/main/java/graphql/language/EnumValue.java index 5254034eba..4164b6c68b 100644 --- a/src/main/java/graphql/language/EnumValue.java +++ b/src/main/java/graphql/language/EnumValue.java @@ -1,29 +1,35 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class EnumValue extends AbstractNode implements Value, NamedNode { private final String name; @Internal - protected EnumValue(String name, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected EnumValue(String name, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.name = name; } @@ -35,7 +41,11 @@ protected EnumValue(String name, SourceLocation sourceLocation, List co * @param name of the enum value */ public EnumValue(String name) { - this(name, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); + } + + public static EnumValue of(String name) { + return newEnumValue().name(name).build(); } @Override @@ -46,7 +56,7 @@ public String getName() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -61,7 +71,7 @@ public EnumValue withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -71,7 +81,7 @@ public boolean isEqualTo(Node o) { EnumValue that = (EnumValue) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -105,10 +115,11 @@ public EnumValue transform(Consumer builderConsumer) { return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; private String name; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -117,7 +128,7 @@ private Builder() { private Builder(EnumValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -134,7 +145,7 @@ public Builder name(String name) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/EnumValueDefinition.java b/src/main/java/graphql/language/EnumValueDefinition.java index 303ac8ba8d..5e28ae87f9 100644 --- a/src/main/java/graphql/language/EnumValueDefinition.java +++ b/src/main/java/graphql/language/EnumValueDefinition.java @@ -1,25 +1,28 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class EnumValueDefinition extends AbstractDescribedNode implements DirectivesContainer, NamedNode { private final String name; - private final List directives; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_DIRECTIVES = "directives"; @@ -32,7 +35,7 @@ protected EnumValueDefinition(String name, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.directives = (null == directives) ? new ArrayList<>() : directives; + this.directives = NodeUtil.DirectivesHolder.of(directives); } /** @@ -41,7 +44,7 @@ protected EnumValueDefinition(String name, * @param name of the enum value */ public EnumValueDefinition(String name) { - this(name, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -51,7 +54,7 @@ public EnumValueDefinition(String name) { * @param directives the directives on the enum value */ public EnumValueDefinition(String name, List directives) { - this(name, directives, null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, directives, null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override @@ -61,20 +64,33 @@ public String getName() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override public List getChildren() { - List result = new ArrayList<>(); - result.addAll(directives); - return result; + return ImmutableList.copyOf(directives.getDirectives()); } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -96,13 +112,13 @@ public boolean isEqualTo(Node o) { EnumValueDefinition that = (EnumValueDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public EnumValueDefinition deepCopy() { - return new EnumValueDefinition(name, deepCopy(directives), description, getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); + return new EnumValueDefinition(name, deepCopy(directives.getDirectives()), description, getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); } @Override @@ -130,10 +146,10 @@ public EnumValueDefinition transform(Consumer builderConsumer) { public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives; + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -142,10 +158,10 @@ private Builder() { private Builder(EnumValueDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -156,7 +172,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -170,8 +186,14 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/Field.java b/src/main/java/graphql/language/Field.java index 74f3680f2d..45f9103f3d 100644 --- a/src/main/java/graphql/language/Field.java +++ b/src/main/java/graphql/language/Field.java @@ -1,20 +1,26 @@ package graphql.language; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.util.Interning; import graphql.util.TraversalControl; import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; +import static com.google.common.collect.ImmutableMap.copyOf; import static graphql.Assert.assertNotNull; -import static java.util.Collections.emptyMap; +import static graphql.collect.ImmutableKit.addToMap; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; /* * This is provided to a DataFetcher, therefore it is a public API. @@ -25,8 +31,8 @@ public class Field extends AbstractNode implements Selection, Sele private final String name; private final String alias; - private final List arguments; - private final List directives; + private final ImmutableList arguments; + private final NodeUtil.DirectivesHolder directives; private final SelectionSet selectionSet; public static final String CHILD_ARGUMENTS = "arguments"; @@ -45,10 +51,10 @@ protected Field(String name, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); - this.name = name; + this.name = name == null ? null : Interning.intern(name); this.alias = alias; - this.arguments = arguments; - this.directives = directives; + this.arguments = ImmutableList.copyOf(arguments); + this.directives = NodeUtil.DirectivesHolder.of(directives); this.selectionSet = selectionSet; } @@ -59,7 +65,7 @@ protected Field(String name, * @param name of the field */ public Field(String name) { - this(name, null, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -69,7 +75,7 @@ public Field(String name) { * @param arguments to the field */ public Field(String name, List arguments) { - this(name, null, arguments, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, arguments, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -80,7 +86,7 @@ public Field(String name, List arguments) { * @param selectionSet of the field */ public Field(String name, List arguments, SelectionSet selectionSet) { - this(name, null, arguments, new ArrayList<>(), selectionSet, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, arguments, emptyList(), selectionSet, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -90,14 +96,14 @@ public Field(String name, List arguments, SelectionSet selectionSet) { * @param selectionSet of the field */ public Field(String name, SelectionSet selectionSet) { - this(name, null, new ArrayList<>(), new ArrayList<>(), selectionSet, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, emptyList(), emptyList(), selectionSet, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override public List getChildren() { List result = new ArrayList<>(); result.addAll(arguments); - result.addAll(directives); + result.addAll(directives.getDirectives()); if (selectionSet != null) { result.add(selectionSet); } @@ -108,7 +114,7 @@ public List getChildren() { public NodeChildrenContainer getNamedChildren() { return NodeChildrenContainer.newNodeChildrenContainer() .children(CHILD_ARGUMENTS, arguments) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .child(CHILD_SELECTION_SET, selectionSet) .build(); } @@ -131,13 +137,32 @@ public String getAlias() { return alias; } + public String getResultKey() { + return alias != null ? alias : name; + } + public List getArguments() { - return Collections.unmodifiableList(arguments); + return arguments; } @Override public List getDirectives() { - return Collections.unmodifiableList(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -157,7 +182,7 @@ public boolean isEqualTo(Node o) { Field that = (Field) o; - return NodeUtil.isEqualTo(this.name, that.name) && NodeUtil.isEqualTo(this.alias, that.alias); + return Objects.equals(this.name, that.name) && Objects.equals(this.alias, that.alias); } @Override @@ -165,7 +190,7 @@ public Field deepCopy() { return new Field(name, alias, deepCopy(arguments), - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(selectionSet), getSourceLocation(), getComments(), @@ -208,30 +233,30 @@ public Field transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private String alias; - private List arguments = new ArrayList<>(); - private List directives = new ArrayList<>(); + private ImmutableList arguments = emptyList(); + private ImmutableList directives = emptyList(); private SelectionSet selectionSet; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; - private Map additionalData = new LinkedHashMap<>(); + private ImmutableMap additionalData = emptyMap(); private Builder() { } private Builder(Field existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.alias = existing.getAlias(); - this.arguments = existing.getArguments(); - this.directives = existing.getDirectives(); + this.arguments = ImmutableList.copyOf(existing.getArguments()); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.selectionSet = existing.getSelectionSet(); this.ignoredChars = existing.getIgnoredChars(); - this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); + this.additionalData = copyOf(existing.getAdditionalData()); } @@ -241,7 +266,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -256,12 +281,18 @@ public Builder alias(String alias) { } public Builder arguments(List arguments) { - this.arguments = arguments; + this.arguments = ImmutableList.copyOf(arguments); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } @@ -276,12 +307,12 @@ public Builder ignoredChars(IgnoredChars ignoredChars) { } public Builder additionalData(Map additionalData) { - this.additionalData = assertNotNull(additionalData); + this.additionalData = ImmutableMap.copyOf(assertNotNull(additionalData)); return this; } public Builder additionalData(String key, String value) { - this.additionalData.put(key, value); + this.additionalData = addToMap(this.additionalData, key, value); return this; } diff --git a/src/main/java/graphql/language/FieldDefinition.java b/src/main/java/graphql/language/FieldDefinition.java index 3ba8d41f10..5fc03257aa 100644 --- a/src/main/java/graphql/language/FieldDefinition.java +++ b/src/main/java/graphql/language/FieldDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,18 +12,20 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class FieldDefinition extends AbstractDescribedNode implements DirectivesContainer, NamedNode { private final String name; private final Type type; - private final List inputValueDefinitions; - private final List directives; + private final ImmutableList inputValueDefinitions; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_TYPE = "type"; public static final String CHILD_INPUT_VALUE_DEFINITION = "inputValueDefinition"; @@ -40,13 +44,13 @@ protected FieldDefinition(String name, super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; this.type = type; - this.inputValueDefinitions = inputValueDefinitions; - this.directives = directives; + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); + this.directives = NodeUtil.DirectivesHolder.of(directives); } public FieldDefinition(String name, Type type) { - this(name, type, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, type, emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public Type getType() { @@ -59,12 +63,27 @@ public String getName() { } public List getInputValueDefinitions() { - return new ArrayList<>(inputValueDefinitions); + return inputValueDefinitions; } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -72,7 +91,7 @@ public List getChildren() { List result = new ArrayList<>(); result.add(type); result.addAll(inputValueDefinitions); - result.addAll(directives); + result.addAll(directives.getDirectives()); return result; } @@ -81,7 +100,7 @@ public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .child(CHILD_TYPE, type) .children(CHILD_INPUT_VALUE_DEFINITION, inputValueDefinitions) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -105,7 +124,7 @@ public boolean isEqualTo(Node o) { FieldDefinition that = (FieldDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -113,7 +132,7 @@ public FieldDefinition deepCopy() { return new FieldDefinition(name, deepCopy(type), deepCopy(inputValueDefinitions), - deepCopy(directives), + deepCopy(directives.getDirectives()), description, getSourceLocation(), getComments(), @@ -149,11 +168,11 @@ public FieldDefinition transform(Consumer builderConsumer) { public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; private String name; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private Type type; private Description description; - private List inputValueDefinitions = new ArrayList<>(); - private List directives = new ArrayList<>(); + private ImmutableList inputValueDefinitions = emptyList(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -163,11 +182,11 @@ private Builder() { private Builder(FieldDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.name = existing.getName(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.type = existing.getType(); this.description = existing.getDescription(); - this.inputValueDefinitions = existing.getInputValueDefinitions(); - this.directives = existing.getDirectives(); + this.inputValueDefinitions = ImmutableList.copyOf(existing.getInputValueDefinitions()); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -184,7 +203,7 @@ public Builder name(String name) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -199,22 +218,24 @@ public Builder description(Description description) { } public Builder inputValueDefinitions(List inputValueDefinitions) { - this.inputValueDefinitions = inputValueDefinitions; + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); return this; } - public Builder inputValueDefinition(InputValueDefinition inputValueDefinitions) { - this.inputValueDefinitions.add(inputValueDefinitions); + public Builder inputValueDefinition(InputValueDefinition inputValueDefinition) { + this.inputValueDefinitions = ImmutableKit.addToList(inputValueDefinitions, inputValueDefinition); return this; } + + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/FloatValue.java b/src/main/java/graphql/language/FloatValue.java index be140c0ac4..c27cbd444b 100644 --- a/src/main/java/graphql/language/FloatValue.java +++ b/src/main/java/graphql/language/FloatValue.java @@ -1,30 +1,36 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class FloatValue extends AbstractNode implements ScalarValue { private final BigDecimal value; @Internal - protected FloatValue(BigDecimal value, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected FloatValue(BigDecimal value, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.value = value; } @@ -35,7 +41,7 @@ protected FloatValue(BigDecimal value, SourceLocation sourceLocation, List(), IgnoredChars.EMPTY, emptyMap()); + this(value, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public BigDecimal getValue() { @@ -44,7 +50,7 @@ public BigDecimal getValue() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -66,7 +72,7 @@ public String toString() { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -76,7 +82,7 @@ public boolean isEqualTo(Node o) { FloatValue that = (FloatValue) o; - return !(value != null ? !value.equals(that.value) : that.value != null); + return Objects.equals(value, that.value); } @@ -96,6 +102,10 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitFloatValue(this, context); } + public static FloatValue of(double d) { + return newFloatValue().value(d).build(); + } + public static Builder newFloatValue() { return new Builder(); } @@ -104,10 +114,11 @@ public static Builder newFloatValue(BigDecimal value) { return new Builder().value(value); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; private BigDecimal value; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -116,7 +127,7 @@ private Builder() { private Builder(FloatValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.value = existing.getValue(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -132,8 +143,18 @@ public Builder value(BigDecimal value) { return this; } + public Builder value(double value) { + this.value = BigDecimal.valueOf(value); + return this; + } + + public Builder value(long value) { + this.value = BigDecimal.valueOf(value); + return this; + } + public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/FragmentDefinition.java b/src/main/java/graphql/language/FragmentDefinition.java index cdd0de640a..3913959607 100644 --- a/src/main/java/graphql/language/FragmentDefinition.java +++ b/src/main/java/graphql/language/FragmentDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,9 +12,11 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; /** @@ -23,7 +27,7 @@ public class FragmentDefinition extends AbstractNode impleme private final String name; private final TypeName typeCondition; - private final List directives; + private final NodeUtil.DirectivesHolder directives; private final SelectionSet selectionSet; public static final String CHILD_TYPE_CONDITION = "typeCondition"; @@ -42,7 +46,7 @@ protected FragmentDefinition(String name, super(sourceLocation, comments, ignoredChars, additionalData); this.name = name; this.typeCondition = typeCondition; - this.directives = directives; + this.directives = NodeUtil.DirectivesHolder.of(directives); this.selectionSet = selectionSet; } @@ -58,9 +62,23 @@ public TypeName getTypeCondition() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); } + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); + } @Override public SelectionSet getSelectionSet() { @@ -71,7 +89,7 @@ public SelectionSet getSelectionSet() { public List getChildren() { List result = new ArrayList<>(); result.add(typeCondition); - result.addAll(directives); + result.addAll(directives.getDirectives()); result.add(selectionSet); return result; } @@ -80,7 +98,7 @@ public List getChildren() { public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .child(CHILD_TYPE_CONDITION, typeCondition) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .child(CHILD_SELECTION_SET, selectionSet) .build(); } @@ -105,14 +123,14 @@ public boolean isEqualTo(Node o) { FragmentDefinition that = (FragmentDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public FragmentDefinition deepCopy() { return new FragmentDefinition(name, deepCopy(typeCondition), - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(selectionSet), getSourceLocation(), getComments(), @@ -145,12 +163,13 @@ public FragmentDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); + private String name; private TypeName typeCondition; - private List directives = new ArrayList<>(); + private ImmutableList directives = emptyList(); private SelectionSet selectionSet; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -160,10 +179,10 @@ private Builder() { private Builder(FragmentDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.typeCondition = existing.getTypeCondition(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.selectionSet = existing.getSelectionSet(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -176,7 +195,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -190,8 +209,14 @@ public Builder typeCondition(TypeName typeCondition) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/FragmentSpread.java b/src/main/java/graphql/language/FragmentSpread.java index dd091c8af1..36575b36ed 100644 --- a/src/main/java/graphql/language/FragmentSpread.java +++ b/src/main/java/graphql/language/FragmentSpread.java @@ -1,26 +1,29 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class FragmentSpread extends AbstractNode implements Selection, DirectivesContainer, NamedNode { private final String name; - private final List directives; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_DIRECTIVES = "directives"; @@ -28,7 +31,7 @@ public class FragmentSpread extends AbstractNode implements Sele protected FragmentSpread(String name, List directives, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.name = name; - this.directives = new ArrayList<>(directives); + this.directives = NodeUtil.DirectivesHolder.of(directives); } /** @@ -37,7 +40,7 @@ protected FragmentSpread(String name, List directives, SourceLocation * @param name of the fragment */ public FragmentSpread(String name) { - this(name, new ArrayList<>(), null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override @@ -47,7 +50,22 @@ public String getName() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -61,21 +79,19 @@ public boolean isEqualTo(Node o) { FragmentSpread that = (FragmentSpread) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public List getChildren() { - List result = new ArrayList<>(); - result.addAll(directives); - return result; + return ImmutableList.copyOf(directives.getDirectives()); } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -88,7 +104,7 @@ public FragmentSpread withNewChildren(NodeChildrenContainer newChildren) { @Override public FragmentSpread deepCopy() { - return new FragmentSpread(name, deepCopy(directives), getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); + return new FragmentSpread(name, deepCopy(directives.getDirectives()), getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); } @Override @@ -119,11 +135,11 @@ public FragmentSpread transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; - private List directives = new ArrayList<>(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -132,9 +148,9 @@ private Builder() { private Builder(FragmentSpread existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -145,7 +161,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -154,11 +170,18 @@ public Builder name(String name) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); + return this; + } + + public Builder ignoredChars(IgnoredChars ignoredChars) { this.ignoredChars = ignoredChars; return this; @@ -174,7 +197,6 @@ public Builder additionalData(String key, String value) { return this; } - public FragmentSpread build() { return new FragmentSpread(name, directives, sourceLocation, comments, ignoredChars, additionalData); } diff --git a/src/main/java/graphql/language/IgnoredChar.java b/src/main/java/graphql/language/IgnoredChar.java index e944038534..eaa1689d0c 100644 --- a/src/main/java/graphql/language/IgnoredChar.java +++ b/src/main/java/graphql/language/IgnoredChar.java @@ -5,6 +5,12 @@ import java.io.Serializable; import java.util.Objects; +/** + * Graphql syntax has a series of characters, such as spaces, new lines and commas that are not considered relevant + * to the syntax. However they can be captured and associated with the AST elements they belong to. + * + * This costs more memory but for certain use cases (like editors) this maybe be useful + */ @PublicApi public class IgnoredChar implements Serializable { @@ -60,6 +66,10 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(value, kind, sourceLocation); + int result = 1; + result = 31 * result + Objects.hashCode(value); + result = 31 * result + Objects.hashCode(kind); + result = 31 * result + Objects.hashCode(sourceLocation); + return result; } } diff --git a/src/main/java/graphql/language/IgnoredChars.java b/src/main/java/graphql/language/IgnoredChars.java index f7def13636..ce3a1ad59c 100644 --- a/src/main/java/graphql/language/IgnoredChars.java +++ b/src/main/java/graphql/language/IgnoredChars.java @@ -1,31 +1,37 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; +/** + * Graphql syntax has a series of characters, such as spaces, new lines and commas that are not considered relevant + * to the syntax. However they can be captured and associated with the AST elements they belong to. + * + * This costs more memory but for certain use cases (like editors) this maybe be useful + */ @PublicApi public class IgnoredChars implements Serializable { - private final List left; - private final List right; + private final ImmutableList left; + private final ImmutableList right; - public static final IgnoredChars EMPTY = new IgnoredChars(Collections.emptyList(), Collections.emptyList()); + public static final IgnoredChars EMPTY = new IgnoredChars(ImmutableKit.emptyList(), ImmutableKit.emptyList()); public IgnoredChars(List left, List right) { - this.left = new ArrayList<>(left); - this.right = new ArrayList<>(right); + this.left = ImmutableList.copyOf(left); + this.right = ImmutableList.copyOf(right); } public List getLeft() { - return new ArrayList<>(left); + return left; } public List getRight() { - return new ArrayList<>(right); + return right; } } diff --git a/src/main/java/graphql/language/ImplementingTypeDefinition.java b/src/main/java/graphql/language/ImplementingTypeDefinition.java new file mode 100644 index 0000000000..31effe0d11 --- /dev/null +++ b/src/main/java/graphql/language/ImplementingTypeDefinition.java @@ -0,0 +1,19 @@ +package graphql.language; + + +import graphql.PublicApi; + +import java.util.List; + +/** + * A {@link TypeDefinition} that might implement interfaces + * + * @param for two + */ +@PublicApi +public interface ImplementingTypeDefinition extends TypeDefinition { + + List getImplements(); + + List getFieldDefinitions(); +} diff --git a/src/main/java/graphql/language/InlineFragment.java b/src/main/java/graphql/language/InlineFragment.java index 5e9894c83e..b065a5b8df 100644 --- a/src/main/java/graphql/language/InlineFragment.java +++ b/src/main/java/graphql/language/InlineFragment.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -13,14 +15,14 @@ import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static graphql.language.NodeUtil.directivesByName; -import static java.util.Collections.emptyMap; @PublicApi public class InlineFragment extends AbstractNode implements Selection, SelectionSetContainer, DirectivesContainer { private final TypeName typeCondition; - private final List directives; + private final NodeUtil.DirectivesHolder directives; private final SelectionSet selectionSet; public static final String CHILD_TYPE_CONDITION = "typeCondition"; @@ -37,7 +39,7 @@ protected InlineFragment(TypeName typeCondition, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.typeCondition = typeCondition; - this.directives = directives; + this.directives = NodeUtil.DirectivesHolder.of(directives); this.selectionSet = selectionSet; } @@ -47,7 +49,7 @@ protected InlineFragment(TypeName typeCondition, * @param typeCondition the type condition of the inline fragment */ public InlineFragment(TypeName typeCondition) { - this(typeCondition, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(typeCondition, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -57,23 +59,31 @@ public InlineFragment(TypeName typeCondition) { * @param selectionSet of the inline fragment */ public InlineFragment(TypeName typeCondition, SelectionSet selectionSet) { - this(typeCondition, new ArrayList<>(), selectionSet, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(typeCondition, emptyList(), selectionSet, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public TypeName getTypeCondition() { return typeCondition; } + @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); } - public Map getDirectivesByName() { - return directivesByName(directives); + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); } - public Directive getDirective(String directiveName) { - return getDirectivesByName().get(directiveName); + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -87,7 +97,7 @@ public List getChildren() { if (typeCondition != null) { result.add(typeCondition); } - result.addAll(directives); + result.addAll(directives.getDirectives()); result.add(selectionSet); return result; } @@ -96,7 +106,7 @@ public List getChildren() { public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .child(CHILD_TYPE_CONDITION, typeCondition) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .child(CHILD_SELECTION_SET, selectionSet) .build(); } @@ -115,18 +125,14 @@ public boolean isEqualTo(Node o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { - return false; - } - - return true; + return o != null && getClass() == o.getClass(); } @Override public InlineFragment deepCopy() { return new InlineFragment( deepCopy(typeCondition), - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(selectionSet), getSourceLocation(), getComments(), @@ -158,11 +164,11 @@ public InlineFragment transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private TypeName typeCondition; - private List directives = new ArrayList<>(); + private ImmutableList directives = emptyList(); private SelectionSet selectionSet; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -173,9 +179,9 @@ private Builder() { private Builder(InlineFragment existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.typeCondition = existing.getTypeCondition(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.selectionSet = existing.getSelectionSet(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -188,7 +194,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -197,11 +203,18 @@ public Builder typeCondition(TypeName typeCondition) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } + public Builder selectionSet(SelectionSet selectionSet) { this.selectionSet = selectionSet; return this; diff --git a/src/main/java/graphql/language/InputObjectTypeDefinition.java b/src/main/java/graphql/language/InputObjectTypeDefinition.java index b815e24f80..d545814091 100644 --- a/src/main/java/graphql/language/InputObjectTypeDefinition.java +++ b/src/main/java/graphql/language/InputObjectTypeDefinition.java @@ -1,26 +1,29 @@ package graphql.language; - +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; @PublicApi public class InputObjectTypeDefinition extends AbstractDescribedNode implements TypeDefinition, DirectivesContainer, NamedNode { private final String name; - private final List directives; - private final List inputValueDefinitions; + private final NodeUtil.DirectivesHolder directives; + private final ImmutableList inputValueDefinitions; public static final String CHILD_DIRECTIVES = "directives"; public static final String CHILD_INPUT_VALUES_DEFINITIONS = "inputValueDefinitions"; @@ -36,17 +39,32 @@ protected InputObjectTypeDefinition(String name, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.directives = directives; - this.inputValueDefinitions = inputValueDefinitions; + this.directives = NodeUtil.DirectivesHolder.of(directives); + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } public List getInputValueDefinitions() { - return new ArrayList<>(inputValueDefinitions); + return inputValueDefinitions; } @Override @@ -56,16 +74,13 @@ public String getName() { @Override public List getChildren() { - List result = new ArrayList<>(); - result.addAll(directives); - result.addAll(inputValueDefinitions); - return result; + return FpKit.concat(directives.getDirectives(), inputValueDefinitions); } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .children(CHILD_INPUT_VALUES_DEFINITIONS, inputValueDefinitions) .build(); } @@ -89,13 +104,13 @@ public boolean isEqualTo(Node o) { InputObjectTypeDefinition that = (InputObjectTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public InputObjectTypeDefinition deepCopy() { return new InputObjectTypeDefinition(name, - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(inputValueDefinitions), description, getSourceLocation(), @@ -129,13 +144,13 @@ public InputObjectTypeDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives = new ArrayList<>(); - private List inputValueDefinitions = new ArrayList<>(); + private ImmutableList directives = emptyList(); + private ImmutableList inputValueDefinitions = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -144,11 +159,11 @@ private Builder() { private Builder(InputObjectTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.inputValueDefinitions = existing.getInputValueDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.inputValueDefinitions = ImmutableList.copyOf(existing.getInputValueDefinitions()); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -159,7 +174,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -173,23 +188,24 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder inputValueDefinitions(List inputValueDefinitions) { - this.inputValueDefinitions = inputValueDefinitions; + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); return this; } public Builder inputValueDefinition(InputValueDefinition inputValueDefinition) { - this.inputValueDefinitions.add(inputValueDefinition); + this.inputValueDefinitions = ImmutableKit.addToList(inputValueDefinitions, inputValueDefinition); return this; } diff --git a/src/main/java/graphql/language/InputObjectTypeExtensionDefinition.java b/src/main/java/graphql/language/InputObjectTypeExtensionDefinition.java index 500177a15a..0835c0eb44 100644 --- a/src/main/java/graphql/language/InputObjectTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/InputObjectTypeExtensionDefinition.java @@ -1,18 +1,20 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class InputObjectTypeExtensionDefinition extends InputObjectTypeDefinition { +public class InputObjectTypeExtensionDefinition extends InputObjectTypeDefinition implements SDLExtensionDefinition { @Internal protected InputObjectTypeExtensionDefinition(String name, @@ -51,6 +53,13 @@ public static Builder newInputObjectTypeExtensionDefinition() { return new Builder(); } + @Override + public InputObjectTypeExtensionDefinition withNewChildren(NodeChildrenContainer newChildren) { + return transformExtension(builder -> builder + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) + .inputValueDefinitions(newChildren.getChildren(CHILD_INPUT_VALUES_DEFINITIONS)) + ); + } public InputObjectTypeExtensionDefinition transformExtension(Consumer builderConsumer) { Builder builder = new Builder(this); @@ -58,13 +67,13 @@ public InputObjectTypeExtensionDefinition transformExtension(Consumer b return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives = new ArrayList<>(); - private List inputValueDefinitions = new ArrayList<>(); + private ImmutableList directives = emptyList(); + private ImmutableList inputValueDefinitions = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -73,11 +82,11 @@ private Builder() { private Builder(InputObjectTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.inputValueDefinitions = existing.getInputValueDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.inputValueDefinitions = ImmutableList.copyOf(existing.getInputValueDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -89,7 +98,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -103,13 +112,25 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } + public Builder inputValueDefinitions(List inputValueDefinitions) { - this.inputValueDefinitions = inputValueDefinitions; + this.inputValueDefinitions = ImmutableList.copyOf(inputValueDefinitions); + return this; + } + + public Builder inputValueDefinition(InputValueDefinition inputValueDefinition) { + this.inputValueDefinitions = ImmutableKit.addToList(inputValueDefinitions, inputValueDefinition); return this; } diff --git a/src/main/java/graphql/language/InputValueDefinition.java b/src/main/java/graphql/language/InputValueDefinition.java index 38fdaef684..c0db3318fa 100644 --- a/src/main/java/graphql/language/InputValueDefinition.java +++ b/src/main/java/graphql/language/InputValueDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,18 +12,20 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi -public class InputValueDefinition extends AbstractDescribedNode implements DirectivesContainer, NamedNode{ +public class InputValueDefinition extends AbstractDescribedNode implements DirectivesContainer, NamedNode { private final String name; private final Type type; private final Value defaultValue; - private final List directives; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_TYPE = "type"; public static final String CHILD_DEFAULT_VALUE = "defaultValue"; @@ -41,7 +45,7 @@ protected InputValueDefinition(String name, this.name = name; this.type = type; this.defaultValue = defaultValue; - this.directives = directives; + this.directives = NodeUtil.DirectivesHolder.of(directives); } /** @@ -52,7 +56,7 @@ protected InputValueDefinition(String name, */ public InputValueDefinition(String name, Type type) { - this(name, type, null, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, type, null, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @@ -67,7 +71,7 @@ public InputValueDefinition(String name, public InputValueDefinition(String name, Type type, Value defaultValue) { - this(name, type, defaultValue, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, type, defaultValue, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @@ -84,8 +88,24 @@ public Value getDefaultValue() { return defaultValue; } + @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -95,7 +115,7 @@ public List getChildren() { if (defaultValue != null) { result.add(defaultValue); } - result.addAll(directives); + result.addAll(directives.getDirectives()); return result; } @@ -104,7 +124,7 @@ public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .child(CHILD_TYPE, type) .child(CHILD_DEFAULT_VALUE, defaultValue) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -129,7 +149,7 @@ public boolean isEqualTo(Node o) { InputValueDefinition that = (InputValueDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -137,7 +157,7 @@ public InputValueDefinition deepCopy() { return new InputValueDefinition(name, deepCopy(type), deepCopy(defaultValue), - deepCopy(directives), + deepCopy(directives.getDirectives()), description, getSourceLocation(), getComments(), @@ -170,14 +190,14 @@ public InputValueDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Type type; private Value defaultValue; private Description description; - private List directives = new ArrayList<>(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -186,12 +206,12 @@ private Builder() { private Builder(InputValueDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.type = existing.getType(); this.defaultValue = existing.getDefaultValue(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -202,7 +222,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -226,13 +246,14 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/IntValue.java b/src/main/java/graphql/language/IntValue.java index b76833eaa2..5a197646d9 100644 --- a/src/main/java/graphql/language/IntValue.java +++ b/src/main/java/graphql/language/IntValue.java @@ -1,30 +1,36 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; import java.math.BigInteger; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class IntValue extends AbstractNode implements ScalarValue { private final BigInteger value; @Internal - protected IntValue(BigInteger value, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected IntValue(BigInteger value, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.value = value; } @@ -35,7 +41,7 @@ protected IntValue(BigInteger value, SourceLocation sourceLocation, List(), IgnoredChars.EMPTY, emptyMap()); + this(value, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public BigInteger getValue() { @@ -44,7 +50,7 @@ public BigInteger getValue() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -59,7 +65,7 @@ public IntValue withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -69,8 +75,7 @@ public boolean isEqualTo(Node o) { IntValue that = (IntValue) o; - return !(value != null ? !value.equals(that.value) : that.value != null); - + return Objects.equals(value, that.value); } @Override @@ -90,6 +95,10 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitIntValue(this, context); } + public static IntValue of(int i) { + return newIntValue().value(i).build(); + } + public static Builder newIntValue() { return new Builder(); } @@ -104,10 +113,11 @@ public IntValue transform(Consumer builderConsumer) { return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; private BigInteger value; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -116,7 +126,7 @@ private Builder() { private Builder(IntValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.value = existing.getValue(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -131,8 +141,13 @@ public Builder value(BigInteger value) { return this; } + public Builder value(int value) { + this.value = BigInteger.valueOf(value); + return this; + } + public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/InterfaceTypeDefinition.java b/src/main/java/graphql/language/InterfaceTypeDefinition.java index 124a6b4732..3fd1343f89 100644 --- a/src/main/java/graphql/language/InterfaceTypeDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,24 +12,29 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi -public class InterfaceTypeDefinition extends AbstractDescribedNode implements TypeDefinition, DirectivesContainer, NamedNode { +public class InterfaceTypeDefinition extends AbstractDescribedNode implements ImplementingTypeDefinition, DirectivesContainer, NamedNode { private final String name; - private final List definitions; - private final List directives; + private final ImmutableList implementz; + private final ImmutableList definitions; + private final NodeUtil.DirectivesHolder directives; + public static final String CHILD_IMPLEMENTZ = "implementz"; public static final String CHILD_DEFINITIONS = "definitions"; public static final String CHILD_DIRECTIVES = "directives"; @Internal protected InterfaceTypeDefinition(String name, + List implementz, List definitions, List directives, Description description, @@ -37,8 +44,9 @@ protected InterfaceTypeDefinition(String name, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.definitions = definitions; - this.directives = directives; + this.implementz = ImmutableList.copyOf(implementz); + this.definitions = ImmutableList.copyOf(definitions); + this.directives = NodeUtil.DirectivesHolder.of(directives); } /** @@ -47,16 +55,37 @@ protected InterfaceTypeDefinition(String name, * @param name of the interface */ public InterfaceTypeDefinition(String name) { - this(name, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } + @Override + public List getImplements() { + return implementz; + } + + @Override public List getFieldDefinitions() { - return new ArrayList<>(definitions); + return definitions; } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -67,22 +96,25 @@ public String getName() { @Override public List getChildren() { List result = new ArrayList<>(); + result.addAll(implementz); result.addAll(definitions); - result.addAll(directives); + result.addAll(directives.getDirectives()); return result; } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() + .children(CHILD_IMPLEMENTZ, implementz) .children(CHILD_DEFINITIONS, definitions) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @Override public InterfaceTypeDefinition withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder + .implementz(newChildren.getChildren(CHILD_IMPLEMENTZ)) .definitions(newChildren.getChildren(CHILD_DEFINITIONS)) .directives(newChildren.getChildren(CHILD_DIRECTIVES)) ); @@ -99,14 +131,15 @@ public boolean isEqualTo(Node o) { InterfaceTypeDefinition that = (InterfaceTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public InterfaceTypeDefinition deepCopy() { return new InterfaceTypeDefinition(name, + deepCopy(implementz), deepCopy(definitions), - deepCopy(directives), + deepCopy(directives.getDirectives()), description, getSourceLocation(), getComments(), @@ -118,6 +151,7 @@ public InterfaceTypeDefinition deepCopy() { public String toString() { return "InterfaceTypeDefinition{" + "name='" + name + '\'' + + ", implements=" + implementz + ", fieldDefinitions=" + definitions + ", directives=" + directives + '}'; @@ -139,13 +173,14 @@ public InterfaceTypeDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List definitions = new ArrayList<>(); - private List directives = new ArrayList<>(); + private ImmutableList implementz = emptyList(); + private ImmutableList definitions = emptyList(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -155,13 +190,14 @@ private Builder() { private Builder(InterfaceTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.definitions = existing.getFieldDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.definitions = ImmutableList.copyOf(existing.getFieldDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); + this.implementz = ImmutableList.copyOf(existing.getImplements()); } @@ -171,7 +207,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -185,23 +221,35 @@ public Builder description(Description description) { return this; } + public Builder implementz(List implementz) { + this.implementz = ImmutableList.copyOf(implementz); + return this; + } + + public Builder implementz(Type implement) { + this.implementz = ImmutableKit.addToList(implementz, implement); + return this; + } + + public Builder definitions(List definitions) { - this.definitions = definitions; + this.definitions = ImmutableList.copyOf(definitions); return this; } public Builder definition(FieldDefinition definition) { - this.definitions.add(definition); + this.definitions = ImmutableKit.addToList(definitions, definition); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } @@ -223,6 +271,7 @@ public Builder additionalData(String key, String value) { public InterfaceTypeDefinition build() { return new InterfaceTypeDefinition(name, + implementz, definitions, directives, description, diff --git a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java index 9b32e46175..2de917065b 100644 --- a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java @@ -1,21 +1,24 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class InterfaceTypeExtensionDefinition extends InterfaceTypeDefinition { +public class InterfaceTypeExtensionDefinition extends InterfaceTypeDefinition implements SDLExtensionDefinition { @Internal protected InterfaceTypeExtensionDefinition(String name, + List implementz, List definitions, List directives, Description description, @@ -23,12 +26,13 @@ protected InterfaceTypeExtensionDefinition(String name, List comments, IgnoredChars ignoredChars, Map additionalData) { - super(name, definitions, directives, description, sourceLocation, comments, ignoredChars, additionalData); + super(name, implementz, definitions, directives, description, sourceLocation, comments, ignoredChars, additionalData); } @Override public InterfaceTypeExtensionDefinition deepCopy() { return new InterfaceTypeExtensionDefinition(getName(), + getImplements(), deepCopy(getFieldDefinitions()), deepCopy(getDirectives()), getDescription(), @@ -52,19 +56,28 @@ public static Builder newInterfaceTypeExtensionDefinition() { return new Builder(); } + @Override + public InterfaceTypeExtensionDefinition withNewChildren(NodeChildrenContainer newChildren) { + return transformExtension(builder -> builder + .definitions(newChildren.getChildren(CHILD_DEFINITIONS)) + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) + ); + } + public InterfaceTypeExtensionDefinition transformExtension(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List definitions = new ArrayList<>(); - private List directives = new ArrayList<>(); + private ImmutableList implementz = emptyList(); + private ImmutableList definitions = emptyList(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -73,11 +86,12 @@ private Builder() { private Builder(InterfaceTypeExtensionDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.definitions = existing.getFieldDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.implementz = ImmutableList.copyOf(existing.getImplements()); + this.definitions = ImmutableList.copyOf(existing.getFieldDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -88,7 +102,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -102,13 +116,34 @@ public Builder description(Description description) { return this; } + public Builder implementz(List implementz) { + this.implementz = ImmutableList.copyOf(implementz); + return this; + } + + public Builder implementz(Type implementz) { + this.implementz = ImmutableKit.addToList(this.implementz, implementz); + return this; + } + public Builder definitions(List definitions) { - this.definitions = definitions; + this.definitions = ImmutableList.copyOf(definitions); + return this; + } + + public Builder definition(FieldDefinition definition) { + this.definitions = ImmutableKit.addToList(definitions, definition); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } @@ -130,6 +165,7 @@ public Builder additionalData(String key, String value) { public InterfaceTypeExtensionDefinition build() { return new InterfaceTypeExtensionDefinition(name, + implementz, definitions, directives, description, diff --git a/src/main/java/graphql/language/ListType.java b/src/main/java/graphql/language/ListType.java index 313dca7d29..f193179bb6 100644 --- a/src/main/java/graphql/language/ListType.java +++ b/src/main/java/graphql/language/ListType.java @@ -1,20 +1,21 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class ListType extends AbstractNode implements Type { @@ -35,7 +36,7 @@ protected ListType(Type type, SourceLocation sourceLocation, List comme * @param type the wrapped type */ public ListType(Type type) { - this(type, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(type, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public Type getType() { @@ -44,9 +45,7 @@ public Type getType() { @Override public List getChildren() { - List result = new ArrayList<>(); - result.add(type); - return result; + return ImmutableList.of(type); } @Override @@ -109,7 +108,7 @@ public ListType transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private Type type; private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -118,7 +117,7 @@ private Builder() { private Builder(ListType existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.type = existing.getType(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -136,7 +135,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/Node.java b/src/main/java/graphql/language/Node.java index b1c662dfcd..962934d76b 100644 --- a/src/main/java/graphql/language/Node.java +++ b/src/main/java/graphql/language/Node.java @@ -4,6 +4,7 @@ import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.Nullable; import java.io.Serializable; import java.util.List; @@ -47,6 +48,7 @@ public interface Node extends Serializable { /** * @return the source location where this node occurs */ + @Nullable SourceLocation getSourceLocation(); /** @@ -82,7 +84,7 @@ public interface Node extends Serializable { * * @return isEqualTo */ - boolean isEqualTo(Node node); + boolean isEqualTo(@Nullable Node node); /** * @return a deep copy of this node diff --git a/src/main/java/graphql/language/NodeBuilder.java b/src/main/java/graphql/language/NodeBuilder.java index 878358d874..88aaf63c82 100644 --- a/src/main/java/graphql/language/NodeBuilder.java +++ b/src/main/java/graphql/language/NodeBuilder.java @@ -1,13 +1,13 @@ package graphql.language; import graphql.PublicApi; +import org.jspecify.annotations.NullUnmarked; import java.util.List; import java.util.Map; -import static graphql.Assert.assertNotNull; - @PublicApi +@NullUnmarked public interface NodeBuilder { NodeBuilder sourceLocation(SourceLocation sourceLocation); diff --git a/src/main/java/graphql/language/NodeChildrenContainer.java b/src/main/java/graphql/language/NodeChildrenContainer.java index a747de8477..d2e1b06fea 100644 --- a/src/main/java/graphql/language/NodeChildrenContainer.java +++ b/src/main/java/graphql/language/NodeChildrenContainer.java @@ -9,6 +9,7 @@ import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; /** * Container of children of a {@link Node}. @@ -23,11 +24,11 @@ private NodeChildrenContainer(Map> children) { } public List getChildren(String key) { - return (List) children.getOrDefault(key, new ArrayList<>()); + return (List) children.getOrDefault(key, emptyList()); } public T getChildOrNull(String key) { - List result = children.getOrDefault(key, new ArrayList<>()); + List result = children.getOrDefault(key, emptyList()); if (result.size() > 1) { throw new IllegalStateException("children " + key + " is not a single value"); } diff --git a/src/main/java/graphql/language/NodeDirectivesBuilder.java b/src/main/java/graphql/language/NodeDirectivesBuilder.java index ebbd5b8d08..3694165fab 100644 --- a/src/main/java/graphql/language/NodeDirectivesBuilder.java +++ b/src/main/java/graphql/language/NodeDirectivesBuilder.java @@ -9,4 +9,5 @@ public interface NodeDirectivesBuilder extends NodeBuilder { NodeDirectivesBuilder directives(List directives); + NodeDirectivesBuilder directive(Directive directive); } diff --git a/src/main/java/graphql/language/NodeParentTree.java b/src/main/java/graphql/language/NodeParentTree.java index 7babc976a1..91907e6ef0 100644 --- a/src/main/java/graphql/language/NodeParentTree.java +++ b/src/main/java/graphql/language/NodeParentTree.java @@ -1,14 +1,15 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertTrue; @@ -24,7 +25,7 @@ public class NodeParentTree { private final T node; private final NodeParentTree parent; - private final List path; + private final ImmutableList path; @Internal public NodeParentTree(Deque nodeStack) { @@ -35,17 +36,16 @@ public NodeParentTree(Deque nodeStack) { path = mkPath(copy); node = copy.pop(); if (!copy.isEmpty()) { - parent = new NodeParentTree(copy); + parent = new NodeParentTree<>(copy); } else { parent = null; } } - private List mkPath(Deque copy) { - return copy.stream() - .filter(node1 -> node1 instanceof NamedNode) - .map(node1 -> ((NamedNode) node1).getName()) - .collect(Collectors.toList()); + private ImmutableList mkPath(Deque copy) { + return ImmutableKit.filterAndMap(copy, + node1 -> node1 instanceof NamedNode, + node1 -> ((NamedNode) node1).getName()); } @@ -88,8 +88,6 @@ public List toList() { @Override public String toString() { - return String.valueOf(node) + - " - parent : " + - parent; + return node + " - parent : " + parent; } } \ No newline at end of file diff --git a/src/main/java/graphql/language/NodeTraverser.java b/src/main/java/graphql/language/NodeTraverser.java index a9e25f1083..916c290f95 100644 --- a/src/main/java/graphql/language/NodeTraverser.java +++ b/src/main/java/graphql/language/NodeTraverser.java @@ -1,6 +1,7 @@ package graphql.language; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.DefaultTraverserContext; import graphql.util.TraversalControl; import graphql.util.Traverser; @@ -29,7 +30,7 @@ public NodeTraverser(Map, Object> rootVars, Function> T findNodeByName(List namedNodes, String name) { + for (T namedNode : namedNodes) { + if (Objects.equals(namedNode.getName(), name)) { + return namedNode; } - } else if (!thisStr.equals(thatStr)) { - return false; } - return true; + return null; } - - public static Map directivesByName(List directives) { - return FpKit.getByName(directives, Directive::getName, mergeFirst()); + public static Map> allDirectivesByName(List directives) { + return FpKit.groupingBy(directives, Directive::getName); } - public static Map argumentsByName(List arguments) { - return FpKit.getByName(arguments, Argument::getName, mergeFirst()); + public static > Map nodeByName(List nameNode) { + return FpKit.getByName(nameNode, NamedNode::getName, mergeFirst()); } @@ -101,4 +103,40 @@ public static Node removeChild(Node node, NodeLocation childLocationToRemove) { NodeChildrenContainer newChildren = namedChildren.transform(builder -> builder.removeChild(childLocationToRemove.getName(), childLocationToRemove.getIndex())); return node.withNewChildren(newChildren); } + + + /** + * A simple directives holder that makes it easier for {@link DirectivesContainer} classes + * to have their methods AND be efficient via immutable structures + */ + @Internal + static class DirectivesHolder implements Serializable { + private final ImmutableList directives; + private final ImmutableMap> directivesByName; + + static DirectivesHolder of(List directives) { + return new DirectivesHolder(directives); + } + + DirectivesHolder(List directives) { + this.directives = ImmutableList.copyOf(directives); + directivesByName = ImmutableMap.copyOf(allDirectivesByName(directives)); + } + + ImmutableList getDirectives() { + return directives; + } + + ImmutableMap> getDirectivesByName() { + return directivesByName; + } + + ImmutableList getDirectives(String directiveName) { + return ImmutableList.copyOf(requireNonNull(directivesByName.getOrDefault(directiveName, ImmutableList.of()))); + } + + boolean hasDirective(String directiveName) { + return directivesByName.containsKey(directiveName); + } + } } diff --git a/src/main/java/graphql/language/NonNullType.java b/src/main/java/graphql/language/NonNullType.java index a4e4a515f2..e86e39c244 100644 --- a/src/main/java/graphql/language/NonNullType.java +++ b/src/main/java/graphql/language/NonNullType.java @@ -1,20 +1,21 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class NonNullType extends AbstractNode implements Type { @@ -35,7 +36,7 @@ protected NonNullType(Type type, SourceLocation sourceLocation, List co * @param type the wrapped type */ public NonNullType(Type type) { - this(type, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(type, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public Type getType() { @@ -44,9 +45,7 @@ public Type getType() { @Override public List getChildren() { - List result = new ArrayList<>(); - result.add(type); - return result; + return ImmutableList.of(type); } @Override @@ -110,7 +109,7 @@ public NonNullType transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; private Type type; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -119,7 +118,7 @@ private Builder() { private Builder(NonNullType existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.type = existing.getType(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -150,7 +149,7 @@ public Builder type(Type type) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/NullValue.java b/src/main/java/graphql/language/NullValue.java index 6ca625574d..9e053acae2 100644 --- a/src/main/java/graphql/language/NullValue.java +++ b/src/main/java/graphql/language/NullValue.java @@ -1,34 +1,42 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class NullValue extends AbstractNode implements Value { @Internal - protected NullValue(SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected NullValue(@Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); } + public static NullValue of() { + return NullValue.newNullValue().build(); + } + @Override public List getChildren() { - return Collections.emptyList(); + return ImmutableKit.emptyList(); } @Override @@ -43,7 +51,7 @@ public NullValue withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -82,15 +90,16 @@ public NullValue transform(Consumer builderConsumer) { return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); private Builder(NullValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -104,7 +113,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/ObjectField.java b/src/main/java/graphql/language/ObjectField.java index b169b54f8a..8c4532a41c 100644 --- a/src/main/java/graphql/language/ObjectField.java +++ b/src/main/java/graphql/language/ObjectField.java @@ -1,20 +1,22 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class ObjectField extends AbstractNode implements NamedNode { @@ -27,8 +29,8 @@ public class ObjectField extends AbstractNode implements NamedNode< @Internal protected ObjectField(String name, Value value, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); - this.name = name; - this.value = value; + this.name = assertNotNull(name); + this.value = assertNotNull(value); } /** @@ -38,7 +40,7 @@ protected ObjectField(String name, Value value, SourceLocation sourceLocation, L * @param value of the field */ public ObjectField(String name, Value value) { - this(name, value, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, value, null, emptyList(), IgnoredChars.EMPTY, ImmutableKit.emptyMap()); } @Override @@ -52,9 +54,7 @@ public Value getValue() { @Override public List getChildren() { - List result = new ArrayList<>(); - result.add(value); - return result; + return ImmutableList.of(value); } @Override @@ -82,7 +82,7 @@ public boolean isEqualTo(Node o) { ObjectField that = (ObjectField) o; - return !(name != null ? !name.equals(that.name) : that.name != null); + return Objects.equals(name, that.name); } @@ -117,7 +117,7 @@ public ObjectField transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; private String name; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private Value value; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -128,7 +128,7 @@ private Builder() { private Builder(ObjectField existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.value = existing.getValue(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -146,7 +146,7 @@ public Builder name(String name) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/ObjectTypeDefinition.java b/src/main/java/graphql/language/ObjectTypeDefinition.java index 6c1ef5df85..fca017594e 100644 --- a/src/main/java/graphql/language/ObjectTypeDefinition.java +++ b/src/main/java/graphql/language/ObjectTypeDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,18 +12,20 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi -public class ObjectTypeDefinition extends AbstractDescribedNode implements TypeDefinition, DirectivesContainer, NamedNode { +public class ObjectTypeDefinition extends AbstractDescribedNode implements ImplementingTypeDefinition, DirectivesContainer, NamedNode { private final String name; - private final List implementz; - private final List directives; - private final List fieldDefinitions; + private final ImmutableList implementz; + private final NodeUtil.DirectivesHolder directives; + private final ImmutableList fieldDefinitions; public static final String CHILD_IMPLEMENTZ = "implementz"; public static final String CHILD_DIRECTIVES = "directives"; @@ -39,9 +43,9 @@ protected ObjectTypeDefinition(String name, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.implementz = implementz; - this.directives = directives; - this.fieldDefinitions = fieldDefinitions; + this.implementz = ImmutableList.copyOf(implementz); + this.directives = NodeUtil.DirectivesHolder.of(directives); + this.fieldDefinitions = ImmutableList.copyOf(fieldDefinitions); } /** @@ -50,20 +54,36 @@ protected ObjectTypeDefinition(String name, * @param name of the object type */ public ObjectTypeDefinition(String name) { - this(name, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } + @Override public List getImplements() { - return new ArrayList<>(implementz); + return implementz; } - @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); } + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); + } + + @Override public List getFieldDefinitions() { - return new ArrayList<>(fieldDefinitions); + return fieldDefinitions; } @Override @@ -75,7 +95,7 @@ public String getName() { public List getChildren() { List result = new ArrayList<>(); result.addAll(implementz); - result.addAll(directives); + result.addAll(directives.getDirectives()); result.addAll(fieldDefinitions); return result; } @@ -84,7 +104,7 @@ public List getChildren() { public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .children(CHILD_IMPLEMENTZ, implementz) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .children(CHILD_FIELD_DEFINITIONS, fieldDefinitions) .build(); } @@ -106,14 +126,15 @@ public boolean isEqualTo(Node o) { } ObjectTypeDefinition that = (ObjectTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + + return Objects.equals(this.name, that.name); } @Override public ObjectTypeDefinition deepCopy() { return new ObjectTypeDefinition(name, deepCopy(implementz), - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(fieldDefinitions), description, getSourceLocation(), @@ -147,14 +168,14 @@ public ObjectTypeDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List implementz = new ArrayList<>(); - private List directives = new ArrayList<>(); - private List fieldDefinitions = new ArrayList<>(); + private ImmutableList implementz = emptyList(); + private ImmutableList directives = emptyList(); + private ImmutableList fieldDefinitions = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -163,12 +184,12 @@ private Builder() { private Builder(ObjectTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.implementz = existing.getImplements(); - this.fieldDefinitions = existing.getFieldDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.implementz = ImmutableList.copyOf(existing.getImplements()); + this.fieldDefinitions = ImmutableList.copyOf(existing.getFieldDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -179,7 +200,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -194,32 +215,33 @@ public Builder description(Description description) { } public Builder implementz(List implementz) { - this.implementz = implementz; + this.implementz = ImmutableList.copyOf(implementz); return this; } public Builder implementz(Type implement) { - this.implementz.add(implement); + this.implementz = ImmutableKit.addToList(implementz, implement); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder fieldDefinitions(List fieldDefinitions) { - this.fieldDefinitions = fieldDefinitions; + this.fieldDefinitions = ImmutableList.copyOf(fieldDefinitions); return this; } public Builder fieldDefinition(FieldDefinition fieldDefinition) { - this.fieldDefinitions.add(fieldDefinition); + this.fieldDefinitions = ImmutableKit.addToList(fieldDefinitions, fieldDefinition); return this; } diff --git a/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java b/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java index e1696bc021..575827564f 100644 --- a/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java @@ -1,20 +1,22 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; -import static java.util.Collections.emptyMap; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; @PublicApi -public class ObjectTypeExtensionDefinition extends ObjectTypeDefinition { +public class ObjectTypeExtensionDefinition extends ObjectTypeDefinition implements SDLExtensionDefinition { @Internal protected ObjectTypeExtensionDefinition(String name, @@ -36,7 +38,7 @@ protected ObjectTypeExtensionDefinition(String name, * @param name of the object type extension */ public ObjectTypeExtensionDefinition(String name) { - this(name, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override @@ -52,6 +54,12 @@ public ObjectTypeExtensionDefinition deepCopy() { getAdditionalData()); } + @Override + public ObjectTypeExtensionDefinition withNewChildren(NodeChildrenContainer newChildren) { + return transformExtension(builder -> builder.implementz(newChildren.getChildren(CHILD_IMPLEMENTZ)) + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) + .fieldDefinitions(newChildren.getChildren(CHILD_FIELD_DEFINITIONS))); + } @Override public String toString() { @@ -73,28 +81,28 @@ public ObjectTypeExtensionDefinition transformExtension(Consumer builde return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List implementz = new ArrayList<>(); - private List directives = new ArrayList<>(); - private List fieldDefinitions = new ArrayList<>(); + private ImmutableList implementz = emptyList(); + private ImmutableList directives = emptyList(); + private ImmutableList fieldDefinitions = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); private Builder() { } - private Builder(ObjectTypeExtensionDefinition existing) { + private Builder(ObjectTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.implementz = existing.getImplements(); - this.fieldDefinitions = existing.getFieldDefinitions(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.implementz = ImmutableList.copyOf(existing.getImplements()); + this.fieldDefinitions = ImmutableList.copyOf(existing.getFieldDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -105,7 +113,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -120,32 +128,33 @@ public Builder description(Description description) { } public Builder implementz(List implementz) { - this.implementz = implementz; + this.implementz = ImmutableList.copyOf(implementz); return this; } - public Builder implementz(Type implementz) { - this.implementz.add(implementz); + public Builder implementz(Type implement) { + this.implementz = ImmutableKit.addToList(implementz, implement); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder fieldDefinitions(List fieldDefinitions) { - this.fieldDefinitions = fieldDefinitions; + this.fieldDefinitions = ImmutableList.copyOf(fieldDefinitions); return this; } public Builder fieldDefinition(FieldDefinition fieldDefinition) { - this.fieldDefinitions.add(fieldDefinition); + this.fieldDefinitions = ImmutableKit.addToList(fieldDefinitions, fieldDefinition); return this; } diff --git a/src/main/java/graphql/language/ObjectValue.java b/src/main/java/graphql/language/ObjectValue.java index 000fdfc394..7a40d0a4c9 100644 --- a/src/main/java/graphql/language/ObjectValue.java +++ b/src/main/java/graphql/language/ObjectValue.java @@ -1,32 +1,37 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class ObjectValue extends AbstractNode implements Value { - private final List objectFields = new ArrayList<>(); + private final ImmutableList objectFields; public static final String CHILD_OBJECT_FIELDS = "objectFields"; @Internal - protected ObjectValue(List objectFields, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected ObjectValue(List objectFields, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); - this.objectFields.addAll(objectFields); + this.objectFields = ImmutableList.copyOf(objectFields); } /** @@ -35,18 +40,16 @@ protected ObjectValue(List objectFields, SourceLocation sourceLocat * @param objectFields the list of field that make up this object value */ public ObjectValue(List objectFields) { - this(objectFields, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(objectFields, null, emptyList(), IgnoredChars.EMPTY, ImmutableKit.emptyMap()); } public List getObjectFields() { - return new ArrayList<>(objectFields); + return objectFields; } @Override public List getChildren() { - List result = new ArrayList<>(); - result.addAll(objectFields); - return result; + return ImmutableList.copyOf(objectFields); } @Override @@ -64,7 +67,7 @@ public ObjectValue withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -78,7 +81,8 @@ public boolean isEqualTo(Node o) { @Override public ObjectValue deepCopy() { - return new ObjectValue(deepCopy(objectFields), getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); + List copiedFields = assertNotNull(deepCopy(objectFields)); + return new ObjectValue(copiedFields, getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); } @@ -105,10 +109,11 @@ public ObjectValue transform(Consumer builderConsumer) { return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List objectFields = new ArrayList<>(); - private List comments = new ArrayList<>(); + private ImmutableList objectFields = emptyList(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -117,8 +122,8 @@ private Builder() { private Builder(ObjectValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); - this.objectFields = existing.getObjectFields(); + this.comments = ImmutableList.copyOf(existing.getComments()); + this.objectFields = ImmutableList.copyOf(existing.getObjectFields()); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -128,17 +133,17 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder objectFields(List objectFields) { - this.objectFields = objectFields; + this.objectFields = ImmutableList.copyOf(objectFields); return this; } public Builder objectField(ObjectField objectField) { - this.objectFields.add(objectField); + this.objectFields = ImmutableKit.addToList(objectFields, objectField); return this; } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/OperationDefinition.java b/src/main/java/graphql/language/OperationDefinition.java index b1f00dabdc..824180bb49 100644 --- a/src/main/java/graphql/language/OperationDefinition.java +++ b/src/main/java/graphql/language/OperationDefinition.java @@ -1,8 +1,11 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.language.NodeUtil.DirectivesHolder; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,14 +13,16 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi -public class OperationDefinition extends AbstractNode implements Definition, SelectionSetContainer, DirectivesContainer { +public class OperationDefinition extends AbstractNode implements Definition, SelectionSetContainer, DirectivesContainer, NamedNode { public enum Operation { QUERY, MUTATION, SUBSCRIPTION @@ -26,8 +31,8 @@ public enum Operation { private final String name; private final Operation operation; - private final List variableDefinitions; - private final List directives; + private final ImmutableList variableDefinitions; + private final DirectivesHolder directives; private final SelectionSet selectionSet; public static final String CHILD_VARIABLE_DEFINITIONS = "variableDefinitions"; @@ -47,25 +52,25 @@ protected OperationDefinition(String name, super(sourceLocation, comments, ignoredChars, additionalData); this.name = name; this.operation = operation; - this.variableDefinitions = variableDefinitions; - this.directives = directives; + this.variableDefinitions = ImmutableList.copyOf(variableDefinitions); + this.directives = DirectivesHolder.of(directives); this.selectionSet = selectionSet; } public OperationDefinition(String name, Operation operation) { - this(name, operation, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, operation, emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public OperationDefinition(String name) { - this(name, null, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override public List getChildren() { List result = new ArrayList<>(); result.addAll(variableDefinitions); - result.addAll(directives); + result.addAll(directives.getDirectives()); result.add(selectionSet); return result; } @@ -74,7 +79,7 @@ public List getChildren() { public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .children(CHILD_VARIABLE_DEFINITIONS, variableDefinitions) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .child(CHILD_SELECTION_SET, selectionSet) .build(); } @@ -97,11 +102,26 @@ public Operation getOperation() { } public List getVariableDefinitions() { - return new ArrayList<>(variableDefinitions); + return variableDefinitions; } public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -120,7 +140,7 @@ public boolean isEqualTo(Node o) { OperationDefinition that = (OperationDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name) && operation == that.operation; + return Objects.equals(this.name, that.name) && operation == that.operation; } @@ -129,7 +149,7 @@ public OperationDefinition deepCopy() { return new OperationDefinition(name, operation, deepCopy(variableDefinitions), - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(selectionSet), getSourceLocation(), getComments(), @@ -163,13 +183,13 @@ public OperationDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Operation operation; - private List variableDefinitions = new ArrayList<>(); - private List directives = new ArrayList<>(); + private ImmutableList variableDefinitions = emptyList(); + private ImmutableList directives = emptyList(); private SelectionSet selectionSet; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -179,11 +199,11 @@ private Builder() { private Builder(OperationDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.operation = existing.getOperation(); - this.variableDefinitions = existing.getVariableDefinitions(); - this.directives = existing.getDirectives(); + this.variableDefinitions = ImmutableList.copyOf(existing.getVariableDefinitions()); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.selectionSet = existing.getSelectionSet(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -196,7 +216,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -211,12 +231,23 @@ public Builder operation(Operation operation) { } public Builder variableDefinitions(List variableDefinitions) { - this.variableDefinitions = variableDefinitions; + this.variableDefinitions = ImmutableList.copyOf(variableDefinitions); + return this; + } + + public Builder variableDefinition(VariableDefinition variableDefinition) { + this.variableDefinitions = ImmutableKit.addToList(variableDefinitions, variableDefinition); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/OperationTypeDefinition.java b/src/main/java/graphql/language/OperationTypeDefinition.java index 94d08644b1..5041e692cf 100644 --- a/src/main/java/graphql/language/OperationTypeDefinition.java +++ b/src/main/java/graphql/language/OperationTypeDefinition.java @@ -1,6 +1,7 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; @@ -10,11 +11,13 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class OperationTypeDefinition extends AbstractNode implements NamedNode { @@ -34,11 +37,11 @@ protected OperationTypeDefinition(String name, TypeName typeName, SourceLocation /** * alternative to using a Builder for convenience * - * @param name of the operation + * @param name of the operation * @param typeName the type in play */ public OperationTypeDefinition(String name, TypeName typeName) { - this(name, typeName, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, typeName, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public TypeName getTypeName() { @@ -82,7 +85,7 @@ public boolean isEqualTo(Node o) { OperationTypeDefinition that = (OperationTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -115,7 +118,7 @@ public OperationTypeDefinition transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private TypeName typeName; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; @@ -127,7 +130,7 @@ private Builder() { private Builder(OperationTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.typeName = existing.getTypeName(); this.ignoredChars = existing.getIgnoredChars(); @@ -141,7 +144,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/PrettyAstPrinter.java b/src/main/java/graphql/language/PrettyAstPrinter.java new file mode 100644 index 0000000000..a5fc4628b1 --- /dev/null +++ b/src/main/java/graphql/language/PrettyAstPrinter.java @@ -0,0 +1,451 @@ +package graphql.language; + +import graphql.ExperimentalApi; +import graphql.collect.ImmutableKit; +import graphql.parser.CommentParser; +import graphql.parser.NodeToRuleCapturingParser; +import graphql.parser.ParserEnvironment; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.StringJoiner; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static graphql.Assert.assertTrue; +import static graphql.parser.ParserEnvironment.newParserEnvironment; + +/** + * A printer that acts as a code formatter. + * + * This printer will preserve pretty much all elements from the source text, even those that are not part of the AST + * (and are thus discarded by the {@link AstPrinter}), like comments. + * + * @see AstPrinter + */ +@ExperimentalApi +public class PrettyAstPrinter extends AstPrinter { + private final CommentParser commentParser; + private final PrettyPrinterOptions options; + + public PrettyAstPrinter(NodeToRuleCapturingParser.ParserContext parserContext) { + this(parserContext, PrettyPrinterOptions.defaultOptions); + } + + public PrettyAstPrinter(NodeToRuleCapturingParser.ParserContext parserContext, PrettyPrinterOptions options) { + super(false); + this.commentParser = new CommentParser(parserContext); + this.options = options; + + this.replacePrinter(DirectiveDefinition.class, directiveDefinition()); + this.replacePrinter(Document.class, document()); + this.replacePrinter(EnumTypeDefinition.class, enumTypeDefinition("enum")); + this.replacePrinter(EnumTypeExtensionDefinition.class, enumTypeDefinition("extend enum")); + this.replacePrinter(EnumValueDefinition.class, enumValueDefinition()); + this.replacePrinter(FieldDefinition.class, fieldDefinition()); + this.replacePrinter(InputObjectTypeDefinition.class, inputObjectTypeDefinition("input")); + this.replacePrinter(InputObjectTypeExtensionDefinition.class, inputObjectTypeDefinition("extend input")); + this.replacePrinter(InputValueDefinition.class, inputValueDefinition()); + this.replacePrinter(InterfaceTypeDefinition.class, implementingTypeDefinition("interface")); + this.replacePrinter(InterfaceTypeExtensionDefinition.class, implementingTypeDefinition("extend interface")); + this.replacePrinter(ObjectTypeDefinition.class, implementingTypeDefinition("type")); + this.replacePrinter(ObjectTypeExtensionDefinition.class, implementingTypeDefinition("extend type")); + this.replacePrinter(ScalarTypeDefinition.class, scalarTypeDefinition("scalar")); + this.replacePrinter(ScalarTypeExtensionDefinition.class, scalarTypeDefinition("extend scalar")); + this.replacePrinter(UnionTypeDefinition.class, unionTypeDefinition("union")); + this.replacePrinter(UnionTypeExtensionDefinition.class, unionTypeDefinition("extend union")); + } + + public String print(Node node) { + StringBuilder builder = new StringBuilder(); + + NodePrinter nodePrinter = this._findPrinter(node); + nodePrinter.print(builder, node); + + return builder.toString(); + } + + public static String print(String schemaDefinition, PrettyPrinterOptions options) { + NodeToRuleCapturingParser parser = new NodeToRuleCapturingParser(); + ParserEnvironment parserEnvironment = newParserEnvironment().document(schemaDefinition).build(); + Document document = parser.parseDocument(parserEnvironment); + + return new PrettyAstPrinter(parser.getParserContext(), options).print(document); + } + + private NodePrinter document() { + return (out, node) -> { + String firstLineComment = commentParser.getCommentOnFirstLineOfDocument(node) + .map(this::comment) + .map(append("\n")) + .orElse(""); + + out.append(firstLineComment); + out.append(join(node.getDefinitions(), "\n\n")).append("\n"); + + String endComments = comments(commentParser.getCommentsAfterAllDefinitions(node), "\n"); + + out.append(endComments); + }; + } + + private NodePrinter directiveDefinition() { + return (out, node) -> { + out.append(outset(node)); + String locations = join(node.getDirectiveLocations(), " | "); + String repeatable = node.isRepeatable() ? "repeatable " : ""; + out.append("directive @") + .append(node.getName()) + .append(block(node.getInputValueDefinitions(), node, "(", ")", "\n", ", ", "")) + .append(" ") + .append(repeatable) + .append("on ") + .append(locations); + }; + } + + private NodePrinter enumTypeDefinition(String nodeName) { + return (out, node) -> { + out.append(outset(node)); + out.append(spaced( + nodeName, + node.getName(), + directives(node.getDirectives()), + block(node.getEnumValueDefinitions(), node, "{", "}", "\n", null, null) + )); + }; + } + + private NodePrinter enumValueDefinition() { + return (out, node) -> { + out.append(outset(node)); + out.append(spaced( + node.getName(), + directives(node.getDirectives()) + )); + }; + } + + private NodePrinter fieldDefinition() { + return (out, node) -> { + out.append(outset(node)); + out.append(node.getName()) + .append(block(node.getInputValueDefinitions(), node, "(", ")", "\n", ", ", "")) + .append(": ") + .append(spaced( + type(node.getType()), + directives(node.getDirectives()) + )); + }; + } + + private String type(Type type) { + if (type instanceof NonNullType) { + NonNullType inner = (NonNullType) type; + return wrap("", type(inner.getType()), "!"); + } else if (type instanceof ListType) { + ListType inner = (ListType) type; + return wrap("[", type(inner.getType()), "]"); + } else { + TypeName inner = (TypeName) type; + return inner.getName(); + } + } + + private NodePrinter inputObjectTypeDefinition(String nodeName) { + return (out, node) -> { + out.append(outset(node)); + out.append(spaced( + nodeName, + node.getName(), + directives(node.getDirectives()), + block(node.getInputValueDefinitions(), node, "{", "}", "\n", null, null) + )); + }; + } + + private NodePrinter inputValueDefinition() { + String nameTypeSep = ": "; + String defaultValueEquals = "= "; + return (out, node) -> { + Value defaultValue = node.getDefaultValue(); + out.append(outset(node)); + out.append(spaced( + node.getName() + nameTypeSep + type(node.getType()), + wrap(defaultValueEquals, defaultValue, ""), + directives(node.getDirectives()) + )); + }; + } + + + private > NodePrinter implementingTypeDefinition(String nodeName) { + return (out, node) -> { + out.append(outset(node)); + out.append(spaced( + nodeName, + node.getName(), + wrap("implements ", block(node.getImplements(), node, "", "", " &\n", " & ", ""), ""), + directives(node.getDirectives()), + block(node.getFieldDefinitions(), node, "{", "}", "\n", null, null) + )); + }; + } + + private NodePrinter scalarTypeDefinition(String nodeName) { + return (out, node) -> { + out.append(outset(node)); + out.append(spaced( + nodeName, + node.getName(), + directives(node.getDirectives()))); + }; + } + + private NodePrinter unionTypeDefinition(String nodeName) { + String barSep = " | "; + String equals = "= "; + return (out, node) -> { + out.append(outset(node)); + out.append(spaced( + nodeName, + node.getName(), + directives(node.getDirectives()), + equals + join(node.getMemberTypes(), barSep) + )); + }; + } + + private String node(Node node, Class startClass) { + if (startClass != null) { + assertTrue(startClass.isInstance(node), "The starting class must be in the inherit tree"); + } + StringBuilder builder = new StringBuilder(); + + String comments = comments(commentParser.getLeadingComments(node), "\n"); + builder.append(comments); + + NodePrinter printer = _findPrinter(node, startClass); + printer.print(builder, node); + + commentParser.getTrailingComment(node) + .map(this::comment) + .map(prepend(" ")) + .ifPresent(builder::append); + + return builder.toString(); + } + + private boolean isEmpty(List list) { + return list == null || list.isEmpty(); + } + + private boolean isEmpty(String s) { + return s == null || s.isBlank(); + } + + private List nvl(List list) { + return list != null ? list : ImmutableKit.emptyList(); + } + + // Description and comments positioned before the node + private String outset(Node node) { + String description = description(node); + String commentsAfter = comments(commentParser.getCommentsAfterDescription(node), "\n"); + + return description + commentsAfter; + } + + private String description(Node node) { + Description description = ((AbstractDescribedNode) node).getDescription(); + if (description == null || description.getContent() == null) { + return ""; + } + String s; + boolean startNewLine = description.getContent().length() > 0 && description.getContent().charAt(0) == '\n'; + if (description.isMultiLine()) { + s = "\"\"\"" + (startNewLine ? "" : "\n") + description.getContent() + "\n\"\"\"\n"; + } else { + s = "\"" + description.getContent() + "\"\n"; + } + return s; + } + + private String comment(Comment comment) { + return comments(Collections.singletonList(comment)); + } + + private String comments(List comments) { + return comments(comments, ""); + } + + private String comments(List comments, String suffix) { + return comments(comments, "", suffix); + } + + private String comments(List comments, String prefix, String suffix) { + if (comments.isEmpty()) { + return ""; + } + + return comments.stream() + .map(Comment::getContent) + .map(content -> "#" + content) + .collect(Collectors.joining("\n", prefix, suffix)); + } + + private String directives(List directives) { + return join(nvl(directives), " "); + } + + private String join(List nodes, String delim) { + return join(nodes, delim, "", ""); + } + + private String join(List nodes, String delim, String prefix, String suffix) { + StringJoiner joiner = new StringJoiner(delim, prefix, suffix); + + for (T node : nodes) { + joiner.add(node(node)); + } + + return joiner.toString(); + } + + private String node(Node node) { + return node(node, null); + } + + private String spaced(String... args) { + return join(" ", args); + } + + private Function prepend(String prefix) { + return text -> prefix + text; + } + + private Function append(String suffix) { + return text -> text + suffix; + } + + private String join(String delim, String... args) { + StringJoiner joiner = new StringJoiner(delim); + + for (final String arg : args) { + if (!isEmpty(arg)) { + joiner.add(arg); + } + } + + return joiner.toString(); + } + + private String block(List nodes, Node parentNode, String prefix, String suffix, String separatorMultiline, String separatorSingleLine, String whenEmpty) { + if (isEmpty(nodes)) { + return whenEmpty != null ? whenEmpty : prefix + suffix; + } + + boolean hasDescriptions = nodes.stream() + .filter(node -> node instanceof AbstractDescribedNode) + .map(node -> (AbstractDescribedNode) node) + .map(AbstractDescribedNode::getDescription) + .anyMatch(Objects::nonNull); + + boolean hasTrailingComments = nodes.stream() + .map(commentParser::getTrailingComment) + .anyMatch(Optional::isPresent); + + boolean hasLeadingComments = nodes.stream() + .mapToLong(node -> commentParser.getLeadingComments(node).size()) + .sum() > 0; + + boolean isMultiline = hasDescriptions || hasTrailingComments || hasLeadingComments || separatorSingleLine == null; + + String appliedSeparator = isMultiline ? separatorMultiline : separatorSingleLine; + + String blockStart = commentParser.getBeginningOfBlockComment(parentNode, prefix) + .map(this::comment) + .map(commentText -> prefix + " " + commentText + "\n") + .orElseGet(() -> prefix + (isMultiline ? "\n" : "")); + + String blockEndComments = comments(commentParser.getEndOfBlockComments(parentNode, suffix), "\n", ""); + String blockEnd = (isMultiline ? "\n" : "") + suffix; + + String content = nodes.stream().map(this::node).collect(Collectors.joining(appliedSeparator)); + String possiblyIndentedContent = isMultiline ? indent(content + blockEndComments) : content + blockEndComments; + + return blockStart + possiblyIndentedContent + blockEnd; + } + + private String indent(String text) { + return indent(new StringBuilder(text)).toString(); + } + + private StringBuilder indent(StringBuilder stringBuilder) { + final String indentText = options.indentText; + + for (int i = 0; i < stringBuilder.length(); i++) { + char c = stringBuilder.charAt(i); + if (i == 0) { + stringBuilder.replace(i, i, indentText); + i += 2; + } + if (c == '\n') { + stringBuilder.replace(i, i + 1, "\n" + indentText); + i += 3; + } + } + return stringBuilder; + } + + /** + * Contains options that modify how a document is printed. + */ + public static class PrettyPrinterOptions { + private final String indentText; + private static final PrettyPrinterOptions defaultOptions = new PrettyPrinterOptions(IndentType.SPACE, 2); + + private PrettyPrinterOptions(IndentType indentType, int indentWidth) { + this.indentText = String.join("", Collections.nCopies(indentWidth, indentType.character)); + } + + public static PrettyPrinterOptions defaultOptions() { + return defaultOptions; + } + + public static Builder builder() { + return new Builder(); + } + + public enum IndentType { + TAB("\t"), SPACE(" "); + + private final String character; + + IndentType(String character) { + this.character = character; + } + } + + public static class Builder { + private IndentType indentType; + private int indentWidth = 1; + + public Builder indentType(IndentType indentType) { + this.indentType = indentType; + return this; + } + + public Builder indentWith(int indentWidth) { + this.indentWidth = indentWidth; + return this; + } + + public PrettyPrinterOptions build() { + return new PrettyPrinterOptions(indentType, indentWidth); + } + } + } +} diff --git a/src/main/java/graphql/language/SDLDefinition.java b/src/main/java/graphql/language/SDLDefinition.java index f5185fb7ee..7b07a24919 100644 --- a/src/main/java/graphql/language/SDLDefinition.java +++ b/src/main/java/graphql/language/SDLDefinition.java @@ -4,7 +4,7 @@ import graphql.PublicApi; /** - * All Schema Definition Language (SDL) Definitions. + * An interface for Schema Definition Language (SDL) definitions. * * @param the actual Node type */ diff --git a/src/main/java/graphql/language/SDLExtensionDefinition.java b/src/main/java/graphql/language/SDLExtensionDefinition.java new file mode 100644 index 0000000000..2b71cd46ab --- /dev/null +++ b/src/main/java/graphql/language/SDLExtensionDefinition.java @@ -0,0 +1,12 @@ +package graphql.language; + + +import graphql.PublicApi; + +/** + * A marker interface for Schema Definition Language (SDL) extension definitions. + */ +@PublicApi +public interface SDLExtensionDefinition { + +} diff --git a/src/main/java/graphql/language/SDLNamedDefinition.java b/src/main/java/graphql/language/SDLNamedDefinition.java new file mode 100644 index 0000000000..44b4bf85a6 --- /dev/null +++ b/src/main/java/graphql/language/SDLNamedDefinition.java @@ -0,0 +1,18 @@ +package graphql.language; + + +import graphql.PublicApi; + +/** + * A interface for named Schema Definition Language (SDL) definition. + * + * @param the actual Node type + */ +@PublicApi +public interface SDLNamedDefinition extends SDLDefinition { + + /** + * @return The name of this SDL definition + */ + String getName(); +} diff --git a/src/main/java/graphql/language/ScalarTypeDefinition.java b/src/main/java/graphql/language/ScalarTypeDefinition.java index c79913d272..3374b69dab 100644 --- a/src/main/java/graphql/language/ScalarTypeDefinition.java +++ b/src/main/java/graphql/language/ScalarTypeDefinition.java @@ -1,26 +1,29 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class ScalarTypeDefinition extends AbstractDescribedNode implements TypeDefinition, DirectivesContainer, NamedNode { private final String name; - private final List directives; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_DIRECTIVES = "directives"; @@ -34,7 +37,7 @@ protected ScalarTypeDefinition(String name, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.directives = directives; + this.directives = NodeUtil.DirectivesHolder.of(directives); } /** @@ -43,12 +46,27 @@ protected ScalarTypeDefinition(String name, * @param name of the scalar */ public ScalarTypeDefinition(String name) { - this(name, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } @Override @@ -58,13 +76,13 @@ public String getName() { @Override public List getChildren() { - return new ArrayList<>(directives); + return ImmutableList.copyOf(directives.getDirectives()); } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -86,12 +104,12 @@ public boolean isEqualTo(Node o) { ScalarTypeDefinition that = (ScalarTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public ScalarTypeDefinition deepCopy() { - return new ScalarTypeDefinition(name, deepCopy(directives), description, getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); + return new ScalarTypeDefinition(name, deepCopy(directives.getDirectives()), description, getSourceLocation(), getComments(), getIgnoredChars(), getAdditionalData()); } @Override @@ -117,12 +135,12 @@ public ScalarTypeDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives = new ArrayList<>(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -131,10 +149,10 @@ private Builder() { private Builder(ScalarTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -146,7 +164,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -160,13 +178,14 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } diff --git a/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java b/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java index 058aa92e35..0feb48451b 100644 --- a/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java @@ -1,18 +1,20 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class ScalarTypeExtensionDefinition extends ScalarTypeDefinition { +public class ScalarTypeExtensionDefinition extends ScalarTypeDefinition implements SDLExtensionDefinition { @Internal protected ScalarTypeExtensionDefinition(String name, @@ -42,31 +44,37 @@ public static Builder newScalarTypeExtensionDefinition() { return new Builder(); } + @Override + public ScalarTypeExtensionDefinition withNewChildren(NodeChildrenContainer newChildren) { + return transformExtension(builder -> builder + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) + ); + } + public ScalarTypeExtensionDefinition transformExtension(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives = new ArrayList<>(); + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); private Builder() { } - - private Builder(ScalarTypeExtensionDefinition existing) { + private Builder(ScalarTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -78,7 +86,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -92,8 +100,14 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } @@ -112,7 +126,6 @@ public Builder additionalData(String key, String value) { return this; } - public ScalarTypeExtensionDefinition build() { return new ScalarTypeExtensionDefinition(name, directives, diff --git a/src/main/java/graphql/language/ScalarValue.java b/src/main/java/graphql/language/ScalarValue.java index 7ddacb168f..25166972aa 100644 --- a/src/main/java/graphql/language/ScalarValue.java +++ b/src/main/java/graphql/language/ScalarValue.java @@ -1,7 +1,9 @@ package graphql.language; import graphql.PublicApi; +import org.jspecify.annotations.NullMarked; @PublicApi +@NullMarked public interface ScalarValue extends Value { } diff --git a/src/main/java/graphql/language/SchemaDefinition.java b/src/main/java/graphql/language/SchemaDefinition.java index 629e19916f..931ef33c41 100644 --- a/src/main/java/graphql/language/SchemaDefinition.java +++ b/src/main/java/graphql/language/SchemaDefinition.java @@ -1,71 +1,83 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static graphql.language.NodeUtil.directivesByName; @PublicApi -public class SchemaDefinition extends AbstractNode implements SDLDefinition { +public class SchemaDefinition extends AbstractDescribedNode implements SDLDefinition, DirectivesContainer { - private final List directives; - private final List operationTypeDefinitions; + private final NodeUtil.DirectivesHolder directives; + private final ImmutableList operationTypeDefinitions; public static final String CHILD_DIRECTIVES = "directives"; public static final String CHILD_OPERATION_TYPE_DEFINITIONS = "operationTypeDefinitions"; + @Internal protected SchemaDefinition(List directives, List operationTypeDefinitions, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, - Map additionalData) { - super(sourceLocation, comments, ignoredChars, additionalData); - this.directives = directives; - this.operationTypeDefinitions = operationTypeDefinitions; + Map additionalData, + Description description) { + super(sourceLocation, comments, ignoredChars, additionalData, description); + this.directives = NodeUtil.DirectivesHolder.of(directives); + this.operationTypeDefinitions = ImmutableList.copyOf(operationTypeDefinitions); } + @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); } - public Map getDirectivesByName() { - return directivesByName(directives); + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); } - public Directive getDirective(String directiveName) { - return getDirectivesByName().get(directiveName); + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); } + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); + } public List getOperationTypeDefinitions() { - return new ArrayList<>(operationTypeDefinitions); + return operationTypeDefinitions; + } + + public Description getDescription() { + return description; } @Override public List getChildren() { - List result = new ArrayList<>(); - result.addAll(directives); - result.addAll(operationTypeDefinitions); - return result; + return FpKit.concat(directives.getDirectives(), operationTypeDefinitions); } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .children(CHILD_OPERATION_TYPE_DEFINITIONS, operationTypeDefinitions) .build(); } @@ -91,8 +103,8 @@ public boolean isEqualTo(Node o) { @Override public SchemaDefinition deepCopy() { - return new SchemaDefinition(deepCopy(directives), deepCopy(operationTypeDefinitions), getSourceLocation(), getComments(), - getIgnoredChars(), getAdditionalData()); + return new SchemaDefinition(deepCopy(directives.getDirectives()), deepCopy(operationTypeDefinitions), getSourceLocation(), getComments(), + getIgnoredChars(), getAdditionalData(), description); } @Override @@ -120,24 +132,31 @@ public static Builder newSchemaDefinition() { public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); - private List directives = new ArrayList<>(); - private List operationTypeDefinitions = new ArrayList<>(); + private ImmutableList comments = emptyList(); + private ImmutableList directives = emptyList(); + private ImmutableList operationTypeDefinitions = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); + private Description description; + protected Builder() { } protected Builder(SchemaDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); - this.directives = existing.getDirectives(); - this.operationTypeDefinitions = existing.getOperationTypeDefinitions(); + this.comments = ImmutableList.copyOf(existing.getComments()); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.operationTypeDefinitions = ImmutableList.copyOf(existing.getOperationTypeDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); + this.description = existing.getDescription(); } + public Builder description(Description description) { + this.description = description; + return this; + } public Builder sourceLocation(SourceLocation sourceLocation) { this.sourceLocation = sourceLocation; @@ -145,27 +164,27 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder operationTypeDefinitions(List operationTypeDefinitions) { - this.operationTypeDefinitions = operationTypeDefinitions; + this.operationTypeDefinitions = ImmutableList.copyOf(operationTypeDefinitions); return this; } - public Builder operationTypeDefinition(OperationTypeDefinition operationTypeDefinitions) { - this.operationTypeDefinitions.add(operationTypeDefinitions); + public Builder operationTypeDefinition(OperationTypeDefinition operationTypeDefinition) { + this.operationTypeDefinitions = ImmutableKit.addToList(operationTypeDefinitions, operationTypeDefinition); return this; } @@ -190,7 +209,8 @@ public SchemaDefinition build() { sourceLocation, comments, ignoredChars, - additionalData); + additionalData, + description); } } } diff --git a/src/main/java/graphql/language/SchemaExtensionDefinition.java b/src/main/java/graphql/language/SchemaExtensionDefinition.java index 3959f2fade..43927f5b92 100644 --- a/src/main/java/graphql/language/SchemaExtensionDefinition.java +++ b/src/main/java/graphql/language/SchemaExtensionDefinition.java @@ -1,20 +1,27 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class SchemaExtensionDefinition extends SchemaDefinition { - - protected SchemaExtensionDefinition(List directives, List operationTypeDefinitions, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { - super(directives, operationTypeDefinitions, sourceLocation, comments, ignoredChars, additionalData); +public class SchemaExtensionDefinition extends SchemaDefinition implements SDLExtensionDefinition { + + protected SchemaExtensionDefinition(List directives, + List operationTypeDefinitions, + SourceLocation sourceLocation, + List comments, + IgnoredChars ignoredChars, + Map additionalData) { + super(directives, operationTypeDefinitions, sourceLocation, comments, ignoredChars, additionalData, null); } @Override @@ -49,22 +56,23 @@ public static Builder newSchemaExtensionDefinition() { return new Builder(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); - private List directives = new ArrayList<>(); - private List operationTypeDefinitions = new ArrayList<>(); + private ImmutableList comments = emptyList(); + private ImmutableList directives = emptyList(); + private ImmutableList operationTypeDefinitions = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); + protected Builder() { } protected Builder(SchemaDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); - this.directives = existing.getDirectives(); - this.operationTypeDefinitions = existing.getOperationTypeDefinitions(); + this.comments = ImmutableList.copyOf(existing.getComments()); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.operationTypeDefinitions = ImmutableList.copyOf(existing.getOperationTypeDefinitions()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -76,27 +84,28 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder operationTypeDefinitions(List operationTypeDefinitions) { - this.operationTypeDefinitions = operationTypeDefinitions; + this.operationTypeDefinitions = ImmutableList.copyOf(operationTypeDefinitions); return this; } - public Builder operationTypeDefinition(OperationTypeDefinition operationTypeDefinitions) { - this.operationTypeDefinitions.add(operationTypeDefinitions); + public Builder operationTypeDefinition(OperationTypeDefinition operationTypeDefinition) { + this.operationTypeDefinitions = ImmutableKit.addToList(operationTypeDefinitions, operationTypeDefinition); return this; } diff --git a/src/main/java/graphql/language/Selection.java b/src/main/java/graphql/language/Selection.java index c88557806c..7160ccfafe 100644 --- a/src/main/java/graphql/language/Selection.java +++ b/src/main/java/graphql/language/Selection.java @@ -4,5 +4,5 @@ import graphql.PublicApi; @PublicApi -public interface Selection extends Node { +public interface Selection> extends Node { } diff --git a/src/main/java/graphql/language/SelectionSet.java b/src/main/java/graphql/language/SelectionSet.java index c1c5618384..8e85bdcdef 100644 --- a/src/main/java/graphql/language/SelectionSet.java +++ b/src/main/java/graphql/language/SelectionSet.java @@ -1,34 +1,35 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class SelectionSet extends AbstractNode { - private final List selections = new ArrayList<>(); + private final ImmutableList selections; public static final String CHILD_SELECTIONS = "selections"; @Internal protected SelectionSet(Collection selections, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); - this.selections.addAll(selections); + this.selections = ImmutableList.copyOf(selections); } /** @@ -37,11 +38,11 @@ protected SelectionSet(Collection selections, SourceLocatio * @param selections the list of selection in this selection set */ public SelectionSet(Collection selections) { - this(selections, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(selections, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } public List getSelections() { - return new ArrayList<>(selections); + return selections; } /** @@ -53,15 +54,14 @@ public List getSelections() { * @return a list of selections of that class or empty list */ public List getSelectionsOfType(Class selectionClass) { - return selections.stream() - .filter(d -> selectionClass.isAssignableFrom(d.getClass())) - .map(selectionClass::cast) - .collect(Collectors.toList()); + return ImmutableKit.filterAndMap(selections, + d -> selectionClass.isAssignableFrom(d.getClass()), + selectionClass::cast); } @Override public List getChildren() { - return new ArrayList<>(selections); + return ImmutableList.copyOf(selections); } @Override @@ -123,9 +123,9 @@ public SelectionSet transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { - private List selections = new ArrayList<>(); + private ImmutableList selections = emptyList(); private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -134,19 +134,19 @@ private Builder() { private Builder(SelectionSet existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); - this.selections = existing.getSelections(); + this.comments = ImmutableList.copyOf(existing.getComments()); + this.selections = ImmutableList.copyOf(existing.getSelections()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } public Builder selections(Collection selections) { - this.selections = new ArrayList<>(selections); + this.selections = ImmutableList.copyOf(selections); return this; } public Builder selection(Selection selection) { - this.selections.add(selection); + this.selections = ImmutableKit.addToList(selections, selection); return this; } @@ -156,7 +156,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/SourceLocation.java b/src/main/java/graphql/language/SourceLocation.java index a8c09f46c0..a4ae90a039 100644 --- a/src/main/java/graphql/language/SourceLocation.java +++ b/src/main/java/graphql/language/SourceLocation.java @@ -2,12 +2,20 @@ import graphql.PublicApi; +import graphql.schema.GraphQLModifiedType; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.idl.SchemaGenerator; import java.io.Serializable; +import java.util.Objects; @PublicApi public class SourceLocation implements Serializable { + public static final SourceLocation EMPTY = new SourceLocation(-1, -1); + private final int line; private final int column; private final String sourceName; @@ -36,21 +44,30 @@ public String getSourceName() { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } SourceLocation that = (SourceLocation) o; - if (line != that.line) return false; - if (column != that.column) return false; - return sourceName != null ? sourceName.equals(that.sourceName) : that.sourceName == null; + if (line != that.line) { + return false; + } + if (column != that.column) { + return false; + } + return Objects.equals(sourceName, that.sourceName); } @Override public int hashCode() { - int result = line; - result = 31 * result + column; - result = 31 * result + (sourceName != null ? sourceName.hashCode() : 0); + int result = 1; + result = 31 * result + Integer.hashCode(line); + result = 31 * result + Integer.hashCode(column); + result = 31 * result + Objects.hashCode(sourceName); return result; } @@ -62,4 +79,27 @@ public String toString() { (sourceName != null ? ", sourceName=" + sourceName : "") + '}'; } + + + /** + * This method can return {@link SourceLocation} that help create the given schema element. If the + * schema is created from input files and {@link SchemaGenerator.Options#isCaptureAstDefinitions()} + * is set to true then schema elements contain a reference to the {@link SourceLocation} that helped + * create that runtime schema element. + * + * @param schemaElement the schema element + * + * @return the source location if available or null if it's not. + */ + public static SourceLocation getLocation(GraphQLSchemaElement schemaElement) { + if (schemaElement instanceof GraphQLModifiedType) { + schemaElement = GraphQLTypeUtil.unwrapAllAs((GraphQLModifiedType) schemaElement); + } + if (schemaElement instanceof GraphQLNamedSchemaElement) { + Node node = ((GraphQLNamedSchemaElement) schemaElement).getDefinition(); + return node != null ? node.getSourceLocation() : null; + } + return null; + } + } diff --git a/src/main/java/graphql/language/StringValue.java b/src/main/java/graphql/language/StringValue.java index 5fe3ab6079..46740ecff7 100644 --- a/src/main/java/graphql/language/StringValue.java +++ b/src/main/java/graphql/language/StringValue.java @@ -1,29 +1,34 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; @PublicApi +@NullMarked public class StringValue extends AbstractNode implements ScalarValue { - private final String value; + private final @Nullable String value; @Internal - protected StringValue(String value, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected StringValue(@Nullable String value, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.value = value; } @@ -34,17 +39,16 @@ protected StringValue(String value, SourceLocation sourceLocation, List * @param value of the String */ public StringValue(String value) { - this(value, null, new ArrayList<>(), IgnoredChars.EMPTY, Collections.emptyMap()); + this(value, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } - public String getValue() { + public @Nullable String getValue() { return value; } @Override public List getChildren() { - List result = new ArrayList<>(); - return result; + return emptyList(); } @Override @@ -66,7 +70,7 @@ public String toString() { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -76,7 +80,7 @@ public boolean isEqualTo(Node o) { StringValue that = (StringValue) o; - return !(value != null ? !value.equals(that.value) : that.value != null); + return Objects.equals(value, that.value); } @@ -90,6 +94,10 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitStringValue(this, context); } + public static StringValue of(String value) { + return StringValue.newStringValue(value).build(); + } + public static Builder newStringValue() { return new Builder(); } @@ -105,9 +113,9 @@ public StringValue transform(Consumer builderConsumer) { } public static final class Builder implements NodeBuilder { - private SourceLocation sourceLocation; - private String value; - private List comments = new ArrayList<>(); + private @Nullable SourceLocation sourceLocation; + private @Nullable String value; + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -116,25 +124,25 @@ private Builder() { private Builder(StringValue existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.value = existing.getValue(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } - public Builder sourceLocation(SourceLocation sourceLocation) { + public Builder sourceLocation(@Nullable SourceLocation sourceLocation) { this.sourceLocation = sourceLocation; return this; } - public Builder value(String value) { + public Builder value(@Nullable String value) { this.value = value; return this; } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -155,8 +163,7 @@ public Builder additionalData(String key, String value) { public StringValue build() { - StringValue stringValue = new StringValue(value, sourceLocation, comments, ignoredChars, additionalData); - return stringValue; + return new StringValue(value, sourceLocation, comments, ignoredChars, additionalData); } } } diff --git a/src/main/java/graphql/language/TypeDefinition.java b/src/main/java/graphql/language/TypeDefinition.java index 5f7c71f068..f75c2c5147 100644 --- a/src/main/java/graphql/language/TypeDefinition.java +++ b/src/main/java/graphql/language/TypeDefinition.java @@ -4,11 +4,11 @@ import graphql.PublicApi; /** - * All type definitions in a SDL. + * An interface for type definitions in a Schema Definition Language (SDL). * * @param the actual Node type */ @PublicApi -public interface TypeDefinition extends SDLDefinition, DirectivesContainer, NamedNode { +public interface TypeDefinition extends SDLNamedDefinition, DirectivesContainer, NamedNode { } diff --git a/src/main/java/graphql/language/TypeName.java b/src/main/java/graphql/language/TypeName.java index 85fd2e3070..add06add41 100644 --- a/src/main/java/graphql/language/TypeName.java +++ b/src/main/java/graphql/language/TypeName.java @@ -1,21 +1,23 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; -import static java.util.Collections.emptyMap; @PublicApi public class TypeName extends AbstractNode implements Type, NamedNode { @@ -34,7 +36,7 @@ protected TypeName(String name, SourceLocation sourceLocation, List com * @param name of the type */ public TypeName(String name) { - this(name, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @@ -44,7 +46,7 @@ public String getName() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -69,7 +71,7 @@ public boolean isEqualTo(Node o) { TypeName that = (TypeName) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -107,7 +109,7 @@ public TypeName transform(Consumer builderConsumer) { public static final class Builder implements NodeBuilder { private String name; private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -116,7 +118,7 @@ private Builder() { private Builder(TypeName existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -133,7 +135,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/language/UnionTypeDefinition.java b/src/main/java/graphql/language/UnionTypeDefinition.java index b5e5d43389..9af502db89 100644 --- a/src/main/java/graphql/language/UnionTypeDefinition.java +++ b/src/main/java/graphql/language/UnionTypeDefinition.java @@ -1,27 +1,31 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi public class UnionTypeDefinition extends AbstractDescribedNode implements TypeDefinition, DirectivesContainer, NamedNode { private final String name; - private final List directives; - private final List memberTypes; + private final NodeUtil.DirectivesHolder directives; + private final ImmutableList memberTypes; public static final String CHILD_DIRECTIVES = "directives"; public static final String CHILD_MEMBER_TYPES = "memberTypes"; @@ -36,8 +40,8 @@ protected UnionTypeDefinition(String name, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData, description); this.name = name; - this.directives = directives; - this.memberTypes = memberTypes; + this.directives = NodeUtil.DirectivesHolder.of(directives); + this.memberTypes = ImmutableList.copyOf(memberTypes); } /** @@ -48,7 +52,7 @@ protected UnionTypeDefinition(String name, */ public UnionTypeDefinition(String name, List directives) { - this(name, directives, new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, directives, emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -57,16 +61,31 @@ public UnionTypeDefinition(String name, * @param name of the union */ public UnionTypeDefinition(String name) { - this(name, new ArrayList<>(), new ArrayList<>(), null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, emptyList(), emptyList(), null, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); } public List getMemberTypes() { - return new ArrayList<>(memberTypes); + return memberTypes; } @Override @@ -76,16 +95,13 @@ public String getName() { @Override public List getChildren() { - List result = new ArrayList<>(); - result.addAll(directives); - result.addAll(memberTypes); - return result; + return FpKit.concat(directives.getDirectives(), memberTypes); } @Override public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .children(CHILD_MEMBER_TYPES, memberTypes) .build(); } @@ -109,13 +125,13 @@ public boolean isEqualTo(Node o) { UnionTypeDefinition that = (UnionTypeDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override public UnionTypeDefinition deepCopy() { return new UnionTypeDefinition(name, - deepCopy(directives), + deepCopy(directives.getDirectives()), deepCopy(memberTypes), description, getSourceLocation(), @@ -148,13 +164,13 @@ public UnionTypeDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives = new ArrayList<>(); - private List memberTypes = new ArrayList<>(); + private ImmutableList directives = emptyList(); + private ImmutableList memberTypes = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -163,11 +179,11 @@ private Builder() { private Builder(UnionTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.memberTypes = existing.getMemberTypes(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.memberTypes = ImmutableList.copyOf(existing.getMemberTypes()); this.ignoredChars = existing.getIgnoredChars(); } @@ -177,7 +193,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -191,23 +207,24 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); return this; } public Builder directive(Directive directive) { - this.directives.add(directive); + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder memberTypes(List memberTypes) { - this.memberTypes = memberTypes; + this.memberTypes = ImmutableList.copyOf(memberTypes); return this; } public Builder memberType(Type memberType) { - this.memberTypes.add(memberType); + this.memberTypes = ImmutableKit.addToList(memberTypes, memberType); return this; } diff --git a/src/main/java/graphql/language/UnionTypeExtensionDefinition.java b/src/main/java/graphql/language/UnionTypeExtensionDefinition.java index 131ac3b9f6..81ea751792 100644 --- a/src/main/java/graphql/language/UnionTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/UnionTypeExtensionDefinition.java @@ -1,18 +1,20 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class UnionTypeExtensionDefinition extends UnionTypeDefinition { +public class UnionTypeExtensionDefinition extends UnionTypeDefinition implements SDLExtensionDefinition { @Internal protected UnionTypeExtensionDefinition(String name, @@ -57,35 +59,41 @@ public static Builder newUnionTypeExtensionDefinition() { return new Builder(); } + @Override + public UnionTypeExtensionDefinition withNewChildren(NodeChildrenContainer newChildren) { + return transformExtension(builder -> builder + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) + .memberTypes(newChildren.getChildren(CHILD_MEMBER_TYPES)) + ); + } + public UnionTypeExtensionDefinition transformExtension(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private Description description; - private List directives = new ArrayList<>(); - private List memberTypes = new ArrayList<>(); + private ImmutableList directives = emptyList(); + private ImmutableList memberTypes = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); private Builder() { } - - private Builder(UnionTypeExtensionDefinition existing) { + private Builder(UnionTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.description = existing.getDescription(); - this.directives = existing.getDirectives(); - this.memberTypes = existing.getMemberTypes(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); + this.memberTypes = ImmutableList.copyOf(existing.getMemberTypes()); this.ignoredChars = existing.getIgnoredChars(); - this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } public Builder sourceLocation(SourceLocation sourceLocation) { @@ -94,7 +102,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -108,13 +116,24 @@ public Builder description(Description description) { return this; } + @Override public Builder directives(List directives) { - this.directives = directives; + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); return this; } public Builder memberTypes(List memberTypes) { - this.memberTypes = memberTypes; + this.memberTypes = ImmutableList.copyOf(memberTypes); + return this; + } + + public Builder memberType(Type memberType) { + this.memberTypes = ImmutableKit.addToList(memberTypes, memberType); return this; } diff --git a/src/main/java/graphql/language/Value.java b/src/main/java/graphql/language/Value.java index 08cfecbe29..ccb477a913 100644 --- a/src/main/java/graphql/language/Value.java +++ b/src/main/java/graphql/language/Value.java @@ -2,8 +2,10 @@ import graphql.PublicApi; +import org.jspecify.annotations.NullMarked; @PublicApi +@NullMarked public interface Value extends Node { } diff --git a/src/main/java/graphql/language/VariableDefinition.java b/src/main/java/graphql/language/VariableDefinition.java index 2026a50327..c119222d47 100644 --- a/src/main/java/graphql/language/VariableDefinition.java +++ b/src/main/java/graphql/language/VariableDefinition.java @@ -1,8 +1,10 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -10,26 +12,31 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; -import static java.util.Collections.emptyMap; @PublicApi -public class VariableDefinition extends AbstractNode implements NamedNode { +public class VariableDefinition extends AbstractNode implements DirectivesContainer, NamedNode { private final String name; private final Type type; private final Value defaultValue; + private final NodeUtil.DirectivesHolder directives; public static final String CHILD_TYPE = "type"; public static final String CHILD_DEFAULT_VALUE = "defaultValue"; + public static final String CHILD_DIRECTIVES = "directives"; @Internal protected VariableDefinition(String name, Type type, Value defaultValue, + List directives, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, @@ -38,6 +45,7 @@ protected VariableDefinition(String name, this.name = name; this.type = type; this.defaultValue = defaultValue; + this.directives = NodeUtil.DirectivesHolder.of(directives); } /** @@ -50,7 +58,7 @@ protected VariableDefinition(String name, public VariableDefinition(String name, Type type, Value defaultValue) { - this(name, type, defaultValue, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, type, defaultValue, emptyList(), null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } /** @@ -61,10 +69,9 @@ public VariableDefinition(String name, */ public VariableDefinition(String name, Type type) { - this(name, type, null, null, new ArrayList<>(), IgnoredChars.EMPTY, emptyMap()); + this(name, type, null, emptyList(), null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } - public Value getDefaultValue() { return defaultValue; } @@ -77,6 +84,26 @@ public Type getType() { return type; } + @Override + public List getDirectives() { + return directives.getDirectives(); + } + + @Override + public Map> getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public List getDirectives(String directiveName) { + return directives.getDirectives(directiveName); + } + + @Override + public boolean hasDirective(String directiveName) { + return directives.hasDirective(directiveName); + } + @Override public List getChildren() { List result = new ArrayList<>(); @@ -84,6 +111,7 @@ public List getChildren() { if (defaultValue != null) { result.add(defaultValue); } + result.addAll(directives.getDirectives()); return result; } @@ -92,6 +120,7 @@ public NodeChildrenContainer getNamedChildren() { return newNodeChildrenContainer() .child(CHILD_TYPE, type) .child(CHILD_DEFAULT_VALUE, defaultValue) + .children(CHILD_DIRECTIVES, directives.getDirectives()) .build(); } @@ -100,6 +129,7 @@ public VariableDefinition withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .type(newChildren.getChildOrNull(CHILD_TYPE)) .defaultValue(newChildren.getChildOrNull(CHILD_DEFAULT_VALUE)) + .directives(newChildren.getChildren(CHILD_DIRECTIVES)) ); } @@ -114,7 +144,7 @@ public boolean isEqualTo(Node o) { VariableDefinition that = (VariableDefinition) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @@ -123,6 +153,7 @@ public VariableDefinition deepCopy() { return new VariableDefinition(name, deepCopy(type), deepCopy(defaultValue), + deepCopy(directives.getDirectives()), getSourceLocation(), getComments(), getIgnoredChars(), @@ -135,6 +166,7 @@ public String toString() { "name='" + name + '\'' + ", type=" + type + ", defaultValue=" + defaultValue + + ", directives=" + directives + '}'; } @@ -166,12 +198,13 @@ public VariableDefinition transform(Consumer builderConsumer) { return builder.build(); } - public static final class Builder implements NodeBuilder { + public static final class Builder implements NodeDirectivesBuilder { private SourceLocation sourceLocation; private String name; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private Type type; private Value defaultValue; + private ImmutableList directives = emptyList(); private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -180,10 +213,11 @@ private Builder() { private Builder(VariableDefinition existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.type = existing.getType(); this.defaultValue = existing.getDefaultValue(); + this.directives = ImmutableList.copyOf(existing.getDirectives()); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); } @@ -199,7 +233,7 @@ public Builder name(String name) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } @@ -213,6 +247,17 @@ public Builder defaultValue(Value defaultValue) { return this; } + @Override + public Builder directives(List directives) { + this.directives = ImmutableList.copyOf(directives); + return this; + } + + public Builder directive(Directive directive) { + this.directives = ImmutableKit.addToList(directives, directive); + return this; + } + public Builder ignoredChars(IgnoredChars ignoredChars) { this.ignoredChars = ignoredChars; return this; @@ -233,6 +278,7 @@ public VariableDefinition build() { name, type, defaultValue, + directives, sourceLocation, comments, ignoredChars, diff --git a/src/main/java/graphql/language/VariableReference.java b/src/main/java/graphql/language/VariableReference.java index bee2650f66..69fd14acf6 100644 --- a/src/main/java/graphql/language/VariableReference.java +++ b/src/main/java/graphql/language/VariableReference.java @@ -1,29 +1,35 @@ package graphql.language; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.emptyMap; import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; import static graphql.language.NodeUtil.assertNewChildrenAreEmpty; -import static java.util.Collections.emptyMap; @PublicApi +@NullMarked public class VariableReference extends AbstractNode implements Value, NamedNode { private final String name; @Internal - protected VariableReference(String name, SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { + protected VariableReference(String name, @Nullable SourceLocation sourceLocation, List comments, IgnoredChars ignoredChars, Map additionalData) { super(sourceLocation, comments, ignoredChars, additionalData); this.name = name; } @@ -34,7 +40,7 @@ protected VariableReference(String name, SourceLocation sourceLocation, List(), IgnoredChars.EMPTY, emptyMap()); + this(name, null, emptyList(), IgnoredChars.EMPTY, emptyMap()); } @Override @@ -44,7 +50,7 @@ public String getName() { @Override public List getChildren() { - return new ArrayList<>(); + return emptyList(); } @Override @@ -59,7 +65,7 @@ public VariableReference withNewChildren(NodeChildrenContainer newChildren) { } @Override - public boolean isEqualTo(Node o) { + public boolean isEqualTo(@Nullable Node o) { if (this == o) { return true; } @@ -69,7 +75,7 @@ public boolean isEqualTo(Node o) { VariableReference that = (VariableReference) o; - return NodeUtil.isEqualTo(this.name, that.name); + return Objects.equals(this.name, that.name); } @Override @@ -89,6 +95,10 @@ public TraversalControl accept(TraverserContext context, NodeVisitor visit return visitor.visitVariableReference(this, context); } + public static VariableReference of(String name) { + return newVariableReference().name(name).build(); + } + public static Builder newVariableReference() { return new Builder(); } @@ -99,9 +109,10 @@ public VariableReference transform(Consumer builderConsumer) { return builder.build(); } + @NullUnmarked public static final class Builder implements NodeBuilder { private SourceLocation sourceLocation; - private List comments = new ArrayList<>(); + private ImmutableList comments = emptyList(); private String name; private IgnoredChars ignoredChars = IgnoredChars.EMPTY; private Map additionalData = new LinkedHashMap<>(); @@ -111,7 +122,7 @@ private Builder() { private Builder(VariableReference existing) { this.sourceLocation = existing.getSourceLocation(); - this.comments = existing.getComments(); + this.comments = ImmutableList.copyOf(existing.getComments()); this.name = existing.getName(); this.ignoredChars = existing.getIgnoredChars(); this.additionalData = new LinkedHashMap<>(existing.getAdditionalData()); @@ -123,7 +134,7 @@ public Builder sourceLocation(SourceLocation sourceLocation) { } public Builder comments(List comments) { - this.comments = comments; + this.comments = ImmutableList.copyOf(comments); return this; } diff --git a/src/main/java/graphql/nextgen/GraphQL.java b/src/main/java/graphql/nextgen/GraphQL.java deleted file mode 100644 index dc6e9b67f2..0000000000 --- a/src/main/java/graphql/nextgen/GraphQL.java +++ /dev/null @@ -1,351 +0,0 @@ -package graphql.nextgen; - -import graphql.ExecutionInput; -import graphql.ExecutionResult; -import graphql.ExecutionResultImpl; -import graphql.Internal; -import graphql.ParseResult; -import graphql.execution.AbortExecutionException; -import graphql.execution.ExecutionId; -import graphql.execution.ExecutionIdProvider; -import graphql.execution.instrumentation.DocumentAndVariables; -import graphql.execution.instrumentation.InstrumentationContext; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.nextgen.Instrumentation; -import graphql.execution.instrumentation.nextgen.InstrumentationCreateStateParameters; -import graphql.execution.instrumentation.nextgen.InstrumentationExecutionParameters; -import graphql.execution.instrumentation.nextgen.InstrumentationValidationParameters; -import graphql.execution.nextgen.DefaultExecutionStrategy; -import graphql.execution.nextgen.Execution; -import graphql.execution.nextgen.ExecutionStrategy; -import graphql.execution.preparsed.NoOpPreparsedDocumentProvider; -import graphql.execution.preparsed.PreparsedDocumentEntry; -import graphql.execution.preparsed.PreparsedDocumentProvider; -import graphql.language.Document; -import graphql.parser.InvalidSyntaxException; -import graphql.parser.Parser; -import graphql.schema.GraphQLSchema; -import graphql.util.LogKit; -import graphql.validation.ValidationError; -import graphql.validation.Validator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.UnaryOperator; - -import static graphql.Assert.assertNotNull; -import static graphql.execution.instrumentation.DocumentAndVariables.newDocumentAndVariables; - -@SuppressWarnings("Duplicates") -@Internal -public class GraphQL { - private static final Logger log = LoggerFactory.getLogger(graphql.GraphQL.class); - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(ExecutionStrategy.class); - - private final GraphQLSchema graphQLSchema; - private final ExecutionStrategy executionStrategy; - private final ExecutionIdProvider idProvider; - private final Instrumentation instrumentation; - private final PreparsedDocumentProvider preparsedDocumentProvider; - - public GraphQL(Builder builder) { - this.graphQLSchema = builder.graphQLSchema; - this.executionStrategy = builder.executionStrategy; - this.idProvider = builder.idProvider; - this.preparsedDocumentProvider = builder.preparsedDocumentProvider; - this.instrumentation = builder.instrumentation; - } - - /** - * Executes the graphql query using the provided input object builder - *

    - * This will return a completed {@link ExecutionResult} - * which is the result of executing the provided query. - * - * @param executionInputBuilder {@link ExecutionInput.Builder} - * - * @return an {@link ExecutionResult} which can include errors - */ - public ExecutionResult execute(ExecutionInput.Builder executionInputBuilder) { - return executeAsync(executionInputBuilder.build()).join(); - } - - /** - * Executes the graphql query using the provided input object builder - *

    - * This will return a completed {@link ExecutionResult} - * which is the result of executing the provided query. - *

    - * This allows a lambda style like : - *

    -     * {@code
    -     *    ExecutionResult result = graphql.execute(input -> input.query("{hello}").root(startingObj).context(contextObj));
    -     * }
    -     * 
    - * - * @param builderFunction a function that is given a {@link ExecutionInput.Builder} - * - * @return a promise to an {@link ExecutionResult} which can include errors - */ - public CompletableFuture execute(UnaryOperator builderFunction) { - return executeAsync(builderFunction.apply(ExecutionInput.newExecutionInput()).build()); - } - - /** - * Executes the graphql query using the provided input object - *

    - * This will return a completed {@link ExecutionResult} - * which is the result of executing the provided query. - * - * @param executionInput {@link ExecutionInput} - * - * @return a promise to an {@link ExecutionResult} which can include errors - */ - public ExecutionResult execute(ExecutionInput executionInput) { - return executeAsync(executionInput).join(); - } - - /** - * Executes the graphql query using the provided input object builder - *

    - * This will return a promise (aka {@link CompletableFuture}) to provide a {@link ExecutionResult} - * which is the result of executing the provided query. - * - * @param executionInputBuilder {@link ExecutionInput.Builder} - * - * @return a promise to an {@link ExecutionResult} which can include errors - */ - public CompletableFuture executeAsync(ExecutionInput.Builder executionInputBuilder) { - return executeAsync(executionInputBuilder.build()); - } - - /** - * Executes the graphql query using the provided input object builder - *

    - * This will return a promise (aka {@link CompletableFuture}) to provide a {@link ExecutionResult} - * which is the result of executing the provided query. - *

    - * This allows a lambda style like : - *

    -     * {@code
    -     *    ExecutionResult result = graphql.executeAsync(input -> input.query("{hello}").root(startingObj).context(contextObj));
    -     * }
    -     * 
    - * - * @param builderFunction a function that is given a {@link ExecutionInput.Builder} - * - * @return a promise to an {@link ExecutionResult} which can include errors - */ - public CompletableFuture executeAsync(UnaryOperator builderFunction) { - return executeAsync(builderFunction.apply(ExecutionInput.newExecutionInput()).build()); - } - - /** - * Executes the graphql query using the provided input object - *

    - * This will return a promise (aka {@link CompletableFuture}) to provide a {@link ExecutionResult} - * which is the result of executing the provided query. - * - * @param executionInput {@link ExecutionInput} - * - * @return a promise to an {@link ExecutionResult} which can include errors - */ - public CompletableFuture executeAsync(ExecutionInput executionInput) { - try { - logNotSafe.debug("Executing request. operation name: '{}'. query: '{}'. variables '{}'", executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); - - InstrumentationState instrumentationState = instrumentation.createState(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInput)); - - InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema, instrumentationState); - executionInput = instrumentation.instrumentExecutionInput(executionInput, inputInstrumentationParameters); - - InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema, instrumentationState); - InstrumentationContext executionInstrumentation = instrumentation.beginExecution(instrumentationParameters); - - GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters); - - CompletableFuture executionResult = parseValidateAndExecute(executionInput, graphQLSchema, instrumentationState); - // - // finish up instrumentation - executionResult = executionResult.whenComplete(executionInstrumentation::onCompleted); - // - // allow instrumentation to tweak the result - executionResult = executionResult.thenApply(result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters)); - return executionResult; - } catch (AbortExecutionException abortException) { - return CompletableFuture.completedFuture(abortException.toExecutionResult()); - } - } - - private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - AtomicReference executionInputRef = new AtomicReference<>(executionInput); - Function computeFunction = transformedInput -> { - // if they change the original query in the pre-parser, then we want to see it downstream from then on - executionInputRef.set(transformedInput); - return parseAndValidate(executionInputRef.get(), graphQLSchema, instrumentationState); - }; - PreparsedDocumentEntry preparsedDoc = preparsedDocumentProvider.getDocument(executionInput,computeFunction); - if (preparsedDoc.hasErrors()) { - return CompletableFuture.completedFuture(new ExecutionResultImpl(preparsedDoc.getErrors())); - } - return execute(executionInputRef.get(), preparsedDoc.getDocument(), graphQLSchema, instrumentationState); - } - - private PreparsedDocumentEntry parseAndValidate(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - logNotSafe.debug("Parsing query: '{}'...", executionInput.getQuery()); - ParseResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); - if (parseResult.isFailure()) { - logNotSafe.warn("Query failed to parse : '{}'", executionInput.getQuery()); - return new PreparsedDocumentEntry(parseResult.getException().toInvalidSyntaxError()); - } else { - final Document document = parseResult.getDocument(); - - logNotSafe.debug("Validating query: '{}'", executionInput.getQuery()); - final List errors = validate(executionInput, document, graphQLSchema, instrumentationState); - if (!errors.isEmpty()) { - logNotSafe.warn("Query failed to validate : '{}'", executionInput.getQuery()); - return new PreparsedDocumentEntry(errors); - } - - return new PreparsedDocumentEntry(document); - } - } - - private ParseResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema, instrumentationState); - InstrumentationContext parseInstrumentation = instrumentation.beginParse(parameters); - - Parser parser = new Parser(); - Document document; - DocumentAndVariables documentAndVariables; - try { - document = parser.parseDocument(executionInput.getQuery()); - documentAndVariables = newDocumentAndVariables() - .document(document).variables(executionInput.getVariables()).build(); - documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters); - } catch (InvalidSyntaxException e) { - parseInstrumentation.onCompleted(null, e); - return ParseResult.ofError(e); - } - - parseInstrumentation.onCompleted(documentAndVariables.getDocument(), null); - return ParseResult.of(documentAndVariables); - } - - private List validate(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - InstrumentationContext> validationCtx = instrumentation.beginValidation(new InstrumentationValidationParameters(executionInput, document, graphQLSchema, instrumentationState)); - - Validator validator = new Validator(); - List validationErrors = validator.validateDocument(graphQLSchema, document); - - validationCtx.onCompleted(validationErrors, null); - return validationErrors; - } - - private CompletableFuture execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { - String query = executionInput.getQuery(); - String operationName = executionInput.getOperationName(); - Object context = executionInput.getContext(); - - Execution execution = new Execution(); - ExecutionId executionId = idProvider.provide(query, operationName, context); - - logNotSafe.debug("Executing '{}'. operation name: '{}'. query: '{}'. variables '{}'", executionId, executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); - CompletableFuture future = execution.execute(executionStrategy, document, graphQLSchema, executionId, executionInput, instrumentationState); - future = future.whenComplete((result, throwable) -> { - if (throwable != null) { - log.error(String.format("Execution '%s' threw exception when executing : query : '%s'. variables '%s'", executionId, executionInput.getQuery(), executionInput.getVariables()), throwable); - } else { - int errorCount = result.getErrors().size(); - if (errorCount > 0) { - log.debug("Execution '{}' completed with '{}' errors", executionId, errorCount); - } else { - log.debug("Execution '{}' completed with zero errors", executionId); - } - } - }); - return future; - } - - /** - * Helps you build a GraphQL object ready to execute queries - * - * @param graphQLSchema the schema to use - * - * @return a builder of GraphQL objects - */ - public static Builder newGraphQL(GraphQLSchema graphQLSchema) { - return new Builder(graphQLSchema); - } - - /** - * This helps you transform the current GraphQL object into another one by starting a builder with all - * the current values and allows you to transform it how you want. - * - * @param builderConsumer the consumer code that will be given a builder to transform - * - * @return a new GraphQL object based on calling build on that builder - */ - public GraphQL transform(Consumer builderConsumer) { - Builder builder = new Builder(this); - builderConsumer.accept(builder); - return builder.build(); - } - - - public static class Builder { - private GraphQLSchema graphQLSchema; - private ExecutionStrategy executionStrategy = new DefaultExecutionStrategy(); - private ExecutionIdProvider idProvider = ExecutionIdProvider.DEFAULT_EXECUTION_ID_PROVIDER; - private Instrumentation instrumentation = new Instrumentation() { - }; - private PreparsedDocumentProvider preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE; - - - public Builder(GraphQLSchema graphQLSchema) { - this.graphQLSchema = graphQLSchema; - } - - public Builder(GraphQL graphQL) { - this.graphQLSchema = graphQL.graphQLSchema; - this.executionStrategy = graphQL.executionStrategy; - this.idProvider = graphQL.idProvider; - this.instrumentation = graphQL.instrumentation; - } - - public Builder schema(GraphQLSchema graphQLSchema) { - this.graphQLSchema = assertNotNull(graphQLSchema, "GraphQLSchema must be non null"); - return this; - } - - public Builder executionStrategy(ExecutionStrategy executionStrategy) { - this.executionStrategy = assertNotNull(executionStrategy, "ExecutionStrategy must be non null"); - return this; - } - - public Builder instrumentation(Instrumentation instrumentation) { - this.instrumentation = assertNotNull(instrumentation, "Instrumentation must be non null"); - return this; - } - - public Builder preparsedDocumentProvider(PreparsedDocumentProvider preparsedDocumentProvider) { - this.preparsedDocumentProvider = assertNotNull(preparsedDocumentProvider, "PreparsedDocumentProvider must be non null"); - return this; - } - - public Builder executionIdProvider(ExecutionIdProvider executionIdProvider) { - this.idProvider = assertNotNull(executionIdProvider, "ExecutionIdProvider must be non null"); - return this; - } - - public GraphQL build() { - assertNotNull(graphQLSchema, "graphQLSchema must be non null"); - return new GraphQL(this); - } - } -} diff --git a/src/main/java/graphql/nextgen/package-info.java b/src/main/java/graphql/nextgen/package-info.java deleted file mode 100644 index 8c994937fd..0000000000 --- a/src/main/java/graphql/nextgen/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * WARNING: All code in this package is a work in progress for a new execution engine. - */ -package graphql.nextgen; diff --git a/src/main/java/graphql/normalized/ArgumentMaker.java b/src/main/java/graphql/normalized/ArgumentMaker.java new file mode 100644 index 0000000000..c6ad4868ba --- /dev/null +++ b/src/main/java/graphql/normalized/ArgumentMaker.java @@ -0,0 +1,110 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.Internal; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryAppliedDirectiveArgument; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Argument; +import graphql.language.ArrayValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.Value; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +import static graphql.collect.ImmutableKit.emptyMap; +import static graphql.collect.ImmutableKit.map; +import static graphql.language.Argument.newArgument; + +/** + * This class is a peer class and broken out of {@link ExecutableNormalizedOperationToAstCompiler} to deal with + * argument value making. + */ +@Internal +class ArgumentMaker { + + static List createArguments(ExecutableNormalizedField executableNormalizedField, + VariableAccumulator variableAccumulator) { + ImmutableList.Builder result = ImmutableList.builder(); + ImmutableMap normalizedArguments = executableNormalizedField.getNormalizedArguments(); + for (String argName : normalizedArguments.keySet()) { + NormalizedInputValue normalizedInputValue = normalizedArguments.get(argName); + Value value = argValue(executableNormalizedField, null, argName, normalizedInputValue, variableAccumulator); + Argument argument = newArgument() + .name(argName) + .value(value) + .build(); + result.add(argument); + } + return result.build(); + } + + static List createDirectiveArguments(ExecutableNormalizedField executableNormalizedField, + QueryDirectives queryDirectives, + QueryAppliedDirective queryAppliedDirective, + VariableAccumulator variableAccumulator) { + + Map argValueMap = queryDirectives.getNormalizedInputValueByImmediateAppliedDirectives().getOrDefault(queryAppliedDirective, emptyMap()); + + ImmutableList.Builder result = ImmutableList.builder(); + for (QueryAppliedDirectiveArgument directiveArgument : queryAppliedDirective.getArguments()) { + String argName = directiveArgument.getName(); + if (argValueMap != null && argValueMap.containsKey(argName)) { + NormalizedInputValue normalizedInputValue = argValueMap.get(argName); + Value value = argValue(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue, variableAccumulator); + Argument argument = newArgument() + .name(argName) + .value(value) + .build(); + result.add(argument); + } + } + return result.build(); + } + + @SuppressWarnings("unchecked") + private static Value argValue(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + @Nullable Object value, + VariableAccumulator variableAccumulator) { + if (value instanceof List) { + ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); + arrayValue.values(map((List) value, val -> argValue(executableNormalizedField, queryAppliedDirective, argName, val, variableAccumulator))); + return arrayValue.build(); + } + if (value instanceof Map) { + ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); + Map map = (Map) value; + for (String fieldName : map.keySet()) { + Value fieldValue = argValue(executableNormalizedField, queryAppliedDirective, argName, (NormalizedInputValue) map.get(fieldName), variableAccumulator); + objectValue.objectField(ObjectField.newObjectField().name(fieldName).value(fieldValue).build()); + } + return objectValue.build(); + } + if (value == null) { + return NullValue.newNullValue().build(); + } + return (Value) value; + } + + @NonNull + private static Value argValue(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + NormalizedInputValue normalizedInputValue, + VariableAccumulator variableAccumulator) { + if (variableAccumulator.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue)) { + VariableValueWithDefinition variableWithDefinition = variableAccumulator.accumulateVariable(normalizedInputValue); + return variableWithDefinition.getVariableReference(); + } else { + return argValue(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue.getValue(), variableAccumulator); + } + } +} diff --git a/src/main/java/graphql/normalized/ENFMerger.java b/src/main/java/graphql/normalized/ENFMerger.java new file mode 100644 index 0000000000..5150eee5a4 --- /dev/null +++ b/src/main/java/graphql/normalized/ENFMerger.java @@ -0,0 +1,197 @@ +package graphql.normalized; + +import graphql.Internal; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.AstComparator; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; + +@Internal +public class ENFMerger { + + public static void merge( + ExecutableNormalizedField parent, + List childrenWithSameResultKey, + GraphQLSchema schema, + boolean deferSupport + ) { + // they have all the same result key + // we can only merge the fields if they have the same field name + arguments + all children are the same + List> possibleGroupsToMerge = new ArrayList<>(); + for (ExecutableNormalizedField field : childrenWithSameResultKey) { + boolean addToGroup = false; + overPossibleGroups: + for (Set group : possibleGroupsToMerge) { + for (ExecutableNormalizedField fieldInGroup : group) { + if (field.getFieldName().equals(Introspection.TypeNameMetaFieldDef.getName())) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + if (field.getFieldName().equals(fieldInGroup.getFieldName()) && + sameArguments(field.getAstArguments(), fieldInGroup.getAstArguments()) + && isFieldInSharedInterface(field, fieldInGroup, schema) + ) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + } + } + if (!addToGroup) { + LinkedHashSet group = new LinkedHashSet<>(); + group.add(field); + possibleGroupsToMerge.add(group); + } + } + for (Set groupOfFields : possibleGroupsToMerge) { + // for each group we check if it could be merged + List> listOfChildrenForGroup = new ArrayList<>(); + for (ExecutableNormalizedField fieldInGroup : groupOfFields) { + Set childrenSets = new LinkedHashSet<>(fieldInGroup.getChildren()); + listOfChildrenForGroup.add(childrenSets); + } + boolean mergeable = areFieldSetsTheSame(listOfChildrenForGroup); + if (mergeable) { + Set mergedObjects = new LinkedHashSet<>(); + groupOfFields.forEach(f -> mergedObjects.addAll(f.getObjectTypeNames())); + // patching the first one to contain more objects, remove all others + Iterator iterator = groupOfFields.iterator(); + ExecutableNormalizedField first = iterator.next(); + + while (iterator.hasNext()) { + ExecutableNormalizedField next = iterator.next(); + parent.getChildren().remove(next); + + if (deferSupport) { + // Move defer executions from removed field into the merged field's entry + first.addDeferredExecutions(next.getDeferredExecutions()); + } + } + first.setObjectTypeNames(mergedObjects); + } + } + } + + private static boolean isFieldInSharedInterface(ExecutableNormalizedField fieldOne, ExecutableNormalizedField fieldTwo, GraphQLSchema schema) { + + /* + * we can get away with only checking one of the object names, because all object names in one ENF are guaranteed to be the same field. + * This comes from how the ENFs are created in the factory before. + */ + String firstObject = fieldOne.getSingleObjectTypeName(); + String secondObject = fieldTwo.getSingleObjectTypeName(); + // we know that the field names are the same, therefore we can just take the first one + String fieldName = fieldOne.getFieldName(); + + GraphQLObjectType objectTypeOne = schema.getObjectType(firstObject); + GraphQLObjectType objectTypeTwo = schema.getObjectType(secondObject); + List interfacesOne = (List) objectTypeOne.getInterfaces(); + List interfacesTwo = (List) objectTypeTwo.getInterfaces(); + + Optional firstInterfaceFound = interfacesOne.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + Optional secondInterfaceFound = interfacesTwo.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + if (!firstInterfaceFound.isPresent() || !secondInterfaceFound.isPresent()) { + return false; + } + return firstInterfaceFound.get().getName().equals(secondInterfaceFound.get().getName()); + } + + + private static boolean areFieldSetsTheSame(List> listOfSets) { + if (listOfSets.size() == 0 || listOfSets.size() == 1) { + return true; + } + Set first = listOfSets.get(0); + Iterator> iterator = listOfSets.iterator(); + iterator.next(); + while (iterator.hasNext()) { + Set set = iterator.next(); + if (!compareTwoFieldSets(first, set)) { + return false; + } + } + List> nextLevel = new ArrayList<>(); + for (Set set : listOfSets) { + for (ExecutableNormalizedField fieldInSet : set) { + nextLevel.add(new LinkedHashSet<>(fieldInSet.getChildren())); + } + } + return areFieldSetsTheSame(nextLevel); + } + + private static boolean compareTwoFieldSets(Set setOne, Set setTwo) { + if (setOne.size() != setTwo.size()) { + return false; + } + for (ExecutableNormalizedField field : setOne) { + if (!isContained(field, setTwo)) { + return false; + } + } + return true; + } + + private static boolean isContained(ExecutableNormalizedField searchFor, Set set) { + for (ExecutableNormalizedField field : set) { + if (compareWithoutChildren(searchFor, field)) { + return true; + } + } + return false; + } + + private static boolean compareWithoutChildren(ExecutableNormalizedField one, ExecutableNormalizedField two) { + + if (!one.getObjectTypeNames().equals(two.getObjectTypeNames())) { + return false; + } + if (!Objects.equals(one.getAlias(), two.getAlias())) { + return false; + } + if (!Objects.equals(one.getFieldName(), two.getFieldName())) { + return false; + } + if (!sameArguments(one.getAstArguments(), two.getAstArguments())) { + return false; + } + return true; + } + + // copied from graphql.validation.rules.OverlappingFieldsCanBeMerged + private static boolean sameArguments(List arguments1, List arguments2) { + if (arguments1.size() != arguments2.size()) { + return false; + } + for (Argument argument : arguments1) { + Argument matchedArgument = findArgumentByName(argument.getName(), arguments2); + if (matchedArgument == null) { + return false; + } + if (!AstComparator.sameValue(argument.getValue(), matchedArgument.getValue())) { + return false; + } + } + return true; + } + + private static Argument findArgumentByName(String name, List arguments) { + for (Argument argument : arguments) { + if (argument.getName().equals(name)) { + return argument; + } + } + return null; + } + +} diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedField.java b/src/main/java/graphql/normalized/ExecutableNormalizedField.java new file mode 100644 index 0000000000..aefa115206 --- /dev/null +++ b/src/main/java/graphql/normalized/ExecutableNormalizedField.java @@ -0,0 +1,695 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.ExperimentalApi; +import graphql.Internal; +import graphql.Mutable; +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.normalized.incremental.NormalizedDeferredExecution; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnionType; +import graphql.util.FpKit; +import graphql.util.MutableRef; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertTrue; +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; + +/** + * An {@link ExecutableNormalizedField} represents a field in an executable graphql operation. Its models what + * could be executed during a given operation. + *

    + * This class is intentionally mutable for performance reasons since building immutable parent child + * objects is too expensive. + */ +@PublicApi +@Mutable +public class ExecutableNormalizedField { + private final String alias; + private final ImmutableMap normalizedArguments; + private final LinkedHashMap resolvedArguments; + private final ImmutableList astArguments; + + // Mutable List on purpose: it is modified after creation + private final LinkedHashSet objectTypeNames; + private final ArrayList children; + private ExecutableNormalizedField parent; + + private final String fieldName; + private final int level; + + // Mutable List on purpose: it is modified after creation + private final LinkedHashSet deferredExecutions; + + private ExecutableNormalizedField(Builder builder) { + this.alias = builder.alias; + this.resolvedArguments = builder.resolvedArguments; + this.normalizedArguments = builder.normalizedArguments; + this.astArguments = builder.astArguments; + this.objectTypeNames = builder.objectTypeNames; + this.fieldName = assertNotNull(builder.fieldName); + this.children = builder.children; + this.level = builder.level; + this.parent = builder.parent; + this.deferredExecutions = builder.deferredExecutions; + } + + /** + * Determines whether this {@link ExecutableNormalizedField} needs a fragment to select the field. However, it considers the parent + * output type when determining whether it needs a fragment. + *

    + * Consider the following schema + * + *

    +     * interface Animal {
    +     *     name: String
    +     *     parent: Animal
    +     * }
    +     * type Cat implements Animal {
    +     *     name: String
    +     *     parent: Cat
    +     * }
    +     * type Dog implements Animal {
    +     *     name: String
    +     *     parent: Dog
    +     *     isGoodBoy: Boolean
    +     * }
    +     * type Query {
    +     *     animal: Animal
    +     * }
    +     * 
    + *

    + * and the following query + * + *

    +     * {
    +     *     animal {
    +     *         parent {
    +     *             name
    +     *         }
    +     *     }
    +     * }
    +     * 
    + *

    + * Then we would get the following {@link ExecutableNormalizedOperation} + * + *

    +     * -Query.animal: Animal
    +     * --[Cat, Dog].parent: Cat, Dog
    +     * ---[Cat, Dog].name: String
    +     * 
    + *

    + * If we simply checked the {@link #parent}'s {@link #getFieldDefinitions(GraphQLSchema)} that would + * point us to {@code Cat.parent} and {@code Dog.parent} whose output types would incorrectly answer + * our question whether this is conditional? + *

    + * We MUST consider that the output type of the {@code parent} field is {@code Animal} and + * NOT {@code Cat} or {@code Dog} as their respective implementations would say. + * + * @param schema - the graphql schema in play + * + * @return true if the field is conditional + */ + public boolean isConditional(@NonNull GraphQLSchema schema) { + if (parent == null) { + return false; + } + + for (GraphQLInterfaceType commonParentOutputInterface : parent.getInterfacesCommonToAllOutputTypes(schema)) { + List implementations = schema.getImplementations(commonParentOutputInterface); + // __typename + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && implementations.size() == objectTypeNames.size()) { + return false; + } + if (commonParentOutputInterface.getField(fieldName) == null) { + continue; + } + if (implementations.size() == objectTypeNames.size()) { + return false; + } + } + + // __typename is the only field in a union type that CAN be NOT conditional + GraphQLFieldDefinition parentFieldDef = parent.getOneFieldDefinition(schema); + if (unwrapAll(parentFieldDef.getType()) instanceof GraphQLUnionType) { + GraphQLUnionType parentOutputTypeAsUnion = (GraphQLUnionType) unwrapAll(parentFieldDef.getType()); + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && objectTypeNames.size() == parentOutputTypeAsUnion.getTypes().size()) { + return false; // Not conditional + } + } + + // This means there is no Union or Interface which could serve as unconditional parent + if (objectTypeNames.size() > 1) { + return true; // Conditional + } + if (parent.objectTypeNames.size() > 1) { + return true; + } + + GraphQLObjectType oneObjectType = (GraphQLObjectType) schema.getType(objectTypeNames.iterator().next()); + return unwrapAll(parentFieldDef.getType()) != oneObjectType; + } + + public boolean hasChildren() { + return children.size() > 0; + } + + public GraphQLOutputType getType(GraphQLSchema schema) { + List fieldDefinitions = getFieldDefinitions(schema); + Set fieldTypes = fieldDefinitions.stream().map(fd -> simplePrint(fd.getType())).collect(toSet()); + assertTrue(fieldTypes.size() == 1, "More than one type ... use getTypes"); + return fieldDefinitions.get(0).getType(); + } + + public List getTypes(GraphQLSchema schema) { + return ImmutableKit.map(getFieldDefinitions(schema), fd -> fd.getType()); + } + + public void forEachFieldDefinition(GraphQLSchema schema, Consumer consumer) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + consumer.accept(fieldDefinition); + return; + } + + for (String objectTypeName : objectTypeNames) { + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + consumer.accept(assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName)); + } + } + + public List getFieldDefinitions(GraphQLSchema schema) { + ImmutableList.Builder builder = ImmutableList.builder(); + forEachFieldDefinition(schema, builder::add); + return builder.build(); + } + + /** + * This is NOT public as it is not recommended usage. + *

    + * Internally there are cases where we know it is safe to use this, so this exists. + */ + private GraphQLFieldDefinition getOneFieldDefinition(GraphQLSchema schema) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + return fieldDefinition; + } + + String objectTypeName = objectTypeNames.iterator().next(); + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + return assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName); + } + + private static GraphQLFieldDefinition resolveIntrospectionField(GraphQLSchema schema, Set objectTypeNames, String fieldName) { + if (fieldName.equals(schema.getIntrospectionTypenameFieldDefinition().getName())) { + return schema.getIntrospectionTypenameFieldDefinition(); + } else if (objectTypeNames.size() == 1 && objectTypeNames.iterator().next().equals(schema.getQueryType().getName())) { + if (fieldName.equals(schema.getIntrospectionSchemaFieldDefinition().getName())) { + return schema.getIntrospectionSchemaFieldDefinition(); + } else if (fieldName.equals(schema.getIntrospectionTypeFieldDefinition().getName())) { + return schema.getIntrospectionTypeFieldDefinition(); + } + } + return null; + } + + @Internal + public void addObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void setObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.clear(); + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void addChild(ExecutableNormalizedField executableNormalizedField) { + this.children.add(executableNormalizedField); + } + + @Internal + public void clearChildren() { + this.children.clear(); + } + + @Internal + public void setDeferredExecutions(Collection deferredExecutions) { + this.deferredExecutions.clear(); + this.deferredExecutions.addAll(deferredExecutions); + } + + public void addDeferredExecutions(Collection deferredExecutions) { + this.deferredExecutions.addAll(deferredExecutions); + } + + /** + * All merged fields have the same name so this is the name of the {@link ExecutableNormalizedField}. + *

    + * WARNING: This is not always the key in the execution result, because of possible field aliases. + * + * @return the name of this {@link ExecutableNormalizedField} + * + * @see #getResultKey() + * @see #getAlias() + */ + public String getName() { + return getFieldName(); + } + + /** + * @return the same value as {@link #getName()} + * + * @see #getResultKey() + * @see #getAlias() + */ + public String getFieldName() { + return fieldName; + } + + /** + * Returns the result key of this {@link ExecutableNormalizedField} within the overall result. + * This is either a field alias or the value of {@link #getName()} + * + * @return the result key for this {@link ExecutableNormalizedField}. + * + * @see #getName() + */ + public String getResultKey() { + if (alias != null) { + return alias; + } + return getName(); + } + + /** + * @return the field alias used or null if there is none + * + * @see #getResultKey() + * @see #getName() + */ + public String getAlias() { + return alias; + } + + /** + * @return a list of the {@link Argument}s on the field + */ + public ImmutableList getAstArguments() { + return astArguments; + } + + /** + * Returns an argument value as a {@link NormalizedInputValue} which contains its type name and its current value + * + * @param name the name of the argument + * + * @return an argument value + */ + public NormalizedInputValue getNormalizedArgument(String name) { + return normalizedArguments.get(name); + } + + /** + * @return a map of all the arguments in {@link NormalizedInputValue} form + */ + public ImmutableMap getNormalizedArguments() { + return normalizedArguments; + } + + /** + * @return a map of the resolved argument values + */ + public LinkedHashMap getResolvedArguments() { + return resolvedArguments; + } + + + /** + * A {@link ExecutableNormalizedField} can sometimes (for non-concrete types like interfaces and unions) + * have more than one object type it could be when executed. There is no way to know what it will be until + * the field is executed over data and the type is resolved via a {@link graphql.schema.TypeResolver}. + *

    + * This method returns all the possible types a field can be which is one or more {@link GraphQLObjectType} + * names. + *

    + * Warning: This returns a Mutable Set. No defensive copy is made for performance reasons. + * + * @return a set of the possible type names this field could be. + */ + public Set getObjectTypeNames() { + return objectTypeNames; + } + + + /** + * This returns the first entry in {@link #getObjectTypeNames()}. Sometimes you know a field cant be more than one + * type and this method is a shortcut one to help you. + * + * @return the first entry from + */ + public String getSingleObjectTypeName() { + return objectTypeNames.iterator().next(); + } + + /** + * @return a helper method show field details + */ + public String printDetails() { + StringBuilder result = new StringBuilder(); + if (getAlias() != null) { + result.append(getAlias()).append(": "); + } + return result + objectTypeNamesToString() + "." + fieldName; + } + + /** + * @return a helper method to show the object types names as a string + */ + public String objectTypeNamesToString() { + if (objectTypeNames.size() == 1) { + return objectTypeNames.iterator().next(); + } else { + return objectTypeNames.toString(); + } + } + + /** + * This returns the list of the result keys (see {@link #getResultKey()} that lead from this field upwards to + * its parent field + * + * @return a list of the result keys from this {@link ExecutableNormalizedField} to the top of the operation via parent fields + */ + public List getListOfResultKeys() { + LinkedList list = new LinkedList<>(); + ExecutableNormalizedField current = this; + while (current != null) { + list.addFirst(current.getResultKey()); + current = current.parent; + } + return list; + } + + /** + * @return the children of the {@link ExecutableNormalizedField} + */ + public List getChildren() { + return children; + } + + /** + * Returns the list of child fields that would have the same result key + * + * @param resultKey the result key to check + * + * @return a list of all direct {@link ExecutableNormalizedField} children with the specified result key + */ + public List getChildrenWithSameResultKey(String resultKey) { + return FpKit.filterList(children, child -> child.getResultKey().equals(resultKey)); + } + + public List getChildren(int includingRelativeLevel) { + assertTrue(includingRelativeLevel >= 1, "relative level must be >= 1"); + List result = new ArrayList<>(); + + this.getChildren().forEach(child -> { + traverseImpl(child, result::add, 1, includingRelativeLevel); + }); + return result; + } + + /** + * This returns the child fields that can be used if the object is of the specified object type + * + * @param objectTypeName the object type + * + * @return a list of child fields that would apply to that object type + */ + public List getChildren(String objectTypeName) { + return children.stream() + .filter(cld -> cld.objectTypeNames.contains(objectTypeName)) + .collect(toList()); + } + + /** + * the level of the {@link ExecutableNormalizedField} in the operation hierarchy with top level fields + * starting at 1 + * + * @return the level of the {@link ExecutableNormalizedField} in the operation hierarchy + */ + public int getLevel() { + return level; + } + + /** + * @return the parent of this {@link ExecutableNormalizedField} or null if it's a top level field + */ + public ExecutableNormalizedField getParent() { + return parent; + } + + /** + * @return the {@link NormalizedDeferredExecution}s associated with this {@link ExecutableNormalizedField}. + * + * @see NormalizedDeferredExecution + */ + @ExperimentalApi + public LinkedHashSet getDeferredExecutions() { + return deferredExecutions; + } + + @Internal + public void replaceParent(ExecutableNormalizedField newParent) { + this.parent = newParent; + } + + + @Override + public String toString() { + return "NormalizedField{" + + objectTypeNamesToString() + "." + fieldName + + ", alias=" + alias + + ", level=" + level + + ", children=" + children.stream().map(ExecutableNormalizedField::toString).collect(joining("\n")) + + '}'; + } + + + /** + * Traverse from this {@link ExecutableNormalizedField} down into itself and all of its children + * + * @param consumer the callback for each {@link ExecutableNormalizedField} in the hierarchy. + */ + public void traverseSubTree(Consumer consumer) { + this.getChildren().forEach(child -> { + traverseImpl(child, consumer, 1, Integer.MAX_VALUE); + }); + } + + private void traverseImpl(ExecutableNormalizedField root, + Consumer consumer, + int curRelativeLevel, + int abortAfter) { + if (curRelativeLevel > abortAfter) { + return; + } + consumer.accept(root); + root.getChildren().forEach(child -> { + traverseImpl(child, consumer, curRelativeLevel + 1, abortAfter); + }); + } + + /** + * This tries to find interfaces common to all the field output types. + *

    + * i.e. goes through {@link #getFieldDefinitions(GraphQLSchema)} and finds interfaces that + * all the field's unwrapped output types are assignable to. + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + private Set getInterfacesCommonToAllOutputTypes(GraphQLSchema schema) { + // Shortcut for performance + if (objectTypeNames.size() == 1) { + var fieldDef = getOneFieldDefinition(schema); + var outputType = unwrapAll(fieldDef.getType()); + + if (outputType instanceof GraphQLObjectType) { + return new LinkedHashSet<>((List) ((GraphQLObjectType) outputType).getInterfaces()); + } else if (outputType instanceof GraphQLInterfaceType) { + var result = new LinkedHashSet<>((List) ((GraphQLInterfaceType) outputType).getInterfaces()); + result.add(outputType); + return result; + } else { + return Collections.emptySet(); + } + } + + MutableRef> commonInterfaces = new MutableRef<>(); + forEachFieldDefinition(schema, (fieldDef) -> { + var outputType = unwrapAll(fieldDef.getType()); + + List outputTypeInterfaces; + if (outputType instanceof GraphQLObjectType) { + outputTypeInterfaces = (List) ((GraphQLObjectType) outputType).getInterfaces(); + } else if (outputType instanceof GraphQLInterfaceType) { + // This interface and superinterfaces + List superInterfaces = ((GraphQLInterfaceType) outputType).getInterfaces(); + + outputTypeInterfaces = new ArrayList<>(superInterfaces.size() + 1); + outputTypeInterfaces.add((GraphQLInterfaceType) outputType); + + if (!superInterfaces.isEmpty()) { + outputTypeInterfaces.addAll((List) superInterfaces); + } + } else { + outputTypeInterfaces = Collections.emptyList(); + } + + if (commonInterfaces.value == null) { + commonInterfaces.value = new LinkedHashSet<>(outputTypeInterfaces); + } else { + commonInterfaces.value.retainAll(outputTypeInterfaces); + } + }); + + return commonInterfaces.value; + } + + /** + * @return a {@link Builder} of {@link ExecutableNormalizedField}s + */ + public static Builder newNormalizedField() { + return new Builder(); + } + + /** + * Allows this {@link ExecutableNormalizedField} to be transformed via a {@link Builder} consumer callback + * + * @param builderConsumer the consumer given a builder + * + * @return a new transformed {@link ExecutableNormalizedField} + */ + public ExecutableNormalizedField transform(Consumer builderConsumer) { + Builder builder = new Builder(this); + builderConsumer.accept(builder); + return builder.build(); + } + + public static class Builder { + private LinkedHashSet objectTypeNames = new LinkedHashSet<>(); + private String fieldName; + private ArrayList children = new ArrayList<>(); + private int level; + private ExecutableNormalizedField parent; + private String alias; + private ImmutableMap normalizedArguments = ImmutableKit.emptyMap(); + private LinkedHashMap resolvedArguments = new LinkedHashMap<>(); + private ImmutableList astArguments = ImmutableKit.emptyList(); + + private LinkedHashSet deferredExecutions = new LinkedHashSet<>(); + + private Builder() { + } + + private Builder(ExecutableNormalizedField existing) { + this.alias = existing.alias; + this.normalizedArguments = existing.normalizedArguments; + this.astArguments = existing.astArguments; + this.resolvedArguments = existing.resolvedArguments; + this.objectTypeNames = new LinkedHashSet<>(existing.getObjectTypeNames()); + this.fieldName = existing.getFieldName(); + this.children = new ArrayList<>(existing.children); + this.level = existing.getLevel(); + this.parent = existing.getParent(); + this.deferredExecutions = existing.getDeferredExecutions(); + } + + public Builder clearObjectTypesNames() { + this.objectTypeNames.clear(); + return this; + } + + public Builder objectTypeNames(List objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + return this; + } + + public Builder alias(String alias) { + this.alias = alias; + return this; + } + + public Builder normalizedArguments(@Nullable Map arguments) { + this.normalizedArguments = arguments == null ? ImmutableKit.emptyMap() : ImmutableMap.copyOf(arguments); + return this; + } + + public Builder resolvedArguments(@Nullable Map arguments) { + this.resolvedArguments = arguments == null ? new LinkedHashMap<>() : new LinkedHashMap<>(arguments); + return this; + } + + public Builder astArguments(@NonNull List astArguments) { + this.astArguments = ImmutableList.copyOf(astArguments); + return this; + } + + + public Builder fieldName(String fieldName) { + this.fieldName = fieldName; + return this; + } + + + public Builder children(List children) { + this.children.clear(); + this.children.addAll(children); + return this; + } + + public Builder level(int level) { + this.level = level; + return this; + } + + public Builder parent(ExecutableNormalizedField parent) { + this.parent = parent; + return this; + } + + public Builder deferredExecutions(LinkedHashSet deferredExecutions) { + this.deferredExecutions = deferredExecutions; + return this; + } + + public ExecutableNormalizedField build() { + return new ExecutableNormalizedField(this); + } + } +} diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperation.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperation.java new file mode 100644 index 0000000000..cfcda2746d --- /dev/null +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperation.java @@ -0,0 +1,180 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableListMultimap; +import graphql.Assert; +import graphql.PublicApi; +import graphql.execution.MergedField; +import graphql.execution.ResultPath; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Field; +import graphql.language.OperationDefinition; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLFieldsContainer; + +import java.util.List; +import java.util.Map; + +/** + * A {@link ExecutableNormalizedOperation} represent how the text of a graphql operation (sometimes known colloquially as a query) + * will be executed at runtime according to the graphql specification. It handles complex mechanisms like merging + * duplicate fields into one and also detecting when the types of a given field may actually be for more than one possible object + * type. + *

    + * An operation consists of a list of {@link ExecutableNormalizedField}s in a parent child hierarchy + */ +@PublicApi +public class ExecutableNormalizedOperation { + private final OperationDefinition.Operation operation; + private final String operationName; + private final List topLevelFields; + private final ImmutableListMultimap fieldToNormalizedField; + private final Map normalizedFieldToMergedField; + private final Map normalizedFieldToQueryDirectives; + private final ImmutableListMultimap coordinatesToNormalizedFields; + private final int operationFieldCount; + private final int operationDepth; + + public ExecutableNormalizedOperation( + OperationDefinition.Operation operation, + String operationName, + List topLevelFields, + ImmutableListMultimap fieldToNormalizedField, + Map normalizedFieldToMergedField, + Map normalizedFieldToQueryDirectives, + ImmutableListMultimap coordinatesToNormalizedFields, + int operationFieldCount, + int operationDepth) { + this.operation = operation; + this.operationName = operationName; + this.topLevelFields = topLevelFields; + this.fieldToNormalizedField = fieldToNormalizedField; + this.normalizedFieldToMergedField = normalizedFieldToMergedField; + this.normalizedFieldToQueryDirectives = normalizedFieldToQueryDirectives; + this.coordinatesToNormalizedFields = coordinatesToNormalizedFields; + this.operationFieldCount = operationFieldCount; + this.operationDepth = operationDepth; + } + + /** + * @return operation AST being executed + */ + public OperationDefinition.Operation getOperation() { + return operation; + } + + /** + * @return the operation name, which can be null + */ + public String getOperationName() { + return operationName; + } + + /** + * @return This returns how many {@link ExecutableNormalizedField}s are in the operation. + */ + public int getOperationFieldCount() { + return operationFieldCount; + } + + /** + * @return This returns the depth of the operation + */ + public int getOperationDepth() { + return operationDepth; + } + + /** + * This multimap shows how a given {@link ExecutableNormalizedField} maps to a one or more field coordinate in the schema + * + * @return a multimap of fields to schema field coordinates + */ + public ImmutableListMultimap getCoordinatesToNormalizedFields() { + return coordinatesToNormalizedFields; + } + + /** + * @return a list of the top level {@link ExecutableNormalizedField}s in this operation. + */ + public List getTopLevelFields() { + return topLevelFields; + } + + /** + * This is a multimap and the size of it reflects all the normalized fields in the operation + * + * @return an immutable list multimap of {@link Field} to {@link ExecutableNormalizedField} + */ + public ImmutableListMultimap getFieldToNormalizedField() { + return fieldToNormalizedField; + } + + /** + * Looks up one or more {@link ExecutableNormalizedField}s given a {@link Field} AST element in the operation + * + * @param field the field to look up + * + * @return zero, one or more possible {@link ExecutableNormalizedField}s that represent that field + */ + public List getNormalizedFields(Field field) { + return fieldToNormalizedField.get(field); + } + + /** + * @return a map of {@link ExecutableNormalizedField} to {@link MergedField}s + */ + public Map getNormalizedFieldToMergedField() { + return normalizedFieldToMergedField; + } + + /** + * Looks up the {@link MergedField} given a {@link ExecutableNormalizedField} + * + * @param executableNormalizedField the field to use the key + * + * @return a {@link MergedField} or null if its not present + */ + public MergedField getMergedField(ExecutableNormalizedField executableNormalizedField) { + return normalizedFieldToMergedField.get(executableNormalizedField); + } + + /** + * @return a map of {@link ExecutableNormalizedField} to its {@link QueryDirectives} + */ + public Map getNormalizedFieldToQueryDirectives() { + return normalizedFieldToQueryDirectives; + + } + + /** + * This looks up the {@link QueryDirectives} associated with the given {@link ExecutableNormalizedField} + * + * @param executableNormalizedField the executable normalised field in question + * + * @return the fields query directives or null + */ + public QueryDirectives getQueryDirectives(ExecutableNormalizedField executableNormalizedField) { + return normalizedFieldToQueryDirectives.get(executableNormalizedField); + } + + /** + * This will find a {@link ExecutableNormalizedField} given a merged field and a result path. If this does not find a field it will assert with an exception + * + * @param mergedField the merged field + * @param fieldsContainer the containing type of that field + * @param resultPath the result path in play + * + * @return the ExecutableNormalizedField + */ + public ExecutableNormalizedField getNormalizedField(MergedField mergedField, GraphQLFieldsContainer fieldsContainer, ResultPath resultPath) { + List executableNormalizedFields = fieldToNormalizedField.get(mergedField.getSingleField()); + List keysOnlyPath = resultPath.getKeysOnly(); + for (ExecutableNormalizedField executableNormalizedField : executableNormalizedFields) { + if (executableNormalizedField.getListOfResultKeys().equals(keysOnlyPath)) { + if (executableNormalizedField.getObjectTypeNames().contains(fieldsContainer.getName())) { + return executableNormalizedField; + } + } + } + return Assert.assertShouldNeverHappen("normalized field not found"); + } +} diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java new file mode 100644 index 0000000000..8501989237 --- /dev/null +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -0,0 +1,948 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.execution.AbortExecutionException; +import graphql.execution.CoercedVariables; +import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; +import graphql.execution.RawVariables; +import graphql.execution.ValuesResolver; +import graphql.execution.conditional.ConditionalNodes; +import graphql.execution.directives.QueryDirectives; +import graphql.execution.directives.QueryDirectivesImpl; +import graphql.execution.incremental.IncrementalUtils; +import graphql.introspection.Introspection; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.FragmentDefinition; +import graphql.language.FragmentSpread; +import graphql.language.InlineFragment; +import graphql.language.NodeUtil; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.language.VariableDefinition; +import graphql.normalized.incremental.NormalizedDeferredExecution; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLUnionType; +import graphql.schema.GraphQLUnmodifiedType; +import graphql.schema.impl.SchemaUtil; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.collect.ImmutableKit.map; +import static graphql.collect.ImmutableKit.mapToSet; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static graphql.util.FpKit.filterSet; +import static graphql.util.FpKit.groupingBy; +import static graphql.util.FpKit.intersection; +import static java.util.Collections.singleton; +import static java.util.Collections.singletonList; +import static java.util.stream.Collectors.toCollection; +import static java.util.stream.Collectors.toSet; + +/** + * This factory can create a {@link ExecutableNormalizedOperation} which represents what would be executed + * during a given graphql operation. + */ +@PublicApi +public class ExecutableNormalizedOperationFactory { + + public static class Options { + + + private final GraphQLContext graphQLContext; + private final Locale locale; + private final int maxChildrenDepth; + private final int maxFieldsCount; + + private final boolean deferSupport; + + /** + * The default max fields count is 100,000. + * This is big enough for even very large queries, but + * can be changed via {#setDefaultOptions + */ + public static final int DEFAULT_MAX_FIELDS_COUNT = 100_000; + private static Options defaultOptions = new Options(GraphQLContext.getDefault(), + Locale.getDefault(), + Integer.MAX_VALUE, + DEFAULT_MAX_FIELDS_COUNT, + false); + + private Options(GraphQLContext graphQLContext, + Locale locale, + int maxChildrenDepth, + int maxFieldsCount, + boolean deferSupport) { + this.graphQLContext = graphQLContext; + this.locale = locale; + this.maxChildrenDepth = maxChildrenDepth; + this.deferSupport = deferSupport; + this.maxFieldsCount = maxFieldsCount; + } + + /** + * Sets new default Options used when creating instances of {@link ExecutableNormalizedOperation}. + * + * @param options new default options + */ + public static void setDefaultOptions(Options options) { + defaultOptions = Assert.assertNotNull(options); + } + + + /** + * Returns the default options used when creating instances of {@link ExecutableNormalizedOperation}. + * + * @return the default options + */ + public static Options defaultOptions() { + return defaultOptions; + } + + /** + * Locale to use when parsing the query. + *

    + * e.g. can be passed to {@link graphql.schema.Coercing} for parsing. + * + * @param locale the locale to use + * + * @return new options object to use + */ + public Options locale(Locale locale) { + return new Options(this.graphQLContext, locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Context object to use when parsing the operation. + *

    + * Can be used to intercept input values e.g. using {@link graphql.execution.values.InputInterceptor}. + * + * @param graphQLContext the context to use + * + * @return new options object to use + */ + public Options graphQLContext(GraphQLContext graphQLContext) { + return new Options(graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum depth of the operation. Can be used to prevent + * against malicious operations. + * + * @param maxChildrenDepth the max depth + * + * @return new options object to use + */ + public Options maxChildrenDepth(int maxChildrenDepth) { + return new Options(this.graphQLContext, this.locale, maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum number of ENFs created. Can be used to prevent + * against malicious operations. + * + * @param maxFieldsCount the max number of ENFs created + * + * @return new options object to use + */ + public Options maxFieldsCount(int maxFieldsCount) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, maxFieldsCount, this.deferSupport); + } + + /** + * Controls whether defer execution is supported when creating instances of {@link ExecutableNormalizedOperation}. + * + * @param deferSupport true to enable support for defer + * + * @return new options object to use + */ + @ExperimentalApi + public Options deferSupport(boolean deferSupport) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, deferSupport); + } + + /** + * @return context to use during operation parsing + * + * @see #graphQLContext(GraphQLContext) + */ + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * @return locale to use during operation parsing + * + * @see #locale(Locale) + */ + public Locale getLocale() { + return locale; + } + + /** + * @return maximum children depth before aborting parsing + * + * @see #maxChildrenDepth(int) + */ + public int getMaxChildrenDepth() { + return maxChildrenDepth; + } + + public int getMaxFieldsCount() { + return maxFieldsCount; + } + + /** + * @return whether support for defer is enabled + * + * @see #deferSupport(boolean) + */ + @ExperimentalApi + public boolean getDeferSupport() { + return deferSupport; + } + } + + private static final ConditionalNodes conditionalNodes = new ConditionalNodes(); + + private ExecutableNormalizedOperationFactory() { + + } + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param document the {@link Document} holding the operation text + * @param operationName the operation name to use + * @param coercedVariableValues the coerced variables to use + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperation( + GraphQLSchema graphQLSchema, + Document document, + String operationName, + CoercedVariables coercedVariableValues + ) { + return createExecutableNormalizedOperation( + graphQLSchema, + document, + operationName, + coercedVariableValues, + Options.defaultOptions()); + } + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param document the {@link Document} holding the operation text + * @param operationName the operation name to use + * @param coercedVariableValues the coerced variables to use + * @param options the {@link Options} to use for parsing + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperation( + GraphQLSchema graphQLSchema, + Document document, + String operationName, + CoercedVariables coercedVariableValues, + Options options + ) { + NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operationName); + + return new ExecutableNormalizedOperationFactoryImpl( + graphQLSchema, + getOperationResult.operationDefinition, + getOperationResult.fragmentsByName, + coercedVariableValues, + null, + options + ).createNormalizedQueryImpl(); + } + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param operationDefinition the operation to be executed + * @param fragments a set of fragments associated with the operation + * @param coercedVariableValues the coerced variables to use + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperation(GraphQLSchema graphQLSchema, + OperationDefinition operationDefinition, + Map fragments, + CoercedVariables coercedVariableValues) { + return createExecutableNormalizedOperation(graphQLSchema, + operationDefinition, + fragments, + coercedVariableValues, + Options.defaultOptions()); + } + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param operationDefinition the operation to be executed + * @param fragments a set of fragments associated with the operation + * @param coercedVariableValues the coerced variables to use + * @param options the options to use + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperation(GraphQLSchema graphQLSchema, + OperationDefinition operationDefinition, + Map fragments, + CoercedVariables coercedVariableValues, + Options options) { + return new ExecutableNormalizedOperationFactoryImpl( + graphQLSchema, + operationDefinition, + fragments, + coercedVariableValues, + null, + options + ).createNormalizedQueryImpl(); + } + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param document the {@link Document} holding the operation text + * @param operationName the operation name to use + * @param rawVariables the raw variables to be coerced + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperationWithRawVariables(GraphQLSchema graphQLSchema, + Document document, + String operationName, + RawVariables rawVariables) { + return createExecutableNormalizedOperationWithRawVariables(graphQLSchema, + document, + operationName, + rawVariables, + Options.defaultOptions()); + } + + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param document the {@link Document} holding the operation text + * @param operationName the operation name to use + * @param rawVariables the raw variables that have not yet been coerced + * @param locale the {@link Locale} to use during coercion + * @param graphQLContext the {@link GraphQLContext} to use during coercion + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperationWithRawVariables( + GraphQLSchema graphQLSchema, + Document document, + String operationName, + RawVariables rawVariables, + GraphQLContext graphQLContext, + Locale locale + ) { + return createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + operationName, + rawVariables, + Options.defaultOptions().graphQLContext(graphQLContext).locale(locale)); + } + + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param document the {@link Document} holding the operation text + * @param operationName the operation name to use + * @param rawVariables the raw variables that have not yet been coerced + * @param options the {@link Options} to use for parsing + * + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperationWithRawVariables(GraphQLSchema graphQLSchema, + Document document, + String operationName, + RawVariables rawVariables, + Options options) { + NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operationName); + OperationDefinition operationDefinition = getOperationResult.operationDefinition; + + List variableDefinitions = operationDefinition.getVariableDefinitions(); + CoercedVariables coercedVariableValues = ValuesResolver.coerceVariableValues(graphQLSchema, + variableDefinitions, + rawVariables, + options.getGraphQLContext(), + options.getLocale()); + NormalizedVariables normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, + variableDefinitions, + rawVariables, + options.getGraphQLContext(), + options.getLocale()); + + return new ExecutableNormalizedOperationFactoryImpl( + graphQLSchema, + operationDefinition, + getOperationResult.fragmentsByName, + coercedVariableValues, + normalizedVariableValues, + options + ).createNormalizedQueryImpl(); + } + + + private static class ExecutableNormalizedOperationFactoryImpl { + private final GraphQLSchema graphQLSchema; + private final OperationDefinition operationDefinition; + private final Map fragments; + private final CoercedVariables coercedVariableValues; + private final @Nullable NormalizedVariables normalizedVariableValues; + private final Options options; + + private final List possibleMergerList = new ArrayList<>(); + + private final ImmutableListMultimap.Builder fieldToNormalizedField = ImmutableListMultimap.builder(); + private final ImmutableMap.Builder normalizedFieldToMergedField = ImmutableMap.builder(); + private final ImmutableMap.Builder normalizedFieldToQueryDirectives = ImmutableMap.builder(); + private final ImmutableListMultimap.Builder coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + private int fieldCount = 0; + private int maxDepthSeen = 0; + + private final List rootEnfs = new ArrayList<>(); + + private ExecutableNormalizedOperationFactoryImpl( + GraphQLSchema graphQLSchema, + OperationDefinition operationDefinition, + Map fragments, + CoercedVariables coercedVariableValues, + @Nullable NormalizedVariables normalizedVariableValues, + Options options + ) { + this.graphQLSchema = graphQLSchema; + this.operationDefinition = operationDefinition; + this.fragments = fragments; + this.coercedVariableValues = coercedVariableValues; + this.normalizedVariableValues = normalizedVariableValues; + this.options = options; + } + + /** + * Creates a new ExecutableNormalizedOperation for the provided query + */ + private ExecutableNormalizedOperation createNormalizedQueryImpl() { + buildEnfsRecursively(null, null, 0); + + for (PossibleMerger possibleMerger : possibleMergerList) { + List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); + ENFMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema, options.deferSupport); + } + return new ExecutableNormalizedOperation( + operationDefinition.getOperation(), + operationDefinition.getName(), + new ArrayList<>(rootEnfs), + fieldToNormalizedField.build(), + normalizedFieldToMergedField.build(), + normalizedFieldToQueryDirectives.build(), + coordinatesToNormalizedFields.build(), + fieldCount, + maxDepthSeen + ); + } + + private void captureMergedField(ExecutableNormalizedField enf, MergedField mergedFld) { + // QueryDirectivesImpl is a lazy object and only computes itself when asked for + QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, + graphQLSchema, + coercedVariableValues, + () -> normalizedVariableValues, + options.getGraphQLContext(), + options.getLocale()); + normalizedFieldToQueryDirectives.put(enf, queryDirectives); + normalizedFieldToMergedField.put(enf, mergedFld); + } + + private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executableNormalizedField, + @Nullable ImmutableList fieldAndAstParents, + int curLevel) { + if (this.maxDepthSeen < curLevel) { + this.maxDepthSeen = curLevel; + checkMaxDepthExceeded(curLevel); + } + Set possibleObjects; + List collectedFields; + + // special handling for the root selection Set + if (executableNormalizedField == null) { + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + possibleObjects = ImmutableSet.of(rootType); + collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); + } else { + List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); + possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return; + } + collectedFields = new ArrayList<>(); + for (CollectedField fieldAndAstParent : fieldAndAstParents) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + // the AST parent comes from the previous collect from selection set call + // and is the type to which the field belongs (the container type of the field) and output type + // of the field needs to be determined based on the field name + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); + // it must a composite type, because the field has a selection set + GraphQLCompositeType selectionSetType = (GraphQLCompositeType) unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + selectionSetType, + possibleObjects, + null + ); + } + } + + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, executableNormalizedField); + + ImmutableList nextLevelChildren = resultNFs.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + + for (ExecutableNormalizedField childENF : nextLevelChildren) { + if (executableNormalizedField == null) { + // all root ENFs don't have a parent, but are collected in the rootEnfs list + rootEnfs.add(childENF); + } else { + executableNormalizedField.addChild(childENF); + } + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); + + MergedField mergedField = newMergedField(childFieldAndAstParents); + captureMergedField(childENF, mergedField); + + updateFieldToNFMap(childENF, childFieldAndAstParents); + updateCoordinatedToNFMap(childENF); + + // recursive call + buildEnfsRecursively(childENF, + childFieldAndAstParents, + curLevel + 1); + } + } + + private void checkMaxDepthExceeded(int depthSeen) { + if (depthSeen > this.options.getMaxChildrenDepth()) { + throw new AbortExecutionException("Maximum query depth exceeded. " + depthSeen + " > " + this.options.getMaxChildrenDepth()); + } + } + + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + return MergedField.newMergedField(mapToSet(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); + } + + private void updateFieldToNFMap(ExecutableNormalizedField executableNormalizedField, + ImmutableList mergedField) { + for (CollectedField astField : mergedField) { + fieldToNormalizedField.put(astField.field, executableNormalizedField); + } + } + + private void updateCoordinatedToNFMap(ExecutableNormalizedField topLevel) { + for (String objectType : topLevel.getObjectTypeNames()) { + FieldCoordinates coordinates = FieldCoordinates.coordinates(objectType, topLevel.getFieldName()); + coordinatesToNormalizedFields.put(coordinates, topLevel); + } + } + + + private Map> fieldsByResultKey(List collectedFields) { + Map> fieldsByName = new LinkedHashMap<>(); + for (CollectedField collectedField : collectedFields) { + fieldsByName.computeIfAbsent(collectedField.field.getResultKey(), ignored -> new ArrayList<>()).add(collectedField); + } + return fieldsByName; + } + + + private void createNFs(ImmutableList.Builder nfListBuilder, + Map> fieldsByName, + ImmutableListMultimap.Builder normalizedFieldToAstFields, + int level, + ExecutableNormalizedField parent) { + for (String resultKey : fieldsByName.keySet()) { + List fieldsWithSameResultKey = fieldsByName.get(resultKey); + List commonParentsGroups = groupByCommonParents(fieldsWithSameResultKey); + for (CollectedFieldGroup fieldGroup : commonParentsGroups) { + ExecutableNormalizedField nf = createNF(fieldGroup, level, parent); + if (nf == null) { + continue; + } + for (CollectedField collectedField : fieldGroup.fields) { + normalizedFieldToAstFields.put(nf, collectedField); + } + nfListBuilder.add(nf); + + if (this.options.deferSupport) { + nf.addDeferredExecutions(fieldGroup.deferredExecutions); + } + } + if (commonParentsGroups.size() > 1) { + possibleMergerList.add(new PossibleMerger(parent, resultKey)); + } + } + } + + // new single ENF + private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGroup, + int level, + ExecutableNormalizedField parent) { + + this.fieldCount++; + if (this.fieldCount > this.options.getMaxFieldsCount()) { + throw new AbortExecutionException("Maximum field count exceeded. " + this.fieldCount + " > " + this.options.getMaxFieldsCount()); + } + Field field; + Set objectTypes = collectedFieldGroup.objectTypes; + field = collectedFieldGroup.fields.iterator().next().field; + String fieldName = field.getName(); + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDefinition(graphQLSchema, objectTypes.iterator().next(), fieldName); + + Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); + Map normalizedArgumentValues = null; + if (this.normalizedVariableValues != null) { + normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues.toMap()); + } + ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); + return ExecutableNormalizedField.newNormalizedField() + .alias(field.getAlias()) + .resolvedArguments(argumentValues) + .normalizedArguments(normalizedArgumentValues) + .astArguments(field.getArguments()) + .objectTypeNames(objectTypeNames) + .fieldName(fieldName) + .level(level) + .parent(parent) + .build(); + } + + private List groupByCommonParents(Collection fields) { + if (this.options.deferSupport) { + return groupByCommonParentsWithDeferSupport(fields); + } else { + return groupByCommonParentsNoDeferSupport(fields); + } + } + + private List groupByCommonParentsNoDeferSupport(Collection fields) { + ImmutableSet.Builder objectTypes = ImmutableSet.builder(); + for (CollectedField collectedField : fields) { + objectTypes.addAll(collectedField.objectTypes); + } + Set allRelevantObjects = objectTypes.build(); + Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); + if (groupByAstParent.size() == 1) { + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects, null)); + } + ImmutableList.Builder result = ImmutableList.builder(); + for (GraphQLObjectType objectType : allRelevantObjects) { + Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType), null)); + } + return result.build(); + } + + private List groupByCommonParentsWithDeferSupport(Collection fields) { + ImmutableSet.Builder objectTypes = ImmutableSet.builder(); + ImmutableSet.Builder deferredExecutionsBuilder = ImmutableSet.builder(); + + for (CollectedField collectedField : fields) { + objectTypes.addAll(collectedField.objectTypes); + + NormalizedDeferredExecution collectedDeferredExecution = collectedField.deferredExecution; + + if (collectedDeferredExecution != null) { + deferredExecutionsBuilder.add(collectedDeferredExecution); + } + } + + Set allRelevantObjects = objectTypes.build(); + Set deferredExecutions = deferredExecutionsBuilder.build(); + + Set duplicatedLabels = listDuplicatedLabels(deferredExecutions); + + if (!duplicatedLabels.isEmpty()) { + // Query validation should pick this up + Assert.assertShouldNeverHappen("Duplicated @defer labels are not allowed: [%s]", String.join(",", duplicatedLabels)); + } + + Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); + if (groupByAstParent.size() == 1) { + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects, deferredExecutions)); + } + + ImmutableList.Builder result = ImmutableList.builder(); + for (GraphQLObjectType objectType : allRelevantObjects) { + Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); + + Set filteredDeferredExecutions = deferredExecutions.stream() + .filter(filterExecutionsFromType(objectType)) + .collect(toCollection(LinkedHashSet::new)); + + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType), filteredDeferredExecutions)); + } + return result.build(); + } + + private static Predicate filterExecutionsFromType(GraphQLObjectType objectType) { + String objectTypeName = objectType.getName(); + return deferredExecution -> deferredExecution.getPossibleTypes() + .stream() + .map(GraphQLObjectType::getName) + .anyMatch(objectTypeName::equals); + } + + private Set listDuplicatedLabels(Collection deferredExecutions) { + return deferredExecutions.stream() + .map(NormalizedDeferredExecution::getLabel) + .filter(Objects::nonNull) + .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) + .entrySet() + .stream() + .filter(entry -> entry.getValue() > 1) + .map(Map.Entry::getKey) + .collect(toSet()); + } + + private void collectFromSelectionSet(SelectionSet selectionSet, + List result, + GraphQLCompositeType astTypeCondition, + Set possibleObjects, + NormalizedDeferredExecution deferredExecution + ) { + for (Selection selection : selectionSet.getSelections()) { + if (selection instanceof Field) { + collectField(result, (Field) selection, possibleObjects, astTypeCondition, deferredExecution); + } else if (selection instanceof InlineFragment) { + collectInlineFragment(result, (InlineFragment) selection, possibleObjects, astTypeCondition); + } else if (selection instanceof FragmentSpread) { + collectFragmentSpread(result, (FragmentSpread) selection, possibleObjects); + } + } + } + + private void collectFragmentSpread(List result, + FragmentSpread fragmentSpread, + Set possibleObjects + ) { + if (!conditionalNodes.shouldInclude(fragmentSpread, + this.coercedVariableValues.toMap(), + this.graphQLSchema, + this.options.graphQLContext)) { + return; + } + FragmentDefinition fragmentDefinition = assertNotNull(this.fragments.get(fragmentSpread.getName())); + + if (!conditionalNodes.shouldInclude(fragmentDefinition, + this.coercedVariableValues.toMap(), + this.graphQLSchema, + this.options.graphQLContext)) { + return; + } + GraphQLCompositeType newAstTypeCondition = (GraphQLCompositeType) assertNotNull(this.graphQLSchema.getType(fragmentDefinition.getTypeCondition().getName())); + Set newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + + NormalizedDeferredExecution newDeferredExecution = buildDeferredExecution( + fragmentSpread.getDirectives(), + newPossibleObjects); + + collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); + } + + private void collectInlineFragment(List result, + InlineFragment inlineFragment, + Set possibleObjects, + GraphQLCompositeType astTypeCondition + ) { + if (!conditionalNodes.shouldInclude(inlineFragment, this.coercedVariableValues.toMap(), this.graphQLSchema, this.options.graphQLContext)) { + return; + } + Set newPossibleObjects = possibleObjects; + GraphQLCompositeType newAstTypeCondition = astTypeCondition; + + if (inlineFragment.getTypeCondition() != null) { + newAstTypeCondition = (GraphQLCompositeType) this.graphQLSchema.getType(inlineFragment.getTypeCondition().getName()); + newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + + } + + NormalizedDeferredExecution newDeferredExecution = buildDeferredExecution( + inlineFragment.getDirectives(), + newPossibleObjects + ); + + collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); + } + + private @Nullable NormalizedDeferredExecution buildDeferredExecution( + List directives, + Set newPossibleObjects) { + if (!options.deferSupport) { + return null; + } + + return IncrementalUtils.createDeferredExecution( + this.coercedVariableValues.toMap(), + directives, + (label) -> new NormalizedDeferredExecution(label, newPossibleObjects) + ); + } + + private void collectField(List result, + Field field, + Set possibleObjectTypes, + GraphQLCompositeType astTypeCondition, + NormalizedDeferredExecution deferredExecution + ) { + if (!conditionalNodes.shouldInclude(field, + this.coercedVariableValues.toMap(), + this.graphQLSchema, + this.options.graphQLContext)) { + return; + } + // this means there is actually no possible type for this field, and we are done + if (possibleObjectTypes.isEmpty()) { + return; + } + result.add(new CollectedField(field, possibleObjectTypes, astTypeCondition, deferredExecution)); + } + + private Set narrowDownPossibleObjects(Set currentOnes, + GraphQLCompositeType typeCondition) { + + ImmutableSet resolvedTypeCondition = resolvePossibleObjects(typeCondition); + if (currentOnes.isEmpty()) { + return resolvedTypeCondition; + } + + // Faster intersection, as either set often has a size of 1. + return intersection(currentOnes, resolvedTypeCondition); + } + + private ImmutableSet resolvePossibleObjects(List defs) { + ImmutableSet.Builder builder = ImmutableSet.builder(); + + for (GraphQLFieldDefinition def : defs) { + GraphQLUnmodifiedType outputType = unwrapAll(def.getType()); + if (outputType instanceof GraphQLCompositeType) { + builder.addAll(resolvePossibleObjects((GraphQLCompositeType) outputType)); + } + } + + return builder.build(); + } + + private ImmutableSet resolvePossibleObjects(GraphQLCompositeType type) { + if (type instanceof GraphQLObjectType) { + return ImmutableSet.of((GraphQLObjectType) type); + } else if (type instanceof GraphQLInterfaceType) { + return ImmutableSet.copyOf(graphQLSchema.getImplementations((GraphQLInterfaceType) type)); + } else if (type instanceof GraphQLUnionType) { + List unionTypes = ((GraphQLUnionType) type).getTypes(); + return ImmutableSet.copyOf(ImmutableKit.map(unionTypes, GraphQLObjectType.class::cast)); + } else { + return assertShouldNeverHappen(); + } + } + + private static class PossibleMerger { + ExecutableNormalizedField parent; + String resultKey; + + public PossibleMerger(ExecutableNormalizedField parent, String resultKey) { + this.parent = parent; + this.resultKey = resultKey; + } + } + + private static class CollectedField { + Field field; + Set objectTypes; + GraphQLCompositeType astTypeCondition; + NormalizedDeferredExecution deferredExecution; + + public CollectedField(Field field, Set objectTypes, GraphQLCompositeType astTypeCondition, NormalizedDeferredExecution deferredExecution) { + this.field = field; + this.objectTypes = objectTypes; + this.astTypeCondition = astTypeCondition; + this.deferredExecution = deferredExecution; + } + } + + private static class CollectedFieldGroup { + Set objectTypes; + Set fields; + Set deferredExecutions; + + public CollectedFieldGroup(Set fields, Set objectTypes, Set deferredExecutions) { + this.fields = fields; + this.objectTypes = objectTypes; + this.deferredExecutions = deferredExecutions; + } + } + } + +} diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java new file mode 100644 index 0000000000..f71e1a30e8 --- /dev/null +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java @@ -0,0 +1,473 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.Directives; +import graphql.ExperimentalApi; +import graphql.PublicApi; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryDirectives; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.language.StringValue; +import graphql.language.TypeName; +import graphql.normalized.incremental.NormalizedDeferredExecution; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnmodifiedType; +import graphql.util.LinkedHashMapFactory; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.language.Argument.newArgument; +import static graphql.language.Field.newField; +import static graphql.language.InlineFragment.newInlineFragment; +import static graphql.language.SelectionSet.newSelectionSet; +import static graphql.language.TypeName.newTypeName; +import static graphql.normalized.ArgumentMaker.createArguments; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; + +/** + * This class can take a list of {@link ExecutableNormalizedField}s and compiling out a + * normalised operation {@link Document} that would represent how those fields + * may be executed. + *

    + * This is essentially the reverse of {@link ExecutableNormalizedOperationFactory} which takes + * operation text and makes {@link ExecutableNormalizedField}s from it, this takes {@link ExecutableNormalizedField}s + * and makes operation text from it. + *

    + * You could for example send that operation text onto to some other graphql server if it + * has the same schema as the one provided. + */ +@PublicApi +public class ExecutableNormalizedOperationToAstCompiler { + + /** + * The result is a {@link Document} and a map of variables + * that would go with that document. + */ + public static class CompilerResult { + private final Document document; + private final Map variables; + + public CompilerResult(Document document, Map variables) { + this.document = document; + this.variables = variables; + } + + public Document getDocument() { + return document; + } + + public Map getVariables() { + return variables; + } + } + + /** + * This will compile an operation text {@link Document} with possibly variables from the given {@link ExecutableNormalizedField}s + *

    + * The {@link VariablePredicate} is used called to decide if the given argument values should be made into a variable + * OR inlined into the operation text as a graphql literal. + * + * @param schema the graphql schema to use + * @param operationKind the kind of operation + * @param operationName the name of the operation to use + * @param topLevelFields the top level {@link ExecutableNormalizedField}s to start from + * @param variablePredicate the variable predicate that decides if arguments turn into variables or not during compilation + * + * @return a {@link CompilerResult} object + */ + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, + @Nullable String operationName, + @NonNull List topLevelFields, + @Nullable VariablePredicate variablePredicate) { + return compileToDocument(schema, operationKind, operationName, topLevelFields, LinkedHashMapFactory.of(), variablePredicate); + } + + /** + * This will compile an operation text {@link Document} with possibly variables from the given {@link ExecutableNormalizedField}s + *

    + * The {@link VariablePredicate} is used called to decide if the given argument values should be made into a variable + * OR inlined into the operation text as a graphql literal. + * + * @param schema the graphql schema to use + * @param operationKind the kind of operation + * @param operationName the name of the operation to use + * @param topLevelFields the top level {@link ExecutableNormalizedField}s to start from + * @param normalizedFieldToQueryDirectives the map of normalized field to query directives + * @param variablePredicate the variable predicate that decides if arguments turn into variables or not during compilation + * + * @return a {@link CompilerResult} object + */ + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, + @Nullable String operationName, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, + @Nullable VariablePredicate variablePredicate) { + return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate, false); + } + + + /** + * This will compile an operation text {@link Document} with possibly variables from the given {@link ExecutableNormalizedField}s, with support for the experimental @defer directive. + *

    + * The {@link VariablePredicate} is used called to decide if the given argument values should be made into a variable + * OR inlined into the operation text as a graphql literal. + * + * @param schema the graphql schema to use + * @param operationKind the kind of operation + * @param operationName the name of the operation to use + * @param topLevelFields the top level {@link ExecutableNormalizedField}s to start from + * @param variablePredicate the variable predicate that decides if arguments turn into variables or not during compilation + * + * @return a {@link CompilerResult} object + * + * @see ExecutableNormalizedOperationToAstCompiler#compileToDocument(GraphQLSchema, OperationDefinition.Operation, String, List, VariablePredicate) + */ + @ExperimentalApi + public static CompilerResult compileToDocumentWithDeferSupport(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, + @Nullable String operationName, + @NonNull List topLevelFields, + @Nullable VariablePredicate variablePredicate + ) { + return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, LinkedHashMapFactory.of(), variablePredicate); + } + + /** + * This will compile an operation text {@link Document} with possibly variables from the given {@link ExecutableNormalizedField}s, with support for the experimental @defer directive. + *

    + * The {@link VariablePredicate} is used called to decide if the given argument values should be made into a variable + * OR inlined into the operation text as a graphql literal. + * + * @param schema the graphql schema to use + * @param operationKind the kind of operation + * @param operationName the name of the operation to use + * @param topLevelFields the top level {@link ExecutableNormalizedField}s to start from + * @param normalizedFieldToQueryDirectives the map of normalized field to query directives + * @param variablePredicate the variable predicate that decides if arguments turn into variables or not during compilation + * + * @return a {@link CompilerResult} object + * + * @see ExecutableNormalizedOperationToAstCompiler#compileToDocument(GraphQLSchema, OperationDefinition.Operation, String, List, Map, VariablePredicate) + */ + @ExperimentalApi + public static CompilerResult compileToDocumentWithDeferSupport(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, + @Nullable String operationName, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, + @Nullable VariablePredicate variablePredicate + ) { + return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate, true); + } + + private static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, + @Nullable String operationName, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, + @Nullable VariablePredicate variablePredicate, + boolean deferSupport) { + GraphQLObjectType operationType = getOperationType(schema, operationKind); + + VariableAccumulator variableAccumulator = new VariableAccumulator(variablePredicate); + List> selections = subselectionsForNormalizedField(schema, operationType.getName(), topLevelFields, normalizedFieldToQueryDirectives, variableAccumulator, deferSupport); + SelectionSet selectionSet = new SelectionSet(selections); + + OperationDefinition.Builder definitionBuilder = OperationDefinition.newOperationDefinition() + .name(operationName) + .operation(operationKind) + .selectionSet(selectionSet); + + definitionBuilder.variableDefinitions(variableAccumulator.getVariableDefinitions()); + + return new CompilerResult( + Document.newDocument() + .definition(definitionBuilder.build()) + .build(), + variableAccumulator.getVariablesMap() + ); + } + + private static List> subselectionsForNormalizedField(GraphQLSchema schema, + @NonNull String parentOutputType, + List executableNormalizedFields, + @NonNull Map normalizedFieldToQueryDirectives, + VariableAccumulator variableAccumulator, + boolean deferSupport) { + if (deferSupport) { + return subselectionsForNormalizedFieldWithDeferSupport(schema, parentOutputType, executableNormalizedFields, normalizedFieldToQueryDirectives, variableAccumulator); + } else { + return subselectionsForNormalizedFieldNoDeferSupport(schema, parentOutputType, executableNormalizedFields, normalizedFieldToQueryDirectives, variableAccumulator); + } + } + + private static List> subselectionsForNormalizedFieldNoDeferSupport(GraphQLSchema schema, + @NonNull String parentOutputType, + List executableNormalizedFields, + @NonNull Map normalizedFieldToQueryDirectives, + VariableAccumulator variableAccumulator) { + ImmutableList.Builder> selections = ImmutableList.builder(); + + // All conditional fields go here instead of directly to selections, so they can be grouped together + // in the same inline fragment in the output + Map> fieldsByTypeCondition = new LinkedHashMap<>(); + + for (ExecutableNormalizedField nf : executableNormalizedFields) { + if (nf.isConditional(schema)) { + selectionForNormalizedField(schema, nf, normalizedFieldToQueryDirectives, variableAccumulator, false) + .forEach((objectTypeName, field) -> + fieldsByTypeCondition + .computeIfAbsent(objectTypeName, ignored -> new ArrayList<>()) + .add(field)); + } else { + selections.add(selectionForNormalizedField(schema, parentOutputType, nf, normalizedFieldToQueryDirectives, variableAccumulator, false)); + } + } + + fieldsByTypeCondition.forEach((objectTypeName, fields) -> { + TypeName typeName = newTypeName(objectTypeName).build(); + InlineFragment inlineFragment = newInlineFragment() + .typeCondition(typeName) + .selectionSet(selectionSet(fields)) + .build(); + selections.add(inlineFragment); + }); + + return selections.build(); + } + + + private static List> subselectionsForNormalizedFieldWithDeferSupport(GraphQLSchema schema, + @NonNull String parentOutputType, + List executableNormalizedFields, + @NonNull Map normalizedFieldToQueryDirectives, + VariableAccumulator variableAccumulator) { + ImmutableList.Builder> selections = ImmutableList.builder(); + + // All conditional and deferred fields go here instead of directly to selections, so they can be grouped together + // in the same inline fragment in the output + // + Map> fieldsByFragmentDetails = new LinkedHashMap<>(); + + for (ExecutableNormalizedField nf : executableNormalizedFields) { + LinkedHashSet deferredExecutions = nf.getDeferredExecutions(); + + if (nf.isConditional(schema)) { + selectionForNormalizedField(schema, nf, normalizedFieldToQueryDirectives, variableAccumulator, true) + .forEach((objectTypeName, field) -> { + if (deferredExecutions == null || deferredExecutions.isEmpty()) { + fieldsByFragmentDetails + .computeIfAbsent(new ExecutionFragmentDetails(objectTypeName, null), ignored -> new ArrayList<>()) + .add(field); + } else { + deferredExecutions.forEach(deferredExecution -> { + fieldsByFragmentDetails + .computeIfAbsent(new ExecutionFragmentDetails(objectTypeName, deferredExecution), ignored -> new ArrayList<>()) + .add(field); + }); + } + }); + + } else if (deferredExecutions != null && !deferredExecutions.isEmpty()) { + Field field = selectionForNormalizedField(schema, parentOutputType, nf, normalizedFieldToQueryDirectives, variableAccumulator, true); + + deferredExecutions.forEach(deferredExecution -> { + fieldsByFragmentDetails + .computeIfAbsent(new ExecutionFragmentDetails(null, deferredExecution), ignored -> new ArrayList<>()) + .add(field); + }); + } else { + selections.add(selectionForNormalizedField(schema, parentOutputType, nf, normalizedFieldToQueryDirectives, variableAccumulator, true)); + } + } + + fieldsByFragmentDetails.forEach((typeAndDeferPair, fields) -> { + InlineFragment.Builder fragmentBuilder = newInlineFragment() + .selectionSet(selectionSet(fields)); + + if (typeAndDeferPair.typeName != null) { + TypeName typeName = newTypeName(typeAndDeferPair.typeName).build(); + fragmentBuilder.typeCondition(typeName); + } + + if (typeAndDeferPair.deferredExecution != null) { + Directive.Builder deferBuilder = Directive.newDirective().name(Directives.DeferDirective.getName()); + + if (typeAndDeferPair.deferredExecution.getLabel() != null) { + deferBuilder.argument(newArgument().name("label").value(StringValue.of(typeAndDeferPair.deferredExecution.getLabel())).build()); + } + + fragmentBuilder.directive(deferBuilder.build()); + } + + + selections.add(fragmentBuilder.build()); + }); + + return selections.build(); + } + + /** + * @return Map of object type names to list of fields + */ + private static Map selectionForNormalizedField(GraphQLSchema schema, + ExecutableNormalizedField executableNormalizedField, + @NonNull Map normalizedFieldToQueryDirectives, + VariableAccumulator variableAccumulator, + boolean deferSupport) { + Map groupedFields = new LinkedHashMap<>(); + + for (String objectTypeName : executableNormalizedField.getObjectTypeNames()) { + groupedFields.put(objectTypeName, selectionForNormalizedField(schema, objectTypeName, executableNormalizedField, normalizedFieldToQueryDirectives, variableAccumulator, deferSupport)); + } + + return groupedFields; + } + + /** + * @return Map of object type names to list of fields + */ + private static Field selectionForNormalizedField(GraphQLSchema schema, + String objectTypeName, + ExecutableNormalizedField executableNormalizedField, + @NonNull Map normalizedFieldToQueryDirectives, + VariableAccumulator variableAccumulator, + boolean deferSupport) { + final List> subSelections; + if (executableNormalizedField.getChildren().isEmpty()) { + subSelections = emptyList(); + } else { + GraphQLFieldDefinition fieldDef = getFieldDefinition(schema, objectTypeName, executableNormalizedField); + GraphQLUnmodifiedType fieldOutputType = unwrapAll(fieldDef.getType()); + + subSelections = subselectionsForNormalizedField( + schema, + fieldOutputType.getName(), + executableNormalizedField.getChildren(), + normalizedFieldToQueryDirectives, + variableAccumulator, + deferSupport + ); + } + + SelectionSet selectionSet = selectionSetOrNullIfEmpty(subSelections); + List arguments = createArguments(executableNormalizedField, variableAccumulator); + + QueryDirectives queryDirectives = normalizedFieldToQueryDirectives.get(executableNormalizedField); + + Field.Builder builder = newField() + .name(executableNormalizedField.getFieldName()) + .alias(executableNormalizedField.getAlias()) + .selectionSet(selectionSet) + .arguments(arguments); + + List directives = buildDirectives(executableNormalizedField, queryDirectives, variableAccumulator); + return builder + .directives(directives) + .build(); + } + + private static @NonNull List buildDirectives(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, VariableAccumulator variableAccumulator) { + if (queryDirectives == null || queryDirectives.getImmediateAppliedDirectivesByField().isEmpty()) { + return emptyList(); + } + return queryDirectives.getImmediateAppliedDirectivesByField().entrySet().stream() + .flatMap(entry -> entry.getValue().stream()) + .map(queryAppliedDirective -> buildDirective(executableNormalizedField, queryDirectives, queryAppliedDirective, variableAccumulator)) + .collect(Collectors.toList()); + } + + private static Directive buildDirective(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, QueryAppliedDirective queryAppliedDirective, VariableAccumulator variableAccumulator) { + + List arguments = ArgumentMaker.createDirectiveArguments(executableNormalizedField, queryDirectives, queryAppliedDirective, variableAccumulator); + return Directive.newDirective() + .name(queryAppliedDirective.getName()) + .arguments(arguments).build(); + } + + @Nullable + private static SelectionSet selectionSetOrNullIfEmpty(List> selections) { + return selections.isEmpty() ? null : newSelectionSet().selections(selections).build(); + } + + private static SelectionSet selectionSet(List fields) { + return newSelectionSet().selections(fields).build(); + } + + + @NonNull + private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, + String parentType, + ExecutableNormalizedField nf) { + return Introspection.getFieldDef(schema, (GraphQLCompositeType) schema.getType(parentType), nf.getName()); + } + + + @Nullable + private static GraphQLObjectType getOperationType(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind) { + switch (operationKind) { + case QUERY: + return schema.getQueryType(); + case MUTATION: + return schema.getMutationType(); + case SUBSCRIPTION: + return schema.getSubscriptionType(); + } + + return Assert.assertShouldNeverHappen("Unknown operation kind " + operationKind); + } + + /** + * Represents important execution details that can be associated with a fragment. + */ + private static class ExecutionFragmentDetails { + private final String typeName; + private final NormalizedDeferredExecution deferredExecution; + + public ExecutionFragmentDetails(String typeName, NormalizedDeferredExecution deferredExecution) { + this.typeName = typeName; + this.deferredExecution = deferredExecution; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ExecutionFragmentDetails that = (ExecutionFragmentDetails) o; + return Objects.equals(typeName, that.typeName) && Objects.equals(deferredExecution, that.deferredExecution); + } + + @Override + public int hashCode() { + return Objects.hash(typeName, deferredExecution); + } + } +} diff --git a/src/main/java/graphql/normalized/NormalizedInputValue.java b/src/main/java/graphql/normalized/NormalizedInputValue.java new file mode 100644 index 0000000000..c6f881fac0 --- /dev/null +++ b/src/main/java/graphql/normalized/NormalizedInputValue.java @@ -0,0 +1,144 @@ +package graphql.normalized; + +import graphql.Assert; +import graphql.PublicApi; +import graphql.language.Value; + +import java.util.Objects; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertTrue; +import static graphql.Assert.assertValidName; +import static graphql.language.AstPrinter.printAst; + +/** + * An argument value with type information. + */ +@PublicApi +public class NormalizedInputValue { + private final String typeName; + private final Object value; + + public NormalizedInputValue(String typeName, Object value) { + this.typeName = assertValidTypeName(typeName); + this.value = value; + } + + private String assertValidTypeName(String typeName) { + assertValidName(unwrapAll(typeName)); + return typeName; + } + + private String unwrapAll(String typeName) { + String result = unwrapOne(typeName); + while (isWrapped(result)) { + result = unwrapOne(result); + } + return result; + } + + /** + * This can be a wrapped type: e.g. [String!]! + * + * @return the type name + */ + public String getTypeName() { + return typeName; + } + + /** + * @return the type name unwrapped of all list and non-null type wrapping + */ + public String getUnwrappedTypeName() { + return unwrapAll(typeName); + } + + /** + * Depending on the type it returns: + * Scalar or Enum: the ast literal of the Scalar. + * InputObject: the value is a map of field-name to NormalizedInputValue + * List of Scalar literal or Enum literal or NormalizedInput (or even List of List ..) + * + * @return the value + */ + public Object getValue() { + return value; + } + + + /** + * @return true if the input value type is a list or a non-nullable list + */ + public boolean isListLike() { + return typeName.startsWith("["); + } + + /** + * @return true if the input value type is non-nullable + */ + public boolean isNonNullable() { + return typeName.endsWith("!"); + } + + /** + * @return true if the input value type is nullable + */ + public boolean isNullable() { + return !isNonNullable(); + } + + private boolean isWrapped(String typeName) { + return typeName.endsWith("!") || isListOnly(typeName); + } + + private boolean isListOnly(String typeName) { + if (typeName.endsWith("!")) { + return false; + } + return typeName.startsWith("[") || typeName.endsWith("]"); + } + + private String unwrapOne(String typeName) { + assertNotNull(typeName); + Assert.assertTrue(!typeName.trim().isEmpty(), "We have an empty type name unwrapped"); + if (typeName.endsWith("!")) { + return typeName.substring(0, typeName.length() - 1); + } + if (isListOnly(typeName)) { + // nominally this will never be true - but better to be safe than sorry + assertTrue(typeName.startsWith("["), "We have a unbalanced list type string '%s'", typeName); + assertTrue(typeName.endsWith("]"), "We have a unbalanced list type string '%s'", typeName); + + return typeName.substring(1, typeName.length() - 1); + } + return typeName; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + NormalizedInputValue that = (NormalizedInputValue) o; + if (value instanceof Value && that.value instanceof Value) { + return Objects.equals(typeName, that.typeName) && Objects.equals(printAst((Value) value), printAst((Value) that.value)); + } + return Objects.equals(typeName, that.typeName) && Objects.equals(value, that.value); + } + + @Override + public int hashCode() { + return Objects.hash(typeName, value); + } + + @Override + public String toString() { + return "NormalizedInputValue{" + + "typeName='" + typeName + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java b/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java new file mode 100644 index 0000000000..87144dcc42 --- /dev/null +++ b/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java @@ -0,0 +1,138 @@ +package graphql.normalized; + +import graphql.AssertException; +import graphql.Internal; +import graphql.language.ArrayValue; +import graphql.language.BooleanValue; +import graphql.language.EnumValue; +import graphql.language.FloatValue; +import graphql.language.IntValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.language.VariableDefinition; +import graphql.language.VariableReference; +import graphql.parser.Parser; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static java.util.stream.Collectors.toList; + +@Internal +public class ValueToVariableValueCompiler { + + static VariableValueWithDefinition normalizedInputValueToVariable(NormalizedInputValue normalizedInputValue, int queryVariableCount) { + Object variableValue = normalisedValueToVariableValue(normalizedInputValue); + String varName = getVarName(queryVariableCount); + return new VariableValueWithDefinition( + variableValue, + VariableDefinition.newVariableDefinition() + .name(varName) + .type(Parser.parseType(normalizedInputValue.getTypeName())) + .build(), + VariableReference.newVariableReference().name(varName).build()); + } + + @SuppressWarnings("unchecked") + @Nullable + static Object normalisedValueToVariableValue(Object maybeValue) { + Object variableValue; + if (maybeValue instanceof NormalizedInputValue) { + NormalizedInputValue normalizedInputValue = (NormalizedInputValue) maybeValue; + Object inputValue = normalizedInputValue.getValue(); + if (inputValue instanceof Value) { + variableValue = toVariableValue((Value) inputValue); + } else if (inputValue instanceof List) { + variableValue = normalisedValueToVariableValues((List) inputValue); + } else if (inputValue instanceof Map) { + variableValue = normalisedValueToVariableValues((Map) inputValue); + } else if (inputValue == null) { + variableValue = null; + } else { + throw new AssertException("Should never happen. Did not expect NormalizedInputValue.getValue() of type: " + maybeClass(inputValue)); + } + } else if (maybeValue instanceof Value) { + Value value = (Value) maybeValue; + variableValue = toVariableValue(value); + } else if (maybeValue instanceof List) { + variableValue = normalisedValueToVariableValues((List) maybeValue); + } else if (maybeValue instanceof Map) { + variableValue = normalisedValueToVariableValues((Map) maybeValue); + } else { + throw new AssertException("Should never happen. Did not expect type: " + maybeClass(maybeValue)); + } + return variableValue; + } + + private static List normalisedValueToVariableValues(List arrayValues) { + return arrayValues.stream() + .map(ValueToVariableValueCompiler::normalisedValueToVariableValue) + .collect(toList()); + } + + @NonNull + private static Map normalisedValueToVariableValues(Map objectMap) { + Map output = new LinkedHashMap<>(); + objectMap.forEach((k, v) -> { + Object value = normalisedValueToVariableValue(v); + output.put(k, value); + }); + return output; + } + + private static Map toVariableValue(ObjectValue objectValue) { + Map map = new LinkedHashMap<>(); + List objectFields = objectValue.getObjectFields(); + for (ObjectField objectField : objectFields) { + String objectFieldName = objectField.getName(); + Value objectFieldValue = objectField.getValue(); + map.put(objectFieldName, toVariableValue(objectFieldValue)); + } + return map; + } + + @NonNull + private static List toVariableValues(List arrayValues) { + // some values can be null (NullValue) and hence we can use Immutable Lists + return arrayValues.stream() + .map(ValueToVariableValueCompiler::toVariableValue) + .collect(toList()); + } + + @Nullable + private static Object toVariableValue(Value value) { + if (value instanceof ObjectValue) { + return toVariableValue((ObjectValue) value); + } else if (value instanceof ArrayValue) { + return toVariableValues(((ArrayValue) value).getValues()); + } else if (value instanceof StringValue) { + return ((StringValue) value).getValue(); + } else if (value instanceof FloatValue) { + return ((FloatValue) value).getValue(); + } else if (value instanceof IntValue) { + return ((IntValue) value).getValue(); + } else if (value instanceof BooleanValue) { + return ((BooleanValue) value).isValue(); + } else if (value instanceof EnumValue) { + return ((EnumValue) value).getName(); + } else if (value instanceof NullValue) { + return null; + } + throw new AssertException("Should never happen. Cannot handle node of type: " + maybeClass(value)); + } + + private static Object maybeClass(Object maybe) { + return maybe == null ? "null" : maybe.getClass(); + } + + private static String getVarName(int variableOrdinal) { + return "v" + variableOrdinal; + } + +} diff --git a/src/main/java/graphql/normalized/VariableAccumulator.java b/src/main/java/graphql/normalized/VariableAccumulator.java new file mode 100644 index 0000000000..08b3db4eb4 --- /dev/null +++ b/src/main/java/graphql/normalized/VariableAccumulator.java @@ -0,0 +1,70 @@ +package graphql.normalized; + +import graphql.Internal; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.language.VariableDefinition; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static graphql.normalized.ValueToVariableValueCompiler.normalizedInputValueToVariable; + +/** + * This accumulator class decides on whether to create a variable for a query argument and if so it tracks what variables were made. + * The {@link ExecutableNormalizedOperationToAstCompiler} then uses all the variables when it compiles the final document. + */ +@Internal +public class VariableAccumulator { + + private final List valueWithDefinitions; + @Nullable + private final VariablePredicate variablePredicate; + + public VariableAccumulator(@Nullable VariablePredicate variablePredicate) { + this.variablePredicate = variablePredicate; + valueWithDefinitions = new ArrayList<>(); + } + + public boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + // when a variable is used on the argument to a query directive then the queryAppliedDirective will be nonnull. + // otherwise it must be a field argument + if (queryAppliedDirective != null) { + return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue); + } else { + return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue); + } + } + + public VariableValueWithDefinition accumulateVariable(NormalizedInputValue normalizedInputValue) { + VariableValueWithDefinition variableWithDefinition = normalizedInputValueToVariable(normalizedInputValue, getAccumulatedSize()); + valueWithDefinitions.add(variableWithDefinition); + return variableWithDefinition; + } + + public int getAccumulatedSize() { + return valueWithDefinitions.size(); + } + + /** + * @return the variable definitions that would go on the operation declaration + */ + public List getVariableDefinitions() { + return valueWithDefinitions.stream().map(VariableValueWithDefinition::getDefinition).collect(Collectors.toList()); + } + + /** + * @return the map of variable names to variable values + */ + public Map getVariablesMap() { + Map map = new LinkedHashMap<>(); + valueWithDefinitions.forEach(variableWithDefinition -> { + String name = variableWithDefinition.getDefinition().getName(); + map.put(name, variableWithDefinition.getValue()); + }); + return map; + } +} diff --git a/src/main/java/graphql/normalized/VariablePredicate.java b/src/main/java/graphql/normalized/VariablePredicate.java new file mode 100644 index 0000000000..a516c308ec --- /dev/null +++ b/src/main/java/graphql/normalized/VariablePredicate.java @@ -0,0 +1,42 @@ +package graphql.normalized; + +import graphql.PublicSpi; +import graphql.execution.directives.QueryAppliedDirective; + +/** + * This predicate indicates whether a variable should be made for this field argument OR whether it will be compiled + * into a graphql AST literal. + */ +@PublicSpi +public interface VariablePredicate { + /** + * Return true if a variable should be made for this field argument + * + * @param executableNormalizedField the field in question + * @param argName the argument on the field + * @param normalizedInputValue the input value for that argument + * + * @return true if a variable should be made + */ + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, + String argName, + NormalizedInputValue normalizedInputValue); + + /** + * Return true if a variable should be made for this query directive argument + * on the specified field + * + * @param executableNormalizedField the field in question + * @param queryAppliedDirective the query directive in question + * @param argName the argument on the directive + * @param normalizedInputValue the input value for that argument + * + * @return true if a variable should be made + */ + default boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + NormalizedInputValue normalizedInputValue) { + return false; + } +} diff --git a/src/main/java/graphql/normalized/VariableValueWithDefinition.java b/src/main/java/graphql/normalized/VariableValueWithDefinition.java new file mode 100644 index 0000000000..39950b8786 --- /dev/null +++ b/src/main/java/graphql/normalized/VariableValueWithDefinition.java @@ -0,0 +1,30 @@ +package graphql.normalized; + +import graphql.Internal; +import graphql.language.VariableDefinition; +import graphql.language.VariableReference; + +@Internal +public class VariableValueWithDefinition { + private final Object value; + private final VariableDefinition definition; + private final VariableReference variableReference; + + public VariableValueWithDefinition(Object value, VariableDefinition definition, VariableReference variableReference) { + this.value = value; + this.definition = definition; + this.variableReference = variableReference; + } + + public Object getValue() { + return value; + } + + public VariableDefinition getDefinition() { + return definition; + } + + public VariableReference getVariableReference() { + return variableReference; + } +} diff --git a/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java b/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java new file mode 100644 index 0000000000..2eab7b5044 --- /dev/null +++ b/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java @@ -0,0 +1,129 @@ +package graphql.normalized.incremental; + +import graphql.ExperimentalApi; +import graphql.schema.GraphQLObjectType; +import org.jspecify.annotations.Nullable; + +import java.util.Set; + +/** + * Represents details about the defer execution that can be associated with a {@link graphql.normalized.ExecutableNormalizedField}. + * + * Taking this schema as an example: + *
    + *     type Query { animal: Animal }
    + *     interface Animal { name: String, age: Int }
    + *     type Cat implements Animal { name: String, age: Int }
    + *     type Dog implements Animal { name: String, age: Int }
    + * 
    + * + * An ENF can be associated with multiple `NormalizedDeferredExecution`s + * + * For example, this query: + *
    + *     query MyQuery {
    + *         animal {
    + *             ... @defer {
    + *                 name
    + *             }
    + *             ... @defer {
    + *                 name
    + *             }
    + *         }
    + *     }
    + * 
    + * + * Would result in one ENF (name) associated with 2 `NormalizedDeferredExecution` instances. This is relevant for the execution + * since the field would have to be included in 2 incremental payloads. (I know, there's some duplication here, but + * this is the current state of the spec. There are some discussions happening around de-duplicating data in scenarios + * like this, so this behaviour might change in the future). + * + * A `NormalizedDeferredExecution` may be associated with a list of possible types + * + * For example, this query: + *
    + *     query MyQuery {
    + *         animal {
    + *             ... @defer {
    + *                 name
    + *             }
    + *         }
    + *     }
    + * 
    + * results in a `NormalizedDeferredExecution` with no label and possible types [Dog, Cat] + * + * A `NormalizedDeferredExecution` may be associated with specific types + * For example, this query: + *
    + *     query MyQuery {
    + *         animal {
    + *             ... on Cat @defer {
    + *                 name
    + *             }
    + *             ... on Dog {
    + *                 name
    + *             }
    + *         }
    + *     }
    + * 
    + * results in a single ENF (name) associated with a `NormalizedDeferredExecution` with only "Cat" as a possible type. This means + * that, at execution time, `name` should be deferred only if the return object is a "Cat" (but not a if it is a "Dog"). + * + * ENFs associated with the same instance of `NormalizedDeferredExecution` will be resolved in the same incremental response payload + * For example, take these queries: + * + *
    + *     query Query1 {
    + *         animal {
    + *             ... @defer {
    + *                 name
    + *             }
    + *             ... @defer {
    + *                 age
    + *             }
    + *         }
    + *     }
    + *
    + *     query Query2 {
    + *         animal {
    + *             ... @defer {
    + *                 name
    + *                 age
    + *             }
    + *         }
    + *     }
    + * 
    + * + * In `Query1`, the ENFs name and age are associated with different instances of `NormalizedDeferredExecution`. This means that, + * during execution, `name` and `age` can be delivered at different times (if name is resolved faster, it will be + * delivered first, and vice-versa). + * In `Query2` the fields will share the same instance of `NormalizedDeferredExecution`. This ensures that, at execution time, the + * fields are guaranteed to be delivered together. In other words, execution should wait until the slowest field resolves + * and deliver both fields at the same time. + * + */ +@ExperimentalApi +public class NormalizedDeferredExecution { + private final String label; + private final Set possibleTypes; + + public NormalizedDeferredExecution(@Nullable String label, Set possibleTypes) { + this.label = label; + this.possibleTypes = possibleTypes; + } + + /** + * @return the label associated with this defer declaration + */ + @Nullable + public String getLabel() { + return label; + } + + /** + * @return the concrete object types that are associated with this defer execution + */ + public Set getPossibleTypes() { + return possibleTypes; + } +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java new file mode 100644 index 0000000000..6bb306fa50 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -0,0 +1,47 @@ +package graphql.normalized.nf; + +import graphql.Assert; +import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +@ExperimentalApi +public class NormalizedDocument { + + private final List normalizedOperations; + + public NormalizedDocument(List normalizedOperations) { + this.normalizedOperations = normalizedOperations; + } + + public List getNormalizedOperations() { + return normalizedOperations; + } + + public NormalizedOperation getSingleNormalizedOperation() { + Assert.assertTrue(normalizedOperations.size() == 1, "Expecting a single normalized operation"); + return normalizedOperations.get(0).getNormalizedOperation(); + } + + public static class NormalizedOperationWithAssumedSkipIncludeVariables { + + Map assumedSkipIncludeVariables; + NormalizedOperation normalizedOperation; + + public NormalizedOperationWithAssumedSkipIncludeVariables(@Nullable Map assumedSkipIncludeVariables, NormalizedOperation normalizedOperation) { + this.assumedSkipIncludeVariables = assumedSkipIncludeVariables; + this.normalizedOperation = normalizedOperation; + } + + public Map getAssumedSkipIncludeVariables() { + return assumedSkipIncludeVariables; + } + + public NormalizedOperation getNormalizedOperation() { + return normalizedOperation; + } + } +} + diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java new file mode 100644 index 0000000000..0d5c5c77b1 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -0,0 +1,683 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import graphql.collect.ImmutableKit; +import graphql.execution.AbortExecutionException; +import graphql.execution.MergedField; +import graphql.execution.conditional.ConditionalNodes; +import graphql.execution.directives.QueryDirectives; +import graphql.introspection.Introspection; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.FragmentDefinition; +import graphql.language.FragmentSpread; +import graphql.language.InlineFragment; +import graphql.language.NodeUtil; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLUnionType; +import graphql.schema.GraphQLUnmodifiedType; +import graphql.schema.impl.SchemaUtil; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.collect.ImmutableKit.map; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static graphql.util.FpKit.filterSet; +import static graphql.util.FpKit.groupingBy; +import static graphql.util.FpKit.intersection; +import static java.util.Collections.singleton; +import static java.util.Collections.singletonList; + +@ExperimentalApi +public class NormalizedDocumentFactory { + + public static class Options { + + + private final GraphQLContext graphQLContext; + private final Locale locale; + private final int maxChildrenDepth; + private final int maxFieldsCount; + + private final boolean deferSupport; + + /** + * The default max fields count is 100,000. + * This is big enough for even very large queries, but + * can be changed via {#setDefaultOptions + */ + public static final int DEFAULT_MAX_FIELDS_COUNT = 100_000; + private static Options defaultOptions = new Options(GraphQLContext.getDefault(), + Locale.getDefault(), + Integer.MAX_VALUE, + DEFAULT_MAX_FIELDS_COUNT, + false); + + private Options(GraphQLContext graphQLContext, + Locale locale, + int maxChildrenDepth, + int maxFieldsCount, + boolean deferSupport) { + this.graphQLContext = graphQLContext; + this.locale = locale; + this.maxChildrenDepth = maxChildrenDepth; + this.deferSupport = deferSupport; + this.maxFieldsCount = maxFieldsCount; + } + + /** + * Sets new default Options used when creating instances of {@link NormalizedDocument}. + * + * @param options new default options + */ + public static void setDefaultOptions(Options options) { + defaultOptions = Assert.assertNotNull(options); + } + + + /** + * Returns the default options used when creating instances of {@link NormalizedDocument}. + * + * @return the default options + */ + public static Options defaultOptions() { + return defaultOptions; + } + + /** + * Locale to use when parsing the query. + *

    + * e.g. can be passed to {@link graphql.schema.Coercing} for parsing. + * + * @param locale the locale to use + * + * @return new options object to use + */ + public Options locale(Locale locale) { + return new Options(this.graphQLContext, locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Context object to use when parsing the operation. + *

    + * Can be used to intercept input values e.g. using {@link graphql.execution.values.InputInterceptor}. + * + * @param graphQLContext the context to use + * + * @return new options object to use + */ + public Options graphQLContext(GraphQLContext graphQLContext) { + return new Options(graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum depth of the operation. Can be used to prevent + * against malicious operations. + * + * @param maxChildrenDepth the max depth + * + * @return new options object to use + */ + public Options maxChildrenDepth(int maxChildrenDepth) { + return new Options(this.graphQLContext, this.locale, maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum number of ENFs created. Can be used to prevent + * against malicious operations. + * + * @param maxFieldsCount the max number of ENFs created + * + * @return new options object to use + */ + public Options maxFieldsCount(int maxFieldsCount) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, maxFieldsCount, this.deferSupport); + } + + /** + * Controls whether defer execution is supported when creating instances of {@link NormalizedDocument}. + * + * @param deferSupport true to enable support for defer + * + * @return new options object to use + */ + @ExperimentalApi + public Options deferSupport(boolean deferSupport) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, deferSupport); + } + + /** + * @return context to use during operation parsing + * + * @see #graphQLContext(GraphQLContext) + */ + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * @return locale to use during operation parsing + * + * @see #locale(Locale) + */ + public Locale getLocale() { + return locale; + } + + /** + * @return maximum children depth before aborting parsing + * + * @see #maxChildrenDepth(int) + */ + public int getMaxChildrenDepth() { + return maxChildrenDepth; + } + + public int getMaxFieldsCount() { + return maxFieldsCount; + } + + } + + private static final ConditionalNodes conditionalNodes = new ConditionalNodes(); + + private NormalizedDocumentFactory() { + + } + + public static NormalizedDocument createNormalizedDocument( + GraphQLSchema graphQLSchema, + Document document) { + return createNormalizedDocument( + graphQLSchema, + document, + Options.defaultOptions()); + } + + + public static NormalizedDocument createNormalizedDocument(GraphQLSchema graphQLSchema, + Document document, + Options options) { + return new NormalizedDocumentFactoryImpl( + graphQLSchema, + document, + options + ).createNormalizedQueryImpl(); + } + + + private static class NormalizedDocumentFactoryImpl { + private final GraphQLSchema graphQLSchema; + private final Document document; + private final Options options; + private final Map fragments; + + private final List possibleMergerList = new ArrayList<>(); + + private ImmutableListMultimap.Builder fieldToNormalizedField = ImmutableListMultimap.builder(); + private ImmutableMap.Builder normalizedFieldToMergedField = ImmutableMap.builder(); + private ImmutableMap.Builder normalizedFieldToQueryDirectives = ImmutableMap.builder(); + private ImmutableListMultimap.Builder coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + + private int fieldCount = 0; + private int maxDepthSeen = 0; + + private final List rootEnfs = new ArrayList<>(); + + private final Set skipIncludeVariableNames = new LinkedHashSet<>(); + + private Map assumedSkipIncludeVariableValues; + + private NormalizedDocumentFactoryImpl( + GraphQLSchema graphQLSchema, + Document document, + Options options + ) { + this.graphQLSchema = graphQLSchema; + this.document = document; + this.options = options; + this.fragments = NodeUtil.getFragmentsByName(document); + } + + /** + * Creates a new NormalizedDocument for the provided query + */ + private NormalizedDocument createNormalizedQueryImpl() { + List normalizedOperations = new ArrayList<>(); + for (OperationDefinition operationDefinition : document.getDefinitionsOfType(OperationDefinition.class)) { + + assumedSkipIncludeVariableValues = null; + skipIncludeVariableNames.clear(); + NormalizedOperation normalizedOperation = createNormalizedOperation(operationDefinition); + + if (skipIncludeVariableNames.size() == 0) { + normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(null, normalizedOperation)); + } else { + int combinations = (int) Math.pow(2, skipIncludeVariableNames.size()); + for (int i = 0; i < combinations; i++) { + assumedSkipIncludeVariableValues = new LinkedHashMap<>(); + int variableIndex = 0; + for (String variableName : skipIncludeVariableNames) { + assumedSkipIncludeVariableValues.put(variableName, (i & (1 << variableIndex++)) != 0); + } + NormalizedOperation operationWithAssumedVariables = createNormalizedOperation(operationDefinition); + normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(assumedSkipIncludeVariableValues, operationWithAssumedVariables)); + } + } + } + + return new NormalizedDocument( + normalizedOperations + ); + } + + private NormalizedOperation createNormalizedOperation(OperationDefinition operationDefinition) { + this.rootEnfs.clear(); + this.fieldCount = 0; + this.maxDepthSeen = 0; + this.possibleMergerList.clear(); + fieldToNormalizedField = ImmutableListMultimap.builder(); + normalizedFieldToMergedField = ImmutableMap.builder(); + normalizedFieldToQueryDirectives = ImmutableMap.builder(); + coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + + buildNormalizedFieldsRecursively(null, operationDefinition, null, 0); + + for (PossibleMerger possibleMerger : possibleMergerList) { + List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); + NormalizedFieldsMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema); + } + + NormalizedOperation normalizedOperation = new NormalizedOperation( + operationDefinition.getOperation(), + operationDefinition.getName(), + new ArrayList<>(rootEnfs), + fieldToNormalizedField.build(), + normalizedFieldToMergedField.build(), + normalizedFieldToQueryDirectives.build(), + coordinatesToNormalizedFields.build(), + fieldCount, + maxDepthSeen + ); + return normalizedOperation; + } + + + private void captureMergedField(NormalizedField enf, MergedField mergedFld) { +// // QueryDirectivesImpl is a lazy object and only computes itself when asked for +// QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); +// normalizedFieldToQueryDirectives.put(enf, queryDirectives); + normalizedFieldToMergedField.put(enf, mergedFld); + } + + private void buildNormalizedFieldsRecursively(@Nullable NormalizedField normalizedField, + @Nullable OperationDefinition operationDefinition, + @Nullable ImmutableList fieldAndAstParents, + int curLevel) { + if (this.maxDepthSeen < curLevel) { + this.maxDepthSeen = curLevel; + checkMaxDepthExceeded(curLevel); + } + Set possibleObjects; + List collectedFields; + + // special handling for the root selection Set + if (normalizedField == null) { + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + possibleObjects = ImmutableSet.of(rootType); + collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects); + } else { + List fieldDefs = normalizedField.getFieldDefinitions(graphQLSchema); + possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return; + } + collectedFields = new ArrayList<>(); + for (CollectedField fieldAndAstParent : fieldAndAstParents) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + // the AST parent comes from the previous collect from selection set call + // and is the type to which the field belongs (the container type of the field) and output type + // of the field needs to be determined based on the field name + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); + // it must a composite type, because the field has a selection set + GraphQLCompositeType selectionSetType = (GraphQLCompositeType) unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + selectionSetType, + possibleObjects + ); + } + } + + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, normalizedField); + + ImmutableList nextLevelChildren = resultNFs.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + + for (NormalizedField childENF : nextLevelChildren) { + if (normalizedField == null) { + // all root ENFs don't have a parent, but are collected in the rootEnfs list + rootEnfs.add(childENF); + } else { + normalizedField.addChild(childENF); + } + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); + + MergedField mergedField = newMergedField(childFieldAndAstParents); + captureMergedField(childENF, mergedField); + + updateFieldToNFMap(childENF, childFieldAndAstParents); + updateCoordinatedToNFMap(childENF); + + // recursive call + buildNormalizedFieldsRecursively(childENF, + null, + childFieldAndAstParents, + curLevel + 1); + } + } + + private void checkMaxDepthExceeded(int depthSeen) { + if (depthSeen > this.options.getMaxChildrenDepth()) { + throw new AbortExecutionException("Maximum query depth exceeded. " + depthSeen + " > " + this.options.getMaxChildrenDepth()); + } + } + + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); + } + + private void updateFieldToNFMap(NormalizedField NormalizedField, + ImmutableList mergedField) { + for (CollectedField astField : mergedField) { + fieldToNormalizedField.put(astField.field, NormalizedField); + } + } + + private void updateCoordinatedToNFMap(NormalizedField topLevel) { + for (String objectType : topLevel.getObjectTypeNames()) { + FieldCoordinates coordinates = FieldCoordinates.coordinates(objectType, topLevel.getFieldName()); + coordinatesToNormalizedFields.put(coordinates, topLevel); + } + } + + + private Map> fieldsByResultKey(List collectedFields) { + Map> fieldsByName = new LinkedHashMap<>(); + for (CollectedField collectedField : collectedFields) { + fieldsByName.computeIfAbsent(collectedField.field.getResultKey(), ignored -> new ArrayList<>()).add(collectedField); + } + return fieldsByName; + } + + + private void createNFs(ImmutableList.Builder nfListBuilder, + Map> fieldsByName, + ImmutableListMultimap.Builder normalizedFieldToAstFields, + int level, + NormalizedField parent) { + for (String resultKey : fieldsByName.keySet()) { + List fieldsWithSameResultKey = fieldsByName.get(resultKey); + List commonParentsGroups = groupByCommonParents(fieldsWithSameResultKey); + for (CollectedFieldGroup fieldGroup : commonParentsGroups) { + NormalizedField nf = createNF(fieldGroup, level, parent); + if (nf == null) { + continue; + } + for (CollectedField collectedField : fieldGroup.fields) { + normalizedFieldToAstFields.put(nf, collectedField); + } + nfListBuilder.add(nf); + + } + if (commonParentsGroups.size() > 1) { + possibleMergerList.add(new PossibleMerger(parent, resultKey)); + } + } + } + + // new single ENF + private NormalizedField createNF(CollectedFieldGroup collectedFieldGroup, + int level, + NormalizedField parent) { + + this.fieldCount++; + if (this.fieldCount > this.options.getMaxFieldsCount()) { + throw new AbortExecutionException("Maximum field count exceeded. " + this.fieldCount + " > " + this.options.getMaxFieldsCount()); + } + Field field; + Set objectTypes = collectedFieldGroup.objectTypes; + field = collectedFieldGroup.fields.iterator().next().field; + List directives = collectedFieldGroup.fields.stream().flatMap(f -> f.field.getDirectives().stream()).collect(Collectors.toList()); + String fieldName = field.getName(); + ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); + return NormalizedField.newNormalizedField() + .alias(field.getAlias()) + .astArguments(field.getArguments()) + .astDirectives(directives) + .objectTypeNames(objectTypeNames) + .fieldName(fieldName) + .level(level) + .parent(parent) + .build(); + } + + + private List groupByCommonParents(Collection fields) { + ImmutableSet.Builder objectTypes = ImmutableSet.builder(); + for (CollectedField collectedField : fields) { + objectTypes.addAll(collectedField.objectTypes); + } + Set allRelevantObjects = objectTypes.build(); + Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); + if (groupByAstParent.size() == 1) { + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects)); + } + ImmutableList.Builder result = ImmutableList.builder(); + for (GraphQLObjectType objectType : allRelevantObjects) { + Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType))); + } + return result.build(); + } + + + private void collectFromSelectionSet(SelectionSet selectionSet, + List result, + GraphQLCompositeType astTypeCondition, + Set possibleObjects + ) { + for (Selection selection : selectionSet.getSelections()) { + if (selection instanceof Field) { + collectField(result, (Field) selection, possibleObjects, astTypeCondition); + } else if (selection instanceof InlineFragment) { + collectInlineFragment(result, (InlineFragment) selection, possibleObjects, astTypeCondition); + } else if (selection instanceof FragmentSpread) { + collectFragmentSpread(result, (FragmentSpread) selection, possibleObjects); + } + } + } + + private void collectFragmentSpread(List result, + FragmentSpread fragmentSpread, + Set possibleObjects + ) { +// if (!conditionalNodes.shouldInclude(fragmentSpread, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } + FragmentDefinition fragmentDefinition = assertNotNull(this.fragments.get(fragmentSpread.getName())); + +// if (!conditionalNodes.shouldInclude(fragmentDefinition, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } + GraphQLCompositeType newAstTypeCondition = (GraphQLCompositeType) assertNotNull(this.graphQLSchema.getType(fragmentDefinition.getTypeCondition().getName())); + Set newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); + } + + private void collectInlineFragment(List result, + InlineFragment inlineFragment, + Set possibleObjects, + GraphQLCompositeType astTypeCondition + ) { +// if (!conditionalNodes.shouldInclude(inlineFragment, this.coercedVariableValues.toMap(), this.graphQLSchema, this.options.graphQLContext)) { +// return; +// } + Set newPossibleObjects = possibleObjects; + GraphQLCompositeType newAstTypeCondition = astTypeCondition; + + if (inlineFragment.getTypeCondition() != null) { + newAstTypeCondition = (GraphQLCompositeType) this.graphQLSchema.getType(inlineFragment.getTypeCondition().getName()); + newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + + } + + + collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); + } + + private void collectField(List result, + Field field, + Set possibleObjectTypes, + GraphQLCompositeType astTypeCondition + ) { + Boolean shouldInclude; + if (assumedSkipIncludeVariableValues == null) { + if ((shouldInclude = conditionalNodes.shouldIncludeWithoutVariables(field)) == null) { + + String skipVariableName = conditionalNodes.getSkipVariableName(field); + String includeVariableName = conditionalNodes.getIncludeVariableName(field); + if (skipVariableName != null) { + skipIncludeVariableNames.add(skipVariableName); + } + if (includeVariableName != null) { + skipIncludeVariableNames.add(includeVariableName); + } + } + if (shouldInclude != null && !shouldInclude) { + return; + } + } else { + if (!conditionalNodes.shouldInclude(field, (Map) assumedSkipIncludeVariableValues, graphQLSchema, null)) { + return; + } + } + // this means there is actually no possible type for this field, and we are done + if (possibleObjectTypes.isEmpty()) { + return; + } + result.add(new CollectedField(field, possibleObjectTypes, astTypeCondition)); + } + + private Set narrowDownPossibleObjects(Set currentOnes, + GraphQLCompositeType typeCondition) { + + ImmutableSet resolvedTypeCondition = resolvePossibleObjects(typeCondition); + if (currentOnes.isEmpty()) { + return resolvedTypeCondition; + } + + // Faster intersection, as either set often has a size of 1. + return intersection(currentOnes, resolvedTypeCondition); + } + + private ImmutableSet resolvePossibleObjects(List defs) { + ImmutableSet.Builder builder = ImmutableSet.builder(); + + for (GraphQLFieldDefinition def : defs) { + GraphQLUnmodifiedType outputType = unwrapAll(def.getType()); + if (outputType instanceof GraphQLCompositeType) { + builder.addAll(resolvePossibleObjects((GraphQLCompositeType) outputType)); + } + } + + return builder.build(); + } + + private ImmutableSet resolvePossibleObjects(GraphQLCompositeType type) { + if (type instanceof GraphQLObjectType) { + return ImmutableSet.of((GraphQLObjectType) type); + } else if (type instanceof GraphQLInterfaceType) { + return ImmutableSet.copyOf(graphQLSchema.getImplementations((GraphQLInterfaceType) type)); + } else if (type instanceof GraphQLUnionType) { + List unionTypes = ((GraphQLUnionType) type).getTypes(); + return ImmutableSet.copyOf(ImmutableKit.map(unionTypes, GraphQLObjectType.class::cast)); + } else { + return assertShouldNeverHappen(); + } + } + + private static class PossibleMerger { + NormalizedField parent; + String resultKey; + + public PossibleMerger(NormalizedField parent, String resultKey) { + this.parent = parent; + this.resultKey = resultKey; + } + } + + private static class CollectedField { + Field field; + Set objectTypes; + GraphQLCompositeType astTypeCondition; + + public CollectedField(Field field, Set objectTypes, GraphQLCompositeType astTypeCondition) { + this.field = field; + this.objectTypes = objectTypes; + this.astTypeCondition = astTypeCondition; + } + } + + private static class CollectedFieldGroup { + Set objectTypes; + Set fields; + + public CollectedFieldGroup(Set fields, Set objectTypes) { + this.fields = fields; + this.objectTypes = objectTypes; + } + } + } + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedField.java b/src/main/java/graphql/normalized/nf/NormalizedField.java new file mode 100644 index 0000000000..78aead5d2b --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedField.java @@ -0,0 +1,678 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.ExperimentalApi; +import graphql.Internal; +import graphql.Mutable; +import graphql.collect.ImmutableKit; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.NormalizedInputValue; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnionType; +import graphql.util.FpKit; +import graphql.util.MutableRef; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertTrue; +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; + +/** + * An {@link NormalizedField} represents a field in an executable graphql operation. Its models what + * could be executed during a given operation. + *

    + * This class is intentionally mutable for performance reasons since building immutable parent child + * objects is too expensive. + */ +@ExperimentalApi +@Mutable +public class NormalizedField { + private final String alias; + private final ImmutableMap normalizedArguments; + private final LinkedHashMap resolvedArguments; + private final ImmutableList astArguments; + private List astDirectives; + + // Mutable List on purpose: it is modified after creation + private final LinkedHashSet objectTypeNames; + private final ArrayList children; + private NormalizedField parent; + + private final String fieldName; + private final int level; + + + private NormalizedField(Builder builder) { + this.alias = builder.alias; + this.resolvedArguments = builder.resolvedArguments; + this.normalizedArguments = builder.normalizedArguments; + this.astArguments = builder.astArguments; + this.objectTypeNames = builder.objectTypeNames; + this.fieldName = assertNotNull(builder.fieldName); + this.children = builder.children; + this.level = builder.level; + this.parent = builder.parent; + this.astDirectives = builder.astDirectives; + } + + /** + * Determines whether this {@link NormalizedField} needs a fragment to select the field. However, it considers the parent + * output type when determining whether it needs a fragment. + *

    + * Consider the following schema + * + *

    +     * interface Animal {
    +     *     name: String
    +     *     parent: Animal
    +     * }
    +     * type Cat implements Animal {
    +     *     name: String
    +     *     parent: Cat
    +     * }
    +     * type Dog implements Animal {
    +     *     name: String
    +     *     parent: Dog
    +     *     isGoodBoy: Boolean
    +     * }
    +     * type Query {
    +     *     animal: Animal
    +     * }
    +     * 
    + *

    + * and the following query + * + *

    +     * {
    +     *     animal {
    +     *         parent {
    +     *             name
    +     *         }
    +     *     }
    +     * }
    +     * 
    + *

    + * Then we would get the following {@link ExecutableNormalizedOperation} + * + *

    +     * -Query.animal: Animal
    +     * --[Cat, Dog].parent: Cat, Dog
    +     * ---[Cat, Dog].name: String
    +     * 
    + *

    + * If we simply checked the {@link #parent}'s {@link #getFieldDefinitions(GraphQLSchema)} that would + * point us to {@code Cat.parent} and {@code Dog.parent} whose output types would incorrectly answer + * our question whether this is conditional? + *

    + * We MUST consider that the output type of the {@code parent} field is {@code Animal} and + * NOT {@code Cat} or {@code Dog} as their respective implementations would say. + * + * @param schema - the graphql schema in play + * @return true if the field is conditional + */ + public boolean isConditional(@NonNull GraphQLSchema schema) { + if (parent == null) { + return false; + } + + for (GraphQLInterfaceType commonParentOutputInterface : parent.getInterfacesCommonToAllOutputTypes(schema)) { + List implementations = schema.getImplementations(commonParentOutputInterface); + // __typename + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && implementations.size() == objectTypeNames.size()) { + return false; + } + if (commonParentOutputInterface.getField(fieldName) == null) { + continue; + } + if (implementations.size() == objectTypeNames.size()) { + return false; + } + } + + // __typename is the only field in a union type that CAN be NOT conditional + GraphQLFieldDefinition parentFieldDef = parent.getOneFieldDefinition(schema); + if (unwrapAll(parentFieldDef.getType()) instanceof GraphQLUnionType) { + GraphQLUnionType parentOutputTypeAsUnion = (GraphQLUnionType) unwrapAll(parentFieldDef.getType()); + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && objectTypeNames.size() == parentOutputTypeAsUnion.getTypes().size()) { + return false; // Not conditional + } + } + + // This means there is no Union or Interface which could serve as unconditional parent + if (objectTypeNames.size() > 1) { + return true; // Conditional + } + if (parent.objectTypeNames.size() > 1) { + return true; + } + + GraphQLObjectType oneObjectType = (GraphQLObjectType) schema.getType(objectTypeNames.iterator().next()); + return unwrapAll(parentFieldDef.getType()) != oneObjectType; + } + + public boolean hasChildren() { + return children.size() > 0; + } + + public GraphQLOutputType getType(GraphQLSchema schema) { + List fieldDefinitions = getFieldDefinitions(schema); + Set fieldTypes = fieldDefinitions.stream().map(fd -> simplePrint(fd.getType())).collect(toSet()); + assertTrue(fieldTypes.size() == 1, "More than one type ... use getTypes"); + return fieldDefinitions.get(0).getType(); + } + + public List getTypes(GraphQLSchema schema) { + return ImmutableKit.map(getFieldDefinitions(schema), fd -> fd.getType()); + } + + public void forEachFieldDefinition(GraphQLSchema schema, Consumer consumer) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + consumer.accept(fieldDefinition); + return; + } + + for (String objectTypeName : objectTypeNames) { + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + consumer.accept(assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName)); + } + } + + public List getFieldDefinitions(GraphQLSchema schema) { + ImmutableList.Builder builder = ImmutableList.builder(); + forEachFieldDefinition(schema, builder::add); + return builder.build(); + } + + /** + * This is NOT public as it is not recommended usage. + *

    + * Internally there are cases where we know it is safe to use this, so this exists. + */ + private GraphQLFieldDefinition getOneFieldDefinition(GraphQLSchema schema) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + return fieldDefinition; + } + + String objectTypeName = objectTypeNames.iterator().next(); + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + return assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName); + } + + private static GraphQLFieldDefinition resolveIntrospectionField(GraphQLSchema schema, Set objectTypeNames, String fieldName) { + if (fieldName.equals(schema.getIntrospectionTypenameFieldDefinition().getName())) { + return schema.getIntrospectionTypenameFieldDefinition(); + } else if (objectTypeNames.size() == 1 && objectTypeNames.iterator().next().equals(schema.getQueryType().getName())) { + if (fieldName.equals(schema.getIntrospectionSchemaFieldDefinition().getName())) { + return schema.getIntrospectionSchemaFieldDefinition(); + } else if (fieldName.equals(schema.getIntrospectionTypeFieldDefinition().getName())) { + return schema.getIntrospectionTypeFieldDefinition(); + } + } + return null; + } + + @Internal + public void addObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void setObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.clear(); + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void addChild(NormalizedField normalizedField) { + this.children.add(normalizedField); + } + + @Internal + public void clearChildren() { + this.children.clear(); + } + + + /** + * All merged fields have the same name so this is the name of the {@link NormalizedField}. + *

    + * WARNING: This is not always the key in the execution result, because of possible field aliases. + * + * @return the name of this {@link NormalizedField} + * @see #getResultKey() + * @see #getAlias() + */ + public String getName() { + return getFieldName(); + } + + /** + * @return the same value as {@link #getName()} + * @see #getResultKey() + * @see #getAlias() + */ + public String getFieldName() { + return fieldName; + } + + /** + * Returns the result key of this {@link NormalizedField} within the overall result. + * This is either a field alias or the value of {@link #getName()} + * + * @return the result key for this {@link NormalizedField}. + * @see #getName() + */ + public String getResultKey() { + if (alias != null) { + return alias; + } + return getName(); + } + + /** + * @return the field alias used or null if there is none + * @see #getResultKey() + * @see #getName() + */ + public String getAlias() { + return alias; + } + + /** + * @return a list of the {@link Argument}s on the field + */ + public ImmutableList getAstArguments() { + return astArguments; + } + + public List getAstDirectives() { + return astDirectives; + } + + public void setAstDirectives(List astDirectives) { + this.astDirectives = astDirectives; + } + + + /** + * Returns an argument value as a {@link NormalizedInputValue} which contains its type name and its current value + * + * @param name the name of the argument + * @return an argument value + */ + public NormalizedInputValue getNormalizedArgument(String name) { + return normalizedArguments.get(name); + } + + /** + * @return a map of all the arguments in {@link NormalizedInputValue} form + */ + public ImmutableMap getNormalizedArguments() { + return normalizedArguments; + } + + /** + * @return a map of the resolved argument values + */ + public LinkedHashMap getResolvedArguments() { + return resolvedArguments; + } + + + /** + * A {@link NormalizedField} can sometimes (for non-concrete types like interfaces and unions) + * have more than one object type it could be when executed. There is no way to know what it will be until + * the field is executed over data and the type is resolved via a {@link graphql.schema.TypeResolver}. + *

    + * This method returns all the possible types a field can be which is one or more {@link GraphQLObjectType} + * names. + *

    + * Warning: This returns a Mutable Set. No defensive copy is made for performance reasons. + * + * @return a set of the possible type names this field could be. + */ + public Set getObjectTypeNames() { + return objectTypeNames; + } + + + /** + * This returns the first entry in {@link #getObjectTypeNames()}. Sometimes you know a field cant be more than one + * type and this method is a shortcut one to help you. + * + * @return the first entry from + */ + public String getSingleObjectTypeName() { + return objectTypeNames.iterator().next(); + } + + /** + * @return a helper method show field details + */ + public String printDetails() { + StringBuilder result = new StringBuilder(); + if (getAlias() != null) { + result.append(getAlias()).append(": "); + } + return result + objectTypeNamesToString() + "." + fieldName; + } + + /** + * @return a helper method to show the object types names as a string + */ + public String objectTypeNamesToString() { + if (objectTypeNames.size() == 1) { + return objectTypeNames.iterator().next(); + } else { + return objectTypeNames.toString(); + } + } + + /** + * This returns the list of the result keys (see {@link #getResultKey()} that lead from this field upwards to + * its parent field + * + * @return a list of the result keys from this {@link NormalizedField} to the top of the operation via parent fields + */ + public List getListOfResultKeys() { + LinkedList list = new LinkedList<>(); + NormalizedField current = this; + while (current != null) { + list.addFirst(current.getResultKey()); + current = current.parent; + } + return list; + } + + /** + * @return the children of the {@link NormalizedField} + */ + public List getChildren() { + return children; + } + + /** + * Returns the list of child fields that would have the same result key + * + * @param resultKey the result key to check + * @return a list of all direct {@link NormalizedField} children with the specified result key + */ + public List getChildrenWithSameResultKey(String resultKey) { + return FpKit.filterList(children, child -> child.getResultKey().equals(resultKey)); + } + + public List getChildren(int includingRelativeLevel) { + assertTrue(includingRelativeLevel >= 1, "relative level must be >= 1"); + List result = new ArrayList<>(); + + this.getChildren().forEach(child -> { + traverseImpl(child, result::add, 1, includingRelativeLevel); + }); + return result; + } + + /** + * This returns the child fields that can be used if the object is of the specified object type + * + * @param objectTypeName the object type + * @return a list of child fields that would apply to that object type + */ + public List getChildren(String objectTypeName) { + return children.stream() + .filter(cld -> cld.objectTypeNames.contains(objectTypeName)) + .collect(toList()); + } + + /** + * the level of the {@link NormalizedField} in the operation hierarchy with top level fields + * starting at 1 + * + * @return the level of the {@link NormalizedField} in the operation hierarchy + */ + public int getLevel() { + return level; + } + + /** + * @return the parent of this {@link NormalizedField} or null if it's a top level field + */ + public NormalizedField getParent() { + return parent; + } + + + @Internal + public void replaceParent(NormalizedField newParent) { + this.parent = newParent; + } + + + @Override + public String toString() { + return "NormalizedField{" + + objectTypeNamesToString() + "." + fieldName + + ", alias=" + alias + + ", level=" + level + + ", children=" + children.stream().map(NormalizedField::toString).collect(joining("\n")) + + '}'; + } + + + /** + * Traverse from this {@link NormalizedField} down into itself and all of its children + * + * @param consumer the callback for each {@link NormalizedField} in the hierarchy. + */ + public void traverseSubTree(Consumer consumer) { + this.getChildren().forEach(child -> { + traverseImpl(child, consumer, 1, Integer.MAX_VALUE); + }); + } + + private void traverseImpl(NormalizedField root, + Consumer consumer, + int curRelativeLevel, + int abortAfter) { + if (curRelativeLevel > abortAfter) { + return; + } + consumer.accept(root); + root.getChildren().forEach(child -> { + traverseImpl(child, consumer, curRelativeLevel + 1, abortAfter); + }); + } + + /** + * This tries to find interfaces common to all the field output types. + *

    + * i.e. goes through {@link #getFieldDefinitions(GraphQLSchema)} and finds interfaces that + * all the field's unwrapped output types are assignable to. + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + private Set getInterfacesCommonToAllOutputTypes(GraphQLSchema schema) { + // Shortcut for performance + if (objectTypeNames.size() == 1) { + var fieldDef = getOneFieldDefinition(schema); + var outputType = unwrapAll(fieldDef.getType()); + + if (outputType instanceof GraphQLObjectType) { + return new LinkedHashSet<>((List) ((GraphQLObjectType) outputType).getInterfaces()); + } else if (outputType instanceof GraphQLInterfaceType) { + var result = new LinkedHashSet<>((List) ((GraphQLInterfaceType) outputType).getInterfaces()); + result.add(outputType); + return result; + } else { + return Collections.emptySet(); + } + } + + MutableRef> commonInterfaces = new MutableRef<>(); + forEachFieldDefinition(schema, (fieldDef) -> { + var outputType = unwrapAll(fieldDef.getType()); + + List outputTypeInterfaces; + if (outputType instanceof GraphQLObjectType) { + outputTypeInterfaces = (List) ((GraphQLObjectType) outputType).getInterfaces(); + } else if (outputType instanceof GraphQLInterfaceType) { + // This interface and superinterfaces + List superInterfaces = ((GraphQLInterfaceType) outputType).getInterfaces(); + + outputTypeInterfaces = new ArrayList<>(superInterfaces.size() + 1); + outputTypeInterfaces.add((GraphQLInterfaceType) outputType); + + if (!superInterfaces.isEmpty()) { + outputTypeInterfaces.addAll((List) superInterfaces); + } + } else { + outputTypeInterfaces = Collections.emptyList(); + } + + if (commonInterfaces.value == null) { + commonInterfaces.value = new LinkedHashSet<>(outputTypeInterfaces); + } else { + commonInterfaces.value.retainAll(outputTypeInterfaces); + } + }); + + return commonInterfaces.value; + } + + /** + * @return a {@link Builder} of {@link NormalizedField}s + */ + public static Builder newNormalizedField() { + return new Builder(); + } + + /** + * Allows this {@link NormalizedField} to be transformed via a {@link Builder} consumer callback + * + * @param builderConsumer the consumer given a builder + * @return a new transformed {@link NormalizedField} + */ + public NormalizedField transform(Consumer builderConsumer) { + Builder builder = new Builder(this); + builderConsumer.accept(builder); + return builder.build(); + } + + + public static class Builder { + private LinkedHashSet objectTypeNames = new LinkedHashSet<>(); + private String fieldName; + private ArrayList children = new ArrayList<>(); + private int level; + private NormalizedField parent; + private String alias; + private ImmutableMap normalizedArguments = ImmutableKit.emptyMap(); + private LinkedHashMap resolvedArguments = new LinkedHashMap<>(); + private ImmutableList astArguments = ImmutableKit.emptyList(); + private List astDirectives = Collections.emptyList(); + + + private Builder() { + } + + private Builder(NormalizedField existing) { + this.alias = existing.alias; + this.normalizedArguments = existing.normalizedArguments; + this.astArguments = existing.astArguments; + this.resolvedArguments = existing.resolvedArguments; + this.objectTypeNames = new LinkedHashSet<>(existing.getObjectTypeNames()); + this.fieldName = existing.getFieldName(); + this.children = new ArrayList<>(existing.children); + this.level = existing.getLevel(); + this.parent = existing.getParent(); + } + + public Builder clearObjectTypesNames() { + this.objectTypeNames.clear(); + return this; + } + + public Builder objectTypeNames(List objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + return this; + } + + public Builder alias(String alias) { + this.alias = alias; + return this; + } + + public Builder normalizedArguments(@Nullable Map arguments) { + this.normalizedArguments = arguments == null ? ImmutableKit.emptyMap() : ImmutableMap.copyOf(arguments); + return this; + } + + public Builder resolvedArguments(@Nullable Map arguments) { + this.resolvedArguments = arguments == null ? new LinkedHashMap<>() : new LinkedHashMap<>(arguments); + return this; + } + + public Builder astArguments(@NonNull List astArguments) { + this.astArguments = ImmutableList.copyOf(astArguments); + return this; + } + + public Builder astDirectives(@NonNull List astDirectives) { + this.astDirectives = astDirectives; + return this; + } + + + public Builder fieldName(String fieldName) { + this.fieldName = fieldName; + return this; + } + + + public Builder children(List children) { + this.children.clear(); + this.children.addAll(children); + return this; + } + + public Builder level(int level) { + this.level = level; + return this; + } + + public Builder parent(NormalizedField parent) { + this.parent = parent; + return this; + } + + + public NormalizedField build() { + return new NormalizedField(this); + } + } +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java new file mode 100644 index 0000000000..4261aa5307 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java @@ -0,0 +1,195 @@ +package graphql.normalized.nf; + +import graphql.Internal; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.AstComparator; +import graphql.language.Directive; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; + +@Internal +public class NormalizedFieldsMerger { + + public static void merge( + NormalizedField parent, + List childrenWithSameResultKey, + GraphQLSchema schema + ) { + // they have all the same result key + // we can only merge the fields if they have the same field name + arguments + all children are the same + List> possibleGroupsToMerge = new ArrayList<>(); + for (NormalizedField field : childrenWithSameResultKey) { + boolean addToGroup = false; + overPossibleGroups: + for (Set group : possibleGroupsToMerge) { + for (NormalizedField fieldInGroup : group) { + if (field.getFieldName().equals(Introspection.TypeNameMetaFieldDef.getName())) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + if (field.getFieldName().equals(fieldInGroup.getFieldName()) && + sameArguments(field.getAstArguments(), fieldInGroup.getAstArguments()) + && isFieldInSharedInterface(field, fieldInGroup, schema) + ) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + } + } + if (!addToGroup) { + LinkedHashSet group = new LinkedHashSet<>(); + group.add(field); + possibleGroupsToMerge.add(group); + } + } + for (Set groupOfFields : possibleGroupsToMerge) { + // for each group we check if it could be merged + List> listOfChildrenForGroup = new ArrayList<>(); + for (NormalizedField fieldInGroup : groupOfFields) { + Set childrenSets = new LinkedHashSet<>(fieldInGroup.getChildren()); + listOfChildrenForGroup.add(childrenSets); + } + boolean mergeable = areFieldSetsTheSame(listOfChildrenForGroup); + if (mergeable) { + Set mergedObjects = new LinkedHashSet<>(); + List mergedDirectives = new ArrayList<>(); + groupOfFields.forEach(f -> mergedObjects.addAll(f.getObjectTypeNames())); + groupOfFields.forEach(f -> mergedDirectives.addAll(f.getAstDirectives())); + // patching the first one to contain more objects, remove all others + Iterator iterator = groupOfFields.iterator(); + NormalizedField first = iterator.next(); + + while (iterator.hasNext()) { + NormalizedField next = iterator.next(); + parent.getChildren().remove(next); + } + first.setObjectTypeNames(mergedObjects); + first.setAstDirectives(mergedDirectives); + } + } + } + + private static boolean isFieldInSharedInterface(NormalizedField fieldOne, NormalizedField fieldTwo, GraphQLSchema schema) { + + /* + * we can get away with only checking one of the object names, because all object names in one ENF are guaranteed to be the same field. + * This comes from how the ENFs are created in the factory before. + */ + String firstObject = fieldOne.getSingleObjectTypeName(); + String secondObject = fieldTwo.getSingleObjectTypeName(); + // we know that the field names are the same, therefore we can just take the first one + String fieldName = fieldOne.getFieldName(); + + GraphQLObjectType objectTypeOne = schema.getObjectType(firstObject); + GraphQLObjectType objectTypeTwo = schema.getObjectType(secondObject); + List interfacesOne = (List) objectTypeOne.getInterfaces(); + List interfacesTwo = (List) objectTypeTwo.getInterfaces(); + + Optional firstInterfaceFound = interfacesOne.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + Optional secondInterfaceFound = interfacesTwo.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + if (!firstInterfaceFound.isPresent() || !secondInterfaceFound.isPresent()) { + return false; + } + return firstInterfaceFound.get().getName().equals(secondInterfaceFound.get().getName()); + } + + + private static boolean areFieldSetsTheSame(List> listOfSets) { + if (listOfSets.size() == 0 || listOfSets.size() == 1) { + return true; + } + Set first = listOfSets.get(0); + Iterator> iterator = listOfSets.iterator(); + iterator.next(); + while (iterator.hasNext()) { + Set set = iterator.next(); + if (!compareTwoFieldSets(first, set)) { + return false; + } + } + List> nextLevel = new ArrayList<>(); + for (Set set : listOfSets) { + for (NormalizedField fieldInSet : set) { + nextLevel.add(new LinkedHashSet<>(fieldInSet.getChildren())); + } + } + return areFieldSetsTheSame(nextLevel); + } + + private static boolean compareTwoFieldSets(Set setOne, Set setTwo) { + if (setOne.size() != setTwo.size()) { + return false; + } + for (NormalizedField field : setOne) { + if (!isContained(field, setTwo)) { + return false; + } + } + return true; + } + + private static boolean isContained(NormalizedField searchFor, Set set) { + for (NormalizedField field : set) { + if (compareWithoutChildren(searchFor, field)) { + return true; + } + } + return false; + } + + private static boolean compareWithoutChildren(NormalizedField one, NormalizedField two) { + + if (!one.getObjectTypeNames().equals(two.getObjectTypeNames())) { + return false; + } + if (!Objects.equals(one.getAlias(), two.getAlias())) { + return false; + } + if (!Objects.equals(one.getFieldName(), two.getFieldName())) { + return false; + } + if (!sameArguments(one.getAstArguments(), two.getAstArguments())) { + return false; + } + return true; + } + + // copied from graphql.validation.rules.OverlappingFieldsCanBeMerged + private static boolean sameArguments(List arguments1, List arguments2) { + if (arguments1.size() != arguments2.size()) { + return false; + } + for (Argument argument : arguments1) { + Argument matchedArgument = findArgumentByName(argument.getName(), arguments2); + if (matchedArgument == null) { + return false; + } + if (!AstComparator.sameValue(argument.getValue(), matchedArgument.getValue())) { + return false; + } + } + return true; + } + + private static Argument findArgumentByName(String name, List arguments) { + for (Argument argument : arguments) { + if (argument.getName().equals(name)) { + return argument; + } + } + return null; + } + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperation.java b/src/main/java/graphql/normalized/nf/NormalizedOperation.java new file mode 100644 index 0000000000..6d3c333d0b --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedOperation.java @@ -0,0 +1,180 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableListMultimap; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.execution.MergedField; +import graphql.execution.ResultPath; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Field; +import graphql.language.OperationDefinition; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLFieldsContainer; + +import java.util.List; +import java.util.Map; + +/** + * A {@link NormalizedOperation} represent how the text of a graphql operation (sometimes known colloquially as a query) + * will be executed at runtime according to the graphql specification. It handles complex mechanisms like merging + * duplicate fields into one and also detecting when the types of a given field may actually be for more than one possible object + * type. + *

    + * An operation consists of a list of {@link NormalizedField}s in a parent child hierarchy + */ +@ExperimentalApi +public class NormalizedOperation { + private final OperationDefinition.Operation operation; + private final String operationName; + private final List rootFields; + private final ImmutableListMultimap fieldToNormalizedField; + private final Map normalizedFieldToMergedField; + private final Map normalizedFieldToQueryDirectives; + private final ImmutableListMultimap coordinatesToNormalizedFields; + private final int operationFieldCount; + private final int operationDepth; + + public NormalizedOperation( + OperationDefinition.Operation operation, + String operationName, + List rootFields, + ImmutableListMultimap fieldToNormalizedField, + Map normalizedFieldToMergedField, + Map normalizedFieldToQueryDirectives, + ImmutableListMultimap coordinatesToNormalizedFields, + int operationFieldCount, + int operationDepth) { + this.operation = operation; + this.operationName = operationName; + this.rootFields = rootFields; + this.fieldToNormalizedField = fieldToNormalizedField; + this.normalizedFieldToMergedField = normalizedFieldToMergedField; + this.normalizedFieldToQueryDirectives = normalizedFieldToQueryDirectives; + this.coordinatesToNormalizedFields = coordinatesToNormalizedFields; + this.operationFieldCount = operationFieldCount; + this.operationDepth = operationDepth; + } + + /** + * @return operation AST being executed + */ + public OperationDefinition.Operation getOperation() { + return operation; + } + + /** + * @return the operation name, which can be null + */ + public String getOperationName() { + return operationName; + } + + /** + * @return This returns how many {@link NormalizedField}s are in the operation. + */ + public int getOperationFieldCount() { + return operationFieldCount; + } + + /** + * @return This returns the depth of the operation + */ + public int getOperationDepth() { + return operationDepth; + } + + /** + * This multimap shows how a given {@link NormalizedField} maps to a one or more field coordinate in the schema + * + * @return a multimap of fields to schema field coordinates + */ + public ImmutableListMultimap getCoordinatesToNormalizedFields() { + return coordinatesToNormalizedFields; + } + + /** + * @return a list of the top level {@link NormalizedField}s in this operation. + */ + public List getRootFields() { + return rootFields; + } + + /** + * This is a multimap and the size of it reflects all the normalized fields in the operation + * + * @return an immutable list multimap of {@link Field} to {@link NormalizedField} + */ + public ImmutableListMultimap getFieldToNormalizedField() { + return fieldToNormalizedField; + } + + /** + * Looks up one or more {@link NormalizedField}s given a {@link Field} AST element in the operation + * + * @param field the field to look up + * + * @return zero, one or more possible {@link NormalizedField}s that represent that field + */ + public List getNormalizedFields(Field field) { + return fieldToNormalizedField.get(field); + } + + /** + * @return a map of {@link NormalizedField} to {@link MergedField}s + */ + public Map getNormalizedFieldToMergedField() { + return normalizedFieldToMergedField; + } + + /** + * Looks up the {@link MergedField} given a {@link NormalizedField} + * + * @param NormalizedField the field to use the key + * + * @return a {@link MergedField} or null if its not present + */ + public MergedField getMergedField(NormalizedField NormalizedField) { + return normalizedFieldToMergedField.get(NormalizedField); + } + + /** + * @return a map of {@link NormalizedField} to its {@link QueryDirectives} + */ + public Map getNormalizedFieldToQueryDirectives() { + return normalizedFieldToQueryDirectives; + + } + + /** + * This looks up the {@link QueryDirectives} associated with the given {@link NormalizedField} + * + * @param NormalizedField the executable normalised field in question + * + * @return the fields query directives or null + */ + public QueryDirectives getQueryDirectives(NormalizedField NormalizedField) { + return normalizedFieldToQueryDirectives.get(NormalizedField); + } + + /** + * This will find a {@link NormalizedField} given a merged field and a result path. If this does not find a field it will assert with an exception + * + * @param mergedField the merged field + * @param fieldsContainer the containing type of that field + * @param resultPath the result path in play + * + * @return the NormalizedField + */ + public NormalizedField getNormalizedField(MergedField mergedField, GraphQLFieldsContainer fieldsContainer, ResultPath resultPath) { + List NormalizedFields = fieldToNormalizedField.get(mergedField.getSingleField()); + List keysOnlyPath = resultPath.getKeysOnly(); + for (NormalizedField NormalizedField : NormalizedFields) { + if (NormalizedField.getListOfResultKeys().equals(keysOnlyPath)) { + if (NormalizedField.getObjectTypeNames().contains(fieldsContainer.getName())) { + return NormalizedField; + } + } + } + return Assert.assertShouldNeverHappen("normalized field not found"); + } +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java new file mode 100644 index 0000000000..71fa804173 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -0,0 +1,248 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.language.TypeName; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnmodifiedType; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.language.Field.newField; +import static graphql.language.InlineFragment.newInlineFragment; +import static graphql.language.SelectionSet.newSelectionSet; +import static graphql.language.TypeName.newTypeName; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; + +/** + * This class can take a list of {@link NormalizedField}s and compiling out a + * normalised operation {@link Document} that would represent how those fields + * may be executed. + *

    + * This is essentially the reverse of {@link NormalizedDocumentFactory} which takes + * operation text and makes {@link NormalizedField}s from it, this takes {@link NormalizedField}s + * and makes operation text from it. + *

    + * You could for example send that operation text onto to some other graphql server if it + * has the same schema as the one provided. + */ +@ExperimentalApi +public class NormalizedOperationToAstCompiler { + + /** + * The result is a {@link Document} and a map of variables + * that would go with that document. + */ + public static class CompilerResult { + private final Document document; + private final Map variables; + + public CompilerResult(Document document, Map variables) { + this.document = document; + this.variables = variables; + } + + public Document getDocument() { + return document; + } + + public Map getVariables() { + return variables; + } + } + + public static CompilerResult compileToDocument(GraphQLSchema graphQLSchema, + GraphQLObjectType rootType, + List rootFields, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + + return compileToDocumentImpl(graphQLSchema, rootType, rootFields, operationName, operationKind); + } + + public static CompilerResult compileToDocument(GraphQLSchema graphQLSchema, + GraphQLObjectType rootType, + NormalizedField singleRootField, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + return compileToDocumentImpl(graphQLSchema, rootType, ImmutableList.of(singleRootField), operationName, operationKind); + + + } + + + public static CompilerResult compileToDocument(GraphQLSchema schema, + NormalizedOperation normalizedOperation) { + GraphQLObjectType operationType = getOperationType(schema, normalizedOperation.getOperation()); + + return compileToDocumentImpl( + schema, + operationType, + normalizedOperation.getRootFields(), + normalizedOperation.getOperationName(), + normalizedOperation.getOperation() + ); + } + + private static CompilerResult compileToDocumentImpl(GraphQLSchema schema, + GraphQLObjectType rootType, + List rootFields, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + + List> selections = subSelectionsForNormalizedFields(schema, rootType.getName(), rootFields); + SelectionSet selectionSet = new SelectionSet(selections); + + OperationDefinition.Builder definitionBuilder = OperationDefinition.newOperationDefinition() + .name(operationName) + .operation(operationKind) + .selectionSet(selectionSet); + +// definitionBuilder.variableDefinitions(variableAccumulator.getVariableDefinitions()); + + return new CompilerResult( + Document.newDocument() + .definition(definitionBuilder.build()) + .build(), + null + ); + } + + + private static List> subSelectionsForNormalizedFields(GraphQLSchema schema, + @NonNull String parentOutputType, + List normalizedFields + ) { + ImmutableList.Builder> selections = ImmutableList.builder(); + + // All conditional fields go here instead of directly to selections, so they can be grouped together + // in the same inline fragment in the output + Map> fieldsByTypeCondition = new LinkedHashMap<>(); + + for (NormalizedField nf : normalizedFields) { + if (nf.isConditional(schema)) { + selectionForNormalizedField(schema, nf) + .forEach((objectTypeName, field) -> + fieldsByTypeCondition + .computeIfAbsent(objectTypeName, ignored -> new ArrayList<>()) + .add(field)); + } else { + selections.add(selectionForNormalizedField(schema, parentOutputType, nf)); + } + } + + fieldsByTypeCondition.forEach((objectTypeName, fields) -> { + TypeName typeName = newTypeName(objectTypeName).build(); + InlineFragment inlineFragment = newInlineFragment() + .typeCondition(typeName) + .selectionSet(selectionSet(fields)) + .build(); + selections.add(inlineFragment); + }); + + return selections.build(); + } + + /** + * @return Map of object type names to list of fields + */ + private static Map selectionForNormalizedField(GraphQLSchema schema, + NormalizedField normalizedField + ) { + Map groupedFields = new LinkedHashMap<>(); + + for (String objectTypeName : normalizedField.getObjectTypeNames()) { + groupedFields.put(objectTypeName, selectionForNormalizedField(schema, objectTypeName, normalizedField)); + } + + return groupedFields; + } + + /** + * @return Map of object type names to list of fields + */ + private static Field selectionForNormalizedField(GraphQLSchema schema, + String objectTypeName, + NormalizedField normalizedField) { + + final List> subSelections; + if (normalizedField.getChildren().isEmpty()) { + subSelections = emptyList(); + } else { + GraphQLFieldDefinition fieldDef = getFieldDefinition(schema, objectTypeName, normalizedField); + GraphQLUnmodifiedType fieldOutputType = unwrapAll(fieldDef.getType()); + + subSelections = subSelectionsForNormalizedFields( + schema, + fieldOutputType.getName(), + normalizedField.getChildren() + ); + } + + SelectionSet selectionSet = selectionSetOrNullIfEmpty(subSelections); +// List arguments = createArguments(executableNormalizedField, variableAccumulator); + List arguments = normalizedField.getAstArguments(); + List directives = normalizedField.getAstDirectives(); + + + Field.Builder builder = newField() + .name(normalizedField.getFieldName()) + .alias(normalizedField.getAlias()) + .selectionSet(selectionSet) + .directives(directives) + .arguments(arguments); + return builder.build(); + } + + @Nullable + private static SelectionSet selectionSetOrNullIfEmpty(List> selections) { + return selections.isEmpty() ? null : newSelectionSet().selections(selections).build(); + } + + private static SelectionSet selectionSet(List fields) { + return newSelectionSet().selections(fields).build(); + } + + + @NonNull + private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, + String parentType, + NormalizedField nf) { + return Introspection.getFieldDef(schema, (GraphQLCompositeType) schema.getType(parentType), nf.getName()); + } + + + private static GraphQLObjectType getOperationType(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind) { + switch (operationKind) { + case QUERY: + return schema.getQueryType(); + case MUTATION: + return schema.getMutationType(); + case SUBSCRIPTION: + return schema.getSubscriptionType(); + } + + return Assert.assertShouldNeverHappen("Unknown operation kind " + operationKind); + } + +} diff --git a/src/main/java/graphql/parser/AntlrHelper.java b/src/main/java/graphql/parser/AntlrHelper.java index a3fc74d272..4eb52d87ba 100644 --- a/src/main/java/graphql/parser/AntlrHelper.java +++ b/src/main/java/graphql/parser/AntlrHelper.java @@ -3,6 +3,7 @@ import graphql.Internal; import graphql.language.SourceLocation; import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.tree.TerminalNode; import java.util.List; @@ -28,6 +29,9 @@ public static SourceLocation createSourceLocation(MultiSourceReader multiSourceR return AntlrHelper.createSourceLocation(multiSourceReader, token.getLine(), token.getCharPositionInLine()); } + public static SourceLocation createSourceLocation(MultiSourceReader multiSourceReader, TerminalNode terminalNode) { + return AntlrHelper.createSourceLocation(multiSourceReader, terminalNode.getSymbol().getLine(), terminalNode.getSymbol().getCharPositionInLine()); + } /* grabs 3 lines before and after the syntax error */ public static String createPreview(MultiSourceReader multiSourceReader, int antrlLine) { diff --git a/src/main/java/graphql/parser/CommentParser.java b/src/main/java/graphql/parser/CommentParser.java new file mode 100644 index 0000000000..cb6e0f1a0d --- /dev/null +++ b/src/main/java/graphql/parser/CommentParser.java @@ -0,0 +1,247 @@ +package graphql.parser; + +import com.google.common.collect.ImmutableList; +import graphql.Internal; +import graphql.language.AbstractDescribedNode; +import graphql.language.Comment; +import graphql.language.Document; +import graphql.language.Node; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.Token; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; + +/** + * Contains methods for extracting {@link Comment} in various positions within and around {@link Node}s + */ +@Internal +public class CommentParser { + private final Map, ParserRuleContext> nodeToRuleMap; + private CommonTokenStream tokens; + private static final int CHANNEL_COMMENTS = 2; + + public CommentParser(NodeToRuleCapturingParser.ParserContext parserContext) { + nodeToRuleMap = parserContext.getNodeToRuleMap(); + tokens = parserContext.getTokens(); + } + + /* + * type MyType { # beginning of type block + * field( # beginning of field args block + * arg1: String + * arg2: String + * ) + * } + */ + public Optional getBeginningOfBlockComment(Node node, String prefix) { + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + final Token start = ctx.start; + + if (start != null) { + return this.tokens.getTokens(start.getTokenIndex(), ctx.stop.getTokenIndex()).stream() + .filter(token -> token.getText().equals(prefix)) + .findFirst() + .map(token -> tokens.getHiddenTokensToRight(token.getTokenIndex(), CHANNEL_COMMENTS)) + .map(commentTokens -> getCommentOnChannel(commentTokens, isNotPrecededByLineBreak)) + .flatMap(comments -> comments.stream().findFirst()); + } + + return Optional.empty(); + } + + /* + * type MyType { + * a( + * arg1: A + * arg2: B + * # end of field args block comment + * ): A + * # end of type block comment #1 + * # end of type block comment #2 + * } + */ + public List getEndOfBlockComments(Node node, String blockSuffix) { + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + return searchTokenToLeft(ctx.stop, blockSuffix) + .map(suffixToken -> tokens.getHiddenTokensToLeft(suffixToken.getTokenIndex(), CHANNEL_COMMENTS)) + .map(commentTokens -> getCommentOnChannel(commentTokens, isPrecededByLineBreak)) + .orElse(Collections.emptyList()); + } + + /* + * type MyType { + * a: A # field trailing comment + * } # type trailing comment + */ + public Optional getTrailingComment(Node node) { + // Only nodes that can hold descriptions can have trailing comments + if (!(node instanceof AbstractDescribedNode)) { + return Optional.empty(); + } + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + List rightRefChannel = this.tokens.getHiddenTokensToRight(ctx.stop.getTokenIndex(), CHANNEL_COMMENTS); + + if (rightRefChannel != null) { + List comments = getCommentOnChannel(rightRefChannel, isNotPrecededByLineBreak); + + return comments.stream().findFirst(); + } + + return Optional.empty(); + } + + /* + * # type leading comment #1 + * # type leading comment #2 + * type MyType { + * # field leading comment #1 + * # field leading comment #2 + * a: A + * } + */ + public List getLeadingComments(Node node) { + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + final Token start = ctx.start; + if (start != null) { + int tokPos = start.getTokenIndex(); + List leftRefChannel = this.tokens.getHiddenTokensToLeft(tokPos, CHANNEL_COMMENTS); + if (leftRefChannel != null) { + return getCommentOnChannel(leftRefChannel, isPrecededByLineBreak); + } + } + + return Collections.emptyList(); + } + + /* + * """ Description """ + * # comment after description #1 + * # comment after description #2 + * type MyType { + * a: A + * } + */ + public List getCommentsAfterDescription(Node node) { + // Early return if node doesn't have a description + if (!(node instanceof AbstractDescribedNode) || + (node instanceof AbstractDescribedNode && ((AbstractDescribedNode) node).getDescription() == null) + ) { + return Collections.emptyList(); + } + + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + final Token start = ctx.start; + if (start != null) { + List commentTokens = tokens.getHiddenTokensToRight(start.getTokenIndex(), CHANNEL_COMMENTS); + + if (commentTokens != null) { + return getCommentOnChannel(commentTokens, isPrecededByLineBreak); + } + } + + return Collections.emptyList(); + } + + public Optional getCommentOnFirstLineOfDocument(Document node) { + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + final Token start = ctx.start; + if (start != null) { + int tokPos = start.getTokenIndex(); + List leftRefChannel = this.tokens.getHiddenTokensToLeft(tokPos, CHANNEL_COMMENTS); + if (leftRefChannel != null) { + List comments = getCommentOnChannel(leftRefChannel, isFirstToken.or(isPrecededOnlyBySpaces)); + + return comments.stream().findFirst(); + } + } + + return Optional.empty(); + } + + public List getCommentsAfterAllDefinitions(Document node) { + final ParserRuleContext ctx = nodeToRuleMap.get(node); + + final Token start = ctx.start; + if (start != null) { + List leftRefChannel = this.tokens.getHiddenTokensToRight(ctx.stop.getTokenIndex(), CHANNEL_COMMENTS); + if (leftRefChannel != null) { + return getCommentOnChannel(leftRefChannel, + refToken -> Optional.ofNullable(this.tokens.getHiddenTokensToLeft(refToken.getTokenIndex(), -1)) + .map(hiddenTokens -> hiddenTokens.stream().anyMatch(token -> token.getText().equals("\n"))) + .orElse(false) + ); + } + } + + return Collections.emptyList(); + } + + protected List getCommentOnChannel(List refChannel, Predicate shouldIncludePredicate) { + ImmutableList.Builder comments = ImmutableList.builder(); + for (Token refTok : refChannel) { + String text = refTok.getText(); + // we strip the leading hash # character but we don't trim because we don't + // know the "comment markup". Maybe it's space sensitive, maybe it's not. So + // consumers can decide that + if (text == null) { + continue; + } + + boolean shouldIncludeComment = shouldIncludePredicate.test(refTok); + + if (!shouldIncludeComment) { + continue; + } + + text = text.replaceFirst("^#", ""); + + comments.add(new Comment(text, null)); + } + return comments.build(); + } + + private Optional searchTokenToLeft(Token token, String text) { + int i = token.getTokenIndex(); + + while (i > 0) { + Token t = tokens.get(i); + if (t.getText().equals(text)) { + return Optional.of(t); + } + i--; + } + + return Optional.empty(); + } + + private final Predicate alwaysTrue = token -> true; + + private final Predicate isNotPrecededByLineBreak = refToken -> + Optional.ofNullable(tokens.getHiddenTokensToLeft(refToken.getTokenIndex(), -1)) + .map(hiddenTokens -> hiddenTokens.stream().noneMatch(token -> token.getText().equals("\n"))) + .orElse(false); + + private final Predicate isPrecededByLineBreak = refToken -> + Optional.ofNullable(this.tokens.getHiddenTokensToLeft(refToken.getTokenIndex(), -1)) + .map(hiddenTokens -> hiddenTokens.stream().anyMatch(token -> token.getText().equals("\n"))) + .orElse(false); + + private final Predicate isFirstToken = refToken -> refToken.getTokenIndex() == 0; + + private final Predicate isPrecededOnlyBySpaces = refToken -> + Optional.ofNullable(this.tokens.getTokens(0, refToken.getTokenIndex() - 1)) + .map(beforeTokens -> beforeTokens.stream().allMatch(token -> token.getText().equals(" "))) + .orElse(false); + +} diff --git a/src/main/java/graphql/parser/ExtendedBailStrategy.java b/src/main/java/graphql/parser/ExtendedBailStrategy.java index e6d33d5ea9..8a83904402 100644 --- a/src/main/java/graphql/parser/ExtendedBailStrategy.java +++ b/src/main/java/graphql/parser/ExtendedBailStrategy.java @@ -1,19 +1,25 @@ package graphql.parser; +import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.language.SourceLocation; +import graphql.parser.exceptions.MoreTokensSyntaxException; import org.antlr.v4.runtime.BailErrorStrategy; import org.antlr.v4.runtime.Parser; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.misc.ParseCancellationException; +import java.util.List; + @Internal public class ExtendedBailStrategy extends BailErrorStrategy { private final MultiSourceReader multiSourceReader; + private final ParserEnvironment environment; - public ExtendedBailStrategy(MultiSourceReader multiSourceReader) { + public ExtendedBailStrategy(MultiSourceReader multiSourceReader, ParserEnvironment environment) { this.multiSourceReader = multiSourceReader; + this.environment = environment; } @Override @@ -36,24 +42,43 @@ public Token recoverInline(Parser recognizer) throws RecognitionException { InvalidSyntaxException mkMoreTokensException(Token token) { SourceLocation sourceLocation = AntlrHelper.createSourceLocation(multiSourceReader, token); + if (environment.getParserOptions().isRedactTokenParserErrorMessages()) { + return new MoreTokensSyntaxException(environment.getI18N(), sourceLocation); + } + String sourcePreview = AntlrHelper.createPreview(multiSourceReader, token.getLine()); - return new InvalidSyntaxException(sourceLocation, - "There are more tokens in the query that have not been consumed", - sourcePreview, token.getText(), null); + return new MoreTokensSyntaxException(environment.getI18N(), sourceLocation, + token.getText(), sourcePreview); } private InvalidSyntaxException mkException(Parser recognizer, RecognitionException cause) { - String sourcePreview = null; - String offendingToken = null; - SourceLocation sourceLocation = null; + String sourcePreview; + String offendingToken; + final SourceLocation sourceLocation; Token currentToken = recognizer.getCurrentToken(); if (currentToken != null) { sourceLocation = AntlrHelper.createSourceLocation(multiSourceReader, currentToken); offendingToken = currentToken.getText(); sourcePreview = AntlrHelper.createPreview(multiSourceReader, currentToken.getLine()); + } else { + sourcePreview = null; + offendingToken = null; + sourceLocation = null; + } + + String msgKey; + List args; + SourceLocation location = sourceLocation == null ? SourceLocation.EMPTY : sourceLocation; + if (offendingToken == null || environment.getParserOptions().isRedactTokenParserErrorMessages()) { + msgKey = "InvalidSyntaxBail.noToken"; + args = ImmutableList.of(location.getLine(), location.getColumn()); + } else { + msgKey = "InvalidSyntaxBail.full"; + args = ImmutableList.of(offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()); } - return new InvalidSyntaxException(sourceLocation, null, sourcePreview, offendingToken, cause); + String msg = environment.getI18N().msg(msgKey, args); + return new InvalidSyntaxException(msg, sourceLocation, offendingToken, sourcePreview, cause); } } diff --git a/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java b/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java index ed1ae35917..125e184d19 100644 --- a/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java +++ b/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java @@ -1,8 +1,10 @@ package graphql.parser; - +import com.google.common.collect.ImmutableList; import graphql.Assert; import graphql.Internal; +import graphql.collect.ImmutableKit; +import graphql.i18n.I18n; import graphql.language.Argument; import graphql.language.ArrayValue; import graphql.language.BooleanValue; @@ -32,6 +34,7 @@ import graphql.language.InterfaceTypeDefinition; import graphql.language.InterfaceTypeExtensionDefinition; import graphql.language.ListType; +import graphql.language.Node; import graphql.language.NodeBuilder; import graphql.language.NonNullType; import graphql.language.NullValue; @@ -63,30 +66,45 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.tree.TerminalNode; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.Map; import static graphql.Assert.assertShouldNeverHappen; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.map; +import static graphql.parser.Parser.CHANNEL_COMMENTS; +import static graphql.parser.Parser.CHANNEL_WHITESPACE; import static graphql.parser.StringValueParsing.parseSingleQuotedString; import static graphql.parser.StringValueParsing.parseTripleQuotedString; -import static java.util.stream.Collectors.toList; +import static java.util.Optional.ofNullable; @Internal public class GraphqlAntlrToLanguage { - private static final int CHANNEL_COMMENTS = 2; - private static final int CHANNEL_IGNORED_CHARS = 3; + private static final List NO_COMMENTS = ImmutableKit.emptyList(); private final CommonTokenStream tokens; private final MultiSourceReader multiSourceReader; + private final ParserOptions parserOptions; + private final Map, ParserRuleContext> nodeToRuleMap; + private final I18n i18N; - - public GraphqlAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader) { + public GraphqlAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader, ParserOptions parserOptions, I18n i18N, @Nullable Map, ParserRuleContext> nodeToRuleMap) { this.tokens = tokens; this.multiSourceReader = multiSourceReader; + this.parserOptions = ofNullable(parserOptions).orElse(ParserOptions.getDefaultParserOptions()); + this.i18N = i18N; + this.nodeToRuleMap = nodeToRuleMap; + + } + + public ParserOptions getParserOptions() { + return parserOptions; } //MARKER START: Here GraphqlOperation.g4 specific methods begin @@ -95,9 +113,8 @@ public GraphqlAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiS public Document createDocument(GraphqlParser.DocumentContext ctx) { Document.Builder document = Document.newDocument(); addCommonData(document, ctx); - document.definitions(ctx.definition().stream().map(this::createDefinition) - .collect(toList())); - return document.build(); + document.definitions(map(ctx.definition(), this::createDefinition)); + return captureRuleContext(document.build(), ctx); } protected Definition createDefinition(GraphqlParser.DefinitionContext definitionContext) { @@ -128,7 +145,7 @@ protected OperationDefinition createOperationDefinition(GraphqlParser.OperationD operationDefinition.variableDefinitions(createVariableDefinitions(ctx.variableDefinitions())); operationDefinition.selectionSet(createSelectionSet(ctx.selectionSet())); operationDefinition.directives(createDirectives(ctx.directives())); - return operationDefinition.build(); + return captureRuleContext(operationDefinition.build(), ctx); } protected OperationDefinition.Operation parseOperation(GraphqlParser.OperationTypeContext operationTypeContext) { @@ -148,14 +165,14 @@ protected FragmentSpread createFragmentSpread(GraphqlParser.FragmentSpreadContex FragmentSpread.Builder fragmentSpread = FragmentSpread.newFragmentSpread().name(ctx.fragmentName().getText()); addCommonData(fragmentSpread, ctx); fragmentSpread.directives(createDirectives(ctx.directives())); - return fragmentSpread.build(); + return captureRuleContext(fragmentSpread.build(), ctx); } protected List createVariableDefinitions(GraphqlParser.VariableDefinitionsContext ctx) { if (ctx == null) { - return new ArrayList<>(); + return emptyList(); } - return ctx.variableDefinition().stream().map(this::createVariableDefinition).collect(toList()); + return map(ctx.variableDefinition(), this::createVariableDefinition); } protected VariableDefinition createVariableDefinition(GraphqlParser.VariableDefinitionContext ctx) { @@ -167,7 +184,8 @@ protected VariableDefinition createVariableDefinition(GraphqlParser.VariableDefi variableDefinition.defaultValue(value); } variableDefinition.type(createType(ctx.type())); - return variableDefinition.build(); + variableDefinition.directives(createDirectives(ctx.directives())); + return captureRuleContext(variableDefinition.build(), ctx); } @@ -178,7 +196,7 @@ protected FragmentDefinition createFragmentDefinition(GraphqlParser.FragmentDefi fragmentDefinition.typeCondition(TypeName.newTypeName().name(ctx.typeCondition().typeName().getText()).build()); fragmentDefinition.directives(createDirectives(ctx.directives())); fragmentDefinition.selectionSet(createSelectionSet(ctx.selectionSet())); - return fragmentDefinition.build(); + return captureRuleContext(fragmentDefinition.build(), ctx); } @@ -188,7 +206,7 @@ protected SelectionSet createSelectionSet(GraphqlParser.SelectionSetContext ctx) } SelectionSet.Builder builder = SelectionSet.newSelectionSet(); addCommonData(builder, ctx); - List selections = ctx.selection().stream().map(selectionContext -> { + List selections = map(ctx.selection(), selectionContext -> { if (selectionContext.field() != null) { return createField(selectionContext.field()); } @@ -198,11 +216,11 @@ protected SelectionSet createSelectionSet(GraphqlParser.SelectionSetContext ctx) if (selectionContext.inlineFragment() != null) { return createInlineFragment(selectionContext.inlineFragment()); } - return (Selection) Assert.assertShouldNeverHappen(); + return Assert.assertShouldNeverHappen(); - }).collect(toList()); + }); builder.selections(selections); - return builder.build(); + return captureRuleContext(builder.build(), ctx); } @@ -217,7 +235,7 @@ protected Field createField(GraphqlParser.FieldContext ctx) { builder.directives(createDirectives(ctx.directives())); builder.arguments(createArguments(ctx.arguments())); builder.selectionSet(createSelectionSet(ctx.selectionSet())); - return builder.build(); + return captureRuleContext(builder.build(), ctx); } @@ -229,7 +247,7 @@ protected InlineFragment createInlineFragment(GraphqlParser.InlineFragmentContex } inlineFragment.directives(createDirectives(ctx.directives())); inlineFragment.selectionSet(createSelectionSet(ctx.selectionSet())); - return inlineFragment.build(); + return captureRuleContext(inlineFragment.build(), ctx); } //MARKER END: Here GraphqlOperation.g4 specific methods end @@ -320,7 +338,7 @@ protected TypeName createTypeName(GraphqlParser.TypeNameContext ctx) { TypeName.Builder builder = TypeName.newTypeName(); builder.name(ctx.name().getText()); addCommonData(builder, ctx); - return builder.build(); + return captureRuleContext(builder.build(), ctx); } protected NonNullType createNonNullType(GraphqlParser.NonNullTypeContext ctx) { @@ -333,14 +351,14 @@ protected NonNullType createNonNullType(GraphqlParser.NonNullTypeContext ctx) { } else { return assertShouldNeverHappen(); } - return builder.build(); + return captureRuleContext(builder.build(), ctx); } protected ListType createListType(GraphqlParser.ListTypeContext ctx) { ListType.Builder builder = ListType.newListType(); addCommonData(builder, ctx); builder.type(createType(ctx.type())); - return builder.build(); + return captureRuleContext(builder.build(), ctx); } protected Argument createArgument(GraphqlParser.ArgumentContext ctx) { @@ -348,22 +366,22 @@ protected Argument createArgument(GraphqlParser.ArgumentContext ctx) { addCommonData(builder, ctx); builder.name(ctx.name().getText()); builder.value(createValue(ctx.valueWithVariable())); - return builder.build(); + return captureRuleContext(builder.build(), ctx); } protected List createArguments(GraphqlParser.ArgumentsContext ctx) { if (ctx == null) { - return new ArrayList<>(); + return emptyList(); } - return ctx.argument().stream().map(this::createArgument).collect(toList()); + return map(ctx.argument(), this::createArgument); } protected List createDirectives(GraphqlParser.DirectivesContext ctx) { if (ctx == null) { - return new ArrayList<>(); + return emptyList(); } - return ctx.directive().stream().map(this::createDirective).collect(toList()); + return map(ctx.directive(), this::createDirective); } protected Directive createDirective(GraphqlParser.DirectiveContext ctx) { @@ -371,16 +389,16 @@ protected Directive createDirective(GraphqlParser.DirectiveContext ctx) { builder.name(ctx.name().getText()); addCommonData(builder, ctx); builder.arguments(createArguments(ctx.arguments())); - return builder.build(); + return captureRuleContext(builder.build(), ctx); } protected SchemaDefinition createSchemaDefinition(GraphqlParser.SchemaDefinitionContext ctx) { SchemaDefinition.Builder def = SchemaDefinition.newSchemaDefinition(); addCommonData(def, ctx); def.directives(createDirectives(ctx.directives())); - def.operationTypeDefinitions(ctx.operationTypeDefinition().stream() - .map(this::createOperationTypeDefinition).collect(toList())); - return def.build(); + def.description(newDescription(ctx.description())); + def.operationTypeDefinitions(map(ctx.operationTypeDefinition(), this::createOperationTypeDefinition)); + return captureRuleContext(def.build(), ctx); } private SDLDefinition creationSchemaExtension(GraphqlParser.SchemaExtensionContext ctx) { @@ -388,16 +406,15 @@ private SDLDefinition creationSchemaExtension(GraphqlParser.SchemaExtensionConte addCommonData(def, ctx); List directives = new ArrayList<>(); - List directivesCtx = ctx.directives(); - for (GraphqlParser.DirectivesContext directiveCtx : directivesCtx) { - directives.addAll(createDirectives(directiveCtx)); - } + + GraphqlParser.DirectivesContext directivesCtx = ctx.directives(); + directives.addAll(createDirectives(directivesCtx)); + def.directives(directives); - List operationTypeDefs = ctx.operationTypeDefinition().stream() - .map(this::createOperationTypeDefinition).collect(toList()); + List operationTypeDefs = map(ctx.operationTypeDefinition(), this::createOperationTypeDefinition); def.operationTypeDefinitions(operationTypeDefs); - return def.build(); + return captureRuleContext(def.build(), ctx); } @@ -406,7 +423,7 @@ protected OperationTypeDefinition createOperationTypeDefinition(GraphqlParser.Op def.name(ctx.operationType().getText()); def.typeName(createTypeName(ctx.typeName())); addCommonData(def, ctx); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected ScalarTypeDefinition createScalarTypeDefinition(GraphqlParser.ScalarTypeDefinitionContext ctx) { @@ -415,7 +432,7 @@ protected ScalarTypeDefinition createScalarTypeDefinition(GraphqlParser.ScalarTy addCommonData(def, ctx); def.description(newDescription(ctx.description())); def.directives(createDirectives(ctx.directives())); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected ScalarTypeExtensionDefinition createScalarTypeExtensionDefinition(GraphqlParser.ScalarTypeExtensionDefinitionContext ctx) { @@ -423,7 +440,7 @@ protected ScalarTypeExtensionDefinition createScalarTypeExtensionDefinition(Grap def.name(ctx.name().getText()); addCommonData(def, ctx); def.directives(createDirectives(ctx.directives())); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected ObjectTypeDefinition createObjectTypeDefinition(GraphqlParser.ObjectTypeDefinitionContext ctx) { @@ -433,17 +450,12 @@ protected ObjectTypeDefinition createObjectTypeDefinition(GraphqlParser.ObjectTy def.description(newDescription(ctx.description())); def.directives(createDirectives(ctx.directives())); GraphqlParser.ImplementsInterfacesContext implementsInterfacesContext = ctx.implementsInterfaces(); - List implementz = new ArrayList<>(); - while (implementsInterfacesContext != null) { - List typeNames = implementsInterfacesContext.typeName().stream().map(this::createTypeName).collect(toList()); - implementz.addAll(0, typeNames); - implementsInterfacesContext = implementsInterfacesContext.implementsInterfaces(); - } + List implementz = getImplementz(implementsInterfacesContext); def.implementz(implementz); if (ctx.fieldsDefinition() != null) { def.fieldDefinitions(createFieldDefinitions(ctx.fieldsDefinition())); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected ObjectTypeExtensionDefinition createObjectTypeExtensionDefinition(GraphqlParser.ObjectTypeExtensionDefinitionContext ctx) { @@ -452,31 +464,26 @@ protected ObjectTypeExtensionDefinition createObjectTypeExtensionDefinition(Grap addCommonData(def, ctx); def.directives(createDirectives(ctx.directives())); GraphqlParser.ImplementsInterfacesContext implementsInterfacesContext = ctx.implementsInterfaces(); - List implementz = new ArrayList<>(); - while (implementsInterfacesContext != null) { - List typeNames = implementsInterfacesContext.typeName().stream().map(this::createTypeName).collect(toList()); - implementz.addAll(0, typeNames); - implementsInterfacesContext = implementsInterfacesContext.implementsInterfaces(); - } + List implementz = getImplementz(implementsInterfacesContext); def.implementz(implementz); if (ctx.extensionFieldsDefinition() != null) { def.fieldDefinitions(createFieldDefinitions(ctx.extensionFieldsDefinition())); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected List createFieldDefinitions(GraphqlParser.FieldsDefinitionContext ctx) { if (ctx == null) { - return new ArrayList<>(); + return emptyList(); } - return ctx.fieldDefinition().stream().map(this::createFieldDefinition).collect(toList()); + return map(ctx.fieldDefinition(), this::createFieldDefinition); } protected List createFieldDefinitions(GraphqlParser.ExtensionFieldsDefinitionContext ctx) { if (ctx == null) { - return new ArrayList<>(); + return emptyList(); } - return ctx.fieldDefinition().stream().map(this::createFieldDefinition).collect(toList()); + return map(ctx.fieldDefinition(), this::createFieldDefinition); } @@ -490,12 +497,11 @@ protected FieldDefinition createFieldDefinition(GraphqlParser.FieldDefinitionCon if (ctx.argumentsDefinition() != null) { def.inputValueDefinitions(createInputValueDefinitions(ctx.argumentsDefinition().inputValueDefinition())); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected List createInputValueDefinitions(List defs) { - return defs.stream().map(this::createInputValueDefinition).collect(toList()); - + return map(defs, this::createInputValueDefinition); } protected InputValueDefinition createInputValueDefinition(GraphqlParser.InputValueDefinitionContext ctx) { @@ -508,7 +514,7 @@ protected InputValueDefinition createInputValueDefinition(GraphqlParser.InputVal def.defaultValue(createValue(ctx.defaultValue().value())); } def.directives(createDirectives(ctx.directives())); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected InterfaceTypeDefinition createInterfaceTypeDefinition(GraphqlParser.InterfaceTypeDefinitionContext ctx) { @@ -517,8 +523,11 @@ protected InterfaceTypeDefinition createInterfaceTypeDefinition(GraphqlParser.In addCommonData(def, ctx); def.description(newDescription(ctx.description())); def.directives(createDirectives(ctx.directives())); + GraphqlParser.ImplementsInterfacesContext implementsInterfacesContext = ctx.implementsInterfaces(); + List implementz = getImplementz(implementsInterfacesContext); + def.implementz(implementz); def.definitions(createFieldDefinitions(ctx.fieldsDefinition())); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected InterfaceTypeExtensionDefinition createInterfaceTypeExtensionDefinition(GraphqlParser.InterfaceTypeExtensionDefinitionContext ctx) { @@ -526,8 +535,11 @@ protected InterfaceTypeExtensionDefinition createInterfaceTypeExtensionDefinitio def.name(ctx.name().getText()); addCommonData(def, ctx); def.directives(createDirectives(ctx.directives())); + GraphqlParser.ImplementsInterfacesContext implementsInterfacesContext = ctx.implementsInterfaces(); + List implementz = getImplementz(implementsInterfacesContext); + def.implementz(implementz); def.definitions(createFieldDefinitions(ctx.extensionFieldsDefinition())); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected UnionTypeDefinition createUnionTypeDefinition(GraphqlParser.UnionTypeDefinitionContext ctx) { @@ -546,7 +558,7 @@ protected UnionTypeDefinition createUnionTypeDefinition(GraphqlParser.UnionTypeD } } def.memberTypes(members); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected UnionTypeExtensionDefinition createUnionTypeExtensionDefinition(GraphqlParser.UnionTypeExtensionDefinitionContext ctx) { @@ -563,7 +575,7 @@ protected UnionTypeExtensionDefinition createUnionTypeExtensionDefinition(Graphq } def.memberTypes(members); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected EnumTypeDefinition createEnumTypeDefinition(GraphqlParser.EnumTypeDefinitionContext ctx) { @@ -574,9 +586,9 @@ protected EnumTypeDefinition createEnumTypeDefinition(GraphqlParser.EnumTypeDefi def.directives(createDirectives(ctx.directives())); if (ctx.enumValueDefinitions() != null) { def.enumValueDefinitions( - ctx.enumValueDefinitions().enumValueDefinition().stream().map(this::createEnumValueDefinition).collect(toList())); + map(ctx.enumValueDefinitions().enumValueDefinition(), this::createEnumValueDefinition)); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected EnumTypeExtensionDefinition createEnumTypeExtensionDefinition(GraphqlParser.EnumTypeExtensionDefinitionContext ctx) { @@ -586,9 +598,9 @@ protected EnumTypeExtensionDefinition createEnumTypeExtensionDefinition(GraphqlP def.directives(createDirectives(ctx.directives())); if (ctx.extensionEnumValueDefinitions() != null) { def.enumValueDefinitions( - ctx.extensionEnumValueDefinitions().enumValueDefinition().stream().map(this::createEnumValueDefinition).collect(toList())); + map(ctx.extensionEnumValueDefinitions().enumValueDefinition(), this::createEnumValueDefinition)); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected EnumValueDefinition createEnumValueDefinition(GraphqlParser.EnumValueDefinitionContext ctx) { @@ -597,7 +609,7 @@ protected EnumValueDefinition createEnumValueDefinition(GraphqlParser.EnumValueD addCommonData(def, ctx); def.description(newDescription(ctx.description())); def.directives(createDirectives(ctx.directives())); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected InputObjectTypeDefinition createInputObjectTypeDefinition(GraphqlParser.InputObjectTypeDefinitionContext ctx) { @@ -609,7 +621,7 @@ protected InputObjectTypeDefinition createInputObjectTypeDefinition(GraphqlParse if (ctx.inputObjectValueDefinitions() != null) { def.inputValueDefinitions(createInputValueDefinitions(ctx.inputObjectValueDefinitions().inputValueDefinition())); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected InputObjectTypeExtensionDefinition createInputObjectTypeExtensionDefinition(GraphqlParser.InputObjectTypeExtensionDefinitionContext ctx) { @@ -620,7 +632,7 @@ protected InputObjectTypeExtensionDefinition createInputObjectTypeExtensionDefin if (ctx.extensionInputObjectValueDefinitions() != null) { def.inputValueDefinitions(createInputValueDefinitions(ctx.extensionInputObjectValueDefinitions().inputValueDefinition())); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected DirectiveDefinition createDirectiveDefinition(GraphqlParser.DirectiveDefinitionContext ctx) { @@ -628,6 +640,9 @@ protected DirectiveDefinition createDirectiveDefinition(GraphqlParser.DirectiveD def.name(ctx.name().getText()); addCommonData(def, ctx); def.description(newDescription(ctx.description())); + + def.repeatable(ctx.REPEATABLE() != null); + GraphqlParser.DirectiveLocationsContext directiveLocationsContext = ctx.directiveLocations(); List directiveLocations = new ArrayList<>(); while (directiveLocationsContext != null) { @@ -638,41 +653,46 @@ protected DirectiveDefinition createDirectiveDefinition(GraphqlParser.DirectiveD if (ctx.argumentsDefinition() != null) { def.inputValueDefinitions(createInputValueDefinitions(ctx.argumentsDefinition().inputValueDefinition())); } - return def.build(); + return captureRuleContext(def.build(), ctx); } protected DirectiveLocation createDirectiveLocation(GraphqlParser.DirectiveLocationContext ctx) { DirectiveLocation.Builder def = DirectiveLocation.newDirectiveLocation(); def.name(ctx.name().getText()); addCommonData(def, ctx); - return def.build(); + return captureRuleContext(def.build(), ctx); } protected Value createValue(GraphqlParser.ValueWithVariableContext ctx) { if (ctx.IntValue() != null) { IntValue.Builder intValue = IntValue.newIntValue().value(new BigInteger(ctx.IntValue().getText())); addCommonData(intValue, ctx); - return intValue.build(); + return captureRuleContext(intValue.build(), ctx); } else if (ctx.FloatValue() != null) { - FloatValue.Builder floatValue = FloatValue.newFloatValue().value(new BigDecimal(ctx.FloatValue().getText())); + FloatValue.Builder floatValue; + try { + floatValue = FloatValue.newFloatValue().value(new BigDecimal(ctx.FloatValue().getText())); + } catch (NumberFormatException e) { + throw new InvalidSyntaxException("Invalid floating point value", null, ctx.FloatValue().getText(), null, e); + } addCommonData(floatValue, ctx); - return floatValue.build(); + return captureRuleContext(floatValue.build(), ctx); } else if (ctx.BooleanValue() != null) { BooleanValue.Builder booleanValue = BooleanValue.newBooleanValue().value(Boolean.parseBoolean(ctx.BooleanValue().getText())); addCommonData(booleanValue, ctx); - return booleanValue.build(); + return captureRuleContext(booleanValue.build(), ctx); } else if (ctx.NullValue() != null) { NullValue.Builder nullValue = NullValue.newNullValue(); addCommonData(nullValue, ctx); - return nullValue.build(); - } else if (ctx.stringValue() != null) { - StringValue.Builder stringValue = StringValue.newStringValue().value(quotedString(ctx.stringValue())); + return captureRuleContext(nullValue.build(), ctx); + } else if (ctx.StringValue() != null) { + StringValue.Builder stringValue = StringValue.newStringValue().value(quotedString(ctx.StringValue())); addCommonData(stringValue, ctx); - return stringValue.build(); + return captureRuleContext(stringValue.build(), ctx); } else if (ctx.enumValue() != null) { EnumValue.Builder enumValue = EnumValue.newEnumValue().name(ctx.enumValue().getText()); addCommonData(enumValue, ctx); - return enumValue.build(); + return captureRuleContext(enumValue.build(), ctx); } else if (ctx.arrayValueWithVariable() != null) { ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); addCommonData(arrayValue, ctx); @@ -680,7 +700,7 @@ protected Value createValue(GraphqlParser.ValueWithVariableContext ctx) { for (GraphqlParser.ValueWithVariableContext valueWithVariableContext : ctx.arrayValueWithVariable().valueWithVariable()) { values.add(createValue(valueWithVariableContext)); } - return arrayValue.values(values).build(); + return captureRuleContext(arrayValue.values(values).build(), ctx); } else if (ctx.objectValueWithVariable() != null) { ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); addCommonData(objectValue, ctx); @@ -694,11 +714,11 @@ protected Value createValue(GraphqlParser.ValueWithVariableContext ctx) { .build(); objectFields.add(objectField); } - return objectValue.objectFields(objectFields).build(); + return captureRuleContext(objectValue.objectFields(objectFields).build(), ctx); } else if (ctx.variable() != null) { VariableReference.Builder variableReference = VariableReference.newVariableReference().name(ctx.variable().name().getText()); addCommonData(variableReference, ctx); - return variableReference.build(); + return captureRuleContext(variableReference.build(), ctx); } return assertShouldNeverHappen(); } @@ -707,27 +727,27 @@ protected Value createValue(GraphqlParser.ValueContext ctx) { if (ctx.IntValue() != null) { IntValue.Builder intValue = IntValue.newIntValue().value(new BigInteger(ctx.IntValue().getText())); addCommonData(intValue, ctx); - return intValue.build(); + return captureRuleContext(intValue.build(), ctx); } else if (ctx.FloatValue() != null) { FloatValue.Builder floatValue = FloatValue.newFloatValue().value(new BigDecimal(ctx.FloatValue().getText())); addCommonData(floatValue, ctx); - return floatValue.build(); + return captureRuleContext(floatValue.build(), ctx); } else if (ctx.BooleanValue() != null) { BooleanValue.Builder booleanValue = BooleanValue.newBooleanValue().value(Boolean.parseBoolean(ctx.BooleanValue().getText())); addCommonData(booleanValue, ctx); - return booleanValue.build(); + return captureRuleContext(booleanValue.build(), ctx); } else if (ctx.NullValue() != null) { NullValue.Builder nullValue = NullValue.newNullValue(); addCommonData(nullValue, ctx); - return nullValue.build(); - } else if (ctx.stringValue() != null) { - StringValue.Builder stringValue = StringValue.newStringValue().value(quotedString(ctx.stringValue())); + return captureRuleContext(nullValue.build(), ctx); + } else if (ctx.StringValue() != null) { + StringValue.Builder stringValue = StringValue.newStringValue().value(quotedString(ctx.StringValue())); addCommonData(stringValue, ctx); - return stringValue.build(); + return captureRuleContext(stringValue.build(), ctx); } else if (ctx.enumValue() != null) { EnumValue.Builder enumValue = EnumValue.newEnumValue().name(ctx.enumValue().getText()); addCommonData(enumValue, ctx); - return enumValue.build(); + return captureRuleContext(enumValue.build(), ctx); } else if (ctx.arrayValue() != null) { ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); addCommonData(arrayValue, ctx); @@ -735,7 +755,7 @@ protected Value createValue(GraphqlParser.ValueContext ctx) { for (GraphqlParser.ValueContext valueContext : ctx.arrayValue().value()) { values.add(createValue(valueContext)); } - return arrayValue.values(values).build(); + return captureRuleContext(arrayValue.values(values).build(), ctx); } else if (ctx.objectValue() != null) { ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); addCommonData(objectValue, ctx); @@ -748,18 +768,19 @@ protected Value createValue(GraphqlParser.ValueContext ctx) { .build(); objectFields.add(objectField); } - return objectValue.objectFields(objectFields).build(); + return captureRuleContext(objectValue.objectFields(objectFields).build(), ctx); } return assertShouldNeverHappen(); } - static String quotedString(GraphqlParser.StringValueContext ctx) { - boolean multiLine = ctx.TripleQuotedStringValue() != null; - String strText = ctx.getText(); + protected String quotedString(TerminalNode terminalNode) { + boolean multiLine = terminalNode.getText().startsWith("\"\"\""); + String strText = terminalNode.getText(); + SourceLocation sourceLocation = AntlrHelper.createSourceLocation(multiSourceReader, terminalNode); if (multiLine) { return parseTripleQuotedString(strText); } else { - return parseSingleQuotedString(strText); + return parseSingleQuotedString(i18N, strText, sourceLocation); } } @@ -773,14 +794,17 @@ protected void addCommonData(NodeBuilder nodeBuilder, ParserRuleContext parserRu } private void addIgnoredChars(ParserRuleContext ctx, NodeBuilder nodeBuilder) { + if (!parserOptions.isCaptureIgnoredChars()) { + return; + } Token start = ctx.getStart(); int tokenStartIndex = start.getTokenIndex(); - List leftChannel = tokens.getHiddenTokensToLeft(tokenStartIndex, CHANNEL_IGNORED_CHARS); + List leftChannel = tokens.getHiddenTokensToLeft(tokenStartIndex, CHANNEL_WHITESPACE); List ignoredCharsLeft = mapTokenToIgnoredChar(leftChannel); Token stop = ctx.getStop(); int tokenStopIndex = stop.getTokenIndex(); - List rightChannel = tokens.getHiddenTokensToRight(tokenStopIndex, CHANNEL_IGNORED_CHARS); + List rightChannel = tokens.getHiddenTokensToRight(tokenStopIndex, CHANNEL_WHITESPACE); List ignoredCharsRight = mapTokenToIgnoredChar(rightChannel); nodeBuilder.ignoredChars(new IgnoredChars(ignoredCharsLeft, ignoredCharsRight)); @@ -788,12 +812,9 @@ private void addIgnoredChars(ParserRuleContext ctx, NodeBuilder nodeBuilder) { private List mapTokenToIgnoredChar(List tokens) { if (tokens == null) { - return Collections.emptyList(); + return emptyList(); } - return tokens - .stream() - .map(this::createIgnoredChar) - .collect(toList()); + return map(tokens, this::createIgnoredChar); } @@ -826,30 +847,38 @@ protected Description newDescription(GraphqlParser.DescriptionContext descriptio if (descriptionCtx == null) { return null; } - GraphqlParser.StringValueContext stringValueCtx = descriptionCtx.stringValue(); - if (stringValueCtx == null) { + TerminalNode terminalNode = descriptionCtx.StringValue(); + if (terminalNode == null) { return null; } - boolean multiLine = stringValueCtx.TripleQuotedStringValue() != null; - String content = stringValueCtx.getText(); + String content = terminalNode.getText(); + boolean multiLine = content.startsWith("\"\"\""); + SourceLocation sourceLocation = getSourceLocation(descriptionCtx); if (multiLine) { content = parseTripleQuotedString(content); } else { - content = parseSingleQuotedString(content); + content = parseSingleQuotedString(i18N, content, sourceLocation); } - SourceLocation sourceLocation = getSourceLocation(descriptionCtx); return new Description(content, sourceLocation, multiLine); } - protected SourceLocation getSourceLocation(Token token) { - return AntlrHelper.createSourceLocation(multiSourceReader, token); - } - protected SourceLocation getSourceLocation(ParserRuleContext parserRuleContext) { return getSourceLocation(parserRuleContext.getStart()); } + protected SourceLocation getSourceLocation(Token token) { + if (parserOptions.isCaptureSourceLocation()) { + return AntlrHelper.createSourceLocation(multiSourceReader, token); + } else { + return SourceLocation.EMPTY; + } + } + protected List getComments(ParserRuleContext ctx) { + if (!parserOptions.isCaptureLineComments()) { + return NO_COMMENTS; + } + Token start = ctx.getStart(); if (start != null) { int tokPos = start.getTokenIndex(); @@ -858,16 +887,16 @@ protected List getComments(ParserRuleContext ctx) { return getCommentOnChannel(refChannel); } } - return Collections.emptyList(); + return NO_COMMENTS; } protected List getCommentOnChannel(List refChannel) { - List comments = new ArrayList<>(); + ImmutableList.Builder comments = ImmutableList.builder(); for (Token refTok : refChannel) { String text = refTok.getText(); // we strip the leading hash # character but we don't trim because we don't - // know the "comment markup". Maybe its space sensitive, maybe its not. So + // know the "comment markup". Maybe it's space sensitive, maybe it's not. So // consumers can decide that if (text == null) { continue; @@ -877,9 +906,31 @@ protected List getCommentOnChannel(List refChannel) { int column = refTok.getCharPositionInLine(); // graphql spec says line numbers start at 1 int line = sourceAndLine.getLine() + 1; - comments.add(new Comment(text, new SourceLocation(line, column, sourceAndLine.getSourceName()))); + + SourceLocation sourceLocation = SourceLocation.EMPTY; + if (parserOptions.isCaptureSourceLocation()) { + sourceLocation = new SourceLocation(line, column, sourceAndLine.getSourceName()); + } + comments.add(new Comment(text, sourceLocation)); + } + return comments.build(); + } + + + private List getImplementz(GraphqlParser.ImplementsInterfacesContext implementsInterfacesContext) { + List implementz = new ArrayList<>(); + while (implementsInterfacesContext != null) { + GraphqlParser.TypeNameContext typeName = implementsInterfacesContext.typeName(); + implementz.add(0, createTypeName(typeName)); + implementsInterfacesContext = implementsInterfacesContext.implementsInterfaces(); } - return comments; + return implementz; } + private > T captureRuleContext(T node, ParserRuleContext ctx) { + if (nodeToRuleMap != null) { + nodeToRuleMap.put(node, ctx); + } + return node; + } } diff --git a/src/main/java/graphql/parser/InvalidSyntaxException.java b/src/main/java/graphql/parser/InvalidSyntaxException.java index bd4ad20a7d..939dfd2e2d 100644 --- a/src/main/java/graphql/parser/InvalidSyntaxException.java +++ b/src/main/java/graphql/parser/InvalidSyntaxException.java @@ -4,12 +4,16 @@ import graphql.GraphQLException; import graphql.Internal; import graphql.InvalidSyntaxError; +import graphql.PublicApi; import graphql.language.SourceLocation; import java.util.Collections; import java.util.List; -@Internal +/** + * This exception is thrown by the {@link Parser} if the graphql syntax is not valid + */ +@PublicApi public class InvalidSyntaxException extends GraphQLException { private final String message; @@ -17,35 +21,20 @@ public class InvalidSyntaxException extends GraphQLException { private final String offendingToken; private final SourceLocation location; - InvalidSyntaxException(SourceLocation location, String msg, String sourcePreview, String offendingToken, Exception cause) { + @Internal + protected InvalidSyntaxException(String msg, SourceLocation location, String offendingToken, String sourcePreview, Exception cause) { super(cause); - this.message = mkMessage(msg, offendingToken, location); + this.message = msg; this.sourcePreview = sourcePreview; this.offendingToken = offendingToken; this.location = location; } - private String mkMessage(String msg, String offendingToken, SourceLocation location) { - StringBuilder sb = new StringBuilder(); - sb.append("Invalid Syntax :"); - if (msg != null) { - sb.append(" ").append(msg); - } - if (offendingToken != null) { - sb.append(String.format(" offending token '%s'", offendingToken)); - } - if (location != null) { - sb.append(String.format(" at line %d column %d", location.getLine(), location.getColumn())); - } - return sb.toString(); - } - public InvalidSyntaxError toInvalidSyntaxError() { List sourceLocations = location == null ? null : Collections.singletonList(location); return new InvalidSyntaxError(sourceLocations, message, sourcePreview, offendingToken); } - @Override public String getMessage() { return message; diff --git a/src/main/java/graphql/parser/MultiSourceReader.java b/src/main/java/graphql/parser/MultiSourceReader.java index a85906d824..fad54b2fa0 100644 --- a/src/main/java/graphql/parser/MultiSourceReader.java +++ b/src/main/java/graphql/parser/MultiSourceReader.java @@ -2,6 +2,7 @@ import graphql.Assert; import graphql.PublicApi; +import graphql.util.LockKit; import java.io.IOException; import java.io.LineNumberReader; @@ -22,11 +23,31 @@ @PublicApi public class MultiSourceReader extends Reader { + // In Java version 16+, LineNumberReader.read considers end-of-stream to be a line terminator + // and will increment the line number, whereas in previous versions it doesn't. + private static final boolean LINE_NUMBER_READER_EOS_IS_TERMINATOR; + private final List sourceParts; private final StringBuilder data = new StringBuilder(); private int currentIndex = 0; private int overallLineNumber = 0; private final boolean trackData; + private final LockKit.ReentrantLock readerLock = new LockKit.ReentrantLock(); + + static { + LINE_NUMBER_READER_EOS_IS_TERMINATOR = lineNumberReaderEOSIsTerminator(); + } + + private static boolean lineNumberReaderEOSIsTerminator() { + LineNumberReader reader = new LineNumberReader(new StringReader("a")); + try { + reader.read(); + reader.read(); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + return reader.getLineNumber() > 0; + } private MultiSourceReader(Builder builder) { @@ -37,19 +58,28 @@ private MultiSourceReader(Builder builder) { @Override public int read(char[] cbuf, int off, int len) throws IOException { while (true) { - synchronized (this) { + readerLock.lock(); + try { if (currentIndex >= sourceParts.size()) { return -1; } SourcePart sourcePart = sourceParts.get(currentIndex); int read = sourcePart.lineReader.read(cbuf, off, len); - overallLineNumber = calcLineNumber(); if (read == -1) { currentIndex++; - } else { + sourcePart.reachedEndOfStream = true; + } else if (read > 0) { + sourcePart.lastRead = cbuf[off + read - 1]; + } + // note: calcLineNumber() must be called after updating sourcePart.reachedEndOfStream + // and sourcePart.lastRead + overallLineNumber = calcLineNumber(); + if (read != -1) { trackData(cbuf, off, read); return read; } + } finally { + readerLock.unlock(); } } } @@ -63,7 +93,7 @@ private void trackData(char[] cbuf, int off, int len) { private int calcLineNumber() { int linenumber = 0; for (SourcePart sourcePart : sourceParts) { - linenumber += sourcePart.lineReader.getLineNumber(); + linenumber += sourcePart.getLineNumber(); } return linenumber; } @@ -120,7 +150,7 @@ public SourceAndLine getSourceAndLineFromOverallLine(int overallLineNumber) { sourceAndLine.sourceName = sourcePart.sourceName; if (sourcePart == currentPart) { // we cant go any further - int partLineNumber = currentPart.lineReader.getLineNumber(); + int partLineNumber = currentPart.getLineNumber(); previousPage = page; page += partLineNumber; if (page > overallLineNumber) { @@ -131,7 +161,7 @@ public SourceAndLine getSourceAndLineFromOverallLine(int overallLineNumber) { return sourceAndLine; } else { previousPage = page; - int partLineNumber = sourcePart.lineReader.getLineNumber(); + int partLineNumber = sourcePart.getLineNumber(); page += partLineNumber; if (page > overallLineNumber) { sourceAndLine.line = overallLineNumber - previousPage; @@ -147,22 +177,22 @@ public SourceAndLine getSourceAndLineFromOverallLine(int overallLineNumber) { * @return the line number of the current source. This is zeroes based like {@link java.io.LineNumberReader#getLineNumber()} */ public int getLineNumber() { - synchronized (this) { + return readerLock.callLocked(() -> { if (sourceParts.isEmpty()) { return 0; } if (currentIndex >= sourceParts.size()) { - return sourceParts.get(sourceParts.size() - 1).lineReader.getLineNumber(); + return sourceParts.get(sourceParts.size() - 1).getLineNumber(); } - return sourceParts.get(currentIndex).lineReader.getLineNumber(); - } + return sourceParts.get(currentIndex).getLineNumber(); + }); } /** * @return The name of the current source */ public String getSourceName() { - synchronized (this) { + return readerLock.callLocked(() -> { if (sourceParts.isEmpty()) { return null; } @@ -170,7 +200,7 @@ public String getSourceName() { return sourceParts.get(sourceParts.size() - 1).sourceName; } return sourceParts.get(currentIndex).sourceName; - } + }); } /** @@ -198,13 +228,16 @@ public List getData() { @Override public void close() throws IOException { - synchronized (this) { + readerLock.lock(); + try { for (SourcePart sourcePart : sourceParts) { if (!sourcePart.closed) { sourcePart.lineReader.close(); sourcePart.closed = true; } } + } finally { + readerLock.unlock(); } } @@ -212,6 +245,24 @@ private static class SourcePart { String sourceName; LineNumberReader lineReader; boolean closed; + char lastRead; + boolean reachedEndOfStream = false; + + /** + * This handles the discrepancy between LineNumberReader.getLineNumber() for Java versions + * 16+ vs below. Use this instead of lineReader.getLineNumber() directly. + * @return The current line number. EOS is not considered a line terminator. + */ + int getLineNumber() { + int lineNumber = lineReader.getLineNumber(); + if (reachedEndOfStream + && LINE_NUMBER_READER_EOS_IS_TERMINATOR + && lastRead != '\r' + && lastRead != '\n') { + return Math.max(lineNumber - 1, 0); + } + return lineNumber; + } } diff --git a/src/main/java/graphql/parser/NodeToRuleCapturingParser.java b/src/main/java/graphql/parser/NodeToRuleCapturingParser.java new file mode 100644 index 0000000000..f63fe58166 --- /dev/null +++ b/src/main/java/graphql/parser/NodeToRuleCapturingParser.java @@ -0,0 +1,49 @@ +package graphql.parser; + +import graphql.Internal; +import graphql.language.Node; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; + +import java.util.HashMap; +import java.util.Map; + +/** + * A parser that will capture parsing context data which can be later used for accessing tokens that are discarded + * during the conventional parsing process (like comments). + */ +@Internal +public class NodeToRuleCapturingParser extends Parser { + private final ParserContext parserContext; + + public NodeToRuleCapturingParser() { + parserContext = new ParserContext(); + } + + @Override + protected GraphqlAntlrToLanguage getAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader, ParserEnvironment environment) { + parserContext.tokens = tokens; + return new GraphqlAntlrToLanguage(tokens, multiSourceReader, environment.getParserOptions(), environment.getI18N(), parserContext.nodeToRuleMap); + } + + public ParserContext getParserContext() { + return parserContext; + } + + static public class ParserContext { + private final Map, ParserRuleContext> nodeToRuleMap; + private CommonTokenStream tokens; + + public ParserContext() { + this.nodeToRuleMap = new HashMap<>(); + } + + protected CommonTokenStream getTokens() { + return tokens; + } + + protected Map, ParserRuleContext> getNodeToRuleMap() { + return nodeToRuleMap; + } + } +} diff --git a/src/main/java/graphql/parser/Parser.java b/src/main/java/graphql/parser/Parser.java index ca7926db50..c2015f274f 100644 --- a/src/main/java/graphql/parser/Parser.java +++ b/src/main/java/graphql/parser/Parser.java @@ -1,109 +1,455 @@ package graphql.parser; +import com.google.common.collect.ImmutableList; +import graphql.Internal; import graphql.PublicApi; import graphql.language.Document; +import graphql.language.FieldDefinition; +import graphql.language.Node; import graphql.language.SourceLocation; +import graphql.language.Type; +import graphql.language.Value; +import graphql.parser.antlr.GraphqlBaseListener; import graphql.parser.antlr.GraphqlLexer; import graphql.parser.antlr.GraphqlParser; +import graphql.parser.exceptions.ParseCancelledException; +import graphql.parser.exceptions.ParseCancelledTooDeepException; +import graphql.parser.exceptions.ParseCancelledTooManyCharsException; import org.antlr.v4.runtime.BaseErrorListener; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CodePointCharStream; import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.Recognizer; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.atn.PredictionMode; +import org.antlr.v4.runtime.tree.ParseTreeListener; +import org.antlr.v4.runtime.tree.TerminalNode; +import org.jspecify.annotations.NonNull; import java.io.IOException; import java.io.Reader; import java.io.UncheckedIOException; import java.util.List; +import java.util.Optional; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; +/** + * This can parse graphql syntax, both Query syntax and Schema Definition Language (SDL) syntax, into an + * Abstract Syntax Tree (AST) represented by a {@link Document} + *

    + * You should not generally need to call this class as the {@link graphql.GraphQL} code sets this up for you + * but if you are doing specific graphql utilities this class is essential. + *

    + * Graphql syntax has a series of characters, such as spaces, new lines and commas that are not considered relevant + * to the syntax. However they can be captured and associated with the AST elements they belong to. + *

    + * This costs more memory but for certain use cases (like editors) this maybe be useful. We have chosen to no capture + * ignored characters by default but you can turn this on, either per parse or statically for the whole JVM + * via {@link ParserOptions#setDefaultParserOptions(ParserOptions)} ()}} + * + * @see graphql.language.IgnoredChar + */ @PublicApi public class Parser { + @Internal + public static final int CHANNEL_COMMENTS = 2; + @Internal + public static final int CHANNEL_WHITESPACE = 3; - public static Document parse(String input) { + /** + * Parses a string input into a graphql AST {@link Document} + * + * @param environment the parser environment to use + * + * @return an AST {@link Document} + * + * @throws InvalidSyntaxException if the document is not valid graphql syntax + */ + public static Document parse(ParserEnvironment environment) throws InvalidSyntaxException { + return new Parser().parseDocument(environment); + } + + /** + * Parses a string input into a graphql AST {@link Document} + * + * @param input the input to parse + * + * @return an AST {@link Document} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ + public static Document parse(String input) throws InvalidSyntaxException { return new Parser().parseDocument(input); } - public Document parseDocument(String input) throws InvalidSyntaxException { - return parseDocument(input, null); + + /** + * Parses a string input into a graphql AST {@link Value} + * + * @param input the input to parse + * + * @return an AST {@link Value} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ + public static Value parseValue(String input) throws InvalidSyntaxException { + return new Parser().parseValueImpl(input); + } + + /** + * Parses a string input into a graphql AST {@link FieldDefinition} + * + * @param input the input to parse + * + * @return an AST {@link FieldDefinition} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ + public static FieldDefinition parseFieldDefinition(String input) throws InvalidSyntaxException { + return new Parser().parseFieldDefinitionImpl(input); + } + + /** + * Parses a string input into a graphql AST Type + * + * @param input the input to parse + * + * @return an AST {@link Type} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ + public static Type parseType(String input) throws InvalidSyntaxException { + return new Parser().parseTypeImpl(input); } - public Document parseDocument(String input, String sourceName) throws InvalidSyntaxException { + /** + * Parses document text into a graphql AST {@link Document} + * + * @param environment the parser environment to sue + * + * @return an AST {@link Document} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ + public Document parseDocument(ParserEnvironment environment) throws InvalidSyntaxException { + return parseDocumentImpl(environment); + } + + /** + * Parses a string input into a graphql AST {@link Document} + * + * @param input the input to parse + * + * @return an AST {@link Document} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ + public Document parseDocument(String input) throws InvalidSyntaxException { MultiSourceReader multiSourceReader = MultiSourceReader.newMultiSourceReader() - .string(input, sourceName) + .string(input, null) .trackData(true) .build(); - return parseDocument(multiSourceReader); + + ParserEnvironment parserEnvironment = ParserEnvironment.newParserEnvironment() + .document(multiSourceReader) + .build(); + return parseDocumentImpl(parserEnvironment); } + /** + * Parses reader input into a graphql AST {@link Document} + * + * @param reader the reader input to parse + * + * @return an AST {@link Document} + * + * @throws InvalidSyntaxException if the input is not valid graphql syntax + */ public Document parseDocument(Reader reader) throws InvalidSyntaxException { + ParserEnvironment parserEnvironment = ParserEnvironment.newParserEnvironment() + .document(reader) + .build(); + return parseDocumentImpl(parserEnvironment); + } + + private Document parseDocumentImpl(ParserEnvironment environment) throws InvalidSyntaxException { + BiFunction nodeFunction = (parser, toLanguage) -> { + GraphqlParser.DocumentContext documentContext = parser.document(); + Document doc = toLanguage.createDocument(documentContext); + return new Object[]{documentContext, doc}; + }; + return (Document) parseImpl(environment, nodeFunction); + } + + private Value parseValueImpl(String input) throws InvalidSyntaxException { + BiFunction nodeFunction = (parser, toLanguage) -> { + GraphqlParser.ValueContext documentContext = parser.value(); + Value value = toLanguage.createValue(documentContext); + return new Object[]{documentContext, value}; + }; + MultiSourceReader multiSourceReader = MultiSourceReader.newMultiSourceReader() + .string(input, null) + .trackData(true) + .build(); + ParserEnvironment parserEnvironment = ParserEnvironment.newParserEnvironment().document(multiSourceReader).build(); + return (Value) parseImpl(parserEnvironment, nodeFunction); + } + + private Type parseTypeImpl(String input) throws InvalidSyntaxException { + BiFunction nodeFunction = (parser, toLanguage) -> { + final GraphqlParser.TypeContext documentContext = parser.type(); + Type value = toLanguage.createType(documentContext); + return new Object[]{documentContext, value}; + }; + MultiSourceReader multiSourceReader = MultiSourceReader.newMultiSourceReader() + .string(input, null) + .trackData(true) + .build(); + + ParserEnvironment parserEnvironment = ParserEnvironment.newParserEnvironment().document(multiSourceReader).build(); + return (Type) parseImpl(parserEnvironment, nodeFunction); + } + + private FieldDefinition parseFieldDefinitionImpl(String input) throws InvalidSyntaxException { + BiFunction nodeFunction = (parser, toLanguage) -> { + final GraphqlParser.FieldDefinitionContext documentContext = parser.fieldDefinition(); + FieldDefinition value = toLanguage.createFieldDefinition(documentContext); + return new Object[]{documentContext, value}; + }; + MultiSourceReader multiSourceReader = MultiSourceReader.newMultiSourceReader() + .string(input, null) + .trackData(true) + .build(); + + ParserEnvironment parserEnvironment = ParserEnvironment.newParserEnvironment().document(multiSourceReader).build(); + return (FieldDefinition) parseImpl(parserEnvironment, nodeFunction); + } + + private Node parseImpl(ParserEnvironment environment, BiFunction nodeFunction) throws InvalidSyntaxException { + // default in the parser options if they are not set + ParserOptions parserOptions = environment.getParserOptions(); + parserOptions = Optional.ofNullable(parserOptions).orElse(ParserOptions.getDefaultParserOptions()); + + MultiSourceReader multiSourceReader = setupMultiSourceReader(environment, parserOptions); + + SafeTokenReader safeTokenReader = setupSafeTokenReader(environment, parserOptions, multiSourceReader); + + CodePointCharStream charStream = setupCharStream(safeTokenReader); + + GraphqlLexer lexer = setupGraphqlLexer(environment, multiSourceReader, charStream); + + // this lexer wrapper allows us to stop lexing when too many tokens are in place. This prevents DOS attacks. + SafeTokenSource safeTokenSource = getSafeTokenSource(environment, parserOptions, multiSourceReader, lexer); + + CommonTokenStream tokens = new CommonTokenStream(safeTokenSource); + + GraphqlParser parser = new GraphqlParser(tokens); + parser.removeErrorListeners(); + parser.getInterpreter().setPredictionMode(PredictionMode.SLL); + + ExtendedBailStrategy bailStrategy = new ExtendedBailStrategy(multiSourceReader, environment); + parser.setErrorHandler(bailStrategy); + + // preserve old protected call semantics - remove at some point + GraphqlAntlrToLanguage toLanguage = getAntlrToLanguage(tokens, multiSourceReader, environment); + + setupParserListener(environment, multiSourceReader, parser, toLanguage); + + + // + // parsing starts ...... now! + // + Object[] contextAndNode = nodeFunction.apply(parser, toLanguage); + ParserRuleContext parserRuleContext = (ParserRuleContext) contextAndNode[0]; + Node node = (Node) contextAndNode[1]; + + Token stop = parserRuleContext.getStop(); + List allTokens = tokens.getTokens(); + if (stop != null && allTokens != null && !allTokens.isEmpty()) { + Token last = allTokens.get(allTokens.size() - 1); + // + // do we have more tokens in the stream than we consumed in the parse? + // if yes then it's invalid. We make sure it's the same channel + boolean notEOF = last.getType() != Token.EOF; + boolean lastGreaterThanDocument = last.getTokenIndex() > stop.getTokenIndex(); + boolean sameChannel = last.getChannel() == stop.getChannel(); + if (notEOF && lastGreaterThanDocument && sameChannel) { + throw bailStrategy.mkMoreTokensException(last); + } + } + return node; + } + + private static MultiSourceReader setupMultiSourceReader(ParserEnvironment environment, ParserOptions parserOptions) { MultiSourceReader multiSourceReader; + Reader reader = environment.getDocument(); if (reader instanceof MultiSourceReader) { multiSourceReader = (MultiSourceReader) reader; } else { multiSourceReader = MultiSourceReader.newMultiSourceReader() - .reader(reader, null).build(); + .reader(reader, null) + .trackData(parserOptions.isReaderTrackData()) + .build(); } + return multiSourceReader; + } + + @NonNull + private static SafeTokenReader setupSafeTokenReader(ParserEnvironment environment, ParserOptions parserOptions, MultiSourceReader multiSourceReader) { + int maxCharacters = parserOptions.getMaxCharacters(); + Consumer onTooManyCharacters = it -> { + throw new ParseCancelledTooManyCharsException(environment.getI18N(), maxCharacters); + }; + return new SafeTokenReader(multiSourceReader, maxCharacters, onTooManyCharacters); + } + + @NonNull + private static CodePointCharStream setupCharStream(SafeTokenReader safeTokenReader) { CodePointCharStream charStream; try { - charStream = CharStreams.fromReader(multiSourceReader); + charStream = CharStreams.fromReader(safeTokenReader); } catch (IOException e) { throw new UncheckedIOException(e); } + return charStream; + } + @NonNull + private static GraphqlLexer setupGraphqlLexer(ParserEnvironment environment, MultiSourceReader multiSourceReader, CodePointCharStream charStream) { GraphqlLexer lexer = new GraphqlLexer(charStream); lexer.removeErrorListeners(); lexer.addErrorListener(new BaseErrorListener() { @Override - public void syntaxError(Recognizer recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { + public void syntaxError(Recognizer recognizer, Object offendingSymbol, int line, int charPositionInLine, String antlerMsg, RecognitionException e) { SourceLocation sourceLocation = AntlrHelper.createSourceLocation(multiSourceReader, line, charPositionInLine); String preview = AntlrHelper.createPreview(multiSourceReader, line); - throw new InvalidSyntaxException(sourceLocation, "Invalid syntax: " + msg, preview, null, null); + String msgKey; + List args; + if (antlerMsg == null || environment.getParserOptions().isRedactTokenParserErrorMessages()) { + msgKey = "InvalidSyntax.noMessage"; + args = ImmutableList.of(sourceLocation.getLine(), sourceLocation.getColumn()); + } else { + msgKey = "InvalidSyntax.full"; + args = ImmutableList.of(antlerMsg, sourceLocation.getLine(), sourceLocation.getColumn()); + } + String msg = environment.getI18N().msg(msgKey, args); + throw new InvalidSyntaxException(msg, sourceLocation, null, preview, null); } }); + return lexer; + } - CommonTokenStream tokens = new CommonTokenStream(lexer); + @NonNull + private SafeTokenSource getSafeTokenSource(ParserEnvironment environment, ParserOptions parserOptions, MultiSourceReader multiSourceReader, GraphqlLexer lexer) { + int maxTokens = parserOptions.getMaxTokens(); + int maxWhitespaceTokens = parserOptions.getMaxWhitespaceTokens(); + BiConsumer onTooManyTokens = (maxTokenCount, token) -> throwIfTokenProblems( + environment, + token, + maxTokenCount, + multiSourceReader, + ParseCancelledException.class); + return new SafeTokenSource(lexer, maxTokens, maxWhitespaceTokens, onTooManyTokens); + } - GraphqlParser parser = new GraphqlParser(tokens); - parser.removeErrorListeners(); - parser.getInterpreter().setPredictionMode(PredictionMode.SLL); + private void setupParserListener(ParserEnvironment environment, MultiSourceReader multiSourceReader, GraphqlParser parser, GraphqlAntlrToLanguage toLanguage) { + ParserOptions parserOptions = toLanguage.getParserOptions(); + ParsingListener parsingListener = parserOptions.getParsingListener(); + int maxTokens = parserOptions.getMaxTokens(); + int maxRuleDepth = parserOptions.getMaxRuleDepth(); + // prevent a billion laugh attacks by restricting how many tokens we allow + ParseTreeListener listener = new GraphqlBaseListener() { + int count = 0; + int depth = 0; - ExtendedBailStrategy bailStrategy = new ExtendedBailStrategy(multiSourceReader); - parser.setErrorHandler(bailStrategy); - GraphqlAntlrToLanguage toLanguage = getAntlrToLanguage(tokens, multiSourceReader); - GraphqlParser.DocumentContext documentContext = parser.document(); + @Override + public void enterEveryRule(ParserRuleContext ctx) { + depth++; + if (depth > maxRuleDepth) { + throwIfTokenProblems( + environment, + ctx.getStart(), + maxRuleDepth, + multiSourceReader, + ParseCancelledTooDeepException.class + ); + } + } - Document doc = toLanguage.createDocument(documentContext); + @Override + public void exitEveryRule(ParserRuleContext ctx) { + depth--; + } - Token stop = documentContext.getStop(); - List allTokens = tokens.getTokens(); - if (stop != null && allTokens != null && !allTokens.isEmpty()) { - Token last = allTokens.get(allTokens.size() - 1); - // - // do we have more tokens in the stream than we consumed in the parse? - // if yes then its invalid. We make sure its the same channel - boolean notEOF = last.getType() != Token.EOF; - boolean lastGreaterThanDocument = last.getTokenIndex() > stop.getTokenIndex(); - boolean sameChannel = last.getChannel() == stop.getChannel(); - if (notEOF && lastGreaterThanDocument && sameChannel) { - throw bailStrategy.mkMoreTokensException(last); + @Override + public void visitTerminal(TerminalNode node) { + + final Token token = node.getSymbol(); + parsingListener.onToken(new ParsingListener.Token() { + @Override + public String getText() { + return token == null ? null : token.getText(); + } + + @Override + public int getLine() { + return token == null ? -1 : token.getLine(); + } + + @Override + public int getCharPositionInLine() { + return token == null ? -1 : token.getCharPositionInLine(); + } + }); + + count++; + if (count > maxTokens) { + throwIfTokenProblems( + environment, + token, + maxTokens, + multiSourceReader, + ParseCancelledException.class + ); + } } + }; + parser.addParseListener(listener); + } + + private void throwIfTokenProblems(ParserEnvironment environment, Token token, int maxLimit, MultiSourceReader multiSourceReader, Class targetException) throws ParseCancelledException { + String tokenType = "grammar"; + SourceLocation sourceLocation = null; + String offendingToken = null; + if (token != null) { + int channel = token.getChannel(); + tokenType = channel == CHANNEL_WHITESPACE ? "whitespace" : (channel == CHANNEL_COMMENTS ? "comments" : "grammar"); + + offendingToken = token.getText(); + sourceLocation = AntlrHelper.createSourceLocation(multiSourceReader, token.getLine(), token.getCharPositionInLine()); } - return doc; + if (targetException.equals(ParseCancelledTooDeepException.class)) { + throw new ParseCancelledTooDeepException(environment.getI18N(), sourceLocation, offendingToken, maxLimit, tokenType); + } + throw new ParseCancelledException(environment.getI18N(), sourceLocation, offendingToken, maxLimit, tokenType); } /** * Allows you to override the ANTLR to AST code. * - * @param tokens the toke stream + * @param tokens the token stream * @param multiSourceReader the source of the query document + * @param environment the parser environment + * * @return a new GraphqlAntlrToLanguage instance */ - protected GraphqlAntlrToLanguage getAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader) { - return new GraphqlAntlrToLanguage(tokens, multiSourceReader); + protected GraphqlAntlrToLanguage getAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader, ParserEnvironment environment) { + return new GraphqlAntlrToLanguage(tokens, multiSourceReader, environment.getParserOptions(), environment.getI18N(), null); } } diff --git a/src/main/java/graphql/parser/ParserEnvironment.java b/src/main/java/graphql/parser/ParserEnvironment.java new file mode 100644 index 0000000000..7f0ac696ba --- /dev/null +++ b/src/main/java/graphql/parser/ParserEnvironment.java @@ -0,0 +1,97 @@ +package graphql.parser; + +import graphql.PublicApi; +import graphql.i18n.I18n; + +import java.io.Reader; +import java.io.StringReader; +import java.util.Locale; + +import static graphql.Assert.assertNotNull; + +/** + * This is the arguments that can be passed to a {@link Parser} + */ +@PublicApi +public interface ParserEnvironment { + + /** + * @return the document to be parsed + */ + Reader getDocument(); + + /** + * @return the parsing options + */ + ParserOptions getParserOptions(); + + /** + * @return the locale to produce parsing error messages in + */ + Locale getLocale(); + + /** + * @return the {@link I18n} to produce parsing error messages with + */ + I18n getI18N(); + + /** + * @return a builder of new parsing options + */ + static Builder newParserEnvironment() { + return new Builder(); + } + + class Builder { + Reader reader; + ParserOptions parserOptions = ParserOptions.getDefaultParserOptions(); + Locale locale = Locale.getDefault(); + + public Builder() { + } + + public Builder document(Reader documentText) { + this.reader = assertNotNull(documentText); + return this; + } + + public Builder document(String documentText) { + return document(new StringReader(documentText)); + } + + public Builder parserOptions(ParserOptions parserOptions) { + this.parserOptions = parserOptions; + return this; + } + + public Builder locale(Locale locale) { + this.locale = assertNotNull(locale); + return this; + } + + public ParserEnvironment build() { + I18n i18n = I18n.i18n(I18n.BundleType.Parsing, locale); + return new ParserEnvironment() { + @Override + public Reader getDocument() { + return reader; + } + + @Override + public ParserOptions getParserOptions() { + return parserOptions; + } + + @Override + public Locale getLocale() { + return locale; + } + + @Override + public I18n getI18N() { + return i18n; + } + }; + } + } +} diff --git a/src/main/java/graphql/parser/ParserOptions.java b/src/main/java/graphql/parser/ParserOptions.java new file mode 100644 index 0000000000..2e04294427 --- /dev/null +++ b/src/main/java/graphql/parser/ParserOptions.java @@ -0,0 +1,410 @@ +package graphql.parser; + +import graphql.PublicApi; + +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; + +/** + * Options that control how the {@link Parser} behaves. + */ +@PublicApi +public class ParserOptions { + /** + * A graphql hacking vector is to send nonsensical queries with large tokens that contain a repeated characters + * that burn lots of parsing CPU time and burn memory representing a document that won't ever execute. + * To prevent this for most users, graphql-java sets this value to 1MB. + * ANTLR parsing time is linear to the number of characters presented. The more you + * allow the longer it takes. + *

    + * If you want to allow more, then {@link #setDefaultParserOptions(ParserOptions)} allows you to change this + * JVM wide. + */ + public static final int MAX_QUERY_CHARACTERS = 1024 * 1024; // 1 MB + + /** + * A graphql hacking vector is to send nonsensical queries with lots of tokens that burn lots of parsing CPU time and burn + * memory representing a document that won't ever execute. To prevent this for most users, graphql-java + * sets this value to 15000. ANTLR parsing time is linear to the number of tokens presented. The more you + * allow the longer it takes. + *

    + * If you want to allow more, then {@link #setDefaultParserOptions(ParserOptions)} allows you to change this + * JVM wide. + */ + public static final int MAX_QUERY_TOKENS = 15_000; + /** + * Another graphql hacking vector is to send large amounts of whitespace in operations that burn lots of parsing CPU time and burn + * memory representing a document. Whitespace token processing in ANTLR is 2 orders of magnitude faster than grammar token processing + * however it still takes some time to happen. + *

    + * If you want to allow more, then {@link #setDefaultParserOptions(ParserOptions)} allows you to change this + * JVM wide. + */ + public static final int MAX_WHITESPACE_TOKENS = 200_000; + + /** + * A graphql hacking vector is to send nonsensical queries that have lots of grammar rule depth to them which + * can cause stack overflow exceptions during the query parsing. To prevent this for most users, graphql-java + * sets this value to 500 grammar rules deep. + *

    + * If you want to allow more, then {@link #setDefaultParserOptions(ParserOptions)} allows you to change this + * JVM wide. + */ + public static final int MAX_RULE_DEPTH = 500; + + private static ParserOptions defaultJvmParserOptions = newParserOptions() + .captureIgnoredChars(false) + .captureSourceLocation(true) + .captureLineComments(true) + .readerTrackData(true) + .maxCharacters(MAX_QUERY_CHARACTERS) + .maxTokens(MAX_QUERY_TOKENS) // to prevent a billion laughs style attacks, we set a default for graphql-java + .maxWhitespaceTokens(MAX_WHITESPACE_TOKENS) + .maxRuleDepth(MAX_RULE_DEPTH) + .redactTokenParserErrorMessages(false) + .build(); + + private static ParserOptions defaultJvmOperationParserOptions = newParserOptions() + .captureIgnoredChars(false) + .captureSourceLocation(true) + .captureLineComments(false) // #comments are not useful in query parsing + .readerTrackData(true) + .maxCharacters(MAX_QUERY_CHARACTERS) + .maxTokens(MAX_QUERY_TOKENS) // to prevent a billion laughs style attacks, we set a default for graphql-java + .maxWhitespaceTokens(MAX_WHITESPACE_TOKENS) + .maxRuleDepth(MAX_RULE_DEPTH) + .redactTokenParserErrorMessages(false) + .build(); + + private static ParserOptions defaultJvmSdlParserOptions = newParserOptions() + .captureIgnoredChars(false) + .captureSourceLocation(true) + .captureLineComments(true) // #comments are useful in SDL parsing + .readerTrackData(true) + .maxCharacters(Integer.MAX_VALUE) + .maxTokens(Integer.MAX_VALUE) // we are less worried about a billion laughs with SDL parsing since the call path is not facing attackers + .maxWhitespaceTokens(Integer.MAX_VALUE) + .maxRuleDepth(Integer.MAX_VALUE) + .redactTokenParserErrorMessages(false) + .build(); + + /** + * By default, the Parser will not capture ignored characters. A static holds this default + * value in a JVM wide basis options object. + * + * Significant memory savings can be made if we do NOT capture ignored characters, + * especially in SDL parsing. + * + * @return the static default JVM value + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public static ParserOptions getDefaultParserOptions() { + return defaultJvmParserOptions; + } + + /** + * By default, the Parser will not capture ignored characters. A static holds this default + * value in a JVM wide basis options object. + * + * Significant memory savings can be made if we do NOT capture ignored characters, + * especially in SDL parsing. So we have set this to false by default. + * + * This static can be set to true to allow the behavior of version 16.x or before. + * + * @param options - the new default JVM parser options + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public static void setDefaultParserOptions(ParserOptions options) { + defaultJvmParserOptions = assertNotNull(options); + } + + + /** + * By default, for operation parsing, the Parser will not capture ignored characters, and it will not capture line comments into AST + * elements . A static holds this default value for operation parsing in a JVM wide basis options object. + * + * @return the static default JVM value for operation parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public static ParserOptions getDefaultOperationParserOptions() { + return defaultJvmOperationParserOptions; + } + + /** + * By default, the Parser will not capture ignored characters or line comments. A static holds this default + * value in a JVM wide basis options object for operation parsing. + * + * This static can be set to true to allow the behavior of version 16.x or before. + * + * @param options - the new default JVM parser options for operation parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public static void setDefaultOperationParserOptions(ParserOptions options) { + defaultJvmOperationParserOptions = assertNotNull(options); + } + + /** + * By default, for SDL parsing, the Parser will not capture ignored characters, but it will capture line comments into AST + * elements. The SDL default options allow unlimited tokens and whitespace, since a DOS attack vector is + * not commonly available via schema SDL parsing. + * + * A static holds this default value for SDL parsing in a JVM wide basis options object. + * + * @return the static default JVM value for SDL parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + * @see graphql.schema.idl.SchemaParser + */ + public static ParserOptions getDefaultSdlParserOptions() { + return defaultJvmSdlParserOptions; + } + + /** + * By default, for SDL parsing, the Parser will not capture ignored characters, but it will capture line comments into AST + * elements . A static holds this default value for operation parsing in a JVM wide basis options object. + * + * This static can be set to true to allow the behavior of version 16.x or before. + * + * @param options - the new default JVM parser options for SDL parsing + * + * @see graphql.language.IgnoredChar + * @see graphql.language.SourceLocation + */ + public static void setDefaultSdlParserOptions(ParserOptions options) { + defaultJvmSdlParserOptions = assertNotNull(options); + } + + private final boolean captureIgnoredChars; + private final boolean captureSourceLocation; + private final boolean captureLineComments; + private final boolean readerTrackData; + private final int maxCharacters; + private final int maxTokens; + private final int maxWhitespaceTokens; + private final int maxRuleDepth; + private final boolean redactTokenParserErrorMessages; + private final ParsingListener parsingListener; + + private ParserOptions(Builder builder) { + this.captureIgnoredChars = builder.captureIgnoredChars; + this.captureSourceLocation = builder.captureSourceLocation; + this.captureLineComments = builder.captureLineComments; + this.readerTrackData = builder.readerTrackData; + this.maxCharacters = builder.maxCharacters; + this.maxTokens = builder.maxTokens; + this.maxWhitespaceTokens = builder.maxWhitespaceTokens; + this.maxRuleDepth = builder.maxRuleDepth; + this.redactTokenParserErrorMessages = builder.redactTokenParserErrorMessages; + this.parsingListener = builder.parsingListener; + } + + /** + * Significant memory savings can be made if we do NOT capture ignored characters, + * especially in SDL parsing. So we have set this to false by default. + * + * @return true if ignored chars should be captured as AST nodes + */ + public boolean isCaptureIgnoredChars() { + return captureIgnoredChars; + } + + + /** + * Memory savings can be made if we do NOT set {@link graphql.language.SourceLocation}s + * on AST nodes, especially in SDL parsing. + * + * @return true if {@link graphql.language.SourceLocation}s should be captured as AST nodes + * + * @see graphql.language.SourceLocation + */ + public boolean isCaptureSourceLocation() { + return captureSourceLocation; + } + + /** + * Single-line {@link graphql.language.Comment}s do not have any semantic meaning in + * GraphQL source documents, as such you may wish to ignore them. + *

    + * This option does not ignore documentation {@link graphql.language.Description}s. + * + * @return true if {@link graphql.language.Comment}s should be captured as AST nodes + * + * @see graphql.language.SourceLocation + */ + public boolean isCaptureLineComments() { + return captureLineComments; + } + + /** + * Controls whether the underlying {@link MultiSourceReader} should track previously read data or not. + * + * @return true if {@link MultiSourceReader} should track data in memory. + */ + public boolean isReaderTrackData() { + return readerTrackData; + } + + /** + * A graphql hacking vector is to send nonsensical queries that contain a repeated characters that burn lots of parsing CPU time and burn + * memory representing a document that won't ever execute. To prevent this for most users, graphql-java + * sets this value to 1MB. + * + * @return the maximum number of characters the parser will accept, after which an exception will be thrown. + */ + public int getMaxCharacters() { + return maxCharacters; + } + + + /** + * A graphql hacking vector is to send nonsensical queries that burn lots of parsing CPU time and burns + * memory representing a document that won't ever execute. To prevent this you can set a maximum number of parse + * tokens that will be accepted before an exception is thrown and the parsing is stopped. + * + * @return the maximum number of raw tokens the parser will accept, after which an exception will be thrown. + */ + public int getMaxTokens() { + return maxTokens; + } + + /** + * A graphql hacking vector is to send larges amounts of whitespace that burn lots of parsing CPU time and burn + * memory representing a document. To prevent this you can set a maximum number of whitespace parse + * tokens that will be accepted before an exception is thrown and the parsing is stopped. + * + * @return the maximum number of raw whitespace tokens the parser will accept, after which an exception will be thrown. + */ + public int getMaxWhitespaceTokens() { + return maxWhitespaceTokens; + } + + /** + * A graphql hacking vector is to send nonsensical queries that have lots of rule depth to them which + * can cause stack overflow exceptions during the query parsing. To prevent this you can set a value + * that is the maximum depth allowed before an exception is thrown and the parsing is stopped. + * + * @return the maximum token depth the parser will accept, after which an exception will be thrown. + */ + public int getMaxRuleDepth() { + return maxRuleDepth; + } + + /** + * Option to redact offending tokens in parser error messages. + * By default, the parser will include the offending token in the error message, if possible. + * + * @return true if the token parser messages should be redacted + */ + public boolean isRedactTokenParserErrorMessages() { + return redactTokenParserErrorMessages; + } + + public ParsingListener getParsingListener() { + return parsingListener; + } + + public ParserOptions transform(Consumer builderConsumer) { + Builder builder = new Builder(this); + builderConsumer.accept(builder); + return builder.build(); + } + + public static Builder newParserOptions() { + return new Builder(); + } + + public static class Builder { + + private boolean captureIgnoredChars = false; + private boolean captureSourceLocation = true; + private boolean captureLineComments = true; + private boolean readerTrackData = true; + private ParsingListener parsingListener = ParsingListener.NOOP; + private int maxCharacters = MAX_QUERY_CHARACTERS; + private int maxTokens = MAX_QUERY_TOKENS; + private int maxWhitespaceTokens = MAX_WHITESPACE_TOKENS; + private int maxRuleDepth = MAX_RULE_DEPTH; + private boolean redactTokenParserErrorMessages = false; + + Builder() { + } + + Builder(ParserOptions parserOptions) { + this.captureIgnoredChars = parserOptions.captureIgnoredChars; + this.captureSourceLocation = parserOptions.captureSourceLocation; + this.captureLineComments = parserOptions.captureLineComments; + this.maxCharacters = parserOptions.maxCharacters; + this.maxTokens = parserOptions.maxTokens; + this.maxWhitespaceTokens = parserOptions.maxWhitespaceTokens; + this.maxRuleDepth = parserOptions.maxRuleDepth; + this.redactTokenParserErrorMessages = parserOptions.redactTokenParserErrorMessages; + this.parsingListener = parserOptions.parsingListener; + } + + public Builder captureIgnoredChars(boolean captureIgnoredChars) { + this.captureIgnoredChars = captureIgnoredChars; + return this; + } + + public Builder captureSourceLocation(boolean captureSourceLocation) { + this.captureSourceLocation = captureSourceLocation; + return this; + } + + public Builder captureLineComments(boolean captureLineComments) { + this.captureLineComments = captureLineComments; + return this; + } + + public Builder readerTrackData(boolean readerTrackData) { + this.readerTrackData = readerTrackData; + return this; + } + + public Builder maxCharacters(int maxCharacters) { + this.maxCharacters = maxCharacters; + return this; + } + + public Builder maxTokens(int maxTokens) { + this.maxTokens = maxTokens; + return this; + } + + public Builder maxWhitespaceTokens(int maxWhitespaceTokens) { + this.maxWhitespaceTokens = maxWhitespaceTokens; + return this; + } + + public Builder maxRuleDepth(int maxRuleDepth) { + this.maxRuleDepth = maxRuleDepth; + return this; + } + + public Builder redactTokenParserErrorMessages(boolean redactTokenParserErrorMessages) { + this.redactTokenParserErrorMessages = redactTokenParserErrorMessages; + return this; + } + + public Builder parsingListener(ParsingListener parsingListener) { + this.parsingListener = assertNotNull(parsingListener); + return this; + } + + public ParserOptions build() { + return new ParserOptions(this); + } + + } + +} diff --git a/src/main/java/graphql/parser/ParsingListener.java b/src/main/java/graphql/parser/ParsingListener.java new file mode 100644 index 0000000000..b6344f0df1 --- /dev/null +++ b/src/main/java/graphql/parser/ParsingListener.java @@ -0,0 +1,44 @@ +package graphql.parser; + +import graphql.PublicSpi; + +/** + * This listener interface is invoked for each token parsed by the graphql parser code. + */ +@PublicSpi +public interface ParsingListener { + + /** + * A NoOp implementation of {@link ParsingListener} + */ + ParsingListener NOOP = t -> { + }; + + + /** + * This represents a token that has been parsed + */ + interface Token { + /** + * @return the text of the parsed token + */ + String getText(); + + /** + * @return the line the token occurred on + */ + int getLine(); + + /** + * @return the position within the line the token occurred on + */ + int getCharPositionInLine(); + } + + /** + * This is called for each token found during parsing + * + * @param token the token found + */ + void onToken(Token token); +} diff --git a/src/main/java/graphql/parser/SafeTokenReader.java b/src/main/java/graphql/parser/SafeTokenReader.java new file mode 100644 index 0000000000..8c655d9426 --- /dev/null +++ b/src/main/java/graphql/parser/SafeTokenReader.java @@ -0,0 +1,95 @@ +package graphql.parser; + +import graphql.Internal; +import org.jspecify.annotations.NonNull; + +import java.io.IOException; +import java.io.Reader; +import java.nio.CharBuffer; +import java.util.function.Consumer; + +/** + * This reader will only emit a maximum number of characters from it. This is used to protect us from evil input. + *

    + * If a graphql system does not have some max HTTP input limit, then this will help protect the system. This is a limit + * of last resort. Ideally the http input should be limited, but if its not, we have this. + */ +@Internal +public class SafeTokenReader extends Reader { + + private final Reader delegate; + private final int maxCharacters; + private final Consumer whenMaxCharactersExceeded; + private int count; + + public SafeTokenReader(Reader delegate, int maxCharacters, Consumer whenMaxCharactersExceeded) { + this.delegate = delegate; + this.maxCharacters = maxCharacters; + this.whenMaxCharactersExceeded = whenMaxCharactersExceeded; + count = 0; + } + + private int checkHowMany(int read, int howMany) { + if (read != -1) { + count += howMany; + if (count > maxCharacters) { + whenMaxCharactersExceeded.accept(maxCharacters); + } + } + return read; + } + + @Override + public int read(char @NonNull [] buff, int off, int len) throws IOException { + int howMany = delegate.read(buff, off, len); + return checkHowMany(howMany, howMany); + } + + @Override + public int read() throws IOException { + int ch = delegate.read(); + return checkHowMany(ch, 1); + } + + @Override + public int read(@NonNull CharBuffer target) throws IOException { + int howMany = delegate.read(target); + return checkHowMany(howMany, howMany); + } + + @Override + public int read(char @NonNull [] buff) throws IOException { + int howMany = delegate.read(buff); + return checkHowMany(howMany, howMany); + } + + @Override + public void close() throws IOException { + delegate.close(); + } + + @Override + public long skip(long n) throws IOException { + return delegate.skip(n); + } + + @Override + public boolean ready() throws IOException { + return delegate.ready(); + } + + @Override + public boolean markSupported() { + return delegate.markSupported(); + } + + @Override + public void mark(int readAheadLimit) throws IOException { + delegate.mark(readAheadLimit); + } + + @Override + public void reset() throws IOException { + delegate.reset(); + } +} diff --git a/src/main/java/graphql/parser/SafeTokenSource.java b/src/main/java/graphql/parser/SafeTokenSource.java new file mode 100644 index 0000000000..c92c76d916 --- /dev/null +++ b/src/main/java/graphql/parser/SafeTokenSource.java @@ -0,0 +1,94 @@ +package graphql.parser; + +import graphql.Internal; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenFactory; +import org.antlr.v4.runtime.TokenSource; + +import java.util.function.BiConsumer; + +/** + * This token source can wrap a lexer and if it asks for more than a maximum number of tokens + * the user can take some action, typically throw an exception to stop lexing. + * + * It tracks the maximum number per token channel, so we have 3 at the moment, and they will all be tracked. + * + * This is used to protect us from evil input. The lexer will eagerly try to find all tokens + * at times and certain inputs (directives butted together for example) will cause the lexer + * to keep doing work even though before the tokens are presented back to the parser + * and hence before it has a chance to stop work once too much as been done. + */ +@Internal +public class SafeTokenSource implements TokenSource { + + private final TokenSource lexer; + private final int maxTokens; + private final int maxWhitespaceTokens; + private final BiConsumer whenMaxTokensExceeded; + private final int channelCounts[]; + + public SafeTokenSource(TokenSource lexer, int maxTokens, int maxWhitespaceTokens, BiConsumer whenMaxTokensExceeded) { + this.lexer = lexer; + this.maxTokens = maxTokens; + this.maxWhitespaceTokens = maxWhitespaceTokens; + this.whenMaxTokensExceeded = whenMaxTokensExceeded; + // this could be a Map however we want it to be faster as possible. + // we only have 3 channels - but they are 0,2 and 3 so use 5 for safety - still faster than a map get/put + // if we ever add another channel beyond 5 it will IOBEx during tests so future changes will be handled before release! + this.channelCounts = new int[]{0, 0, 0, 0, 0}; + } + + + @Override + public Token nextToken() { + Token token = lexer.nextToken(); + if (token != null) { + int channel = token.getChannel(); + int currentCount = ++channelCounts[channel]; + if (channel == Parser.CHANNEL_WHITESPACE) { + // whitespace gets its own max count + callbackIfMaxExceeded(maxWhitespaceTokens, currentCount, token); + } else { + callbackIfMaxExceeded(maxTokens, currentCount, token); + } + } + return token; + } + + private void callbackIfMaxExceeded(int maxCount, int currentCount, Token token) { + if (currentCount > maxCount) { + whenMaxTokensExceeded.accept(maxCount, token); + } + } + + @Override + public int getLine() { + return lexer.getLine(); + } + + @Override + public int getCharPositionInLine() { + return lexer.getCharPositionInLine(); + } + + @Override + public CharStream getInputStream() { + return lexer.getInputStream(); + } + + @Override + public String getSourceName() { + return lexer.getSourceName(); + } + + @Override + public void setTokenFactory(TokenFactory factory) { + lexer.setTokenFactory(factory); + } + + @Override + public TokenFactory getTokenFactory() { + return lexer.getTokenFactory(); + } +} diff --git a/src/main/java/graphql/parser/StringValueParsing.java b/src/main/java/graphql/parser/StringValueParsing.java index a3c598c2d6..56b1f1ec88 100644 --- a/src/main/java/graphql/parser/StringValueParsing.java +++ b/src/main/java/graphql/parser/StringValueParsing.java @@ -2,6 +2,8 @@ import graphql.Assert; import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.SourceLocation; import java.io.StringWriter; import java.util.ArrayList; @@ -30,7 +32,9 @@ public static String removeIndentation(String rawValue) { String[] lines = rawValue.split("\\n"); Integer commonIndent = null; for (int i = 0; i < lines.length; i++) { - if (i == 0) continue; + if (i == 0) { + continue; + } String line = lines[i]; int length = line.length(); int indent = leadingWhitespace(line); @@ -44,7 +48,9 @@ public static String removeIndentation(String rawValue) { if (commonIndent != null) { for (int i = 0; i < lineList.size(); i++) { String line = lineList.get(i); - if (i == 0) continue; + if (i == 0) { + continue; + } if (line.length() > commonIndent) { line = line.substring(commonIndent); lineList.set(i, line); @@ -98,7 +104,7 @@ private static boolean containsOnlyWhiteSpace(String str) { return leadingWhitespace(str) == str.length(); } - public static String parseSingleQuotedString(String string) { + public static String parseSingleQuotedString(I18n i18n, String string, SourceLocation sourceLocation) { StringWriter writer = new StringWriter(string.length() - 2); int end = string.length() - 1; for (int i = 1; i < end; i++) { @@ -135,10 +141,7 @@ public static String parseSingleQuotedString(String string) { writer.write('\t'); continue; case 'u': - String hexStr = string.substring(i + 1, i + 5); - int codepoint = Integer.parseInt(hexStr, 16); - i += 4; - writer.write(codepoint); + i = UnicodeUtil.parseAndWriteUnicode(i18n, writer, string, i, sourceLocation); continue; default: Assert.assertShouldNeverHappen(); diff --git a/src/main/java/graphql/parser/UnicodeUtil.java b/src/main/java/graphql/parser/UnicodeUtil.java new file mode 100644 index 0000000000..d8fbff6308 --- /dev/null +++ b/src/main/java/graphql/parser/UnicodeUtil.java @@ -0,0 +1,123 @@ +package graphql.parser; + +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.SourceLocation; +import graphql.parser.exceptions.InvalidUnicodeSyntaxException; + +import java.io.IOException; +import java.io.StringWriter; + +import static graphql.Assert.assertShouldNeverHappen; + +/** + * Contains Unicode helpers for parsing StringValue types in the grammar + */ +@Internal +public class UnicodeUtil { + public static final int MAX_UNICODE_CODE_POINT = 0x10FFFF; + public static final int LEADING_SURROGATE_LOWER_BOUND = 0xD800; + public static final int LEADING_SURROGATE_UPPER_BOUND = 0xDBFF; + public static final int TRAILING_SURROGATE_LOWER_BOUND = 0xDC00; + public static final int TRAILING_SURROGATE_UPPER_BOUND = 0xDFFF; + + public static int parseAndWriteUnicode(I18n i18n, StringWriter writer, String string, int i, SourceLocation sourceLocation) { + // Unicode code points can either be: + // 1. Unbraced: four hex characters in the form \\u597D, or + // 2. Braced: any number of hex characters surrounded by braces in the form \\u{1F37A} + + // Extract the code point hex digits. Index i points to 'u' + int startIndex = isBracedEscape(string, i) ? i + 2 : i + 1; + int endIndexExclusive = getEndIndexExclusive(i18n, string, i, sourceLocation); + // Index for parser to continue at, the last character of the escaped unicode character. Either } or hex digit + int continueIndex = isBracedEscape(string, i) ? endIndexExclusive : endIndexExclusive - 1; + + int codePoint; + try { + codePoint = Integer.parseInt(string, startIndex, endIndexExclusive, 16); + } catch (NumberFormatException e) { + throw new InvalidUnicodeSyntaxException(i18n, "InvalidUnicode.invalidHexString", sourceLocation, offendingToken(string, i, continueIndex)); + } + + if (isTrailingSurrogateValue(codePoint)) { + throw new InvalidUnicodeSyntaxException(i18n, "InvalidUnicode.trailingLeadingSurrogate", sourceLocation, offendingToken(string, i, continueIndex)); + } else if (isLeadingSurrogateValue(codePoint)) { + if (!isEscapedUnicode(string, continueIndex + 1)) { + throw new InvalidUnicodeSyntaxException(i18n, "InvalidUnicode.leadingTrailingSurrogate", sourceLocation, offendingToken(string, i, continueIndex)); + } + + // Shift parser ahead to 'u' in second escaped Unicode character + i = continueIndex + 2; + int trailingStartIndex = isBracedEscape(string, i) ? i + 2 : i + 1; + int trailingEndIndexExclusive = getEndIndexExclusive(i18n, string, i, sourceLocation); + int trailingCodePoint = Integer.parseInt(string, trailingStartIndex, trailingEndIndexExclusive, 16); + continueIndex = isBracedEscape(string, i) ? trailingEndIndexExclusive : trailingEndIndexExclusive - 1; + + if (isTrailingSurrogateValue(trailingCodePoint)) { + writeCodePoint(writer, codePoint); + writeCodePoint(writer, trailingCodePoint); + return continueIndex; + } + + throw new InvalidUnicodeSyntaxException(i18n, "InvalidUnicode.leadingTrailingSurrogate", sourceLocation, offendingToken(string, i, continueIndex)); + } else if (isValidUnicodeCodePoint(codePoint)) { + writeCodePoint(writer, codePoint); + return continueIndex; + } + + throw new InvalidUnicodeSyntaxException(i18n, "InvalidUnicode.invalidCodePoint", sourceLocation, offendingToken(string, i, continueIndex)); + } + + private static String offendingToken(String string, int i, int continueIndex) { + return string.substring(i - 1, continueIndex + 1); + } + + private static int getEndIndexExclusive(I18n i18n, String string, int i, SourceLocation sourceLocation) { + // Unbraced case, with exactly 4 hex digits + if (string.length() > i + 5 && !isBracedEscape(string, i)) { + return i + 5; + } + + // Braced case, with any number of hex digits + int endIndexExclusive = i + 2; + do { + if (endIndexExclusive + 1 >= string.length()) { + throw new InvalidUnicodeSyntaxException(i18n, "InvalidUnicode.incorrectEscape", sourceLocation, string.substring(i - 1, endIndexExclusive)); + } + } while (string.charAt(++endIndexExclusive) != '}'); + + return endIndexExclusive; + } + + private static boolean isValidUnicodeCodePoint(int value) { + return value <= MAX_UNICODE_CODE_POINT; + } + + private static boolean isEscapedUnicode(String string, int index) { + if (index + 1 >= string.length()) { + return false; + } + return string.charAt(index) == '\\' && string.charAt(index + 1) == 'u'; + } + + private static boolean isLeadingSurrogateValue(int value) { + return LEADING_SURROGATE_LOWER_BOUND <= value && value <= LEADING_SURROGATE_UPPER_BOUND; + } + + private static boolean isTrailingSurrogateValue(int value) { + return TRAILING_SURROGATE_LOWER_BOUND <= value && value <= TRAILING_SURROGATE_UPPER_BOUND; + } + + private static void writeCodePoint(StringWriter writer, int codepoint) { + char[] chars = Character.toChars(codepoint); + try { + writer.write(chars); + } catch (IOException e) { + assertShouldNeverHappen(); + } + } + + private static boolean isBracedEscape(String string, int i) { + return string.charAt(i + 1) == '{'; + } +} diff --git a/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java b/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java new file mode 100644 index 0000000000..46b7ad37b3 --- /dev/null +++ b/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java @@ -0,0 +1,16 @@ +package graphql.parser.exceptions; + +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.SourceLocation; +import graphql.parser.InvalidSyntaxException; +import org.jspecify.annotations.NonNull; + +@Internal +public class InvalidUnicodeSyntaxException extends InvalidSyntaxException { + + public InvalidUnicodeSyntaxException(@NonNull I18n i18N, @NonNull String msgKey, @NonNull SourceLocation sourceLocation, @NonNull String offendingToken) { + super(i18N.msg(msgKey, offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()), + sourceLocation, offendingToken, null, null); + } +} diff --git a/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java b/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java new file mode 100644 index 0000000000..2956f3f95a --- /dev/null +++ b/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java @@ -0,0 +1,24 @@ +package graphql.parser.exceptions; + +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.SourceLocation; +import graphql.parser.InvalidSyntaxException; +import org.jspecify.annotations.NonNull; + +@Internal +public class MoreTokensSyntaxException extends InvalidSyntaxException { + + @Internal + public MoreTokensSyntaxException(@NonNull I18n i18N, @NonNull SourceLocation sourceLocation, @NonNull String offendingToken, @NonNull String sourcePreview) { + super(i18N.msg("InvalidSyntaxMoreTokens.full", offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()), + sourceLocation, offendingToken, sourcePreview, null); + } + + @Internal + public MoreTokensSyntaxException(@NonNull I18n i18N, @NonNull SourceLocation sourceLocation) { + super(i18N.msg("InvalidSyntaxMoreTokens.noMessage", sourceLocation.getLine(), sourceLocation.getColumn()), + sourceLocation, null, null, null); + } + +} diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledException.java new file mode 100644 index 0000000000..4fe9541522 --- /dev/null +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledException.java @@ -0,0 +1,18 @@ +package graphql.parser.exceptions; + +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.SourceLocation; +import graphql.parser.InvalidSyntaxException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +@Internal +public class ParseCancelledException extends InvalidSyntaxException { + + @Internal + public ParseCancelledException(@NonNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NonNull String tokenType) { + super(i18N.msg("ParseCancelled.full", maxTokens, tokenType), + sourceLocation, offendingToken, null, null); + } +} diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java new file mode 100644 index 0000000000..fe8717bedf --- /dev/null +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java @@ -0,0 +1,18 @@ +package graphql.parser.exceptions; + +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.language.SourceLocation; +import graphql.parser.InvalidSyntaxException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +@Internal +public class ParseCancelledTooDeepException extends InvalidSyntaxException { + + @Internal + public ParseCancelledTooDeepException(@NonNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NonNull String tokenType) { + super(i18N.msg("ParseCancelled.tooDeep", maxTokens, tokenType), + sourceLocation, offendingToken, null, null); + } +} diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java new file mode 100644 index 0000000000..b861c78cfe --- /dev/null +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java @@ -0,0 +1,16 @@ +package graphql.parser.exceptions; + +import graphql.Internal; +import graphql.i18n.I18n; +import graphql.parser.InvalidSyntaxException; +import org.jspecify.annotations.NonNull; + +@Internal +public class ParseCancelledTooManyCharsException extends InvalidSyntaxException { + + @Internal + public ParseCancelledTooManyCharsException(@NonNull I18n i18N, int maxCharacters) { + super(i18N.msg("ParseCancelled.tooManyChars", maxCharacters), + null, null, null, null); + } +} diff --git a/src/main/java/graphql/relay/Connection.java b/src/main/java/graphql/relay/Connection.java index ee8e165c9c..aec2158f70 100644 --- a/src/main/java/graphql/relay/Connection.java +++ b/src/main/java/graphql/relay/Connection.java @@ -19,7 +19,7 @@ public interface Connection { List> getEdges(); /** - * @return {@link graphql.relay.PageInfo} pagination data about about that list of edges + * @return {@link graphql.relay.PageInfo} pagination data about that list of edges */ PageInfo getPageInfo(); diff --git a/src/main/java/graphql/relay/DefaultConnection.java b/src/main/java/graphql/relay/DefaultConnection.java index 3986b76d30..9373de104f 100644 --- a/src/main/java/graphql/relay/DefaultConnection.java +++ b/src/main/java/graphql/relay/DefaultConnection.java @@ -1,12 +1,13 @@ package graphql.relay; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; import java.util.Collections; import java.util.List; +import java.util.Objects; import static graphql.Assert.assertNotNull; -import static java.util.Collections.unmodifiableList; /** * A default implementation of {@link graphql.relay.Connection} @@ -14,7 +15,7 @@ @PublicApi public class DefaultConnection implements Connection { - private final List> edges; + private final ImmutableList> edges; private final PageInfo pageInfo; /** @@ -26,7 +27,7 @@ public class DefaultConnection implements Connection { * @throws IllegalArgumentException if edges or page info is null. use {@link Collections#emptyList()} for empty edges. */ public DefaultConnection(List> edges, PageInfo pageInfo) { - this.edges = unmodifiableList(assertNotNull(edges, "edges cannot be null")); + this.edges = ImmutableList.copyOf(assertNotNull(edges, "edges cannot be null")); this.pageInfo = assertNotNull(pageInfo, "page info cannot be null"); } @@ -40,6 +41,23 @@ public PageInfo getPageInfo() { return pageInfo; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DefaultConnection that = (DefaultConnection) o; + return Objects.equals(edges, that.edges) && Objects.equals(pageInfo, that.pageInfo); + } + + @Override + public int hashCode() { + return Objects.hash(edges, pageInfo); + } + @Override public String toString() { return "DefaultConnection{" + diff --git a/src/main/java/graphql/relay/DefaultConnectionCursor.java b/src/main/java/graphql/relay/DefaultConnectionCursor.java index ce3ca1d876..aaa695a956 100644 --- a/src/main/java/graphql/relay/DefaultConnectionCursor.java +++ b/src/main/java/graphql/relay/DefaultConnectionCursor.java @@ -34,7 +34,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return value != null ? value.hashCode() : 0; + return Objects.hashCode(value); } @Override diff --git a/src/main/java/graphql/relay/DefaultEdge.java b/src/main/java/graphql/relay/DefaultEdge.java index 0ea216f795..31b29ad414 100644 --- a/src/main/java/graphql/relay/DefaultEdge.java +++ b/src/main/java/graphql/relay/DefaultEdge.java @@ -2,6 +2,8 @@ import graphql.PublicApi; +import java.util.Objects; + import static graphql.Assert.assertNotNull; @PublicApi @@ -26,6 +28,23 @@ public ConnectionCursor getCursor() { return cursor; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DefaultEdge that = (DefaultEdge) o; + return Objects.equals(node, that.node) && Objects.equals(cursor, that.cursor); + } + + @Override + public int hashCode() { + return Objects.hash(node, cursor); + } + @Override public String toString() { return "DefaultEdge{" + diff --git a/src/main/java/graphql/relay/DefaultPageInfo.java b/src/main/java/graphql/relay/DefaultPageInfo.java index 6e20d073c2..d76ef04fb1 100644 --- a/src/main/java/graphql/relay/DefaultPageInfo.java +++ b/src/main/java/graphql/relay/DefaultPageInfo.java @@ -3,6 +3,8 @@ import graphql.PublicApi; +import java.util.Objects; + @PublicApi public class DefaultPageInfo implements PageInfo { @@ -39,6 +41,26 @@ public boolean isHasNextPage() { return hasNextPage; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DefaultPageInfo that = (DefaultPageInfo) o; + return Objects.equals(startCursor, that.startCursor) && + Objects.equals(endCursor, that.endCursor) && + Objects.equals(hasPreviousPage, that.hasPreviousPage) && + Objects.equals(hasNextPage, that.hasNextPage); + } + + @Override + public int hashCode() { + return Objects.hash(startCursor, endCursor, hasPreviousPage, hasNextPage); + } + @Override public String toString() { return "DefaultPageInfo{" + diff --git a/src/main/java/graphql/relay/InvalidCursorException.java b/src/main/java/graphql/relay/InvalidCursorException.java index 4839a71939..1268b779c5 100644 --- a/src/main/java/graphql/relay/InvalidCursorException.java +++ b/src/main/java/graphql/relay/InvalidCursorException.java @@ -3,12 +3,14 @@ import graphql.ErrorType; import graphql.GraphQLError; import graphql.GraphqlErrorHelper; +import graphql.Internal; import graphql.language.SourceLocation; import java.util.List; import static graphql.ErrorType.DataFetchingException; +@Internal public class InvalidCursorException extends RuntimeException implements GraphQLError { InvalidCursorException(String message) { diff --git a/src/main/java/graphql/relay/InvalidPageSizeException.java b/src/main/java/graphql/relay/InvalidPageSizeException.java index df349741f5..a11954ed28 100644 --- a/src/main/java/graphql/relay/InvalidPageSizeException.java +++ b/src/main/java/graphql/relay/InvalidPageSizeException.java @@ -3,12 +3,14 @@ import graphql.ErrorType; import graphql.GraphQLError; import graphql.GraphqlErrorHelper; +import graphql.Internal; import graphql.language.SourceLocation; import java.util.List; import static graphql.ErrorType.DataFetchingException; +@Internal public class InvalidPageSizeException extends RuntimeException implements GraphQLError { InvalidPageSizeException(String message) { diff --git a/src/main/java/graphql/relay/SimpleListConnection.java b/src/main/java/graphql/relay/SimpleListConnection.java index b660f3d323..0c30337d0b 100644 --- a/src/main/java/graphql/relay/SimpleListConnection.java +++ b/src/main/java/graphql/relay/SimpleListConnection.java @@ -2,6 +2,7 @@ import graphql.PublicApi; import graphql.TrivialDataFetcher; +import graphql.collect.ImmutableKit; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; @@ -34,7 +35,10 @@ public SimpleListConnection(List data) { } private List> buildEdges() { - List> edges = new ArrayList<>(); + if (data.isEmpty()) { + return Collections.emptyList(); + } + List> edges = new ArrayList<>(data.size()); int ix = 0; for (T object : data) { edges.add(new DefaultEdge<>(object, new DefaultConnectionCursor(createCursor(ix++)))); @@ -47,7 +51,7 @@ public Connection get(DataFetchingEnvironment environment) { List> edges = buildEdges(); - if (edges.size() == 0) { + if (edges.isEmpty()) { return emptyConnection(); } @@ -59,10 +63,12 @@ public Connection get(DataFetchingEnvironment environment) { int beforeOffset = getOffsetFromCursor(environment.getArgument("before"), edges.size()); int end = Math.min(beforeOffset, edges.size()); - if (begin > end) begin = end; + if (begin > end) { + begin = end; + } edges = edges.subList(begin, end); - if (edges.size() == 0) { + if (edges.isEmpty()) { return emptyConnection(); } @@ -104,7 +110,7 @@ public Connection get(DataFetchingEnvironment environment) { private Connection emptyConnection() { PageInfo pageInfo = new DefaultPageInfo(null, null, false, false); - return new DefaultConnection<>(Collections.emptyList(), pageInfo); + return new DefaultConnection<>(ImmutableKit.emptyList(), pageInfo); } /** diff --git a/src/main/java/graphql/scalar/CoercingUtil.java b/src/main/java/graphql/scalar/CoercingUtil.java new file mode 100644 index 0000000000..c3ac535522 --- /dev/null +++ b/src/main/java/graphql/scalar/CoercingUtil.java @@ -0,0 +1,25 @@ +package graphql.scalar; + +import graphql.Internal; +import graphql.i18n.I18n; + +import java.util.Locale; + +@Internal +public class CoercingUtil { + public static boolean isNumberIsh(Object input) { + return input instanceof Number || input instanceof String; + } + + public static String typeName(Object input) { + if (input == null) { + return "null"; + } + + return input.getClass().getSimpleName(); + } + + public static String i18nMsg(Locale locale, String msgKey, Object... args) { + return I18n.i18n(I18n.BundleType.Scalars, locale).msg(msgKey, args); + } +} diff --git a/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java b/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java new file mode 100644 index 0000000000..cea304a65b --- /dev/null +++ b/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java @@ -0,0 +1,139 @@ +package graphql.scalar; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.language.BooleanValue; +import graphql.language.Value; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.math.BigDecimal; +import java.util.Locale; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.scalar.CoercingUtil.i18nMsg; +import static graphql.scalar.CoercingUtil.isNumberIsh; +import static graphql.scalar.CoercingUtil.typeName; + +/** + * The deprecated methods still have implementations in case code outside graphql-java is calling them + * but internally the call paths have been replaced. + */ +@Internal +public class GraphqlBooleanCoercing implements Coercing { + + private Boolean convertImpl(Object input) { + if (input instanceof Boolean) { + return (Boolean) input; + } else if (input instanceof String) { + String lStr = ((String) input).toLowerCase(); + if (lStr.equals("true")) { + return true; + } + if (lStr.equals("false")) { + return false; + } + return null; + } else if (isNumberIsh(input)) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + // this should never happen because String is handled above + return assertShouldNeverHappen(); + } + return value.compareTo(BigDecimal.ZERO) != 0; + } else { + return null; + } + + } + + @NonNull + private Boolean serializeImpl(@NonNull Object input, @NonNull Locale locale) { + Boolean result = convertImpl(input); + if (result == null) { + throw new CoercingSerializeException( + i18nMsg(locale, "Boolean.notBoolean", typeName(input)) + ); + } + return result; + } + + @NonNull + private Boolean parseValueImpl(@NonNull Object input, @NonNull Locale locale) { + if (!(input instanceof Boolean)) { + throw new CoercingParseValueException( + i18nMsg(locale, "Boolean.unexpectedRawValueType", typeName(input)) + ); + } + return (Boolean) input; + } + + private static boolean parseLiteralImpl(@NonNull Object input, @NonNull Locale locale) { + if (!(input instanceof BooleanValue)) { + throw new CoercingParseLiteralException( + i18nMsg(locale, "Boolean.unexpectedAstType", typeName(input)) + ); + } + return ((BooleanValue) input).isValue(); + } + + @NonNull + private BooleanValue valueToLiteralImpl(@NonNull Object input, @NonNull Locale locale) { + Boolean result = convertImpl(input); + if (result == null) { + assertShouldNeverHappen(i18nMsg(locale, "Boolean.notBoolean", typeName(input))); + } + return BooleanValue.newBooleanValue(result).build(); + } + + @Override + @Deprecated + public Boolean serialize(@NonNull Object dataFetcherResult) { + return serializeImpl(dataFetcherResult, Locale.getDefault()); + } + + @Override + public @Nullable Boolean serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + return serializeImpl(dataFetcherResult, locale); + } + + @Override + @Deprecated + public Boolean parseValue(@NonNull Object input) { + return parseValueImpl(input, Locale.getDefault()); + } + + @Override + public Boolean parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + return parseValueImpl(input, locale); + } + + @Override + @Deprecated + public Boolean parseLiteral(@NonNull Object input) { + return parseLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @Nullable Boolean parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + return parseLiteralImpl(input, locale); + } + + @Override + @Deprecated + public @NonNull Value valueToLiteral(@NonNull Object input) { + return valueToLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { + return valueToLiteralImpl(input, locale); + } +} diff --git a/src/main/java/graphql/scalar/GraphqlFloatCoercing.java b/src/main/java/graphql/scalar/GraphqlFloatCoercing.java new file mode 100644 index 0000000000..d1863ed450 --- /dev/null +++ b/src/main/java/graphql/scalar/GraphqlFloatCoercing.java @@ -0,0 +1,149 @@ +package graphql.scalar; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.language.FloatValue; +import graphql.language.IntValue; +import graphql.language.Value; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.math.BigDecimal; +import java.util.Locale; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.scalar.CoercingUtil.i18nMsg; +import static graphql.scalar.CoercingUtil.isNumberIsh; +import static graphql.scalar.CoercingUtil.typeName; + +/** + * The deprecated methods still have implementations in case code outside graphql-java is calling them + * but internally the call paths have been replaced. + */ +@Internal +public class GraphqlFloatCoercing implements Coercing { + + private Double convertImpl(Object input) { + // From the GraphQL Float spec, non-finite floating-point internal values (NaN and Infinity) + // must raise a field error on both result and input coercion + Double doubleInput; + if (input instanceof Double) { + doubleInput = (Double) input; + } else if (isNumberIsh(input)) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + return null; + } + doubleInput = value.doubleValue(); + } else { + return null; + } + + if (Double.isNaN(doubleInput) || Double.isInfinite(doubleInput)) { + return null; + } + return doubleInput; + } + + @NonNull + private Double serialiseImpl(Object input, @NonNull Locale locale) { + Double result = convertImpl(input); + if (result == null) { + throw new CoercingSerializeException( + i18nMsg(locale, "Float.notFloat", typeName(input)) + ); + } + return result; + } + + @NonNull + private Double parseValueImpl(@NonNull Object input, @NonNull Locale locale) { + if (!(input instanceof Number)) { + throw new CoercingParseValueException( + i18nMsg(locale, "Float.unexpectedRawValueType", typeName(input)) + ); + } + + Double result = convertImpl(input); + if (result == null) { + throw new CoercingParseValueException( + i18nMsg(locale, "Float.notFloat", typeName(input)) + ); + } + + return result; + } + + private static double parseLiteralImpl(@NonNull Object input, @NonNull Locale locale) { + if (input instanceof IntValue) { + return ((IntValue) input).getValue().doubleValue(); + } else if (input instanceof FloatValue) { + return ((FloatValue) input).getValue().doubleValue(); + } else { + throw new CoercingParseLiteralException( + i18nMsg(locale, "Float.unexpectedAstType", typeName(input)) + ); + } + } + + @NonNull + private FloatValue valueToLiteralImpl(Object input, @NonNull Locale locale) { + Double result = convertImpl(input); + if (result == null) { + assertShouldNeverHappen(i18nMsg(locale, "Float.notFloat", typeName(input))); + } + return FloatValue.newFloatValue(BigDecimal.valueOf(result)).build(); + } + + @Override + @Deprecated + public Double serialize(@NonNull Object dataFetcherResult) { + return serialiseImpl(dataFetcherResult, Locale.getDefault()); + } + + @Override + public @Nullable Double serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + return serialiseImpl(dataFetcherResult, locale); + } + + @Override + @Deprecated + public @NonNull Double parseValue(@NonNull Object input) { + return parseValueImpl(input, Locale.getDefault()); + } + + @Override + public Double parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + return parseValueImpl(input, locale); + } + + @Override + @Deprecated + public Double parseLiteral(@NonNull Object input) { + return parseLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @Nullable Double parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + return parseLiteralImpl(input, locale); + } + + @Override + @Deprecated + public Value valueToLiteral(@NonNull Object input) { + return valueToLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { + return valueToLiteralImpl(input, locale); + } +} + diff --git a/src/main/java/graphql/scalar/GraphqlIDCoercing.java b/src/main/java/graphql/scalar/GraphqlIDCoercing.java new file mode 100644 index 0000000000..7c8c6336cf --- /dev/null +++ b/src/main/java/graphql/scalar/GraphqlIDCoercing.java @@ -0,0 +1,137 @@ +package graphql.scalar; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.language.IntValue; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.math.BigInteger; +import java.util.Locale; +import java.util.UUID; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.scalar.CoercingUtil.i18nMsg; +import static graphql.scalar.CoercingUtil.typeName; + +/** + * The deprecated methods still have implementations in case code outside graphql-java is calling them + * but internally the call paths have been replaced. + */ +@Internal +public class GraphqlIDCoercing implements Coercing { + + private String convertImpl(Object input) { + if (input instanceof String) { + return (String) input; + } + if (input instanceof Integer) { + return String.valueOf(input); + } + if (input instanceof Long) { + return String.valueOf(input); + } + if (input instanceof UUID) { + return String.valueOf(input); + } + if (input instanceof BigInteger) { + return String.valueOf(input); + } + return String.valueOf(input); + + } + + @NonNull + private String serializeImpl(Object input, @NonNull Locale locale) { + String result = String.valueOf(input); + if (result == null) { + throw new CoercingSerializeException( + "Expected type 'ID' but was '" + typeName(input) + "'." + ); + } + return result; + } + + @NonNull + private String parseValueImpl(Object input, @NonNull Locale locale) { + String result = convertImpl(input); + if (result == null) { + throw new CoercingParseValueException( + i18nMsg(locale, "ID.notId", typeName(input)) + ); + } + return result; + } + + private String parseLiteralImpl(Object input, @NonNull Locale locale) { + if (input instanceof StringValue) { + return ((StringValue) input).getValue(); + } + if (input instanceof IntValue) { + return ((IntValue) input).getValue().toString(); + } + throw new CoercingParseLiteralException( + i18nMsg(locale, "ID.unexpectedAstType", typeName(input)) + ); + } + + @NonNull + private StringValue valueToLiteralImpl(Object input, @NonNull Locale locale) { + String result = convertImpl(input); + if (result == null) { + assertShouldNeverHappen(i18nMsg(locale, "ID.notId", typeName(input))); + } + return StringValue.newStringValue(result).build(); + } + + @Override + @Deprecated + public String serialize(@NonNull Object dataFetcherResult) { + return serializeImpl(dataFetcherResult, Locale.getDefault()); + } + + @Override + public @Nullable Object serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + return serializeImpl(dataFetcherResult, locale); + } + + @Override + @Deprecated + public String parseValue(@NonNull Object input) { + return parseValueImpl(input, Locale.getDefault()); + } + + @Override + public Object parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + return parseValueImpl(input, locale); + } + + @Override + @Deprecated + public String parseLiteral(@NonNull Object input) { + return parseLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @Nullable Object parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + return parseLiteralImpl(input, locale); + } + + @Override + @Deprecated + public Value valueToLiteral(@NonNull Object input) { + return valueToLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { + return valueToLiteralImpl(input, locale); + } +} diff --git a/src/main/java/graphql/scalar/GraphqlIntCoercing.java b/src/main/java/graphql/scalar/GraphqlIntCoercing.java new file mode 100644 index 0000000000..bac8822f13 --- /dev/null +++ b/src/main/java/graphql/scalar/GraphqlIntCoercing.java @@ -0,0 +1,174 @@ +package graphql.scalar; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.language.IntValue; +import graphql.language.Value; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.Locale; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.scalar.CoercingUtil.i18nMsg; +import static graphql.scalar.CoercingUtil.isNumberIsh; +import static graphql.scalar.CoercingUtil.typeName; + +/** + * The deprecated methods still have implementations in case code outside graphql-java is calling them + * but internally the call paths have been replaced. + */ +@Internal +public class GraphqlIntCoercing implements Coercing { + + private static final BigInteger INT_MAX = BigInteger.valueOf(Integer.MAX_VALUE); + private static final BigInteger INT_MIN = BigInteger.valueOf(Integer.MIN_VALUE); + + private Integer convertImpl(Object input) { + if (input instanceof Integer) { + return (Integer) input; + } else if (isNumberIsh(input)) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + return null; + } + try { + return value.intValueExact(); + } catch (ArithmeticException e) { + return null; + } + } else { + return null; + } + } + + @NonNull + private Integer serialiseImpl(Object input, @NonNull Locale locale) { + Integer result = convertImpl(input); + if (result == null) { + throw new CoercingSerializeException( + i18nMsg(locale, "Int.notInt", typeName(input)) + ); + } + return result; + } + + @NonNull + private Integer parseValueImpl(@NonNull Object input, @NonNull Locale locale) { + if (!(input instanceof Number)) { + throw new CoercingParseValueException( + i18nMsg(locale, "Int.notInt", typeName(input)) + ); + } + + if (input instanceof Integer) { + return (Integer) input; + } + + BigInteger result = convertParseValueImpl(input); + if (result == null) { + throw new CoercingParseValueException( + i18nMsg(locale, "Int.notInt", typeName(input)) + ); + } + if (result.compareTo(INT_MIN) < 0 || result.compareTo(INT_MAX) > 0) { + throw new CoercingParseValueException( + i18nMsg(locale, "Int.outsideRange", result.toString()) + ); + } + return result.intValueExact(); + } + + private BigInteger convertParseValueImpl(Object input) { + BigDecimal value; + try { + value = new BigDecimal(input.toString()); + } catch (NumberFormatException e) { + return null; + } + + try { + return value.toBigIntegerExact(); + } catch (ArithmeticException e) { + // Exception if number has non-zero fractional part + return null; + } + } + + private static int parseLiteralImpl(Object input, @NonNull Locale locale) { + if (!(input instanceof IntValue)) { + throw new CoercingParseLiteralException( + i18nMsg(locale, "Scalar.unexpectedAstType", "IntValue", typeName(input)) + ); + } + BigInteger value = ((IntValue) input).getValue(); + if (value.compareTo(INT_MIN) < 0 || value.compareTo(INT_MAX) > 0) { + throw new CoercingParseLiteralException( + i18nMsg(locale, "Int.outsideRange", value.toString()) + ); + } + return value.intValue(); + } + + private IntValue valueToLiteralImpl(Object input, @NonNull Locale locale) { + Integer result = convertImpl(input); + if (result == null) { + assertShouldNeverHappen(i18nMsg(locale, "Int.notInt", typeName(input))); + } + return IntValue.newIntValue(BigInteger.valueOf(result)).build(); + } + + + @Override + @Deprecated + public Integer serialize(@NonNull Object dataFetcherResult) { + return serialiseImpl(dataFetcherResult, Locale.getDefault()); + } + + @Override + public @Nullable Integer serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + return serialiseImpl(dataFetcherResult, locale); + } + + @Override + @Deprecated + public Integer parseValue(@NonNull Object input) { + return parseValueImpl(input, Locale.getDefault()); + } + + @Override + public Integer parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + return parseValueImpl(input, locale); + } + + @Override + @Deprecated + public Integer parseLiteral(@NonNull Object input) { + return parseLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @Nullable Integer parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + return parseLiteralImpl(input, locale); + } + + @Override + @Deprecated + public @NonNull Value valueToLiteral(@NonNull Object input) { + return valueToLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { + return valueToLiteralImpl(input, locale); + } +} diff --git a/src/main/java/graphql/scalar/GraphqlStringCoercing.java b/src/main/java/graphql/scalar/GraphqlStringCoercing.java new file mode 100644 index 0000000000..64ab93a911 --- /dev/null +++ b/src/main/java/graphql/scalar/GraphqlStringCoercing.java @@ -0,0 +1,96 @@ +package graphql.scalar; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.Locale; + +import static graphql.scalar.CoercingUtil.i18nMsg; +import static graphql.scalar.CoercingUtil.typeName; + +/** + * The deprecated methods still have implementations in case code outside graphql-java is calling them + * but internally the call paths have been replaced. + */ +@Internal +public class GraphqlStringCoercing implements Coercing { + + private String toStringImpl(Object input) { + return String.valueOf(input); + } + + private String parseValueImpl(@NonNull Object input, @NonNull Locale locale) { + if (!(input instanceof String)) { + throw new CoercingParseValueException( + i18nMsg(locale, "String.unexpectedRawValueType", typeName(input)) + ); + } + return (String) input; + } + + private String parseLiteralImpl(@NonNull Object input, Locale locale) { + if (!(input instanceof StringValue)) { + throw new CoercingParseLiteralException( + i18nMsg(locale, "Scalar.unexpectedAstType", "StringValue", typeName(input)) + ); + } + return ((StringValue) input).getValue(); + } + + private StringValue valueToLiteralImpl(@NonNull Object input) { + return StringValue.newStringValue(input.toString()).build(); + } + + @Override + @Deprecated + public String serialize(@NonNull Object dataFetcherResult) { + return toStringImpl(dataFetcherResult); + } + + @Override + public @Nullable String serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + return toStringImpl(dataFetcherResult); + } + + @Override + @Deprecated + public String parseValue(@NonNull Object input) { + return parseValueImpl(input, Locale.getDefault()); + } + + @Override + public String parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + return parseValueImpl(input, locale); + } + + @Override + @Deprecated + public String parseLiteral(@NonNull Object input) { + return parseLiteralImpl(input, Locale.getDefault()); + } + + @Override + public @Nullable String parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + return parseLiteralImpl(input, locale); + } + + @Override + @Deprecated + public @NonNull Value valueToLiteral(@NonNull Object input) { + return valueToLiteralImpl(input); + } + + @Override + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { + return valueToLiteralImpl(input); + } +} diff --git a/src/main/java/graphql/schema/AsyncDataFetcher.java b/src/main/java/graphql/schema/AsyncDataFetcher.java index 4bfb806e06..a003bc4c7e 100644 --- a/src/main/java/graphql/schema/AsyncDataFetcher.java +++ b/src/main/java/graphql/schema/AsyncDataFetcher.java @@ -53,6 +53,15 @@ public static AsyncDataFetcher async(DataFetcher wrappedDataFetcher, E private final DataFetcher wrappedDataFetcher; private final Executor executor; + + public DataFetcher getWrappedDataFetcher() { + return wrappedDataFetcher; + } + + public Executor getExecutor() { + return executor; + } + public AsyncDataFetcher(DataFetcher wrappedDataFetcher) { this(wrappedDataFetcher, ForkJoinPool.commonPool()); } diff --git a/src/main/java/graphql/schema/CodeRegistryVisitor.java b/src/main/java/graphql/schema/CodeRegistryVisitor.java index 2496e52fa5..166ed6239c 100644 --- a/src/main/java/graphql/schema/CodeRegistryVisitor.java +++ b/src/main/java/graphql/schema/CodeRegistryVisitor.java @@ -1,6 +1,7 @@ package graphql.schema; import graphql.Internal; +import graphql.introspection.Introspection; import graphql.util.TraversalControl; import graphql.util.TraverserContext; @@ -12,22 +13,23 @@ * This ensure that all fields have data fetchers and that unions and interfaces have type resolvers */ @Internal -class CodeRegistryVisitor extends GraphQLTypeVisitorStub { +public class CodeRegistryVisitor extends GraphQLTypeVisitorStub { private final GraphQLCodeRegistry.Builder codeRegistry; - CodeRegistryVisitor(GraphQLCodeRegistry.Builder codeRegistry) { + public CodeRegistryVisitor(GraphQLCodeRegistry.Builder codeRegistry) { this.codeRegistry = codeRegistry; + Introspection.addCodeForIntrospectionTypes(codeRegistry); } @Override public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { GraphQLFieldsContainer parentContainerType = (GraphQLFieldsContainer) context.getParentContext().thisNode(); - DataFetcher dataFetcher = node.getDataFetcher(); - if (dataFetcher == null) { - dataFetcher = new PropertyDataFetcher<>(node.getName()); + DataFetcher dataFetcher = node.getDataFetcher(); + if (dataFetcher != null) { + FieldCoordinates coordinates = coordinates(parentContainerType, node); + codeRegistry.dataFetcherIfAbsent(coordinates, dataFetcher); } - FieldCoordinates coordinates = coordinates(parentContainerType, node); - codeRegistry.dataFetcherIfAbsent(coordinates, dataFetcher); + return CONTINUE; } @@ -37,7 +39,8 @@ public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, Tra if (typeResolver != null) { codeRegistry.typeResolverIfAbsent(node, typeResolver); } - assertTrue(codeRegistry.getTypeResolver(node) != null, "You MUST provide a type resolver for the interface type '" + node.getName() + "'"); + assertTrue(codeRegistry.getTypeResolver(node) != null, + "You MUST provide a type resolver for the interface type '%s'", node.getName()); return CONTINUE; } @@ -47,7 +50,8 @@ public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserCo if (typeResolver != null) { codeRegistry.typeResolverIfAbsent(node, typeResolver); } - assertTrue(codeRegistry.getTypeResolver(node) != null, "You MUST provide a type resolver for the union type '" + node.getName() + "'"); + assertTrue(codeRegistry.getTypeResolver(node) != null, + "You MUST provide a type resolver for the union type '%s'", node.getName()); return CONTINUE; } } diff --git a/src/main/java/graphql/schema/Coercing.java b/src/main/java/graphql/schema/Coercing.java index 66eb916772..3f580776aa 100644 --- a/src/main/java/graphql/schema/Coercing.java +++ b/src/main/java/graphql/schema/Coercing.java @@ -1,12 +1,20 @@ package graphql.schema; +import graphql.GraphQLContext; import graphql.PublicSpi; +import graphql.execution.CoercedVariables; +import graphql.language.Value; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; +import java.util.Locale; import java.util.Map; +import static graphql.Assert.assertNotNull; + /** - * The Coercing interface is used by {@link graphql.schema.GraphQLScalarType}s to parse and serialise object values. + * The Coercing interface is used by {@link graphql.schema.GraphQLScalarType}s to parse and serialize object values. *

    * There are two major responsibilities, result coercion and input coercion. *

    @@ -14,20 +22,27 @@ * For example imagine a DateTime scalar, the result coercion would need to take an object and turn it into a * ISO date or throw an exception if it cant. *

    - * Input coercion is taking a value that came in from requests variables or hard coded query literals and coercing them into a - * Java object value that is acceptable to the scalar type. Again using the DateTime example, the input coercion would try to - * parse an ISO date time object or throw an exception if it cant. - * - * See http://facebook.github.io/graphql/#sec-Scalars + * Input coercion is made out of three different methods {@link #parseLiteral(Object)} which converts an literal Ast + * into an internal input value, {@link #parseValue(Object)} which converts an external input value into an internal one + * and {@link #valueToLiteral(Object)} which is a translation between an external input value into a literal. + *
    + * The relationship between these three methods is as follows: + * It is required that every valid external input values for {@link #parseValue(Object)} is also valid for + * {@link #valueToLiteral(Object)} + * and vice versa. + * Furthermore the literals returned by {@link #valueToLiteral(Object)} are required to be valid for + * {@link #parseLiteral(Object)}. */ @PublicSpi public interface Coercing { /** + * This is deprecated and you should implement {@link #serialize(Object, GraphQLContext, Locale)} instead + *

    * Called to convert a Java object result of a DataFetcher to a valid runtime value for the scalar type. *

    * Note : Throw {@link graphql.schema.CoercingSerializeException} if there is fundamental - * problem during serialisation, don't return null to indicate failure. + * problem during serialization, don't return null to indicate failure. *

    * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your serialize method, but rather * catch them and fire them as {@link graphql.schema.CoercingSerializeException} instead as per the method contract. @@ -38,38 +53,104 @@ public interface Coercing { * * @throws graphql.schema.CoercingSerializeException if value input can't be serialized */ - O serialize(Object dataFetcherResult) throws CoercingSerializeException; + @Deprecated(since = "2022-08-22") + default @Nullable O serialize(@NonNull Object dataFetcherResult) throws CoercingSerializeException { + throw new UnsupportedOperationException("The non deprecated version of serialize has not been implemented by this scalar : " + this.getClass()); + } + + /** + * Called to convert a Java object result of a DataFetcher to a valid runtime value for the scalar type. + *

    + * Note : Throw {@link graphql.schema.CoercingSerializeException} if there is fundamental + * problem during serialization, don't return null to indicate failure. + *

    + * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your serialize method, but rather + * catch them and fire them as {@link graphql.schema.CoercingSerializeException} instead as per the method contract. + * + * @param dataFetcherResult is never null + * @param graphQLContext the graphql context in place + * @param locale the locale to use + * + * @return a serialized value which may be null. + * + * @throws graphql.schema.CoercingSerializeException if value input can't be serialized + */ + default @Nullable O serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + assertNotNull(dataFetcherResult); + assertNotNull(graphQLContext); + return serialize(dataFetcherResult); + } /** + * This is deprecated and you should implement {@link #parseValue(Object, GraphQLContext, Locale)} instead + *

    * Called to resolve an input from a query variable into a Java object acceptable for the scalar type. *

    * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your parseValue method, but rather * catch them and fire them as {@link graphql.schema.CoercingParseValueException} instead as per the method contract. + *

    + * Note : if input is explicit/raw value null, input coercion will return null before this method is called * * @param input is never null * - * @return a parsed value which is never null + * @return a parsed value which may be null + * + * @throws graphql.schema.CoercingParseValueException if value input can't be parsed + */ + @Deprecated(since = "2022-08-22") + default @Nullable I parseValue(@NonNull Object input) throws CoercingParseValueException { + throw new UnsupportedOperationException("The non deprecated version of parseValue has not been implemented by this scalar : " + this.getClass()); + } + + /** + * Called to resolve an input from a query variable into a Java object acceptable for the scalar type. + *

    + * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your parseValue method, but rather + * catch them and fire them as {@link graphql.schema.CoercingParseValueException} instead as per the method contract. + * + * Note : if input is explicit/raw value null, input coercion will return null before this method is called + * + * @param input is never null + * @param graphQLContext the graphql context in place + * @param locale the locale to use + * + * @return a parsed value which may be null * * @throws graphql.schema.CoercingParseValueException if value input can't be parsed */ - I parseValue(Object input) throws CoercingParseValueException; + @Nullable + default I parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + assertNotNull(input); + assertNotNull(graphQLContext); + assertNotNull(locale); + return parseValue(input); + } /** + * This is deprecated and you should implement {@link #parseLiteral(Value, CoercedVariables, GraphQLContext, Locale)} instead + *

    * Called during query validation to convert a query input AST node into a Java object acceptable for the scalar type. The input * object will be an instance of {@link graphql.language.Value}. *

    * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your parseLiteral method, but rather * catch them and fire them as {@link graphql.schema.CoercingParseLiteralException} instead as per the method contract. + *

    + * Note : if input is literal {@link graphql.language.NullValue}, input coercion will return null before this method is called * * @param input is never null * - * @return a parsed value which is never null + * @return a parsed value which may be null * * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ - I parseLiteral(Object input) throws CoercingParseLiteralException; + @Deprecated(since = "2022-08-22") + default @Nullable I parseLiteral(@NonNull Object input) throws CoercingParseLiteralException { + throw new UnsupportedOperationException("The non deprecated version of parseLiteral has not been implemented by this scalar : " + this.getClass()); + } /** + * This is deprecated and you should implement {@link #parseLiteral(Value, CoercedVariables, GraphQLContext, Locale)} instead + *

    * Called during query execution to convert a query input AST node into a Java object acceptable for the scalar type. The input * object will be an instance of {@link graphql.language.Value}. *

    @@ -80,17 +161,82 @@ public interface Coercing { * objects and convert them into actual values. But for those scalar types that want to do this, then this * method should be implemented. * + * Note : if input is literal {@link graphql.language.NullValue}, input coercion will return null before this method is called + * * @param input is never null * @param variables the resolved variables passed to the query * - * @return a parsed value which is never null + * @return a parsed value which may be null * * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ @SuppressWarnings("unused") - default I parseLiteral(Object input, Map variables) throws CoercingParseLiteralException { + @Deprecated(since = "2022-08-22") + default @Nullable I parseLiteral(Object input, Map variables) throws CoercingParseLiteralException { return parseLiteral(input); } - ; + /** + * Called during query execution to convert a query input AST node into a Java object acceptable for the scalar type. The input + * object will be an instance of {@link graphql.language.Value}. + *

    + * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your parseLiteral method, but rather + * catch them and fire them as {@link graphql.schema.CoercingParseLiteralException} instead as per the method contract. + *

    + * Many scalar types don't need to implement this method because they don't take AST {@link graphql.language.VariableReference} + * objects and convert them into actual values. But for those scalar types that want to do this, then this + * method should be implemented. + * + * Note : if input is literal {@link graphql.language.NullValue}, input coercion will return null before this method is called + * + * @param input is never null + * @param variables the resolved variables passed to the query + * @param graphQLContext the graphql context in place + * @param locale the locale to use + * + * @return a parsed value which may be null + * + * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed + */ + default @Nullable I parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + assertNotNull(input); + assertNotNull(graphQLContext); + assertNotNull(locale); + return parseLiteral(input, variables.toMap()); + } + + + /** + * This is deprecated and you should implement {@link #valueToLiteral(Object, GraphQLContext, Locale)} instead + *

    + * Converts an external input value to a literal (Ast Value). + *

    + * IMPORTANT: the argument is validated before by calling {@link #parseValue(Object)}. + * + * @param input an external input value + * + * @return The literal matching the external input value. + */ + @Deprecated(since = "2022-08-22") + default @NonNull Value valueToLiteral(@NonNull Object input) { + throw new UnsupportedOperationException("The non deprecated version of valueToLiteral has not been implemented by this scalar : " + this.getClass()); + } + + /** + * Converts an external input value to a literal (Ast Value). + *

    + * IMPORTANT: the argument is validated before by calling {@link #parseValue(Object)}. + * + * @param input an external input value + * @param graphQLContext the graphql context in place + * @param locale the locale to use + * + * @return The literal matching the external input value. + */ + default @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { + assertNotNull(input); + assertNotNull(graphQLContext); + assertNotNull(locale); + return valueToLiteral(input); + } } diff --git a/src/main/java/graphql/schema/DataFetcherFactories.java b/src/main/java/graphql/schema/DataFetcherFactories.java index e9f6a88bb5..2345535d56 100644 --- a/src/main/java/graphql/schema/DataFetcherFactories.java +++ b/src/main/java/graphql/schema/DataFetcherFactories.java @@ -20,7 +20,18 @@ public class DataFetcherFactories { * @return a data fetcher factory that always returns the provided data fetcher */ public static DataFetcherFactory useDataFetcher(DataFetcher dataFetcher) { - return fieldDefinition -> dataFetcher; + //noinspection deprecation + return new DataFetcherFactory<>() { + @Override + public DataFetcher get(DataFetcherFactoryEnvironment environment) { + return dataFetcher; + } + + @Override + public DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return dataFetcher; + } + }; } /** @@ -32,7 +43,7 @@ public static DataFetcherFactory useDataFetcher(DataFetcher dataFetche * * @return a new data fetcher that wraps the provided data fetcher */ - public static DataFetcher wrapDataFetcher(DataFetcher delegateDataFetcher, BiFunction mapFunction) { + public static DataFetcher wrapDataFetcher(DataFetcher delegateDataFetcher, BiFunction mapFunction) { return environment -> { Object value = delegateDataFetcher.get(environment); if (value instanceof CompletionStage) { diff --git a/src/main/java/graphql/schema/DataFetcherFactory.java b/src/main/java/graphql/schema/DataFetcherFactory.java index ece0dcb6ea..9e7eafa872 100644 --- a/src/main/java/graphql/schema/DataFetcherFactory.java +++ b/src/main/java/graphql/schema/DataFetcherFactory.java @@ -19,7 +19,23 @@ public interface DataFetcherFactory { * @param environment the environment that needs the data fetcher * * @return a data fetcher + * + * @deprecated This method will go away at some point and {@link DataFetcherFactory#get(GraphQLFieldDefinition)} will be used */ + @Deprecated(since = "2024-11-26") DataFetcher get(DataFetcherFactoryEnvironment environment); + /** + * Returns a {@link graphql.schema.DataFetcher} given the field definition + * which is cheaper in object allocation terms. + * + * @param fieldDefinition the field that needs the data fetcher + * + * @return a data fetcher + */ + + default DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return null; + } + } diff --git a/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java b/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java index 991756d96b..7ff5aefb9a 100644 --- a/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java +++ b/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java @@ -5,8 +5,12 @@ /** * This is passed to a {@link graphql.schema.DataFetcherFactory} when it is invoked to * get a {@link graphql.schema.DataFetcher} + * + * @deprecated This class will go away at some point in the future since its pointless wrapper + * of a {@link GraphQLFieldDefinition} */ @PublicApi +@Deprecated(since = "2024-11-26") public class DataFetcherFactoryEnvironment { private final GraphQLFieldDefinition fieldDefinition; @@ -25,7 +29,7 @@ public static Builder newDataFetchingFactoryEnvironment() { return new Builder(); } - static class Builder { + public static class Builder { GraphQLFieldDefinition fieldDefinition; public Builder fieldDefinition(GraphQLFieldDefinition fieldDefinition) { diff --git a/src/main/java/graphql/schema/DataFetchingEnvironment.java b/src/main/java/graphql/schema/DataFetchingEnvironment.java index 93a930c834..b08356f3e4 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironment.java @@ -1,17 +1,21 @@ package graphql.schema; +import graphql.GraphQLContext; +import graphql.Internal; import graphql.PublicApi; -import graphql.cachecontrol.CacheControl; import graphql.execution.ExecutionId; import graphql.execution.ExecutionStepInfo; import graphql.execution.MergedField; import graphql.execution.directives.QueryDirectives; +import graphql.introspection.IntrospectionDataFetchingEnvironment; import graphql.language.Document; import graphql.language.Field; import graphql.language.FragmentDefinition; import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -24,7 +28,8 @@ */ @SuppressWarnings("TypeParameterUnusedInFormals") @PublicApi -public interface DataFetchingEnvironment { +@NullMarked +public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnvironment { /** * This is the value of the current object to be queried. @@ -33,8 +38,10 @@ public interface DataFetchingEnvironment { * For the root query, it is equal to {{@link DataFetchingEnvironment#getRoot} * * @param you decide what type it is + * * @return can be null for the root query, otherwise it is never null */ + @Nullable T getSource(); /** @@ -46,6 +53,7 @@ public interface DataFetchingEnvironment { * Returns true of the named argument is present * * @param name the name of the argument + * * @return true of the named argument is present */ boolean containsArgument(String name); @@ -55,8 +63,10 @@ public interface DataFetchingEnvironment { * * @param name the name of the argument * @param you decide what type it is - * @return the named argument or null if its not present + * + * @return the named argument or null if it's not present */ + @Nullable T getArgument(String name); /** @@ -65,43 +75,63 @@ public interface DataFetchingEnvironment { * @param name the name of the argument * @param defaultValue the default value if the argument is not present * @param you decide what type it is - * @return the named argument or the default if its not present + * + * @return the named argument or the default if it's not present */ T getArgumentOrDefault(String name, T defaultValue); /** - * Returns a context argument that is set up when the {@link graphql.GraphQL#execute(graphql.ExecutionInput)} )} method + * Returns a legacy context argument that is set up when the {@link graphql.GraphQL#execute(graphql.ExecutionInput)} method * is invoked. *

    - * This is a info object which is provided to all DataFetchers, but never used by graphql-java itself. + * This is an info object which is provided to all DataFetchers, but never used by graphql-java itself. * * @param you decide what type it is + * * @return can be null + * + * @deprecated - use {@link #getGraphQlContext()} instead */ + @Deprecated(since = "2021-07-05") + @Nullable T getContext(); /** - * This returns a context object that parent fields may have returned returned + * Returns a shared context argument that is set up when the {@link graphql.GraphQL#execute(graphql.ExecutionInput)} )} method + * is invoked. + *

    + * This is an info object which is provided to all DataFetchers. + * + * @return can NOT be null + */ + GraphQLContext getGraphQlContext(); + + /** + * This returns a context object that parent fields may have returned * via {@link graphql.execution.DataFetcherResult#getLocalContext()} which can be used to pass down extra information to * fields beyond the normal {@link #getSource()} *

    - * This differs from {@link #getContext()} in that its field specific and passed from parent field to child field, - * whilst {@link #getContext()} is global for the whole query. + * This differs from {@link #getGraphQlContext()} in that it's field specific and passed from parent field to child field, + * whilst {@link #getGraphQlContext()} is global for the whole query. *

    - * If the field is a top level field then 'localContext' equals null since its never be set until those + * If the field is a top level field then 'localContext' equals null since it's never be set until those * fields execute. * * @param you decide what type it is + * * @return can be null if no field context objects are passed back by previous parent fields */ + @Nullable T getLocalContext(); /** * This is the source object for the root query. * * @param you decide what type it is + * * @return can be null */ + @Nullable T getRoot(); /** @@ -112,13 +142,14 @@ public interface DataFetchingEnvironment { /** * @return the list of fields + * * @deprecated Use {@link #getMergedField()}. */ - @Deprecated + @Deprecated(since = "2018-12-20") List getFields(); /** - * It can happen that a query has overlapping fields which are + * It can happen that a query has overlapping fields which * are querying the same data. If this is the case they get merged * together and fetched only once, but this method returns all of the Fields * from the query. @@ -190,6 +221,7 @@ public interface DataFetchingEnvironment { * This gives you access to the directives related to this field * * @return the {@link graphql.execution.directives.QueryDirectives} for the currently executing field + * * @see graphql.execution.directives.QueryDirectives for more information */ QueryDirectives getQueryDirectives(); @@ -200,21 +232,20 @@ public interface DataFetchingEnvironment { * @param dataLoaderName the name of the data loader to fetch * @param the key type * @param the value type + * * @return the named data loader or null + * * @see org.dataloader.DataLoaderRegistry#getDataLoader(String) */ - DataLoader getDataLoader(String dataLoaderName); + @Nullable + DataLoader getDataLoader(String dataLoaderName); + /** * @return the {@link org.dataloader.DataLoaderRegistry} in play */ DataLoaderRegistry getDataLoaderRegistry(); - /** - * @return the current {@link CacheControl} instance used to add cache hints to the response - */ - CacheControl getCacheControl(); - /** * @return the current {@link java.util.Locale} instance used for this request */ @@ -231,12 +262,29 @@ public interface DataFetchingEnvironment { Document getDocument(); /** - * This returns the variables that have been passed into the query. Note that this is the raw variables themselves and not the + * This returns the variables that have been passed into the query. Note that this is the query variables themselves and not the * arguments to the field, which is accessed via {@link #getArguments()} *

    - * The field arguments are created by interpolating any referenced variables and AST literals and resolving them into the arguments + * The field arguments are created by interpolating any referenced variables and AST literals and resolving them into the arguments. + *

    + * Also note that the raw query variables are "coerced" into a map where the leaf scalar and enum types are called to create + * input coerced values. So the values you get here are not exactly as passed via {@link graphql.ExecutionInput#getVariables()} + * but have been processed. * - * @return the variables that have been passed to the query that is being executed + * @return the coerced variables that have been passed to the query that is being executed */ Map getVariables(); + + + /** + * A method that should only be used by the GraphQL Java library itself. + * It is not intended for public use. + * + * @return an internal representation of the DataFetchingEnvironment + */ + @Internal + default Object toInternal() { + throw new UnsupportedOperationException(); + } + } diff --git a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java index 5ec28ed9cd..b9cfce9485 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java @@ -1,54 +1,75 @@ package graphql.schema; +import com.google.common.collect.ImmutableMap; +import graphql.Assert; +import graphql.GraphQLContext; import graphql.Internal; -import graphql.cachecontrol.CacheControl; +import graphql.Profiler; +import graphql.collect.ImmutableKit; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.execution.DataLoaderDispatchStrategy; import graphql.execution.ExecutionContext; import graphql.execution.ExecutionId; import graphql.execution.ExecutionStepInfo; import graphql.execution.MergedField; import graphql.execution.directives.QueryDirectives; +import graphql.execution.incremental.AlternativeCallContext; +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys; import graphql.language.Document; import graphql.language.Field; import graphql.language.FragmentDefinition; import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; -import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"}) @Internal +@NullMarked public class DataFetchingEnvironmentImpl implements DataFetchingEnvironment { + @Nullable private final Object source; - private final Map arguments; + private final Supplier> arguments; + @Nullable private final Object context; + private final GraphQLContext graphQLContext; + @Nullable private final Object localContext; + @Nullable private final Object root; private final GraphQLFieldDefinition fieldDefinition; private final MergedField mergedField; private final GraphQLOutputType fieldType; private final GraphQLType parentType; private final GraphQLSchema graphQLSchema; - private final Map fragmentsByName; + private final ImmutableMap fragmentsByName; private final ExecutionId executionId; private final DataFetchingFieldSelectionSet selectionSet; - private final ExecutionStepInfo executionStepInfo; + private final Supplier executionStepInfo; private final DataLoaderRegistry dataLoaderRegistry; - private final CacheControl cacheControl; private final Locale locale; private final OperationDefinition operationDefinition; private final Document document; - private final Map variables; + private final ImmutableMapWithNullValues variables; private final QueryDirectives queryDirectives; + private final int level; + + // used for internal() method + private final DFEInternalState dfeInternalState; private DataFetchingEnvironmentImpl(Builder builder) { this.source = builder.source; - this.arguments = builder.arguments == null ? Collections.emptyMap() : builder.arguments; + this.arguments = builder.arguments == null ? ImmutableKit::emptyMap : builder.arguments; this.context = builder.context; + this.graphQLContext = Assert.assertNotNull(builder.graphQLContext); this.localContext = builder.localContext; this.root = builder.root; this.fieldDefinition = builder.fieldDefinition; @@ -56,17 +77,20 @@ private DataFetchingEnvironmentImpl(Builder builder) { this.fieldType = builder.fieldType; this.parentType = builder.parentType; this.graphQLSchema = builder.graphQLSchema; - this.fragmentsByName = builder.fragmentsByName == null ? Collections.emptyMap() : builder.fragmentsByName; + this.fragmentsByName = builder.fragmentsByName == null ? ImmutableKit.emptyMap() : builder.fragmentsByName; this.executionId = builder.executionId; this.selectionSet = builder.selectionSet; this.executionStepInfo = builder.executionStepInfo; this.dataLoaderRegistry = builder.dataLoaderRegistry; - this.cacheControl = builder.cacheControl; this.locale = builder.locale; this.operationDefinition = builder.operationDefinition; this.document = builder.document; - this.variables = builder.variables == null ? Collections.emptyMap() : builder.variables; + this.variables = builder.variables == null ? ImmutableMapWithNullValues.emptyMap() : builder.variables; this.queryDirectives = builder.queryDirectives; + this.level = builder.level; + + // internal state + this.dfeInternalState = new DFEInternalState(builder.dataLoaderDispatchStrategy, builder.alternativeCallContext, builder.profiler); } /** @@ -83,56 +107,64 @@ public static Builder newDataFetchingEnvironment(DataFetchingEnvironment environ public static Builder newDataFetchingEnvironment(ExecutionContext executionContext) { return new Builder() .context(executionContext.getContext()) + .graphQLContext(executionContext.getGraphQLContext()) .root(executionContext.getRoot()) .graphQLSchema(executionContext.getGraphQLSchema()) .fragmentsByName(executionContext.getFragmentsByName()) .dataLoaderRegistry(executionContext.getDataLoaderRegistry()) - .cacheControl(executionContext.getCacheControl()) - .locale(executionContext.getLocale()) .locale(executionContext.getLocale()) .document(executionContext.getDocument()) .operationDefinition(executionContext.getOperationDefinition()) - .variables(executionContext.getVariables()) - .executionId(executionContext.getExecutionId()); + .variables(executionContext.getCoercedVariables().toMap()) + .executionId(executionContext.getExecutionId()) + .dataLoaderDispatchStrategy(executionContext.getDataLoaderDispatcherStrategy()) + .profiler(executionContext.getProfiler()); + } @Override + @Nullable public T getSource() { return (T) source; } @Override public Map getArguments() { - return Collections.unmodifiableMap(arguments); + return ImmutableMapWithNullValues.copyOf(arguments.get()); } @Override public boolean containsArgument(String name) { - return arguments.containsKey(name); + return arguments.get().containsKey(name); } @Override - public T getArgument(String name) { - return (T) arguments.get(name); + public @Nullable T getArgument(String name) { + return (T) arguments.get().get(name); } @Override public T getArgumentOrDefault(String name, T defaultValue) { - return (T) arguments.getOrDefault(name, defaultValue); + return (T) arguments.get().getOrDefault(name, defaultValue); } @Override - public T getContext() { + public @Nullable T getContext() { return (T) context; } @Override - public T getLocalContext() { + public GraphQLContext getGraphQlContext() { + return graphQLContext; + } + + @Override + public @Nullable T getLocalContext() { return (T) localContext; } @Override - public T getRoot() { + public @Nullable T getRoot() { return (T) root; } @@ -173,7 +205,7 @@ public GraphQLSchema getGraphQLSchema() { @Override public Map getFragmentsByName() { - return Collections.unmodifiableMap(fragmentsByName); + return fragmentsByName; } @Override @@ -193,12 +225,21 @@ public QueryDirectives getQueryDirectives() { @Override public ExecutionStepInfo getExecutionStepInfo() { - return executionStepInfo; + return executionStepInfo.get(); } + @Override - public DataLoader getDataLoader(String dataLoaderName) { - return dataLoaderRegistry.getDataLoader(dataLoaderName); + public @Nullable DataLoader getDataLoader(String dataLoaderName) { + DataLoader dataLoader = dataLoaderRegistry.getDataLoader(dataLoaderName); + if (dataLoader == null) { + return null; + } + if (!graphQLContext.getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, false) + && !graphQLContext.getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, false)) { + return dataLoader; + } + return new DataLoaderWithContext<>(this, dataLoaderName, dataLoader); } @Override @@ -206,11 +247,6 @@ public DataLoaderRegistry getDataLoaderRegistry() { return dataLoaderRegistry; } - @Override - public CacheControl getCacheControl() { - return cacheControl; - } - @Override public Locale getLocale() { return locale; @@ -228,20 +264,32 @@ public Document getDocument() { @Override public Map getVariables() { - return Collections.unmodifiableMap(variables); + return variables; + } + + + @Override + public Object toInternal() { + return this.dfeInternalState; } @Override public String toString() { return "DataFetchingEnvironmentImpl{" + - "executionStepInfo=" + executionStepInfo + - '}'; + "executionStepInfo=" + executionStepInfo + + '}'; } + public int getLevel() { + return level; + } + + @NullUnmarked public static class Builder { private Object source; private Object context; + private GraphQLContext graphQLContext = GraphQLContext.newContext().build(); private Object localContext; private Object root; private GraphQLFieldDefinition fieldDefinition; @@ -251,21 +299,25 @@ public static class Builder { private GraphQLSchema graphQLSchema; private ExecutionId executionId; private DataFetchingFieldSelectionSet selectionSet; - private ExecutionStepInfo executionStepInfo; + private Supplier executionStepInfo; private DataLoaderRegistry dataLoaderRegistry; - private CacheControl cacheControl; private Locale locale; private OperationDefinition operationDefinition; private Document document; - private Map arguments; - private Map fragmentsByName; - private Map variables; + private Supplier> arguments; + private ImmutableMap fragmentsByName; + private ImmutableMapWithNullValues variables; private QueryDirectives queryDirectives; + private DataLoaderDispatchStrategy dataLoaderDispatchStrategy; + private Profiler profiler; + private AlternativeCallContext alternativeCallContext; + private int level; public Builder(DataFetchingEnvironmentImpl env) { this.source = env.source; this.arguments = env.arguments; this.context = env.context; + this.graphQLContext = env.graphQLContext; this.localContext = env.localContext; this.root = env.root; this.fieldDefinition = env.fieldDefinition; @@ -278,12 +330,15 @@ public Builder(DataFetchingEnvironmentImpl env) { this.selectionSet = env.selectionSet; this.executionStepInfo = env.executionStepInfo; this.dataLoaderRegistry = env.dataLoaderRegistry; - this.cacheControl = env.cacheControl; - this.localContext = env.locale; + this.locale = env.locale; this.operationDefinition = env.operationDefinition; this.document = env.document; this.variables = env.variables; this.queryDirectives = env.queryDirectives; + this.dataLoaderDispatchStrategy = env.dfeInternalState.dataLoaderDispatchStrategy; + this.profiler = env.dfeInternalState.profiler; + this.alternativeCallContext = env.dfeInternalState.alternativeCallContext; + this.level = env.level; } public Builder() { @@ -295,15 +350,25 @@ public Builder source(Object source) { } public Builder arguments(Map arguments) { + return arguments(() -> arguments); + } + + public Builder arguments(Supplier> arguments) { this.arguments = arguments; return this; } - public Builder context(Object context) { + @Deprecated(since = "2021-07-05") + public Builder context(@Nullable Object context) { this.context = context; return this; } + public Builder graphQLContext(GraphQLContext context) { + this.graphQLContext = Assert.assertNotNull(context, "GraphQLContext cannot be null"); + return this; + } + public Builder localContext(Object localContext) { this.localContext = localContext; return this; @@ -340,7 +405,7 @@ public Builder graphQLSchema(GraphQLSchema graphQLSchema) { } public Builder fragmentsByName(Map fragmentsByName) { - this.fragmentsByName = fragmentsByName; + this.fragmentsByName = ImmutableMap.copyOf(fragmentsByName); return this; } @@ -355,6 +420,10 @@ public Builder selectionSet(DataFetchingFieldSelectionSet selectionSet) { } public Builder executionStepInfo(ExecutionStepInfo executionStepInfo) { + return executionStepInfo(() -> executionStepInfo); + } + + public Builder executionStepInfo(Supplier executionStepInfo) { this.executionStepInfo = executionStepInfo; return this; } @@ -364,11 +433,6 @@ public Builder dataLoaderRegistry(DataLoaderRegistry dataLoaderRegistry) { return this; } - public Builder cacheControl(CacheControl cacheControl) { - this.cacheControl = cacheControl; - return this; - } - public Builder locale(Locale locale) { this.locale = locale; return this; @@ -385,7 +449,7 @@ public Builder document(Document document) { } public Builder variables(Map variables) { - this.variables = variables; + this.variables = ImmutableMapWithNullValues.copyOf(variables); return this; } @@ -394,8 +458,53 @@ public Builder queryDirectives(QueryDirectives queryDirectives) { return this; } + public Builder deferredCallContext(AlternativeCallContext alternativeCallContext) { + this.alternativeCallContext = alternativeCallContext; + return this; + } + public DataFetchingEnvironment build() { return new DataFetchingEnvironmentImpl(this); } + + public Builder dataLoaderDispatchStrategy(DataLoaderDispatchStrategy dataLoaderDispatcherStrategy) { + this.dataLoaderDispatchStrategy = dataLoaderDispatcherStrategy; + return this; + } + + public Builder profiler(Profiler profiler) { + this.profiler = profiler; + return this; + } + + public Builder level(int level) { + this.level = level; + return this; + } + } + + @Internal + public static class DFEInternalState { + final DataLoaderDispatchStrategy dataLoaderDispatchStrategy; + final Profiler profiler; + final AlternativeCallContext alternativeCallContext; + + public DFEInternalState(DataLoaderDispatchStrategy dataLoaderDispatchStrategy, AlternativeCallContext alternativeCallContext, Profiler profiler) { + this.dataLoaderDispatchStrategy = dataLoaderDispatchStrategy; + this.alternativeCallContext = alternativeCallContext; + this.profiler = profiler; + } + + public DataLoaderDispatchStrategy getDataLoaderDispatchStrategy() { + return dataLoaderDispatchStrategy; + } + + public AlternativeCallContext getDeferredCallContext() { + return alternativeCallContext; + } + + public Profiler getProfiler() { + return profiler; + } } } diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java index 4d91183792..62e7ad8333 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java @@ -1,15 +1,14 @@ package graphql.schema; -import graphql.execution.MergedSelectionSet; +import graphql.PublicApi; import java.util.List; import java.util.Map; -import java.util.function.Supplier; /** - * This allows you to retrieve the selection set of fields that have been asked for when the + * This class allows you to retrieve the selection set of fields that have been asked for when the * {@link DataFetcher} was invoked. - * + *

    * For example imagine we are fetching the field 'user' in the following query * *

    @@ -27,35 +26,80 @@
      *  }
      * }
      * 
    - * + *

    * The selection set in the case above consists of the fields "name, age, weight, friends and friends/name". - * + *

    * You can use this selection set perhaps to "peek" ahead and decide that field values you might need * from the underlying data system. Imagine a SQL system where this might represent the SQL 'projection' * of columns say. + *

    + * However composite types such as Interfaces and Unions add some complexity. You cant know + * ahead of time the exact field and object types involved. There in fact be multiple possible `conditional` fields. + *

    + * This class represents this by returning a list of fields and having two addressing mechanisms, + * a simple `x/y` one and the more specific `Foo.x/Bar.y` mechanism. + *

    + * For example imagine a `Pet` interface type that has `Cat` and `Dog` object type implementations. The query might + * be: + * + *

    + * {@code
    + *  {
    + *      pet {
    + *          name
    + *      }
    + *  }
    + * }
    + * 
    + *

    + * In the example above you have a `Cat.name`and `Dog.name` as possible sub selections of the `pet` field. They are can be addressed by + * either `name` or `Dog.name` or `Cat.name` + * + *

    + * {@code
    + *  selectionSet.contains("name") == true
    + *  selectionSet.contains("Dog.name", "Cat.name") == true
    + *
    + *  List petNames = selectionSet.getFields("name")
    + *  petNames.size() == 2
    + *
    + *  List dogNames = selectionSet.getFields("Dog.name")
    + *  dogNames.size() == 1
    + * }
    + * 
    + *

    + * The simple naming is easier to work with but the type prefixed naming is more precise. + *

    + * Another complication is any field aliasing that a client can specify. + * + *

    + * {@code
    + *  {
    + *      pet {
    + *          name(arg : "foo")
    + *          ... on Dog {
    + *             aliasedName : name(arg : "bar")
    + *          }
    + *     }
    + *  }
    + * }
    + * 
    + *

    + * In the example above the `selectionSet.getFields("name")` actually returns three {@link graphql.schema.SelectedField}s, + * one for `Dog.name`, one for `Cat.name` and one for `Dog.name` with an alias of `aliasedName`. The arguments can + * differ on {@link graphql.schema.SelectedField}s that have different {@link SelectedField#getResultKey()}s, hence the multiple + * selected fields returned. + *

    + * To help you there is the {@link #getFieldsGroupedByResultKey()} that returns a {@code Map>} keyed + * by result key, that is by the field alias or by the field name. */ -public interface DataFetchingFieldSelectionSet extends Supplier { - - /** - * @return a map of the fields that represent the selection set - */ - @Override - MergedSelectionSet get(); - - /** - * @return a map of the arguments for each field in the selection set - */ - Map> getArguments(); - - /** - * @return a map of the {@link graphql.schema.GraphQLFieldDefinition}s for each field in the selection set - */ - Map getDefinitions(); +@PublicApi +public interface DataFetchingFieldSelectionSet { /** * This will return true if the field selection set matches a specified "glob" pattern matching ie * the glob pattern matching supported by {@link java.nio.file.FileSystem#getPathMatcher}. - * + *

    * This will allow you to use '*', '**' and '?' as special matching characters such that "invoice/customer*" would * match an invoice field with child fields that start with 'customer'. * @@ -70,7 +114,7 @@ public interface DataFetchingFieldSelectionSet extends Supplier * This will allow you to use '*', '**' and '?' as special matching characters such that "invoice/customer*" would * match an invoice field with child fields that start with 'customer'. * @@ -86,7 +130,7 @@ public interface DataFetchingFieldSelectionSet extends Supplier * This will allow you to use '*', '**' and '?' as special matching characters such that "invoice/customer*" would * match an invoice field with child fields that start with 'customer'. * @@ -101,36 +145,71 @@ public interface DataFetchingFieldSelectionSet extends Supplier * The fields are guaranteed to be in pre-order as they appear in the query. + *

    + * A selected field may have an alias - and hence is a unique field in the returned list. It may + * have the same field names as others in the list but when you also consider the alias then it is indeed unique + * because it would be another entry in the graphql result. * * @return a list of all selected fields or empty list if none match */ List getFields(); + /** + * This will return all selected fields that are immediate child fields + * of the field being fetched. + *

    + * The fields are guaranteed to be in pre-order as they appear in the query. + *

    + * A selected field may have an alias - and hence is a unique field in the returned list. It may + * have the same field names as others in the list but when you also consider the alias then it is indeed unique + * because it would be another entry in the graphql result. + * + * @return a list of all selected immediate child fields or empty list if none match + */ + List getImmediateFields(); + /** * This will return a list of selected fields that match a specified "glob" pattern matching ie * the glob pattern matching supported by {@link java.nio.file.FileSystem#getPathMatcher}. - * + *

    * This will allow you to use '*', '**' and '?' as special matching characters such that "invoice/customer*" would * match an invoice field with child fields that start with 'customer'. - * + *

    * The fields are guaranteed to be in pre-order as they appear in the query. + *

    + * A selected field may have an alias - and hence is a unique field in the returned list. It may + * have the same field names as others in the list but when you also consider the alias then it is indeed unique + * because it would be another entry in the graphql result. * - * @param fieldGlobPattern the glob pattern to match fields against + * @param fieldGlobPattern the glob pattern to match fields against + * @param fieldGlobPatterns optionally more glob pattern to match fields against * * @return a list of selected fields or empty list if none match */ - List getFields(String fieldGlobPattern); + List getFields(String fieldGlobPattern, String... fieldGlobPatterns); /** - * This will return a selected field using the fully qualified field name. - * - * @param fqFieldName the fully qualified name that is contained in the map from {@link #get()} + * The result key of a selected field represents what the graphql return value will be. The same {@link graphql.schema.GraphQLFieldDefinition} + * may lead to a field being asked for multiple times (with differing arguments) if field aliases are used. This method + * helps you get all possible field invocations grouped by their result key. The arguments are guaranteed to be the same if + * the result key is the same, otherwise the query would not have validated correctly. * - * @return a selected field or null if there is no matching field + * @return a map of selected fields grouped by result key or an empty map if none match */ - SelectedField getField(String fqFieldName); - + Map> getFieldsGroupedByResultKey(); + /** + * The result key of a selected field represents what the graphql return value will be. The same {@link graphql.schema.GraphQLFieldDefinition} + * may lead to a field being asked for multiple times (with differing arguments) if field aliases are used. This method + * helps you get all possible field invocations grouped by their result key. The arguments are guaranteed to be the same if + * the result key is the same, otherwise the query would not have validated correctly. + * + * @param fieldGlobPattern the glob pattern to match fields against + * @param fieldGlobPatterns optionally more glob pattern to match fields against + * + * @return a map of selected fields grouped by result key or an empty map if none match + */ + Map> getFieldsGroupedByResultKey(String fieldGlobPattern, String... fieldGlobPatterns); } diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java index 70b7fcd154..4800a0dfcf 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java @@ -1,51 +1,41 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import graphql.Internal; -import graphql.execution.ExecutionContext; -import graphql.execution.FieldCollector; -import graphql.execution.FieldCollectorParameters; -import graphql.execution.MergedField; -import graphql.execution.MergedSelectionSet; -import graphql.execution.ValuesResolver; -import graphql.introspection.Introspection; -import graphql.language.Field; -import graphql.language.FragmentDefinition; +import graphql.collect.ImmutableKit; +import graphql.normalized.ExecutableNormalizedField; +import graphql.util.LockKit; +import java.io.File; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.PathMatcher; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; +import java.util.function.Supplier; import java.util.stream.Collectors; +import java.util.stream.Stream; import static graphql.Assert.assertNotNull; -import static java.util.Collections.emptyList; -import static java.util.Collections.emptyMap; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.util.FpKit.newList; @Internal public class DataFetchingFieldSelectionSetImpl implements DataFetchingFieldSelectionSet { - private final static DataFetchingFieldSelectionSet NOOP = new DataFetchingFieldSelectionSet() { - @Override - public MergedSelectionSet get() { - return MergedSelectionSet.newMergedSelectionSet().build(); - } - - @Override - public Map> getArguments() { - return emptyMap(); - } + private final static String SEP = "/"; + private final static boolean UNIXY = SEP.equals(File.separator); - @Override - public Map getDefinitions() { - return emptyMap(); - } + private final static DataFetchingFieldSelectionSet NOOP = new DataFetchingFieldSelectionSet() { @Override public boolean contains(String fieldGlobPattern) { @@ -62,10 +52,6 @@ public boolean containsAllOf(String fieldGlobPattern, String... fieldGlobPattern return false; } - @Override - public SelectedField getField(String fieldName) { - return null; - } @Override public List getFields() { @@ -73,68 +59,52 @@ public List getFields() { } @Override - public List getFields(String fieldGlobPattern) { + public List getImmediateFields() { return emptyList(); } - }; - public static DataFetchingFieldSelectionSet newCollector(ExecutionContext executionContext, GraphQLType fieldType, MergedField mergedField) { - GraphQLType unwrappedType = GraphQLTypeUtil.unwrapAll(fieldType); - if (unwrappedType instanceof GraphQLFieldsContainer) { - return new DataFetchingFieldSelectionSetImpl(executionContext, (GraphQLFieldsContainer) unwrappedType, mergedField); - } else { - // we can only collect fields on object types and interfaces. Scalars, Unions etc... cant be done. - return NOOP; + @Override + public List getFields(String fieldGlobPattern, String... fieldGlobPatterns) { + return ImmutableKit.emptyList(); } - } - - private static GraphQLObjectType asObjectTypeOrNull(GraphQLType unwrappedType) { - return unwrappedType instanceof GraphQLObjectType ? (GraphQLObjectType) unwrappedType : null; - } - - private final FieldCollector fieldCollector = new FieldCollector(); - private final ValuesResolver valuesResolver = new ValuesResolver(); - private final MergedField parentFields; - private final GraphQLSchema graphQLSchema; - private final GraphQLFieldsContainer parentFieldType; - private final Map variables; - private final Map fragmentsByName; + @Override + public Map> getFieldsGroupedByResultKey() { + return ImmutableKit.emptyMap(); + } - private Map selectionSetFields; - private Map selectionSetFieldDefinitions; - private Map> selectionSetFieldArgs; - private Set flattenedFields; + @Override + public Map> getFieldsGroupedByResultKey(String fieldGlobPattern, String... fieldGlobPatterns) { + return ImmutableKit.emptyMap(); + } + }; - private DataFetchingFieldSelectionSetImpl(ExecutionContext executionContext, GraphQLFieldsContainer parentFieldType, MergedField parentFields) { - this(parentFields, parentFieldType, executionContext.getGraphQLSchema(), executionContext.getVariables(), executionContext.getFragmentsByName()); + public static DataFetchingFieldSelectionSet newCollector(GraphQLSchema schema, GraphQLOutputType fieldType, Supplier normalizedFieldSupplier) { + if (!GraphQLTypeUtil.isLeaf(fieldType)) { + return new DataFetchingFieldSelectionSetImpl(normalizedFieldSupplier, schema); + } else { + // we can only collect fields on object types and interfaces and unions. + return NOOP; + } } - public DataFetchingFieldSelectionSetImpl(MergedField parentFields, GraphQLFieldsContainer parentFieldType, GraphQLSchema graphQLSchema, Map variables, Map fragmentsByName) { - this.parentFields = parentFields; - this.graphQLSchema = graphQLSchema; - this.parentFieldType = parentFieldType; - this.variables = variables; - this.fragmentsByName = fragmentsByName; - } + private final Supplier normalizedFieldSupplier; - @Override - public MergedSelectionSet get() { - // by having a .get() method we get lazy evaluation. - computeValuesLazily(); - return MergedSelectionSet.newMergedSelectionSet().subFields(selectionSetFields).build(); - } + private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + private volatile boolean computedValues; + private volatile boolean computedImmediateValues; - @Override - public Map> getArguments() { - computeValuesLazily(); - return selectionSetFieldArgs; - } + // we have multiple entries in this map so that we can do glob matching in multiple ways + // however it needs to be normalised back to a set of unique fields when give back out to + // the caller. + private Map> normalisedSelectionSetFields; + private List immediateFields; + private Set flattenedFieldsForGlobSearching; + private final GraphQLSchema schema; - @Override - public Map getDefinitions() { - computeValuesLazily(); - return selectionSetFieldDefinitions; + private DataFetchingFieldSelectionSetImpl(Supplier normalizedFieldSupplier, GraphQLSchema schema) { + this.schema = schema; + this.normalizedFieldSupplier = normalizedFieldSupplier; } @Override @@ -142,9 +112,11 @@ public boolean contains(String fieldGlobPattern) { if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { return false; } - computeValuesLazily(); + computeValuesLazily(false); + fieldGlobPattern = removeLeadingSlash(fieldGlobPattern); PathMatcher globMatcher = globMatcher(fieldGlobPattern); - for (String flattenedField : flattenedFields) { + for (String flattenedField : flattenedFieldsForGlobSearching) { + flattenedField = osAppropriate(flattenedField); Path path = Paths.get(flattenedField); if (globMatcher.matches(path)) { return true; @@ -153,6 +125,14 @@ public boolean contains(String fieldGlobPattern) { return false; } + private String osAppropriate(String flattenedField) { + if (UNIXY) { + return flattenedField; + } else { + return flattenedField.replace(SEP, "\\"); + } + } + @Override public boolean containsAnyOf(String fieldGlobPattern, String... fieldGlobPatterns) { assertNotNull(fieldGlobPattern); @@ -177,79 +157,184 @@ public boolean containsAllOf(String fieldGlobPattern, String... fieldGlobPattern return true; } - private List mkIterable(String fieldGlobPattern, String[] fieldGlobPatterns) { - List l = new ArrayList<>(); - l.add(fieldGlobPattern); - Collections.addAll(l, fieldGlobPatterns); - return l; + @Override + public List getFields(String fieldGlobPattern, String... fieldGlobPatterns) { + if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { + return emptyList(); + } + computeValuesLazily(false); + + List targetNames = new ArrayList<>(); + for (String flattenedField : flattenedFieldsForGlobSearching) { + for (String globPattern : mkIterable(fieldGlobPattern, fieldGlobPatterns)) { + PathMatcher globMatcher = globMatcher(globPattern); + Path path = Paths.get(flattenedField); + if (globMatcher.matches(path)) { + targetNames.add(flattenedField); + } + } + } + + return toSetSemanticsList(targetNames.stream() + .flatMap(name -> normalisedSelectionSetFields.getOrDefault(name, emptyList()).stream())); } @Override - public SelectedField getField(String fqFieldName) { - computeValuesLazily(); + public List getFields() { + computeValuesLazily(false); + return toSetSemanticsList(normalisedSelectionSetFields.values().stream() + .flatMap(Collection::stream)); + } - MergedField fields = selectionSetFields.get(fqFieldName); - if (fields == null) { - return null; - } - GraphQLFieldDefinition fieldDefinition = selectionSetFieldDefinitions.get(fqFieldName); - Map arguments = selectionSetFieldArgs.get(fqFieldName); - arguments = arguments == null ? emptyMap() : arguments; - return new SelectedFieldImpl(fqFieldName, fields, fieldDefinition, arguments); + private List toSetSemanticsList(Stream stream) { + return ImmutableList.copyOf(stream + .collect(ImmutableSet.toImmutableSet())); } @Override - public List getFields(String fieldGlobPattern) { - if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { - return emptyList(); + public List getImmediateFields() { + computeValuesLazily(true); + return immediateFields; + } + + @Override + public Map> getFieldsGroupedByResultKey() { + return getFields().stream().collect(Collectors.groupingBy(SelectedField::getResultKey)); + } + + @Override + public Map> getFieldsGroupedByResultKey(String fieldGlobPattern, String... fieldGlobPatterns) { + return getFields(fieldGlobPattern, fieldGlobPatterns).stream().collect(Collectors.groupingBy(SelectedField::getResultKey)); + } + + private void computeValuesLazily(boolean immediate) { + if (computedValues) { + return; } - computeValuesLazily(); - List targetNames = new ArrayList<>(); - PathMatcher globMatcher = globMatcher(fieldGlobPattern); - for (String flattenedField : flattenedFields) { - Path path = Paths.get(flattenedField); - if (globMatcher.matches(path)) { - targetNames.add(flattenedField); + // Avoid recomputing the immediate fields if they have already been computed. + if (immediate && computedImmediateValues) { + return; + } + + // this supplier is a once only thread synced call - so do it outside this lock + // if only to have only 1 lock in action at a time + ExecutableNormalizedField currentNormalisedField = normalizedFieldSupplier.get(); + + lock.runLocked(() -> { + if (computedValues) { + return; + } + + if (computedImmediateValues && immediate) { + return; + } + + flattenedFieldsForGlobSearching = new LinkedHashSet<>(); + normalisedSelectionSetFields = new LinkedHashMap<>(); + ImmutableList.Builder immediateFieldsBuilder = ImmutableList.builder(); + traverseSubSelectedFields(currentNormalisedField, immediateFieldsBuilder, "", "", true, immediate); + immediateFields = immediateFieldsBuilder.build(); + computedImmediateValues = true; + computedValues = !immediate; + }); + } + + private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalisedField, ImmutableList.Builder immediateFieldsBuilder, String qualifiedFieldPrefix, String simpleFieldPrefix, boolean firstLevel, boolean immediate) { + List children = currentNormalisedField.getChildren(); + for (ExecutableNormalizedField normalizedSubSelectedField : children) { + String typeQualifiedName = mkTypeQualifiedName(normalizedSubSelectedField); + String simpleName = normalizedSubSelectedField.getName(); + + String globQualifiedName = mkFieldGlobName(qualifiedFieldPrefix, typeQualifiedName); + String globSimpleName = mkFieldGlobName(simpleFieldPrefix, simpleName); + + flattenedFieldsForGlobSearching.add(globQualifiedName); + // put in entries for the simple names - eg `Invoice.payments/Payment.amount` becomes `payments/amount` + flattenedFieldsForGlobSearching.add(globSimpleName); + + SelectedFieldImpl selectedField = new SelectedFieldImpl(globSimpleName, globQualifiedName, normalizedSubSelectedField, schema); + if (firstLevel) { + immediateFieldsBuilder.add(selectedField); + } + normalisedSelectionSetFields.computeIfAbsent(globQualifiedName, newList()).add(selectedField); + normalisedSelectionSetFields.computeIfAbsent(globSimpleName, newList()).add(selectedField); + + if (normalizedSubSelectedField.hasChildren() && !immediate) { + traverseSubSelectedFields(normalizedSubSelectedField, immediateFieldsBuilder, globQualifiedName, globSimpleName, false, false); } } - return targetNames.stream() - .map(this::getField) - .collect(Collectors.toList()); } - @Override - public List getFields() { - computeValuesLazily(); - return flattenedFields.stream() - .map(this::getField) - .collect(Collectors.toList()); + private String removeLeadingSlash(String fieldGlobPattern) { + if (fieldGlobPattern.startsWith(SEP)) { + fieldGlobPattern = fieldGlobPattern.substring(1); + } + return fieldGlobPattern; + } + + private static String mkTypeQualifiedName(ExecutableNormalizedField executableNormalizedField) { + return executableNormalizedField.objectTypeNamesToString() + "." + executableNormalizedField.getName(); + } + + private static String mkFieldGlobName(String fieldPrefix, String fieldName) { + return (!fieldPrefix.isEmpty() ? fieldPrefix + SEP : "") + fieldName; + } + + private static PathMatcher globMatcher(String fieldGlobPattern) { + return FileSystems.getDefault().getPathMatcher("glob:" + fieldGlobPattern); } - private class SelectedFieldImpl implements SelectedField { + private List mkIterable(String fieldGlobPattern, String[] fieldGlobPatterns) { + List l = new ArrayList<>(); + l.add(fieldGlobPattern); + Collections.addAll(l, fieldGlobPatterns); + return l; + } + + @Override + public String toString() { + if (!computedValues) { + return "notComputed"; + } + return String.join("\n", flattenedFieldsForGlobSearching); + } + + private static class SelectedFieldImpl implements SelectedField { + private final String qualifiedName; - private final String name; - private final GraphQLFieldDefinition fieldDefinition; + private final String fullyQualifiedName; private final DataFetchingFieldSelectionSet selectionSet; - private final Map arguments; - - private SelectedFieldImpl(String qualifiedName, MergedField parentFields, GraphQLFieldDefinition fieldDefinition, Map arguments) { - this.qualifiedName = qualifiedName; - this.name = parentFields.getName(); - this.fieldDefinition = fieldDefinition; - this.arguments = arguments; - GraphQLType unwrappedType = GraphQLTypeUtil.unwrapAll(fieldDefinition.getType()); - if (unwrappedType instanceof GraphQLFieldsContainer) { - this.selectionSet = new DataFetchingFieldSelectionSetImpl(parentFields, (GraphQLFieldsContainer) unwrappedType, graphQLSchema, variables, fragmentsByName); - } else { - this.selectionSet = NOOP; + private final ExecutableNormalizedField executableNormalizedField; + private final GraphQLSchema schema; + + private SelectedFieldImpl(String simpleQualifiedName, String fullyQualifiedName, ExecutableNormalizedField executableNormalizedField, GraphQLSchema schema) { + this.schema = schema; + this.qualifiedName = simpleQualifiedName; + this.fullyQualifiedName = fullyQualifiedName; + this.executableNormalizedField = executableNormalizedField; + this.selectionSet = new DataFetchingFieldSelectionSetImpl(() -> executableNormalizedField, schema); + } + + private SelectedField mkParent(ExecutableNormalizedField executableNormalizedField) { + String parentSimpleQualifiedName = beforeLastSlash(qualifiedName); + String parentFullyQualifiedName = beforeLastSlash(fullyQualifiedName); + return executableNormalizedField.getParent() == null ? null : + new SelectedFieldImpl(parentSimpleQualifiedName, parentFullyQualifiedName, executableNormalizedField.getParent(), schema); + } + + private String beforeLastSlash(String name) { + int index = name.lastIndexOf("/"); + if (index > 0) { + return name.substring(0, index); } + return ""; } @Override public String getName() { - return name; + return executableNormalizedField.getName(); } @Override @@ -258,74 +343,87 @@ public String getQualifiedName() { } @Override - public GraphQLFieldDefinition getFieldDefinition() { - return fieldDefinition; + public String getFullyQualifiedName() { + return fullyQualifiedName; } @Override - public Map getArguments() { - return arguments; + public List getFieldDefinitions() { + return executableNormalizedField.getFieldDefinitions(schema); } @Override - public DataFetchingFieldSelectionSet getSelectionSet() { - return selectionSet; + public GraphQLOutputType getType() { + return executableNormalizedField.getType(schema); } - } - private PathMatcher globMatcher(String fieldGlobPattern) { - return FileSystems.getDefault().getPathMatcher("glob:" + fieldGlobPattern); - } - - private void computeValuesLazily() { - synchronized (this) { - if (selectionSetFields != null) { - return; - } - - selectionSetFields = new LinkedHashMap<>(); - selectionSetFieldDefinitions = new LinkedHashMap<>(); - selectionSetFieldArgs = new LinkedHashMap<>(); - flattenedFields = new LinkedHashSet<>(); + @Override + public List getObjectTypes() { + return this.schema.getTypes(executableNormalizedField.getObjectTypeNames()); + } - traverseFields(parentFields, parentFieldType, ""); + @Override + public List getObjectTypeNames() { + return ImmutableList.copyOf(executableNormalizedField.getObjectTypeNames()); } - } - private final static String SEP = "/"; + @Override + public Map getArguments() { + return executableNormalizedField.getResolvedArguments(); + } + @Override + public int getLevel() { + return executableNormalizedField.getLevel(); + } - private void traverseFields(MergedField fieldList, GraphQLFieldsContainer parentFieldType, String fieldPrefix) { + @Override + public boolean isConditional() { + return executableNormalizedField.isConditional(this.schema); + } - FieldCollectorParameters parameters = FieldCollectorParameters.newParameters() - .schema(graphQLSchema) - .objectType(asObjectTypeOrNull(parentFieldType)) - .fragments(fragmentsByName) - .variables(variables) - .build(); + @Override + public String getAlias() { + return executableNormalizedField.getAlias(); + } - MergedSelectionSet collectedFields = fieldCollector.collectFields(parameters, fieldList); - for (Map.Entry entry : collectedFields.getSubFields().entrySet()) { - String fieldName = mkFieldName(fieldPrefix, entry.getKey()); - MergedField collectedFieldList = entry.getValue(); - selectionSetFields.put(fieldName, collectedFieldList); + @Override + public String getResultKey() { + return executableNormalizedField.getResultKey(); + } - Field field = collectedFieldList.getSingleField(); - GraphQLFieldDefinition fieldDef = Introspection.getFieldDef(graphQLSchema, parentFieldType, field.getName()); - GraphQLType unwrappedType = GraphQLTypeUtil.unwrapAll(fieldDef.getType()); - Map argumentValues = valuesResolver.getArgumentValues(fieldDef.getArguments(), field.getArguments(), variables); + @Override + public SelectedField getParentField() { + // lazy + return mkParent(executableNormalizedField); + } - selectionSetFieldArgs.put(fieldName, argumentValues); - selectionSetFieldDefinitions.put(fieldName, fieldDef); - flattenedFields.add(fieldName); + @Override + public DataFetchingFieldSelectionSet getSelectionSet() { + return selectionSet; + } - if (unwrappedType instanceof GraphQLFieldsContainer) { - traverseFields(collectedFieldList, (GraphQLFieldsContainer) unwrappedType, fieldName); + // a selected field is the same as another selected field if it's the same ExecutableNF + @Override + public boolean equals(Object o) { + if (this == o) { + return true; } + if (o == null || getClass() != o.getClass()) { + return false; + } + SelectedFieldImpl that = (SelectedFieldImpl) o; + return executableNormalizedField.equals(that.executableNormalizedField); } - } - private String mkFieldName(String fieldPrefix, String fieldName) { - return (!fieldPrefix.isEmpty() ? fieldPrefix + SEP : "") + fieldName; + @Override + public int hashCode() { + return Objects.hash(executableNormalizedField); + } + + @Override + public String toString() { + return getFullyQualifiedName(); + } } } diff --git a/src/main/java/graphql/schema/DataLoaderWithContext.java b/src/main/java/graphql/schema/DataLoaderWithContext.java new file mode 100644 index 0000000000..3d4224b364 --- /dev/null +++ b/src/main/java/graphql/schema/DataLoaderWithContext.java @@ -0,0 +1,81 @@ +package graphql.schema; + +import graphql.Internal; +import graphql.execution.incremental.AlternativeCallContext; +import graphql.execution.instrumentation.dataloader.ExhaustedDataLoaderDispatchStrategy; +import graphql.execution.instrumentation.dataloader.PerLevelDataLoaderDispatchStrategy; +import org.dataloader.DataLoader; +import org.dataloader.DelegatingDataLoader; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +@Internal +@NullMarked +public class DataLoaderWithContext extends DelegatingDataLoader { + final DataFetchingEnvironment dfe; + final String dataLoaderName; + + public DataLoaderWithContext(DataFetchingEnvironment dfe, String dataLoaderName, DataLoader delegate) { + super(delegate); + this.dataLoaderName = dataLoaderName; + this.dfe = dfe; + } + + // general note: calling super.load() is important, because otherwise the data loader will sometimes called + // later than the dispatch, which results in a hanging DL + + @Override + public CompletableFuture load(K key) { + CompletableFuture result = super.load(key); + newDataLoaderInvocation(); + return result; + } + + @Override + public CompletableFuture load(@NonNull K key, @Nullable Object keyContext) { + CompletableFuture result = super.load(key, keyContext); + newDataLoaderInvocation(); + return result; + } + + @Override + public CompletableFuture> loadMany(List keys) { + CompletableFuture> result = super.loadMany(keys); + newDataLoaderInvocation(); + return result; + } + + @Override + public CompletableFuture> loadMany(List keys, List keyContexts) { + CompletableFuture> result = super.loadMany(keys, keyContexts); + newDataLoaderInvocation(); + return result; + } + + @Override + public CompletableFuture> loadMany(Map keysAndContexts) { + CompletableFuture> result = super.loadMany(keysAndContexts); + newDataLoaderInvocation(); + return result; + } + + private void newDataLoaderInvocation() { + DataFetchingEnvironmentImpl dfeImpl = (DataFetchingEnvironmentImpl) dfe; + DataFetchingEnvironmentImpl.DFEInternalState dfeInternalState = (DataFetchingEnvironmentImpl.DFEInternalState) dfeImpl.toInternal(); + if (dfeInternalState.getDataLoaderDispatchStrategy() instanceof PerLevelDataLoaderDispatchStrategy) { + AlternativeCallContext alternativeCallContext = dfeInternalState.getDeferredCallContext(); + int level = dfeImpl.getLevel(); + ((PerLevelDataLoaderDispatchStrategy) dfeInternalState.dataLoaderDispatchStrategy).newDataLoaderInvocation(level, delegate, alternativeCallContext); + } else if (dfeInternalState.getDataLoaderDispatchStrategy() instanceof ExhaustedDataLoaderDispatchStrategy) { + AlternativeCallContext alternativeCallContext = dfeInternalState.getDeferredCallContext(); + ((ExhaustedDataLoaderDispatchStrategy) dfeInternalState.dataLoaderDispatchStrategy).newDataLoaderInvocation(alternativeCallContext); + } + } + + +} diff --git a/src/main/java/graphql/schema/DefaultGraphqlTypeComparatorRegistry.java b/src/main/java/graphql/schema/DefaultGraphqlTypeComparatorRegistry.java index ba2af3e83a..29e7243c8f 100644 --- a/src/main/java/graphql/schema/DefaultGraphqlTypeComparatorRegistry.java +++ b/src/main/java/graphql/schema/DefaultGraphqlTypeComparatorRegistry.java @@ -1,13 +1,16 @@ package graphql.schema; +import com.google.common.collect.ImmutableMap; import graphql.PublicApi; import java.util.Comparator; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; +import static graphql.schema.GraphQLTypeUtil.unwrapAllAs; import static graphql.schema.GraphqlTypeComparatorEnvironment.newEnvironment; /** @@ -16,7 +19,62 @@ @PublicApi public class DefaultGraphqlTypeComparatorRegistry implements GraphqlTypeComparatorRegistry { - public static final Comparator DEFAULT_COMPARATOR = Comparator.comparing(graphQLSchemaElement -> ((GraphQLNamedSchemaElement) graphQLSchemaElement).getName()); + // This sensible order was taken from the original SchemaPrinter code. It ordered the types in this manner + private static final ImmutableMap, Integer> SENSIBLE_ORDER = + ImmutableMap., Integer>builder() + .put(GraphQLDirective.class, 1) + .put(GraphQLInterfaceType.class, 2) + .put(GraphQLUnionType.class, 3) + .put(GraphQLObjectType.class, 4) + .put(GraphQLEnumType.class, 5) + .put(GraphQLScalarType.class, 6) + .put(GraphQLInputObjectType.class, 7) + .build(); + + /** + * This orders the schema into a sensible grouped order + * + * @return a comparator that allows for sensible grouped order + */ + public static Comparator sensibleGroupedOrder() { + return (o1, o2) -> { + o1 = unwrapElement(o1); + o2 = unwrapElement(o2); + int i1 = SENSIBLE_ORDER.getOrDefault(o1.getClass(), 0); + int i2 = SENSIBLE_ORDER.getOrDefault(o2.getClass(), 0); + int rc = i1 - i2; + if (rc == 0) { + rc = compareByName(o1, o2); + } + return rc; + }; + } + + private static GraphQLSchemaElement unwrapElement(GraphQLSchemaElement element) { + if (element instanceof GraphQLType) { + GraphQLType castElement = (GraphQLType) element; + // We need to unwrap as GraphQLType to support GraphQLTypeReferences which is not an GraphQLUnmodifiedType + // as returned by unwrapAll. + castElement = unwrapAllAs(castElement); + element = castElement; + } + return element; + } + + private static int compareByName(GraphQLSchemaElement o1, GraphQLSchemaElement o2) { + return Comparator.comparing(element -> { + if (element instanceof GraphQLType) { + element = unwrapElement((GraphQLType) element); + } + if (element instanceof GraphQLNamedSchemaElement) { + return ((GraphQLNamedSchemaElement) element).getName(); + } else { + return Objects.toString(element); + } + }).compare(o1, o2); + } + + public static final Comparator DEFAULT_COMPARATOR = sensibleGroupedOrder(); private Map> registry = new HashMap<>(); @@ -58,7 +116,7 @@ public static Builder newComparators() { public static class Builder { - private Map> registry = new HashMap<>(); + private final Map> registry = new HashMap<>(); /** * Registers a {@code Comparator} with an environment to control its permitted scope of operation. diff --git a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java index c33351e768..91bc2fe351 100644 --- a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java @@ -1,7 +1,7 @@ package graphql.schema; +import graphql.GraphQLContext; import graphql.PublicApi; -import graphql.cachecontrol.CacheControl; import graphql.execution.ExecutionId; import graphql.execution.ExecutionStepInfo; import graphql.execution.MergedField; @@ -12,6 +12,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -38,88 +40,115 @@ public DelegatingDataFetchingEnvironment(DataFetchingEnvironment delegateEnviron this.delegateEnvironment = delegateEnvironment; } + @Override public T getSource() { return delegateEnvironment.getSource(); } + @Override public Map getArguments() { return delegateEnvironment.getArguments(); } + @Override public boolean containsArgument(String name) { return delegateEnvironment.containsArgument(name); } + @Override public T getArgument(String name) { return delegateEnvironment.getArgument(name); } + @Override public T getArgumentOrDefault(String name, T defaultValue) { return delegateEnvironment.getArgumentOrDefault(name, defaultValue); } + @Deprecated(since = "2022-04-17") + @Override public T getContext() { return delegateEnvironment.getContext(); } - public T getLocalContext() { + @Override + public @NonNull GraphQLContext getGraphQlContext() { + return delegateEnvironment.getGraphQlContext(); + } + + @Override + public @Nullable T getLocalContext() { return delegateEnvironment.getLocalContext(); } + @Override public T getRoot() { return delegateEnvironment.getRoot(); } + @Override public GraphQLFieldDefinition getFieldDefinition() { return delegateEnvironment.getFieldDefinition(); } - @Deprecated + @Deprecated(since = "2019-10-07") + @Override public List getFields() { return delegateEnvironment.getFields(); } + @Override public MergedField getMergedField() { return delegateEnvironment.getMergedField(); } + @Override public Field getField() { return delegateEnvironment.getField(); } + @Override public GraphQLOutputType getFieldType() { return delegateEnvironment.getFieldType(); } + @Override public ExecutionStepInfo getExecutionStepInfo() { return delegateEnvironment.getExecutionStepInfo(); } + @Override public GraphQLType getParentType() { return delegateEnvironment.getParentType(); } + @Override public GraphQLSchema getGraphQLSchema() { return delegateEnvironment.getGraphQLSchema(); } + @Override public Map getFragmentsByName() { return delegateEnvironment.getFragmentsByName(); } + @Override public ExecutionId getExecutionId() { return delegateEnvironment.getExecutionId(); } + @Override public DataFetchingFieldSelectionSet getSelectionSet() { return delegateEnvironment.getSelectionSet(); } + @Override public QueryDirectives getQueryDirectives() { return delegateEnvironment.getQueryDirectives(); } - public DataLoader getDataLoader(String dataLoaderName) { + @Override + public @Nullable DataLoader getDataLoader(String dataLoaderName) { return delegateEnvironment.getDataLoader(dataLoaderName); } @@ -133,19 +162,23 @@ public Locale getLocale() { return delegateEnvironment.getLocale(); } - public CacheControl getCacheControl() { - return delegateEnvironment.getCacheControl(); - } - + @Override public OperationDefinition getOperationDefinition() { return delegateEnvironment.getOperationDefinition(); } + @Override public Document getDocument() { return delegateEnvironment.getDocument(); } + @Override public Map getVariables() { return delegateEnvironment.getVariables(); } + + @Override + public Object toInternal() { + return delegateEnvironment.toInternal(); + } } diff --git a/src/main/java/graphql/schema/FieldCoordinates.java b/src/main/java/graphql/schema/FieldCoordinates.java index 6a28e8e61d..a8a048a72f 100644 --- a/src/main/java/graphql/schema/FieldCoordinates.java +++ b/src/main/java/graphql/schema/FieldCoordinates.java @@ -1,5 +1,6 @@ package graphql.schema; +import graphql.AssertException; import graphql.PublicApi; import java.util.Objects; @@ -14,12 +15,14 @@ @PublicApi public class FieldCoordinates { + private final boolean systemCoordinates; private final String typeName; private final String fieldName; - private FieldCoordinates(String typeName, String fieldName) { + private FieldCoordinates(String typeName, String fieldName, boolean systemCoordinates) { this.typeName = typeName; this.fieldName = fieldName; + this.systemCoordinates = systemCoordinates; } public String getTypeName() { @@ -30,6 +33,28 @@ public String getFieldName() { return fieldName; } + public boolean isSystemCoordinates() { + return systemCoordinates; + } + + /** + * Checks the validity of the field coordinate names. The validity checks vary by coordinate type. Standard + * coordinates validate both the {@code typeName} and {@code fieldName}, while system coordinates do not have + * a parent so they only validate the {@code fieldName}. + * + * @throws AssertException if the coordinates are NOT valid; otherwise, returns normally. + */ + public void assertValidNames() throws AssertException { + if (systemCoordinates) { + assertTrue((null != fieldName) && + fieldName.startsWith("__"), () -> "Only __ system fields can be addressed without a parent type"); + assertValidName(fieldName); + } else { + assertValidName(typeName); + assertValidName(fieldName); + } + } + @Override public boolean equals(Object o) { if (this == o) { @@ -45,12 +70,15 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(typeName, fieldName); + int result = 1; + result = 31 * result + Objects.hashCode(typeName); + result = 31 * result + Objects.hashCode(fieldName); + return result; } @Override public String toString() { - return typeName + ':' + fieldName + '\''; + return typeName + '.' + fieldName; } /** @@ -62,7 +90,7 @@ public String toString() { * @return new field coordinates represented by the two parameters */ public static FieldCoordinates coordinates(GraphQLFieldsContainer parentType, GraphQLFieldDefinition fieldDefinition) { - return new FieldCoordinates(parentType.getName(), fieldDefinition.getName()); + return new FieldCoordinates(parentType.getName(), fieldDefinition.getName(), false); } /** @@ -74,9 +102,19 @@ public static FieldCoordinates coordinates(GraphQLFieldsContainer parentType, Gr * @return new field coordinates represented by the two parameters */ public static FieldCoordinates coordinates(String parentType, String fieldName) { - assertValidName(parentType); - assertValidName(fieldName); - return new FieldCoordinates(parentType, fieldName); + return new FieldCoordinates(parentType, fieldName, false); + } + + /** + * Creates new field coordinates + * + * @param parentType the container of the field + * @param fieldName the field name + * + * @return new field coordinates represented by the two parameters + */ + public static FieldCoordinates coordinates(GraphQLFieldsContainer parentType, String fieldName) { + return coordinates(parentType.getName(), fieldName); } /** @@ -88,8 +126,6 @@ public static FieldCoordinates coordinates(String parentType, String fieldName) * @return the coordinates */ public static FieldCoordinates systemCoordinates(String fieldName) { - assertTrue(fieldName.startsWith("__"), "Only __ system fields can be addressed without a parent type"); - assertValidName(fieldName); - return new FieldCoordinates(null, fieldName); + return new FieldCoordinates(null, fieldName, true); } } diff --git a/src/main/java/graphql/schema/GraphQLAppliedDirective.java b/src/main/java/graphql/schema/GraphQLAppliedDirective.java new file mode 100644 index 0000000000..ca270fa0fd --- /dev/null +++ b/src/main/java/graphql/schema/GraphQLAppliedDirective.java @@ -0,0 +1,235 @@ +package graphql.schema; + + +import com.google.common.collect.ImmutableList; +import graphql.PublicApi; +import graphql.language.Directive; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; +import java.util.function.Consumer; +import java.util.function.UnaryOperator; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertValidName; +import static graphql.util.FpKit.getByName; + +/** + * An applied directive represents the instance of a directive that is applied to a schema element, + * as opposed to it definition + *

    + * A directive has a definition, that is what arguments it takes, and it can also be applied + * to other schema elements. Originally graphql-java re-used the {@link GraphQLDirective} and {@link GraphQLArgument} + * classes to do both purposes. This was a modelling mistake. New {@link GraphQLAppliedDirective} and {@link GraphQLAppliedDirectiveArgument} + * classes have been introduced to better model when a directive is applied to a schema element, + * as opposed to its schema definition itself. + *

    + * See https://graphql.org/learn/queries/#directives for more details on the concept. + */ +@PublicApi +public class GraphQLAppliedDirective implements GraphQLNamedSchemaElement { + + private final String name; + private final ImmutableList arguments; + private final Directive definition; + + public static final String CHILD_ARGUMENTS = "arguments"; + + private GraphQLAppliedDirective(String name, Directive definition, List arguments) { + assertValidName(name); + assertNotNull(arguments, "arguments can't be null"); + this.name = name; + this.arguments = ImmutableList.copyOf(arguments); + this.definition = definition; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getDescription() { + return null; + } + + public List getArguments() { + return arguments; + } + + public GraphQLAppliedDirectiveArgument getArgument(String name) { + for (GraphQLAppliedDirectiveArgument argument : arguments) { + if (argument.getName().equals(name)) { + return argument; + } + } + return null; + } + + public Directive getDefinition() { + return definition; + } + + @Override + public String toString() { + return new StringJoiner(", ", GraphQLAppliedDirective.class.getSimpleName() + "[", "]") + .add("name='" + name + "'") + .add("arguments=" + arguments) + .add("definition=" + definition) + .toString(); + } + + /** + * This helps you transform the current GraphQLDirective into another one by starting a builder with all + * the current values and allows you to transform it how you want. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new field based on calling build on that builder + */ + public GraphQLAppliedDirective transform(Consumer builderConsumer) { + Builder builder = newDirective(this); + builderConsumer.accept(builder); + return builder.build(); + } + + @Override + public GraphQLSchemaElement copy() { + return newDirective(this).build(); + } + + + @Override + public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { + return visitor.visitGraphQLAppliedDirective(this, context); + } + + @Override + public List getChildren() { + return ImmutableList.copyOf(arguments); + } + + @Override + public SchemaElementChildrenContainer getChildrenWithTypeReferences() { + return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() + .children(CHILD_ARGUMENTS, arguments) + .build(); + } + + @Override + public GraphQLAppliedDirective withNewChildren(SchemaElementChildrenContainer newChildren) { + return transform(builder -> + builder.replaceArguments(newChildren.getChildren(CHILD_ARGUMENTS)) + ); + } + + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + + public static Builder newDirective() { + return new Builder(); + } + + public static Builder newDirective(GraphQLAppliedDirective existing) { + return new Builder(existing); + } + + public static class Builder extends GraphqlTypeBuilder { + + private final Map arguments = new LinkedHashMap<>(); + private Directive definition; + + public Builder() { + } + + public Builder(GraphQLAppliedDirective existing) { + this.name = existing.getName(); + this.description = existing.getDescription(); + this.arguments.putAll(getByName(existing.getArguments(), GraphQLAppliedDirectiveArgument::getName)); + } + + public Builder argument(GraphQLAppliedDirectiveArgument argument) { + assertNotNull(argument, "argument must not be null"); + arguments.put(argument.getName(), argument); + return this; + } + + public Builder replaceArguments(List arguments) { + assertNotNull(arguments, "arguments must not be null"); + this.arguments.clear(); + for (GraphQLAppliedDirectiveArgument argument : arguments) { + this.arguments.put(argument.getName(), argument); + } + return this; + } + + /** + * Take an argument builder in a function definition and apply. Can be used in a jdk8 lambda + * e.g.: + *

    +         *     {@code
    +         *      argument(a -> a.name("argumentName"))
    +         *     }
    +         * 
    + * + * @param builderFunction a supplier for the builder impl + * + * @return this + */ + public Builder argument(UnaryOperator builderFunction) { + GraphQLAppliedDirectiveArgument.Builder builder = GraphQLAppliedDirectiveArgument.newArgument(); + builder = builderFunction.apply(builder); + return argument(builder); + } + + /** + * Same effect as the argument(GraphQLAppliedDirectiveArgument). Builder.build() is called + * from within + * + * @param builder an un-built/incomplete GraphQLAppliedDirectiveArgument + * + * @return this + */ + public Builder argument(GraphQLAppliedDirectiveArgument.Builder builder) { + return argument(builder.build()); + } + + /** + * This is used to clear all the arguments in the builder so far. + * + * @return the builder + */ + public Builder clearArguments() { + arguments.clear(); + return this; + } + + + public Builder definition(Directive definition) { + this.definition = definition; + return this; + } + + public GraphQLAppliedDirective build() { + return new GraphQLAppliedDirective(name, this.definition, sort(arguments, GraphQLAppliedDirective.class, GraphQLAppliedDirectiveArgument.class)); + } + } +} diff --git a/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java b/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java new file mode 100644 index 0000000000..4446894ec9 --- /dev/null +++ b/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java @@ -0,0 +1,262 @@ +package graphql.schema; + + +import graphql.Assert; +import graphql.GraphQLContext; +import graphql.PublicApi; +import graphql.language.Argument; +import graphql.language.Value; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertValidName; +import static graphql.execution.ValuesResolver.getInputValueImpl; + +/** + * This represents the argument values that can be placed on an {@link GraphQLAppliedDirective}. + *

    + * You can think of them as 'instances' of {@link GraphQLArgument}, when applied to a directive on a schema element + */ +@PublicApi +public class GraphQLAppliedDirectiveArgument implements GraphQLNamedSchemaElement, GraphQLInputSchemaElement { + + private final String name; + private final InputValueWithState value; + private final GraphQLInputType originalType; + private GraphQLInputType replacedType; + + private final Argument definition; + + + public static final String CHILD_TYPE = "type"; + + private GraphQLAppliedDirectiveArgument(String name, + InputValueWithState value, + GraphQLInputType type, + Argument definition + ) { + assertValidName(name); + this.name = name; + this.value = assertNotNull(value); + this.originalType = assertNotNull(type); + this.definition = definition; + } + + @Override + public String getName() { + return name; + } + + public GraphQLInputType getType() { + return replacedType != null ? replacedType : originalType; + } + + void replaceType(GraphQLInputType type) { + this.replacedType = type; + } + + public boolean hasSetValue() { + return value.isSet(); + } + + /** + * @return an input value with state for an applied directive argument + */ + public @NonNull InputValueWithState getArgumentValue() { + return value; + } + + /** + * This will give out an internal java value based on the semantics captured + * in the {@link InputValueWithState} from {@link GraphQLAppliedDirectiveArgument#getArgumentValue()} + * + * Note : You MUST only call this on a {@link GraphQLAppliedDirectiveArgument} that is part of a fully formed schema. We need + * all the types to be resolved in order for this work correctly. + * + * Note: This method will return null if the value is not set or explicitly set to null. If you want to know the difference + * when "not set" and "set to null" then you can't use this method. Rather you should use {@link GraphQLAppliedDirectiveArgument#getArgumentValue()} + * and use the {@link InputValueWithState#isNotSet()} methods to decide how to handle those values. + * + * @param the type you want it cast as + * + * @return a value of type T which is the java value of the argument + */ + public T getValue() { + return getInputValueImpl(getType(), value, GraphQLContext.getDefault(), Locale.getDefault()); + } + + /** + * This will always be null. Applied arguments have no description + * + * @return always null + */ + public @Nullable String getDescription() { + return null; + } + + public Argument getDefinition() { + return definition; + } + + @Override + public List getChildren() { + List children = new ArrayList<>(); + children.add(getType()); + return children; + } + + @Override + public SchemaElementChildrenContainer getChildrenWithTypeReferences() { + return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() + .child(CHILD_TYPE, originalType) + .build(); + } + + @Override + public GraphQLAppliedDirectiveArgument withNewChildren(SchemaElementChildrenContainer newChildren) { + return transform(builder -> + builder.type(newChildren.getChildOrNull(CHILD_TYPE)) + ); + } + + @Override + public GraphQLSchemaElement copy() { + return newArgument(this).build(); + } + + + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + + /** + * This helps you transform the current GraphQLArgument into another one by starting a builder with all + * the current values and allows you to transform it how you want. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new field based on calling build on that builder + */ + public GraphQLAppliedDirectiveArgument transform(Consumer builderConsumer) { + Builder builder = newArgument(this); + builderConsumer.accept(builder); + return builder.build(); + } + + public static Builder newArgument() { + return new Builder(); + } + + public static Builder newArgument(GraphQLAppliedDirectiveArgument existing) { + return new Builder(existing); + } + + @Override + public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { + return visitor.visitGraphQLAppliedDirectiveArgument(this, context); + } + + @Override + public String toString() { + return "GraphQLAppliedDirectiveArgument{" + + "name='" + name + '\'' + + ", type=" + getType() + + ", value=" + value + + '}'; + } + + public static class Builder extends GraphqlTypeBuilder { + + private InputValueWithState value = InputValueWithState.NOT_SET; + private Argument definition; + private GraphQLInputType type; + + public Builder() { + } + + public Builder(GraphQLAppliedDirectiveArgument existing) { + this.name = existing.getName(); + this.value = existing.getArgumentValue(); + this.type = existing.getType(); + } + + public Builder type(GraphQLInputType type) { + this.type = assertNotNull(type); + return this; + } + + public Builder definition(Argument definition) { + this.definition = definition; + return this; + } + + /** + * Sets a literal AST value as the arguments value + * + * @param value can't be null as a `null` is represented a @{@link graphql.language.NullValue} Literal + * + * @return this builder + */ + public Builder valueLiteral(@NonNull Value value) { + this.value = InputValueWithState.newLiteralValue(value); + return this; + } + + /** + * @param value values can be null to represent null value + * + * @return this builder + */ + public Builder valueProgrammatic(@Nullable Object value) { + this.value = InputValueWithState.newExternalValue(value); + return this; + } + + public Builder inputValueWithState(@NonNull InputValueWithState value) { + this.value = Assert.assertNotNull(value); + return this; + } + + /** + * Removes the value to represent a missing value (which is different from null) + * + * @return this builder + */ + public Builder clearValue() { + this.value = InputValueWithState.NOT_SET; + return this; + } + + + public GraphQLAppliedDirectiveArgument build() { + + return new GraphQLAppliedDirectiveArgument( + name, + value, + type, + definition + ); + } + } +} diff --git a/src/main/java/graphql/schema/GraphQLArgument.java b/src/main/java/graphql/schema/GraphQLArgument.java index 999d7c42c7..924cdf1198 100644 --- a/src/main/java/graphql/schema/GraphQLArgument.java +++ b/src/main/java/graphql/schema/GraphQLArgument.java @@ -1,98 +1,78 @@ package graphql.schema; -import graphql.Internal; +import graphql.DirectivesUtil; +import graphql.GraphQLContext; import graphql.PublicApi; import graphql.language.InputValueDefinition; -import graphql.util.FpKit; +import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertValidName; +import static graphql.execution.ValuesResolver.getInputValueImpl; /** - * This defines an argument that can be supplied to a graphql field (via {@link graphql.schema.GraphQLFieldDefinition}. - * + * This defines an argument that can be supplied to a graphql field (via {@link GraphQLFieldDefinition}. + *

    * Fields can be thought of as "functions" that take arguments and return a value. - * - * See http://graphql.org/learn/queries/#arguments for more details on the concept. - * - * {@link graphql.schema.GraphQLArgument} is used in two contexts, one context is graphql queries where it represents the arguments that can be + *

    + * See https://graphql.org/learn/queries/#arguments for more details on the concept. + *

    + * {@link GraphQLArgument} is used in two contexts, one context is graphql queries where it represents the arguments that can be * set on a field and the other is in Schema Definition Language (SDL) where it can be used to represent the argument value instances - * that have been supplied on a {@link graphql.schema.GraphQLDirective}. - * + * that have been supplied on a {@link GraphQLDirective}. + *

    * The difference is the 'value' and 'defaultValue' properties. In a query argument, the 'value' is never in the GraphQLArgument * object but rather in the AST direct or in the query variables map and the 'defaultValue' represents a value to use if both of these are * not present. You can think of them like a descriptor of what shape an argument might have. - * - * However with directives on SDL elements, the value is specified in AST only and transferred into the GraphQLArgument object and the + *

    + * However, with directives on SDL elements, the value is specified in AST only and transferred into the GraphQLArgument object and the * 'defaultValue' comes instead from the directive definition elsewhere in the SDL. You can think of them as 'instances' of arguments, their shape and their * specific value on that directive. + *

    + * Originally graphql-java re-used the {@link GraphQLDirective} and {@link GraphQLArgument} + * classes to do both purposes. This was a modelling mistake. New {@link GraphQLAppliedDirective} and {@link GraphQLAppliedDirectiveArgument} + * classes have been introduced to better model when a directive is applied to a schema element, + * as opposed to its schema definition itself. */ @PublicApi public class GraphQLArgument implements GraphQLNamedSchemaElement, GraphQLInputValueDefinition { private final String name; private final String description; + private final String deprecationReason; private final GraphQLInputType originalType; - private final Object value; - private final Object defaultValue; - private final InputValueDefinition definition; - private final List directives; - private GraphQLInputType replacedType; - public static final String CHILD_DIRECTIVES = "directives"; - public static final String CHILD_TYPE = "type"; + private final InputValueWithState defaultValue; + private final InputValueWithState value; - /** - * @param name the arg name - * @param description the arg description - * @param type the arg type - * @param defaultValue the default value - * - * @deprecated use the {@link #newArgument()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLArgument(String name, String description, GraphQLInputType type, Object defaultValue) { - this(name, description, type, defaultValue, null); - } + private final InputValueDefinition definition; + private final DirectivesUtil.DirectivesHolder directivesHolder; - /** - * @param name the arg name - * @param type the arg type - * - * @deprecated use the {@link #newArgument()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLArgument(String name, GraphQLInputType type) { - this(name, null, type, null, null); - } - /** - * @param name the arg name - * @param description the arg description - * @param type the arg type - * @param defaultValue the default value - * @param definition the AST definition - * - * @deprecated use the {@link #newArgument()} builder pattern instead, as this constructor will be made private in a future version. - */ - public GraphQLArgument(String name, String description, GraphQLInputType type, Object defaultValue, InputValueDefinition definition) { - this(name, description, type, defaultValue, null, definition, Collections.emptyList()); - } + public static final String CHILD_TYPE = "type"; + - private GraphQLArgument(String name, String description, GraphQLInputType type, Object defaultValue, Object value, InputValueDefinition definition, List directives) { + private GraphQLArgument(String name, + String description, + GraphQLInputType type, + InputValueWithState defaultValue, + InputValueWithState value, + InputValueDefinition definition, + List directives, + List appliedDirectives, + String deprecationReason) { assertValidName(name); assertNotNull(type, "type can't be null"); this.name = name; @@ -101,7 +81,8 @@ private GraphQLArgument(String name, String description, GraphQLInputType type, this.defaultValue = defaultValue; this.value = value; this.definition = definition; - this.directives = directives; + this.deprecationReason = deprecationReason; + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); } @@ -119,45 +100,135 @@ public GraphQLInputType getType() { } /** - * An argument has a default value when it represents the logical argument structure that a {@link graphql.schema.GraphQLFieldDefinition} - * can have and it can also have a default value when used in a schema definition language (SDL) where the - * default value comes via the directive definition. + * The default value of this argument. * - * @return the default value of an argument + * @return a {@link InputValueWithState} that represents the arguments default value */ - public Object getDefaultValue() { + public @NonNull InputValueWithState getArgumentDefaultValue() { return defaultValue; } + public boolean hasSetDefaultValue() { + return defaultValue.isSet(); + } + + public boolean hasSetValue() { + return value.isSet(); + } + + /** - * An argument ONLY has a value when its used in a schema definition language (SDL) context as the arguments to SDL directives. The method - * should not be called in a query context, but rather the AST / variables map should be used to obtain an arguments value. + * This is only used for applied directives, that is when this argument is on a {@link GraphQLDirective} applied to a schema or query element + * + * @return an input value with state for an applied directive * - * @return the argument value + * @deprecated use {@link GraphQLAppliedDirectiveArgument} instead */ - public Object getValue() { + @Deprecated(since = "2022-02-24") + public @NonNull InputValueWithState getArgumentValue() { return value; } + /** + * This static helper method will give out a java value based on the semantics captured + * in the {@link InputValueWithState} from {@link GraphQLArgument#getArgumentValue()} + * + * Note : You MUST only call this on a {@link GraphQLArgument} that is part of a fully formed schema. We need + * all of the types to be resolved in order for this work correctly. + * + * Note: This method will return null if the value is not set or explicitly set to null. If you you to know the difference + * when "not set" and "set to null" then you cant use this method. Rather you should use {@link GraphQLArgument#getArgumentValue()} + * and use the {@link InputValueWithState#isNotSet()} methods to decide how to handle those values. + * + * @param argument the fully formed {@link GraphQLArgument} + * @param the type you want it cast as + * + * @return a value of type T which is the java value of the argument + * + * @deprecated use {@link GraphQLAppliedDirectiveArgument} instead + */ + @Deprecated(since = "2022-02-24") + public static T getArgumentValue(GraphQLArgument argument) { + return getInputValueImpl(argument.getType(), argument.getArgumentValue(), GraphQLContext.getDefault(), Locale.getDefault()); + } + + /** + * This static helper method will give out a java value based on the semantics captured + * in the {@link InputValueWithState} from {@link GraphQLArgument#getArgumentDefaultValue()} + * + * Note : You MUST only call this on a {@link GraphQLArgument} that is part of a fully formed schema. We need + * all of the types to be resolved in order for this work correctly. + * + * Note: This method will return null if the value is not set or explicitly set to null. If you you to know the difference + * when "not set" and "set to null" then you cant use this method. Rather you should use {@link GraphQLArgument#getArgumentDefaultValue()} + * and use the {@link InputValueWithState#isNotSet()} methods to decide how to handle those values. + * + * @param argument the fully formed {@link GraphQLArgument} + * @param the type you want it cast as + * + * @return a value of type T which is the java value of the argument default + */ + public static T getArgumentDefaultValue(GraphQLArgument argument) { + return getInputValueImpl(argument.getType(), argument.getArgumentDefaultValue(), GraphQLContext.getDefault(), Locale.getDefault()); + } + public String getDescription() { return description; } + public String getDeprecationReason() { + return deprecationReason; + } + + public boolean isDeprecated() { + return deprecationReason != null; + } + public InputValueDefinition getDefinition() { return definition; } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); } + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); + } @Override public List getChildren() { List children = new ArrayList<>(); children.add(getType()); - children.addAll(directives); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); return children; } @@ -165,8 +236,9 @@ public List getChildren() { @Override public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() - .children(CHILD_DIRECTIVES, directives) .child(CHILD_TYPE, originalType) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .build(); } @@ -174,9 +246,34 @@ public SchemaElementChildrenContainer getChildrenWithTypeReferences() { public GraphQLArgument withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> builder.type(newChildren.getChildOrNull(CHILD_TYPE)) - .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES))); + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) + ); + } + + @Override + public GraphQLSchemaElement copy() { + return newArgument(this).build(); + } + + + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); } + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + /** * This helps you transform the current GraphQLArgument into another one by starting a builder with all * the current values and allows you to transform it how you want. @@ -214,13 +311,27 @@ public String toString() { '}'; } - public static class Builder extends GraphqlTypeBuilder { + /** + * This method can be used to turn an argument that was being use as an applied argument into one. + * + * @return an {@link GraphQLAppliedDirectiveArgument} + */ + public GraphQLAppliedDirectiveArgument toAppliedArgument() { + return GraphQLAppliedDirectiveArgument.newArgument() + .name(name) + .type(getType()) + .inputValueWithState(value) + .build(); + } + + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private GraphQLInputType type; - private Object defaultValue; - private Object value; + private InputValueWithState defaultValue = InputValueWithState.NOT_SET; + private InputValueWithState value = InputValueWithState.NOT_SET; + private String deprecationReason; private InputValueDefinition definition; - private final Map directives = new LinkedHashMap<>(); + public Builder() { } @@ -228,91 +339,169 @@ public Builder() { public Builder(GraphQLArgument existing) { this.name = existing.getName(); this.type = existing.originalType; - this.value = existing.getValue(); - this.defaultValue = existing.getDefaultValue(); + this.value = existing.getArgumentValue(); + this.defaultValue = existing.defaultValue; this.description = existing.getDescription(); this.definition = existing.getDefinition(); - this.directives.putAll(FpKit.getByName(existing.getDirectives(), GraphQLDirective::getName)); + this.deprecationReason = existing.deprecationReason; + copyExistingDirectives(existing); } - @Override - public Builder name(String name) { - super.name(name); + public Builder definition(InputValueDefinition definition) { + this.definition = definition; return this; } - @Override - public Builder description(String description) { - super.description(description); + public Builder deprecate(String deprecationReason) { + this.deprecationReason = deprecationReason; return this; } - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); + public Builder type(GraphQLInputType type) { + this.type = type; return this; } - public Builder definition(InputValueDefinition definition) { - this.definition = definition; + /** + * A legacy method that sets a default value into the argument + * + * @param defaultValue a default value + * + * @return this builder + * + * @deprecated use {@link #defaultValueLiteral(Value)} or {@link #defaultValueProgrammatic(Object)} + */ + @Deprecated(since = "2021-05-10") + public Builder defaultValue(Object defaultValue) { + this.defaultValue = InputValueWithState.newInternalValue(defaultValue); return this; } + /** + * @param defaultValue can't be null as a `null` is represented a @{@link graphql.language.NullValue} Literal + * + * @return this builder + */ + public Builder defaultValueLiteral(@NonNull Value defaultValue) { + this.defaultValue = InputValueWithState.newLiteralValue(defaultValue); + return this; + } - public Builder type(GraphQLInputType type) { - this.type = type; + /** + * @param defaultValue Can be null to represent null value + * + * @return this builder + */ + public Builder defaultValueProgrammatic(@Nullable Object defaultValue) { + this.defaultValue = InputValueWithState.newExternalValue(defaultValue); return this; } - public Builder defaultValue(Object defaultValue) { - this.defaultValue = defaultValue; + /** + * Removes the defaultValue to represent a missing default value (which is different from null) + * + * @return this builder + */ + public Builder clearDefaultValue() { + this.defaultValue = InputValueWithState.NOT_SET; return this; } - public Builder value(Object value) { - this.value = value; + /** + * A legacy method for setting an arguments value + * + * @param value the argument value + * + * @return this builder + * + * @deprecated use {@link #valueLiteral(Value)} or {@link #valueProgrammatic(Object)} + */ + @Deprecated(since = "2021-05-10") + public Builder value(@Nullable Object value) { + this.value = InputValueWithState.newInternalValue(value); return this; } - public Builder withDirectives(GraphQLDirective... directives) { - assertNotNull(directives, "directives can't be null"); - for (GraphQLDirective directive : directives) { - withDirective(directive); - } + /** + * Sets a literal AST value as the arguments value + * + * @param value can't be null as a `null` is represented a @{@link graphql.language.NullValue} Literal + * + * @return this builder + * + * @deprecated use {@link GraphQLAppliedDirectiveArgument} methods instead + */ + @Deprecated(since = "2022-02-24") + public Builder valueLiteral(@NonNull Value value) { + this.value = InputValueWithState.newLiteralValue(value); return this; } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); + /** + * @param value values can be null to represent null value + * + * @return this builder + * + * @deprecated use {@link GraphQLAppliedDirectiveArgument} methods instead + */ + @Deprecated(since = "2022-02-24") + public Builder valueProgrammatic(@Nullable Object value) { + this.value = InputValueWithState.newExternalValue(value); return this; } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } + /** + * Removes the value to represent a missing value (which is different from null) + * + * @return this builder + * + * @deprecated use {@link GraphQLAppliedDirectiveArgument} methods instead + */ + @Deprecated(since = "2022-02-24") + public Builder clearValue() { + this.value = InputValueWithState.NOT_SET; return this; } + // -- the following are repeated to avoid a binary incompatibility problem -- + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); + } + + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); + } + + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); + } + + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); } + @Override + public Builder description(String description) { + return super.description(description); + } public GraphQLArgument build() { + assertNotNull(type, "type can't be null"); + return new GraphQLArgument( name, description, @@ -320,7 +509,9 @@ public GraphQLArgument build() { defaultValue, value, definition, - sort(directives, GraphQLArgument.class, GraphQLDirective.class) + sort(directives, GraphQLArgument.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), + deprecationReason ); } } diff --git a/src/main/java/graphql/schema/GraphQLCodeRegistry.java b/src/main/java/graphql/schema/GraphQLCodeRegistry.java index 38b032a394..26574b819c 100644 --- a/src/main/java/graphql/schema/GraphQLCodeRegistry.java +++ b/src/main/java/graphql/schema/GraphQLCodeRegistry.java @@ -1,5 +1,7 @@ package graphql.schema; +import graphql.Assert; +import graphql.Internal; import graphql.PublicApi; import graphql.schema.visibility.GraphqlFieldVisibility; @@ -9,7 +11,6 @@ import java.util.function.Consumer; import static graphql.Assert.assertNotNull; -import static graphql.Assert.assertTrue; import static graphql.Assert.assertValidName; import static graphql.schema.DataFetcherFactoryEnvironment.newDataFetchingFactoryEnvironment; import static graphql.schema.FieldCoordinates.coordinates; @@ -20,23 +21,25 @@ * The {@link graphql.schema.GraphQLCodeRegistry} holds that execution code that is associated with graphql types, namely * the {@link graphql.schema.DataFetcher}s associated with fields, the {@link graphql.schema.TypeResolver}s associated with * abstract types and the {@link graphql.schema.visibility.GraphqlFieldVisibility} - * + *

    * For legacy reasons these code functions can still exist on the original type objects but this will be removed in a future version. Once * removed the type system objects will be able have proper hashCode/equals methods and be checked for proper equality. */ @PublicApi public class GraphQLCodeRegistry { - private final Map dataFetcherMap; - private final Map systemDataFetcherMap; + private final Map> dataFetcherMap; + private final Map> systemDataFetcherMap; private final Map typeResolverMap; private final GraphqlFieldVisibility fieldVisibility; - - private GraphQLCodeRegistry(Map dataFetcherMap, Map systemDataFetcherMap, Map typeResolverMap, GraphqlFieldVisibility fieldVisibility) { - this.dataFetcherMap = dataFetcherMap; - this.systemDataFetcherMap = systemDataFetcherMap; - this.typeResolverMap = typeResolverMap; - this.fieldVisibility = fieldVisibility; + private final DataFetcherFactory defaultDataFetcherFactory; + + private GraphQLCodeRegistry(Builder builder) { + this.dataFetcherMap = builder.dataFetcherMap; + this.systemDataFetcherMap = builder.systemDataFetcherMap; + this.typeResolverMap = builder.typeResolverMap; + this.fieldVisibility = builder.fieldVisibility; + this.defaultDataFetcherFactory = builder.defaultDataFetcherFactory; } /** @@ -47,15 +50,15 @@ public GraphqlFieldVisibility getFieldVisibility() { } /** - * Returns a data fetcher associated with a field within a container type + * Returns a data fetcher associated with a field within an object type * * @param parentType the container type * @param fieldDefinition the field definition * * @return the DataFetcher associated with this field. All fields have data fetchers */ - public DataFetcher getDataFetcher(GraphQLFieldsContainer parentType, GraphQLFieldDefinition fieldDefinition) { - return getDataFetcherImpl(FieldCoordinates.coordinates(parentType, fieldDefinition), fieldDefinition, dataFetcherMap, systemDataFetcherMap); + public DataFetcher getDataFetcher(GraphQLObjectType parentType, GraphQLFieldDefinition fieldDefinition) { + return getDataFetcherImpl(FieldCoordinates.coordinates(parentType, fieldDefinition), fieldDefinition, dataFetcherMap, systemDataFetcherMap, defaultDataFetcherFactory); } /** @@ -66,30 +69,48 @@ public DataFetcher getDataFetcher(GraphQLFieldsContainer parentType, GraphQLFiel * * @return the DataFetcher associated with this field. All fields have data fetchers */ - public DataFetcher getDataFetcher(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition) { - return getDataFetcherImpl(coordinates, fieldDefinition, dataFetcherMap, systemDataFetcherMap); + public DataFetcher getDataFetcher(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition) { + return getDataFetcherImpl(coordinates, fieldDefinition, dataFetcherMap, systemDataFetcherMap, defaultDataFetcherFactory); + } + + /** + * Returns true if the code registry contained a data fetcher at the specified co-ordinates + * + * @param coordinates the field coordinates + * + * @return the true if there is a data fetcher at those co-ordinates + */ + public boolean hasDataFetcher(FieldCoordinates coordinates) { + return hasDataFetcherImpl(coordinates, dataFetcherMap, systemDataFetcherMap); } - private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition, Map dataFetcherMap, Map systemDataFetcherMap) { + @SuppressWarnings("deprecation") + private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition, Map> dataFetcherMap, Map> systemDataFetcherMap, DataFetcherFactory defaultDataFetcherFactory) { assertNotNull(coordinates); assertNotNull(fieldDefinition); - DataFetcherFactory dataFetcherFactory = systemDataFetcherMap.get(fieldDefinition.getName()); + DataFetcherFactory dataFetcherFactory = systemDataFetcherMap.get(fieldDefinition.getName()); if (dataFetcherFactory == null) { dataFetcherFactory = dataFetcherMap.get(coordinates); if (dataFetcherFactory == null) { - dataFetcherFactory = DataFetcherFactories.useDataFetcher(new PropertyDataFetcher<>(fieldDefinition.getName())); + dataFetcherFactory = defaultDataFetcherFactory; } } - return dataFetcherFactory.get(newDataFetchingFactoryEnvironment() - .fieldDefinition(fieldDefinition) - .build()); + // call direct from the field - cheaper to not make a new environment object + DataFetcher dataFetcher = dataFetcherFactory.get(fieldDefinition); + if (dataFetcher == null) { + DataFetcherFactoryEnvironment factoryEnvironment = newDataFetchingFactoryEnvironment() + .fieldDefinition(fieldDefinition) + .build(); + dataFetcher = dataFetcherFactory.get(factoryEnvironment); + } + return dataFetcher; } - private static boolean hasDataFetcherImpl(FieldCoordinates coords, Map dataFetcherMap, Map systemDataFetcherMap) { + private static boolean hasDataFetcherImpl(FieldCoordinates coords, Map> dataFetcherMap, Map> systemDataFetcherMap) { assertNotNull(coords); - DataFetcherFactory dataFetcherFactory = systemDataFetcherMap.get(coords.getFieldName()); + DataFetcherFactory dataFetcherFactory = systemDataFetcherMap.get(coords.getFieldName()); if (dataFetcherFactory == null) { dataFetcherFactory = dataFetcherMap.get(coords); } @@ -126,7 +147,7 @@ private static TypeResolver getTypeResolverForInterface(GraphQLInterfaceType par if (typeResolver == null) { typeResolver = parentType.getTypeResolver(); } - return assertNotNull(typeResolver, "There must be a type resolver for interface " + parentType.getName()); + return assertNotNull(typeResolver, "There must be a type resolver for interface %s", parentType.getName()); } private static TypeResolver getTypeResolverForUnion(GraphQLUnionType parentType, Map typeResolverMap) { @@ -135,7 +156,7 @@ private static TypeResolver getTypeResolverForUnion(GraphQLUnionType parentType, if (typeResolver == null) { typeResolver = parentType.getTypeResolver(); } - return assertNotNull(typeResolver, "There must be a type resolver for union " + parentType.getName()); + return assertNotNull(typeResolver, "There must be a type resolver for union %s", parentType.getName()); } /** @@ -171,31 +192,66 @@ public static Builder newCodeRegistry(GraphQLCodeRegistry existingCodeRegistry) } public static class Builder { - private final Map dataFetcherMap = new LinkedHashMap<>(); - private final Map systemDataFetcherMap = new LinkedHashMap<>(); + private final Map> dataFetcherMap = new LinkedHashMap<>(); + private final Map> systemDataFetcherMap = new LinkedHashMap<>(); private final Map typeResolverMap = new HashMap<>(); private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; - + private DataFetcherFactory defaultDataFetcherFactory = SingletonPropertyDataFetcher.singletonFactory(); + private boolean changed = false; private Builder() { } private Builder(GraphQLCodeRegistry codeRegistry) { + this.systemDataFetcherMap.putAll(codeRegistry.systemDataFetcherMap); this.dataFetcherMap.putAll(codeRegistry.dataFetcherMap); this.typeResolverMap.putAll(codeRegistry.typeResolverMap); this.fieldVisibility = codeRegistry.fieldVisibility; + this.defaultDataFetcherFactory = codeRegistry.defaultDataFetcherFactory; + } + + /** + * A helper method to track if the builder changes from the point + * at which this method was called. + * + * @return this builder for fluent code + */ + @Internal + public Builder trackChanges() { + changed = false; + return this; + } + + /** + * @return true if the builder has changed since {@link #trackChanges()} was called + */ + @Internal + public boolean hasChanged() { + return changed; + } + + private Builder markChanged() { + changed = true; + return this; + } + + private Builder markChanged(boolean condition) { + if (condition) { + changed = true; + } + return this; } /** - * Returns a data fetcher associated with a field within a container type + * Returns a data fetcher associated with a field within an object type * * @param parentType the container type * @param fieldDefinition the field definition * * @return the DataFetcher associated with this field. All fields have data fetchers */ - public DataFetcher getDataFetcher(GraphQLFieldsContainer parentType, GraphQLFieldDefinition fieldDefinition) { - return getDataFetcherImpl(FieldCoordinates.coordinates(parentType, fieldDefinition), fieldDefinition, dataFetcherMap, systemDataFetcherMap); + public DataFetcher getDataFetcher(GraphQLObjectType parentType, GraphQLFieldDefinition fieldDefinition) { + return getDataFetcherImpl(FieldCoordinates.coordinates(parentType, fieldDefinition), fieldDefinition, dataFetcherMap, systemDataFetcherMap, defaultDataFetcherFactory); } /** @@ -206,16 +262,23 @@ public DataFetcher getDataFetcher(GraphQLFieldsContainer parentType, GraphQLFiel * * @return the DataFetcher associated with this field. All fields have data fetchers */ - public DataFetcher getDataFetcher(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition) { - return getDataFetcherImpl(coordinates, fieldDefinition, dataFetcherMap, systemDataFetcherMap); + public DataFetcher getDataFetcher(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition) { + return getDataFetcherImpl(coordinates, fieldDefinition, dataFetcherMap, systemDataFetcherMap, defaultDataFetcherFactory); + } + + /** + * @return the default data fetcher factory associated with this code registry + */ + public DataFetcherFactory getDefaultDataFetcherFactory() { + return defaultDataFetcherFactory; } /** - * Returns a data fetcher associated with a field within a container type + * Returns true if the code registry contained a data fetcher at the specified co-ordinates * * @param coordinates the field coordinates * - * @return the true if there is a data fetcher already for this field + * @return the true if there is a data fetcher at those co-ordinates */ public boolean hasDataFetcher(FieldCoordinates coordinates) { return hasDataFetcherImpl(coordinates, dataFetcherMap, systemDataFetcherMap); @@ -268,15 +331,15 @@ public Builder dataFetcher(FieldCoordinates coordinates, DataFetcher dataFetc } /** - * Sets the data fetcher for a specific field inside a container type + * Sets the data fetcher for a specific field inside an object type * - * @param parentType the container type + * @param parentType the object type * @param fieldDefinition the field definition * @param dataFetcher the data fetcher code for that field * * @return this builder */ - public Builder dataFetcher(GraphQLFieldsContainer parentType, GraphQLFieldDefinition fieldDefinition, DataFetcher dataFetcher) { + public Builder dataFetcher(GraphQLObjectType parentType, GraphQLFieldDefinition fieldDefinition, DataFetcher dataFetcher) { return dataFetcher(FieldCoordinates.coordinates(parentType.getName(), fieldDefinition.getName()), dataFetcher); } @@ -291,9 +354,9 @@ public Builder dataFetcher(GraphQLFieldsContainer parentType, GraphQLFieldDefini public Builder systemDataFetcher(FieldCoordinates coordinates, DataFetcher dataFetcher) { assertNotNull(dataFetcher); assertNotNull(coordinates); - assertTrue(coordinates.getFieldName().startsWith("__"), "Only __ system fields can be used here"); + coordinates.assertValidNames(); systemDataFetcherMap.put(coordinates.getFieldName(), DataFetcherFactories.useDataFetcher(dataFetcher)); - return this; + return markChanged(); } /** @@ -306,8 +369,14 @@ public Builder systemDataFetcher(FieldCoordinates coordinates, DataFetcher da */ public Builder dataFetcher(FieldCoordinates coordinates, DataFetcherFactory dataFetcherFactory) { assertNotNull(dataFetcherFactory); - dataFetcherMap.put(assertNotNull(coordinates), dataFetcherFactory); - return this; + assertNotNull(coordinates); + coordinates.assertValidNames(); + if (coordinates.isSystemCoordinates()) { + systemDataFetcherMap.put(coordinates.getFieldName(), dataFetcherFactory); + } else { + dataFetcherMap.put(coordinates, dataFetcherFactory); + } + return markChanged(); } /** @@ -319,7 +388,14 @@ public Builder dataFetcher(FieldCoordinates coordinates, DataFetcherFactory d * @return this builder */ public Builder dataFetcherIfAbsent(FieldCoordinates coordinates, DataFetcher dataFetcher) { - dataFetcherMap.putIfAbsent(assertNotNull(coordinates), DataFetcherFactories.useDataFetcher(dataFetcher)); + if (!hasDataFetcher(coordinates)) { + if (coordinates.isSystemCoordinates()) { + systemDataFetcher(coordinates, dataFetcher); + } else { + dataFetcher(coordinates, dataFetcher); + } + return markChanged(); + } return this; } @@ -331,66 +407,83 @@ public Builder dataFetcherIfAbsent(FieldCoordinates coordinates, DataFetcher * * @return this builder */ - public Builder dataFetchers(String parentTypeName, Map fieldDataFetchers) { + public Builder dataFetchers(String parentTypeName, Map> fieldDataFetchers) { assertNotNull(fieldDataFetchers); - fieldDataFetchers.forEach((fieldName, dataFetcher) -> { - dataFetcher(coordinates(parentTypeName, fieldName), dataFetcher); - }); - return this; + fieldDataFetchers.forEach((fieldName, dataFetcher) -> dataFetcher(coordinates(parentTypeName, fieldName), dataFetcher)); + return markChanged(!fieldDataFetchers.isEmpty()); + } + + /** + * This is the default data fetcher factory that will be used for fields that do not have specific data fetchers attached. By default + * {@link graphql.schema.PropertyDataFetcher} is used but you can have your own default via this method. + * + * @param defaultDataFetcherFactory the default data fetcher factory used + * + * @return this builder + */ + public Builder defaultDataFetcher(DataFetcherFactory defaultDataFetcherFactory) { + this.defaultDataFetcherFactory = Assert.assertNotNull(defaultDataFetcherFactory); + return markChanged(); } public Builder dataFetchers(GraphQLCodeRegistry codeRegistry) { this.dataFetcherMap.putAll(codeRegistry.dataFetcherMap); - return this; + return markChanged(!codeRegistry.dataFetcherMap.isEmpty()); } public Builder typeResolver(GraphQLInterfaceType interfaceType, TypeResolver typeResolver) { typeResolverMap.put(interfaceType.getName(), typeResolver); - return this; + return markChanged(); } public Builder typeResolverIfAbsent(GraphQLInterfaceType interfaceType, TypeResolver typeResolver) { - typeResolverMap.putIfAbsent(interfaceType.getName(), typeResolver); + if (!typeResolverMap.containsKey(interfaceType.getName())) { + typeResolverMap.put(interfaceType.getName(), typeResolver); + return markChanged(); + } return this; } public Builder typeResolver(GraphQLUnionType unionType, TypeResolver typeResolver) { typeResolverMap.put(unionType.getName(), typeResolver); - return this; + return markChanged(); } public Builder typeResolverIfAbsent(GraphQLUnionType unionType, TypeResolver typeResolver) { - typeResolverMap.putIfAbsent(unionType.getName(), typeResolver); - return this; + if (!typeResolverMap.containsKey(unionType.getName())) { + typeResolverMap.put(unionType.getName(), typeResolver); + return markChanged(); + } + return markChanged(); } public Builder typeResolver(String typeName, TypeResolver typeResolver) { typeResolverMap.put(assertValidName(typeName), typeResolver); - return this; + return markChanged(); } public Builder typeResolvers(GraphQLCodeRegistry codeRegistry) { this.typeResolverMap.putAll(codeRegistry.typeResolverMap); - return this; + return markChanged(!codeRegistry.typeResolverMap.isEmpty()); } public Builder fieldVisibility(GraphqlFieldVisibility fieldVisibility) { this.fieldVisibility = assertNotNull(fieldVisibility); - return this; + return markChanged(); } public Builder clearDataFetchers() { dataFetcherMap.clear(); - return this; + return markChanged(); } public Builder clearTypeResolvers() { typeResolverMap.clear(); - return this; + return markChanged(); } public GraphQLCodeRegistry build() { - return new GraphQLCodeRegistry(dataFetcherMap, systemDataFetcherMap, typeResolverMap, fieldVisibility); + return new GraphQLCodeRegistry(this); } } } diff --git a/src/main/java/graphql/schema/GraphQLDirective.java b/src/main/java/graphql/schema/GraphQLDirective.java index a116c91a11..402902303e 100644 --- a/src/main/java/graphql/schema/GraphQLDirective.java +++ b/src/main/java/graphql/schema/GraphQLDirective.java @@ -1,12 +1,12 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; import graphql.language.DirectiveDefinition; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; import java.util.LinkedHashMap; @@ -15,6 +15,7 @@ import java.util.function.Consumer; import java.util.function.UnaryOperator; +import static graphql.Assert.assertNotEmpty; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertValidName; import static graphql.introspection.Introspection.DirectiveLocation; @@ -22,56 +23,42 @@ /** * A directive can be used to modify the behavior of a graphql field or type. - * - * See http://graphql.org/learn/queries/#directives for more details on the concept. + *

    + * See https://graphql.org/learn/queries/#directives for more details on the concept. + *

    + * A directive has a definition, that is what arguments it takes, and it can also be applied + * to other schema elements. Originally graphql-java re-used the {@link GraphQLDirective} and {@link GraphQLArgument} + * classes to do both purposes. This was a modelling mistake. New {@link GraphQLAppliedDirective} and {@link GraphQLAppliedDirectiveArgument} + * classes have been introduced to better model when a directive is applied to a schema element, + * as opposed to its schema definition itself. */ -@SuppressWarnings("DeprecatedIsStillUsed") // because the graphql spec still has some of these deprecated fields @PublicApi public class GraphQLDirective implements GraphQLNamedSchemaElement { private final String name; + private final boolean repeatable; private final String description; private final EnumSet locations; - private final List arguments = new ArrayList<>(); - private final boolean onOperation; - private final boolean onFragment; - private final boolean onField; + private final ImmutableList arguments; private final DirectiveDefinition definition; public static final String CHILD_ARGUMENTS = "arguments"; - /** - * @deprecated Use the Builder - */ - @Deprecated - public GraphQLDirective(String name, - String description, - EnumSet locations, - List arguments, - boolean onOperation, - boolean onFragment, - boolean onField) { - this(name, description, locations, arguments, onOperation, onFragment, onField, null); - } - private GraphQLDirective(String name, String description, + boolean repeatable, EnumSet locations, List arguments, - boolean onOperation, - boolean onFragment, - boolean onField, DirectiveDefinition definition) { assertValidName(name); assertNotNull(arguments, "arguments can't be null"); + assertNotEmpty(locations, "locations can't be empty"); this.name = name; this.description = description; + this.repeatable = repeatable; this.locations = locations; - this.arguments.addAll(arguments); - this.onOperation = onOperation; - this.onFragment = onFragment; - this.onField = onField; + this.arguments = ImmutableList.copyOf(arguments); this.definition = definition; } @@ -80,8 +67,16 @@ public String getName() { return name; } + public boolean isRepeatable() { + return repeatable; + } + + public boolean isNonRepeatable() { + return !repeatable; + } + public List getArguments() { - return new ArrayList<>(arguments); + return arguments; } public GraphQLArgument getArgument(String name) { @@ -94,37 +89,7 @@ public GraphQLArgument getArgument(String name) { } public EnumSet validLocations() { - return locations; - } - - /** - * @return onOperation - * - * @deprecated Use {@link #validLocations()} - */ - @Deprecated - public boolean isOnOperation() { - return onOperation; - } - - /** - * @return onFragment - * - * @deprecated Use {@link #validLocations()} - */ - @Deprecated - public boolean isOnFragment() { - return onFragment; - } - - /** - * @return onField - * - * @deprecated Use {@link #validLocations()} - */ - @Deprecated - public boolean isOnField() { - return onField; + return EnumSet.copyOf(locations); } public String getDescription() { @@ -139,6 +104,7 @@ public DirectiveDefinition getDefinition() { public String toString() { return "GraphQLDirective{" + "name='" + name + '\'' + + ", repeatable='" + repeatable + '\'' + ", arguments=" + arguments + ", locations=" + locations + '}'; @@ -158,6 +124,12 @@ public GraphQLDirective transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newDirective(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLDirective(this, context); @@ -165,7 +137,7 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { - return new ArrayList<>(arguments); + return ImmutableList.copyOf(arguments); } @Override @@ -182,6 +154,36 @@ public GraphQLDirective withNewChildren(SchemaElementChildrenContainer newChildr ); } + /** + * This method can be used to turn a directive that was being use as an applied directive into one. + * @return an {@link GraphQLAppliedDirective} + */ + public GraphQLAppliedDirective toAppliedDirective() { + GraphQLAppliedDirective.Builder builder = GraphQLAppliedDirective.newDirective(); + builder.name(this.name); + for (GraphQLArgument argument : arguments) { + builder.argument(argument.toAppliedArgument()); + } + return builder.build(); + } + + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + public static Builder newDirective() { return new Builder(); } @@ -190,44 +192,26 @@ public static Builder newDirective(GraphQLDirective existing) { return new Builder(existing); } - public static class Builder extends GraphqlTypeBuilder { + public static class Builder extends GraphqlTypeBuilder { - private boolean onOperation; - private boolean onFragment; - private boolean onField; private EnumSet locations = EnumSet.noneOf(DirectiveLocation.class); private final Map arguments = new LinkedHashMap<>(); private DirectiveDefinition definition; + private boolean repeatable = false; public Builder() { } - @SuppressWarnings("deprecation") public Builder(GraphQLDirective existing) { this.name = existing.getName(); this.description = existing.getDescription(); - this.onOperation = existing.isOnOperation(); - this.onFragment = existing.isOnFragment(); - this.onField = existing.isOnField(); + this.repeatable = existing.isRepeatable(); this.locations = existing.validLocations(); this.arguments.putAll(getByName(existing.getArguments(), GraphQLArgument::getName)); } - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); + public Builder repeatable(boolean repeatable) { + this.repeatable = repeatable; return this; } @@ -303,59 +287,30 @@ public Builder clearArguments() { } - /** - * @param onOperation onOperation - * - * @return this builder - * - * @deprecated Use {@code graphql.schema.GraphQLDirective.Builder#validLocations(DirectiveLocation...)} - */ - @Deprecated - public Builder onOperation(boolean onOperation) { - this.onOperation = onOperation; + public Builder definition(DirectiveDefinition definition) { + this.definition = definition; return this; } - /** - * @param onFragment onFragment - * - * @return this builder - * - * @deprecated Use {@code graphql.schema.GraphQLDirective.Builder#validLocations(DirectiveLocation...)} - */ - @Deprecated - public Builder onFragment(boolean onFragment) { - this.onFragment = onFragment; - return this; - } + // -- the following are repeated to avoid a binary incompatibility problem -- - /** - * @param onField onField - * - * @return this builder - * - * @deprecated Use {@code graphql.schema.GraphQLDirective.Builder#validLocations(DirectiveLocation...)} - */ - @Deprecated - public Builder onField(boolean onField) { - this.onField = onField; - return this; + @Override + public Builder name(String name) { + return super.name(name); } - public Builder definition(DirectiveDefinition definition) { - this.definition = definition; - return this; + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLDirective build() { return new GraphQLDirective( name, description, + repeatable, locations, sort(arguments, GraphQLDirective.class, GraphQLArgument.class), - onOperation, - onFragment, - onField, definition); } diff --git a/src/main/java/graphql/schema/GraphQLDirectiveContainer.java b/src/main/java/graphql/schema/GraphQLDirectiveContainer.java index 2d35317d5a..4bee55aa36 100644 --- a/src/main/java/graphql/schema/GraphQLDirectiveContainer.java +++ b/src/main/java/graphql/schema/GraphQLDirectiveContainer.java @@ -1,37 +1,153 @@ package graphql.schema; +import graphql.PublicApi; import java.util.List; import java.util.Map; -import static graphql.DirectivesUtil.directivesByName; +import static graphql.collect.ImmutableKit.emptyList; /** - * Represents a graphql object that can have {@link graphql.schema.GraphQLDirective}s + * Represents a graphql runtime type that can have {@link graphql.schema.GraphQLAppliedDirective}s. + *

    + * Directives can be repeatable and (by default) non-repeatable. + *

    + * There are access methods here that get the two different types. + *

    + * The use of {@link GraphQLDirective} to represent a directive applied to an element is deprecated in favour of + * {@link GraphQLAppliedDirective}. A {@link GraphQLDirective} really should represent the definition of a directive in a schema, not its use + * on schema elements. However, it has been left in place for legacy reasons and will be removed in a + * future version. + * + * @see graphql.language.DirectiveDefinition + * @see graphql.language.DirectiveDefinition#isRepeatable() */ +@PublicApi public interface GraphQLDirectiveContainer extends GraphQLNamedSchemaElement { + String CHILD_DIRECTIVES = "directives"; + String CHILD_APPLIED_DIRECTIVES = "appliedDirectives"; + + /** - * @return a list of directives associated with the type or field + * This will return a list of all the directives that have been put on {@link graphql.schema.GraphQLNamedSchemaElement} as a flat list, which may contain repeatable + * and non-repeatable directives. + * + * @return a list of all the directives associated with this named schema element */ - List getDirectives(); + List getAppliedDirectives(); /** - * @return a a map of directives by directive name + * This will return a Map of the all directives that are associated with a {@link graphql.schema.GraphQLNamedSchemaElement}, including both + * repeatable and non-repeatable directives. + * + * @return a map of all directives by directive name */ - default Map getDirectivesByName() { - return directivesByName(getDirectives()); - } + Map> getAllAppliedDirectivesByName(); /** - * Returns a named directive + * Returns a non-repeatable directive with the provided name. * * @param directiveName the name of the directive to retrieve * - * @return the directive or null if there is one one with that name + * @return the directive or null if there is not one with that name + */ + GraphQLAppliedDirective getAppliedDirective(String directiveName); + + + /** + * Returns all of the directives with the provided name, including repeatable and non repeatable directives. + * + * @param directiveName the name of the directives to retrieve + * + * @return the directives or empty list if there is not one with that name */ - default GraphQLDirective getDirective(String directiveName) { - return getDirectivesByName().get(directiveName); + default List getAppliedDirectives(String directiveName) { + return getAllAppliedDirectivesByName().getOrDefault(directiveName, emptyList()); } + /** + * This will return true if the element has a directive (repeatable or non repeatable) with the specified name + * + * @param directiveName the name of the directive + * + * @return true if there is a directive on this element with that name + * + * @deprecated use {@link #hasAppliedDirective(String)} instead + */ + @Deprecated(since = "2022-02-24") + default boolean hasDirective(String directiveName) { + return getAllDirectivesByName().containsKey(directiveName); + } + + /** + * This will return true if the element has a directive (repeatable or non repeatable) with the specified name + * + * @param directiveName the name of the directive + * + * @return true if there is a directive on this element with that name + */ + default boolean hasAppliedDirective(String directiveName) { + return getAllAppliedDirectivesByName().containsKey(directiveName); + } + + /** + * This will return a list of all the directives that have been put on {@link graphql.schema.GraphQLNamedSchemaElement} as a flat list, which may contain repeatable + * and non-repeatable directives. + * + * @return a list of all the directives associated with this named schema element + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + List getDirectives(); + + /** + * This will return a Map of the non repeatable directives that are associated with a {@link graphql.schema.GraphQLNamedSchemaElement}. Any repeatable directives + * will be filtered out of this map. + * + * @return a map of non repeatable directives by directive name. + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + Map getDirectivesByName(); + + /** + * This will return a Map of the all directives that are associated with a {@link graphql.schema.GraphQLNamedSchemaElement}, including both + * repeatable and non repeatable directives. + * + * @return a map of all directives by directive name + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + Map> getAllDirectivesByName(); + + /** + * Returns a non-repeatable directive with the provided name. This will throw a {@link graphql.AssertException} if + * the directive is a repeatable directive that has more then one instance. + * + * @param directiveName the name of the directive to retrieve + * + * @return the directive or null if there is not one with that name + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + GraphQLDirective getDirective(String directiveName); + + /** + * Returns all of the directives with the provided name, including repeatable and non repeatable directives. + * + * @param directiveName the name of the directives to retrieve + * + * @return the directives or empty list if there is not one with that name + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + default List getDirectives(String directiveName) { + return getAllDirectivesByName().getOrDefault(directiveName, emptyList()); + } } diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index d33b60423f..b768fdde01 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -1,27 +1,35 @@ package graphql.schema; - -import graphql.AssertException; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.DirectivesUtil; +import graphql.GraphQLContext; import graphql.Internal; import graphql.PublicApi; import graphql.language.EnumTypeDefinition; import graphql.language.EnumTypeExtensionDefinition; import graphql.language.EnumValue; +import graphql.language.Value; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertValidName; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.scalar.CoercingUtil.i18nMsg; +import static graphql.scalar.CoercingUtil.typeName; import static graphql.schema.GraphQLEnumValueDefinition.newEnumValueDefinition; import static graphql.util.FpKit.getByName; -import static java.util.Collections.emptyList; /** * A graphql enumeration type has a limited set of values. @@ -29,124 +37,128 @@ * This allows you to validate that any arguments of this type are one of the allowed values * and communicate through the type system that a field will always be one of a finite set of values. *

    - * See http://graphql.org/learn/schema/#enumeration-types for more details + * See https://graphql.org/learn/schema/#enumeration-types for more details */ @PublicApi public class GraphQLEnumType implements GraphQLNamedInputType, GraphQLNamedOutputType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer { private final String name; private final String description; - private final Map valueDefinitionMap = new LinkedHashMap<>(); + private final ImmutableMap valueDefinitionMap; private final EnumTypeDefinition definition; - private final List extensionDefinitions; - private final List directives; + private final ImmutableList extensionDefinitions; + private final DirectivesUtil.DirectivesHolder directivesHolder; public static final String CHILD_VALUES = "values"; - public static final String CHILD_DIRECTIVES = "directives"; - - - - /** - * @param name the name - * @param description the description - * @param values the values - * - * @deprecated use the {@link #newEnum()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLEnumType(String name, String description, List values) { - this(name, description, values, emptyList(), null); - } - /** - * @param name the name - * @param description the description - * @param values the values - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newEnum()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLEnumType(String name, String description, List values, List directives, EnumTypeDefinition definition) { - this(name, description, values, directives, definition, emptyList()); - } - - private GraphQLEnumType(String name, String description, List values, List directives, EnumTypeDefinition definition, List extensionDefinitions) { + private GraphQLEnumType(String name, + String description, + List values, + List directives, + List appliedDirectives, + EnumTypeDefinition definition, + List extensionDefinitions) { assertValidName(name); assertNotNull(directives, "directives cannot be null"); this.name = name; this.description = description; this.definition = definition; - this.extensionDefinitions = Collections.unmodifiableList(new ArrayList<>(extensionDefinitions)); - this.directives = directives; - buildMap(values); + this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); + this.valueDefinitionMap = buildMap(values); } @Internal + @Deprecated public Object serialize(Object input) { - return getNameByValue(input); + return serialize(input, GraphQLContext.getDefault(), Locale.getDefault()); + } + + @Internal + public Object serialize(Object input, GraphQLContext graphQLContext, Locale locale) { + return getNameByValue(input, graphQLContext, locale); } @Internal + @Deprecated public Object parseValue(Object input) { - return getValueByName(input); + return getValueByName(input, GraphQLContext.getDefault(), Locale.getDefault()); } - private String typeName(Object input) { - if (input == null) { - return "null"; - } - return input.getClass().getSimpleName(); + @Internal + public Object parseValue(Object input, GraphQLContext graphQLContext, Locale locale) { + return getValueByName(input, graphQLContext, locale); } + @Internal + @Deprecated public Object parseLiteral(Object input) { + return parseLiteralImpl(input, GraphQLContext.getDefault(), Locale.getDefault()); + } + + @Internal + public Object parseLiteral(Value input, GraphQLContext graphQLContext, Locale locale) { + return parseLiteralImpl(input, graphQLContext, locale); + } + + private Object parseLiteralImpl(Object input, GraphQLContext graphQLContext, Locale locale) { if (!(input instanceof EnumValue)) { throw new CoercingParseLiteralException( - "Expected AST type 'EnumValue' but was '" + typeName(input) + "'." + i18nMsg(locale, "Scalar.unexpectedAstType", "EnumValue", typeName(input)) ); } EnumValue enumValue = (EnumValue) input; GraphQLEnumValueDefinition enumValueDefinition = valueDefinitionMap.get(enumValue.getName()); if (enumValueDefinition == null) { throw new CoercingParseLiteralException( - "Expected enum literal value not in allowable values - '" + String.valueOf(input) + "'." + i18nMsg(locale, "Enum.unallowableValue", getName(), input) ); } return enumValueDefinition.getValue(); } + + @Internal + @Deprecated + public Value valueToLiteral(Object input) { + return valueToLiteral(input, GraphQLContext.getDefault(), Locale.getDefault()); + } + + @Internal + public Value valueToLiteral(Object input, GraphQLContext graphQLContext, Locale locale) { + GraphQLEnumValueDefinition enumValueDefinition = valueDefinitionMap.get(input.toString()); + if (enumValueDefinition == null) { + assertShouldNeverHappen(i18nMsg(locale, "Enum.badName", name, input.toString())); + }; + return EnumValue.newEnumValue(enumValueDefinition.getName()).build(); + + } + public List getValues() { - return new ArrayList<>(valueDefinitionMap.values()); + return ImmutableList.copyOf(valueDefinitionMap.values()); } public GraphQLEnumValueDefinition getValue(String name) { return valueDefinitionMap.get(name); } - private void buildMap(List values) { - for (GraphQLEnumValueDefinition valueDefinition : values) { - String name = valueDefinition.getName(); - if (valueDefinitionMap.containsKey(name)) { - throw new AssertException("value " + name + " redefined"); - } - valueDefinitionMap.put(name, valueDefinition); - } + private ImmutableMap buildMap(List values) { + return ImmutableMap.copyOf(FpKit.getByName(values, GraphQLEnumValueDefinition::getName, + (fld1, fld2) -> assertShouldNeverHappen("Duplicated definition for field '%s' in type '%s'", fld1.getName(), this.name))); } - private Object getValueByName(Object value) { + private Object getValueByName(@NonNull Object value, GraphQLContext graphQLContext, Locale locale) { GraphQLEnumValueDefinition enumValueDefinition = valueDefinitionMap.get(value.toString()); if (enumValueDefinition != null) { return enumValueDefinition.getValue(); } - throw new CoercingParseValueException("Invalid input for Enum '" + name + "'. No value found for name '" + value.toString() + "'"); + throw new CoercingParseValueException(i18nMsg(locale, "Enum.badName", name, value.toString())); } - private Object getNameByValue(Object value) { + private Object getNameByValue(Object value, GraphQLContext graphQLContext, Locale locale) { for (GraphQLEnumValueDefinition valueDefinition : valueDefinitionMap.values()) { Object definitionValue = valueDefinition.getValue(); if (value.equals(definitionValue)) { @@ -159,7 +171,7 @@ private Object getNameByValue(Object value) { } } } - // ok we didn't match on pure object.equals(). Lets try the Java enum strategy + // ok we didn't match on pure object.equals(). Let's try the Java enum strategy if (value instanceof Enum) { String enumNameValue = ((Enum) value).name(); for (GraphQLEnumValueDefinition valueDefinition : valueDefinitionMap.values()) { @@ -169,7 +181,7 @@ private Object getNameByValue(Object value) { } } } - throw new CoercingSerializeException("Invalid input for Enum '" + name + "'. Unknown value '" + value + "'"); + throw new CoercingSerializeException(i18nMsg(locale, "Enum.badInput", name, value)); } @Override @@ -191,7 +203,37 @@ public List getExtensionDefinitions() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); } /** @@ -208,6 +250,12 @@ public GraphQLEnumType transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newEnum(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLEnumType(this, context); @@ -216,7 +264,8 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { List children = new ArrayList<>(valueDefinitionMap.values()); - children.addAll(directives); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); return children; } @@ -224,18 +273,49 @@ public List getChildren() { public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() .children(CHILD_VALUES, valueDefinitionMap.values()) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .build(); } @Override public GraphQLEnumType withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) - .replaceValues(newChildren.getChildren(CHILD_VALUES)) + builder.replaceValues(newChildren.getChildren(CHILD_VALUES)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + + @Override + public String toString() { + return "GraphQLEnumType{" + + "name='" + name + '\'' + + ", description='" + description + '\'' + + ", valueDefinitionMap=" + valueDefinitionMap + + ", definition=" + definition + + ", extensionDefinitions=" + extensionDefinitions + + ", directives=" + directivesHolder + + '}'; + } + public static Builder newEnum() { return new Builder(); } @@ -244,12 +324,11 @@ public static Builder newEnum(GraphQLEnumType existing) { return new Builder(existing); } - public static class Builder extends GraphqlTypeBuilder { + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private EnumTypeDefinition definition; private List extensionDefinitions = emptyList(); private final Map values = new LinkedHashMap<>(); - private final Map directives = new LinkedHashMap<>(); public Builder() { } @@ -260,25 +339,7 @@ public Builder(GraphQLEnumType existing) { this.definition = existing.getDefinition(); this.extensionDefinitions = existing.getExtensionDefinitions(); this.values.putAll(getByName(existing.getValues(), GraphQLEnumValueDefinition::getName)); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + copyExistingDirectives(existing); } public Builder definition(EnumTypeDefinition definition) { @@ -346,41 +407,41 @@ public Builder clearValues() { return this; } - public Builder withDirectives(GraphQLDirective... directives) { - assertNotNull(directives, "directives can't be null"); - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; + // -- the following are repeated to avoid a binary incompatibility problem -- + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLEnumType build() { @@ -389,6 +450,7 @@ public GraphQLEnumType build() { description, sort(values, GraphQLEnumType.class, GraphQLEnumValueDefinition.class), sort(directives, GraphQLEnumType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), definition, extensionDefinitions); } diff --git a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java index 42a341fad0..b06aed763c 100644 --- a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java +++ b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java @@ -9,21 +9,18 @@ import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertValidName; -import static graphql.util.FpKit.getByName; -import static graphql.util.FpKit.valuesToList; -import static java.util.Collections.emptyList; /** * A graphql enumeration type has a limited set of values and this defines one of those unique values - * - * See http://graphql.org/learn/schema/#enumeration-types for more details + *

    + * See https://graphql.org/learn/schema/#enumeration-types for more details * * @see graphql.schema.GraphQLEnumType */ @@ -34,54 +31,17 @@ public class GraphQLEnumValueDefinition implements GraphQLNamedSchemaElement, Gr private final String description; private final Object value; private final String deprecationReason; - private final List directives; + private final DirectivesUtil.DirectivesHolder directivesHolder; private final EnumValueDefinition definition; - public static final String CHILD_DIRECTIVES = "directives"; - - /** - * @param name the name - * @param description the description - * @param value the value - * - * @deprecated use the {@link #newEnumValueDefinition()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLEnumValueDefinition(String name, String description, Object value) { - this(name, description, value, null, emptyList()); - } - - /** - * @param name the name - * @param description the description - * @param value the value - * @param deprecationReason the deprecation reasons - * - * @deprecated use the {@link #newEnumValueDefinition()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLEnumValueDefinition(String name, String description, Object value, String deprecationReason) { - this(name, description, value, deprecationReason, emptyList()); - } - - /** - * @param name the name - * @param description the description - * @param value the value - * @param deprecationReason the deprecation reasons - * @param directives the directives on this type element - * - * @deprecated use the {@link #newEnumValueDefinition()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLEnumValueDefinition(String name, String description, Object value, String deprecationReason, List directives) { - this(name, description, value, deprecationReason, directives, null); - } - - private GraphQLEnumValueDefinition(String name, String description, Object value, String deprecationReason, List directives, EnumValueDefinition definition) { + private GraphQLEnumValueDefinition(String name, + String description, + Object value, + String deprecationReason, + List directives, + List appliedDirectives, + EnumValueDefinition definition) { assertValidName(name); assertNotNull(directives, "directives cannot be null"); @@ -89,7 +49,7 @@ private GraphQLEnumValueDefinition(String name, String description, Object value this.description = description; this.value = value; this.deprecationReason = deprecationReason; - this.directives = directives; + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.definition = definition; } @@ -116,23 +76,43 @@ public String getDeprecationReason() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); } @Override public Map getDirectivesByName() { - return DirectivesUtil.directivesByName(directives); + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); } @Override public GraphQLDirective getDirective(String directiveName) { - return getDirectivesByName().get(directiveName); + return directivesHolder.getDirective(directiveName); } public EnumValueDefinition getDefinition() { return definition; } + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); + } + /** * This helps you transform the current GraphQLEnumValueDefinition into another one by starting a builder with all * the current values and allows you to transform it how you want. @@ -147,6 +127,12 @@ public GraphQLEnumValueDefinition transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newEnumValueDefinition(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLEnumValueDefinition(this, context); @@ -154,23 +140,51 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { - return new ArrayList<>(directives); + List children = new ArrayList<>(); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); + return children; } @Override public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .build(); } @Override public GraphQLEnumValueDefinition withNewChildren(SchemaElementChildrenContainer newChildren) { - return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + return transform(builder -> builder + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + @Override + public String toString() { + return "GraphQLEnumValueDefinition{" + + "name='" + name + '\'' + + '}'; + } + public static Builder newEnumValueDefinition() { return new Builder(); } @@ -180,11 +194,11 @@ public static Builder newEnumValueDefinition(GraphQLEnumValueDefinition existing } @PublicApi - public static class Builder extends GraphqlTypeBuilder { + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private Object value; private String deprecationReason; private EnumValueDefinition definition; - private final Map directives = new LinkedHashMap<>(); public Builder() { } @@ -194,25 +208,7 @@ public Builder(GraphQLEnumValueDefinition existing) { this.description = existing.getDescription(); this.value = existing.getValue(); this.deprecationReason = existing.getDeprecationReason(); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + copyExistingDirectives(existing); } public Builder value(Object value) { @@ -230,45 +226,51 @@ public Builder definition(EnumValueDefinition definition) { return this; } - public Builder withDirectives(GraphQLDirective... directives) { - assertNotNull(directives, "directives can't be null"); - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; + // -- the following are repeated to avoid a binary incompatibility problem -- + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLEnumValueDefinition build() { - return new GraphQLEnumValueDefinition(name, description, value, deprecationReason, valuesToList(directives), definition); + return new GraphQLEnumValueDefinition(name, + description, + value, + deprecationReason, + sort(directives, GraphQLScalarType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), + definition); } } } diff --git a/src/main/java/graphql/schema/GraphQLFieldDefinition.java b/src/main/java/graphql/schema/GraphQLFieldDefinition.java index b815fa4014..779421c2c1 100644 --- a/src/main/java/graphql/schema/GraphQLFieldDefinition.java +++ b/src/main/java/graphql/schema/GraphQLFieldDefinition.java @@ -1,18 +1,21 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; +import graphql.DirectivesUtil; import graphql.Internal; import graphql.PublicApi; import graphql.language.FieldDefinition; +import graphql.util.Interning; import graphql.util.TraversalControl; import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; @@ -22,13 +25,13 @@ /** * Fields are the ways you get data values in graphql and a field definition represents a field, its type, the arguments it takes - * and the {@link graphql.schema.DataFetcher} used to get data values for that field. - * + * and the {@link DataFetcher} used to get data values for that field. + *

    * Fields can be thought of as functions in graphql, they have a name, take defined arguments and return a value. - * + *

    * Fields can also be deprecated, which indicates the consumers that a field wont be supported in the future. - * - * See http://graphql.org/learn/queries/#fields for more details on the concept. + *

    + * See https://graphql.org/learn/queries/#fields for more details on the concept. */ @PublicApi public class GraphQLFieldDefinition implements GraphQLNamedSchemaElement, GraphQLDirectiveContainer { @@ -38,58 +41,34 @@ public class GraphQLFieldDefinition implements GraphQLNamedSchemaElement, GraphQ private final GraphQLOutputType originalType; private final DataFetcherFactory dataFetcherFactory; private final String deprecationReason; - private final List arguments; - private final List directives; + private final ImmutableList arguments; + private final DirectivesUtil.DirectivesHolder directivesHolder; private final FieldDefinition definition; private GraphQLOutputType replacedType; public static final String CHILD_ARGUMENTS = "arguments"; - public static final String CHILD_DIRECTIVES = "directives"; public static final String CHILD_TYPE = "type"; - - /** - * @param name the name - * @param description the description - * @param type the field type - * @param dataFetcher the field data fetcher - * @param arguments the field arguments - * @param deprecationReason the deprecation reason - * - * @deprecated use the {@link #newFieldDefinition()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLFieldDefinition(String name, String description, GraphQLOutputType type, DataFetcher dataFetcher, List arguments, String deprecationReason) { - this(name, description, type, DataFetcherFactories.useDataFetcher(dataFetcher), arguments, deprecationReason, Collections.emptyList(), null); - } - - /** - * @param name the name - * @param description the description - * @param type the field type - * @param dataFetcherFactory the field data fetcher factory - * @param arguments the field arguments - * @param deprecationReason the deprecation reason - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newFieldDefinition()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLFieldDefinition(String name, String description, GraphQLOutputType type, DataFetcherFactory dataFetcherFactory, List arguments, String deprecationReason, List directives, FieldDefinition definition) { + private GraphQLFieldDefinition(String name, + String description, + GraphQLOutputType type, + DataFetcherFactory dataFetcherFactory, + List arguments, + String deprecationReason, + List directives, + List appliedDirectives, + FieldDefinition definition) { assertValidName(name); - assertNotNull(dataFetcherFactory, "you have to provide a DataFetcher (or DataFetcherFactory)"); assertNotNull(type, "type can't be null"); assertNotNull(arguments, "arguments can't be null"); - this.name = name; + this.name = Interning.intern(name); this.description = description; this.originalType = type; this.dataFetcherFactory = dataFetcherFactory; - this.arguments = Collections.unmodifiableList(arguments); - this.directives = directives; + this.arguments = ImmutableList.copyOf(arguments); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.deprecationReason = deprecationReason; this.definition = definition; } @@ -109,7 +88,12 @@ public GraphQLOutputType getType() { } // to be removed in a future version when all code is in the code registry - DataFetcher getDataFetcher() { + @Internal + @Deprecated(since = "2018-12-03") + DataFetcher getDataFetcher() { + if (dataFetcherFactory == null) { + return null; + } return dataFetcherFactory.get(newDataFetchingFactoryEnvironment() .fieldDefinition(this) .build()); @@ -126,7 +110,37 @@ public GraphQLArgument getArgument(String name) { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); } public List getArguments() { @@ -176,6 +190,12 @@ public GraphQLFieldDefinition transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newFieldDefinition(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLFieldDefinition(this, context); @@ -186,16 +206,18 @@ public List getChildren() { List children = new ArrayList<>(); children.add(getType()); children.addAll(arguments); - children.addAll(directives); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); return children; } @Override public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() - .children(CHILD_ARGUMENTS, arguments) - .children(CHILD_DIRECTIVES, directives) .child(CHILD_TYPE, originalType) + .children(CHILD_ARGUMENTS, arguments) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .build(); } @@ -203,12 +225,29 @@ public SchemaElementChildrenContainer getChildrenWithTypeReferences() { @Override public GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) - .replaceArguments(newChildren.getChildren(CHILD_ARGUMENTS)) + builder.replaceArguments(newChildren.getChildren(CHILD_ARGUMENTS)) .type((GraphQLOutputType) newChildren.getChildOrNull(CHILD_TYPE)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + public static Builder newFieldDefinition(GraphQLFieldDefinition existing) { return new Builder(existing); } @@ -218,19 +257,18 @@ public static Builder newFieldDefinition() { } @PublicApi - public static class Builder extends GraphqlTypeBuilder { + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private GraphQLOutputType type; private DataFetcherFactory dataFetcherFactory; private String deprecationReason; private FieldDefinition definition; private final Map arguments = new LinkedHashMap<>(); - private final Map directives = new LinkedHashMap<>(); public Builder() { } - @SuppressWarnings("unchecked") public Builder(GraphQLFieldDefinition existing) { this.name = existing.getName(); this.description = existing.getDescription(); @@ -239,26 +277,7 @@ public Builder(GraphQLFieldDefinition existing) { this.deprecationReason = existing.getDeprecationReason(); this.definition = existing.getDefinition(); this.arguments.putAll(getByName(existing.getArguments(), GraphQLArgument::getName)); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + copyExistingDirectives(existing); } public Builder definition(FieldDefinition definition) { @@ -292,7 +311,7 @@ public Builder type(GraphQLOutputType type) { * * @deprecated use {@link graphql.schema.GraphQLCodeRegistry} instead */ - @Deprecated + @Deprecated(since = "2018-12-03") public Builder dataFetcher(DataFetcher dataFetcher) { assertNotNull(dataFetcher, "dataFetcher must be not null"); this.dataFetcherFactory = DataFetcherFactories.useDataFetcher(dataFetcher); @@ -308,8 +327,8 @@ public Builder dataFetcher(DataFetcher dataFetcher) { * * @deprecated use {@link graphql.schema.GraphQLCodeRegistry} instead */ - @Deprecated - public Builder dataFetcherFactory(DataFetcherFactory dataFetcherFactory) { + @Deprecated(since = "2018-12-03") + public Builder dataFetcherFactory(DataFetcherFactory dataFetcherFactory) { assertNotNull(dataFetcherFactory, "dataFetcherFactory must be not null"); this.dataFetcherFactory = dataFetcherFactory; return this; @@ -324,7 +343,7 @@ public Builder dataFetcherFactory(DataFetcherFactory dataFetcherFactory) { * * @deprecated use {@link graphql.schema.GraphQLCodeRegistry} instead */ - @Deprecated + @Deprecated(since = "2018-12-03") public Builder staticValue(final Object value) { this.dataFetcherFactory = DataFetcherFactories.useDataFetcher(environment -> value); return this; @@ -377,7 +396,7 @@ public Builder argument(GraphQLArgument.Builder builder) { * * @deprecated This is a badly named method and is replaced by {@link #arguments(java.util.List)} */ - @Deprecated + @Deprecated(since = "2019-02-06") public Builder argument(List arguments) { return arguments(arguments); } @@ -422,47 +441,44 @@ public Builder deprecate(String deprecationReason) { return this; } - public Builder withDirectives(GraphQLDirective... directives) { - assertNotNull(directives, "directives can't be null"); - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; + // -- the following are repeated to avoid a binary incompatibility problem -- + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLFieldDefinition build() { - if (dataFetcherFactory == null) { - dataFetcherFactory = DataFetcherFactories.useDataFetcher(new PropertyDataFetcher<>(name)); - } return new GraphQLFieldDefinition( name, description, @@ -471,6 +487,7 @@ public GraphQLFieldDefinition build() { sort(arguments, GraphQLFieldDefinition.class, GraphQLArgument.class), deprecationReason, sort(directives, GraphQLFieldDefinition.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), definition); } } diff --git a/src/main/java/graphql/schema/GraphQLFieldsContainer.java b/src/main/java/graphql/schema/GraphQLFieldsContainer.java index e7a779c80f..449fb78f22 100644 --- a/src/main/java/graphql/schema/GraphQLFieldsContainer.java +++ b/src/main/java/graphql/schema/GraphQLFieldsContainer.java @@ -17,4 +17,12 @@ public interface GraphQLFieldsContainer extends GraphQLCompositeType { GraphQLFieldDefinition getFieldDefinition(String name); List getFieldDefinitions(); + + default GraphQLFieldDefinition getField(String name) { + return getFieldDefinition(name); + } + + default List getFields() { + return getFieldDefinitions(); + } } diff --git a/src/main/java/graphql/schema/GraphQLImplementingType.java b/src/main/java/graphql/schema/GraphQLImplementingType.java new file mode 100644 index 0000000000..f8d394567f --- /dev/null +++ b/src/main/java/graphql/schema/GraphQLImplementingType.java @@ -0,0 +1,18 @@ +package graphql.schema; + +import graphql.PublicApi; + +import java.util.List; + +/** + * A GraphQLType which can implement interfaces + */ +@PublicApi +public interface GraphQLImplementingType extends GraphQLFieldsContainer { + /** + * @return This returns GraphQLInterface or GraphQLTypeReference instances, if the type + * references are not resolved yet. After they are resolved it contains only GraphQLInterface. + * Reference resolving happens when a full schema is built. + */ + List getInterfaces(); +} diff --git a/src/main/java/graphql/schema/GraphQLInputObjectField.java b/src/main/java/graphql/schema/GraphQLInputObjectField.java index 579af7c83f..23323393b8 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectField.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectField.java @@ -1,30 +1,33 @@ package graphql.schema; -import graphql.Internal; +import graphql.DirectivesUtil; +import graphql.GraphQLContext; import graphql.PublicApi; import graphql.language.InputValueDefinition; +import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertValidName; -import static graphql.util.FpKit.getByName; -import static java.util.Collections.emptyList; +import static graphql.execution.ValuesResolver.getInputValueImpl; /** - * Input objects defined via {@link graphql.schema.GraphQLInputObjectType} contains these input fields. + * Input objects defined via {@link GraphQLInputObjectType} contains these input fields. * - * There are similar to {@link graphql.schema.GraphQLFieldDefinition} however they can ONLY be used on input objects, that + * There are similar to {@link GraphQLFieldDefinition} however they can ONLY be used on input objects, that * is to describe values that are fed into a graphql mutation. * - * See http://graphql.org/learn/schema/#input-types for more details on the concept. + * See https://graphql.org/learn/schema/#input-types for more details on the concept. */ @PublicApi public class GraphQLInputObjectField implements GraphQLNamedSchemaElement, GraphQLInputValueDefinition { @@ -32,54 +35,26 @@ public class GraphQLInputObjectField implements GraphQLNamedSchemaElement, Graph private final String name; private final String description; private final GraphQLInputType originalType; - private final Object defaultValue; + private final InputValueWithState defaultValue; + + private final String deprecationReason; private final InputValueDefinition definition; - private final List directives; + private final DirectivesUtil.DirectivesHolder directivesHolder; private GraphQLInputType replacedType; public static final String CHILD_TYPE = "type"; - public static final String CHILD_DIRECTIVES = "directives"; - /** - * @param name the name - * @param type the field type - * - * @deprecated use the {@link #newInputObjectField()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLInputObjectField(String name, GraphQLInputType type) { - this(name, null, type, null, emptyList(), null); - } - /** - * @param name the name - * @param description the description - * @param type the field type - * @param defaultValue the default value - * - * @deprecated use the {@link #newInputObjectField()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLInputObjectField(String name, String description, GraphQLInputType type, Object defaultValue) { - this(name, description, type, defaultValue, emptyList(), null); - } - - /** - * @param name the name - * @param description the description - * @param type the field type - * @param defaultValue the default value - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newInputObjectField()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLInputObjectField(String name, String description, GraphQLInputType type, Object defaultValue, List directives, InputValueDefinition definition) { + private GraphQLInputObjectField( + String name, + String description, + GraphQLInputType type, + InputValueWithState defaultValue, + List directives, + List appliedDirectives, + InputValueDefinition definition, + String deprecationReason) { assertValidName(name); assertNotNull(type, "type can't be null"); assertNotNull(directives, "directives cannot be null"); @@ -88,8 +63,9 @@ public GraphQLInputObjectField(String name, String description, GraphQLInputType this.originalType = type; this.defaultValue = defaultValue; this.description = description; - this.directives = directives; + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.definition = definition; + this.deprecationReason = deprecationReason; } void replaceType(GraphQLInputType type) { @@ -105,21 +81,91 @@ public GraphQLInputType getType() { return replacedType != null ? replacedType : originalType; } - public Object getDefaultValue() { + /** + * The default value of this input field. + * + * The semantics of the returned Object depend on how the {@link InputValueWithState} was created. + * + * @return a input value with captured state + */ + public @NonNull InputValueWithState getInputFieldDefaultValue() { return defaultValue; } + /** + * This static helper method will give out a java value based on the semantics captured + * in the {@link InputValueWithState} from {@link GraphQLInputObjectField#getInputFieldDefaultValue()} + * + * Note : You MUST only call this on a {@link GraphQLInputObjectField} that is part of a fully formed schema. We need + * all of the types to be resolved in order for this work correctly. + * + * Note: This method will return null if the value is not set or explicitly set to null. If you you to know the difference + * when "not set" and "set to null" then you cant use this method. Rather you should use {@link GraphQLInputObjectField#getInputFieldDefaultValue()} + * and use the {@link InputValueWithState#isNotSet()} methods to decide how to handle those values. + * + * @param inputObjectField the fully formed {@link GraphQLInputObjectField} + * @param the type you want it cast as + * + * @return a value of type T which is the java value of the input field default + */ + public static T getInputFieldDefaultValue(GraphQLInputObjectField inputObjectField) { + return getInputValueImpl(inputObjectField.getType(), inputObjectField.getInputFieldDefaultValue(), GraphQLContext.getDefault(), Locale.getDefault()); + } + + + public boolean hasSetDefaultValue() { + return defaultValue.isSet(); + } + public String getDescription() { return description; } + public String getDeprecationReason() { + return deprecationReason; + } + + public boolean isDeprecated() { + return deprecationReason != null; + } + public InputValueDefinition getDefinition() { return definition; } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); } /** @@ -136,6 +182,12 @@ public GraphQLInputObjectField transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newInputObjectField(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLInputObjectField(this, context); @@ -145,14 +197,16 @@ public TraversalControl accept(TraverserContext context, G public List getChildren() { List children = new ArrayList<>(); children.add(getType()); - children.addAll(directives); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); return children; } @Override public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .child(CHILD_TYPE, originalType) .build(); } @@ -160,24 +214,49 @@ public SchemaElementChildrenContainer getChildrenWithTypeReferences() { @Override public GraphQLInputObjectField withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) - .type((GraphQLInputType) newChildren.getChildOrNull(CHILD_TYPE)) + builder.type((GraphQLInputType) newChildren.getChildOrNull(CHILD_TYPE)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) + ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + @Override public String toString() { return "GraphQLInputObjectField{" + "name='" + name + '\'' + ", description='" + description + '\'' + - ", originalType=" + originalType + + ", originalType=" + inputTypeToStringAvoidingCircularReference(originalType) + ", defaultValue=" + defaultValue + ", definition=" + definition + - ", directives=" + directives + - ", replacedType=" + replacedType + + ", directives=" + directivesHolder + + ", replacedType=" + inputTypeToStringAvoidingCircularReference(replacedType) + '}'; } + private static Object inputTypeToStringAvoidingCircularReference(GraphQLInputType graphQLInputType) { + return (graphQLInputType instanceof GraphQLInputObjectType) + ? String.format("[%s]", GraphQLInputObjectType.class.getSimpleName()) + : graphQLInputType; + } + public static Builder newInputObjectField(GraphQLInputObjectField existing) { return new Builder(existing); } @@ -188,11 +267,13 @@ public static Builder newInputObjectField() { } @PublicApi - public static class Builder extends GraphqlTypeBuilder { - private Object defaultValue; + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { + private InputValueWithState defaultValue = InputValueWithState.NOT_SET; private GraphQLInputType type; private InputValueDefinition definition; - private final Map directives = new LinkedHashMap<>(); + private String deprecationReason; + public Builder() { } @@ -200,32 +281,20 @@ public Builder() { public Builder(GraphQLInputObjectField existing) { this.name = existing.getName(); this.description = existing.getDescription(); - this.defaultValue = existing.getDefaultValue(); + this.defaultValue = existing.getInputFieldDefaultValue(); this.type = existing.originalType; this.definition = existing.getDefinition(); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; + this.deprecationReason = existing.deprecationReason; + copyExistingDirectives(existing); } - @Override - public Builder description(String description) { - super.description(description); + public Builder definition(InputValueDefinition definition) { + this.definition = definition; return this; } - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; - } - - public Builder definition(InputValueDefinition definition) { - this.definition = definition; + public Builder deprecate(String deprecationReason) { + this.deprecationReason = deprecationReason; return this; } @@ -238,57 +307,84 @@ public Builder type(GraphQLInputType type) { return this; } + /** + * A legacy method for setting a default value + * + * @param defaultValue the value to set + * + * @return this builder + * + * @deprecated use {@link #defaultValueLiteral(Value)} + */ + @Deprecated(since = "2021-05-10") public Builder defaultValue(Object defaultValue) { - this.defaultValue = defaultValue; + this.defaultValue = InputValueWithState.newInternalValue(defaultValue); return this; } - public Builder withDirectives(GraphQLDirective... directives) { - assertNotNull(directives, "directives can't be null"); - for (GraphQLDirective directive : directives) { - withDirective(directive); - } + public Builder defaultValueLiteral(Value defaultValue) { + this.defaultValue = InputValueWithState.newLiteralValue(defaultValue); return this; } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); + public Builder defaultValueProgrammatic(Object defaultValue) { + this.defaultValue = InputValueWithState.newExternalValue(defaultValue); return this; } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } + public Builder clearDefaultValue() { + this.defaultValue = InputValueWithState.NOT_SET; return this; } + // -- the following are repeated to avoid a binary incompatibility problem -- + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); + } + + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); + } + + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); + } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLInputObjectField build() { + assertNotNull(type, "type can't be null"); return new GraphQLInputObjectField( name, description, type, defaultValue, sort(directives, GraphQLInputObjectField.class, GraphQLDirective.class), - definition); + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), + definition, + deprecationReason); } } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/GraphQLInputObjectType.java b/src/main/java/graphql/schema/GraphQLInputObjectType.java index 91d5b02d1d..95ac38adef 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectType.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectType.java @@ -1,74 +1,60 @@ package graphql.schema; -import graphql.AssertException; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.Directives; +import graphql.DirectivesUtil; +import graphql.ExperimentalApi; import graphql.Internal; import graphql.PublicApi; import graphql.language.InputObjectTypeDefinition; import graphql.language.InputObjectTypeExtensionDefinition; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertValidName; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.util.FpKit.getByName; -import static java.util.Collections.emptyList; /** * graphql clearly delineates between the types of objects that represent the output of a query and input objects that * can be fed into a graphql mutation. You can define objects as input to graphql via this class - * - * See http://graphql.org/learn/schema/#input-types for more details on the concept + *

    + * See https://graphql.org/learn/schema/#input-types for more details on the concept */ @PublicApi public class GraphQLInputObjectType implements GraphQLNamedInputType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLInputFieldsContainer, GraphQLDirectiveContainer { private final String name; + private final boolean isOneOf; private final String description; - private final Map fieldMap = new LinkedHashMap<>(); + private final ImmutableMap fieldMap; private final InputObjectTypeDefinition definition; - private final List extensionDefinitions; - private final List directives; + private final ImmutableList extensionDefinitions; + private final DirectivesUtil.DirectivesHolder directives; public static final String CHILD_FIELD_DEFINITIONS = "fieldDefinitions"; - public static final String CHILD_DIRECTIVES = "directives"; - /** - * @param name the name - * @param description the description - * @param fields the fields - * - * @deprecated use the {@link #newInputObject()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLInputObjectType(String name, String description, List fields) { - this(name, description, fields, emptyList(), null); - } - - /** - * @param name the name - * @param description the description - * @param fields the fields - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newInputObject()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLInputObjectType(String name, String description, List fields, List directives, InputObjectTypeDefinition definition) { - this(name, description, fields, directives, definition, emptyList()); - } - - public GraphQLInputObjectType(String name, String description, List fields, List directives, InputObjectTypeDefinition definition, List extensionDefinitions) { + private GraphQLInputObjectType(String name, + String description, + List fields, + List directives, + List appliedDirectives, + InputObjectTypeDefinition definition, + List extensionDefinitions) { assertValidName(name); assertNotNull(fields, "fields can't be null"); assertNotNull(directives, "directives cannot be null"); @@ -76,19 +62,23 @@ public GraphQLInputObjectType(String name, String description, List(extensionDefinitions)); - this.directives = directives; - buildMap(fields); + this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); + this.directives = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); + this.fieldMap = buildDefinitionMap(fields); + this.isOneOf = hasOneOf(directives, appliedDirectives); + } + + private ImmutableMap buildDefinitionMap(List fieldDefinitions) { + return ImmutableMap.copyOf(FpKit.getByName(fieldDefinitions, GraphQLInputObjectField::getName, + (fld1, fld2) -> assertShouldNeverHappen("Duplicated definition for field '%s' in type '%s'", fld1.getName(), this.name))); } - private void buildMap(List fields) { - for (GraphQLInputObjectField field : fields) { - String name = field.getName(); - if (fieldMap.containsKey(name)) { - throw new AssertException("field " + name + " redefined"); - } - fieldMap.put(name, field); + private boolean hasOneOf(List directives, List appliedDirectives) { + if (appliedDirectives.stream().anyMatch(d -> Directives.OneOfDirective.getName().equals(d.getName()))) { + return true; } + // eventually GraphQLDirective as applied directive goes away + return directives.stream().anyMatch(d -> Directives.OneOfDirective.getName().equals(d.getName())); } @Override @@ -96,12 +86,26 @@ public String getName() { return name; } + + /** + * An Input Object is considered a OneOf Input Object if it has the `@oneOf` directive applied to it. + *

    + * This API is currently considered experimental since the graphql specification has not yet ratified + * this approach. + * + * @return true if it's a OneOf Input Object + */ + @ExperimentalApi + public boolean isOneOf() { + return isOneOf; + } + public String getDescription() { return description; } public List getFields() { - return new ArrayList<>(fieldMap.values()); + return getFieldDefinitions(); } public GraphQLInputObjectField getField(String name) { @@ -110,7 +114,37 @@ public GraphQLInputObjectField getField(String name) { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directives.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directives.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directives.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directives.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directives.getAppliedDirective(directiveName); } @Override @@ -120,7 +154,8 @@ public GraphQLInputObjectField getFieldDefinition(String name) { @Override public List getFieldDefinitions() { - return new ArrayList<>(fieldMap.values()); + ImmutableCollection values = fieldMap.values(); + return values instanceof ImmutableList ? (ImmutableList) values : ImmutableList.copyOf(values); } public InputObjectTypeDefinition getDefinition() { @@ -145,6 +180,12 @@ public GraphQLInputObjectType transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newInputObject(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLInputObjectType(this, context); @@ -153,7 +194,8 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { List children = new ArrayList<>(fieldMap.values()); - children.addAll(directives); + children.addAll(directives.getDirectives()); + children.addAll(directives.getAppliedDirectives()); return children; } @@ -161,18 +203,37 @@ public List getChildren() { public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() .children(CHILD_FIELD_DEFINITIONS, fieldMap.values()) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directives.getAppliedDirectives()) .build(); } @Override public GraphQLInputObjectType withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) - .replaceFields(newChildren.getChildren(CHILD_FIELD_DEFINITIONS)) + builder.replaceFields(newChildren.getChildren(CHILD_FIELD_DEFINITIONS)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + @Override public String toString() { return "GraphQLInputObjectType{" + @@ -193,11 +254,11 @@ public static Builder newInputObject() { } @PublicApi - public static class Builder extends GraphqlTypeBuilder { + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private InputObjectTypeDefinition definition; private List extensionDefinitions = emptyList(); private final Map fields = new LinkedHashMap<>(); - private final Map directives = new LinkedHashMap<>(); public Builder() { } @@ -208,25 +269,7 @@ public Builder(GraphQLInputObjectType existing) { this.definition = existing.getDefinition(); this.extensionDefinitions = existing.getExtensionDefinitions(); this.fields.putAll(getByName(existing.getFields(), GraphQLInputObjectField::getName)); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + copyExistingDirectives(existing); } public Builder definition(InputObjectTypeDefinition definition) { @@ -284,7 +327,6 @@ public Builder fields(List fields) { public Builder replaceFields(List fields) { this.fields.clear(); - ; fields.forEach(this::field); return this; } @@ -303,40 +345,41 @@ public Builder clearFields() { return this; } - public Builder withDirectives(GraphQLDirective... directives) { - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; + // -- the following are repeated to avoid a binary incompatibility problem -- + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLInputObjectType build() { @@ -345,6 +388,7 @@ public GraphQLInputObjectType build() { description, sort(fields, GraphQLInputObjectType.class, GraphQLInputObjectField.class), sort(directives, GraphQLInputObjectType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLInputObjectType.class, GraphQLAppliedDirective.class), definition, extensionDefinitions); } diff --git a/src/main/java/graphql/schema/GraphQLInputSchemaElement.java b/src/main/java/graphql/schema/GraphQLInputSchemaElement.java new file mode 100644 index 0000000000..86b5b620f1 --- /dev/null +++ b/src/main/java/graphql/schema/GraphQLInputSchemaElement.java @@ -0,0 +1,10 @@ +package graphql.schema; + +import graphql.PublicApi; + +/** + * A schema element that is concerned with input. + */ +@PublicApi +public interface GraphQLInputSchemaElement extends GraphQLSchemaElement { +} diff --git a/src/main/java/graphql/schema/GraphQLInputType.java b/src/main/java/graphql/schema/GraphQLInputType.java index 4999cbe4fe..46fcf91301 100644 --- a/src/main/java/graphql/schema/GraphQLInputType.java +++ b/src/main/java/graphql/schema/GraphQLInputType.java @@ -8,5 +8,5 @@ * to {@link graphql.schema.GraphQLOutputType}s which can only be used as graphql response output. */ @PublicApi -public interface GraphQLInputType extends GraphQLType { +public interface GraphQLInputType extends GraphQLType, GraphQLInputSchemaElement { } diff --git a/src/main/java/graphql/schema/GraphQLInputValueDefinition.java b/src/main/java/graphql/schema/GraphQLInputValueDefinition.java index b0f3af62d4..bce4e31fa5 100644 --- a/src/main/java/graphql/schema/GraphQLInputValueDefinition.java +++ b/src/main/java/graphql/schema/GraphQLInputValueDefinition.java @@ -11,7 +11,7 @@ * @see graphql.schema.GraphQLArgument */ @PublicApi -public interface GraphQLInputValueDefinition extends GraphQLDirectiveContainer { +public interface GraphQLInputValueDefinition extends GraphQLDirectiveContainer, GraphQLInputSchemaElement { T getType(); } diff --git a/src/main/java/graphql/schema/GraphQLInterfaceType.java b/src/main/java/graphql/schema/GraphQLInterfaceType.java index fe98f2fdab..eba21cc9aa 100644 --- a/src/main/java/graphql/schema/GraphQLInterfaceType.java +++ b/src/main/java/graphql/schema/GraphQLInterfaceType.java @@ -1,83 +1,71 @@ package graphql.schema; -import graphql.AssertException; +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.DirectivesUtil; import graphql.Internal; import graphql.PublicApi; import graphql.language.InterfaceTypeDefinition; import graphql.language.InterfaceTypeExtensionDefinition; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; +import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertValidName; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.schema.GraphqlTypeComparators.sortTypes; import static graphql.util.FpKit.getByName; -import static java.lang.String.format; -import static java.util.Collections.emptyList; +import static graphql.util.FpKit.valuesToList; /** * In graphql, an interface is an abstract type that defines the set of fields that a type must include to * implement that interface. *

    - * At runtime a {@link graphql.schema.TypeResolver} is used to take an interface object value and decide what {@link graphql.schema.GraphQLObjectType} + * At runtime a {@link TypeResolver} is used to take an interface object value and decide what {@link GraphQLObjectType} * represents this interface type. *

    - *

    - * See http://graphql.org/learn/schema/#interfaces for more details on the concept. + * See https://graphql.org/learn/schema/#interfaces for more details on the concept. */ @PublicApi -public class GraphQLInterfaceType implements GraphQLNamedType, GraphQLFieldsContainer, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer { +public class GraphQLInterfaceType implements GraphQLNamedType, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer, GraphQLImplementingType { private final String name; private final String description; - private final Map fieldDefinitionsByName = new LinkedHashMap<>(); + private final Map fieldDefinitionsByName; private final TypeResolver typeResolver; private final InterfaceTypeDefinition definition; - private final List extensionDefinitions; - private final List directives; - - public static final String CHILD_FIELD_DEFINITIONS = "fieldDefinitions"; - public static final String CHILD_DIRECTIVES = "directives"; + private final ImmutableList extensionDefinitions; + private final DirectivesUtil.DirectivesHolder directivesHolder; + private final ImmutableList originalInterfaces; + private final Comparator interfaceComparator; + private ImmutableList replacedInterfaces; - /** - * @param name the name - * @param description the description - * @param fieldDefinitions the fields - * @param typeResolver the type resolver function - * - * @deprecated use the {@link #newInterface()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLInterfaceType(String name, String description, List fieldDefinitions, TypeResolver typeResolver) { - this(name, description, fieldDefinitions, typeResolver, emptyList(), null); - } + public static final String CHILD_FIELD_DEFINITIONS = "fieldDefinitions"; + public static final String CHILD_INTERFACES = "interfaces"; - /** - * @param name the name - * @param description the description - * @param fieldDefinitions the fields - * @param typeResolver the type resolver function - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newInterface()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLInterfaceType(String name, String description, List fieldDefinitions, TypeResolver typeResolver, List directives, InterfaceTypeDefinition definition) { - this(name, description, fieldDefinitions, typeResolver, directives, definition, emptyList()); - } - - public GraphQLInterfaceType(String name, String description, List fieldDefinitions, TypeResolver typeResolver, List directives, InterfaceTypeDefinition definition, List extensionDefinitions) { + private GraphQLInterfaceType(String name, + String description, + List fieldDefinitions, + TypeResolver typeResolver, + List directives, + List appliedDirectives, + InterfaceTypeDefinition definition, + List extensionDefinitions, + List interfaces, + Comparator interfaceComparator) { assertValidName(name); assertNotNull(fieldDefinitions, "fieldDefinitions can't null"); assertNotNull(directives, "directives cannot be null"); @@ -86,19 +74,16 @@ public GraphQLInterfaceType(String name, String description, List(extensionDefinitions)); - this.directives = directives; - buildDefinitionMap(fieldDefinitions); + this.interfaceComparator = interfaceComparator; + this.originalInterfaces = ImmutableList.copyOf(sortTypes(interfaceComparator, interfaces)); + this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); + this.fieldDefinitionsByName = buildDefinitionMap(fieldDefinitions); } - private void buildDefinitionMap(List fieldDefinitions) { - for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { - String name = fieldDefinition.getName(); - if (fieldDefinitionsByName.containsKey(name)) { - throw new AssertException(format("Duplicated definition for field '%s' in interface '%s'", name, this.name)); - } - fieldDefinitionsByName.put(name, fieldDefinition); - } + private Map buildDefinitionMap(List fieldDefinitions) { + return FpKit.getByName(fieldDefinitions, GraphQLFieldDefinition::getName, + (fld1, fld2) -> assertShouldNeverHappen("Duplicated definition for field '%s' in interface '%s'", fld1.getName(), this.name)); } @Override @@ -106,10 +91,9 @@ public GraphQLFieldDefinition getFieldDefinition(String name) { return fieldDefinitionsByName.get(name); } - @Override public List getFieldDefinitions() { - return new ArrayList<>(fieldDefinitionsByName.values()); + return ImmutableList.copyOf(fieldDefinitionsByName.values()); } @Override @@ -122,6 +106,8 @@ public String getDescription() { } // to be removed in a future version when all code is in the code registry + @Internal + @Deprecated(since = "2018-12-03") TypeResolver getTypeResolver() { return typeResolver; } @@ -136,7 +122,37 @@ public List getExtensionDefinitions() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); } @Override @@ -163,6 +179,12 @@ public GraphQLInterfaceType transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newInterface(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLInterfaceType(this, context); @@ -171,7 +193,9 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { List children = new ArrayList<>(fieldDefinitionsByName.values()); - children.addAll(directives); + children.addAll(getInterfaces()); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); return children; } @@ -179,7 +203,9 @@ public List getChildren() { public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() .children(CHILD_FIELD_DEFINITIONS, fieldDefinitionsByName.values()) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_INTERFACES, originalInterfaces) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .build(); } @@ -188,9 +214,41 @@ public GraphQLInterfaceType withNewChildren(SchemaElementChildrenContainer newCh return transform(builder -> builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) .replaceFields(newChildren.getChildren(CHILD_FIELD_DEFINITIONS)) + .replaceInterfacesOrReferences(newChildren.getChildren(CHILD_INTERFACES)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + @Override + public List getInterfaces() { + if (replacedInterfaces != null) { + return replacedInterfaces; + } + return originalInterfaces; + } + + void replaceInterfaces(List interfaces) { + this.replacedInterfaces = ImmutableList.copyOf(sortTypes(interfaceComparator, interfaces)); + } + + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + public static Builder newInterface() { return new Builder(); } @@ -201,12 +259,13 @@ public static Builder newInterface(GraphQLInterfaceType existing) { @PublicApi - public static class Builder extends GraphqlTypeBuilder { + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private TypeResolver typeResolver; private InterfaceTypeDefinition definition; private List extensionDefinitions = emptyList(); private final Map fields = new LinkedHashMap<>(); - private final Map directives = new LinkedHashMap<>(); + private final Map interfaces = new LinkedHashMap<>(); public Builder() { } @@ -218,25 +277,8 @@ public Builder(GraphQLInterfaceType existing) { this.definition = existing.getDefinition(); this.extensionDefinitions = existing.getExtensionDefinitions(); this.fields.putAll(getByName(existing.getFieldDefinitions(), GraphQLFieldDefinition::getName)); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + this.interfaces.putAll(getByName(existing.originalInterfaces, GraphQLNamedType::getName)); + copyExistingDirectives(existing); } public Builder definition(InterfaceTypeDefinition definition) { @@ -314,47 +356,98 @@ public Builder clearFields() { return this; } - - @Deprecated + /** + * @param typeResolver the type resolver + * + * @return this builder + * + * @deprecated use {@link graphql.schema.GraphQLCodeRegistry.Builder#typeResolver(GraphQLInterfaceType, TypeResolver)} instead + */ + @Deprecated(since = "2018-12-03") public Builder typeResolver(TypeResolver typeResolver) { this.typeResolver = typeResolver; return this; } - public Builder withDirectives(GraphQLDirective... directives) { - for (GraphQLDirective directive : directives) { - withDirective(directive); + public Builder replaceInterfaces(List interfaces) { + return replaceInterfacesOrReferences(interfaces); + } + + public Builder replaceInterfacesOrReferences(List interfacesOrReferences) { + assertNotNull(interfacesOrReferences, "interfaces can't be null"); + this.interfaces.clear(); + for (GraphQLNamedOutputType schemaElement : interfacesOrReferences) { + if (schemaElement instanceof GraphQLInterfaceType || schemaElement instanceof GraphQLTypeReference) { + this.interfaces.put(schemaElement.getName(), schemaElement); + } else { + Assert.assertShouldNeverHappen("Unexpected type " + (schemaElement != null ? schemaElement.getClass() : "null")); + } } return this; } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); + public Builder withInterface(GraphQLInterfaceType interfaceType) { + assertNotNull(interfaceType, "interfaceType can't be null"); + this.interfaces.put(interfaceType.getName(), interfaceType); return this; } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); + public Builder withInterface(GraphQLTypeReference reference) { + assertNotNull(reference, "reference can't be null"); + this.interfaces.put(reference.getName(), reference); + return this; + } + + public Builder withInterfaces(GraphQLInterfaceType... interfaceType) { + for (GraphQLInterfaceType type : interfaceType) { + withInterface(type); + } + return this; + } + + public Builder withInterfaces(GraphQLTypeReference... references) { + for (GraphQLTypeReference reference : references) { + withInterface(reference); } return this; } + // -- the following are repeated to avoid a binary incompatibility problem -- + + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); + } + + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); + } + + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); + } + + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLInterfaceType build() { @@ -364,8 +457,12 @@ public GraphQLInterfaceType build() { sort(fields, GraphQLInterfaceType.class, GraphQLFieldDefinition.class), typeResolver, sort(directives, GraphQLInterfaceType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), definition, - extensionDefinitions); + extensionDefinitions, + valuesToList(interfaces), + getComparator(GraphQLInterfaceType.class, GraphQLInterfaceType.class) + ); } } } diff --git a/src/main/java/graphql/schema/GraphQLList.java b/src/main/java/graphql/schema/GraphQLList.java index ae5fff3d0f..053ffbd9de 100644 --- a/src/main/java/graphql/schema/GraphQLList.java +++ b/src/main/java/graphql/schema/GraphQLList.java @@ -7,13 +7,14 @@ import java.util.Collections; import java.util.List; +import java.util.Objects; import static graphql.Assert.assertNotNull; /** * A modified type that indicates there is a list of the underlying wrapped type, eg a list of strings or a list of booleans. - * - * See http://graphql.org/learn/schema/#lists-and-non-null for more details on the concept + *

    + * See https://graphql.org/learn/schema/#lists-and-non-null for more details on the concept */ @PublicApi public class GraphQLList implements GraphQLType, GraphQLInputType, GraphQLOutputType, GraphQLModifiedType, GraphQLNullableType { @@ -50,29 +51,28 @@ public GraphQLType getWrappedType() { return replacedWrappedType != null ? replacedWrappedType : originalWrappedType; } + public GraphQLType getOriginalWrappedType() { + return originalWrappedType; + } + void replaceType(GraphQLType type) { this.replacedWrappedType = type; } - @Override - public boolean equals(Object o) { + + public boolean isEqualTo(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } - GraphQLList that = (GraphQLList) o; GraphQLType wrappedType = getWrappedType(); - - return !(wrappedType != null ? !wrappedType.equals(that.getWrappedType()) : that.getWrappedType() != null); - - } - - @Override - public int hashCode() { - return getWrappedType() != null ? getWrappedType().hashCode() : 0; + if (wrappedType instanceof GraphQLNonNull) { + return ((GraphQLNonNull) wrappedType).isEqualTo(that.getWrappedType()); + } + return Objects.equals(wrappedType, that.getWrappedType()); } @Override @@ -97,9 +97,31 @@ public GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newCh return list(newChildren.getChildOrNull(CHILD_WRAPPED_TYPE)); } + @Override + public GraphQLSchemaElement copy() { + return new GraphQLList(originalWrappedType); + } + + @Override public String toString() { return GraphQLTypeUtil.simplePrint(this); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + } diff --git a/src/main/java/graphql/schema/GraphQLModifiedType.java b/src/main/java/graphql/schema/GraphQLModifiedType.java index 5bda290ee8..27e2ecc047 100644 --- a/src/main/java/graphql/schema/GraphQLModifiedType.java +++ b/src/main/java/graphql/schema/GraphQLModifiedType.java @@ -1,12 +1,15 @@ package graphql.schema; +import graphql.PublicApi; + /** * A modified type wraps another graphql type and modifies it behavior * * @see graphql.schema.GraphQLNonNull * @see graphql.schema.GraphQLList */ +@PublicApi public interface GraphQLModifiedType extends GraphQLType { GraphQLType getWrappedType(); diff --git a/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java b/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java index 15ff06d201..704bc99623 100644 --- a/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java +++ b/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java @@ -2,6 +2,8 @@ import graphql.PublicApi; import graphql.language.Node; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; /** * A Schema element which has a name and also a description and AST Node which it is based on. @@ -9,8 +11,16 @@ @PublicApi public interface GraphQLNamedSchemaElement extends GraphQLSchemaElement { + /** + * @return the name of this element. This cant be null + */ + @NonNull String getName(); + /** + * @return the description of this element. This can be null + */ + @Nullable String getDescription(); /** @@ -20,5 +30,6 @@ public interface GraphQLNamedSchemaElement extends GraphQLSchemaElement { * * @return Node which this element is based on. Can be null. */ + @Nullable Node getDefinition(); } diff --git a/src/main/java/graphql/schema/GraphQLNonNull.java b/src/main/java/graphql/schema/GraphQLNonNull.java index 27f9e1fef2..914b38429f 100644 --- a/src/main/java/graphql/schema/GraphQLNonNull.java +++ b/src/main/java/graphql/schema/GraphQLNonNull.java @@ -7,17 +7,17 @@ import java.util.Collections; import java.util.List; +import java.util.Objects; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertTrue; /** * A modified type that indicates there the underlying wrapped type will not be null. - * - * See http://graphql.org/learn/schema/#lists-and-non-null for more details on the concept + *

    + * See https://graphql.org/learn/schema/#lists-and-non-null for more details on the concept */ @PublicApi - public class GraphQLNonNull implements GraphQLType, GraphQLInputType, GraphQLOutputType, GraphQLModifiedType { /** @@ -46,8 +46,8 @@ public GraphQLNonNull(GraphQLType wrappedType) { } private void assertNonNullWrapping(GraphQLType wrappedType) { - assertTrue(!GraphQLTypeUtil.isNonNull(wrappedType), String.format("A non null type cannot wrap an existing non null type '%s'", - GraphQLTypeUtil.simplePrint(wrappedType))); + assertTrue(!GraphQLTypeUtil.isNonNull(wrappedType), () -> + "A non null type cannot wrap an existing non null type"); } @Override @@ -55,32 +55,30 @@ public GraphQLType getWrappedType() { return replacedWrappedType != null ? replacedWrappedType : originalWrappedType; } + public GraphQLType getOriginalWrappedType() { + return originalWrappedType; + } void replaceType(GraphQLType type) { assertNonNullWrapping(type); this.replacedWrappedType = type; } - @Override - public boolean equals(Object o) { + public boolean isEqualTo(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } - GraphQLNonNull that = (GraphQLNonNull) o; GraphQLType wrappedType = getWrappedType(); - - return !(wrappedType != null ? !wrappedType.equals(that.getWrappedType()) : that.getWrappedType() != null); - + if (wrappedType instanceof GraphQLList) { + return ((GraphQLList) wrappedType).isEqualTo(that.getWrappedType()); + } + return Objects.equals(wrappedType, that.getWrappedType()); } - @Override - public int hashCode() { - return getWrappedType() != null ? getWrappedType().hashCode() : 0; - } @Override public String toString() { @@ -108,4 +106,27 @@ public SchemaElementChildrenContainer getChildrenWithTypeReferences() { public GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newChildren) { return nonNull(newChildren.getChildOrNull(CHILD_WRAPPED_TYPE)); } + + @Override + public GraphQLSchemaElement copy() { + return new GraphQLNonNull(originalWrappedType); + } + + + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + } diff --git a/src/main/java/graphql/schema/GraphQLNullableType.java b/src/main/java/graphql/schema/GraphQLNullableType.java index 0c978823dd..584f9e0288 100644 --- a/src/main/java/graphql/schema/GraphQLNullableType.java +++ b/src/main/java/graphql/schema/GraphQLNullableType.java @@ -1,5 +1,8 @@ package graphql.schema; +import graphql.PublicApi; + +@PublicApi public interface GraphQLNullableType extends GraphQLType { } diff --git a/src/main/java/graphql/schema/GraphQLObjectType.java b/src/main/java/graphql/schema/GraphQLObjectType.java index d7fd441efa..199c9cc009 100644 --- a/src/main/java/graphql/schema/GraphQLObjectType.java +++ b/src/main/java/graphql/schema/GraphQLObjectType.java @@ -1,99 +1,66 @@ package graphql.schema; -import graphql.AssertException; +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.DirectivesUtil; import graphql.Internal; import graphql.PublicApi; import graphql.language.ObjectTypeDefinition; import graphql.language.ObjectTypeExtensionDefinition; +import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertValidName; -import static graphql.schema.GraphqlTypeComparators.asIsOrder; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.schema.GraphqlTypeComparators.sortTypes; import static graphql.util.FpKit.getByName; import static graphql.util.FpKit.valuesToList; -import static java.lang.String.format; -import static java.util.Collections.emptyList; -import static java.util.Collections.unmodifiableList; /** * This is the work horse type and represents an object with one or more field values that can be retrieved * by the graphql system. - * + *

    * Those fields can themselves by object types and so on until you reach the leaf nodes of the type tree represented - * by {@link graphql.schema.GraphQLScalarType}s. - * - * See http://graphql.org/learn/schema/#object-types-and-fields for more details on the concept. + * by {@link GraphQLScalarType}s. + *

    + * See https://graphql.org/learn/schema/#object-types-and-fields for more details on the concept. */ @PublicApi -public class GraphQLObjectType implements GraphQLNamedOutputType, GraphQLFieldsContainer, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer { - +public class GraphQLObjectType implements GraphQLNamedOutputType, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer, GraphQLImplementingType { private final String name; private final String description; private final Comparator interfaceComparator; - private final Map fieldDefinitionsByName = new LinkedHashMap<>(); - private final List originalInterfaces; - private final List directives; + private final Map fieldDefinitionsByName; + private final ImmutableList originalInterfaces; + private final DirectivesUtil.DirectivesHolder directivesHolder; private final ObjectTypeDefinition definition; - private final List extensionDefinitions; + private final ImmutableList extensionDefinitions; - private List replacedInterfaces; + private ImmutableList replacedInterfaces; public static final String CHILD_INTERFACES = "interfaces"; - public static final String CHILD_DIRECTIVES = "directives"; public static final String CHILD_FIELD_DEFINITIONS = "fieldDefinitions"; - - /** - * @param name the name - * @param description the description - * @param fieldDefinitions the fields - * @param interfaces the possible interfaces - * - * @deprecated use the {@link #newObject()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLObjectType(String name, String description, List fieldDefinitions, - List interfaces) { - this(name, description, fieldDefinitions, interfaces, emptyList(), null); - } - - /** - * @param name the name - * @param description the description - * @param fieldDefinitions the fields - * @param interfaces the possible interfaces - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newObject()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLObjectType(String name, String description, List fieldDefinitions, - List interfaces, List directives, ObjectTypeDefinition definition) { - this(name, description, fieldDefinitions, interfaces, directives, definition, emptyList(), asIsOrder()); - } - - private GraphQLObjectType(String name, String description, List fieldDefinitions, List interfaces, List directives, + List appliedDirectives, ObjectTypeDefinition definition, List extensionDefinitions, Comparator interfaceComparator) { @@ -103,30 +70,55 @@ private GraphQLObjectType(String name, this.name = name; this.description = description; this.interfaceComparator = interfaceComparator; - this.originalInterfaces = sortTypes(interfaceComparator, interfaces); + this.originalInterfaces = ImmutableList.copyOf(sortTypes(interfaceComparator, interfaces)); this.definition = definition; - this.extensionDefinitions = Collections.unmodifiableList(new ArrayList<>(extensionDefinitions)); - this.directives = assertNotNull(directives); - buildDefinitionMap(fieldDefinitions); + this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); + this.fieldDefinitionsByName = buildDefinitionMap(fieldDefinitions); } void replaceInterfaces(List interfaces) { - this.replacedInterfaces = sortTypes(interfaceComparator, interfaces); + this.replacedInterfaces = ImmutableList.copyOf(sortTypes(interfaceComparator, interfaces)); } - private void buildDefinitionMap(List fieldDefinitions) { - for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { - String name = fieldDefinition.getName(); - if (fieldDefinitionsByName.containsKey(name)) { - throw new AssertException(format("Duplicated definition for field '%s' in type '%s'", name, this.name)); - } - fieldDefinitionsByName.put(name, fieldDefinition); - } + private Map buildDefinitionMap(List fieldDefinitions) { + return FpKit.getByName(fieldDefinitions, GraphQLFieldDefinition::getName, + (fld1, fld2) -> assertShouldNeverHappen("Duplicated definition for field '%s' in type '%s'", fld1.getName(), this.name)); } @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); } @Override @@ -136,20 +128,15 @@ public GraphQLFieldDefinition getFieldDefinition(String name) { @Override public List getFieldDefinitions() { - return new ArrayList<>(fieldDefinitionsByName.values()); + return ImmutableList.copyOf(fieldDefinitionsByName.values()); } - - /** - * @return This returns GraphQLInterface or GraphQLTypeReference instances, if the type - * references are not resolved yet. After they are resolved it contains only GraphQLInterface. - * Reference resolving happens when a full schema is built. - */ + @Override public List getInterfaces() { if (replacedInterfaces != null) { - return Collections.unmodifiableList(replacedInterfaces); + return replacedInterfaces; } - return unmodifiableList(originalInterfaces); + return originalInterfaces; } public String getDescription() { @@ -194,6 +181,11 @@ public GraphQLObjectType transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newObject(this).build(); + } + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLObjectType(this, context); @@ -203,7 +195,8 @@ public TraversalControl accept(TraverserContext context, G public List getChildren() { List children = new ArrayList<>(fieldDefinitionsByName.values()); children.addAll(getInterfaces()); - children.addAll(directives); + children.addAll(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); return children; } @@ -211,8 +204,9 @@ public List getChildren() { public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return SchemaElementChildrenContainer.newSchemaElementChildrenContainer() .children(CHILD_FIELD_DEFINITIONS, fieldDefinitionsByName.values()) - .children(CHILD_DIRECTIVES, directives) .children(CHILD_INTERFACES, originalInterfaces) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) .build(); } @@ -220,12 +214,31 @@ public SchemaElementChildrenContainer getChildrenWithTypeReferences() { @Override public GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + builder .replaceFields(newChildren.getChildren(CHILD_FIELD_DEFINITIONS)) .replaceInterfaces(newChildren.getChildren(CHILD_INTERFACES)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + public static Builder newObject() { return new Builder(); } @@ -235,12 +248,12 @@ public static Builder newObject(GraphQLObjectType existing) { } @PublicApi - public static class Builder extends GraphqlTypeBuilder { + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private ObjectTypeDefinition definition; private List extensionDefinitions = emptyList(); private final Map fields = new LinkedHashMap<>(); private final Map interfaces = new LinkedHashMap<>(); - private final Map directives = new LinkedHashMap<>(); public Builder() { } @@ -252,25 +265,7 @@ public Builder(GraphQLObjectType existing) { extensionDefinitions = existing.getExtensionDefinitions(); fields.putAll(getByName(existing.getFieldDefinitions(), GraphQLFieldDefinition::getName)); interfaces.putAll(getByName(existing.originalInterfaces, GraphQLNamedType::getName)); - directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + copyExistingDirectives(existing); } public Builder definition(ObjectTypeDefinition definition) { @@ -355,11 +350,15 @@ public Builder withInterface(GraphQLInterfaceType interfaceType) { return this; } - public Builder replaceInterfaces(List interfaces) { + public Builder replaceInterfaces(List interfaces) { assertNotNull(interfaces, "interfaces can't be null"); this.interfaces.clear(); - for (GraphQLInterfaceType interfaceType : interfaces) { - this.interfaces.put(interfaceType.getName(), interfaceType); + for (GraphQLNamedOutputType schemaElement : interfaces) { + if (schemaElement instanceof GraphQLInterfaceType || schemaElement instanceof GraphQLTypeReference) { + this.interfaces.put(schemaElement.getName(), schemaElement); + } else { + Assert.assertShouldNeverHappen("Unexpected type " + (schemaElement != null ? schemaElement.getClass() : "null")); + } } return this; } @@ -377,15 +376,6 @@ public Builder withInterfaces(GraphQLInterfaceType... interfaceType) { return this; } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; - } - public Builder withInterfaces(GraphQLTypeReference... references) { for (GraphQLTypeReference reference : references) { withInterface(reference); @@ -403,32 +393,41 @@ public Builder clearInterfaces() { return this; } + // -- the following are repeated to avoid a binary incompatibility problem -- + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); + } + + @Override public Builder withDirectives(GraphQLDirective... directives) { - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; + return super.withDirectives(directives); } + @Override public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLObjectType build() { @@ -438,6 +437,7 @@ public GraphQLObjectType build() { sort(fields, GraphQLObjectType.class, GraphQLFieldDefinition.class), valuesToList(interfaces), sort(directives, GraphQLObjectType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLObjectType.class, GraphQLAppliedDirective.class), definition, extensionDefinitions, getComparator(GraphQLObjectType.class, GraphQLInterfaceType.class) diff --git a/src/main/java/graphql/schema/GraphQLScalarType.java b/src/main/java/graphql/schema/GraphQLScalarType.java index 7231b771e1..dbddab7510 100644 --- a/src/main/java/graphql/schema/GraphQLScalarType.java +++ b/src/main/java/graphql/schema/GraphQLScalarType.java @@ -1,6 +1,8 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; +import graphql.DirectivesUtil; import graphql.Internal; import graphql.PublicApi; import graphql.language.ScalarTypeDefinition; @@ -9,17 +11,15 @@ import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertValidName; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.schema.SchemaElementChildrenContainer.newSchemaElementChildrenContainer; -import static graphql.util.FpKit.getByName; -import static java.util.Collections.emptyList; /** * A scalar type is a leaf node in the graphql tree of types. This class allows you to define new scalar types. @@ -28,55 +28,35 @@ * GraphQL provides a number of built‐in scalars, but type systems can add additional scalars with semantic meaning, * for example, a GraphQL system could define a scalar called Time which, while serialized as a string, promises to * conform to ISO‐8601. When querying a field of type Time, you can then rely on the ability to parse the result with an ISO‐8601 parser and use a client‐specific primitive for time. - * - * From the spec : http://facebook.github.io/graphql/#sec-Scalars + *

    + * From the spec : https://spec.graphql.org/October2021/#sec-Scalars * - * + *

    * graphql-java ships with a set of predefined scalar types via {@link graphql.Scalars} * * @see graphql.Scalars */ -public class GraphQLScalarType implements GraphQLNamedInputType, GraphQLNamedOutputType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer { +@PublicApi +public class +GraphQLScalarType implements GraphQLNamedInputType, GraphQLNamedOutputType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer { private final String name; private final String description; - private final Coercing coercing; + private final Coercing coercing; private final ScalarTypeDefinition definition; - private final List extensionDefinitions; - private final List directives; - - public static final String CHILD_DIRECTIVES = "directives"; + private final ImmutableList extensionDefinitions; + private final DirectivesUtil.DirectivesHolder directivesHolder; + private final String specifiedByUrl; - - /** - * @param name the name - * @param description the description - * @param coercing the coercing function - * - * @deprecated use the {@link #newScalar()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLScalarType(String name, String description, Coercing coercing) { - this(name, description, coercing, emptyList(), null); - } - - /** - * @param name the name - * @param description the description - * @param coercing the coercing function - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newScalar()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLScalarType(String name, String description, Coercing coercing, List directives, ScalarTypeDefinition definition) { - this(name, description, coercing, directives, definition, emptyList()); - } - - private GraphQLScalarType(String name, String description, Coercing coercing, List directives, ScalarTypeDefinition definition, List extensionDefinitions) { + private GraphQLScalarType(String name, + String description, + Coercing coercing, + List directives, + List appliedDirectives, + ScalarTypeDefinition definition, + List extensionDefinitions, + String specifiedByUrl) { assertValidName(name); assertNotNull(coercing, "coercing can't be null"); assertNotNull(directives, "directives can't be null"); @@ -85,8 +65,9 @@ private GraphQLScalarType(String name, String description, Coercing coercing, Li this.description = description; this.coercing = coercing; this.definition = definition; - this.directives = directives; - this.extensionDefinitions = Collections.unmodifiableList(new ArrayList<>(extensionDefinitions)); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); + this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); + this.specifiedByUrl = specifiedByUrl; } @Override @@ -99,8 +80,11 @@ public String getDescription() { return description; } + public String getSpecifiedByUrl() { + return specifiedByUrl; + } - public Coercing getCoercing() { + public Coercing getCoercing() { return coercing; } @@ -114,7 +98,37 @@ public List getExtensionDefinitions() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directivesHolder.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directivesHolder.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directivesHolder.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directivesHolder.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directivesHolder.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directivesHolder.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directivesHolder.getAppliedDirective(directiveName); } @Override @@ -140,6 +154,12 @@ public GraphQLScalarType transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newScalar(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLScalarType(this, context); @@ -147,13 +167,16 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { - return new ArrayList<>(directives); + List children = new ArrayList<>(directivesHolder.getDirectives()); + children.addAll(directivesHolder.getAppliedDirectives()); + return children; } @Override public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return newSchemaElementChildrenContainer() - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directivesHolder.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directivesHolder.getAppliedDirectives()) .build(); } @@ -161,9 +184,27 @@ public SchemaElementChildrenContainer getChildrenWithTypeReferences() { public GraphQLScalarType withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + public static Builder newScalar() { return new Builder(); } @@ -174,11 +215,12 @@ public static Builder newScalar(GraphQLScalarType existing) { @PublicApi - public static class Builder extends GraphqlTypeBuilder { - private Coercing coercing; + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { + private Coercing coercing; private ScalarTypeDefinition definition; private List extensionDefinitions = emptyList(); - private final Map directives = new LinkedHashMap<>(); + private String specifiedByUrl; public Builder() { } @@ -189,24 +231,12 @@ public Builder(GraphQLScalarType existing) { coercing = existing.getCoercing(); definition = existing.getDefinition(); extensionDefinitions = existing.getExtensionDefinitions(); - directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); + specifiedByUrl = existing.getSpecifiedByUrl(); + copyExistingDirectives(existing); } - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); + public Builder specifiedByUrl(String specifiedByUrl) { + this.specifiedByUrl = specifiedByUrl; return this; } @@ -220,45 +250,46 @@ public Builder extensionDefinitions(List extensio return this; } - public Builder coercing(Coercing coercing) { + public Builder coercing(Coercing coercing) { this.coercing = coercing; return this; } - public Builder withDirectives(GraphQLDirective... directives) { - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; + // -- the following are repeated to avoid a binary incompatibility problem -- + + @Override + public Builder replaceDirectives(List directives) { + return super.replaceDirectives(directives); } - public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); } - public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; + @Override + public Builder withDirective(GraphQLDirective directive) { + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLScalarType build() { @@ -266,8 +297,10 @@ public GraphQLScalarType build() { description, coercing, sort(directives, GraphQLScalarType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLScalarType.class, GraphQLAppliedDirective.class), definition, - extensionDefinitions); + extensionDefinitions, + specifiedByUrl); } } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/GraphQLSchema.java b/src/main/java/graphql/schema/GraphQLSchema.java index 653bc718cb..ec272c3131 100644 --- a/src/main/java/graphql/schema/GraphQLSchema.java +++ b/src/main/java/graphql/schema/GraphQLSchema.java @@ -1,31 +1,40 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.Assert; import graphql.Directives; +import graphql.DirectivesUtil; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.introspection.Introspection; import graphql.language.SchemaDefinition; import graphql.language.SchemaExtensionDefinition; +import graphql.schema.impl.GraphQLTypeCollectingVisitor; +import graphql.schema.impl.SchemaUtil; import graphql.schema.validation.InvalidSchemaException; import graphql.schema.validation.SchemaValidationError; import graphql.schema.validation.SchemaValidator; -import graphql.schema.visibility.GraphqlFieldVisibility; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.TreeMap; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertTrue; -import static graphql.DirectivesUtil.directivesByName; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.map; +import static graphql.collect.ImmutableKit.nonNullCopyOf; import static graphql.schema.GraphqlTypeComparators.byNameAsc; import static graphql.schema.GraphqlTypeComparators.sortTypes; import static java.util.Arrays.asList; @@ -34,137 +43,318 @@ * The schema represents the combined type system of the graphql engine. This is how the engine knows * what graphql queries represent what data. *

    - * See http://graphql.org/learn/schema/#type-language for more details + * See https://graphql.org/learn/schema/#type-language for more details */ @PublicApi public class GraphQLSchema { - private final GraphQLObjectType queryType; private final GraphQLObjectType mutationType; private final GraphQLObjectType subscriptionType; - private final Set additionalTypes = new LinkedHashSet<>(); - private final Set directives = new LinkedHashSet<>(); - private final Map schemaDirectives = new LinkedHashMap<>(); - private final SchemaDefinition definition; - private final List extensionDefinitions; + private final GraphQLObjectType introspectionSchemaType; + private final ImmutableSet additionalTypes; + private final GraphQLFieldDefinition introspectionSchemaField; + private final GraphQLFieldDefinition introspectionTypeField; + // we don't allow modification of "__typename" - it's a scalar + private final GraphQLFieldDefinition __typename = Introspection.TypeNameMetaFieldDef; + private final DirectivesUtil.DirectivesHolder directiveDefinitionsHolder; + private final DirectivesUtil.DirectivesHolder schemaAppliedDirectivesHolder; + private final SchemaDefinition definition; + private final ImmutableList extensionDefinitions; + private final String description; private final GraphQLCodeRegistry codeRegistry; - private final Map typeMap; - private final Map> byInterface; - - /** - * @param queryType the query type - * @deprecated use the {@link #newSchema()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLSchema(GraphQLObjectType queryType) { - this(queryType, null, Collections.emptySet()); - } - - /** - * @param queryType the query type - * @param mutationType the mutation type - * @param additionalTypes additional types - * @deprecated use the {@link #newSchema()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLSchema(GraphQLObjectType queryType, GraphQLObjectType mutationType, Set additionalTypes) { - this(queryType, mutationType, null, additionalTypes); - } + private final ImmutableMap typeMap; + private final ImmutableMap> interfaceNameToObjectTypes; + private final ImmutableMap> interfaceNameToObjectTypeNames; - /** - * @param queryType the query type - * @param mutationType the mutation type - * @param subscriptionType the subscription type - * @param additionalTypes additional types - * @deprecated use the {@link #newSchema()} builder pattern instead, as this constructor will be made private in a future version. + /* + * This constructs partial GraphQL schema object which has the schema (query / mutation / subscription) trees + * in it but it does not have the collected types, code registry nor the type references replaced + * + * But it can be traversed to discover all that and filled out later via another constructor. + * */ @Internal - @Deprecated - public GraphQLSchema(GraphQLObjectType queryType, GraphQLObjectType mutationType, GraphQLObjectType subscriptionType, Set additionalTypes) { - this(newSchema().query(queryType).mutation(mutationType).subscription(subscriptionType).additionalTypes(additionalTypes), false); - } - - @Internal - private GraphQLSchema(Builder builder, boolean afterTransform) { + private GraphQLSchema(Builder builder) { assertNotNull(builder.additionalTypes, "additionalTypes can't be null"); assertNotNull(builder.queryType, "queryType can't be null"); assertNotNull(builder.additionalDirectives, "directives can't be null"); assertNotNull(builder.codeRegistry, "codeRegistry can't be null"); - this.queryType = builder.queryType; this.mutationType = builder.mutationType; this.subscriptionType = builder.subscriptionType; - this.additionalTypes.addAll(builder.additionalTypes); - this.directives.addAll(builder.additionalDirectives); - this.schemaDirectives.putAll(builder.schemaDirectives); + this.additionalTypes = ImmutableSet.copyOf(builder.additionalTypes); + this.introspectionSchemaType = builder.introspectionSchemaType; + this.introspectionSchemaField = Introspection.buildSchemaField(builder.introspectionSchemaType); + this.introspectionTypeField = Introspection.buildTypeField(builder.introspectionSchemaType); + this.directiveDefinitionsHolder = new DirectivesUtil.DirectivesHolder(builder.additionalDirectives, emptyList()); + this.schemaAppliedDirectivesHolder = new DirectivesUtil.DirectivesHolder(builder.schemaDirectives, builder.schemaAppliedDirectives); this.definition = builder.definition; - this.extensionDefinitions = builder.extensionDefinitions == null ? Collections.emptyList() : builder.extensionDefinitions; - this.codeRegistry = builder.codeRegistry; - // sorted by type name - SchemaUtil schemaUtil = new SchemaUtil(); - this.typeMap = new TreeMap<>(schemaUtil.allTypes(this, additionalTypes, afterTransform)); - this.byInterface = new TreeMap<>(schemaUtil.groupImplementations(this)); + this.extensionDefinitions = nonNullCopyOf(builder.extensionDefinitions); + this.description = builder.description; + + this.codeRegistry = null; + this.typeMap = ImmutableKit.emptyMap(); + this.interfaceNameToObjectTypes = ImmutableKit.emptyMap(); + this.interfaceNameToObjectTypeNames = ImmutableKit.emptyMap(); } - // This can be removed once we no longer extract legacy code from types such as data fetchers but for now - // we need it to make an efficient copy that does not walk the types twice + /* + * This constructs a fully fledged graphql schema object that has not yet had its type references replaced + * but it's otherwise complete + */ @Internal - private GraphQLSchema(GraphQLSchema otherSchema, GraphQLCodeRegistry codeRegistry) { - this.queryType = otherSchema.queryType; - this.mutationType = otherSchema.mutationType; - this.subscriptionType = otherSchema.subscriptionType; - this.additionalTypes.addAll(otherSchema.additionalTypes); - this.directives.addAll(otherSchema.directives); - this.schemaDirectives.putAll(otherSchema.schemaDirectives); - this.definition = otherSchema.definition; - this.extensionDefinitions = otherSchema.extensionDefinitions == null ? Collections.emptyList() : otherSchema.extensionDefinitions; + public GraphQLSchema(GraphQLSchema existingSchema, + GraphQLCodeRegistry codeRegistry, + ImmutableMap typeMap, + ImmutableMap> interfaceNameToObjectTypes + ) { + assertNotNull(codeRegistry, "codeRegistry can't be null"); + + this.queryType = existingSchema.queryType; + this.mutationType = existingSchema.mutationType; + this.subscriptionType = existingSchema.subscriptionType; + this.additionalTypes = ImmutableSet.copyOf(existingSchema.additionalTypes); + this.introspectionSchemaType = existingSchema.introspectionSchemaType; + this.introspectionSchemaField = Introspection.buildSchemaField(existingSchema.introspectionSchemaType); + this.introspectionTypeField = Introspection.buildTypeField(existingSchema.introspectionSchemaType); + this.directiveDefinitionsHolder = existingSchema.directiveDefinitionsHolder; + this.schemaAppliedDirectivesHolder = existingSchema.schemaAppliedDirectivesHolder; + this.definition = existingSchema.definition; + this.extensionDefinitions = existingSchema.extensionDefinitions; + this.description = existingSchema.description; this.codeRegistry = codeRegistry; + this.typeMap = typeMap; + this.interfaceNameToObjectTypes = interfaceNameToObjectTypes; + this.interfaceNameToObjectTypeNames = buildInterfacesToObjectName(interfaceNameToObjectTypes); + } - this.typeMap = otherSchema.typeMap; - this.byInterface = otherSchema.byInterface; + /* + * a constructor aimed at the simple builder - the type tree can be taken as is! + */ + @Internal + public GraphQLSchema(BuilderWithoutTypes builder) { + assertNotNull(builder.codeRegistry, "codeRegistry can't be null"); + + GraphQLSchema existingSchema = builder.existingSchema; + + this.queryType = existingSchema.queryType; + this.mutationType = existingSchema.mutationType; + this.subscriptionType = existingSchema.subscriptionType; + this.additionalTypes = existingSchema.additionalTypes; + this.introspectionSchemaType = existingSchema.introspectionSchemaType; + this.introspectionSchemaField = existingSchema.introspectionSchemaField; + this.introspectionTypeField = existingSchema.introspectionTypeField; + this.directiveDefinitionsHolder = existingSchema.directiveDefinitionsHolder; + this.schemaAppliedDirectivesHolder = existingSchema.schemaAppliedDirectivesHolder; + this.definition = existingSchema.definition; + this.extensionDefinitions = existingSchema.extensionDefinitions; + this.typeMap = existingSchema.typeMap; + this.interfaceNameToObjectTypes = existingSchema.interfaceNameToObjectTypes; + this.interfaceNameToObjectTypeNames = existingSchema.interfaceNameToObjectTypeNames; + + this.description = builder.description; + this.codeRegistry = builder.codeRegistry; } + private static GraphQLDirective[] schemaDirectivesArray(GraphQLSchema existingSchema) { + return existingSchema.schemaAppliedDirectivesHolder.getDirectives().toArray(new GraphQLDirective[0]); + } + + private static GraphQLAppliedDirective[] schemaAppliedDirectivesArray(GraphQLSchema existingSchema) { + return existingSchema.schemaAppliedDirectivesHolder.getAppliedDirectives().toArray(new GraphQLAppliedDirective[0]); + } + + private static List getAllTypesAsList(ImmutableMap typeMap) { + return sortTypes(byNameAsc(), typeMap.values()); + } + + private static ImmutableMap> buildInterfacesToObjectTypes(Map> groupImplementations) { + ImmutableMap.Builder> map = ImmutableMap.builder(); + for (Map.Entry> e : groupImplementations.entrySet()) { + ImmutableList sortedObjectTypes = ImmutableList.copyOf(sortTypes(byNameAsc(), e.getValue())); + map.put(e.getKey(), sortedObjectTypes); + } + return map.build(); + } + + private static ImmutableMap> buildInterfacesToObjectName(ImmutableMap> byInterface) { + ImmutableMap.Builder> map = ImmutableMap.builder(); + for (Map.Entry> e : byInterface.entrySet()) { + ImmutableList objectTypeNames = map(e.getValue(), GraphQLObjectType::getName); + map.put(e.getKey(), objectTypeNames); + } + return map.build(); + } public GraphQLCodeRegistry getCodeRegistry() { return codeRegistry; } + /** + * @return the special system field called "__schema" + */ + public GraphQLFieldDefinition getIntrospectionSchemaFieldDefinition() { + return introspectionSchemaField; + } + + /** + * @return the special system field called "__type" + */ + public GraphQLFieldDefinition getIntrospectionTypeFieldDefinition() { + return introspectionTypeField; + } + + /** + * @return the special system field called "__typename" + */ + public GraphQLFieldDefinition getIntrospectionTypenameFieldDefinition() { + return __typename; + } + + public GraphQLObjectType getIntrospectionSchemaType() { + return introspectionSchemaType; + } + public Set getAdditionalTypes() { return additionalTypes; } - public GraphQLType getType(String typeName) { + /** + * Gets the named type from the schema or null if it's not present + * + * @param typeName the name of the type to retrieve + * + * @return the type + */ + public @Nullable GraphQLType getType(@NonNull String typeName) { return typeMap.get(typeName); } + /** + * All types with the provided names. + * throws {@link graphql.AssertException} when a type name could not be resolved + * + * @param typeNames the type names to get + * @param for two + * + * @return The List of resolved types. + */ + @SuppressWarnings("unchecked") + public List getTypes(Collection typeNames) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (String typeName : typeNames) { + builder.add((T) assertNotNull(typeMap.get(typeName), "No type found for name %s", typeName)); + } + return builder.build(); + } + + /** + * Gets the named type from the schema or null if it's not present. + *

    + * Warning - you are inviting class cast errors if the types are not what you expect. + * + * @param typeName the name of the type to retrieve + * @param for two + * + * @return the type cast to the target type. + */ + public T getTypeAs(String typeName) { + //noinspection unchecked + return (T) typeMap.get(typeName); + } + + /** + * Returns true if the schema contains a type with the specified name + * + * @param typeName the name of the type to check + * + * @return true if there is a type with the specified name + */ + public boolean containsType(String typeName) { + return typeMap.containsKey(typeName); + } + /** * Called to return a named {@link graphql.schema.GraphQLObjectType} from the schema * * @param typeName the name of the type + * * @return a graphql object type or null if there is one - * @throws graphql.GraphQLException if the type is NOT a object type + * + * @throws graphql.GraphQLException if the type is NOT an object type */ public GraphQLObjectType getObjectType(String typeName) { GraphQLType graphQLType = typeMap.get(typeName); if (graphQLType != null) { assertTrue(graphQLType instanceof GraphQLObjectType, - "You have asked for named object type '%s' but its not an object type but rather a '%s'", typeName, graphQLType.getClass().getName()); + "You have asked for named object type '%s' but it's not an object type but rather a '%s'", typeName, graphQLType.getClass().getName()); } return (GraphQLObjectType) graphQLType; } + /** + * Returns a {@link GraphQLFieldDefinition} as the specified co-ordinates or null + * if it does not exist + * + * @param fieldCoordinates the field co-ordinates + * + * @return the field or null if it does not exist + */ + public GraphQLFieldDefinition getFieldDefinition(FieldCoordinates fieldCoordinates) { + String fieldName = fieldCoordinates.getFieldName(); + if (fieldCoordinates.isSystemCoordinates()) { + if (fieldName.equals(this.getIntrospectionSchemaFieldDefinition().getName())) { + return this.getIntrospectionSchemaFieldDefinition(); + } + if (fieldName.equals(this.getIntrospectionTypeFieldDefinition().getName())) { + return this.getIntrospectionTypeFieldDefinition(); + } + if (fieldName.equals(this.getIntrospectionTypenameFieldDefinition().getName())) { + return this.getIntrospectionTypenameFieldDefinition(); + } + return Assert.assertShouldNeverHappen("The system field name %s is unknown", fieldName); + } + String typeName = fieldCoordinates.getTypeName(); + GraphQLType graphQLType = getType(typeName); + if (graphQLType != null) { + assertTrue(graphQLType instanceof GraphQLFieldsContainer, + "You have asked for named type '%s' but it's not GraphQLFieldsContainer but rather a '%s'", typeName, graphQLType.getClass().getName()); + return ((GraphQLFieldsContainer) graphQLType).getFieldDefinition(fieldName); + } + return null; + } + + /** + * @return all the named types in the scheme as a map from name to named type + */ public Map getTypeMap() { - return Collections.unmodifiableMap(typeMap); + return typeMap; } + /** + * This returns all the {@link GraphQLNamedType} named types in th schema + * + * @return all the {@link GraphQLNamedType} types in the schema + */ public List getAllTypesAsList() { - return sortTypes(byNameAsc(), typeMap.values()); + return getAllTypesAsList(typeMap); + } + + /** + * This returns all the top level {@link GraphQLNamedSchemaElement} named types and directives + * in the schema + * + * @return all the top level {@link GraphQLNamedSchemaElement} types and directives in the schema + */ + public List getAllElementsAsList() { + List list = new ArrayList<>(); + list.addAll(getDirectives()); + list.addAll(getAllTypesAsList()); + return list; } /** @@ -172,13 +362,11 @@ public List getAllTypesAsList() { * interface type. * * @param type interface type to obtain implementations of. + * * @return list of types implementing provided interface */ public List getImplementations(GraphQLInterfaceType type) { - List implementations = byInterface.get(type.getName()); - return (implementations == null) - ? Collections.emptyList() - : Collections.unmodifiableList(sortTypes(byNameAsc(), implementations)); + return interfaceNameToObjectTypes.getOrDefault(type.getName(), emptyList()); } /** @@ -189,114 +377,195 @@ public List getImplementations(GraphQLInterfaceType type) { * * @param abstractType abstract type either interface or union * @param concreteType concrete type + * * @return true if possible type, false otherwise. */ public boolean isPossibleType(GraphQLNamedType abstractType, GraphQLObjectType concreteType) { if (abstractType instanceof GraphQLInterfaceType) { - return getImplementations((GraphQLInterfaceType) abstractType).stream() - .map(GraphQLObjectType::getName) - .anyMatch(name -> concreteType.getName().equals(name)); + ImmutableList objectNames = this.interfaceNameToObjectTypeNames.getOrDefault(abstractType.getName(), emptyList()); + return objectNames.contains(concreteType.getName()); } else if (abstractType instanceof GraphQLUnionType) { - return ((GraphQLUnionType) abstractType).getTypes().stream() - .map(GraphQLNamedType::getName) - .anyMatch(name -> concreteType.getName().equals(name)); + return ((GraphQLUnionType) abstractType).isPossibleType(concreteType); } - return assertShouldNeverHappen("Unsupported abstract type %s. Abstract types supported are Union and Interface.", abstractType.getName()); } + /** + * @return the Query type of the schema + */ public GraphQLObjectType getQueryType() { return queryType; } + /** + * @return the Mutation type of the schema of null if there is not one + */ public GraphQLObjectType getMutationType() { return mutationType; } + /** + * @return the Subscription type of the schema of null if there is not one + */ public GraphQLObjectType getSubscriptionType() { return subscriptionType; } /** - * @return the field visibility - * @deprecated use {@link GraphQLCodeRegistry#getFieldVisibility()} instead + * This returns the list of directives definitions that are associated with this schema object including + * built in ones. + * + * @return a list of directives */ - @Deprecated - public GraphqlFieldVisibility getFieldVisibility() { - return codeRegistry.getFieldVisibility(); + public List getDirectives() { + return directiveDefinitionsHolder.getDirectives(); } /** - * This returns the list of directives that are associated with this schema object including - * built in ones. + * @return a map of non-repeatable directives by directive name + */ + public Map getDirectivesByName() { + return directiveDefinitionsHolder.getDirectivesByName(); + } + + /** + * Returns a named directive that (for legacy reasons) will be only in the set of non-repeatable directives + * + * @param directiveName the name of the directive to retrieve + * + * @return the directive or null if there is not one with that name + */ + public GraphQLDirective getDirective(String directiveName) { + return directiveDefinitionsHolder.getDirective(directiveName); + } + + + /** + * This returns the list of directives that have been explicitly applied to the + * schema object. Note that {@link #getDirectives()} will return + * directives for all schema elements, whereas this is just for the schema + * element itself * * @return a list of directives + * + * @deprecated Use the {@link GraphQLAppliedDirective} methods instead */ - public List getDirectives() { - return new ArrayList<>(directives); + @Deprecated(since = "2022-02-24") + public List getSchemaDirectives() { + return schemaAppliedDirectivesHolder.getDirectives(); } /** - * This returns a map of directives that are associated with this schema object including - * built in ones. + * This returns a map of non-repeatable directives that have been explicitly applied to the + * schema object. Note that {@link #getDirectives()} will return + * directives for all schema elements, whereas this is just for the schema + * element itself * * @return a map of directives + * + * @deprecated Use the {@link GraphQLAppliedDirective} methods instead */ - public Map getDirectiveByName() { - return directivesByName(getDirectives()); + @Deprecated(since = "2022-02-24") + public Map getSchemaDirectiveByName() { + return schemaAppliedDirectivesHolder.getDirectivesByName(); } - public GraphQLDirective getDirective(String name) { - for (GraphQLDirective directive : getDirectives()) { - if (directive.getName().equals(name)) { - return directive; - } - } - return null; + /** + * This returns a map of non-repeatable and repeatable directives that have been explicitly applied to the + * schema object. Note that {@link #getDirectives()} will return + * directives for all schema elements, whereas this is just for the schema + * element itself + * + * @return a map of directives + * + * @deprecated Use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public Map> getAllSchemaDirectivesByName() { + return schemaAppliedDirectivesHolder.getAllDirectivesByName(); } /** - * This returns the list of directives that have been explicitly put on the + * This returns the named directive that have been explicitly applied to the + * schema object. Note that {@link graphql.schema.GraphQLDirectiveContainer#getDirective(String)} will return + * directives for all schema elements, whereas this is just for the schema + * element itself + * + * @param directiveName the name of the directive + * + * @return a named directive + * + * @deprecated Use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public GraphQLDirective getSchemaDirective(String directiveName) { + return schemaAppliedDirectivesHolder.getDirective(directiveName); + } + + /** + * This returns the named directives that have been explicitly applied to the + * schema object. + * + * @param directiveName the name of the directive + * + * @return A list of repeated applied directives + * + * @deprecated Use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public List getSchemaDirectives(String directiveName) { + return schemaAppliedDirectivesHolder.getDirectives(directiveName); + } + + /** + * This returns the list of directives that have been explicitly applied to the * schema object. Note that {@link #getDirectives()} will return * directives for all schema elements, whereas this is just for the schema * element itself * * @return a list of directives */ - public List getSchemaDirectives() { - return new ArrayList<>(schemaDirectives.values()); + public List getSchemaAppliedDirectives() { + return schemaAppliedDirectivesHolder.getAppliedDirectives(); } /** - * This returns a map of directives that have been explicitly put on the + * This returns a map of non-repeatable and repeatable directives that have been explicitly applied to the * schema object. Note that {@link #getDirectives()} will return * directives for all schema elements, whereas this is just for the schema * element itself * - * @return a list of directives + * @return a map of all schema directives by directive name */ - public Map getSchemaDirectiveByName() { - return directivesByName(getSchemaDirectives()); + public Map> getAllSchemaAppliedDirectivesByName() { + return schemaAppliedDirectivesHolder.getAllAppliedDirectivesByName(); } /** - * This returns the named directive that have been explicitly put on the - * schema object. Note that {@link #getDirective(String)} will return + * This returns the named directive that have been explicitly applied to the + * schema object. Note that {@link graphql.schema.GraphQLDirectiveContainer#getDirective(String)} will return * directives for all schema elements, whereas this is just for the schema * element itself * + * @param directiveName the name of the directive + * * @return a named directive */ - public GraphQLDirective getSchemaDirective(String name) { - return schemaDirectives.get(name); + public GraphQLAppliedDirective getSchemaAppliedDirective(String directiveName) { + return schemaAppliedDirectivesHolder.getAppliedDirective(directiveName); + } + + public List getSchemaAppliedDirectives(String directiveName) { + return schemaAppliedDirectivesHolder.getAppliedDirectives(directiveName); } + @Nullable public SchemaDefinition getDefinition() { return definition; } public List getExtensionDefinitions() { - return new ArrayList<>(extensionDefinitions); + return extensionDefinitions; } public boolean isSupportingMutations() { @@ -307,12 +576,18 @@ public boolean isSupportingSubscriptions() { return subscriptionType != null; } + @Nullable + public String getDescription() { + return description; + } + /** * This helps you transform the current GraphQLSchema object into another one by starting a builder with all * the current values and allows you to transform it how you want. * * @param builderConsumer the consumer code that will be given a builder to transform - * @return a new GraphQLSchema object based on calling build on that builder + * + * @return a new GraphQLSchema object based on calling built on that builder */ public GraphQLSchema transform(Consumer builderConsumer) { Builder builder = newSchema(this); @@ -320,6 +595,20 @@ public GraphQLSchema transform(Consumer builderConsumer) { return builder.build(); } + /** + * This helps you transform the current GraphQLSchema object into another one by using a builder that only allows you to change + * simple values and does not involve changing the complex schema type graph. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new GraphQLSchema object based on calling built on that builder + */ + public GraphQLSchema transformWithoutTypes(Consumer builderConsumer) { + BuilderWithoutTypes builder = new BuilderWithoutTypes(this); + builderConsumer.accept(builder); + return builder.build(); + } + /** * @return a new schema builder */ @@ -332,6 +621,7 @@ public static Builder newSchema() { * schema and then allows you to replace them. * * @param existingSchema the existing schema + * * @return a new schema builder */ public static Builder newSchema(GraphQLSchema existingSchema) { @@ -339,36 +629,66 @@ public static Builder newSchema(GraphQLSchema existingSchema) { .query(existingSchema.getQueryType()) .mutation(existingSchema.getMutationType()) .subscription(existingSchema.getSubscriptionType()) + .extensionDefinitions(existingSchema.getExtensionDefinitions()) + .introspectionSchemaType(existingSchema.getIntrospectionSchemaType()) .codeRegistry(existingSchema.getCodeRegistry()) .clearAdditionalTypes() .clearDirectives() - .additionalDirectives(existingSchema.directives) + .additionalDirectives(new LinkedHashSet<>(existingSchema.getDirectives())) .clearSchemaDirectives() .withSchemaDirectives(schemaDirectivesArray(existingSchema)) - .additionalTypes(existingSchema.additionalTypes); + .withSchemaAppliedDirectives(schemaAppliedDirectivesArray(existingSchema)) + .additionalTypes(existingSchema.additionalTypes) + .description(existingSchema.getDescription()); } - private static GraphQLDirective[] schemaDirectivesArray(GraphQLSchema existingSchema) { - return existingSchema.schemaDirectives.values() - .toArray(new GraphQLDirective[0]); + public static class BuilderWithoutTypes { + private GraphQLCodeRegistry codeRegistry; + private String description; + private final GraphQLSchema existingSchema; + + private BuilderWithoutTypes(GraphQLSchema existingSchema) { + this.existingSchema = existingSchema; + this.codeRegistry = existingSchema.codeRegistry; + this.description = existingSchema.description; + } + + public BuilderWithoutTypes codeRegistry(GraphQLCodeRegistry codeRegistry) { + this.codeRegistry = Assert.assertNotNull(codeRegistry); + return this; + } + + public BuilderWithoutTypes codeRegistry(GraphQLCodeRegistry.Builder codeRegistryBuilder) { + return codeRegistry(codeRegistryBuilder.build()); + } + + public BuilderWithoutTypes description(String description) { + this.description = description; + return this; + } + + public GraphQLSchema build() { + return new GraphQLSchema(this); + } } public static class Builder { private GraphQLObjectType queryType; private GraphQLObjectType mutationType; + private GraphQLObjectType introspectionSchemaType = Introspection.__Schema; private GraphQLObjectType subscriptionType; private GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build(); - private Set additionalTypes = new LinkedHashSet<>(); private SchemaDefinition definition; private List extensionDefinitions; + private String description; // we default these in - private Set additionalDirectives = new LinkedHashSet<>( + private final Set additionalDirectives = new LinkedHashSet<>( asList(Directives.IncludeDirective, Directives.SkipDirective) ); - private Map schemaDirectives = new LinkedHashMap<>(); - - private SchemaUtil schemaUtil = new SchemaUtil(); + private final Set additionalTypes = new LinkedHashSet<>(); + private final List schemaDirectives = new ArrayList<>(); + private final List schemaAppliedDirectives = new ArrayList<>(); public Builder query(GraphQLObjectType.Builder builder) { return query(builder.build()); @@ -397,17 +717,6 @@ public Builder subscription(GraphQLObjectType subscriptionType) { return this; } - /** - * @param fieldVisibility the field visibility - * @return this builder - * @deprecated use {@link graphql.schema.GraphQLCodeRegistry.Builder#fieldVisibility(graphql.schema.visibility.GraphqlFieldVisibility)} instead - */ - @Deprecated - public Builder fieldVisibility(GraphqlFieldVisibility fieldVisibility) { - this.codeRegistry = this.codeRegistry.transform(builder -> builder.fieldVisibility(fieldVisibility)); - return this; - } - public Builder codeRegistry(GraphQLCodeRegistry codeRegistry) { this.codeRegistry = codeRegistry; return this; @@ -451,9 +760,16 @@ public Builder withSchemaDirectives(GraphQLDirective... directives) { return this; } + public Builder withSchemaDirectives(Collection directives) { + for (GraphQLDirective directive : directives) { + withSchemaDirective(directive); + } + return this; + } + public Builder withSchemaDirective(GraphQLDirective directive) { assertNotNull(directive, "directive can't be null"); - schemaDirectives.put(directive.getName(), directive); + schemaDirectives.add(directive); return this; } @@ -461,6 +777,30 @@ public Builder withSchemaDirective(GraphQLDirective.Builder builder) { return withSchemaDirective(builder.build()); } + public Builder withSchemaAppliedDirectives(GraphQLAppliedDirective... appliedDirectives) { + for (GraphQLAppliedDirective directive : appliedDirectives) { + withSchemaAppliedDirective(directive); + } + return this; + } + + public Builder withSchemaAppliedDirectives(Collection appliedDirectives) { + for (GraphQLAppliedDirective directive : appliedDirectives) { + withSchemaAppliedDirective(directive); + } + return this; + } + + public Builder withSchemaAppliedDirective(GraphQLAppliedDirective appliedDirective) { + assertNotNull(appliedDirective, "directive can't be null"); + schemaAppliedDirectives.add(appliedDirective); + return this; + } + + public Builder withSchemaAppliedDirective(GraphQLAppliedDirective.Builder builder) { + return withSchemaAppliedDirective(builder.build()); + } + /** * This is used to clear all the directives in the builder so far. * @@ -468,6 +808,7 @@ public Builder withSchemaDirective(GraphQLDirective.Builder builder) { */ public Builder clearSchemaDirectives() { schemaDirectives.clear(); + schemaAppliedDirectives.clear(); return this; } @@ -481,29 +822,14 @@ public Builder extensionDefinitions(List extensionDef return this; } - /** - * Builds the schema - * - * @param additionalTypes - please dont use this any more - * @return the built schema - * @deprecated - Use the {@link #additionalType(GraphQLType)} methods - */ - @Deprecated - public GraphQLSchema build(Set additionalTypes) { - return additionalTypes(additionalTypes).build(); + public Builder description(String description) { + this.description = description; + return this; } - /** - * Builds the schema - * - * @param additionalTypes - please don't use this any more - * @param additionalDirectives - please don't use this any more - * @return the built schema - * @deprecated - Use the {@link #additionalType(GraphQLType)} and {@link #additionalDirective(GraphQLDirective)} methods - */ - @Deprecated - public GraphQLSchema build(Set additionalTypes, Set additionalDirectives) { - return additionalTypes(additionalTypes).additionalDirectives(additionalDirectives).build(); + public Builder introspectionSchemaType(GraphQLObjectType introspectionSchemaType) { + this.introspectionSchemaType = introspectionSchemaType; + return this; } /** @@ -512,27 +838,51 @@ public GraphQLSchema build(Set additionalTypes, Set d.getName().equals(Directives.DeprecatedDirective.getName()))) { - additionalDirectives.add(Directives.DeprecatedDirective); - } + // schemas - it's inherently part of the spec! + addBuiltInDirective(Directives.DeprecatedDirective, additionalDirectives); + addBuiltInDirective(Directives.SpecifiedByDirective, additionalDirectives); + addBuiltInDirective(Directives.OneOfDirective, additionalDirectives); + addBuiltInDirective(Directives.DeferDirective, additionalDirectives); + addBuiltInDirective(Directives.ExperimentalDisableErrorPropagationDirective, additionalDirectives); + + // quick build - no traversing + final GraphQLSchema partiallyBuiltSchema = new GraphQLSchema(this); + + GraphQLCodeRegistry.Builder extractedDataFetchers = GraphQLCodeRegistry.newCodeRegistry(codeRegistry); + CodeRegistryVisitor codeRegistryVisitor = new CodeRegistryVisitor(extractedDataFetchers); + GraphQLTypeCollectingVisitor typeCollectingVisitor = new GraphQLTypeCollectingVisitor(); + SchemaUtil.visitPartiallySchema(partiallyBuiltSchema, codeRegistryVisitor, typeCollectingVisitor); + + codeRegistry = extractedDataFetchers.build(); + ImmutableMap allTypes = typeCollectingVisitor.getResult(); + List allTypesAsList = getAllTypesAsList(allTypes); + + ImmutableMap> groupedImplementations = SchemaUtil.groupInterfaceImplementationsByName(allTypesAsList); + ImmutableMap> interfaceNameToObjectTypes = buildInterfacesToObjectTypes(groupedImplementations); + + // this is now build however its contained types are still to be mutated by type reference replacement + final GraphQLSchema finalSchema = new GraphQLSchema(partiallyBuiltSchema, codeRegistry, allTypes, interfaceNameToObjectTypes); + SchemaUtil.replaceTypeReferences(finalSchema); + return validateSchema(finalSchema); + } - // grab the legacy code things from types - final GraphQLSchema tempSchema = new GraphQLSchema(this, afterTransform); - codeRegistry = codeRegistry.transform(codeRegistryBuilder -> schemaUtil.extractCodeFromTypes(codeRegistryBuilder, tempSchema)); + private void addBuiltInDirective(GraphQLDirective qlDirective, Set additionalDirectives1) { + if (additionalDirectives1.stream().noneMatch(d -> d.getName().equals(qlDirective.getName()))) { + additionalDirectives1.add(qlDirective); + } + } - GraphQLSchema graphQLSchema = new GraphQLSchema(tempSchema, codeRegistry); - schemaUtil.replaceTypeReferences(graphQLSchema); + private GraphQLSchema validateSchema(GraphQLSchema graphQLSchema) { Collection errors = new SchemaValidator().validateSchema(graphQLSchema); - if (errors.size() > 0) { + if (!errors.isEmpty()) { throw new InvalidSchemaException(errors); } return graphQLSchema; diff --git a/src/main/java/graphql/schema/GraphQLSchemaElement.java b/src/main/java/graphql/schema/GraphQLSchemaElement.java index e4508971cb..df6a15cc0e 100644 --- a/src/main/java/graphql/schema/GraphQLSchemaElement.java +++ b/src/main/java/graphql/schema/GraphQLSchemaElement.java @@ -1,10 +1,10 @@ package graphql.schema; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import java.util.Collections; import java.util.List; import static graphql.schema.SchemaElementChildrenContainer.newSchemaElementChildrenContainer; @@ -17,7 +17,7 @@ public interface GraphQLSchemaElement { default List getChildren() { - return Collections.emptyList(); + return ImmutableKit.emptyList(); } default SchemaElementChildrenContainer getChildrenWithTypeReferences() { @@ -29,4 +29,32 @@ default GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newC } TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor); + + + /** + * No GraphQLSchemaElement implements `equals` because we need object identity + * to treat a GraphQLSchema as an abstract graph. + * + * @param obj the reference object with which to compare. + * + * @return {@code true} if this object is the same as the obj + * argument; {@code false} otherwise. + */ + boolean equals(Object obj); + + /** + * No GraphQLSchemaElement implements `equals/hashCode` because we need object identity + * to treat a GraphQLSchema as an abstract graph. + * + * @return a hash code value for this object. + */ + int hashCode(); + + /** + * Each GraphQLSchemaElement should make a copy of itself when this is called. The copy should + * be included its current contents as they currently exist into a new object. + * + * @return a copy of this element + */ + GraphQLSchemaElement copy(); } diff --git a/src/main/java/graphql/schema/GraphQLSchemaElementAdapter.java b/src/main/java/graphql/schema/GraphQLSchemaElementAdapter.java index 389890b03f..9bce889fde 100644 --- a/src/main/java/graphql/schema/GraphQLSchemaElementAdapter.java +++ b/src/main/java/graphql/schema/GraphQLSchemaElementAdapter.java @@ -1,11 +1,13 @@ package graphql.schema; +import graphql.Internal; import graphql.util.NodeAdapter; import graphql.util.NodeLocation; import java.util.List; import java.util.Map; +@Internal public class GraphQLSchemaElementAdapter implements NodeAdapter { public static final GraphQLSchemaElementAdapter SCHEMA_ELEMENT_ADAPTER = new GraphQLSchemaElementAdapter(); diff --git a/src/main/java/graphql/schema/GraphQLTypeCollectingVisitor.java b/src/main/java/graphql/schema/GraphQLTypeCollectingVisitor.java deleted file mode 100644 index 7444dc4758..0000000000 --- a/src/main/java/graphql/schema/GraphQLTypeCollectingVisitor.java +++ /dev/null @@ -1,116 +0,0 @@ -package graphql.schema; - -import graphql.AssertException; -import graphql.Internal; -import graphql.util.TraversalControl; -import graphql.util.TraverserContext; - -import java.util.LinkedHashMap; -import java.util.Map; - -import static java.lang.String.format; - -@Internal -public class GraphQLTypeCollectingVisitor extends GraphQLTypeVisitorStub { - - private final Map result = new LinkedHashMap<>(); - - public GraphQLTypeCollectingVisitor() { - } - - @Override - public TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext context) { - assertTypeUniqueness(node, result); - save(node.getName(), node); - return super.visitGraphQLEnumType(node, context); - } - - @Override - public TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { - assertTypeUniqueness(node, result); - save(node.getName(), node); - return super.visitGraphQLScalarType(node, context); - } - - @Override - public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { - if (isTypeReference(node.getName())) { - assertTypeUniqueness(node, result); - } else { - save(node.getName(), node); - } - return super.visitGraphQLObjectType(node, context); - } - - @Override - public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context) { - if (isTypeReference(node.getName())) { - assertTypeUniqueness(node, result); - } else { - save(node.getName(), node); - } - return super.visitGraphQLInputObjectType(node, context); - } - - @Override - public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context) { - if (isTypeReference(node.getName())) { - assertTypeUniqueness(node, result); - } else { - save(node.getName(), node); - } - - return super.visitGraphQLInterfaceType(node, context); - } - - @Override - public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext context) { - assertTypeUniqueness(node, result); - save(node.getName(), node); - return super.visitGraphQLUnionType(node, context); - } - - @Override - public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { - - return super.visitGraphQLFieldDefinition(node, context); - } - - // TODO: eh? Isn't it similar to assertTypeUniqueness? - private boolean isTypeReference(String name) { - return result.containsKey(name) && !(result.get(name) instanceof GraphQLTypeReference); - } - - private void save(String name, GraphQLNamedType type) { - result.put(name, type); - } - - - /* - From http://facebook.github.io/graphql/#sec-Type-System - - All types within a GraphQL schema must have unique names. No two provided types may have the same name. - No provided type may have a name which conflicts with any built in types (including Scalar and Introspection types). - - Enforcing this helps avoid problems later down the track fo example https://github.com/graphql-java/graphql-java/issues/373 - */ - private void assertTypeUniqueness(GraphQLNamedType type, Map result) { - GraphQLType existingType = result.get(type.getName()); - // do we have an existing definition - if (existingType != null) { - // type references are ok - if (!(existingType instanceof GraphQLTypeReference || type instanceof GraphQLTypeReference)) - // object comparison here is deliberate - if (existingType != type) { - throw new AssertException(format("All types within a GraphQL schema must have unique names. No two provided types may have the same name.\n" + - "No provided type may have a name which conflicts with any built in types (including Scalar and Introspection types).\n" + - "You have redefined the type '%s' from being a '%s' to a '%s'", - type.getName(), existingType.getClass().getSimpleName(), type.getClass().getSimpleName())); - } - } - } - - public Map getResult() { - return result; - } -} diff --git a/src/main/java/graphql/schema/GraphQLTypeReference.java b/src/main/java/graphql/schema/GraphQLTypeReference.java index d9045c99ce..08fb3df47a 100644 --- a/src/main/java/graphql/schema/GraphQLTypeReference.java +++ b/src/main/java/graphql/schema/GraphQLTypeReference.java @@ -50,8 +50,22 @@ public Node getDefinition() { return null; } + @Override + public String toString() { + return "GraphQLTypeReference{" + + "name='" + name + '\'' + + '}'; + } + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLTypeReference(this, context); } + + @Override + public GraphQLSchemaElement copy() { + return typeRef(getName()); + } + + } diff --git a/src/main/java/graphql/schema/GraphQLTypeResolvingVisitor.java b/src/main/java/graphql/schema/GraphQLTypeResolvingVisitor.java index 525ba85dfa..37a57f8933 100644 --- a/src/main/java/graphql/schema/GraphQLTypeResolvingVisitor.java +++ b/src/main/java/graphql/schema/GraphQLTypeResolvingVisitor.java @@ -5,9 +5,9 @@ import graphql.util.TraverserContext; import java.util.Map; -import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.map; import static graphql.util.TraversalControl.CONTINUE; @Internal @@ -21,18 +21,21 @@ public GraphQLTypeResolvingVisitor(Map typeMap) { @Override public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { - node.replaceInterfaces(node.getInterfaces().stream() - .map(type -> (GraphQLNamedOutputType) typeMap.get(type.getName())) - .collect(Collectors.toList())); + node.replaceInterfaces(map(node.getInterfaces(), type -> (GraphQLNamedOutputType) typeMap.get(type.getName()))); return super.visitGraphQLObjectType(node, context); } + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context) { + node.replaceInterfaces(map(node.getInterfaces(), type -> (GraphQLNamedOutputType) typeMap.get(type.getName()))); + return super.visitGraphQLInterfaceType(node, context); + } + + @Override public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext context) { - node.replaceTypes(node.getTypes().stream() - .map(type -> (GraphQLNamedOutputType) typeMap.get(type.getName())) - .collect(Collectors.toList())); + node.replaceTypes(map(node.getTypes(), type -> (GraphQLNamedOutputType) typeMap.get(type.getName()))); return super.visitGraphQLUnionType(node, context); } @@ -57,8 +60,8 @@ public TraversalControl visitBackRef(TraverserContext cont return CONTINUE; } - private class TypeRefResolvingVisitor extends GraphQLTypeVisitorStub { - protected final GraphQLType resolvedType; + private static final class TypeRefResolvingVisitor extends GraphQLTypeVisitorStub { + private final GraphQLType resolvedType; TypeRefResolvingVisitor(GraphQLType resolvedType) { this.resolvedType = resolvedType; @@ -76,6 +79,12 @@ public TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserCont return super.visitGraphQLArgument(node, context); } + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + node.replaceType((GraphQLInputType) resolvedType); + return super.visitGraphQLAppliedDirectiveArgument(node, context); + } + @Override public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { node.replaceType((GraphQLInputType) resolvedType); diff --git a/src/main/java/graphql/schema/GraphQLTypeUtil.java b/src/main/java/graphql/schema/GraphQLTypeUtil.java index 1aa47797a9..e3a6e58d89 100644 --- a/src/main/java/graphql/schema/GraphQLTypeUtil.java +++ b/src/main/java/graphql/schema/GraphQLTypeUtil.java @@ -1,8 +1,13 @@ package graphql.schema; +import graphql.Assert; import graphql.PublicApi; +import graphql.introspection.Introspection; +import graphql.schema.idl.DirectiveInfo; +import graphql.schema.idl.ScalarInfo; import java.util.Stack; +import java.util.function.Predicate; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; @@ -21,18 +26,13 @@ public class GraphQLTypeUtil { * @return the type in graphql SDL format, eg [typeName!]! */ public static String simplePrint(GraphQLType type) { - StringBuilder sb = new StringBuilder(); + Assert.assertNotNull(type, "type can't be null"); if (isNonNull(type)) { - sb.append(simplePrint(unwrapOne(type))); - sb.append("!"); + return simplePrint(unwrapOne(type)) + "!"; } else if (isList(type)) { - sb.append("["); - sb.append(simplePrint(unwrapOne(type))); - sb.append("]"); - } else { - sb.append(((GraphQLNamedType) type).getName()); + return "[" + simplePrint(unwrapOne(type)) + "]"; } - return sb.toString(); + return ((GraphQLNamedType) type).getName(); } public static String simplePrint(GraphQLSchemaElement schemaElement) { @@ -153,11 +153,11 @@ public static boolean isInput(GraphQLType type) { } /** - * Unwraps one layer of the type or just returns the type again if its not a wrapped type + * Unwraps one layer of the type or just returns the type again if it's not a wrapped type * * @param type the type to unwrapOne * - * @return the unwrapped type or the same type again if its not wrapped + * @return the unwrapped type or the same type again if it's not wrapped */ public static GraphQLType unwrapOne(GraphQLType type) { if (isNonNull(type)) { @@ -169,28 +169,87 @@ public static GraphQLType unwrapOne(GraphQLType type) { } /** - * Unwraps all layers of the type or just returns the type again if its not a wrapped type + * Unwraps one layer of the type or just returns the type again if it's not a wrapped type + * and then cast to the target type. + * + * @param type the type to unwrapOne + * @param for two + * + * @return the unwrapped type or the same type again if it's not wrapped + */ + public static T unwrapOneAs(GraphQLType type) { + //noinspection unchecked + return (T) unwrapOne(type); + } + + /** + * Unwraps all layers of the type or just returns the type again if it's not a wrapped type + * NOTE: This method does not support GraphQLTypeReference as input and will lead to a ClassCastException * * @param type the type to unwrapOne * * @return the underlying type */ public static GraphQLUnmodifiedType unwrapAll(GraphQLType type) { + return unwrapAllAs(type); + } + + /** + * Unwraps all layers of the type or just returns the type again if it's not a wrapped type + * and then cast to the target type. + * + * @param type the type to unwrapOne + * @param for two + * + * @return the underlying type + */ + public static T unwrapAllAs(GraphQLType type) { + //noinspection unchecked + return (T) unwrapAllImpl(type); + } + + private static GraphQLType unwrapAllImpl(GraphQLType type) { while (true) { if (isNotWrapped(type)) { - return (GraphQLUnmodifiedType) type; + return type; } type = unwrapOne(type); } } + + /** + * Unwraps a single non-nullable layer of the type if its present. Note there can + * only ever be one non-nullable wrapping of a type and this is enforced by {@link GraphQLNonNull} + * + * @param type the type to unwrap + * + * @return the underlying type that is not {@link GraphQLNonNull} + */ public static GraphQLType unwrapNonNull(GraphQLType type) { - while (isNonNull(type)) { - type = unwrapOne(type); + // its illegal to have a type that is a non-null wrapping a non-null type + // and GraphQLNonNull has code that prevents it so we can just check once during the unwrapping + if (isNonNull(type)) { + // is cheaper doing this direct rather than calling #unwrapOne + type = ((GraphQLNonNull) type).getWrappedType(); } return type; } + /** + * Unwraps a single non-nullable layer of the type if its present and then cast to the target type. Note there can + * only ever be one non-nullable wrapping of a type and this is enforced by {@link GraphQLNonNull} + * + * @param type the type to unwrap + * @param for two + * + * @return the underlying type that is not {@link GraphQLNonNull} + */ + public static T unwrapNonNullAs(GraphQLType type) { + //noinspection unchecked + return (T) unwrapNonNull(type); + } + /** * graphql types can be wrapped in {@link GraphQLNonNull} and {@link GraphQLList} type wrappers * so this method will unwrap the type down to the raw unwrapped type and return that wrapping @@ -201,7 +260,7 @@ public static GraphQLType unwrapNonNull(GraphQLType type) { * @return a stack of the type wrapping which will be at least 1 later deep */ public static Stack unwrapType(GraphQLType type) { - type = assertNotNull(type); + assertNotNull(type); Stack decoration = new Stack<>(); while (true) { decoration.push(type); @@ -212,4 +271,34 @@ public static Stack unwrapType(GraphQLType type) { } return decoration; } + + public static boolean isInterfaceOrUnion(GraphQLType type) { + return type instanceof GraphQLInterfaceType || type instanceof GraphQLUnionType; + } + + public static boolean isObjectType(GraphQLType type) { + return type instanceof GraphQLObjectType; + } + + + /** + * This predicate returns true if the schema element is an inbuilt schema element + * such as the system scalars and directives or introspection types + * + * @return true if it's a system schema element + */ + public static Predicate isSystemElement() { + return schemaElement -> { + if (schemaElement instanceof GraphQLScalarType) { + return ScalarInfo.isGraphqlSpecifiedScalar((GraphQLScalarType) schemaElement); + } + if (schemaElement instanceof GraphQLDirective) { + return DirectiveInfo.isGraphqlSpecifiedDirective((GraphQLDirective) schemaElement); + } + if (schemaElement instanceof GraphQLNamedType) { + return Introspection.isIntrospectionTypes((GraphQLNamedType) schemaElement); + } + return false; + }; + } } diff --git a/src/main/java/graphql/schema/GraphQLTypeVisitor.java b/src/main/java/graphql/schema/GraphQLTypeVisitor.java index 908dec5130..7853fa8dac 100644 --- a/src/main/java/graphql/schema/GraphQLTypeVisitor.java +++ b/src/main/java/graphql/schema/GraphQLTypeVisitor.java @@ -3,12 +3,53 @@ import graphql.PublicApi; import graphql.util.TraversalControl; import graphql.util.TraverserContext; - +import graphql.util.TreeTransformerUtil; + +/** + * GraphQLTypeVisitor can be used to visit all the elements of a schema + * (types, fields, directives and so on) in a visitor pattern. + * + * @see GraphQLTypeVisitorStub + */ @PublicApi public interface GraphQLTypeVisitor { + /** + * This method will be called when a directive is applied to a schema element. + * + * The {@link TraverserContext#getParentNode()} will be the schema element that this is applied to. + * + * The graphql-java code base is trying to slowly move away from using {@link GraphQLDirective}s when they really should be {@link GraphQLAppliedDirective}s + * + * @param node the applied directive + * @param context the traversal context + * + * @return how to control the visitation processing + */ + default TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective node, TraverserContext context) { + return TraversalControl.CONTINUE; + } + + default TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + return TraversalControl.CONTINUE; + } + TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context); - TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context); + /** + * This method will be called twice. Once for a directive definition in a schema and then do each time a directive is applied to a schema element + * + * When it's applied to a schema element then {@link TraverserContext#getParentNode()} will be the schema element that this is applied to. + * + * The graphql-java code base is trying to slowly move away from using {@link GraphQLDirective}s when they really should be {@link GraphQLAppliedDirective}s + * and this is another place that has been left in. In the future this behavior will change and this will only visit directive definitions of a schema, not where + * they are applied. + * + * @param node the directive + * @param context the traversal context + * + * @return how to control the visitation processing + */ + TraversalControl visitGraphQLDirective(GraphQLDirective node, TraverserContext context); TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext context); @@ -16,12 +57,12 @@ public interface GraphQLTypeVisitor { TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context); - TraversalControl visitGraphQLDirective(GraphQLDirective node, TraverserContext context); - TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context); TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context); + TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context); + TraversalControl visitGraphQLList(GraphQLList node, TraverserContext context); TraversalControl visitGraphQLNonNull(GraphQLNonNull node, TraverserContext context); @@ -47,10 +88,6 @@ default TraversalControl visitBackRef(TraverserContext con } // Marker interfaces - default TraversalControl visitGraphQLModifiedType(GraphQLModifiedType node, TraverserContext context) { - throw new UnsupportedOperationException(); - } - default TraversalControl visitGraphQLCompositeType(GraphQLCompositeType node, TraverserContext context) { throw new UnsupportedOperationException(); } @@ -71,6 +108,10 @@ default TraversalControl visitGraphQLInputType(GraphQLInputType node, TraverserC throw new UnsupportedOperationException(); } + default TraversalControl visitGraphQLModifiedType(GraphQLModifiedType node, TraverserContext context) { + throw new UnsupportedOperationException(); + } + default TraversalControl visitGraphQLNullableType(GraphQLNullableType node, TraverserContext context) { throw new UnsupportedOperationException(); } @@ -83,5 +124,51 @@ default TraversalControl visitGraphQLUnmodifiedType(GraphQLUnmodifiedType node, throw new UnsupportedOperationException(); } + /** + * This helper method can be used to "change" a node when returning control from this visitor + * + * @param context the current traversal context + * @param newChangedNode the new to be changed at this place + * + * @return this will always sent back TraversalControl.CONTINUE + */ + default TraversalControl changeNode(TraverserContext context, GraphQLSchemaElement newChangedNode) { + return TreeTransformerUtil.changeNode(context, newChangedNode); + } + + /** + * This helper method can be used to "delete" the current node when returning control from this visitor + * + * @param context the current traversal context which is pointing to the current node to be deleted + * + * @return this will always sent back TraversalControl.CONTINUE + */ + default TraversalControl deleteNode(TraverserContext context) { + return TreeTransformerUtil.deleteNode(context); + } + + /** + * This helper method can be used to "insert a new node" AFTER the current node when returning control from this visitor + * + * @param context the current traversal context + * @param toInsertAfter the new to be inserted AFTER this current code + * + * @return this will always sent back TraversalControl.CONTINUE + */ + default TraversalControl insertAfter(TraverserContext context, GraphQLSchemaElement toInsertAfter) { + return TreeTransformerUtil.insertAfter(context, toInsertAfter); + } + + /** + * This helper method can be used to "insert a new node" BEFORE the current node when returning control from this visitor + * + * @param context the current traversal context + * @param toInsertBefore the new to be inserted BEFORE this current code + * + * @return this will always sent back TraversalControl.CONTINUE + */ + default TraversalControl insertBefore(TraverserContext context, GraphQLSchemaElement toInsertBefore) { + return TreeTransformerUtil.insertBefore(context, toInsertBefore); + } } diff --git a/src/main/java/graphql/schema/GraphQLTypeVisitorStub.java b/src/main/java/graphql/schema/GraphQLTypeVisitorStub.java index fc5f58f354..79e9c0909c 100644 --- a/src/main/java/graphql/schema/GraphQLTypeVisitorStub.java +++ b/src/main/java/graphql/schema/GraphQLTypeVisitorStub.java @@ -12,6 +12,17 @@ */ @PublicApi public class GraphQLTypeVisitorStub implements GraphQLTypeVisitor { + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + return visitGraphQLType(node, context); + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective node, TraverserContext context) { + return visitGraphQLType(node, context); + } + @Override public TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context) { return visitGraphQLType(node, context); diff --git a/src/main/java/graphql/schema/GraphQLUnionType.java b/src/main/java/graphql/schema/GraphQLUnionType.java index 1a97f7785d..738c1dbcbf 100644 --- a/src/main/java/graphql/schema/GraphQLUnionType.java +++ b/src/main/java/graphql/schema/GraphQLUnionType.java @@ -1,6 +1,9 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.DirectivesUtil; import graphql.Internal; import graphql.PublicApi; import graphql.language.UnionTypeDefinition; @@ -9,79 +12,53 @@ import graphql.util.TraverserContext; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotEmpty; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertValidName; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.schema.SchemaElementChildrenContainer.newSchemaElementChildrenContainer; import static graphql.util.FpKit.getByName; -import static java.util.Collections.emptyList; -import static java.util.Collections.unmodifiableList; /** * A union type is a polymorphic type that dynamically represents one of more concrete object types. *

    - * At runtime a {@link graphql.schema.TypeResolver} is used to take an union object value and decide what {@link graphql.schema.GraphQLObjectType} + * At runtime a {@link TypeResolver} is used to take an union object value and decide what {@link GraphQLObjectType} * represents this union of types. *

    * Note that members of a union type need to be concrete object types; you can't create a union type out of interfaces or other unions. *

    - * See http://graphql.org/learn/schema/#union-types for more details on the concept. + * See https://graphql.org/learn/schema/#union-types for more details on the concept. */ @PublicApi public class GraphQLUnionType implements GraphQLNamedOutputType, GraphQLCompositeType, GraphQLUnmodifiedType, GraphQLNullableType, GraphQLDirectiveContainer { private final String name; private final String description; - private final List originalTypes; + private final ImmutableList originalTypes; private final TypeResolver typeResolver; private final UnionTypeDefinition definition; - private final List extensionDefinitions; + private final ImmutableList extensionDefinitions; + private final DirectivesUtil.DirectivesHolder directives; - private final List directives; - - private List replacedTypes; + private ImmutableList replacedTypes; public static final String CHILD_TYPES = "types"; - public static final String CHILD_DIRECTIVES = "directives"; - - - /** - * @param name the name - * @param description the description - * @param types the possible types - * @param typeResolver the type resolver function - * - * @deprecated use the {@link #newUnionType()} builder pattern instead, as this constructor will be made private in a future version. - */ - @Internal - @Deprecated - public GraphQLUnionType(String name, String description, List types, TypeResolver typeResolver) { - this(name, description, types, typeResolver, emptyList(), null); - } - /** - * @param name the name - * @param description the description - * @param types the possible types - * @param typeResolver the type resolver function - * @param directives the directives on this type element - * @param definition the AST definition - * - * @deprecated use the {@link #newUnionType()} builder pattern instead, as this constructor will be made private in a future version. - */ @Internal - @Deprecated - public GraphQLUnionType(String name, String description, List types, TypeResolver typeResolver, List directives, UnionTypeDefinition definition) { - this(name, description, types, typeResolver, directives, definition, emptyList()); - } - - private GraphQLUnionType(String name, String description, List types, TypeResolver typeResolver, List directives, UnionTypeDefinition definition, List extensionDefinitions) { + private GraphQLUnionType(String name, + String description, + List types, + TypeResolver typeResolver, + List directives, + List appliedDirectives, + UnionTypeDefinition definition, + List extensionDefinitions) { assertValidName(name); assertNotNull(types, "types can't be null"); assertNotEmpty(types, "A Union type must define one or more member types."); @@ -89,15 +66,15 @@ private GraphQLUnionType(String name, String description, List(extensionDefinitions)); - this.directives = directives; + this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); + this.directives = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); } void replaceTypes(List types) { - this.replacedTypes = types; + this.replacedTypes = ImmutableList.copyOf(types); } /** @@ -107,12 +84,30 @@ void replaceTypes(List types) { */ public List getTypes() { if (replacedTypes != null) { - return Collections.unmodifiableList(replacedTypes); + return replacedTypes; + } + return originalTypes; + } + + /** + * Returns true of the object type is a member of this Union type. + * + * @param graphQLObjectType the type to check + * + * @return true if the object type is a member of this union type. + */ + public boolean isPossibleType(GraphQLObjectType graphQLObjectType) { + for (GraphQLNamedOutputType type : getTypes()) { + if (type.getName().equals(graphQLObjectType.getName())) { + return true; + } } - return unmodifiableList(originalTypes); + return false; } // to be removed in a future version when all code is in the code registry + @Internal + @Deprecated(since = "2018-12-03") TypeResolver getTypeResolver() { return typeResolver; } @@ -136,7 +131,37 @@ public List getExtensionDefinitions() { @Override public List getDirectives() { - return new ArrayList<>(directives); + return directives.getDirectives(); + } + + @Override + public Map getDirectivesByName() { + return directives.getDirectivesByName(); + } + + @Override + public Map> getAllDirectivesByName() { + return directives.getAllDirectivesByName(); + } + + @Override + public GraphQLDirective getDirective(String directiveName) { + return directives.getDirective(directiveName); + } + + @Override + public List getAppliedDirectives() { + return directives.getAppliedDirectives(); + } + + @Override + public Map> getAllAppliedDirectivesByName() { + return directives.getAllAppliedDirectivesByName(); + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return directives.getAppliedDirective(directiveName); } /** @@ -153,6 +178,12 @@ public GraphQLUnionType transform(Consumer builderConsumer) { return builder.build(); } + @Override + public GraphQLSchemaElement copy() { + return newUnionType(this).build(); + } + + @Override public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { return visitor.visitGraphQLUnionType(this, context); @@ -161,7 +192,8 @@ public TraversalControl accept(TraverserContext context, G @Override public List getChildren() { List children = new ArrayList<>(getTypes()); - children.addAll(directives); + children.addAll(directives.getDirectives()); + children.addAll(directives.getAppliedDirectives()); return children; } @@ -169,18 +201,46 @@ public List getChildren() { public SchemaElementChildrenContainer getChildrenWithTypeReferences() { return newSchemaElementChildrenContainer() .children(CHILD_TYPES, originalTypes) - .children(CHILD_DIRECTIVES, directives) + .children(CHILD_DIRECTIVES, directives.getDirectives()) + .children(CHILD_APPLIED_DIRECTIVES, directives.getAppliedDirectives()) .build(); } @Override public GraphQLUnionType withNewChildren(SchemaElementChildrenContainer newChildren) { return transform(builder -> - builder.replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) - .replacePossibleTypes(newChildren.getChildren(CHILD_TYPES)) + builder.replacePossibleTypes(newChildren.getChildren(CHILD_TYPES)) + .replaceDirectives(newChildren.getChildren(CHILD_DIRECTIVES)) + .replaceAppliedDirectives(newChildren.getChildren(CHILD_APPLIED_DIRECTIVES)) + ); } + /** + * {@inheritDoc} + */ + @Override + public final boolean equals(Object o) { + return super.equals(o); + } + + /** + * {@inheritDoc} + */ + @Override + public final int hashCode() { + return super.hashCode(); + } + + @Override + public String toString() { + return "GraphQLUnionType{" + + "name='" + name + '\'' + + ", description='" + description + '\'' + + ", definition=" + definition + + '}'; + } + public static Builder newUnionType() { return new Builder(); } @@ -190,13 +250,12 @@ public static Builder newUnionType(GraphQLUnionType existing) { } @PublicApi - public static class Builder extends GraphqlTypeBuilder { + @NullUnmarked + public static class Builder extends GraphqlDirectivesContainerTypeBuilder { private TypeResolver typeResolver; private UnionTypeDefinition definition; private List extensionDefinitions = emptyList(); - private final Map types = new LinkedHashMap<>(); - private final Map directives = new LinkedHashMap<>(); public Builder() { } @@ -208,25 +267,7 @@ public Builder(GraphQLUnionType existing) { this.definition = existing.getDefinition(); this.extensionDefinitions = existing.getExtensionDefinitions(); this.types.putAll(getByName(existing.originalTypes, GraphQLNamedType::getName)); - this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); - } - - @Override - public Builder name(String name) { - super.name(name); - return this; - } - - @Override - public Builder description(String description) { - super.description(description); - return this; - } - - @Override - public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { - super.comparatorRegistry(comparatorRegistry); - return this; + copyExistingDirectives(existing); } public Builder definition(UnionTypeDefinition definition) { @@ -239,13 +280,19 @@ public Builder extensionDefinitions(List extension return this; } - @Deprecated + /** + * @param typeResolver the type resolver + * + * @return this builder + * + * @deprecated use {@link graphql.schema.GraphQLCodeRegistry.Builder#typeResolver(GraphQLUnionType, TypeResolver)} instead + */ + @Deprecated(since = "2018-12-03") public Builder typeResolver(TypeResolver typeResolver) { this.typeResolver = typeResolver; return this; } - public Builder possibleType(GraphQLObjectType type) { assertNotNull(type, "possible type can't be null"); types.put(type.getName(), type); @@ -265,10 +312,16 @@ public Builder possibleTypes(GraphQLObjectType... type) { return this; } - public Builder replacePossibleTypes(List types) { + public Builder replacePossibleTypes(List types) { this.types.clear(); - for (GraphQLObjectType graphQLType : types) { - possibleType(graphQLType); + for (GraphQLSchemaElement schemaElement : types) { + if (schemaElement instanceof GraphQLTypeReference) { + possibleType((GraphQLTypeReference) schemaElement); + } else if (schemaElement instanceof GraphQLObjectType) { + possibleType((GraphQLObjectType) schemaElement); + } else { + Assert.assertShouldNeverHappen("Unexpected type " + (schemaElement != null ? schemaElement.getClass() : "null")); + } } return this; } @@ -294,40 +347,41 @@ public boolean containType(String name) { return types.containsKey(name); } - public Builder withDirectives(GraphQLDirective... directives) { - for (GraphQLDirective directive : directives) { - withDirective(directive); - } - return this; - } + // -- the following are repeated to avoid a binary incompatibility problem -- + @Override public Builder replaceDirectives(List directives) { - assertNotNull(directives, "directive can't be null"); - this.directives.clear(); - for (GraphQLDirective directive : directives) { - this.directives.put(directive.getName(), directive); - } - return this; + return super.replaceDirectives(directives); + } + + @Override + public Builder withDirectives(GraphQLDirective... directives) { + return super.withDirectives(directives); } + @Override public Builder withDirective(GraphQLDirective directive) { - assertNotNull(directive, "directive can't be null"); - directives.put(directive.getName(), directive); - return this; + return super.withDirective(directive); } + @Override public Builder withDirective(GraphQLDirective.Builder builder) { - return withDirective(builder.build()); + return super.withDirective(builder); } - /** - * This is used to clear all the directives in the builder so far. - * - * @return the builder - */ + @Override public Builder clearDirectives() { - directives.clear(); - return this; + return super.clearDirectives(); + } + + @Override + public Builder name(String name) { + return super.name(name); + } + + @Override + public Builder description(String description) { + return super.description(description); } public GraphQLUnionType build() { @@ -337,8 +391,11 @@ public GraphQLUnionType build() { sort(types, GraphQLUnionType.class, GraphQLOutputType.class), typeResolver, sort(directives, GraphQLUnionType.class, GraphQLDirective.class), + sort(appliedDirectives, GraphQLUnionType.class, GraphQLAppliedDirective.class), definition, extensionDefinitions); } } + + } diff --git a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java new file mode 100644 index 0000000000..759e2de9a5 --- /dev/null +++ b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java @@ -0,0 +1,129 @@ +package graphql.schema; + +import graphql.Internal; + +import java.util.ArrayList; +import java.util.List; + +import static graphql.Assert.assertNotNull; + +@Internal +public abstract class GraphqlDirectivesContainerTypeBuilder, BASE extends GraphqlTypeBuilder> extends GraphqlTypeBuilder { + + protected final List appliedDirectives = new ArrayList<>(); + protected final List directives = new ArrayList<>(); + + public B replaceAppliedDirectives(List directives) { + assertNotNull(directives, "directive can't be null"); + this.appliedDirectives.clear(); + this.appliedDirectives.addAll(directives); + return (B) this; + } + + /** + * @param directives the variable args of directives + * + * @return this builder + */ + public B withAppliedDirectives(GraphQLAppliedDirective... directives) { + assertNotNull(directives, "directives can't be null"); + for (GraphQLAppliedDirective directive : directives) { + withAppliedDirective(directive); + } + return (B) this; + } + + /** + * @param directive the directive to add + * + * @return this builder + */ + public B withAppliedDirective(GraphQLAppliedDirective directive) { + assertNotNull(directive, "directive can't be null"); + this.appliedDirectives.add(directive); + return (B) this; + } + + /** + * @param builder the directive builder + * + * @return this builder + */ + public B withAppliedDirective(GraphQLAppliedDirective.Builder builder) { + return withAppliedDirective(builder.build()); + } + + /** + * @param directives the list of directives + * + * @return this builder + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public B replaceDirectives(List directives) { + assertNotNull(directives, "directive can't be null"); + this.directives.clear(); + this.directives.addAll(directives); + return (B) this; + } + + /** + * @param directives the variable args of directives + * + * @return this builder + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public B withDirectives(GraphQLDirective... directives) { + assertNotNull(directives, "directives can't be null"); + for (GraphQLDirective directive : directives) { + withDirective(directive); + } + return (B) this; + } + + /** + * @param directive the directive to add + * + * @return this builder + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public B withDirective(GraphQLDirective directive) { + assertNotNull(directive, "directive can't be null"); + this.directives.add(directive); + return (B) this; + } + + /** + * @param builder the directive builder + * + * @return this builder + * + * @deprecated - use the {@link GraphQLAppliedDirective} methods instead + */ + @Deprecated(since = "2022-02-24") + public B withDirective(GraphQLDirective.Builder builder) { + return withDirective(builder.build()); + } + + /** + * This is used to clear all the directives in the builder so far. + * + * @return the builder + */ + public B clearDirectives() { + directives.clear(); + appliedDirectives.clear(); + return (B) this; + } + + protected void copyExistingDirectives(GraphQLDirectiveContainer directivesContainer) { + clearDirectives(); + directives.addAll(directivesContainer.getDirectives()); + appliedDirectives.addAll(directivesContainer.getAppliedDirectives()); + } +} diff --git a/src/main/java/graphql/schema/GraphqlElementParentTree.java b/src/main/java/graphql/schema/GraphqlElementParentTree.java index 4e7389ed9f..acf5080e0c 100644 --- a/src/main/java/graphql/schema/GraphqlElementParentTree.java +++ b/src/main/java/graphql/schema/GraphqlElementParentTree.java @@ -69,8 +69,6 @@ public List toList() { @Override public String toString() { - return String.valueOf(element) + - " - parent : " + - parent; + return element + " - parent : " + parent; } } \ No newline at end of file diff --git a/src/main/java/graphql/schema/GraphqlTypeBuilder.java b/src/main/java/graphql/schema/GraphqlTypeBuilder.java index 6d9fb8a52e..990532e4dc 100644 --- a/src/main/java/graphql/schema/GraphqlTypeBuilder.java +++ b/src/main/java/graphql/schema/GraphqlTypeBuilder.java @@ -1,5 +1,6 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; import graphql.Internal; import java.util.Comparator; @@ -8,26 +9,27 @@ import static graphql.util.FpKit.valuesToList; +@SuppressWarnings("unchecked") @Internal -public abstract class GraphqlTypeBuilder { +public abstract class GraphqlTypeBuilder> { protected String name; protected String description; protected GraphqlTypeComparatorRegistry comparatorRegistry = GraphqlTypeComparatorRegistry.AS_IS_REGISTRY; - GraphqlTypeBuilder name(String name) { + public B name(String name) { this.name = name; - return this; + return (B) this; } - GraphqlTypeBuilder description(String description) { + public B description(String description) { this.description = description; - return this; + return (B) this; } - GraphqlTypeBuilder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { + public B comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { this.comparatorRegistry = comparatorRegistry; - return this; + return (B) this; } @@ -37,7 +39,7 @@ List sort(Map types, Class List sort(List types, Class parentType, Class elementType) { Comparator comparator = getComparatorImpl(comparatorRegistry, parentType, elementType); - return GraphqlTypeComparators.sortTypes(comparator, types); + return ImmutableList.copyOf(GraphqlTypeComparators.sortTypes(comparator, types)); } Comparator getComparator(Class parentType, Class elementType) { diff --git a/src/main/java/graphql/schema/GraphqlTypeComparatorEnvironment.java b/src/main/java/graphql/schema/GraphqlTypeComparatorEnvironment.java index 9787d009dd..de7ed388a9 100644 --- a/src/main/java/graphql/schema/GraphqlTypeComparatorEnvironment.java +++ b/src/main/java/graphql/schema/GraphqlTypeComparatorEnvironment.java @@ -1,15 +1,15 @@ package graphql.schema; -import graphql.Assert; import graphql.PublicApi; +import java.util.Objects; import java.util.function.Consumer; /** * Defines the scope to control where the registered {@code Comparator} can be applied. *

    * {@code elementType}s can be ordered within its {@code parentType} to restrict the {@code Comparator}s scope of operation. - * Otherwise supplying only the {@code elementType} results in the {@code Comparator} being reused across all matching {@code GraphQLType}s regardless of parent. + * Otherwise, supplying only the {@code elementType} results in the {@code Comparator} being reused across all matching {@code GraphQLType}s regardless of parent. */ @PublicApi public class GraphqlTypeComparatorEnvironment { @@ -19,7 +19,6 @@ public class GraphqlTypeComparatorEnvironment { private Class elementType; private GraphqlTypeComparatorEnvironment(Class parentType, Class elementType) { - Assert.assertNotNull(elementType, "elementType can't be null"); this.parentType = parentType; this.elementType = elementType; } @@ -32,7 +31,7 @@ public Class getParentType() { } /** - * @return The valid element type. + * @return The valid element type or {@code null} if not supplied. */ public Class getElementType() { return elementType; @@ -62,17 +61,14 @@ public boolean equals(Object o) { } GraphqlTypeComparatorEnvironment that = (GraphqlTypeComparatorEnvironment) o; - - if (parentType != null ? !parentType.equals(that.parentType) : that.parentType != null) { - return false; - } - return elementType.equals(that.elementType); + return Objects.equals(parentType, that.parentType) && elementType.equals(that.elementType); } @Override public int hashCode() { - int result = parentType != null ? parentType.hashCode() : 0; - result = 31 * result + elementType.hashCode(); + int result = 1; + result = 31 * result + Objects.hashCode(parentType); + result = 31 * result + Objects.hashCode(elementType); return result; } diff --git a/src/main/java/graphql/schema/GraphqlTypeComparators.java b/src/main/java/graphql/schema/GraphqlTypeComparators.java index 236c238b38..16eb006388 100644 --- a/src/main/java/graphql/schema/GraphqlTypeComparators.java +++ b/src/main/java/graphql/schema/GraphqlTypeComparators.java @@ -1,8 +1,8 @@ package graphql.schema; +import com.google.common.collect.ImmutableList; import graphql.Internal; -import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.List; @@ -10,6 +10,10 @@ @Internal public class GraphqlTypeComparators { + private static final Comparator BY_NAME_ASCENDING = + Comparator.comparing(graphQLSchemaElement -> + ((GraphQLNamedSchemaElement) graphQLSchemaElement).getName()); + /** * This sorts the list of {@link graphql.schema.GraphQLType} objects (by name) and allocates a new sorted * list back. @@ -21,9 +25,7 @@ public class GraphqlTypeComparators { * @return a new allocated list of sorted things */ public static List sortTypes(Comparator comparator, Collection types) { - List sorted = new ArrayList<>(types); - sorted.sort(comparator); - return sorted; + return ImmutableList.sortedCopyOf(comparator, types); } /** @@ -41,7 +43,7 @@ public static Comparator asIsOrder() { * @return a comparator that compares {@link graphql.schema.GraphQLType} objects by ascending name */ public static Comparator byNameAsc() { - return Comparator.comparing(graphQLSchemaElement -> ((GraphQLNamedSchemaElement) graphQLSchemaElement).getName()); + return BY_NAME_ASCENDING; } } diff --git a/src/main/java/graphql/schema/InputValueWithState.java b/src/main/java/graphql/schema/InputValueWithState.java new file mode 100644 index 0000000000..47a5236ec9 --- /dev/null +++ b/src/main/java/graphql/schema/InputValueWithState.java @@ -0,0 +1,91 @@ +package graphql.schema; + +import graphql.PublicApi; +import graphql.language.Value; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import static graphql.Assert.assertNotNull; + +/** + * Used by @{@link GraphQLArgument} and {@link GraphQLInputObjectField} to represent different value states. + */ +@PublicApi +public class InputValueWithState { + private enum State { + /** + * Value was never set aka not provided + */ + NOT_SET, + /** + * The value is an Ast literal + */ + LITERAL, + /** + * The value is an external value + */ + EXTERNAL_VALUE, + /** + * This is only used to preserve backward compatibility (for now): it is a value which is assumed to + * be already coerced. + * This will be removed at one point. + */ + INTERNAL_VALUE + + } + + private final State state; + private final Object value; + + private InputValueWithState(State state, Object value) { + this.state = state; + this.value = value; + } + + public static final InputValueWithState NOT_SET = new InputValueWithState(State.NOT_SET, null); + + public static InputValueWithState newLiteralValue(@NonNull Value value) { + assertNotNull(value, "value literal can't be null"); + return new InputValueWithState(State.LITERAL, value); + } + + public static InputValueWithState newExternalValue(@Nullable Object value) { + return new InputValueWithState(State.EXTERNAL_VALUE, value); + } + + public static InputValueWithState newInternalValue(@Nullable Object value) { + return new InputValueWithState(State.INTERNAL_VALUE, value); + } + + public @Nullable Object getValue() { + return value; + } + + public boolean isNotSet() { + return state == State.NOT_SET; + } + + public boolean isSet() { + return state != State.NOT_SET; + } + + public boolean isLiteral() { + return state == State.LITERAL; + } + + public boolean isExternal() { + return state == State.EXTERNAL_VALUE; + } + + public boolean isInternal() { + return state == State.INTERNAL_VALUE; + } + + @Override + public String toString() { + return "InputValueWithState{" + + "state=" + state + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/graphql/schema/LightDataFetcher.java b/src/main/java/graphql/schema/LightDataFetcher.java new file mode 100644 index 0000000000..0458457c02 --- /dev/null +++ b/src/main/java/graphql/schema/LightDataFetcher.java @@ -0,0 +1,36 @@ +package graphql.schema; + +import graphql.TrivialDataFetcher; + +import java.util.function.Supplier; + +/** + * A {@link LightDataFetcher} is a specialised version of {@link DataFetcher} that is passed more lightweight arguments + * when it is asked to fetch values. The most common example of this is the {@link PropertyDataFetcher} which does not need + * all the {@link DataFetchingEnvironment} values to perform its duties. + * + * @param for two + */ +public interface LightDataFetcher extends TrivialDataFetcher { + + /** + * This is called to by the engine to get a value from the source object in a lightweight fashion. Only the field + * and source object are passed in a materialised way. The more heavy weight {@link DataFetchingEnvironment} is wrapped + * in a supplier that is only created on demand. + *

    + * If you are a lightweight data fetcher (like {@link PropertyDataFetcher} is) then you can implement this method to have a more lightweight + * method invocation. However, if you need field arguments etc. during fetching (most custom fetchers will) then you should use implement + * {@link #get(DataFetchingEnvironment)}. + * + * @param fieldDefinition the graphql field definition + * @param sourceObject the source object to get a value from + * @param environmentSupplier a supplier of the {@link DataFetchingEnvironment} that creates it lazily + * + * @return a value of type T. May be wrapped in a {@link graphql.execution.DataFetcherResult} + * + * @throws Exception to relieve the implementations from having to wrap checked exceptions. Any exception thrown + * from a {@code DataFetcher} will eventually be handled by the registered {@link graphql.execution.DataFetcherExceptionHandler} + * and the related field will have a value of {@code null} in the result. + */ + T get(GraphQLFieldDefinition fieldDefinition, Object sourceObject, Supplier environmentSupplier) throws Exception; +} diff --git a/src/main/java/graphql/schema/PropertyDataFetcher.java b/src/main/java/graphql/schema/PropertyDataFetcher.java index 47547e1334..38382f4da9 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcher.java +++ b/src/main/java/graphql/schema/PropertyDataFetcher.java @@ -3,23 +3,27 @@ import graphql.Assert; import graphql.PublicApi; -import graphql.TrivialDataFetcher; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; import java.util.function.Function; +import java.util.function.Supplier; /** - * This is the default data fetcher used in graphql-java. It will examine - * maps and POJO java beans for values that match the desired name, typically the field name + * This is the default data fetcher used in graphql-java, and it will examine + * maps, records and POJO java beans for values that match the desired name, typically the field name, * or it will use a provided function to obtain values. - * maps and POJO java beans for values that match the desired name. *

    * It uses the following strategies *

      *
    • If the source is null, return null
    • *
    • If the source is a Map, return map.get(propertyName)
    • *
    • If a function is provided, it is used
    • - *
    • Find a public JavaBean getter method named `propertyName`
    • - *
    • Find any getter method named `propertyName` and call method.setAccessible(true)
    • + *
    • Find a public JavaBean getter method named `getPropertyName()` or `isPropertyName()` using {@link java.lang.invoke.LambdaMetafactory#metafactory(MethodHandles.Lookup, String, MethodType, MethodType, MethodHandle, MethodType)}
    • + *
    • Find a public Record like method named `propertyName()`
    • + *
    • Find a public JavaBean getter method named `getPropertyName()` or `isPropertyName()`
    • + *
    • Find any getter method named `getPropertyName()` or `isPropertyName()` and call method.setAccessible(true)
    • *
    • Find a public field named `propertyName`
    • *
    • Find any field named `propertyName` and call field.setAccessible(true)
    • *
    • If this cant find anything, then null is returned
    • @@ -31,7 +35,7 @@ * @see graphql.schema.DataFetcher */ @PublicApi -public class PropertyDataFetcher implements DataFetcher, TrivialDataFetcher { +public class PropertyDataFetcher implements LightDataFetcher { private final String propertyName; private final Function function; @@ -55,7 +59,7 @@ private PropertyDataFetcher(Function function) { /** * Returns a data fetcher that will use the property name to examine the {@link DataFetchingEnvironment#getSource()} object - * for a getter method or field with that name, or if its a map, it will look up a value using + * for a getter method or field with that name, or if it's a map, it will look up a value using * property name as a key. *

      * For example : @@ -69,6 +73,7 @@ private PropertyDataFetcher(Function function) { * * @param propertyName the name of the property to retrieve * @param the type of result + * * @return a new PropertyDataFetcher using the provided function as its source of values */ public static PropertyDataFetcher fetching(String propertyName) { @@ -92,6 +97,7 @@ public static PropertyDataFetcher fetching(String propertyName) { * @param function the function to use to obtain a value from the source object * @param the type of the source object * @param the type of result + * * @return a new PropertyDataFetcher using the provided function as its source of values */ public static PropertyDataFetcher fetching(Function function) { @@ -105,10 +111,19 @@ public String getPropertyName() { return propertyName; } - @SuppressWarnings("unchecked") + @Override + public T get(GraphQLFieldDefinition fieldDefinition, Object source, Supplier environmentSupplier) throws Exception { + return getImpl(source, fieldDefinition.getType(), environmentSupplier); + } + @Override public T get(DataFetchingEnvironment environment) { Object source = environment.getSource(); + return getImpl(source, environment.getFieldType(), () -> environment); + } + + @SuppressWarnings("unchecked") + private T getImpl(Object source, GraphQLOutputType fieldDefinition, Supplier environmentSupplier) { if (source == null) { return null; } @@ -117,7 +132,7 @@ public T get(DataFetchingEnvironment environment) { return (T) function.apply(source); } - return (T) PropertyDataFetcherHelper.getPropertyValue(propertyName, source, environment.getFieldType(), environment); + return (T) PropertyDataFetcherHelper.getPropertyValue(propertyName, source, fieldDefinition, environmentSupplier); } /** @@ -138,6 +153,7 @@ public static void clearReflectionCache() { * values. By default it PropertyDataFetcher WILL use setAccessible. * * @param flag whether to use setAccessible + * * @return the previous value of the flag */ public static boolean setUseSetAccessible(boolean flag) { @@ -148,6 +164,7 @@ public static boolean setUseSetAccessible(boolean flag) { * This can be used to control whether PropertyDataFetcher will cache negative lookups for a property for performance reasons. By default it PropertyDataFetcher WILL cache misses. * * @param flag whether to cache misses + * * @return the previous value of the flag */ public static boolean setUseNegativeCache(boolean flag) { diff --git a/src/main/java/graphql/schema/PropertyDataFetcherHelper.java b/src/main/java/graphql/schema/PropertyDataFetcherHelper.java index 13a8f6de09..0877d93688 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcherHelper.java +++ b/src/main/java/graphql/schema/PropertyDataFetcherHelper.java @@ -1,24 +1,9 @@ package graphql.schema; -import graphql.GraphQLException; import graphql.Internal; +import graphql.VisibleForTesting; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Predicate; - -import static graphql.Scalars.GraphQLBoolean; -import static graphql.schema.GraphQLTypeUtil.isNonNull; -import static graphql.schema.GraphQLTypeUtil.unwrapOne; +import java.util.function.Supplier; /** * This class is the guts of a property data fetcher and also used in AST code to turn @@ -26,258 +11,32 @@ */ @Internal public class PropertyDataFetcherHelper { - private static final AtomicBoolean USE_SET_ACCESSIBLE = new AtomicBoolean(true); - private static final AtomicBoolean USE_NEGATIVE_CACHE = new AtomicBoolean(true); - private static final ConcurrentMap METHOD_CACHE = new ConcurrentHashMap<>(); - private static final ConcurrentMap FIELD_CACHE = new ConcurrentHashMap<>(); - private static final ConcurrentMap NEGATIVE_CACHE = new ConcurrentHashMap<>(); - - public static Object getPropertyValue(String propertyName, Object object, GraphQLType graphQLType) { - return getPropertyValue(propertyName, object, graphQLType, null); - } - - public static Object getPropertyValue(String propertyName, Object object, GraphQLType graphQLType, DataFetchingEnvironment environment) { - if (object == null) { - return null; - } - if (object instanceof Map) { - return ((Map) object).get(propertyName); - } - - String key = mkKey(object, propertyName); - if (isNegativelyCached(key)) { - return null; - } - boolean dfeInUse = environment != null; - try { - return getPropertyViaGetterMethod(object, propertyName, graphQLType, (root, methodName) -> findPubliclyAccessibleMethod(propertyName, root, methodName, dfeInUse), environment); - } catch (NoSuchMethodException ignored) { - try { - return getPropertyViaGetterMethod(object, propertyName, graphQLType, (aClass, methodName) -> findViaSetAccessible(propertyName, aClass, methodName, dfeInUse), environment); - } catch (NoSuchMethodException ignored2) { - try { - return getPropertyViaFieldAccess(object, propertyName); - } catch (FastNoSuchMethodException e) { - // we have nothing to ask for and we have exhausted our lookup strategies - putInNegativeCache(key); - return null; - } - } - } - } - - private static boolean isNegativelyCached(String key) { - if (USE_NEGATIVE_CACHE.get()) { - return NEGATIVE_CACHE.containsKey(key); - } - return false; - } - - private static void putInNegativeCache(String key) { - if (USE_NEGATIVE_CACHE.get()) { - NEGATIVE_CACHE.put(key, key); - } - } - - private interface MethodFinder { - Method apply(Class aClass, String s) throws NoSuchMethodException; - } - - private static Object getPropertyViaGetterMethod(Object object, String propertyName, GraphQLType graphQLType, MethodFinder methodFinder, DataFetchingEnvironment environment) throws NoSuchMethodException { - if (isBooleanProperty(graphQLType)) { - try { - return getPropertyViaGetterUsingPrefix(object, propertyName, "is", methodFinder, environment); - } catch (NoSuchMethodException e) { - return getPropertyViaGetterUsingPrefix(object, propertyName, "get", methodFinder, environment); - } - } else { - return getPropertyViaGetterUsingPrefix(object, propertyName, "get", methodFinder, environment); - } - } - - private static Object getPropertyViaGetterUsingPrefix(Object object, String propertyName, String prefix, MethodFinder methodFinder, DataFetchingEnvironment environment) throws NoSuchMethodException { - String getterName = prefix + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1); - try { - Method method = methodFinder.apply(object.getClass(), getterName); - if (takesDataFetcherEnvironmentAsOnlyArgument(method)) { - if (environment == null) { - throw new FastNoSuchMethodException(getterName); - } - return method.invoke(object, environment); - } else { - return method.invoke(object); - } - } catch (IllegalAccessException | InvocationTargetException e) { - throw new GraphQLException(e); - } - } - - /** - * Invoking public methods on package-protected classes via reflection - * causes exceptions. This method searches a class's hierarchy for - * public visibility parent classes with the desired getter. This - * particular case is required to support AutoValue style data classes, - * which have abstract public interfaces implemented by package-protected - * (generated) subclasses. - */ - private static Method findPubliclyAccessibleMethod(String propertyName, Class root, String methodName, boolean dfeInUse) throws NoSuchMethodException { - Class currentClass = root; - while (currentClass != null) { - String key = mkKey(currentClass, propertyName); - Method method = METHOD_CACHE.get(key); - if (method != null) { - return method; - } - if (Modifier.isPublic(currentClass.getModifiers())) { - if (dfeInUse) { - // - // try a getter that takes DataFetchingEnvironment first (if we have one) - try { - method = currentClass.getMethod(methodName, DataFetchingEnvironment.class); - if (Modifier.isPublic(method.getModifiers())) { - METHOD_CACHE.putIfAbsent(key, method); - return method; - } - } catch (NoSuchMethodException e) { - // ok try the next approach - } - } - method = currentClass.getMethod(methodName); - if (Modifier.isPublic(method.getModifiers())) { - METHOD_CACHE.putIfAbsent(key, method); - return method; - } - } - currentClass = currentClass.getSuperclass(); - } - return root.getMethod(methodName); - } - - private static Method findViaSetAccessible(String propertyName, Class aClass, String methodName, boolean dfeInUse) throws NoSuchMethodException { - if (!USE_SET_ACCESSIBLE.get()) { - throw new FastNoSuchMethodException(methodName); - } - Class currentClass = aClass; - while (currentClass != null) { - String key = mkKey(currentClass, propertyName); - Method method = METHOD_CACHE.get(key); - if (method != null) { - return method; - } + private static final PropertyFetchingImpl impl = new PropertyFetchingImpl(DataFetchingEnvironment.class); + private static final Supplier ALWAYS_NULL = () -> null; - Predicate whichMethods = mth -> { - if (dfeInUse) { - return hasZeroArgs(mth) || takesDataFetcherEnvironmentAsOnlyArgument(mth); - } - return hasZeroArgs(mth); - }; - Method[] declaredMethods = currentClass.getDeclaredMethods(); - Optional m = Arrays.stream(declaredMethods) - .filter(mth -> methodName.equals(mth.getName())) - .filter(whichMethods) - .min(mostMethodArgsFirst()); - if (m.isPresent()) { - try { - // few JVMs actually enforce this but it might happen - method = m.get(); - method.setAccessible(true); - METHOD_CACHE.putIfAbsent(key, method); - return method; - } catch (SecurityException ignored) { - } - } - currentClass = currentClass.getSuperclass(); - } - throw new FastNoSuchMethodException(methodName); - } - - private static Object getPropertyViaFieldAccess(Object object, String propertyName) throws FastNoSuchMethodException { - Class aClass = object.getClass(); - String key = mkKey(aClass, propertyName); - try { - Field field = FIELD_CACHE.get(key); - if (field == null) { - field = aClass.getField(propertyName); - FIELD_CACHE.putIfAbsent(key, field); - } - return field.get(object); - } catch (NoSuchFieldException e) { - if (!USE_SET_ACCESSIBLE.get()) { - throw new FastNoSuchMethodException(key); - } - // if not public fields then try via setAccessible - try { - Field field = aClass.getDeclaredField(propertyName); - field.setAccessible(true); - FIELD_CACHE.putIfAbsent(key, field); - return field.get(object); - } catch (SecurityException | NoSuchFieldException ignored2) { - throw new FastNoSuchMethodException(key); - } catch (IllegalAccessException e1) { - throw new GraphQLException(e); - } - } catch (IllegalAccessException e) { - throw new GraphQLException(e); - } + public static Object getPropertyValue(String propertyName, Object object, GraphQLType graphQLType) { + return impl.getPropertyValue(propertyName, object, graphQLType, false, ALWAYS_NULL); } - @SuppressWarnings("SimplifiableIfStatement") - private static boolean isBooleanProperty(GraphQLType graphQLType) { - if (graphQLType == GraphQLBoolean) { - return true; - } - if (isNonNull(graphQLType)) { - return unwrapOne(graphQLType) == GraphQLBoolean; - } - return false; + public static Object getPropertyValue(String propertyName, Object object, GraphQLType graphQLType, Supplier environment) { + return impl.getPropertyValue(propertyName, object, graphQLType, true, environment); } public static void clearReflectionCache() { - METHOD_CACHE.clear(); - FIELD_CACHE.clear(); - NEGATIVE_CACHE.clear(); + impl.clearReflectionCache(); } public static boolean setUseSetAccessible(boolean flag) { - return USE_SET_ACCESSIBLE.getAndSet(flag); - } - - public static boolean setUseNegativeCache(boolean flag) { - return USE_NEGATIVE_CACHE.getAndSet(flag); - } - - private static String mkKey(Object object, String propertyName) { - return mkKey(object.getClass(), propertyName); - } - - private static String mkKey(Class clazz, String propertyName) { - return clazz.getName() + "__" + propertyName; - } - - // by not filling out the stack trace, we gain speed when using the exception as flow control - private static boolean hasZeroArgs(Method mth) { - return mth.getParameterCount() == 0; + return impl.setUseSetAccessible(flag); } - private static boolean takesDataFetcherEnvironmentAsOnlyArgument(Method mth) { - return mth.getParameterCount() == 1 && - mth.getParameterTypes()[0].equals(DataFetchingEnvironment.class); + @VisibleForTesting + public static boolean setUseLambdaFactory(boolean flag) { + return impl.setUseLambdaFactory(flag); } - private static Comparator mostMethodArgsFirst() { - return Comparator.comparingInt(Method::getParameterCount).reversed(); - } - - @SuppressWarnings("serial") - private static class FastNoSuchMethodException extends NoSuchMethodException { - public FastNoSuchMethodException(String methodName) { - super(methodName); - } - - @Override - public synchronized Throwable fillInStackTrace() { - return this; - } + public static boolean setUseNegativeCache(boolean flag) { + return impl.setUseNegativeCache(flag); } } diff --git a/src/main/java/graphql/schema/PropertyFetchingImpl.java b/src/main/java/graphql/schema/PropertyFetchingImpl.java new file mode 100644 index 0000000000..c17ba706b6 --- /dev/null +++ b/src/main/java/graphql/schema/PropertyFetchingImpl.java @@ -0,0 +1,465 @@ +package graphql.schema; + +import graphql.GraphQLException; +import graphql.Internal; +import graphql.schema.fetching.LambdaFetchingSupport; +import graphql.util.StringKit; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Scalars.GraphQLBoolean; +import static graphql.schema.GraphQLTypeUtil.isNonNull; +import static graphql.schema.GraphQLTypeUtil.unwrapOne; + +/** + * A re-usable class that can fetch from POJOs + */ +@Internal +public class PropertyFetchingImpl { + private final AtomicBoolean USE_SET_ACCESSIBLE = new AtomicBoolean(true); + private final AtomicBoolean USE_LAMBDA_FACTORY = new AtomicBoolean(true); + private final AtomicBoolean USE_NEGATIVE_CACHE = new AtomicBoolean(true); + private final ConcurrentMap LAMBDA_CACHE = new ConcurrentHashMap<>(); + private final ConcurrentMap METHOD_CACHE = new ConcurrentHashMap<>(); + private final ConcurrentMap FIELD_CACHE = new ConcurrentHashMap<>(); + private final ConcurrentMap NEGATIVE_CACHE = new ConcurrentHashMap<>(); + private final Class singleArgumentType; + + public PropertyFetchingImpl(Class singleArgumentType) { + this.singleArgumentType = singleArgumentType; + } + + private final class CachedMethod { + private final Method method; + private final boolean takesSingleArgumentTypeAsOnlyArgument; + + CachedMethod(Method method) { + this.method = method; + this.takesSingleArgumentTypeAsOnlyArgument = takesSingleArgumentTypeAsOnlyArgument(method); + } + } + + private static final class CachedLambdaFunction { + private final Function getter; + + CachedLambdaFunction(Function getter) { + this.getter = getter; + } + } + + public Object getPropertyValue(String propertyName, Object object, GraphQLType graphQLType, boolean dfeInUse, Supplier singleArgumentValue) { + if (object instanceof Map) { + return ((Map) object).get(propertyName); + } + + CacheKey cacheKey = mkCacheKey(object, propertyName); + + // let's try positive cache mechanisms first. If we have seen the method or field before + // then we invoke it directly without burning any cycles doing reflection. + CachedLambdaFunction cachedFunction = LAMBDA_CACHE.get(cacheKey); + if (cachedFunction != null) { + return cachedFunction.getter.apply(object); + } + CachedMethod cachedMethod = METHOD_CACHE.get(cacheKey); + if (cachedMethod != null) { + try { + return invokeMethod(object, singleArgumentValue, cachedMethod.method, cachedMethod.takesSingleArgumentTypeAsOnlyArgument); + } catch (NoSuchMethodException ignored) { + assertShouldNeverHappen("A method cached as '%s' is no longer available??", cacheKey); + } + } + Field cachedField = FIELD_CACHE.get(cacheKey); + if (cachedField != null) { + return invokeField(object, cachedField); + } + + // + // if we have tried all strategies before, and they have all failed then we negatively cache + // the cacheKey and assume that it's never going to turn up. This shortcuts the property lookup + // in systems where there was a `foo` graphql property, but they never provided an POJO + // version of `foo`. + // + // we do this second because we believe in the positive cached version will mostly prevail + // but if we then look it up and negatively cache it then lest do that look up next + // + if (isNegativelyCached(cacheKey)) { + return null; + } + + // + // ok we haven't cached it, and we haven't negatively cached it, so we have to find the POJO method which is the most + // expensive operation here + // + + Optional> getterOpt = lambdaGetter(propertyName, object); + if (getterOpt.isPresent()) { + try { + Function getter = getterOpt.get(); + Object value = getter.apply(object); + cachedFunction = new CachedLambdaFunction(getter); + LAMBDA_CACHE.putIfAbsent(cacheKey, cachedFunction); + return value; + } catch (LinkageError | ClassCastException ignored) { + // + // if we get a linkage error then it maybe that class loader challenges + // are preventing the Meta Lambda from working. So let's continue with + // old skool reflection and if it's all broken there then it will eventually + // end up negatively cached + } + } + + // + // try by record like name - object.propertyName() + try { + MethodFinder methodFinder = (rootClass, methodName) -> findRecordMethod(cacheKey, rootClass, methodName); + return getPropertyViaRecordMethod(object, propertyName, methodFinder, singleArgumentValue); + } catch (NoSuchMethodException ignored) { + } + // + // try by public getters name - object.getPropertyName() + try { + MethodFinder methodFinder = (rootClass, methodName) -> findPubliclyAccessibleMethod(cacheKey, rootClass, methodName, dfeInUse, false); + return getPropertyViaGetterMethod(object, propertyName, graphQLType, methodFinder, singleArgumentValue); + } catch (NoSuchMethodException ignored) { + } + // + // try by public getters name - object.getPropertyName() where its static + try { + // we allow static getXXX() methods because we always have. It's strange in retrospect but + // in order to not break things we allow statics to be used. In theory this double code check is not needed + // because you CANT have a `static getFoo()` and a `getFoo()` in the same class hierarchy but to make the code read clearer + // I have repeated the lookup. Since we cache methods, this happens only once and does not slow us down + MethodFinder methodFinder = (rootClass, methodName) -> findPubliclyAccessibleMethod(cacheKey, rootClass, methodName, dfeInUse, true); + return getPropertyViaGetterMethod(object, propertyName, graphQLType, methodFinder, singleArgumentValue); + } catch (NoSuchMethodException ignored) { + } + // + // try by accessible getters name - object.getPropertyName() + try { + MethodFinder methodFinder = (aClass, methodName) -> findViaSetAccessible(cacheKey, aClass, methodName, dfeInUse); + return getPropertyViaGetterMethod(object, propertyName, graphQLType, methodFinder, singleArgumentValue); + } catch (NoSuchMethodException ignored) { + } + // + // try by field name - object.propertyName; + try { + return getPropertyViaFieldAccess(cacheKey, object, propertyName); + } catch (NoSuchMethodException ignored) { + } + // we have nothing to ask for, and we have exhausted our lookup strategies + putInNegativeCache(cacheKey); + return null; + } + + private Optional> lambdaGetter(String propertyName, Object object) { + if (USE_LAMBDA_FACTORY.get()) { + return LambdaFetchingSupport.createGetter(object.getClass(), propertyName); + } + return Optional.empty(); + } + + private boolean isNegativelyCached(CacheKey key) { + if (USE_NEGATIVE_CACHE.get()) { + return NEGATIVE_CACHE.containsKey(key); + } + return false; + } + + private void putInNegativeCache(CacheKey key) { + if (USE_NEGATIVE_CACHE.get()) { + NEGATIVE_CACHE.put(key, key); + } + } + + private interface MethodFinder { + Method apply(Class aClass, String s) throws NoSuchMethodException; + } + + private Object getPropertyViaRecordMethod(Object object, String propertyName, MethodFinder methodFinder, Supplier singleArgumentValue) throws NoSuchMethodException { + Method method = methodFinder.apply(object.getClass(), propertyName); + return invokeMethod(object, singleArgumentValue, method, takesSingleArgumentTypeAsOnlyArgument(method)); + } + + private Object getPropertyViaGetterMethod(Object object, String propertyName, GraphQLType graphQLType, MethodFinder methodFinder, Supplier singleArgumentValue) throws NoSuchMethodException { + if (isBooleanProperty(graphQLType)) { + try { + return getPropertyViaGetterUsingPrefix(object, propertyName, "is", methodFinder, singleArgumentValue); + } catch (NoSuchMethodException e) { + return getPropertyViaGetterUsingPrefix(object, propertyName, "get", methodFinder, singleArgumentValue); + } + } else { + return getPropertyViaGetterUsingPrefix(object, propertyName, "get", methodFinder, singleArgumentValue); + } + } + + private Object getPropertyViaGetterUsingPrefix(Object object, String propertyName, String prefix, MethodFinder methodFinder, Supplier singleArgumentValue) throws NoSuchMethodException { + String getterName = prefix + StringKit.capitalize(propertyName); + Method method = methodFinder.apply(object.getClass(), getterName); + return invokeMethod(object, singleArgumentValue, method, takesSingleArgumentTypeAsOnlyArgument(method)); + } + + /** + * Invoking public methods on package-protected classes via reflection + * causes exceptions. This method searches a class's hierarchy for + * public visibility parent classes with the desired getter. This + * particular case is required to support AutoValue style data classes, + * which have abstract public interfaces implemented by package-protected + * (generated) subclasses. + */ + private Method findPubliclyAccessibleMethod(CacheKey cacheKey, Class rootClass, String methodName, boolean dfeInUse, boolean allowStaticMethods) throws NoSuchMethodException { + Class currentClass = rootClass; + while (currentClass != null) { + if (Modifier.isPublic(currentClass.getModifiers())) { + if (dfeInUse) { + // + // try a getter that takes singleArgumentType first (if we have one) + try { + Method method = currentClass.getMethod(methodName, singleArgumentType); + if (isSuitablePublicMethod(method, allowStaticMethods)) { + METHOD_CACHE.putIfAbsent(cacheKey, new CachedMethod(method)); + return method; + } + } catch (NoSuchMethodException e) { + // ok try the next approach + } + } + Method method = currentClass.getMethod(methodName); + if (isSuitablePublicMethod(method, allowStaticMethods)) { + METHOD_CACHE.putIfAbsent(cacheKey, new CachedMethod(method)); + return method; + } + } + currentClass = currentClass.getSuperclass(); + } + assert rootClass != null; + return rootClass.getMethod(methodName); + } + + private boolean isSuitablePublicMethod(Method method, boolean allowStaticMethods) { + int methodModifiers = method.getModifiers(); + if (Modifier.isPublic(methodModifiers)) { + //noinspection RedundantIfStatement + if (Modifier.isStatic(methodModifiers) && !allowStaticMethods) { + return false; + } + return true; + } + return false; + } + + /* + https://docs.oracle.com/en/java/javase/15/language/records.html + + A record class declares a sequence of fields, and then the appropriate accessors, constructors, equals, hashCode, and toString methods are created automatically. + + Records cannot extend any class - so we need only check the root class for a publicly declared method with the propertyName + + However, we won't just restrict ourselves strictly to true records. We will find methods that are record like + and fetch them - e.g. `object.propertyName()` + + We won't allow static methods for record like methods however + */ + private Method findRecordMethod(CacheKey cacheKey, Class rootClass, String methodName) throws NoSuchMethodException { + return findPubliclyAccessibleMethod(cacheKey, rootClass, methodName, false, false); + } + + private Method findViaSetAccessible(CacheKey cacheKey, Class aClass, String methodName, boolean dfeInUse) throws NoSuchMethodException { + if (!USE_SET_ACCESSIBLE.get()) { + throw new FastNoSuchMethodException(methodName); + } + Class currentClass = aClass; + while (currentClass != null) { + Predicate whichMethods = mth -> { + if (dfeInUse) { + return hasZeroArgs(mth) || takesSingleArgumentTypeAsOnlyArgument(mth); + } + return hasZeroArgs(mth); + }; + Method[] declaredMethods = currentClass.getDeclaredMethods(); + Optional m = Arrays.stream(declaredMethods) + .filter(mth -> methodName.equals(mth.getName())) + .filter(whichMethods) + .min(mostMethodArgsFirst()); + if (m.isPresent()) { + try { + // few JVMs actually enforce this but it might happen + Method method = m.get(); + method.setAccessible(true); + METHOD_CACHE.putIfAbsent(cacheKey, new CachedMethod(method)); + return method; + } catch (SecurityException ignored) { + } + } + currentClass = currentClass.getSuperclass(); + } + throw new FastNoSuchMethodException(methodName); + } + + private Object getPropertyViaFieldAccess(CacheKey cacheKey, Object object, String propertyName) throws FastNoSuchMethodException { + Class aClass = object.getClass(); + try { + Field field = aClass.getField(propertyName); + FIELD_CACHE.putIfAbsent(cacheKey, field); + return field.get(object); + } catch (NoSuchFieldException e) { + if (!USE_SET_ACCESSIBLE.get()) { + throw new FastNoSuchMethodException(cacheKey.toString()); + } + // if not public fields then try via setAccessible + try { + Field field = aClass.getDeclaredField(propertyName); + field.setAccessible(true); + FIELD_CACHE.putIfAbsent(cacheKey, field); + return field.get(object); + } catch (SecurityException | NoSuchFieldException ignored2) { + throw new FastNoSuchMethodException(cacheKey.toString()); + } catch (IllegalAccessException e1) { + throw new GraphQLException(e); + } + } catch (IllegalAccessException e) { + throw new GraphQLException(e); + } + } + + private Object invokeMethod(Object object, Supplier singleArgumentValue, Method method, boolean takesSingleArgument) throws FastNoSuchMethodException { + try { + if (takesSingleArgument) { + Object argValue = singleArgumentValue.get(); + if (argValue == null) { + throw new FastNoSuchMethodException(method.getName()); + } + return method.invoke(object, argValue); + } else { + return method.invoke(object); + } + } catch (IllegalAccessException | InvocationTargetException e) { + throw new GraphQLException(e); + } + } + + private Object invokeField(Object object, Field field) { + try { + return field.get(object); + } catch (IllegalAccessException e) { + throw new GraphQLException(e); + } + } + + @SuppressWarnings("SimplifiableIfStatement") + private boolean isBooleanProperty(GraphQLType graphQLType) { + if (graphQLType == GraphQLBoolean) { + return true; + } + if (isNonNull(graphQLType)) { + return unwrapOne(graphQLType) == GraphQLBoolean; + } + return false; + } + + public void clearReflectionCache() { + LAMBDA_CACHE.clear(); + METHOD_CACHE.clear(); + FIELD_CACHE.clear(); + NEGATIVE_CACHE.clear(); + } + + public boolean setUseSetAccessible(boolean flag) { + return USE_SET_ACCESSIBLE.getAndSet(flag); + } + + public boolean setUseLambdaFactory(boolean flag) { + return USE_LAMBDA_FACTORY.getAndSet(flag); + } + + public boolean setUseNegativeCache(boolean flag) { + return USE_NEGATIVE_CACHE.getAndSet(flag); + } + + private CacheKey mkCacheKey(Object object, String propertyName) { + Class clazz = object.getClass(); + ClassLoader classLoader = clazz.getClassLoader(); + return new CacheKey(classLoader, clazz.getName(), propertyName); + } + + private static final class CacheKey { + private final ClassLoader classLoader; + private final String className; + private final String propertyName; + + private CacheKey(ClassLoader classLoader, String className, String propertyName) { + this.classLoader = classLoader; + this.className = className; + this.propertyName = propertyName; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof CacheKey)) { + return false; + } + CacheKey cacheKey = (CacheKey) o; + return Objects.equals(classLoader, cacheKey.classLoader) && Objects.equals(className, cacheKey.className) && Objects.equals(propertyName, cacheKey.propertyName); + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + Objects.hashCode(classLoader); + result = 31 * result + Objects.hashCode(className); + result = 31 * result + Objects.hashCode(propertyName); + return result; + } + + @Override + public String toString() { + return "CacheKey{" + + "classLoader=" + classLoader + + ", className='" + className + '\'' + + ", propertyName='" + propertyName + '\'' + + '}'; + } + } + + // by not filling out the stack trace, we gain speed when using the exception as flow control + private boolean hasZeroArgs(Method mth) { + return mth.getParameterCount() == 0; + } + + private boolean takesSingleArgumentTypeAsOnlyArgument(Method mth) { + return mth.getParameterCount() == 1 && + mth.getParameterTypes()[0].equals(singleArgumentType); + } + + private static Comparator mostMethodArgsFirst() { + return Comparator.comparingInt(Method::getParameterCount).reversed(); + } + + private static class FastNoSuchMethodException extends NoSuchMethodException { + public FastNoSuchMethodException(String methodName) { + super(methodName); + } + + @Override + public synchronized Throwable fillInStackTrace() { + return this; + } + } +} diff --git a/src/main/java/graphql/schema/SchemaElementChildrenContainer.java b/src/main/java/graphql/schema/SchemaElementChildrenContainer.java index 9d506e9b12..428913b012 100644 --- a/src/main/java/graphql/schema/SchemaElementChildrenContainer.java +++ b/src/main/java/graphql/schema/SchemaElementChildrenContainer.java @@ -10,6 +10,7 @@ import java.util.function.Consumer; import static graphql.Assert.assertNotNull; +import static graphql.collect.ImmutableKit.emptyList; @PublicApi public class SchemaElementChildrenContainer { @@ -21,7 +22,7 @@ private SchemaElementChildrenContainer(Map> c } public List getChildren(String key) { - return (List) children.getOrDefault(key, new ArrayList<>()); + return (List) children.getOrDefault(key, emptyList()); } public T getChildOrNull(String key) { diff --git a/src/main/java/graphql/schema/SchemaTransformer.java b/src/main/java/graphql/schema/SchemaTransformer.java index 91e5701629..41d669f4ed 100644 --- a/src/main/java/graphql/schema/SchemaTransformer.java +++ b/src/main/java/graphql/schema/SchemaTransformer.java @@ -1,9 +1,10 @@ package graphql.schema; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; import graphql.PublicApi; -import graphql.introspection.Introspection; +import graphql.collect.ImmutableKit; import graphql.util.Breadcrumb; -import graphql.util.FpKit; import graphql.util.NodeAdapter; import graphql.util.NodeLocation; import graphql.util.NodeZipper; @@ -13,97 +14,72 @@ import graphql.util.TraverserVisitor; import java.util.ArrayList; -import java.util.Collections; +import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Consumer; import static graphql.Assert.assertNotEmpty; +import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; import static graphql.schema.GraphQLSchemaElementAdapter.SCHEMA_ELEMENT_ADAPTER; import static graphql.schema.SchemaElementChildrenContainer.newSchemaElementChildrenContainer; +import static graphql.schema.impl.StronglyConnectedComponentsTopologicallySorted.getStronglyConnectedComponentsTopologicallySorted; +import static graphql.util.NodeZipper.ModificationType.DELETE; import static graphql.util.NodeZipper.ModificationType.REPLACE; +import static graphql.util.TraversalControl.CONTINUE; /** - * Transforms a {@link GraphQLSchema} object. + * Transforms a {@link GraphQLSchema} object by calling bac on a provided visitor. + *

      + * To change a {@link GraphQLSchemaElement} node in the schema you need + * to return {@link GraphQLTypeVisitor#changeNode(TraverserContext, GraphQLSchemaElement)} + * which instructs the schema transformer to change that element upon leaving that + * visitor method. + *

      + * {@code
      + *  public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) {
      + *      GraphQLObjectType newObjectType = mkSomeNewNode(objectType);
      + *      return changeNode(context, newObjectType);
      + *  }
      + *  }
      + * 
      + *

      + * To delete an element use {@link GraphQLTypeVisitor#deleteNode(TraverserContext)} + *

      + * {@code
      + *  public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) {
      + *      return deleteNode(context, objectType);
      + *  }
      + *  }
      + * 
      + *

      + * To insert elements use either {@link GraphQLTypeVisitor#insertAfter(TraverserContext, GraphQLSchemaElement)} or + * {@link GraphQLTypeVisitor#insertBefore(TraverserContext, GraphQLSchemaElement)} + * which will insert the new node before or after the current node being visited + *

      + * {@code
      + *  public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) {
      + *      GraphQLObjectType newObjectType = mkSomeNewNode();
      + *      return insertAfter(context, newObjectType);
      + *  }
      + *  }
      + * 
      */ @PublicApi public class SchemaTransformer { - // artificial schema element which serves as root element for the transformation - private static class DummyRoot implements GraphQLSchemaElement { - - static final String QUERY = "query"; - static final String MUTATION = "mutation"; - static final String SUBSCRIPTION = "subscription"; - static final String ADD_TYPES = "addTypes"; - static final String DIRECTIVES = "directives"; - static final String INTROSPECTION = "introspection"; - GraphQLSchema schema; - - GraphQLObjectType query; - GraphQLObjectType mutation; - GraphQLObjectType subscription; - Set additionalTypes; - Set directives; - - DummyRoot(GraphQLSchema schema) { - this.schema = schema; - query = schema.getQueryType(); - mutation = schema.isSupportingMutations() ? schema.getMutationType() : null; - subscription = schema.isSupportingSubscriptions() ? schema.getSubscriptionType() : null; - additionalTypes = schema.getAdditionalTypes(); - directives = new LinkedHashSet<>(schema.getDirectives()); - } - - - @Override - public List getChildren() { - return assertShouldNeverHappen(); - } - - @Override - public SchemaElementChildrenContainer getChildrenWithTypeReferences() { - SchemaElementChildrenContainer.Builder builder = newSchemaElementChildrenContainer() - .child(QUERY, query); - if (schema.isSupportingMutations()) { - builder.child(MUTATION, mutation); - } - if (schema.isSupportingSubscriptions()) { - builder.child(SUBSCRIPTION, subscription); - } - builder.children(ADD_TYPES, additionalTypes); - builder.children(DIRECTIVES, directives); - builder.child(INTROSPECTION, Introspection.__Schema); - return builder.build(); - } - - @Override - public GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newChildren) { - query = newChildren.getChildOrNull(QUERY); - mutation = newChildren.getChildOrNull(MUTATION); - subscription = newChildren.getChildOrNull(SUBSCRIPTION); - additionalTypes = new LinkedHashSet<>(newChildren.getChildren(ADD_TYPES)); - directives = new LinkedHashSet<>(newChildren.getChildren(DIRECTIVES)); - return this; - } - - @Override - public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { - return assertShouldNeverHappen(); - } - } - - /** * Transforms a GraphQLSchema and returns a new GraphQLSchema object. * - * @param schema - * @param visitor + * @param schema the schema to transform + * @param visitor the visitor call back * * @return a new GraphQLSchema instance. */ @@ -112,33 +88,140 @@ public static GraphQLSchema transformSchema(GraphQLSchema schema, GraphQLTypeVis return schemaTransformer.transform(schema, visitor); } + /** + * Transforms a GraphQLSchema and returns a new GraphQLSchema object. + * + * @param schema the schema to transform + * @param visitor the visitor call back + * @param postTransformation a callback that can be as a final step to the schema + * + * @return a new GraphQLSchema instance. + */ + public static GraphQLSchema transformSchema(GraphQLSchema schema, GraphQLTypeVisitor visitor, Consumer postTransformation) { + SchemaTransformer schemaTransformer = new SchemaTransformer(); + return schemaTransformer.transform(schema, visitor, postTransformation); + } + + /** + * Transforms a {@link GraphQLSchemaElement} and returns a new element. + * + * @param schemaElement the schema element to transform + * @param visitor the visitor call back + * @param for two + * + * @return a new GraphQLSchemaElement instance. + */ + public static T transformSchema(final T schemaElement, GraphQLTypeVisitor visitor) { + SchemaTransformer schemaTransformer = new SchemaTransformer(); + return schemaTransformer.transform(schemaElement, visitor); + } public GraphQLSchema transform(final GraphQLSchema schema, GraphQLTypeVisitor visitor) { + return (GraphQLSchema) transformImpl(schema, null, visitor, null); + } + + public GraphQLSchema transform(final GraphQLSchema schema, GraphQLTypeVisitor visitor, Consumer postTransformation) { + return (GraphQLSchema) transformImpl(schema, null, visitor, postTransformation); + } + + public T transform(final T schemaElement, GraphQLTypeVisitor visitor) { + //noinspection unchecked + return (T) transformImpl(null, schemaElement, visitor, null); + } + private Object transformImpl(final GraphQLSchema schema, GraphQLSchemaElement schemaElement, GraphQLTypeVisitor visitor, Consumer postTransformation) { + DummyRoot dummyRoot; + GraphQLCodeRegistry.Builder codeRegistry = null; + if (schema != null) { + dummyRoot = new DummyRoot(schema); + codeRegistry = GraphQLCodeRegistry.newCodeRegistry(schema.getCodeRegistry()); + } else { + dummyRoot = new DummyRoot(schemaElement); + } + + final Map changedTypes = new LinkedHashMap<>(); + final Map typeReferences = new LinkedHashMap<>(); - DummyRoot dummyRoot = new DummyRoot(schema); + // first pass - general transformation + boolean schemaChanged = traverseAndTransform(dummyRoot, changedTypes, typeReferences, visitor, codeRegistry, schema); + // if we have changed any named elements AND we have type references referring to them then + // we need to make a second pass to replace these type references to the new names + if (!changedTypes.isEmpty()) { + boolean hasTypeRefsForChangedTypes = changedTypes.keySet().stream().anyMatch(typeReferences::containsKey); + if (hasTypeRefsForChangedTypes) { + replaceTypeReferences(dummyRoot, schema, codeRegistry, changedTypes); + } + } + + if (schema != null) { + + GraphQLSchema graphQLSchema = schema; + if (schemaChanged || codeRegistry.hasChanged()) { + graphQLSchema = dummyRoot.rebuildSchema(codeRegistry); + if (postTransformation != null) { + graphQLSchema = graphQLSchema.transform(postTransformation); + } + } + return graphQLSchema; + } else { + return dummyRoot.schemaElement; + } + } + + private void replaceTypeReferences(DummyRoot dummyRoot, GraphQLSchema schema, GraphQLCodeRegistry.Builder codeRegistry, Map changedTypes) { + GraphQLTypeVisitor typeRefVisitor = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLTypeReference(GraphQLTypeReference typeRef, TraverserContext context) { + GraphQLNamedType graphQLNamedType = changedTypes.get(typeRef.getName()); + if (graphQLNamedType != null) { + typeRef = GraphQLTypeReference.typeRef(graphQLNamedType.getName()); + return changeNode(context, typeRef); + } + return CONTINUE; + } + }; + traverseAndTransform(dummyRoot, new HashMap<>(), new HashMap<>(), typeRefVisitor, codeRegistry, schema); + } + + private boolean traverseAndTransform(DummyRoot dummyRoot, Map changedTypes, Map typeReferences, GraphQLTypeVisitor visitor, GraphQLCodeRegistry.Builder codeRegistry, GraphQLSchema schema) { List> zippers = new LinkedList<>(); Map> zipperByNodeAfterTraversing = new LinkedHashMap<>(); Map> zipperByOriginalNode = new LinkedHashMap<>(); Map, List>>> breadcrumbsByZipper = new LinkedHashMap<>(); - TraverserVisitor nodeTraverserVisitor = new TraverserVisitor() { + Map> reverseDependencies = new LinkedHashMap<>(); + Map> typeRefReverseDependencies = new LinkedHashMap<>(); + + TraverserVisitor nodeTraverserVisitor = new TraverserVisitor<>() { @Override public TraversalControl enter(TraverserContext context) { - if (context.thisNode() == dummyRoot) { + GraphQLSchemaElement currentSchemaElement = context.thisNode(); + if (currentSchemaElement == dummyRoot) { return TraversalControl.CONTINUE; } - NodeZipper nodeZipper = new NodeZipper<>(context.thisNode(), context.getBreadcrumbs(), SCHEMA_ELEMENT_ADAPTER); + if (currentSchemaElement instanceof GraphQLTypeReference) { + GraphQLTypeReference typeRef = (GraphQLTypeReference) currentSchemaElement; + typeReferences.put(typeRef.getName(), typeRef); + } + NodeZipper nodeZipper = new NodeZipper<>(currentSchemaElement, context.getBreadcrumbs(), SCHEMA_ELEMENT_ADAPTER); context.setVar(NodeZipper.class, nodeZipper); context.setVar(NodeAdapter.class, SCHEMA_ELEMENT_ADAPTER); int zippersBefore = zippers.size(); - TraversalControl result = context.thisNode().accept(context, visitor); - // detection if the node was changed: TODO make it better: doesn't work for parallel + TraversalControl result = currentSchemaElement.accept(context, visitor); + + // detection if the node was changed if (zippersBefore + 1 == zippers.size()) { nodeZipper = zippers.get(zippers.size() - 1); + if (context.originalThisNode() instanceof GraphQLNamedType && context.isChanged()) { + GraphQLNamedType originalNamedType = (GraphQLNamedType) context.originalThisNode(); + GraphQLNamedType changedNamedType = (GraphQLNamedType) context.thisNode(); + if (!originalNamedType.getName().equals(changedNamedType.getName())) { + changedTypes.put(originalNamedType.getName(), changedNamedType); + } + } } zipperByOriginalNode.put(context.originalThisNode(), nodeZipper); @@ -150,6 +233,14 @@ public TraversalControl enter(TraverserContext context) { breadcrumbsByZipper.put(nodeZipper, new ArrayList<>()); breadcrumbsByZipper.get(nodeZipper).add(context.getBreadcrumbs()); + if (nodeZipper.getModificationType() != NodeZipper.ModificationType.DELETE) { + reverseDependencies.computeIfAbsent(context.thisNode(), ign -> new ArrayList<>()).add(context.getParentNode()); + + if (context.originalThisNode() instanceof GraphQLTypeReference) { + String typeName = ((GraphQLTypeReference) context.originalThisNode()).getName(); + typeRefReverseDependencies.computeIfAbsent(typeName, ign -> new ArrayList<>()).add(context.getParentNode()); + } + } return result; } @@ -163,144 +254,194 @@ public TraversalControl leave(TraverserContext context) { public TraversalControl backRef(TraverserContext context) { NodeZipper zipper = zipperByOriginalNode.get(context.thisNode()); breadcrumbsByZipper.get(zipper).add(context.getBreadcrumbs()); + if (zipper.getModificationType() == DELETE) { + return CONTINUE; + } visitor.visitBackRef(context); + List reverseDependenciesForCurNode = reverseDependencies.get(zipper.getCurNode()); + assertNotNull(reverseDependenciesForCurNode); + reverseDependenciesForCurNode.add(context.getParentNode()); return TraversalControl.CONTINUE; } }; + Traverser traverser = Traverser.depthFirstWithNamedChildren(SCHEMA_ELEMENT_ADAPTER::getNamedChildren, zippers, null); - GraphQLCodeRegistry.Builder builder = GraphQLCodeRegistry.newCodeRegistry(schema.getCodeRegistry()); - traverser.rootVar(GraphQLCodeRegistry.Builder.class, builder); + if (codeRegistry != null) { + traverser.rootVar(GraphQLCodeRegistry.Builder.class, codeRegistry); + } + if (schema != null) { + traverser.rootVar(GraphQLSchema.class, schema); + } + traverser.traverse(dummyRoot, nodeTraverserVisitor); - toRootNode(zippers, breadcrumbsByZipper, zipperByNodeAfterTraversing); - - GraphQLSchema newSchema = GraphQLSchema.newSchema() - .query(dummyRoot.query) - .mutation(dummyRoot.mutation) - .subscription(dummyRoot.subscription) - .additionalTypes(dummyRoot.additionalTypes) - .additionalDirectives(dummyRoot.directives) - .codeRegistry(builder.build()) - .buildImpl(true); - return newSchema; + List> stronglyConnectedTopologicallySorted = getStronglyConnectedComponentsTopologicallySorted(reverseDependencies, typeRefReverseDependencies); + + return zipUpToDummyRoot(zippers, stronglyConnectedTopologicallySorted, breadcrumbsByZipper, zipperByNodeAfterTraversing); } - private void toRootNode(List> zippers, - Map, List>>> breadcrumbsByZipper, - Map> zipperByNodeAfterTraversing) { - if (zippers.size() == 0) { - return; + private static class RelevantZippersAndBreadcrumbs { + final Multimap> zipperByParent = LinkedHashMultimap.create(); + final Set> relevantZippers; + final Map, List>>> breadcrumbsByZipper; + + public RelevantZippersAndBreadcrumbs(List> relevantZippers, + Map, List>>> breadcrumbsByZipper) { + this.relevantZippers = new LinkedHashSet<>(relevantZippers); + this.breadcrumbsByZipper = breadcrumbsByZipper; + for (NodeZipper zipper : relevantZippers) { + for (List> breadcrumbs : breadcrumbsByZipper.get(zipper)) { + zipperByParent.put(breadcrumbs.get(0).getNode(), zipper); + } + } } - /* - * Because every node can have multiple parents (not a tree, but a graph) we have a list of breadcrumbs per zipper. - * Or to put it differently: there is not one path from a node to the dummyRoot, but multiple ones with a different length - */ - - // we want to preserve the order here - Set> curZippers = new LinkedHashSet<>(zippers); - Map, List>>> curBreadcrumbsByZipper = new LinkedHashMap<>(breadcrumbsByZipper); + public boolean isRelevantZipper(NodeZipper zipper) { + return relevantZippers.contains(zipper); + } - while (curZippers.size() > 1 || !(curZippers.iterator().next().getCurNode() instanceof DummyRoot)) { - List> deepestZippers = new ArrayList<>(); - int depth = getDeepestZippers(curZippers, curBreadcrumbsByZipper, deepestZippers); - Map, List>>> breadcrumbsUsed = getBreadcrumbsUsed(curZippers, curBreadcrumbsByZipper, depth); + public Collection> zippersWithParent(GraphQLSchemaElement parent) { + return zipperByParent.get(parent); + } - Map>> zippersByParent = groupBySameParent(deepestZippers, breadcrumbsUsed); + public void removeRelevantZipper(NodeZipper zipper) { + relevantZippers.remove(zipper); + } - List> newZippers = new ArrayList<>(); + public List>> getBreadcrumbs(NodeZipper zipper) { + return breadcrumbsByZipper.get(zipper); + } - for (Map.Entry>> entry : zippersByParent.entrySet()) { - // this is the parenNode we want to replace - GraphQLSchemaElement parentNode = entry.getKey(); - NodeZipper newZipper = moveUp(parentNode, entry.getValue(), breadcrumbsUsed); + public void updateZipper(NodeZipper currentZipper, + NodeZipper newZipper) { + // the current zipper is not always relevant, meaning this has no effect sometimes + relevantZippers.remove(currentZipper); + relevantZippers.add(newZipper); - // updating curBreadcrumbsByZipper to use the new zipper for parent - NodeZipper originalZipperForParent = zipperByNodeAfterTraversing.get(parentNode); - // the parent might have been changed itself, we can get rid of this zipper because moveUp already - // used the changed parent - curZippers.remove(originalZipperForParent); - List>> breadcrumbsForOriginalParent = curBreadcrumbsByZipper.get(originalZipperForParent); - curBreadcrumbsByZipper.remove(originalZipperForParent); - curBreadcrumbsByZipper.put(newZipper, breadcrumbsForOriginalParent); - newZippers.add(newZipper); - } - // remove all breadcrumbs we and remove the zipper if no breadcrumbs are left - for (Map.Entry, List>>> entry : breadcrumbsUsed.entrySet()) { - List>> all = curBreadcrumbsByZipper.get(entry.getKey()); - all.removeAll(entry.getValue()); - // if we used all breadcrumbs we are done with this zipper - if (all.size() == 0) { - curZippers.remove(entry.getKey()); - } + List>> currentBreadcrumbs = breadcrumbsByZipper.get(currentZipper); + assertNotNull(currentBreadcrumbs, "No breadcrumbs found for zipper %s", currentZipper); + for (List> breadcrumbs : currentBreadcrumbs) { + GraphQLSchemaElement parent = breadcrumbs.get(0).getNode(); + zipperByParent.remove(parent, currentZipper); + zipperByParent.put(parent, newZipper); } - curZippers.addAll(newZippers); + breadcrumbsByZipper.remove(currentZipper); + breadcrumbsByZipper.put(newZipper, currentBreadcrumbs); + } + } - private Map, List>>> getBreadcrumbsUsed( - Set> zippers, - Map, List>>> breadcrumbsByZipper, - int depth) { - Map, List>>> result = new LinkedHashMap<>(); - for (NodeZipper zipper : zippers) { - List>> breadcrumbsList = breadcrumbsByZipper.get(zipper); - for (List> breadcrumbs : breadcrumbsList) { - if (breadcrumbs.size() == depth) { - result.computeIfAbsent(zipper, ignored -> new ArrayList<>()); - result.get(zipper).add(breadcrumbs); + + private boolean zipUpToDummyRoot(List> zippers, + List> stronglyConnectedTopologicallySorted, + Map, List>>> breadcrumbsByZipper, + Map> nodeToZipper) { + if (zippers.size() == 0) { + return false; + } + RelevantZippersAndBreadcrumbs relevantZippers = new RelevantZippersAndBreadcrumbs(zippers, breadcrumbsByZipper); + + for (int i = stronglyConnectedTopologicallySorted.size() - 1; i >= 0; i--) { + List scc = stronglyConnectedTopologicallySorted.get(i); + // performance relevant: we avoid calling zipperWithSameParent twice + // for SCC of size one. + if (scc.size() > 1) { + boolean sccChanged = false; + List unchangedSccElements = new ArrayList<>(); + for (GraphQLSchemaElement element : scc) { + // if the current element itself has a zipper it is changed + if (relevantZippers.isRelevantZipper(nodeToZipper.get(element))) { + sccChanged = true; + continue; + } + // if the current element is changed via "moveUp" it is changed + Map, Breadcrumb> zipperWithSameParent = zipperWithSameParent(element, relevantZippers, false); + if (zipperWithSameParent.size() > 0) { + sccChanged = true; + } else { + unchangedSccElements.add(element); + } + } + if (!sccChanged) { + continue; + } + // we need to change all elements inside the current SCC + for (GraphQLSchemaElement element : unchangedSccElements) { + NodeZipper currentZipper = nodeToZipper.get(element); + NodeZipper newZipper = currentZipper.withNewNode(element.copy()); + nodeToZipper.put(element, newZipper); + relevantZippers.updateZipper(currentZipper, newZipper); } } - } - return result; - } + for (int j = scc.size() - 1; j >= 0; j--) { + GraphQLSchemaElement element = scc.get(j); + Map, Breadcrumb> zipperWithSameParent = zipperWithSameParent(element, relevantZippers, true); + // this means we have a node which doesn't need to be changed + if (zipperWithSameParent.size() == 0) { + continue; + } + NodeZipper newZipper = moveUp(element, zipperWithSameParent); - private int getDeepestZippers( - Set> zippers, - Map, List>>> breadcrumbsByZipper, - List> result - ) { - Map>> grouped = FpKit.groupingBy(zippers, astZipper -> { - List>> breadcrumbsList = breadcrumbsByZipper.get(astZipper); - List sizes = FpKit.map(breadcrumbsList, List::size); - return Collections.max(sizes); - }); + if (element instanceof DummyRoot) { + // this means we have updated the dummy root and we are done (dummy root is a special as it gets updated in place, see Implementation of DummyRoot) + break; + } - Integer maxLevel = Collections.max(grouped.keySet()); - result.addAll(grouped.get(maxLevel)); - return maxLevel; - } + NodeZipper curZipperForElement = nodeToZipper.get(element); + assertNotNull(curZipperForElement, "curZipperForElement is null for parentNode %s", element); + relevantZippers.updateZipper(curZipperForElement, newZipper); - private static class ZipperWithOneParent { - public ZipperWithOneParent(NodeZipper zipper, Breadcrumb parent) { - this.zipper = zipper; - this.parent = parent; + } } + return true; + } - public NodeZipper zipper; - public Breadcrumb parent; + private Map, Breadcrumb> zipperWithSameParent( + GraphQLSchemaElement parent, + RelevantZippersAndBreadcrumbs relevantZippers, + boolean cleanup) { + Map, Breadcrumb> result = new LinkedHashMap<>(); + Collection> zippersWithParent = relevantZippers.zippersWithParent(parent); + Iterator> zippersIter = zippersWithParent.iterator(); + outer: + while (zippersIter.hasNext()) { + NodeZipper zipper = zippersIter.next(); + List>> listOfBreadcrumbsList = assertNotNull(relevantZippers.getBreadcrumbs(zipper)); + for (int i = 0; i < listOfBreadcrumbsList.size(); i++) { + List> path = listOfBreadcrumbsList.get(i); + if (path.get(0).getNode() == parent) { + result.put(zipper, path.get(0)); + if (cleanup) { + // remove breadcrumb we just used + listOfBreadcrumbsList.remove(i); + if (listOfBreadcrumbsList.size() == 0) { + // if there are no breadcrumbs left for this zipper it is safe to remove + relevantZippers.removeRelevantZipper(zipper); + } + } + continue outer; + } + } + } + return result; } private NodeZipper moveUp( GraphQLSchemaElement parent, - List> sameParent, - Map, List>>> breadcrumbsUsed) { + Map, Breadcrumb> sameParentsZipper) { + Set> sameParent = sameParentsZipper.keySet(); assertNotEmpty(sameParent, "expected at least one zipper"); Map> childrenMap = new HashMap<>(SCHEMA_ELEMENT_ADAPTER.getNamedChildren(parent)); Map indexCorrection = new HashMap<>(); - List zipperWithOneParents = new ArrayList<>(); + List zipperWithOneParents = new ArrayList<>(sameParent.size()); for (NodeZipper zipper : sameParent) { - for (List> breadcrumbs : breadcrumbsUsed.get(zipper)) { - // only consider breadcrumbs pointing the right parent - if (breadcrumbs.get(0).getNode() != parent) { - continue; - } - zipperWithOneParents.add(new ZipperWithOneParent(zipper, breadcrumbs.get(0))); - } + Breadcrumb breadcrumb = sameParentsZipper.get(zipper); + zipperWithOneParents.add(new ZipperWithOneParent(zipper, breadcrumb)); } zipperWithOneParents.sort((zipperWithOneParent1, zipperWithOneParent2) -> { @@ -360,24 +501,134 @@ private NodeZipper moveUp( } GraphQLSchemaElement newNode = SCHEMA_ELEMENT_ADAPTER.withNewChildren(parent, childrenMap); - List> newBreadcrumbs = sameParent.get(0).getBreadcrumbs().subList(1, sameParent.get(0).getBreadcrumbs().size()); + final List> oldBreadcrumbs = sameParent.iterator().next().getBreadcrumbs(); + List> newBreadcrumbs; + if (oldBreadcrumbs.size() > 1) { + newBreadcrumbs = oldBreadcrumbs.subList(1, oldBreadcrumbs.size()); + } else { + newBreadcrumbs = ImmutableKit.emptyList(); + } return new NodeZipper<>(newNode, newBreadcrumbs, SCHEMA_ELEMENT_ADAPTER); } - private Map>> groupBySameParent - (List> zippers, - Map, List>>> breadcrumbsByZipper) { - Map>> result = new LinkedHashMap<>(); + private static class ZipperWithOneParent { + public NodeZipper zipper; + public Breadcrumb parent; - for (NodeZipper zipper : zippers) { - for (List> breadcrumbs : breadcrumbsByZipper.get(zipper)) { - GraphQLSchemaElement parent = breadcrumbs.get(0).getNode(); - result.computeIfAbsent(parent, ignored -> new ArrayList<>()); - result.get(parent).add(zipper); - } + public ZipperWithOneParent(NodeZipper zipper, Breadcrumb parent) { + this.zipper = zipper; + this.parent = parent; } - return result; } + // artificial schema element which serves as root element for the transformation + private static class DummyRoot implements GraphQLSchemaElement { + + static final String QUERY = "query"; + static final String MUTATION = "mutation"; + static final String SUBSCRIPTION = "subscription"; + static final String ADD_TYPES = "addTypes"; + static final String DIRECTIVES = "directives"; + static final String SCHEMA_DIRECTIVES = "schemaDirectives"; + static final String SCHEMA_APPLIED_DIRECTIVES = "schemaAppliedDirectives"; + static final String INTROSPECTION = "introspection"; + static final String SCHEMA_ELEMENT = "schemaElement"; + + GraphQLSchema schema; + GraphQLObjectType query; + GraphQLObjectType mutation; + GraphQLObjectType subscription; + GraphQLObjectType introspectionSchemaType; + Set additionalTypes; + Set directives; + Set schemaDirectives; + Set schemaAppliedDirectives; + GraphQLSchemaElement schemaElement; + + DummyRoot(GraphQLSchema schema) { + this.schema = schema; + query = schema.getQueryType(); + mutation = schema.isSupportingMutations() ? schema.getMutationType() : null; + subscription = schema.isSupportingSubscriptions() ? schema.getSubscriptionType() : null; + additionalTypes = schema.getAdditionalTypes(); + schemaDirectives = new LinkedHashSet<>(schema.getSchemaDirectives()); + schemaAppliedDirectives = new LinkedHashSet<>(schema.getSchemaAppliedDirectives()); + directives = new LinkedHashSet<>(schema.getDirectives()); + introspectionSchemaType = schema.getIntrospectionSchemaType(); + } + + DummyRoot(GraphQLSchemaElement schemaElement) { + this.schemaElement = schemaElement; + } + + @Override + public GraphQLSchemaElement copy() { + return assertShouldNeverHappen(); + } + @Override + public List getChildren() { + return assertShouldNeverHappen(); + } + + @Override + public SchemaElementChildrenContainer getChildrenWithTypeReferences() { + SchemaElementChildrenContainer.Builder builder = newSchemaElementChildrenContainer(); + if (schemaElement != null) { + builder.child(SCHEMA_ELEMENT, schemaElement); + } else { + builder.child(QUERY, query); + if (schema.isSupportingMutations()) { + builder.child(MUTATION, mutation); + } + if (schema.isSupportingSubscriptions()) { + builder.child(SUBSCRIPTION, subscription); + } + builder.children(ADD_TYPES, additionalTypes); + builder.children(DIRECTIVES, directives); + builder.children(SCHEMA_DIRECTIVES, schemaDirectives); + builder.children(SCHEMA_APPLIED_DIRECTIVES, schemaAppliedDirectives); + builder.child(INTROSPECTION, introspectionSchemaType); + } + return builder.build(); + } + + @Override + public GraphQLSchemaElement withNewChildren(SchemaElementChildrenContainer newChildren) { + if (this.schemaElement != null) { + this.schemaElement = newChildren.getChildOrNull(SCHEMA_ELEMENT); + return this; + } + // special hack: we don't create a new dummy root, but we simply update it + query = newChildren.getChildOrNull(QUERY); + mutation = newChildren.getChildOrNull(MUTATION); + subscription = newChildren.getChildOrNull(SUBSCRIPTION); + introspectionSchemaType = newChildren.getChildOrNull(INTROSPECTION); + additionalTypes = new LinkedHashSet<>(newChildren.getChildren(ADD_TYPES)); + directives = new LinkedHashSet<>(newChildren.getChildren(DIRECTIVES)); + schemaDirectives = new LinkedHashSet<>(newChildren.getChildren(SCHEMA_DIRECTIVES)); + schemaAppliedDirectives = new LinkedHashSet<>(newChildren.getChildren(SCHEMA_APPLIED_DIRECTIVES)); + return this; + } + + @Override + public TraversalControl accept(TraverserContext context, GraphQLTypeVisitor visitor) { + return assertShouldNeverHappen(); + } + + public GraphQLSchema rebuildSchema(GraphQLCodeRegistry.Builder codeRegistry) { + return GraphQLSchema.newSchema() + .query(this.query) + .mutation(this.mutation) + .subscription(this.subscription) + .additionalTypes(this.additionalTypes) + .additionalDirectives(this.directives) + .introspectionSchemaType(this.introspectionSchemaType) + .withSchemaDirectives(this.schemaDirectives) + .withSchemaAppliedDirectives(this.schemaAppliedDirectives) + .codeRegistry(codeRegistry.build()) + .description(schema.getDescription()) + .build(); + } + } } diff --git a/src/main/java/graphql/schema/SchemaTraverser.java b/src/main/java/graphql/schema/SchemaTraverser.java index b8b8b2d21f..5322f4b407 100644 --- a/src/main/java/graphql/schema/SchemaTraverser.java +++ b/src/main/java/graphql/schema/SchemaTraverser.java @@ -2,6 +2,7 @@ import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; import graphql.util.Traverser; import graphql.util.TraverserContext; @@ -10,8 +11,10 @@ import java.util.Collection; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Function; import static graphql.util.TraversalControl.CONTINUE; @@ -30,6 +33,46 @@ public SchemaTraverser() { this(GraphQLSchemaElement::getChildren); } + /** + * This will visit all of the schema elements in the specified schema and invokes the visitor. + * + * @param typeVisitor a list of visitors to use + * @param schema the schema to visit + * + * @return a traversal result + */ + public TraverserResult depthFirstFullSchema(GraphQLTypeVisitor typeVisitor, GraphQLSchema schema) { + return depthFirstFullSchema(Collections.singletonList(typeVisitor), schema, ImmutableKit.emptyMap()); + } + + /** + * This will visit all of the schema elements in the specified schema, invoking each visitor in turn. + * + * @param typeVisitors a list of visitors to use + * @param schema the schema to visit + * @param rootVars this sets up variables to be made available to the {@link TraverserContext}. This can be empty but not null + * + * @return a traversal result + */ + public TraverserResult depthFirstFullSchema(List typeVisitors, GraphQLSchema schema, Map, Object> rootVars) { + Set roots = new LinkedHashSet<>(); + roots.add(schema.getQueryType()); + if (schema.isSupportingMutations()) { + roots.add(schema.getMutationType()); + } + if (schema.isSupportingSubscriptions()) { + roots.add(schema.getSubscriptionType()); + } + roots.addAll(schema.getAdditionalTypes()); + roots.addAll(schema.getDirectives()); + roots.addAll(schema.getSchemaDirectives()); + roots.addAll(schema.getSchemaAppliedDirectives()); + roots.add(schema.getIntrospectionSchemaType()); + TraverserDelegateListVisitor traverserDelegateListVisitor = new TraverserDelegateListVisitor(typeVisitors); + Traverser traverser = initTraverser().rootVars(rootVars).rootVar(GraphQLSchema.class, schema); + return traverser.traverse(roots, traverserDelegateListVisitor); + } + public TraverserResult depthFirst(GraphQLTypeVisitor graphQLTypeVisitor, GraphQLSchemaElement root) { return depthFirst(graphQLTypeVisitor, Collections.singletonList(root)); } @@ -38,38 +81,34 @@ public TraverserResult depthFirst(final GraphQLTypeVisitor graphQLTypeVisitor, C return depthFirst(initTraverser(), new TraverserDelegateVisitor(graphQLTypeVisitor), roots); } - public TraverserResult depthFirst(final GraphQLTypeVisitor graphQLTypeVisitor, - Collection roots, - Map types) { - Traverser traverser = initTraverser().rootVar(SchemaTraverser.class, types); - return depthFirst(traverser, new TraverserDelegateVisitor(graphQLTypeVisitor), roots); - } public TraverserResult depthFirst(final Traverser traverser, - final TraverserDelegateVisitor traverserDelegateVisitor, + final TraverserVisitor traverserVisitor, Collection roots) { - return doTraverse(traverser, roots, traverserDelegateVisitor); + return doTraverse(traverser, roots, traverserVisitor); } private Traverser initTraverser() { return Traverser.depthFirst(getChildren); } - private TraverserResult doTraverse(Traverser traverser, Collection roots, TraverserDelegateVisitor traverserDelegateVisitor) { - return traverser.traverse(roots, traverserDelegateVisitor); + private TraverserResult doTraverse(Traverser traverser, + Collection roots, + TraverserVisitor traverserVisitor) { + return traverser.traverse(roots, traverserVisitor); } private static class TraverserDelegateVisitor implements TraverserVisitor { - private final GraphQLTypeVisitor before; + private final GraphQLTypeVisitor delegate; TraverserDelegateVisitor(GraphQLTypeVisitor delegate) { - this.before = delegate; + this.delegate = delegate; } @Override public TraversalControl enter(TraverserContext context) { - return context.thisNode().accept(context, before); + return context.thisNode().accept(context, delegate); } @Override @@ -79,7 +118,40 @@ public TraversalControl leave(TraverserContext context) { @Override public TraversalControl backRef(TraverserContext context) { - return before.visitBackRef(context); + return delegate.visitBackRef(context); + } + } + + private static class TraverserDelegateListVisitor implements TraverserVisitor { + private final List typeVisitors; + + TraverserDelegateListVisitor(List typeVisitors) { + this.typeVisitors = typeVisitors; + + } + + @Override + public TraversalControl enter(TraverserContext context) { + for (GraphQLTypeVisitor graphQLTypeVisitor : typeVisitors) { + TraversalControl control = context.thisNode().accept(context, graphQLTypeVisitor); + if (control != CONTINUE) { + return control; + } + } + return CONTINUE; + } + + @Override + public TraversalControl leave(TraverserContext context) { + return CONTINUE; + } + + @Override + public TraversalControl backRef(TraverserContext context) { + for (GraphQLTypeVisitor graphQLTypeVisitor : typeVisitors) { + graphQLTypeVisitor.visitBackRef(context); + } + return CONTINUE; } } diff --git a/src/main/java/graphql/schema/SchemaUtil.java b/src/main/java/graphql/schema/SchemaUtil.java deleted file mode 100644 index 76b5e703d0..0000000000 --- a/src/main/java/graphql/schema/SchemaUtil.java +++ /dev/null @@ -1,121 +0,0 @@ -package graphql.schema; - - -import graphql.Internal; -import graphql.introspection.Introspection; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@Internal -public class SchemaUtil { - - private static final SchemaTraverser TRAVERSER = new SchemaTraverser(); - - - Map allTypes(final GraphQLSchema schema, final Set additionalTypes, boolean afterTransform) { - List roots = new ArrayList<>(); - roots.add(schema.getQueryType()); - - if (schema.isSupportingMutations()) { - roots.add(schema.getMutationType()); - } - - if (schema.isSupportingSubscriptions()) { - roots.add(schema.getSubscriptionType()); - } - - if (additionalTypes != null) { - roots.addAll(additionalTypes); - } - - if (schema.getDirectives() != null) { - roots.addAll(schema.getDirectives()); - } - - roots.add(Introspection.__Schema); - - GraphQLTypeCollectingVisitor visitor = new GraphQLTypeCollectingVisitor(); - SchemaTraverser traverser; - if (afterTransform) { - traverser = new SchemaTraverser(schemaElement -> schemaElement.getChildrenWithTypeReferences().getChildrenAsList()); - } else { - traverser = new SchemaTraverser(); - } - traverser.depthFirst(visitor, roots); - return visitor.getResult(); - } - - - /* - * Indexes GraphQLObject types registered with the provided schema by implemented GraphQLInterface name - * - * This helps in accelerates/simplifies collecting types that implement a certain interface - * - * Provided to replace {@link #findImplementations(graphql.schema.GraphQLSchema, graphql.schema.GraphQLInterfaceType)} - * - */ - Map> groupImplementations(GraphQLSchema schema) { - Map> result = new LinkedHashMap<>(); - for (GraphQLType type : schema.getAllTypesAsList()) { - if (type instanceof GraphQLObjectType) { - for (GraphQLNamedOutputType interfaceType : ((GraphQLObjectType) type).getInterfaces()) { - List myGroup = result.computeIfAbsent(interfaceType.getName(), k -> new ArrayList<>()); - myGroup.add((GraphQLObjectType) type); - } - } - } - - return result; - } - - /** - * This method is deprecated due to a performance concern. - * - * The Algorithm complexity: O(n^2), where n is number of registered GraphQLTypes - * - * That indexing operation is performed twice per input document: - * 1. during validation - * 2. during execution - * - * We now indexed all types at the schema creation, which has brought complexity down to O(1) - * - * @param schema GraphQL schema - * @param interfaceType an interface type to find implementations for - * - * @return List of object types implementing provided interface - * - * @deprecated use {@link graphql.schema.GraphQLSchema#getImplementations(GraphQLInterfaceType)} instead - */ - @Deprecated - public List findImplementations(GraphQLSchema schema, GraphQLInterfaceType interfaceType) { - List result = new ArrayList<>(); - for (GraphQLType type : schema.getAllTypesAsList()) { - if (!(type instanceof GraphQLObjectType)) { - continue; - } - GraphQLObjectType objectType = (GraphQLObjectType) type; - if ((objectType).getInterfaces().contains(interfaceType)) { - result.add(objectType); - } - } - return result; - } - - void replaceTypeReferences(GraphQLSchema schema) { - final Map typeMap = schema.getTypeMap(); - List roots = new ArrayList<>(typeMap.values()); - roots.addAll(schema.getDirectives()); - SchemaTraverser schemaTraverser = new SchemaTraverser(schemaElement -> schemaElement.getChildrenWithTypeReferences().getChildrenAsList()); - schemaTraverser.depthFirst(new GraphQLTypeResolvingVisitor(typeMap), roots); - } - - void extractCodeFromTypes(GraphQLCodeRegistry.Builder codeRegistry, GraphQLSchema schema) { - Introspection.addCodeForIntrospectionTypes(codeRegistry); - - TRAVERSER.depthFirst(new CodeRegistryVisitor(codeRegistry), schema.getAllTypesAsList()); - } -} diff --git a/src/main/java/graphql/schema/SelectedField.java b/src/main/java/graphql/schema/SelectedField.java index 49c4f216ba..e9b3dd89ce 100644 --- a/src/main/java/graphql/schema/SelectedField.java +++ b/src/main/java/graphql/schema/SelectedField.java @@ -2,6 +2,7 @@ import graphql.PublicApi; +import java.util.List; import java.util.Map; /** @@ -12,25 +13,81 @@ @PublicApi public interface SelectedField { /** - * @return the name of the field + * @return the simple name of the selected field */ String getName(); /** - * @return the fully name of the field + * The selected field has a simple qualified name which is the path of field names to it. + * For example `payments/amount`. + * + * @return the simple qualified name of the selected field */ String getQualifiedName(); + /** + * The selected field has a more complex type qualified name which is the path of field names to it + * as well as the object type of the parent. For example `[Invoice, Statement].payments/[Payment].amount` + * + * @return the fully qualified name of the selected field + */ + String getFullyQualifiedName(); + + /** + * @return the object types of this SelectedField + */ + List getObjectTypes(); + + /** + * @return The list of all object types + */ + List getObjectTypeNames(); + /** * @return the field runtime definition */ - GraphQLFieldDefinition getFieldDefinition(); + List getFieldDefinitions(); + + /** + * @return the type of this field + */ + GraphQLOutputType getType(); /** * @return a map of the arguments to this selected field */ Map getArguments(); + /** + * @return the level of the selected field within the query + */ + int getLevel(); + + /** + * @return whether the field is conditionally present. + */ + boolean isConditional(); + + /** + * @return the alias of the selected field or null if not alias was used + */ + String getAlias(); + + /** + * The result key is either the field query alias OR the field name in that preference order + * + * @return the result key of the selected field + */ + String getResultKey(); + + /** + * This will return the parent of the selected field OR null if there is no single parent, it that field + * was a top level field OR the parent was a non concrete field. + * + * @return the fields selected parent or null if there is not one + */ + SelectedField getParentField(); + /** * @return a sub selection set (if it has any) */ diff --git a/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java b/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java new file mode 100644 index 0000000000..8455963f0f --- /dev/null +++ b/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java @@ -0,0 +1,71 @@ +package graphql.schema; + +import java.util.function.Supplier; + +/** + * The {@link SingletonPropertyDataFetcher} is much like the {@link PropertyDataFetcher} except + * that it is designed to only ever fetch properties via the name of the field passed in. + *

      + * This uses the same code as {@link PropertyDataFetcher} and hence is also controlled + * by static methods such as {@link PropertyDataFetcher#setUseNegativeCache(boolean)} + * + * @param for two + */ +public class SingletonPropertyDataFetcher implements LightDataFetcher { + + private static final SingletonPropertyDataFetcher SINGLETON_FETCHER = new SingletonPropertyDataFetcher<>(); + + private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = new DataFetcherFactory() { + @SuppressWarnings("deprecation") + @Override + public DataFetcher get(DataFetcherFactoryEnvironment environment) { + return SINGLETON_FETCHER; + } + + @Override + public DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return SINGLETON_FETCHER; + } + }; + + /** + * This returns the same singleton {@link LightDataFetcher} that fetches property values + * based on the name of the field that iis passed into it. + * + * @return a singleton property data fetcher + */ + public static LightDataFetcher singleton() { + return SINGLETON_FETCHER; + } + + /** + * This returns the same singleton {@link DataFetcherFactory} that returns the value of {@link #singleton()} + * + * @return a singleton data fetcher factory + */ + public static DataFetcherFactory singletonFactory() { + return SINGLETON_FETCHER_FACTORY; + } + + private SingletonPropertyDataFetcher() { + } + + @Override + public T get(GraphQLFieldDefinition fieldDefinition, Object sourceObject, Supplier environmentSupplier) throws Exception { + return fetchImpl(fieldDefinition, sourceObject, environmentSupplier); + } + + @Override + public T get(DataFetchingEnvironment environment) throws Exception { + return fetchImpl(environment.getFieldDefinition(), environment.getSource(), () -> environment); + } + + private T fetchImpl(GraphQLFieldDefinition fieldDefinition, Object source, Supplier environmentSupplier) { + if (source == null) { + return null; + } + // this is the same code that PropertyDataFetcher uses and hence unit tests for it include this one + //noinspection unchecked + return (T) PropertyDataFetcherHelper.getPropertyValue(fieldDefinition.getName(), source, fieldDefinition.getType(), environmentSupplier); + } +} diff --git a/src/main/java/graphql/schema/diff/DiffCtx.java b/src/main/java/graphql/schema/diff/DiffCtx.java index 048685d0c3..975189c174 100644 --- a/src/main/java/graphql/schema/diff/DiffCtx.java +++ b/src/main/java/graphql/schema/diff/DiffCtx.java @@ -11,7 +11,6 @@ import java.util.Deque; import java.util.List; import java.util.Optional; -import java.util.Stack; /* * A helper class that represents diff state (eg visited types) as well as helpers diff --git a/src/main/java/graphql/schema/diff/DiffEvent.java b/src/main/java/graphql/schema/diff/DiffEvent.java index e11088b4bf..1b58988eae 100644 --- a/src/main/java/graphql/schema/diff/DiffEvent.java +++ b/src/main/java/graphql/schema/diff/DiffEvent.java @@ -73,15 +73,6 @@ public String toString() { '}'; } - /** - * @return a Builder of Info level diff events - * @deprecated use {@link DiffEvent#apiInfo()} instead - */ - @Deprecated - public static Builder newInfo() { - return new Builder().level(DiffLevel.INFO); - } - public static Builder apiInfo() { return new Builder().level(DiffLevel.INFO); } diff --git a/src/main/java/graphql/schema/diff/DiffSet.java b/src/main/java/graphql/schema/diff/DiffSet.java index ee99273a2c..590d50bbb4 100644 --- a/src/main/java/graphql/schema/diff/DiffSet.java +++ b/src/main/java/graphql/schema/diff/DiffSet.java @@ -15,6 +15,7 @@ * {@link graphql.introspection.IntrospectionQuery}. */ @PublicApi +@Deprecated(since = "2023-10-04") public class DiffSet { private final Map introspectionOld; @@ -39,7 +40,6 @@ public Map getNew() { return introspectionNew; } - /** * Creates a diff set out of the result of 2 introspection queries. * @@ -69,7 +69,7 @@ public static DiffSet diffSet(GraphQLSchema schemaOld, GraphQLSchema schemaNew) private static Map introspect(GraphQLSchema schema) { GraphQL gql = GraphQL.newGraphQL(schema).build(); ExecutionResult result = gql.execute(IntrospectionQuery.INTROSPECTION_QUERY); - Assert.assertTrue(result.getErrors().size() == 0, "The schema has errors during Introspection"); + Assert.assertTrue(result.getErrors().isEmpty(), "The schema has errors during Introspection"); return result.getData(); } } diff --git a/src/main/java/graphql/schema/diff/SchemaDiff.java b/src/main/java/graphql/schema/diff/SchemaDiff.java index aeee88d01e..e87fb126ae 100644 --- a/src/main/java/graphql/schema/diff/SchemaDiff.java +++ b/src/main/java/graphql/schema/diff/SchemaDiff.java @@ -1,5 +1,7 @@ package graphql.schema.diff; +import graphql.Assert; +import graphql.PublicSpi; import graphql.introspection.IntrospectionResultToSchema; import graphql.language.Argument; import graphql.language.Directive; @@ -24,7 +26,6 @@ import graphql.schema.diff.reporting.DifferenceReporter; import graphql.schema.idl.TypeInfo; -import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -37,6 +38,7 @@ import static graphql.language.TypeKind.getTypeKind; import static graphql.schema.idl.TypeInfo.getAstDesc; import static graphql.schema.idl.TypeInfo.typeInfo; +import static graphql.util.StringKit.capitalize; /** * The SchemaDiff is called with a {@link DiffSet} and will report the @@ -44,6 +46,7 @@ * {@link graphql.schema.diff.reporting.DifferenceReporter} */ @SuppressWarnings("ConstantConditions") +@PublicSpi public class SchemaDiff { /** @@ -69,7 +72,7 @@ public static Options defaultOptions() { private static class CountingReporter implements DifferenceReporter { final DifferenceReporter delegate; - int breakingCount = 1; + int breakingCount = 0; private CountingReporter(DifferenceReporter delegate) { this.delegate = delegate; @@ -118,27 +121,42 @@ public SchemaDiff(Options options) { * * @return the number of API breaking changes */ + @Deprecated(since = "2023-10-04") @SuppressWarnings("unchecked") public int diffSchema(DiffSet diffSet, DifferenceReporter reporter) { - CountingReporter countingReporter = new CountingReporter(reporter); - diffSchemaImpl(diffSet, countingReporter); + Document oldDoc = new IntrospectionResultToSchema().createSchemaDefinition(diffSet.getOld()); + Document newDoc = new IntrospectionResultToSchema().createSchemaDefinition(diffSet.getNew()); + diffSchemaImpl(oldDoc, newDoc, countingReporter); return countingReporter.breakingCount; } - private void diffSchemaImpl(DiffSet diffSet, DifferenceReporter reporter) { - Map oldApi = diffSet.getOld(); - Map newApi = diffSet.getNew(); + /** + * This will perform a difference on the two schemas. The reporter callback + * interface will be called when differences are encountered. + * + * @param schemaDiffSet the two schemas to compare for difference + * @param reporter the place to report difference events to + * + * @return the number of API breaking changes + */ + @SuppressWarnings("unchecked") + public int diffSchema(SchemaDiffSet schemaDiffSet, DifferenceReporter reporter) { + if (options.enforceDirectives) { + Assert.assertTrue(schemaDiffSet.supportsEnforcingDirectives(), () -> + "The provided schema diff set implementation does not supporting enforcing directives during schema diff."); + } - Document oldDoc = new IntrospectionResultToSchema().createSchemaDefinition(oldApi); - Document newDoc = new IntrospectionResultToSchema().createSchemaDefinition(newApi); + CountingReporter countingReporter = new CountingReporter(reporter); + diffSchemaImpl(schemaDiffSet.getOldSchemaDefinitionDoc(), schemaDiffSet.getNewSchemaDefinitionDoc(), countingReporter); + return countingReporter.breakingCount; + } + private void diffSchemaImpl(Document oldDoc, Document newDoc, DifferenceReporter reporter) { DiffCtx ctx = new DiffCtx(reporter, oldDoc, newDoc); - Optional oldSchemaDef = getSchemaDef(oldDoc); Optional newSchemaDef = getSchemaDef(newDoc); - // check query operation checkOperation(ctx, "query", oldSchemaDef, newSchemaDef); checkOperation(ctx, "mutation", oldSchemaDef, newSchemaDef); @@ -270,8 +288,8 @@ private void checkType(DiffCtx ctx, Type oldType, Type newType) { ctx.exitType(); } - private boolean isDeprecated(DirectivesContainer node) { - return node.getDirective("deprecated") != null; + private boolean isDeprecated(DirectivesContainer node) { + return node.hasDirective("deprecated"); } private boolean isReservedType(String typeName) { @@ -323,6 +341,7 @@ private void checkUnionType(DiffCtx ctx, UnionTypeDefinition oldDef, UnionTypeDe Map oldMemberTypes = sortedMap(oldDef.getMemberTypes(), SchemaDiff::getTypeName); Map newMemberTypes = sortedMap(newDef.getMemberTypes(), SchemaDiff::getTypeName); + for (Map.Entry entry : oldMemberTypes.entrySet()) { String oldMemberTypeName = entry.getKey(); if (!newMemberTypes.containsKey(oldMemberTypeName)) { @@ -333,6 +352,9 @@ private void checkUnionType(DiffCtx ctx, UnionTypeDefinition oldDef, UnionTypeDe .components(oldMemberTypeName) .reasonMsg("The new API does not contain union member type '%s'", oldMemberTypeName) .build()); + } else { + // check type which is in the old and the new Union def + checkType(ctx, entry.getValue(), newMemberTypes.get(oldMemberTypeName)); } } for (Map.Entry entry : newMemberTypes.entrySet()) { @@ -392,7 +414,7 @@ private void checkInputFields(DiffCtx ctx, TypeDefinition old, List o checkInterfaceType(ctx, oldInterface.get(), newInterface.get()); } } + + for (Map.Entry entry : newImplementsMap.entrySet()) { + Optional newInterface = ctx.getNewTypeDef(entry.getValue(), InterfaceTypeDefinition.class); + if (!oldImplementsMap.containsKey(entry.getKey())) { + ctx.report(DiffEvent.apiInfo() + .category(DiffCategory.ADDITION) + .typeName(old.getName()) + .typeKind(getTypeKind(old)) + .components(newInterface.get().getName()) + .reasonMsg("The new API has added the interface named '%s'", newInterface.get().getName()) + .build()); + } + } } @@ -607,7 +642,7 @@ private void checkField(DiffCtx ctx, TypeDefinition old, FieldDefinition oldFiel Type oldFieldType = oldField.getType(); Type newFieldType = newField.getType(); - DiffCategory category = checkTypeWithNonNullAndList(oldFieldType, newFieldType); + DiffCategory category = checkTypeWithNonNullAndListOnObjectOrInterface(oldFieldType, newFieldType); if (category != null) { ctx.report(DiffEvent.apiBreakage() .category(category) @@ -696,7 +731,7 @@ private void checkFieldArg(DiffCtx ctx, TypeDefinition oldDef, FieldDefinition o Type oldArgType = oldArg.getType(); Type newArgType = newArg.getType(); - DiffCategory category = checkTypeWithNonNullAndList(oldArgType, newArgType); + DiffCategory category = checkTypeWithNonNullAndListOnInputOrArg(oldArgType, newArgType); if (category != null) { ctx.report(DiffEvent.apiBreakage() .category(category) @@ -826,7 +861,7 @@ void checkDirectives(DiffCtx ctx, TypeDefinition old, List oldDirecti } } - DiffCategory checkTypeWithNonNullAndList(Type oldType, Type newType) { + DiffCategory checkTypeWithNonNullAndListOnInputOrArg(Type oldType, Type newType) { TypeInfo oldTypeInfo = typeInfo(oldType); TypeInfo newTypeInfo = typeInfo(newType); @@ -835,31 +870,83 @@ DiffCategory checkTypeWithNonNullAndList(Type oldType, Type newType) { } while (true) { - // - // its allowed to get more less strict in the new but not more strict - if (oldTypeInfo.isNonNull() && newTypeInfo.isNonNull()) { - oldTypeInfo = oldTypeInfo.unwrapOne(); - newTypeInfo = newTypeInfo.unwrapOne(); - } else if (oldTypeInfo.isNonNull() && !newTypeInfo.isNonNull()) { - oldTypeInfo = oldTypeInfo.unwrapOne(); - } else if (!oldTypeInfo.isNonNull() && newTypeInfo.isNonNull()) { - return DiffCategory.STRICTER; - } - // lists - if (oldTypeInfo.isList() && !newTypeInfo.isList()) { - return DiffCategory.INVALID; + if (oldTypeInfo.isNonNull()) { + if (newTypeInfo.isNonNull()) { + // if they're both non-null, compare the unwrapped types + oldTypeInfo = oldTypeInfo.unwrapOne(); + newTypeInfo = newTypeInfo.unwrapOne(); + } else { + // non-null to nullable is valid, as long as the underlying types are also valid + oldTypeInfo = oldTypeInfo.unwrapOne(); + } + } else if (oldTypeInfo.isList()) { + if (newTypeInfo.isList()) { + // if they're both lists, compare the unwrapped types + oldTypeInfo = oldTypeInfo.unwrapOne(); + newTypeInfo = newTypeInfo.unwrapOne(); + } else if (newTypeInfo.isNonNull()) { + // nullable to non-null creates a stricter input requirement for clients to specify + return DiffCategory.STRICTER; + } else { + // list to non-list is not valid + return DiffCategory.INVALID; + } + } else { + if (newTypeInfo.isNonNull()) { + // nullable to non-null creates a stricter input requirement for clients to specify + return DiffCategory.STRICTER; + } else if (newTypeInfo.isList()) { + // non-list to list is not valid + return DiffCategory.INVALID; + } else { + return null; + } } - // plain - if (oldTypeInfo.isPlain()) { - if (!newTypeInfo.isPlain()) { + } + } + + DiffCategory checkTypeWithNonNullAndListOnObjectOrInterface(Type oldType, Type newType) { + TypeInfo oldTypeInfo = typeInfo(oldType); + TypeInfo newTypeInfo = typeInfo(newType); + + if (!oldTypeInfo.getName().equals(newTypeInfo.getName())) { + return DiffCategory.INVALID; + } + + while (true) { + if (oldTypeInfo.isNonNull()) { + if (newTypeInfo.isNonNull()) { + // if they're both non-null, compare the unwrapped types + oldTypeInfo = oldTypeInfo.unwrapOne(); + newTypeInfo = newTypeInfo.unwrapOne(); + } else { + // non-null to nullable requires a stricter check from clients since it removes the guarantee of presence + return DiffCategory.STRICTER; + } + } else if (oldTypeInfo.isList()) { + if (newTypeInfo.isList()) { + // if they're both lists, compare the unwrapped types + oldTypeInfo = oldTypeInfo.unwrapOne(); + newTypeInfo = newTypeInfo.unwrapOne(); + } else if (newTypeInfo.isNonNull()) { + // nullable to non-null is valid, as long as the underlying types are also valid + newTypeInfo = newTypeInfo.unwrapOne(); + } else { + // list to non-list is not valid return DiffCategory.INVALID; } - break; + } else { + if (newTypeInfo.isNonNull()) { + // nullable to non-null is valid, as long as the underlying types are also valid + newTypeInfo = newTypeInfo.unwrapOne(); + } else if (newTypeInfo.isList()) { + // non-list to list is not valid + return DiffCategory.INVALID; + } else { + return null; + } } - oldTypeInfo = oldTypeInfo.unwrapOne(); - newTypeInfo = newTypeInfo.unwrapOne(); } - return null; } @@ -888,9 +975,9 @@ private Optional getOpDef(String opName, SchemaDefiniti // looks for a type called `Query|Mutation|Subscription` and if it exist then assumes it as an operation def - private Optional synthOperationTypeDefinition(Function> typeReteriver, String opName) { + private Optional synthOperationTypeDefinition(Function> typeRetriever, String opName) { TypeName type = TypeName.newTypeName().name(capitalize(opName)).build(); - Optional typeDef = typeReteriver.apply(type); + Optional typeDef = typeRetriever.apply(type); return typeDef.map(objectTypeDefinition -> OperationTypeDefinition.newOperationTypeDefinition().name(opName).typeName(type).build()); } @@ -899,17 +986,8 @@ private Map sortedMap(List listOfNamedThings, Function(map); } - private static String capitalize(String name) { - if (name != null && name.length() != 0) { - char[] chars = name.toCharArray(); - chars[0] = Character.toUpperCase(chars[0]); - return new String(chars); - } else { - return name; - } - } private String mkDotName(String... objectNames) { return String.join(".", objectNames); } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/diff/SchemaDiffSet.java b/src/main/java/graphql/schema/diff/SchemaDiffSet.java new file mode 100644 index 0000000000..dd28a65f4b --- /dev/null +++ b/src/main/java/graphql/schema/diff/SchemaDiffSet.java @@ -0,0 +1,134 @@ +package graphql.schema.diff; + +import graphql.Assert; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.PublicApi; +import graphql.introspection.IntrospectionQuery; +import graphql.introspection.IntrospectionResultToSchema; +import graphql.language.Document; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaPrinter; + +import java.util.Map; + +/** + * Interface used to define 2 schemas that can be diffed by the {@link SchemaDiff} operation. + */ +@PublicApi +public class SchemaDiffSet { + + private final Document oldSchemaDoc; + private final Document newSchemaDoc; + private final boolean supportsEnforcingDirectives; + + private SchemaDiffSet(final Document oldSchemaDoc, + final Document newSchemaDoc, + final boolean supportsEnforcingDirectives) { + this.oldSchemaDoc = oldSchemaDoc; + this.newSchemaDoc = newSchemaDoc; + this.supportsEnforcingDirectives = supportsEnforcingDirectives; + } + + /** + * @return Returns a IDL document that represents the old schema as part of a SchemaDiff operation. + */ + public Document getOldSchemaDefinitionDoc() { + return this.oldSchemaDoc; + } + + /** + * @return Returns a IDL document that represents the new schema created from the introspection result. + */ + public Document getNewSchemaDefinitionDoc() { + return this.newSchemaDoc; + } + + /** + * @return Flag indicating whether this diffset implementation can be used to enforce directives when performing schema diff. + */ + public boolean supportsEnforcingDirectives() { + return this.supportsEnforcingDirectives; + } + + /** + * Creates an schema diff set out of the result of 2 introspection queries. + * + * @param introspectionOld the older introspection query + * @param introspectionNew the newer introspection query + * + * @return a diff set representing them which will not support enforcing directives. + */ + public static SchemaDiffSet diffSetFromIntrospection(final Map introspectionOld, + final Map introspectionNew) { + final Document oldDoc = getDocumentFromIntrospection(introspectionOld); + final Document newDoc = getDocumentFromIntrospection(introspectionNew); + return new SchemaDiffSet(oldDoc, newDoc, false); + } + + /** + * Creates an schema diff set out of the result of 2 introspection queries. + * + * @param oldSchema the older GraphQLSchema object to introspect. + * @param newSchema the new GraphQLSchema object to introspect. + * + * @return a diff set representing them which will not support enforcing directives. + */ + public static SchemaDiffSet diffSetFromIntrospection(final GraphQLSchema oldSchema, + final GraphQLSchema newSchema) { + final Map introspectionOld = introspect(oldSchema); + final Map introspectionNew = introspect(newSchema); + return diffSetFromIntrospection(introspectionOld, introspectionNew); + } + + /** + * Creates an schema diff set out of the two SDL definition Strings. + * + * @param oldSchemaSdl the older SDL definition String. + * @param newSchemaSdl the newer SDL definition String. + * + * @return a diff set representing them which will support enforcing directives. + */ + public static SchemaDiffSet diffSetFromSdl(final String oldSchemaSdl, + final String newSchemaSdl) { + final Document oldDoc = getDocumentFromSDLString(oldSchemaSdl); + final Document newDoc = getDocumentFromSDLString(newSchemaSdl); + return new SchemaDiffSet(oldDoc, newDoc, true); + } + + /** + * Creates an schema diff set out of the two SDL definition Strings. + * + * @param oldSchema the older SDL definition String. + * @param newSchema the newer SDL definition String. + * + * @return a diff set representing them which will support enforcing directives. + */ + public static SchemaDiffSet diffSetFromSdl(final GraphQLSchema oldSchema, + final GraphQLSchema newSchema) { + final String oldSchemaSdl = getSchemaSdl(oldSchema); + final String newSchemaSdl = getSchemaSdl(newSchema); + return diffSetFromSdl(oldSchemaSdl, newSchemaSdl); + } + + private static Document getDocumentFromIntrospection(final Map introspectionResult) { + return new IntrospectionResultToSchema().createSchemaDefinition(introspectionResult); + } + + private static Document getDocumentFromSDLString(final String sdlString) { + return Parser.parse(sdlString); + } + + private static String getSchemaSdl(GraphQLSchema schema) { + final SchemaPrinter schemaPrinter = new SchemaPrinter(); + return schemaPrinter.print(schema); + } + + private static Map introspect(GraphQLSchema schema) { + GraphQL gql = GraphQL.newGraphQL(schema).build(); + ExecutionResult result = gql.execute(IntrospectionQuery.INTROSPECTION_QUERY); + Assert.assertTrue(result.getErrors().isEmpty(), "The schema has errors during Introspection"); + return result.getData(); + } +} diff --git a/src/main/java/graphql/schema/diffing/DiffImpl.java b/src/main/java/graphql/schema/diffing/DiffImpl.java new file mode 100644 index 0000000000..f24eb934a6 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/DiffImpl.java @@ -0,0 +1,559 @@ +package graphql.schema.diffing; + +import com.google.common.collect.HashMultiset; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import graphql.Internal; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.PriorityQueue; +import java.util.Set; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.atomic.AtomicInteger; + +import static graphql.Assert.assertFalse; +import static graphql.Assert.assertTrue; +import static graphql.schema.diffing.EditorialCostForMapping.baseEditorialCostForMapping; +import static graphql.schema.diffing.EditorialCostForMapping.editorialCostForMapping; + +/** + * This is an algorithm calculating the optimal edit to change the source graph into the target graph. + *

      + * It is based on the following two papers (both papers are from the same authors. The first one is newer, but the older one is more detailed in some aspects) + *

      + * Accelerating Graph Similarity Search via Efficient GED Computation (https://lijunchang.github.io/pdf/2022-ged-tkde.pdf) + *

      + * Efficient Graph Edit Distance Computation and Verification via Anchor-aware Lower Bound Estimation (https://arxiv.org/abs/1709.06810) + *

      + * The algorithm is a modified version of "AStar-BMao". + * It is adapted to directed graphs as a GraphQL schema is most naturally represented as directed graph (vs the undirected graphs used in the papers). + */ +@Internal +public class DiffImpl { + + private final PossibleMappingsCalculator possibleMappingsCalculator; + private final SchemaGraph completeSourceGraph; + private final SchemaGraph completeTargetGraph; + private final PossibleMappingsCalculator.PossibleMappings possibleMappings; + private final SchemaDiffingRunningCheck runningCheck; + + private static class MappingEntry { + public LinkedBlockingQueue mappingEntriesSiblings = new LinkedBlockingQueue<>(); + public int[] assignments; + + /** + * These are the available vertices, relative to the parent mapping. + * Meaning the last mapped element is NOT contained in it. + */ + public List availableTargetVertices; + + Mapping partialMapping; + int level; // = partialMapping.size + double lowerBoundCost; + + + public MappingEntry(Mapping partialMapping, int level, double lowerBoundCost) { + this.partialMapping = partialMapping; + this.level = level; + this.lowerBoundCost = lowerBoundCost; + } + + } + + /** + * An optimal edit from one graph to another. + * The mapping maps all vertices from source to target, but + * not all mappings represent an actual change. This is why there is a separate list + * of the actual changes. + */ + public static class OptimalEdit { + private final SchemaGraph completeSourceGraph; + private final SchemaGraph completeTargetGraph; + + public Mapping mapping; + public int ged = Integer.MAX_VALUE; + + public OptimalEdit( + SchemaGraph completeSourceGraph, + SchemaGraph completeTargetGraph) { + this.completeSourceGraph = completeSourceGraph; + this.completeTargetGraph = completeTargetGraph; + } + + public OptimalEdit( + SchemaGraph completeSourceGraph, + SchemaGraph completeTargetGraph, + Mapping mapping, + int ged) { + this.completeSourceGraph = completeSourceGraph; + this.completeTargetGraph = completeTargetGraph; + this.mapping = mapping; + this.ged = ged; + } + + public List getListOfEditOperations() { + ArrayList listOfEditOperations = new ArrayList<>(); + assertTrue(baseEditorialCostForMapping(mapping, completeSourceGraph, completeTargetGraph, listOfEditOperations) == ged); + return listOfEditOperations; + } + } + + public DiffImpl(PossibleMappingsCalculator possibleMappingsCalculator, SchemaGraph completeSourceGraph, SchemaGraph completeTargetGraph, PossibleMappingsCalculator.PossibleMappings possibleMappings, SchemaDiffingRunningCheck runningCheck) { + this.possibleMappingsCalculator = possibleMappingsCalculator; + this.completeSourceGraph = completeSourceGraph; + this.completeTargetGraph = completeTargetGraph; + this.possibleMappings = possibleMappings; + this.runningCheck = runningCheck; + } + + OptimalEdit diffImpl(Mapping startMapping, List allSources, List allTargets, AtomicInteger algoIterationCount) throws Exception { + int graphSize = allSources.size(); + + int fixedEditorialCost = baseEditorialCostForMapping(startMapping, completeSourceGraph, completeTargetGraph); + int level = startMapping.size(); + + List allNonFixedTargets = new ArrayList<>(allTargets); + startMapping.forEachTarget(allNonFixedTargets::remove); + + MappingEntry firstMappingEntry = new MappingEntry(startMapping, level, fixedEditorialCost); + firstMappingEntry.availableTargetVertices = allNonFixedTargets; + + OptimalEdit optimalEdit = new OptimalEdit(completeSourceGraph, completeTargetGraph); + PriorityQueue queue = new PriorityQueue<>((mappingEntry1, mappingEntry2) -> { + int compareResult = Double.compare(mappingEntry1.lowerBoundCost, mappingEntry2.lowerBoundCost); + // we prefer higher levels for equal lower bound costs + if (compareResult == 0) { + return Integer.compare(mappingEntry2.level, mappingEntry1.level); + } else { + return compareResult; + } + }); + queue.add(firstMappingEntry); + + + while (!queue.isEmpty()) { + MappingEntry mappingEntry = queue.poll(); + algoIterationCount.incrementAndGet(); + + if (mappingEntry.lowerBoundCost >= optimalEdit.ged) { + // once the lowest lowerBoundCost is not lower than the optimal edit, we are done + break; + } + + if (mappingEntry.level > 0 && !mappingEntry.mappingEntriesSiblings.isEmpty()) { + addSiblingToQueue( + fixedEditorialCost, + mappingEntry.level, + queue, + optimalEdit, + allSources, + allTargets, + mappingEntry); + } + if (mappingEntry.level < graphSize) { + addChildToQueue( + fixedEditorialCost, + mappingEntry, + queue, + optimalEdit, + allSources, + allTargets + ); + } + + runningCheck.check(); + } + + return optimalEdit; + } + + + // this calculates all children for the provided parentEntry, but only the first is directly added to the queue + private void addChildToQueue(int fixedEditorialCost, + MappingEntry parentEntry, + PriorityQueue queue, + OptimalEdit optimalEdit, + List allSources, + List allTargets + ) { + Mapping parentPartialMapping = parentEntry.partialMapping; + int parentLevel = parentEntry.level; + int level = parentLevel + 1; + + assertTrue(parentLevel == parentPartialMapping.size()); + + // the available target vertices are the parent queue entry ones plus + // minus the additional mapped element in parentPartialMapping + ArrayList availableTargetVertices = new ArrayList<>(parentEntry.availableTargetVertices); + availableTargetVertices.remove(parentPartialMapping.getTarget(parentLevel - 1)); + assertTrue(availableTargetVertices.size() + parentPartialMapping.size() == allTargets.size()); + Vertex v_i = allSources.get(parentLevel); + + + // the cost matrix is for the non mapped vertices + int costMatrixSize = allSources.size() - parentLevel; + + // costMatrix gets modified by the hungarian algorithm ... therefore we create two of them + double[][] costMatrixForHungarianAlgo = new double[costMatrixSize][costMatrixSize]; + double[][] costMatrix = new double[costMatrixSize][costMatrixSize]; + + Map isolatedVerticesCache = new LinkedHashMap<>(); + Map nonFixedParentRestrictions = possibleMappingsCalculator.getNonFixedParentRestrictions(completeSourceGraph, completeTargetGraph, parentPartialMapping); + + for (int i = parentLevel; i < allSources.size(); i++) { + Vertex v = allSources.get(i); + int j = 0; + for (Vertex u : availableTargetVertices) { + double cost = calcLowerBoundMappingCost(v, u, parentPartialMapping, isolatedVerticesCache, nonFixedParentRestrictions); + costMatrixForHungarianAlgo[i - parentLevel][j] = cost; + costMatrix[i - parentLevel][j] = cost; + j++; + } + runningCheck.check(); + } + + HungarianAlgorithm hungarianAlgorithm = new HungarianAlgorithm(costMatrixForHungarianAlgo); + int[] assignments = hungarianAlgorithm.execute(); + int editorialCostForMapping = editorialCostForMapping(fixedEditorialCost, parentPartialMapping, completeSourceGraph, completeTargetGraph); + double costMatrixSum = getCostMatrixSum(costMatrix, assignments); + double lowerBoundForPartialMapping = editorialCostForMapping + costMatrixSum; + + Mapping newMapping = parentPartialMapping.extendMapping(v_i, availableTargetVertices.get(assignments[0])); + + if (costMatrixSum >= Integer.MAX_VALUE && optimalEdit.mapping == null) { + throw new RuntimeException("bug: could not find any allowed mapping"); + } + + if (lowerBoundForPartialMapping >= optimalEdit.ged) { + return; + } + MappingEntry newMappingEntry = new MappingEntry(newMapping, level, lowerBoundForPartialMapping); + LinkedBlockingQueue siblings = new LinkedBlockingQueue<>(); + newMappingEntry.mappingEntriesSiblings = siblings; + newMappingEntry.assignments = assignments; + newMappingEntry.availableTargetVertices = availableTargetVertices; + + queue.add(newMappingEntry); + + expandMappingAndUpdateOptimalMapping(fixedEditorialCost, + level, + optimalEdit, + allSources, + parentPartialMapping.copy(), + assignments, + availableTargetVertices, + lowerBoundForPartialMapping); + + calculateRestOfChildren( + availableTargetVertices, + hungarianAlgorithm, + costMatrix, + editorialCostForMapping, + parentPartialMapping, + v_i, + optimalEdit.ged, + level, + siblings + ); + } + + private void updateOptimalEdit(OptimalEdit optimalEdit, int newGed, Mapping mapping) { + assertTrue(newGed < optimalEdit.ged); + optimalEdit.ged = newGed; + optimalEdit.mapping = mapping; + } + + // generate all children mappings and save in MappingEntry.sibling + private void calculateRestOfChildren(List availableTargetVertices, + HungarianAlgorithm hungarianAlgorithm, + double[][] costMatrixCopy, + double editorialCostForMapping, + Mapping partialMapping, + Vertex v_i, + int upperBound, + int level, + LinkedBlockingQueue siblings + ) { + // starting from 1 as we already generated the first one + for (int child = 1; child < availableTargetVertices.size(); child++) { + int[] assignments = hungarianAlgorithm.nextChild(); + if (hungarianAlgorithm.costMatrix[0][assignments[0]] == Integer.MAX_VALUE) { + break; + } + + double costMatrixSumSibling = getCostMatrixSum(costMatrixCopy, assignments); + double lowerBoundForPartialMappingSibling = editorialCostForMapping + costMatrixSumSibling; + Mapping newMappingSibling = partialMapping.extendMapping(v_i, availableTargetVertices.get(assignments[0])); + + + if (lowerBoundForPartialMappingSibling >= upperBound) { + break; + } + MappingEntry sibling = new MappingEntry(newMappingSibling, level, lowerBoundForPartialMappingSibling); + sibling.mappingEntriesSiblings = siblings; + sibling.assignments = assignments; + sibling.availableTargetVertices = availableTargetVertices; + + siblings.add(sibling); + + runningCheck.check(); + } + } + + // this retrieves the next sibling from MappingEntry.sibling and adds it to the queue if the lowerBound is less than the current upperBound + private void addSiblingToQueue( + int fixedEditorialCost, + int level, + PriorityQueue queue, + OptimalEdit optimalEdit, + List allSources, + List allTargets, + MappingEntry mappingEntry) throws InterruptedException { + + assertFalse(mappingEntry.mappingEntriesSiblings.isEmpty()); + + MappingEntry sibling = mappingEntry.mappingEntriesSiblings.take(); + if (sibling.lowerBoundCost < optimalEdit.ged) { + queue.add(sibling); + + // we need to start here from the parent mapping, this is why we remove the last element + Mapping toExpand = sibling.partialMapping.copyMappingWithLastElementRemoved(); + + expandMappingAndUpdateOptimalMapping(fixedEditorialCost, + level, + optimalEdit, + allSources, + toExpand, + sibling.assignments, + sibling.availableTargetVertices, + sibling.lowerBoundCost); + } + } + + /** + * Extend the partial mapping to a full mapping according to the optimal + * matching (hungarian algo result) and update the optimal edit if we + * found a better one. + */ + private void expandMappingAndUpdateOptimalMapping(int fixedEditorialCost, + int level, + OptimalEdit optimalEdit, + List allSources, + Mapping toExpand, + int[] assignments, + List availableTargetVertices, + double lowerBoundCost) { + for (int i = 0; i < assignments.length; i++) { + toExpand.add(allSources.get(level - 1 + i), availableTargetVertices.get(assignments[i])); + } + assertTrue(toExpand.size() == this.completeSourceGraph.size()); + int costForFullMapping = editorialCostForMapping(fixedEditorialCost, toExpand, completeSourceGraph, completeTargetGraph); + assertTrue(lowerBoundCost <= costForFullMapping); + if (costForFullMapping < optimalEdit.ged) { + updateOptimalEdit(optimalEdit, costForFullMapping, toExpand); + } + } + + + private double getCostMatrixSum(double[][] costMatrix, int[] assignments) { + double costMatrixSum = 0; + for (int i = 0; i < assignments.length; i++) { + costMatrixSum += costMatrix[i][assignments[i]]; + } + return costMatrixSum; + } + + /** + * a partial mapping introduces a sub graph. The editorial cost is only calculated with respect to this sub graph. + */ + + + /** + * lower bound mapping cost between for v -> u in respect to a partial mapping. + * It basically tells the minimal costs we can expect for all mappings that come from extending + * the partial mapping with v -> u. + *

      + * This is basically the formula (5) from page 6 of https://lijunchang.github.io/pdf/2022-ged-tkde.pdf. + *

      + * + * The main difference is that the formula works with undirected graphs, but we have a directed graph, + * hence there is no 1/2 factor and for comparing the labels of anchored vertices to v/u we need to + * take both directions into account. + *

      + * + * The other optimization is that a schema graph will have never a lot of adjacent edges compared to + * the overall vertices count, therefore the algorithm for the anchored vertices costs iterates + * over the adjacent edges of v/u instead of all the mapped vertices. + *

      + * + * Additionally, there is a shortcut for isolated vertices, representing deletion/insertion which is also cached. + *

      + * Some naming: an anchored vertex is a vertex that is mapped via the partial mapping. + * An inner edge is an edge between two vertices that are both not anchored (mapped). + * The vertices v and u are by definition not mapped. + */ + private double calcLowerBoundMappingCost(Vertex v, + Vertex u, + Mapping partialMapping, + Map isolatedVerticesCache, + Map nonFixedParentRestrictions) { + if (nonFixedParentRestrictions.containsKey(v) || partialMapping.hasParentRestriction(v)) { + if (!u.isIsolated()) { // Always allow mapping to isolated nodes + Vertex uParentRestriction = nonFixedParentRestrictions.get(v); + if (uParentRestriction == null) { + uParentRestriction = partialMapping.getParentRestriction(v); + } + + Collection parentEdges = completeTargetGraph.getAdjacentEdgesInverseNonCopy(u); + if (parentEdges.size() != 1) { + return Integer.MAX_VALUE; + } + + Vertex uParent = parentEdges.iterator().next().getFrom(); + if (uParent != uParentRestriction) { + return Integer.MAX_VALUE; + } + } + } + + if (!possibleMappings.mappingPossible(v, u)) { + return Integer.MAX_VALUE; + } + if (u.isOfType(SchemaGraph.ISOLATED)) { + if (isolatedVerticesCache.containsKey(v)) { + return isolatedVerticesCache.get(v); + } + double result = calcLowerBoundMappingCostForIsolated(v, partialMapping, true); + isolatedVerticesCache.put(v, result); + return result; + } + if (v.isOfType(SchemaGraph.ISOLATED)) { + if (isolatedVerticesCache.containsKey(u)) { + return isolatedVerticesCache.get(u); + } + double result = calcLowerBoundMappingCostForIsolated(u, partialMapping, false); + isolatedVerticesCache.put(u, result); + return result; + } + + boolean equalNodes = v.getType().equals(u.getType()) && v.getProperties().equals(u.getProperties()); + + int anchoredVerticesCost = 0; + Multiset multisetInnerEdgeLabelsV = HashMultiset.create(); + Multiset multisetInnerEdgeLabelsU = HashMultiset.create(); + + Collection adjacentEdgesV = completeSourceGraph.getAdjacentEdgesNonCopy(v); + Collection adjacentEdgesU = completeTargetGraph.getAdjacentEdgesNonCopy(u); + + Collection adjacentEdgesInverseV = completeSourceGraph.getAdjacentEdgesInverseNonCopy(v); + Collection adjacentEdgesInverseU = completeTargetGraph.getAdjacentEdgesInverseNonCopy(u); + + Set matchedTargetEdges = new LinkedHashSet<>(); + Set matchedTargetEdgesInverse = new LinkedHashSet<>(); + + for (Edge edgeV : adjacentEdgesV) { + + Vertex targetTo = partialMapping.getTarget(edgeV.getTo()); + if (targetTo == null) { + // meaning it is an inner edge(not part of the subgraph induced by the partial mapping) + multisetInnerEdgeLabelsV.add(edgeV.getLabel()); + continue; + } + /* question is if the edge from v is mapped onto an edge from u + (also edge are not mapped directly, but the vertices are) + and if the adjacent edge is mapped onto an adjacent edge, + we need to check the labels of the edges + */ + Edge matchedTargetEdge = completeTargetGraph.getEdge(u, targetTo); + if (matchedTargetEdge != null) { + matchedTargetEdges.add(matchedTargetEdge); + if (!Objects.equals(edgeV.getLabel(), matchedTargetEdge.getLabel())) { + anchoredVerticesCost++; + } + } else { +// // no matching adjacent edge from u found means there is no +// // edge from edgeV.getTo() to mapped(edgeV.getTo()) +// // and we need to increase the costs + anchoredVerticesCost++; + } + + } + + for (Edge edgeV : adjacentEdgesInverseV) { + + Vertex targetFrom = partialMapping.getTarget(edgeV.getFrom()); + // we are only interested in edges from anchored vertices + if (targetFrom == null) { + continue; + } + Edge matachedTargetEdge = completeTargetGraph.getEdge(targetFrom, u); + if (matachedTargetEdge != null) { + matchedTargetEdgesInverse.add(matachedTargetEdge); + if (!Objects.equals(edgeV.getLabel(), matachedTargetEdge.getLabel())) { + anchoredVerticesCost++; + } + } else { + anchoredVerticesCost++; + } + } + + for (Edge edgeU : adjacentEdgesU) { + // test if this is an inner edge (meaning it not part of the subgraph induced by the partial mapping) + // we know that u is not part of the mapped vertices, therefore we only need to test the "to" vertex + if (!partialMapping.containsTarget(edgeU.getTo())) { + multisetInnerEdgeLabelsU.add(edgeU.getLabel()); + continue; + } + if (matchedTargetEdges.contains(edgeU)) { + continue; + } + anchoredVerticesCost++; + + } + for (Edge edgeU : adjacentEdgesInverseU) { + // we are only interested in edges from anchored vertices + if (!partialMapping.containsTarget(edgeU.getFrom()) || matchedTargetEdgesInverse.contains(edgeU)) { + continue; + } + anchoredVerticesCost++; + } + + + Multiset intersectionInnerEdgeLabels = Multisets.intersection(multisetInnerEdgeLabelsV, multisetInnerEdgeLabelsU); + int multiSetEditDistanceForInnerEdges = Math.max(multisetInnerEdgeLabelsV.size(), multisetInnerEdgeLabelsU.size()) - intersectionInnerEdgeLabels.size(); + + int result = (equalNodes ? 0 : 1) + multiSetEditDistanceForInnerEdges + anchoredVerticesCost; + return result; + } + + + /** + * Simplified lower bound calc if the source/target vertex is isolated + */ + private double calcLowerBoundMappingCostForIsolated(Vertex vertex, + Mapping partialMapping, + boolean sourceOrTarget + ) { + SchemaGraph schemaGraph = sourceOrTarget ? completeSourceGraph : completeTargetGraph; + + // every adjacent edge is inserted/deleted for an isolated vertex + Collection adjacentEdges = schemaGraph.getAdjacentEdgesNonCopy(vertex); + + // for the inverse adjacent edges we only count the anchored ones + int anchoredInverseEdges = 0; + Collection adjacentEdgesInverse = schemaGraph.getAdjacentEdgesInverseNonCopy(vertex); + for (Edge edge : adjacentEdgesInverse) { + if (partialMapping.contains(edge.getFrom(), sourceOrTarget)) { + anchoredInverseEdges++; + } + } + return 1 + adjacentEdges.size() + anchoredInverseEdges; + } + +} diff --git a/src/main/java/graphql/schema/diffing/Edge.java b/src/main/java/graphql/schema/diffing/Edge.java new file mode 100644 index 0000000000..15a603ef62 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/Edge.java @@ -0,0 +1,62 @@ +package graphql.schema.diffing; + +import graphql.Internal; + +import java.util.Objects; + +@Internal +public class Edge { + private Vertex from; + private Vertex to; + + private String label = ""; + + public Edge(Vertex from, Vertex to) { + this.from = from; + this.to = to; + } + + public Edge(Vertex from, Vertex to, String label) { + this.from = from; + this.to = to; + this.label = label; + } + + public Vertex getFrom() { + return from; + } + + public void setFrom(Vertex from) { + this.from = from; + } + + public Vertex getTo() { + return to; + } + + public void setTo(Vertex to) { + this.to = to; + } + + + public void setLabel(String label) { + this.label = label; + } + + public String getLabel() { + return label; + } + + @Override + public String toString() { + return "Edge{" + + "from=" + from + + ", to=" + to + + ", label='" + label + '\'' + + '}'; + } + + public boolean isEqualTo(Edge other) { + return Objects.equals(this.label, other.label); + } +} diff --git a/src/main/java/graphql/schema/diffing/EditOperation.java b/src/main/java/graphql/schema/diffing/EditOperation.java new file mode 100644 index 0000000000..ff24400367 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/EditOperation.java @@ -0,0 +1,115 @@ +package graphql.schema.diffing; + +import graphql.Internal; + +import java.util.Objects; + +/** + * An edit operation between two graphs can be one of six types: + * insert vertex, + * delete vertex, + * change vertex, + * insert edge, + * delete edge, + * change edge + */ +@Internal +public class EditOperation { + + private EditOperation(Operation operation, + String description, + Vertex sourceVertex, + Vertex targetVertex, + Edge sourceEdge, + Edge targetEdge) { + this.operation = operation; + this.description = description; + this.sourceVertex = sourceVertex; + this.targetVertex = targetVertex; + this.sourceEdge = sourceEdge; + this.targetEdge = targetEdge; + } + + public static EditOperation deleteVertex(String description, Vertex sourceVertex, Vertex targetVertex) { + return new EditOperation(Operation.DELETE_VERTEX, description, sourceVertex, targetVertex, null, null); + } + + public static EditOperation insertVertex(String description, Vertex sourceVertex, Vertex targetVertex) { + return new EditOperation(Operation.INSERT_VERTEX, description, sourceVertex, targetVertex, null, null); + } + + public static EditOperation changeVertex(String description, Vertex sourceVertex, Vertex targetVertex) { + return new EditOperation(Operation.CHANGE_VERTEX, description, sourceVertex, targetVertex, null, null); + } + + public static EditOperation deleteEdge(String description, Edge sourceEdge) { + return new EditOperation(Operation.DELETE_EDGE, description, null, null, sourceEdge, null); + } + + public static EditOperation insertEdge(String description, Edge targetEdge) { + return new EditOperation(Operation.INSERT_EDGE, description, null, null, null, targetEdge); + } + + public static EditOperation changeEdge(String description, Edge sourceEdge, Edge targetEdge) { + return new EditOperation(Operation.CHANGE_EDGE, description, null, null, sourceEdge, targetEdge); + } + + private Operation operation; + private String description; + private Vertex sourceVertex; + private Vertex targetVertex; + private Edge sourceEdge; + private Edge targetEdge; + + + public enum Operation { + CHANGE_VERTEX, DELETE_VERTEX, INSERT_VERTEX, CHANGE_EDGE, INSERT_EDGE, DELETE_EDGE + } + + public Operation getOperation() { + return operation; + } + + + public Vertex getSourceVertex() { + return sourceVertex; + } + + public Vertex getTargetVertex() { + return targetVertex; + } + + public Edge getSourceEdge() { + return sourceEdge; + } + + public Edge getTargetEdge() { + return targetEdge; + } + + @Override + public String toString() { + return "EditOperation{" + + "operation=" + operation + + ", description='" + description + '\'' + + '}'; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + EditOperation that = (EditOperation) o; + return operation == that.operation && Objects.equals(description, that.description) && Objects.equals(sourceVertex, that.sourceVertex) && Objects.equals(targetVertex, that.targetVertex) && Objects.equals(sourceEdge, that.sourceEdge) && Objects.equals(targetEdge, that.targetEdge); + } + + @Override + public int hashCode() { + return Objects.hash(operation, description, sourceVertex, targetVertex, sourceEdge, targetEdge); + } +} diff --git a/src/main/java/graphql/schema/diffing/EditorialCostForMapping.java b/src/main/java/graphql/schema/diffing/EditorialCostForMapping.java new file mode 100644 index 0000000000..dbf38f2072 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/EditorialCostForMapping.java @@ -0,0 +1,187 @@ +package graphql.schema.diffing; + +import graphql.Internal; + +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Predicate; + +@Internal +public class EditorialCostForMapping { + /** + * @param mapping the mapping + * @param sourceGraph the source graph + * @param targetGraph the target graph + * + * @return the editorial cost + * + * @see #baseEditorialCostForMapping(Mapping, SchemaGraph, SchemaGraph, List) + */ + public static int baseEditorialCostForMapping(Mapping mapping, // can be a partial mapping + SchemaGraph sourceGraph, // the whole graph + SchemaGraph targetGraph // the whole graph + ) { + return baseEditorialCostForMapping(mapping, sourceGraph, targetGraph, new ArrayList<>()); + } + + /** + * Gets the "editorial cost for mapping" for the base mapping. + *

      + * Use this is as base cost when invoking + * {@link #editorialCostForMapping(int, Mapping, SchemaGraph, SchemaGraph)} + * as it heavily speeds up performance. + * + * @param mapping the mapping + * @param sourceGraph the source graph + * @param targetGraph the target graph + * @param editOperationsResult the list of edit operations + * + * @return the editorial cost + */ + public static int baseEditorialCostForMapping(Mapping mapping, // can be a partial mapping + SchemaGraph sourceGraph, // the whole graph + SchemaGraph targetGraph, // the whole graph + List editOperationsResult) { + int cost = 0; + + for (int i = 0; i < mapping.size(); i++) { + Vertex sourceVertex = mapping.getSource(i); + Vertex targetVertex = mapping.getTarget(i); + // Vertex changing (relabeling) + boolean equalNodes = sourceVertex.getType().equals(targetVertex.getType()) && sourceVertex.getProperties().equals(targetVertex.getProperties()); + if (!equalNodes) { + if (sourceVertex.isIsolated()) { + editOperationsResult.add(EditOperation.insertVertex("Insert" + targetVertex, sourceVertex, targetVertex)); + } else if (targetVertex.isIsolated()) { + editOperationsResult.add(EditOperation.deleteVertex("Delete " + sourceVertex, sourceVertex, targetVertex)); + } else { + editOperationsResult.add(EditOperation.changeVertex("Change " + sourceVertex + " to " + targetVertex, sourceVertex, targetVertex)); + } + cost++; + } + } + + // edge deletion or relabeling + for (Edge sourceEdge : sourceGraph.getEdges()) { + // only edges relevant to the subgraph + if (!mapping.containsSource(sourceEdge.getFrom()) || !mapping.containsSource(sourceEdge.getTo())) { + continue; + } + Vertex targetFrom = mapping.getTarget(sourceEdge.getFrom()); + Vertex targetTo = mapping.getTarget(sourceEdge.getTo()); + Edge targetEdge = targetGraph.getEdge(targetFrom, targetTo); + if (targetEdge == null) { + editOperationsResult.add(EditOperation.deleteEdge("Delete edge " + sourceEdge, sourceEdge)); + cost++; + } else if (!sourceEdge.getLabel().equals(targetEdge.getLabel())) { + editOperationsResult.add(EditOperation.changeEdge("Change " + sourceEdge + " to " + targetEdge, sourceEdge, targetEdge)); + cost++; + } + } + + for (Edge targetEdge : targetGraph.getEdges()) { + // only subgraph edges + if (!mapping.containsTarget(targetEdge.getFrom()) || !mapping.containsTarget(targetEdge.getTo())) { + continue; + } + Vertex sourceFrom = mapping.getSource(targetEdge.getFrom()); + Vertex sourceTo = mapping.getSource(targetEdge.getTo()); + if (sourceGraph.getEdge(sourceFrom, sourceTo) == null) { + editOperationsResult.add(EditOperation.insertEdge("Insert edge " + targetEdge, targetEdge)); + cost++; + } + } + + return cost; + } + + /** + * Calculates the "editorial cost for mapping" for the non-fixed targets in a {@link Mapping}. + *

      + * The {@code baseCost} argument should be the cost for the fixed mapping from + * {@link #baseEditorialCostForMapping(Mapping, SchemaGraph, SchemaGraph)}. + *

      + * The sum of the non-fixed costs and the fixed costs is total editorial cost for mapping. + * + * @param baseCost the starting base cost + * @param mapping the mapping + * @param sourceGraph the source graph + * @param targetGraph the target graph + * + * @return the editorial cost + */ + public static int editorialCostForMapping(int baseCost, + Mapping mapping, // can be a partial mapping + SchemaGraph sourceGraph, // the whole graph + SchemaGraph targetGraph // the whole graph + ) { + AtomicInteger cost = new AtomicInteger(baseCost); + + Set seenEdges = new LinkedHashSet<>(); + + // Tells us whether the edge should be visited. We need to avoid counting edges more than once + Predicate visitEdge = (data) -> { + if (seenEdges.contains(data)) { + return false; + } else { + seenEdges.add(data); + return true; + } + }; + + // Look through + mapping.forEachNonFixedSourceAndTarget((sourceVertex, targetVertex) -> { + // Vertex changing (relabeling) + boolean equalNodes = sourceVertex.getType().equals(targetVertex.getType()) && sourceVertex.getProperties().equals(targetVertex.getProperties()); + + if (!equalNodes) { + cost.getAndIncrement(); + } + + for (Edge sourceEdge : sourceGraph.getAdjacentEdgesAndInverseNonCopy(sourceVertex)) { + if (!visitEdge.test(sourceEdge)) { + continue; + } + + // only edges relevant to the subgraph + if (!mapping.containsSource(sourceEdge.getFrom()) || !mapping.containsSource(sourceEdge.getTo())) { + continue; + } + + Vertex targetFrom = mapping.getTarget(sourceEdge.getFrom()); + Vertex targetTo = mapping.getTarget(sourceEdge.getTo()); + Edge targetEdge = targetGraph.getEdge(targetFrom, targetTo); + + if (targetEdge == null) { + cost.getAndIncrement(); + } else if (!sourceEdge.getLabel().equals(targetEdge.getLabel())) { + cost.getAndIncrement(); + } + } + + for (Edge targetEdge : targetGraph.getAdjacentEdgesAndInverseNonCopy(targetVertex)) { + if (!visitEdge.test(targetEdge)) { + continue; + } + + // only edges relevant to the subgraph + if (!mapping.containsTarget(targetEdge.getFrom()) || !mapping.containsTarget(targetEdge.getTo())) { + continue; + } + + Vertex sourceFrom = mapping.getSource(targetEdge.getFrom()); + Vertex sourceTo = mapping.getSource(targetEdge.getTo()); + Edge sourceEdge = sourceGraph.getEdge(sourceFrom, sourceTo); + + if (sourceEdge == null) { + cost.getAndIncrement(); + } + } + }); + + return cost.get(); + } +} diff --git a/src/main/java/graphql/schema/diffing/HungarianAlgorithm.java b/src/main/java/graphql/schema/diffing/HungarianAlgorithm.java new file mode 100644 index 0000000000..b47d190f43 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/HungarianAlgorithm.java @@ -0,0 +1,378 @@ +package graphql.schema.diffing; + +import graphql.Internal; + +import java.util.Arrays; + +/* Copyright (c) 2012 Kevin L. Stern + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/** + * An implementation of the Hungarian algorithm for solving the assignment + * problem. An instance of the assignment problem consists of a number of + * workers along with a number of jobs and a cost matrix which gives the cost of + * assigning the i'th worker to the j'th job at position (i, j). The goal is to + * find an assignment of workers to jobs so that no job is assigned more than + * one worker and so that no worker is assigned to more than one job in such a + * manner so as to minimize the total cost of completing the jobs. + *

      + * An assignment for a cost matrix that has more workers than jobs will + * necessarily include unassigned workers, indicated by an assignment value of + * -1; in no other circumstance will there be unassigned workers. Similarly, an + * assignment for a cost matrix that has more jobs than workers will necessarily + * include unassigned jobs; in no other circumstance will there be unassigned + * jobs. For completeness, an assignment for a square cost matrix will give + * exactly one unique worker to each job. + *

      + * This version of the Hungarian algorithm runs in time O(n^3), where n is the + * maximum among the number of workers and the number of jobs. + * + * @author Kevin L. Stern + */ +@Internal +public class HungarianAlgorithm { + // changed by reduce + public final double[][] costMatrix; + + // constant always + private final int rows; + private final int cols; + private final int dim; + + // the assigned workers,jobs for the result + public final int[] matchJobByWorker; + private final int[] matchWorkerByJob; + + // reset for each execute + private final int[] minSlackWorkerByJob; + private final double[] minSlackValueByJob; + private final int[] parentWorkerByCommittedJob; + // reset for worker + private final boolean[] committedWorkers; + + + // labels for both sides of the bipartite graph + private final double[] labelByWorker; + private final double[] labelByJob; + + + /** + * Construct an instance of the algorithm. + * + * @param costMatrix the cost matrix, where matrix[i][j] holds the cost of assigning + * worker i to job j, for all i, j. The cost matrix must not be + * irregular in the sense that all rows must be the same length; in + * addition, all entries must be non-infinite numbers. + */ + public HungarianAlgorithm(double[][] costMatrix) { + this.dim = Math.max(costMatrix.length, costMatrix[0].length); + this.rows = costMatrix.length; + this.cols = costMatrix[0].length; + this.costMatrix = costMatrix; +// for (int w = 0; w < this.dim; w++) { +// if (w < costMatrix.length) { +// if (costMatrix[w].length() != this.cols) { +// throw new IllegalArgumentException("Irregular cost matrix"); +// } +//// for (int j = 0; j < this.cols; j++) { +//// if (Double.isInfinite(costMatrix[w].get(j))) { +//// throw new IllegalArgumentException("Infinite cost"); +//// } +//// if (Double.isNaN(costMatrix[w].get(j))) { +//// throw new IllegalArgumentException("NaN cost"); +//// } +//// } +// this.costMatrix[w] = costMatrix(costMatrix[w], this.dim); +// } else { +// this.costMatrix[w] = new double[this.dim]; +// } +// } + labelByWorker = new double[this.dim]; + labelByJob = new double[this.dim]; + minSlackWorkerByJob = new int[this.dim]; + minSlackValueByJob = new double[this.dim]; + committedWorkers = new boolean[this.dim]; + parentWorkerByCommittedJob = new int[this.dim]; + matchJobByWorker = new int[this.dim]; + Arrays.fill(matchJobByWorker, -1); + matchWorkerByJob = new int[this.dim]; + Arrays.fill(matchWorkerByJob, -1); + } + + /** + * Compute an initial feasible solution by assigning zero labels to the + * workers and by assigning to each job a label equal to the minimum cost + * among its incident edges. + */ + protected void computeInitialFeasibleSolution() { + for (int j = 0; j < dim; j++) { + labelByJob[j] = Double.POSITIVE_INFINITY; + } + for (int w = 0; w < dim; w++) { + for (int j = 0; j < dim; j++) { + if (costMatrix[w][j] < labelByJob[j]) { + labelByJob[j] = costMatrix[w][j]; + } + } + } + } + + /** + * Execute the algorithm. + * + * @return the minimum cost matching of workers to jobs based upon the + * provided cost matrix. A matching value of -1 indicates that the + * corresponding worker is unassigned. + */ + public int[] execute() { + /* + * Heuristics to improve performance: Reduce rows and columns by their + * smallest element, compute an initial non-zero dual feasible solution and + * create a greedy matching from workers to jobs of the cost matrix. + */ + reduce(); + computeInitialFeasibleSolution(); + greedyMatch(); + + int w = fetchUnmatchedWorker(); + while (w < dim) { + initializePhase(w); + executePhase(); + w = fetchUnmatchedWorker(); + } + int[] result = Arrays.copyOf(matchJobByWorker, rows); + for (w = 0; w < result.length; w++) { + if (result[w] >= cols) { + result[w] = -1; + } + } + return result; + } + + /** + * Execute a single phase of the algorithm. A phase of the Hungarian algorithm + * consists of building a set of committed workers and a set of committed jobs + * from a root unmatched worker by following alternating unmatched/matched + * zero-slack edges. If an unmatched job is encountered, then an augmenting + * path has been found and the matching is grown. If the connected zero-slack + * edges have been exhausted, the labels of committed workers are increased by + * the minimum slack among committed workers and non-committed jobs to create + * more zero-slack edges (the labels of committed jobs are simultaneously + * decreased by the same amount in order to maintain a feasible labeling). + *

      + * The runtime of a single phase of the algorithm is O(n^2), where n is the + * dimension of the internal square cost matrix, since each edge is visited at + * most once and since increasing the labeling is accomplished in time O(n) by + * maintaining the minimum slack values among non-committed jobs. When a phase + * completes, the matching will have increased in size. + */ + protected void executePhase() { + while (true) { + // the last worker we found + int minSlackWorker = -1; + int minSlackJob = -1; + double minSlackValue = Double.POSITIVE_INFINITY; + for (int j = 0; j < dim; j++) { + if (parentWorkerByCommittedJob[j] == -1) { + if (minSlackValueByJob[j] < minSlackValue) { + minSlackValue = minSlackValueByJob[j]; + minSlackWorker = minSlackWorkerByJob[j]; + minSlackJob = j; + } + } + } + if (minSlackValue > 0) { + updateLabeling(minSlackValue); + } + // adding (minSlackWorker, minSlackJob) to the path + parentWorkerByCommittedJob[minSlackJob] = minSlackWorker; + // check if minSlackJob is not assigned yet + // the requirement of an augmenting path is that start and end is not matched (assigned) yet + if (matchWorkerByJob[minSlackJob] == -1) { + /* + * An augmenting path has been found. + * Iterating via parentWorkerByCommittedJob and matchJobByWorker through the + * path and add/update matching. + * Job -> Parent worker via parentWorkerByCommittedJob + * and Worker -> Job via matchJobByWorker + */ + int committedJob = minSlackJob; + int parentWorker = parentWorkerByCommittedJob[committedJob]; + while (true) { + int temp = matchJobByWorker[parentWorker]; + match(parentWorker, committedJob); + committedJob = temp; + if (committedJob == -1) { + break; + } + parentWorker = parentWorkerByCommittedJob[committedJob]; + } + return; + } else { + /* + * Update slack values since we increased the size of the committed + * workers set. + */ + // we checked above that minSlackJob is indeed assigned + int worker = matchWorkerByJob[minSlackJob]; + // committedWorkers is used when slack is updated + committedWorkers[worker] = true; + for (int j = 0; j < dim; j++) { + if (parentWorkerByCommittedJob[j] == -1) { + double slack = costMatrix[worker][j] - labelByWorker[worker] + - labelByJob[j]; + if (minSlackValueByJob[j] > slack) { + minSlackValueByJob[j] = slack; + minSlackWorkerByJob[j] = worker; + } + } + } + } + } + } + + /** + * @return the first unmatched worker or {@link #dim} if none. + */ + protected int fetchUnmatchedWorker() { + int w; + for (w = 0; w < dim; w++) { + if (matchJobByWorker[w] == -1) { + break; + } + } + return w; + } + + /** + * Find a valid matching by greedily selecting among zero-cost matchings. This + * is a heuristic to jump-start the augmentation algorithm. + */ + protected void greedyMatch() { + for (int w = 0; w < dim; w++) { + for (int j = 0; j < dim; j++) { + if (matchJobByWorker[w] == -1 && matchWorkerByJob[j] == -1 + && costMatrix[w][j] - labelByWorker[w] - labelByJob[j] == 0) { + match(w, j); + } + } + } + } + + /** + * Initialize the next phase of the algorithm by clearing the committed + * workers and jobs sets and by initializing the slack arrays to the values + * corresponding to the specified root worker. + * + * @param w the worker at which to root the next phase. + */ + protected void initializePhase(int w) { + Arrays.fill(committedWorkers, false); + Arrays.fill(parentWorkerByCommittedJob, -1); + committedWorkers[w] = true; + for (int j = 0; j < dim; j++) { + minSlackValueByJob[j] = costMatrix[w][j] - labelByWorker[w] - labelByJob[j]; + minSlackWorkerByJob[j] = w; + } + } + + /** + * Helper method to record a matching between worker w and job j. + * + * @param w the worker + * @param j the job + */ + protected void match(int w, int j) { + matchJobByWorker[w] = j; + matchWorkerByJob[j] = w; + } + + /** + * Reduce the cost matrix by subtracting the smallest element of each row from + * all elements of the row as well as the smallest element of each column from + * all elements of the column. Note that an optimal assignment for a reduced + * cost matrix is optimal for the original cost matrix. + */ + protected void reduce() { + for (int w = 0; w < dim; w++) { + double min = Double.POSITIVE_INFINITY; + for (int j = 0; j < dim; j++) { + if (costMatrix[w][j] < min) { + min = costMatrix[w][j]; + } + } + for (int j = 0; j < dim; j++) { + costMatrix[w][j] = costMatrix[w][j] - min; + } + } + double[] min = new double[dim]; + for (int j = 0; j < dim; j++) { + min[j] = Double.POSITIVE_INFINITY; + } + for (int w = 0; w < dim; w++) { + for (int j = 0; j < dim; j++) { + if (costMatrix[w][j] < min[j]) { + min[j] = costMatrix[w][j]; + } + } + } + for (int w = 0; w < dim; w++) { + for (int j = 0; j < dim; j++) { + costMatrix[w][j] = costMatrix[w][j] - min[j]; + } + } + } + + /** + * Update labels with the specified slack by adding the slack value for + * committed workers and by subtracting the slack value for committed jobs. In + * addition, update the minimum slack values appropriately. + * + * @param slack the specified slack + */ + protected void updateLabeling(double slack) { + for (int w = 0; w < dim; w++) { + if (committedWorkers[w]) { + labelByWorker[w] += slack; + } + } + for (int j = 0; j < dim; j++) { + if (parentWorkerByCommittedJob[j] != -1) { + labelByJob[j] -= slack; + } else { + minSlackValueByJob[j] -= slack; + } + } + } + + public int[] nextChild() { + int currentJobAssigned = matchJobByWorker[0]; + // we want to make currentJobAssigned not allowed,meaning we set the size to Infinity + costMatrix[0][currentJobAssigned] = Integer.MAX_VALUE; + matchWorkerByJob[currentJobAssigned] = -1; + matchJobByWorker[0] = -1; + minSlackValueByJob[currentJobAssigned] = Integer.MAX_VALUE; + initializePhase(0); + executePhase(); + int[] result = Arrays.copyOf(matchJobByWorker, rows); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/graphql/schema/diffing/Mapping.java b/src/main/java/graphql/schema/diffing/Mapping.java new file mode 100644 index 0000000000..68fbf22bd0 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/Mapping.java @@ -0,0 +1,194 @@ +package graphql.schema.diffing; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import graphql.Internal; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Consumer; + +/** + * A mapping (in the math sense) from a list of vertices to another list of + * vertices. + * A mapping can semantically mean a change, but doesn't have to: a vertex + * can be mapped to the same vertex (semantically the same, Java object wise they are different). + */ +@Internal +public class Mapping { + + + private final Map fixedParentRestrictions; + private final BiMap fixedMappings; + private final List fixedSourceList; + private final List fixedTargetList; + + private final BiMap map; + private final List sourceList; + private final List targetList; + + private Mapping(Map fixedParentRestrictions, + BiMap fixedMappings, + List fixedSourceList, + List fixedTargetList, + BiMap map, + List sourceList, + List targetList) { + this.fixedParentRestrictions = fixedParentRestrictions; + this.fixedMappings = fixedMappings; + this.fixedSourceList = fixedSourceList; + this.fixedTargetList = fixedTargetList; + this.map = map; + this.sourceList = sourceList; + this.targetList = targetList; + } + + public static Mapping newMapping(Map fixedParentRestrictions, + BiMap fixedMappings, + List fixedSourceList, + List fixedTargetList) { + return new Mapping( + fixedParentRestrictions, + fixedMappings, + fixedSourceList, + fixedTargetList, + HashBiMap.create(), + Collections.emptyList(), + Collections.emptyList()); + } + + public boolean hasParentRestriction(Vertex v) { + return fixedParentRestrictions.containsKey(v); + } + + public Vertex getParentRestriction(Vertex v) { + return fixedParentRestrictions.get(v); + } + + public Vertex getSource(Vertex target) { + if (fixedMappings.containsValue(target)) { + return fixedMappings.inverse().get(target); + } + return map.inverse().get(target); + } + + public Vertex getTarget(Vertex source) { + if (fixedMappings.containsKey(source)) { + return fixedMappings.get(source); + } + return map.get(source); + } + + public Vertex getSource(int i) { + if (i < fixedSourceList.size()) { + return fixedSourceList.get(i); + } + return sourceList.get(i - fixedSourceList.size()); + } + + public Vertex getTarget(int i) { + if (i < fixedTargetList.size()) { + return fixedTargetList.get(i); + } + return targetList.get(i - fixedTargetList.size()); + } + + public boolean containsSource(Vertex sourceVertex) { + if (fixedMappings.containsKey(sourceVertex)) { + return true; + } + return map.containsKey(sourceVertex); + } + + public boolean containsTarget(Vertex targetVertex) { + if (fixedMappings.containsValue(targetVertex)) { + return true; + } + return map.containsValue(targetVertex); + } + + + public boolean contains(Vertex vertex, boolean sourceOrTarget) { + return sourceOrTarget ? containsSource(vertex) : containsTarget(vertex); + } + + + public int size() { + return fixedMappings.size() + map.size(); + } + + public int fixedSize() { + return fixedMappings.size(); + } + + public int nonFixedSize() { + return map.size(); + } + + public void add(Vertex source, Vertex target) { + this.map.put(source, target); + this.sourceList.add(source); + this.targetList.add(target); + } + + public Mapping copyMappingWithLastElementRemoved() { + HashBiMap newMap = HashBiMap.create(map); + newMap.remove(this.sourceList.get(this.sourceList.size() - 1)); + List newSourceList = new ArrayList<>(this.sourceList.subList(0, this.sourceList.size() - 1)); + List newTargetList = new ArrayList<>(this.targetList.subList(0, this.targetList.size() - 1)); + return new Mapping(fixedParentRestrictions, fixedMappings, fixedSourceList, fixedTargetList, newMap, newSourceList, newTargetList); + } + + public Mapping copy() { + HashBiMap newMap = HashBiMap.create(map); + List newSourceList = new ArrayList<>(this.sourceList); + List newTargetList = new ArrayList<>(this.targetList); + return new Mapping(fixedParentRestrictions, fixedMappings, fixedSourceList, fixedTargetList, newMap, newSourceList, newTargetList); + } + + public Mapping extendMapping(Vertex source, Vertex target) { + HashBiMap newMap = HashBiMap.create(map); + newMap.put(source, target); + List newSourceList = new ArrayList<>(this.sourceList); + newSourceList.add(source); + List newTargetList = new ArrayList<>(this.targetList); + newTargetList.add(target); + return new Mapping(fixedParentRestrictions, fixedMappings, fixedSourceList, fixedTargetList, newMap, newSourceList, newTargetList); + } + + public void forEachTarget(Consumer action) { + for (Vertex t : fixedTargetList) { + action.accept(t); + } + for (Vertex t : targetList) { + action.accept(t); + } + } + + public void forEachNonFixedTarget(Consumer action) { + for (Vertex t : targetList) { + action.accept(t); + } + } + + public void forEachNonFixedSourceAndTarget(BiConsumer consumer) { + map.forEach(consumer); + } + + public Mapping invert() { + BiMap invertedFixedMappings = HashBiMap.create(); + for (Vertex s : fixedMappings.keySet()) { + Vertex t = fixedMappings.get(s); + invertedFixedMappings.put(t, s); + } + BiMap invertedMap = HashBiMap.create(); + for (Vertex s : map.keySet()) { + Vertex t = map.get(s); + invertedMap.put(t, s); + } + return new Mapping(fixedParentRestrictions, invertedFixedMappings, fixedTargetList, fixedSourceList, invertedMap, targetList, sourceList); + } +} diff --git a/src/main/java/graphql/schema/diffing/PossibleMappingsCalculator.java b/src/main/java/graphql/schema/diffing/PossibleMappingsCalculator.java new file mode 100644 index 0000000000..ac13a82dc8 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/PossibleMappingsCalculator.java @@ -0,0 +1,1142 @@ +package graphql.schema.diffing; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Multimap; +import com.google.common.collect.Table; +import graphql.Assert; +import graphql.Internal; +import graphql.util.FpKit; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static graphql.schema.diffing.SchemaGraph.APPLIED_ARGUMENT; +import static graphql.schema.diffing.SchemaGraph.APPLIED_DIRECTIVE; +import static graphql.schema.diffing.SchemaGraph.ARGUMENT; +import static graphql.schema.diffing.SchemaGraph.DIRECTIVE; +import static graphql.schema.diffing.SchemaGraph.ENUM; +import static graphql.schema.diffing.SchemaGraph.ENUM_VALUE; +import static graphql.schema.diffing.SchemaGraph.FIELD; +import static graphql.schema.diffing.SchemaGraph.INPUT_FIELD; +import static graphql.schema.diffing.SchemaGraph.INPUT_OBJECT; +import static graphql.schema.diffing.SchemaGraph.INTERFACE; +import static graphql.schema.diffing.SchemaGraph.OBJECT; +import static graphql.schema.diffing.SchemaGraph.SCALAR; +import static graphql.schema.diffing.SchemaGraph.SCHEMA; +import static graphql.schema.diffing.SchemaGraph.UNION; +import static graphql.util.FpKit.concat; +import static java.util.Collections.singletonList; + +/** + * We don't want to allow arbitrary schema changes. For example changing an Object type into a Scalar + * is not something we want to consider. + *

      + * We do this to make SchemaDiffings better understandable, but also to improve the overall runtime of + * the algorithm. By restricting the possible mappings the Schema diffing algo is actually able to + * finish in a reasonable time for real life inputs. + *

      + * + * We restrict the algo by calculating which mappings are possible for given vertex. This is later used in + * {@link DiffImpl#calcLowerBoundMappingCost}. + * While doing this we need to also ensure that there are the same amount of vertices in the same "context": + * for example if the source graph has 3 Objects, the target graph needs to have 3 Objects. We achieve this by + * adding "isolated vertices" as needed. + */ +@Internal +public class PossibleMappingsCalculator { + private final SchemaDiffingRunningCheck runningCheck; + + private final SchemaGraph sourceGraph; + private final SchemaGraph targetGraph; + private final PossibleMappings possibleMappings; + + private static final Map> typeContexts = new LinkedHashMap<>(); + + static { + typeContexts.put(SCHEMA, schemaContext()); + typeContexts.put(FIELD, fieldContext()); + typeContexts.put(ARGUMENT, argumentsContexts()); + typeContexts.put(INPUT_FIELD, inputFieldContexts()); + typeContexts.put(OBJECT, objectContext()); + typeContexts.put(INTERFACE, interfaceContext()); + typeContexts.put(UNION, unionContext()); + typeContexts.put(INPUT_OBJECT, inputObjectContext()); + typeContexts.put(SCALAR, scalarContext()); + typeContexts.put(ENUM, enumContext()); + typeContexts.put(ENUM_VALUE, enumValueContext()); + typeContexts.put(APPLIED_DIRECTIVE, appliedDirectiveContext()); + typeContexts.put(APPLIED_ARGUMENT, appliedArgumentContext()); + typeContexts.put(DIRECTIVE, directiveContext()); + } + + private static List inputFieldContexts() { + VertexContextSegment inputFieldType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return INPUT_FIELD.equals(vertex.getType()); + } + }; + VertexContextSegment inputObjectContext = new VertexContextSegment() { + @Override + public String idForVertex(Vertex inputField, SchemaGraph schemaGraph) { + Vertex inputObject = schemaGraph.getInputObjectForInputField(inputField); + return inputObject.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment inputFieldName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex inputField, SchemaGraph schemaGraph) { + return inputField.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(inputFieldType, inputObjectContext, inputFieldName); + return contexts; + } + + + private static List scalarContext() { + VertexContextSegment scalar = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return SCALAR.equals(vertex.getType()); + } + }; + VertexContextSegment scalarName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(scalar, scalarName); + return contexts; + } + + private static List inputObjectContext() { + VertexContextSegment inputObject = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return INPUT_OBJECT.equals(vertex.getType()); + } + }; + VertexContextSegment inputObjectName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex inputObject, SchemaGraph schemaGraph) { + return inputObject.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(inputObject, inputObjectName); + return contexts; + } + + private static List objectContext() { + VertexContextSegment objectType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return OBJECT.equals(vertex.getType()); + } + }; + + VertexContextSegment objectName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex object, SchemaGraph schemaGraph) { + return object.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(objectType, objectName); + return contexts; + } + + private static List enumContext() { + VertexContextSegment enumCtxType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return ENUM.equals(vertex.getType()); + } + }; + VertexContextSegment enumName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex enumVertex, SchemaGraph schemaGraph) { + return enumVertex.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(enumCtxType, enumName); + return contexts; + } + + private static List enumValueContext() { + VertexContextSegment enumValueType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return ENUM_VALUE.equals(vertex.getType()); + } + }; + VertexContextSegment enumName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex enumValue, SchemaGraph schemaGraph) { + return schemaGraph.getEnumForEnumValue(enumValue).getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment enumValueName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex enumValue, SchemaGraph schemaGraph) { + return enumValue.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(enumValueType, enumName, enumValueName); + return contexts; + } + + private static List interfaceContext() { + VertexContextSegment interfaceType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return INTERFACE.equals(vertex.getType()); + } + }; + VertexContextSegment interfaceName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex interfaceVertex, SchemaGraph schemaGraph) { + return interfaceVertex.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + List contexts = Arrays.asList(interfaceType, interfaceName); + return contexts; + } + + private static List unionContext() { + VertexContextSegment unionType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return UNION.equals(vertex.getType()); + } + }; + VertexContextSegment unionName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex union, SchemaGraph schemaGraph) { + return union.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + List contexts = Arrays.asList(unionType, unionName); + return contexts; + } + + private static List directiveContext() { + VertexContextSegment directiveType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return DIRECTIVE.equals(vertex.getType()); + } + }; + VertexContextSegment directiveName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex directive, SchemaGraph schemaGraph) { + return directive.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + List contexts = Arrays.asList(directiveType, directiveName); + return contexts; + } + + private static List appliedDirectiveContext() { + VertexContextSegment appliedDirectiveType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return APPLIED_DIRECTIVE.equals(vertex.getType()); + } + }; + VertexContextSegment appliedDirectiveIndex = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedDirective, SchemaGraph schemaGraph) { + int appliedDirectiveIndex = schemaGraph.getAppliedDirectiveIndex(appliedDirective); + return Integer.toString(appliedDirectiveIndex); + } + + }; + + VertexContextSegment appliedDirectiveName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedDirective, SchemaGraph schemaGraph) { + return appliedDirective.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + VertexContextSegment appliedDirectiveContainer = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedDirective, SchemaGraph schemaGraph) { + Vertex appliedDirectiveContainer = schemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + return appliedDirectiveContainer.getType() + "." + appliedDirectiveContainer.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment parentOfContainer = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedDirective, SchemaGraph schemaGraph) { + Vertex container = schemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + switch (container.getType()) { + case SCHEMA: + return SCHEMA; + case FIELD: + Vertex fieldsContainer = schemaGraph.getFieldsContainerForField(container); + return fieldsContainer.getType() + "." + fieldsContainer.getName(); + case OBJECT: + return OBJECT; + case INTERFACE: + return INTERFACE; + case INPUT_FIELD: + Vertex inputObject = schemaGraph.getInputObjectForInputField(container); + return inputObject.getType() + "." + inputObject.getName(); + case ARGUMENT: + Vertex fieldOrDirective = schemaGraph.getFieldOrDirectiveForArgument(container); + return fieldOrDirective.getType() + "." + fieldOrDirective.getName(); + case INPUT_OBJECT: + return INPUT_OBJECT; + case ENUM: + return ENUM; + case UNION: + return UNION; + case SCALAR: + return SCALAR; + case ENUM_VALUE: + Vertex enumVertex = schemaGraph.getEnumForEnumValue(container); + return enumVertex.getType() + "." + enumVertex.getName(); + default: + throw new IllegalStateException("Unexpected directive container type " + container.getType()); + } + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + VertexContextSegment parentOfParentOfContainer = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedDirective, SchemaGraph schemaGraph) { + Vertex container = schemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + switch (container.getType()) { + case SCHEMA: + case FIELD: + case OBJECT: + case INTERFACE: + case INPUT_FIELD: + case INPUT_OBJECT: + case ENUM: + case ENUM_VALUE: + case UNION: + case SCALAR: + return ""; + case ARGUMENT: + Vertex fieldOrDirective = schemaGraph.getFieldOrDirectiveForArgument(container); + switch (fieldOrDirective.getType()) { + case FIELD: + Vertex fieldsContainer = schemaGraph.getFieldsContainerForField(fieldOrDirective); + return fieldsContainer.getType() + "." + fieldsContainer.getName(); + case DIRECTIVE: + return ""; + default: + return Assert.assertShouldNeverHappen(); + } + default: + throw new IllegalStateException("Unexpected directive container type " + container.getType()); + } + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment vertexContextSegment = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return parentOfParentOfContainer.idForVertex(vertex, schemaGraph) + "." + + parentOfContainer.idForVertex(vertex, schemaGraph) + "." + + appliedDirectiveContainer.idForVertex(vertex, schemaGraph) + "." + + appliedDirectiveName.idForVertex(vertex, schemaGraph); + } + }; + List contexts = Arrays.asList(appliedDirectiveType, vertexContextSegment, appliedDirectiveIndex); + return contexts; + } + + + private static List appliedArgumentContext() { + VertexContextSegment appliedArgumentType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return APPLIED_ARGUMENT.equals(vertex.getType()); + } + }; + VertexContextSegment appliedDirective = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedArgument, SchemaGraph schemaGraph) { + Vertex appliedDirective = schemaGraph.getAppliedDirectiveForAppliedArgument(appliedArgument); + int appliedDirectiveIndex = schemaGraph.getAppliedDirectiveIndex(appliedDirective); + return appliedDirectiveIndex + ":" + appliedDirective.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + VertexContextSegment appliedDirectiveContainer = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedArgument, SchemaGraph schemaGraph) { + Vertex appliedDirective = schemaGraph.getAppliedDirectiveForAppliedArgument(appliedArgument); + Vertex appliedDirectiveContainer = schemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + return appliedDirectiveContainer.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment parentOfContainer = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedArgument, SchemaGraph schemaGraph) { + Vertex appliedDirective = schemaGraph.getAppliedDirectiveForAppliedArgument(appliedArgument); + Vertex container = schemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + switch (container.getType()) { + case SCHEMA: + return SCHEMA; + case FIELD: + Vertex fieldsContainer = schemaGraph.getFieldsContainerForField(container); + return fieldsContainer.getType() + "." + fieldsContainer.getName(); + case OBJECT: + return OBJECT; + case INTERFACE: + return INTERFACE; + case INPUT_FIELD: + Vertex inputObject = schemaGraph.getInputObjectForInputField(container); + return inputObject.getType() + "." + inputObject.getName(); + case ARGUMENT: + Vertex fieldOrDirective = schemaGraph.getFieldOrDirectiveForArgument(container); + return fieldOrDirective.getType() + "." + fieldOrDirective.getName(); + case INPUT_OBJECT: + return INPUT_OBJECT; + case ENUM: + return ENUM; + case UNION: + return UNION; + case SCALAR: + return SCALAR; + case ENUM_VALUE: + Vertex enumVertex = schemaGraph.getEnumForEnumValue(container); + return enumVertex.getType() + "." + enumVertex.getName(); + default: + throw new IllegalStateException("Unexpected directive container type " + container.getType()); + } + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + VertexContextSegment parentOfParentOfContainer = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedArgument, SchemaGraph schemaGraph) { + Vertex appliedDirective = schemaGraph.getAppliedDirectiveForAppliedArgument(appliedArgument); + Vertex container = schemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + switch (container.getType()) { + case SCHEMA: + case FIELD: + case OBJECT: + case INTERFACE: + case INPUT_FIELD: + case INPUT_OBJECT: + case ENUM: + case ENUM_VALUE: + case UNION: + case SCALAR: + return ""; + case ARGUMENT: + Vertex fieldOrDirective = schemaGraph.getFieldOrDirectiveForArgument(container); + switch (fieldOrDirective.getType()) { + case FIELD: + Vertex fieldsContainer = schemaGraph.getFieldsContainerForField(fieldOrDirective); + return fieldsContainer.getType() + "." + fieldsContainer.getName(); + case DIRECTIVE: + return ""; + default: + return Assert.assertShouldNeverHappen(); + } + default: + throw new IllegalStateException("Unexpected directive container type " + container.getType()); + } + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment appliedArgumentName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex appliedArgument, SchemaGraph schemaGraph) { + return appliedArgument.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment combined = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return parentOfContainer.idForVertex(vertex, schemaGraph) + "." + + parentOfContainer.idForVertex(vertex, schemaGraph) + "." + + appliedDirectiveContainer.idForVertex(vertex, schemaGraph) + "." + + appliedDirective.idForVertex(vertex, schemaGraph) + "." + + appliedArgumentName.idForVertex(vertex, schemaGraph); + } + }; + List contexts = Arrays.asList(appliedArgumentType, combined); + return contexts; + } + + private static List schemaContext() { + VertexContextSegment schema = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return SCHEMA.equals(vertex.getType()); + } + }; + return singletonList(schema); + } + + private static List fieldContext() { + VertexContextSegment field = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return FIELD.equals(vertex.getType()); + } + }; + VertexContextSegment container = new VertexContextSegment() { + @Override + public String idForVertex(Vertex field, SchemaGraph schemaGraph) { + Vertex fieldsContainer = schemaGraph.getFieldsContainerForField(field); + return fieldsContainer.getType() + "." + fieldsContainer.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + + VertexContextSegment fieldName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex field, SchemaGraph schemaGraph) { + return field.getName(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(field, container, fieldName); + return contexts; + } + + private static List argumentsContexts() { + + VertexContextSegment argumentType = new VertexContextSegment() { + @Override + public String idForVertex(Vertex vertex, SchemaGraph schemaGraph) { + return vertex.getType(); + } + + @Override + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return ARGUMENT.equals(vertex.getType()); + } + }; + + VertexContextSegment fieldOrDirective = new VertexContextSegment() { + @Override + public String idForVertex(Vertex argument, SchemaGraph schemaGraph) { + Vertex fieldOrDirective = schemaGraph.getFieldOrDirectiveForArgument(argument); + return fieldOrDirective.getType() + "." + fieldOrDirective.getName(); + } + + @Override + public boolean filter(Vertex argument, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment containerOrDirectiveHolder = new VertexContextSegment() { + @Override + public String idForVertex(Vertex argument, SchemaGraph schemaGraph) { + Vertex fieldOrDirective = schemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.getType().equals(FIELD)) { + Vertex fieldsContainer = schemaGraph.getFieldsContainerForField(fieldOrDirective); + // can be Interface or Object + return fieldsContainer.getType() + "." + fieldsContainer.getName(); + } else { + // a directive doesn't have further context + return ""; + } + } + + @Override + public boolean filter(Vertex argument, SchemaGraph schemaGraph) { + return true; + } + }; + VertexContextSegment argumentName = new VertexContextSegment() { + @Override + public String idForVertex(Vertex argument, SchemaGraph schemaGraph) { + return argument.getName(); + } + + @Override + public boolean filter(Vertex argument, SchemaGraph schemaGraph) { + return true; + } + }; + List contexts = Arrays.asList(argumentType, containerOrDirectiveHolder, fieldOrDirective, argumentName); + return contexts; + } + + + public PossibleMappingsCalculator(SchemaGraph sourceGraph, SchemaGraph targetGraph, SchemaDiffingRunningCheck runningCheck) { + this.runningCheck = runningCheck; + this.sourceGraph = sourceGraph; + this.targetGraph = targetGraph; + this.possibleMappings = new PossibleMappings(); + } + + public PossibleMappings calculate() { + calcPossibleMappings(typeContexts.get(SCHEMA), SCHEMA); + calcPossibleMappings(typeContexts.get(FIELD), FIELD); + calcPossibleMappings(typeContexts.get(ARGUMENT), ARGUMENT); + calcPossibleMappings(typeContexts.get(INPUT_FIELD), INPUT_FIELD); + calcPossibleMappings(typeContexts.get(OBJECT), OBJECT); + calcPossibleMappings(typeContexts.get(INTERFACE), INTERFACE); + calcPossibleMappings(typeContexts.get(UNION), UNION); + calcPossibleMappings(typeContexts.get(INPUT_OBJECT), INPUT_OBJECT); + calcPossibleMappings(typeContexts.get(SCALAR), SCALAR); + calcPossibleMappings(typeContexts.get(ENUM), ENUM); + calcPossibleMappings(typeContexts.get(ENUM_VALUE), ENUM_VALUE); + calcPossibleMappings(typeContexts.get(APPLIED_DIRECTIVE), APPLIED_DIRECTIVE); + calcPossibleMappings(typeContexts.get(APPLIED_ARGUMENT), APPLIED_ARGUMENT); + calcPossibleMappings(typeContexts.get(DIRECTIVE), DIRECTIVE); + + + sourceGraph.addVertices(possibleMappings.allIsolatedSource); + targetGraph.addVertices(possibleMappings.allIsolatedTarget); + + Assert.assertTrue(sourceGraph.size() == targetGraph.size()); + Set vertices = possibleMappings.possibleMappings.keySet(); + for (Vertex vertex : vertices) { + if (possibleMappings.possibleMappings.get(vertex).size() > 1) { +// System.out.println("vertex with possible mappings: " + possibleMappings.possibleMappings.get(vertex).size()); +// System.out.println("vertex " + vertex); +// System.out.println("-------------"); + } + } + + return possibleMappings; + } + + public abstract static class VertexContextSegment { + public VertexContextSegment() { + } + + public abstract String idForVertex(Vertex vertex, SchemaGraph schemaGraph); + + public boolean filter(Vertex vertex, SchemaGraph schemaGraph) { + return true; + } + } + + public class PossibleMappings { + + public Set allIsolatedSource = new LinkedHashSet<>(); + public Set allIsolatedTarget = new LinkedHashSet<>(); + + public Table, Set, Set> contexts = HashBasedTable.create(); + + public Multimap possibleMappings = HashMultimap.create(); + + public BiMap fixedOneToOneMappings = HashBiMap.create(); + public List fixedOneToOneSources = new ArrayList<>(); + public List fixedOneToOneTargets = new ArrayList<>(); + + public void putPossibleMappings(List contextId, + Collection sourceVertices, + Collection targetVertices, + String typeName) { + if (sourceVertices.isEmpty() && targetVertices.isEmpty()) { + return; + } + + if (sourceVertices.size() == 1 && targetVertices.size() == 1) { + Vertex sourceVertex = sourceVertices.iterator().next(); + Vertex targetVertex = targetVertices.iterator().next(); + fixedOneToOneMappings.put(sourceVertex, targetVertex); + fixedOneToOneSources.add(sourceVertex); + fixedOneToOneTargets.add(targetVertex); + return; + } + + if (APPLIED_DIRECTIVE.equals(typeName) || APPLIED_ARGUMENT.equals(typeName)) { + for (Vertex sourceVertex : sourceVertices) { + Vertex isolatedTarget = Vertex.newIsolatedNode("target-isolated-" + typeName); + allIsolatedTarget.add(isolatedTarget); + fixedOneToOneMappings.put(sourceVertex, isolatedTarget); + fixedOneToOneSources.add(sourceVertex); + fixedOneToOneTargets.add(isolatedTarget); + } + for (Vertex targetVertex : targetVertices) { + Vertex isolatedSource = Vertex.newIsolatedNode("source-isolated-" + typeName); + allIsolatedSource.add(isolatedSource); + fixedOneToOneMappings.put(isolatedSource, targetVertex); + fixedOneToOneSources.add(isolatedSource); + fixedOneToOneTargets.add(targetVertex); + } + return; + } + + Set newIsolatedSource = Collections.emptySet(); + Set newIsolatedTarget = Collections.emptySet(); + if (sourceVertices.size() > targetVertices.size()) { + newIsolatedTarget = Vertex.newIsolatedNodes(sourceVertices.size() - targetVertices.size(), "target-isolated-" + typeName + "-"); + } else if (targetVertices.size() > sourceVertices.size()) { + newIsolatedSource = Vertex.newIsolatedNodes(targetVertices.size() - sourceVertices.size(), "source-isolated-" + typeName + "-"); + } + this.allIsolatedSource.addAll(newIsolatedSource); + this.allIsolatedTarget.addAll(newIsolatedTarget); + + if (sourceVertices.size() == 0) { + Iterator iterator = newIsolatedSource.iterator(); + for (Vertex targetVertex : targetVertices) { + Vertex isolatedSourceVertex = iterator.next(); + fixedOneToOneMappings.put(isolatedSourceVertex, targetVertex); + fixedOneToOneSources.add(isolatedSourceVertex); + fixedOneToOneTargets.add(targetVertex); + } + return; + } + if (targetVertices.size() == 0) { + Iterator iterator = newIsolatedTarget.iterator(); + for (Vertex sourceVertex : sourceVertices) { + Vertex isolatedTargetVertex = iterator.next(); + fixedOneToOneMappings.put(sourceVertex, isolatedTargetVertex); + fixedOneToOneSources.add(sourceVertex); + fixedOneToOneTargets.add(isolatedTargetVertex); + } + return; + } + +// System.out.println("multiple mappings for context" + contextId + " overall size: " + (sourceVertices.size() + newIsolatedSource.size())); +// List vertexContextSegments = typeContexts.get(typeName); +// System.out.println("source ids: " + sourceVertices.size()); +// for (Vertex sourceVertex : sourceVertices) { +// List id = vertexContextSegments.stream().map(vertexContextSegment -> vertexContextSegment.idForVertex(sourceVertex, sourceGraph)) +// .collect(Collectors.toList()); +// System.out.println("id: " + id); +// } +// System.out.println("target ids ==================: " + targetVertices.size()); +// for (Vertex targetVertex : targetVertices) { +// List id = vertexContextSegments.stream().map(vertexContextSegment -> vertexContextSegment.idForVertex(targetVertex, targetGraph)) +// .collect(Collectors.toList()); +// System.out.println("id: " + id); +// } +// System.out.println("-------------------"); +// System.out.println("-------------------"); + + Assert.assertFalse(contexts.containsRow(contextId)); + + Set allSource = new LinkedHashSet<>(); + allSource.addAll(sourceVertices); + allSource.addAll(newIsolatedSource); + Set allTarget = new LinkedHashSet<>(); + allTarget.addAll(targetVertices); + allTarget.addAll(newIsolatedTarget); + contexts.put(contextId, allSource, allTarget); + for (Vertex sourceVertex : sourceVertices) { + possibleMappings.putAll(sourceVertex, targetVertices); + possibleMappings.putAll(sourceVertex, newIsolatedTarget); + } + for (Vertex sourceIsolatedVertex : newIsolatedSource) { + possibleMappings.putAll(sourceIsolatedVertex, targetVertices); + possibleMappings.putAll(sourceIsolatedVertex, newIsolatedTarget); + } + + + } + + // + public boolean mappingPossible(Vertex sourceVertex, Vertex targetVertex) { + return possibleMappings.containsEntry(sourceVertex, targetVertex); + } + } + + + public void calcPossibleMappings(List contexts, String typeNameForDebug) { + Collection currentSourceVertices = sourceGraph.getVertices(); + Collection currentTargetVertices = targetGraph.getVertices(); + calcPossibleMappingImpl(currentSourceVertices, + currentTargetVertices, + Collections.emptyList(), + 0, + contexts, + new LinkedHashSet<>(), + new LinkedHashSet<>(), + typeNameForDebug); + } + + /** + * calc for the provided context + */ + private void calcPossibleMappingImpl( + Collection currentSourceVertices, + Collection currentTargetVertices, + List contextId, + int contextIx, + List contexts, + Set usedSourceVertices, + Set usedTargetVertices, + String typeNameForDebug) { + runningCheck.check(); + + VertexContextSegment finalCurrentContext = contexts.get(contextIx); + Map> sourceGroups = FpKit.filterAndGroupingBy(currentSourceVertices, + v -> finalCurrentContext.filter(v, sourceGraph), + v -> finalCurrentContext.idForVertex(v, sourceGraph)); + Map> targetGroups = FpKit.filterAndGroupingBy(currentTargetVertices, + v -> finalCurrentContext.filter(v, targetGraph), + v -> finalCurrentContext.idForVertex(v, targetGraph)); + + + List deletedContexts = new ArrayList<>(); + List insertedContexts = new ArrayList<>(); + List sameContexts = new ArrayList<>(); + Util.diffNamedList(sourceGroups.keySet(), targetGroups.keySet(), deletedContexts, insertedContexts, sameContexts); + + // for each unchanged context we descend recursively into + for (String sameContext : sameContexts) { + ImmutableList sourceVerticesInContext = sourceGroups.get(sameContext); + ImmutableList targetVerticesInContext = targetGroups.get(sameContext); + + List currentContextId = concat(contextId, sameContext); + if (contexts.size() > contextIx + 1) { + calcPossibleMappingImpl(sourceVerticesInContext, targetVerticesInContext, currentContextId, contextIx + 1, contexts, usedSourceVertices, usedTargetVertices, typeNameForDebug); + } + /** + * Either there was no context segment left or not all vertices were relevant for + * Either way: fill up with isolated vertices and record as possible mapping + */ + Set notUsedSource = new LinkedHashSet<>(sourceVerticesInContext); + notUsedSource.removeAll(usedSourceVertices); + Set notUsedTarget = new LinkedHashSet<>(targetVerticesInContext); + notUsedTarget.removeAll(usedTargetVertices); + + possibleMappings.putPossibleMappings(currentContextId, notUsedSource, notUsedTarget, typeNameForDebug); + usedSourceVertices.addAll(notUsedSource); + usedTargetVertices.addAll(notUsedTarget); + } + + /** + * update the used vertices with the deleted and inserted contexts + */ + Set possibleSourceVertices = new LinkedHashSet<>(); + for (String deletedContext : deletedContexts) { + ImmutableList vertices = sourceGroups.get(deletedContext); + for (Vertex sourceVertex : vertices) { + if (!usedSourceVertices.contains(sourceVertex)) { + possibleSourceVertices.add(sourceVertex); + } + } + usedSourceVertices.addAll(vertices); + } + + Set possibleTargetVertices = new LinkedHashSet<>(); + for (String insertedContext : insertedContexts) { + ImmutableList vertices = targetGroups.get(insertedContext); + for (Vertex targetVertex : vertices) { + if (!usedTargetVertices.contains(targetVertex)) { + possibleTargetVertices.add(targetVertex); + } + } + usedTargetVertices.addAll(vertices); + } + if (contextId.size() == 0) { + contextId = singletonList(typeNameForDebug); + } + possibleMappings.putPossibleMappings(contextId, possibleSourceVertices, possibleTargetVertices, typeNameForDebug); + } + + public Map getFixedParentRestrictions() { + return getFixedParentRestrictions( + sourceGraph, + possibleMappings.fixedOneToOneSources, + possibleMappings.fixedOneToOneMappings + ); + } + + public Map getFixedParentRestrictionsInverse(Map fixedOneToOneMappingsInverted) { + return getFixedParentRestrictions( + targetGraph, + possibleMappings.fixedOneToOneTargets, + fixedOneToOneMappingsInverted + ); + } + + /** + * This computes the initial set of parent restrictions based on the fixed portion of the mapping. + *

      + * See {@link Mapping} for definition of fixed vs non-fixed. + *

      + * If a {@link Vertex} is present in the output {@link Map} then the value is the parent the + * vertex MUST map to. + *

      + * e.g. for an output {collar: Dog} then the collar vertex must be a child of Dog in the mapping. + * + * @return Map where key is any vertex, and the value is the parent that vertex must map to + */ + private Map getFixedParentRestrictions(SchemaGraph sourceGraph, + List fixedSourceVertices, + Map fixedOneToOneMappings) { + Assert.assertFalse(fixedOneToOneMappings.isEmpty()); + + List needsFixing = new ArrayList<>(sourceGraph.getVertices()); + needsFixing.removeAll(fixedSourceVertices); + + Map restrictions = new LinkedHashMap<>(); + + for (Vertex vertex : needsFixing) { + if (hasParentRestrictions(vertex)) { + Vertex sourceParent = sourceGraph.getSingleAdjacentInverseVertex(vertex); + Vertex fixedTargetParent = fixedOneToOneMappings.get(sourceParent); + + if (fixedTargetParent != null) { + for (Edge edge : sourceGraph.getAdjacentEdgesNonCopy(sourceParent)) { + Vertex sibling = edge.getTo(); + + if (hasParentRestrictions(sibling)) { + restrictions.put(sibling, fixedTargetParent); + } + } + } + } + } + + return restrictions; + } + + /** + * This computes the initial set of parent restrictions based on the given non-fixed mapping. + *

      + * i.e. this introduces restrictions as the {@link Mapping} is being built, as decisions + * can have knock on effects on other vertices' possible mappings. + *

      + * See {@link Mapping} for definition of fixed vs non-fixed. + *

      + * If a {@link Vertex} is present in the output {@link Map} then the value is the parent the + * vertex MUST map to. + *

      + * e.g. for an output {collar: Dog} then the collar vertex must be a child of Dog in the mapping. + * + * @param mapping the mapping to get non-fixed parent restrictions for + * @param sourceGraph the source graph + * @param targetGraph the target graph + * @return Map where key is any vertex, and the value is the parent that vertex must map to + */ + public Map getNonFixedParentRestrictions(SchemaGraph sourceGraph, + SchemaGraph targetGraph, + Mapping mapping) { + Map restrictions = new LinkedHashMap<>(); + + mapping.forEachNonFixedSourceAndTarget((source, target) -> { + if (hasChildrenRestrictions(source) && hasChildrenRestrictions(target)) { + for (Edge edge : sourceGraph.getAdjacentEdgesNonCopy(source)) { + Vertex child = edge.getTo(); + + if (hasParentRestrictions(child)) { + restrictions.put(child, target); + } + } + } else if (hasParentRestrictions(source) && hasParentRestrictions(target)) { + Vertex sourceParent = sourceGraph.getSingleAdjacentInverseVertex(source); + Vertex targetParent = targetGraph.getSingleAdjacentInverseVertex(target); + + for (Edge edge : sourceGraph.getAdjacentEdgesNonCopy(sourceParent)) { + Vertex sibling = edge.getTo(); + + if (hasParentRestrictions(sibling)) { + restrictions.put(sibling, targetParent); + } + } + } + }); + + return restrictions; + } + + public static boolean hasParentRestrictions(Vertex vertex) { + return vertex.isOfType(SchemaGraph.FIELD) + || vertex.isOfType(SchemaGraph.INPUT_FIELD) + || vertex.isOfType(SchemaGraph.ENUM_VALUE) + || vertex.isOfType(SchemaGraph.ARGUMENT); + } + + public static boolean hasChildrenRestrictions(Vertex vertex) { + return vertex.isOfType(SchemaGraph.INPUT_OBJECT) + || vertex.isOfType(SchemaGraph.OBJECT) + || vertex.isOfType(SchemaGraph.ENUM); + } +} diff --git a/src/main/java/graphql/schema/diffing/SchemaDiffing.java b/src/main/java/graphql/schema/diffing/SchemaDiffing.java new file mode 100644 index 0000000000..b12f8aec5a --- /dev/null +++ b/src/main/java/graphql/schema/diffing/SchemaDiffing.java @@ -0,0 +1,137 @@ +package graphql.schema.diffing; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimaps; +import graphql.Internal; +import graphql.schema.GraphQLSchema; +import graphql.schema.diffing.ana.EditOperationAnalysisResult; +import graphql.schema.diffing.ana.EditOperationAnalyzer; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +import static graphql.Assert.assertTrue; +import static graphql.schema.diffing.EditorialCostForMapping.baseEditorialCostForMapping; + +@Internal +public class SchemaDiffing { + private final SchemaDiffingRunningCheck runningCheck = new SchemaDiffingRunningCheck(); + + SchemaGraph sourceGraph; + SchemaGraph targetGraph; + + /** + * Tries to stop the algorithm from execution ASAP by throwing a + * {@link SchemaDiffingCancelledException}. + */ + public void stop() { + runningCheck.stop(); + } + + public List diffGraphQLSchema(GraphQLSchema graphQLSchema1, GraphQLSchema graphQLSchema2) throws Exception { + sourceGraph = new SchemaGraphFactory("source-").createGraph(graphQLSchema1); + targetGraph = new SchemaGraphFactory("target-").createGraph(graphQLSchema2); + return diffImpl(sourceGraph, targetGraph, new AtomicInteger()).getListOfEditOperations(); + } + + public EditOperationAnalysisResult diffAndAnalyze(GraphQLSchema graphQLSchema1, GraphQLSchema graphQLSchema2) throws Exception { + sourceGraph = new SchemaGraphFactory("source-").createGraph(graphQLSchema1); + targetGraph = new SchemaGraphFactory("target-").createGraph(graphQLSchema2); + DiffImpl.OptimalEdit optimalEdit = diffImpl(sourceGraph, targetGraph, new AtomicInteger()); + EditOperationAnalyzer editOperationAnalyzer = new EditOperationAnalyzer(graphQLSchema1, graphQLSchema1, sourceGraph, targetGraph); + return editOperationAnalyzer.analyzeEdits(optimalEdit.getListOfEditOperations(), optimalEdit.mapping); + } + + public DiffImpl.OptimalEdit diffGraphQLSchemaAllEdits(GraphQLSchema graphQLSchema1, GraphQLSchema graphQLSchema2, AtomicInteger algoIterationCount) throws Exception { + sourceGraph = new SchemaGraphFactory("source-").createGraph(graphQLSchema1); + targetGraph = new SchemaGraphFactory("target-").createGraph(graphQLSchema2); + return diffImpl(sourceGraph, targetGraph, algoIterationCount); + } + + + private DiffImpl.OptimalEdit diffImpl(SchemaGraph sourceGraph, SchemaGraph targetGraph, AtomicInteger algoIterationCount) throws Exception { + PossibleMappingsCalculator possibleMappingsCalculator = new PossibleMappingsCalculator(sourceGraph, targetGraph, runningCheck); + PossibleMappingsCalculator.PossibleMappings possibleMappings = possibleMappingsCalculator.calculate(); + + Mapping startMapping = Mapping.newMapping( + possibleMappingsCalculator.getFixedParentRestrictions(), + possibleMappings.fixedOneToOneMappings, + possibleMappings.fixedOneToOneSources, + possibleMappings.fixedOneToOneTargets); + + assertTrue(sourceGraph.size() == targetGraph.size()); + if (possibleMappings.fixedOneToOneMappings.size() == sourceGraph.size()) { + return new DiffImpl.OptimalEdit(sourceGraph, targetGraph, startMapping, baseEditorialCostForMapping(startMapping, sourceGraph, targetGraph)); + } + + List nonMappedSource = new ArrayList<>(sourceGraph.getVertices()); + nonMappedSource.removeAll(possibleMappings.fixedOneToOneSources); + + List nonMappedTarget = new ArrayList<>(targetGraph.getVertices()); + nonMappedTarget.removeAll(possibleMappings.fixedOneToOneTargets); + + runningCheck.check(); + + int isolatedSourceCount = (int) nonMappedSource.stream().filter(Vertex::isIsolated).count(); + int isolatedTargetCount = (int) nonMappedTarget.stream().filter(Vertex::isIsolated).count(); + if (isolatedTargetCount > isolatedSourceCount) { + // we flip source and target because the algo works much faster with + // this way for delete heavy graphs + BiMap fixedOneToOneInverted = HashBiMap.create(); + for (Vertex s : possibleMappings.fixedOneToOneMappings.keySet()) { + Vertex t = possibleMappings.fixedOneToOneMappings.get(s); + fixedOneToOneInverted.put(t, s); + } + Mapping startMappingInverted = Mapping.newMapping( + possibleMappingsCalculator.getFixedParentRestrictionsInverse(fixedOneToOneInverted), + fixedOneToOneInverted, + possibleMappings.fixedOneToOneTargets, + possibleMappings.fixedOneToOneSources + ); + HashMultimap invertedPossibleOnes = HashMultimap.create(); + Multimaps.invertFrom(possibleMappings.possibleMappings, invertedPossibleOnes); + possibleMappings.possibleMappings = invertedPossibleOnes; + + sortVertices(nonMappedTarget, targetGraph, possibleMappings); + + List sourceVertices = new ArrayList<>(); + sourceVertices.addAll(possibleMappings.fixedOneToOneSources); + sourceVertices.addAll(nonMappedSource); + + + List targetVertices = new ArrayList<>(); + targetVertices.addAll(possibleMappings.fixedOneToOneTargets); + targetVertices.addAll(nonMappedTarget); + + + DiffImpl diffImpl = new DiffImpl(possibleMappingsCalculator, targetGraph, sourceGraph, possibleMappings, runningCheck); + DiffImpl.OptimalEdit optimalEdit = diffImpl.diffImpl(startMappingInverted, targetVertices, sourceVertices, algoIterationCount); + DiffImpl.OptimalEdit invertedBackOptimalEdit = new DiffImpl.OptimalEdit(sourceGraph, targetGraph, optimalEdit.mapping.invert(), optimalEdit.ged); + return invertedBackOptimalEdit; + } else { + sortVertices(nonMappedSource, sourceGraph, possibleMappings); + + List sourceVertices = new ArrayList<>(); + sourceVertices.addAll(possibleMappings.fixedOneToOneSources); + sourceVertices.addAll(nonMappedSource); + + List targetVertices = new ArrayList<>(); + targetVertices.addAll(possibleMappings.fixedOneToOneTargets); + targetVertices.addAll(nonMappedTarget); + + DiffImpl diffImpl = new DiffImpl(possibleMappingsCalculator, sourceGraph, targetGraph, possibleMappings, runningCheck); + DiffImpl.OptimalEdit optimalEdit = diffImpl.diffImpl(startMapping, sourceVertices, targetVertices, algoIterationCount); + return optimalEdit; + } + } + + + private void sortVertices(List vertices, SchemaGraph schemaGraph, PossibleMappingsCalculator.PossibleMappings possibleMappings) { + Comparator vertexComparator = Comparator.comparing(schemaGraph::adjacentEdgesAndInverseCount).reversed(); + vertices.sort(vertexComparator); + } +} diff --git a/src/main/java/graphql/schema/diffing/SchemaDiffingCancelledException.java b/src/main/java/graphql/schema/diffing/SchemaDiffingCancelledException.java new file mode 100644 index 0000000000..1288644191 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/SchemaDiffingCancelledException.java @@ -0,0 +1,10 @@ +package graphql.schema.diffing; + +import graphql.Internal; + +@Internal +public class SchemaDiffingCancelledException extends RuntimeException { + SchemaDiffingCancelledException(boolean byInterrupt) { + super("Schema diffing job was cancelled by " + (byInterrupt ? "thread interrupt" : "stop call")); + } +} diff --git a/src/main/java/graphql/schema/diffing/SchemaDiffingRunningCheck.java b/src/main/java/graphql/schema/diffing/SchemaDiffingRunningCheck.java new file mode 100644 index 0000000000..8b0182eb38 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/SchemaDiffingRunningCheck.java @@ -0,0 +1,17 @@ +package graphql.schema.diffing; + +import java.util.concurrent.atomic.AtomicBoolean; + +class SchemaDiffingRunningCheck { + private final AtomicBoolean wasStopped = new AtomicBoolean(false); + + void check() { + if (wasStopped.get()) { + throw new SchemaDiffingCancelledException(false); + } + } + + void stop() { + wasStopped.set(true); + } +} diff --git a/src/main/java/graphql/schema/diffing/SchemaGraph.java b/src/main/java/graphql/schema/diffing/SchemaGraph.java new file mode 100644 index 0000000000..a89c35cdbe --- /dev/null +++ b/src/main/java/graphql/schema/diffing/SchemaGraph.java @@ -0,0 +1,303 @@ +package graphql.schema.diffing; + + +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Iterables; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.Table; +import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; + +import static graphql.Assert.assertTrue; + +@ExperimentalApi +public class SchemaGraph { + + public static final String SCHEMA = "Schema"; + public static final String OBJECT = "Object"; + public static final String INTERFACE = "Interface"; + public static final String UNION = "Union"; + public static final String FIELD = "Field"; + public static final String ARGUMENT = "Argument"; + public static final String SCALAR = "Scalar"; + public static final String ENUM = "Enum"; + public static final String ENUM_VALUE = "EnumValue"; + public static final String INPUT_OBJECT = "InputObject"; + public static final String INPUT_FIELD = "InputField"; + public static final String DIRECTIVE = "Directive"; + public static final String APPLIED_DIRECTIVE = "AppliedDirective"; + public static final String APPLIED_ARGUMENT = "AppliedArgument"; + public static final String ISOLATED = "__ISOLATED"; + + + private List vertices = new ArrayList<>(); + private List edges = new ArrayList<>(); + + private Map typesByName = new LinkedHashMap<>(); + private Map directivesByName = new LinkedHashMap<>(); + private Table edgesByDirection = HashBasedTable.create(); + private Table edgesByInverseDirection = HashBasedTable.create(); + private Multimap typeToVertices = LinkedHashMultimap.create(); + + public SchemaGraph() { + + } + + public SchemaGraph(List vertices, List edges, Table edgeByVertexPair) { + this.vertices = vertices; + this.edges = edges; + this.edgesByDirection = edgeByVertexPair; + } + + public void addVertex(Vertex vertex) { + vertices.add(vertex); + typeToVertices.put(vertex.getType(), vertex); + } + + public void addVertices(Collection vertices) { + for (Vertex vertex : vertices) { + this.vertices.add(vertex); + typeToVertices.put(vertex.getType(), vertex); + } + } + + public Collection getVerticesByType(String type) { + return typeToVertices.get(type); + } + + public Multimap getVerticesByType() { + return typeToVertices; + } + + public void addEdge(Edge edge) { + edges.add(edge); + edgesByDirection.put(edge.getFrom(), edge.getTo(), edge); + edgesByInverseDirection.put(edge.getTo(), edge.getFrom(), edge); + } + + // +// public List getAdjacentEdges(Vertex from) { +// return new ArrayList<>(edgesByDirection.row(from).values()); +// } + public Collection getAdjacentEdgesNonCopy(Vertex from) { + return edgesByDirection.row(from).values(); + } + + public Iterable getAdjacentEdgesAndInverseNonCopy(Vertex fromAndTo) { + Collection edges = edgesByInverseDirection.row(fromAndTo).values(); + Collection edgesInverse = edgesByDirection.row(fromAndTo).values(); + return Iterables.concat(edges, edgesInverse); + } + + public int adjacentEdgesAndInverseCount(Vertex fromAndTo) { + return edgesByInverseDirection.row(fromAndTo).size() + edgesByDirection.row(fromAndTo).size(); + } + + public List getAdjacentVertices(Vertex from) { + return getAdjacentVertices(from, x -> true); + } + + public List getAdjacentVertices(Vertex from, Predicate predicate) { + List result = new ArrayList<>(); + for (Edge edge : edgesByDirection.row(from).values()) { + Vertex v = edge.getTo(); + if (predicate.test(v)) { + result.add(v); + } + } + return result; + } + + public List getAdjacentVerticesInverse(Vertex to) { + return getAdjacentVerticesInverse(to, x -> true); + } + + public List getAdjacentVerticesInverse(Vertex to, Predicate predicate) { + List result = new ArrayList<>(); + for (Edge edge : edgesByInverseDirection.row(to).values()) { + Vertex v = edge.getFrom(); + if (predicate.test(v)) { + result.add(v); + } + } + return result; + } + + public List getAdjacentEdges(Vertex from) { + return getAdjacentEdges(from, x -> true); + } + public List getAdjacentEdges(Vertex from, Predicate predicate) { + List result = new ArrayList<>(); + for (Edge edge : edgesByDirection.row(from).values()) { + Vertex v = edge.getTo(); + if (predicate.test(v)) { + result.add(edge); + } + } + return result; + } + + public List getAdjacentEdgesInverseCopied(Vertex to) { + return new ArrayList<>(edgesByInverseDirection.row(to).values()); + } + + public Collection getAdjacentEdgesInverseNonCopy(Vertex to) { + return edgesByInverseDirection.row(to).values(); + } + + public List getAdjacentEdgesInverse(Vertex to, Predicate predicate) { + List result = new ArrayList<>(); + for (Edge edge : edgesByInverseDirection.row(to).values()) { + Vertex v = edge.getFrom(); + if (predicate.test(v)) { + result.add(edge); + } + } + return result; + } + + public Edge getSingleAdjacentEdge(Vertex from, Predicate predicate) { + for (Edge edge : edgesByDirection.row(from).values()) { + if (predicate.test(edge)) { + return edge; + } + } + return null; + } + + public List getEdges() { + return edges; + } + + // null if the edge doesn't exist + public @Nullable Edge getEdge(Vertex from, Vertex to) { + return edgesByDirection.get(from, to); + } + + public @Nullable Edge getEdgeOrInverse(Vertex from, Vertex to) { + Edge result = edgesByDirection.get(from, to); + return result != null ? result : edgesByInverseDirection.get(from, to); + } + + public List getVertices() { + return vertices; + } + + public void setVertices(List vertices) { + this.vertices = vertices; + } + + public void addType(String name, Vertex vertex) { + typesByName.put(name, vertex); + } + + public void addDirective(String name, Vertex vertex) { + directivesByName.put(name, vertex); + } + + public Vertex getType(String name) { + return typesByName.get(name); + } + + public Vertex getDirective(String name) { + return directivesByName.get(name); + } + + public Optional findTargetVertex(Vertex from, Predicate vertexPredicate) { + return edgesByDirection.row(from).values().stream().map(Edge::getTo).filter(vertexPredicate).findFirst(); + } + + public int size() { + return vertices.size(); + } + + public List addIsolatedVertices(int count, String debugPrefix) { + List result = new ArrayList<>(); + for (int i = 0; i < count; i++) { + Vertex isolatedVertex = Vertex.newIsolatedNode(debugPrefix + i); + vertices.add(isolatedVertex); + result.add(isolatedVertex); + } + return result; + } + + public Vertex getFieldOrDirectiveForArgument(Vertex argument) { + List adjacentVertices = getAdjacentVerticesInverse(argument); + assertTrue(adjacentVertices.size() == 1, "No field or directive found for %s", argument); + return adjacentVertices.get(0); + } + + public Vertex getFieldsContainerForField(Vertex field) { + List adjacentVertices = getAdjacentVerticesInverse(field); + assertTrue(adjacentVertices.size() == 1, "No fields container found for %s", field); + return adjacentVertices.get(0); + } + + public Vertex getInputObjectForInputField(Vertex inputField) { + List adjacentVertices = this.getAdjacentVerticesInverse(inputField); + assertTrue(adjacentVertices.size() == 1, "No input object found for %s", inputField); + return adjacentVertices.get(0); + } + + public Vertex getAppliedDirectiveForAppliedArgument(Vertex appliedArgument) { + List adjacentVertices = this.getAdjacentVerticesInverse(appliedArgument); + assertTrue(adjacentVertices.size() == 1, "No applied directive found for %s", appliedArgument); + return adjacentVertices.get(0); + } + + public Vertex getAppliedDirectiveContainerForAppliedDirective(Vertex appliedDirective) { + List adjacentVertices = this.getAdjacentVerticesInverse(appliedDirective); + assertTrue(adjacentVertices.size() == 1, "No applied directive container found for %s", appliedDirective); + return adjacentVertices.get(0); + } + + /** + * Gets the one inverse adjacent edge to the input and gets the other vertex. + * + * @param input the vertex input + * @return a vertex + */ + public Vertex getSingleAdjacentInverseVertex(Vertex input) { + Collection adjacentVertices = this.getAdjacentEdgesInverseNonCopy(input); + assertTrue(adjacentVertices.size() == 1, "No parent found for %s", input); + return adjacentVertices.iterator().next().getFrom(); + } + + public int getAppliedDirectiveIndex(Vertex appliedDirective) { + List adjacentEdges = this.getAdjacentEdgesInverseCopied(appliedDirective); + assertTrue(adjacentEdges.size() == 1, "No applied directive container found for %s", appliedDirective); + return Integer.parseInt(adjacentEdges.get(0).getLabel()); + } + + public Vertex getEnumForEnumValue(Vertex enumValue) { + List adjacentVertices = this.getAdjacentVerticesInverse(enumValue); + assertTrue(adjacentVertices.size() == 1, "No enum found for %s", enumValue); + return adjacentVertices.get(0); + } + + + public List getAllAdjacentEdges(List fromList, Vertex to) { + List result = new ArrayList<>(); + for (Vertex from : fromList) { + Edge edge = getEdge(from, to); + if (edge == null) { + continue; + } + result.add(edge); + } + return result; + } + + public boolean containsEdge(Vertex from, Vertex to) { + return this.edges.stream().anyMatch(edge -> edge.getFrom().equals(from) && edge.getTo().equals(to)); + } +} diff --git a/src/main/java/graphql/schema/diffing/SchemaGraphFactory.java b/src/main/java/graphql/schema/diffing/SchemaGraphFactory.java new file mode 100644 index 0000000000..37ac8d5e31 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/SchemaGraphFactory.java @@ -0,0 +1,420 @@ +package graphql.schema.diffing; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.ValuesResolver; +import graphql.introspection.Introspection; +import graphql.language.AstPrinter; +import graphql.schema.*; +import graphql.schema.idl.DirectiveInfo; +import graphql.schema.idl.ScalarInfo; +import graphql.util.TraversalControl; +import graphql.util.Traverser; +import graphql.util.TraverserContext; +import graphql.util.TraverserVisitor; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +import static graphql.Assert.assertNotNull; + +@Internal +public class SchemaGraphFactory { + + private int counter = 1; + private final String debugPrefix; + + public SchemaGraphFactory(String debugPrefix) { + this.debugPrefix = debugPrefix; + } + + public SchemaGraphFactory() { + this.debugPrefix = ""; + } + + public SchemaGraph createGraph(GraphQLSchema schema) { + Set roots = new LinkedHashSet<>(); + roots.add(schema.getQueryType()); + if (schema.isSupportingMutations()) { + roots.add(schema.getMutationType()); + } + if (schema.isSupportingSubscriptions()) { + roots.add(schema.getSubscriptionType()); + } + roots.addAll(schema.getAdditionalTypes()); + roots.addAll(schema.getDirectives()); + roots.addAll(schema.getSchemaDirectives()); + roots.add(schema.getIntrospectionSchemaType()); + Traverser traverser = Traverser.depthFirst(GraphQLSchemaElement::getChildren); + SchemaGraph schemaGraph = new SchemaGraph(); + class IntrospectionNode { + + } + traverser.traverse(roots, new TraverserVisitor() { + @Override + public TraversalControl enter(TraverserContext context) { + boolean isIntrospectionNode = false; + if (context.thisNode() instanceof GraphQLNamedType) { + if (Introspection.isIntrospectionTypes((GraphQLNamedType) context.thisNode())) { + isIntrospectionNode = true; + context.setVar(IntrospectionNode.class, new IntrospectionNode()); + } + } else { + isIntrospectionNode = context.getVarFromParents(IntrospectionNode.class) != null; + } + if (context.thisNode() instanceof GraphQLObjectType) { + newObject((GraphQLObjectType) context.thisNode(), schemaGraph, isIntrospectionNode); + } + if (context.thisNode() instanceof GraphQLInterfaceType) { + newInterface((GraphQLInterfaceType) context.thisNode(), schemaGraph, isIntrospectionNode); + } + if (context.thisNode() instanceof GraphQLUnionType) { + newUnion((GraphQLUnionType) context.thisNode(), schemaGraph, isIntrospectionNode); + } + if (context.thisNode() instanceof GraphQLScalarType) { + newScalar((GraphQLScalarType) context.thisNode(), schemaGraph, isIntrospectionNode); + } + if (context.thisNode() instanceof GraphQLInputObjectType) { + newInputObject((GraphQLInputObjectType) context.thisNode(), schemaGraph, isIntrospectionNode); + } + if (context.thisNode() instanceof GraphQLEnumType) { + newEnum((GraphQLEnumType) context.thisNode(), schemaGraph, isIntrospectionNode); + } + if (context.thisNode() instanceof GraphQLDirective) { + // only continue if not applied directive + if (context.getParentNode() == null) { + newDirective((GraphQLDirective) context.thisNode(), schemaGraph); + } + } + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl leave(TraverserContext context) { + return TraversalControl.CONTINUE; + } + }); + addSchemaVertex(schemaGraph, schema); + + ArrayList copyOfVertices = new ArrayList<>(schemaGraph.getVertices()); + for (Vertex vertex : copyOfVertices) { + if (SchemaGraph.OBJECT.equals(vertex.getType())) { + handleObjectVertex(vertex, schemaGraph, schema); + } + if (SchemaGraph.INTERFACE.equals(vertex.getType())) { + handleInterfaceVertex(vertex, schemaGraph, schema); + } + if (SchemaGraph.UNION.equals(vertex.getType())) { + handleUnion(vertex, schemaGraph, schema); + } + if (SchemaGraph.INPUT_OBJECT.equals(vertex.getType())) { + handleInputObject(vertex, schemaGraph, schema); + } + if (SchemaGraph.DIRECTIVE.equals(vertex.getType())) { + handleDirective(vertex, schemaGraph, schema); + } + } + return schemaGraph; + } + + private void addSchemaVertex(SchemaGraph schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLObjectType queryType = graphQLSchema.getQueryType(); + GraphQLObjectType mutationType = graphQLSchema.getMutationType(); + GraphQLObjectType subscriptionType = graphQLSchema.getSubscriptionType(); + Vertex schemaVertex = new Vertex(SchemaGraph.SCHEMA, "schema"); + schemaVertex.add("name", SchemaGraph.SCHEMA); + schemaGraph.addVertex(schemaVertex); + + Vertex queryVertex = schemaGraph.getType(queryType.getName()); + schemaGraph.addEdge(new Edge(schemaVertex, queryVertex, "query")); + if (mutationType != null) { + Vertex mutationVertex = schemaGraph.getType(mutationType.getName()); + schemaGraph.addEdge(new Edge(schemaVertex, mutationVertex, "mutation")); + } + if (subscriptionType != null) { + Vertex subscriptionVertex = schemaGraph.getType(subscriptionType.getName()); + schemaGraph.addEdge(new Edge(schemaVertex, subscriptionVertex, "subscription")); + } + createAppliedDirectives(schemaVertex, graphQLSchema.getSchemaDirectives(), schemaGraph); + } + + private void handleInputObject(Vertex inputObject, SchemaGraph schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) graphQLSchema.getType(inputObject.get("name")); + List inputFields = inputObjectType.getFields(); + for (GraphQLInputObjectField inputField : inputFields) { + Vertex inputFieldVertex = schemaGraph.findTargetVertex(inputObject, vertex -> vertex.getType().equals("InputField") && + vertex.get("name").equals(inputField.getName())).get(); + handleInputField(inputFieldVertex, inputField, schemaGraph, graphQLSchema); + } + } + + private void handleInputField(Vertex inputFieldVertex, GraphQLInputObjectField inputField, SchemaGraph + schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLInputType type = inputField.getType(); + GraphQLUnmodifiedType graphQLUnmodifiedType = GraphQLTypeUtil.unwrapAll(type); + Vertex typeVertex = assertNotNull(schemaGraph.getType(graphQLUnmodifiedType.getName())); + Edge typeEdge = new Edge(inputFieldVertex, typeVertex); + String typeEdgeLabel = "type=" + GraphQLTypeUtil.simplePrint(type) + ";defaultValue="; + if (inputField.hasSetDefaultValue()) { + typeEdgeLabel += AstPrinter.printAst(ValuesResolver.valueToLiteral(inputField.getInputFieldDefaultValue(), inputField.getType(), GraphQLContext.getDefault(), Locale.getDefault())); + } + + typeEdge.setLabel(typeEdgeLabel); + schemaGraph.addEdge(typeEdge); + } + + private void handleUnion(Vertex unionVertex, SchemaGraph schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLUnionType unionType = (GraphQLUnionType) graphQLSchema.getType(unionVertex.get("name")); + List types = unionType.getTypes(); + for (GraphQLNamedOutputType unionMemberType : types) { + Vertex unionMemberVertex = assertNotNull(schemaGraph.getType(unionMemberType.getName())); + schemaGraph.addEdge(new Edge(unionVertex, unionMemberVertex)); + } + } + + private void handleInterfaceVertex(Vertex interfaceVertex, SchemaGraph schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLInterfaceType interfaceType = (GraphQLInterfaceType) graphQLSchema.getType(interfaceVertex.get("name")); + + for (GraphQLNamedOutputType implementsInterface : interfaceType.getInterfaces()) { + Vertex implementsInterfaceVertex = assertNotNull(schemaGraph.getType(implementsInterface.getName())); + schemaGraph.addEdge(new Edge(interfaceVertex, implementsInterfaceVertex, "implements " + implementsInterface.getName())); + } + + List fieldDefinitions = interfaceType.getFieldDefinitions(); + for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { + Vertex fieldVertex = schemaGraph.findTargetVertex(interfaceVertex, vertex -> vertex.getType().equals("Field") && + vertex.get("name").equals(fieldDefinition.getName())).get(); + handleField(fieldVertex, fieldDefinition, schemaGraph, graphQLSchema); + } + + } + + private void handleObjectVertex(Vertex objectVertex, SchemaGraph schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLObjectType objectType = graphQLSchema.getObjectType(objectVertex.get("name")); + + for (GraphQLNamedOutputType implementsInterface : objectType.getInterfaces()) { + Vertex implementsInterfaceVertex = assertNotNull(schemaGraph.getType(implementsInterface.getName())); + schemaGraph.addEdge(new Edge(objectVertex, implementsInterfaceVertex, "implements " + implementsInterface.getName())); + } + + List fieldDefinitions = objectType.getFieldDefinitions(); + for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { + Vertex fieldVertex = schemaGraph.findTargetVertex(objectVertex, vertex -> vertex.getType().equals("Field") && + vertex.get("name").equals(fieldDefinition.getName())).get(); + handleField(fieldVertex, fieldDefinition, schemaGraph, graphQLSchema); + } + } + + private void handleField(Vertex fieldVertex, GraphQLFieldDefinition fieldDefinition, SchemaGraph + schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLOutputType type = fieldDefinition.getType(); + GraphQLUnmodifiedType graphQLUnmodifiedType = GraphQLTypeUtil.unwrapAll(type); + Vertex typeVertex = assertNotNull(schemaGraph.getType(graphQLUnmodifiedType.getName())); + Edge typeEdge = new Edge(fieldVertex, typeVertex); + typeEdge.setLabel("type=" + GraphQLTypeUtil.simplePrint(type) + ";"); + schemaGraph.addEdge(typeEdge); + + for (GraphQLArgument graphQLArgument : fieldDefinition.getArguments()) { + Vertex argumentVertex = schemaGraph.findTargetVertex(fieldVertex, vertex -> vertex.getType().equals("Argument") && + vertex.get("name").equals(graphQLArgument.getName())).get(); + handleArgument(argumentVertex, graphQLArgument, schemaGraph); + } + } + + private void handleDirective(Vertex directive, SchemaGraph schemaGraph, GraphQLSchema graphQLSchema) { + GraphQLDirective graphQLDirective = graphQLSchema.getDirective(directive.getName()); + for (GraphQLArgument graphQLArgument : graphQLDirective.getArguments()) { + Vertex argumentVertex = schemaGraph.findTargetVertex(directive, vertex -> vertex.isOfType(SchemaGraph.ARGUMENT) && + vertex.getName().equals(graphQLArgument.getName())).get(); + handleArgument(argumentVertex, graphQLArgument, schemaGraph); + } + + } + + private void handleArgument(Vertex argumentVertex, GraphQLArgument graphQLArgument, SchemaGraph schemaGraph) { + GraphQLInputType type = graphQLArgument.getType(); + GraphQLUnmodifiedType graphQLUnmodifiedType = GraphQLTypeUtil.unwrapAll(type); + Vertex typeVertex = assertNotNull(schemaGraph.getType(graphQLUnmodifiedType.getName())); + Edge typeEdge = new Edge(argumentVertex, typeVertex); + String typeEdgeLabel = "type=" + GraphQLTypeUtil.simplePrint(type) + ";defaultValue="; + if (graphQLArgument.hasSetDefaultValue()) { + typeEdgeLabel += AstPrinter.printAst(ValuesResolver.valueToLiteral(graphQLArgument.getArgumentDefaultValue(), graphQLArgument.getType(), GraphQLContext.getDefault(), Locale.getDefault())); + } + typeEdge.setLabel(typeEdgeLabel); + schemaGraph.addEdge(typeEdge); + } + + private void newObject(GraphQLObjectType graphQLObjectType, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex objectVertex = new Vertex(SchemaGraph.OBJECT, debugPrefix + String.valueOf(counter++)); + objectVertex.setBuiltInType(isIntrospectionNode); + objectVertex.add("name", graphQLObjectType.getName()); + objectVertex.add("description", desc(graphQLObjectType.getDescription())); + for (GraphQLFieldDefinition fieldDefinition : graphQLObjectType.getFieldDefinitions()) { + Vertex newFieldVertex = newField(fieldDefinition, schemaGraph, isIntrospectionNode); + schemaGraph.addVertex(newFieldVertex); + schemaGraph.addEdge(new Edge(objectVertex, newFieldVertex)); + } + schemaGraph.addVertex(objectVertex); + schemaGraph.addType(graphQLObjectType.getName(), objectVertex); + createAppliedDirectives(objectVertex, graphQLObjectType.getDirectives(), schemaGraph); + } + + private Vertex newField(GraphQLFieldDefinition graphQLFieldDefinition, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex fieldVertex = new Vertex(SchemaGraph.FIELD, debugPrefix + String.valueOf(counter++)); + fieldVertex.setBuiltInType(isIntrospectionNode); + fieldVertex.add("name", graphQLFieldDefinition.getName()); + fieldVertex.add("description", desc(graphQLFieldDefinition.getDescription())); + for (GraphQLArgument argument : graphQLFieldDefinition.getArguments()) { + Vertex argumentVertex = newArgument(argument, schemaGraph, isIntrospectionNode); + schemaGraph.addVertex(argumentVertex); + schemaGraph.addEdge(new Edge(fieldVertex, argumentVertex)); + } + createAppliedDirectives(fieldVertex, graphQLFieldDefinition.getDirectives(), schemaGraph); + return fieldVertex; + } + + private Vertex newArgument(GraphQLArgument graphQLArgument, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex vertex = new Vertex(SchemaGraph.ARGUMENT, debugPrefix + String.valueOf(counter++)); + vertex.setBuiltInType(isIntrospectionNode); + vertex.add("name", graphQLArgument.getName()); + vertex.add("description", desc(graphQLArgument.getDescription())); + createAppliedDirectives(vertex, graphQLArgument.getDirectives(), schemaGraph); + return vertex; + } + + private void newScalar(GraphQLScalarType scalarType, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex scalarVertex = new Vertex(SchemaGraph.SCALAR, debugPrefix + String.valueOf(counter++)); + scalarVertex.setBuiltInType(isIntrospectionNode); + if (ScalarInfo.isGraphqlSpecifiedScalar(scalarType.getName())) { + scalarVertex.setBuiltInType(true); + } + scalarVertex.add("name", scalarType.getName()); + scalarVertex.add("description", desc(scalarType.getDescription())); + scalarVertex.add("specifiedByUrl", scalarType.getSpecifiedByUrl()); + schemaGraph.addVertex(scalarVertex); + schemaGraph.addType(scalarType.getName(), scalarVertex); + createAppliedDirectives(scalarVertex, scalarType.getDirectives(), schemaGraph); + } + + private void newInterface(GraphQLInterfaceType interfaceType, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex interfaceVertex = new Vertex(SchemaGraph.INTERFACE, debugPrefix + String.valueOf(counter++)); + interfaceVertex.setBuiltInType(isIntrospectionNode); + interfaceVertex.add("name", interfaceType.getName()); + interfaceVertex.add("description", desc(interfaceType.getDescription())); + for (GraphQLFieldDefinition fieldDefinition : interfaceType.getFieldDefinitions()) { + Vertex newFieldVertex = newField(fieldDefinition, schemaGraph, isIntrospectionNode); + schemaGraph.addVertex(newFieldVertex); + schemaGraph.addEdge(new Edge(interfaceVertex, newFieldVertex)); + } + schemaGraph.addVertex(interfaceVertex); + schemaGraph.addType(interfaceType.getName(), interfaceVertex); + createAppliedDirectives(interfaceVertex, interfaceType.getDirectives(), schemaGraph); + } + + private void newEnum(GraphQLEnumType enumType, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex enumVertex = new Vertex(SchemaGraph.ENUM, debugPrefix + String.valueOf(counter++)); + enumVertex.setBuiltInType(isIntrospectionNode); + enumVertex.add("name", enumType.getName()); + enumVertex.add("description", desc(enumType.getDescription())); + for (GraphQLEnumValueDefinition enumValue : enumType.getValues()) { + Vertex enumValueVertex = new Vertex(SchemaGraph.ENUM_VALUE, debugPrefix + String.valueOf(counter++)); + enumValueVertex.setBuiltInType(isIntrospectionNode); + enumValueVertex.add("name", enumValue.getName()); + schemaGraph.addVertex(enumValueVertex); + schemaGraph.addEdge(new Edge(enumVertex, enumValueVertex)); + createAppliedDirectives(enumValueVertex, enumValue.getDirectives(), schemaGraph); + } + schemaGraph.addVertex(enumVertex); + schemaGraph.addType(enumType.getName(), enumVertex); + createAppliedDirectives(enumVertex, enumType.getDirectives(), schemaGraph); + } + + private void newUnion(GraphQLUnionType unionType, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex unionVertex = new Vertex(SchemaGraph.UNION, debugPrefix + String.valueOf(counter++)); + unionVertex.setBuiltInType(isIntrospectionNode); + unionVertex.add("name", unionType.getName()); + unionVertex.add("description", desc(unionType.getDescription())); + schemaGraph.addVertex(unionVertex); + schemaGraph.addType(unionType.getName(), unionVertex); + createAppliedDirectives(unionVertex, unionType.getDirectives(), schemaGraph); + } + + private void newInputObject(GraphQLInputObjectType inputObject, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex inputObjectVertex = new Vertex(SchemaGraph.INPUT_OBJECT, debugPrefix + String.valueOf(counter++)); + inputObjectVertex.setBuiltInType(isIntrospectionNode); + inputObjectVertex.add("name", inputObject.getName()); + inputObjectVertex.add("description", desc(inputObject.getDescription())); + for (GraphQLInputObjectField inputObjectField : inputObject.getFieldDefinitions()) { + Vertex newInputField = newInputField(inputObjectField, schemaGraph, isIntrospectionNode); + Edge newEdge = new Edge(inputObjectVertex, newInputField); + schemaGraph.addEdge(newEdge); + } + schemaGraph.addVertex(inputObjectVertex); + schemaGraph.addType(inputObject.getName(), inputObjectVertex); + createAppliedDirectives(inputObjectVertex, inputObject.getDirectives(), schemaGraph); + } + + private void createAppliedDirectives(Vertex from, + List appliedDirectives, + SchemaGraph schemaGraph) { + Map countByName = new LinkedHashMap<>(); + for (GraphQLDirective appliedDirective : appliedDirectives) { + Vertex appliedDirectiveVertex = new Vertex(SchemaGraph.APPLIED_DIRECTIVE, debugPrefix + String.valueOf(counter++)); + appliedDirectiveVertex.add("name", appliedDirective.getName()); + for (GraphQLArgument appliedArgument : appliedDirective.getArguments()) { + if (appliedArgument.hasSetValue()) { + Vertex appliedArgumentVertex = new Vertex(SchemaGraph.APPLIED_ARGUMENT, debugPrefix + String.valueOf(counter++)); + appliedArgumentVertex.add("name", appliedArgument.getName()); + appliedArgumentVertex.add("value", AstPrinter.printAst(ValuesResolver.valueToLiteral(appliedArgument.getArgumentValue(), appliedArgument.getType(), GraphQLContext.getDefault(), Locale.getDefault()))); + schemaGraph.addVertex(appliedArgumentVertex); + schemaGraph.addEdge(new Edge(appliedDirectiveVertex, appliedArgumentVertex)); + } + } + schemaGraph.addVertex(appliedDirectiveVertex); + + // repeatable directives means we can have multiple directives with the same name + // the edge label indicates the applied directive index + Integer count = countByName.getOrDefault(appliedDirective.getName(), 0); + schemaGraph.addEdge(new Edge(from, appliedDirectiveVertex, String.valueOf(count))); + countByName.put(appliedDirective.getName(), count + 1); + } + } + + private void newDirective(GraphQLDirective directive, SchemaGraph schemaGraph) { + Vertex directiveVertex = new Vertex(SchemaGraph.DIRECTIVE, debugPrefix + String.valueOf(counter++)); + directiveVertex.add("name", directive.getName()); + directiveVertex.add("repeatable", directive.isRepeatable()); + directiveVertex.add("locations", directive.validLocations()); + boolean graphqlSpecified = DirectiveInfo.isGraphqlSpecifiedDirective(directive.getName()); + directiveVertex.setBuiltInType(graphqlSpecified); + directiveVertex.add("description", desc(directive.getDescription())); + for (GraphQLArgument argument : directive.getArguments()) { + Vertex argumentVertex = newArgument(argument, schemaGraph, graphqlSpecified); + schemaGraph.addVertex(argumentVertex); + schemaGraph.addEdge(new Edge(directiveVertex, argumentVertex)); + } + schemaGraph.addDirective(directive.getName(), directiveVertex); + schemaGraph.addVertex(directiveVertex); + } + + private Vertex newInputField(GraphQLInputObjectField inputField, SchemaGraph schemaGraph, boolean isIntrospectionNode) { + Vertex vertex = new Vertex(SchemaGraph.INPUT_FIELD, debugPrefix + String.valueOf(counter++)); + schemaGraph.addVertex(vertex); + vertex.setBuiltInType(isIntrospectionNode); + vertex.add("name", inputField.getName()); + vertex.add("description", desc(inputField.getDescription())); + createAppliedDirectives(vertex, inputField.getDirectives(), schemaGraph); + return vertex; + } + + private String desc(String desc) { + return desc; +// return desc != null ? desc.replace("\n", "\\n") : null; + } + +} diff --git a/src/main/java/graphql/schema/diffing/SortSourceGraph.java b/src/main/java/graphql/schema/diffing/SortSourceGraph.java new file mode 100644 index 0000000000..6b96ccfae3 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/SortSourceGraph.java @@ -0,0 +1,141 @@ +//package graphql.schema.diffing; +// +//import graphql.Internal; +// +//import java.util.ArrayList; +//import java.util.Comparator; +//import java.util.LinkedHashMap; +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.atomic.AtomicInteger; +// +//@Internal +//public class SortSourceGraph { +// +// public static void sortSourceGraph(SchemaGraph sourceGraph, SchemaGraph targetGraph, PossibleMappingsCalculator.PossibleMappings possibleMappings) { +//// // we sort descending by number of possible target vertices +//// Collections.sort(sourceGraph.getVertices(), (v1, v2) -> +//// +//// { +//// +//// int v2Count = v2.isBuiltInType() ? -1 : (v2.isIsolated() ? 0 : isolatedVertices.possibleMappings.get(v2).size()); +//// int v1Count = v1.isBuiltInType() ? -1 : (v1.isIsolated() ? 0 : isolatedVertices.possibleMappings.get(v1).size()); +//// return Integer.compare(v2Count, v1Count); +//// }); +//// +//// for (Vertex vertex : sourceGraph.getVertices()) { +//// System.out.println("c: " + isolatedVertices.possibleMappings.get(vertex).size() + " v: " + vertex); +//// } +// +//// +//// +//// // how often does each source edge (based on the label) appear in target graph +// Map targetLabelCount = new LinkedHashMap<>(); +// for (Edge targetEdge : targetGraph.getEdges()) { +// targetLabelCount.computeIfAbsent(targetEdge.getLabel(), __ -> new AtomicInteger()).incrementAndGet(); +// } +// // how often does each source vertex (based on the data) appear in the target graph +// Map targetVertexDataCount = new LinkedHashMap<>(); +// for (Vertex targetVertex : targetGraph.getVertices()) { +// targetVertexDataCount.computeIfAbsent(targetVertex.toData(), __ -> new AtomicInteger()).incrementAndGet(); +// } +// +// // an infrequency weight is 1 - count in target. Meaning the higher the +// // value, the smaller the count, the less frequent it. +// // Higher Infrequency => more unique is the vertex/label +// Map vertexInfrequencyWeights = new LinkedHashMap<>(); +// Map edgesInfrequencyWeights = new LinkedHashMap<>(); +// for (Vertex vertex : sourceGraph.getVertices()) { +// vertexInfrequencyWeights.put(vertex, 1 - targetVertexDataCount.getOrDefault(vertex.toData(), new AtomicInteger()).get()); +// } +// for (Edge edge : sourceGraph.getEdges()) { +// edgesInfrequencyWeights.put(edge, 1 - targetLabelCount.getOrDefault(edge.getLabel(), new AtomicInteger()).get()); +// } +// +// /** +// * vertices are sorted by increasing frequency/decreasing infrequency/decreasing uniqueness +// * we start with the most unique/least frequent/most infrequent and add incrementally the next most infrequent. +// */ +// +// //TODO: improve this: this is doing to much: we just want the max infrequent vertex, not all sorted +// ArrayList nextCandidates = new ArrayList<>(sourceGraph.getVertices()); +// nextCandidates.sort(Comparator.comparingInt(o -> totalInfrequencyWeightWithAdjacentEdges(sourceGraph, o, vertexInfrequencyWeights, edgesInfrequencyWeights))); +// +// Vertex curVertex = nextCandidates.get(nextCandidates.size() - 1); +// nextCandidates.remove(nextCandidates.size() - 1); +// +// List result = new ArrayList<>(); +// result.add(curVertex); +// while (nextCandidates.size() > 0) { Vertex nextOne = null; +// int curMaxWeight = Integer.MIN_VALUE; +// int index = 0; +// int nextOneIndex = -1; +// +// // which ones of the candidates has the highest infrequency weight relatively to the current result set of vertices +// for (Vertex candidate : nextCandidates) { +// List allAdjacentEdges = sourceGraph.getAllAdjacentEdges(result, candidate); +// int totalWeight = totalInfrequencyWeightWithSomeEdges(candidate, allAdjacentEdges, vertexInfrequencyWeights, edgesInfrequencyWeights); +// if (totalWeight > curMaxWeight) { +// nextOne = candidate; +// nextOneIndex = index; +// curMaxWeight = totalWeight; +// } +// index++; +// } +// result.add(nextOne); +// nextCandidates.remove(nextOneIndex); +// } +// sourceGraph.setVertices(result); +// } +// +// +// private static int totalInfrequencyWeightWithSomeEdges(Vertex vertex, +// List edges, +// Map vertexInfrequencyWeights, +// Map edgesInfrequencyWeights) { +// if (vertex.isBuiltInType()) { +// return Integer.MIN_VALUE + 1; +// } +// if (vertex.isIsolated()) { +// return Integer.MIN_VALUE + 2; +// } +// return vertexInfrequencyWeights.get(vertex) + edges.stream().mapToInt(edgesInfrequencyWeights::get).sum(); +// } +// +// private static int totalInfrequencyWeightWithAdjacentEdges(SchemaGraph sourceGraph, +// Vertex vertex, +// Map vertexInfrequencyWeights, +// Map edgesInfrequencyWeights) { +// if (vertex.isBuiltInType()) { +// return Integer.MIN_VALUE + 1; +// } +// if (vertex.isIsolated()) { +// return Integer.MIN_VALUE + 2; +// } +// List adjacentEdges = sourceGraph.getAdjacentEdges(vertex); +// return vertexInfrequencyWeights.get(vertex) + adjacentEdges.stream().mapToInt(edgesInfrequencyWeights::get).sum(); +// } +// +// private int infrequencyWeightForVertex(Vertex sourceVertex, SchemaGraph targetGraph) { +// int count = 0; +// for (Vertex targetVertex : targetGraph.getVertices()) { +// if (sourceVertex.isEqualTo(targetVertex)) { +// count++; +// } +// } +// return 1 - count; +// } +// +// private int infrequencyWeightForEdge(Edge sourceEdge, SchemaGraph targetGraph) { +// int count = 0; +// for (Edge targetEdge : targetGraph.getEdges()) { +// if (sourceEdge.isEqualTo(targetEdge)) { +// count++; +// } +// } +// return 1 - count; +// } +// +// +// +//} diff --git a/src/main/java/graphql/schema/diffing/Util.java b/src/main/java/graphql/schema/diffing/Util.java new file mode 100644 index 0000000000..38bd0878c1 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/Util.java @@ -0,0 +1,30 @@ +package graphql.schema.diffing; + +import graphql.Internal; + +import java.util.List; +import java.util.Set; + +@Internal +public class Util { + public static void diffNamedList(Set sourceNames, + Set targetNames, + List deleted, + List inserted, + List same) { + for (String sourceName : sourceNames) { + if (targetNames.contains(sourceName)) { + same.add(sourceName); + } else { + deleted.add(sourceName); + } + } + + for (String targetName : targetNames) { + if (!sourceNames.contains(targetName)) { + inserted.add(targetName); + } + } + } + +} diff --git a/src/main/java/graphql/schema/diffing/Vertex.java b/src/main/java/graphql/schema/diffing/Vertex.java new file mode 100644 index 0000000000..4b408a37c1 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/Vertex.java @@ -0,0 +1,135 @@ +package graphql.schema.diffing; + +import graphql.Assert; +import graphql.Internal; + +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +@Internal +public class Vertex { + + private String type; + private Map properties = new LinkedHashMap<>(); + private String debugName; + private boolean isolated; + + + private boolean builtInType; + + public static Vertex newIsolatedNode(String debugName) { + Vertex vertex = new Vertex(SchemaGraph.ISOLATED, debugName); + vertex.isolated = true; + return vertex; + } + + public static Set newIsolatedNodes(int count, String debugName) { + Set result = new LinkedHashSet<>(); + for (int i = 1; i <= count; i++) { + Vertex vertex = new Vertex(SchemaGraph.ISOLATED, debugName + i); + vertex.isolated = true; + result.add(vertex); + } + return result; + } + + public Vertex(String type, String debugName) { + this.type = type; + this.debugName = debugName; + } + + public boolean isIsolated() { + return isolated; + } + + public void add(String propName, Object propValue) { + properties.put(propName, propValue); + } + + public String getType() { + return type; + } + + public T get(String propName) { + return (T) properties.get(propName); + } + + public T getProperty(String name) { + return (T) properties.get(name); + } + + public String getName() { + return (String) Assert.assertNotNull(properties.get("name"), "should not call getName on %s", this); + } + + public Map getProperties() { + return properties; + } + + public String getDebugName() { + return debugName; + } + + public boolean isOfType(String type) { + return this.type.equals(type); + } + + public boolean isEqualTo(Vertex other) { + return other != null && + Objects.equals(this.type, other.type) && + Objects.equals(this.properties, other.properties); + } + + public boolean isBuiltInType() { + return builtInType; + } + + public void setBuiltInType(boolean builtInType) { + this.builtInType = builtInType; + } + + @Override + public String toString() { + return "Vertex{" + + "type='" + type + '\'' + + ", properties=" + properties.toString().replace("\n", "") + + ", debugName='" + debugName + '\'' + + ", builtInType='" + builtInType + '\'' + + '}'; + } + + public VertexData toData() { + return new VertexData(this.type, this.properties); + } + + public static class VertexData { + private final String type; + private final Map properties; + + public VertexData(String type, Map properties) { + this.type = type; + this.properties = properties; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + VertexData that = (VertexData) o; + return Objects.equals(type, that.type) && Objects.equals(properties, that.properties); + } + + @Override + public int hashCode() { + return Objects.hash(type, properties); + } + } + +} diff --git a/src/main/java/graphql/schema/diffing/ana/EditOperationAnalysisResult.java b/src/main/java/graphql/schema/diffing/ana/EditOperationAnalysisResult.java new file mode 100644 index 0000000000..d2eca0f7a4 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/ana/EditOperationAnalysisResult.java @@ -0,0 +1,61 @@ +package graphql.schema.diffing.ana; + +import graphql.Internal; + +import java.util.Map; + +@Internal +public class EditOperationAnalysisResult { + private final Map objectDifferences; + private final Map interfaceDifferences; + private final Map unionDifferences; + private final Map enumDifferences; + private final Map inputObjectDifferences; + private final Map scalarDifferences; + + private final Map directiveDifferences; + + public EditOperationAnalysisResult(Map objectChanges, + Map interfaceDifferences, + Map unionDifferences, + Map enumDifferences, + Map inputObjectDifferences, + Map scalarDifferences, + Map directiveDifferences) { + this.objectDifferences = objectChanges; + this.interfaceDifferences = interfaceDifferences; + this.unionDifferences = unionDifferences; + this.enumDifferences = enumDifferences; + this.inputObjectDifferences = inputObjectDifferences; + this.scalarDifferences = scalarDifferences; + this.directiveDifferences = directiveDifferences; + } + + public Map getObjectDifferences() { + return objectDifferences; + } + + public Map getInterfaceDifferences() { + return interfaceDifferences; + } + + public Map getUnionDifferences() { + return unionDifferences; + } + + public Map getEnumDifferences() { + return enumDifferences; + } + + public Map getInputObjectDifferences() { + return inputObjectDifferences; + } + + public Map getScalarDifferences() { + return scalarDifferences; + } + + public Map getDirectiveDifferences() { + return directiveDifferences; + } +} diff --git a/src/main/java/graphql/schema/diffing/ana/EditOperationAnalyzer.java b/src/main/java/graphql/schema/diffing/ana/EditOperationAnalyzer.java new file mode 100644 index 0000000000..d1da9830d1 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/ana/EditOperationAnalyzer.java @@ -0,0 +1,2716 @@ +package graphql.schema.diffing.ana; + +import graphql.Assert; +import graphql.Internal; +import graphql.VisibleForTesting; +import graphql.schema.GraphQLSchema; +import graphql.schema.diffing.Edge; +import graphql.schema.diffing.EditOperation; +import graphql.schema.diffing.Mapping; +import graphql.schema.diffing.SchemaGraph; +import graphql.schema.diffing.Vertex; +import graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentAddition; +import graphql.schema.idl.ScalarInfo; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Assert.assertTrue; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveAddition; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentRename; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentValueModification; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveDirectiveArgumentLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveEnumLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveEnumValueLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInputObjectFieldLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInputObjectLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceFieldArgumentLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceFieldLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectFieldArgumentLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectFieldLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveScalarLocation; +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveUnionLocation; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveAddition; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentAddition; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentDefaultValueModification; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentRename; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentTypeModification; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveDifference; +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveModification; +import static graphql.schema.diffing.ana.SchemaDifference.EnumAddition; +import static graphql.schema.diffing.ana.SchemaDifference.EnumDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.EnumDifference; +import static graphql.schema.diffing.ana.SchemaDifference.EnumModification; +import static graphql.schema.diffing.ana.SchemaDifference.EnumValueAddition; +import static graphql.schema.diffing.ana.SchemaDifference.EnumValueDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.EnumValueRenamed; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectAddition; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectDifference; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldAddition; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldDefaultValueModification; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldRename; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldTypeModification; +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectModification; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceAddition; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceDifference; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldAddition; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentAddition; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentDefaultValueModification; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentRename; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentTypeModification; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldRename; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldTypeModification; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceInterfaceImplementationAddition; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceInterfaceImplementationDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceModification; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectAddition; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectDifference; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldAddition; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentAddition; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentDefaultValueModification; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentRename; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentTypeModification; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldRename; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldTypeModification; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectInterfaceImplementationAddition; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectInterfaceImplementationDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.ObjectModification; +import static graphql.schema.diffing.ana.SchemaDifference.ScalarAddition; +import static graphql.schema.diffing.ana.SchemaDifference.ScalarDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.ScalarDifference; +import static graphql.schema.diffing.ana.SchemaDifference.ScalarModification; +import static graphql.schema.diffing.ana.SchemaDifference.UnionAddition; +import static graphql.schema.diffing.ana.SchemaDifference.UnionDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.UnionDifference; +import static graphql.schema.diffing.ana.SchemaDifference.UnionMemberAddition; +import static graphql.schema.diffing.ana.SchemaDifference.UnionMemberDeletion; +import static graphql.schema.diffing.ana.SchemaDifference.UnionModification; + +/** + * Higher level GraphQL semantic assigned to + */ +@Internal +public class EditOperationAnalyzer { + + private final GraphQLSchema oldSchema; + private final GraphQLSchema newSchema; + private final SchemaGraph oldSchemaGraph; + private final SchemaGraph newSchemaGraph; + + private final Map objectDifferences = new LinkedHashMap<>(); + private final Map interfaceDifferences = new LinkedHashMap<>(); + private final Map unionDifferences = new LinkedHashMap<>(); + private final Map enumDifferences = new LinkedHashMap<>(); + private final Map inputObjectDifferences = new LinkedHashMap<>(); + private final Map scalarDifferences = new LinkedHashMap<>(); + + private final Map directiveDifferences = new LinkedHashMap<>(); + + public EditOperationAnalyzer(GraphQLSchema oldSchema, + GraphQLSchema newSchema, + SchemaGraph oldSchemaGraph, + SchemaGraph newSchemaGraph + ) { + this.oldSchema = oldSchema; + this.newSchema = newSchema; + this.oldSchemaGraph = oldSchemaGraph; + this.newSchemaGraph = newSchemaGraph; + } + + public EditOperationAnalysisResult analyzeEdits(List editOperations, Mapping mapping) { + editOperations = getTraversalOrder(editOperations); + + handleTypeVertexChanges(editOperations); + + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case CHANGE_VERTEX: + if (editOperation.getTargetVertex().isOfType(SchemaGraph.FIELD)) { + fieldChanged(editOperation); + } else if (editOperation.getTargetVertex().isOfType(SchemaGraph.ARGUMENT)) { + handleArgumentChange(editOperation, mapping); + } else if (editOperation.getTargetVertex().isOfType(SchemaGraph.INPUT_FIELD)) { + handleInputFieldChange(editOperation); + } + break; + case INSERT_VERTEX: + if (editOperation.getTargetVertex().isOfType(SchemaGraph.FIELD)) { + fieldAdded(editOperation); + } else if (editOperation.getTargetVertex().isOfType(SchemaGraph.ARGUMENT)) { + argumentAdded(editOperation); + } else if (editOperation.getTargetVertex().isOfType(SchemaGraph.INPUT_FIELD)) { + inputFieldAdded(editOperation); + } + break; + case DELETE_VERTEX: + if (editOperation.getSourceVertex().isOfType(SchemaGraph.ARGUMENT)) { + argumentDeleted(editOperation); + } else if (editOperation.getSourceVertex().isOfType(SchemaGraph.FIELD)) { + fieldDeleted(editOperation); + } else if (editOperation.getSourceVertex().isOfType(SchemaGraph.INPUT_FIELD)) { + inputFieldDeleted(editOperation); + } + } + } + + handleTypeChanges(editOperations, mapping); + handleImplementsChanges(editOperations, mapping); + handleUnionMemberChanges(editOperations, mapping); + handleEnumValuesChanges(editOperations, mapping); + handleAppliedDirectives(editOperations, mapping); + handleArgumentChanges(editOperations, mapping); + + return new EditOperationAnalysisResult( + objectDifferences, + interfaceDifferences, + unionDifferences, + enumDifferences, + inputObjectDifferences, + scalarDifferences, + directiveDifferences); + } + + private void handleArgumentChanges(List editOperations, Mapping mapping) { + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_EDGE: + if (editOperation.getTargetEdge().getTo().isOfType(SchemaGraph.ARGUMENT)) { + argumentAdded(editOperation); + } + break; + case DELETE_EDGE: + if (editOperation.getSourceEdge().getTo().isOfType(SchemaGraph.ARGUMENT)) { + argumentDeleted(editOperation); + } + break; + } + } + } + + + private void handleAppliedDirectives(List editOperations, Mapping mapping) { + + // first the applied directives itself and then all the applied arguments changes + // for the applied directives, so that we check for example if the applied directive is + // deleted before we check for the applied directive argument changes + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_VERTEX: + if (editOperation.getTargetVertex().isOfType(SchemaGraph.APPLIED_DIRECTIVE)) { + appliedDirectiveAdded(editOperation); + } + break; + case CHANGE_VERTEX: + // TODO: handle applied directive changes + break; + case DELETE_VERTEX: + if (editOperation.getSourceVertex().isOfType(SchemaGraph.APPLIED_DIRECTIVE)) { + appliedDirectiveDeleted(editOperation); + } + break; + + } + } + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_VERTEX: + if (editOperation.getTargetVertex().isOfType(SchemaGraph.APPLIED_ARGUMENT)) { + appliedDirectiveArgumentAdded(editOperation); + } + break; + case CHANGE_VERTEX: + if (editOperation.getTargetVertex().isOfType(SchemaGraph.APPLIED_ARGUMENT)) { + appliedDirectiveArgumentChanged(editOperation); + } + break; + case DELETE_VERTEX: + if (editOperation.getSourceVertex().isOfType(SchemaGraph.APPLIED_ARGUMENT)) { + appliedDirectiveArgumentDeleted(editOperation); + } + break; + + } + } + + } + + private void appliedDirectiveDeleted(EditOperation editOperation) { + Vertex appliedDirective = editOperation.getSourceVertex(); + Vertex container = oldSchemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + if (container.isOfType(SchemaGraph.FIELD)) { + appliedDirectiveDeletedFromField(appliedDirective, container); + } else if (container.isOfType(SchemaGraph.ARGUMENT)) { + appliedDirectiveDeletedFromArgument(appliedDirective, container); + } else if (container.isOfType(SchemaGraph.OBJECT)) { + Vertex object = container; + if (isObjectDeleted(object.getName())) { + return; + } + AppliedDirectiveObjectLocation location = new AppliedDirectiveObjectLocation(object.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = container; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + AppliedDirectiveInterfaceLocation location = new AppliedDirectiveInterfaceLocation(interfaze.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.SCALAR)) { + Vertex scalar = container; + if (isScalarDeleted(scalar.getName())) { + return; + } + AppliedDirectiveScalarLocation location = new AppliedDirectiveScalarLocation(scalar.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getScalarModification(scalar.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.ENUM)) { + Vertex enumVertex = container; + if (isEnumDeleted(enumVertex.getName())) { + return; + } + AppliedDirectiveEnumLocation location = new AppliedDirectiveEnumLocation(enumVertex.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.ENUM_VALUE)) { + Vertex enumValue = container; + Vertex enumVertex = oldSchemaGraph.getEnumForEnumValue(enumValue); + if (isEnumDeleted(enumVertex.getName())) { + return; + } + if (isEnumValueDeletedFromExistingEnum(enumVertex.getName(), enumValue.getName())) { + return; + } + AppliedDirectiveEnumValueLocation location = new AppliedDirectiveEnumValueLocation(enumVertex.getName(), enumValue.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.INPUT_OBJECT)) { + Vertex inputObject = container; + if (isInputObjectDeleted(inputObject.getName())) { + return; + } + AppliedDirectiveInputObjectLocation location = new AppliedDirectiveInputObjectLocation(inputObject.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.INPUT_FIELD)) { + Vertex inputField = container; + Vertex inputObject = oldSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectDeleted(inputObject.getName())) { + return; + } + if (isInputFieldDeletedFromExistingInputObject(inputObject.getName(), inputField.getName())) { + return; + } + AppliedDirectiveInputObjectFieldLocation location = new AppliedDirectiveInputObjectFieldLocation(inputObject.getName(), inputField.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(appliedDirectiveDeletion); + } else if (container.isOfType(SchemaGraph.UNION)) { + Vertex union = container; + if (isUnionDeleted(union.getName())) { + return; + } + AppliedDirectiveUnionLocation location = new AppliedDirectiveUnionLocation(union.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getUnionModification(union.getName()).getDetails().add(appliedDirectiveDeletion); + } + } + + private void appliedDirectiveArgumentDeleted(EditOperation editOperation) { + Vertex deletedArgument = editOperation.getSourceVertex(); + Vertex appliedDirective = oldSchemaGraph.getAppliedDirectiveForAppliedArgument(deletedArgument); + Vertex container = oldSchemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + + if (container.isOfType(SchemaGraph.ARGUMENT)) { + Vertex argument = container; + Vertex fieldOrDirective = oldSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex fieldsContainer = oldSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainer.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainer; + if (isObjectDeleted(object.getName())) { + return; + } + if (isFieldDeletedFromExistingObject(object.getName(), field.getName())) { + return; + } + if (isArgumentDeletedFromExistingObjectField(object.getName(), field.getName(), argument.getName())) { + return; + } + if (isAppliedDirectiveDeleted(object, appliedDirective.getName())) { + return; + } + AppliedDirectiveObjectFieldArgumentLocation location = new AppliedDirectiveObjectFieldArgumentLocation(object.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (fieldsContainer.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = fieldsContainer; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isArgumentDeletedFromExistingInterfaceField(interfaze.getName(), field.getName(), argument.getName())) { + return; + } + if (isAppliedDirectiveDeleted(interfaze, appliedDirective.getName())) { + return; + } + AppliedDirectiveInterfaceFieldArgumentLocation location = new AppliedDirectiveInterfaceFieldArgumentLocation(interfaze.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } + } else if (fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)) { + Vertex directive = fieldOrDirective; + if (isDirectiveDeleted(directive.getName())) { + return; + } + if (isArgumentDeletedFromExistingDirective(directive.getName(), argument.getName())) { + return; + } + if (isAppliedDirectiveDeleted(fieldOrDirective, appliedDirective.getName())) { + return; + } + AppliedDirectiveDirectiveArgumentLocation location = new AppliedDirectiveDirectiveArgumentLocation(directive.getName(), argument.getName(), appliedDirective.getName()); + getDirectiveModification(directive.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } + } else if (container.isOfType(SchemaGraph.FIELD)) { + Vertex field = container; + Vertex interfaceOrObjective = oldSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + if (isObjectDeleted(object.getName())) { + return; + } + if (isFieldDeletedFromExistingObject(object.getName(), field.getName())) { + return; + } + if (isAppliedDirectiveDeleted(object, appliedDirective.getName())) { + return; + } + + AppliedDirectiveObjectFieldLocation location = new AppliedDirectiveObjectFieldLocation(object.getName(), field.getName(), appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else { + assertTrue(interfaceOrObjective.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = interfaceOrObjective; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + if (isFieldDeletedFromExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isAppliedDirectiveDeleted(interfaze, appliedDirective.getName())) { + return; + } + + AppliedDirectiveInterfaceFieldLocation location = new AppliedDirectiveInterfaceFieldLocation(interfaze.getName(), field.getName(), appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } + } else if (container.isOfType(SchemaGraph.SCALAR)) { + Vertex scalar = container; + if (isScalarDeleted(scalar.getName())) { + return; + } + if (isAppliedDirectiveDeleted(scalar, appliedDirective.getName())) { + return; + } + + AppliedDirectiveScalarLocation location = new AppliedDirectiveScalarLocation(scalar.getName(), appliedDirective.getName()); + getScalarModification(scalar.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.ENUM)) { + Vertex enumVertex = container; + if (isEnumDeleted(enumVertex.getName())) { + return; + } + if (isAppliedDirectiveDeleted(enumVertex, appliedDirective.getName())) { + return; + } + AppliedDirectiveEnumLocation location = new AppliedDirectiveEnumLocation(enumVertex.getName(), appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.ENUM_VALUE)) { + Vertex enumValue = container; + Vertex enumVertex = oldSchemaGraph.getEnumForEnumValue(enumValue); + if (isEnumDeleted(enumVertex.getName())) { + return; + } + if (isNewEnumValueForExistingEnum(enumVertex.getName(), enumValue.getName())) { + return; + } + AppliedDirectiveEnumValueLocation location = new AppliedDirectiveEnumValueLocation(enumVertex.getName(), enumValue.getName(), appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.UNION)) { + Vertex union = container; + if (isUnionDeleted(union.getName())) { + return; + } + if (isAppliedDirectiveDeleted(union, appliedDirective.getName())) { + return; + } + + AppliedDirectiveUnionLocation location = new AppliedDirectiveUnionLocation(union.getName(), appliedDirective.getName()); + getUnionModification(union.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.OBJECT)) { + Vertex object = container; + if (isObjectDeleted(object.getName())) { + return; + } + if (isAppliedDirectiveDeleted(object, appliedDirective.getName())) { + return; + } + + AppliedDirectiveObjectLocation location = new AppliedDirectiveObjectLocation(object.getName(), appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = container; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + if (isAppliedDirectiveDeleted(interfaze, appliedDirective.getName())) { + return; + } + + AppliedDirectiveInterfaceLocation location = new AppliedDirectiveInterfaceLocation(interfaze.getName(), appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.INPUT_OBJECT)) { + Vertex inputObject = container; + if (isInputObjectDeleted(inputObject.getName())) { + return; + } + if (isAppliedDirectiveDeleted(inputObject, appliedDirective.getName())) { + return; + } + AppliedDirectiveInputObjectLocation location = new AppliedDirectiveInputObjectLocation(inputObject.getName(), appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else if (container.isOfType(SchemaGraph.INPUT_FIELD)) { + Vertex inputField = container; + Vertex inputObject = oldSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectDeleted(inputObject.getName())) { + return; + } + if (isNewInputFieldExistingInputObject(inputObject.getName(), inputField.getName())) { + return; + } + if (isAppliedDirectiveDeleted(inputField, appliedDirective.getName())) { + return; + } + AppliedDirectiveInputObjectFieldLocation location = new AppliedDirectiveInputObjectFieldLocation(inputObject.getName(), inputField.getName(), appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(new AppliedDirectiveArgumentDeletion(location, deletedArgument.getName())); + } else { + assertShouldNeverHappen("Unexpected container " + container); + } + } + + private void appliedDirectiveArgumentAdded(EditOperation editOperation) { + Vertex addedArgument = editOperation.getTargetVertex(); + Vertex appliedDirective = newSchemaGraph.getAppliedDirectiveForAppliedArgument(addedArgument); + Vertex container = newSchemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + + if (container.isOfType(SchemaGraph.ARGUMENT)) { + Vertex argument = container; + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex fieldsContainer = newSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainer.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainer; + if (isObjectAdded(object.getName())) { + return; + } + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + if (isArgumentNewForExistingObjectField(object.getName(), field.getName(), argument.getName())) { + return; + } + if (isAppliedDirectiveAdded(object, appliedDirective.getName())) { + return; + } + AppliedDirectiveObjectFieldArgumentLocation location = new AppliedDirectiveObjectFieldArgumentLocation(object.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (fieldsContainer.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = fieldsContainer; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isArgumentNewForExistingInterfaceField(interfaze.getName(), field.getName(), argument.getName())) { + return; + } + + if (isAppliedDirectiveAdded(interfaze, appliedDirective.getName())) { + return; + } + AppliedDirectiveInterfaceFieldArgumentLocation location = new AppliedDirectiveInterfaceFieldArgumentLocation(interfaze.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } + } else if (fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)) { + Vertex directive = fieldOrDirective; + if (isAppliedDirectiveAdded(directive, appliedDirective.getName())) { + return; + } + AppliedDirectiveDirectiveArgumentLocation location = new AppliedDirectiveDirectiveArgumentLocation(directive.getName(), argument.getName(), appliedDirective.getName()); + getDirectiveModification(directive.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } + } else if (container.isOfType(SchemaGraph.FIELD)) { + Vertex field = container; + Vertex interfaceOrObjective = newSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + if (isObjectAdded(object.getName())) { + return; + } + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + + AppliedDirectiveObjectFieldLocation location = new AppliedDirectiveObjectFieldLocation(object.getName(), field.getName(), appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (interfaceOrObjective.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = interfaceOrObjective; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + + AppliedDirectiveInterfaceFieldLocation location = new AppliedDirectiveInterfaceFieldLocation(interfaze.getName(), field.getName(), appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else { + assertShouldNeverHappen("Unexpected field container " + interfaceOrObjective); + } + } else if (container.isOfType(SchemaGraph.SCALAR)) { + Vertex scalar = container; + if (isScalarAdded(scalar.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveScalarLocation location = new AppliedDirectiveScalarLocation(scalar.getName(), appliedDirective.getName()); + getScalarModification(scalar.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.ENUM)) { + Vertex enumVertex = container; + if (isEnumAdded(enumVertex.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveEnumLocation location = new AppliedDirectiveEnumLocation(enumVertex.getName(), appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.ENUM_VALUE)) { + Vertex enumValue = container; + Vertex enumVertex = newSchemaGraph.getEnumForEnumValue(enumValue); + if (isEnumAdded(enumVertex.getName())) { + return; + } + if (isNewEnumValueForExistingEnum(enumVertex.getName(), enumValue.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveEnumValueLocation location = new AppliedDirectiveEnumValueLocation(enumVertex.getName(), enumValue.getName(), appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.UNION)) { + Vertex union = container; + if (isUnionAdded(union.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveUnionLocation location = new AppliedDirectiveUnionLocation(union.getName(), appliedDirective.getName()); + getUnionModification(union.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = container; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveInterfaceLocation location = new AppliedDirectiveInterfaceLocation(interfaze.getName(), appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.OBJECT)) { + Vertex interfaze = container; + if (isObjectAdded(interfaze.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveObjectLocation location = new AppliedDirectiveObjectLocation(interfaze.getName(), appliedDirective.getName()); + getObjectModification(interfaze.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.INPUT_OBJECT)) { + Vertex inputObject = container; + if (isInputObjectAdded(inputObject.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveInputObjectLocation location = new AppliedDirectiveInputObjectLocation(inputObject.getName(), appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else if (container.isOfType(SchemaGraph.INPUT_FIELD)) { + Vertex inputField = container; + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectAdded(inputObject.getName())) { + return; + } + if (isNewInputFieldExistingInputObject(inputObject.getName(), inputField.getName())) { + return; + } + if (isAppliedDirectiveAdded(container, appliedDirective.getName())) { + return; + } + AppliedDirectiveInputObjectFieldLocation location = new AppliedDirectiveInputObjectFieldLocation(inputObject.getName(), inputField.getName(), appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(new AppliedDirectiveArgumentAddition(location, addedArgument.getName())); + } else { + assertShouldNeverHappen("Unexpected applied argument container " + container); + } + } + + + private void appliedDirectiveArgumentChanged(EditOperation editOperation) { + Vertex appliedArgument = editOperation.getTargetVertex(); + String oldArgumentName = editOperation.getSourceVertex().getName(); + String newArgumentName = editOperation.getTargetVertex().getName(); + boolean nameChanged = !oldArgumentName.equals(newArgumentName); + + String oldValue = editOperation.getSourceVertex().get("value"); + String newValue = editOperation.getTargetVertex().get("value"); + boolean valueChanged = !oldValue.equals(newValue); + + + Vertex appliedDirective = newSchemaGraph.getAppliedDirectiveForAppliedArgument(appliedArgument); + Vertex container = newSchemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + if (container.isOfType(SchemaGraph.FIELD)) { + Vertex field = container; + Vertex interfaceOrObjective = newSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + AppliedDirectiveObjectFieldLocation location = new AppliedDirectiveObjectFieldLocation(object.getName(), field.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getObjectModification(object.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + AppliedDirectiveArgumentRename argumentRename = new AppliedDirectiveArgumentRename(location, oldArgumentName, newArgumentName); + getObjectModification(object.getName()).getDetails().add(argumentRename); + } + } else if (interfaceOrObjective.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = interfaceOrObjective; + AppliedDirectiveInterfaceFieldLocation location = new AppliedDirectiveInterfaceFieldLocation(interfaze.getName(), field.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getInterfaceModification(interfaze.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + } + } else if (container.isOfType(SchemaGraph.ARGUMENT)) { + Vertex argument = container; + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex fieldsContainer = newSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainer.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainer; + AppliedDirectiveObjectFieldArgumentLocation location = new AppliedDirectiveObjectFieldArgumentLocation(object.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getObjectModification(object.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + } else if (fieldsContainer.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = fieldsContainer; + AppliedDirectiveInterfaceFieldArgumentLocation location = new AppliedDirectiveInterfaceFieldArgumentLocation(interfaze.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getInterfaceModification(interfaze.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + } + } else if (fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)) { + Vertex directive = fieldOrDirective; + AppliedDirectiveDirectiveArgumentLocation location = new AppliedDirectiveDirectiveArgumentLocation(directive.getName(), argument.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getDirectiveModification(directive.getName()).getDetails().add(argumentValueModification); + } + + } + } else if (container.isOfType(SchemaGraph.INPUT_FIELD)) { + Vertex inputField = container; + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + AppliedDirectiveInputObjectFieldLocation location = new AppliedDirectiveInputObjectFieldLocation(inputObject.getName(), inputField.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getInputObjectModification(inputObject.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { +// AppliedDirectiveArgumentRename argumentRename = new AppliedDirectiveArgumentRename(location, oldArgumentName, newArgumentName); +// getInputObjectModification(inputObject.getName()).getDetails().add(argumentRename); + } + } else if (container.isOfType(SchemaGraph.OBJECT)) { + Vertex object = container; + AppliedDirectiveObjectLocation location = new AppliedDirectiveObjectLocation(object.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getObjectModification(object.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + } + } else if (container.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = container; + AppliedDirectiveInterfaceLocation location = new AppliedDirectiveInterfaceLocation(interfaze.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getInterfaceModification(interfaze.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + + } else if (container.isOfType(SchemaGraph.INPUT_OBJECT)) { + Vertex inputObject = container; + AppliedDirectiveInputObjectLocation location = new AppliedDirectiveInputObjectLocation(inputObject.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getInputObjectModification(inputObject.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + + } else if (container.isOfType(SchemaGraph.ENUM)) { + Vertex enumVertex = container; + AppliedDirectiveEnumLocation location = new AppliedDirectiveEnumLocation(enumVertex.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getEnumModification(enumVertex.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + } else if (container.isOfType(SchemaGraph.ENUM_VALUE)) { + Vertex enumValue = container; + Vertex enumVertex = newSchemaGraph.getEnumForEnumValue(enumValue); + AppliedDirectiveEnumValueLocation location = new AppliedDirectiveEnumValueLocation(enumVertex.getName(), enumValue.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getEnumModification(enumVertex.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + + } else if (container.isOfType(SchemaGraph.UNION)) { + Vertex union = container; + AppliedDirectiveUnionLocation location = new AppliedDirectiveUnionLocation(union.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getUnionModification(union.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + } else if (container.isOfType(SchemaGraph.SCALAR)) { + Vertex scalar = container; + AppliedDirectiveScalarLocation location = new AppliedDirectiveScalarLocation(scalar.getName(), appliedDirective.getName()); + if (valueChanged) { + AppliedDirectiveArgumentValueModification argumentValueModification = new AppliedDirectiveArgumentValueModification(location, newArgumentName, oldValue, newValue); + getScalarModification(scalar.getName()).getDetails().add(argumentValueModification); + } + if (nameChanged) { + + } + } else { + assertShouldNeverHappen("Unexpected applied argument container " + container); + } + } + + private void appliedDirectiveAdded(EditOperation editOperation) { + Vertex appliedDirective = editOperation.getTargetVertex(); + Vertex container = newSchemaGraph.getAppliedDirectiveContainerForAppliedDirective(appliedDirective); + if (container.isOfType(SchemaGraph.FIELD)) { + appliedDirectiveAddedToField(appliedDirective, container); + } else if (container.isOfType(SchemaGraph.ARGUMENT)) { + appliedDirectiveAddedToArgument(appliedDirective, container); + + } else if (container.isOfType(SchemaGraph.OBJECT)) { + Vertex object = container; + if (isObjectAdded(object.getName())) { + return; + } + AppliedDirectiveObjectLocation location = new AppliedDirectiveObjectLocation(object.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.INTERFACE)) { + Vertex interfaze = container; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + AppliedDirectiveInterfaceLocation location = new AppliedDirectiveInterfaceLocation(interfaze.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.SCALAR)) { + Vertex scalar = container; + if (isScalarAdded(scalar.getName())) { + return; + } + AppliedDirectiveScalarLocation location = new AppliedDirectiveScalarLocation(scalar.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getScalarModification(scalar.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.ENUM)) { + Vertex enumVertex = container; + if (isEnumAdded(enumVertex.getName())) { + return; + } + AppliedDirectiveEnumLocation location = new AppliedDirectiveEnumLocation(enumVertex.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.ENUM_VALUE)) { + Vertex enumValue = container; + Vertex enumVertex = newSchemaGraph.getEnumForEnumValue(enumValue); + if (isEnumAdded(enumVertex.getName())) { + return; + } + if (isNewEnumValueForExistingEnum(enumVertex.getName(), enumValue.getName())) { + return; + } + AppliedDirectiveEnumValueLocation location = new AppliedDirectiveEnumValueLocation(enumVertex.getName(), enumValue.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getEnumModification(enumVertex.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.INPUT_OBJECT)) { + Vertex inputObject = container; + if (isInputObjectAdded(inputObject.getName())) { + return; + } + AppliedDirectiveInputObjectLocation location = new AppliedDirectiveInputObjectLocation(inputObject.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.INPUT_FIELD)) { + Vertex inputField = container; + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectAdded(inputObject.getName())) { + return; + } + if (isNewInputFieldExistingInputObject(inputObject.getName(), inputField.getName())) { + return; + } + AppliedDirectiveInputObjectFieldLocation location = new AppliedDirectiveInputObjectFieldLocation(inputObject.getName(), inputField.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getInputObjectModification(inputObject.getName()).getDetails().add(appliedDirectiveAddition); + } else if (container.isOfType(SchemaGraph.UNION)) { + Vertex union = container; + if (isUnionAdded(union.getName())) { + return; + } + AppliedDirectiveUnionLocation location = new AppliedDirectiveUnionLocation(union.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getUnionModification(union.getName()).getDetails().add(appliedDirectiveAddition); + } + } + + private void appliedDirectiveDeletedFromField(Vertex appliedDirective, Vertex container) { + Vertex field = container; + Vertex interfaceOrObjective = oldSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + + if (isObjectDeleted(object.getName())) { + return; + } + if (isFieldDeletedFromExistingObject(object.getName(), field.getName())) { + return; + } + AppliedDirectiveObjectFieldLocation location = new AppliedDirectiveObjectFieldLocation(object.getName(), field.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(appliedDirectiveDeletion); + } + } + + private void appliedDirectiveAddedToField(Vertex appliedDirective, Vertex container) { + Vertex field = container; + Vertex interfaceOrObjective = newSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + + if (isObjectAdded(object.getName())) { + return; + } + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + AppliedDirectiveObjectFieldLocation location = new AppliedDirectiveObjectFieldLocation(object.getName(), field.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(appliedDirectiveAddition); + } + } + + private void appliedDirectiveDeletedFromArgument(Vertex appliedDirective, Vertex container) { + Vertex argument = container; + Vertex fieldOrDirective = oldSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex interfaceOrObjective = oldSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + if (isObjectDeleted(object.getName())) { + return; + } + if (isFieldDeletedFromExistingObject(object.getName(), field.getName())) { + return; + } + if (isArgumentDeletedFromExistingObjectField(object.getName(), field.getName(), argument.getName())) { + return; + } + AppliedDirectiveObjectFieldArgumentLocation location = new AppliedDirectiveObjectFieldArgumentLocation(object.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(appliedDirectiveDeletion); + } else { + assertTrue(interfaceOrObjective.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = interfaceOrObjective; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + if (isFieldDeletedFromExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isArgumentDeletedFromExistingInterfaceField(interfaze.getName(), field.getName(), argument.getName())) { + return; + } + AppliedDirectiveInterfaceFieldArgumentLocation location = new AppliedDirectiveInterfaceFieldArgumentLocation(interfaze.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(appliedDirectiveDeletion); + } + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)); + Vertex directive = fieldOrDirective; + if (isDirectiveDeleted(directive.getName())) { + return; + } + if (isArgumentDeletedFromExistingDirective(directive.getName(), argument.getName())) { + return; + } + AppliedDirectiveDirectiveArgumentLocation location = new AppliedDirectiveDirectiveArgumentLocation(directive.getName(), argument.getName(), appliedDirective.getName()); + AppliedDirectiveDeletion appliedDirectiveDeletion = new AppliedDirectiveDeletion(location, appliedDirective.getName()); + getDirectiveModification(directive.getName()).getDetails().add(appliedDirectiveDeletion); + } + } + + private void appliedDirectiveAddedToArgument(Vertex appliedDirective, Vertex container) { + Vertex argument = container; + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex interfaceOrObjective = newSchemaGraph.getFieldsContainerForField(field); + if (interfaceOrObjective.isOfType(SchemaGraph.OBJECT)) { + Vertex object = interfaceOrObjective; + if (isObjectAdded(object.getName())) { + return; + } + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + if (isArgumentNewForExistingObjectField(object.getName(), field.getName(), argument.getName())) { + return; + } + AppliedDirectiveObjectFieldArgumentLocation location = new AppliedDirectiveObjectFieldArgumentLocation(object.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getObjectModification(object.getName()).getDetails().add(appliedDirectiveAddition); + } else { + assertTrue(interfaceOrObjective.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = interfaceOrObjective; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isArgumentNewForExistingInterfaceField(interfaze.getName(), field.getName(), argument.getName())) { + return; + } + AppliedDirectiveInterfaceFieldArgumentLocation location = new AppliedDirectiveInterfaceFieldArgumentLocation(interfaze.getName(), field.getName(), argument.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getInterfaceModification(interfaze.getName()).getDetails().add(appliedDirectiveAddition); + } + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)); + Vertex directive = fieldOrDirective; + if (isDirectiveAdded(directive.getName())) { + return; + } + if (isArgumentNewForExistingDirective(directive.getName(), argument.getName())) { + return; + } + AppliedDirectiveDirectiveArgumentLocation location = new AppliedDirectiveDirectiveArgumentLocation(directive.getName(), argument.getName(), appliedDirective.getName()); + AppliedDirectiveAddition appliedDirectiveAddition = new AppliedDirectiveAddition(location, appliedDirective.getName()); + getDirectiveModification(directive.getName()).getDetails().add(appliedDirectiveAddition); + } + } + + private void handleTypeChanges(List editOperations, Mapping mapping) { + for (EditOperation editOperation : editOperations) { + Edge newEdge = editOperation.getTargetEdge(); + switch (editOperation.getOperation()) { + case INSERT_EDGE: + if (newEdge.getLabel().startsWith("type=")) { + typeEdgeInserted(editOperation, editOperations, mapping); + } + break; + case CHANGE_EDGE: + if (newEdge.getLabel().startsWith("type=")) { + typeEdgeChanged(editOperation, mapping); + } + break; + } + } + } + + private void handleUnionMemberChanges(List editOperations, Mapping mapping) { + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_EDGE: + Edge newEdge = editOperation.getTargetEdge(); + if (newEdge.getFrom().isOfType(SchemaGraph.UNION)) { + handleUnionMemberAdded(editOperation); + } + break; + case DELETE_EDGE: + Edge oldEdge = editOperation.getSourceEdge(); + if (oldEdge.getFrom().isOfType(SchemaGraph.UNION) && !oldEdge.getTo().isOfType(SchemaGraph.APPLIED_DIRECTIVE)) { + handleUnionMemberDeleted(editOperation); + } + break; + } + } + } + + private void handleEnumValuesChanges(List editOperations, Mapping mapping) { + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_EDGE: + Edge newEdge = editOperation.getTargetEdge(); + if (newEdge.getFrom().isOfType(SchemaGraph.ENUM) && newEdge.getTo().isOfType(SchemaGraph.ENUM_VALUE)) { + handleEnumValueAdded(editOperation); + } + break; + case DELETE_EDGE: + Edge oldEdge = editOperation.getSourceEdge(); + if (oldEdge.getFrom().isOfType(SchemaGraph.ENUM) && oldEdge.getTo().isOfType(SchemaGraph.ENUM_VALUE)) { + handleEnumValueDeleted(editOperation); + } + break; + case CHANGE_VERTEX: + if (editOperation.getSourceVertex().isOfType(SchemaGraph.ENUM_VALUE) && editOperation.getTargetVertex().isOfType(SchemaGraph.ENUM_VALUE)) { + handleEnumValueChanged(editOperation); + } + break; + } + } + } + + private void handleInputFieldChange(EditOperation editOperation) { + Vertex inputField = editOperation.getTargetVertex(); + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + + String oldName = editOperation.getSourceVertex().getName(); + String newName = inputField.getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + if (isInputObjectAdded(inputObject.getName())) { + return; + } + + getInputObjectModification(inputObject.getName()).getDetails().add(new InputObjectFieldRename(oldName, newName)); + } + + private void handleArgumentChange(EditOperation editOperation, Mapping mapping) { + Vertex oldArgument = editOperation.getSourceVertex(); + Vertex argument = editOperation.getTargetVertex(); + + String oldName = oldArgument.getName(); + String newName = argument.getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + if (!doesArgumentChangeMakeSense(oldArgument, argument, mapping)) { + return; + } + + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)) { + Vertex directive = fieldOrDirective; + DirectiveModification directiveModification = getDirectiveModification(directive.getName()); + directiveModification.getDetails().add(new DirectiveArgumentRename(oldName, newName)); + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.FIELD)); + Vertex field = fieldOrDirective; + String fieldName = field.getName(); + Vertex fieldsContainerForField = newSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainerForField.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainerForField; + ObjectModification objectModification = getObjectModification(object.getName()); + objectModification.getDetails().add(new ObjectFieldArgumentRename(fieldName, oldName, newName)); + } else { + assertTrue(fieldsContainerForField.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = fieldsContainerForField; + InterfaceModification interfaceModification = getInterfaceModification(interfaze.getName()); + interfaceModification.getDetails().add(new InterfaceFieldArgumentRename(fieldName, oldName, newName)); + } + } + } + + private void handleImplementsChanges(List editOperations, Mapping mapping) { + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_EDGE: + Edge newEdge = editOperation.getTargetEdge(); + if (newEdge.getLabel().startsWith("implements ")) { + newInterfaceAddedToInterfaceOrObject(newEdge); + } + break; + case DELETE_EDGE: + Edge oldEdge = editOperation.getSourceEdge(); + if (oldEdge.getLabel().startsWith("implements ")) { + interfaceImplementationDeleted(oldEdge); + } + break; + } + } + } + + private void handleUnionMemberAdded(EditOperation editOperation) { + Edge newEdge = editOperation.getTargetEdge(); + Vertex union = newEdge.getFrom(); + if (isUnionAdded(union.getName())) { + return; + } + Vertex newMemberObject = newEdge.getTo(); + UnionModification unionModification = getUnionModification(union.getName()); + unionModification.getDetails().add(new UnionMemberAddition(newMemberObject.getName())); + } + + private void handleUnionMemberDeleted(EditOperation editOperation) { + Edge deletedEdge = editOperation.getSourceEdge(); + Vertex union = deletedEdge.getFrom(); + if (isUnionDeleted(union.getName())) { + return; + } + Vertex memberObject = deletedEdge.getTo(); + UnionModification unionModification = getUnionModification(union.getName()); + unionModification.getDetails().add(new UnionMemberDeletion(memberObject.getName())); + } + + private void handleEnumValueAdded(EditOperation editOperation) { + Edge newEdge = editOperation.getTargetEdge(); + Vertex enumVertex = newEdge.getFrom(); + if (isEnumAdded(enumVertex.getName())) { + return; + } + Vertex newValue = newEdge.getTo(); + EnumModification enumModification = getEnumModification(enumVertex.getName()); + enumModification.getDetails().add(new EnumValueAddition(newValue.getName())); + } + + private void handleEnumValueDeleted(EditOperation editOperation) { + Edge deletedEdge = editOperation.getSourceEdge(); + Vertex enumVertex = deletedEdge.getFrom(); + if (isEnumDeleted(enumVertex.getName())) { + return; + } + Vertex value = deletedEdge.getTo(); + EnumModification enumModification = getEnumModification(enumVertex.getName()); + enumModification.getDetails().add(new EnumValueDeletion(value.getName())); + } + + private void handleEnumValueChanged(EditOperation editOperation) { + Vertex enumVertex = newSchemaGraph.getEnumForEnumValue(editOperation.getTargetVertex()); + EnumModification enumModification = getEnumModification(enumVertex.getName()); + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + enumModification.getDetails().add(new EnumValueRenamed(oldName, newName)); + } + + private void fieldChanged(EditOperation editOperation) { + Vertex field = editOperation.getTargetVertex(); + Vertex fieldsContainerForField = newSchemaGraph.getFieldsContainerForField(field); + + String oldName = editOperation.getSourceVertex().getName(); + String newName = field.getName(); + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + if (fieldsContainerForField.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainerForField; + + if (isObjectAdded(object.getName())) { + return; + } + + ObjectModification objectModification = getObjectModification(object.getName()); + objectModification.getDetails().add(new ObjectFieldRename(oldName, newName)); + } else { + assertTrue(fieldsContainerForField.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = fieldsContainerForField; + + if (isInterfaceAdded(interfaze.getName())) { + return; + } + + InterfaceModification interfaceModification = getInterfaceModification(interfaze.getName()); + interfaceModification.getDetails().add(new InterfaceFieldRename(oldName, newName)); + } + } + + private void inputFieldAdded(EditOperation editOperation) { + Vertex inputField = editOperation.getTargetVertex(); + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectAdded(inputObject.getName())) { + return; + } + InputObjectModification modification = getInputObjectModification(inputObject.getName()); + modification.getDetails().add(new InputObjectFieldAddition(inputField.getName())); + } + + private void fieldAdded(EditOperation editOperation) { + Vertex field = editOperation.getTargetVertex(); + Vertex fieldsContainerForField = newSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainerForField.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainerForField; + if (isObjectAdded(object.getName())) { + return; + } + ObjectModification objectModification = getObjectModification(object.getName()); + String name = field.getName(); + objectModification.getDetails().add(new ObjectFieldAddition(name)); + } else { + assertTrue(fieldsContainerForField.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = fieldsContainerForField; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + InterfaceModification interfaceModification = getInterfaceModification(interfaze.getName()); + String name = field.getName(); + interfaceModification.getDetails().add(new InterfaceFieldAddition(name)); + } + } + + private void inputFieldDeleted(EditOperation editOperation) { + Vertex inputField = editOperation.getSourceVertex(); + Vertex inputObject = oldSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectDeleted(inputObject.getName())) { + return; + } + getInputObjectModification(inputObject.getName()).getDetails().add(new InputObjectFieldDeletion(inputField.getName())); + } + + private void fieldDeleted(EditOperation editOperation) { + Vertex deletedField = editOperation.getSourceVertex(); + Vertex fieldsContainerForField = oldSchemaGraph.getFieldsContainerForField(deletedField); + if (fieldsContainerForField.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainerForField; + if (isObjectDeleted(object.getName())) { + return; + } + ObjectModification objectModification = getObjectModification(object.getName()); + String name = deletedField.getName(); + objectModification.getDetails().add(new ObjectFieldDeletion(name)); + } else { + assertTrue(fieldsContainerForField.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = fieldsContainerForField; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + InterfaceModification interfaceModification = getInterfaceModification(interfaze.getName()); + String name = deletedField.getName(); + interfaceModification.getDetails().add(new InterfaceFieldDeletion(name)); + } + } + + + private void handleTypeVertexChanges(List editOperations) { + for (EditOperation editOperation : editOperations) { + switch (editOperation.getOperation()) { + case INSERT_VERTEX: + insertedTypeVertex(editOperation); + break; + case DELETE_VERTEX: + deletedTypeVertex(editOperation); + break; + case CHANGE_VERTEX: + changedTypeVertex(editOperation); + break; + } + } + } + + private void insertedTypeVertex(EditOperation editOperation) { + switch (editOperation.getTargetVertex().getType()) { + case SchemaGraph.OBJECT: + addedObject(editOperation); + break; + case SchemaGraph.INTERFACE: + addedInterface(editOperation); + break; + case SchemaGraph.UNION: + addedUnion(editOperation); + break; + case SchemaGraph.INPUT_OBJECT: + addedInputObject(editOperation); + break; + case SchemaGraph.ENUM: + addedEnum(editOperation); + break; + case SchemaGraph.SCALAR: + addedScalar(editOperation); + break; + case SchemaGraph.DIRECTIVE: + addedDirective(editOperation); + break; + } + + } + + private void deletedTypeVertex(EditOperation editOperation) { + switch (editOperation.getSourceVertex().getType()) { + case SchemaGraph.OBJECT: + removedObject(editOperation); + break; + case SchemaGraph.INTERFACE: + removedInterface(editOperation); + break; + case SchemaGraph.UNION: + removedUnion(editOperation); + break; + case SchemaGraph.INPUT_OBJECT: + removedInputObject(editOperation); + break; + case SchemaGraph.ENUM: + removedEnum(editOperation); + break; + case SchemaGraph.SCALAR: + deletedScalar(editOperation); + break; + case SchemaGraph.DIRECTIVE: + deletedDirective(editOperation); + break; + } + } + + private void changedTypeVertex(EditOperation editOperation) { + switch (editOperation.getTargetVertex().getType()) { + case SchemaGraph.OBJECT: + changedObject(editOperation); + break; + case SchemaGraph.INTERFACE: + changedInterface(editOperation); + break; + case SchemaGraph.UNION: + changedUnion(editOperation); + break; + case SchemaGraph.INPUT_OBJECT: + changedInputObject(editOperation); + break; + case SchemaGraph.ENUM: + changedEnum(editOperation); + break; + case SchemaGraph.SCALAR: + changedScalar(editOperation); + break; + case SchemaGraph.DIRECTIVE: + changedDirective(editOperation); + break; + } + } + + + private void typeEdgeInserted(EditOperation editOperation, List editOperations, Mapping + mapping) { + Edge newEdge = editOperation.getTargetEdge(); + Vertex from = newEdge.getFrom(); + if (from.isOfType(SchemaGraph.FIELD)) { + typeEdgeInsertedForField(editOperation, editOperations, mapping); + } else if (from.isOfType(SchemaGraph.ARGUMENT)) { + typeEdgeInsertedForArgument(editOperation, editOperations, mapping); + } else if (from.isOfType(SchemaGraph.INPUT_FIELD)) { + typeEdgeInsertedForInputField(editOperation, editOperations, mapping); + } + + } + + private void typeEdgeInsertedForInputField(EditOperation editOperation, + List editOperations, + Mapping mapping) { + Vertex inputField = editOperation.getTargetEdge().getFrom(); + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + if (isInputObjectAdded(inputObject.getName())) { + return; + } + if (isNewInputFieldExistingInputObject(inputObject.getName(), inputField.getName())) { + return; + } + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + EditOperation deletedTypeEdgeOperation = findDeletedEdge(inputField, editOperations, mapping, this::isTypeEdge); + String oldType = getTypeFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + InputObjectFieldTypeModification inputObjectFieldTypeModification = new InputObjectFieldTypeModification(inputField.getName(), oldType, newType); + getInputObjectModification(inputObject.getName()).getDetails().add(inputObjectFieldTypeModification); + } + + private void typeEdgeInsertedForArgument(EditOperation editOperation, + List editOperations, + Mapping mapping) { + Vertex argument = editOperation.getTargetEdge().getFrom(); + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex objectOrInterface = newSchemaGraph.getFieldsContainerForField(field); + + if (objectOrInterface.isOfType(SchemaGraph.OBJECT)) { + Vertex object = objectOrInterface; + + // if the whole object is new we are done + if (isObjectAdded(object.getName())) { + return; + } + // if the field is new, we are done too + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + // if the argument is new, we are done too + if (isArgumentNewForExistingObjectField(object.getName(), field.getName(), argument.getName())) { + return; + } + + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + // this means we have an existing object changed its type + // and there must be a deleted edge with the old type information + EditOperation deletedTypeEdgeOperation = findDeletedEdge(argument, editOperations, mapping, this::isTypeEdge); + String oldType = getTypeFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + ObjectFieldArgumentTypeModification objectFieldArgumentTypeModification = new ObjectFieldArgumentTypeModification(field.getName(), argument.getName(), oldType, newType); + getObjectModification(object.getName()).getDetails().add(objectFieldArgumentTypeModification); + + String oldDefaultValue = getDefaultValueFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + String newDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldDefaultValue.equals(newDefaultValue)) { + getObjectModification(object.getName()).getDetails().add(new ObjectFieldArgumentDefaultValueModification(field.getName(), argument.getName(), oldDefaultValue, newDefaultValue)); + } + } else { + assertTrue(objectOrInterface.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = objectOrInterface; + + // if the whole object is new we are done + if (isInterfaceAdded(interfaze.getName())) { + return; + } + // if the field is new, we are done too + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + // if the argument is new, we are done too + if (isArgumentNewForExistingInterfaceField(interfaze.getName(), field.getName(), argument.getName())) { + return; + } + + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + // this means we have an existing object changed its type + // and there must be a deleted edge with the old type information + EditOperation deletedTypeEdgeOperation = findDeletedEdge(argument, editOperations, mapping, this::isTypeEdge); + String oldType = getTypeFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + InterfaceFieldArgumentTypeModification interfaceFieldArgumentTypeModification = new InterfaceFieldArgumentTypeModification(field.getName(), argument.getName(), oldType, newType); + getInterfaceModification(interfaze.getName()).getDetails().add(interfaceFieldArgumentTypeModification); + + String oldDefaultValue = getDefaultValueFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + String newDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldDefaultValue.equals(newDefaultValue)) { + getInterfaceModification(interfaze.getName()).getDetails().add(new InterfaceFieldArgumentDefaultValueModification(field.getName(), argument.getName(), oldDefaultValue, newDefaultValue)); + } + } + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)); + Vertex directive = fieldOrDirective; + + if (isDirectiveAdded(directive.getName())) { + return; + } + if (isArgumentNewForExistingDirective(directive.getName(), argument.getName())) { + return; + } + + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + EditOperation deletedTypeEdgeOperation = findDeletedEdge(argument, editOperations, mapping, this::isTypeEdge); + String oldType = getTypeFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + DirectiveArgumentTypeModification directiveArgumentTypeModification = new DirectiveArgumentTypeModification(argument.getName(), oldType, newType); + getDirectiveModification(directive.getName()).getDetails().add(directiveArgumentTypeModification); + + String oldDefaultValue = getDefaultValueFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + String newDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldDefaultValue.equals(newDefaultValue)) { + getDirectiveModification(directive.getName()).getDetails().add(new DirectiveArgumentDefaultValueModification(argument.getName(), oldDefaultValue, newDefaultValue)); + } + } + } + + private void typeEdgeInsertedForField(EditOperation editOperation, + List editOperations, + Mapping mapping) { + Vertex field = editOperation.getTargetEdge().getFrom(); + Vertex objectOrInterface = newSchemaGraph.getFieldsContainerForField(field); + if (objectOrInterface.isOfType(SchemaGraph.OBJECT)) { + Vertex object = objectOrInterface; + // if the whole object is new we are done + if (isObjectAdded(object.getName())) { + return; + } + // if the field is new, we are done too + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + // this means we have an existing object changed its type + // and there must be a deleted edge with the old type information + EditOperation deletedTypeEdgeOperation = findDeletedEdge(field, editOperations, mapping, this::isTypeEdge); + String oldType = getTypeFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + ObjectFieldTypeModification objectFieldTypeModification = new ObjectFieldTypeModification(field.getName(), oldType, newType); + getObjectModification(object.getName()).getDetails().add(objectFieldTypeModification); + } else { + assertTrue(objectOrInterface.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = objectOrInterface; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + // this means we have an existing object changed its type + // and there must be a deleted edge with the old type information + EditOperation deletedTypeEdgeOperation = findDeletedEdge(field, editOperations, mapping, this::isTypeEdge); + String oldType = getTypeFromEdgeLabel(deletedTypeEdgeOperation.getSourceEdge()); + InterfaceFieldTypeModification interfaceFieldTypeModification = new InterfaceFieldTypeModification(field.getName(), oldType, newType); + getInterfaceModification(interfaze.getName()).getDetails().add(interfaceFieldTypeModification); + } + } + + + private EditOperation findDeletedEdge(Vertex targetVertexFrom, + List editOperations, + Mapping mapping, + Predicate edgePredicate) { + Vertex sourceVertexFrom = mapping.getSource(targetVertexFrom); + for (EditOperation editOperation : editOperations) { + if (editOperation.getOperation() == EditOperation.Operation.DELETE_EDGE) { + Edge deletedEdge = editOperation.getSourceEdge(); + if (deletedEdge.getFrom() == sourceVertexFrom && edgePredicate.test(deletedEdge)) { + return editOperation; + } + } + } + return Assert.assertShouldNeverHappen(); + } + + + private void typeEdgeChanged(EditOperation editOperation, Mapping mapping) { + Edge targetEdge = editOperation.getTargetEdge(); + Vertex from = targetEdge.getFrom(); + if (from.isOfType(SchemaGraph.FIELD)) { + outputFieldTypeChanged(editOperation); + } else if (from.isOfType(SchemaGraph.ARGUMENT)) { + argumentTypeOrDefaultValueChanged(editOperation, mapping); + } else if (from.isOfType(SchemaGraph.INPUT_FIELD)) { + inputFieldTypeOrDefaultValueChanged(editOperation); + } + } + + private void inputFieldTypeOrDefaultValueChanged(EditOperation editOperation) { + Edge targetEdge = editOperation.getTargetEdge(); + Vertex inputField = targetEdge.getFrom(); + Vertex inputObject = newSchemaGraph.getInputObjectForInputField(inputField); + + if (isInputObjectAdded(inputObject.getName())) { + return; + } + + String oldDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getSourceEdge()); + String newDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldDefaultValue.equals(newDefaultValue)) { + InputObjectFieldDefaultValueModification modification = new InputObjectFieldDefaultValueModification(inputField.getName(), oldDefaultValue, newDefaultValue); + getInputObjectModification(inputObject.getName()).getDetails().add(modification); + } + String oldType = getTypeFromEdgeLabel(editOperation.getSourceEdge()); + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldType.equals(newType)) { + InputObjectFieldTypeModification inputObjectFieldTypeModification = new InputObjectFieldTypeModification(inputField.getName(), oldType, newType); + getInputObjectModification(inputObject.getName()).getDetails().add(inputObjectFieldTypeModification); + } + } + + private void argumentTypeOrDefaultValueChanged(EditOperation editOperation, Mapping mapping) { + Vertex oldArgument = editOperation.getSourceEdge().getFrom(); + Vertex argument = editOperation.getTargetEdge().getFrom(); + + if (!doesArgumentChangeMakeSense(oldArgument, argument, mapping)) { + return; + } + + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(argument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex objectOrInterface = newSchemaGraph.getFieldsContainerForField(field); + + String oldDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getSourceEdge()); + String newDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldDefaultValue.equals(newDefaultValue)) { + if (objectOrInterface.isOfType(SchemaGraph.OBJECT)) { + ObjectFieldArgumentDefaultValueModification defaultValueModification = new ObjectFieldArgumentDefaultValueModification( + field.getName(), + argument.getName(), + oldDefaultValue, + newDefaultValue); + getObjectModification(objectOrInterface.getName()).getDetails().add(defaultValueModification); + } else { + assertTrue(objectOrInterface.isOfType(SchemaGraph.INTERFACE)); + InterfaceFieldArgumentDefaultValueModification defaultValueModification = new InterfaceFieldArgumentDefaultValueModification( + field.getName(), + argument.getName(), + oldDefaultValue, + newDefaultValue); + getInterfaceModification(objectOrInterface.getName()).getDetails().add(defaultValueModification); + } + } + + String oldType = getTypeFromEdgeLabel(editOperation.getSourceEdge()); + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldType.equals(newType)) { + if (objectOrInterface.isOfType(SchemaGraph.OBJECT)) { + ObjectFieldArgumentTypeModification objectFieldArgumentTypeModification = new ObjectFieldArgumentTypeModification(field.getName(), argument.getName(), oldType, newType); + getObjectModification(objectOrInterface.getName()).getDetails().add(objectFieldArgumentTypeModification); + } else { + assertTrue(objectOrInterface.isOfType(SchemaGraph.INTERFACE)); + InterfaceFieldArgumentTypeModification interfaceFieldArgumentTypeModification = new InterfaceFieldArgumentTypeModification(field.getName(), argument.getName(), oldType, newType); + getInterfaceModification(objectOrInterface.getName()).getDetails().add(interfaceFieldArgumentTypeModification); + } + } + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)); + Vertex directive = fieldOrDirective; + + String oldDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getSourceEdge()); + String newDefaultValue = getDefaultValueFromEdgeLabel(editOperation.getTargetEdge()); + if (!oldDefaultValue.equals(newDefaultValue)) { + getDirectiveModification(directive.getName()).getDetails().add(new DirectiveArgumentDefaultValueModification(argument.getName(), oldDefaultValue, newDefaultValue)); + } + String oldType = getTypeFromEdgeLabel(editOperation.getSourceEdge()); + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + + if (!oldType.equals(newType)) { + getDirectiveModification(directive.getName()).getDetails().add(new DirectiveArgumentTypeModification(argument.getName(), oldType, newType)); + } + } + } + + /** + * Sometimes the diffing algorithm will give us an argument change when the argument container + * changed i.e. the argument was "moved" around because the deleted and newly added arguments + * look similar. + *

      + * We only want to report argument type changes if it makes sense i.e. if the argument container was the same. + */ + private boolean doesArgumentChangeMakeSense(Vertex oldArgument, Vertex newArgument, Mapping mapping) { + // Container for an argument in this case should be a field or directive + Vertex oldContainer = oldSchemaGraph.getFieldOrDirectiveForArgument(oldArgument); + Vertex newContainer = newSchemaGraph.getFieldOrDirectiveForArgument(newArgument); + + // Make sure the container is the same + return mapping.getTarget(oldContainer) == newContainer; + } + + private void outputFieldTypeChanged(EditOperation editOperation) { + Edge targetEdge = editOperation.getTargetEdge(); + Vertex field = targetEdge.getFrom(); + Vertex container = newSchemaGraph.getFieldsContainerForField(field); + if (container.isOfType(SchemaGraph.OBJECT)) { + Vertex object = container; + ObjectModification objectModification = getObjectModification(object.getName()); + String fieldName = field.getName(); + String oldType = getTypeFromEdgeLabel(editOperation.getSourceEdge()); + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + objectModification.getDetails().add(new ObjectFieldTypeModification(fieldName, oldType, newType)); + } else { + assertTrue(container.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = container; + InterfaceModification interfaceModification = getInterfaceModification(interfaze.getName()); + String fieldName = field.getName(); + String oldType = getTypeFromEdgeLabel(editOperation.getSourceEdge()); + String newType = getTypeFromEdgeLabel(editOperation.getTargetEdge()); + interfaceModification.getDetails().add(new InterfaceFieldTypeModification(fieldName, oldType, newType)); + } + } + + // TODO: this is not great, we should avoid parsing the label like that + private String getTypeFromEdgeLabel(Edge edge) { + String label = edge.getLabel(); + assertTrue(label.startsWith("type=")); + String type = label.substring("type=".length(), label.indexOf(";")); + return type; + } + + private String getDefaultValueFromEdgeLabel(Edge edge) { + String label = edge.getLabel(); + assertTrue(label.startsWith("type=")); + String defaultValue = label.substring(label.indexOf(";defaultValue=") + ";defaultValue=".length()); + return defaultValue; + } + + private boolean isTypeEdge(Edge edge) { + String label = edge.getLabel(); + return label.startsWith("type="); + } + + private void interfaceImplementationDeleted(Edge deletedEdge) { + Vertex from = deletedEdge.getFrom(); + if (from.isOfType(SchemaGraph.OBJECT)) { + if (isObjectDeleted(from.getName())) { + return; + } + Vertex objectVertex = deletedEdge.getFrom(); + Vertex interfaceVertex = deletedEdge.getTo(); + ObjectInterfaceImplementationDeletion deletion = new ObjectInterfaceImplementationDeletion(interfaceVertex.getName()); + getObjectModification(objectVertex.getName()).getDetails().add(deletion); + + } else { + assertTrue(from.isOfType(SchemaGraph.INTERFACE)); + if (isInterfaceDeleted(from.getName())) { + return; + } + Vertex interfaceFromVertex = deletedEdge.getFrom(); + Vertex interfaceVertex = deletedEdge.getTo(); + InterfaceInterfaceImplementationDeletion deletion = new InterfaceInterfaceImplementationDeletion(interfaceVertex.getName()); + getInterfaceModification(interfaceFromVertex.getName()).getDetails().add(deletion); + } + + } + + private void newInterfaceAddedToInterfaceOrObject(Edge newEdge) { + Vertex from = newEdge.getFrom(); + if (from.isOfType(SchemaGraph.OBJECT)) { + if (isObjectAdded(from.getName())) { + return; + } + Vertex objectVertex = newEdge.getFrom(); + Vertex interfaceVertex = newEdge.getTo(); + ObjectInterfaceImplementationAddition objectInterfaceImplementationAddition = new ObjectInterfaceImplementationAddition(interfaceVertex.getName()); + getObjectModification(objectVertex.getName()).getDetails().add(objectInterfaceImplementationAddition); + + } else { + assertTrue(from.isOfType(SchemaGraph.INTERFACE)); + if (isInterfaceAdded(from.getName())) { + return; + } + Vertex interfaceFromVertex = newEdge.getFrom(); + Vertex interfaceVertex = newEdge.getTo(); + InterfaceInterfaceImplementationAddition addition = new InterfaceInterfaceImplementationAddition(interfaceVertex.getName()); + getInterfaceModification(interfaceFromVertex.getName()).getDetails().add(addition); + } + + } + + private boolean isDirectiveAdded(String name) { + return directiveDifferences.containsKey(name) && directiveDifferences.get(name) instanceof DirectiveAddition; + } + + private boolean isDirectiveDeleted(String name) { + return directiveDifferences.containsKey(name) && directiveDifferences.get(name) instanceof DirectiveDeletion; + } + + private boolean isObjectAdded(String name) { + return objectDifferences.containsKey(name) && objectDifferences.get(name) instanceof ObjectAddition; + } + + private boolean isUnionAdded(String name) { + return unionDifferences.containsKey(name) && unionDifferences.get(name) instanceof UnionAddition; + } + + private boolean isUnionDeleted(String name) { + return unionDifferences.containsKey(name) && unionDifferences.get(name) instanceof UnionDeletion; + } + + private boolean isEnumDeleted(String name) { + return enumDifferences.containsKey(name) && enumDifferences.get(name) instanceof EnumDeletion; + } + + private boolean isEnumAdded(String name) { + return enumDifferences.containsKey(name) && enumDifferences.get(name) instanceof EnumAddition; + } + + private boolean isInputObjectAdded(String name) { + return inputObjectDifferences.containsKey(name) && inputObjectDifferences.get(name) instanceof InputObjectAddition; + } + + private boolean isInputObjectDeleted(String name) { + return inputObjectDifferences.containsKey(name) && inputObjectDifferences.get(name) instanceof InputObjectDeletion; + } + + private boolean isInputFieldAdded(String name) { + return inputObjectDifferences.containsKey(name) && inputObjectDifferences.get(name) instanceof InputObjectAddition; + } + + private boolean isAppliedDirectiveAdded(Vertex container, String appliedDirectiveName) { + if (container.isOfType(SchemaGraph.SCALAR)) { + if (scalarDifferences.containsKey(container.getName())) { + ScalarDifference scalarDifference = scalarDifferences.get(container.getName()); + if (scalarDifference instanceof ScalarModification) { + ScalarModification scalarModification = (ScalarModification) scalarDifference; + List appliedDirectiveAdditions = scalarModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } else if (container.isOfType(SchemaGraph.ENUM)) { + if (enumDifferences.containsKey(container.getName())) { + EnumDifference enumDifference = enumDifferences.get(container.getName()); + if (enumDifference instanceof EnumModification) { + EnumModification enumModification = (EnumModification) enumDifference; + List appliedDirectiveAdditions = enumModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } else if (container.isOfType(SchemaGraph.OBJECT)) { + if (objectDifferences.containsKey(container.getName())) { + ObjectDifference objectDifference = objectDifferences.get(container.getName()); + if (objectDifference instanceof ObjectModification) { + ObjectModification objectModification = (ObjectModification) objectDifference; + List appliedDirectiveAdditions = objectModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } else if (container.isOfType(SchemaGraph.INTERFACE)) { + if (interfaceDifferences.containsKey(container.getName())) { + InterfaceDifference interfaceDifference = interfaceDifferences.get(container.getName()); + if (interfaceDifference instanceof InterfaceModification) { + InterfaceModification interfaceModification = (InterfaceModification) interfaceDifference; + List appliedDirectiveAdditions = interfaceModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } else if (container.isOfType(SchemaGraph.INPUT_OBJECT)) { + if (inputObjectDifferences.containsKey(container.getName())) { + InputObjectDifference inputObjectDifference = inputObjectDifferences.get(container.getName()); + if (inputObjectDifference instanceof InputObjectModification) { + InputObjectModification inputObjectModification = (InputObjectModification) inputObjectDifference; + List appliedDirectiveAdditions = inputObjectModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } else if (container.isOfType(SchemaGraph.UNION)) { + if (unionDifferences.containsKey(container.getName())) { + UnionDifference unionDifference = unionDifferences.get(container.getName()); + if (unionDifference instanceof UnionModification) { + UnionModification unionModification = (UnionModification) unionDifference; + List appliedDirectiveAdditions = unionModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } else if (container.isOfType(SchemaGraph.DIRECTIVE)) { + if (directiveDifferences.containsKey(container.getName())) { + DirectiveDifference directiveDifference = directiveDifferences.get(container.getName()); + if (directiveDifference instanceof DirectiveModification) { + DirectiveModification directiveModification = (DirectiveModification) directiveDifference; + List appliedDirectiveAdditions = directiveModification.getDetails(AppliedDirectiveAddition.class); + return appliedDirectiveAdditions.stream().anyMatch(addition -> addition.getName().equals(appliedDirectiveName)); + } + } + } + return false; + } + + + private boolean isAppliedDirectiveDeleted(Vertex rootContainer, String appliedDirectiveName) { +// if (rootContainer.isOfType(SchemaGraph.ARGUMENT)) { +// Vertex argument = rootContainer; +// Vertex fieldOrDirective = oldSchemaGraph.getFieldOrDirectiveForArgument(argument); +// if (fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)) { +// return isArgumentDeletedFromExistingDirective(fieldOrDirective.getName(), argument.getName()); +// } +// } + if (rootContainer.isOfType(SchemaGraph.SCALAR)) { + if (scalarDifferences.containsKey(rootContainer.getName())) { + ScalarDifference scalarDifference = scalarDifferences.get(rootContainer.getName()); + if (scalarDifference instanceof ScalarModification) { + ScalarModification scalarModification = (ScalarModification) scalarDifference; + List appliedDirectiveDeletions = scalarModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } else if (rootContainer.isOfType(SchemaGraph.ENUM)) { + if (enumDifferences.containsKey(rootContainer.getName())) { + EnumDifference enumDifference = enumDifferences.get(rootContainer.getName()); + if (enumDifference instanceof EnumModification) { + EnumModification enumModification = (EnumModification) enumDifference; + List appliedDirectiveDeletions = enumModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } else if (rootContainer.isOfType(SchemaGraph.OBJECT)) { + if (objectDifferences.containsKey(rootContainer.getName())) { + ObjectDifference objectDifference = objectDifferences.get(rootContainer.getName()); + if (objectDifference instanceof ObjectModification) { + ObjectModification objectModification = (ObjectModification) objectDifference; + List appliedDirectiveDeletions = objectModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } else if (rootContainer.isOfType(SchemaGraph.INTERFACE)) { + if (interfaceDifferences.containsKey(rootContainer.getName())) { + InterfaceDifference interfaceDifference = interfaceDifferences.get(rootContainer.getName()); + if (interfaceDifference instanceof InterfaceModification) { + InterfaceModification interfaceModification = (InterfaceModification) interfaceDifference; + List appliedDirectiveDeletions = interfaceModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } else if (rootContainer.isOfType(SchemaGraph.INPUT_OBJECT)) { + if (inputObjectDifferences.containsKey(rootContainer.getName())) { + InputObjectDifference inputObjectDifference = inputObjectDifferences.get(rootContainer.getName()); + if (inputObjectDifference instanceof InputObjectModification) { + InputObjectModification inputObjectModification = (InputObjectModification) inputObjectDifference; + List appliedDirectiveDeletions = inputObjectModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } else if (rootContainer.isOfType(SchemaGraph.UNION)) { + if (unionDifferences.containsKey(rootContainer.getName())) { + UnionDifference unionDifference = unionDifferences.get(rootContainer.getName()); + if (unionDifference instanceof UnionModification) { + UnionModification unionModification = (UnionModification) unionDifference; + List appliedDirectiveDeletions = unionModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } else if (rootContainer.isOfType(SchemaGraph.DIRECTIVE)) { + if (directiveDifferences.containsKey(rootContainer.getName())) { + DirectiveDifference directiveDifference = directiveDifferences.get(rootContainer.getName()); + if (directiveDifference instanceof DirectiveModification) { + DirectiveModification directiveModification = (DirectiveModification) directiveDifference; + List appliedDirectiveDeletions = directiveModification.getDetails(AppliedDirectiveDeletion.class); + return appliedDirectiveDeletions.stream().anyMatch(deletion -> deletion.getName().equals(appliedDirectiveName)); + } + } + } + return false; + } + + private boolean isNewInputFieldExistingInputObject(String inputObjectName, String fieldName) { + if (!inputObjectDifferences.containsKey(inputObjectName)) { + return false; + } + if (!(inputObjectDifferences.get(inputObjectName) instanceof InputObjectModification)) { + return false; + } + InputObjectModification modification = (InputObjectModification) inputObjectDifferences.get(inputObjectName); + List newFields = modification.getDetails(InputObjectFieldAddition.class); + return newFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + } + + private boolean isInputFieldDeletedFromExistingInputObject(String inputObjectName, String fieldName) { + if (!inputObjectDifferences.containsKey(inputObjectName)) { + return false; + } + if (!(inputObjectDifferences.get(inputObjectName) instanceof InputObjectModification)) { + return false; + } + InputObjectModification modification = (InputObjectModification) inputObjectDifferences.get(inputObjectName); + List deletedFields = modification.getDetails(InputObjectFieldDeletion.class); + return deletedFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + } + + private boolean isArgumentNewForExistingDirective(String directiveName, String argumentName) { + if (!directiveDifferences.containsKey(directiveName)) { + return false; + } + if (!(directiveDifferences.get(directiveName) instanceof DirectiveModification)) { + return false; + } + DirectiveModification directiveModification = (DirectiveModification) directiveDifferences.get(directiveName); + List newArgs = directiveModification.getDetails(DirectiveArgumentAddition.class); + return newArgs.stream().anyMatch(detail -> detail.getName().equals(argumentName)); + } + + private boolean isArgumentDeletedFromExistingDirective(String directiveName, String argumentName) { + if (!directiveDifferences.containsKey(directiveName)) { + return false; + } + if (!(directiveDifferences.get(directiveName) instanceof DirectiveModification)) { + return false; + } + DirectiveModification directiveModification = (DirectiveModification) directiveDifferences.get(directiveName); + List deletedArgs = directiveModification.getDetails(DirectiveArgumentDeletion.class); + return deletedArgs.stream().anyMatch(detail -> detail.getName().equals(argumentName)); + } + + private boolean isArgumentNewForExistingObjectField(String objectName, String fieldName, String argumentName) { + if (!objectDifferences.containsKey(objectName)) { + return false; + } + if (!(objectDifferences.get(objectName) instanceof ObjectModification)) { + return false; + } + // finding out if the field was just added + ObjectModification objectModification = (ObjectModification) objectDifferences.get(objectName); + List newFields = objectModification.getDetails(ObjectFieldAddition.class); + boolean newField = newFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + if (newField) { + return false; + } + // now finding out if the argument is new + List newArgs = objectModification.getDetails(ObjectFieldArgumentAddition.class); + return newArgs.stream().anyMatch(detail -> detail.getFieldName().equals(fieldName) && detail.getName().equals(argumentName)); + } + + private boolean isArgumentDeletedFromExistingObjectField(String objectName, String fieldName, String + argumentName) { + if (!objectDifferences.containsKey(objectName)) { + return false; + } + if (!(objectDifferences.get(objectName) instanceof ObjectModification)) { + return false; + } + // finding out if the field was just added + ObjectModification objectModification = (ObjectModification) objectDifferences.get(objectName); + List deletedFields = objectModification.getDetails(ObjectFieldDeletion.class); + boolean deletedField = deletedFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + if (deletedField) { + return false; + } + // now finding out if the argument is deleted + List deletedArgs = objectModification.getDetails(ObjectFieldArgumentDeletion.class); + return deletedArgs.stream().anyMatch(detail -> detail.getFieldName().equals(fieldName) && detail.getName().equals(argumentName)); + } + + private boolean isArgumentDeletedFromExistingInterfaceField(String interfaceName, String fieldName, String + argumentName) { + if (!interfaceDifferences.containsKey(interfaceName)) { + return false; + } + if (!(interfaceDifferences.get(interfaceName) instanceof InterfaceModification)) { + return false; + } + // finding out if the field was just added + InterfaceModification interfaceModification = (InterfaceModification) interfaceDifferences.get(interfaceName); + List deletedFields = interfaceModification.getDetails(InterfaceFieldDeletion.class); + boolean deletedField = deletedFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + if (deletedField) { + return false; + } + // now finding out if the argument is deleted + List deletedArgs = interfaceModification.getDetails(InterfaceFieldArgumentDeletion.class); + return deletedArgs.stream().anyMatch(detail -> detail.getFieldName().equals(fieldName) && detail.getName().equals(argumentName)); + } + + private boolean isArgumentNewForExistingInterfaceField(String objectName, String fieldName, String argumentName) { + if (!interfaceDifferences.containsKey(objectName)) { + return false; + } + if (!(interfaceDifferences.get(objectName) instanceof InterfaceModification)) { + return false; + } + // finding out if the field was just added + InterfaceModification interfaceModification = (InterfaceModification) interfaceDifferences.get(objectName); + List newFields = interfaceModification.getDetails(InterfaceFieldAddition.class); + boolean newField = newFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + if (newField) { + return false; + } + // now finding out if the argument is new + List newArgs = interfaceModification.getDetails(InterfaceFieldArgumentAddition.class); + return newArgs.stream().anyMatch(detail -> detail.getFieldName().equals(fieldName) && detail.getName().equals(argumentName)); + } + + private boolean isFieldNewForExistingObject(String objectName, String fieldName) { + if (!objectDifferences.containsKey(objectName)) { + return false; + } + if (!(objectDifferences.get(objectName) instanceof ObjectModification)) { + return false; + } + ObjectModification objectModification = (ObjectModification) objectDifferences.get(objectName); + List newFields = objectModification.getDetails(ObjectFieldAddition.class); + return newFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + } + + private boolean isFieldDeletedFromExistingInterface(String interfaceName, String fieldName) { + if (!interfaceDifferences.containsKey(interfaceName)) { + return false; + } + if (!(interfaceDifferences.get(interfaceName) instanceof InterfaceModification)) { + return false; + } + InterfaceModification interfaceModification = (InterfaceModification) interfaceDifferences.get(interfaceName); + List deletedFields = interfaceModification.getDetails(InterfaceFieldDeletion.class); + return deletedFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + } + + private boolean isFieldDeletedFromExistingObject(String objectName, String fieldName) { + if (!objectDifferences.containsKey(objectName)) { + return false; + } + if (!(objectDifferences.get(objectName) instanceof ObjectModification)) { + return false; + } + ObjectModification objectModification = (ObjectModification) objectDifferences.get(objectName); + List deletedFields = objectModification.getDetails(ObjectFieldDeletion.class); + return deletedFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + } + + private boolean isNewEnumValueForExistingEnum(String enumName, String valueName) { + if (!enumDifferences.containsKey(enumName)) { + return false; + } + if (!(enumDifferences.get(enumName) instanceof EnumModification)) { + return false; + } + EnumModification enumModification = (EnumModification) enumDifferences.get(enumName); + List newValues = enumModification.getDetails(EnumValueAddition.class); + return newValues.stream().anyMatch(detail -> detail.getName().equals(valueName)); + } + + private boolean isEnumValueDeletedFromExistingEnum(String enumName, String valueName) { + if (!enumDifferences.containsKey(enumName)) { + return false; + } + if (!(enumDifferences.get(enumName) instanceof EnumModification)) { + return false; + } + EnumModification enumModification = (EnumModification) enumDifferences.get(enumName); + List deletedValues = enumModification.getDetails(EnumValueDeletion.class); + return deletedValues.stream().anyMatch(detail -> detail.getName().equals(valueName)); + } + + private boolean isFieldNewForExistingInterface(String interfaceName, String fieldName) { + if (!interfaceDifferences.containsKey(interfaceName)) { + return false; + } + if (!(interfaceDifferences.get(interfaceName) instanceof InterfaceModification)) { + return false; + } + InterfaceModification interfaceModification = (InterfaceModification) interfaceDifferences.get(interfaceName); + List newFields = interfaceModification.getDetails(InterfaceFieldAddition.class); + return newFields.stream().anyMatch(detail -> detail.getName().equals(fieldName)); + } + + private boolean isObjectDeleted(String name) { + return objectDifferences.containsKey(name) && objectDifferences.get(name) instanceof ObjectDeletion; + } + + private boolean isInterfaceDeleted(String name) { + return interfaceDifferences.containsKey(name) && interfaceDifferences.get(name) instanceof InterfaceDeletion; + } + + private boolean isInterfaceAdded(String name) { + return interfaceDifferences.containsKey(name) && interfaceDifferences.get(name) instanceof InterfaceAddition; + } + + private boolean isScalarAdded(String name) { + return scalarDifferences.containsKey(name) && scalarDifferences.get(name) instanceof ScalarAddition; + } + + private boolean isScalarDeleted(String name) { + return scalarDifferences.containsKey(name) && scalarDifferences.get(name) instanceof ScalarDeletion; + } + + private ObjectModification getObjectModification(String newName) { + if (!objectDifferences.containsKey(newName)) { + objectDifferences.put(newName, new ObjectModification(newName)); + } + assertTrue(objectDifferences.get(newName) instanceof ObjectModification); + return (ObjectModification) objectDifferences.get(newName); + } + + private UnionModification getUnionModification(String newName) { + if (!unionDifferences.containsKey(newName)) { + unionDifferences.put(newName, new UnionModification(newName)); + } + assertTrue(unionDifferences.get(newName) instanceof UnionModification); + return (UnionModification) unionDifferences.get(newName); + } + + private EnumModification getEnumModification(String newName) { + if (!enumDifferences.containsKey(newName)) { + enumDifferences.put(newName, new EnumModification(newName)); + } + assertTrue(enumDifferences.get(newName) instanceof EnumModification); + return (EnumModification) enumDifferences.get(newName); + } + + private InputObjectModification getInputObjectModification(String newName) { + if (!inputObjectDifferences.containsKey(newName)) { + inputObjectDifferences.put(newName, new InputObjectModification(newName)); + } + assertTrue(inputObjectDifferences.get(newName) instanceof InputObjectModification); + return (InputObjectModification) inputObjectDifferences.get(newName); + } + + private DirectiveModification getDirectiveModification(String newName) { + if (!directiveDifferences.containsKey(newName)) { + directiveDifferences.put(newName, new DirectiveModification(newName)); + } + assertTrue(directiveDifferences.get(newName) instanceof DirectiveModification); + return (DirectiveModification) directiveDifferences.get(newName); + } + + private InterfaceModification getInterfaceModification(String newName) { + if (!interfaceDifferences.containsKey(newName)) { + interfaceDifferences.put(newName, new InterfaceModification(newName)); + } + assertTrue(interfaceDifferences.get(newName) instanceof InterfaceModification); + return (InterfaceModification) interfaceDifferences.get(newName); + } + + private ScalarModification getScalarModification(String newName) { + if (!scalarDifferences.containsKey(newName)) { + scalarDifferences.put(newName, new ScalarModification(newName)); + } + assertTrue(scalarDifferences.get(newName) instanceof ScalarModification); + return (ScalarModification) scalarDifferences.get(newName); + } + + + private void addedObject(EditOperation editOperation) { + String objectName = editOperation.getTargetVertex().getName(); + ObjectAddition objectAddition = new ObjectAddition(objectName); + objectDifferences.put(objectName, objectAddition); + } + + private void addedInterface(EditOperation editOperation) { + String objectName = editOperation.getTargetVertex().getName(); + + InterfaceAddition interfaceAddition = new InterfaceAddition(objectName); + interfaceDifferences.put(objectName, interfaceAddition); + } + + private void addedUnion(EditOperation editOperation) { + String unionName = editOperation.getTargetVertex().getName(); + + UnionAddition addition = new UnionAddition(unionName); + unionDifferences.put(unionName, addition); + } + + private void addedInputObject(EditOperation editOperation) { + String inputObjectName = editOperation.getTargetVertex().getName(); + + InputObjectAddition addition = new InputObjectAddition(inputObjectName); + inputObjectDifferences.put(inputObjectName, addition); + } + + private void addedEnum(EditOperation editOperation) { + String enumName = editOperation.getTargetVertex().getName(); + + EnumAddition enumAddition = new EnumAddition(enumName); + enumDifferences.put(enumName, enumAddition); + } + + private void addedScalar(EditOperation editOperation) { + String scalarName = editOperation.getTargetVertex().getName(); + // build in scalars can appear as added when not used in the old schema, but + // we don't want to register them as new Scalars + if (ScalarInfo.isGraphqlSpecifiedScalar(scalarName)) { + return; + } + + ScalarAddition addition = new ScalarAddition(scalarName); + scalarDifferences.put(scalarName, addition); + } + + private void addedDirective(EditOperation editOperation) { + String directiveName = editOperation.getTargetVertex().getName(); + + DirectiveAddition addition = new DirectiveAddition(directiveName); + directiveDifferences.put(directiveName, addition); + } + + + private void removedObject(EditOperation editOperation) { + String objectName = editOperation.getSourceVertex().getName(); + + ObjectDeletion change = new ObjectDeletion(objectName); + objectDifferences.put(objectName, change); + } + + private void removedInterface(EditOperation editOperation) { + String interfaceName = editOperation.getSourceVertex().getName(); + + InterfaceDeletion change = new InterfaceDeletion(interfaceName); + interfaceDifferences.put(interfaceName, change); + } + + private void removedUnion(EditOperation editOperation) { + String unionName = editOperation.getSourceVertex().getName(); + + UnionDeletion change = new UnionDeletion(unionName); + unionDifferences.put(unionName, change); + } + + private void removedInputObject(EditOperation editOperation) { + String name = editOperation.getSourceVertex().getName(); + + InputObjectDeletion change = new InputObjectDeletion(name); + inputObjectDifferences.put(name, change); + } + + private void removedEnum(EditOperation editOperation) { + String enumName = editOperation.getSourceVertex().getName(); + + EnumDeletion deletion = new EnumDeletion(enumName); + enumDifferences.put(enumName, deletion); + } + + private void deletedScalar(EditOperation editOperation) { + String scalarName = editOperation.getSourceVertex().getName(); + + ScalarDeletion change = new ScalarDeletion(scalarName); + scalarDifferences.put(scalarName, change); + } + + private void deletedDirective(EditOperation editOperation) { + String directiveName = editOperation.getSourceVertex().getName(); + + DirectiveDeletion change = new DirectiveDeletion(directiveName); + directiveDifferences.put(directiveName, change); + } + + private void argumentDeleted(EditOperation editOperation) { + // Note: sometimes the edit operation is the argument vertex itself being deleted + // Other times, it is the edge to the argument type being deleted + Vertex deletedArgument = editOperation.getSourceVertex(); + if (deletedArgument == null) { + deletedArgument = editOperation.getSourceEdge().getTo(); + } + + Vertex fieldOrDirective = oldSchemaGraph.getFieldOrDirectiveForArgument(deletedArgument); + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex fieldsContainerForField = oldSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainerForField.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainerForField; + if (isObjectDeleted(object.getName())) { + return; + } + if (isFieldDeletedFromExistingObject(object.getName(), field.getName())) { + return; + } + if (isArgumentDeletedFromExistingObjectField(object.getName(), field.getName(), deletedArgument.getName())) { + return; + } + getObjectModification(object.getName()).getDetails().add(new ObjectFieldArgumentDeletion(field.getName(), deletedArgument.getName())); + } else { + assertTrue(fieldsContainerForField.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = fieldsContainerForField; + if (isInterfaceDeleted(interfaze.getName())) { + return; + } + if (isFieldDeletedFromExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isArgumentDeletedFromExistingInterfaceField(interfaze.getName(), field.getName(), deletedArgument.getName())) { + return; + } + getInterfaceModification(interfaze.getName()).getDetails().add(new InterfaceFieldArgumentDeletion(field.getName(), deletedArgument.getName())); + } + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)); + Vertex directive = fieldOrDirective; + if (isDirectiveDeleted(directive.getName())) { + return; + } + if (isArgumentDeletedFromExistingDirective(directive.getName(), deletedArgument.getName())) { + return; + } + getDirectiveModification(directive.getName()).getDetails().add(new DirectiveArgumentDeletion(deletedArgument.getName())); + } + } + + private void argumentAdded(EditOperation editOperation) { + Vertex addedArgument = editOperation.getTargetVertex(); + if (addedArgument == null) { + addedArgument = editOperation.getTargetEdge().getTo(); + } + + Vertex fieldOrDirective = newSchemaGraph.getFieldOrDirectiveForArgument(addedArgument); + + if (fieldOrDirective.isOfType(SchemaGraph.FIELD)) { + Vertex field = fieldOrDirective; + Vertex fieldsContainerForField = newSchemaGraph.getFieldsContainerForField(field); + if (fieldsContainerForField.isOfType(SchemaGraph.OBJECT)) { + Vertex object = fieldsContainerForField; + if (isObjectAdded(object.getName())) { + return; + } + if (isFieldNewForExistingObject(object.getName(), field.getName())) { + return; + } + if (isArgumentNewForExistingObjectField(object.getName(), field.getName(), addedArgument.getName())) { + return; + } + getObjectModification(object.getName()).getDetails().add(new ObjectFieldArgumentAddition(field.getName(), addedArgument.getName())); + } else { + assertTrue(fieldsContainerForField.isOfType(SchemaGraph.INTERFACE)); + Vertex interfaze = fieldsContainerForField; + if (isInterfaceAdded(interfaze.getName())) { + return; + } + if (isFieldNewForExistingInterface(interfaze.getName(), field.getName())) { + return; + } + if (isArgumentNewForExistingInterfaceField(interfaze.getName(), field.getName(), addedArgument.getName())) { + return; + } + getInterfaceModification(interfaze.getName()).getDetails().add(new InterfaceFieldArgumentAddition(field.getName(), addedArgument.getName())); + } + } else { + assertTrue(fieldOrDirective.isOfType(SchemaGraph.DIRECTIVE)); + Vertex directive = fieldOrDirective; + if (isDirectiveAdded(directive.getName())) { + return; + } + if (isArgumentNewForExistingDirective(directive.getName(), addedArgument.getName())) { + return; + } + getDirectiveModification(directive.getName()).getDetails().add(new DirectiveArgumentAddition(addedArgument.getName())); + } + } + + private void changedEnum(EditOperation editOperation) { + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + EnumModification modification = new EnumModification(oldName, newName); + enumDifferences.put(oldName, modification); + enumDifferences.put(newName, modification); + } + + private void changedScalar(EditOperation editOperation) { + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + ScalarModification modification = new ScalarModification(oldName, newName); + scalarDifferences.put(oldName, modification); + scalarDifferences.put(newName, modification); + } + + private void changedInputObject(EditOperation editOperation) { + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + InputObjectModification modification = new InputObjectModification(oldName, newName); + inputObjectDifferences.put(oldName, modification); + inputObjectDifferences.put(newName, modification); + } + + private void changedDirective(EditOperation editOperation) { + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + DirectiveModification modification = new DirectiveModification(oldName, newName); + directiveDifferences.put(oldName, modification); + directiveDifferences.put(newName, modification); + } + + private void changedObject(EditOperation editOperation) { + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + ObjectModification objectModification = new ObjectModification(oldName, newName); + objectDifferences.put(oldName, objectModification); + objectDifferences.put(newName, objectModification); + } + + private void changedInterface(EditOperation editOperation) { + String oldName = editOperation.getSourceVertex().getName(); + String newName = editOperation.getTargetVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + InterfaceModification interfaceModification = new InterfaceModification(oldName, newName); + interfaceDifferences.put(oldName, interfaceModification); + interfaceDifferences.put(newName, interfaceModification); + } + + private void changedUnion(EditOperation editOperation) { + String newName = editOperation.getTargetVertex().getName(); + String oldName = editOperation.getSourceVertex().getName(); + + if (oldName.equals(newName)) { + // Something else like description could have changed + return; + } + + UnionModification objectModification = new UnionModification(oldName, newName); + unionDifferences.put(oldName, objectModification); + unionDifferences.put(newName, objectModification); + } + + /** + * The order to traverse edit operations according to the operation. + * + * @see #getTraversalOrder(List) + */ + private static final List OPERATION_TRAVERSAL_ORDER = List.of( + EditOperation.Operation.CHANGE_VERTEX, + EditOperation.Operation.INSERT_VERTEX, + EditOperation.Operation.DELETE_VERTEX, + EditOperation.Operation.CHANGE_EDGE, + EditOperation.Operation.INSERT_EDGE, + EditOperation.Operation.DELETE_EDGE + ); + + /** + * The order to traverse edit operations according to the vertex types involved. + * + * @see #getTraversalOrder(List) + */ + private static final List TYPE_TRAVERSAL_ORDER = List.of( + // These are all top level declarations + SchemaGraph.SCHEMA, + SchemaGraph.OBJECT, + SchemaGraph.INTERFACE, + SchemaGraph.UNION, + SchemaGraph.SCALAR, + SchemaGraph.ENUM, + SchemaGraph.INPUT_OBJECT, + SchemaGraph.DIRECTIVE, + // These are all direct descendants of top level declarations + SchemaGraph.FIELD, + SchemaGraph.INPUT_FIELD, + SchemaGraph.ENUM_VALUE, + // Everything else + SchemaGraph.ARGUMENT, + SchemaGraph.APPLIED_DIRECTIVE, + SchemaGraph.APPLIED_ARGUMENT, + SchemaGraph.ISOLATED + ); + + /** + * The input list of {@link EditOperation}s does not conform to any order. + *

      + * We need to sort it as we sometimes rely on the parents being processed first. + *

      + * e.g. we ignore a new argument if the parent of the argument is new. + * However, if the argument addition is processed before the + */ + @VisibleForTesting + static List getTraversalOrder(List editOperations) { + ArrayList sorted = new ArrayList<>(editOperations); + + sorted.sort( + Comparator + .comparingInt((editOperation) -> { + int i = OPERATION_TRAVERSAL_ORDER.indexOf(editOperation.getOperation()); + if (i < 0) { + return Assert.assertShouldNeverHappen("Unknown operation: " + editOperation.getOperation()); + } + return i; + }) + .thenComparing((editOperation) -> { + // Converts this editOperation into an index from the order + // The lower the index, the earlier it appears in the sorted list + for (int i = 0; i < TYPE_TRAVERSAL_ORDER.size(); i++) { + String type = TYPE_TRAVERSAL_ORDER.get(i); + + if (isAnyVertexOfType(editOperation, type)) { + return i; + } + } + + return Assert.assertShouldNeverHappen("Unable to determine edit operation subject for: " + editOperation); + }) + ); + + return sorted; + } + + private static boolean isAnyVertexOfType(EditOperation edit, String type) { + return (edit.getSourceVertex() != null && edit.getSourceVertex().isOfType(type)) + || (edit.getTargetVertex() != null && edit.getTargetVertex().isOfType(type)) + || (edit.getSourceEdge() != null && isAnyVertexOfType(edit.getSourceEdge(), type)) + || (edit.getTargetEdge() != null && isAnyVertexOfType(edit.getTargetEdge(), type)); + } + + private static boolean isAnyVertexOfType(Edge edge, String type) { + return edge.getFrom().isOfType(type) || edge.getTo().isOfType(type); + } +} diff --git a/src/main/java/graphql/schema/diffing/ana/SchemaDifference.java b/src/main/java/graphql/schema/diffing/ana/SchemaDifference.java new file mode 100644 index 0000000000..d6a2c8e494 --- /dev/null +++ b/src/main/java/graphql/schema/diffing/ana/SchemaDifference.java @@ -0,0 +1,1722 @@ +package graphql.schema.diffing.ana; + +import graphql.Internal; +import graphql.util.FpKit; + +import java.util.ArrayList; +import java.util.List; + +/** + * Any kind of difference between two schemas is a SchemaDifference. + *

      + * Below that we have three different possible kind of differences: + * - Addition + * - Deletion + * - Modification + */ +@Internal +public interface SchemaDifference { + + interface SchemaAddition extends SchemaDifference { + + } + + interface SchemaDeletion extends SchemaDifference { + + } + + interface SchemaModification extends SchemaDifference { + + } + + interface SchemaModificationDetail extends SchemaDifference { + + } + + //------------ Object + public + interface ObjectDifference extends SchemaDifference { + + } + + class ObjectAddition implements SchemaAddition, ObjectDifference { + private final String name; + + public ObjectAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ObjectDeletion implements SchemaDeletion, ObjectDifference { + private final String name; + + public ObjectDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ObjectModification implements SchemaModification, ObjectDifference { + private final String oldName; + private final String newName; + private final boolean isNameChanged; + private final List details = new ArrayList<>(); + + public ObjectModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public ObjectModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + public List getDetails() { + return details; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + + public String getOldName() { + return oldName; + } + + public String getNewName() { + return newName; + } + + public boolean isNameChanged() { + return isNameChanged; + } + } + + interface ObjectModificationDetail { + + } + + class ObjectInterfaceImplementationAddition implements ObjectModificationDetail { + private final String name; + + public ObjectInterfaceImplementationAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ObjectInterfaceImplementationDeletion implements ObjectModificationDetail { + private final String name; + + public ObjectInterfaceImplementationDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ObjectFieldAddition implements ObjectModificationDetail { + private final String name; + + public ObjectFieldAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ObjectFieldDeletion implements ObjectModificationDetail { + private final String name; + + public ObjectFieldDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ObjectFieldRename implements ObjectModificationDetail { + private final String oldName; + private final String newName; + + public ObjectFieldRename(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + } + + class ObjectFieldArgumentRename implements ObjectModificationDetail { + private final String fieldName; + private final String oldName; + private final String newName; + + public ObjectFieldArgumentRename(String fieldName, String oldName, String newName) { + this.fieldName = fieldName; + this.oldName = oldName; + this.newName = newName; + } + + public String getFieldName() { + return fieldName; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + } + + class ObjectFieldTypeModification implements ObjectModificationDetail { + private final String fieldName; + private final String oldType; + private final String newType; + + public ObjectFieldTypeModification(String fieldName, String oldType, String newType) { + this.fieldName = fieldName; + this.oldType = oldType; + this.newType = newType; + } + + public String getFieldName() { + return fieldName; + } + + public String getNewType() { + return newType; + } + + public String getOldType() { + return oldType; + } + } + + class ObjectFieldArgumentDeletion implements ObjectModificationDetail { + private final String fieldName; + private final String name; + + public ObjectFieldArgumentDeletion(String fieldName, String name) { + this.fieldName = fieldName; + this.name = name; + } + + public String getName() { + return name; + } + + public String getFieldName() { + return fieldName; + } + } + + class ObjectFieldArgumentAddition implements ObjectModificationDetail { + private final String fieldName; + private final String name; + + + public ObjectFieldArgumentAddition(String fieldName, String name) { + this.fieldName = fieldName; + this.name = name; + } + + public String getFieldName() { + return fieldName; + } + + public String getName() { + return name; + } + } + + class ObjectFieldArgumentTypeModification implements ObjectModificationDetail { + private final String fieldName; + private final String argumentName; + private final String oldType; + private final String newType; + + public ObjectFieldArgumentTypeModification(String fieldName, String argumentName, String oldType, String newType) { + this.fieldName = fieldName; + this.argumentName = argumentName; + this.oldType = oldType; + this.newType = newType; + } + + public String getNewType() { + return newType; + } + + public String getOldType() { + return oldType; + } + + public String getFieldName() { + return fieldName; + } + + public String getArgumentName() { + return argumentName; + } + } + + class ObjectFieldArgumentDefaultValueModification implements ObjectModificationDetail { + private final String fieldName; + private final String argumentName; + private final String oldValue; + private final String newValue; + + public ObjectFieldArgumentDefaultValueModification(String fieldName, String argumentName, String oldValue, String newValue) { + this.fieldName = fieldName; + this.argumentName = argumentName; + this.oldValue = oldValue; + this.newValue = newValue; + } + + public String getOldValue() { + return oldValue; + } + + public String getNewValue() { + return newValue; + } + + public String getFieldName() { + return fieldName; + } + + public String getArgumentName() { + return argumentName; + } + } + + //------------ Interface + interface InterfaceDifference extends SchemaDifference { + + } + + class InterfaceAddition implements SchemaAddition, InterfaceDifference { + private final String name; + + public InterfaceAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InterfaceDeletion implements SchemaDeletion, InterfaceDifference { + private final String name; + + public InterfaceDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InterfaceModification implements SchemaModification, InterfaceDifference { + private final String oldName; + private final String newName; + private final boolean isNameChanged; + private final List details = new ArrayList<>(); + + public InterfaceModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public InterfaceModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + public List getDetails() { + return details; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + + public boolean isNameChanged() { + return isNameChanged; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + } + + interface InterfaceModificationDetail { + + } + + class InterfaceInterfaceImplementationAddition implements InterfaceModificationDetail { + private final String name; + + public InterfaceInterfaceImplementationAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InterfaceInterfaceImplementationDeletion implements InterfaceModificationDetail { + private final String name; + + public InterfaceInterfaceImplementationDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InterfaceFieldAddition implements InterfaceModificationDetail { + private final String name; + + public InterfaceFieldAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InterfaceFieldDeletion implements InterfaceModificationDetail { + private final String name; + + public InterfaceFieldDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InterfaceFieldRename implements InterfaceModificationDetail { + private final String oldName; + private final String newName; + + public InterfaceFieldRename(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + } + + + class InterfaceFieldTypeModification implements InterfaceModificationDetail { + private final String fieldName; + private final String oldType; + private final String newType; + + public InterfaceFieldTypeModification(String fieldName, String oldType, String newType) { + this.fieldName = fieldName; + this.oldType = oldType; + this.newType = newType; + } + + public String getFieldName() { + return fieldName; + } + + public String getNewType() { + return newType; + } + + public String getOldType() { + return oldType; + } + } + + class InterfaceFieldArgumentDeletion implements InterfaceModificationDetail { + private final String fieldName; + private final String name; + + + public InterfaceFieldArgumentDeletion(String fieldName, String name) { + this.fieldName = fieldName; + this.name = name; + } + + public String getFieldName() { + return fieldName; + } + + public String getName() { + return name; + } + } + + class InterfaceFieldArgumentAddition implements InterfaceModificationDetail { + private final String fieldName; + private final String name; + + public InterfaceFieldArgumentAddition(String fieldName, String name) { + this.fieldName = fieldName; + this.name = name; + } + + public String getFieldName() { + return fieldName; + } + + public String getName() { + return name; + } + } + + class InterfaceFieldArgumentTypeModification implements InterfaceModificationDetail { + + private final String fieldName; + private final String argumentName; + private final String oldType; + private final String newType; + + public InterfaceFieldArgumentTypeModification(String fieldName, String argumentName, String oldType, String newType) { + this.fieldName = fieldName; + this.argumentName = argumentName; + this.oldType = oldType; + this.newType = newType; + } + + public String getFieldName() { + return fieldName; + } + + public String getNewType() { + return newType; + } + + public String getOldType() { + return oldType; + } + + public String getArgumentName() { + return argumentName; + } + + } + + class InterfaceFieldArgumentDefaultValueModification implements InterfaceModificationDetail { + private final String fieldName; + private final String argumentName; + private final String oldValue; + private final String newValue; + + + public InterfaceFieldArgumentDefaultValueModification(String fieldName, String argumentName, String oldValue, String newValue) { + this.fieldName = fieldName; + this.argumentName = argumentName; + this.oldValue = oldValue; + this.newValue = newValue; + } + + public String getOldValue() { + return oldValue; + } + + public String getNewValue() { + return newValue; + } + + public String getFieldName() { + return fieldName; + } + + public String getArgumentName() { + return argumentName; + } + } + + class InterfaceFieldArgumentRename implements InterfaceModificationDetail { + private final String fieldName; + private final String oldName; + private final String newName; + + public InterfaceFieldArgumentRename(String fieldName, String oldName, String newName) { + this.fieldName = fieldName; + this.oldName = oldName; + this.newName = newName; + } + + public String getFieldName() { + return fieldName; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + } + + + // -----Union----------- + interface UnionDifference extends SchemaDifference { + + } + + class UnionAddition implements SchemaAddition, UnionDifference { + private final String name; + + public UnionAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class UnionDeletion implements SchemaDeletion, UnionDifference { + private final String name; + + public UnionDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class UnionModification implements SchemaModification, UnionDifference { + private final String oldName; + private final String newName; + private final boolean isNameChanged; + + private final List details = new ArrayList<>(); + + public UnionModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public UnionModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + + public List getDetails() { + return details; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + + public boolean isNameChanged() { + return isNameChanged; + } + } + + interface UnionModificationDetail { + + } + + class UnionMemberAddition implements UnionModificationDetail { + private final String name; + + public UnionMemberAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class UnionMemberDeletion implements UnionModificationDetail { + private final String name; + + public UnionMemberDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + //--------InputObject + + interface InputObjectDifference extends SchemaDifference { + + } + + class InputObjectAddition implements SchemaAddition, InputObjectDifference { + private final String name; + + public InputObjectAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InputObjectDeletion implements SchemaDeletion, InputObjectDifference { + private final String name; + + public InputObjectDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + interface InputObjectModificationDetail { + + } + + class InputObjectFieldDeletion implements InputObjectModificationDetail { + private final String name; + + public InputObjectFieldDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InputObjectFieldRename implements InputObjectModificationDetail { + private final String oldName; + private final String newName; + + public InputObjectFieldRename(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + } + + public String getOldName() { + return oldName; + } + + public String getNewName() { + return newName; + } + } + + class InputObjectFieldDefaultValueModification implements InputObjectModificationDetail { + private final String fieldName; + private final String oldDefaultValue; + private final String newDefaultValue; + + public InputObjectFieldDefaultValueModification(String fieldName, String oldDefaultValue, String newDefaultValue) { + this.fieldName = fieldName; + this.oldDefaultValue = oldDefaultValue; + this.newDefaultValue = newDefaultValue; + } + + public String getFieldName() { + return fieldName; + } + + public String getOldDefaultValue() { + return oldDefaultValue; + } + + public String getNewDefaultValue() { + return newDefaultValue; + } + } + + class InputObjectFieldTypeModification implements InputObjectModificationDetail { + private final String fieldName; + private final String oldType; + private final String newType; + + public InputObjectFieldTypeModification(String fieldName, String oldType, String newType) { + this.fieldName = fieldName; + this.oldType = oldType; + this.newType = newType; + } + + public String getFieldName() { + return fieldName; + } + + public String getOldType() { + return oldType; + } + + public String getNewType() { + return newType; + } + } + + class InputObjectFieldAddition implements InputObjectModificationDetail { + private final String name; + + public InputObjectFieldAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class InputObjectModification implements SchemaModification, InputObjectDifference { + private final String oldName; + private final String newName; + private final boolean isNameChanged; + + private final List details = new ArrayList<>(); + + + public InputObjectModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public InputObjectModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + public boolean isNameChanged() { + return isNameChanged; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + + public List getDetails() { + return details; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + + } + + //-------Enum + interface EnumDifference extends SchemaDifference { + + } + + class EnumAddition implements SchemaAddition, EnumDifference { + private final String name; + + public EnumAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class EnumDeletion implements SchemaDeletion, EnumDifference { + private final String name; + + public EnumDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class EnumModification implements SchemaModification, EnumDifference { + private final String oldName; + private final String newName; + + private final boolean isNameChanged; + private final List details = new ArrayList<>(); + + public EnumModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public EnumModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + public boolean isNameChanged() { + return isNameChanged; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + + public List getDetails() { + return details; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + + } + + interface EnumModificationDetail { + + } + + class EnumValueDeletion implements EnumModificationDetail { + private final String name; + + public EnumValueDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class EnumValueRenamed implements EnumModificationDetail { + private final String oldName; + private final String newName; + + public EnumValueRenamed(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + } + + public String getOldName() { + return oldName; + } + + public String getNewName() { + return newName; + } + } + + class EnumValueAddition implements EnumModificationDetail { + private final String name; + + public EnumValueAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + //--------Scalar + interface ScalarDifference extends SchemaDifference { + + } + + class ScalarAddition implements SchemaAddition, ScalarDifference { + private final String name; + + public ScalarAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class ScalarDeletion implements SchemaDeletion, ScalarDifference { + private final String name; + + public ScalarDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + interface ScalarModificationDetail { + + } + + class ScalarModification implements SchemaModification, ScalarDifference { + private final String oldName; + private final String newName; + private final boolean isNameChanged; + private List details = new ArrayList<>(); + + + public ScalarModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public ScalarModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + + public boolean isNameChanged() { + return isNameChanged; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + + public List getDetails() { + return details; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + + } + + //------Directive + interface DirectiveDifference extends SchemaDifference { + + } + + class DirectiveAddition implements SchemaAddition, DirectiveDifference { + private final String name; + + public DirectiveAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class DirectiveDeletion implements SchemaDeletion, DirectiveDifference { + private final String name; + + public DirectiveDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class DirectiveModification implements SchemaModification, DirectiveDifference { + private final String oldName; + private final String newName; + private final boolean isNameChanged; + + private final List details = new ArrayList<>(); + + public DirectiveModification(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + this.isNameChanged = !oldName.equals(newName); + } + + public DirectiveModification(String newName) { + this.oldName = newName; + this.newName = newName; + this.isNameChanged = false; + } + + public boolean isNameChanged() { + return isNameChanged; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + + public List getDetails() { + return details; + } + + public List getDetails(Class clazz) { + return (List) FpKit.filterList(details, clazz::isInstance); + } + } + + interface DirectiveModificationDetail { + + } + + class DirectiveArgumentDeletion implements DirectiveModificationDetail { + private final String name; + + public DirectiveArgumentDeletion(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + } + + class DirectiveArgumentAddition implements DirectiveModificationDetail { + private final String name; + + public DirectiveArgumentAddition(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + class DirectiveArgumentTypeModification implements DirectiveModificationDetail { + private final String argumentName; + private final String oldType; + private final String newType; + + + public DirectiveArgumentTypeModification(String argumentName, String oldType, String newType) { + this.argumentName = argumentName; + this.oldType = oldType; + this.newType = newType; + } + + public String getArgumentName() { + return argumentName; + } + + public String getNewType() { + return newType; + } + + public String getOldType() { + return oldType; + } + } + + class DirectiveArgumentDefaultValueModification implements DirectiveModificationDetail { + private final String argumentName; + private final String oldValue; + private final String newValue; + + public DirectiveArgumentDefaultValueModification(String argumentName, String oldValue, String newValue) { + this.argumentName = argumentName; + this.oldValue = oldValue; + this.newValue = newValue; + } + + public String getOldValue() { + return oldValue; + } + + public String getNewValue() { + return newValue; + } + + public String getArgumentName() { + return argumentName; + } + } + + class DirectiveArgumentRename implements DirectiveModificationDetail { + private final String oldName; + private final String newName; + + public DirectiveArgumentRename(String oldName, String newName) { + this.oldName = oldName; + this.newName = newName; + } + + public String getNewName() { + return newName; + } + + public String getOldName() { + return oldName; + } + } + + //------Applied Directives + interface AppliedDirectiveDifference { + + } + + /** + * SCHEMA, + * SCALAR, + * OBJECT, + * FIELD_DEFINITION, + * ARGUMENT_DEFINITION, + * INTERFACE, + * UNION, + * ENUM, + * ENUM_VALUE, + * INPUT_OBJECT, + * INPUT_FIELD_DEFINITION + */ + + interface AppliedDirectiveLocationDetail { + + } + + class AppliedDirectiveObjectFieldLocation implements AppliedDirectiveLocationDetail { + private final String objectName; + private final String fieldName; + private final String directiveName; + + public AppliedDirectiveObjectFieldLocation(String objectName, String fieldName, String directiveName) { + this.objectName = objectName; + this.fieldName = fieldName; + this.directiveName = directiveName; + } + + public String getFieldName() { + return fieldName; + } + + public String getObjectName() { + return objectName; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveInterfaceFieldLocation implements AppliedDirectiveLocationDetail { + private final String interfaceName; + private final String fieldName; + + private final String directiveName; + + + public AppliedDirectiveInterfaceFieldLocation(String interfaceName, String fieldName, String directiveName) { + this.interfaceName = interfaceName; + this.fieldName = fieldName; + this.directiveName = directiveName; + } + + public String getFieldName() { + return fieldName; + } + + public String getInterfaceName() { + return interfaceName; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveScalarLocation implements AppliedDirectiveLocationDetail { + private final String name; + + private final String directiveName; + + public AppliedDirectiveScalarLocation(String name, String directiveName) { + this.name = name; + this.directiveName = directiveName; + } + + public String getName() { + return name; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveSchemaLocation implements AppliedDirectiveLocationDetail { + + } + + class AppliedDirectiveObjectLocation implements AppliedDirectiveLocationDetail { + private final String name; + private final String directiveName; + + + public AppliedDirectiveObjectLocation(String name, String directiveName) { + this.name = name; + this.directiveName = directiveName; + } + + public String getName() { + return name; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveInterfaceLocation implements AppliedDirectiveLocationDetail { + private final String name; + private final String directiveName; + + public AppliedDirectiveInterfaceLocation(String name, String directiveName) { + this.name = name; + this.directiveName = directiveName; + } + + public String getName() { + return name; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveObjectFieldArgumentLocation implements AppliedDirectiveLocationDetail { + private final String objectName; + private final String fieldName; + private final String argumentName; + private final String directiveName; + + + public AppliedDirectiveObjectFieldArgumentLocation(String objectName, String fieldName, String argumentName, String directiveName) { + this.objectName = objectName; + this.fieldName = fieldName; + this.argumentName = argumentName; + this.directiveName = directiveName; + } + + public String getObjectName() { + return objectName; + } + + public String getFieldName() { + return fieldName; + } + + public String getArgumentName() { + return argumentName; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveDirectiveArgumentLocation implements AppliedDirectiveLocationDetail { + // this is the applied directive name + private final String directiveName; + private final String directiveDefinitionName; + private final String argumentName; + + public AppliedDirectiveDirectiveArgumentLocation(String directiveDefinitionName, String argumentName, String directiveName) { + this.directiveDefinitionName = directiveDefinitionName; + this.argumentName = argumentName; + this.directiveName = directiveName; + } + + public String getDirectiveName() { + return directiveName; + } + + public String getArgumentName() { + return argumentName; + } + + public String getDirectiveDefinitionName() { + return directiveDefinitionName; + } + } + + class AppliedDirectiveInterfaceFieldArgumentLocation implements AppliedDirectiveLocationDetail { + private final String interfaceName; + private final String fieldName; + private final String argumentName; + private final String directiveName; + + + public AppliedDirectiveInterfaceFieldArgumentLocation(String interfaceName, String fieldName, String argumentName, String directiveName) { + this.interfaceName = interfaceName; + this.fieldName = fieldName; + this.argumentName = argumentName; + this.directiveName = directiveName; + } + + public String getInterfaceName() { + return interfaceName; + } + + public String getFieldName() { + return fieldName; + } + + public String getArgumentName() { + return argumentName; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveUnionLocation implements AppliedDirectiveLocationDetail { + private final String name; + private final String directiveName; + + + public AppliedDirectiveUnionLocation(String name, String directiveName) { + this.name = name; + this.directiveName = directiveName; + } + + public String getName() { + return name; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveEnumLocation implements AppliedDirectiveLocationDetail { + private final String name; + private final String directiveName; + + + public AppliedDirectiveEnumLocation(String name, String directiveName) { + this.name = name; + this.directiveName = directiveName; + } + + public String getName() { + return name; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveEnumValueLocation implements AppliedDirectiveLocationDetail { + private final String enumName; + private final String valueName; + private final String directiveName; + + + public AppliedDirectiveEnumValueLocation(String enumName, String valueName, String directiveName) { + this.enumName = enumName; + this.valueName = valueName; + this.directiveName = directiveName; + } + + public String getEnumName() { + return enumName; + } + + public String getValueName() { + return valueName; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveInputObjectLocation implements AppliedDirectiveLocationDetail { + private final String name; + private final String directiveName; + + + public AppliedDirectiveInputObjectLocation(String name, String directiveName) { + this.name = name; + this.directiveName = directiveName; + } + + public String getName() { + return name; + } + + public String getDirectiveName() { + return directiveName; + } + } + + + class AppliedDirectiveInputObjectFieldLocation implements AppliedDirectiveLocationDetail { + private final String inputObjectName; + private final String fieldName; + private final String directiveName; + + + public AppliedDirectiveInputObjectFieldLocation(String inputObjectName, String fieldName, String directiveName) { + this.inputObjectName = inputObjectName; + this.fieldName = fieldName; + this.directiveName = directiveName; + } + + public String getInputObjectName() { + return inputObjectName; + } + + public String getFieldName() { + return fieldName; + } + + public String getDirectiveName() { + return directiveName; + } + } + + class AppliedDirectiveAddition implements + ObjectModificationDetail, + InterfaceModificationDetail, + ScalarModificationDetail, + EnumModificationDetail, + InputObjectModificationDetail, + UnionModificationDetail, + DirectiveModificationDetail { + private final AppliedDirectiveLocationDetail locationDetail; + private final String name; + + public AppliedDirectiveAddition(AppliedDirectiveLocationDetail locationDetail, String name) { + this.locationDetail = locationDetail; + this.name = name; + } + + public String getName() { + return name; + } + + public AppliedDirectiveLocationDetail getLocationDetail() { + return locationDetail; + } + } + + class AppliedDirectiveDeletion implements + ObjectModificationDetail, + InterfaceModificationDetail, + ScalarModificationDetail, + EnumModificationDetail, + InputObjectModificationDetail, + UnionModificationDetail, + DirectiveModificationDetail { + + private final AppliedDirectiveLocationDetail locationDetail; + private final String name; + + public AppliedDirectiveDeletion(AppliedDirectiveLocationDetail locationDetail, String name) { + this.locationDetail = locationDetail; + this.name = name; + } + + public String getName() { + return name; + } + + public AppliedDirectiveLocationDetail getLocationDetail() { + return locationDetail; + } + + + } + + class AppliedDirectiveRenamed { + + } + + class AppliedDirectiveArgumentAddition implements ObjectModificationDetail, + InterfaceModificationDetail, + ScalarModificationDetail, + EnumModificationDetail, + UnionModificationDetail, + InputObjectModificationDetail, + DirectiveModificationDetail { + private final AppliedDirectiveLocationDetail locationDetail; + private final String argumentName; + + public AppliedDirectiveArgumentAddition(AppliedDirectiveLocationDetail locationDetail, String argumentName) { + this.locationDetail = locationDetail; + this.argumentName = argumentName; + } + + public AppliedDirectiveLocationDetail getLocationDetail() { + return locationDetail; + } + + public String getArgumentName() { + return argumentName; + } + } + + class AppliedDirectiveArgumentDeletion implements ObjectModificationDetail, + InterfaceModificationDetail, + ScalarModificationDetail, + EnumModificationDetail, + UnionModificationDetail, + InputObjectModificationDetail, + DirectiveModificationDetail { + private final AppliedDirectiveLocationDetail locationDetail; + private final String argumentName; + + public AppliedDirectiveArgumentDeletion(AppliedDirectiveLocationDetail locationDetail, String argumentName) { + this.locationDetail = locationDetail; + this.argumentName = argumentName; + } + + public AppliedDirectiveLocationDetail getLocationDetail() { + return locationDetail; + } + + public String getArgumentName() { + return argumentName; + } + } + + + class AppliedDirectiveArgumentValueModification implements ObjectModificationDetail, + InterfaceModificationDetail, + InputObjectModificationDetail, + EnumModificationDetail, + UnionModificationDetail, + ScalarModificationDetail, + DirectiveModificationDetail { + private final AppliedDirectiveLocationDetail locationDetail; + private final String argumentName; + private final String oldValue; + private final String newValue; + + public AppliedDirectiveArgumentValueModification(AppliedDirectiveLocationDetail locationDetail, String argumentName, String oldValue, String newValue) { + this.locationDetail = locationDetail; + this.argumentName = argumentName; + this.oldValue = oldValue; + this.newValue = newValue; + } + + public AppliedDirectiveLocationDetail getLocationDetail() { + return locationDetail; + } + + public String getArgumentName() { + return argumentName; + } + + public String getOldValue() { + return oldValue; + } + + public String getNewValue() { + return newValue; + } + } + + class AppliedDirectiveArgumentRename implements ObjectModificationDetail, InterfaceModificationDetail { + private final AppliedDirectiveLocationDetail locationDetail; + private final String oldName; + private final String newName; + + public AppliedDirectiveArgumentRename(AppliedDirectiveLocationDetail locationDetail, String oldName, String newName) { + this.locationDetail = locationDetail; + this.oldName = oldName; + this.newName = newName; + } + + public AppliedDirectiveLocationDetail getLocationDetail() { + return locationDetail; + } + + public String getOldName() { + return oldName; + } + + public String getNewName() { + return newName; + } + } + + +} diff --git a/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java b/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java new file mode 100644 index 0000000000..5ff38f5756 --- /dev/null +++ b/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java @@ -0,0 +1,227 @@ +package graphql.schema.fetching; + +import graphql.Internal; +import graphql.VisibleForTesting; +import graphql.util.FpKit; + +import java.lang.invoke.CallSite; +import java.lang.invoke.LambdaMetafactory; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import java.util.function.Function; +import java.util.function.Predicate; + +@Internal +public class LambdaFetchingSupport { + + + /** + * This support class will use {@link LambdaMetafactory} and {@link MethodHandles} to create a dynamic function that allows access to a public + * getter method on the nominated class. {@link MethodHandles} is a caller senstive lookup mechanism. If the graphql-java cant lookup a class, then + * it won't be able to make dynamic lambda function to it. + *

      + * If one cant be made, because it doesn't exist or the calling class does not have access to the method, then it will return + * an empty result indicating that this strategy cant be used. + * + * @param sourceClass the class that has the property getter method + * @param propertyName the name of the property to get + * + * @return a function that can be used to pass in an instance of source class and returns its getter method value + */ + public static Optional> createGetter(Class sourceClass, String propertyName) { + Method candidateMethod = getCandidateMethod(sourceClass, propertyName); + if (candidateMethod != null) { + try { + Function getterFunction = mkCallFunction(sourceClass, candidateMethod.getName(), candidateMethod.getReturnType()); + return Optional.of(getterFunction); + } catch (Throwable ignore) { + // + // if we cant make a dynamic lambda here, then we give up and let the old property fetching code do its thing + // this can happen on runtimes such as GraalVM native where LambdaMetafactory is not supported + // and will throw something like : + // + // com.oracle.svm.core.jdk.UnsupportedFeatureError: Defining hidden classes at runtime is not supported. + // at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:89) + } + } + return Optional.empty(); + } + + + private static Method getCandidateMethod(Class sourceClass, String propertyName) { + // property() methods first + Predicate recordLikePredicate = method -> isRecordLike(method) && propertyName.equals(decapitalize(method.getName())); + List recordLikeMethods = findMethodsForProperty(sourceClass, + recordLikePredicate); + if (!recordLikeMethods.isEmpty()) { + return recordLikeMethods.get(0); + } + + // getProperty() POJO methods next + Predicate getterPredicate = method -> isGetterNamed(method) && propertyName.equals(mkPropertyNameGetter(method)); + List allGetterMethods = findMethodsForProperty(sourceClass, + getterPredicate); + List pojoGetterMethods = FpKit.arrayListSizedTo(allGetterMethods); + for (Method allGetterMethod : allGetterMethods) { + if (isPossiblePojoMethod(allGetterMethod)) { + pojoGetterMethods.add(allGetterMethod); + } + } + if (!pojoGetterMethods.isEmpty()) { + Method method = pojoGetterMethods.get(0); + if (isBooleanGetter(method)) { + method = findBestBooleanGetter(pojoGetterMethods); + } + return checkForSingleParameterPeer(method, allGetterMethods); + } + return null; + } + + private static Method checkForSingleParameterPeer(Method candidateMethod, List allMethods) { + // getFoo(DataFetchingEnv ev) is allowed, but we don't want to handle it in this class + // so this find those edge cases + for (Method allMethod : allMethods) { + if (allMethod.getParameterCount() > 0) { + // we have some method with the property name that takes more than 1 argument + // we don't want to handle this here, so we are saying there is one + return null; + } + } + return candidateMethod; + } + + private static Method findBestBooleanGetter(List methods) { + // we prefer isX() over getX() if both happen to be present + Optional isMethod = Optional.empty(); + for (Method method : methods) { + if (method.getName().startsWith("is")) { + isMethod = Optional.of(method); + break; + } + } + return isMethod.orElse(methods.get(0)); + } + + /** + * Finds all methods in a class hierarchy that match the property name - they might not be suitable but they + * + * @param sourceClass the class we are looking to work on + * + * @return a list of getter methods for that property + */ + private static List findMethodsForProperty(Class sourceClass, Predicate predicate) { + List methods = new ArrayList<>(); + Class currentClass = sourceClass; + while (currentClass != null) { + Method[] declaredMethods = currentClass.getDeclaredMethods(); + for (Method declaredMethod : declaredMethods) { + if (predicate.test(declaredMethod)) { + methods.add(declaredMethod); + } + } + currentClass = currentClass.getSuperclass(); + } + + List list = new ArrayList<>(methods); + list.sort(Comparator.comparing(Method::getName)); + return list; + } + + private static boolean isPossiblePojoMethod(Method method) { + return !isObjectMethod(method) && + returnsSomething(method) && + isGetterNamed(method) && + hasNoParameters(method) && + isPublic(method); + } + + private static boolean isRecordLike(Method method) { + return !isObjectMethod(method) && + returnsSomething(method) && + hasNoParameters(method) && + isPublic(method); + } + + private static boolean isBooleanGetter(Method method) { + Class returnType = method.getReturnType(); + return isGetterNamed(method) && (returnType.equals(Boolean.class) || returnType.equals(Boolean.TYPE)); + } + + private static boolean hasNoParameters(Method method) { + return method.getParameterCount() == 0; + } + + private static boolean isGetterNamed(Method method) { + String name = method.getName(); + return ((name.startsWith("get") && name.length() > 4) || (name.startsWith("is") && name.length() > 3)); + } + + private static boolean returnsSomething(Method method) { + return !method.getReturnType().equals(Void.class); + } + + private static boolean isPublic(Method method) { + return Modifier.isPublic(method.getModifiers()); + } + + private static boolean isObjectMethod(Method method) { + return method.getDeclaringClass().equals(Object.class); + } + + private static String mkPropertyNameGetter(Method method) { + // + // getFooName becomes fooName + // isFoo becomes foo + // + String name = method.getName(); + if (name.startsWith("get")) { + name = name.substring(3); + } else if (name.startsWith("is")) { + name = name.substring(2); + } + return decapitalize(name); + } + + private static String decapitalize(String name) { + if (name.length() == 0) { + return name; + } + return name.substring(0, 1).toLowerCase() + name.substring(1); + } + + + @VisibleForTesting + static Function mkCallFunction(Class targetClass, String targetMethod, Class targetMethodReturnType) throws Throwable { + MethodHandles.Lookup lookup = getLookup(targetClass); + MethodHandle virtualMethodHandle = lookup.findVirtual(targetClass, targetMethod, MethodType.methodType(targetMethodReturnType)); + CallSite site = LambdaMetafactory.metafactory(lookup, + "apply", + MethodType.methodType(Function.class), + MethodType.methodType(Object.class, Object.class), + virtualMethodHandle, + MethodType.methodType(targetMethodReturnType, targetClass)); + @SuppressWarnings("unchecked") + Function getterFunction = (Function) site.getTarget().invokeExact(); + return getterFunction; + } + + private static MethodHandles.Lookup getLookup(Class targetClass) { + MethodHandles.Lookup lookupMe = MethodHandles.lookup(); + // + // This is a Java 9+ approach to method look up allowing private access + // + try { + return MethodHandles.privateLookupIn(targetClass, lookupMe); + } catch (IllegalAccessException e) { + return lookupMe; + } + } + +} diff --git a/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java b/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java index 1701771704..1711b635c0 100644 --- a/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java +++ b/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java @@ -1,15 +1,19 @@ package graphql.schema.idl; import graphql.AssertException; +import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; +import graphql.execution.CoercedVariables; import graphql.language.Argument; import graphql.language.ArrayValue; import graphql.language.Directive; import graphql.language.EnumTypeDefinition; +import graphql.language.EnumTypeExtensionDefinition; import graphql.language.EnumValue; import graphql.language.EnumValueDefinition; import graphql.language.InputObjectTypeDefinition; +import graphql.language.InputObjectTypeExtensionDefinition; import graphql.language.InputValueDefinition; import graphql.language.ListType; import graphql.language.Node; @@ -18,6 +22,7 @@ import graphql.language.ObjectField; import graphql.language.ObjectValue; import graphql.language.ScalarTypeDefinition; +import graphql.language.ScalarTypeExtensionDefinition; import graphql.language.Type; import graphql.language.TypeDefinition; import graphql.language.TypeName; @@ -25,46 +30,47 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.GraphQLScalarType; import graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError; -import graphql.util.LogKit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.function.Function; -import java.util.stream.Collectors; +import java.util.stream.Stream; import static graphql.Assert.assertShouldNeverHappen; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.DUPLICATED_KEYS_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_ENUM_MESSAGE; -import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_LIST_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_NON_NULL_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_OBJECT_MESSAGE; -import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_SCALAR_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.MISSING_REQUIRED_FIELD_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.MUST_BE_VALID_ENUM_VALUE_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.NOT_A_VALID_SCALAR_LITERAL_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.UNKNOWN_FIELDS_MESSAGE; +import static java.lang.String.format; +import static java.util.stream.Collectors.counting; +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; /** * Class to check whether a given directive argument value * matches a given directive definition. - * */ @Internal class ArgValueOfAllowedTypeChecker { - private static final Logger logNotSafe = LogKit.getNotPrivacySafeLogger(ArgValueOfAllowedTypeChecker.class); - private final Directive directive; - private final Node element; + private final Node element; private final String elementName; private final Argument argument; private final TypeDefinitionRegistry typeRegistry; private final RuntimeWiring runtimeWiring; ArgValueOfAllowedTypeChecker(final Directive directive, - final Node element, + final Node element, final String elementName, final Argument argument, final TypeDefinitionRegistry typeRegistry, @@ -80,20 +86,21 @@ class ArgValueOfAllowedTypeChecker { /** * Recursively inspects an argument value given an allowed type. * Given the (invalid) SDL below: - * - * directive @myDirective(arg: [[String]] ) on FIELD_DEFINITION - * - * query { - * f: String @myDirective(arg: ["A String"]) - * } - * + *

      + * directive @myDirective(arg: [[String]] ) on FIELD_DEFINITION + *

      + * query { + * f: String @myDirective(arg: ["A String"]) + * } + *

      * it will first check that the `myDirective.arg` type is an array * and fail when finding "A String" as it expected a nested array ([[String]]). - * @param errors validation error collector - * @param instanceValue directive argument value + * + * @param errors validation error collector + * @param instanceValue directive argument value * @param allowedArgType directive definition argument allowed type */ - void checkArgValueMatchesAllowedType(List errors, Value instanceValue, Type allowedArgType) { + void checkArgValueMatchesAllowedType(List errors, Value instanceValue, Type allowedArgType) { if (allowedArgType instanceof TypeName) { checkArgValueMatchesAllowedTypeName(errors, instanceValue, allowedArgType); } else if (allowedArgType instanceof ListType) { @@ -106,20 +113,22 @@ void checkArgValueMatchesAllowedType(List errors, Value instanceVa } private void addValidationError(List errors, String message, Object... args) { - errors.add(new DirectiveIllegalArgumentTypeError(element, elementName, directive.getName(), argument.getName(), String.format(message, args))); + errors.add(new DirectiveIllegalArgumentTypeError(element, elementName, directive.getName(), argument.getName(), format(message, args))); } - private void checkArgValueMatchesAllowedTypeName(List errors, Value instanceValue, Type allowedArgType) { + private void checkArgValueMatchesAllowedTypeName(List errors, Value instanceValue, Type allowedArgType) { if (instanceValue instanceof NullValue) { return; } String allowedTypeName = ((TypeName) allowedArgType).getName(); - TypeDefinition allowedTypeDefinition = typeRegistry.getType(allowedTypeName) - .orElseThrow(() -> new AssertException("Directive unknown argument type '%s'. This should have been validated before.")); + TypeDefinition allowedTypeDefinition = typeRegistry.getTypeOrNull(allowedTypeName); + if (allowedTypeDefinition == null) { + throw new AssertException(format("Directive unknown argument type '%s'. This should have been validated before.", allowedTypeName)); + } if (allowedTypeDefinition instanceof ScalarTypeDefinition) { - checkArgValueMatchesAllowedScalar(errors, instanceValue, allowedTypeName); + checkArgValueMatchesAllowedScalar(errors, instanceValue, (ScalarTypeDefinition) allowedTypeDefinition); } else if (allowedTypeDefinition instanceof EnumTypeDefinition) { checkArgValueMatchesAllowedEnum(errors, instanceValue, (EnumTypeDefinition) allowedTypeDefinition); } else if (allowedTypeDefinition instanceof InputObjectTypeDefinition) { @@ -129,7 +138,7 @@ private void checkArgValueMatchesAllowedTypeName(List errors, Valu } } - private void checkArgValueMatchesAllowedInputType(List errors, Value instanceValue, InputObjectTypeDefinition allowedTypeDefinition) { + private void checkArgValueMatchesAllowedInputType(List errors, Value instanceValue, InputObjectTypeDefinition allowedTypeDefinition) { if (!(instanceValue instanceof ObjectValue)) { addValidationError(errors, EXPECTED_OBJECT_MESSAGE, instanceValue.getClass().getSimpleName()); return; @@ -140,40 +149,42 @@ private void checkArgValueMatchesAllowedInputType(List errors, Val // then it must be the same type as the definition List fields = objectValue.getObjectFields(); - List inputValueDefinitions = allowedTypeDefinition.getInputValueDefinitions(); + List inputObjExt = typeRegistry.inputObjectTypeExtensions().getOrDefault(allowedTypeDefinition.getName(), emptyList()); + Stream inputObjExtValues = inputObjExt.stream().flatMap(inputObj -> inputObj.getInputValueDefinitions().stream()); + List inputValueDefinitions = Stream.concat(allowedTypeDefinition.getInputValueDefinitions().stream(), inputObjExtValues).collect(toList()); // check for duplicated fields Map fieldsToOccurrenceMap = fields.stream().map(ObjectField::getName) - .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); + .collect(groupingBy(Function.identity(), counting())); if (fieldsToOccurrenceMap.values().stream().anyMatch(count -> count > 1)) { addValidationError(errors, DUPLICATED_KEYS_MESSAGE, fieldsToOccurrenceMap.entrySet().stream() .filter(entry -> entry.getValue() > 1) .map(Map.Entry::getKey) - .collect(Collectors.joining(","))); + .collect(joining(","))); return; } // check for unknown fields Map nameToInputValueDefMap = inputValueDefinitions.stream() - .collect(Collectors.toMap(InputValueDefinition::getName, inputValueDef -> inputValueDef)); + .collect(toMap(InputValueDefinition::getName, inputValueDef -> inputValueDef)); List unknownFields = fields.stream() .filter(field -> !nameToInputValueDefMap.containsKey(field.getName())) - .collect(Collectors.toList()); + .collect(toList()); if (!unknownFields.isEmpty()) { addValidationError(errors, UNKNOWN_FIELDS_MESSAGE, unknownFields.stream() .map(ObjectField::getName) - .collect(Collectors.joining(",")), + .collect(joining(",")), allowedTypeDefinition.getName()); return; } // fields to map for easy access Map nameToFieldsMap = fields.stream() - .collect(Collectors.toMap(ObjectField::getName, objectField -> objectField)); + .collect(toMap(ObjectField::getName, objectField -> objectField)); // check each single field with its definition inputValueDefinitions.forEach(allowedValueDef -> { ObjectField objectField = nameToFieldsMap.get(allowedValueDef.getName()); @@ -181,7 +192,7 @@ private void checkArgValueMatchesAllowedInputType(List errors, Val }); } - private void checkArgValueMatchesAllowedEnum(List errors, Value instanceValue, EnumTypeDefinition allowedTypeDefinition) { + private void checkArgValueMatchesAllowedEnum(List errors, Value instanceValue, EnumTypeDefinition allowedTypeDefinition) { if (!(instanceValue instanceof EnumValue)) { addValidationError(errors, EXPECTED_ENUM_MESSAGE, instanceValue.getClass().getSimpleName()); return; @@ -189,29 +200,36 @@ private void checkArgValueMatchesAllowedEnum(List errors, Value in EnumValue enumValue = ((EnumValue) instanceValue); - boolean noneMatchAllowedEnumValue = allowedTypeDefinition.getEnumValueDefinitions().stream() + List enumExtensions = typeRegistry.enumTypeExtensions().getOrDefault(allowedTypeDefinition.getName(), emptyList()); + Stream enumExtStream = enumExtensions.stream().flatMap(enumExt -> enumExt.getEnumValueDefinitions().stream()); + List enumValueDefinitions = Stream.concat(allowedTypeDefinition.getEnumValueDefinitions().stream(), enumExtStream).collect(toList()); + + boolean noneMatchAllowedEnumValue = enumValueDefinitions.stream() .noneMatch(enumAllowedValue -> enumAllowedValue.getName().equals(enumValue.getName())); if (noneMatchAllowedEnumValue) { - addValidationError(errors, MUST_BE_VALID_ENUM_VALUE_MESSAGE, enumValue.getName(), allowedTypeDefinition.getEnumValueDefinitions().stream() - .map(EnumValueDefinition::getName) - .collect(Collectors.joining(","))); + addValidationError(errors, MUST_BE_VALID_ENUM_VALUE_MESSAGE, enumValue.getName(), enumValueDefinitions.stream() + .map(EnumValueDefinition::getName) + .collect(joining(","))); } } - private void checkArgValueMatchesAllowedScalar(List errors, Value instanceValue, String allowedTypeName) { - if (instanceValue instanceof ArrayValue - || instanceValue instanceof EnumValue - || instanceValue instanceof ObjectValue) { - addValidationError(errors, EXPECTED_SCALAR_MESSAGE, instanceValue.getClass().getSimpleName()); - return; - } + private void checkArgValueMatchesAllowedScalar(List errors, Value instanceValue, ScalarTypeDefinition allowedTypeDefinition) { + // scalars are allowed to accept ANY literal value - its up to their coercion to decide if its valid or not + List extensions = typeRegistry.scalarTypeExtensions().getOrDefault(allowedTypeDefinition.getName(), emptyList()); + ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, allowedTypeDefinition, extensions); + WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); - GraphQLScalarType scalarType = runtimeWiring.getScalars().get(allowedTypeName); + GraphQLScalarType scalarType; + if (wiringFactory.providesScalar(environment)) { + scalarType = wiringFactory.getScalar(environment); + } else { + scalarType = runtimeWiring.getScalars().get(allowedTypeDefinition.getName()); + } // scalarType will always be present as // scalar implementation validation has been performed earlier if (!isArgumentValueScalarLiteral(scalarType, instanceValue)) { - addValidationError(errors, NOT_A_VALID_SCALAR_LITERAL_MESSAGE, allowedTypeName); + addValidationError(errors, NOT_A_VALID_SCALAR_LITERAL_MESSAGE, allowedTypeDefinition.getName()); } } @@ -232,39 +250,44 @@ private void checkArgInputObjectValueFieldMatchesAllowedDefinition(List errors, Value instanceValue, NonNullType allowedArgType) { + private void checkArgValueMatchesAllowedNonNullType(List errors, Value instanceValue, NonNullType allowedArgType) { if (instanceValue instanceof NullValue) { addValidationError(errors, EXPECTED_NON_NULL_MESSAGE); return; } - Type unwrappedAllowedType = allowedArgType.getType(); + Type unwrappedAllowedType = allowedArgType.getType(); checkArgValueMatchesAllowedType(errors, instanceValue, unwrappedAllowedType); } - private void checkArgValueMatchesAllowedListType(List errors, Value instanceValue, ListType allowedArgType) { - if (instanceValue instanceof NullValue) { - return; + private void checkArgValueMatchesAllowedListType(List errors, Value instanceValue, ListType allowedArgType) { + // From the spec, on input coercion: + // If the value passed as an input to a list type is not a list and not the null value, + // then the result of input coercion is a list of size one where the single item value + // is the result of input coercion for the list’s item type on the provided value + // (note this may apply recursively for nested lists). + + Value coercedInstanceValue = instanceValue; + if (!(instanceValue instanceof ArrayValue) && !(instanceValue instanceof NullValue)) { + coercedInstanceValue = new ArrayValue(Collections.singletonList(instanceValue)); } - if (!(instanceValue instanceof ArrayValue)) { - addValidationError(errors, EXPECTED_LIST_MESSAGE, instanceValue.getClass().getSimpleName()); + if (coercedInstanceValue instanceof NullValue) { return; } - ArrayValue arrayValue = ((ArrayValue) instanceValue); - Type unwrappedAllowedType = allowedArgType.getType(); - - // validate each instance value in the list, all instances must match for the list to match - arrayValue.getValues().forEach(value -> checkArgValueMatchesAllowedType(errors, value, unwrappedAllowedType)); + Type unwrappedAllowedType = allowedArgType.getType(); + ArrayValue arrayValue = ((ArrayValue) coercedInstanceValue); + arrayValue.getValues().forEach(value -> { + checkArgValueMatchesAllowedType(errors, value, unwrappedAllowedType); + }); } - private boolean isArgumentValueScalarLiteral(GraphQLScalarType scalarType, Value instanceValue) { + private boolean isArgumentValueScalarLiteral(GraphQLScalarType scalarType, Value instanceValue) { try { - scalarType.getCoercing().parseLiteral(instanceValue); + scalarType.getCoercing().parseLiteral(instanceValue, CoercedVariables.emptyVariables(), GraphQLContext.getDefault(), Locale.getDefault()); return true; } catch (CoercingParseLiteralException ex) { - logNotSafe.debug("Attempted parsing literal into '{}' but got the following error: ", scalarType.getName(), ex); return false; } } diff --git a/src/main/java/graphql/schema/idl/CombinedWiringFactory.java b/src/main/java/graphql/schema/idl/CombinedWiringFactory.java index 643f3cd4ac..1ff2eb4845 100644 --- a/src/main/java/graphql/schema/idl/CombinedWiringFactory.java +++ b/src/main/java/graphql/schema/idl/CombinedWiringFactory.java @@ -1,7 +1,9 @@ package graphql.schema.idl; +import graphql.PublicApi; import graphql.schema.DataFetcher; import graphql.schema.DataFetcherFactory; +import graphql.schema.GraphQLScalarType; import graphql.schema.TypeResolver; import java.util.ArrayList; @@ -14,6 +16,7 @@ * This combines a number of {@link WiringFactory}s together to act as one. It asks each one * whether it handles a type and delegates to the first one to answer yes. */ +@PublicApi public class CombinedWiringFactory implements WiringFactory { private final List factories; @@ -101,4 +104,55 @@ public DataFetcher getDataFetcher(FieldWiringEnvironment environment) { } return assertShouldNeverHappen(); } + + @Override + public boolean providesScalar(ScalarWiringEnvironment environment) { + for (WiringFactory factory : factories) { + if (factory.providesScalar(environment)) { + return true; + } + } + return false; + } + + @Override + public GraphQLScalarType getScalar(ScalarWiringEnvironment environment) { + for (WiringFactory factory : factories) { + if (factory.providesScalar(environment)) { + return factory.getScalar(environment); + } + } + return assertShouldNeverHappen(); + } + + @Override + public boolean providesSchemaDirectiveWiring(SchemaDirectiveWiringEnvironment environment) { + for (WiringFactory factory : factories) { + if (factory.providesSchemaDirectiveWiring(environment)) { + return true; + } + } + return false; + } + + @Override + public SchemaDirectiveWiring getSchemaDirectiveWiring(SchemaDirectiveWiringEnvironment environment) { + for (WiringFactory factory : factories) { + if (factory.providesSchemaDirectiveWiring(environment)) { + return factory.getSchemaDirectiveWiring(environment); + } + } + return assertShouldNeverHappen(); + } + + @Override + public DataFetcher getDefaultDataFetcher(FieldWiringEnvironment environment) { + for (WiringFactory factory : factories) { + if (factory.getDefaultDataFetcher(environment) != null) { + return factory.getDefaultDataFetcher(environment); + } + } + return null; + } + } diff --git a/src/main/java/graphql/schema/idl/DirectiveInfo.java b/src/main/java/graphql/schema/idl/DirectiveInfo.java new file mode 100644 index 0000000000..9b8317f97e --- /dev/null +++ b/src/main/java/graphql/schema/idl/DirectiveInfo.java @@ -0,0 +1,61 @@ +package graphql.schema.idl; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.Directives; +import graphql.PublicApi; +import graphql.schema.GraphQLDirective; + +import java.util.Map; +import java.util.Set; + +/** + * Info on all the directives provided by graphql specification + */ +@PublicApi +public class DirectiveInfo { + + + /** + * A map from directive name to directive which provided by specification + */ + public static final Map GRAPHQL_SPECIFICATION_DIRECTIVE_MAP = ImmutableMap.of( + Directives.IncludeDirective.getName(), Directives.IncludeDirective, + Directives.SkipDirective.getName(), Directives.SkipDirective, + Directives.DeprecatedDirective.getName(), Directives.DeprecatedDirective, + Directives.SpecifiedByDirective.getName(), Directives.SpecifiedByDirective, + Directives.OneOfDirective.getName(), Directives.OneOfDirective, + // technically this is NOT yet in spec - but it is added by default by graphql-java so we include it + // we should also do @defer at some future time soon + Directives.DeferDirective.getName(), Directives.DeferDirective, + Directives.ExperimentalDisableErrorPropagationDirective.getName(), Directives.ExperimentalDisableErrorPropagationDirective + ); + /** + * A set of directives which provided by graphql specification + */ + public static final Set GRAPHQL_SPECIFICATION_DIRECTIVES =ImmutableSet.copyOf(GRAPHQL_SPECIFICATION_DIRECTIVE_MAP.values()); + + /** + * Returns true if a directive with provided directiveName has been defined in graphql specification + * + * @param directiveName the name of directive in question + * + * @return true if the directive provided by graphql specification, and false otherwise + */ + public static boolean isGraphqlSpecifiedDirective(String directiveName) { + return GRAPHQL_SPECIFICATION_DIRECTIVE_MAP.containsKey(directiveName); + } + + /** + * Returns true if the provided directive has been defined in graphql specification + * + * @param graphQLDirective the directive in question + * + * @return true if the directive provided by graphql specification, and false otherwise + */ + public static boolean isGraphqlSpecifiedDirective(GraphQLDirective graphQLDirective) { + return isGraphqlSpecifiedDirective(graphQLDirective.getName()); + } + + +} diff --git a/src/main/java/graphql/schema/idl/EchoingWiringFactory.java b/src/main/java/graphql/schema/idl/EchoingWiringFactory.java index 5f8988d916..e7be922da8 100644 --- a/src/main/java/graphql/schema/idl/EchoingWiringFactory.java +++ b/src/main/java/graphql/schema/idl/EchoingWiringFactory.java @@ -10,8 +10,6 @@ import graphql.schema.PropertyDataFetcher; import graphql.schema.TypeResolver; -import java.math.BigDecimal; -import java.math.BigInteger; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Consumer; @@ -98,21 +96,13 @@ private static Object fakeScalarValue(String fieldName, GraphQLScalarType scalar return 1.0; } else if (scalarType.equals(Scalars.GraphQLID)) { return "id_" + fieldName; - } else if (scalarType.equals(Scalars.GraphQLBigDecimal)) { - return new BigDecimal(1.0); - } else if (scalarType.equals(Scalars.GraphQLBigInteger)) { - return new BigInteger("1"); - } else if (scalarType.equals(Scalars.GraphQLByte)) { - return Byte.valueOf("1"); - } else if (scalarType.equals(Scalars.GraphQLShort)) { - return Short.valueOf("1"); } else { return null; } } public static GraphQLScalarType fakeScalar(String name) { - return new GraphQLScalarType(name, name, new Coercing() { + return GraphQLScalarType.newScalar().name(name).coercing(new Coercing() { @Override public Object serialize(Object dataFetcherResult) { return dataFetcherResult; @@ -127,7 +117,8 @@ public Object parseValue(Object input) { public Object parseLiteral(Object input) { return input; } - }); + }) + .build(); } } diff --git a/src/main/java/graphql/schema/idl/FetchSchemaDirectiveWiring.java b/src/main/java/graphql/schema/idl/FetchSchemaDirectiveWiring.java deleted file mode 100644 index 2cdb554676..0000000000 --- a/src/main/java/graphql/schema/idl/FetchSchemaDirectiveWiring.java +++ /dev/null @@ -1,41 +0,0 @@ -package graphql.schema.idl; - -import graphql.Internal; -import graphql.schema.DataFetcher; -import graphql.schema.GraphQLArgument; -import graphql.schema.GraphQLDirective; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.PropertyDataFetcher; - -import java.util.List; -import java.util.Optional; - -import static graphql.DirectivesUtil.directiveWithArg; -import static graphql.schema.FieldCoordinates.coordinates; - -/** - * This adds ' @fetch(from : "otherName") ' support so you can rename what property is read for a given field - */ -@Internal -public class FetchSchemaDirectiveWiring implements SchemaDirectiveWiring { - - public static final String FETCH = "fetch"; - - @Override - public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment environment) { - GraphQLFieldDefinition field = environment.getElement(); - String fetchName = atFetchFromSupport(field.getName(), field.getDirectives()); - DataFetcher dataFetcher = new PropertyDataFetcher(fetchName); - - environment.getCodeRegistry().dataFetcher(coordinates(environment.getFieldsContainer(), field), dataFetcher); - return field; - } - - - private String atFetchFromSupport(String fieldName, List directives) { - // @fetch(from : "name") - Optional from = directiveWithArg(directives, FETCH, "from"); - return from.map(arg -> String.valueOf(arg.getValue())).orElse(fieldName); - } - -} diff --git a/src/main/java/graphql/schema/idl/FieldWiringEnvironment.java b/src/main/java/graphql/schema/idl/FieldWiringEnvironment.java index 06cee69b9c..8dffb025ed 100644 --- a/src/main/java/graphql/schema/idl/FieldWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/FieldWiringEnvironment.java @@ -3,25 +3,30 @@ import graphql.PublicApi; import graphql.language.FieldDefinition; import graphql.language.TypeDefinition; +import graphql.schema.GraphQLAppliedDirective; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLOutputType; +import org.jspecify.annotations.NullMarked; import java.util.List; @PublicApi +@NullMarked public class FieldWiringEnvironment extends WiringEnvironment { private final FieldDefinition fieldDefinition; private final TypeDefinition parentType; private final GraphQLOutputType fieldType; private final List directives; + private final List appliedDirectives; - FieldWiringEnvironment(TypeDefinitionRegistry registry, TypeDefinition parentType, FieldDefinition fieldDefinition, GraphQLOutputType fieldType, List directives) { + FieldWiringEnvironment(TypeDefinitionRegistry registry, TypeDefinition parentType, FieldDefinition fieldDefinition, GraphQLOutputType fieldType, List directives, List appliedDirectives) { super(registry); this.fieldDefinition = fieldDefinition; this.parentType = parentType; this.fieldType = fieldType; this.directives = directives; + this.appliedDirectives = appliedDirectives; } public FieldDefinition getFieldDefinition() { @@ -39,4 +44,8 @@ public GraphQLOutputType getFieldType() { public List getDirectives() { return directives; } -} \ No newline at end of file + + public List getAppliedDirectives() { + return appliedDirectives; + } +} diff --git a/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java b/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java new file mode 100644 index 0000000000..e1dff06e57 --- /dev/null +++ b/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java @@ -0,0 +1,134 @@ +package graphql.schema.idl; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.GraphQLError; +import graphql.PublicApi; +import graphql.language.DirectiveDefinition; +import graphql.language.EnumTypeExtensionDefinition; +import graphql.language.InputObjectTypeExtensionDefinition; +import graphql.language.InterfaceTypeExtensionDefinition; +import graphql.language.ObjectTypeExtensionDefinition; +import graphql.language.SDLDefinition; +import graphql.language.ScalarTypeDefinition; +import graphql.language.ScalarTypeExtensionDefinition; +import graphql.language.SchemaExtensionDefinition; +import graphql.language.TypeDefinition; +import graphql.language.UnionTypeExtensionDefinition; +import graphql.schema.idl.errors.SchemaProblem; +import org.jspecify.annotations.NullMarked; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static com.google.common.collect.ImmutableMap.copyOf; + +/** + * A {@link ImmutableTypeDefinitionRegistry} contains an immutable set of type definitions that come from compiling + * a graphql schema definition file via {@link SchemaParser#parse(String)} and is more performant because it + * uses {@link ImmutableMap} structures. + */ +@SuppressWarnings("rawtypes") +@PublicApi +@NullMarked +public class ImmutableTypeDefinitionRegistry extends TypeDefinitionRegistry { + + ImmutableTypeDefinitionRegistry(TypeDefinitionRegistry registry) { + super( + copyOf(registry.objectTypeExtensions), + copyOf(registry.interfaceTypeExtensions), + copyOf(registry.unionTypeExtensions), + copyOf(registry.enumTypeExtensions), + copyOf(registry.scalarTypeExtensions), + copyOf(registry.inputObjectTypeExtensions), + copyOf(registry.types), + copyOf(registry.scalars()), // has an extra side effect + copyOf(registry.directiveDefinitions), + ImmutableList.copyOf(registry.schemaExtensionDefinitions), + registry.schema, + registry.schemaParseOrder + ); + } + + + private UnsupportedOperationException unsupportedOperationException() { + return new UnsupportedOperationException("The TypeDefinitionRegistry is in read only mode"); + } + + @Override + public TypeDefinitionRegistry merge(TypeDefinitionRegistry typeRegistry) throws SchemaProblem { + throw unsupportedOperationException(); + } + + @Override + public Optional addAll(Collection definitions) { + throw unsupportedOperationException(); + } + + @Override + public Optional add(SDLDefinition definition) { + throw unsupportedOperationException(); + } + + @Override + public void remove(SDLDefinition definition) { + throw unsupportedOperationException(); + } + + @Override + public void remove(String key, SDLDefinition definition) { + throw unsupportedOperationException(); + } + + @Override + public Map types() { + return types; + } + + @Override + public Map scalars() { + return scalarTypes; + } + + @Override + public Map> objectTypeExtensions() { + return objectTypeExtensions; + } + + @Override + public Map> interfaceTypeExtensions() { + return interfaceTypeExtensions; + } + + @Override + public Map> unionTypeExtensions() { + return unionTypeExtensions; + } + + @Override + public Map> enumTypeExtensions() { + return enumTypeExtensions; + } + + @Override + public Map> scalarTypeExtensions() { + return scalarTypeExtensions; + } + + @Override + public Map> inputObjectTypeExtensions() { + return inputObjectTypeExtensions; + } + + @Override + public List getSchemaExtensionDefinitions() { + return schemaExtensionDefinitions; + } + + @Override + public Map getDirectiveDefinitions() { + return directiveDefinitions; + } +} diff --git a/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java b/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java new file mode 100644 index 0000000000..0294e290a1 --- /dev/null +++ b/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java @@ -0,0 +1,271 @@ +package graphql.schema.idl; + +import graphql.GraphQLError; +import graphql.Internal; +import graphql.language.AstPrinter; +import graphql.language.FieldDefinition; +import graphql.language.ImplementingTypeDefinition; +import graphql.language.InputValueDefinition; +import graphql.language.InterfaceTypeDefinition; +import graphql.language.InterfaceTypeExtensionDefinition; +import graphql.language.NonNullType; +import graphql.language.ObjectTypeDefinition; +import graphql.language.ObjectTypeExtensionDefinition; +import graphql.language.Type; +import graphql.language.TypeName; +import graphql.schema.idl.errors.InterfaceFieldArgumentNotOptionalError; +import graphql.schema.idl.errors.InterfaceFieldArgumentRedefinitionError; +import graphql.schema.idl.errors.InterfaceFieldRedefinitionError; +import graphql.schema.idl.errors.InterfaceImplementedMoreThanOnceError; +import graphql.schema.idl.errors.InterfaceImplementingItselfError; +import graphql.schema.idl.errors.InterfaceWithCircularImplementationHierarchyError; +import graphql.schema.idl.errors.MissingInterfaceFieldArgumentsError; +import graphql.schema.idl.errors.MissingInterfaceFieldError; +import graphql.schema.idl.errors.MissingTransitiveInterfaceError; +import graphql.util.FpKit; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.stream.Stream; + +import static graphql.collect.ImmutableKit.emptyList; +import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.toSet; + +/** + * A support class to help break up the large SchemaTypeChecker class. This handles + * the checking of {@link graphql.language.ImplementingTypeDefinition}s. + */ +@Internal +class ImplementingTypesChecker { + private static final Map, String> TYPE_OF_MAP = new HashMap<>(); + + static { + TYPE_OF_MAP.put(ObjectTypeDefinition.class, "object"); + TYPE_OF_MAP.put(ObjectTypeExtensionDefinition.class, "object extension"); + TYPE_OF_MAP.put(InterfaceTypeDefinition.class, "interface"); + TYPE_OF_MAP.put(InterfaceTypeExtensionDefinition.class, "interface extension"); + } + + /* + * "Implementing types" (i.e.: types that might implement interfaces) have the potential to be invalid if incorrectly defined. + * + * The same interface might not be implemented more than once by a type and its extensions + * The implementing type must implement all the transitive interfaces + * An interface implementation must not result in a circular reference (i.e.: an interface implementing itself) + * All fields declared by an interface have to be correctly declared by its implementing type, including the proper field arguments + */ + void checkImplementingTypes(List errors, TypeDefinitionRegistry typeRegistry) { + List interfaces = typeRegistry.getTypes(InterfaceTypeDefinition.class); + List objects = typeRegistry.getTypes(ObjectTypeDefinition.class); + + Stream.>concat(interfaces.stream(), objects.stream()) + .forEach(type -> checkImplementingType(errors, typeRegistry, type)); + } + + private void checkImplementingType( + List errors, + TypeDefinitionRegistry typeRegistry, + ImplementingTypeDefinition type) { + + Map implementedInterfaces = + checkInterfacesNotImplementedMoreThanOnce(errors, type, typeRegistry); + + checkInterfaceIsImplemented(errors, typeRegistry, type, implementedInterfaces); + + checkAncestorImplementation(errors, typeRegistry, type, implementedInterfaces); + } + + private Map checkInterfacesNotImplementedMoreThanOnce( + List errors, + ImplementingTypeDefinition type, + TypeDefinitionRegistry typeRegistry + ) { + Map> implementedInterfaces = + getLogicallyImplementedInterfaces(type, typeRegistry); + + Map interfacesImplementedOnce = implementedInterfaces.entrySet() + .stream() + .filter(entry -> entry.getValue().size() == 1) + .collect(toMap( + Map.Entry::getKey, + entry -> entry.getValue().get(0) + )); + + implementedInterfaces.entrySet().stream() + .filter(entry -> !interfacesImplementedOnce.containsKey(entry.getKey())) + .forEach(entry -> { + entry.getValue().forEach(offendingType -> { + errors.add(new InterfaceImplementedMoreThanOnceError(TYPE_OF_MAP.get(offendingType.getClass()), offendingType, entry.getKey())); + }); + }); + + return interfacesImplementedOnce; + } + + private void checkAncestorImplementation( + List errors, + TypeDefinitionRegistry typeRegistry, + ImplementingTypeDefinition type, + Map implementedInterfaces) { + + if (implementedInterfaces.containsKey(type)) { + errors.add(new InterfaceImplementingItselfError(TYPE_OF_MAP.get(type.getClass()), type)); + return; + } + + implementedInterfaces.forEach((implementedInterface, implementingType) -> { + Set transitiveInterfaces = getLogicallyImplementedInterfaces(implementedInterface, typeRegistry).keySet(); + + transitiveInterfaces.forEach(transitiveInterface -> { + if (transitiveInterface.equals(type)) { + errors.add(new InterfaceWithCircularImplementationHierarchyError(TYPE_OF_MAP.get(type.getClass()), type, implementedInterface)); + } else if (!implementedInterfaces.containsKey(transitiveInterface)) { + errors.add(new MissingTransitiveInterfaceError(TYPE_OF_MAP.get(implementingType.getClass()), implementingType, implementedInterface, transitiveInterface)); + } + }); + }); + } + + private void checkInterfaceIsImplemented( + List errors, + TypeDefinitionRegistry typeRegistry, + ImplementingTypeDefinition type, + Map implementedInterfaces + ) { + Set fieldDefinitions = getLogicallyDeclaredFields(type, typeRegistry); + + Map typeFields = fieldDefinitions.stream() + .collect(toMap(FieldDefinition::getName, Function.identity(), mergeFirstValue())); + + implementedInterfaces.forEach((implementedInterface, implementingType) -> { + implementedInterface.getFieldDefinitions().forEach(interfaceFieldDef -> { + FieldDefinition typeFieldDef = typeFields.get(interfaceFieldDef.getName()); + if (typeFieldDef == null) { + errors.add(new MissingInterfaceFieldError(TYPE_OF_MAP.get(implementingType.getClass()), implementingType, implementedInterface, interfaceFieldDef)); + } else { + if (!typeRegistry.isSubTypeOf(typeFieldDef.getType(), interfaceFieldDef.getType())) { + String interfaceFieldType = AstPrinter.printAst(interfaceFieldDef.getType()); + String objectFieldType = AstPrinter.printAst(typeFieldDef.getType()); + errors.add(new InterfaceFieldRedefinitionError(TYPE_OF_MAP.get(implementingType.getClass()), implementingType, implementedInterface, typeFieldDef, objectFieldType, interfaceFieldType)); + } + + // look at arguments + List objectArgs = typeFieldDef.getInputValueDefinitions(); + List interfaceArgs = interfaceFieldDef.getInputValueDefinitions(); + if (objectArgs.size() < interfaceArgs.size()) { + errors.add(new MissingInterfaceFieldArgumentsError(TYPE_OF_MAP.get(implementingType.getClass()), implementingType, implementedInterface, typeFieldDef)); + } else { + checkArgumentConsistency(TYPE_OF_MAP.get(implementingType.getClass()), implementingType, implementedInterface, typeFieldDef, interfaceFieldDef, errors); + } + } + }); + }); + } + + private void checkArgumentConsistency( + String typeOfType, + ImplementingTypeDefinition objectTypeDef, + InterfaceTypeDefinition interfaceTypeDef, + FieldDefinition objectFieldDef, + FieldDefinition interfaceFieldDef, + List errors + ) { + Map objectArgs = FpKit.getByName(objectFieldDef.getInputValueDefinitions(), InputValueDefinition::getName); + Map interfaceArgs = FpKit.getByName(interfaceFieldDef.getInputValueDefinitions(), InputValueDefinition::getName); + for (Map.Entry interfaceEntries : interfaceArgs.entrySet()) { + InputValueDefinition interfaceArg = interfaceEntries.getValue(); + InputValueDefinition objectArg = objectArgs.get(interfaceEntries.getKey()); + if (objectArg == null) { + errors.add(new MissingInterfaceFieldArgumentsError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef)); + } else { + // we need to remove the not relevant applied directives on the argument definitions to compare + String interfaceArgStr = AstPrinter.printAstCompact(interfaceArg.transform(builder -> builder.directives(emptyList()))); + String objectArgStr = AstPrinter.printAstCompact(objectArg.transform(builder -> builder.directives(emptyList()))); + if (!interfaceArgStr.equals(objectArgStr)) { + errors.add(new InterfaceFieldArgumentRedefinitionError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, objectArgStr, interfaceArgStr)); + } + } + } + + if (objectArgs.size() > interfaceArgs.size()) { + for (Map.Entry objetEntries : objectArgs.entrySet()) { + InputValueDefinition objectArg = objetEntries.getValue(); + InputValueDefinition interfaceArg = interfaceArgs.get(objetEntries.getKey()); + if (interfaceArg == null) { + // there is no interface counterpart previously checked above + if (objectArg.getType() instanceof NonNullType) { + String objectArgStr = AstPrinter.printAst(objectArg); + errors.add(new InterfaceFieldArgumentNotOptionalError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, objectArgStr)); + } + } + } + } + } + + private Map> getLogicallyImplementedInterfaces( + ImplementingTypeDefinition type, + TypeDefinitionRegistry typeRegistry + ) { + + Stream extensions = Stream.concat( + typeRegistry.interfaceTypeExtensions().getOrDefault(type.getName(), emptyList()).stream(), + typeRegistry.objectTypeExtensions().getOrDefault(type.getName(), emptyList()).stream() + ); + + return Stream.concat(Stream.of(type), extensions) + .collect(HashMap::new, (map, implementingType) -> { + List implementedInterfaces = implementingType.getImplements(); + + toInterfaceTypeDefinitions(typeRegistry, implementedInterfaces).forEach(implemented -> { + List implementingTypes = map.getOrDefault(implemented, new ArrayList<>()); + implementingTypes.add(implementingType); + map.put(implemented, implementingTypes); + }); + }, HashMap::putAll); + + } + + private Set getLogicallyDeclaredFields( + ImplementingTypeDefinition type, + TypeDefinitionRegistry typeRegistry + ) { + + Stream extensions = Stream.concat( + typeRegistry.interfaceTypeExtensions().getOrDefault(type.getName(), emptyList()).stream(), + typeRegistry.objectTypeExtensions().getOrDefault(type.getName(), emptyList()).stream() + ); + + return Stream.concat(Stream.of(type), extensions) + .flatMap(implementingType -> { + List fieldDefinitions = implementingType.getFieldDefinitions(); + return fieldDefinitions.stream(); + }) + .collect(toSet()); + } + + private BinaryOperator mergeFirstValue() { + return (v1, v2) -> v1; + } + + private InterfaceTypeDefinition toInterfaceTypeDefinition(Type type, TypeDefinitionRegistry typeRegistry) { + TypeInfo typeInfo = TypeInfo.typeInfo(type); + TypeName unwrapped = typeInfo.getTypeName(); + + return typeRegistry.getTypeOrNull(unwrapped, InterfaceTypeDefinition.class); + } + + private Set toInterfaceTypeDefinitions(TypeDefinitionRegistry typeRegistry, Collection implementsTypes) { + return implementsTypes.stream() + .map(t -> toInterfaceTypeDefinition(t, typeRegistry)) + .filter(Objects::nonNull) + .collect(toSet()); + } +} diff --git a/src/main/java/graphql/schema/idl/InterfaceWiringEnvironment.java b/src/main/java/graphql/schema/idl/InterfaceWiringEnvironment.java index 6c635883db..a336b371d7 100644 --- a/src/main/java/graphql/schema/idl/InterfaceWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/InterfaceWiringEnvironment.java @@ -2,8 +2,10 @@ import graphql.PublicApi; import graphql.language.InterfaceTypeDefinition; +import org.jspecify.annotations.NullMarked; @PublicApi +@NullMarked public class InterfaceWiringEnvironment extends WiringEnvironment { private final InterfaceTypeDefinition interfaceTypeDefinition; @@ -16,4 +18,4 @@ public class InterfaceWiringEnvironment extends WiringEnvironment { public InterfaceTypeDefinition getInterfaceTypeDefinition() { return interfaceTypeDefinition; } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/idl/MockedWiringFactory.java b/src/main/java/graphql/schema/idl/MockedWiringFactory.java new file mode 100644 index 0000000000..3d5f14f7a4 --- /dev/null +++ b/src/main/java/graphql/schema/idl/MockedWiringFactory.java @@ -0,0 +1,153 @@ +package graphql.schema.idl; + +import graphql.Assert; +import graphql.GraphQLContext; +import graphql.PublicApi; +import graphql.execution.CoercedVariables; +import graphql.language.ArrayValue; +import graphql.language.BooleanValue; +import graphql.language.EnumValue; +import graphql.language.FloatValue; +import graphql.language.IntValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.language.VariableReference; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import graphql.schema.DataFetcher; +import graphql.schema.GraphQLScalarType; +import graphql.schema.SingletonPropertyDataFetcher; +import graphql.schema.TypeResolver; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * This is a {@link WiringFactory} which provides mocked types resolver + * and scalars. It is useful for testing only, for example for creating schemas + * that can be inspected but not executed on. + *

      + * See {@link RuntimeWiring#MOCKED_WIRING} for example usage + */ +@PublicApi +@NullMarked +@SuppressWarnings("rawtypes") +public class MockedWiringFactory implements WiringFactory { + + @Override + public boolean providesTypeResolver(InterfaceWiringEnvironment environment) { + return true; + } + + @Override + public TypeResolver getTypeResolver(InterfaceWiringEnvironment environment) { + return env -> { + throw new UnsupportedOperationException("Not implemented...this is only a mocked wiring"); + }; + } + + @Override + public boolean providesTypeResolver(UnionWiringEnvironment environment) { + return true; + } + + @Override + public TypeResolver getTypeResolver(UnionWiringEnvironment environment) { + return env -> { + throw new UnsupportedOperationException("Not implemented...this is only a mocked wiring"); + }; + } + + @Override + public boolean providesDataFetcher(FieldWiringEnvironment environment) { + return true; + } + + @Override + public DataFetcher getDataFetcher(FieldWiringEnvironment environment) { + return SingletonPropertyDataFetcher.singleton(); + } + + @Override + public boolean providesScalar(ScalarWiringEnvironment environment) { + return !ScalarInfo.isGraphqlSpecifiedScalar(environment.getScalarTypeDefinition().getName()); + } + + public GraphQLScalarType getScalar(ScalarWiringEnvironment environment) { + return GraphQLScalarType.newScalar().name(environment.getScalarTypeDefinition().getName()).coercing(new Coercing<>() { + @Nullable + @Override + public Object serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { + throw new UnsupportedOperationException("Not implemented...this is only a mocked wiring"); + } + + @Nullable + @Override + public Object parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { + throw new UnsupportedOperationException("Not implemented...this is only a mocked wiring"); + } + + @Nullable + @Override + public Object parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { + return parseLiteralImpl(input, variables, graphQLContext, locale); + } + + @Nullable + private Object parseLiteralImpl(Value input, CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { + if (input instanceof NullValue) { + return null; + } + if (input instanceof FloatValue) { + return ((FloatValue) input).getValue(); + } + if (input instanceof StringValue) { + return ((StringValue) input).getValue(); + } + if (input instanceof IntValue) { + return ((IntValue) input).getValue(); + } + if (input instanceof BooleanValue) { + return ((BooleanValue) input).isValue(); + } + if (input instanceof EnumValue) { + return ((EnumValue) input).getName(); + } + if (input instanceof VariableReference) { + String varName = ((VariableReference) input).getName(); + return variables.get(varName); + } + if (input instanceof ArrayValue) { + List values = ((ArrayValue) input).getValues(); + return values.stream() + .map(v -> parseLiteral(v, variables, graphQLContext, locale)) + .collect(Collectors.toList()); + } + if (input instanceof ObjectValue) { + List values = ((ObjectValue) input).getObjectFields(); + Map parsedValues = new LinkedHashMap<>(); + values.forEach(fld -> { + Object parsedValue = parseLiteral(fld.getValue(), variables, graphQLContext, locale); + if (parsedValue != null) { + parsedValues.put(fld.getName(), parsedValue); + } + }); + return parsedValues; + } + return Assert.assertShouldNeverHappen("We have covered all Value types"); + } + + }).build(); + } +} diff --git a/src/main/java/graphql/schema/idl/NoopWiringFactory.java b/src/main/java/graphql/schema/idl/NoopWiringFactory.java index eaccea2085..93517eb26b 100644 --- a/src/main/java/graphql/schema/idl/NoopWiringFactory.java +++ b/src/main/java/graphql/schema/idl/NoopWiringFactory.java @@ -1,12 +1,13 @@ package graphql.schema.idl; +import graphql.Internal; import graphql.schema.DataFetcher; import graphql.schema.GraphQLScalarType; -import graphql.schema.PropertyDataFetcher; import graphql.schema.TypeResolver; import static graphql.Assert.assertShouldNeverHappen; +@Internal public class NoopWiringFactory implements WiringFactory { @Override diff --git a/src/main/java/graphql/schema/idl/RuntimeWiring.java b/src/main/java/graphql/schema/idl/RuntimeWiring.java index 6478f7ab51..b985d648f5 100644 --- a/src/main/java/graphql/schema/idl/RuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/RuntimeWiring.java @@ -7,17 +7,20 @@ import graphql.schema.GraphQLSchema; import graphql.schema.GraphqlTypeComparatorRegistry; import graphql.schema.TypeResolver; +import graphql.schema.idl.errors.StrictModeWiringException; import graphql.schema.visibility.GraphqlFieldVisibility; import java.util.ArrayList; -import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.function.Consumer; import java.util.function.UnaryOperator; +import org.jspecify.annotations.NullUnmarked; import static graphql.Assert.assertNotNull; import static graphql.schema.visibility.DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY; +import static java.lang.String.format; /** * A runtime wiring is a specification of data fetchers, type resolvers and custom scalars that are needed @@ -34,11 +37,19 @@ public class RuntimeWiring { private final List directiveWiring; private final WiringFactory wiringFactory; private final Map enumValuesProviders; - private final Collection schemaGeneratorPostProcessings; private final GraphqlFieldVisibility fieldVisibility; private final GraphQLCodeRegistry codeRegistry; private final GraphqlTypeComparatorRegistry comparatorRegistry; + /** + * This is a Runtime wiring which provides mocked types resolver + * and scalars. It is useful for testing only, for example for creating schemas + * that can be inspected but not executed on. + */ + public static final RuntimeWiring MOCKED_WIRING = RuntimeWiring + .newRuntimeWiring() + .wiringFactory(new MockedWiringFactory()).build(); + private RuntimeWiring(Builder builder) { this.dataFetchers = builder.dataFetchers; this.defaultDataFetchers = builder.defaultDataFetchers; @@ -48,7 +59,6 @@ private RuntimeWiring(Builder builder) { this.directiveWiring = builder.directiveWiring; this.wiringFactory = builder.wiringFactory; this.enumValuesProviders = builder.enumValuesProviders; - this.schemaGeneratorPostProcessings = builder.schemaGeneratorPostProcessings; this.fieldVisibility = builder.fieldVisibility; this.codeRegistry = builder.codeRegistry; this.comparatorRegistry = builder.comparatorRegistry; @@ -61,6 +71,41 @@ public static Builder newRuntimeWiring() { return new Builder(); } + /** + * @param originalRuntimeWiring the runtime wiring to start from + * + * @return a builder of Runtime Wiring based on the provided one + */ + public static Builder newRuntimeWiring(RuntimeWiring originalRuntimeWiring) { + Builder builder = new Builder(); + builder.dataFetchers.putAll(originalRuntimeWiring.dataFetchers); + builder.defaultDataFetchers.putAll(originalRuntimeWiring.defaultDataFetchers); + builder.scalars.putAll(originalRuntimeWiring.scalars); + builder.typeResolvers.putAll(originalRuntimeWiring.typeResolvers); + builder.registeredDirectiveWiring.putAll(originalRuntimeWiring.registeredDirectiveWiring); + builder.directiveWiring.addAll(originalRuntimeWiring.directiveWiring); + builder.wiringFactory = originalRuntimeWiring.wiringFactory; + builder.enumValuesProviders.putAll(originalRuntimeWiring.enumValuesProviders); + builder.fieldVisibility = originalRuntimeWiring.fieldVisibility; + builder.codeRegistry = originalRuntimeWiring.codeRegistry; + builder.comparatorRegistry = originalRuntimeWiring.comparatorRegistry; + return builder; + } + + /** + * This helps you transform the current RuntimeWiring object into another one by starting a builder with all + * the current values and allows you to transform it how you want. + * + * @param builderConsumer the consumer code that will be given a builder to transform + * + * @return a new RuntimeWiring object based on calling build on that builder + */ + public RuntimeWiring transform(Consumer builderConsumer) { + Builder builder = newRuntimeWiring(this); + builderConsumer.accept(builder); + return builder.build(); + } + public GraphQLCodeRegistry getCodeRegistry() { return codeRegistry; } @@ -73,10 +118,31 @@ public Map> getDataFetchers() { return dataFetchers; } + /** + * This is deprecated because the name has the wrong plural case. + * + * @param typeName the type for fetch a map of per field data fetchers for + * + * @return a map of field data fetchers for a type + * + * @deprecated See {@link #getDataFetchersForType(String)} + */ + @Deprecated(since = "2024-04-28") public Map getDataFetcherForType(String typeName) { return dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); } + /** + * This returns a map of the data fetchers per field on that named type. + * + * @param typeName the type for fetch a map of per field data fetchers for + * + * @return a map of field data fetchers for a type + */ + public Map getDataFetchersForType(String typeName) { + return dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); + } + public DataFetcher getDefaultDataFetcherForType(String typeName) { return defaultDataFetchers.get(typeName); } @@ -105,15 +171,12 @@ public List getDirectiveWiring() { return directiveWiring; } - public Collection getSchemaGeneratorPostProcessings() { - return schemaGeneratorPostProcessings; - } - public GraphqlTypeComparatorRegistry getComparatorRegistry() { return comparatorRegistry; } @PublicApi + @NullUnmarked public static class Builder { private final Map> dataFetchers = new LinkedHashMap<>(); private final Map defaultDataFetchers = new LinkedHashMap<>(); @@ -122,16 +185,37 @@ public static class Builder { private final Map enumValuesProviders = new LinkedHashMap<>(); private final Map registeredDirectiveWiring = new LinkedHashMap<>(); private final List directiveWiring = new ArrayList<>(); - private final Collection schemaGeneratorPostProcessings = new ArrayList<>(); private WiringFactory wiringFactory = new NoopWiringFactory(); + private boolean strictMode = true; private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; private GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build(); private GraphqlTypeComparatorRegistry comparatorRegistry = GraphqlTypeComparatorRegistry.AS_IS_REGISTRY; private Builder() { ScalarInfo.GRAPHQL_SPECIFICATION_SCALARS.forEach(this::scalar); - // we give this out by default - registeredDirectiveWiring.put(FetchSchemaDirectiveWiring.FETCH, new FetchSchemaDirectiveWiring()); + } + + /** + * This sets strict mode as true or false. If strictMode is true, if things get defined twice, for example, it will throw a {@link StrictModeWiringException}. + * + * @return this builder + */ + public Builder strictMode(boolean strictMode) { + this.strictMode = strictMode; + return this; + } + + /** + * This puts the builder into strict mode, so if things get defined twice, for example, it will throw a {@link StrictModeWiringException}. + * + * @return this builder + * + * @deprecated strictMode default value changed to true, use {@link #strictMode(boolean)} instead + */ + @Deprecated(since = "2025-03-22", forRemoval = true) + public Builder strictMode() { + this.strictMode = true; + return this; } /** @@ -179,6 +263,9 @@ public Builder codeRegistry(GraphQLCodeRegistry.Builder codeRegistry) { * @return the runtime wiring builder */ public Builder scalar(GraphQLScalarType scalarType) { + if (strictMode && scalars.containsKey(scalarType.getName())) { + throw new StrictModeWiringException(format("The scalar %s is already defined", scalarType.getName())); + } scalars.put(scalarType.getName(), scalarType); return this; } @@ -229,17 +316,39 @@ public Builder type(String typeName, UnaryOperator bu public Builder type(TypeRuntimeWiring typeRuntimeWiring) { String typeName = typeRuntimeWiring.getTypeName(); Map typeDataFetchers = dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); - typeRuntimeWiring.getFieldDataFetchers().forEach(typeDataFetchers::put); - defaultDataFetchers.put(typeName, typeRuntimeWiring.getDefaultDataFetcher()); + Map additionalFieldDataFetchers = typeRuntimeWiring.getFieldDataFetchers(); + if (strictMode && !typeDataFetchers.isEmpty()) { + // Check if the existing type wiring contains overlapping DataFetcher definitions + for (String fieldName : additionalFieldDataFetchers.keySet()) { + if (typeDataFetchers.containsKey(fieldName)) { + throw new StrictModeWiringException(format("The field %s on type %s has already been defined", fieldName, typeName)); + } + } + } + typeDataFetchers.putAll(additionalFieldDataFetchers); + + DataFetcher defaultDataFetcher = typeRuntimeWiring.getDefaultDataFetcher(); + if (defaultDataFetcher != null) { + if (strictMode && defaultDataFetchers.containsKey(typeName)) { + throw new StrictModeWiringException(format("The type %s already has a default data fetcher defined", typeName)); + } + defaultDataFetchers.put(typeName, defaultDataFetcher); + } TypeResolver typeResolver = typeRuntimeWiring.getTypeResolver(); if (typeResolver != null) { + if (strictMode && this.typeResolvers.containsKey(typeName)) { + throw new StrictModeWiringException(format("The type %s already has a type resolver defined", typeName)); + } this.typeResolvers.put(typeName, typeResolver); } EnumValuesProvider enumValuesProvider = typeRuntimeWiring.getEnumValuesProvider(); if (enumValuesProvider != null) { + if (strictMode && this.enumValuesProviders.containsKey(typeName)) { + throw new StrictModeWiringException(format("The type %s already has a enum provider defined", typeName)); + } this.enumValuesProviders.put(typeName, enumValuesProvider); } return this; @@ -294,6 +403,8 @@ public Builder directiveWiring(SchemaDirectiveWiring schemaDirectiveWiring) { * which will tell you what type of objects you are to sort when * it asks for a comparator. * + * @param comparatorRegistry your own comparator registry + * * @return the runtime wiring builder */ public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegistry) { @@ -301,17 +412,6 @@ public Builder comparatorRegistry(GraphqlTypeComparatorRegistry comparatorRegist return this; } - /** - * Adds a schema transformer into the mix - * - * @param schemaGeneratorPostProcessing the non null schema transformer to add - * - * @return the runtime wiring builder - */ - public Builder transformer(SchemaGeneratorPostProcessing schemaGeneratorPostProcessing) { - this.schemaGeneratorPostProcessings.add(assertNotNull(schemaGeneratorPostProcessing)); - return this; - } /** * @return the built runtime wiring diff --git a/src/main/java/graphql/schema/idl/ScalarInfo.java b/src/main/java/graphql/schema/idl/ScalarInfo.java index 6efc305fd1..fca5ee7509 100644 --- a/src/main/java/graphql/schema/idl/ScalarInfo.java +++ b/src/main/java/graphql/schema/idl/ScalarInfo.java @@ -1,53 +1,49 @@ package graphql.schema.idl; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.PublicApi; import graphql.Scalars; import graphql.language.ScalarTypeDefinition; import graphql.schema.GraphQLScalarType; +import org.jspecify.annotations.NullMarked; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * Info on all the standard scalar objects provided by graphql-java */ +@PublicApi +@NullMarked public class ScalarInfo { /** * A list of the built-in scalar types as defined by the graphql specification */ - public static final List GRAPHQL_SPECIFICATION_SCALARS = new ArrayList<>(); + public static final List GRAPHQL_SPECIFICATION_SCALARS = ImmutableList.of( + Scalars.GraphQLInt, + Scalars.GraphQLFloat, + Scalars.GraphQLString, + Scalars.GraphQLBoolean, + Scalars.GraphQLID); /** * A map of scalar type definitions provided by graphql-java */ - public static final Map GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS = new LinkedHashMap<>(); - - static { - GRAPHQL_SPECIFICATION_SCALARS.add(Scalars.GraphQLInt); - GRAPHQL_SPECIFICATION_SCALARS.add(Scalars.GraphQLFloat); - GRAPHQL_SPECIFICATION_SCALARS.add(Scalars.GraphQLString); - GRAPHQL_SPECIFICATION_SCALARS.add(Scalars.GraphQLBoolean); - GRAPHQL_SPECIFICATION_SCALARS.add(Scalars.GraphQLID); - } - - static { - // graphql standard scalars - GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.put("Int", ScalarTypeDefinition.newScalarTypeDefinition().name("Int").build()); - GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.put("Float", ScalarTypeDefinition.newScalarTypeDefinition().name("Float").build()); - GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.put("String", ScalarTypeDefinition.newScalarTypeDefinition().name("String").build()); - GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.put("Boolean", ScalarTypeDefinition.newScalarTypeDefinition().name("Boolean").build()); - GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.put("ID", ScalarTypeDefinition.newScalarTypeDefinition().name("ID").build()); - - } + public static final Map GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS = ImmutableMap.of( + "Int", ScalarTypeDefinition.newScalarTypeDefinition().name("Int").build(), + "Float", ScalarTypeDefinition.newScalarTypeDefinition().name("Float").build(), + "String", ScalarTypeDefinition.newScalarTypeDefinition().name("String").build(), + "Boolean", ScalarTypeDefinition.newScalarTypeDefinition().name("Boolean").build(), + "ID", ScalarTypeDefinition.newScalarTypeDefinition().name("ID").build()); /** * Returns true if the scalar type is a scalar that is specified by the graphql specification * * @param scalarTypeName the name of the scalar type in question * - * @return true if the scalar type is is specified by the graphql specification + * @return true if the scalar type is specified by the graphql specification */ public static boolean isGraphqlSpecifiedScalar(String scalarTypeName) { return inList(GRAPHQL_SPECIFICATION_SCALARS, scalarTypeName); @@ -58,7 +54,7 @@ public static boolean isGraphqlSpecifiedScalar(String scalarTypeName) { * * @param scalarType the type in question * - * @return true if the scalar type is is specified by the graphql specification + * @return true if the scalar type is specified by the graphql specification */ public static boolean isGraphqlSpecifiedScalar(GraphQLScalarType scalarType) { return inList(GRAPHQL_SPECIFICATION_SCALARS, scalarType.getName()); diff --git a/src/main/java/graphql/schema/idl/ScalarWiringEnvironment.java b/src/main/java/graphql/schema/idl/ScalarWiringEnvironment.java index df8dad7935..ec39199a48 100644 --- a/src/main/java/graphql/schema/idl/ScalarWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/ScalarWiringEnvironment.java @@ -3,10 +3,12 @@ import graphql.PublicApi; import graphql.language.ScalarTypeDefinition; import graphql.language.ScalarTypeExtensionDefinition; +import org.jspecify.annotations.NullMarked; import java.util.List; @PublicApi +@NullMarked public class ScalarWiringEnvironment extends WiringEnvironment { private final ScalarTypeDefinition scalarTypeDefinition; diff --git a/src/main/java/graphql/schema/idl/SchemaDirectiveWiring.java b/src/main/java/graphql/schema/idl/SchemaDirectiveWiring.java index f137fed368..1b136ae9db 100644 --- a/src/main/java/graphql/schema/idl/SchemaDirectiveWiring.java +++ b/src/main/java/graphql/schema/idl/SchemaDirectiveWiring.java @@ -25,7 +25,6 @@ *

    • {@link graphql.schema.idl.RuntimeWiring.Builder#directiveWiring(SchemaDirectiveWiring)} which work against all directives are called next
    • *
    • {@link graphql.schema.idl.WiringFactory#providesSchemaDirectiveWiring(SchemaDirectiveWiringEnvironment)} which work against all directives are called last
    • * - *

      */ @PublicApi public interface SchemaDirectiveWiring { diff --git a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java index 2521daf745..538582ed32 100644 --- a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java @@ -4,6 +4,7 @@ import graphql.language.NamedNode; import graphql.language.NodeParentTree; import graphql.schema.DataFetcher; +import graphql.schema.GraphQLAppliedDirective; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLDirectiveContainer; @@ -38,12 +39,32 @@ public interface SchemaDirectiveWiringEnvironment + * If this method of registration is not used (say because + * {@link graphql.schema.idl.WiringFactory#providesSchemaDirectiveWiring(SchemaDirectiveWiringEnvironment)} or + * {@link graphql.schema.idl.RuntimeWiring.Builder#directiveWiring(SchemaDirectiveWiring)} was used) + * then this will return null. + * + * @return the applied directive that was registered under specific directive name or null if it was not + * registered this way + */ + GraphQLAppliedDirective getAppliedDirective(); + /** * @return all of the directives that are on the runtime element + * + * @deprecated use {@link #getAppliedDirectives()} instead */ + @Deprecated(since = "2022-06-21") Map getDirectives(); /** @@ -52,9 +73,26 @@ public interface SchemaDirectiveWiringEnvironment getAppliedDirectives(); + + /** + * Returns a named applied directive or null + * + * @param directiveName the name of the directive + * + * @return a named directive or null + */ + GraphQLAppliedDirective getAppliedDirective(String directiveName); + /** * Returns true if the named directive is present * @@ -71,7 +109,7 @@ public interface SchemaDirectiveWiringEnvironment getNodeParentTree(); + NodeParentTree> getNodeParentTree(); /** * The type hierarchy depends on the element in question. For example {@link graphql.schema.GraphQLObjectType} elements @@ -88,7 +126,7 @@ public interface SchemaDirectiveWiringEnvironment getBuildContext(); @@ -114,7 +152,7 @@ public interface SchemaDirectiveWiringEnvironment getFieldDataFetcher(); /** * This is a shortcut method to set a new data fetcher in the underlying {@link graphql.schema.GraphQLCodeRegistry} @@ -129,6 +167,6 @@ public interface SchemaDirectiveWiringEnvironment newDataFetcher); } diff --git a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironmentImpl.java b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironmentImpl.java index fc8053d1a7..da1eadf3cb 100644 --- a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironmentImpl.java +++ b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironmentImpl.java @@ -5,6 +5,7 @@ import graphql.language.NodeParentTree; import graphql.schema.DataFetcher; import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLAppliedDirective; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLDirectiveContainer; @@ -24,7 +25,8 @@ public class SchemaDirectiveWiringEnvironmentImpl directives; - private final NodeParentTree nodeParentTree; + private final Map appliedDirectives; + private final NodeParentTree> nodeParentTree; private final TypeDefinitionRegistry typeDefinitionRegistry; private final Map context; private final GraphQLCodeRegistry.Builder codeRegistry; @@ -32,12 +34,15 @@ public class SchemaDirectiveWiringEnvironmentImpl directives, GraphQLDirective registeredDirective, SchemaGeneratorDirectiveHelper.Parameters parameters) { + public SchemaDirectiveWiringEnvironmentImpl(T element, List directives, List appliedDirectives, GraphQLAppliedDirective registeredAppliedDirective, GraphQLDirective registeredDirective, SchemaGeneratorDirectiveHelper.Parameters parameters) { this.element = element; + this.registeredAppliedDirective = registeredAppliedDirective; this.registeredDirective = registeredDirective; this.typeDefinitionRegistry = parameters.getTypeRegistry(); this.directives = FpKit.getByName(directives, GraphQLDirective::getName); + this.appliedDirectives = FpKit.getByName(appliedDirectives, GraphQLAppliedDirective::getName); this.context = parameters.getContext(); this.codeRegistry = parameters.getCodeRegistry(); this.nodeParentTree = parameters.getNodeParentTree(); @@ -56,6 +61,11 @@ public GraphQLDirective getDirective() { return registeredDirective; } + @Override + public GraphQLAppliedDirective getAppliedDirective() { + return registeredAppliedDirective; + } + @Override public Map getDirectives() { return new LinkedHashMap<>(directives); @@ -66,13 +76,23 @@ public GraphQLDirective getDirective(String directiveName) { return directives.get(directiveName); } + @Override + public Map getAppliedDirectives() { + return appliedDirectives; + } + + @Override + public GraphQLAppliedDirective getAppliedDirective(String directiveName) { + return appliedDirectives.get(directiveName); + } + @Override public boolean containsDirective(String directiveName) { return directives.containsKey(directiveName); } @Override - public NodeParentTree getNodeParentTree() { + public NodeParentTree> getNodeParentTree() { return nodeParentTree; } @@ -107,14 +127,14 @@ public GraphQLFieldDefinition getFieldDefinition() { } @Override - public DataFetcher getFieldDataFetcher() { + public DataFetcher getFieldDataFetcher() { assertNotNull(fieldDefinition, "An output field must be in context to call this method"); assertNotNull(fieldsContainer, "An output field container must be in context to call this method"); - return codeRegistry.getDataFetcher(fieldsContainer, fieldDefinition); + return codeRegistry.getDataFetcher(FieldCoordinates.coordinates(fieldsContainer, fieldDefinition), fieldDefinition); } @Override - public GraphQLFieldDefinition setFieldDataFetcher(DataFetcher newDataFetcher) { + public GraphQLFieldDefinition setFieldDataFetcher(DataFetcher newDataFetcher) { assertNotNull(fieldDefinition, "An output field must be in context to call this method"); assertNotNull(fieldsContainer, "An output field container must be in context to call this method"); diff --git a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringSchemaGeneratorPostProcessing.java b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringSchemaGeneratorPostProcessing.java new file mode 100644 index 0000000000..52f8badbb4 --- /dev/null +++ b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringSchemaGeneratorPostProcessing.java @@ -0,0 +1,144 @@ +package graphql.schema.idl; + +import graphql.Internal; +import graphql.language.NamedNode; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.schema.SchemaTransformer; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import graphql.util.TreeTransformerUtil; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +import static graphql.util.TraversalControl.CONTINUE; + +@Internal +class SchemaDirectiveWiringSchemaGeneratorPostProcessing { + + private final SchemaGeneratorDirectiveHelper generatorDirectiveHelper = new SchemaGeneratorDirectiveHelper(); + private final TypeDefinitionRegistry typeRegistry; + private final RuntimeWiring runtimeWiring; + private final GraphQLCodeRegistry.Builder codeRegistryBuilder; + private final Map directiveBehaviourContext = new HashMap<>(); + + + public SchemaDirectiveWiringSchemaGeneratorPostProcessing(TypeDefinitionRegistry typeRegistry, RuntimeWiring runtimeWiring, GraphQLCodeRegistry.Builder codeRegistryBuilder) { + this.typeRegistry = typeRegistry; + this.runtimeWiring = runtimeWiring; + this.codeRegistryBuilder = codeRegistryBuilder; + } + + + public GraphQLSchema process(GraphQLSchema originalSchema) { + codeRegistryBuilder.trackChanges(); + Visitor visitor = new Visitor(); + GraphQLSchema newSchema = SchemaTransformer.transformSchema(originalSchema, visitor); + if (visitor.schemaChanged() || codeRegistryBuilder.hasChanged()) { + return newSchema.transform(builder -> { + // they could have changed the code registry so rebuild it + GraphQLCodeRegistry codeRegistry = this.codeRegistryBuilder.build(); + builder.codeRegistry(codeRegistry); + }); + } + return newSchema; + } + + public class Visitor extends GraphQLTypeVisitorStub { + + private boolean schemaChanged = false; + + public boolean schemaChanged() { + return schemaChanged; + } + + private SchemaGeneratorDirectiveHelper.Parameters mkBehaviourParams() { + return new SchemaGeneratorDirectiveHelper.Parameters(typeRegistry, runtimeWiring, directiveBehaviourContext, codeRegistryBuilder); + } + + private TraversalControl changOrContinue(GraphQLSchemaElement node, GraphQLSchemaElement newNode, TraverserContext context) { + if (node != newNode) { + TreeTransformerUtil.changeNode(context, newNode); + schemaChanged = true; + } + return CONTINUE; + } + + private boolean isIntrospectionType(GraphQLNamedType type) { + return type.getName().startsWith("__"); + } + + private boolean notSuitable(T node, Function> suitableFunc) { + if (isIntrospectionType(node)) { + return true; + } + NamedNode definition = suitableFunc.apply(node); + return definition == null; + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + if (notSuitable(node, GraphQLObjectType::getDefinition)) { + return CONTINUE; + } + GraphQLSchemaElement newNode = generatorDirectiveHelper.onObject(node, mkBehaviourParams()); + return changOrContinue(node, newNode, context); + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context) { + if (notSuitable(node, GraphQLInterfaceType::getDefinition)) { + return CONTINUE; + } + GraphQLSchemaElement newNode = generatorDirectiveHelper.onInterface(node, mkBehaviourParams()); + return changOrContinue(node, newNode, context); + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext context) { + if (notSuitable(node, GraphQLEnumType::getDefinition)) { + return CONTINUE; + } + GraphQLSchemaElement newNode = generatorDirectiveHelper.onEnum(node, mkBehaviourParams()); + return changOrContinue(node, newNode, context); + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context) { + if (notSuitable(node, GraphQLInputObjectType::getDefinition)) { + return CONTINUE; + } + GraphQLSchemaElement newNode = generatorDirectiveHelper.onInputObjectType(node, mkBehaviourParams()); + return changOrContinue(node, newNode, context); + } + + @Override + public TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { + if (notSuitable(node, GraphQLScalarType::getDefinition)) { + return CONTINUE; + } + GraphQLSchemaElement newNode = generatorDirectiveHelper.onScalar(node, mkBehaviourParams()); + return changOrContinue(node, newNode, context); + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext context) { + if (notSuitable(node, GraphQLUnionType::getDefinition)) { + return CONTINUE; + } + GraphQLSchemaElement newNode = generatorDirectiveHelper.onUnion(node, mkBehaviourParams()); + return changOrContinue(node, newNode, context); + } + } +} diff --git a/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java b/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java index bd563d593c..085af8b1b3 100644 --- a/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java @@ -76,10 +76,10 @@ static List checkSchemaInvariants(List er // ensure we have a "query" one Optional query = operationTypeDefinitions.stream().filter(op -> "query".equals(op.getName())).findFirst(); - if (!query.isPresent()) { + if (query.isEmpty()) { // its ok if they have a type named Query - Optional queryType = typeRegistry.getType("Query"); - if (!queryType.isPresent()) { + TypeDefinition queryType = typeRegistry.getTypeOrNull("Query"); + if (queryType == null) { errors.add(new QueryOperationMissingError()); } } @@ -117,13 +117,13 @@ private static Consumer checkOperationTypesExist(TypeDe private static Consumer checkOperationTypesAreObjects(TypeDefinitionRegistry typeRegistry, List errors) { return op -> { // make sure it is defined as a ObjectTypeDef - Type queryType = op.getTypeName(); - Optional type = typeRegistry.getType(queryType); - type.ifPresent(typeDef -> { - if (!(typeDef instanceof ObjectTypeDefinition)) { + Type queryType = op.getTypeName(); + TypeDefinition type = typeRegistry.getTypeOrNull(queryType); + if (type != null) { + if (!(type instanceof ObjectTypeDefinition)) { errors.add(new OperationTypesMustBeObjects(op)); } - }); + } }; } diff --git a/src/main/java/graphql/schema/idl/SchemaGenerator.java b/src/main/java/graphql/schema/idl/SchemaGenerator.java index d3af28ffad..c53ef08b8f 100644 --- a/src/main/java/graphql/schema/idl/SchemaGenerator.java +++ b/src/main/java/graphql/schema/idl/SchemaGenerator.java @@ -2,210 +2,72 @@ import graphql.GraphQLError; import graphql.PublicApi; -import graphql.introspection.Introspection.DirectiveLocation; -import graphql.language.Directive; -import graphql.language.EnumTypeDefinition; -import graphql.language.EnumTypeExtensionDefinition; -import graphql.language.EnumValueDefinition; -import graphql.language.FieldDefinition; -import graphql.language.InputObjectTypeDefinition; -import graphql.language.InputObjectTypeExtensionDefinition; -import graphql.language.InputValueDefinition; -import graphql.language.InterfaceTypeDefinition; -import graphql.language.InterfaceTypeExtensionDefinition; -import graphql.language.ObjectTypeDefinition; -import graphql.language.ObjectTypeExtensionDefinition; import graphql.language.OperationTypeDefinition; -import graphql.language.ScalarTypeDefinition; -import graphql.language.ScalarTypeExtensionDefinition; -import graphql.language.Type; -import graphql.language.TypeDefinition; -import graphql.language.TypeName; -import graphql.language.UnionTypeDefinition; -import graphql.language.UnionTypeExtensionDefinition; -import graphql.language.Value; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetcherFactories; -import graphql.schema.DataFetcherFactory; -import graphql.schema.FieldCoordinates; -import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; -import graphql.schema.GraphQLEnumType; -import graphql.schema.GraphQLEnumValueDefinition; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLInputObjectField; -import graphql.schema.GraphQLInputObjectType; -import graphql.schema.GraphQLInputType; -import graphql.schema.GraphQLInterfaceType; -import graphql.schema.GraphQLNamedInputType; -import graphql.schema.GraphQLNamedOutputType; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLOutputType; -import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLType; -import graphql.schema.GraphQLTypeReference; -import graphql.schema.GraphQLUnionType; -import graphql.schema.GraphqlTypeComparatorRegistry; -import graphql.schema.PropertyDataFetcher; -import graphql.schema.TypeResolver; -import graphql.schema.TypeResolverProxy; -import graphql.schema.idl.errors.NotAnInputTypeError; -import graphql.schema.idl.errors.NotAnOutputTypeError; import graphql.schema.idl.errors.SchemaProblem; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Deque; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Objects; -import java.util.Optional; import java.util.Set; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static graphql.Assert.assertNotNull; -import static graphql.Assert.assertTrue; -import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; -import static graphql.introspection.Introspection.DirectiveLocation.ENUM; -import static graphql.introspection.Introspection.DirectiveLocation.ENUM_VALUE; -import static graphql.introspection.Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION; -import static graphql.introspection.Introspection.DirectiveLocation.INPUT_OBJECT; -import static graphql.introspection.Introspection.DirectiveLocation.OBJECT; -import static graphql.introspection.Introspection.DirectiveLocation.SCALAR; -import static graphql.introspection.Introspection.DirectiveLocation.UNION; -import static graphql.schema.GraphQLEnumValueDefinition.newEnumValueDefinition; -import static graphql.schema.GraphQLTypeReference.typeRef; -import static java.util.Collections.emptyList; + +import static graphql.schema.idl.SchemaGeneratorHelper.buildDescription; + /** * This can generate a working runtime schema from a type registry and runtime wiring + *

      + * The generator uses the {@link RuntimeWiring} to insert code that runs behind the schema + * elements such as {@link graphql.schema.DataFetcher}s, {@link graphql.schema.TypeResolver}s + * and scalar {@link graphql.schema.Coercing}. + *

      + * The order of {@link graphql.schema.DataFetcher} resolution is as follows: + *

        + *
      1. If the {@link WiringFactory} provides the {@link graphql.schema.DataFetcherFactory} for a field in its parent type then that is used
      2. + *
      3. If the {@link WiringFactory} provides the {@link graphql.schema.DataFetcher} for a field in its parent type then that is used
      4. + *
      5. If the {@link RuntimeWiring} provides the {@link graphql.schema.DataFetcher} for a field in its parent type, then that is used
      6. + *
      7. If the {@link RuntimeWiring} provides a default {@link graphql.schema.DataFetcher} for a fields parent type, then that is used
      8. + *
      9. If the {@link WiringFactory} provides a default {@link graphql.schema.DataFetcherFactory} for any element then that is used
      10. + *
      11. If the {@link GraphQLCodeRegistry.Builder#getDefaultDataFetcherFactory()} provides a {@link graphql.schema.DataFetcherFactory} for a value then that is used
      12. + *
      13. Finally a {@link graphql.schema.PropertyDataFetcher} is used as a last resort for the field
      14. + *
      + *

      + * The order of {@link graphql.schema.TypeResolver} resolution is as follows: + *

        + *
      1. If the {@link WiringFactory} provides a {@link graphql.schema.TypeResolver} then that is used
      2. + *
      3. If the {@link TypeRuntimeWiring} provides a {@link graphql.schema.TypeResolver} then that is used
      4. + *
      + *

      + * The order of {@link graphql.schema.GraphQLScalarType} resolution is as follows: + *

        + *
      1. If the {@link WiringFactory} provides a {@link graphql.schema.GraphQLScalarType} then that is used
      2. + *
      3. Otherwise {@link RuntimeWiring#getScalars()} is used
      4. + *
      */ @PublicApi public class SchemaGenerator { - /** - * These options control how the schema generation works - */ - public static class Options { - - Options() { - } - - public static Options defaultOptions() { - return new Options(); - } + private final SchemaTypeChecker typeChecker = new SchemaTypeChecker(); + private final SchemaGeneratorHelper schemaGeneratorHelper = new SchemaGeneratorHelper(); + public SchemaGenerator() { } - /** - * We pass this around so we know what we have defined in a stack like manner plus - * it gives us helper functions + * Created a schema from the SDL that is has a mocked runtime. + * + * @param sdl the SDL to be mocked + * + * @return a schema with a mocked runtime + * + * @see RuntimeWiring#MOCKED_WIRING */ - class BuildContext { - private final TypeDefinitionRegistry typeRegistry; - private final RuntimeWiring wiring; - private final Deque typeStack = new ArrayDeque<>(); - - private final Map outputGTypes = new LinkedHashMap<>(); - private final Map inputGTypes = new LinkedHashMap<>(); - private final Map directiveBehaviourContext = new LinkedHashMap<>(); - private final Set directiveDefinitions = new LinkedHashSet<>(); - private final GraphQLCodeRegistry.Builder codeRegistry; - public final Map operationTypeDefs; - - BuildContext(TypeDefinitionRegistry typeRegistry, RuntimeWiring wiring, Map operationTypeDefinitions) { - this.typeRegistry = typeRegistry; - this.wiring = wiring; - this.codeRegistry = GraphQLCodeRegistry.newCodeRegistry(wiring.getCodeRegistry()); - this.operationTypeDefs = operationTypeDefinitions; - } - - public TypeDefinitionRegistry getTypeRegistry() { - return typeRegistry; - } - - @SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"}) - TypeDefinition getTypeDefinition(Type type) { - Optional optionalTypeDefinition = typeRegistry.getType(type); - assertTrue(optionalTypeDefinition.isPresent(), " type definition for type '" + type + "' not found"); - return optionalTypeDefinition.get(); - } - - boolean stackContains(TypeInfo typeInfo) { - return typeStack.contains(typeInfo.getName()); - } - - void push(TypeInfo typeInfo) { - typeStack.push(typeInfo.getName()); - } - - void pop() { - typeStack.pop(); - } - - SchemaGeneratorDirectiveHelper.Parameters mkBehaviourParams() { - return new SchemaGeneratorDirectiveHelper.Parameters(typeRegistry, wiring, directiveBehaviourContext, codeRegistry); - } - - GraphQLOutputType hasOutputType(TypeDefinition typeDefinition) { - return outputGTypes.get(typeDefinition.getName()); - } - - GraphQLInputType hasInputType(TypeDefinition typeDefinition) { - return inputGTypes.get(typeDefinition.getName()); - } - - void putOutputType(GraphQLNamedOutputType outputType) { - outputGTypes.put(outputType.getName(), outputType); - // certain types can be both input and output types, for example enums - if (outputType instanceof GraphQLInputType) { - inputGTypes.put(outputType.getName(), (GraphQLInputType) outputType); - } - } - - void putInputType(GraphQLNamedInputType inputType) { - inputGTypes.put(inputType.getName(), inputType); - // certain types can be both input and output types, for example enums - if (inputType instanceof GraphQLOutputType) { - outputGTypes.put(inputType.getName(), (GraphQLOutputType) inputType); - } - } - - RuntimeWiring getWiring() { - return wiring; - } - - GraphqlTypeComparatorRegistry getComparatorRegistry() { - return wiring.getComparatorRegistry(); - } - - public GraphQLCodeRegistry.Builder getCodeRegistry() { - return codeRegistry; - } - - public void setDirectiveDefinitions(Set directiveDefinitions) { - this.directiveDefinitions.addAll(directiveDefinitions); - } - - public Set getDirectiveDefinitions() { - return directiveDefinitions; - } - } - - private final SchemaTypeChecker typeChecker = new SchemaTypeChecker(); - private final SchemaGeneratorHelper schemaGeneratorHelper = new SchemaGeneratorHelper(); - private final SchemaGeneratorDirectiveHelper directiveBehaviour = new SchemaGeneratorDirectiveHelper(); - - public SchemaGenerator() { + public static GraphQLSchema createdMockedSchema(String sdl) { + TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(sdl); + GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(typeDefinitionRegistry, RuntimeWiring.MOCKED_WIRING); + return graphQLSchema; } /** @@ -239,32 +101,36 @@ public GraphQLSchema makeExecutableSchema(Options options, TypeDefinitionRegistr TypeDefinitionRegistry typeRegistryCopy = new TypeDefinitionRegistry(); typeRegistryCopy.merge(typeRegistry); - schemaGeneratorHelper.addDeprecatedDirectiveDefinition(typeRegistryCopy); + schemaGeneratorHelper.addDirectivesIncludedByDefault(typeRegistryCopy); - List errors = typeChecker.checkTypeRegistry(typeRegistryCopy, wiring); + // by making it read only all the traversal and checks run faster + ImmutableTypeDefinitionRegistry fasterImmutableRegistry = typeRegistryCopy.readOnly(); + List errors = typeChecker.checkTypeRegistry(fasterImmutableRegistry, wiring); if (!errors.isEmpty()) { throw new SchemaProblem(errors); } - Map operationTypeDefinitions = SchemaExtensionsChecker.gatherOperationDefs(typeRegistry); - BuildContext buildCtx = new BuildContext(typeRegistryCopy, wiring, operationTypeDefinitions); + Map operationTypeDefinitions = SchemaExtensionsChecker.gatherOperationDefs(fasterImmutableRegistry); - return makeExecutableSchemaImpl(buildCtx); + return makeExecutableSchemaImpl(fasterImmutableRegistry, wiring, operationTypeDefinitions, options); } - private GraphQLSchema makeExecutableSchemaImpl(BuildContext buildCtx) { + private GraphQLSchema makeExecutableSchemaImpl(ImmutableTypeDefinitionRegistry typeRegistry, + RuntimeWiring wiring, + Map operationTypeDefinitions, + Options options) { + SchemaGeneratorHelper.BuildContext buildCtx = new SchemaGeneratorHelper.BuildContext(typeRegistry, wiring, operationTypeDefinitions, options); GraphQLSchema.Builder schemaBuilder = GraphQLSchema.newSchema(); - Set additionalDirectives = buildAdditionalDirectives(buildCtx); + Set additionalDirectives = schemaGeneratorHelper.buildAdditionalDirectiveDefinitions(buildCtx); schemaBuilder.additionalDirectives(additionalDirectives); - buildCtx.setDirectiveDefinitions(additionalDirectives); - buildSchemaDirectivesAndExtensions(buildCtx, schemaBuilder); + schemaGeneratorHelper.buildSchemaDirectivesAndExtensions(buildCtx, schemaBuilder); - buildOperations(buildCtx, schemaBuilder); + schemaGeneratorHelper.buildOperations(buildCtx, schemaBuilder); - Set additionalTypes = buildAdditionalTypes(buildCtx); + Set additionalTypes = schemaGeneratorHelper.buildAdditionalTypes(buildCtx); schemaBuilder.additionalTypes(additionalTypes); buildCtx.getCodeRegistry().fieldVisibility(buildCtx.getWiring().getFieldVisibility()); @@ -272,705 +138,93 @@ private GraphQLSchema makeExecutableSchemaImpl(BuildContext buildCtx) { GraphQLCodeRegistry codeRegistry = buildCtx.getCodeRegistry().build(); schemaBuilder.codeRegistry(codeRegistry); + buildCtx.getTypeRegistry().schemaDefinition().ifPresent(schemaDefinition -> { + String description = buildDescription(buildCtx, schemaDefinition, schemaDefinition.getDescription()); + schemaBuilder.description(description); + }); GraphQLSchema graphQLSchema = schemaBuilder.build(); - Collection schemaTransformers = buildCtx.getWiring().getSchemaGeneratorPostProcessings(); - for (SchemaGeneratorPostProcessing postProcessing : schemaTransformers) { - graphQLSchema = postProcessing.process(graphQLSchema); - } - return graphQLSchema; - } - - private void buildSchemaDirectivesAndExtensions(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) { - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - List schemaDirectiveList = SchemaExtensionsChecker.gatherSchemaDirectives(typeRegistry); - schemaBuilder.withSchemaDirectives( - buildDirectives(schemaDirectiveList, emptyList(), DirectiveLocation.SCHEMA, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - schemaBuilder.definition(typeRegistry.schemaDefinition().orElse(null)); - schemaBuilder.extensionDefinitions(typeRegistry.getSchemaExtensionDefinitions()); - } - - private void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) { - // - // Schema can be missing if the type is called 'Query'. Pre flight checks have checked that! - // - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - Map operationTypeDefs = buildCtx.operationTypeDefs; - - GraphQLObjectType query; - GraphQLObjectType mutation; - GraphQLObjectType subscription; - - Optional queryOperation = getOperationNamed("query", operationTypeDefs); - if (!queryOperation.isPresent()) { - @SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"}) - TypeDefinition queryTypeDef = typeRegistry.getType("Query").get(); - - query = buildOutputType(buildCtx, TypeName.newTypeName().name(queryTypeDef.getName()).build()); - schemaBuilder.query(query); - } else { - query = buildOperation(buildCtx, queryOperation.get()); - schemaBuilder.query(query); - } - - Optional mutationOperation = getOperationNamed("mutation", operationTypeDefs); - if (!mutationOperation.isPresent()) { - Optional mutationTypeDef = typeRegistry.getType("Mutation"); - if (mutationTypeDef.isPresent()) { - mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.get().getName()).build()); - schemaBuilder.mutation(mutation); - } - } else { - mutation = buildOperation(buildCtx, mutationOperation.get()); - schemaBuilder.mutation(mutation); - } - Optional subscriptionOperation = getOperationNamed("subscription", operationTypeDefs); - if (!subscriptionOperation.isPresent()) { - Optional subscriptionTypeDef = typeRegistry.getType("Subscription"); - if (subscriptionTypeDef.isPresent()) { - subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.get().getName()).build()); - schemaBuilder.subscription(subscription); - } - } else { - subscription = buildOperation(buildCtx, subscriptionOperation.get()); - schemaBuilder.subscription(subscription); + // we check if there are any SchemaDirectiveWiring's in play and if there are + // we add this to enable them. By not adding it always, we save unnecessary + // schema build traversals + if (buildCtx.isDirectiveWiringRequired()) { + // handle directive wiring AFTER the schema has been built and hence type references are resolved at callback time + SchemaDirectiveWiringSchemaGeneratorPostProcessing directiveWiringProcessing = new SchemaDirectiveWiringSchemaGeneratorPostProcessing( + buildCtx.getTypeRegistry(), + buildCtx.getWiring(), + buildCtx.getCodeRegistry()); + graphQLSchema = directiveWiringProcessing.process(graphQLSchema); } - } - - private Optional getOperationNamed(String name, Map operationTypeDefs) { - return Optional.ofNullable(operationTypeDefs.get(name)); - } - - private GraphQLObjectType buildOperation(BuildContext buildCtx, OperationTypeDefinition operation) { - Type type = operation.getTypeName(); - - return buildOutputType(buildCtx, type); - } - - /** - * We build the query / mutation / subscription path as a tree of referenced types - * but then we build the rest of the types specified and put them in as additional types - * - * @param buildCtx the context we need to work out what we are doing - * - * @return the additional types not referenced from the top level operations - */ - private Set buildAdditionalTypes(BuildContext buildCtx) { - Set additionalTypes = new LinkedHashSet<>(); - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - typeRegistry.types().values().forEach(typeDefinition -> { - TypeName typeName = TypeName.newTypeName().name(typeDefinition.getName()).build(); - if (typeDefinition instanceof InputObjectTypeDefinition) { - if (buildCtx.hasInputType(typeDefinition) == null) { - additionalTypes.add(buildInputType(buildCtx, typeName)); - } - } else { - if (buildCtx.hasOutputType(typeDefinition) == null) { - additionalTypes.add(buildOutputType(buildCtx, typeName)); - } - } - }); - typeRegistry.scalars().values().forEach(scalarTypeDefinition -> { - if (ScalarInfo.isGraphqlSpecifiedScalar(scalarTypeDefinition.getName())) { - return; - } - if (buildCtx.hasInputType(scalarTypeDefinition) == null && buildCtx.hasOutputType(scalarTypeDefinition) == null) { - additionalTypes.add(buildScalar(buildCtx, scalarTypeDefinition)); - } - }); - return additionalTypes; - } - - private Set buildAdditionalDirectives(BuildContext buildCtx) { - Set additionalDirectives = new LinkedHashSet<>(); - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - typeRegistry.getDirectiveDefinitions().values().forEach(directiveDefinition -> { - Function inputTypeFactory = inputType -> buildInputType(buildCtx, inputType); - GraphQLDirective directive = schemaGeneratorHelper.buildDirectiveFromDefinition(directiveDefinition, inputTypeFactory); - additionalDirectives.add(directive); - }); - return additionalDirectives; + return graphQLSchema; } /** - * This is the main recursive spot that builds out the various forms of Output types - * - * @param buildCtx the context we need to work out what we are doing - * @param rawType the type to be built - * - * @return an output type + * These options control how the schema generation works */ - @SuppressWarnings({"unchecked", "TypeParameterUnusedInFormals"}) - private T buildOutputType(BuildContext buildCtx, Type rawType) { - - TypeDefinition typeDefinition = buildCtx.getTypeDefinition(rawType); - TypeInfo typeInfo = TypeInfo.typeInfo(rawType); - - GraphQLOutputType outputType = buildCtx.hasOutputType(typeDefinition); - if (outputType != null) { - return typeInfo.decorate(outputType); - } - - if (buildCtx.stackContains(typeInfo)) { - // we have circled around so put in a type reference and fix it up later - // otherwise we will go into an infinite loop - return typeInfo.decorate(typeRef(typeInfo.getName())); - } - - buildCtx.push(typeInfo); - - if (typeDefinition instanceof ObjectTypeDefinition) { - outputType = buildObjectType(buildCtx, (ObjectTypeDefinition) typeDefinition); - } else if (typeDefinition instanceof InterfaceTypeDefinition) { - outputType = buildInterfaceType(buildCtx, (InterfaceTypeDefinition) typeDefinition); - } else if (typeDefinition instanceof UnionTypeDefinition) { - outputType = buildUnionType(buildCtx, (UnionTypeDefinition) typeDefinition); - } else if (typeDefinition instanceof EnumTypeDefinition) { - outputType = buildEnumType(buildCtx, (EnumTypeDefinition) typeDefinition); - } else if (typeDefinition instanceof ScalarTypeDefinition) { - outputType = buildScalar(buildCtx, (ScalarTypeDefinition) typeDefinition); - } else { - // typeDefinition is not a valid output type - throw new NotAnOutputTypeError(rawType, typeDefinition); - } - - buildCtx.putOutputType((GraphQLNamedOutputType) outputType); - buildCtx.pop(); - return (T) typeInfo.decorate(outputType); - } - - private GraphQLInputType buildInputType(BuildContext buildCtx, Type rawType) { - - TypeDefinition typeDefinition = buildCtx.getTypeDefinition(rawType); - TypeInfo typeInfo = TypeInfo.typeInfo(rawType); - - GraphQLInputType inputType = buildCtx.hasInputType(typeDefinition); - if (inputType != null) { - return typeInfo.decorate(inputType); - } - - if (buildCtx.stackContains(typeInfo)) { - // we have circled around so put in a type reference and fix it later - return typeInfo.decorate(typeRef(typeInfo.getName())); - } - - buildCtx.push(typeInfo); - - if (typeDefinition instanceof InputObjectTypeDefinition) { - inputType = buildInputObjectType(buildCtx, (InputObjectTypeDefinition) typeDefinition); - } else if (typeDefinition instanceof EnumTypeDefinition) { - inputType = buildEnumType(buildCtx, (EnumTypeDefinition) typeDefinition); - } else if (typeDefinition instanceof ScalarTypeDefinition) { - inputType = buildScalar(buildCtx, (ScalarTypeDefinition) typeDefinition); - } else { - // typeDefinition is not a valid InputType - throw new NotAnInputTypeError(rawType, typeDefinition); - } - - buildCtx.putInputType((GraphQLNamedInputType) inputType); - buildCtx.pop(); - return typeInfo.decorate(inputType); - } - - private GraphQLObjectType buildObjectType(BuildContext buildCtx, ObjectTypeDefinition typeDefinition) { - GraphQLObjectType.Builder builder = GraphQLObjectType.newObject(); - builder.definition(typeDefinition); - builder.name(typeDefinition.getName()); - builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - List extensions = objectTypeExtensions(typeDefinition, buildCtx); - builder.extensionDefinitions(extensions); - builder.withDirectives( - buildDirectives(typeDefinition.getDirectives(), - directivesOf(extensions), OBJECT, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - typeDefinition.getFieldDefinitions().forEach(fieldDef -> { - GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); - builder.field(fieldDefinition); - }); - - extensions.forEach(extension -> extension.getFieldDefinitions().forEach(fieldDef -> { - GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); - if (!builder.hasField(fieldDefinition.getName())) { - builder.field(fieldDefinition); - } - })); - - buildObjectTypeInterfaces(buildCtx, typeDefinition, builder, extensions); - - GraphQLObjectType objectType = builder.build(); - objectType = directiveBehaviour.onObject(objectType, buildCtx.mkBehaviourParams()); - return objectType; - } - - private void buildObjectTypeInterfaces(BuildContext buildCtx, ObjectTypeDefinition - typeDefinition, GraphQLObjectType.Builder builder, List extensions) { - Map interfaces = new LinkedHashMap<>(); - typeDefinition.getImplements().forEach(type -> { - GraphQLNamedOutputType newInterfaceType = buildOutputType(buildCtx, type); - interfaces.put(newInterfaceType.getName(), newInterfaceType); - }); - - extensions.forEach(extension -> extension.getImplements().forEach(type -> { - GraphQLInterfaceType interfaceType = buildOutputType(buildCtx, type); - if (!interfaces.containsKey(interfaceType.getName())) { - interfaces.put(interfaceType.getName(), interfaceType); - } - })); - - interfaces.values().forEach(interfaze -> { - if (interfaze instanceof GraphQLInterfaceType) { - builder.withInterface((GraphQLInterfaceType) interfaze); - return; - } - if (interfaze instanceof GraphQLTypeReference) { - builder.withInterface((GraphQLTypeReference) interfaze); - } - }); - } - - private GraphQLInterfaceType buildInterfaceType(BuildContext buildCtx, InterfaceTypeDefinition typeDefinition) { - GraphQLInterfaceType.Builder builder = GraphQLInterfaceType.newInterface(); - builder.definition(typeDefinition); - builder.name(typeDefinition.getName()); - builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - - List extensions = interfaceTypeExtensions(typeDefinition, buildCtx); - builder.extensionDefinitions(extensions); - builder.withDirectives( - buildDirectives(typeDefinition.getDirectives(), - directivesOf(extensions), OBJECT, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - typeDefinition.getFieldDefinitions().forEach(fieldDef -> { - GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); - builder.field(fieldDefinition); - }); - - extensions.forEach(extension -> extension.getFieldDefinitions().forEach(fieldDef -> { - GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); - if (!builder.hasField(fieldDefinition.getName())) { - builder.field(fieldDefinition); - } - })); - - GraphQLInterfaceType interfaceType = builder.build(); - if (!buildCtx.codeRegistry.hasTypeResolver(interfaceType.getName())) { - TypeResolver typeResolver = getTypeResolverForInterface(buildCtx, typeDefinition); - buildCtx.getCodeRegistry().typeResolver(interfaceType, typeResolver); - } - - interfaceType = directiveBehaviour.onInterface(interfaceType, buildCtx.mkBehaviourParams()); - return interfaceType; - } - - private GraphQLUnionType buildUnionType(BuildContext buildCtx, UnionTypeDefinition typeDefinition) { - GraphQLUnionType.Builder builder = GraphQLUnionType.newUnionType(); - builder.definition(typeDefinition); - builder.name(typeDefinition.getName()); - builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - List extensions = unionTypeExtensions(typeDefinition, buildCtx); - builder.extensionDefinitions(extensions); - - typeDefinition.getMemberTypes().forEach(mt -> { - GraphQLOutputType outputType = buildOutputType(buildCtx, mt); - if (outputType instanceof GraphQLTypeReference) { - builder.possibleType((GraphQLTypeReference) outputType); - } else { - builder.possibleType((GraphQLObjectType) outputType); - } - }); - - builder.withDirectives( - buildDirectives(typeDefinition.getDirectives(), - directivesOf(extensions), UNION, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - extensions.forEach(extension -> extension.getMemberTypes().forEach(mt -> { - GraphQLNamedOutputType outputType = buildOutputType(buildCtx, mt); - if (!builder.containType(outputType.getName())) { - if (outputType instanceof GraphQLTypeReference) { - builder.possibleType((GraphQLTypeReference) outputType); - } else { - builder.possibleType((GraphQLObjectType) outputType); - } - } - } - )); - - GraphQLUnionType unionType = builder.build(); - if (!buildCtx.codeRegistry.hasTypeResolver(unionType.getName())) { - TypeResolver typeResolver = getTypeResolverForUnion(buildCtx, typeDefinition); - buildCtx.getCodeRegistry().typeResolver(unionType, typeResolver); - } - unionType = directiveBehaviour.onUnion(unionType, buildCtx.mkBehaviourParams()); - return unionType; - } - - private GraphQLEnumType buildEnumType(BuildContext buildCtx, EnumTypeDefinition typeDefinition) { - GraphQLEnumType.Builder builder = GraphQLEnumType.newEnum(); - builder.definition(typeDefinition); - builder.name(typeDefinition.getName()); - builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - List extensions = enumTypeExtensions(typeDefinition, buildCtx); - builder.extensionDefinitions(extensions); - - EnumValuesProvider enumValuesProvider = buildCtx.getWiring().getEnumValuesProviders().get(typeDefinition.getName()); - typeDefinition.getEnumValueDefinitions().forEach(evd -> { - GraphQLEnumValueDefinition enumValueDefinition = buildEnumValue(buildCtx, typeDefinition, enumValuesProvider, evd); - builder.value(enumValueDefinition); - }); - - extensions.forEach(extension -> extension.getEnumValueDefinitions().forEach(evd -> { - GraphQLEnumValueDefinition enumValueDefinition = buildEnumValue(buildCtx, typeDefinition, enumValuesProvider, evd); - if (!builder.hasValue(enumValueDefinition.getName())) { - builder.value(enumValueDefinition); - } - })); - - builder.withDirectives( - buildDirectives(typeDefinition.getDirectives(), - directivesOf(extensions), ENUM, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - GraphQLEnumType enumType = builder.build(); - enumType = directiveBehaviour.onEnum(enumType, buildCtx.mkBehaviourParams()); - return enumType; - } - - private GraphQLEnumValueDefinition buildEnumValue(BuildContext buildCtx, EnumTypeDefinition - typeDefinition, EnumValuesProvider enumValuesProvider, EnumValueDefinition evd) { - String description = schemaGeneratorHelper.buildDescription(evd, evd.getDescription()); - String deprecation = schemaGeneratorHelper.buildDeprecationReason(evd.getDirectives()); - - Object value; - if (enumValuesProvider != null) { - value = enumValuesProvider.getValue(evd.getName()); - assertNotNull(value, "EnumValuesProvider for %s returned null for %s", typeDefinition.getName(), evd.getName()); - } else { - value = evd.getName(); - } - return newEnumValueDefinition() - .name(evd.getName()) - .value(value) - .description(description) - .deprecationReason(deprecation) - .definition(evd) - .comparatorRegistry(buildCtx.getComparatorRegistry()) - .withDirectives( - buildDirectives(evd.getDirectives(), - emptyList(), ENUM_VALUE, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ) - .build(); - } - - private GraphQLScalarType buildScalar(BuildContext buildCtx, ScalarTypeDefinition typeDefinition) { - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - RuntimeWiring runtimeWiring = buildCtx.getWiring(); - WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); - List extensions = scalarTypeExtensions(typeDefinition, buildCtx); - - ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, typeDefinition, extensions); - - GraphQLScalarType scalar; - if (wiringFactory.providesScalar(environment)) { - scalar = wiringFactory.getScalar(environment); - } else { - scalar = buildCtx.getWiring().getScalars().get(typeDefinition.getName()); - } - - if (!ScalarInfo.isGraphqlSpecifiedScalar(scalar)) { - scalar = scalar.transform(builder -> builder - .definition(typeDefinition) - .comparatorRegistry(buildCtx.getComparatorRegistry()) - .withDirectives( - buildDirectives(typeDefinition.getDirectives(), - directivesOf(extensions), SCALAR, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - )); - // - // only allow modification of custom scalars - scalar = directiveBehaviour.onScalar(scalar, buildCtx.mkBehaviourParams()); - } - return scalar; - } - - private GraphQLFieldDefinition buildField(BuildContext buildCtx, TypeDefinition parentType, FieldDefinition - fieldDef) { - GraphQLFieldDefinition.Builder builder = GraphQLFieldDefinition.newFieldDefinition(); - builder.definition(fieldDef); - builder.name(fieldDef.getName()); - builder.description(schemaGeneratorHelper.buildDescription(fieldDef, fieldDef.getDescription())); - builder.deprecate(schemaGeneratorHelper.buildDeprecationReason(fieldDef.getDirectives())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - GraphQLDirective[] directives = buildDirectives(fieldDef.getDirectives(), - emptyList(), DirectiveLocation.FIELD_DEFINITION, - buildCtx.getDirectiveDefinitions(), - buildCtx.getComparatorRegistry()); - builder.withDirectives( - directives - ); - - fieldDef.getInputValueDefinitions().forEach(inputValueDefinition -> - builder.argument(buildArgument(buildCtx, inputValueDefinition))); - - GraphQLOutputType fieldType = buildOutputType(buildCtx, fieldDef.getType()); - builder.type(fieldType); - - GraphQLFieldDefinition fieldDefinition = builder.build(); - // if they have already wired in a fetcher - then leave it alone - FieldCoordinates coordinates = FieldCoordinates.coordinates(parentType.getName(), fieldDefinition.getName()); - if (!buildCtx.codeRegistry.hasDataFetcher(coordinates)) { - DataFetcherFactory dataFetcherFactory = buildDataFetcherFactory(buildCtx, parentType, fieldDef, fieldType, Arrays.asList(directives)); - buildCtx.getCodeRegistry().dataFetcher(coordinates, dataFetcherFactory); - } - return fieldDefinition; - } - - private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, TypeDefinition - parentType, FieldDefinition fieldDef, GraphQLOutputType fieldType, List directives) { - String fieldName = fieldDef.getName(); - String parentTypeName = parentType.getName(); - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - RuntimeWiring runtimeWiring = buildCtx.getWiring(); - WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); - - FieldWiringEnvironment wiringEnvironment = new FieldWiringEnvironment(typeRegistry, parentType, fieldDef, fieldType, directives); - - DataFetcherFactory dataFetcherFactory; - if (wiringFactory.providesDataFetcherFactory(wiringEnvironment)) { - dataFetcherFactory = wiringFactory.getDataFetcherFactory(wiringEnvironment); - assertNotNull(dataFetcherFactory, "The WiringFactory indicated it provides a data fetcher factory but then returned null"); - } else { - // - // ok they provide a data fetcher directly - DataFetcher dataFetcher; - if (wiringFactory.providesDataFetcher(wiringEnvironment)) { - dataFetcher = wiringFactory.getDataFetcher(wiringEnvironment); - assertNotNull(dataFetcher, "The WiringFactory indicated it provides a data fetcher but then returned null"); - } else { - dataFetcher = runtimeWiring.getDataFetcherForType(parentTypeName).get(fieldName); - if (dataFetcher == null) { - dataFetcher = runtimeWiring.getDefaultDataFetcherForType(parentTypeName); - if (dataFetcher == null) { - dataFetcher = wiringFactory.getDefaultDataFetcher(wiringEnvironment); - if (dataFetcher == null) { - dataFetcher = dataFetcherOfLastResort(wiringEnvironment); - } - } - } - } - dataFetcherFactory = DataFetcherFactories.useDataFetcher(dataFetcher); - } - return dataFetcherFactory; - } - - private DataFetcher dataFetcherOfLastResort(FieldWiringEnvironment environment) { - String fieldName = environment.getFieldDefinition().getName(); - return new PropertyDataFetcher(fieldName); - } - - private GraphQLInputObjectType buildInputObjectType(BuildContext buildCtx, InputObjectTypeDefinition - typeDefinition) { - GraphQLInputObjectType.Builder builder = GraphQLInputObjectType.newInputObject(); - builder.definition(typeDefinition); - builder.name(typeDefinition.getName()); - builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - List extensions = inputObjectTypeExtensions(typeDefinition, buildCtx); - builder.extensionDefinitions(extensions); - - builder.withDirectives( - buildDirectives(typeDefinition.getDirectives(), - directivesOf(extensions), INPUT_OBJECT, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - typeDefinition.getInputValueDefinitions().forEach(inputValue -> - builder.field(buildInputField(buildCtx, inputValue))); - - extensions.forEach(extension -> extension.getInputValueDefinitions().forEach(inputValueDefinition -> { - GraphQLInputObjectField inputField = buildInputField(buildCtx, inputValueDefinition); - if (!builder.hasField(inputField.getName())) { - builder.field(inputField); - } - })); - - GraphQLInputObjectType inputObjectType = builder.build(); - inputObjectType = directiveBehaviour.onInputObjectType(inputObjectType, buildCtx.mkBehaviourParams()); - return inputObjectType; - } + public static class Options { + private final boolean useCommentsAsDescription; + private final boolean captureAstDefinitions; + private final boolean useAppliedDirectivesOnly; - private GraphQLInputObjectField buildInputField(BuildContext buildCtx, InputValueDefinition fieldDef) { - GraphQLInputObjectField.Builder fieldBuilder = GraphQLInputObjectField.newInputObjectField(); - fieldBuilder.definition(fieldDef); - fieldBuilder.name(fieldDef.getName()); - fieldBuilder.description(schemaGeneratorHelper.buildDescription(fieldDef, fieldDef.getDescription())); - fieldBuilder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - // currently the spec doesnt allow deprecations on InputValueDefinitions but it should! - //fieldBuilder.deprecate(buildDeprecationReason(fieldDef.getDirectives())); - GraphQLInputType inputType = buildInputType(buildCtx, fieldDef.getType()); - fieldBuilder.type(inputType); - Value defaultValue = fieldDef.getDefaultValue(); - if (defaultValue != null) { - fieldBuilder.defaultValue(schemaGeneratorHelper.buildValue(defaultValue, inputType)); + Options(boolean useCommentsAsDescription, boolean captureAstDefinitions, boolean useAppliedDirectivesOnly) { + this.useCommentsAsDescription = useCommentsAsDescription; + this.captureAstDefinitions = captureAstDefinitions; + this.useAppliedDirectivesOnly = useAppliedDirectivesOnly; } - fieldBuilder.withDirectives( - buildDirectives(fieldDef.getDirectives(), - emptyList(), INPUT_FIELD_DEFINITION, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - return fieldBuilder.build(); - } - - private GraphQLArgument buildArgument(BuildContext buildCtx, InputValueDefinition valueDefinition) { - GraphQLArgument.Builder builder = GraphQLArgument.newArgument(); - builder.definition(valueDefinition); - builder.name(valueDefinition.getName()); - builder.description(schemaGeneratorHelper.buildDescription(valueDefinition, valueDefinition.getDescription())); - builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - - GraphQLInputType inputType = buildInputType(buildCtx, valueDefinition.getType()); - builder.type(inputType); - Value defaultValue = valueDefinition.getDefaultValue(); - if (defaultValue != null) { - builder.defaultValue(schemaGeneratorHelper.buildValue(defaultValue, inputType)); + public boolean isUseCommentsAsDescription() { + return useCommentsAsDescription; } - builder.withDirectives( - buildDirectives(valueDefinition.getDirectives(), - emptyList(), ARGUMENT_DEFINITION, buildCtx.getDirectiveDefinitions(), buildCtx.getComparatorRegistry()) - ); - - return builder.build(); - } - - @SuppressWarnings("Duplicates") - private TypeResolver getTypeResolverForUnion(BuildContext buildCtx, UnionTypeDefinition unionType) { - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - RuntimeWiring wiring = buildCtx.getWiring(); - WiringFactory wiringFactory = wiring.getWiringFactory(); - - TypeResolver typeResolver; - UnionWiringEnvironment environment = new UnionWiringEnvironment(typeRegistry, unionType); - - if (wiringFactory.providesTypeResolver(environment)) { - typeResolver = wiringFactory.getTypeResolver(environment); - assertNotNull(typeResolver, "The WiringFactory indicated it union provides a type resolver but then returned null"); - - } else { - typeResolver = wiring.getTypeResolvers().get(unionType.getName()); - if (typeResolver == null) { - // this really should be checked earlier via a pre-flight check - typeResolver = new TypeResolverProxy(); - } + public boolean isCaptureAstDefinitions() { + return captureAstDefinitions; } - return typeResolver; - } - - @SuppressWarnings("Duplicates") - private TypeResolver getTypeResolverForInterface(BuildContext buildCtx, InterfaceTypeDefinition interfaceType) { - TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); - RuntimeWiring wiring = buildCtx.getWiring(); - WiringFactory wiringFactory = wiring.getWiringFactory(); - - TypeResolver typeResolver; - - InterfaceWiringEnvironment environment = new InterfaceWiringEnvironment(typeRegistry, interfaceType); - - if (wiringFactory.providesTypeResolver(environment)) { - typeResolver = wiringFactory.getTypeResolver(environment); - assertNotNull(typeResolver, "The WiringFactory indicated it provides a interface type resolver but then returned null"); - - } else { - typeResolver = wiring.getTypeResolvers().get(interfaceType.getName()); - if (typeResolver == null) { - // this really should be checked earlier via a pre-flight check - typeResolver = new TypeResolverProxy(); - } + public boolean isUseAppliedDirectivesOnly() { + return useAppliedDirectivesOnly; } - return typeResolver; - } - - private GraphQLDirective[] buildDirectives - (List directives, List extensionDirectives, DirectiveLocation - directiveLocation, Set directiveDefinitions, GraphqlTypeComparatorRegistry - comparatorRegistry) { - directives = directives == null ? emptyList() : directives; - extensionDirectives = extensionDirectives == null ? emptyList() : extensionDirectives; - Set names = new LinkedHashSet<>(); - - List output = new ArrayList<>(); - for (Directive directive : directives) { - if (!names.contains(directive.getName())) { - names.add(directive.getName()); - output.add(schemaGeneratorHelper.buildDirective(directive, directiveDefinitions, directiveLocation, comparatorRegistry)); - } - } - for (Directive directive : extensionDirectives) { - if (!names.contains(directive.getName())) { - names.add(directive.getName()); - output.add(schemaGeneratorHelper.buildDirective(directive, directiveDefinitions, directiveLocation, comparatorRegistry)); - } + public static Options defaultOptions() { + return new Options(true, true, false); + } + + /** + * This controls whether # comments can be used as descriptions in the built schema. For specification legacy reasons + * # comments used to be used as schema element descriptions. The specification has since clarified this and "" quoted string + * descriptions are the sanctioned way to make scheme element descriptions. + * + * @param useCommentsAsDescription the flag to control whether comments can be used as schema element descriptions + * + * @return a new Options object + */ + public Options useCommentsAsDescriptions(boolean useCommentsAsDescription) { + return new Options(useCommentsAsDescription, captureAstDefinitions, useAppliedDirectivesOnly); + } + + /** + * Memory can be saved if the original AST definitions are not associated with the built runtime types. However + * some tooling may require them. + * + * @param captureAstDefinitions the flag on whether to capture AST definitions + * + * @return a new Options object + */ + public Options captureAstDefinitions(boolean captureAstDefinitions) { + return new Options(useCommentsAsDescription, captureAstDefinitions, useAppliedDirectivesOnly); + } + + /** + * The class {@link GraphQLDirective} should really represent the definition of a directive, and not its use on schema elements. + * The new {@link graphql.schema.GraphQLAppliedDirective} has been created to fix this however for legacy reasons both classes will be put on schema + * elements. This flag allows you to only use {@link graphql.schema.GraphQLAppliedDirective} on schema elements. + * + * @param useAppliedDirectivesOnly the flag on whether to use {@link graphql.schema.GraphQLAppliedDirective}s only on schema elements + * + * @return a new Options object + */ + public Options useAppliedDirectivesOnly(boolean useAppliedDirectivesOnly) { + return new Options(useCommentsAsDescription, captureAstDefinitions, useAppliedDirectivesOnly); } - return output.toArray(new GraphQLDirective[0]); - } - - - private List objectTypeExtensions(ObjectTypeDefinition - typeDefinition, BuildContext buildCtx) { - return nvl(buildCtx.typeRegistry.objectTypeExtensions().get(typeDefinition.getName())); - } - - private List interfaceTypeExtensions(InterfaceTypeDefinition - typeDefinition, BuildContext buildCtx) { - return nvl(buildCtx.typeRegistry.interfaceTypeExtensions().get(typeDefinition.getName())); - } - - private List unionTypeExtensions(UnionTypeDefinition typeDefinition, BuildContext - buildCtx) { - return nvl(buildCtx.typeRegistry.unionTypeExtensions().get(typeDefinition.getName())); - } - - private List enumTypeExtensions(EnumTypeDefinition typeDefinition, BuildContext - buildCtx) { - return nvl(buildCtx.typeRegistry.enumTypeExtensions().get(typeDefinition.getName())); - } - - private List scalarTypeExtensions(ScalarTypeDefinition - typeDefinition, BuildContext buildCtx) { - return nvl(buildCtx.typeRegistry.scalarTypeExtensions().get(typeDefinition.getName())); - } - - private List inputObjectTypeExtensions(InputObjectTypeDefinition - typeDefinition, BuildContext buildCtx) { - return nvl(buildCtx.typeRegistry.inputObjectTypeExtensions().get(typeDefinition.getName())); - } - - private List nvl(List list) { - return list == null ? emptyList() : list; } - - private List directivesOf(List typeDefinition) { - Stream directiveStream = typeDefinition.stream() - .map(TypeDefinition::getDirectives).filter(Objects::nonNull) - .flatMap(List::stream); - return directiveStream.collect(Collectors.toList()); - } - } \ No newline at end of file diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java new file mode 100644 index 0000000000..e7d94dffdf --- /dev/null +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java @@ -0,0 +1,297 @@ +package graphql.schema.idl; + +import graphql.Internal; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.language.DirectiveDefinition; +import graphql.language.InputValueDefinition; +import graphql.language.StringValue; +import graphql.language.Type; +import graphql.language.Value; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphqlDirectivesContainerTypeBuilder; +import graphql.schema.GraphqlTypeComparatorRegistry; +import graphql.util.FpKit; +import graphql.util.Pair; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.function.Function; + +import static graphql.Directives.NO_LONGER_SUPPORTED; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.collect.ImmutableKit.map; +import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; +import static graphql.schema.idl.SchemaGeneratorHelper.buildDescription; +import static graphql.util.Pair.pair; +import static java.util.stream.Collectors.toMap; + +/** + * This contains helper code to build out applied directives on schema element + */ +@Internal +class SchemaGeneratorAppliedDirectiveHelper { + + static void buildAppliedDirectives(SchemaGeneratorHelper.BuildContext buildCtx, GraphqlDirectivesContainerTypeBuilder builder, Pair, List> appliedDirectives) { + builder.clearDirectives(); + + // for legacy reasons we can use the old directives construct. This is false by default + if (!buildCtx.options.isUseAppliedDirectivesOnly()) { + for (GraphQLDirective directive : appliedDirectives.first) { + builder.withDirective(directive); + } + } + for (GraphQLAppliedDirective appliedDirective : appliedDirectives.second) { + builder.withAppliedDirective(appliedDirective); + } + } + + static Pair, List> buildAppliedDirectives( + SchemaGeneratorHelper.BuildContext buildCtx, + Function, GraphQLInputType> inputTypeFactory, + List directives, + List extensionDirectives, + Introspection.DirectiveLocation directiveLocation, + Set runtimeDirectives, + GraphqlTypeComparatorRegistry comparatorRegistry) { + directives = Optional.ofNullable(directives).orElse(emptyList()); + extensionDirectives = Optional.ofNullable(extensionDirectives).orElse(emptyList()); + + List output = new ArrayList<>(); + List outputApplied = new ArrayList<>(); + for (Directive directive : directives) { + Pair pair = buildAppliedDirective(buildCtx, + inputTypeFactory, + directive, + runtimeDirectives, + directiveLocation, + comparatorRegistry); + output.add(pair.first); + outputApplied.add(pair.second); + } + for (Directive directive : extensionDirectives) { + Pair pair = buildAppliedDirective(buildCtx, + inputTypeFactory, + directive, + runtimeDirectives, + directiveLocation, + comparatorRegistry); + output.add(pair.first); + outputApplied.add(pair.second); + } + return pair(output, outputApplied); + } + + // builds directives from a type and its extensions + private static Pair buildAppliedDirective(SchemaGeneratorHelper.BuildContext buildCtx, + Function, GraphQLInputType> inputTypeFactory, + Directive directive, + Set directiveDefinitions, + Introspection.DirectiveLocation directiveLocation, + GraphqlTypeComparatorRegistry comparatorRegistry) { + GraphQLDirective.Builder builder = GraphQLDirective.newDirective() + .name(directive.getName()) + .description(buildDescription(buildCtx, directive, null)) + .comparatorRegistry(comparatorRegistry) + .validLocations(directiveLocation); + + GraphQLAppliedDirective.Builder builderAppliedDirective = GraphQLAppliedDirective.newDirective() + .name(directive.getName()) + .description(buildDescription(buildCtx, directive, null)) + .comparatorRegistry(comparatorRegistry); + + Optional directiveDefOpt = FpKit.findOne(directiveDefinitions, dd -> dd.getName().equals(directive.getName())); + + GraphQLDirective graphQLDirective = directiveDefOpt.orElseGet(() -> { + return buildDirectiveDefinitionFromAst(buildCtx, buildCtx.getTypeRegistry().getDirectiveDefinition(directive.getName()).get(), inputTypeFactory); + }); + builder.repeatable(graphQLDirective.isRepeatable()); + + builder.definition(buildCtx.isCaptureAstDefinitions() ? graphQLDirective.getDefinition() : null); + builderAppliedDirective.definition(buildCtx.isCaptureAstDefinitions() ? directive : null); + + List directiveArguments = new ArrayList<>(); + List appliedArguments = new ArrayList<>(); + + for (Argument arg : directive.getArguments()) { + directiveArguments.add(buildDirectiveArg(buildCtx, arg, graphQLDirective)); + appliedArguments.add(buildAppliedArg(buildCtx, arg, graphQLDirective)); + } + + directiveArguments = transferMissingArguments(buildCtx, directiveArguments, graphQLDirective); + directiveArguments.forEach(builder::argument); + + appliedArguments = transferMissingAppliedArguments(appliedArguments, graphQLDirective); + appliedArguments.forEach(builderAppliedDirective::argument); + + return pair(builder.build(), builderAppliedDirective.build()); + } + + private static GraphQLArgument buildDirectiveArg(SchemaGeneratorHelper.BuildContext buildCtx, Argument arg, GraphQLDirective directiveDefinition) { + GraphQLArgument directiveDefArgument = directiveDefinition.getArgument(arg.getName()); + GraphQLArgument.Builder builder = GraphQLArgument.newArgument(); + GraphQLInputType inputType = directiveDefArgument.getType(); + builder.name(arg.getName()) + .type(inputType) + .definition(buildCtx.isCaptureAstDefinitions() ? directiveDefArgument.getDefinition() : null); + + // we know it is a literal because it was created by SchemaGenerator + if (directiveDefArgument.getArgumentDefaultValue().isSet()) { + builder.defaultValueLiteral((Value) directiveDefArgument.getArgumentDefaultValue().getValue()); + } + + // Object value = buildCtx, arg.getValue(), inputType); + // we put the default value in if the specified is null + if (arg.getValue() != null) { + //TODO: maybe validation of it + builder.valueLiteral(arg.getValue()); + } + + return builder.build(); + } + + private static GraphQLAppliedDirectiveArgument buildAppliedArg(SchemaGeneratorHelper.BuildContext buildCtx, Argument arg, GraphQLDirective directiveDefinition) { + GraphQLArgument directiveDefArgument = directiveDefinition.getArgument(arg.getName()); + GraphQLAppliedDirectiveArgument.Builder builder = GraphQLAppliedDirectiveArgument.newArgument(); + builder.name(arg.getName()) + .type(directiveDefArgument.getType()) + .definition(buildCtx.isCaptureAstDefinitions() ? arg : null); + + // Object value = buildCtx, arg.getValue(), inputType); + // we put the default value in if the specified is null + if (arg.getValue() != null) { + builder.valueLiteral(arg.getValue()); + } else { + // we know it is a literal because it was created by SchemaGenerator + if (directiveDefArgument.getArgumentDefaultValue().isSet()) { + builder.valueLiteral((Value) directiveDefArgument.getArgumentDefaultValue().getValue()); + } + } + return builder.build(); + } + + private static List transferMissingArguments(SchemaGeneratorHelper.BuildContext buildCtx, List arguments, GraphQLDirective directiveDefinition) { + Map declaredArgs = FpKit.getByName(arguments, GraphQLArgument::getName, FpKit.mergeFirst()); + List argumentsOut = new ArrayList<>(arguments); + + for (GraphQLArgument directiveDefArg : directiveDefinition.getArguments()) { + if (!declaredArgs.containsKey(directiveDefArg.getName())) { + GraphQLArgument.Builder missingArg = GraphQLArgument.newArgument() + .name(directiveDefArg.getName()) + .description(directiveDefArg.getDescription()) + .definition(buildCtx.isCaptureAstDefinitions() ? directiveDefArg.getDefinition() : null) + .type(directiveDefArg.getType()); + + if (directiveDefArg.hasSetDefaultValue()) { + missingArg.defaultValueLiteral((Value) directiveDefArg.getArgumentDefaultValue().getValue()); + } + if (directiveDefArg.hasSetValue()) { + missingArg.valueLiteral((Value) directiveDefArg.getArgumentValue().getValue()); + } + argumentsOut.add(missingArg.build()); + } + } + return argumentsOut; + } + + private static List transferMissingAppliedArguments(List arguments, GraphQLDirective directiveDefinition) { + Map declaredArgs = FpKit.getByName(arguments, GraphQLAppliedDirectiveArgument::getName, FpKit.mergeFirst()); + List argumentsOut = new ArrayList<>(arguments); + + for (GraphQLArgument directiveDefArg : directiveDefinition.getArguments()) { + if (!declaredArgs.containsKey(directiveDefArg.getName())) { + GraphQLAppliedDirectiveArgument.Builder missingArg = GraphQLAppliedDirectiveArgument.newArgument() + .name(directiveDefArg.getName()) + .type(directiveDefArg.getType()) + .description(directiveDefArg.getDescription()); + + if (directiveDefArg.hasSetDefaultValue()) { + missingArg.valueLiteral((Value) directiveDefArg.getArgumentDefaultValue().getValue()); + } + if (directiveDefArg.hasSetValue()) { + missingArg.valueLiteral((Value) directiveDefArg.getArgumentValue().getValue()); + } + argumentsOut.add(missingArg.build()); + } + } + return argumentsOut; + } + + static GraphQLDirective buildDirectiveDefinitionFromAst(SchemaGeneratorHelper.BuildContext buildCtx, DirectiveDefinition directiveDefinition, Function, GraphQLInputType> inputTypeFactory) { + + GraphQLDirective.Builder builder = GraphQLDirective.newDirective() + .name(directiveDefinition.getName()) + .definition(buildCtx.isCaptureAstDefinitions() ? directiveDefinition : null) + .repeatable(directiveDefinition.isRepeatable()) + .description(buildDescription(buildCtx, directiveDefinition, directiveDefinition.getDescription())); + + + List locations = buildLocations(directiveDefinition); + locations.forEach(builder::validLocations); + + List arguments = map(directiveDefinition.getInputValueDefinitions(), + arg -> buildDirectiveArgumentDefinitionFromAst(buildCtx, arg, inputTypeFactory)); + arguments.forEach(builder::argument); + return builder.build(); + } + + private static List buildLocations(DirectiveDefinition directiveDefinition) { + return map(directiveDefinition.getDirectiveLocations(), + dl -> Introspection.DirectiveLocation.valueOf(dl.getName().toUpperCase())); + } + + static GraphQLArgument buildDirectiveArgumentDefinitionFromAst(SchemaGeneratorHelper.BuildContext buildCtx, InputValueDefinition valueDefinition, Function, GraphQLInputType> inputTypeFactory) { + GraphQLArgument.Builder builder = GraphQLArgument.newArgument(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? valueDefinition : null); + builder.name(valueDefinition.getName()); + builder.description(buildDescription(buildCtx, valueDefinition, valueDefinition.getDescription())); + builder.deprecate(buildDeprecationReason(valueDefinition.getDirectives())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + GraphQLInputType inputType = inputTypeFactory.apply(valueDefinition.getType()); + builder.type(inputType); + if (valueDefinition.getDefaultValue() != null) { + builder.valueLiteral(valueDefinition.getDefaultValue()); + builder.defaultValueLiteral(valueDefinition.getDefaultValue()); + } + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory, + valueDefinition.getDirectives(), + emptyList(), + ARGUMENT_DEFINITION, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + return builder.build(); + } + + + static String buildDeprecationReason(List directives) { + directives = Optional.ofNullable(directives).orElse(emptyList()); + Optional directive = directives.stream().filter(d -> "deprecated".equals(d.getName())).findFirst(); + if (directive.isPresent()) { + Map args = directive.get().getArguments().stream().collect(toMap( + Argument::getName, arg -> ((StringValue) arg.getValue()).getValue() + )); + if (args.isEmpty()) { + return NO_LONGER_SUPPORTED; // default value from spec + } else { + // pre flight checks have ensured its valid + return args.get("reason"); + } + } + return null; + } + +} diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorDirectiveHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorDirectiveHelper.java index 6202ac95d8..431f12f7cb 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorDirectiveHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorDirectiveHelper.java @@ -3,6 +3,7 @@ import graphql.Internal; import graphql.language.NamedNode; import graphql.language.NodeParentTree; +import graphql.schema.GraphQLAppliedDirective; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; @@ -19,26 +20,62 @@ import graphql.schema.GraphQLSchemaElement; import graphql.schema.GraphQLUnionType; import graphql.schema.GraphqlElementParentTree; +import graphql.util.FpKit; import java.util.ArrayDeque; import java.util.Deque; +import java.util.HashMap; import java.util.List; import java.util.Map; import static graphql.Assert.assertNotNull; -import static java.util.stream.Collectors.toList; +import static graphql.collect.ImmutableKit.map; /** * This contains the helper code that allows {@link graphql.schema.idl.SchemaDirectiveWiring} implementations * to be invoked during schema generation. */ +@SuppressWarnings("DuplicatedCode") @Internal public class SchemaGeneratorDirectiveHelper { + /** + * This will return true if something in the RuntimeWiring requires a {@link SchemaDirectiveWiring}. This is to allow + * a shortcut to decide that we don't need ANY SchemaDirectiveWiring post processing + * + * @param directiveContainer the element that has directives + * @param typeRegistry the type registry + * @param runtimeWiring the runtime wiring + * @param for two + * + * @return true if something in the RuntimeWiring requires a {@link SchemaDirectiveWiring} + */ + public static boolean schemaDirectiveWiringIsRequired(T directiveContainer, TypeDefinitionRegistry typeRegistry, RuntimeWiring runtimeWiring) { + + WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); + + Map registeredWiring = runtimeWiring.getRegisteredDirectiveWiring(); + List otherWiring = runtimeWiring.getDirectiveWiring(); + boolean thereAreSome = !registeredWiring.isEmpty() || !otherWiring.isEmpty(); + if (thereAreSome) { + return true; + } + + Parameters params = new Parameters(typeRegistry, runtimeWiring, new HashMap<>(), null); + SchemaDirectiveWiringEnvironment env = new SchemaDirectiveWiringEnvironmentImpl<>(directiveContainer, + directiveContainer.getDirectives(), + directiveContainer.getAppliedDirectives(), + null, + null, + params); + // do they dynamically provide a wiring for this element? + return wiringFactory.providesSchemaDirectiveWiring(env); + } + static class Parameters { private final TypeDefinitionRegistry typeRegistry; private final RuntimeWiring runtimeWiring; - private final NodeParentTree nodeParentTree; + private final NodeParentTree> nodeParentTree; private final Map context; private final GraphQLCodeRegistry.Builder codeRegistry; private final GraphqlElementParentTree elementParentTree; @@ -49,7 +86,7 @@ static class Parameters { this(typeRegistry, runtimeWiring, context, codeRegistry, null, null, null, null); } - Parameters(TypeDefinitionRegistry typeRegistry, RuntimeWiring runtimeWiring, Map context, GraphQLCodeRegistry.Builder codeRegistry, NodeParentTree nodeParentTree, GraphqlElementParentTree elementParentTree, GraphQLFieldsContainer fieldsContainer, GraphQLFieldDefinition fieldDefinition) { + Parameters(TypeDefinitionRegistry typeRegistry, RuntimeWiring runtimeWiring, Map context, GraphQLCodeRegistry.Builder codeRegistry, NodeParentTree> nodeParentTree, GraphqlElementParentTree elementParentTree, GraphQLFieldsContainer fieldsContainer, GraphQLFieldDefinition fieldDefinition) { this.typeRegistry = typeRegistry; this.runtimeWiring = runtimeWiring; this.nodeParentTree = nodeParentTree; @@ -68,7 +105,7 @@ public RuntimeWiring getRuntimeWiring() { return runtimeWiring; } - public NodeParentTree getNodeParentTree() { + public NodeParentTree> getNodeParentTree() { return nodeParentTree; } @@ -92,22 +129,22 @@ public GraphQLFieldDefinition getFieldsDefinition() { return fieldDefinition; } - public Parameters newParams(GraphQLFieldsContainer fieldsContainer, NodeParentTree nodeParentTree, GraphqlElementParentTree elementParentTree) { + public Parameters newParams(GraphQLFieldsContainer fieldsContainer, NodeParentTree> nodeParentTree, GraphqlElementParentTree elementParentTree) { return new Parameters(this.typeRegistry, this.runtimeWiring, this.context, this.codeRegistry, nodeParentTree, elementParentTree, fieldsContainer, fieldDefinition); } - public Parameters newParams(GraphQLFieldDefinition fieldDefinition, GraphQLFieldsContainer fieldsContainer, NodeParentTree nodeParentTree, GraphqlElementParentTree elementParentTree) { + public Parameters newParams(GraphQLFieldDefinition fieldDefinition, GraphQLFieldsContainer fieldsContainer, NodeParentTree> nodeParentTree, GraphqlElementParentTree elementParentTree) { return new Parameters(this.typeRegistry, this.runtimeWiring, this.context, this.codeRegistry, nodeParentTree, elementParentTree, fieldsContainer, fieldDefinition); } - public Parameters newParams(NodeParentTree nodeParentTree, GraphqlElementParentTree elementParentTree) { + public Parameters newParams(NodeParentTree> nodeParentTree, GraphqlElementParentTree elementParentTree) { return new Parameters(this.typeRegistry, this.runtimeWiring, this.context, this.codeRegistry, nodeParentTree, elementParentTree, this.fieldsContainer, fieldDefinition); } } - private NodeParentTree buildAstTree(NamedNode... nodes) { - Deque nodeStack = new ArrayDeque<>(); - for (NamedNode node : nodes) { + private NodeParentTree> buildAstTree(NamedNode... nodes) { + Deque> nodeStack = new ArrayDeque<>(); + for (NamedNode node : nodes) { nodeStack.push(node); } return new NodeParentTree<>(nodeStack); @@ -121,143 +158,250 @@ private GraphqlElementParentTree buildRuntimeTree(GraphQLSchemaElement... elemen return new GraphqlElementParentTree(nodeStack); } - private List wireArguments(GraphQLFieldDefinition fieldDefinition, GraphQLFieldsContainer fieldsContainer, NamedNode fieldsContainerNode, Parameters params, GraphQLFieldDefinition field) { - return field.getArguments().stream().map(argument -> { + private List wireArguments(GraphQLFieldDefinition fieldDefinition, GraphQLFieldsContainer fieldsContainer, NamedNode fieldsContainerNode, Parameters params, GraphQLFieldDefinition field) { + return map(field.getArguments(), argument -> { - NodeParentTree nodeParentTree = buildAstTree(fieldsContainerNode, field.getDefinition(), argument.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(fieldsContainerNode, field.getDefinition(), argument.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(fieldsContainer, field, argument); Parameters argParams = params.newParams(fieldDefinition, fieldsContainer, nodeParentTree, elementParentTree); return onArgument(argument, argParams); - }).collect(toList()); + }); } - private List wireFields(GraphQLFieldsContainer fieldsContainer, NamedNode fieldsContainerNode, Parameters params) { - return fieldsContainer.getFieldDefinitions().stream().map(fieldDefinition -> { + private List wireFields(GraphQLFieldsContainer fieldsContainer, NamedNode fieldsContainerNode, Parameters params) { + return map(fieldsContainer.getFieldDefinitions(), fieldDefinition -> { // and for each argument in the fieldDefinition run the wiring for them - and note that they can change + List startingArgs = fieldDefinition.getArguments(); List newArgs = wireArguments(fieldDefinition, fieldsContainer, fieldsContainerNode, params, fieldDefinition); - // they may have changed the arguments to the fieldDefinition so reflect that - fieldDefinition = fieldDefinition.transform(builder -> builder.clearArguments().arguments(newArgs)); + if (isNotTheSameObjects(startingArgs, newArgs)) { + // they may have changed the arguments to the fieldDefinition so reflect that + fieldDefinition = fieldDefinition.transform(builder -> builder.clearArguments().arguments(newArgs)); + } - NodeParentTree nodeParentTree = buildAstTree(fieldsContainerNode, fieldDefinition.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(fieldsContainerNode, fieldDefinition.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(fieldsContainer, fieldDefinition); Parameters fieldParams = params.newParams(fieldDefinition, fieldsContainer, nodeParentTree, elementParentTree); // now for each fieldDefinition run the new wiring and capture the results return onField(fieldDefinition, fieldParams); - }).collect(toList()); + }); } - public GraphQLObjectType onObject(final GraphQLObjectType objectType, Parameters params) { + public GraphQLObjectType onObject(GraphQLObjectType objectType, Parameters params) { + List startingFields = objectType.getFieldDefinitions(); List newFields = wireFields(objectType, objectType.getDefinition(), params); - GraphQLObjectType newObjectType = objectType.transform(builder -> builder.clearFields().fields(newFields)); - - NodeParentTree nodeParentTree = buildAstTree(newObjectType.getDefinition()); + GraphQLObjectType newObjectType = objectType; + if (isNotTheSameObjects(startingFields, newFields)) { + newObjectType = objectType.transform(builder -> builder.clearFields().fields(newFields)); + } + NodeParentTree> nodeParentTree = buildAstTree(newObjectType.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(newObjectType); Parameters newParams = params.newParams(newObjectType, nodeParentTree, elementParentTree); - return wireDirectives(params, newObjectType, newObjectType.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, newParams), SchemaDirectiveWiring::onObject); + return wireDirectives(params, + newObjectType, + newObjectType.getDirectives(), + newObjectType.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + newParams), + SchemaDirectiveWiring::onObject); } public GraphQLInterfaceType onInterface(GraphQLInterfaceType interfaceType, Parameters params) { + List startingFields = interfaceType.getFieldDefinitions(); List newFields = wireFields(interfaceType, interfaceType.getDefinition(), params); - GraphQLInterfaceType newInterfaceType = interfaceType.transform(builder -> builder.clearFields().fields(newFields)); + GraphQLInterfaceType newInterfaceType = interfaceType; + if (isNotTheSameObjects(startingFields, newFields)) { + newInterfaceType = interfaceType.transform(builder -> builder.clearFields().fields(newFields)); + } - NodeParentTree nodeParentTree = buildAstTree(newInterfaceType.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(newInterfaceType.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(newInterfaceType); Parameters newParams = params.newParams(newInterfaceType, nodeParentTree, elementParentTree); - return wireDirectives(params, newInterfaceType, newInterfaceType.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, newParams), SchemaDirectiveWiring::onInterface); + return wireDirectives(params, + newInterfaceType, + newInterfaceType.getDirectives(), + newInterfaceType.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + newParams), + SchemaDirectiveWiring::onInterface); } - public GraphQLEnumType onEnum(GraphQLEnumType enumType, Parameters params) { + public GraphQLEnumType onEnum(final GraphQLEnumType enumType, Parameters params) { - List newEnums = enumType.getValues().stream().map(enumValueDefinition -> { + List startingEnumValues = enumType.getValues(); + List newEnumValues = map(startingEnumValues, enumValueDefinition -> { - NodeParentTree nodeParentTree = buildAstTree(enumType.getDefinition(), enumValueDefinition.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(enumType.getDefinition(), enumValueDefinition.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(enumType, enumValueDefinition); Parameters fieldParams = params.newParams(nodeParentTree, elementParentTree); // now for each field run the new wiring and capture the results return onEnumValue(enumValueDefinition, fieldParams); - }).collect(toList()); + }); - GraphQLEnumType newEnumType = enumType.transform(builder -> builder.clearValues().values(newEnums)); + GraphQLEnumType newEnumType = enumType; + if (isNotTheSameObjects(startingEnumValues, newEnumValues)) { + newEnumType = enumType.transform(builder -> builder.clearValues().values(newEnumValues)); + } - NodeParentTree nodeParentTree = buildAstTree(newEnumType.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(newEnumType.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(newEnumType); Parameters newParams = params.newParams(nodeParentTree, elementParentTree); - return wireDirectives(params, newEnumType, newEnumType.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, newParams), SchemaDirectiveWiring::onEnum); + return wireDirectives(params, + newEnumType, + newEnumType.getDirectives(), + newEnumType.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + newParams), + SchemaDirectiveWiring::onEnum); } public GraphQLInputObjectType onInputObjectType(GraphQLInputObjectType inputObjectType, Parameters params) { - List newFields = inputObjectType.getFieldDefinitions().stream().map(inputField -> { + List startingFields = inputObjectType.getFieldDefinitions(); + List newFields = map(startingFields, inputField -> { - NodeParentTree nodeParentTree = buildAstTree(inputObjectType.getDefinition(), inputField.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(inputObjectType.getDefinition(), inputField.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(inputObjectType, inputField); Parameters fieldParams = params.newParams(nodeParentTree, elementParentTree); // now for each field run the new wiring and capture the results return onInputObjectField(inputField, fieldParams); - }).collect(toList()); - - GraphQLInputObjectType newInputObjectType = inputObjectType.transform(builder -> builder.clearFields().fields(newFields)); + }); + GraphQLInputObjectType newInputObjectType = inputObjectType; + if (isNotTheSameObjects(startingFields, newFields)) { + newInputObjectType = inputObjectType.transform(builder -> builder.clearFields().fields(newFields)); + } - NodeParentTree nodeParentTree = buildAstTree(newInputObjectType.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(newInputObjectType.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(newInputObjectType); Parameters newParams = params.newParams(nodeParentTree, elementParentTree); - return wireDirectives(params, newInputObjectType, newInputObjectType.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, newParams), SchemaDirectiveWiring::onInputObjectType); + return wireDirectives(params, + newInputObjectType, + newInputObjectType.getDirectives(), + newInputObjectType.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + newParams), + SchemaDirectiveWiring::onInputObjectType); } public GraphQLUnionType onUnion(GraphQLUnionType element, Parameters params) { - NodeParentTree nodeParentTree = buildAstTree(element.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(element.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(element); Parameters newParams = params.newParams(nodeParentTree, elementParentTree); - return wireDirectives(params, element, element.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, newParams), SchemaDirectiveWiring::onUnion); + return wireDirectives(params, + element, + element.getDirectives(), + element.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + newParams), + SchemaDirectiveWiring::onUnion); } public GraphQLScalarType onScalar(GraphQLScalarType element, Parameters params) { - NodeParentTree nodeParentTree = buildAstTree(element.getDefinition()); + NodeParentTree> nodeParentTree = buildAstTree(element.getDefinition()); GraphqlElementParentTree elementParentTree = buildRuntimeTree(element); Parameters newParams = params.newParams(nodeParentTree, elementParentTree); - return wireDirectives(params, element, element.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, newParams), SchemaDirectiveWiring::onScalar); + return wireDirectives(params, + element, + element.getDirectives(), + element.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + newParams), + SchemaDirectiveWiring::onScalar); } private GraphQLFieldDefinition onField(GraphQLFieldDefinition fieldDefinition, Parameters params) { - return wireDirectives(params, fieldDefinition, fieldDefinition.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, params), SchemaDirectiveWiring::onField); + return wireDirectives(params, + fieldDefinition, + fieldDefinition.getDirectives(), + fieldDefinition.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + params), + SchemaDirectiveWiring::onField); } private GraphQLInputObjectField onInputObjectField(GraphQLInputObjectField element, Parameters params) { - return wireDirectives(params, element, element.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, params), SchemaDirectiveWiring::onInputObjectField); + return wireDirectives(params, + element, + element.getDirectives(), + element.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + params), + SchemaDirectiveWiring::onInputObjectField); } private GraphQLEnumValueDefinition onEnumValue(GraphQLEnumValueDefinition enumValueDefinition, Parameters params) { - return wireDirectives(params, enumValueDefinition, enumValueDefinition.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, params), SchemaDirectiveWiring::onEnumValue); + return wireDirectives(params, + enumValueDefinition, + enumValueDefinition.getDirectives(), + enumValueDefinition.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + params), + SchemaDirectiveWiring::onEnumValue); } private GraphQLArgument onArgument(GraphQLArgument argument, Parameters params) { - return wireDirectives(params, argument, argument.getDirectives(), - (outputElement, directives, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, directives, registeredDirective, params), SchemaDirectiveWiring::onArgument); + return wireDirectives(params, + argument, + argument.getDirectives(), + argument.getAppliedDirectives(), + (outputElement, directives, appliedDirectives, registeredAppliedDirective, registeredDirective) -> new SchemaDirectiveWiringEnvironmentImpl<>(outputElement, + directives, + appliedDirectives, + registeredAppliedDirective, + registeredDirective, + params), + SchemaDirectiveWiring::onArgument); } @@ -265,7 +409,7 @@ private GraphQLArgument onArgument(GraphQLArgument argument, Parameters params) // builds a type safe SchemaDirectiveWiringEnvironment // interface EnvBuilder { - SchemaDirectiveWiringEnvironment apply(T outputElement, List allDirectives, GraphQLDirective registeredDirective); + SchemaDirectiveWiringEnvironment apply(T outputElement, List allDirectives, List allAppliedDirectives, GraphQLAppliedDirective registeredAppliedDirective, GraphQLDirective registeredDirective); } // @@ -278,6 +422,7 @@ interface EnvInvoker { private T wireDirectives( Parameters parameters, T element, List allDirectives, + List allAppliedDirectives, EnvBuilder envBuilder, EnvInvoker invoker) { @@ -287,25 +432,28 @@ private T wireDirectives( SchemaDirectiveWiringEnvironment env; T outputObject = element; + + Map allDirectivesByName = FpKit.getByName(allDirectives, GraphQLDirective::getName); // // first the specific named directives Map mapOfWiring = runtimeWiring.getRegisteredDirectiveWiring(); - for (GraphQLDirective directive : allDirectives) { - schemaDirectiveWiring = mapOfWiring.get(directive.getName()); + for (GraphQLAppliedDirective appliedDirective : allAppliedDirectives) { + schemaDirectiveWiring = mapOfWiring.get(appliedDirective.getName()); if (schemaDirectiveWiring != null) { - env = envBuilder.apply(outputObject, allDirectives, directive); + GraphQLDirective directive = allDirectivesByName.get(appliedDirective.getName()); + env = envBuilder.apply(outputObject, allDirectives, allAppliedDirectives, appliedDirective, directive); outputObject = invokeWiring(outputObject, invoker, schemaDirectiveWiring, env); } } // - // now call any statically added to the the runtime + // now call any statically added to the runtime for (SchemaDirectiveWiring directiveWiring : runtimeWiring.getDirectiveWiring()) { - env = envBuilder.apply(outputObject, allDirectives, null); + env = envBuilder.apply(outputObject, allDirectives, allAppliedDirectives, null, null); outputObject = invokeWiring(outputObject, invoker, directiveWiring, env); } // // wiring factory is last (if present) - env = envBuilder.apply(outputObject, allDirectives, null); + env = envBuilder.apply(outputObject, allDirectives, allAppliedDirectives, null, null); if (wiringFactory.providesSchemaDirectiveWiring(env)) { schemaDirectiveWiring = assertNotNull(wiringFactory.getSchemaDirectiveWiring(env), "Your WiringFactory MUST provide a non null SchemaDirectiveWiring"); outputObject = invokeWiring(outputObject, invoker, schemaDirectiveWiring, env); @@ -316,7 +464,25 @@ private T wireDirectives( private T invokeWiring(T element, EnvInvoker invoker, SchemaDirectiveWiring schemaDirectiveWiring, SchemaDirectiveWiringEnvironment env) { T newElement = invoker.apply(schemaDirectiveWiring, env); - assertNotNull(newElement, "The SchemaDirectiveWiring MUST return a non null return value for element '" + element.getName() + "'"); + assertNotNull(newElement, "The SchemaDirectiveWiring MUST return a non null return value for element '%s'",element.getName()); return newElement; } + + private boolean isNotTheSameObjects(List starting, List ending) { + if (starting == ending) { + return false; + } + if (ending.size() != starting.size()) { + return true; + } + for (int i = 0; i < starting.size(); i++) { + T startObj = starting.get(i); + T endObj = ending.get(i); + // object equality + if (!(startObj == endObj)) { + return true; + } + } + return false; + } } diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index 1d8764a8c9..c6368da666 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -1,133 +1,226 @@ package graphql.schema.idl; +import graphql.AssertException; import graphql.Internal; import graphql.introspection.Introspection.DirectiveLocation; import graphql.language.Argument; -import graphql.language.ArrayValue; import graphql.language.Comment; import graphql.language.Description; import graphql.language.Directive; import graphql.language.DirectiveDefinition; -import graphql.language.EnumValue; +import graphql.language.EnumTypeDefinition; +import graphql.language.EnumTypeExtensionDefinition; +import graphql.language.EnumValueDefinition; +import graphql.language.FieldDefinition; +import graphql.language.InputObjectTypeDefinition; +import graphql.language.InputObjectTypeExtensionDefinition; import graphql.language.InputValueDefinition; +import graphql.language.InterfaceTypeDefinition; +import graphql.language.InterfaceTypeExtensionDefinition; import graphql.language.Node; -import graphql.language.NullValue; -import graphql.language.ObjectValue; +import graphql.language.ObjectTypeDefinition; +import graphql.language.ObjectTypeExtensionDefinition; +import graphql.language.OperationTypeDefinition; +import graphql.language.ScalarTypeDefinition; +import graphql.language.ScalarTypeExtensionDefinition; import graphql.language.StringValue; import graphql.language.Type; +import graphql.language.TypeDefinition; import graphql.language.TypeName; +import graphql.language.UnionTypeDefinition; +import graphql.language.UnionTypeExtensionDefinition; import graphql.language.Value; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetcherFactories; +import graphql.schema.DataFetcherFactory; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLAppliedDirective; import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedInputType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLType; -import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeReference; +import graphql.schema.GraphQLUnionType; import graphql.schema.GraphqlTypeComparatorRegistry; +import graphql.schema.SingletonPropertyDataFetcher; +import graphql.schema.TypeResolver; +import graphql.schema.TypeResolverProxy; +import graphql.schema.idl.errors.NotAnInputTypeError; +import graphql.schema.idl.errors.NotAnOutputTypeError; import graphql.util.FpKit; +import graphql.util.Pair; +import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Deque; +import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.function.Function; +import java.util.stream.Collectors; -import static graphql.Assert.assertShouldNeverHappen; +import static graphql.Assert.assertNotNull; +import static graphql.Directives.DEPRECATED_DIRECTIVE_DEFINITION; +import static graphql.Directives.IncludeDirective; +import static graphql.Directives.NO_LONGER_SUPPORTED; +import static graphql.Directives.ONE_OF_DIRECTIVE_DEFINITION; +import static graphql.Directives.SPECIFIED_BY_DIRECTIVE_DEFINITION; +import static graphql.Directives.SkipDirective; +import static graphql.Directives.SpecifiedByDirective; +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; +import static graphql.introspection.Introspection.DirectiveLocation.ENUM; import static graphql.introspection.Introspection.DirectiveLocation.ENUM_VALUE; import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINITION; -import static graphql.introspection.Introspection.DirectiveLocation.valueOf; -import static graphql.language.DirectiveLocation.newDirectiveLocation; -import static graphql.schema.GraphQLTypeUtil.isList; -import static graphql.schema.GraphQLTypeUtil.simplePrint; -import static graphql.schema.GraphQLTypeUtil.unwrapOne; -import static java.util.Collections.emptyList; -import static java.util.stream.Collectors.joining; -import static java.util.stream.Collectors.toList; +import static graphql.introspection.Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION; +import static graphql.introspection.Introspection.DirectiveLocation.INPUT_OBJECT; +import static graphql.introspection.Introspection.DirectiveLocation.OBJECT; +import static graphql.introspection.Introspection.DirectiveLocation.SCALAR; +import static graphql.introspection.Introspection.DirectiveLocation.UNION; +import static graphql.schema.GraphQLEnumValueDefinition.newEnumValueDefinition; +import static graphql.schema.GraphQLTypeReference.typeRef; +import static graphql.schema.idl.SchemaGeneratorAppliedDirectiveHelper.buildAppliedDirectives; +import static graphql.schema.idl.SchemaGeneratorAppliedDirectiveHelper.buildDirectiveDefinitionFromAst; +import static java.lang.String.format; import static java.util.stream.Collectors.toMap; -/** - * Simple helper methods with no BuildContext argument - */ @Internal public class SchemaGeneratorHelper { - static final String NO_LONGER_SUPPORTED = "No longer supported"; - static final DirectiveDefinition DEPRECATED_DIRECTIVE_DEFINITION; + /** + * We pass this around so we know what we have defined in a stack like manner plus + * it gives us helper functions + */ + static class BuildContext { + private final ImmutableTypeDefinitionRegistry typeRegistry; + private final RuntimeWiring wiring; + private final Deque typeStack = new ArrayDeque<>(); - static { - DEPRECATED_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition().name("deprecated") - .directiveLocation(newDirectiveLocation().name(FIELD_DEFINITION.name()).build()) - .directiveLocation(newDirectiveLocation().name(ENUM_VALUE.name()).build()) - .inputValueDefinition( - InputValueDefinition.newInputValueDefinition() - .name("reason") - .description(createDescription("The reason for the deprecation")) - .type(TypeName.newTypeName().name("String").build()) - .defaultValue(StringValue.newStringValue().value(NO_LONGER_SUPPORTED).build()) - .build()) - .description(createDescription("Marks the field or enum value as deprecated")).build(); - } + private final Map outputGTypes = new LinkedHashMap<>(); + private final Map inputGTypes = new LinkedHashMap<>(); + private final Set directives = new LinkedHashSet<>(); + private final GraphQLCodeRegistry.Builder codeRegistry; + public final Map operationTypeDefs; + public final SchemaGenerator.Options options; + public boolean directiveWiringRequired; - private static Description createDescription(String s) { - return new Description(s, null, false); - } + BuildContext(ImmutableTypeDefinitionRegistry typeRegistry, RuntimeWiring wiring, Map operationTypeDefinitions, SchemaGenerator.Options options) { + this.typeRegistry = typeRegistry; + this.wiring = wiring; + this.codeRegistry = GraphQLCodeRegistry.newCodeRegistry(wiring.getCodeRegistry()); + this.operationTypeDefs = operationTypeDefinitions; + this.options = options; + directiveWiringRequired = false; + } - public Object buildValue(Value value, GraphQLType requiredType) { - Object result = null; - if (GraphQLTypeUtil.isNonNull(requiredType)) { - requiredType = unwrapOne(requiredType); + public boolean isDirectiveWiringRequired() { + return directiveWiringRequired; } - if (value == null) { - return null; + + public TypeDefinitionRegistry getTypeRegistry() { + return typeRegistry; } - if (requiredType instanceof GraphQLScalarType) { - result = parseLiteral(value, (GraphQLScalarType) requiredType); - } else if (requiredType instanceof GraphQLEnumType && value instanceof EnumValue) { - result = ((EnumValue) value).getName(); - } else if (requiredType instanceof GraphQLEnumType && value instanceof StringValue) { - result = ((StringValue) value).getValue(); - } else if (value instanceof ArrayValue && isList(requiredType)) { - result = buildArrayValue(requiredType, (ArrayValue) value); - } else if (value instanceof ObjectValue && requiredType instanceof GraphQLInputObjectType) { - result = buildObjectValue((ObjectValue) value, (GraphQLInputObjectType) requiredType); - } else if (!(value instanceof NullValue)) { - assertShouldNeverHappen( - "cannot build value of type %s from object class %s with instance %s", simplePrint(requiredType), value.getClass().getSimpleName(), String.valueOf(value)); - } - return result; - } - - private Object parseLiteral(Value value, GraphQLScalarType requiredType) { - if (value instanceof NullValue) { - return null; + + TypeDefinition getTypeDefinition(Type type) { + TypeDefinition typeDefinition = typeRegistry.getTypeOrNull(type); + if (typeDefinition != null) { + return typeDefinition; + } else { + throw new AssertException(format(" type definition for type '%s' not found", type)); + } } - return requiredType.getCoercing().parseLiteral(value); - } - public Object buildArrayValue(GraphQLType requiredType, ArrayValue arrayValue) { - Object result; - GraphQLType wrappedType = unwrapOne(requiredType); - result = arrayValue.getValues().stream() - .map(item -> this.buildValue(item, wrappedType)).collect(toList()); - return result; - } + boolean stackContains(TypeInfo typeInfo) { + return typeStack.contains(typeInfo.getName()); + } + + void push(TypeInfo typeInfo) { + typeStack.push(typeInfo.getName()); + } + + void pop() { + typeStack.pop(); + } + + GraphQLOutputType hasOutputType(TypeDefinition typeDefinition) { + return outputGTypes.get(typeDefinition.getName()); + } + + GraphQLInputType hasInputType(TypeDefinition typeDefinition) { + return inputGTypes.get(typeDefinition.getName()); + } + void putOutputType(GraphQLNamedOutputType outputType) { + outputGTypes.put(outputType.getName(), outputType); + // certain types can be both input and output types, for example enums and scalars + if (outputType instanceof GraphQLInputType) { + inputGTypes.put(outputType.getName(), (GraphQLInputType) outputType); + } + } - public Object buildObjectValue(ObjectValue defaultValue, GraphQLInputObjectType objectType) { - Map map = new LinkedHashMap<>(); - defaultValue.getObjectFields().forEach(of -> map.put(of.getName(), - buildValue(of.getValue(), objectType.getField(of.getName()).getType()))); - return map; + void putInputType(GraphQLNamedInputType inputType) { + inputGTypes.put(inputType.getName(), inputType); + // certain types can be both input and output types, for example enums and scalars + if (inputType instanceof GraphQLOutputType) { + outputGTypes.put(inputType.getName(), (GraphQLOutputType) inputType); + } + } + + RuntimeWiring getWiring() { + return wiring; + } + + GraphqlTypeComparatorRegistry getComparatorRegistry() { + return wiring.getComparatorRegistry(); + } + + public GraphQLCodeRegistry.Builder getCodeRegistry() { + return codeRegistry; + } + + public void addDirectiveDefinition(GraphQLDirective directive) { + this.directives.add(directive); + } + + public void addDirectives(Set directives) { + this.directives.addAll(directives); + } + + public Set getDirectives() { + return directives; + } + + public boolean isCaptureAstDefinitions() { + return options.isCaptureAstDefinitions(); + } } - public String buildDescription(Node node, Description description) { + static String buildDescription(BuildContext buildContext, Node node, Description description) { if (description != null) { return description.getContent(); } + if (!buildContext.options.isUseCommentsAsDescription()) { + return null; + } List comments = node.getComments(); List lines = new ArrayList<>(); for (Comment comment : comments) { @@ -141,11 +234,11 @@ public String buildDescription(Node node, Description description) { if (lines.size() == 0) { return null; } - return lines.stream().collect(joining("\n")); + return String.join("\n", lines); } - public String buildDeprecationReason(List directives) { - directives = directives == null ? emptyList() : directives; + String buildDeprecationReason(List directives) { + directives = Optional.ofNullable(directives).orElse(emptyList()); Optional directive = directives.stream().filter(d -> "deprecated".equals(d.getName())).findFirst(); if (directive.isPresent()) { Map args = directive.get().getArguments().stream().collect(toMap( @@ -154,112 +247,869 @@ public String buildDeprecationReason(List directives) { if (args.isEmpty()) { return NO_LONGER_SUPPORTED; // default value from spec } else { - // pre flight checks have ensured its valid + // pre flight checks have ensured it's valid return args.get("reason"); } } return null; } - public void addDeprecatedDirectiveDefinition(TypeDefinitionRegistry typeRegistry) { - // we synthesize this into the type registry - no need for them to add it - typeRegistry.add(DEPRECATED_DIRECTIVE_DEFINITION); + public Function, GraphQLInputType> inputTypeFactory(BuildContext buildCtx) { + return rawType -> buildInputType(buildCtx, rawType); + } + + GraphQLInputType buildInputType(BuildContext buildCtx, Type rawType) { + + TypeDefinition typeDefinition = buildCtx.getTypeDefinition(rawType); + TypeInfo typeInfo = TypeInfo.typeInfo(rawType); + + GraphQLInputType inputType = buildCtx.hasInputType(typeDefinition); + if (inputType != null) { + return typeInfo.decorate(inputType); + } + + if (buildCtx.stackContains(typeInfo)) { + // we have circled around so put in a type reference and fix it later + return typeInfo.decorate(typeRef(typeInfo.getName())); + } + + buildCtx.push(typeInfo); + + if (typeDefinition instanceof InputObjectTypeDefinition) { + inputType = buildInputObjectType(buildCtx, (InputObjectTypeDefinition) typeDefinition); + } else if (typeDefinition instanceof EnumTypeDefinition) { + inputType = buildEnumType(buildCtx, (EnumTypeDefinition) typeDefinition); + } else if (typeDefinition instanceof ScalarTypeDefinition) { + inputType = buildScalar(buildCtx, (ScalarTypeDefinition) typeDefinition); + } else { + // typeDefinition is not a valid InputType + throw new NotAnInputTypeError(rawType, typeDefinition); + } + + buildCtx.putInputType((GraphQLNamedInputType) inputType); + buildCtx.pop(); + return typeInfo.decorate(inputType); + } + + GraphQLInputObjectType buildInputObjectType(BuildContext buildCtx, InputObjectTypeDefinition typeDefinition) { + GraphQLInputObjectType.Builder builder = GraphQLInputObjectType.newInputObject(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? typeDefinition : null); + builder.name(typeDefinition.getName()); + builder.description(buildDescription(buildCtx, typeDefinition, typeDefinition.getDescription())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + List extensions = inputObjectTypeExtensions(typeDefinition, buildCtx); + builder.extensionDefinitions(buildCtx.isCaptureAstDefinitions() ? extensions : emptyList()); + + + Pair, List> appliedDirectives = buildAppliedDirectives(buildCtx, + inputTypeFactory(buildCtx), + typeDefinition.getDirectives(), + directivesOf(extensions), + INPUT_OBJECT, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + typeDefinition.getInputValueDefinitions().forEach(inputValue -> + builder.field(buildInputField(buildCtx, inputValue))); + + extensions.forEach(extension -> extension.getInputValueDefinitions().forEach(inputValueDefinition -> { + GraphQLInputObjectField inputField = buildInputField(buildCtx, inputValueDefinition); + if (!builder.hasField(inputField.getName())) { + builder.field(inputField); + } + })); + + return directivesObserve(buildCtx, builder.build()); + } + + private GraphQLInputObjectField buildInputField(BuildContext buildCtx, InputValueDefinition fieldDef) { + GraphQLInputObjectField.Builder fieldBuilder = GraphQLInputObjectField.newInputObjectField(); + fieldBuilder.definition(buildCtx.isCaptureAstDefinitions() ? fieldDef : null); + fieldBuilder.name(fieldDef.getName()); + fieldBuilder.description(buildDescription(buildCtx, fieldDef, fieldDef.getDescription())); + fieldBuilder.deprecate(buildDeprecationReason(fieldDef.getDirectives())); + fieldBuilder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + GraphQLInputType inputType = buildInputType(buildCtx, fieldDef.getType()); + fieldBuilder.type(inputType); + Value defaultValue = fieldDef.getDefaultValue(); + if (defaultValue != null) { + fieldBuilder.defaultValueLiteral(defaultValue); + } + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + fieldDef.getDirectives(), + emptyList(), + INPUT_FIELD_DEFINITION, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + + buildAppliedDirectives(buildCtx, fieldBuilder, appliedDirectives); + + return directivesObserve(buildCtx, fieldBuilder.build()); + } + + GraphQLEnumType buildEnumType(BuildContext buildCtx, EnumTypeDefinition typeDefinition) { + GraphQLEnumType.Builder builder = GraphQLEnumType.newEnum(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? typeDefinition : null); + builder.name(typeDefinition.getName()); + builder.description(buildDescription(buildCtx, typeDefinition, typeDefinition.getDescription())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + List extensions = enumTypeExtensions(typeDefinition, buildCtx); + builder.extensionDefinitions(buildCtx.isCaptureAstDefinitions() ? extensions : emptyList()); + + EnumValuesProvider enumValuesProvider = buildCtx.getWiring().getEnumValuesProviders().get(typeDefinition.getName()); + typeDefinition.getEnumValueDefinitions().forEach(evd -> { + GraphQLEnumValueDefinition enumValueDefinition = buildEnumValue(buildCtx, typeDefinition, enumValuesProvider, evd); + builder.value(enumValueDefinition); + }); + + extensions.forEach(extension -> extension.getEnumValueDefinitions().forEach(evd -> { + GraphQLEnumValueDefinition enumValueDefinition = buildEnumValue(buildCtx, typeDefinition, enumValuesProvider, evd); + if (!builder.hasValue(enumValueDefinition.getName())) { + builder.value(enumValueDefinition); + } + })); + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + typeDefinition.getDirectives(), + directivesOf(extensions), + ENUM, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + return directivesObserve(buildCtx, builder.build()); + } + + private GraphQLEnumValueDefinition buildEnumValue(BuildContext buildCtx, + EnumTypeDefinition typeDefinition, + EnumValuesProvider enumValuesProvider, + EnumValueDefinition evd) { + String description = buildDescription(buildCtx, evd, evd.getDescription()); + String deprecation = buildDeprecationReason(evd.getDirectives()); + + Object value; + if (enumValuesProvider != null) { + value = enumValuesProvider.getValue(evd.getName()); + assertNotNull(value, + "EnumValuesProvider for %s returned null for %s", typeDefinition.getName(), evd.getName()); + } else { + value = evd.getName(); + } + GraphQLEnumValueDefinition.Builder builder = newEnumValueDefinition() + .name(evd.getName()) + .value(value) + .description(description) + .deprecationReason(deprecation) + .definition(buildCtx.isCaptureAstDefinitions() ? evd : null) + .comparatorRegistry(buildCtx.getComparatorRegistry()); + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + evd.getDirectives(), + emptyList(), + ENUM_VALUE, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + GraphQLEnumValueDefinition enumValueDefinition = builder.build(); + return directivesObserve(buildCtx, enumValueDefinition); + } + + GraphQLScalarType buildScalar(BuildContext buildCtx, ScalarTypeDefinition typeDefinition) { + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + RuntimeWiring runtimeWiring = buildCtx.getWiring(); + WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); + List extensions = scalarTypeExtensions(typeDefinition, buildCtx); + + ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, typeDefinition, extensions); + + GraphQLScalarType scalar; + if (wiringFactory.providesScalar(environment)) { + scalar = wiringFactory.getScalar(environment); + } else { + scalar = buildCtx.getWiring().getScalars().get(typeDefinition.getName()); + } + + if (!ScalarInfo.isGraphqlSpecifiedScalar(scalar)) { + String description = getScalarDesc(scalar, typeDefinition); + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + typeDefinition.getDirectives(), + directivesOf(extensions), + SCALAR, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + + scalar = scalar.transform(builder -> { + builder + .description(description) + .definition(buildCtx.isCaptureAstDefinitions() ? typeDefinition : null) + .comparatorRegistry(buildCtx.getComparatorRegistry()) + .specifiedByUrl(getSpecifiedByUrl(typeDefinition, extensions)); + + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + }); + } + return directivesObserve(buildCtx, scalar); + } + + private String getScalarDesc(GraphQLScalarType scalar, ScalarTypeDefinition typeDefinition) { + if (scalar.getDescription() != null) { + if (!scalar.getDescription().trim().isEmpty()) { + return scalar.getDescription(); + } + } + if (typeDefinition.getDescription() != null) { + return typeDefinition.getDescription().getContent(); + } + return ""; + } + + String getSpecifiedByUrl(ScalarTypeDefinition scalarTypeDefinition, List extensions) { + List allDirectives = new ArrayList<>(scalarTypeDefinition.getDirectives()); + extensions.forEach(extension -> allDirectives.addAll(extension.getDirectives())); + Optional specifiedByDirective = FpKit.findOne(allDirectives, + directiveDefinition -> directiveDefinition.getName().equals(SpecifiedByDirective.getName())); + if (!specifiedByDirective.isPresent()) { + return null; + } + Argument urlArgument = specifiedByDirective.get().getArgument("url"); + StringValue url = (StringValue) urlArgument.getValue(); + return url.getValue(); + } + + private TypeResolver getTypeResolverForInterface(BuildContext buildCtx, InterfaceTypeDefinition interfaceType) { + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + RuntimeWiring wiring = buildCtx.getWiring(); + WiringFactory wiringFactory = wiring.getWiringFactory(); + + TypeResolver typeResolver; + + InterfaceWiringEnvironment environment = new InterfaceWiringEnvironment(typeRegistry, interfaceType); + + if (wiringFactory.providesTypeResolver(environment)) { + typeResolver = wiringFactory.getTypeResolver(environment); + assertNotNull(typeResolver, "The WiringFactory indicated it provides a interface type resolver but then returned null"); + + } else { + typeResolver = wiring.getTypeResolvers().get(interfaceType.getName()); + if (typeResolver == null) { + // this really should be checked earlier via a pre-flight check + typeResolver = new TypeResolverProxy(); + } + } + return typeResolver; + } + + private TypeResolver getTypeResolverForUnion(BuildContext buildCtx, UnionTypeDefinition unionType) { + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + RuntimeWiring wiring = buildCtx.getWiring(); + WiringFactory wiringFactory = wiring.getWiringFactory(); + + TypeResolver typeResolver; + UnionWiringEnvironment environment = new UnionWiringEnvironment(typeRegistry, unionType); + + if (wiringFactory.providesTypeResolver(environment)) { + typeResolver = wiringFactory.getTypeResolver(environment); + assertNotNull(typeResolver, "The WiringFactory indicated it union provides a type resolver but then returned null"); + + } else { + typeResolver = wiring.getTypeResolvers().get(unionType.getName()); + if (typeResolver == null) { + // this really should be checked earlier via a pre-flight check + typeResolver = new TypeResolverProxy(); + } + } + + return typeResolver; + } + + private void buildInterfaceTypeInterfaces(BuildContext buildCtx, + InterfaceTypeDefinition typeDefinition, + GraphQLInterfaceType.Builder builder, + List extensions) { + Map interfaces = new LinkedHashMap<>(); + typeDefinition.getImplements().forEach(type -> { + GraphQLNamedOutputType newInterfaceType = buildOutputType(buildCtx, type); + interfaces.put(newInterfaceType.getName(), newInterfaceType); + }); + + extensions.forEach(extension -> extension.getImplements().forEach(type -> { + GraphQLNamedOutputType interfaceType = buildOutputType(buildCtx, type); + if (!interfaces.containsKey(interfaceType.getName())) { + interfaces.put(interfaceType.getName(), interfaceType); + } + })); + + interfaces.values().forEach(interfaze -> { + if (interfaze instanceof GraphQLInterfaceType) { + builder.withInterface((GraphQLInterfaceType) interfaze); + return; + } + if (interfaze instanceof GraphQLTypeReference) { + builder.withInterface((GraphQLTypeReference) interfaze); + } + }); + } + + private GraphQLObjectType buildOperation(BuildContext buildCtx, OperationTypeDefinition operation) { + return buildOutputType(buildCtx, operation.getTypeName()); + } + + GraphQLInterfaceType buildInterfaceType(BuildContext buildCtx, InterfaceTypeDefinition typeDefinition) { + GraphQLInterfaceType.Builder builder = GraphQLInterfaceType.newInterface(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? typeDefinition : null); + builder.name(typeDefinition.getName()); + builder.description(buildDescription(buildCtx, typeDefinition, typeDefinition.getDescription())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + List extensions = interfaceTypeExtensions(typeDefinition, buildCtx); + builder.extensionDefinitions(buildCtx.isCaptureAstDefinitions() ? extensions : emptyList()); + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + typeDefinition.getDirectives(), + directivesOf(extensions), + OBJECT, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + typeDefinition.getFieldDefinitions().forEach(fieldDef -> { + GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); + builder.field(fieldDefinition); + }); + + extensions.forEach(extension -> extension.getFieldDefinitions().forEach(fieldDef -> { + GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); + if (!builder.hasField(fieldDefinition.getName())) { + builder.field(fieldDefinition); + } + })); + + buildInterfaceTypeInterfaces(buildCtx, typeDefinition, builder, extensions); + + GraphQLInterfaceType interfaceType = builder.build(); + if (!buildCtx.getCodeRegistry().hasTypeResolver(interfaceType.getName())) { + TypeResolver typeResolver = getTypeResolverForInterface(buildCtx, typeDefinition); + buildCtx.getCodeRegistry().typeResolver(interfaceType, typeResolver); + } + return directivesObserve(buildCtx, interfaceType); } + GraphQLObjectType buildObjectType(BuildContext buildCtx, ObjectTypeDefinition typeDefinition) { + GraphQLObjectType.Builder builder = GraphQLObjectType.newObject(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? typeDefinition : null); + builder.name(typeDefinition.getName()); + builder.description(buildDescription(buildCtx, typeDefinition, typeDefinition.getDescription())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); - // builds directives from a type and its extensions - public GraphQLDirective buildDirective(Directive directive, Set directiveDefinitions, DirectiveLocation directiveLocation, GraphqlTypeComparatorRegistry comparatorRegistry) { - GraphQLDirective directiveDefinition = FpKit.findOne(directiveDefinitions, dd -> dd.getName().equals(directive.getName())).get(); - GraphQLDirective.Builder builder = GraphQLDirective.newDirective() - .name(directive.getName()) - .description(buildDescription(directive, null)) - .comparatorRegistry(comparatorRegistry) - .validLocations(directiveLocation); + List extensions = objectTypeExtensions(typeDefinition, buildCtx); + builder.extensionDefinitions(buildCtx.isCaptureAstDefinitions() ? extensions : emptyList()); + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + typeDefinition.getDirectives(), + directivesOf(extensions), + OBJECT, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + buildAppliedDirectives(buildCtx, builder, appliedDirectives); - List arguments = directive.getArguments().stream() - .map(arg -> buildDirectiveArgument(arg, directiveDefinition)) - .collect(toList()); + typeDefinition.getFieldDefinitions().forEach(fieldDef -> { + GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); + builder.field(fieldDefinition); + }); - arguments = transferMissingArguments(arguments, directiveDefinition); - arguments.forEach(builder::argument); + extensions.forEach(extension -> extension.getFieldDefinitions().forEach(fieldDef -> { + GraphQLFieldDefinition fieldDefinition = buildField(buildCtx, typeDefinition, fieldDef); + if (!builder.hasField(fieldDefinition.getName())) { + builder.field(fieldDefinition); + } + })); + + buildObjectTypeInterfaces(buildCtx, typeDefinition, builder, extensions); - return builder.build(); + return directivesObserve(buildCtx, builder.build()); } - private GraphQLArgument buildDirectiveArgument(Argument arg, GraphQLDirective directiveDefinition) { - GraphQLArgument directiveDefArgument = directiveDefinition.getArgument(arg.getName()); + private void buildObjectTypeInterfaces(BuildContext buildCtx, + ObjectTypeDefinition typeDefinition, + GraphQLObjectType.Builder builder, + List extensions) { + Map interfaces = new LinkedHashMap<>(); + typeDefinition.getImplements().forEach(type -> { + GraphQLNamedOutputType newInterfaceType = buildOutputType(buildCtx, type); + interfaces.put(newInterfaceType.getName(), newInterfaceType); + }); + + extensions.forEach(extension -> extension.getImplements().forEach(type -> { + GraphQLNamedOutputType interfaceType = buildOutputType(buildCtx, type); + if (!interfaces.containsKey(interfaceType.getName())) { + interfaces.put(interfaceType.getName(), interfaceType); + } + })); + + interfaces.values().forEach(interfaze -> { + if (interfaze instanceof GraphQLInterfaceType) { + builder.withInterface((GraphQLInterfaceType) interfaze); + return; + } + if (interfaze instanceof GraphQLTypeReference) { + builder.withInterface((GraphQLTypeReference) interfaze); + } + }); + } + + GraphQLUnionType buildUnionType(BuildContext buildCtx, UnionTypeDefinition typeDefinition) { + GraphQLUnionType.Builder builder = GraphQLUnionType.newUnionType(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? typeDefinition : null); + builder.name(typeDefinition.getName()); + builder.description(buildDescription(buildCtx, typeDefinition, typeDefinition.getDescription())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + List extensions = unionTypeExtensions(typeDefinition, buildCtx); + builder.extensionDefinitions(buildCtx.isCaptureAstDefinitions() ? extensions : emptyList()); + + typeDefinition.getMemberTypes().forEach(mt -> { + GraphQLOutputType outputType = buildOutputType(buildCtx, mt); + if (outputType instanceof GraphQLTypeReference) { + builder.possibleType((GraphQLTypeReference) outputType); + } else { + builder.possibleType((GraphQLObjectType) outputType); + } + }); + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + typeDefinition.getDirectives(), + directivesOf(extensions), + UNION, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + extensions.forEach(extension -> extension.getMemberTypes().forEach(mt -> { + GraphQLNamedOutputType outputType = buildOutputType(buildCtx, mt); + if (!builder.containType(outputType.getName())) { + if (outputType instanceof GraphQLTypeReference) { + builder.possibleType((GraphQLTypeReference) outputType); + } else { + builder.possibleType((GraphQLObjectType) outputType); + } + } + } + )); + + GraphQLUnionType unionType = builder.build(); + if (!buildCtx.getCodeRegistry().hasTypeResolver(unionType.getName())) { + TypeResolver typeResolver = getTypeResolverForUnion(buildCtx, typeDefinition); + buildCtx.getCodeRegistry().typeResolver(unionType, typeResolver); + } + return directivesObserve(buildCtx, unionType); + } + + /** + * This is the main recursive spot that builds out the various forms of Output types + * + * @param buildCtx the context we need to work out what we are doing + * @param rawType the type to be built + * + * @return an output type + */ + @SuppressWarnings({"TypeParameterUnusedInFormals"}) + private T buildOutputType(BuildContext buildCtx, Type rawType) { + + TypeDefinition typeDefinition = buildCtx.getTypeDefinition(rawType); + TypeInfo typeInfo = TypeInfo.typeInfo(rawType); + + GraphQLOutputType outputType = buildCtx.hasOutputType(typeDefinition); + if (outputType != null) { + return typeInfo.decorate(outputType); + } + + if (buildCtx.stackContains(typeInfo)) { + // we have circled around so put in a type reference and fix it up later + // otherwise we will go into an infinite loop + return typeInfo.decorate(typeRef(typeInfo.getName())); + } + + buildCtx.push(typeInfo); + + if (typeDefinition instanceof ObjectTypeDefinition) { + outputType = buildObjectType(buildCtx, (ObjectTypeDefinition) typeDefinition); + } else if (typeDefinition instanceof InterfaceTypeDefinition) { + outputType = buildInterfaceType(buildCtx, (InterfaceTypeDefinition) typeDefinition); + } else if (typeDefinition instanceof UnionTypeDefinition) { + outputType = buildUnionType(buildCtx, (UnionTypeDefinition) typeDefinition); + } else if (typeDefinition instanceof EnumTypeDefinition) { + outputType = buildEnumType(buildCtx, (EnumTypeDefinition) typeDefinition); + } else if (typeDefinition instanceof ScalarTypeDefinition) { + outputType = buildScalar(buildCtx, (ScalarTypeDefinition) typeDefinition); + } else { + // typeDefinition is not a valid output type + throw new NotAnOutputTypeError(rawType, typeDefinition); + } + + buildCtx.putOutputType((GraphQLNamedOutputType) outputType); + buildCtx.pop(); + return typeInfo.decorate(outputType); + } + + GraphQLFieldDefinition buildField(BuildContext buildCtx, TypeDefinition parentType, FieldDefinition fieldDef) { + GraphQLFieldDefinition.Builder builder = GraphQLFieldDefinition.newFieldDefinition(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? fieldDef : null); + builder.name(fieldDef.getName()); + builder.description(buildDescription(buildCtx, fieldDef, fieldDef.getDescription())); + builder.deprecate(buildDeprecationReason(fieldDef.getDirectives())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + fieldDef.getDirectives(), + emptyList(), FIELD_DEFINITION, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + fieldDef.getInputValueDefinitions().forEach(inputValueDefinition -> + builder.argument(buildArgument(buildCtx, inputValueDefinition))); + + GraphQLOutputType fieldType = buildOutputType(buildCtx, fieldDef.getType()); + builder.type(fieldType); + + GraphQLFieldDefinition fieldDefinition = builder.build(); + // if they have already wired in a fetcher - then leave it alone + FieldCoordinates coordinates = FieldCoordinates.coordinates(parentType.getName(), fieldDefinition.getName()); + if (!buildCtx.getCodeRegistry().hasDataFetcher(coordinates)) { + Optional> dataFetcherFactory = buildDataFetcherFactory(buildCtx, + parentType, + fieldDef, + fieldType, + appliedDirectives.first, + appliedDirectives.second); + + // if the dataFetcherFactory is empty, then it must have been the code registry default one + // and hence we don't need to make a "map entry" in the code registry since it will be defaulted + // anyway + dataFetcherFactory.ifPresent(fetcherFactory -> buildCtx.getCodeRegistry().dataFetcher(coordinates, fetcherFactory)); + } + return directivesObserve(buildCtx, fieldDefinition); + } + + private Optional> buildDataFetcherFactory(BuildContext buildCtx, + TypeDefinition parentType, + FieldDefinition fieldDef, + GraphQLOutputType fieldType, + List directives, + List appliedDirectives) { + String fieldName = fieldDef.getName(); + String parentTypeName = parentType.getName(); + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + RuntimeWiring runtimeWiring = buildCtx.getWiring(); + WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); + GraphQLCodeRegistry.Builder codeRegistry = buildCtx.getCodeRegistry(); + + FieldWiringEnvironment wiringEnvironment = new FieldWiringEnvironment(typeRegistry, parentType, fieldDef, fieldType, directives, appliedDirectives); + + DataFetcherFactory dataFetcherFactory; + if (wiringFactory.providesDataFetcherFactory(wiringEnvironment)) { + dataFetcherFactory = wiringFactory.getDataFetcherFactory(wiringEnvironment); + assertNotNull(dataFetcherFactory, "The WiringFactory indicated it provides a data fetcher factory but then returned null"); + } else { + // + // ok they provide a data fetcher directly + DataFetcher dataFetcher; + if (wiringFactory.providesDataFetcher(wiringEnvironment)) { + dataFetcher = wiringFactory.getDataFetcher(wiringEnvironment); + assertNotNull(dataFetcher, "The WiringFactory indicated it provides a data fetcher but then returned null"); + } else { + dataFetcher = runtimeWiring.getDataFetchersForType(parentTypeName).get(fieldName); + if (dataFetcher == null) { + dataFetcher = runtimeWiring.getDefaultDataFetcherForType(parentTypeName); + if (dataFetcher == null) { + dataFetcher = wiringFactory.getDefaultDataFetcher(wiringEnvironment); + if (dataFetcher == null) { + DataFetcherFactory codeRegistryDFF = codeRegistry.getDefaultDataFetcherFactory(); + if (codeRegistryDFF != null) { + // this will use the default of the code registry when its + // asked for at runtime + return Optional.empty(); + } + dataFetcher = dataFetcherOfLastResort(); + } + } + } + } + dataFetcherFactory = DataFetcherFactories.useDataFetcher(dataFetcher); + } + return Optional.of(dataFetcherFactory); + } + + GraphQLArgument buildArgument(BuildContext buildCtx, InputValueDefinition valueDefinition) { GraphQLArgument.Builder builder = GraphQLArgument.newArgument(); - builder.name(arg.getName()); - GraphQLInputType inputType; - Object defaultValue = null; - inputType = directiveDefArgument.getType(); - defaultValue = directiveDefArgument.getDefaultValue(); + builder.definition(buildCtx.isCaptureAstDefinitions() ? valueDefinition : null); + builder.name(valueDefinition.getName()); + builder.description(buildDescription(buildCtx, valueDefinition, valueDefinition.getDescription())); + builder.deprecate(buildDeprecationReason(valueDefinition.getDirectives())); + builder.comparatorRegistry(buildCtx.getComparatorRegistry()); + + GraphQLInputType inputType = buildInputType(buildCtx, valueDefinition.getType()); builder.type(inputType); - builder.defaultValue(defaultValue); + Value defaultValue = valueDefinition.getDefaultValue(); + if (defaultValue != null) { + builder.defaultValueLiteral(defaultValue); + } + + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + valueDefinition.getDirectives(), + emptyList(), + ARGUMENT_DEFINITION, + buildCtx.getDirectives(), + buildCtx.getComparatorRegistry()); + buildAppliedDirectives(buildCtx, builder, appliedDirectives); + + return directivesObserve(buildCtx, builder.build()); + } - Object value = buildValue(arg.getValue(), inputType); + void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) { // - // we put the default value in if the specified is null - builder.value(value == null ? defaultValue : value); - - return builder.build(); - } - - private List transferMissingArguments(List arguments, GraphQLDirective directiveDefinition) { - Map declaredArgs = FpKit.getByName(arguments, GraphQLArgument::getName, FpKit.mergeFirst()); - List argumentsOut = new ArrayList<>(arguments); - - for (GraphQLArgument directiveDefArg : directiveDefinition.getArguments()) { - if (!declaredArgs.containsKey(directiveDefArg.getName())) { - GraphQLArgument missingArg = GraphQLArgument.newArgument() - .name(directiveDefArg.getName()) - .description(directiveDefArg.getDescription()) - .definition(directiveDefArg.getDefinition()) - .type(directiveDefArg.getType()) - .defaultValue(directiveDefArg.getDefaultValue()) - .value(directiveDefArg.getDefaultValue()) - .build(); - argumentsOut.add(missingArg); + // Schema can be missing if the type is called 'Query'. Pre flight checks have checked that! + // + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + Map operationTypeDefs = buildCtx.operationTypeDefs; + + GraphQLObjectType query; + GraphQLObjectType mutation; + GraphQLObjectType subscription; + + Optional queryOperation = getOperationNamed("query", operationTypeDefs); + if (queryOperation.isEmpty()) { + TypeDefinition queryTypeDef = Objects.requireNonNull(typeRegistry.getTypeOrNull("Query")); + query = buildOutputType(buildCtx, TypeName.newTypeName().name(queryTypeDef.getName()).build()); + } else { + query = buildOperation(buildCtx, queryOperation.get()); + } + schemaBuilder.query(query); + + Optional mutationOperation = getOperationNamed("mutation", operationTypeDefs); + if (mutationOperation.isEmpty()) { + if (typeRegistry.schemaDefinition().isEmpty()) { + // If no schema definition, then there is no schema keyword. Default to using type called Mutation + TypeDefinition mutationTypeDef = typeRegistry.getTypeOrNull("Mutation"); + if (mutationTypeDef != null) { + mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.getName()).build()); + schemaBuilder.mutation(mutation); + } + } + } else { + mutation = buildOperation(buildCtx, mutationOperation.get()); + schemaBuilder.mutation(mutation); + } + + Optional subscriptionOperation = getOperationNamed("subscription", operationTypeDefs); + if (subscriptionOperation.isEmpty()) { + if (typeRegistry.schemaDefinition().isEmpty()) { + // If no schema definition, then there is no schema keyword. Default to using type called Subscription + TypeDefinition subscriptionTypeDef = typeRegistry.getTypeOrNull("Subscription"); + if (subscriptionTypeDef != null) { + subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.getName()).build()); + schemaBuilder.subscription(subscription); + } } + } else { + subscription = buildOperation(buildCtx, subscriptionOperation.get()); + schemaBuilder.subscription(subscription); } - return argumentsOut; } - public GraphQLDirective buildDirectiveFromDefinition(DirectiveDefinition directiveDefinition, Function inputTypeFactory) { + void buildSchemaDirectivesAndExtensions(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) { + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + List schemaDirectiveList = SchemaExtensionsChecker.gatherSchemaDirectives(typeRegistry); + Set runtimeDirectives = buildCtx.getDirectives(); + Pair, List> appliedDirectives = buildAppliedDirectives( + buildCtx, + inputTypeFactory(buildCtx), + schemaDirectiveList, + emptyList(), + DirectiveLocation.SCHEMA, + runtimeDirectives, + buildCtx.getComparatorRegistry()); + schemaBuilder.withSchemaDirectives(appliedDirectives.first); + schemaBuilder.withSchemaAppliedDirectives(appliedDirectives.second); - GraphQLDirective.Builder builder = GraphQLDirective.newDirective() - .name(directiveDefinition.getName()) - .definition(directiveDefinition) - .description(buildDescription(directiveDefinition, directiveDefinition.getDescription())); + schemaBuilder.definition(buildCtx.isCaptureAstDefinitions() ? typeRegistry.schemaDefinition().orElse(null) : null); + schemaBuilder.extensionDefinitions(buildCtx.isCaptureAstDefinitions() ? typeRegistry.getSchemaExtensionDefinitions() : emptyList()); + } + List inputObjectTypeExtensions(InputObjectTypeDefinition typeDefinition, BuildContext buildCtx) { + return buildCtx.getTypeRegistry().inputObjectTypeExtensions().getOrDefault(typeDefinition.getName(), emptyList()); + } - List locations = buildLocations(directiveDefinition); - locations.forEach(builder::validLocations); + List enumTypeExtensions(EnumTypeDefinition typeDefinition, BuildContext buildCtx) { + return buildCtx.getTypeRegistry().enumTypeExtensions().getOrDefault(typeDefinition.getName(), emptyList()); + } - List arguments = directiveDefinition.getInputValueDefinitions().stream() - .map(arg -> buildDirectiveArgumentFromDefinition(arg, inputTypeFactory)) - .collect(toList()); - arguments.forEach(builder::argument); - return builder.build(); + List scalarTypeExtensions(ScalarTypeDefinition typeDefinition, BuildContext buildCtx) { + return buildCtx.getTypeRegistry().scalarTypeExtensions().getOrDefault(typeDefinition.getName(), emptyList()); } - private GraphQLArgument buildDirectiveArgumentFromDefinition(InputValueDefinition arg, Function inputTypeFactory) { - GraphQLArgument.Builder builder = GraphQLArgument.newArgument() - .name(arg.getName()) - .definition(arg); + List interfaceTypeExtensions(InterfaceTypeDefinition typeDefinition, BuildContext buildCtx) { + return buildCtx.getTypeRegistry().interfaceTypeExtensions().getOrDefault(typeDefinition.getName(), emptyList()); + } - GraphQLInputType inputType = inputTypeFactory.apply(arg.getType()); - builder.type(inputType); - builder.value(buildValue(arg.getDefaultValue(), inputType)); - builder.defaultValue(buildValue(arg.getDefaultValue(), inputType)); - builder.description(buildDescription(arg, arg.getDescription())); - return builder.build(); + List objectTypeExtensions(ObjectTypeDefinition typeDefinition, BuildContext buildCtx) { + return buildCtx.getTypeRegistry().objectTypeExtensions().getOrDefault(typeDefinition.getName(), emptyList()); + } + + List unionTypeExtensions(UnionTypeDefinition typeDefinition, BuildContext buildCtx) { + return buildCtx.getTypeRegistry().unionTypeExtensions().getOrDefault(typeDefinition.getName(), emptyList()); } - private List buildLocations(DirectiveDefinition directiveDefinition) { - return directiveDefinition.getDirectiveLocations().stream() - .map(dl -> valueOf(dl.getName().toUpperCase())) - .collect(toList()); + /** + * We build the query / mutation / subscription path as a tree of referenced types + * but then we build the rest of the types specified and put them in as additional types + * + * @param buildCtx the context we need to work out what we are doing + * + * @return the additional types not referenced from the top level operations + */ + Set buildAdditionalTypes(BuildContext buildCtx) { + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + + Set detachedTypeNames = getDetachedTypeNames(buildCtx); + + Set additionalTypes = new LinkedHashSet<>(); + // recursively record detached types on the ctx and add them to the additionalTypes set + typeRegistry.types().values().stream() + .filter(typeDefinition -> detachedTypeNames.contains(typeDefinition.getName())) + .forEach(typeDefinition -> { + TypeName typeName = TypeName.newTypeName().name(typeDefinition.getName()).build(); + + if (typeDefinition instanceof InputObjectTypeDefinition) { + if (buildCtx.hasInputType(typeDefinition) == null) { + buildCtx.putInputType((GraphQLNamedInputType) buildInputType(buildCtx, typeName)); + } + additionalTypes.add(buildCtx.inputGTypes.get(typeDefinition.getName())); + } else { + if (buildCtx.hasOutputType(typeDefinition) == null) { + buildCtx.putOutputType(buildOutputType(buildCtx, typeName)); + } + additionalTypes.add(buildCtx.outputGTypes.get(typeDefinition.getName())); + } + }); + + typeRegistry.scalars().values().stream() + .filter(typeDefinition -> detachedTypeNames.contains(typeDefinition.getName())) + .forEach(scalarTypeDefinition -> { + if (ScalarInfo.isGraphqlSpecifiedScalar(scalarTypeDefinition.getName())) { + return; + } + + if (buildCtx.hasInputType(scalarTypeDefinition) == null && buildCtx.hasOutputType(scalarTypeDefinition) == null) { + buildCtx.putOutputType(buildScalar(buildCtx, scalarTypeDefinition)); + } + if (buildCtx.hasInputType(scalarTypeDefinition) != null) { + additionalTypes.add(buildCtx.inputGTypes.get(scalarTypeDefinition.getName())); + } else if (buildCtx.hasOutputType(scalarTypeDefinition) != null) { + additionalTypes.add(buildCtx.outputGTypes.get(scalarTypeDefinition.getName())); + } + }); + + return additionalTypes; + } + + /** + * Detached types (or additional types) are all types that + * are not connected to the root operations types. + * + * @param buildCtx buildCtx + * + * @return detached type names + */ + private Set getDetachedTypeNames(BuildContext buildCtx) { + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + // connected types are all types that have a path that connects them back to the root operation types. + Set connectedTypes = new HashSet<>(buildCtx.inputGTypes.keySet()); + connectedTypes.addAll(buildCtx.outputGTypes.keySet()); + + Set allTypeNames = new HashSet<>(typeRegistry.types().keySet()); + Set scalars = new HashSet<>(typeRegistry.scalars().keySet()); + allTypeNames.addAll(scalars); + + // detached types are all types minus the connected types. + Set detachedTypeNames = new HashSet<>(allTypeNames); + detachedTypeNames.removeAll(connectedTypes); + return detachedTypeNames; + } + + Set buildAdditionalDirectiveDefinitions(BuildContext buildCtx) { + Set additionalDirectives = new LinkedHashSet<>(); + TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); + + for (DirectiveDefinition directiveDefinition : typeRegistry.getDirectiveDefinitions().values()) { + if (IncludeDirective.getName().equals(directiveDefinition.getName()) + || SkipDirective.getName().equals(directiveDefinition.getName())) { + // skip and include directives are added by default to the GraphQLSchema via the GraphQLSchema builder. + continue; + } + GraphQLDirective directive = buildDirectiveDefinitionFromAst(buildCtx, directiveDefinition, inputTypeFactory(buildCtx)); + buildCtx.addDirectiveDefinition(directive); + additionalDirectives.add(directive); + } + return additionalDirectives; + } + + void addDirectivesIncludedByDefault(TypeDefinitionRegistry typeRegistry) { + // we synthesize this into the type registry - no need for them to add it + typeRegistry.add(DEPRECATED_DIRECTIVE_DEFINITION); + typeRegistry.add(SPECIFIED_BY_DIRECTIVE_DEFINITION); + typeRegistry.add(ONE_OF_DIRECTIVE_DEFINITION); + } + + private Optional getOperationNamed(String name, Map operationTypeDefs) { + return Optional.ofNullable(operationTypeDefs.get(name)); + } + + private DataFetcher dataFetcherOfLastResort() { + return SingletonPropertyDataFetcher.singleton(); + } + + private List directivesOf(List> typeDefinitions) { + return typeDefinitions.stream() + .map(TypeDefinition::getDirectives) + .filter(Objects::nonNull) + .flatMap(List::stream).collect(Collectors.toList()); + } + + private T directivesObserve(BuildContext buildCtx, T directiveContainer) { + if (!buildCtx.directiveWiringRequired) { + boolean requiresWiring = SchemaGeneratorDirectiveHelper.schemaDirectiveWiringIsRequired(directiveContainer, buildCtx.getTypeRegistry(), buildCtx.getWiring()); + buildCtx.directiveWiringRequired = buildCtx.directiveWiringRequired || requiresWiring; + } + return directiveContainer; } } diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorPostProcessing.java b/src/main/java/graphql/schema/idl/SchemaGeneratorPostProcessing.java deleted file mode 100644 index 0aa96cd210..0000000000 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorPostProcessing.java +++ /dev/null @@ -1,19 +0,0 @@ -package graphql.schema.idl; - -import graphql.schema.GraphQLSchema; - -/** - * These are called by the {@link SchemaGenerator} after a valid schema has been built - * and they can then adjust it accordingly with some sort of post processing. - */ -public interface SchemaGeneratorPostProcessing { - - /** - * Called to transform the schema from its built state into something else - * - * @param originalSchema the original built schema - * - * @return a non null schema - */ - GraphQLSchema process(GraphQLSchema originalSchema); -} diff --git a/src/main/java/graphql/schema/idl/SchemaParseOrder.java b/src/main/java/graphql/schema/idl/SchemaParseOrder.java new file mode 100644 index 0000000000..4853b9e92d --- /dev/null +++ b/src/main/java/graphql/schema/idl/SchemaParseOrder.java @@ -0,0 +1,157 @@ +package graphql.schema.idl; + +import com.google.common.collect.ImmutableMap; +import graphql.collect.ImmutableKit; +import graphql.language.SDLDefinition; +import graphql.language.SDLNamedDefinition; +import graphql.language.SourceLocation; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLSchemaElement; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; + +import static java.util.Optional.ofNullable; + +/** + * This class will track what order {@link SDLDefinition} were parsed in + * via {@link SchemaParser} and {@link TypeDefinitionRegistry} + */ +public class SchemaParseOrder implements Serializable { + + private final Map>> definitionOrder = new LinkedHashMap<>(); + + + /** + * This map is the order in which {@link SDLDefinition}s were parsed per unique {@link SourceLocation#getSourceName()}. If there + * is no source then the empty string "" is used. + * + * @return a map of source names to definitions in parsed order + */ + public Map>> getInOrder() { + return ImmutableMap.copyOf(definitionOrder); + } + + /** + * This map is the order in which {@link SDLDefinition}s were parsed per unique {@link SourceLocation#getSourceName()} and it + * only contains {@link SDLNamedDefinition}s. If there is no source then the empty string "" is used. + * + * @return a map of source names to definitions in parsed order + */ + public Map>> getInNameOrder() { + Map>> named = new LinkedHashMap<>(); + definitionOrder.forEach((location, def) -> { + List> namedDefs = ImmutableKit.filterAndMap(def, + d -> d instanceof SDLNamedDefinition, + d -> (SDLNamedDefinition) d); + named.put(location, namedDefs); + }); + return named; + } + + /** + * This comparator will sort according to the original parsed order + * + * @param is a {@link GraphQLSchemaElement} + * + * @return a comparator that sorts schema elements in parsed order + */ + public Comparator getElementComparator() { + // relies in the fact that names in graphql schema are unique across ALL elements + Map namedSortValues = buildNameIndex(getInNameOrder()); + return (e1, e2) -> { + if (isAssignable(e1, GraphQLFieldDefinition.class, GraphQLInputObjectField.class, GraphQLEnumValueDefinition.class) || + isAssignable(e2, GraphQLFieldDefinition.class, GraphQLInputObjectField.class, GraphQLEnumValueDefinition.class) + ) { + return 0; // as is - they are not parsed tracked + } + if (isAssignable(e1, GraphQLDirective.class, GraphQLNamedType.class) && isAssignable(e2, GraphQLDirective.class, GraphQLNamedType.class)) { + int sortVal1 = sortValue((GraphQLNamedSchemaElement) e1, namedSortValues); + int sortVal2 = sortValue((GraphQLNamedSchemaElement) e2, namedSortValues); + return Integer.compare(sortVal1, sortVal2); + } + return -1; // sort to the top + }; + } + + private boolean isAssignable(T e1, Class... classes) { + return Arrays.stream(classes).anyMatch(aClass -> aClass.isAssignableFrom(e1.getClass())); + } + + private Integer sortValue(GraphQLNamedSchemaElement e1, Map namedSortValues) { + return namedSortValues.getOrDefault(e1.getName(), -1); + } + + private Map buildNameIndex(Map>> inNameOrder) { + Map nameIndex = new HashMap<>(); + int sourceIndex = 0; + for (Map.Entry>> entry : inNameOrder.entrySet()) { + List> namedDefs = entry.getValue(); + for (int i = 0; i < namedDefs.size(); i++) { + SDLNamedDefinition namedDefinition = namedDefs.get(i); + // we will put it in parsed order AND with first sources first + int index = i + (sourceIndex * 100_000_000); + nameIndex.put(namedDefinition.getName(), index); + } + sourceIndex++; + } + return nameIndex; + } + + /** + * This adds a new {@link SDLDefinition} to the order + * + * @param sdlDefinition the SDL definition to add + * @param for two + * + * @return this {@link SchemaParseOrder} for fluent building + */ + public > SchemaParseOrder addDefinition(T sdlDefinition) { + if (sdlDefinition != null) { + definitionList(sdlDefinition).add(sdlDefinition); + } + return this; + } + + /** + * This removes a {@link SDLDefinition} from the order + * + * @param sdlDefinition the SDL definition to remove + * @param for two + * + * @return this {@link SchemaParseOrder} for fluent building + */ + public > SchemaParseOrder removeDefinition(T sdlDefinition) { + definitionList(sdlDefinition).remove(sdlDefinition); + return this; + } + + private > List> definitionList(T sdlDefinition) { + String location = ofNullable(sdlDefinition.getSourceLocation()) + .map(SourceLocation::getSourceName).orElse(""); + return computeIfAbsent(location); + } + + private List> computeIfAbsent(String location) { + return definitionOrder.computeIfAbsent(location, k -> new ArrayList<>()); + } + + @Override + public String toString() { + return new StringJoiner(", ", SchemaParseOrder.class.getSimpleName() + "[", "]") + .add("definitionOrder=" + definitionOrder) + .toString(); + } +} diff --git a/src/main/java/graphql/schema/idl/SchemaParser.java b/src/main/java/graphql/schema/idl/SchemaParser.java index 586782bc36..0d6c071282 100644 --- a/src/main/java/graphql/schema/idl/SchemaParser.java +++ b/src/main/java/graphql/schema/idl/SchemaParser.java @@ -8,13 +8,17 @@ import graphql.language.SDLDefinition; import graphql.parser.InvalidSyntaxException; import graphql.parser.Parser; +import graphql.parser.ParserEnvironment; +import graphql.parser.ParserOptions; import graphql.schema.idl.errors.NonSDLDefinitionError; import graphql.schema.idl.errors.SchemaProblem; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; -import java.io.InputStream; -import java.io.InputStreamReader; import java.io.File; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; import java.nio.file.Files; @@ -22,6 +26,7 @@ import java.util.Collections; import java.util.List; +import static graphql.parser.ParserEnvironment.newParserEnvironment; import static java.nio.charset.Charset.defaultCharset; /** @@ -29,6 +34,7 @@ * definitions ready to be placed into {@link SchemaGenerator} say */ @PublicApi +@NullMarked public class SchemaParser { /** @@ -71,8 +77,22 @@ public TypeDefinitionRegistry parse(InputStream inputStream) throws SchemaProble * @throws SchemaProblem if there are problems compiling the schema definitions */ public TypeDefinitionRegistry parse(Reader reader) throws SchemaProblem { + return parse(reader, null); + } + + /** + * Parse a reader of schema definitions and create a {@link TypeDefinitionRegistry} + * + * @param reader the reader to parse + * @param parserOptions the parse options to use while parsing + * + * @return registry of type definitions + * + * @throws SchemaProblem if there are problems compiling the schema definitions + */ + public TypeDefinitionRegistry parse(Reader reader, @Nullable ParserOptions parserOptions) throws SchemaProblem { try (Reader input = reader) { - return parseImpl(input); + return parseImpl(input, parserOptions); } catch (IOException e) { throw new RuntimeException(e); } @@ -92,9 +112,17 @@ public TypeDefinitionRegistry parse(String schemaInput) throws SchemaProblem { } public TypeDefinitionRegistry parseImpl(Reader schemaInput) { + // why it this public - (head shake) + return parseImpl(schemaInput, null); + } + + private TypeDefinitionRegistry parseImpl(Reader schemaInput, @Nullable ParserOptions parseOptions) { try { - Parser parser = new Parser(); - Document document = parser.parseDocument(schemaInput); + if (parseOptions == null) { + parseOptions = ParserOptions.getDefaultSdlParserOptions(); + } + ParserEnvironment parserEnvironment = newParserEnvironment().document(schemaInput).parserOptions(parseOptions).build(); + Document document = Parser.parse(parserEnvironment); return buildRegistry(document); } catch (InvalidSyntaxException e) { diff --git a/src/main/java/graphql/schema/idl/SchemaPrinter.java b/src/main/java/graphql/schema/idl/SchemaPrinter.java index 56ec690134..cafa142e0c 100644 --- a/src/main/java/graphql/schema/idl/SchemaPrinter.java +++ b/src/main/java/graphql/schema/idl/SchemaPrinter.java @@ -1,10 +1,14 @@ package graphql.schema.idl; import graphql.Assert; +import graphql.DirectivesUtil; +import graphql.GraphQLContext; import graphql.PublicApi; +import graphql.execution.ValuesResolver; import graphql.language.AstPrinter; -import graphql.language.AstValueHelper; +import graphql.language.Comment; import graphql.language.Description; +import graphql.language.DirectiveDefinition; import graphql.language.Document; import graphql.language.EnumTypeDefinition; import graphql.language.EnumValueDefinition; @@ -14,11 +18,16 @@ import graphql.language.InterfaceTypeDefinition; import graphql.language.ObjectTypeDefinition; import graphql.language.ScalarTypeDefinition; +import graphql.language.SchemaDefinition; +import graphql.language.SchemaExtensionDefinition; import graphql.language.TypeDefinition; import graphql.language.UnionTypeDefinition; import graphql.schema.DefaultGraphqlTypeComparatorRegistry; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLEnumValueDefinition; import graphql.schema.GraphQLFieldDefinition; @@ -38,8 +47,8 @@ import graphql.schema.GraphQLUnionType; import graphql.schema.GraphqlTypeComparatorEnvironment; import graphql.schema.GraphqlTypeComparatorRegistry; +import graphql.schema.InputValueWithState; import graphql.schema.visibility.GraphqlFieldVisibility; -import graphql.util.EscapeUtil; import java.io.PrintWriter; import java.io.StringWriter; @@ -48,14 +57,14 @@ import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; import static graphql.Directives.DeprecatedDirective; -import static graphql.introspection.Introspection.DirectiveLocation.ENUM_VALUE; -import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINITION; +import static graphql.Scalars.GraphQLString; import static graphql.schema.visibility.DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY; import static graphql.util.EscapeUtil.escapeJsonString; import static java.util.Optional.ofNullable; @@ -67,14 +76,11 @@ */ @PublicApi public class SchemaPrinter { - // - // we use this so that we get the simple "@deprecated" as text and not a full exploded - // text with arguments (but only when we auto add this) - // - private static final GraphQLDirective DeprecatedDirective4Printing = GraphQLDirective.newDirective() - .name("deprecated") - .validLocations(FIELD_DEFINITION, ENUM_VALUE) - .build(); + /** + * This predicate excludes all directives which are specified by the GraphQL Specification. + * Printing these directives is optional. + */ + public static final Predicate ExcludeGraphQLSpecifiedDirectivesPredicate = d -> !DirectiveInfo.isGraphqlSpecifiedDirective(d); /** * Options to use when printing a schema @@ -89,26 +95,42 @@ public static class Options { private final boolean includeSchemaDefinition; + private final boolean includeDirectiveDefinitions; + private final boolean descriptionsAsHashComments; - private final Predicate includeDirective; + private final Predicate includeDirectiveDefinition; + + private final Predicate includeDirective; + + private final Predicate includeSchemaElement; private final GraphqlTypeComparatorRegistry comparatorRegistry; + private final boolean includeAstDefinitionComments; + private Options(boolean includeIntrospectionTypes, boolean includeScalars, boolean includeSchemaDefinition, + boolean includeDirectiveDefinitions, + Predicate includeDirectiveDefinition, boolean useAstDefinitions, boolean descriptionsAsHashComments, - Predicate includeDirective, - GraphqlTypeComparatorRegistry comparatorRegistry) { + Predicate includeDirective, + Predicate includeSchemaElement, + GraphqlTypeComparatorRegistry comparatorRegistry, + boolean includeAstDefinitionComments) { this.includeIntrospectionTypes = includeIntrospectionTypes; this.includeScalars = includeScalars; this.includeSchemaDefinition = includeSchemaDefinition; + this.includeDirectiveDefinitions = includeDirectiveDefinitions; + this.includeDirectiveDefinition = includeDirectiveDefinition; this.includeDirective = includeDirective; this.useAstDefinitions = useAstDefinitions; this.descriptionsAsHashComments = descriptionsAsHashComments; this.comparatorRegistry = comparatorRegistry; + this.includeSchemaElement = includeSchemaElement; + this.includeAstDefinitionComments = includeAstDefinitionComments; } public boolean isIncludeIntrospectionTypes() { @@ -123,10 +145,22 @@ public boolean isIncludeSchemaDefinition() { return includeSchemaDefinition; } - public Predicate getIncludeDirective() { + public boolean isIncludeDirectiveDefinitions() { + return includeDirectiveDefinitions; + } + + public Predicate getIncludeDirectiveDefinition() { + return includeDirectiveDefinition; + } + + public Predicate getIncludeDirective() { return includeDirective; } + public Predicate getIncludeSchemaElement() { + return includeSchemaElement; + } + public boolean isDescriptionsAsHashComments() { return descriptionsAsHashComments; } @@ -139,30 +173,61 @@ public boolean isUseAstDefinitions() { return useAstDefinitions; } + public boolean isIncludeAstDefinitionComments() { + return includeAstDefinitionComments; + } + public static Options defaultOptions() { - return new Options(false, true, - false, false, false, - directive -> true, DefaultGraphqlTypeComparatorRegistry.defaultComparators()); + return new Options(false, + true, + false, + true, + directive -> true, false, + false, + directive -> true, + element -> true, + DefaultGraphqlTypeComparatorRegistry.defaultComparators(), + false); } /** * This will allow you to include introspection types that are contained in a schema * * @param flag whether to include them + * * @return options */ public Options includeIntrospectionTypes(boolean flag) { - return new Options(flag, this.includeScalars, this.includeSchemaDefinition, this.useAstDefinitions, this.descriptionsAsHashComments, this.includeDirective, this.comparatorRegistry); + return new Options(flag, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } /** * This will allow you to include scalar types that are contained in a schema * * @param flag whether to include them + * * @return options */ public Options includeScalarTypes(boolean flag) { - return new Options(this.includeIntrospectionTypes, flag, this.includeSchemaDefinition, this.useAstDefinitions, this.descriptionsAsHashComments, this.includeDirective, this.comparatorRegistry); + return new Options(this.includeIntrospectionTypes, + flag, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } /** @@ -172,10 +237,69 @@ public Options includeScalarTypes(boolean flag) { * types do not use the default names. * * @param flag whether to force include the schema definition + * * @return options */ public Options includeSchemaDefinition(boolean flag) { - return new Options(this.includeIntrospectionTypes, this.includeScalars, flag, this.useAstDefinitions, this.descriptionsAsHashComments, this.includeDirective, this.comparatorRegistry); + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + flag, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); + } + + /** + * This flag controls whether schema printer will include directive definitions at the top of the schema, but does not remove them from the field or type usage. + *

      + * In some schema definitions, like Apollo Federation, the schema should be printed without the directive definitions. + * This simplified schema is returned by a GraphQL query to other services, in a format that is different that the introspection query. + *

      + * On by default. + * + * @param flag whether to print directive definitions + * + * @return new instance of options + */ + public Options includeDirectiveDefinitions(boolean flag) { + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + flag, + directive -> flag, + this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); + } + + + /** + * This is a Predicate that decides whether a directive definition is printed. + * + * @param includeDirectiveDefinition the predicate to decide of a directive definition is printed + * + * @return new instance of options + */ + public Options includeDirectiveDefinition(Predicate includeDirectiveDefinition) { + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } /** @@ -183,14 +307,65 @@ public Options includeSchemaDefinition(boolean flag) { * make the printout noisy and having this flag would allow cleaner printout. On by default. * * @param flag whether to print directives + * * @return new instance of options */ public Options includeDirectives(boolean flag) { - return new Options(this.includeIntrospectionTypes, this.includeScalars, this.includeSchemaDefinition, this.useAstDefinitions, this.descriptionsAsHashComments, directive -> flag, this.comparatorRegistry); + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + directive -> flag, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } - public Options includeDirectives(Predicate includeDirective) { - return new Options(this.includeIntrospectionTypes, this.includeScalars, this.includeSchemaDefinition, this.useAstDefinitions, this.descriptionsAsHashComments, includeDirective, this.comparatorRegistry); + /** + * This is a Predicate that decides whether a directive element is printed. + * + * @param includeDirective the predicate to decide of a directive is printed + * + * @return new instance of options + */ + public Options includeDirectives(Predicate includeDirective) { + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); + } + + + /** + * This is a general purpose Predicate that decides whether a schema element is printed ever. + * + * @param includeSchemaElement the predicate to decide of a schema is printed + * + * @return new instance of options + */ + public Options includeSchemaElement(Predicate includeSchemaElement) { + Assert.assertNotNull(includeSchemaElement); + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } /** @@ -198,10 +373,21 @@ public Options includeDirectives(Predicate includeDirective) { * allows access to any `extend type` declarations that might have been originally made. * * @param flag whether to print via AST type definitions + * * @return new instance of options */ public Options useAstDefinitions(boolean flag) { - return new Options(this.includeIntrospectionTypes, this.includeScalars, this.includeSchemaDefinition, flag, this.descriptionsAsHashComments, this.includeDirective, this.comparatorRegistry); + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + flag, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } /** @@ -211,10 +397,21 @@ public Options useAstDefinitions(boolean flag) { * This option is provided to ease adoption and may be removed in future versions. * * @param flag whether to print description as # comments + * * @return new instance of options */ public Options descriptionsAsHashComments(boolean flag) { - return new Options(this.includeIntrospectionTypes, this.includeScalars, this.includeSchemaDefinition, this.useAstDefinitions, flag, this.includeDirective, this.comparatorRegistry); + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + flag, + this.includeDirective, + this.includeSchemaElement, + this.comparatorRegistry, + this.includeAstDefinitionComments); } /** @@ -223,14 +420,48 @@ public Options descriptionsAsHashComments(boolean flag) { * The default is to sort elements by name but you can put in your own code to decide on the field order * * @param comparatorRegistry The registry containing the {@code Comparator} and environment scoping rules. + * * @return options */ public Options setComparators(GraphqlTypeComparatorRegistry comparatorRegistry) { - return new Options(this.includeIntrospectionTypes, this.includeScalars, this.includeSchemaDefinition, this.useAstDefinitions, this.descriptionsAsHashComments, this.includeDirective, comparatorRegistry); + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + comparatorRegistry, + this.includeAstDefinitionComments); + } + + /** + * Sometimes it is useful to allow printing schema comments. This can be achieved by providing comments in the AST definitions. + *

      + * The default is to ignore these for backward compatibility and due to this being relatively uncommon need. + * + * @param flag whether to include AST definition comments. + * + * @return new instance of Options + */ + public Options includeAstDefinitionComments(boolean flag) { + return new Options(this.includeIntrospectionTypes, + this.includeScalars, + this.includeSchemaDefinition, + this.includeDirectiveDefinitions, + this.includeDirectiveDefinition, + this.useAstDefinitions, + this.descriptionsAsHashComments, + this.includeDirective, + this.includeSchemaElement, + comparatorRegistry, + flag); } } - private final Map> printers = new LinkedHashMap<>(); + private final Map, SchemaElementPrinter> printers = new LinkedHashMap<>(); private final Options options; @@ -241,6 +472,7 @@ public SchemaPrinter() { public SchemaPrinter(Options options) { this.options = options; printers.put(GraphQLSchema.class, schemaPrinter()); + printers.put(GraphQLDirective.class, directivePrinter()); printers.put(GraphQLObjectType.class, objectPrinter()); printers.put(GraphQLEnumType.class, enumPrinter()); printers.put(GraphQLScalarType.class, scalarPrinter()); @@ -251,11 +483,12 @@ public SchemaPrinter(Options options) { /** * This can print an in memory GraphQL IDL document back to a logical schema definition. - * If you want to turn a Introspection query result into a Document (and then into a printed + * If you want to turn an Introspection query result into a Document (and then into a printed * schema) then use {@link graphql.introspection.IntrospectionResultToSchema#createSchemaDefinition(java.util.Map)} * first to get the {@link graphql.language.Document} and then print that. * * @param schemaIDL the parsed schema IDL + * * @return the logical schema definition */ public String print(Document schemaIDL) { @@ -267,6 +500,7 @@ public String print(Document schemaIDL) { * This can print an in memory GraphQL schema back to a logical schema definition * * @param schema the schema in play + * * @return the logical schema definition */ public String print(GraphQLSchema schema) { @@ -276,29 +510,28 @@ public String print(GraphQLSchema schema) { GraphqlFieldVisibility visibility = schema.getCodeRegistry().getFieldVisibility(); printer(schema.getClass()).print(out, schema, visibility); + Comparator comparator = getComparator(GraphQLSchemaElement.class, null); - List typesAsList = schema.getAllTypesAsList() - .stream() - .sorted(Comparator.comparing(GraphQLNamedType::getName)) - .collect(toList()); + Stream directivesAndTypes = Stream.concat( + schema.getAllTypesAsList().stream(), + getSchemaDirectives(schema).stream()); - printType(out, typesAsList, GraphQLInterfaceType.class, visibility); - printType(out, typesAsList, GraphQLUnionType.class, visibility); - printType(out, typesAsList, GraphQLObjectType.class, visibility); - printType(out, typesAsList, GraphQLEnumType.class, visibility); - printType(out, typesAsList, GraphQLScalarType.class, visibility); - printType(out, typesAsList, GraphQLInputObjectType.class, visibility); + List elements = directivesAndTypes + .map(e -> (GraphQLSchemaElement) e) + .filter(options.getIncludeSchemaElement()) + .sorted(comparator) + .collect(toList()); - String result = sw.toString(); - if (result.endsWith("\n\n")) { - result = result.substring(0, result.length() - 1); + for (GraphQLSchemaElement element : elements) { + printSchemaElement(out, element, visibility); } - return result; + + return trimNewLineChars(sw.toString()); } - private interface TypePrinter { + private interface SchemaElementPrinter { - void print(PrintWriter out, T type, GraphqlFieldVisibility visibility); + void print(PrintWriter out, T schemaElement, GraphqlFieldVisibility visibility); } @@ -306,7 +539,7 @@ private boolean isIntrospectionType(GraphQLNamedType type) { return !options.isIncludeIntrospectionTypes() && type.getName().startsWith("__"); } - private TypePrinter scalarPrinter() { + private SchemaElementPrinter scalarPrinter() { return (out, type, visibility) -> { if (!options.isIncludeScalars()) { return; @@ -326,104 +559,110 @@ private TypePrinter scalarPrinter() { printAsAst(out, type.getDefinition(), type.getExtensionDefinitions()); } else { printComments(out, type, ""); - out.format("scalar %s%s\n\n", type.getName(), directivesString(GraphQLScalarType.class, type.getDirectives())); + out.format("scalar %s%s\n\n", type.getName(), directivesString(GraphQLScalarType.class, type)); } } }; } - private TypePrinter enumPrinter() { + private SchemaElementPrinter enumPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; } - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLEnumType.class) - .elementType(GraphQLEnumValueDefinition.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(GraphQLEnumType.class, GraphQLEnumValueDefinition.class); if (shouldPrintAsAst(type.getDefinition())) { printAsAst(out, type.getDefinition(), type.getExtensionDefinitions()); } else { printComments(out, type, ""); - out.format("enum %s%s {\n", type.getName(), directivesString(GraphQLEnumType.class, type.getDirectives())); + out.format("enum %s%s", type.getName(), directivesString(GraphQLEnumType.class, type)); List values = type.getValues() .stream() .sorted(comparator) .collect(toList()); - for (GraphQLEnumValueDefinition enumValueDefinition : values) { - printComments(out, enumValueDefinition, " "); - List enumValueDirectives = enumValueDefinition.getDirectives(); - if (enumValueDefinition.isDeprecated()) { - enumValueDirectives = addDeprecatedDirectiveIfNeeded(enumValueDirectives); + if (values.size() > 0) { + out.format(" {\n"); + for (GraphQLEnumValueDefinition enumValueDefinition : values) { + printComments(out, enumValueDefinition, " "); + out.format(" %s%s\n", enumValueDefinition.getName(), directivesString(GraphQLEnumValueDefinition.class, enumValueDefinition.isDeprecated(), enumValueDefinition)); } - out.format(" %s%s\n", enumValueDefinition.getName(), directivesString(GraphQLEnumValueDefinition.class, enumValueDirectives)); + out.format("}"); } - out.format("}\n\n"); + out.format("\n\n"); } }; } private void printFieldDefinitions(PrintWriter out, Comparator comparator, List fieldDefinitions) { + if (fieldDefinitions.size() == 0) { + return; + } + + out.format(" {\n"); fieldDefinitions .stream() + .filter(options.getIncludeSchemaElement()) .sorted(comparator) .forEach(fd -> { printComments(out, fd, " "); - List fieldDirectives = fd.getDirectives(); - if (fd.isDeprecated()) { - fieldDirectives = addDeprecatedDirectiveIfNeeded(fieldDirectives); - } out.format(" %s%s: %s%s\n", fd.getName(), argsString(GraphQLFieldDefinition.class, fd.getArguments()), typeString(fd.getType()), - directivesString(GraphQLFieldDefinition.class, fieldDirectives)); + directivesString(GraphQLFieldDefinition.class, fd.isDeprecated(), fd)); }); + out.format("}"); } - private TypePrinter interfacePrinter() { + private SchemaElementPrinter interfacePrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; } - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLInterfaceType.class) - .elementType(GraphQLFieldDefinition.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); - if (shouldPrintAsAst(type.getDefinition())) { printAsAst(out, type.getDefinition(), type.getExtensionDefinitions()); } else { printComments(out, type, ""); - out.format("interface %s%s {\n", type.getName(), directivesString(GraphQLInterfaceType.class, type.getDirectives())); + if (type.getInterfaces().isEmpty()) { + out.format("interface %s%s", type.getName(), directivesString(GraphQLInterfaceType.class, type)); + } else { + + Comparator implementsComparator = getComparator(GraphQLInterfaceType.class, GraphQLOutputType.class); + + Stream interfaceNames = type.getInterfaces() + .stream() + .sorted(implementsComparator) + .map(GraphQLNamedType::getName); + out.format("interface %s implements %s%s", + type.getName(), + interfaceNames.collect(joining(" & ")), + directivesString(GraphQLInterfaceType.class, type)); + } + + Comparator comparator = getComparator(GraphQLInterfaceType.class, GraphQLFieldDefinition.class); + printFieldDefinitions(out, comparator, visibility.getFieldDefinitions(type)); - out.format("}\n\n"); + out.format("\n\n"); } }; } - private TypePrinter unionPrinter() { + private SchemaElementPrinter unionPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; } - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLUnionType.class) - .elementType(GraphQLOutputType.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(GraphQLUnionType.class, GraphQLOutputType.class); if (shouldPrintAsAst(type.getDefinition())) { printAsAst(out, type.getDefinition(), type.getExtensionDefinitions()); } else { printComments(out, type, ""); - out.format("union %s%s = ", type.getName(), directivesString(GraphQLUnionType.class, type.getDirectives())); + out.format("union %s%s = ", type.getName(), directivesString(GraphQLUnionType.class, type)); List types = type.getTypes() .stream() .sorted(comparator) @@ -440,7 +679,19 @@ private TypePrinter unionPrinter() { }; } - private TypePrinter objectPrinter() { + private SchemaElementPrinter directivePrinter() { + return (out, directive, visibility) -> { + boolean isOnEver = options.isIncludeDirectiveDefinitions(); + boolean specificTest = options.getIncludeDirectiveDefinition().test(directive.getName()); + if (isOnEver && specificTest) { + String s = directiveDefinition(directive); + out.format("%s", s); + out.print("\n\n"); + } + }; + } + + private SchemaElementPrinter objectPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; @@ -450,38 +701,30 @@ private TypePrinter objectPrinter() { } else { printComments(out, type, ""); if (type.getInterfaces().isEmpty()) { - out.format("type %s%s {\n", type.getName(), directivesString(GraphQLObjectType.class, type.getDirectives())); + out.format("type %s%s", type.getName(), directivesString(GraphQLObjectType.class, type)); } else { - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLObjectType.class) - .elementType(GraphQLOutputType.class) - .build(); - Comparator implementsComparator = options.comparatorRegistry.getComparator(environment); + Comparator implementsComparator = getComparator(GraphQLObjectType.class, GraphQLOutputType.class); Stream interfaceNames = type.getInterfaces() .stream() .sorted(implementsComparator) .map(GraphQLNamedType::getName); - out.format("type %s implements %s%s {\n", + out.format("type %s implements %s%s", type.getName(), interfaceNames.collect(joining(" & ")), - directivesString(GraphQLObjectType.class, type.getDirectives())); + directivesString(GraphQLObjectType.class, type)); } - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLObjectType.class) - .elementType(GraphQLFieldDefinition.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(GraphQLObjectType.class, GraphQLFieldDefinition.class); printFieldDefinitions(out, comparator, visibility.getFieldDefinitions(type)); - out.format("}\n\n"); + out.format("\n\n"); } }; } - private TypePrinter inputObjectPrinter() { + private SchemaElementPrinter inputObjectPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; @@ -490,29 +733,32 @@ private TypePrinter inputObjectPrinter() { printAsAst(out, type.getDefinition(), type.getExtensionDefinitions()); } else { printComments(out, type, ""); - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLInputObjectType.class) - .elementType(GraphQLInputObjectField.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); - - out.format("input %s%s {\n", type.getName(), directivesString(GraphQLInputObjectType.class, type.getDirectives())); - visibility.getFieldDefinitions(type) - .stream() - .sorted(comparator) - .forEach(fd -> { - printComments(out, fd, " "); - out.format(" %s: %s", - fd.getName(), typeString(fd.getType())); - Object defaultValue = fd.getDefaultValue(); - if (defaultValue != null) { - String astValue = printAst(defaultValue, fd.getType()); - out.format(" = %s", astValue); - } - out.format(directivesString(GraphQLInputObjectField.class, fd.getDirectives())); - out.format("\n"); - }); - out.format("}\n\n"); + + Comparator comparator = getComparator(GraphQLInputObjectType.class, GraphQLInputObjectField.class); + + out.format("input %s%s", type.getName(), directivesString(GraphQLInputObjectType.class, type)); + List inputObjectFields = visibility.getFieldDefinitions(type); + if (inputObjectFields.size() > 0) { + out.format(" {\n"); + inputObjectFields + .stream() + .filter(options.getIncludeSchemaElement()) + .sorted(comparator) + .forEach(fd -> { + printComments(out, fd, " "); + out.format(" %s: %s", + fd.getName(), typeString(fd.getType())); + if (fd.hasSetDefaultValue()) { + InputValueWithState defaultValue = fd.getInputFieldDefaultValue(); + String astValue = printAst(defaultValue, fd.getType()); + out.format(" = %s", astValue); + } + out.print(directivesString(GraphQLInputObjectField.class, fd.isDeprecated(), fd)); + out.format("\n"); + }); + out.format("}"); + } + out.format("\n\n"); } }; } @@ -521,9 +767,21 @@ private TypePrinter inputObjectPrinter() { * This will return true if the options say to use the AST and we have an AST element * * @param definition the AST type definition + * + * @return true if we should print using AST nodes + */ + private boolean shouldPrintAsAst(TypeDefinition definition) { + return options.isUseAstDefinitions() && definition != null; + } + + /** + * This will return true if the options say to use the AST and we have an AST element + * + * @param definition the AST schema definition + * * @return true if we should print using AST nodes */ - private boolean shouldPrintAsAst(TypeDefinition definition) { + private boolean shouldPrintAsAst(SchemaDefinition definition) { return options.isUseAstDefinitions() && definition != null; } @@ -535,29 +793,48 @@ private boolean shouldPrintAsAst(TypeDefinition definition) { * @param definition the AST type definition * @param extensions a list of type definition extensions */ - private void printAsAst(PrintWriter out, TypeDefinition definition, List extensions) { + private void printAsAst(PrintWriter out, TypeDefinition definition, List> extensions) { + out.printf("%s\n", AstPrinter.printAst(definition)); + if (extensions != null) { + for (TypeDefinition extension : extensions) { + out.printf("\n%s\n", AstPrinter.printAst(extension)); + } + } + out.print('\n'); + } + + /** + * This will print out a runtime graphql schema block using its AST definition. This + * must be guarded by a called to {@link #shouldPrintAsAst(SchemaDefinition)} + * + * @param out the output writer + * @param definition the AST schema definition + * @param extensions a list of schema definition extensions + */ + private void printAsAst(PrintWriter out, SchemaDefinition definition, List extensions) { out.printf("%s\n", AstPrinter.printAst(definition)); if (extensions != null) { - for (TypeDefinition extension : extensions) { + for (SchemaExtensionDefinition extension : extensions) { out.printf("\n%s\n", AstPrinter.printAst(extension)); } } - out.println(); + out.print('\n'); } - private static String printAst(Object value, GraphQLInputType type) { - return AstPrinter.printAst(AstValueHelper.astFromValue(value, type)); + + private static String printAst(InputValueWithState value, GraphQLInputType type) { + return AstPrinter.printAst(ValuesResolver.valueToLiteral(value, type, GraphQLContext.getDefault(), Locale.getDefault())); } - private TypePrinter schemaPrinter() { + private SchemaElementPrinter schemaPrinter() { return (out, schema, visibility) -> { GraphQLObjectType queryType = schema.getQueryType(); GraphQLObjectType mutationType = schema.getMutationType(); GraphQLObjectType subscriptionType = schema.getSubscriptionType(); // when serializing a GraphQL schema using the type system language, a - // schema definition should be omitted if only uses the default root type names. + // schema definition should be omitted only if it uses the default root type names. boolean needsSchemaPrinted = options.isIncludeSchemaDefinition(); if (!needsSchemaPrinted) { @@ -573,29 +850,34 @@ private TypePrinter schemaPrinter() { } if (needsSchemaPrinted) { - out.format("schema {\n"); - if (queryType != null) { - out.format(" query: %s\n", queryType.getName()); - } - if (mutationType != null) { - out.format(" mutation: %s\n", mutationType.getName()); - } - if (subscriptionType != null) { - out.format(" subscription: %s\n", subscriptionType.getName()); + if (shouldPrintAsAst(schema.getDefinition())) { + printAsAst(out, schema.getDefinition(), schema.getExtensionDefinitions()); + } else { + if (hasAstDefinitionComments(schema) || hasDescription(schema)) { + out.print(printComments(schema, "")); + } + List directives = DirectivesUtil.toAppliedDirectives(schema.getSchemaAppliedDirectives(), schema.getSchemaDirectives()); + out.format("schema %s{\n", directivesString(GraphQLSchemaElement.class, directives)); + if (queryType != null) { + out.format(" query: %s\n", queryType.getName()); + } + if (mutationType != null) { + out.format(" mutation: %s\n", mutationType.getName()); + } + if (subscriptionType != null) { + out.format(" subscription: %s\n", subscriptionType.getName()); + } + out.format("}\n\n"); } - out.format("}\n\n"); - } - - List directives = getSchemaDirectives(schema); - if (!directives.isEmpty()) { - out.format("%s", directiveDefinitions(directives)); } }; } private List getSchemaDirectives(GraphQLSchema schema) { + Predicate includePredicate = d -> options.getIncludeDirective().test(d.getName()); return schema.getDirectives().stream() - .filter(options.getIncludeDirective()) + .filter(includePredicate) + .filter(options.getIncludeSchemaElement()) .collect(toList()); } @@ -608,49 +890,47 @@ String argsString(List arguments) { } String argsString(Class parent, List arguments) { + boolean hasAstDefinitionComments = arguments.stream().anyMatch(this::hasAstDefinitionComments); boolean hasDescriptions = arguments.stream().anyMatch(this::hasDescription); - String halfPrefix = hasDescriptions ? " " : ""; - String prefix = hasDescriptions ? " " : ""; + String halfPrefix = hasAstDefinitionComments || hasDescriptions ? " " : ""; + String prefix = hasAstDefinitionComments || hasDescriptions ? " " : ""; int count = 0; StringBuilder sb = new StringBuilder(); - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(parent) - .elementType(GraphQLArgument.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(parent, GraphQLArgument.class); arguments = arguments .stream() .sorted(comparator) + .filter(options.getIncludeSchemaElement()) .collect(toList()); for (GraphQLArgument argument : arguments) { if (count == 0) { sb.append("("); } else { - sb.append(", "); + sb.append(","); + if (!hasAstDefinitionComments && !hasDescriptions) { + sb.append(" "); + } } - if (hasDescriptions) { + if (hasAstDefinitionComments || hasDescriptions) { sb.append("\n"); } sb.append(printComments(argument, prefix)); sb.append(prefix).append(argument.getName()).append(": ").append(typeString(argument.getType())); - Object defaultValue = argument.getDefaultValue(); - if (defaultValue != null) { + if (argument.hasSetDefaultValue()) { + InputValueWithState defaultValue = argument.getArgumentDefaultValue(); sb.append(" = "); sb.append(printAst(defaultValue, argument.getType())); } - argument.getDirectives().stream() - .map(this::directiveString) - .filter(it -> !it.isEmpty()) - .forEach(directiveString -> sb.append(" ").append(directiveString)); + sb.append(directivesString(GraphQLArgument.class, argument.isDeprecated(), argument)); count++; } if (count > 0) { - if (hasDescriptions) { + if (hasAstDefinitionComments || hasDescriptions) { sb.append("\n"); } sb.append(halfPrefix).append(")"); @@ -658,32 +938,43 @@ String argsString(Class parent, List parent, List directives) { + public String directivesString(Class parentType, GraphQLDirectiveContainer directiveContainer) { + return directivesString(parentType, false, directiveContainer); + } + + String directivesString(Class parentType, boolean isDeprecated, GraphQLDirectiveContainer directiveContainer) { + List directives; + if (isDeprecated) { + directives = addOrUpdateDeprecatedDirectiveIfNeeded(directiveContainer); + } else { + directives = DirectivesUtil.toAppliedDirectives(directiveContainer); + } + return directivesString(parentType, directives); + } + + private String directivesString(Class parentType, List directives) { directives = directives.stream() // @deprecated is special - we always print it if something is deprecated - .filter(directive -> options.getIncludeDirective().test(directive) || isDeprecatedDirective(directive)) + .filter(directive -> options.getIncludeDirective().test(directive.getName())) + .filter(options.getIncludeSchemaElement()) .collect(toList()); if (directives.isEmpty()) { return ""; } StringBuilder sb = new StringBuilder(); - if (!directives.isEmpty()) { + if (parentType != GraphQLSchemaElement.class) { sb.append(" "); } - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(parent) - .elementType(GraphQLDirective.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(parentType, GraphQLAppliedDirective.class); directives = directives .stream() .sorted(comparator) .collect(toList()); for (int i = 0; i < directives.size(); i++) { - GraphQLDirective directive = directives.get(i); + GraphQLAppliedDirective directive = directives.get(i); sb.append(directiveString(directive)); if (i < directives.size() - 1) { sb.append(" "); @@ -692,37 +983,32 @@ String directivesString(Class parent, List comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(GraphQLAppliedDirective.class, GraphQLAppliedDirectiveArgument.class); - List args = directive.getArguments(); + List args = directive.getArguments(); args = args .stream() + .filter(arg -> arg.getArgumentValue().isSet()) .sorted(comparator) .collect(toList()); if (!args.isEmpty()) { sb.append("("); for (int i = 0; i < args.size(); i++) { - GraphQLArgument arg = args.get(i); + GraphQLAppliedDirectiveArgument arg = args.get(i); String argValue = null; - if (arg.getValue() != null) { - argValue = printAst(arg.getValue(), arg.getType()); - } else if (arg.getDefaultValue() != null) { - argValue = printAst(arg.getDefaultValue(), arg.getType()); + if (arg.hasSetValue()) { + argValue = printAst(arg.getArgumentValue(), arg.getType()); } if (!isNullOrEmpty(argValue)) { sb.append(arg.getName()); @@ -738,31 +1024,83 @@ private String directiveString(GraphQLDirective directive) { return sb.toString(); } - private boolean isDeprecatedDirective(GraphQLDirective directive) { + private boolean isDeprecatedDirectiveAllowed() { + // we ask if the special deprecated directive, + // which can be programmatically on a type without an applied directive, + // should be printed or not + return options.getIncludeDirective().test(DeprecatedDirective.getName()); + } + + private boolean isDeprecatedDirective(GraphQLAppliedDirective directive) { return directive.getName().equals(DeprecatedDirective.getName()); } - private boolean hasDeprecatedDirective(List directives) { + private boolean hasDeprecatedDirective(List directives) { return directives.stream() .filter(this::isDeprecatedDirective) .count() == 1; } - private List addDeprecatedDirectiveIfNeeded(List directives) { - if (!hasDeprecatedDirective(directives)) { + private List addOrUpdateDeprecatedDirectiveIfNeeded(GraphQLDirectiveContainer directiveContainer) { + List directives = DirectivesUtil.toAppliedDirectives(directiveContainer); + String reason = getDeprecationReason(directiveContainer); + + if (!hasDeprecatedDirective(directives) && isDeprecatedDirectiveAllowed()) { directives = new ArrayList<>(directives); - directives.add(DeprecatedDirective4Printing); + directives.add(createDeprecatedDirective(reason)); + } else if (hasDeprecatedDirective(directives) && isDeprecatedDirectiveAllowed()) { + // Update deprecated reason in case modified by schema transform + directives = updateDeprecatedDirective(directives, reason); } return directives; } - private String directiveDefinitions(List directives) { - StringBuilder sb = new StringBuilder(); - for (GraphQLDirective directive : directives) { - sb.append(directiveDefinition(directive)); - sb.append("\n\n"); + private GraphQLAppliedDirective createDeprecatedDirective(String reason) { + GraphQLAppliedDirectiveArgument arg = GraphQLAppliedDirectiveArgument.newArgument() + .name("reason") + .valueProgrammatic(reason) + .type(GraphQLString) + .build(); + return GraphQLAppliedDirective.newDirective() + .name("deprecated") + .argument(arg) + .build(); + } + + private List updateDeprecatedDirective(List directives, String reason) { + GraphQLAppliedDirectiveArgument newArg = GraphQLAppliedDirectiveArgument.newArgument() + .name("reason") + .valueProgrammatic(reason) + .type(GraphQLString) + .build(); + + return directives.stream().map(d -> { + if (isDeprecatedDirective(d)) { + // Don't include reason is deliberately replaced with NOT_SET, for example in Anonymizer + if (d.getArgument("reason").getArgumentValue() != InputValueWithState.NOT_SET) { + return d.transform(builder -> builder.argument(newArg)); + } + } + return d; + }).collect(toList()); + } + + private String getDeprecationReason(GraphQLDirectiveContainer directiveContainer) { + if (directiveContainer instanceof GraphQLFieldDefinition) { + GraphQLFieldDefinition type = (GraphQLFieldDefinition) directiveContainer; + return type.getDeprecationReason(); + } else if (directiveContainer instanceof GraphQLEnumValueDefinition) { + GraphQLEnumValueDefinition type = (GraphQLEnumValueDefinition) directiveContainer; + return type.getDeprecationReason(); + } else if (directiveContainer instanceof GraphQLInputObjectField) { + GraphQLInputObjectField type = (GraphQLInputObjectField) directiveContainer; + return type.getDeprecationReason(); + } else if (directiveContainer instanceof GraphQLArgument) { + GraphQLArgument type = (GraphQLArgument) directiveContainer; + return type.getDeprecationReason(); + } else { + return Assert.assertShouldNeverHappen(); } - return sb.toString(); } private String directiveDefinition(GraphQLDirective directive) { @@ -771,24 +1109,25 @@ private String directiveDefinition(GraphQLDirective directive) { StringWriter sw = new StringWriter(); printComments(new PrintWriter(sw), directive, ""); - sb.append(sw.toString()); + sb.append(sw); sb.append("directive @").append(directive.getName()); - GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() - .parentType(GraphQLDirective.class) - .elementType(GraphQLArgument.class) - .build(); - Comparator comparator = options.comparatorRegistry.getComparator(environment); + Comparator comparator = getComparator(GraphQLDirective.class, GraphQLArgument.class); List args = directive.getArguments(); args = args .stream() + .filter(options.getIncludeSchemaElement()) .sorted(comparator) .collect(toList()); sb.append(argsString(GraphQLDirective.class, args)); + if (directive.isRepeatable()) { + sb.append(" repeatable"); + } + sb.append(" on "); String locations = directive.validLocations().stream().map(Enum::name).collect(Collectors.joining(" | ")); @@ -799,18 +1138,18 @@ private String directiveDefinition(GraphQLDirective directive) { @SuppressWarnings("unchecked") - private TypePrinter printer(Class clazz) { - TypePrinter typePrinter = printers.get(clazz); - if (typePrinter == null) { + private SchemaElementPrinter printer(Class clazz) { + SchemaElementPrinter schemaElementPrinter = printers.get(clazz); + if (schemaElementPrinter == null) { Class superClazz = clazz.getSuperclass(); if (superClazz != Object.class) { - typePrinter = printer(superClazz); + schemaElementPrinter = printer(superClazz); } else { - typePrinter = (out, type, visibility) -> out.println("Type not implemented : " + type); + schemaElementPrinter = (out, type, visibility) -> out.print("Type not implemented : " + type + "\n"); } - printers.put(clazz, typePrinter); + printers.put(clazz, schemaElementPrinter); } - return (TypePrinter) typePrinter; + return (SchemaElementPrinter) schemaElementPrinter; } @@ -818,22 +1157,34 @@ public String print(GraphQLType type) { StringWriter sw = new StringWriter(); PrintWriter out = new PrintWriter(sw); - printType(out, type, DEFAULT_FIELD_VISIBILITY); + printSchemaElement(out, type, DEFAULT_FIELD_VISIBILITY); - return sw.toString(); + return trimNewLineChars(sw.toString()); } - @SuppressWarnings("unchecked") - private void printType(PrintWriter out, List typesAsList, Class - typeClazz, GraphqlFieldVisibility visibility) { - typesAsList.stream() - .filter(type -> typeClazz.isAssignableFrom(type.getClass())) - .forEach(type -> printType(out, type, visibility)); + public String print(List elements) { + StringWriter sw = new StringWriter(); + PrintWriter out = new PrintWriter(sw); + + for (GraphQLSchemaElement element : elements) { + if (element instanceof GraphQLDirective) { + out.print(print(((GraphQLDirective) element))); + } else if (element instanceof GraphQLType) { + printSchemaElement(out, element, DEFAULT_FIELD_VISIBILITY); + } else { + Assert.assertShouldNeverHappen("How did we miss a %s", element.getClass()); + } + } + return trimNewLineChars(sw.toString()); + } + + public String print(GraphQLDirective graphQLDirective) { + return directiveDefinition(graphQLDirective); } - private void printType(PrintWriter out, GraphQLType type, GraphqlFieldVisibility visibility) { - TypePrinter printer = printer(type.getClass()); - printer.print(out, type, visibility); + private void printSchemaElement(PrintWriter out, GraphQLSchemaElement schemaElement, GraphqlFieldVisibility visibility) { + SchemaElementPrinter printer = printer(schemaElement.getClass()); + printer.print(out, schemaElement, visibility); } private String printComments(Object graphQLType, String prefix) { @@ -844,17 +1195,12 @@ private String printComments(Object graphQLType, String prefix) { } private void printComments(PrintWriter out, Object graphQLType, String prefix) { - String descriptionText = getDescription(graphQLType); - if (isNullOrEmpty(descriptionText)) { - return; - } - if (!isNullOrEmpty(descriptionText)) { List lines = Arrays.asList(descriptionText.split("\n")); if (options.isDescriptionsAsHashComments()) { printMultiLineHashDescription(out, prefix, lines); - } else { + } else if (!lines.isEmpty()) { if (lines.size() > 1) { printMultiLineDescription(out, prefix, lines); } else { @@ -862,6 +1208,16 @@ private void printComments(PrintWriter out, Object graphQLType, String prefix) { } } } + + if (options.isIncludeAstDefinitionComments()) { + String commentsText = getAstDefinitionComments(graphQLType); + if (!isNullOrEmpty(commentsText)) { + List lines = Arrays.asList(commentsText.split("\n")); + if (!lines.isEmpty()) { + printMultiLineHashDescription(out, prefix, lines); + } + } + } } private void printMultiLineHashDescription(PrintWriter out, String prefix, List lines) { @@ -870,7 +1226,10 @@ private void printMultiLineHashDescription(PrintWriter out, String prefix, List< private void printMultiLineDescription(PrintWriter out, String prefix, List lines) { out.printf("%s\"\"\"\n", prefix); - lines.forEach(l -> out.printf("%s%s\n", prefix, l)); + lines.forEach(l -> { + String escapedTripleQuotes = l.replaceAll("\"\"\"", "\\\\\"\"\""); + out.printf("%s%s\n", prefix, escapedTripleQuotes); + }); out.printf("%s\"\"\"\n", prefix); } @@ -880,6 +1239,61 @@ private void printSingleLineDescription(PrintWriter out, String prefix, String s out.printf("%s\"%s\"\n", prefix, desc); } + private boolean hasAstDefinitionComments(Object commentHolder) { + String comments = getAstDefinitionComments(commentHolder); + return !isNullOrEmpty(comments); + } + + private String getAstDefinitionComments(Object commentHolder) { + if (commentHolder instanceof GraphQLObjectType) { + GraphQLObjectType type = (GraphQLObjectType) commentHolder; + return comments(ofNullable(type.getDefinition()).map(ObjectTypeDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLEnumType) { + GraphQLEnumType type = (GraphQLEnumType) commentHolder; + return comments(ofNullable(type.getDefinition()).map(EnumTypeDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLFieldDefinition) { + GraphQLFieldDefinition type = (GraphQLFieldDefinition) commentHolder; + return comments(ofNullable(type.getDefinition()).map(FieldDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLEnumValueDefinition) { + GraphQLEnumValueDefinition type = (GraphQLEnumValueDefinition) commentHolder; + return comments(ofNullable(type.getDefinition()).map(EnumValueDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLUnionType) { + GraphQLUnionType type = (GraphQLUnionType) commentHolder; + return comments(ofNullable(type.getDefinition()).map(UnionTypeDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLInputObjectType) { + GraphQLInputObjectType type = (GraphQLInputObjectType) commentHolder; + return comments(ofNullable(type.getDefinition()).map(InputObjectTypeDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLInputObjectField) { + GraphQLInputObjectField type = (GraphQLInputObjectField) commentHolder; + return comments(ofNullable(type.getDefinition()).map(InputValueDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLInterfaceType) { + GraphQLInterfaceType type = (GraphQLInterfaceType) commentHolder; + return comments(ofNullable(type.getDefinition()).map(InterfaceTypeDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLScalarType) { + GraphQLScalarType type = (GraphQLScalarType) commentHolder; + return comments(ofNullable(type.getDefinition()).map(ScalarTypeDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLArgument) { + GraphQLArgument type = (GraphQLArgument) commentHolder; + return comments(ofNullable(type.getDefinition()).map(InputValueDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLDirective) { + GraphQLDirective type = (GraphQLDirective) commentHolder; + return comments(ofNullable(type.getDefinition()).map(DirectiveDefinition::getComments).orElse(null)); + } else if (commentHolder instanceof GraphQLSchema) { + GraphQLSchema type = (GraphQLSchema) commentHolder; + return comments(ofNullable(type.getDefinition()).map(SchemaDefinition::getComments).orElse(null)); + } else { + return Assert.assertShouldNeverHappen(); + } + } + + private String comments(List comments) { + if (comments == null || comments.isEmpty()) { + return null; + } + String s = comments.stream().map(c -> c.getContent()).collect(joining("\n", "", "\n")); + return s; + } + private boolean hasDescription(Object descriptionHolder) { String description = getDescription(descriptionHolder); return !isNullOrEmpty(description); @@ -919,6 +1333,9 @@ private String getDescription(Object descriptionHolder) { } else if (descriptionHolder instanceof GraphQLDirective) { GraphQLDirective type = (GraphQLDirective) descriptionHolder; return description(type.getDescription(), null); + } else if (descriptionHolder instanceof GraphQLSchema) { + GraphQLSchema type = (GraphQLSchema) descriptionHolder; + return description(type.getDescription(), ofNullable(type.getDefinition()).map(SchemaDefinition::getDescription).orElse(null)); } else { return Assert.assertShouldNeverHappen(); } @@ -938,6 +1355,21 @@ String description(String runtimeDescription, Description descriptionAst) { return descriptionText; } + private Comparator getComparator(Class parentType, Class elementType) { + GraphqlTypeComparatorEnvironment environment = GraphqlTypeComparatorEnvironment.newEnvironment() + .parentType(parentType) + .elementType(elementType) + .build(); + return options.comparatorRegistry.getComparator(environment); + } + + private static String trimNewLineChars(String s) { + if (s.endsWith("\n\n")) { + s = s.substring(0, s.length() - 1); + } + return s; + } + private static boolean isNullOrEmpty(String s) { return s == null || s.isEmpty(); } diff --git a/src/main/java/graphql/schema/idl/SchemaTypeChecker.java b/src/main/java/graphql/schema/idl/SchemaTypeChecker.java index 33045f851e..3827f463f5 100644 --- a/src/main/java/graphql/schema/idl/SchemaTypeChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaTypeChecker.java @@ -2,9 +2,9 @@ import graphql.GraphQLError; import graphql.Internal; +import graphql.collect.ImmutableKit; import graphql.introspection.Introspection; import graphql.language.Argument; -import graphql.language.AstPrinter; import graphql.language.Directive; import graphql.language.DirectiveDefinition; import graphql.language.EnumTypeDefinition; @@ -14,45 +14,34 @@ import graphql.language.InputValueDefinition; import graphql.language.InterfaceTypeDefinition; import graphql.language.Node; -import graphql.language.NonNullType; import graphql.language.ObjectTypeDefinition; import graphql.language.ObjectTypeExtensionDefinition; -import graphql.language.StringValue; import graphql.language.Type; import graphql.language.TypeDefinition; import graphql.language.TypeName; import graphql.language.UnionTypeDefinition; import graphql.schema.idl.errors.DirectiveIllegalLocationError; -import graphql.schema.idl.errors.InterfaceFieldArgumentNotOptionalError; -import graphql.schema.idl.errors.InterfaceFieldArgumentRedefinitionError; -import graphql.schema.idl.errors.InterfaceFieldRedefinitionError; -import graphql.schema.idl.errors.InvalidDeprecationDirectiveError; -import graphql.schema.idl.errors.MissingInterfaceFieldArgumentsError; -import graphql.schema.idl.errors.MissingInterfaceFieldError; import graphql.schema.idl.errors.MissingInterfaceTypeError; import graphql.schema.idl.errors.MissingScalarImplementationError; import graphql.schema.idl.errors.MissingTypeError; import graphql.schema.idl.errors.MissingTypeResolverError; import graphql.schema.idl.errors.NonUniqueArgumentError; -import graphql.schema.idl.errors.NonUniqueDirectiveError; import graphql.schema.idl.errors.NonUniqueNameError; import graphql.schema.idl.errors.SchemaProblem; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.function.BiFunction; -import java.util.function.BinaryOperator; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; -import java.util.function.Supplier; -import java.util.stream.Collectors; + +import static graphql.introspection.Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION; +import static java.util.stream.Collectors.toList; /** * This helps pre check the state of the type system to ensure it can be made into an executable schema. @@ -62,7 +51,7 @@ @Internal public class SchemaTypeChecker { - public List checkTypeRegistry(TypeDefinitionRegistry typeRegistry, RuntimeWiring wiring) throws SchemaProblem { + public List checkTypeRegistry(ImmutableTypeDefinitionRegistry typeRegistry, RuntimeWiring wiring) throws SchemaProblem { List errors = new ArrayList<>(); checkForMissingTypes(errors, typeRegistry); @@ -70,7 +59,11 @@ public List checkTypeRegistry(TypeDefinitionRegistry typeRegistry, typeExtensionsChecker.checkTypeExtensions(errors, typeRegistry); - checkInterfacesAreImplemented(errors, typeRegistry); + ImplementingTypesChecker implementingTypesChecker = new ImplementingTypesChecker(); + implementingTypesChecker.checkImplementingTypes(errors, typeRegistry); + + UnionTypesChecker unionTypesChecker = new UnionTypesChecker(); + unionTypesChecker.checkUnionType(errors, typeRegistry); SchemaExtensionsChecker.checkSchemaInvariants(errors, typeRegistry); @@ -90,7 +83,7 @@ public List checkTypeRegistry(TypeDefinitionRegistry typeRegistry, private void checkForMissingTypes(List errors, TypeDefinitionRegistry typeRegistry) { // type extensions - List typeExtensions = typeRegistry.objectTypeExtensions().values().stream().flatMap(Collection::stream).collect(Collectors.toList()); + List typeExtensions = typeRegistry.objectTypeExtensions().values().stream().flatMap(Collection::stream).collect(toList()); typeExtensions.forEach(typeExtension -> { List implementsTypes = typeExtension.getImplements(); @@ -136,12 +129,8 @@ private void checkForMissingTypes(List errors, TypeDefinitionRegis List inputTypes = filterTo(typesMap, InputObjectTypeDefinition.class); inputTypes.forEach(inputType -> { List inputValueDefinitions = inputType.getInputValueDefinitions(); - List inputValueTypes = inputValueDefinitions.stream() - .map(InputValueDefinition::getType) - .collect(Collectors.toList()); - + List inputValueTypes = ImmutableKit.map(inputValueDefinitions, InputValueDefinition::getType); inputValueTypes.forEach(checkTypeExists("input value", typeRegistry, errors, inputType)); - }); } @@ -155,10 +144,7 @@ private void checkDirectiveDefinitions(TypeDefinitionRegistry typeRegistry, List checkNamedUniqueness(errors, arguments, InputValueDefinition::getName, (name, arg) -> new NonUniqueNameError(directiveDefinition, arg)); - List inputValueTypes = arguments.stream() - .map(InputValueDefinition::getType) - .collect(Collectors.toList()); - + List inputValueTypes = ImmutableKit.map(arguments, InputValueDefinition::getType); inputValueTypes.forEach( checkTypeExists(typeRegistry, errors, "directive definition", directiveDefinition, directiveDefinition.getName()) ); @@ -177,7 +163,7 @@ private void checkDirectiveDefinitions(TypeDefinitionRegistry typeRegistry, List private void checkScalarImplementationsArePresent(List errors, TypeDefinitionRegistry typeRegistry, RuntimeWiring wiring) { typeRegistry.scalars().forEach((scalarName, scalarTypeDefinition) -> { WiringFactory wiringFactory = wiring.getWiringFactory(); - ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, scalarTypeDefinition, Collections.emptyList()); + ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, scalarTypeDefinition, ImmutableKit.emptyList()); if (!wiringFactory.providesScalar(environment) && !wiring.getScalars().containsKey(scalarName)) { errors.add(new MissingScalarImplementationError(scalarName)); } @@ -187,25 +173,26 @@ private void checkScalarImplementationsArePresent(List errors, Typ private void checkFieldsAreSensible(List errors, TypeDefinitionRegistry typeRegistry) { Map typesMap = typeRegistry.types(); + Map directiveDefinitionMap = typeRegistry.getDirectiveDefinitions(); + // objects List objectTypes = filterTo(typesMap, ObjectTypeDefinition.class); - objectTypes.forEach(objectType -> checkObjTypeFields(errors, objectType, objectType.getFieldDefinitions())); + objectTypes.forEach(objectType -> checkObjTypeFields(errors, objectType, objectType.getFieldDefinitions(), directiveDefinitionMap)); // interfaces List interfaceTypes = filterTo(typesMap, InterfaceTypeDefinition.class); - interfaceTypes.forEach(interfaceType -> checkInterfaceFields(errors, interfaceType, interfaceType.getFieldDefinitions())); + interfaceTypes.forEach(interfaceType -> checkInterfaceFields(errors, interfaceType, interfaceType.getFieldDefinitions(), directiveDefinitionMap)); // enum types List enumTypes = filterTo(typesMap, EnumTypeDefinition.class); - enumTypes.forEach(enumType -> checkEnumValues(errors, enumType, enumType.getEnumValueDefinitions())); + enumTypes.forEach(enumType -> checkEnumValues(errors, enumType, enumType.getEnumValueDefinitions(), directiveDefinitionMap)); // input types List inputTypes = filterTo(typesMap, InputObjectTypeDefinition.class); - inputTypes.forEach(inputType -> checkInputValues(errors, inputType, inputType.getInputValueDefinitions())); + inputTypes.forEach(inputType -> checkInputValues(errors, inputType, inputType.getInputValueDefinitions(), INPUT_FIELD_DEFINITION, directiveDefinitionMap)); } - - private void checkObjTypeFields(List errors, ObjectTypeDefinition typeDefinition, List fieldDefinitions) { + private void checkObjTypeFields(List errors, ObjectTypeDefinition typeDefinition, List fieldDefinitions, Map directiveDefinitionMap) { // field unique ness checkNamedUniqueness(errors, fieldDefinitions, FieldDefinition::getName, (name, fieldDef) -> new NonUniqueNameError(typeDefinition, fieldDef)); @@ -215,12 +202,7 @@ private void checkObjTypeFields(List errors, ObjectTypeDefinition (name, inputValueDefinition) -> new NonUniqueArgumentError(typeDefinition, fld, name))); // directive checks - fieldDefinitions.forEach(fld -> checkNamedUniqueness(errors, fld.getDirectives(), Directive::getName, - (directiveName, directive) -> new NonUniqueDirectiveError(typeDefinition, fld, directiveName))); - fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(typeDefinition, fld)); checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, (argumentName, argument) -> new NonUniqueArgumentError(typeDefinition, fld, argumentName)); @@ -228,7 +210,7 @@ private void checkObjTypeFields(List errors, ObjectTypeDefinition })); } - private void checkInterfaceFields(List errors, InterfaceTypeDefinition interfaceType, List fieldDefinitions) { + private void checkInterfaceFields(List errors, InterfaceTypeDefinition interfaceType, List fieldDefinitions, Map directiveDefinitionMap) { // field unique ness checkNamedUniqueness(errors, fieldDefinitions, FieldDefinition::getName, (name, fieldDef) -> new NonUniqueNameError(interfaceType, fieldDef)); @@ -238,20 +220,15 @@ private void checkInterfaceFields(List errors, InterfaceTypeDefini (name, inputValueDefinition) -> new NonUniqueArgumentError(interfaceType, fld, name))); // directive checks - fieldDefinitions.forEach(fld -> checkNamedUniqueness(errors, fld.getDirectives(), Directive::getName, - (directiveName, directive) -> new NonUniqueDirectiveError(interfaceType, fld, directiveName))); - - fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(interfaceType, fld)); + fieldDefinitions.forEach(fieldDefinition -> { + List directives = fieldDefinition.getDirectives(); - checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, - (argumentName, argument) -> new NonUniqueArgumentError(interfaceType, fld, argumentName)); - - })); + directives.forEach(directive -> checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, + (argumentName, argument) -> new NonUniqueArgumentError(interfaceType, fieldDefinition, argumentName))); + }); } - private void checkEnumValues(List errors, EnumTypeDefinition enumType, List enumValueDefinitions) { + private void checkEnumValues(List errors, EnumTypeDefinition enumType, List enumValueDefinitions, Map directiveDefinitionMap) { // enum unique ness checkNamedUniqueness(errors, enumValueDefinitions, EnumValueDefinition::getName, @@ -259,14 +236,7 @@ private void checkEnumValues(List errors, EnumTypeDefinition enumT // directive checks - enumValueDefinitions.forEach(enumValue -> { - BiFunction errorFunction = (directiveName, directive) -> new NonUniqueDirectiveError(enumType, enumValue, directiveName); - checkNamedUniqueness(errors, enumValue.getDirectives(), Directive::getName, errorFunction); - }); - enumValueDefinitions.forEach(enumValue -> enumValue.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(enumType, enumValue)); BiFunction errorFunction = (argumentName, argument) -> new NonUniqueArgumentError(enumType, enumValue, argumentName); checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, errorFunction); @@ -274,7 +244,7 @@ private void checkEnumValues(List errors, EnumTypeDefinition enumT })); } - private void checkInputValues(List errors, InputObjectTypeDefinition inputType, List inputValueDefinitions) { + private void checkInputValues(List errors, InputObjectTypeDefinition inputType, List inputValueDefinitions, Introspection.DirectiveLocation directiveLocation, Map directiveDefinitionMap) { // field unique ness checkNamedUniqueness(errors, inputValueDefinitions, InputValueDefinition::getName, @@ -287,43 +257,9 @@ private void checkInputValues(List errors, InputObjectTypeDefiniti // directive checks - inputValueDefinitions.forEach(inputValueDef -> checkNamedUniqueness(errors, inputValueDef.getDirectives(), Directive::getName, - (directiveName, directive) -> new NonUniqueDirectiveError(inputType, inputValueDef, directiveName))); - - inputValueDefinitions.forEach(inputValueDef -> inputValueDef.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(inputType, inputValueDef)); - - checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, - (argumentName, argument) -> new NonUniqueArgumentError(inputType, inputValueDef, argumentName)); - })); - } - - - /** - * A special check for the magic @deprecated directive - * - * @param errors the list of errors - * @param directive the directive to check - * @param errorSupplier the error supplier function - */ - static void checkDeprecatedDirective(List errors, Directive directive, Supplier errorSupplier) { - if ("deprecated".equals(directive.getName())) { - // it can have zero args - List arguments = directive.getArguments(); - if (arguments.size() == 0) { - return; - } - // but if has more than it must have 1 called "reason" of type StringValue - if (arguments.size() == 1) { - Argument arg = arguments.get(0); - if ("reason".equals(arg.getName()) && arg.getValue() instanceof StringValue) { - return; - } - } - // not valid - errors.add(errorSupplier.get()); - } + inputValueDefinitions.forEach(inputValueDef -> inputValueDef.getDirectives().forEach(directive -> + checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, + (argumentName, argument) -> new NonUniqueArgumentError(inputType, inputValueDef, argumentName)))); } /** @@ -349,7 +285,7 @@ static void checkNamedUniqueness(List private void checkTypeResolversArePresent(List errors, TypeDefinitionRegistry typeRegistry, RuntimeWiring wiring) { - Predicate noDynamicResolverForInterface = interaceTypeDef -> !wiring.getWiringFactory().providesTypeResolver(new InterfaceWiringEnvironment(typeRegistry, interaceTypeDef)); + Predicate noDynamicResolverForInterface = interfaceTypeDef -> !wiring.getWiringFactory().providesTypeResolver(new InterfaceWiringEnvironment(typeRegistry, interfaceTypeDef)); Predicate noDynamicResolverForUnion = unionTypeDef -> !wiring.getWiringFactory().providesTypeResolver(new UnionWiringEnvironment(typeRegistry, unionTypeDef)); Predicate noTypeResolver = typeDefinition -> !wiring.getTypeResolvers().containsKey(typeDefinition.getName()); @@ -372,16 +308,16 @@ private void checkTypeResolversArePresent(List errors, TypeDefinit } private void checkFieldTypesPresent(TypeDefinitionRegistry typeRegistry, List errors, TypeDefinition typeDefinition, List fields) { - List fieldTypes = fields.stream().map(FieldDefinition::getType).collect(Collectors.toList()); + List fieldTypes = ImmutableKit.map(fields, FieldDefinition::getType); fieldTypes.forEach(checkTypeExists("field", typeRegistry, errors, typeDefinition)); List fieldInputValues = fields.stream() .map(f -> f.getInputValueDefinitions() .stream() .map(InputValueDefinition::getType) - .collect(Collectors.toList())) + .collect(toList())) .flatMap(Collection::stream) - .collect(Collectors.toList()); + .collect(toList()); fieldInputValues.forEach(checkTypeExists("field input", typeRegistry, errors, typeDefinition)); } @@ -389,8 +325,9 @@ private void checkFieldTypesPresent(TypeDefinitionRegistry typeRegistry, List checkTypeExists(String typeOfType, TypeDefinitionRegistry typeRegistry, List errors, TypeDefinition typeDefinition) { return t -> { - TypeName unwrapped = TypeInfo.typeInfo(t).getTypeName(); - if (!typeRegistry.hasType(unwrapped)) { + String name = TypeInfo.typeName(t); + if (!typeRegistry.hasType(name)) { + TypeName unwrapped = TypeInfo.typeInfo(t).getTypeName(); errors.add(new MissingTypeError(typeOfType, typeDefinition, unwrapped)); } }; @@ -398,8 +335,9 @@ private Consumer checkTypeExists(String typeOfType, TypeDefinitionRegistry private Consumer checkTypeExists(TypeDefinitionRegistry typeRegistry, List errors, String typeOfType, Node element, String elementName) { return ivType -> { - TypeName unwrapped = TypeInfo.typeInfo(ivType).getTypeName(); - if (!typeRegistry.hasType(unwrapped)) { + String name = TypeInfo.typeName(ivType); + if (!typeRegistry.hasType(name)) { + TypeName unwrapped = TypeInfo.typeInfo(ivType).getTypeName(); errors.add(new MissingTypeError(typeOfType, element, elementName, unwrapped)); } }; @@ -409,103 +347,17 @@ private Consumer checkInterfaceTypeExists(TypeDefinitionRegistry t return t -> { TypeInfo typeInfo = TypeInfo.typeInfo(t); TypeName unwrapped = typeInfo.getTypeName(); - Optional type = typeRegistry.getType(unwrapped); - if (!type.isPresent()) { + TypeDefinition type = typeRegistry.getTypeOrNull(unwrapped); + if (type == null) { errors.add(new MissingInterfaceTypeError("interface", typeDefinition, unwrapped)); - } else if (!(type.get() instanceof InterfaceTypeDefinition)) { + } else if (!(type instanceof InterfaceTypeDefinition)) { errors.add(new MissingInterfaceTypeError("interface", typeDefinition, unwrapped)); } }; } - private void checkInterfacesAreImplemented(List errors, TypeDefinitionRegistry typeRegistry) { - Map typesMap = typeRegistry.types(); - - // objects - List objectTypes = filterTo(typesMap, ObjectTypeDefinition.class); - objectTypes.forEach(objectType -> { - List implementsTypes = objectType.getImplements(); - implementsTypes.forEach(checkInterfaceIsImplemented("object", typeRegistry, errors, objectType)); - }); - - Map> typeExtensions = typeRegistry.objectTypeExtensions(); - typeExtensions.values().forEach(extList -> extList.forEach(typeExtension -> { - List implementsTypes = typeExtension.getImplements(); - implementsTypes.forEach(checkInterfaceIsImplemented("extension", typeRegistry, errors, typeExtension)); - })); - } - - private Consumer checkInterfaceIsImplemented(String typeOfType, TypeDefinitionRegistry typeRegistry, List errors, ObjectTypeDefinition objectTypeDef) { - return t -> { - TypeInfo typeInfo = TypeInfo.typeInfo(t); - TypeName unwrapped = typeInfo.getTypeName(); - Optional type = typeRegistry.getType(unwrapped); - // previous checks handle the missing case and wrong type case - if (type.isPresent() && type.get() instanceof InterfaceTypeDefinition) { - InterfaceTypeDefinition interfaceTypeDef = (InterfaceTypeDefinition) type.get(); - - Map objectFields = objectTypeDef.getFieldDefinitions().stream() - .collect(Collectors.toMap( - FieldDefinition::getName, Function.identity(), mergeFirstValue() - )); - - interfaceTypeDef.getFieldDefinitions().forEach(interfaceFieldDef -> { - FieldDefinition objectFieldDef = objectFields.get(interfaceFieldDef.getName()); - if (objectFieldDef == null) { - errors.add(new MissingInterfaceFieldError(typeOfType, objectTypeDef, interfaceTypeDef, interfaceFieldDef)); - } else { - if (!typeRegistry.isSubTypeOf(objectFieldDef.getType(), interfaceFieldDef.getType())) { - String interfaceFieldType = AstPrinter.printAst(interfaceFieldDef.getType()); - String objectFieldType = AstPrinter.printAst(objectFieldDef.getType()); - errors.add(new InterfaceFieldRedefinitionError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, objectFieldType, interfaceFieldType)); - } - - // look at arguments - List objectArgs = objectFieldDef.getInputValueDefinitions(); - List interfaceArgs = interfaceFieldDef.getInputValueDefinitions(); - if (objectArgs.size() < interfaceArgs.size()) { - errors.add(new MissingInterfaceFieldArgumentsError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef)); - } else { - checkArgumentConsistency(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, interfaceFieldDef, errors); - } - } - }); - } - }; - } - - private void checkArgumentConsistency(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, FieldDefinition interfaceFieldDef, List errors) { - List objectArgs = objectFieldDef.getInputValueDefinitions(); - List interfaceArgs = interfaceFieldDef.getInputValueDefinitions(); - for (int i = 0; i < interfaceArgs.size(); i++) { - InputValueDefinition interfaceArg = interfaceArgs.get(i); - InputValueDefinition objectArg = objectArgs.get(i); - String interfaceArgStr = AstPrinter.printAstCompact(interfaceArg); - String objectArgStr = AstPrinter.printAstCompact(objectArg); - if (!interfaceArgStr.equals(objectArgStr)) { - errors.add(new InterfaceFieldArgumentRedefinitionError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, objectArgStr, interfaceArgStr)); - } - } - - if (objectArgs.size() > interfaceArgs.size()) { - for (int i = interfaceArgs.size(); i < objectArgs.size(); i++) { - InputValueDefinition objectArg = objectArgs.get(i); - if (objectArg.getType() instanceof NonNullType) { - String objectArgStr = AstPrinter.printAst(objectArg); - errors.add(new InterfaceFieldArgumentNotOptionalError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, objectArgStr)); - } - } - } - } - private List filterTo(Map types, Class clazz) { - return types.values().stream() - .filter(t -> clazz.equals(t.getClass())) - .map(clazz::cast) - .collect(Collectors.toList()); - } - - private BinaryOperator mergeFirstValue() { - return (v1, v2) -> v1; + return ImmutableKit.filterAndMap(types.values(), t -> clazz.equals(t.getClass()), + clazz::cast); } } diff --git a/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java b/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java index d044e5c63f..4c3e373e37 100644 --- a/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java @@ -1,6 +1,5 @@ package graphql.schema.idl; -import graphql.Directives; import graphql.GraphQLError; import graphql.Internal; import graphql.introspection.Introspection.DirectiveLocation; @@ -13,21 +12,28 @@ import graphql.language.InputObjectTypeDefinition; import graphql.language.InputValueDefinition; import graphql.language.InterfaceTypeDefinition; +import graphql.language.NamedNode; import graphql.language.Node; import graphql.language.NonNullType; import graphql.language.ObjectTypeDefinition; +import graphql.language.ScalarTypeDefinition; import graphql.language.SchemaDefinition; import graphql.language.TypeDefinition; +import graphql.language.TypeName; import graphql.language.UnionTypeDefinition; import graphql.schema.idl.errors.DirectiveIllegalLocationError; +import graphql.schema.idl.errors.DirectiveIllegalReferenceError; import graphql.schema.idl.errors.DirectiveMissingNonNullArgumentError; import graphql.schema.idl.errors.DirectiveUndeclaredError; import graphql.schema.idl.errors.DirectiveUnknownArgumentError; +import graphql.schema.idl.errors.IllegalNameError; +import graphql.schema.idl.errors.MissingTypeError; +import graphql.schema.idl.errors.NotAnInputTypeError; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.stream.Collectors; import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.ENUM; @@ -91,6 +97,9 @@ void checkTypeDirectives(List errors) { // we need to have a Node for error reporting so we make one in case there is not one SchemaDefinition schemaDefinition = typeRegistry.schemaDefinition().orElse(SchemaDefinition.newSchemaDefinition().build()); checkDirectives(DirectiveLocation.SCHEMA, errors, typeRegistry, schemaDefinition, "schema", schemaDirectives); + + Collection directiveDefinitions = typeRegistry.getDirectiveDefinitions().values(); + commonCheck(directiveDefinitions, errors); } @@ -126,12 +135,8 @@ private void checkFieldsDirectives(List errors, TypeDefinitionRegi private void checkDirectives(DirectiveLocation expectedLocation, List errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, List directives) { directives.forEach(directive -> { - // we have special code for the deprecation directive in SchemaTypeChecker.checkDeprecatedDirective - if (Directives.DeprecatedDirective.getName().equals(directive.getName())) { - return; - } Optional directiveDefinition = typeRegistry.getDirectiveDefinition(directive.getName()); - if (!directiveDefinition.isPresent()) { + if (directiveDefinition.isEmpty()) { errors.add(new DirectiveUndeclaredError(element, elementName, directive.getName())); } else { if (!inRightLocation(expectedLocation, directiveDefinition.get())) { @@ -142,16 +147,16 @@ private void checkDirectives(DirectiveLocation expectedLocation, List names = directiveDefinition.getDirectiveLocations() - .stream().map(graphql.language.DirectiveLocation::getName) - .map(String::toUpperCase) - .collect(Collectors.toList()); - - return names.contains(expectedLocation.name().toUpperCase()); + private static boolean inRightLocation(DirectiveLocation expectedLocation, DirectiveDefinition directiveDefinition) { + for (graphql.language.DirectiveLocation location : directiveDefinition.getDirectiveLocations()) { + if (location.getName().equalsIgnoreCase(expectedLocation.name())) { + return true; + } + } + return false; } - private void checkDirectiveArguments(List errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, Directive directive, DirectiveDefinition directiveDefinition) { + private void checkDirectiveArguments(List errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, Directive directive, DirectiveDefinition directiveDefinition) { Map allowedArgs = getByName(directiveDefinition.getInputValueDefinitions(), (InputValueDefinition::getName), mergeFirst()); Map providedArgs = getByName(directive.getArguments(), (Argument::getName), mergeFirst()); directive.getArguments().forEach(argument -> { @@ -172,7 +177,51 @@ private void checkDirectiveArguments(List errors, TypeDefinitionRe }); } - private boolean isNoNullArgWithoutDefaultValue(InputValueDefinition definitionArgument) { + private static boolean isNoNullArgWithoutDefaultValue(InputValueDefinition definitionArgument) { return definitionArgument.getType() instanceof NonNullType && definitionArgument.getDefaultValue() == null; } -} + + private void commonCheck(Collection directiveDefinitions, List errors) { + directiveDefinitions.forEach(directiveDefinition -> { + assertTypeName(directiveDefinition, errors); + directiveDefinition.getInputValueDefinitions().forEach(inputValueDefinition -> { + assertTypeName(inputValueDefinition, errors); + assertExistAndIsInputType(inputValueDefinition, errors); + if (inputValueDefinition.hasDirective(directiveDefinition.getName())) { + errors.add(new DirectiveIllegalReferenceError(directiveDefinition, inputValueDefinition)); + } + }); + }); + } + + private static void assertTypeName(NamedNode node, List errors) { + if (node.getName().length() >= 2 && node.getName().startsWith("__")) { + errors.add((new IllegalNameError(node))); + } + } + + public void assertExistAndIsInputType(InputValueDefinition definition, List errors) { + TypeName namedType = TypeUtil.unwrapAll(definition.getType()); + + TypeDefinition unwrappedType = findTypeDefFromRegistry(namedType.getName(), typeRegistry); + + if (unwrappedType == null) { + errors.add(new MissingTypeError(namedType.getName(), definition, definition.getName())); + return; + } + + if (!(unwrappedType instanceof InputObjectTypeDefinition) + && !(unwrappedType instanceof EnumTypeDefinition) + && !(unwrappedType instanceof ScalarTypeDefinition)) { + errors.add(new NotAnInputTypeError(namedType, unwrappedType)); + } + } + + private static TypeDefinition findTypeDefFromRegistry(String typeName, TypeDefinitionRegistry typeRegistry) { + TypeDefinition typeDefinition = typeRegistry.getTypeOrNull(typeName); + if (typeDefinition != null) { + return typeDefinition; + } + return typeRegistry.scalars().get(typeName); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java b/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java index af0a80e2c4..c80bdcce01 100644 --- a/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java @@ -3,8 +3,7 @@ import graphql.GraphQLError; import graphql.Internal; import graphql.language.Argument; -import graphql.language.AstPrinter; -import graphql.language.Directive; +import graphql.language.DirectiveDefinition; import graphql.language.EnumTypeDefinition; import graphql.language.EnumValueDefinition; import graphql.language.FieldDefinition; @@ -14,28 +13,24 @@ import graphql.language.InterfaceTypeDefinition; import graphql.language.ObjectTypeDefinition; import graphql.language.ScalarTypeDefinition; -import graphql.language.Type; import graphql.language.TypeDefinition; import graphql.language.TypeName; import graphql.language.UnionTypeDefinition; -import graphql.schema.idl.errors.InvalidDeprecationDirectiveError; import graphql.schema.idl.errors.MissingTypeError; import graphql.schema.idl.errors.NonUniqueArgumentError; -import graphql.schema.idl.errors.NonUniqueDirectiveError; import graphql.schema.idl.errors.NonUniqueNameError; -import graphql.schema.idl.errors.TypeExtensionDirectiveRedefinitionError; import graphql.schema.idl.errors.TypeExtensionEnumValueRedefinitionError; import graphql.schema.idl.errors.TypeExtensionFieldRedefinitionError; import graphql.schema.idl.errors.TypeExtensionMissingBaseTypeError; import graphql.util.FpKit; +import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; -import java.util.function.Consumer; +import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; -import static graphql.schema.idl.SchemaTypeChecker.checkDeprecatedDirective; import static graphql.schema.idl.SchemaTypeChecker.checkNamedUniqueness; import static graphql.util.FpKit.mergeFirst; @@ -47,12 +42,13 @@ class SchemaTypeExtensionsChecker { void checkTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { - checkObjectTypeExtensions(errors, typeRegistry); - checkInterfaceTypeExtensions(errors, typeRegistry); - checkUnionTypeExtensions(errors, typeRegistry); - checkEnumTypeExtensions(errors, typeRegistry); - checkScalarTypeExtensions(errors, typeRegistry); - checkInputObjectTypeExtensions(errors, typeRegistry); + Map directiveDefinitionMap = typeRegistry.getDirectiveDefinitions(); + checkObjectTypeExtensions(errors, typeRegistry, directiveDefinitionMap); + checkInterfaceTypeExtensions(errors, typeRegistry, directiveDefinitionMap); + checkUnionTypeExtensions(errors, typeRegistry, directiveDefinitionMap); + checkEnumTypeExtensions(errors, typeRegistry, directiveDefinitionMap); + checkScalarTypeExtensions(errors, typeRegistry, directiveDefinitionMap); + checkInputObjectTypeExtensions(errors, typeRegistry, directiveDefinitionMap); } @@ -66,11 +62,10 @@ void checkTypeExtensions(List errors, TypeDefinitionRegistry typeR * Any interfaces provided must not be already implemented by the original Object type. * The resulting extended object type must be a super-set of all interfaces it implements. */ - private void checkObjectTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { + private void checkObjectTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry, Map directiveDefinitionMap) { typeRegistry.objectTypeExtensions() .forEach((name, extensions) -> { checkTypeExtensionHasCorrespondingType(errors, typeRegistry, name, extensions, ObjectTypeDefinition.class); - checkTypeExtensionDirectiveRedefinition(errors, typeRegistry, name, extensions, ObjectTypeDefinition.class); extensions.forEach(extension -> { List fieldDefinitions = extension.getFieldDefinitions(); @@ -83,34 +78,28 @@ private void checkObjectTypeExtensions(List errors, TypeDefinition (namedField, inputValueDefinition) -> new NonUniqueArgumentError(extension, fld, name))); // directive checks - extension.getFieldDefinitions().forEach(fld -> checkNamedUniqueness(errors, fld.getDirectives(), Directive::getName, - (directiveName, directive) -> new NonUniqueDirectiveError(extension, fld, directiveName))); + fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> + checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, + (argumentName, argument) -> new NonUniqueArgumentError(extension, fld, argumentName)))); - fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(extension, fld)); - - checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, - (argumentName, argument) -> new NonUniqueArgumentError(extension, fld, argumentName)); - - })); - - // - // fields must be unique within a type extension - forEachBut(extension, extensions, - otherTypeExt -> checkForFieldRedefinition(errors, otherTypeExt, otherTypeExt.getFieldDefinitions(), fieldDefinitions)); - - // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), ObjectTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions())); - + ObjectTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), ObjectTypeDefinition.class); + if (baseTypeDef != null) { + checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions()); + } }); + + // fields must be unique within a type extension + checkForTypeExtensionFieldUniqueness( + errors, + extensions, + ObjectTypeDefinition::getFieldDefinitions + ); + } ); } - /* * Interface type extensions have the potential to be invalid if incorrectly defined. * @@ -120,11 +109,10 @@ private void checkObjectTypeExtensions(List errors, TypeDefinition * Any Object type which implemented the original Interface type must also be a super-set of the fields of the Interface type extension (which may be due to Object type extension). * Any directives provided must not already apply to the original Interface type. */ - private void checkInterfaceTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { + private void checkInterfaceTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry, Map directiveDefinitionMap) { typeRegistry.interfaceTypeExtensions() .forEach((name, extensions) -> { checkTypeExtensionHasCorrespondingType(errors, typeRegistry, name, extensions, InterfaceTypeDefinition.class); - checkTypeExtensionDirectiveRedefinition(errors, typeRegistry, name, extensions, InterfaceTypeDefinition.class); extensions.forEach(extension -> { List fieldDefinitions = extension.getFieldDefinitions(); @@ -137,28 +125,23 @@ private void checkInterfaceTypeExtensions(List errors, TypeDefinit (namedField, inputValueDefinition) -> new NonUniqueArgumentError(extension, fld, name))); // directive checks - extension.getFieldDefinitions().forEach(fld -> checkNamedUniqueness(errors, fld.getDirectives(), Directive::getName, - (directiveName, directive) -> new NonUniqueDirectiveError(extension, fld, directiveName))); - - fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(extension, fld)); - - checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, - (argumentName, argument) -> new NonUniqueArgumentError(extension, fld, argumentName)); - - })); - - // - // fields must be unique within a type extension - forEachBut(extension, extensions, - otherTypeExt -> checkForFieldRedefinition(errors, otherTypeExt, otherTypeExt.getFieldDefinitions(), fieldDefinitions)); + fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> + checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, + (argumentName, argument) -> new NonUniqueArgumentError(extension, fld, argumentName)))); // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), InterfaceTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions())); + InterfaceTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), InterfaceTypeDefinition.class); + if (baseTypeDef != null) { + checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions()); + } }); + // fields must be unique within a type extension + checkForTypeExtensionFieldUniqueness( + errors, + extensions, + InterfaceTypeDefinition::getFieldDefinitions + ); }); } @@ -171,11 +154,10 @@ private void checkInterfaceTypeExtensions(List errors, TypeDefinit * All member types of a Union type extension must not already be a member of the original Union type. * Any directives provided must not already apply to the original Union type. */ - private void checkUnionTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { + private void checkUnionTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry, Map directiveDefinitionMap) { typeRegistry.unionTypeExtensions() .forEach((name, extensions) -> { checkTypeExtensionHasCorrespondingType(errors, typeRegistry, name, extensions, UnionTypeDefinition.class); - checkTypeExtensionDirectiveRedefinition(errors, typeRegistry, name, extensions, UnionTypeDefinition.class); extensions.forEach(extension -> { List memberTypes = extension.getMemberTypes().stream() @@ -186,8 +168,8 @@ private void checkUnionTypeExtensions(List errors, TypeDefinitionR memberTypes.forEach( memberType -> { - Optional unionTypeDefinition = typeRegistry.getType(memberType, ObjectTypeDefinition.class); - if (!unionTypeDefinition.isPresent()) { + ObjectTypeDefinition unionTypeDefinition = typeRegistry.getTypeOrNull(memberType, ObjectTypeDefinition.class); + if (unionTypeDefinition == null) { errors.add(new MissingTypeError("union member", extension, memberType)); } } @@ -204,11 +186,10 @@ private void checkUnionTypeExtensions(List errors, TypeDefinitionR * All values of an Enum type extension must not already be a value of the original Enum. * Any directives provided must not already apply to the original Enum type. */ - private void checkEnumTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { + private void checkEnumTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry, Map directiveDefinitionMap) { typeRegistry.enumTypeExtensions() .forEach((name, extensions) -> { checkTypeExtensionHasCorrespondingType(errors, typeRegistry, name, extensions, EnumTypeDefinition.class); - checkTypeExtensionDirectiveRedefinition(errors, typeRegistry, name, extensions, EnumTypeDefinition.class); extensions.forEach(extension -> { // field unique ness @@ -216,19 +197,16 @@ private void checkEnumTypeExtensions(List errors, TypeDefinitionRe checkNamedUniqueness(errors, enumValueDefinitions, EnumValueDefinition::getName, (namedField, enumValue) -> new NonUniqueNameError(extension, enumValue)); - // - // enum values must be unique within a type extension - forEachBut(extension, extensions, - otherTypeExt -> checkForEnumValueRedefinition(errors, otherTypeExt, otherTypeExt.getEnumValueDefinitions(), enumValueDefinitions)); - // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), EnumTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForEnumValueRedefinition(errors, extension, enumValueDefinitions, baseTypeDef.getEnumValueDefinitions())); + EnumTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), EnumTypeDefinition.class); + if (baseTypeDef != null) { + checkForEnumValueRedefinition(errors, extension, enumValueDefinitions, baseTypeDef.getEnumValueDefinitions()); + } }); - + checkForTypeExtensionEnumFieldUniqueness(errors, extensions, EnumTypeDefinition::getEnumValueDefinitions); }); } @@ -239,11 +217,10 @@ private void checkEnumTypeExtensions(List errors, TypeDefinitionRe * Any directives provided must not already apply to the original Scalar type. */ - private void checkScalarTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { + private void checkScalarTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry, Map directiveDefinitionMap) { typeRegistry.scalarTypeExtensions() .forEach((name, extensions) -> { checkTypeExtensionHasCorrespondingType(errors, typeRegistry, name, extensions, ScalarTypeDefinition.class); - checkTypeExtensionDirectiveRedefinition(errors, typeRegistry, name, extensions, ScalarTypeDefinition.class); }); } @@ -256,11 +233,10 @@ private void checkScalarTypeExtensions(List errors, TypeDefinition * All fields of an Input Object type extension must not already be a field of the original Input Object. * Any directives provided must not already apply to the original Input Object type. */ - private void checkInputObjectTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry) { + private void checkInputObjectTypeExtensions(List errors, TypeDefinitionRegistry typeRegistry, Map directiveDefinitionMap) { typeRegistry.inputObjectTypeExtensions() .forEach((name, extensions) -> { checkTypeExtensionHasCorrespondingType(errors, typeRegistry, name, extensions, InputObjectTypeDefinition.class); - checkTypeExtensionDirectiveRedefinition(errors, typeRegistry, name, extensions, InputObjectTypeDefinition.class); // field redefinitions extensions.forEach(extension -> { List inputValueDefinitions = extension.getInputValueDefinitions(); @@ -269,69 +245,43 @@ private void checkInputObjectTypeExtensions(List errors, TypeDefin (namedField, fieldDef) -> new NonUniqueNameError(extension, fieldDef)); // directive checks - inputValueDefinitions.forEach(fld -> checkNamedUniqueness(errors, fld.getDirectives(), Directive::getName, - (directiveName, directive) -> new NonUniqueDirectiveError(extension, fld, directiveName))); - - inputValueDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> { - checkDeprecatedDirective(errors, directive, - () -> new InvalidDeprecationDirectiveError(extension, fld)); - - checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, - (argumentName, argument) -> new NonUniqueArgumentError(extension, fld, argumentName)); - - })); - // - // fields must be unique within a type extension - forEachBut(extension, extensions, - otherTypeExt -> checkForInputValueRedefinition(errors, otherTypeExt, otherTypeExt.getInputValueDefinitions(), inputValueDefinitions)); - + inputValueDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> + checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, + (argumentName, argument) -> new NonUniqueArgumentError(extension, fld, argumentName)))); // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), InputObjectTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForInputValueRedefinition(errors, extension, inputValueDefinitions, baseTypeDef.getInputValueDefinitions())); + InputObjectTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), InputObjectTypeDefinition.class); + if (baseTypeDef != null) { + checkForInputValueRedefinition(errors, extension, inputValueDefinitions, baseTypeDef.getInputValueDefinitions()); + } }); + // + // fields must be unique within a type extension + checkForTypeExtensionInputFieldUniqueness( + errors, + extensions, + InputObjectTypeDefinition::getInputValueDefinitions + ); }); } - private void checkTypeExtensionHasCorrespondingType(List errors, TypeDefinitionRegistry typeRegistry, String name, List extTypeList, Class targetClass) { - TypeDefinition extensionDefinition = extTypeList.get(0); - Optional typeDefinition = typeRegistry.getType(TypeName.newTypeName().name(name).build(), targetClass); - if (!typeDefinition.isPresent()) { + private void checkTypeExtensionHasCorrespondingType(List errors, TypeDefinitionRegistry typeRegistry, String name, List> extTypeList, Class> targetClass) { + TypeDefinition extensionDefinition = extTypeList.get(0); + TypeDefinition typeDefinition = typeRegistry.getTypeOrNull(TypeName.newTypeName().name(name).build(), targetClass); + if (typeDefinition == null) { errors.add(new TypeExtensionMissingBaseTypeError(extensionDefinition)); } } - @SuppressWarnings("unchecked") - private void checkTypeExtensionDirectiveRedefinition(List errors, TypeDefinitionRegistry typeRegistry, String name, List extensions, Class targetClass) { - Optional typeDefinition = typeRegistry.getType(TypeName.newTypeName().name(name).build(), targetClass); - if (typeDefinition.isPresent() && typeDefinition.get().getClass().equals(targetClass)) { - List directives = typeDefinition.get().getDirectives(); - Map directiveMap = FpKit.getByName(directives, Directive::getName, mergeFirst()); - extensions.forEach(typeExt -> { - List extDirectives = typeExt.getDirectives(); - extDirectives.forEach(directive -> { - if (directiveMap.containsKey(directive.getName())) { - errors.add(new TypeExtensionDirectiveRedefinitionError(typeDefinition.get(), directive)); - } - }); - } - ); - } - } - - private void checkForFieldRedefinition(List errors, TypeDefinition typeDefinition, List fieldDefinitions, List referenceFieldDefinitions) { + private void checkForFieldRedefinition(List errors, TypeDefinition typeDefinition, List fieldDefinitions, List referenceFieldDefinitions) { Map referenceMap = FpKit.getByName(referenceFieldDefinitions, FieldDefinition::getName, mergeFirst()); fieldDefinitions.forEach(fld -> { - FieldDefinition reference = referenceMap.get(fld.getName()); if (referenceMap.containsKey(fld.getName())) { - // ok they have the same field but is it the same type - if (!isSameType(fld.getType(), reference.getType())) { - errors.add(new TypeExtensionFieldRedefinitionError(typeDefinition, fld)); - } + errors.add(new TypeExtensionFieldRedefinitionError(typeDefinition, fld)); } }); } @@ -340,17 +290,13 @@ private void checkForInputValueRedefinition(List errors, InputObje Map referenceMap = FpKit.getByName(referenceInputValues, InputValueDefinition::getName, mergeFirst()); inputValueDefinitions.forEach(fld -> { - InputValueDefinition reference = referenceMap.get(fld.getName()); if (referenceMap.containsKey(fld.getName())) { - // ok they have the same field but is it the same type - if (!isSameType(fld.getType(), reference.getType())) { - errors.add(new TypeExtensionFieldRedefinitionError(typeDefinition, fld)); - } + errors.add(new TypeExtensionFieldRedefinitionError(typeDefinition, fld)); } }); } - private void checkForEnumValueRedefinition(List errors, TypeDefinition typeDefinition, List enumValueDefinitions, List referenceEnumValueDefinitions) { + private void checkForEnumValueRedefinition(List errors, TypeDefinition typeDefinition, List enumValueDefinitions, List referenceEnumValueDefinitions) { Map referenceMap = FpKit.getByName(referenceEnumValueDefinitions, EnumValueDefinition::getName, mergeFirst()); @@ -361,20 +307,57 @@ private void checkForEnumValueRedefinition(List errors, TypeDefini }); } - private void forEachBut(T butThisOne, List list, Consumer consumer) { - for (T t : list) { - if (t == butThisOne) { - continue; + private > void checkForTypeExtensionFieldUniqueness( + List errors, + List extensions, + Function> getFieldDefinitionsFunc + ) { + Set seenFields = new HashSet<>(); + + for (T extension : extensions) { + for (FieldDefinition field : getFieldDefinitionsFunc.apply(extension)) { + if (seenFields.contains(field.getName())) { + errors.add(new TypeExtensionFieldRedefinitionError(extension, field)); + } else { + seenFields.add(field.getName()); + } } - consumer.accept(t); } } - - private boolean isSameType(Type type1, Type type2) { - String s1 = AstPrinter.printAst(type1); - String s2 = AstPrinter.printAst(type2); - return s1.equals(s2); + private > void checkForTypeExtensionInputFieldUniqueness( + List errors, + List extensions, + Function> getFieldDefinitionsFunc + ) { + Set seenFields = new HashSet<>(); + + for (T extension : extensions) { + for (InputValueDefinition field : getFieldDefinitionsFunc.apply(extension)) { + if (seenFields.contains(field.getName())) { + errors.add(new TypeExtensionFieldRedefinitionError(extension, field)); + } else { + seenFields.add(field.getName()); + } + } + } } + private > void checkForTypeExtensionEnumFieldUniqueness( + List errors, + List extensions, + Function> getFieldDefinitionsFunc + ) { + Set seenFields = new HashSet<>(); + + for (T extension : extensions) { + for (EnumValueDefinition field : getFieldDefinitionsFunc.apply(extension)) { + if (seenFields.contains(field.getName())) { + errors.add(new TypeExtensionEnumValueRedefinitionError(extension, field)); + } else { + seenFields.add(field.getName()); + } + } + } + } } diff --git a/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java b/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java index dc554ea650..37bd404e4e 100644 --- a/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java +++ b/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java @@ -3,8 +3,10 @@ import graphql.Assert; import graphql.GraphQLError; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.language.DirectiveDefinition; import graphql.language.EnumTypeExtensionDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InputObjectTypeExtensionDefinition; import graphql.language.InterfaceTypeDefinition; import graphql.language.InterfaceTypeExtensionDefinition; @@ -22,51 +24,117 @@ import graphql.language.UnionTypeDefinition; import graphql.language.UnionTypeExtensionDefinition; import graphql.schema.idl.errors.DirectiveRedefinitionError; -import graphql.schema.idl.errors.OperationRedefinitionError; import graphql.schema.idl.errors.SchemaProblem; import graphql.schema.idl.errors.SchemaRedefinitionError; import graphql.schema.idl.errors.TypeRedefinitionError; import graphql.util.FpKit; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.function.Function; -import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; import static graphql.schema.idl.SchemaExtensionsChecker.defineOperationDefs; import static graphql.schema.idl.SchemaExtensionsChecker.gatherOperationDefs; +import static graphql.schema.idl.TypeInfo.typeName; import static java.util.Optional.ofNullable; /** * A {@link TypeDefinitionRegistry} contains the set of type definitions that come from compiling * a graphql schema definition file via {@link SchemaParser#parse(String)} */ +@SuppressWarnings("rawtypes") @PublicApi -public class TypeDefinitionRegistry { +@NullMarked +public class TypeDefinitionRegistry implements Serializable { + + protected final Map> objectTypeExtensions; + protected final Map> interfaceTypeExtensions; + protected final Map> unionTypeExtensions; + protected final Map> enumTypeExtensions; + protected final Map> scalarTypeExtensions; + protected final Map> inputObjectTypeExtensions; + + protected final Map types; + protected final Map scalarTypes; + protected final Map directiveDefinitions; + protected @Nullable SchemaDefinition schema; + protected final List schemaExtensionDefinitions; + protected final SchemaParseOrder schemaParseOrder; + + public TypeDefinitionRegistry() { + objectTypeExtensions = new LinkedHashMap<>(); + interfaceTypeExtensions = new LinkedHashMap<>(); + unionTypeExtensions = new LinkedHashMap<>(); + enumTypeExtensions = new LinkedHashMap<>(); + scalarTypeExtensions = new LinkedHashMap<>(); + inputObjectTypeExtensions = new LinkedHashMap<>(); + types = new LinkedHashMap<>(); + scalarTypes = new LinkedHashMap<>(); + directiveDefinitions = new LinkedHashMap<>(); + schemaExtensionDefinitions = new ArrayList<>(); + schemaParseOrder = new SchemaParseOrder(); + } + + protected TypeDefinitionRegistry(Map> objectTypeExtensions, + Map> interfaceTypeExtensions, + Map> unionTypeExtensions, + Map> enumTypeExtensions, + Map> scalarTypeExtensions, + Map> inputObjectTypeExtensions, + Map types, + Map scalarTypes, + Map directiveDefinitions, + List schemaExtensionDefinitions, + @Nullable SchemaDefinition schema, + SchemaParseOrder schemaParseOrder) { + this.objectTypeExtensions = objectTypeExtensions; + this.interfaceTypeExtensions = interfaceTypeExtensions; + this.unionTypeExtensions = unionTypeExtensions; + this.enumTypeExtensions = enumTypeExtensions; + this.scalarTypeExtensions = scalarTypeExtensions; + this.inputObjectTypeExtensions = inputObjectTypeExtensions; + this.types = types; + this.scalarTypes = scalarTypes; + this.directiveDefinitions = directiveDefinitions; + this.schemaExtensionDefinitions = schemaExtensionDefinitions; + this.schema = schema; + this.schemaParseOrder = schemaParseOrder; + } - private final Map> objectTypeExtensions = new LinkedHashMap<>(); - private final Map> interfaceTypeExtensions = new LinkedHashMap<>(); - private final Map> unionTypeExtensions = new LinkedHashMap<>(); - private final Map> enumTypeExtensions = new LinkedHashMap<>(); - private final Map> scalarTypeExtensions = new LinkedHashMap<>(); - private final Map> inputObjectTypeExtensions = new LinkedHashMap<>(); + /** + * @return an immutable view of this {@link TypeDefinitionRegistry} that is more performant + * when in read only mode. + */ + public ImmutableTypeDefinitionRegistry readOnly() { + if (this instanceof ImmutableTypeDefinitionRegistry) { + return (ImmutableTypeDefinitionRegistry) this; + } + return new ImmutableTypeDefinitionRegistry(this); + } - private final Map types = new LinkedHashMap<>(); - private final Map scalarTypes = new LinkedHashMap<>(); - private final Map directiveDefinitions = new LinkedHashMap<>(); - private SchemaDefinition schema; - private final List schemaExtensionDefinitions = new ArrayList<>(); + /** + * @return the order in which {@link SDLDefinition}s were parsed + */ + public SchemaParseOrder getParseOrder() { + return schemaParseOrder; + } /** * This will merge these type registries together and return this one * * @param typeRegistry the registry to be merged into this one + * * @return this registry + * * @throws SchemaProblem if there are problems merging the types such as redefinitions */ public TypeDefinitionRegistry merge(TypeDefinitionRegistry typeRegistry) throws SchemaProblem { @@ -96,8 +164,10 @@ public TypeDefinitionRegistry merge(TypeDefinitionRegistry typeRegistry) throws if (this.schema == null) { // ensure schema is not overwritten by merge this.schema = typeRegistry.schema; + schemaParseOrder.addDefinition(typeRegistry.schema); } this.schemaExtensionDefinitions.addAll(typeRegistry.schemaExtensionDefinitions); + typeRegistry.schemaExtensionDefinitions.forEach(schemaParseOrder::addDefinition); // ok commit to the merge this.types.putAll(tempTypes); @@ -166,6 +236,7 @@ private Optional checkAddOperationDefs() { * Adds a a collections of definitions to the registry * * @param definitions the definitions to add + * * @return an optional error for the first problem, typically type redefinition */ public Optional addAll(Collection definitions) { @@ -182,6 +253,7 @@ public Optional addAll(Collection definitions) { * Adds a definition to the registry * * @param definition the definition to add + * * @return an optional error */ public Optional add(SDLDefinition definition) { @@ -206,6 +278,7 @@ public Optional add(SDLDefinition definition) { return defineExt(inputObjectTypeExtensions, newEntry, InputObjectTypeExtensionDefinition::getName); } else if (definition instanceof SchemaExtensionDefinition) { schemaExtensionDefinitions.add((SchemaExtensionDefinition) definition); + schemaParseOrder.addDefinition(definition); Optional error = checkAddOperationDefs(); if (error.isPresent()) { return error; @@ -225,6 +298,7 @@ public Optional add(SDLDefinition definition) { return Optional.of(new SchemaRedefinitionError(this.schema, newSchema)); } else { schema = newSchema; + schemaParseOrder.addDefinition(newSchema); } Optional error = checkAddOperationDefs(); if (error.isPresent()) { @@ -236,8 +310,14 @@ public Optional add(SDLDefinition definition) { return Optional.empty(); } + /** + * Removes a {@code SDLDefinition} from the definition list. + * + * @param definition the definition to remove + */ public void remove(SDLDefinition definition) { assertNotNull(definition, "definition to remove can't be null"); + schemaParseOrder.removeDefinition(definition); if (definition instanceof ObjectTypeExtensionDefinition) { removeFromList(objectTypeExtensions, (TypeDefinition) definition); } else if (definition instanceof InterfaceTypeExtensionDefinition) { @@ -266,11 +346,59 @@ public void remove(SDLDefinition definition) { } private void removeFromList(Map source, TypeDefinition value) { + //noinspection unchecked List list = (List) source.get(value.getName()); if (list == null) { return; } list.remove(value); + if (list.isEmpty()) { + source.remove(value.getName()); + } + } + + /** + * Removes a {@code SDLDefinition} from a map. + * + * @param key the key to remove + * @param definition the definition to remove + */ + public void remove(String key, SDLDefinition definition) { + assertNotNull(definition, "definition to remove can't be null"); + assertNotNull(key, "key to remove can't be null"); + schemaParseOrder.removeDefinition(definition); + if (definition instanceof ObjectTypeExtensionDefinition) { + removeFromMap(objectTypeExtensions, key); + } else if (definition instanceof InterfaceTypeExtensionDefinition) { + removeFromMap(interfaceTypeExtensions, key); + } else if (definition instanceof UnionTypeExtensionDefinition) { + removeFromMap(unionTypeExtensions, key); + } else if (definition instanceof EnumTypeExtensionDefinition) { + removeFromMap(enumTypeExtensions, key); + } else if (definition instanceof ScalarTypeExtensionDefinition) { + removeFromMap(scalarTypeExtensions, key); + } else if (definition instanceof InputObjectTypeExtensionDefinition) { + removeFromMap(inputObjectTypeExtensions, key); + } else if (definition instanceof ScalarTypeDefinition) { + removeFromMap(scalarTypes, key); + } else if (definition instanceof TypeDefinition) { + removeFromMap(types, key); + } else if (definition instanceof DirectiveDefinition) { + removeFromMap(directiveDefinitions, key); + } else if (definition instanceof SchemaExtensionDefinition) { + schemaExtensionDefinitions.remove(definition); + } else if (definition instanceof SchemaDefinition) { + schema = null; + } else { + Assert.assertShouldNeverHappen(); + } + } + + private void removeFromMap(Map source, String key) { + if (source == null) { + return; + } + source.remove(key); } @@ -282,6 +410,7 @@ private Optional define(Map return Optional.of(handleReDefinition(olderEntry, newEntry)); } else { target.put(name, newEntry); + schemaParseOrder.addDefinition(newEntry); } return Optional.empty(); } @@ -294,13 +423,15 @@ private Optional define(Map Optional defineExt(Map> typeExtensions, T newEntry, Function namerFunc) { + private Optional defineExt(Map> typeExtensions, T newEntry, Function namerFunc) { List currentList = typeExtensions.computeIfAbsent(namerFunc.apply(newEntry), k -> new ArrayList<>()); currentList.add(newEntry); + schemaParseOrder.addDefinition(newEntry); return Optional.empty(); } @@ -362,56 +493,177 @@ public Map getDirectiveDefinitions() { return new LinkedHashMap<>(directiveDefinitions); } + /** + * Returns true if the registry has a type of the specified {@link TypeName} + * + * @param typeName the type name to check + * + * @return true if the registry has a type by that type name + */ public boolean hasType(TypeName typeName) { String name = typeName.getName(); + return hasType(name); + } + + /** + * Returns true if the registry has a type of the specified name + * + * @param name the name to check + * + * @return true if the registry has a type by that name + */ + public boolean hasType(String name) { return types.containsKey(name) || ScalarInfo.GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.containsKey(name) || scalarTypes.containsKey(name) || objectTypeExtensions.containsKey(name); } + /** + * Returns an optional {@link TypeDefinition} of the specified type or {@link Optional#empty()} + * + * @param type the type to check + * + * @return an optional {@link TypeDefinition} or empty if it's not found + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") public Optional getType(Type type) { - String typeName = TypeInfo.typeInfo(type).getName(); - return getType(typeName); + return Optional.ofNullable(getTypeOrNull(type)); } + /** + * Returns an optional {@link TypeDefinition} of the specified type with the specified class or {@link Optional#empty()} + * + * @param type the type to check + * @param ofType the class of {@link TypeDefinition} + * + * @return an optional {@link TypeDefinition} or empty if it's not found + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") public Optional getType(Type type, Class ofType) { - String typeName = TypeInfo.typeInfo(type).getName(); - return getType(typeName, ofType); + return Optional.ofNullable(getTypeOrNull(typeName(type), ofType)); } + /** + * Returns an optional {@link TypeDefinition} of the specified type name or {@link Optional#empty()} + * + * @param typeName the type to check + * + * @return an optional {@link TypeDefinition} or empty if it's not found + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") public Optional getType(String typeName) { + return Optional.ofNullable(getTypeOrNull(typeName)); + } + + /** + * Returns an optional {@link TypeDefinition} of the specified type name with the specified class or {@link Optional#empty()} + * + * @param typeName the type to check + * @param ofType the class of {@link TypeDefinition} + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") + public Optional getType(String typeName, Class ofType) { + return Optional.ofNullable(getTypeOrNull(typeName, ofType)); + } + + /** + * Returns a {@link TypeDefinition} of the specified type or null + * + * @param type the type to check + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public TypeDefinition getTypeOrNull(Type type) { + return getTypeOrNull(typeName(type)); + } + + /** + * Returns a {@link TypeDefinition} of the specified type with the specified class or null + * + * @param type the type to check + * @param ofType the class of {@link TypeDefinition} + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public T getTypeOrNull(Type type, Class ofType) { + return getTypeOrNull(typeName(type), ofType); + } + + /** + * Returns a {@link TypeDefinition} of the specified name or null + * + * @param typeName the type name to check + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public TypeDefinition getTypeOrNull(String typeName) { TypeDefinition typeDefinition = types.get(typeName); if (typeDefinition != null) { - return Optional.of(typeDefinition); + return typeDefinition; } typeDefinition = scalars().get(typeName); - if (typeDefinition != null) { - return Optional.of(typeDefinition); - } - return Optional.empty(); + return typeDefinition; } - public Optional getType(String typeName, Class ofType) { - Optional type = getType(typeName); - if (type.isPresent()) { - TypeDefinition typeDefinition = type.get(); - if (typeDefinition.getClass().equals(ofType)) { + /** + * Returns a {@link TypeDefinition} of the specified name and class or null + * + * @param typeName the type name to check + * @param ofType the class of {@link TypeDefinition} + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public T getTypeOrNull(String typeName, Class ofType) { + TypeDefinition type = getTypeOrNull(typeName); + if (type != null) { + if (type.getClass().equals(ofType)) { //noinspection unchecked - return Optional.of((T) typeDefinition); + return (T) type; } } - return Optional.empty(); + return null; } /** * Returns true if the specified type exists in the registry and is an abstract (Interface or Union) type * * @param type the type to check + * * @return true if its abstract */ public boolean isInterfaceOrUnion(Type type) { - Optional typeDefinition = getType(type); - if (typeDefinition.isPresent()) { - TypeDefinition definition = typeDefinition.get(); - return definition instanceof UnionTypeDefinition || definition instanceof InterfaceTypeDefinition; + TypeDefinition typeDefinition = getTypeOrNull(type); + if (typeDefinition != null) { + return typeDefinition instanceof UnionTypeDefinition || typeDefinition instanceof InterfaceTypeDefinition; + } + return false; + } + + /** + * Returns true if the specified type exists in the registry and is an object type or interface + * + * @param type the type to check + * + * @return true if its an object type or interface + */ + public boolean isObjectTypeOrInterface(Type type) { + TypeDefinition typeDefinition = getTypeOrNull(type); + if (typeDefinition != null) { + return typeDefinition instanceof ObjectTypeDefinition || typeDefinition instanceof InterfaceTypeDefinition; } return false; } @@ -420,10 +672,11 @@ public boolean isInterfaceOrUnion(Type type) { * Returns true if the specified type exists in the registry and is an object type * * @param type the type to check + * * @return true if its an object type */ public boolean isObjectType(Type type) { - return getType(type, ObjectTypeDefinition.class).isPresent(); + return getTypeOrNull(type, ObjectTypeDefinition.class) != null; } /** @@ -431,13 +684,14 @@ public boolean isObjectType(Type type) { * * @param targetClass the class to search for * @param must extend TypeDefinition + * * @return a list of types of the target class */ public List getTypes(Class targetClass) { - return types.values().stream() - .filter(targetClass::isInstance) - .map(targetClass::cast) - .collect(Collectors.toList()); + return ImmutableKit.filterAndMap(types.values(), + targetClass::isInstance, + targetClass::cast + ); } /** @@ -445,6 +699,7 @@ public List getTypes(Class targetClass) { * * @param targetClass the class to search for * @param must extend TypeDefinition + * * @return a map of types */ public Map getTypesMap(Class targetClass) { @@ -453,51 +708,71 @@ public Map getTypesMap(Class targetClas } /** - * Returns the list of object types that implement the given interface type + * Returns the list of object and interface types that implement the given interface type * * @param targetInterface the target to search for + * * @return the list of object types that implement the given interface type + * + * @see TypeDefinitionRegistry#getImplementationsOf(InterfaceTypeDefinition) */ - public List getImplementationsOf(InterfaceTypeDefinition targetInterface) { - List objectTypeDefinitions = getTypes(ObjectTypeDefinition.class); - return objectTypeDefinitions.stream().filter(objectTypeDefinition -> { - List implementsList = objectTypeDefinition.getImplements(); - for (Type iFace : implementsList) { - Optional interfaceTypeDef = getType(iFace, InterfaceTypeDefinition.class); - if (interfaceTypeDef.isPresent()) { - boolean equals = interfaceTypeDef.get().getName().equals(targetInterface.getName()); - if (equals) { - return true; + public List getAllImplementationsOf(InterfaceTypeDefinition targetInterface) { + return ImmutableKit.filter( + getTypes(ImplementingTypeDefinition.class), + implementingTypeDefinition -> { + List> implementsList = implementingTypeDefinition.getImplements(); + for (Type iFace : implementsList) { + InterfaceTypeDefinition interfaceTypeDef = getTypeOrNull(iFace, InterfaceTypeDefinition.class); + if (interfaceTypeDef != null) { + if (interfaceTypeDef.getName().equals(targetInterface.getName())) { + return true; + } + } } - } - } - return false; - }).collect(Collectors.toList()); + return false; + }); } /** - * Returns true of the abstract type is in implemented by the object type + * Returns the list of object interface types that implement the given interface type + * + * @param targetInterface the target to search for + * + * @return the list of object types that implement the given interface type * - * @param abstractType the abstract type to check (interface or union) - * @param possibleObjectType the object type to check - * @return true if the object type implements the abstract type + * @see TypeDefinitionRegistry#getAllImplementationsOf(InterfaceTypeDefinition) */ - @SuppressWarnings("ConstantConditions") - public boolean isPossibleType(Type abstractType, Type possibleObjectType) { + public List getImplementationsOf(InterfaceTypeDefinition targetInterface) { + return ImmutableKit.filterAndMap( + getAllImplementationsOf(targetInterface), + typeDefinition -> typeDefinition instanceof ObjectTypeDefinition, + typeDefinition -> (ObjectTypeDefinition) typeDefinition + ); + } + + /** + * Returns true of the abstract type is in implemented by the object type or interface + * + * @param abstractType the abstract type to check (interface or union) + * @param possibleType the object type or interface to check + * + * @return true if the object type or interface implements the abstract type + */ + public boolean isPossibleType(Type abstractType, Type possibleType) { if (!isInterfaceOrUnion(abstractType)) { return false; } - if (!isObjectType(possibleObjectType)) { + if (!isObjectTypeOrInterface(possibleType)) { return false; } - ObjectTypeDefinition targetObjectTypeDef = getType(possibleObjectType, ObjectTypeDefinition.class).get(); - TypeDefinition abstractTypeDef = getType(abstractType).get(); + TypeDefinition targetObjectTypeDef = Objects.requireNonNull(getTypeOrNull(possibleType)); + TypeDefinition abstractTypeDef = Objects.requireNonNull(getTypeOrNull(abstractType)); if (abstractTypeDef instanceof UnionTypeDefinition) { List memberTypes = ((UnionTypeDefinition) abstractTypeDef).getMemberTypes(); for (Type memberType : memberTypes) { - Optional checkType = getType(memberType, ObjectTypeDefinition.class); - if (checkType.isPresent()) { - if (checkType.get().getName().equals(targetObjectTypeDef.getName())) { + ObjectTypeDefinition checkType = getTypeOrNull(memberType, ObjectTypeDefinition.class); + if (checkType != null) { + if (checkType.getName().equals(targetObjectTypeDef.getName())) { return true; } } @@ -505,9 +780,21 @@ public boolean isPossibleType(Type abstractType, Type possibleObjectType) { return false; } else { InterfaceTypeDefinition iFace = (InterfaceTypeDefinition) abstractTypeDef; - List objectTypeDefinitions = getImplementationsOf(iFace); - return objectTypeDefinitions.stream() - .anyMatch(od -> od.getName().equals(targetObjectTypeDef.getName())); + for (TypeDefinition t : types.values()) { + if (t instanceof ImplementingTypeDefinition) { + if (t.getName().equals(targetObjectTypeDef.getName())) { + ImplementingTypeDefinition itd = (ImplementingTypeDefinition) t; + + for (Type implementsType : itd.getImplements()) { + TypeDefinition matchingInterface = types.get(typeName(implementsType)); + if (matchingInterface != null && matchingInterface.getName().equals(iFace.getName())) { + return true; + } + } + } + } + } + return false; } } @@ -516,6 +803,7 @@ public boolean isPossibleType(Type abstractType, Type possibleObjectType) { * * @param maybeSubType the type to check * @param superType the equality checked type + * * @return true if maybeSubType is covariant or equal to superType */ @SuppressWarnings("SimplifiableIfStatement") @@ -555,7 +843,7 @@ public boolean isSubTypeOf(Type maybeSubType, Type superType) { // If superType type is an abstract type, maybeSubType type may be a currently // possible object type. if (isInterfaceOrUnion(superType) && - isObjectType(maybeSubType) && + isObjectTypeOrInterface(maybeSubType) && isPossibleType(superType, maybeSubType)) { return true; } diff --git a/src/main/java/graphql/schema/idl/TypeInfo.java b/src/main/java/graphql/schema/idl/TypeInfo.java index 6898a0e40b..65a6c0e5a1 100644 --- a/src/main/java/graphql/schema/idl/TypeInfo.java +++ b/src/main/java/graphql/schema/idl/TypeInfo.java @@ -8,8 +8,9 @@ import graphql.language.TypeName; import graphql.schema.GraphQLType; +import java.util.ArrayDeque; +import java.util.Deque; import java.util.Objects; -import java.util.Stack; import static graphql.Assert.assertNotNull; import static graphql.schema.GraphQLList.list; @@ -27,7 +28,7 @@ public static TypeInfo typeInfo(Type type) { private final Type rawType; private final TypeName typeName; - private final Stack> decoration = new Stack<>(); + private final Deque> decoration = new ArrayDeque<>(); private TypeInfo(Type type) { this.rawType = assertNotNull(type, "type must not be null"); @@ -79,8 +80,7 @@ public TypeInfo renameAs(String newName) { Type out = TypeName.newTypeName(newName).build(); - Stack> wrappingStack = new Stack<>(); - wrappingStack.addAll(this.decoration); + Deque> wrappingStack = new ArrayDeque<>(this.decoration); while (!wrappingStack.isEmpty()) { Class clazz = wrappingStack.pop(); if (clazz.equals(NonNullType.class)) { @@ -106,8 +106,7 @@ public TypeInfo renameAs(String newName) { public T decorate(GraphQLType objectType) { GraphQLType out = objectType; - Stack> wrappingStack = new Stack<>(); - wrappingStack.addAll(this.decoration); + Deque> wrappingStack = new ArrayDeque<>(this.decoration); while (!wrappingStack.isEmpty()) { Class clazz = wrappingStack.pop(); if (clazz.equals(NonNullType.class)) { @@ -140,6 +139,36 @@ public Type unwrapOneType() { return unwrapOne().getRawType(); } + /** + * Gets the {@link TypeName} type name of a [Type], unwrapping any lists or non-null decorations + * + * @param type the Type + * + * @return the inner {@link TypeName} for this type + */ + public static TypeName getTypeName(Type type) { + while (!(type instanceof TypeName)) { + if (type instanceof NonNullType) { + type = ((NonNullType) type).getType(); + } + if (type instanceof ListType) { + type = ((ListType) type).getType(); + } + } + return (TypeName) type; + } + + /** + * Gets the string type name of a [Type], unwrapping any lists or non-null decorations + * + * @param type the Type + * + * @return the inner string name for this type + */ + public static String typeName(Type type) { + return getTypeName(type).getName(); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -152,10 +181,13 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(typeName.getName(), isNonNull(), isList()); + int result = 1; + result = 31 * result + Objects.hashCode(typeName.getName()); + result = 31 * result + Boolean.hashCode(isNonNull()); + result = 31 * result + Boolean.hashCode(isList()); + return result; } - @Override public String toString() { return "TypeInfo{" + diff --git a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java index 95892d7072..e4eb79799e 100644 --- a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java @@ -1,21 +1,47 @@ package graphql.schema.idl; +import graphql.PublicApi; import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.schema.TypeResolver; +import graphql.schema.idl.errors.StrictModeWiringException; import java.util.LinkedHashMap; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; +import static java.lang.String.format; /** * A type runtime wiring is a specification of the data fetchers and possible type resolver for a given type name. - * + *
      * This is used by {@link RuntimeWiring} to wire together a functional {@link GraphQLSchema} */ +@PublicApi public class TypeRuntimeWiring { + + private final static AtomicBoolean DEFAULT_STRICT_MODE = new AtomicBoolean(true); + + /** + * By default {@link TypeRuntimeWiring} builders are in strict mode, but you can set a JVM wide value too + * + * @param strictMode the desired strict mode state + * + * @see Builder#strictMode(boolean) + */ + public static void setStrictModeJvmWide(boolean strictMode) { + DEFAULT_STRICT_MODE.set(strictMode); + } + + /** + * @return the current JVM wide state of strict mode + */ + public static boolean getStrictModeJvmWide() { + return DEFAULT_STRICT_MODE.get(); + } + private final String typeName; private final DataFetcher defaultDataFetcher; private final Map fieldDataFetchers; @@ -80,6 +106,7 @@ public static class Builder { private DataFetcher defaultDataFetcher; private TypeResolver typeResolver; private EnumValuesProvider enumValuesProvider; + private boolean strictMode = DEFAULT_STRICT_MODE.get(); /** * Sets the type name for this type wiring. You MUST set this. @@ -93,6 +120,31 @@ public Builder typeName(String typeName) { return this; } + /** + * This puts the builder into strict mode, so if things get defined twice, for example, it + * will throw a {@link StrictModeWiringException}. + * + * @return this builder + */ + public Builder strictMode(boolean strictMode) { + this.strictMode = strictMode; + return this; + } + + /** + * This puts the builder into strict mode, so if things get defined twice, for example, it + * will throw a {@link StrictModeWiringException}. + * + * @return this builder + * + * @deprecated use {@link #strictMode(boolean)} instead + */ + @Deprecated(since = "2025-03-22", forRemoval = true) + public Builder strictMode() { + this.strictMode = true; + return this; + } + /** * Adds a data fetcher for the current type to the specified field * @@ -104,6 +156,9 @@ public Builder typeName(String typeName) { public Builder dataFetcher(String fieldName, DataFetcher dataFetcher) { assertNotNull(dataFetcher, "you must provide a data fetcher"); assertNotNull(fieldName, "you must tell us what field"); + if (strictMode) { + assertFieldStrictly(fieldName); + } fieldDataFetchers.put(fieldName, dataFetcher); return this; } @@ -117,10 +172,21 @@ public Builder dataFetcher(String fieldName, DataFetcher dataFetcher) { */ public Builder dataFetchers(Map dataFetchersMap) { assertNotNull(dataFetchersMap, "you must provide a data fetchers map"); + if (strictMode) { + dataFetchersMap.forEach((fieldName, df) -> { + assertFieldStrictly(fieldName); + }); + } fieldDataFetchers.putAll(dataFetchersMap); return this; } + private void assertFieldStrictly(String fieldName) { + if (fieldDataFetchers.containsKey(fieldName)) { + throw new StrictModeWiringException(format("The field %s already has a data fetcher defined", fieldName)); + } + } + /** * All fields in a type need a data fetcher of some sort and this method is called to provide the default data fetcher * that will be used for this type if no specific one has been provided per field. @@ -131,6 +197,9 @@ public Builder dataFetchers(Map dataFetchersMap) { */ public Builder defaultDataFetcher(DataFetcher dataFetcher) { assertNotNull(dataFetcher); + if (strictMode && defaultDataFetcher != null) { + throw new StrictModeWiringException(format("The type %s has already has a default data fetcher defined", typeName)); + } defaultDataFetcher = dataFetcher; return this; } @@ -150,7 +219,7 @@ public Builder typeResolver(TypeResolver typeResolver) { } public Builder enumValues(EnumValuesProvider enumValuesProvider) { - assertNotNull(enumValuesProvider, "you must provide a type resolver"); + assertNotNull(enumValuesProvider, "you must provide an enum values provider"); this.enumValuesProvider = enumValuesProvider; return this; } diff --git a/src/main/java/graphql/schema/idl/TypeUtil.java b/src/main/java/graphql/schema/idl/TypeUtil.java new file mode 100644 index 0000000000..0189666bd4 --- /dev/null +++ b/src/main/java/graphql/schema/idl/TypeUtil.java @@ -0,0 +1,99 @@ +package graphql.schema.idl; + +import graphql.language.Type; +import graphql.language.TypeName; +import graphql.language.ListType; +import graphql.language.NonNullType; + +/** + * This class consists of {@code static} utility methods for operating on {@link graphql.language.Type}. + */ +public class TypeUtil { + + /** + * This will return the type in graphql SDL format, eg [typeName!]! + * + * @param type the type in play + * @return the type in graphql SDL format, eg [typeName!]! + */ + public static String simplePrint(Type type) { + if (isNonNull(type)) { + return simplePrint(unwrapOne(type)) + "!"; + } else if (isList(type)) { + return "[" + simplePrint(unwrapOne(type)) + "]"; + } + return ((TypeName) type).getName(); + } + + /** + * Unwraps all layers of the type or just returns the type again if it's not a wrapped type + * + * @param type the type to be unwrapped + * + * @return the unwrapped type or the same type again if it's not wrapped + */ + public static TypeName unwrapAll(Type type) { + if (isList(type)) { + return unwrapAll(((ListType) type).getType()); + } else if (type instanceof NonNullType) { + return unwrapAll(((NonNullType) type).getType()); + } + return (TypeName) type; + } + + /** + * Unwraps one layer of the type or just returns the type again if it's not a wrapped type + * + * @param type the type to be unwrapped + * + * @return the unwrapped type or the same type again if it's not wrapped + */ + public static Type unwrapOne(Type type) { + if (isNonNull(type)) { + return ((NonNullType) type).getType(); + } else if (isList(type)) { + return ((ListType) type).getType(); + } + return type; + } + + /** + * Returns {@code true} if the provided type is a non null type, + * otherwise returns {@code false}. + * + * @param type the type to check + * + * @return {@code true} if the provided type is a non null type + * otherwise {@code false} + */ + public static boolean isNonNull(Type type) { + return type instanceof NonNullType; + } + + /** + * Returns {@code true} if the provided type is a list type, + * otherwise returns {@code false}. + * + * @param type the type to check + * + * @return {@code true} if the provided type is a list typ, + * otherwise {@code false} + */ + public static boolean isList(Type type) { + return type instanceof ListType; + } + + /** + * Returns {@code true} if the given type is a non null or list type, + * that is a wrapped type, otherwise returns {@code false}. + * + * @param type the type to check + * + * @return {@code true} if the given type is a non null or list type, + * otherwise {@code false} + */ + public static boolean isWrapped(Type type) { + return isList(type) || isNonNull(type); + } + +} diff --git a/src/main/java/graphql/schema/idl/UnionTypesChecker.java b/src/main/java/graphql/schema/idl/UnionTypesChecker.java new file mode 100644 index 0000000000..f2134b2d54 --- /dev/null +++ b/src/main/java/graphql/schema/idl/UnionTypesChecker.java @@ -0,0 +1,75 @@ +package graphql.schema.idl; + +import graphql.GraphQLError; +import graphql.Internal; +import graphql.language.ObjectTypeDefinition; +import graphql.language.Type; +import graphql.language.TypeDefinition; +import graphql.language.TypeName; +import graphql.language.UnionTypeDefinition; +import graphql.language.UnionTypeExtensionDefinition; +import graphql.schema.idl.errors.UnionTypeError; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Stream; + +import static java.lang.String.format; + +/** + * UnionType check, details in https://spec.graphql.org/June2018/#sec-Type-System. + *
      + *     
      + *         
    • Invalid name begin with "__" (two underscores);
    • + *
    • Union type must include one or more member types;
    • + *
    • The member types of a Union type must all be Object base types;
    • + *
    • The member types of a Union type must be unique.
    • + *
      + *
      + */ +@Internal +class UnionTypesChecker { + + void checkUnionType(List errors, TypeDefinitionRegistry typeRegistry) { + List unionTypes = typeRegistry.getTypes(UnionTypeDefinition.class); + List unionTypeExtensions = typeRegistry.getTypes(UnionTypeExtensionDefinition.class); + + Stream.concat(unionTypes.stream(), unionTypeExtensions.stream()) + .forEach(type -> checkUnionType(typeRegistry, type, errors)); + } + + private void checkUnionType(TypeDefinitionRegistry typeRegistry, UnionTypeDefinition unionTypeDefinition, List errors) { + assertTypeName(unionTypeDefinition, errors); + + //noinspection rawtypes + List memberTypes = unionTypeDefinition.getMemberTypes(); + if (memberTypes == null || memberTypes.isEmpty()) { + errors.add(new UnionTypeError(unionTypeDefinition, format("Union type '%s' must include one or more member types.", unionTypeDefinition.getName()))); + return; + } + + Set typeNames = new LinkedHashSet<>(); + for (Type memberType : memberTypes) { + String memberTypeName = ((TypeName) memberType).getName(); + TypeDefinition memberTypeDefinition = typeRegistry.getTypeOrNull(memberTypeName); + if (!(memberTypeDefinition instanceof ObjectTypeDefinition)) { + errors.add(new UnionTypeError(unionTypeDefinition, format("The member types of a Union type must all be Object base types. member type '%s' in Union '%s' is invalid.", ((TypeName) memberType).getName(), unionTypeDefinition.getName()))); + continue; + } + + if (typeNames.contains(memberTypeName)) { + errors.add(new UnionTypeError(unionTypeDefinition, format("member type '%s' in Union '%s' is not unique. The member types of a Union type must be unique.", ((TypeName) memberType).getName(), unionTypeDefinition.getName()))); + continue; + } + typeNames.add(memberTypeName); + } + } + + private void assertTypeName(UnionTypeDefinition unionTypeDefinition, List errors) { + if (unionTypeDefinition.getName().length() >= 2 && unionTypeDefinition.getName().startsWith("__")) { + errors.add((new UnionTypeError(unionTypeDefinition, String.format("'%s' must not begin with '__', which is reserved by GraphQL introspection.", unionTypeDefinition.getName())))); + } + } + +} diff --git a/src/main/java/graphql/schema/idl/UnionWiringEnvironment.java b/src/main/java/graphql/schema/idl/UnionWiringEnvironment.java index bde774b7f4..54eba63d1a 100644 --- a/src/main/java/graphql/schema/idl/UnionWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/UnionWiringEnvironment.java @@ -2,8 +2,10 @@ import graphql.PublicApi; import graphql.language.UnionTypeDefinition; +import org.jspecify.annotations.NullMarked; @PublicApi +@NullMarked public class UnionWiringEnvironment extends WiringEnvironment { private final UnionTypeDefinition unionTypeDefinition; @@ -16,4 +18,4 @@ public class UnionWiringEnvironment extends WiringEnvironment { public UnionTypeDefinition getUnionTypeDefinition() { return unionTypeDefinition; } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/idl/WiringEnvironment.java b/src/main/java/graphql/schema/idl/WiringEnvironment.java index 2af0f0061b..76f5e89db2 100644 --- a/src/main/java/graphql/schema/idl/WiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/WiringEnvironment.java @@ -1,5 +1,11 @@ package graphql.schema.idl; + +import graphql.PublicApi; +import org.jspecify.annotations.NullMarked; + +@PublicApi +@NullMarked abstract class WiringEnvironment { private final TypeDefinitionRegistry registry; diff --git a/src/main/java/graphql/schema/idl/errors/BaseError.java b/src/main/java/graphql/schema/idl/errors/BaseError.java index 902c930223..ec3058a056 100644 --- a/src/main/java/graphql/schema/idl/errors/BaseError.java +++ b/src/main/java/graphql/schema/idl/errors/BaseError.java @@ -4,12 +4,14 @@ import graphql.GraphQLError; import graphql.GraphQLException; import graphql.GraphqlErrorHelper; +import graphql.Internal; import graphql.language.Node; import graphql.language.SourceLocation; import java.util.Collections; import java.util.List; +@Internal class BaseError extends GraphQLException implements GraphQLError { protected static final SourceLocation NO_WHERE = new SourceLocation(-1, -1); diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java index e933d035a9..70ef1930e2 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Node; import static java.lang.String.format; +@Internal public class DirectiveIllegalArgumentTypeError extends BaseError { public static final String DUPLICATED_KEYS_MESSAGE = "Argument value object keys [%s] appear more than once."; @@ -14,7 +16,6 @@ public class DirectiveIllegalArgumentTypeError extends BaseError { public static final String NOT_A_VALID_SCALAR_LITERAL_MESSAGE = "Argument value is not a valid value of scalar '%s'."; public static final String MISSING_REQUIRED_FIELD_MESSAGE = "Missing required field '%s'."; public static final String EXPECTED_NON_NULL_MESSAGE = "Argument value is 'null', expected a non-null value."; - public static final String EXPECTED_LIST_MESSAGE = "Argument value is '%s', expected a list value."; public static final String EXPECTED_OBJECT_MESSAGE = "Argument value is of type '%s', expected an Object value."; public DirectiveIllegalArgumentTypeError(Node element, String elementName, String directiveName, String argumentName, String detailedMessaged) { diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalLocationError.java b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalLocationError.java index 2b576978a4..c3a3aa09f4 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalLocationError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalLocationError.java @@ -1,10 +1,12 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.DirectiveDefinition; import graphql.language.Node; import static java.lang.String.format; +@Internal public class DirectiveIllegalLocationError extends BaseError { public DirectiveIllegalLocationError(Node element, String elementName, String directiveName, String locationName) { diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalReferenceError.java b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalReferenceError.java new file mode 100644 index 0000000000..44fb541e53 --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalReferenceError.java @@ -0,0 +1,15 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.DirectiveDefinition; +import graphql.language.NamedNode; + +@Internal +public class DirectiveIllegalReferenceError extends BaseError { + public DirectiveIllegalReferenceError(DirectiveDefinition directive, NamedNode location) { + super(directive, + String.format("'%s' must not reference itself on '%s''%s'", + directive.getName(), location.getName(), lineCol(location) + )); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveMissingNonNullArgumentError.java b/src/main/java/graphql/schema/idl/errors/DirectiveMissingNonNullArgumentError.java index e24397afef..01dd7c6e6b 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveMissingNonNullArgumentError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveMissingNonNullArgumentError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Node; import static java.lang.String.format; +@Internal public class DirectiveMissingNonNullArgumentError extends BaseError { public DirectiveMissingNonNullArgumentError(Node element, String elementName, String directiveName, String argumentName) { diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/DirectiveRedefinitionError.java index ff80a33d71..878a728f5b 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveRedefinitionError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.DirectiveDefinition; import static java.lang.String.format; +@Internal public class DirectiveRedefinitionError extends BaseError { public DirectiveRedefinitionError(DirectiveDefinition newEntry, DirectiveDefinition oldEntry) { diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveUndeclaredError.java b/src/main/java/graphql/schema/idl/errors/DirectiveUndeclaredError.java index 7814fb9b45..776da6719b 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveUndeclaredError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveUndeclaredError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Node; import static java.lang.String.format; +@Internal public class DirectiveUndeclaredError extends BaseError { public DirectiveUndeclaredError(Node element, String elementName, String directiveName) { diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveUnknownArgumentError.java b/src/main/java/graphql/schema/idl/errors/DirectiveUnknownArgumentError.java index 7befa92612..69e90904a3 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveUnknownArgumentError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveUnknownArgumentError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Node; import static java.lang.String.format; +@Internal public class DirectiveUnknownArgumentError extends BaseError { public DirectiveUnknownArgumentError(Node element, String elementName, String directiveName, String argumentName) { diff --git a/src/main/java/graphql/schema/idl/errors/IllegalNameError.java b/src/main/java/graphql/schema/idl/errors/IllegalNameError.java new file mode 100644 index 0000000000..2733519b22 --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/IllegalNameError.java @@ -0,0 +1,14 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.NamedNode; + +@Internal +public class IllegalNameError extends BaseError { + public IllegalNameError(NamedNode directiveDefinition) { + super(directiveDefinition, + String.format("'%s''%s' must not begin with '__', which is reserved by GraphQL introspection.", + directiveDefinition.getName(), lineCol(directiveDefinition) + )); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentNotOptionalError.java b/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentNotOptionalError.java index 5f28f3e0ae..1303b5ef2f 100644 --- a/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentNotOptionalError.java +++ b/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentNotOptionalError.java @@ -1,14 +1,16 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.FieldDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InterfaceTypeDefinition; -import graphql.language.ObjectTypeDefinition; import static java.lang.String.format; +@Internal public class InterfaceFieldArgumentNotOptionalError extends BaseError { - public InterfaceFieldArgumentNotOptionalError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectArgStr) { - super(objectTypeDef, format("The %s type '%s' %s field '%s' defines an additional non-optional argument '%s' which is not allowed because field is also defined in interface '%s' %s.", - typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), objectArgStr, interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); + public InterfaceFieldArgumentNotOptionalError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectArgStr) { + super(typeDefinition, format("The %s type '%s' %s field '%s' defines an additional non-optional argument '%s' which is not allowed because field is also defined in interface '%s' %s.", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), objectFieldDef.getName(), objectArgStr, interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } } diff --git a/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentRedefinitionError.java index 8549018fa4..5ba558a8fb 100644 --- a/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/InterfaceFieldArgumentRedefinitionError.java @@ -1,15 +1,17 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.FieldDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InterfaceTypeDefinition; -import graphql.language.ObjectTypeDefinition; import static java.lang.String.format; +@Internal public class InterfaceFieldArgumentRedefinitionError extends BaseError { - public InterfaceFieldArgumentRedefinitionError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectArgStr, String interfaceArgStr) { - super(objectTypeDef, format("The %s type '%s' %s has tried to redefine field '%s' arguments defined via interface '%s' %s from '%s' to '%s", - typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceArgStr, objectArgStr)); + public InterfaceFieldArgumentRedefinitionError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectArgStr, String interfaceArgStr) { + super(typeDefinition, format("The %s type '%s' %s has tried to redefine field '%s' arguments defined via interface '%s' %s from '%s' to '%s", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceArgStr, objectArgStr)); } } diff --git a/src/main/java/graphql/schema/idl/errors/InterfaceFieldRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/InterfaceFieldRedefinitionError.java index 53e579e849..b8a1e582ef 100644 --- a/src/main/java/graphql/schema/idl/errors/InterfaceFieldRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/InterfaceFieldRedefinitionError.java @@ -1,14 +1,16 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.FieldDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InterfaceTypeDefinition; -import graphql.language.ObjectTypeDefinition; import static java.lang.String.format; +@Internal public class InterfaceFieldRedefinitionError extends BaseError { - public InterfaceFieldRedefinitionError(String typeOfType, ObjectTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectFieldType, String interfaceFieldType) { - super(objectType, format("The %s type '%s' %s has tried to redefine field '%s' defined via interface '%s' %s from '%s' to '%s'", - typeOfType, objectType.getName(), lineCol(objectType), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceFieldType, objectFieldType)); + public InterfaceFieldRedefinitionError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectFieldType, String interfaceFieldType) { + super(typeDefinition, format("The %s type '%s' %s has tried to redefine field '%s' defined via interface '%s' %s from '%s' to '%s'", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceFieldType, objectFieldType)); } } diff --git a/src/main/java/graphql/schema/idl/errors/InterfaceImplementedMoreThanOnceError.java b/src/main/java/graphql/schema/idl/errors/InterfaceImplementedMoreThanOnceError.java new file mode 100644 index 0000000000..97e64f983d --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/InterfaceImplementedMoreThanOnceError.java @@ -0,0 +1,15 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.ImplementingTypeDefinition; +import graphql.language.InterfaceTypeDefinition; + +import static java.lang.String.format; + +@Internal +public class InterfaceImplementedMoreThanOnceError extends BaseError { + public InterfaceImplementedMoreThanOnceError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition implementedInterface) { + super(typeDefinition, format("The %s type '%s' %s can only implement '%s' %s once.", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), implementedInterface.getName(), lineCol(implementedInterface))); + } +} diff --git a/src/main/java/graphql/schema/idl/errors/InterfaceImplementingItselfError.java b/src/main/java/graphql/schema/idl/errors/InterfaceImplementingItselfError.java new file mode 100644 index 0000000000..63925366ef --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/InterfaceImplementingItselfError.java @@ -0,0 +1,14 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.ImplementingTypeDefinition; + +import static java.lang.String.format; + +@Internal +public class InterfaceImplementingItselfError extends BaseError { + public InterfaceImplementingItselfError(String typeOfType, ImplementingTypeDefinition typeDefinition) { + super(typeDefinition, format("The %s type '%s' %s cannot implement itself", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition))); + } +} diff --git a/src/main/java/graphql/schema/idl/errors/InterfaceWithCircularImplementationHierarchyError.java b/src/main/java/graphql/schema/idl/errors/InterfaceWithCircularImplementationHierarchyError.java new file mode 100644 index 0000000000..ed7e12cbe5 --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/InterfaceWithCircularImplementationHierarchyError.java @@ -0,0 +1,17 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.ImplementingTypeDefinition; +import graphql.language.InterfaceTypeDefinition; + +import static java.lang.String.format; + +@Internal +public class InterfaceWithCircularImplementationHierarchyError extends BaseError { + public InterfaceWithCircularImplementationHierarchyError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition implementedInterface) { + super(typeDefinition, format("The %s type '%s' %s cannot implement '%s' %s as this would result in a circular reference", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), + implementedInterface.getName(), lineCol(implementedInterface) + )); + } +} diff --git a/src/main/java/graphql/schema/idl/errors/InvalidDeprecationDirectiveError.java b/src/main/java/graphql/schema/idl/errors/InvalidDeprecationDirectiveError.java deleted file mode 100644 index 288654d0b8..0000000000 --- a/src/main/java/graphql/schema/idl/errors/InvalidDeprecationDirectiveError.java +++ /dev/null @@ -1,27 +0,0 @@ -package graphql.schema.idl.errors; - -import graphql.language.EnumValueDefinition; -import graphql.language.FieldDefinition; -import graphql.language.InputValueDefinition; -import graphql.language.TypeDefinition; - -import static java.lang.String.format; - -public class InvalidDeprecationDirectiveError extends BaseError { - - public InvalidDeprecationDirectiveError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition) { - super(typeDefinition, format("The type '%s' with field '%s' %s has declared an invalid deprecation directive. Its must be @deprecated(reason : \"xyz\")", - typeDefinition.getName(), fieldDefinition.getName(), lineCol(typeDefinition))); - } - - public InvalidDeprecationDirectiveError(TypeDefinition typeDefinition, InputValueDefinition inputValueDefinition) { - super(typeDefinition, format("The type '%s' with input value '%s' %s has declared an invalid deprecation directive. Its must be @deprecated(reason : \"xyz\")", - typeDefinition.getName(), inputValueDefinition.getName(), lineCol(typeDefinition))); - } - - public InvalidDeprecationDirectiveError(TypeDefinition typeDefinition, EnumValueDefinition enumValueDefinition) { - super(typeDefinition, format("The %s type with enum value '%s' %s has declared an invalid deprecation directive. Its must be @deprecated(reason : \"xyz\")", - typeDefinition.getName(), enumValueDefinition.getName(), lineCol(typeDefinition))); - } - -} diff --git a/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldArgumentsError.java b/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldArgumentsError.java index 1ab6126609..5c33f6d513 100644 --- a/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldArgumentsError.java +++ b/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldArgumentsError.java @@ -1,14 +1,16 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.FieldDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InterfaceTypeDefinition; -import graphql.language.ObjectTypeDefinition; import static java.lang.String.format; +@Internal public class MissingInterfaceFieldArgumentsError extends BaseError { - public MissingInterfaceFieldArgumentsError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef) { - super(objectTypeDef, format("The %s type '%s' %s field '%s' does not have the same number of arguments as specified via interface '%s' %s", - typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); + public MissingInterfaceFieldArgumentsError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef) { + super(typeDefinition, format("The %s type '%s' %s field '%s' does not have the same number of arguments as specified via interface '%s' %s", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } } diff --git a/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldError.java b/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldError.java index 9f04a92630..e3761b4d56 100644 --- a/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldError.java +++ b/src/main/java/graphql/schema/idl/errors/MissingInterfaceFieldError.java @@ -1,13 +1,15 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.FieldDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InterfaceTypeDefinition; -import graphql.language.ObjectTypeDefinition; import static java.lang.String.format; +@Internal public class MissingInterfaceFieldError extends BaseError { - public MissingInterfaceFieldError(String typeOfType, ObjectTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition interfaceFieldDef) { + public MissingInterfaceFieldError(String typeOfType, ImplementingTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition interfaceFieldDef) { super(objectType, format("The %s type '%s' %s does not have a field '%s' required via interface '%s' %s", typeOfType, objectType.getName(), lineCol(objectType), interfaceFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } diff --git a/src/main/java/graphql/schema/idl/errors/MissingInterfaceTypeError.java b/src/main/java/graphql/schema/idl/errors/MissingInterfaceTypeError.java index 2c69566dd6..56870b5715 100644 --- a/src/main/java/graphql/schema/idl/errors/MissingInterfaceTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/MissingInterfaceTypeError.java @@ -1,10 +1,12 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.TypeDefinition; import graphql.language.TypeName; import static java.lang.String.format; +@Internal public class MissingInterfaceTypeError extends BaseError { public MissingInterfaceTypeError(String typeOfType, TypeDefinition typeDefinition, TypeName typeName) { diff --git a/src/main/java/graphql/schema/idl/errors/MissingScalarImplementationError.java b/src/main/java/graphql/schema/idl/errors/MissingScalarImplementationError.java index f154eb6939..b6b963fb2f 100644 --- a/src/main/java/graphql/schema/idl/errors/MissingScalarImplementationError.java +++ b/src/main/java/graphql/schema/idl/errors/MissingScalarImplementationError.java @@ -1,7 +1,10 @@ package graphql.schema.idl.errors; +import graphql.Internal; + import static java.lang.String.format; +@Internal public class MissingScalarImplementationError extends BaseError { public MissingScalarImplementationError(String scalarName) { diff --git a/src/main/java/graphql/schema/idl/errors/MissingTransitiveInterfaceError.java b/src/main/java/graphql/schema/idl/errors/MissingTransitiveInterfaceError.java new file mode 100644 index 0000000000..f2b7e9423f --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/MissingTransitiveInterfaceError.java @@ -0,0 +1,15 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.ImplementingTypeDefinition; +import graphql.language.InterfaceTypeDefinition; + +import static java.lang.String.format; + +@Internal +public class MissingTransitiveInterfaceError extends BaseError { + public MissingTransitiveInterfaceError(String typeOfType, ImplementingTypeDefinition typeDefinition, InterfaceTypeDefinition implementedInterface, InterfaceTypeDefinition missingInterface) { + super(typeDefinition, format("The %s type '%s' %s must implement '%s' %s because it is implemented by '%s' %s", + typeOfType, typeDefinition.getName(), lineCol(typeDefinition), missingInterface.getName(), lineCol(missingInterface), implementedInterface.getName(), lineCol(implementedInterface))); + } +} diff --git a/src/main/java/graphql/schema/idl/errors/MissingTypeError.java b/src/main/java/graphql/schema/idl/errors/MissingTypeError.java index e1fe76ac47..d037e471c5 100644 --- a/src/main/java/graphql/schema/idl/errors/MissingTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/MissingTypeError.java @@ -1,11 +1,13 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Node; import graphql.language.TypeDefinition; import graphql.language.TypeName; import static java.lang.String.format; +@Internal public class MissingTypeError extends BaseError { public MissingTypeError(String typeOfType, TypeDefinition typeDefinition, TypeName typeName) { @@ -17,4 +19,9 @@ public MissingTypeError(String typeOfType, Node node, String name, TypeName type super(node, format("The %s type '%s' is not present when resolving type '%s' %s", typeOfType, typeName.getName(), name, lineCol(node))); } + + public MissingTypeError(String typeOfType, Node node,String name) { + super(node, format("The %s type is not present when resolving type '%s' %s", + typeOfType, name, lineCol(node))); + } } diff --git a/src/main/java/graphql/schema/idl/errors/MissingTypeResolverError.java b/src/main/java/graphql/schema/idl/errors/MissingTypeResolverError.java index 7def130980..dbf00b8f39 100644 --- a/src/main/java/graphql/schema/idl/errors/MissingTypeResolverError.java +++ b/src/main/java/graphql/schema/idl/errors/MissingTypeResolverError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class MissingTypeResolverError extends BaseError { public MissingTypeResolverError(TypeDefinition typeDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/NonSDLDefinitionError.java b/src/main/java/graphql/schema/idl/errors/NonSDLDefinitionError.java index 2ddefec03d..fb41b7b7d3 100644 --- a/src/main/java/graphql/schema/idl/errors/NonSDLDefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/NonSDLDefinitionError.java @@ -1,13 +1,15 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Definition; import static java.lang.String.format; +@Internal public class NonSDLDefinitionError extends BaseError { public NonSDLDefinitionError(Definition definition) { - super(definition, format("The schema definition text contains a non schema definition language (SDL) element '%s'", - definition.getClass().getSimpleName(), lineCol(definition), lineCol(definition))); + super(definition, format("%s The schema definition text contains a non schema definition language (SDL) element '%s'", + lineCol(definition), definition.getClass().getSimpleName())); } } diff --git a/src/main/java/graphql/schema/idl/errors/NonUniqueArgumentError.java b/src/main/java/graphql/schema/idl/errors/NonUniqueArgumentError.java index 3f122ef34b..990826ac58 100644 --- a/src/main/java/graphql/schema/idl/errors/NonUniqueArgumentError.java +++ b/src/main/java/graphql/schema/idl/errors/NonUniqueArgumentError.java @@ -1,5 +1,6 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.EnumValueDefinition; import graphql.language.FieldDefinition; import graphql.language.InputValueDefinition; @@ -7,6 +8,7 @@ import static java.lang.String.format; +@Internal public class NonUniqueArgumentError extends BaseError { public NonUniqueArgumentError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition, String argumentName) { diff --git a/src/main/java/graphql/schema/idl/errors/NonUniqueDirectiveError.java b/src/main/java/graphql/schema/idl/errors/NonUniqueDirectiveError.java index aa9b859387..9845973047 100644 --- a/src/main/java/graphql/schema/idl/errors/NonUniqueDirectiveError.java +++ b/src/main/java/graphql/schema/idl/errors/NonUniqueDirectiveError.java @@ -1,5 +1,6 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.EnumValueDefinition; import graphql.language.FieldDefinition; import graphql.language.InputValueDefinition; @@ -7,6 +8,7 @@ import static java.lang.String.format; +@Internal public class NonUniqueDirectiveError extends BaseError { public NonUniqueDirectiveError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition, String directiveName) { diff --git a/src/main/java/graphql/schema/idl/errors/NonUniqueNameError.java b/src/main/java/graphql/schema/idl/errors/NonUniqueNameError.java index 4dee4e8f19..ec7b57266c 100644 --- a/src/main/java/graphql/schema/idl/errors/NonUniqueNameError.java +++ b/src/main/java/graphql/schema/idl/errors/NonUniqueNameError.java @@ -1,5 +1,6 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.DirectiveDefinition; import graphql.language.EnumValueDefinition; import graphql.language.FieldDefinition; @@ -10,6 +11,7 @@ import static java.lang.String.format; +@Internal public class NonUniqueNameError extends BaseError { public NonUniqueNameError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/NotAnInputTypeError.java b/src/main/java/graphql/schema/idl/errors/NotAnInputTypeError.java index 728bab3df1..f51198b472 100644 --- a/src/main/java/graphql/schema/idl/errors/NotAnInputTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/NotAnInputTypeError.java @@ -1,10 +1,12 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Type; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class NotAnInputTypeError extends BaseError { public NotAnInputTypeError(Type rawType, TypeDefinition typeDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/NotAnOutputTypeError.java b/src/main/java/graphql/schema/idl/errors/NotAnOutputTypeError.java index da7c1dbe6b..1869d2ed4d 100644 --- a/src/main/java/graphql/schema/idl/errors/NotAnOutputTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/NotAnOutputTypeError.java @@ -1,10 +1,12 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Type; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class NotAnOutputTypeError extends BaseError { public NotAnOutputTypeError(Type rawType, TypeDefinition typeDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/OperationRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/OperationRedefinitionError.java index 1c47e6f4af..e9c27ee33a 100644 --- a/src/main/java/graphql/schema/idl/errors/OperationRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/OperationRedefinitionError.java @@ -1,10 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.OperationTypeDefinition; -import graphql.language.SchemaDefinition; import static java.lang.String.format; +@Internal public class OperationRedefinitionError extends BaseError { public OperationRedefinitionError(OperationTypeDefinition oldEntry, OperationTypeDefinition newEntry) { diff --git a/src/main/java/graphql/schema/idl/errors/OperationTypesMustBeObjects.java b/src/main/java/graphql/schema/idl/errors/OperationTypesMustBeObjects.java index 1e56e951a1..43ea40d239 100644 --- a/src/main/java/graphql/schema/idl/errors/OperationTypesMustBeObjects.java +++ b/src/main/java/graphql/schema/idl/errors/OperationTypesMustBeObjects.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.OperationTypeDefinition; import static java.lang.String.format; +@Internal public class OperationTypesMustBeObjects extends BaseError { public OperationTypesMustBeObjects(OperationTypeDefinition op) { diff --git a/src/main/java/graphql/schema/idl/errors/QueryOperationMissingError.java b/src/main/java/graphql/schema/idl/errors/QueryOperationMissingError.java index a873e3989a..7ce1066ed4 100644 --- a/src/main/java/graphql/schema/idl/errors/QueryOperationMissingError.java +++ b/src/main/java/graphql/schema/idl/errors/QueryOperationMissingError.java @@ -1,5 +1,8 @@ package graphql.schema.idl.errors; +import graphql.Internal; + +@Internal public class QueryOperationMissingError extends BaseError { public QueryOperationMissingError() { diff --git a/src/main/java/graphql/schema/idl/errors/SchemaMissingError.java b/src/main/java/graphql/schema/idl/errors/SchemaMissingError.java index 7f4d455c9a..1da631980b 100644 --- a/src/main/java/graphql/schema/idl/errors/SchemaMissingError.java +++ b/src/main/java/graphql/schema/idl/errors/SchemaMissingError.java @@ -1,5 +1,8 @@ package graphql.schema.idl.errors; +import graphql.Internal; + +@Internal public class SchemaMissingError extends BaseError { public SchemaMissingError() { diff --git a/src/main/java/graphql/schema/idl/errors/SchemaProblem.java b/src/main/java/graphql/schema/idl/errors/SchemaProblem.java index 77c0e0f59a..817a54d5b5 100644 --- a/src/main/java/graphql/schema/idl/errors/SchemaProblem.java +++ b/src/main/java/graphql/schema/idl/errors/SchemaProblem.java @@ -2,6 +2,7 @@ import graphql.GraphQLError; import graphql.GraphQLException; +import graphql.PublicApi; import graphql.schema.idl.SchemaParser; import java.util.ArrayList; @@ -12,6 +13,7 @@ * or {@link graphql.schema.idl.SchemaGenerator} classes and they are reported via this * exception as a list of {@link GraphQLError}s */ +@PublicApi public class SchemaProblem extends GraphQLException { private final List errors; diff --git a/src/main/java/graphql/schema/idl/errors/SchemaRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/SchemaRedefinitionError.java index c7b1afc29c..fa9638ceb2 100644 --- a/src/main/java/graphql/schema/idl/errors/SchemaRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/SchemaRedefinitionError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.SchemaDefinition; import static java.lang.String.format; +@Internal public class SchemaRedefinitionError extends BaseError { public SchemaRedefinitionError(SchemaDefinition oldEntry, SchemaDefinition newEntry) { diff --git a/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java b/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java new file mode 100644 index 0000000000..4c92bffd6d --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java @@ -0,0 +1,17 @@ +package graphql.schema.idl.errors; + +import graphql.GraphQLException; +import graphql.PublicApi; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.TypeRuntimeWiring; + +/** + * An exception that is throw when {@link RuntimeWiring.Builder#strictMode(boolean)} or {@link TypeRuntimeWiring.Builder#strictMode(boolean)} is true and + * something gets redefined. + */ +@PublicApi +public class StrictModeWiringException extends GraphQLException { + public StrictModeWiringException(String msg) { + super(msg); + } +} diff --git a/src/main/java/graphql/schema/idl/errors/TypeExtensionDirectiveRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/TypeExtensionDirectiveRedefinitionError.java index 3c63b4fac4..1a1058f934 100644 --- a/src/main/java/graphql/schema/idl/errors/TypeExtensionDirectiveRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/TypeExtensionDirectiveRedefinitionError.java @@ -1,10 +1,12 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.Directive; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class TypeExtensionDirectiveRedefinitionError extends BaseError { public TypeExtensionDirectiveRedefinitionError(TypeDefinition typeExtensionDefinition, Directive directive) { diff --git a/src/main/java/graphql/schema/idl/errors/TypeExtensionEnumValueRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/TypeExtensionEnumValueRedefinitionError.java index 929ab8a6f3..d783ab9ea9 100644 --- a/src/main/java/graphql/schema/idl/errors/TypeExtensionEnumValueRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/TypeExtensionEnumValueRedefinitionError.java @@ -1,10 +1,12 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.EnumValueDefinition; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class TypeExtensionEnumValueRedefinitionError extends BaseError { public TypeExtensionEnumValueRedefinitionError(TypeDefinition typeDefinition, EnumValueDefinition enumValueDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/TypeExtensionFieldRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/TypeExtensionFieldRedefinitionError.java index e3315810e0..aecd819557 100644 --- a/src/main/java/graphql/schema/idl/errors/TypeExtensionFieldRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/TypeExtensionFieldRedefinitionError.java @@ -1,5 +1,6 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.AbstractNode; import graphql.language.FieldDefinition; import graphql.language.InputValueDefinition; @@ -7,6 +8,7 @@ import static java.lang.String.format; +@Internal public class TypeExtensionFieldRedefinitionError extends BaseError { public TypeExtensionFieldRedefinitionError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/TypeExtensionMissingBaseTypeError.java b/src/main/java/graphql/schema/idl/errors/TypeExtensionMissingBaseTypeError.java index 6ca9f67aa6..f72db0c3cb 100644 --- a/src/main/java/graphql/schema/idl/errors/TypeExtensionMissingBaseTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/TypeExtensionMissingBaseTypeError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class TypeExtensionMissingBaseTypeError extends BaseError { public TypeExtensionMissingBaseTypeError(TypeDefinition typeExtensionDefinition) { diff --git a/src/main/java/graphql/schema/idl/errors/TypeRedefinitionError.java b/src/main/java/graphql/schema/idl/errors/TypeRedefinitionError.java index a2fd16a9b0..860bdae881 100644 --- a/src/main/java/graphql/schema/idl/errors/TypeRedefinitionError.java +++ b/src/main/java/graphql/schema/idl/errors/TypeRedefinitionError.java @@ -1,9 +1,11 @@ package graphql.schema.idl.errors; +import graphql.Internal; import graphql.language.TypeDefinition; import static java.lang.String.format; +@Internal public class TypeRedefinitionError extends BaseError { public TypeRedefinitionError(TypeDefinition newEntry, TypeDefinition oldEntry) { diff --git a/src/main/java/graphql/schema/idl/errors/UnionTypeError.java b/src/main/java/graphql/schema/idl/errors/UnionTypeError.java new file mode 100644 index 0000000000..86e8f6148c --- /dev/null +++ b/src/main/java/graphql/schema/idl/errors/UnionTypeError.java @@ -0,0 +1,11 @@ +package graphql.schema.idl.errors; + +import graphql.Internal; +import graphql.language.Node; + +@Internal +public class UnionTypeError extends BaseError { + public UnionTypeError(Node node, String msg) { + super(node, msg); + } +} diff --git a/src/main/java/graphql/schema/impl/GraphQLTypeCollectingVisitor.java b/src/main/java/graphql/schema/impl/GraphQLTypeCollectingVisitor.java new file mode 100644 index 0000000000..e6ceb76e3c --- /dev/null +++ b/src/main/java/graphql/schema/impl/GraphQLTypeCollectingVisitor.java @@ -0,0 +1,186 @@ +package graphql.schema.impl; + +import com.google.common.collect.ImmutableMap; +import graphql.AssertException; +import graphql.Internal; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeReference; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.TreeMap; +import java.util.function.Supplier; + +import static graphql.schema.GraphQLTypeUtil.unwrapAllAs; +import static graphql.util.TraversalControl.CONTINUE; +import static java.lang.String.format; + +@Internal +public class GraphQLTypeCollectingVisitor extends GraphQLTypeVisitorStub { + + private final Map result = new LinkedHashMap<>(); + private final Map indirectStrongReferences = new LinkedHashMap<>(); + + public GraphQLTypeCollectingVisitor() { + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext context) { + assertTypeUniqueness(node, result); + save(node.getName(), node); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { + assertTypeUniqueness(node, result); + save(node.getName(), node); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + if (isNotTypeReference(node.getName())) { + assertTypeUniqueness(node, result); + } else { + save(node.getName(), node); + } + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context) { + if (isNotTypeReference(node.getName())) { + assertTypeUniqueness(node, result); + } else { + save(node.getName(), node); + } + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context) { + if (isNotTypeReference(node.getName())) { + assertTypeUniqueness(node, result); + } else { + save(node.getName(), node); + } + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext context) { + assertTypeUniqueness(node, result); + save(node.getName(), node); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + saveIndirectStrongReference(node::getType); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + saveIndirectStrongReference(node::getType); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context) { + saveIndirectStrongReference(node::getType); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + saveIndirectStrongReference(node::getType); + return CONTINUE; + } + + private void saveIndirectStrongReference(Supplier typeSupplier) { + GraphQLNamedType type = unwrapAllAs(typeSupplier.get()); + if (!(type instanceof GraphQLTypeReference)) { + indirectStrongReferences.put(type.getName(), type); + } + } + + + private boolean isNotTypeReference(String name) { + return result.containsKey(name) && !(result.get(name) instanceof GraphQLTypeReference); + } + + private void save(String name, GraphQLNamedType type) { + result.put(name, type); + } + + + /* + From https://spec.graphql.org/October2021/#sec-Type-System + + All types within a GraphQL schema must have unique names. No two provided types may have the same name. + No provided type may have a name which conflicts with any built in types (including Scalar and Introspection types). + + Enforcing this helps avoid problems later down the track fo example https://github.com/graphql-java/graphql-java/issues/373 + */ + private void assertTypeUniqueness(GraphQLNamedType type, Map result) { + GraphQLType existingType = result.get(type.getName()); + // do we have an existing definition + if (existingType != null) { + // type references are ok + if (!(existingType instanceof GraphQLTypeReference || type instanceof GraphQLTypeReference)) { + assertUniqueTypeObjects(type, existingType); + } + } + } + + private void assertUniqueTypeObjects(GraphQLNamedType type, GraphQLType existingType) { + // object comparison here is deliberate + if (existingType != type) { + throw new AssertException(format("All types within a GraphQL schema must have unique names. No two provided types may have the same name.\n" + + "No provided type may have a name which conflicts with any built in types (including Scalar and Introspection types).\n" + + "You have redefined the type '%s' from being a '%s' to a '%s'", + type.getName(), existingType.getClass().getSimpleName(), type.getClass().getSimpleName())); + } + } + + public ImmutableMap getResult() { + Map types = new TreeMap<>(fixDanglingReplacedTypes(result)); + return ImmutableMap.copyOf(types); + } + + /** + * It's possible for certain schema edits to create a situation where a field / arg / input field had a type reference, then + * it got replaced with an actual strong reference and then the schema gets edited such that the only reference + * to that type is the replaced strong reference. This edge case means that the replaced reference can be + * missed if it's the only way to get to that type because this visitor asks for the children as original type, + * e.g. the type reference and not the replaced reference. + * + * @param visitedTypes the types collected by this visitor + * + * @return a fixed up map where the only + */ + private Map fixDanglingReplacedTypes(Map visitedTypes) { + for (GraphQLNamedType indirectStrongReference : indirectStrongReferences.values()) { + String typeName = indirectStrongReference.getName(); + visitedTypes.putIfAbsent(typeName, indirectStrongReference); + } + return visitedTypes; + } +} diff --git a/src/main/java/graphql/schema/impl/MultiReadOnlyGraphQLTypeVisitor.java b/src/main/java/graphql/schema/impl/MultiReadOnlyGraphQLTypeVisitor.java new file mode 100644 index 0000000000..d3ca059fc2 --- /dev/null +++ b/src/main/java/graphql/schema/impl/MultiReadOnlyGraphQLTypeVisitor.java @@ -0,0 +1,225 @@ +package graphql.schema.impl; + +import graphql.Assert; +import graphql.Internal; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputFieldsContainer; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLModifiedType; +import graphql.schema.GraphQLNonNull; +import graphql.schema.GraphQLNullableType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeReference; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.GraphQLUnionType; +import graphql.schema.GraphQLUnmodifiedType; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.List; + +/** + * A delegating type visitor that allows you to call N visitors in a list + * and always continues via {@link TraversalControl#CONTINUE} + */ +@Internal +public class MultiReadOnlyGraphQLTypeVisitor implements GraphQLTypeVisitor { + + private final List visitors; + + public MultiReadOnlyGraphQLTypeVisitor(List visitors) { + this.visitors = visitors; + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLAppliedDirective(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLAppliedDirectiveArgument(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLArgument(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLInterfaceType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLEnumType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLEnumValueDefinition(GraphQLEnumValueDefinition node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLEnumValueDefinition(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLFieldDefinition(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLDirective(GraphQLDirective node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLDirective(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLInputObjectField(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLInputObjectType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLList(GraphQLList node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLList(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLNonNull(GraphQLNonNull node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLNonNull(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLObjectType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLScalarType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLTypeReference(GraphQLTypeReference node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLTypeReference(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLUnionType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitBackRef(TraverserContext context) { + visitors.forEach(v -> v.visitBackRef(context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLModifiedType(GraphQLModifiedType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLModifiedType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLCompositeType(GraphQLCompositeType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLCompositeType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLDirectiveContainer(GraphQLDirectiveContainer node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLDirectiveContainer(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldsContainer(GraphQLFieldsContainer node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLFieldsContainer(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputFieldsContainer(GraphQLInputFieldsContainer node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLInputFieldsContainer(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputType(GraphQLInputType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLInputType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLNullableType(GraphQLNullableType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLNullableType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLOutputType(GraphQLOutputType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLOutputType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLUnmodifiedType(GraphQLUnmodifiedType node, TraverserContext context) { + visitors.forEach(v -> v.visitGraphQLUnmodifiedType(node, context)); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl changeNode(TraverserContext context, GraphQLSchemaElement newChangedNode) { + return Assert.assertShouldNeverHappen("This must be a read only operation"); + } + + @Override + public TraversalControl deleteNode(TraverserContext context) { + return Assert.assertShouldNeverHappen("This must be a read only operation"); + } + + @Override + public TraversalControl insertAfter(TraverserContext context, GraphQLSchemaElement toInsertAfter) { + return Assert.assertShouldNeverHappen("This must be a read only operation"); + } + + @Override + public TraversalControl insertBefore(TraverserContext context, GraphQLSchemaElement toInsertBefore) { + return Assert.assertShouldNeverHappen("This must be a read only operation"); + } +} diff --git a/src/main/java/graphql/schema/impl/SchemaUtil.java b/src/main/java/graphql/schema/impl/SchemaUtil.java new file mode 100644 index 0000000000..66b06f2b83 --- /dev/null +++ b/src/main/java/graphql/schema/impl/SchemaUtil.java @@ -0,0 +1,132 @@ +package graphql.schema.impl; + + +import com.google.common.collect.ImmutableMap; +import graphql.Internal; +import graphql.execution.MissingRootTypeException; +import graphql.language.OperationDefinition; +import graphql.schema.GraphQLImplementingType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeResolvingVisitor; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.SchemaTraverser; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.language.OperationDefinition.Operation.MUTATION; +import static graphql.language.OperationDefinition.Operation.QUERY; +import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION; + +@Internal +public class SchemaUtil { + + /** + * Called to visit a partially built schema (during {@link GraphQLSchema} build phases) with a set of visitors + * + * Each visitor is expected to hold its own side effects that might be last used to construct a full schema + * + * @param partiallyBuiltSchema the partially built schema + * @param visitors the visitors to call + */ + + public static void visitPartiallySchema(final GraphQLSchema partiallyBuiltSchema, GraphQLTypeVisitor... visitors) { + List roots = new ArrayList<>(); + roots.add(partiallyBuiltSchema.getQueryType()); + + if (partiallyBuiltSchema.isSupportingMutations()) { + roots.add(partiallyBuiltSchema.getMutationType()); + } + + if (partiallyBuiltSchema.isSupportingSubscriptions()) { + roots.add(partiallyBuiltSchema.getSubscriptionType()); + } + + if (partiallyBuiltSchema.getAdditionalTypes() != null) { + roots.addAll(partiallyBuiltSchema.getAdditionalTypes()); + } + + if (partiallyBuiltSchema.getDirectives() != null) { + roots.addAll(partiallyBuiltSchema.getDirectives()); + } + + roots.add(partiallyBuiltSchema.getIntrospectionSchemaType()); + + GraphQLTypeVisitor visitor = new MultiReadOnlyGraphQLTypeVisitor(Arrays.asList(visitors)); + SchemaTraverser traverser; + traverser = new SchemaTraverser(schemaElement -> schemaElement.getChildrenWithTypeReferences().getChildrenAsList()); + traverser.depthFirst(visitor, roots); + } + + public static ImmutableMap> groupInterfaceImplementationsByName(List allTypesAsList) { + Map> result = new LinkedHashMap<>(); + for (GraphQLType type : allTypesAsList) { + if (type instanceof GraphQLObjectType) { + List interfaces = ((GraphQLObjectType) type).getInterfaces(); + for (GraphQLNamedOutputType interfaceType : interfaces) { + List myGroup = result.computeIfAbsent(interfaceType.getName(), k -> new ArrayList<>()); + myGroup.add((GraphQLObjectType) type); + } + } + } + return ImmutableMap.copyOf(new TreeMap<>(result)); + } + + public Map> groupImplementationsForInterfacesAndObjects(GraphQLSchema schema) { + Map> result = new LinkedHashMap<>(); + for (GraphQLType type : schema.getAllTypesAsList()) { + if (type instanceof GraphQLImplementingType) { + List interfaces = ((GraphQLImplementingType) type).getInterfaces(); + for (GraphQLNamedOutputType interfaceType : interfaces) { + List myGroup = result.computeIfAbsent(interfaceType.getName(), k -> new ArrayList<>()); + myGroup.add((GraphQLImplementingType) type); + } + } + } + return ImmutableMap.copyOf(new TreeMap<>(result)); + } + + public static void replaceTypeReferences(GraphQLSchema schema) { + final Map typeMap = schema.getTypeMap(); + List roots = new ArrayList<>(typeMap.values()); + roots.addAll(schema.getDirectives()); + roots.addAll(schema.getSchemaAppliedDirectives()); + SchemaTraverser schemaTraverser = new SchemaTraverser(schemaElement -> schemaElement.getChildrenWithTypeReferences().getChildrenAsList()); + schemaTraverser.depthFirst(new GraphQLTypeResolvingVisitor(typeMap), roots); + } + + public static GraphQLObjectType getOperationRootType(GraphQLSchema graphQLSchema, OperationDefinition operationDefinition) { + OperationDefinition.Operation operation = operationDefinition.getOperation(); + if (operation == MUTATION) { + GraphQLObjectType mutationType = graphQLSchema.getMutationType(); + if (mutationType == null) { + throw new MissingRootTypeException("Schema is not configured for mutations.", operationDefinition.getSourceLocation()); + } + return mutationType; + } else if (operation == QUERY) { + GraphQLObjectType queryType = graphQLSchema.getQueryType(); + if (queryType == null) { + throw new MissingRootTypeException("Schema does not define the required query root type.", operationDefinition.getSourceLocation()); + } + return queryType; + } else if (operation == SUBSCRIPTION) { + GraphQLObjectType subscriptionType = graphQLSchema.getSubscriptionType(); + if (subscriptionType == null) { + throw new MissingRootTypeException("Schema is not configured for subscriptions.", operationDefinition.getSourceLocation()); + } + return subscriptionType; + } else { + return assertShouldNeverHappen("Unhandled case. An extra operation enum has been added without code support"); + } + } +} diff --git a/src/main/java/graphql/schema/impl/StronglyConnectedComponentsTopologicallySorted.java b/src/main/java/graphql/schema/impl/StronglyConnectedComponentsTopologicallySorted.java new file mode 100644 index 0000000000..3ff66789ff --- /dev/null +++ b/src/main/java/graphql/schema/impl/StronglyConnectedComponentsTopologicallySorted.java @@ -0,0 +1,172 @@ +package graphql.schema.impl; + +import graphql.Assert; +import graphql.Internal; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLSchemaElement; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * This class returns a list of strongly connected components (SCC) which are topologically sorted. + * The algorithm is from https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + * + * The elements inside a SCC are additionally sorted top. itself: normally this is not possible, + * but we are using for this "inner sort" only the "reverseDependencies" Map which is made out of + * dependencies based one the Java references between Schema elements, which can't form a cycle. + * + * The inner sort algorithm is from https://en.wikipedia.org/wiki/Topological_sorting#Depth-first_search + */ +@Internal +public class StronglyConnectedComponentsTopologicallySorted { + + private int index; + private final Map nodeToIndex = new LinkedHashMap<>(); + private final Map nodeToLowLink = new LinkedHashMap<>(); + private final Map nodeToOnStack = new LinkedHashMap<>(); + private final Deque stack = new ArrayDeque<>(); + private final List> result = new ArrayList<>(); + + private final Map> reverseDependencies; + // this includes type references which means it allows for cycles + private final Map> typeRefReverseDependencies; + + + private StronglyConnectedComponentsTopologicallySorted(Map> reverseDependencies, + Map> typeRefReverseDependencies) { + this.reverseDependencies = reverseDependencies; + this.typeRefReverseDependencies = typeRefReverseDependencies; + } + + public static List> getStronglyConnectedComponentsTopologicallySorted( + Map> reverseDependencies, + Map> typeRefReverseDependencies + ) { + StronglyConnectedComponentsTopologicallySorted sccTopSort = new StronglyConnectedComponentsTopologicallySorted(reverseDependencies, typeRefReverseDependencies); + sccTopSort.calculate(); + return sccTopSort.result; + } + + private void calculate() { + index = 0; + for (GraphQLSchemaElement v : reverseDependencies.keySet()) { + if (nodeToIndex.get(v) == null) { + stronglyConnect(v); + } + } + } + + private void stronglyConnect(GraphQLSchemaElement v) { + nodeToIndex.put(v, index); + nodeToLowLink.put(v, index); + index++; + stack.push(v); + nodeToOnStack.put(v, true); + + List dependencies = reverseDependencies.get(v); + if (dependencies == null) { + dependencies = new ArrayList<>(); + } + if (v instanceof GraphQLNamedType) { + String name = ((GraphQLNamedType) v).getName(); + if (typeRefReverseDependencies.containsKey(name)) { + dependencies = new ArrayList<>(dependencies); + dependencies.addAll(typeRefReverseDependencies.get(name)); + } + } + for (GraphQLSchemaElement w : dependencies) { + if (nodeToIndex.get(w) == null) { + stronglyConnect(w); + nodeToLowLink.put(v, Math.min(nodeToLowLink.get(v), nodeToLowLink.get(w))); + } else if (Boolean.TRUE.equals(nodeToOnStack.get(w))) { + nodeToLowLink.put(v, Math.min(nodeToLowLink.get(v), nodeToIndex.get(w))); + } + } + if (nodeToLowLink.get(v).equals(nodeToIndex.get(v))) { + Set newSCC = new LinkedHashSet<>(); + GraphQLSchemaElement w; + do { + w = stack.pop(); + nodeToOnStack.put(w, false); + newSCC.add(w); + } while (w != v); + result.add(topologicallySort(newSCC)); + } + } + + private List topologicallySort(Set allNodes) { + List result = new ArrayList<>(); + Set notPermMarked = new LinkedHashSet<>(allNodes); + Set tempMarked = new LinkedHashSet<>(); + Set permMarked = new LinkedHashSet<>(); + /* + * Taken from: https://en.wikipedia.org/wiki/Topological_sorting#Depth-first_search + * while exists nodes without a permanent mark do + * select an unmarked node n + * visit(n) + */ + while (true) { + Iterator iterator = notPermMarked.iterator(); + if (!iterator.hasNext()) { + break; + } + GraphQLSchemaElement n = iterator.next(); + iterator.remove(); + visit(n, tempMarked, permMarked, notPermMarked, result, allNodes); + } + return result; + } + + private void visit(GraphQLSchemaElement n, + Set tempMarked, + Set permMarked, + Set notPermMarked, + List result, + Set allNodes) { + /* + * Taken from: https://en.wikipedia.org/wiki/Topological_sorting#Depth-first_search + * if n has a permanent mark then + * return + * if n has a temporary mark then + * stop (not a DAG) + * + * mark n with a temporary mark + * + * for each node m with an edge from n to m do + * visit(m) + * + * remove temporary mark from n + * mark n with a permanent mark + * add n to head of L + */ + if (permMarked.contains(n)) { + return; + } + if (tempMarked.contains(n)) { + // https://en.wikipedia.org/wiki/Directed_acyclic_graph + Assert.assertShouldNeverHappen("This schema is not forming an Directed Acyclic Graph : %s has already has a temporary mark", n); + return; + } + tempMarked.add(n); + if (reverseDependencies.containsKey(n)) { + for (GraphQLSchemaElement m : reverseDependencies.get(n)) { + if (allNodes.contains(m)) { + visit(m, tempMarked, permMarked, notPermMarked, result, allNodes); + } + } + } + tempMarked.remove(n); + permMarked.add(n); + notPermMarked.remove(n); + result.add(n); + } + +} diff --git a/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java b/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java index 99d18b4443..945966c00f 100644 --- a/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java +++ b/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java @@ -1,11 +1,15 @@ package graphql.schema.transform; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLImplementingType; import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLInterfaceType; -import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLNamedType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLSchemaElement; @@ -13,19 +17,23 @@ import graphql.schema.GraphQLTypeVisitorStub; import graphql.schema.GraphQLUnionType; import graphql.schema.SchemaTraverser; +import graphql.schema.impl.SchemaUtil; import graphql.schema.transform.VisibleFieldPredicateEnvironment.VisibleFieldPredicateEnvironmentImpl; import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import java.util.ArrayList; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; import static graphql.schema.SchemaTransformer.transformSchema; -import static graphql.util.TreeTransformerUtil.deleteNode; /** * Transforms a schema by applying a visibility predicate to every field. @@ -38,7 +46,9 @@ public class FieldVisibilitySchemaTransformation { private final Runnable afterTransformationHook; public FieldVisibilitySchemaTransformation(VisibleFieldPredicate visibleFieldPredicate) { - this(visibleFieldPredicate, () -> {}, () -> {}); + this(visibleFieldPredicate, () -> { + }, () -> { + }); } public FieldVisibilitySchemaTransformation(VisibleFieldPredicate visibleFieldPredicate, @@ -50,54 +60,97 @@ public FieldVisibilitySchemaTransformation(VisibleFieldPredicate visibleFieldPre } public final GraphQLSchema apply(GraphQLSchema schema) { - Set observedBeforeTransform = new HashSet<>(); - Set observedAfterTransform = new HashSet<>(); - Set removedTypes = new HashSet<>(); + Set observedBeforeTransform = new LinkedHashSet<>(); + Set observedAfterTransform = new LinkedHashSet<>(); + Set markedForRemovalTypes = new HashSet<>(); // query, mutation, and subscription types should not be removed - final Set protectedTypeNames = getRootTypes(schema).stream() - .map(GraphQLObjectType::getName) - .collect(Collectors.toSet()); + final Set protectedTypeNames = new HashSet<>(); + for (GraphQLObjectType graphQLObjectType : getOperationTypes(schema)) { + protectedTypeNames.add(graphQLObjectType.getName()); + } beforeTransformationHook.run(); - new SchemaTraverser().depthFirst(new TypeObservingVisitor(observedBeforeTransform, schema), getRootTypes(schema)); + new SchemaTraverser(getChildrenFn(schema)).depthFirst(new TypeObservingVisitor(observedBeforeTransform), getRootTypes(schema)); // remove fields GraphQLSchema interimSchema = transformSchema(schema, - new FieldRemovalVisitor(visibleFieldPredicate, removedTypes)); + new FieldRemovalVisitor(visibleFieldPredicate, markedForRemovalTypes)); + + new SchemaTraverser(getChildrenFn(interimSchema)).depthFirst(new TypeObservingVisitor(observedAfterTransform), getRootTypes(interimSchema)); - new SchemaTraverser().depthFirst(new TypeObservingVisitor(observedAfterTransform, interimSchema), getRootTypes(interimSchema)); + // remove types that are not used after removing fields - (connected schema only) + GraphQLSchema connectedSchema = transformSchema(interimSchema, + new TypeVisibilityVisitor(protectedTypeNames, observedBeforeTransform, observedAfterTransform)); - // remove types that are not used - GraphQLSchema finalSchema = transformSchema(interimSchema, - new TypeVisibilityVisitor(protectedTypeNames, observedBeforeTransform, observedAfterTransform, - removedTypes)); + // ensure markedForRemovalTypes are not referenced by other schema elements, and delete from the schema + // the ones that aren't. + GraphQLSchema finalSchema = removeUnreferencedTypes(markedForRemovalTypes, connectedSchema); afterTransformationHook.run(); return finalSchema; } + // Creates a getChildrenFn that includes interface + private Function> getChildrenFn(GraphQLSchema schema) { + Map> interfaceImplementations = new SchemaUtil().groupImplementationsForInterfacesAndObjects(schema); + + return graphQLSchemaElement -> { + if (!(graphQLSchemaElement instanceof GraphQLInterfaceType)) { + return graphQLSchemaElement.getChildren(); + } + ArrayList children = new ArrayList<>(graphQLSchemaElement.getChildren()); + List implementations = interfaceImplementations.get(((GraphQLInterfaceType) graphQLSchemaElement).getName()); + if (implementations != null) { + children.addAll(implementations); + } + return children; + }; + } + + private GraphQLSchema removeUnreferencedTypes(Set markedForRemovalTypes, GraphQLSchema connectedSchema) { + GraphQLSchema withoutAdditionalTypes = connectedSchema.transform(builder -> { + Set additionalTypes = new HashSet<>(connectedSchema.getAdditionalTypes()); + additionalTypes.removeAll(markedForRemovalTypes); + builder.clearAdditionalTypes(); + builder.additionalTypes(additionalTypes); + }); + + // remove from markedForRemovalTypes any type that might still be referenced by other schema elements + transformSchema(withoutAdditionalTypes, new AdditionalTypeVisibilityVisitor(markedForRemovalTypes)); + + // finally remove the types on the schema we are certain aren't referenced by any other node. + return transformSchema(connectedSchema, new GraphQLTypeVisitorStub() { + @Override + protected TraversalControl visitGraphQLType(GraphQLSchemaElement node, TraverserContext context) { + if (node instanceof GraphQLType && markedForRemovalTypes.contains(node)) { + return deleteNode(context); + } + return super.visitGraphQLType(node, context); + } + }); + } + private static class TypeObservingVisitor extends GraphQLTypeVisitorStub { - private final Set observedTypes; - private GraphQLSchema graphQLSchema; + private final Set observedTypes; - private TypeObservingVisitor(Set observedTypes, GraphQLSchema graphQLSchema) { + private TypeObservingVisitor(Set observedTypes) { this.observedTypes = observedTypes; - this.graphQLSchema = graphQLSchema; } @Override protected TraversalControl visitGraphQLType(GraphQLSchemaElement node, TraverserContext context) { - if (node instanceof GraphQLType) { - observedTypes.add((GraphQLType) node); - } - if (node instanceof GraphQLInterfaceType) { - observedTypes.addAll(graphQLSchema.getImplementations((GraphQLInterfaceType) node)); + if (node instanceof GraphQLObjectType || + node instanceof GraphQLEnumType || + node instanceof GraphQLInputObjectType || + node instanceof GraphQLInterfaceType || + node instanceof GraphQLUnionType) { + observedTypes.add(((GraphQLNamedType) node).getName()); } return TraversalControl.CONTINUE; @@ -109,6 +162,9 @@ private static class FieldRemovalVisitor extends GraphQLTypeVisitorStub { private final VisibleFieldPredicate visibilityPredicate; private final Set removedTypes; + private final Set fieldDefinitionsToActuallyRemove = new LinkedHashSet<>(); + private final Set inputObjectFieldsToDelete = new LinkedHashSet<>(); + private FieldRemovalVisitor(VisibleFieldPredicate visibilityPredicate, Set removedTypes) { this.visibilityPredicate = visibilityPredicate; @@ -116,51 +172,90 @@ private FieldRemovalVisitor(VisibleFieldPredicate visibilityPredicate, } @Override - public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition definition, - TraverserContext context) { - return visitField(definition, context); + public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + return visitFieldsContainer(objectType, context); } @Override - public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField definition, - TraverserContext context) { - return visitField(definition, context); + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType objectType, TraverserContext context) { + return visitFieldsContainer(objectType, context); } - private TraversalControl visitField(GraphQLNamedSchemaElement element, - TraverserContext context) { - - VisibleFieldPredicateEnvironment environment = new VisibleFieldPredicateEnvironmentImpl( - element, context.getParentNode()); - if (!visibilityPredicate.isVisible(environment)) { - deleteNode(context); + private TraversalControl visitFieldsContainer(GraphQLFieldsContainer fieldsContainer, TraverserContext context) { + boolean allFieldsDeleted = true; + for (GraphQLFieldDefinition fieldDefinition : fieldsContainer.getFieldDefinitions()) { + VisibleFieldPredicateEnvironment environment = new VisibleFieldPredicateEnvironmentImpl( + fieldDefinition, fieldsContainer); + if (!visibilityPredicate.isVisible(environment)) { + fieldDefinitionsToActuallyRemove.add(fieldDefinition); + removedTypes.add(fieldDefinition.getType()); + } else { + allFieldsDeleted = false; + } + } + if (allFieldsDeleted) { + // we are deleting the whole interface type because all fields are supposed to be deleted + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } + } - if (element instanceof GraphQLFieldDefinition) { - removedTypes.add(((GraphQLFieldDefinition) element).getType()); - } else if (element instanceof GraphQLInputObjectField) { - removedTypes.add(((GraphQLInputObjectField) element).getType()); + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType inputObjectType, TraverserContext context) { + boolean allFieldsDeleted = true; + for (GraphQLInputObjectField inputField : inputObjectType.getFieldDefinitions()) { + VisibleFieldPredicateEnvironment environment = new VisibleFieldPredicateEnvironmentImpl( + inputField, inputObjectType); + if (!visibilityPredicate.isVisible(environment)) { + inputObjectFieldsToDelete.add(inputField); + removedTypes.add(inputField.getType()); + } else { + allFieldsDeleted = false; } } + if (allFieldsDeleted) { + // we are deleting the whole input object type because all fields are supposed to be deleted + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } - return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition definition, + TraverserContext context) { + if (fieldDefinitionsToActuallyRemove.contains(definition)) { + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField definition, + TraverserContext context) { + if (inputObjectFieldsToDelete.contains(definition)) { + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } } } private static class TypeVisibilityVisitor extends GraphQLTypeVisitorStub { private final Set protectedTypeNames; - private final Set observedBeforeTransform; - private final Set observedAfterTransform; - private final Set removedTypes; + private final Set observedBeforeTransform; + private final Set observedAfterTransform; private TypeVisibilityVisitor(Set protectedTypeNames, - Set observedTypes, - Set observedAfterTransform, - Set removedTypes) { + Set observedTypes, + Set observedAfterTransform) { this.protectedTypeNames = protectedTypeNames; this.observedBeforeTransform = observedTypes; this.observedAfterTransform = observedAfterTransform; - this.removedTypes = removedTypes; } @Override @@ -172,26 +267,62 @@ public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, @Override public TraversalControl visitGraphQLType(GraphQLSchemaElement node, TraverserContext context) { - if (observedBeforeTransform.contains(node) && - !observedAfterTransform.contains(node) && - (node instanceof GraphQLObjectType || - node instanceof GraphQLEnumType || - node instanceof GraphQLInterfaceType || - node instanceof GraphQLUnionType)) { + if (node instanceof GraphQLObjectType || + node instanceof GraphQLEnumType || + node instanceof GraphQLInputObjectType || + node instanceof GraphQLInterfaceType || + node instanceof GraphQLUnionType) { + String name = ((GraphQLNamedType) node).getName(); + if (observedBeforeTransform.contains(name) && + !observedAfterTransform.contains(name) + && !protectedTypeNames.contains(name) + ) { + return deleteNode(context); + } + } + return TraversalControl.CONTINUE; + } + } + + private static class AdditionalTypeVisibilityVisitor extends GraphQLTypeVisitorStub { + + private final Set markedForRemovalTypes; + + private AdditionalTypeVisibilityVisitor(Set markedForRemovalTypes) { + this.markedForRemovalTypes = markedForRemovalTypes; + } + + @Override + public TraversalControl visitGraphQLType(GraphQLSchemaElement node, + TraverserContext context) { - return deleteNode(context); + if (node instanceof GraphQLNamedType) { + GraphQLNamedType namedType = (GraphQLNamedType) node; + // we encountered a node referencing one of the marked types, so it should not be removed. + if (markedForRemovalTypes.contains(node)) { + markedForRemovalTypes.remove(namedType); + } } return TraversalControl.CONTINUE; } } - private List getRootTypes(GraphQLSchema schema) { + private List getRootTypes(GraphQLSchema schema) { + return ImmutableList.builder() + .addAll(getOperationTypes(schema)) + // Include directive definitions as roots, since they won't be removed in the filtering process. + // Some types (enums, input types, etc.) might be reachable only by directive definitions (and + // not by other types or fields). + .addAll(schema.getDirectives()) + .build(); + } + + private List getOperationTypes(GraphQLSchema schema) { return Stream.of( schema.getQueryType(), schema.getSubscriptionType(), schema.getMutationType() ).filter(Objects::nonNull).collect(Collectors.toList()); } - } diff --git a/src/main/java/graphql/schema/usage/SchemaUsage.java b/src/main/java/graphql/schema/usage/SchemaUsage.java new file mode 100644 index 0000000000..25ed7fb24c --- /dev/null +++ b/src/main/java/graphql/schema/usage/SchemaUsage.java @@ -0,0 +1,270 @@ +package graphql.schema.usage; + +import com.google.common.collect.ImmutableMap; +import graphql.Internal; +import graphql.PublicApi; +import graphql.introspection.Introspection; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.DirectiveInfo; +import graphql.schema.idl.ScalarInfo; + +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; + +/** + * This class shows schema usage information. There are two aspects to this. To be strongly referenced, a schema element + * (directive or type) must some how be connected back to the root query, mutation or subscription type. It's possible to define + * types that reference other types but if they do not get used by a field / interface or union that itself leads back to the root + * types then it is not considered strongly references. + * + * Its reference counts however might be non-zero yet not be strongly referenced. For example given `type A { f : B } type B { f : A }` both types A and B + * will have non-zero counts but if no other type points to A or B that leads back to the root types then they are not strongly referenced types. + * + * Such types could be removed from the schema because there is no way to ever consume these types in a query. A common use case for this class + * is to find the types and directives in a schema that could in theory be removed because they are not useful. + */ +@PublicApi +public class SchemaUsage { + private final Map fieldReferenceCounts; + private final Map inputFieldReferenceCounts; + private final Map outputFieldReferenceCounts; + private final Map argReferenceCount; + private final Map interfaceReferenceCount; + private final Map unionReferenceCount; + private final Map directiveReferenceCount; + private final Map> interfaceImplementors; + private final Map> elementBackReferences; + + private final Map> unionReferences; + + private SchemaUsage(Builder builder) { + this.fieldReferenceCounts = ImmutableMap.copyOf(builder.fieldReferenceCounts); + this.inputFieldReferenceCounts = ImmutableMap.copyOf(builder.inputFieldReferenceCounts); + this.outputFieldReferenceCounts = ImmutableMap.copyOf(builder.outputFieldReferenceCounts); + this.argReferenceCount = ImmutableMap.copyOf(builder.argReferenceCount); + this.interfaceReferenceCount = ImmutableMap.copyOf(builder.interfaceReferenceCount); + this.unionReferenceCount = ImmutableMap.copyOf(builder.unionReferenceCount); + this.directiveReferenceCount = ImmutableMap.copyOf(builder.directiveReferenceCount); + this.interfaceImplementors = ImmutableMap.copyOf(builder.interfaceImplementors); + this.elementBackReferences = ImmutableMap.copyOf(builder.elementBackReferences); + this.unionReferences = ImmutableMap.copyOf(builder.unionReferences); + } + + /** + * This shows how many times a type is referenced by either an input or output field. + * + * @return a map of type name to field reference counts + */ + public Map getFieldReferenceCounts() { + return fieldReferenceCounts; + } + + /** + * This shows how many times a type is referenced by an output field. + * + * @return a map of type name to output field reference counts + */ + public Map getOutputFieldReferenceCounts() { + return outputFieldReferenceCounts; + } + + /** + * This shows how many times a type is referenced by an input field. + * + * @return a map of type name to input field reference counts + */ + public Map getInputFieldReferenceCounts() { + return inputFieldReferenceCounts; + } + + /** + * This shows how many times a type is referenced by an argument. + * + * @return a map of type name to argument reference counts + */ + public Map getArgumentReferenceCounts() { + return argReferenceCount; + } + + /** + * This shows how many times an interface type is referenced as a member in some other + * object or interface type. + * + * @return a map of interface type name to object or interface type reference counts + */ + public Map getInterfaceReferenceCounts() { + return interfaceReferenceCount; + } + + /** + * This shows how many times an object type is referenced as a member in some other + * union type. + * + * @return a map of object type name to union membership reference counts + */ + public Map getUnionReferenceCounts() { + return unionReferenceCount; + } + + /** + * This shows how many times a directive is applied on some other schema element. + * + * @return a map of directive name to applied directive counts + */ + public Map getDirectiveReferenceCounts() { + return directiveReferenceCount; + } + + /** + * Returns true if the named element is strongly reference somewhere in the schema back to the root types such as the schema + * query, mutation or subscription types. + * + * Graphql specified scalar types, introspection types and directives are always counted as referenced, even if + * not used explicitly. + * + * Directives that are defined but never applied on any schema elements will not report as referenced. + * + * @param schema the schema that contains the name type + * @param elementName the element name to check + * + * @return true if the element could be referenced + */ + public boolean isStronglyReferenced(GraphQLSchema schema, String elementName) { + return isReferencedImpl(schema, elementName, new HashSet<>()); + } + + /** + * This returns all the unreferenced named elements in a schema. + * + * @param schema the schema to check + * + * @return a set of the named schema elements where {@link #isStronglyReferenced(GraphQLSchema, String)} returns false + */ + public Set getUnReferencedElements(GraphQLSchema schema) { + Set elements = new LinkedHashSet<>(); + schema.getAllTypesAsList().forEach(type -> { + if (!isStronglyReferenced(schema, type.getName())) { + elements.add(type); + } + }); + schema.getDirectives().forEach(directive -> { + if (!isStronglyReferenced(schema, directive.getName())) { + elements.add(directive); + } + }); + return elements; + } + + private boolean isReferencedImpl(GraphQLSchema schema, String elementName, Set pathSoFar) { + if (pathSoFar.contains(elementName)) { + return false; // circular reference to that element + } + pathSoFar.add(elementName); + + if (ScalarInfo.isGraphqlSpecifiedScalar(elementName)) { + return true; + } + + GraphQLDirective directive = schema.getDirective(elementName); + if (directive != null) { + String directiveName = directive.getName(); + if (DirectiveInfo.isGraphqlSpecifiedDirective(directiveName)) { + return true; + } + if (isNamedElementReferenced(schema, directiveName, pathSoFar)) { + return true; + } + } + + GraphQLNamedType type = schema.getTypeAs(elementName); + if (type == null) { + return false; + } + if (Introspection.isIntrospectionTypes(type)) { + return true; + } + + if (type == schema.getQueryType()) { + return true; + } + if (type == schema.getMutationType()) { + return true; + } + if (type == schema.getSubscriptionType()) { + return true; + } + + if (isNamedElementReferenced(schema, elementName, pathSoFar)) { + return true; + } + + if (type instanceof GraphQLInterfaceType) { + Set implementors = interfaceImplementors.getOrDefault(type.getName(), emptySet()); + for (String implementor : implementors) { + if (isReferencedImpl(schema, implementor, pathSoFar)) { + return true; + } + } + } + if (type instanceof GraphQLObjectType) { + List interfaces = ((GraphQLObjectType) type).getInterfaces(); + for (GraphQLNamedOutputType memberInterface : interfaces) { + Set implementors = interfaceImplementors.getOrDefault(memberInterface.getName(), emptySet()); + for (String implementor : implementors) { + if (isReferencedImpl(schema, implementor, pathSoFar)) { + return true; + } + } + } + + Set unionContainers = unionReferences.getOrDefault(type.getName(), emptySet()); + for (String unionContainer : unionContainers) { + if (isReferencedImpl(schema, unionContainer, pathSoFar)) { + return true; + } + } + } + return false; + } + + private boolean isNamedElementReferenced(GraphQLSchema schema, String elementName, Set pathSoFar) { + Set references = elementBackReferences.getOrDefault(elementName, emptySet()); + for (String reference : references) { + if (isReferencedImpl(schema, reference, pathSoFar)) { + return true; + } + } + return false; + } + + @Internal + static class Builder { + Map fieldReferenceCounts = new LinkedHashMap<>(); + Map inputFieldReferenceCounts = new LinkedHashMap<>(); + Map outputFieldReferenceCounts = new LinkedHashMap<>(); + Map argReferenceCount = new LinkedHashMap<>(); + Map interfaceReferenceCount = new LinkedHashMap<>(); + Map unionReferenceCount = new LinkedHashMap<>(); + Map directiveReferenceCount = new LinkedHashMap<>(); + Map> interfaceImplementors = new LinkedHashMap<>(); + + Map> unionReferences = new LinkedHashMap<>(); + Map> elementBackReferences = new LinkedHashMap<>(); + + SchemaUsage build() { + return new SchemaUsage(this); + } + } +} diff --git a/src/main/java/graphql/schema/usage/SchemaUsageSupport.java b/src/main/java/graphql/schema/usage/SchemaUsageSupport.java new file mode 100644 index 0000000000..f51bb0429d --- /dev/null +++ b/src/main/java/graphql/schema/usage/SchemaUsageSupport.java @@ -0,0 +1,193 @@ +package graphql.schema.usage; + +import graphql.PublicApi; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.schema.SchemaTraverser; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.HashSet; +import java.util.List; +import java.util.function.BiFunction; + +import static graphql.Assert.assertNotNull; +import static graphql.util.TraversalControl.CONTINUE; + +@PublicApi +public class SchemaUsageSupport { + + /** + * This builds out {@link SchemaUsage} statistics about the usage of types and directives within a schema + * + * @param schema the schema to check + * + * @return usage stats + */ + public static SchemaUsage getSchemaUsage(GraphQLSchema schema) { + + assertNotNull(schema); + + SchemaUsage.Builder builder = new SchemaUsage.Builder(); + GraphQLTypeVisitor visitor = new GraphQLTypeVisitorStub() { + + private BiFunction incCount() { + return (k, v) -> v == null ? 1 : v + 1; + } + + private void recordBackReference(GraphQLNamedSchemaElement referencedElement, GraphQLSchemaElement referencingElement) { + String referencedElementName = referencedElement.getName(); + if (referencingElement instanceof GraphQLType) { + String typeName = (GraphQLTypeUtil.unwrapAll((GraphQLType) referencingElement)).getName(); + builder.elementBackReferences.computeIfAbsent(referencedElementName, k -> new HashSet<>()).add(typeName); + } + if (referencingElement instanceof GraphQLDirective) { + String typeName = ((GraphQLDirective) referencingElement).getName(); + builder.elementBackReferences.computeIfAbsent(referencedElementName, k -> new HashSet<>()).add(typeName); + } + if (referencingElement instanceof GraphQLAppliedDirective) { + String typeName = ((GraphQLAppliedDirective) referencingElement).getName(); + builder.elementBackReferences.computeIfAbsent(referencedElementName, k -> new HashSet<>()).add(typeName); + } + } + + private void memberInterfaces(GraphQLNamedType containingType, List members) { + for (GraphQLNamedOutputType member : members) { + builder.interfaceReferenceCount.compute(member.getName(), incCount()); + builder.interfaceImplementors.computeIfAbsent(member.getName(), k -> new HashSet<>()).add(containingType.getName()); + + recordBackReference(containingType, member); + } + } + + + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context) { + GraphQLNamedType inputType = GraphQLTypeUtil.unwrapAll(node.getType()); + builder.argReferenceCount.compute(inputType.getName(), incCount()); + + GraphQLSchemaElement parentElement = context.getParentNode(); + if (parentElement instanceof GraphQLFieldDefinition) { + parentElement = context.getParentContext().getParentNode(); + } + recordBackReference(inputType, parentElement); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + GraphQLNamedType inputType = GraphQLTypeUtil.unwrapAll(node.getType()); + builder.argReferenceCount.compute(inputType.getName(), incCount()); + + GraphQLSchemaElement parentElement = context.getParentNode(); + if (parentElement instanceof GraphQLAppliedDirective) { + parentElement = context.getParentContext().getParentNode(); + } + recordBackReference(inputType, parentElement); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + GraphQLNamedType fieldType = GraphQLTypeUtil.unwrapAll(node.getType()); + builder.fieldReferenceCounts.compute(fieldType.getName(), incCount()); + builder.outputFieldReferenceCounts.compute(fieldType.getName(), incCount()); + + recordBackReference(fieldType, context.getParentNode()); + + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + GraphQLNamedType fieldType = GraphQLTypeUtil.unwrapAll(node.getType()); + builder.fieldReferenceCounts.compute(fieldType.getName(), incCount()); + builder.inputFieldReferenceCounts.compute(fieldType.getName(), incCount()); + + recordBackReference(fieldType, context.getParentNode()); + + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLDirective(GraphQLDirective directive, TraverserContext context) { + GraphQLSchemaElement parentElement = visitDirectiveLike(context, directive.getName()); + recordBackReference(directive, parentElement); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective appliedDirective, TraverserContext context) { + GraphQLSchemaElement parentElement = visitDirectiveLike(context, appliedDirective.getName()); + recordBackReference(appliedDirective, parentElement); + return CONTINUE; + } + + private GraphQLSchemaElement visitDirectiveLike(TraverserContext context, String directiveName) { + GraphQLSchemaElement parentElement = context.getParentNode(); + if (parentElement != null) { + // a null parent is a directive definition + // we record a count if the directive is applied to something - not just defined + builder.directiveReferenceCount.compute(directiveName, incCount()); + } + if (parentElement instanceof GraphQLArgument) { + context = context.getParentContext(); + parentElement = context.getParentNode(); + } + if (parentElement instanceof GraphQLFieldDefinition) { + context = context.getParentContext(); + parentElement = context.getParentNode(); + } + if (parentElement instanceof GraphQLInputObjectField) { + context = context.getParentContext(); + parentElement = context.getParentNode(); + } + return parentElement; + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType unionType, TraverserContext context) { + List members = unionType.getTypes(); + for (GraphQLNamedOutputType member : members) { + builder.unionReferenceCount.compute(member.getName(), incCount()); + builder.unionReferences.computeIfAbsent(member.getName(), k -> new HashSet<>()).add(unionType.getName()); + + recordBackReference(unionType, member); + } + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType interfaceType, TraverserContext context) { + memberInterfaces(interfaceType, interfaceType.getInterfaces()); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + memberInterfaces(objectType, objectType.getInterfaces()); + return CONTINUE; + } + + }; + new SchemaTraverser().depthFirstFullSchema(visitor, schema); + return builder.build(); + } + +} diff --git a/src/main/java/graphql/schema/validation/AppliedDirectiveArgumentsAreValid.java b/src/main/java/graphql/schema/validation/AppliedDirectiveArgumentsAreValid.java new file mode 100644 index 0000000000..1eec8bff75 --- /dev/null +++ b/src/main/java/graphql/schema/validation/AppliedDirectiveArgumentsAreValid.java @@ -0,0 +1,100 @@ +package graphql.schema.validation; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.NonNullableValueCoercedAsNullException; +import graphql.execution.ValuesResolver; +import graphql.language.Value; +import graphql.schema.CoercingParseValueException; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.InputValueWithState; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import graphql.validation.ValidationUtil; + +import java.util.Locale; + +import static java.lang.String.format; + +@Internal +public class AppliedDirectiveArgumentsAreValid extends GraphQLTypeVisitorStub { + + private ValidationUtil validationUtil = new ValidationUtil(); + + + @Override + public TraversalControl visitGraphQLDirective(GraphQLDirective directive, TraverserContext context) { + // if there is no parent it means it is just a directive definition and not an applied directive + if (context.getParentNode() != null) { + for (GraphQLArgument graphQLArgument : directive.getArguments()) { + checkArgument( + directive.getName(), + graphQLArgument.getName(), + graphQLArgument.getArgumentValue(), + graphQLArgument.getType(), + context + ); + } + } + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective directive, TraverserContext context) { + // if there is no parent it means it is just a directive definition and not an applied directive + if (context.getParentNode() != null) { + for (GraphQLAppliedDirectiveArgument graphQLArgument : directive.getArguments()) { + checkArgument( + directive.getName(), + graphQLArgument.getName(), + graphQLArgument.getArgumentValue(), + graphQLArgument.getType(), + context + ); + } + } + return TraversalControl.CONTINUE; + } + + private void checkArgument( + String directiveName, + String argumentName, + InputValueWithState argumentValue, + GraphQLInputType argumentType, + TraverserContext context + ) { + GraphQLSchema schema = context.getVarFromParents(GraphQLSchema.class); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + boolean invalid = false; + if (argumentValue.isLiteral() && + !validationUtil.isValidLiteralValue((Value) argumentValue.getValue(), argumentType, schema, GraphQLContext.getDefault(), Locale.getDefault())) { + invalid = true; + } else if (argumentValue.isExternal() && + !isValidExternalValue(schema, argumentValue.getValue(), argumentType, GraphQLContext.getDefault(), Locale.getDefault())) { + invalid = true; + } else if (argumentValue.isNotSet() && GraphQLTypeUtil.isNonNull(argumentType)) { + invalid = true; + } + if (invalid) { + String message = format("Invalid argument '%s' for applied directive of name '%s'", argumentName, directiveName); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.InvalidAppliedDirectiveArgument, message)); + } + } + + private boolean isValidExternalValue(GraphQLSchema schema, Object externalValue, GraphQLInputType type, GraphQLContext graphQLContext, Locale locale) { + try { + ValuesResolver.externalValueToInternalValue(schema.getCodeRegistry().getFieldVisibility(), externalValue, type, graphQLContext, locale); + return true; + } catch (CoercingParseValueException | NonNullableValueCoercedAsNullException e) { + return false; + } + } +} diff --git a/src/main/java/graphql/schema/validation/AppliedDirectivesAreValid.java b/src/main/java/graphql/schema/validation/AppliedDirectivesAreValid.java new file mode 100644 index 0000000000..cf2b3da5d4 --- /dev/null +++ b/src/main/java/graphql/schema/validation/AppliedDirectivesAreValid.java @@ -0,0 +1,59 @@ +package graphql.schema.validation; + +import graphql.Internal; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.List; +import java.util.Map; + +import static graphql.schema.validation.SchemaValidationErrorType.InvalidAppliedDirective; +import static java.lang.String.format; + +@Internal +public class AppliedDirectivesAreValid extends GraphQLTypeVisitorStub { + + @Override + protected TraversalControl visitGraphQLType(GraphQLSchemaElement node, TraverserContext context) { + SchemaValidationErrorCollector collector = context.getVarFromParents(SchemaValidationErrorCollector.class); + GraphQLSchema schema = context.getVarFromParents(GraphQLSchema.class); + if (node instanceof GraphQLDirectiveContainer) { + GraphQLDirectiveContainer directiveContainer = (GraphQLDirectiveContainer) node; + for (Map.Entry> entry : directiveContainer.getAllDirectivesByName().entrySet()) { + String directiveName = entry.getKey(); + GraphQLDirective directiveDef = schema.getDirective(directiveName); + if (directiveDef != null) { + checkNonRepeatable(collector, directiveContainer, directiveDef, entry.getValue()); + } else { + addError(collector, format("A definition for directive '%s' could not be found", directiveName)); + } + } + } + + return TraversalControl.CONTINUE; + } + + private void checkNonRepeatable(SchemaValidationErrorCollector collector, GraphQLDirectiveContainer directiveContainer, GraphQLDirective directiveDef, List directives) { + if (directiveDef.isNonRepeatable() && directives.size() > 1) { + addNonRepeatableError(collector, directiveContainer, directiveDef.getName(), directives.size()); + } + } + + private void addNonRepeatableError(SchemaValidationErrorCollector collector, GraphQLDirectiveContainer directiveContainer, String name, int howMany) { + addError(collector, format("The directive '%s' on the '%s' called '%s' is a non repeatable directive but has been applied %d times", + name, + directiveContainer.getClass().getSimpleName(), + directiveContainer.getName(), + howMany)); + } + + private void addError(SchemaValidationErrorCollector collector, String message) { + collector.addError(new SchemaValidationError(InvalidAppliedDirective, message)); + } + +} diff --git a/src/main/java/graphql/schema/validation/DefaultValuesAreValid.java b/src/main/java/graphql/schema/validation/DefaultValuesAreValid.java new file mode 100644 index 0000000000..4527973461 --- /dev/null +++ b/src/main/java/graphql/schema/validation/DefaultValuesAreValid.java @@ -0,0 +1,91 @@ +package graphql.schema.validation; + +import graphql.GraphQLContext; +import graphql.execution.NonNullableValueCoercedAsNullException; +import graphql.execution.ValuesResolver; +import graphql.language.Value; +import graphql.schema.CoercingParseValueException; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.InputValueWithState; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import graphql.validation.ValidationUtil; + +import java.util.Locale; + +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static java.lang.String.format; + +public class DefaultValuesAreValid extends GraphQLTypeVisitorStub { + + private ValidationUtil validationUtil = new ValidationUtil(); + + private final GraphQLContext graphQLContext = GraphQLContext.getDefault(); + + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context) { + return super.visitGraphQLInputObjectType(node, context); + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField inputObjectField, TraverserContext context) { + if (!inputObjectField.hasSetDefaultValue()) { + return TraversalControl.CONTINUE; + } + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + GraphQLSchema schema = context.getVarFromParents(GraphQLSchema.class); + InputValueWithState defaultValue = inputObjectField.getInputFieldDefaultValue(); + boolean invalid = false; + if (defaultValue.isLiteral() && + !validationUtil.isValidLiteralValue((Value) defaultValue.getValue(), inputObjectField.getType(), schema, graphQLContext, Locale.getDefault())) { + invalid = true; + } else if (defaultValue.isExternal() && + !isValidExternalValue(schema, defaultValue.getValue(), inputObjectField.getType(), graphQLContext)) { + invalid = true; + } + if (invalid) { + String message = format("Invalid default value %s for type %s", defaultValue.getValue(), simplePrint(inputObjectField.getType())); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.InvalidDefaultValue, message)); + } + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument argument, TraverserContext context) { + if (!argument.hasSetDefaultValue()) { + return TraversalControl.CONTINUE; + } + GraphQLSchema schema = context.getVarFromParents(GraphQLSchema.class); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + InputValueWithState defaultValue = argument.getArgumentDefaultValue(); + boolean invalid = false; + if (defaultValue.isLiteral() && + !validationUtil.isValidLiteralValue((Value) defaultValue.getValue(), argument.getType(), schema, graphQLContext, Locale.getDefault())) { + invalid = true; + } else if (defaultValue.isExternal() && + !isValidExternalValue(schema, defaultValue.getValue(), argument.getType(), graphQLContext)) { + invalid = true; + } + if (invalid) { + String message = format("Invalid default value %s for type %s", defaultValue.getValue(), simplePrint(argument.getType())); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.InvalidDefaultValue, message)); + } + return TraversalControl.CONTINUE; + } + + private boolean isValidExternalValue(GraphQLSchema schema, Object externalValue, GraphQLInputType type, GraphQLContext graphQLContext) { + try { + ValuesResolver.externalValueToInternalValue(schema.getCodeRegistry().getFieldVisibility(), externalValue, type, graphQLContext, Locale.getDefault()); + return true; + } catch (CoercingParseValueException | NonNullableValueCoercedAsNullException e) { + return false; + } + } +} diff --git a/src/main/java/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValid.java b/src/main/java/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValid.java new file mode 100644 index 0000000000..ce619223cc --- /dev/null +++ b/src/main/java/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValid.java @@ -0,0 +1,64 @@ +package graphql.schema.validation; + +import graphql.Directives; +import graphql.Internal; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import static java.lang.String.format; + +/* + From the spec: + The @deprecated directive must not appear on required (non-null without a default) arguments + or input object field definitions. + */ +@Internal +public class DeprecatedInputObjectAndArgumentsAreValid extends GraphQLTypeVisitorStub { + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField inputObjectField, TraverserContext context) { + // There can only be at most one @deprecated, because it is not a repeatable directive + GraphQLAppliedDirective deprecatedDirective = inputObjectField.getAppliedDirective(Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName()); + + if (deprecatedDirective != null && GraphQLTypeUtil.isNonNull(inputObjectField.getType()) && !inputObjectField.hasSetDefaultValue()) { + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) context.getParentNode(); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + String message = format("Required input field '%s.%s' cannot be deprecated.", inputObjectType.getName(), inputObjectField.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.RequiredInputFieldCannotBeDeprecated, message)); + } + return TraversalControl.CONTINUE; + } + + // An argument can appear as either a field argument or a directive argument. This visitor will visit both field arguments and directive arguments. + // An applied directive's argument cannot be deprecated. + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument argument, TraverserContext context) { + // There can only be at most one @deprecated, because it is not a repeatable directive + GraphQLAppliedDirective deprecatedDirective = argument.getAppliedDirective(Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName()); + + if (deprecatedDirective != null && GraphQLTypeUtil.isNonNull(argument.getType()) && !argument.hasSetDefaultValue()) { + if (context.getParentNode() instanceof GraphQLFieldDefinition) { + GraphQLFieldDefinition fieldDefinition = (GraphQLFieldDefinition) context.getParentNode(); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + String message = format("Required argument '%s' on field '%s' cannot be deprecated.", argument.getName(), fieldDefinition.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.RequiredFieldArgumentCannotBeDeprecated, message)); + } else if (context.getParentNode() instanceof GraphQLDirective) { + GraphQLDirective directive = (GraphQLDirective) context.getParentNode(); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + String message = format("Required argument '%s' on directive '%s' cannot be deprecated.", argument.getName(), directive.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.RequiredDirectiveArgumentCannotBeDeprecated, message)); + } + } + return TraversalControl.CONTINUE; + } + +} diff --git a/src/main/java/graphql/schema/validation/InputAndOutputTypesUsedAppropriately.java b/src/main/java/graphql/schema/validation/InputAndOutputTypesUsedAppropriately.java new file mode 100644 index 0000000000..6ee43aef18 --- /dev/null +++ b/src/main/java/graphql/schema/validation/InputAndOutputTypesUsedAppropriately.java @@ -0,0 +1,90 @@ +package graphql.schema.validation; + +import graphql.Internal; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLModifiedType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.function.BiFunction; +import java.util.function.Predicate; + +/** + * Schema validation rule ensuring no input type forms an unbroken non-nullable recursion, + * as such a type would be impossible to satisfy + */ +@Internal +public class InputAndOutputTypesUsedAppropriately extends GraphQLTypeVisitorStub { + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition fieldDef, TraverserContext context) { + String typeName = getTypeName((GraphQLType) context.getParentNode()); + String fieldName = typeName + "." + fieldDef.getName(); + SchemaValidationErrorCollector validationErrorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + for (GraphQLArgument argument : fieldDef.getArguments()) { + String argName = fieldName + "." + argument.getName(); + GraphQLInputType argumentType = argument.getType(); + checkIsAllInputTypes(argumentType, validationErrorCollector, argName); + } + checkIsAllOutputTypes(fieldDef.getType(), validationErrorCollector, fieldName); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField fieldDef, TraverserContext context) { + String typeName = getTypeName((GraphQLType) context.getParentNode()); + String fieldName = typeName + "." + fieldDef.getName(); + SchemaValidationErrorCollector validationErrorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + checkIsAllInputTypes(fieldDef.getType(), validationErrorCollector, fieldName); + return TraversalControl.CONTINUE; + } + + private void checkIsAllInputTypes(GraphQLInputType inputType, + SchemaValidationErrorCollector validationErrorCollector, + String argName) { + checkTypeContext(inputType, validationErrorCollector, argName, + typeToCheck -> typeToCheck instanceof GraphQLInputType, + (typeToCheck, path) -> new SchemaValidationError(SchemaValidationErrorType.OutputTypeUsedInInputTypeContext, + String.format("The output type '%s' has been used in an input type context : '%s'", typeToCheck, path))); + } + + private void checkIsAllOutputTypes(GraphQLOutputType outputType, + SchemaValidationErrorCollector validationErrorCollector, + String fieldName) { + checkTypeContext(outputType, validationErrorCollector, fieldName, + typeToCheck -> typeToCheck instanceof GraphQLOutputType, + (typeToCheck, path) -> new SchemaValidationError(SchemaValidationErrorType.InputTypeUsedInOutputTypeContext, + String.format("The input type '%s' has been used in a output type context : '%s'", typeToCheck, path))); + } + + private void checkTypeContext(GraphQLType type, + SchemaValidationErrorCollector validationErrorCollector, + String path, + Predicate typePredicate, + BiFunction errorMaker) { + while (true) { + String typeName = getTypeName(type); + boolean isOk = typePredicate.test(type); + if (!isOk) { + validationErrorCollector.addError(errorMaker.apply(typeName, path)); + } + if (type instanceof GraphQLModifiedType) { + type = ((GraphQLModifiedType) type).getWrappedType(); + } else { + return; + } + } + } + + private String getTypeName(GraphQLType type) { + return GraphQLTypeUtil.simplePrint(type); + } +} diff --git a/src/main/java/graphql/schema/validation/InvalidSchemaException.java b/src/main/java/graphql/schema/validation/InvalidSchemaException.java index a0c169af7c..0740159122 100644 --- a/src/main/java/graphql/schema/validation/InvalidSchemaException.java +++ b/src/main/java/graphql/schema/validation/InvalidSchemaException.java @@ -1,13 +1,24 @@ package graphql.schema.validation; import graphql.GraphQLException; +import graphql.Internal; +import graphql.VisibleForTesting; import java.util.Collection; +@Internal public class InvalidSchemaException extends GraphQLException { + private final Collection errors; + public InvalidSchemaException(Collection errors) { super(buildErrorMsg(errors)); + this.errors = errors; + } + + @VisibleForTesting + Collection getErrors() { + return errors; } private static String buildErrorMsg(Collection errors) { diff --git a/src/main/java/graphql/schema/validation/NoUnbrokenInputCycles.java b/src/main/java/graphql/schema/validation/NoUnbrokenInputCycles.java index d9df2d5148..22be3f7148 100644 --- a/src/main/java/graphql/schema/validation/NoUnbrokenInputCycles.java +++ b/src/main/java/graphql/schema/validation/NoUnbrokenInputCycles.java @@ -1,5 +1,6 @@ package graphql.schema.validation; +import graphql.Internal; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLInputObjectField; @@ -7,7 +8,11 @@ import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLList; import graphql.schema.GraphQLNonNull; +import graphql.schema.GraphQLSchemaElement; import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -22,22 +27,20 @@ * Schema validation rule ensuring no input type forms an unbroken non-nullable recursion, * as such a type would be impossible to satisfy */ -public class NoUnbrokenInputCycles implements SchemaValidationRule { +@Internal +public class NoUnbrokenInputCycles extends GraphQLTypeVisitorStub { @Override - public void check(GraphQLType type, SchemaValidationErrorCollector validationErrorCollector) { - } - - @Override - public void check(GraphQLFieldDefinition fieldDef, SchemaValidationErrorCollector validationErrorCollector) { + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition fieldDef, TraverserContext context) { + SchemaValidationErrorCollector validationErrorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); for (GraphQLArgument argument : fieldDef.getArguments()) { GraphQLInputType argumentType = argument.getType(); if (argumentType instanceof GraphQLInputObjectType) { List path = new ArrayList<>(); -// path.add(argumentType.getName()); check((GraphQLInputObjectType) argumentType, new LinkedHashSet<>(), path, validationErrorCollector); } } + return TraversalControl.CONTINUE; } private void check(GraphQLInputObjectType type, Set seen, List path, SchemaValidationErrorCollector validationErrorCollector) { diff --git a/src/main/java/graphql/schema/validation/ObjectsImplementInterfaces.java b/src/main/java/graphql/schema/validation/ObjectsImplementInterfaces.java deleted file mode 100644 index 78ffebc51f..0000000000 --- a/src/main/java/graphql/schema/validation/ObjectsImplementInterfaces.java +++ /dev/null @@ -1,163 +0,0 @@ -package graphql.schema.validation; - -import graphql.schema.GraphQLArgument; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLInterfaceType; -import graphql.schema.GraphQLNamedOutputType; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLOutputType; -import graphql.schema.GraphQLType; -import graphql.schema.GraphQLUnionType; - -import java.util.List; -import java.util.Objects; - -import static graphql.schema.GraphQLTypeUtil.isList; -import static graphql.schema.GraphQLTypeUtil.isNonNull; -import static graphql.schema.GraphQLTypeUtil.simplePrint; -import static graphql.schema.GraphQLTypeUtil.unwrapOne; -import static graphql.schema.validation.SchemaValidationErrorType.ObjectDoesNotImplementItsInterfaces; -import static java.lang.String.format; - -/** - * Schema validation rule ensuring object types have all the fields that they need to implement the interfaces - * they say they implement - */ -public class ObjectsImplementInterfaces implements SchemaValidationRule { - - @Override - public void check(GraphQLFieldDefinition fieldDef, SchemaValidationErrorCollector validationErrorCollector) { - } - - @Override - public void check(GraphQLType type, SchemaValidationErrorCollector validationErrorCollector) { - if (type instanceof GraphQLObjectType) { - check((GraphQLObjectType) type, validationErrorCollector); - } - } - - private void check(GraphQLObjectType objectType, SchemaValidationErrorCollector validationErrorCollector) { - List interfaces = objectType.getInterfaces(); - interfaces.forEach(interfaceType -> { - // we have resolved the interfaces at this point and hence the cast is ok - checkObjectImplementsInterface(objectType, (GraphQLInterfaceType) interfaceType, validationErrorCollector); - }); - - } - - // this deliberately has open field visibility here since its validating the schema - // when completely open - private void checkObjectImplementsInterface(GraphQLObjectType objectType, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector) { - List fieldDefinitions = interfaceType.getFieldDefinitions(); - for (GraphQLFieldDefinition interfaceFieldDef : fieldDefinitions) { - GraphQLFieldDefinition objectFieldDef = objectType.getFieldDefinition(interfaceFieldDef.getName()); - if (objectFieldDef == null) { - validationErrorCollector.addError( - error(format("object type '%s' does not implement interface '%s' because field '%s' is missing", - objectType.getName(), interfaceType.getName(), interfaceFieldDef.getName()))); - } else { - checkFieldTypeCompatibility(objectType, interfaceType, validationErrorCollector, interfaceFieldDef, objectFieldDef); - } - } - } - - private void checkFieldTypeCompatibility(GraphQLObjectType objectType, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector, GraphQLFieldDefinition interfaceFieldDef, GraphQLFieldDefinition objectFieldDef) { - String interfaceFieldDefStr = simplePrint(interfaceFieldDef.getType()); - String objectFieldDefStr = simplePrint(objectFieldDef.getType()); - - if (!isCompatible(interfaceFieldDef.getType(), objectFieldDef.getType())) { - validationErrorCollector.addError( - error(format("object type '%s' does not implement interface '%s' because field '%s' is defined as '%s' type and not as '%s' type", - objectType.getName(), interfaceType.getName(), interfaceFieldDef.getName(), objectFieldDefStr, interfaceFieldDefStr))); - } else { - checkFieldArgumentEquivalence(objectType, interfaceType, validationErrorCollector, interfaceFieldDef, objectFieldDef); - } - } - - private void checkFieldArgumentEquivalence(GraphQLObjectType objectTyoe, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector, GraphQLFieldDefinition interfaceFieldDef, GraphQLFieldDefinition objectFieldDef) { - List interfaceArgs = interfaceFieldDef.getArguments(); - List objectArgs = objectFieldDef.getArguments(); - if (interfaceArgs.size() != objectArgs.size()) { - validationErrorCollector.addError( - error(format("object type '%s' does not implement interface '%s' because field '%s' has a different number of arguments", - objectTyoe.getName(), interfaceType.getName(), interfaceFieldDef.getName()))); - } else { - for (int i = 0; i < interfaceArgs.size(); i++) { - GraphQLArgument interfaceArg = interfaceArgs.get(i); - GraphQLArgument objectArg = objectArgs.get(i); - - String interfaceArgStr = makeArgStr(interfaceArg); - String objectArgStr = makeArgStr(objectArg); - - boolean same = true; - if (!interfaceArgStr.equals(objectArgStr)) { - same = false; - } - if (!Objects.equals(interfaceArg.getDefaultValue(), objectArg.getDefaultValue())) { - same = false; - } - if (!same) { - validationErrorCollector.addError( - error(format("object type '%s' does not implement interface '%s' because field '%s' argument '%s' is defined differently", - objectTyoe.getName(), interfaceType.getName(), interfaceFieldDef.getName(), interfaceArg.getName()))); - } - - } - } - } - - private String makeArgStr(GraphQLArgument argument) { - // we don't do default value checking because toString of getDefaultValue is not guaranteed to be stable - return argument.getName() + - ":" + - simplePrint(argument.getType()); - - } - - private SchemaValidationError error(String msg) { - return new SchemaValidationError(ObjectDoesNotImplementItsInterfaces, msg); - } - - /** - * @return {@code true} if the specified objectType satisfies the constraintType. - */ - boolean isCompatible(GraphQLOutputType constraintType, GraphQLOutputType objectType) { - if (isSameType(constraintType, objectType)) { - return true; - } else if (constraintType instanceof GraphQLUnionType) { - return objectIsMemberOfUnion((GraphQLUnionType) constraintType, objectType); - } else if (constraintType instanceof GraphQLInterfaceType && objectType instanceof GraphQLObjectType) { - return objectImplementsInterface((GraphQLInterfaceType) constraintType, (GraphQLObjectType) objectType); - } else if (isList(constraintType) && isList(objectType)) { - GraphQLOutputType wrappedConstraintType = (GraphQLOutputType) unwrapOne(constraintType); - GraphQLOutputType wrappedObjectType = (GraphQLOutputType) unwrapOne(objectType); - return isCompatible(wrappedConstraintType, wrappedObjectType); - } else if (isNonNull(objectType)) { - GraphQLOutputType nullableConstraint; - if (isNonNull(constraintType)) { - nullableConstraint = (GraphQLOutputType) unwrapOne(constraintType); - } else { - nullableConstraint = constraintType; - } - GraphQLOutputType nullableObjectType = (GraphQLOutputType) unwrapOne(objectType); - return isCompatible(nullableConstraint, nullableObjectType); - } else { - return false; - } - } - - boolean isSameType(GraphQLOutputType a, GraphQLOutputType b) { - String aDefString = simplePrint(a); - String bDefString = simplePrint(b); - return aDefString.equals(bDefString); - } - - boolean objectImplementsInterface(GraphQLInterfaceType interfaceType, GraphQLObjectType objectType) { - return objectType.getInterfaces().contains(interfaceType); - } - - boolean objectIsMemberOfUnion(GraphQLUnionType unionType, GraphQLOutputType objectType) { - return unionType.getTypes().contains(objectType); - } - -} diff --git a/src/main/java/graphql/schema/validation/OneOfInputObjectRules.java b/src/main/java/graphql/schema/validation/OneOfInputObjectRules.java new file mode 100644 index 0000000000..87e39fc321 --- /dev/null +++ b/src/main/java/graphql/schema/validation/OneOfInputObjectRules.java @@ -0,0 +1,41 @@ +package graphql.schema.validation; + +import graphql.ExperimentalApi; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import static java.lang.String.format; + +/* + * Spec: If the Input Object is a OneOf Input Object then: + * The type of the input field must be nullable. + * The input field must not have a default value. + */ +@ExperimentalApi +public class OneOfInputObjectRules extends GraphQLTypeVisitorStub { + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField inputObjectField, TraverserContext context) { + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) context.getParentNode(); + if (!inputObjectType.isOneOf()) { + return TraversalControl.CONTINUE; + } + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + // error messages take from the reference implementation + if (inputObjectField.hasSetDefaultValue()) { + String message = format("OneOf input field %s.%s cannot have a default value.", inputObjectType.getName(), inputObjectField.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.OneOfDefaultValueOnField, message)); + } + + if (GraphQLTypeUtil.isNonNull(inputObjectField.getType())) { + String message = format("OneOf input field %s.%s must be nullable.", inputObjectType.getName(), inputObjectField.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.OneOfNonNullableField, message)); + } + return TraversalControl.CONTINUE; + } +} diff --git a/src/main/java/graphql/schema/validation/SchemaValidationError.java b/src/main/java/graphql/schema/validation/SchemaValidationError.java index 3860ffe225..55a661e23c 100644 --- a/src/main/java/graphql/schema/validation/SchemaValidationError.java +++ b/src/main/java/graphql/schema/validation/SchemaValidationError.java @@ -1,30 +1,46 @@ package graphql.schema.validation; +import graphql.Internal; + +import java.util.StringJoiner; + import static graphql.Assert.assertNotNull; +@Internal public class SchemaValidationError { - private final SchemaValidationErrorType errorType; + private final SchemaValidationErrorClassification errorClassification; private final String description; - public SchemaValidationError(SchemaValidationErrorType errorType, String description) { - assertNotNull(errorType, "error type can not be null"); + public SchemaValidationError(SchemaValidationErrorType errorClassification, String description) { + assertNotNull(errorClassification, "error classification can not be null"); assertNotNull(description, "error description can not be null"); - this.errorType = errorType; + this.errorClassification = errorClassification; this.description = description; } - public SchemaValidationErrorType getErrorType() { - return errorType; + public SchemaValidationErrorClassification getClassification() { + return errorClassification; } public String getDescription() { return description; } + @Override + public String toString() { + return new StringJoiner(", ", SchemaValidationError.class.getSimpleName() + "[", "]") + .add("errorClassification=" + errorClassification) + .add("description='" + description + "'") + .toString(); + } + @Override public int hashCode() { - return errorType.hashCode() ^ description.hashCode(); + int result = 1; + result = 31 * result + errorClassification.hashCode(); + result = 31 * result + description.hashCode(); + return result; } @Override @@ -36,6 +52,6 @@ public boolean equals(Object other) { return false; } SchemaValidationError that = (SchemaValidationError) other; - return this.errorType.equals(that.errorType) && this.description.equals(that.description); + return this.errorClassification.equals(that.errorClassification) && this.description.equals(that.description); } } diff --git a/src/main/java/graphql/schema/validation/SchemaValidationErrorClassification.java b/src/main/java/graphql/schema/validation/SchemaValidationErrorClassification.java new file mode 100644 index 0000000000..e8a7e6b08a --- /dev/null +++ b/src/main/java/graphql/schema/validation/SchemaValidationErrorClassification.java @@ -0,0 +1,14 @@ +package graphql.schema.validation; + + +import graphql.PublicApi; + + +/** + * Error in graphql schema validation can have a classification, + * and all the error classifications implement this interface. + */ +@PublicApi +public interface SchemaValidationErrorClassification { + +} diff --git a/src/main/java/graphql/schema/validation/SchemaValidationErrorCollector.java b/src/main/java/graphql/schema/validation/SchemaValidationErrorCollector.java index e8ccb3742d..cde3ed416e 100644 --- a/src/main/java/graphql/schema/validation/SchemaValidationErrorCollector.java +++ b/src/main/java/graphql/schema/validation/SchemaValidationErrorCollector.java @@ -1,8 +1,11 @@ package graphql.schema.validation; +import graphql.Internal; + import java.util.LinkedHashSet; import java.util.Set; +@Internal public class SchemaValidationErrorCollector { private final LinkedHashSet errors = new LinkedHashSet<>(); @@ -17,7 +20,7 @@ public Set getErrors() { public boolean containsValidationError(SchemaValidationErrorType validationErrorType) { for (SchemaValidationError validationError : errors) { - if (validationError.getErrorType() == validationErrorType) return true; + if (validationError.getClassification() == validationErrorType) return true; } return false; } diff --git a/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java b/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java index 6d65284079..b8392b18d7 100644 --- a/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java +++ b/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java @@ -1,7 +1,28 @@ package graphql.schema.validation; -public enum SchemaValidationErrorType { +import graphql.Internal; + +@Internal +public enum SchemaValidationErrorType implements SchemaValidationErrorClassification{ UnbrokenInputCycle, - ObjectDoesNotImplementItsInterfaces + ObjectDoesNotImplementItsInterfaces, + ImplementingTypeLackOfFieldError, + InputObjectTypeLackOfFieldError, + EnumLackOfValueError, + UnionTypeLackOfTypeError, + InvalidUnionMemberTypeError, + InvalidCustomizedNameError, + NonNullWrapNonNullError, + RepetitiveElementError, + InvalidDefaultValue, + InvalidAppliedDirectiveArgument, + InvalidAppliedDirective, + OutputTypeUsedInInputTypeContext, + InputTypeUsedInOutputTypeContext, + OneOfDefaultValueOnField, + OneOfNonNullableField, + RequiredInputFieldCannotBeDeprecated, + RequiredFieldArgumentCannotBeDeprecated, + RequiredDirectiveArgumentCannotBeDeprecated } diff --git a/src/main/java/graphql/schema/validation/SchemaValidationRule.java b/src/main/java/graphql/schema/validation/SchemaValidationRule.java deleted file mode 100644 index cd53cbc09b..0000000000 --- a/src/main/java/graphql/schema/validation/SchemaValidationRule.java +++ /dev/null @@ -1,11 +0,0 @@ -package graphql.schema.validation; - -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLType; - -public interface SchemaValidationRule { - - void check(GraphQLFieldDefinition fieldDef, SchemaValidationErrorCollector validationErrorCollector); - - void check(GraphQLType type, SchemaValidationErrorCollector validationErrorCollector); -} diff --git a/src/main/java/graphql/schema/validation/SchemaValidator.java b/src/main/java/graphql/schema/validation/SchemaValidator.java index c4068671dd..1f676fb77e 100644 --- a/src/main/java/graphql/schema/validation/SchemaValidator.java +++ b/src/main/java/graphql/schema/validation/SchemaValidator.java @@ -1,75 +1,45 @@ package graphql.schema.validation; import graphql.Internal; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLFieldsContainer; -import graphql.schema.GraphQLNamedType; -import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.SchemaTraverser; import java.util.ArrayList; -import java.util.LinkedHashSet; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Set; @Internal public class SchemaValidator { - private final Set processed = new LinkedHashSet<>(); - private List rules = new ArrayList<>(); + private final List rules = new ArrayList<>(); public SchemaValidator() { rules.add(new NoUnbrokenInputCycles()); - rules.add(new ObjectsImplementInterfaces()); + rules.add(new TypesImplementInterfaces()); + rules.add(new TypeAndFieldRule()); + rules.add(new DefaultValuesAreValid()); + rules.add(new AppliedDirectivesAreValid()); + rules.add(new AppliedDirectiveArgumentsAreValid()); + rules.add(new InputAndOutputTypesUsedAppropriately()); + rules.add(new OneOfInputObjectRules()); + rules.add(new DeprecatedInputObjectAndArgumentsAreValid()); } - SchemaValidator(List rules) { - this.rules = rules; - } - - public List getRules() { + public List getRules() { return rules; } public Set validateSchema(GraphQLSchema schema) { SchemaValidationErrorCollector validationErrorCollector = new SchemaValidationErrorCollector(); - - checkTypes(schema, validationErrorCollector); - - traverse(schema.getQueryType(), rules, validationErrorCollector); - if (schema.isSupportingMutations()) { - traverse(schema.getMutationType(), rules, validationErrorCollector); - } - if (schema.isSupportingSubscriptions()) { - traverse(schema.getSubscriptionType(), rules, validationErrorCollector); - } + Map, Object> rootVars = new LinkedHashMap<>(); + rootVars.put(GraphQLSchema.class, schema); + rootVars.put(SchemaValidationErrorCollector.class, validationErrorCollector); + new SchemaTraverser().depthFirstFullSchema(rules, schema, rootVars); return validationErrorCollector.getErrors(); } - private void checkTypes(GraphQLSchema schema, SchemaValidationErrorCollector validationErrorCollector) { - List types = schema.getAllTypesAsList(); - types.forEach(type -> { - for (SchemaValidationRule rule : rules) { - rule.check(type, validationErrorCollector); - } - }); - } - - private void traverse(GraphQLOutputType root, List rules, SchemaValidationErrorCollector validationErrorCollector) { - if (processed.contains(root)) { - return; - } - processed.add(root); - if (root instanceof GraphQLFieldsContainer) { - // this deliberately has open field visibility here since its validating the schema - // when completely open - for (GraphQLFieldDefinition fieldDefinition : ((GraphQLFieldsContainer) root).getFieldDefinitions()) { - for (SchemaValidationRule rule : rules) { - rule.check(fieldDefinition, validationErrorCollector); - } - traverse(fieldDefinition.getType(), rules, validationErrorCollector); - } - } - } } diff --git a/src/main/java/graphql/schema/validation/TypeAndFieldRule.java b/src/main/java/graphql/schema/validation/TypeAndFieldRule.java new file mode 100644 index 0000000000..84a768479d --- /dev/null +++ b/src/main/java/graphql/schema/validation/TypeAndFieldRule.java @@ -0,0 +1,233 @@ +package graphql.schema.validation; + +import graphql.collect.ImmutableKit; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLNonNull; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.util.FpKit; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; + +import static graphql.introspection.Introspection.INTROSPECTION_SYSTEM_FIELDS; +import static graphql.introspection.Introspection.isIntrospectionTypes; +import static graphql.schema.idl.ScalarInfo.isGraphqlSpecifiedScalar; + +/** + * The validation about GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLScalarType. + *
        + *
      • Types must define one or more fields;
      • + *
      • Enum type must define one or more enum values;
      • + *
      • Union type must include one or more unique member types;
      • + *
      • The member types of a Union type must all be Object base types;
      • + *
      • Non‐Null type must not wrap another Non‐Null type;
      • + *
      • Invalid name begin with "__" (two underscores).
      • + *
      + *

      + * details in https://spec.graphql.org/June2018/#sec-Type-System + */ +public class TypeAndFieldRule extends GraphQLTypeVisitorStub { + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType type, TraverserContext context) { + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + validateContainsField((GraphQLFieldsContainer) type, errorCollector); + return super.visitGraphQLInterfaceType(type, context); + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType type, TraverserContext context) { + if (isIntrospectionTypes(type)) { + return TraversalControl.CONTINUE; + } + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + validateContainsField((GraphQLFieldsContainer) type, errorCollector); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType type, TraverserContext context) { + if (isIntrospectionTypes(type)) { + return TraversalControl.CONTINUE; + } + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + validateUnion((GraphQLUnionType) type, errorCollector); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType type, TraverserContext context) { + if (isIntrospectionTypes(type)) { + return TraversalControl.CONTINUE; + } + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + validateEnum((GraphQLEnumType) type, errorCollector); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType type, TraverserContext context) { + if (isIntrospectionTypes(type)) { + return TraversalControl.CONTINUE; + } + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + validateInputObject((GraphQLInputObjectType) type, errorCollector); + return TraversalControl.CONTINUE; + } + + + private void validateContainsField(GraphQLFieldsContainer type, SchemaValidationErrorCollector errorCollector) { + List fieldDefinitions = type.getFieldDefinitions(); + if (fieldDefinitions == null || fieldDefinitions.size() == 0) { + SchemaValidationError validationError = new SchemaValidationError(SchemaValidationErrorType.ImplementingTypeLackOfFieldError, String.format("\"%s\" must define one or more fields.", type.getName())); + errorCollector.addError(validationError); + return; + } + + for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { + validateFieldDefinition(type.getName(), fieldDefinition, errorCollector); + } + } + + private void validateInputObject(GraphQLInputObjectType type, SchemaValidationErrorCollector errorCollector) { + List inputObjectFields = type.getFields(); + if (inputObjectFields == null || inputObjectFields.size() == 0) { + SchemaValidationError validationError = new SchemaValidationError(SchemaValidationErrorType.InputObjectTypeLackOfFieldError, String.format("\"%s\" must define one or more fields.", type.getName())); + errorCollector.addError(validationError); + return; + } + + for (GraphQLInputObjectField inputObjectField : inputObjectFields) { + validateInputFieldDefinition(type.getName(), inputObjectField, errorCollector); + } + } + + private void validateUnion(GraphQLUnionType type, SchemaValidationErrorCollector errorCollector) { + List memberTypes = type.getTypes(); + if (memberTypes.size() == 0) { + SchemaValidationError validationError = + new SchemaValidationError(SchemaValidationErrorType.UnionTypeLackOfTypeError, String.format("Union type \"%s\" must include one or more unique member types.", type.getName())); + errorCollector.addError(validationError); + } + + Set typeNames = new HashSet<>(); + for (GraphQLNamedOutputType memberType : type.getTypes()) { + String typeName = memberType.getName(); +// GraphQLNamedType graphQLNamedType = schemaTypeHolder.get(typeName); + if (!(memberType instanceof GraphQLObjectType)) { + SchemaValidationError validationError = + new SchemaValidationError(SchemaValidationErrorType.InvalidUnionMemberTypeError, String.format("The member types of a Union type must all be Object base types. member type \"%s\" in Union \"%s\" is invalid.", memberType.getName(), type.getName())); + errorCollector.addError(validationError); + } + if (typeNames.contains(typeName)) { + SchemaValidationError validationError = + new SchemaValidationError(SchemaValidationErrorType.RepetitiveElementError, String.format("The member types of a Union type must be unique. member type \"%s\" in Union \"%s\" is not unique.", memberType.getName(), type.getName())); + errorCollector.addError(validationError); + } + typeNames.add(typeName); + } + } + + private void validateEnum(GraphQLEnumType type, SchemaValidationErrorCollector errorCollector) { + List enumValueDefinitions = type.getValues(); + if (enumValueDefinitions == null || enumValueDefinitions.size() == 0) { + SchemaValidationError validationError = new SchemaValidationError(SchemaValidationErrorType.EnumLackOfValueError, String.format("Enum type \"%s\" must define one or more enum values.", type.getName())); + errorCollector.addError(validationError); + } else { + for (GraphQLEnumValueDefinition enumValueDefinition : enumValueDefinitions) { + assertEnumValueDefinitionName(type.getName(), enumValueDefinition.getName(), errorCollector); + } + } + + } + + private void validateFieldDefinition(String typeName, GraphQLFieldDefinition fieldDefinition, SchemaValidationErrorCollector errorCollector) { + assertFieldName(typeName, fieldDefinition.getName(), errorCollector); + assertNonNullType(fieldDefinition.getType(), errorCollector); + + List fieldDefinitionArguments = fieldDefinition.getArguments(); + for (GraphQLArgument fieldDefinitionArgument : fieldDefinitionArguments) { + validateFieldDefinitionArgument(typeName, fieldDefinition.getName(), fieldDefinitionArgument, errorCollector); + } + } + + private void validateInputFieldDefinition(String typeName, GraphQLInputObjectField inputObjectField, SchemaValidationErrorCollector errorCollector) { + assertFieldName(typeName, inputObjectField.getName(), errorCollector); + assertNonNullType(inputObjectField.getType(), errorCollector); + } + + private void validateFieldDefinitionArgument(String typeName, String fieldName, GraphQLArgument argument, SchemaValidationErrorCollector errorCollector) { + assertArgumentName(typeName, fieldName, argument.getName(), errorCollector); + assertNonNullType(argument.getType(), errorCollector); + } + + private void assertArgumentName(String typeName, String fieldName, String argumentName, SchemaValidationErrorCollector errorCollector) { + if (argumentName.length() >= 2 && argumentName.startsWith("__")) { + SchemaValidationError schemaValidationError = new SchemaValidationError(SchemaValidationErrorType.InvalidCustomizedNameError, + String.format("Argument name \"%s\" in \"%s-%s\" must not begin with \"__\", which is reserved by GraphQL introspection.", argumentName, typeName, fieldName)); + errorCollector.addError(schemaValidationError); + } + } + + private void assertEnumValueDefinitionName(String typeName, String enumValueDefinitionName, SchemaValidationErrorCollector errorCollector) { + if (enumValueDefinitionName.length() >= 2 && enumValueDefinitionName.startsWith("__")) { + SchemaValidationError schemaValidationError = new SchemaValidationError(SchemaValidationErrorType.InvalidCustomizedNameError, + String.format("EnumValueDefinition \"%s\" in \"%s\" must not begin with \"__\", which is reserved by GraphQL introspection.", enumValueDefinitionName, typeName)); + errorCollector.addError(schemaValidationError); + } + } + + private void assertNonNullType(GraphQLType type, SchemaValidationErrorCollector errorCollector) { + if (type instanceof GraphQLNonNull && ((GraphQLNonNull) type).getWrappedType() instanceof GraphQLNonNull) { + SchemaValidationError schemaValidationError = new SchemaValidationError(SchemaValidationErrorType.NonNullWrapNonNullError, + String.format("Non‐Null type must not wrap another Non‐Null type: \"%s\" is invalid.", GraphQLTypeUtil.simplePrint(type))); + errorCollector.addError(schemaValidationError); + } + } + + private List filterBuiltInTypes(List graphQLNamedTypes) { + if (graphQLNamedTypes == null || graphQLNamedTypes.isEmpty()) { + return ImmutableKit.emptyList(); + } + + Predicate filterFunction = namedType -> { + if (isIntrospectionTypes(namedType)) { + return false; + } + return !(namedType instanceof GraphQLScalarType) || !isGraphqlSpecifiedScalar((GraphQLScalarType) namedType); + }; + + return FpKit.filterList(graphQLNamedTypes, filterFunction); + } + + + private void assertFieldName(String typeName, String fieldName, SchemaValidationErrorCollector errorCollector) { + if (INTROSPECTION_SYSTEM_FIELDS.contains(fieldName)) { + return; + } + if (fieldName.length() >= 2 && fieldName.startsWith("__")) { + SchemaValidationError schemaValidationError = new SchemaValidationError(SchemaValidationErrorType.InvalidCustomizedNameError, + String.format("\"%s\" in \"%s\" must not begin with \"__\", which is reserved by GraphQL introspection.", fieldName, typeName)); + errorCollector.addError(schemaValidationError); + } + } +} \ No newline at end of file diff --git a/src/main/java/graphql/schema/validation/TypesImplementInterfaces.java b/src/main/java/graphql/schema/validation/TypesImplementInterfaces.java new file mode 100644 index 0000000000..2717ed8e46 --- /dev/null +++ b/src/main/java/graphql/schema/validation/TypesImplementInterfaces.java @@ -0,0 +1,234 @@ +package graphql.schema.validation; + +import graphql.GraphQLContext; +import graphql.Internal; +import graphql.execution.ValuesResolver; +import graphql.language.Value; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLImplementingType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNonNull; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.util.FpKit; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +import static graphql.collect.ImmutableKit.map; +import static graphql.language.AstPrinter.printAst; +import static graphql.schema.GraphQLTypeUtil.isList; +import static graphql.schema.GraphQLTypeUtil.isNonNull; +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.schema.GraphQLTypeUtil.unwrapOne; +import static graphql.schema.validation.SchemaValidationErrorType.ObjectDoesNotImplementItsInterfaces; +import static java.lang.String.format; + +/** + * Schema validation rule ensuring object and interface types have all the fields that they need to + * implement the interfaces they say they implement. + */ +@Internal +public class TypesImplementInterfaces extends GraphQLTypeVisitorStub { + private static final Map, String> TYPE_OF_MAP = new HashMap<>(); + + static { + TYPE_OF_MAP.put(GraphQLObjectType.class, "object"); + TYPE_OF_MAP.put(GraphQLInterfaceType.class, "interface"); + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType type, TraverserContext context) { + SchemaValidationErrorCollector validationErrorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + check((GraphQLImplementingType) type, validationErrorCollector); + return TraversalControl.CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType type, TraverserContext context) { + SchemaValidationErrorCollector validationErrorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + check((GraphQLImplementingType) type, validationErrorCollector); + return TraversalControl.CONTINUE; + } + + + private void check(GraphQLImplementingType implementingType, SchemaValidationErrorCollector validationErrorCollector) { + List interfaces = implementingType.getInterfaces(); + interfaces.forEach(interfaceType -> { + // we have resolved the interfaces at this point and hence the cast is ok + checkObjectImplementsInterface(implementingType, (GraphQLInterfaceType) interfaceType, validationErrorCollector); + }); + + } + + // this deliberately has open field visibility here since it's validating the schema + // when completely open + private void checkObjectImplementsInterface(GraphQLImplementingType implementingType, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector) { + List fieldDefinitions = interfaceType.getFieldDefinitions(); + for (GraphQLFieldDefinition interfaceFieldDef : fieldDefinitions) { + GraphQLFieldDefinition objectFieldDef = implementingType.getFieldDefinition(interfaceFieldDef.getName()); + if (objectFieldDef == null) { + validationErrorCollector.addError( + error(format("%s type '%s' does not implement interface '%s' because field '%s' is missing", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), interfaceType.getName(), interfaceFieldDef.getName()))); + } else { + checkFieldTypeCompatibility(implementingType, interfaceType, validationErrorCollector, interfaceFieldDef, objectFieldDef); + } + } + + checkTransitiveImplementations(implementingType, interfaceType, validationErrorCollector); + } + + private void checkTransitiveImplementations(GraphQLImplementingType implementingType, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector) { + List implementedInterfaces = implementingType.getInterfaces(); + interfaceType.getInterfaces().forEach(transitiveInterface -> { + if (transitiveInterface.equals(implementingType)) { + validationErrorCollector.addError( + error(format("%s type '%s' cannot implement '%s' because that would result on a circular reference", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), interfaceType.getName())) + ); + } else if (!implementedInterfaces.contains(transitiveInterface)) { + validationErrorCollector.addError( + error(format("%s type '%s' must implement '%s' because it is implemented by '%s'", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), transitiveInterface.getName(), interfaceType.getName()))); + } + }); + } + + private void checkFieldTypeCompatibility(GraphQLImplementingType implementingType, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector, GraphQLFieldDefinition interfaceFieldDef, GraphQLFieldDefinition objectFieldDef) { + String interfaceFieldDefStr = simplePrint(interfaceFieldDef.getType()); + String objectFieldDefStr = simplePrint(objectFieldDef.getType()); + + if (!isCompatible(interfaceFieldDef.getType(), objectFieldDef.getType())) { + validationErrorCollector.addError( + error(format("%s type '%s' does not implement interface '%s' because field '%s' is defined as '%s' type and not as '%s' type", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), interfaceType.getName(), interfaceFieldDef.getName(), objectFieldDefStr, interfaceFieldDefStr))); + } else { + checkFieldArgumentEquivalence(implementingType, interfaceType, validationErrorCollector, interfaceFieldDef, objectFieldDef); + } + } + + private void checkFieldArgumentEquivalence(GraphQLImplementingType implementingType, GraphQLInterfaceType interfaceType, SchemaValidationErrorCollector validationErrorCollector, GraphQLFieldDefinition interfaceFieldDef, GraphQLFieldDefinition objectFieldDef) { + List interfaceArgs = interfaceFieldDef.getArguments(); + List objectArgs = objectFieldDef.getArguments(); + + Map interfaceArgsByName = FpKit.getByName(interfaceArgs, GraphQLArgument::getName); + List objectArgsNames = map(objectArgs, GraphQLArgument::getName); + + if (!objectArgsNames.containsAll(interfaceArgsByName.keySet())) { + final String missingArgsNames = interfaceArgsByName.keySet().stream() + .filter(name -> !objectArgsNames.contains(name)) + .collect(Collectors.joining(", ")); + + validationErrorCollector.addError( + error(format("%s type '%s' does not implement interface '%s' because field '%s' is missing argument(s): '%s'", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), interfaceType.getName(), interfaceFieldDef.getName(), missingArgsNames))); + } else { + objectArgs.forEach(objectArg -> { + GraphQLArgument interfaceArg = interfaceArgsByName.get(objectArg.getName()); + + if (interfaceArg == null) { + if (objectArg.getType() instanceof GraphQLNonNull) { + validationErrorCollector.addError( + error(format("%s type '%s' field '%s' defines an additional non-optional argument '%s' which is not allowed because field is also defined in interface '%s'", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), objectFieldDef.getName(), objectArg.getName(), interfaceType.getName()))); + } + } else { + String interfaceArgStr = makeArgStr(objectArg); + String objectArgStr = makeArgStr(interfaceArg); + + boolean same = true; + if (!interfaceArgStr.equals(objectArgStr)) { + same = false; + } + if (objectArg.hasSetDefaultValue() && interfaceArg.hasSetDefaultValue()) { + Value objectDefaultValue = ValuesResolver.valueToLiteral(objectArg.getArgumentDefaultValue(), objectArg.getType(), GraphQLContext.getDefault(), Locale.getDefault()); + Value interfaceDefaultValue = ValuesResolver.valueToLiteral(interfaceArg.getArgumentDefaultValue(), interfaceArg.getType(), GraphQLContext.getDefault(), Locale.getDefault()); + if (!Objects.equals(printAst(objectDefaultValue), printAst(interfaceDefaultValue))) { + same = false; + } + } else if (objectArg.hasSetDefaultValue() || interfaceArg.hasSetDefaultValue()) { + same = false; + } + if (!same) { + validationErrorCollector.addError( + error(format("%s type '%s' does not implement interface '%s' because field '%s' argument '%s' is defined differently", + TYPE_OF_MAP.get(implementingType.getClass()), implementingType.getName(), interfaceType.getName(), interfaceFieldDef.getName(), objectArg.getName()))); + } + } + }); + } + } + + private String makeArgStr(GraphQLArgument argument) { + // we don't do default value checking because toString of getDefaultValue is not guaranteed to be stable + return argument.getName() + + ":" + + simplePrint(argument.getType()); + + } + + private SchemaValidationError error(String msg) { + return new SchemaValidationError(ObjectDoesNotImplementItsInterfaces, msg); + } + + /** + * @return {@code true} if the specified implementingType satisfies the constraintType. + */ + boolean isCompatible(GraphQLOutputType constraintType, GraphQLOutputType objectType) { + if (isSameType(constraintType, objectType)) { + return true; + } else if (constraintType instanceof GraphQLUnionType) { + return objectIsMemberOfUnion((GraphQLUnionType) constraintType, objectType); + } else if (constraintType instanceof GraphQLInterfaceType && objectType instanceof GraphQLObjectType) { + return objectImplementsInterface((GraphQLInterfaceType) constraintType, (GraphQLObjectType) objectType); + } else if (constraintType instanceof GraphQLInterfaceType && objectType instanceof GraphQLInterfaceType) { + return interfaceImplementsInterface((GraphQLInterfaceType) constraintType, (GraphQLInterfaceType) objectType); + } else if (isList(constraintType) && isList(objectType)) { + GraphQLOutputType wrappedConstraintType = (GraphQLOutputType) unwrapOne(constraintType); + GraphQLOutputType wrappedObjectType = (GraphQLOutputType) unwrapOne(objectType); + return isCompatible(wrappedConstraintType, wrappedObjectType); + } else if (isNonNull(objectType)) { + GraphQLOutputType nullableConstraint; + if (isNonNull(constraintType)) { + nullableConstraint = (GraphQLOutputType) unwrapOne(constraintType); + } else { + nullableConstraint = constraintType; + } + GraphQLOutputType nullableObjectType = (GraphQLOutputType) unwrapOne(objectType); + return isCompatible(nullableConstraint, nullableObjectType); + } else { + return false; + } + } + + boolean isSameType(GraphQLOutputType a, GraphQLOutputType b) { + String aDefString = simplePrint(a); + String bDefString = simplePrint(b); + return aDefString.equals(bDefString); + } + + boolean objectImplementsInterface(GraphQLInterfaceType interfaceType, GraphQLObjectType objectType) { + return objectType.getInterfaces().contains(interfaceType); + } + + boolean interfaceImplementsInterface(GraphQLInterfaceType interfaceType, GraphQLInterfaceType implementingType) { + return implementingType.getInterfaces().contains(interfaceType); + } + + boolean objectIsMemberOfUnion(GraphQLUnionType unionType, GraphQLOutputType objectType) { + return unionType.getTypes().contains(objectType); + } + +} diff --git a/src/main/java/graphql/schema/visibility/BlockedFields.java b/src/main/java/graphql/schema/visibility/BlockedFields.java index 13a6b5515a..937d029d83 100644 --- a/src/main/java/graphql/schema/visibility/BlockedFields.java +++ b/src/main/java/graphql/schema/visibility/BlockedFields.java @@ -2,6 +2,7 @@ import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; import graphql.schema.GraphQLInputFieldsContainer; @@ -11,7 +12,6 @@ import java.util.Collection; import java.util.List; import java.util.regex.Pattern; -import java.util.stream.Collectors; /** * This helper class will take a list of regular expressions and match them against the fully qualified name @@ -27,20 +27,16 @@ public class BlockedFields implements GraphqlFieldVisibility { /** * @param patterns the blocked field patterns - * - * @deprecated use the {@link #newBlock()} builder pattern instead, as this constructor will be made private in a future version. */ @Internal - @Deprecated - public BlockedFields(List patterns) { + private BlockedFields(List patterns) { this.patterns = patterns; } @Override public List getFieldDefinitions(GraphQLFieldsContainer fieldsContainer) { - return fieldsContainer.getFieldDefinitions().stream() - .filter(fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) - .collect(Collectors.toList()); + return ImmutableKit.filter(fieldsContainer.getFieldDefinitions(), + fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))); } @Override @@ -56,9 +52,8 @@ public GraphQLFieldDefinition getFieldDefinition(GraphQLFieldsContainer fieldsCo @Override public List getFieldDefinitions(GraphQLInputFieldsContainer fieldsContainer) { - return fieldsContainer.getFieldDefinitions().stream() - .filter(fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) - .collect(Collectors.toList()); + return ImmutableKit.filter(fieldsContainer.getFieldDefinitions(), + fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))); } @Override diff --git a/src/main/java/graphql/schema/visibility/DefaultGraphqlFieldVisibility.java b/src/main/java/graphql/schema/visibility/DefaultGraphqlFieldVisibility.java index c7ff878804..d918d818ff 100644 --- a/src/main/java/graphql/schema/visibility/DefaultGraphqlFieldVisibility.java +++ b/src/main/java/graphql/schema/visibility/DefaultGraphqlFieldVisibility.java @@ -1,5 +1,6 @@ package graphql.schema.visibility; +import graphql.PublicApi; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; import graphql.schema.GraphQLInputFieldsContainer; @@ -10,6 +11,7 @@ /** * The default field visibility of graphql-java is that everything is visible */ +@PublicApi public class DefaultGraphqlFieldVisibility implements GraphqlFieldVisibility { public static final DefaultGraphqlFieldVisibility DEFAULT_FIELD_VISIBILITY = new DefaultGraphqlFieldVisibility(); diff --git a/src/main/java/graphql/schema/visibility/GraphqlFieldVisibility.java b/src/main/java/graphql/schema/visibility/GraphqlFieldVisibility.java index a677f0b3d7..91a9323280 100644 --- a/src/main/java/graphql/schema/visibility/GraphqlFieldVisibility.java +++ b/src/main/java/graphql/schema/visibility/GraphqlFieldVisibility.java @@ -31,7 +31,7 @@ public interface GraphqlFieldVisibility { * @param fieldsContainer the type in play * @param fieldName the name of the desired field * - * @return a {@link graphql.schema.GraphQLFieldDefinition} or null if its not visible + * @return a {@link graphql.schema.GraphQLFieldDefinition} or null if it's not visible */ GraphQLFieldDefinition getFieldDefinition(GraphQLFieldsContainer fieldsContainer, String fieldName); @@ -53,7 +53,7 @@ default List getFieldDefinitions(GraphQLInputFieldsCont * @param fieldsContainer the type in play * @param fieldName the name of the desired field * - * @return a {@link graphql.schema.GraphQLInputObjectField} or null if its not visible + * @return a {@link graphql.schema.GraphQLInputObjectField} or null if it's not visible */ default GraphQLInputObjectField getFieldDefinition(GraphQLInputFieldsContainer fieldsContainer, String fieldName) { return fieldsContainer.getFieldDefinition(fieldName); diff --git a/src/main/java/graphql/schema/visibility/NoIntrospectionGraphqlFieldVisibility.java b/src/main/java/graphql/schema/visibility/NoIntrospectionGraphqlFieldVisibility.java index 56af59fa1d..62aa16bbe0 100644 --- a/src/main/java/graphql/schema/visibility/NoIntrospectionGraphqlFieldVisibility.java +++ b/src/main/java/graphql/schema/visibility/NoIntrospectionGraphqlFieldVisibility.java @@ -1,5 +1,6 @@ package graphql.schema.visibility; +import graphql.PublicApi; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; @@ -9,11 +10,17 @@ /** * This field visibility will prevent Introspection queries from being performed. Technically this puts your - * system in contravention of the specification - http://facebook.github.io/graphql/#sec-Introspection but some - * production systems want this lock down in place. + * system in contravention of the specification + * but some production systems want this lock down in place. + * + * @deprecated This is no longer the best way to prevent Introspection - {@link graphql.introspection.Introspection#enabledJvmWide(boolean)} + * can be used instead */ +@PublicApi +@Deprecated(since = "2024-03-16") public class NoIntrospectionGraphqlFieldVisibility implements GraphqlFieldVisibility { + @Deprecated(since = "2024-03-16") public static NoIntrospectionGraphqlFieldVisibility NO_INTROSPECTION_FIELD_VISIBILITY = new NoIntrospectionGraphqlFieldVisibility(); diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaTraversalControl.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaTraversalControl.java new file mode 100644 index 0000000000..7020f088cc --- /dev/null +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaTraversalControl.java @@ -0,0 +1,81 @@ +package graphql.schema.visitor; + +import graphql.PublicApi; +import graphql.schema.GraphQLSchemaElement; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; +import graphql.util.TreeTransformerUtil; + +/** + * This indicates what traversal control to apply during the visitation + * and can be created via calls to methods like {@link GraphQLSchemaVisitorEnvironment#ok()} + * or {@link GraphQLSchemaVisitorEnvironment#changeNode(GraphQLSchemaElement)} say + */ +@PublicApi +public class GraphQLSchemaTraversalControl { + private final GraphQLSchemaElement element; + private final Control control; + + enum Control { + CONTINUE(TraversalControl.CONTINUE), + QUIT(TraversalControl.QUIT), + CHANGE(TraversalControl.CONTINUE), + DELETE(TraversalControl.CONTINUE), + INSERT_BEFORE(TraversalControl.CONTINUE), + INSERT_AFTER(TraversalControl.CONTINUE); + + private final TraversalControl traversalControl; + + Control(TraversalControl traversalControl) { + this.traversalControl = traversalControl; + } + + public TraversalControl toTraversalControl() { + return traversalControl; + } + } + + static final GraphQLSchemaTraversalControl CONTINUE = new GraphQLSchemaTraversalControl(Control.CONTINUE, null); + static final GraphQLSchemaTraversalControl QUIT = new GraphQLSchemaTraversalControl(Control.QUIT, null); + static final GraphQLSchemaTraversalControl DELETE = new GraphQLSchemaTraversalControl(Control.DELETE, null); + + GraphQLSchemaTraversalControl(Control control, GraphQLSchemaElement element) { + this.element = element; + this.control = control; + } + + GraphQLSchemaElement getElement() { + return element; + } + + Control getControl() { + return control; + } + + boolean isAbortive() { + return control == Control.QUIT; + } + + boolean isMutative() { + return control == Control.DELETE || control == Control.CHANGE || control == Control.INSERT_AFTER || control == Control.INSERT_BEFORE; + } + + TraversalControl toTraversalControl(TraverserContext context) { + if (control == Control.CONTINUE || control == Control.QUIT) { + return control.toTraversalControl(); + } + if (control == Control.DELETE) { + TreeTransformerUtil.deleteNode(context); + } + if (control == Control.CHANGE) { + TreeTransformerUtil.changeNode(context, element); + } + if (control == Control.INSERT_AFTER) { + TreeTransformerUtil.insertAfter(context, element); + } + if (control == Control.INSERT_BEFORE) { + TreeTransformerUtil.insertAfter(context, element); + } + return TraversalControl.CONTINUE; + } +} diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitor.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitor.java new file mode 100644 index 0000000000..380ce8da08 --- /dev/null +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitor.java @@ -0,0 +1,326 @@ +package graphql.schema.visitor; + +import graphql.PublicSpi; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedInputType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.GraphQLUnionType; + +/** + * This visitor interface offers more "smarts" above {@link GraphQLTypeVisitor} and aims to be easier to use + * with more type safe helpers. + *

      + * You would use it places that need a {@link GraphQLTypeVisitor} by doing `new GraphQLSchemaVisitor() { ...}.toTypeVisitor()` + */ +@PublicSpi +public interface GraphQLSchemaVisitor { + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLAppliedDirective} + */ + interface AppliedDirectiveVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + GraphQLDirectiveContainer getContainer(); + } + + /** + * Called when visiting a GraphQLAppliedDirective in the schema + * + * @param appliedDirective the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitAppliedDirective(GraphQLAppliedDirective appliedDirective, AppliedDirectiveVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLAppliedDirectiveArgument} + */ + interface AppliedDirectiveArgumentVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + + GraphQLAppliedDirective getContainer(); + + /** + * @return this elements type that has been unwrapped of {@link graphql.schema.GraphQLNonNull} and {@link graphql.schema.GraphQLList} + */ + GraphQLNamedInputType getUnwrappedType(); + } + + /** + * Called when visiting a {@link GraphQLAppliedDirectiveArgument} in the schema + * + * @param appliedDirectiveArgument the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument appliedDirectiveArgument, AppliedDirectiveArgumentVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLArgument} + */ + interface ArgumentVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + /** + * @return either a {@link GraphQLFieldDefinition} or a {@link graphql.schema.GraphQLDirective} + */ + GraphQLNamedSchemaElement getContainer(); + + /** + * @return this elements type that has been unwrapped of {@link graphql.schema.GraphQLNonNull} and {@link graphql.schema.GraphQLList} + */ + GraphQLNamedInputType getUnwrappedType(); + } + + /** + * Called when visiting a {@link GraphQLArgument} in the schema + * + * @param argument the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitArgument(GraphQLArgument argument, ArgumentVisitorEnvironment environment) { + return environment.ok(); + } + + interface DirectiveVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLArgument} in the schema + * + * @param directive the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitDirective(GraphQLDirective directive, DirectiveVisitorEnvironment environment) { + return environment.ok(); + } + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLEnumType} + */ + interface EnumTypeVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLEnumType} in the schema + * + * @param enumType the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitEnumType(GraphQLEnumType enumType, EnumTypeVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLEnumValueDefinition} + */ + interface EnumValueDefinitionVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + GraphQLEnumType getContainer(); + } + + /** + * Called when visiting a {@link GraphQLEnumValueDefinition} in the schema + * + * @param enumValueDefinition the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitEnumValueDefinition(GraphQLEnumValueDefinition enumValueDefinition, EnumValueDefinitionVisitorEnvironment environment) { + return environment.ok(); + } + + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLFieldDefinition} + */ + interface FieldDefinitionVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + GraphQLFieldsContainer getContainer(); + + /** + * @return this elements type that has been unwrapped of {@link graphql.schema.GraphQLNonNull} and {@link graphql.schema.GraphQLList} + */ + GraphQLNamedOutputType getUnwrappedType(); + } + + /** + * Called when visiting a {@link GraphQLFieldDefinition} in the schema + * + * @param fieldDefinition the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitFieldDefinition(GraphQLFieldDefinition fieldDefinition, FieldDefinitionVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLInputObjectField} + */ + interface InputObjectFieldVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + GraphQLInputObjectType getContainer(); + + /** + * @return this elements type that has been unwrapped of {@link graphql.schema.GraphQLNonNull} and {@link graphql.schema.GraphQLList} + */ + GraphQLNamedInputType getUnwrappedType(); + } + + /** + * Called when visiting a {@link GraphQLInputObjectField} in the schema + * + * @param inputObjectField the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitInputObjectField(GraphQLInputObjectField inputObjectField, InputObjectFieldVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLInputObjectType} + */ + interface InputObjectTypeVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLInputObjectType} in the schema + * + * @param inputObjectType the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitInputObjectType(GraphQLInputObjectType inputObjectType, InputObjectTypeVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLInterfaceType} + */ + interface InterfaceTypeVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLInterfaceType} in the schema + * + * @param interfaceType the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitInterfaceType(GraphQLInterfaceType interfaceType, InterfaceTypeVisitorEnvironment environment) { + return environment.ok(); + } + + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLObjectType} + */ + interface ObjectVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLObjectType} in the schema + * + * @param objectType the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitObjectType(GraphQLObjectType objectType, ObjectVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLScalarType} + */ + interface ScalarTypeVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLScalarType} in the schema + * + * @param scalarType the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitScalarType(GraphQLScalarType scalarType, ScalarTypeVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLUnionType} + */ + interface UnionTypeVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting a {@link GraphQLUnionType} in the schema + * + * @param unionType the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitUnionType(GraphQLUnionType unionType, UnionTypeVisitorEnvironment environment) { + return environment.ok(); + } + + + /** + * A {@link GraphQLSchemaVisitorEnvironment} environment specific to {@link GraphQLSchemaElement} + */ + interface SchemaElementVisitorEnvironment extends GraphQLSchemaVisitorEnvironment { + } + + /** + * Called when visiting any {@link GraphQLSchemaElement} in the schema. Since every element in the schema + * is a schema element, this visitor method will be called back for every element in the schema + * + * @param schemaElement the schema element being visited + * @param environment the visiting environment + * + * @return a control value which is typically {@link GraphQLSchemaVisitorEnvironment#ok()}} + */ + default GraphQLSchemaTraversalControl visitSchemaElement(GraphQLSchemaElement schemaElement, SchemaElementVisitorEnvironment environment) { + return environment.ok(); + } + + /** + * This allows you to turn this smarter visitor into the base {@link graphql.schema.GraphQLTypeVisitor} interface + * + * @return a type visitor + */ + default GraphQLTypeVisitor toTypeVisitor() { + return new GraphQLSchemaVisitorAdapter(this); + } + + +} diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorAdapter.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorAdapter.java new file mode 100644 index 0000000000..7b42b4f01a --- /dev/null +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorAdapter.java @@ -0,0 +1,265 @@ +package graphql.schema.visitor; + +import graphql.Internal; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLDirectiveContainer; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedInputType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import java.util.function.Supplier; + +import static graphql.schema.visitor.GraphQLSchemaVisitor.FieldDefinitionVisitorEnvironment; +import static graphql.schema.visitor.GraphQLSchemaVisitor.ObjectVisitorEnvironment; + +@Internal +class GraphQLSchemaVisitorAdapter extends GraphQLTypeVisitorStub { + + private final GraphQLSchemaVisitor schemaVisitor; + + GraphQLSchemaVisitorAdapter(GraphQLSchemaVisitor schemaVisitor) { + this.schemaVisitor = schemaVisitor; + } + + static class SchemaElementEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.SchemaElementVisitorEnvironment { + public SchemaElementEnv(TraverserContext context) { + super(context); + } + } + + private TraversalControl visitE(TraverserContext context, Supplier visitCall) { + + GraphQLSchemaTraversalControl generalCall = schemaVisitor.visitSchemaElement(context.thisNode(), new SchemaElementEnv(context)); + // if they have changed anything in the general schema element visitation then we don't call the specific visit method + if (generalCall.isAbortive() || generalCall.isMutative()) { + return generalCall.toTraversalControl(context); + } + GraphQLSchemaTraversalControl specificCall = visitCall.get(); + return specificCall.toTraversalControl(context); + } + + static class AppliedDirectiveArgumentEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.AppliedDirectiveArgumentVisitorEnvironment { + public AppliedDirectiveArgumentEnv(TraverserContext context) { + super(context); + } + + @Override + public GraphQLAppliedDirective getContainer() { + return (GraphQLAppliedDirective) context.getParentNode(); + } + + @Override + public GraphQLNamedInputType getUnwrappedType() { + return GraphQLTypeUtil.unwrapAllAs(getElement().getType()); + } + } + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitAppliedDirectiveArgument(node, new AppliedDirectiveArgumentEnv(context))); + } + + static class AppliedDirectiveEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.AppliedDirectiveVisitorEnvironment { + public AppliedDirectiveEnv(TraverserContext context) { + super(context); + } + + @Override + public GraphQLDirectiveContainer getContainer() { + return (GraphQLDirectiveContainer) context.getParentNode(); + } + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitAppliedDirective(node, new AppliedDirectiveEnv(context))); + } + + static class ArgumentEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.ArgumentVisitorEnvironment { + public ArgumentEnv(TraverserContext context) { + super(context); + } + + @Override + public GraphQLNamedSchemaElement getContainer() { + return (GraphQLNamedSchemaElement) context.getParentNode(); + } + + @Override + public GraphQLNamedInputType getUnwrappedType() { + return GraphQLTypeUtil.unwrapAllAs(getElement().getType()); + } + } + + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitArgument(node, new ArgumentEnv(context))); + } + + + static class DirectiveEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.DirectiveVisitorEnvironment { + public DirectiveEnv(TraverserContext context) { + super(context); + } + } + + @Override + public TraversalControl visitGraphQLDirective(GraphQLDirective node, TraverserContext context) { + // + // we only want to visit directive definitions at the schema level + // this is our chance to fix up the applied directive problem + // of one class used in two contexts. + // + if (context.getParentNode() == null) { + return visitE(context, () -> schemaVisitor.visitDirective(node, new DirectiveEnv(context))); + + } + return TraversalControl.CONTINUE; + } + + static class EnumTypeEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.EnumTypeVisitorEnvironment { + public EnumTypeEnv(TraverserContext context) { + super(context); + } + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitEnumType(node, new EnumTypeEnv(context))); + } + + static class EnumValueDefinitionEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.EnumValueDefinitionVisitorEnvironment { + public EnumValueDefinitionEnv(TraverserContext context) { + super(context); + } + + @Override + public GraphQLEnumType getContainer() { + return (GraphQLEnumType) context.getParentNode(); + } + } + + @Override + public TraversalControl visitGraphQLEnumValueDefinition(GraphQLEnumValueDefinition node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitEnumValueDefinition(node, new EnumValueDefinitionEnv(context))); + } + + static class FieldDefinitionEnv extends GraphQLSchemaVisitorEnvironmentImpl implements FieldDefinitionVisitorEnvironment { + + public FieldDefinitionEnv(TraverserContext context) { + super(context); + } + + @Override + public GraphQLFieldsContainer getContainer() { + return (GraphQLFieldsContainer) context.getParentNode(); + } + + @Override + public GraphQLNamedOutputType getUnwrappedType() { + return GraphQLTypeUtil.unwrapAllAs(getElement().getType()); + } + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitFieldDefinition(node, new FieldDefinitionEnv(context))); + } + + static class InputObjectFieldEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.InputObjectFieldVisitorEnvironment { + public InputObjectFieldEnv(TraverserContext context) { + super(context); + } + + @Override + public GraphQLInputObjectType getContainer() { + return (GraphQLInputObjectType) context.getParentNode(); + } + + @Override + public GraphQLNamedInputType getUnwrappedType() { + return GraphQLTypeUtil.unwrapAllAs(getElement().getType()); + } + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitInputObjectField(node, new InputObjectFieldEnv(context))); + } + + static class InputObjectTypeEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.InputObjectTypeVisitorEnvironment { + public InputObjectTypeEnv(TraverserContext context) { + super(context); + } + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitInputObjectType(node, new InputObjectTypeEnv(context))); + } + + + static class InterfaceTypeEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.InterfaceTypeVisitorEnvironment { + public InterfaceTypeEnv(TraverserContext context) { + super(context); + } + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitInterfaceType(node, new InterfaceTypeEnv(context))); + } + + static class ObjectEnv extends GraphQLSchemaVisitorEnvironmentImpl implements ObjectVisitorEnvironment { + public ObjectEnv(TraverserContext context) { + super(context); + } + + } + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitObjectType(node, new ObjectEnv(context))); + } + + + static class ScalarTypeEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.ScalarTypeVisitorEnvironment { + public ScalarTypeEnv(TraverserContext context) { + super(context); + } + } + + @Override + public TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitScalarType(node, new ScalarTypeEnv(context))); + } + + static class UnionTypeEnv extends GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitor.UnionTypeVisitorEnvironment { + public UnionTypeEnv(TraverserContext context) { + super(context); + } + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext context) { + return visitE(context, () -> schemaVisitor.visitUnionType(node, new UnionTypeEnv(context))); + } +} diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironment.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironment.java new file mode 100644 index 0000000000..99cc4988e8 --- /dev/null +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironment.java @@ -0,0 +1,89 @@ +package graphql.schema.visitor; + +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; + +import java.util.List; + +public interface GraphQLSchemaVisitorEnvironment { + + /** + * @return the element that is being visited + */ + T getElement(); + + /** + * This returns the schema element that led to this element, eg a field is contained + * in a type which is pointed to be another field say. + * + * @return a list of schema elements leading to this current element + */ + List getLeadingElements(); + + /** + * This returns the schema element that led to this element but with {@link graphql.schema.GraphQLModifiedType} wrappers + * removed. + * + * @return a list of schema elements leading to this current element + */ + List getUnwrappedLeadingElements(); + + /** + * @return the schema that is being visited upon + */ + GraphQLSchema getSchema(); + + /** + * This will return a value if the visitation call was via {@link graphql.schema.SchemaTransformer} + * + * @return a code registry builder + */ + GraphQLCodeRegistry.Builder getCodeRegistry(); + + + /** + * @return When returned the traversal will continue as planned. + */ + GraphQLSchemaTraversalControl ok(); + + /** + * @return When returned from a {@link GraphQLSchemaVisitor}'s method, indicates exiting the traversal. + */ + GraphQLSchemaTraversalControl quit(); + + /** + * Called to change the current node to the specific node + * + * @param schemaElement the schema element to change + * + * @return a control that changes the current node to a the given node + */ + GraphQLSchemaTraversalControl changeNode(T schemaElement); + + /** + * Called to delete the current node + * + * @return a control that deletes the current node + */ + GraphQLSchemaTraversalControl deleteNode(); + + /** + * Called to insert the current schema element after the specified schema element + * + * @param toInsertAfter the schema element to after before + * + * @return a control that inserts the given node after the current node + */ + GraphQLSchemaTraversalControl insertAfter(T toInsertAfter); + + /** + * Called to insert the current schema element before the specified schema element + * + * @param toInsertBefore the schema element to insert before + * + * @return a control that inserts the given node before the current node + */ + GraphQLSchemaTraversalControl insertBefore(T toInsertBefore); + +} diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java new file mode 100644 index 0000000000..41bb7edffc --- /dev/null +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java @@ -0,0 +1,102 @@ +package graphql.schema.visitor; + +import graphql.Internal; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLModifiedType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.util.TraverserContext; +import org.jspecify.annotations.NonNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.CONTINUE; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.Control; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.DELETE; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.QUIT; + +@Internal +class GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitorEnvironment { + + protected final TraverserContext context; + + GraphQLSchemaVisitorEnvironmentImpl(TraverserContext context) { + this.context = context; + } + + @Override + public GraphQLSchema getSchema() { + return context.getVarFromParents(GraphQLSchema.class); + } + + @Override + public GraphQLCodeRegistry.Builder getCodeRegistry() { + return context.getVarFromParents(GraphQLCodeRegistry.Builder.class); + } + + @Override + public T getElement() { + //noinspection unchecked + return (T) context.thisNode(); + } + + + @Override + public List getLeadingElements() { + return buildParentsImpl(schemaElement -> true); + } + + @Override + public List getUnwrappedLeadingElements() { + return buildParentsImpl(schemaElement -> !(schemaElement instanceof GraphQLModifiedType)); + } + + @NonNull + private List buildParentsImpl(Predicate predicate) { + List list = new ArrayList<>(); + TraverserContext parentContext = context.getParentContext(); + while (parentContext != null) { + GraphQLSchemaElement parentNode = parentContext.thisNode(); + if (parentNode != null) { + if (predicate.test(parentNode)) { + list.add(parentNode); + } + } + parentContext = parentContext.getParentContext(); + } + return list; + } + + @Override + public GraphQLSchemaTraversalControl ok() { + return CONTINUE; + } + + @Override + public GraphQLSchemaTraversalControl quit() { + return QUIT; + } + + + @Override + public GraphQLSchemaTraversalControl changeNode(T schemaElement) { + return new GraphQLSchemaTraversalControl(Control.CHANGE, schemaElement); + } + + @Override + public GraphQLSchemaTraversalControl deleteNode() { + return DELETE; + } + + @Override + public GraphQLSchemaTraversalControl insertAfter(T toInsertAfter) { + return new GraphQLSchemaTraversalControl(Control.INSERT_AFTER, toInsertAfter); + } + + @Override + public GraphQLSchemaTraversalControl insertBefore(T toInsertBefore) { + return new GraphQLSchemaTraversalControl(Control.INSERT_BEFORE, toInsertBefore); + } +} diff --git a/src/main/java/graphql/util/Anonymizer.java b/src/main/java/graphql/util/Anonymizer.java new file mode 100644 index 0000000000..ed00c7fbd6 --- /dev/null +++ b/src/main/java/graphql/util/Anonymizer.java @@ -0,0 +1,948 @@ +package graphql.util; + +import graphql.AssertException; +import graphql.Directives; +import graphql.GraphQLContext; +import graphql.PublicApi; +import graphql.Scalars; +import graphql.analysis.QueryTraverser; +import graphql.analysis.QueryVisitor; +import graphql.analysis.QueryVisitorFieldArgumentEnvironment; +import graphql.analysis.QueryVisitorFieldArgumentInputValue; +import graphql.analysis.QueryVisitorFieldArgumentValueEnvironment; +import graphql.analysis.QueryVisitorFieldEnvironment; +import graphql.analysis.QueryVisitorFragmentSpreadEnvironment; +import graphql.analysis.QueryVisitorInlineFragmentEnvironment; +import graphql.collect.ImmutableKit; +import graphql.execution.ValuesResolver; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.ArrayValue; +import graphql.language.AstPrinter; +import graphql.language.AstTransformer; +import graphql.language.Definition; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.EnumValue; +import graphql.language.Field; +import graphql.language.FragmentDefinition; +import graphql.language.FragmentSpread; +import graphql.language.InlineFragment; +import graphql.language.IntValue; +import graphql.language.ListType; +import graphql.language.Node; +import graphql.language.NodeVisitorStub; +import graphql.language.NonNullType; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.OperationDefinition; +import graphql.language.StringValue; +import graphql.language.Type; +import graphql.language.TypeName; +import graphql.language.Value; +import graphql.language.VariableDefinition; +import graphql.language.VariableReference; +import graphql.parser.Parser; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLEnumValueDefinition; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLImplementingType; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLList; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLNamedSchemaElement; +import graphql.schema.GraphQLNamedType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLScalarType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeReference; +import graphql.schema.GraphQLTypeVisitor; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.GraphQLUnionType; +import graphql.schema.SchemaTransformer; +import graphql.schema.TypeResolver; +import graphql.schema.idl.DirectiveInfo; +import graphql.schema.idl.ScalarInfo; +import graphql.schema.idl.TypeUtil; +import graphql.schema.impl.SchemaUtil; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiConsumer; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.parser.ParserEnvironment.newParserEnvironment; +import static graphql.schema.GraphQLNonNull.nonNull; +import static graphql.schema.GraphQLTypeUtil.unwrapNonNull; +import static graphql.schema.GraphQLTypeUtil.unwrapNonNullAs; +import static graphql.schema.GraphQLTypeUtil.unwrapOneAs; +import static graphql.schema.idl.SchemaGenerator.createdMockedSchema; +import static graphql.util.TraversalControl.CONTINUE; +import static graphql.util.TreeTransformerUtil.changeNode; + +/** + * Util class which converts schemas and optionally queries + * into anonymized schemas and queries. + */ +@PublicApi +public class Anonymizer { + + public static class AnonymizeResult { + private GraphQLSchema schema; + private List queries; + + public AnonymizeResult(GraphQLSchema schema, List queries) { + this.schema = schema; + this.queries = queries; + } + + public GraphQLSchema getSchema() { + return schema; + } + + public List getQueries() { + return queries; + } + } + + public static GraphQLSchema anonymizeSchema(String sdl) { + return anonymizeSchemaAndQueries(createdMockedSchema(sdl), ImmutableKit.emptyList(), ImmutableKit.emptyMap()).schema; + } + + public static GraphQLSchema anonymizeSchema(GraphQLSchema schema) { + return anonymizeSchemaAndQueries(schema, ImmutableKit.emptyList(), ImmutableKit.emptyMap()).schema; + } + + public static AnonymizeResult anonymizeSchemaAndQueries(String sdl, List queries) { + return anonymizeSchemaAndQueries(createdMockedSchema(sdl), queries, ImmutableKit.emptyMap()); + } + + public static AnonymizeResult anonymizeSchemaAndQueries(GraphQLSchema schema, List queries) { + return anonymizeSchemaAndQueries(schema, queries, ImmutableKit.emptyMap()); + } + + public static AnonymizeResult anonymizeSchemaAndQueries(String sdl, List queries, Map variables) { + return anonymizeSchemaAndQueries(createdMockedSchema(sdl), queries, variables); + } + + public static AnonymizeResult anonymizeSchemaAndQueries(GraphQLSchema schema, List queries, Map variables) { + assertNotNull(queries, "queries can't be null"); + + AtomicInteger defaultStringValueCounter = new AtomicInteger(1); + AtomicInteger defaultIntValueCounter = new AtomicInteger(1); + + Map newNameMap = recordNewNamesForSchema(schema); + + // stores a reverse index of anonymized argument name to argument instance + // this is to handle cases where the fields on implementing types MUST have the same exact argument and default + // value definitions as the fields on the implemented interface. (argument default values must match exactly) + Map renamedArgumentsMap = new HashMap<>(); + + SchemaTransformer schemaTransformer = new SchemaTransformer(); + GraphQLSchema newSchema = schemaTransformer.transform(schema, new GraphQLTypeVisitorStub() { + + @Override + public TraversalControl visitGraphQLTypeReference(GraphQLTypeReference graphQLTypeReference, TraverserContext context) { + GraphQLNamedSchemaElement type = (GraphQLNamedSchemaElement) schema.getType(graphQLTypeReference.getName()); + String newName = newNameMap.get(type); + GraphQLTypeReference newReference = GraphQLTypeReference.typeRef(newName); + return changeNode(context, newReference); + } + + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument graphQLArgument, TraverserContext context) { + String newName = assertNotNull(newNameMap.get(graphQLArgument)); + + if (context.getParentNode() instanceof GraphQLFieldDefinition) { + // arguments on field definitions must be identical across implementing types and interfaces. + if (renamedArgumentsMap.containsKey(newName)) { + return changeNode(context, renamedArgumentsMap.get(newName).transform(b -> { + })); + } + } + + GraphQLArgument newElement = graphQLArgument.transform(builder -> { + builder.name(newName).description(null).definition(null); + if (graphQLArgument.hasSetDefaultValue()) { + Value defaultValueLiteral = ValuesResolver.valueToLiteral(graphQLArgument.getArgumentDefaultValue(), graphQLArgument.getType(), GraphQLContext.getDefault(), Locale.getDefault()); + builder.defaultValueLiteral(replaceValue(defaultValueLiteral, graphQLArgument.getType(), newNameMap, defaultStringValueCounter, defaultIntValueCounter)); + } + + if (graphQLArgument.hasSetValue()) { + Value valueLiteral = ValuesResolver.valueToLiteral(graphQLArgument.getArgumentValue(), graphQLArgument.getType(), GraphQLContext.getDefault(), Locale.getDefault()); + builder.valueLiteral(replaceValue(valueLiteral, graphQLArgument.getType(), newNameMap, defaultStringValueCounter, defaultIntValueCounter)); + } + }); + + renamedArgumentsMap.put(newName, newElement); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument graphQLArgument, TraverserContext context) { + String newName = assertNotNull(newNameMap.get(graphQLArgument)); + + GraphQLAppliedDirectiveArgument newElement = graphQLArgument.transform(builder -> { + builder.name(newName).description(null).definition(null); + if (graphQLArgument.hasSetValue()) { + Value valueLiteral = ValuesResolver.valueToLiteral(graphQLArgument.getArgumentValue(), graphQLArgument.getType(), GraphQLContext.getDefault(), Locale.getDefault()); + builder.valueLiteral(replaceValue(valueLiteral, graphQLArgument.getType(), newNameMap, defaultStringValueCounter, defaultIntValueCounter)); + } + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType graphQLInterfaceType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLInterfaceType)) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLInterfaceType)); + GraphQLInterfaceType newElement = graphQLInterfaceType.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + GraphQLCodeRegistry.Builder codeRegistry = assertNotNull(context.getVarFromParents(GraphQLCodeRegistry.Builder.class)); + TypeResolver typeResolver = codeRegistry.getTypeResolver(graphQLInterfaceType); + codeRegistry.typeResolver(newName, typeResolver); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType graphQLEnumType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLEnumType)) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLEnumType)); + GraphQLEnumType newElement = graphQLEnumType.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLEnumValueDefinition(GraphQLEnumValueDefinition enumValueDefinition, TraverserContext context) { + String newName = assertNotNull(newNameMap.get(enumValueDefinition)); + GraphQLEnumValueDefinition newElement = enumValueDefinition.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition graphQLFieldDefinition, TraverserContext context) { + String newName = assertNotNull(newNameMap.get(graphQLFieldDefinition)); + GraphQLFieldDefinition newElement = graphQLFieldDefinition.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLDirective(GraphQLDirective graphQLDirective, TraverserContext context) { + if (DirectiveInfo.isGraphqlSpecifiedDirective(graphQLDirective.getName())) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLDirective)); + GraphQLDirective newElement = graphQLDirective.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective graphQLDirective, TraverserContext context) { + if (Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName().equals(graphQLDirective.getName())) { + GraphQLAppliedDirectiveArgument reason = GraphQLAppliedDirectiveArgument.newArgument().name("reason") + .type(Scalars.GraphQLString) + .clearValue() + .build(); + GraphQLAppliedDirective newElement = graphQLDirective.transform(builder -> { + builder.description(null).argument(reason); + }); + changeNode(context, newElement); + return TraversalControl.ABORT; + } + if (DirectiveInfo.isGraphqlSpecifiedDirective(graphQLDirective.getName())) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLDirective)); + GraphQLAppliedDirective newElement = graphQLDirective.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField graphQLInputObjectField, TraverserContext context) { + String newName = assertNotNull(newNameMap.get(graphQLInputObjectField)); + + Value defaultValue = null; + if (graphQLInputObjectField.hasSetDefaultValue()) { + defaultValue = ValuesResolver.valueToLiteral(graphQLInputObjectField.getInputFieldDefaultValue(), graphQLInputObjectField.getType(), GraphQLContext.getDefault(), Locale.getDefault()); + defaultValue = replaceValue(defaultValue, graphQLInputObjectField.getType(), newNameMap, defaultStringValueCounter, defaultIntValueCounter); + } + + Value finalDefaultValue = defaultValue; + GraphQLInputObjectField newElement = graphQLInputObjectField.transform(builder -> { + builder.name(newName); + if (finalDefaultValue != null) { + builder.defaultValueLiteral(finalDefaultValue); + } + builder.description(null); + builder.definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType graphQLInputObjectType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLInputObjectType)) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLInputObjectType)); + GraphQLInputObjectType newElement = graphQLInputObjectType.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType graphQLObjectType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLObjectType)) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLObjectType)); + GraphQLObjectType newElement = graphQLObjectType.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLScalarType(GraphQLScalarType graphQLScalarType, TraverserContext context) { + if (ScalarInfo.isGraphqlSpecifiedScalar(graphQLScalarType)) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLScalarType)); + GraphQLScalarType newElement = graphQLScalarType.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + return changeNode(context, newElement); + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType graphQLUnionType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLUnionType)) { + return TraversalControl.ABORT; + } + String newName = assertNotNull(newNameMap.get(graphQLUnionType)); + GraphQLUnionType newElement = graphQLUnionType.transform(builder -> { + builder.name(newName).description(null).definition(null); + }); + GraphQLCodeRegistry.Builder codeRegistry = assertNotNull(context.getVarFromParents(GraphQLCodeRegistry.Builder.class)); + TypeResolver typeResolver = codeRegistry.getTypeResolver(graphQLUnionType); + codeRegistry.typeResolver(newName, typeResolver); + return changeNode(context, newElement); + } + }); + + List newQueries = new ArrayList<>(); + for (String query : queries) { + String newQuery = rewriteQuery(query, schema, newNameMap, variables); + newQueries.add(newQuery); + } + AnonymizeResult result = new AnonymizeResult(newSchema, newQueries); + return result; + } + + private static Value replaceValue(Value valueLiteral, GraphQLInputType argType, Map newNameMap, AtomicInteger defaultStringValueCounter, AtomicInteger defaultIntValueCounter) { + if (valueLiteral instanceof ArrayValue) { + List values = ((ArrayValue) valueLiteral).getValues(); + ArrayValue.Builder newArrayValueBuilder = ArrayValue.newArrayValue(); + for (Value value : values) { + // [Type!]! -> Type! + GraphQLInputType unwrappedInputType = unwrapOneAs(unwrapNonNull(argType)); + newArrayValueBuilder.value(replaceValue(value, unwrappedInputType, newNameMap, defaultStringValueCounter, defaultIntValueCounter)); + } + return newArrayValueBuilder.build(); + } else if (valueLiteral instanceof StringValue) { + return StringValue.newStringValue("stringValue" + defaultStringValueCounter.getAndIncrement()).build(); + } else if (valueLiteral instanceof IntValue) { + return IntValue.newIntValue(BigInteger.valueOf(defaultIntValueCounter.getAndIncrement())).build(); + } else if (valueLiteral instanceof EnumValue) { + GraphQLEnumType enumType = unwrapNonNullAs(argType); + GraphQLEnumValueDefinition enumValueDefinition = enumType.getValue(((EnumValue) valueLiteral).getName()); + String newName = newNameMap.get(enumValueDefinition); + return new EnumValue(newName); + } else if (valueLiteral instanceof ObjectValue) { + GraphQLInputObjectType inputObjectType = unwrapNonNullAs(argType); + ObjectValue.Builder newObjectValueBuilder = ObjectValue.newObjectValue(); + List objectFields = ((ObjectValue) valueLiteral).getObjectFields(); + for (ObjectField objectField : objectFields) { + String objectFieldName = objectField.getName(); + Value objectFieldValue = objectField.getValue(); + GraphQLInputObjectField inputObjectTypeField = inputObjectType.getField(objectFieldName); + GraphQLInputType fieldType = unwrapNonNullAs(inputObjectTypeField.getType()); + ObjectField newObjectField = objectField.transform(builder -> { + builder.name(newNameMap.get(inputObjectTypeField)); + builder.value(replaceValue(objectFieldValue, fieldType, newNameMap, defaultStringValueCounter, defaultIntValueCounter)); + }); + newObjectValueBuilder.objectField(newObjectField); + } + return newObjectValueBuilder.build(); + } + return valueLiteral; + } + + public static Map recordNewNamesForSchema(GraphQLSchema schema) { + AtomicInteger objectCounter = new AtomicInteger(1); + AtomicInteger inputObjectCounter = new AtomicInteger(1); + AtomicInteger inputObjectFieldCounter = new AtomicInteger(1); + AtomicInteger fieldCounter = new AtomicInteger(1); + AtomicInteger scalarCounter = new AtomicInteger(1); + AtomicInteger directiveCounter = new AtomicInteger(1); + AtomicInteger argumentCounter = new AtomicInteger(1); + AtomicInteger interfaceCounter = new AtomicInteger(1); + AtomicInteger unionCounter = new AtomicInteger(1); + AtomicInteger enumCounter = new AtomicInteger(1); + AtomicInteger enumValueCounter = new AtomicInteger(1); + + Map newNameMap = new LinkedHashMap<>(); + + Map directivesOriginalToNewNameMap = new HashMap<>(); + // DirectiveName.argumentName -> newArgumentName + Map seenArgumentsOnDirectivesMap = new HashMap<>(); + + Map> interfaceToImplementations = + new SchemaUtil().groupImplementationsForInterfacesAndObjects(schema); + + Consumer recordDirectiveName = (graphQLDirective) -> { + String directiveName = graphQLDirective.getName(); + if (directivesOriginalToNewNameMap.containsKey(directiveName)) { + newNameMap.put(graphQLDirective, directivesOriginalToNewNameMap.get(directiveName)); + return; + } + + String newName = "Directive" + directiveCounter.getAndIncrement(); + newNameMap.put(graphQLDirective, newName); + directivesOriginalToNewNameMap.put(directiveName, newName); + }; + + BiConsumer recordDirectiveArgumentName = (graphQLArgument, directiveArgumentKey) -> { + if (seenArgumentsOnDirectivesMap.containsKey(directiveArgumentKey)) { + newNameMap.put(graphQLArgument, seenArgumentsOnDirectivesMap.get(directiveArgumentKey)); + return; + } + String newName = "argument" + argumentCounter.getAndIncrement(); + newNameMap.put(graphQLArgument, newName); + seenArgumentsOnDirectivesMap.put(directiveArgumentKey, newName); + }; + + GraphQLTypeVisitor visitor = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument graphQLArgument, TraverserContext context) { + String curName = graphQLArgument.getName(); + GraphQLSchemaElement parentNode = context.getParentNode(); + if (parentNode instanceof GraphQLDirective) { + // if we already went over the argument for this directive name, no need to add new names + String directiveArgumentKey = ((GraphQLDirective) parentNode).getName() + graphQLArgument.getName(); + recordDirectiveArgumentName.accept(graphQLArgument, directiveArgumentKey); + return CONTINUE; + } + + if (!(parentNode instanceof GraphQLFieldDefinition)) { + String newName = "argument" + argumentCounter.getAndIncrement(); + newNameMap.put(graphQLArgument, newName); + return CONTINUE; + } + GraphQLFieldDefinition fieldDefinition = (GraphQLFieldDefinition) parentNode; + String fieldName = fieldDefinition.getName(); + GraphQLImplementingType implementingType = (GraphQLImplementingType) context.getParentContext().getParentNode(); + Set matchingInterfaceFieldDefinitions = getSameFields(fieldName, implementingType.getName(), interfaceToImplementations, schema); + String newName; + if (matchingInterfaceFieldDefinitions.size() == 0) { + newName = "argument" + argumentCounter.getAndIncrement(); + } else { + List matchingArgumentDefinitions = getMatchingArgumentDefinitions(curName, matchingInterfaceFieldDefinitions); + if (matchingArgumentDefinitions.size() == 0) { + newName = "argument" + argumentCounter.getAndIncrement(); + } else { + if (newNameMap.containsKey(matchingArgumentDefinitions.get(0))) { + newName = newNameMap.get(matchingArgumentDefinitions.get(0)); + } else { + newName = "argument" + argumentCounter.getAndIncrement(); + for (GraphQLArgument argument : matchingArgumentDefinitions) { + newNameMap.put(argument, newName); + } + } + } + } + newNameMap.put(graphQLArgument, newName); + + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument graphQLArgument, TraverserContext context) { + GraphQLSchemaElement parentNode = context.getParentNode(); + if (parentNode instanceof GraphQLAppliedDirective) { + // if we already went over the argument for this directive name, no need to add new names + String directiveArgumentKey = ((GraphQLAppliedDirective) parentNode).getName() + graphQLArgument.getName(); + recordDirectiveArgumentName.accept(graphQLArgument, directiveArgumentKey); + } + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLDirective(GraphQLDirective graphQLDirective, TraverserContext context) { + if (DirectiveInfo.isGraphqlSpecifiedDirective(graphQLDirective)) { + return TraversalControl.ABORT; + } + recordDirectiveName.accept(graphQLDirective); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective graphQLAppliedDirective, TraverserContext context) { + if (DirectiveInfo.isGraphqlSpecifiedDirective(graphQLAppliedDirective.getName())) { + return TraversalControl.ABORT; + } + recordDirectiveName.accept(graphQLAppliedDirective); + return CONTINUE; + } + + + @Override + public TraversalControl visitGraphQLInterfaceType(GraphQLInterfaceType graphQLInterfaceType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLInterfaceType)) { + return TraversalControl.ABORT; + } + String newName = "Interface" + interfaceCounter.getAndIncrement(); + newNameMap.put(graphQLInterfaceType, newName); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLEnumType(GraphQLEnumType graphQLEnumType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLEnumType)) { + return TraversalControl.ABORT; + } + String newName = "Enum" + enumCounter.getAndIncrement(); + newNameMap.put(graphQLEnumType, newName); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLEnumValueDefinition(GraphQLEnumValueDefinition enumValueDefinition, TraverserContext context) { + String newName = "EnumValue" + enumValueCounter.getAndIncrement(); + newNameMap.put(enumValueDefinition, newName); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition graphQLFieldDefinition, TraverserContext context) { + String fieldName = graphQLFieldDefinition.getName(); + GraphQLImplementingType parentNode = (GraphQLImplementingType) context.getParentNode(); + Set sameFields = getSameFields(fieldName, parentNode.getName(), interfaceToImplementations, schema); + String newName; + if (sameFields.size() == 0) { + newName = "field" + fieldCounter.getAndIncrement(); + } else { + if (newNameMap.containsKey(sameFields.iterator().next())) { + newName = newNameMap.get(sameFields.iterator().next()); + } else { + newName = "field" + fieldCounter.getAndIncrement(); + for (GraphQLFieldDefinition fieldDefinition : sameFields) { + newNameMap.put(fieldDefinition, newName); + } + } + } + newNameMap.put(graphQLFieldDefinition, newName); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField graphQLInputObjectField, TraverserContext context) { + String newName = "inputField" + inputObjectFieldCounter.getAndIncrement(); + newNameMap.put(graphQLInputObjectField, newName); + return CONTINUE; + + } + + @Override + public TraversalControl visitGraphQLInputObjectType(GraphQLInputObjectType graphQLInputObjectType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLInputObjectType)) { + return TraversalControl.ABORT; + } + String newName = "InputObject" + inputObjectCounter.getAndIncrement(); + newNameMap.put(graphQLInputObjectType, newName); + return CONTINUE; + } + + + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType graphQLObjectType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLObjectType)) { + return TraversalControl.ABORT; + } + String newName = "Object" + objectCounter.getAndIncrement(); + newNameMap.put(graphQLObjectType, newName); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLScalarType(GraphQLScalarType graphQLScalarType, TraverserContext context) { + if (ScalarInfo.isGraphqlSpecifiedScalar(graphQLScalarType)) { + return TraversalControl.ABORT; + } + String newName = "Scalar" + scalarCounter.getAndIncrement(); + newNameMap.put(graphQLScalarType, newName); + return CONTINUE; + } + + @Override + public TraversalControl visitGraphQLUnionType(GraphQLUnionType graphQLUnionType, TraverserContext context) { + if (Introspection.isIntrospectionTypes(graphQLUnionType)) { + return TraversalControl.ABORT; + } + String newName = "Union" + unionCounter.getAndIncrement(); + newNameMap.put(graphQLUnionType, newName); + return CONTINUE; + } + }; + + SchemaTransformer.transformSchema(schema, visitor); + return newNameMap; + } + + private static Set getSameFields(String fieldName, + String objectOrInterfaceName, + Map> interfaceToImplementations, + GraphQLSchema schema + ) { + Set result = new LinkedHashSet<>(); + Set alreadyChecked = new LinkedHashSet<>(); + getSameFieldsImpl(fieldName, objectOrInterfaceName, interfaceToImplementations, schema, alreadyChecked, result); + return result; + } + + private static void getSameFieldsImpl(String fieldName, + String curObjectOrInterface, + Map> interfaceToImplementations, + GraphQLSchema schema, + Set alreadyChecked, + Set result) { + if (alreadyChecked.contains(curObjectOrInterface)) { + return; + } + alreadyChecked.add(curObjectOrInterface); + + // "up": get all Interfaces + GraphQLImplementingType type = (GraphQLImplementingType) schema.getType(curObjectOrInterface); + List interfaces = type.getInterfaces(); + getMatchingFieldDefinitions(fieldName, interfaces, result); + for (GraphQLNamedOutputType interfaze : interfaces) { + getSameFieldsImpl(fieldName, interfaze.getName(), interfaceToImplementations, schema, alreadyChecked, result); + } + + // "down": get all Object or Interfaces + List implementations = interfaceToImplementations.get(curObjectOrInterface); + if (implementations == null) { + return; + } + getMatchingFieldDefinitions(fieldName, implementations, result); + for (GraphQLImplementingType implementingType : implementations) { + getSameFieldsImpl(fieldName, implementingType.getName(), interfaceToImplementations, schema, alreadyChecked, result); + } + } + + private static void getMatchingFieldDefinitions( + String fieldName, + List interfaces, + Set result) { + for (GraphQLType iface : interfaces) { + GraphQLImplementingType implementingType = (GraphQLImplementingType) iface; + if (implementingType.getFieldDefinition(fieldName) != null) { + result.add(implementingType.getFieldDefinition(fieldName)); + } + } + } + + private static List getMatchingArgumentDefinitions( + String name, + Set fieldDefinitions) { + List result = new ArrayList<>(); + for (GraphQLFieldDefinition fieldDefinition : fieldDefinitions) { + Optional.ofNullable(fieldDefinition.getArgument(name)).ifPresent(result::add); + } + return result; + } + + private static String rewriteQuery(String query, GraphQLSchema schema, Map newNames, Map variables) { + AtomicInteger fragmentCounter = new AtomicInteger(1); + AtomicInteger variableCounter = new AtomicInteger(1); + Map astNodeToNewName = new LinkedHashMap<>(); + Map variableNames = new LinkedHashMap<>(); + Map fieldToFieldDefinition = new LinkedHashMap<>(); + + Document document = Parser.parse(newParserEnvironment().document(query).build()); + assertUniqueOperation(document); + QueryTraverser queryTraverser = QueryTraverser.newQueryTraverser().document(document).schema(schema).variables(variables).build(); + queryTraverser.visitDepthFirst(new QueryVisitor() { + + @Override + public void visitField(QueryVisitorFieldEnvironment env) { + if (env.isTypeNameIntrospectionField()) { + return; + } + fieldToFieldDefinition.put(env.getField(), env.getFieldDefinition()); + String newName = assertNotNull(newNames.get(env.getFieldDefinition())); + Field field = env.getField(); + astNodeToNewName.put(field, newName); + + List directives = field.getDirectives(); + for (Directive directive : directives) { + // this is a directive definition + GraphQLDirective directiveDefinition = assertNotNull(schema.getDirective(directive.getName()), "%s directive definition not found ", directive.getName()); + String directiveName = directiveDefinition.getName(); + String newDirectiveName = assertNotNull(newNames.get(directiveDefinition), "No new name found for directive %s", directiveName); + astNodeToNewName.put(directive, newDirectiveName); + + for (Argument argument : directive.getArguments()) { + GraphQLArgument argumentDefinition = directiveDefinition.getArgument(argument.getName()); + String newArgumentName = assertNotNull(newNames.get(argumentDefinition), "No new name found for directive %s argument %s", directiveName, argument.getName()); + astNodeToNewName.put(argument, newArgumentName); + visitDirectiveArgumentValues(directive, argument.getValue()); + } + } + } + + private void visitDirectiveArgumentValues(Directive directive, Value value) { + if (value instanceof VariableReference) { + String name = ((VariableReference) value).getName(); + if (!variableNames.containsKey(name)) { + String newName = "var" + variableCounter.getAndIncrement(); + variableNames.put(name, newName); + } + } + } + + @Override + public void visitInlineFragment(QueryVisitorInlineFragmentEnvironment queryVisitorInlineFragmentEnvironment) { + } + + @Override + public TraversalControl visitArgumentValue(QueryVisitorFieldArgumentValueEnvironment environment) { + QueryVisitorFieldArgumentInputValue argumentInputValue = environment.getArgumentInputValue(); + if (argumentInputValue.getValue() instanceof VariableReference) { + String name = ((VariableReference) argumentInputValue.getValue()).getName(); + if (!variableNames.containsKey(name)) { + String newName = "var" + variableCounter.getAndIncrement(); + variableNames.put(name, newName); + } + } + return CONTINUE; + } + + @Override + public void visitFragmentSpread(QueryVisitorFragmentSpreadEnvironment queryVisitorFragmentSpreadEnvironment) { + FragmentDefinition fragmentDefinition = queryVisitorFragmentSpreadEnvironment.getFragmentDefinition(); + String newName; + if (!astNodeToNewName.containsKey(fragmentDefinition)) { + newName = "Fragment" + fragmentCounter.getAndIncrement(); + astNodeToNewName.put(fragmentDefinition, newName); + } else { + newName = astNodeToNewName.get(fragmentDefinition); + } + astNodeToNewName.put(queryVisitorFragmentSpreadEnvironment.getFragmentSpread(), newName); + } + + @Override + public TraversalControl visitArgument(QueryVisitorFieldArgumentEnvironment environment) { + String newName = assertNotNull(newNames.get(environment.getGraphQLArgument())); + astNodeToNewName.put(environment.getArgument(), newName); + return CONTINUE; + } + }); + + AstTransformer astTransformer = new AstTransformer(); + AtomicInteger aliasCounter = new AtomicInteger(1); + AtomicInteger defaultStringValueCounter = new AtomicInteger(1); + AtomicInteger defaultIntValueCounter = new AtomicInteger(1); + + Document newDocument = (Document) astTransformer.transform(document, new NodeVisitorStub() { + + @Override + public TraversalControl visitDirective(Directive directive, TraverserContext context) { + String newName = assertNotNull(astNodeToNewName.get(directive)); + GraphQLDirective directiveDefinition = schema.getDirective(directive.getName()); + context.setVar(GraphQLDirective.class, directiveDefinition); + return changeNode(context, directive.transform(builder -> builder.name(newName))); + } + + @Override + public TraversalControl visitOperationDefinition(OperationDefinition node, TraverserContext context) { + if (node.getName() != null) { + return changeNode(context, node.transform(builder -> builder.name("operation"))); + } else { + return CONTINUE; + } + } + + @Override + public TraversalControl visitField(Field field, TraverserContext context) { + String newAlias = null; + if (field.getAlias() != null) { + newAlias = "alias" + aliasCounter.getAndIncrement(); + } + String newName; + if (field.getName().equals(Introspection.TypeNameMetaFieldDef.getName())) { + newName = Introspection.TypeNameMetaFieldDef.getName(); + } else { + newName = assertNotNull(astNodeToNewName.get(field)); + context.setVar(GraphQLFieldDefinition.class, assertNotNull(fieldToFieldDefinition.get(field))); + } + String finalNewAlias = newAlias; + return changeNode(context, field.transform(builder -> builder.name(newName).alias(finalNewAlias))); + } + + @Override + public TraversalControl visitVariableDefinition(VariableDefinition node, TraverserContext context) { + String newName = assertNotNull(variableNames.get(node.getName())); + VariableDefinition newNode = node.transform(builder -> { + builder.name(newName).comments(ImmutableKit.emptyList()); + + // convert variable language type to renamed language type + TypeName typeName = TypeUtil.unwrapAll(node.getType()); + GraphQLNamedType originalType = schema.getTypeAs(typeName.getName()); + // has the type name changed? (standard scalars such as String don't change) + if (newNames.containsKey(originalType)) { + String newTypeName = newNames.get(originalType); + builder.type(replaceTypeName(node.getType(), newTypeName)); + } + + if (node.getDefaultValue() != null) { + Value defaultValueLiteral = node.getDefaultValue(); + GraphQLType graphQLType = fromTypeToGraphQLType(node.getType(), schema); + builder.defaultValue(replaceValue(defaultValueLiteral, (GraphQLInputType) graphQLType, newNames, defaultStringValueCounter, defaultIntValueCounter)); + } + }); + + return changeNode(context, newNode); + } + + @Override + public TraversalControl visitVariableReference(VariableReference node, TraverserContext context) { + String newName = assertNotNull(variableNames.get(node.getName()), "No new variable name found for %s", node.getName()); + return changeNode(context, node.transform(builder -> builder.name(newName))); + } + + @Override + public TraversalControl visitFragmentDefinition(FragmentDefinition node, TraverserContext context) { + String newName = assertNotNull(astNodeToNewName.get(node)); + GraphQLType currentCondition = assertNotNull(schema.getType(node.getTypeCondition().getName())); + String newCondition = newNames.get(currentCondition); + return changeNode(context, node.transform(builder -> builder.name(newName).typeCondition(new TypeName(newCondition)))); + } + + @Override + public TraversalControl visitInlineFragment(InlineFragment node, TraverserContext context) { + GraphQLType currentCondition = assertNotNull(schema.getType(node.getTypeCondition().getName())); + String newCondition = newNames.get(currentCondition); + return changeNode(context, node.transform(builder -> builder.typeCondition(new TypeName(newCondition)))); + } + + @Override + public TraversalControl visitFragmentSpread(FragmentSpread node, TraverserContext context) { + String newName = assertNotNull(astNodeToNewName.get(node)); + return changeNode(context, node.transform(builder -> builder.name(newName))); + } + + @Override + public TraversalControl visitArgument(Argument argument, TraverserContext context) { + GraphQLArgument graphQLArgumentDefinition; + // An argument is either from a applied query directive or from a field + if (context.getVarFromParents(GraphQLDirective.class) != null) { + GraphQLDirective directiveDefinition = context.getVarFromParents(GraphQLDirective.class); + graphQLArgumentDefinition = directiveDefinition.getArgument(argument.getName()); + } else { + GraphQLFieldDefinition graphQLFieldDefinition = assertNotNull(context.getVarFromParents(GraphQLFieldDefinition.class)); + graphQLArgumentDefinition = graphQLFieldDefinition.getArgument(argument.getName()); + } + GraphQLInputType argumentType = graphQLArgumentDefinition.getType(); + String newName = assertNotNull(astNodeToNewName.get(argument)); + Value newValue = replaceValue(argument.getValue(), argumentType, newNames, defaultStringValueCounter, defaultIntValueCounter); + return changeNode(context, argument.transform(builder -> builder.name(newName).value(newValue))); + } + }); + return AstPrinter.printAstCompact(newDocument); + } + + // converts language [Type!] to [GraphQLType!] using the exact same GraphQLType instance from + // the provided schema + private static GraphQLType fromTypeToGraphQLType(Type type, GraphQLSchema schema) { + if (type instanceof TypeName) { + String typeName = ((TypeName) type).getName(); + GraphQLType graphQLType = schema.getType(typeName); + graphql.Assert.assertNotNull(graphQLType, "Schema must contain type %s", typeName); + return graphQLType; + } else if (type instanceof NonNullType) { + return nonNull(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); + } else if (type instanceof ListType) { + return GraphQLList.list(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); + } else { + graphql.Assert.assertShouldNeverHappen(); + return null; + } + } + + // rename a language type. e.g: [[Character!]!] -> [[NewName!]!] + private static Type replaceTypeName(Type type, String newName) { + if (type instanceof TypeName) { + return TypeName.newTypeName(newName).build(); + } else if (type instanceof ListType) { + return ListType.newListType(replaceTypeName(((ListType) type).getType(), newName)).build(); + } else if (type instanceof NonNullType) { + return NonNullType.newNonNullType(replaceTypeName(((NonNullType) type).getType(), newName)).build(); + } else { + graphql.Assert.assertShouldNeverHappen(); + return null; + } + } + + private static void assertUniqueOperation(Document document) { + String operationName = null; + for (Definition definition : document.getDefinitions()) { + if (definition instanceof OperationDefinition) { + if (operationName != null) { + throw new AssertException("Query must have exactly one operation"); + } + OperationDefinition operationDefinition = (OperationDefinition) definition; + operationName = operationDefinition.getName(); + } + } + + } + +} \ No newline at end of file diff --git a/src/main/java/graphql/util/Breadcrumb.java b/src/main/java/graphql/util/Breadcrumb.java index 2b948eb877..ad1415a00a 100644 --- a/src/main/java/graphql/util/Breadcrumb.java +++ b/src/main/java/graphql/util/Breadcrumb.java @@ -3,11 +3,12 @@ import graphql.PublicApi; import java.util.Objects; +import java.util.StringJoiner; /** * A specific {@link NodeLocation} inside a node. This means {@link #getNode()} returns a Node which has a child * at {@link #getLocation()} - * + *

      * A list of Breadcrumbs is used to identify the exact location of a specific node inside a tree. * * @param the generic type of object @@ -46,11 +47,17 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(node, location); + int result = 1; + result = 31 * result + Objects.hashCode(node); + result = 31 * result + Objects.hashCode(location); + return result; } @Override public String toString() { - return super.toString(); + return new StringJoiner(", ", "[", "]") + .add("" + location) + .add("" + node) + .toString(); } } diff --git a/src/main/java/graphql/util/CyclicSchemaAnalyzer.java b/src/main/java/graphql/util/CyclicSchemaAnalyzer.java new file mode 100644 index 0000000000..069dba0783 --- /dev/null +++ b/src/main/java/graphql/util/CyclicSchemaAnalyzer.java @@ -0,0 +1,372 @@ +package graphql.util; + +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.introspection.Introspection; +import graphql.schema.GraphQLSchema; +import graphql.schema.diffing.Edge; +import graphql.schema.diffing.SchemaGraph; +import graphql.schema.diffing.SchemaGraphFactory; +import graphql.schema.diffing.Vertex; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Finds all cycles in a GraphQL Schema. + * Cycles caused by built-in introspection types are filtered out. + */ +@ExperimentalApi +public class CyclicSchemaAnalyzer { + + public static class SchemaCycle { + private final List cycle; + + public SchemaCycle(List cycle) { + this.cycle = cycle; + } + + public int size() { + return cycle.size(); + } + + public List getCycle() { + return cycle; + } + + @Override + public String toString() { + return cycle.toString(); + } + } + + public static List findCycles(GraphQLSchema schema) { + return findCycles(schema, true); + } + + public static List findCycles(GraphQLSchema schema, boolean filterOutIntrospectionCycles) { + FindCyclesImpl findCyclesImpl = new FindCyclesImpl(schema); + findCyclesImpl.findAllSimpleCyclesImpl(); + List> vertexCycles = findCyclesImpl.foundCycles; + if (filterOutIntrospectionCycles) { + vertexCycles = vertexCycles.stream().filter(vertices -> { + for (Vertex vertex : vertices) { + if (Introspection.isIntrospectionTypes(vertex.getName())) { + return false; + } + } + return true; + }).collect(Collectors.toList()); + } + List result = new ArrayList<>(); + for (List vertexCycle : vertexCycles) { + List stringCycle = new ArrayList<>(); + for (Vertex vertex : vertexCycle) { + if (vertex.isOfType(SchemaGraph.OBJECT) || vertex.isOfType(SchemaGraph.INTERFACE) || vertex.isOfType(SchemaGraph.UNION)) { + stringCycle.add(vertex.getName()); + } else if (vertex.isOfType(SchemaGraph.FIELD)) { + String fieldsContainerName = findCyclesImpl.graph.getFieldsContainerForField(vertex).getName(); + stringCycle.add(fieldsContainerName + "." + vertex.getName()); + } else if (vertex.isOfType(SchemaGraph.INPUT_OBJECT)) { + stringCycle.add(vertex.getName()); + } else if (vertex.isOfType(SchemaGraph.INPUT_FIELD)) { + String inputFieldsContainerName = findCyclesImpl.graph.getFieldsContainerForField(vertex).getName(); + stringCycle.add(inputFieldsContainerName + "." + vertex.getName()); + } else { + Assert.assertShouldNeverHappen("unexpected vertex in cycle found: " + vertex); + } + } + result.add(new SchemaCycle(stringCycle)); + } + return result; + } + + private static class GraphAndIndex { + final SchemaGraph graph; + final int index; + + public GraphAndIndex(SchemaGraph graph, int index) { + this.graph = graph; + this.index = index; + } + } + + /** + * This code was originally taken from https://github.com/jgrapht/jgrapht/blob/master/jgrapht-core/src/main/java/org/jgrapht/alg/cycle/JohnsonSimpleCycles.java + * * (C) Copyright 2013-2023, by Nikolay Ognyanov and Contributors. + * * + * * JGraphT : a free Java graph-theory library + * * + * * See the CONTRIBUTORS.md file distributed with this work for additional + * * information regarding copyright ownership. + * * + * * This program and the accompanying materials are made available under the + * * terms of the Eclipse Public License 2.0 which is available at + * * http://www.eclipse.org/legal/epl-2.0, or the + * * GNU Lesser General Public License v2.1 or later + * * which is available at + * * http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html. + * * + * * SPDX-License-Identifier: EPL-2.0 OR LGPL-2.1-or-later + */ + private static class FindCyclesImpl { + + private final GraphQLSchema schema; + private final SchemaGraph graph; + + // The main state of the algorithm. + private Vertex[] iToV = null; + private Map vToI = null; + private Set blocked = null; + private Map> bSets = null; + private ArrayDeque stack = null; + + // The state of the embedded Tarjan SCC algorithm. + private List> foundSCCs = null; + private int index = 0; + private Map vIndex = null; + private Map vLowlink = null; + private ArrayDeque path = null; + private Set pathSet = null; + + private List> foundCycles = new ArrayList<>(); + + public FindCyclesImpl(GraphQLSchema schema) { + this.schema = schema; + SchemaGraphFactory schemaGraphFactory = new SchemaGraphFactory(); + this.graph = schemaGraphFactory.createGraph(schema); + iToV = (Vertex[]) graph.getVertices().toArray(new Vertex[0]); + vToI = new LinkedHashMap<>(); + blocked = new LinkedHashSet<>(); + bSets = new LinkedHashMap<>(); + stack = new ArrayDeque<>(); + + for (int i = 0; i < iToV.length; i++) { + vToI.put(iToV[i], i); + } + } + + public List> findAllSimpleCyclesImpl() { + int startIndex = 0; + + int size = graph.getVertices().size(); + while (startIndex < size) { + GraphAndIndex minSCCGResult = findMinSCSG(startIndex); + if (minSCCGResult != null) { + startIndex = minSCCGResult.index; + SchemaGraph scg = minSCCGResult.graph; + Vertex startV = toV(startIndex); + for (Edge e : scg.getAdjacentEdges(startV)) { + Vertex v = e.getTo(); + blocked.remove(v); + getBSet(v).clear(); + } + findCyclesInSCG(startIndex, startIndex, scg); + startIndex++; + } else { + break; + } + } + return this.foundCycles; + } + + private GraphAndIndex findMinSCSG(int startIndex) { + /* + * Per Johnson : "adjacency structure of strong component $K$ with least vertex in subgraph + * of $G$ induced by $(s, s + 1, n)$". Or in contemporary terms: the strongly connected + * component of the subgraph induced by $(v_1, \dotso ,v_n)$ which contains the minimum + * (among those SCCs) vertex index. We return that index together with the graph. + */ + initMinSCGState(); + + List> foundSCCs = findSCCS(startIndex); + + // find the SCC with the minimum index + int minIndexFound = Integer.MAX_VALUE; + Set minSCC = null; + for (Set scc : foundSCCs) { + for (Vertex v : scc) { + int t = toI(v); + if (t < minIndexFound) { + minIndexFound = t; + minSCC = scc; + } + } + } + if (minSCC == null) { + return null; + } + + // build a graph for the SCC found + SchemaGraph resultGraph = new SchemaGraph(); + for (Vertex v : minSCC) { + resultGraph.addVertex(v); + } + for (Vertex v : minSCC) { + for (Vertex w : minSCC) { + Edge edge = graph.getEdge(v, w); + if (edge != null) { + resultGraph.addEdge(edge); + } + } + } + + GraphAndIndex graphAndIndex = new GraphAndIndex(resultGraph, minIndexFound); + clearMinSCCState(); + return graphAndIndex; + } + + private List> findSCCS(int startIndex) { + // Find SCCs in the subgraph induced + // by vertices startIndex and beyond. + // A call to StrongConnectivityAlgorithm + // would be too expensive because of the + // need to materialize the subgraph. + // So - do a local search by the Tarjan's + // algorithm and pretend that vertices + // with an index smaller than startIndex + // do not exist. + for (Vertex v : graph.getVertices()) { + int vI = toI(v); + if (vI < startIndex) { + continue; + } + if (!vIndex.containsKey(v)) { + getSCCs(startIndex, vI); + } + } + List> result = foundSCCs; + foundSCCs = null; + return result; + } + + private void getSCCs(int startIndex, int vertexIndex) { + Vertex vertex = toV(vertexIndex); + vIndex.put(vertex, index); + vLowlink.put(vertex, index); + index++; + path.push(vertex); + pathSet.add(vertex); + + List edges = graph.getAdjacentEdges(vertex); + for (Edge e : edges) { + Vertex successor = e.getTo(); + int successorIndex = toI(successor); + if (successorIndex < startIndex) { + continue; + } + if (!vIndex.containsKey(successor)) { + getSCCs(startIndex, successorIndex); + vLowlink.put(vertex, Math.min(vLowlink.get(vertex), vLowlink.get(successor))); + } else if (pathSet.contains(successor)) { + vLowlink.put(vertex, Math.min(vLowlink.get(vertex), vIndex.get(successor))); + } + } + if (vLowlink.get(vertex).equals(vIndex.get(vertex))) { + Set result = new LinkedHashSet<>(); + Vertex temp; + do { + temp = path.pop(); + pathSet.remove(temp); + result.add(temp); + } while (!vertex.equals(temp)); + if (result.size() == 1) { + Vertex v = result.iterator().next(); + if (graph.containsEdge(vertex, v)) { + foundSCCs.add(result); + } + } else { + foundSCCs.add(result); + } + } + } + + private boolean findCyclesInSCG(int startIndex, int vertexIndex, SchemaGraph scg) { + /* + * Find cycles in a strongly connected graph per Johnson. + */ + boolean foundCycle = false; + Vertex vertex = toV(vertexIndex); + stack.push(vertex); + blocked.add(vertex); + + for (Edge e : scg.getAdjacentEdges(vertex)) { + Vertex successor = e.getTo(); + int successorIndex = toI(successor); + if (successorIndex == startIndex) { + List cycle = new ArrayList<>(stack.size()); + stack.descendingIterator().forEachRemaining(cycle::add); + this.foundCycles.add(cycle); + foundCycle = true; + } else if (!blocked.contains(successor)) { + boolean gotCycle = findCyclesInSCG(startIndex, successorIndex, scg); + foundCycle = foundCycle || gotCycle; + } + } + if (foundCycle) { + unblock(vertex); + } else { + for (Edge ew : scg.getAdjacentEdges(vertex)) { + Vertex w = ew.getTo(); + Set bSet = getBSet(w); + bSet.add(vertex); + } + } + stack.pop(); + return foundCycle; + } + + private void unblock(Vertex vertex) { + blocked.remove(vertex); + Set bSet = getBSet(vertex); + while (bSet.size() > 0) { + Vertex w = bSet.iterator().next(); + bSet.remove(w); + if (blocked.contains(w)) { + unblock(w); + } + } + } + + + private void initMinSCGState() { + index = 0; + foundSCCs = new ArrayList<>(); + vIndex = new LinkedHashMap<>(); + vLowlink = new LinkedHashMap<>(); + path = new ArrayDeque<>(); + pathSet = new LinkedHashSet<>(); + } + + private void clearMinSCCState() { + index = 0; + foundSCCs = null; + vIndex = null; + vLowlink = null; + path = null; + pathSet = null; + } + + private Integer toI(Vertex vertex) { + return vToI.get(vertex); + } + + private Vertex toV(Integer i) { + return iToV[i]; + } + + private Set getBSet(Vertex v) { + // B sets typically not all needed, + // so instantiate lazily. + return bSets.computeIfAbsent(v, k -> new LinkedHashSet<>()); + } + + + } +} diff --git a/src/main/java/graphql/util/DefaultTraverserContext.java b/src/main/java/graphql/util/DefaultTraverserContext.java index c32d182825..11bd65c36c 100644 --- a/src/main/java/graphql/util/DefaultTraverserContext.java +++ b/src/main/java/graphql/util/DefaultTraverserContext.java @@ -1,9 +1,10 @@ package graphql.util; +import com.google.common.collect.ImmutableList; import graphql.Internal; +import graphql.collect.ImmutableKit; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -53,12 +54,13 @@ public DefaultTraverserContext(T curNode, this.parallel = parallel; if (parent == null || parent.isRootContext()) { - this.breadcrumbs = Collections.unmodifiableList(Collections.emptyList()); + this.breadcrumbs = ImmutableKit.emptyList(); } else { - List> breadcrumbs = new ArrayList<>(parent.getBreadcrumbs().size() + 1); - breadcrumbs.add(new Breadcrumb<>(this.parent.thisNode(), this.location)); - breadcrumbs.addAll(parent.getBreadcrumbs()); - this.breadcrumbs = Collections.unmodifiableList(breadcrumbs); + this.breadcrumbs = ImmutableList.>builderWithExpectedSize(parent.getBreadcrumbs().size() + 1) + .add(new Breadcrumb<>(this.parent.thisNode(), this.location)) + .addAll(parent.getBreadcrumbs()) + .build(); + } } diff --git a/src/main/java/graphql/util/EscapeUtil.java b/src/main/java/graphql/util/EscapeUtil.java index 77ab06686e..521ac35846 100644 --- a/src/main/java/graphql/util/EscapeUtil.java +++ b/src/main/java/graphql/util/EscapeUtil.java @@ -1,49 +1,56 @@ package graphql.util; +import graphql.Internal; + +@Internal public final class EscapeUtil { private EscapeUtil() { } /** - * Encodes the value as a JSON string according to http://json.org/ rules + * Encodes the value as a JSON string according to https://json.org/ rules * * @param stringValue the value to encode as a JSON string * * @return the encoded string */ public static String escapeJsonString(String stringValue) { + StringBuilder sb = new StringBuilder(stringValue.length()); + escapeJsonStringTo(sb, stringValue); + return sb.toString(); + } + + public static void escapeJsonStringTo(StringBuilder output, String stringValue) { int len = stringValue.length(); - StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char ch = stringValue.charAt(i); switch (ch) { case '"': - sb.append("\\\""); + output.append("\\\""); break; case '\\': - sb.append("\\\\"); + output.append("\\\\"); break; case '\b': - sb.append("\\b"); + output.append("\\b"); break; case '\f': - sb.append("\\f"); + output.append("\\f"); break; case '\n': - sb.append("\\n"); + output.append("\\n"); break; case '\r': - sb.append("\\r"); + output.append("\\r"); break; case '\t': - sb.append("\\t"); + output.append("\\t"); break; default: - sb.append(ch); + output.append(ch); } } - return sb.toString(); } } diff --git a/src/main/java/graphql/util/FpKit.java b/src/main/java/graphql/util/FpKit.java index 70a9d1a652..b4bf6ca60d 100644 --- a/src/main/java/graphql/util/FpKit.java +++ b/src/main/java/graphql/util/FpKit.java @@ -1,27 +1,31 @@ package graphql.util; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import graphql.Internal; +import org.jspecify.annotations.NonNull; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import java.util.function.BiFunction; +import java.util.OptionalInt; +import java.util.Set; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.IntStream; +import java.util.function.Supplier; +import java.util.stream.Stream; -import static java.util.Collections.singletonList; -import static java.util.function.Function.identity; -import static java.util.stream.Collectors.mapping; @Internal public class FpKit { @@ -29,32 +33,76 @@ public class FpKit { // // From a list of named things, get a map of them by name, merging them according to the merge function public static Map getByName(List namedObjects, Function nameFn, BinaryOperator mergeFunc) { - return namedObjects.stream().collect(Collectors.toMap( - nameFn, - identity(), - mergeFunc, - LinkedHashMap::new) - ); + return toMap(namedObjects, nameFn, mergeFunc); + } + + // + // From a collection of keyed things, get a map of them by key, merging them according to the merge function + public static Map toMap(Collection collection, Function keyFunction, BinaryOperator mergeFunc) { + Map resultMap = Maps.newLinkedHashMapWithExpectedSize(collection.size()); + for (T obj : collection) { + NewKey key = keyFunction.apply(obj); + if (resultMap.containsKey(key)) { + T existingValue = resultMap.get(key); + T mergedValue = mergeFunc.apply(existingValue, obj); + resultMap.put(key, mergedValue); + } else { + resultMap.put(key, obj); + } + } + return resultMap; } // normal groupingBy but with LinkedHashMap - public static Map> groupingBy(Collection list, Function function) { - return list.stream().collect(Collectors.groupingBy(function, LinkedHashMap::new, mapping(Function.identity(), Collectors.toList()))); + public static Map> groupingBy(Collection list, Function function) { + return filterAndGroupingBy(list, ALWAYS_TRUE, function); } - public static Map groupingByUniqueKey(Collection list, Function keyFunction) { - return list.stream().collect(Collectors.toMap( - keyFunction, - identity(), - throwingMerger(), - LinkedHashMap::new) - ); + @SuppressWarnings("unchecked") + public static Map> filterAndGroupingBy(Collection list, + Predicate predicate, + Function function) { + // + // The cleanest version of this code would have two maps, one of immutable list builders and one + // of the built immutable lists. BUt we are trying to be performant and memory efficient so + // we treat it as a map of objects and cast like its Java 4x + // + Map resutMap = new LinkedHashMap<>(); + for (T item : list) { + if (predicate.test(item)) { + NewKey key = function.apply(item); + // we have to use an immutable list builder as we built it out + ((ImmutableList.Builder) resutMap.computeIfAbsent(key, k -> ImmutableList.builder())) + .add(item); + } + } + if (resutMap.isEmpty()) { + return Collections.emptyMap(); + } + // Convert builders to ImmutableLists in place to avoid an extra allocation + // yes the code is yuck - but its more performant yuck! + resutMap.replaceAll((key, builder) -> + ((ImmutableList.Builder) builder).build()); + + // make it the right shape - like as if generics were never invented + return (Map>) (Map) resutMap; + } + + public static Map toMapByUniqueKey(Collection list, Function keyFunction) { + return toMap(list, keyFunction, throwingMerger()); } + + private static final Predicate ALWAYS_TRUE = o -> true; + + private static final BinaryOperator THROWING_MERGER_SINGLETON = (u, v) -> { + throw new IllegalStateException(String.format("Duplicate key %s", u)); + }; + + private static BinaryOperator throwingMerger() { - return (u, v) -> { - throw new IllegalStateException(String.format("Duplicate key %s", u)); - }; + //noinspection unchecked + return (BinaryOperator) THROWING_MERGER_SINGLETON; } @@ -77,20 +125,14 @@ public static BinaryOperator mergeFirst() { * * @return an Iterable from that object * - * @throws java.lang.ClassCastException if its not an Iterable + * @throws java.lang.ClassCastException if it's not an Iterable */ @SuppressWarnings("unchecked") public static Collection toCollection(Object iterableResult) { - if (iterableResult.getClass().isArray()) { - List collect = IntStream.range(0, Array.getLength(iterableResult)) - .mapToObj(i -> Array.get(iterableResult, i)) - .collect(Collectors.toList()); - return (List) collect; - } if (iterableResult instanceof Collection) { return (Collection) iterableResult; } - Iterable iterable = (Iterable) iterableResult; + Iterable iterable = toIterable(iterableResult); Iterator iterator = iterable.iterator(); List list = new ArrayList<>(); while (iterator.hasNext()) { @@ -99,6 +141,105 @@ public static Collection toCollection(Object iterableResult) { return list; } + /** + * Creates an {@link ArrayList} sized appropriately to the collection, typically for copying + * + * @param collection the collection of a certain size + * @param to two + * + * @return a new {@link ArrayList} initially sized to the same as the collection + */ + public static @NonNull List arrayListSizedTo(@NonNull Collection collection) { + return new ArrayList<>(collection.size()); + } + + + /** + * Converts a value into a list if it's really a collection or array of things + * else it turns it into a singleton list containing that one value + * + * @param possibleIterable the possible + * @param for two + * + * @return an list one way or another + */ + @SuppressWarnings("unchecked") + public static List toListOrSingletonList(Object possibleIterable) { + if (possibleIterable instanceof List) { + return (List) possibleIterable; + } + if (isIterable(possibleIterable)) { + return ImmutableList.copyOf(toIterable(possibleIterable)); + } + return ImmutableList.of((T) possibleIterable); + } + + public static boolean isIterable(Object result) { + return result.getClass().isArray() || result instanceof Iterable || result instanceof Stream || result instanceof Iterator; + } + + + @SuppressWarnings("unchecked") + public static Iterable toIterable(Object iterableResult) { + if (iterableResult instanceof Iterable) { + return ((Iterable) iterableResult); + } + + if (iterableResult instanceof Stream) { + return ((Stream) iterableResult)::iterator; + } + + if (iterableResult instanceof Iterator) { + return () -> (Iterator) iterableResult; + } + + if (iterableResult.getClass().isArray()) { + return () -> new ArrayIterator<>(iterableResult); + } + + throw new ClassCastException("not Iterable: " + iterableResult.getClass()); + } + + private static class ArrayIterator implements Iterator { + + private final Object array; + private final int size; + private int i; + + private ArrayIterator(Object array) { + this.array = array; + this.size = Array.getLength(array); + this.i = 0; + } + + @Override + public boolean hasNext() { + return i < size; + } + + @SuppressWarnings("unchecked") + @Override + public T next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + return (T) Array.get(array, i++); + } + + } + + public static OptionalInt toSize(Object iterableResult) { + if (iterableResult instanceof Collection) { + return OptionalInt.of(((Collection) iterableResult).size()); + } + + if (iterableResult.getClass().isArray()) { + return OptionalInt.of(Array.getLength(iterableResult)); + } + + return OptionalInt.empty(); + } + /** * Concatenates (appends) a single elements to an existing list * @@ -106,10 +247,13 @@ public static Collection toCollection(Object iterableResult) { * @param t the element to append * @param the type of elements of the list * - * @return a new list componsed of the first list elements and the new element + * @return a new list composed of the first list elements and the new element */ public static List concat(List l, T t) { - return concat(l, singletonList(t)); + List list = new ArrayList<>(l.size() + 1); + list.addAll(l); + list.add(t); + return list; } /** @@ -121,10 +265,10 @@ public static List concat(List l, T t) { * * @return a new list composed of the two concatenated lists elements */ - public static List concat(List l1, List l2) { - ArrayList l = new ArrayList<>(l1); + public static List concat(List l1, List l2) { + List l = new ArrayList<>(l1.size() + l2.size()); + l.addAll(l1); l.addAll(l2); - l.trimToSize(); return l; } @@ -134,15 +278,6 @@ public static List valuesToList(Map map) { return new ArrayList<>(map.values()); } - public static List map(List list, Function function) { - return list.stream().map(function).collect(Collectors.toList()); - } - - public static List mapEntries(Map map, BiFunction function) { - return map.entrySet().stream().map(entry -> function.apply(entry.getKey(), entry.getValue())).collect(Collectors.toList()); - } - - public static List> transposeMatrix(List> matrix) { int rowCount = matrix.size(); int colCount = matrix.get(0).size(); @@ -151,7 +286,7 @@ public static List> transposeMatrix(List> matrix) for (int j = 0; j < colCount; j++) { T val = matrix.get(i).get(j); if (result.size() <= j) { - result.add(j, new ArrayList()); + result.add(j, new ArrayList<>()); } result.get(j).add(i, val); } @@ -159,21 +294,13 @@ public static List> transposeMatrix(List> matrix) return result; } - public static CompletableFuture> flatList(CompletableFuture>> cf) { - return cf.thenApply(FpKit::flatList); - } - - public static List flatList(List> listLists) { - return listLists.stream() - .flatMap(List::stream) - .collect(Collectors.toList()); - } - public static Optional findOne(Collection list, Predicate filter) { - return list - .stream() - .filter(filter) - .findFirst(); + for (T t : list) { + if (filter.test(t)) { + return Optional.of(t); + } + } + return Optional.empty(); } public static T findOneOrNull(List list, Predicate filter) { @@ -189,5 +316,90 @@ public static int findIndex(List list, Predicate filter) { return -1; } + public static List filterList(Collection list, Predicate filter) { + List result = arrayListSizedTo(list); + for (T t : list) { + if (filter.test(t)) { + result.add(t); + } + } + return result; + } + + public static Set filterSet(Collection input, Predicate filter) { + ImmutableSet.Builder result = ImmutableSet.builder(); + for (T t : input) { + if (filter.test(t)) { + result.add(t); + } + } + return result.build(); + } + + /** + * Used in simple {@link Map#computeIfAbsent(Object, java.util.function.Function)} cases + * + * @param for Key + * @param for Value + * + * @return a function that allocates a list + */ + public static Function> newList() { + return k -> new ArrayList<>(); + } + + /** + * This will memoize the Supplier within the current thread's visibility, that is it does not + * use volatile reads but rather use a sentinel check and re-reads the delegate supplier + * value if the read has not stuck to this thread. This means that it's possible that your delegate + * supplier MAY be called more than once across threads, but only once on the same thread. + * + * @param delegate the supplier to delegate to + * @param for two + * + * @return a supplier that will memoize values in the context of the current thread + */ + public static Supplier intraThreadMemoize(Supplier delegate) { + return new IntraThreadMemoizedSupplier<>(delegate); + } + + /** + * This will memoize the Supplier across threads and make sure the Supplier is exactly called once. + *

      + * Use for potentially costly actions. Otherwise consider {@link #intraThreadMemoize(Supplier)} + * + * @param delegate the supplier to delegate to + * @param for two + * + * @return a supplier that will memoize values in the context of the all the threads + */ + public static Supplier interThreadMemoize(Supplier delegate) { + return new InterThreadMemoizedSupplier<>(delegate); + } + + /** + * Faster set intersection. + * + * @param for two + * @param set1 first set + * @param set2 second set + * + * @return intersection set + */ + public static Set intersection(Set set1, Set set2) { + // Set intersection calculation is expensive when either set is large. Often, either set has only one member. + // When either set contains only one member, it is equivalent and much cheaper to calculate intersection via contains. + if (set1.size() == 1 && set2.contains(set1.iterator().next())) { + return set1; + } else if (set2.size() == 1 && set1.contains(set2.iterator().next())) { + return set2; + } + + // Guava's Sets.intersection is faster when the smaller set is passed as the first argument. + if (set1.size() < set2.size()) { + return Sets.intersection(set1, set2); + } + return Sets.intersection(set2, set1); + } } diff --git a/src/main/java/graphql/util/IdGenerator.java b/src/main/java/graphql/util/IdGenerator.java new file mode 100644 index 0000000000..f92784c4ac --- /dev/null +++ b/src/main/java/graphql/util/IdGenerator.java @@ -0,0 +1,75 @@ +/* + * Copyright 2002-2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * This class was taken from Spring https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/util/AlternativeJdkIdGenerator.java + * as a way to get a more performant UUID generator for use as request ids. SecureRandom can be expensive + * to run on each request as per https://github.com/graphql-java/graphql-java/issues/3435, so this uses SecureRandom + * at application start and then the cheaper Random class each call after that. + */ +package graphql.util; + +import graphql.Internal; + +import java.math.BigInteger; +import java.security.SecureRandom; +import java.util.Random; +import java.util.UUID; + +/** + * An id generator that uses {@link SecureRandom} for the initial seed and + * {@link Random} thereafter. This provides a better balance between securely random ids and performance. + * + * @author Rossen Stoyanchev + * @author Rob Winch + */ +@Internal +public class IdGenerator { + + private static final IdGenerator idGenerator = new IdGenerator(); + + public static UUID uuid() { + return idGenerator.generateId(); + } + + private final Random random; + + + public IdGenerator() { + SecureRandom secureRandom = new SecureRandom(); + byte[] seed = new byte[8]; + secureRandom.nextBytes(seed); + this.random = new Random(new BigInteger(seed).longValue()); + } + + + public UUID generateId() { + byte[] randomBytes = new byte[16]; + this.random.nextBytes(randomBytes); + + long mostSigBits = 0; + for (int i = 0; i < 8; i++) { + mostSigBits = (mostSigBits << 8) | (randomBytes[i] & 0xff); + } + + long leastSigBits = 0; + for (int i = 8; i < 16; i++) { + leastSigBits = (leastSigBits << 8) | (randomBytes[i] & 0xff); + } + + return new UUID(mostSigBits, leastSigBits); + } + +} \ No newline at end of file diff --git a/src/main/java/graphql/util/InterThreadMemoizedSupplier.java b/src/main/java/graphql/util/InterThreadMemoizedSupplier.java new file mode 100644 index 0000000000..072d5635cd --- /dev/null +++ b/src/main/java/graphql/util/InterThreadMemoizedSupplier.java @@ -0,0 +1,42 @@ +package graphql.util; + +import graphql.Internal; + +import java.util.function.Supplier; + +/** + * This memoizing supplier DOES use locked double locking to set its value. + * + * @param for two + */ +@Internal +public class InterThreadMemoizedSupplier implements Supplier { + + private final Supplier delegate; + private volatile boolean initialized; + private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + private T value; + + public InterThreadMemoizedSupplier(Supplier delegate) { + this.delegate = delegate; + } + + + @Override + public T get() { + if (!initialized) { + lock.lock(); + try { + if (initialized) { + return value; + } + value = delegate.get(); + initialized = true; + return value; + } finally { + lock.unlock(); + } + } + return value; + } +} diff --git a/src/main/java/graphql/util/Interning.java b/src/main/java/graphql/util/Interning.java new file mode 100644 index 0000000000..acbb54fdaf --- /dev/null +++ b/src/main/java/graphql/util/Interning.java @@ -0,0 +1,25 @@ +package graphql.util; + +import com.google.common.collect.Interner; +import com.google.common.collect.Interners; +import graphql.Internal; +import org.jspecify.annotations.NonNull; + +/** + * Interner allowing object-identity comparison of key entities like field names. This is useful on hotspot + * areas like the engine where we look up field names a lot inside maps, and those maps use object identity first + * inside the key lookup code. + */ +@Internal +public class Interning { + + private Interning() { + } + + private static final Interner INTERNER = Interners.newWeakInterner(); + + public static @NonNull String intern(@NonNull String name) { + return INTERNER.intern(name); + } + +} diff --git a/src/main/java/graphql/util/IntraThreadMemoizedSupplier.java b/src/main/java/graphql/util/IntraThreadMemoizedSupplier.java new file mode 100644 index 0000000000..faf0d87c8f --- /dev/null +++ b/src/main/java/graphql/util/IntraThreadMemoizedSupplier.java @@ -0,0 +1,37 @@ +package graphql.util; + +import graphql.Internal; + +import java.util.function.Supplier; + +import static graphql.Assert.assertNotNull; + +/** + * This memoizing supplier does NOT use synchronised double locking to set its value + * so on multiple threads it MAY call the delegate again to get a value. + * + * @param for two + */ +@Internal +class IntraThreadMemoizedSupplier implements Supplier { + private final static Object SENTINEL = new Object() { + }; + + @SuppressWarnings("unchecked") + private T value = (T) SENTINEL; + private final Supplier delegate; + + IntraThreadMemoizedSupplier(Supplier delegate) { + this.delegate = assertNotNull(delegate); + } + + @Override + public T get() { + T t = value; + if (t == SENTINEL) { + t = delegate.get(); + value = t; + } + return t; + } +} diff --git a/src/main/java/graphql/util/LinkedHashMapFactory.java b/src/main/java/graphql/util/LinkedHashMapFactory.java new file mode 100644 index 0000000000..b9cc20ef75 --- /dev/null +++ b/src/main/java/graphql/util/LinkedHashMapFactory.java @@ -0,0 +1,344 @@ +package graphql.util; + +import graphql.Internal; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Factory class for creating LinkedHashMap instances with insertion order preservation. + * Use this instead of Map.of() to ensure consistent serialization order. + *

      + * This class provides static factory methods similar to Map.of() but returns mutable LinkedHashMap + * instances that preserve insertion order, which is important for consistent serialization. + */ +@Internal +public final class LinkedHashMapFactory { + + private LinkedHashMapFactory() { + // utility class + } + + /** + * Returns an empty LinkedHashMap. + * + * @param the key type + * @param the value type + * @return an empty LinkedHashMap + */ + public static Map of() { + return new LinkedHashMap<>(); + } + + /** + * Returns a LinkedHashMap containing a single mapping. + * + * @param the key type + * @param the value type + * @param k1 the mapping's key + * @param v1 the mapping's value + * @return a LinkedHashMap containing the specified mapping + */ + public static Map of(K k1, V v1) { + Map map = new LinkedHashMap<>(1); + map.put(k1, v1); + return map; + } + + /** + * Returns a LinkedHashMap containing two mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2) { + Map map = new LinkedHashMap<>(2); + map.put(k1, v1); + map.put(k2, v2); + return map; + } + + /** + * Returns a LinkedHashMap containing three mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3) { + Map map = new LinkedHashMap<>(3); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + return map; + } + + /** + * Returns a LinkedHashMap containing four mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + Map map = new LinkedHashMap<>(4); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + return map; + } + + /** + * Returns a LinkedHashMap containing five mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @param k5 the fifth mapping's key + * @param v5 the fifth mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + Map map = new LinkedHashMap<>(5); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + map.put(k5, v5); + return map; + } + + /** + * Returns a LinkedHashMap containing six mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @param k5 the fifth mapping's key + * @param v5 the fifth mapping's value + * @param k6 the sixth mapping's key + * @param v6 the sixth mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) { + Map map = new LinkedHashMap<>(6); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + map.put(k5, v5); + map.put(k6, v6); + return map; + } + + /** + * Returns a LinkedHashMap containing seven mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @param k5 the fifth mapping's key + * @param v5 the fifth mapping's value + * @param k6 the sixth mapping's key + * @param v6 the sixth mapping's value + * @param k7 the seventh mapping's key + * @param v7 the seventh mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) { + Map map = new LinkedHashMap<>(7); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + map.put(k5, v5); + map.put(k6, v6); + map.put(k7, v7); + return map; + } + + /** + * Returns a LinkedHashMap containing eight mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @param k5 the fifth mapping's key + * @param v5 the fifth mapping's value + * @param k6 the sixth mapping's key + * @param v6 the sixth mapping's value + * @param k7 the seventh mapping's key + * @param v7 the seventh mapping's value + * @param k8 the eighth mapping's key + * @param v8 the eighth mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) { + Map map = new LinkedHashMap<>(8); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + map.put(k5, v5); + map.put(k6, v6); + map.put(k7, v7); + map.put(k8, v8); + return map; + } + + /** + * Returns a LinkedHashMap containing nine mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @param k5 the fifth mapping's key + * @param v5 the fifth mapping's value + * @param k6 the sixth mapping's key + * @param v6 the sixth mapping's value + * @param k7 the seventh mapping's key + * @param v7 the seventh mapping's value + * @param k8 the eighth mapping's key + * @param v8 the eighth mapping's value + * @param k9 the ninth mapping's key + * @param v9 the ninth mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) { + Map map = new LinkedHashMap<>(9); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + map.put(k5, v5); + map.put(k6, v6); + map.put(k7, v7); + map.put(k8, v8); + map.put(k9, v9); + return map; + } + + /** + * Returns a LinkedHashMap containing ten mappings. + * + * @param the key type + * @param the value type + * @param k1 the first mapping's key + * @param v1 the first mapping's value + * @param k2 the second mapping's key + * @param v2 the second mapping's value + * @param k3 the third mapping's key + * @param v3 the third mapping's value + * @param k4 the fourth mapping's key + * @param v4 the fourth mapping's value + * @param k5 the fifth mapping's key + * @param v5 the fifth mapping's value + * @param k6 the sixth mapping's key + * @param v6 the sixth mapping's value + * @param k7 the seventh mapping's key + * @param v7 the seventh mapping's value + * @param k8 the eighth mapping's key + * @param v8 the eighth mapping's value + * @param k9 the ninth mapping's key + * @param v9 the ninth mapping's value + * @param k10 the tenth mapping's key + * @param v10 the tenth mapping's value + * @return a LinkedHashMap containing the specified mappings + */ + public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) { + Map map = new LinkedHashMap<>(10); + map.put(k1, v1); + map.put(k2, v2); + map.put(k3, v3); + map.put(k4, v4); + map.put(k5, v5); + map.put(k6, v6); + map.put(k7, v7); + map.put(k8, v8); + map.put(k9, v9); + map.put(k10, v10); + return map; + } + + /** + * Returns a LinkedHashMap containing mappings derived from the given arguments. + *

      + * This method is provided for cases where more than 10 key-value pairs are needed. + * It accepts alternating keys and values. + * + * @param the key type + * @param the value type + * @param keyValues alternating keys and values + * @return a LinkedHashMap containing the specified mappings + * @throws IllegalArgumentException if an odd number of arguments is provided + */ + @SuppressWarnings("unchecked") + public static Map ofEntries(Object... keyValues) { + if (keyValues.length % 2 != 0) { + throw new IllegalArgumentException("keyValues must contain an even number of arguments (key-value pairs)"); + } + + Map map = new LinkedHashMap<>(keyValues.length / 2); + for (int i = 0; i < keyValues.length; i += 2) { + K key = (K) keyValues[i]; + V value = (V) keyValues[i + 1]; + map.put(key, value); + } + return map; + } +} \ No newline at end of file diff --git a/src/main/java/graphql/util/LockKit.java b/src/main/java/graphql/util/LockKit.java new file mode 100644 index 0000000000..f2513d8628 --- /dev/null +++ b/src/main/java/graphql/util/LockKit.java @@ -0,0 +1,87 @@ +package graphql.util; + +import graphql.Internal; + +import java.util.concurrent.locks.Lock; +import java.util.function.Supplier; + +/** + * This provides reentrant locking support for our code base. Future worlds like Loom virtual threads don't like + * synchronised calls since they pin the VT to the carrier thread. Word on the street is that locks are preferred + * to synchronised. + */ +@Internal +public class LockKit { + + /** + * A class to run code inside a reentrant lock + */ + public static class ReentrantLock { + private final Lock lock = new java.util.concurrent.locks.ReentrantLock(); + + /** + * Sometimes you need to directly lock things like for checked exceptions + *

      + * It's on you to unlock it! + */ + public void lock() { + lock.lock(); + } + + public void unlock() { + lock.unlock(); + } + + public void runLocked(Runnable codeToRun) { + lock.lock(); + try { + codeToRun.run(); + } finally { + lock.unlock(); + } + } + + public E callLocked(Supplier codeToRun) { + lock.lock(); + try { + return codeToRun.get(); + } finally { + lock.unlock(); + } + } + } + + + /** + * Will allow for lazy computation of some values just once + */ + public static class ComputedOnce { + + private volatile boolean beenComputed = false; + private final ReentrantLock lock = new ReentrantLock(); + + + public boolean hasBeenComputed() { + return beenComputed; + } + + public void runOnce(Runnable codeToRunOnce) { + if (beenComputed) { + return; + } + lock.runLocked(() -> { + // double lock check + if (beenComputed) { + return; + } + try { + codeToRunOnce.run(); + beenComputed = true; + } finally { + // even for exceptions we will say its computed + beenComputed = true; + } + }); + } + } +} diff --git a/src/main/java/graphql/util/LogKit.java b/src/main/java/graphql/util/LogKit.java deleted file mode 100644 index df65060e6b..0000000000 --- a/src/main/java/graphql/util/LogKit.java +++ /dev/null @@ -1,22 +0,0 @@ -package graphql.util; - -import graphql.Internal; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Internal -public class LogKit { - - /** - * Creates a logger with a name indicating that the content might not be privacy safe - * eg it could contain user generated content or privacy information. - * - * @param clazz the class to make a logger for - * - * @return a new Logger - */ - public static Logger getNotPrivacySafeLogger(Class clazz) { - return LoggerFactory.getLogger(String.format("notprivacysafe.%s", clazz.getName())); - } - -} diff --git a/src/main/java/graphql/util/MutableRef.java b/src/main/java/graphql/util/MutableRef.java new file mode 100644 index 0000000000..d538f5eb95 --- /dev/null +++ b/src/main/java/graphql/util/MutableRef.java @@ -0,0 +1,15 @@ +package graphql.util; + +import graphql.Internal; + +/** + * This class is useful for creating a mutable reference to a variable that can be changed when you are in an + * effectively final bit of code. Its more performant than an {@link java.util.concurrent.atomic.AtomicReference} + * to gain mutability. Use this very carefully - Its not expected to be commonly used. + * + * @param for two + */ +@Internal +public class MutableRef { + public T value; +} diff --git a/src/main/java/graphql/util/NodeLocation.java b/src/main/java/graphql/util/NodeLocation.java index 4629acbbbd..8a1f9f10bc 100644 --- a/src/main/java/graphql/util/NodeLocation.java +++ b/src/main/java/graphql/util/NodeLocation.java @@ -6,7 +6,7 @@ /** * General position of a Node inside a parent. - * + *

      * Can be an index or a name with an index. */ @PublicApi @@ -33,10 +33,10 @@ public int getIndex() { @Override public String toString() { - return "NodeLocation{" + - "name='" + name + '\'' + - ", index=" + index + - '}'; + return "{" + + "name='" + name + '\'' + + ", index=" + index + + '}'; } @Override @@ -49,11 +49,14 @@ public boolean equals(Object o) { } NodeLocation that = (NodeLocation) o; return index == that.index && - Objects.equals(name, that.name); + Objects.equals(name, that.name); } @Override public int hashCode() { - return Objects.hash(name, index); + int result = 1; + result = 31 * result + Objects.hashCode(name); + result = 31 * result + Integer.hashCode(index); + return result; } } diff --git a/src/main/java/graphql/util/NodeMultiZipper.java b/src/main/java/graphql/util/NodeMultiZipper.java index 1f5d6848d8..72801a920d 100644 --- a/src/main/java/graphql/util/NodeMultiZipper.java +++ b/src/main/java/graphql/util/NodeMultiZipper.java @@ -1,5 +1,6 @@ package graphql.util; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; import java.util.ArrayList; @@ -20,12 +21,12 @@ public class NodeMultiZipper { private final T commonRoot; - private final List> zippers; + private final ImmutableList> zippers; private final NodeAdapter nodeAdapter; public NodeMultiZipper(T commonRoot, List> zippers, NodeAdapter nodeAdapter) { this.commonRoot = assertNotNull(commonRoot); - this.zippers = Collections.unmodifiableList(new ArrayList<>(zippers)); + this.zippers = ImmutableList.copyOf(zippers); this.nodeAdapter = nodeAdapter; } @@ -34,7 +35,7 @@ public NodeMultiZipper(T commonRoot, List> zippers, NodeAdapter */ private NodeMultiZipper(T commonRoot, List> zippers, NodeAdapter nodeAdapter, Object dummy) { this.commonRoot = assertNotNull(commonRoot); - this.zippers = Collections.unmodifiableList(zippers); + this.zippers = ImmutableList.copyOf(zippers); this.nodeAdapter = nodeAdapter; } @@ -58,11 +59,11 @@ public T toRootNode() { while (curZippers.size() > 1) { List> deepestZippers = getDeepestZippers(curZippers); - Map>> sameParent = zipperWithSameParent(deepestZippers); + Map>> sameParent = zipperWithSameParent(deepestZippers); List> newZippers = new ArrayList<>(); - Map> zipperByNode = FpKit.groupingByUniqueKey(curZippers, NodeZipper::getCurNode); - for (Map.Entry>> entry : sameParent.entrySet()) { + Map> zipperByNode = FpKit.toMapByUniqueKey(curZippers, NodeZipper::getCurNode); + for (Map.Entry>> entry : sameParent.entrySet()) { NodeZipper newZipper = moveUp(entry.getKey(), entry.getValue()); Optional> zipperToBeReplaced = Optional.ofNullable(zipperByNode.get(entry.getKey())); zipperToBeReplaced.ifPresent(curZippers::remove); @@ -121,7 +122,7 @@ public NodeMultiZipper withReplacedZipperForNode(T currentNode, T newNode) { private List> getDeepestZippers(Set> zippers) { - Map>> grouped = FpKit.groupingBy(zippers, astZipper -> astZipper.getBreadcrumbs().size()); + Map>> grouped = FpKit.groupingBy(zippers, astZipper -> astZipper.getBreadcrumbs().size()); Integer maxLevel = Collections.max(grouped.keySet()); return grouped.get(maxLevel); @@ -133,6 +134,7 @@ private NodeZipper moveUp(T parent, List> sameParent) { Map> childrenMap = new HashMap<>(nodeAdapter.getNamedChildren(parent)); Map indexCorrection = new HashMap<>(); + sameParent = new ArrayList<>(sameParent); sameParent.sort((zipper1, zipper2) -> { int index1 = zipper1.getBreadcrumbs().get(0).getLocation().getIndex(); int index2 = zipper2.getBreadcrumbs().get(0).getLocation().getIndex(); @@ -188,7 +190,7 @@ private NodeZipper moveUp(T parent, List> sameParent) { return new NodeZipper<>(newNode, newBreadcrumbs, this.nodeAdapter); } - private Map>> zipperWithSameParent(List> zippers) { + private Map>> zipperWithSameParent(List> zippers) { return FpKit.groupingBy(zippers, NodeZipper::getParent); } } diff --git a/src/main/java/graphql/util/NodeZipper.java b/src/main/java/graphql/util/NodeZipper.java index 3170e7dfff..0a5dfd46a7 100644 --- a/src/main/java/graphql/util/NodeZipper.java +++ b/src/main/java/graphql/util/NodeZipper.java @@ -1,9 +1,9 @@ package graphql.util; +import com.google.common.collect.ImmutableList; import graphql.PublicApi; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -37,7 +37,7 @@ public NodeZipper(T curNode, List> breadcrumbs, NodeAdapter nod public NodeZipper(T curNode, List> breadcrumbs, NodeAdapter nodeAdapter, ModificationType modificationType) { this.curNode = assertNotNull(curNode); - this.breadcrumbs = Collections.unmodifiableList(new ArrayList<>(assertNotNull(breadcrumbs))); + this.breadcrumbs = ImmutableList.copyOf(assertNotNull(breadcrumbs)); this.nodeAdapter = nodeAdapter; this.modificationType = modificationType; } @@ -139,5 +139,12 @@ public T toRoot() { return curNode; } - + @Override + public String toString() { + return "NodeZipper{" + + "curNode=" + curNode + + ", breadcrumbs.size=" + breadcrumbs.size() + + ", modificationType=" + modificationType + + '}'; + } } diff --git a/src/main/java/graphql/util/Pair.java b/src/main/java/graphql/util/Pair.java new file mode 100644 index 0000000000..ccbb6c5e35 --- /dev/null +++ b/src/main/java/graphql/util/Pair.java @@ -0,0 +1,24 @@ +package graphql.util; + +import graphql.Internal; + +@Internal +public final class Pair { + + public Pair(T first, U second) { + this.second = second; + this.first = first; + } + + public final T first; + public final U second; + + public static Pair pair(T first, U second) { + return new Pair<>(first, second); + } + + @Override + public String toString() { + return "(" + first + ", " + second + ")"; + } +} \ No newline at end of file diff --git a/src/main/java/graphql/util/StringKit.java b/src/main/java/graphql/util/StringKit.java new file mode 100644 index 0000000000..20fcea1b1f --- /dev/null +++ b/src/main/java/graphql/util/StringKit.java @@ -0,0 +1,20 @@ +package graphql.util; + +import java.util.Locale; + +public class StringKit { + + public static String capitalize(String s) { + if (s != null && !s.isEmpty()) { + StringBuilder sb = new StringBuilder(); + // see https://github.com/graphql-java/graphql-java/issues/3385 + sb.append(s.substring(0, 1).toUpperCase(Locale.ROOT)); + if (s.length() > 1) { + sb.append(s.substring(1)); + } + return sb.toString(); + } + return s; + } + +} diff --git a/src/main/java/graphql/util/Traverser.java b/src/main/java/graphql/util/Traverser.java index 7e08a2c348..4190dfb6c0 100644 --- a/src/main/java/graphql/util/Traverser.java +++ b/src/main/java/graphql/util/Traverser.java @@ -132,7 +132,7 @@ public TraverserResult traverse(Collection roots, TraverserVisitor< currentContext.setPhase(TraverserContext.Phase.BACKREF); TraversalControl traversalControl = visitor.backRef(currentContext); currentAccValue = currentContext.getNewAccumulate(); - assertNotNull(traversalControl, "result of backRef must not be null"); + assertNotNull(traversalControl,"result of backRef must not be null"); assertTrue(CONTINUE_OR_QUIT.contains(traversalControl), "backRef can only return CONTINUE or QUIT"); if (traversalControl == QUIT) { break traverseLoop; diff --git a/src/main/java/graphql/util/TraverserContext.java b/src/main/java/graphql/util/TraverserContext.java index 3bbc4bbcf1..0f38dc5c0c 100644 --- a/src/main/java/graphql/util/TraverserContext.java +++ b/src/main/java/graphql/util/TraverserContext.java @@ -120,7 +120,7 @@ enum Phase { * Obtains all visited nodes and values received by the {@link TraverserVisitor#enter(graphql.util.TraverserContext) } * method * - * @return a map containg all nodes visited and values passed when visiting nodes for the first time + * @return a map containing all nodes visited and values passed when visiting nodes for the first time */ Set visitedNodes(); @@ -148,7 +148,7 @@ enum Phase { /** * Stores a variable in the context * - * @param type of a varable + * @param type of a variable * @param key key to create bindings for the variable * @param value value of variable * @@ -214,9 +214,7 @@ enum Phase { Phase getPhase(); /** - * If the traversing happens in parallel (multi threaded) or not. - * - * @return + * @return true if the traversing happens in parallel (multi threaded) or not. */ boolean isParallel(); diff --git a/src/main/java/graphql/util/TraverserState.java b/src/main/java/graphql/util/TraverserState.java index ba5df5cf82..e478e05a0b 100644 --- a/src/main/java/graphql/util/TraverserState.java +++ b/src/main/java/graphql/util/TraverserState.java @@ -44,7 +44,7 @@ public void pushAll(TraverserContext traverserContext, Function { List children = childrenMap.get(key); for (int i = children.size() - 1; i >= 0; i--) { - U child = assertNotNull(children.get(i), "null child for key " + key); + U child = assertNotNull(children.get(i), "null child for key %s",key); NodeLocation nodeLocation = new NodeLocation(key, i); DefaultTraverserContext context = super.newContext(child, traverserContext, nodeLocation); super.state.push(context); @@ -72,7 +72,7 @@ public void pushAll(TraverserContext traverserContext, Function { List children = childrenMap.get(key); for (int i = 0; i < children.size(); i++) { - U child = assertNotNull(children.get(i), "null child for key " + key); + U child = assertNotNull(children.get(i), "null child for key %s",key); NodeLocation nodeLocation = new NodeLocation(key, i); DefaultTraverserContext context = super.newContext(child, traverserContext, nodeLocation); childrenContextMap.computeIfAbsent(key, notUsed -> new ArrayList<>()); diff --git a/src/main/java/graphql/util/TreeParallelTransformer.java b/src/main/java/graphql/util/TreeParallelTransformer.java index c7395d526c..5bbde1cd1b 100644 --- a/src/main/java/graphql/util/TreeParallelTransformer.java +++ b/src/main/java/graphql/util/TreeParallelTransformer.java @@ -1,10 +1,10 @@ package graphql.util; import graphql.Internal; +import graphql.collect.ImmutableKit; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; @@ -31,7 +31,7 @@ public class TreeParallelTransformer { private final NodeAdapter nodeAdapter; - private Object sharedContextData; + private final Object sharedContextData; private TreeParallelTransformer(Object sharedContextData, @@ -104,7 +104,7 @@ public void compute() { assertNotNull(traversalControl, "result of enter must not be null"); assertTrue(QUIT != traversalControl, "can't return QUIT for parallel traversing"); if (traversalControl == ABORT) { - this.children = Collections.emptyList(); + this.children = ImmutableKit.emptyList(); tryComplete(); return; } diff --git a/src/main/java/graphql/util/TreeTransformer.java b/src/main/java/graphql/util/TreeTransformer.java index e8fcf2e176..970b0eac48 100644 --- a/src/main/java/graphql/util/TreeTransformer.java +++ b/src/main/java/graphql/util/TreeTransformer.java @@ -2,8 +2,8 @@ import graphql.PublicApi; +import graphql.collect.ImmutableKit; -import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -20,7 +20,7 @@ public TreeTransformer(NodeAdapter nodeAdapter) { } public T transform(T root, TraverserVisitor traverserVisitor) { - return transform(root, traverserVisitor, Collections.emptyMap()); + return transform(root, traverserVisitor, ImmutableKit.emptyMap()); } public T transform(T root, TraverserVisitor traverserVisitor, Map, Object> rootVars) { diff --git a/src/main/java/graphql/util/TreeTransformerUtil.java b/src/main/java/graphql/util/TreeTransformerUtil.java index 90289303b0..0ee41a3b3a 100644 --- a/src/main/java/graphql/util/TreeTransformerUtil.java +++ b/src/main/java/graphql/util/TreeTransformerUtil.java @@ -13,22 +13,22 @@ public class TreeTransformerUtil { /** * Can be called multiple times to change the current node of the context. The latest call wins * - * @param context - * @param changedNode - * @param + * @param context the context in play + * @param changedNode the changed node + * @param for two * - * @return + * @return traversal control */ public static TraversalControl changeNode(TraverserContext context, T changedNode) { boolean changed = context.isChanged(); if (context.isParallel()) { List> zippers = context.getVar(List.class); - NodeAdapter adaper = context.getVar(NodeAdapter.class); + NodeAdapter adapter = context.getVar(NodeAdapter.class); if (changed) { replaceZipperForNode(zippers, context.thisNode(), changedNode); context.changeNode(changedNode); } else { - NodeZipper nodeZipper = new NodeZipper<>(changedNode, context.getBreadcrumbs(), adaper); + NodeZipper nodeZipper = new NodeZipper<>(changedNode, context.getBreadcrumbs(), adapter); zippers.add(nodeZipper); context.changeNode(changedNode); } @@ -57,8 +57,8 @@ private static void replaceZipperForNode(List> zippers, T curr public static TraversalControl deleteNode(TraverserContext context) { if (context.isParallel()) { - NodeAdapter adaper = context.getVar(NodeAdapter.class); - NodeZipper deleteNodeZipper = new NodeZipper<>(context.thisNode(), context.getBreadcrumbs(), adaper).deleteNode(); + NodeAdapter adapter = context.getVar(NodeAdapter.class); + NodeZipper deleteNodeZipper = new NodeZipper<>(context.thisNode(), context.getBreadcrumbs(), adapter).deleteNode(); List> zippers = context.getVar(List.class); zippers.add(deleteNodeZipper); context.deleteNode(); @@ -74,8 +74,8 @@ public static TraversalControl deleteNode(TraverserContext context) { public static TraversalControl insertAfter(TraverserContext context, T toInsertAfter) { if (context.isParallel()) { - NodeAdapter adaper = context.getVar(NodeAdapter.class); - NodeZipper insertNodeZipper = new NodeZipper<>(context.originalThisNode(), context.getBreadcrumbs(), adaper).insertAfter(toInsertAfter); + NodeAdapter adapter = context.getVar(NodeAdapter.class); + NodeZipper insertNodeZipper = new NodeZipper<>(context.originalThisNode(), context.getBreadcrumbs(), adapter).insertAfter(toInsertAfter); List> zippers = context.getVar(List.class); zippers.add(insertNodeZipper); return TraversalControl.CONTINUE; @@ -89,8 +89,8 @@ public static TraversalControl insertAfter(TraverserContext context, T to public static TraversalControl insertBefore(TraverserContext context, T toInsertBefore) { if (context.isParallel()) { - NodeAdapter adaper = context.getVar(NodeAdapter.class); - NodeZipper insertNodeZipper = new NodeZipper<>(context.originalThisNode(), context.getBreadcrumbs(), adaper).insertBefore(toInsertBefore); + NodeAdapter adapter = context.getVar(NodeAdapter.class); + NodeZipper insertNodeZipper = new NodeZipper<>(context.originalThisNode(), context.getBreadcrumbs(), adapter).insertBefore(toInsertBefore); List> zippers = context.getVar(List.class); zippers.add(insertNodeZipper); return TraversalControl.CONTINUE; diff --git a/src/main/java/graphql/util/querygenerator/QueryGenerator.java b/src/main/java/graphql/util/querygenerator/QueryGenerator.java new file mode 100644 index 0000000000..a176164683 --- /dev/null +++ b/src/main/java/graphql/util/querygenerator/QueryGenerator.java @@ -0,0 +1,170 @@ +package graphql.util.querygenerator; + +import graphql.ExperimentalApi; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLUnionType; +import graphql.util.querygenerator.QueryGeneratorFieldSelection.FieldSelection; +import graphql.util.querygenerator.QueryGeneratorFieldSelection.FieldSelectionResult; +import org.jspecify.annotations.Nullable; + +import java.util.stream.Stream; + +/** + * Generates a GraphQL query string based on the provided operation field path, operation name, arguments, and type classifier. + *

      + * While this class is useful for testing purposes, such as ensuring that all fields from a certain type are being + * fetched correctly, it is important to note that generating GraphQL queries with all possible fields defeats one of + * the main purposes of a GraphQL API: allowing clients to be selective about the fields they want to fetch. + *

      + * Callers can pass options to customize the query generation process, such as filtering fields or + * limiting the maximum number of fields. + *

      + * + */ +@ExperimentalApi +public class QueryGenerator { + private final GraphQLSchema schema; + private final QueryGeneratorFieldSelection fieldSelectionGenerator; + private final QueryGeneratorPrinter printer; + + + /** + * Constructor for QueryGenerator using default options. + * + * @param schema the GraphQL schema + */ + public QueryGenerator(GraphQLSchema schema) { + this.schema = schema; + this.fieldSelectionGenerator = new QueryGeneratorFieldSelection(schema, QueryGeneratorOptions.newBuilder().build()); + this.printer = new QueryGeneratorPrinter(); + } + + /** + * Constructor for QueryGenerator. + * + * @param schema the GraphQL schema + * @param options the options for query generation + */ + public QueryGenerator(GraphQLSchema schema, QueryGeneratorOptions options) { + this.schema = schema; + this.fieldSelectionGenerator = new QueryGeneratorFieldSelection(schema, options); + this.printer = new QueryGeneratorPrinter(); + } + + /** + * Generates a GraphQL query string based on the provided operation field path, operation name, arguments, + * and type classifier. + * + *

      + * operationFieldPath is a string that represents the path to the field in the GraphQL schema. This method + * will generate a query that includes all fields from the specified type, including nested fields. + *

      + * operationName is optional. When passed, the generated query will contain that value in the operation name. + *

      + * arguments are optional. When passed, the generated query will contain that value in the arguments. + *

      + * typeName is optional. It should not be passed in when the field in the path is an object type, and it + * **should** be passed when the field in the path is an interface or union type. In the latter case, its value + * should be an object type that is part of the union or implements the interface. + * + * @param operationFieldPath the operation field path (e.g., "Query.user", "Mutation.createUser", "Subscription.userCreated") + * @param operationName optional: the operation name (e.g., "getUser") + * @param arguments optional: the arguments for the operation in a plain text form (e.g., "(id: 1)") + * @param typeName optional: the type name for when operationFieldPath points to a field of union or interface types (e.g., "FirstPartyUser") + * + * @return a QueryGeneratorResult containing the generated query string and additional information + */ + public QueryGeneratorResult generateQuery( + String operationFieldPath, + @Nullable String operationName, + @Nullable String arguments, + @Nullable String typeName + ) { + String[] fieldParts = operationFieldPath.split("\\."); + String operation = fieldParts[0]; + + if (fieldParts.length < 2) { + throw new IllegalArgumentException("Field path must contain at least an operation and a field"); + } + + if (!operation.equals("Query") && !operation.equals("Mutation") && !operation.equals("Subscription")) { + throw new IllegalArgumentException("Operation must be 'Query', 'Mutation' or 'Subscription'"); + } + + GraphQLFieldsContainer fieldContainer = schema.getObjectType(operation); + + for (int i = 1; i < fieldParts.length - 1; i++) { + String fieldName = fieldParts[i]; + GraphQLFieldDefinition fieldDefinition = fieldContainer.getFieldDefinition(fieldName); + if (fieldDefinition == null) { + throw new IllegalArgumentException("Field " + fieldName + " not found in type " + fieldContainer.getName()); + } + // intermediate fields in the path need to be a field container + if (!(fieldDefinition.getType() instanceof GraphQLFieldsContainer)) { + throw new IllegalArgumentException("Type " + fieldDefinition.getType() + " is not a field container"); + } + fieldContainer = (GraphQLFieldsContainer) fieldDefinition.getType(); + } + + String lastFieldName = fieldParts[fieldParts.length - 1]; + GraphQLFieldDefinition lastFieldDefinition = fieldContainer.getFieldDefinition(lastFieldName); + if (lastFieldDefinition == null) { + throw new IllegalArgumentException("Field " + lastFieldName + " not found in type " + fieldContainer.getName()); + } + + // last field may be an object, interface or union type + GraphQLOutputType lastType = GraphQLTypeUtil.unwrapAllAs(lastFieldDefinition.getType()); + + final GraphQLFieldsContainer lastFieldContainer; + + if (lastType instanceof GraphQLObjectType) { + if (typeName != null) { + throw new IllegalArgumentException("typeName should be used only with interface or union types"); + } + lastFieldContainer = (GraphQLObjectType) lastType; + } else if (lastType instanceof GraphQLUnionType) { + if (typeName == null) { + throw new IllegalArgumentException("typeName is required for union types"); + } + lastFieldContainer = ((GraphQLUnionType) lastType).getTypes().stream() + .filter(GraphQLFieldsContainer.class::isInstance) + .map(GraphQLFieldsContainer.class::cast) + .filter(type -> type.getName().equals(typeName)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Type " + typeName + " not found in union " + ((GraphQLUnionType) lastType).getName())); + } else if (lastType instanceof GraphQLInterfaceType) { + if (typeName == null) { + throw new IllegalArgumentException("typeName is required for interface types"); + } + Stream fieldsContainerStream = Stream.concat( + Stream.of((GraphQLInterfaceType) lastType), + schema.getImplementations((GraphQLInterfaceType) lastType).stream() + ); + + lastFieldContainer = fieldsContainerStream + .filter(type -> type.getName().equals(typeName)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Type " + typeName + " not found in interface " + ((GraphQLInterfaceType) lastType).getName())); + } else { + throw new IllegalArgumentException("Type " + lastType + " is not a field container"); + } + + FieldSelectionResult fieldSelectionResult = fieldSelectionGenerator.buildFields(lastFieldContainer); + FieldSelection rootFieldSelection = fieldSelectionResult.rootFieldSelection; + + String query = printer.print(operationFieldPath, operationName, arguments, rootFieldSelection); + + return new QueryGeneratorResult( + query, + lastFieldContainer.getName(), + fieldSelectionResult.totalFieldCount, + fieldSelectionResult.reachedMaxFieldCount + ); + } +} diff --git a/src/main/java/graphql/util/querygenerator/QueryGeneratorFieldSelection.java b/src/main/java/graphql/util/querygenerator/QueryGeneratorFieldSelection.java new file mode 100644 index 0000000000..0662854c77 --- /dev/null +++ b/src/main/java/graphql/util/querygenerator/QueryGeneratorFieldSelection.java @@ -0,0 +1,197 @@ +package graphql.util.querygenerator; + +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLUnionType; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +class QueryGeneratorFieldSelection { + private final QueryGeneratorOptions options; + private final GraphQLSchema schema; + + private static final GraphQLObjectType EMPTY_OBJECT_TYPE = GraphQLObjectType.newObject() + .name("Empty") + .build(); + + QueryGeneratorFieldSelection(GraphQLSchema schema, QueryGeneratorOptions options) { + this.options = options; + this.schema = schema; + } + + FieldSelectionResult buildFields(GraphQLFieldsContainer fieldsContainer) { + Queue> containersQueue = new LinkedList<>(); + containersQueue.add(Collections.singletonList(fieldsContainer)); + + Queue fieldSelectionQueue = new LinkedList<>(); + FieldSelection root = new FieldSelection(fieldsContainer.getName(), new HashMap<>(), false); + fieldSelectionQueue.add(root); + + Set visited = new HashSet<>(); + AtomicInteger totalFieldCount = new AtomicInteger(0); + boolean reachedMaxFieldCount = false; + + while (!reachedMaxFieldCount &&!containersQueue.isEmpty()) { + processContainers(containersQueue, fieldSelectionQueue, visited, totalFieldCount); + + if (totalFieldCount.get() >= options.getMaxFieldCount()) { + reachedMaxFieldCount = true; + } + } + + return new FieldSelectionResult( + root, + totalFieldCount.get(), + reachedMaxFieldCount + ); + } + + private void processContainers(Queue> containersQueue, + Queue fieldSelectionQueue, + Set visited, + AtomicInteger totalFieldCount) { + List containers = containersQueue.poll(); + FieldSelection fieldSelection = fieldSelectionQueue.poll(); + + for (GraphQLFieldsContainer container : Objects.requireNonNull(containers)) { + if (!options.getFilterFieldContainerPredicate().test(container)) { + continue; + } + + for (GraphQLFieldDefinition fieldDef : container.getFieldDefinitions()) { + if (!options.getFilterFieldDefinitionPredicate().test(fieldDef)) { + continue; + } + + if (totalFieldCount.get() >= options.getMaxFieldCount()) { + break; + } + + if (hasRequiredArgs(fieldDef)) { + continue; + } + + FieldCoordinates fieldCoordinates = FieldCoordinates.coordinates(container, fieldDef.getName()); + + if (visited.contains(fieldCoordinates)) { + continue; + } + + processField( + container, + fieldDef, + Objects.requireNonNull(fieldSelection), + containersQueue, + fieldSelectionQueue, + fieldCoordinates, + visited, + totalFieldCount + ); + } + } + } + + private void processField(GraphQLFieldsContainer container, + GraphQLFieldDefinition fieldDef, + FieldSelection fieldSelection, + Queue> containersQueue, + Queue fieldSelectionQueue, + FieldCoordinates fieldCoordinates, + Set visited, + AtomicInteger totalFieldCount) { + + GraphQLType unwrappedType = GraphQLTypeUtil.unwrapAll(fieldDef.getType()); + FieldSelection newFieldSelection = getFieldSelection(fieldDef, unwrappedType); + + fieldSelection.fieldsByContainer.computeIfAbsent(container.getName(), key -> new ArrayList<>()).add(newFieldSelection); + + fieldSelectionQueue.add(newFieldSelection); + + if (unwrappedType instanceof GraphQLInterfaceType) { + visited.add(fieldCoordinates); + GraphQLInterfaceType interfaceType = (GraphQLInterfaceType) unwrappedType; + List possibleTypes = new ArrayList<>(schema.getImplementations(interfaceType)); + + containersQueue.add(possibleTypes); + } else if (unwrappedType instanceof GraphQLUnionType) { + visited.add(fieldCoordinates); + GraphQLUnionType unionType = (GraphQLUnionType) unwrappedType; + List possibleTypes = unionType.getTypes().stream() + .filter(possibleType -> possibleType instanceof GraphQLFieldsContainer) + .map(possibleType -> (GraphQLFieldsContainer) possibleType) + .collect(Collectors.toList()); + + containersQueue.add(possibleTypes); + } else if (unwrappedType instanceof GraphQLFieldsContainer) { + visited.add(fieldCoordinates); + containersQueue.add(Collections.singletonList((GraphQLFieldsContainer) unwrappedType)); + } else { + containersQueue.add(Collections.singletonList(EMPTY_OBJECT_TYPE)); + } + + totalFieldCount.incrementAndGet(); + } + + private static FieldSelection getFieldSelection(GraphQLFieldDefinition fieldDef, GraphQLType unwrappedType) { + boolean typeNeedsClassifier = unwrappedType instanceof GraphQLUnionType || unwrappedType instanceof GraphQLInterfaceType; + + // TODO: This statement is kinda awful + final FieldSelection newFieldSelection; + + if (typeNeedsClassifier) { + newFieldSelection = new FieldSelection(fieldDef.getName(), new HashMap<>(), true); + } else if (unwrappedType instanceof GraphQLFieldsContainer) { + newFieldSelection = new FieldSelection(fieldDef.getName(), new HashMap<>(), false); + } else { + newFieldSelection = new FieldSelection(fieldDef.getName(), null, false); + } + return newFieldSelection; + } + + private boolean hasRequiredArgs(GraphQLFieldDefinition fieldDefinition) { + // TODO: Maybe provide a hook to allow callers to resolve required arguments + return fieldDefinition.getArguments().stream() + .anyMatch(arg -> GraphQLTypeUtil.isNonNull(arg.getType()) && !arg.hasSetDefaultValue()); + } + + static class FieldSelection { + final String name; + final boolean needsTypeClassifier; + final Map> fieldsByContainer; + + public FieldSelection(String name, Map> fieldsByContainer, boolean needsTypeClassifier) { + this.name = name; + this.needsTypeClassifier = needsTypeClassifier; + this.fieldsByContainer = fieldsByContainer; + } + } + + static class FieldSelectionResult { + final FieldSelection rootFieldSelection; + final Integer totalFieldCount; + final Boolean reachedMaxFieldCount; + + FieldSelectionResult(FieldSelection rootFieldSelection, Integer totalFieldCount, Boolean reachedMaxFieldCount) { + this.rootFieldSelection = rootFieldSelection; + this.totalFieldCount = totalFieldCount; + this.reachedMaxFieldCount = reachedMaxFieldCount; + } + } +} diff --git a/src/main/java/graphql/util/querygenerator/QueryGeneratorOptions.java b/src/main/java/graphql/util/querygenerator/QueryGeneratorOptions.java new file mode 100644 index 0000000000..bc3fdeae65 --- /dev/null +++ b/src/main/java/graphql/util/querygenerator/QueryGeneratorOptions.java @@ -0,0 +1,142 @@ +package graphql.util.querygenerator; + +import graphql.ExperimentalApi; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLFieldsContainer; + +import java.util.function.Predicate; + +/** + * Options for the {@link QueryGenerator} class. + */ +@ExperimentalApi +public class QueryGeneratorOptions { + private final int maxFieldCount; + private final Predicate filterFieldContainerPredicate; + private final Predicate filterFieldDefinitionPredicate; + + private static final int MAX_FIELD_COUNT_LIMIT = 10_000; + + private QueryGeneratorOptions( + int maxFieldCount, + Predicate filterFieldContainerPredicate, + Predicate filterFieldDefinitionPredicate + ) { + this.maxFieldCount = maxFieldCount; + this.filterFieldContainerPredicate = filterFieldContainerPredicate; + this.filterFieldDefinitionPredicate = filterFieldDefinitionPredicate; + } + + /** + * Returns the maximum number of fields that can be included in the generated query. + * + * @return the maximum field count + */ + public int getMaxFieldCount() { + return maxFieldCount; + } + + /** + * Returns the predicate used to filter field containers. + *

      + * The field container will be filtered out if this predicate returns false. + * + * @return the predicate for filtering field containers + */ + public Predicate getFilterFieldContainerPredicate() { + return filterFieldContainerPredicate; + } + + /** + * Returns the predicate used to filter field definitions. + *

      + * The field definition will be filtered out if this predicate returns false. + * + * @return the predicate for filtering field definitions + */ + public Predicate getFilterFieldDefinitionPredicate() { + return filterFieldDefinitionPredicate; + } + + /** + * Builder for {@link QueryGeneratorOptions}. + */ + @ExperimentalApi + public static class QueryGeneratorOptionsBuilder { + private int maxFieldCount = MAX_FIELD_COUNT_LIMIT; + + private static final Predicate ALWAYS_TRUE = fieldsContainer -> true; + + @SuppressWarnings("unchecked") + private static Predicate alwaysTrue() { + return (Predicate) ALWAYS_TRUE; + } + + private Predicate filterFieldContainerPredicate = alwaysTrue(); + private Predicate filterFieldDefinitionPredicate = alwaysTrue(); + + private QueryGeneratorOptionsBuilder() {} + + /** + * Sets the maximum number of fields that can be included in the generated query. + *

      + * This value must be non-negative and cannot exceed {@link #MAX_FIELD_COUNT_LIMIT}. + * + * @param maxFieldCount the maximum field count + * @return this builder + */ + public QueryGeneratorOptionsBuilder maxFieldCount(int maxFieldCount) { + if (maxFieldCount < 0) { + throw new IllegalArgumentException("Max field count cannot be negative"); + } + if (maxFieldCount > MAX_FIELD_COUNT_LIMIT) { + throw new IllegalArgumentException("Max field count cannot exceed " + MAX_FIELD_COUNT_LIMIT); + } + this.maxFieldCount = maxFieldCount; + return this; + } + + /** + * Sets the predicate used to filter field containers. + *

      + * The field container will be filtered out if this predicate returns false. + * + * @param predicate the predicate for filtering field containers + * @return this builder + */ + public QueryGeneratorOptionsBuilder filterFieldContainerPredicate(Predicate predicate) { + this.filterFieldContainerPredicate = predicate; + return this; + } + + /** + * Sets the predicate used to filter field definitions. + *

      + * The field definition will be filtered out if this predicate returns false. + * + * @param predicate the predicate for filtering field definitions + * @return this builder + */ + public QueryGeneratorOptionsBuilder filterFieldDefinitionPredicate(Predicate predicate) { + this.filterFieldDefinitionPredicate = predicate; + return this; + } + + public QueryGeneratorOptions build() { + return new QueryGeneratorOptions( + maxFieldCount, + filterFieldContainerPredicate, + filterFieldDefinitionPredicate + ); + } + } + + /** + * Creates a new {@link QueryGeneratorOptionsBuilder} with default values. + * + * @return a new builder instance + */ + public static QueryGeneratorOptions.QueryGeneratorOptionsBuilder newBuilder() { + return new QueryGeneratorOptions.QueryGeneratorOptionsBuilder(); + } +} diff --git a/src/main/java/graphql/util/querygenerator/QueryGeneratorPrinter.java b/src/main/java/graphql/util/querygenerator/QueryGeneratorPrinter.java new file mode 100644 index 0000000000..94046943e2 --- /dev/null +++ b/src/main/java/graphql/util/querygenerator/QueryGeneratorPrinter.java @@ -0,0 +1,129 @@ +package graphql.util.querygenerator; + +import graphql.language.AstPrinter; +import graphql.parser.Parser; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.stream.Collectors; + +class QueryGeneratorPrinter { + String print( + String operationFieldPath, + @Nullable String operationName, + @Nullable String arguments, + QueryGeneratorFieldSelection.FieldSelection rootFieldSelection + ) { + String[] fieldPathParts = operationFieldPath.split("\\."); + + String fields = printFieldsForTopLevelType(rootFieldSelection); + String start = printOperationStart(fieldPathParts, operationName, arguments); + String end = printOperationEnd(fieldPathParts); + String raw = start + fields + end; + + return AstPrinter.printAst(Parser.parse(raw)); + } + + private String printFieldsForTopLevelType(QueryGeneratorFieldSelection.FieldSelection rootFieldSelection) { + return rootFieldSelection.fieldsByContainer.values().iterator().next().stream() + .map(this::printFieldSelection) + .collect(Collectors.joining( + "", + "... on " + rootFieldSelection.name + " {\n", + "}\n" + )); + } + + private String printOperationStart( + String[] fieldPathParts, + @Nullable String operationName, + @Nullable String arguments + ) { + String operation = fieldPathParts[0].toLowerCase(); + StringBuilder sb = new StringBuilder(); + sb.append(operation); + + if (operationName != null) { + sb.append(" ").append(operationName).append(" "); + } + + sb.append(" {\n"); + + for (int i = 1; i < fieldPathParts.length; i++) { + sb.append(fieldPathParts[i]); + boolean isLastField = i == fieldPathParts.length - 1; + + if (isLastField) { + if (arguments != null) { + sb.append(arguments); + } + } + + sb.append(" {\n"); + + } + return sb.toString(); + } + + private String printOperationEnd(String[] fieldPathParts) { + return "}\n".repeat(fieldPathParts.length); + } + + private String printFieldSelectionForContainer( + String containerName, + List fieldSelections, + boolean needsTypeClassifier + ) { + String fieldStr = fieldSelections.stream() + .map(subField -> + printFieldSelection(subField, needsTypeClassifier ? containerName + "_" : null)) + .collect(Collectors.joining()); + + if (fieldStr.isEmpty()) { + return ""; + } + + StringBuilder fieldSelectionSb = new StringBuilder(); + if (needsTypeClassifier) { + fieldSelectionSb.append("... on ").append(containerName).append(" {\n"); + } + + fieldSelectionSb.append(fieldStr); + + if (needsTypeClassifier) { + fieldSelectionSb.append(" }\n"); + } + + return fieldSelectionSb.toString(); + } + + private String printFieldSelection(QueryGeneratorFieldSelection.FieldSelection fieldSelection, @Nullable String aliasPrefix) { + StringBuilder sb = new StringBuilder(); + if (fieldSelection.fieldsByContainer != null) { + String fieldSelectionString = fieldSelection.fieldsByContainer.entrySet().stream() + .map((entry) -> + printFieldSelectionForContainer(entry.getKey(), entry.getValue(), fieldSelection.needsTypeClassifier)) + .collect(Collectors.joining()); + // It is possible that some container fields ended up with empty fields (due to filtering etc). We shouldn't print those + if (!fieldSelectionString.isEmpty()) { + if (aliasPrefix != null) { + sb.append(aliasPrefix).append(fieldSelection.name).append(": "); + } + sb.append(fieldSelection.name) + .append(" {\n") + .append(fieldSelectionString) + .append("}\n"); + } + } else { + if (aliasPrefix != null) { + sb.append(aliasPrefix).append(fieldSelection.name).append(": "); + } + sb.append(fieldSelection.name).append("\n"); + } + return sb.toString(); + } + + private String printFieldSelection(QueryGeneratorFieldSelection.FieldSelection fieldSelection) { + return printFieldSelection(fieldSelection, null); + } +} diff --git a/src/main/java/graphql/util/querygenerator/QueryGeneratorResult.java b/src/main/java/graphql/util/querygenerator/QueryGeneratorResult.java new file mode 100644 index 0000000000..b7541f5d0a --- /dev/null +++ b/src/main/java/graphql/util/querygenerator/QueryGeneratorResult.java @@ -0,0 +1,62 @@ +package graphql.util.querygenerator; + +import graphql.ExperimentalApi; + +/** + * Represents the result of a query generation process. + */ +@ExperimentalApi +public class QueryGeneratorResult { + private final String query; + private final String usedType; + private final int totalFieldCount; + private final boolean reachedMaxFieldCount; + + public QueryGeneratorResult( + String query, + String usedType, + int totalFieldCount, + boolean reachedMaxFieldCount + ) { + this.query = query; + this.usedType = usedType; + this.totalFieldCount = totalFieldCount; + this.reachedMaxFieldCount = reachedMaxFieldCount; + } + + /** + * Returns the generated query string. + * + * @return the query string + */ + public String getQuery() { + return query; + } + + /** + * Returns the type that ultimately was used to generate the query. + * + * @return the used type + */ + public String getUsedType() { + return usedType; + } + + /** + * Returns the total number of fields that were considered during query generation. + * + * @return the total field count + */ + public int getTotalFieldCount() { + return totalFieldCount; + } + + /** + * Indicates whether the maximum field count was reached during query generation. + * + * @return true if the maximum field count was reached, false otherwise + */ + public boolean isReachedMaxFieldCount() { + return reachedMaxFieldCount; + } +} diff --git a/src/main/java/graphql/validation/AbstractRule.java b/src/main/java/graphql/validation/AbstractRule.java index 38daf27603..fc5cf07771 100644 --- a/src/main/java/graphql/validation/AbstractRule.java +++ b/src/main/java/graphql/validation/AbstractRule.java @@ -2,6 +2,7 @@ import graphql.Internal; +import graphql.i18n.I18nMsg; import graphql.language.Argument; import graphql.language.Directive; import graphql.language.Document; @@ -10,6 +11,7 @@ import graphql.language.FragmentSpread; import graphql.language.InlineFragment; import graphql.language.Node; +import graphql.language.ObjectValue; import graphql.language.OperationDefinition; import graphql.language.SelectionSet; import graphql.language.SourceLocation; @@ -18,24 +20,24 @@ import graphql.language.VariableReference; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import static graphql.validation.ValidationError.newValidationError; +import static java.lang.System.arraycopy; @Internal public class AbstractRule { private final ValidationContext validationContext; private final ValidationErrorCollector validationErrorCollector; - - + private final ValidationUtil validationUtil; private boolean visitFragmentSpreads; - private ValidationUtil validationUtil = new ValidationUtil(); - public AbstractRule(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { this.validationContext = validationContext; this.validationErrorCollector = validationErrorCollector; + this.validationUtil = new ValidationUtil(); } public boolean isVisitFragmentSpreads() { @@ -46,12 +48,11 @@ public void setVisitFragmentSpreads(boolean visitFragmentSpreads) { this.visitFragmentSpreads = visitFragmentSpreads; } - public ValidationUtil getValidationUtil() { return validationUtil; } - public void addError(ValidationErrorType validationErrorType, List> locations, String description) { + public void addError(ValidationErrorType validationErrorType, Collection> locations, String description) { List locationList = new ArrayList<>(); for (Node node : locations) { locationList.add(node.getSourceLocation()); @@ -77,7 +78,6 @@ public List getErrors() { return validationErrorCollector.getErrors(); } - public ValidationContext getValidationContext() { return validationContext; } @@ -90,6 +90,56 @@ protected List getQueryPath() { return validationContext.getQueryPath(); } + /** + * Verifies if the experimental API key is enabled + * @param key to be checked + * @return if the experimental API key is enabled + */ + protected Boolean isExperimentalApiKeyEnabled(String key) { + return (getValidationContext() != null && + getValidationContext().getGraphQLContext() != null || + getValidationContext().getGraphQLContext().get(key) != null || + ((Boolean) getValidationContext().getGraphQLContext().get(key))); + } + /** + * Creates an I18n message using the {@link graphql.i18n.I18nMsg} + * + * @param validationErrorType the type of validation failure + * @param i18nMsg the i18n message object + * + * @return the formatted I18n message + */ + public String i18n(ValidationErrorType validationErrorType, I18nMsg i18nMsg) { + return i18n(validationErrorType, i18nMsg.getMsgKey(), i18nMsg.getMsgArguments()); + } + + /** + * Creates an I18N message using the key and arguments + * + * @param validationErrorType the type of validation failure + * @param msgKey the key in the underlying message bundle + * @param msgArgs the message arguments + * + * @return the formatted I18N message + */ + public String i18n(ValidationErrorType validationErrorType, String msgKey, Object... msgArgs) { + Object[] params = new Object[msgArgs.length + 1]; + params[0] = mkTypeAndPath(validationErrorType); + arraycopy(msgArgs, 0, params, 1, msgArgs.length); + + return validationContext.i18n(msgKey, params); + } + + private String mkTypeAndPath(ValidationErrorType validationErrorType) { + List queryPath = getQueryPath(); + StringBuilder sb = new StringBuilder(); + sb.append(validationErrorType); + if (queryPath != null) { + sb.append("@[").append(String.join("/", queryPath)).append("]"); + } + return sb.toString(); + } + public void checkDocument(Document document) { } @@ -150,6 +200,10 @@ public void documentFinished(Document document) { } + public void checkObjectValue(ObjectValue objectValue) { + + } + @Override public String toString() { return "Rule{" + validationContext + "}"; diff --git a/src/main/java/graphql/validation/ArgumentValidationUtil.java b/src/main/java/graphql/validation/ArgumentValidationUtil.java index 367dd38999..a378f40b63 100644 --- a/src/main/java/graphql/validation/ArgumentValidationUtil.java +++ b/src/main/java/graphql/validation/ArgumentValidationUtil.java @@ -1,6 +1,8 @@ package graphql.validation; import graphql.GraphQLError; +import graphql.Internal; +import graphql.i18n.I18nMsg; import graphql.language.Argument; import graphql.language.ObjectField; import graphql.language.Value; @@ -14,11 +16,12 @@ import java.util.Map; import java.util.Set; +@Internal public class ArgumentValidationUtil extends ValidationUtil { private final List argumentNames = new ArrayList<>(); private Value argumentValue; - private String errorMessage; + private String errMsgKey; private final List arguments = new ArrayList<>(); private Map errorExtensions; @@ -31,13 +34,17 @@ public ArgumentValidationUtil(Argument argument) { @Override protected void handleNullError(Value value, GraphQLType type) { - errorMessage = "must not be null"; + errMsgKey = "ArgumentValidationUtil.handleNullError"; argumentValue = value; } @Override protected void handleScalarError(Value value, GraphQLScalarType type, GraphQLError invalid) { - errorMessage = "is not a valid '%s' - %s"; + if (invalid.getMessage() == null) { + errMsgKey = "ArgumentValidationUtil.handleScalarError"; + } else { + errMsgKey = "ArgumentValidationUtil.handleScalarErrorCustomMessage"; + } arguments.add(type.getName()); arguments.add(invalid.getMessage()); argumentValue = value; @@ -46,7 +53,11 @@ protected void handleScalarError(Value value, GraphQLScalarType type, GraphQL @Override protected void handleEnumError(Value value, GraphQLEnumType type, GraphQLError invalid) { - errorMessage = "is not a valid '%s' - %s"; + if (invalid.getMessage() == null) { + errMsgKey = "ArgumentValidationUtil.handleEnumError"; + } else { + errMsgKey = "ArgumentValidationUtil.handleEnumErrorCustomMessage"; + } arguments.add(type.getName()); arguments.add(invalid.getMessage()); argumentValue = value; @@ -54,18 +65,18 @@ protected void handleEnumError(Value value, GraphQLEnumType type, GraphQLErro @Override protected void handleNotObjectError(Value value, GraphQLInputObjectType type) { - errorMessage = "must be an object type"; + errMsgKey = "ArgumentValidationUtil.handleNotObjectError"; } @Override protected void handleMissingFieldsError(Value value, GraphQLInputObjectType type, Set missingFields) { - errorMessage = "is missing required fields '%s'"; + errMsgKey = "ArgumentValidationUtil.handleMissingFieldsError"; arguments.add(missingFields); } @Override protected void handleExtraFieldError(Value value, GraphQLInputObjectType type, ObjectField objectField) { - errorMessage = "contains a field not in '%s': '%s'"; + errMsgKey = "ArgumentValidationUtil.handleExtraFieldError"; arguments.add(type.getName()); arguments.add(objectField.getName()); } @@ -80,7 +91,13 @@ protected void handleFieldNotValidError(Value value, GraphQLType type, int in argumentNames.add(0, String.format("[%s]", index)); } - public String getMessage() { + @Override + protected void handleExtraOneOfFieldsError(GraphQLInputObjectType type, Value value) { + errMsgKey = "ArgumentValidationUtil.extraOneOfFieldsError"; + arguments.add(type.getName()); + } + + public I18nMsg getMsgAndArgs() { StringBuilder argument = new StringBuilder(argumentName); for (String name : argumentNames) { if (name.startsWith("[")) { @@ -92,9 +109,7 @@ public String getMessage() { arguments.add(0, argument.toString()); arguments.add(1, argumentValue); - String message = "argument '%s' with value '%s'" + " " + errorMessage; - - return String.format(message, arguments.toArray()); + return new I18nMsg(errMsgKey, arguments); } public Map getErrorExtensions() { diff --git a/src/main/java/graphql/validation/RulesVisitor.java b/src/main/java/graphql/validation/RulesVisitor.java index 0e9cdf0bac..df3131ce7c 100644 --- a/src/main/java/graphql/validation/RulesVisitor.java +++ b/src/main/java/graphql/validation/RulesVisitor.java @@ -1,13 +1,11 @@ package graphql.validation; - -import java.util.ArrayList; -import java.util.IdentityHashMap; -import java.util.LinkedHashSet; +import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; +import com.google.common.collect.ImmutableList; + import graphql.Internal; import graphql.language.Argument; import graphql.language.Directive; @@ -17,6 +15,7 @@ import graphql.language.FragmentSpread; import graphql.language.InlineFragment; import graphql.language.Node; +import graphql.language.ObjectValue; import graphql.language.OperationDefinition; import graphql.language.SelectionSet; import graphql.language.TypeName; @@ -24,166 +23,141 @@ import graphql.language.VariableReference; @Internal +@SuppressWarnings("rawtypes") public class RulesVisitor implements DocumentVisitor { - - private final List rules = new ArrayList<>(); private final ValidationContext validationContext; - private boolean subVisitor; - private final List rulesVisitingFragmentSpreads = new ArrayList<>(); - private final Map> rulesToSkipByUntilNode = new IdentityHashMap<>(); - private final Set rulesToSkip = new LinkedHashSet<>(); + private final List allRules; + private List currentRules; + private final Set visitedFragmentSpreads = new HashSet<>(); + private final List fragmentSpreadVisitRules; + private final List nonFragmentSpreadRules; + private boolean operationScope = false; + private int fragmentSpreadVisitDepth = 0; public RulesVisitor(ValidationContext validationContext, List rules) { - this(validationContext, rules, false); - } - - public RulesVisitor(ValidationContext validationContext, List rules, boolean subVisitor) { this.validationContext = validationContext; - this.subVisitor = subVisitor; - this.rules.addAll(rules); - this.subVisitor = subVisitor; - findRulesVisitingFragmentSpreads(); + this.allRules = rules; + this.currentRules = allRules; + this.nonFragmentSpreadRules = filterRulesVisitingFragmentSpreads(allRules, false); + this.fragmentSpreadVisitRules = filterRulesVisitingFragmentSpreads(allRules, true); } - private void findRulesVisitingFragmentSpreads() { + private List filterRulesVisitingFragmentSpreads(List rules, boolean isVisitFragmentSpreads) { + ImmutableList.Builder builder = ImmutableList.builder(); for (AbstractRule rule : rules) { - if (rule.isVisitFragmentSpreads()) { - rulesVisitingFragmentSpreads.add(rule); + if (rule.isVisitFragmentSpreads() == isVisitFragmentSpreads) { + builder.add(rule); } } + return builder.build(); } @Override public void enter(Node node, List ancestors) { validationContext.getTraversalContext().enter(node, ancestors); - Set tmpRulesSet = new LinkedHashSet<>(this.rules); - tmpRulesSet.removeAll(rulesToSkip); - List rulesToConsider = new ArrayList<>(tmpRulesSet); + if (node instanceof Document){ - checkDocument((Document) node, rulesToConsider); + checkDocument((Document) node); } else if (node instanceof Argument) { - checkArgument((Argument) node, rulesToConsider); + checkArgument((Argument) node); } else if (node instanceof TypeName) { - checkTypeName((TypeName) node, rulesToConsider); + checkTypeName((TypeName) node); } else if (node instanceof VariableDefinition) { - checkVariableDefinition((VariableDefinition) node, rulesToConsider); + checkVariableDefinition((VariableDefinition) node); } else if (node instanceof Field) { - checkField((Field) node, rulesToConsider); + checkField((Field) node); } else if (node instanceof InlineFragment) { - checkInlineFragment((InlineFragment) node, rulesToConsider); + checkInlineFragment((InlineFragment) node); } else if (node instanceof Directive) { - checkDirective((Directive) node, ancestors, rulesToConsider); + checkDirective((Directive) node, ancestors); } else if (node instanceof FragmentSpread) { - checkFragmentSpread((FragmentSpread) node, rulesToConsider, ancestors); + checkFragmentSpread((FragmentSpread) node, ancestors); } else if (node instanceof FragmentDefinition) { - checkFragmentDefinition((FragmentDefinition) node, rulesToConsider); + checkFragmentDefinition((FragmentDefinition) node); } else if (node instanceof OperationDefinition) { - checkOperationDefinition((OperationDefinition) node, rulesToConsider); + checkOperationDefinition((OperationDefinition) node); } else if (node instanceof VariableReference) { - checkVariable((VariableReference) node, rulesToConsider); + checkVariable((VariableReference) node); } else if (node instanceof SelectionSet) { - checkSelectionSet((SelectionSet) node, rulesToConsider); + checkSelectionSet((SelectionSet) node); + } else if (node instanceof ObjectValue) { + checkObjectValue((ObjectValue) node); } } - private void checkDocument(Document node, List rules) { - for (AbstractRule rule : rules) { - rule.checkDocument(node); - } + private void checkDocument(Document node) { + currentRules.forEach(r -> r.checkDocument(node)); } - - private void checkArgument(Argument node, List rules) { - for (AbstractRule rule : rules) { - rule.checkArgument(node); - } + private void checkArgument(Argument node) { + currentRules.forEach(r -> r.checkArgument(node)); } - private void checkTypeName(TypeName node, List rules) { - for (AbstractRule rule : rules) { - rule.checkTypeName(node); - } + private void checkTypeName(TypeName node) { + currentRules.forEach(r -> r.checkTypeName(node)); } - - private void checkVariableDefinition(VariableDefinition variableDefinition, List rules) { - for (AbstractRule rule : rules) { - rule.checkVariableDefinition(variableDefinition); - } + private void checkVariableDefinition(VariableDefinition node) { + currentRules.forEach(r -> r.checkVariableDefinition(node)); } - private void checkField(Field field, List rules) { - for (AbstractRule rule : rules) { - rule.checkField(field); - } + private void checkField(Field node) { + currentRules.forEach(r -> r.checkField(node)); } - private void checkInlineFragment(InlineFragment inlineFragment, List rules) { - for (AbstractRule rule : rules) { - rule.checkInlineFragment(inlineFragment); - } + private void checkInlineFragment(InlineFragment node) { + currentRules.forEach(r -> r.checkInlineFragment(node)); } - private void checkDirective(Directive directive, List ancestors, List rules) { - for (AbstractRule rule : rules) { - rule.checkDirective(directive, ancestors); - } + private void checkDirective(Directive node, List ancestors) { + currentRules.forEach(r -> r.checkDirective(node, ancestors)); } - private void checkFragmentSpread(FragmentSpread fragmentSpread, List rules, List ancestors) { - for (AbstractRule rule : rules) { - rule.checkFragmentSpread(fragmentSpread); - } - List rulesVisitingFragmentSpreads = getRulesVisitingFragmentSpreads(rules); - if (rulesVisitingFragmentSpreads.size() > 0) { - FragmentDefinition fragment = validationContext.getFragment(fragmentSpread.getName()); - if (fragment != null && !ancestors.contains(fragment)) { - new LanguageTraversal(ancestors).traverse(fragment, new RulesVisitor(validationContext, rulesVisitingFragmentSpreads, true)); - } - } - } + private void checkFragmentSpread(FragmentSpread node, List ancestors) { + currentRules.forEach(r -> r.checkFragmentSpread(node)); - private List getRulesVisitingFragmentSpreads(List rules) { - List result = new ArrayList<>(); - for (AbstractRule rule : rules) { - if (rule.isVisitFragmentSpreads()) result.add(rule); + if (operationScope) { + FragmentDefinition fragment = validationContext.getFragment(node.getName()); + if (fragment != null && !visitedFragmentSpreads.contains(node.getName())) { + // Manually traverse into the FragmentDefinition + visitedFragmentSpreads.add(node.getName()); + List prevRules = currentRules; + currentRules = fragmentSpreadVisitRules; + fragmentSpreadVisitDepth++; + new LanguageTraversal(ancestors).traverse(fragment, this); + fragmentSpreadVisitDepth--; + currentRules = prevRules; + } } - return result; } - - private void checkFragmentDefinition(FragmentDefinition fragmentDefinition, List rules) { - if (!subVisitor) { - rulesToSkipByUntilNode.put(fragmentDefinition, new ArrayList<>(rulesVisitingFragmentSpreads)); - rulesToSkip.addAll(rulesVisitingFragmentSpreads); - } - - - for (AbstractRule rule : rules) { - if (!subVisitor && (rule.isVisitFragmentSpreads())) continue; - rule.checkFragmentDefinition(fragmentDefinition); + private void checkFragmentDefinition(FragmentDefinition node) { + // If we've encountered a FragmentDefinition and we got here without coming through + // an OperationDefinition, then suspend all isVisitFragmentSpread rules for this subtree. + // Expect these rules to be checked when the FragmentSpread is traversed + if (fragmentSpreadVisitDepth == 0) { + currentRules = nonFragmentSpreadRules; } + currentRules.forEach(r -> r.checkFragmentDefinition(node)); } - private void checkOperationDefinition(OperationDefinition operationDefinition, List rules) { - for (AbstractRule rule : rules) { - rule.checkOperationDefinition(operationDefinition); - } + private void checkOperationDefinition(OperationDefinition node) { + operationScope = true; + currentRules.forEach(r -> r.checkOperationDefinition(node)); } - private void checkSelectionSet(SelectionSet selectionSet, List rules) { - for (AbstractRule rule : rules) { - rule.checkSelectionSet(selectionSet); - } + private void checkSelectionSet(SelectionSet node) { + currentRules.forEach(r -> r.checkSelectionSet(node)); } - private void checkVariable(VariableReference variableReference, List rules) { - for (AbstractRule rule : rules) { - rule.checkVariable(variableReference); - } + private void checkVariable(VariableReference node) { + currentRules.forEach(r -> r.checkVariable(node)); } + private void checkObjectValue(ObjectValue node) { + currentRules.forEach(r -> r.checkObjectValue(node)); + } @Override public void leave(Node node, List ancestors) { @@ -195,31 +169,29 @@ public void leave(Node node, List ancestors) { leaveOperationDefinition((OperationDefinition) node); } else if (node instanceof SelectionSet) { leaveSelectionSet((SelectionSet) node); + } else if (node instanceof FragmentDefinition) { + leaveFragmentDefinition((FragmentDefinition) node); } + } - if (rulesToSkipByUntilNode.containsKey(node)) { - rulesToSkip.removeAll(rulesToSkipByUntilNode.get(node)); - rulesToSkipByUntilNode.remove(node); - } - - + private void leaveSelectionSet(SelectionSet node) { + currentRules.forEach(r -> r.leaveSelectionSet(node)); } - private void leaveSelectionSet(SelectionSet selectionSet) { - for (AbstractRule rule : rules) { - rule.leaveSelectionSet(selectionSet); - } + private void leaveOperationDefinition(OperationDefinition node) { + // fragments should be revisited for each operation + visitedFragmentSpreads.clear(); + operationScope = false; + currentRules.forEach(r -> r.leaveOperationDefinition(node)); } - private void leaveOperationDefinition(OperationDefinition operationDefinition) { - for (AbstractRule rule : rules) { - rule.leaveOperationDefinition(operationDefinition); - } + private void documentFinished(Document node) { + currentRules.forEach(r -> r.documentFinished(node)); } - private void documentFinished(Document document) { - for (AbstractRule rule : rules) { - rule.documentFinished(document); + private void leaveFragmentDefinition(FragmentDefinition node) { + if (fragmentSpreadVisitDepth == 0) { + currentRules = allRules; } } } diff --git a/src/main/java/graphql/validation/TraversalContext.java b/src/main/java/graphql/validation/TraversalContext.java index 4a680c0e5b..d9d93af7f1 100644 --- a/src/main/java/graphql/validation/TraversalContext.java +++ b/src/main/java/graphql/validation/TraversalContext.java @@ -32,14 +32,11 @@ import graphql.schema.GraphQLType; import graphql.schema.GraphQLUnionType; import graphql.schema.GraphQLUnmodifiedType; -import graphql.schema.SchemaUtil; +import graphql.schema.InputValueWithState; import java.util.ArrayList; import java.util.List; -import static graphql.introspection.Introspection.SchemaMetaFieldDef; -import static graphql.introspection.Introspection.TypeMetaFieldDef; -import static graphql.introspection.Introspection.TypeNameMetaFieldDef; import static graphql.schema.GraphQLTypeUtil.isList; import static graphql.schema.GraphQLTypeUtil.isNonNull; import static graphql.schema.GraphQLTypeUtil.unwrapAll; @@ -47,14 +44,15 @@ @Internal public class TraversalContext implements DocumentVisitor { - final GraphQLSchema schema; - final List outputTypeStack = new ArrayList<>(); - final List parentTypeStack = new ArrayList<>(); - final List inputTypeStack = new ArrayList<>(); - final List fieldDefStack = new ArrayList<>(); - final List nameStack = new ArrayList<>(); - GraphQLDirective directive; - GraphQLArgument argument; + private final GraphQLSchema schema; + private final List outputTypeStack = new ArrayList<>(); + private final List parentTypeStack = new ArrayList<>(); + private final List inputTypeStack = new ArrayList<>(); + private final List defaultValueStack = new ArrayList<>(); + private final List fieldDefStack = new ArrayList<>(); + private final List nameStack = new ArrayList<>(); + private GraphQLDirective directive; + private GraphQLArgument argument; public TraversalContext(GraphQLSchema graphQLSchema) { @@ -159,6 +157,7 @@ private void enterImpl(Argument argument) { } addInputType(argumentType != null ? argumentType.getType() : null); + addDefaultValue(argumentType != null ? argumentType.getArgumentDefaultValue() : null); this.argument = argumentType; } @@ -169,23 +168,30 @@ private void enterImpl(ArrayValue arrayValue) { inputType = (GraphQLInputType) unwrapOne(nullableType); } addInputType(inputType); + // List positions never have a default value. See graphql-js impl for inspiration + addDefaultValue(null); } private void enterImpl(ObjectField objectField) { GraphQLUnmodifiedType objectType = unwrapAll(getInputType()); GraphQLInputType inputType = null; + GraphQLInputObjectField inputField = null; if (objectType instanceof GraphQLInputObjectType) { GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) objectType; - GraphQLInputObjectField inputField = schema.getFieldVisibility().getFieldDefinition(inputObjectType, objectField.getName()); - if (inputField != null) + inputField = schema.getCodeRegistry().getFieldVisibility().getFieldDefinition(inputObjectType, objectField.getName()); + if (inputField != null) { inputType = inputField.getType(); + } } addInputType(inputType); + addDefaultValue(inputField != null ? inputField.getInputFieldDefaultValue() : null); } private GraphQLArgument find(List arguments, String name) { for (GraphQLArgument argument : arguments) { - if (argument.getName().equals(name)) return argument; + if (argument.getName().equals(name)) { + return argument; + } } return null; } @@ -194,29 +200,32 @@ private GraphQLArgument find(List arguments, String name) { @Override public void leave(Node node, List ancestors) { if (node instanceof OperationDefinition) { - outputTypeStack.remove(outputTypeStack.size() - 1); + pop(outputTypeStack); } else if (node instanceof SelectionSet) { - parentTypeStack.remove(parentTypeStack.size() - 1); + pop(parentTypeStack); } else if (node instanceof Field) { leaveName(((Field) node).getName()); - fieldDefStack.remove(fieldDefStack.size() - 1); - outputTypeStack.remove(outputTypeStack.size() - 1); + pop(fieldDefStack); + pop(outputTypeStack); } else if (node instanceof Directive) { directive = null; } else if (node instanceof InlineFragment) { - outputTypeStack.remove(outputTypeStack.size() - 1); + pop(outputTypeStack); } else if (node instanceof FragmentDefinition) { leaveName(((FragmentDefinition) node).getName()); - outputTypeStack.remove(outputTypeStack.size() - 1); + pop(outputTypeStack); } else if (node instanceof VariableDefinition) { inputTypeStack.remove(inputTypeStack.size() - 1); } else if (node instanceof Argument) { argument = null; - inputTypeStack.remove(inputTypeStack.size() - 1); + pop(inputTypeStack); + pop(defaultValueStack); } else if (node instanceof ArrayValue) { - inputTypeStack.remove(inputTypeStack.size() - 1); + pop(inputTypeStack); + pop(defaultValueStack); } else if (node instanceof ObjectField) { - inputTypeStack.remove(inputTypeStack.size() - 1); + pop(inputTypeStack); + pop(defaultValueStack); } } @@ -252,12 +261,17 @@ private void addOutputType(GraphQLOutputType type) { outputTypeStack.add(type); } - private T lastElement(List list) { - if (list.size() == 0) return null; + if (list.isEmpty()) { + return null; + } return list.get(list.size() - 1); } + private T pop(List list) { + return list.remove(list.size() - 1); + } + /** * @return can be null if the parent is not a CompositeType */ @@ -272,11 +286,18 @@ private void addParentType(GraphQLCompositeType compositeType) { public GraphQLInputType getInputType() { return lastElement(inputTypeStack); } + public InputValueWithState getDefaultValue() { + return lastElement(defaultValueStack); + } private void addInputType(GraphQLInputType graphQLInputType) { inputTypeStack.add(graphQLInputType); } + private void addDefaultValue(InputValueWithState defaultValue) { + defaultValueStack.add(defaultValue); + } + public GraphQLFieldDefinition getFieldDef() { return lastElement(fieldDefStack); } @@ -300,24 +321,23 @@ public GraphQLArgument getArgument() { return argument; } - private GraphQLFieldDefinition getFieldDef(GraphQLSchema schema, GraphQLType parentType, Field field) { if (schema.getQueryType().equals(parentType)) { - if (field.getName().equals(SchemaMetaFieldDef.getName())) { - return SchemaMetaFieldDef; + if (field.getName().equals(schema.getIntrospectionSchemaFieldDefinition().getName())) { + return schema.getIntrospectionSchemaFieldDefinition(); } - if (field.getName().equals(TypeMetaFieldDef.getName())) { - return TypeMetaFieldDef; + if (field.getName().equals(schema.getIntrospectionTypeFieldDefinition().getName())) { + return schema.getIntrospectionTypeFieldDefinition(); } } - if (field.getName().equals(TypeNameMetaFieldDef.getName()) + if (field.getName().equals(schema.getIntrospectionTypenameFieldDefinition().getName()) && (parentType instanceof GraphQLObjectType || parentType instanceof GraphQLInterfaceType || parentType instanceof GraphQLUnionType)) { - return TypeNameMetaFieldDef; + return schema.getIntrospectionTypenameFieldDefinition(); } if (parentType instanceof GraphQLFieldsContainer) { - return schema.getFieldVisibility().getFieldDefinition((GraphQLFieldsContainer) parentType, field.getName()); + return schema.getCodeRegistry().getFieldVisibility().getFieldDefinition((GraphQLFieldsContainer) parentType, field.getName()); } return null; } diff --git a/src/main/java/graphql/validation/ValidationContext.java b/src/main/java/graphql/validation/ValidationContext.java index 6347f0a99b..18fe678177 100644 --- a/src/main/java/graphql/validation/ValidationContext.java +++ b/src/main/java/graphql/validation/ValidationContext.java @@ -1,7 +1,9 @@ package graphql.validation; +import graphql.GraphQLContext; import graphql.Internal; +import graphql.i18n.I18n; import graphql.language.Definition; import graphql.language.Document; import graphql.language.FragmentDefinition; @@ -12,9 +14,11 @@ import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLSchema; +import graphql.schema.InputValueWithState; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; @Internal @@ -25,18 +29,23 @@ public class ValidationContext { private final TraversalContext traversalContext; private final Map fragmentDefinitionMap = new LinkedHashMap<>(); + private final I18n i18n; + private final GraphQLContext graphQLContext; - - public ValidationContext(GraphQLSchema schema, Document document) { + public ValidationContext(GraphQLSchema schema, Document document, I18n i18n) { this.schema = schema; this.document = document; this.traversalContext = new TraversalContext(schema); + this.i18n = i18n; + this.graphQLContext = GraphQLContext.newContext().of(Locale.class, i18n.getLocale()).build(); buildFragmentMap(); } private void buildFragmentMap() { - for (Definition definition : document.getDefinitions()) { - if (!(definition instanceof FragmentDefinition)) continue; + for (Definition definition : document.getDefinitions()) { + if (!(definition instanceof FragmentDefinition)) { + continue; + } FragmentDefinition fragmentDefinition = (FragmentDefinition) definition; fragmentDefinitionMap.put(fragmentDefinition.getName(), fragmentDefinition); } @@ -66,6 +75,10 @@ public GraphQLInputType getInputType() { return traversalContext.getInputType(); } + public InputValueWithState getDefaultValue() { + return traversalContext.getDefaultValue(); + } + public GraphQLFieldDefinition getFieldDef() { return traversalContext.getFieldDef(); } @@ -82,11 +95,30 @@ public GraphQLOutputType getOutputType() { return traversalContext.getOutputType(); } - public List getQueryPath() { return traversalContext.getQueryPath(); } + public I18n getI18n() { + return i18n; + } + + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * Creates an I18N message using the key and arguments + * + * @param msgKey the key in the underlying message bundle + * @param msgArgs the message arguments + * + * @return the formatted I18N message + */ + public String i18n(String msgKey, Object... msgArgs) { + return i18n.msg(msgKey, msgArgs); + } + @Override public String toString() { return "ValidationContext{" + getQueryPath() + "}"; diff --git a/src/main/java/graphql/validation/ValidationError.java b/src/main/java/graphql/validation/ValidationError.java index 743624269d..04c1f88936 100644 --- a/src/main/java/graphql/validation/ValidationError.java +++ b/src/main/java/graphql/validation/ValidationError.java @@ -1,89 +1,49 @@ package graphql.validation; +import com.google.common.collect.ImmutableMap; import graphql.ErrorType; import graphql.GraphQLError; import graphql.GraphqlErrorHelper; +import graphql.PublicApi; import graphql.language.SourceLocation; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +@PublicApi public class ValidationError implements GraphQLError { - private final String message; private final List locations = new ArrayList<>(); private final String description; - private final ValidationErrorType validationErrorType; - private final List queryPath; - private final Map extensions; - - public ValidationError(ValidationErrorType validationErrorType) { - this(newValidationError() - .validationErrorType(validationErrorType)); - } - - public ValidationError(ValidationErrorType validationErrorType, SourceLocation sourceLocation, String description) { - this(newValidationError() - .validationErrorType(validationErrorType) - .sourceLocation(sourceLocation) - .description(description)); - } - - public ValidationError(ValidationErrorType validationErrorType, SourceLocation sourceLocation, String description, List queryPath) { - this(newValidationError() - .validationErrorType(validationErrorType) - .sourceLocation(sourceLocation) - .description(description) - .queryPath(queryPath)); - } - - public ValidationError(ValidationErrorType validationErrorType, List sourceLocations, String description) { - this(newValidationError() - .validationErrorType(validationErrorType) - .sourceLocations(sourceLocations) - .description(description)); - } - - public ValidationError(ValidationErrorType validationErrorType, List sourceLocations, String description, List queryPath) { - this(newValidationError() - .validationErrorType(validationErrorType) - .sourceLocations(sourceLocations) - .description(description) - .queryPath(queryPath)); - } + private final ValidationErrorClassification validationErrorType; + private final List queryPath = new ArrayList<>(); + private final ImmutableMap extensions; private ValidationError(Builder builder) { this.validationErrorType = builder.validationErrorType; + this.description = builder.description; if (builder.sourceLocations != null) { this.locations.addAll(builder.sourceLocations); } - this.description = builder.description; - this.message = mkMessage(builder.validationErrorType, builder.description, builder.queryPath); - this.queryPath = builder.queryPath; - this.extensions = builder.extensions; - } - - private String mkMessage(ValidationErrorType validationErrorType, String description, List queryPath) { - return String.format("Validation error of type %s: %s%s", validationErrorType, description, toPath(queryPath)); - } - private String toPath(List queryPath) { - if (queryPath == null) { - return ""; + if (builder.queryPath != null) { + this.queryPath.addAll(builder.queryPath); } - return String.format(" @ '%s'", String.join("/", queryPath)); + + this.extensions = (builder.extensions != null) ? ImmutableMap.copyOf(builder.extensions) : ImmutableMap.of(); } - public ValidationErrorType getValidationErrorType() { + public ValidationErrorClassification getValidationErrorType() { return validationErrorType; } @Override public String getMessage() { - return message; + return description; } public String getDescription() { @@ -111,12 +71,23 @@ public Map getExtensions() { @Override public String toString() { + String extensionsString = ""; + + if (extensions.size() > 0) { + extensionsString = extensions + .keySet() + .stream() + .map(key -> key + "=" + extensions.get(key)) + .collect(Collectors.joining(", ")); + } + return "ValidationError{" + "validationErrorType=" + validationErrorType + ", queryPath=" + queryPath + - ", message=" + message + + ", message=" + description + ", locations=" + locations + ", description='" + description + '\'' + + ", extensions=[" + extensionsString + ']' + '}'; } @@ -140,11 +111,11 @@ public static class Builder { private List sourceLocations; private Map extensions; private String description; - private ValidationErrorType validationErrorType; + private ValidationErrorClassification validationErrorType; private List queryPath; - public Builder validationErrorType(ValidationErrorType validationErrorType) { + public Builder validationErrorType(ValidationErrorClassification validationErrorType) { this.validationErrorType = validationErrorType; return this; } diff --git a/src/main/java/graphql/validation/ValidationErrorClassification.java b/src/main/java/graphql/validation/ValidationErrorClassification.java new file mode 100644 index 0000000000..2a9ad78722 --- /dev/null +++ b/src/main/java/graphql/validation/ValidationErrorClassification.java @@ -0,0 +1,8 @@ +package graphql.validation; + + +import graphql.PublicApi; + +@PublicApi +public interface ValidationErrorClassification { +} diff --git a/src/main/java/graphql/validation/ValidationErrorCollector.java b/src/main/java/graphql/validation/ValidationErrorCollector.java index 02b91453c5..cdb21aca05 100644 --- a/src/main/java/graphql/validation/ValidationErrorCollector.java +++ b/src/main/java/graphql/validation/ValidationErrorCollector.java @@ -6,13 +6,46 @@ import java.util.ArrayList; import java.util.List; +import static graphql.validation.ValidationErrorType.MaxValidationErrorsReached; + @Internal public class ValidationErrorCollector { private final List errors = new ArrayList<>(); + private final int maxErrors; + + public ValidationErrorCollector() { + this(Validator.MAX_VALIDATION_ERRORS); + } + + public ValidationErrorCollector(int maxErrors) { + this.maxErrors = maxErrors; + } + + private boolean atMaxErrors() { + return errors.size() >= maxErrors - 1; + } - public void addError(ValidationError validationError) { - this.errors.add(validationError); + /** + * This will throw {@link MaxValidationErrorsReached} if too many validation errors are added + * + * @param validationError the error to add + * + * @throws MaxValidationErrorsReached if too many errors have been generated + */ + public void addError(ValidationError validationError) throws MaxValidationErrorsReached { + if (!atMaxErrors()) { + this.errors.add(validationError); + } else { + this.errors.add(ValidationError.newValidationError() + .validationErrorType(MaxValidationErrorsReached) + .description( + String.format("The maximum number of validation errors has been reached. (%d)", maxErrors) + ) + .build()); + + throw new MaxValidationErrorsReached(); + } } public List getErrors() { @@ -26,7 +59,7 @@ public boolean containsValidationError(ValidationErrorType validationErrorType) public boolean containsValidationError(ValidationErrorType validationErrorType, String description) { for (ValidationError validationError : errors) { if (validationError.getValidationErrorType() == validationErrorType) { - return description == null || validationError.getDescription().equals(description); + return description == null || validationError.getDescription().contains(description); } } return false; @@ -38,4 +71,17 @@ public String toString() { "errors=" + errors + '}'; } + + /** + * Indicates that that maximum number of validation errors has been reached + */ + @Internal + static class MaxValidationErrorsReached extends RuntimeException { + + @Override + public synchronized Throwable fillInStackTrace() { + return this; + } + } + } diff --git a/src/main/java/graphql/validation/ValidationErrorType.java b/src/main/java/graphql/validation/ValidationErrorType.java index 6425a0a46d..e701a5d778 100644 --- a/src/main/java/graphql/validation/ValidationErrorType.java +++ b/src/main/java/graphql/validation/ValidationErrorType.java @@ -1,13 +1,17 @@ package graphql.validation; -public enum ValidationErrorType { +import graphql.PublicApi; +@PublicApi +public enum ValidationErrorType implements ValidationErrorClassification { + + MaxValidationErrorsReached, DefaultForNonNullArgument, WrongType, UnknownType, - SubSelectionRequired, - SubSelectionNotAllowed, + SubselectionRequired, + SubselectionNotAllowed, InvalidSyntax, BadValueForDefaultArg, FieldUndefined, @@ -23,6 +27,7 @@ public enum ValidationErrorType { UnknownDirective, MisplacedDirective, UndefinedVariable, + VariableNotAllowed, UnusedVariable, FragmentCycle, FieldsConflict, @@ -32,7 +37,12 @@ public enum ValidationErrorType { DuplicateOperationName, DuplicateFragmentName, DuplicateDirectiveName, - DeferDirectiveOnNonNullField, - DeferDirectiveNotOnQueryOperation, - DeferMustBeOnAllFields + DuplicateArgumentNames, + DuplicateIncrementalLabel, + DuplicateVariableName, + NullValueForNonNullArgument, + SubscriptionMultipleRootFields, + SubscriptionIntrospectionRootField, + UniqueObjectFieldName, + UnknownOperation } diff --git a/src/main/java/graphql/validation/ValidationUtil.java b/src/main/java/graphql/validation/ValidationUtil.java index 60bdbfb0de..1bff274d92 100644 --- a/src/main/java/graphql/validation/ValidationUtil.java +++ b/src/main/java/graphql/validation/ValidationUtil.java @@ -1,8 +1,13 @@ package graphql.validation; +import com.google.common.collect.ImmutableSet; import graphql.Assert; +import graphql.Directives; +import graphql.GraphQLContext; import graphql.GraphQLError; +import graphql.Internal; +import graphql.execution.CoercedVariables; import graphql.language.ArrayValue; import graphql.language.ListType; import graphql.language.NonNullType; @@ -26,15 +31,16 @@ import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; import static graphql.schema.GraphQLTypeUtil.isList; import static graphql.schema.GraphQLTypeUtil.isNonNull; import static graphql.schema.GraphQLTypeUtil.unwrapOne; +@Internal public class ValidationUtil { public TypeName getUnmodifiedType(Type type) { @@ -72,7 +78,10 @@ protected void handleFieldNotValidError(ObjectField objectField, GraphQLInputObj protected void handleFieldNotValidError(Value value, GraphQLType type, int index) { } - public boolean isValidLiteralValue(Value value, GraphQLType type, GraphQLSchema schema) { + protected void handleExtraOneOfFieldsError(GraphQLInputObjectType type, Value value) { + } + + public boolean isValidLiteralValue(Value value, GraphQLType type, GraphQLSchema schema, GraphQLContext graphQLContext, Locale locale) { if (value == null || value instanceof NullValue) { boolean valid = !(isNonNull(type)); if (!valid) { @@ -84,45 +93,46 @@ public boolean isValidLiteralValue(Value value, GraphQLType type, GraphQLSche return true; } if (isNonNull(type)) { - return isValidLiteralValue(value, unwrapOne(type), schema); + return isValidLiteralValue(value, unwrapOne(type), schema, graphQLContext, locale); } if (type instanceof GraphQLScalarType) { - Optional invalid = parseLiteral(value, ((GraphQLScalarType) type).getCoercing()); + Optional invalid = parseLiteral(value, ((GraphQLScalarType) type).getCoercing(), graphQLContext, locale); invalid.ifPresent(graphQLError -> handleScalarError(value, (GraphQLScalarType) type, graphQLError)); - return !invalid.isPresent(); + return invalid.isEmpty(); } if (type instanceof GraphQLEnumType) { - Optional invalid = parseLiteralEnum(value,(GraphQLEnumType) type); + Optional invalid = parseLiteralEnum(value, (GraphQLEnumType) type, graphQLContext, locale); invalid.ifPresent(graphQLError -> handleEnumError(value, (GraphQLEnumType) type, graphQLError)); - return !invalid.isPresent(); + return invalid.isEmpty(); } if (isList(type)) { - return isValidLiteralValue(value, (GraphQLList) type, schema); + return isValidLiteralValue(value, (GraphQLList) type, schema, graphQLContext, locale); } - return type instanceof GraphQLInputObjectType && isValidLiteralValue(value, (GraphQLInputObjectType) type, schema); + return type instanceof GraphQLInputObjectType && isValidLiteralValueForInputObjectType(value, (GraphQLInputObjectType) type, schema, graphQLContext, locale); } - private Optional parseLiteralEnum(Value value, GraphQLEnumType graphQLEnumType) { + + private Optional parseLiteralEnum(Value value, GraphQLEnumType graphQLEnumType, GraphQLContext graphQLContext, Locale locale) { try { - graphQLEnumType.parseLiteral(value); + graphQLEnumType.parseLiteral(value, graphQLContext, locale); return Optional.empty(); } catch (CoercingParseLiteralException e) { return Optional.of(e); } } - private Optional parseLiteral(Value value, Coercing coercing) { + private Optional parseLiteral(Value value, Coercing coercing, GraphQLContext graphQLContext, Locale locale) { try { - coercing.parseLiteral(value); + coercing.parseLiteral(value, CoercedVariables.emptyVariables(), graphQLContext, locale); return Optional.empty(); } catch (CoercingParseLiteralException e) { return Optional.of(e); } } - private boolean isValidLiteralValue(Value value, GraphQLInputObjectType type, GraphQLSchema schema) { + boolean isValidLiteralValueForInputObjectType(Value value, GraphQLInputObjectType type, GraphQLSchema schema, GraphQLContext graphQLContext, Locale locale) { if (!(value instanceof ObjectValue)) { handleNotObjectError(value, type); return false; @@ -144,21 +154,28 @@ private boolean isValidLiteralValue(Value value, GraphQLInputObjectType type, handleExtraFieldError(value, type, objectField); return false; } - if (!isValidLiteralValue(objectField.getValue(), inputObjectField.getType(), schema)) { + if (!isValidLiteralValue(objectField.getValue(), inputObjectField.getType(), schema, graphQLContext, locale)) { handleFieldNotValidError(objectField, type); return false; } } + if (type.hasAppliedDirective(Directives.OneOfDirective.getName())) { + if (objectFieldMap.keySet().size() != 1) { + handleExtraOneOfFieldsError(type,value); + return false; + } + } return true; } + private Set getMissingFields(GraphQLInputObjectType type, Map objectFieldMap, GraphqlFieldVisibility fieldVisibility) { return fieldVisibility.getFieldDefinitions(type).stream() .filter(field -> isNonNull(field.getType())) - .filter(value -> (value.getDefaultValue() == null) && !objectFieldMap.containsKey(value.getName())) + .filter(value -> (value.getInputFieldDefaultValue().isNotSet()) && !objectFieldMap.containsKey(value.getName())) .map(GraphQLInputObjectField::getName) - .collect(Collectors.toSet()); + .collect(ImmutableSet.toImmutableSet()); } private Map fieldMap(ObjectValue objectValue) { @@ -169,19 +186,19 @@ private Map fieldMap(ObjectValue objectValue) { return result; } - private boolean isValidLiteralValue(Value value, GraphQLList type, GraphQLSchema schema) { + private boolean isValidLiteralValue(Value value, GraphQLList type, GraphQLSchema schema, GraphQLContext graphQLContext, Locale locale) { GraphQLType wrappedType = type.getWrappedType(); if (value instanceof ArrayValue) { List values = ((ArrayValue) value).getValues(); for (int i = 0; i < values.size(); i++) { - if (!isValidLiteralValue(values.get(i), wrappedType, schema)) { + if (!isValidLiteralValue(values.get(i), wrappedType, schema, graphQLContext, locale)) { handleFieldNotValidError(values.get(i), wrappedType, i); return false; } } return true; } else { - return isValidLiteralValue(value, wrappedType, schema); + return isValidLiteralValue(value, wrappedType, schema, graphQLContext, locale); } } diff --git a/src/main/java/graphql/validation/Validator.java b/src/main/java/graphql/validation/Validator.java index feb9217dfa..52709109d6 100644 --- a/src/main/java/graphql/validation/Validator.java +++ b/src/main/java/graphql/validation/Validator.java @@ -2,12 +2,15 @@ import graphql.Internal; +import graphql.i18n.I18n; import graphql.language.Document; import graphql.schema.GraphQLSchema; import graphql.validation.rules.ArgumentsOfCorrectType; -import graphql.validation.rules.DeferredDirectiveOnNonNullableField; -import graphql.validation.rules.DeferredDirectiveOnQueryOperation; -import graphql.validation.rules.DeferredMustBeOnAllFields; +import graphql.validation.rules.DeferDirectiveLabel; +import graphql.validation.rules.DeferDirectiveOnRootLevel; +import graphql.validation.rules.DeferDirectiveOnValidOperation; +import graphql.validation.rules.KnownOperationTypes; +import graphql.validation.rules.UniqueObjectFieldName; import graphql.validation.rules.ExecutableDefinitions; import graphql.validation.rules.FieldsOnCorrectType; import graphql.validation.rules.FragmentsOnCompositeType; @@ -23,33 +26,68 @@ import graphql.validation.rules.OverlappingFieldsCanBeMerged; import graphql.validation.rules.PossibleFragmentSpreads; import graphql.validation.rules.ProvidedNonNullArguments; -import graphql.validation.rules.ScalarLeafs; +import graphql.validation.rules.ScalarLeaves; +import graphql.validation.rules.SubscriptionUniqueRootField; +import graphql.validation.rules.UniqueArgumentNames; import graphql.validation.rules.UniqueDirectiveNamesPerLocation; import graphql.validation.rules.UniqueFragmentNames; import graphql.validation.rules.UniqueOperationNames; +import graphql.validation.rules.UniqueVariableNames; import graphql.validation.rules.VariableDefaultValuesOfCorrectType; -import graphql.validation.rules.VariableTypesMatchRule; +import graphql.validation.rules.VariableTypesMatch; import graphql.validation.rules.VariablesAreInputTypes; import java.util.ArrayList; import java.util.List; +import java.util.Locale; +import java.util.function.Predicate; +import java.util.stream.Collectors; @Internal public class Validator { - public List validateDocument(GraphQLSchema schema, Document document) { - ValidationContext validationContext = new ValidationContext(schema, document); + static int MAX_VALIDATION_ERRORS = 100; + + /** + * `graphql-java` will stop validation after a maximum number of validation messages has been reached. Attackers + * can send pathologically invalid queries to induce a Denial of Service attack and fill memory with 10000s of errors + * and burn CPU in process. + *

      + * By default, this is set to 100 errors. You can set a new JVM wide value as the maximum allowed validation errors. + * + * @param maxValidationErrors the maximum validation errors allow JVM wide + */ + public static void setMaxValidationErrors(int maxValidationErrors) { + MAX_VALIDATION_ERRORS = maxValidationErrors; + } + + public static int getMaxValidationErrors() { + return MAX_VALIDATION_ERRORS; + } + + public List validateDocument(GraphQLSchema schema, Document document, Locale locale) { + return validateDocument(schema, document, ruleClass -> true, locale); + } + public List validateDocument(GraphQLSchema schema, Document document, Predicate> applyRule, Locale locale) { + I18n i18n = I18n.i18n(I18n.BundleType.Validation, locale); + ValidationContext validationContext = new ValidationContext(schema, document, i18n); - ValidationErrorCollector validationErrorCollector = new ValidationErrorCollector(); + ValidationErrorCollector validationErrorCollector = new ValidationErrorCollector(MAX_VALIDATION_ERRORS); List rules = createRules(validationContext, validationErrorCollector); + // filter out any rules they don't want applied + rules = rules.stream().filter(r -> applyRule.test(r.getClass())).collect(Collectors.toList()); LanguageTraversal languageTraversal = new LanguageTraversal(); - languageTraversal.traverse(document, new RulesVisitor(validationContext, rules)); + try { + languageTraversal.traverse(document, new RulesVisitor(validationContext, rules)); + } catch (ValidationErrorCollector.MaxValidationErrorsReached ignored) { + // if we have generated enough errors, then we can shortcut out + } return validationErrorCollector.getErrors(); } - private List createRules(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + public List createRules(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { List rules = new ArrayList<>(); ExecutableDefinitions executableDefinitions = new ExecutableDefinitions(validationContext, validationErrorCollector); @@ -89,15 +127,15 @@ private List createRules(ValidationContext validationContext, Vali ProvidedNonNullArguments providedNonNullArguments = new ProvidedNonNullArguments(validationContext, validationErrorCollector); rules.add(providedNonNullArguments); - ScalarLeafs scalarLeafs = new ScalarLeafs(validationContext, validationErrorCollector); - rules.add(scalarLeafs); + ScalarLeaves scalarLeaves = new ScalarLeaves(validationContext, validationErrorCollector); + rules.add(scalarLeaves); VariableDefaultValuesOfCorrectType variableDefaultValuesOfCorrectType = new VariableDefaultValuesOfCorrectType(validationContext, validationErrorCollector); rules.add(variableDefaultValuesOfCorrectType); VariablesAreInputTypes variablesAreInputTypes = new VariablesAreInputTypes(validationContext, validationErrorCollector); rules.add(variablesAreInputTypes); - VariableTypesMatchRule variableTypesMatchRule = new VariableTypesMatchRule(validationContext, validationErrorCollector); - rules.add(variableTypesMatchRule); + VariableTypesMatch variableTypesMatch = new VariableTypesMatch(validationContext, validationErrorCollector); + rules.add(variableTypesMatch); LoneAnonymousOperation loneAnonymousOperation = new LoneAnonymousOperation(validationContext, validationErrorCollector); rules.add(loneAnonymousOperation); @@ -111,15 +149,29 @@ private List createRules(ValidationContext validationContext, Vali UniqueDirectiveNamesPerLocation uniqueDirectiveNamesPerLocation = new UniqueDirectiveNamesPerLocation(validationContext, validationErrorCollector); rules.add(uniqueDirectiveNamesPerLocation); - // our extensions beyond spec - DeferredDirectiveOnNonNullableField deferredDirectiveOnNonNullableField = new DeferredDirectiveOnNonNullableField(validationContext, validationErrorCollector); - rules.add(deferredDirectiveOnNonNullableField); + UniqueArgumentNames uniqueArgumentNamesRule = new UniqueArgumentNames(validationContext, validationErrorCollector); + rules.add(uniqueArgumentNamesRule); + + UniqueVariableNames uniqueVariableNamesRule = new UniqueVariableNames(validationContext, validationErrorCollector); + rules.add(uniqueVariableNamesRule); + + SubscriptionUniqueRootField uniqueSubscriptionRootField = new SubscriptionUniqueRootField(validationContext, validationErrorCollector); + rules.add(uniqueSubscriptionRootField); + + UniqueObjectFieldName uniqueObjectFieldName = new UniqueObjectFieldName(validationContext, validationErrorCollector); + rules.add(uniqueObjectFieldName); + + DeferDirectiveOnRootLevel deferDirectiveOnRootLevel = new DeferDirectiveOnRootLevel(validationContext, validationErrorCollector); + rules.add(deferDirectiveOnRootLevel); + + DeferDirectiveOnValidOperation deferDirectiveOnValidOperation = new DeferDirectiveOnValidOperation(validationContext, validationErrorCollector); + rules.add(deferDirectiveOnValidOperation); - DeferredDirectiveOnQueryOperation deferredDirectiveOnQueryOperation = new DeferredDirectiveOnQueryOperation(validationContext, validationErrorCollector); - rules.add(deferredDirectiveOnQueryOperation); + DeferDirectiveLabel deferDirectiveLabel = new DeferDirectiveLabel(validationContext, validationErrorCollector); + rules.add(deferDirectiveLabel); - DeferredMustBeOnAllFields deferredMustBeOnAllFields = new DeferredMustBeOnAllFields(validationContext, validationErrorCollector); - rules.add(deferredMustBeOnAllFields); + KnownOperationTypes knownOperationTypes = new KnownOperationTypes(validationContext, validationErrorCollector); + rules.add(knownOperationTypes); return rules; } diff --git a/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java b/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java index b82ceebc12..ab54c59d3a 100644 --- a/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java +++ b/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java @@ -1,6 +1,7 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Argument; import graphql.schema.GraphQLArgument; import graphql.validation.AbstractRule; @@ -8,8 +9,10 @@ import graphql.validation.ValidationContext; import graphql.validation.ValidationError; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.WrongType; + +@Internal public class ArgumentsOfCorrectType extends AbstractRule { public ArgumentsOfCorrectType(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -23,11 +26,12 @@ public void checkArgument(Argument argument) { return; } ArgumentValidationUtil validationUtil = new ArgumentValidationUtil(argument); - if (!validationUtil.isValidLiteralValue(argument.getValue(), fieldArgument.getType(), getValidationContext().getSchema())) { + if (!validationUtil.isValidLiteralValue(argument.getValue(), fieldArgument.getType(), getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale())) { + String message = i18n(WrongType, validationUtil.getMsgAndArgs()); addError(ValidationError.newValidationError() - .validationErrorType(ValidationErrorType.WrongType) + .validationErrorType(WrongType) .sourceLocation(argument.getSourceLocation()) - .description(validationUtil.getMessage()) + .description(message) .extensions(validationUtil.getErrorExtensions())); } } diff --git a/src/main/java/graphql/validation/rules/DeferDirectiveLabel.java b/src/main/java/graphql/validation/rules/DeferDirectiveLabel.java new file mode 100644 index 0000000000..fdf85fda82 --- /dev/null +++ b/src/main/java/graphql/validation/rules/DeferDirectiveLabel.java @@ -0,0 +1,66 @@ +package graphql.validation.rules; + +import graphql.Directives; +import graphql.ExperimentalApi; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.language.Node; +import graphql.language.NullValue; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +import static graphql.validation.ValidationErrorType.DuplicateIncrementalLabel; +import static graphql.validation.ValidationErrorType.WrongType; + +/** + * Defer and stream directive labels are unique + * + * A GraphQL document is only valid if defer and stream directives' label argument is static and unique. + * + * See proposed spec:spec/Section 5 -- Validation.md ### ### Defer And Stream Directive Labels Are Unique + */ +@ExperimentalApi +public class DeferDirectiveLabel extends AbstractRule { + private Set checkedLabels = new LinkedHashSet<>(); + public DeferDirectiveLabel(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkDirective(Directive directive, List ancestors) { + // ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT must be true + if (!isExperimentalApiKeyEnabled(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT) || + !Directives.DeferDirective.getName().equals(directive.getName()) || + directive.getArguments().size() == 0) { + return; + } + + Argument labelArgument = directive.getArgument("label"); + if (labelArgument == null || labelArgument.getValue() instanceof NullValue){ + return; + } + Value labelArgumentValue = labelArgument.getValue(); + + if (!(labelArgumentValue instanceof StringValue)) { + String message = i18n(WrongType, "DeferDirective.labelMustBeStaticString"); + addError(WrongType, directive.getSourceLocation(), message); + } else { + if (checkedLabels.contains(((StringValue) labelArgumentValue).getValue())) { + String message = i18n(DuplicateIncrementalLabel, "IncrementalDirective.uniqueArgument", labelArgument.getName(), directive.getName()); + addError(DuplicateIncrementalLabel, directive.getSourceLocation(), message); + } else { + checkedLabels.add(((StringValue) labelArgumentValue).getValue()); + } + } + } + + + +} \ No newline at end of file diff --git a/src/main/java/graphql/validation/rules/DeferDirectiveOnRootLevel.java b/src/main/java/graphql/validation/rules/DeferDirectiveOnRootLevel.java new file mode 100644 index 0000000000..39586a265b --- /dev/null +++ b/src/main/java/graphql/validation/rules/DeferDirectiveOnRootLevel.java @@ -0,0 +1,58 @@ +package graphql.validation.rules; + +import graphql.Directives; +import graphql.ExperimentalApi; +import graphql.language.Directive; +import graphql.language.Node; +import graphql.language.OperationDefinition; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLObjectType; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +import static graphql.validation.ValidationErrorType.MisplacedDirective; + +/** + * Defer and stream directives are used on valid root field + * + * A GraphQL document is only valid if defer directives are not used on root mutation or subscription types. + * + * See proposed spec:spec/Section 5 -- Validation.md ### Defer And Stream Directives Are Used On Valid Root Field + */ +@ExperimentalApi +public class DeferDirectiveOnRootLevel extends AbstractRule { + private Set invalidOperations = new LinkedHashSet(Arrays.asList(OperationDefinition.Operation.MUTATION, OperationDefinition.Operation.SUBSCRIPTION)); + public DeferDirectiveOnRootLevel(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + this.setVisitFragmentSpreads(true); + } + + @Override + public void checkDirective(Directive directive, List ancestors) { + // ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT must be true + if (!isExperimentalApiKeyEnabled(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) { + return; + } + + if (!Directives.DeferDirective.getName().equals(directive.getName())) { + return; + } + GraphQLObjectType mutationType = getValidationContext().getSchema().getMutationType(); + GraphQLObjectType subscriptionType = getValidationContext().getSchema().getSubscriptionType(); + GraphQLCompositeType parentType = getValidationContext().getParentType(); + if (mutationType != null && parentType != null && parentType.getName().equals(mutationType.getName())){ + String message = i18n(MisplacedDirective, "DeferDirective.notAllowedOperationRootLevelMutation", parentType.getName()); + addError(MisplacedDirective, directive.getSourceLocation(), message); + } else if (subscriptionType != null && parentType != null && parentType.getName().equals(subscriptionType.getName())) { + String message = i18n(MisplacedDirective, "DeferDirective.notAllowedOperationRootLevelSubscription", parentType.getName()); + addError(MisplacedDirective, directive.getSourceLocation(), message); + } + } + +} diff --git a/src/main/java/graphql/validation/rules/DeferDirectiveOnValidOperation.java b/src/main/java/graphql/validation/rules/DeferDirectiveOnValidOperation.java new file mode 100644 index 0000000000..6baa9df948 --- /dev/null +++ b/src/main/java/graphql/validation/rules/DeferDirectiveOnValidOperation.java @@ -0,0 +1,84 @@ +package graphql.validation.rules; + +import graphql.Directives; +import graphql.ExperimentalApi; +import graphql.language.Argument; +import graphql.language.BooleanValue; +import graphql.language.Directive; +import graphql.language.Node; +import graphql.language.OperationDefinition; +import graphql.language.VariableReference; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.List; +import java.util.Optional; + +import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION; +import static graphql.validation.ValidationErrorType.MisplacedDirective; + +/** + * Defer Directive is Used On Valid Operations + * + * A GraphQL document is only valid if defer directives are not used on subscription types. + * + * See proposed spec:spec/Section 5 -- Validation.md ### Defer And Stream Directives Are Used On Valid Operations + * + */ +@ExperimentalApi +public class DeferDirectiveOnValidOperation extends AbstractRule { + public DeferDirectiveOnValidOperation(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + this.setVisitFragmentSpreads(true); + } + + + @Override + public void checkDirective(Directive directive, List ancestors) { + // ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT must be true + if (!isExperimentalApiKeyEnabled(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) { + return; + } + + if (!Directives.DeferDirective.getName().equals(directive.getName())) { + return; + } + // check if the directive is on allowed operation + Optional operationDefinition = getOperationDefinition(ancestors); + if (operationDefinition.isPresent() && + SUBSCRIPTION.equals(operationDefinition.get().getOperation()) && + !ifArgumentMightBeFalse(directive) ){ + String message = i18n(MisplacedDirective, "IncrementalDirective.notAllowedSubscriptionOperation", directive.getName()); + addError(MisplacedDirective, directive.getSourceLocation(), message); + } + } + + /** + * Extract from ancestors the OperationDefinition using the document ancestor. + * @param ancestors list of ancestors + * @return Optional of OperationDefinition + */ + private Optional getOperationDefinition(List ancestors) { + return ancestors.stream() + .filter(doc -> doc instanceof OperationDefinition) + .map((def -> (OperationDefinition) def)) + .findFirst(); + } + + private Boolean ifArgumentMightBeFalse(Directive directive) { + Argument ifArgument = directive.getArgumentsByName().get("if"); + if (ifArgument == null) { + return false; + } + if(ifArgument.getValue() instanceof BooleanValue){ + return !((BooleanValue) ifArgument.getValue()).isValue(); + } + if(ifArgument.getValue() instanceof VariableReference){ + return true; + } + return false; + } + +} + diff --git a/src/main/java/graphql/validation/rules/DeferredDirectiveAbstractRule.java b/src/main/java/graphql/validation/rules/DeferredDirectiveAbstractRule.java deleted file mode 100644 index 680f025c93..0000000000 --- a/src/main/java/graphql/validation/rules/DeferredDirectiveAbstractRule.java +++ /dev/null @@ -1,38 +0,0 @@ -package graphql.validation.rules; - -import graphql.Directives; -import graphql.Internal; -import graphql.language.Directive; -import graphql.language.Node; -import graphql.schema.GraphQLCompositeType; -import graphql.schema.GraphQLFieldDefinition; -import graphql.validation.AbstractRule; -import graphql.validation.ValidationContext; -import graphql.validation.ValidationErrorCollector; - -import java.util.List; - -@Internal -public abstract class DeferredDirectiveAbstractRule extends AbstractRule { - - public DeferredDirectiveAbstractRule(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { - super(validationContext, validationErrorCollector); - } - - @Override - public void checkDirective(Directive directive, List ancestors) { - if (!directive.getName().equals(Directives.DeferDirective.getName())) { - return; - } - - GraphQLCompositeType parentType = getValidationContext().getParentType(); - GraphQLFieldDefinition fieldDef = getValidationContext().getFieldDef(); - if (parentType == null || fieldDef == null) { - // some previous rule will have caught this - return; - } - onDeferredDirective(directive, ancestors, parentType, fieldDef); - } - - protected abstract void onDeferredDirective(Directive deferredDirective, List ancestors, GraphQLCompositeType parentType, GraphQLFieldDefinition fieldDef); -} diff --git a/src/main/java/graphql/validation/rules/DeferredDirectiveOnNonNullableField.java b/src/main/java/graphql/validation/rules/DeferredDirectiveOnNonNullableField.java deleted file mode 100644 index 8de40de2c5..0000000000 --- a/src/main/java/graphql/validation/rules/DeferredDirectiveOnNonNullableField.java +++ /dev/null @@ -1,32 +0,0 @@ -package graphql.validation.rules; - -import graphql.Internal; -import graphql.language.Directive; -import graphql.language.Node; -import graphql.schema.GraphQLCompositeType; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLOutputType; -import graphql.schema.GraphQLTypeUtil; -import graphql.validation.ValidationContext; -import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; - -import java.util.List; - -@Internal -public class DeferredDirectiveOnNonNullableField extends DeferredDirectiveAbstractRule { - - - public DeferredDirectiveOnNonNullableField(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { - super(validationContext, validationErrorCollector); - } - - @Override - protected void onDeferredDirective(Directive deferredDirective, List ancestors, GraphQLCompositeType parentType, GraphQLFieldDefinition fieldDef) { - GraphQLOutputType fieldDefType = fieldDef.getType(); - if (!GraphQLTypeUtil.isNullable(fieldDefType)) { - String message = String.format("@defer directives can only be applied to nullable fields - %s.%s is non nullable", parentType.getName(), fieldDef.getName()); - addError(ValidationErrorType.DeferDirectiveOnNonNullField, deferredDirective.getSourceLocation(), message); - } - } -} diff --git a/src/main/java/graphql/validation/rules/DeferredDirectiveOnQueryOperation.java b/src/main/java/graphql/validation/rules/DeferredDirectiveOnQueryOperation.java deleted file mode 100644 index 55d7ed0c9a..0000000000 --- a/src/main/java/graphql/validation/rules/DeferredDirectiveOnQueryOperation.java +++ /dev/null @@ -1,41 +0,0 @@ -package graphql.validation.rules; - -import graphql.Internal; -import graphql.language.Directive; -import graphql.language.Node; -import graphql.language.OperationDefinition; -import graphql.schema.GraphQLCompositeType; -import graphql.schema.GraphQLFieldDefinition; -import graphql.validation.ValidationContext; -import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; - -import java.util.List; -import java.util.Optional; - -@Internal -public class DeferredDirectiveOnQueryOperation extends DeferredDirectiveAbstractRule { - - public DeferredDirectiveOnQueryOperation(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { - super(validationContext, validationErrorCollector); - } - - @Override - protected void onDeferredDirective(Directive deferredDirective, List ancestors, GraphQLCompositeType parentType, GraphQLFieldDefinition fieldDef) { - Optional operationDefinition = getOperation(ancestors); - if (operationDefinition.isPresent()) { - OperationDefinition.Operation operation = operationDefinition.get().getOperation(); - if (operation != OperationDefinition.Operation.QUERY) { - String message = String.format("@defer directives can only be applied to QUERY operations and not '%s' operations - %s.%s ", operation, parentType.getName(), fieldDef.getName()); - addError(ValidationErrorType.DeferDirectiveNotOnQueryOperation, deferredDirective.getSourceLocation(), message); - } - } - } - - private Optional getOperation(List ancestors) { - return ancestors.stream() - .filter(def -> def instanceof OperationDefinition) - .map((def -> (OperationDefinition) def)) - .findFirst(); - } -} diff --git a/src/main/java/graphql/validation/rules/DeferredMustBeOnAllFields.java b/src/main/java/graphql/validation/rules/DeferredMustBeOnAllFields.java deleted file mode 100644 index dd95067f78..0000000000 --- a/src/main/java/graphql/validation/rules/DeferredMustBeOnAllFields.java +++ /dev/null @@ -1,95 +0,0 @@ -package graphql.validation.rules; - -import graphql.Directives; -import graphql.Internal; -import graphql.language.Document; -import graphql.language.Field; -import graphql.language.FragmentDefinition; -import graphql.language.FragmentSpread; -import graphql.language.InlineFragment; -import graphql.language.Selection; -import graphql.language.SelectionSet; -import graphql.validation.AbstractRule; -import graphql.validation.ValidationContext; -import graphql.validation.ValidationError; -import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import static java.util.stream.Collectors.groupingBy; - -@Internal -public class DeferredMustBeOnAllFields extends AbstractRule { - - private final Map, List> fieldsByPath = new LinkedHashMap<>(); - - public DeferredMustBeOnAllFields(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { - super(validationContext, validationErrorCollector); - } - - @Override - public void documentFinished(Document document) { - fieldsByPath.forEach((path, allFieldsOnPath) -> { - Map> fieldsByName = allFieldsOnPath.stream() - .collect(groupingBy(Field::getName)); - fieldsByName.forEach((fieldName, fields) -> { - if (fields.size() > 1) { - if (!allFieldsHaveDeferredDirectiveIfAnyOneDoes(fields)) { - recordBadDeferredFields(path, fieldName, fields); - } - } - }); - }); - } - - private boolean allFieldsHaveDeferredDirectiveIfAnyOneDoes(List fields) { - long count = fields.stream() - .filter(fld -> fld.getDirective(Directives.DeferDirective.getName()) != null) - .count(); - if (count == 0) { - return true; - } else { - return count == fields.size(); - } - } - - private void recordBadDeferredFields(List path, String fieldName, List fields) { - String message = String.format("If any of the multiple declarations of a field within the query (via fragments and field selections) contain the @defer directive, then all of them have to contain the @defer directive - field '%s' at '%s'", fieldName, path); - getValidationErrorCollector().addError(new ValidationError(ValidationErrorType.DeferMustBeOnAllFields, fields.get(0).getSourceLocation(), message, path)); - } - - @Override - public void checkSelectionSet(SelectionSet selectionSet) { - List queryPath = getValidationContext().getQueryPath(); - addFields(queryPath, selectionSet); - } - - private void addFields(List path, SelectionSet selectionSet) { - if (path == null) { - path = Collections.emptyList(); - } - for (Selection selection : selectionSet.getSelections()) { - if (selection instanceof Field) { - List fields = fieldsByPath.getOrDefault(path, new ArrayList<>()); - fields.add((Field) selection); - fieldsByPath.put(path, fields); - } - if (selection instanceof InlineFragment) { - addFields(path, ((InlineFragment) selection).getSelectionSet()); - } - if (selection instanceof FragmentSpread) { - FragmentSpread fragmentSpread = (FragmentSpread) selection; - FragmentDefinition fragmentDefinition = getValidationContext().getFragment(fragmentSpread.getName()); - if (fragmentDefinition != null) { - addFields(path, fragmentDefinition.getSelectionSet()); - } - } - } - } -} diff --git a/src/main/java/graphql/validation/rules/ExecutableDefinitions.java b/src/main/java/graphql/validation/rules/ExecutableDefinitions.java index 3379fe27b3..9a81f9c4aa 100644 --- a/src/main/java/graphql/validation/rules/ExecutableDefinitions.java +++ b/src/main/java/graphql/validation/rules/ExecutableDefinitions.java @@ -1,6 +1,8 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Definition; +import graphql.language.DirectiveDefinition; import graphql.language.Document; import graphql.language.FragmentDefinition; import graphql.language.OperationDefinition; @@ -9,8 +11,10 @@ import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.NonExecutableDefinition; + +@Internal public class ExecutableDefinitions extends AbstractRule { public ExecutableDefinitions(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -30,26 +34,20 @@ public void checkDocument(Document document) { && !(definition instanceof FragmentDefinition)) { String message = nonExecutableDefinitionMessage(definition); - addError(ValidationErrorType.NonExecutableDefinition, definition.getSourceLocation(), message); + addError(NonExecutableDefinition, definition.getSourceLocation(), message); } }); } private String nonExecutableDefinitionMessage(Definition definition) { - - String definitionName; if (definition instanceof TypeDefinition) { - definitionName = ((TypeDefinition) definition).getName(); + return i18n(NonExecutableDefinition, "ExecutableDefinitions.notExecutableType", ((TypeDefinition) definition).getName()); } else if (definition instanceof SchemaDefinition) { - definitionName = "schema"; - } else { - definitionName = "provided"; + return i18n(NonExecutableDefinition, "ExecutableDefinitions.notExecutableSchema"); + } else if (definition instanceof DirectiveDefinition) { + return i18n(NonExecutableDefinition, "ExecutableDefinitions.notExecutableDirective", ((DirectiveDefinition) definition).getName()); } - return nonExecutableDefinitionMessage(definitionName); - } - - static String nonExecutableDefinitionMessage(String definitionName) { - return String.format("The %s definition is not executable.", definitionName); + return i18n(NonExecutableDefinition, "ExecutableDefinitions.notExecutableDefinition"); } } diff --git a/src/main/java/graphql/validation/rules/FieldsOnCorrectType.java b/src/main/java/graphql/validation/rules/FieldsOnCorrectType.java index a0dc46487a..df9a403e26 100644 --- a/src/main/java/graphql/validation/rules/FieldsOnCorrectType.java +++ b/src/main/java/graphql/validation/rules/FieldsOnCorrectType.java @@ -1,14 +1,17 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Field; import graphql.schema.GraphQLCompositeType; import graphql.schema.GraphQLFieldDefinition; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.FieldUndefined; + +@Internal public class FieldsOnCorrectType extends AbstractRule { @@ -24,8 +27,8 @@ public void checkField(Field field) { if (parentType == null) return; GraphQLFieldDefinition fieldDef = getValidationContext().getFieldDef(); if (fieldDef == null) { - String message = String.format("Field '%s' in type '%s' is undefined", field.getName(), parentType.getName()); - addError(ValidationErrorType.FieldUndefined, field.getSourceLocation(), message); + String message = i18n(FieldUndefined, "FieldsOnCorrectType.unknownField", field.getName(), parentType.getName()); + addError(FieldUndefined, field.getSourceLocation(), message); } } diff --git a/src/main/java/graphql/validation/rules/FragmentsOnCompositeType.java b/src/main/java/graphql/validation/rules/FragmentsOnCompositeType.java index d7087321ac..fd7cd3c21f 100644 --- a/src/main/java/graphql/validation/rules/FragmentsOnCompositeType.java +++ b/src/main/java/graphql/validation/rules/FragmentsOnCompositeType.java @@ -1,6 +1,7 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.FragmentDefinition; import graphql.language.InlineFragment; import graphql.schema.GraphQLCompositeType; @@ -8,8 +9,11 @@ import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.FragmentTypeConditionInvalid; +import static graphql.validation.ValidationErrorType.InlineFragmentTypeConditionInvalid; + +@Internal public class FragmentsOnCompositeType extends AbstractRule { @@ -25,8 +29,8 @@ public void checkInlineFragment(InlineFragment inlineFragment) { GraphQLType type = getValidationContext().getSchema().getType(inlineFragment.getTypeCondition().getName()); if (type == null) return; if (!(type instanceof GraphQLCompositeType)) { - String message = "Inline fragment type condition is invalid, must be on Object/Interface/Union"; - addError(ValidationErrorType.InlineFragmentTypeConditionInvalid, inlineFragment.getSourceLocation(), message); + String message = i18n(InlineFragmentTypeConditionInvalid, "FragmentsOnCompositeType.invalidInlineTypeCondition"); + addError(InlineFragmentTypeConditionInvalid, inlineFragment.getSourceLocation(), message); } } @@ -35,8 +39,8 @@ public void checkFragmentDefinition(FragmentDefinition fragmentDefinition) { GraphQLType type = getValidationContext().getSchema().getType(fragmentDefinition.getTypeCondition().getName()); if (type == null) return; if (!(type instanceof GraphQLCompositeType)) { - String message = "Fragment type condition is invalid, must be on Object/Interface/Union"; - addError(ValidationErrorType.FragmentTypeConditionInvalid, fragmentDefinition.getSourceLocation(), message); + String message = i18n(FragmentTypeConditionInvalid, "FragmentsOnCompositeType.invalidFragmentTypeCondition"); + addError(FragmentTypeConditionInvalid, fragmentDefinition.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/KnownArgumentNames.java b/src/main/java/graphql/validation/rules/KnownArgumentNames.java index 012f63676f..8f123f7412 100644 --- a/src/main/java/graphql/validation/rules/KnownArgumentNames.java +++ b/src/main/java/graphql/validation/rules/KnownArgumentNames.java @@ -1,5 +1,6 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Argument; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; @@ -7,9 +8,12 @@ import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.UnknownArgument; +import static graphql.validation.ValidationErrorType.UnknownDirective; + +@Internal public class KnownArgumentNames extends AbstractRule { public KnownArgumentNames(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -23,8 +27,8 @@ public void checkArgument(Argument argument) { if (directiveDef != null) { GraphQLArgument directiveArgument = directiveDef.getArgument(argument.getName()); if (directiveArgument == null) { - String message = String.format("Unknown directive argument %s", argument.getName()); - addError(ValidationErrorType.UnknownDirective, argument.getSourceLocation(), message); + String message = i18n(UnknownDirective, "KnownArgumentNames.unknownDirectiveArg", argument.getName()); + addError(UnknownDirective, argument.getSourceLocation(), message); } return; @@ -34,8 +38,8 @@ public void checkArgument(Argument argument) { if (fieldDef == null) return; GraphQLArgument fieldArgument = fieldDef.getArgument(argument.getName()); if (fieldArgument == null) { - String message = String.format("Unknown field argument %s", argument.getName()); - addError(ValidationErrorType.UnknownArgument, argument.getSourceLocation(), message); + String message = i18n(UnknownArgument, "KnownArgumentNames.unknownFieldArg", argument.getName()); + addError(UnknownArgument, argument.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/KnownDirectives.java b/src/main/java/graphql/validation/rules/KnownDirectives.java index 3f35d1ba9d..eb011fb682 100644 --- a/src/main/java/graphql/validation/rules/KnownDirectives.java +++ b/src/main/java/graphql/validation/rules/KnownDirectives.java @@ -1,6 +1,7 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.introspection.Introspection.DirectiveLocation; import graphql.language.Directive; import graphql.language.Field; @@ -10,14 +11,19 @@ import graphql.language.Node; import graphql.language.OperationDefinition; import graphql.language.OperationDefinition.Operation; +import graphql.language.VariableDefinition; import graphql.schema.GraphQLDirective; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.List; +import java.util.EnumSet; +import static graphql.validation.ValidationErrorType.MisplacedDirective; +import static graphql.validation.ValidationErrorType.UnknownDirective; + +@Internal public class KnownDirectives extends AbstractRule { @@ -29,33 +35,40 @@ public KnownDirectives(ValidationContext validationContext, ValidationErrorColle public void checkDirective(Directive directive, List ancestors) { GraphQLDirective graphQLDirective = getValidationContext().getSchema().getDirective(directive.getName()); if (graphQLDirective == null) { - String message = String.format("Unknown directive %s", directive.getName()); - addError(ValidationErrorType.UnknownDirective, directive.getSourceLocation(), message); + String message = i18n(UnknownDirective, "KnownDirectives.unknownDirective", directive.getName()); + addError(UnknownDirective, directive.getSourceLocation(), message); return; } Node ancestor = ancestors.get(ancestors.size() - 1); if (hasInvalidLocation(graphQLDirective, ancestor)) { - String message = String.format("Directive %s not allowed here", directive.getName()); - addError(ValidationErrorType.MisplacedDirective, directive.getSourceLocation(), message); + String message = i18n(MisplacedDirective, "KnownDirectives.directiveNotAllowed", directive.getName()); + addError(MisplacedDirective, directive.getSourceLocation(), message); } } - @SuppressWarnings("deprecation") // the suppression stands because its deprecated but still in graphql spec + @SuppressWarnings("deprecation") // the suppression stands because it's deprecated but still in graphql spec private boolean hasInvalidLocation(GraphQLDirective directive, Node ancestor) { + EnumSet validLocations = directive.validLocations(); if (ancestor instanceof OperationDefinition) { Operation operation = ((OperationDefinition) ancestor).getOperation(); - return Operation.QUERY.equals(operation) ? - !(directive.validLocations().contains(DirectiveLocation.QUERY) || directive.isOnOperation()) : - !(directive.validLocations().contains(DirectiveLocation.MUTATION) || directive.isOnOperation()); + if (Operation.QUERY.equals(operation)) { + return !validLocations.contains(DirectiveLocation.QUERY); + } else if (Operation.MUTATION.equals(operation)) { + return !validLocations.contains(DirectiveLocation.MUTATION); + } else if (Operation.SUBSCRIPTION.equals(operation)) { + return !validLocations.contains(DirectiveLocation.SUBSCRIPTION); + } } else if (ancestor instanceof Field) { - return !(directive.validLocations().contains(DirectiveLocation.FIELD) || directive.isOnField()); + return !(validLocations.contains(DirectiveLocation.FIELD)); } else if (ancestor instanceof FragmentSpread) { - return !(directive.validLocations().contains(DirectiveLocation.FRAGMENT_SPREAD) || directive.isOnFragment()); + return !(validLocations.contains(DirectiveLocation.FRAGMENT_SPREAD)); } else if (ancestor instanceof FragmentDefinition) { - return !(directive.validLocations().contains(DirectiveLocation.FRAGMENT_DEFINITION) || directive.isOnFragment()); + return !(validLocations.contains(DirectiveLocation.FRAGMENT_DEFINITION)); } else if (ancestor instanceof InlineFragment) { - return !(directive.validLocations().contains(DirectiveLocation.INLINE_FRAGMENT) || directive.isOnFragment()); + return !(validLocations.contains(DirectiveLocation.INLINE_FRAGMENT)); + } else if (ancestor instanceof VariableDefinition) { + return !(validLocations.contains(DirectiveLocation.VARIABLE_DEFINITION)); } return true; } diff --git a/src/main/java/graphql/validation/rules/KnownFragmentNames.java b/src/main/java/graphql/validation/rules/KnownFragmentNames.java index dd97a29e4b..0ec66508a0 100644 --- a/src/main/java/graphql/validation/rules/KnownFragmentNames.java +++ b/src/main/java/graphql/validation/rules/KnownFragmentNames.java @@ -1,13 +1,16 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.UndefinedFragment; + +@Internal public class KnownFragmentNames extends AbstractRule { public KnownFragmentNames(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -18,8 +21,8 @@ public KnownFragmentNames(ValidationContext validationContext, ValidationErrorCo public void checkFragmentSpread(FragmentSpread fragmentSpread) { FragmentDefinition fragmentDefinition = getValidationContext().getFragment(fragmentSpread.getName()); if (fragmentDefinition == null) { - String message = String.format("Undefined fragment %s", fragmentSpread.getName()); - addError(ValidationErrorType.UndefinedFragment, fragmentSpread.getSourceLocation(), message); + String message = i18n(UndefinedFragment, "KnownFragmentNames.undefinedFragment", fragmentSpread.getName()); + addError(UndefinedFragment, fragmentSpread.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/KnownOperationTypes.java b/src/main/java/graphql/validation/rules/KnownOperationTypes.java new file mode 100644 index 0000000000..2ef9af48fe --- /dev/null +++ b/src/main/java/graphql/validation/rules/KnownOperationTypes.java @@ -0,0 +1,48 @@ +package graphql.validation.rules; + +import graphql.Internal; +import graphql.language.OperationDefinition; +import graphql.schema.GraphQLSchema; +import graphql.util.StringKit; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import static graphql.validation.ValidationErrorType.UnknownOperation; + +/** + * Unique variable names + *

      + * A GraphQL operation is only valid if all its variables are uniquely named. + */ +@Internal +public class KnownOperationTypes extends AbstractRule { + + public KnownOperationTypes(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkOperationDefinition(OperationDefinition operationDefinition) { + OperationDefinition.Operation documentOperation = operationDefinition.getOperation(); + GraphQLSchema graphQLSchema = getValidationContext().getSchema(); + if (documentOperation == OperationDefinition.Operation.MUTATION + && graphQLSchema.getMutationType() == null) { + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } else if (documentOperation == OperationDefinition.Operation.SUBSCRIPTION + && graphQLSchema.getSubscriptionType() == null) { + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } else if (documentOperation == OperationDefinition.Operation.QUERY + && graphQLSchema.getQueryType() == null) { + // This is unlikely to happen, as a validated GraphQLSchema must have a Query type by definition + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } + } + + private String formatOperation(OperationDefinition.Operation operation) { + return StringKit.capitalize(operation.name().toLowerCase()); + } +} diff --git a/src/main/java/graphql/validation/rules/KnownTypeNames.java b/src/main/java/graphql/validation/rules/KnownTypeNames.java index 967cc3a991..d28db91925 100644 --- a/src/main/java/graphql/validation/rules/KnownTypeNames.java +++ b/src/main/java/graphql/validation/rules/KnownTypeNames.java @@ -1,12 +1,15 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.TypeName; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.UnknownType; + +@Internal public class KnownTypeNames extends AbstractRule { @@ -17,8 +20,8 @@ public KnownTypeNames(ValidationContext validationContext, ValidationErrorCollec @Override public void checkTypeName(TypeName typeName) { if ((getValidationContext().getSchema().getType(typeName.getName())) == null) { - String message = String.format("Unknown type %s", typeName.getName()); - addError(ValidationErrorType.UnknownType, typeName.getSourceLocation(), message); + String message = i18n(UnknownType, "KnownTypeNames.unknownType", typeName.getName()); + addError(UnknownType, typeName.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/LoneAnonymousOperation.java b/src/main/java/graphql/validation/rules/LoneAnonymousOperation.java index 13b7e469b5..e89bec68e9 100644 --- a/src/main/java/graphql/validation/rules/LoneAnonymousOperation.java +++ b/src/main/java/graphql/validation/rules/LoneAnonymousOperation.java @@ -1,5 +1,6 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Document; import graphql.language.OperationDefinition; import graphql.validation.AbstractRule; @@ -7,6 +8,9 @@ import graphql.validation.ValidationErrorCollector; import graphql.validation.ValidationErrorType; +import static graphql.validation.ValidationErrorType.LoneAnonymousOperationViolation; + +@Internal public class LoneAnonymousOperation extends AbstractRule { boolean hasAnonymousOp = false; @@ -20,22 +24,20 @@ public LoneAnonymousOperation(ValidationContext validationContext, ValidationErr public void checkOperationDefinition(OperationDefinition operationDefinition) { super.checkOperationDefinition(operationDefinition); String name = operationDefinition.getName(); - String message = null; if (name == null) { hasAnonymousOp = true; if (count > 0) { - message = "Anonymous operation with other operations."; + String message = i18n(LoneAnonymousOperationViolation, "LoneAnonymousOperation.withOthers"); + addError(ValidationErrorType.LoneAnonymousOperationViolation, operationDefinition.getSourceLocation(), message); } } else { if (hasAnonymousOp) { - message = "Operation " + name + " is following anonymous operation."; + String message = i18n(LoneAnonymousOperationViolation, "LoneAnonymousOperation.namedOperation", name); + addError(ValidationErrorType.LoneAnonymousOperationViolation, operationDefinition.getSourceLocation(), message); } } count++; - if (message != null) { - addError(ValidationErrorType.LoneAnonymousOperationViolation, operationDefinition.getSourceLocation(), message); - } } @Override diff --git a/src/main/java/graphql/validation/rules/NoFragmentCycles.java b/src/main/java/graphql/validation/rules/NoFragmentCycles.java index 9b092b1baf..32c0f751b5 100644 --- a/src/main/java/graphql/validation/rules/NoFragmentCycles.java +++ b/src/main/java/graphql/validation/rules/NoFragmentCycles.java @@ -1,6 +1,15 @@ package graphql.validation.rules; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import graphql.Internal; import graphql.language.Definition; import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; @@ -12,15 +21,12 @@ import graphql.validation.ValidationErrorCollector; import graphql.validation.ValidationErrorType; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import static graphql.validation.ValidationErrorType.FragmentCycle; +@Internal public class NoFragmentCycles extends AbstractRule { - private final Map> fragmentSpreads = new LinkedHashMap<>(); - + private final Map> fragmentSpreads = new HashMap<>(); public NoFragmentCycles(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { super(validationContext, validationErrorCollector); @@ -37,14 +43,13 @@ private void prepareFragmentMap() { } } - - private List gatherSpreads(FragmentDefinition fragmentDefinition) { - final List fragmentSpreads = new ArrayList<>(); + private Set gatherSpreads(FragmentDefinition fragmentDefinition) { + final Set fragmentSpreads = new HashSet<>(); DocumentVisitor visitor = new DocumentVisitor() { @Override public void enter(Node node, List path) { if (node instanceof FragmentSpread) { - fragmentSpreads.add((FragmentSpread) node); + fragmentSpreads.add(((FragmentSpread) node).getName()); } } @@ -58,36 +63,56 @@ public void leave(Node node, List path) { return fragmentSpreads; } - @Override public void checkFragmentDefinition(FragmentDefinition fragmentDefinition) { - List spreadPath = new ArrayList<>(); - detectCycleRecursive(fragmentDefinition.getName(), fragmentDefinition.getName(), spreadPath); + LinkedList path = new LinkedList<>(); + path.add(0, fragmentDefinition.getName()); + Map> transitiveSpreads = buildTransitiveSpreads(path, new HashMap<>()); + + for (Map.Entry> entry : transitiveSpreads.entrySet()) { + if (entry.getValue().contains(entry.getKey())) { + String message = i18n(FragmentCycle, "NoFragmentCycles.cyclesNotAllowed"); + addError(ValidationErrorType.FragmentCycle, Collections.singletonList(fragmentDefinition), message); + } + } } - private void detectCycleRecursive(String fragmentName, String initialName, List spreadPath) { - List fragmentSpreads = this.fragmentSpreads.get(fragmentName); - if (fragmentSpreads == null) { - // KnownFragmentNames will have picked this up. Lets not NPE - return; + private Map> buildTransitiveSpreads(LinkedList path, Map> transitiveSpreads) { + String name = path.peekFirst(); + + if (transitiveSpreads.containsKey(name)) { + return transitiveSpreads; } - outer: - for (FragmentSpread fragmentSpread : fragmentSpreads) { + Set spreads = fragmentSpreads.get(name); - if (fragmentSpread.getName().equals(initialName)) { - String message = "Fragment cycles not allowed"; - addError(ValidationErrorType.FragmentCycle, spreadPath, message); - continue; + // spreads may be null when there is no corresponding FragmentDefinition for this spread. + // This will be handled by KnownFragmentNames + if (spreads == null || spreads.isEmpty()) { + return transitiveSpreads; + } + + // Add the current spreads to the transitive spreads of each ancestor in the traversal path + for (String ancestor : path) { + Set ancestorSpreads = transitiveSpreads.get(ancestor); + if (ancestorSpreads == null) { + ancestorSpreads = new HashSet<>(); } - for (FragmentSpread spread : spreadPath) { - if (spread.equals(fragmentSpread)) { - continue outer; - } + ancestorSpreads.addAll(spreads); + transitiveSpreads.put(ancestor, ancestorSpreads); + } + + for (String child : spreads) { + // don't recurse infinitely, expect the recursion check to happen in checkFragmentDefinition + if (path.contains(child) || transitiveSpreads.containsKey(child)) { + continue; } - spreadPath.add(fragmentSpread); - detectCycleRecursive(fragmentSpread.getName(), initialName, spreadPath); - spreadPath.remove(spreadPath.size() - 1); + + // descend into each spread in the current fragment + LinkedList childPath = new LinkedList<>(path); + childPath.add(0, child); + buildTransitiveSpreads(childPath, transitiveSpreads); } + return transitiveSpreads; } } diff --git a/src/main/java/graphql/validation/rules/NoUndefinedVariables.java b/src/main/java/graphql/validation/rules/NoUndefinedVariables.java index 6de3c69118..f0592bb7df 100644 --- a/src/main/java/graphql/validation/rules/NoUndefinedVariables.java +++ b/src/main/java/graphql/validation/rules/NoUndefinedVariables.java @@ -1,6 +1,7 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.FragmentDefinition; import graphql.language.OperationDefinition; import graphql.language.VariableDefinition; @@ -8,11 +9,13 @@ import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.LinkedHashSet; import java.util.Set; +import static graphql.validation.ValidationErrorType.UndefinedVariable; + +@Internal public class NoUndefinedVariables extends AbstractRule { private final Set variableNames = new LinkedHashSet<>(); @@ -35,8 +38,8 @@ public void checkFragmentDefinition(FragmentDefinition fragmentDefinition) { @Override public void checkVariable(VariableReference variableReference) { if (!variableNames.contains(variableReference.getName())) { - String message = String.format("Undefined variable %s", variableReference.getName()); - addError(ValidationErrorType.UndefinedVariable, variableReference.getSourceLocation(), message); + String message = i18n(UndefinedVariable, "NoUndefinedVariables.undefinedVariable", variableReference.getName()); + addError(UndefinedVariable, variableReference.getSourceLocation(), message); } } diff --git a/src/main/java/graphql/validation/rules/NoUnusedFragments.java b/src/main/java/graphql/validation/rules/NoUnusedFragments.java index 633f8442b0..c0a61a50a6 100644 --- a/src/main/java/graphql/validation/rules/NoUnusedFragments.java +++ b/src/main/java/graphql/validation/rules/NoUnusedFragments.java @@ -1,6 +1,7 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Document; import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; @@ -8,13 +9,15 @@ import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static graphql.validation.ValidationErrorType.UnusedFragment; + +@Internal public class NoUnusedFragments extends AbstractRule { @@ -59,8 +62,8 @@ public void documentFinished(Document document) { for (FragmentDefinition fragmentDefinition : allDeclaredFragments) { if (!allUsedFragments.contains(fragmentDefinition.getName())) { - String message = String.format("Unused fragment %s", fragmentDefinition.getName()); - addError(ValidationErrorType.UnusedFragment, fragmentDefinition.getSourceLocation(), message); + String message = i18n(UnusedFragment, "NoUnusedFragments.unusedFragments", fragmentDefinition.getName()); + addError(UnusedFragment, fragmentDefinition.getSourceLocation(), message); } } diff --git a/src/main/java/graphql/validation/rules/NoUnusedVariables.java b/src/main/java/graphql/validation/rules/NoUnusedVariables.java index 374cb17bc9..80e3aa9429 100644 --- a/src/main/java/graphql/validation/rules/NoUnusedVariables.java +++ b/src/main/java/graphql/validation/rules/NoUnusedVariables.java @@ -1,20 +1,22 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.OperationDefinition; import graphql.language.VariableDefinition; import graphql.language.VariableReference; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; -import graphql.validation.ValidationError; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import static graphql.validation.ValidationErrorType.UnusedVariable; + +@Internal public class NoUnusedVariables extends AbstractRule { private final List variableDefinitions = new ArrayList<>(); @@ -29,8 +31,8 @@ public NoUnusedVariables(ValidationContext validationContext, ValidationErrorCol public void leaveOperationDefinition(OperationDefinition operationDefinition) { for (VariableDefinition variableDefinition : variableDefinitions) { if (!usedVariables.contains(variableDefinition.getName())) { - String message = String.format("Unused variable %s", variableDefinition.getName()); - addError(ValidationErrorType.UnusedVariable, variableDefinition.getSourceLocation(), message); + String message = i18n(UnusedVariable, "NoUnusedVariables.unusedVariable", variableDefinition.getName()); + addError(UnusedVariable, variableDefinition.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java b/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java index c71d26b9f9..aa877d8cfd 100644 --- a/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java +++ b/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java @@ -1,6 +1,8 @@ package graphql.validation.rules; +import com.google.common.collect.ImmutableList; +import graphql.Internal; import graphql.execution.TypeFromAST; import graphql.language.Argument; import graphql.language.AstComparator; @@ -8,26 +10,32 @@ import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; import graphql.language.Selection; import graphql.language.SelectionSet; -import graphql.language.Value; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLType; +import graphql.schema.GraphQLUnionType; import graphql.schema.GraphQLUnmodifiedType; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; +import static graphql.collect.ImmutableKit.addToList; +import static graphql.collect.ImmutableKit.emptyList; import static graphql.schema.GraphQLTypeUtil.isEnum; import static graphql.schema.GraphQLTypeUtil.isList; import static graphql.schema.GraphQLTypeUtil.isNonNull; @@ -37,224 +45,219 @@ import static graphql.schema.GraphQLTypeUtil.simplePrint; import static graphql.schema.GraphQLTypeUtil.unwrapAll; import static graphql.schema.GraphQLTypeUtil.unwrapOne; +import static graphql.util.FpKit.filterSet; +import static graphql.util.FpKit.groupingBy; import static graphql.validation.ValidationErrorType.FieldsConflict; -import static java.lang.String.format; -/** - * See http://facebook.github.io/graphql/June2018/#sec-Field-Selection-Merging - */ +@Internal public class OverlappingFieldsCanBeMerged extends AbstractRule { - private final List alreadyChecked = new ArrayList<>(); + private final Set> sameResponseShapeChecked = new LinkedHashSet<>(); + private final Set> sameForCommonParentsChecked = new LinkedHashSet<>(); + private final Set> conflictsReported = new LinkedHashSet<>(); public OverlappingFieldsCanBeMerged(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { super(validationContext, validationErrorCollector); } @Override - public void leaveSelectionSet(SelectionSet selectionSet) { - Map> fieldMap = new LinkedHashMap<>(); + public void checkOperationDefinition(OperationDefinition operationDefinition) { + super.checkOperationDefinition(operationDefinition); + impl(operationDefinition.getSelectionSet(), getValidationContext().getOutputType()); + } + + public void impl(SelectionSet selectionSet, GraphQLOutputType graphQLOutputType) { + Map> fieldMap = new LinkedHashMap<>(); Set visitedFragmentSpreads = new LinkedHashSet<>(); - collectFields(fieldMap, selectionSet, getValidationContext().getOutputType(), visitedFragmentSpreads); + collectFields(fieldMap, selectionSet, graphQLOutputType, visitedFragmentSpreads); List conflicts = findConflicts(fieldMap); for (Conflict conflict : conflicts) { + if (conflictsReported.contains(conflict.fields)) { + continue; + } + conflictsReported.add(conflict.fields); + // each error contains a reference to the current querypath via validationContext.getQueryPath() + // queryPath is null for the first selection set addError(FieldsConflict, conflict.fields, conflict.reason); } } - private List findConflicts(Map> fieldMap) { - List result = new ArrayList<>(); - for (String name : fieldMap.keySet()) { - List fieldAndTypes = fieldMap.get(name); - for (int i = 0; i < fieldAndTypes.size(); i++) { - for (int j = i + 1; j < fieldAndTypes.size(); j++) { - Conflict conflict = findConflict(name, fieldAndTypes.get(i), fieldAndTypes.get(j)); - if (conflict != null) { - result.add(conflict); - } - } - } - } - return result; - } + private void collectFields(Map> fieldMap, SelectionSet selectionSet, GraphQLType parentType, Set visitedFragmentSpreads) { - private boolean isAlreadyChecked(Field field1, Field field2) { - for (FieldPair fieldPair : alreadyChecked) { - if (fieldPair.field1 == field1 && fieldPair.field2 == field2) { - return true; - } - if (fieldPair.field1 == field2 && fieldPair.field2 == field1) { - return true; + for (Selection selection : selectionSet.getSelections()) { + if (selection instanceof Field) { + collectFieldsForField(fieldMap, parentType, (Field) selection); + + } else if (selection instanceof InlineFragment) { + collectFieldsForInlineFragment(fieldMap, visitedFragmentSpreads, parentType, (InlineFragment) selection); + + } else if (selection instanceof FragmentSpread) { + collectFieldsForFragmentSpread(fieldMap, visitedFragmentSpreads, (FragmentSpread) selection); } } - return false; } - @SuppressWarnings("ConstantConditions") - private Conflict findConflict(String responseName, FieldAndType fieldAndTypeA, FieldAndType fieldAndTypeB) { - - Field fieldA = fieldAndTypeA.field; - Field fieldB = fieldAndTypeB.field; - - if (isAlreadyChecked(fieldA, fieldB)) { - return null; + private void collectFieldsForFragmentSpread(Map> fieldMap, Set visitedFragmentSpreads, FragmentSpread fragmentSpread) { + FragmentDefinition fragment = getValidationContext().getFragment(fragmentSpread.getName()); + if (fragment == null) { + return; } - alreadyChecked.add(new FieldPair(fieldA, fieldB)); - - String fieldNameA = fieldA.getName(); - String fieldNameB = fieldB.getName(); - - GraphQLType typeA = fieldAndTypeA.graphQLType; - GraphQLType typeB = fieldAndTypeB.graphQLType; - - Conflict conflict = checkListAndNonNullConflict(responseName,fieldAndTypeA,fieldAndTypeB); - if (conflict != null) { - return conflict; + if (visitedFragmentSpreads.contains(fragment.getName())) { + return; } + visitedFragmentSpreads.add(fragment.getName()); + GraphQLType graphQLType = getGraphQLTypeForFragmentDefinition(fragment); + collectFields(fieldMap, fragment.getSelectionSet(), graphQLType, visitedFragmentSpreads); + } - typeA = unwrapAll(typeA); - typeB = unwrapAll(typeB); + private GraphQLType getGraphQLTypeForFragmentDefinition(FragmentDefinition fragment) { + return TypeFromAST.getTypeFromAST(getValidationContext().getSchema(), + fragment.getTypeCondition()); + } - if (checkScalarAndEnumConflict(typeA, typeB)) { - return mkNotSameTypeError(responseName, fieldA, fieldB, typeA, typeB); - } + private void collectFieldsForInlineFragment(Map> fieldMap, Set visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment) { + GraphQLType graphQLType = getGraphQLTypeForInlineFragment(parentType, inlineFragment); + collectFields(fieldMap, inlineFragment.getSelectionSet(), graphQLType, visitedFragmentSpreads); + } - // If the statically known parent types could not possibly apply at the same - // time, then it is safe to permit them to diverge as they will not present - // any ambiguity by differing. - // It is known that two parent types could never overlap if they are - // different Object types. Interface or Union types might overlap - if not - // in the current state of the schema, then perhaps in some future version, - // thus may not safely diverge. - if (!sameType(fieldAndTypeA.parentType, fieldAndTypeB.parentType) && - fieldAndTypeA.parentType instanceof GraphQLObjectType && - fieldAndTypeB.parentType instanceof GraphQLObjectType) { - return null; + private GraphQLType getGraphQLTypeForInlineFragment(GraphQLType parentType, InlineFragment inlineFragment) { + if (inlineFragment.getTypeCondition() == null) { + return parentType; } + return TypeFromAST.getTypeFromAST(getValidationContext().getSchema(), inlineFragment.getTypeCondition()); + } - if (!fieldNameA.equals(fieldNameB)) { - String reason = format("%s: %s and %s are different fields", responseName, fieldNameA, fieldNameB); - return new Conflict(responseName, reason, fieldA, fieldB); + private void collectFieldsForField(Map> fieldMap, GraphQLType parentType, Field field) { + String responseName = field.getResultKey(); + if (!fieldMap.containsKey(responseName)) { + fieldMap.put(responseName, new LinkedHashSet<>()); } - - if (!sameType(typeA, typeB)) { - return mkNotSameTypeError(responseName, fieldA, fieldB, typeA, typeB); + GraphQLOutputType fieldType = null; + GraphQLUnmodifiedType unwrappedParent = unwrapAll(parentType); + if (unwrappedParent instanceof GraphQLFieldsContainer) { + GraphQLFieldsContainer fieldsContainer = (GraphQLFieldsContainer) unwrappedParent; + GraphQLFieldDefinition fieldDefinition = getVisibleFieldDefinition(fieldsContainer, field); + fieldType = fieldDefinition != null ? fieldDefinition.getType() : null; } + fieldMap.get(responseName).add(new FieldAndType(field, fieldType, unwrappedParent)); + } - - if (!sameArguments(fieldA.getArguments(), fieldB.getArguments())) { - String reason = format("%s: they have differing arguments", responseName); - return new Conflict(responseName, reason, fieldA, fieldB); - } - SelectionSet selectionSet1 = fieldA.getSelectionSet(); - SelectionSet selectionSet2 = fieldB.getSelectionSet(); - if (selectionSet1 != null && selectionSet2 != null) { - Set visitedFragmentSpreads = new LinkedHashSet<>(); - Map> subFieldMap = new LinkedHashMap<>(); - collectFields(subFieldMap, selectionSet1, typeA, visitedFragmentSpreads); - collectFields(subFieldMap, selectionSet2, typeB, visitedFragmentSpreads); - List subConflicts = findConflicts(subFieldMap); - if (subConflicts.size() > 0) { - String reason = format("%s: %s", responseName, joinReasons(subConflicts)); - List fields = new ArrayList<>(); - fields.add(fieldA); - fields.add(fieldB); - fields.addAll(collectFields(subConflicts)); - return new Conflict(responseName, reason, fields); - } - } - return null; + private GraphQLFieldDefinition getVisibleFieldDefinition(GraphQLFieldsContainer fieldsContainer, Field field) { + return getValidationContext().getSchema().getCodeRegistry().getFieldVisibility().getFieldDefinition(fieldsContainer, field.getName()); } - private Conflict checkListAndNonNullConflict(String responseName, FieldAndType fieldAndTypeA, FieldAndType fieldAndTypeB) { - GraphQLType typeA = fieldAndTypeA.graphQLType; - GraphQLType typeB = fieldAndTypeB.graphQLType; + private List findConflicts(Map> fieldMap) { + /* + * The algorithm implemented here is not the one from the Spec, but is based on + * https://tech.xing.com/graphql-overlapping-fields-can-be-merged-fast-ea6e92e0a01 + * . It is not the final version (Listing 11), but Listing 10 adopted to this code base. + */ + List result = new ArrayList<>(); + sameResponseShapeByName(fieldMap, emptyList(), result); + sameForCommonParentsByName(fieldMap, emptyList(), result); + return result; + } - while (true) { - if (isNonNull(typeA) || isNonNull(typeB)) { - if (isNullable(typeA) || isNullable(typeB)) { - String reason = format("%s: fields have different nullability shapes", responseName); - return new Conflict(responseName, reason, fieldAndTypeA.field, fieldAndTypeB.field); - } + private void sameResponseShapeByName(Map> fieldMap, ImmutableList currentPath, List conflictsResult) { + for (Map.Entry> entry : fieldMap.entrySet()) { + if (sameResponseShapeChecked.contains(entry.getValue())) { + continue; } - if (isList(typeA) || isList(typeB)) { - if (!isList(typeA) || !isList(typeB)) { - String reason = format("%s: fields have different list shapes", responseName); - return new Conflict(responseName, reason, fieldAndTypeA.field, fieldAndTypeB.field); - } - } - if (isNotWrapped(typeA) && isNotWrapped(typeB)) { - break; + ImmutableList newPath = addToList(currentPath, entry.getKey()); + sameResponseShapeChecked.add(entry.getValue()); + Conflict conflict = requireSameOutputTypeShape(newPath, entry.getValue()); + if (conflict != null) { + conflictsResult.add(conflict); + continue; } - typeA = unwrapOne(typeA); - typeB = unwrapOne(typeB); + Map> subSelections = mergeSubSelections(entry.getValue()); + sameResponseShapeByName(subSelections, newPath, conflictsResult); } - return null; } - private boolean checkScalarAndEnumConflict(GraphQLType typeA, GraphQLType typeB) { - if (isScalar(typeA) || isScalar(typeB)) { - if (!sameType(typeA, typeB)) { - return true; + private Map> mergeSubSelections(Set sameNameFields) { + Map> fieldMap = new LinkedHashMap<>(); + for (FieldAndType fieldAndType : sameNameFields) { + if (fieldAndType.field.getSelectionSet() != null) { + Set visitedFragmentSpreads = new LinkedHashSet<>(); + collectFields(fieldMap, fieldAndType.field.getSelectionSet(), fieldAndType.graphQLType, visitedFragmentSpreads); } } - if (isEnum(typeA) || isEnum(typeB)) { - if (!sameType(typeA, typeB)) { - return true; - } - } - return false; + return fieldMap; } - private Conflict mkNotSameTypeError(String responseName, Field fieldA, Field fieldB, GraphQLType typeA, GraphQLType typeB) { - String name1 = typeA != null ? simplePrint(typeA) : "null"; - String name2 = typeB != null ? simplePrint(typeB) : "null"; - String reason = format("%s: they return differing types %s and %s", responseName, name1, name2); - return new Conflict(responseName, reason, fieldA, fieldB); + private void sameForCommonParentsByName(Map> fieldMap, ImmutableList currentPath, List conflictsResult) { + for (Map.Entry> entry : fieldMap.entrySet()) { + List> groups = groupByCommonParents(entry.getValue()); + ImmutableList newPath = addToList(currentPath, entry.getKey()); + for (Set group : groups) { + if (sameForCommonParentsChecked.contains(group)) { + continue; + } + sameForCommonParentsChecked.add(group); + Conflict conflict = requireSameNameAndArguments(newPath, group); + if (conflict != null) { + conflictsResult.add(conflict); + continue; + } + Map> subSelections = mergeSubSelections(group); + sameForCommonParentsByName(subSelections, newPath, conflictsResult); + } + } } - private List collectFields(List conflicts) { - List result = new ArrayList<>(); - for (Conflict conflict : conflicts) { - result.addAll(conflict.fields); + private List> groupByCommonParents(Set fields) { + Set abstractTypes = filterSet(fields, fieldAndType -> isInterfaceOrUnion(fieldAndType.parentType)); + Set concreteTypes = filterSet(fields, fieldAndType -> fieldAndType.parentType instanceof GraphQLObjectType); + if (concreteTypes.isEmpty()) { + return Collections.singletonList(abstractTypes); + } + Map> groupsByConcreteParent = groupingBy(concreteTypes, fieldAndType -> fieldAndType.parentType); + List> result = new ArrayList<>(); + for (ImmutableList concreteGroup : groupsByConcreteParent.values()) { + Set oneResultGroup = new LinkedHashSet<>(concreteGroup); + oneResultGroup.addAll(abstractTypes); + result.add(oneResultGroup); } return result; } - private String joinReasons(List conflicts) { - StringBuilder result = new StringBuilder(); - result.append("("); - for (Conflict conflict : conflicts) { - result.append(conflict.reason); - result.append(", "); - } - result.delete(result.length() - 2, result.length()); - result.append(")"); - return result.toString(); + private boolean isInterfaceOrUnion(GraphQLType type) { + return type instanceof GraphQLInterfaceType || type instanceof GraphQLUnionType; } - @SuppressWarnings("SimplifiableIfStatement") - private boolean sameType(GraphQLType type1, GraphQLType type2) { - if (type1 == null || type2 == null) { - return true; + private Conflict requireSameNameAndArguments(ImmutableList path, Set fieldAndTypes) { + if (fieldAndTypes.size() <= 1) { + return null; } - return type1.equals(type2); - } + String name = null; + List arguments = null; + List fields = new ArrayList<>(); + for (FieldAndType fieldAndType : fieldAndTypes) { + Field field = fieldAndType.field; + fields.add(field); + if (name == null) { + name = field.getName(); + arguments = field.getArguments(); + continue; + } + if (!field.getName().equals(name)) { + String reason = i18n(FieldsConflict, "OverlappingFieldsCanBeMerged.differentFields", pathToString(path), name, field.getName()); + return new Conflict(reason, fields); + } + if (!sameArguments(field.getArguments(), arguments)) { + String reason = i18n(FieldsConflict, "OverlappingFieldsCanBeMerged.differentArgs", pathToString(path)); + return new Conflict(reason, fields); + } - @SuppressWarnings("SimplifiableIfStatement") - private boolean sameValue(Value value1, Value value2) { - if (value1 == null && value2 == null) { - return true; } - if (value1 == null) { - return false; - } - if (value2 == null) { - return false; - } - return new AstComparator().isEqual(value1, value2); + return null; + } + + private String pathToString(ImmutableList path) { + return String.join("/", path); } private boolean sameArguments(List arguments1, List arguments2) { @@ -266,7 +269,7 @@ private boolean sameArguments(List arguments1, List argument if (matchedArgument == null) { return false; } - if (!sameValue(argument.getValue(), matchedArgument.getValue())) { + if (!AstComparator.sameValue(argument.getValue(), matchedArgument.getValue())) { return false; } } @@ -282,101 +285,120 @@ private Argument findArgumentByName(String name, List arguments) { return null; } - private void collectFields(Map> fieldMap, SelectionSet selectionSet, GraphQLType parentType, Set visitedFragmentSpreads) { - - for (Selection selection : selectionSet.getSelections()) { - if (selection instanceof Field) { - collectFieldsForField(fieldMap, parentType, (Field) selection); - } else if (selection instanceof InlineFragment) { - collectFieldsForInlineFragment(fieldMap, visitedFragmentSpreads, parentType, (InlineFragment) selection); - - } else if (selection instanceof FragmentSpread) { - collectFieldsForFragmentSpread(fieldMap, visitedFragmentSpreads, (FragmentSpread) selection); + private Conflict requireSameOutputTypeShape(ImmutableList path, Set fieldAndTypes) { + if (fieldAndTypes.size() <= 1) { + return null; + } + List fields = new ArrayList<>(); + GraphQLType typeAOriginal = null; + for (FieldAndType fieldAndType : fieldAndTypes) { + fields.add(fieldAndType.field); + if (typeAOriginal == null) { + typeAOriginal = fieldAndType.graphQLType; + continue; + } + GraphQLType typeA = typeAOriginal; + GraphQLType typeB = fieldAndType.graphQLType; + while (true) { + if (isNonNull(typeA) || isNonNull(typeB)) { + if (isNullable(typeA) || isNullable(typeB)) { + String reason = i18n(FieldsConflict, "OverlappingFieldsCanBeMerged.differentNullability", pathToString(path)); + return new Conflict(reason, fields); + } + } + if (isList(typeA) || isList(typeB)) { + if (!isList(typeA) || !isList(typeB)) { + String reason = i18n(FieldsConflict, "OverlappingFieldsCanBeMerged.differentLists", pathToString(path)); + return new Conflict(reason, fields); + } + } + if (isNotWrapped(typeA) && isNotWrapped(typeB)) { + break; + } + typeA = unwrapOne(typeA); + typeB = unwrapOne(typeB); + } + if (isScalar(typeA) || isScalar(typeB)) { + if (!sameType(typeA, typeB)) { + return mkNotSameTypeError(path, fields, typeA, typeB); + } + } + if (isEnum(typeA) || isEnum(typeB)) { + if (!sameType(typeA, typeB)) { + return mkNotSameTypeError(path, fields, typeA, typeB); + } } } + return null; } - private void collectFieldsForFragmentSpread(Map> fieldMap, Set visitedFragmentSpreads, FragmentSpread fragmentSpread) { - FragmentDefinition fragment = getValidationContext().getFragment(fragmentSpread.getName()); - if (fragment == null) { - return; - } - if (visitedFragmentSpreads.contains(fragment.getName())) { - return; - } - visitedFragmentSpreads.add(fragment.getName()); - GraphQLType graphQLType = TypeFromAST.getTypeFromAST(getValidationContext().getSchema(), - fragment.getTypeCondition()); - collectFields(fieldMap, fragment.getSelectionSet(), graphQLType, visitedFragmentSpreads); + private Conflict mkNotSameTypeError(ImmutableList path, List fields, GraphQLType typeA, GraphQLType typeB) { + String name1 = typeA != null ? simplePrint(typeA) : "null"; + String name2 = typeB != null ? simplePrint(typeB) : "null"; + String reason = i18n(FieldsConflict, "OverlappingFieldsCanBeMerged.differentReturnTypes", pathToString(path), name1, name2); + return new Conflict(reason, fields); } - private void collectFieldsForInlineFragment(Map> fieldMap, Set visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment) { - GraphQLType graphQLType = inlineFragment.getTypeCondition() != null - ? TypeFromAST.getTypeFromAST(getValidationContext().getSchema(), inlineFragment.getTypeCondition()) - : parentType; - collectFields(fieldMap, inlineFragment.getSelectionSet(), graphQLType, visitedFragmentSpreads); + + private boolean sameType(GraphQLType type1, GraphQLType type2) { + if (type1 == null || type2 == null) { + return true; + } + return type1.equals(type2); } - private void collectFieldsForField(Map> fieldMap, GraphQLType parentType, Field field) { - String responseName = field.getAlias() != null ? field.getAlias() : field.getName(); - if (!fieldMap.containsKey(responseName)) { - fieldMap.put(responseName, new ArrayList<>()); + + private static class FieldAndType { + final Field field; + final GraphQLType graphQLType; + final GraphQLType parentType; + + public FieldAndType(Field field, GraphQLType graphQLType, GraphQLType parentType) { + this.field = field; + this.graphQLType = graphQLType; + this.parentType = parentType; } - GraphQLOutputType fieldType = null; - GraphQLUnmodifiedType unwrappedParent = unwrapAll(parentType); - if (unwrappedParent instanceof GraphQLFieldsContainer) { - GraphQLFieldsContainer fieldsContainer = (GraphQLFieldsContainer) unwrappedParent; - GraphQLFieldDefinition fieldDefinition = getVisibleFieldDefinition(fieldsContainer, field); - fieldType = fieldDefinition != null ? fieldDefinition.getType() : null; + + @Override + public String toString() { + return "FieldAndType{" + + "field=" + field + + ", graphQLType=" + graphQLType + + ", parentType=" + parentType + + '}'; } - fieldMap.get(responseName).add(new FieldAndType(field, fieldType, parentType)); - } - private GraphQLFieldDefinition getVisibleFieldDefinition(GraphQLFieldsContainer fieldsContainer, Field field) { - return getValidationContext().getSchema().getCodeRegistry().getFieldVisibility().getFieldDefinition(fieldsContainer, field.getName()); - } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } - private static class FieldPair { - final Field field1; - final Field field2; + FieldAndType that = (FieldAndType) o; - public FieldPair(Field field1, Field field2) { - this.field1 = field1; - this.field2 = field2; + return Objects.equals(field, that.field); + } + + @Override + public int hashCode() { + return Objects.hashCode(field); } } private static class Conflict { - final String responseName; final String reason; - final List fields = new ArrayList<>(); + final Set fields = new LinkedHashSet<>(); - public Conflict(String responseName, String reason, Field field1, Field field2) { - this.responseName = responseName; - this.reason = reason; - this.fields.add(field1); - this.fields.add(field2); - } - public Conflict(String responseName, String reason, List fields) { - this.responseName = responseName; + public Conflict(String reason, List fields) { this.reason = reason; this.fields.addAll(fields); } - } - private static class FieldAndType { - final Field field; - final GraphQLType graphQLType; - final GraphQLType parentType; - - public FieldAndType(Field field, GraphQLType graphQLType, GraphQLType parentType) { - this.field = field; - this.graphQLType = graphQLType; - this.parentType = parentType; - } - } } diff --git a/src/main/java/graphql/validation/rules/PossibleFragmentSpreads.java b/src/main/java/graphql/validation/rules/PossibleFragmentSpreads.java index bbda414cce..a14740e113 100644 --- a/src/main/java/graphql/validation/rules/PossibleFragmentSpreads.java +++ b/src/main/java/graphql/validation/rules/PossibleFragmentSpreads.java @@ -2,6 +2,7 @@ import graphql.Assert; +import graphql.Internal; import graphql.execution.TypeFromAST; import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; @@ -15,20 +16,20 @@ import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.Collections; import java.util.List; import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.validation.ValidationErrorType.InvalidFragmentType; +@Internal public class PossibleFragmentSpreads extends AbstractRule { public PossibleFragmentSpreads(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { super(validationContext, validationErrorCollector); } - @Override public void checkInlineFragment(InlineFragment inlineFragment) { GraphQLOutputType fragType = getValidationContext().getOutputType(); @@ -36,9 +37,8 @@ public void checkInlineFragment(InlineFragment inlineFragment) { if (fragType == null || parentType == null) return; if (isValidTargetCompositeType(fragType) && isValidTargetCompositeType(parentType) && !doTypesOverlap(fragType, parentType)) { - String message = String.format("Fragment cannot be spread here as objects of " + - "type %s can never be of type %s", parentType.getName(), simplePrint(fragType)); - addError(ValidationErrorType.InvalidFragmentType, inlineFragment.getSourceLocation(), message); + String message = i18n(InvalidFragmentType, "PossibleFragmentSpreads.inlineIncompatibleTypes", parentType.getName(), simplePrint(fragType)); + addError(InvalidFragmentType, inlineFragment.getSourceLocation(), message); } } @@ -51,9 +51,8 @@ public void checkFragmentSpread(FragmentSpread fragmentSpread) { if (typeCondition == null || parentType == null) return; if (isValidTargetCompositeType(typeCondition) && isValidTargetCompositeType(parentType) && !doTypesOverlap(typeCondition, parentType)) { - String message = String.format("Fragment %s cannot be spread here as objects of " + - "type %s can never be of type %s", fragmentSpread.getName(), parentType.getName(), simplePrint(typeCondition)); - addError(ValidationErrorType.InvalidFragmentType, fragmentSpread.getSourceLocation(), message); + String message = i18n(InvalidFragmentType, "PossibleFragmentSpreads.fragmentIncompatibleTypes", fragmentSpread.getName(), parentType.getName(), simplePrint(typeCondition)); + addError(InvalidFragmentType, fragmentSpread.getSourceLocation(), message); } } diff --git a/src/main/java/graphql/validation/rules/ProvidedNonNullArguments.java b/src/main/java/graphql/validation/rules/ProvidedNonNullArguments.java index 22b2175029..765e4ac276 100644 --- a/src/main/java/graphql/validation/rules/ProvidedNonNullArguments.java +++ b/src/main/java/graphql/validation/rules/ProvidedNonNullArguments.java @@ -1,24 +1,30 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Argument; import graphql.language.Directive; import graphql.language.Field; import graphql.language.Node; +import graphql.language.NullValue; +import graphql.language.Value; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLFieldDefinition; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import static graphql.schema.GraphQLTypeUtil.isNonNull; +import static graphql.validation.ValidationErrorType.MissingDirectiveArgument; +import static graphql.validation.ValidationErrorType.MissingFieldArgument; +import static graphql.validation.ValidationErrorType.NullValueForNonNullArgument; +@Internal public class ProvidedNonNullArguments extends AbstractRule { public ProvidedNonNullArguments(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -28,16 +34,26 @@ public ProvidedNonNullArguments(ValidationContext validationContext, ValidationE @Override public void checkField(Field field) { GraphQLFieldDefinition fieldDef = getValidationContext().getFieldDef(); - if (fieldDef == null) return; + if (fieldDef == null) { + return; + } Map argumentMap = argumentMap(field.getArguments()); for (GraphQLArgument graphQLArgument : fieldDef.getArguments()) { Argument argument = argumentMap.get(graphQLArgument.getName()); boolean nonNullType = isNonNull(graphQLArgument.getType()); - boolean noDefaultValue = graphQLArgument.getDefaultValue() == null; + boolean noDefaultValue = graphQLArgument.getArgumentDefaultValue().isNotSet(); if (argument == null && nonNullType && noDefaultValue) { - String message = String.format("Missing field argument %s", graphQLArgument.getName()); - addError(ValidationErrorType.MissingFieldArgument, field.getSourceLocation(), message); + String message = i18n(MissingFieldArgument, "ProvidedNonNullArguments.missingFieldArg", graphQLArgument.getName()); + addError(MissingFieldArgument, field.getSourceLocation(), message); + } + + if (argument != null) { + Value value = argument.getValue(); + if ((value == null || value instanceof NullValue) && nonNullType && noDefaultValue) { + String message = i18n(NullValueForNonNullArgument, "ProvidedNonNullArguments.nullValue", graphQLArgument.getName()); + addError(NullValueForNonNullArgument, field.getSourceLocation(), message); + } } } } @@ -46,16 +62,18 @@ public void checkField(Field field) { @Override public void checkDirective(Directive directive, List ancestors) { GraphQLDirective graphQLDirective = getValidationContext().getDirective(); - if (graphQLDirective == null) return; + if (graphQLDirective == null) { + return; + } Map argumentMap = argumentMap(directive.getArguments()); for (GraphQLArgument graphQLArgument : graphQLDirective.getArguments()) { Argument argument = argumentMap.get(graphQLArgument.getName()); boolean nonNullType = isNonNull(graphQLArgument.getType()); - boolean noDefaultValue = graphQLArgument.getDefaultValue() == null; + boolean noDefaultValue = graphQLArgument.getArgumentDefaultValue().isNotSet(); if (argument == null && nonNullType && noDefaultValue) { - String message = String.format("Missing directive argument %s", graphQLArgument.getName()); - addError(ValidationErrorType.MissingDirectiveArgument, directive.getSourceLocation(), message); + String message = i18n(MissingDirectiveArgument, "ProvidedNonNullArguments.missingDirectiveArg", graphQLArgument.getName()); + addError(MissingDirectiveArgument, directive.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/ScalarLeafs.java b/src/main/java/graphql/validation/rules/ScalarLeaves.java similarity index 50% rename from src/main/java/graphql/validation/rules/ScalarLeafs.java rename to src/main/java/graphql/validation/rules/ScalarLeaves.java index 3d49360c6c..072ba15080 100644 --- a/src/main/java/graphql/validation/rules/ScalarLeafs.java +++ b/src/main/java/graphql/validation/rules/ScalarLeaves.java @@ -1,19 +1,22 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Field; import graphql.schema.GraphQLOutputType; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import static graphql.schema.GraphQLTypeUtil.isLeaf; import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.validation.ValidationErrorType.SubselectionNotAllowed; +import static graphql.validation.ValidationErrorType.SubselectionRequired; -public class ScalarLeafs extends AbstractRule { +@Internal +public class ScalarLeaves extends AbstractRule { - public ScalarLeafs(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + public ScalarLeaves(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { super(validationContext, validationErrorCollector); } @@ -23,13 +26,13 @@ public void checkField(Field field) { if (type == null) return; if (isLeaf(type)) { if (field.getSelectionSet() != null) { - String message = String.format("Sub selection not allowed on leaf type %s of field %s", simplePrint(type), field.getName()); - addError(ValidationErrorType.SubSelectionNotAllowed, field.getSourceLocation(), message); + String message = i18n(SubselectionNotAllowed, "ScalarLeaves.subselectionOnLeaf", simplePrint(type), field.getName()); + addError(SubselectionNotAllowed, field.getSourceLocation(), message); } } else { if (field.getSelectionSet() == null) { - String message = String.format("Sub selection required for type %s of field %s", simplePrint(type), field.getName()); - addError(ValidationErrorType.SubSelectionRequired, field.getSourceLocation(), message); + String message = i18n(SubselectionRequired, "ScalarLeaves.subselectionRequired", simplePrint(type), field.getName()); + addError(SubselectionRequired, field.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/SubscriptionUniqueRootField.java b/src/main/java/graphql/validation/rules/SubscriptionUniqueRootField.java new file mode 100644 index 0000000000..0ded9ca632 --- /dev/null +++ b/src/main/java/graphql/validation/rules/SubscriptionUniqueRootField.java @@ -0,0 +1,72 @@ +package graphql.validation.rules; + +import graphql.Internal; +import graphql.execution.CoercedVariables; +import graphql.execution.FieldCollector; +import graphql.execution.FieldCollectorParameters; +import graphql.execution.MergedField; +import graphql.execution.MergedSelectionSet; +import graphql.language.NodeUtil; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.schema.GraphQLObjectType; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.List; + +import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION; +import static graphql.validation.ValidationErrorType.SubscriptionIntrospectionRootField; +import static graphql.validation.ValidationErrorType.SubscriptionMultipleRootFields; + + +/** + * A subscription operation must only have one root field + * A subscription operation's single root field must not be an introspection field + * https://spec.graphql.org/draft/#sec-Single-root-field + */ +@Internal +public class SubscriptionUniqueRootField extends AbstractRule { + private final FieldCollector fieldCollector = new FieldCollector(); + public SubscriptionUniqueRootField(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkOperationDefinition(OperationDefinition operationDef) { + if (operationDef.getOperation() == SUBSCRIPTION) { + + GraphQLObjectType subscriptionType = getValidationContext().getSchema().getSubscriptionType(); + + FieldCollectorParameters collectorParameters = FieldCollectorParameters.newParameters() + .schema(getValidationContext().getSchema()) + .fragments(NodeUtil.getFragmentsByName(getValidationContext().getDocument())) + .variables(CoercedVariables.emptyVariables().toMap()) + .objectType(subscriptionType) + .graphQLContext(getValidationContext().getGraphQLContext()) + .build(); + + MergedSelectionSet fields = fieldCollector.collectFields(collectorParameters, operationDef.getSelectionSet()); + List subscriptionSelections = operationDef.getSelectionSet().getSelections(); + + if (fields.size() > 1) { + String message = i18n(SubscriptionMultipleRootFields, "SubscriptionUniqueRootField.multipleRootFields", operationDef.getName()); + addError(SubscriptionMultipleRootFields, operationDef.getSourceLocation(), message); + } else { // Only one item in selection set, size == 1 + + MergedField mergedField = fields.getSubFieldsList().get(0); + + + if (isIntrospectionField(mergedField)) { + String message = i18n(SubscriptionIntrospectionRootField, "SubscriptionIntrospectionRootField.introspectionRootField", operationDef.getName(), mergedField.getName()); + addError(SubscriptionIntrospectionRootField, mergedField.getSingleField().getSourceLocation(), message); + } + } + } + } + + private boolean isIntrospectionField(MergedField field) { + return field.getName().startsWith("__"); + } +} diff --git a/src/main/java/graphql/validation/rules/UniqueArgumentNames.java b/src/main/java/graphql/validation/rules/UniqueArgumentNames.java new file mode 100644 index 0000000000..8122446a13 --- /dev/null +++ b/src/main/java/graphql/validation/rules/UniqueArgumentNames.java @@ -0,0 +1,66 @@ +package graphql.validation.rules; + +import com.google.common.collect.Sets; +import graphql.Internal; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.language.Field; +import graphql.language.Node; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.List; +import java.util.Set; + +import static graphql.validation.ValidationErrorType.DuplicateArgumentNames; + + +/** + * Unique argument names + * + * A GraphQL field or directive is only valid if all supplied arguments are uniquely named. + */ +@Internal +public class UniqueArgumentNames extends AbstractRule { + public UniqueArgumentNames(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkField(Field field) { + if (field.getArguments() == null || field.getArguments().size() <= 1) { + return; + } + + Set arguments = Sets.newHashSetWithExpectedSize(field.getArguments().size()); + + for (Argument argument : field.getArguments()) { + if (arguments.contains(argument.getName())) { + String message = i18n(DuplicateArgumentNames, "UniqueArgumentNames.uniqueArgument", argument.getName()); + addError(DuplicateArgumentNames, field.getSourceLocation(), message); + } else { + arguments.add(argument.getName()); + } + } + } + + @Override + public void checkDirective(Directive directive, List ancestors) { + if (directive.getArguments() == null || directive.getArguments().size() <= 1) { + return; + } + + Set arguments = Sets.newHashSetWithExpectedSize(directive.getArguments().size()); + + for (Argument argument : directive.getArguments()) { + if (arguments.contains(argument.getName())) { + String message = i18n(DuplicateArgumentNames, "UniqueArgumentNames.uniqueArgument", argument.getName()); + addError(DuplicateArgumentNames, directive.getSourceLocation(), message); + } else { + arguments.add(argument.getName()); + } + } + + } +} diff --git a/src/main/java/graphql/validation/rules/UniqueDirectiveNamesPerLocation.java b/src/main/java/graphql/validation/rules/UniqueDirectiveNamesPerLocation.java index 800ce9452a..0aa5eb68ac 100644 --- a/src/main/java/graphql/validation/rules/UniqueDirectiveNamesPerLocation.java +++ b/src/main/java/graphql/validation/rules/UniqueDirectiveNamesPerLocation.java @@ -1,5 +1,6 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.Directive; import graphql.language.Document; import graphql.language.Field; @@ -8,18 +9,22 @@ import graphql.language.InlineFragment; import graphql.language.Node; import graphql.language.OperationDefinition; +import graphql.schema.GraphQLDirective; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import static graphql.validation.ValidationErrorType.DuplicateDirectiveName; + + /** * https://facebook.github.io/graphql/June2018/#sec-Directives-Are-Unique-Per-Location */ +@Internal public class UniqueDirectiveNamesPerLocation extends AbstractRule { public UniqueDirectiveNamesPerLocation(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -57,20 +62,18 @@ public void checkOperationDefinition(OperationDefinition operationDefinition) { } private void checkDirectivesUniqueness(Node directivesContainer, List directives) { - Set names = new LinkedHashSet<>(); - directives.forEach(directive -> { + Set directiveNames = new LinkedHashSet<>(); + for (Directive directive : directives) { String name = directive.getName(); - if (names.contains(name)) { - addError(ValidationErrorType.DuplicateDirectiveName, - directive.getSourceLocation(), - duplicateDirectiveNameMessage(name, directivesContainer.getClass().getSimpleName())); + GraphQLDirective graphQLDirective = getValidationContext().getSchema().getDirective(name); + boolean nonRepeatable = graphQLDirective != null && graphQLDirective.isNonRepeatable(); + if (directiveNames.contains(name) && nonRepeatable) { + String message = i18n(DuplicateDirectiveName, "UniqueDirectiveNamesPerLocation.uniqueDirectives", name, directivesContainer.getClass().getSimpleName()); + addError(DuplicateDirectiveName, directive.getSourceLocation(), message); } else { - names.add(name); + directiveNames.add(name); } - }); + } } - private String duplicateDirectiveNameMessage(String directiveName, String location) { - return String.format("Directives must be uniquely named within a location. The directive '%s' used on a '%s' is not unique.", directiveName, location); - } } diff --git a/src/main/java/graphql/validation/rules/UniqueFragmentNames.java b/src/main/java/graphql/validation/rules/UniqueFragmentNames.java index 284f9cf029..34adb39854 100644 --- a/src/main/java/graphql/validation/rules/UniqueFragmentNames.java +++ b/src/main/java/graphql/validation/rules/UniqueFragmentNames.java @@ -1,15 +1,18 @@ package graphql.validation.rules; -import graphql.VisibleForTesting; +import graphql.Internal; import graphql.language.FragmentDefinition; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.LinkedHashSet; import java.util.Set; +import static graphql.validation.ValidationErrorType.DuplicateFragmentName; + + +@Internal public class UniqueFragmentNames extends AbstractRule { @@ -28,14 +31,10 @@ public void checkFragmentDefinition(FragmentDefinition fragmentDefinition) { } if (fragmentNames.contains(name)) { - addError(ValidationErrorType.DuplicateFragmentName, fragmentDefinition.getSourceLocation(), duplicateFragmentName(name)); + String message = i18n(DuplicateFragmentName, "UniqueFragmentNames.oneFragment", name); + addError(DuplicateFragmentName, fragmentDefinition.getSourceLocation(), message); } else { fragmentNames.add(name); } } - - @VisibleForTesting - static String duplicateFragmentName(String fragmentName) { - return String.format("There can be only one fragment named '%s'", fragmentName); - } } diff --git a/src/main/java/graphql/validation/rules/UniqueObjectFieldName.java b/src/main/java/graphql/validation/rules/UniqueObjectFieldName.java new file mode 100644 index 0000000000..25c7c2410d --- /dev/null +++ b/src/main/java/graphql/validation/rules/UniqueObjectFieldName.java @@ -0,0 +1,34 @@ +package graphql.validation.rules; + +import static graphql.validation.ValidationErrorType.UniqueObjectFieldName; + +import com.google.common.collect.Sets; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.Set; + +public class UniqueObjectFieldName extends AbstractRule { + public UniqueObjectFieldName(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkObjectValue(ObjectValue objectValue) { + Set fieldNames = Sets.newHashSetWithExpectedSize(objectValue.getObjectFields().size()); + + for (ObjectField field : objectValue.getObjectFields()) { + String fieldName = field.getName(); + + if (fieldNames.contains(fieldName)) { + String message = i18n(UniqueObjectFieldName, "UniqueObjectFieldName.duplicateFieldName", fieldName); + addError(UniqueObjectFieldName, objectValue.getSourceLocation(), message); + } else { + fieldNames.add(fieldName); + } + } + } +} diff --git a/src/main/java/graphql/validation/rules/UniqueOperationNames.java b/src/main/java/graphql/validation/rules/UniqueOperationNames.java index 77e54fbef2..f3eecf00d8 100644 --- a/src/main/java/graphql/validation/rules/UniqueOperationNames.java +++ b/src/main/java/graphql/validation/rules/UniqueOperationNames.java @@ -1,18 +1,21 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.OperationDefinition; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.LinkedHashSet; import java.util.Set; +import static graphql.validation.ValidationErrorType.DuplicateOperationName; + /** * A GraphQL document is only valid if all defined operations have unique names. - * http://facebook.github.io/graphql/October2016/#sec-Operation-Name-Uniqueness + * https://spec.graphql.org/October2021/#sec-Operation-Name-Uniqueness */ +@Internal public class UniqueOperationNames extends AbstractRule { private Set operationNames = new LinkedHashSet<>(); @@ -32,13 +35,10 @@ public void checkOperationDefinition(OperationDefinition operationDefinition) { } if (operationNames.contains(name)) { - addError(ValidationErrorType.DuplicateOperationName, operationDefinition.getSourceLocation(), duplicateOperationNameMessage(name)); + String message = i18n(DuplicateOperationName, "UniqueOperationNames.oneOperation", operationDefinition.getName()); + addError(DuplicateOperationName, operationDefinition.getSourceLocation(), message); } else { operationNames.add(name); } } - - static String duplicateOperationNameMessage(String definitionName) { - return String.format("There can be only one operation named '%s'", definitionName); - } } diff --git a/src/main/java/graphql/validation/rules/UniqueVariableNames.java b/src/main/java/graphql/validation/rules/UniqueVariableNames.java new file mode 100644 index 0000000000..e8706dc1e2 --- /dev/null +++ b/src/main/java/graphql/validation/rules/UniqueVariableNames.java @@ -0,0 +1,48 @@ +package graphql.validation.rules; + +import com.google.common.collect.Sets; +import graphql.Internal; +import graphql.language.OperationDefinition; +import graphql.language.VariableDefinition; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +import static graphql.validation.ValidationErrorType.DuplicateVariableName; + +/** + * Unique variable names + *

      + * A GraphQL operation is only valid if all its variables are uniquely named. + */ +@Internal +public class UniqueVariableNames extends AbstractRule { + + public UniqueVariableNames(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkOperationDefinition(OperationDefinition operationDefinition) { + List variableDefinitions = operationDefinition.getVariableDefinitions(); + if (variableDefinitions == null || variableDefinitions.size() <= 1) { + return; + } + + Set variableNameList = Sets.newLinkedHashSetWithExpectedSize(variableDefinitions.size()); + + + for (VariableDefinition variableDefinition : variableDefinitions) { + if (variableNameList.contains(variableDefinition.getName())) { + String message = i18n(DuplicateVariableName, "UniqueVariableNames.oneVariable", variableDefinition.getName()); + addError(DuplicateVariableName, variableDefinition.getSourceLocation(), message); + } else { + variableNameList.add(variableDefinition.getName()); + } + } + } +} diff --git a/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java b/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java index 05fd24707c..115b70e895 100644 --- a/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java +++ b/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java @@ -1,16 +1,16 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.VariableDefinition; import graphql.schema.GraphQLInputType; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; -import static graphql.schema.GraphQLTypeUtil.isNonNull; import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.validation.ValidationErrorType.BadValueForDefaultArg; - +@Internal public class VariableDefaultValuesOfCorrectType extends AbstractRule { @@ -18,19 +18,16 @@ public VariableDefaultValuesOfCorrectType(ValidationContext validationContext, V super(validationContext, validationErrorCollector); } - @Override public void checkVariableDefinition(VariableDefinition variableDefinition) { GraphQLInputType inputType = getValidationContext().getInputType(); - if (inputType == null) return; - if (isNonNull(inputType) && variableDefinition.getDefaultValue() != null) { - String message = "Missing value for non null type"; - addError(ValidationErrorType.DefaultForNonNullArgument, variableDefinition.getSourceLocation(), message); + if (inputType == null) { + return; } if (variableDefinition.getDefaultValue() != null - && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema())) { - String message = String.format("Bad default value %s for type %s", variableDefinition.getDefaultValue(), simplePrint(inputType)); - addError(ValidationErrorType.BadValueForDefaultArg, variableDefinition.getSourceLocation(), message); + && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale())) { + String message = i18n(BadValueForDefaultArg, "VariableDefaultValuesOfCorrectType.badDefault", variableDefinition.getDefaultValue(), simplePrint(inputType)); + addError(BadValueForDefaultArg, variableDefinition.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/VariableTypesMatchRule.java b/src/main/java/graphql/validation/rules/VariableTypesMatch.java similarity index 51% rename from src/main/java/graphql/validation/rules/VariableTypesMatchRule.java rename to src/main/java/graphql/validation/rules/VariableTypesMatch.java index 2ea0fe6b32..ef7c4069f4 100644 --- a/src/main/java/graphql/validation/rules/VariableTypesMatchRule.java +++ b/src/main/java/graphql/validation/rules/VariableTypesMatch.java @@ -1,32 +1,39 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.execution.TypeFromAST; +import graphql.execution.ValuesResolver; import graphql.language.OperationDefinition; +import graphql.language.Value; import graphql.language.VariableDefinition; import graphql.language.VariableReference; import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLType; import graphql.schema.GraphQLTypeUtil; +import graphql.schema.InputValueWithState; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Optional; -public class VariableTypesMatchRule extends AbstractRule { +import static graphql.validation.ValidationErrorType.VariableTypeMismatch; + +@Internal +public class VariableTypesMatch extends AbstractRule { final VariablesTypesMatcher variablesTypesMatcher; private Map variableDefinitionMap; - public VariableTypesMatchRule(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + public VariableTypesMatch(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { this(validationContext, validationErrorCollector, new VariablesTypesMatcher()); } - VariableTypesMatchRule(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector, VariablesTypesMatcher variablesTypesMatcher) { + VariableTypesMatch(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector, VariablesTypesMatcher variablesTypesMatcher) { super(validationContext, validationErrorCollector); setVisitFragmentSpreads(true); this.variablesTypesMatcher = variablesTypesMatcher; @@ -52,19 +59,26 @@ public void checkVariable(VariableReference variableReference) { if (variableType == null) { return; } - GraphQLInputType expectedType = getValidationContext().getInputType(); - if (expectedType == null) { - // we must have a unknown variable say to not have a known type + GraphQLInputType locationType = getValidationContext().getInputType(); + Optional locationDefault = Optional.ofNullable(getValidationContext().getDefaultValue()); + if (locationType == null) { + // we must have an unknown variable say to not have a known type return; } - if (!variablesTypesMatcher.doesVariableTypesMatch(variableType, variableDefinition.getDefaultValue(), expectedType)) { + Value locationDefaultValue = null; + if (locationDefault.isPresent() && locationDefault.get().isLiteral()) { + locationDefaultValue = (Value) locationDefault.get().getValue(); + } else if (locationDefault.isPresent() && locationDefault.get().isSet()) { + locationDefaultValue = ValuesResolver.valueToLiteral(locationDefault.get(), locationType, getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale()); + } + boolean variableDefMatches = variablesTypesMatcher.doesVariableTypesMatch(variableType, variableDefinition.getDefaultValue(), locationType, locationDefaultValue); + if (!variableDefMatches) { GraphQLType effectiveType = variablesTypesMatcher.effectiveType(variableType, variableDefinition.getDefaultValue()); - String message = String.format("Variable type '%s' doesn't match expected type '%s'", + String message = i18n(VariableTypeMismatch, "VariableTypesMatchRule.unexpectedType", + variableDefinition.getName(), GraphQLTypeUtil.simplePrint(effectiveType), - GraphQLTypeUtil.simplePrint(expectedType)); - addError(ValidationErrorType.VariableTypeMismatch, variableReference.getSourceLocation(), message); + GraphQLTypeUtil.simplePrint(locationType)); + addError(VariableTypeMismatch, variableReference.getSourceLocation(), message); } } - - } diff --git a/src/main/java/graphql/validation/rules/VariablesAreInputTypes.java b/src/main/java/graphql/validation/rules/VariablesAreInputTypes.java index b67008db3a..3962ffeef4 100644 --- a/src/main/java/graphql/validation/rules/VariablesAreInputTypes.java +++ b/src/main/java/graphql/validation/rules/VariablesAreInputTypes.java @@ -1,16 +1,18 @@ package graphql.validation.rules; +import graphql.Internal; import graphql.language.TypeName; import graphql.language.VariableDefinition; import graphql.schema.GraphQLType; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; -import graphql.validation.ValidationErrorType; import static graphql.schema.GraphQLTypeUtil.isInput; +import static graphql.validation.ValidationErrorType.NonInputTypeOnVariable; +@Internal public class VariablesAreInputTypes extends AbstractRule { public VariablesAreInputTypes(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { @@ -22,10 +24,12 @@ public void checkVariableDefinition(VariableDefinition variableDefinition) { TypeName unmodifiedAstType = getValidationUtil().getUnmodifiedType(variableDefinition.getType()); GraphQLType type = getValidationContext().getSchema().getType(unmodifiedAstType.getName()); - if (type == null) return; + if (type == null) { + return; + } if (!isInput(type)) { - String message = "Wrong type for a variable"; - addError(ValidationErrorType.NonInputTypeOnVariable, variableDefinition.getSourceLocation(), message); + String message = i18n(NonInputTypeOnVariable, "VariablesAreInputTypes.wrongType", variableDefinition.getName(), unmodifiedAstType.getName()); + addError(NonInputTypeOnVariable, variableDefinition.getSourceLocation(), message); } } } diff --git a/src/main/java/graphql/validation/rules/VariablesTypesMatcher.java b/src/main/java/graphql/validation/rules/VariablesTypesMatcher.java index 82500d69d7..0b47fcec78 100644 --- a/src/main/java/graphql/validation/rules/VariablesTypesMatcher.java +++ b/src/main/java/graphql/validation/rules/VariablesTypesMatcher.java @@ -2,23 +2,46 @@ import graphql.Internal; +import graphql.language.NullValue; import graphql.language.Value; import graphql.schema.GraphQLType; import static graphql.schema.GraphQLNonNull.nonNull; import static graphql.schema.GraphQLTypeUtil.isList; import static graphql.schema.GraphQLTypeUtil.isNonNull; +import static graphql.schema.GraphQLTypeUtil.unwrapNonNull; import static graphql.schema.GraphQLTypeUtil.unwrapOne; @Internal public class VariablesTypesMatcher { - public boolean doesVariableTypesMatch(GraphQLType variableType, Value variableDefaultValue, GraphQLType expectedType) { - return checkType(effectiveType(variableType, variableDefaultValue), expectedType); + /** + * This method and variable naming was inspired from the reference graphql-js implementation + * + * @param varType the variable type + * @param varDefaultValue the default value for the variable + * @param locationType the location type where the variable was encountered + * @param locationDefaultValue the default value for that location + * + * @return true if the variable matches ok + */ + public boolean doesVariableTypesMatch(GraphQLType varType, Value varDefaultValue, GraphQLType locationType, Value locationDefaultValue) { + if (isNonNull(locationType) && !isNonNull(varType)) { + boolean hasNonNullVariableDefaultValue = + varDefaultValue != null && !(varDefaultValue instanceof NullValue); + boolean hasLocationDefaultValue = locationDefaultValue != null; + if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) { + return false; + } + GraphQLType nullableLocationType = unwrapNonNull(locationType); + return checkType(varType, nullableLocationType); + } + return checkType(varType, locationType); } - public GraphQLType effectiveType(GraphQLType variableType, Value defaultValue) { - if (defaultValue == null) { + + public GraphQLType effectiveType(GraphQLType variableType, Value defaultValue) { + if (defaultValue == null || defaultValue instanceof NullValue) { return variableType; } if (isNonNull(variableType)) { diff --git a/src/main/resources/i18n/Execution.properties b/src/main/resources/i18n/Execution.properties new file mode 100644 index 0000000000..396c87025f --- /dev/null +++ b/src/main/resources/i18n/Execution.properties @@ -0,0 +1,8 @@ +# +# This resource bundle is used for the query execution code to produce i18n messages +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +Execution.handleOneOfNotOneFieldError=Exactly one key must be specified for OneOf type ''{0}''. +Execution.handleOneOfValueIsNullError=OneOf type field ''{0}'' must be non-null. diff --git a/src/main/resources/i18n/Execution_de.properties b/src/main/resources/i18n/Execution_de.properties new file mode 100644 index 0000000000..dd194540c7 --- /dev/null +++ b/src/main/resources/i18n/Execution_de.properties @@ -0,0 +1,8 @@ +# +# This resource bundle is used for the query execution code to produce i18n messages +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +Execution.handleOneOfNotOneFieldError=Es muss genau ein Key angegeben werden für OneOf Typ ''{0}''. +Execution.handleOneOfValueIsNullError=OneOf type field ''{0}'' darf nicht null sein. diff --git a/src/main/resources/i18n/Execution_nl.properties b/src/main/resources/i18n/Execution_nl.properties new file mode 100644 index 0000000000..eee9f69ea0 --- /dev/null +++ b/src/main/resources/i18n/Execution_nl.properties @@ -0,0 +1,8 @@ +# +# This resource bundle is used for the query execution code to produce i18n messages +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +Execution.handleOneOfNotOneFieldError=Er moet exact één sleutel aangegeven worden voor OneOf type ''{0}''. +Execution.handleOneOfValueIsNullError=OneOf type field ''{0}'' mag niet null zijn. diff --git a/src/main/resources/i18n/General.properties b/src/main/resources/i18n/General.properties new file mode 100644 index 0000000000..c4022715c4 --- /dev/null +++ b/src/main/resources/i18n/General.properties @@ -0,0 +1,6 @@ +# +# This resource bundle is used for the general code to produce i18n messages +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# \ No newline at end of file diff --git a/src/main/resources/i18n/Parsing.properties b/src/main/resources/i18n/Parsing.properties new file mode 100644 index 0000000000..474fba1545 --- /dev/null +++ b/src/main/resources/i18n/Parsing.properties @@ -0,0 +1,29 @@ +# +# This resource bundle is used for the query parsing code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +InvalidSyntax.noMessage=Invalid syntax at line {0} column {1} +InvalidSyntax.full=Invalid syntax with ANTLR error ''{0}'' at line {1} column {2} + +InvalidSyntaxBail.noToken=Invalid syntax at line {0} column {1} +InvalidSyntaxBail.full=Invalid syntax with offending token ''{0}'' at line {1} column {2} +# +InvalidSyntaxMoreTokens.noMessage=Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token at line {0} column {1} +InvalidSyntaxMoreTokens.full=Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token ''{0}'' at line {1} column {2} +# +ParseCancelled.full=More than {0} ''{1}'' tokens have been presented. To prevent Denial Of Service attacks, parsing has been cancelled. +ParseCancelled.tooDeep=More than {0} deep ''{1}'' rules have been entered. To prevent Denial Of Service attacks, parsing has been cancelled. +ParseCancelled.tooManyChars=More than {0} characters have been presented. To prevent Denial Of Service attacks, parsing has been cancelled. +# +InvalidUnicode.trailingLeadingSurrogate=Invalid unicode encountered. Trailing surrogate must be preceded with a leading surrogate. Offending token ''{0}'' at line {1} column {2} +InvalidUnicode.leadingTrailingSurrogate=Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token ''{0}'' at line {1} column {2} +InvalidUnicode.invalidCodePoint=Invalid unicode encountered. Not a valid code point. Offending token ''{0}'' at line {1} column {2} +InvalidUnicode.incorrectEscape=Invalid unicode encountered. Incorrectly formatted escape sequence. Offending token ''{0}'' at line {1} column {2} diff --git a/src/main/resources/i18n/Parsing_de.properties b/src/main/resources/i18n/Parsing_de.properties new file mode 100644 index 0000000000..55127ff689 --- /dev/null +++ b/src/main/resources/i18n/Parsing_de.properties @@ -0,0 +1,29 @@ +# +# This resource bundle is used for the query parsing code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +InvalidSyntax.noMessage=Ungültige Syntax in Zeile {0} Spalte {1} +InvalidSyntax.full=Ungültige Syntax, ANTLR-Fehler ''{0}'' in Zeile {1} Spalte {2} + +InvalidSyntaxBail.noToken=Ungültige Syntax in Zeile {0} Spalte {1} +InvalidSyntaxBail.full=Ungültige Syntax wegen des ungültigen Tokens ''{0}'' in Zeile {1} Spalte {2} +# +InvalidSyntaxMoreTokens.noMessage=Es wurde eine ungültige Syntax festgestellt. Es gibt zusätzliche Token im Text, die nicht konsumiert wurden. Ungültiges Token in Zeile {0} Spalte {1} +InvalidSyntaxMoreTokens.full=Es wurde eine ungültige Syntax festgestellt. Es gibt zusätzliche Token im Text, die nicht konsumiert wurden. Ungültiges Token ''{0}'' in Zeile {1} Spalte {2} +# +ParseCancelled.full=Es wurden mehr als {0} ''{1}'' Token präsentiert. Um Denial-of-Service-Angriffe zu verhindern, wurde das Parsing abgebrochen. +ParseCancelled.tooDeep=Es wurden mehr als {0} tief ''{1}'' Regeln ausgeführt. Um Denial-of-Service-Angriffe zu verhindern, wurde das Parsing abgebrochen. +ParseCancelled.tooManyChars=Es wurden mehr als {0} Zeichen vorgelegt. Um Denial-of-Service-Angriffe zu verhindern, wurde das Parsing abgebrochen. +# +InvalidUnicode.trailingLeadingSurrogate=Ungültiger Unicode gefunden. Trailing surrogate muss ein leading surrogate vorangestellt werden. Ungültiges Token ''{0}'' in Zeile {1} Spalte {2} +InvalidUnicode.leadingTrailingSurrogate=Ungültiger Unicode gefunden. Auf ein leading surrogate muss ein trailing surrogate folgen. Ungültiges Token ''{0}'' in Zeile {1} Spalte {2} +InvalidUnicode.invalidCodePoint=Ungültiger Unicode gefunden. Kein gültiger code point. Ungültiges Token ''{0}'' in Zeile {1} Spalte {2} +InvalidUnicode.incorrectEscape=Ungültiger Unicode gefunden. Falsch formatierte Escape-Sequenz. Ungültiges Token ''{0}'' in Zeile {1} Spalte {2} diff --git a/src/main/resources/i18n/Parsing_nl.properties b/src/main/resources/i18n/Parsing_nl.properties new file mode 100644 index 0000000000..cfd8457825 --- /dev/null +++ b/src/main/resources/i18n/Parsing_nl.properties @@ -0,0 +1,28 @@ +# +# This resource bundle is used for the query parsing code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +InvalidSyntax.noMessage=Ongeldige syntaxis op lijn {0} kolom {1} +InvalidSyntax.full=Ongeldige syntaxis, ANTLR foutmelding ''{0}'' op lijn {1} kolom {2} +InvalidSyntaxBail.noToken=Ongeldige syntaxis op lijn {0} kolom {1} +InvalidSyntaxBail.full=Ongeldige syntaxis wegens ongeldige token ''{0}'' op lijn {1} kolom {2} +# +InvalidSyntaxMoreTokens.noMessage=Ongeldige syntaxis tegengekomen. Er zijn tokens in de tekst die niet zijn verwerkt. Ongeldige token op lijn {0} kolom {1} +InvalidSyntaxMoreTokens.full=Ongeldige syntaxis tegengekomen. Er zijn tokens in de tekst die niet zijn verwerkt. Ongeldige token ''{0}'' op lijn {1} kolom {2} +# +ParseCancelled.full=Meer dan {0} ''{1}'' tokens zijn gepresenteerd. Om een DDoS-aanval te voorkomen is het parsen gestopt. +ParseCancelled.tooDeep=Meer dan {0} diep, ''{1}'' regels zijn uitgevoerd. Om een DDoS-aanval te voorkomen is het parsen gestopt. +ParseCancelled.tooManyChars=Meer dan {0} tekens zijn voorgelegd. Om een DDoS-aanval te voorkomen is het parsen gestopt. +# +InvalidUnicode.trailingLeadingSurrogate=Ongeldige Unicode tegengekomen. Trailing surrogate moet vooropgaan aan een leading surrogate. Ongeldige token ''{0}'' op lijn {1} kolom {2} +InvalidUnicode.leadingTrailingSurrogate=Ongeldige Unicode tegengekomen. Leading surrogate moet voorafgaan aan een trailing surrogate. Ongeldige token ''{0}'' op lijn {1} kolom {2} +InvalidUnicode.invalidCodePoint=Ongeldige Unicode tegengekomen. Ongeldig codepunt. Ongeldige token ''{0}'' op lijn {1} kolom {2} +InvalidUnicode.incorrectEscape=Ongeldige Unicode tegengekomen. Ongeldige geformatteerde escape-sequentie. Ongeldige token ''{0}'' op lijn {1} kolom {2}} diff --git a/src/main/resources/i18n/Scalars.properties b/src/main/resources/i18n/Scalars.properties new file mode 100644 index 0000000000..39fc6b4105 --- /dev/null +++ b/src/main/resources/i18n/Scalars.properties @@ -0,0 +1,33 @@ +# +# This resource bundle is used for the scalar code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +Scalar.unexpectedAstType=Expected an AST type of ''{0}'' but it was a ''{1}'' +# +Enum.badInput=Invalid input for enum ''{0}''. Unknown value ''{1}'' +Enum.badName=Invalid input for enum ''{0}''. No value found for name ''{1}'' +Enum.unallowableValue=Literal value not in allowable values for enum ''{0}'' - ''{1}'' +# +Int.notInt=Expected a value that can be converted to type ''Int'' but it was a ''{0}'' +Int.outsideRange=Expected value to be in the integer range, but it was a ''{0}'' +# +ID.notId=Expected a value that can be converted to type ''ID'' but it was a ''{0}'' +ID.unexpectedAstType=Expected an AST type of ''IntValue'' or ''StringValue'' but it was a ''{0}'' +# +Float.notFloat=Expected a value that can be converted to type ''Float'' but it was a ''{0}'' +Float.unexpectedAstType=Expected an AST type of ''IntValue'' or ''FloatValue'' but it was a ''{0}'' +Float.unexpectedRawValueType=Expected a Number input, but it was a ''{0}'' +# +Boolean.notBoolean=Expected a value that can be converted to type ''Boolean'' but it was a ''{0}'' +Boolean.unexpectedAstType=Expected an AST type of ''BooleanValue'' but it was a ''{0}'' +Boolean.unexpectedRawValueType=Expected a Boolean input, but it was a ''{0}'' +# +String.unexpectedRawValueType=Expected a String input, but it was a ''{0}'' diff --git a/src/main/resources/i18n/Scalars_de.properties b/src/main/resources/i18n/Scalars_de.properties new file mode 100644 index 0000000000..242046369b --- /dev/null +++ b/src/main/resources/i18n/Scalars_de.properties @@ -0,0 +1,33 @@ +# +# This resource bundle is used for the scalar code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +Scalar.unexpectedAstType=Erwartet wurde ein AST type von ''{0}'', aber es war ein ''{1}'' +# +Enum.badInput=Ungültige Eingabe für enum ''{0}''. Unbekannter Wert ''{1}'' +Enum.badName=Ungültige Eingabe für enum ''{0}''. Kein Wert für den Namen ''{1}'' gefunden +Enum.unallowableValue=Literal nicht in den zulässigen Werten für enum ''{0}'' - ''{1}'' +# +Int.notInt=Erwartet wurde ein Wert, der in den Typ ''Int'' konvertiert werden kann, aber es war ein ''{0}'' +Int.outsideRange=Erwarteter Wert im Integer-Bereich, aber es war ein ''{0}'' +# +ID.notId=Erwartet wurde ein Wert, der in den Typ ''ID'' umgewandelt werden kann, aber es war ein ''{0}'' +ID.unexpectedAstType=Erwartet wurde ein AST type von ''IntValue'' oder ''StringValue'', aber es war ein ''{0}'' +# +Float.notFloat=Erwartet wurde ein Wert, der in den Typ ''Float'' konvertiert werden kann, aber es war ein ''{0}'' +Float.unexpectedAstType=Erwartet wurde ein AST type von ''IntValue'' oder ''FloatValue'', aber es war ein ''{0}'' +Float.unexpectedRawValueType=Erwartet wurde eine Number-Eingabe, aber es war ein ''{0}'' +# +Boolean.notBoolean=Erwartet wurde ein Wert, der in den Typ ''Boolean'' konvertiert werden kann, aber es war ein ''{0}'' +Boolean.unexpectedAstType=Erwartet wurde ein AST type ''BooleanValue'', aber es war ein ''{0}'' +Boolean.unexpectedRawValueType=Erwartet wurde eine Boolean-Eingabe, aber es war ein ''{0}'' +# +String.unexpectedRawValueType=Erwartet wurde eine String-Eingabe, aber es war ein ''{0}'' diff --git a/src/main/resources/i18n/Scalars_nl.properties b/src/main/resources/i18n/Scalars_nl.properties new file mode 100644 index 0000000000..9878c1716f --- /dev/null +++ b/src/main/resources/i18n/Scalars_nl.properties @@ -0,0 +1,36 @@ +# +# This resource bundle is used for the scalar code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +Scalar.unexpectedAstType=Verwacht werd een AST-type ''{0}'', maar het was een ''{1}'' +# +Enum.badInput=Ongeldige invoer voor enum ''{0}''. Onbekende waarde ''{1}'' +Enum.badName=Ongeldige invoer voor enum ''{0}''. Geen waarde gevonden voor naam ''{1}'' +Enum.unallowableValue=Literal is niet een toegestane waarde voor enum ''{0}'' - ''{1}'' +# +Int.notInt=Verwacht werd een waarde die in ''Int'' veranderd kon worden, maar het was een ''{0}'' +Int.outsideRange=Verwacht werd een waarde die binnen het integerbereik valt, maar het was een ''{0}'' +# +ID.notId=Verwacht werd een waarde die in ''ID'' veranderd kon worden, maar het was een ''{0}'' +ID.unexpectedAstType=Verwacht werd een AST-type ''IntValue'' of ''StringValue'', maar het was een ''{0}'' +# +Float.notFloat=Verwacht werd een waarde die in ''Float'' veranderd kon worden, maar het was een ''{0}'' +Float.unexpectedAstType=Verwacht werd een AST-type ''IntValue'' of ''FloatValue'', maar het was een ''{0}'' +# TODO: To be translated into Dutch +Float.unexpectedRawValueType=Expected a Number input, but it was a ''{0}'' +# +Boolean.notBoolean=Verwacht werd een waarde die in ''Boolean'' veranderd kon worden, maar het was een ''{0}'' +Boolean.unexpectedAstType=Verwacht werd een AST-type ''BooleanValue'', maar het was een ''{0}'' +# TODO: To be translated into Dutch +Boolean.unexpectedRawValueType=Expected a Boolean input, but it was a ''{0}'' +# +# TODO: To be translated into Dutch +String.unexpectedRawValueType=Expected a String input, but it was a ''{0}'' diff --git a/src/main/resources/i18n/Validation.properties b/src/main/resources/i18n/Validation.properties new file mode 100644 index 0000000000..a9403bea5b --- /dev/null +++ b/src/main/resources/i18n/Validation.properties @@ -0,0 +1,113 @@ +# +# This resource bundle is used for the query validation code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# + +DeferDirective.notAllowedOperationRootLevelMutation=Validation error ({0}) : Defer directive cannot be used on root mutation type ''{1}'' +DeferDirective.notAllowedOperationRootLevelSubscription=Validation error ({0}) : Defer directive cannot be used on root subscription type ''{1}'' +DeferDirective.labelMustBeStaticString= Validation error ({0}) : Defer directive?s label argument must be a static string +IncrementalDirective.notAllowedSubscriptionOperation=Validation error ({0}) : Directive ''{1}'' is not allowed to be used on operation subscription + +IncrementalDirective.uniqueArgument=Validation error ({0}) : There can be only one argument named ''{1}'' for directive defer/Stream +# +ExecutableDefinitions.notExecutableType=Validation error ({0}) : Type ''{1}'' definition is not executable +ExecutableDefinitions.notExecutableSchema=Validation error ({0}) : Schema definition is not executable +ExecutableDefinitions.notExecutableDirective=Validation error ({0}) : Directive ''{1}'' definition is not executable +ExecutableDefinitions.notExecutableDefinition=Validation error ({0}) : Provided definition is not executable +# +FieldsOnCorrectType.unknownField=Validation error ({0}) : Field ''{1}'' in type ''{2}'' is undefined +# +FragmentsOnCompositeType.invalidInlineTypeCondition=Validation error ({0}) : Inline fragment type condition is invalid, must be on Object/Interface/Union +FragmentsOnCompositeType.invalidFragmentTypeCondition=Validation error ({0}) : Fragment type condition is invalid, must be on Object/Interface/Union +# +KnownArgumentNames.unknownDirectiveArg=Validation error ({0}) : Unknown directive argument ''{1}'' +KnownArgumentNames.unknownFieldArg=Validation error ({0}) : Unknown field argument ''{1}'' +# +KnownDirectives.unknownDirective=Validation error ({0}) : Unknown directive ''{1}'' +KnownDirectives.directiveNotAllowed=Validation error ({0}) : Directive ''{1}'' not allowed here +# +KnownFragmentNames.undefinedFragment=Validation error ({0}) : Undefined fragment ''{1}'' +# +KnownTypeNames.unknownType=Validation error ({0}) : Unknown type ''{1}'' +# +KnownOperationTypes.noOperation=Validation error ({0}): The ''{1}'' operation is not supported by the schema +# +LoneAnonymousOperation.withOthers=Validation error ({0}) : Anonymous operation with other operations +LoneAnonymousOperation.namedOperation=Validation error ({0}) : Operation ''{1}'' is following anonymous operation +# +NoFragmentCycles.cyclesNotAllowed=Validation error ({0}) : Fragment cycles not allowed +# +NoUndefinedVariables.undefinedVariable=Validation error ({0}) : Undefined variable ''{1}'' +# +NoUnusedFragments.unusedFragments=Validation error ({0}) : Unused fragment ''{1}'' +# +NoUnusedVariables.unusedVariable=Validation error ({0}) : Unused variable ''{1}'' +# +OverlappingFieldsCanBeMerged.differentFields=Validation error ({0}) : ''{1}'' : ''{2}'' and ''{3}'' are different fields +OverlappingFieldsCanBeMerged.differentArgs=Validation error ({0}) : ''{1}'' : fields have different arguments +OverlappingFieldsCanBeMerged.differentNullability=Validation error ({0}) : ''{1}'' : fields have different nullability shapes +OverlappingFieldsCanBeMerged.differentLists=Validation error ({0}) : ''{1}'' : fields have different list shapes +OverlappingFieldsCanBeMerged.differentReturnTypes=Validation error ({0}) : ''{1}'' : returns different types ''{2}'' and ''{3}'' +# +PossibleFragmentSpreads.inlineIncompatibleTypes=Validation error ({0}) : Fragment cannot be spread here as objects of type ''{1}'' can never be of type ''{2}'' +PossibleFragmentSpreads.fragmentIncompatibleTypes=Validation error ({0}) : Fragment ''{1}'' cannot be spread here as objects of type ''{2}'' can never be of type ''{3}'' +# +ProvidedNonNullArguments.missingFieldArg=Validation error ({0}) : Missing field argument ''{1}'' +ProvidedNonNullArguments.missingDirectiveArg=Validation error ({0}) : Missing directive argument ''{1}'' +ProvidedNonNullArguments.nullValue=Validation error ({0}) : Null value for non-null field argument ''{1}'' +# +ScalarLeaves.subselectionOnLeaf=Validation error ({0}) : Subselection not allowed on leaf type ''{1}'' of field ''{2}'' +ScalarLeaves.subselectionRequired=Validation error ({0}) : Subselection required for type ''{1}'' of field ''{2}'' +# +SubscriptionUniqueRootField.multipleRootFields=Validation error ({0}) : Subscription operation ''{1}'' must have exactly one root field +SubscriptionUniqueRootField.multipleRootFieldsWithFragment=Validation error ({0}) : Subscription operation ''{1}'' must have exactly one root field with fragments +SubscriptionIntrospectionRootField.introspectionRootField=Validation error ({0}) : Subscription operation ''{1}'' root field ''{2}'' cannot be an introspection field +SubscriptionIntrospectionRootField.introspectionRootFieldWithFragment=Validation error ({0}) : Subscription operation ''{1}'' fragment root field ''{2}'' cannot be an introspection field +# +UniqueArgumentNames.uniqueArgument=Validation error ({0}) : There can be only one argument named ''{1}'' +# +UniqueDirectiveNamesPerLocation.uniqueDirectives=Validation error ({0}) : Non repeatable directives must be uniquely named within a location. The directive ''{1}'' used on a ''{2}'' is not unique +# +UniqueFragmentNames.oneFragment=Validation error ({0}) : There can be only one fragment named ''{1}'' +# +UniqueOperationNames.oneOperation=Validation error ({0}) : There can be only one operation named ''{1}'' +# +UniqueVariableNames.oneVariable=Validation error ({0}) : There can be only one variable named ''{1}'' +# +VariableDefaultValuesOfCorrectType.badDefault=Validation error ({0}) : Bad default value ''{1}'' for type ''{2}'' +# +VariablesAreInputTypes.wrongType=Validation error ({0}) : Input variable ''{1}'' type ''{2}'' is not an input type +# +VariableTypesMatchRule.unexpectedType=Validation error ({0}) : Variable ''{1}'' of type ''{2}'' used in position expecting type ''{3}'' +# +UniqueObjectFieldName.duplicateFieldName=Validation Error ({0}) : There can be only one field named ''{1}'' +# +# These are used but IDEA cant find them easily as being called +# +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleNullError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' must not be null +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleScalarError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' is not a valid ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleScalarErrorCustomMessage=Validation error ({0}) : argument ''{1}'' with value ''{2}'' is not a valid ''{3}'' - {4} +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleEnumError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' is not a valid ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleEnumErrorCustomMessage=Validation error ({0}) : argument ''{1}'' with value ''{2}'' is not a valid ''{3}'' - {4} +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleNotObjectError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' must be an object type +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleMissingFieldsError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' is missing required fields ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleExtraFieldError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' contains a field not in ''{3}'': ''{4}'' +# suppress inspection "UnusedProperty" +# suppress inspection "UnusedMessageFormatParameter" +ArgumentValidationUtil.extraOneOfFieldsError=Validation error ({0}) : Exactly one key must be specified for OneOf type ''{3}''. \ No newline at end of file diff --git a/src/main/resources/i18n/Validation_de.properties b/src/main/resources/i18n/Validation_de.properties new file mode 100644 index 0000000000..7823c9d511 --- /dev/null +++ b/src/main/resources/i18n/Validation_de.properties @@ -0,0 +1,102 @@ +# +# This resource bundle is used for the query validation code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +ExecutableDefinitions.notExecutableType=Validierungsfehler ({0}) : Type definition ''{1}'' ist nicht ausführbar +ExecutableDefinitions.notExecutableSchema=Validierungsfehler ({0}) : Schema definition ist nicht ausführbar +ExecutableDefinitions.notExecutableDirective=Validierungsfehler ({0}) : Directive definition ''{1}'' ist nicht ausführbar +ExecutableDefinitions.notExecutableDefinition=Validierungsfehler ({0}) : Die angegebene Definition ist nicht ausführbar +# +FieldsOnCorrectType.unknownField=Validierungsfehler ({0}) : Feld ''{1}'' vom Typ ''{2}'' ist nicht definiert +# +FragmentsOnCompositeType.invalidInlineTypeCondition=Validierungsfehler ({0}) : Inline fragment type condition ist ungültig, muss auf Object/Interface/Union stehen +FragmentsOnCompositeType.invalidFragmentTypeCondition=Validierungsfehler ({0}) : Fragment type condition ist ungültig, muss auf Object/Interface/Union stehen +# +KnownArgumentNames.unknownDirectiveArg=Validierungsfehler ({0}) : Unbekanntes directive argument ''{1}'' +KnownArgumentNames.unknownFieldArg=Validierungsfehler ({0}) : Unbekanntes field argument ''{1}'' +# +KnownDirectives.unknownDirective=Validierungsfehler ({0}) : Unbekannte directive ''{1}'' +KnownDirectives.directiveNotAllowed=Validierungsfehler ({0}) : Directive ''{1}'' ist hier nicht erlaubt +# +KnownFragmentNames.undefinedFragment=Validierungsfehler ({0}) : Undefiniertes Fragment ''{1}'' +# +KnownTypeNames.unknownType=Validierungsfehler ({0}) : Unbekannter Typ ''{1}'' +# +KnownOperationTypes.noOperation=Validierungsfehler ({0}): ''{1}'' Operation wird vom Schema nicht unterstützt +# +LoneAnonymousOperation.withOthers=Validierungsfehler ({0}) : Anonyme Operation mit anderen Operationen +LoneAnonymousOperation.namedOperation=Validierungsfehler ({0}) : Operation ''{1}'' folgt der anonymen Operation +# +NoFragmentCycles.cyclesNotAllowed=Validierungsfehler ({0}) : Fragment cycles nicht erlaubt +# +NoUndefinedVariables.undefinedVariable=Validierungsfehler ({0}) : Undefinierte Variable ''{1}'' +# +NoUnusedFragments.unusedFragments=Validierungsfehler ({0}) : Unbenutztes Fragment ''{1}'' +# +NoUnusedVariables.unusedVariable=Validierungsfehler ({0}) : Unbenutzte Variable ''{1}'' +# +OverlappingFieldsCanBeMerged.differentFields=Validierungsfehler ({0}) : ''{1}'' : ''{2}'' und ''{3}'' sind unterschiedliche Felder +OverlappingFieldsCanBeMerged.differentArgs=Validierungsfehler ({0}) : ''{1}'' : Felder haben unterschiedliche Argumente +OverlappingFieldsCanBeMerged.differentNullability=Validierungsfehler ({0}) : ''{1}'' : Felder haben unterschiedliche nullability shapes +OverlappingFieldsCanBeMerged.differentLists=Validierungsfehler ({0}) : ''{1}'' : Felder haben unterschiedliche list shapes +OverlappingFieldsCanBeMerged.differentReturnTypes=Validierungsfehler ({0}) : ''{1}'' : gibt verschiedene Typen ''{2}'' und ''{3}'' zurück +# +PossibleFragmentSpreads.inlineIncompatibleTypes=Validierungsfehler ({0}) : Fragment kann hier nicht verbreitet werden, da object vom Typ ''{1}'' niemals vom Typ ''{2}'' sein können +PossibleFragmentSpreads.fragmentIncompatibleTypes=Validierungsfehler ({0}) : Fragment ''{1}'' kann hier nicht verbreitet werden, da object vom Typ ''{2}'' niemals vom Typ ''{3}'' sein können +# +ProvidedNonNullArguments.missingFieldArg=Validierungsfehler ({0}) : Fehlendes field argument ''{1}'' +ProvidedNonNullArguments.missingDirectiveArg=Validierungsfehler ({0}) : Fehlendes directive argument ''{1}'' +ProvidedNonNullArguments.nullValue=Validierungsfehler ({0}) : Nullwert für non-null field argument ''{1}'' +# +ScalarLeaves.subselectionOnLeaf=Validierungsfehler ({0}) : Unterauswahl für Blatttyp ''{1}'' von Feld ''{2}'' nicht zulässig +ScalarLeaves.subselectionRequired=Validierungsfehler ({0}) : Unterauswahl erforderlich für Typ ''{1}'' des Feldes ''{2}'' +# +SubscriptionUniqueRootField.multipleRootFields=Validierungsfehler ({0}) : Subscription operation ''{1}'' muss genau ein root field haben +SubscriptionUniqueRootField.multipleRootFieldsWithFragment=Validierungsfehler ({0}) : Subscription operation ''{1}'' muss genau ein root field mit Fragmenten haben +SubscriptionIntrospectionRootField.introspectionRootField=Validierungsfehler ({0}) : Subscription operation ''{1}'' root field ''{2}'' kann kein introspection field sein +SubscriptionIntrospectionRootField.introspectionRootFieldWithFragment=Validierungsfehler ({0}) : Subscription operation ''{1}'' fragment root field ''{2}'' kann kein introspection field sein +# +UniqueArgumentNames.uniqueArgument=Validierungsfehler ({0}) : Es kann nur ein Argument namens ''{1}'' geben +# +UniqueDirectiveNamesPerLocation.uniqueDirectives=Validierungsfehler ({0}) : Nicht wiederholbare directive müssen innerhalb einer Lokation eindeutig benannt werden. Directive ''{1}'', die auf einem ''{2}'' verwendet wird, ist nicht eindeutig +# +UniqueFragmentNames.oneFragment=Validierungsfehler ({0}) : Es kann nur ein Fragment namens ''{1}'' geben +# +UniqueOperationNames.oneOperation=Validierungsfehler ({0}) : Es kann nur eine Operation namens ''{1}'' geben +# +UniqueVariableNames.oneVariable=Validierungsfehler ({0}) : Es kann nur eine Variable namens ''{1}'' geben +# +VariableDefaultValuesOfCorrectType.badDefault=Validierungsfehler ({0}) : Ungültiger Standardwert ''{1}'' für Typ ''{2}'' +# +VariablesAreInputTypes.wrongType=Validierungsfehler ({0}) : Eingabevariable ''{1}'' Typ ''{2}'' ist kein Eingabetyp +# +VariableTypesMatchRule.unexpectedType=Validierungsfehler ({0}) : Variable ''{1}'' vom Typ ''{2}'' verwendet in Position, die Typ ''{3}'' erwartet +UniqueObjectFieldName.duplicateFieldName=Validierungsfehler ({0}) : Es kann nur ein Feld mit Name ''{1}'' geben +# +# These are used but IDEA cant find them easily as being called +# +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleNullError=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' darf nicht null sein +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleScalarError=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' ist kein gültiges ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleScalarErrorCustomMessage=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' ist kein gültiges ''{3}'' - {4} +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleEnumError=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' ist kein gültiges ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleEnumErrorCustomMessage=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' ist kein gültiges ''{3}'' - {4} +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleNotObjectError=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' muss ein object type sein +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleMissingFieldsError=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' fehlen Pflichtfelder ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleExtraFieldError=Validierungsfehler ({0}) : Argument ''{1}'' mit Wert ''{2}'' enthält ein Feld nicht in ''{3}'': ''{4}'' +# diff --git a/src/main/resources/i18n/Validation_nl.properties b/src/main/resources/i18n/Validation_nl.properties new file mode 100644 index 0000000000..e30b342640 --- /dev/null +++ b/src/main/resources/i18n/Validation_nl.properties @@ -0,0 +1,100 @@ +# +# This resource bundle is used for the query validation code to produce i18n messages +# +# The keys have the format of rule class name and then message type within that. Most rules +# will only have 1 or 2 message keys +# +# Please try and keep this sorted within rule class and use # between sections so the IDEA Ctrl-Alt-L reformat does not bunch +# them too tightly. +# +# REMEMBER - a single quote ' in MessageFormat means things that are never replaced within them +# so use 2 '' characters to make it one ' on output. This will take for the form ''{0}'' +# +ExecutableDefinitions.notExecutableType=Validatiefout ({0}) : Type definitie ''{1}'' is niet uitvoerbaar +ExecutableDefinitions.notExecutableSchema=Validatiefout ({0}) : Schema definitie is niet uitvoerbaar +ExecutableDefinitions.notExecutableDirective=Validatiefout ({0}) : Directive definitie ''{1}'' is niet uitvoerbaar +ExecutableDefinitions.notExecutableDefinition=Validatiefout ({0}) : Aangeleverde definition is niet uitvoerbaar +# +FieldsOnCorrectType.unknownField=Validatiefout ({0}) : Veld ''{1}'' in type ''{2}'' is ongedefinieerd +# +FragmentsOnCompositeType.invalidInlineTypeCondition=Validatiefout ({0}) : Inline fragment type condition is ongeldig, moet op een Object/Interface/Union zitten +FragmentsOnCompositeType.invalidFragmentTypeCondition=Validatiefout ({0}) : Fragment type condition is ongeldig, moet op een Object/Interface/Union zitten +# +KnownArgumentNames.unknownDirectiveArg=Validatiefout ({0}) : Onbekende directive argument ''{1}'' +KnownArgumentNames.unknownFieldArg=Validatiefout ({0}) : Onbekende field argument ''{1}'' +# +KnownDirectives.unknownDirective=Validatiefout ({0}) : Onbekende directive ''{1}'' +KnownDirectives.directiveNotAllowed=Validatiefout ({0}) : Directive ''{1}'' is hier niet toegestaan +# +KnownFragmentNames.undefinedFragment=Validatiefout ({0}) : Ongedefinieerd fragment ''{1}'' +# +KnownTypeNames.unknownType=Validatiefout ({0}) : Ongeldig type ''{1}'' +# +LoneAnonymousOperation.withOthers=Validatiefout ({0}) : Anonieme operation met andere operations +LoneAnonymousOperation.namedOperation=Validatiefout ({0}) : Operation ''{1}'' volgt een anonieme operatie +# +NoFragmentCycles.cyclesNotAllowed=Validatiefout ({0}) : Fragment cycles niet toegestaan +# +NoUndefinedVariables.undefinedVariable=Validatiefout ({0}) : Ongedefinieerde variabele ''{1}'' +# +NoUnusedFragments.unusedFragments=Validatiefout ({0}) : Ongebruikt fragment ''{1}'' +# +NoUnusedVariables.unusedVariable=Validatiefout ({0}) : Ongebruikte variabele ''{1}'' +# +OverlappingFieldsCanBeMerged.differentFields=Validatiefout ({0}) : ''{1}'' : ''{2}'' en ''{3}'' zijn verschillende velden +OverlappingFieldsCanBeMerged.differentArgs=Validatiefout ({0}) : ''{1}'' : velden hebben verschillende argumenten +OverlappingFieldsCanBeMerged.differentNullability=Validatiefout ({0}) : ''{1}'' : velden hebben verschillende nullability shapes +OverlappingFieldsCanBeMerged.differentLists=Validatiefout ({0}) : ''{1}'' : velden hebben verschillende vormen +OverlappingFieldsCanBeMerged.differentReturnTypes=Validatiefout ({0}) : ''{1}'' : retourneert verschillende types ''{2}'' en ''{3}'' +# +PossibleFragmentSpreads.inlineIncompatibleTypes=Validatiefout ({0}) : Fragment kan hier niet uitgespreid worden omdat een object van type ''{1}'' nooit van het type ''{2}'' kan zijn +PossibleFragmentSpreads.fragmentIncompatibleTypes=Validatiefout ({0}) : Fragment ''{1}'' kan hier niet uitgespreid worden omdat een object van type ''{2}'' nooit van het type ''{3}'' kan zijn +# +ProvidedNonNullArguments.missingFieldArg=Validatiefout ({0}) : Missend field argument ''{1}'' +ProvidedNonNullArguments.missingDirectiveArg=Validatiefout ({0}) : Missend directive argument ''{1}'' +ProvidedNonNullArguments.nullValue=Validatiefout ({0}) : Null waarde voor non-null field argument ''{1}'' +# +ScalarLeaves.subselectionOnLeaf=Validatiefout ({0}) : Sub-selectie niet toegestaan op leaf/uiteinde type ''{1}'' van veld ''{2}'' +ScalarLeaves.subselectionRequired=Validatiefout ({0}) : Sub-selectie verplicht voor type ''{1}'' van veld ''{2}'' +# +SubscriptionUniqueRootField.multipleRootFields=Validatiefout ({0}) : Subscription operation ''{1}'' moet exact één root field hebben +SubscriptionUniqueRootField.multipleRootFieldsWithFragment=Validatiefout ({0}) : Subscription operation ''{1}'' moet exact één root field met fragmenten hebben +SubscriptionIntrospectionRootField.introspectionRootField=Validatiefout ({0}) : Subscription operation ''{1}'' root field ''{2}'' kan geen introspectieveld zijn +SubscriptionIntrospectionRootField.introspectionRootFieldWithFragment=Validatiefout ({0}) : Subscription operation ''{1}'' fragment root field ''{2}'' kan geen introspectieveld zijn +# +UniqueArgumentNames.uniqueArgument=Validatiefout ({0}) : Er mag maar één argument met naam ''{1}'' bestaan +# +UniqueDirectiveNamesPerLocation.uniqueDirectives=Validatiefout ({0}) : Onherhaalbare directives moeten een unieke naam hebben binnen een locatie. De directive ''{1}'' gebruikt op een ''{2}'' is niet uniek +# +UniqueFragmentNames.oneFragment=Validatiefout ({0}) : Er mag maar één fragment met naam ''{1}'' bestaan +# +UniqueOperationNames.oneOperation=Validatiefout ({0}) : Er mag maar één operatie met naam ''{1}'' bestaan +# +UniqueVariableNames.oneVariable=Validatiefout ({0}) : Er mag maar één variabele met naam ''{1}'' bestaan +# +VariableDefaultValuesOfCorrectType.badDefault=Validatiefout ({0}) : Ongeldige standaardwaarde ''{1}'' voor type ''{2}'' +# +VariablesAreInputTypes.wrongType=Validatiefout ({0}) : Invoervariabele ''{1}'' type ''{2}'' is geen invoertype +# +VariableTypesMatchRule.unexpectedType=Validatiefout ({0}) : Variabele type ''{1}'' komt niet overeen met het verwachte type ''{2}'' +UniqueObjectFieldName.duplicateFieldName=Validatiefout ({0}) : Er kan slechts één veld genaamd ''{1}'' zijn +# +# These are used but IDEA cant find them easily as being called +# +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleNullError=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' mag niet null zijn +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleScalarError=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' is geen geldige ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleScalarErrorCustomMessage=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' is geen geldige ''{3}'' - {4} +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleEnumError=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' is geen geldige ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleEnumErrorCustomMessage=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' is geen geldige ''{3}'' - {4} +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleNotObjectError=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' moet een object type zijn +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleMissingFieldsError=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' mist een verplicht veld ''{3}'' +# suppress inspection "UnusedProperty" +ArgumentValidationUtil.handleExtraFieldError=Validatiefout ({0}) : argument ''{1}'' met waarde ''{2}'' bevat een veld niet in ''{3}'': ''{4}'' +# diff --git a/src/test/groovy/example/http/DeferHttpSupport.java b/src/test/groovy/example/http/DeferHttpSupport.java deleted file mode 100644 index 23f2c3dedf..0000000000 --- a/src/test/groovy/example/http/DeferHttpSupport.java +++ /dev/null @@ -1,115 +0,0 @@ -package example.http; - -import graphql.DeferredExecutionResult; -import graphql.ExecutionResult; -import graphql.GraphQL; -import org.reactivestreams.Publisher; -import org.reactivestreams.Subscriber; -import org.reactivestreams.Subscription; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.UncheckedIOException; -import java.util.Map; - -public class DeferHttpSupport { - - private static final String CRLF = "\r\n"; - - @SuppressWarnings("unchecked") - static void sendDeferredResponse(HttpServletResponse response, ExecutionResult executionResult, Map extensions) { - Publisher deferredResults = (Publisher) extensions.get(GraphQL.DEFERRED_RESULTS); - try { - sendMultipartResponse(response, executionResult, deferredResults); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - static private void sendMultipartResponse(HttpServletResponse response, ExecutionResult executionResult, Publisher deferredResults) { - // this implements this apollo defer spec: https://github.com/apollographql/apollo-server/blob/defer-support/docs/source/defer-support.md - // the spec says CRLF + "-----" + CRLF is needed at the end, but it works without it and with it we get client - // side errors with it, so we skp it - response.setStatus(HttpServletResponse.SC_OK); - - response.setHeader("Content-Type", "multipart/mixed; boundary=\"-\""); - response.setHeader("Connection", "keep-alive"); - - // send the first "un deferred" part of the result - writeAndFlushPart(response, executionResult.toSpecification()); - - // now send each deferred part which is given to us as a reactive stream - // of deferred values - deferredResults.subscribe(new Subscriber() { - Subscription subscription; - - @Override - public void onSubscribe(Subscription s) { - this.subscription = s; - s.request(1); - } - - @Override - public void onNext(DeferredExecutionResult deferredExecutionResult) { - subscription.request(1); - - writeAndFlushPart(response, deferredExecutionResult.toSpecification()); - } - - @Override - public void onError(Throwable t) { - t.printStackTrace(System.err); - } - - @Override - public void onComplete() { - } - }); - - } - - private static void writeAndFlushPart(HttpServletResponse response, Map result) { - DeferMultiPart deferMultiPart = new DeferMultiPart(result); - StringBuilder sb = new StringBuilder(); - sb.append(CRLF).append("---").append(CRLF); - String body = deferMultiPart.write(); - sb.append(body); - writeAndFlush(response, sb); - } - - private static void writeAndFlush(HttpServletResponse response, StringBuilder sb) { - try { - PrintWriter writer = response.getWriter(); - writer.write(sb.toString()); - writer.flush(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - - private static class DeferMultiPart { - - private Object body; - - public DeferMultiPart(Object data) { - this.body = data; - } - - public String write() { - StringBuilder result = new StringBuilder(); - String bodyString = bodyToString(); - result.append("Content-Type: application/json").append(CRLF); - result.append("Content-Length: ").append(bodyString.length()).append(CRLF).append(CRLF); - result.append(bodyString); - return result.toString(); - } - - private String bodyToString() { - return JsonKit.GSON.toJson(body); - } - } - -} diff --git a/src/test/groovy/example/http/ExecutionResultJSONTesting.java b/src/test/groovy/example/http/ExecutionResultJSONTesting.java index c6bd7d60af..019eb17616 100644 --- a/src/test/groovy/example/http/ExecutionResultJSONTesting.java +++ b/src/test/groovy/example/http/ExecutionResultJSONTesting.java @@ -9,18 +9,18 @@ import graphql.GraphQLError; import graphql.InvalidSyntaxError; import graphql.SerializationError; -import graphql.execution.ExecutionPath; import graphql.execution.ExecutionStepInfo; import graphql.execution.MissingRootTypeException; import graphql.execution.NonNullableFieldWasNullError; import graphql.execution.NonNullableFieldWasNullException; +import graphql.execution.ResultPath; import graphql.introspection.Introspection; import graphql.language.SourceLocation; import graphql.schema.CoercingSerializeException; import graphql.validation.ValidationError; import graphql.validation.ValidationErrorType; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -70,7 +70,11 @@ private void testGson(HttpServletResponse response, Object er) throws IOExceptio private ExecutionResult createER() { List errors = new ArrayList<>(); - errors.add(new ValidationError(ValidationErrorType.UnknownType, mkLocations(), "Test ValidationError")); + errors.add(ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations(mkLocations()) + .description("Test ValidationError") + .build()); errors.add(new MissingRootTypeException("Mutations are not supported.", null)); errors.add(new InvalidSyntaxError(mkLocations(), "Not good syntax m'kay")); errors.add(new NonNullableFieldWasNullError(new NonNullableFieldWasNullException(mkExecutionInfo(), mkPath()))); @@ -88,8 +92,8 @@ private SourceLocation mkLocation(int line, int column) { return new SourceLocation(line, column); } - private ExecutionPath mkPath() { - return ExecutionPath.rootPath().segment("heroes").segment(0).segment("abilities").segment("speed").segment(4); + private ResultPath mkPath() { + return ResultPath.rootPath().segment("heroes").segment(0).segment("abilities").segment("speed").segment(4); } private ExecutionStepInfo mkExecutionInfo() { diff --git a/src/test/groovy/example/http/HttpMain.java b/src/test/groovy/example/http/HttpMain.java index 3f0774f018..b823b78060 100644 --- a/src/test/groovy/example/http/HttpMain.java +++ b/src/test/groovy/example/http/HttpMain.java @@ -4,9 +4,6 @@ import graphql.ExecutionResult; import graphql.GraphQL; import graphql.StarWarsData; -import graphql.execution.instrumentation.ChainedInstrumentation; -import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation; import graphql.execution.instrumentation.tracing.TracingInstrumentation; import graphql.schema.DataFetcher; import graphql.schema.GraphQLObjectType; @@ -16,8 +13,12 @@ import graphql.schema.idl.SchemaGenerator; import graphql.schema.idl.SchemaParser; import graphql.schema.idl.TypeDefinitionRegistry; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.dataloader.BatchLoader; import org.dataloader.DataLoader; +import org.dataloader.DataLoaderFactory; import org.dataloader.DataLoaderRegistry; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Request; @@ -26,9 +27,6 @@ import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -40,16 +38,13 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; -import static graphql.Directives.DeferDirective; import static graphql.ExecutionInput.newExecutionInput; -import static graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions.newOptions; import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; -import static java.util.Arrays.asList; /** - * An very simple example of serving a qraphql schema over http. + * A very simple example of serving a graphql schema over http. *

      - * More info can be found here : http://graphql.org/learn/serving-over-http/ + * More info can be found here : https://graphql.org/learn/serving-over-http/ */ @SuppressWarnings("unchecked") public class HttpMain extends AbstractHandler { @@ -134,36 +129,24 @@ private void handleStarWars(HttpServletRequest httpRequest, HttpServletResponse Map context = new HashMap<>(); context.put("YouAppSecurityClearanceLevel", "CodeRed"); context.put("YouAppExecutingUser", "Dr Nefarious"); - executionInput.context(context); + executionInput.graphQLContext(context); // // you need a schema in order to execute queries GraphQLSchema schema = buildStarWarsSchema(); - DataLoaderDispatcherInstrumentation dlInstrumentation = - new DataLoaderDispatcherInstrumentation(newOptions().includeStatistics(true)); - - Instrumentation instrumentation = new ChainedInstrumentation( - asList(new TracingInstrumentation(), dlInstrumentation) - ); - // finally you build a runtime graphql object and execute the query GraphQL graphQL = GraphQL .newGraphQL(schema) - // instrumentation is pluggable - .instrumentation(instrumentation) + .instrumentation(new TracingInstrumentation()) .build(); - ExecutionResult executionResult = graphQL.execute(executionInput.build()); + ExecutionResult executionResult = graphQL.execute(executionInput); returnAsJson(httpResponse, executionResult); } private void returnAsJson(HttpServletResponse response, ExecutionResult executionResult) throws IOException { - Map extensions = executionResult.getExtensions(); - if (extensions != null && extensions.containsKey(GraphQL.DEFERRED_RESULTS)) { - DeferHttpSupport.sendDeferredResponse(response, executionResult, extensions); - } sendNormalResponse(response, executionResult); } @@ -183,7 +166,7 @@ private DataLoaderRegistry buildDataLoaderRegistry() { CompletableFuture.supplyAsync(() -> loadCharactersViaHTTP(keys)); - DataLoader friendsDataLoader = new DataLoader<>(friendsBatchLoader); + DataLoader friendsDataLoader = DataLoaderFactory.newDataLoader(friendsBatchLoader); DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); // @@ -260,7 +243,6 @@ private GraphQLSchema buildStarWarsSchema() { // finally combine the logical schema with the physical runtime starWarsSchema = new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring); - starWarsSchema = starWarsSchema.transform(builder -> builder.additionalDirective(DeferDirective)); } return starWarsSchema; } @@ -281,7 +263,7 @@ private Reader loadSchemaFile(String name) { } // Lots of the data happens to be maps of objects and this allows us to get back into type safety land - // with less boiler plate and casts + // with less boilerplate and casts // @SuppressWarnings("TypeParameterUnusedInFormals") private T asMapGet(Object mapObj, Object mapKey) { diff --git a/src/test/groovy/example/http/JsonKit.java b/src/test/groovy/example/http/JsonKit.java index 7d30ac92d2..822aaa425d 100644 --- a/src/test/groovy/example/http/JsonKit.java +++ b/src/test/groovy/example/http/JsonKit.java @@ -3,8 +3,8 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; +import jakarta.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Collections; import java.util.Map; diff --git a/src/test/groovy/example/http/QueryParameters.java b/src/test/groovy/example/http/QueryParameters.java index 1c9c309a70..7855e9d316 100644 --- a/src/test/groovy/example/http/QueryParameters.java +++ b/src/test/groovy/example/http/QueryParameters.java @@ -1,6 +1,6 @@ package example.http; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.util.Collections; @@ -10,15 +10,15 @@ /** * Graphql clients can send GET or POST HTTP requests. The spec does not make an explicit * distinction. So you may need to handle both. The following was tested using - * a graphiql client tool found here : https://github.com/skevy/graphiql-app - * + * a graphiql client tool found here : graphiql-app + *

      * You should consider bundling graphiql in your application - * - * https://github.com/graphql/graphiql - * + *

      + * https://github.com/graphql/graphiql + *

      * This outlines more information on how to handle parameters over http - * - * http://graphql.org/learn/serving-over-http/ + *

      + * https://graphql.org/learn/serving-over-http/ */ class QueryParameters { diff --git a/src/test/groovy/example/http/package-info.java b/src/test/groovy/example/http/package-info.java index e5716f24fe..bea88ed753 100644 --- a/src/test/groovy/example/http/package-info.java +++ b/src/test/groovy/example/http/package-info.java @@ -1,11 +1,11 @@ /** * The purpose of this code is to show an example of serving a graphql query over HTTP - * - * More info can be found here : http://graphql.org/learn/serving-over-http/ - * + *

      + * More info can be found here : https://graphql.org/learn/serving-over-http/ + *

      * There are more concerns in a fully fledged application such as your approach to permissions * and authentication and so on that are not shown here. - * + *

      * The backing data is the "star wars" example schema. And fairly complex example query is as follows : * *

      @@ -30,20 +30,5 @@
        *
        * }
        * 
      - * - * This also has @defer support which sends back HTTP multipart requests. Since tools like graphiql dont understand http multipart - * then you might use a tool like curl to see results - * - *
      - * {@code
      - *      curl \
      - *          -X POST \
      - *           -H "Content-Type: application/json" \
      - *           --data '{ "query": "{ hero { name friends @defer { name } } } "}' \
      - *          http://localhost:8080/graphql
      - * }
      - * 
      - * - * See https://www.apollographql.com/docs/react/features/defer-support.html for some more details on @defer */ package example.http; \ No newline at end of file diff --git a/src/test/groovy/graphql/AlwaysFailsTest.groovy b/src/test/groovy/graphql/AlwaysFailsTest.groovy new file mode 100644 index 0000000000..8136ff4f77 --- /dev/null +++ b/src/test/groovy/graphql/AlwaysFailsTest.groovy @@ -0,0 +1,27 @@ +package graphql + +import spock.lang.Ignore +import spock.lang.Specification + +/** + * This is only really useful for testing the gradle builds etc... + * and in general would not be needed to test graphql-java + */ +@Ignore +class AlwaysFailsTest extends Specification{ + + def "this test fails"() { + when: + true + then: + assert false + } + + def "and this test always fails"() { + when: + true + then: + assert false + } + +} diff --git a/src/test/groovy/graphql/AssertTest.groovy b/src/test/groovy/graphql/AssertTest.groovy index 94e87bd9eb..fe6d818f1f 100644 --- a/src/test/groovy/graphql/AssertTest.groovy +++ b/src/test/groovy/graphql/AssertTest.groovy @@ -2,34 +2,45 @@ package graphql import spock.lang.Specification +import static graphql.Assert.* + class AssertTest extends Specification { - def "assertNull should not throw on none null value"() { + def "assertNotNull should not throw on none null value"() { when: - Assert.assertNotNull("some object") + assertNotNull("some object") then: noExceptionThrown() } - def "assertNull should throw on null value"() { + def "assertNotNull should throw on null value"() { when: - Assert.assertNotNull(null) + assertNotNull(null) then: thrown(AssertException) } - def "assertNull with error message should not throw on none null value"() { + def "assertNotNull constant message should throw on null value"() { + when: + assertNotNull(null, "constant message") + + then: + def error = thrown(AssertException) + error.message == "constant message" + } + + def "assertNotNull with error message should not throw on none null value"() { when: - Assert.assertNotNull("some object", "error message") + assertNotNull("some object", { -> "error message" }) then: noExceptionThrown() } - def "assertNull with error message should throw on null value with formatted message"() { + def "assertNotNull with error message should throw on null value with formatted message"() { when: - Assert.assertNotNull(value, format, arg) + assertNotNull(value, { -> String.format(format, arg) }) then: def error = thrown(AssertException) @@ -42,9 +53,38 @@ class AssertTest extends Specification { null | "code" | null || "code" } + def "assertNotNull with different number of error args throws assertions"() { + when: + toRun.run() + + then: + def error = thrown(AssertException) + error.message == expectedMessage + + where: + toRun | expectedMessage + runnable({ assertNotNull(null, "error %s", "arg1") }) | "error arg1" + runnable({ assertNotNull(null, "error %s %s", "arg1", "arg2") }) | "error arg1 arg2" + runnable({ assertNotNull(null, "error %s %s %s", "arg1", "arg2", "arg3") }) | "error arg1 arg2 arg3" + } + + def "assertNotNull with different number of error args with non null does not throw assertions"() { + when: + toRun.run() + + then: + noExceptionThrown() + + where: + toRun | expectedMessage + runnable({ assertNotNull("x", "error %s", "arg1") }) | "error arg1" + runnable({ assertNotNull("x", "error %s %s", "arg1", "arg2") }) | "error arg1 arg2" + runnable({ assertNotNull("x", "error %s %s %s", "arg1", "arg2", "arg3") }) | "error arg1 arg2 arg3" + } + def "assertNeverCalled should always throw"() { when: - Assert.assertNeverCalled() + assertNeverCalled() then: def e = thrown(AssertException) @@ -53,7 +93,7 @@ class AssertTest extends Specification { def "assertShouldNeverHappen should always throw"() { when: - Assert.assertShouldNeverHappen() + assertShouldNeverHappen() then: def e = thrown(AssertException) @@ -62,7 +102,7 @@ class AssertTest extends Specification { def "assertShouldNeverHappen should always throw with formatted message"() { when: - Assert.assertShouldNeverHappen(format, arg) + assertShouldNeverHappen(format, arg) then: def error = thrown(AssertException) @@ -77,7 +117,7 @@ class AssertTest extends Specification { def "assertNotEmpty collection should throw on null or empty"() { when: - Assert.assertNotEmpty(value, format, arg) + assertNotEmpty(value, { -> String.format(format, arg) }) then: def error = thrown(AssertException) @@ -91,7 +131,7 @@ class AssertTest extends Specification { def "assertNotEmpty should not throw on none empty collection"() { when: - Assert.assertNotEmpty(["some object"], "error message") + assertNotEmpty(["some object"], { -> "error message" }) then: noExceptionThrown() @@ -99,7 +139,7 @@ class AssertTest extends Specification { def "assertTrue should not throw on true value"() { when: - Assert.assertTrue(true, "error message") + assertTrue(true, { -> "error message" }) then: noExceptionThrown() @@ -107,7 +147,77 @@ class AssertTest extends Specification { def "assertTrue with error message should throw on false value with formatted message"() { when: - Assert.assertTrue(false, format, arg) + assertTrue(false, { -> String.format(format, arg) }) + + then: + def error = thrown(AssertException) + error.message == expectedMessage + + where: + format | arg || expectedMessage + "error %s" | "msg" || "error msg" + "code %d" | 1 || "code 1" + "code" | null || "code" + } + + def "assertTrue constant message should throw with message"() { + when: + assertTrue(false, "constant message") + + then: + def error = thrown(AssertException) + error.message == "constant message" + } + + def "assertTrue with different number of error args throws assertions"() { + when: + toRun.run() + + then: + def error = thrown(AssertException) + error.message == expectedMessage + + where: + toRun | expectedMessage + runnable({ assertTrue(false, "error %s", "arg1") }) | "error arg1" + runnable({ assertTrue(false, "error %s %s", "arg1", "arg2") }) | "error arg1 arg2" + runnable({ assertTrue(false, "error %s %s %s", "arg1", "arg2", "arg3") }) | "error arg1 arg2 arg3" + } + + def "assertTrue with different number of error args but false does not throw assertions"() { + when: + toRun.run() + + then: + noExceptionThrown() + + where: + toRun | expectedMessage + runnable({ assertTrue(true, "error %s", "arg1") }) | "error arg1" + runnable({ assertTrue(true, "error %s %s", "arg1", "arg2") }) | "error arg1 arg2" + runnable({ assertTrue(true, "error %s %s %s", "arg1", "arg2", "arg3") }) | "error arg1 arg2 arg3" + } + + def "assertFalse should throw"() { + when: + assertFalse(true) + + then: + thrown(AssertException) + } + + def "assertFalse constant message should throw with message"() { + when: + assertFalse(true, "constant message") + + then: + def error = thrown(AssertException) + error.message == "constant message" + } + + def "assertFalse with error message should throw on false value with formatted message"() { + when: + assertFalse(true, { -> String.format(format, arg) }) then: def error = thrown(AssertException) @@ -120,9 +230,38 @@ class AssertTest extends Specification { "code" | null || "code" } + def "assertFalse with different number of error args throws assertions"() { + when: + toRun.run() + + then: + def error = thrown(AssertException) + error.message == expectedMessage + + where: + toRun | expectedMessage + runnable({ assertFalse(true, "error %s", "arg1") }) | "error arg1" + runnable({ assertFalse(true, "error %s %s", "arg1", "arg2") }) | "error arg1 arg2" + runnable({ assertFalse(true, "error %s %s %s", "arg1", "arg2", "arg3") }) | "error arg1 arg2 arg3" + } + + def "assertFalse with different number of error args but false does not throw assertions"() { + when: + toRun.run() + + then: + noExceptionThrown() + + where: + toRun | expectedMessage + runnable({ assertFalse(false, "error %s", "arg1") }) | "error arg1" + runnable({ assertFalse(false, "error %s %s", "arg1", "arg2") }) | "error arg1 arg2" + runnable({ assertFalse(false, "error %s %s %s", "arg1", "arg2", "arg3") }) | "error arg1 arg2 arg3" + } + def "assertValidName should not throw on valid names"() { when: - Assert.assertValidName(name) + assertValidName(name) then: noExceptionThrown() @@ -138,7 +277,7 @@ class AssertTest extends Specification { def "assertValidName should throw on invalid names"() { when: - Assert.assertValidName(name) + assertValidName(name) then: def error = thrown(AssertException) @@ -147,7 +286,13 @@ class AssertTest extends Specification { where: name | _ "0abc" | _ - "���" | _ + "���" | _ "_()" | _ } + + // Spock data tables cant cope with { x } syntax but it cna do this + Runnable runnable(Runnable r) { + return r + } + } diff --git a/src/test/groovy/graphql/ChainedDataLoaderTest.groovy b/src/test/groovy/graphql/ChainedDataLoaderTest.groovy new file mode 100644 index 0000000000..98986b32c2 --- /dev/null +++ b/src/test/groovy/graphql/ChainedDataLoaderTest.groovy @@ -0,0 +1,508 @@ +package graphql + +import graphql.schema.DataFetcher +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry +import spock.lang.RepeatUntilFailure +import spock.lang.Specification +import spock.lang.Unroll + +import java.util.concurrent.ExecutionException +import java.util.concurrent.atomic.AtomicInteger + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.setEnableDataLoaderChaining +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.setEnableDataLoaderExhaustedDispatching +import static java.util.concurrent.CompletableFuture.supplyAsync + +class ChainedDataLoaderTest extends Specification { + + + @Unroll + def "chained data loaders"() { + given: + def sdl = ''' + + type Query { + dogName: String + catName: String + } + ''' + int batchLoadCalls = 0 + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls++ + Thread.sleep(250) + println "BatchLoader called with keys: $keys" + assert keys.size() == 2 + return ["Luna", "Tiger"] + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader); + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("name", nameDataLoader); + + def df1 = { env -> + return env.getDataLoader("name").load("Key1").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } as DataFetcher + + def df2 = { env -> + return env.getDataLoader("name").load("Key2").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } as DataFetcher + + + def fetchers = ["Query": ["dogName": df1, "catName": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ dogName catName } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).build() + chainedDataLoaderOrExhaustedDispatcher ? setEnableDataLoaderChaining(ei.graphQLContext, true) : setEnableDataLoaderExhaustedDispatching(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + then: + er.data == [dogName: "Luna", catName: "Tiger"] + batchLoadCalls == 2 + + where: + chainedDataLoaderOrExhaustedDispatcher << [true, false] + } + + @Unroll + @RepeatUntilFailure(maxAttempts = 20, ignoreRest = false) + def "parallel different data loaders"() { + given: + def sdl = ''' + + type Query { + hello: String + helloDelayed: String + } + ''' + AtomicInteger batchLoadCalls = new AtomicInteger() + BatchLoader batchLoader1 = { keys -> + println "BatchLoader 1 called with keys: $keys ${Thread.currentThread().name}" + batchLoadCalls.incrementAndGet() + return supplyAsync { + Thread.sleep(250) + assert keys.size() == 1 + return ["Luna" + keys[0]] + } + } + + BatchLoader batchLoader2 = { keys -> + println "BatchLoader 2 called with keys: $keys ${Thread.currentThread().name}" + batchLoadCalls.incrementAndGet() + return supplyAsync { + Thread.sleep(250) + assert keys.size() == 1 + return ["Skipper" + keys[0]] + } + } + BatchLoader batchLoader3 = { keys -> + println "BatchLoader 3 called with keys: $keys ${Thread.currentThread().name}" + batchLoadCalls.incrementAndGet() + return supplyAsync { + Thread.sleep(250) + assert keys.size() == 1 + return ["friends" + keys[0]] + } + } + + + DataLoader dl1 = DataLoaderFactory.newDataLoader(batchLoader1); + DataLoader dl2 = DataLoaderFactory.newDataLoader(batchLoader2); + DataLoader dl3 = DataLoaderFactory.newDataLoader(batchLoader3); + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("dl1", dl1); + dataLoaderRegistry.register("dl2", dl2); + dataLoaderRegistry.register("dl3", dl3); + + def df = { env -> + def cf1 = env.getDataLoader("dl1").load("key1") + def cf2 = env.getDataLoader("dl2").load("key2") + return cf1.thenCombine(cf2, { result1, result2 -> + return result1 + result2 + }).thenCompose { + return env.getDataLoader("dl3").load(it) + } + } as DataFetcher + + def dfDelayed = { env -> + return supplyAsync { + Thread.sleep(2000) + }.thenCompose { + def cf1 = env.getDataLoader("dl1").load("key1-delayed") + def cf2 = env.getDataLoader("dl2").load("key2-delayed") + return cf1.thenCombine(cf2, { result1, result2 -> + return result1 + result2 + }).thenCompose { + return env.getDataLoader("dl3").load(it) + } + } + } as DataFetcher + + + def fetchers = [Query: [hello: df, helloDelayed: dfDelayed]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello helloDelayed} " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).build() + chainedDataLoaderOrExhaustedDispatcher ? setEnableDataLoaderChaining(ei.graphQLContext, true) : setEnableDataLoaderExhaustedDispatching(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + then: + er.data == [hello: "friendsLunakey1Skipperkey2", helloDelayed: "friendsLunakey1-delayedSkipperkey2-delayed"] + batchLoadCalls.get() == 6 + + where: + chainedDataLoaderOrExhaustedDispatcher << [true, false] + + + } + + + @Unroll + def "more complicated chained data loader for one DF"() { + given: + def sdl = ''' + + type Query { + foo: String + } + ''' + int batchLoadCalls1 = 0 + BatchLoader batchLoader1 = { keys -> + return supplyAsync { + batchLoadCalls1++ + Thread.sleep(250) + println "BatchLoader1 called with keys: $keys" + return keys.collect { String key -> + key + "-batchloader1" + } + } + } + int batchLoadCalls2 = 0 + BatchLoader batchLoader2 = { keys -> + return supplyAsync { + batchLoadCalls2++ + Thread.sleep(250) + println "BatchLoader2 called with keys: $keys" + return keys.collect { String key -> + key + "-batchloader2" + } + } + } + + + DataLoader dl1 = DataLoaderFactory.newDataLoader(batchLoader1); + DataLoader dl2 = DataLoaderFactory.newDataLoader(batchLoader2); + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("dl1", dl1); + dataLoaderRegistry.register("dl2", dl2); + + def df = { env -> + return env.getDataLoader("dl1").load("start").thenCompose { + firstDLResult -> + + def otherCF1 = supplyAsync { + Thread.sleep(1000) + return "otherCF1" + } + def otherCF2 = supplyAsync { + Thread.sleep(1000) + return "otherCF2" + } + + def secondDL = env.getDataLoader("dl2").load(firstDLResult).thenApply { + secondDLResult -> + return secondDLResult + "-apply" + } + return otherCF1.thenCompose { + otherCF1Result -> + otherCF2.thenCompose { + otherCF2Result -> + secondDL.thenApply { + secondDLResult -> + return firstDLResult + "-" + otherCF1Result + "-" + otherCF2Result + "-" + secondDLResult + } + } + } + + } + } as DataFetcher + + + def fetchers = ["Query": ["foo": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ foo } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).build() + chainedDataLoaderOrExhaustedDispatcher ? setEnableDataLoaderChaining(ei.graphQLContext, true) : setEnableDataLoaderExhaustedDispatching(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + then: + er.data == [foo: "start-batchloader1-otherCF1-otherCF2-start-batchloader1-batchloader2-apply"] + batchLoadCalls1 == 1 + batchLoadCalls2 == 1 + where: + chainedDataLoaderOrExhaustedDispatcher << [true, false] + + } + + + @Unroll + def "chained data loaders with an delayed data loader"() { + given: + def sdl = ''' + + type Query { + dogName: String + catName: String + } + ''' + int batchLoadCalls = 0 + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls++ + Thread.sleep(250) + println "BatchLoader called with keys: $keys" + return keys.collect { String key -> + key.substring(0, key.length() - 1) + (Integer.parseInt(key.substring(key.length() - 1, key.length())) + 1) + } + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader); + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("name", nameDataLoader); + + def df1 = { env -> + return env.getDataLoader("name").load("Luna0").thenCompose { + result -> + { + return supplyAsync { + Thread.sleep(1000) + return "foo" + }.thenCompose { + return env.getDataLoader("name").load(result) + } + } + } + } as DataFetcher + + def df2 = { env -> + return env.getDataLoader("name").load("Tiger0").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } as DataFetcher + + + def fetchers = ["Query": ["dogName": df1, "catName": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ dogName catName } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).build() + chainedDataLoaderOrExhaustedDispatcher ? setEnableDataLoaderChaining(ei.graphQLContext, true) : setEnableDataLoaderExhaustedDispatching(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + then: + er.data == [dogName: "Luna2", catName: "Tiger2"] + batchLoadCalls == 3 + where: + chainedDataLoaderOrExhaustedDispatcher << [true, false] + + } + + @Unroll + def "chained data loaders with two delayed data loaders"() { + given: + def sdl = ''' + + type Query { + foo: String + bar: String + } + ''' + AtomicInteger batchLoadCalls = new AtomicInteger() + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls.incrementAndGet() + Thread.sleep(250) + println "BatchLoader called with keys: $keys" + return keys; + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader); + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("dl", nameDataLoader); + + def fooDF = { env -> + return supplyAsync { + Thread.sleep(1000) + return "fooFirstValue" + }.thenCompose { + return env.getDataLoader("dl").load(it) + } + } as DataFetcher + + def barDF = { env -> + return supplyAsync { + Thread.sleep(1000) + return "barFirstValue" + }.thenCompose { + return env.getDataLoader("dl").load(it) + } + } as DataFetcher + + + def fetchers = ["Query": ["foo": fooDF, "bar": barDF]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ foo bar } " + + def eiBuilder = ExecutionInput.newExecutionInput(query) + def ei = eiBuilder.dataLoaderRegistry(dataLoaderRegistry).build() + chainedDataLoaderOrExhaustedDispatcher ? setEnableDataLoaderChaining(ei.graphQLContext, true) : setEnableDataLoaderExhaustedDispatching(ei.graphQLContext, true) + + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + then: + er.data == [foo: "fooFirstValue", bar: "barFirstValue"] + batchLoadCalls.get() == 1 || batchLoadCalls.get() == 2 // depending on timing, it can be 1 or 2 calls + + where: + chainedDataLoaderOrExhaustedDispatcher << [true, false] + + } + + def "handling of chained DataLoaders is disabled by default"() { + given: + def sdl = ''' + + type Query { + dogName: String + catName: String + } + ''' + int batchLoadCalls = 0 + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls++ + println "BatchLoader called with keys: $keys" + assert keys.size() == 2 + return ["Luna", "Tiger"] + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader); + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("name", nameDataLoader); + + def df1 = { env -> + return env.getDataLoader("name").load("Key1").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } as DataFetcher + + def df2 = { env -> + return env.getDataLoader("name").load("Key2").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } as DataFetcher + + + def fetchers = ["Query": ["dogName": df1, "catName": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ dogName catName } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).build() + + + when: + def er = graphQL.executeAsync(ei) + Thread.sleep(1000) + then: + batchLoadCalls == 1 + !er.isDone() + } + + + def "setting chained and exhausted at the same time caused error"() { + given: + def sdl = ''' + + type Query { + echo:String + } + ''' + def schema = TestUtil.schema(sdl, [:]) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{echo} " + def ei = newExecutionInput(query).dataLoaderRegistry(new DataLoaderRegistry()).build() + setEnableDataLoaderChaining(ei.graphQLContext, true) + setEnableDataLoaderExhaustedDispatching(ei.graphQLContext, true) + + + when: + def er = graphQL.executeAsync(ei) + er.get() + + then: + def e = thrown(ExecutionException) + e.getCause().getMessage() == "enabling data loader chaining and exhausted dispatching at the same time ambiguous" + } + + +} diff --git a/src/test/groovy/graphql/ContextPassingDataFetcher.groovy b/src/test/groovy/graphql/ContextPassingDataFetcher.groovy index 1f66d52ee6..4b667bf765 100644 --- a/src/test/groovy/graphql/ContextPassingDataFetcher.groovy +++ b/src/test/groovy/graphql/ContextPassingDataFetcher.groovy @@ -25,7 +25,7 @@ class ContextPassingDataFetcher implements DataFetcher { Integer localCtx = env.getLocalContext() if (localCtx == null) { - localCtx = env.getContext() + localCtx = env.getGraphQlContext().get("key") } def newData = data + localCtx + "," diff --git a/src/test/groovy/graphql/CustomMapImplementationTest.groovy b/src/test/groovy/graphql/CustomMapImplementationTest.groovy new file mode 100644 index 0000000000..7287b8c19c --- /dev/null +++ b/src/test/groovy/graphql/CustomMapImplementationTest.groovy @@ -0,0 +1,69 @@ +package graphql + +import graphql.execution.ResponseMapFactory +import graphql.schema.idl.RuntimeWiring +import groovy.transform.Immutable +import spock.lang.Specification + +class CustomMapImplementationTest extends Specification { + + @Immutable + static class Person { + String name + @SuppressWarnings('unused') // used by graphql-java + int age + } + + class CustomResponseMapFactory implements ResponseMapFactory { + + @Override + Map createInsertionOrdered(List keys, List values) { + return Collections.unmodifiableMap(DEFAULT.createInsertionOrdered(keys, values)) + } + } + + def graphql = TestUtil.graphQL(""" + type Query { + people: [Person!]! + } + + type Person { + name: String! + age: Int! + } + + """, + RuntimeWiring.newRuntimeWiring() + .type("Query", { + it.dataFetcher("people", { List.of(new Person("Mario", 18), new Person("Luigi", 21))}) + }) + .build()) + .build() + + def "customMapImplementation"() { + when: + def input = ExecutionInput.newExecutionInput() + .query(''' + query { + people { + name + age + } + } + ''') + .graphQLContext { it -> GraphQL.unusualConfiguration(it).responseMapFactory().setFactory(new CustomResponseMapFactory())} + .build() + + def executionResult = graphql.execute(input) + + then: + executionResult.errors.isEmpty() + executionResult.data == [ people: [ + [name: "Mario", age: 18], + [name: "Luigi", age: 21], + ]] + executionResult.data.getClass().getSimpleName() == 'UnmodifiableMap' + executionResult.data['people'].each { it -> it.getClass().getSimpleName() == 'UnmodifiableMap' } + } + +} diff --git a/src/test/groovy/graphql/DataFetcherTest.groovy b/src/test/groovy/graphql/DataFetcherTest.groovy index aa15db46dd..2f57c41efd 100644 --- a/src/test/groovy/graphql/DataFetcherTest.groovy +++ b/src/test/groovy/graphql/DataFetcherTest.groovy @@ -1,8 +1,10 @@ package graphql +import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLOutputType import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -55,43 +57,95 @@ class DataFetcherTest extends Specification { } - def env(GraphQLOutputType type) { - newDataFetchingEnvironment().source(dataHolder).fieldType(type).build() + def env(String propertyName, GraphQLOutputType type) { + GraphQLFieldDefinition fieldDefinition = mkField(propertyName, type) + newDataFetchingEnvironment().source(dataHolder).fieldType(type).fieldDefinition(fieldDefinition).build() + } + + def mkField(String propertyName, GraphQLOutputType type) { + GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(type).build() } def "get property value"() { given: - def environment = env(GraphQLString) + def environment = env("property", GraphQLString) + def field = mkField("property", GraphQLString) when: - def result = new PropertyDataFetcher("property").get(environment) + def result = fetcher.get(environment) then: result == "propertyValue" + + when: + result = fetcher.get(field, dataHolder, { environment }) + then: + result == "propertyValue" + + where: + fetcher | _ + new PropertyDataFetcher("property") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get Boolean property value"() { given: - def environment = env(GraphQLBoolean) + def environment = env("booleanField", GraphQLBoolean) + def field = mkField("booleanField", GraphQLBoolean) + + when: + def result = fetcher.get(environment) + then: + result == true + when: - def result = new PropertyDataFetcher("booleanField").get(environment) + result = fetcher.get(field, dataHolder, { environment }) then: result == true + + where: + fetcher | _ + new PropertyDataFetcher("booleanField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get Boolean property value with get"() { given: - def environment = env(GraphQLBoolean) + def environment = env("booleanFieldWithGet", GraphQLBoolean) + def field = mkField("booleanFieldWithGet", GraphQLBoolean) + + when: + def result = fetcher.get(environment) + then: + result == false + when: - def result = new PropertyDataFetcher("booleanFieldWithGet").get(environment) + result = fetcher.get(field, dataHolder, { environment }) then: result == false + + where: + fetcher | _ + new PropertyDataFetcher("booleanFieldWithGet") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get public field value as property"() { given: - def environment = env(GraphQLString) + def environment = env("publicField", GraphQLString) + def field = mkField("publicField", GraphQLString) + + when: + def result = fetcher.get(environment) + then: + result == "publicValue" + when: - def result = new PropertyDataFetcher("publicField").get(environment) + result = fetcher.get(field, dataHolder, { environment }) then: result == "publicValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicField") | _ + SingletonPropertyDataFetcher.singleton() | _ } } diff --git a/src/test/groovy/graphql/DataFetcherWithErrorsAndDataTest.groovy b/src/test/groovy/graphql/DataFetcherWithErrorsAndDataTest.groovy index eb9f20cfca..2d5e8efa02 100644 --- a/src/test/groovy/graphql/DataFetcherWithErrorsAndDataTest.groovy +++ b/src/test/groovy/graphql/DataFetcherWithErrorsAndDataTest.groovy @@ -2,23 +2,24 @@ package graphql import graphql.execution.AsyncExecutionStrategy import graphql.execution.AsyncSerialExecutionStrategy -import graphql.execution.ExecutorServiceExecutionStrategy import graphql.language.SourceLocation +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLOutputType import graphql.schema.GraphQLSchema import graphql.schema.idl.RuntimeWiring import spock.lang.Specification import spock.lang.Unroll -import java.util.concurrent.CompletableFuture - import static graphql.ExecutionInput.newExecutionInput +import static graphql.GraphqlErrorBuilder.newError import static graphql.Scalars.GraphQLString import static graphql.execution.DataFetcherResult.newResult import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLObjectType.newObject import static graphql.schema.GraphQLSchema.newSchema -import static java.util.concurrent.ForkJoinPool.commonPool /** * A set of tests to show how a data fetcher can return errors and data and field context @@ -35,53 +36,92 @@ class DataFetcherWithErrorsAndDataTest extends Specification { ChildObject child = new ChildObject() } - def executionInput(String query) { + static def executionInput(String query) { newExecutionInput().query(query).build() } + class ParentDataFetcher implements DataFetcher { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return newResult() + .data(new ParentObject()) + .errors([newError() + .message("badField is bad") + .path(["root", "parent", "child", "badField"]) + .location(environment.getField().getSourceLocation()) + .build()]) + .build() + } + } + + class ChildDataFetcher implements DataFetcher { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return newResult() + .data(["goodField": null, "badField": null]) + .errors([newError() + .message("goodField is bad") + .path(["root", "parent", "child", "goodField"]) + .location(environment.getField().getSourceLocation()) + .build(), + newError().message("badField is bad") + .path(["root", "parent", "child", "badField"]) + .location(environment.getField().getSourceLocation()) + .build()]) + .build() + } + } + @Unroll def "#820 - data fetcher can return data and errors (strategy: #strategyName)"() { - // see https://github.com/graphql-java/graphql-java/issues/820 given: - + def queryTypeName = "QueryType" + def rootFieldName = "root" + def rootTypeName = "rootType" + def parentFieldName = "parent" GraphQLOutputType childType = newObject() .name("childType") - .field(newFieldDefinition().name("goodField") - .type(GraphQLString)) - .field(newFieldDefinition().name("badField") - .type(GraphQLString)) + .field(newFieldDefinition() + .name("goodField") + .type(GraphQLString)) + .field(newFieldDefinition() + .name("badField") + .type(GraphQLString)) .build() GraphQLOutputType parentType = newObject() .name("parentType") - .field(newFieldDefinition().name("child") - .type(childType)) + .field(newFieldDefinition() + .name("child") + .type(childType)) .build() GraphQLOutputType rootType = newObject() - .name("rootType") - .field(newFieldDefinition().name("parent") - .type(parentType) - .dataFetcher({ env -> - newResult() - .data(new ParentObject()) - .mapRelativeErrors(true) - .errors([new DataFetchingErrorGraphQLError("badField is bad", ["child", "badField"])]) - .build() + .name(rootTypeName) + .field(newFieldDefinition() + .name(parentFieldName) + .type(parentType)) + .build() - })) + def rootTypeCoordinates = FieldCoordinates.coordinates(queryTypeName, rootFieldName) + def parentTypeCoordinates = FieldCoordinates.coordinates(rootTypeName, parentFieldName) + DataFetcher rootTypeDataFetcher = { env -> [:] } + DataFetcher parentTypeDataFetcher = new ParentDataFetcher() + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(rootTypeCoordinates, rootTypeDataFetcher) + .dataFetcher(parentTypeCoordinates, parentTypeDataFetcher) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryTypeName) .field(newFieldDefinition() - .name("root") - .type(rootType) - .dataFetcher({ env -> [:] }) - - )) + .name(rootFieldName) + .type(rootType) + )) .build() def query = """ @@ -108,7 +148,7 @@ class DataFetcherWithErrorsAndDataTest extends Specification { result.errors.size() == 1 result.errors[0].path == ["root", "parent", "child", "badField"] result.errors[0].message == "badField is bad" - result.errors[0].locations == [new SourceLocation(6, 27)] + result.errors[0].locations == [new SourceLocation(4, 17)] result.data["root"]["parent"]["child"]["goodField"] == "good" result.data["root"]["parent"]["child"]["badField"] == null @@ -116,55 +156,60 @@ class DataFetcherWithErrorsAndDataTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() } @Unroll def "#820 - data fetcher can return multiple errors (strategy: #strategyName)"() { - // see https://github.com/graphql-java/graphql-java/issues/820 given: - + def queryTypeName = "QueryType" + def rootFieldName = "root" + def parentTypeName = "parentType" + def childFieldName = "child" GraphQLOutputType childType = newObject() .name("childType") - .field(newFieldDefinition().name("goodField") - .type(GraphQLString)) - .field(newFieldDefinition().name("badField") - .type(GraphQLString)) + .field(newFieldDefinition() + .name("goodField") + .type(GraphQLString)) + .field(newFieldDefinition() + .name("badField") + .type(GraphQLString)) .build() GraphQLOutputType parentType = newObject() - .name("parentType") - .field(newFieldDefinition().name("child") - .type(childType) - .dataFetcher({ env -> - newResult() - .data(["goodField": null, "badField": null]) - .mapRelativeErrors(true) - .errors([ - new DataFetchingErrorGraphQLError("goodField is bad", ["goodField"]), - new DataFetchingErrorGraphQLError("badField is bad", ["badField"]) - ]).build() - })) + .name(parentTypeName) + .field(newFieldDefinition() + .name(childFieldName) + .type(childType)) .build() GraphQLOutputType rootType = newObject() .name("rootType") - .field(newFieldDefinition().name("parent") - .type(parentType)) + .field(newFieldDefinition() + .name("parent") + .type(parentType)) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field(newFieldDefinition() - .name("root") - .type(rootType) - .dataFetcher({ env -> ["parent": [:]] }) + def rootTypeCoordinates = FieldCoordinates.coordinates(queryTypeName, rootFieldName) + def childTypeCoordinates = FieldCoordinates.coordinates(parentTypeName, childFieldName) + DataFetcher rootTypeDataFetcher = { env -> ["parent": [:]] } + DataFetcher childTypeDataFetcher = new ChildDataFetcher() - )) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(rootTypeCoordinates, rootTypeDataFetcher) + .dataFetcher(childTypeCoordinates, childTypeDataFetcher) + .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryTypeName) + .field(newFieldDefinition() + .name(rootFieldName) + .type(rootType) + )) .build() def query = """ @@ -191,10 +236,10 @@ class DataFetcherWithErrorsAndDataTest extends Specification { result.errors.size() == 2 result.errors[0].path == ["root", "parent", "child", "goodField"] result.errors[0].message == "goodField is bad" - result.errors[0].locations == [new SourceLocation(7, 31)] + result.errors[0].locations == [new SourceLocation(5, 21)] result.errors[1].path == ["root", "parent", "child", "badField"] result.errors[1].message == "badField is bad" - result.errors[1].locations == [new SourceLocation(7, 31)] + result.errors[1].locations == [new SourceLocation(5, 21)] result.data["root"]["parent"]["child"]["goodField"] == null result.data["root"]["parent"]["child"]["badField"] == null @@ -202,161 +247,10 @@ class DataFetcherWithErrorsAndDataTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() } - @Unroll - def "#820 - data fetcher can return multiple errors on one field, but collapsed (strategy: #strategyName)"() { - - // see https://github.com/graphql-java/graphql-java/issues/820 - - given: - - - GraphQLOutputType childType = newObject() - .name("childType") - .field(newFieldDefinition().name("goodField") - .type(GraphQLString)) - .field(newFieldDefinition().name("badField") - .type(GraphQLString)) - .build() - GraphQLOutputType parentType = newObject() - .name("parentType") - .field(newFieldDefinition().name("child") - .type(childType) - .dataFetcher({ env -> - newResult().data(null) - .mapRelativeErrors(true) - .errors([ - new DataFetchingErrorGraphQLError("error 1", []), - new DataFetchingErrorGraphQLError("error 2", []) - ]).build() - })) - .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field(newFieldDefinition() - .name("parent") - .type(parentType) - .dataFetcher({ env -> [:] }) - - )) - .build() - - def query = """ - query { - parent { - child { - goodField - badField - } - } - } - """ - - def result = GraphQL - .newGraphQL(schema) - .queryExecutionStrategy(executionStrategy) - .build() - .execute(executionInput(query)) - - expect: - - result.errors.size() == 2 - result.errors[0].path == ["parent", "child"] - result.errors[0].message == "error 1" - result.errors[0].locations == [new SourceLocation(6, 27)] - - result.errors[1].path == ["parent", "child"] - result.errors[1].message == "error 2" - result.errors[1].locations == [new SourceLocation(6, 27)] - - result.data["parent"]["child"] == null - - where: - - strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) - 'async' | new AsyncExecutionStrategy() - 'asyncSerial' | new AsyncSerialExecutionStrategy() - } - - @Unroll - def "#820 - data fetcher can return data and errors as completable future (strategy: #strategyName)"() { - - // see https://github.com/graphql-java/graphql-java/issues/820 - - given: - - GraphQLOutputType childType = newObject() - .name("childType") - .field(newFieldDefinition().name("goodField") - .type(GraphQLString)) - .field(newFieldDefinition().name("badField") - .type(GraphQLString)) - .build() - GraphQLOutputType parentType = newObject() - .name("parentType") - .field(newFieldDefinition().name("child") - .type(childType) - .dataFetcher({ env -> - CompletableFuture.completedFuture(newResult() - .data(new ChildObject()) - .mapRelativeErrors(true) - .error( - new DataFetchingErrorGraphQLError("badField is bad", ["badField"]) - ).build()) - })) - .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field(newFieldDefinition() - .name("parent") - .type(parentType) - .dataFetcher({ env -> [:] }) - - )) - .build() - - def query = """ - query { - parent { - child { - goodField - badField - } - } - } - """ - - def result = GraphQL - .newGraphQL(schema) - .queryExecutionStrategy(executionStrategy) - .build() - .execute(executionInput(query)) - - expect: - - result.errors.size() == 1 - result.errors[0].path == ["parent", "child", "badField"] - result.errors[0].message == "badField is bad" - result.errors[0].locations == [new SourceLocation(6, 27)] - - result.data["parent"]["child"]["goodField"] == "good" - result.data["parent"]["child"]["badField"] == null - where: - - strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) - 'async' | new AsyncExecutionStrategy() - 'asyncSerial' | new AsyncSerialExecutionStrategy() - } - - @Unroll def "data fetcher can return context down each level (strategy: #strategyName)"() { given: @@ -386,25 +280,25 @@ class DataFetcherWithErrorsAndDataTest extends Specification { def runtimeWiring = RuntimeWiring.newRuntimeWiring() .type("Query", - { type -> - type.dataFetcher("first", new ContextPassingDataFetcher()) - }) + { type -> + type.dataFetcher("first", new ContextPassingDataFetcher()) + }) .type("Level1", - { type -> - type.dataFetcher("second", new ContextPassingDataFetcher()) - }) + { type -> + type.dataFetcher("second", new ContextPassingDataFetcher()) + }) .type("Level2", - { type -> - type.dataFetcher("third", new ContextPassingDataFetcher()) - }) + { type -> + type.dataFetcher("third", new ContextPassingDataFetcher()) + }) .type("Level3", - { type -> - type.dataFetcher("skip", new ContextPassingDataFetcher(true)) - }) + { type -> + type.dataFetcher("skip", new ContextPassingDataFetcher(true)) + }) .type("Level4", - { type -> - type.dataFetcher("fourth", new ContextPassingDataFetcher()) - }) + { type -> + type.dataFetcher("fourth", new ContextPassingDataFetcher()) + }) .build() def query = ''' @@ -424,7 +318,7 @@ class DataFetcherWithErrorsAndDataTest extends Specification { def result = TestUtil.graphQL(spec, runtimeWiring) .queryExecutionStrategy(executionStrategy) .build() - .execute(newExecutionInput().query(query).root("").context(1)) + .execute(newExecutionInput().query(query).root("").graphQLContext(["key": 1])) expect: @@ -434,7 +328,6 @@ class DataFetcherWithErrorsAndDataTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() diff --git a/src/test/groovy/graphql/DataFetchingErrorGraphQLError.groovy b/src/test/groovy/graphql/DataFetchingErrorGraphQLError.groovy deleted file mode 100644 index 4bec241a8d..0000000000 --- a/src/test/groovy/graphql/DataFetchingErrorGraphQLError.groovy +++ /dev/null @@ -1,42 +0,0 @@ -package graphql - -import graphql.language.SourceLocation - -class DataFetchingErrorGraphQLError implements GraphQLError { - - List path - String message - List locations - - DataFetchingErrorGraphQLError(String message) { - this.message = message - this.path = null - this.locations = null - } - - DataFetchingErrorGraphQLError(String message, List path) { - this.message = message - this.path = path - this.locations = [new SourceLocation(2, 10)] - } - - @Override - String getMessage() { - return message - } - - @Override - List getLocations() { - return locations - } - - @Override - ErrorType getErrorType() { - return ErrorType.DataFetchingException - } - - @Override - List getPath() { - return path - } -} diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy new file mode 100644 index 0000000000..ccb26fe979 --- /dev/null +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -0,0 +1,116 @@ +package graphql + +import graphql.schema.DataFetcher +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput + +class DefaultValuesTest extends Specification { + + def "provided values override defaults"() { + def sdl = """ + type Query { + myField(deleted: Boolean = true) : String + myField2(deleted: Boolean = true) : String + } + """ + + def df = { env -> + return "dataFetcherArg=" + env.getArgument("deleted") + } as DataFetcher + def graphQL = TestUtil.graphQL(sdl, [Query: [ + myField : df, + myField2: df]] + ).build() + + // + // The variable is present in the variables map and its explicitly null + // + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values + // + when: + def ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["deleted": null]).build() + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=null"] + + // + // The variable is present in the variables map and its explicitly a value + // + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values + // + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["deleted": true]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=true"] + + // + // The variable is NOT present in the variables map it should use a default + // value from the variable declaration + // + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values + // + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=false"] + + // + // The variable is NOT present in the variables map and a variable is NOT used + // it should use a default value from the field declaration + // + // + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField + myField2(deleted : $deleted) + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField : "dataFetcherArg=true", + myField2: "dataFetcherArg=false"] + + // + // If there are no variables on the query operation + // it should use a default value from the field declaration + // or literals provided + // + when: + ei = newExecutionInput(''' + query myQuery { + myField(deleted :false) + myField2 + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField : "dataFetcherArg=false", + myField2: "dataFetcherArg=true"] + } +} diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy new file mode 100644 index 0000000000..592f7d2a1d --- /dev/null +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -0,0 +1,500 @@ +package graphql + +import graphql.execution.DataFetcherExceptionHandler +import graphql.execution.DataFetcherExceptionHandlerResult +import graphql.execution.EngineRunningObserver +import graphql.execution.ExecutionId +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.preparsed.PreparsedDocumentEntry +import graphql.execution.preparsed.PreparsedDocumentProvider +import graphql.parser.Parser +import graphql.schema.DataFetcher +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CopyOnWriteArrayList +import java.util.concurrent.locks.ReentrantLock +import java.util.function.Function + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.execution.EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY +import static graphql.execution.EngineRunningObserver.RunningState +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING_FINISH +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING_START + +class EngineRunningTest extends Specification { + + + private static List trackStates(ExecutionInput ei) { + List states = new CopyOnWriteArrayList<>(); + ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { + ExecutionId executionId, GraphQLContext context, RunningState running -> + states.add(running) + } as EngineRunningObserver); + states + } + + def "preparsed async document provider"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + def query = "{ hello }" + def document = Parser.parse(query) + + CompletableFuture cf = new CompletableFuture() + PreparsedDocumentProvider preparsedDocumentProvider = new PreparsedDocumentProvider() { + @Override + CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).preparsedDocumentProvider(preparsedDocumentProvider).build() + + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear() + cf.complete(new PreparsedDocumentEntry(document)) + then: + states == [RUNNING, NOT_RUNNING_FINISH] + er.get().data == [hello: "world"] + + + } + + def "engine starts before instrumentation state and handles async state correctly"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + CompletableFuture cf = new CompletableFuture() + Instrumentation instrumentation = new Instrumentation() { + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear() + cf.complete(new InstrumentationState() {}) + then: + states == [RUNNING, NOT_RUNNING_FINISH] + er.get().data == [hello: "world"] + + + } + + def "async instrument execution result"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + CompletableFuture cf = new CompletableFuture() + Instrumentation instrumentation = new Instrumentation() { + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear() + cf.complete(ExecutionResultImpl.newExecutionResult().data([hello: "world-modified"]).build()) + then: + er.get().data == [hello: "world-modified"] + states == [RUNNING, NOT_RUNNING_FINISH] + + + } + + + def "engine running state is observed"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.execute(ei) + then: + er.data == [hello: "world"] + states == [RUNNING_START, NOT_RUNNING_FINISH] + } + + def "multiple async DF"() { + given: + def sdl = ''' + + type Query { + hello: String + hello2: String + foo: Foo + someStaticValue: Bar + } + type Foo { + name: String + } + type Bar { + staticValue: String + } + ''' + CompletableFuture cf1 = new CompletableFuture(); + CompletableFuture cf2 = new CompletableFuture(); + CompletableFuture cfFooName = new CompletableFuture(); + def df1 = { env -> + return cf1; + } as DataFetcher + + def df2 = { env -> + return cf2; + } as DataFetcher + + def dfFoo = { env -> + return "Foo"; + } as DataFetcher + + def dfFooName = { env -> + return cfFooName; + } as DataFetcher + + def dfStaticValue = { env -> + return [staticValue: "staticValue"] + } as DataFetcher + + + def fetchers = [Query: ["hello": df1, "hello2": df2, foo: dfFoo, someStaticValue: dfStaticValue], Foo: [name: dfFooName]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello hello2 foo { name } someStaticValue {staticValue} }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear(); + cf1.complete("world") + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cfFooName.complete("FooName") + then: + states == [RUNNING, NOT_RUNNING] + + + when: + states.clear() + cf2.complete("world2") + then: + states == [RUNNING, NOT_RUNNING_FINISH] + er.get().data == [hello: "world", hello2: "world2", foo: [name: "FooName"], someStaticValue: [staticValue: "staticValue"]] + } + + + def "engine running state is observed with one async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + CompletableFuture cf = new CompletableFuture(); + def df = { env -> + return cf; + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear(); + cf.complete("world") + + then: + states == [RUNNING, NOT_RUNNING_FINISH] + er.get().data == [hello: "world"] + } + + def "engine running state is observed with one dependent async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + CompletableFuture cf = new CompletableFuture(); + def df = { env -> + return cf.thenApply { it -> it } + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear(); + cf.complete("world") + + then: + er.get().data == [hello: "world"] + states == [RUNNING, NOT_RUNNING_FINISH] + } + + + def "datafetcher failing with async exception handler"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + throw new RuntimeException("boom") + } as DataFetcher + + ReentrantLock reentrantLock = new ReentrantLock() + reentrantLock.lock(); + + def exceptionHandler = { param -> + def async = CompletableFuture.supplyAsync { + reentrantLock.lock(); + return DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder + .newError(param.dataFetchingEnvironment).message("recovered").build()).build() + } + return async + } as DataFetcherExceptionHandler + + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + states.clear() + reentrantLock.unlock() + def result = er.get() + + then: + result.errors.collect { it.message } == ["recovered"] + states == [RUNNING, NOT_RUNNING_FINISH] + } + + def "async datafetcher failing with async exception handler"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def cf = new CompletableFuture(); + def df = { env -> + return cf.thenApply { it -> throw new RuntimeException("boom") } + } as DataFetcher + + ReentrantLock reentrantLock = new ReentrantLock() + reentrantLock.lock(); + + def exceptionHandler = { param -> + def async = CompletableFuture.supplyAsync { + reentrantLock.lock(); + return DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder + .newError(param.dataFetchingEnvironment).message("recovered").build()).build() + } + return async + } as DataFetcherExceptionHandler + + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear() + cf.complete("foo") + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + reentrantLock.unlock() + def result = er.get() + + then: + result.errors.collect { it.message } == ["recovered"] + states == [RUNNING, NOT_RUNNING_FINISH] + } + + + def "engine running state is observed with two async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + hello2: String + } + ''' + CompletableFuture cf1 = new CompletableFuture(); + CompletableFuture cf2 = new CompletableFuture(); + def df = { env -> + return cf1; + } as DataFetcher + def df2 = { env -> + return cf2 + } as DataFetcher + + def fetchers = ["Query": ["hello": df, "hello2": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello hello2 }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING_START, NOT_RUNNING] + + when: + states.clear(); + cf1.complete("world") + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf2.complete("world2") + + then: + states == [RUNNING, NOT_RUNNING_FINISH] + er.get().data == [hello: "world", hello2: "world2"] + } +} diff --git a/src/test/groovy/graphql/EnumValues.groovy b/src/test/groovy/graphql/EnumValues.groovy new file mode 100644 index 0000000000..1f37f62af9 --- /dev/null +++ b/src/test/groovy/graphql/EnumValues.groovy @@ -0,0 +1,152 @@ +package graphql + +import graphql.schema.idl.NaturalEnumValuesProvider +import spock.lang.Specification + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring + +class EnumValues extends Specification { + + static enum SomeEnum { + TWO(2), + THREE(3) + public final int number + + SomeEnum(int number) { + this.number = number + } + } + + def spec = ''' + enum SomeEnum { + TWO + THREE + } + + input Input { + e: SomeEnum! + } + + type Query { + field(e: SomeEnum = TWO) : Int! + wrappedArgField(e: [SomeEnum!]! = [TWO, THREE]) : Int! + inputField(i: Input = {e: THREE}) : Int! + } + ''' + + def typeRuntimeWiring = newTypeWiring('SomeEnum').enumValues(new NaturalEnumValuesProvider(SomeEnum)).build() + def queryRuntimeWriting = newTypeWiring('Query') + .dataFetcher( + 'field', + { env -> + def arg = env.getArgument("e") + // Be careful! In groovy `arg as SomeEnum` will convert a string to an enum, and the point of this test + // is to show that this isn't needed. + assert arg instanceof SomeEnum + arg.number + }) + .dataFetcher( + 'wrappedArgField', + { env -> + def arg = env.getArgument("e") + // Be careful! In groovy `arg as SomeEnum` will convert a string to an enum, and the point of this test + // is to show that this isn't needed. + (arg as List).collect { e -> + // Be careful! In groovy `e as SomeEnum` will convert a string to an enum, and the point of this test + // is to show that this isn't needed. + assert e instanceof SomeEnum + e.number + }.sum() + }) + .dataFetcher( + 'inputField', + { env -> + Map arg = env.getArgument("i") + def e = arg.get("e") + // Be careful! In groovy `arg as SomeEnum` will convert a string to an enum, and the point of this test + // is to show that this isn't needed. + assert e instanceof SomeEnum + e.number + }) + def runtimeWiring = newRuntimeWiring().type(typeRuntimeWiring).type(queryRuntimeWriting).build() + def graphql = TestUtil.graphQL(spec, runtimeWiring).build() + + def "explicit enum values go through EnumValuesProvider"() { + when: + def result = graphql.execute(''' + { + field(e: THREE) + } + ''') + + then: + result.errors.isEmpty() + result.data == [field: 3] + } + + def "default enum values go through EnumValuesProvider"() { + when: + def result = graphql.execute(''' + { + field + } + ''') + + then: + result.errors.isEmpty() + result.data == [field: 2] + } + + def "wrapped explicit enum values go through EnumValuesProvider"() { + when: + def result = graphql.execute(''' + { + wrappedArgField(e: [TWO, TWO, THREE]) + } + ''') + + then: + result.errors.isEmpty() + result.data == [wrappedArgField: 7] + } + + def "wrapped default enum values go through EnumValuesProvider"() { + when: + def result = graphql.execute(''' + { + wrappedArgField + } + ''') + + then: + result.errors.isEmpty() + result.data == [wrappedArgField: 5] + } + + def "explicit enum values in input objects go through EnumValuesProvider"() { + when: + def result = graphql.execute(''' + { + inputField(i: {e: TWO}) + } + ''') + + then: + result.errors.isEmpty() + result.data == [inputField: 2] + } + + def "default enum values in input objects go through EnumValuesProvider"() { + when: + def result = graphql.execute(''' + { + inputField + } + ''') + + then: + result.errors.isEmpty() + result.data == [inputField: 3] + } +} diff --git a/src/test/groovy/graphql/ErrorsTest.groovy b/src/test/groovy/graphql/ErrorsTest.groovy index 46d15f2d8c..e346a26b47 100644 --- a/src/test/groovy/graphql/ErrorsTest.groovy +++ b/src/test/groovy/graphql/ErrorsTest.groovy @@ -1,6 +1,6 @@ package graphql -import graphql.execution.ExecutionPath +import graphql.execution.ResultPath import graphql.language.SourceLocation import graphql.validation.ValidationError import graphql.validation.ValidationErrorType @@ -43,9 +43,21 @@ class ErrorsTest extends Specification { def "ValidationError equals and hashcode works"() { expect: - def same1 = new ValidationError(ValidationErrorType.BadValueForDefaultArg, [src(15, 34), src(23, 567)], "bad ju ju") - def same2 = new ValidationError(ValidationErrorType.BadValueForDefaultArg, [src(15, 34), src(23, 567)], "bad ju ju") - def different1 = new ValidationError(ValidationErrorType.FieldsConflict, [src(15, 34), src(23, 567)], "bad ju ju") + def same1 = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.BadValueForDefaultArg) + .sourceLocations([src(15, 34), src(23, 567)]) + .description("bad ju ju") + .build() + def same2 = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.BadValueForDefaultArg) + .sourceLocations([src(15, 34), src(23, 567)]) + .description("bad ju ju") + .build() + def different1 = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.FieldsConflict) + .sourceLocations([src(15, 34), src(23, 567)]) + .description("bad ju ju") + .build() commonAssert(same1, same2, different1) } @@ -53,9 +65,9 @@ class ErrorsTest extends Specification { def "ExceptionWhileDataFetching equals and hashcode works"() { expect: - def same1 = new ExceptionWhileDataFetching(ExecutionPath.rootPath(), new RuntimeException("bad ju ju"), null) - def same2 = new ExceptionWhileDataFetching(ExecutionPath.rootPath(), new RuntimeException("bad ju ju"), null) - def different1 = new ExceptionWhileDataFetching(ExecutionPath.rootPath(), new RuntimeException("unexpected ju ju"), null) + def same1 = new ExceptionWhileDataFetching(ResultPath.rootPath(), new RuntimeException("bad ju ju"), null) + def same2 = new ExceptionWhileDataFetching(ResultPath.rootPath(), new RuntimeException("bad ju ju"), null) + def different1 = new ExceptionWhileDataFetching(ResultPath.rootPath(), new RuntimeException("unexpected ju ju"), null) commonAssert(same1, same2, different1) } diff --git a/src/test/groovy/graphql/ExecutionInputTest.groovy b/src/test/groovy/graphql/ExecutionInputTest.groovy index a0f0c1a7b2..23c06ea9c7 100644 --- a/src/test/groovy/graphql/ExecutionInputTest.groovy +++ b/src/test/groovy/graphql/ExecutionInputTest.groovy @@ -1,95 +1,160 @@ package graphql -import graphql.cachecontrol.CacheControl import graphql.execution.ExecutionId +import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationContext +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters +import graphql.execution.preparsed.persisted.PersistedQuerySupport import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment import org.dataloader.DataLoaderRegistry import spock.lang.Specification -import java.util.function.UnaryOperator +import java.time.Duration +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CountDownLatch + +import static org.awaitility.Awaitility.* class ExecutionInputTest extends Specification { def query = "query { hello }" def registry = new DataLoaderRegistry() - def cacheControl = CacheControl.newCacheControl() def root = "root" - def context = "context" def variables = [key: "value"] def "build works"() { when: def executionInput = ExecutionInput.newExecutionInput().query(query) .dataLoaderRegistry(registry) - .cacheControl(cacheControl) .variables(variables) .root(root) - .context(context) + .graphQLContext({ it.of(["a": "b"]) }) .locale(Locale.GERMAN) + .extensions([some: "map"]) .build() then: - executionInput.context == context + executionInput.graphQLContext.get("a") == "b" executionInput.root == root executionInput.variables == variables + executionInput.rawVariables.toMap() == variables executionInput.dataLoaderRegistry == registry - executionInput.cacheControl == cacheControl executionInput.query == query executionInput.locale == Locale.GERMAN + executionInput.extensions == [some: "map"] + executionInput.toString() != null } - def "context methods work"() { + def "build without locale"() { when: def executionInput = ExecutionInput.newExecutionInput().query(query) - .context({ builder -> builder.of("k1", "v1") } as UnaryOperator) + .dataLoaderRegistry(registry) + .variables(variables) + .root(root) + .graphQLContext({ it.of(["a": "b"]) }) + .locale(null) + .extensions([some: "map"]) .build() then: - (executionInput.context as GraphQLContext).get("k1") == "v1" + executionInput.locale == Locale.getDefault() + } + def "map context build works"() { when: - executionInput = ExecutionInput.newExecutionInput().query(query) - .context(GraphQLContext.newContext().of("k2", "v2")) + def executionInput = ExecutionInput.newExecutionInput().query(query) + .graphQLContext([a: "b"]) .build() then: - (executionInput.context as GraphQLContext).get("k2") == "v2" + executionInput.graphQLContext.get("a") == "b" } - def "context is defaulted"() { + def "legacy context is defaulted"() { + // Retaining deprecated method tests for coverage when: def executionInput = ExecutionInput.newExecutionInput().query(query) .build() then: - executionInput.context instanceof GraphQLContext + executionInput.context instanceof GraphQLContext // Retain deprecated for test coverage + executionInput.getGraphQLContext() == executionInput.getContext() // Retain deprecated for test coverage + } + + def "graphql context is defaulted"() { + when: + def executionInput = ExecutionInput.newExecutionInput().query(query) + .build() + then: + executionInput.graphQLContext instanceof GraphQLContext + } + + def "locale defaults to JVM default"() { + when: + def executionInput = ExecutionInput.newExecutionInput().query(query) + .build() + then: + executionInput.getLocale() == Locale.getDefault() } def "transform works and copies values"() { when: def executionInputOld = ExecutionInput.newExecutionInput().query(query) .dataLoaderRegistry(registry) - .cacheControl(cacheControl) .variables(variables) + .extensions([some: "map"]) .root(root) - .context(context) + .graphQLContext({ it.of(["a": "b"]) }) .locale(Locale.GERMAN) .build() + def graphQLContext = executionInputOld.getGraphQLContext() def executionInput = executionInputOld.transform({ bldg -> bldg.query("new query") }) then: - executionInput.context == context + executionInput.graphQLContext == graphQLContext executionInput.root == root executionInput.variables == variables executionInput.dataLoaderRegistry == registry - executionInput.cacheControl == cacheControl executionInput.locale == Locale.GERMAN + executionInput.extensions == [some: "map"] + executionInput.query == "new query" + } + + def "transform works and sets variables"() { + when: + def executionInputOld = ExecutionInput.newExecutionInput().query(query) + .dataLoaderRegistry(registry) + .extensions([some: "map"]) + .root(root) + .graphQLContext({ it.of(["a": "b"]) }) + .locale(Locale.GERMAN) + .build() + def graphQLContext = executionInputOld.getGraphQLContext() + def executionInput = executionInputOld.transform({ bldg -> + bldg + .query("new query") + .variables(variables) + }) + + then: + executionInput.graphQLContext == graphQLContext + executionInput.root == root + executionInput.rawVariables.toMap() == variables + executionInput.dataLoaderRegistry == registry + executionInput.locale == Locale.GERMAN + executionInput.extensions == [some: "map"] executionInput.query == "new query" } def "defaults query into builder as expected"() { when: - def executionInput = ExecutionInput.newExecutionInput("{ q }").build() + def executionInput = ExecutionInput.newExecutionInput("{ q }") + .locale(Locale.ENGLISH) + .build() then: executionInput.query == "{ q }" - executionInput.cacheControl != null - executionInput.locale == null + executionInput.locale == Locale.ENGLISH executionInput.dataLoaderRegistry != null executionInput.variables == [:] } @@ -101,11 +166,11 @@ class ExecutionInputTest extends Specification { fetch : String } ''' - DataFetcher df = { env -> + DataFetcher df = { DataFetchingEnvironment env -> return [ - "locale" : env.getLocale().getDisplayName(), - "cacheControl": env.getCacheControl() == cacheControl, - "executionId" : env.getExecutionId().toString() + "locale" : env.getLocale().getDisplayName(Locale.ENGLISH), + "executionId" : env.getExecutionId().toString(), + "graphqlContext": env.getGraphQlContext().get("a") ] } @@ -116,13 +181,285 @@ class ExecutionInputTest extends Specification { ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query("{ fetch }") .locale(Locale.GERMAN) - .cacheControl(cacheControl) .executionId(ExecutionId.from("ID123")) .build() + executionInput.getGraphQLContext().putAll([a: "b"]) + def er = graphQL.execute(executionInput) then: er.errors.isEmpty() - er.data["fetch"] == "{locale=German, cacheControl=true, executionId=ID123}" + er.data["fetch"] == "{locale=German, executionId=ID123, graphqlContext=b}" + } + + def "can cancel the execution"() { + def sdl = ''' + type Query { + fetch1 : Inner + fetch2 : Inner + } + + type Inner { + f : String + } + + ''' + + CountDownLatch fieldLatch = new CountDownLatch(1) + + DataFetcher df1Sec = { DataFetchingEnvironment env -> + println("Entering DF1") + return CompletableFuture.supplyAsync { + println("DF1 async run") + fieldLatch.await() + Thread.sleep(1000) + return [f: "x"] + } + } + DataFetcher df10Sec = { DataFetchingEnvironment env -> + println("Entering DF10") + return CompletableFuture.supplyAsync { + println("DF10 async run") + fieldLatch.await() + Thread.sleep(10000) + return "x" + } + } + + def fetcherMap = ["Query": ["fetch1": df1Sec, "fetch2": df1Sec], + "Inner": ["f": df10Sec] + ] + def schema = TestUtil.schema(sdl, fetcherMap) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query q { fetch1 { f } fetch2 { f } }") + .build() + + def cf = graphQL.executeAsync(executionInput) + + Thread.sleep(250) // let it get into the field fetching say + + // lets cancel it + println("cancelling") + executionInput.cancel() + + // let the DFs run + println("make the fields run") + fieldLatch.countDown() + + println("and await for the overall CF to complete") + await().atMost(Duration.ofSeconds(60)).until({ -> cf.isDone() }) + + def er = cf.join() + + then: + !er.errors.isEmpty() + er.errors[0]["message"] == "Execution has been asked to be cancelled" + } + + def "can cancel request at random times (#testName)"() { + def sdl = ''' + type Query { + fetch1 : Inner + fetch2 : Inner + } + + type Inner { + inner : Inner + f : String + } + + ''' + + when: + + CountDownLatch fetcherLatch = new CountDownLatch(1) + + DataFetcher df = { DataFetchingEnvironment env -> + return CompletableFuture.supplyAsync { + fetcherLatch.countDown() + def delay = plusOrMinus(dfDelay) + println("DF ${env.getExecutionStepInfo().getPath()} sleeping for $delay") + Thread.sleep(delay) + return [inner: [f: "x"], f: "x"] + } + } + + def fetcherMap = ["Query": ["fetch1": df, "fetch2": df], + "Inner": ["inner": df] + ] + def schema = TestUtil.schema(sdl, fetcherMap) + def graphQL = GraphQL.newGraphQL(schema).build() + + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query q { fetch1 { inner { inner { inner { f }}}} fetch2 { inner { inner { inner { f }}}} }") + .build() + + def cf = graphQL.executeAsync(executionInput) + + // wait for at least one fetcher to run + fetcherLatch.await() + + // using a random number MAY make this test flaky - but so be it. We want ot make sure that + // if we cancel then we dont lock up. We have deterministic tests for that so lets hav + // some random ones + // + def randomCancel = plusOrMinus(dfDelay) + Thread.sleep(randomCancel) + + // now make it cancel + println("Cancelling after $randomCancel") + executionInput.cancel() + + await().atMost(Duration.ofSeconds(10)).until({ -> cf.isDone() }) + + def er = cf.join() + + then: + !er.errors.isEmpty() + er.errors[0]["message"] == "Execution has been asked to be cancelled" + + where: + testName | dfDelay + "50 ms" | plusOrMinus(50) + "100 ms" | plusOrMinus(100) + "200 ms" | plusOrMinus(200) + "500 ms" | plusOrMinus(500) + "1000 ms" | plusOrMinus(1000) + } + + def "uses persisted query marker when query is null"() { + when: + ExecutionInput.newExecutionInput().query(null).build() + then: + thrown(AssertException) + } + + def "uses persisted query marker when query is null and extensions contains persistedQuery"() { + when: + def executionInput = ExecutionInput.newExecutionInput() + .extensions([persistedQuery: "any"]) + .query(null) + .build() + then: + executionInput.query == PersistedQuerySupport.PERSISTED_QUERY_MARKER + } + + def "uses persisted query marker when query is empty and extensions contains persistedQuery"() { + when: + def executionInput = ExecutionInput.newExecutionInput() + .extensions([persistedQuery: "any"]) + .query("") + .build() + then: + executionInput.query == PersistedQuerySupport.PERSISTED_QUERY_MARKER + } + + def "can cancel at specific places"() { + def sdl = ''' + type Query { + fetch1 : Inner + fetch2 : Inner + } + + type Inner { + inner : Inner + f : String + } + + ''' + + when: + + DataFetcher df = { DataFetchingEnvironment env -> + return CompletableFuture.supplyAsync { + return [inner: [f: "x"], f: "x"] + } + } + + def fetcherMap = ["Query": ["fetch1": df, "fetch2": df], + "Inner": ["inner": df] + ] + + + def queryText = "query q { fetch1 { inner { inner { inner { f }}}} fetch2 { inner { inner { inner { f }}}} }" + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(queryText) + .build() + + Instrumentation instrumentation = new Instrumentation() { + @Override + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + executionInput.cancel() + return null + } + } + def schema = TestUtil.schema(sdl, fetcherMap) + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + + def er = awaitAsync(graphQL, executionInput) + + then: + !er.errors.isEmpty() + er.errors[0]["message"] == "Execution has been asked to be cancelled" + + when: + executionInput = ExecutionInput.newExecutionInput() + .query(queryText) + .build() + + instrumentation = new Instrumentation() { + @Override + InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + executionInput.cancel() + return null + } + } + schema = TestUtil.schema(sdl, fetcherMap) + graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + er = awaitAsync(graphQL, executionInput) + + then: + !er.errors.isEmpty() + er.errors[0]["message"] == "Execution has been asked to be cancelled" + + when: + executionInput = ExecutionInput.newExecutionInput() + .query(queryText) + .build() + + instrumentation = new Instrumentation() { + + @Override + InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + executionInput.cancel() + return null + } + } + schema = TestUtil.schema(sdl, fetcherMap) + graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + er = awaitAsync(graphQL, executionInput) + + then: + !er.errors.isEmpty() + er.errors[0]["message"] == "Execution has been asked to be cancelled" + + } + + private static ExecutionResult awaitAsync(GraphQL graphQL, ExecutionInput executionInput) { + def cf = graphQL.executeAsync(executionInput) + await().atMost(Duration.ofSeconds(10)).until({ -> cf.isDone() }) + return cf.join() + } + + private static int plusOrMinus(int integer) { + int half = (int) (integer / 2) + def intVal = TestUtil.rand((integer - half), (integer + half)) + return intVal } } diff --git a/src/test/groovy/graphql/ExecutionResultImplTest.groovy b/src/test/groovy/graphql/ExecutionResultImplTest.groovy index a1bb59e2a5..8b8894cca3 100644 --- a/src/test/groovy/graphql/ExecutionResultImplTest.groovy +++ b/src/test/groovy/graphql/ExecutionResultImplTest.groovy @@ -176,29 +176,58 @@ class ExecutionResultImplTest extends Specification { def "test setting extensions"() { given: - def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS,null) + def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS, null) - def er = ExecutionResultImpl.newExecutionResult().from(startEr).extensions([ext1:"here"]).build() + def er = ExecutionResultImpl.newExecutionResult().from(startEr).extensions([ext1: "here"]).build() when: def extensions = er.getExtensions() then: - extensions == [ext1:"here"] + extensions == [ext1: "here"] } def "test adding extension"() { given: - def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS,[ext1:"here"]) + def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS, [ext1: "here"]) - def er = ExecutionResultImpl.newExecutionResult().from(startEr).addExtension("ext2","aswell").build() + def er = ExecutionResultImpl.newExecutionResult().from(startEr).addExtension("ext2", "aswell").build() when: def extensions = er.getExtensions() then: - extensions == [ext1:"here", ext2 : "aswell"] + extensions == [ext1: "here", ext2: "aswell"] } + def "can parse out a map of to an ER"() { + when: + def map = [data: [f: "v"]] + def er = ExecutionResult.fromSpecification(map) + then: + er.data == [f: "v"] + er.extensions == null + er.errors.isEmpty() + + when: + // GraphqlErrorHelperTest is more extensive tests for error parsing which we will not repeat here + map = [errors: [[message: "m0"], [message: "m1"]]] + er = ExecutionResult.fromSpecification(map) + then: + er.data == null + er.extensions == null + !er.errors.isEmpty() + er.errors[0].message == "m0" + er.errors[1].message == "m1" + + when: + map = [data: [f: "v"], extensions: [ext1: "here", ext2: "and here"]] + er = ExecutionResult.fromSpecification(map) + then: + er.data == [f: "v"] + er.extensions == [ext1: "here", ext2: "and here"] + er.errors.isEmpty() + + } } diff --git a/src/test/groovy/graphql/ExecutionResultTest.groovy b/src/test/groovy/graphql/ExecutionResultTest.groovy new file mode 100644 index 0000000000..67e411941c --- /dev/null +++ b/src/test/groovy/graphql/ExecutionResultTest.groovy @@ -0,0 +1,31 @@ +package graphql + +import graphql.language.SourceLocation +import spock.lang.Specification + +/** + * Most of the tests are actually in ExecutionResultImplTest since this is the actual impl + */ +class ExecutionResultTest extends Specification { + + def error1 = new InvalidSyntaxError(new SourceLocation(966, 964), "Yowza") + + def "can use builder to build it"() { + when: + ExecutionResult er = ExecutionResult.newExecutionResult().data([a: "b"]).addError(error1).addExtension("x", "y").build() + then: + er.data == [a: "b"] + er.errors == [error1] + er.extensions == [x: "y"] + } + + def "can transform"() { + when: + ExecutionResult er = ExecutionResult.newExecutionResult().data([a: "b"]).addError(error1).addExtension("x", "y").build() + er = er.transform({ bld -> bld.addExtension("foo", "bar") }) + then: + er.data == [a: "b"] + er.errors == [error1] + er.extensions == [x: "y", foo: "bar"] + } +} diff --git a/src/test/groovy/graphql/Fixtures.groovy b/src/test/groovy/graphql/Fixtures.groovy deleted file mode 100644 index b08618c393..0000000000 --- a/src/test/groovy/graphql/Fixtures.groovy +++ /dev/null @@ -1,19 +0,0 @@ -package graphql - -import graphql.schema.GraphQLFieldDefinition -import graphql.schema.GraphQLObjectType -import graphql.schema.GraphQLSchema - -class Fixtures { - - - static GraphQLSchema simpsonsSchema() { - GraphQLFieldDefinition nameField = new GraphQLFieldDefinition("name", Scalars.GraphQLString) - - GraphQLObjectType simpsonCharacter = new GraphQLObjectType("simpsonCharacter", [nameField]) - GraphQLFieldDefinition simpsons = new GraphQLFieldDefinition("simpson", simpsonCharacter) - GraphQLObjectType queryType = new GraphQLObjectType("query", [simpsons]) - GraphQLSchema schema = new GraphQLSchema(queryType) - schema - } -} diff --git a/src/test/groovy/graphql/GarfieldSchema.java b/src/test/groovy/graphql/GarfieldSchema.java index 6c22d31ab4..1e82f7e091 100644 --- a/src/test/groovy/graphql/GarfieldSchema.java +++ b/src/test/groovy/graphql/GarfieldSchema.java @@ -1,6 +1,7 @@ package graphql; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; @@ -111,23 +112,24 @@ public List getFriends() { .field(newFieldDefinition() .name("name") .type(GraphQLString)) - .typeResolver(new TypeResolver() { - @Override - public GraphQLObjectType getType(TypeResolutionEnvironment env) { - if (env.getObject() instanceof Dog) { - return DogType; - } - if (env.getObject() instanceof Person) { - return PersonType; - } - if (env.getObject() instanceof Cat) { - return CatType; - } - return null; - } - }) .build(); + public static TypeResolver namedTypeResolver = new TypeResolver() { + @Override + public GraphQLObjectType getType(TypeResolutionEnvironment env) { + if (env.getObject() instanceof Dog) { + return DogType; + } + if (env.getObject() instanceof Person) { + return PersonType; + } + if (env.getObject() instanceof Cat) { + return CatType; + } + return null; + } + }; + public static GraphQLObjectType DogType = newObject() .name("Dog") .field(newFieldDefinition() @@ -154,17 +156,18 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .name("Pet") .possibleType(CatType) .possibleType(DogType) - .typeResolver(env -> { - if (env.getObject() instanceof Cat) { - return CatType; - } - if (env.getObject() instanceof Dog) { - return DogType; - } - return null; - }) .build(); + public static TypeResolver petTypeResolver = env -> { + if (env.getObject() instanceof Cat) { + return CatType; + } + if (env.getObject() instanceof Dog) { + return DogType; + } + return null; + }; + public static GraphQLObjectType PersonType = newObject() .name("Person") .field(newFieldDefinition() @@ -179,9 +182,14 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .withInterface(NamedType) .build(); + public static GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver("Named", namedTypeResolver) + .typeResolver("Pet", petTypeResolver) + .build(); + public static GraphQLSchema GarfieldSchema = GraphQLSchema.newSchema() .query(PersonType) + .codeRegistry(codeRegistry) .build(); - } diff --git a/src/test/groovy/graphql/GraphQLContextTest.groovy b/src/test/groovy/graphql/GraphQLContextTest.groovy index 3353b34471..d411143db6 100644 --- a/src/test/groovy/graphql/GraphQLContextTest.groovy +++ b/src/test/groovy/graphql/GraphQLContextTest.groovy @@ -1,8 +1,10 @@ package graphql import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment import spock.lang.Specification +import java.util.function.Consumer import java.util.stream.Collectors import static graphql.ExecutionInput.newExecutionInput @@ -16,7 +18,7 @@ class GraphQLContextTest extends Specification { } int sizeOf(GraphQLContext graphQLContext) { - graphQLContext.stream().count(); + graphQLContext.stream().count() } def "of builder"() { @@ -78,6 +80,32 @@ class GraphQLContextTest extends Specification { context.get("k4") == "v4" context.get("k5") == "v5" sizeOf(context) == 5 + + when: + context = GraphQLContext.newContext() + .of("k1", "v1") + .of("k2", "v2") + .of(["k3": "v3"]).build() + then: + context.get("k1") == "v1" + context.get("k2") == "v2" + context.get("k3") == "v3" + sizeOf(context) == 3 + + when: + context = GraphQLContext.of(["k1": "v1", "k2": "v2"]) + + then: + context.get("k1") == "v1" + context.get("k2") == "v2" + sizeOf(context) == 2 + + when: + context = GraphQLContext.of({ it.of("k1", "v1") } as Consumer) + + then: + context.get("k1") == "v1" + sizeOf(context) == 1 } def "put works"() { @@ -96,10 +124,37 @@ class GraphQLContextTest extends Specification { def context = buildContext([k1: "v1"]) def context2 = buildContext([k2: "v2"]) context.putAll(context2) + + then: + context.get("k1") == "v1" + context.get("k2") == "v2" + sizeOf(context) == 2 + + when: + context = buildContext([k1: "v1"]) + context.putAll([k2: "v2"]) + + then: + context.get("k1") == "v1" + context.get("k2") == "v2" + sizeOf(context) == 2 + + when: + context = buildContext([k1: "v1"]) + context.putAll(GraphQLContext.newContext().of("k2", "v2")) + then: context.get("k1") == "v1" context.get("k2") == "v2" + sizeOf(context) == 2 + + when: + context = buildContext([k1: "v1"]) + context.putAll({ it.of([k2: "v2"]) } as Consumer) + then: + context.get("k1") == "v1" + context.get("k2") == "v2" sizeOf(context) == 2 } @@ -113,6 +168,52 @@ class GraphQLContextTest extends Specification { !context.hasKey("k3") } + def "compute works"() { + def context + when: + context = buildContext([k1: "foo"]) + then: + context.compute("k1", (k, v) -> v ? v + "bar" : "default") == "foobar" + context.get("k1") == "foobar" + context.compute("k2", (k, v) -> v ? "new" : "default") == "default" + context.get("k2") == "default" + !context.compute("k3", (k, v) -> null) + !context.hasKey("k3") + sizeOf(context) == 2 + } + + def "computeIfAbsent works"() { + def context + when: + context = buildContext([k1: "v1", k2: "v2"]) + then: + context.computeIfAbsent("k1", k -> "default") == "v1" + context.get("k1") == "v1" + context.computeIfAbsent("k2", k -> null) == "v2" + context.get("k2") == "v2" + context.computeIfAbsent("k3", k -> "default") == "default" + context.get("k3") == "default" + !context.computeIfAbsent("k4", k -> null) + !context.hasKey("k4") + sizeOf(context) == 3 + } + + def "computeIfPresent works"() { + def context + when: + context = buildContext([k1: "foo", k2: "v2"]) + then: + context.computeIfPresent("k1", (k, v) -> v + "bar") == "foobar" + context.get("k1") == "foobar" + !context.computeIfPresent("k2", (k, v) -> null) + !context.hasKey("k2") + !context.computeIfPresent("k3", (k, v) -> v + "bar") + !context.hasKey("k3") + !context.computeIfPresent("k4", (k, v) -> null) + !context.hasKey("k4") + sizeOf(context) == 1 + } + def "getOrDefault works"() { def context when: @@ -160,15 +261,14 @@ class GraphQLContextTest extends Specification { } ''' - DataFetcher df = { env -> - GraphQLContext context = env.context + DataFetcher df = { DataFetchingEnvironment env -> + GraphQLContext context = env.graphQlContext return context.get("ctx1") } def graphQL = TestUtil.graphQL(spec, ["Query": ["field": df]]).build() - def context = GraphQLContext.newContext().of("ctx1", "ctx1value").build() - ExecutionInput input = newExecutionInput().query("{ field }") - .context(context).build() + ExecutionInput input = newExecutionInput().query("{ field }").build() + input.getGraphQLContext().putAll([ctx1: "ctx1value"]) when: def executionResult = graphQL.execute(input) @@ -176,4 +276,20 @@ class GraphQLContextTest extends Specification { executionResult.errors.isEmpty() executionResult.data == [field: "ctx1value"] } + + def "boolean getters work"() { + when: + def context = GraphQLContext.newContext().of( + "f", false, + "t", true, + "notABool", "true" + ).build() + + then: + !context.getBoolean("f") + context.getBoolean("t") + !context.getBoolean("notABool") + !context.getBoolean("missing") + context.getBoolean("missing", true) + } } diff --git a/src/test/groovy/graphql/GraphQLErrorTest.groovy b/src/test/groovy/graphql/GraphQLErrorTest.groovy index 5d56952212..cf80eb845f 100644 --- a/src/test/groovy/graphql/GraphQLErrorTest.groovy +++ b/src/test/groovy/graphql/GraphQLErrorTest.groovy @@ -1,10 +1,10 @@ package graphql -import graphql.execution.ExecutionPath import graphql.execution.ExecutionStepInfo import graphql.execution.MissingRootTypeException import graphql.execution.NonNullableFieldWasNullError import graphql.execution.NonNullableFieldWasNullException +import graphql.execution.ResultPath import graphql.introspection.Introspection import graphql.language.SourceLocation import graphql.schema.CoercingSerializeException @@ -25,10 +25,14 @@ class GraphQLErrorTest extends Specification { where: gError | expectedMap - new ValidationError(ValidationErrorType.UnknownType, mkLocations(), "Test ValidationError") | + ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations(mkLocations()) + .description("Test ValidationError") + .build() | [ - locations: [[line: 666, column: 999], [line: 333, column: 0]], - message : "Validation error of type UnknownType: Test ValidationError", + locations: [[line: 666, column: 999], [line: 333, column: 1]], + message : "Test ValidationError", extensions:[classification:"ValidationError"], ] @@ -40,16 +44,16 @@ class GraphQLErrorTest extends Specification { new InvalidSyntaxError(mkLocations(), "Not good syntax m'kay") | [ - locations: [[line: 666, column: 999], [line: 333, column: 0]], + locations: [[line: 666, column: 999], [line: 333, column: 1]], message : "Not good syntax m'kay", extensions:[classification:"InvalidSyntax"], ] new NonNullableFieldWasNullError(new NonNullableFieldWasNullException(mkTypeInfo(), mkPath())) | [ - message: 'Cannot return null for non-nullable type: \'__Schema\' (/heroes[0]/abilities/speed[4])', + message: '''The field at path '/heroes[0]/abilities/speed[4]' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is '__Schema\'''', path : ["heroes", 0, "abilities", "speed", 4], - extensions:[classification:"DataFetchingException"], + extensions:[classification:"NullValueInNonNullableField"], ] new SerializationError(mkPath(), new CoercingSerializeException("Bad coercing")) | @@ -68,6 +72,48 @@ class GraphQLErrorTest extends Specification { } + def "toSpecification filters out error locations with line and column not starting at 1, as required in spec"() { + // See specification wording: https://spec.graphql.org/draft/#sec-Errors.Error-Result-Format + + given: + def error = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations([mkLocation(-1, -1), mkLocation(333, 1)]) + .description("Test ValidationError") + .build() + + def expectedMap = [ + locations: [ + [line: 333, column: 1] + ], + message: "Test ValidationError", + extensions: [classification:"ValidationError"] + ] + + expect: + error.toSpecification() == expectedMap + } + + def "toSpecification filters out null error locations"() { + given: + def error = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations([null, mkLocation(333, 1)]) + .description("Test ValidationError") + .build() + + def expectedMap = [ + locations: [ + [line: 333, column: 1] + ], + message: "Test ValidationError", + extensions: [classification:"ValidationError"] + ] + + expect: + error.toSpecification() == expectedMap + } + class CustomException extends RuntimeException implements GraphQLError { private LinkedHashMap map @@ -106,15 +152,15 @@ class GraphQLErrorTest extends Specification { } List mkLocations() { - return [mkLocation(666, 999), mkLocation(333, 0)] + return [mkLocation(666, 999), mkLocation(333, 1)] } SourceLocation mkLocation(int line, int column) { return new SourceLocation(line, column) } - ExecutionPath mkPath() { - return ExecutionPath.rootPath() + ResultPath mkPath() { + return ResultPath.rootPath() .segment("heroes") .segment(0) .segment("abilities") diff --git a/src/test/groovy/graphql/GraphQLTest.groovy b/src/test/groovy/graphql/GraphQLTest.groovy index 9369bc0f1c..7b9c48ad7d 100644 --- a/src/test/groovy/graphql/GraphQLTest.groovy +++ b/src/test/groovy/graphql/GraphQLTest.groovy @@ -3,38 +3,53 @@ package graphql import graphql.analysis.MaxQueryComplexityInstrumentation import graphql.analysis.MaxQueryDepthInstrumentation import graphql.execution.AsyncExecutionStrategy +import graphql.execution.AsyncSerialExecutionStrategy +import graphql.execution.DataFetcherExceptionHandler +import graphql.execution.DataFetcherExceptionHandlerParameters +import graphql.execution.DataFetcherExceptionHandlerResult +import graphql.execution.DataFetcherResult import graphql.execution.ExecutionContext import graphql.execution.ExecutionId import graphql.execution.ExecutionIdProvider import graphql.execution.ExecutionStrategyParameters -import graphql.execution.MissingRootTypeException -import graphql.execution.batched.BatchedExecutionStrategy -import graphql.execution.instrumentation.ChainedInstrumentation +import graphql.execution.ResultNodesInfo +import graphql.execution.SubscriptionExecutionStrategy +import graphql.execution.ValueUnboxer import graphql.execution.instrumentation.Instrumentation -import graphql.execution.instrumentation.SimpleInstrumentation -import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.preparsed.NoOpPreparsedDocumentProvider import graphql.language.SourceLocation import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLEnumType import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLInterfaceType import graphql.schema.GraphQLNonNull import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLSchema +import graphql.schema.LightDataFetcher import graphql.schema.StaticDataFetcher +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.errors.SchemaProblem +import graphql.schema.validation.InvalidSchemaException import graphql.validation.ValidationError import graphql.validation.ValidationErrorType import spock.lang.Specification import spock.lang.Unroll import java.util.concurrent.CompletableFuture +import java.util.function.Supplier import java.util.function.UnaryOperator import static graphql.ExecutionInput.Builder import static graphql.ExecutionInput.newExecutionInput import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString +import static graphql.execution.ResultNodesInfo.MAX_RESULT_NODES import static graphql.schema.GraphQLArgument.newArgument import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLInputObjectField.newInputObjectField @@ -46,17 +61,23 @@ import static graphql.schema.GraphQLTypeReference.typeRef class GraphQLTest extends Specification { - GraphQLSchema simpleSchema() { + static GraphQLSchema simpleSchema() { GraphQLFieldDefinition.Builder fieldDefinition = newFieldDefinition() .name("hello") .type(GraphQLString) - .staticValue("world") - GraphQLSchema schema = newSchema().query( - newObject() + FieldCoordinates fieldCoordinates = FieldCoordinates.coordinates("RootQueryType", "hello") + DataFetcher dataFetcher = { env -> "world" } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fieldCoordinates, dataFetcher) + .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() .name("RootQueryType") .field(fieldDefinition) - .build() - ).build() + .build()) + .build() schema } @@ -69,7 +90,6 @@ class GraphQLTest extends Specification { then: result == [hello: 'world'] - } def "query with sub-fields"() { @@ -89,14 +109,20 @@ class GraphQLTest extends Specification { GraphQLFieldDefinition.Builder simpsonField = newFieldDefinition() .name("simpson") .type(heroType) - .staticValue([id: '123', name: 'homer']) - GraphQLSchema graphQLSchema = newSchema().query( - newObject() + FieldCoordinates fieldCoordinates = FieldCoordinates.coordinates("RootQueryType", "simpson") + DataFetcher dataFetcher = { env -> [id: '123', name: 'homer'] } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fieldCoordinates, dataFetcher) + .build() + + GraphQLSchema graphQLSchema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() .name("RootQueryType") .field(simpsonField) - .build() - ).build() + .build()) + .build() when: def result = GraphQL.newGraphQL(graphQLSchema).build().execute('{ simpson { id, name } }').data @@ -111,13 +137,20 @@ class GraphQLTest extends Specification { .name("hello") .type(GraphQLString) .argument(newArgument().name("arg").type(GraphQLString)) - .staticValue("world") - GraphQLSchema schema = newSchema().query( - newObject() + + FieldCoordinates fieldCoordinates = FieldCoordinates.coordinates("RootQueryType", "hello") + DataFetcher dataFetcher = { env -> "hello" } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fieldCoordinates, dataFetcher) + .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() .name("RootQueryType") .field(fieldDefinition) - .build() - ).build() + .build()) + .build() when: def errors = GraphQL.newGraphQL(schema).build().execute('{ hello(arg:11) }').errors @@ -131,6 +164,12 @@ class GraphQLTest extends Specification { GraphQLSchema schema = newSchema().query( newObject() .name("RootQueryType") + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("arg") + .type(GraphQLNonNull.nonNull(GraphQLString)))) .build() ).build() @@ -148,6 +187,12 @@ class GraphQLTest extends Specification { GraphQLSchema schema = newSchema().query( newObject() .name("RootQueryType") + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("arg") + .type(GraphQLNonNull.nonNull(GraphQLString)))) .build() ).build() @@ -160,6 +205,31 @@ class GraphQLTest extends Specification { errors[0].locations == [new SourceLocation(1, 8)] } + def "query with invalid Unicode surrogate in argument - no trailing value"() { + given: + GraphQLSchema schema = newSchema().query( + newObject() + .name("RootQueryType") + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("arg") + .type(GraphQLNonNull.nonNull(GraphQLString)))) + .build() + ).build() + + when: + // Invalid Unicode character - leading surrogate value without trailing surrogate value + def errors = GraphQL.newGraphQL(schema).build().execute('{ hello(arg:"\\ud83c") }').errors + + then: + errors.size() == 1 + errors[0].errorType == ErrorType.InvalidSyntax + errors[0].message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\ud83c' at line 1 column 13" + errors[0].locations == [new SourceLocation(1, 13)] + } + def "non null argument is missing"() { given: GraphQLSchema schema = newSchema().query( @@ -190,14 +260,22 @@ class GraphQLTest extends Specification { set.add("One") set.add("Two") + def queryType = "QueryType" + def fieldName = "set" + def fieldCoordinates = FieldCoordinates.coordinates(queryType, fieldName) + DataFetcher dataFetcher = { set } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fieldCoordinates, dataFetcher) + .build() + def schema = newSchema() + .codeRegistry(codeRegistry) .query(newObject() - .name("QueryType") + .name(queryType) .field(newFieldDefinition() - .name("set") - .type(list(GraphQLString)) - .dataFetcher({ set }))) - .build() + .name(fieldName) + .type(list(GraphQLString))) + ).build() when: def data = GraphQL.newGraphQL(schema).build().execute("query { set }").data @@ -209,14 +287,30 @@ class GraphQLTest extends Specification { def "document with two operations executes specified operation"() { given: - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field(newFieldDefinition().name("field1").type(GraphQLString).dataFetcher(new StaticDataFetcher("value1"))) - .field(newFieldDefinition().name("field2").type(GraphQLString).dataFetcher(new StaticDataFetcher("value2"))) - ) + def queryType = "RootQueryType" + def field1Name = "field1" + def field2Name = "field2" + def field1Coordinates = FieldCoordinates.coordinates(queryType, field1Name) + def field2Coordinates = FieldCoordinates.coordinates(queryType, field2Name) + DataFetcher field1DataFetcher = new StaticDataFetcher("value1") + DataFetcher field2DataFetcher = new StaticDataFetcher("value2") + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(field1Coordinates, field1DataFetcher) + .dataFetcher(field2Coordinates, field2DataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(field1Name) + .type(GraphQLString)) + .field(newFieldDefinition() + .name(field2Name) + .type(GraphQLString)) + ).build() + def query = """ query Query1 { field1 } query Query2 { field2 } @@ -225,7 +319,7 @@ class GraphQLTest extends Specification { def expected = [field2: 'value2'] when: - def executionInput = newExecutionInput().query(query).operationName('Query2').context(null).variables([:]) + def executionInput = newExecutionInput().query(query).operationName('Query2').variables([:]) def result = GraphQL.newGraphQL(schema).build().execute(executionInput) then: @@ -233,7 +327,7 @@ class GraphQLTest extends Specification { result.errors.size() == 0 } - def "document with two operations but no specified operation throws"() { + def "document with two operations but no specified operation does not throw"() { given: GraphQLSchema schema = newSchema().query( @@ -249,27 +343,35 @@ class GraphQLTest extends Specification { """ when: - GraphQL.newGraphQL(schema).build().execute(query) + def er = GraphQL.newGraphQL(schema).build().execute(query) then: - thrown(GraphQLException) + noExceptionThrown() + !er.errors.isEmpty() + er.errors[0].message.contains("Must provide operation name if query contains multiple operations") } - def "null mutation type does not throw an npe re: #345 but returns and error"() { + def "null mutation type does not throw an npe but returns and error"() { given: GraphQLSchema schema = newSchema().query( newObject() + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("arg") + .type(GraphQLNonNull.nonNull(GraphQLString)))) .name("Query") ) .build() when: - def result = new GraphQL(schema).execute("mutation { doesNotExist }") + def result = GraphQL.newGraphQL(schema).build().execute("mutation { doesNotExist }") then: result.errors.size() == 1 - result.errors[0].class == MissingRootTypeException + ((ValidationError) result.errors[0]).validationErrorType == ValidationErrorType.UnknownOperation } def "#875 a subscription query against a schema that doesn't support subscriptions should result in a GraphQL error"() { @@ -278,253 +380,304 @@ class GraphQLTest extends Specification { GraphQLSchema schema = newSchema().query( newObject() .name("Query") + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("arg") + .type(GraphQLNonNull.nonNull(GraphQLString)))) ) .build() when: - def result = new GraphQL(schema).execute("subscription { doesNotExist }") + def result = GraphQL.newGraphQL(schema).build().execute("subscription { doesNotExist }") then: result.errors.size() == 1 - result.errors[0].class == MissingRootTypeException + ((ValidationError) result.errors[0]).validationErrorType == ValidationErrorType.UnknownOperation } def "query with int literal too large"() { given: - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(GraphQLInt).build()) - .dataFetcher({ return it.getArgument("bar") }) - )) + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + DataFetcher dataFetcher = { env -> env.getArgument("bar") } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name("QueryType") + .field(newFieldDefinition() + .name("foo") + .type(GraphQLInt) + .argument(newArgument().name("bar").type(GraphQLInt).build())) + ).build() def query = "{foo(bar: 12345678910)}" + when: def result = GraphQL.newGraphQL(schema).build().execute(query) then: result.errors.size() == 1 - result.errors[0].message == "Validation error of type WrongType: argument 'bar' with value 'IntValue{value=12345678910}' is not a valid 'Int' - Expected value to be in the Integer range but it was '12345678910' @ 'foo'" + result.errors[0].message == "Validation error (WrongType@[foo]) : argument 'bar' with value 'IntValue{value=12345678910}' is not a valid 'Int' - Expected value to be in the integer range, but it was a '12345678910'" } @SuppressWarnings("GroovyAssignabilityCheck") def "query with missing argument results in arguments map missing the key"() { given: - def dataFetcher = Mock(DataFetcher) - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(GraphQLInt).build()) - .dataFetcher(dataFetcher) - )) + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(GraphQLInt).build())) + ).build() def query = "{foo}" + when: GraphQL.newGraphQL(schema).build().execute(query) then: - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - assert !env.arguments.containsKey('bar') + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert !env.arguments.containsKey('bar') } } @SuppressWarnings("GroovyAssignabilityCheck") def "query with null argument results in arguments map with value null "() { given: - def dataFetcher = Mock(DataFetcher) - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(GraphQLInt).build()) - .dataFetcher(dataFetcher) - )) + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(GraphQLInt).build())) + ).build() def query = "{foo(bar: null)}" - DataFetchingEnvironment dataFetchingEnvironment + when: GraphQL.newGraphQL(schema).build().execute(query) then: - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - dataFetchingEnvironment = env - assert env.arguments.containsKey('bar') - assert env.arguments['bar'] == null + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert env.arguments.containsKey('bar') + assert env.arguments['bar'] == null } } @SuppressWarnings("GroovyAssignabilityCheck") def "query with missing key in an input object result in a map with missing key"() { given: - def dataFetcher = Mock(DataFetcher) def inputObject = newInputObject().name("bar") .field(newInputObjectField().name("someKey").type(GraphQLString).build()) .field(newInputObjectField().name("otherKey").type(GraphQLString).build()).build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(inputObject).build()) - .dataFetcher(dataFetcher) - )) + + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(inputObject).build())) + ).build() def query = "{foo(bar: {someKey: \"value\"})}" when: def result = GraphQL.newGraphQL(schema).build().execute(query) then: result.errors.size() == 0 - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - assert env.arguments.size() == 1 - assert env.arguments["bar"] instanceof Map - assert env.arguments['bar']['someKey'] == 'value' - assert !(env.arguments['bar'] as Map).containsKey('otherKey') + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert env.arguments.size() == 1 + assert env.arguments["bar"] instanceof Map + assert env.arguments['bar']['someKey'] == 'value' + assert !(env.arguments['bar'] as Map).containsKey('otherKey') } } @SuppressWarnings("GroovyAssignabilityCheck") def "query with null value in an input object result in a map with null as value"() { given: - def dataFetcher = Mock(DataFetcher) def inputObject = newInputObject().name("bar") .field(newInputObjectField().name("someKey").type(GraphQLString).build()) .field(newInputObjectField().name("otherKey").type(GraphQLString).build()).build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(inputObject).build()) - .dataFetcher(dataFetcher) - )) + + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(inputObject).build())) + ).build() def query = "{foo(bar: {someKey: \"value\", otherKey: null})}" + when: def result = GraphQL.newGraphQL(schema).build().execute(query) then: result.errors.size() == 0 - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - assert env.arguments.size() == 1 - assert env.arguments["bar"] instanceof Map - assert env.arguments['bar']['someKey'] == 'value' - assert (env.arguments['bar'] as Map).containsKey('otherKey') - assert env.arguments['bar']['otherKey'] == null + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert env.arguments.size() == 1 + assert env.arguments["bar"] instanceof Map + assert env.arguments['bar']['someKey'] == 'value' + assert (env.arguments['bar'] as Map).containsKey('otherKey') + assert env.arguments['bar']['otherKey'] == null } } def "query with missing List input field results in a map with a missing key"() { given: - def dataFetcher = Mock(DataFetcher) def inputObject = newInputObject().name("bar") .field(newInputObjectField().name("list").type(list(GraphQLString)).build()) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(inputObject).build()) - .dataFetcher(dataFetcher) - )) + + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(inputObject).build())) + ).build() def query = "{foo(bar: {})}" + when: def result = GraphQL.newGraphQL(schema).build().execute(query) then: result.errors.size() == 0 - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - assert env.arguments.size() == 1 - assert env.arguments["bar"] instanceof Map - assert !(env.arguments['bar'] as Map).containsKey('list') + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert env.arguments.size() == 1 + assert env.arguments["bar"] instanceof Map + assert !(env.arguments['bar'] as Map).containsKey('list') } } def "query with null List input field results in a map with null as key"() { given: - def dataFetcher = Mock(DataFetcher) def inputObject = newInputObject().name("bar") .field(newInputObjectField().name("list").type(list(GraphQLString)).build()) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(inputObject).build()) - .dataFetcher(dataFetcher) - )) + + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(inputObject).build())) + ).build() def query = "{foo(bar: {list: null})}" + when: def result = GraphQL.newGraphQL(schema).build().execute(query) then: result.errors.size() == 0 - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - assert env.arguments.size() == 1 - assert env.arguments["bar"] instanceof Map - assert (env.arguments['bar'] as Map).containsKey('list') - assert env.arguments['bar']['list'] == null + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert env.arguments.size() == 1 + assert env.arguments["bar"] instanceof Map + assert (env.arguments['bar'] as Map).containsKey('list') + assert env.arguments['bar']['list'] == null } } def "query with List containing null input field results in a map with a list containing null"() { given: - def dataFetcher = Mock(DataFetcher) def inputObject = newInputObject().name("bar") .field(newInputObjectField().name("list").type(list(GraphQLString)).build()) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("QueryType") - .field( - newFieldDefinition() - .name("foo") - .type(GraphQLInt) - .argument(newArgument().name("bar").type(inputObject).build()) - .dataFetcher(dataFetcher) - )) + + def queryType = "QueryType" + def fooName = "foo" + def fooCoordinates = FieldCoordinates.coordinates(queryType, fooName) + def dataFetcher = Mock(LightDataFetcher) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) + .field(newFieldDefinition() + .name(fooName) + .type(GraphQLInt) + .argument(newArgument().name("bar").type(inputObject).build())) + ).build() def query = "{foo(bar: {list: [null]})}" + when: def result = GraphQL.newGraphQL(schema).build().execute(query) then: result.errors.size() == 0 - 1 * dataFetcher.get(_) >> { - DataFetchingEnvironment env -> - assert env.arguments.size() == 1 - assert env.arguments["bar"] instanceof Map - assert (env.arguments['bar'] as Map).containsKey('list') - assert env.arguments['bar']['list'] == [null] + 1 * dataFetcher.get(_, _, _) >> { + def env = (it[2] as Supplier).get() + assert env.arguments.size() == 1 + assert env.arguments["bar"] instanceof Map + assert (env.arguments['bar'] as Map).containsKey('list') + assert env.arguments['bar']['list'] == [null] } } @@ -562,7 +715,6 @@ class GraphQLTest extends Specification { } - def "execution input passing builder"() { given: GraphQLSchema schema = simpleSchema() @@ -580,7 +732,6 @@ class GraphQLTest extends Specification { GraphQLSchema schema = simpleSchema() when: - def builderFunction = { it.query('{hello}') } as UnaryOperator def result = GraphQL.newGraphQL(schema).build().execute(builderFunction).data @@ -722,7 +873,6 @@ class GraphQLTest extends Specification { .name("id") .type(Scalars.GraphQLID) } as UnaryOperator) - .typeResolver({ type -> foo }) .build() GraphQLObjectType query = newObject() @@ -735,7 +885,12 @@ class GraphQLTest extends Specification { } as UnaryOperator) .build() + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(node, { type -> foo }) + .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) .query(query) .build() @@ -752,7 +907,7 @@ class GraphQLTest extends Specification { then: result.errors.size() == 1 - result.errors[0].message.contains("Sub selection required") + result.errors[0].message.contains("Subselection required") where: instrumentationName | instrumentation @@ -760,79 +915,6 @@ class GraphQLTest extends Specification { 'max query complexity' | new MaxQueryComplexityInstrumentation(10) } - - def "batched execution with non batched DataFetcher returning CompletableFuture"() { - given: - GraphQLObjectType foo = newObject() - .name("Foo") - .withInterface(typeRef("Node")) - .field( - { field -> - field - .name("id") - .type(Scalars.GraphQLID) - } as UnaryOperator) - .build() - - GraphQLInterfaceType node = GraphQLInterfaceType.newInterface() - .name("Node") - .field( - { field -> - field - .name("id") - .type(Scalars.GraphQLID) - } as UnaryOperator) - .typeResolver( - { - env -> - if (env.getObject() instanceof CompletableFuture) { - throw new RuntimeException("This seems bad!") - } - - return foo - }) - .build() - - GraphQLObjectType query = newObject() - .name("RootQuery") - .field( - { field -> - field - .name("node") - .dataFetcher( - { env -> - CompletableFuture.supplyAsync({ -> - Map map = new HashMap<>() - map.put("id", "abc") - - return map - }) - }) - .type(node) - } as UnaryOperator) - .build() - - GraphQLSchema schema = newSchema() - .query(query) - .additionalType(foo) - .build() - - GraphQL graphQL = GraphQL.newGraphQL(schema) - .queryExecutionStrategy(new BatchedExecutionStrategy()) - .mutationExecutionStrategy(new BatchedExecutionStrategy()) - .build() - - ExecutionInput executionInput = newExecutionInput() - .query("{node {id}}") - .build() - when: - def result = graphQL - .execute(executionInput) - - then: - result.getData() == [node: [id: "abc"]] - } - class CaptureStrategy extends AsyncExecutionStrategy { ExecutionId executionId = null Instrumentation instrumentation = null @@ -847,7 +929,7 @@ class GraphQLTest extends Specification { def "graphql copying works as expected"() { - def instrumentation = new SimpleInstrumentation() + def instrumentation = new SimplePerformantInstrumentation() def hello = ExecutionId.from("hello") def executionIdProvider = new ExecutionIdProvider() { @Override @@ -871,13 +953,13 @@ class GraphQLTest extends Specification { then: result == [hello: 'world'] queryStrategy.executionId == hello - queryStrategy.instrumentation instanceof ChainedInstrumentation - (queryStrategy.instrumentation as ChainedInstrumentation).getInstrumentations().contains(instrumentation) + queryStrategy.instrumentation instanceof Instrumentation + queryStrategy.instrumentation == instrumentation when: // now make some changes - def newInstrumentation = new SimpleInstrumentation() + def newInstrumentation = new SimplePerformantInstrumentation() def goodbye = ExecutionId.from("goodbye") def newExecutionIdProvider = new ExecutionIdProvider() { @Override @@ -894,22 +976,20 @@ class GraphQLTest extends Specification { then: result == [hello: 'world'] queryStrategy.executionId == goodbye - queryStrategy.instrumentation instanceof ChainedInstrumentation - (queryStrategy.instrumentation as ChainedInstrumentation).getInstrumentations().contains(newInstrumentation) - !(queryStrategy.instrumentation as ChainedInstrumentation).getInstrumentations().contains(instrumentation) + queryStrategy.instrumentation instanceof SimplePerformantInstrumentation + newGraphQL.instrumentation == newInstrumentation } - def "disabling data loader instrumentation leaves instrumentation as is"() { + def "provided instrumentation is unchanged"() { given: def queryStrategy = new CaptureStrategy() - def instrumentation = new SimpleInstrumentation() + def instrumentation = new SimplePerformantInstrumentation() def builder = GraphQL.newGraphQL(simpleSchema()) .queryExecutionStrategy(queryStrategy) .instrumentation(instrumentation) when: def graphql = builder - .doNotAddDefaultInstrumentations() .build() graphql.execute('{ hello }') @@ -917,52 +997,28 @@ class GraphQLTest extends Specification { queryStrategy.instrumentation == instrumentation } - def "a single DataLoader instrumentation leaves instrumentation as is"() { - given: - def queryStrategy = new CaptureStrategy() - def instrumentation = new DataLoaderDispatcherInstrumentation() - def builder = GraphQL.newGraphQL(simpleSchema()) - .queryExecutionStrategy(queryStrategy) - .instrumentation(instrumentation) - - when: - def graphql = builder - .build() - graphql.execute('{ hello }') - - then: - queryStrategy.instrumentation == instrumentation - } - - def "DataLoader instrumentation is the default instrumentation"() { + def "query with triple quoted multi line strings"() { given: - def queryStrategy = new CaptureStrategy() - def builder = GraphQL.newGraphQL(simpleSchema()) - .queryExecutionStrategy(queryStrategy) - - when: - def graphql = builder + def queryType = "Query" + def fieldName = "hello" + def fieldCoordinates = FieldCoordinates.coordinates(queryType, fieldName) + DataFetcher dataFetcher = { env -> env.getArgument("arg") } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fieldCoordinates, dataFetcher) .build() - graphql.execute('{ hello }') - then: - queryStrategy.instrumentation instanceof DataLoaderDispatcherInstrumentation - } - - def "query with triple quoted multi line strings"() { - given: GraphQLFieldDefinition.Builder fieldDefinition = newFieldDefinition() - .name("hello") + .name(fieldName) .type(GraphQLString) .argument(newArgument().name("arg").type(GraphQLString)) - .dataFetcher({ env -> env.getArgument("arg") } - ) - GraphQLSchema schema = newSchema().query( - newObject() - .name("Query") + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryType) .field(fieldDefinition) - .build() - ).build() + .build()) + .build() when: def result = GraphQL.newGraphQL(schema).build().execute('''{ hello(arg:""" @@ -976,6 +1032,28 @@ over many lines'''] } + def "executionId is set before being passed to instrumentation"() { + InstrumentationCreateStateParameters seenParams + + def instrumentation = new Instrumentation() { + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters params) { + seenParams = params + null + } + } + + when: + GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(instrumentation) + .build() + .execute("{ __typename }") + + then: + seenParams.executionInput.executionId != null + } + def "variables map can't be null via ExecutionInput"() { given: @@ -985,8 +1063,6 @@ many lines'''] then: def assEx = thrown(AssertException) assEx.message.contains("variables map can't be null") - - } def "query can't be null via ExecutionInput"() { @@ -998,8 +1074,6 @@ many lines'''] then: def assEx = thrown(AssertException) assEx.message.contains("query can't be null") - - } def "query must be set via ExecutionInput"() { @@ -1015,4 +1089,520 @@ many lines'''] } + def "default argument values are respected when variable is not provided"() { + given: + def spec = """type Query { + sayHello(name: String = "amigo"): String + }""" + def df = { dfe -> + return dfe.getArgument("name") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def data = graphQL.execute('query($var:String){sayHello(name:$var)}').getData() + + then: + data == [sayHello: "amigo"] + + } + + def "default variable values are respected"() { + given: + def spec = """type Query { + sayHello(name: String): String + }""" + def df = { dfe -> + return dfe.getArgument("name") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def data = graphQL.execute('query($var:String = "amigo"){sayHello(name:$var)}').getData() + + then: + data == [sayHello: "amigo"] + + } + + def "default variable values are respected for non null arguments"() { + given: + def spec = """type Query { + sayHello(name: String!): String + }""" + def df = { dfe -> + return dfe.getArgument("name") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def data = graphQL.execute('query($var:String! = "amigo"){sayHello(name:$var)}').getData() + + then: + data == [sayHello: "amigo"] + + } + + def "null as default variable value is used"() { + given: + def spec = """type Query { + sayHello(name: String): String + }""" + def df = { dfe -> + boolean isNullValue = dfe.containsArgument("name") && dfe.getArgument("name") == null + return isNullValue ? "is null" : "error" + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def data = graphQL.execute('query($var:String = null){sayHello(name:$var)}').getData() + + then: + data == [sayHello: "is null"] + + } + + def "null as default argument value is used with no provided variable"() { + given: + def spec = """type Query { + sayHello(name: String = null): String + }""" + def df = { dfe -> + boolean isNullValue = dfe.containsArgument("name") && dfe.getArgument("name") == null + return isNullValue ? "is null" : "error" + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def data = graphQL.execute('query($var:String){sayHello(name:$var)}').getData() + + then: + data == [sayHello: "is null"] + + } + + def "not provided variable results in not provided argument"() { + given: + def spec = """type Query { + sayHello(name: String): String + }""" + def df = { dfe -> + return !dfe.containsArgument("name") ? "not provided" : "error" + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def data = graphQL.execute('query($var:String){sayHello(name:$var)}').getData() + + then: + data == [sayHello: "not provided"] + + } + + def "null variable default value produces error for non null argument"() { + given: + def spec = """type Query { + sayHello(name: String!): String + }""" + def df = { dfe -> + return dfe.getArgument("name") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def errors = graphQL.execute('query($var:String=null){sayHello(name:$var)}').getErrors() + + then: + errors.size() == 1 + + } + + def "default value defined in the schema is used when none provided in the query"() { + // Spec (https://spec.graphql.org/June2018/#sec-All-Variable-Usages-are-Allowed): A notable exception to typical variable type compatibility is allowing a variable definition with a nullable type to be provided to a non‐null location as long as either that variable or that location provides a default value. + given: + def spec = """type Query { + sayHello(name: String! = "amigo"): String + }""" + def df = { dfe -> + return dfe.getArgument("name") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def result = graphQL.execute('query($var:String){sayHello(name:$var)}') + + then: + result.errors.isEmpty() + result.getData() == [sayHello: "amigo"] + + } + + def "specified url can be defined and queried via introspection"() { + given: + GraphQLSchema schema = TestUtil.schema('type Query {foo: MyScalar} scalar MyScalar @specifiedBy(url:"myUrl")') + + when: + def result = GraphQL.newGraphQL(schema).build().execute('{__type(name: "MyScalar") {name specifiedByURL}}').getData() + + then: + result == [__type: [name: "MyScalar", specifiedByURL: "myUrl"]] + } + + def "test DFR and CF"() { + def sdl = 'type Query { f : String } ' + + DataFetcher df = { env -> + + def dfr = DataFetcherResult.newResult().data("hi").build() + return CompletableFuture.supplyAsync({ -> dfr }) + } + def schema = TestUtil.schema(sdl, [Query: [f: df]]) + def graphQL = GraphQL.newGraphQL(schema).build() + when: + def er = graphQL.execute("{f}") + then: + er.data["f"] == "hi" + } + + + def "can set default fetcher exception handler"() { + + + def sdl = 'type Query { f : String } ' + + DataFetcher df = { env -> + throw new RuntimeException("BANG!") + } + def capturedMsg = null + def exceptionHandler = new DataFetcherExceptionHandler() { + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters params) { + capturedMsg = params.exception.getMessage() + return CompletableFuture.completedFuture(DataFetcherExceptionHandlerResult.newResult().build()) + } + } + def schema = TestUtil.schema(sdl, [Query: [f: df]]) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + when: + graphQL.execute("{f}") + then: + capturedMsg == "BANG!" + } + + def "invalid argument literal"() { + def sdl = ''' + type Query { + foo(arg: Input): String + } + input Input { + required: String! + } + ''' + + def schema = TestUtil.schema(sdl) + def graphQL = GraphQL.newGraphQL(schema).build() + when: + def executionResult = graphQL.execute("{foo(arg:{})}") + then: + executionResult.errors.size() == 1 + executionResult.errors[0].message.contains("is missing required fields") + } + + def "invalid default value for argument via SDL"() { + given: + def sdl = ''' + type Query { + foo(arg: Input = {}): String + } + input Input { + required: String! + } + ''' + when: + def schema = TestUtil.schema(sdl) + then: + def e = thrown(InvalidSchemaException) + e.message.contains("Invalid default value") + } + + def "invalid default value for argument programmatically"() { + given: + def arg = newArgument().name("arg").type(GraphQLInt).defaultValueProgrammatic(new LinkedHashMap()).build() + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .argument(arg) + .build() + when: + newSchema().query( + newObject() + .name("Query") + .field(field) + .build()) + .build() + then: + def e = thrown(InvalidSchemaException) + e.message.contains("Invalid default value") + } + + def "invalid default value for input objects via SDL"() { + given: + def sdl = ''' + type Query { + foo(arg: Input ={required: null}): String + } + input Input { + required: String! + } + ''' + when: + def schema = TestUtil.schema(sdl) + then: + def e = thrown(InvalidSchemaException) + e.message.contains("Invalid default value") + } + + def "invalid default value for input object programmatically"() { + given: + def defaultValue = [required: null] + def inputObject = newInputObject().name("Input").field( + newInputObjectField().name("required").type(GraphQLNonNull.nonNull(GraphQLString)).build()) + .build() + def arg = newArgument().name("arg") + .type(inputObject) + .defaultValueProgrammatic(defaultValue).build() + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .argument(arg) + .build() + when: + newSchema().query( + newObject() + .name("Query") + .field(field) + .build()) + .build() + then: + def e = thrown(InvalidSchemaException) + e.message.contains("Invalid default value") + } + + def "Applied schema directives arguments are validated for SDL"() { + given: + def sdl = ''' + directive @cached( + key: String + ) on FIELD_DEFINITION + + type Query { + hello: String @cached(key: {foo: "bar"}) + } + ''' + when: + SchemaGenerator.createdMockedSchema(sdl) + then: + def e = thrown(SchemaProblem) + e.message.contains("an illegal value for the argument ") + } + + def "getters work as expected"() { + Instrumentation instrumentation = new SimplePerformantInstrumentation() + when: + def graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).instrumentation(instrumentation).build() + then: + graphQL.getGraphQLSchema() == StarWarsSchema.starWarsSchema + graphQL.getIdProvider() == ExecutionIdProvider.DEFAULT_EXECUTION_ID_PROVIDER + graphQL.getValueUnboxer() == ValueUnboxer.DEFAULT + graphQL.getPreparsedDocumentProvider() == NoOpPreparsedDocumentProvider.INSTANCE + graphQL.getInstrumentation() instanceof Instrumentation + graphQL.getQueryStrategy() instanceof AsyncExecutionStrategy + graphQL.getMutationStrategy() instanceof AsyncSerialExecutionStrategy + graphQL.getSubscriptionStrategy() instanceof SubscriptionExecutionStrategy + } + + def "null locale on input is handled under the covers"() { + + def graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).build() + def ei = newExecutionInput("query q { validationError } ").locale(null).build() + + when: + def er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + } + + def "max result nodes not breached"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> "world" } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello h1: hello h2: hello h3: hello } " + def ei = newExecutionInput(query).build() + ei.getGraphQLContext().put(MAX_RESULT_NODES, 4); + + when: + def er = graphQL.execute(ei) + def rni = ei.getGraphQLContext().get(ResultNodesInfo.RESULT_NODES_INFO) as ResultNodesInfo + then: + !rni.maxResultNodesExceeded + rni.resultNodesCount == 4 + er.data == [hello: "world", h1: "world", h2: "world", h3: "world"] + } + + def "max result nodes breached"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> "world" } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello h1: hello h2: hello h3: hello } " + def ei = newExecutionInput(query).build() + ei.getGraphQLContext().put(MAX_RESULT_NODES, 3); + + when: + def er = graphQL.execute(ei) + def rni = ei.getGraphQLContext().get(ResultNodesInfo.RESULT_NODES_INFO) as ResultNodesInfo + then: + rni.maxResultNodesExceeded + rni.resultNodesCount == 4 + er.data == [hello: "world", h1: "world", h2: "world", h3: null] + } + + def "max result nodes breached with list"() { + given: + def sdl = ''' + + type Query { + hello: [String] + } + ''' + def df = { env -> ["w1", "w2", "w3"] } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello}" + def ei = newExecutionInput(query).build() + ei.getGraphQLContext().put(MAX_RESULT_NODES, 3); + + when: + def er = graphQL.execute(ei) + def rni = ei.getGraphQLContext().get(ResultNodesInfo.RESULT_NODES_INFO) as ResultNodesInfo + then: + rni.maxResultNodesExceeded + rni.resultNodesCount == 4 + er.data == [hello: null] + } + + def "max result nodes breached with list 2"() { + given: + def sdl = ''' + + type Query { + hello: [Foo] + } + type Foo { + name: String + } + ''' + def df = { env -> [[name: "w1"], [name: "w2"], [name: "w3"]] } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello {name}}" + def ei = newExecutionInput(query).build() + // we have 7 result nodes overall + ei.getGraphQLContext().put(MAX_RESULT_NODES, 6); + + when: + def er = graphQL.execute(ei) + def rni = ei.getGraphQLContext().get(ResultNodesInfo.RESULT_NODES_INFO) as ResultNodesInfo + then: + rni.resultNodesCount == 7 + rni.maxResultNodesExceeded + er.data == [hello: [[name: "w1"], [name: "w2"], [name: null]]] + } + + def "max result nodes not breached with list"() { + given: + def sdl = ''' + + type Query { + hello: [Foo] + } + type Foo { + name: String + } + ''' + def df = { env -> [[name: "w1"], [name: "w2"], [name: "w3"]] } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello {name}}" + def ei = newExecutionInput(query).build() + // we have 7 result nodes overall + ei.getGraphQLContext().put(MAX_RESULT_NODES, 7); + + when: + def er = graphQL.execute(ei) + def rni = ei.getGraphQLContext().get(ResultNodesInfo.RESULT_NODES_INFO) as ResultNodesInfo + then: + !rni.maxResultNodesExceeded + rni.resultNodesCount == 7 + er.data == [hello: [[name: "w1"], [name: "w2"], [name: "w3"]]] + } + + def "exceptions thrown are turned into graphql errors"() { + def sdl = """ + type Query { + f(arg : Boolean) : String + } + """ + + def graphQL = TestUtil.graphQL(sdl).build() + + when: + def ei = newExecutionInput("query badSyntax {").build() + def er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Invalid syntax with offending token") + + + when: + + ei = newExecutionInput('query badInput($varX : Boolean) { f(arg : $varX) }') + .variables([varX: "bad"]).build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Variable 'varX' has an invalid value") + + when: + + ei = newExecutionInput("query ok1 { f } query ok2 { f } ") + .operationName("X").build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Unknown operation named 'X'") + } } diff --git a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy index da7a82e80e..8713100d02 100644 --- a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy @@ -1,6 +1,6 @@ package graphql -import graphql.execution.ExecutionPath +import graphql.execution.ResultPath import graphql.language.SourceLocation import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment @@ -15,7 +15,7 @@ import static graphql.language.Field.newField class GraphqlErrorBuilderTest extends Specification { def location = new SourceLocation(6, 9) def field = newMergedField(newField("f").sourceLocation(location).build()).build() - def stepInfo = newExecutionStepInfo().path(ExecutionPath.fromList(["a", "b"])).type(GraphQLString).build() + def stepInfo = newExecutionStepInfo().path(ResultPath.fromList(["a", "b"])).type(GraphQLString).build() def "dfe is passed on"() { DataFetchingEnvironment dfe = DataFetchingEnvironmentImpl.newDataFetchingEnvironment() @@ -39,6 +39,19 @@ class GraphqlErrorBuilderTest extends Specification { graphQLError.getErrorType() == ErrorType.DataFetchingException } + def "builder getters work"() { + when: + def errorBuilder = GraphqlErrorBuilder.newError() + .message("Gunfight at the %s corral", "NotOK") + .location(location) + .path(["a","b"]) + then: + errorBuilder.getMessage() == "Gunfight at the NotOK corral" + errorBuilder.getErrorType() == ErrorType.DataFetchingException + errorBuilder.getPath() == ["a","b"] + errorBuilder.getLocations() == [location] + } + def "data fetcher result building works"() { when: def result = GraphqlErrorBuilder.newError().message("Gunfight at the %s corral", "NotOK").toResult() @@ -110,4 +123,95 @@ class GraphqlErrorBuilderTest extends Specification { then: thrown(AssertException) } -} \ No newline at end of file + + def "can have nullable attributes"() { + when: + def error = GraphqlErrorBuilder.newError().message("msg") + .locations(null) + .extensions(null) + .path(null) + .build() + then: + error.message == "msg" + error.locations == null + error.path == null + error.extensions == null + } + + def "can use a builder direct from graphql error"() { + when: + def error = GraphQLError.newError().message("msg") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + then: + error.message == "msg" + error.locations == null + error.extensions == [x : "y"] + error.path == null + + } + + def "implements equals/hashCode correctly for matching errors"() { + when: + def firstError = toGraphQLError(first) + def secondError = toGraphQLError(second) + + then: + firstError == secondError + firstError.hashCode() == secondError.hashCode() + + where: + first | second + [message: "msg"] | [message: "msg"] + [message: "msg", locations: [new SourceLocation(1, 2)]] | [message: "msg", locations: [new SourceLocation(1, 2)]] + [message: "msg", errorType: ErrorType.InvalidSyntax] | [message: "msg", errorType: ErrorType.InvalidSyntax] + [message: "msg", path: ["items", 1, "item"]] | [message: "msg", path: ["items", 1, "item"]] + [message: "msg", extensions: [aBoolean: true, aString: "foo"]] | [message: "msg", extensions: [aBoolean: true, aString: "foo"]] + } + + def "implements equals/hashCode correctly for different errors"() { + when: + def firstError = toGraphQLError(first) + def secondError = toGraphQLError(second) + + then: + firstError != secondError + firstError.hashCode() != secondError.hashCode() + + where: + first | second + [message: "msg"] | [message: "different msg"] + [message: "msg", locations: [new SourceLocation(1, 2)]] | [message: "msg", locations: [new SourceLocation(3, 4)]] + [message: "msg", errorType: ErrorType.InvalidSyntax] | [message: "msg", errorType: ErrorType.DataFetchingException] + [message: "msg", path: ["items", "1", "item"]] | [message: "msg", path: ["items"]] + [message: "msg", extensions: [aBoolean: false]] | [message: "msg", extensions: [aString: "foo"]] + } + + private static GraphQLError toGraphQLError(Map errorFields) { + def errorBuilder = GraphQLError.newError(); + errorFields.forEach { key, value -> + if (value != null) { + switch (key) { + case "message": + errorBuilder.message(value as String); + break; + case "locations": + errorBuilder.locations(value as List); + break; + case "errorType": + errorBuilder.errorType(value as ErrorClassification); + break; + case "path": + errorBuilder.path(value as List); + break; + case "extensions": + errorBuilder.extensions(value as Map); + break; + } + } + } + return errorBuilder.build(); + } +} diff --git a/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy b/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy index 53c2efb895..a0c4c4e9e3 100644 --- a/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy @@ -3,6 +3,7 @@ package graphql import graphql.language.SourceLocation import graphql.validation.ValidationError import graphql.validation.ValidationErrorType +import spock.lang.RepeatUntilFailure import spock.lang.Specification class GraphqlErrorHelperTest extends Specification { @@ -36,7 +37,7 @@ class GraphqlErrorHelperTest extends Specification { class ExtensionAddingError implements GraphQLError { - Map extensions; + Map extensions ExtensionAddingError(Map extensions) { this.extensions = extensions @@ -59,20 +60,24 @@ class GraphqlErrorHelperTest extends Specification { @Override Map getExtensions() { - return extensions; + return extensions } } def "can turn error classifications into extensions"() { - def validationErr = new ValidationError(ValidationErrorType.InvalidFragmentType, new SourceLocation(6, 9), "Things are not valid") + def validationErr = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.InvalidFragmentType) + .sourceLocation(new SourceLocation(6, 9)) + .description("Things are not valid") + .build() when: def specMap = GraphqlErrorHelper.toSpecification(validationErr) then: specMap == [ locations : [[line: 6, column: 9]], - message : "Validation error of type InvalidFragmentType: Things are not valid", + message : "Things are not valid", extensions: [classification: "ValidationError"], ] @@ -102,4 +107,63 @@ class GraphqlErrorHelperTest extends Specification { message : "has extensions" ] } + + def "can parse out a map and make an error"() { + when: + def rawError = [message: "m"] + def graphQLError = GraphqlErrorHelper.fromSpecification(rawError) + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType() == ErrorType.DataFetchingException // default from error builder + graphQLError.getLocations() == [] + graphQLError.getPath() == null + graphQLError.getExtensions() == null + + when: + rawError = [message: "m"] + graphQLError = GraphQLError.fromSpecification(rawError) // just so we reference the public method + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType() == ErrorType.DataFetchingException // default from error builder + graphQLError.getLocations() == [] + graphQLError.getPath() == null + graphQLError.getExtensions() == null + + when: + def extensionsMap = [attr1: "a1", attr2: "a2", classification: "CLASSIFICATION-X"] + rawError = [message: "m", path: ["a", "b"], locations: [[line: 2, column: 3]], extensions: extensionsMap] + graphQLError = GraphqlErrorHelper.fromSpecification(rawError) + + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType().toString() == "CLASSIFICATION-X" + graphQLError.getLocations() == [new SourceLocation(2, 3)] + graphQLError.getPath() == ["a", "b"] + graphQLError.getExtensions() == extensionsMap + + + when: "can do a list of errors" + def rawErrors = [[message: "m0"], [message: "m1"]] + def errors = GraphqlErrorHelper.fromSpecification(rawErrors) + then: + errors.size() == 2 + errors.eachWithIndex { GraphQLError gErr, int i -> + assert gErr.getMessage() == "m" + i + assert gErr.getErrorType() == ErrorType.DataFetchingException // default from error builder + assert gErr.getLocations() == [] + assert gErr.getPath() == null + assert gErr.getExtensions() == null + } + } + + @RepeatUntilFailure(maxAttempts = 1_000, ignoreRest = false) + def "can deterministically serialize SourceLocation"() { + when: + def specMap = GraphqlErrorHelper.toSpecification(new TestError()) + + then: + def location = specMap["locations"][0] as Map + def keys = location.keySet().toList() + keys == ["line", "column"] + } } diff --git a/src/test/groovy/graphql/GuavaLimitCheck.groovy b/src/test/groovy/graphql/GuavaLimitCheck.groovy new file mode 100644 index 0000000000..cc4fc7ff58 --- /dev/null +++ b/src/test/groovy/graphql/GuavaLimitCheck.groovy @@ -0,0 +1,89 @@ +package graphql + +import com.tngtech.archunit.core.domain.JavaClasses +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.core.importer.ImportOption +import spock.lang.Specification + +/* + * We selectively shade in a few classes of Guava, however we want to minimise dependencies so we want to keep this list small. + * This check ensures no new Guava classes are added + */ +class GuavaLimitCheck extends Specification { + + static final String GUAVA_PACKAGE_PREFIX = "com.google.common" + + static final Set ALLOWED_GUAVA_CLASSES = [ + "com.google.common.base.Strings", + "com.google.common.collect.BiMap", + "com.google.common.collect.HashBasedTable", + "com.google.common.collect.HashBiMap", + "com.google.common.collect.HashMultimap", + "com.google.common.collect.HashMultiset", + "com.google.common.collect.ImmutableBiMap", + "com.google.common.collect.ImmutableCollection", + "com.google.common.collect.ImmutableList", + "com.google.common.collect.ImmutableList\$Builder", + "com.google.common.collect.ImmutableListMultimap", + "com.google.common.collect.ImmutableListMultimap\$Builder", + "com.google.common.collect.ImmutableMap", + "com.google.common.collect.ImmutableMap\$Builder", + "com.google.common.collect.ImmutableSet", + "com.google.common.collect.ImmutableSet\$Builder", + "com.google.common.collect.Interner", + "com.google.common.collect.Interners", + "com.google.common.collect.Iterables", + "com.google.common.collect.LinkedHashMultimap", + "com.google.common.collect.Maps", + "com.google.common.collect.Multimap", + "com.google.common.collect.Multimaps", + "com.google.common.collect.Multiset", + "com.google.common.collect.Multisets", + "com.google.common.collect.Sets", + "com.google.common.collect.Sets\$SetView", + "com.google.common.collect.Table" + ] + + def "should identify which classes use prohibited Guava dependencies"() { + given: + JavaClasses importedClasses = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + + when: + Map> violationsByClass = [:] + + importedClasses.each { javaClass -> + def className = javaClass.name + def guavaUsages = javaClass.getAccessesFromSelf() + .collect { it.targetOwner } + .findAll { it.packageName.startsWith(GUAVA_PACKAGE_PREFIX) && !ALLOWED_GUAVA_CLASSES.contains(it.fullName) } + .toSet() + + if (!guavaUsages.isEmpty()) { + violationsByClass[className] = guavaUsages + } + } + + then: + violationsByClass.isEmpty() + + cleanup: "if the test fails, provide detailed information about which classes have violations" + if (!violationsByClass.isEmpty()) { + def errorMessage = new StringBuilder("Prohibited Guava class usage found:\n") + + violationsByClass.each { className, guavaClasses -> + errorMessage.append("\nClass: ${className} uses these prohibited Guava classes:\n") + guavaClasses.each { guavaClass -> + errorMessage.append(" - ${guavaClass}\n") + } + } + + errorMessage.append("\nEither:\n") + errorMessage.append("1. Preferred option: Replace them with alternatives that don't depend on Guava\n") + errorMessage.append("2. If absolutely necessary: Add these Guava classes to the shade configuration in the build.gradle file\n") + + println errorMessage.toString() + } + } +} diff --git a/src/test/groovy/graphql/HelloWorld.java b/src/test/groovy/graphql/HelloWorld.java index b381b4bbc0..5c8e13790f 100644 --- a/src/test/groovy/graphql/HelloWorld.java +++ b/src/test/groovy/graphql/HelloWorld.java @@ -3,14 +3,14 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.Map; import static graphql.Scalars.GraphQLString; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class HelloWorld { diff --git a/src/test/groovy/graphql/InterfacesImplementingInterfacesTest.groovy b/src/test/groovy/graphql/InterfacesImplementingInterfacesTest.groovy new file mode 100644 index 0000000000..bb22d70461 --- /dev/null +++ b/src/test/groovy/graphql/InterfacesImplementingInterfacesTest.groovy @@ -0,0 +1,1403 @@ +package graphql + +import graphql.schema.GraphQLCodeRegistry +import graphql.schema.GraphQLInterfaceType +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLSchema +import graphql.schema.GraphQLTypeReference +import graphql.schema.TypeResolver +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.SchemaParser +import graphql.schema.idl.SchemaPrinter +import graphql.schema.idl.errors.SchemaProblem +import graphql.schema.validation.InvalidSchemaException +import spock.lang.Specification + +import static graphql.Scalars.GraphQLInt +import static graphql.Scalars.GraphQLString +import static graphql.schema.GraphQLArgument.newArgument +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLInterfaceType.newInterface +import static graphql.schema.GraphQLObjectType.newObject + +class InterfacesImplementingInterfacesTest extends Specification { + def 'Simple interface implementing interface'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When implementing interface does not declare required field, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + url: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + assertErrorMessage(error, "The interface type 'Resource' [@n:n] does not have a field 'id' required via interface 'Node' [@n:n]") + } + + def 'Transitively implemented interfaces defined in implementing interface'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + interface Image implements Resource & Node { + id: ID! + url: String + thumbnail: String + } + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + + def 'Transitively implemented interfaces defined in implementing type'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + type Image implements Resource & Node { + id: ID! + url: String + thumbnail: String + } + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When not all transitively implemented interfaces are defined in implementing interface, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + interface Image implements Resource & Node { + id: ID! + url: String + thumbnail: String + } + + interface LargeImage implements Image & Resource { + id: ID! + url: String + thumbnail: String + large: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 2 + assertErrorMessage(error, "The interface type 'LargeImage' [@n:n] must implement 'Node' [@n:n] because it is implemented by 'Image' [@n:n]") + assertErrorMessage(error, "The interface type 'LargeImage' [@n:n] must implement 'Node' [@n:n] because it is implemented by 'Resource' [@n:n]") + } + + def 'When not all transitively implemented interfaces are defined in implementing type, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + type Image implements Resource { + id: ID! + url: String + thumbnail: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + assertErrorMessage(error, "The object type 'Image' [@n:n] must implement 'Node' [@n:n] because it is implemented by 'Resource' [@n:n]") + } + + def 'When interface implements itself, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node implements Named & Node { + id: ID! + name: String + } + + interface Named implements Node & Named { + id: ID! + name: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 2 + assertErrorMessage(error, "The interface type 'Node' [@n:n] cannot implement itself") + assertErrorMessage(error, "The interface type 'Named' [@n:n] cannot implement itself") + } + + def 'When interface extension implements interface and declares required field, then parsing is successful'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource { + url: String + } + + extend interface Resource implements Node { + id: ID! + } + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When interface extension implements interface but doesn\'t declare required field, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + extraField: String + } + + interface Resource { + url: String + } + + extend interface Resource implements Node { + id: ID! + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + assertErrorMessage(error, "The interface extension type 'Resource' [@n:n] does not have a field 'extraField' required via interface 'Node' [@n:n]") + } + + def 'When object extension implements all transitive interfaces, then parsing is successful'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + type Image { + thumbnail: String! + } + + extend type Image implements Node & Resource { + id: ID! + url: String + } + """ + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When object extension does not implement all transitive interfaces, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + type Image { + thumbnail: String! + } + + extend type Image implements Resource { + id: ID! + url: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + assertErrorMessage(error, "The object extension type 'Image' [@n:n] must implement 'Node' [@n:n] because it is implemented by 'Resource' [@n:n]") + } + + def 'When interface extension implements all transitive interfaces, then parsing is successful'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + interface Image { + thumbnail: String! + } + + extend interface Image implements Node & Resource { + id: ID! + url: String + } + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When interface extension does not implement all transitive interfaces, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + interface Image { + thumbnail: String! + } + + extend interface Image implements Resource { + id: ID! + url: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + assertErrorMessage(error, "The interface extension type 'Image' [@n:n] must implement 'Node' [@n:n] because it is implemented by 'Resource' [@n:n]") + } + + def 'When hierarchy results in circular reference, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Interface1 + } + + interface Interface1 implements Interface3 & Interface2 { + field1: String + field2: String + field3: String + } + + interface Interface2 implements Interface1 & Interface3 { + field1: String + field2: String + field3: String + } + + interface Interface3 implements Interface2 & Interface1 { + field1: String + field2: String + field3: String + } + + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + + error.errors.size() == 6 + + assertErrorMessage(error, "The interface type 'Interface1' [@n:n] cannot implement 'Interface2' [@n:n] as this would result in a circular reference") + assertErrorMessage(error, "The interface type 'Interface1' [@n:n] cannot implement 'Interface3' [@n:n] as this would result in a circular reference") + assertErrorMessage(error, "The interface type 'Interface2' [@n:n] cannot implement 'Interface3' [@n:n] as this would result in a circular reference") + assertErrorMessage(error, "The interface type 'Interface2' [@n:n] cannot implement 'Interface1' [@n:n] as this would result in a circular reference") + assertErrorMessage(error, "The interface type 'Interface3' [@n:n] cannot implement 'Interface1' [@n:n] as this would result in a circular reference") + assertErrorMessage(error, "The interface type 'Interface3' [@n:n] cannot implement 'Interface2' [@n:n] as this would result in a circular reference") + } + + def 'When interface doesn\'t implement transitive interface declared in extension, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Interface1 + } + + interface Interface1 implements Interface2 { + field1: String + field2: String + } + + interface Interface2 { + field2: String + } + + interface Interface3 { + field3: String + } + + extend interface Interface2 implements Interface3 { + field3: String + } + + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + + assertErrorMessage( + error, + "The interface type 'Interface1' [@n:n] must implement 'Interface3' [@n:n] because it is implemented by 'Interface2' [@n:n]" + ) + } + + def 'When interface implements transitive interface declared in extension, then parsing succeeds'() { + when: + def schema = """ + type Query { + find(id: String!): Interface1 + } + + interface Interface1 implements Interface2 { + field1: String + field2: String + } + + interface Interface2 { + field2: String + } + + interface Interface3 { + field3: String + } + + extend interface Interface2 implements Interface3 { + field3: String + } + + extend interface Interface1 implements Interface3 { + field3: String + } + + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When field required by new extension implementation is declared in original interface type, then parsing succeeds'() { + when: + def schema = """ + type Query { + find(id: String!): Interface1 + } + + interface Interface1 { + field1: String + field2: String + } + + interface Interface2 { + field2: String + } + + extend interface Interface1 implements Interface2 + + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When type declares interface and extension declares required field, then parsing succeeds'() { + when: + def schema = """ + type Query { + find(id: String!): Interface1 + } + + interface Interface1 implements Interface2 { + field1: String + } + + interface Interface2 { + field2: String + } + + extend interface Interface1 { + field2: String + } + + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When interface implements same interface more than once via extensions, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Type1 + } + + type Type1 { + field1: String + } + + interface Interface2 { + field20: String + field21: String + } + + extend type Type1 implements Interface2 { + field20: String + } + + extend type Type1 implements Interface2 { + field21: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 2 + + assertErrorMessage(error, "The object extension type 'Type1' [@n:n] can only implement 'Interface2' [@n:n] once.") + } + + def 'When interface implements same interface more than once, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Type1 + } + + type Type1 implements Interface2 { + field1: String + field20: String + } + + interface Interface2 { + field20: String + field21: String + } + + extend type Type1 implements Interface2 { + field21: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 2 + + assertErrorMessage(error, "The object extension type 'Type1' [@n:n] can only implement 'Interface2' [@n:n] once.") + assertErrorMessage(error, "The object type 'Type1' [@n:n] can only implement 'Interface2' [@n:n] once.") + } + + def 'When interface implements interface and redefines non-null field as nullable, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + url: String + id: ID + } + + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + + assertErrorMessage(error, "The interface type 'Resource' [@n:n] has tried to redefine field 'id' defined via interface 'Node' [@n:n] from 'ID!' to 'ID'") + } + + def 'When interface extension implements interface and redefines non-null field as nullable, then parsing fails'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID! + } + + interface Resource { + url: String + } + + extend interface Resource implements Node { + id: ID + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 1 + + assertErrorMessage(error, "The interface extension type 'Resource' [@n:n] has tried to redefine field 'id' defined via interface 'Node' [@n:n] from 'ID!' to 'ID'") + } + + def 'When interface implements interface and redefines nullable field as non-null, then parsing succeeds'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID + } + + interface Resource implements Node { + url: String + id: ID! + } + + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When interface extension implements interface and redefines nullable field as non-null, then parsing succeeds'() { + when: + def schema = """ + type Query { + find(id: String!): Node + } + + interface Node { + id: ID + } + + interface Resource { + url: String + } + + extend interface Resource implements Node { + id: ID! + } + """ + + parseSchema(schema) + + then: + noExceptionThrown() + } + + def 'When interface extension implements interface and misses field arguments, then parsing fails'() { + when: + def schema = """ + interface InterfaceType { + fieldA(arg1 : Int) : Int + fieldB(arg1 : String = "defaultVal", arg2 : String, arg3 : Int) : String + } + + interface BaseInterface { + fieldX : Int + } + + extend interface BaseInterface implements InterfaceType { + fieldA : Int + fieldB(arg1 : String = "defaultValX", arg2 : String!, arg3 : String) : String + } + + type Query { + mock: String + } + + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 4 + + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] field 'fieldA' does not have the same number of arguments as specified via interface 'InterfaceType' [@n:n]") + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg1:String =\"defaultVal\"' to 'arg1:String =\"defaultValX\"") + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg2:String' to 'arg2:String!") + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg3:Int' to 'arg3:String") + } + + def 'When interface implements interface and misses field arguments, then parsing fails'() { + when: + def schema = """ + interface InterfaceType { + fieldA(arg1 : Int) : Int + fieldB(arg1 : String = "defaultVal", arg2 : String, arg3 : Int) : String + } + + interface BaseInterface implements InterfaceType { + fieldX : Int + fieldA : Int + fieldB(arg1 : String = "defaultValX", arg2 : String!, arg3 : String) : String + } + + type Query { + mock: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 4 + + assertErrorMessage(error, "The interface type 'BaseInterface' [@n:n] field 'fieldA' does not have the same number of arguments as specified via interface 'InterfaceType' [@n:n]") + assertErrorMessage(error, "The interface type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg1:String =\"defaultVal\"' to 'arg1:String =\"defaultValX\"") + assertErrorMessage(error, "The interface type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg2:String' to 'arg2:String!") + assertErrorMessage(error, "The interface type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg3:Int' to 'arg3:String") + } + + def 'When interface implements interface via extension and misses field arguments, then parsing fails'() { + when: + def schema = """ + interface InterfaceType { + fieldA(arg1 : Int) : Int + fieldB(arg1 : String = "defaultVal", arg2 : String, arg3 : Int) : String + } + + interface BaseInterface { + fieldX : Int + fieldA : Int + fieldB(arg1 : String = "defaultValX", arg2 : String!, arg3 : String) : String + } + + extend interface BaseInterface implements InterfaceType + + type BaseType { + id: ID! + } + + type Query { + mock: String + } + """ + + parseSchema(schema) + + then: + def error = thrown(SchemaProblem) + error.errors.size() == 4 + + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] field 'fieldA' does not have the same number of arguments as specified via interface 'InterfaceType' [@n:n]") + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg1:String =\"defaultVal\"' to 'arg1:String =\"defaultValX\"") + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg2:String' to 'arg2:String!") + assertErrorMessage(error, "The interface extension type 'BaseInterface' [@n:n] has tried to redefine field 'fieldB' arguments defined via interface 'InterfaceType' [@n:n] from 'arg3:Int' to 'arg3:String") + } + + def 'Test query execution'() { + given: + def graphQLSchema = createComplexSchema() + + when: + def result = GraphQL.newGraphQL(graphQLSchema).build().execute(""" + { + find { + ... on Node { + id + ... on Resource { + __typename + url + ... on Image { + thumbnail + } + ... on File { + path + } + } + } + } + } + """) + + then: + !result.errors + result.data == [find: [ + [id: '1', url: 'https://image.com/1', thumbnail: 'TN', __typename: 'Image'], + [id: '2', url: 'https://file.com/1', path: '/file/1', __typename: 'File'] + ]] + } + + def 'Test introspection query'() { + given: + def graphQLSchema = createComplexSchema() + + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + + when: + String query = """ + { + nodeType: __type(name: "Node") { + possibleTypes { + kind + name + } + } + } + """ + def result = graphQL.execute(query) + + then: + !result.errors + result.data == [ + nodeType: [possibleTypes: [[kind: 'OBJECT', name: 'File'], [kind: 'OBJECT', name: 'Image']]], + ] + + when: + query = """ + { + resourceType: __type(name: "Resource") { + possibleTypes { + kind + name + } + interfaces { + kind + name + } + } + } + """ + result = graphQL.execute(query) + + then: + !result.errors + result.data == [ + resourceType: [possibleTypes: [[kind: 'OBJECT', name: 'File'], [kind: 'OBJECT', name: 'Image']], interfaces: [[kind: 'INTERFACE', name: 'Node']]] + ] + + when: + + query = """ + { + imageType: __type(name: "Image") { + interfaces { + kind + name + } + } + } + """ + result = graphQL.execute(query) + + then: + !result.errors + result.data == [ + imageType : [interfaces: [[kind: 'INTERFACE', name: 'Resource'], [kind: 'INTERFACE', name: 'Node']]], + ] + } + + def "interfaces introspection field is empty list for interfaces"() { + given: + def graphQLSchema = createComplexSchema() + + when: + def result = GraphQL.newGraphQL(graphQLSchema).build().execute(""" + { + nodeType: __type(name: "Node") { + interfaces { + kind + name + } + } + } + """) + + then: + !result.errors + result.data == [ + nodeType: [interfaces: []] + ] + + } + + def "interface type has a reference to implemented interfaces"() { + when: + def schema = createComplexSchema() + def resourceType = schema.getType("Resource") as GraphQLInterfaceType + + then: + resourceType.getInterfaces().size() == 1 + resourceType.getInterfaces().get(0) instanceof GraphQLInterfaceType + resourceType.getInterfaces().get(0).getName() == "Node" + + } + + def "GraphQLInterfaceType can can implement interfaces"() { + given: + def node1Type = newInterface() + .name("Node1") + .field(newFieldDefinition().name("id1").type(GraphQLString).build()) + .build() + + def node2Type = newInterface() + .name("Node2") + .field(newFieldDefinition().name("id2").type(GraphQLString).build()) + .build() + + // references two interfaces: directly and via type ref + def resource = newInterface() + .name("Resource") + .field(newFieldDefinition().name("id1").type(GraphQLString).build()) + .field(newFieldDefinition().name("id2").type(GraphQLString).build()) + .withInterface(GraphQLTypeReference.typeRef("Node1")) + .withInterface(node2Type) + .build() + def image = newObject() + .name("Image") + .field(newFieldDefinition().name("id1").type(GraphQLString).build()) + .field(newFieldDefinition().name("id2").type(GraphQLString).build()) + .withInterface(resource) + .withInterface(node1Type) + .withInterface(node2Type) + .build() + def query = newObject() + .name("Query") + .field(newFieldDefinition().name("image").type(image).build()) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(node1Type, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(node2Type, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(resource, { env -> Assert.assertShouldNeverHappen() }) + .build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .additionalType(node1Type) + .build() + + when: + def printedSchema = new SchemaPrinter().print(schema) + + then: + printedSchema.contains(""" +interface Node1 { + id1: String +} + +interface Node2 { + id2: String +} + +interface Resource implements Node1 & Node2 { + id1: String + id2: String +} + +type Image implements Node1 & Node2 & Resource { + id1: String + id2: String +} + +type Query { + image: Image +} +""") + } + + def "When programmatically created interface does not implement interface correctly, then creation fails"() { + given: + def interface1 = newInterface() + .name("Interface1") + .field( + newFieldDefinition().name("field1").type(GraphQLString) + .argument(newArgument().name("arg1").type(GraphQLString)) + ) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .field( + newFieldDefinition().name("field3").type(GraphQLString) + .argument(newArgument().name("arg3").type(GraphQLString)) + ) + .field(newFieldDefinition().name("field4").type(GraphQLString)) + .build() + + def interface2 = newInterface() + .name("Interface2") + .field( + newFieldDefinition().name("field1").type(GraphQLString) + .argument(newArgument().name("arg1").type(GraphQLInt)) + ) + .field(newFieldDefinition().name("field2").type(GraphQLInt)) + .field(newFieldDefinition().name("field3").type(GraphQLString)) + .withInterface(interface1) + .build() + + def query = newObject() + .name("Query") + .field(newFieldDefinition().name("interface2").type(interface2).build()) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(interface1, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(interface2, { env -> Assert.assertShouldNeverHappen() }) + .build() + + when: + GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .build() + + then: + def error = thrown(InvalidSchemaException) + + assertErrorMessage(error, + "interface type 'Interface2' does not implement interface 'Interface1' because field 'field1' argument 'arg1' is defined differently", + "interface type 'Interface2' does not implement interface 'Interface1' because field 'field2' is defined as 'Int' type and not as 'String' type", + "interface type 'Interface2' does not implement interface 'Interface1' because field 'field3' is missing argument(s): 'arg3'", + "interface type 'Interface2' does not implement interface 'Interface1' because field 'field4' is missing" + ) + } + + def "When programmatically created interface implement interface correctly, then creation succeeds"() { + given: + def interface1 = newInterface() + .name("Interface1") + .field( + newFieldDefinition().name("field1").type(GraphQLString) + .argument(newArgument().name("arg1").type(GraphQLString)) + ) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .field( + newFieldDefinition().name("field3").type(GraphQLString) + .argument(newArgument().name("arg3").type(GraphQLString)) + ) + .field(newFieldDefinition().name("field4").type(GraphQLString)) + .build() + + def interface2 = newInterface() + .name("Interface2") + .field( + newFieldDefinition().name("field1").type(GraphQLString) + .argument(newArgument().name("arg1").type(GraphQLString)) + ) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .field( + newFieldDefinition().name("field3").type(GraphQLString) + .argument(newArgument().name("arg3").type(GraphQLString)) + ) + .field(newFieldDefinition().name("field4").type(GraphQLString)) + .withInterface(interface1) + .build() + + def query = newObject() + .name("Query") + .field(newFieldDefinition().name("interface2").type(interface2).build()) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(interface1, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(interface2, { env -> Assert.assertShouldNeverHappen() }) + .build() + + when: + GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .build() + + then: + noExceptionThrown() + } + + def "When programmatically created type does not implement all transitive interfaces, then creation fails"() { + given: + def interface1 = newInterface() + .name("Interface1") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .build() + + def interface2 = newInterface() + .name("Interface2") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .withInterface(interface1) + .build() + + def type = newObject() + .name("Type") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .withInterface(interface2) + .build() + + def query = newObject() + .name("Query") + .field(newFieldDefinition().name("find").type(type).build()) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(interface1, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(interface2, { env -> Assert.assertShouldNeverHappen() }) + .build() + + when: + GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .build() + + then: + def error = thrown(InvalidSchemaException) + + assertErrorMessage(error, "object type 'Type' must implement 'Interface1' because it is implemented by 'Interface2'") + } + + def "When programmatically created type implement all transitive interfaces, then creation succeeds"() { + given: + def interface1 = newInterface() + .name("Interface1") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .build() + + def interface2 = newInterface() + .name("Interface2") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .withInterface(interface1) + .build() + + def type = newObject() + .name("Type") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .field(newFieldDefinition().name("field2").type(GraphQLString)) + .withInterface(interface1) + .withInterface(interface2) + .build() + + def query = newObject() + .name("Query") + .field(newFieldDefinition().name("find").type(type).build()) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(interface1, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(interface2, { env -> Assert.assertShouldNeverHappen() }) + .build() + + when: + GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .build() + + then: + noExceptionThrown() + } + + def "When interface implementation results in circular reference, then creation fails"() { + given: + def interface1 = newInterface() + .name("Interface1") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .withInterface(GraphQLTypeReference.typeRef("Interface3")) + .withInterface(GraphQLTypeReference.typeRef("Interface2")) + .build() + + def interface2 = newInterface() + .name("Interface2") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .withInterface(interface1) + .withInterface(GraphQLTypeReference.typeRef("Interface3")) + .build() + + def interface3 = newInterface() + .name("Interface3") + .field(newFieldDefinition().name("field1").type(GraphQLString)) + .withInterface(interface1) + .withInterface(interface2) + .build() + + def query = newObject() + .name("Query") + .field(newFieldDefinition().name("find").type(interface3).build()) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(interface1, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(interface2, { env -> Assert.assertShouldNeverHappen() }) + .typeResolver(interface3, { env -> Assert.assertShouldNeverHappen() }) + .build() + + when: + GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .build() + + then: + def error = thrown(InvalidSchemaException) + + assertErrorMessage(error, + "interface type 'Interface3' cannot implement 'Interface1' because that would result on a circular reference", + "interface type 'Interface3' cannot implement 'Interface2' because that would result on a circular reference", + "interface type 'Interface1' cannot implement 'Interface3' because that would result on a circular reference", + "interface type 'Interface1' cannot implement 'Interface2' because that would result on a circular reference", + "interface type 'Interface2' cannot implement 'Interface1' because that would result on a circular reference", + "interface type 'Interface2' cannot implement 'Interface3' because that would result on a circular reference", + ) + } + + def assertErrorMessage(SchemaProblem error, expectedMessage) { + def normalizedMessages = error.errors.collect { it.message.replaceAll($/\[@[0-9]+:[0-9]+]/$, '[@n:n]') } + + if (!normalizedMessages.contains(expectedMessage)) { + return false + } + + return true + } + + def assertErrorMessage(InvalidSchemaException exception, String... expectedErrors) { + def expectedMessage = "invalid schema:\n" + expectedErrors.join("\n") + + return exception.message == expectedMessage + } + + def parseSchema(schema) { + def reader = new StringReader(schema) + def registry = new SchemaParser().parse(reader) + + def options = SchemaGenerator.Options.defaultOptions() + + return new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) + } + + def createComplexSchema() { + def sdl = """ + type Query { + find: [Node] + } + + interface Node { + id: ID! + } + + interface Resource implements Node { + id: ID! + url: String + } + + type Image implements Resource & Node { + id: ID! + url: String + thumbnail: String + } + + type File implements Resource & Node { + id: ID! + url: String + path: String + } + """ + + def typeDefinitionRegistry = new SchemaParser().parse(sdl) + + TypeResolver typeResolver = { env -> + Map obj = env.getObject() + String id = (String) obj.get("id") + GraphQLSchema schema = env.getSchema() + + if (id == "1") { + return (GraphQLObjectType) schema.getType("Image") + } else { + return (GraphQLObjectType) schema.getType("File") + } + } + + def graphQLSchema = new SchemaGenerator().makeExecutableSchema(typeDefinitionRegistry, RuntimeWiring.newRuntimeWiring() + .type("Query", { typeWiring -> + typeWiring.dataFetcher( + "find", + { e -> + [ + [id: '1', url: 'https://image.com/1', thumbnail: 'TN'], + [id: '2', url: 'https://file.com/1', path: '/file/1'], + ] + } + ) + }) + .type("Node", { typeWiring -> + typeWiring.typeResolver(typeResolver) + }) + .type("Resource", { typeWiring -> + typeWiring.typeResolver(typeResolver) + }) + .build() + ) + + return graphQLSchema + } +} diff --git a/src/test/groovy/graphql/Issue1440.groovy b/src/test/groovy/graphql/Issue1440.groovy deleted file mode 100644 index f1b9fef5bf..0000000000 --- a/src/test/groovy/graphql/Issue1440.groovy +++ /dev/null @@ -1,90 +0,0 @@ -package graphql - -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -class Issue1440 extends Specification { - - def schema = TestUtil.schema(""" - type Query { - nothing: String - } - - type Mutation { - updateUDI(input: UDIInput!): UDIOutput - } - - type UDIOutput { - device: String - version: String - } - - input UDIInput { - device: String - version: String - } - """) - - def graphQL = GraphQL.newGraphQL(schema).build() - - - def "#1440 when fragment type condition is input type it should return validation error - not classCastException"() { - when: - def executionInput = ExecutionInput.newExecutionInput() - .query(''' - mutation UpdateUDI($input: UDIInput!) { - updateUDI(input: $input) { - ...fragOnInputType - __typename - } - } - - # fragment should only target composite types - fragment fragOnInputType on UDIInput { - device - version - __typename - } - - ''') - .variables([input: [device: 'device', version: 'version'] ]) - .build() - - def executionResult = graphQL.execute(executionInput) - - then: - - executionResult.data == null - executionResult.errors.size() == 1 - (executionResult.errors[0] as ValidationError).validationErrorType == ValidationErrorType.FragmentTypeConditionInvalid - } - - def "#1440 when inline fragment type condition is input type it should return validation error - not classCastException"() { - when: - def executionInput = ExecutionInput.newExecutionInput() - .query(''' - mutation UpdateUDI($input: UDIInput!) { - updateUDI(input: $input) { - # fragment should only target composite types - ... on UDIInput { - device - version - __typename - } - __typename - } - } - ''') - .variables([input: [device: 'device', version: 'version'] ]) - .build() - - def executionResult = graphQL.execute(executionInput) - - then: - - executionResult.data == null - executionResult.errors.size() == 1 - (executionResult.errors[0] as ValidationError).validationErrorType == ValidationErrorType.InlineFragmentTypeConditionInvalid - } -} diff --git a/src/test/groovy/graphql/Issue1768.groovy b/src/test/groovy/graphql/Issue1768.groovy new file mode 100644 index 0000000000..5dbfde6bca --- /dev/null +++ b/src/test/groovy/graphql/Issue1768.groovy @@ -0,0 +1,69 @@ +package graphql + +import graphql.schema.DataFetcher +import spock.lang.Specification + +class Issue1768 extends Specification { + + static enum ThreadSort { + NEWEST_FIRST, + OLDEST_FIRST, + MOST_COMMENTS_FIRST + } + + def "#1768 check if the old behavior is not broken" () { + def spec = ''' + type Query { + dummy: String + } + ''' + GraphQL graphql = TestUtil.graphQL(spec, [Query: [dummy: (DataFetcher) { null }]]).build() + + when: + ExecutionResult result = graphql.execute { + it.query(" { dummy } ") + } + + then: + result.data.dummy == null + + } + def "#1768 test if local context is set for top level"() { + def spec = ''' + type Query { + dummy: String + } + ''' + GraphQL graphql = TestUtil.graphQL(spec, [Query: [dummy: (DataFetcher) { (String) it.localContext }]]).build() + + when: + ExecutionResult result = graphql.execute { + it.localContext("test").query(" { dummy } ") + } + + then: + result.data.dummy == "test" + } + def "#1768 test if the top local context gets transferred to the next level"() { + def spec = ''' + type Query { + dummy: DummyType + } + type DummyType { + dummy: String + } + ''' + GraphQL graphql = TestUtil.graphQL(spec, [ + Query: [dummy: (DataFetcher) { [ : ]}], + DummyType: [dummy: (DataFetcher) { (String) it.localContext }]]).build() + + when: + ExecutionResult result = graphql.execute { + it.localContext("test").query(" { dummy { dummy }} ") + } + + then: + result.data.dummy.dummy == "test" + } + +} diff --git a/src/test/groovy/graphql/Issue1847.groovy b/src/test/groovy/graphql/Issue1847.groovy new file mode 100644 index 0000000000..958bbfa446 --- /dev/null +++ b/src/test/groovy/graphql/Issue1847.groovy @@ -0,0 +1,42 @@ +package graphql + +import spock.lang.Specification + +class Issue1847 extends Specification { + def schema = TestUtil.schema(''' + type Query { + listWithCircularReference(filter : TypeWithCircularReference) : String + list(filter : Type) : String + } + input TypeWithCircularReference { + circularField : TypeWithCircularReference + } + input Type { + field: String + } + ''') + + def "#1847 when there is a circular reference between Input Type and Input Field - not StackOverflowError"() { + when: + def type = schema.getType("TypeWithCircularReference") + + def string = type.toString() + + println(string) + + then: + string.contains("[GraphQLInputObjectType]") + } + + def "#1847 when there is no circular reference between Input Type and Input Field - toString returns all data"() { + when: + def type = schema.getType("Type") + + def string = type.toString() + println(string) + + then: + !string.contains("[GraphQLInputObjectType]") + string.contains("GraphQLScalarType") + } +} diff --git a/src/test/groovy/graphql/Issue1914.groovy b/src/test/groovy/graphql/Issue1914.groovy new file mode 100644 index 0000000000..2e73cb5c9e --- /dev/null +++ b/src/test/groovy/graphql/Issue1914.groovy @@ -0,0 +1,133 @@ +package graphql + +import graphql.schema.DataFetcher +import spock.lang.Specification + +class Issue1914 extends Specification { + + def "default values in input objects are respected when variable is not provided"() { + given: + def spec = """type Query { + sayHello(arg: Arg! = {}): String + } + input Arg { + foo: String = "bar" + } + """ + DataFetcher df = { dfe -> + Map arg = dfe.getArgument("arg") + return arg.get("foo") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def result = graphQL.execute('{sayHello}') + + then: + result.errors.isEmpty() + result.data == [sayHello: "bar"] + + } + + def "default values in input objects are overridden when variable is provided"() { + given: + def spec = """type Query { + sayHello(arg: Arg! = {foo: "brewery"}): String + } + input Arg { + foo: String = "bar" + } + """ + DataFetcher df = { dfe -> + Map arg = dfe.getArgument("arg") + return arg.get("foo") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def result = graphQL.execute('{sayHello}') + + then: + result.errors.isEmpty() + result.data == [sayHello: "brewery"] + + } + + def "default values in input objects are overridden when null value is provided in input"() { + given: + def spec = """type Query { + sayHello(arg: Arg! = {foo: null}): String + } + input Arg { + foo: String = "bar" + } + """ + DataFetcher df = { dfe -> + Map arg = dfe.getArgument("arg") + return arg.get("foo") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def result = graphQL.execute('{sayHello}') + + then: + result.errors.isEmpty() + result.data == [sayHello: null] + + } + + def "default values in input objects are overridden when variable is provided and otherwise are respected"() { + given: + def spec = """type Query { + sayHello(arg: Arg! = {field1: "F1ValOverride"}): String + } + input Arg { + field1: String = "F1V" + field2: String = "F2V" + } + """ + DataFetcher df = { dfe -> + Map arg = dfe.getArgument("arg") + return arg.get("field1") + " & " + arg.get("field2") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def result = graphQL.execute('{sayHello}') + + then: + result.errors.isEmpty() + result.data == [sayHello: "F1ValOverride & F2V"] + + } + + def "default values (including null) in input objects are overridden when variable is provided and otherwise are respected"() { + given: + def spec = """type Query { + sayHello(arg: Arg! = {field1: "F1ValOverride", field5: "F5Val"}): String + } + input Arg { + field1: String = "F1V" + field2: String = "F2V" + field3: String = null + field4: String + field5: String + } + """ + DataFetcher df = { dfe -> + Map arg = dfe.getArgument("arg") + return arg.get("field1") + " & " + arg.get("field2") + " & " + arg.get("field3") + " & " + arg.get("field4") + " & " + arg.get("field5") + } as DataFetcher + def graphQL = TestUtil.graphQL(spec, ["Query": ["sayHello": df]]).build() + + when: + def result = graphQL.execute('{sayHello}') + + then: + result.errors.isEmpty() + result.data == [sayHello: "F1ValOverride & F2V & null & null & F5Val"] + + } +} + diff --git a/src/test/groovy/graphql/Issue2055.groovy b/src/test/groovy/graphql/Issue2055.groovy new file mode 100644 index 0000000000..49f413ec4b --- /dev/null +++ b/src/test/groovy/graphql/Issue2055.groovy @@ -0,0 +1,116 @@ +package graphql + +import graphql.introspection.Introspection +import graphql.schema.GraphQLEnumType +import graphql.schema.GraphQLNamedInputType +import graphql.schema.GraphQLScalarType +import spock.lang.Specification + + +class Issue2055 extends Specification { + + def "issues 2055 for directive on SCALAR"() { + given: + def dsl = ''' + directive @testDirective(aDate: Date) on OBJECT | SCALAR + + directive @DummyDirective on SCALAR + + scalar Date @DummyDirective + + type Query { + aQuery: String + } + ''' + + when: + def schema = TestUtil.schema(dsl) + + then: + schema.getType("Date") != null + schema.getType("Date") instanceof GraphQLScalarType + ((GraphQLScalarType) schema.getType("Date")).getDirective("DummyDirective") != null + + schema.getDirective("DummyDirective") != null + schema.getDirective("DummyDirective").validLocations().size() == 1 + schema.getDirective("DummyDirective").validLocations().asList() == [Introspection.DirectiveLocation.SCALAR] + + schema.getDirective("testDirective") != null + schema.getDirective("testDirective").validLocations().size() == 2 + schema.getDirective("testDirective").validLocations().asList() == [Introspection.DirectiveLocation.SCALAR, Introspection.DirectiveLocation.OBJECT] + ((GraphQLNamedInputType) schema.getDirective("testDirective").getArgument("aDate").getType()).getName() == "Date" + } + + + def "issues 2055 for directive on ENUM"() { + given: + def dsl = ''' + directive @testDirective(anEnum: Episode = JEDI) on OBJECT | ENUM + + directive @DummyDirective on ENUM + + enum Episode @DummyDirective{ + JEDI + NEWHOPE + } + + type Query { + aQuery: String + } + ''' + when: + def schema = TestUtil.schema(dsl) + + then: + schema.getType("Episode") != null + schema.getType("Episode") instanceof GraphQLEnumType + ((GraphQLEnumType) schema.getType("Episode")).getValues().size() == 2 + ((GraphQLEnumType) schema.getType("Episode")).getDirective("DummyDirective").getName() == "DummyDirective" + + schema.getDirective("DummyDirective") != null + schema.getDirective("DummyDirective").validLocations().size() == 1 + schema.getDirective("DummyDirective").validLocations().asList() == [Introspection.DirectiveLocation.ENUM] + + schema.getDirective("testDirective") != null + schema.getDirective("testDirective").validLocations().size() == 2 + schema.getDirective("testDirective").validLocations().asList() == [Introspection.DirectiveLocation.OBJECT, Introspection.DirectiveLocation.ENUM] + ((GraphQLNamedInputType) schema.getDirective("testDirective").getArgument("anEnum").getType()).getName() == "Episode" + } + + + def "issues 2055 for directive on ENUM_VALUE"() { + given: + def dsl = ''' + directive @testDirective(anEnum: Episode = JEDI) on OBJECT | ENUM_VALUE + + directive @DummyDirective on ENUM_VALUE + + enum Episode { + JEDI @DummyDirective + NEWHOPE + } + + type Query { + aQuery: String + } + ''' + when: + def schema = TestUtil.schema(dsl) + + then: + schema.getType("Episode") != null + schema.getType("Episode") instanceof GraphQLEnumType + ((GraphQLEnumType) schema.getType("Episode")).getValues().size() == 2 + ((GraphQLEnumType) schema.getType("Episode")).getValue("JEDI").getDirective("DummyDirective").getName() == "DummyDirective" + + schema.getDirective("DummyDirective") != null + schema.getDirective("DummyDirective").validLocations().size() == 1 + schema.getDirective("DummyDirective").validLocations().asList() == [Introspection.DirectiveLocation.ENUM_VALUE] + + schema.getDirective("testDirective") != null + schema.getDirective("testDirective").validLocations().size() == 2 + schema.getDirective("testDirective").validLocations().asList() == [Introspection.DirectiveLocation.OBJECT, Introspection.DirectiveLocation.ENUM_VALUE] + ((GraphQLNamedInputType) schema.getDirective("testDirective").getArgument("anEnum").getType()).getName() == "Episode" + } + +} \ No newline at end of file diff --git a/src/test/groovy/graphql/Issue2068.groovy b/src/test/groovy/graphql/Issue2068.groovy new file mode 100644 index 0000000000..9b15e28085 --- /dev/null +++ b/src/test/groovy/graphql/Issue2068.groovy @@ -0,0 +1,193 @@ +package graphql + + +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.StaticDataFetcher +import graphql.schema.idl.RuntimeWiring +import org.apache.commons.lang3.concurrent.BasicThreadFactory +import org.dataloader.BatchLoader +import org.dataloader.DataLoader +import org.dataloader.DataLoaderOptions +import org.dataloader.DataLoaderRegistry +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionStage +import java.util.concurrent.SynchronousQueue +import java.util.concurrent.ThreadFactory +import java.util.concurrent.ThreadPoolExecutor +import java.util.concurrent.TimeUnit + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring + +class Issue2068 extends Specification { + def "shouldn't hang on exception in resolveFieldWithInfo"() { + setup: + def sdl = """ + type Nation { + name: String + } + + type Toy { + name: String + } + + type Owner { + nation: Nation + } + + type Cat { + toys: [Toy] + } + + type Dog { + owner: Owner + } + + type Pets { + cats: [Cat] + dogs: [Dog] + } + + type Query { + pets: Pets + } + """ + + def cats = [['id': "cat-1"]] + def dogs = [['id': "dog-1"]] + + ThreadFactory threadFactory = new BasicThreadFactory.Builder() + .namingPattern("resolver-chain-thread-%d").build() + def executor = new ThreadPoolExecutor(15, 15, 0L, + TimeUnit.MILLISECONDS, new SynchronousQueue<>(), threadFactory, + new ThreadPoolExecutor.CallerRunsPolicy()) + + DataFetcher nationsDf = { env -> + return env.getDataLoader("owner.nation").load(env) + } + DataFetcher ownersDf = { DataFetchingEnvironment env -> + return env.getDataLoader("dog.owner").load(env) + } + + def wiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("pets", new StaticDataFetcher(['cats': cats, 'dogs': dogs]))) + .type(newTypeWiring("Cat") + .dataFetcher("toys", new StaticDataFetcher(new AbstractList() { + @Override + Object get(int i) { +// return "toy" + throw new RuntimeException("Simulated failure"); + } + + @Override + int size() { + return 1 + } + }))) + .type(newTypeWiring("Dog") + .dataFetcher("owner", ownersDf)) + .type(newTypeWiring("Owner") + .dataFetcher("nation", nationsDf)) + .build() + + def schema = TestUtil.schema(sdl, wiring) + + when: + def graphql = GraphQL.newGraphQL(schema) + .build() + DataLoaderRegistry dataLoaderRegistry = mkNewDataLoaderRegistry(executor) + + graphql.execute(newExecutionInput() + .dataLoaderRegistry(dataLoaderRegistry) + .query(""" + query LoadPets { + pets { + cats { + toys { + name + } + } + dogs { + owner { + nation { + name + } + } + } + } + } + """) + .build()) + + then: "execution with single instrumentation shouldn't hang" + // wait for each future to complete and grab the results + def e = thrown(RuntimeException) + + when: + graphql = GraphQL.newGraphQL(schema) + .build() + + graphql.execute(newExecutionInput() + .dataLoaderRegistry(dataLoaderRegistry) + .query(""" + query LoadPets { + pets { + cats { + toys { + name + } + } + dogs { + owner { + nation { + name + } + } + } + } + } + """) + .build()) + + then: "execution with chained instrumentation shouldn't hang" + // wait for each future to complete and grab the results + thrown(RuntimeException) + } + + private static DataLoaderRegistry mkNewDataLoaderRegistry(executor) { + def dataLoaderNations = new DataLoader(new BatchLoader>() { + @Override + CompletionStage>> load(List keys) { + return CompletableFuture.supplyAsync({ + def nations = [] + for (int i = 1; i <= 1; i++) { + nations.add(['id': "nation-$i", 'name': "nation-$i"]) + } + return nations + }, executor) as CompletionStage>> + } + }, DataLoaderOptions.newOptions().setMaxBatchSize(5)) + + def dataLoaderOwners = new DataLoader(new BatchLoader>() { + @Override + CompletionStage>> load(List keys) { + return CompletableFuture.supplyAsync({ + def owners = [] + for (int i = 1; i <= 1; i++) { + owners.add(['id': "owner-$i"]) + } + return owners + }, executor) as CompletionStage>> + } + }, DataLoaderOptions.newOptions().setMaxBatchSize(5)) + + def dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("dog.owner", dataLoaderOwners) + dataLoaderRegistry.register("owner.nation", dataLoaderNations) + dataLoaderRegistry + } +} diff --git a/src/test/groovy/graphql/Issue2114.groovy b/src/test/groovy/graphql/Issue2114.groovy new file mode 100644 index 0000000000..e4ad7fbda4 --- /dev/null +++ b/src/test/groovy/graphql/Issue2114.groovy @@ -0,0 +1,28 @@ +package graphql + +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.SchemaParser +import spock.lang.Specification + +class Issue2114 extends Specification { + + def "allow use of repeatable directives on extensions"() { + given: + def spec = "type Query {}" + + "directive @IamRepeatable repeatable on FIELD_DEFINITION" + + " extend type Query { " + + " test: String" + + " @IamRepeatable" + + " @IamRepeatable" + + "}" + + when: + def registry = new SchemaParser().parse(spec) + def graphQLSchema = new SchemaGenerator().makeExecutableSchema(registry, RuntimeWiring.newRuntimeWiring().build()) + + then: + graphQLSchema != null + } +} + diff --git a/src/test/groovy/graphql/Issue2141.groovy b/src/test/groovy/graphql/Issue2141.groovy new file mode 100644 index 0000000000..c3b00df8d6 --- /dev/null +++ b/src/test/groovy/graphql/Issue2141.groovy @@ -0,0 +1,70 @@ +package graphql + +import graphql.schema.idl.SchemaParser +import graphql.schema.idl.SchemaPrinter +import graphql.schema.idl.UnExecutableSchemaGenerator; + +import spock.lang.Specification + + +class Issue2141 extends Specification { + + def " remove redundant parenthesis "() { + when: + def schemaDesc = """ + directive @auth(roles: [String!]) on FIELD_DEFINITION + + type Query { + hello: String! @auth + } + """ + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(new SchemaParser().parse(schemaDesc)) + def schemaStr = new SchemaPrinter().print(schema) + + then: + schemaStr == '''directive @auth(roles: [String!]) on FIELD_DEFINITION + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type Query { + hello: String! @auth +} +''' + } +} diff --git a/src/test/groovy/graphql/Issue2274.groovy b/src/test/groovy/graphql/Issue2274.groovy new file mode 100644 index 0000000000..962f5e54cf --- /dev/null +++ b/src/test/groovy/graphql/Issue2274.groovy @@ -0,0 +1,110 @@ +package graphql + +import graphql.language.AstComparator +import graphql.language.Node +import graphql.language.ObjectTypeExtensionDefinition +import graphql.language.TypeName +import graphql.parser.Parser +import spock.lang.Specification + +class Issue2274 extends Specification { + boolean isEqual(Node node1, Node node2) { + return new AstComparator().isEqual(node1, node2) + } + + // This test happened to work previously, as there were no tokens following 'implements Thing' + def "extend type without text following works - schema build"() { + given: + def spec = ''' + type Query { + blob : Blob + } + + type Blob { + id: ID! + name: String + } + + interface Thing { + name: String + } + + input Interval { + now : Int + then : Int + } + + # random input + input AwesomeInput { + interval: Interval! + amount: Int! + } + + extend type Blob implements Thing + ''' + + when: + def schema = TestUtil.schema(spec) + + then: + schema != null + } + + // Placing an input immediately after extend type without braces previously failed + // The schema could not be compiled : SchemaProblem{errors=[The interface type 'input' is not present when resolving type + // 'Blob' [@20:13], The interface type 'AwesomeInput' is not present when resolving type 'Blob' [@20:13]]}. Expression: false + def "extend type with text following works - schema build"() { + given: + def spec = ''' + type Query { + blob : Blob + } + + type Blob { + id: ID! + name: String + } + + interface Thing { + name: String + } + + input Interval { + now : Int + then : Int + } + + extend type Blob implements Thing + + # random input + input AwesomeInput { + interval: Interval! + amount: Int! + } + ''' + + when: + def schema = TestUtil.schema(spec) + + then: + schema != null + } + + def "extend type with text following works - parser check"() { + given: + def spec = "extend type Blob implements Thing1 & Thing2 & Thing3" + + and: "expected schema" + def objSchema = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("Blob") + objSchema.implementz(new TypeName("Thing1")) + objSchema.implementz(new TypeName("Thing2")) + objSchema.implementz(new TypeName("Thing3")) + + when: + def document = new Parser().parseDocument(spec) + + then: + document.definitions.size() == 1 + isEqual(document.definitions[0], objSchema.build()) + } +} diff --git a/src/test/groovy/graphql/Issue296.groovy b/src/test/groovy/graphql/Issue296.groovy deleted file mode 100644 index e0ccc13549..0000000000 --- a/src/test/groovy/graphql/Issue296.groovy +++ /dev/null @@ -1,84 +0,0 @@ -package graphql - -import spock.lang.Specification - -import static graphql.Scalars.GraphQLString -import static graphql.schema.GraphQLArgument.newArgument -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition -import static graphql.schema.GraphQLInputObjectField.newInputObjectField -import static graphql.schema.GraphQLInputObjectType.newInputObject -import static graphql.schema.GraphQLObjectType.newObject -import static graphql.schema.GraphQLSchema.newSchema - -class Issue296 extends Specification { - - def "test introspection for #296 with map"() { - - def graphql = GraphQL.newGraphQL(newSchema() - .query(newObject() - .name("Query") - .field(newFieldDefinition() - .name("field") - .type(GraphQLString) - .argument(newArgument() - .name("argument") - .type(newInputObject() - .name("InputObjectType") - .field(newInputObjectField() - .name("inputField") - .type(GraphQLString)) - .build()) - .defaultValue([inputField: 'value1'])))) - .build()) - .build() - - def query = '{ __type(name: "Query") { fields { args { defaultValue } } } }' - - expect: - // converts the default object value to AST, then graphql pretty prints that as the value - graphql.execute(query).data == - [__type: [fields: [[args: [[defaultValue: '{inputField : "value1"}']]]]]] - } - - class FooBar { - final String inputField = "foo" - final String bar = "bar" - - String getInputField() { - return inputField - } - - String getBar() { - return bar - } - } - - def "test introspection for #296 with some object"() { - - def graphql = GraphQL.newGraphQL(newSchema() - .query(newObject() - .name("Query") - .field(newFieldDefinition() - .name("field") - .type(GraphQLString) - .argument(newArgument() - .name("argument") - .type(newInputObject() - .name("InputObjectType") - .field(newInputObjectField() - .name("inputField") - .type(GraphQLString)) - .build()) - .defaultValue(new FooBar())))) - .build()) - .build() - - def query = '{ __type(name: "Query") { fields { args { defaultValue } } } }' - - expect: - // converts the default object value to AST, then graphql pretty prints that as the value - graphql.execute(query).data == - [__type: [fields: [[args: [[defaultValue: '{inputField : "foo"}']]]]]] - } -} - diff --git a/src/test/groovy/graphql/Issue3434.groovy b/src/test/groovy/graphql/Issue3434.groovy new file mode 100644 index 0000000000..4671c57ff8 --- /dev/null +++ b/src/test/groovy/graphql/Issue3434.groovy @@ -0,0 +1,26 @@ +package graphql + +import static graphql.schema.GraphQLUnionType.newUnionType +import static graphql.schema.GraphQLTypeReference.typeRef +import graphql.schema.idl.SchemaPrinter + +import spock.lang.Specification + +class Issue3434 extends Specification { + + def "allow printing of union types"() { + given: + def schema = newUnionType().name("Shape") + .possibleType(typeRef("Circle")) + .possibleType(typeRef("Square")) + .build() + + when: + def printer = new SchemaPrinter() + def result = printer.print(schema) + + then: + result.trim() == "union Shape = Circle | Square" + } +} + diff --git a/src/test/groovy/graphql/Issue739.groovy b/src/test/groovy/graphql/Issue739.groovy index 613bbf2504..e3e579ab6b 100644 --- a/src/test/groovy/graphql/Issue739.groovy +++ b/src/test/groovy/graphql/Issue739.groovy @@ -9,17 +9,17 @@ import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class Issue739 extends Specification { - def "#739 test"() { + def "Arguments passed via variables are not validated"() { when: RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() .type(newTypeWiring("Query") - .dataFetcher("foo", - { env -> - Map map = new HashMap<>() - map.put("id", "abc") - return map + .dataFetcher("foo", + { env -> + Map map = new HashMap<>() + map.put("id", "abc") + return map }) .dataFetcher("bar", @@ -77,17 +77,17 @@ class Issue739 extends Specification { ExecutionInput varInput = ExecutionInput.newExecutionInput() .query('query Bar($input: BarInput!) {bar(input: $input) {id}}') .variables(variables) - .build() + .build() ExecutionResult varResult = graphQL - .executeAsync(varInput) - .join() + .executeAsync(varInput) + .join() then: varResult.data == null varResult.errors.size() == 1 varResult.errors[0].errorType == ErrorType.ValidationError - varResult.errors[0].message == "Variable 'input' has an invalid value : Expected type 'Map' but was 'Integer'. Variables for input objects must be an instance of type 'Map'."; + varResult.errors[0].message == "Variable 'input' has an invalid value: Expected type 'Map' but was 'Integer'. Variables for input objects must be an instance of type 'Map'." varResult.errors[0].locations == [new SourceLocation(1, 11)] when: @@ -106,7 +106,7 @@ class Issue739 extends Specification { varResult.data == null varResult.errors.size() == 1 varResult.errors[0].errorType == ErrorType.ValidationError - varResult.errors[0].message == "Variable 'boom' has an invalid value : Expected type 'Int' but was 'String'." + varResult.errors[0].message == "Variable 'input' has an invalid value: Expected a value that can be converted to type 'Int' but it was a 'String'" varResult.errors[0].locations == [new SourceLocation(1, 11)] } } diff --git a/src/test/groovy/graphql/Issue743.groovy b/src/test/groovy/graphql/Issue743.groovy index 183d63c800..b6466c65d3 100644 --- a/src/test/groovy/graphql/Issue743.groovy +++ b/src/test/groovy/graphql/Issue743.groovy @@ -28,6 +28,6 @@ class Issue743 extends Specification { executionResult.data == null executionResult.errors.size() == 1 executionResult.errors[0].errorType == ErrorType.ValidationError - executionResult.errors[0].message == "Variable 'isTrue' has coerced Null value for NonNull type 'Boolean!'" + executionResult.errors[0].message == "Variable 'isTrue' has an invalid value: Variable 'isTrue' has coerced Null value for NonNull type 'Boolean!'" } } diff --git a/src/test/groovy/graphql/Issue938.groovy b/src/test/groovy/graphql/Issue938.groovy index 5c4f611d34..1b2befcae8 100644 --- a/src/test/groovy/graphql/Issue938.groovy +++ b/src/test/groovy/graphql/Issue938.groovy @@ -13,7 +13,7 @@ import spock.lang.Specification class Issue938 extends Specification { - public static GraphQLScalarType GraphQLTimestamp = new GraphQLScalarType("Timestamp", "Timestamp", new Coercing() { + public static GraphQLScalarType GraphQLTimestamp = GraphQLScalarType.newScalar().name("Timestamp").description("Timestamp").coercing(new Coercing() { @Override Object serialize(Object input) { return input @@ -38,6 +38,7 @@ class Issue938 extends Specification { return calendar } }) + .build() class UserImpl { int id diff --git a/src/test/groovy/graphql/IssueNonNullDefaultAttribute.groovy b/src/test/groovy/graphql/IssueNonNullDefaultAttribute.groovy index a26efcde6b..b92435efe8 100644 --- a/src/test/groovy/graphql/IssueNonNullDefaultAttribute.groovy +++ b/src/test/groovy/graphql/IssueNonNullDefaultAttribute.groovy @@ -65,7 +65,7 @@ class IssueNonNullDefaultAttribute extends Specification { then: result.errors.size() == 1 result.errors[0].errorType == ErrorType.ValidationError - result.errors[0].message == "Validation error of type WrongType: argument 'characterNumber' with value 'NullValue{}' must not be null @ 'name'" + result.errors[0].message == "Validation error (WrongType@[name]) : argument 'characterNumber' with value 'NullValue{}' must not be null" result.errors[0].locations == [new SourceLocation(3, 26)] result.data == null diff --git a/src/test/groovy/graphql/JvmSpecificTest.groovy b/src/test/groovy/graphql/JvmSpecificTest.groovy new file mode 100644 index 0000000000..d7e4e248cb --- /dev/null +++ b/src/test/groovy/graphql/JvmSpecificTest.groovy @@ -0,0 +1,17 @@ +package graphql + +import spock.lang.Specification + +import java.lang.reflect.Method + +class JvmSpecificTest extends Specification { + + def "javac -parameters is in place"() { + when: + Method method = ExecutionInput.class.getDeclaredMethods().toList().find {it.name == "transform"} + def parameters = method.getParameters() + then: + parameters.length == 1 + parameters[0].name == "builderConsumer" // without -parameters this would be "arg0" + } +} diff --git a/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy new file mode 100644 index 0000000000..1aa971c6e7 --- /dev/null +++ b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy @@ -0,0 +1,43 @@ +package graphql + + +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher +import spock.lang.Specification + +class LargeSchemaDataFetcherTest extends Specification { + + def howManyFields = 100_000 + + def "large schema with lots of fields has the same property data fetcher by default"() { + def sdl = """ + type Query { + ${mkFields()} + } + """ + + when: + def schema = TestUtil.schema(sdl) + def codeRegistry = schema.getCodeRegistry() + def singletonDF = SingletonPropertyDataFetcher.singleton() + + then: + + for (int i = 0; i < howManyFields; i++) { + def fieldName = "f$i" + def fieldDef = GraphQLFieldDefinition.newFieldDefinition().name(fieldName).type(Scalars.GraphQLString).build() + def df = codeRegistry.getDataFetcher(FieldCoordinates.coordinates("Query", fieldName), fieldDef) + assert df == singletonDF + } + } + + def mkFields() { + StringBuilder sb = new StringBuilder() + for (int i = 0; i < howManyFields; i++) { + sb.append("f$i : String\n") + } + return sb.toString() + } +} diff --git a/src/test/groovy/graphql/LocalContextAwareCascadingTest.groovy b/src/test/groovy/graphql/LocalContextTest.groovy similarity index 53% rename from src/test/groovy/graphql/LocalContextAwareCascadingTest.groovy rename to src/test/groovy/graphql/LocalContextTest.groovy index 719eb34130..41a8593faf 100644 --- a/src/test/groovy/graphql/LocalContextAwareCascadingTest.groovy +++ b/src/test/groovy/graphql/LocalContextTest.groovy @@ -5,22 +5,18 @@ import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.TypeRuntimeWiring import spock.lang.Specification -/** - * Tests to make sure that the local context from a root node can be propagated to the children and grandchildren. - * - * See #1635 for the original bug report. - */ -class LocalContextAwareCascadingTest extends Specification { +class LocalContextTest extends Specification { // Configuration for the datafetchers for this schema, this will build a local context which will be consumed all the way down to the user // of the comments def graphql = TestUtil.graphQL(""" type Query { - blog: Blog! + blog(arg: String): Blog! } type Blog { name: String! + echoLocalContext: String comments: [Comment!]! } @@ -40,13 +36,23 @@ class LocalContextAwareCascadingTest extends Specification { .dataFetcher("blog", { def blog = new Blog() blog.name = "some name" - DataFetcherResult.newResult() - .data(blog) - .localContext("BLOG CONTEXT") // here is where we build the initial context - .build() + if (it.getArgument("arg") != null) { + DataFetcherResult.newResult() + .data("foo") + .localContext(it.getArgument("arg")) // here is where we build the initial context + .build() + } else { + DataFetcherResult.newResult() + .data(blog) + .localContext("BLOG CONTEXT") // here is where we build the initial context + .build() + } }) ) .type(TypeRuntimeWiring.newTypeWiring("Blog") + .dataFetcher("echoLocalContext", { + return it.getLocalContext() + }) .dataFetcher("comments", { def comment = new Comment() comment.title = it.getLocalContext() + " (comments data fetcher)" @@ -67,8 +73,8 @@ class LocalContextAwareCascadingTest extends Specification { def "when a local context is provided, it can be consumed by the grandchildren node data fetchers"() { given: - def input = ExecutionInput.newExecutionInput() - .query(''' + def input = ExecutionInput.newExecutionInput() + .query(''' query { blog { name @@ -82,26 +88,55 @@ class LocalContextAwareCascadingTest extends Specification { } } ''') - .build() + .build() + when: + def executionResult = graphql.execute(input) + + then: + executionResult.errors.isEmpty() + executionResult.data == [ + blog: [ + name : "some name", + comments: [ + [ + title : "BLOG CONTEXT (comments data fetcher)", + body : "BLOG CONTEXT (comment data fetcher)", + author: [ + username: "BLOG CONTEXT (user data fetcher)" + ] + ] + ] + ] + ] + } + + def "different alias produce different local contexts"() { + given: + def input = ExecutionInput.newExecutionInput() + .query(''' + query { + blog1: blog(arg: "blog1") { + echoLocalContext + } + blog2: blog(arg: "blog2") { + echoLocalContext + } + } + ''') + .build() when: - def executionResult = graphql.execute(input) + def executionResult = graphql.execute(input) then: - executionResult.errors.isEmpty() - executionResult.data == [ - blog: [ - name : "some name", - comments: [ - [ - title: "BLOG CONTEXT (comments data fetcher)", - body : "BLOG CONTEXT (comment data fetcher)", - author: [ - username: "BLOG CONTEXT (user data fetcher)" - ] - ] - ] - ] - ] + executionResult.errors.isEmpty() + executionResult.data == [ + blog1: [ + echoLocalContext: "blog1" + ], + blog2: [ + echoLocalContext: "blog2" + ] + ] } // Really simply beans, without getters and setters for simplicity diff --git a/src/test/groovy/graphql/MutationSchema.java b/src/test/groovy/graphql/MutationSchema.java index 2683652331..5956d7c56d 100644 --- a/src/test/groovy/graphql/MutationSchema.java +++ b/src/test/groovy/graphql/MutationSchema.java @@ -1,6 +1,9 @@ package graphql; +import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; @@ -31,8 +34,8 @@ public void setTheNumber(int theNumber) { } public static class SubscriptionRoot { - List result = new ArrayList(); - List subscribers = new ArrayList(); + List result = new ArrayList<>(); + List subscribers = new ArrayList<>(); NumberHolder numberHolder; public SubscriptionRoot(int initalNumber) { @@ -89,23 +92,13 @@ public List getResult() { .type(numberHolderType) .argument(newArgument() .name("newNumber") - .type(GraphQLInt)) - .dataFetcher(environment -> { - Integer newNumber = environment.getArgument("newNumber"); - SubscriptionRoot root = environment.getSource(); - return root.changeNumber(newNumber); - })) + .type(GraphQLInt))) .field(newFieldDefinition() .name("failToChangeTheNumber") .type(numberHolderType) .argument(newArgument() .name("newNumber") - .type(GraphQLInt)) - .dataFetcher(environment -> { - Integer newNumber = environment.getArgument("newNumber"); - SubscriptionRoot root = environment.getSource(); - return root.failToChangeTheNumber(newNumber); - })) + .type(GraphQLInt))) .build(); public static GraphQLObjectType subscriptionType = GraphQLObjectType.newObject() @@ -115,16 +108,37 @@ public List getResult() { .type(numberHolderType) .argument(newArgument() .name("clientId") - .type(GraphQLInt)) - .dataFetcher(environment -> { - Integer clientId = environment.getArgument("clientId"); - SubscriptionRoot subscriptionRoot = environment.getSource(); - subscriptionRoot.subscribeToNumberChanges(clientId); - return subscriptionRoot.getNumberHolder(); - })) + .type(GraphQLInt))) + .build(); + + static FieldCoordinates changeMutationCoordinates = FieldCoordinates.coordinates("mutationType", "changeTheNumber"); + static DataFetcher changeMutationDataFetcher = environment -> { + Integer newNumber = environment.getArgument("newNumber"); + SubscriptionRoot root = environment.getSource(); + return root.changeNumber(newNumber); + }; + static FieldCoordinates failToChangeMutationCoordinates = FieldCoordinates.coordinates("mutationType", "failToChangeTheNumber"); + static DataFetcher failToChangeMutationDataFetcher = environment -> { + Integer newNumber = environment.getArgument("newNumber"); + SubscriptionRoot root = environment.getSource(); + return root.failToChangeTheNumber(newNumber); + }; + static FieldCoordinates changeNumberSubscribeCoordinates = FieldCoordinates.coordinates("subscriptionType", "changeNumberSubscribe"); + static DataFetcher changeNumberSubscribeDataFetcher = environment -> { + Integer clientId = environment.getArgument("clientId"); + SubscriptionRoot subscriptionRoot = environment.getSource(); + subscriptionRoot.subscribeToNumberChanges(clientId); + return subscriptionRoot.getNumberHolder(); + }; + + static GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(changeMutationCoordinates, changeMutationDataFetcher) + .dataFetcher(failToChangeMutationCoordinates, failToChangeMutationDataFetcher) + .dataFetcher(changeNumberSubscribeCoordinates, changeNumberSubscribeDataFetcher) .build(); public static GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) .query(queryType) .mutation(mutationType) .subscription(subscriptionType) diff --git a/src/test/groovy/graphql/MutationTest.groovy b/src/test/groovy/graphql/MutationTest.groovy index 68da613740..aa5813fe5f 100644 --- a/src/test/groovy/graphql/MutationTest.groovy +++ b/src/test/groovy/graphql/MutationTest.groovy @@ -1,7 +1,19 @@ package graphql + +import graphql.schema.DataFetcher +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.BatchLoaderWithContext +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry import spock.lang.Specification +import spock.lang.Unroll + +import java.util.concurrent.CompletableFuture +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING class MutationTest extends Specification { @@ -47,8 +59,8 @@ class MutationTest extends Specification { ] when: - def executionResult = GraphQL.newGraphQL(MutationSchema.schema).build().execute(query, new MutationSchema.SubscriptionRoot(6)) - + def ei = ExecutionInput.newExecutionInput(query).root(new MutationSchema.SubscriptionRoot(6)).build() + def executionResult = GraphQL.newGraphQL(MutationSchema.schema).build().execute(ei) then: executionResult.data == expectedResult @@ -93,8 +105,8 @@ class MutationTest extends Specification { ] when: - def executionResult = GraphQL.newGraphQL(MutationSchema.schema).build().execute(query, new MutationSchema.SubscriptionRoot(6)) - + def ei = ExecutionInput.newExecutionInput(query).root(new MutationSchema.SubscriptionRoot(6)).build() + def executionResult = GraphQL.newGraphQL(MutationSchema.schema).build().execute(ei) then: executionResult.data == expectedResult @@ -102,4 +114,610 @@ class MutationTest extends Specification { executionResult.errors.every({ it instanceof ExceptionWhileDataFetching }) } + + def "simple async mutation"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + plus1(arg: Int) : Int + plus2(arg: Int) : Int + plus3(arg: Int) : Int + } + """ + + def mutationDF = { env -> + CompletableFuture.supplyAsync { + + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + return value + factor + } + } as DataFetcher + + def schema = TestUtil.schema(sdl, [Mutation: [ + plus1: mutationDF, + plus2: mutationDF, + plus3: mutationDF, + ]]) + + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(""" + mutation m { + plus1(arg:10) + plus2(arg:10) + plus3(arg:10) + } + """) + + then: + er.errors.isEmpty() + er.data == [ + plus1: 11, + plus2: 12, + plus3: 13, + ] + } + + @Unroll + def "simple async mutation with DataLoader"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + plus1(arg: Int) : Int + plus2(arg: Int) : Int + plus3(arg: Int) : Int + } + + """ + + BatchLoader batchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("dl", DataLoaderFactory.newDataLoader(batchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("dl").load(key) + } as DataFetcher + + def schema = TestUtil.schema(sdl, [Mutation: [ + plus1: mutationDF, + plus2: mutationDF, + plus3: mutationDF, + ]]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + plus1(arg:10) + plus2(arg:10) + plus3(arg:10) + } + """).graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .dataLoaderRegistry(dlReg).build() + when: + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [ + plus1: 11, + plus2: 12, + plus3: 13, + ] + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + + /* + This test shows a dataloader being called at the mutation field level, in serial via AsyncSerialExecutionStrategy, and then + again at the sub field level, in parallel, via AsyncExecutionStrategy. + */ + + @Unroll + def "more complex async mutation with DataLoader"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + topLevelF1(arg: Int) : ComplexType + topLevelF2(arg: Int) : ComplexType + topLevelF3(arg: Int) : ComplexType + topLevelF4(arg: Int) : ComplexType + } + + type ComplexType { + f1 : ComplexType + f2 : ComplexType + f3 : ComplexType + f4 : ComplexType + end : String + } + """ + + def emptyComplexMap = [ + f1: null, + f2: null, + f3: null, + f4: null, + ] + + BatchLoaderWithContext fieldBatchLoader = { keys, context -> + assert keys.size() == 2, "since only f1 and f2 are DL based, we will only get 2 key values" + + def batchValue = [ + emptyComplexMap, + emptyComplexMap, + ] + CompletableFuture.supplyAsync { + return batchValue + } + + } as BatchLoaderWithContext + + BatchLoader mutationBatchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("topLevelDL", DataLoaderFactory.newDataLoader(mutationBatchLoader)) + .register("fieldDL", DataLoaderFactory.newDataLoader(fieldBatchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("topLevelDL").load(key) + } as DataFetcher + + def fieldDataLoaderDF = { env -> + def fieldName = env.getField().name + def level = env.getExecutionStepInfo().getPath().getLevel() + return env.getDataLoader("fieldDL").load(fieldName, level) + } as DataFetcher + + def fieldDataLoaderNonDF = { env -> + return emptyComplexMap + } as DataFetcher + + def schema = TestUtil.schema(sdl, + [Mutation : [ + topLevelF1: mutationDF, + topLevelF2: mutationDF, + topLevelF3: mutationDF, + topLevelF4: mutationDF, + ], + // only f1 and f3 are using data loaders - f2 and f4 are plain old property based + // so some fields with batch loader and some without + ComplexType: [ + f1: fieldDataLoaderDF, + f2: fieldDataLoaderNonDF, + f3: fieldDataLoaderDF, + f4: fieldDataLoaderNonDF, + ] + ]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + topLevelF1(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF2(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF3(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF4(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + } + """).dataLoaderRegistry(dlReg).graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]).build() + when: + def cf = graphQL.executeAsync(ei) + + Awaitility.await().until { cf.isDone() } + def er = cf.join() + + then: + + er.errors.isEmpty() + + def expectedMap = [ + f1: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f2: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f3: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f4: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + ] + + er.data == [ + topLevelF1: expectedMap, + topLevelF2: expectedMap, + topLevelF3: expectedMap, + topLevelF4: expectedMap, + ] + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + + + @Unroll + def "stress test mutation with dataloader"() { + when: + // concurrency bugs are hard to find, so run this test a lot of times + for (int i = 0; i < 150; i++) { + println "iteration $i" + runTest(contextKey) + } + then: + noExceptionThrown() + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + + def runTest(String contextKey) { + def sdl = """ + type Query { + q : String + } + + type Mutation { + topLevelF1(arg: Int) : ComplexType + topLevelF2(arg: Int) : ComplexType + topLevelF3(arg: Int) : ComplexType + topLevelF4(arg: Int) : ComplexType + } + + type ComplexType { + f1 : ComplexType + f2 : ComplexType + f3 : ComplexType + f4 : ComplexType + end : String + } + """ + + def emptyComplexMap = [ + f1: null, + f2: null, + f3: null, + f4: null, + ] + + BatchLoaderWithContext fieldBatchLoader = { keys, context -> + assert keys.size() == 2, "since only f1 and f2 are DL based, we will only get 2 key values" + + def batchValue = [ + emptyComplexMap, + emptyComplexMap, + ] + CompletableFuture.supplyAsync { + return batchValue + } + + } as BatchLoaderWithContext + + BatchLoader mutationBatchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("topLevelDL", DataLoaderFactory.newDataLoader(mutationBatchLoader)) + .register("fieldDL", DataLoaderFactory.newDataLoader(fieldBatchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("topLevelDL").load(key) + } as DataFetcher + + def fieldDataLoaderDF = { env -> + def fieldName = env.getField().name + def level = env.getExecutionStepInfo().getPath().getLevel() + return env.getDataLoader("fieldDL").load(fieldName, level) + } as DataFetcher + + def fieldDataLoaderNonDF = { env -> + return emptyComplexMap + } as DataFetcher + + def schema = TestUtil.schema(sdl, + [Mutation : [ + topLevelF1: mutationDF, + topLevelF2: mutationDF, + topLevelF3: mutationDF, + topLevelF4: mutationDF, + ], + // only f1 and f3 are using data loaders - f2 and f4 are plain old property based + // so some fields with batch loader and some without + ComplexType: [ + f1: fieldDataLoaderDF, + f2: fieldDataLoaderNonDF, + f3: fieldDataLoaderDF, + f4: fieldDataLoaderNonDF, + ] + ]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + topLevelF1(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF2(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF3(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF4(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + } + """).dataLoaderRegistry(dlReg).graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]).build() + def cf = graphQL.executeAsync(ei) + + Awaitility.await().until { cf.isDone() } + def er = cf.join() + + assert er.errors.isEmpty() + + def expectedMap = [ + f1: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f2: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f3: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f4: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + ] + + assert er.data == [ + topLevelF1: expectedMap, + topLevelF2: expectedMap, + topLevelF3: expectedMap, + topLevelF4: expectedMap, + ] + } + } diff --git a/src/test/groovy/graphql/NestedInputSchema.java b/src/test/groovy/graphql/NestedInputSchema.java index add9b44c4d..6e19825914 100644 --- a/src/test/groovy/graphql/NestedInputSchema.java +++ b/src/test/groovy/graphql/NestedInputSchema.java @@ -1,6 +1,9 @@ package graphql; +import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLInputObjectField; import graphql.schema.GraphQLInputObjectType; @@ -14,51 +17,53 @@ public class NestedInputSchema { - public static GraphQLSchema createSchema() { + GraphQLObjectType root = rootType(); + FieldCoordinates valueCoordinates = FieldCoordinates.coordinates("Root", "value"); + DataFetcher valueDataFetcher = environment -> { + Integer initialValue = environment.getArgument("initialValue"); + Map filter = environment.getArgument("filter"); + if (filter != null) { + if (filter.containsKey("even")) { + Boolean even = (Boolean) filter.get("even"); + if (even && (initialValue % 2 != 0)) { + return 0; + } else if (!even && (initialValue % 2 == 0)) { + return 0; + } + } + if (filter.containsKey("range")) { + Map range = (Map) filter.get("range"); + if (initialValue < range.get("lowerBound") || + initialValue > range.get("upperBound")) { + return 0; + } + } + } + return initialValue; + }; - GraphQLObjectType root = rootType(); + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(valueCoordinates, valueDataFetcher) + .build(); return GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(root) .build(); } - @SuppressWarnings("unchecked") public static GraphQLObjectType rootType() { return GraphQLObjectType.newObject() - .name("Root") .field(GraphQLFieldDefinition.newFieldDefinition() .name("value") .type(GraphQLInt) - .dataFetcher(environment -> { - Integer initialValue = environment.getArgument("initialValue"); - Map filter = environment.getArgument("filter"); - if (filter != null) { - if (filter.containsKey("even")) { - Boolean even = (Boolean) filter.get("even"); - if (even && (initialValue % 2 != 0)) { - return 0; - } else if (!even && (initialValue % 2 == 0)) { - return 0; - } - } - if (filter.containsKey("range")) { - Map range = (Map) filter.get("range"); - if (initialValue < range.get("lowerBound") || - initialValue > range.get("upperBound")) { - return 0; - } - } - } - return initialValue; - }) .argument(GraphQLArgument.newArgument() .name("intialValue") .type(GraphQLInt) - .defaultValue(5)) + .defaultValueProgrammatic(5)) .argument(GraphQLArgument.newArgument() .name("filter") .type(filterType()))) diff --git a/src/test/groovy/graphql/NonNullHandlingTest.groovy b/src/test/groovy/graphql/NonNullHandlingTest.groovy index 2eb0387552..a6a352ef93 100644 --- a/src/test/groovy/graphql/NonNullHandlingTest.groovy +++ b/src/test/groovy/graphql/NonNullHandlingTest.groovy @@ -2,7 +2,10 @@ package graphql import graphql.execution.AsyncExecutionStrategy import graphql.execution.AsyncSerialExecutionStrategy -import graphql.execution.ExecutorServiceExecutionStrategy +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLOutputType import graphql.schema.GraphQLSchema import spock.lang.Specification @@ -14,7 +17,6 @@ import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull import static graphql.schema.GraphQLObjectType.newObject import static graphql.schema.GraphQLSchema.newSchema -import static java.util.concurrent.ForkJoinPool.commonPool /** * A set of tests to show how non null field handling correctly bubble up or not @@ -34,37 +36,48 @@ class NonNullHandlingTest extends Specification { SimpleObject nonNullParent = new SimpleObject() } - def executionInput(String query) { + static def executionInput(String query) { ExecutionInput.newExecutionInput().query(query).build() } @Unroll def "#268 - null child field values are allowed in nullable parent type (strategy: #strategyName)"() { - // see https://github.com/graphql-java/graphql-java/issues/268 given: - - + def rootTypeName = "RootQueryType" + def parentFieldName = "parent" GraphQLOutputType parentType = newObject() .name("currentType") - .field(newFieldDefinition().name("nullChild") - .type(nonNull(GraphQLString))) - .field(newFieldDefinition().name("nonNullChild") - .type(nonNull(GraphQLString))) + .field(newFieldDefinition() + .name("nullChild") + .type(nonNull(GraphQLString))) + .field(newFieldDefinition() + .name("nonNullChild") + .type(nonNull(GraphQLString))) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field(newFieldDefinition() - .name("parent") - .type(parentType) // nullable parent - .dataFetcher({ env -> new SimpleObject() }) - - )) + def parentCoordinates = FieldCoordinates.coordinates(rootTypeName, parentFieldName) + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return new SimpleObject() + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(parentCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(rootTypeName) + .field(newFieldDefinition() + .name(parentFieldName) + .type(parentType) // nullable parent + ) + ).build() + def query = """ query { parent { @@ -88,39 +101,48 @@ class NonNullHandlingTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() } @Unroll def "#268 - null child field values are NOT allowed in non nullable parent types (strategy: #strategyName)"() { - // see https://github.com/graphql-java/graphql-java/issues/268 given: - + def rootTypeName = "RootQueryType" + def parentFieldName = "parent" GraphQLOutputType parentType = newObject() .name("currentType") .field(newFieldDefinition().name("nullChild") - .type(nonNull(GraphQLString))) + .type(nonNull(GraphQLString))) .field(newFieldDefinition().name("nonNullChild") - .type(nonNull(GraphQLString))) + .type(nonNull(GraphQLString))) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field( - newFieldDefinition() - .name("parent") - .type(nonNull(parentType)) // non nullable parent - .dataFetcher({ env -> new SimpleObject() }) - - )) + def parentCoordinates = FieldCoordinates.coordinates(rootTypeName, parentFieldName) + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return new SimpleObject() + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(parentCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(rootTypeName) + .field( + newFieldDefinition() + .name(parentFieldName) + .type(nonNull(parentType)) // non nullable parent + ) + ).build() + def query = """ query { parent { @@ -151,37 +173,52 @@ class NonNullHandlingTest extends Specification { @Unroll def "#581 - null child field values are allowed in nullable grand parent type (strategy: #strategyName)"() { - given: + def rootTypeName = "RootQueryType" + def topFieldName = "top" GraphQLOutputType parentType = newObject() .name("parentType") - .field(newFieldDefinition().name("nullChild") - .type(nonNull(GraphQLString))) - .field(newFieldDefinition().name("nonNullChild") - .type(nonNull(GraphQLString))) + .field(newFieldDefinition() + .name("nullChild") + .type(nonNull(GraphQLString))) + .field(newFieldDefinition() + .name("nonNullChild") + .type(nonNull(GraphQLString))) .build() GraphQLOutputType topType = newObject() .name("topType") - .field(newFieldDefinition().name("nullParent") - .type(nonNull(parentType))) - .field(newFieldDefinition().name("nonNullParent") - .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nullParent") + .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nonNullParent") + .type(nonNull(parentType))) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field( - newFieldDefinition() - .name("top") + def topCoordinates = FieldCoordinates.coordinates(rootTypeName, topFieldName) + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return new ContainingObject() + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(topCoordinates, dataFetcher) + .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(rootTypeName) + .field(newFieldDefinition() + .name(topFieldName) .type(topType) // nullable grand parent - .dataFetcher({ env -> new ContainingObject() }) - )) - .build() + ) + ).build() def query = """ query { @@ -209,7 +246,6 @@ class NonNullHandlingTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() @@ -219,36 +255,50 @@ class NonNullHandlingTest extends Specification { def "#581 - null child field values are NOT allowed in non nullable grand parent types (strategy: #strategyName)"() { given: - + def rootTypeName = "RootQueryType" + def topFieldName = "top" GraphQLOutputType parentType = newObject() .name("parentType") - .field(newFieldDefinition().name("nullChild") - .type(nonNull(GraphQLString))) - .field(newFieldDefinition().name("nonNullChild") - .type(nonNull(GraphQLString))) + .field(newFieldDefinition() + .name("nullChild") + .type(nonNull(GraphQLString))) + .field(newFieldDefinition() + .name("nonNullChild") + .type(nonNull(GraphQLString))) .build() GraphQLOutputType topType = newObject() .name("topType") - .field(newFieldDefinition().name("nullParent") - .type(nonNull(parentType))) - .field(newFieldDefinition().name("nonNullParent") - .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nullParent") + .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nonNullParent") + .type(nonNull(parentType))) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field( - newFieldDefinition() - .name("top") - .type(nonNull(topType)) // non nullable grand parent - .dataFetcher({ env -> new ContainingObject() }) - - )) + def topCoordinates = FieldCoordinates.coordinates(rootTypeName, topFieldName) + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return new ContainingObject() + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(topCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(rootTypeName) + .field(newFieldDefinition() + .name(topFieldName) + .type(nonNull(topType)) // non nullable grand parent + ) + ).build() + def query = """ query { top { @@ -275,7 +325,6 @@ class NonNullHandlingTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() @@ -285,34 +334,47 @@ class NonNullHandlingTest extends Specification { def "#561 - null entry in non null list type with non null wrapper list (strategy: #strategyName)"() { given: - + def rootTypeName = "RootQueryType" + def topFieldName = "top" GraphQLOutputType parentType = newObject() .name("parentType") - .field(newFieldDefinition().name("nonNullListWithNull") - .type(nonNull(list(nonNull(GraphQLString))))) + .field(newFieldDefinition() + .name("nonNullListWithNull") + .type(nonNull(list(nonNull(GraphQLString))))) .build() GraphQLOutputType topType = newObject() .name("topType") - .field(newFieldDefinition().name("nullParent") - .type(nonNull(parentType))) - .field(newFieldDefinition().name("nonNullParent") - .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nullParent") + .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nonNullParent") + .type(nonNull(parentType))) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field( - newFieldDefinition() - .name("top") - .type(nonNull(topType)) // non nullable grand parent - .dataFetcher({ env -> new ContainingObject() }) - - )) + def topCoordinates = FieldCoordinates.coordinates(rootTypeName, topFieldName) + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return new ContainingObject() + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(topCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(rootTypeName) + .field(newFieldDefinition() + .name(topFieldName) + .type(nonNull(topType)) // non nullable grand parent + ) + ).build() + def query = """ query { top { @@ -349,33 +411,47 @@ class NonNullHandlingTest extends Specification { given: + def rootTypeName = "RootQueryType" + def topFieldName = "top" GraphQLOutputType parentType = newObject() .name("parentType") - .field(newFieldDefinition().name("nullableListWithNull") - .type(list(nonNull(GraphQLString)))) + .field(newFieldDefinition() + .name("nullableListWithNull") + .type(list(nonNull(GraphQLString)))) .build() GraphQLOutputType topType = newObject() .name("topType") - .field(newFieldDefinition().name("nullParent") - .type(nonNull(parentType))) - .field(newFieldDefinition().name("nonNullParent") - .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nullParent") + .type(nonNull(parentType))) + .field(newFieldDefinition() + .name("nonNullParent") + .type(nonNull(parentType))) .build() - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field( - newFieldDefinition() - .name("top") - .type(nonNull(topType)) // non nullable grand parent - .dataFetcher({ env -> new ContainingObject() }) - - )) + def topCoordinates = FieldCoordinates.coordinates(rootTypeName, topFieldName) + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return new ContainingObject() + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(topCoordinates, dataFetcher) .build() + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(rootTypeName) + .field(newFieldDefinition() + .name(topFieldName) + .type(nonNull(topType)) // non nullable grand parent + ) + ).build() + def query = """ query { top { @@ -401,7 +477,6 @@ class NonNullHandlingTest extends Specification { where: strategyName | executionStrategy - 'executor' | new ExecutorServiceExecutionStrategy(commonPool()) 'async' | new AsyncExecutionStrategy() 'asyncSerial' | new AsyncSerialExecutionStrategy() } diff --git a/src/test/groovy/graphql/NullValueSupportTest.groovy b/src/test/groovy/graphql/NullValueSupportTest.groovy index 2a0623d999..0a854cb6c3 100644 --- a/src/test/groovy/graphql/NullValueSupportTest.groovy +++ b/src/test/groovy/graphql/NullValueSupportTest.groovy @@ -10,7 +10,7 @@ import spock.lang.Unroll import static graphql.ExecutionInput.newExecutionInput /* - * Taken from http://facebook.github.io/graphql/#sec-Input-Objects + * Taken from https://spec.graphql.org/October2021/#sec-Input-Objects * * @@ -70,7 +70,7 @@ class NullValueSupportTest extends Specification { when: def executionInput = newExecutionInput().query(queryStr) - .operationName("mutate").context("ctx").variables(variables) + .operationName("mutate").variables(variables) .build() def result = graphQL.execute(executionInput) @@ -174,7 +174,7 @@ class NullValueSupportTest extends Specification { ExecutionResult result = null try { def executionInput = newExecutionInput().query(queryStr) - .operationName("mutate").context("ctx").variables(variables) + .operationName("mutate").variables(variables) .build() result = graphQL.execute(executionInput) } catch (GraphQLException e) { @@ -218,7 +218,7 @@ class NullValueSupportTest extends Specification { when: def executionInput = newExecutionInput().query(queryStr) - .operationName("mutate").context("ctx").variables(variables) + .operationName("mutate").variables(variables) .build() def executionResult = graphQL.execute(executionInput) @@ -308,7 +308,7 @@ class NullValueSupportTest extends Specification { when: def executionInput = newExecutionInput().query(queryStr) - .operationName(null).context("ctx").variables([:]) + .operationName(null).variables([:]) .build() def result = graphQL.execute(executionInput) assert result.errors.isEmpty(): "Unexpected query errors : ${result.errors}" diff --git a/src/test/groovy/graphql/NullVariableCoercionTest.groovy b/src/test/groovy/graphql/NullVariableCoercionTest.groovy index eae58db5b8..ffd42ac362 100644 --- a/src/test/groovy/graphql/NullVariableCoercionTest.groovy +++ b/src/test/groovy/graphql/NullVariableCoercionTest.groovy @@ -1,10 +1,12 @@ package graphql import graphql.language.SourceLocation +import graphql.schema.DataFetcher import graphql.schema.GraphQLObjectType import graphql.schema.idl.RuntimeWiring import spock.lang.Specification +import static graphql.ExecutionInput.newExecutionInput import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class NullVariableCoercionTest extends Specification { @@ -14,17 +16,17 @@ class NullVariableCoercionTest extends Specification { when: RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() - .type(newTypeWiring("Query") - .dataFetcher("bar", - { env -> - Map map = new HashMap<>() - map.put("id", "def") - return map - }) - ) - .type(newTypeWiring("Node") - .typeResolver({ env -> (GraphQLObjectType) env.getSchema().getType("Foo") })) - .build() + .type(newTypeWiring("Query") + .dataFetcher("bar", + { env -> + Map map = new HashMap<>() + map.put("id", "def") + return map + }) + ) + .type(newTypeWiring("Node") + .typeResolver({ env -> (GraphQLObjectType) env.getSchema().getType("Foo") })) + .build() def graphQL = TestUtil.graphQL(""" @@ -52,22 +54,71 @@ class NullVariableCoercionTest extends Specification { def variables = ["input": ["baz": null]] - ExecutionInput varInput = ExecutionInput.newExecutionInput() - .query('query Bar($input: BarInput!) {bar(input: $input) {id}}') - .variables(variables) - .build() + ExecutionInput varInput = newExecutionInput() + .query('query Bar($input: BarInput!) {bar(input: $input) {id}}') + .variables(variables) + .build() ExecutionResult varResult = graphQL - .executeAsync(varInput) - .join() + .executeAsync(varInput) + .join() then: varResult.data == null varResult.errors.size() == 1 varResult.errors[0].errorType == ErrorType.ValidationError - varResult.errors[0].message == "Field 'baz' of variable 'input' has coerced Null value for NonNull type 'String!'" + varResult.errors[0].message == "Variable 'input' has an invalid value: Field 'baz' has coerced Null value for NonNull type 'String!'" varResult.errors[0].locations == [new SourceLocation(1, 11)] } + + def "can handle defaulting on complex input objects"() { + def sdl = ''' + input Kitchen { + pantry : String + } + + input ListSnacksInput { + kitchen: [Kitchen!]! = [{pantry : "Cheezels"}] + snackType : String = "healthy" + startPageToken: String + } + + type Snacks { + name : String + } + + type Query { + listSnacks(input: ListSnacksInput!) : [Snacks!]! + } + ''' + + + DataFetcher df = { env -> + def val = env.getArgument("input") + assert val instanceof Map + def defaultedKitchenList = val["kitchen"] + assert defaultedKitchenList instanceof List + def snackVal = defaultedKitchenList[0]["pantry"] + def snack = [name: snackVal] + return [snack] + } + + def graphQL = TestUtil.graphQL(sdl, [Query: [listSnacks: df]]).build() + + def query = ''' + query ($input: ListSnacksInput!){ + listSnacks(input: $input) { + name + } + } + ''' + + when: + def er = graphQL.execute(newExecutionInput(query).variables([input: [startPageToken: "dummyToken"]])) + then: + er.errors.isEmpty() + er.data == [listSnacks: [[name: "Cheezels"]]] + } } diff --git a/src/test/groovy/graphql/ParseAndValidateTest.groovy b/src/test/groovy/graphql/ParseAndValidateTest.groovy new file mode 100644 index 0000000000..fa66c3cbed --- /dev/null +++ b/src/test/groovy/graphql/ParseAndValidateTest.groovy @@ -0,0 +1,238 @@ +package graphql + +import graphql.language.Document +import graphql.language.SourceLocation +import graphql.parser.InvalidSyntaxException +import graphql.parser.Parser +import graphql.schema.idl.SchemaParser +import graphql.schema.idl.UnExecutableSchemaGenerator +import graphql.validation.ValidationError +import graphql.validation.ValidationErrorType +import graphql.validation.rules.NoUnusedFragments +import spock.lang.Specification + +import java.util.function.Predicate + +/** + * We trust that other unit tests of the parser and validation catch ALL of the combinations. These tests + * just show the combination of parsing and validation. + */ +class ParseAndValidateTest extends Specification { + + def "can parse a basic document"() { + + def input = ExecutionInput.newExecutionInput("query { hi }").variables([var1: 1]).build() + + when: + def result = ParseAndValidate.parse(input) + then: + !result.isFailure() + result.errors.isEmpty() + result.document != null + result.variables == [var1: 1] + result.syntaxException == null + } + + def "will pick up invalid documents"() { + + def input = ExecutionInput.newExecutionInput("query { hi( ").variables([var1: 1]).build() + + when: + def result = ParseAndValidate.parse(input) + then: + result.isFailure() + !result.errors.isEmpty() + result.document == null + result.variables == [var1: 1] + result.syntaxException instanceof InvalidSyntaxException + } + + def "will validate documents with no problems"() { + + def input = ExecutionInput.newExecutionInput("query { hero { name }}").variables([var1: 1]).build() + def result = ParseAndValidate.parse(input) + + when: + def errors = ParseAndValidate.validate(StarWarsSchema.starWarsSchema, result.getDocument(), input.getLocale()) + + then: + errors.isEmpty() + } + + def "will validate documents with actual problems"() { + + def input = ExecutionInput.newExecutionInput("query { hero }").variables([var1: 1]).build() + def result = ParseAndValidate.parse(input) + + when: + def errors = ParseAndValidate.validate(StarWarsSchema.starWarsSchema, result.getDocument(), input.getLocale()) + + then: + !errors.isEmpty() + errors[0].validationErrorType == ValidationErrorType.SubselectionRequired + } + + def "can combine parse and validation on valid input"() { + def input = ExecutionInput.newExecutionInput("query { hero { name }}").variables([var1: 1]).build() + + when: + def result = ParseAndValidate.parseAndValidate(StarWarsSchema.starWarsSchema, input) + then: + !result.isFailure() + result.errors.isEmpty() + result.validationErrors.isEmpty() + result.document != null + result.variables == [var1: 1] + result.syntaxException == null + } + + def "can combine parse and validation on VALID syntax but INVALID semantics"() { + def input = ExecutionInput.newExecutionInput("query { hero }").variables([var1: 1]).build() + + when: + def result = ParseAndValidate.parseAndValidate(StarWarsSchema.starWarsSchema, input) + then: + result.isFailure() + !result.errors.isEmpty() + !result.validationErrors.isEmpty() + result.document != null + result.variables == [var1: 1] + result.syntaxException == null + + (result.errors[0] as ValidationError).validationErrorType == ValidationErrorType.SubselectionRequired + } + + def "can shortcut on parse and validation on INVALID syntax"() { + def input = ExecutionInput.newExecutionInput("query { hero(").variables([var1: 1]).build() + + when: + def result = ParseAndValidate.parseAndValidate(StarWarsSchema.starWarsSchema, input) + then: + result.isFailure() + !result.errors.isEmpty() + result.validationErrors.isEmpty() + result.document == null + result.variables == [var1: 1] + result.syntaxException != null + + (result.errors[0] as InvalidSyntaxError).message.contains("Invalid syntax") + } + + def "can use the graphql context to stop certain validation rules"() { + + def sdl = '''type Query { foo : ID } ''' + def graphQL = TestUtil.graphQL(sdl).build() + + Predicate> predicate = new Predicate>() { + @Override + boolean test(Class aClass) { + if (aClass == NoUnusedFragments.class) { + return false + } + return true + } + } + + def query = ''' + query { foo } + + fragment UnusedFrag on Query { + foo + } + ''' + + when: + def ei = ExecutionInput.newExecutionInput(query) + .graphQLContext(["graphql.ParseAndValidate.Predicate": predicate]) + .build() + def rs = graphQL.execute(ei) + + then: + rs.errors.isEmpty() // we skipped a rule + + when: + predicate = { it -> true } + ei = ExecutionInput.newExecutionInput(query) + .graphQLContext(["graphql.ParseAndValidate.Predicate": predicate]) + .build() + rs = graphQL.execute(ei) + + then: + !rs.errors.isEmpty() // all rules apply - we have errors + } + + def "validation error raised if mutation operation does not exist in schema"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + String request = "mutation MyMutation { myMutation }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 1 + def error = errors.first() + error.validationErrorType == ValidationErrorType.UnknownOperation + error.message == "Validation error (UnknownOperation): The 'Mutation' operation is not supported by the schema" + error.locations == [new SourceLocation(1, 1)] + } + + def "validation error raised if subscription operation does not exist in schema"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + + String request = "subscription MySubscription { mySubscription }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 1 + def error = errors.first() + error.validationErrorType == ValidationErrorType.UnknownOperation + error.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" + error.locations == [new SourceLocation(1, 1)] + } + + def "known operation validation rule checks all operations in document"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + String request = "mutation MyMutation { myMutation } subscription MySubscription { mySubscription }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 2 + def error1 = errors.get(0) + error1.validationErrorType == ValidationErrorType.UnknownOperation + error1.message == "Validation error (UnknownOperation): The 'Mutation' operation is not supported by the schema" + error1.locations == [new SourceLocation(1, 1)] + + def error2 = errors.get(1) + error2.validationErrorType == ValidationErrorType.UnknownOperation + error2.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" + error2.locations == [new SourceLocation(1, 36)] + } +} diff --git a/src/test/groovy/graphql/ProfilerTest.groovy b/src/test/groovy/graphql/ProfilerTest.groovy new file mode 100644 index 0000000000..d047edcc7d --- /dev/null +++ b/src/test/groovy/graphql/ProfilerTest.groovy @@ -0,0 +1,618 @@ +package graphql + +import graphql.execution.ExecutionId +import graphql.execution.instrumentation.ChainedInstrumentation +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters +import graphql.language.OperationDefinition +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry +import spock.lang.Ignore +import spock.lang.Specification + +import java.time.Duration +import java.util.concurrent.CompletableFuture +import java.util.concurrent.atomic.AtomicInteger + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.ProfilerResult.DataFetcherResultType.COMPLETABLE_FUTURE_COMPLETED +import static graphql.ProfilerResult.DataFetcherResultType.COMPLETABLE_FUTURE_NOT_COMPLETED +import static graphql.ProfilerResult.DataFetcherResultType.MATERIALIZED +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.setEnableDataLoaderChaining +import static java.util.concurrent.CompletableFuture.supplyAsync + +class ProfilerTest extends Specification { + + + def "one field"() { + given: + def sdl = ''' + type Query { + hello: String + } + ''' + def schema = TestUtil.schema(sdl, [Query: [ + hello: { DataFetchingEnvironment dfe -> return "world" } as DataFetcher + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionInput ei = newExecutionInput() + .query("{ hello }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [hello: "world"] + + then: + profilerResult.getFieldsFetched() == ["/hello"] as Set + + } + + def "introspection fields are ignored"() { + given: + def sdl = ''' + type Query { + hello: String + } + ''' + def schema = TestUtil.schema(sdl, [Query: [ + hello: { DataFetchingEnvironment dfe -> return "world" } as DataFetcher + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionInput ei = newExecutionInput() + .query("{ hello __typename alias:__typename __schema {types{name}} __type(name: \"Query\") {name} }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData()["hello"] == "world" + + then: + profilerResult.getFieldsFetched() == ["/hello",] as Set + profilerResult.getTotalDataFetcherInvocations() == 1 + + } + + def "pure introspection "() { + given: + def sdl = ''' + type Query { + hello: String + } + ''' + def schema = TestUtil.schema(sdl, [Query: [ + hello: { DataFetchingEnvironment dfe -> return "world" } as DataFetcher + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionInput ei = newExecutionInput() + .query("{ __schema {types{name}} __type(name: \"Query\") {name} }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData()["__schema"] != null + + then: + profilerResult.getFieldsFetched() == [] as Set + profilerResult.getTotalDataFetcherInvocations() == 0 + + } + + + def "instrumented data fetcher"() { + given: + def sdl = ''' + type Query { + dog: Dog + } + type Dog { + name: String + age: Int + } + ''' + + + def dogDf = { DataFetchingEnvironment dfe -> return [name: "Luna", age: 5] } as DataFetcher + + Instrumentation instrumentation = new Instrumentation() { + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + if (parameters.getField().getName() == "name") { + // wrapping a PropertyDataFetcher + return { DataFetchingEnvironment dfe -> + def result = dataFetcher.get(dfe) + return result + } as DataFetcher + } + return dataFetcher + } + + } + def dfs = [Query: [ + dog: dogDf + ]] + def schema = TestUtil.schema(sdl, dfs) + def graphql = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + ExecutionInput ei = newExecutionInput() + .query("{ dog {name age} }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [dog: [name: "Luna", age: 5]] + + then: + profilerResult.getTotalDataFetcherInvocations() == 3 + profilerResult.getTotalTrivialDataFetcherInvocations() == 1 + profilerResult.getTotalTrivialDataFetcherInvocations() == 1 + profilerResult.getTotalCustomDataFetcherInvocations() == 1 + profilerResult.getDataFetcherResultType() == ["/dog": MATERIALIZED] + } + + + @Ignore("not available for performance reasons at the moment") + def "manual dataloader dispatch"() { + given: + def sdl = ''' + + type Query { + dog: String + } + ''' + AtomicInteger batchLoadCalls = new AtomicInteger() + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls.incrementAndGet() + Thread.sleep(250) + println "BatchLoader called with keys: $keys" + return ["Luna"] + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader) + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("name", nameDataLoader) + + def df1 = { env -> + def loader = env.getDataLoader("name") + def result = loader.load("Key1") + loader.dispatch() + return result + } as DataFetcher + + def fetchers = ["Query": ["dog": df1]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ dog } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).profileExecution(true).build() + setEnableDataLoaderChaining(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + then: + er.data == [dog: "Luna"] + batchLoadCalls.get() == 1 + then: + profilerResult.getDispatchEvents()[0].type == ProfilerResult.DispatchEventType.MANUAL_DISPATCH + profilerResult.getDispatchEvents()[0].dataLoaderName == "name" + profilerResult.getDispatchEvents()[0].keyCount == 1 + profilerResult.getDispatchEvents()[0].level == 1 + + } + + @Ignore("not available for performance reasons at the moment") + def "cached dataloader values"() { + given: + def sdl = ''' + + type Query { + dog: Dog + } + type Dog { + name: String + } + ''' + AtomicInteger batchLoadCalls = new AtomicInteger() + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls.incrementAndGet() + Thread.sleep(250) + println "BatchLoader called with keys: $keys" + return ["Luna"] + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader) + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("name", nameDataLoader) + + def dogDF = { env -> + def loader = env.getDataLoader("name") + def result = loader.load("Key1").thenCompose { + return loader.load("Key1") // This should hit the cache + } + } as DataFetcher + + def nameDF = { env -> + def loader = env.getDataLoader("name") + def result = loader.load("Key1").thenCompose { + return loader.load("Key1") // This should hit the cache + } + } as DataFetcher + + + def fetchers = [Query: [dog: dogDF], Dog: [name: nameDF]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ dog {name } } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).profileExecution(true).build() + setEnableDataLoaderChaining(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + then: + er.data == [dog: [name: "Luna"]] + batchLoadCalls.get() == 1 + then: + profilerResult.getDataLoaderLoadInvocations().get("name") == 4 + profilerResult.getDispatchEvents()[0].type == ProfilerResult.DispatchEventType.LEVEL_STRATEGY_DISPATCH + profilerResult.getDispatchEvents()[0].dataLoaderName == "name" + profilerResult.getDispatchEvents()[0].keyCount == 1 + profilerResult.getDispatchEvents()[0].level == 1 + + } + + + def "collects instrumentation list"() { + given: + def sdl = ''' + type Query { + hello: String + } + ''' + def schema = TestUtil.schema(sdl, [Query: [ + hello: { DataFetchingEnvironment dfe -> return "world" } as DataFetcher + ]]) + Instrumentation fooInstrumentation = new Instrumentation() {} + Instrumentation barInstrumentation = new Instrumentation() {} + ChainedInstrumentation chainedInstrumentation = new ChainedInstrumentation( + new ChainedInstrumentation(new SimplePerformantInstrumentation()), + new ChainedInstrumentation(fooInstrumentation, barInstrumentation), + new SimplePerformantInstrumentation()) + + + def graphql = GraphQL.newGraphQL(schema).instrumentation(chainedInstrumentation).build() + + ExecutionInput ei = newExecutionInput() + .query("{ hello }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [hello: "world"] + + then: + profilerResult.getInstrumentationClasses() == ["graphql.execution.instrumentation.SimplePerformantInstrumentation", + "graphql.ProfilerTest\$2", + "graphql.ProfilerTest\$3", + "graphql.execution.instrumentation.SimplePerformantInstrumentation"] + + } + + + def "two DF with list"() { + given: + def sdl = ''' + type Query { + foo: [Foo] + } + type Foo { + id: String + bar: String + } + ''' + def schema = TestUtil.schema(sdl, [ + Query: [ + foo: { DataFetchingEnvironment dfe -> return [[id: "1"], [id: "2"], [id: "3"]] } as DataFetcher], + Foo : [ + bar: { DataFetchingEnvironment dfe -> dfe.source.id } as DataFetcher + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionInput ei = newExecutionInput() + .query("{ foo { id bar } }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [foo: [[id: "1", bar: "1"], [id: "2", bar: "2"], [id: "3", bar: "3"]]] + + then: + profilerResult.getFieldsFetched() == ["/foo", "/foo/bar", "/foo/id"] as Set + profilerResult.getTotalDataFetcherInvocations() == 7 + profilerResult.getTotalCustomDataFetcherInvocations() == 4 + profilerResult.getTotalTrivialDataFetcherInvocations() == 3 + } + + def "records timing"() { + given: + def sdl = ''' + type Query { + foo: Foo + } + type Foo { + id: String + } + ''' + def schema = TestUtil.schema(sdl, [ + Query: [ + foo: { DataFetchingEnvironment dfe -> + // blocking the engine for 1ms + // so that engineTotalRunningTime time is more than 1ms + Thread.sleep(1) + return supplyAsync { + Thread.sleep(500) + "1" + } + } as DataFetcher], + Foo : [ + id: { DataFetchingEnvironment dfe -> + return supplyAsync { + Thread.sleep(500) + dfe.source + } + } as DataFetcher + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionInput ei = newExecutionInput() + .query("{ foo { id } }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [foo: [id: "1"]] + // the total execution time must be more than 1 second, + // the engine should take less than 500ms + profilerResult.getTotalExecutionTime() > Duration.ofSeconds(1).toNanos() + profilerResult.getEngineTotalRunningTime() > Duration.ofMillis(1).toNanos() + profilerResult.getEngineTotalRunningTime() < Duration.ofMillis(500).toNanos() + + + } + + def "data fetcher result types"() { + given: + def sdl = ''' + type Query { + foo: [Foo] + } + type Foo { + id: String + name: String + text: String + } + ''' + def schema = TestUtil.schema(sdl, [ + Query: [ + foo: { DataFetchingEnvironment dfe -> + return CompletableFuture.supplyAsync { + Thread.sleep(100) + return [[id: "1", name: "foo1"], [id: "2", name: "foo2"]] + } + } as DataFetcher], + Foo : [ + name: { DataFetchingEnvironment dfe -> + return CompletableFuture.completedFuture(dfe.source.name) + } as DataFetcher, + text: { DataFetchingEnvironment dfe -> + return "text" + } as DataFetcher + + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionId id = ExecutionId.from("myExecutionId") + ExecutionInput ei = newExecutionInput() + .query("{ foo { id name text } foo2: foo { id name text} }") + .profileExecution(true) + .executionId(id) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [foo: [[id: "1", name: "foo1", text: "text"], [id: "2", name: "foo2", text: "text"]], foo2: [[id: "1", name: "foo1", text: "text"], [id: "2", name: "foo2", text: "text"]]] + then: + profilerResult.getTotalDataFetcherInvocations() == 14 + profilerResult.getTotalCustomDataFetcherInvocations() == 10 + profilerResult.getDataFetcherResultType() == ["/foo/name" : COMPLETABLE_FUTURE_COMPLETED, + "/foo/text" : MATERIALIZED, + "/foo2/name": COMPLETABLE_FUTURE_COMPLETED, + "/foo2/text": MATERIALIZED, + "/foo2" : COMPLETABLE_FUTURE_NOT_COMPLETED, + "/foo" : COMPLETABLE_FUTURE_NOT_COMPLETED] + profilerResult.shortSummaryMap().get("dataFetcherResultTypes") == ["COMPLETABLE_FUTURE_COMPLETED" : ["count":2, "invocations":4], + "COMPLETABLE_FUTURE_NOT_COMPLETED": ["count":2, "invocations":2], + "MATERIALIZED" : ["count":2, "invocations":4]] + profilerResult.shortSummaryMap().get("executionId") == "myExecutionId" + } + + def "operation details"() { + given: + def sdl = ''' + type Query { + hello: String + } + ''' + def schema = TestUtil.schema(sdl, [Query: [ + hello: { DataFetchingEnvironment dfe -> return "world" } as DataFetcher + ]]) + def graphql = GraphQL.newGraphQL(schema).build() + + ExecutionInput ei = newExecutionInput() + .query("query MyQuery { hello }") + .profileExecution(true) + .build() + + when: + def result = graphql.execute(ei) + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + + then: + result.getData() == [hello: "world"] + + then: + profilerResult.getOperationName() == "MyQuery" + profilerResult.getOperationType() == OperationDefinition.Operation.QUERY + + + } + + @Ignore("not available for performance reasons at the moment") + def "dataloader usage"() { + given: + def sdl = ''' + + type Query { + dogName: String + catName: String + } + ''' + int batchLoadCalls = 0 + BatchLoader batchLoader = { keys -> + return supplyAsync { + batchLoadCalls++ + Thread.sleep(250) + println "BatchLoader called with keys: $keys thread: ${Thread.currentThread().name}" + return keys.collect { key -> + if (key == "Key1") { + return "Luna" + } else if (key == "Key2") { + return "Tiger" + } else { + return key + } + } + } + } + + DataLoader nameDataLoader = DataLoaderFactory.newDataLoader(batchLoader) + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("name", nameDataLoader) + + def dogDF = { env -> + return env.getDataLoader("name").load("Key1").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } as DataFetcher + + def catDF = { env -> + return supplyAsync { + Thread.sleep(1500) + return "foo" + }.thenCompose { + return env.getDataLoader("name").load("Key2").thenCompose { + result -> + { + return env.getDataLoader("name").load(result) + } + } + } + } as DataFetcher + + def fetchers = ["Query": ["dogName": dogDF, "catName": catDF]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ dogName catName } " + def ei = newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).profileExecution(true).build() + setEnableDataLoaderChaining(ei.graphQLContext, true) + + when: + def efCF = graphQL.executeAsync(ei) + Awaitility.await().until { efCF.isDone() } + def er = efCF.get() + def profilerResult = ei.getGraphQLContext().get(ProfilerResult.PROFILER_CONTEXT_KEY) as ProfilerResult + then: + er.data == [dogName: "Luna", catName: "Tiger"] + batchLoadCalls == 4 + profilerResult.isDataLoaderChainingEnabled() + profilerResult.getDataLoaderLoadInvocations() == [name: 4] + profilerResult.getDispatchEvents().size() == 4 + + profilerResult.getDispatchEvents()[0].type == ProfilerResult.DispatchEventType.LEVEL_STRATEGY_DISPATCH + profilerResult.getDispatchEvents()[0].dataLoaderName == "name" + profilerResult.getDispatchEvents()[0].level == 1 + profilerResult.getDispatchEvents()[0].keyCount == 1 + + profilerResult.getDispatchEvents()[2].type == ProfilerResult.DispatchEventType.DELAYED_DISPATCH + profilerResult.getDispatchEvents()[2].dataLoaderName == "name" + profilerResult.getDispatchEvents()[2].level == 1 + profilerResult.getDispatchEvents()[2].keyCount == 1 + + profilerResult.getDispatchEvents()[3].type == ProfilerResult.DispatchEventType.CHAINED_DELAYED_DISPATCH + profilerResult.getDispatchEvents()[3].dataLoaderName == "name" + profilerResult.getDispatchEvents()[3].level == 1 + profilerResult.getDispatchEvents()[3].keyCount == 1 + + + } + + +} diff --git a/src/test/groovy/graphql/RelaySchema.java b/src/test/groovy/graphql/RelaySchema.java index 751afa8ebe..52b5526277 100644 --- a/src/test/groovy/graphql/RelaySchema.java +++ b/src/test/groovy/graphql/RelaySchema.java @@ -1,6 +1,9 @@ package graphql; import graphql.relay.Relay; +import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLNonNull; import graphql.schema.GraphQLObjectType; @@ -57,15 +60,18 @@ public class RelaySchema { .argument(newArgument() .name("id") .description("id of the thing") - .type(GraphQLNonNull.nonNull(GraphQLString))) - .dataFetcher(environment -> { - //TODO: implement - return null; - })) + .type(GraphQLNonNull.nonNull(GraphQLString)))) .build(); + public static FieldCoordinates thingCoordinates = FieldCoordinates.coordinates("RelayQuery", "thing"); + public static DataFetcher thingDataFetcher = environment -> null; + + public static GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(thingCoordinates, thingDataFetcher) + .build(); public static GraphQLSchema Schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(RelayQueryType) .additionalType(Relay.pageInfoType) .build(); diff --git a/src/test/groovy/graphql/ScalarsBigDecimalTest.groovy b/src/test/groovy/graphql/ScalarsBigDecimalTest.groovy deleted file mode 100644 index e7b86d2804..0000000000 --- a/src/test/groovy/graphql/ScalarsBigDecimalTest.groovy +++ /dev/null @@ -1,94 +0,0 @@ -package graphql - -import graphql.language.BooleanValue -import graphql.language.FloatValue -import graphql.language.IntValue -import graphql.language.StringValue -import graphql.schema.CoercingParseLiteralException -import graphql.schema.CoercingParseValueException -import graphql.schema.CoercingSerializeException -import spock.lang.Specification -import spock.lang.Unroll - -import java.util.concurrent.atomic.AtomicInteger - -class ScalarsBigDecimalTest extends Specification { - - @Unroll - def "BigDecimal parse literal #literal.value as #result"() { - expect: - Scalars.GraphQLBigDecimal.getCoercing().parseLiteral(literal) == result - - where: - literal | result - new IntValue(12345678910 as BigInteger) | new BigDecimal("12345678910") - new StringValue("12345678911.12") | new BigDecimal("12345678911.12") - new FloatValue(new BigDecimal("42.42")) | new BigDecimal("42.42") - - } - - @Unroll - def "BigDecimal returns null for invalid #literal"() { - when: - Scalars.GraphQLBigDecimal.getCoercing().parseLiteral(literal) - then: - thrown(CoercingParseLiteralException) - - where: - literal | _ - new BooleanValue(true) | _ - new StringValue("not a number") | _ - } - - @Unroll - def "BigDecimal serialize #value into #result (#result.class)"() { - expect: - Scalars.GraphQLBigDecimal.getCoercing().serialize(value) == result - Scalars.GraphQLBigDecimal.getCoercing().parseValue(value) == result - - where: - value | result - "42" | new BigDecimal("42") - "42.123" | new BigDecimal("42.123") - 42.0000d | new BigDecimal("42.000") - new Integer(42) | new BigDecimal("42") - "-1" | new BigDecimal("-1") - new BigInteger(42) | new BigDecimal("42") - new BigDecimal("42") | new BigDecimal("42") - 42.3f | new BigDecimal("42.3") - 42.0d | new BigDecimal("42") - new Byte("42") | new BigDecimal("42") - new Short("42") | new BigDecimal("42") - 1234567l | new BigDecimal("1234567") - new AtomicInteger(42) | new BigDecimal("42") - } - - @Unroll - def "serialize throws exception for invalid input #value"() { - when: - Scalars.GraphQLBigDecimal.getCoercing().serialize(value) - then: - thrown(CoercingSerializeException) - - where: - value | _ - "" | _ - "not a number " | _ - new Object() | _ - } - - @Unroll - def "parseValue throws exception for invalid input #value"() { - when: - Scalars.GraphQLBigDecimal.getCoercing().parseValue(value) - then: - thrown(CoercingParseValueException) - - where: - value | _ - "" | _ - "not a number " | _ - new Object() | _ - } - -} diff --git a/src/test/groovy/graphql/ScalarsBigIntegerTest.groovy b/src/test/groovy/graphql/ScalarsBigIntegerTest.groovy deleted file mode 100644 index f3a39f697e..0000000000 --- a/src/test/groovy/graphql/ScalarsBigIntegerTest.groovy +++ /dev/null @@ -1,95 +0,0 @@ -package graphql - -import graphql.language.BooleanValue -import graphql.language.FloatValue -import graphql.language.IntValue -import graphql.language.StringValue -import graphql.schema.CoercingParseLiteralException -import graphql.schema.CoercingParseValueException -import graphql.schema.CoercingSerializeException -import spock.lang.Specification -import spock.lang.Unroll - -import java.util.concurrent.atomic.AtomicInteger - -class ScalarsBigIntegerTest extends Specification { - - @Unroll - def "BigInteger parse literal #literal.value as #result"() { - expect: - Scalars.GraphQLBigInteger.getCoercing().parseLiteral(literal) == result - - where: - literal | result - new IntValue(12345678910 as BigInteger) | new BigInteger("12345678910") - new StringValue("12345678911") | new BigInteger("12345678911") - new FloatValue(new BigDecimal("42")) | new BigInteger("42") - } - - @Unroll - def "BigInteger returns null for invalid #literal"() { - when: - Scalars.GraphQLBigInteger.getCoercing().parseLiteral(literal) - then: - thrown(CoercingParseLiteralException) - - where: - literal | _ - new BooleanValue(true) | _ - new StringValue("42.3") | _ - new FloatValue(new BigDecimal("12.12")) | _ - new StringValue("not a number") | _ - } - - @Unroll - def "BigInteger serialize #value into #result (#result.class)"() { - expect: - Scalars.GraphQLBigInteger.getCoercing().serialize(value) == result - Scalars.GraphQLBigInteger.getCoercing().parseValue(value) == result - - where: - value | result - "42" | new BigInteger("42") - new Integer(42) | new BigInteger("42") - "-1" | new BigInteger("-1") - new BigInteger("42") | new BigInteger("42") - 42.0d | new BigInteger("42") - new Byte("42") | new BigInteger("42") - new Short("42") | new BigInteger("42") - 1234567l | new BigInteger("1234567") - new AtomicInteger(42) | new BigInteger("42") - } - - @Unroll - def "serialize throws exception for invalid input #value"() { - when: - Scalars.GraphQLBigInteger.getCoercing().serialize(value) - then: - thrown(CoercingSerializeException) - - where: - value | _ - "" | _ - "not a number " | _ - new BigDecimal("12.12") | _ - "12.12" | _ - new Object() | _ - } - - @Unroll - def "parseValue throws exception for invalid input #value"() { - when: - Scalars.GraphQLBigInteger.getCoercing().parseValue(value) - then: - thrown(CoercingParseValueException) - - where: - value | _ - "" | _ - "not a number " | _ - new BigDecimal("12.12") | _ - "12.12" | _ - new Object() | _ - } - -} diff --git a/src/test/groovy/graphql/ScalarsBooleanTest.groovy b/src/test/groovy/graphql/ScalarsBooleanTest.groovy index df0f4ddd4c..55351f7f2b 100644 --- a/src/test/groovy/graphql/ScalarsBooleanTest.groovy +++ b/src/test/groovy/graphql/ScalarsBooleanTest.groovy @@ -1,5 +1,6 @@ package graphql +import graphql.execution.CoercedVariables import graphql.language.BooleanValue import graphql.language.FloatValue import graphql.language.IntValue @@ -15,19 +16,29 @@ class ScalarsBooleanTest extends Specification { @Unroll def "Boolean parse literal #literal.value as #result"() { expect: - Scalars.GraphQLBoolean.getCoercing().parseLiteral(literal) == result + Scalars.GraphQLBoolean.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) == result where: literal | result new BooleanValue(true) | true new BooleanValue(false) | false + } + + @Unroll + def "Boolean parse literal #literal.value as #result with deprecated method"() { + expect: + Scalars.GraphQLBoolean.getCoercing().parseLiteral(literal) == result // Retain deprecated method for test coverage + where: + literal | result + new BooleanValue(true) | true + new BooleanValue(false) | false } @Unroll def "Boolean returns null for invalid #literal"() { when: - Scalars.GraphQLBoolean.getCoercing().parseLiteral(literal) + Scalars.GraphQLBoolean.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) then: thrown(CoercingParseLiteralException) @@ -41,49 +52,106 @@ class ScalarsBooleanTest extends Specification { @Unroll def "Boolean serialize #value into #result (#result.class)"() { expect: - Scalars.GraphQLBoolean.getCoercing().serialize(value) == result - Scalars.GraphQLBoolean.getCoercing().parseValue(value) == result + Scalars.GraphQLBoolean.getCoercing().serialize(value, GraphQLContext.default, Locale.default) == result + + where: + value | result + true | true + "false" | false + "true" | true + "True" | true + 0 | false + 1 | true + -1 | true + Long.valueOf(42345784398534785l) | true + Double.valueOf(42.3) | true + Float.valueOf(42.3) | true + Integer.MAX_VALUE + 1l | true + Integer.MIN_VALUE - 1l | true + } + + @Unroll + def "Boolean serialize #value into #result (#result.class) with deprecated methods"() { + expect: + Scalars.GraphQLBoolean.getCoercing().serialize(value) == result // Retain deprecated method for test coverage where: - value | result - true | true - "false" | false - "true" | true - "True" | true - "some value not true" | false - "" | false - 0 | false - 1 | true - -1 | true - new Long(42345784398534785l) | true - new Double(42.3) | true - new Float(42.3) | true - Integer.MAX_VALUE + 1l | true - Integer.MIN_VALUE - 1l | true + value | result + true | true + "false" | false + "true" | true + "True" | true + 0 | false + 1 | true + -1 | true + Long.valueOf(42345784398534785l) | true + Double.valueOf(42.3) | true + Float.valueOf(42.3) | true + Integer.MAX_VALUE + 1l | true + Integer.MIN_VALUE - 1l | true } @Unroll def "serialize throws exception for invalid input #value"() { when: - Scalars.GraphQLBoolean.getCoercing().serialize(value) + Scalars.GraphQLBoolean.getCoercing().serialize(value, GraphQLContext.default, Locale.default) then: thrown(CoercingSerializeException) where: - value | _ - new Object() | _ + value | _ + new Object() | _ + "some value not true" | _ + "" | _ + "T" | _ + "t" | _ + "F" | _ + "f" | _ + } + + @Unroll + def "Boolean parseValue #value into #result (#result.class)"() { + expect: + Scalars.GraphQLBoolean.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) == result + + where: + value | result + true | true + false | false + } + + @Unroll + def "Boolean parseValue #value into #result (#result.class) with deprecated methods"() { + expect: + Scalars.GraphQLBoolean.getCoercing().parseValue(value) == result // Retain deprecated method for test coverage + + where: + value | result + true | true + false | false } @Unroll def "parseValue throws exception for invalid input #value"() { when: - Scalars.GraphQLBoolean.getCoercing().parseValue(value) + Scalars.GraphQLBoolean.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) then: thrown(CoercingParseValueException) where: - value | _ - new Object() | _ + value | _ + new Object() | _ + "false" | _ + "true" | _ + "True" | _ + 0 | _ + 1 | _ + -1 | _ + Long.valueOf(42345784398534785l) | _ + Double.valueOf(42.3) | _ + Float.valueOf(42.3) | _ + Integer.MAX_VALUE + 1l | _ + Integer.MIN_VALUE - 1l | _ } } diff --git a/src/test/groovy/graphql/ScalarsByteTest.groovy b/src/test/groovy/graphql/ScalarsByteTest.groovy deleted file mode 100644 index 4e19f43fe3..0000000000 --- a/src/test/groovy/graphql/ScalarsByteTest.groovy +++ /dev/null @@ -1,115 +0,0 @@ -package graphql - -import graphql.language.FloatValue -import graphql.language.IntValue -import graphql.language.StringValue -import graphql.schema.CoercingParseLiteralException -import graphql.schema.CoercingParseValueException -import graphql.schema.CoercingSerializeException -import spock.lang.Specification -import spock.lang.Unroll - -import java.util.concurrent.atomic.AtomicInteger - -class ScalarsByteTest extends Specification { - - @Unroll - def "Byte parse literal #literal.value as #result"() { - expect: - Scalars.GraphQLByte.getCoercing().parseLiteral(literal) == result - - where: - literal | result - new IntValue(42 as BigInteger) | 42 - new IntValue(Byte.MAX_VALUE as BigInteger) | Byte.MAX_VALUE - new IntValue(Byte.MIN_VALUE as BigInteger) | Byte.MIN_VALUE - - } - - @Unroll - def "Byte returns null for invalid #literal"() { - when: - Scalars.GraphQLByte.getCoercing().parseLiteral(literal) - then: - thrown(CoercingParseLiteralException) - - where: - literal | _ - new IntValue(12345678910 as BigInteger) | _ - new StringValue("-1") | _ - new FloatValue(42.3) | _ - new IntValue(Byte.MAX_VALUE + 1l as BigInteger) | _ - new IntValue(Byte.MIN_VALUE - 1l as BigInteger) | _ - new StringValue("-1") | _ - new FloatValue(42.3) | _ - - } - - @Unroll - def "Byte serialize #value into #result (#result.class)"() { - expect: - Scalars.GraphQLByte.getCoercing().serialize(value) == result - Scalars.GraphQLByte.getCoercing().parseValue(value) == result - - where: - value | result - "42" | 42 - "42.0000" | 42 - 42.0000d | 42 - new Integer(42) | 42 - "-1" | -1 - new BigInteger(42) | 42 - new BigDecimal("42") | 42 - 42.0f | 42 - 42.0d | 42 - new Byte("42") | 42 - new Short("42") | 42 - 123l | 123 - new AtomicInteger(42) | 42 - Byte.MAX_VALUE | Byte.MAX_VALUE - Byte.MIN_VALUE | Byte.MIN_VALUE - } - - @Unroll - def "serialize throws exception for invalid input #value"() { - when: - Scalars.GraphQLByte.getCoercing().serialize(value) - then: - thrown(CoercingSerializeException) - - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Long(42345784398534785l) | _ - new Double(42.3) | _ - new Float(42.3) | _ - Byte.MAX_VALUE + 1l | _ - Byte.MIN_VALUE - 1l | _ - new Object() | _ - - } - - @Unroll - def "parseValue throws exception for invalid input #value"() { - when: - Scalars.GraphQLByte.getCoercing().parseValue(value) - then: - thrown(CoercingParseValueException) - - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Long(42345784398534785l) | _ - new Double(42.3) | _ - new Float(42.3) | _ - Byte.MAX_VALUE + 1l | _ - Byte.MIN_VALUE - 1l | _ - new Object() | _ - - } - -} diff --git a/src/test/groovy/graphql/ScalarsCharTest.groovy b/src/test/groovy/graphql/ScalarsCharTest.groovy deleted file mode 100644 index 91109bb9be..0000000000 --- a/src/test/groovy/graphql/ScalarsCharTest.groovy +++ /dev/null @@ -1,80 +0,0 @@ -package graphql - -import graphql.language.IntValue -import graphql.language.StringValue -import graphql.schema.CoercingParseLiteralException -import graphql.schema.CoercingParseValueException -import graphql.schema.CoercingSerializeException -import spock.lang.Specification -import spock.lang.Unroll - -class ScalarsCharTest extends Specification { - - @Unroll - def "Char parse literal #literal.value as #result"() { - expect: - Scalars.GraphQLChar.getCoercing().parseLiteral(literal) == result - - where: - literal | result - new StringValue("a") | 'a' - new StringValue("b") | 'b' - - } - - @Unroll - def "Short returns null for invalid #literal"() { - when: - Scalars.GraphQLChar.getCoercing().parseLiteral(literal) - then: - thrown(CoercingParseLiteralException) - - where: - literal | _ - new StringValue("aa") | _ - new IntValue(12 as BigInteger) | _ - } - - @Unroll - def "Short serialize #value into #result (#result.class)"() { - expect: - Scalars.GraphQLChar.getCoercing().serialize(value) == result - Scalars.GraphQLChar.getCoercing().parseValue(value) == result - - where: - value | result - "a" | 'a' - 'z' | 'z' - } - - @Unroll - def "serialize throws exception for invalid input #value"() { - when: - Scalars.GraphQLChar.getCoercing().serialize(value) - then: - thrown(CoercingSerializeException) - - where: - value | _ - "" | _ - "aa" | _ - new Object() | _ - - } - - @Unroll - def "parseValue throws exception for invalid input #value"() { - when: - Scalars.GraphQLChar.getCoercing().parseValue(value) - then: - thrown(CoercingParseValueException) - - where: - value | _ - "" | _ - "aa" | _ - new Object() | _ - - } - -} diff --git a/src/test/groovy/graphql/ScalarsFloatTest.groovy b/src/test/groovy/graphql/ScalarsFloatTest.groovy index f2a1ad664e..744fcbac03 100644 --- a/src/test/groovy/graphql/ScalarsFloatTest.groovy +++ b/src/test/groovy/graphql/ScalarsFloatTest.groovy @@ -1,5 +1,6 @@ package graphql +import graphql.execution.CoercedVariables import graphql.language.BooleanValue import graphql.language.FloatValue import graphql.language.IntValue @@ -17,7 +18,7 @@ class ScalarsFloatTest extends Specification { @Unroll def "Float parse literal #literal.value as #result"() { expect: - Scalars.GraphQLFloat.getCoercing().parseLiteral(literal) == result + Scalars.GraphQLFloat.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) == result where: literal | result @@ -25,13 +26,25 @@ class ScalarsFloatTest extends Specification { new FloatValue(Double.MAX_VALUE) | Double.MAX_VALUE new FloatValue(Double.MIN_VALUE) | Double.MIN_VALUE new IntValue(12345678910 as BigInteger) | 12345678910 + } + + @Unroll + def "Float parse literal #literal.value as #result with deprecated method"() { + expect: + Scalars.GraphQLFloat.getCoercing().parseLiteral(literal) == result // Retain deprecated for test coverage + where: + literal | result + new FloatValue(42.442 as BigDecimal) | 42.442 + new FloatValue(Double.MAX_VALUE) | Double.MAX_VALUE + new FloatValue(Double.MIN_VALUE) | Double.MIN_VALUE + new IntValue(12345678910 as BigInteger) | 12345678910 } @Unroll def "Float returns null for invalid #literal"() { when: - Scalars.GraphQLFloat.getCoercing().parseLiteral(literal) + Scalars.GraphQLFloat.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) then: thrown(CoercingParseLiteralException) @@ -44,22 +57,47 @@ class ScalarsFloatTest extends Specification { @Unroll def "Float serialize #value into #result (#result.class)"() { expect: - Scalars.GraphQLFloat.getCoercing().serialize(value) == result - Scalars.GraphQLFloat.getCoercing().parseValue(value) == result + Scalars.GraphQLFloat.getCoercing().serialize(value, GraphQLContext.default, Locale.default) == result + + where: + value | result + "42" | 42d + "42.123" | 42.123d + 42.0000d | 42 + Integer.valueOf(42) | 42 + "-1" | -1 + new BigInteger("42") | 42 + new BigDecimal("42") | 42 + new BigDecimal("4.2") | 4.2d + 42.3f | 42.3d + 42.0d | 42d + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 + 1234567l | 1234567d + new AtomicInteger(42) | 42 + Double.MAX_VALUE | Double.MAX_VALUE + Double.MIN_VALUE | Double.MIN_VALUE + } + + @Unroll + def "Float serialize #value into #result (#result.class) with deprecated methods"() { + expect: + Scalars.GraphQLFloat.getCoercing().serialize(value) == result // Retain deprecated method for coverage where: value | result "42" | 42d "42.123" | 42.123d 42.0000d | 42 - new Integer(42) | 42 + Integer.valueOf(42) | 42 "-1" | -1 - new BigInteger(42) | 42 + new BigInteger("42") | 42 new BigDecimal("42") | 42 + new BigDecimal("4.2") | 4.2d 42.3f | 42.3d 42.0d | 42d - new Byte("42") | 42 - new Short("42") | 42 + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 1234567l | 1234567d new AtomicInteger(42) | 42 Double.MAX_VALUE | Double.MAX_VALUE @@ -69,29 +107,99 @@ class ScalarsFloatTest extends Specification { @Unroll def "serialize throws exception for invalid input #value"() { when: - Scalars.GraphQLFloat.getCoercing().serialize(value) + Scalars.GraphQLFloat.getCoercing().serialize(value, GraphQLContext.default, Locale.default) then: thrown(CoercingSerializeException) where: - value | _ - "" | _ - "not a number " | _ - Double.NaN | _ + value | _ + "" | _ + "not a number " | _ + Double.NaN | _ + Double.NaN.toString() | _ + Double.POSITIVE_INFINITY | _ + Double.POSITIVE_INFINITY.toString() | _ + Double.NEGATIVE_INFINITY | _ + Double.NEGATIVE_INFINITY.toString() | _ + Float.NaN | _ + Float.NaN.toString() | _ + Float.POSITIVE_INFINITY | _ + Float.POSITIVE_INFINITY.toString() | _ + Float.NEGATIVE_INFINITY | _ + Float.NEGATIVE_INFINITY.toString() | _ } @Unroll - def "serialize/parseValue throws exception for invalid input #value"() { + def "Float parseValue #value into #result (#result.class)"() { + expect: + Scalars.GraphQLFloat.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) == result + + where: + value | result + 42.0000d | 42 + Integer.valueOf(42) | 42 + new BigInteger("42") | 42 + new BigDecimal("42") | 42 + new BigDecimal("4.2") | 4.2d + 42.3f | 42.3d + 42.0d | 42d + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 + 1234567l | 1234567d + new AtomicInteger(42) | 42 + Double.MAX_VALUE | Double.MAX_VALUE + Double.MIN_VALUE | Double.MIN_VALUE + } + + @Unroll + def "Float parseValue #value into #result (#result.class) with deprecated methods"() { + expect: + Scalars.GraphQLFloat.getCoercing().parseValue(value) == result // Retain deprecated method for coverage + + where: + value | result + 42.0000d | 42 + Integer.valueOf(42) | 42 + new BigInteger("42") | 42 + new BigDecimal("42") | 42 + new BigDecimal("4.2") | 4.2d + 42.3f | 42.3d + 42.0d | 42d + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 + 1234567l | 1234567d + new AtomicInteger(42) | 42 + Double.MAX_VALUE | Double.MAX_VALUE + Double.MIN_VALUE | Double.MIN_VALUE + } + + + @Unroll + def "parseValue throws exception for invalid input #value"() { when: - Scalars.GraphQLFloat.getCoercing().parseValue(value) + Scalars.GraphQLFloat.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) then: thrown(CoercingParseValueException) where: - value | _ - "" | _ - "not a number " | _ - Double.NaN | _ + value | _ + "" | _ + "not a number " | _ + Double.NaN | _ + Double.NaN.toString() | _ + Double.POSITIVE_INFINITY | _ + Double.POSITIVE_INFINITY.toString() | _ + Double.NEGATIVE_INFINITY | _ + Double.NEGATIVE_INFINITY.toString() | _ + Float.NaN | _ + Float.NaN.toString() | _ + Float.POSITIVE_INFINITY | _ + Float.POSITIVE_INFINITY.toString() | _ + Float.NEGATIVE_INFINITY | _ + Float.NEGATIVE_INFINITY.toString() | _ + "42" | _ + "42.123" | _ + "-1" | _ } } diff --git a/src/test/groovy/graphql/ScalarsIDTest.groovy b/src/test/groovy/graphql/ScalarsIDTest.groovy index 8a9e21362f..a304251796 100644 --- a/src/test/groovy/graphql/ScalarsIDTest.groovy +++ b/src/test/groovy/graphql/ScalarsIDTest.groovy @@ -1,5 +1,6 @@ package graphql +import graphql.execution.CoercedVariables import graphql.language.BooleanValue import graphql.language.IntValue import graphql.language.StringValue @@ -14,19 +15,29 @@ class ScalarsIDTest extends Specification { @Unroll def "ID parse literal #literal.value as #result"() { expect: - Scalars.GraphQLID.getCoercing().parseLiteral(literal) == result + Scalars.GraphQLID.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) == result where: literal | result new StringValue("1234ab") | "1234ab" new IntValue(123 as BigInteger) | "123" + } + + @Unroll + def "ID parse literal #literal.value as #result with deprecated method"() { + expect: + Scalars.GraphQLID.getCoercing().parseLiteral(literal) == result // Retain deprecated method for test coverage + where: + literal | result + new StringValue("1234ab") | "1234ab" + new IntValue(123 as BigInteger) | "123" } @Unroll def "ID returns null for invalid #literal"() { when: - Scalars.GraphQLID.getCoercing().parseLiteral(literal) + Scalars.GraphQLID.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) then: thrown(CoercingParseLiteralException) @@ -36,10 +47,10 @@ class ScalarsIDTest extends Specification { } @Unroll - def "ID serialize #value into #result (#result.class)"() { + def "ID serialize #value into #result (#result.class) with deprecated methods"() { expect: - Scalars.GraphQLID.getCoercing().serialize(value) == result - Scalars.GraphQLID.getCoercing().parseValue(value) == result + Scalars.GraphQLID.getCoercing().serialize(value) == result // Retain deprecated method for test coverage + Scalars.GraphQLID.getCoercing().parseValue(value) == result // Retain deprecated method for test coverage where: value | result diff --git a/src/test/groovy/graphql/ScalarsIntTest.groovy b/src/test/groovy/graphql/ScalarsIntTest.groovy index 9a037451c5..42c7c6887f 100644 --- a/src/test/groovy/graphql/ScalarsIntTest.groovy +++ b/src/test/groovy/graphql/ScalarsIntTest.groovy @@ -1,5 +1,6 @@ package graphql +import graphql.execution.CoercedVariables import graphql.language.FloatValue import graphql.language.IntValue import graphql.language.StringValue @@ -16,20 +17,31 @@ class ScalarsIntTest extends Specification { @Unroll def "Int parse literal #literal.value as #result"() { expect: - Scalars.GraphQLInt.getCoercing().parseLiteral(literal) == result + Scalars.GraphQLInt.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) == result where: literal | result new IntValue(42 as BigInteger) | 42 new IntValue(Integer.MAX_VALUE as BigInteger) | Integer.MAX_VALUE new IntValue(Integer.MIN_VALUE as BigInteger) | Integer.MIN_VALUE + } + + @Unroll + def "Int parse literal #literal.value as #result with deprecated method"() { + expect: + Scalars.GraphQLInt.getCoercing().parseLiteral(literal) == result // Retain deprecated method for test coverage + where: + literal | result + new IntValue(42 as BigInteger) | 42 + new IntValue(Integer.MAX_VALUE as BigInteger) | Integer.MAX_VALUE + new IntValue(Integer.MIN_VALUE as BigInteger) | Integer.MIN_VALUE } @Unroll def "Int returns null for invalid #literal"() { when: - Scalars.GraphQLInt.getCoercing().parseLiteral(literal) + Scalars.GraphQLInt.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) then: thrown(CoercingParseLiteralException) @@ -42,28 +54,50 @@ class ScalarsIntTest extends Specification { new IntValue(Integer.MIN_VALUE - 1l as BigInteger) | _ new StringValue("-1") | _ new FloatValue(42.3) | _ - } @Unroll def "Int serialize #value into #result (#result.class)"() { expect: - Scalars.GraphQLInt.getCoercing().serialize(value) == result - Scalars.GraphQLInt.getCoercing().parseValue(value) == result + Scalars.GraphQLInt.getCoercing().serialize(value, GraphQLContext.default, Locale.default) == result + + where: + value | result + "42" | 42 + "42.0000" | 42 + 42.0000d | 42 + Integer.valueOf(42) | 42 + "-1" | -1 + new BigInteger("42") | 42 + new BigDecimal("42") | 42 + 42.0f | 42 + 42.0d | 42 + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 + 1234567l | 1234567 + new AtomicInteger(42) | 42 + Integer.MAX_VALUE | Integer.MAX_VALUE + Integer.MIN_VALUE | Integer.MIN_VALUE + } + + @Unroll + def "Int serialize #value into #result (#result.class) with deprecated methods"() { + expect: + Scalars.GraphQLInt.getCoercing().serialize(value) == result // Retain deprecated for test coverage where: value | result "42" | 42 "42.0000" | 42 42.0000d | 42 - new Integer(42) | 42 + Integer.valueOf(42) | 42 "-1" | -1 - new BigInteger(42) | 42 + new BigInteger("42") | 42 new BigDecimal("42") | 42 42.0f | 42 42.0d | 42 - new Byte("42") | 42 - new Short("42") | 42 + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 1234567l | 1234567 new AtomicInteger(42) | 42 Integer.MAX_VALUE | Integer.MAX_VALUE @@ -73,44 +107,86 @@ class ScalarsIntTest extends Specification { @Unroll def "serialize throws exception for invalid input #value"() { when: - Scalars.GraphQLInt.getCoercing().serialize(value) + Scalars.GraphQLInt.getCoercing().serialize(value, GraphQLContext.default, Locale.default) then: thrown(CoercingSerializeException) where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Long(42345784398534785l) | _ - new Double(42.3) | _ - new Float(42.3) | _ - Integer.MAX_VALUE + 1l | _ - Integer.MIN_VALUE - 1l | _ - new Object() | _ + value | _ + "" | _ + "not a number " | _ + "42.3" | _ + Long.valueOf(42345784398534785l) | _ + Double.valueOf(42.3) | _ + Float.valueOf(42.3) | _ + Integer.MAX_VALUE + 1l | _ + Integer.MIN_VALUE - 1l | _ + new Object() | _ + } + @Unroll + def "Int parseValue #value into #result (#result.class)"() { + expect: + Scalars.GraphQLInt.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) == result + + where: + value | result + Integer.valueOf(42) | 42 + new BigInteger("42") | 42 + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 + 1234567l | 1234567 + new AtomicInteger(42) | 42 + 42.0000d | 42 + new BigDecimal("42") | 42 + 42.0f | 42 + 42.0d | 42 + Integer.MAX_VALUE | Integer.MAX_VALUE + Integer.MIN_VALUE | Integer.MIN_VALUE } @Unroll - def "parsValue throws exception for invalid input #value"() { + def "Int parseValue #value into #result (#result.class) with deprecated methods"() { + expect: + Scalars.GraphQLInt.getCoercing().parseValue(value) == result // Retain deprecated for test coverage + + where: + value | result + Integer.valueOf(42) | 42 + new BigInteger("42") | 42 + Byte.valueOf("42") | 42 + Short.valueOf("42") | 42 + 1234567l | 1234567 + new AtomicInteger(42) | 42 + 42.0000d | 42 + new BigDecimal("42") | 42 + 42.0f | 42 + 42.0d | 42 + Integer.MAX_VALUE | Integer.MAX_VALUE + Integer.MIN_VALUE | Integer.MIN_VALUE + } + + @Unroll + def "parseValue throws exception for invalid input #value"() { when: - Scalars.GraphQLInt.getCoercing().parseValue(value) + Scalars.GraphQLInt.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) then: thrown(CoercingParseValueException) - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Long(42345784398534785l) | _ - new Double(42.3) | _ - new Float(42.3) | _ - Integer.MAX_VALUE + 1l | _ - Integer.MIN_VALUE - 1l | _ - new Object() | _ - + value | _ + "" | _ + "not a number " | _ + "42.3" | _ + Long.valueOf(42345784398534785l) | _ + Double.valueOf(42.3) | _ + Float.valueOf(42.3) | _ + Integer.MAX_VALUE + 1l | _ + Integer.MIN_VALUE - 1l | _ + new Object() | _ + "42" | _ + "42.0000" | _ + "-1" | _ } } diff --git a/src/test/groovy/graphql/ScalarsLongTest.groovy b/src/test/groovy/graphql/ScalarsLongTest.groovy deleted file mode 100644 index 2b212aaa76..0000000000 --- a/src/test/groovy/graphql/ScalarsLongTest.groovy +++ /dev/null @@ -1,117 +0,0 @@ -package graphql - -import graphql.language.FloatValue -import graphql.language.IntValue -import graphql.language.StringValue -import graphql.schema.CoercingParseLiteralException -import graphql.schema.CoercingParseValueException -import graphql.schema.CoercingSerializeException -import spock.lang.Shared -import spock.lang.Specification -import spock.lang.Unroll - -import java.util.concurrent.atomic.AtomicInteger - -class ScalarsLongTest extends Specification { - - @Shared - def tooBig = new BigInteger(Long.toString(Long.MAX_VALUE)).add(new BigInteger("1")) - @Shared - def tooSmall = new BigInteger(Long.toString(Long.MIN_VALUE)).subtract(new BigInteger("1")) - - @Unroll - def "Long parse literal #literal.value as #result"() { - expect: - Scalars.GraphQLLong.getCoercing().parseLiteral(literal) == result - - where: - literal | result - new IntValue(42 as BigInteger) | 42 - new IntValue(Long.MAX_VALUE as BigInteger) | Long.MAX_VALUE - new IntValue(Long.MIN_VALUE as BigInteger) | Long.MIN_VALUE - new StringValue("12345678910") | 12345678910 - new StringValue("-1") | -1 - - } - - @Unroll - def "Long returns null for invalid #literal"() { - when: - Scalars.GraphQLLong.getCoercing().parseLiteral(literal) - then: - thrown(CoercingParseLiteralException) - - where: - literal | _ - new StringValue("not a number") | _ - new FloatValue(42.3) | _ - tooBig | null - tooSmall | null - new FloatValue(42.3) | null - } - - @Unroll - def "Long serialize #value into #result (#result.class)"() { - expect: - Scalars.GraphQLLong.getCoercing().serialize(value) == result - Scalars.GraphQLLong.getCoercing().parseValue(value) == result - - where: - value | result - "42" | 42 - "42.0000" | 42 - 42.0000d | 42 - new Integer(42) | 42 - "-1" | -1 - new BigInteger(42) | 42 - new BigDecimal("42") | 42 - 42.0f | 42 - 42.0d | 42 - new Byte("42") | 42 - new Short("42") | 42 - 12345678910l | 12345678910l - new AtomicInteger(42) | 42 - Long.MAX_VALUE | Long.MAX_VALUE - Long.MIN_VALUE | Long.MIN_VALUE - new Long(42345784398534785l) | 42345784398534785l - } - - @Unroll - def "serialize throws exception for invalid input #value"() { - when: - Scalars.GraphQLLong.getCoercing().serialize(value) - then: - thrown(CoercingSerializeException) - - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Double(42.3) | _ - new Float(42.3) | _ - tooBig | _ - tooSmall | _ - new Object() | _ - } - - @Unroll - def "parseValue throws exception for invalid input #value"() { - when: - Scalars.GraphQLLong.getCoercing().parseValue(value) - then: - thrown(CoercingParseValueException) - - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Double(42.3) | _ - new Float(42.3) | _ - tooBig | _ - tooSmall | _ - new Object() | _ - } - -} diff --git a/src/test/groovy/graphql/ScalarsQuerySchema.java b/src/test/groovy/graphql/ScalarsQuerySchema.java index 92276e1788..44718be9e3 100644 --- a/src/test/groovy/graphql/ScalarsQuerySchema.java +++ b/src/test/groovy/graphql/ScalarsQuerySchema.java @@ -2,123 +2,54 @@ import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLNonNull; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; -import java.math.BigDecimal; -import java.math.BigInteger; - import static graphql.schema.GraphQLArgument.newArgument; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; public class ScalarsQuerySchema { - public static final DataFetcher inputDF = environment -> environment.getArgument("input"); + public static final DataFetcher inputDF = environment -> environment.getArgument("input"); public static final GraphQLObjectType queryType = newObject() .name("QueryType") - /** Static Scalars */ - .field(newFieldDefinition() - .name("bigInteger") - .type(Scalars.GraphQLBigInteger) - .staticValue(BigInteger.valueOf(9999))) - .field(newFieldDefinition() - .name("bigDecimal") - .type(Scalars.GraphQLBigDecimal) - .staticValue(BigDecimal.valueOf(1234.0))) - .field(newFieldDefinition() - .name("floatNaN") - .type(Scalars.GraphQLFloat) - .staticValue(Double.NaN)) - - - /** Scalars with input of same type, value echoed back */ - .field(newFieldDefinition() - .name("bigIntegerInput") - .type(Scalars.GraphQLBigInteger) - .argument(newArgument() - .name("input") - .type(GraphQLNonNull.nonNull(Scalars.GraphQLBigInteger))) - .dataFetcher(inputDF)) - .field(newFieldDefinition() - .name("bigDecimalInput") - .type(Scalars.GraphQLBigDecimal) - .argument(newArgument() - .name("input") - .type(GraphQLNonNull.nonNull(Scalars.GraphQLBigDecimal))) - .dataFetcher(inputDF)) - .field(newFieldDefinition() - .name("floatNaNInput") - .type(Scalars.GraphQLFloat) - .argument(newArgument() - .name("input") - .type(GraphQLNonNull.nonNull(Scalars.GraphQLFloat))) - .dataFetcher(inputDF)) .field(newFieldDefinition() .name("stringInput") .type(Scalars.GraphQLString) .argument(newArgument() .name("input") - .type(GraphQLNonNull.nonNull(Scalars.GraphQLString))) - .dataFetcher(inputDF)) - - - /** Scalars with input of String, cast to scalar */ - .field(newFieldDefinition() - .name("bigIntegerString") - .type(Scalars.GraphQLBigInteger) - .argument(newArgument() - .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) - .field(newFieldDefinition() - .name("bigDecimalString") - .type(Scalars.GraphQLBigDecimal) - .argument(newArgument() - .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) + .type(GraphQLNonNull.nonNull(Scalars.GraphQLString)))) + // Scalars with input of String, cast to scalar .field(newFieldDefinition() .name("floatString") .type(Scalars.GraphQLFloat) .argument(newArgument() .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) - .field(newFieldDefinition() - .name("longString") - .type(Scalars.GraphQLLong) - .argument(newArgument() - .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) + .type(Scalars.GraphQLString))) .field(newFieldDefinition() .name("intString") .type(Scalars.GraphQLInt) .argument(newArgument() .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) - .field(newFieldDefinition() - .name("shortString") - .type(Scalars.GraphQLShort) - .argument(newArgument() - .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) - .field(newFieldDefinition() - .name("byteString") - .type(Scalars.GraphQLByte) - .argument(newArgument() - .name("input") - .type(Scalars.GraphQLString)) - .dataFetcher(inputDF)) + .type(Scalars.GraphQLString))) .build(); + static FieldCoordinates stringInputCoordinates = FieldCoordinates.coordinates("QueryType", "stringInput"); + static FieldCoordinates floatStringCoordinates = FieldCoordinates.coordinates("QueryType", "floatString"); + static FieldCoordinates intStringCoordinates = FieldCoordinates.coordinates("QueryType", "intString"); + static GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(stringInputCoordinates, inputDF) + .dataFetcher(floatStringCoordinates, inputDF) + .dataFetcher(intStringCoordinates, inputDF) + .build(); public static final GraphQLSchema scalarsQuerySchema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(queryType) .build(); } diff --git a/src/test/groovy/graphql/ScalarsQueryTest.groovy b/src/test/groovy/graphql/ScalarsQueryTest.groovy index 6f3196b10f..6a0376bfae 100644 --- a/src/test/groovy/graphql/ScalarsQueryTest.groovy +++ b/src/test/groovy/graphql/ScalarsQueryTest.groovy @@ -1,82 +1,11 @@ package graphql -import graphql.execution.batched.BatchedExecutionStrategy + import spock.lang.Specification import spock.lang.Unroll class ScalarsQueryTest extends Specification { - def 'Large BigIntegers'() { - given: - def query = """ - query BigInteger { - bigInteger - i1: bigIntegerInput(input: 1234567890123456789012345678901234567890) - i2: bigIntegerInput(input: "1234567890123456789012345678901234567890") - i3: bigIntegerString(input: "1234567890123456789012345678901234567890") - } - """ - def expected = [ - bigInteger: 9999, - i1 : 1234567890123456789012345678901234567890, - i2 : 1234567890123456789012345678901234567890, - i3 : 1234567890123456789012345678901234567890 - ] - - when: - def result = GraphQL.newGraphQL(ScalarsQuerySchema.scalarsQuerySchema).build().execute(query) - - then: - result.data == expected - result.errors.empty == true - } - - def 'Large BigDecimals'() { - given: - def query = """ - query BigDecimal { - bigDecimal - d1: bigDecimalInput(input: "1234567890123456789012345678901234567890.0") - d2: bigDecimalInput(input: 1234567890123456789012345678901234567890.0) - d3: bigDecimalString(input: "1234567890123456789012345678901234567890.0") - } - """ - def expected = [ - bigDecimal: 1234.0, - d1 : 1234567890123456789012345678901234567890.0, - d2 : 1234567890123456789012345678901234567890.0, - d3 : 1234567890123456789012345678901234567890.0, - ] - - when: - def result = GraphQL.newGraphQL(ScalarsQuerySchema.scalarsQuerySchema).build().execute(query) - - then: - result.data == expected - result.errors.empty == true - } - - def 'Float NaN Not a Number '() { - given: - def query = """ - query FloatNaN { - floatNaN - } - """ - def expected = [ - floatNaN: null - ] - - when: - def result = GraphQL.newGraphQL(ScalarsQuerySchema.scalarsQuerySchema) - .build().execute(query) - def resultBatched = GraphQL.newGraphQL(ScalarsQuerySchema.scalarsQuerySchema) - .queryExecutionStrategy(new BatchedExecutionStrategy()) - .build().execute(query) - - then: - thrown(GraphQLException) - } def 'Escaped characters are handled'() { given: @@ -94,7 +23,7 @@ class ScalarsQueryTest extends Specification { then: result.data == expected - result.errors.empty == true + result.errors.empty } @Unroll @@ -109,13 +38,8 @@ class ScalarsQueryTest extends Specification { result.errors[0] instanceof SerializationError where: - number | _ - "bigInteger" | _ - "bigDecimal" | _ - "float" | _ - "long" | _ - "int" | _ - "short" | _ - "byte" | _ + number | _ + "float" | _ + "int" | _ } } diff --git a/src/test/groovy/graphql/ScalarsShortTest.groovy b/src/test/groovy/graphql/ScalarsShortTest.groovy deleted file mode 100644 index 2dda325287..0000000000 --- a/src/test/groovy/graphql/ScalarsShortTest.groovy +++ /dev/null @@ -1,114 +0,0 @@ -package graphql - -import graphql.language.FloatValue -import graphql.language.IntValue -import graphql.language.StringValue -import graphql.schema.CoercingParseLiteralException -import graphql.schema.CoercingParseValueException -import graphql.schema.CoercingSerializeException -import spock.lang.Specification -import spock.lang.Unroll - -import java.util.concurrent.atomic.AtomicInteger - -class ScalarsShortTest extends Specification { - - @Unroll - def "Short parse literal #literal.value as #result"() { - expect: - Scalars.GraphQLShort.getCoercing().parseLiteral(literal) == result - - where: - literal | result - new IntValue(42 as BigInteger) | 42 - new IntValue(Short.MAX_VALUE as BigInteger) | Short.MAX_VALUE - new IntValue(Short.MIN_VALUE as BigInteger) | Short.MIN_VALUE - - } - - @Unroll - def "Short returns null for invalid #literal"() { - when: - Scalars.GraphQLShort.getCoercing().parseLiteral(literal) - then: - thrown(CoercingParseLiteralException) - - where: - literal | _ - new IntValue(12345678910 as BigInteger) | _ - new StringValue("-1") | _ - new FloatValue(42.3) | _ - new IntValue(Short.MAX_VALUE + 1l as BigInteger) | null - new IntValue(Short.MIN_VALUE - 1l as BigInteger) | null - new StringValue("-1") | null - new FloatValue(42.3) | null - } - - @Unroll - def "Short serialize #value into #result (#result.class)"() { - expect: - Scalars.GraphQLShort.getCoercing().serialize(value) == result - Scalars.GraphQLShort.getCoercing().parseValue(value) == result - - where: - value | result - "42" | 42 - "42.0000" | 42 - 42.0000d | 42 - new Integer(42) | 42 - "-1" | -1 - new BigInteger(42) | 42 - new BigDecimal("42") | 42 - 42.0f | 42 - 42.0d | 42 - new Byte("42") | 42 - new Short("42") | 42 - 1234l | 1234 - new AtomicInteger(42) | 42 - Short.MAX_VALUE | Short.MAX_VALUE - Short.MIN_VALUE | Short.MIN_VALUE - } - - @Unroll - def "serialize throws exception for invalid input #value"() { - when: - Scalars.GraphQLShort.getCoercing().serialize(value) - then: - thrown(CoercingSerializeException) - - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Long(42345784398534785l) | _ - new Double(42.3) | _ - new Float(42.3) | _ - Short.MAX_VALUE + 1l | _ - Short.MIN_VALUE - 1l | _ - new Object() | _ - - } - - @Unroll - def "parseValue throws exception for invalid input #value"() { - when: - Scalars.GraphQLShort.getCoercing().parseValue(value) - then: - thrown(CoercingParseValueException) - - where: - value | _ - "" | _ - "not a number " | _ - "42.3" | _ - new Long(42345784398534785l) | _ - new Double(42.3) | _ - new Float(42.3) | _ - Short.MAX_VALUE + 1l | _ - Short.MIN_VALUE - 1l | _ - new Object() | _ - - } - -} diff --git a/src/test/groovy/graphql/ScalarsStringTest.groovy b/src/test/groovy/graphql/ScalarsStringTest.groovy index f25ead1c74..cbd00f97d9 100644 --- a/src/test/groovy/graphql/ScalarsStringTest.groovy +++ b/src/test/groovy/graphql/ScalarsStringTest.groovy @@ -1,5 +1,6 @@ package graphql +import graphql.execution.CoercedVariables import graphql.language.BooleanValue import graphql.language.StringValue import graphql.schema.CoercingParseLiteralException @@ -10,7 +11,6 @@ import spock.lang.Unroll class ScalarsStringTest extends Specification { - @Shared def customObject = new Object() { @Override @@ -22,18 +22,27 @@ class ScalarsStringTest extends Specification { @Unroll def "String parse literal #literal.value as #result"() { expect: - Scalars.GraphQLString.getCoercing().parseLiteral(literal) == result + Scalars.GraphQLString.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) == result where: literal | result new StringValue("1234ab") | "1234ab" + } + + @Unroll + def "String parse literal #literal.value as #result with deprecated method"() { + expect: + Scalars.GraphQLString.getCoercing().parseLiteral(literal) == result // Retain deprecated for test coverage + where: + literal | result + new StringValue("1234ab") | "1234ab" } @Unroll def "String returns null for invalid #literal"() { when: - Scalars.GraphQLString.getCoercing().parseLiteral(literal) + Scalars.GraphQLString.getCoercing().parseLiteral(literal, CoercedVariables.emptyVariables(), GraphQLContext.default, Locale.default) then: thrown(CoercingParseLiteralException) @@ -45,8 +54,7 @@ class ScalarsStringTest extends Specification { @Unroll def "String serialize #value into #result (#result.class)"() { expect: - Scalars.GraphQLString.getCoercing().serialize(value) == result - Scalars.GraphQLString.getCoercing().parseValue(value) == result + Scalars.GraphQLString.getCoercing().serialize(value, GraphQLContext.default, Locale.default) == result where: value | result @@ -55,5 +63,47 @@ class ScalarsStringTest extends Specification { customObject | "foo" } + @Unroll + def "String serialize #value into #result (#result.class) with deprecated method"() { + expect: + Scalars.GraphQLString.getCoercing().serialize(value) == result // Retain deprecated method for test coverage + + where: + value | result + "123ab" | "123ab" + 123 | "123" + customObject | "foo" + } + def "String parseValue value into result"() { + expect: + Scalars.GraphQLString.getCoercing().parseValue("123ab", GraphQLContext.default, Locale.default) == "123ab" + } + + def "String parseValue value into result with deprecated method"() { + expect: + Scalars.GraphQLString.getCoercing().parseValue("123ab") == "123ab" // Retain deprecated method for test coverage + } + + @Unroll + def "String parseValue throws exception for non-String values"() { + when: + Scalars.GraphQLString.getCoercing().parseValue(value, GraphQLContext.default, Locale.default) + then: + thrown(CoercingParseValueException) + + where: + value | _ + 123 | _ + true | _ + customObject | _ + } + + def "String parseValue English exception message"() { + when: + Scalars.GraphQLString.getCoercing().parseValue(9001, GraphQLContext.default, Locale.ENGLISH) + then: + def ex = thrown(CoercingParseValueException) + ex.message == "Expected a String input, but it was a 'Integer'" + } } diff --git a/src/test/groovy/graphql/StarWarsData.groovy b/src/test/groovy/graphql/StarWarsData.groovy index 2bfd4accc9..d4a406d565 100644 --- a/src/test/groovy/graphql/StarWarsData.groovy +++ b/src/test/groovy/graphql/StarWarsData.groovy @@ -94,7 +94,6 @@ class StarWarsData { } } - static DataFetcher droidDataFetcher = new DataFetcher() { @Override Object get(DataFetchingEnvironment environment) { diff --git a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy index 028f2c0bd5..75411f6af0 100644 --- a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy +++ b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy @@ -430,6 +430,6 @@ class StarWarsIntrospectionTests extends Specification { schemaParts.get('mutationType').size() == 1 schemaParts.get('subscriptionType') == null schemaParts.get('types').size() == 17 - schemaParts.get('directives').size() == 3 + schemaParts.get('directives').size() == 7 } } diff --git a/src/test/groovy/graphql/StarWarsQueryTest.groovy b/src/test/groovy/graphql/StarWarsQueryTest.groovy index f28cb3fe1b..0ed8b46bb2 100644 --- a/src/test/groovy/graphql/StarWarsQueryTest.groovy +++ b/src/test/groovy/graphql/StarWarsQueryTest.groovy @@ -190,7 +190,8 @@ class StarWarsQueryTest extends Specification { ] ] when: - def result = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).build().execute(query, null, params).data + def ei = ExecutionInput.newExecutionInput(query).variables(params).build() + def result = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).build().execute(ei).data then: result == expected @@ -212,7 +213,8 @@ class StarWarsQueryTest extends Specification { human: null ] when: - def result = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).build().execute(query, null, params).data + def ei = ExecutionInput.newExecutionInput(query).variables(params).build() + def result = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).build().execute(ei).data then: result == expected diff --git a/src/test/groovy/graphql/StarWarsSchema.java b/src/test/groovy/graphql/StarWarsSchema.java index fe30898bac..bf5b891c02 100644 --- a/src/test/groovy/graphql/StarWarsSchema.java +++ b/src/test/groovy/graphql/StarWarsSchema.java @@ -1,12 +1,14 @@ package graphql; +import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; -import graphql.schema.GraphqlTypeComparatorRegistry; import graphql.schema.StaticDataFetcher; import static graphql.Scalars.GraphQLString; @@ -24,7 +26,6 @@ public class StarWarsSchema { - public static GraphQLEnumType episodeEnum = newEnum() .name("Episode") .description("One of the films in the Star Wars Trilogy") @@ -54,7 +55,6 @@ public class StarWarsSchema { .name("appearsIn") .description("Which movies they appear in.") .type(list(episodeEnum))) - .typeResolver(StarWarsData.getCharacterTypeResolver()) .comparatorRegistry(BY_NAME_REGISTRY) .build(); @@ -73,8 +73,7 @@ public class StarWarsSchema { .field(newFieldDefinition() .name("friends") .description("The friends of the human, or an empty list if they have none.") - .type(list(characterInterface)) - .dataFetcher(StarWarsData.getFriendsDataFetcher())) + .type(list(characterInterface))) .field(newFieldDefinition() .name("appearsIn") .description("Which movies they appear in.") @@ -101,8 +100,7 @@ public class StarWarsSchema { .field(newFieldDefinition() .name("friends") .description("The friends of the droid, or an empty list if they have none.") - .type(list(characterInterface)) - .dataFetcher(StarWarsData.getFriendsDataFetcher())) + .type(list(characterInterface))) .field(newFieldDefinition() .name("appearsIn") .description("Which movies they appear in.") @@ -132,24 +130,21 @@ public class StarWarsSchema { .argument(newArgument() .name("episode") .description("If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.") - .type(episodeEnum)) - .dataFetcher(new StaticDataFetcher(StarWarsData.getArtoo()))) + .type(episodeEnum))) .field(newFieldDefinition() .name("human") .type(humanType) .argument(newArgument() .name("id") .description("id of the human") - .type(nonNull(GraphQLString))) - .dataFetcher(StarWarsData.getHumanDataFetcher())) + .type(nonNull(GraphQLString)))) .field(newFieldDefinition() .name("droid") .type(droidType) .argument(newArgument() .name("id") .description("id of the droid") - .type(nonNull(GraphQLString))) - .dataFetcher(StarWarsData.getDroidDataFetcher())) + .type(nonNull(GraphQLString)))) .comparatorRegistry(BY_NAME_REGISTRY) .build(); @@ -160,12 +155,35 @@ public class StarWarsSchema { .type(characterInterface) .argument(newArgument() .name("input") - .type(inputHumanType)) - .dataFetcher(new StaticDataFetcher(StarWarsData.getArtoo()))) + .type(inputHumanType))) .comparatorRegistry(BY_NAME_REGISTRY) .build(); + public static FieldCoordinates humanFriendsCoordinates = FieldCoordinates.coordinates("Human", "friends"); + public static DataFetcher humanFriendsDataFetcher = StarWarsData.getFriendsDataFetcher(); + public static FieldCoordinates droidFriendsCoordinates = FieldCoordinates.coordinates("Droid", "friends"); + public static DataFetcher droidFriendsDataFetcher = StarWarsData.getFriendsDataFetcher(); + public static FieldCoordinates heroCoordinates = FieldCoordinates.coordinates("QueryType", "hero"); + public static DataFetcher heroDataFetcher = new StaticDataFetcher(StarWarsData.getArtoo()); + public static FieldCoordinates humanCoordinates = FieldCoordinates.coordinates("QueryType", "human"); + public static DataFetcher humanDataFetcher = StarWarsData.getHumanDataFetcher(); + public static FieldCoordinates droidCoordinates = FieldCoordinates.coordinates("QueryType", "droid"); + public static DataFetcher droidDataFetcher = StarWarsData.getDroidDataFetcher(); + public static FieldCoordinates createHumanCoordinates = FieldCoordinates.coordinates("MutationType", "createHuman"); + public static DataFetcher createHumanDataFetcher = new StaticDataFetcher(StarWarsData.getArtoo()); + + public static GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(humanFriendsCoordinates, humanFriendsDataFetcher) + .dataFetcher(droidFriendsCoordinates, droidFriendsDataFetcher) + .dataFetcher(heroCoordinates, heroDataFetcher) + .dataFetcher(humanCoordinates, humanDataFetcher) + .dataFetcher(droidCoordinates, droidDataFetcher) + .dataFetcher(createHumanCoordinates, createHumanDataFetcher) + .typeResolver("Character", StarWarsData.getCharacterTypeResolver()) + .build(); + public static GraphQLSchema starWarsSchema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(queryType) .mutation(mutationType) .build(); diff --git a/src/test/groovy/graphql/StarWarsValidationTest.groovy b/src/test/groovy/graphql/StarWarsValidationTest.groovy index 86bcf76cac..4343f0f580 100644 --- a/src/test/groovy/graphql/StarWarsValidationTest.groovy +++ b/src/test/groovy/graphql/StarWarsValidationTest.groovy @@ -7,10 +7,9 @@ import spock.lang.Specification class StarWarsValidationTest extends Specification { - - List validate(String query) { + static List validate(String query) { def document = new Parser().parseDocument(query) - return new Validator().validateDocument(StarWarsSchema.starWarsSchema, document) + return new Validator().validateDocument(StarWarsSchema.starWarsSchema, document, Locale.ENGLISH) } def 'Validates a complex but valid query'() { diff --git a/src/test/groovy/graphql/TestUtil.groovy b/src/test/groovy/graphql/TestUtil.groovy index 4b166a3cc4..fce61c315c 100644 --- a/src/test/groovy/graphql/TestUtil.groovy +++ b/src/test/groovy/graphql/TestUtil.groovy @@ -2,9 +2,13 @@ package graphql import graphql.execution.MergedField import graphql.execution.MergedSelectionSet +import graphql.execution.pubsub.CapturingSubscriber +import graphql.incremental.DelayedIncrementalPartialResult +import graphql.incremental.IncrementalExecutionResult import graphql.introspection.Introspection.DirectiveLocation import graphql.language.Document import graphql.language.Field +import graphql.language.NullValue import graphql.language.ObjectTypeDefinition import graphql.language.OperationDefinition import graphql.language.ScalarTypeDefinition @@ -12,22 +16,26 @@ import graphql.language.Type import graphql.parser.Parser import graphql.schema.Coercing import graphql.schema.DataFetcher +import graphql.schema.GraphQLAppliedDirective +import graphql.schema.GraphQLAppliedDirectiveArgument import graphql.schema.GraphQLArgument import graphql.schema.GraphQLDirective -import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLInputType import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLSchema import graphql.schema.GraphQLType import graphql.schema.TypeResolver -import graphql.schema.idl.MockedWiringFactory import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.SchemaGenerator import graphql.schema.idl.SchemaParser +import graphql.schema.idl.TestMockedWiringFactory import graphql.schema.idl.TypeRuntimeWiring import graphql.schema.idl.WiringFactory import graphql.schema.idl.errors.SchemaProblem +import groovy.json.JsonOutput +import org.awaitility.Awaitility +import org.reactivestreams.Publisher import java.util.function.Supplier import java.util.stream.Collectors @@ -36,22 +44,28 @@ import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString import static graphql.schema.GraphQLArgument.newArgument import static graphql.schema.GraphQLDirective.newDirective +import static graphql.schema.GraphQLFieldDefinition.Builder +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLScalarType.newScalar +import static graphql.schema.GraphQLSchema.newSchema class TestUtil { static GraphQLSchema schemaWithInputType(GraphQLInputType inputType) { GraphQLArgument.Builder fieldArgument = newArgument().name("arg").type(inputType) - GraphQLFieldDefinition.Builder name = GraphQLFieldDefinition.newFieldDefinition() + Builder name = newFieldDefinition() .name("name").type(GraphQLString).argument(fieldArgument) - GraphQLObjectType queryType = GraphQLObjectType.newObject().name("query").field(name).build() - new GraphQLSchema(queryType) + GraphQLObjectType queryType = newObject().name("query").field(name).build() + newSchema().query(queryType).build() } - static dummySchema = GraphQLSchema.newSchema() - .query(GraphQLObjectType.newObject() - .name("QueryType") - .build()) + static dummySchema = newSchema() + .query(newObject() + .name("QueryType") + .field(newFieldDefinition().name("field").type(GraphQLString)) + .build()) .build() static GraphQLSchema schemaFile(String fileName) { @@ -95,18 +109,18 @@ class TestUtil { schema(specReader, mockRuntimeWiring) } - static GraphQLSchema schema(String spec, RuntimeWiring runtimeWiring) { - schema(new StringReader(spec), runtimeWiring) + static GraphQLSchema schema(String spec, RuntimeWiring runtimeWiring, boolean commentsAsDescription = true) { + schema(new StringReader(spec), runtimeWiring, commentsAsDescription) } static GraphQLSchema schema(InputStream specStream, RuntimeWiring runtimeWiring) { schema(new InputStreamReader(specStream), runtimeWiring) } - static GraphQLSchema schema(Reader specReader, RuntimeWiring runtimeWiring) { + static GraphQLSchema schema(Reader specReader, RuntimeWiring runtimeWiring, boolean commentsAsDescription = true) { try { def registry = new SchemaParser().parse(specReader) - def options = SchemaGenerator.Options.defaultOptions() + def options = SchemaGenerator.Options.defaultOptions().useCommentsAsDescriptions(commentsAsDescription) return new SchemaGenerator().makeExecutableSchema(options, registry, runtimeWiring) } catch (SchemaProblem e) { assert false: "The schema could not be compiled : ${e}" @@ -154,12 +168,12 @@ class TestUtil { } } - static WiringFactory mockWiringFactory = new MockedWiringFactory() + static WiringFactory mockWiringFactory = new TestMockedWiringFactory() static RuntimeWiring mockRuntimeWiring = RuntimeWiring.newRuntimeWiring().wiringFactory(mockWiringFactory).build() static GraphQLScalarType mockScalar(String name) { - new GraphQLScalarType(name, name, mockCoercing()) + newScalar().name(name).description(name).coercing(mockCoercing()).build() } static Coercing mockCoercing() { @@ -176,22 +190,29 @@ class TestUtil { @Override Object parseLiteral(Object input) { - return null + return NullValue.newNullValue().build() } } } static GraphQLScalarType mockScalar(ScalarTypeDefinition definition) { - new GraphQLScalarType( - definition.getName(), - definition.getDescription() == null ? null : definition.getDescription().getContent(), - mockCoercing(), - definition.getDirectives().stream().map({ mockDirective(it.getName()) }).collect(Collectors.toList()), - definition) + newScalar() + .name(definition.getName()) + .description(definition.getDescription() == null ? null : definition.getDescription().getContent()) + .coercing(mockCoercing()) + .replaceDirectives( + definition.getDirectives() + .stream() + .map({ mkDirective(it.getName(), DirectiveLocation.SCALAR) }) + .collect(Collectors.toList())) + .definition(definition) + .build() } - static GraphQLDirective mockDirective(String name) { - new GraphQLDirective(name, name, EnumSet.noneOf(DirectiveLocation.class), Collections.emptyList(), false, false, false) + static GraphQLDirective mkDirective(String name, DirectiveLocation location, GraphQLArgument arg = null) { + def b = newDirective().name(name).description(name).validLocation(location) + if (arg != null) b.argument(arg) + b.build() } static TypeRuntimeWiring mockTypeRuntimeWiring(String typeName, boolean withResolver) { @@ -254,33 +275,148 @@ class TestUtil { return op.getSelectionSet().getSelectionsOfType(Field.class)[0] as Field } - static GraphQLDirective[] mockDirectivesWithArguments(String... names) { + static GraphQLAppliedDirective[] mockDirectivesWithArguments(String... names) { return names.collect { directiveName -> - def builder = newDirective().name(directiveName) + def builder = GraphQLAppliedDirective.newDirective().name(directiveName) names.each { argName -> - builder.argument(newArgument().name(argName).type(GraphQLInt).value(BigInteger.valueOf(0)).build()) + builder.argument(GraphQLAppliedDirectiveArgument.newArgument().name(argName).type(GraphQLInt).valueProgrammatic(BigInteger.valueOf(0)).build()) } return builder.build() - }.toArray() as GraphQLDirective[] + }.toArray() as GraphQLAppliedDirective[] } - static GraphQLDirective[] mockDirectivesWithNoValueArguments(String... names) { + static GraphQLAppliedDirective[] mockDirectivesWithNoValueArguments(String... names) { return names.collect { directiveName -> - def builder = newDirective().name(directiveName) + def builder = GraphQLAppliedDirective.newDirective().name(directiveName) names.each { argName -> - builder.argument(newArgument().name(argName).type(GraphQLInt).build()) + builder.argument(GraphQLAppliedDirectiveArgument.newArgument().name(argName).type(GraphQLInt).build()) } return builder.build() - }.toArray() as GraphQLDirective[] + }.toArray() as GraphQLAppliedDirective[] } static List mockArguments(String... names) { return names.collect { newArgument().name(it).type(GraphQLInt).build() } } + static List mockAppliedArguments(String... names) { + return names.collect { newArgument().name(it).type(GraphQLInt).build() } + } + static Comparator byGreatestLength = Comparator.comparing({ it.name }, Comparator.comparing({ it.length() }).reversed()) + + /** + * Turns a object kinto JSON and prints it - Helpful for debugging + * @param obj some obj + * @return a string + */ + static String prettyPrint(Object obj) { + if (obj instanceof ExecutionResult) { + obj = ((ExecutionResult) obj).toSpecification() + } + return JsonOutput.prettyPrint(JsonOutput.toJson(obj)) + + } + + static Random rn = new Random() + + static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min + } + + + /** + * Helper to say that a sub list is contained inside rhe master list in order for its entire length + * + * @param source the source list to check + * @param target the target list + * @return true if the target lists are inside the source list in order + */ + static boolean listContainsInOrder(List source, List target, List... targets) { + def index = indexOfSubListFrom(0, source, target) + if (index == -1) { + return false + } + for (List list : targets) { + index = indexOfSubListFrom(index, source, list) + if (index == -1) { + return false + } + } + return true + } + + /** + * Finds the index of the target list inside the source list starting from the specified index + * + * @param startIndex the starting index + * @param source the source list + * @param target the target list + * @return the index of the target list or -1 + */ + static int indexOfSubListFrom(int startIndex, List source, List target) { + def subListSize = target.size() + def masterListSize = source.size() + if (masterListSize < subListSize) { + return -1 + } + if (target.isEmpty() || source.isEmpty()) { + return -1 + } + for (int i = startIndex; i < masterListSize; i++) { + // starting at each index look for the sub list + if (i + subListSize > masterListSize) { + return -1 + } + + boolean matches = true + for (int j = 0; j < subListSize; j++) { + T sub = target.get(j) + T m = source.get(i + j) + if (!eq(sub, m)) { + matches = false + break + } + } + if (matches) { + return i + } + } + return -1 + } + + private static boolean eq(T t1, T t2) { + if (t1 == null && t2 == null) { + return true + } + if (t1 != null && t2 != null) { + return t1 == t2 + } + return false + } + + + static T last(List list) { + return list.get(list.size()-1) + } + + static List> getIncrementalResults(IncrementalExecutionResult initialResult) { + Publisher deferredResultStream = initialResult.incrementalItemPublisher + + def subscriber = new CapturingSubscriber() + + deferredResultStream.subscribe(subscriber) + + Awaitility.await().untilTrue(subscriber.isDone()) + if (subscriber.throwable != null) { + throw new RuntimeException(subscriber.throwable) + } + return subscriber.getEvents() + .collect { it.toSpecification() } + } + } diff --git a/src/test/groovy/graphql/TestUtilTest.groovy b/src/test/groovy/graphql/TestUtilTest.groovy new file mode 100644 index 0000000000..faf63d66aa --- /dev/null +++ b/src/test/groovy/graphql/TestUtilTest.groovy @@ -0,0 +1,104 @@ +package graphql + +import spock.lang.Specification + +class TestUtilTest extends Specification { + + def "list contains in order"() { + given: + def masterList = ["a", "b", "c", "d", "e", "f", "g"] + + when: + def actual = TestUtil.listContainsInOrder(masterList, subList) + + then: + actual == expected + + where: + subList | expected + ["a"] | true + ["f"] | true + ["c", "d"] | true + ["f", "g"] | true + ["a", "b", "c", "d", "e", "f", "g"] | true + ["f", "g", "X"] | false + ["b", "c", "e"] | false + [] | false + ["a", "b", "c", "d", "e", "f", "g", "X"] | false + ["A", "B", "C"] | false + } + + def "list contains in order edge cases"() { + when: + def actual = TestUtil.listContainsInOrder([], []) + then: + !actual + + when: + actual = TestUtil.listContainsInOrder(["a"], []) + then: + !actual + + when: + actual = TestUtil.listContainsInOrder([], ["a"]) + then: + !actual + + when: + actual = TestUtil.listContainsInOrder([null, "a", null], [null, "a"]) + then: + actual + } + + def "list contains in order many lists"() { + def master = ["a", "b", "c", "d", "e", "f", "g"] + when: + def actual = TestUtil.listContainsInOrder(master, + ["b", "c"], ["e", "f"]) + then: + actual + + when: + actual = TestUtil.listContainsInOrder(master, + ["b", "c"], ["g"]) + then: + actual + + when: + actual = TestUtil.listContainsInOrder(master, + ["b", "c"], ["f", "g", "X"]) + then: + !actual + + when: + actual = TestUtil.listContainsInOrder(master, + ["a"], ["b"], ["c"], ["d"], ["e"], ["f"], ["g"]) + then: + actual + + when: + actual = TestUtil.listContainsInOrder(master, + ["a", "b"], ["c", "d"], ["e"], ["f"], ["g"]) + then: + actual + + when: + actual = TestUtil.listContainsInOrder(master, + ["a"], ["b"], ["c"], ["d"], ["e"], ["f"], ["g"], ["X"]) + then: + !actual + + when: "empty" + actual = TestUtil.listContainsInOrder(master, + ["a"], [], ["c"]) + then: + !actual + + when: + actual = TestUtil.listContainsInOrder(master, + ["a"], ["b"], ["c"], ["X"], ["e"], ["f"], ["g"]) + then: + !actual + + } +} diff --git a/src/test/groovy/graphql/TypeMismatchErrorTest.groovy b/src/test/groovy/graphql/TypeMismatchErrorTest.groovy index f1f363c695..ff226aab8b 100644 --- a/src/test/groovy/graphql/TypeMismatchErrorTest.groovy +++ b/src/test/groovy/graphql/TypeMismatchErrorTest.groovy @@ -1,18 +1,17 @@ package graphql import graphql.introspection.Introspection -import graphql.schema.GraphQLEnumType -import graphql.schema.GraphQLInputObjectType -import graphql.schema.GraphQLInterfaceType -import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLType -import graphql.schema.GraphQLUnionType -import graphql.schema.TypeResolverProxy import spock.lang.Specification import spock.lang.Unroll +import static graphql.schema.GraphQLEnumType.newEnum +import static graphql.schema.GraphQLInputObjectType.newInputObject +import static graphql.schema.GraphQLInterfaceType.newInterface import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLUnionType.newUnionType class TypeMismatchErrorTest extends Specification { @@ -22,14 +21,14 @@ class TypeMismatchErrorTest extends Specification { TypeMismatchError.GraphQLTypeToTypeKindMapping.getTypeKindFromGraphQLType(type) == typeKind where: - type || typeKind - list(Scalars.GraphQLInt) || Introspection.TypeKind.LIST - Scalars.GraphQLInt || Introspection.TypeKind.SCALAR - new GraphQLObjectType("myObject", "...", [], []) || Introspection.TypeKind.OBJECT - new GraphQLEnumType("myEnum", "...", []) || Introspection.TypeKind.ENUM - new GraphQLInputObjectType("myInputType", "...", []) || Introspection.TypeKind.INPUT_OBJECT - new GraphQLInterfaceType("myInterfaceType", "...", [], new TypeResolverProxy()) || Introspection.TypeKind.INTERFACE - nonNull(Scalars.GraphQLInt) || Introspection.TypeKind.NON_NULL - new GraphQLUnionType("myUnion", "...", [Scalars.GraphQLInt], new TypeResolverProxy()) || Introspection.TypeKind.UNION + type || typeKind + list(Scalars.GraphQLInt) || Introspection.TypeKind.LIST + Scalars.GraphQLInt || Introspection.TypeKind.SCALAR + newObject().name("myObject").fields([]).build() || Introspection.TypeKind.OBJECT + newEnum().name("myEnum").values([]).build() || Introspection.TypeKind.ENUM + newInputObject().name("myInputType").fields([]).build() || Introspection.TypeKind.INPUT_OBJECT + newInterface().name("myInterfaceType").fields([]).build() || Introspection.TypeKind.INTERFACE + nonNull(Scalars.GraphQLInt) || Introspection.TypeKind.NON_NULL + newUnionType().name("myUnion").possibleType(newObject().name("test").build()).build() || Introspection.TypeKind.UNION } } diff --git a/src/test/groovy/graphql/TypeReferenceSchema.java b/src/test/groovy/graphql/TypeReferenceSchema.java index 0c9c843a6b..1989a29d1d 100644 --- a/src/test/groovy/graphql/TypeReferenceSchema.java +++ b/src/test/groovy/graphql/TypeReferenceSchema.java @@ -1,7 +1,10 @@ package graphql; import graphql.schema.Coercing; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLFieldDefinition; @@ -15,7 +18,6 @@ import graphql.schema.TypeResolverProxy; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import static graphql.GarfieldSchema.CatType; @@ -36,34 +38,44 @@ public class TypeReferenceSchema { - private static final GraphQLScalarType OnOff = GraphQLScalarType.newScalar() - .name("OnOff") - .coercing(new Coercing() { - - private static final String TEST_ONLY = "For testing only"; - - @Override - public Boolean serialize(Object input) { - throw new UnsupportedOperationException(TEST_ONLY); - } - - @Override - public Boolean parseValue(Object input) { - throw new UnsupportedOperationException(TEST_ONLY); - } - - @Override - public Boolean parseLiteral(Object input) { - throw new UnsupportedOperationException(TEST_ONLY); - } - }) - .withDirective(newDirective() - .name("serializeTo") - .validLocation(DirectiveLocation.SCALAR) - .argument(newArgument() - .name("type") - .type(GraphQLTypeReference.typeRef(GraphQLBoolean.getName())))) - .build(); + + private static final GraphQLScalarType OnOff; + + private static GraphQLDirective serialisedToDirective; + + static { + serialisedToDirective = newDirective() + .name("serializeTo") + .validLocation(DirectiveLocation.SCALAR) + .argument(newArgument() + .name("type") + .type(GraphQLTypeReference.typeRef(GraphQLBoolean.getName()))) + .build(); + + OnOff = GraphQLScalarType.newScalar() + .name("OnOff") + .coercing(new Coercing() { + + private static final String TEST_ONLY = "For testing only"; + + @Override + public Boolean serialize(Object input) { + throw new UnsupportedOperationException(TEST_ONLY); + } + + @Override + public Boolean parseValue(Object input) { + throw new UnsupportedOperationException(TEST_ONLY); + } + + @Override + public Boolean parseLiteral(Object input) { + throw new UnsupportedOperationException(TEST_ONLY); + } + }) + .withDirective(serialisedToDirective) + .build(); + } public static GraphQLScalarType UnionDirectiveInput = OnOff.transform(builder -> builder.name("Union_Directive_Input")); public static GraphQLScalarType InputObjectDirectiveInput = OnOff.transform(builder -> builder.name("Input_Object_Directive_Input")); @@ -76,146 +88,209 @@ public Boolean parseLiteral(Object input) { public static GraphQLScalarType EnumValueDirectiveInput = OnOff.transform(builder -> builder.name("Enum_Value_Directive_Input")); public static GraphQLScalarType QueryDirectiveInput = OnOff.transform(builder -> builder.name("Query_Directive_Input")); - private static GraphQLEnumType HairStyle = newEnum() - .name("HairStyle") - .withDirective(newDirective() - .name("enumDirective") - .validLocation(DirectiveLocation.ENUM) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(newArgument() - .name("input") - .type(EnumDirectiveInput))) - .value(newEnumValueDefinition() - .name("Short") - .value("Short") - .withDirective(newDirective() - .name("enumValueDirective") - .validLocation(DirectiveLocation.ENUM_VALUE) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(newArgument() - .name("input") - .type(EnumValueDirectiveInput))) - .build()) - .value(newEnumValueDefinition() - .name("Long") - .value("Long") - .build()) - .build(); + private static GraphQLEnumType HairStyle; + private static GraphQLDirective enumDirective; + private static GraphQLDirective enumValueDirective; - private static GraphQLUnionType PetType = newUnionType() - .name("Pet") - .possibleType(GraphQLTypeReference.typeRef(CatType.getName())) - .possibleType(GraphQLTypeReference.typeRef(DogType.getName())) - .typeResolver(new TypeResolverProxy()) - .withDirective(newDirective() - .name("unionDirective") - .validLocation(DirectiveLocation.UNION) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(newArgument() - .name("input") - .type(UnionDirectiveInput))) - .build(); - private static GraphQLInterfaceType Addressable = GraphQLInterfaceType.newInterface() - .name("Addressable") - .typeResolver(new TypeResolverProxy()) - .field(GraphQLFieldDefinition.newFieldDefinition() - .name("address") - .type(GraphQLString)) - .withDirective(newDirective() - .name("interfaceDirective") - .validLocation(DirectiveLocation.INTERFACE) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(GraphQLArgument.newArgument() - .name("input") - .type(InterfaceDirectiveInput))) - .build(); + static { - private static GraphQLInputObjectType PersonInputType = newInputObject() - .name("Person_Input") - .field(newInputObjectField() - .name("name") - .type(GraphQLString) - .withDirective(newDirective() - .name("inputFieldDefDirective") - .validLocation(DirectiveLocation.INPUT_FIELD_DEFINITION) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(GraphQLArgument.newArgument() - .name("input") - .type(InputFieldDefDirectiveInput)))) - .withDirective(newDirective() - .name("inputObjectDirective") - .validLocation(DirectiveLocation.INPUT_OBJECT) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(GraphQLArgument.newArgument() - .name("input") - .type(InputObjectDirectiveInput))) - .build(); + enumDirective = newDirective() + .name("enumDirective") + .validLocation(DirectiveLocation.ENUM) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(EnumDirectiveInput)) + .build(); - private static GraphQLObjectType PersonType = newObject() - .name("Person") - .field(newFieldDefinition() - .name("name") - .type(GraphQLString)) - .field(newFieldDefinition() - .name("address") - .type(GraphQLString)) - .field(newFieldDefinition() - .name("pet") - .type(GraphQLTypeReference.typeRef(PetType.getName()))) - .field(newFieldDefinition() - .name("hairStyle") - .type(GraphQLTypeReference.typeRef(HairStyle.getName()))) - .withInterface(GraphQLTypeReference.typeRef(NamedType.getName())) - .withInterface(Addressable) - .withDirective(newDirective() - .name("objectDirective") - .validLocation(DirectiveLocation.OBJECT) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(GraphQLArgument.newArgument() - .name("input") - .type(ObjectDirectiveInput))) - .build(); + enumValueDirective = newDirective() + .name("enumValueDirective") + .validLocation(DirectiveLocation.ENUM_VALUE) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(EnumValueDirectiveInput)) + .build(); - private static GraphQLFieldDefinition exists = newFieldDefinition() - .name("exists") - .type(GraphQLBoolean) - .argument(newArgument() - .name("person") - .type(GraphQLTypeReference.typeRef("Person_Input")) - .withDirective(newDirective() - .name("argumentDirective") - .validLocation(DirectiveLocation.ARGUMENT_DEFINITION) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(GraphQLArgument.newArgument() - .name("input") - .type(ArgumentDirectiveInput)))) - .withDirective(newDirective() - .name("fieldDefDirective") - .validLocation(DirectiveLocation.FIELD_DEFINITION) - .argument(newArgument() - .name("enabled") - .type(GraphQLTypeReference.typeRef(OnOff.getName()))) - .argument(GraphQLArgument.newArgument() - .name("input") - .type(FieldDefDirectiveInput))) - .build(); + HairStyle = newEnum() + .name("HairStyle") + .withDirective(enumDirective) + .value(newEnumValueDefinition() + .name("Short") + .value("Short") + .withDirective(enumValueDirective) + .build()) + .value(newEnumValueDefinition() + .name("Long") + .value("Long") + .build()) + .build(); + } + + private static GraphQLUnionType PetType; + private static GraphQLDirective unionDirective; + + static { + unionDirective = newDirective() + .name("unionDirective") + .validLocation(DirectiveLocation.UNION) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(UnionDirectiveInput)) + .build(); + + PetType = newUnionType() + .name("Pet") + .possibleType(GraphQLTypeReference.typeRef(CatType.getName())) + .possibleType(GraphQLTypeReference.typeRef(DogType.getName())) + .withDirective(unionDirective) + .build(); + } + + private static GraphQLInterfaceType Addressable; + private static GraphQLDirective interfaceDirective; + + static { + + interfaceDirective = newDirective() + .name("interfaceDirective") + .validLocation(DirectiveLocation.INTERFACE) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(InterfaceDirectiveInput)) + .build(); + + Addressable = GraphQLInterfaceType.newInterface() + .name("Addressable") + .field(GraphQLFieldDefinition.newFieldDefinition() + .name("address") + .type(GraphQLString)) + .withDirective(interfaceDirective) + .build(); + } + + private static GraphQLInputObjectType PersonInputType; + private static GraphQLDirective inputObjectDirective; + private static GraphQLDirective inputFieldDefDirective; + + static { + inputObjectDirective = newDirective() + .name("inputObjectDirective") + .validLocation(DirectiveLocation.INPUT_OBJECT) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(InputObjectDirectiveInput)) + .build(); + + inputFieldDefDirective = newDirective() + .name("inputFieldDefDirective") + .validLocation(DirectiveLocation.INPUT_FIELD_DEFINITION) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(InputFieldDefDirectiveInput)) + .build(); + + + PersonInputType = newInputObject() + .name("Person_Input") + .field(newInputObjectField() + .name("name") + .type(GraphQLString) + .withDirective(inputFieldDefDirective)) + .withDirective(inputObjectDirective) + .build(); + } + + private static GraphQLObjectType PersonType; + private static GraphQLDirective objectDirective; + + static { + objectDirective = newDirective() + .name("objectDirective") + .validLocation(DirectiveLocation.OBJECT) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(ObjectDirectiveInput)) + .build(); + + PersonType = newObject() + .name("Person") + .field(newFieldDefinition() + .name("name") + .type(GraphQLString)) + .field(newFieldDefinition() + .name("address") + .type(GraphQLString)) + .field(newFieldDefinition() + .name("pet") + .type(GraphQLTypeReference.typeRef(PetType.getName()))) + .field(newFieldDefinition() + .name("hairStyle") + .type(GraphQLTypeReference.typeRef(HairStyle.getName()))) + .withInterface(GraphQLTypeReference.typeRef(NamedType.getName())) + .withInterface(Addressable) + .withDirective(objectDirective) + .build(); + } + + private static GraphQLFieldDefinition exists; + private static GraphQLDirective fieldDefDirective; + private static GraphQLDirective argumentDirective; + + static { + fieldDefDirective = newDirective() + .name("fieldDefDirective") + .validLocation(DirectiveLocation.FIELD_DEFINITION) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(FieldDefDirectiveInput)) + .build(); + + argumentDirective = newDirective() + .name("argumentDirective") + .validLocation(DirectiveLocation.ARGUMENT_DEFINITION) + .argument(newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName()))) + .argument(newArgument() + .name("input") + .type(ArgumentDirectiveInput)) + .build(); + + + exists = newFieldDefinition() + .name("exists") + .type(GraphQLBoolean) + .argument(newArgument() + .name("person") + .type(GraphQLTypeReference.typeRef("Person_Input")) + .withDirective(argumentDirective)) + .withDirective(fieldDefDirective) + .build(); + } private static GraphQLFieldDefinition find = newFieldDefinition() .name("find") @@ -242,9 +317,35 @@ public Boolean parseLiteral(Object input) { .type(QueryDirectiveInput)) .build(); + public static GraphQLAppliedDirective cacheApplied = GraphQLAppliedDirective.newDirective() + .name("cache") + .argument(GraphQLAppliedDirectiveArgument.newArgument() + .name("enabled") + .type(GraphQLTypeReference.typeRef(OnOff.getName())) + .valueProgrammatic("On")) + .build(); + + public static GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver("Pet", new TypeResolverProxy()) + .typeResolver("Addressable", new TypeResolverProxy()) + .typeResolver("Named", GarfieldSchema.namedTypeResolver) + .build(); + public static GraphQLSchema SchemaWithReferences = GraphQLSchema.newSchema() .query(PersonService) .additionalTypes(new HashSet<>(Arrays.asList(PersonType, PersonInputType, PetType, CatType, DogType, NamedType, HairStyle, OnOff))) - .additionalDirectives(Collections.singleton(Cache)) + .additionalDirective(Cache) + .additionalDirective(fieldDefDirective) + .additionalDirective(argumentDirective) + .additionalDirective(inputObjectDirective) + .additionalDirective(inputFieldDefDirective) + .additionalDirective(serialisedToDirective) + .additionalDirective(objectDirective) + .additionalDirective(unionDirective) + .additionalDirective(enumDirective) + .additionalDirective(enumValueDirective) + .additionalDirective(interfaceDirective) + .codeRegistry(codeRegistry) + .withSchemaAppliedDirectives(cacheApplied) .build(); } diff --git a/src/test/groovy/graphql/TypeResolutionEnvironmentTest.groovy b/src/test/groovy/graphql/TypeResolutionEnvironmentTest.groovy index fe98a82f73..55be8cc947 100644 --- a/src/test/groovy/graphql/TypeResolutionEnvironmentTest.groovy +++ b/src/test/groovy/graphql/TypeResolutionEnvironmentTest.groovy @@ -1,5 +1,7 @@ package graphql + +import graphql.execution.TypeResolutionParameters import graphql.language.Field import graphql.schema.GraphQLObjectType import graphql.schema.TypeResolver @@ -24,7 +26,7 @@ class TypeResolutionEnvironmentTest extends Specification { bar : String } - type FooBar implements Foo, Bar { + type FooBar implements Foo & Bar { foo : String bar : String } @@ -36,10 +38,23 @@ class TypeResolutionEnvironmentTest extends Specification { def schema = TestUtil.schema(idl) + def interfaceType = schema.getType("Foo") + + def graphqlContext = GraphQLContext.newContext().of("a", "b").build() + def "basic operations"() { given: - def environment = new TypeResolutionEnvironment("source", [:], mergedField(new Field("field")), Scalars.GraphQLString, schema, "FooBar") + def environment = TypeResolutionParameters.newParameters() + .value("source") + .argumentValues(() -> [a: "b"]) + .field(mergedField(new Field("field"))) + .fieldType(interfaceType) + .schema(schema) + .context("FooBar") // Retain for test coverage + .graphQLContext(graphqlContext) + .localContext("LocalContext") + .build() when: @@ -48,6 +63,12 @@ class TypeResolutionEnvironmentTest extends Specification { GraphQLObjectType getType(TypeResolutionEnvironment env) { String source = env.getObject() assert source == "source" + assert env.getField().getName() == "field" + assert env.getFieldType() == interfaceType + assert env.getContext() == "FooBar" // Retain for test coverage + assert env.getLocalContext() == "LocalContext" + assert env.getGraphQLContext() == graphqlContext + assert env.getArguments() == [a: "b"] return schema.getObjectType("FooBar") } } @@ -82,10 +103,11 @@ class TypeResolutionEnvironmentTest extends Specification { GraphQLObjectType getType(TypeResolutionEnvironment env) { String source = env.getObject() assert source == "source" - if ("FooBar" == env.getContext()) { + assert env.getGraphQLContext().get("a") == "b" + if ("FooBar" == env.getContext()) { // Retain for test coverage return schema.getObjectType("FooBar") } - if ("Foo" == env.getContext()) { + if ("Foo" == env.getContext()) { // Retain for test coverage return schema.getObjectType("FooImpl") } return null @@ -93,14 +115,32 @@ class TypeResolutionEnvironmentTest extends Specification { } when: - def environmentFooBar = new TypeResolutionEnvironment("source", [:], mergedField(new Field("field")), Scalars.GraphQLString, schema, "FooBar") + def environmentFooBar = TypeResolutionParameters.newParameters() + .value("source") + .argumentValues(() -> [:]) + .field(mergedField(new Field("field"))) + .fieldType(interfaceType) + .schema(schema) + .context("FooBar") // Retain for test coverage + .graphQLContext(graphqlContext) + .build() + def objTypeFooBar = resolverWithContext.getType(environmentFooBar) then: objTypeFooBar.name == "FooBar" when: - def environmentFooImpl = new TypeResolutionEnvironment("source", [:], mergedField(new Field("field")), Scalars.GraphQLString, schema, "Foo") + def environmentFooImpl = TypeResolutionParameters.newParameters() + .value("source") + .argumentValues(() -> [:]) + .field(mergedField(new Field("field"))) + .fieldType(interfaceType) + .schema(schema) + .context("Foo") // Retain for test coverage + .graphQLContext(graphqlContext) + .build() + def objTypeFooImpl = resolverWithContext.getType(environmentFooImpl) then: diff --git a/src/test/groovy/graphql/TypeResolverExecutionTest.groovy b/src/test/groovy/graphql/TypeResolverExecutionTest.groovy index d92fcbbab2..b19cf59a15 100644 --- a/src/test/groovy/graphql/TypeResolverExecutionTest.groovy +++ b/src/test/groovy/graphql/TypeResolverExecutionTest.groovy @@ -1,5 +1,6 @@ package graphql +import graphql.execution.DataFetcherResult import graphql.schema.DataFetcher import graphql.schema.GraphQLInterfaceType import graphql.schema.GraphQLObjectType @@ -13,7 +14,9 @@ import graphql.schema.idl.WiringFactory import spock.lang.Specification import static graphql.Assert.assertShouldNeverHappen +import static graphql.ExecutionInput.newExecutionInput import static graphql.schema.GraphQLTypeUtil.unwrapAll +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class TypeResolverExecutionTest extends Specification { @@ -480,4 +483,178 @@ class TypeResolverExecutionTest extends Specification { res.data == null res.errors[0] instanceof UnresolvedTypeError } + + def "can get access to field selection set during type resolution"() { + def sdl = ''' + + type Query { + foo : BarInterface + } + + interface BarInterface { + name : String + } + + type NewBar implements BarInterface { + name : String + newBarOnlyField : String + } + + type OldBar implements BarInterface { + name : String + oldBarOnlyField : String + } + ''' + + TypeResolver typeResolver = new TypeResolver() { + @Override + GraphQLObjectType getType(TypeResolutionEnvironment env) { + boolean askedForOldBar = !env.getSelectionSet().getFields("oldBarOnlyField").isEmpty() + if (askedForOldBar) { + return env.getSchema().getObjectType("OldBar") + } + return env.getSchema().getObjectType("NewBar") + } + } + + + def wiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("foo", { env -> [name: "NAME"] })) + .type(newTypeWiring("BarInterface") + .typeResolver(typeResolver)) + .build() + + + def graphQL = TestUtil.graphQL(sdl, wiring).build() + + when: + def query = ''' + query { + foo { + __typename + ...OldBarFragment + ...NewBarFragment + } + } + + fragment OldBarFragment on OldBar { + name + oldBarOnlyField + } + + fragment NewBarFragment on NewBar { + name + newBarOnlyField + } + ''' + + def er = graphQL.execute(query) + + then: + er.errors.isEmpty() + er.data == ["foo": [ + "__typename" : "OldBar", + "name" : "NAME", + "oldBarOnlyField": null, + ]] + + + when: + query = ''' + query { + foo { + __typename + ...NewBarFragment + } + } + + fragment NewBarFragment on NewBar { + name + } + ''' + + er = graphQL.execute(query) + + then: + er.errors.isEmpty() + er.data == ["foo": [ + "__typename": "NewBar", + "name" : "NAME", + ]] + } + + def "can get access to attributes in the type resolver"() { + def sdl = ''' + + type Query { + foo : BarInterface + } + + interface BarInterface { + name : String + } + + type NewBar implements BarInterface { + name : String + newBarOnlyField : String + } + + type OldBar implements BarInterface { + name : String + oldBarOnlyField : String + } + ''' + + + TypeResolver typeResolver = new TypeResolver() { + @Override + GraphQLObjectType getType(TypeResolutionEnvironment env) { + assert env.getField().getName() == "foo" + assert env.getFieldType() == env.getSchema().getType("BarInterface") + assert env.getGraphQLContext().get("x") == "graphqlContext" + assert env.getLocalContext() == "LocalContext" + return env.getSchema().getObjectType("NewBar") + } + } + + def df = { env -> + DataFetcherResult.newResult().data([name: "NAME"]).localContext("LocalContext").build() + } + def wiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("foo", df)) + .type(newTypeWiring("BarInterface") + .typeResolver(typeResolver)) + .build() + + + def graphQL = TestUtil.graphQL(sdl, wiring).build() + + def query = ''' + query { + foo { + __typename + ...NewBarFragment + } + } + + fragment NewBarFragment on NewBar { + name + } + ''' + + when: + def ei = newExecutionInput(query) + .graphQLContext(["x" : "graphqlContext"]) + .build() + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == ["foo": [ + "__typename": "NewBar", + "name" : "NAME", + ]] + } } diff --git a/src/test/groovy/graphql/UnionTest.groovy b/src/test/groovy/graphql/UnionTest.groovy index a189e13158..8edd7b2600 100644 --- a/src/test/groovy/graphql/UnionTest.groovy +++ b/src/test/groovy/graphql/UnionTest.groovy @@ -4,8 +4,7 @@ import spock.lang.Specification class UnionTest extends Specification { - - def "can introspect on union and intersection types"() { + def "can introspect on union types"() { def query = """ { Named: __type(name: "Named") { @@ -16,15 +15,6 @@ class UnionTest extends Specification { possibleTypes { name } enumValues { name } inputFields { name } - } - Pet: __type(name: "Pet") { - kind - name - fields { name } - interfaces { name } - possibleTypes { name } - enumValues { name } - inputFields { name } } } """ @@ -35,7 +25,7 @@ class UnionTest extends Specification { fields : [ [name: 'name'] ], - interfaces : null, + interfaces : [], possibleTypes: [ [name: 'Cat'], [name: 'Dog'], @@ -43,8 +33,32 @@ class UnionTest extends Specification { ], enumValues : null, inputFields : null - ], - Pet : [ + ]] + when: + def executionResult = GraphQL.newGraphQL(GarfieldSchema.GarfieldSchema).build().execute(query) + + then: + executionResult.data == expectedResult + + + } + + def "can introspect on intersection types"() { + def query = """ + { + Pet: __type(name: "Pet") { + kind + name + fields { name } + interfaces { name } + possibleTypes { name } + enumValues { name } + inputFields { name } + } + } + """ + + def expectedResult = [Pet : [ kind : 'UNION', name : 'Pet', fields : null, @@ -96,7 +110,8 @@ class UnionTest extends Specification { ] when: - def executionResult = GraphQL.newGraphQL(GarfieldSchema.GarfieldSchema).build().execute(query, GarfieldSchema.john) + def ei = ExecutionInput.newExecutionInput(query).root(GarfieldSchema.john).build() + def executionResult = GraphQL.newGraphQL(GarfieldSchema.GarfieldSchema).build().execute(ei) then: executionResult.data == expectedResult @@ -148,7 +163,8 @@ class UnionTest extends Specification { ] ] when: - def executionResult = GraphQL.newGraphQL(GarfieldSchema.GarfieldSchema).build().execute(query, GarfieldSchema.john) + def ei = ExecutionInput.newExecutionInput(query).root(GarfieldSchema.john).build() + def executionResult = GraphQL.newGraphQL(GarfieldSchema.GarfieldSchema).build().execute(ei) then: executionResult.data == expectedResult diff --git a/src/test/groovy/graphql/analysis/MaxQueryComplexityInstrumentationTest.groovy b/src/test/groovy/graphql/analysis/MaxQueryComplexityInstrumentationTest.groovy index 704a1c9c6d..798b9e5512 100644 --- a/src/test/groovy/graphql/analysis/MaxQueryComplexityInstrumentationTest.groovy +++ b/src/test/groovy/graphql/analysis/MaxQueryComplexityInstrumentationTest.groovy @@ -3,12 +3,15 @@ package graphql.analysis import graphql.ExecutionInput import graphql.TestUtil import graphql.execution.AbortExecutionException -import graphql.execution.instrumentation.InstrumentationContext +import graphql.execution.ExecutionContext +import graphql.execution.ExecutionContextBuilder +import graphql.execution.ExecutionId +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters import graphql.language.Document import graphql.parser.Parser -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorType +import graphql.schema.GraphQLSchema import spock.lang.Specification import java.util.function.Function @@ -20,61 +23,6 @@ class MaxQueryComplexityInstrumentationTest extends Specification { parser.parseDocument(query) } - def "doesn't do anything if validation errors occur"() { - given: - def schema = TestUtil.schema(""" - type Query{ - bar: String - } - """) - def query = createQuery(""" - { bar { thisIsWrong } } - """) - def queryTraversal = Mock(QueryTraverser) - MaxQueryComplexityInstrumentation maxQueryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(6) { - - @Override - QueryTraverser newQueryTraverser(InstrumentationValidationParameters parameters) { - return queryTraversal - } - } - ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maxQueryComplexityInstrumentation.beginValidation(validationParameters) - when: - instrumentationContext.onCompleted([new ValidationError(ValidationErrorType.SubSelectionNotAllowed)], null) - then: - 0 * queryTraversal._(_) - - } - - def "doesn't do anything if exception was thrown"() { - given: - def schema = TestUtil.schema(""" - type Query{ - bar: String - } - """) - def query = createQuery(""" - { bar { thisIsWrong } } - """) - def queryTraversal = Mock(QueryTraverser) - MaxQueryComplexityInstrumentation maxQueryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(6) { - - @Override - QueryTraverser newQueryTraverser(InstrumentationValidationParameters parameters) { - return queryTraversal - } - } - ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maxQueryComplexityInstrumentation.beginValidation(validationParameters) - when: - instrumentationContext.onCompleted(null, new RuntimeException()) - then: - 0 * queryTraversal._(_) - - } def "default complexity calculator"() { given: @@ -93,16 +41,17 @@ class MaxQueryComplexityInstrumentationTest extends Specification { """) MaxQueryComplexityInstrumentation queryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(10) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = queryComplexityInstrumentation.beginValidation(validationParameters) + def state = createInstrumentationState(queryComplexityInstrumentation) + InstrumentationExecuteOperationParameters executeOperationParameters = createExecuteOperationParameters(queryComplexityInstrumentation, executionInput, query, schema, state) when: - instrumentationContext.onCompleted(null, null) + queryComplexityInstrumentation.beginExecuteOperation(executeOperationParameters, state) then: def e = thrown(AbortExecutionException) e.message == "maximum query complexity exceeded 11 > 10" } + def "complexity calculator works with __typename field with score 0"() { given: def schema = TestUtil.schema(""" @@ -115,10 +64,10 @@ class MaxQueryComplexityInstrumentationTest extends Specification { """) MaxQueryComplexityInstrumentation queryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(1) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = queryComplexityInstrumentation.beginValidation(validationParameters) + def state = createInstrumentationState(queryComplexityInstrumentation) + InstrumentationExecuteOperationParameters executeOperationParameters = createExecuteOperationParameters(queryComplexityInstrumentation, executionInput, query, schema, state) when: - instrumentationContext.onCompleted(null, null) + queryComplexityInstrumentation.beginExecuteOperation(executeOperationParameters, state) then: def e = thrown(AbortExecutionException) e.message == "maximum query complexity exceeded 2 > 1" @@ -143,10 +92,10 @@ class MaxQueryComplexityInstrumentationTest extends Specification { def calculator = Mock(FieldComplexityCalculator) MaxQueryComplexityInstrumentation queryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(5, calculator) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = queryComplexityInstrumentation.beginValidation(validationParameters) + def state = createInstrumentationState(queryComplexityInstrumentation) + InstrumentationExecuteOperationParameters executeOperationParameters = createExecuteOperationParameters(queryComplexityInstrumentation, executionInput, query, schema, state) when: - instrumentationContext.onCompleted(null, null) + queryComplexityInstrumentation.beginExecuteOperation(executeOperationParameters, state) then: 1 * calculator.calculate({ FieldComplexityEnvironment env -> env.field.name == "scalar" }, 0) >> 10 @@ -171,22 +120,24 @@ class MaxQueryComplexityInstrumentationTest extends Specification { def query = createQuery(""" {f2: foo {scalar foo{scalar}} f1: foo { foo {foo {foo {foo{foo{scalar}}}}}} } """) - Boolean test = false + Boolean customFunctionCalled = false Function maxQueryComplexityExceededFunction = new Function() { @Override Boolean apply(final QueryComplexityInfo queryComplexityInfo) { - test = true + assert queryComplexityInfo.instrumentationExecuteOperationParameters != null + assert queryComplexityInfo.instrumentationValidationParameters != null + customFunctionCalled = true return false } } MaxQueryComplexityInstrumentation queryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(10, maxQueryComplexityExceededFunction) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = queryComplexityInstrumentation.beginValidation(validationParameters) + def state = createInstrumentationState(queryComplexityInstrumentation) + InstrumentationExecuteOperationParameters executeOperationParameters = createExecuteOperationParameters(queryComplexityInstrumentation, executionInput, query, schema, state) when: - instrumentationContext.onCompleted(null, null) + queryComplexityInstrumentation.beginExecuteOperation(executeOperationParameters, state) then: - test == true + customFunctionCalled notThrown(Exception) } @@ -205,14 +156,34 @@ class MaxQueryComplexityInstrumentationTest extends Specification { MaxQueryComplexityInstrumentation queryComplexityInstrumentation = new MaxQueryComplexityInstrumentation(0) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = queryComplexityInstrumentation.beginValidation(validationParameters) + def state = createInstrumentationState(queryComplexityInstrumentation) + InstrumentationExecuteOperationParameters executeOperationParameters = createExecuteOperationParameters(queryComplexityInstrumentation, executionInput, query, schema, state) when: - instrumentationContext.onCompleted(null, null) + queryComplexityInstrumentation.beginExecuteOperation(executeOperationParameters, state) then: def e = thrown(AbortExecutionException) e.message == "maximum query complexity exceeded 1 > 0" } + + private InstrumentationExecuteOperationParameters createExecuteOperationParameters(MaxQueryComplexityInstrumentation queryComplexityInstrumentation, ExecutionInput executionInput, Document query, GraphQLSchema schema, InstrumentationState state) { + // we need to run N steps to create instrumentation state + def validationParameters = new InstrumentationValidationParameters(executionInput, query, schema) + queryComplexityInstrumentation.beginValidation(validationParameters, state) + def executionContext = executionCtx(executionInput, query, schema) + def executeOperationParameters = new InstrumentationExecuteOperationParameters(executionContext) + executeOperationParameters + } + + def createInstrumentationState(MaxQueryComplexityInstrumentation queryComplexityInstrumentation) { + queryComplexityInstrumentation.createStateAsync(null).join() + } + + + private ExecutionContext executionCtx(ExecutionInput executionInput, Document query, GraphQLSchema schema) { + ExecutionContextBuilder.newExecutionContextBuilder() + .executionInput(executionInput).document(query).graphQLSchema(schema).executionId(ExecutionId.generate()) + .build() + } } diff --git a/src/test/groovy/graphql/analysis/MaxQueryDepthInstrumentationTest.groovy b/src/test/groovy/graphql/analysis/MaxQueryDepthInstrumentationTest.groovy index 5a386786e5..acc1a08983 100644 --- a/src/test/groovy/graphql/analysis/MaxQueryDepthInstrumentationTest.groovy +++ b/src/test/groovy/graphql/analysis/MaxQueryDepthInstrumentationTest.groovy @@ -1,83 +1,54 @@ package graphql.analysis import graphql.ExecutionInput +import graphql.GraphQL import graphql.TestUtil import graphql.execution.AbortExecutionException -import graphql.execution.instrumentation.InstrumentationContext -import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters +import graphql.execution.ExecutionContext +import graphql.execution.ExecutionContextBuilder +import graphql.execution.ExecutionId +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters import graphql.language.Document import graphql.parser.Parser -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorType +import graphql.schema.GraphQLSchema import spock.lang.Specification import java.util.function.Function class MaxQueryDepthInstrumentationTest extends Specification { - Document createQuery(String query) { + static Document createQuery(String query) { Parser parser = new Parser() parser.parseDocument(query) } - - def "doesn't do anything if validation errors occur"() { + def "throws exception if too deep"() { given: def schema = TestUtil.schema(""" type Query{ + foo: Foo bar: String } - """) - def query = createQuery(""" - { bar { thisIsWrong } } - """) - def queryTraversal = Mock(QueryTraverser) - MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(6) { - - @Override - QueryTraverser newQueryTraverser(InstrumentationValidationParameters parameters) { - return queryTraversal - } - } - ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maximumQueryDepthInstrumentation.beginValidation(validationParameters) - when: - instrumentationContext.onCompleted([new ValidationError(ValidationErrorType.SubSelectionNotAllowed)], null) - then: - 0 * queryTraversal._(_) - - } - - def "doesn't do anything if exception was thrown"() { - given: - def schema = TestUtil.schema(""" - type Query{ - bar: String + type Foo { + scalar: String + foo: Foo } """) def query = createQuery(""" - { bar { thisIsWrong } } + {f1: foo {foo {foo {scalar}}} f2: foo { foo {foo {foo {foo{foo{scalar}}}}}} } """) - def queryTraversal = Mock(QueryTraverser) - MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(6) { - - @Override - QueryTraverser newQueryTraverser(InstrumentationValidationParameters parameters) { - return queryTraversal - } - } + MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(6) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maximumQueryDepthInstrumentation.beginValidation(validationParameters) + def executionContext = executionCtx(executionInput, query, schema) + def executeOperationParameters = new InstrumentationExecuteOperationParameters(executionContext) when: - instrumentationContext.onCompleted(null, new RuntimeException()) + maximumQueryDepthInstrumentation.beginExecuteOperation(executeOperationParameters, null) then: - 0 * queryTraversal._(_) - + def e = thrown(AbortExecutionException) + e.message.contains("maximum query depth exceeded 7 > 6") } - def "throws exception"() { + def "doesn't throw exception if not deep enough"() { given: def schema = TestUtil.schema(""" type Query{ @@ -92,18 +63,18 @@ class MaxQueryDepthInstrumentationTest extends Specification { def query = createQuery(""" {f1: foo {foo {foo {scalar}}} f2: foo { foo {foo {foo {foo{foo{scalar}}}}}} } """) - MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(6) + MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(7) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maximumQueryDepthInstrumentation.beginValidation(validationParameters) + def executionContext = executionCtx(executionInput, query, schema) + def executeOperationParameters = new InstrumentationExecuteOperationParameters(executionContext) + def state = null // it has not state in implementation when: - instrumentationContext.onCompleted(null, null) + maximumQueryDepthInstrumentation.beginExecuteOperation(executeOperationParameters, state) then: - def e = thrown(AbortExecutionException) - e.message.contains("maximum query depth exceeded 7 > 6") + notThrown(Exception) } - def "doesn't throw exception"() { + def "doesn't throw exception if not deep enough with deprecated beginExecuteOperation"() { given: def schema = TestUtil.schema(""" type Query{ @@ -120,10 +91,10 @@ class MaxQueryDepthInstrumentationTest extends Specification { """) MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(7) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maximumQueryDepthInstrumentation.beginValidation(validationParameters) + def executionContext = executionCtx(executionInput, query, schema) + def executeOperationParameters = new InstrumentationExecuteOperationParameters(executionContext) when: - instrumentationContext.onCompleted(null, null) + maximumQueryDepthInstrumentation.beginExecuteOperation(executeOperationParameters, null) // Retain for test coverage then: notThrown(Exception) } @@ -143,22 +114,52 @@ class MaxQueryDepthInstrumentationTest extends Specification { def query = createQuery(""" {f1: foo {foo {foo {scalar}}} f2: foo { foo {foo {foo {foo{foo{scalar}}}}}} } """) - Boolean test = false + Boolean calledFunction = false Function maxQueryDepthExceededFunction = new Function() { @Override Boolean apply(final QueryDepthInfo queryDepthInfo) { - test = true + calledFunction = true return false } } MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(6, maxQueryDepthExceededFunction) ExecutionInput executionInput = Mock(ExecutionInput) - InstrumentationValidationParameters validationParameters = new InstrumentationValidationParameters(executionInput, query, schema, null) - InstrumentationContext instrumentationContext = maximumQueryDepthInstrumentation.beginValidation(validationParameters) + def executionContext = executionCtx(executionInput, query, schema) + def executeOperationParameters = new InstrumentationExecuteOperationParameters(executionContext) when: - instrumentationContext.onCompleted(null, null) + maximumQueryDepthInstrumentation.beginExecuteOperation(executeOperationParameters, null) then: - test == true + calledFunction notThrown(Exception) } + + def "coercing null variables that are marked as non nullable wont blow up early"() { + + given: + def schema = TestUtil.schema(""" + type Query { + field(arg : String!) : String + } + """) + + MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(6) + def graphQL = GraphQL.newGraphQL(schema).instrumentation(maximumQueryDepthInstrumentation).build() + + when: + def query = ''' + query x($var : String!) { + field(arg : $var) + } + ''' + def executionInput = ExecutionInput.newExecutionInput(query).variables(["var": null]).build() + def er = graphQL.execute(executionInput) + + then: + !er.errors.isEmpty() + } + + static private ExecutionContext executionCtx(ExecutionInput executionInput, Document query, GraphQLSchema schema) { + ExecutionContextBuilder.newExecutionContextBuilder() + .executionInput(executionInput).document(query).graphQLSchema(schema).executionId(ExecutionId.generate()).build() + } } diff --git a/src/test/groovy/graphql/analysis/QueryComplexityCalculatorTest.groovy b/src/test/groovy/graphql/analysis/QueryComplexityCalculatorTest.groovy new file mode 100644 index 0000000000..465c4de598 --- /dev/null +++ b/src/test/groovy/graphql/analysis/QueryComplexityCalculatorTest.groovy @@ -0,0 +1,52 @@ +package graphql.analysis + + +import graphql.TestUtil +import graphql.execution.CoercedVariables +import graphql.language.Document +import graphql.parser.Parser +import spock.lang.Specification + +class QueryComplexityCalculatorTest extends Specification { + + Document createQuery(String query) { + Parser parser = new Parser() + parser.parseDocument(query) + } + + def "can calculator complexity"() { + given: + def schema = TestUtil.schema(""" + type Query{ + foo: Foo + bar: String + } + type Foo { + scalar: String + foo: Foo + } + """) + def query = createQuery(""" + query q { + f2: foo {scalar foo{scalar}} + f1: foo { foo {foo {foo {foo{foo{scalar}}}}}} } + """) + + + when: + FieldComplexityCalculator fieldComplexityCalculator = new FieldComplexityCalculator() { + @Override + int calculate(FieldComplexityEnvironment environment, int childComplexity) { + return environment.getField().name.startsWith("foo") ? 10 : 1 + } + } + QueryComplexityCalculator calculator = QueryComplexityCalculator.newCalculator() + .fieldComplexityCalculator(fieldComplexityCalculator).schema(schema).document(query).variables(CoercedVariables.emptyVariables()) + .build() + def complexityScore = calculator.calculate() + then: + complexityScore == 20 + + + } +} diff --git a/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy b/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy index 95309c2e2e..2ce312c7ce 100644 --- a/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy +++ b/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy @@ -1,6 +1,7 @@ package graphql.analysis import graphql.TestUtil +import graphql.execution.CoercedVariables import graphql.language.Document import graphql.language.Field import graphql.language.NodeUtil @@ -80,7 +81,7 @@ class QueryTransformerTest extends Specification { then: printAstCompact(newDocument) == - "query {root {fooA {midA-modified {leafA} midB {leafB}} fooB {midA-modified {leafA} midB {leafB}}}}" + "{root{fooA{midA-modified{leafA}midB{leafB}}fooB{midA-modified{leafA}midB{leafB}}}}" } def "transform query delete midA nodes"() { @@ -102,7 +103,7 @@ class QueryTransformerTest extends Specification { then: printAstCompact(newDocument) == - "query {root {fooA {midB {leafB}} fooB {midB {leafB}}}}" + "{root{fooA{midB{leafB}}fooB{midB{leafB}}}}" } def "transform query add midA sibling"() { @@ -124,7 +125,7 @@ class QueryTransformerTest extends Specification { then: printAstCompact(newDocument) == - "query {root {fooA {midA {leafA} addedField}}}" + "{root{fooA{midA{leafA}addedField}}}" } def "transform query delete fragment spread and inline fragment"() { @@ -170,7 +171,7 @@ class QueryTransformerTest extends Specification { then: printAstCompact(newDocument) == - "query {root {fooA {midB {leafB}} fooB {midB {leafB}}}} fragment frag on Foo {midA {leafA}}" + "{root{fooA{midB{leafB}}fooB{midB{leafB}}}} fragment frag on Foo {midA{leafA}}" } def "transform query does not traverse named fragments when started from query"() { @@ -253,7 +254,7 @@ class QueryTransformerTest extends Specification { def newFragment = queryTransformer.transform(visitor) then: printAstCompact(newFragment) == - "fragment newFragName on newTypeName {fooA {midA {newChild1 newChild2}}}" + "fragment newFragName on newTypeName {fooA{midA{newChild1 newChild2}}}" } def "transform starting in a interface field"() { @@ -445,7 +446,63 @@ class QueryTransformerTest extends Specification { when: def newNode = queryTransformer.transform(visitor) then: - printAstCompact(newNode) == "{__typename ... on A {aX} ... on B {b}}" + printAstCompact(newNode) == "{__typename ...on A{aX}...on B{b}}" } + + def "can coerce field arguments or not"() { + def sdl = """ + input Test{ x: String!} + type Query{ testInput(input: Test!): String} + type Mutation{ testInput(input: Test!): String} + """ + + def schema = TestUtil.schema(sdl) + + def query = createQuery(''' + mutation a($test: Test!) { + testInput(input: $test) + }''') + + + def fieldArgMap = [:] + def queryVisitorStub = new QueryVisitorStub() { + @Override + void visitField(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { + super.visitField(queryVisitorFieldEnvironment) + fieldArgMap = queryVisitorFieldEnvironment.getArguments() + } + } + + when: + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .build() + .visitPreOrder(queryVisitorStub) + + then: + + fieldArgMap == [input: [x:"X"]] + + when: + fieldArgMap = null + + + def options = QueryTraversalOptions.defaultOptions() + .coerceFieldArguments(false) + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .options(options) + .build() + .visitPreOrder(queryVisitorStub) + + + then: + fieldArgMap == [:] // empty map + } + } diff --git a/src/test/groovy/graphql/analysis/QueryTraversalOptionsTest.groovy b/src/test/groovy/graphql/analysis/QueryTraversalOptionsTest.groovy new file mode 100644 index 0000000000..379c58e820 --- /dev/null +++ b/src/test/groovy/graphql/analysis/QueryTraversalOptionsTest.groovy @@ -0,0 +1,20 @@ +package graphql.analysis + +import spock.lang.Specification + +class QueryTraversalOptionsTest extends Specification { + + def "defaulting works as expected"() { + when: + def options = QueryTraversalOptions.defaultOptions() + + then: + options.isCoerceFieldArguments() + + when: + options = QueryTraversalOptions.defaultOptions().coerceFieldArguments(false) + + then: + !options.isCoerceFieldArguments() + } +} diff --git a/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy b/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy index 7df4a45e00..dbe0b33384 100644 --- a/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy +++ b/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy @@ -1,6 +1,8 @@ package graphql.analysis +import graphql.AssertException import graphql.TestUtil +import graphql.execution.CoercedVariables import graphql.language.ArrayValue import graphql.language.Document import graphql.language.Field @@ -428,7 +430,7 @@ class QueryTraverserTest extends Specification { } - def "test preOrder and postOrder order for fragment definitions"() { + def "test preOrder and postOrder order for fragment definitions and raw variables"() { given: def schema = TestUtil.schema(""" type Query{ @@ -475,6 +477,53 @@ class QueryTraverserTest extends Specification { 1 * visitor.visitFragmentDefinition({ QueryVisitorFragmentDefinitionEnvironment env -> env.fragmentDefinition == fragments["F1"] }) } + def "test preOrder and postOrder order for fragment definitions and coerced variables"() { + given: + def schema = TestUtil.schema(""" + type Query{ + foo: Foo + bar: String + } + type Foo { + subFoo: String + } + """) + def visitor = mockQueryVisitor() + def query = createQuery(""" + { + ...F1 + } + + fragment F1 on Query { + foo { + subFoo + } + } + """) + + def fragments = NodeUtil.getFragmentsByName(query) + + QueryTraverser queryTraversal = QueryTraverser.newQueryTraverser() + .schema(schema) + .root(fragments["F1"]) + .rootParentType(schema.getQueryType()) + .fragmentsByName(fragments) + .coercedVariables(CoercedVariables.emptyVariables()) + .build() + + when: + queryTraversal.visitPreOrder(visitor) + + then: + 1 * visitor.visitFragmentDefinition({ QueryVisitorFragmentDefinitionEnvironment env -> env.fragmentDefinition == fragments["F1"] }) + + when: + queryTraversal.visitPostOrder(visitor) + + then: + 1 * visitor.visitFragmentDefinition({ QueryVisitorFragmentDefinitionEnvironment env -> env.fragmentDefinition == fragments["F1"] }) + } + def "works for mutations()"() { given: def schema = TestUtil.schema(""" @@ -581,6 +630,62 @@ class QueryTraverserTest extends Specification { 'preOrder' | 'visitPreOrder' } + @Unroll + def "traverse a query when a default variable is a list: (#order)"() { + given: + def schema = TestUtil.schema(""" + type Query{ + foo(arg1: [String]): String + } + """) + def visitor = mockQueryVisitor() + def query = createQuery(""" + query myQuery(\$myVar: [String] = ["hello default"]) {foo(arg1: \$myVar)} + """) + QueryTraverser queryTraversal = createQueryTraversal(query, schema, ['myVar': 'hello']) + when: + queryTraversal."$visitFn"(visitor) + + then: + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> + it.field.name == "foo" && + it.arguments == ['arg1': ['hello']] + }) + + where: + order | visitFn + 'postOrder' | 'visitPostOrder' + 'preOrder' | 'visitPreOrder' + } + + @Unroll + def "traverse a query when a default variable is a list and query does not specify variables: (#order)"() { + given: + def schema = TestUtil.schema(""" + type Query{ + foo(arg1: [String]): String + } + """) + def visitor = mockQueryVisitor() + def query = createQuery(""" + query myQuery(\$myVar: [String] = ["hello default"]) {foo(arg1: \$myVar)} + """) + QueryTraverser queryTraversal = createQueryTraversal(query, schema, [:]) + when: + queryTraversal."$visitFn"(visitor) + + then: + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> + it.field.name == "foo" && + it.arguments == ['arg1': ['hello default']] + }) + + where: + order | visitFn + 'postOrder' | 'visitPostOrder' + 'preOrder' | 'visitPreOrder' + } + @Unroll def "simple query (#order)"() { given: @@ -1220,10 +1325,10 @@ class QueryTraverserTest extends Specification { queryTraversal."$visitFn"(visitor) then: - 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "foo" && it.fieldDefinition.type == list(nonNull(catOrDog)) && it.parentType.name == "Query" }) + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "foo" && list(nonNull(catOrDog)).isEqualTo(it.fieldDefinition.type) && it.parentType.name == "Query" }) 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "catName" && it.fieldDefinition.type.name == "String" && it.parentType.name == "Cat" && it.fieldsContainer.name == "Cat" }) 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "dogName" && it.fieldDefinition.type.name == "String" && it.parentType.name == "Dog" && it.fieldsContainer.name == "Dog" }) - 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "id" && it.fieldDefinition.type.name == "String" && it.parentType == nonNull(list(nonNull(bar))) && it.fieldsContainer.name == "Bar" }) + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "id" && it.fieldDefinition.type.name == "String" && nonNull(list(nonNull(bar))).isEqualTo(it.parentType) && it.fieldsContainer.name == "Bar" }) where: order | visitFn @@ -1322,7 +1427,9 @@ class QueryTraverserTest extends Specification { } - def "can select an arbitrary root node"() { + def "can select an arbitrary root node with coerced variables as plain map"() { + // When using an arbitrary root node, there is no variable definition context available. + // Thus the variables must have already been coerced, but may appear as a plain map rather than CoercedVariables given: def schema = TestUtil.schema(""" type Query{ @@ -1362,9 +1469,48 @@ class QueryTraverserTest extends Specification { } + def "can select an arbitrary root node with coerced variables"() { + given: + def schema = TestUtil.schema(""" + type Query{ + foo: Foo + } + type Foo { + subFoo: SubFoo + } + type SubFoo { + id: String + } + """) + def visitor = mockQueryVisitor() + def query = createQuery(""" + {foo { subFoo {id}} } + """) + def subFooAsRoot = query.children[0].children[0].children[0].children[0].children[0] + assert subFooAsRoot instanceof Field + ((Field) subFooAsRoot).name == "subFoo" + def rootParentType = schema.getType("Foo") + QueryTraverser queryTraversal = QueryTraverser.newQueryTraverser() + .schema(schema) + .root(subFooAsRoot) + .rootParentType(rootParentType) + .coercedVariables(CoercedVariables.emptyVariables()) + .fragmentsByName(emptyMap()) + .build() + when: + queryTraversal.visitPreOrder(visitor) + + then: + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> + it.field.name == "subFoo" && it.fieldDefinition.type.name == "SubFoo" + }) + then: + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "id" && it.fieldDefinition.type.name == "String" && it.parentType.name == "SubFoo" }) + + } @Unroll - def "builder doesn't allow ambiguous arguments"() { + def "builder doesn't allow null arguments"() { when: QueryTraverser.newQueryTraverser() .document(document) @@ -1375,7 +1521,7 @@ class QueryTraverserTest extends Specification { .build() then: - thrown(IllegalStateException) + thrown(AssertException) where: document | operationName | root | rootParentType | fragmentsByName @@ -1390,11 +1536,24 @@ class QueryTraverserTest extends Specification { null | "foo" | null | Mock(GraphQLObjectType) | emptyMap() null | "foo" | null | Mock(GraphQLObjectType) | null null | "foo" | null | null | emptyMap() + } + @Unroll + def "builder doesn't allow ambiguous arguments"() { + when: + QueryTraverser.newQueryTraverser() + .document(createQuery("{foo}")) + .operationName("foo") + .root(Field.newField().build()) + .rootParentType(Mock(GraphQLObjectType)) + .fragmentsByName(emptyMap()) + .build() + then: + thrown(IllegalStateException) } - def "typename special field doens't have a fields container and throws exception"() { + def "typename special field doesn't have a fields container and throws exception"() { given: def schema = TestUtil.schema(""" type Query{ @@ -1407,9 +1566,9 @@ class QueryTraverserTest extends Specification { """) QueryTraverser queryTraversal = createQueryTraversal(query, schema) QueryVisitorFieldEnvironment env - 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> - env = it - }) + 1 * visitor.visitField(_) >> { args -> + env = args[0] + } when: queryTraversal.visitPreOrder(visitor) env.typeNameIntrospectionField @@ -1475,7 +1634,7 @@ class QueryTraverserTest extends Specification { 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> it.field.name == "bar" && it.traverserContext.getParentNodes().size() == 5 && it.traverserContext.getParentContext().getParentContext().thisNode() instanceof FragmentDefinition && - ((FragmentDefinition) it.traverserContext.getParentContext().getParentContext().thisNode()).getDirective("myDirective") != null + ((FragmentDefinition) it.traverserContext.getParentContext().getParentContext().thisNode()).hasDirective("myDirective") }) @@ -1529,7 +1688,7 @@ class QueryTraverserTest extends Specification { } - def "test accumulate is returned"() { + def "test accumulate is returned"() { given: def schema = TestUtil.schema(""" type Query{ @@ -1709,5 +1868,98 @@ class QueryTraverserTest extends Specification { 0 * visitor.visitArgument(_) } + def "conditional nodes via variables are defaulted correctly and visited correctly"() { + + given: + def schema = TestUtil.schema(""" + type Query{ + foo: Foo + bar: String + } + type Foo { + subFoo: String + } + """) + def visitor = mockQueryVisitor() + def query = createQuery(''' + query test($var : Boolean = true) { + bar @include(if:$var) + } + ''') + QueryTraverser queryTraversal = createQueryTraversal(query, schema) + + when: "we have an enabled variable conditional node" + queryTraversal.visitPreOrder(visitor) + + then: "it should be visited" + 1 * visitor.visitField({ QueryVisitorFieldEnvironmentImpl it -> + it.fieldDefinition.name == "bar" + }) + + when: "we have an enabled variable conditional node" + query = createQuery(''' + query test($var : Boolean = false) { + bar @include(if:$var) + } + ''') + queryTraversal = createQueryTraversal(query, schema) + queryTraversal.visitPreOrder(visitor) + then: "it should not be visited" + 0 * visitor.visitField(_) + } + + def "can coerce field arguments or not"() { + def sdl = """ + input Test{ x: String!} + type Query{ testInput(input: Test!): String} + type Mutation{ testInput(input: Test!): String} + """ + + def schema = TestUtil.schema(sdl) + + def query = createQuery(''' + mutation a($test: Test!) { + testInput(input: $test) + }''') + + def fieldArgMap = [:] + def queryVisitorStub = new QueryVisitorStub() { + @Override + void visitField(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { + super.visitField(queryVisitorFieldEnvironment) + fieldArgMap = queryVisitorFieldEnvironment.getArguments() + } + } + + when: + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .build() + .visitPreOrder(queryVisitorStub) + + then: + + fieldArgMap == [input: [x:"X"]] + + when: + fieldArgMap = null + + + def options = QueryTraversalOptions.defaultOptions() + .coerceFieldArguments(false) + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .options(options) + .build() + .visitPreOrder(queryVisitorStub) + + + then: + fieldArgMap == [:] // empty map + } } diff --git a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy new file mode 100644 index 0000000000..1a60b35851 --- /dev/null +++ b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy @@ -0,0 +1,949 @@ +package graphql.analysis.values + +import graphql.AssertException +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.DataFetchingEnvironmentImpl +import graphql.schema.GraphQLAppliedDirectiveArgument +import graphql.schema.GraphQLArgument +import graphql.schema.GraphQLEnumType +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLFieldsContainer +import graphql.schema.GraphQLInputObjectField +import graphql.schema.GraphQLInputObjectType +import graphql.schema.GraphQLInputSchemaElement +import graphql.schema.GraphQLList +import graphql.schema.GraphQLNamedSchemaElement +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLScalarType +import graphql.schema.idl.SchemaDirectiveWiring +import graphql.schema.idl.SchemaDirectiveWiringEnvironment +import spock.lang.Specification + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring + +class ValueTraverserTest extends Specification { + + def sdl = """ + type Query { + field(arg1 : ComplexInput, arg2 : ComplexInput, stringArg : String, enumArg : RGB) : String + } + + input ComplexInput { + complexListField : [[ComplexInput!]] + objectField : InnerInput + listField : [Int!] + stringField : String + enumField : RGB + } + + input InnerInput { + innerListField : [Int!] + innerStringField : String + innerEnumField : RGB + } + + + enum RGB { + RED,GREEN,BLUE + } + """ + + def schema = TestUtil.schema(sdl) + + class CountingVisitor implements ValueVisitor { + + Map visits = [:] + + private int bumpCount(String name) { + visits.compute(name, { k, v -> return v == null ? 0 : ++v }) + } + + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, InputElements inputElements) { + bumpCount("scalar") + return coercedValue + } + + @Override + Object visitEnumValue(Object coercedValue, GraphQLEnumType inputType, InputElements inputElements) { + bumpCount("enum") + return coercedValue + } + + @Override + Object visitInputObjectFieldValue(Object coercedValue, GraphQLInputObjectType inputObjectType, GraphQLInputObjectField inputObjectField, InputElements inputElements) { + bumpCount("objectField") + return coercedValue + } + + @Override + Map visitInputObjectValue(Map coercedValue, GraphQLInputObjectType inputObjectType, InputElements inputElements) { + bumpCount("object") + return coercedValue + } + + @Override + List visitListValue(List coercedValue, GraphQLList listInputType, InputElements inputElements) { + bumpCount("list") + return coercedValue + } + } + + def "can traverse and changes nothing at all"() { + + def fieldDef = this.schema.getObjectType("Query").getFieldDefinition("field") + + def innerInput = [ + innerListField : [6, 7, 8], + innerStringField: "Inner", + innerEnumField : "RED", + ] + def complexInput = [ + complexListField: [[[objectField: innerInput, complexListField: [[]], stringField: "There", enumField: "GREEN"]]], + objectField : [innerStringField: "World", innerEnumField: "BLUE"], + listField : [1, 2, 3, 4, 5], + stringField : "Hello", + enumField : "RED", + ] + Map originalValues = [ + arg1 : complexInput, + arg2 : null, + stringArg : "Hello", + enumArg : "RGB", + noFieldData: "wat", + ] + def visitor = new CountingVisitor() + when: + def newValues = ValueTraverser.visitPreOrder(originalValues, fieldDef, visitor) + then: + // nothing changed - its the same object + newValues === originalValues + visitor.visits == ["scalar": 12, "enum": 4, "list": 5, "object": 4, "objectField": 13] + + + when: + def originalDFE = DataFetchingEnvironmentImpl.newDataFetchingEnvironment().fieldDefinition(fieldDef).graphQLSchema(this.schema).arguments(originalValues).build() + def newDFE = ValueTraverser.visitPreOrder(originalDFE, visitor) + + then: + newDFE === originalDFE + + when: + def graphQLArgument = fieldDef.getArgument("arg1") + def newValue = ValueTraverser.visitPreOrder(complexInput, graphQLArgument, visitor) + + then: + complexInput === newValue + } + + def "can change simple values"() { + def fieldDef = this.schema.getObjectType("Query").getFieldDefinition("field") + + def innerInput = [ + innerListField : [6, 7, 8], + innerStringField: "Inner", + innerEnumField : "RED", + ] + def complexInput = [ + complexListField: [[[objectField: innerInput, complexListField: [[]], stringField: "There", enumField: "GREEN"]]], + objectField : [innerStringField: "World", innerEnumField: "BLUE"], + listField : [1, 2, 3, 4, 5], + stringField : "Hello", + enumField : "RED", + ] + Map originalValues = [ + arg1 : complexInput, + arg2 : null, + stringArg : "Hello", + enumArg : "BLUE", + noFieldData: "wat", + ] + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + if (coercedValue instanceof String) { + def val = coercedValue as String + return val.toUpperCase().reverse() + } + if (coercedValue instanceof Number) { + return coercedValue * 1000 + } + return coercedValue; + } + + @Override + Object visitEnumValue(Object coercedValue, GraphQLEnumType inputType, ValueVisitor.InputElements inputElements) { + def val = coercedValue as String + return val.toLowerCase().reverse() + } + } + when: + def newValues = ValueTraverser.visitPreOrder(originalValues, fieldDef, visitor) + then: + // numbers are 1000 greater and strings are upper case reversed and enums are lower cased reversed + newValues == [ + arg1 : [complexListField: [[[ + objectField : [ + innerListField : [6000, 7000, 8000], + innerStringField: "RENNI", + innerEnumField : "der" + ], + complexListField: [[]], + stringField : "EREHT", + enumField : "neerg"]]], + objectField : [innerStringField: "DLROW", innerEnumField: "eulb"], + listField : [1000, 2000, 3000, 4000, 5000], + stringField : "OLLEH", + enumField : "der"], + arg2 : null, + stringArg : "OLLEH", + enumArg : "eulb", + noFieldData: "wat" + ] + } + + def "can change a list midway through "() { + def sdl = """ + type Query { + field(arg : [Int]!) : String + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: [1, 2, 3, 4]] + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + if (coercedValue == 3) { + return 33 + } + return coercedValue + } + } + when: + def newValues = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + then: + newValues == [arg: [1, 2, 33, 4]] + } + + def "can change an object midway through "() { + def sdl = """ + type Query { + field(arg : Input!) : String + } + + input Input { + name : String + age : Int + input : Input + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: + [name: "Tess", age: 42, input: + [name: "Tom", age: 33, input: + [name: "Ted", age: 42]] + ] + ] + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + if (coercedValue == 42) { + return 24 + } + return coercedValue + } + } + when: + def actual = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + + def expected = [arg: + [name: "Tess", age: 24, input: + [name: "Tom", age: 33, input: + [name: "Ted", age: 24] + ] + ] + ] + then: + actual == expected + + + // can change a DFE arguments + when: + def startingDFE = DataFetchingEnvironmentImpl.newDataFetchingEnvironment().fieldDefinition(fieldDef).arguments(argValues).build() + def newDFE = ValueTraverser.visitPreOrder(startingDFE, visitor) + + then: + newDFE.getArguments() == expected + newDFE.getFieldDefinition() == fieldDef + + // can change a single arguments + when: + def newValues = ValueTraverser.visitPreOrder(argValues['arg'], fieldDef.getArgument("arg"), visitor) + + then: + newValues == [name: "Tess", age: 24, input: + [name: "Tom", age: 33, input: + [name: "Ted", age: 24] + ] + ] + } + + def "can visit arguments and change things"() { + def sdl = """ + type Query { + field(arg1 : Input!, arg2 : Input, removeArg : Input) : String + } + + input Input { + name : String + age : Int + input : Input + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [ + arg1 : + [name: "Tess", age: 42], + arg2 : + [name: "Tom", age: 24], + removeArg: + [name: "Gone-ski", age: 99], + ] + def visitor = new ValueVisitor() { + @Override + Object visitArgumentValue(Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { + if (graphQLArgument.name == "arg2") { + return [name: "Harry Potter", age: 54] + } + if (graphQLArgument.name == "removeArg") { + return ABSENCE_SENTINEL + } + return coercedValue + } + } + when: + def actual = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + + def expected = [ + arg1: + [name: "Tess", age: 42], + arg2: + [name: "Harry Potter", age: 54] + ] + then: + actual == expected + + + // can change a DFE arguments + when: + def startingDFE = DataFetchingEnvironmentImpl.newDataFetchingEnvironment().fieldDefinition(fieldDef).arguments(argValues).build() + def newDFE = ValueTraverser.visitPreOrder(startingDFE, visitor) + + then: + newDFE.getArguments() == expected + newDFE.getFieldDefinition() == fieldDef + + // can change a single arguments + when: + def newValues = ValueTraverser.visitPreOrder(argValues['arg2'], fieldDef.getArgument("arg2"), visitor) + + then: + newValues == [name: "Harry Potter", age: 54] + + // catches non sense states + when: + ValueTraverser.visitPreOrder([:], fieldDef.getArgument("removeArg"), visitor) + + then: + thrown(AssertException.class) + } + + def "can handle applied directive arguments"() { + def sdl = """ + directive @d( + arg1 : Input + arg2 : Input + removeArg : Input + ) on FIELD_DEFINITION + + type Query { + field : String @d( + arg1: + {name: "Tom Riddle", age: 42} + arg2: + {name: "Ron Weasley", age: 42} + removeArg: + {name: "Ron Weasley", age: 42} + ) + } + + input Input { + name : String + age : Int + input : Input + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def appliedDirective = fieldDef.getAppliedDirective("d") + def visitor = new ValueVisitor() { + + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + if (coercedValue == "Tom Riddle") { + return "Happy Potter" + } + return coercedValue + } + + @Override + Object visitAppliedDirectiveArgumentValue(Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { + if (graphQLAppliedDirectiveArgument.name == "arg2") { + return [name: "Harry Potter", age: 54] + } + if (graphQLAppliedDirectiveArgument.name == "removeArg") { + return ABSENCE_SENTINEL + } + return coercedValue + } + } + + + def appliedDirectiveArgument = appliedDirective.getArgument("arg1") + when: + def actual = ValueTraverser.visitPreOrder(appliedDirectiveArgument.getValue(), appliedDirectiveArgument, visitor) + + then: + actual == [name: "Happy Potter", age: 42] + + when: + appliedDirectiveArgument = appliedDirective.getArgument("arg2") + actual = ValueTraverser.visitPreOrder(appliedDirectiveArgument.getValue(), appliedDirectiveArgument, visitor) + + then: + actual == [name: "Harry Potter", age: 54] + + + // catches non sense states + when: + appliedDirectiveArgument = appliedDirective.getArgument("removeArg") + ValueTraverser.visitPreOrder(appliedDirectiveArgument.getValue(), appliedDirectiveArgument, visitor) + + then: + thrown(AssertException.class) + } + + def "can handle a null changes"() { + def sdl = """ + type Query { + field(arg : Input!) : String + } + + input Input { + listField : [String!] + objectField : Input + stringField : String + leaveAloneField : String + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: + [ + listField : ["a", "b", "c"], + objectField : [listField: ["a", "b", "c"]], + stringField : "s", + leaveAloneField: "ok" + ] + ] + def visitor = new ValueVisitor() { + + @Override + Object visitInputObjectFieldValue(Object coercedValue, GraphQLInputObjectType inputObjectType, GraphQLInputObjectField inputObjectField, ValueVisitor.InputElements inputElements) { + if (inputObjectField.name == "leaveAloneField") { + return coercedValue + } + return null + } + + } + when: + def actual = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + + def expected = [arg: + [ + listField : null, + objectField : null, + stringField : null, + leaveAloneField: "ok", + ] + ] + then: + actual == expected + } + + def "can turn nulls into actual values"() { + def sdl = """ + type Query { + field(arg : Input) : String + } + + input Input { + listField : [String] + objectField : Input + stringField : String + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: + [ + listField : null, + objectField: null, + stringField: null, + ] + ] + def visitor = new ValueVisitor() { + + @Override + Object visitInputObjectFieldValue(Object coercedValue, GraphQLInputObjectType inputObjectType, GraphQLInputObjectField inputObjectField, ValueVisitor.InputElements inputElements) { + if (inputObjectField.name == "listField") { + return ["a", "b", "c"] + } + if (inputObjectField.name == "objectField") { + return [listField: ["x", "y", "z"], stringField: ["will be overwritten"]] + } + if (inputObjectField.name == "stringField") { + return "stringValue" + } + return coercedValue + } + + } + when: + def actual = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + + def expected = [arg: + [ + listField : ["a", "b", "c"], + objectField: [listField: ["a", "b", "c"], stringField: "stringValue"], + stringField: "stringValue", + ] + ] + then: + actual == expected + } + + + def "can use the sentinel to remove elements"() { + def sdl = """ + + type Query { + field(arg : Input!, arg2 : String) : String + } + + input Input { + name : String + age : Int + extraInput : ExtraInput + listInput : [Int] + } + + input ExtraInput { + name : String + gone : Boolean + age : Int + otherInput : ExtraInput + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg : + [name : "Tess", + age : 42, + extraInput: + [name : "Tom", + age : 33, + gone : true, + otherInput: [ + name: "Ted", + age : 42] + ], + listInput : [1, 2, 3, 4, 5, 6, 7, 8] + ], + arg2: "Gone-ski" + ] + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + def fieldName = inputElements.getLastInputValueDefinition().name + if (fieldName == "age") { + return ABSENCE_SENTINEL + } + if (coercedValue == "Gone-ski") { + return ABSENCE_SENTINEL + } + if (coercedValue == 4 || coercedValue == 7) { + return ABSENCE_SENTINEL + } + return coercedValue + } + + @Override + Object visitInputObjectFieldValue(Object coercedValue, GraphQLInputObjectType inputObjectType, GraphQLInputObjectField inputObjectField, ValueVisitor.InputElements inputElements) { + def fieldName = inputElements.getLastInputValueDefinition().name + if (fieldName == "otherInput") { + return ABSENCE_SENTINEL + } + if (fieldName == "gone") { + return ABSENCE_SENTINEL + } + return coercedValue + } + } + when: + def newValues = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + then: + newValues == [arg: + [name : "Tess", + extraInput: + [name: "Tom"], + listInput : [1, 2, 3, 5, 6, 8] + ] + ] + } + + def "can get give access to all elements and unwrapped elements"() { + def sdl = """ + + type Query { + field(arg : Input! ) : String + } + + input Input { + name : String + age : Int + objectField : [[Input!]]! + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: + [name : "Tess", + age : 42, + objectField: [[ + [ + name : "Tom", + age : 33, + objectField: [[ + [ + name: "Ted", + age : 42 + ] + ]] + ] + ]] + ] + ] + def captureAll = [] + def captureUnwrapped = [] + def last = "" + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + if (coercedValue == "Ted") { + captureAll = inputElements.inputElements.collect { testStr(it) } + captureUnwrapped = inputElements.unwrappedInputElements.collect { testStr(it) } + last = inputElements.lastInputValueDefinition.name + } + return coercedValue + } + + String testStr(GraphQLInputSchemaElement inputSchemaElement) { + if (inputSchemaElement instanceof GraphQLNamedSchemaElement) { + return inputSchemaElement.name + } + return inputSchemaElement.toString() + } + } + when: + def newValues = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + then: + newValues == argValues + last == "name" + captureAll == [ + "arg", + "Input!", + "Input", + "objectField", + "[[Input!]]!", + "[[Input!]]", + "[Input!]", + "Input!", + "Input", + "objectField", + "[[Input!]]!", + "[[Input!]]", + "[Input!]", + "Input!", + "Input", + "name", + "String", + ] + captureUnwrapped == [ + "arg", + "Input", + "objectField", + "Input", + "objectField", + "Input", + "name", + "String", + ] + } + + def "can get access to directives"() { + def sdl = """ + directive @d(name : String!) on ARGUMENT_DEFINITION | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + type Query { + field(arg : Input! @d(name : "argDirective") ) : String + } + + input Input { + name : String @d(name : "nameDirective") + age : Int @d(name : "ageDirective") + input : Input @d(name : "inputDirective") + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: + [name: "Tess", age: 42, input: + [name: "Tom", age: 33, input: + [name: "Ted", age: 42]] + ] + ] + def capture = [] + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + checkDirectives(inputElements) + return coercedValue + } + + + private void checkDirectives(ValueVisitor.InputElements inputElements) { + def lastElement = inputElements.getLastInputValueDefinition() + def directive = lastElement.getAppliedDirective("d") + if (directive != null) { + def elementNames = inputElements.getInputElements().collect( + { it -> + if (it instanceof GraphQLNamedSchemaElement) { + return it.name + } else { + it.toString() + } + }) + .join(":") + def value = directive.getArgument("name").value + capture.add(elementNames + "@" + value) + } + } + } + when: + def newValues = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + then: + newValues == argValues + capture == [ + "arg:Input!:Input:name:String@nameDirective", + "arg:Input!:Input:age:Int@ageDirective", + + "arg:Input!:Input:input:Input:name:String@nameDirective", + "arg:Input!:Input:input:Input:age:Int@ageDirective", + + "arg:Input!:Input:input:Input:input:Input:name:String@nameDirective", + "arg:Input!:Input:input:Input:input:Input:age:Int@ageDirective" + ] + } + + def "can follow directives and change input"() { + def sdl = """ + directive @stripHtml on ARGUMENT_DEFINITION | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + type Query { + field(arg : Input!) : String + } + + input Input { + name : String @stripHtml + age : Int + input : Input + } + """ + def schema = TestUtil.schema(sdl) + + def fieldDef = schema.getObjectType("Query").getFieldDefinition("field") + def argValues = [arg: + [name: "Tess", age: 42, input: + [name: "Tom", age: 33, input: + [name: "Ted", age: 42]] + ] + ] + + def visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + def lastElement = inputElements.getLastInputValueDefinition() + def directive = lastElement.getAppliedDirective("stripHtml") + if (directive != null) { + def v = String.valueOf(coercedValue) + return v.replaceAll(//, '').replaceAll(/<.*?>/, '') + } + return coercedValue + } + + } + when: + def newValues = ValueTraverser.visitPreOrder(argValues, fieldDef, visitor) + then: + newValues == [arg: + [name: "Tess", age: 42, input: + [name: "Tom", age: 33, input: + [name: "Ted", age: 42]] + ] + ] + } + + def "an integration test showing how to change values"() { + def sdl = """ +directive @stripHtml on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION + +type Query { + searchProfile(contains: String! @stripHtml, limit: Int): Profile! +} + +type Mutation { + signUp(input: SignUpInput!): Profile! +} + +input SignUpInput { + username: String! @stripHtml + password: String! + firstName: String! + lastName: String! +} + +type Profile { + username: String! + fullName: String! +} +""" + def schemaDirectiveWiring = new SchemaDirectiveWiring() { + @Override + GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment env) { + GraphQLFieldsContainer fieldsContainer = env.getFieldsContainer() + GraphQLFieldDefinition fieldDefinition = env.getFieldDefinition() + if (! fieldsContainer instanceof GraphQLObjectType) { + return fieldDefinition + } + GraphQLObjectType containingObjectType = env.getFieldsContainer() as GraphQLObjectType + + final DataFetcher originalDF = env.getCodeRegistry().getDataFetcher(containingObjectType, fieldDefinition) + final DataFetcher newDF = { DataFetchingEnvironment originalEnv -> + ValueVisitor visitor = new ValueVisitor() { + @Override + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + def container = inputElements.getLastInputValueDefinition() + if (container.hasAppliedDirective("stripHtml")) { + return stripHtml(coercedValue) + } + return coercedValue + } + + private String stripHtml(coercedValue) { + return String.valueOf(coercedValue) + .replaceAll(//, '') + .replaceAll(/<.*?>/, '') + } + } + DataFetchingEnvironment newEnv = ValueTraverser.visitPreOrder(originalEnv, visitor) + return originalDF.get(newEnv); + } + + env.getCodeRegistry().dataFetcher(containingObjectType, fieldDefinition, newDF) + + return fieldDefinition + } + } + + DataFetcher searchProfileDF = { env -> + def containsArg = env.getArgument("contains") as String + return [username: containsArg] + + } + DataFetcher signUpDF = { DataFetchingEnvironment env -> + def inputArg = env.getArgument("input") as Map + def inputUserName = inputArg["username"] + return [username: inputUserName] + } + def runtimeWiring = newRuntimeWiring().directiveWiring(schemaDirectiveWiring) + .type(newTypeWiring("Query").dataFetcher("searchProfile", searchProfileDF)) + .type(newTypeWiring("Mutation").dataFetcher("signUp", signUpDF)) + .build() + def schema = TestUtil.schema(sdl, runtimeWiring) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = """ + query q { + searchProfile(contains : "someHtml") { + username + } + } + + mutation m { + signUp(input : { + username: "bbakerman" + password: "hunter2" + firstName: "Brad" + lastName: "Baker" + } + ) { + username + } + } +""" + + when: + def executionInput = ExecutionInput.newExecutionInput(query).operationName("q").build() + def er = graphQL.execute(executionInput) + then: + er.errors.isEmpty() + er.data == [searchProfile: [username: "someHtml"]] + + // mutation + when: + executionInput = ExecutionInput.newExecutionInput(query).operationName("m").build() + er = graphQL.execute(executionInput) + then: + er.errors.isEmpty() + er.data == [signUp: [username: "bbakerman"]] + } +} diff --git a/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy b/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy new file mode 100644 index 0000000000..943da3f59d --- /dev/null +++ b/src/test/groovy/graphql/archunit/JMHForkArchRuleTest.groovy @@ -0,0 +1,51 @@ +package graphql.archunit + +import com.tngtech.archunit.core.domain.JavaClass +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.lang.ArchCondition +import com.tngtech.archunit.lang.ConditionEvents +import com.tngtech.archunit.lang.EvaluationResult +import com.tngtech.archunit.lang.SimpleConditionEvent +import org.openjdk.jmh.annotations.Fork +import spock.lang.Specification + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes + +class JMHForkArchRuleTest extends Specification { + + def "JMH benchmarks on classes should not have a fork value greater than 2"() { + given: + def importedClasses = new ClassFileImporter() + .importPackages("benchmark", "performance", "graphql.execution") + + + def rule = classes() + .that().areAnnotatedWith(Fork.class) + .and().areTopLevelClasses() + .should(haveForkValueNotGreaterThan(2)) + + when: + EvaluationResult result = rule.evaluate(importedClasses) + + then: + !result.hasViolation() + + cleanup: + if (result.hasViolation()) { + println result.getFailureReport().toString() + } + } + + private static ArchCondition haveForkValueNotGreaterThan(int maxFork) { + return new ArchCondition("have a @Fork value of at most $maxFork") { + @Override + void check(JavaClass javaClass, ConditionEvents events) { + def forkAnnotation = javaClass.getAnnotationOfType(Fork.class) + if (forkAnnotation.value() > maxFork) { + def message = "Class ${javaClass.name} has a @Fork value of ${forkAnnotation.value()} which is > $maxFork" + events.add(SimpleConditionEvent.violated(javaClass, message)) + } + } + } + } +} \ No newline at end of file diff --git a/src/test/groovy/graphql/archunit/JSpecifyAnnotationsCheck.groovy b/src/test/groovy/graphql/archunit/JSpecifyAnnotationsCheck.groovy new file mode 100644 index 0000000000..95dc0cc435 --- /dev/null +++ b/src/test/groovy/graphql/archunit/JSpecifyAnnotationsCheck.groovy @@ -0,0 +1,381 @@ +package graphql + +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.core.importer.ImportOption +import spock.lang.Specification + +/** + * This test ensures that all public API and experimental API classes + * are properly annotated with JSpecify annotations. + */ +class JSpecifyAnnotationsCheck extends Specification { + + private static final Set JSPECIFY_EXEMPTION_LIST = [ + "graphql.AssertException", + "graphql.Directives", + "graphql.ErrorClassification", + "graphql.ErrorType", + "graphql.ExceptionWhileDataFetching", + "graphql.ExecutionResult", + "graphql.GraphQLContext", + "graphql.GraphQLError", + "graphql.GraphqlErrorBuilder", + "graphql.GraphqlErrorException", + "graphql.ParseAndValidate", + "graphql.ParseAndValidateResult", + "graphql.Scalars", + "graphql.SerializationError", + "graphql.TypeMismatchError", + "graphql.TypeResolutionEnvironment", + "graphql.UnresolvedTypeError", + "graphql.agent.result.ExecutionTrackingResult", + "graphql.analysis.FieldComplexityCalculator", + "graphql.analysis.FieldComplexityEnvironment", + "graphql.analysis.MaxQueryComplexityInstrumentation", + "graphql.analysis.MaxQueryDepthInstrumentation", + "graphql.analysis.QueryComplexityCalculator", + "graphql.analysis.QueryComplexityInfo", + "graphql.analysis.QueryDepthInfo", + "graphql.analysis.QueryReducer", + "graphql.analysis.QueryTransformer", + "graphql.analysis.QueryTraversalOptions", + "graphql.analysis.QueryTraverser", + "graphql.analysis.QueryVisitor", + "graphql.analysis.QueryVisitorFieldArgumentEnvironment", + "graphql.analysis.QueryVisitorFieldArgumentInputValue", + "graphql.analysis.QueryVisitorFieldArgumentValueEnvironment", + "graphql.analysis.QueryVisitorFieldEnvironment", + "graphql.analysis.QueryVisitorFragmentDefinitionEnvironment", + "graphql.analysis.QueryVisitorFragmentSpreadEnvironment", + "graphql.analysis.QueryVisitorInlineFragmentEnvironment", + "graphql.analysis.QueryVisitorStub", + "graphql.analysis.values.ValueTraverser", + "graphql.execution.AbortExecutionException", + "graphql.execution.AsyncExecutionStrategy", + "graphql.execution.AsyncSerialExecutionStrategy", + "graphql.execution.CoercedVariables", + "graphql.execution.DataFetcherExceptionHandlerParameters", + "graphql.execution.DataFetcherExceptionHandlerResult", + "graphql.execution.DefaultValueUnboxer", + "graphql.execution.ExecutionContext", + "graphql.execution.ExecutionId", + "graphql.execution.ExecutionStepInfo", + "graphql.execution.ExecutionStrategyParameters", + "graphql.execution.FetchedValue", + "graphql.execution.FieldValueInfo", + "graphql.execution.InputMapDefinesTooManyFieldsException", + "graphql.execution.MergedSelectionSet", + "graphql.execution.MissingRootTypeException", + "graphql.execution.NonNullableValueCoercedAsNullException", + "graphql.execution.NormalizedVariables", + "graphql.execution.OneOfNullValueException", + "graphql.execution.OneOfTooManyKeysException", + "graphql.execution.ResultNodesInfo", + "graphql.execution.ResultPath", + "graphql.execution.SimpleDataFetcherExceptionHandler", + "graphql.execution.SubscriptionExecutionStrategy", + "graphql.execution.UnknownOperationException", + "graphql.execution.UnresolvedTypeException", + "graphql.execution.conditional.ConditionalNodeDecision", + "graphql.execution.directives.QueryAppliedDirective", + "graphql.execution.directives.QueryAppliedDirectiveArgument", + "graphql.execution.directives.QueryDirectives", + "graphql.execution.incremental.DeferredExecution", + "graphql.execution.instrumentation.ChainedInstrumentation", + "graphql.execution.instrumentation.DocumentAndVariables", + "graphql.execution.instrumentation.NoContextChainedInstrumentation", + "graphql.execution.ResponseMapFactory", + "graphql.execution.instrumentation.SimpleInstrumentation", + "graphql.execution.instrumentation.SimpleInstrumentationContext", + "graphql.execution.instrumentation.SimplePerformantInstrumentation", + "graphql.execution.instrumentation.fieldvalidation.FieldAndArguments", + "graphql.execution.instrumentation.fieldvalidation.FieldValidationEnvironment", + "graphql.execution.instrumentation.fieldvalidation.FieldValidationInstrumentation", + "graphql.execution.instrumentation.fieldvalidation.SimpleFieldValidation", + "graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters", + "graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters", + "graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters", + "graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters", + "graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters", + "graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters", + "graphql.execution.instrumentation.parameters.InstrumentationFieldParameters", + "graphql.execution.instrumentation.parameters.InstrumentationValidationParameters", + "graphql.execution.instrumentation.tracing.TracingInstrumentation", + "graphql.execution.instrumentation.tracing.TracingSupport", + "graphql.execution.preparsed.PreparsedDocumentEntry", + "graphql.execution.preparsed.persisted.ApolloPersistedQuerySupport", + "graphql.execution.preparsed.persisted.InMemoryPersistedQueryCache", + "graphql.execution.preparsed.persisted.PersistedQueryCacheMiss", + "graphql.execution.preparsed.persisted.PersistedQueryIdInvalid", + "graphql.execution.preparsed.persisted.PersistedQueryNotFound", + "graphql.execution.reactive.DelegatingSubscription", + "graphql.execution.reactive.SubscriptionPublisher", + "graphql.extensions.ExtensionsBuilder", + "graphql.incremental.DeferPayload", + "graphql.incremental.DelayedIncrementalPartialResult", + "graphql.incremental.DelayedIncrementalPartialResultImpl", + "graphql.incremental.IncrementalExecutionResult", + "graphql.incremental.IncrementalExecutionResultImpl", + "graphql.incremental.IncrementalPayload", + "graphql.incremental.StreamPayload", + "graphql.introspection.GoodFaithIntrospection", + "graphql.introspection.Introspection", + "graphql.introspection.IntrospectionQuery", + "graphql.introspection.IntrospectionQueryBuilder", + "graphql.introspection.IntrospectionResultToSchema", + "graphql.introspection.IntrospectionWithDirectivesSupport", + "graphql.introspection.IntrospectionWithDirectivesSupport\$DirectivePredicateEnvironment", + "graphql.language.AbstractDescribedNode", + "graphql.language.Argument", + "graphql.language.AstNodeAdapter", + "graphql.language.AstPrinter", + "graphql.language.AstSignature", + "graphql.language.AstSorter", + "graphql.language.AstTransformer", + "graphql.language.Comment", + "graphql.language.Definition", + "graphql.language.DescribedNode", + "graphql.language.Description", + "graphql.language.Directive", + "graphql.language.DirectiveDefinition", + "graphql.language.DirectiveLocation", + "graphql.language.DirectivesContainer", + "graphql.language.Document", + "graphql.language.EnumTypeDefinition", + "graphql.language.EnumTypeExtensionDefinition", + "graphql.language.EnumValueDefinition", + "graphql.language.Field", + "graphql.language.FieldDefinition", + "graphql.language.FragmentDefinition", + "graphql.language.FragmentSpread", + "graphql.language.IgnoredChar", + "graphql.language.IgnoredChars", + "graphql.language.ImplementingTypeDefinition", + "graphql.language.InlineFragment", + "graphql.language.InputObjectTypeDefinition", + "graphql.language.InputObjectTypeExtensionDefinition", + "graphql.language.InputValueDefinition", + "graphql.language.InterfaceTypeDefinition", + "graphql.language.InterfaceTypeExtensionDefinition", + "graphql.language.ListType", + "graphql.language.NamedNode", + "graphql.language.Node", + "graphql.language.NodeChildrenContainer", + "graphql.language.NodeDirectivesBuilder", + "graphql.language.NodeParentTree", + "graphql.language.NodeTraverser", + "graphql.language.NodeVisitor", + "graphql.language.NodeVisitorStub", + "graphql.language.NonNullType", + "graphql.language.ObjectField", + "graphql.language.ObjectTypeDefinition", + "graphql.language.ObjectTypeExtensionDefinition", + "graphql.language.OperationDefinition", + "graphql.language.OperationTypeDefinition", + "graphql.language.PrettyAstPrinter", + "graphql.language.SDLDefinition", + "graphql.language.SDLExtensionDefinition", + "graphql.language.SDLNamedDefinition", + "graphql.language.ScalarTypeDefinition", + "graphql.language.ScalarTypeExtensionDefinition", + "graphql.language.SchemaDefinition", + "graphql.language.SchemaExtensionDefinition", + "graphql.language.Selection", + "graphql.language.SelectionSet", + "graphql.language.SelectionSetContainer", + "graphql.language.SourceLocation", + "graphql.language.Type", + "graphql.language.TypeDefinition", + "graphql.language.TypeKind", + "graphql.language.TypeName", + "graphql.language.UnionTypeDefinition", + "graphql.language.UnionTypeExtensionDefinition", + "graphql.language.VariableDefinition", + "graphql.normalized.ExecutableNormalizedField", + "graphql.normalized.ExecutableNormalizedOperation", + "graphql.normalized.ExecutableNormalizedOperationFactory", + "graphql.normalized.ExecutableNormalizedOperationToAstCompiler", + "graphql.normalized.NormalizedInputValue", + "graphql.normalized.incremental.NormalizedDeferredExecution", + "graphql.normalized.nf.NormalizedDocument", + "graphql.normalized.nf.NormalizedDocumentFactory", + "graphql.normalized.nf.NormalizedField", + "graphql.normalized.nf.NormalizedOperation", + "graphql.normalized.nf.NormalizedOperationToAstCompiler", + "graphql.parser.InvalidSyntaxException", + "graphql.parser.MultiSourceReader", + "graphql.parser.Parser", + "graphql.parser.ParserEnvironment", + "graphql.parser.ParserOptions", + "graphql.relay.Connection", + "graphql.relay.ConnectionCursor", + "graphql.relay.DefaultConnection", + "graphql.relay.DefaultConnectionCursor", + "graphql.relay.DefaultEdge", + "graphql.relay.DefaultPageInfo", + "graphql.relay.Edge", + "graphql.relay.PageInfo", + "graphql.relay.Relay", + "graphql.relay.SimpleListConnection", + "graphql.schema.AsyncDataFetcher", + "graphql.schema.CoercingParseLiteralException", + "graphql.schema.CoercingParseValueException", + "graphql.schema.CoercingSerializeException", + "graphql.schema.DataFetcherFactories", + "graphql.schema.DataFetcherFactoryEnvironment", + "graphql.schema.DataFetchingFieldSelectionSet", + "graphql.schema.DefaultGraphqlTypeComparatorRegistry", + "graphql.schema.DelegatingDataFetchingEnvironment", + "graphql.schema.FieldCoordinates", + "graphql.schema.GraphQLAppliedDirective", + "graphql.schema.GraphQLAppliedDirectiveArgument", + "graphql.schema.GraphQLArgument", + "graphql.schema.GraphQLCodeRegistry", + "graphql.schema.GraphQLCompositeType", + "graphql.schema.GraphQLDirective", + "graphql.schema.GraphQLDirectiveContainer", + "graphql.schema.GraphQLEnumType", + "graphql.schema.GraphQLEnumValueDefinition", + "graphql.schema.GraphQLFieldDefinition", + "graphql.schema.GraphQLFieldsContainer", + "graphql.schema.GraphQLImplementingType", + "graphql.schema.GraphQLInputFieldsContainer", + "graphql.schema.GraphQLInputObjectField", + "graphql.schema.GraphQLInputObjectType", + "graphql.schema.GraphQLInputSchemaElement", + "graphql.schema.GraphQLInputType", + "graphql.schema.GraphQLInputValueDefinition", + "graphql.schema.GraphQLInterfaceType", + "graphql.schema.GraphQLList", + "graphql.schema.GraphQLModifiedType", + "graphql.schema.GraphQLNamedInputType", + "graphql.schema.GraphQLNamedOutputType", + "graphql.schema.GraphQLNamedSchemaElement", + "graphql.schema.GraphQLNamedType", + "graphql.schema.GraphQLNonNull", + "graphql.schema.GraphQLNullableType", + "graphql.schema.GraphQLObjectType", + "graphql.schema.GraphQLOutputType", + "graphql.schema.GraphQLScalarType", + "graphql.schema.GraphQLSchema", + "graphql.schema.GraphQLSchemaElement", + "graphql.schema.GraphQLType", + "graphql.schema.GraphQLTypeReference", + "graphql.schema.GraphQLTypeUtil", + "graphql.schema.GraphQLTypeVisitor", + "graphql.schema.GraphQLTypeVisitorStub", + "graphql.schema.GraphQLUnionType", + "graphql.schema.GraphQLUnmodifiedType", + "graphql.schema.GraphqlElementParentTree", + "graphql.schema.GraphqlTypeComparatorEnvironment", + "graphql.schema.GraphqlTypeComparatorRegistry", + "graphql.schema.InputValueWithState", + "graphql.schema.PropertyDataFetcher", + "graphql.schema.SchemaElementChildrenContainer", + "graphql.schema.SchemaTransformer", + "graphql.schema.SchemaTraverser", + "graphql.schema.SelectedField", + "graphql.schema.StaticDataFetcher", + "graphql.schema.diff.DiffCategory", + "graphql.schema.diff.DiffEvent", + "graphql.schema.diff.DiffLevel", + "graphql.schema.diff.DiffSet", + "graphql.schema.diff.SchemaDiffSet", + "graphql.schema.diff.reporting.CapturingReporter", + "graphql.schema.diff.reporting.ChainedReporter", + "graphql.schema.diff.reporting.PrintStreamReporter", + "graphql.schema.diffing.SchemaGraph", + "graphql.schema.idl.CombinedWiringFactory", + "graphql.schema.idl.DirectiveInfo", + "graphql.schema.idl.MapEnumValuesProvider", + "graphql.schema.idl.NaturalEnumValuesProvider", + "graphql.schema.idl.RuntimeWiring", + "graphql.schema.idl.SchemaDirectiveWiring", + "graphql.schema.idl.SchemaDirectiveWiringEnvironment", + "graphql.schema.idl.SchemaGenerator", + "graphql.schema.idl.SchemaPrinter", + "graphql.schema.idl.TypeRuntimeWiring", + "graphql.schema.idl.errors.SchemaProblem", + "graphql.schema.idl.errors.StrictModeWiringException", + "graphql.schema.transform.FieldVisibilitySchemaTransformation", + "graphql.schema.transform.VisibleFieldPredicateEnvironment", + "graphql.schema.usage.SchemaUsage", + "graphql.schema.usage.SchemaUsageSupport", + "graphql.schema.validation.OneOfInputObjectRules", + "graphql.schema.validation.SchemaValidationErrorClassification", + "graphql.schema.visibility.BlockedFields", + "graphql.schema.visibility.DefaultGraphqlFieldVisibility", + "graphql.schema.visibility.GraphqlFieldVisibility", + "graphql.schema.visibility.NoIntrospectionGraphqlFieldVisibility", + "graphql.schema.visitor.GraphQLSchemaTraversalControl", + "graphql.util.Anonymizer", + "graphql.util.Breadcrumb", + "graphql.util.CyclicSchemaAnalyzer", + "graphql.util.NodeAdapter", + "graphql.util.NodeLocation", + "graphql.util.NodeMultiZipper", + "graphql.util.NodeZipper", + "graphql.util.querygenerator.QueryGenerator", + "graphql.util.querygenerator.QueryGeneratorOptions", + "graphql.util.querygenerator.QueryGeneratorOptions\$QueryGeneratorOptionsBuilder", + "graphql.util.querygenerator.QueryGeneratorResult", + "graphql.util.TraversalControl", + "graphql.util.TraverserContext", + "graphql.util.TreeTransformer", + "graphql.util.TreeTransformerUtil", + "graphql.validation.ValidationError", + "graphql.validation.ValidationErrorClassification", + "graphql.validation.ValidationErrorType", + "graphql.validation.rules.DeferDirectiveLabel", + "graphql.validation.rules.DeferDirectiveOnRootLevel", + "graphql.validation.rules.DeferDirectiveOnValidOperation" + ] as Set + + def "ensure all public API and experimental API classes have @NullMarked annotation"() { + given: + def classes = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + .stream() + .filter { it.isAnnotatedWith("graphql.PublicApi") || it.isAnnotatedWith("graphql.ExperimentalApi") } + .collect() + + when: + def classesMissingAnnotation = classes + .stream() + .filter { !it.isAnnotatedWith("org.jspecify.annotations.NullMarked") && !it.isAnnotatedWith("org.jspecify.annotations.NullUnmarked") } + .map { it.name } + .filter { it -> !JSPECIFY_EXEMPTION_LIST.contains(it) } + .collect() + + then: + if (!classesMissingAnnotation.isEmpty()) { + throw new AssertionError("""The following public API and experimental API classes are missing a JSpecify annotation: +${classesMissingAnnotation.sort().join("\n")} + +Add @NullMarked or @NullUnmarked to these public API classes. See documentation at https://jspecify.dev/docs/user-guide/#nullmarked""") + } + } + + def "exempted classes should not be annotated with @NullMarked or @NullUnmarked"() { + given: + def classes = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + + when: + def annotatedButExempted = classes.stream() + .filter { JSPECIFY_EXEMPTION_LIST.contains(it.name) } + .filter { it.isAnnotatedWith("org.jspecify.annotations.NullMarked") || it.isAnnotatedWith("org.jspecify.annotations.NullUnmarked") } + .map { it.name } + .collect() + + then: + if (!annotatedButExempted.isEmpty()) { + throw new AssertionError("""The following classes are in the JSpecify exemption list but are annotated with @NullMarked or @NullUnmarked: +${annotatedButExempted.sort().join("\n")} + +Please remove them from the exemption list in ${JSpecifyAnnotationsCheck.class.simpleName}.groovy.""") + } + } +} \ No newline at end of file diff --git a/src/test/groovy/graphql/archunit/MapOfUsageTest.groovy b/src/test/groovy/graphql/archunit/MapOfUsageTest.groovy new file mode 100644 index 0000000000..9f6a4471c7 --- /dev/null +++ b/src/test/groovy/graphql/archunit/MapOfUsageTest.groovy @@ -0,0 +1,36 @@ +package graphql.archunit + +import com.tngtech.archunit.core.domain.JavaClasses +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.core.importer.ImportOption +import com.tngtech.archunit.lang.ArchRule +import com.tngtech.archunit.lang.EvaluationResult +import com.tngtech.archunit.lang.syntax.ArchRuleDefinition +import spock.lang.Specification + +class MapOfUsageTest extends Specification { + + private static final JavaClasses importedClasses = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + + def "should not use Map.of()"() { + given: + ArchRule mapOfRule = ArchRuleDefinition.noClasses() + .should() + .callMethod(Map.class, "of") + .because("Map.of() does not guarantee insertion order. Use LinkedHashMapFactory.of() instead for consistent serialization order.") + + when: + EvaluationResult result = mapOfRule.evaluate(importedClasses) + + then: + if (result.hasViolation()) { + println "Map.of() usage detected. Please use LinkedHashMapFactory.of() instead for consistent serialization order:" + result.getFailureReport().getDetails().each { violation -> + println "- ${violation}" + } + } + !result.hasViolation() + } +} \ No newline at end of file diff --git a/src/test/groovy/graphql/archunit/NullabilityAnnotationUsageTest.groovy b/src/test/groovy/graphql/archunit/NullabilityAnnotationUsageTest.groovy new file mode 100644 index 0000000000..ed0b93197b --- /dev/null +++ b/src/test/groovy/graphql/archunit/NullabilityAnnotationUsageTest.groovy @@ -0,0 +1,40 @@ +package graphql.archunit + +import com.tngtech.archunit.core.domain.JavaClasses +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.core.importer.ImportOption +import com.tngtech.archunit.lang.ArchRule +import com.tngtech.archunit.lang.EvaluationResult +import com.tngtech.archunit.lang.syntax.ArchRuleDefinition +import spock.lang.Specification + +class NullabilityAnnotationUsageTest extends Specification { + + private static final JavaClasses importedClasses = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + + def "should only use JSpecify nullability annotations"() { + given: + ArchRule dependencyRule = ArchRuleDefinition.noClasses() + .should() + .dependOnClassesThat() + .resideInAnyPackage( + "javax.annotation", + "org.jetbrains.annotations" + ) + .because("We are using JSpecify nullability annotations only. Please change to use JSpecify.") + + when: + EvaluationResult result = dependencyRule.evaluate(importedClasses) + + then: + if (result.hasViolation()) { + println "We are using JSpecify nullability annotations only. Please change the following to use JSpecify instead:" + result.getFailureReport().getDetails().each { violation -> + println "- ${violation}" + } + } + !result.hasViolation() + } +} \ No newline at end of file diff --git a/src/test/groovy/graphql/cachecontrol/CacheControlTest.groovy b/src/test/groovy/graphql/cachecontrol/CacheControlTest.groovy deleted file mode 100644 index e5a507c5c1..0000000000 --- a/src/test/groovy/graphql/cachecontrol/CacheControlTest.groovy +++ /dev/null @@ -1,118 +0,0 @@ -package graphql.cachecontrol - - -import graphql.ExecutionResultImpl -import graphql.TestUtil -import graphql.execution.ExecutionPath -import graphql.schema.DataFetcher -import spock.lang.Specification - -class CacheControlTest extends Specification { - - def "can build up hints when there is no extensions present"() { - def cc = CacheControl.newCacheControl() - cc.hint(ExecutionPath.parse("/hint/99"), 99) - cc.hint(ExecutionPath.parse("/hint/66"), 66) - cc.hint(ExecutionPath.parse("/hint/33/private"), 33, CacheControl.Scope.PRIVATE) - cc.hint(ExecutionPath.parse("/hint/private"), CacheControl.Scope.PRIVATE) - - def er = ExecutionResultImpl.newExecutionResult().data("data").build() - - when: - def newER = cc.addTo(er) - then: - newER.data == "data" // left alone - newER.extensions == [ - cacheControl: [ - version: 1, - hints : [ - [path: ["hint", "99"], maxAge: 99, scope: "PUBLIC"], - [path: ["hint", "66"], maxAge: 66, scope: "PUBLIC"], - [path: ["hint", "33", "private"], maxAge: 33, scope: "PRIVATE"], - [path: ["hint", "private"], scope: "PRIVATE"], - ] - ] - ] - - } - - def "can build up hints when extensions are present"() { - def cc = CacheControl.newCacheControl() - cc.hint(ExecutionPath.parse("/hint/99"), 99) - cc.hint(ExecutionPath.parse("/hint/66"), 66) - - def startingExtensions = ["someExistingExt": "data"] - - def er = ExecutionResultImpl.newExecutionResult().data("data").extensions(startingExtensions).build() - - when: - def newER = cc.addTo(er) - then: - newER.data == "data" // left alone - newER.extensions.size() == 2 - newER.extensions["someExistingExt"] == "data" - newER.extensions["cacheControl"] == [ - version: 1, - hints : [ - [path: ["hint", "99"], maxAge: 99, scope: "PUBLIC"], - [path: ["hint", "66"], maxAge: 66, scope: "PUBLIC"], - ] - ] - } - - def "integration test of cache control"() { - def sdl = ''' - type Query { - levelA : LevelB - } - - type LevelB { - levelB : LevelC - } - - type LevelC { - levelC : String - } - ''' - - DataFetcher dfA = { env -> - CacheControl cc = env.getContext() - cc.hint(env, 100) - } - DataFetcher dfB = { env -> - CacheControl cc = env.getContext() - cc.hint(env, 999) - } - - DataFetcher dfC = { env -> - CacheControl cc = env.getContext() - cc.hint(env, CacheControl.Scope.PRIVATE) - } - - def graphQL = TestUtil.graphQL(sdl, [ - Query : [levelA: dfA,], - LevelB: [levelB: dfB], - LevelC: [levelC: dfC] - ]).build() - - def cacheControl = CacheControl.newCacheControl() - when: - def er = graphQL.execute({ input -> - input.context(cacheControl) - .query(' { levelA { levelB { levelC } } }') - }) - er = cacheControl.addTo(er) - then: - er.errors.isEmpty() - er.extensions == [ - cacheControl: [ - version: 1, - hints : [ - [path: ["levelA"], maxAge: 100, scope: "PUBLIC"], - [path: ["levelA", "levelB"], maxAge: 999, scope: "PUBLIC"], - [path: ["levelA", "levelB", "levelC"], scope: "PRIVATE"], - ] - ] - ] - } -} diff --git a/src/test/groovy/graphql/collect/ImmutableKitTest.groovy b/src/test/groovy/graphql/collect/ImmutableKitTest.groovy new file mode 100644 index 0000000000..c777211f53 --- /dev/null +++ b/src/test/groovy/graphql/collect/ImmutableKitTest.groovy @@ -0,0 +1,94 @@ +package graphql.collect + +import com.google.common.collect.ImmutableList +import spock.lang.Specification + +class ImmutableKitTest extends Specification { + + def "empty things are empty"() { + expect: + ImmutableKit.emptyMap().size() == 0 + ImmutableKit.emptyList().size() == 0 + ImmutableKit.emptyMap().size() == 0 + } + + def "can map a collections"() { + when: + def outputList = ImmutableKit.map(["quick", "brown", "fox"], { word -> word.reverse() }) + then: + outputList == ["kciuq", "nworb", "xof"] + outputList instanceof ImmutableList + } + + def "can map a collection with nulls"() { + when: + def outputList = ImmutableKit.mapAndDropNulls(["quick", "brown", "NULL", "fox"], { + word -> (word == "NULL") ? null : word.reverse() + }) + then: + outputList == ["kciuq", "nworb", "xof"] + outputList instanceof ImmutableList + } + + def "can add to lists"() { + def list = ["a"] + + when: + list = ImmutableKit.addToList(list, "b") + then: + list == ["a", "b"] + + when: + list = ImmutableKit.addToList(list, "c", "d", "e") + then: + list == ["a", "b", "c", "d", "e"] + } + + def "can add to sets"() { + def set = new HashSet(["a"]) + + when: + set = ImmutableKit.addToSet(set, "b") + then: + set == ["a", "b"] as Set + + when: + set = ImmutableKit.addToSet(set, "c", "d", "e") + then: + set == ["a", "b", "c", "d", "e"] as Set + + when: + set = ImmutableKit.addToSet(set, "c", "d", "e", "f") + then: + set == ["a", "b", "c", "d", "e", "f"] as Set + } + + def "flatMapList works"() { + def listOfLists = [ + ["A", "B"], + ["C"], + ["D", "E"], + ] + when: + def flatList = ImmutableKit.flatMapList(listOfLists) + then: + flatList == ["A", "B", "C", "D", "E",] + } + + def "can filter variable args"() { + when: + def list = ImmutableKit.filterVarArgs({ String s -> s.endsWith("x") }, "a", "b", "ax", "bx", "c") + then: + list == ["ax", "bx"] + + when: + list = ImmutableKit.filterVarArgs({ String s -> s.startsWith("Z") }, "a", "b", "ax", "bx", "c") + then: + list == [] + + when: + list = ImmutableKit.filterVarArgs({ String s -> s.startsWith("x") }) + then: + list == [] + } +} diff --git a/src/test/groovy/graphql/collect/ImmutableMapWithNullValuesTest.groovy b/src/test/groovy/graphql/collect/ImmutableMapWithNullValuesTest.groovy new file mode 100644 index 0000000000..8e32cb063d --- /dev/null +++ b/src/test/groovy/graphql/collect/ImmutableMapWithNullValuesTest.groovy @@ -0,0 +1,34 @@ +package graphql.collect + +import spock.lang.Specification + +class ImmutableMapWithNullValuesTest extends Specification { + + def "can have nulls as keys"() { + when: + def map = ImmutableMapWithNullValues.copyOf([a: null, b: "b"]) + then: + map.get("a") == null + map.get("b") == "b" + } + + def "can be empty"() { + when: + def map = ImmutableMapWithNullValues.copyOf([:]) + then: + map.isEmpty() + map == ImmutableMapWithNullValues.emptyMap() + + when: + map = ImmutableMapWithNullValues.copyOf(ImmutableKit.emptyMap()) + then: + map.isEmpty() + map == ImmutableMapWithNullValues.emptyMap() + + when: + map = ImmutableMapWithNullValues.copyOf(Collections.emptyMap()) + then: + map.isEmpty() + map == ImmutableMapWithNullValues.emptyMap() + } +} diff --git a/src/test/groovy/graphql/config/GraphQLUnusualConfigurationTest.groovy b/src/test/groovy/graphql/config/GraphQLUnusualConfigurationTest.groovy new file mode 100644 index 0000000000..6149e9bb75 --- /dev/null +++ b/src/test/groovy/graphql/config/GraphQLUnusualConfigurationTest.groovy @@ -0,0 +1,212 @@ +package graphql.config + +import graphql.ExecutionInput +import graphql.ExperimentalApi +import graphql.GraphQL +import graphql.GraphQLContext +import graphql.execution.ResponseMapFactory +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys +import graphql.introspection.GoodFaithIntrospection +import graphql.parser.ParserOptions +import graphql.schema.PropertyDataFetcherHelper +import spock.lang.Specification + +import static graphql.parser.ParserOptions.newParserOptions + +class GraphQLUnusualConfigurationTest extends Specification { + + def startingParserOptions = ParserOptions.getDefaultParserOptions() + def startingState = GoodFaithIntrospection.isEnabledJvmWide() + + void cleanup() { + // JVM wide so other tests can be affected + ParserOptions.setDefaultParserOptions(startingParserOptions) + PropertyDataFetcherHelper.setUseNegativeCache(true) + GoodFaithIntrospection.enabledJvmWide(startingState) + } + + def "can set parser configurations"() { + when: + def parserOptions = newParserOptions().maxRuleDepth(99).build() + GraphQL.unusualConfiguration().parsing().setDefaultParserOptions(parserOptions) + def defaultParserOptions = GraphQL.unusualConfiguration().parsing().getDefaultParserOptions() + + then: + defaultParserOptions.getMaxRuleDepth() == 99 + } + + def "can set property data fetcher config"() { + when: + def prevValue = GraphQL.unusualConfiguration().propertyDataFetching().setUseNegativeCache(false) + then: + prevValue + + when: + prevValue = GraphQL.unusualConfiguration().propertyDataFetching().setUseNegativeCache(false) + then: + !prevValue + + when: + prevValue = GraphQL.unusualConfiguration().propertyDataFetching().setUseNegativeCache(true) + then: + !prevValue + } + + def "can set good faith settings"() { + when: + GraphQL.unusualConfiguration().goodFaithIntrospection().enabledJvmWide(false) + + then: + !GraphQL.unusualConfiguration().goodFaithIntrospection().isEnabledJvmWide() + + when: + GraphQL.unusualConfiguration().goodFaithIntrospection().enabledJvmWide(true) + + then: + GraphQL.unusualConfiguration().goodFaithIntrospection().isEnabledJvmWide() + + // showing chaining + when: + GraphQL.unusualConfiguration().goodFaithIntrospection() + .enabledJvmWide(true) + .then().goodFaithIntrospection() + .enabledJvmWide(false) + + then: + !GraphQL.unusualConfiguration().goodFaithIntrospection().isEnabledJvmWide() + } + + def "can set defer configuration on graphql context objects"() { + when: + def graphqlContextBuilder = GraphQLContext.newContext() + GraphQL.unusualConfiguration(graphqlContextBuilder).incrementalSupport().enableIncrementalSupport(true) + + then: + graphqlContextBuilder.build().get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT) == true + GraphQL.unusualConfiguration(graphqlContextBuilder).incrementalSupport().isIncrementalSupportEnabled() + + when: + graphqlContextBuilder = GraphQLContext.newContext() + GraphQL.unusualConfiguration(graphqlContextBuilder).incrementalSupport().enableIncrementalSupport(false) + + then: + graphqlContextBuilder.build().get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT) == false + !GraphQL.unusualConfiguration(graphqlContextBuilder).incrementalSupport().isIncrementalSupportEnabled() + + when: + def graphqlContext = GraphQLContext.newContext().build() + GraphQL.unusualConfiguration(graphqlContext).incrementalSupport().enableIncrementalSupport(true) + + then: + graphqlContext.get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT) == true + GraphQL.unusualConfiguration(graphqlContext).incrementalSupport().isIncrementalSupportEnabled() + + when: + graphqlContext = GraphQLContext.newContext().build() + GraphQL.unusualConfiguration(graphqlContext).incrementalSupport().enableIncrementalSupport(false) + + then: + graphqlContext.get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT) == false + !GraphQL.unusualConfiguration(graphqlContext).incrementalSupport().isIncrementalSupportEnabled() + + when: + graphqlContext = GraphQLContext.newContext().build() + // just to show we we can navigate the DSL + GraphQL.unusualConfiguration(graphqlContext) + .incrementalSupport() + .enableIncrementalSupport(false) + .enableIncrementalSupport(true) + .then().incrementalSupport() + .enableIncrementalSupport(false) + + then: + graphqlContext.get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT) == false + !GraphQL.unusualConfiguration(graphqlContext).incrementalSupport().isIncrementalSupportEnabled() + } + + def "can set data loader chaining config for enablement"() { + when: + def graphqlContextBuilder = GraphQLContext.newContext() + GraphQL.unusualConfiguration(graphqlContextBuilder).dataloaderConfig().enableDataLoaderChaining(true) + + then: + graphqlContextBuilder.build().get(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING) == true + GraphQL.unusualConfiguration(graphqlContextBuilder).dataloaderConfig().isDataLoaderChainingEnabled() + + + when: + def graphqlContext = GraphQLContext.newContext().build() + GraphQL.unusualConfiguration(graphqlContext).dataloaderConfig().enableDataLoaderChaining(true) + + then: + graphqlContext.get(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING) == true + GraphQL.unusualConfiguration(graphqlContext).dataloaderConfig().isDataLoaderChainingEnabled() + } + + def "we can access via the ExecutionInput"() { + when: + def eiBuilder = ExecutionInput.newExecutionInput("query q {f}") + + GraphQL.unusualConfiguration(eiBuilder) + .dataloaderConfig() + .enableDataLoaderChaining(true) + + def ei = eiBuilder.build() + + then: + ei.getGraphQLContext().get(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING) == true + + when: + ei = ExecutionInput.newExecutionInput("query q {f}").build() + + GraphQL.unusualConfiguration(ei) + .dataloaderConfig() + .enableDataLoaderChaining(true) + + then: + ei.getGraphQLContext().get(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING) == true + } + + def "can set response map factory"() { + def rfm1 = new ResponseMapFactory() { + @Override + Map createInsertionOrdered(List keys, List values) { + return null + } + } + + def rfm2 = new ResponseMapFactory() { + @Override + Map createInsertionOrdered(List keys, List values) { + return null + } + } + + when: + def graphqlContextBuilder = GraphQLContext.newContext() + GraphQL.unusualConfiguration(graphqlContextBuilder).responseMapFactory().setFactory(rfm1) + + then: + GraphQL.unusualConfiguration(graphqlContextBuilder).responseMapFactory().getOr(rfm2) == rfm1 + + when: + graphqlContextBuilder = GraphQLContext.newContext() + + then: "can default" + GraphQL.unusualConfiguration(graphqlContextBuilder).responseMapFactory().getOr(rfm2) == rfm2 + + when: + def graphqlContext = GraphQLContext.newContext().build() + GraphQL.unusualConfiguration(graphqlContext).responseMapFactory().setFactory(rfm1) + + then: + GraphQL.unusualConfiguration(graphqlContext).responseMapFactory().getOr(rfm2) == rfm1 + + when: + graphqlContext = GraphQLContext.newContext().build() + + then: "can default" + GraphQL.unusualConfiguration(graphqlContext).responseMapFactory().getOr(rfm2) == rfm2 + + } +} diff --git a/src/test/groovy/graphql/execution/AbortExecutionExceptionTest.groovy b/src/test/groovy/graphql/execution/AbortExecutionExceptionTest.groovy index 64a4cfcdbd..da2c9b8cc4 100644 --- a/src/test/groovy/graphql/execution/AbortExecutionExceptionTest.groovy +++ b/src/test/groovy/graphql/execution/AbortExecutionExceptionTest.groovy @@ -1,10 +1,24 @@ package graphql.execution import graphql.ErrorType +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.GraphQL import graphql.GraphQLError +import graphql.TestUtil +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationContext +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters import graphql.language.SourceLocation +import graphql.validation.ValidationError import spock.lang.Specification +import java.util.concurrent.CompletableFuture + class AbortExecutionExceptionTest extends Specification { class BasicError implements GraphQLError { @@ -26,7 +40,7 @@ class AbortExecutionExceptionTest extends Specification { } } - def "to excution result handling"() { + def "to execution result handling"() { AbortExecutionException e when: e = new AbortExecutionException("No underlying errors") @@ -35,10 +49,73 @@ class AbortExecutionExceptionTest extends Specification { e.toExecutionResult().getErrors()[0].message == "No underlying errors" when: - e = new AbortExecutionException([new BasicError(message:"UnderlyingA"), new BasicError(message:"UnderlyingB")]) + e = new AbortExecutionException([new BasicError(message: "UnderlyingA"), new BasicError(message: "UnderlyingB")]) then: e.toExecutionResult().getErrors().size() == 2 e.toExecutionResult().getErrors()[0].message == "UnderlyingA" e.toExecutionResult().getErrors()[1].message == "UnderlyingB" } + + def "will call instrumentation.instrumentExecutionResult() at the end"() { + def sdl = """ + type Query { + q : Q + } + + type Q { + name : String + } + """ + + + def schema = TestUtil.schema(sdl) + + def throwOnEarlyPhase = true + Instrumentation instrumentation = new SimplePerformantInstrumentation() { + @Override + InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + if (throwOnEarlyPhase) { + throw new AbortExecutionException("early") + } + return super.beginValidation(parameters, state) + } + + @Override + InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + if (!throwOnEarlyPhase) { + throw new AbortExecutionException("later") + } + return super.beginExecuteOperation(parameters, state) + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + def newER = executionResult.transform { it.extensions([extra: "extensions"]) } + return CompletableFuture.completedFuture(newER) + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + + def executionInput = ExecutionInput.newExecutionInput("query q { q {name}}") + .root([q: [name: "nameV"]]) + .build() + + when: + def er = graphQL.execute(executionInput) + + then: + !er.errors.isEmpty() + er.errors[0].message == "early" + er.extensions == [extra: "extensions"] + + when: + throwOnEarlyPhase = false + er = graphQL.execute(executionInput) + + then: + !er.errors.isEmpty() + er.errors[0].message == "later" + er.extensions == [extra: "extensions"] + } } diff --git a/src/test/groovy/graphql/execution/AbsoluteGraphQLErrorTest.groovy b/src/test/groovy/graphql/execution/AbsoluteGraphQLErrorTest.groovy deleted file mode 100644 index da65ae2f28..0000000000 --- a/src/test/groovy/graphql/execution/AbsoluteGraphQLErrorTest.groovy +++ /dev/null @@ -1,183 +0,0 @@ -package graphql.execution - -import graphql.DataFetchingErrorGraphQLError -import graphql.language.Field -import graphql.language.SourceLocation -import spock.lang.Specification - -import static graphql.Scalars.GraphQLString -import static graphql.TestUtil.mergedField -import static graphql.TestUtil.mergedSelectionSet -import static graphql.execution.ExecutionStrategyParameters.newParameters -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition -import static graphql.schema.GraphQLObjectType.newObject - -class AbsoluteGraphQLErrorTest extends Specification { - - def fieldDefinition = newFieldDefinition() - .name("someField") - .type(GraphQLString) - .build() - def objectType = newObject() - .name("Test") - .field(fieldDefinition) - .build() - - def "constructor works as expected"() { - given: - - def field = Field.newField().name("test").sourceLocation(new SourceLocation(4, 5)).build() - - def parameters = newParameters() - .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) - .source(new Object()) - .fields(mergedSelectionSet(["fld": mergedField([Field.newField().build()])])) - .field(mergedField(field)) - .path(ExecutionPath.fromList(["foo", "bar"])) - .build() - - def relativeError = new DataFetchingErrorGraphQLError("blah", ["fld"]) { - @Override - Map getExtensions() { - return ["ext": true] - } - } - - when: - - def error = new AbsoluteGraphQLError(parameters, relativeError) - - then: - - error.getMessage() == "blah" - error.getPath() == ["foo", "bar", "fld"] - error.getLocations().size() == 1 - error.getLocations().get(0).getColumn() == 15 - error.getLocations().get(0).getLine() == 6 - error.getErrorType() == relativeError.getErrorType() - error.getExtensions() == ["ext": true] - } - - def "constructor handles missing path"() { - given: - - def field = Field.newField().name("test").sourceLocation(new SourceLocation(4, 5)).build() - - def parameters = newParameters() - .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) - .source(new Object()) - .fields(mergedSelectionSet(["fld": mergedField(Field.newField().build())])) - .field(mergedField(field)) - .path(ExecutionPath.fromList(["foo", "bar"])) - .build() - - def relativeError = new DataFetchingErrorGraphQLError("blah") - - when: - - def error = new AbsoluteGraphQLError(parameters, relativeError) - - then: - - error.getPath() == ExecutionPath.fromList(["foo", "bar"]).toList() - } - - def "when constructor receives empty path it should return the base field path"() { - given: - - def field = Field.newField().name("test").sourceLocation(new SourceLocation(4, 5)).build() - - def parameters = newParameters() - .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) - .source(new Object()) - .fields(mergedSelectionSet(["fld": mergedField(Field.newField().build())])) - .field(mergedField(field)) - .path(ExecutionPath.fromList(["foo", "bar"])) - .build() - - def relativeError = new DataFetchingErrorGraphQLError("blah") - relativeError.path = [] - - when: - - def error = new AbsoluteGraphQLError(parameters, relativeError) - - then: - - error.getPath() == ["foo", "bar"] - } - - def "constructor handles missing locations as null"() { - given: - - def field = Field.newField().name("test").build() - - def parameters = newParameters() - .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) - .source(new Object()) - .fields(mergedSelectionSet(["fld": mergedField(Field.newField().build())])) - .field(mergedField(field)) - .path(ExecutionPath.fromList(["foo", "bar"])) - .build() - - def relativeError = new DataFetchingErrorGraphQLError("blah") - - when: - - def error = new AbsoluteGraphQLError(parameters, relativeError) - - then: - - error.getLocations() == null - } - - def "when constructor receives empty locations it should return the base field locations"() { - given: - - def expectedSourceLocation = new SourceLocation(1, 2) - def field = Field.newField().name("test").sourceLocation(expectedSourceLocation).build() - - def parameters = newParameters() - .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) - .source(new Object()) - .fields(mergedSelectionSet(["fld": mergedField(Field.newField().build())])) - .field(mergedField(field)) - .path(ExecutionPath.fromList(["foo", "bar"])) - .build() - - def relativeError = new DataFetchingErrorGraphQLError("blah") - relativeError.locations = [] - - when: - def error = new AbsoluteGraphQLError(parameters, relativeError) - - then: - - error.getLocations() == [expectedSourceLocation] - } - - def "constructor transforms multiple source locations"() { - given: - - def field = Field.newField().name("test").sourceLocation(new SourceLocation(4, 5)).build() - - def parameters = newParameters() - .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) - .source(new Object()) - .fields(mergedSelectionSet(["fld": mergedField(Field.newField().build())])) - .field(mergedField(field)) - .path(ExecutionPath.fromList(["foo", "bar"])) - .build() - - def relativeError = new DataFetchingErrorGraphQLError("blah", ["fld"]) - relativeError.locations = [new SourceLocation(1, 5), new SourceLocation(3, 6)] - - when: - - def error = new AbsoluteGraphQLError(parameters, relativeError) - - then: - - error.getLocations() == [new SourceLocation(5, 10), new SourceLocation(7, 11)] - } -} diff --git a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy index 29a6c4b771..0c66a30e18 100644 --- a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy @@ -1,14 +1,21 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ErrorType +import graphql.ExecutionInput import graphql.ExecutionResult +import graphql.GraphQLContext +import graphql.Profiler import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters import graphql.language.Field import graphql.language.OperationDefinition import graphql.parser.Parser import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLSchema import spock.lang.Specification @@ -18,6 +25,7 @@ import java.util.concurrent.CompletionException import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.locks.ReentrantLock +import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT import static graphql.Scalars.GraphQLString import static graphql.TestUtil.mergedField import static graphql.TestUtil.mergedSelectionSet @@ -26,28 +34,47 @@ import static graphql.schema.GraphQLObjectType.newObject import static graphql.schema.GraphQLSchema.newSchema import static org.awaitility.Awaitility.await -class AsyncExecutionStrategyTest extends Specification { +abstract class AsyncExecutionStrategyTest extends Specification { + static boolean incrementalSupport + + def graphqlContextMock = Mock(GraphQLContext) GraphQLSchema schema(DataFetcher dataFetcher1, DataFetcher dataFetcher2) { - GraphQLFieldDefinition.Builder fieldDefinition = newFieldDefinition() - .name("hello") + def queryName = "RootQueryType" + def field1Name = "hello" + def field2Name = "hello2" + + GraphQLFieldDefinition.Builder fieldDefinition1 = newFieldDefinition() + .name(field1Name) .type(GraphQLString) - .dataFetcher(dataFetcher1) GraphQLFieldDefinition.Builder fieldDefinition2 = newFieldDefinition() - .name("hello2") + .name(field2Name) .type(GraphQLString) - .dataFetcher(dataFetcher2) - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field(fieldDefinition) + def field1Coordinates = FieldCoordinates.coordinates(queryName, field1Name) + def field2Coordinates = FieldCoordinates.coordinates(queryName, field2Name) + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(field1Coordinates, dataFetcher1) + .dataFetcher(field2Coordinates, dataFetcher2) + .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryName) + .field(fieldDefinition1) .field(fieldDefinition2) .build() - ).build() + ) + .build() + schema } + def setup() { + graphqlContextMock.get(ENABLE_INCREMENTAL_SUPPORT) >> incrementalSupport + } def "execution is serial if the dataFetchers are blocking"() { given: @@ -76,17 +103,24 @@ class AsyncExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) - .instrumentation(SimpleInstrumentation.INSTANCE) + .instrumentation(SimplePerformantInstrumentation.INSTANCE) .valueUnboxer(ValueUnboxer.DEFAULT) + .graphQLContext(graphqlContextMock) + .executionInput(ei) + .locale(Locale.getDefault()) + .profiler(Profiler.NO_OP) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -115,17 +149,24 @@ class AsyncExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) .valueUnboxer(ValueUnboxer.DEFAULT) - .instrumentation(SimpleInstrumentation.INSTANCE) + .instrumentation(SimplePerformantInstrumentation.INSTANCE) + .locale(Locale.getDefault()) + .graphQLContext(graphqlContextMock) + .executionInput(ei) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) + .profiler(Profiler.NO_OP) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -156,17 +197,24 @@ class AsyncExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) .valueUnboxer(ValueUnboxer.DEFAULT) - .instrumentation(SimpleInstrumentation.INSTANCE) + .instrumentation(SimplePerformantInstrumentation.INSTANCE) + .graphQLContext(graphqlContextMock) + .executionInput(ei) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) + .locale(Locale.getDefault()) + .profiler(Profiler.NO_OP) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -196,17 +244,24 @@ class AsyncExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) - .instrumentation(SimpleInstrumentation.INSTANCE) + .instrumentation(SimplePerformantInstrumentation.INSTANCE) .valueUnboxer(ValueUnboxer.DEFAULT) + .locale(Locale.getDefault()) + .graphQLContext(graphqlContextMock) + .executionInput(ei) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) + .profiler(Profiler.NO_OP) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -235,14 +290,21 @@ class AsyncExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) .valueUnboxer(ValueUnboxer.DEFAULT) - .instrumentation(new SimpleInstrumentation() { + .graphQLContext(graphqlContextMock) + .executionInput(ei) + .locale(Locale.getDefault()) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) + .profiler(Profiler.NO_OP) + .instrumentation(new SimplePerformantInstrumentation() { + @Override - ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { return new ExecutionStrategyInstrumentationContext() { @Override @@ -251,13 +313,11 @@ class AsyncExecutionStrategyTest extends Specification { } @Override - public void onDispatched(CompletableFuture result) { - + void onDispatched() { } @Override - public void onCompleted(ExecutionResult result, Throwable t) { - + void onCompleted(ExecutionResult result, Throwable t) { } } } @@ -267,6 +327,7 @@ class AsyncExecutionStrategyTest extends Specification { .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([new Field('hello')]), 'hello2': mergedField([new Field('hello2')])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -286,3 +347,15 @@ class AsyncExecutionStrategyTest extends Specification { } + +class AsyncExecutionStrategyTestWithIncrementalSupport extends AsyncExecutionStrategyTest { + static { + incrementalSupport = true + } +} + +class AsyncExecutionStrategyTestNoIncrementalSupport extends AsyncExecutionStrategyTest { + static { + incrementalSupport = false + } +} diff --git a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy index 7730f51b98..6089e75a88 100644 --- a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy @@ -1,13 +1,19 @@ package graphql.execution - -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.EngineRunningState +import graphql.ExecutionInput +import graphql.GraphQLContext +import graphql.Profiler +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.language.Field import graphql.language.OperationDefinition import graphql.parser.Parser import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLSchema +import graphql.schema.LightDataFetcher import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -23,27 +29,42 @@ import static graphql.schema.GraphQLSchema.newSchema class AsyncSerialExecutionStrategyTest extends Specification { GraphQLSchema schema(DataFetcher dataFetcher1, DataFetcher dataFetcher2, DataFetcher dataFetcher3) { - GraphQLFieldDefinition.Builder fieldDefinition = newFieldDefinition() - .name("hello") + def queryName = "RootQueryType" + def field1Name = "hello" + def field2Name = "hello2" + def field3Name = "hello3" + + GraphQLFieldDefinition.Builder fieldDefinition1 = newFieldDefinition() + .name(field1Name) .type(GraphQLString) - .dataFetcher(dataFetcher1) GraphQLFieldDefinition.Builder fieldDefinition2 = newFieldDefinition() - .name("hello2") + .name(field2Name) .type(GraphQLString) - .dataFetcher(dataFetcher2) GraphQLFieldDefinition.Builder fieldDefinition3 = newFieldDefinition() - .name("hello3") + .name(field3Name) .type(GraphQLString) - .dataFetcher(dataFetcher3) - GraphQLSchema schema = newSchema().query( - newObject() - .name("RootQueryType") - .field(fieldDefinition) + def field1Coordinates = FieldCoordinates.coordinates(queryName, field1Name) + def field2Coordinates = FieldCoordinates.coordinates(queryName, field2Name) + def field3Coordinates = FieldCoordinates.coordinates(queryName, field3Name) + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(field1Coordinates, dataFetcher1) + .dataFetcher(field2Coordinates, dataFetcher2) + .dataFetcher(field3Coordinates, dataFetcher3) + .build() + + GraphQLSchema schema = newSchema() + .codeRegistry(codeRegistry) + .query(newObject() + .name(queryName) + .field(fieldDefinition1) .field(fieldDefinition2) .field(fieldDefinition3) .build() - ).build() + ) + .build() + schema } @@ -80,17 +101,25 @@ class AsyncSerialExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) - .instrumentation(SimpleInstrumentation.INSTANCE) + .instrumentation(SimplePerformantInstrumentation.INSTANCE) .valueUnboxer(ValueUnboxer.DEFAULT) + .locale(Locale.getDefault()) + .graphQLContext(GraphQLContext.getDefault()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .profiler(Profiler.NO_OP) + .executionInput(ei) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField(new Field('hello')), 'hello2': mergedField(new Field('hello2')), 'hello3': mergedField(new Field('hello3'))])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncSerialExecutionStrategy strategy = new AsyncSerialExecutionStrategy() @@ -106,13 +135,13 @@ class AsyncSerialExecutionStrategyTest extends Specification { @SuppressWarnings("GroovyAssignabilityCheck") def "async serial execution test"() { given: - def df1 = Mock(DataFetcher) + def df1 = Mock(LightDataFetcher) def cf1 = new CompletableFuture() - def df2 = Mock(DataFetcher) + def df2 = Mock(LightDataFetcher) def cf2 = new CompletableFuture() - def df3 = Mock(DataFetcher) + def df3 = Mock(LightDataFetcher) def cf3 = new CompletableFuture() GraphQLSchema schema = schema(df1, df2, df3) @@ -124,17 +153,25 @@ class AsyncSerialExecutionStrategyTest extends Specification { .type(schema.getQueryType()) .build() + def ei = ExecutionInput.newExecutionInput("{}").build() ExecutionContext executionContext = new ExecutionContextBuilder() .graphQLSchema(schema) .executionId(ExecutionId.generate()) .operationDefinition(operation) - .instrumentation(SimpleInstrumentation.INSTANCE) + .instrumentation(SimplePerformantInstrumentation.INSTANCE) .valueUnboxer(ValueUnboxer.DEFAULT) + .locale(Locale.getDefault()) + .graphQLContext(GraphQLContext.getDefault()) + .executionInput(ei) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .profiler(Profiler.NO_OP) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField(new Field('hello')), 'hello2': mergedField(new Field('hello2')), 'hello3': mergedField(new Field('hello3'))])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncSerialExecutionStrategy strategy = new AsyncSerialExecutionStrategy() @@ -144,35 +181,35 @@ class AsyncSerialExecutionStrategyTest extends Specification { then: !result.isDone() - 1 * df1.get(_) >> cf1 - 0 * df2.get(_) >> cf2 - 0 * df3.get(_) >> cf3 + 1 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 when: cf1.complete("world1") then: !result.isDone() - 0 * df1.get(_) >> cf1 - 1 * df2.get(_) >> cf2 - 0 * df3.get(_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 1 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 when: cf2.complete("world2") then: !result.isDone() - 0 * df1.get(_) >> cf1 - 0 * df2.get(_) >> cf2 - 1 * df3.get(_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 1 * df3.get(_, _, _) >> cf3 when: cf3.complete("world3") then: - 0 * df1.get(_) >> cf1 - 0 * df2.get(_) >> cf2 - 0 * df3.get(_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 result.isDone() result.get().data == ['hello': 'world1', 'hello2': 'world2', 'hello3': 'world3'] } diff --git a/src/test/groovy/graphql/execution/AsyncTest.groovy b/src/test/groovy/graphql/execution/AsyncTest.groovy index 1ac9650ef8..2661c4f5fd 100644 --- a/src/test/groovy/graphql/execution/AsyncTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncTest.groovy @@ -1,3 +1,4 @@ +//file:noinspection GroovyVariableNotAssigned package graphql.execution import spock.lang.Specification @@ -5,6 +6,7 @@ import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionException import java.util.function.BiFunction +import java.util.function.Function import static java.util.concurrent.CompletableFuture.completedFuture @@ -13,7 +15,7 @@ class AsyncTest extends Specification { def "eachSequentially test"() { given: def input = ['a', 'b', 'c'] - def cfFactory = Mock(Async.CFFactory) + def cfFactory = Mock(BiFunction) def cf1 = new CompletableFuture() def cf2 = new CompletableFuture() def cf3 = new CompletableFuture() @@ -23,21 +25,21 @@ class AsyncTest extends Specification { then: !result.isDone() - 1 * cfFactory.apply('a', 0, []) >> cf1 + 1 * cfFactory.apply('a', []) >> cf1 when: cf1.complete('x') then: !result.isDone() - 1 * cfFactory.apply('b', 1, ['x']) >> cf2 + 1 * cfFactory.apply('b', ['x']) >> cf2 when: cf2.complete('y') then: !result.isDone() - 1 * cfFactory.apply('c', 2, ['x', 'y']) >> cf3 + 1 * cfFactory.apply('c', ['x', 'y']) >> cf3 when: cf3.complete('z') @@ -47,12 +49,49 @@ class AsyncTest extends Specification { result.get() == ['x', 'y', 'z'] } + def "eachSequentially polymorphic test"() { + given: + def input = ['a', 'b', 'c', 'd'] + def cfFactory = Mock(BiFunction) + def cf1 = new CompletableFuture() + def v2 = 'y' + def cf3 = new CompletableFuture() + + when: + def result = Async.eachSequentially(input, cfFactory) + + then: + !result.isDone() + 1 * cfFactory.apply('a', []) >> cf1 + + when: + cf1.complete('x') + + then: + !result.isDone() + 1 * cfFactory.apply('b', ['x']) >> v2 + + when: + + then: + !result.isDone() + 1 * cfFactory.apply('c', ['x', 'y']) >> cf3 + + when: + cf3.complete(null) // null valued CFS are allowed + + then: + 1 * cfFactory.apply('d', ['x', 'y', null]) >> null // nulls are allowed as values + result.isDone() + result.get() == ['x', 'y', null, null] + } + def "eachSequentially propagates exception"() { given: def input = ['a', 'b', 'c'] - def cfFactory = Mock(Async.CFFactory) - cfFactory.apply('a', 0, _) >> completedFuture("x") - cfFactory.apply('b', 1, _) >> { + def cfFactory = Mock(BiFunction) + cfFactory.apply('a', _) >> completedFuture("x") + cfFactory.apply('b', _) >> { def cf = new CompletableFuture<>() cf.completeExceptionally(new RuntimeException("some error")) cf @@ -74,9 +113,9 @@ class AsyncTest extends Specification { def "eachSequentially catches factory exception"() { given: def input = ['a', 'b', 'c'] - def cfFactory = Mock(Async.CFFactory) - cfFactory.apply('a', 0, _) >> completedFuture("x") - cfFactory.apply('b', 1, _) >> { throw new RuntimeException("some error") } + def cfFactory = Mock(BiFunction) + cfFactory.apply('a', _) >> completedFuture("x") + cfFactory.apply('b', _) >> { throw new RuntimeException("some error") } when: def result = Async.eachSequentially(input, cfFactory) @@ -94,10 +133,10 @@ class AsyncTest extends Specification { def "each works for mapping function"() { given: def input = ['a', 'b', 'c'] - def cfFactory = Mock(BiFunction) - cfFactory.apply('a', 0) >> completedFuture('x') - cfFactory.apply('b', 1) >> completedFuture('y') - cfFactory.apply('c', 2) >> completedFuture('z') + def cfFactory = Mock(Function) + cfFactory.apply('a') >> completedFuture('x') + cfFactory.apply('b') >> completedFuture('y') + cfFactory.apply('c') >> completedFuture('z') when: @@ -108,19 +147,70 @@ class AsyncTest extends Specification { result.get() == ['x', 'y', 'z'] } - def "each with mapping function propagates factory exception"() { + def "each works for mapping function with polymorphic values"() { given: def input = ['a', 'b', 'c'] - def cfFactory = Mock(BiFunction) + def cfFactory = Mock(Function) + cfFactory.apply('a') >> completedFuture('x') + cfFactory.apply('b') >> 'y' + cfFactory.apply('c') >> completedFuture('z') when: def result = Async.each(input, cfFactory) then: - 1 * cfFactory.apply('a', 0) >> completedFuture('x') - 1 * cfFactory.apply('b', 1) >> { throw new RuntimeException('some error') } - 1 * cfFactory.apply('c', 2) >> completedFuture('z') + result.isDone() + result.get() == ['x', 'y', 'z'] + } + + def "eachPolymorphic works for mapping function with polymorphic values"() { + given: + def input = ['a', 'b', 'c'] + def cfFactory = Mock(Function) + cfFactory.apply('a') >> completedFuture('x') + cfFactory.apply('b') >> 'y' + cfFactory.apply('c') >> completedFuture('z') + + + when: + def result = Async.eachPolymorphic(input, cfFactory) + + then: + result instanceof CompletableFuture + (result as CompletableFuture).isDone() + (result as CompletableFuture).get() == ['x', 'y', 'z'] + } + + def "eachPolymorphic works for mapping function with materialised values"() { + given: + def input = ['a', 'b', 'c'] + def cfFactory = Mock(Function) + cfFactory.apply('a') >> 'x' + cfFactory.apply('b') >> 'y' + cfFactory.apply('c') >> 'z' + + + when: + def result = Async.eachPolymorphic(input, cfFactory) + + then: + result instanceof List + result == ['x', 'y', 'z'] + } + + def "each with mapping function propagates factory exception"() { + given: + def input = ['a', 'b', 'c'] + def cfFactory = Mock(Function) + + when: + def result = Async.each(input, cfFactory) + + then: + 1 * cfFactory.apply('a') >> completedFuture('x') + 1 * cfFactory.apply('b') >> { throw new RuntimeException('some error') } + 1 * cfFactory.apply('c') >> completedFuture('z') result.isCompletedExceptionally() Throwable exception result.exceptionally({ e -> @@ -130,15 +220,205 @@ class AsyncTest extends Specification { exception.getCause().getMessage() == "some error" } - def "each works for list of futures "() { - given: - completedFuture('x') + + def "can wait on objects of cfs or both"() { + when: + def asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.add(completedFuture("0")) + asyncBuilder.add(completedFuture("1")) + asyncBuilder.addObject("2") + asyncBuilder.addObject("3") + asyncBuilder.add(completedFuture("4")) + + def list = asyncBuilder.await().join() + + then: + list == ["0", "1", "2", "3", "4"] when: - def result = Async.each([completedFuture('x'), completedFuture('y'), completedFuture('z')]) + asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.add(completedFuture("0")) + asyncBuilder.add(completedFuture("1")) + asyncBuilder.add(completedFuture("2")) + asyncBuilder.add(completedFuture("3")) + asyncBuilder.add(completedFuture("4")) + + list = asyncBuilder.await().join() then: - result.isDone() - result.get() == ['x', 'y', 'z'] + list == ["0", "1", "2", "3", "4"] + + when: + asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.addObject("0") + asyncBuilder.addObject("1") + asyncBuilder.addObject("2") + asyncBuilder.addObject("3") + asyncBuilder.addObject("4") + + list = asyncBuilder.await().join() + + then: + list == ["0", "1", "2", "3", "4"] + + when: "it has a mix of CFs and objects" + asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.addObject("0") + asyncBuilder.addObject("1") + asyncBuilder.add(completedFuture("2")) + asyncBuilder.addObject("3") + asyncBuilder.addObject(completedFuture("4")) + + list = asyncBuilder.await().join() + + then: + list == ["0", "1", "2", "3", "4"] + } + + def "can wait on objects of cfs or both with empty or single values"() { + when: + def asyncBuilder = Async.ofExpectedSize(0) + def list = asyncBuilder.await().join() + + then: + list == [] + + when: + asyncBuilder = Async.ofExpectedSize(1) + asyncBuilder.add(completedFuture("A")) + list = asyncBuilder.await().join() + + then: + list == ["A"] + + when: + asyncBuilder = Async.ofExpectedSize(1) + asyncBuilder.addObject(completedFuture("A")) + list = asyncBuilder.await().join() + + then: + list == ["A"] + + when: + asyncBuilder = Async.ofExpectedSize(1) + asyncBuilder.addObject("A") + list = asyncBuilder.await().join() + + then: + list == ["A"] + } + + def "await polymorphic works as expected"() { + + when: + def asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.add(completedFuture("0")) + asyncBuilder.add(completedFuture("1")) + asyncBuilder.addObject("2") + asyncBuilder.addObject("3") + asyncBuilder.add(completedFuture("4")) + + def awaited = asyncBuilder.awaitPolymorphic() + + then: + awaited instanceof CompletableFuture + joinOrMaterialized(awaited) == ["0", "1", "2", "3", "4"] + + when: + asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.addObject(completedFuture("0")) + asyncBuilder.addObject(completedFuture("1")) + asyncBuilder.addObject(completedFuture("2")) + asyncBuilder.addObject(completedFuture("3")) + asyncBuilder.addObject(completedFuture("4")) + + awaited = asyncBuilder.awaitPolymorphic() + + then: + awaited instanceof CompletableFuture + joinOrMaterialized(awaited) == ["0", "1", "2", "3", "4"] + + when: + asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.addObject("0") + asyncBuilder.addObject("1") + asyncBuilder.addObject("2") + asyncBuilder.addObject("3") + asyncBuilder.addObject("4") + + awaited = asyncBuilder.awaitPolymorphic() + + then: + !(awaited instanceof CompletableFuture) + joinOrMaterialized(awaited) == ["0", "1", "2", "3", "4"] + + when: + asyncBuilder = Async.ofExpectedSize(0) + + awaited = asyncBuilder.awaitPolymorphic() + + then: + !(awaited instanceof CompletableFuture) + joinOrMaterialized(awaited) == [] + + when: + asyncBuilder = Async.ofExpectedSize(1) + asyncBuilder.addObject("A") + + awaited = asyncBuilder.awaitPolymorphic() + + then: + !(awaited instanceof CompletableFuture) + joinOrMaterialized(awaited) == ["A"] + + when: + asyncBuilder = Async.ofExpectedSize(1) + asyncBuilder.addObject(completedFuture("A")) + + awaited = asyncBuilder.awaitPolymorphic() + + then: + awaited instanceof CompletableFuture + joinOrMaterialized(awaited) == ["A"] + } + + def "await polymorphic works as expected with nulls"() { + + when: + def asyncBuilder = Async.ofExpectedSize(5) + asyncBuilder.add(completedFuture("0")) + asyncBuilder.add(completedFuture(null)) + asyncBuilder.addObject("2") + asyncBuilder.addObject(null) + asyncBuilder.add(completedFuture("4")) + + def awaited = asyncBuilder.awaitPolymorphic() + + then: + awaited instanceof CompletableFuture + joinOrMaterialized(awaited) == ["0", null, "2", null, "4"] + } + + def "toCompletableFutureOrMaterializedObject tested"() { + def x = "x" + def cf = completedFuture(x) + + when: + def object = Async.toCompletableFutureOrMaterializedObject(x) + then: + object == x + + when: + object = Async.toCompletableFutureOrMaterializedObject(cf) + then: + object == cf + } + + Object joinOrMaterialized(Object awaited) { + if (awaited instanceof CompletableFuture) { + return ((CompletableFuture) awaited).join() + } else { + return awaited + } } } diff --git a/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java b/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java index 65b98c8653..c110f04947 100644 --- a/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java +++ b/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java @@ -22,11 +22,11 @@ public BreadthFirstExecutionTestStrategy() { public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { MergedSelectionSet fields = parameters.getFields(); - Map fetchedValues = new LinkedHashMap<>(); + Map fetchedValues = new LinkedHashMap<>(); // first fetch every value for (String fieldName : fields.keySet()) { - FetchedValue fetchedValue = fetchField(executionContext, parameters, fields, fieldName); + Object fetchedValue = fetchField(executionContext, parameters, fields, fieldName); fetchedValues.put(fieldName, fetchedValue); } @@ -34,9 +34,9 @@ public CompletableFuture execute(ExecutionContext executionCont Map results = new LinkedHashMap<>(); for (String fieldName : fetchedValues.keySet()) { MergedField currentField = fields.getSubField(fieldName); - FetchedValue fetchedValue = fetchedValues.get(fieldName); + Object fetchedValue = fetchedValues.get(fieldName); - ExecutionPath fieldPath = parameters.getPath().segment(fieldName); + ResultPath fieldPath = parameters.getPath().segment(fieldName); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); @@ -51,19 +51,19 @@ public CompletableFuture execute(ExecutionContext executionCont return CompletableFuture.completedFuture(new ExecutionResultImpl(results, executionContext.getErrors())); } - private FetchedValue fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, MergedSelectionSet fields, String fieldName) { + private Object fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, MergedSelectionSet fields, String fieldName) { MergedField currentField = fields.getSubField(fieldName); - ExecutionPath fieldPath = parameters.getPath().segment(fieldName); + ResultPath fieldPath = parameters.getPath().segment(fieldName); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); - return fetchField(executionContext, newParameters).join(); + return Async.toCompletableFuture(fetchField(executionContext, newParameters)).join(); } - private void completeValue(ExecutionContext executionContext, Map results, String fieldName, FetchedValue fetchedValue, ExecutionStrategyParameters newParameters) { - ExecutionResult resolvedResult = completeField(executionContext, newParameters, fetchedValue).getFieldValue().join(); - results.put(fieldName, resolvedResult != null ? resolvedResult.getData() : null); + private void completeValue(ExecutionContext executionContext, Map results, String fieldName, Object fetchedValue, ExecutionStrategyParameters newParameters) { + Object resolvedResult = completeField(executionContext, newParameters, fetchedValue).getFieldValueFuture().join(); + results.put(fieldName, resolvedResult); } } diff --git a/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java b/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java index d4156c1702..54b5e57898 100644 --- a/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java +++ b/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java @@ -27,33 +27,33 @@ public BreadthFirstTestStrategy() { @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - Map fetchedValues = fetchFields(executionContext, parameters); + Map fetchedValues = fetchFields(executionContext, parameters); return completeFields(executionContext, parameters, fetchedValues); } - private Map fetchFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + private Map fetchFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedSelectionSet fields = parameters.getFields(); - Map> fetchFutures = new LinkedHashMap<>(); + Map> fetchFutures = new LinkedHashMap<>(); // first fetch every value for (String fieldName : fields.keySet()) { ExecutionStrategyParameters newParameters = newParameters(parameters, fields, fieldName); - CompletableFuture fetchFuture = fetchField(executionContext, newParameters); + CompletableFuture fetchFuture = Async.toCompletableFuture(fetchField(executionContext, newParameters)); fetchFutures.put(fieldName, fetchFuture); } // now wait for all fetches to finish together via this join allOf(fetchFutures.values()).join(); - Map fetchedValues = new LinkedHashMap<>(); + Map fetchedValues = new LinkedHashMap<>(); fetchFutures.forEach((k, v) -> fetchedValues.put(k, v.join())); return fetchedValues; } - private CompletableFuture completeFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Map fetchedValues) { + private CompletableFuture completeFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Map fetchedValues) { MergedSelectionSet fields = parameters.getFields(); // then for every fetched value, complete it, breath first @@ -61,10 +61,10 @@ private CompletableFuture completeFields(ExecutionContext execu for (String fieldName : fetchedValues.keySet()) { ExecutionStrategyParameters newParameters = newParameters(parameters, fields, fieldName); - FetchedValue fetchedValue = fetchedValues.get(fieldName); + Object fetchedValue = fetchedValues.get(fieldName); try { - ExecutionResult resolvedResult = completeField(executionContext, newParameters, fetchedValue).getFieldValue().join(); - results.put(fieldName, resolvedResult != null ? resolvedResult.getData() : null); + Object resolvedResult = completeField(executionContext, newParameters, fetchedValue).getFieldValueFuture().join(); + results.put(fieldName, resolvedResult); } catch (NonNullableFieldWasNullException e) { assertNonNullFieldPrecondition(e); results = null; @@ -76,14 +76,14 @@ private CompletableFuture completeFields(ExecutionContext execu private ExecutionStrategyParameters newParameters(ExecutionStrategyParameters parameters, MergedSelectionSet fields, String fieldName) { MergedField currentField = fields.getSubField(fieldName); - ExecutionPath fieldPath = parameters.getPath().segment(fieldName); + ResultPath fieldPath = parameters.getPath().segment(fieldName); return parameters .transform(builder -> builder.field(currentField).path(fieldPath)); } public static CompletableFuture> allOf(final Collection> futures) { - CompletableFuture[] cfs = futures.toArray(new CompletableFuture[futures.size()]); + CompletableFuture[] cfs = futures.toArray(new CompletableFuture[0]); return CompletableFuture.allOf(cfs) .thenApply(vd -> futures.stream() diff --git a/src/test/groovy/graphql/execution/ConditionalNodesTest.groovy b/src/test/groovy/graphql/execution/ConditionalNodesTest.groovy index 55ea94e844..3b75b05b0b 100644 --- a/src/test/groovy/graphql/execution/ConditionalNodesTest.groovy +++ b/src/test/groovy/graphql/execution/ConditionalNodesTest.groovy @@ -1,27 +1,64 @@ package graphql.execution -import graphql.Directives +import graphql.ExecutionInput +import graphql.GraphQLContext +import graphql.TestUtil +import graphql.execution.conditional.ConditionalNodeDecision +import graphql.execution.conditional.ConditionalNodeDecisionEnvironment +import graphql.execution.conditional.ConditionalNodes import graphql.language.Argument import graphql.language.BooleanValue import graphql.language.Directive +import graphql.language.Field +import graphql.language.NodeUtil +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment import spock.lang.Specification class ConditionalNodesTest extends Specification { - def "should include false for skip = true"() { given: def variables = new LinkedHashMap() ConditionalNodes conditionalNodes = new ConditionalNodes() - conditionalNodes.valuesResolver = Mock(ValuesResolver) - def argument = Argument.newArgument("if", new BooleanValue(true)).build() - def directives = [Directive.newDirective().name("skip").arguments([argument]).build()] + def directives = directive("skip", ifArg(true)) + + expect: + !conditionalNodes.shouldInclude(mkField(directives), variables, null, GraphQLContext.getDefault()) + } + + def "should include true for skip = false"() { + given: + def variables = new LinkedHashMap() + ConditionalNodes conditionalNodes = new ConditionalNodes() - conditionalNodes.valuesResolver.getArgumentValues(Directives.SkipDirective.getArguments(), [argument], variables) >> ["if": true] + def directives = directive("skip", ifArg(false)) expect: - !conditionalNodes.shouldInclude(variables, directives) + conditionalNodes.shouldInclude(mkField(directives), variables, null, GraphQLContext.getDefault()) + } + + def "should include false for include = false"() { + given: + def variables = new LinkedHashMap() + ConditionalNodes conditionalNodes = new ConditionalNodes() + + def directives = directive("include", ifArg(false)) + + expect: + !conditionalNodes.shouldInclude(mkField(directives), variables, null, GraphQLContext.getDefault()) + } + + def "should include true for include = true"() { + given: + def variables = new LinkedHashMap() + ConditionalNodes conditionalNodes = new ConditionalNodes() + + def directives = directive("include", ifArg(true)) + + expect: + conditionalNodes.shouldInclude(mkField(directives), variables, null, GraphQLContext.getDefault()) } def "no directives means include"() { @@ -30,7 +67,160 @@ class ConditionalNodesTest extends Specification { ConditionalNodes conditionalNodes = new ConditionalNodes() expect: - conditionalNodes.shouldInclude(variables, []) + conditionalNodes.shouldInclude(mkField([]), variables, null, GraphQLContext.getDefault()) + } + + + def "allows a custom implementation to check conditional nodes"() { + given: + def variables = ["x": "y"] + def graphQLSchema = TestUtil.schema("type Query { f : String} ") + ConditionalNodes conditionalNodes = new ConditionalNodes() + + def graphQLContext = GraphQLContext.getDefault() + + def directives = directive("featureFlag", ifArg(true)) + def field = mkField(directives) + + def called = false + ConditionalNodeDecision conditionalDecision = new ConditionalNodeDecision() { + @Override + boolean shouldInclude(ConditionalNodeDecisionEnvironment env) { + called = true + assert env.variables.toMap() == variables + assert env.directivesContainer == field + assert env.graphQlSchema == graphQLSchema + assert env.graphQLContext.get("assert") != null + return false + } + } + graphQLContext.put(ConditionalNodeDecision.class, conditionalDecision) + graphQLContext.put("assert", true) + expect: + + !conditionalNodes.shouldInclude(field, variables, graphQLSchema, graphQLContext) + called == true + } + + def "integration test showing conditional nodes can be custom included"() { + + def sdl = """ + + directive @featureFlag(flagName: String!) repeatable on FIELD + + type Query { + in : String + out : String + pet : Pet + } + + type Pet { + name: String + favouriteSnack: String + } + """ + DataFetcher df = { DataFetchingEnvironment env -> env.getFieldDefinition().name } + def graphQL = TestUtil.graphQL(sdl, [ + Query: ["in": df, "out": df, "pet": (DataFetcher) { [ : ] } ], + Pet: ["name": df, "favouriteSnack": df]]).build() + ConditionalNodeDecision customDecision = new ConditionalNodeDecision() { + @Override + boolean shouldInclude(ConditionalNodeDecisionEnvironment env) { + + Directive foundDirective = NodeUtil.findNodeByName(env.getDirectives(), "featureFlag") + if (foundDirective != null) { + + def arguments = env.getGraphQlSchema().getDirective("featureFlag") + .getArguments() + Map argumentValues = ValuesResolver.getArgumentValues( + arguments, foundDirective.getArguments(), + env.variables, env.graphQLContext, Locale.getDefault()) + Object flagName = argumentValues.get("flagName") + return String.valueOf(flagName) == "ON" + } + return true + } + } + + def contextMap = [:] + contextMap.put(ConditionalNodeDecision.class, customDecision) + + when: + def ei = ExecutionInput.newExecutionInput() + .graphQLContext(contextMap) + .query(""" + query q { + in + out @featureFlag(flagName : "OFF") + } + """ + ).build() + def er = graphQL.execute(ei) + + then: + er["data"] == ["in": "in"] + + when: + ei = ExecutionInput.newExecutionInput() + .graphQLContext(contextMap) + .query(""" + query q { + in + out @featureFlag(flagName : "ON") + } + """ + ).build() + er = graphQL.execute(ei) + + then: + er["data"] == ["in": "in", "out": "out"] + + when: + ei = ExecutionInput.newExecutionInput() + .graphQLContext(contextMap) + .query(''' + query vars_should_work($v : String!) { + in + out @featureFlag(flagName : $v) + } + ''' + ) + .variables([v: "ON"]) + .build() + er = graphQL.execute(ei) + + then: + er["data"] == ["in": "in", "out": "out"] + + // A test for fields below the top level + when: + ei = ExecutionInput.newExecutionInput() + .graphQLContext(contextMap) + .query(""" + query q { + in + pet { + name + favouriteSnack @featureFlag(flagName : "OFF") + } + } + """ + ).build() + er = graphQL.execute(ei) + + then: + er["data"] == ["in": "in", "pet": ["name": "name"]] + } + + private ArrayList directive(String name, Argument argument) { + [Directive.newDirective().name(name).arguments([argument]).build()] + } + + private Argument ifArg(Boolean b) { + Argument.newArgument("if", new BooleanValue(b)).build() + } + Field mkField(List directives) { + return Field.newField("name").directives(directives).build() } } diff --git a/src/test/groovy/graphql/execution/DataFetcherExceptionHandlerTest.groovy b/src/test/groovy/graphql/execution/DataFetcherExceptionHandlerTest.groovy index 296cf0e47f..0587dc4e8a 100644 --- a/src/test/groovy/graphql/execution/DataFetcherExceptionHandlerTest.groovy +++ b/src/test/groovy/graphql/execution/DataFetcherExceptionHandlerTest.groovy @@ -1,13 +1,17 @@ package graphql.execution import graphql.ErrorType -import graphql.ExecutionInput +import graphql.GraphQL import graphql.GraphQLError import graphql.TestUtil import graphql.language.SourceLocation import graphql.schema.DataFetcher import spock.lang.Specification +import java.util.concurrent.CompletableFuture + +import static graphql.ExecutionInput.newExecutionInput + class DataFetcherExceptionHandlerTest extends Specification { class CustomError implements GraphQLError { @@ -35,11 +39,7 @@ class DataFetcherExceptionHandlerTest extends Specification { } } - def "integration test to prove custom error handle can be made"() { - DataFetcherExceptionHandler handler = { - params -> DataFetcherExceptionHandlerResult.newResult().error(new CustomError("The thing went " + params.getException().getMessage(), params.getSourceLocation())).build() - } - + private static GraphQL mkTestingGraphQL(DataFetcherExceptionHandler handler) { def dataFetchers = [ Query: [field: { env -> throw new RuntimeException("BANG") } as DataFetcher] ] @@ -51,10 +51,102 @@ class DataFetcherExceptionHandlerTest extends Specification { ''', dataFetchers) .queryExecutionStrategy(new AsyncExecutionStrategy(handler)) .build() + graphQL + } + + def "integration test to prove custom error handle can be made"() { + DataFetcherExceptionHandler handler = new DataFetcherExceptionHandler() { + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { + def msg = "The thing went " + handlerParameters.getException().getMessage() + return CompletableFuture.completedFuture( + DataFetcherExceptionHandlerResult.newResult().error(new CustomError(msg, handlerParameters.getSourceLocation())).build() + ) + } + } + + GraphQL graphQL = mkTestingGraphQL(handler) when: - def result = graphQL.execute(ExecutionInput.newExecutionInput().query(' { field }')) + def result = graphQL.execute(newExecutionInput().query(' { field }')) then: !result.errors.isEmpty() result.errors[0].message == "The thing went BANG" } + + + def "integration test to prove an async custom error handle can be made"() { + DataFetcherExceptionHandler handler = new DataFetcherExceptionHandler() { + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters params) { + def msg = "The thing went " + params.getException().getMessage() + def result = DataFetcherExceptionHandlerResult.newResult().error(new CustomError(msg, params.getSourceLocation())).build() + return CompletableFuture.supplyAsync({ -> result }) + } + } + + GraphQL graphQL = mkTestingGraphQL(handler) + + when: + def result = graphQL.execute(newExecutionInput().query(' { field }')) + then: + !result.errors.isEmpty() + result.errors[0].message == "The thing went BANG" + } + + def "if an exception handler itself throws an exception than that is handled"() { + DataFetcherExceptionHandler handler = new DataFetcherExceptionHandler() { + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { + throw new RuntimeException("The handler itself went BANG!") + } + } + + GraphQL graphQL = mkTestingGraphQL(handler) + + when: + def result = graphQL.execute(newExecutionInput().query(' { field }')) + then: + !result.errors.isEmpty() + result.errors[0].message.contains("The handler itself went BANG!") + } + + def "if an async exception handler itself throws an exception than that is handled"() { + DataFetcherExceptionHandler handler = new DataFetcherExceptionHandler() { + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { + throw new RuntimeException("The handler itself went BANG!") + } + } + + GraphQL graphQL = mkTestingGraphQL(handler) + + when: + def result = graphQL.execute(newExecutionInput().query(' { field }')) + then: + !result.errors.isEmpty() + result.errors[0].message.contains("The handler itself went BANG!") + } + + + def "multiple errors can be returned in a handler"() { + DataFetcherExceptionHandler handler = new DataFetcherExceptionHandler() { + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters params) { + def result = DataFetcherExceptionHandlerResult.newResult() + for (int i = 0; i < 5; i++) { + def msg = "$i The thing went " + params.getException().getMessage() + result.error(new CustomError(msg, params.getSourceLocation())) + } + return CompletableFuture.supplyAsync({ -> result.build() }) + } + } + + GraphQL graphQL = mkTestingGraphQL(handler) + + when: + def result = graphQL.execute(newExecutionInput().query(' { field }')) + + then: + result.errors.size() == 5 + } } diff --git a/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy b/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy index 732c401df6..07318afa75 100644 --- a/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy +++ b/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.GraphQLError import graphql.InvalidSyntaxError import graphql.validation.ValidationError import graphql.validation.ValidationErrorType @@ -7,7 +8,7 @@ import spock.lang.Specification class DataFetcherResultTest extends Specification { - def error1 = new ValidationError(ValidationErrorType.DuplicateOperationName) + def error1 = ValidationError.newValidationError().validationErrorType(ValidationErrorType.DuplicateOperationName).build() def error2 = new InvalidSyntaxError([], "Boo") def "basic building"() { @@ -37,26 +38,147 @@ class DataFetcherResultTest extends Specification { result.hasErrors() } - def "map relative is off by default"() { + def "clearErrors can be called in a builder"() { when: - def result = DataFetcherResult.newResult().build() + def builder = DataFetcherResult.newResult() + .errors([error1, error2]) + then: + builder.hasErrors() + + when: + builder.clearErrors() + then: + !builder.hasErrors() + + when: + def result = builder.build() then: - !result.isMapRelativeErrors() + !result.hasErrors() + } + + def "can set extensions"() { when: - result = DataFetcherResult.newResult().mapRelativeErrors(true).build() + def dfr = DataFetcherResult.newResult() + .extensions([x: "y"]).build() + + then: + dfr.getExtensions() == [x : "y"] + + when: + dfr = DataFetcherResult.newResult() + .data("x") + .build() + + then: + dfr.getExtensions() == null + + } + + def "mapping works"() { + when: + def original = DataFetcherResult.newResult().data("hello") + .errors([error1]).localContext("world") + .extensions([x: "y"]).build() + def result = original.map({ data -> data.length() }) then: - result.isMapRelativeErrors() + result.getData() == 5 + result.getLocalContext() == "world" + result.getExtensions() == [x: "y"] + result.getErrors() == [error1] } - def "transforming"() { + def "transforming works"() { when: def original = DataFetcherResult.newResult().data("hello") - .errors([error1]).localContext("world").build() + .errors([error1]).localContext("world") + .extensions([x: "y"]).build() def result = original.transform({ builder -> builder.error(error2) }) then: result.getData() == "hello" result.getLocalContext() == "world" + result.getExtensions() == [x : "y"] + result.getErrors() == [error1, error2] + + when: + result = result.transform({ builder -> builder.extensions(a : "b") }) + then: + result.getData() == "hello" + result.getLocalContext() == "world" + result.getExtensions() == [a : "b"] result.getErrors() == [error1, error2] } + + def "implements equals/hashCode for matching results"() { + when: + def firstResult = toDataFetcherResult(first) + def secondResult = toDataFetcherResult(second) + + then: + firstResult == secondResult + firstResult.hashCode() == secondResult.hashCode() + + where: + first | second + [data: "A string"] | [data: "A string"] + [data: 5] | [data: 5] + [data: ["a", "b"]] | [data: ["a", "b"]] + [errors: [error("An error")]] | [errors: [error("An error")]] + [data: "A value", errors: [error("An error")]] | [data: "A value", errors: [error("An error")]] + [data: "A value", localContext: 5] | [data: "A value", localContext: 5] + [data: "A value", errors: [error("An error")], localContext: 5] | [data: "A value", errors: [error("An error")], localContext: 5] + [data: "A value", extensions: ["key": "value"]] | [data: "A value", extensions: ["key": "value"]] + [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "value"]] | [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "value"]] + } + + def "implements equals/hashCode for different results"() { + when: + def firstResult = toDataFetcherResult(first) + def secondResult = toDataFetcherResult(second) + + then: + firstResult != secondResult + firstResult.hashCode() != secondResult.hashCode() + + where: + first | second + [data: "A string"] | [data: "A different string"] + [data: 5] | [data: "not 5"] + [data: ["a", "b"]] | [data: ["a", "c"]] + [errors: [error("An error")]] | [errors: [error("A different error")]] + [data: "A value", errors: [error("An error")]] | [data: "A different value", errors: [error("An error")]] + [data: "A value", localContext: 5] | [data: "A value", localContext: 1] + [data: "A value", errors: [error("An error")], localContext: 5] | [data: "A value", errors: [error("A different error")], localContext: 5] + [data: "A value", extensions: ["key": "value"]] | [data: "A value", extensions: ["key", "different value"]] + [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "value"]] | [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "different value"]] + } + + private static DataFetcherResult toDataFetcherResult(Map resultFields) { + def resultBuilder = DataFetcherResult.newResult(); + resultFields.forEach { key, value -> + if (value != null) { + switch (key) { + case "data": + resultBuilder.data(value) + break; + case "errors": + resultBuilder.errors(value as List); + break; + case "localContext": + resultBuilder.localContext(value); + break; + case "extensions": + resultBuilder.extensions(value as Map); + break; + } + } + } + return resultBuilder.build(); + } + + private static GraphQLError error(String message) { + return GraphQLError.newError() + .message(message) + .build(); + } } diff --git a/src/test/groovy/graphql/execution/DefaultResponseMapFactoryTest.groovy b/src/test/groovy/graphql/execution/DefaultResponseMapFactoryTest.groovy new file mode 100644 index 0000000000..f8ea921bad --- /dev/null +++ b/src/test/groovy/graphql/execution/DefaultResponseMapFactoryTest.groovy @@ -0,0 +1,42 @@ +package graphql.execution + +import spock.lang.Specification + +class DefaultResponseMapFactoryTest extends Specification { + + def "no keys"() { + given: + var sut = new DefaultResponseMapFactory() + + when: + var result = sut.createInsertionOrdered(List.of(), List.of()) + + then: + result.isEmpty() + result instanceof LinkedHashMap + } + + def "1 key"() { + given: + var sut = new DefaultResponseMapFactory() + + when: + var result = sut.createInsertionOrdered(List.of("name"), List.of("Mario")) + + then: + result == ["name": "Mario"] + result instanceof LinkedHashMap + } + + def "2 keys"() { + given: + var sut = new DefaultResponseMapFactory() + + when: + var result = sut.createInsertionOrdered(List.of("name", "age"), List.of("Mario", 18)) + + then: + result == ["name": "Mario", "age": 18] + result instanceof LinkedHashMap + } +} diff --git a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy index e6ddeca809..2512cac1b8 100644 --- a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy @@ -1,6 +1,7 @@ package graphql.execution -import graphql.cachecontrol.CacheControl + +import graphql.GraphQLContext import graphql.execution.instrumentation.Instrumentation import graphql.language.Document import graphql.language.FragmentDefinition @@ -12,55 +13,187 @@ import spock.lang.Specification class ExecutionContextBuilderTest extends Specification { + Instrumentation instrumentation = Mock(Instrumentation) + ExecutionStrategy queryStrategy = Mock(ExecutionStrategy) + ExecutionStrategy mutationStrategy = Mock(ExecutionStrategy) + ExecutionStrategy subscriptionStrategy = Mock(ExecutionStrategy) + GraphQLSchema schema = Mock(GraphQLSchema) + def executionId = ExecutionId.generate() + def context = "context" + def graphQLContext = GraphQLContext.newContext().build() + def root = "root" + Document document = new Parser().parseDocument("query myQuery(\$var: String){...MyFragment} fragment MyFragment on Query{foo}") + def operation = document.definitions[0] as OperationDefinition + def fragment = document.definitions[1] as FragmentDefinition + def dataLoaderRegistry = new DataLoaderRegistry() + def mockDataLoaderDispatcherStrategy = Mock(DataLoaderDispatchStrategy) def "builds the correct ExecutionContext"() { - given: - ExecutionContextBuilder executionContextBuilder = new ExecutionContextBuilder() - - Instrumentation instrumentation = Mock(Instrumentation) - executionContextBuilder.instrumentation(instrumentation) - - ExecutionStrategy queryStrategy = Mock(ExecutionStrategy) - executionContextBuilder.queryStrategy(queryStrategy) - - ExecutionStrategy mutationStrategy = Mock(ExecutionStrategy) - executionContextBuilder.mutationStrategy(mutationStrategy) + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .context(context) // Retain deprecated builder for test coverage + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .variables([var: 'value']) // Retain deprecated builder for test coverage + .dataLoaderRegistry(dataLoaderRegistry) + .dataLoaderDispatcherStrategy(mockDataLoaderDispatcherStrategy) + .build() - ExecutionStrategy subscriptionStrategy = Mock(ExecutionStrategy) - executionContextBuilder.subscriptionStrategy(subscriptionStrategy) + then: + executionContext.executionId == executionId + executionContext.instrumentation == instrumentation + executionContext.graphQLSchema == schema + executionContext.queryStrategy == queryStrategy + executionContext.mutationStrategy == mutationStrategy + executionContext.subscriptionStrategy == subscriptionStrategy + executionContext.root == root + executionContext.context == context // Retain deprecated method for test coverage + executionContext.graphQLContext == graphQLContext + executionContext.getCoercedVariables().toMap() == [var: 'value'] + executionContext.getFragmentsByName() == [MyFragment: fragment] + executionContext.operationDefinition == operation + executionContext.dataLoaderRegistry == dataLoaderRegistry + executionContext.dataLoaderDispatcherStrategy == mockDataLoaderDispatcherStrategy + } - GraphQLSchema schema = Mock(GraphQLSchema) - executionContextBuilder.graphQLSchema(schema) + def "builds the correct ExecutionContext with coerced variables"() { + given: + def coercedVariables = CoercedVariables.of([var: 'value']) - def executionId = ExecutionId.generate() - executionContextBuilder.executionId(executionId) + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .coercedVariables(coercedVariables) + .dataLoaderRegistry(dataLoaderRegistry) + .build() - def context = "context" - executionContextBuilder.context(context) + then: + executionContext.executionId == executionId + executionContext.instrumentation == instrumentation + executionContext.graphQLSchema == schema + executionContext.queryStrategy == queryStrategy + executionContext.mutationStrategy == mutationStrategy + executionContext.subscriptionStrategy == subscriptionStrategy + executionContext.root == root + executionContext.graphQLContext == graphQLContext + executionContext.coercedVariables == coercedVariables + executionContext.getFragmentsByName() == [MyFragment: fragment] + executionContext.operationDefinition == operation + executionContext.dataLoaderRegistry == dataLoaderRegistry + } - def root = "root" - executionContextBuilder.root(root) + def "builds the correct ExecutionContext, if both variables and coercedVariables are set, latest value set takes precedence"() { + given: + def coercedVariables = CoercedVariables.of([var: 'value']) - Document document = new Parser().parseDocument("query myQuery(\$var: String){...MyFragment} fragment MyFragment on Query{foo}") - def operation = document.definitions[0] as OperationDefinition - def fragment = document.definitions[1] as FragmentDefinition - executionContextBuilder.operationDefinition(operation) + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .coercedVariables(coercedVariables) + .dataLoaderRegistry(dataLoaderRegistry) + .build() - executionContextBuilder.fragmentsByName([MyFragment: fragment]) + then: + executionContext.executionId == executionId + executionContext.instrumentation == instrumentation + executionContext.graphQLSchema == schema + executionContext.queryStrategy == queryStrategy + executionContext.mutationStrategy == mutationStrategy + executionContext.subscriptionStrategy == subscriptionStrategy + executionContext.root == root + executionContext.graphQLContext == graphQLContext + executionContext.coercedVariables == coercedVariables + executionContext.getFragmentsByName() == [MyFragment: fragment] + executionContext.operationDefinition == operation + executionContext.dataLoaderRegistry == dataLoaderRegistry + } - def variables = Collections.emptyMap() - executionContextBuilder.variables(variables) + def "transform works and copies values with coerced variables"() { + given: + def oldCoercedVariables = CoercedVariables.emptyVariables() + def executionContextOld = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .coercedVariables(oldCoercedVariables) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .build() - executionContextBuilder.variables([var: 'value']) + when: + def coercedVariables = CoercedVariables.of([var: 'value']) + def executionContext = executionContextOld.transform(builder -> builder + .coercedVariables(coercedVariables)) - def dataLoaderRegistry = new DataLoaderRegistry() - executionContextBuilder.dataLoaderRegistry(dataLoaderRegistry) + then: + executionContext.executionId == executionId + executionContext.instrumentation == instrumentation + executionContext.graphQLSchema == schema + executionContext.queryStrategy == queryStrategy + executionContext.mutationStrategy == mutationStrategy + executionContext.subscriptionStrategy == subscriptionStrategy + executionContext.root == root + executionContext.graphQLContext == graphQLContext + executionContext.coercedVariables == coercedVariables + executionContext.getFragmentsByName() == [MyFragment: fragment] + executionContext.operationDefinition == operation + executionContext.dataLoaderRegistry == dataLoaderRegistry + } - def cacheControl = CacheControl.newCacheControl() - executionContextBuilder.cacheControl(cacheControl) + def "transform copies values, if both variables and coercedVariables set, latest value set takes precedence"() { + given: + def oldCoercedVariables = CoercedVariables.emptyVariables() + def executionContextOld = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .coercedVariables(oldCoercedVariables) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .build() when: - def executionContext = executionContextBuilder.build() + def coercedVariables = CoercedVariables.of([var: 'value']) + def executionContext = executionContextOld.transform(builder -> builder + .coercedVariables(coercedVariables)) then: executionContext.executionId == executionId @@ -70,11 +203,68 @@ class ExecutionContextBuilderTest extends Specification { executionContext.mutationStrategy == mutationStrategy executionContext.subscriptionStrategy == subscriptionStrategy executionContext.root == root - executionContext.context == context - executionContext.variables == [var: 'value'] + executionContext.graphQLContext == graphQLContext + executionContext.coercedVariables == coercedVariables executionContext.getFragmentsByName() == [MyFragment: fragment] executionContext.operationDefinition == operation executionContext.dataLoaderRegistry == dataLoaderRegistry - executionContext.cacheControl == cacheControl } + + def "transform copies dispatcher"() { + given: + def oldCoercedVariables = CoercedVariables.emptyVariables() + def executionContextOld = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .coercedVariables(oldCoercedVariables) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .dataLoaderDispatcherStrategy(DataLoaderDispatchStrategy.NO_OP) + .build() + + when: + def executionContext = executionContextOld + .transform(builder -> builder + .dataLoaderDispatcherStrategy(mockDataLoaderDispatcherStrategy)) + + then: + executionContext.getDataLoaderDispatcherStrategy() == mockDataLoaderDispatcherStrategy + } + + def "can detect operation type"() { + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .operationDefinition(OperationDefinition.newOperationDefinition().operation(opType).build()) + .build() + + then: + executionContext.isQueryOperation() == isQuery + executionContext.isMutationOperation() == isMutation + executionContext.isSubscriptionOperation() == isSubscription + + where: + opType | isQuery | isMutation | isSubscription + OperationDefinition.Operation.QUERY | true | false | false + OperationDefinition.Operation.MUTATION | false | true | false + OperationDefinition.Operation.SUBSCRIPTION | false | false | true + } + } diff --git a/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy b/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy index 94cbbf300f..9fc34114a5 100644 --- a/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy @@ -37,7 +37,6 @@ class ExecutionStepInfoTest extends Specification { def interfaceType = GraphQLInterfaceType.newInterface().name("Interface") .field(field1Def) - .typeResolver({ env -> null }) .build() def fieldType = GraphQLObjectType.newObject() @@ -50,7 +49,6 @@ class ExecutionStepInfoTest extends Specification { .field(newFieldDefinition().name("rootField1").type(fieldType)) .build() - def "basic hierarchy"() { given: def rootTypeInfo = newExecutionStepInfo().type(rootType).build() @@ -76,7 +74,7 @@ class ExecutionStepInfoTest extends Specification { nonNullFieldTypeInfo.parent.type == rootType nonNullFieldTypeInfo.isNonNullType() - listTypeInfo.getUnwrappedNonNullType() == list(fieldType) + list(fieldType).isEqualTo(listTypeInfo.getUnwrappedNonNullType()) listTypeInfo.hasParent() listTypeInfo.parent.type == rootType listTypeInfo.isListType() @@ -192,7 +190,7 @@ class ExecutionStepInfoTest extends Specification { executionTypeInfos[0].path.toString() == "/hero" (executionTypeInfos[0].type as GraphQLObjectType).name == "User" executionTypeInfos[0].field.getName() == "hero" - executionTypeInfos[0].parent.path == ExecutionPath.rootPath() + executionTypeInfos[0].parent.path == ResultPath.rootPath() (executionTypeInfos[0].parent.type as GraphQLObjectType).name == "Query" executionTypeInfos[0].arguments == [id: "1234"] executionTypeInfos[0].getArgument("id") == "1234" @@ -229,7 +227,7 @@ class ExecutionStepInfoTest extends Specification { def transformed = executionStepInfo.transform({ builder -> builder }) then: - transformed.getFieldContainer() == executionStepInfo.getFieldContainer() + transformed.getObjectType() == executionStepInfo.getObjectType() } def "step info for list of lists of abstract type"() { diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyEquivalenceTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyEquivalenceTest.groovy index 8fbd75fd13..93e58e3aa6 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyEquivalenceTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyEquivalenceTest.groovy @@ -6,8 +6,6 @@ import graphql.StarWarsSchema import spock.lang.Specification import spock.lang.Unroll -import java.util.concurrent.ForkJoinPool - /** * This allows the testing of different execution strategies that provide the same results given the same schema, * and queries and results @@ -27,8 +25,7 @@ class ExecutionStrategyEquivalenceTest extends Specification { name } } - """ - : [ + """: [ hero: [ name: 'R2-D2' ] @@ -46,8 +43,7 @@ class ExecutionStrategyEquivalenceTest extends Specification { } } } - """ - : [ + """: [ hero: [ id : '2001', name : 'R2-D2', @@ -73,8 +69,7 @@ class ExecutionStrategyEquivalenceTest extends Specification { name } } - """ - : [ + """: [ human: [ name: 'Luke Skywalker' ] @@ -93,8 +88,7 @@ class ExecutionStrategyEquivalenceTest extends Specification { name } } - """ - : [ + """: [ luke: [ name: 'Luke Skywalker' @@ -132,16 +126,12 @@ class ExecutionStrategyEquivalenceTest extends Specification { where: - strategyType | strategyUnderTest | expectedQueriesAndResults - "async" | new AsyncExecutionStrategy() | standardQueriesAndResults() - "asyncSerial" | new AsyncSerialExecutionStrategy() | standardQueriesAndResults() - "breadthFirst" | new BreadthFirstExecutionTestStrategy() | standardQueriesAndResults() - "executorService" | executorServiceStrategy() | standardQueriesAndResults() - "breadthFirst" | new BreadthFirstTestStrategy() | standardQueriesAndResults() + strategyType | strategyUnderTest | expectedQueriesAndResults + "async" | new AsyncExecutionStrategy() | standardQueriesAndResults() + "asyncSerial" | new AsyncSerialExecutionStrategy() | standardQueriesAndResults() + "breadthFirst" | new BreadthFirstExecutionTestStrategy() | standardQueriesAndResults() + "breadthFirst" | new BreadthFirstTestStrategy() | standardQueriesAndResults() } - def executorServiceStrategy() { - new ExecutorServiceExecutionStrategy(ForkJoinPool.commonPool()) - } } diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyErrorsTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyErrorsTest.groovy new file mode 100644 index 0000000000..55b6afb6cb --- /dev/null +++ b/src/test/groovy/graphql/execution/ExecutionStrategyErrorsTest.groovy @@ -0,0 +1,133 @@ +package graphql.execution + +import graphql.ExceptionWhileDataFetching +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.SerializationError +import graphql.TestUtil +import graphql.TypeMismatchError +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationContext +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters +import graphql.schema.DataFetcher +import spock.lang.Specification + +/** + * A test of errors that can happen inside a ES + */ +class ExecutionStrategyErrorsTest extends Specification { + + def "can capture certain errors"() { + def sdl = ''' + type Query { + notAList : [String] + notAFloat : Float + notAnProperObject : ImproperObject + } + + + type ImproperObject { + name : String + diceyListCall : [DiceyCall!]! + diceyListCallAbort : [DiceyCall!]! + diceyCall : DiceyCall + } + + type DiceyCall { + bang : String + abort : String + nonNull : String! + } + ''' + + DataFetcher dfNotAList = { env -> "noAList" } + DataFetcher dfNotAFloat = { env -> "noAFloat" } + DataFetcher dfDiceyBang = { + env -> throw new RuntimeException("dicey call") + } + DataFetcher dfDiceyAbort = { + env -> throw new AbortExecutionException("abort abort") + } + DataFetcher dfDiceyListCall = { + env -> ["x", null] + } + DataFetcher dfReturnsNull = { + env -> null + } + + def schema = TestUtil.schema(sdl, [ + Query : + [notAList: dfNotAList, notAFloat: dfNotAFloat], + ImproperObject: + [diceyListCall: dfDiceyListCall], + DiceyCall : + [bang: dfDiceyBang, abort: dfDiceyAbort, nonNull: dfReturnsNull], + ] + ) + + Instrumentation instrumentation = new SimplePerformantInstrumentation() { + @Override + InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + if (parameters.field.name == "diceyListCallAbort") { + throw new AbortExecutionException("No lists for you") + } + return super.beginFieldListCompletion(parameters, state) + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + + when: + def ei = ExecutionInput.newExecutionInput() + .query(""" + query q { + notAList + notAFloat + notAnProperObject { + name + diceyListCallAbort { + bang + } + diceyListCall { + bang + abort + nonNull + } + } + } + """) + .root([notAnProperObject: ["name" : "make it drive errors", + "diceyListCall" : [[:]], + "diceyListCallAbort": [[:]], + "diceyCall" : [:] + ]]) + .build() + def er = graphQL.execute(ei) + + then: + er.errors.size() == 7 + er.errors[0] instanceof TypeMismatchError + er.errors[0].path == ["notAList"] + + er.errors[1] instanceof SerializationError + er.errors[1].path == ["notAFloat"] + + er.errors[2] instanceof ExceptionWhileDataFetching + er.errors[2].path == ["notAnProperObject", "diceyListCall", 0, "bang"] + ((ExceptionWhileDataFetching) er.errors[2]).exception.message == "dicey call" + + er.errors[3] instanceof ExceptionWhileDataFetching + er.errors[3].path == ["notAnProperObject", "diceyListCall", 0, "abort"] + ((ExceptionWhileDataFetching) er.errors[3]).exception.message == "abort abort" + + er.errors[4] instanceof NonNullableFieldWasNullError + er.errors[4].path == ["notAnProperObject", "diceyListCall", 0, "nonNull"] + + er.errors[5] instanceof NonNullableFieldWasNullError + er.errors[5].path == ["notAnProperObject", "diceyListCall", 1] // the entry itself was null in a non null list entry + + er.errors[6] instanceof AbortExecutionException + } +} diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyExceptionHandlingEquivalenceTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyExceptionHandlingEquivalenceTest.groovy index 7a47cee7ad..2c8653491e 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyExceptionHandlingEquivalenceTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyExceptionHandlingEquivalenceTest.groovy @@ -4,7 +4,8 @@ import graphql.ExecutionInput import graphql.GraphQL import graphql.StarWarsSchema import graphql.execution.instrumentation.InstrumentationContext -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters import graphql.validation.ValidationError import graphql.validation.ValidationErrorType @@ -13,11 +14,11 @@ import spock.lang.Unroll class ExecutionStrategyExceptionHandlingEquivalenceTest extends Specification { - class TestInstrumentation extends SimpleInstrumentation { + class TestInstrumentation extends SimplePerformantInstrumentation { @Override - InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - throw new AbortExecutionException([new ValidationError(ValidationErrorType.UnknownType)]) + InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + throw new AbortExecutionException([ValidationError.newValidationError().validationErrorType(ValidationErrorType.UnknownType).build()]) } } diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy index e45ff7c546..df09445497 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy @@ -12,10 +12,12 @@ class ExecutionStrategyParametersTest extends Specification { def "ExecutionParameters can be transformed"() { given: + def executionContext = Mock(ExecutionContext) def parameters = newParameters() .executionStepInfo(newExecutionStepInfo().type(GraphQLString)) .source(new Object()) .localContext("localContext") + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .fields(mergedSelectionSet("a": [])) .build() diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy index 0d83932fd8..71eee4f284 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy @@ -1,14 +1,21 @@ package graphql.execution import graphql.Assert -import graphql.DataFetchingErrorGraphQLError +import graphql.EngineRunningState import graphql.ExceptionWhileDataFetching +import graphql.ExecutionInput import graphql.ExecutionResult +import graphql.GraphQLContext +import graphql.GraphqlErrorBuilder +import graphql.Profiler import graphql.Scalars import graphql.SerializationError import graphql.StarWarsSchema import graphql.TypeMismatchError -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.InstrumentationContext +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters import graphql.language.Argument import graphql.language.Field import graphql.language.OperationDefinition @@ -18,15 +25,21 @@ import graphql.parser.Parser import graphql.schema.Coercing import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLEnumType import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLSchema +import graphql.schema.LightDataFetcher import org.dataloader.DataLoaderRegistry import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionException +import java.util.function.Supplier +import java.util.stream.Stream import static ExecutionStrategyParameters.newParameters import static graphql.Scalars.GraphQLString @@ -59,32 +72,58 @@ class ExecutionStrategyTest extends Specification { def buildContext(GraphQLSchema schema = null) { ExecutionId executionId = ExecutionId.from("executionId123") + ExecutionInput ei = ExecutionInput.newExecutionInput("{}").build() def variables = [arg1: "value1"] - new ExecutionContext(SimpleInstrumentation.INSTANCE, executionId, schema ?: StarWarsSchema.starWarsSchema, null, - executionStrategy, executionStrategy, executionStrategy, - [:], null, null, - variables, "context", "root", new DataLoaderRegistry(), - null, Locale.getDefault(), Collections.emptyList(), ValueUnboxer.DEFAULT) + def builder = ExecutionContextBuilder.newExecutionContextBuilder() + .instrumentation(SimplePerformantInstrumentation.INSTANCE) + .executionId(executionId) + .graphQLSchema(schema ?: StarWarsSchema.starWarsSchema) + .queryStrategy(executionStrategy) + .mutationStrategy(executionStrategy) + .subscriptionStrategy(executionStrategy) + .coercedVariables(CoercedVariables.of(variables)) + .graphQLContext(GraphQLContext.newContext().of("key", "context").build()) + .executionInput(ei) + .root("root") + .dataLoaderRegistry(new DataLoaderRegistry()) + .locale(Locale.getDefault()) + .valueUnboxer(ValueUnboxer.DEFAULT) + .profiler(Profiler.NO_OP) + .engineRunningState(new EngineRunningState(ei, Profiler.NO_OP)) + + new ExecutionContext(builder) } @SuppressWarnings("GroovyAssignabilityCheck") def "complete values always calls query strategy to execute more"() { given: def dataFetcher = Mock(DataFetcher) + + def someFieldName = "someField" + def testTypeName = "Test" def fieldDefinition = newFieldDefinition() - .name("someField") + .name(someFieldName) .type(GraphQLString) - .dataFetcher(dataFetcher) .build() def objectType = newObject() - .name("Test") + .name(testTypeName) .field(fieldDefinition) .build() + def someFieldCoordinates = FieldCoordinates.coordinates(testTypeName, someFieldName) + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(someFieldCoordinates, dataFetcher) + .build() + def document = new Parser().parseDocument("{someField}") def operation = document.definitions[0] as OperationDefinition - GraphQLSchema schema = GraphQLSchema.newSchema().query(objectType).build() + GraphQLSchema schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(objectType) + .build() + def builder = new ExecutionContextBuilder() builder.queryStrategy(Mock(ExecutionStrategy)) builder.mutationStrategy(Mock(ExecutionStrategy)) @@ -94,6 +133,7 @@ class ExecutionStrategyTest extends Specification { builder.operationDefinition(operation) builder.executionId(ExecutionId.generate()) + builder.executionInput(ExecutionInput.newExecutionInput("{}").build()) def executionContext = builder.build() def result = new Object() @@ -101,6 +141,7 @@ class ExecutionStrategyTest extends Specification { .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) .source(result) .fields(mergedSelectionSet(["fld": [Field.newField().build()]])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .field(mergedField(Field.newField().build())) .build() @@ -108,7 +149,7 @@ class ExecutionStrategyTest extends Specification { executionStrategy.completeValue(executionContext, parameters) then: - 1 * executionContext.queryStrategy.execute(_, _) + 1 * executionContext.queryStrategy.executeObject(_, _) >> CompletableFuture.completedFuture(null) 0 * executionContext.mutationStrategy.execute(_, _) 0 * executionContext.subscriptionStrategy.execute(_, _) } @@ -120,8 +161,8 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(GraphQLString) Field field = new Field("someField") def fldDef = newFieldDefinition().name("test").type(fieldType).build() - def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ExecutionPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def result = ["test", "1", "2", "3"] @@ -134,10 +175,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == result + executionResult == result } def "completes value for java.util.Optional"() { @@ -146,7 +187,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -155,10 +196,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == expected + executionResult == expected where: result || expected @@ -172,7 +213,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -181,7 +222,7 @@ class ExecutionStrategyTest extends Specification { .build() when: - executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: def e = thrown(CompletionException) @@ -194,7 +235,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -203,10 +244,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == expected + executionResult == expected where: result || expected @@ -220,7 +261,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -229,7 +270,7 @@ class ExecutionStrategyTest extends Specification { .build() when: - executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: def e = thrown(CompletionException) @@ -242,7 +283,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -251,10 +292,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == expected + executionResult == expected where: result || expected @@ -268,7 +309,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -277,7 +318,7 @@ class ExecutionStrategyTest extends Specification { .build() when: - executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: def e = thrown(CompletionException) @@ -290,7 +331,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -299,10 +340,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == expected + executionResult == expected where: result || expected @@ -316,7 +357,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -325,7 +366,7 @@ class ExecutionStrategyTest extends Specification { .build() when: - executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: def e = thrown(CompletionException) @@ -337,8 +378,8 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext() def fieldType = list(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() - def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ExecutionPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def result = ["test", "1", "2", "3"] def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -349,10 +390,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == result + executionResult == result } def "completing value with serializing throwing exception"() { @@ -360,7 +401,7 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext() def fieldType = Scalars.GraphQLInt def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) String result = "not a number" def parameters = newParameters() @@ -371,10 +412,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == null + executionResult == null executionContext.errors.size() == 1 executionContext.errors[0] instanceof SerializationError @@ -385,7 +426,7 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext() GraphQLEnumType enumType = newEnum().name("Enum").value("value").build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(enumType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) String result = "not a enum number" def parameters = newParameters() @@ -396,10 +437,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == null + executionResult == null executionContext.errors.size() == 1 executionContext.errors[0] instanceof SerializationError @@ -407,7 +448,7 @@ class ExecutionStrategyTest extends Specification { def "completing a scalar null value for a non null type throws an exception"() { - GraphQLScalarType NullProducingScalar = new GraphQLScalarType("Custom", "It Can Produce Nulls", new Coercing() { + GraphQLScalarType NullProducingScalar = GraphQLScalarType.newScalar().name("Custom").description("It Can Produce Nulls").coercing(new Coercing() { @Override Double serialize(Object input) { if (input == 0xCAFED00Dd) { @@ -426,12 +467,13 @@ class ExecutionStrategyTest extends Specification { throw new UnsupportedOperationException("Not implemented") } }) + .build() ExecutionContext executionContext = buildContext() def fieldType = NullProducingScalar def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(fieldType)).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) when: def parameters = newParameters() @@ -467,51 +509,62 @@ class ExecutionStrategyTest extends Specification { @SuppressWarnings("GroovyVariableNotAssigned") def "resolveField creates correct DataFetchingEnvironment"() { - def dataFetcher = Mock(DataFetcher) + def dataFetcher = Mock(LightDataFetcher) + def someFieldName = "someField" + def testTypeName = "Type" def fieldDefinition = newFieldDefinition() - .name("someField") + .name(someFieldName) .type(GraphQLString) - .dataFetcher(dataFetcher) .argument(newArgument().name("arg1").type(GraphQLString)) .build() def objectType = newObject() - .name("Test") + .name(testTypeName) .field(fieldDefinition) .build() - GraphQLSchema schema = GraphQLSchema.newSchema().query(objectType).build() + def someFieldCoordinates = FieldCoordinates.coordinates(testTypeName, someFieldName) + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(someFieldCoordinates, dataFetcher) + .build() + + GraphQLSchema schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(objectType) + .build() ExecutionContext executionContext = buildContext(schema) ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(objectType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) Argument argument = new Argument("arg1", new StringValue("argVal")) - Field field = new Field("someField", [argument]) - ExecutionPath executionPath = ExecutionPath.rootPath().segment("test") + Field field = new Field(someFieldName, [argument]) + MergedField mergedField = mergedField(field) + ResultPath resultPath = ResultPath.rootPath().segment("test") def parameters = newParameters() .executionStepInfo(typeInfo) .source("source") .fields(mergedSelectionSet(["someField": [field]])) - .field(mergedField(field)) + .field(mergedField) .nonNullFieldValidator(nullableFieldValidator) - .path(executionPath) + .path(resultPath) .build() DataFetchingEnvironment environment when: - executionStrategy.resolveField(executionContext, parameters) + executionStrategy.resolveFieldWithInfo(executionContext, parameters) then: - 1 * dataFetcher.get({ it -> environment = it } as DataFetchingEnvironment) + 1 * dataFetcher.get(_, _, _) >> { environment = (it[2] as Supplier).get() } environment.fieldDefinition == fieldDefinition environment.graphQLSchema == schema - environment.context == "context" + environment.graphQlContext.get("key") == "context" environment.source == "source" - environment.fields == [field] + environment.mergedField == mergedField environment.root == "root" environment.parentType == objectType environment.arguments == ["arg1": "argVal"] environment.executionStepInfo.getUnwrappedNonNullType() == GraphQLString - environment.executionStepInfo.path == executionPath + environment.executionStepInfo.path == resultPath environment.executionStepInfo.parent.getUnwrappedNonNullType() == objectType environment.executionId == ExecutionId.from("executionId123") } @@ -523,19 +576,34 @@ class ExecutionStrategyTest extends Specification { throw expectedException } } - def fieldDefinition = newFieldDefinition().name("someField").type(GraphQLString).dataFetcher(dataFetcher).build() + + def someFieldName = "someField" + def testTypeName = "Test" + def fieldDefinition = newFieldDefinition() + .name(someFieldName) + .type(GraphQLString) + .build() def objectType = newObject() - .name("Test") + .name(testTypeName) .field(fieldDefinition) .build() - def schema = GraphQLSchema.newSchema().query(objectType).build() + + def someFieldCoordinates = FieldCoordinates.coordinates(testTypeName, someFieldName) + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(someFieldCoordinates, dataFetcher) + .build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(objectType) + .build() ExecutionContext executionContext = buildContext(schema) def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(objectType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) - ExecutionPath expectedPath = ExecutionPath.rootPath().segment("someField") + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) + ResultPath expectedPath = ResultPath.rootPath().segment(someFieldName) SourceLocation sourceLocation = new SourceLocation(666, 999) - Field field = Field.newField("someField").sourceLocation(sourceLocation).build() + Field field = Field.newField(someFieldName).sourceLocation(sourceLocation).build() def parameters = newParameters() .executionStepInfo(typeInfo) .source("source") @@ -547,19 +615,20 @@ class ExecutionStrategyTest extends Specification { [executionContext, fieldDefinition, expectedPath, parameters, field, sourceLocation] } - def "test that the new data fetcher error handler interface is called"() { def expectedException = new UnsupportedOperationException("This is the exception you are looking for") //noinspection GroovyAssignabilityCheck,GroovyUnusedAssignment - def (ExecutionContext executionContext, GraphQLFieldDefinition fieldDefinition, ExecutionPath expectedPath, ExecutionStrategyParameters parameters, Field field, SourceLocation sourceLocation) = exceptionSetupFixture(expectedException) + def (ExecutionContext executionContext, GraphQLFieldDefinition fieldDefinition, ResultPath expectedPath, ExecutionStrategyParameters parameters, Field field, SourceLocation sourceLocation) = exceptionSetupFixture(expectedException) boolean handlerCalled = false ExecutionStrategy overridingStrategy = new AsyncExecutionStrategy(new SimpleDataFetcherExceptionHandler() { + + @Override - DataFetcherExceptionHandlerResult onException(DataFetcherExceptionHandlerParameters handlerParameters) { + CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { handlerCalled = true assert handlerParameters.exception == expectedException assert handlerParameters.fieldDefinition == fieldDefinition @@ -567,7 +636,7 @@ class ExecutionStrategyTest extends Specification { assert handlerParameters.path == expectedPath // by calling down we are testing the base class as well - super.onException(handlerParameters) + super.handleException(handlerParameters) } }) { @Override @@ -577,7 +646,7 @@ class ExecutionStrategyTest extends Specification { } when: - overridingStrategy.resolveField(executionContext, parameters) + overridingStrategy.resolveFieldWithInfo(executionContext, parameters) then: handlerCalled == true @@ -587,13 +656,28 @@ class ExecutionStrategyTest extends Specification { exceptionWhileDataFetching.getMessage().contains('This is the exception you are looking for') } - def "test that the old legacy method is still useful for those who derive new execution strategies"() { + def "#2519 data fetcher errors for a given field appear in FetchedResult within instrumentation"() { def expectedException = new UnsupportedOperationException("This is the exception you are looking for") //noinspection GroovyAssignabilityCheck,GroovyUnusedAssignment - def (ExecutionContext executionContext, GraphQLFieldDefinition fieldDefinition, ExecutionPath expectedPath, ExecutionStrategyParameters parameters, Field field, SourceLocation sourceLocation) = exceptionSetupFixture(expectedException) + def (ExecutionContext executionContext, GraphQLFieldDefinition fieldDefinition, ResultPath expectedPath, ExecutionStrategyParameters params, Field field, SourceLocation sourceLocation) = exceptionSetupFixture(expectedException) + ExecutionContextBuilder executionContextBuilder = ExecutionContextBuilder.newExecutionContextBuilder(executionContext) + def instrumentation = new SimplePerformantInstrumentation() { + Map fetchedValues = [:] + + @Override + @Override + InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + if (parameters.getFetchedObject() instanceof FetchedValue) { + FetchedValue value = (FetchedValue) parameters.getFetchedObject() + fetchedValues.put(parameters.field.name, value) + } + return super.beginFieldCompletion(parameters, state) + } + } + ExecutionContext instrumentedExecutionContext = executionContextBuilder.instrumentation(instrumentation).build() ExecutionStrategy overridingStrategy = new ExecutionStrategy() { @Override @@ -603,12 +687,16 @@ class ExecutionStrategyTest extends Specification { } when: - overridingStrategy.resolveField(executionContext, parameters) + overridingStrategy.resolveFieldWithInfo(instrumentedExecutionContext, params) then: - executionContext.errors.size() == 1 - def exceptionWhileDataFetching = executionContext.errors[0] as ExceptionWhileDataFetching + Object fetchedValue = instrumentation.fetchedValues.get("someField") + fetchedValue != null + fetchedValue.errors.size() == 1 + def exceptionWhileDataFetching = fetchedValue.errors[0] as ExceptionWhileDataFetching exceptionWhileDataFetching.getMessage().contains('This is the exception you are looking for') + instrumentedExecutionContext.errors.size() == 1 + instrumentedExecutionContext.errors[0] == fetchedValue.errors[0] } def "#522 - single error during execution - not two errors"() { @@ -621,22 +709,34 @@ class ExecutionStrategyTest extends Specification { throw new RuntimeException("bang") } } + + def someFieldName = "someField" + def testTypeName = "Test" + def fieldDefinition = newFieldDefinition() - .name("someField") + .name(someFieldName) .type(nonNull(GraphQLString)) - .dataFetcher(dataFetcher) .build() def objectType = newObject() - .name("Test") + .name(testTypeName) .field(fieldDefinition) .build() - GraphQLSchema schema = GraphQLSchema.newSchema().query(objectType).build() + def someFieldCoordinates = FieldCoordinates.coordinates(testTypeName, someFieldName) + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(someFieldCoordinates, dataFetcher) + .build() + + GraphQLSchema schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(objectType) + .build() ExecutionContext executionContext = buildContext(schema) def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(objectType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) - Field field = new Field("someField") + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) + Field field = new Field(someFieldName) def parameters = newParameters() .executionStepInfo(typeInfo) @@ -644,11 +744,12 @@ class ExecutionStrategyTest extends Specification { .nonNullFieldValidator(nullableFieldValidator) .field(mergedField(field)) .fields(mergedSelectionSet(["someField": [mergedField(field)]])) - .path(ExecutionPath.rootPath().segment("abc")) + .path(ResultPath.rootPath().segment("abc")) .build() when: - executionStrategy.resolveField(executionContext, parameters).join() + FieldValueInfo fieldValueInfo = (executionStrategy.resolveFieldWithInfo(executionContext, parameters) as CompletableFuture).join() + (fieldValueInfo.fieldValueObject as CompletableFuture).join() then: thrown(CompletionException) @@ -659,11 +760,11 @@ class ExecutionStrategyTest extends Specification { def "#163 completes value for an primitive type array"() { given: ExecutionContext executionContext = buildContext() - long[] result = [1L, 2L, 3L] - def fieldType = list(Scalars.GraphQLLong) + long[] result = [1, 2, 3] + def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() - def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ExecutionPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -674,24 +775,74 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.get().data == [1L, 2L, 3L] + executionResult == [1, 2, 3] } + def "#842 completes value for java.util.Stream"() { + given: + ExecutionContext executionContext = buildContext() + Stream result = Stream.of(1L, 2L, 3L) + def fieldType = list(Scalars.GraphQLInt) + def fldDef = newFieldDefinition().name("test").type(fieldType).build() + def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) + + def parameters = newParameters() + .executionStepInfo(executionStepInfo) + .source(result) + .nonNullFieldValidator(nullableFieldValidator) + .fields(mergedSelectionSet(["fld": [mergedField(Field.newField().build())]])) + .field(mergedField(Field.newField().build())) + .build() + + when: + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() + + then: + executionResult == [1, 2, 3] + } + + def "#842 completes value for java.util.Iterator"() { + given: + ExecutionContext executionContext = buildContext() + Iterator result = Arrays.asList(1L, 2L, 3L).iterator() + def fieldType = list(Scalars.GraphQLInt) + def fldDef = newFieldDefinition().name("test").type(fieldType).build() + def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) + + def parameters = newParameters() + .executionStepInfo(executionStepInfo) + .source(result) + .nonNullFieldValidator(nullableFieldValidator) + .fields(mergedSelectionSet(["fld": [mergedField(Field.newField().build())]])) + .field(mergedField(Field.newField().build())) + .build() + + when: + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() + + then: + executionResult == [1, 2, 3] + } + + def "#820 processes DataFetcherResult"() { given: ExecutionContext executionContext = buildContext() - def fieldType = list(Scalars.GraphQLLong) + def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() def field = Field.newField("parent").sourceLocation(new SourceLocation(5, 10)).build() def parameters = newParameters() - .path(ExecutionPath.fromList(["parent"])) + .path(ResultPath.fromList(["parent"])) .field(mergedField(field)) .fields(mergedSelectionSet(["parent": [mergedField(field)]])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .executionStepInfo(executionStepInfo) .build() @@ -699,53 +850,69 @@ class ExecutionStrategyTest extends Specification { when: def fetchedValue = executionStrategy.unboxPossibleDataFetcherResult(executionContext, parameters, DataFetcherResult.newResult().data(executionData) - .mapRelativeErrors(true) - .error(new DataFetchingErrorGraphQLError("bad foo", ["child", "foo"])) + .error(GraphqlErrorBuilder.newError().message("bad foo").path(["child", "foo"]).build()) .build() ) then: fetchedValue.getFetchedValue() == executionData - executionContext.getErrors()[0].locations == [new SourceLocation(7, 20)] +// executionContext.getErrors()[0].locations == [new SourceLocation(7, 20)] executionContext.getErrors()[0].message == "bad foo" - executionContext.getErrors()[0].path == ["parent", "child", "foo"] + executionContext.getErrors()[0].path == ["child", "foo"] } def "#1558 forward localContext on nonBoxed return from DataFetcher"() { given: + def capturedLocalContext = "startingValue" + executionStrategy = new ExecutionStrategy(dataFetcherExceptionHandler) { + @Override + CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + return null + } + + @Override + protected FieldValueInfo completeValue(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + // shows we set the local context if the value is non boxed + capturedLocalContext = parameters.getLocalContext() + return super.completeValue(executionContext, parameters) + } + } + ExecutionContext executionContext = buildContext() - def fieldType = list(Scalars.GraphQLLong) - def fldDef = newFieldDefinition().name("test").type(fieldType).build() + def fieldType = StarWarsSchema.droidType + def fldDef = StarWarsSchema.droidType.getFieldDefinition("name") def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - def field = Field.newField("parent").sourceLocation(new SourceLocation(5, 10)).build() + def field = Field.newField("name").sourceLocation(new SourceLocation(5, 10)).build() def localContext = "localContext" def parameters = newParameters() - .path(ExecutionPath.fromList(["parent"])) + .path(ResultPath.fromList(["name"])) .localContext(localContext) .field(mergedField(field)) - .fields(mergedSelectionSet(["parent": [mergedField(field)]])) + .fields(mergedSelectionSet(["name": [mergedField(field)]])) .executionStepInfo(executionStepInfo) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() when: - def fetchedValue = executionStrategy.unboxPossibleDataFetcherResult(executionContext, parameters, new Object()) + executionStrategy.completeField(executionContext, parameters, new Object()) then: - fetchedValue.localContext == localContext + capturedLocalContext == localContext } def "#820 processes DataFetcherResult just message"() { given: ExecutionContext executionContext = buildContext() - def fieldType = list(Scalars.GraphQLLong) + def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() def field = Field.newField("parent").sourceLocation(new SourceLocation(5, 10)).build() def parameters = newParameters() - .path(ExecutionPath.fromList(["parent"])) + .path(ResultPath.fromList(["parent"])) .field(mergedField(field)) .fields(mergedSelectionSet(["parent": [mergedField(field)]])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .executionStepInfo(executionStepInfo) .build() @@ -753,11 +920,11 @@ class ExecutionStrategyTest extends Specification { when: def fetchedValue = executionStrategy.unboxPossibleDataFetcherResult(executionContext, parameters, DataFetcherResult.newResult().data(executionData) - .error(new DataFetchingErrorGraphQLError("bad foo")) + .error(GraphqlErrorBuilder.newError().message("bad foo").build()) .build()) then: fetchedValue.getFetchedValue() == executionData - executionContext.getErrors()[0].locations == null + executionContext.getErrors()[0].locations == [] executionContext.getErrors()[0].message == "bad foo" executionContext.getErrors()[0].path == null } @@ -766,10 +933,10 @@ class ExecutionStrategyTest extends Specification { given: ExecutionContext executionContext = buildContext() List result = [1L, 2L, 3L] - def fieldType = list(Scalars.GraphQLLong) + def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() - def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ExecutionPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -780,20 +947,20 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.get().data == [1L, 2L, 3L] + executionResult == [1L, 2L, 3L] } def "when completeValue expects GraphQLList and non iterable or non array is passed then it should yield a TypeMismatch error"() { given: ExecutionContext executionContext = buildContext() Map result = new HashMap<>() - def fieldType = list(Scalars.GraphQLLong) + def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) @@ -804,10 +971,10 @@ class ExecutionStrategyTest extends Specification { .build() when: - def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValue.join() + def executionResult = executionStrategy.completeValue(executionContext, parameters).fieldValueFuture.join() then: - executionResult.data == null + executionResult == null executionContext.errors.size() == 1 executionContext.errors[0] instanceof TypeMismatchError } diff --git a/src/test/groovy/graphql/execution/ExecutionTest.groovy b/src/test/groovy/graphql/execution/ExecutionTest.groovy index b4af50a5b2..46ac3c7942 100644 --- a/src/test/groovy/graphql/execution/ExecutionTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionTest.groovy @@ -1,11 +1,13 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.ExecutionResult import graphql.ExecutionResultImpl import graphql.MutationSchema +import graphql.Profiler import graphql.execution.instrumentation.InstrumentationState -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.parser.Parser import spock.lang.Specification @@ -35,7 +37,7 @@ class ExecutionTest extends Specification { def subscriptionStrategy = new CountingExecutionStrategy() def mutationStrategy = new CountingExecutionStrategy() def queryStrategy = new CountingExecutionStrategy() - def execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, SimpleInstrumentation.INSTANCE, ValueUnboxer.DEFAULT) + def execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, SimplePerformantInstrumentation.INSTANCE, ValueUnboxer.DEFAULT, false) def emptyExecutionInput = ExecutionInput.newExecutionInput().query("query").build() def instrumentationState = new InstrumentationState() {} @@ -51,7 +53,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput, Profiler.NO_OP), Profiler.NO_OP) then: queryStrategy.execute == 1 @@ -71,7 +73,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput, Profiler.NO_OP), Profiler.NO_OP) then: queryStrategy.execute == 0 @@ -91,50 +93,51 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput, Profiler.NO_OP), Profiler.NO_OP) then: queryStrategy.execute == 0 mutationStrategy.execute == 0 subscriptionStrategy.execute == 1 } - - def "Update query strategy when instrumenting exection context" (){ - given: - def query = ''' + + def "Update query strategy when instrumenting execution context"() { + given: + def query = ''' query { numberHolder { theNumber } } ''' - def document = parser.parseDocument(query) - def queryStrategyUpdatedToDuringExecutionContextInstrument = new CountingExecutionStrategy() - - def instrumentation = new SimpleInstrumentation() { - - @Override - public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, - InstrumentationExecutionParameters parameters) { - - return ExecutionContextBuilder.newExecutionContextBuilder(executionContext) - .queryStrategy(queryStrategyUpdatedToDuringExecutionContextInstrument) - .build(); - } - } - - def execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation, ValueUnboxer.DEFAULT) - - - when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) - - then: - queryStrategy.execute == 0 - mutationStrategy.execute == 0 - subscriptionStrategy.execute == 0 - queryStrategyUpdatedToDuringExecutionContextInstrument.execute == 1 - } - - + def document = parser.parseDocument(query) + def queryStrategyUpdatedToDuringExecutionContextInstrument = new CountingExecutionStrategy() + + def instrumentation = new SimplePerformantInstrumentation() { + + @Override + ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, + InstrumentationExecutionParameters parameters, + InstrumentationState state) { + + return ExecutionContextBuilder.newExecutionContextBuilder(executionContext) + .queryStrategy(queryStrategyUpdatedToDuringExecutionContextInstrument) + .build() + } + } + + def execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation, ValueUnboxer.DEFAULT, false) + + + when: + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput, Profiler.NO_OP), Profiler.NO_OP) + + then: + queryStrategy.execute == 0 + mutationStrategy.execute == 0 + subscriptionStrategy.execute == 0 + queryStrategyUpdatedToDuringExecutionContextInstrument.execute == 1 + } + + } diff --git a/src/test/groovy/graphql/execution/ExecutorServiceExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutorServiceExecutionStrategyTest.groovy deleted file mode 100644 index 5cd516ba3b..0000000000 --- a/src/test/groovy/graphql/execution/ExecutorServiceExecutionStrategyTest.groovy +++ /dev/null @@ -1,75 +0,0 @@ -package graphql.execution - -import graphql.GraphQL -import graphql.StarWarsSchema -import spock.lang.Specification - -import java.util.concurrent.BlockingQueue -import java.util.concurrent.LinkedBlockingQueue -import java.util.concurrent.ThreadPoolExecutor -import java.util.concurrent.TimeUnit - -@Deprecated -class ExecutorServiceExecutionStrategyTest extends Specification { - - def 'Example usage of ExecutorServiceExecutionStrategy'() { - given: - def query = """ - query HeroNameAndFriendsQuery { - hero { - id - friends { - name - } - } - } - """ - def expected = [ - hero: [ - id : '2001', - friends: [ - [ - name: 'Luke Skywalker', - ], - [ - name: 'Han Solo', - ], - [ - name: 'Leia Organa', - ], - ] - ] - ] - - when: - BlockingQueue queue = new LinkedBlockingQueue() { - @Override - boolean offer(Runnable e) { - /* queue that always rejects tasks */ - return false - } - } - - ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( - 2, /* core pool size 2 thread */ - 2, /* max pool size 2 thread */ - 30, TimeUnit.SECONDS, - /* - * Do not use the queue to prevent threads waiting on enqueued tasks. - */ - queue, - /* - * If all the threads are working, then the caller thread - * should execute the code in its own thread. (serially) - */ - new ThreadPoolExecutor.CallerRunsPolicy()) - - def graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) - .queryExecutionStrategy(new ExecutorServiceExecutionStrategy(threadPoolExecutor)) - .build() - def result = graphQL.execute(query).data - - then: - result == expected - } -} diff --git a/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy b/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy new file mode 100644 index 0000000000..366c95426e --- /dev/null +++ b/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy @@ -0,0 +1,114 @@ +package graphql.execution + +import graphql.Directives +import graphql.ExecutionInput +import graphql.TestUtil +import spock.lang.Specification + +class ExperimentalDisableErrorPropagationTest extends Specification { + + void setup() { + Directives.setExperimentalDisableErrorPropagationEnabled(true) + } + + def "with experimental_disableErrorPropagation, null is returned"() { + + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo @experimental_disableErrorPropagation { foo } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data != null + er.data.foo == null + er.errors[0].path.toList() == ["foo"] + } + + def "without experimental_disableErrorPropagation, error is propagated"() { + + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo { foo } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].message == "The field at path '/foo' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'Int' within parent type 'Query'" + er.errors[0].path.toList() == ["foo"] + } + + def "With experimental_disableErrorPropagation JVM disabled, error is propagated"() { + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo @experimental_disableErrorPropagation { foo } + ''' + when: + + Directives.setExperimentalDisableErrorPropagationEnabled(false) // JVM wide + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].message == "The field at path '/foo' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'Int' within parent type 'Query'" + er.errors[0].path.toList() == ["foo"] + } + + def "when @experimental_disableErrorPropagation is not added to the schema operation is gets added by schema code"() { + + def sdl = ''' + type Query { + foo : Int! + } + ''' + + when: + def graphql = TestUtil.graphQL(sdl).build() + + then: + graphql.getGraphQLSchema().getDirective(Directives.ExperimentalDisableErrorPropagationDirective.getName()) === Directives.ExperimentalDisableErrorPropagationDirective + } + +} diff --git a/src/test/groovy/graphql/execution/FieldCollectorTest.groovy b/src/test/groovy/graphql/execution/FieldCollectorTest.groovy index 1fa8f360e8..6460512543 100644 --- a/src/test/groovy/graphql/execution/FieldCollectorTest.groovy +++ b/src/test/groovy/graphql/execution/FieldCollectorTest.groovy @@ -21,7 +21,7 @@ class FieldCollectorTest extends Specification { type Query { bar1: String bar2: String - } + } """) def objectType = schema.getType("Query") as GraphQLObjectType FieldCollector fieldCollector = new FieldCollector() @@ -48,12 +48,12 @@ class FieldCollectorTest extends Specification { type Query{ bar1: String bar2: Test - } + } interface Test { - fieldOnInterface: String - } + fieldOnInterface: String + } type TestImpl implements Test { - fieldOnInterface: String + fieldOnInterface: String } """) def object = schema.getType("TestImpl") as GraphQLObjectType @@ -73,6 +73,136 @@ class FieldCollectorTest extends Specification { then: result.getSubField('fieldOnInterface').getFields() == [interfaceField] + } + + def "collect fields that are merged together - one of the fields is on an inline fragment "() { + def schema = TestUtil.schema(""" + type Query { + echo: String + } +""") + + Document document = new Parser().parseDocument(""" + { + echo + ... on Query { + echo + } + } + +""") + + def object = schema.getType("TestImpl") as GraphQLObjectType + FieldCollector fieldCollector = new FieldCollector() + FieldCollectorParameters fieldCollectorParameters = newParameters() + .schema(schema) + .objectType(object) + .build() + + def selectionSet = ((OperationDefinition) document.children[0]).selectionSet + + when: + def result = fieldCollector.collectFields(fieldCollectorParameters, selectionSet) + + then: + result.size() == 1 + result.getSubField('echo').fields.size() == 1 + } + + def "collect fields that are merged together - fields have different selection sets "() { + def schema = TestUtil.schema(""" + type Query { + me: Me + } + + type Me { + firstname: String + lastname: String + } +""") + + Document document = new Parser().parseDocument(""" + { + me { + firstname + } + me { + lastname + } + } + +""") + + def object = schema.getType("TestImpl") as GraphQLObjectType + FieldCollector fieldCollector = new FieldCollector() + FieldCollectorParameters fieldCollectorParameters = newParameters() + .schema(schema) + .objectType(object) + .build() + + def selectionSet = ((OperationDefinition) document.children[0]).selectionSet + + when: + def result = fieldCollector.collectFields(fieldCollectorParameters, selectionSet) + + then: + result.size() == 1 + + def meField = result.getSubField('me') + + meField.fields.size() == 2 + + meField.fields[0].selectionSet.selections.size() == 1 + meField.fields[0].selectionSet.selections[0].name == "firstname" + + meField.fields[1].selectionSet.selections.size() == 1 + meField.fields[1].selectionSet.selections[0].name == "lastname" + } + + def "collect fields that are merged together - fields have different directives"() { + def schema = TestUtil.schema(""" + directive @one on FIELD + directive @two on FIELD + + type Query { + echo: String + } +""") + + Document document = new Parser().parseDocument(""" + { + echo @one + echo @two + } + +""") + + def object = schema.getType("TestImpl") as GraphQLObjectType + FieldCollector fieldCollector = new FieldCollector() + FieldCollectorParameters fieldCollectorParameters = newParameters() + .schema(schema) + .objectType(object) + .build() + + def selectionSet = ((OperationDefinition) document.children[0]).selectionSet + + when: + def result = fieldCollector.collectFields(fieldCollectorParameters, selectionSet) + + then: + result.size() == 1 + + def echoField = result.getSubField('echo') + + echoField.fields.size() == 2 + + echoField.fields[0].name == "echo" + echoField.fields[0].directives.size() == 1 + echoField.fields[0].directives[0].name == "one" + + echoField.fields[1].name == "echo" + echoField.fields[1].directives.size() == 1 + echoField.fields[1].directives[0].name == "two" } } diff --git a/src/test/groovy/graphql/execution/FieldValueInfoTest.groovy b/src/test/groovy/graphql/execution/FieldValueInfoTest.groovy index 0fe4c30cec..5720d28444 100644 --- a/src/test/groovy/graphql/execution/FieldValueInfoTest.groovy +++ b/src/test/groovy/graphql/execution/FieldValueInfoTest.groovy @@ -3,26 +3,26 @@ package graphql.execution import graphql.AssertException import spock.lang.Specification +import java.util.concurrent.CompletableFuture -class FieldValueInfoTest extends Specification{ +import static graphql.execution.FieldValueInfo.CompleteValueType.SCALAR + + +class FieldValueInfoTest extends Specification { def "simple constructor test"() { when: - def fieldValueInfo = FieldValueInfo.newFieldValueInfo().build() + def fieldValueInfo = new FieldValueInfo(SCALAR, CompletableFuture.completedFuture("A")) then: "fieldValueInfos to be empty list" fieldValueInfo.fieldValueInfos == [] as List - - and: "other fields to be null " - fieldValueInfo.fieldValue == null - fieldValueInfo.completeValueType == null + fieldValueInfo.fieldValueFuture.join() == "A" + fieldValueInfo.completeValueType == SCALAR } def "negative constructor test"() { when: - FieldValueInfo.newFieldValueInfo() - .fieldValueInfos(null) - .build() + new FieldValueInfo(SCALAR, CompletableFuture.completedFuture("A"), null) then: def assEx = thrown(AssertException) assEx.message.contains("fieldValueInfos") diff --git a/src/test/groovy/graphql/execution/MaterialisedAndPromisedObjectsTest.groovy b/src/test/groovy/graphql/execution/MaterialisedAndPromisedObjectsTest.groovy new file mode 100644 index 0000000000..578e3b3ea9 --- /dev/null +++ b/src/test/groovy/graphql/execution/MaterialisedAndPromisedObjectsTest.groovy @@ -0,0 +1,97 @@ +package graphql.execution + + +import graphql.ExecutionResult +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture + +import static graphql.ExecutionInput.newExecutionInput + +class MaterialisedAndPromisedObjectsTest extends Specification { + + def sdl = """ + type Query { + foo : Foo + } + + type Foo { + bar : Bar + name : String + } + + type Bar { + foo : Foo + name : String + } + """ + + def "make sure it can fetch both materialised and promised values"() { + + def cfPromisesOnFieldRegex = ~"neverMatchesAlwaysMaterialised" + Instrumentation fetchSwitcher = new SimplePerformantInstrumentation() { + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment env) throws Exception { + def fieldName = env.getField().name + def fetchValue = dataFetcher.get(env) + // if it matches the regex - we send back an async promise value + if (fieldName =~ cfPromisesOnFieldRegex) { + return CompletableFuture.supplyAsync { -> fetchValue } + } + // just the materialised value! + return fetchValue + } + } + } + } + + GraphQL graphQL = TestUtil.graphQL(sdl).instrumentation(fetchSwitcher).build() + + + def source = [foo: [bar: [foo: [name: "stop"]]]] + def expectedData = [foo: [bar: [foo: [name: "stop"]]]] + + def query = """ { foo { bar { foo { name }}}} """ + + + when: "always materialised - no promises" + + cfPromisesOnFieldRegex = ~"neverMatchesAlwaysMaterialised" + ExecutionResult er = graphQL.execute(newExecutionInput(query).root(source)) + + + then: + er.errors.isEmpty() + er.data == expectedData + + when: "everything is promises" + + cfPromisesOnFieldRegex = ~".*" + er = graphQL.execute(newExecutionInput(query).root(source)) + + then: + er.errors.isEmpty() + er.data == expectedData + + + when: "only foo fields are CF promises so a mix of materialised and promised values" + + cfPromisesOnFieldRegex = ~"foo" + er = graphQL.execute(newExecutionInput(query).root(source)) + + then: + er.errors.isEmpty() + er.data == expectedData + } +} diff --git a/src/test/groovy/graphql/execution/MergedFieldTest.groovy b/src/test/groovy/graphql/execution/MergedFieldTest.groovy new file mode 100644 index 0000000000..f327339891 --- /dev/null +++ b/src/test/groovy/graphql/execution/MergedFieldTest.groovy @@ -0,0 +1,179 @@ +package graphql.execution + +import graphql.execution.incremental.DeferredExecution +import graphql.language.Field +import graphql.language.SelectionSet +import spock.lang.Specification + +class MergedFieldTest extends Specification { + + def fa_1 = Field.newField("fa").build() + def fa_2 = Field.newField("fa").build() + def fa_3 = Field.newField("fa").build() + def alias1 = Field.newField("a1").alias("alias1").build() + def ss = SelectionSet.newSelectionSet([fa_1, fa_2]).build() + def sub1 = Field.newField("s1").selectionSet(ss).build() + def deferred1 = new DeferredExecution("defer1") + def deferred2 = new DeferredExecution("defer2") + + def "can construct from a single field"() { + when: + def mergedField = MergedField.newSingletonMergedField(fa_1, null) + then: + mergedField.getName() == "fa" + mergedField.getResultKey() == "fa" + mergedField.getSingleField() == fa_1 + mergedField.isSingleField() + !mergedField.hasSubSelection() + // lazily make the list + mergedField.getFields() == [fa_1] + + // these should still work + mergedField.getName() == "fa" + mergedField.getResultKey() == "fa" + mergedField.getSingleField() == fa_1 + mergedField.isSingleField() + !mergedField.hasSubSelection() + } + + def "can construct from multiple fields"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1).addField(fa_2).build() + + then: + mergedField.getName() == "fa" + mergedField.getResultKey() == "fa" + mergedField.getSingleField() == fa_1 + !mergedField.isSingleField() + !mergedField.hasSubSelection() + mergedField.getFields() == [fa_1, fa_2] + } + + def "can have aliases"() { + when: + def mergedField = MergedField.newSingletonMergedField(alias1, null) + then: + mergedField.getName() == "a1" + mergedField.getResultKey() == "alias1" + mergedField.getSingleField() == alias1 + mergedField.isSingleField() + !mergedField.hasSubSelection() + } + + def "can have selection set on single field"() { + when: + def mergedField = MergedField.newSingletonMergedField(sub1, null) + then: + mergedField.getName() == "s1" + mergedField.getResultKey() == "s1" + mergedField.getSingleField() == sub1 + mergedField.isSingleField() + mergedField.hasSubSelection() + } + + def "builder can build a singleton via addField()"() { + when: + def mergedField = MergedField.newMergedField().addField(sub1).build() + then: + mergedField.getName() == "s1" + mergedField.getResultKey() == "s1" + mergedField.getSingleField() == sub1 + mergedField.isSingleField() + mergedField.hasSubSelection() + } + + def "builder can build a multi via addField() / addField() combo"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1).addField(fa_2).build() + then: + mergedField.getName() == "fa" + mergedField.getResultKey() == "fa" + mergedField.getSingleField() == fa_1 + !mergedField.isSingleField() + mergedField.getFields() == [fa_1, fa_2] + } + + def "builder can build a multi via addField() / fields() combo"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1).fields([fa_2, fa_3]).build() + then: + mergedField.getName() == "fa" + mergedField.getResultKey() == "fa" + mergedField.getSingleField() == fa_1 + !mergedField.isSingleField() + mergedField.getFields() == [fa_1, fa_2, fa_3] + } + + def "builder can build a multi via fields()"() { + when: + def mergedField = MergedField.newMergedField().fields([fa_1, fa_2, fa_3]).build() + then: + mergedField.getName() == "fa" + mergedField.getResultKey() == "fa" + mergedField.getSingleField() == fa_1 + !mergedField.isSingleField() + mergedField.getFields() == [fa_1, fa_2, fa_3] + } + + def "can add to an existing field"() { + when: + def mergedField = MergedField.newSingletonMergedField(fa_1, null) + then: + mergedField.getName() == "fa" + mergedField.getDeferredExecutions().isEmpty() + mergedField.getSingleField() == fa_1 + mergedField.getFields() == [fa_1] + + when: + def mergedField2 = mergedField.newMergedFieldWith(fa_2, null) + then: + mergedField2.getName() == "fa" + mergedField2.getDeferredExecutions().isEmpty() + mergedField2.getSingleField() == fa_1 + mergedField2.getFields() == [fa_1, fa_2] + + // its a new instance + !(mergedField2 === mergedField) + } + + def "builder can handle no deferred executions"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1) + .addDeferredExecutions([]).build() + then: + mergedField.getName() == "fa" + mergedField.getSingleField() == fa_1 + mergedField.getDeferredExecutions().isEmpty() + } + + def "builder can handle list of deferred executions"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1) + .addDeferredExecutions([deferred1, deferred2]).build() + then: + mergedField.getName() == "fa" + mergedField.getSingleField() == fa_1 + mergedField.getDeferredExecutions() == [deferred1, deferred2] + + } + + def "builder can handle a single deferred executions"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1) + .addDeferredExecution(deferred1).build() + then: + mergedField.getName() == "fa" + mergedField.getSingleField() == fa_1 + mergedField.getDeferredExecutions() == [deferred1] + } + + def "builder can handle a single deferred execution at a time"() { + when: + def mergedField = MergedField.newMergedField().addField(fa_1) + .addDeferredExecution(deferred1).addDeferredExecution(deferred2).build() + then: + mergedField.getName() == "fa" + mergedField.getSingleField() == fa_1 + mergedField.getDeferredExecutions() == [deferred1,deferred2] + } +} diff --git a/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy b/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy index bf49f1cdf4..33977d515c 100644 --- a/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy +++ b/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy @@ -7,15 +7,22 @@ import static graphql.schema.GraphQLNonNull.nonNull class NonNullableFieldValidatorTest extends Specification { - ExecutionContext context = Mock(ExecutionContext) - def "non nullable field throws exception"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> true + } + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(GraphQLString)).build() - NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) + def parameters = Mock(ExecutionStrategyParameters) { + getPath() >> ResultPath.rootPath() + getExecutionStepInfo() >> typeInfo + } + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context) when: - validator.validate(ExecutionPath.rootPath(), null) + validator.validate(parameters, null) then: thrown(NonNullableFieldWasNullException) @@ -23,12 +30,42 @@ class NonNullableFieldValidatorTest extends Specification { } def "nullable field does not throw exception"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> true + } + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(GraphQLString).build() - NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) + def parameters = Mock(ExecutionStrategyParameters) { + getPath() >> ResultPath.rootPath() + getExecutionStepInfo() >> typeInfo + } + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context) + + when: + def result = validator.validate(parameters, null) + + then: + result == null + } + + def "non nullable field returns null if errors are not propagated"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> false + } + + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(GraphQLString)).build() + + def parameters = Mock(ExecutionStrategyParameters) { + getPath() >> ResultPath.rootPath() + getExecutionStepInfo() >> typeInfo + } + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context) when: - def result = validator.validate(ExecutionPath.rootPath(), null) + def result = validator.validate(parameters, null) then: result == null diff --git a/src/test/groovy/graphql/execution/NonNullableFieldWasNullExceptionTest.groovy b/src/test/groovy/graphql/execution/NonNullableFieldWasNullExceptionTest.groovy new file mode 100644 index 0000000000..7db3872664 --- /dev/null +++ b/src/test/groovy/graphql/execution/NonNullableFieldWasNullExceptionTest.groovy @@ -0,0 +1,120 @@ +package graphql.execution + +import graphql.ExecutionInput +import graphql.TestUtil +import spock.lang.Specification + +class NonNullableFieldWasNullExceptionTest extends Specification { + + def "lower level sets a null when it should not and it bubbles all the way up"() { + + def sdl = ''' + type Query { + topLevelField : Type1! + } + + type Type1 { + middleLevelField : Type2! + } + + type Type2 { + bottomLevelField : String! + } + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + { topLevelField { middleLevelField { bottomLevelField } } } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [topLevelField: [middleLevelField: [bottomLevelField: null]]] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].path.toList() == ["topLevelField", "middleLevelField", "bottomLevelField"] + } + + def "lower level sets a null when it should not and it bubbles up one"() { + def sdl = ''' + type Query { + topLevelField : Type1! + } + + type Type1 { + middleLevelField : Type2 + } + + type Type2 { + bottomLevelField : String! + } + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + { topLevelField { middleLevelField { bottomLevelField } } } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [topLevelField: [middleLevelField: [bottomLevelField: null]]] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == [topLevelField : [middleLevelField : null ]] + er.errors[0].path.toList() == ["topLevelField", "middleLevelField", "bottomLevelField"] + } + + def "a top level sets a null when it should not and it bubbles up one"() { + def sdl = ''' + type Query { + topLevelField : Type1! + } + + type Type1 { + middleLevelField : Type2 + } + + type Type2 { + bottomLevelField : String! + } + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + { topLevelField { middleLevelField { bottomLevelField } } } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [topLevelField: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].path.toList() == ["topLevelField"] + + when: + + ei = ExecutionInput.newExecutionInput(query).root( + null + ).build() + + er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].path.toList() == ["topLevelField"] + } +} diff --git a/src/test/groovy/graphql/execution/ExecutionPathTest.groovy b/src/test/groovy/graphql/execution/ResultPathTest.groovy similarity index 70% rename from src/test/groovy/graphql/execution/ExecutionPathTest.groovy rename to src/test/groovy/graphql/execution/ResultPathTest.groovy index 0e95092a08..146970cd6e 100644 --- a/src/test/groovy/graphql/execution/ExecutionPathTest.groovy +++ b/src/test/groovy/graphql/execution/ResultPathTest.groovy @@ -10,7 +10,7 @@ import graphql.schema.DataFetcher import spock.lang.Specification import spock.lang.Unroll -class ExecutionPathTest extends Specification { +class ResultPathTest extends Specification { @Unroll "unit test toList works as expected : #actual"() { @@ -19,11 +19,11 @@ class ExecutionPathTest extends Specification { actual.toList() == expected where: - actual || expected - ExecutionPath.rootPath() || [] - ExecutionPath.rootPath().segment("A") || ["A"] - ExecutionPath.rootPath().segment("A").segment(1).segment("B") || ["A", 1, "B"] - ExecutionPath.rootPath().segment("A").segment("B").segment(1) || ["A", "B", 1] + actual || expected + ResultPath.rootPath() || [] + ResultPath.rootPath().segment("A") || ["A"] + ResultPath.rootPath().segment("A").segment(1).segment("B") || ["A", 1, "B"] + ResultPath.rootPath().segment("A").segment("B").segment(1) || ["A", "B", 1] } @Unroll @@ -32,11 +32,11 @@ class ExecutionPathTest extends Specification { actual.toString() == expected where: - actual || expected - ExecutionPath.rootPath() || "" - ExecutionPath.rootPath().segment("A") || "/A" - ExecutionPath.rootPath().segment("A").segment(1).segment("B") || "/A[1]/B" - ExecutionPath.rootPath().segment("A").segment("B").segment(1) || "/A/B[1]" + actual || expected + ResultPath.rootPath() || "" + ResultPath.rootPath().segment("A") || "/A" + ResultPath.rootPath().segment("A").segment(1).segment("B") || "/A[1]/B" + ResultPath.rootPath().segment("A").segment("B").segment(1) || "/A/B[1]" } @Unroll @@ -46,10 +46,25 @@ class ExecutionPathTest extends Specification { actual.toList() == expected where: - actual || expected - ExecutionPath.rootPath() || [] - ExecutionPath.rootPath().segment("A").sibling("B") || ["B"] - ExecutionPath.rootPath().segment("A").segment(1).segment("B").sibling("C") || ["A", 1, "C"] + actual || expected + ResultPath.rootPath() || [] + ResultPath.rootPath().segment("A").sibling("B") || ["B"] + ResultPath.rootPath().segment("A").segment(1).segment("B").sibling("C") || ["A", 1, "C"] + } + + @Unroll + "unit test getLevel works as expected : #actual"() { + + expect: + actual.getLevel() == expected + + where: + actual || expected + ResultPath.rootPath() || 0 + ResultPath.rootPath().segment("A") || 1 + ResultPath.rootPath().segment("A").segment("B") || 2 + ResultPath.rootPath().segment("A").segment(1).segment("B") || 2 + ResultPath.rootPath().segment("A").segment("B").segment(1) || 2 } @@ -150,7 +165,7 @@ class ExecutionPathTest extends Specification { expect: - ExecutionPath.parse(pathString).toList() == expectedList + ResultPath.parse(pathString).toList() == expectedList where: @@ -166,7 +181,7 @@ class ExecutionPathTest extends Specification { def "test worst case parsing"() { when: - ExecutionPath.parse(badPathString) + ResultPath.parse(badPathString) then: thrown(AssertException) @@ -188,7 +203,7 @@ class ExecutionPathTest extends Specification { expect: - ExecutionPath.fromList(inputList).toString() == expectedString + ResultPath.fromList(inputList).toString() == expectedString where: @@ -201,7 +216,7 @@ class ExecutionPathTest extends Specification { def "get path without list end"() { when: - def path = ExecutionPath.fromList(["a", "b", 9]) + def path = ResultPath.fromList(["a", "b", 9]) path = path.getPathWithoutListEnd() then: path.toList() == ["a", "b"] @@ -212,11 +227,18 @@ class ExecutionPathTest extends Specification { path.toList() == ["a", "b"] } + def "pass any other object than string or int"(){ + when: + ResultPath.fromList(["a", "b", true]) + + then: + notThrown(ClassCastException) + } def "can append paths"() { when: - def path = ExecutionPath.fromList(["a", "b", 0]) - def path2 = ExecutionPath.fromList(["x", "y", 9]) + def path = ResultPath.fromList(["a", "b", 0]) + def path2 = ResultPath.fromList(["x", "y", 9]) def newPath = path.append(path2) @@ -225,19 +247,19 @@ class ExecutionPathTest extends Specification { when: - newPath = ExecutionPath.rootPath().append(path2) + newPath = ResultPath.rootPath().append(path2) then: newPath.toList() == ["x", "y", 9] when: - newPath = path2.append(ExecutionPath.rootPath()) + newPath = path2.append(ResultPath.rootPath()) then: newPath.toList() == ["x", "y", 9] when: - newPath = ExecutionPath.rootPath().append(ExecutionPath.rootPath()) + newPath = ResultPath.rootPath().append(ResultPath.rootPath()) then: newPath.toList() == [] @@ -245,7 +267,7 @@ class ExecutionPathTest extends Specification { def "replace support"() { when: - def path = ExecutionPath.fromList(["a", "b", 0]) + def path = ResultPath.fromList(["a", "b", 0]) def newPath = path.replaceSegment(1) then: @@ -264,19 +286,19 @@ class ExecutionPathTest extends Specification { newPath.toList() == ["a", "b", 99] when: - ExecutionPath.rootPath().replaceSegment(1) + ResultPath.rootPath().replaceSegment(1) then: thrown(AssertException) when: - ExecutionPath.rootPath().replaceSegment("x") + ResultPath.rootPath().replaceSegment("x") then: thrown(AssertException) when: - newPath = ExecutionPath.parse("/a/b[1]").replaceSegment("x") + newPath = ResultPath.parse("/a/b[1]").replaceSegment("x") then: newPath.toList() == ["a", "b", "x"] } diff --git a/src/test/groovy/graphql/execution/SimpleDataFetcherExceptionHandlerTest.groovy b/src/test/groovy/graphql/execution/SimpleDataFetcherExceptionHandlerTest.groovy new file mode 100644 index 0000000000..2ec5f380e0 --- /dev/null +++ b/src/test/groovy/graphql/execution/SimpleDataFetcherExceptionHandlerTest.groovy @@ -0,0 +1,58 @@ +package graphql.execution + + +import graphql.ExceptionWhileDataFetching +import graphql.schema.DataFetchingEnvironment +import spock.lang.Specification + +import java.util.concurrent.CompletionException + +import static graphql.Scalars.GraphQLString +import static graphql.execution.DataFetcherExceptionHandlerParameters.newExceptionParameters +import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo +import static graphql.execution.MergedField.newMergedField +import static graphql.language.Field.newField +import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment + +class SimpleDataFetcherExceptionHandlerTest extends Specification { + def handler = new SimpleDataFetcherExceptionHandler() + + + def "will wrap general exceptions"() { + when: + def handlerParameters = mkParams(new RuntimeException("RTE")) + def result = handler.handleException(handlerParameters) + + then: + result.join().errors[0] instanceof ExceptionWhileDataFetching + result.join().errors[0].getMessage().contains("RTE") + } + + def "can unwrap certain exceptions"() { + when: + def result = handler.handleException(mkParams(new CompletionException(new RuntimeException("RTE")))) + + then: + result.join().errors[0] instanceof ExceptionWhileDataFetching + result.join().errors[0].getMessage().contains("RTE") + } + + def "wont unwrap other exceptions"() { + when: + def result = handler.handleException(mkParams(new RuntimeException("RTE",new RuntimeException("BANG")))) + + then: + result.join().errors[0] instanceof ExceptionWhileDataFetching + ! result.join().errors[0].getMessage().contains("BANG") + } + + private static DataFetcherExceptionHandlerParameters mkParams(Exception exception) { + def mergedField = newMergedField(newField("f").build()).build() + def esi = newExecutionStepInfo() + .field(mergedField) + .type(GraphQLString).path(ResultPath.fromList(["hi"])).build() + DataFetchingEnvironment env = newDataFetchingEnvironment(). + mergedField(mergedField).executionStepInfo(esi).build() + newExceptionParameters().exception(exception).dataFetchingEnvironment(env).build() + } +} diff --git a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy index ceb03cdd5d..af3dcaf5ce 100644 --- a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy @@ -1,22 +1,42 @@ package graphql.execution +import graphql.AssertException import graphql.ErrorType import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL +import graphql.GraphQLError +import graphql.GraphqlErrorBuilder import graphql.TestUtil +import graphql.TypeMismatchError +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.LegacyTestingInstrumentation +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys +import graphql.execution.instrumentation.ModernTestingInstrumentation +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.FlowMessagePublisher import graphql.execution.pubsub.Message import graphql.execution.pubsub.ReactiveStreamsMessagePublisher +import graphql.execution.pubsub.ReactiveStreamsObjectPublisher import graphql.execution.pubsub.RxJavaMessagePublisher +import graphql.execution.reactive.SubscriptionPublisher import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import graphql.schema.PropertyDataFetcher import graphql.schema.idl.RuntimeWiring import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry import org.reactivestreams.Publisher import spock.lang.Specification import spock.lang.Unroll +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CopyOnWriteArrayList +import java.util.concurrent.atomic.AtomicInteger + import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class SubscriptionExecutionStrategyTest extends Specification { @@ -34,23 +54,100 @@ class SubscriptionExecutionStrategyTest extends Specification { type Subscription { newMessage(roomId:Int) : Message + newListOfMessages(roomId:Int): [Message] } """ GraphQL buildSubscriptionQL(DataFetcher newMessageDF) { - RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + buildSubscriptionQL(newMessageDF, PropertyDataFetcher.fetching("sender"), PropertyDataFetcher.fetching("text")) + } + + RuntimeWiring.Builder buildBaseSubscriptionWiring(DataFetcher senderDF, DataFetcher textDF) { + return RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Message") + .dataFetcher("sender", senderDF) + .dataFetcher("text", textDF) + .build()) + } + + GraphQL buildSubscriptionListQL(DataFetcher newListOfMessagesDF) { + return buildSubscriptionListQL(newListOfMessagesDF, PropertyDataFetcher.fetching("sender"), PropertyDataFetcher.fetching("text")) + } + + GraphQL buildSubscriptionListQL(DataFetcher newListOfMessagesDF, DataFetcher senderDF, DataFetcher textDF) { + RuntimeWiring runtimeWiring = buildBaseSubscriptionWiring(senderDF, textDF) + .type(newTypeWiring("Subscription").dataFetcher("newListOfMessages", newListOfMessagesDF).build()) + .build() + + return TestUtil.graphQL(idl, runtimeWiring).subscriptionExecutionStrategy(new SubscriptionExecutionStrategy()).build() + } + + GraphQL buildSubscriptionQL(DataFetcher newMessageDF, DataFetcher senderDF, DataFetcher textDF) { + RuntimeWiring runtimeWiring = buildBaseSubscriptionWiring(senderDF, textDF) .type(newTypeWiring("Subscription").dataFetcher("newMessage", newMessageDF).build()) .build() return TestUtil.graphQL(idl, runtimeWiring).subscriptionExecutionStrategy(new SubscriptionExecutionStrategy()).build() } + static GraphQLError mkError(String message) { + GraphqlErrorBuilder.newError().message(message).build() + } + + @Unroll + def "#2609 when a GraphQLList is expected and a non iterable or non array is passed then it should yield a TypeMismatch error (spec October2021/6.2.3.2.ExecuteSubscriptionEvent(...).5)"() { + given: + DataFetcher newListOfMessagesDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + return new ReactiveStreamsMessagePublisher(5) { + @Override + protected Message examineMessage(Message message, Integer at) { + // Should actually be list of messages ([Message]) + return new Message("aSender_" + at, "someText" + at) + } + } + } + } + + GraphQL graphQL = buildSubscriptionListQL(newListOfMessagesDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewListOfMessages { + newListOfMessages(roomId: 123) { + sender + text + } + } + """).build() + + when: + def executionResult = graphQL.execute(executionInput) + + Publisher msgStream = executionResult.getData() + + def capturingSubscriber = new CapturingSubscriber() + msgStream.subscribe(capturingSubscriber) + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + def messages = capturingSubscriber.events + messages.size() == 5 + for (int i = 0; i < messages.size(); i++) { + def message = messages[i] + assert message.errors.size() == 1 + assert message.errors[0] instanceof TypeMismatchError + assert message.errors[0].message.contains("/newListOfMessages") + assert message.errors[0].message.contains("LIST") + } + } @Unroll def "subscription query sends out a stream of events using the '#why' implementation"() { given: - Publisher publisher = eventStreamPublisher + Object publisher = eventStreamPublisher DataFetcher newMessageDF = new DataFetcher() { @Override @@ -79,6 +176,7 @@ class SubscriptionExecutionStrategyTest extends Specification { msgStream.subscribe(capturingSubscriber) then: + msgStream instanceof SubscriptionPublisher Awaitility.await().untilTrue(capturingSubscriber.isDone()) def messages = capturingSubscriber.events @@ -92,6 +190,7 @@ class SubscriptionExecutionStrategyTest extends Specification { why | eventStreamPublisher 'reactive streams stream' | new ReactiveStreamsMessagePublisher(10) 'rxjava stream' | new RxJavaMessagePublisher(10) + 'flow stream' | new FlowMessagePublisher(10) } @@ -99,7 +198,7 @@ class SubscriptionExecutionStrategyTest extends Specification { def "subscription alias is correctly used in response messages using '#why' implementation"() { given: - Publisher publisher = eventStreamPublisher + Object publisher = eventStreamPublisher DataFetcher newMessageDF = new DataFetcher() { @Override @@ -138,6 +237,7 @@ class SubscriptionExecutionStrategyTest extends Specification { why | eventStreamPublisher 'reactive streams stream' | new ReactiveStreamsMessagePublisher(1) 'rxjava stream' | new RxJavaMessagePublisher(1) + 'flow stream' | new FlowMessagePublisher(1) } @@ -149,7 +249,7 @@ class SubscriptionExecutionStrategyTest extends Specification { // capability and it costs us little to support it, lets have a test for it. // given: - Publisher publisher = eventStreamPublisher + Object publisher = eventStreamPublisher DataFetcher newMessageDF = new DataFetcher() { @Override @@ -190,7 +290,7 @@ class SubscriptionExecutionStrategyTest extends Specification { why | eventStreamPublisher 'reactive streams stream' | new ReactiveStreamsMessagePublisher(10) 'rxjava stream' | new RxJavaMessagePublisher(10) - + 'flow stream' | new FlowMessagePublisher(10) } @@ -223,6 +323,33 @@ class SubscriptionExecutionStrategyTest extends Specification { executionResult.errors.size() == 1 } + def "if you dont return a Publisher we will assert"() { + + DataFetcher newMessageDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + return "Not a Publisher" + } + } + + GraphQL graphQL = buildSubscriptionQL(newMessageDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + when: + graphQL.execute(executionInput) + + then: + thrown(AssertException) + } + def "subscription query will surface event stream exceptions"() { DataFetcher newMessageDF = new DataFetcher() { @@ -325,14 +452,503 @@ class SubscriptionExecutionStrategyTest extends Specification { if (i == 5) { message.data == null assert message.errors.size() == 2 - assert message.errors[0].errorType == ErrorType.DataFetchingException - assert message.errors[0].message == "Cannot return null for non-nullable type: 'String' within parent 'Message' (/newMessage/sender)" + assert message.errors[0].errorType == ErrorType.NullValueInNonNullableField + assert message.errors[0].message.contains("/newMessage/sender") - assert message.errors[1].errorType == ErrorType.DataFetchingException - assert message.errors[1].message == "Cannot return null for non-nullable type: 'String' within parent 'Message' (/newMessage/text)" + assert message.errors[1].errorType == ErrorType.NullValueInNonNullableField + assert message.errors[1].message.contains("/newMessage/text") } else { assert message.data == ["newMessage": [sender: "sender" + i, text: "text" + i]] } } } + + def "subscriptions can return DataFetcher results with errors"() { + + // + // this tests that we can wrap the Publisher in a DataFetcherResult AND that the return types of the Publisher + // can themselves be DataFetcherResult objects - hence DataFetcherResult>> + // in this case + DataFetcher newMessageDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + def objectMaker = { int index -> + def message = new Message("sender" + index, "text" + index) + GraphQLError error = null + if (index == 1) { + error = mkError("1 is the loneliest number that you'll ever know") + } + // wrap inner result in DataFetcherResult + def resultBuilder = DataFetcherResult.newResult().data(message).localContext(index) + if (error != null) { + resultBuilder.error(error) + } + return resultBuilder.build() + } + def publisher = new ReactiveStreamsObjectPublisher(10, objectMaker) + // we also use DFR here to wrap the publisher to show it can work + return DataFetcherResult.newResult().data(publisher).error(mkError("The top level field publisher can have errors")).build() + } + + } + + DataFetcher senderDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + Message msg = environment.getSource() + if (msg.sender == "sender1") { + return DataFetcherResult.newResult().data(msg.sender).error(mkError("Sub level fields can have errors")).build() + } + return msg.sender + } + } + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, PropertyDataFetcher.fetching("text")) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + when: + + def executionResult = graphQL.execute(executionInput) + + Publisher msgStream = executionResult.getData() + + def capturingSubscriber = new CapturingSubscriber() + msgStream.subscribe(capturingSubscriber) + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + executionResult.errors.size() == 1 + executionResult.errors[0].message == "The top level field publisher can have errors" + + def messages = capturingSubscriber.events + messages.size() == 10 + for (int i = 0; i < messages.size(); i++) { + def message = messages[i] + // error handling on publisher events + if (i == 1) { + assert message.errors[0].message == "1 is the loneliest number that you'll ever know" + assert message.errors[1].message == "Sub level fields can have errors" + } else { + assert message.errors.isEmpty(), "There should be no errors present" + } + assert message.data == ["newMessage": [sender: "sender" + i, text: "text" + i]] + } + } + + def "subscriptions local context works as expected"() { + + // + // make sure local context is preserved down the subscription + DataFetcher newMessageDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + def objectMaker = { int index -> + def message = new Message("sender" + index, "text" + index) + return DataFetcherResult.newResult().data(message).localContext(index).build() + } + def publisher = new ReactiveStreamsObjectPublisher(10, objectMaker) + // we also use DFR here to wrap the publisher to show it can work + return DataFetcherResult.newResult().data(publisher).build() + } + + } + + DataFetcher senderDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + Message msg = environment.getSource() + return msg.sender + "-lc:" + environment.getLocalContext() + } + } + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, PropertyDataFetcher.fetching("text")) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + when: + + def executionResult = graphQL.execute(executionInput) + + Publisher msgStream = executionResult.getData() + + def capturingSubscriber = new CapturingSubscriber() + msgStream.subscribe(capturingSubscriber) + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + def messages = capturingSubscriber.events + messages.size() == 10 + for (int i = 0; i < messages.size(); i++) { + def message = messages[i] + def senderVal = "sender" + i + "-lc:" + i + assert message.data == ["newMessage": [sender: senderVal, text: "text" + i]] + } + } + + def "instrumentation gets called on subscriptions"() { + + // + // make sure local context is preserved down the subscription + DataFetcher newMessageDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + new ReactiveStreamsObjectPublisher(10, { int index -> + new Message("sender" + index, "text" + index) + }) + } + } + + def instrumentResultCalls = [] + LegacyTestingInstrumentation instrumentation = new LegacyTestingInstrumentation() { + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + instrumentResultCalls.add("instrumentExecutionResult") + return CompletableFuture.completedFuture(executionResult) + } + } + GraphQL graphQL = buildSubscriptionQL(newMessageDF) + graphQL = graphQL.transform({ builder -> builder.instrumentation(instrumentation) }) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + when: + + def executionResult = graphQL.execute(executionInput) + + Publisher msgStream = executionResult.getData() + + def capturingSubscriber = new CapturingSubscriber() + msgStream.subscribe(capturingSubscriber) + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + def messages = capturingSubscriber.events + messages.size() == 10 + + def subscribedFieldCalls = instrumentation.executionList.findAll { s -> s.contains(":subscribed-field-event") } + subscribedFieldCalls.size() == 20 // start and end calls + subscribedFieldCalls.findAll { s -> s.contains("newMessage") }.size() == 20 // all for our subscribed field + + // this works because our calls are serial - if we truly had async values then the order would not work + subscribedFieldCalls.withIndex().collect({ s, index -> + if (index % 2 == 0) { + assert s.startsWith("start:"), "expected start: on even indexes" + } else { + assert s.startsWith("end:"), "expected end: on odd indexes" + } + }) + + instrumentResultCalls.size() == 11 // one for the initial execution and then one for each stream event + } + + def "emits results in the order they complete"() { + List promises = [] + Publisher publisher = new RxJavaMessagePublisher(10) + + DataFetcher newMessageDF = { env -> return publisher } + DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) + DataFetcher textDF = PropertyDataFetcher.fetching("text") + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(100) + msgStream.subscribe(capturingSubscriber) + + // make them all complete but in reverse order + promises.reverse().forEach { it.run() } + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + // in order they completed - which was reversed + def messages = capturingSubscriber.events + messages.size() == 10 + for (int i = 0, j = messages.size() - 1; i < messages.size(); i++, j--) { + def message = messages[i].data + assert message == ["newMessage": [sender: "sender" + j, text: "text" + j]] + } + } + + def "emits results in the order they where emitted by source"() { + List promises = [] + Publisher publisher = new RxJavaMessagePublisher(10) + + DataFetcher newMessageDF = { env -> return publisher } + DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) + DataFetcher textDF = PropertyDataFetcher.fetching("text") + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).graphQLContext([(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED): true]).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(100) + msgStream.subscribe(capturingSubscriber) + + // make them all complete but in reverse order + promises.reverse().forEach { it.run() } + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + // in order they were emitted originally - they have been buffered + def messages = capturingSubscriber.events + messages.size() == 10 + for (int i = 0; i < messages.size(); i++) { + def message = messages[i].data + assert message == ["newMessage": [sender: "sender" + i, text: "text" + i]] + } + } + + def "we can cancel the operation and the upstream publisher is told"() { + List promises = new CopyOnWriteArrayList<>() + RxJavaMessagePublisher publisher = new RxJavaMessagePublisher(10) + + DataFetcher newMessageDF = { env -> return publisher } + DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) + DataFetcher textDF = PropertyDataFetcher.fetching("text") + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).graphQLContext([(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED): true]).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(1) + msgStream.subscribe(capturingSubscriber) + + // now cancel the operation + executionInput.cancel() + + // make things over the subscription + promises.forEach { it.run() } + + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + def messages = capturingSubscriber.events + messages.size() == 1 + def error = messages[0].errors[0] + assert error.message.contains("Execution has been asked to be cancelled") + publisher.counter == 2 + } + + private static DataFetcher dfThatDoesNotComplete(String propertyName, List promises) { + { env -> + def df = PropertyDataFetcher.fetching(propertyName) + def value = df.get(env) + + def cf = new CompletableFuture() + promises.add({ cf.complete(value) }) + return cf + } + } + + + @Unroll + def "DataLoader works on each subscription event"() { + given: + def sdl = """ + type Query { + hello: String + } + + type Subscription { + newDogs: [Dog] + } + + type Dog { + name: String + } + """ + + AtomicInteger batchLoaderCalled = new AtomicInteger(0) + BatchLoader batchLoader = { keys -> + println "batchLoader called with keys: $keys" + batchLoaderCalled.incrementAndGet() + assert keys.size() == 2 + CompletableFuture.completedFuture(["Luna", "Skipper"]) + } + def dataLoader = DataLoaderFactory.newDataLoader("dogsNameLoader", batchLoader) + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("dogsNameLoader", dataLoader) + + DataFetcher dogsNameDF = { env -> + println "dogsNameDF called" + env.getDataLoader("dogsNameLoader").load(env.getSource()) + } + DataFetcher newDogsDF = { env -> + println "newDogsDF called" + def dogNames = ["Luna", "Skipper"] + return new ReactiveStreamsObjectPublisher(3, { int index -> + return dogNames.collect { it -> it + "$index" } + }) + } + + def query = '''subscription { + newDogs { + name + } + }''' + def schema = TestUtil.schema(sdl, [ + Subscription: [newDogs: newDogsDF], + Dog : [name: dogsNameDF] + ]) + ExecutionInput ei = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .build() + def graphQL = GraphQL.newGraphQL(schema) + .build() + + if (exhaustedStrategy) { + ei.getGraphQLContext().put(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, true) + } + + when: + def executionResult = graphQL.execute(ei) + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(3) + msgStream.subscribe(capturingSubscriber) + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + then: + def events = capturingSubscriber.events + events.size() == 3 + batchLoaderCalled.get() == 3 // batchLoader should be called once for each event + + events[0].data == ["newDogs": [[name: "Luna"], [name: "Skipper"]]] + events[1].data == ["newDogs": [[name: "Luna"], [name: "Skipper"]]] + events[2].data == ["newDogs": [[name: "Luna"], [name: "Skipper"]]] + + where: + exhaustedStrategy << [false, true] + } + + + def "can instrument subscription reactive ending"() { + + given: + Object publisher = new ReactiveStreamsMessagePublisher(2) + + DataFetcher newMessageDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + return publisher + } + } + + def wiringBuilder = buildBaseSubscriptionWiring( + PropertyDataFetcher.fetching("sender"), PropertyDataFetcher.fetching("text") + ) + RuntimeWiring runtimeWiring = wiringBuilder + .type(newTypeWiring("Subscription").dataFetcher("newMessage", newMessageDF).build()) + .build() + + def instrumentation = new ModernTestingInstrumentation() + + def graphQL = TestUtil.graphQL(idl, runtimeWiring) + .instrumentation(instrumentation) + .subscriptionExecutionStrategy(new SubscriptionExecutionStrategy()).build() + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber() + msgStream.subscribe(capturingSubscriber) + + then: + msgStream instanceof SubscriptionPublisher + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + TestUtil.listContainsInOrder(instrumentation.executionList, [ + "start:execution", + "start:parse", + "end:parse", + "start:validation", + "end:validation", + "start:execute-operation", + "start:execution-strategy", + "start:fetch-newMessage", + "end:fetch-newMessage", + "start:reactive-results-subscription", + "end:execution-strategy", + "end:execute-operation", + "end:execution", + ], [ + // followed by + "end:reactive-results-subscription" + ]) + + // last of all it finishes + TestUtil.last(instrumentation.executionList) == "end:reactive-results-subscription" + } } diff --git a/src/test/groovy/graphql/execution/ValuesResolverE2ETest.groovy b/src/test/groovy/graphql/execution/ValuesResolverE2ETest.groovy new file mode 100644 index 0000000000..590d84e277 --- /dev/null +++ b/src/test/groovy/graphql/execution/ValuesResolverE2ETest.groovy @@ -0,0 +1,136 @@ +package graphql.execution + +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.GraphQL +import graphql.Scalars +import graphql.TestUtil +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry +import graphql.schema.GraphQLInputObjectType +import graphql.schema.GraphQLList +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLSchema +import spock.lang.Specification + +class ValuesResolverE2ETest extends Specification { + + def "issue 3276 - reported bug on validation problems as SDL"() { + def sdl = ''' + type Query { + items(pagination: Pagination = {limit: 10, offset: 0}): [String] + } + + input Pagination { + limit: Int + offset: Int + } + ''' + DataFetcher df = { DataFetchingEnvironment env -> + def pagination = env.getArgument("pagination") as Map + def strings = pagination.entrySet().collect { entry -> entry.key + "=" + entry.value } + return strings + } + def schema = TestUtil.schema(sdl, [Query: [items: df]]) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def ei = ExecutionInput.newExecutionInput(''' + query Items($limit: Int, $offset: Int) { + items(pagination: {limit: $limit, offset: $offset}) + } + ''').variables([limit: 5, offset: 0]).build() + def er = graphQL.execute(ei) + then: + er.errors.isEmpty() + er.data == [items : ["limit=5", "offset=0"]] + } + + def "issue 3276 - reported bug on validation problems as reported code"() { + DataFetcher dataFetcher = { env -> + def pagination = env.getArgument("pagination") as Map + def strings = pagination.entrySet().collect { entry -> entry.key + "=" + entry.value } + return strings + } + GraphQLSchema schema = GraphQLSchema.newSchema() + .query(GraphQLObjectType.newObject() + .name("Query") + .field(items -> items + .name("items") + .type(GraphQLList.list(Scalars.GraphQLString)) + .argument(pagination -> pagination + .name("pagination") + //skipped adding the default limit/offset values as it doesn't change anything + .defaultValueProgrammatic(new HashMap<>()) + .type(GraphQLInputObjectType.newInputObject() + .name("Pagination") + .field(limit -> limit + .name("limit") + .type(Scalars.GraphQLInt)) + .field(offset -> offset + .name("offset") + .type(Scalars.GraphQLInt)) + .build()))) + .build()) + .codeRegistry(GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(FieldCoordinates.coordinates("Query", "items"), dataFetcher) + .build()) + .build() + + GraphQL gql = GraphQL.newGraphQL(schema).build() + + Map vars = new HashMap<>() + vars.put("limit", 5) + vars.put("offset", 0) + + ExecutionInput ei = ExecutionInput.newExecutionInput() + .query("query Items( \$limit: Int, \$offset: Int) {\n" + + " items(\n" + + " pagination: {limit: \$limit, offset: \$offset} \n" + + " )\n" + + "}") + .variables(vars) + .build() + + when: + ExecutionResult result = gql.execute( ei) + then: + result.errors.isEmpty() + result.data == [items : ["limit=5", "offset=0"]] + } + + def "issue 3276 - should end up in validation errors because location defaults are not present"() { + def sdl = ''' + type Query { + items(pagination: Pagination = {limit: 1, offset: 1}): [String] + } + input Pagination { + limit: Int! #non-null this time, no default value + offset: Int! #non-null this time, no default value + } + ''' + DataFetcher df = { DataFetchingEnvironment env -> + def pagination = env.getArgument("pagination") as Map + def strings = pagination.entrySet().collect { entry -> entry.key + "=" + entry.value } + return strings + } + def schema = TestUtil.schema(sdl, [Query: [items: df]]) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def ei = ExecutionInput.newExecutionInput(''' + query Items( $limit: Int, $offset: Int) { + items( + pagination: {limit: $limit, offset: $offset} + ) + } + ''').variables([limit: 5, offset: null]).build() + def er = graphQL.execute(ei) + then: + er.errors.size() == 2 + er.errors[0].message == "Validation error (VariableTypeMismatch@[items]) : Variable 'limit' of type 'Int' used in position expecting type 'Int!'" + er.errors[1].message == "Validation error (VariableTypeMismatch@[items]) : Variable 'offset' of type 'Int' used in position expecting type 'Int!'" + } +} diff --git a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy index bcf1e22a89..b9256f1304 100644 --- a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy +++ b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy @@ -1,5 +1,8 @@ package graphql.execution +import graphql.Directives +import graphql.ErrorType +import graphql.GraphQLContext import graphql.GraphQLException import graphql.TestUtil import graphql.language.Argument @@ -9,22 +12,26 @@ import graphql.language.EnumValue import graphql.language.IntValue import graphql.language.ListType import graphql.language.NonNullType +import graphql.language.NullValue import graphql.language.ObjectField import graphql.language.ObjectValue +import graphql.language.SourceLocation import graphql.language.StringValue import graphql.language.TypeName import graphql.language.Value import graphql.language.VariableDefinition import graphql.language.VariableReference import graphql.schema.CoercingParseValueException -import graphql.schema.GraphQLArgument +import graphql.schema.DataFetcher import spock.lang.Specification import spock.lang.Unroll +import static graphql.ExecutionInput.newExecutionInput import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLFloat import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString +import static graphql.schema.GraphQLArgument.newArgument import static graphql.schema.GraphQLEnumType.newEnum import static graphql.schema.GraphQLInputObjectField.newInputObjectField import static graphql.schema.GraphQLInputObjectType.newInputObject @@ -33,26 +40,26 @@ import static graphql.schema.GraphQLNonNull.nonNull class ValuesResolverTest extends Specification { - ValuesResolver resolver = new ValuesResolver() + def graphQLContext = GraphQLContext.getDefault() + def locale = Locale.getDefault() @Unroll def "getVariableValues: simple variable input #inputValue"() { given: def schema = TestUtil.schemaWithInputType(inputType) - VariableDefinition variableDefinition = new VariableDefinition("variable", variableType) + VariableDefinition variableDefinition = new VariableDefinition("variable", variableType, null) when: - def resolvedValues = resolver.coerceVariableValues(schema, [variableDefinition], [variable: inputValue]) + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: inputValue]), graphQLContext, locale) then: - resolvedValues['variable'] == outputValue + resolvedValues.get('variable') == outputValue where: inputType | variableType | inputValue || outputValue GraphQLInt | new TypeName("Int") | 100 || 100 GraphQLString | new TypeName("String") | 'someString' || 'someString' - GraphQLBoolean | new TypeName("Boolean") | 'true' || true - GraphQLFloat | new TypeName("Float") | '42.43' || 42.43d - + GraphQLBoolean | new TypeName("Boolean") | true || true + GraphQLFloat | new TypeName("Float") | 42.43d || 42.43d } def "getVariableValues: map object as variable input"() { @@ -72,9 +79,9 @@ class ValuesResolverTest extends Specification { VariableDefinition variableDefinition = new VariableDefinition("variable", new TypeName("Person")) when: - def resolvedValues = resolver.coerceVariableValues(schema, [variableDefinition], [variable: inputValue]) + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: inputValue]), graphQLContext, locale) then: - resolvedValues['variable'] == outputValue + resolvedValues.get('variable') == outputValue where: inputValue || outputValue [name: 'a', id: 123] || [name: 'a', id: 123] @@ -82,6 +89,72 @@ class ValuesResolverTest extends Specification { [name: 'x'] || [name: 'x'] } + def "getVariableValues: @oneOf map object as variable input"() { + given: + def aField = newInputObjectField() + .name("a") + .type(GraphQLString) + def bField = newInputObjectField() + .name("b") + .type(GraphQLString) + def inputType = newInputObject() + .name("Person") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(aField) + .field(bField) + .build() + def schema = TestUtil.schemaWithInputType(inputType) + VariableDefinition variableDefinition = new VariableDefinition("variable", new TypeName("Person")) + + when: + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: [a: 'x']]), graphQLContext, locale) + then: + resolvedValues.get('variable') == [a: 'x'] + + when: + resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: [b: 'y']]), graphQLContext, locale) + then: + resolvedValues.get('variable') == [b: 'y'] + + when: + ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: [a: 'x', b: 'y']]), graphQLContext, locale) + then: + thrown(OneOfTooManyKeysException.class) + } + + def "can validate inner input oneOf fields"() { + // + // a test from https://github.com/graphql-java/graphql-java/issues/3572 + // + def sdl = ''' + input OneOf @oneOf { a: Int, b: Int } + type Outer { inner(oneof: OneOf!): Boolean } + type Query { outer: Outer } + ''' + + DataFetcher outer = { env -> return null } + def graphQL = TestUtil.graphQL(sdl, [Query: [outer: outer]]).build() + + def query = ''' + query ($oneof: OneOf!) { + outer { + # these variables are never accessed by a data fetcher because + # Query.outer always returns null + inner(oneof: $oneof) + } + } + ''' + + when: + def er = graphQL.execute( + newExecutionInput(query).variables([oneof: [a: 2, b: 1]]) + ) + + then: + er.errors.size() == 1 + er.errors[0].message == "Exactly one key must be specified for OneOf type 'OneOf'." + } + class Person { def name = "" @@ -112,7 +185,7 @@ class ValuesResolverTest extends Specification { when: def obj = new Person('a', 123) - resolver.coerceVariableValues(schema, [variableDefinition], [variable: obj]) + ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: obj]), graphQLContext, locale) then: thrown(CoercingParseValueException) } @@ -123,51 +196,91 @@ class ValuesResolverTest extends Specification { VariableDefinition variableDefinition = new VariableDefinition("variable", new ListType(new TypeName("String"))) String value = "world" when: - def resolvedValues = resolver.coerceVariableValues(schema, [variableDefinition], [variable: value]) + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: value]), graphQLContext, locale) then: - resolvedValues['variable'] == ['world'] + resolvedValues.get('variable') == ['world'] + } + def "getVariableValues: list value gets resolved to a list when the type is a List"() { + given: + def schema = TestUtil.schemaWithInputType(list(GraphQLString)) + VariableDefinition variableDefinition = new VariableDefinition("variable", new ListType(new TypeName("String"))) + List value = ["hello", "world"] + when: + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: value]), graphQLContext, locale) + then: + resolvedValues.get('variable') == ['hello', 'world'] } + def "getVariableValues: array value gets resolved to a list when the type is a List"() { + given: + def schema = TestUtil.schemaWithInputType(list(GraphQLString)) + VariableDefinition variableDefinition = new VariableDefinition("variable", new ListType(new TypeName("String"))) + String[] value = ["hello", "world"] as String[] + when: + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: value]), graphQLContext, locale) + then: + resolvedValues.get('variable') == ['hello', 'world'] + } def "getArgumentValues: resolves argument with variable reference"() { given: - def variables = [var: 'hello'] - def fieldArgument = new GraphQLArgument("arg", GraphQLString) + def variables = CoercedVariables.of([var: 'hello']) + def fieldArgument = newArgument().name("arg").type(GraphQLString).build() def argument = new Argument("arg", new VariableReference("var")) when: - def values = resolver.getArgumentValues([fieldArgument], [argument], variables) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) then: values['arg'] == 'hello' } + def "getArgumentValues: uses default value with null variable reference value"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("inputObject") + .field(newInputObjectField() + .name("inputField") + .type(GraphQLString)) + .build() + + def fieldArgument = newArgument().name("arg").type(inputObjectType).defaultValueProgrammatic([inputField: "hello"]).build() + def argument = new Argument("arg", new VariableReference("var")) + + when: + def variables = CoercedVariables.emptyVariables() + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + values['arg'] == [inputField: 'hello'] + } + def "getArgumentValues: resolves object literal"() { given: "schema defining input object" def subObjectType = newInputObject() .name("SubType") .field(newInputObjectField() - .name("subKey") - .type(GraphQLBoolean)) + .name("subKey") + .type(GraphQLBoolean)) .build() def inputObjectType = newInputObject() .name("inputObject") .field(newInputObjectField() - .name("intKey") - .type(GraphQLInt)) + .name("intKey") + .type(GraphQLInt)) .field(newInputObjectField() - .name("stringKey") - .type(GraphQLString)) + .name("stringKey") + .type(GraphQLString)) .field(newInputObjectField() - .name("subObject") - .type(subObjectType)) + .name("subObject") + .type(subObjectType)) .build() - def fieldArgument = new GraphQLArgument("arg", inputObjectType) + def fieldArgument = newArgument().name("arg").type(inputObjectType).build() when: def argument = new Argument("arg", inputValue) - def values = resolver.getArgumentValues([fieldArgument], [argument], [:]) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], CoercedVariables.emptyVariables(), graphQLContext, locale) then: values['arg'] == outputValue @@ -201,21 +314,21 @@ class ValuesResolverTest extends Specification { def inputObjectType = newInputObject() .name("inputObject") .field(newInputObjectField() - .name("intKey") - .type(nonNull(GraphQLInt)) - .defaultValue(3) - .build()) + .name("intKey") + .type(nonNull(GraphQLInt)) + .defaultValueProgrammatic(3) + .build()) .field(newInputObjectField() - .name("stringKey") - .type(GraphQLString) - .defaultValue("defaultString") - .build()) + .name("stringKey") + .type(GraphQLString) + .defaultValueProgrammatic("defaultString") + .build()) .build() - def fieldArgument = new GraphQLArgument("arg", inputObjectType) + def fieldArgument = newArgument().name("arg").type(inputObjectType).build() when: def argument = new Argument("arg", inputValue) - def values = resolver.getArgumentValues([fieldArgument], [argument], [:]) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], CoercedVariables.emptyVariables(), graphQLContext, locale) then: values['arg'] == outputValue @@ -238,25 +351,6 @@ class ValuesResolverTest extends Specification { ] } - def "getArgumentValues: missing InputObject fields which are non-null cause error"() { - given: "schema defining input object" - def inputObjectType = newInputObject() - .name("inputObject") - .field(newInputObjectField() - .name("intKey") - .type(nonNull(GraphQLInt)) - .build()) - .build() - def fieldArgument = new GraphQLArgument("arg", inputObjectType) - - when: - def argument = new Argument("arg", ObjectValue.newObjectValue().build()) - resolver.getArgumentValues([fieldArgument], [argument], [:]) - - then: - thrown(GraphQLException) - } - ObjectValue buildObjectLiteral(Map contents) { def object = ObjectValue.newObjectValue() contents.each { key, value -> @@ -279,10 +373,10 @@ class ValuesResolverTest extends Specification { .value("PLUTO") .value("MARS", "mars") .build() - def fieldArgument1 = new GraphQLArgument("arg1", enumType) - def fieldArgument2 = new GraphQLArgument("arg2", enumType) + def fieldArgument1 = newArgument().name("arg1").type(enumType).build() + def fieldArgument2 = newArgument().name("arg2").type(enumType).build() when: - def values = resolver.getArgumentValues([fieldArgument1, fieldArgument2], [argument1, argument2], [:]) + def values = ValuesResolver.getArgumentValues([fieldArgument1, fieldArgument2], [argument1, argument2], CoercedVariables.emptyVariables(), graphQLContext, locale) then: values['arg1'] == 'PLUTO' @@ -296,14 +390,13 @@ class ValuesResolverTest extends Specification { arrayValue.value(new BooleanValue(false)) def argument = new Argument("arg", arrayValue.build()) - def fieldArgument = new GraphQLArgument("arg", list(GraphQLBoolean)) + def fieldArgument = newArgument().name("arg").type(list(GraphQLBoolean)).build() when: - def values = resolver.getArgumentValues([fieldArgument], [argument], [:]) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], CoercedVariables.emptyVariables(), graphQLContext, locale) then: values['arg'] == [true, false] - } def "getArgumentValues: resolves single value literal to a list when type is a list "() { @@ -311,13 +404,642 @@ class ValuesResolverTest extends Specification { StringValue stringValue = new StringValue("world") def argument = new Argument("arg", stringValue) - def fieldArgument = new GraphQLArgument("arg", list(GraphQLString)) + def fieldArgument = newArgument().name("arg").type(list(GraphQLString)).build() when: - def values = resolver.getArgumentValues([fieldArgument], [argument], [:]) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], CoercedVariables.emptyVariables(), graphQLContext, locale) then: values['arg'] == ['world'] + } + + def "getArgumentValues: invalid oneOf input because of duplicate keys - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + def argument = new Argument("arg", inputValue) + + when: + def fieldArgument = newArgument().name("arg").type(inputObjectType).build() + ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfTooManyKeysException) + e.message == "Exactly one key must be specified for OneOf type 'oneOfInputObject'." + + when: "input type is wrapped in non-null" + def nonNullInputObjectType = nonNull(inputObjectType) + def fieldArgumentNonNull = newArgument().name("arg").type(nonNullInputObjectType).build() + ValuesResolver.getArgumentValues([fieldArgumentNonNull], [argument], variables, graphQLContext, locale) + + then: + def eNonNull = thrown(OneOfTooManyKeysException) + eNonNull.message == "Exactly one key must be specified for OneOf type 'oneOfInputObject'." + + where: + // from https://github.com/graphql/graphql-spec/pull/825/files#diff-30a69c5a5eded8e1aea52e53dad1181e6ec8f549ca2c50570b035153e2de1c43R1692 + testCase | inputValue | variables + + '{ a: "abc", b: 123 } {}' | buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ]) | CoercedVariables.emptyVariables() + + '{ a: null, b: 123 } {}' | buildObjectLiteral([ + a: NullValue.of(), + b: IntValue.of(123) + ]) | CoercedVariables.emptyVariables() + + '{ a: $var, b: 123 } { var: null }' | buildObjectLiteral([ + a: VariableReference.of("var"), + b: IntValue.of(123) + ]) | CoercedVariables.of(["var": null]) + + '{ a: $var, b: 123 } {}' | buildObjectLiteral([ + a: VariableReference.of("var"), + b: IntValue.of(123) + ]) | CoercedVariables.emptyVariables() + + '{ a : "abc", b : null} {}' | buildObjectLiteral([ + a: StringValue.of("abc"), + b: NullValue.of() + ]) | CoercedVariables.emptyVariables() + + '{ a : null, b : null} {}' | buildObjectLiteral([ + a: NullValue.of(), + b: NullValue.of() + ]) | CoercedVariables.emptyVariables() + + '{ a : $a, b : $b} {a : "abc"}' | buildObjectLiteral([ + a: VariableReference.of("a"), + b: VariableReference.of("v") + ]) | CoercedVariables.of(["a": "abc"]) + + '$var {var : { a : "abc", b : 123}}' | VariableReference.of("var") + | CoercedVariables.of(["var": ["a": "abc", "b": 123]]) + + '$var {var : {}}' | VariableReference.of("var") + | CoercedVariables.of(["var": [:]]) + } + + def "getArgumentValues: invalid oneOf nested input because of duplicate keys - #testCase"() { + given: "schema defining input object" + def oneOfObjectType = newInputObject() + .name("OneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + def parentObjectType = newInputObject() + .name("ParentInputObject") + .field(newInputObjectField() + .name("oneOfField") + .type(oneOfObjectType) + .build()) + .build() + + def argument = new Argument("arg", inputValue) + + when: + def fieldArgument = newArgument().name("arg").type(parentObjectType).build() + ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfTooManyKeysException) + e.message == "Exactly one key must be specified for OneOf type 'OneOfInputObject'." + + where: + testCase | inputValue | variables + '{oneOfField: {a: "abc", b: 123} } {}' | buildObjectLiteral([ + oneOfField: [ + a: StringValue.of("abc"), + b: IntValue.of(123) + ] + ]) | CoercedVariables.emptyVariables() + '{oneOfField: {a: null, b: 123 }} {}' | buildObjectLiteral([ + oneOfField: [ + a: NullValue.of(), + b: IntValue.of(123) + ] + ]) | CoercedVariables.emptyVariables() + + '{oneOfField: {a: $var, b: 123 }} { var: null }' | buildObjectLiteral([ + oneOfField: [ + a: VariableReference.of("var"), + b: IntValue.of(123) + ] + ]) | CoercedVariables.of(["var": null]) + + '{oneOfField: {a: $var, b: 123 }} {}' | buildObjectLiteral([ + oneOfField: [ + a: VariableReference.of("var"), + b: IntValue.of(123) + ] + ]) | CoercedVariables.emptyVariables() + + '{oneOfField: {a : "abc", b : null}} {}' | buildObjectLiteral([ + oneOfField: [ + a: StringValue.of("abc"), + b: NullValue.of() + ] + ]) | CoercedVariables.emptyVariables() + + '{oneOfField: {a : null, b : null}} {}' | buildObjectLiteral([ + oneOfField: [ + a: NullValue.of(), + b: NullValue.of() + ] + ]) | CoercedVariables.emptyVariables() + + '{oneOfField: {a : $a, b : $b}} {a : "abc"}' | buildObjectLiteral([ + oneOfField: [ + a: VariableReference.of("a"), + b: VariableReference.of("v") + ] + ]) | CoercedVariables.of(["a": "abc"]) + '$var {var : {oneOfField: { a : "abc", b : 123}}}' | VariableReference.of("var") + | CoercedVariables.of(["var": ["oneOfField": ["a": "abc", "b": 123]]]) + + '$var {var : {oneOfField: {} }}' | VariableReference.of("var") + | CoercedVariables.of(["var": ["oneOfField": [:]]]) + + } + + def "getArgumentValues: invalid oneOf nested input because of null value - #testCase"() { + given: "schema defining input object" + def oneOfObjectType = newInputObject() + .name("OneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + def parentObjectType = newInputObject() + .name("ParentInputObject") + .field(newInputObjectField() + .name("oneOfField") + .type(oneOfObjectType) + .build()) + .build() + + + def fieldArgument = newArgument().name("arg").type(parentObjectType).build() + + when: + def argument = new Argument("arg", inputValue) + ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfNullValueException) + e.message == "OneOf type field 'OneOfInputObject.a' must be non-null." + + where: + // from https://github.com/graphql/graphql-spec/pull/825/files#diff-30a69c5a5eded8e1aea52e53dad1181e6ec8f549ca2c50570b035153e2de1c43R1692 + testCase | inputValue | variables + + '`{ oneOfField: { a: null }}` {}' | buildObjectLiteral([ + oneOfField: [a: NullValue.of()] + ]) | CoercedVariables.emptyVariables() + + '`{ oneOfField: { a: $var }}` { var : null}' | buildObjectLiteral([ + oneOfField: [a: VariableReference.of("var")] + ]) | CoercedVariables.of(["var": null]) + + } + + def "getArgumentValues: invalid oneOf input because of null value - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + def fieldArgument = newArgument().name("arg").type(inputObjectType).build() + + when: + def argument = new Argument("arg", inputValue) + ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfNullValueException) + e.message == "OneOf type field 'oneOfInputObject.a' must be non-null." + + where: + // from https://github.com/graphql/graphql-spec/pull/825/files#diff-30a69c5a5eded8e1aea52e53dad1181e6ec8f549ca2c50570b035153e2de1c43R1692 + testCase | inputValue | variables + + '`{ a: null }` {}' | buildObjectLiteral([ + a: NullValue.of() + ]) | CoercedVariables.emptyVariables() + + '`{ a: $var }` { var : null}' | buildObjectLiteral([ + a: VariableReference.of("var") + ]) | CoercedVariables.of(["var": null]) + + '`{ a: $var }` { }' | buildObjectLiteral([ + a: VariableReference.of("var") + ]) | CoercedVariables.emptyVariables() + } + + def "getArgumentValues: invalid oneOf list input because element contains duplicate key - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + when: + def argument = new Argument("arg", inputArray) + def fieldArgumentList = newArgument().name("arg").type(list(inputObjectType)).build() + ValuesResolver.getArgumentValues([fieldArgumentList], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfTooManyKeysException) + e.message == "Exactly one key must be specified for OneOf type 'oneOfInputObject'." + + where: + + testCase | inputArray | variables + + '[{ a: "abc", b: 123 }]' + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ])).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, { a: "xyz", b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + buildObjectLiteral([ + a: StringValue.of("xyz"), + b: IntValue.of(789) + ]), + ]).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, $var ] [{ a: "abc" }, { a: "xyz", b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [a: "xyz", b: 789]) + + } + + def "getArgumentValues: invalid oneOf list input because element contains null value - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + when: + def argument = new Argument("arg", inputArray) + def fieldArgumentList = newArgument().name("arg").type(list(inputObjectType)).build() + ValuesResolver.getArgumentValues([fieldArgumentList], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfNullValueException) + e.message == "OneOf type field 'oneOfInputObject.a' must be non-null." + + where: + + testCase | inputArray | variables + + '[{ a: "abc" }, { a: null }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + buildObjectLiteral([ + a: NullValue.of() + ]), + ]).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, { a: $var }] [{ a: "abc" }, { a: null }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + buildObjectLiteral([ + a: VariableReference.of("var") + ]), + ]).build() + | CoercedVariables.of("var": null) + + } + + def "getArgumentValues: invalid oneOf non-null list input because element contains duplicate key - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + when: + def argument = new Argument("arg", inputArray) + def fieldArgumentList = newArgument().name("arg").type(nonNull(list(inputObjectType))).build() + ValuesResolver.getArgumentValues([fieldArgumentList], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfTooManyKeysException) + e.message == "Exactly one key must be specified for OneOf type 'oneOfInputObject'." + + where: + + testCase | inputArray | variables + + '[{ a: "abc", b: 123 }]' + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ])).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, { a: "xyz", b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + buildObjectLiteral([ + a: StringValue.of("xyz"), + b: IntValue.of(789) + ]), + ]).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, $var ] [{ a: "abc" }, { a: "xyz", b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [a: "xyz", b: 789]) + + } + + def "getArgumentValues: invalid oneOf list input with non-nullable elements, because element contains duplicate key - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + when: + def argument = new Argument("arg", inputArray) + def fieldArgumentList = newArgument().name("arg").type(list(nonNull(inputObjectType))).build() + ValuesResolver.getArgumentValues([fieldArgumentList], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfTooManyKeysException) + e.message == "Exactly one key must be specified for OneOf type 'oneOfInputObject'." + + where: + + testCase | inputArray | variables + + '[{ a: "abc", b: 123 }]' + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ])).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, { a: "xyz", b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + buildObjectLiteral([ + a: StringValue.of("xyz"), + b: IntValue.of(789) + ]), + ]).build() + | CoercedVariables.emptyVariables() + + '[{ a: "abc" }, $var ] [{ a: "abc" }, { a: "xyz", b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [a: "xyz", b: 789]) + + } + + def "getArgumentValues: valid oneOf input - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + def fieldArgument = newArgument().name("arg").type(inputObjectType).build() + + when: + def argument = new Argument("arg", inputValue) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + values == expectedValues + + where: + // from https://github.com/graphql/graphql-spec/pull/825/files#diff-30a69c5a5eded8e1aea52e53dad1181e6ec8f549ca2c50570b035153e2de1c43R1692 + testCase | inputValue | variables | expectedValues + + '{ b: 123 }` {}' | buildObjectLiteral([ + b: IntValue.of(123) + ]) | CoercedVariables.emptyVariables() | [arg: [b: 123]] + + '`$var` { var: { b: 123 } }' | VariableReference.of("var") + | CoercedVariables.of([var: [b: 123]]) | [arg: [b: 123]] + + '{ a: "abc" }` {}' | buildObjectLiteral([ + a: StringValue.of("abc") + ]) | CoercedVariables.emptyVariables() | [arg: [a: "abc"]] + + + '`$var` { var: { a: "abc" } }' | VariableReference.of("var") + | CoercedVariables.of([var: [a: "abc"]]) | [arg: [a: "abc"]] + + '{ a: $var }` { var : "abc"}' | buildObjectLiteral([ + a: VariableReference.of("var") + ]) | CoercedVariables.of([var: "abc"]) | [arg: [a: "abc"]] + + } + + def "getArgumentValues: valid oneOf list input - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + + when: + def argument = new Argument("arg", inputArray) + def fieldArgumentList = newArgument().name("arg").type(list(inputObjectType)).build() + def values = ValuesResolver.getArgumentValues([fieldArgumentList], [argument], variables, graphQLContext, locale) + + then: + values == expectedValues + + where: + + testCase | inputArray | variables | expectedValues + + '[{ a: "abc"}]' + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + ])).build() + | CoercedVariables.emptyVariables() + | [arg: [[a: "abc"]]] + + '[{ a: "abc" }, $var ] [{ a: "abc" }, { b: 789 }]' + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ + a: StringValue.of("abc") + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [b: 789]) + | [arg: [[a: "abc"], [b: 789]]] + + } + + def "getArgumentValues: invalid oneOf input no values where passed - #testCase"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("oneOfInputObject") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(newInputObjectField() + .name("a") + .type(GraphQLString) + .build()) + .field(newInputObjectField() + .name("b") + .type(GraphQLInt) + .build()) + .build() + def fieldArgument = newArgument().name("arg").type(inputObjectType).build() + + when: + def argument = new Argument("arg", inputValue) + ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + def e = thrown(OneOfNullValueException) + e.message == "OneOf type field 'oneOfInputObject.a' must be non-null." + + where: + // from https://github.com/graphql/graphql-spec/pull/825/files#diff-30a69c5a5eded8e1aea52e53dad1181e6ec8f549ca2c50570b035153e2de1c43R1692 + testCase | inputValue | variables + + '`{ a: null }` {}' | buildObjectLiteral([ + a: NullValue.of() + ]) | CoercedVariables.emptyVariables() + + '`{ a: $var }` { var : null}' | buildObjectLiteral([ + a: VariableReference.of("var") + ]) | CoercedVariables.of(["var": null]) } @@ -333,64 +1055,62 @@ class ValuesResolverTest extends Specification { VariableDefinition variableDefinition = new VariableDefinition("variable", new TypeName("Test")) when: - def resolvedValues = resolver.coerceVariableValues(schema, [variableDefinition], [variable: inputValue]) + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: inputValue]), graphQLContext, locale) then: - resolvedValues['variable'] == outputValue + resolvedValues.get('variable') == outputValue where: inputValue || outputValue "A_TEST" || "A_TEST" "VALUE_TEST" || 1 - } - def "getVariableValues: input object with non-required fields and default values"() { + @Unroll + def "getVariableValues: input object with non-required fields and default values. #inputValue -> #outputValue"() { given: def inputObjectType = newInputObject() .name("InputObject") .field(newInputObjectField() - .name("intKey") - .type(GraphQLInt)) + .name("intKey") + .type(GraphQLInt)) .field(newInputObjectField() - .name("stringKey") - .type(GraphQLString) - .defaultValue("defaultString")) + .name("stringKey") + .type(GraphQLString) + .defaultValueProgrammatic("defaultString")) .build() def schema = TestUtil.schemaWithInputType(inputObjectType) VariableDefinition variableDefinition = new VariableDefinition("variable", new TypeName("InputObject")) when: - def resolvedValues = resolver.coerceVariableValues(schema, [variableDefinition], [variable: inputValue]) + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: inputValue]), graphQLContext, locale) then: - resolvedValues['variable'] == outputValue + resolvedValues.get('variable') == outputValue where: inputValue || outputValue [intKey: 10] || [intKey: 10, stringKey: 'defaultString'] - [intKey: 10, stringKey: null] || [intKey: 10, stringKey: 'defaultString'] - + [intKey: 10, stringKey: null] || [intKey: 10, stringKey: null] } def "getVariableInput: Missing InputObject fields which are non-null cause error"() { - given: def inputObjectType = newInputObject() .name("InputObject") .field(newInputObjectField() - .name("intKey") - .type(GraphQLInt)) + .name("intKey") + .type(GraphQLInt)) .field(newInputObjectField() - .name("requiredField") - .type(nonNull(GraphQLString))) + .name("requiredField") + .type(nonNull(GraphQLString))) .build() def schema = TestUtil.schemaWithInputType(inputObjectType) VariableDefinition variableDefinition = new VariableDefinition("variable", new TypeName("InputObject")) when: - resolver.coerceVariableValues(schema, [variableDefinition], [variable: inputValue]) + ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: inputValue]), graphQLContext, locale) then: thrown(GraphQLException) @@ -409,10 +1129,10 @@ class ValuesResolverTest extends Specification { VariableDefinition barVarDef = new VariableDefinition("bar", new TypeName("String")) when: - def resolvedValues = resolver.coerceVariableValues(schema, [fooVarDef, barVarDef], InputValue) + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [fooVarDef, barVarDef], RawVariables.of(InputValue), graphQLContext, locale) then: - resolvedValues == outputValue + resolvedValues.toMap() == outputValue where: InputValue || outputValue @@ -427,9 +1147,237 @@ class ValuesResolverTest extends Specification { VariableDefinition fooVarDef = new VariableDefinition("foo", new NonNullType(new TypeName("String"))) when: - resolver.coerceVariableValues(schema, [fooVarDef], [:]) + ValuesResolver.coerceVariableValues(schema, [fooVarDef], RawVariables.emptyVariables(), graphQLContext, locale) then: thrown(GraphQLException) } + + def "coerceVariableValues: use null when variable defined in variableValuesMap is null"() { + given: + def schema = TestUtil.schemaWithInputType(nonNull(GraphQLString)) + + def defaultValueForFoo = new StringValue("defaultValueForFoo") + VariableDefinition fooVarDef = new VariableDefinition("foo", new TypeName("String"), defaultValueForFoo) + + def defaultValueForBar = new StringValue("defaultValueForBar") + VariableDefinition barVarDef = new VariableDefinition("bar", new TypeName("String"), defaultValueForBar) + + def variableValuesMap = RawVariables.of(["foo": null, "bar": "barValue"]) + + when: + def resolvedVars = ValuesResolver.coerceVariableValues(schema, [fooVarDef, barVarDef], variableValuesMap, graphQLContext, locale) + + then: + resolvedVars.get('foo') == null + resolvedVars.get('bar') == "barValue" + } + + def "coerceVariableValues: if variableType is a Non-Nullable type and value is null, throw a query error"() { + given: + def schema = TestUtil.schemaWithInputType(nonNull(GraphQLString)) + + def defaultValueForFoo = new StringValue("defaultValueForFoo") + VariableDefinition fooVarDef = new VariableDefinition("foo", new NonNullType(new TypeName("String")), defaultValueForFoo) + + def variableValuesMap = RawVariables.of(["foo": null]) + + when: + ValuesResolver.coerceVariableValues(schema, [fooVarDef], variableValuesMap, graphQLContext, locale) + + then: + def error = thrown(NonNullableValueCoercedAsNullException) + error.message == "Variable 'foo' has an invalid value: Variable 'foo' has coerced Null value for NonNull type 'String!'" + } + + def "coerceVariableValues: if variableType is a list of Non-Nullable type, and element value is null, throw a query error"() { + given: + def schema = TestUtil.schemaWithInputType(list(nonNull(GraphQLString))) + + def defaultValueForFoo = new ArrayValue([new StringValue("defaultValueForFoo")]) + def type = new ListType(new NonNullType(new TypeName("String"))) + VariableDefinition fooVarDef = new VariableDefinition("foo", type, defaultValueForFoo) + + def variableValuesMap = RawVariables.of(["foo": [null]]) + + when: + ValuesResolver.coerceVariableValues(schema, [fooVarDef], variableValuesMap, graphQLContext, locale) + + then: + def error = thrown(NonNullableValueCoercedAsNullException) + error.message == "Variable 'foo' has an invalid value: Coerced Null value for NonNull type 'String!'" + } + + // Note: use NullValue defined in Field when it exists, + // and ignore defaultValue defined in type system + def "getArgumentValues: use null value when argumentValue defined in Field is null"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("inputObject") + .build() + + def fieldArgument = newArgument().name("arg").type(inputObjectType).defaultValueProgrammatic("hello").build() + def argument = new Argument("arg", NullValue.newNullValue().build()) + + when: + def variables = CoercedVariables.emptyVariables() + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + values['arg'] == null + } + + def "getArgumentValues: use null when reference value in variables is null"() { + given: "schema defining input object" + def inputObjectType = newInputObject() + .name("inputObject") + .build() + + def fieldArgument = newArgument().name("arg").type(inputObjectType).defaultValueProgrammatic("hello").build() + def argument = new Argument("arg", new VariableReference("var")) + + when: + def variables = CoercedVariables.of(["var": null]) + def values = ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + values['arg'] == null + } + + def "argument of Non-Nullable type and with null coerced value throws error"() { + given: + def inputObjectType = newInputObject() + .name("inputObject") + .build() + + def fieldArgument = newArgument().name("arg").type(nonNull(inputObjectType)).build() + def argument = new Argument("arg", new VariableReference("var")) + + when: + def variables = CoercedVariables.of(["var": null]) + ValuesResolver.getArgumentValues([fieldArgument], [argument], variables, graphQLContext, locale) + + then: + def error = thrown(NonNullableValueCoercedAsNullException) + error.message == "Argument 'arg' has coerced Null value for NonNull type 'inputObject!'" + } + + def "invalid enum error message is not nested and contains source location - issue 2560"() { + when: + def graphQL = TestUtil.graphQL(''' + enum PositionType { + MANAGER + DEVELOPER + } + + input PersonInput { + name: String + position: PositionType + } + + type Query { + name: String + } + + type Mutation { + updatePerson(input: PersonInput!): Boolean + } + ''').build() + + def mutation = ''' + mutation UpdatePerson($input: PersonInput!) { + updatePerson(input: $input) + } + ''' + + def executionInput = newExecutionInput() + .query(mutation) + .variables([input: [name: 'Name', position: 'UNKNOWN_POSITION']]) + .build() + + def executionResult = graphQL.execute(executionInput) + + then: + executionResult.data == null + executionResult.errors.size() == 1 + executionResult.errors[0].errorType == ErrorType.ValidationError + executionResult.errors[0].message == "Variable 'input' has an invalid value: Invalid input for enum 'PositionType'. No value found for name 'UNKNOWN_POSITION'" + executionResult.errors[0].locations == [new SourceLocation(2, 35)] + } + + def "invalid boolean coercing parse value error message is not nested and contains source location - issue 2560"() { + when: + def graphQL = TestUtil.graphQL(''' + input PersonInput { + name: String + hilarious: Boolean + } + + type Query { + name: String + } + + type Mutation { + updatePerson(input: PersonInput!): Boolean + } + ''').build() + + def mutation = ''' + mutation UpdatePerson($input: PersonInput!) { + updatePerson(input: $input) + } + ''' + + def executionInput = newExecutionInput() + .query(mutation) + .variables([input: [name: 'Name', hilarious: 'sometimes']]) + .build() + + def executionResult = graphQL.execute(executionInput) + + then: + executionResult.data == null + executionResult.errors.size() == 1 + executionResult.errors[0].errorType == ErrorType.ValidationError + executionResult.errors[0].message == "Variable 'input' has an invalid value: Expected a Boolean input, but it was a 'String'" + executionResult.errors[0].locations == [new SourceLocation(2, 35)] + } + + def "invalid float coercing parse value error message is not nested and contains source location - issue 2560"() { + when: + def graphQL = TestUtil.graphQL(''' + input PersonInput { + name: String + laughsPerMinute: Float + } + + type Query { + name: String + } + + type Mutation { + updatePerson(input: PersonInput!): Boolean + } + ''').build() + + def mutation = ''' + mutation UpdatePerson($input: PersonInput!) { + updatePerson(input: $input) + } + ''' + + def executionInput = newExecutionInput() + .query(mutation) + .variables([input: [name: 'Name', laughsPerMinute: 'none']]) + .build() + + def executionResult = graphQL.execute(executionInput) + + then: + executionResult.data == null + executionResult.errors.size() == 1 + executionResult.errors[0].errorType == ErrorType.ValidationError + executionResult.errors[0].message == "Variable 'input' has an invalid value: Expected a Number input, but it was a 'String'" + executionResult.errors[0].locations == [new SourceLocation(2, 35)] + } } diff --git a/src/test/groovy/graphql/execution/ValuesResolverTestLegacy.groovy b/src/test/groovy/graphql/execution/ValuesResolverTestLegacy.groovy new file mode 100644 index 0000000000..0c944b7bb1 --- /dev/null +++ b/src/test/groovy/graphql/execution/ValuesResolverTestLegacy.groovy @@ -0,0 +1,214 @@ +package graphql.execution + +import graphql.GraphQLContext +import graphql.language.ArrayValue +import graphql.language.EnumValue +import graphql.language.FloatValue +import graphql.language.IntValue +import graphql.language.ObjectField +import graphql.language.ObjectValue +import graphql.language.StringValue +import graphql.schema.GraphQLEnumType +import graphql.schema.GraphQLInputObjectType +import spock.lang.Ignore +import spock.lang.Specification + +import static graphql.Scalars.GraphQLBoolean +import static graphql.Scalars.GraphQLFloat +import static graphql.Scalars.GraphQLID +import static graphql.Scalars.GraphQLInt +import static graphql.Scalars.GraphQLString +import static graphql.execution.ValuesResolverLegacy.valueToLiteralLegacy +import static graphql.language.BooleanValue.newBooleanValue +import static graphql.schema.GraphQLList.list +import static graphql.schema.GraphQLNonNull.nonNull + +class ValuesResolverTestLegacy extends Specification { + + def graphQLContext = GraphQLContext.getDefault() + def locale = Locale.getDefault() + + def 'converts boolean values to ASTs'() { + expect: + valueToLiteralLegacy(true, GraphQLBoolean, graphQLContext, locale).isEqualTo(newBooleanValue(true).build()) + + valueToLiteralLegacy(false, GraphQLBoolean, graphQLContext, locale).isEqualTo(newBooleanValue(false).build()) + + valueToLiteralLegacy(null, GraphQLBoolean, graphQLContext, locale) == null + + valueToLiteralLegacy(0, GraphQLBoolean, graphQLContext, locale).isEqualTo(newBooleanValue(false).build()) + + valueToLiteralLegacy(1, GraphQLBoolean, graphQLContext, locale).isEqualTo(newBooleanValue(true).build()) + + def NonNullBoolean = nonNull(GraphQLBoolean) + valueToLiteralLegacy(0, NonNullBoolean, graphQLContext, locale).isEqualTo(newBooleanValue(false).build()) + } + + BigInteger bigInt(int i) { + return new BigInteger(String.valueOf(i)) + } + + def 'converts Int values to Int ASTs'() { + expect: + valueToLiteralLegacy(123.0, GraphQLInt, graphQLContext, locale).isEqualTo(IntValue.newIntValue(bigInt(123)).build()) + + valueToLiteralLegacy(1e4, GraphQLInt, graphQLContext, locale).isEqualTo(IntValue.newIntValue(bigInt(10000)).build()) + } + + def 'converts Float values to Int/Float ASTs'() { + expect: + valueToLiteralLegacy(123.0, GraphQLFloat, graphQLContext, locale).isEqualTo(FloatValue.newFloatValue(123.0).build()) + + valueToLiteralLegacy(123.5, GraphQLFloat, graphQLContext, locale).isEqualTo(FloatValue.newFloatValue(123.5).build()) + + valueToLiteralLegacy(1e4, GraphQLFloat, graphQLContext, locale).isEqualTo(FloatValue.newFloatValue(10000.0).build()) + + valueToLiteralLegacy(1e40, GraphQLFloat, graphQLContext, locale).isEqualTo(FloatValue.newFloatValue(1.0e40).build()) + } + + + def 'converts String values to String ASTs'() { + expect: + valueToLiteralLegacy('hello', GraphQLString, graphQLContext, locale).isEqualTo(new StringValue('hello')) + + valueToLiteralLegacy('VALUE', GraphQLString, graphQLContext, locale).isEqualTo(new StringValue('VALUE')) + + valueToLiteralLegacy('VA\n\t\f\r\b\\LUE', GraphQLString, graphQLContext, locale).isEqualTo(new StringValue('VA\n\t\f\r\b\\LUE')) + + valueToLiteralLegacy('VA\\L\"UE', GraphQLString, graphQLContext, locale).isEqualTo(new StringValue('VA\\L\"UE')) + + valueToLiteralLegacy(123, GraphQLString, graphQLContext, locale).isEqualTo(new StringValue('123')) + + valueToLiteralLegacy(false, GraphQLString, graphQLContext, locale).isEqualTo(new StringValue('false')) + + valueToLiteralLegacy(null, GraphQLString, graphQLContext, locale) == null + } + + def 'converts ID values to Int/String ASTs'() { + expect: + valueToLiteralLegacy('hello', GraphQLID, graphQLContext, locale).isEqualTo(new StringValue('hello')) + + valueToLiteralLegacy('VALUE', GraphQLID, graphQLContext, locale).isEqualTo(new StringValue('VALUE')) + + // Note: EnumValues cannot contain non-identifier characters + valueToLiteralLegacy('VA\nLUE', GraphQLID, graphQLContext, locale).isEqualTo(new StringValue('VA\nLUE')) + + // Note: IntValues are used when possible. + valueToLiteralLegacy(123, GraphQLID, graphQLContext, locale).isEqualTo(new IntValue(bigInt(123))) + + valueToLiteralLegacy(null, GraphQLID, graphQLContext, locale) == null + } + + + def 'does not converts NonNull values to NullValue'() { + expect: + def NonNullBoolean = nonNull(GraphQLBoolean) + valueToLiteralLegacy(null, NonNullBoolean, graphQLContext, locale) == null + } + + def complexValue = { someArbitrary: 'complexValue' } + + + def myEnum = GraphQLEnumType.newEnum().name('MyEnum') + .value('HELLO') + .value('GOODBYE') + .value('COMPLEX', complexValue) + .build() + + def 'converts string values to Enum ASTs if possible'() { + expect: + valueToLiteralLegacy('HELLO', myEnum, graphQLContext, locale).isEqualTo(new EnumValue('HELLO')) + + valueToLiteralLegacy(complexValue, myEnum, graphQLContext, locale).isEqualTo(new EnumValue('COMPLEX')) + } + + def 'converts array values to List ASTs'() { + expect: + valueToLiteralLegacy(['FOO', 'BAR'], list(GraphQLString), graphQLContext, locale).isEqualTo( + new ArrayValue([new StringValue('FOO'), new StringValue('BAR')]) + ) + + + valueToLiteralLegacy(['HELLO', 'GOODBYE'], list(myEnum), graphQLContext, locale).isEqualTo( + new ArrayValue([new EnumValue('HELLO'), new EnumValue('GOODBYE')]) + ) + } + + def 'converts list singletons'() { + expect: + valueToLiteralLegacy('FOO', list(GraphQLString), graphQLContext, locale).isEqualTo( + new StringValue('FOO') + ) + } + + def 'converts list to lists'() { + expect: + valueToLiteralLegacy(['hello', 'world'], list(GraphQLString), graphQLContext, locale).isEqualTo( + new ArrayValue([new StringValue('hello'), new StringValue('world')]) + ) + } + + def 'converts arrays to lists'() { + String[] sArr = ['hello', 'world'] as String[] + expect: + valueToLiteralLegacy(sArr, list(GraphQLString), graphQLContext, locale).isEqualTo( + new ArrayValue([new StringValue('hello'), new StringValue('world')]) + ) + } + + class SomePojo { + def foo = 3 + def bar = "HELLO" + } + + class SomePojoWithFields { + public float foo = 3 + public String bar = "HELLO" + } + + def 'converts input objects'() { + given: + def inputObj = GraphQLInputObjectType.newInputObject() + .name('MyInputObj') + .field({ f -> f.name("foo").type(GraphQLFloat) }) + .field({ f -> f.name("bar").type(myEnum) }) + .build() + expect: + + valueToLiteralLegacy([foo: 3, bar: 'HELLO'], inputObj, graphQLContext, locale).isEqualTo( + new ObjectValue([new ObjectField("foo", new IntValue(bigInt(3))), + new ObjectField("bar", new EnumValue('HELLO')), + ]) + ) + + valueToLiteralLegacy(new SomePojo(), inputObj, graphQLContext, locale).isEqualTo( + new ObjectValue([new ObjectField("foo", new IntValue(bigInt(3))), + new ObjectField("bar", new EnumValue('HELLO')), + ]) + ) + + valueToLiteralLegacy(new SomePojoWithFields(), inputObj, graphQLContext, locale).isEqualTo( + new ObjectValue([new ObjectField("foo", new IntValue(bigInt(3))), + new ObjectField("bar", new EnumValue('HELLO')), + ]) + ) + + + } + + @Ignore("ObjectValue.isEqualTo is broken - this test currently makes no sense") + def 'converts input objects with explicit nulls'() { + expect: + def inputObj = GraphQLInputObjectType.newInputObject() + .name('MyInputObj') + .field({ f -> f.name("foo").type(GraphQLFloat) }) + .field({ f -> f.name("bar").type(myEnum) }) + .build() + + valueToLiteralLegacy([foo: null], inputObj, graphQLContext, locale).isEqualTo( + new ObjectValue([new ObjectField("foo", null)]) + ) + } + + +} diff --git a/src/test/groovy/graphql/execution/batched/BatchedExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/batched/BatchedExecutionStrategyTest.groovy deleted file mode 100644 index 933ba71bcd..0000000000 --- a/src/test/groovy/graphql/execution/batched/BatchedExecutionStrategyTest.groovy +++ /dev/null @@ -1,543 +0,0 @@ -/* - * Copyright 2016 Palantir Technologies, Inc. All rights reserved. - */ - -package graphql.execution.batched - -import graphql.ExceptionWhileDataFetching -import graphql.ExecutionResult -import graphql.GraphQL -import graphql.Scalars -import graphql.TestUtil -import graphql.execution.AsyncExecutionStrategy -import graphql.execution.instrumentation.TestingInstrumentation -import graphql.schema.DataFetcher -import graphql.schema.GraphQLObjectType -import graphql.schema.GraphQLSchema -import graphql.schema.idl.RuntimeWiring -import spock.lang.Specification - -import java.util.concurrent.atomic.AtomicInteger - -import static graphql.schema.GraphQLArgument.newArgument -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition -import static graphql.schema.GraphQLNonNull.nonNull -import static graphql.schema.GraphQLObjectType.newObject - -class BatchedExecutionStrategyTest extends Specification { - - private GraphQLSchema schema = new FunWithStringsSchemaFactory().createSchema() - - private GraphQL graphQLAsync = GraphQL.newGraphQL(schema) - .queryExecutionStrategy(new AsyncExecutionStrategy()) - .build() - - private GraphQL graphQLBatchedButUnbatched = GraphQL.newGraphQL(this.schema) - .queryExecutionStrategy(new BatchedExecutionStrategy()) - .build() - - private Map countMap = new HashMap<>() - private TestingInstrumentation testingInstrumentation = new TestingInstrumentation() - - private GraphQL graphQLBatchedValue = GraphQL.newGraphQL(FunWithStringsSchemaFactory.createBatched(countMap).createSchema()) - .instrumentation(testingInstrumentation) - .queryExecutionStrategy(new BatchedExecutionStrategy()) - .build() - - private void runTestExpectErrors(String query, Exception exception) { - runTestAsyncExpectErrors(query, exception) - runTestBatchingUnbatchedExpectErrors(query, exception) - runTestBatchingExpectErrors(query, exception) - } - - private void runTestBatchingUnbatchedExpectErrors(String query, Exception exception) { - def errors = this.graphQLBatchedButUnbatched.execute(query).getErrors() - assert errors.size() == 1 - assert exception.class == ((ExceptionWhileDataFetching) errors.get(0)).getException().class - assert exception.getMessage() == ((ExceptionWhileDataFetching) errors.get(0)).getException().getMessage() - } - - private void runTestBatchingExpectErrors(String query, Exception exception, boolean checkString = true) { - def errors = this.graphQLBatchedValue.execute(query).getErrors() - assert errors.size() == 1 - assert exception.class == ((ExceptionWhileDataFetching) errors.get(0)).getException().class - if (checkString) - assert exception.getMessage() == ((ExceptionWhileDataFetching) errors.get(0)).getException().getMessage() - } - - private void runTestAsyncExpectErrors(String query, Exception exception) { - def errors = this.graphQLAsync.execute(query).getErrors() - assert errors.size() == 1 - assert exception.class == ((ExceptionWhileDataFetching) errors.get(0)).getException().class - assert exception.getMessage() == ((ExceptionWhileDataFetching) errors.get(0)).getException().getMessage() - } - - // Split into sub-methods so the stack trace is more useful - private void runTest(String query, Map expected) { - runTestAsync(query, expected) - runTestBatchingUnbatched(query, expected) - runTestBatching(query, expected) - // check instrumentation recorded invocations - assert !testingInstrumentation.dfInvocations.isEmpty() - } - - private void runTestBatchingUnbatched(String query, Map expected) { - assert this.graphQLBatchedButUnbatched.execute(query).getData() == expected - } - - private void runTestBatching(String query, Map expected) { - assert this.graphQLBatchedValue.execute(query).getData() == expected - } - - private void runTestAsync(String query, Map expected) { - assert this.graphQLAsync.execute(query).getData() == expected - } - - // This method is agnostic to whether errors are returned or thrown, provided they contain the desired text - private void runTestExpectError(String query, String errorSubstring) { - - try { - ExecutionResult result = this.graphQLAsync.execute(query) - assert !result.getErrors().isEmpty(), "Simple should have errored but was: " + result.getData() - } catch (Exception e) { - assert e.getMessage().contains(errorSubstring), "Simple error must contain '" + errorSubstring + "'" - } - - try { - ExecutionResult result = this.graphQLBatchedButUnbatched.execute(query) - assert !result.getErrors().isEmpty(), "Batched should have errored, but was " + result.getData() - } catch (Exception e) { - assert e.getMessage().contains(errorSubstring), "Batched but unbatched error must contain '" + errorSubstring + "'" - } - } - - static Map mapOf(String firstKey, Object firstVal, Object... more) { - Map retVal = new HashMap<>() - retVal.put(firstKey, firstVal) - for (int i = 0; i < more.length; i += 2) { - retVal.put((String) more[i], more[i + 1]) - } - return retVal - } - - - def "Basic case works"() { - given: - String query = "{ string(value: \"Basic\"){value, nonNullValue} }" - - def expected = [string: [nonNullValue: "Basic", value: "Basic"]] - println expected - - expect: - runTest(query, expected) - } - - def "Empty input"() { - given: - String query = "{ string(value: \"\"){value} }" - - def expected = [string: ["value": ""]] - - expect: - runTest(query, expected) - } - - def "Handles implicit null input"() { - given: - String query = "{ string{value} }" - - def expected = [string: null] - - expect: - runTest(query, expected) - } - - def "Handles explicit null input"() { - given: - String query = "{ string(value: \"null\"){value} }" - - def expected = [string: [value: null]] - - expect: - runTest(query, expected) - } - - def "Shatter works"() { - given: - String query = "{ string(value: \"Shatter\") {shatter{value}} }" - - def expected = ["string": ["shatter": [ - ["value": "S"], - ["value": "h"], - ["value": "a"], - ["value": "t"], - ["value": "t"], - ["value": "e"], - ["value": "r"] - ]]] - - - expect: - runTest(query, expected) - - } - - def "Shatter then append"() { - given: - String query = - "{ string(value: \"Sh\") { shatter { append(text: \"1\") { value } } } }" - - def expected = [string: [shatter: [[append: [value: "S1"]], [append: [value: "h1"]]]]] - - expect: - runTest(query, expected) - - } - - - def "Legal null entries in lists"() { - given: - String query = - "{ " + - "string(value: \"Sh\") {" + - "shatter { " + - "append(text: \"1\") {" + - "split(regex: \"h\") {" + - "value " + - "} " + - "} " + - "} " + - "} " + - "}" - - def expected = [string: [shatter: [[append: [split: [[value: "S1"]]]], [append: [split: [null, [value: "1"]]]]]]] - - expect: - runTest(query, expected) - - } - - def "Legal null values for entire lists"() { - - given: - String query = - "{ " + - "string(value: \"Sh\") {" + - "shatter { " + - "append(text: \"1\") {" + - "split {" + - "value " + - "} " + - "} " + - "} " + - "} " + - "}" - - def expected = [string: [shatter: [[append: [split: null]], [append: [split: null]]]]] - - expect: - runTest(query, expected) - - } - - - def "Legal null values for primitives"() { - - given: - String query = - "{ " + - "string(value: \"Shxnull\") {" + - "split(regex: \"x\") {" + - "value " + - "} " + - "} " + - "}" - - def expected = [string: [split: [[value: "Sh"], [value: null]]]] - - expect: - runTest(query, expected) - - } - - def "Legal null value for enum"() { - - given: - String query = - "{ nullEnum }" - - def expected = [nullEnum: null] - - expect: - runTest(query, expected) - - } - - def "Illegal null value for an object in a list"() { - given: - String query = - "{ " + - "string(value: \"Sh\") {" + - "shatter { " + - "append(text: \"1\") {" + - "splitNonNull(regex: \"h\") {" + - "value " + - "} " + - "} " + - "} " + - "} " + - "}" - - expect: - runTestExpectError(query, "non-null") - - } - - - def "Nested lists"() { - given: - String query = - "{ " + - "string(value: \"List of words\") {" + - "wordsAndLetters { " + - " value " + - "} " + - "} " + - "}" - - def expected = [string: [wordsAndLetters: [[[value: "L"], [value: "i"], [value: "s"], [value: "t"]], - [[value: "o"], [value: "f"]], - [[value: "w"], [value: "o"], [value: "r"], [value: "d"], [value: "s"]]]]] - - expect: - runTest(query, expected) - - } - - - def "Batching works"() { - given: - String query = """ - { string(value: "Batch") { - append(text: "x") { - value - } - shatter { - append(text: "1") { - split(regex: "h") { - value - } - } - } - } - }""" - - def expected = [string: - [append : [value: "Batchx"], - shatter: - [[append: [split: [[value: "B1"]]]], - [append: [split: [[value: "a1"]]]], - [append: [split: [[value: "t1"]]]], - [append: [split: [[value: "c1"]]]], - [append: [split: [null, [value: "1"]]]]] - ] - ] - expect: - runTest(query, expected) - - this.countMap.get(FunWithStringsSchemaFactory.CallType.VALUE).get() == 2 - this.countMap.get(FunWithStringsSchemaFactory.CallType.SHATTER).get() == 1 - this.countMap.get(FunWithStringsSchemaFactory.CallType.APPEND).get() == 2 - this.countMap.get(FunWithStringsSchemaFactory.CallType.SPLIT).get() == 1 - } - - - def "Return value ordering"() { - given: - String query = """ - { string(value: "TS") { - append(text:"1") { - v1:value - v2:nonNullValue - v3:value - v4:nonNullValue - v5:value - v6:nonNullValue - } - } - }""" - - expect: - Arrays.asList(this.graphQLAsync, this.graphQLBatchedButUnbatched, this.graphQLBatchedValue).each { GraphQL graphQL -> - Map response = graphQL.execute(query).getData() as Map - Map values = (response.get("string") as Map).get("append") as Map - assert ["v1", "v2", "v3", "v4", "v5", "v6"] == values.keySet().toList() - } - } - - def "Handle exception inside DataFetcher"() { - given: - String query = "{ string(value: \"\"){ throwException} }" - Map expected = ["string": ["throwException": null]] - expect: - runTest(query, expected) - runTestExpectErrors(query, new RuntimeException("TestException")) - } - - def "Invalid batch size return does not crash whole query but generates error"() { - given: - String query = "{ string(value: \"\"){ returnBadList } }" - Map expected = ["string": ["returnBadList": null]] - expect: - runTestBatching(query, expected) - runTestBatchingExpectErrors(query, new BatchAssertionFailed(), false) - } - - def "#673 optional support"() { - given: - String query = "{ string(value: \"673-optional-support\"){emptyOptional, optional} }" - - def expected = [string: [emptyOptional: null, optional: "673-optional-support"]] - println expected - - expect: - runTest(query, expected) - } - - - def "Any Iterable is accepted as GraphQL list value"() { - given: - String query = "{ string(value: \"test\"){ anyIterable } }" - Map expected = ["string": ["anyIterable": ["test", "end"]]] - expect: - runTest(query, expected) - } - - def "#672-683 handles completable futures ok"() { - - given: - String query = "{ string(value: \"test\"){ completableFuture } }" - Map expected = ["string": ["completableFuture": "completableFuture"]] - expect: - runTest(query, expected) - } - - def "#672-683 handles completable futures ok in interfaces"() { - - given: - String query = "{ interface { value } }" - Map expected = ["interface": ["value": "interfacesHandled"]] - expect: - runTest(query, expected) - } - - def "#684 handles exceptions in DFs"() { - - given: - def UserType = newObject() - .name("User") - .field(newFieldDefinition() - .name("id") - .type(nonNull(Scalars.GraphQLInt)) - .dataFetcher( - { e -> throw new RuntimeException("Hello") } - )).build() - - DataFetcher userDataFetcher = { environment -> - if (environment.getArgument("nullArg") == true) { - return null - } - Map user = new HashMap<>() - user.put("id", 1) - return user - } - GraphQLObjectType queryObject = newObject().name("Query") - .field(newFieldDefinition() - .name("user") - .type(nonNull(UserType)) - .argument(newArgument().name("nullArg").type(Scalars.GraphQLBoolean)) - .dataFetcher(userDataFetcher) - ).build() - - GraphQLSchema schema = GraphQLSchema.newSchema() - .query(queryObject) - .build() - - GraphQL graphQL = GraphQL.newGraphQL(schema) - .queryExecutionStrategy(new BatchedExecutionStrategy()) - .build() - - //ExecutionResult result = graphQL.execute("query { user(nullArg:false) { id } }") - ExecutionResult result = graphQL.execute("query { user { id } }") - - expect: - result.getErrors().size() == 1 - result.getErrors()[0] instanceof ExceptionWhileDataFetching - } - - def "multi level batching with two different path"() { - given: - def foo1s = [[id: 'id1'], [id: 'id2']] as List - def foo1DF = { env -> foo1s } as DataFetcher - def foo2s = [[id: 'id3'], [id: 'id4']] as List - def foo2DF = { env -> foo2s } as DataFetcher - - - def subFooDF = { env -> - def result = [[[batchThat: 'batchThat1-2'], [batchThat: 'batchThat1-2']], [[batchThat: 'batchThat2-1'], [batchThat: 'batchThat2-2']]] - result - } as BatchedDataFetcher - - def expectedBatchThatCount = 0 - def batchThatDF = { env -> - expectedBatchThatCount++ - env.getSource() - } as BatchedDataFetcher - - def runtimeWiring = RuntimeWiring.newRuntimeWiring() - .type("Query", - { builder -> - builder - .dataFetcher("foo1", foo1DF) - .dataFetcher("foo2", foo2DF) - }) - .type("Foo", - { builder -> - builder - .dataFetcher("subFoo", subFooDF) - }) - .type("SubFoo", - { builder -> - builder - .dataFetcher("batchThat", batchThatDF) - }) - .build() - def schema = TestUtil.schema(""" - type Query { - foo1: [Foo] - foo2: [Foo] - } - type Foo{ - id: ID - subFoo: [SubFoo] - } - type SubFoo{ - batchThat: String - } - """, runtimeWiring) - - def query = """ - {foo1 {id subFoo{batchThat}} foo2 {id subFoo{batchThat}} } - """ - - when: - GraphQL.newGraphQL(schema).queryExecutionStrategy(new BatchedExecutionStrategy()) - .build().execute(query) - - then: - expectedBatchThatCount == 2 - - - } - -} diff --git a/src/test/groovy/graphql/execution/batched/FunWithStringsSchemaFactory.java b/src/test/groovy/graphql/execution/batched/FunWithStringsSchemaFactory.java deleted file mode 100644 index a7a2d63e18..0000000000 --- a/src/test/groovy/graphql/execution/batched/FunWithStringsSchemaFactory.java +++ /dev/null @@ -1,438 +0,0 @@ -package graphql.execution.batched; - -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; -import graphql.schema.GraphQLArgument; -import graphql.schema.GraphQLEnumType; -import graphql.schema.GraphQLInterfaceType; -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLSchema; - -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.atomic.AtomicInteger; - -import static graphql.Scalars.GraphQLString; -import static graphql.schema.GraphQLEnumType.newEnum; -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; -import static graphql.schema.GraphQLInterfaceType.newInterface; -import static graphql.schema.GraphQLList.list; -import static graphql.schema.GraphQLNonNull.nonNull; -import static graphql.schema.GraphQLObjectType.newObject; -import static graphql.schema.GraphQLTypeReference.typeRef; - -public class FunWithStringsSchemaFactory { - - - private static void increment(Map callCounts, CallType type) { - if (!callCounts.containsKey(type)) { - callCounts.put(type, new AtomicInteger(0)); - } - callCounts.get(type).incrementAndGet(); - } - - public enum CallType { - VALUE, APPEND, WORDS_AND_LETTERS, SPLIT, SHATTER - } - - public static FunWithStringsSchemaFactory createBatched(final Map callCounts) { - FunWithStringsSchemaFactory factory = new FunWithStringsSchemaFactory(); - - - factory.setStringObjectValueFetcher(new DataFetcher() { - @Override - @Batched - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - increment(callCounts, CallType.VALUE); - List retVal = new ArrayList<>(); - for (String s : (List) environment.getSource()) { - retVal.add("null".equals(s) ? null : s); - } - return retVal; - } - }); - - factory.setThrowExceptionFetcher(new DataFetcher() { - @Override - @Batched - public Object get(DataFetchingEnvironment environment) { - throw new RuntimeException("TestException"); - } - }); - - factory.setReturnBadList(new DataFetcher() { - @Override - @Batched - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - List retVal = new ArrayList<>(); - for (String s : (List) environment.getSource()) { - retVal.add("null".equals(s) ? null : s); - } - retVal.add("badValue"); - return retVal; - } - }); - - factory.setAnyIterable(new DataFetcher() { - @Override - @Batched - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - List> retVal = new ArrayList<>(); - for (String s : (List) environment.getSource()) { - retVal.add(new LinkedHashSet<>(Arrays.asList(s, "end"))); - } - return retVal; - } - }); - - factory.setAppendFetcher(new DataFetcher() { - @Override - @Batched - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - increment(callCounts, CallType.APPEND); - List retVal = new ArrayList<>(); - for (String s : (List) environment.getSource()) { - retVal.add(s + environment.getArgument("text")); - } - // make it an Iterable thing not just List - return new ArrayDeque<>(retVal); - } - }); - - factory.setWordsAndLettersFetcher(new DataFetcher() { - @Batched - @Override - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - increment(callCounts, CallType.WORDS_AND_LETTERS); - List sources = environment.getSource(); - List>> retVal = new ArrayList<>(); - for (String source : sources) { - List> sentence = new ArrayList<>(); - splitSentence(source, sentence); - retVal.add(sentence); - } - return retVal.toArray(); - } - }); - - factory.setSplitFetcher(new DataFetcher() { - @Batched - @Override - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - increment(callCounts, CallType.SPLIT); - String regex = environment.getArgument("regex"); - List sources = environment.getSource(); - List> retVal = new ArrayList<>(); - if (regex == null) { - for (String ignored : sources) { - retVal.add(null); - } - return retVal; - } - for (String source : sources) { - List retItem = new ArrayList<>(); - for (String str : source.split(regex)) { - if (str.isEmpty()) { - retItem.add(null); - } else { - retItem.add(str); - } - } - retVal.add(retItem); - } - return retVal; - } - }); - - factory.setShatterFetcher(new DataFetcher() { - @Batched - @Override - @SuppressWarnings("unchecked") - public Object get(DataFetchingEnvironment environment) { - increment(callCounts, CallType.SHATTER); - List sources = environment.getSource(); - List> retVal = new ArrayList<>(); - for (String source : sources) { - List retItem = new ArrayList<>(); - for (char c : source.toCharArray()) { - retItem.add(Character.toString(c)); - } - retVal.add(retItem); - } - return retVal; - } - }); - - return factory; - - } - - private void setAnyIterable(DataFetcher fetcher) { - this.anyIterableFetcher = fetcher; - } - - private static void splitSentence(String source, List> sentence) { - for (String word : source.split(" ")) { - List letters = new ArrayList<>(); - for (char c : word.toCharArray()) { - letters.add(Character.toString(c)); - } - sentence.add(letters); - } - } - - - private DataFetcher stringObjectValueFetcher = e -> "null".equals(e.getSource()) ? null : e.getSource(); - - private DataFetcher throwExceptionFetcher = e -> { - throw new RuntimeException("TestException"); - }; - - private DataFetcher returnBadListFetcher = e -> { - throw new RuntimeException("This field should only be queried in batch."); - }; - - private DataFetcher shatterFetcher = e -> { - String source = e.getSource(); - if (source.isEmpty()) { - return null; // trigger error - } - List retVal = new ArrayList<>(); - for (char c : source.toCharArray()) { - retVal.add(Character.toString(c)); - } - return retVal; - }; - - private DataFetcher wordsAndLettersFetcher = e -> { - String source = e.getSource(); - List> retVal = new ArrayList<>(); - splitSentence(source, retVal); - return retVal; - }; - - private DataFetcher splitFetcher = e -> { - String regex = e.getArgument("regex"); - if (regex == null) { - return null; - } - String source = e.getSource(); - List retVal = new ArrayList<>(); - for (String str : source.split(regex)) { - if (str.isEmpty()) { - retVal.add(null); - } else { - retVal.add(str); - } - } - return retVal; - }; - - private DataFetcher appendFetcher = e -> ((String) e.getSource()) + e.getArgument("text"); - - private DataFetcher emptyOptionalFetcher = e -> Optional.empty(); - - private DataFetcher optionalFetcher = e -> Optional.of("673-optional-support"); - - private DataFetcher completableFutureFetcher = e -> CompletableFuture.completedFuture("completableFuture"); - - private DataFetcher anyIterableFetcher = e -> { - String source = e.getSource(); - return new LinkedHashSet<>(Arrays.asList(source, "end")); - }; - - private void setWordsAndLettersFetcher(DataFetcher fetcher) { - this.wordsAndLettersFetcher = fetcher; - } - - private void setShatterFetcher(DataFetcher fetcher) { - this.shatterFetcher = fetcher; - } - - private void setSplitFetcher(DataFetcher splitFetcher) { - this.splitFetcher = splitFetcher; - } - - private void setAppendFetcher(DataFetcher appendFetcher) { - this.appendFetcher = appendFetcher; - } - - private void setStringObjectValueFetcher(DataFetcher fetcher) { - this.stringObjectValueFetcher = fetcher; - } - - private void setThrowExceptionFetcher(DataFetcher fetcher) { - this.throwExceptionFetcher = fetcher; - } - - private void setReturnBadList(DataFetcher fetcher) { - this.returnBadListFetcher = fetcher; - } - - public static class SimpleObject { - public String getValue() { - return "interfacesHandled"; - } - } - - GraphQLSchema createSchema() { - - GraphQLObjectType stringObjectType = newObject() - .name("StringObject") - .field(newFieldDefinition() - .name("value") - .type(GraphQLString) - .dataFetcher(stringObjectValueFetcher)) - .field(newFieldDefinition() - .name("nonNullValue") - .type(nonNull(GraphQLString)) - .dataFetcher(stringObjectValueFetcher)) - .field(newFieldDefinition() - .name("throwException") - .type(GraphQLString) - .dataFetcher(throwExceptionFetcher)) - .field(newFieldDefinition() - .name("returnBadList") - .type(GraphQLString) - .dataFetcher(returnBadListFetcher)) - .field(newFieldDefinition() - .name("anyIterable") - .type(list(GraphQLString)) - .dataFetcher(anyIterableFetcher)) - .field(newFieldDefinition() - .name("shatter") - .type(nonNull(list(nonNull(typeRef("StringObject"))))) - .dataFetcher(shatterFetcher)) - - .field(newFieldDefinition() - .name("wordsAndLetters") - .type(nonNull(list(nonNull(list(nonNull(typeRef("StringObject"))))))) - .dataFetcher(wordsAndLettersFetcher)) - - .field(newFieldDefinition() - .name("split") - .description("String#split(regex) but replace empty strings with nulls to help us test null behavior in lists") - .type(list(typeRef("StringObject"))) - .argument(GraphQLArgument.newArgument() - .name("regex") - .type(GraphQLString)) - .dataFetcher(splitFetcher)) - - .field(newFieldDefinition() - .name("splitNotNull") - .description("String#split(regex) but replace empty strings with nulls to help us test null behavior in lists") - .type(list(nonNull(typeRef("StringObject")))) - .argument(GraphQLArgument.newArgument() - .name("regex") - .type(GraphQLString)) - .dataFetcher(splitFetcher)) - - - .field(newFieldDefinition() - .name("append") - .type(typeRef("StringObject")) - .argument(GraphQLArgument.newArgument() - .name("text") - .type(GraphQLString)) - .dataFetcher(appendFetcher)) - - .field(newFieldDefinition() - .name("emptyOptional") - .type(GraphQLString) - .argument(GraphQLArgument.newArgument() - .name("text") - .type(GraphQLString)) - .dataFetcher(emptyOptionalFetcher)) - - .field(newFieldDefinition() - .name("optional") - .type(GraphQLString) - .argument(GraphQLArgument.newArgument() - .name("text") - .type(GraphQLString)) - .dataFetcher(optionalFetcher)) - - .field(newFieldDefinition() - .name("completableFuture") - .type(GraphQLString) - .argument(GraphQLArgument.newArgument() - .name("text") - .type(GraphQLString)) - .dataFetcher(completableFutureFetcher)) - - .build(); - - - GraphQLEnumType enumDayType = newEnum() - .name("Day") - .value("MONDAY") - .value("TUESDAY") - .description("Day of the week") - .build(); - - - GraphQLObjectType simpleObjectType = newObject() - .name("SimpleObject") - .withInterface(typeRef("InterfaceType")) - .field(newFieldDefinition() - .name("value") - .type(GraphQLString)) - .build(); - - - GraphQLInterfaceType interfaceType = newInterface() - .name("InterfaceType") - .field(newFieldDefinition() - .name("value") - .type(GraphQLString) - ) - .typeResolver(env -> { - // always this for testing - return simpleObjectType; - }) - .build(); - - GraphQLObjectType queryType = newObject() - .name("StringQuery") - .field(newFieldDefinition() - .name("string") - .type(stringObjectType) - .argument(GraphQLArgument.newArgument() - .name("value") - .type(GraphQLString)) - .dataFetcher(env -> env.getArgument("value")) - ) - .field(newFieldDefinition() - .name("interface") - .type(interfaceType) - .argument(GraphQLArgument.newArgument() - .name("value") - .type(GraphQLString)) - .dataFetcher(env -> CompletableFuture.completedFuture(new SimpleObject())) - ) - .field(newFieldDefinition() - .name("nullEnum") - .type(enumDayType) - .dataFetcher(env -> null) - ) - .build(); - - return GraphQLSchema.newSchema() - .query(queryType) - .additionalType(simpleObjectType) - .build(); - - } -} diff --git a/src/test/groovy/graphql/execution/defer/BasicSubscriber.groovy b/src/test/groovy/graphql/execution/defer/BasicSubscriber.groovy deleted file mode 100644 index e1f9be0cc5..0000000000 --- a/src/test/groovy/graphql/execution/defer/BasicSubscriber.groovy +++ /dev/null @@ -1,35 +0,0 @@ -package graphql.execution.defer - -import graphql.DeferredExecutionResult -import graphql.ExecutionResult -import org.reactivestreams.Subscriber -import org.reactivestreams.Subscription - -import java.util.concurrent.atomic.AtomicBoolean - -class BasicSubscriber implements Subscriber { - Subscription subscription - AtomicBoolean finished = new AtomicBoolean() - Throwable throwable - - @Override - void onSubscribe(Subscription s) { - assert s != null, "subscription must not be null" - this.subscription = s - s.request(1) - } - - @Override - void onNext(DeferredExecutionResult executionResult) { - } - - @Override - void onError(Throwable t) { - finished.set(true) - } - - @Override - void onComplete() { - finished.set(true) - } -} diff --git a/src/test/groovy/graphql/execution/defer/CapturingSubscriber.groovy b/src/test/groovy/graphql/execution/defer/CapturingSubscriber.groovy deleted file mode 100644 index 7245f24ee9..0000000000 --- a/src/test/groovy/graphql/execution/defer/CapturingSubscriber.groovy +++ /dev/null @@ -1,45 +0,0 @@ -package graphql.execution.defer - -import graphql.DeferredExecutionResult -import org.reactivestreams.Publisher -import org.reactivestreams.Subscriber -import org.reactivestreams.Subscription - -import java.util.concurrent.atomic.AtomicBoolean - -class CapturingSubscriber implements Subscriber { - Subscription subscription - AtomicBoolean finished = new AtomicBoolean() - Throwable throwable - List executionResults = [] - List executionResultData = [] - - AtomicBoolean subscribeTo(Publisher publisher) { - publisher.subscribe(this) - return finished - } - - @Override - void onSubscribe(Subscription s) { - assert s != null, "subscription must not be null" - this.subscription = s - s.request(1) - } - - @Override - void onNext(DeferredExecutionResult executionResult) { - executionResults.add(executionResult) - executionResultData.add(executionResult.getData()) - subscription.request(1) - } - - @Override - void onError(Throwable t) { - finished.set(true) - } - - @Override - void onComplete() { - finished.set(true) - } -} diff --git a/src/test/groovy/graphql/execution/defer/DeferSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/defer/DeferSupportIntegrationTest.groovy deleted file mode 100644 index 6a1a6b8d70..0000000000 --- a/src/test/groovy/graphql/execution/defer/DeferSupportIntegrationTest.groovy +++ /dev/null @@ -1,328 +0,0 @@ -package graphql.execution.defer - -import graphql.DeferredExecutionResult -import graphql.ErrorType -import graphql.Directives -import graphql.ExecutionInput -import graphql.ExecutionResult -import graphql.GraphQL -import graphql.TestUtil -import graphql.schema.DataFetcher -import graphql.schema.DataFetchingEnvironment -import graphql.schema.idl.RuntimeWiring -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorType -import org.awaitility.Awaitility -import org.reactivestreams.Publisher -import spock.lang.Specification - -import java.time.Duration -import java.util.concurrent.CompletableFuture - -import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring - -class DeferSupportIntegrationTest extends Specification { - def then = 0 - - def sentAt() { - def seconds = Duration.ofMillis(System.currentTimeMillis() - then).toMillis() - "T+" + seconds - } - - def sleepSome(DataFetchingEnvironment env) { - Integer sleepTime = env.getArgument("sleepTime") - sleepTime = Optional.ofNullable(sleepTime).orElse(0) - Thread.sleep(sleepTime) - } - - def schemaSpec = ''' - type Query { - post : Post - mandatoryReviews : [Review]! - } - - type Mutation { - mutate(arg : String) : String - } - - type Post { - postText : String - sentAt : String - echo(text : String = "echo") : String - comments(sleepTime : Int, prefix :String) : [Comment] - reviews(sleepTime : Int) : [Review] - } - - type Comment { - commentText : String - sentAt : String - comments(sleepTime : Int, prefix :String) : [Comment] - goes : Bang - } - - type Review { - reviewText : String - sentAt : String - comments(sleepTime : Int, prefix :String) : [Comment] - goes : Bang - } - - type Bang { - bang : String - } - ''' - - DataFetcher postFetcher = new DataFetcher() { - @Override - Object get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync({ - [postText: "post_data", sentAt: sentAt()] - }) - } - } - DataFetcher commentsFetcher = new DataFetcher() { - @Override - Object get(DataFetchingEnvironment env) { - return CompletableFuture.supplyAsync({ - sleepSome(env) - - def prefix = env.getArgument("prefix") - prefix = prefix == null ? "" : prefix - - def result = [] - for (int i = 0; i < 3; i++) { - result.add([commentText: prefix + "comment" + i, sentAt: sentAt(), goes: "goes"]) - } - return result - }) - } - - } - DataFetcher reviewsFetcher = new DataFetcher() { - @Override - Object get(DataFetchingEnvironment env) { - return CompletableFuture.supplyAsync({ - sleepSome(env) - def result = [] - for (int i = 0; i < 3; i++) { - result.add([reviewText: "review" + i, sentAt: sentAt(), goes: "goes"]) - } - return result - }) - } - } - - DataFetcher bangDataFetcher = new DataFetcher() { - @Override - Object get(DataFetchingEnvironment environment) { - throw new RuntimeException("Bang!") - } - } - DataFetcher echoDataFetcher = new DataFetcher() { - @Override - Object get(DataFetchingEnvironment environment) { - return environment.getArgument("text") - } - } - - GraphQL graphQL = null - - void setup() { - then = System.currentTimeMillis() - - def runtimeWiring = RuntimeWiring.newRuntimeWiring() - .type(newTypeWiring("Query").dataFetcher("post", postFetcher)) - .type(newTypeWiring("Post").dataFetcher("comments", commentsFetcher)) - .type(newTypeWiring("Post").dataFetcher("echo", echoDataFetcher)) - .type(newTypeWiring("Post").dataFetcher("reviews", reviewsFetcher)) - .type(newTypeWiring("Bang").dataFetcher("bang", bangDataFetcher)) - - .type(newTypeWiring("Comment").dataFetcher("comments", commentsFetcher)) - .type(newTypeWiring("Review").dataFetcher("comments", commentsFetcher)) - .build() - - def schema = TestUtil.schema(schemaSpec, runtimeWiring) - .transform({ builder -> builder.additionalDirective(Directives.DeferDirective) }) - this.graphQL = GraphQL.newGraphQL(schema).build() - } - - def "test defer support end to end"() { - - def query = ''' - query { - post { - postText - - a :comments(sleepTime:200) @defer { - commentText - } - - b : reviews(sleepTime:100) @defer { - reviewText - comments(prefix : "b_") @defer { - commentText - } - } - - c: reviews @defer { - goes { - bang - } - } - } - } - ''' - - when: - def initialResult = graphQL.execute(ExecutionInput.newExecutionInput().query(query).build()) - - then: - initialResult.errors.isEmpty() - initialResult.data == ["post": ["postText": "post_data", a: null, b: null, c: null]] - - when: - - Publisher deferredResultStream = initialResult.extensions[GraphQL.DEFERRED_RESULTS] as Publisher - - def subscriber = new CapturingSubscriber() - subscriber.subscribeTo(deferredResultStream) - Awaitility.await().untilTrue(subscriber.finished) - - List resultList = subscriber.executionResults - - then: - - assertDeferredData(resultList) - } - - def "test defer support keeps the fields named correctly when interspersed in the query"() { - - def query = ''' - query { - post { - interspersedA: echo(text:"before a:") - - a: comments(sleepTime:200) @defer { - commentText - } - - interspersedB: echo(text:"before b:") - - b : reviews(sleepTime:100) @defer { - reviewText - comments(prefix : "b_") @defer { - commentText - } - } - - interspersedC: echo(text:"before c:") - - c: reviews @defer { - goes { - bang - } - } - - interspersedD: echo(text:"after c:") - } - } - ''' - - when: - def initialResult = graphQL.execute(ExecutionInput.newExecutionInput().query(query).build()) - - then: - initialResult.errors.isEmpty() - initialResult.data == ["post": [ - "interspersedA": "before a:", - "a" : null, - "interspersedB": "before b:", - "b" : null, - "interspersedC": "before c:", - "c" : null, - "interspersedD": "after c:", - ]] - - when: - - Publisher deferredResultStream = initialResult.extensions[GraphQL.DEFERRED_RESULTS] as Publisher - - def subscriber = new CapturingSubscriber() - subscriber.subscribeTo(deferredResultStream); - Awaitility.await().untilTrue(subscriber.finished) - - List resultList = subscriber.executionResults - - then: - - assertDeferredData(resultList) - } - - def assertDeferredData(ArrayList resultList) { - resultList.size() == 6 - - assert resultList[0].data == [[commentText: "comment0"], [commentText: "comment1"], [commentText: "comment2"]] - assert resultList[0].errors == [] - assert resultList[0].path == ["post", "a"] - - assert resultList[1].data == [[reviewText: "review0", comments: null], [reviewText: "review1", comments: null], [reviewText: "review2", comments: null]] - assert resultList[1].errors == [] - assert resultList[1].path == ["post", "b"] - - // exceptions in here - assert resultList[2].errors.size() == 3 - assert resultList[2].errors[0].getMessage() == "Exception while fetching data (/post/c[0]/goes/bang) : Bang!" - assert resultList[2].errors[1].getMessage() == "Exception while fetching data (/post/c[1]/goes/bang) : Bang!" - assert resultList[2].errors[2].getMessage() == "Exception while fetching data (/post/c[2]/goes/bang) : Bang!" - assert resultList[2].path == ["post", "c"] - - // sub defers are sent in encountered order - assert resultList[3].data == [[commentText: "b_comment0"], [commentText: "b_comment1"], [commentText: "b_comment2"]] - assert resultList[3].errors == [] - assert resultList[3].path == ["post", "b", 0, "comments"] - - assert resultList[4].data == [[commentText: "b_comment0"], [commentText: "b_comment1"], [commentText: "b_comment2"]] - assert resultList[4].errors == [] - assert resultList[4].path == ["post", "b", 1, "comments"] - - assert resultList[5].data == [[commentText: "b_comment0"], [commentText: "b_comment1"], [commentText: "b_comment2"]] - assert resultList[5].errors == [] - assert resultList[5].path == ["post", "b", 2, "comments"] - - true - } - - def "nonNull types are not allowed"() { - - def query = ''' - { - mandatoryReviews @defer # nulls are not allowed - { - reviewText - } - } - ''' - when: - def initialResult = graphQL.execute(ExecutionInput.newExecutionInput().query(query).build()) - then: - initialResult.errors.size() == 1 - initialResult.errors[0].errorType == ErrorType.ValidationError - (initialResult.errors[0] as ValidationError).validationErrorType == ValidationErrorType.DeferDirectiveOnNonNullField - - } - - def "mutations cant have defers"() { - - def query = ''' - mutation { - mutate(arg : "go") @defer - } - ''' - when: - def initialResult = graphQL.execute(ExecutionInput.newExecutionInput().query(query).build()) - then: - initialResult.errors.size() == 1 - initialResult.errors[0].errorType == ErrorType.ValidationError - (initialResult.errors[0] as ValidationError).validationErrorType == ValidationErrorType.DeferDirectiveNotOnQueryOperation - } -} diff --git a/src/test/groovy/graphql/execution/defer/DeferSupportTest.groovy b/src/test/groovy/graphql/execution/defer/DeferSupportTest.groovy deleted file mode 100644 index 7f2c41e364..0000000000 --- a/src/test/groovy/graphql/execution/defer/DeferSupportTest.groovy +++ /dev/null @@ -1,272 +0,0 @@ -package graphql.execution.defer - -import graphql.DeferredExecutionResult -import graphql.ExecutionResult -import graphql.ExecutionResultImpl -import graphql.execution.ExecutionPath -import graphql.language.Argument -import graphql.language.BooleanValue -import graphql.language.Directive -import graphql.language.Field -import graphql.language.VariableReference -import org.awaitility.Awaitility -import spock.lang.Specification - -import java.util.concurrent.CompletableFuture - -import static graphql.TestUtil.mergedField - -class DeferSupportTest extends Specification { - - - def "emits N deferred calls with order preserved"() { - - given: - def deferSupport = new DeferSupport() - deferSupport.enqueue(offThread("A", 100, "/field/path")) // <-- will finish last - deferSupport.enqueue(offThread("B", 50, "/field/path")) // <-- will finish second - deferSupport.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first - - when: - List results = [] - def subscriber = new BasicSubscriber() { - @Override - void onNext(DeferredExecutionResult executionResult) { - results.add(executionResult) - subscription.request(1) - } - } - deferSupport.startDeferredCalls().subscribe(subscriber) - Awaitility.await().untilTrue(subscriber.finished) - then: - - results.size() == 3 - results[0].data == "A" - results[1].data == "B" - results[2].data == "C" - } - - def "calls within calls are enqueued correctly"() { - given: - def deferSupport = new DeferSupport() - deferSupport.enqueue(offThreadCallWithinCall(deferSupport, "A", "a", 100, "/a")) - deferSupport.enqueue(offThreadCallWithinCall(deferSupport, "B", "b", 50, "/b")) - deferSupport.enqueue(offThreadCallWithinCall(deferSupport, "C", "c", 10, "/c")) - - when: - List results = [] - BasicSubscriber subscriber = new BasicSubscriber() { - @Override - void onNext(DeferredExecutionResult executionResult) { - results.add(executionResult) - subscription.request(1) - } - } - deferSupport.startDeferredCalls().subscribe(subscriber) - - Awaitility.await().untilTrue(subscriber.finished) - then: - - results.size() == 6 - results[0].data == "A" - results[1].data == "B" - results[2].data == "C" - results[3].data == "a" - results[4].data == "b" - results[5].data == "c" - } - - def "stops at first exception encountered"() { - given: - def deferSupport = new DeferSupport() - deferSupport.enqueue(offThread("A", 100, "/field/path")) - deferSupport.enqueue(offThread("Bang", 50, "/field/path")) // <-- will throw exception - deferSupport.enqueue(offThread("C", 10, "/field/path")) - - when: - List results = [] - Throwable thrown = null - def subscriber = new BasicSubscriber() { - @Override - void onNext(DeferredExecutionResult executionResult) { - results.add(executionResult) - subscription.request(1) - } - - @Override - void onError(Throwable t) { - thrown = t - finished.set(true) - } - - @Override - void onComplete() { - assert false, "This should not be called!" - } - } - deferSupport.startDeferredCalls().subscribe(subscriber) - - Awaitility.await().untilTrue(subscriber.finished) - then: - - thrown.message == "java.lang.RuntimeException: Bang" - } - - def "you can cancel the subscription"() { - given: - def deferSupport = new DeferSupport() - deferSupport.enqueue(offThread("A", 100, "/field/path")) // <-- will finish last - deferSupport.enqueue(offThread("B", 50, "/field/path")) // <-- will finish second - deferSupport.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first - - when: - List results = [] - def subscriber = new BasicSubscriber() { - @Override - void onNext(DeferredExecutionResult executionResult) { - results.add(executionResult) - subscription.cancel() - finished.set(true) - } - } - deferSupport.startDeferredCalls().subscribe(subscriber) - - Awaitility.await().untilTrue(subscriber.finished) - then: - - results.size() == 1 - results[0].data == "A" - - } - - def "you cant subscribe twice"() { - given: - def deferSupport = new DeferSupport() - deferSupport.enqueue(offThread("A", 100, "/field/path")) - deferSupport.enqueue(offThread("Bang", 50, "/field/path")) // <-- will finish second - deferSupport.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first - - when: - Throwable expectedThrowble - deferSupport.startDeferredCalls().subscribe(new BasicSubscriber()) - deferSupport.startDeferredCalls().subscribe(new BasicSubscriber() { - @Override - void onError(Throwable t) { - expectedThrowble = t - } - }) - then: - expectedThrowble != null - } - - def "indicates of there any defers present"() { - given: - def deferSupport = new DeferSupport() - - when: - def deferPresent1 = deferSupport.isDeferDetected() - - then: - !deferPresent1 - - when: - deferSupport.enqueue(offThread("A", 100, "/field/path")) - def deferPresent2 = deferSupport.isDeferDetected() - - then: - deferPresent2 - } - - def "detects @defer directive"() { - given: - def deferSupport = new DeferSupport() - - when: - def noDirectivePresent = deferSupport.checkForDeferDirective(mergedField([ - new Field("a"), - new Field("b") - ]), [:]) - - then: - !noDirectivePresent - - when: - def directivePresent = deferSupport.checkForDeferDirective(mergedField([ - Field.newField("a").directives([new Directive("defer")]).build(), - new Field("b") - ]), [:]) - - then: - directivePresent - } - - def "detects @defer directive can be controlled via if"() { - given: - def deferSupport = new DeferSupport() - - when: - def ifArg = new Argument("if", new BooleanValue(false)) - def directivePresent = deferSupport.checkForDeferDirective(mergedField([ - Field.newField("a").directives([new Directive("defer", [ifArg])]).build(), - new Field("b") - ]), [:]) - - then: - !directivePresent - - when: - ifArg = new Argument("if", new BooleanValue(true)) - directivePresent = deferSupport.checkForDeferDirective(mergedField([ - Field.newField("a").directives([new Directive("defer", [ifArg])]).build(), - new Field("b") - ]), [:]) - - then: - directivePresent - - when: - ifArg = new Argument("if", new VariableReference("varRef")) - directivePresent = deferSupport.checkForDeferDirective(mergedField([ - Field.newField("a").directives([new Directive("defer", [ifArg])]).build(), - new Field("b") - ]), [varRef: false]) - - then: - !directivePresent - - when: - ifArg = new Argument("if", new VariableReference("varRef")) - directivePresent = deferSupport.checkForDeferDirective(mergedField([ - Field.newField("a").directives([new Directive("defer", [ifArg])]).build(), - new Field("b") - ]), [varRef: true]) - - then: - directivePresent - } - - private static DeferredCall offThread(String data, int sleepTime, String path) { - def callSupplier = { - CompletableFuture.supplyAsync({ - Thread.sleep(sleepTime) - if (data == "Bang") { - throw new RuntimeException(data) - } - new ExecutionResultImpl(data, []) - }) - } - return new DeferredCall(ExecutionPath.parse(path), callSupplier, new DeferredErrorSupport()) - } - - private - static DeferredCall offThreadCallWithinCall(DeferSupport deferSupport, String dataParent, String dataChild, int sleepTime, String path) { - def callSupplier = { - CompletableFuture.supplyAsync({ - Thread.sleep(sleepTime) - deferSupport.enqueue(offThread(dataChild, sleepTime, path)) - new ExecutionResultImpl(dataParent, []) - }) - } - return new DeferredCall(ExecutionPath.parse("/field/path"), callSupplier, new DeferredErrorSupport()) - } -} diff --git a/src/test/groovy/graphql/execution/defer/DeferredCallTest.groovy b/src/test/groovy/graphql/execution/defer/DeferredCallTest.groovy deleted file mode 100644 index 2e703bc875..0000000000 --- a/src/test/groovy/graphql/execution/defer/DeferredCallTest.groovy +++ /dev/null @@ -1,48 +0,0 @@ -package graphql.execution.defer - - -import graphql.ExecutionResultImpl -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -import static graphql.execution.ExecutionPath.parse -import static java.util.concurrent.CompletableFuture.completedFuture - -class DeferredCallTest extends Specification { - - def "test call capture gives a CF"() { - given: - DeferredCall call = new DeferredCall(parse("/path"), { - completedFuture(new ExecutionResultImpl("some data", Collections.emptyList())) - }, new DeferredErrorSupport()) - - when: - def future = call.invoke() - then: - future.join().data == "some data" - future.join().path == ["path"] - } - - def "test error capture happens via CF"() { - given: - def errorSupport = new DeferredErrorSupport() - errorSupport.onError(new ValidationError(ValidationErrorType.MissingFieldArgument)) - errorSupport.onError(new ValidationError(ValidationErrorType.FieldsConflict)) - - DeferredCall call = new DeferredCall(parse("/path"), { - completedFuture(new ExecutionResultImpl("some data", [new ValidationError(ValidationErrorType.FieldUndefined)])) - }, errorSupport) - - when: - def future = call.invoke() - def er = future.join() - - then: - er.errors.size() == 3 - er.errors[0].message.contains("Validation error of type FieldUndefined") - er.errors[1].message.contains("Validation error of type MissingFieldArgument") - er.errors[2].message.contains("Validation error of type FieldsConflict") - er.path == ["path"] - } -} diff --git a/src/test/groovy/graphql/execution/defer/DeferredErrorSupportTest.groovy b/src/test/groovy/graphql/execution/defer/DeferredErrorSupportTest.groovy deleted file mode 100644 index 3fc8e8e1a8..0000000000 --- a/src/test/groovy/graphql/execution/defer/DeferredErrorSupportTest.groovy +++ /dev/null @@ -1,77 +0,0 @@ -package graphql.execution.defer - -import graphql.DeferredExecutionResult -import graphql.Directives -import graphql.ExecutionResult -import graphql.GraphQL -import graphql.schema.DataFetcher -import graphql.schema.DataFetchingEnvironment -import org.reactivestreams.Publisher -import spock.lang.Specification - -import static graphql.TestUtil.schema -import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring -import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring -import static org.awaitility.Awaitility.await - -class DeferredErrorSupportTest extends Specification { - - def "#1040 errors in stage one do not affect deferred stages"() { - - def spec = ''' - type Query { - stage1 : String - stage2 : String - } - ''' - - def bangDF = new DataFetcher() { - @Override - Object get(DataFetchingEnvironment environment) { - throw new RuntimeException("bang-" + environment.getField().getName()) - } - } - - def runtimeWiring = newRuntimeWiring().type( - newTypeWiring("Query") - .dataFetchers([ - stage1: bangDF, - stage2: bangDF, - ]) - ).build() - - def schema = schema(spec, runtimeWiring).transform({ b -> b.additionalDirective(Directives.DeferDirective) }) - def graphql = GraphQL.newGraphQL(schema).build() - - when: - def executionResult = graphql.execute(''' - { - stage1, - stage2 @defer - } - ''') - - then: - executionResult.errors.size() == 1 - executionResult.errors[0].getMessage().contains("bang-stage1") - - when: - def executionResultDeferred = null - def subscriber = new BasicSubscriber() { - @Override - void onNext(DeferredExecutionResult executionResultStreamed) { - executionResultDeferred = executionResultStreamed - subscription.request(1) - } - } - Publisher deferredResultStream = executionResult.extensions[GraphQL.DEFERRED_RESULTS] as Publisher - deferredResultStream.subscribe(subscriber) - - await().untilTrue(subscriber.finished) - - then: - executionResultDeferred.errors.size() == 1 - executionResultDeferred.errors[0].getMessage().contains("bang-stage2") - - } -} diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy index 067cd447fb..80b1bbbd5c 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy @@ -1,9 +1,16 @@ package graphql.execution.directives +import graphql.GraphQLContext import graphql.TestUtil +import graphql.execution.CoercedVariables import graphql.execution.MergedField +import graphql.execution.NormalizedVariables +import graphql.language.IntValue +import graphql.normalized.NormalizedInputValue import spock.lang.Specification +import static graphql.language.AstPrinter.printAst + class QueryDirectivesImplTest extends Specification { def sdl = ''' @@ -12,6 +19,8 @@ class QueryDirectivesImplTest extends Specification { directive @cached(forMillis : Int = 99) on FIELD | QUERY directive @upper(place : String) on FIELD + + directive @rep(place : String) repeatable on FIELD type Query { f : String @@ -20,38 +29,92 @@ class QueryDirectivesImplTest extends Specification { def schema = TestUtil.schema(sdl) - def "can get immediate directives"() { - def f1 = TestUtil.parseField("f1 @cached @upper") def f2 = TestUtil.parseField("f2 @cached(forMillis : \$var) @timeout") def mergedField = MergedField.newMergedField([f1, f2]).build() - def impl = new QueryDirectivesImpl(mergedField, schema, [var: 10]) + def impl = new QueryDirectivesImpl(mergedField, schema, + CoercedVariables.of([var: 10]), + { -> NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))]) }, + GraphQLContext.getDefault(), Locale.getDefault()) when: def directives = impl.getImmediateDirectivesByName() then: directives.keySet().sort() == ["cached", "timeout", "upper"] + impl.getImmediateAppliedDirectivesByName().keySet().sort() == ["cached", "timeout", "upper"] when: def result = impl.getImmediateDirective("cached") + def appliedResult = impl.getImmediateAppliedDirective("cached") then: result.size() == 2 result[0].getName() == "cached" result[1].getName() == "cached" - result[0].getArgument("forMillis").getValue() == 99 // defaults - result[0].getArgument("forMillis").getDefaultValue() == 99 + result[0].getArgument("forMillis").getArgumentValue().value == 99 // defaults. Retain deprecated method to test getImmediateDirective + printAst(result[0].getArgument("forMillis").getArgumentDefaultValue().getValue()) == "99" - result[1].getArgument("forMillis").getValue() == 10 - result[1].getArgument("forMillis").getDefaultValue() == 99 + result[1].getArgument("forMillis").getArgumentValue().value == 10 // Retain deprecated method to test getImmediateDirective + printAst(result[1].getArgument("forMillis").getArgumentDefaultValue().getValue()) == "99" // the prototypical other properties are copied ok result[0].validLocations().collect({ it.name() }).sort() == ["FIELD", "QUERY"] result[1].validLocations().collect({ it.name() }).sort() == ["FIELD", "QUERY"] + + appliedResult.size() == 2 + appliedResult[0].getName() == "cached" + appliedResult[1].getName() == "cached" + + appliedResult[0].getArgument("forMillis").getValue() == 99 + appliedResult[1].getArgument("forMillis").getValue() == 10 } + def "builder works as expected"() { + def f1 = TestUtil.parseField("f1 @cached @upper") + def f2 = TestUtil.parseField("f2 @cached(forMillis : \$var) @timeout") + + def mergedField = MergedField.newMergedField([f1, f2]).build() + + def queryDirectives = QueryDirectives.newQueryDirectives() + .mergedField(mergedField) + .schema(schema) + .coercedVariables(CoercedVariables.of([var: 10])) + .normalizedVariables({ NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))]) }) + .graphQLContext(GraphQLContext.getDefault()) + .locale(Locale.getDefault()) + .build() + + when: + def appliedDirectivesByName = queryDirectives.getImmediateAppliedDirectivesByName() + + then: + appliedDirectivesByName.keySet().sort() == ["cached", "timeout", "upper"] + } + + def "gets repeated definitions"() { + def f1 = TestUtil.parseField("f1 @rep(place: \$var) @rep(place: \"HELLO\")") + + def mergedField = MergedField.newMergedField([f1]).build() + + def queryDirectives = QueryDirectives.newQueryDirectives() + .mergedField(mergedField) + .schema(schema) + .coercedVariables(CoercedVariables.of([var: "ABC"])) + .graphQLContext(GraphQLContext.getDefault()) + .locale(Locale.getDefault()) + .build() + + when: + def appliedDirectivesByName = queryDirectives.getImmediateAppliedDirectivesByName() + + then: + appliedDirectivesByName.keySet() == ["rep"] as Set + appliedDirectivesByName["rep"].size() == 2 + // Groovy is a pathway to many abilities some consider to be unnatural + appliedDirectivesByName["rep"].arguments.value.flatten().sort() == ["ABC", "HELLO"] + } } diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy index 0d8932db88..60c82e3b62 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy @@ -2,8 +2,14 @@ package graphql.execution.directives import graphql.GraphQL import graphql.TestUtil +import graphql.execution.RawVariables +import graphql.language.IntValue +import graphql.normalized.ExecutableNormalizedOperationFactory +import graphql.normalized.NormalizedInputValue import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates import graphql.schema.GraphQLDirective +import graphql.schema.GraphQLSchema import spock.lang.Specification /** @@ -74,11 +80,11 @@ class QueryDirectivesIntegrationTest extends Specification { graphql.execute({ input -> input.query(query).root(root) }) } - def joinArgs(List timeoutDirectives) { + static def joinArgs(List timeoutDirectives) { timeoutDirectives.collect({ def s = it.getName() + "(" it.arguments.forEach({ - s += it.getName() + ":" + it.getValue() + s += it.getName() + ":" + it.getArgumentValue().value }) s += ")" s @@ -89,13 +95,13 @@ class QueryDirectivesIntegrationTest extends Specification { capturedDirectives = [:] } - def "can collector directives as expected"() { + def "can collect directives as expected"() { when: def er = execute(pathologicalQuery) then: er.errors.isEmpty() - Map> immediateMap = capturedDirectives["review"].getImmediateDirectivesByName() + def immediateMap = capturedDirectives["review"].getImmediateAppliedDirectivesByName() def entries = immediateMap.entrySet().collectEntries({ [(it.getKey()): joinArgs(it.getValue())] }) @@ -103,10 +109,40 @@ class QueryDirectivesIntegrationTest extends Specification { timeout: "timeout(afterMillis:5),timeout(afterMillis:28),timeout(afterMillis:10)" ] - def immediate = capturedDirectives["review"].getImmediateDirective("cached") + def immediate = capturedDirectives["review"].getImmediateAppliedDirective("cached") joinArgs(immediate) == "cached(forMillis:5),cached(forMillis:10)" } + def "can collect merged field directives as expected"() { + when: + def query = """ + query Books { + books(searchString: "monkey") { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + review @timeout(afterMillis: 100) @cached(forMillis : 100) + } + } + + """ + def er = execute(query) + then: + er.errors.isEmpty() + + def immediateMap = capturedDirectives["review"].getImmediateAppliedDirectivesByName() + def entries = immediateMap.entrySet().collectEntries({ + [(it.getKey()): joinArgs(it.getValue())] + }) + entries == [cached : "cached(forMillis:10),cached(forMillis:100)", + timeout: "timeout(afterMillis:10),timeout(afterMillis:100)" + ] + + def immediate = capturedDirectives["review"].getImmediateAppliedDirective("cached") + joinArgs(immediate) == "cached(forMillis:10),cached(forMillis:100)" + + def immediate2 = capturedDirectives["review"].getImmediateAppliedDirective("timeout") + joinArgs(immediate2) == "timeout(afterMillis:10),timeout(afterMillis:100)" + } + def "wont create directives for peer fields accidentally"() { def query = '''query Books { books(searchString: "monkey") { @@ -123,7 +159,7 @@ class QueryDirectivesIntegrationTest extends Specification { then: er.errors.isEmpty() - Map> immediateMap = capturedDirectives["title"].getImmediateDirectivesByName() + def immediateMap = capturedDirectives["title"].getImmediateAppliedDirectivesByName() def entries = immediateMap.entrySet().collectEntries({ [(it.getKey()): joinArgs(it.getValue())] }) @@ -131,8 +167,138 @@ class QueryDirectivesIntegrationTest extends Specification { timeout: "timeout(afterMillis:99)" ] - def immediate = capturedDirectives["review"].getImmediateDirective("cached") + def immediate = capturedDirectives["review"].getImmediateAppliedDirective("cached") joinArgs(immediate) == "cached(forMillis:10)" } + def "can capture directive argument values inside ENO path"() { + def query = TestUtil.parseQuery(pathologicalQuery) + when: + def eno = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + schema, query, "Books", RawVariables.emptyVariables()) + + + then: + def booksENF = eno.getTopLevelFields()[0] + booksENF != null + def bookQueryDirectives = eno.getQueryDirectives(booksENF) + bookQueryDirectives.immediateAppliedDirectivesByName.isEmpty() + + def reviewField = eno.getCoordinatesToNormalizedFields().get(FieldCoordinates.coordinates("Book", "review")) + def reviewQueryDirectives = eno.getQueryDirectives(reviewField[0]) + def reviewImmediateDirectivesMap = reviewQueryDirectives.immediateAppliedDirectivesByName + def argInputValues = simplifiedInputValuesWithState(reviewImmediateDirectivesMap) + argInputValues == [ + timeout: [ + [timeout: [[afterMillis: 5]]], [timeout: [[afterMillis: 28]]], [timeout: [[afterMillis: 10]]] + ], + cached : [ + [cached: [[forMillis: 5]]], [cached: [[forMillis: 10]]] + ] + ] + + // normalised values are AST values + def normalizedValues = simplifiedNormalizedValues(reviewQueryDirectives.getNormalizedInputValueByImmediateAppliedDirectives()) + normalizedValues == [ + timeout: [ + [afterMillis: 5], [afterMillis: 28], [afterMillis: 10]], + cached : [ + [forMillis: 5], [forMillis: 10]] + ] + + } + + def "fragments used multiple times and directives on it"() { + String schema = """ + type Query { + foo: String + } + """ + QueryDirectives queryDirectives + def fooDF = { env -> + queryDirectives = env.getQueryDirectives() + return "Foo" + } as DataFetcher + + GraphQLSchema graphQLSchema = TestUtil.schema(schema, [Query: [foo: fooDF]]) + + String query = "{...F1 ...F1 } fragment F1 on Query { foo @include(if: true) } " + + def graphql = GraphQL.newGraphQL(graphQLSchema).build() + when: + def er = graphql.execute(query) + then: + er.data == [foo: "Foo"] + def byName = queryDirectives.getImmediateDirectivesByName(); + byName.size() == 1 + byName["include"].size() == 1 + byName["include"][0] instanceof GraphQLDirective + + + } + + def "fragments used multiple times and directives on it deeper"() { + String schema = """ + type Query { + foo: Foo + } + type Foo { + hello: String + } + """ + QueryDirectives queryDirectives + def fooDF = { env -> + return "Foo" + } as DataFetcher + + def helloDF = { env -> + queryDirectives = env.getQueryDirectives() + return "world" + } as DataFetcher + + GraphQLSchema graphQLSchema = TestUtil.schema(schema, [Query: [foo: fooDF], Foo: [hello: helloDF]]) + + String query = "{foo{...F1 ...F1 } } fragment F1 on Foo { hello @include(if: true) hello @include(if:true) } " + + def graphql = GraphQL.newGraphQL(graphQLSchema).build() + when: + def er = graphql.execute(query) + then: + er.data == [foo: [hello: "world"]] + def byName = queryDirectives.getImmediateDirectivesByName(); + byName.size() == 1 + byName["include"].size() == 2 + byName["include"][0] instanceof GraphQLDirective + byName["include"][1] instanceof GraphQLDirective + byName["include"][0] != byName["include"][1] + } + + + def simplifiedInputValuesWithState(Map> mapOfDirectives) { + def simpleMap = [:] + mapOfDirectives.forEach { k, listOfDirectives -> + + def dirVals = listOfDirectives.collect { qd -> + def argVals = qd.getArguments().collect { arg -> + def argValue = arg.getArgumentValue() + return [(arg.name): argValue?.value] + } + return [(qd.name): argVals] + } + simpleMap[k] = dirVals + } + return simpleMap + } + + def simplifiedNormalizedValues(Map> mapOfDirectives) { + Map>> simpleMap = new LinkedHashMap<>() + mapOfDirectives.forEach { qd, argMap -> + def argVals = argMap.collect { entry -> + def argValueAst = entry.value?.value as IntValue // just assume INtValue for these tests + return [(entry.key): argValueAst?.value?.toInteger()] + } + simpleMap.computeIfAbsent(qd.name, { _ -> [] }).addAll(argVals) + } + return simpleMap + } } diff --git a/src/test/groovy/graphql/execution/directives/RepeatableDirectivesTest.groovy b/src/test/groovy/graphql/execution/directives/RepeatableDirectivesTest.groovy new file mode 100644 index 0000000000..8d6338a885 --- /dev/null +++ b/src/test/groovy/graphql/execution/directives/RepeatableDirectivesTest.groovy @@ -0,0 +1,126 @@ +package graphql.execution.directives + +import graphql.TestUtil +import graphql.language.Directive +import graphql.language.Field +import graphql.language.OperationDefinition +import graphql.language.StringValue +import graphql.schema.idl.MockedWiringFactory +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.SchemaParser +import graphql.validation.Validator +import spock.lang.Specification + +class RepeatableDirectivesTest extends Specification { + + def sdl = ''' + directive @repeatableDirective(arg: String) repeatable on FIELD + + directive @nonRepeatableDirective on FIELD + type Query { + namedField: String + } + ''' + + def schema = TestUtil.schema(sdl) + + + def "repeatableDirectives"() { + def spec = ''' + query { + f1: namedField @repeatableDirective @repeatableDirective + f2: namedField @repeatableDirective + f3: namedField @nonRepeatableDirective + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 0 + } + + def "nonRepeatableDirective"() { + + def spec = ''' + query { + namedField @nonRepeatableDirective @nonRepeatableDirective + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 1 + validationErrors[0].message == "Validation error (DuplicateDirectiveName@[namedField]) : Non repeatable directives must be uniquely named within a location. The directive 'nonRepeatableDirective' used on a 'Field' is not unique" + } + + def "getRepeatableDirectivesInfo"() { + + def spec = ''' + query { + namedField @repeatableDirective(arg: "value1") @repeatableDirective(arg: "value2") + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + OperationDefinition operationDefinition = document.getDefinitions()[0] + Field field = operationDefinition.getSelectionSet().getSelections()[0] + List directives = field.getDirectives() + + then: + validationErrors.size() == 0 + directives.size() == 2 + ((StringValue) directives[0].getArgument("arg").getValue()).getValue() == "value1" + ((StringValue) directives[1].getArgument("arg").getValue()).getValue() == "value2" + } + + def " ensure repeatable directive on extend type run correctly "() { + given: + def spec = ''' + directive @key(dirArg:String!) repeatable on OBJECT + type Query{ + field: String! + pTypedField(fieldArg: String!): PType + } + + type PType @key(dirArg:"a") @key(dirArg:"b") { + name: String + } + + extend type PType @key(dirArg:"c") { + extendField: String + } + ''' + + when: + SchemaParser parser = new SchemaParser() + def typeDefinitionRegistry = parser.parse(spec) + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .wiringFactory(new MockedWiringFactory()) + .build() + def schemaGenerator = new SchemaGenerator() + def schema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring) + def pType = schema.getObjectType("PType") + + then: + pType.getExtensionDefinitions().size() == 1 + def extensionType = pType.getExtensionDefinitions().get(0) + extensionType.getDirectives().size() == 1 + extensionType.getDirectives("key") != null + extensionType.getFieldDefinitions().size() == 1 + extensionType.getFieldDefinitions().get(0).getName() == "extendField" + } + +} \ No newline at end of file diff --git a/src/test/groovy/graphql/execution/directives/VariableDirectiveTest.groovy b/src/test/groovy/graphql/execution/directives/VariableDirectiveTest.groovy new file mode 100644 index 0000000000..4d230b7a64 --- /dev/null +++ b/src/test/groovy/graphql/execution/directives/VariableDirectiveTest.groovy @@ -0,0 +1,107 @@ +package graphql.execution.directives + +import graphql.TestUtil +import graphql.language.Directive +import graphql.language.OperationDefinition +import graphql.language.StringValue +import graphql.language.VariableDefinition +import graphql.validation.Validator +import spock.lang.Specification + +class VariableDirectiveTest extends Specification { + + def sdl = ''' + directive @variableDirective(dirArg : String) on VARIABLE_DEFINITION + + directive @argumentDirective(dirArg : String) on ARGUMENT_DEFINITION + + type Query { + f(fieldArg: String) : String + f2: String + } + ''' + + def schema = TestUtil.schema(sdl) + + + def "valid variable directive"() { + def spec = ''' + query Foo($arg: String @variableDirective(dirArg : "directive_arg_value")){ + f(fieldArg: $arg) + f2 + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 0 + } + + def "invalid variable directive position"() { + + def spec = ''' + query Foo($arg: String){ + f(fieldArg: $arg) @variableDirective(dirArg : "directive_arg_value") + f2 + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 1 + validationErrors[0].message == "Validation error (MisplacedDirective@[f]) : Directive 'variableDirective' not allowed here" + } + + def "invalid directive for variable"() { + + def spec = ''' + query Foo($arg: String @argumentDirective(dirArg : "directive_arg_value")){ + f(fieldArg: $arg) + f2 + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 1 + validationErrors[0].message == "Validation error (MisplacedDirective) : Directive 'argumentDirective' not allowed here" + } + + + def "get variable directive information from parsed Document"() { + + def spec = ''' + query Foo($arg: String @variableDirective(dirArg : "directive_arg_value")){ + f(fieldArg: $arg) + f2 + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + + OperationDefinition operationDefinition = document.getDefinitions()[0] + VariableDefinition variableDefinition = operationDefinition.getVariableDefinitions()[0] + + List directives = variableDefinition.getDirectives() + + then: + directives.size() == 1 + directives[0].getName() == "variableDirective" + directives[0].getArguments().size() == 1 + ((StringValue) directives[0].getArgument("dirArg").getValue()).getValue() == "directive_arg_value" + } + +} diff --git a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy new file mode 100644 index 0000000000..487caee669 --- /dev/null +++ b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy @@ -0,0 +1,1920 @@ +package graphql.execution.incremental + +import com.google.common.collect.Iterables +import graphql.Directives +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.ExperimentalApi +import graphql.GraphQL +import graphql.GraphqlErrorBuilder +import graphql.GraphQLContext +import graphql.TestUtil +import graphql.execution.DataFetcherResult +import graphql.execution.pubsub.CapturingSubscriber +import graphql.incremental.DelayedIncrementalPartialResult +import graphql.incremental.IncrementalExecutionResult +import graphql.incremental.IncrementalExecutionResultImpl +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.TypeResolver +import graphql.schema.idl.RuntimeWiring +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry +import org.reactivestreams.Publisher +import spock.lang.Specification +import spock.lang.Unroll + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.AtomicInteger + +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring + +class DeferExecutionSupportIntegrationTest extends Specification { + def schemaSpec = ''' + type Query { + post : Post + posts: [Post] + postById(id: ID!): Post + hello: String + item(type: String!): Item + } + + interface Item { + id: ID! + summary: String + text: String + } + + type Page implements Item { + id: ID! + summary: String + text: String + views: Int + } + + type Post implements Item { + id: ID! + summary : String + text : String + latestComment: Comment + comments: [Comment] + resolvesToNull: String + dataFetcherError: String + dataAndError: String + coercionError: Int + typeMismatchError: [String] + nonNullableError: String! + wordCount: Int + fieldWithDataLoader1: String + fieldWithDataLoader2: String + } + + type Comment { + title: String + content: String + author: Person + } + + type Person { + name: String + avatar: String + } + + type Mutation { + addPost: Post + } + ''' + + GraphQL graphQL = null + + private static DataFetcher resolve(Object value) { + return resolve(value, 0, false) + } + + private static DataFetcher resolve(Object value, Integer sleepMs) { + return resolve(value, sleepMs, false) + } + + private static DataFetcher fieldWithDataLoader(String key) { + return (dfe) -> { + def dataLoader = dfe.getDataLoader("someDataLoader") + return dataLoader.load(dfe.getSource().id + "-" + key) + }; + } + + private static DataFetcher resolve(Object value, Integer sleepMs, boolean allowMultipleCalls) { + return new DataFetcher() { + boolean executed = false + + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + if (executed && !allowMultipleCalls) { + throw new IllegalStateException("This data fetcher can run only once") + } + executed = true + return CompletableFuture.supplyAsync { + Thread.sleep(sleepMs) + return value + } + } + } + } + + private static DataFetcher resolveItem() { + return (env) -> { + def type = env.getArgument("type") + + return CompletableFuture.supplyAsync { [__typename: type, id: "1001"] } + } + } + + private static TypeResolver itemTypeResolver() { + return (env) -> { + env.getSchema().getObjectType(env.object["__typename"]) + } + } + + private static DataFetcher resolveWithException() { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + throw new RuntimeException("Bang!!!") + } + } + } + + private static DataFetcher resolveWithDataAndError(Object data) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return DataFetcherResult.newResult() + .data(data) + .error( + GraphqlErrorBuilder.newError() + .message("Bang!") + .build() + ) + .build() + } + } + } + + void setup() { + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("post", resolve([id: "1001"])) + .dataFetcher("posts", resolve([ + [id: "1001"], + [id: "1002"], + [id: "1003"] + ])) + .dataFetcher("postById", (env) -> { + return [id: env.getArgument("id")] + }) + .dataFetcher("hello", resolve("world")) + .dataFetcher("item", resolveItem()) + ) + .type(newTypeWiring("Post").dataFetcher("summary", resolve("A summary", 10))) + .type(newTypeWiring("Post").dataFetcher("fieldWithDataLoader1", fieldWithDataLoader("fieldWithDataLoader1"))) + .type(newTypeWiring("Post").dataFetcher("fieldWithDataLoader2", fieldWithDataLoader("fieldWithDataLoader2"))) + .type(newTypeWiring("Post").dataFetcher("text", resolve("The full text", 100))) + .type(newTypeWiring("Post").dataFetcher("wordCount", resolve(45999, 10, true))) + .type(newTypeWiring("Post").dataFetcher("latestComment", resolve([title: "Comment title"], 10))) + .type(newTypeWiring("Post").dataFetcher("dataFetcherError", resolveWithException())) + .type(newTypeWiring("Post").dataFetcher("dataAndError", resolveWithDataAndError("data"))) + .type(newTypeWiring("Post").dataFetcher("coercionError", resolve("Not a number", 10))) + .type(newTypeWiring("Post").dataFetcher("typeMismatchError", resolve([a: "A Map instead of a List"], 10))) + .type(newTypeWiring("Post").dataFetcher("nonNullableError", resolve(null))) + .type(newTypeWiring("Page").dataFetcher("summary", resolve("A page summary", 10))) + .type(newTypeWiring("Page").dataFetcher("text", resolve("The page full text", 100))) + .type(newTypeWiring("Comment").dataFetcher("content", resolve("Full content", 100))) + .type(newTypeWiring("Comment").dataFetcher("author", resolve([name: "Author name"], 10))) + .type(newTypeWiring("Person").dataFetcher("avatar", resolve("Avatar image", 100))) + .type(newTypeWiring("Mutation") + .dataFetcher("addPost", resolve([id: "1001"])) + ) + .type(newTypeWiring("Item") + .typeResolver(itemTypeResolver())) + .build() + + def schema = TestUtil.schema(schemaSpec, runtimeWiring) + .transform({ builder -> builder.additionalDirective(Directives.DeferDirective) }) + this.graphQL = GraphQL.newGraphQL(schema).build() + } + + def "simple defer"() { + def query = ''' + query { + post { + id + ... @defer { + summary + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ] + ] + } + + def "defer with aliased fields"() { + def query = ''' + query { + postAlias: post { + idAlias: id + ... @defer { + summaryAlias: summary + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [postAlias: [idAlias: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["postAlias"], + data: [summaryAlias: "A summary"] + ] + ] + ] + ] + } + + def "aliased fields with different parameters"() { + def query = ''' + query { + postById(id: "1") { + id + } + ... @defer { + post2: postById(id: "2") { + id2: id + } + } + ... @defer(label: "defer-post3") { + post3: postById(id: "3") { + ... @defer(label: "defer-id3") { + id3: id + } + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [postById: [id: "1"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + // Ordering is non-deterministic, so we assert on the things we know are going to be true. + + incrementalResults.size() == 3 + // only the last payload has "hasNext=true" + incrementalResults[0].hasNext == true + incrementalResults[1].hasNext == true + incrementalResults[2].hasNext == false + + // every payload has only 1 incremental item + incrementalResults.every { it.incremental.size() == 1 } + + incrementalResults.any { + it.incremental[0] == [path: [], data: [post2: [id2: "2"]]] + } + + // id3 HAS TO be delivered after post3 + def indexOfPost3 = Iterables.indexOf(incrementalResults, { + it.incremental[0] == [path: [], label: "defer-post3", data: [post3: [:]]] + }) + + def indexOfId3 = Iterables.indexOf(incrementalResults, { + it.incremental[0] == [path: ["post3"], label: "defer-id3", data: [id3: "3"]] + }) + + // Assert that both post3 and id3 are present + indexOfPost3 >= 0 + indexOfId3 >= 0 + // Assert that id3 is delivered after post3 + indexOfId3 > indexOfPost3 + } + + def "defer on interface field"() { + def query = """ + query { + item(type: "$type") { + __typename + id + ... on Item @defer { + summary + } + + ... on Post { + text + } + + ... on Page @defer { + text + } + } + } + """ + + when: + def initialResult = executeQuery(query) + + then: + if (type == "Post") { + assert initialResult.toSpecification() == [ + data : [item: [__typename: "Post", id: "1001", text: "The full text"]], + hasNext: true + ] + } else { + assert initialResult.toSpecification() == [ + data : [item: [__typename: "Page", id: "1001"]], + hasNext: true + ] + } + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + if (type == "Post") { + assert incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["item"], + data: [summary: "A summary"] + ] + ] + ] + ] + } else { + assert incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path: ["item"], + data: [summary: "A page summary"] + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["item"], + data: [text: "The page full text"] + ] + ] + ] + ] + } + + where: + type << ["Page", "Post"] + } + + def "defer execution is ignored if support for incremental delivery is disabled"() { + def query = ''' + query { + post { + id + ... @defer { + summary + } + } + } + ''' + + when: + ExecutionResult initialResult = executeQuery(query, false, [:]) + + then: + !(initialResult instanceof IncrementalExecutionResult) + + initialResult.toSpecification() == [ + data: [post: [id: "1001", summary: "A summary"]], + ] + + } + + def "simple defer with label"() { + def query = ''' + query { + post { + id + ... @defer(label: "summary-defer") { + summary + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path : ["post"], + label: "summary-defer", + data : [summary: "A summary"] + ] + ] + ] + ] + } + + def "defer with null label should behave as if no label was provided"() { + def query = ''' + query { + post { + id + ... @defer(label: null) { + summary + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ] + ] + } + + def "deferred field results in 'null'"() { + def query = ''' + query { + post { + id + ... @defer { + resolvesToNull + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [resolvesToNull: null] + ] + ] + ] + ] + } + + def "simple defer with fragment definition"() { + def query = ''' + query { + post { + id + ... PostData @defer + } + } + + fragment PostData on Post { + summary + text + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary", text: "The full text"] + ] + ] + ] + ] + } + + @Unroll + def "defer with 'if: #ifValue' "() { + def query = """ + query { + post { + id + ... @defer(if: $ifValue) { + summary + } + } + } + """ + + when: + ExecutionResult executionResult = executeQuery(query) + + then: + if (ifValue) { + assert executionResult instanceof IncrementalExecutionResultImpl + + assert executionResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + def incrementalResults = getIncrementalResults(executionResult) + + assert incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ] + ] + } else { + assert !(executionResult instanceof IncrementalExecutionResult) + + assert executionResult.toSpecification() == [ + data: [post: [id: "1001", summary: "A summary"]], + ] + } + + where: + ifValue << [true, false] + } + + @Unroll + def "defer with 'if: #ifValue' passed as variable "() { + def query = """ + query(\$ifVar: Boolean!) { + post { + id + ... @defer(if: \$ifVar) { + summary + } + } + } + """ + + when: + ExecutionResult executionResult = executeQuery(query, [ifVar: ifValue]) + + then: + if (ifValue) { + assert executionResult instanceof IncrementalExecutionResultImpl + + assert executionResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + def incrementalResults = getIncrementalResults(executionResult) + + assert incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ] + ] + } else { + assert !(executionResult instanceof IncrementalExecutionResult) + + assert executionResult.toSpecification() == [ + data: [post: [id: "1001", summary: "A summary"]], + ] + } + + where: + ifValue << [true, false] + } + + def "2 fields deferred together"() { + def query = ''' + query { + post { + id + ... @defer { + summary + text + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary", text: "The full text"] + ] + ] + ] + ] + } + + def "2 fields deferred independently"() { + def query = ''' + query { + post { + id + ... @defer(label: "summary-defer") { + summary + } + ... @defer(label: "text-defer") { + text + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + label: "summary-defer", + path : ["post"], + data : [summary: "A summary"] + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + label: "text-defer", + path : ["post"], + data : [text: "The full text"] + ] + ] + ] + ] + } + + def "order of @defer definition in query doesn't affect order of incremental payloads in response"() { + def query = ''' + query { + post { + id + # "text" is defined before "summary" in the query, but it's slower, so it will be delivered after. + ... @defer { + text + } + ... @defer { + summary + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"] + ] + ] + ] + ] + } + + def "keeps the fields named correctly when interspersed in the query"() { + def query = ''' + query { + post { + firstId: id + ... @defer { + text + } + secondId: id + ... @defer { + summary + } + thirdId: id + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [firstId: "1001", secondId: "1001", thirdId: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"] + ] + ] + ] + ] + } + + def "defer result in initial result being empty object"() { + def query = ''' + query { + post { + ... @defer { + summary + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [:]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"] + ] + ] + ] + ] + } + + def "defer on top level field"() { + def query = ''' + query { + hello + ... @defer { + post { + id + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: [], + data: [post: [id: "1001"]] + ] + ] + ] + ] + } + + def "nested defers"() { + def query = ''' + query { + ... @defer { + post { + id + ... @defer { + summary + latestComment { + title + ... @defer { + content + } + } + } + } + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [:], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path: [], + data: [post: [id: "1001"]] + ] + ] + ], + [ + hasNext : true, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary", latestComment: [title: "Comment title"]] + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post", "latestComment"], + data: [content: "Full content"] + ] + ] + ] + ] + } + + def "multiple defers on same field"() { + + def query = ''' + query { + post { + ... @defer { + summary + } + ... @defer(label: "defer-outer") { + summary + ... @defer(label: "defer-inner") { + summary + } + } + } + } + ''' + + when: + + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [:]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + // Ordering is non-deterministic, so we assert on the things we know are going to be true. + + incrementalResults.size() == 3 + // only the last payload has "hasNext=true" + incrementalResults[0].hasNext == true + incrementalResults[1].hasNext == true + incrementalResults[2].hasNext == false + + // every payload has only 1 incremental item, and the data is the same for all of them + incrementalResults.every { it.incremental.size() == 1 } + incrementalResults.every { it.incremental[0].data == [summary: "A summary"] } + + // "label" is different for every payload + incrementalResults.any { it.incremental[0].label == null } + incrementalResults.any { it.incremental[0].label == "defer-inner" } + incrementalResults.any { it.incremental[0].label == "defer-outer" } + } + + def "mutations can have defers"() { + def query = ''' + mutation { + addPost { + firstId: id + ... @defer { + text + } + secondId: id + ... @defer { + summary + } + thirdId: id + } + } + ''' + + when: + IncrementalExecutionResult initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [addPost: [firstId: "1001", secondId: "1001", thirdId: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path: ["addPost"], + data: [summary: "A summary"] + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["addPost"], + data: [text: "The full text"] + ] + ] + ] + ] + } + + def "can handle error raised by data fetcher"() { + def query = ''' + query { + post { + id + ... @defer { + dataFetcherError + } + ... @defer { + text + } + } + } + ''' + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path : ["post"], + data : [dataFetcherError: null], + errors: [[ + message : "Exception while fetching data (/post/dataFetcherError) : Bang!!!", + locations : [[line: 6, column: 25]], + path : ["post", "dataFetcherError"], + extensions: [classification: "DataFetchingException"] + ]], + ], + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + + def "can handle data fetcher that returns both data and error on nested field"() { + def query = ''' + query { + hello + ... @defer { + post { + dataAndError + } + } + } + ''' + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path : [], + data : [post: [dataAndError: "data"]], + errors: [[ + message : "Bang!", + locations : [], + extensions: [classification: "DataFetchingException"] + ]], + ], + ] + ], + ] + } + + def "can handle data fetcher that returns both data and error"() { + def query = ''' + query { + post { + id + ... @defer { + dataAndError + } + ... @defer { + text + } + } + } + ''' + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path : ["post"], + data : [dataAndError: "data"], + errors: [[ + message : "Bang!", + locations : [], + extensions: [classification: "DataFetchingException"] + ]], + ], + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + + def "can handle UnresolvedTypeException"() { + def query = """ + query { + post { + id + ... @defer { + text + } + } + ... @defer { + item(type: "NonExistingType") { + id + summary + } + } + } + """ + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path : [], + data : [item: null], + errors: [ + [ + message : "Can't resolve '/item'. Abstract type 'Item' must resolve to an Object type at runtime for field 'Query.item'. Could not determine the exact type of 'Item'", + path : ["item"], + extensions: [ + classification: "DataFetchingException" + ] + ] + ], + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + + def "can handle coercion problem"() { + def query = """ + query { + post { + id + ... @defer { + text + } + ... @defer { + coercionError + } + } + } + """ + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path : ["post"], + data : [coercionError: null], + errors: [ + [ + message : "Can't serialize value (/post/coercionError) : Expected a value that can be converted to type 'Int' but it was a 'String'", + path : ["post", "coercionError"], + extensions: [ + classification: "DataFetchingException" + ] + ] + ], + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + + def "can handle type mismatch problem"() { + def query = """ + query { + post { + id + ... @defer { + text + } + ... @defer { + typeMismatchError + } + } + } + """ + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path : ["post"], + data : [typeMismatchError: null], + errors: [ + [ + message : "Can't resolve value (/post/typeMismatchError) : type mismatch error, expected type LIST", + path : ["post", "typeMismatchError"], + extensions: [ + classification: "DataFetchingException" + ] + ] + ], + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + + def "can handle non nullable error in one of the defer calls"() { + def query = """ + query { + post { + id + ... @defer { + text + } + ... @defer { + summary + nonNullableError + } + } + } + """ + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + data : null, + path : ["post"], + errors: [ + [ + message : "The field at path '/post/nonNullableError' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'String' within parent type 'Post'", + path : ["post", "nonNullableError"], + extensions: [ + classification: "NullValueInNonNullableField" + ] + ] + ], + ] + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + + def "can handle non nullable error in the initial result"() { + def query = """ + query { + post { + id + nonNullableError + ... @defer { + summary + } + } + } + """ + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: null], + errors : [ + [message : "The field at path '/post/nonNullableError' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'String' within parent type 'Post'", + path : ["post", "nonNullableError"], + extensions: [classification: "NullValueInNonNullableField"] + ] + ], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [summary: "A summary"], + ] + ] + ] + ] + } + + def "defer on list items"() { + def query = ''' + query { + posts { + id + ... @defer { + wordCount + } + } + } + ''' + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [posts: [[id: "1001"], [id: "1002"], [id: "1003"]]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + // Ordering is non-deterministic, so we assert on the things we know are going to be true. + + incrementalResults.size() == 3 + // only the last payload has "hasNext=true" + incrementalResults[0].hasNext == true + incrementalResults[1].hasNext == true + incrementalResults[2].hasNext == false + + // every payload has only 1 incremental item, and the data is the same for all of them + incrementalResults.every { it.incremental.size() == 1 } + incrementalResults.every { it.incremental[0].data == [wordCount: 45999] } + + // path is different for every payload + incrementalResults.any { it.incremental[0].path == ["posts", 0] } + incrementalResults.any { it.incremental[0].path == ["posts", 1] } + incrementalResults.any { it.incremental[0].path == ["posts", 2] } + } + + + def "two fragments one with defer and one without"() { + given: + def query = ''' + query { + post { + text + ...f1 @defer + ...f2 + } + } + + fragment f1 on Post { + summary + } + fragment f2 on Post { + summary + } + ''' + when: + def result = executeQuery(query) + + then: + result.toSpecification() == [ + data: [post: [summary: "A summary", text: "The full text"]] + ] + !(result instanceof IncrementalExecutionResult) + + + } + + def "two fragments one same type"() { + given: + def query = ''' + query { + post { + id + ...f1 + ...f2 @defer + } + } + + fragment f1 on Post { + text + } + fragment f2 on Post { + summary + } + ''' + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001", text: "The full text"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + + incrementalResults.size() == 1 + incrementalResults[0] == [incremental: [[path: ["post"], data: [summary: "A summary"]]], + hasNext : false + ] + + } + + def "dataloader used inside defer"() { + given: + def query = ''' + query { + post { + id + ...@defer { + fieldWithDataLoader1 + fieldWithDataLoader2 + } + } + } + ''' + + def batchLoaderCallCount = new AtomicInteger(0) + when: + def initialResult = executeQuery(query, true, [:], batchLoaderCallCount) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + batchLoaderCallCount.get() == 1 + incrementalResults.size() == 1 + incrementalResults[0] == [incremental: [[path: ["post"], data: [fieldWithDataLoader1: "1001-fieldWithDataLoader1", fieldWithDataLoader2: "1001-fieldWithDataLoader2"]]], + hasNext : false + ] + + } + + def "eager defer starts before initial result completes when ENABLE_EAGER_DEFER_START"() { + given: + def deferStarted = new CountDownLatch(1) + def allowDeferredComplete = new CountDownLatch(1) + + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("post", resolve([id: "1001"])) + ) + .type(newTypeWiring("Query").dataFetcher("hello", resolve("world", 4000))) + .type(newTypeWiring("Post").dataFetcher("summary", { env -> + deferStarted.countDown() + allowDeferredComplete.await(2, TimeUnit.SECONDS) + CompletableFuture.completedFuture("A summary") + } as DataFetcher)) + .type(newTypeWiring("Item").typeResolver(itemTypeResolver())) + .build() + + def schema = TestUtil.schema(schemaSpec, runtimeWiring) + .transform({ b -> b.additionalDirective(Directives.DeferDirective) }) + def testGraphQL = GraphQL.newGraphQL(schema).build() + + def ctx = GraphQLContext.newContext().build() + ctx.put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, true) + ctx.put(IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START, true) + + def query = ''' + query { + hello + ... @defer { post { summary } } + } + ''' + + when: + def executionInput = ExecutionInput.newExecutionInput() + .graphQLContext([(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT): true, (IncrementalExecutionContextKeys.ENABLE_EAGER_DEFER_START): true]) + .query(query) + .build() + def execFuture = CompletableFuture.supplyAsync { + testGraphQL.execute(executionInput) + } + + then: + // Deferred fetcher starts while initial result is still computing + assert deferStarted.await(2000, TimeUnit.MILLISECONDS) + assert !execFuture.isDone() + + when: + allowDeferredComplete.countDown() + def initialResult = execFuture.join() as IncrementalExecutionResult + + then: + assert initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: [], + data: [post: [summary: "A summary"]] + ] + ] + ] + ] + } + + + def "incremental starts only after initial result when eager start disabled"() { + given: + def deferStarted = new CountDownLatch(1) + def allowDeferredComplete = new CountDownLatch(1) + + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("post", resolve([id: "1001"])) + ) + .type(newTypeWiring("Query").dataFetcher("hello", resolve("world", 300))) + .type(newTypeWiring("Post").dataFetcher("summary", { env -> + deferStarted.countDown() + allowDeferredComplete.await(2, TimeUnit.SECONDS) + CompletableFuture.completedFuture("A summary") + } as DataFetcher)) + .type(newTypeWiring("Item").typeResolver(itemTypeResolver())) + .build() + + def schema = TestUtil.schema(schemaSpec, runtimeWiring) + .transform({ b -> b.additionalDirective(Directives.DeferDirective) }) + def testGraphQL = GraphQL.newGraphQL(schema).build() + + def query = ''' + query { + hello + ... @defer { post { summary } } + } + ''' + + when: + def executionInput = ExecutionInput.newExecutionInput() + .graphQLContext([(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT): true]) // no eager flag + .query(query) + .build() + def execFuture = CompletableFuture.supplyAsync { + testGraphQL.execute(executionInput) + } + + then: + assert !deferStarted.await(100, TimeUnit.MILLISECONDS) + assert !execFuture.isDone() + + when: + def initialResult = execFuture.join() as IncrementalExecutionResult + + then: + assert initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + assert deferStarted.count == 1 // still not started, no subscriber yet + + when: + allowDeferredComplete.countDown() + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path: [], + data: [post: [summary: "A summary"]] + ] + ] + ] + ] + } + + + private ExecutionResult executeQuery(String query) { + return this.executeQuery(query, true, [:]) + } + + private ExecutionResult executeQuery(String query, Map variables) { + return this.executeQuery(query, true, variables) + } + + private ExecutionResult executeQuery(String query, boolean incrementalSupport, Map variables, AtomicInteger batchLoaderCallCount = null) { + BatchLoader batchLoader = { keys -> + if (batchLoaderCallCount != null) { + batchLoaderCallCount.incrementAndGet() + } + return CompletableFuture.completedFuture(keys) + } + DataLoader dl = DataLoaderFactory.newDataLoader(batchLoader) + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); + dataLoaderRegistry.register("someDataLoader", dl) + return graphQL.execute( + ExecutionInput.newExecutionInput() + .graphQLContext([(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .query(query) + .variables(variables) + .dataLoaderRegistry(dataLoaderRegistry) + .build() + ) + } + + private static List> getIncrementalResults(IncrementalExecutionResult initialResult) { + Publisher deferredResultStream = initialResult.incrementalItemPublisher + + def subscriber = new CapturingSubscriber() + + deferredResultStream.subscribe(subscriber) + + Awaitility.await().untilTrue(subscriber.isDone()) + if (subscriber.throwable != null) { + throw new RuntimeException(subscriber.throwable) + } + return subscriber.getEvents() + .collect { it.toSpecification() } + } +} diff --git a/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy new file mode 100644 index 0000000000..d8a011b8c4 --- /dev/null +++ b/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy @@ -0,0 +1,119 @@ +package graphql.execution.incremental + +import graphql.ExecutionResultImpl +import graphql.GraphQLError +import graphql.execution.NonNullableFieldWasNullException +import graphql.execution.ResultPath +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.function.Supplier + +import static graphql.execution.ResultPath.parse +import static java.util.concurrent.CompletableFuture.completedFuture + +class DeferredCallTest extends Specification { + + def "test call capture gives a CF"() { + given: + DeferredFragmentCall call = new DeferredFragmentCall("my-label", parse("/path"), + [createResolvedFieldCall("field", "some data")], new AlternativeCallContext()) + + when: + def future = call.invoke() + then: + future.join().toSpecification() == [ + label: "my-label", + path : ["path"], + data : [field: "some data"] + ] + } + + def "multiple field calls are resolved together"() { + given: + DeferredFragmentCall call = new DeferredFragmentCall("my-label", parse("/path"), + [ + createResolvedFieldCall("field1", "some data 1"), + createResolvedFieldCall("field2", "some data 2"), + createResolvedFieldCall("field3", "some data 3") + ], + new AlternativeCallContext() + ) + + when: + def future = call.invoke() + then: + future.join().toSpecification() == [ + label: "my-label", + path : ["path"], + data : [field1: "some data 1", field2: "some data 2", field3: "some data 3"] + ] + } + + def "can handle non-nullable field error"() { + given: + def deferredCallContext = new AlternativeCallContext() + def mockedException = Mock(NonNullableFieldWasNullException) { + getMessage() >> "Field value can't be null" + getPath() >> ResultPath.parse("/path") + } + + DeferredFragmentCall call = new DeferredFragmentCall("my-label", parse("/path"), [ + createFieldCallThatThrowsException(mockedException), + createResolvedFieldCall("field1", "some data") + ], deferredCallContext) + + when: + def future = call.invoke() + def deferPayload = future.join() + + then: + deferPayload.toSpecification() == [ + data : null, + path : ["path"], + label : "my-label", + errors: [ + [ + message : "Field value can't be null", + path : ["path"], + extensions: [classification: "NullValueInNonNullableField"] + ] + ], + ] + } + + private static Supplier> createResolvedFieldCall( + String fieldName, + Object data + ) { + return createResolvedFieldCall(fieldName, data, Collections.emptyList()) + } + + private static Supplier> createResolvedFieldCall( + String fieldName, + Object data, + List errors + ) { + return new Supplier>() { + @Override + CompletableFuture get() { + return completedFuture( + new DeferredFragmentCall.FieldWithExecutionResult(fieldName, + new ExecutionResultImpl(data, errors) + ) + ) + } + } + } + + private static Supplier> createFieldCallThatThrowsException( + Throwable exception + ) { + return new Supplier>() { + @Override + CompletableFuture get() { + return CompletableFuture.failedFuture(exception) + } + } + } +} diff --git a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy new file mode 100644 index 0000000000..db9085274f --- /dev/null +++ b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy @@ -0,0 +1,337 @@ +package graphql.execution.incremental + + +import graphql.ExecutionResultImpl +import graphql.execution.ResultPath +import graphql.execution.pubsub.CapturingSubscriber +import graphql.incremental.DelayedIncrementalPartialResult +import org.awaitility.Awaitility +import org.reactivestreams.Publisher +import spock.lang.Specification + +import java.util.concurrent.Callable +import java.util.concurrent.CompletableFuture +import java.util.concurrent.Executors +import java.util.concurrent.ThreadFactory +import java.util.function.Supplier + +class IncrementalCallStateDeferTest extends Specification { + + def "emits N deferred calls - ordering depends on call latency"() { + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread("A", 100, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread("B", 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first + + when: + List results = startAndWaitCalls(incrementalCallState) + + then: + assertResultsSizeAndHasNextRule(3, results) + results[0].incremental[0].data["c"] == "C" + results[1].incremental[0].data["b"] == "B" + results[2].incremental[0].data["a"] == "A" + } + + def "calls within calls are enqueued correctly"() { + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThreadCallWithinCall(incrementalCallState, "A", "A_Child", 500, "/a")) + incrementalCallState.enqueue(offThreadCallWithinCall(incrementalCallState, "B", "B_Child", 300, "/b")) + incrementalCallState.enqueue(offThreadCallWithinCall(incrementalCallState, "C", "C_Child", 100, "/c")) + + when: + List results = startAndWaitCalls(incrementalCallState) + + then: + assertResultsSizeAndHasNextRule(6, results) + results[0].incremental[0].data["c"] == "C" + results[1].incremental[0].data["c_child"] == "C_Child" + results[2].incremental[0].data["b"] == "B" + results[3].incremental[0].data["a"] == "A" + results[4].incremental[0].data["b_child"] == "B_Child" + results[5].incremental[0].data["a_child"] == "A_Child" + } + + def "stops at first exception encountered"() { + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread("A", 100, "/field/path")) + incrementalCallState.enqueue(offThread("Bang", 50, "/field/path")) // <-- will throw exception + incrementalCallState.enqueue(offThread("C", 10, "/field/path")) + + when: + def subscriber = new CapturingSubscriber() { + @Override + void onComplete() { + assert false, "This should not be called!" + } + } + incrementalCallState.startDeferredCalls().subscribe(subscriber) + + Awaitility.await().untilTrue(subscriber.isDone()) + + def results = subscriber.getEvents() + def thrown = subscriber.getThrowable() + + then: + thrown.message == "java.lang.RuntimeException: Bang" + results[0].incremental[0].data["c"] == "C" + } + + def "you can cancel the subscription"() { + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread("A", 100, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread("B", 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first + + when: + def subscriber = new CapturingSubscriber() { + @Override + void onNext(DelayedIncrementalPartialResult executionResult) { + this.getEvents().add(executionResult) + subscription.cancel() + this.isDone().set(true) + } + } + incrementalCallState.startDeferredCalls().subscribe(subscriber) + + Awaitility.await().untilTrue(subscriber.isDone()) + def results = subscriber.getEvents() + + then: + results.size() == 1 + results[0].incremental[0].data["c"] == "C" + // Cancelling the subscription will result in an invalid state. + // The last result item will have "hasNext=true" (but there will be no next) + results[0].hasNext + } + + def "you can't subscribe twice"() { + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread("A", 100, "/field/path")) + incrementalCallState.enqueue(offThread("Bang", 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first + + when: + def subscriber1 = new CapturingSubscriber() + def subscriber2 = new CapturingSubscriber() + incrementalCallState.startDeferredCalls().subscribe(subscriber1) + incrementalCallState.startDeferredCalls().subscribe(subscriber2) + + then: + subscriber2.throwable != null + subscriber2.throwable.message == "This publisher only supports one subscriber" + } + + def "indicates if there are any defers present"() { + given: + def incrementalCallState = new IncrementalCallState() + + when: + def deferPresent1 = incrementalCallState.getIncrementalCallsDetected() + + then: + !deferPresent1 + + when: + incrementalCallState.enqueue(offThread("A", 100, "/field/path")) + def deferPresent2 = incrementalCallState.getIncrementalCallsDetected() + + then: + deferPresent2 + } + + def "multiple fields are part of the same call"() { + given: "a DeferredCall that contains resolution of multiple fields" + def call1 = new Supplier>() { + @Override + CompletableFuture get() { + return CompletableFuture.supplyAsync({ + Thread.sleep(10) + new DeferredFragmentCall.FieldWithExecutionResult("call1", new ExecutionResultImpl("Call 1", [])) + }) + } + } + + def call2 = new Supplier>() { + @Override + CompletableFuture get() { + return CompletableFuture.supplyAsync({ + Thread.sleep(100) + new DeferredFragmentCall.FieldWithExecutionResult("call2", new ExecutionResultImpl("Call 2", [])) + }) + } + } + + def deferredCall = new DeferredFragmentCall(null, ResultPath.parse("/field/path"), [call1, call2], new AlternativeCallContext()) + + when: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(deferredCall) + + def results = startAndWaitCalls(incrementalCallState) + + then: + assertResultsSizeAndHasNextRule(1, results) + results[0].incremental[0].data["call1"] == "Call 1" + results[0].incremental[0].data["call2"] == "Call 2" + } + + def "race conditions should not impact the calculation of the hasNext value"() { + given: "calls that have the same sleepTime" + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread("A", 10, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread("B", 10, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first + + when: + List results = startAndWaitCalls(incrementalCallState) + + then: "hasNext placement should be deterministic - only the last event published should have 'hasNext=true'" + assertResultsSizeAndHasNextRule(3, results) + + then: "but the actual order or publish events is non-deterministic - they all have the same latency (sleepTime)." + results.any { it.incremental[0].data["a"] == "A" } + results.any { it.incremental[0].data["b"] == "B" } + results.any { it.incremental[0].data["c"] == "C" } + } + + def "nothing happens until the publisher is subscribed to"() { + + def startingValue = "*" + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread({ -> startingValue + "A" }, 100, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread({ -> startingValue + "B" }, 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread({ -> startingValue + "C" }, 10, "/field/path")) // <-- will finish first + + when: + + // get the publisher but not work has been done here + def publisher = incrementalCallState.startDeferredCalls() + // we are changing a side effect after the publisher is created + startingValue = "_" + + // subscription wll case the queue publisher to start draining the queue + List results = subscribeAndWaitCalls(publisher) + + then: + assertResultsSizeAndHasNextRule(3, results) + results[0].incremental[0].data["_c"] == "_C" + results[1].incremental[0].data["_b"] == "_B" + results[2].incremental[0].data["_a"] == "_A" + } + + def "can swap threads on subscribe"() { + + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread({ -> "A" }, 100, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread({ -> "B" }, 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread({ -> "C" }, 10, "/field/path")) // <-- will finish first + + when: + + // get the publisher but not work has been done here + def publisher = incrementalCallState.startDeferredCalls() + + def threadFactory = new ThreadFactory() { + @Override + Thread newThread(Runnable r) { + return new Thread(r, "SubscriberThread") + } + } + def executor = Executors.newSingleThreadExecutor(threadFactory) + + def subscribeThreadName = "" + Callable callable = new Callable() { + @Override + Object call() throws Exception { + subscribeThreadName = Thread.currentThread().getName() + def listOfResults = subscribeAndWaitCalls(publisher) + return listOfResults + } + } + def future = executor.submit(callable) + + Awaitility.await().until { future.isDone() } + + then: + def results = future.get() + + // we subscribed on our other thread + subscribeThreadName == "SubscriberThread" + + assertResultsSizeAndHasNextRule(3, results) + results[0].incremental[0].data["c"] == "C" + results[1].incremental[0].data["b"] == "B" + results[2].incremental[0].data["a"] == "A" + } + + private static DeferredFragmentCall offThread(String data, int sleepTime, String path) { + offThread(() -> data, sleepTime, path) + } + + private static DeferredFragmentCall offThread(Supplier dataSupplier, int sleepTime, String path) { + def callSupplier = new Supplier>() { + @Override + CompletableFuture get() { + return CompletableFuture.supplyAsync({ + Thread.sleep(sleepTime) + String data = dataSupplier.get() + if (data == "Bang") { + throw new RuntimeException(data) + } + new DeferredFragmentCall.FieldWithExecutionResult(data.toLowerCase(), new ExecutionResultImpl(data, [])) + }) + } + } + + return new DeferredFragmentCall(null, ResultPath.parse(path), [callSupplier], new AlternativeCallContext()) + } + + private static DeferredFragmentCall offThreadCallWithinCall(IncrementalCallState incrementalCallState, String dataParent, String dataChild, int sleepTime, String path) { + def callSupplier = new Supplier>() { + @Override + CompletableFuture get() { + CompletableFuture.supplyAsync({ + Thread.sleep(sleepTime) + incrementalCallState.enqueue(offThread(dataChild, sleepTime, path)) + new DeferredFragmentCall.FieldWithExecutionResult(dataParent.toLowerCase(), new ExecutionResultImpl(dataParent, [])) + }) + } + } + return new DeferredFragmentCall(null, ResultPath.parse("/field/path"), [callSupplier], new AlternativeCallContext()) + } + + private static void assertResultsSizeAndHasNextRule(int expectedSize, List results) { + assert results.size() == expectedSize + + for (def i = 0; i < results.size(); i++) { + def isLastResult = i == results.size() - 1 + def hasNext = results[i].hasNext() + + assert (hasNext && !isLastResult) + || (!hasNext && isLastResult) + } + } + + private static List startAndWaitCalls(IncrementalCallState incrementalCallState) { + def publisher = incrementalCallState.startDeferredCalls() + return subscribeAndWaitCalls(publisher) + } + + private static List subscribeAndWaitCalls(Publisher publisher) { + def subscriber = new CapturingSubscriber() + publisher.subscribe(subscriber) + Awaitility.await().untilTrue(subscriber.isDone()) + if (subscriber.throwable != null) { + throw new RuntimeException(subscriber.throwable) + } + return subscriber.getEvents() + } +} diff --git a/src/test/groovy/graphql/execution/instrumentation/AllNullTestingInstrumentation.groovy b/src/test/groovy/graphql/execution/instrumentation/AllNullTestingInstrumentation.groovy new file mode 100644 index 0000000000..d702335c4d --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/AllNullTestingInstrumentation.groovy @@ -0,0 +1,155 @@ +package graphql.execution.instrumentation + +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.execution.ExecutionContext +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters +import graphql.language.Document +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.GraphQLSchema +import graphql.validation.ValidationError + +import java.util.concurrent.CompletableFuture + +class AllNullTestingInstrumentation implements Instrumentation { + + InstrumentationState instrumentationState = new InstrumentationState() {} + List executionList = [] + List dfInvocations = [] + List dfClasses = [] + Map capturedData = [:] + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.completedFuture(instrumentationState) + } + + @Override + InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:execution" + return null + } + + @Override + InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:parse" + return null + } + + @Override + InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:validation" + return null + } + + @Override + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:execution-strategy" + return null + } + + @Override + ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:execute-object" + return null + } + + @Override + InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:execute-operation" + return null + } + + @Override + InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:subscribed-field-event-$parameters.field.name" + return null + } + + @Override + InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:field-$parameters.field.name" + return null + } + + @Override + InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:fetch-$parameters.field.name" + return null + } + + @Override + InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:complete-$parameters.field.name" + return null + } + + @Override + InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + assert state == instrumentationState + executionList << "start:complete-list-$parameters.field.name" + return null + } + + @Override + ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return executionInput + } + + @Override + DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return documentAndVariables + } + + @Override + GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return schema + } + + @Override + ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return executionContext + } + + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assert state == instrumentationState + dfClasses.add(dataFetcher.getClass()) + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + dfInvocations.add(environment) + dataFetcher.get(environment) + } + } + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return CompletableFuture.completedFuture(executionResult) + } +} + diff --git a/src/test/groovy/graphql/execution/instrumentation/ChainedInstrumentationStateTest.groovy b/src/test/groovy/graphql/execution/instrumentation/ChainedInstrumentationStateTest.groovy index ddfd62f160..a0c67d6848 100644 --- a/src/test/groovy/graphql/execution/instrumentation/ChainedInstrumentationStateTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/ChainedInstrumentationStateTest.groovy @@ -1,17 +1,15 @@ package graphql.execution.instrumentation +import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL import graphql.StarWarsSchema import graphql.execution.AsyncExecutionStrategy -import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters -import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters -import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters -import graphql.language.Document import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment import graphql.validation.ValidationError import spock.lang.Specification @@ -19,89 +17,102 @@ import java.util.concurrent.CompletableFuture class ChainedInstrumentationStateTest extends Specification { - class NamedInstrumentationState implements InstrumentationState { - String name - } - // each implementation gives out a state object with its name - // and then asserts it gets it back with that name - class NamedInstrumentation extends TestingInstrumentation { - String name + def "basic chaining and state management"() { - NamedInstrumentation(String name) { - instrumentationState = new NamedInstrumentationState(name: name) - this.name = name - } + def a = new NamedInstrumentation("A") + def b = new NamedInstrumentation("B") + def c = new NamedInstrumentation("C") + def nullState = new SimplePerformantInstrumentation() - @Override - InstrumentationState createState() { - return instrumentationState - } + def chainedInstrumentation = new ChainedInstrumentation([ + a, + b, + nullState, + c, + ]) - def assertState(InstrumentationState instrumentationState) { - assert instrumentationState instanceof NamedInstrumentationState - assert (instrumentationState as NamedInstrumentationState).name == this.name + def query = """ + query HeroNameAndFriendsQuery { + hero { + id + } } + """ - @Override - InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginExecution(parameters) - } + def expected = [ + "start:execution", - @Override - InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginParse(parameters) - } + "start:parse", + "end:parse", - @Override - InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginValidation(parameters) - } + "start:validation", + "end:validation", - @Override - ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginExecutionStrategy(parameters) - } + "start:execute-operation", - @Override - InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginExecuteOperation(parameters) - } + "start:execution-strategy", - @Override - InstrumentationContext beginField(InstrumentationFieldParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginField(parameters) - } + "start:field-hero", + "start:fetch-hero", + "end:fetch-hero", + "start:complete-hero", - @Override - InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.beginFieldFetch(parameters) - } + "start:execute-object", - @Override - DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.instrumentDataFetcher(dataFetcher, parameters) - } + "start:field-id", + "start:fetch-id", + "end:fetch-id", + "start:complete-id", + "end:complete-id", + "end:field-id", + + "end:execute-object", + + "end:complete-hero", + "end:field-hero", + + "end:execution-strategy", + + "end:execute-operation", + + "end:execution", + ] + + + when: + def strategy = new AsyncExecutionStrategy() + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .queryExecutionStrategy(strategy) + .instrumentation(chainedInstrumentation) + .build() + + graphQL.execute(query) + + then: + + chainedInstrumentation.getInstrumentations().size() == 4 + + a.executionList == expected + b.executionList == expected + c.executionList == expected + + assertCalls(a) + assertCalls(b) + assertCalls(c) - @Override - CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { - assertState(parameters.getInstrumentationState()) - return super.instrumentExecutionResult(executionResult, parameters) - } } - def "basic chaining and state management"() { + def "basic chaining and state management when null returned"() { def a = new NamedInstrumentation("A") - def b = new NamedInstrumentation("B") + def b = new NamedInstrumentation("B") { + @Override + InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + return null // just this method + } + } def c = new NamedInstrumentation("C") def chainedInstrumentation = new ChainedInstrumentation([ a, @@ -135,7 +146,7 @@ class ChainedInstrumentationStateTest extends Specification { "end:fetch-hero", "start:complete-hero", - "start:execution-strategy", + "start:execute-object", "start:field-id", "start:fetch-id", @@ -144,8 +155,48 @@ class ChainedInstrumentationStateTest extends Specification { "end:complete-id", "end:field-id", + "end:execute-object", + + "end:complete-hero", + "end:field-hero", + "end:execution-strategy", + "end:execute-operation", + + "end:execution", + ] + + def expectedWhenReturningNull = [ + "start:execution", + + "start:parse", + "end:parse", + + // overridden above + //"start:validation", + //"end:validation", + + "start:execute-operation", + + "start:execution-strategy", + + "start:field-hero", + "start:fetch-hero", + "end:fetch-hero", + "start:complete-hero", + + "start:execute-object", + + "start:field-id", + "start:fetch-id", + "end:fetch-id", + "start:complete-id", + "end:complete-id", + "end:field-id", + + "end:execute-object", + "end:complete-hero", "end:field-hero", @@ -170,9 +221,80 @@ class ChainedInstrumentationStateTest extends Specification { then: a.executionList == expected - b.executionList == expected + b.executionList == expectedWhenReturningNull c.executionList == expected + assertCalls(a) + assertCalls(b) + assertCalls(c) + } + + def "basic chaining and state management when exception raised in data fetching"() { + + def a = new NamedInstrumentation("A") + def b = new NamedInstrumentation("B") + def c = new NamedInstrumentation("C") + def nullState = new SimplePerformantInstrumentation() + + def chainedInstrumentation = new ChainedInstrumentation([ + a, + b, + nullState, + c, + ]) + + def query = """ + query HeroNameAndFriendsQuery { + hero { + id + } + } + """ + + def expected = "onExceptionHandled:fetch-id" + + + when: + def strategy = new AsyncExecutionStrategy() + def schema = StarWarsSchema.starWarsSchema + def graphQL = GraphQL + .newGraphQL(schema.transform { schemaBuilder -> + // throw exception when fetching the hero id + def exceptionDataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + throw new RuntimeException("Data fetcher exception") + } + } + schemaBuilder.codeRegistry(schema.codeRegistry.transform { + it.dataFetcher( + schema.getObjectType("Human"), + schema.getObjectType("Human").getFieldDefinition("id"), + exceptionDataFetcher + ) + it.dataFetcher( + schema.getObjectType("Droid"), + schema.getObjectType("Droid").getFieldDefinition("id"), + exceptionDataFetcher + ) + return it + } + ) + }) + .queryExecutionStrategy(strategy) + .instrumentation(chainedInstrumentation) + .build() + + graphQL.execute(query) + + then: + + chainedInstrumentation.getInstrumentations().size() == 4 + + a.executionList.any { it == expected } + b.executionList.any { it == expected } + c.executionList.any { it == expected } + assertCalls(a) assertCalls(b) assertCalls(c) @@ -205,6 +327,101 @@ class ChainedInstrumentationStateTest extends Specification { } + def "single chain"() { + def a = new NamedInstrumentation("A") + def chainedInstrumentation = new ChainedInstrumentation([a]) + + def query = """ + query HeroNameAndFriendsQuery { + hero { + id + } + } + """ + + when: + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(chainedInstrumentation) + .build() + + graphQL.execute(query) + + then: + noExceptionThrown() + + assertCalls(a) + + } + + + class StringInstrumentationState implements InstrumentationState { + StringInstrumentationState(String value) { + this.value = value + } + + String value + } + + def "can have an multiple async createState() calls in play"() { + + + given: + + def query = '''query Q($var: String!) { + human(id: $var) { + id + name + } + } + ''' + + + def instrumentation1 = new SimplePerformantInstrumentation() { + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.supplyAsync { + return new StringInstrumentationState("I1") + } as CompletableFuture + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return CompletableFuture.completedFuture( + executionResult.transform { it.addExtension("i1", ((StringInstrumentationState) state).value) } + ) + } + } + def instrumentation2 = new SimplePerformantInstrumentation() { + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.supplyAsync { + return new StringInstrumentationState("I2") + } as CompletableFuture + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return CompletableFuture.completedFuture( + executionResult.transform { it.addExtension("i2", ((StringInstrumentationState) state).value) } + ) + } + + } + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(new ChainedInstrumentation([instrumentation1, instrumentation2])) + .build() + + when: + def variables = [var: "1001"] + def er = graphQL.execute(ExecutionInput.newExecutionInput().query(query).variables(variables)) // Luke + + then: + er.extensions == [i1: "I1", i2: "I2"] + } + private void assertCalls(NamedInstrumentation instrumentation) { assert instrumentation.dfInvocations[0].getFieldDefinition().name == 'hero' assert instrumentation.dfInvocations[0].getExecutionStepInfo().getPath().toList() == ['hero'] diff --git a/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy b/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy new file mode 100644 index 0000000000..9aebce3640 --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy @@ -0,0 +1,133 @@ +package graphql.execution.instrumentation + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import org.dataloader.BatchLoader +import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderOptions +import org.dataloader.DataLoaderRegistry +import org.dataloader.ValueCache +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture + +class DataLoaderCacheCanBeAsyncTest extends Specification { + + def sdl = """ + type Query { + user(id : ID) : User + } + + type User { + id : ID + name : String + } + """ + + static class CustomValueCache implements ValueCache { + Map store = [:] + + int getRandomNumber(int min, int max) { + Random random = new Random() + return random.nextInt(max - min) + min + } + + @Override + CompletableFuture get(String key) { + return CompletableFuture.supplyAsync({ + Thread.sleep(getRandomNumber(100, 500)) + if (store.containsKey(key)) { + return store.get(key) + } + throw new RuntimeException("Key Missing") + }) + } + + @Override + CompletableFuture set(String key, Object value) { + return CompletableFuture.supplyAsync({ + Thread.sleep(getRandomNumber(100, 500)) + store.put(key, value) + return value + }) + } + + @Override + CompletableFuture delete(String key) { + return CompletableFuture.completedFuture(null) + } + + @Override + CompletableFuture clear() { + return CompletableFuture.completedFuture(null) + } + } + + DataLoaderRegistry registry + GraphQL graphQL + + void setup() { + + BatchLoader userBatchLoader = { List keys -> + return CompletableFuture.supplyAsync({ -> + Thread.sleep(100) + def users = [] + for (String k : keys) { + users.add([id: k, name: k + "Name"]) + } + users + }) + } + + + def valueCache = new CustomValueCache() + valueCache.store.put("a", [id: "cachedA", name: "cachedAName"]) + + DataLoaderOptions options = DataLoaderOptions.newOptions().setValueCache(valueCache).setCachingEnabled(true).build() + DataLoader userDataLoader = DataLoaderFactory.newDataLoader(userBatchLoader, options) + + registry = DataLoaderRegistry.newRegistry() + .register("users", userDataLoader) + .build() + + DataFetcher userDF = { DataFetchingEnvironment env -> + def id = env.getArgument("id") + def loader = env.getDataLoader("users") + return loader.load(id) + } + + def schema = TestUtil.schema(sdl, [Query: [user: userDF]]) + graphQL = GraphQL.newGraphQL(schema).build() + + } + + def "can execute data loader calls"() { + def query = ''' + query { + a: user(id : "a") { + id name + } + b: user(id : "b") { + id name + } + c: user(id : "c") { + id name + } + } + ''' + def executionInput = ExecutionInput.newExecutionInput(query).dataLoaderRegistry(registry).build() + + when: + def er = graphQL.execute(executionInput) + then: + er.errors.isEmpty() + er.data == [a: [id: "cachedA", name: "cachedAName"], + b: [id: "b", name: "bName"], + c: [id: "c", name: "cName"], + ] + } +} diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index 8c724724db..ca52f8cf84 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -1,19 +1,26 @@ package graphql.execution.instrumentation +import graphql.ErrorType import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL +import graphql.GraphqlErrorBuilder +import graphql.GraphqlErrorBuilderTest import graphql.StarWarsSchema +import graphql.TestUtil import graphql.execution.AsyncExecutionStrategy -import graphql.execution.batched.BatchedExecutionStrategy +import graphql.execution.DataFetcherExceptionHandlerResult +import graphql.execution.DataFetcherResult +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters +import graphql.incremental.IncrementalExecutionResult import graphql.language.AstPrinter import graphql.parser.Parser import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment -import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility import spock.lang.Specification @@ -21,10 +28,11 @@ import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean +import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.atomic.AtomicLong class InstrumentationTest extends Specification { - def 'Instrumentation of simple serial execution'() { given: @@ -43,45 +51,46 @@ class InstrumentationTest extends Specification { def expected = [ "start:execution", - + "onDispatched:execution", "start:parse", + "onDispatched:parse", "end:parse", - "start:validation", + "onDispatched:validation", "end:validation", - "start:execute-operation", - "start:execution-strategy", - "start:field-hero", "start:fetch-hero", + "onDispatched:fetch-hero", "end:fetch-hero", - "start:complete-hero", - - "start:execution-strategy", - + "start:execute-object", "start:field-id", "start:fetch-id", + "onDispatched:fetch-id", "end:fetch-id", "start:complete-id", + "onDispatched:complete-id", "end:complete-id", + "onDispatched:field-id", "end:field-id", - - "end:execution-strategy", - + "onDispatched:execute-object", + "end:execute-object", + "onDispatched:complete-hero", "end:complete-hero", + "onDispatched:field-hero", "end:field-hero", - + "onDispatched:execution-strategy", "end:execution-strategy", - + "onDispatched:execute-operation", "end:execute-operation", "end:execution", ] when: - def instrumentation = new TestingInstrumentation() + def instrumentation = new LegacyTestingInstrumentation() + instrumentation.useOnDispatch = true def graphQL = GraphQL .newGraphQL(StarWarsSchema.starWarsSchema) @@ -97,7 +106,7 @@ class InstrumentationTest extends Specification { instrumentation.dfClasses.size() == 2 instrumentation.dfClasses[0] == StaticDataFetcher.class - instrumentation.dfClasses[1] == PropertyDataFetcher.class + instrumentation.dfClasses[1] == SingletonPropertyDataFetcher.class instrumentation.dfInvocations.size() == 2 @@ -112,7 +121,8 @@ class InstrumentationTest extends Specification { instrumentation.dfInvocations[1].getExecutionStepInfo().isNonNullType() } - def '#630 - Instrumentation of batched execution strategy is called'() { + def "exceptions at field fetch will instrument exceptions correctly"() { + given: def query = """ @@ -123,47 +133,110 @@ class InstrumentationTest extends Specification { } """ - def expected = [ - "start:execution", - "start:parse", - "end:parse", - "start:validation", - "end:validation", - "start:execute-operation", - "start:execution-strategy", + def instrumentation = new LegacyTestingInstrumentation() { - "start:field-hero", - "start:fetch-hero", - "end:fetch-hero", - "end:field-hero", + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + throw new RuntimeException("DF BANG!") + } + } + } + } - "start:field-id", - "start:fetch-id", - "end:fetch-id", - "end:field-id", + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(instrumentation) + .build() - "end:execution-strategy", - "end:execute-operation", - "end:execution", - ] when: + graphQL.execute(query) + + then: + instrumentation.throwableList.size() == 1 + instrumentation.throwableList[0].getMessage() == "DF BANG!" + } + + def "field fetch will instrument exceptions correctly - includes exception handling with onExceptionHandled"() { + + given: + + def query = """ + { + hero { + id + } + } + """ + + def instrumentation = new LegacyTestingInstrumentation() { + def onHandledCalled = false + def onCompletedCalled = false + def onDispatchedCalled = false + + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + throw new RuntimeException("DF BANG!") + } + } + } + + @Override + FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new FieldFetchingInstrumentationContext() { + @Override + void onDispatched() { + onDispatchedCalled = true + } + + @Override + void onCompleted(Object result, Throwable t) { + onCompletedCalled = true + } - def instrumentation = new TestingInstrumentation() + @Override + void onExceptionHandled(DataFetcherResult dataFetcherResult) { + onHandledCalled = true + } + } + } + } def graphQL = GraphQL .newGraphQL(StarWarsSchema.starWarsSchema) - .queryExecutionStrategy(new BatchedExecutionStrategy()) + .defaultDataFetcherExceptionHandler { it -> + // catch all exceptions and transform to graphql error with a prefixed message + return CompletableFuture.completedFuture( + DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder.newError() + .errorType(ErrorType.DataFetchingException) + .message("Handled " + it.exception.message) + .path(it.path) + .build()) + .build()) + } .instrumentation(instrumentation) .build() - graphQL.execute(query) + when: + def resp = graphQL.execute(query) - then: + then: "exception handler turned the exception into a graphql error and message prefixed with Handled" + resp.errors.size() == 1 + resp.errors[0].message == "Handled DF BANG!" - instrumentation.executionList == expected + and: "all instrumentation methods were called" + instrumentation.onDispatchedCalled == true + instrumentation.onCompletedCalled == true + instrumentation.onHandledCalled == true } - def "exceptions at field fetch will instrument exceptions correctly"() { + + def "field fetch verify order and call of all methods"() { given: @@ -175,29 +248,74 @@ class InstrumentationTest extends Specification { } """ - def instrumentation = new TestingInstrumentation() { + def metric = [] + def instrumentation = new SimplePerformantInstrumentation() { + def timeElapsed = new AtomicInteger() + @Override - DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return new DataFetcher() { @Override Object get(DataFetchingEnvironment environment) { + // simulate latency + timeElapsed.addAndGet(50) throw new RuntimeException("DF BANG!") } } } + + @Override + FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return new FieldFetchingInstrumentationContext() { + def start = 0 + def duration = 0 + def hasError = false + + + @Override + void onDispatched() { + start = 1 + } + + @Override + void onCompleted(Object result, Throwable t) { + duration = timeElapsed.get() - start + metric = [duration, hasError] + } + + @Override + void onExceptionHandled(DataFetcherResult dataFetcherResult) { + hasError = dataFetcherResult.errors != null && !dataFetcherResult.errors.isEmpty() + && dataFetcherResult.errors.any { it.message.contains("Handled") } + } + } + } } def graphQL = GraphQL .newGraphQL(StarWarsSchema.starWarsSchema) + .defaultDataFetcherExceptionHandler { it -> + // catch all exceptions and transform to graphql error with a prefixed message + return CompletableFuture.completedFuture( + DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder.newError() + .errorType(ErrorType.DataFetchingException) + .message("Handled " + it.exception.message) + .path(it.path) + .build()) + .build()) + } .instrumentation(instrumentation) .build() when: - graphQL.execute(query) + def resp = graphQL.execute(query) - then: - instrumentation.throwableList.size() == 1 - instrumentation.throwableList[0].getMessage() == "DF BANG!" + then: "exception handler turned the exception into a graphql error and prefixed its message with 'Handled'" + resp.errors.size() == 1 + resp.errors[0].message == "Handled DF BANG!" + + and: "metric was captured i.e all instrumentation methods were called in the right order" + metric == [49, true] } /** @@ -209,18 +327,18 @@ class InstrumentationTest extends Specification { * java-dataloader works. That is calls inside DataFetchers are "batched" * until a "dispatch" signal is made. */ - class WaitingInstrumentation extends SimpleInstrumentation { + class WaitingInstrumentation extends SimplePerformantInstrumentation { final AtomicBoolean goSignal = new AtomicBoolean() @Override - ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { System.out.println(String.format("t%s setting go signal off", Thread.currentThread().getId())) goSignal.set(false) return new ExecutionStrategyInstrumentationContext() { @Override - void onDispatched(CompletableFuture result) { + void onDispatched() { System.out.println(String.format("t%s setting go signal on", Thread.currentThread().getId())) goSignal.set(true) } @@ -232,7 +350,7 @@ class InstrumentationTest extends Specification { } @Override - DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { System.out.println(String.format("t%s instrument DF for %s", Thread.currentThread().getId(), parameters.environment.getExecutionStepInfo().getPath())) return new DataFetcher() { @@ -247,7 +365,6 @@ class InstrumentationTest extends Specification { return value }) } - } } } @@ -302,17 +419,16 @@ class InstrumentationTest extends Specification { } ''' - def instrumentation = new TestingInstrumentation() { + def instrumentation = new ModernTestingInstrumentation() { @Override - DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters) { + DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { this.capturedData["originalDoc"] = AstPrinter.printAst(documentAndVariables.getDocument()) this.capturedData["originalVariables"] = documentAndVariables.getVariables() def newDoc = new Parser().parseDocument(newQuery) def newVars = [var: "1001"] documentAndVariables.transform({ builder -> builder.document(newDoc).variables(newVars) }) } - } def graphQL = GraphQL @@ -325,8 +441,364 @@ class InstrumentationTest extends Specification { def er = graphQL.execute(ExecutionInput.newExecutionInput().query(query).variables(variables)) // Luke then: - er.data == [human: [id : "1001", name: 'Darth Vader']] + er.data == [human: [id: "1001", name: 'Darth Vader']] instrumentation.capturedData["originalDoc"] == query instrumentation.capturedData["originalVariables"] == variables } + + def "an instrumentation can return null and graphql calling code can handle it when inside a chain"() { + given: + + def query = """ + { + hero { + id + } + } + """ + + // + // for testing purposes we must use AsyncExecutionStrategy under the covers to get such + // serial behaviour. The Instrumentation of a parallel strategy would be much different + // and certainly harder to test + + def expected = [ + "start:execution", + // because a null context was returned, there is no onDispatched and end + //"onDispatched:execution", + "start:parse", + "onDispatched:parse", + "end:parse", + "start:validation", + "onDispatched:validation", + "end:validation", + "start:execute-operation", + "start:execution-strategy", + "start:field-hero", + "start:fetch-hero", + "onDispatched:fetch-hero", + "end:fetch-hero", + "start:complete-hero", + "start:execute-object", + "start:field-id", + "start:fetch-id", + "onDispatched:fetch-id", + "end:fetch-id", + "start:complete-id", + "onDispatched:complete-id", + "end:complete-id", + "onDispatched:field-id", + "end:field-id", + "onDispatched:execute-object", + "end:execute-object", + "onDispatched:complete-hero", + "end:complete-hero", + "onDispatched:field-hero", + "end:field-hero", + "onDispatched:execution-strategy", + "end:execution-strategy", + "onDispatched:execute-operation", + "end:execute-operation", + //"end:execution", + ] + when: + + def instrumentation = new ModernTestingInstrumentation() { + @Override + InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + this.executionList.add("start:execution") + return null + } + } + instrumentation.useOnDispatch = true + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .queryExecutionStrategy(new AsyncExecutionStrategy()) + .instrumentation(instrumentation) + .build() + + graphQL.execute(query) + + then: + instrumentation.executionList == expected + } + + def "an instrumentation can return null and graphql calling code can handle it when not inside a chain"() { + + given: + + def query = '''query Q($var: String!) { + human(id: $var) { + id + name + } + } + ''' + + def instrumentation = new AllNullTestingInstrumentation() + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(instrumentation) + .build() + + when: + def variables = [var: "1001"] + def er = graphQL.execute(ExecutionInput.newExecutionInput().query(query).variables(variables)) // Luke + + then: + er.data == [human: [id: "1001", name: 'Darth Vader']] + + def expected = [ + "start:execution", + "start:parse", + "start:validation", + "start:execute-operation", + "start:execution-strategy", + "start:field-human", + "start:fetch-human", + "start:complete-human", + "start:execute-object", + "start:field-id", + "start:fetch-id", + "start:complete-id", + "start:field-name", + "start:fetch-name", + "start:complete-name", + ] + + instrumentation.executionList == expected + } + + class StringInstrumentationState implements InstrumentationState { + StringInstrumentationState(String value) { + this.value = value + } + + String value + } + + def "can have an single async createState() in play"() { + + + given: + + def query = '''query Q($var: String!) { + human(id: $var) { + id + name + } + } + ''' + + + def instrumentation1 = new SimplePerformantInstrumentation() { + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.supplyAsync { + return new StringInstrumentationState("I1") + } as CompletableFuture + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return CompletableFuture.completedFuture( + executionResult.transform { it.addExtension("i1", ((StringInstrumentationState) state).value) } + ) + } + } + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(instrumentation1) + .build() + + when: + def variables = [var: "1001"] + def er = graphQL.execute(ExecutionInput.newExecutionInput().query(query).variables(variables)) // Luke + + then: + er.extensions == [i1: "I1"] + } + + def "can have an backwards compatibility createState() in play"() { + + + given: + + def query = '''query Q($var: String!) { + human(id: $var) { + id + name + } + } + ''' + + + def instrumentation1 = new SimplePerformantInstrumentation() { + + @Override + InstrumentationState createState(InstrumentationCreateStateParameters parameters) { + return new StringInstrumentationState("I1") + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return CompletableFuture.completedFuture( + executionResult.transform { it.addExtension("i1", ((StringInstrumentationState) state).value) } + ) + } + } + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .instrumentation(instrumentation1) + .build() + + when: + def variables = [var: "1001"] + def er = graphQL.execute(ExecutionInput.newExecutionInput().query(query).variables(variables)) // Luke + + then: + er.extensions == [i1: "I1"] + } + + def "can instrumented deferred fields"() { + + given: + + def query = """ + { + hero { + id + ... @defer(label: "name") { + name + } + } + } + """ + + + when: + + def instrumentation = new ModernTestingInstrumentation() + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .queryExecutionStrategy(new AsyncExecutionStrategy()) + .instrumentation(instrumentation) + .build() + + def ei = ExecutionInput.newExecutionInput(query).graphQLContext { it -> + GraphQL.unusualConfiguration(it).incrementalSupport().enableIncrementalSupport(true) + }.build() + + IncrementalExecutionResult incrementalER = graphQL.execute(ei) as IncrementalExecutionResult + // + // cause the defer Publish to be finished + def results = TestUtil.getIncrementalResults(incrementalER) + + + then: + + instrumentation.executionList == ["start:execution", + "start:parse", + "end:parse", + "start:validation", + "end:validation", + "start:execute-operation", + "start:execution-strategy", + "start:field-hero", + "start:fetch-hero", + "end:fetch-hero", + "start:complete-hero", + "start:execute-object", + "start:field-id", + "start:fetch-id", + "end:fetch-id", + "start:complete-id", + "end:complete-id", + "end:field-id", + + "end:execute-object", + "end:complete-hero", + "end:field-hero", + "end:execution-strategy", + "end:execute-operation", + "start:reactive-results-defer", + "end:execution", + // + // the deferred field resolving now happens after the operation has come back + "start:deferred-field-name", + "start:field-name", + "start:fetch-name", + "end:fetch-name", + "start:complete-name", + "end:complete-name", + "end:field-name", + "end:deferred-field-name", + + "end:reactive-results-defer", + ] + } + + def "can instrument defer reactive ending"() { + + given: + + def query = """ + { + hero { + id + ... @defer(label: "name") { + name + } + } + } + """ + + + when: + + def instrumentation = new ModernTestingInstrumentation() + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .queryExecutionStrategy(new AsyncExecutionStrategy()) + .instrumentation(instrumentation) + .build() + + def ei = ExecutionInput.newExecutionInput(query).graphQLContext { it -> + GraphQL.unusualConfiguration(it).incrementalSupport().enableIncrementalSupport(true) + }.build() + + IncrementalExecutionResult incrementalER = graphQL.execute(ei) as IncrementalExecutionResult + // + // cause the defer Publish to be finished + def results = TestUtil.getIncrementalResults(incrementalER) + then: + + TestUtil.listContainsInOrder(instrumentation.executionList, [ + "start:execution", + "start:parse", + "end:parse", + "start:validation", + "end:validation", + "start:execute-operation", + ], [ + // then it ends initial operation + "end:execution-strategy", + "end:execute-operation", + "start:reactive-results-defer", + "end:execution", + ], [ + // followed by + "end:reactive-results-defer" + ]) + + // last of all it finishes + TestUtil.last(instrumentation.executionList) == "end:reactive-results-defer" + } + } diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingInstrumentation.groovy b/src/test/groovy/graphql/execution/instrumentation/LegacyTestingInstrumentation.groovy similarity index 51% rename from src/test/groovy/graphql/execution/instrumentation/TestingInstrumentation.groovy rename to src/test/groovy/graphql/execution/instrumentation/LegacyTestingInstrumentation.groovy index 374d1da284..eb43263e72 100644 --- a/src/test/groovy/graphql/execution/instrumentation/TestingInstrumentation.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/LegacyTestingInstrumentation.groovy @@ -3,7 +3,7 @@ package graphql.execution.instrumentation import graphql.ExecutionInput import graphql.ExecutionResult import graphql.execution.ExecutionContext -import graphql.execution.instrumentation.parameters.InstrumentationDeferredFieldParameters +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters @@ -19,101 +19,111 @@ import graphql.validation.ValidationError import java.util.concurrent.CompletableFuture -class TestingInstrumentation implements Instrumentation { +/** + * This class overrides the old deprecated methods and shows that they still can be called + */ +class LegacyTestingInstrumentation implements Instrumentation { def instrumentationState = new InstrumentationState() {} - def executionList = [] + List executionList = [] List throwableList = [] List dfInvocations = [] List dfClasses = [] def capturedData = [:] + def useOnDispatch = false + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.completedFuture(instrumentationState) + } + @Override - InstrumentationState createState() { - return instrumentationState + InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + new TestingInstrumentContext("execution", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - new TestingInstrumentContext("execution", executionList, throwableList) + InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("parse", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("parse", executionList, throwableList) + InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("validation", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("validation", executionList, throwableList) + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingExecutionStrategyInstrumentationContext("execution-strategy", executionList, throwableList, useOnDispatch) } @Override - ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingExecutionStrategyInstrumentationContext("execution-strategy", executionList, throwableList) + ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + return new TestingExecuteObjectInstrumentationContext("execute-object", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("execute-operation", executionList, throwableList) + InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("execute-operation", executionList, throwableList, useOnDispatch) } @Override - DeferredFieldInstrumentationContext beginDeferredField(InstrumentationDeferredFieldParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("deferred-field-$parameters.field.name", executionList, throwableList) + InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("subscribed-field-event-$parameters.field.name", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext beginField(InstrumentationFieldParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("field-$parameters.field.name", executionList, throwableList) + InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("field-$parameters.field.name", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("fetch-$parameters.field.name", executionList, throwableList) + InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("fetch-$parameters.field.name", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext> beginFieldComplete(InstrumentationFieldCompleteParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("complete-$parameters.field.name", executionList, throwableList) + InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("complete-$parameters.field.name", executionList, throwableList, useOnDispatch) } @Override - InstrumentationContext> beginFieldListComplete(InstrumentationFieldCompleteParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState - return new TestingInstrumentContext("complete-list-$parameters.field.name", executionList, throwableList) + InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("complete-list-$parameters.field.name", executionList, throwableList, useOnDispatch) } @Override - GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState + GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState return schema } @Override - ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState + ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState return executionInput } @Override - ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState + ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState return executionContext } @Override - DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assert state == instrumentationState dfClasses.add(dataFetcher.getClass()) return new DataFetcher() { @Override @@ -125,8 +135,8 @@ class TestingInstrumentation implements Instrumentation { } @Override - CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { - assert parameters.getInstrumentationState() == instrumentationState + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState return CompletableFuture.completedFuture(executionResult) } } diff --git a/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy b/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy new file mode 100644 index 0000000000..1053ffd0d7 --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy @@ -0,0 +1,163 @@ +package graphql.execution.instrumentation + +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.execution.ExecutionContext +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters +import graphql.execution.instrumentation.parameters.InstrumentationReactiveResultsParameters +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters +import graphql.language.Document +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.GraphQLSchema +import graphql.validation.ValidationError + +import java.util.concurrent.CompletableFuture + +/** + * This class overrides the new methods that take state directly as a parameter + */ +class ModernTestingInstrumentation implements Instrumentation { + + InstrumentationState instrumentationState = new InstrumentationState() {} + List executionList = [] + List throwableList = [] + List dfInvocations = [] + List dfClasses = [] + Map capturedData = [:] + boolean useOnDispatch = false + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.completedFuture(instrumentationState) + } + + @Override + InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + new TestingInstrumentContext("execution", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("parse", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("validation", executionList, throwableList, useOnDispatch) + } + + @Override + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingExecutionStrategyInstrumentationContext("execution-strategy", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginReactiveResults(InstrumentationReactiveResultsParameters parameters, InstrumentationState state) { + assert state == instrumentationState + def resultType = parameters.resultType.toString().toLowerCase() + return new TestingInstrumentContext("reactive-results-$resultType", executionList, throwableList, useOnDispatch) + } + + @Override + ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingExecuteObjectInstrumentationContext("execute-object", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("execute-operation", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("subscribed-field-event-$parameters.field.name", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("field-$parameters.field.name", executionList, throwableList, useOnDispatch) + } + + @Override + FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingFieldFetchingInstrumentationContext("fetch-$parameters.field.name", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("complete-$parameters.field.name", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginFieldListCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("complete-list-$parameters.field.name", executionList, throwableList, useOnDispatch) + } + + @Override + InstrumentationContext beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return new TestingInstrumentContext("deferred-field-$parameters.field.name", executionList, throwableList, useOnDispatch) + } + + @Override + ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return executionInput + } + + @Override + DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return documentAndVariables + } + + @Override + GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return schema + } + + @Override + ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return executionContext + } + + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assert state == instrumentationState + dfClasses.add(dataFetcher.getClass()) + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + dfInvocations.add(environment) + dataFetcher.get(environment) + } + } + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assert state == instrumentationState + return CompletableFuture.completedFuture(executionResult) + } +} + diff --git a/src/test/groovy/graphql/execution/instrumentation/NamedInstrumentation.groovy b/src/test/groovy/graphql/execution/instrumentation/NamedInstrumentation.groovy new file mode 100644 index 0000000000..5e17e040ad --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/NamedInstrumentation.groovy @@ -0,0 +1,96 @@ +package graphql.execution.instrumentation + +import graphql.ExecutionResult +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters +import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters +import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters +import graphql.language.Document +import graphql.schema.DataFetcher +import graphql.validation.ValidationError + +import java.util.concurrent.CompletableFuture + +// each implementation gives out a state object with its name +// and then asserts it gets it back with that name + +class NamedInstrumentation extends ModernTestingInstrumentation { + String name + + + NamedInstrumentation(String name) { + instrumentationState = new NamedInstrumentationState(name: name) + this.name = name + } + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return CompletableFuture.completedFuture(instrumentationState) + } + + def assertState(InstrumentationState instrumentationState) { + assert instrumentationState instanceof NamedInstrumentationState + assert (instrumentationState as NamedInstrumentationState).name == this.name + } + + @Override + InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginExecution(parameters, state) + } + + @Override + InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginParse(parameters, state) + } + + @Override + InstrumentationContext> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginValidation(parameters, state) + } + + @Override + ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginExecutionStrategy(parameters, state) + } + + @Override + InstrumentationContext beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginExecuteOperation(parameters, state) + } + + @Override + InstrumentationContext beginFieldExecution(InstrumentationFieldParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginFieldExecution(parameters, state) + } + + @Override + InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assertState(state) + return super.beginFieldFetch(parameters, state) + } + + @Override + DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + assertState(state) + return super.instrumentDataFetcher(dataFetcher, parameters, state) + } + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + assertState(state) + return super.instrumentExecutionResult(executionResult, parameters, state) + } +} + +class NamedInstrumentationState implements InstrumentationState { + String name +} diff --git a/src/test/groovy/graphql/execution/instrumentation/NoContextChainedInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/NoContextChainedInstrumentationTest.groovy new file mode 100644 index 0000000000..981f756633 --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/NoContextChainedInstrumentationTest.groovy @@ -0,0 +1,87 @@ +package graphql.execution.instrumentation + +import graphql.GraphQL +import graphql.StarWarsSchema +import graphql.execution.AsyncExecutionStrategy +import spock.lang.Specification + +class NoContextChainedInstrumentationTest extends Specification { + + def "basic chaining and state management with no contexts"() { + + def a = new NamedInstrumentation("A") + def b = new NamedInstrumentation("B") + def c = new NamedInstrumentation("C") + def noContextChainedInstrumentation = new NoContextChainedInstrumentation([ + a, + b, + c, + ]) + + def query = """ + query HeroNameAndFriendsQuery { + hero { + id + } + } + """ + + // no end: statements becaue the context is never called + def expected = [ + "start:execution", + + "start:parse", + + "start:validation", + + "start:execute-operation", + + "start:execution-strategy", + + "start:field-hero", + "start:fetch-hero", + "start:complete-hero", + + "start:execute-object", + + "start:field-id", + "start:fetch-id", + "start:complete-id", + ] + + + when: + def strategy = new AsyncExecutionStrategy() + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .queryExecutionStrategy(strategy) + .instrumentation(noContextChainedInstrumentation) + .build() + + graphQL.execute(query) + + then: + + a.executionList == expected + b.executionList == expected + c.executionList == expected + + assertCalls(a) + assertCalls(b) + assertCalls(c) + } + + + private void assertCalls(NamedInstrumentation instrumentation) { + assert instrumentation.dfInvocations[0].getFieldDefinition().name == 'hero' + assert instrumentation.dfInvocations[0].getExecutionStepInfo().getPath().toList() == ['hero'] + assert instrumentation.dfInvocations[0].getExecutionStepInfo().getUnwrappedNonNullType().name == 'Character' + assert !instrumentation.dfInvocations[0].getExecutionStepInfo().isNonNullType() + + assert instrumentation.dfInvocations[1].getFieldDefinition().name == 'id' + assert instrumentation.dfInvocations[1].getExecutionStepInfo().getPath().toList() == ['hero', 'id'] + assert instrumentation.dfInvocations[1].getExecutionStepInfo().getUnwrappedNonNullType().name == 'String' + assert instrumentation.dfInvocations[1].getExecutionStepInfo().isNonNullType() + } + +} diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingExecuteObjectInstrumentationContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingExecuteObjectInstrumentationContext.groovy new file mode 100644 index 0000000000..a5b6cfd783 --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/TestingExecuteObjectInstrumentationContext.groovy @@ -0,0 +1,9 @@ +package graphql.execution.instrumentation + +class TestingExecuteObjectInstrumentationContext extends TestingInstrumentContext> implements ExecuteObjectInstrumentationContext { + + TestingExecuteObjectInstrumentationContext(Object op, Object executionList, Object throwableList, Boolean useOnDispatch) { + super(op, executionList, throwableList, useOnDispatch) + } +} + diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingExecutionStrategyInstrumentationContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingExecutionStrategyInstrumentationContext.groovy index a5a77c36da..3f2f3efe29 100644 --- a/src/test/groovy/graphql/execution/instrumentation/TestingExecutionStrategyInstrumentationContext.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/TestingExecutionStrategyInstrumentationContext.groovy @@ -4,8 +4,8 @@ import graphql.ExecutionResult class TestingExecutionStrategyInstrumentationContext extends TestingInstrumentContext implements ExecutionStrategyInstrumentationContext { - TestingExecutionStrategyInstrumentationContext(Object op, Object executionList, Object throwableList) { - super(op, executionList, throwableList) + TestingExecutionStrategyInstrumentationContext(Object op, Object executionList, Object throwableList, Boolean useOnDispatch) { + super(op, executionList, throwableList,useOnDispatch) } } diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy new file mode 100644 index 0000000000..c9e19ba631 --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy @@ -0,0 +1,16 @@ +package graphql.execution.instrumentation + +import graphql.execution.DataFetcherResult + +class TestingFieldFetchingInstrumentationContext extends TestingInstrumentContext implements FieldFetchingInstrumentationContext { + + TestingFieldFetchingInstrumentationContext(Object op, Object executionList, Object throwableList, Boolean useOnDispatch) { + super(op, executionList, throwableList, useOnDispatch) + } + + @Override + void onExceptionHandled(DataFetcherResult dataFetcherResult) { + executionList << "onExceptionHandled:$op" + } +} + diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingInstrumentContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingInstrumentContext.groovy index f2a90372b7..3e627b3684 100644 --- a/src/test/groovy/graphql/execution/instrumentation/TestingInstrumentContext.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/TestingInstrumentContext.groovy @@ -1,17 +1,17 @@ package graphql.execution.instrumentation -import java.util.concurrent.CompletableFuture - class TestingInstrumentContext implements InstrumentationContext { def op def start = System.currentTimeMillis() def executionList = [] def throwableList = [] + def useOnDispatch - TestingInstrumentContext(op, executionList, throwableList) { + TestingInstrumentContext(op, executionList, throwableList, useOnDispatch) { this.op = op this.executionList = executionList this.throwableList = throwableList + this.useOnDispatch = useOnDispatch executionList << "start:$op" println("Started $op...") } @@ -23,7 +23,10 @@ class TestingInstrumentContext implements InstrumentationContext { } @Override - void onDispatched(CompletableFuture result) { + void onDispatched() { + if (useOnDispatch) { + this.executionList << "onDispatched:$op" + } } @Override diff --git a/src/test/groovy/graphql/execution/instrumentation/TracingInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/TracingInstrumentationTest.groovy index 5ce4b89398..db9f1932b5 100644 --- a/src/test/groovy/graphql/execution/instrumentation/TracingInstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/TracingInstrumentationTest.groovy @@ -5,7 +5,6 @@ import graphql.StarWarsSchema import graphql.TestUtil import graphql.execution.AsyncExecutionStrategy import graphql.execution.AsyncSerialExecutionStrategy -import graphql.execution.batched.BatchedExecutionStrategy import graphql.execution.instrumentation.tracing.TracingInstrumentation import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment @@ -99,7 +98,6 @@ class TracingInstrumentationTest extends Specification { testExecutionStrategy | _ new AsyncExecutionStrategy() | _ new AsyncSerialExecutionStrategy() | _ - new BatchedExecutionStrategy() | _ } def "trivial data fetchers are ignored"() { @@ -159,8 +157,6 @@ class TracingInstrumentationTest extends Specification { testExecutionStrategy | _ new AsyncExecutionStrategy() | _ new AsyncSerialExecutionStrategy() | _ - new BatchedExecutionStrategy() | _ - } def "default behavior is that trivial fields ARE recorded"() { @@ -169,4 +165,36 @@ class TracingInstrumentationTest extends Specification { then: options.isIncludeTrivialDataFetchers() } + + def 'do not trace introspection information'() { + given: + def queryWithIntrospectionField = """ + { + __typename + } + """ + + when: + def instrumentation = new TracingInstrumentation(newOptions().includeTrivialDataFetchers(false)) + + def graphQL = GraphQL + .newGraphQL(StarWarsSchema.starWarsSchema) + .queryExecutionStrategy(testExecutionStrategy) + .instrumentation(instrumentation) + .build() + + def executionResult = graphQL.execute(queryWithIntrospectionField) + def extensions = executionResult.getExtensions() + + then: + extensions != null + def tracing = extensions['tracing'] + List resolvers = tracing['execution']['resolvers'] as List + resolvers.size() == 0 + + where: + testExecutionStrategy | _ + new AsyncExecutionStrategy() | _ + new AsyncSerialExecutionStrategy() | _ + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java b/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java index 31343e3d31..08edd13248 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java @@ -1,13 +1,12 @@ package graphql.execution.instrumentation.dataloader; -import graphql.execution.batched.Batched; import graphql.execution.instrumentation.dataloader.models.Department; import graphql.execution.instrumentation.dataloader.models.Product; import graphql.execution.instrumentation.dataloader.models.Shop; import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; import org.dataloader.BatchLoader; import org.dataloader.DataLoader; +import org.dataloader.DataLoaderFactory; import java.util.ArrayList; import java.util.Arrays; @@ -37,7 +36,7 @@ public void useAsyncBatchLoading(boolean flag) { useAsyncBatchLoading.set(flag); } - // Shops + private static final Map shops = new LinkedHashMap<>(); private static final Map expensiveShops = new LinkedHashMap<>(); @@ -78,23 +77,12 @@ private static List getDepartmentsForShop(Shop shop) { } private static List> getDepartmentsForShops(List shops) { - System.out.println("getDepartmentsForShops batch: " + shops); List> departmentsResult = shops.stream().map(BatchCompareDataFetchers::getDepartmentsForShop).collect(Collectors.toList()); - System.out.println("result " + departmentsResult); return departmentsResult; } - public DataFetcher>> departmentsForShopsBatchedDataFetcher = new DataFetcher>>() { - @Override - @Batched - public List> get(DataFetchingEnvironment environment) { - List shops = environment.getSource(); - return getDepartmentsForShops(shops); - } - }; private BatchLoader> departmentsForShopsBatchLoader = ids -> maybeAsyncWithSleep(() -> { - System.out.println("ids" + ids); departmentsForShopsBatchLoaderCounter.incrementAndGet(); List shopList = new ArrayList<>(); for (String id : ids) { @@ -109,11 +97,11 @@ public List> get(DataFetchingEnvironment environment) { return completedFuture(getDepartmentsForShops(shopList)); }); - public DataLoader> departmentsForShopDataLoader = new DataLoader<>(departmentsForShopsBatchLoader); + public DataLoader> departmentsForShopDataLoader = DataLoaderFactory.newDataLoader(departmentsForShopsBatchLoader); public DataFetcher>> departmentsForShopDataLoaderDataFetcher = environment -> { Shop shop = environment.getSource(); - return departmentsForShopDataLoader.load(shop.getId()); + return (CompletableFuture) environment.getDataLoader("departments").load(shop.getId()); }; // Products @@ -136,30 +124,20 @@ private static List getProductsForDepartment(Department department) { } private static List> getProductsForDepartments(List departments) { - System.out.println("getProductsForDepartments batch: " + departments); return departments.stream().map(BatchCompareDataFetchers::getProductsForDepartment).collect(Collectors.toList()); } - public DataFetcher>> productsForDepartmentsBatchedDataFetcher = new DataFetcher>>() { - @Override - @Batched - public List> get(DataFetchingEnvironment environment) { - List departments = environment.getSource(); - return getProductsForDepartments(departments); - } - }; - private BatchLoader> productsForDepartmentsBatchLoader = ids -> maybeAsyncWithSleep(() -> { productsForDepartmentsBatchLoaderCounter.incrementAndGet(); List d = ids.stream().map(departments::get).collect(Collectors.toList()); return completedFuture(getProductsForDepartments(d)); }); - public DataLoader> productsForDepartmentDataLoader = new DataLoader<>(productsForDepartmentsBatchLoader); + public DataLoader> productsForDepartmentDataLoader = DataLoaderFactory.newDataLoader(productsForDepartmentsBatchLoader); public DataFetcher>> productsForDepartmentDataLoaderDataFetcher = environment -> { Department department = environment.getSource(); - return productsForDepartmentDataLoader.load(department.getId()); + return (CompletableFuture) environment.getDataLoader("products").load(department.getId()); }; private CompletableFuture maybeAsyncWithSleep(Supplier> supplier) { diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java index 47ac93ef42..14d2f425c8 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java @@ -1,10 +1,11 @@ package graphql.execution.instrumentation.dataloader; +import com.google.common.collect.ImmutableList; +import org.dataloader.BatchLoader; import org.dataloader.DataLoader; +import org.dataloader.DataLoaderFactory; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -26,12 +27,13 @@ public DataLoaderCompanyProductBackend(int companyCount, int projectCount) { mkCompany(projectCount); } - projectsLoader = new DataLoader<>(keys -> getProjectsForCompanies(keys).thenApply(projects -> keys + BatchLoader> uuidListBatchLoader = keys -> getProjectsForCompanies(keys).thenApply(projects -> keys .stream() .map(companyId -> projects.stream() .filter(project -> project.getCompanyId().equals(companyId)) .collect(Collectors.toList())) - .collect(Collectors.toList()))); + .collect(Collectors.toList())); + projectsLoader = DataLoaderFactory.newDataLoader(uuidListBatchLoader); } @@ -54,13 +56,13 @@ public CompletableFuture> getCompanies() { } private List companiesList() { - return Collections.unmodifiableList(new ArrayList<>(companies.values())); + return ImmutableList.copyOf(companies.values()); } public CompletableFuture> getProjectsForCompanies(List companyIds) { return CompletableFuture.supplyAsync(() -> projects.values().stream() .filter(project -> companyIds.contains(project.getCompanyId())) - .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList))); + .collect(Collectors.collectingAndThen(Collectors.toList(), ImmutableList::copyOf))); } public CompletableFuture addCompany() { diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy index 77e87642f6..13c105039f 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy @@ -48,16 +48,16 @@ class DataLoaderCompanyProductMutationTest extends Specification { newTypeWiring("Company").dataFetcher("projects", { environment -> DataLoaderCompanyProductBackend.Company source = environment.getSource() - return backend.getProjectsLoader().load(source.getId()) + return environment.getDataLoader("projects-dl").load(source.getId()) })) .type( - newTypeWiring("Query").dataFetcher("companies", { - environment -> backend.getCompanies() - })) + newTypeWiring("Query").dataFetcher("companies", { + environment -> backend.getCompanies() + })) .type( - newTypeWiring("Mutation").dataFetcher("addCompany", { - environment -> backend.addCompany() - })) + newTypeWiring("Mutation").dataFetcher("addCompany", { + environment -> backend.addCompany() + })) .build() def registry = new DataLoaderRegistry() @@ -66,12 +66,12 @@ class DataLoaderCompanyProductMutationTest extends Specification { def graphQL = TestUtil.graphQL(spec, wiring) .queryExecutionStrategy(queryES) .mutationExecutionStrategy(mutationES) - .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query(query) .dataLoaderRegistry(registry) + .graphQLContext([(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING): false]) .build() when: diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy similarity index 52% rename from src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationTest.groovy rename to src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy index e82fc04d7c..f62ae00222 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy @@ -1,47 +1,38 @@ package graphql.execution.instrumentation.dataloader import graphql.ExecutionInput - import graphql.ExecutionResult import graphql.GraphQL import graphql.TestUtil -import graphql.execution.AsyncExecutionStrategy import graphql.execution.AsyncSerialExecutionStrategy -import graphql.execution.ExecutionContext -import graphql.execution.ExecutionStrategyParameters -import graphql.execution.ExecutorServiceExecutionStrategy -import graphql.execution.batched.BatchedExecutionStrategy import graphql.execution.instrumentation.ChainedInstrumentation -import graphql.execution.instrumentation.Instrumentation -import graphql.execution.instrumentation.SimpleInstrumentation -import graphql.schema.DataFetcher +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.pubsub.CapturingSubscriber +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import org.awaitility.Awaitility import org.dataloader.BatchLoader -import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry +import org.reactivestreams.Publisher +import reactor.core.publisher.Mono import spock.lang.Specification import spock.lang.Unroll +import java.time.Duration import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage -import java.util.concurrent.ForkJoinPool import static graphql.ExecutionInput.newExecutionInput import static graphql.StarWarsSchema.starWarsSchema +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring -class DataLoaderDispatcherInstrumentationTest extends Specification { - - class CaptureStrategy extends AsyncExecutionStrategy { - Instrumentation instrumentation = null - - @Override - CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - instrumentation = executionContext.instrumentation - return super.execute(executionContext, parameters) - } - } +class DataLoaderDispatcherTest extends Specification { def query = """ @@ -68,47 +59,11 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { ] - def "dataloader instrumentation is always added and an empty data loader registry is in place"() { - - def captureStrategy = new CaptureStrategy() - def graphQL = GraphQL.newGraphQL(starWarsSchema).queryExecutionStrategy(captureStrategy) - .instrumentation(new SimpleInstrumentation()) - .build() - def executionInput = newExecutionInput().query('{ hero { name } }').build() - when: - graphQL.execute(executionInput) - then: - executionInput.getDataLoaderRegistry() != null - def chainedInstrumentation = captureStrategy.instrumentation as ChainedInstrumentation - chainedInstrumentation.instrumentations.any { instr -> instr instanceof DataLoaderDispatcherInstrumentation } - } - - def "dispatch is never called if not data loader registry is set in"() { - def dataLoaderRegistry = new DataLoaderRegistry() { - @Override - void dispatchAll() { - assert false, "This should not be called when there are no data loaders" - } - } - def graphQL = GraphQL.newGraphQL(starWarsSchema).build() - def executionInput = newExecutionInput().query('{ hero { name } }').build() - - when: - def er = graphQL.execute(executionInput) - then: - er.errors.isEmpty() - } - - def "dispatch is called if there are data loaders"() { + @Unroll + def "basic dataloader dispatch test"() { def dispatchedCalled = false - def dataLoaderRegistry = new DataLoaderRegistry() { - @Override - void dispatchAll() { - dispatchedCalled = true - super.dispatchAll() - } - } - def dataLoader = DataLoader.newDataLoader(new BatchLoader() { + def dataLoaderRegistry = new DataLoaderRegistry() + def dataLoader = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage load(List keys) { return CompletableFuture.completedFuture(keys) @@ -118,12 +73,17 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { def graphQL = GraphQL.newGraphQL(starWarsSchema).build() def executionInput = newExecutionInput().dataLoaderRegistry(dataLoaderRegistry).query('{ hero { name } }').build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) when: - def er = graphQL.execute(executionInput) + def er = graphQL.executeAsync(executionInput) + Awaitility.await().until { er.isDone() } then: - er.errors.isEmpty() - dispatchedCalled + er.get().data == [hero: [name: 'R2-D2']] + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } def "enhanced execution input is respected"() { @@ -131,19 +91,19 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { def starWarsWiring = new StarWarsDataLoaderWiring() - DataLoaderRegistry startingDataLoaderRegistry = new DataLoaderRegistry(); + DataLoaderRegistry startingDataLoaderRegistry = new DataLoaderRegistry() def enhancedDataLoaderRegistry = starWarsWiring.newDataLoaderRegistry() - def dlInstrumentation = new DataLoaderDispatcherInstrumentation() - def enhancingInstrumentation = new SimpleInstrumentation() { + def enhancingInstrumentation = new SimplePerformantInstrumentation() { + @Override - ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters) { + ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { assert executionInput.getDataLoaderRegistry() == startingDataLoaderRegistry return executionInput.transform({ builder -> builder.dataLoaderRegistry(enhancedDataLoaderRegistry) }) } } - def chainedInstrumentation = new ChainedInstrumentation([dlInstrumentation, enhancingInstrumentation]) + def chainedInstrumentation = new ChainedInstrumentation([enhancingInstrumentation]) def graphql = GraphQL.newGraphQL(starWarsWiring.schema) .instrumentation(chainedInstrumentation).build() @@ -160,47 +120,50 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { @Unroll - def "ensure DataLoaderDispatcherInstrumentation works for #executionStrategyName"() { + def "ensure DataLoaderDispatcher works for async serial execution strategy"() { given: + def executionStrategy = new AsyncSerialExecutionStrategy() def starWarsWiring = new StarWarsDataLoaderWiring() def dlRegistry = starWarsWiring.newDataLoaderRegistry() - def batchingInstrumentation = new DataLoaderDispatcherInstrumentation() def graphql = GraphQL.newGraphQL(starWarsWiring.schema) .queryExecutionStrategy(executionStrategy) - .instrumentation(batchingInstrumentation).build() + .build() when: - def asyncResult = graphql.executeAsync(newExecutionInput().query(query).dataLoaderRegistry(dlRegistry)) + def asyncResult = graphql.executeAsync(newExecutionInput().query(query) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .dataLoaderRegistry(dlRegistry)) + + Awaitility.await().atMost(Duration.ofMillis(200)).until { -> asyncResult.isDone() } def er = asyncResult.join() then: er.data == expectedQueryData where: - executionStrategyName | executionStrategy || _ - "AsyncExecutionStrategy" | new AsyncSerialExecutionStrategy() || _ - "AsyncSerialExecutionStrategy" | new AsyncSerialExecutionStrategy() || _ - "BatchedExecutionStrategy" | new BatchedExecutionStrategy() || _ - "ExecutorServiceExecutionStrategy" | new ExecutorServiceExecutionStrategy(ForkJoinPool.commonPool()) || _ + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } - def "basic batch loading is possible via instrumentation interception of Execution Strategies"() { + @Unroll + def "basic batch loading is possible"() { given: def starWarsWiring = new StarWarsDataLoaderWiring() def dlRegistry = starWarsWiring.newDataLoaderRegistry() - def batchingInstrumentation = new DataLoaderDispatcherInstrumentation() - def graphql = GraphQL.newGraphQL(starWarsWiring.schema).instrumentation(batchingInstrumentation).build() + def graphql = GraphQL.newGraphQL(starWarsWiring.schema).build() when: - def asyncResult = graphql.executeAsync(newExecutionInput().query(query).dataLoaderRegistry(dlRegistry)) + def asyncResult = graphql.executeAsync(newExecutionInput().query(query) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .dataLoaderRegistry(dlRegistry)) def er = asyncResult.join() @@ -224,17 +187,22 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { // // if we didn't have batch loading it would have these many character load calls starWarsWiring.naiveLoadCount == 15 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + @Unroll def "non list queries work as expected"() { given: def starWarsWiring = new StarWarsDataLoaderWiring() def dlRegistry = starWarsWiring.newDataLoaderRegistry() - def batchingInstrumentation = new DataLoaderDispatcherInstrumentation() - def graphql = GraphQL.newGraphQL(starWarsWiring.schema).instrumentation(batchingInstrumentation).build() + def graphql = GraphQL.newGraphQL(starWarsWiring.schema) + .build() when: def query = """ @@ -255,7 +223,9 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { } """ - def asyncResult = graphql.executeAsync(newExecutionInput().query(query).dataLoaderRegistry(dlRegistry)) + def asyncResult = graphql.executeAsync(newExecutionInput().query(query) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .dataLoaderRegistry(dlRegistry)) def er = asyncResult.join() @@ -267,8 +237,13 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { starWarsWiring.rawCharacterLoadCount == 4 starWarsWiring.batchFunctionLoadCount == 2 starWarsWiring.naiveLoadCount == 8 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + @Unroll def "can be efficient with lazily computed data loaders"() { def sdl = ''' @@ -279,11 +254,10 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { BatchLoader batchLoader = { keys -> CompletableFuture.completedFuture(keys) } - DataFetcher df = { env -> - def dataLoader = env.getDataLoaderRegistry().computeIfAbsent("key", { key -> DataLoader.newDataLoader(batchLoader) }) - + def df = { env -> + def dataLoader = env.getDataLoader("key") return dataLoader.load("working as expected") - } + } as DataFetcher def runtimeWiring = newRuntimeWiring().type( newTypeWiring("Query").dataFetcher("field", df).build() ).build() @@ -291,13 +265,129 @@ class DataLoaderDispatcherInstrumentationTest extends Specification { def graphql = TestUtil.graphQL(sdl, runtimeWiring).build() DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + def loader = DataLoaderFactory.newDataLoader("key", batchLoader) + dataLoaderRegistry.register("key", loader) when: def executionInput = newExecutionInput().dataLoaderRegistry(dataLoaderRegistry).query('{ field }').build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]); + def erCF = graphql.executeAsync(executionInput) + + then: + Awaitility.await().until { erCF.isDone() } + erCF.get().errors.isEmpty() + erCF.get().data["field"] == "working as expected" + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + + @Unroll + def "handles deep async queries when a data loader registry is present"() { + given: + def support = new DeepDataFetchers() + def dummyDataloaderRegistry = new DataLoaderRegistry() + def graphql = GraphQL.newGraphQL(support.schema()) + .build() + def depth = 50 + + when: + def asyncResult = graphql.executeAsync( + newExecutionInput() + .query(support.buildQuery(depth)) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .dataLoaderRegistry(dummyDataloaderRegistry) + ) + def er = asyncResult.join() + + then: + er.errors.isEmpty() + er.data == support.buildResponse(depth) + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + + } + + @Unroll + def "issue 3662 - dataloader dispatching can work with subscriptions"() { + + def sdl = ''' + type Query { + field : String + } + + type Subscription { + onSub : OnSub + } + + type OnSub { + x : String + y : String + } + ''' + + // the dispatching is ALWAYS so not really batching but it completes + BatchLoader batchLoader = { keys -> + CompletableFuture.supplyAsync { + Thread.sleep(50) // some delay + keys + } + } + + DataFetcher dlDF = { DataFetchingEnvironment env -> + def dataLoader = env.getDataLoader("dl") + return dataLoader.load("working as expected") + } + DataFetcher dlSub = { DataFetchingEnvironment env -> + return Mono.just([x: "X", y: "Y"]) + } + def runtimeWiring = newRuntimeWiring() + .type(newTypeWiring("OnSub") + .dataFetcher("x", dlDF) + .dataFetcher("y", dlDF) + .build() + ) + .type(newTypeWiring("Subscription") + .dataFetcher("onSub", dlSub) + .build() + ) + .build() + + def graphql = TestUtil.graphQL(sdl, runtimeWiring).build() + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("dl", DataLoaderFactory.newDataLoader(batchLoader)) + + when: + def query = """ + subscription s { + onSub { + x, y + } + } + """ + def executionInput = newExecutionInput() + .dataLoaderRegistry(dataLoaderRegistry) + .query(query) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .build() def er = graphql.execute(executionInput) then: er.errors.isEmpty() - er.data["field"] == "working as expected" + def subscriber = new CapturingSubscriber() + Publisher pub = er.data + pub.subscribe(subscriber) + + Awaitility.await().untilTrue(subscriber.isDone()) + + subscriber.getEvents().size() == 1 + + def msgER = subscriber.getEvents()[0] as ExecutionResult + msgER.data == [onSub: [x: "working as expected", y: "working as expected"]] + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy index 3b9a3c0b12..f3b9087073 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy @@ -1,18 +1,28 @@ package graphql.execution.instrumentation.dataloader -import graphql.ExecutionResult +import com.github.javafaker.Faker +import graphql.ExecutionInput import graphql.GraphQL import graphql.TestUtil import graphql.execution.Async +import graphql.execution.AsyncExecutionStrategy +import graphql.execution.DataFetcherExceptionHandler +import graphql.execution.DataFetcherExceptionHandlerParameters +import graphql.execution.DataFetcherExceptionHandlerResult +import graphql.execution.instrumentation.dataloader.models.Company +import graphql.execution.instrumentation.dataloader.models.Person +import graphql.execution.instrumentation.dataloader.models.Product import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.idl.RuntimeWiring import org.apache.commons.lang3.concurrent.BasicThreadFactory import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderOptions import org.dataloader.DataLoaderRegistry import spock.lang.Specification +import spock.lang.Unroll import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage @@ -20,14 +30,18 @@ import java.util.concurrent.SynchronousQueue import java.util.concurrent.ThreadFactory import java.util.concurrent.ThreadPoolExecutor import java.util.concurrent.TimeUnit +import java.util.stream.Collectors import static graphql.ExecutionInput.newExecutionInput +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class DataLoaderHangingTest extends Specification { public static final int NUM_OF_REPS = 50 + @Unroll def "deadlock attempt"() { setup: def sdl = """ @@ -87,8 +101,12 @@ class DataLoaderHangingTest extends Specification { TimeUnit.MILLISECONDS, new SynchronousQueue<>(), threadFactory, new ThreadPoolExecutor.CallerRunsPolicy()) - DataFetcher albumsDf = { env -> env.getDataLoader("artist.albums").load(env) } - DataFetcher songsDf = { env -> env.getDataLoader("album.songs").load(env) } + DataFetcher albumsDf = { env -> + env.getDataLoader("artist.albums").load(env) + } + DataFetcher songsDf = { env -> + env.getDataLoader("album.songs").load(env) + } def dataFetcherArtists = new DataFetcher() { @Override @@ -104,27 +122,28 @@ class DataLoaderHangingTest extends Specification { def wiring = RuntimeWiring.newRuntimeWiring() .type(newTypeWiring("Query") - .dataFetcher("listArtists", dataFetcherArtists)) + .dataFetcher("listArtists", dataFetcherArtists)) .type(newTypeWiring("Artist") - .dataFetcher("albums", albumsDf)) + .dataFetcher("albums", albumsDf)) .type(newTypeWiring("Album") - .dataFetcher("songs", songsDf)) + .dataFetcher("songs", songsDf)) .build() def schema = TestUtil.schema(sdl, wiring) when: def graphql = GraphQL.newGraphQL(schema) - .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() then: "execution shouldn't hang" - List> futures = [] + def futures = Async.ofExpectedSize(NUM_OF_REPS) for (int i = 0; i < NUM_OF_REPS; i++) { DataLoaderRegistry dataLoaderRegistry = mkNewDataLoaderRegistry(executor) + def contextMap = contextKey == null ? Collections.emptyMap() : [(contextKey): true] def result = graphql.executeAsync(newExecutionInput() .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext(contextMap) .query(""" query getArtistsWithData { listArtists(limit: 1) { @@ -157,18 +176,22 @@ class DataLoaderHangingTest extends Specification { futures.add(result) } // wait for each future to complete and grab the results - Async.each(futures) + futures.await() .whenComplete({ results, error -> - if (error) { - throw error - } - results.each { assert it.errors.empty } - }) + if (error) { + throw error + } + results.each { assert it.errors.empty } + }) .join() + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } private DataLoaderRegistry mkNewDataLoaderRegistry(executor) { - def dataLoaderAlbums = new DataLoader(new BatchLoader>() { + def dataLoaderAlbums = DataLoaderFactory.newDataLoader(new BatchLoader>() { @Override CompletionStage>> load(List keys) { return CompletableFuture.supplyAsync({ @@ -183,9 +206,9 @@ class DataLoaderHangingTest extends Specification { }) }, executor) } - }, DataLoaderOptions.newOptions().setMaxBatchSize(5)) + }, DataLoaderOptions.newOptions().setMaxBatchSize(5).build()) - def dataLoaderSongs = new DataLoader(new BatchLoader>() { + def dataLoaderSongs = DataLoaderFactory.newDataLoader(new BatchLoader>() { @Override CompletionStage>> load(List keys) { return CompletableFuture.supplyAsync({ @@ -200,11 +223,165 @@ class DataLoaderHangingTest extends Specification { }) }, executor) } - }, DataLoaderOptions.newOptions().setMaxBatchSize(5)) + }, DataLoaderOptions.newOptions().setMaxBatchSize(5).build()) def dataLoaderRegistry = new DataLoaderRegistry() dataLoaderRegistry.register("artist.albums", dataLoaderAlbums) dataLoaderRegistry.register("album.songs", dataLoaderSongs) dataLoaderRegistry } -} \ No newline at end of file + + /* + Test code taken from https://github.com/graphql-java/graphql-java/issues/1973 + */ + Faker faker = new Faker() + String schema = """ + type Company { + id: Int! + } + type Person { + company: Company! + } + type Product { + suppliedBy: Person! + } + type QueryType { + products: [Product!]! + } + schema { + query: QueryType + } + """ + + DataFetcherExceptionHandler customExceptionHandlerThatThrows = new DataFetcherExceptionHandler() { + + @Override + CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { + // + // this is a weird test case - its not actually handling the exception - its a test + // case where the handler code itself throws an exception during the handling + // and that will not stop the DataLoader from being dispatched + throw handlerParameters.exception + } + } + + BatchLoader personBatchLoader = new BatchLoader() { + @Override + CompletionStage> load(List keys) { + return CompletableFuture.supplyAsync({ + List people = keys.stream() + .map({ id -> new Person(id, faker.name().fullName(), id + 200) }) + .collect(Collectors.toList()) + return people + }) + } + } + + BatchLoader companyBatchLoader = new BatchLoader() { + @Override + CompletionStage> load(List keys) { + return CompletableFuture.supplyAsync({ + def companies = keys.stream() + .map({ id -> new Company(id, faker.company().name()) }) + .collect(Collectors.toList()) + return companies + }) + } + } + + // Always returns exactly 2 products, one supplied by person with ID #0 and one supplied by person with ID #1. + DataFetcher productsDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + List products = new ArrayList<>() + for (int id = 0; id < 2; id++) { + products.add(new Product(faker.idNumber().toString(), faker.commerce().productName(), id, [])) + } + return products + } + } + + // Loads the person pointed to via Product.getSuppliedById. + // Then return it, unless the person has ID 0 in which case it fails. + DataFetcher suppliedByDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + Product source = environment.getSource() + DataLoaderRegistry dlRegistry = environment.getGraphQlContext().get("registry") + DataLoader personDL = dlRegistry.getDataLoader("person") + return personDL.load(source.getSuppliedById()).thenApply({ person -> + if (person.id == 0) { + throw new RuntimeException("Failure in suppliedByDF for person with ID == 0.") + } + return person + }) + } + } + + DataFetcher companyDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + Person source = environment.getSource() + DataLoaderRegistry dlRegistry = environment.getGraphQlContext().get("registry") + DataLoader companyDL = dlRegistry.getDataLoader("company") + return companyDL.load(source.getCompanyId()) + } + } + + RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type("QueryType", { builder -> builder.dataFetcher("products", productsDF) }) + .type("Product", { builder -> builder.dataFetcher("suppliedBy", suppliedByDF) }) + .type("Person", { builder -> builder.dataFetcher("company", companyDF) }) + .build() + + + def graphQLSchema = TestUtil.schema(schema, runtimeWiring) + + def query = """ + query Products { + products { + suppliedBy { + company { + id + } + } + } + } + """ + + private DataLoaderRegistry buildRegistry() { + DataLoader personDataLoader = DataLoaderFactory.newDataLoader(personBatchLoader) + DataLoader companyDataLoader = DataLoaderFactory.newDataLoader(companyBatchLoader) + + DataLoaderRegistry registry = new DataLoaderRegistry() + registry.register("person", personDataLoader) + registry.register("company", companyDataLoader) + return registry + } + + def "execution should never hang even if the datafetcher of one object in a list fails"() { + + DataLoaderRegistry registry = buildRegistry() + + GraphQL graphQL = GraphQL + .newGraphQL(graphQLSchema) + .queryExecutionStrategy(new AsyncExecutionStrategy(customExceptionHandlerThatThrows)) + .build() + + when: + + ExecutionInput executionInput = newExecutionInput() + .query(query) + .graphQLContext(["registry": registry]) + .graphQLContext([(ENABLE_DATA_LOADER_CHAINING): false]) + .dataLoaderRegistry(registry) + .build() + + def executionResult = graphQL.execute(executionInput) + + + then: + + (executionResult.errors.size() > 0) + } +} diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy index 277b4f5d7c..46378c79a1 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy @@ -3,10 +3,15 @@ package graphql.execution.instrumentation.dataloader import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLSchema import graphql.schema.StaticDataFetcher import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification @@ -64,11 +69,25 @@ class DataLoaderNodeTest extends Specification { } + class NodeDataFetcher implements DataFetcher { + String name + + NodeDataFetcher(String name) { + this.name = name + } + + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return environment.getDataLoader(name).load(environment.getSource()) + } + } + def "levels of loading"() { List> nodeLoads = [] - DataLoader> loader = new DataLoader<>({ keys -> + + def batchLoadFunction = { keys -> nodeLoads.add(keys) List> childNodes = new ArrayList<>() for (Node key : keys) { @@ -76,38 +95,52 @@ class DataLoaderNodeTest extends Specification { } System.out.println("BatchLoader called for " + keys + " -> got " + childNodes) return CompletableFuture.completedFuture(childNodes) - }) + } + DataLoader> loader = DataLoaderFactory.newDataLoader(batchLoadFunction) + + def nodeTypeName = "Node" + def childNodesFieldName = "childNodes" + def queryTypeName = "Query" + def rootFieldName = "root" - GraphQLObjectType nodeType = GraphQLObjectType.newObject() - .name("Node") + DataFetcher nodeDataFetcher = new NodeDataFetcher(childNodesFieldName) + DataLoaderRegistry registry = new DataLoaderRegistry().register(childNodesFieldName, loader) + + GraphQLObjectType nodeType = GraphQLObjectType + .newObject() + .name(nodeTypeName) .field(newFieldDefinition() - .name("id") - .type(GraphQLInt) - .build()) + .name("id") + .type(GraphQLInt) + .build()) .field(newFieldDefinition() - .name("childNodes") - .type(list(typeRef("Node"))) - .dataFetcher({ environment -> loader.load(environment.getSource()) }) - .build()) + .name(childNodesFieldName) + .type(list(typeRef(nodeTypeName))) + .build()) .build() + def childNodesCoordinates = FieldCoordinates.coordinates(nodeTypeName, childNodesFieldName) + def rootCoordinates = FieldCoordinates.coordinates(queryTypeName, rootFieldName) + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(childNodesCoordinates, nodeDataFetcher) + .dataFetcher(rootCoordinates, new StaticDataFetcher(root)) + .build() GraphQLSchema schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(GraphQLObjectType.newObject() - .name("Query") - .field(newFieldDefinition() - .name("root") - .type(nodeType) - .dataFetcher(new StaticDataFetcher(root)) - .build()) - .build()) + .name(queryTypeName) + .field(newFieldDefinition() + .name(rootFieldName) + .type(nodeType) + .build()) + .build()) .build() - DataLoaderRegistry registry = new DataLoaderRegistry().register("childNodes", loader) - ExecutionResult result = GraphQL.newGraphQL(schema) - .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() - .execute(ExecutionInput.newExecutionInput().dataLoaderRegistry(registry).query( + .execute(ExecutionInput.newExecutionInput() + .graphQLContext([(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING): enableDataLoaderChaining]) + .dataLoaderRegistry(registry).query( ''' query Q { root { @@ -147,5 +180,9 @@ class DataLoaderNodeTest extends Specification { // but currently is this nodeLoads.size() == 3 // WOOT! + where: + enableDataLoaderChaining << [true, false] + + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy index a0fec6c9da..5e72e5f2ad 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy @@ -1,11 +1,16 @@ package graphql.execution.instrumentation.dataloader +import com.fasterxml.jackson.databind.ObjectMapper import graphql.Directives import graphql.GraphQL import graphql.execution.instrumentation.Instrumentation +import graphql.execution.pubsub.CapturingSubscriber +import graphql.incremental.DelayedIncrementalPartialResult +import graphql.incremental.IncrementalExecutionResult import graphql.schema.GraphQLSchema +import org.awaitility.Awaitility import org.dataloader.DataLoaderRegistry - +import org.reactivestreams.Publisher class DataLoaderPerformanceData { @@ -30,6 +35,14 @@ class DataLoaderPerformanceData { .build() } + GraphQL setupGraphQL() { + GraphQLSchema schema = new BatchCompare().buildDataLoaderSchema(batchCompareDataFetchers) + schema = schema.transform({ bldr -> bldr.additionalDirective(Directives.DeferDirective) }) + + GraphQL.newGraphQL(schema) + .build() + } + static def expectedData = [ shops: [ [id : "shop-1", name: "Shop 1", @@ -48,20 +61,29 @@ class DataLoaderPerformanceData { [id: "department-9", name: "Department 9", products: [[id: "product-9", name: "Product 9"]]]] ]] ] + static String getQuery() { + return getQuery(false, false) + } - static def query = """ + static String getQuery(boolean deferDepartments, boolean deferProducts) { + return """ query { - shops { - id name - departments { - id name - products { - id name + shops { # 1 + id name # 2 + ... @defer(if: $deferDepartments) { + departments { # 2 + id name # 3 + ... @defer(if: $deferProducts) { + products { # 3 + id name # 4 + } + } } - } + } } } """ + } static def expectedExpensiveData = [ shops : [[name : "Shop 1", @@ -109,8 +131,49 @@ class DataLoaderPerformanceData { ] + static void assertIncrementalExpensiveData(List> incrementalResults) { + // Ordering is non-deterministic, so we assert on the things we know are going to be true. + + assert incrementalResults.size() == 25 + // only the last payload has "hasNext=true" + assert incrementalResults.subList(0, 24).every { it.hasNext == true } + assert incrementalResults[24].hasNext == false + + // every payload has only 1 incremental item, and the data is the same for all of them + assert incrementalResults.every { it.incremental.size() == 1 } + + def incrementalResultsItems = incrementalResults.collect { it.incremental[0] } + + // the order of the actual data is non-deterministic. So we assert via "any" that the data is there + assert incrementalResultsItems.any { it == [path: ["shops", 0], data: [departments: [[name: "Department 1"], [name: "Department 2"], [name: "Department 3"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0], data: [expensiveDepartments: [[name: "Department 1", products: [[name: "Product 1"]], expensiveProducts: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]], expensiveProducts: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]], expensiveProducts: [[name: "Product 3"]]]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1], data: [expensiveDepartments: [[name: "Department 4", products: [[name: "Product 4"]], expensiveProducts: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]], expensiveProducts: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]], expensiveProducts: [[name: "Product 6"]]]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1], data: [departments: [[name: "Department 4"], [name: "Department 5"], [name: "Department 6"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2], data: [departments: [[name: "Department 7"], [name: "Department 8"], [name: "Department 9"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2], data: [expensiveDepartments: [[name: "Department 7", products: [[name: "Product 7"]], expensiveProducts: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]], expensiveProducts: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]], expensiveProducts: [[name: "Product 9"]]]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0, "departments", 0], data: [products: [[name: "Product 1"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0, "departments", 0], data: [expensiveProducts: [[name: "Product 1"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0, "departments", 1], data: [products: [[name: "Product 2"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0, "departments", 1], data: [expensiveProducts: [[name: "Product 2"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0, "departments", 2], data: [products: [[name: "Product 3"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 0, "departments", 2], data: [expensiveProducts: [[name: "Product 3"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1, "departments", 0], data: [expensiveProducts: [[name: "Product 4"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1, "departments", 0], data: [products: [[name: "Product 4"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1, "departments", 1], data: [products: [[name: "Product 5"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1, "departments", 1], data: [expensiveProducts: [[name: "Product 5"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1, "departments", 2], data: [expensiveProducts: [[name: "Product 6"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 1, "departments", 2], data: [products: [[name: "Product 6"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2, "departments", 0], data: [products: [[name: "Product 7"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2, "departments", 0], data: [expensiveProducts: [[name: "Product 7"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2, "departments", 1], data: [products: [[name: "Product 8"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2, "departments", 1], data: [expensiveProducts: [[name: "Product 8"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2, "departments", 2], data: [products: [[name: "Product 9"]]]] } + assert incrementalResultsItems.any { it == [path: ["shops", 2, "departments", 2], data: [expensiveProducts: [[name: "Product 9"]]]] } + assert incrementalResultsItems.any { it == [path: [], data: [expensiveShops: [[id: "exshop-1", name: "ExShop 1"], [id: "exshop-2", name: "ExShop 2"], [id: "exshop-3", name: "ExShop 3"]]]] } + } - static def expensiveQuery = """ + static String getExpensiveQuery(boolean deferredEnabled) { + return """ query { shops { name @@ -119,19 +182,25 @@ class DataLoaderPerformanceData { products { name } - expensiveProducts { - name - } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - expensiveDepartments { - name - products { - name - } - expensiveProducts { + ... @defer(if: $deferredEnabled) { + expensiveDepartments { name + products { + name + } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - } + } } expensiveShops { name @@ -140,126 +209,95 @@ class DataLoaderPerformanceData { products { name } - expensiveProducts { - name - } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - expensiveDepartments { - name - products { - name - } - expensiveProducts { + ... @defer(if: $deferredEnabled) { + expensiveDepartments { name + products { + name + } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - } + } } } - """ +""" - static def expectedInitialDeferredData = [ - shops: [ - [id: "shop-1", name: "Shop 1", departments: null], - [id: "shop-2", name: "Shop 2", departments: null], - [id: "shop-3", name: "Shop 3", departments: null], - ] - ] + } - static def expectedInitialExpensiveDeferredData = [ - shops : [ - [id: "shop-1", name: "Shop 1", departments: null, expensiveDepartments: null], - [id: "shop-2", name: "Shop 2", departments: null, expensiveDepartments: null], - [id: "shop-3", name: "Shop 3", departments: null, expensiveDepartments: null], - ], - expensiveShops: null - ] + static List> getIncrementalResults(IncrementalExecutionResult initialResult) { + Publisher deferredResultStream = initialResult.incrementalItemPublisher - static def expectedListOfDeferredData = [ - [[id: "department-1", name: "Department 1", products: [[id: "product-1", name: "Product 1"]]], - [id: "department-2", name: "Department 2", products: [[id: "product-2", name: "Product 2"]]], - [id: "department-3", name: "Department 3", products: [[id: "product-3", name: "Product 3"]]]] - , - - [[id: "department-4", name: "Department 4", products: [[id: "product-4", name: "Product 4"]]], - [id: "department-5", name: "Department 5", products: [[id: "product-5", name: "Product 5"]]], - [id: "department-6", name: "Department 6", products: [[id: "product-6", name: "Product 6"]]]] - , - [[id: "department-7", name: "Department 7", products: [[id: "product-7", name: "Product 7"]]], - [id: "department-8", name: "Department 8", products: [[id: "product-8", name: "Product 8"]]], - [id: "department-9", name: "Department 9", products: [[id: "product-9", name: "Product 9"]]]] - , + def subscriber = new CapturingSubscriber() + deferredResultStream.subscribe(subscriber) + Awaitility.await().untilTrue(subscriber.isDone()) - ] + if(subscriber.getThrowable() != null) { + throw subscriber.getThrowable() + } + return subscriber.getEvents() + .collect { it.toSpecification() } + } - static def deferredQuery = """ - query { - shops { - id name - departments @defer { - id name - products { - id name - } - } - } - } - """ + /** + * Combines the initial result with the incremental results into a single result that has the same shape as a + * "normal" execution result. + * + * @param initialResult the data from the initial execution + * @param incrementalResults the data from the incremental executions + * @return a single result that combines the initial and incremental results + */ + static Map combineExecutionResults(Map initialResult, List> incrementalResults) { + Map combinedResult = deepClone(initialResult, Map.class) - static def expensiveDeferredQuery = """ - query { - shops { - id name - departments @defer { - name - products @defer { - name - } - expensiveProducts @defer { - name - } - } - expensiveDepartments @defer { - name - products { - name - } - expensiveProducts { - name - } - } - } - expensiveShops @defer { - id name - } - } - """ + incrementalResults + // groovy's flatMap + .collectMany { (List) it.incremental } + .each { result -> + def parent = findByPath((Map) combinedResult.data, (List) result.path) + if (parent instanceof Map) { + parent.putAll((Map) result.data) + } else if (parent instanceof List) { + parent.addAll(result.data) + } else { + throw new RuntimeException("Unexpected parent type: ${parent.getClass()}") + } - static def expectedExpensiveDeferredData = [ - [[id: "exshop-1", name: "ExShop 1"], [id: "exshop-2", name: "ExShop 2"], [id: "exshop-3", name: "ExShop 3"]], - [[name: "Department 1",products:null, expensiveProducts:null], [name: "Department 2",products:null, expensiveProducts:null], [name: "Department 3",products:null, expensiveProducts:null]], - [[name: "Department 1", products: [[name: "Product 1"]], expensiveProducts: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]], expensiveProducts: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]], expensiveProducts: [[name: "Product 3"]]]], - [[name: "Department 4",products:null, expensiveProducts:null], [name: "Department 5",products:null, expensiveProducts:null], [name: "Department 6",products:null, expensiveProducts:null]], - [[name: "Department 4", products: [[name: "Product 4"]], expensiveProducts: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]], expensiveProducts: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]], expensiveProducts: [[name: "Product 6"]]]], - [[name: "Department 7",products:null, expensiveProducts:null], [name: "Department 8",products:null, expensiveProducts:null], [name: "Department 9",products:null, expensiveProducts:null]], - [[name: "Department 7", products: [[name: "Product 7"]], expensiveProducts: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]], expensiveProducts: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]], expensiveProducts: [[name: "Product 9"]]]], - [[name: "Product 1"]], - [[name: "Product 1"]], - [[name: "Product 2"]], - [[name: "Product 2"]], - [[name: "Product 3"]], - [[name: "Product 3"]], - [[name: "Product 4"]], - [[name: "Product 4"]], - [[name: "Product 5"]], - [[name: "Product 5"]], - [[name: "Product 6"]], - [[name: "Product 6"]], - [[name: "Product 7"]], - [[name: "Product 7"]], - [[name: "Product 8"]], - [[name: "Product 8"]], - [[name: "Product 9"]], - [[name: "Product 9"]], - ] + if(combinedResult.errors != null && !result.errors.isEmpty()) { + if(combinedResult.errors == null) { + combinedResult.errors = [] + } + + combinedResult.errors.addAll(result.errors) + } + } + + // Remove the "hasNext" to make the result look like a normal execution result + combinedResult.remove("hasNext") + + combinedResult + } + + private static ObjectMapper objectMapper = new ObjectMapper() + private static T deepClone(Object obj, Class clazz) { + return objectMapper.readValue(objectMapper.writeValueAsString(obj), clazz) + } + + private static Object findByPath(Map data, List path) { + def current = data + path.each { key -> + current = current[key] + } + current + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy index 0df6c7a5ca..1ee790ded3 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy @@ -1,23 +1,16 @@ package graphql.execution.instrumentation.dataloader -import graphql.DeferredExecutionResult import graphql.ExecutionInput import graphql.GraphQL -import graphql.execution.defer.CapturingSubscriber -import graphql.execution.instrumentation.Instrumentation -import org.awaitility.Awaitility import org.dataloader.DataLoaderRegistry -import org.reactivestreams.Publisher import spock.lang.Specification +import spock.lang.Unroll -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedInitialDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedInitialExpensiveDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getDeferredQuery +import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedExpensiveData import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedExpensiveData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedExpensiveDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedListOfDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveDeferredQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getQuery @@ -31,13 +24,18 @@ class DataLoaderPerformanceTest extends Specification { batchCompareDataFetchers = new BatchCompareDataFetchers() DataLoaderPerformanceData dataLoaderPerformanceData = new DataLoaderPerformanceData(batchCompareDataFetchers) dataLoaderRegistry = dataLoaderPerformanceData.setupDataLoaderRegistry() - Instrumentation instrumentation = new DataLoaderDispatcherInstrumentation() - graphQL = dataLoaderPerformanceData.setupGraphQL(instrumentation) + graphQL = dataLoaderPerformanceData.setupGraphQL() } + @Unroll def "760 ensure data loader is performant for lists"() { when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getQuery()) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .build() def result = graphQL.execute(executionInput) then: @@ -46,13 +44,28 @@ class DataLoaderPerformanceTest extends Specification { // eg 1 for shops-->departments and one for departments --> products batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + + where: + incrementalSupport | contextKey + false | ENABLE_DATA_LOADER_CHAINING + true | ENABLE_DATA_LOADER_CHAINING + false | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + true | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + false | null + true | null } + @Unroll def "970 ensure data loader is performant for multiple field with lists"() { when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(expensiveQuery).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getExpensiveQuery(false)) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .build() def result = graphQL.execute(executionInput) then: @@ -60,15 +73,31 @@ class DataLoaderPerformanceTest extends Specification { batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() <= 2 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() <= 2 + + where: + incrementalSupport | contextKey + false | ENABLE_DATA_LOADER_CHAINING + true | ENABLE_DATA_LOADER_CHAINING + false | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + true | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + false | null + true | null } + @Unroll def "ensure data loader is performant for lists using async batch loading"() { when: batchCompareDataFetchers.useAsyncBatchLoading(true) - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getQuery()) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .build() + def result = graphQL.execute(executionInput) then: @@ -78,15 +107,30 @@ class DataLoaderPerformanceTest extends Specification { batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + where: + incrementalSupport | contextKey + false | ENABLE_DATA_LOADER_CHAINING + true | ENABLE_DATA_LOADER_CHAINING + false | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + true | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + false | null + true | null } + @Unroll def "970 ensure data loader is performant for multiple field with lists using async batch loading"() { when: batchCompareDataFetchers.useAsyncBatchLoading(true) - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(expensiveQuery).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getExpensiveQuery(false)) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .build() + def result = graphQL.execute(executionInput) then: @@ -94,59 +138,14 @@ class DataLoaderPerformanceTest extends Specification { batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() <= 2 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() <= 2 - } - - def "data loader will work with deferred queries"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(deferredQuery).dataLoaderRegistry(dataLoaderRegistry).build() - def result = graphQL.execute(executionInput) - - Map extensions = result.getExtensions() - Publisher deferredResultStream = (Publisher) extensions.get(GraphQL.DEFERRED_RESULTS) - - def subscriber = new CapturingSubscriber() - subscriber.subscribeTo(deferredResultStream) - Awaitility.await().untilTrue(subscriber.finished) - - - then: - - result.data == expectedInitialDeferredData - - subscriber.executionResultData == expectedListOfDeferredData - // - // with deferred results, we don't achieve the same efficiency - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 - } - - def "data loader will work with deferred queries on multiple levels deep"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(expensiveDeferredQuery).dataLoaderRegistry(dataLoaderRegistry).build() - def result = graphQL.execute(executionInput) - - Map extensions = result.getExtensions() - Publisher deferredResultStream = (Publisher) extensions.get(GraphQL.DEFERRED_RESULTS) - - def subscriber = new CapturingSubscriber() - subscriber.subscribeTo(deferredResultStream) - Awaitility.await().untilTrue(subscriber.finished) - - - then: - - result.data == expectedInitialExpensiveDeferredData - - subscriber.executionResultData == expectedExpensiveDeferredData - - // - // with deferred results, we don't achieve the same efficiency - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 + where: + incrementalSupport | contextKey + false | ENABLE_DATA_LOADER_CHAINING + true | ENABLE_DATA_LOADER_CHAINING + false | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + true | ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING + false | null + true | null } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy index 7d15890a82..5467c87220 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy @@ -1,25 +1,14 @@ package graphql.execution.instrumentation.dataloader -import graphql.DeferredExecutionResult import graphql.ExecutionInput import graphql.GraphQL -import graphql.execution.defer.CapturingSubscriber -import graphql.execution.instrumentation.ChainedInstrumentation -import graphql.execution.instrumentation.Instrumentation -import org.awaitility.Awaitility import org.dataloader.DataLoaderRegistry -import org.reactivestreams.Publisher import spock.lang.Ignore import spock.lang.Specification -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedInitialDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedInitialExpensiveDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getDeferredQuery +import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedExpensiveData import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedExpensiveData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedExpensiveDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedListOfDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveDeferredQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getQuery @@ -35,15 +24,18 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification DataLoaderPerformanceData dataLoaderPerformanceData = new DataLoaderPerformanceData(batchCompareDataFetchers) dataLoaderRegistry = dataLoaderPerformanceData.setupDataLoaderRegistry() - Instrumentation instrumentation = new ChainedInstrumentation( - Collections.singletonList(new DataLoaderDispatcherInstrumentation())) - graphQL = dataLoaderPerformanceData.setupGraphQL(instrumentation) + graphQL = dataLoaderPerformanceData.setupGraphQL() } def "chainedInstrumentation: 760 ensure data loader is performant for lists"() { when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getQuery()) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .build() + def result = graphQL.execute(executionInput) then: @@ -52,6 +44,9 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification // eg 1 for shops-->departments and one for departments --> products batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + + where: + incrementalSupport << [true, false] } @Ignore("This test flakes on Travis for some reason. Clearly this indicates some sort of problem to investigate. However it also stop releases.") @@ -59,7 +54,11 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(expensiveQuery).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getExpensiveQuery(false)) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .build() def result = graphQL.execute(executionInput) @@ -69,6 +68,8 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + where: + incrementalSupport << [true, false] } def "chainedInstrumentation: ensure data loader is performant for lists using async batch loading"() { @@ -77,7 +78,11 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification batchCompareDataFetchers.useAsyncBatchLoading(true) - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .build() def result = graphQL.execute(executionInput) then: @@ -87,6 +92,8 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + where: + incrementalSupport << [true, false] } def "chainedInstrumentation: 970 ensure data loader is performant for multiple field with lists using async batch loading"() { @@ -95,7 +102,11 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification batchCompareDataFetchers.useAsyncBatchLoading(true) - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(expensiveQuery).dataLoaderRegistry(dataLoaderRegistry).build() + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(getExpensiveQuery(false)) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) + .build() def result = graphQL.execute(executionInput) then: @@ -103,59 +114,9 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() <= 2 batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() <= 2 - } - - def "chainedInstrumentation: data loader will work with deferred queries"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(deferredQuery).dataLoaderRegistry(dataLoaderRegistry).build() - def result = graphQL.execute(executionInput) - - Map extensions = result.getExtensions() - Publisher deferredResultStream = (Publisher) extensions.get(GraphQL.DEFERRED_RESULTS) - - def subscriber = new CapturingSubscriber() - subscriber.subscribeTo(deferredResultStream) - Awaitility.await().untilTrue(subscriber.finished) - - - then: - - result.data == expectedInitialDeferredData - - subscriber.executionResultData == expectedListOfDeferredData - // - // with deferred results, we don't achieve the same efficiency - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 + where: + incrementalSupport << [true, false] } - def "chainedInstrumentation: data loader will work with deferred queries on multiple levels deep"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(expensiveDeferredQuery).dataLoaderRegistry(dataLoaderRegistry).build() - def result = graphQL.execute(executionInput) - - Map extensions = result.getExtensions() - Publisher deferredResultStream = (Publisher) extensions.get(GraphQL.DEFERRED_RESULTS) - - def subscriber = new CapturingSubscriber() - subscriber.subscribeTo(deferredResultStream) - Awaitility.await().untilTrue(subscriber.finished) - - - then: - - result.data == expectedInitialExpensiveDeferredData - - subscriber.executionResultData == expectedExpensiveDeferredData - - // - // with deferred results, we don't achieve the same efficiency - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 - } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy index 79ea8e2a49..61e444b70c 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy @@ -9,6 +9,7 @@ import graphql.schema.idl.SchemaGenerator import graphql.schema.idl.SchemaParser import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification @@ -36,7 +37,7 @@ class DataLoaderTypeMismatchTest extends Specification { def typeDefinitionRegistry = new SchemaParser().parse(sdl) - def dataLoader = new DataLoader(new BatchLoader() { + def dataLoader = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage> load(List keys) { return CompletableFuture.completedFuture([ @@ -50,26 +51,31 @@ class DataLoaderTypeMismatchTest extends Specification { def todosDef = new DataFetcher>() { @Override CompletableFuture get(DataFetchingEnvironment environment) { - return dataLoader.load(environment) + return environment.getDataLoader("getTodos").load(environment) } } def wiring = RuntimeWiring.newRuntimeWiring() .type(newTypeWiring("Query") - .dataFetcher("getTodos", todosDef)) + .dataFetcher("getTodos", todosDef)) .build() def schema = new SchemaGenerator().makeExecutableSchema(typeDefinitionRegistry, wiring) def graphql = GraphQL.newGraphQL(schema) - .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() when: - def result = graphql.execute(ExecutionInput.newExecutionInput().dataLoaderRegistry(dataLoaderRegistry).query("query { getTodos { id } }").build()) + def result = graphql.execute(ExecutionInput.newExecutionInput() + .graphQLContext([(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING): enableDataLoaderChaining]) + .dataLoaderRegistry(dataLoaderRegistry).query("query { getTodos { id } }").build()) then: "execution shouldn't hang" !result.errors.empty result.errors[0].message == "Can't resolve value (/getTodos) : type mismatch error, expected type LIST" + + where: + enableDataLoaderChaining << [true, false] + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DeepDataFetchers.java b/src/test/groovy/graphql/execution/instrumentation/dataloader/DeepDataFetchers.java new file mode 100644 index 0000000000..874700f32a --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DeepDataFetchers.java @@ -0,0 +1,81 @@ +package graphql.execution.instrumentation.dataloader; + +import java.util.HashMap; +import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; + +import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLTypeReference; + +public class DeepDataFetchers { + private static CompletableFuture supplyAsyncWithSleep(Supplier supplier) { + Supplier sleepSome = sleepSome(supplier); + return CompletableFuture.supplyAsync(sleepSome); + } + + private static Supplier sleepSome(Supplier supplier) { + return () -> { + try { + Thread.sleep(10L); + return supplier.get(); + } catch (Exception e) { + throw new RuntimeException(e); + } + }; + } + + public GraphQLSchema schema() { + GraphQLFieldDefinition selfField = GraphQLFieldDefinition.newFieldDefinition() + .name("self") + .type(GraphQLTypeReference.typeRef("Query")) + .build(); + + GraphQLObjectType query = GraphQLObjectType.newObject() + .name("Query") + .field(selfField) + .build(); + + FieldCoordinates selfCoordinates = FieldCoordinates.coordinates("Query", "self"); + DataFetcher>> slowFetcher = environment -> + supplyAsyncWithSleep(HashMap::new); + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(selfCoordinates, slowFetcher) + .build(); + + return GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(query) + .build(); + } + + public String buildQuery(Integer depth) { + StringBuilder sb = new StringBuilder(); + sb.append("query {"); + for (Integer i = 0; i < depth; i++) { + sb.append("self {"); + } + sb.append("__typename"); + for (Integer i = 0; i < depth; i++) { + sb.append("}"); + } + sb.append("}"); + + return sb.toString(); + } + + public HashMap buildResponse(Integer depth) { + HashMap level = new HashMap<>(); + if (depth == 0) { + level.put("__typename", "Query"); + } else { + level.put("self", buildResponse(depth - 1)); + } + return level; + } +} diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DeferWithDataLoaderTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DeferWithDataLoaderTest.groovy new file mode 100644 index 0000000000..0fe86e3fba --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DeferWithDataLoaderTest.groovy @@ -0,0 +1,526 @@ +package graphql.execution.instrumentation.dataloader + +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.ExperimentalApi +import graphql.GraphQL +import graphql.TestUtil +import graphql.incremental.IncrementalExecutionResult +import graphql.schema.DataFetcher +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry +import spock.lang.RepeatUntilFailure +import spock.lang.Specification +import spock.lang.Unroll + +import java.util.concurrent.CompletableFuture + +import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.combineExecutionResults +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedData +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedExpensiveData +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveQuery +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getIncrementalResults +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getQuery + +class DeferWithDataLoaderTest extends Specification { + + GraphQL graphQL + DataLoaderRegistry dataLoaderRegistry + BatchCompareDataFetchers batchCompareDataFetchers + + + void setup() { + batchCompareDataFetchers = new BatchCompareDataFetchers() + DataLoaderPerformanceData dataLoaderPerformanceData = new DataLoaderPerformanceData(batchCompareDataFetchers) + + dataLoaderRegistry = dataLoaderPerformanceData.setupDataLoaderRegistry() + graphQL = dataLoaderPerformanceData.setupGraphQL() + } + + /** + * @param results a list of the incremental results from the execution + * @param expectedPaths a list of the expected paths in the incremental results. The order of the elements in the list is not important. + */ + private static void assertIncrementalResults(List> results, List> expectedPaths, List expectedData = null) { + assert results.size() == expectedPaths.size(), "Expected ${expectedPaths.size()} results, got ${results.size()}" + + assert results.dropRight(1).every { it.hasNext == true }, "Expected all but the last result to have hasNext=true" + assert results.last().hasNext == false, "Expected last result to have hasNext=false" + + assert results.every { it.incremental.size() == 1 }, "Expected every result to have exactly one incremental item" + + expectedPaths.eachWithIndex { path, index -> + def result = results.find { it.incremental[0].path == path } + assert result != null, "Expected path $path not found in $results" + if (expectedData != null) { + assert result.incremental[0].data == expectedData[index], "Expected data $expectedData[index] for path $path, got ${result.incremental[0].data}" + } + } + } + + @Unroll + def "query with single deferred field"() { + given: + def query = getQuery(true, false) + + def expectedInitialData = [ + data : [ + shops: [ + [id: "shop-1", name: "Shop 1"], + [id: "shop-2", name: "Shop 2"], + [id: "shop-3", name: "Shop 3"], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, [["shops", 0], ["shops", 1], ["shops", 2]]) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == expectedData + + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } + + @Unroll + def "multiple fields on same defer block"() { + given: + def query = """ + query { + shops { + id + ... @defer { + name + departments { + name + } + } + } + } + + """ + + def expectedInitialData = [ + data : [ + shops: [ + [id: "shop-1"], + [id: "shop-2"], + [id: "shop-3"], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, [["shops", 0], ["shops", 1], ["shops", 2]]) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == [ + shops: [ + [id : "shop-1", name: "Shop 1", + departments: [[name: "Department 1"], + [name: "Department 2"], + [name: "Department 3"] + ]], + [id : "shop-2", name: "Shop 2", + departments: [[name: "Department 4"], + [name: "Department 5"], + [name: "Department 6"] + ]], + [id : "shop-3", name: "Shop 3", + departments: [[name: "Department 7"], + [name: "Department 8"], + [name: "Department 9"]] + ]] + ] + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 0 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + + } + + @Unroll + def "query with nested deferred fields"() { + given: + def query = getQuery(true, true) + + def expectedInitialData = [ + data : [ + shops: [ + [id: "shop-1", name: "Shop 1"], + [id: "shop-2", name: "Shop 2"], + [id: "shop-3", name: "Shop 3"], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + + + ExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, + [ + ["shops", 0], ["shops", 1], ["shops", 2], + ["shops", 0, "departments", 0], ["shops", 1, "departments", 0], ["shops", 2, "departments", 0], + ["shops", 0, "departments", 1], ["shops", 1, "departments", 1], ["shops", 2, "departments", 1], + ["shops", 0, "departments", 2], ["shops", 1, "departments", 2], ["shops", 2, "departments", 2], + ] + ) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == expectedData + + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 9 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + + } + + @Unroll + def "query with top-level deferred field"() { + given: + def query = """ + query { + shops { + departments { + name + } + } + ... @defer { + expensiveShops { + name + } + } + } +""" + + def expectedInitialData = [ + data : [ + shops: [[departments: [[name: "Department 1"], [name: "Department 2"], [name: "Department 3"]]], + [departments: [[name: "Department 4"], [name: "Department 5"], [name: "Department 6"]]], + [departments: [[name: "Department 7"], [name: "Department 8"], [name: "Department 9"]]], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, + [ + [] + ] + ) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == [shops : [[departments: [[name: "Department 1"], [name: "Department 2"], [name: "Department 3"]]], + [departments: [[name: "Department 4"], [name: "Department 5"], [name: "Department 6"]]], + [departments: [[name: "Department 7"], [name: "Department 8"], [name: "Department 9"]]]], + expensiveShops: [[name: "ExShop 1"], [name: "ExShop 2"], [name: "ExShop 3"]]] + + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 0 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + + } + + @Unroll + @RepeatUntilFailure(maxAttempts = 5, ignoreRest = false) + def "query with multiple deferred fields"() { + given: + def query = getExpensiveQuery(true) + + def expectedInitialData = + [data : [shops : [[name : "Shop 1", + departments: [[name: "Department 1", products: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]]]]], + [name : "Shop 2", + departments: [[name: "Department 4", products: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]]]]], + [name : "Shop 3", + departments: [[name: "Department 7", products: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]]]]]], + expensiveShops: [[name : "ExShop 1", + departments: [[name: "Department 1", products: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]]]]], + [name : "ExShop 2", + departments: [[name: "Department 4", products: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]]]]], + [name : "ExShop 3", + departments: [[name: "Department 7", products: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]]]]]]], + hasNext: true] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + executionInput.getGraphQLContext().putAll(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, + [ + ["expensiveShops", 0], ["expensiveShops", 1], ["expensiveShops", 2], + ["shops", 0], ["shops", 1], ["shops", 2], + ["shops", 0, "departments", 0], ["shops", 0, "departments", 1], ["shops", 0, "departments", 2], ["shops", 1, "departments", 0], ["shops", 1, "departments", 1], ["shops", 1, "departments", 2], ["shops", 2, "departments", 0], ["shops", 2, "departments", 1], ["shops", 2, "departments", 2], + ["shops", 0, "expensiveDepartments", 0], ["shops", 0, "expensiveDepartments", 1], ["shops", 0, "expensiveDepartments", 2], ["shops", 1, "expensiveDepartments", 0], ["shops", 1, "expensiveDepartments", 1], ["shops", 1, "expensiveDepartments", 2], ["shops", 2, "expensiveDepartments", 0], ["shops", 2, "expensiveDepartments", 1], ["shops", 2, "expensiveDepartments", 2], + ["expensiveShops", 0, "expensiveDepartments", 0], ["expensiveShops", 0, "expensiveDepartments", 1], ["expensiveShops", 0, "expensiveDepartments", 2], ["expensiveShops", 1, "expensiveDepartments", 0], ["expensiveShops", 1, "expensiveDepartments", 1], ["expensiveShops", 1, "expensiveDepartments", 2], ["expensiveShops", 2, "expensiveDepartments", 0], ["expensiveShops", 2, "expensiveDepartments", 1], ["expensiveShops", 2, "expensiveDepartments", 2], + ["expensiveShops", 0, "departments", 0], ["expensiveShops", 0, "departments", 1], ["expensiveShops", 0, "departments", 2], ["expensiveShops", 1, "departments", 0], ["expensiveShops", 1, "departments", 1], ["expensiveShops", 1, "departments", 2], ["expensiveShops", 2, "departments", 0], ["expensiveShops", 2, "departments", 1], ["expensiveShops", 2, "departments", 2]] + ) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == expectedExpensiveData + + if (contextKey == ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING) { + // based on the timing of shops vs expensiveShops DF it could be one or two batch loader calls + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 || batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 2 + } else { + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 + + } + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + + } + + @Unroll + @RepeatUntilFailure(maxAttempts = 20, ignoreRest = false) + def "dataloader in initial result and chained dataloader inside nested defer block"() { + given: + def sdl = ''' + type Query { + pets: [Pet] + } + + type Pet { + name: String + owner: Owner + } + type Owner { + name: String + address: String + } + + ''' + + def query = ''' + query { + pets { + name + ... @defer { + owner { + name + ... @defer { + address + } + } + } + } + } + ''' + + BatchLoader petNameBatchLoader = { List keys -> + println "petNameBatchLoader called with $keys" + assert keys.size() == 3 + return CompletableFuture.completedFuture(["Pet 1", "Pet 2", "Pet 3"]) + } + BatchLoader addressBatchLoader = { List keys -> + println "addressBatchLoader called with $keys" + return CompletableFuture.completedFuture(keys.collect { it -> + if (it == "owner-1") { + return "Address 1" + } else if (it == "owner-2") { + return "Address 2" + } else if (it == "owner-3") { + return "Address 3" + } + }) + } + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + def petNameDL = DataLoaderFactory.newDataLoader("petName", petNameBatchLoader) + def addressDL = DataLoaderFactory.newDataLoader("address", addressBatchLoader) + dataLoaderRegistry.register("petName", petNameDL) + dataLoaderRegistry.register("address", addressDL) + + DataFetcher petsDF = { env -> + return [ + [id: "pet-1"], + [id: "pet-2"], + [id: "pet-3"] + ] + } + DataFetcher petNameDF = { env -> + env.getDataLoader("petName").load(env.getSource().id) + } + + DataFetcher petOwnerDF = { env -> + String id = env.getSource().id + if (id == "pet-1") { + return [id: "owner-1", name: "Owner 1"] + } else if (id == "pet-2") { + return [id: "owner-2", name: "Owner 2"] + } else if (id == "pet-3") { + return [id: "owner-3", name: "Owner 3"] + } + } + DataFetcher ownerAddressDF = { env -> + return CompletableFuture.supplyAsync { + Thread.sleep(500) + return "foo" + }.thenCompose { + return env.getDataLoader("address").load(env.getSource().id) + } + .thenCompose { + return env.getDataLoader("address").load(env.getSource().id) + } + } + + def schema = TestUtil.schema(sdl, [Query: [pets: petsDF], + Pet : [name: petNameDF, owner: petOwnerDF], + Owner: [address: ownerAddressDF]]) + def graphQL = GraphQL.newGraphQL(schema).build() + def ei = ExecutionInput.newExecutionInput(query).dataLoaderRegistry(dataLoaderRegistry).build() + ei.getGraphQLContext().put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, true) + dataLoaderChainingOrExhaustedDispatching ? ei.getGraphQLContext().put(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, true) : ei.getGraphQLContext().put(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, true) + + when: + CompletableFuture erCF = graphQL.executeAsync(ei) + Awaitility.await().until { erCF.isDone() } + def er = erCF.get() + + then: + er.toSpecification() == [data : [pets: [[name: "Pet 1"], [name: "Pet 2"], [name: "Pet 3"]]], + hasNext: true] + + when: + def incrementalResults = getIncrementalResults(er) + println "incrementalResults: $incrementalResults" + + then: + assertIncrementalResults(incrementalResults, + [ + ["pets", 0], ["pets", 1], ["pets", 2], + ["pets", 0, "owner"], ["pets", 1, "owner"], ["pets", 2, "owner"], + ], + [ + [owner: [name: "Owner 1"]], + [owner: [name: "Owner 2"]], + [owner: [name: "Owner 3"]], + [address: "Address 1"], + [address: "Address 2"], + [address: "Address 3"] + ] + ) + + where: + dataLoaderChainingOrExhaustedDispatching << [true, false] + + } + +} diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy index 1c206692bc..dc0e1c422a 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy @@ -6,21 +6,27 @@ import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.StaticDataFetcher import graphql.schema.idl.RuntimeWiring +import org.awaitility.Awaitility import org.dataloader.BatchLoader -import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry +import spock.lang.RepeatUntilFailure import spock.lang.Specification +import spock.lang.Unroll import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.concurrent.Executors +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING +import static graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class Issue1178DataLoaderDispatchTest extends Specification { - public static final int NUM_OF_REPS = 100 + @Unroll + @RepeatUntilFailure(maxAttempts = 100, ignoreRest = false) def "shouldn't dispatch twice in multithreaded env"() { setup: def sdl = """ @@ -40,7 +46,7 @@ class Issue1178DataLoaderDispatchTest extends Specification { def executor = Executors.newFixedThreadPool(5) - def dataLoader = new DataLoader(new BatchLoader() { + def dataLoader = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage> load(List keys) { return CompletableFuture.supplyAsync({ @@ -48,7 +54,7 @@ class Issue1178DataLoaderDispatchTest extends Specification { }, executor) } }) - def dataLoader2 = new DataLoader(new BatchLoader() { + def dataLoader2 = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage> load(List keys) { return CompletableFuture.supplyAsync({ @@ -61,28 +67,27 @@ class Issue1178DataLoaderDispatchTest extends Specification { dataLoaderRegistry.register("todo.related", dataLoader) dataLoaderRegistry.register("todo.related2", dataLoader2) - def relatedDf = new MyDataFetcher(dataLoader) - def relatedDf2 = new MyDataFetcher(dataLoader2) + def relatedDf = new MyDataFetcher("todo.related") + def relatedDf2 = new MyDataFetcher("todo.related2") def wiring = RuntimeWiring.newRuntimeWiring() .type(newTypeWiring("Query") - .dataFetcher("getTodos", new StaticDataFetcher([[id: '1'], [id: '2'], [id: '3'], [id: '4'], [id: '5']]))) + .dataFetcher("getTodos", new StaticDataFetcher([[id: '1'], [id: '2'], [id: '3'], [id: '4'], [id: '5']]))) .type(newTypeWiring("Todo") - .dataFetcher("related", relatedDf) - .dataFetcher("related2", relatedDf2)) + .dataFetcher("related", relatedDf) + .dataFetcher("related2", relatedDf2)) .build() when: def graphql = TestUtil.graphQL(sdl, wiring) - .instrumentation(new DataLoaderDispatcherInstrumentation()) - .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() then: "execution shouldn't error" - for (int i = 0; i < NUM_OF_REPS; i++) { - def result = graphql.execute(ExecutionInput.newExecutionInput().dataLoaderRegistry(dataLoaderRegistry) - .query(""" + def ei = ExecutionInput.newExecutionInput() + .graphQLContext(contextKey == null ? Collections.emptyMap() : [(contextKey): true]) + .dataLoaderRegistry(dataLoaderRegistry) + .query(""" query { getTodos { __typename id related { id __typename @@ -114,23 +119,27 @@ class Issue1178DataLoaderDispatchTest extends Specification { } } } - }""").build()) - assert result.errors.empty - } + }""").build() + def resultCF = graphql.executeAsync(ei) + Awaitility.await().until { resultCF.isDone() } + assert resultCF.get().errors.empty + where: + contextKey << [ENABLE_DATA_LOADER_CHAINING, ENABLE_DATA_LOADER_EXHAUSTED_DISPATCHING, null] + } static class MyDataFetcher implements DataFetcher> { - private final DataLoader dataLoader + private final String name - MyDataFetcher(DataLoader dataLoader) { - this.dataLoader = dataLoader + MyDataFetcher(String name) { + this.name = name } @Override CompletableFuture get(DataFetchingEnvironment environment) { def todo = environment.source as Map - return dataLoader.load(todo['id']) + return environment.getDataLoader(name).load(todo['id']) } } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy index f58a4a9c9d..e38f6334b8 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy @@ -12,13 +12,13 @@ import graphql.schema.DataFetchingEnvironment import graphql.schema.idl.RuntimeWiring import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.stream.Collectors -import java.util.stream.IntStream import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring @@ -105,9 +105,9 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { @Override Object get(DataFetchingEnvironment environment) { Product source = environment.getSource() - DataLoaderRegistry dlRegistry = environment.getContext() - DataLoader personDL = dlRegistry.getDataLoader("person") - return personDL.load(source.getSuppliedById()) +// DataLoaderRegistry dlRegistry = environment.getGraphQlContext().get("registry") +// DataLoader personDL = dlRegistry.getDataLoader("person") + return environment.getDataLoader("person").load(source.getSuppliedById()) } } @@ -115,10 +115,10 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { @Override Object get(DataFetchingEnvironment environment) { Product source = environment.getSource() - DataLoaderRegistry dlRegistry = environment.getContext() - DataLoader personDL = dlRegistry.getDataLoader("person") +// DataLoaderRegistry dlRegistry = environment.getGraphQlContext().get("registry") +// DataLoader personDL = dlRegistry.getDataLoader("person") - return personDL.loadMany(source.getMadeByIds()) + return environment.getDataLoader("person").loadMany(source.getMadeByIds()) } } @@ -126,9 +126,9 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { @Override Object get(DataFetchingEnvironment environment) { Person source = environment.getSource() - DataLoaderRegistry dlRegistry = environment.getContext() - DataLoader companyDL = dlRegistry.getDataLoader("company") - return companyDL.load(source.getCompanyId()) +// DataLoaderRegistry dlRegistry = environment.getGraphQlContext().get("registry") +// DataLoader companyDL = dlRegistry.getDataLoader("company") + return environment.getDataLoader("company").load(source.getCompanyId()) } } @@ -169,8 +169,8 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { private DataLoaderRegistry buildRegistry() { - DataLoader personDataLoader = new DataLoader<>(personBatchLoader) - DataLoader companyDataLoader = new DataLoader<>(companyBatchLoader) + DataLoader personDataLoader = DataLoaderFactory.newDataLoader(personBatchLoader) + DataLoader companyDataLoader = DataLoaderFactory.newDataLoader(companyBatchLoader) DataLoaderRegistry registry = new DataLoaderRegistry() registry.register("person", personDataLoader) @@ -184,14 +184,14 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { GraphQL graphQL = GraphQL .newGraphQL(graphQLSchema) - .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() when: ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query(query) - .context(registry) + .graphQLContext(["registry": registry]) + .graphQLContext([(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING): enableDataLoaderChaining]) .dataLoaderRegistry(registry) .build() @@ -209,5 +209,8 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { companyBatchLoadInvocationCount == 1 + where: + enableDataLoaderChaining << [true, false] + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy index 3bc4848e98..25189732b4 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy @@ -10,6 +10,7 @@ import graphql.schema.idl.MapEnumValuesProvider import graphql.schema.idl.RuntimeWiring import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import java.util.concurrent.CompletableFuture @@ -42,6 +43,7 @@ class StarWarsDataLoaderWiring { BatchLoader characterBatchLoader = new BatchLoader() { @Override CompletionStage> load(List keys) { + println "loading characters via batch loader for keys: $keys" batchFunctionLoadCount++ // @@ -52,7 +54,9 @@ class StarWarsDataLoaderWiring { // // async supply of values CompletableFuture.supplyAsync({ - return getCharacterDataViaBatchHTTPApi(keys) + def result = getCharacterDataViaBatchHTTPApi(keys) + println "result " + result + " for keys: $keys" + return result }) } @@ -60,7 +64,7 @@ class StarWarsDataLoaderWiring { def newDataLoaderRegistry() { // a data loader for characters that points to the character batch loader - def characterDataLoader = new DataLoader(characterBatchLoader) + def characterDataLoader = DataLoaderFactory.newDataLoader(characterBatchLoader) new DataLoaderRegistry().register("character", characterDataLoader) } @@ -97,7 +101,16 @@ class StarWarsDataLoaderWiring { Object get(DataFetchingEnvironment environment) { List friendIds = environment.source.friends naiveLoadCount += friendIds.size() - return environment.getDataLoader("character").loadMany(friendIds) + + def many = environment.getDataLoader("character").loadMany(friendIds) + many.whenComplete { result, error -> + if (error != null) { + println "Error loading friends: $error" + } else { + println "Loaded friends: $result" + } + } + return many } } diff --git a/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy index b7add5b861..fc0ae070e6 100644 --- a/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy @@ -1,17 +1,19 @@ package graphql.execution.instrumentation.fieldvalidation +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL import graphql.GraphQLError +import graphql.Profiler import graphql.TestUtil import graphql.execution.AbortExecutionException import graphql.execution.AsyncExecutionStrategy import graphql.execution.Execution import graphql.execution.ExecutionId -import graphql.execution.ExecutionPath +import graphql.execution.ResultPath import graphql.execution.ValueUnboxer -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.ChainedInstrumentation import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -79,7 +81,7 @@ class FieldValidationTest extends Specification { def fieldArgumentsMap = validationEnvironment.getFieldsByPath() - FieldAndArguments field1Args = fieldArgumentsMap.get(ExecutionPath.parse("/field1"))[0] + FieldAndArguments field1Args = fieldArgumentsMap.get(ResultPath.parse("/field1"))[0] argValues = field1Args.getArgumentValuesByName() @@ -89,27 +91,27 @@ class FieldValidationTest extends Specification { assert !argValues.containsKey('intArg') - argValues = fieldArgumentsMap.get(ExecutionPath.parse("/field2"))[0] + argValues = fieldArgumentsMap.get(ResultPath.parse("/field2"))[0] .getArgumentValuesByName() assert argValues['stringArg'] == "stringValue" - argValues = fieldArgumentsMap.get(ExecutionPath.parse("/field3"))[0] + argValues = fieldArgumentsMap.get(ResultPath.parse("/field3"))[0] .getArgumentValuesByName() assert argValues['intArg'] == 666 - assert !fieldArgumentsMap.containsKey(ExecutionPath.parse("/noArgField")) + assert !fieldArgumentsMap.containsKey(ResultPath.parse("/noArgField")) argValues = fieldArgumentsMap.get( - ExecutionPath.parse("/field1/informationLink/informationString"))[0] + ResultPath.parse("/field1/informationLink/informationString"))[0] .getArgumentValuesByName() assert argValues['fmt1'] == "inlineFmt1" // inlined from query assert argValues['fmt2'] == "defaultFmt2" // defaulted from schema def linkLink = fieldArgumentsMap.get( - ExecutionPath.parse("/field1/informationLink/informationLink/informationString"))[0] + ResultPath.parse("/field1/informationLink/informationLink/informationString"))[0] argValues = linkLink .getArgumentValuesByName() @@ -153,12 +155,12 @@ class FieldValidationTest extends Specification { ] SimpleFieldValidation validation = new SimpleFieldValidation() - .addRule(ExecutionPath.parse("/field1"), - { fieldAndArguments, env -> err("Not happy Jan!", env, fieldAndArguments) }) - .addRule(ExecutionPath.parse("/field1/informationLink/informationLink/informationString"), - { fieldAndArguments, env -> err("Also not happy Jan!", env, fieldAndArguments) }) - .addRule(ExecutionPath.parse("/does/not/exist"), - { fieldAndArguments, env -> err("Wont happen", env, fieldAndArguments) }) + .addRule(ResultPath.parse("/field1"), + { fieldAndArguments, env -> err("Not happy Jan!", env, fieldAndArguments) }) + .addRule(ResultPath.parse("/field1/informationLink/informationLink/informationString"), + { fieldAndArguments, env -> err("Also not happy Jan!", env, fieldAndArguments) }) + .addRule(ResultPath.parse("/does/not/exist"), + { fieldAndArguments, env -> err("Wont happen", env, fieldAndArguments) }) when: @@ -202,16 +204,16 @@ class FieldValidationTest extends Specification { ''' SimpleFieldValidation validation = new SimpleFieldValidation() - .addRule(ExecutionPath.parse("/field1/informationString"), - { fieldAndArguments, env -> - def value = fieldAndArguments.getArgumentValue("fmt1") - if (value != "ok") { - return err("Nope : " + value, env, fieldAndArguments) - } else { - return Optional.empty() - } - } - ) + .addRule(ResultPath.parse("/field1/informationString"), + { fieldAndArguments, env -> + def value = fieldAndArguments.getArgumentValue("fmt1") + if (value != "ok") { + return err("Nope : " + value, env, fieldAndArguments) + } else { + return Optional.empty() + } + } + ) when: @@ -248,16 +250,16 @@ class FieldValidationTest extends Specification { ''' SimpleFieldValidation validation = new SimpleFieldValidation() - .addRule(ExecutionPath.parse("/field1/informationString"), - { fieldAndArguments, env -> - String value = fieldAndArguments.getArgumentValue("fmt1") - if (value.contains("alias")) { - return err("Nope : " + value, env, fieldAndArguments) - } else { - return Optional.empty() - } - } - ) + .addRule(ResultPath.parse("/field1/informationString"), + { fieldAndArguments, env -> + String value = fieldAndArguments.getArgumentValue("fmt1") + if (value.contains("alias")) { + return err("Nope : " + value, env, fieldAndArguments) + } else { + return Optional.empty() + } + } + ) when: @@ -305,10 +307,32 @@ class FieldValidationTest extends Specification { def document = TestUtil.parseQuery(query) def strategy = new AsyncExecutionStrategy() def instrumentation = new FieldValidationInstrumentation(validation) - def execution = new Execution(strategy, strategy, strategy, instrumentation, ValueUnboxer.DEFAULT) + def execution = new Execution(strategy, strategy, strategy, instrumentation, ValueUnboxer.DEFAULT, false) def executionInput = ExecutionInput.newExecutionInput().query(query).variables(variables).build() - execution.execute(document, schema, ExecutionId.generate(), executionInput, SimpleInstrumentation.INSTANCE.createState()) + execution.execute(document, schema, ExecutionId.generate(), executionInput, null, new EngineRunningState(executionInput, Profiler.NO_OP), Profiler.NO_OP) + } + + def "test graphql from end to end with chained instrumentation"() { + def fieldValidation = new FieldValidation() { + @Override + List validateFields(final FieldValidationEnvironment validationEnvironment) { + return new ArrayList(); + } + } + def instrumentations = [new FieldValidationInstrumentation + (fieldValidation)] + def chainedInstrumentation = new ChainedInstrumentation(instrumentations); + def graphql = GraphQL + .newGraphQL(schema) + .instrumentation(chainedInstrumentation) + .build(); + + when: + def result = graphql.execute("{ field2 }") + + then: + result.getErrors().size() == 0 } } diff --git a/src/test/groovy/graphql/execution/nextgen/BatchedExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/nextgen/BatchedExecutionStrategyTest.groovy deleted file mode 100644 index 6ba86d013a..0000000000 --- a/src/test/groovy/graphql/execution/nextgen/BatchedExecutionStrategyTest.groovy +++ /dev/null @@ -1,396 +0,0 @@ -package graphql.execution.nextgen - - -import graphql.nextgen.GraphQL -import graphql.schema.DataFetcher -import spock.lang.Specification - -import static graphql.ExecutionInput.newExecutionInput -import static graphql.TestUtil.schema - -class BatchedExecutionStrategyTest extends Specification { - - def "test simple execution"() { - def fooData = [id: "fooId", bar: [id: "barId", name: "someBar"]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: Foo - } - type Foo { - id: ID - bar: Bar - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [foo: fooData] - } - - def "test execution with lists"() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], [id: "barId2", name: "someBar2"]]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [foo: fooData] - } - - def "test execution with null element "() { - def fooData = [[id: "fooId1", bar: null], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - - then: - result.getData() == [foo: fooData] - - } - - def "test execution with null element in list"() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [foo: fooData] - } - - def "test execution with null element in non null list"() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar!] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - def expectedFooData = [[id: "fooId1", bar: null], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [foo: expectedFooData] - } - - def "test execution with null element bubbling up because of non null "() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar!]! - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - def expectedFooData = [null, - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [foo: expectedFooData] - } - - def "test execution with null element bubbling up to top "() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo!]! - } - type Foo { - id: ID - bar: [Bar!]! - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == null - } - - def "test list"() { - def fooData = [[id: "fooId1"], [id: "fooId2"], [id: "fooId3"]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - } - """, dataFetchers) - - - def query = """ - {foo { - id - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [foo: fooData] - } - - def "test list in lists "() { - def catsBatchSize = 0 - def catsCallCount = 0 - def idsBatchSize = 0 - def idsCallCount = 0 - - def catsDataFetcher = { env -> - catsCallCount++ - catsBatchSize = env.getSource().size() - return [["cat1", "cat2"], null, ["cat3", "cat4", "cat5"]] - } as BatchedDataFetcher - - def idDataFetcher = { env -> - idsCallCount++ - idsBatchSize = env.getSource().size() - return ["catId1", "catId2", "catId3", "catId4", "catId5"] - } as BatchedDataFetcher - - def friendsData = ["friend1", "friend2", "friend3"] - def dataFetchers = [ - Query : [friends: { env -> friendsData } as DataFetcher], - Person: [cats: catsDataFetcher], - Cat : [id: idDataFetcher] - ] - def schema = schema(""" - type Query { - friends: [Person] - } - type Person { - cats: [Cat] - } - type Cat { - id: ID - } - """, dataFetchers) - - - def query = """ - {friends { - cats { - id - } - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - then: - result.getData() == [friends: [[cats: [[id: "catId1"], [id: "catId2"]]], [cats: null], [cats: [[id: "catId3"], [id: "catId4"], [id: "catId5"]]]]] - catsCallCount == 1 - idsCallCount == 1 - catsBatchSize == 3 - idsBatchSize == 5 - } - - def "test simple batching with null value in list"() { - def fooData = [[id: "fooId1"], null, [id: "fooId3"]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - } - """, dataFetchers) - - - def query = """ - {foo { - id - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new BatchedExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput(query)) - - then: - result.getData() == [foo: fooData] - } -} - diff --git a/src/test/groovy/graphql/execution/nextgen/DefaultExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/nextgen/DefaultExecutionStrategyTest.groovy deleted file mode 100644 index 24bd070530..0000000000 --- a/src/test/groovy/graphql/execution/nextgen/DefaultExecutionStrategyTest.groovy +++ /dev/null @@ -1,549 +0,0 @@ -package graphql.execution.nextgen - -import graphql.ExceptionWhileDataFetching -import graphql.nextgen.GraphQL -import graphql.schema.DataFetcher -import graphql.schema.DataFetchingEnvironment -import spock.lang.Specification - -import java.util.concurrent.CompletableFuture - -import static graphql.ExecutionInput.newExecutionInput -import static graphql.TestUtil.schema -import static graphql.execution.DataFetcherResult.newResult - -class DefaultExecutionStrategyTest extends Specification { - - def "test simple execution with one scalar field"() { - def fooData = "hello" - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: String - } - """, dataFetchers) - - - def query = """ - {foo} - """ - - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - - } - - def "test simple execution"() { - def fooData = [id: "fooId", bar: [id: "barId", name: "someBar"]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: Foo - } - type Foo { - id: ID - bar: Bar - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - - } - - @SuppressWarnings("GroovyAssignabilityCheck") - def "fields are resolved in depth in parallel"() { - - List cfs = [] - - def fooResolver = { env -> - println env.getField() - def result = new CompletableFuture() - cfs << result - result - } as DataFetcher - def idResolver1 = Mock(DataFetcher) - def idResolver2 = Mock(DataFetcher) - def idResolver3 = Mock(DataFetcher) - def dataFetchers = [ - Query: [foo: fooResolver], - Foo : [id1: idResolver1, id2: idResolver2, id3: idResolver3] - ] - def schema = schema(""" - type Query { - foo: Foo - } - type Foo { - id1: ID - id2: ID - id3: ID - } - """, dataFetchers) - - - def query = """ - { - f1: foo { id1 } - f2: foo { id2 } - f3: foo { id3 } - } - """ - - def cfId1 = new CompletableFuture() - def cfId2 = new CompletableFuture() - def cfId3 = new CompletableFuture() - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - // - // I think this is a dangerous test - It dispatches the query but never joins on the result - // so its expecting the DFs to be called by never resolved properly. ?? - graphQL.executeAsync(newExecutionInput().query(query)) - - then: - cfs.size() == 3 - 0 * idResolver1.get(_) - 0 * idResolver1.get(_) - 0 * idResolver1.get(_) - - when: - cfs[1].complete(new Object()) - then: - 0 * idResolver1.get(_) - 1 * idResolver2.get(_) >> cfId2 - 0 * idResolver3.get(_) - - when: - cfs[2].complete(new Object()) - then: - 0 * idResolver1.get(_) - 0 * idResolver2.get(_) - 1 * idResolver3.get(_) >> cfId3 - - - when: - cfs[0].complete(new Object()) - then: - 1 * idResolver1.get(_) >> cfId1 - 0 * idResolver2.get(_) - 0 * idResolver3.get(_) - - } - - def "test execution with lists"() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], [id: "barId2", name: "someBar2"]]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - } - - def "test execution with null element "() { - def fooData = [[id: "fooId1", bar: null], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - - } - - def "test execution with null element in list"() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - - } - - def "test execution with null element in non null list"() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar!] - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - def expectedFooData = [[id: "fooId1", bar: null], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - - - when: - def graphQL = GraphQL.newGraphQL(schema).executionStrategy(new DefaultExecutionStrategy()).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: expectedFooData] - - } - - def "test execution with null element bubbling up because of non null "() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - bar: [Bar!]! - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - def expectedFooData = [null, - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - - when: - def graphQL = GraphQL.newGraphQL(schema).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: expectedFooData] - } - - def "test execution with null element bubbling up to top "() { - def fooData = [[id: "fooId1", bar: [[id: "barId1", name: "someBar1"], null]], - [id: "fooId2", bar: [[id: "barId3", name: "someBar3"], [id: "barId4", name: "someBar4"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo!]! - } - type Foo { - id: ID - bar: [Bar!]! - } - type Bar { - id: ID - name: String - } - """, dataFetchers) - - - def query = """ - {foo { - id - bar { - id - name - } - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == null - result.getErrors().size() > 0 - } - - def "test list"() { - def fooData = [[id: "fooId1"], [id: "fooId2"], [id: "fooId3"]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - } - """, dataFetchers) - - - def query = """ - {foo { - id - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - } - - def "test list in lists "() { - def fooData = [[bar: [[id: "barId1"], [id: "barId2"]]], [bar: null], [bar: [[id: "barId3"], [id: "barId4"], [id: "barId5"]]]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - bar: [Bar] - } - type Bar { - id: ID - } - """, dataFetchers) - - - def query = """ - {foo { - bar { - id - } - }} - """ - when: - def graphQL = GraphQL.newGraphQL(schema).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - } - - def "test simple batching with null value in list"() { - def fooData = [[id: "fooId1"], null, [id: "fooId3"]] - def dataFetchers = [ - Query: [foo: { env -> fooData } as DataFetcher] - ] - def schema = schema(""" - type Query { - foo: [Foo] - } - type Foo { - id: ID - } - """, dataFetchers) - - - def query = """ - {foo { - id - }} - """ - - when: - def graphQL = GraphQL.newGraphQL(schema).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.getData() == [foo: fooData] - } - - - def "DataFetcherResult is respected with errors"() { - - def fooData = [[id: "fooId1"], null, [id: "fooId3"]] - def dataFetchers = [ - Query: [ - foo: { env -> - newResult().data(fooData) - .error(mkError(env)) - .build() - } as DataFetcher], - Foo : [ - id: { env -> - def id = env.source[env.getField().getName()] - newResult().data(id) - .error(mkError(env)) - .build() - } as DataFetcher - ] - ] - def schema = schema(''' - type Query { - foo: [Foo] - } - type Foo { - id: ID - } - ''', dataFetchers) - - - def query = ''' - { - foo { - id - } - } - ''' - - when: - def graphQL = GraphQL.newGraphQL(schema).build() - def result = graphQL.execute(newExecutionInput().query(query)) - - then: - result.errors.size() == 3 - result.data == [foo: fooData] - } - - private static ExceptionWhileDataFetching mkError(DataFetchingEnvironment env) { - def rte = new RuntimeException("Bang on " + env.getField().getName()) - new ExceptionWhileDataFetching(env.executionStepInfo.getPath(), rte, env.getField().sourceLocation) - } -} diff --git a/src/test/groovy/graphql/execution/nextgen/result/ExecutionResultNodeTest.groovy b/src/test/groovy/graphql/execution/nextgen/result/ExecutionResultNodeTest.groovy deleted file mode 100644 index a2ad92b1a2..0000000000 --- a/src/test/groovy/graphql/execution/nextgen/result/ExecutionResultNodeTest.groovy +++ /dev/null @@ -1,90 +0,0 @@ -package graphql.execution.nextgen.result - -import graphql.Scalars -import spock.lang.Shared -import spock.lang.Specification -import spock.lang.Unroll - -import static graphql.GraphqlErrorBuilder.newError -import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo - -class ExecutionResultNodeTest extends Specification { - - @Shared - def startingErrors = [newError().message("Starting").build()] - - @Shared - def startingExecutionStepInfo = newExecutionStepInfo().type(Scalars.GraphQLString).build() - @Shared - def startingResolveValue = ResolvedValue.newResolvedValue().completedValue("start").build(); - - @Shared - def startingChildren = [new LeafExecutionResultNode(startingExecutionStepInfo, startingResolveValue, null)] - - @Unroll - def "construction of objects with new errors works"() { - - given: - def expectedErrors = [newError().message("Expected").build()] - - expect: - ExecutionResultNode nodeUnderTest = node - def newNode = nodeUnderTest.withNewErrors(expectedErrors) - newNode != nodeUnderTest - newNode.getErrors() == expectedErrors - - where: - - node | _ - new RootExecutionResultNode([], startingErrors) | _ - new ObjectExecutionResultNode(startingExecutionStepInfo, startingResolveValue, startingChildren, startingErrors) | _ - new ListExecutionResultNode(startingExecutionStepInfo, startingResolveValue, startingChildren, startingErrors) | _ - new LeafExecutionResultNode(startingExecutionStepInfo, startingResolveValue, null, startingErrors) | _ - } - - @Unroll - def "construction of objects with new esi works"() { - - given: - def newEsi = newExecutionStepInfo().type(Scalars.GraphQLString).build() - - expect: - ExecutionResultNode nodeUnderTest = node - def newNode = nodeUnderTest.withNewExecutionStepInfo(newEsi) - newNode != nodeUnderTest - newNode.getExecutionStepInfo() == newEsi - - - where: - - node | _ - new ObjectExecutionResultNode(startingExecutionStepInfo, startingResolveValue, startingChildren, startingErrors) | _ - new ListExecutionResultNode(startingExecutionStepInfo, startingResolveValue, startingChildren, startingErrors) | _ - new LeafExecutionResultNode(startingExecutionStepInfo, startingResolveValue, null, startingErrors) | _ - } - - @Unroll - def "construction of objects with new children works"() { - - given: - def newChildren = [ - new LeafExecutionResultNode(startingExecutionStepInfo, startingResolveValue, null), - new LeafExecutionResultNode(startingExecutionStepInfo, startingResolveValue, null), - ] - - expect: - ExecutionResultNode nodeUnderTest = node - node.getChildren().size() == 1 - def newNode = nodeUnderTest.withNewChildren(newChildren) - newNode != nodeUnderTest - newNode.getChildren().size() == 2 - - - where: - - node | _ - new RootExecutionResultNode(startingChildren, startingErrors) | _ - new ObjectExecutionResultNode(startingExecutionStepInfo, startingResolveValue, startingChildren, startingErrors) | _ - new ListExecutionResultNode(startingExecutionStepInfo, startingResolveValue, startingChildren, startingErrors) | _ - } -} diff --git a/src/test/groovy/graphql/execution/nextgen/result/ExecutionResultNodeTestUtils.groovy b/src/test/groovy/graphql/execution/nextgen/result/ExecutionResultNodeTestUtils.groovy deleted file mode 100644 index 4aeac436dd..0000000000 --- a/src/test/groovy/graphql/execution/nextgen/result/ExecutionResultNodeTestUtils.groovy +++ /dev/null @@ -1,19 +0,0 @@ -package graphql.execution.nextgen.result - -import graphql.Scalars -import graphql.execution.ExecutionStepInfo - -import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo - -class ExecutionResultNodeTestUtils { - - - static ResolvedValue resolvedValue(Object value) { - return ResolvedValue.newResolvedValue().completedValue(value).build() - } - - static ExecutionStepInfo esi() { - return newExecutionStepInfo().type(Scalars.GraphQLString).build() - } - -} diff --git a/src/test/groovy/graphql/execution/nextgen/result/ResultNodeAdapterTest.groovy b/src/test/groovy/graphql/execution/nextgen/result/ResultNodeAdapterTest.groovy deleted file mode 100644 index bf0b3e3a1a..0000000000 --- a/src/test/groovy/graphql/execution/nextgen/result/ResultNodeAdapterTest.groovy +++ /dev/null @@ -1,36 +0,0 @@ -package graphql.execution.nextgen.result - -import graphql.AssertException -import graphql.util.NodeLocation -import spock.lang.Specification - -import static graphql.execution.nextgen.result.ExecutionResultNodeTestUtils.esi -import static graphql.execution.nextgen.result.ExecutionResultNodeTestUtils.resolvedValue - -class ResultNodeAdapterTest extends Specification { - - def parentNode = new ObjectExecutionResultNode(null, null, [ - new LeafExecutionResultNode(esi(), resolvedValue("v1"), null), - new LeafExecutionResultNode(esi(), resolvedValue("v2"), null), - new LeafExecutionResultNode(esi(), resolvedValue("v3"), null), - ]) - - def "can remove a child from a node"() { - when: - ResultNodeAdapter.RESULT_NODE_ADAPTER.removeChild(parentNode, new NodeLocation(null, -1)) - then: - thrown(AssertException) - - when: - ResultNodeAdapter.RESULT_NODE_ADAPTER.removeChild(parentNode, new NodeLocation(null, -3)) - then: - thrown(AssertException) - - when: - def newNode = ResultNodeAdapter.RESULT_NODE_ADAPTER.removeChild(parentNode, new NodeLocation(null, 1)) - then: - newNode.children.size() == 2 - newNode.children[0].getResolvedValue().getCompletedValue() == "v1" - newNode.children[1].getResolvedValue().getCompletedValue() == "v3" - } -} diff --git a/src/test/groovy/graphql/execution/nextgen/result/ResultNodesUtilTest.groovy b/src/test/groovy/graphql/execution/nextgen/result/ResultNodesUtilTest.groovy deleted file mode 100644 index db8668d20a..0000000000 --- a/src/test/groovy/graphql/execution/nextgen/result/ResultNodesUtilTest.groovy +++ /dev/null @@ -1,33 +0,0 @@ -package graphql.execution.nextgen.result - -import graphql.SerializationError -import graphql.execution.ExecutionPath -import graphql.execution.ExecutionStepInfo -import graphql.execution.MergedField -import graphql.schema.CoercingSerializeException -import spock.lang.Specification - -class ResultNodesUtilTest extends Specification { - - def "convert errors for null values"() { - given: - def error = new SerializationError(ExecutionPath.rootPath(), new CoercingSerializeException()) - ExecutionStepInfo executionStepInfo = Mock(ExecutionStepInfo) - MergedField mergedField = Mock(MergedField) - mergedField.getResultKey() >> "foo" - executionStepInfo.getField() >> mergedField - ResolvedValue resolvedValue = ResolvedValue.newResolvedValue() - .completedValue(null) - .nullValue(true) - .errors([error]) - .build() - - LeafExecutionResultNode leafExecutionResultNode = new LeafExecutionResultNode(executionStepInfo, resolvedValue, null) - ExecutionResultNode executionResultNode = new RootExecutionResultNode([leafExecutionResultNode]) - - when: - def executionResult = ResultNodesUtil.toExecutionResult(executionResultNode) - then: - executionResult.errors.size() == 1 - } -} diff --git a/src/test/groovy/graphql/execution/preparsed/NoOpPreparsedDocumentProviderTest.groovy b/src/test/groovy/graphql/execution/preparsed/NoOpPreparsedDocumentProviderTest.groovy index d0c38760e1..1926f0ff77 100644 --- a/src/test/groovy/graphql/execution/preparsed/NoOpPreparsedDocumentProviderTest.groovy +++ b/src/test/groovy/graphql/execution/preparsed/NoOpPreparsedDocumentProviderTest.groovy @@ -13,10 +13,10 @@ class NoOpPreparsedDocumentProviderTest extends Specification { def documentEntry = new PreparsedDocumentEntry(Document.newDocument().build()) when: - def actual = provider.getDocument(newExecutionInput("{}").build(), { return documentEntry }) + def actual = provider.getDocumentAsync(newExecutionInput("{}").build(), { return documentEntry }) then: - actual == documentEntry + actual.join() == documentEntry } } diff --git a/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentEntryTest.groovy b/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentEntryTest.groovy index d0484b83fe..4cfa7d0e15 100644 --- a/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentEntryTest.groovy +++ b/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentEntryTest.groovy @@ -33,7 +33,7 @@ class PreparsedDocumentEntryTest extends Specification { def "Ensure a non-null errors returns"() { given: def errors = [new InvalidSyntaxError(new SourceLocation(0, 0), "bang"), - new ValidationError(ValidationErrorType.InvalidSyntax)] + ValidationError.newValidationError().validationErrorType(ValidationErrorType.InvalidSyntax).build()] when: def docEntry = new PreparsedDocumentEntry(errors) @@ -43,6 +43,26 @@ class PreparsedDocumentEntryTest extends Specification { docEntry.errors == errors } + def "Ensure a non-null error returns"() { + given: + def error = new InvalidSyntaxError(new SourceLocation(0, 0), "bang") + + when: + def docEntry = new PreparsedDocumentEntry(error) + + then: + docEntry.document == null + docEntry.errors == Collections.singletonList(error) + } + + def "Ensure a null error throws Exception"() { + when: + new PreparsedDocumentEntry((GraphQLError) null) + + then: + thrown(AssertException) + } + def "Ensure a null errors throws Exception"() { when: new PreparsedDocumentEntry((List) null) @@ -51,13 +71,38 @@ class PreparsedDocumentEntryTest extends Specification { thrown(AssertException) } - def "Ensure a null error throws Exception"() { + def "Ensure a null error and valid document throws Exception"() { + given: + def document = Document.newDocument().build() + when: - new PreparsedDocumentEntry((GraphQLError) null) + new PreparsedDocumentEntry(document, (List) null) + + then: + thrown(AssertException) + } + + def "Ensure a non-null error and null document throws Exception"() { + given: + def error = new InvalidSyntaxError(new SourceLocation(0, 0), "bang") + + when: + new PreparsedDocumentEntry(null, [error]) then: thrown(AssertException) } + def "Ensure a non-null error and non-null document returns"() { + given: + def error = new InvalidSyntaxError(new SourceLocation(0, 0), "bang") + def document = Document.newDocument().build() + when: + def docEntry = new PreparsedDocumentEntry(document, [error]) + + then: + docEntry.document == document + docEntry.errors.get(0) == error + } } diff --git a/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentProviderTest.groovy b/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentProviderTest.groovy index 0974567d43..fc1eb054f1 100644 --- a/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentProviderTest.groovy +++ b/src/test/groovy/graphql/execution/preparsed/PreparsedDocumentProviderTest.groovy @@ -6,14 +6,19 @@ import graphql.GraphQL import graphql.StarWarsSchema import graphql.execution.AsyncExecutionStrategy import graphql.execution.instrumentation.InstrumentationContext -import graphql.execution.instrumentation.SimpleInstrumentation -import graphql.execution.instrumentation.TestingInstrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.LegacyTestingInstrumentation +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.language.Document import spock.lang.Specification +import java.util.concurrent.CompletableFuture import java.util.function.Function +import static graphql.ExecutionInput.newExecutionInput +import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp + class PreparsedDocumentProviderTest extends Specification { def 'Preparse of simple serial execution'() { @@ -34,7 +39,7 @@ class PreparsedDocumentProviderTest extends Specification { "end:fetch-hero", "start:complete-hero", - "start:execution-strategy", + "start:execute-object", "start:field-id", "start:fetch-id", @@ -43,7 +48,7 @@ class PreparsedDocumentProviderTest extends Specification { "end:complete-id", "end:field-id", - "end:execution-strategy", + "end:execute-object", "end:complete-hero", "end:field-hero", @@ -75,7 +80,7 @@ class PreparsedDocumentProviderTest extends Specification { "end:fetch-hero", "start:complete-hero", - "start:execution-strategy", + "start:execute-object", "start:field-id", "start:fetch-id", @@ -84,7 +89,7 @@ class PreparsedDocumentProviderTest extends Specification { "end:complete-id", "end:field-id", - "end:execution-strategy", + "end:execute-object", "end:complete-hero", "end:field-hero", @@ -97,8 +102,8 @@ class PreparsedDocumentProviderTest extends Specification { when: - def instrumentation = new TestingInstrumentation() - def instrumentationPreparsed = new TestingInstrumentation() + def instrumentation = new LegacyTestingInstrumentation() + def instrumentationPreparsed = new LegacyTestingInstrumentation() def preparsedCache = new TestingPreparsedDocumentProvider() def strategy = new AsyncExecutionStrategy() @@ -107,14 +112,14 @@ class PreparsedDocumentProviderTest extends Specification { .instrumentation(instrumentation) .preparsedDocumentProvider(preparsedCache) .build() - .execute(ExecutionInput.newExecutionInput().query(query).build()).data + .execute(newExecutionInput().query(query).build()).data def data2 = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) .queryExecutionStrategy(strategy) .instrumentation(instrumentationPreparsed) .preparsedDocumentProvider(preparsedCache) .build() - .execute(ExecutionInput.newExecutionInput().query(query).build()).data + .execute(newExecutionInput().query(query).build()).data then: @@ -142,12 +147,12 @@ class PreparsedDocumentProviderTest extends Specification { def result1 = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) .preparsedDocumentProvider(preparsedCache) .build() - .execute(ExecutionInput.newExecutionInput().query(query).build()) + .execute(newExecutionInput().query(query).build()) def result2 = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) .preparsedDocumentProvider(preparsedCache) .build() - .execute(ExecutionInput.newExecutionInput().query(query).build()) + .execute(newExecutionInput().query(query).build()) then: "Both the first and the second result should give the same validation error" result1.errors.size() == 1 @@ -158,13 +163,13 @@ class PreparsedDocumentProviderTest extends Specification { result1.errors[0].errorType == result2.errors[0].errorType } - class InputCapturingInstrumentation extends SimpleInstrumentation { + class InputCapturingInstrumentation extends SimplePerformantInstrumentation { ExecutionInput capturedInput @Override - InstrumentationContext beginParse(InstrumentationExecutionParameters parameters) { + InstrumentationContext beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) { capturedInput = parameters.getExecutionInput() - return super.beginParse(parameters) + return noOp() } } @@ -188,13 +193,13 @@ class PreparsedDocumentProviderTest extends Specification { def documentProvider = new PreparsedDocumentProvider() { @Override - PreparsedDocumentEntry getDocument(ExecutionInput executionInput, Function computeFunction) { + CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { if (executionInput.getQuery() == "#A") { executionInput = executionInput.transform({ it.query(queryA) }) } else { executionInput = executionInput.transform({ it.query(queryB) }) } - return computeFunction.apply(executionInput) + return CompletableFuture.completedFuture(parseAndValidateFunction.apply(executionInput)) } } @@ -203,14 +208,14 @@ class PreparsedDocumentProviderTest extends Specification { .preparsedDocumentProvider(documentProvider) .instrumentation(instrumentationA) .build() - .execute(ExecutionInput.newExecutionInput().query("#A").build()) + .execute(newExecutionInput().query("#A").build()) def instrumentationB = new InputCapturingInstrumentation() def resultB = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) .preparsedDocumentProvider(documentProvider) .instrumentation(instrumentationB) .build() - .execute(ExecutionInput.newExecutionInput().query("#B").build()) + .execute(newExecutionInput().query("#B").build()) expect: diff --git a/src/test/groovy/graphql/execution/preparsed/TestingPreparsedDocumentProvider.groovy b/src/test/groovy/graphql/execution/preparsed/TestingPreparsedDocumentProvider.groovy index d7ed931e57..30ae3d4f63 100644 --- a/src/test/groovy/graphql/execution/preparsed/TestingPreparsedDocumentProvider.groovy +++ b/src/test/groovy/graphql/execution/preparsed/TestingPreparsedDocumentProvider.groovy @@ -2,6 +2,7 @@ package graphql.execution.preparsed import graphql.ExecutionInput +import java.util.concurrent.CompletableFuture import java.util.function.Function @@ -9,9 +10,9 @@ class TestingPreparsedDocumentProvider implements PreparsedDocumentProvider { private Map cache = new HashMap<>() @Override - PreparsedDocumentEntry getDocument(ExecutionInput executionInput, Function computeFunction) { - Function mapCompute = { key -> computeFunction.apply(executionInput) } - return cache.computeIfAbsent(executionInput.query, mapCompute) + CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { + Function mapCompute = { key -> parseAndValidateFunction.apply(executionInput) } + return CompletableFuture.completedFuture(cache.computeIfAbsent(executionInput.query, mapCompute)) } } diff --git a/src/test/groovy/graphql/execution/preparsed/persisted/ApolloPersistedQuerySupportTest.groovy b/src/test/groovy/graphql/execution/preparsed/persisted/ApolloPersistedQuerySupportTest.groovy new file mode 100644 index 0000000000..7b4a4cc168 --- /dev/null +++ b/src/test/groovy/graphql/execution/preparsed/persisted/ApolloPersistedQuerySupportTest.groovy @@ -0,0 +1,173 @@ +package graphql.execution.preparsed.persisted + +import graphql.ExecutionInput +import graphql.execution.preparsed.PreparsedDocumentEntry +import graphql.parser.Parser +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.function.Function + +import static graphql.execution.preparsed.persisted.PersistedQuerySupport.PERSISTED_QUERY_MARKER +import static graphql.language.AstPrinter.printAstCompact + +class ApolloPersistedQuerySupportTest extends Specification { + + def hashOne = "761cd68b4afb3a824091884dd6cb759b5d068102c293af5a0bc2023bbf8fdb9f" + def hashTwo = "6e0a57aac0c8280588155e6d93436ad313e4c441b4e356703bdc297e32123d8f" + + def knownQueries = [ + (hashOne): "query { oneTwoThree }", + (hashTwo): "query { fourFiveSix }", + badHash : "query { fourFiveSix }" + ] + + // this cache will do a lookup, make the call back on miss and otherwise return cached values. And it + // tracks call counts for assertions + class CacheImplementation implements PersistedQueryCache { + def map = [:] + def keyCount = [:] + def parseCount = [:] + + @Override + CompletableFuture getPersistedQueryDocumentAsync(Object persistedQueryId, ExecutionInput executionInput, PersistedQueryCacheMiss onCacheMiss) throws PersistedQueryNotFound { + keyCount.compute(persistedQueryId, { k, v -> v == null ? 1 : v + 1 }) + PreparsedDocumentEntry entry = map.get(persistedQueryId) as PreparsedDocumentEntry + if (entry != null) { + return CompletableFuture.completedFuture(entry) + } + parseCount.compute(persistedQueryId, { k, v -> v == null ? 1 : v + 1 }) + + def queryText = knownQueries.get(persistedQueryId) + // if its outside our know bounds then throw because we dont have one + if (queryText == null) { + throw new PersistedQueryNotFound(persistedQueryId) + } + def newDocEntry = onCacheMiss.apply(queryText) + map.put(persistedQueryId, newDocEntry) + return CompletableFuture.completedFuture(newDocEntry) + } + } + + + Function engineParser = { + ExecutionInput ei -> + def doc = new Parser().parseDocument(ei.getQuery()) + return new PreparsedDocumentEntry(doc) + } + + + def mkEI(String hash, String query) { + ExecutionInput.newExecutionInput().query(query).extensions([persistedQuery: [sha256Hash: hash]]).build() + } + + def "will call the callback on cache miss and then not after initial caching"() { + CacheImplementation persistedQueryCache = new CacheImplementation() + def apolloSupport = new ApolloPersistedQuerySupport(persistedQueryCache) + + when: + def ei = mkEI(hashOne, PERSISTED_QUERY_MARKER) + def documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + def doc = documentEntry.getDocument() + then: + printAstCompact(doc) == "{oneTwoThree}" + persistedQueryCache.keyCount[hashOne] == 1 + persistedQueryCache.parseCount[hashOne] == 1 + + when: + ei = mkEI(hashOne, PERSISTED_QUERY_MARKER) + documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + doc = documentEntry.getDocument() + + then: + printAstCompact(doc) == "{oneTwoThree}" + persistedQueryCache.keyCount[hashOne] == 2 + persistedQueryCache.parseCount[hashOne] == 1 // only compiled once cause we had it + } + + def "will act as a normal query if there and no hash id present"() { + + CacheImplementation persistedQueryCache = new CacheImplementation() + def apolloSupport = new ApolloPersistedQuerySupport(persistedQueryCache) + + when: + def ei = ExecutionInput.newExecutionInput("query { normal }").build() + def documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + def doc = documentEntry.getDocument() + then: + printAstCompact(doc) == "{normal}" + persistedQueryCache.keyCount.size() == 0 + persistedQueryCache.parseCount.size() == 0 + } + + def "will use query hash in preference to query text"() { + CacheImplementation persistedQueryCache = new CacheImplementation() + def apolloSupport = new ApolloPersistedQuerySupport(persistedQueryCache) + + when: + def ei = mkEI(hashOne, "{normal}") + def documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + def doc = documentEntry.getDocument() + then: + printAstCompact(doc) == "{oneTwoThree}" + persistedQueryCache.keyCount[hashOne] == 1 + persistedQueryCache.parseCount[hashOne] == 1 + + } + + def "will have error if we dont return any query text on cache miss"() { + CacheImplementation persistedQueryCache = new CacheImplementation() + + def apolloSupport = new ApolloPersistedQuerySupport(persistedQueryCache) + + when: + def ei = mkEI("nonExistedHash", PERSISTED_QUERY_MARKER) + def documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + then: + documentEntry.getDocument() == null + def gqlError = documentEntry.getErrors()[0] + gqlError.getMessage() == "PersistedQueryNotFound" + gqlError.getErrorType().toString() == "PersistedQueryNotFound" + gqlError.getExtensions()["persistedQueryId"] == "nonExistedHash" + } + + def "InMemoryPersistedQueryCache implementation works as expected with this class"() { + + InMemoryPersistedQueryCache persistedQueryCache = new InMemoryPersistedQueryCache(knownQueries) + def apolloSupport = new ApolloPersistedQuerySupport(persistedQueryCache) + + when: + def ei = mkEI(hashOne, PERSISTED_QUERY_MARKER) + def documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + def doc = documentEntry.getDocument() + then: + printAstCompact(doc) == "{oneTwoThree}" + + when: + ei = mkEI(hashTwo, PERSISTED_QUERY_MARKER) + documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + doc = documentEntry.getDocument() + then: + printAstCompact(doc) == "{fourFiveSix}" + + when: + ei = mkEI("nonExistent", PERSISTED_QUERY_MARKER) + documentEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + then: + documentEntry.hasErrors() + } + + def "will have error if the calculated sha hash of the query does not match the persistedQueryId"() { + def cache = new CacheImplementation() + def apolloSupport = new ApolloPersistedQuerySupport(cache) + when: + def ei = mkEI("badHash", PERSISTED_QUERY_MARKER) + def docEntry = apolloSupport.getDocumentAsync(ei, engineParser).join() + then: + docEntry.getDocument() == null + def error = docEntry.getErrors()[0] + error.message == "PersistedQueryIdInvalid" + error.errorType.toString() == "PersistedQueryIdInvalid" + error.getExtensions()["persistedQueryId"] == "badHash" + } +} diff --git a/src/test/groovy/graphql/execution/preparsed/persisted/InMemoryPersistedQueryCacheTest.groovy b/src/test/groovy/graphql/execution/preparsed/persisted/InMemoryPersistedQueryCacheTest.groovy new file mode 100644 index 0000000000..bffc4e7d9c --- /dev/null +++ b/src/test/groovy/graphql/execution/preparsed/persisted/InMemoryPersistedQueryCacheTest.groovy @@ -0,0 +1,58 @@ +package graphql.execution.preparsed.persisted + +import graphql.ExecutionInput +import graphql.execution.preparsed.PreparsedDocumentEntry +import graphql.parser.Parser +import spock.lang.Specification + +import static graphql.language.AstPrinter.printAstCompact + +class InMemoryPersistedQueryCacheTest extends Specification { + + def mkEI(String hash, String query) { + ExecutionInput.newExecutionInput().query(query).extensions([persistedQuery: [sha256Hash: hash, version: 1]]).build() + } + + PersistedQueryCacheMiss onMiss = { + String query -> + def doc = new Parser().parseDocument(query) + return new PreparsedDocumentEntry(doc) + } + + def "can be build as expected"() { + def inMemoryPersistedQueryCache = InMemoryPersistedQueryCache.newInMemoryPersistedQueryCache() + .addQuery("hash123", "query { oneTwoThree }") + .addQuery("hash456", "query { fourFiveSix }") + .build() + + when: + def knownQueries = inMemoryPersistedQueryCache.getKnownQueries() + then: + knownQueries == [hash123: "query { oneTwoThree }", hash456: "query { fourFiveSix }"] + } + + def "Uses the query from the execution input if the query ID wasn't in the cache"() { + def inMemCache = InMemoryPersistedQueryCache.newInMemoryPersistedQueryCache().build() + def hash = "thisisahash" + def ei = mkEI(hash, "query { oneTwoThreeFour }") + + when: + def getDoc = inMemCache.getPersistedQueryDocumentAsync(hash, ei, onMiss).join() + def doc = getDoc.document + then: + printAstCompact(doc) == "{oneTwoThreeFour}" + } + + def "When there's a cache miss, uses the query from known queries if the execution input's query is the APQ Marker"() { + def hash = "somehash" + def inMemCache = InMemoryPersistedQueryCache.newInMemoryPersistedQueryCache() + .addQuery(hash, "{foo bar baz}") + .build() + def ei = mkEI(hash, PersistedQuerySupport.PERSISTED_QUERY_MARKER) + when: + def getDoc = inMemCache.getPersistedQueryDocumentAsync(hash, ei, onMiss).join() + def doc = getDoc.document + then: + printAstCompact(doc) == "{foo bar baz}" + } +} diff --git a/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java b/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java index 97e7d48315..790bac22be 100644 --- a/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java +++ b/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java @@ -3,9 +3,11 @@ import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicLong; /** * A subscriber that captures each object for testing @@ -13,33 +15,53 @@ public class CapturingSubscriber implements Subscriber { private final List events = new ArrayList<>(); private final AtomicBoolean done = new AtomicBoolean(); + private final AtomicLong creationTime = new AtomicLong(System.nanoTime()); + private final int requestN; private Subscription subscription; private Throwable throwable; + public CapturingSubscriber() { + this(1); + } + + public CapturingSubscriber(int requestN) { + this.requestN = requestN; + } @Override public void onSubscribe(Subscription subscription) { + System.out.println("onSubscribe called at " + delta()); this.subscription = subscription; - subscription.request(1); + subscription.request(requestN); } @Override public void onNext(T t) { - events.add(t); - subscription.request(1); + System.out.println("\tonNext " + t + " called at " + delta()); + synchronized (this) { + events.add(t); + subscription.request(requestN); + } } @Override public void onError(Throwable t) { + System.out.println("onError called at " + delta()); this.throwable = t; done.set(true); } @Override public void onComplete() { + System.out.println("onComplete called at " + delta()); done.set(true); } + private String delta() { + Duration nanos = Duration.ofNanos(System.nanoTime() - creationTime.get()); + return "+" + nanos.toMillis() + "ms"; + } + public List getEvents() { return events; } @@ -51,4 +73,16 @@ public Throwable getThrowable() { public AtomicBoolean isDone() { return done; } + + public boolean isCompleted() { + return done.get() && throwable == null; + } + public boolean isCompletedExceptionally() { + return done.get() && throwable != null; + } + + public Subscription getSubscription() { + return subscription; + } + } diff --git a/src/test/groovy/graphql/execution/pubsub/CapturingSubscription.java b/src/test/groovy/graphql/execution/pubsub/CapturingSubscription.java new file mode 100644 index 0000000000..551a34a119 --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/CapturingSubscription.java @@ -0,0 +1,26 @@ +package graphql.execution.pubsub; + +import org.reactivestreams.Subscription; + +public class CapturingSubscription implements Subscription { + private long count = 0; + private boolean cancelled = false; + + public long getCount() { + return count; + } + + public boolean isCancelled() { + return cancelled; + } + + @Override + public void request(long l) { + count += l; + } + + @Override + public void cancel() { + cancelled = true; + } +} diff --git a/src/test/groovy/graphql/execution/pubsub/CommonMessagePublisher.java b/src/test/groovy/graphql/execution/pubsub/CommonMessagePublisher.java new file mode 100644 index 0000000000..b83ff45f24 --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/CommonMessagePublisher.java @@ -0,0 +1,44 @@ +package graphql.execution.pubsub; + +import org.reactivestreams.example.unicast.AsyncIterablePublisher; + +import java.util.Iterator; +import java.util.concurrent.ForkJoinPool; +import java.util.function.Function; + +class CommonMessagePublisher { + + protected final AsyncIterablePublisher iterablePublisher; + + protected CommonMessagePublisher(final int count) { + Iterable iterable = mkIterable(count, at -> { + Message message = new Message("sender" + at, "text" + at); + return examineMessage(message, at); + }); + iterablePublisher = new AsyncIterablePublisher<>(iterable, ForkJoinPool.commonPool()); + } + + @SuppressWarnings("unused") + protected Message examineMessage(Message message, Integer at) { + return message; + } + + private static Iterable mkIterable(int count, Function msgMaker) { + return () -> new Iterator<>() { + private int at = 0; + + @Override + public boolean hasNext() { + return at < count; + } + + @Override + public Message next() { + Message message = msgMaker.apply(at); + at++; + return message; + } + }; + } + +} diff --git a/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy b/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy new file mode 100644 index 0000000000..64cf0eab5f --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy @@ -0,0 +1,23 @@ +package graphql.execution.pubsub + +import reactor.core.publisher.Flux + +/** + * A flux that counts how many values it has given out + */ +class CountingFlux { + Flux flux + Integer count = 0 + + CountingFlux(List values) { + flux = Flux.generate({ -> 0 }, { Integer counter, sink -> + if (counter >= values.size()) { + sink.complete() + } else { + sink.next(values[counter]) + count++ + } + return counter + 1; + }) + } +} diff --git a/src/test/groovy/graphql/execution/pubsub/FlowMessagePublisher.java b/src/test/groovy/graphql/execution/pubsub/FlowMessagePublisher.java new file mode 100644 index 0000000000..1eb5649899 --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/FlowMessagePublisher.java @@ -0,0 +1,22 @@ +package graphql.execution.pubsub; + +import org.reactivestreams.FlowAdapters; + +import java.util.concurrent.Flow; + +/** + * This example publisher will create count "messages" and then terminate. It + * uses the reactive streams TCK as its implementation but presents itself + * as a {@link Flow.Publisher} + */ +public class FlowMessagePublisher extends CommonMessagePublisher implements Flow.Publisher { + + public FlowMessagePublisher(int count) { + super(count); + } + + @Override + public void subscribe(Flow.Subscriber s) { + iterablePublisher.subscribe(FlowAdapters.toSubscriber(s)); + } +} diff --git a/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsMessagePublisher.java b/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsMessagePublisher.java index 796aa22076..81e661188c 100644 --- a/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsMessagePublisher.java +++ b/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsMessagePublisher.java @@ -2,54 +2,20 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; -import org.reactivestreams.example.unicast.AsyncIterablePublisher; - -import java.util.Iterator; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; /** - * This example publisher will create count "messages" and then terminate. Its + * This example publisher will create count "messages" and then terminate. It * uses the reactive streams TCK as its implementation */ -public class ReactiveStreamsMessagePublisher implements Publisher { - - private final AsyncIterablePublisher iterablePublisher; +public class ReactiveStreamsMessagePublisher extends CommonMessagePublisher implements Publisher { public ReactiveStreamsMessagePublisher(final int count) { - Iterable iterable = mkIterable(count, at -> { - Message message = new Message("sender" + at, "text" + at); - return examineMessage(message, at); - }); - iterablePublisher = new AsyncIterablePublisher<>(iterable, ForkJoinPool.commonPool()); + super(count); } @Override public void subscribe(Subscriber s) { iterablePublisher.subscribe(s); } - - @SuppressWarnings("unused") - protected Message examineMessage(Message message, Integer at) { - return message; - } - - private static Iterable mkIterable(int count, Function msgMaker) { - return () -> new Iterator() { - private int at = 0; - - @Override - public boolean hasNext() { - return at < count; - } - - @Override - public Message next() { - Message message = msgMaker.apply(at); - at++; - return message; - } - }; - } - } + diff --git a/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsObjectPublisher.java b/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsObjectPublisher.java new file mode 100644 index 0000000000..ebe1074201 --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/ReactiveStreamsObjectPublisher.java @@ -0,0 +1,47 @@ +package graphql.execution.pubsub; + +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.reactivestreams.example.unicast.AsyncIterablePublisher; + +import java.util.Iterator; +import java.util.concurrent.ForkJoinPool; +import java.util.function.Function; + +/** + * This example publisher will create count "objects" and then terminate. Its + * uses the reactive streams TCK as its implementation + */ +public class ReactiveStreamsObjectPublisher implements Publisher { + + private final AsyncIterablePublisher iterablePublisher; + + public ReactiveStreamsObjectPublisher(final int count, Function objectMaker) { + Iterable iterable = mkIterable(count, objectMaker); + iterablePublisher = new AsyncIterablePublisher<>(iterable, ForkJoinPool.commonPool()); + } + + @Override + public void subscribe(Subscriber s) { + iterablePublisher.subscribe(s); + } + + private static Iterable mkIterable(int count, Function objectMaker) { + return () -> new Iterator() { + private int at = 0; + + @Override + public boolean hasNext() { + return at < count; + } + + @Override + public Object next() { + Object message = objectMaker.apply(at); + at++; + return message; + } + }; + } + +} diff --git a/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java b/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java index 7d0be05cb4..0c19e90fa2 100644 --- a/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java +++ b/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java @@ -4,6 +4,8 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; +import java.util.concurrent.atomic.AtomicInteger; + /** * This example publisher will create count "messages" and then terminate. Its * uses tRxJava Flowable as a backing publisher @@ -11,10 +13,18 @@ public class RxJavaMessagePublisher implements Publisher { private final Flowable flowable; + private final AtomicInteger counter = new AtomicInteger(); public RxJavaMessagePublisher(final int count) { flowable = Flowable.range(0, count) - .map(at -> examineMessage(new Message("sender" + at, "text" + at), at)); + .map(at -> { + counter.incrementAndGet(); + return examineMessage(new Message("sender" + at, "text" + at), at); + }); + } + + public int getCounter() { + return counter.get(); } @Override diff --git a/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy b/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy index cd2771b605..bc069bcf1e 100644 --- a/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy +++ b/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy @@ -2,6 +2,7 @@ package graphql.execution.reactive import graphql.execution.pubsub.CapturingSubscriber import io.reactivex.Flowable +import org.awaitility.Awaitility import org.reactivestreams.Publisher import spock.lang.Specification @@ -9,9 +10,13 @@ import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.function.Function +/** + * This contains tests for both CompletionStageMappingPublisher and CompletionStageMappingOrderedPublisher because + * they have so much common code + */ class CompletionStageMappingPublisherTest extends Specification { - def "basic mapping"() { + def "basic mapping of #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -22,7 +27,7 @@ class CompletionStageMappingPublisherTest extends Specification { return CompletableFuture.completedFuture(String.valueOf(integer)) } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -30,11 +35,15 @@ class CompletionStageMappingPublisherTest extends Specification { then: capturingSubscriber.events.size() == 10 - capturingSubscriber.events[0] instanceof String - capturingSubscriber.events[0] == "0" + capturingSubscriber.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } - def "multiple subscribers get there messages"() { + def "multiple subscribers get there messages for #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -45,7 +54,7 @@ class CompletionStageMappingPublisherTest extends Specification { return CompletableFuture.completedFuture(String.valueOf(integer)) } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber1 = new CapturingSubscriber<>() def capturingSubscriber2 = new CapturingSubscriber<>() @@ -55,10 +64,20 @@ class CompletionStageMappingPublisherTest extends Specification { then: capturingSubscriber1.events.size() == 10 + // order is kept + capturingSubscriber1.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + capturingSubscriber2.events.size() == 10 + // order is kept + capturingSubscriber2.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } - def "error handling"() { + def "error handling for #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -75,7 +94,7 @@ class CompletionStageMappingPublisherTest extends Specification { } } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -86,11 +105,16 @@ class CompletionStageMappingPublisherTest extends Specification { // // got this far and cancelled capturingSubscriber.events.size() == 5 + capturingSubscriber.events == ["0", "1", "2", "3", "4",] + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } - def "mapper exception causes onError"() { + def "mapper exception causes onError for #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -105,7 +129,7 @@ class CompletionStageMappingPublisherTest extends Specification { } } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers, mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -116,7 +140,51 @@ class CompletionStageMappingPublisherTest extends Specification { // // got this far and cancelled capturingSubscriber.events.size() == 5 + capturingSubscriber.events == ["0", "1", "2", "3", "4",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } + + } + + def "asynchronous mapping works with completion"() { + + when: + Publisher rxIntegers = Flowable.range(0, 10) + + Function> mapper = mapperThatDelaysFor(10) + Publisher rxStrings = creator.call(rxIntegers,mapper) + + def capturingSubscriber = new CapturingSubscriber<>() + rxStrings.subscribe(capturingSubscriber) + + then: + + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + capturingSubscriber.events.size() == 10 + capturingSubscriber.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } + } + + Function> mapperThatDelaysFor(int delay) { + def mapper = new Function>() { + @Override + CompletionStage apply(Integer integer) { + return CompletableFuture.supplyAsync({ + Thread.sleep(delay) + return String.valueOf(integer) + }) + } + } + mapper } } diff --git a/src/test/groovy/graphql/execution/reactive/CompletionStageOrderedSubscriberTest.groovy b/src/test/groovy/graphql/execution/reactive/CompletionStageOrderedSubscriberTest.groovy new file mode 100644 index 0000000000..3438a87d06 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/CompletionStageOrderedSubscriberTest.groovy @@ -0,0 +1,22 @@ +package graphql.execution.reactive + +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CapturingSubscription +import org.reactivestreams.Subscriber + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionStage +import java.util.function.Function + +class CompletionStageOrderedSubscriberTest extends CompletionStageSubscriberTest { + + @Override + protected Subscriber createSubscriber(Function> mapper, CapturingSubscriber capturingSubscriber) { + return new CompletionStageOrderedSubscriber(mapper, capturingSubscriber) + } + + @Override + protected ArrayList expectedOrderingOfAsyncCompletion() { + return ["0", "1", "2", "3"] + } +} diff --git a/src/test/groovy/graphql/execution/reactive/CompletionStageSubscriberTest.groovy b/src/test/groovy/graphql/execution/reactive/CompletionStageSubscriberTest.groovy new file mode 100644 index 0000000000..45d3d87830 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/CompletionStageSubscriberTest.groovy @@ -0,0 +1,226 @@ +package graphql.execution.reactive + +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CapturingSubscription +import org.reactivestreams.Subscriber +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionStage +import java.util.function.Function + +/** + * This can be used to test the CompletionStageSubscriber and CompletionStageOrderedSubscriber + * since they share so much common code. There are protected helpers to create the subscribers + * and set expectations + */ +class CompletionStageSubscriberTest extends Specification { + + protected Subscriber createSubscriber(Function> mapper, CapturingSubscriber capturingSubscriber) { + def completionStageSubscriber = new CompletionStageSubscriber(mapper, capturingSubscriber) + completionStageSubscriber + } + + protected ArrayList expectedOrderingOfAsyncCompletion() { + ["3", "2", "1", "0"] + } + + def "basic test of mapping"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + def mapper = new Function>() { + @Override + CompletionStage apply(Integer integer) { + return CompletableFuture.completedFuture(String.valueOf(integer)) + } + } + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0"] + + when: + completionStageSubscriber.onNext(1) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0", "1"] + + when: + completionStageSubscriber.onComplete() + + then: + !subscription.isCancelled() + capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0", "1"] + } + + def "can hold CFs that have not completed and does not emit them even when onComplete is called"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete(promises) + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onNext(1) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onComplete() + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + promises.forEach { it.run() } + + then: + !subscription.isCancelled() + capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0", "1"] + } + + def "can hold CFs that have not completed but finishes quickly when onError is called"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete(promises) + + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onNext(1) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onError(new RuntimeException("Bang")) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.isCompletedExceptionally() + // it immediately errored out + capturingSubscriber.getThrowable().getMessage() == "Bang" + capturingSubscriber.events == [] + + when: + // even if the promises later complete we are done + promises.forEach { it.run() } + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.isCompletedExceptionally() + capturingSubscriber.getThrowable().getMessage() == "Bang" + capturingSubscriber.events == [] + } + + def "if onError is called, then futures are cancelled"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete([], promises) + + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + completionStageSubscriber.onNext(1) + completionStageSubscriber.onNext(2) + completionStageSubscriber.onNext(3) + completionStageSubscriber.onError(new RuntimeException("Bang")) + + then: + !capturingSubscriber.isCompleted() + capturingSubscriber.isCompletedExceptionally() + capturingSubscriber.events == [] + + promises.size() == 4 + for (CompletableFuture cf : promises) { + assert cf.isCancelled(), "The CF was not cancelled?" + } + } + + + def "ordering test - depends on implementation"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete(promises) + + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + completionStageSubscriber.onNext(1) + completionStageSubscriber.onNext(2) + completionStageSubscriber.onNext(3) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onComplete() + promises.reverse().forEach { it.run() } + + then: + !subscription.isCancelled() + capturingSubscriber.isCompleted() + capturingSubscriber.events == expectedOrderingOfAsyncCompletion() + } + + + static Function> mapperThatDoesNotComplete(List runToComplete, List promises = []) { + def mapper = new Function>() { + @Override + CompletionStage apply(Integer integer) { + def cf = new CompletableFuture() + runToComplete.add({ cf.complete(String.valueOf(integer)) }) + promises.add(cf) + return cf + } + } + mapper + } + +} diff --git a/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy b/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy new file mode 100644 index 0000000000..145c6d4efe --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy @@ -0,0 +1,280 @@ +package graphql.execution.reactive + +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CountingFlux +import graphql.schema.DataFetcher +import org.awaitility.Awaitility +import reactor.adapter.JdkFlowAdapter +import reactor.core.publisher.Mono +import spock.lang.Specification + +import java.time.Duration +import java.util.concurrent.CancellationException +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionException +import java.util.concurrent.Flow + +class ReactiveSupportTest extends Specification { + + private static Flow.Publisher toFlow(Mono stringMono) { + return JdkFlowAdapter.publisherToFlowPublisher(stringMono) + } + + private static Mono delayedMono(String X, Integer millis) { + Mono.just(X).delayElement(Duration.ofMillis(millis)) + } + + def "will pass through non reactive things and leave them as is"() { + + when: + def val = ReactiveSupport.fetchedObject("X") + then: + val === "X" + + when: + def cf = CompletableFuture.completedFuture("X") + val = ReactiveSupport.fetchedObject(cf) + then: + val === cf + } + + def "can get a reactive or flow publisher and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == "X" + + where: + reactiveObject || _ + Mono.just("X") || _ + toFlow(Mono.just("X")) || _ + } + + def "can get a reactive or flow publisher that takes some time and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + !cf.isDone() + + cf.join() == "X" + + where: + reactiveObject || _ + delayedMono("X", 100) || _ + toFlow(delayedMono("X", 100)) || _ + } + + def "can get a reactive or flow publisher with an error and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + cf.isCompletedExceptionally() + cf.isDone() + + when: + cf.join() + + then: + def e = thrown(CompletionException.class) + e.cause.message == "Bang!" + + where: + reactiveObject || _ + Mono.error(new RuntimeException("Bang!")) || _ + toFlow(Mono.error(new RuntimeException("Bang!"))) || _ + } + + def "can get a empty reactive or flow publisher and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == null + + where: + reactiveObject || _ + Mono.empty() || _ + toFlow(Mono.empty()) || _ + } + + + def "can get a reactive or flow publisher but cancel it before a value turns up"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + !cf.isDone() + + when: + def cfCancelled = cf.cancel(true) + + then: + cfCancelled + cf.isCancelled() + cf.isCompletedExceptionally() + cf.isDone() + + when: + cf.join() + + then: + thrown(CancellationException.class) + + where: + reactiveObject || _ + delayedMono("X", 1000) || _ + toFlow(delayedMono("X", 1000)) || _ + + } + + + def "can get a reactive Flux and only take one value and make a CF from it"() { + + def xyzStrings = ["X", "Y", "Z"] + when: + def countingFlux = new CountingFlux(xyzStrings) + CompletableFuture cf = ReactiveSupport.fetchedObject(countingFlux.flux) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == "X" + countingFlux.count == 1 + + when: + def capturingSubscriber = new CapturingSubscriber<>() + countingFlux.flux.subscribe(capturingSubscriber) + + then: + // second subscriber + capturingSubscriber.events == ["X", "Y", "Z"] + countingFlux.count == 4 + } + + def "integration test showing reactive values in data fetchers as well as the ones we know and love"() { + def sdl = """ + type Query { + reactorField : String + flowField : String + cfField : String + materialisedField : String + } + """ + + // with some delay + def reactorDF = { env -> delayedMono("reactor", 100) } as DataFetcher + def flowDF = { env -> toFlow(delayedMono("flow", 50)) } as DataFetcher + + def cfDF = { env -> CompletableFuture.completedFuture("cf") } as DataFetcher + def materialisedDF = { env -> "materialised" } as DataFetcher + + def schema = TestUtil.schema(sdl, [Query: [ + reactorField : reactorDF, + flowField : flowDF, + cfField : cfDF, + materialisedField: materialisedDF, + ]]) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(""" + query q { + reactorField + flowField + cfField + materialisedField + } + """) + + then: + er.errors.isEmpty() + er.data == [ + reactorField : "reactor", + flowField : "flow", + cfField : "cf", + materialisedField: "materialised" + ] + } + + def "can be called back when there is a Publisher ends successfully or otherwise"() { + when: + def called = false + def throwable = null + + SingleSubscriberPublisher publisher = new SingleSubscriberPublisher<>() + def publisherFinishes = ReactiveSupport.whenPublisherFinishes(publisher, { t -> + throwable = t + called = true + }) + + + def capturingSubscriber = new CapturingSubscriber() + publisherFinishes.subscribe(capturingSubscriber) + + publisher.offer("a") + publisher.offer("b") + publisher.offer("c") + publisher.noMoreData() + + then: + + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + capturingSubscriber.events["a", "b", "c"] + + called + throwable == null + + when: "it has an error thrown" + + called = false + throwable = null + + publisher = new SingleSubscriberPublisher<>() + publisherFinishes = ReactiveSupport.whenPublisherFinishes(publisher, { t -> + throwable = t + called = true + }) + + + capturingSubscriber = new CapturingSubscriber() + publisherFinishes.subscribe(capturingSubscriber) + + publisher.offer("a") + publisher.offerError(new RuntimeException("BANG")) + + then: + + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + capturingSubscriber.events == ["a"] + + called + throwable.message == "BANG" + } +} diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java new file mode 100644 index 0000000000..19ebffc466 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java @@ -0,0 +1,70 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingOrderedPublisher; +import io.reactivex.Flowable; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete at different times + */ +@Test +public class CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(100).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = mapperFunc(); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = mapperFunc(); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + + public boolean skipStochasticTests() { + return true; + } + + @NonNull + private static Function> mapperFunc() { + return i -> CompletableFuture.supplyAsync(() -> { + int ms = rand(0, 5); + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return i + "!"; + }); + } + + static Random rn = new Random(); + + private static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min; + } + +} + diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherTckVerificationTest.java new file mode 100644 index 0000000000..b1b8689190 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherTckVerificationTest.java @@ -0,0 +1,51 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingOrderedPublisher; +import io.reactivex.Flowable; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.Executors; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete off thread + */ +@Test +public class CompletionStageMappingOrderedPublisherTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingOrderedPublisherTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(1000).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!", Executors.newSingleThreadExecutor()); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!", Executors.newSingleThreadExecutor()); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + + @Override + public boolean skipStochasticTests() { + return true; + } +} + diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java new file mode 100644 index 0000000000..889b18eeeb --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java @@ -0,0 +1,70 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingPublisher; +import io.reactivex.Flowable; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete at different times + */ +@Test +public class CompletionStageMappingPublisherRandomCompleteTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingPublisherRandomCompleteTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(100).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = mapperFunc(); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = mapperFunc(); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + + public boolean skipStochasticTests() { + return true; + } + + @NonNull + private static Function> mapperFunc() { + return i -> CompletableFuture.supplyAsync(() -> { + int ms = rand(0, 5); + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return i + "!"; + }); + } + + static Random rn = new Random(); + + private static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min; + } + +} + diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherTckVerificationTest.java new file mode 100644 index 0000000000..f68c7d3fab --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherTckVerificationTest.java @@ -0,0 +1,51 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingPublisher; +import io.reactivex.Flowable; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.Executors; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete off thread + */ +@Test +public class CompletionStageMappingPublisherTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingPublisherTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(1000).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!", Executors.newSingleThreadExecutor()); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!"); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + + @Override + public boolean skipStochasticTests() { + return true; + } +} + diff --git a/src/test/groovy/graphql/execution/reactive/SingleSubscriberPublisherTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/SingleSubscriberPublisherTckVerificationTest.java similarity index 92% rename from src/test/groovy/graphql/execution/reactive/SingleSubscriberPublisherTckVerificationTest.java rename to src/test/groovy/graphql/execution/reactive/tck/SingleSubscriberPublisherTckVerificationTest.java index 59d69e4162..472cbaa357 100644 --- a/src/test/groovy/graphql/execution/reactive/SingleSubscriberPublisherTckVerificationTest.java +++ b/src/test/groovy/graphql/execution/reactive/tck/SingleSubscriberPublisherTckVerificationTest.java @@ -1,5 +1,6 @@ -package graphql.execution.reactive; +package graphql.execution.reactive.tck; +import graphql.execution.reactive.SingleSubscriberPublisher; import org.reactivestreams.Publisher; import org.reactivestreams.tck.PublisherVerification; import org.reactivestreams.tck.TestEnvironment; diff --git a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy new file mode 100644 index 0000000000..f259714b82 --- /dev/null +++ b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy @@ -0,0 +1,137 @@ +package graphql.execution.values + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.GraphQLContext +import graphql.Scalars +import graphql.TestUtil +import graphql.execution.RawVariables +import graphql.execution.ValuesResolver +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.GraphQLInputType +import spock.lang.Specification + +import static graphql.language.TypeName.newTypeName +import static graphql.language.VariableDefinition.newVariableDefinition + +class InputInterceptorTest extends Specification { + + def sdl = """ + type Query { + f(inputArg : InputArg, intArg : Int, stringArg : String,booleanArg : Boolean) : String + } + + input InputArg { + intArg : Int + stringArg : String + booleanArg : Boolean + } + """ + + def schema = TestUtil.schema(sdl) + + InputInterceptor interceptor = new InputInterceptor() { + @Override + Object intercept(Object value, GraphQLInputType graphQLType, GraphQLContext graphqlContext, Locale locale) { + if (graphQLType == Scalars.GraphQLBoolean) { + return "truthy" == value ? false : value + } + if (graphQLType == Scalars.GraphQLString) { + return String.valueOf(value).reverse() + } + return value + } + } + + + def "the input interceptor can be called"() { + def inputArgDef = newVariableDefinition("inputArg", + newTypeName("InputArg").build()).build() + def booleanArgDef = newVariableDefinition("booleanArg", + newTypeName("Boolean").build()).build() + def stringArgDef = newVariableDefinition("stringArg", + newTypeName("String").build()).build() + + def graphQLContext = GraphQLContext.newContext() + .put(InputInterceptor.class, interceptor).build() + + when: + def coercedVariables = ValuesResolver.coerceVariableValues( + this.schema, + [inputArgDef, booleanArgDef, stringArgDef], + RawVariables.of([ + "booleanArg": "truthy", + "stringArg" : "sdrawkcab", + "inputArg" : [ + "stringArg": "sdrawkcab osla" + ] + ]), + graphQLContext, + Locale.CANADA + ) + + then: + coercedVariables.toMap() == [ + "booleanArg": false, + "stringArg" : "backwards", + "inputArg" : [ + "stringArg": "also backwards" + ] + ] + } + + def "integration test of interceptor being called"() { + DataFetcher df = { DataFetchingEnvironment env -> + return env.getArguments().entrySet() + .collect({ String.valueOf(it.key) + ":" + String.valueOf(it.value) }) + .join(" ") + } + def schema = TestUtil.schema(sdl, ["Query": ["f": df]]) + def graphQL = GraphQL.newGraphQL(schema).build() + def ei = ExecutionInput.newExecutionInput().query(''' + query q($booleanArg : Boolean, $stringArg : String) { + f(booleanArg : $booleanArg, stringArg : $stringArg) + } + ''') + .graphQLContext({ it.put(InputInterceptor.class, interceptor) }) + .variables( + "booleanArg": false, + "stringArg": "sdrawkcab" + + ) + .build() + + when: + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [f: "stringArg:backwards booleanArg:false"] + } + + + def "integration test showing the presence of an interceptor wont stop scalar coercing"() { + def schema = TestUtil.schema(sdl) + def graphQL = GraphQL.newGraphQL(schema).build() + def ei = ExecutionInput.newExecutionInput().query(''' + query q($booleanArg : Boolean, $stringArg : String) { + f(booleanArg : $booleanArg, stringArg : $stringArg) + } + ''') + .graphQLContext({ it.put(InputInterceptor.class, interceptor) }) + .variables( + "booleanArg": [not: "a boolean"], + "stringArg": "sdrawkcab" + + ) + .build() + + when: + def er = graphQL.execute(ei) + + then: + !er.errors.isEmpty() + er.errors[0].message == "Variable 'booleanArg' has an invalid value: Expected a Boolean input, but it was a 'LinkedHashMap'" + } +} diff --git a/src/test/groovy/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptorTest.groovy b/src/test/groovy/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptorTest.groovy new file mode 100644 index 0000000000..90a46bb1ed --- /dev/null +++ b/src/test/groovy/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptorTest.groovy @@ -0,0 +1,201 @@ +package graphql.execution.values.legacycoercing + +import graphql.GraphQLContext +import graphql.schema.GraphQLInputType +import spock.lang.Specification + +import java.util.function.BiConsumer + +import static graphql.Scalars.GraphQLBoolean +import static graphql.Scalars.GraphQLFloat +import static graphql.Scalars.GraphQLInt +import static graphql.Scalars.GraphQLString + +class LegacyCoercingInputInterceptorTest extends Specification { + + def "can detect legacy boolean values"() { + when: + def isLegacyValue = LegacyCoercingInputInterceptor.isLegacyValue(input, inputType) + then: + isLegacyValue == expected + + where: + input | inputType | expected + "true" | GraphQLBoolean | true + "false" | GraphQLBoolean | true + "TRUE" | GraphQLBoolean | true + "FALSE" | GraphQLBoolean | true + "junk" | GraphQLBoolean | true + // not acceptable to the old + true | GraphQLBoolean | false + false | GraphQLBoolean | false + ["rubbish"] | GraphQLBoolean | false + } + + def "can change legacy boolean values"() { + def interceptor = LegacyCoercingInputInterceptor.migratesValues() + when: + def value = interceptor.intercept(input, inputType, GraphQLContext.getDefault(), Locale.getDefault()) + then: + value == expected + + where: + input | inputType | expected + "true" | GraphQLBoolean | true + "false" | GraphQLBoolean | false + "TRUE" | GraphQLBoolean | true + "FALSE" | GraphQLBoolean | false + + // left alone + "junk" | GraphQLBoolean | "junk" + true | GraphQLBoolean | true + false | GraphQLBoolean | false + ["rubbish"] | GraphQLBoolean | ["rubbish"] + } + + def "can detect legacy float values"() { + when: + def isLegacyValue = LegacyCoercingInputInterceptor.isLegacyValue(input, inputType) + then: + isLegacyValue == expected + + where: + input | inputType | expected + "1.0" | GraphQLFloat | true + "1" | GraphQLFloat | true + "junk" | GraphQLFloat | true + // not acceptable to the old + 666.0F | GraphQLFloat | false + 666 | GraphQLFloat | false + ["rubbish"] | GraphQLFloat | false + } + + def "can change legacy float values"() { + def interceptor = LegacyCoercingInputInterceptor.migratesValues() + when: + def value = interceptor.intercept(input, inputType, GraphQLContext.getDefault(), Locale.getDefault()) + then: + value == expected + + where: + input | inputType | expected + "1.0" | GraphQLFloat | 1.0F + "1" | GraphQLFloat | 1.0F + + // left alone + "junk" | GraphQLFloat | "junk" + 666.0F | GraphQLFloat | 666.0F + 666 | GraphQLFloat | 666 + ["rubbish"] | GraphQLFloat | ["rubbish"] + } + + def "can detect legacy int values"() { + when: + def isLegacyValue = LegacyCoercingInputInterceptor.isLegacyValue(input, inputType) + then: + isLegacyValue == expected + + where: + input | inputType | expected + "1.0" | GraphQLInt | true + "1" | GraphQLInt | true + "junk" | GraphQLInt | true + // not acceptable to the old + 666.0F | GraphQLInt | false + 666 | GraphQLInt | false + ["rubbish"] | GraphQLInt | false + } + + def "can change legacy int values"() { + def interceptor = LegacyCoercingInputInterceptor.migratesValues() + when: + def value = interceptor.intercept(input, inputType, GraphQLContext.getDefault(), Locale.getDefault()) + then: + value == expected + + where: + input | inputType | expected + "1.0" | GraphQLInt | 1 + "1" | GraphQLInt | 1 + + // left alone + "junk" | GraphQLInt | "junk" + 666.0F | GraphQLInt | 666.0F + 666 | GraphQLInt | 666 + ["rubbish"] | GraphQLInt | ["rubbish"] + } + + def "can detect legacy String values"() { + when: + def isLegacyValue = LegacyCoercingInputInterceptor.isLegacyValue(input, inputType) + then: + isLegacyValue == expected + + where: + input | inputType | expected + 666.0F | GraphQLString | true + 666 | GraphQLString | true + ["rubbish"] | GraphQLString | true + + // strings that are strings dont need to change + "xyz" | GraphQLString | false + "abc" | GraphQLString | false + "junk" | GraphQLString | false + + } + + def "can change legacy String values"() { + def interceptor = LegacyCoercingInputInterceptor.migratesValues() + when: + def value = interceptor.intercept(input, inputType, GraphQLContext.getDefault(), Locale.getDefault()) + then: + value == expected + where: + // its just String.valueOf() + input | inputType | expected + "xyz" | GraphQLString | "xyz" + "abc" | GraphQLString | "abc" + "junk" | GraphQLString | "junk" + 666.0F | GraphQLString | "666.0" + 666 | GraphQLString | "666" + ["rubbish"] | GraphQLString | "[rubbish]" + } + + def "can observe values "() { + def lastValue = null + def lastType = null + + def callback = new BiConsumer() { + @Override + void accept(Object o, GraphQLInputType graphQLInputType) { + lastValue = o + lastType = graphQLInputType + } + } + def interceptor = LegacyCoercingInputInterceptor.observesValues(callback) + when: + lastValue = null + lastType = null + def value = interceptor.intercept(input, inputType, GraphQLContext.getDefault(), Locale.getDefault()) + + then: + // nothing changes - it observes only + value == input + lastValue == expectedLastValue + lastType == expectedLastType + + where: + input | inputType | expectedLastValue | expectedLastType + "true" | GraphQLBoolean | "true" | GraphQLBoolean + "1.0" | GraphQLFloat | "1.0" | GraphQLFloat + "1" | GraphQLInt | "1" | GraphQLInt + 1 | GraphQLString | 1 | GraphQLString + + // no observation if its not needed + true | GraphQLBoolean | null | null + 1.0F | GraphQLFloat | null | null + 1 | GraphQLInt | null | null + "x" | GraphQLString | null | null + + } +} diff --git a/src/test/groovy/graphql/extensions/DefaultExtensionsMergerTest.groovy b/src/test/groovy/graphql/extensions/DefaultExtensionsMergerTest.groovy new file mode 100644 index 0000000000..4714e4636a --- /dev/null +++ b/src/test/groovy/graphql/extensions/DefaultExtensionsMergerTest.groovy @@ -0,0 +1,79 @@ +package graphql.extensions + +import com.google.common.collect.ImmutableMap +import spock.lang.Specification + +class DefaultExtensionsMergerTest extends Specification { + + def merger = new DefaultExtensionsMerger() + + def "can merge maps"() { + + when: + def actual = merger.merge(leftMap, rightMap) + then: + actual == expected + where: + leftMap | rightMap | expected + [:] | [:] | ImmutableMap.of() + ImmutableMap.of() | ImmutableMap.of() | ImmutableMap.of() + // additive + [x: [firstName: "Brad"]] | [y: [lastName: "Baker"]] | [x: [firstName: "Brad"], y: [lastName: "Baker"]] + [x: "24", y: "25", z: "26"] | [a: "1", b: "2", c: "3"] | [x: "24", y: "25", z: "26", a: "1", b: "2", c: "3"] + // merge + [key1: [firstName: "Brad"]] | [key1: [lastName: "Baker"]] | [key1: [firstName: "Brad", lastName: "Baker"]] + + // merge with right extra key + [key1: [firstName: "Brad", middleName: "Leon"]] | [key1: [lastName: "Baker"], key2: [hobby: "graphql-java"]] | [key1: [firstName: "Brad", middleName: "Leon", lastName: "Baker"], key2: [hobby: "graphql-java"]] + + } + + def "can handle null entries"() { + + when: + def actual = merger.merge(leftMap, rightMap) + then: + actual == expected + where: + leftMap | rightMap | expected + // nulls + [x: [firstName: "Brad"]] | [y: [lastName: null]] | [x: [firstName: "Brad"], y: [lastName: null]] + } + + def "prefers the right on conflict"() { + + when: + def actual = merger.merge(leftMap, rightMap) + then: + actual == expected + where: + leftMap | rightMap | expected + [x: [firstName: "Brad"]] | [x: [firstName: "Donna"]] | [x: [firstName: "Donna"]] + [x: [firstName: "Brad"]] | [x: [firstName: "Donna", seenStarWars: true]] | [x: [firstName: "Donna", seenStarWars: true]] + [x: [firstName: "Brad", hates: "Python"]] | [x: [firstName: "Donna", seenStarWars: true]] | [x: [firstName: "Donna", hates: "Python", seenStarWars: true]] + + + // disparate types dont matter - it prefers the right + [x: [firstName: "Brad"]] | [x: [firstName: [salutation: "Queen", name: "Donna"]]] | [x: [firstName: [salutation: "Queen", name: "Donna"]]] + + } + + def "it appends to lists"() { + + when: + def actual = merger.merge(leftMap, rightMap) + then: + actual == expected + where: + leftMap | rightMap | expected + [x: [1, 2, 3, 4]] | [x: [5, 6, 7, 8]] | [x: [1, 2, 3, 4, 5, 6, 7, 8]] + // + // truly additive - no object equality + [x: [1, 2, 3]] | [x: [1, 2, 3]] | [x: [1, 2, 3, 1, 2, 3]] + [x: []] | [x: [1, 2, 3]] | [x: [1, 2, 3]] + [x: [null]] | [x: [1, 2, 3]] | [x: [null, 1, 2, 3]] + // + // prefers right if they are not both lists + [x: null] | [x: [1, 2, 3]] | [x: [1, 2, 3]] + } +} diff --git a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy new file mode 100644 index 0000000000..e08a09b777 --- /dev/null +++ b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy @@ -0,0 +1,281 @@ +package graphql.extensions + +import graphql.ExecutionResult +import graphql.TestUtil +import graphql.execution.DataFetcherResult +import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import graphql.schema.GraphQLTypeUtil +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.extensions.ExtensionsBuilder.newExtensionsBuilder +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring + +class ExtensionsBuilderTest extends Specification { + + + def "can merge changes with default behavior"() { + when: + def extensions = newExtensionsBuilder().addValue("x", "24") + .addValues([y: "25", z: "26"]) + .addValues([x: "overwrite"]) + .buildExtensions() + then: + extensions == [x: "overwrite", y: "25", z: "26"] + + when: + extensions = newExtensionsBuilder().addValue("x", "24") + .addValues([y: "25", z: "26"]) + .addValues([x: "overwrite"]) + .addValues([x: "overwrite2"]) + .addValues([x: "overwrite2"]) + .addValue("x", "overwrite3") + .addValue("z", "overwriteZ") + .addValues([a: "1"]) + .buildExtensions() + then: + extensions == [x: "overwrite3", y: "25", z: "overwriteZ", a: "1"] + } + + def "wont add empty changes"() { + def builder = newExtensionsBuilder() + when: + builder.addValues([:]) + + then: + builder.getChangeCount() == 0 + + when: + builder.addValues([:]) + + then: + builder.getChangeCount() == 0 + + when: + def extensions = builder.buildExtensions() + then: + extensions.isEmpty() + + } + + def "can handle no changes"() { + when: + def extensions = newExtensionsBuilder() + .buildExtensions() + then: + extensions == [:] + } + + def "can handle one changes"() { + when: + def extensions = newExtensionsBuilder() + .addValues([x: "24", y: "25"]) + .buildExtensions() + then: + extensions == [x: "24", y: "25"] + } + + def "can set extensions into an ER"() { + + + when: + def er = ExecutionResult.newExecutionResult().data(["x": "data"]).build() + def newER = newExtensionsBuilder().addValue("x", "24") + .addValues([y: "25", z: "26"]) + .addValues([x: "overwrite"]) + .setExtensions(er) + then: + newER.data == ["x": "data"] + newER.extensions == [x: "overwrite", y: "25", z: "26"] + + when: + er = ExecutionResult.newExecutionResult().data(["x": "data"]).extensions([a: "1"]).build() + newER = newExtensionsBuilder().addValue("x", "24") + .addValues([y: "25", z: "26"]) + .addValues([x: "overwrite"]) + .setExtensions(er) + then: + newER.data == ["x": "data"] + newER.extensions == [x: "overwrite", y: "25", z: "26"] // it overwrites - its a set! + + } + + def "can use a custom merger"() { + ExtensionsMerger merger = new ExtensionsMerger() { + @Override + Map merge(Map leftMap, Map rightMap) { + return rightMap + } + } + when: + def extensions = newExtensionsBuilder(merger) + .addValue("x", "24") + .addValues([y: "25", z: "26"]) + .addValues([x: "overwrite"]) + .addValues([the: "end"]).buildExtensions() + then: + extensions == [the: "end"] + } + + DataFetcher extensionDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment env) throws Exception { + ExtensionsBuilder extensionsBuilder = env.getGraphQlContext().get(ExtensionsBuilder.class) + def fieldMap = [:] + fieldMap.put(env.getFieldDefinition().name, GraphQLTypeUtil.simplePrint(env.getFieldDefinition().type)) + extensionsBuilder.addValues([common: fieldMap]) + extensionsBuilder.addValues(fieldMap) + return "ignored" + } + } + + + def "integration test that shows it working when they put in a builder"() { + def sdl = """ + type Query { + name : String! + street : String + id : ID! + } + """ + + def extensionsBuilder = newExtensionsBuilder() + extensionsBuilder.addValue("added", "explicitly") + + def ei = newExecutionInput("query q { name street id }") + .graphQLContext({ ctx -> + ctx.put(ExtensionsBuilder.class, extensionsBuilder) + }) + .build() + + + def graphQL = TestUtil.graphQL(sdl, newRuntimeWiring() + .type(newTypeWiring("Query").dataFetchers([ + name : extensionDF, + street: extensionDF, + id : extensionDF, + ]))) + .build() + + when: + def er = graphQL.execute(ei) + then: + er.errors.isEmpty() + er.extensions == [ + "added": "explicitly", + common : [ + name : "String!", + street: "String", + id : "ID!", + ], + // we break them out so we have common and not common entries + name : "String!", + street : "String", + id : "ID!", + ] + } + + + def "integration test that shows it working when they use DataFetcherResult and defaulted values"() { + def sdl = """ + type Query { + name : String! + street : String + id : ID! + } + """ + + DataFetcher dfrDF = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment env) throws Exception { + def fieldMap = [:] + fieldMap.put(env.getFieldDefinition().name, GraphQLTypeUtil.simplePrint(env.getFieldDefinition().type)) + return DataFetcherResult.newResult().data("ignored").extensions(fieldMap).build() + } + } + + def graphQL = TestUtil.graphQL(sdl, newRuntimeWiring() + .type(newTypeWiring("Query").dataFetchers([ + name : dfrDF, + street: dfrDF, + id : dfrDF, + ]))) + .build() + + when: + def ei = newExecutionInput("query q { name street id }") + .build() + + def er = graphQL.execute(ei) + then: + er.errors.isEmpty() + er.extensions == [ + name : "String!", + street: "String", + id : "ID!", + ] + } + + def "integration test that shows it working when they DONT put in a builder"() { + def sdl = """ + type Query { + name : String! + street : String + id : ID! + } + """ + + def ei = newExecutionInput("query q { name street id }") + .build() + + + def graphQL = TestUtil.graphQL(sdl, newRuntimeWiring() + .type(newTypeWiring("Query").dataFetchers([ + name : extensionDF, + street: extensionDF, + id : extensionDF, + ]))) + .build() + + when: + def er = graphQL.execute(ei) + then: + er.errors.isEmpty() + er.extensions == [ + common: [ + name : "String!", + street: "String", + id : "ID!", + ], + // we break them out so we have common and not common entries + name : "String!", + street: "String", + id : "ID!", + ] + } + + def "integration test showing it leaves extensions null if they are empty"() { + def sdl = """ + type Query { + name : String! + street : String + id : ID! + } + """ + + def ei = newExecutionInput("query q { name street id }") + .root(["name": "Brad", "id": 1234]) + .build() + + + def graphQL = TestUtil.graphQL(sdl, newRuntimeWiring().build()).build() + + when: + def er = graphQL.execute(ei) + then: + er.errors.isEmpty() + er.extensions == null + } +} diff --git a/src/test/groovy/graphql/i18n/I18nTest.groovy b/src/test/groovy/graphql/i18n/I18nTest.groovy new file mode 100644 index 0000000000..84165264e7 --- /dev/null +++ b/src/test/groovy/graphql/i18n/I18nTest.groovy @@ -0,0 +1,167 @@ +package graphql.i18n + +import graphql.AssertException +import graphql.ExecutionInput +import graphql.TestUtil +import graphql.i18n.I18n.BundleType +import spock.lang.Specification + +class I18nTest extends Specification { + + def "missing resource keys cause an assert"() { + def i18n = I18n.i18n(BundleType.Validation, Locale.ENGLISH) + when: + i18n.msg("nonExistent") + then: + thrown(AssertException) + } + + def "missing resource bundles default to a base version"() { + // see https://saimana.com/list-of-country-locale-code/ + + def expected = "Validation error ({0}) : Type '{1}' definition is not executable" + + when: + def i18n = I18n.i18n(BundleType.Validation, Locale.ENGLISH) + def msg = i18n.msg("ExecutableDefinitions.notExecutableType") + + then: + msg == expected + + when: + i18n = I18n.i18n(BundleType.Validation, Locale.CHINESE) + msg = i18n.msg("ExecutableDefinitions.notExecutableType") + then: + msg == expected + + when: + i18n = I18n.i18n(BundleType.Validation, new Locale("en", "IN")) // India + msg = i18n.msg("ExecutableDefinitions.notExecutableType") + then: + msg == expected + + when: + i18n = I18n.i18n(BundleType.Validation, new Locale("en", "FJ")) // Fiji + msg = i18n.msg("ExecutableDefinitions.notExecutableType") + then: + msg == expected + + when: + i18n = I18n.i18n(BundleType.Validation, new Locale("")) // Nothing + msg = i18n.msg("ExecutableDefinitions.notExecutableType") + then: + msg == expected + } + + def "all enums have resources and decent shapes"() { + when: + def bundleTypes = BundleType.values() + then: + for (BundleType bundleType : (bundleTypes)) { + // Currently only testing the default English bundles + def i18n = I18n.i18n(bundleType, Locale.ENGLISH) + assert i18n.resourceBundle != null + assertBundleStaticShape(i18n.resourceBundle) + } + } + + def "A non-default bundle can be read"() { + def i18n = I18n.i18n(BundleType.Validation, Locale.GERMAN) + when: + def message = i18n.msg("ExecutableDefinitions.notExecutableType") + then: + message == "Validierungsfehler ({0}) : Type definition '{1}' ist nicht ausführbar" + } + + def "integration test of valid messages"() { + def sdl = """ + type Query { + field(arg : Int) : Subselection + } + + type Subselection { + name : String + } + """ + def graphQL = TestUtil.graphQL(sdl).build() + + + when: + def locale = new Locale("en", "IN") + def ei = ExecutionInput.newExecutionInput().query("query missingSubselectionQ { field(arg : 1) }") + .locale(locale) + .build() + def er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message == "Validation error (SubselectionRequired@[field]) : Subselection required for type 'Subselection' of field 'field'" + + when: + locale = Locale.GERMANY + ei = ExecutionInput.newExecutionInput().query("query missingSubselectionQ { field(arg : 1) }") + .locale(locale) + .build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message == "Validierungsfehler (SubselectionRequired@[field]) : Unterauswahl erforderlich für Typ 'Subselection' des Feldes 'field'" + + when: + locale = Locale.getDefault() + ei = ExecutionInput.newExecutionInput().query("query missingSubselectionQ { field(arg : 1) }") + .locale(locale) + .build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message == "Validation error (SubselectionRequired@[field]) : Subselection required for type 'Subselection' of field 'field'" + + when: + // no locale - it should default + ei = ExecutionInput.newExecutionInput().query("query missingSubselectionQ { field(arg : 1) }") + .build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message == "Validation error (SubselectionRequired@[field]) : Subselection required for type 'Subselection' of field 'field'" + } + + static def assertBundleStaticShape(ResourceBundle bundle) { + def enumeration = bundle.getKeys() + while (enumeration.hasMoreElements()) { + def msgKey = enumeration.nextElement() + def pattern = bundle.getString(msgKey) + quotesAreBalanced(msgKey, pattern, '\'') + quotesAreBalanced(msgKey, pattern, '"') + curlyBracesAreBalanced(msgKey, pattern) + noStringFormatPercentLeftOver(msgKey, pattern) + placeHoldersNotRepeated(msgKey, pattern) + } + } + + static quotesAreBalanced(String msgKey, String msg, String c) { + def quoteCount = msg.count(c) + assert quoteCount % 2 == 0, "The I18n message $msgKey quotes are unbalanced : $msg" + } + + static placeHoldersNotRepeated(String msgKey, String msg) { + for (int i = 0; i < 200; i++) { + def count = msg.count("{$i}") + assert count < 2, "The I18n message $msgKey has repeated positional placeholders : $msg" + } + } + + static noStringFormatPercentLeftOver(String msgKey, String msg) { + assert !msg.contains("%s"), "The I18n message $msgKey has a %s in it : $msg" + assert !msg.contains("%d"), "The I18n message $msgKey has a %d in it : $msg" + } + + static def curlyBracesAreBalanced(String msgKey, String msg) { + def leftCount = msg.count("{") + def rightCount = msg.count("}") + if (leftCount > 0 || rightCount > 0) { + assert leftCount == rightCount, "The I18n message $msgKey left curly quote are unbalanced : $msg" + } + } + +} \ No newline at end of file diff --git a/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy b/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy new file mode 100644 index 0000000000..693d3911db --- /dev/null +++ b/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy @@ -0,0 +1,145 @@ +package graphql.incremental + +import graphql.GraphqlErrorBuilder +import graphql.execution.ResultPath +import spock.lang.Specification + +import static graphql.GraphQLError.newError + +class DeferPayloadTest extends Specification { + def "null data is included"() { + def payload = DeferPayload.newDeferredItem() + .data(null) + .build() + + when: + def spec = payload.toSpecification() + + then: + spec == [ + data: null, + path: null, + ] + } + + def "can construct an instance using builder"() { + def payload = DeferPayload.newDeferredItem() + .data("twow is that a bee") + .path(["hello"]) + .errors([]) + .addError(GraphqlErrorBuilder.newError() + .message("wow") + .build()) + .addErrors([ + GraphqlErrorBuilder.newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + data : "twow is that a bee", + path : ["hello"], + errors : [ + [ + message : "wow", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + ] + } + + def "errors replaces existing errors"() { + def payload = DeferPayload.newDeferredItem() + .data("twow is that a bee") + .path(ResultPath.fromList(["test", "echo"])) + .addError(GraphqlErrorBuilder.newError() + .message("wow") + .build()) + .addErrors([]) + .errors([ + GraphqlErrorBuilder.newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + data : "twow is that a bee", + errors : [ + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + path : ["test", "echo"], + ] + } + + def "equals and hashcode methods work correctly"() { + when: + def payload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value1"]) + .build() + + def equivalentPayload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value1"]) + .build() + + def totallyDifferentPayload = DeferPayload.newDeferredItem() + .data("data2") + .path(["path2"]) + .label("label2") + .errors([newError().message("message2").build()]) + .extensions([key: "value2"]) + .build() + + def slightlyDifferentPayload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value2"]) + .build() + + then: + payload == equivalentPayload + payload != totallyDifferentPayload + payload != slightlyDifferentPayload + + payload.hashCode() == equivalentPayload.hashCode() + payload.hashCode() != totallyDifferentPayload.hashCode() + payload.hashCode() != slightlyDifferentPayload.hashCode() + } +} diff --git a/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy b/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy new file mode 100644 index 0000000000..fd13de6d8e --- /dev/null +++ b/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy @@ -0,0 +1,144 @@ +package graphql.incremental + +import graphql.execution.ResultPath +import io.reactivex.Flowable +import spock.lang.Specification + +import static graphql.incremental.DeferPayload.newDeferredItem +import static graphql.incremental.IncrementalExecutionResultImpl.newIncrementalExecutionResult +import static graphql.incremental.StreamPayload.newStreamedItem + +class IncrementalExecutionResultTest extends Specification { + + def "sanity test to check IncrementalExecutionResultImpl builder and item builders work"() { + when: + def defer1 = newDeferredItem() + .label("homeWorldDefer") + .path(ResultPath.parse("/person")) + .data([homeWorld: "Tatooine"]) + .build() + + def stream1 = newStreamedItem() + .label("filmsStream") + .path(ResultPath.parse("/person/films[1]")) + .items([[title: "The Empire Strikes Back"]]) + .build() + + def stream2 = newStreamedItem() + .label("filmsStream") + .path(ResultPath.parse("/person/films[2]")) + .items([[title: "Return of the Jedi"]]) + .build() + + def result = newIncrementalExecutionResult() + .data([ + person: [ + name : "Luke Skywalker", + films: [ + [title: "A New Hope"] + ] + ] + ]) + .hasNext(true) + .incremental([defer1, stream1, stream2]) + .extensions([some: "map"]) + .build() + + def toSpec = result.toSpecification() + + then: + toSpec == [ + data : [person: [name: "Luke Skywalker", films: [[title: "A New Hope"]]]], + extensions: [some: "map"], + hasNext : true, + incremental: [ + [path: ["person"], label: "homeWorldDefer", data: [homeWorld: "Tatooine"]], + [path: ["person", "films", 1], label: "filmsStream", items: [[title: "The Empire Strikes Back"]]], + [path: ["person", "films", 2], label: "filmsStream", items: [[title: "Return of the Jedi"]]], + ] + ] + + } + def "sanity test to check DelayedIncrementalPartialResult builder works"() { + when: + def deferredItem = newDeferredItem() + .label("homeWorld") + .path(ResultPath.parse("/person")) + .data([homeWorld: "Tatooine"]) + .build() + + def result = DelayedIncrementalPartialResultImpl.newIncrementalExecutionResult() + .incrementalItems([deferredItem]) + .hasNext(false) + .extensions([some: "map"]) + .build() + + def toSpec = result.toSpecification() + + then: + toSpec == [ + incremental: [[path: ["person"], label: "homeWorld", data: [homeWorld: "Tatooine"]]], + extensions: [some: "map"], + hasNext : false, + ] + } + + def "sanity test to check Builder.from works"() { + + when: + def defer1 = newDeferredItem() + .label("homeWorldDefer") + .path(ResultPath.parse("/person")) + .data([homeWorld: "Tatooine"]) + .build() + + + def incrementalExecutionResult = new IncrementalExecutionResultImpl.Builder() + .data([ + person: [ + name : "Luke Skywalker", + films: [ + [title: "A New Hope"] + ] + ] + ]) + .incrementalItemPublisher { Flowable.range(1,10)} + .hasNext(true) + .incremental([defer1]) + .extensions([some: "map"]) + .build() + + def newIncrementalExecutionResult = new IncrementalExecutionResultImpl.Builder().from(incrementalExecutionResult).build() + + then: + newIncrementalExecutionResult.incremental == incrementalExecutionResult.incremental + newIncrementalExecutionResult.extensions == incrementalExecutionResult.extensions + newIncrementalExecutionResult.errors == incrementalExecutionResult.errors + newIncrementalExecutionResult.incrementalItemPublisher == incrementalExecutionResult.incrementalItemPublisher + newIncrementalExecutionResult.hasNext() == incrementalExecutionResult.hasNext() + newIncrementalExecutionResult.toSpecification() == incrementalExecutionResult.toSpecification() + } + + def "transform returns IncrementalExecutionResult"() { + when: + def defer = newDeferredItem() + .label("homeWorldDefer") + .path(ResultPath.parse("/person")) + .data([homeWorld: "Tatooine"]) + .build() + def initial = newIncrementalExecutionResult() + .hasNext(true) + .incremental([defer]) + .build() + + then: + def transformed = initial.transform { b -> + b.addExtension("ext-key", "ext-value") + b.hasNext(false) + } + transformed instanceof IncrementalExecutionResult + transformed.extensions == ["ext-key": "ext-value"] + transformed.incremental == initial.incremental + transformed.hasNext == false + } +} diff --git a/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy b/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy new file mode 100644 index 0000000000..157dcc1f0d --- /dev/null +++ b/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy @@ -0,0 +1,153 @@ +package graphql.incremental + +import graphql.execution.ResultPath +import spock.lang.Specification + +import static graphql.GraphqlErrorBuilder.newError + +class StreamPayloadTest extends Specification { + def "null data is included"() { + def payload = StreamPayload.newStreamedItem() + .items(null) + .build() + + when: + def spec = payload.toSpecification() + + then: + spec == [ + items: null, + path : null, + ] + } + + def "can construct an instance using builder"() { + def payload = StreamPayload.newStreamedItem() + .items(["twow is that a bee"]) + .path(["hello"]) + .errors([]) + .addError(newError() + .message("wow") + .build()) + .addErrors([ + newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + items : ["twow is that a bee"], + path : ["hello"], + errors : [ + [ + message : "wow", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + ] + } + + def "errors replaces existing errors"() { + def payload = StreamPayload.newStreamedItem() + .items(["twow is that a bee"]) + .path(ResultPath.fromList(["test", "echo"])) + .addError(newError() + .message("wow") + .build()) + .addErrors([]) + .errors([ + newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + items : ["twow is that a bee"], + errors : [ + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + path : ["test", "echo"], + ] + } + + def "test equals and hashCode methods work"() { + given: + def items1 = ["test1"] + def items2 = ["test2", "test3"] + def path1 = ["test", "echo"] + def path2 = ["test", "echo", "foo"] + def errors1 = [newError().message("error1").build()] + def errors2 = [newError().message("error2").build()] + def extensions1 = [echo: "1"] + def extensions2 = [echo: "2"] + + def payload = new StreamPayload.Builder() + .items(items1) + .path(path1) + .label("label1") + .errors(errors1) + .extensions(extensions1) + .build() + + def equivalentPayload = new StreamPayload.Builder() + .items(items1) + .path(path1) + .label("label1") + .errors(errors1) + .extensions(extensions1) + .build() + + def totallyDifferentPayload = new StreamPayload.Builder() + .items(items2) + .path(path2) + .label("label2") + .errors(errors2) + .extensions(extensions2) + .build() + + def slightlyDifferentPayload = new StreamPayload.Builder() + .items(items2) + .path(path2) + .label("label1") + .errors(errors1) + .extensions(extensions2) + .build() + + expect: + payload == equivalentPayload + payload != totallyDifferentPayload + payload != slightlyDifferentPayload + + payload.hashCode() == equivalentPayload.hashCode() + payload.hashCode() != totallyDifferentPayload.hashCode() + payload.hashCode() != slightlyDifferentPayload.hashCode() + } +} diff --git a/src/test/groovy/graphql/introspection/GoodFaithIntrospectionTest.groovy b/src/test/groovy/graphql/introspection/GoodFaithIntrospectionTest.groovy new file mode 100644 index 0000000000..c2d9b2dc87 --- /dev/null +++ b/src/test/groovy/graphql/introspection/GoodFaithIntrospectionTest.groovy @@ -0,0 +1,231 @@ +package graphql.introspection + +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.TestUtil +import graphql.execution.CoercedVariables +import graphql.language.Document +import graphql.normalized.ExecutableNormalizedOperationFactory +import spock.lang.Specification + +class GoodFaithIntrospectionTest extends Specification { + + def graphql = TestUtil.graphQL("type Query { normalField : String }").build() + + def setup() { + GoodFaithIntrospection.enabledJvmWide(true) + } + + def cleanup() { + GoodFaithIntrospection.enabledJvmWide(true) + } + + def "standard introspection query is inside limits just in general"() { + + when: + Document document = TestUtil.toDocument(IntrospectionQuery.INTROSPECTION_QUERY) + def eno = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphql.getGraphQLSchema(), document, + "IntrospectionQuery", CoercedVariables.emptyVariables()) + + then: + eno.getOperationFieldCount() < GoodFaithIntrospection.GOOD_FAITH_MAX_FIELDS_COUNT // currently 189 + eno.getOperationDepth() < GoodFaithIntrospection.GOOD_FAITH_MAX_DEPTH_COUNT // currently 13 + } + + def "test asking for introspection in good faith"() { + + when: + ExecutionResult er = graphql.execute(IntrospectionQuery.INTROSPECTION_QUERY) + then: + er.errors.isEmpty() + } + + def "test asking for introspection in bad faith"() { + + when: + ExecutionResult er = graphql.execute(query) + then: + !er.errors.isEmpty() + er.errors[0] instanceof GoodFaithIntrospection.BadFaithIntrospectionError + + where: + query | _ + // long attack + """ + query badActor{__schema{types{fields{type{fields{type{fields{type{fields{type{name}}}}}}}}}}} + """ | _ + // a case for __Type interfaces + """ query badActor { + __schema { types { interfaces { fields { type { interfaces { name } } } } } } + } + """ | _ + // a case for __Type inputFields + """ query badActor { + __schema { types { inputFields { type { inputFields { name }}}}} + } + """ | _ + // a case for __Type possibleTypes + """ query badActor { + __schema { types { inputFields { type { inputFields { name }}}}} + } + """ | _ + // a case leading from __InputValue + """ query badActor { + __schema { types { fields { args { type { name fields { name }}}}}} + } + """ | _ + // a case leading from __Field + """ query badActor { + __schema { types { fields { type { name fields { name }}}}} + } + """ | _ + // a case for __type + """ query badActor { + __type(name : "t") { name } + alias1 : __type(name : "t1") { name } + } + """ | _ + // a case for __type with aliases + """ query badActor { + a1: __type(name : "t") { name } + a2 : __type(name : "t1") { name } + } + """ | _ + // a case for schema repeated - dont ask twice + """ query badActor { + __schema { types { name} } + alias1 : __schema { types { name} } + } + """ | _ + // a case for used aliases + """ query badActor { + a1: __schema { types { name} } + a2 : __schema { types { name} } + } + """ | _ + + } + + def "mixed general queries and introspections will be stopped anyway"() { + def query = """ + query goodAndBad { + normalField + __schema{types{fields{type{fields{type{fields{type{fields{type{name}}}}}}}}}} + } + """ + + when: + ExecutionResult er = graphql.execute(query) + then: + !er.errors.isEmpty() + er.errors[0] instanceof GoodFaithIntrospection.BadFaithIntrospectionError + er.data == null // it stopped hard - it did not continue to normal business + } + + def "can be disabled"() { + when: + def currentState = GoodFaithIntrospection.isEnabledJvmWide() + + then: + currentState + + when: + def prevState = GoodFaithIntrospection.enabledJvmWide(false) + + then: + prevState + + when: + ExecutionResult er = graphql.execute("query badActor{__schema{types{fields{type{fields{type{fields{type{fields{type{name}}}}}}}}}}}") + + then: + er.errors.isEmpty() + } + + def "can be disabled per request"() { + when: + def context = [(GoodFaithIntrospection.GOOD_FAITH_INTROSPECTION_DISABLED): true] + ExecutionInput executionInput = ExecutionInput.newExecutionInput("query badActor{__schema{types{fields{type{fields{type{fields{type{fields{type{name}}}}}}}}}}}") + .graphQLContext(context).build() + ExecutionResult er = graphql.execute(executionInput) + + then: + er.errors.isEmpty() + + when: + context = [(GoodFaithIntrospection.GOOD_FAITH_INTROSPECTION_DISABLED): false] + executionInput = ExecutionInput.newExecutionInput("query badActor{__schema{types{fields{type{fields{type{fields{type{fields{type{name}}}}}}}}}}}") + .graphQLContext(context).build() + er = graphql.execute(executionInput) + + then: + !er.errors.isEmpty() + er.errors[0] instanceof GoodFaithIntrospection.BadFaithIntrospectionError + } + + def "can stop deep queries"() { + + when: + def query = createDeepQuery(depth) + def then = System.currentTimeMillis() + ExecutionResult er = graphql.execute(query) + def ms = System.currentTimeMillis() - then + + then: + !er.errors.isEmpty() + er.errors[0].class == targetError + er.data == null // it stopped hard - it did not continue to normal business + println "Took " + ms + "ms" + + where: + depth | targetError + 2 | GoodFaithIntrospection.BadFaithIntrospectionError.class + 10 | GoodFaithIntrospection.BadFaithIntrospectionError.class + 15 | GoodFaithIntrospection.BadFaithIntrospectionError.class + 20 | GoodFaithIntrospection.BadFaithIntrospectionError.class + 25 | GoodFaithIntrospection.BadFaithIntrospectionError.class + 50 | GoodFaithIntrospection.BadFaithIntrospectionError.class + 100 | GoodFaithIntrospection.BadFaithIntrospectionError.class + } + + String createDeepQuery(int depth = 25) { + def result = """ +query test { + __schema { + types { + ...F1 + } + } +} +""" + for (int i = 1; i < depth; i++) { + result += """ + fragment F$i on __Type { + fields { + type { + ...F${i + 1} + } + } + + ofType { + ...F${i + 1} + } +} + + +""" + } + result += """ + fragment F$depth on __Type { + fields { + type { +name + } + } +} + + +""" + return result + } +} diff --git a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy index d2a276c194..f322d2700e 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy @@ -1,18 +1,31 @@ package graphql.introspection import com.fasterxml.jackson.databind.ObjectMapper +import graphql.Assert import graphql.ExecutionInput +import graphql.ExecutionResult import graphql.GraphQL import graphql.TestUtil -import graphql.language.AstPrinter import graphql.language.Document import graphql.language.EnumTypeDefinition import graphql.language.InputObjectTypeDefinition +import graphql.language.IntValue import graphql.language.InterfaceTypeDefinition +import graphql.language.ObjectField import graphql.language.ObjectTypeDefinition +import graphql.language.ObjectValue +import graphql.language.StringValue import graphql.language.UnionTypeDefinition +import graphql.language.Value +import graphql.schema.Coercing +import graphql.schema.CoercingParseLiteralException +import graphql.schema.CoercingParseValueException +import graphql.schema.CoercingSerializeException +import graphql.schema.GraphQLArgument import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLSchema +import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.SchemaPrinter import groovy.json.JsonSlurper import spock.lang.Specification @@ -91,13 +104,11 @@ class IntrospectionResultToSchemaTest extends Specification { then: result == """type QueryType implements Query { - hero( - \"\"\" + hero(\"\"\" comment about episode on two lines \"\"\" - episode: Episode - foo: String = \"bar\"): Character @deprecated(reason: "killed off character") + episode: Episode, foo: String = \"bar\"): Character @deprecated(reason: "killed off character") }""" } @@ -199,9 +210,13 @@ class IntrospectionResultToSchemaTest extends Specification { then: result == """"A character in the Star Wars Trilogy" interface Character { + "The id of the character." id: String! + "The name of the character." name: String + "The friends of the character, or an empty list if they have none." friends: [Character] + "Which movies they appear in." appearsIn: [Episode] }""" @@ -247,8 +262,11 @@ interface Character { then: result == """"One of the films in the Star Wars Trilogy" enum Episode { + "Released in 1977." NEWHOPE + "Released in 1980." EMPIRE + "Released in 1983." JEDI @deprecated(reason: "killed by clones") }""" @@ -359,7 +377,7 @@ input CharacterInput { "subscriptionType": {"name":"SubscriptionType"}, "types": [ ] - }""" + }}""" def parsed = slurp(input) when: @@ -391,47 +409,61 @@ input CharacterInput { } type QueryType { - hero( - "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode." + hero("If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode." episode: Episode): Character - human( - "id of the human" + human("id of the human" id: String!): Human - droid( - "id of the droid" + droid("id of the droid" id: String!): Droid } "A character in the Star Wars Trilogy" interface Character { + "The id of the character." id: String! + "The name of the character." name: String + "The friends of the character, or an empty list if they have none." friends: [Character] + "Which movies they appear in." appearsIn: [Episode] } "One of the films in the Star Wars Trilogy" enum Episode { + "Released in 1977." NEWHOPE + "Released in 1980." EMPIRE + "Released in 1983." JEDI } "A humanoid creature in the Star Wars universe." type Human implements Character { + "The id of the human." id: String! + "The name of the human." name: String + "The friends of the human, or an empty list if they have none." friends: [Character] + "Which movies they appear in." appearsIn: [Episode] + "The home planet of the human, or null if unknown." homePlanet: String } "A mechanical creature in the Star Wars universe." type Droid implements Character { + "The id of the droid." id: String! + "The name of the droid." name: String + "The friends of the droid, or an empty list if they have none." friends: [Character] + "Which movies they appear in." appearsIn: [Episode] + "The primary function of the droid." primaryFunction: String } """ @@ -479,14 +511,17 @@ type Episode { " Simpson seasons" enum Season { + " the beginning" Season1 Season2 Season3 Season4 + " Another one" Season5 Season6 Season7 Season8 + " Not really the last one :-)" Season9 } @@ -590,7 +625,7 @@ input CharacterInput { } type Query { - outputField(inputArg: InputType = {age : 666, name : "nameViaArg"}, inputBoolean: Boolean = true, inputInt: Int = 1, inputString: String = "viaArgString"): OutputType + outputField(inputArg: InputType = {name : "nameViaArg", age : 666}, inputBoolean: Boolean = true, inputInt: Int = 1, inputString: String = "viaArgString"): OutputType } input ComplexType { @@ -601,7 +636,7 @@ input ComplexType { input InputType { age: Int = -1 - complex: ComplexType = {boolean : true, int : 666, string : "string"} + complex: ComplexType = {string : "string", boolean : true, int : 666} name: String = "defaultName" rocks: Boolean = true } @@ -663,4 +698,361 @@ input InputType { null | '{"name":"Subscription"}' } -} \ No newline at end of file + def "create schema fail"() { + given: + def failResult = ExecutionResult.newExecutionResult().build() + + when: + Document document = introspectionResultToSchema.createSchemaDefinition(failResult) + + then: + document == null + } + + def "create scalars"() { + def input = ''' { + "kind": "SCALAR", + "name": "ScalarType", + "description": "description of ScalarType", + } + ''' + def parsed = slurp(input) + + when: + def scalarTypeDefinition = introspectionResultToSchema.createScalar(parsed) + def result = printAst(scalarTypeDefinition) + + then: + result == """"description of ScalarType"\nscalar ScalarType""" + } + + def " create directives "() { + def input = ''' + { + "name": "customizedDirective", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [] + } + ''' + def parsed = slurp(input) + + when: + def directiveDefinition = introspectionResultToSchema.createDirective(parsed) + def result = printAst(directiveDefinition) + + then: + result == """directive @customizedDirective on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT""" + } + + def "create directives with arguments and default value"() { + def input = '''{ + "name": "customizedDirective", + "description": "customized directive", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "directiveArg", + "description": "directive arg", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null, + "defaultValue": "\\"default Value\\"" + } + ] + } + ''' + def parsed = slurp(input) + + when: + def directiveDefinition = introspectionResultToSchema.createDirective(parsed) + def result = printAst(directiveDefinition) + + then: + result == """"customized directive" +directive @customizedDirective("directive arg" +directiveArg: String = "default Value") on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT""" + } + + def "create schema with directives"() { + def input = """{ + "__schema": { + "queryType": { + "name": "QueryType" + }, + "types": [], + "directives": [ + { + "name": "customizedDirective", + "description": "customized directive", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "directiveArg", + "description": "directive arg", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null, + "defaultValue": "\\"default Value\\"" + } + ] + }, + { + "name": "repeatableDirective", + "description": "repeatable directive", + "locations": [ + "FIELD_DEFINITION" + ], + "args": [], + "isRepeatable":true + } + ] + }}""" + def parsed = slurp(input) + + when: + Document document = introspectionResultToSchema.createSchemaDefinition(parsed) + def result = printAst(document) + + then: + result == """schema { + query: QueryType +} + +"customized directive" +directive @customizedDirective("directive arg" +directiveArg: String = "default Value") on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"repeatable directive" +directive @repeatableDirective repeatable on FIELD_DEFINITION +""" + } + + def "round trip of default values of complex custom Scalar via SDL"() { + given: + def employeeRefScalar = GraphQLScalarType.newScalar().name("EmployeeRef").coercing(new Coercing() { + @Override + Object serialize(Object dataFetcherResult) throws CoercingSerializeException { + return null + } + + @Override + Object parseValue(Object input) throws CoercingParseValueException { + return null + } + + @Override + Object parseLiteral(Object input) throws CoercingParseLiteralException { + return null + } + + @Override + Value valueToLiteral(Object input) { + return null + } + }).build() + + def sdl = ''' + scalar EmployeeRef + type Query{ + foo(arg: EmployeeRef = {externalRef: "123", department: 5}): String + } + ''' + def options = SchemaPrinter.Options.defaultOptions().includeDirectives(false) + def rw = RuntimeWiring.newRuntimeWiring().scalar(employeeRefScalar).build() + def schema = TestUtil.schema(sdl, rw) + def printedSchema = new SchemaPrinter(options).print(schema) + + when: + StringWriter sw = new StringWriter() + def introspectionResult = GraphQL.newGraphQL(schema).build().execute(ExecutionInput.newExecutionInput().query(INTROSPECTION_QUERY).build()) + + // + // round trip the introspection into JSON and then again to ensure + // we see any encoding aspects + // + ObjectMapper objectMapper = new ObjectMapper() + objectMapper.writer().writeValue(sw, introspectionResult.data) + def json = sw.toString() + def roundTripMap = objectMapper.readValue(json, Map.class) + Document schemaDefinitionDocument = introspectionResultToSchema.createSchemaDefinition(roundTripMap) + + def astPrinterResult = printAst(schemaDefinitionDocument) + + def actualSchema = TestUtil.schema(astPrinterResult, rw) + def actualPrintedSchema = new SchemaPrinter(options).print(actualSchema) + + then: + printedSchema == actualPrintedSchema + + actualPrintedSchema == '''type Query { + foo(arg: EmployeeRef = {externalRef : "123", department : 5}): String +} + +scalar EmployeeRef +''' + } + + class ExternalEmployeeRef { + String externalRef; + String externalDepartment; + } + + def "round trip of default values of complex custom Scalar via programmatic schema"() { + given: + def employeeRefScalar = GraphQLScalarType.newScalar().name("EmployeeRef").coercing(new Coercing() { + @Override + Object serialize(Object dataFetcherResult) throws CoercingSerializeException { + return null + } + + @Override + Object parseValue(Object input) throws CoercingParseValueException { + return null + } + + @Override + Object parseLiteral(Object input) throws CoercingParseLiteralException { + return null + } + + @Override + Value valueToLiteral(Object input) { + if (input instanceof ExternalEmployeeRef) { + def externalRef = StringValue.newStringValue(input.externalRef).build() + def refField = ObjectField.newObjectField().name("ref").value(externalRef).build() + def externalDepartment = IntValue.newIntValue(new BigInteger(input.externalDepartment)).build() + def departmentField = ObjectField.newObjectField().name("department").value(externalDepartment).build() + return ObjectValue.newObjectValue().objectField(refField).objectField(departmentField).build() + } + return Assert.assertShouldNeverHappen(); + } + }).build() + + + def ref = new ExternalEmployeeRef(externalRef: "123", externalDepartment: "5") + def argument = GraphQLArgument.newArgument().name("arg").type(employeeRefScalar).defaultValueProgrammatic(ref).build() + def field = newFieldDefinition().name("foo").type(GraphQLString).argument(argument).build() + def queryType = GraphQLObjectType.newObject().name("Query").field(field).build() + def schema = GraphQLSchema.newSchema().query(queryType).build() + + def options = SchemaPrinter.Options.defaultOptions().includeDirectives(false) + def printedSchema = new SchemaPrinter(options).print(schema) + + when: + StringWriter sw = new StringWriter() + def introspectionResult = GraphQL.newGraphQL(schema).build().execute(ExecutionInput.newExecutionInput().query(INTROSPECTION_QUERY).build()) + + // + // round trip the introspection into JSON and then again to ensure + // we see any encoding aspects + // + ObjectMapper objectMapper = new ObjectMapper() + objectMapper.writer().writeValue(sw, introspectionResult.data) + def json = sw.toString() + def roundTripMap = objectMapper.readValue(json, Map.class) + Document schemaDefinitionDocument = introspectionResultToSchema.createSchemaDefinition(roundTripMap) + + def astPrinterResult = printAst(schemaDefinitionDocument) + + def rw = RuntimeWiring.newRuntimeWiring().scalar(employeeRefScalar).build() + def actualSchema = TestUtil.schema(astPrinterResult, rw) + def actualPrintedSchema = new SchemaPrinter(options).print(actualSchema) + + then: + printedSchema == actualPrintedSchema + + actualPrintedSchema == '''type Query { + foo(arg: EmployeeRef = {ref : "123", department : 5}): String +} + +scalar EmployeeRef +''' + } + + def "copes when isDeprecated is not defined"() { + def input = ''' { + "kind": "OBJECT", + "name": "QueryType", + "description": null, + "fields": [ + { + "name": "hero", + "description": null, + "args": [ + { + "name": "episode", + "description": "comment about episode\non two lines", + "type": { + "kind": "ENUM", + "name": "Episode", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "foo", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": "\\"bar\\"" + } + ], + "type": { + "kind": "INTERFACE", + "name": "Character", + "ofType": null + }, + "isDeprecatedISNOTYDEFINED": false, + "deprecationReason": "killed off character" + } + ], + "inputFields": null, + "interfaces": [{ + "kind": "INTERFACE", + "name": "Query", + "ofType": null + }], + "enumValues": null, + "possibleTypes": null + } + ''' + def parsed = slurp(input) + + when: + ObjectTypeDefinition objectTypeDefinition = introspectionResultToSchema.createObject(parsed) + def result = printAst(objectTypeDefinition) + + then: + result == """type QueryType implements Query { + hero(\"\"\" + comment about episode + on two lines + \"\"\" + episode: Episode, foo: String = \"bar\"): Character +}""" + + } +} diff --git a/src/test/groovy/graphql/introspection/IntrospectionTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionTest.groovy index d1a681c53d..8a70c68618 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionTest.groovy @@ -1,11 +1,36 @@ package graphql.introspection - +import graphql.ExecutionInput import graphql.TestUtil +import graphql.execution.AsyncSerialExecutionStrategy +import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLCodeRegistry +import graphql.schema.GraphQLFieldsContainer +import graphql.schema.GraphQLNamedType +import spock.lang.Issue +import spock.lang.See import spock.lang.Specification +import static graphql.GraphQL.newGraphQL +import static graphql.Scalars.GraphQLString +import static graphql.schema.GraphQLArgument.newArgument +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLInputObjectField.newInputObjectField +import static graphql.schema.GraphQLInputObjectType.newInputObject +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema + class IntrospectionTest extends Specification { + def setup() { + Introspection.enabledJvmWide(true) + } + + def cleanup() { + Introspection.enabledJvmWide(true) + } + def "bug 1186 - introspection depth check"() { def spec = ''' type Query { @@ -57,4 +82,726 @@ class IntrospectionTest extends Specification { ] ] } + + @Issue("https://github.com/graphql-java/graphql-java/issues/2702") + def "Introspection#__DirectiveLocation(GraphQLEnumType) `name` should match `value`'s DirectiveLocation#name() #2702"() { + given: + def directiveLocationValues = Introspection.__DirectiveLocation.values + + expect: + directiveLocationValues.each { + def value = it.value + assert value instanceof Introspection.DirectiveLocation + assert it.name == (value as Introspection.DirectiveLocation).name() + } + } + + @See("https://spec.graphql.org/October2021/#sec-Schema-Introspection.Schema-Introspection-Schema") + def "Introspection#__DirectiveLocation(GraphQLEnumType) should have 19 distinct values"() { + given: + def directiveLocationValues = Introspection.__DirectiveLocation.values + def numValues = 19 + + expect: + directiveLocationValues.size() == numValues + directiveLocationValues.unique(false).size() == numValues + } + + def "Introspection#__DirectiveLocation(GraphQLEnumType) should contain all Introspection.DirectiveLocation"() { + given: + def directiveLocationValues = new ArrayList<>(Introspection.__DirectiveLocation.values) + def possibleLocations = new ArrayList<>(Introspection.DirectiveLocation.values().toList()).iterator() + + expect: + while (possibleLocations.hasNext()) { + def nextPossibleLocation = possibleLocations.next() + assert directiveLocationValues.retainAll { (it.value != nextPossibleLocation) } + } + assert directiveLocationValues.isEmpty() + } + + def "schema description can be defined in SDL and queried via introspection"() { + given: + def sdl = ''' + """ + This is my schema + """ + schema { + query: Foo + } + + type Foo { + foo: String + } + + ''' + def graphql = TestUtil.graphQL(sdl).build() + when: + def data = graphql.execute("{__schema { description }}").getData() + + then: + data == [__schema: [description: "This is my schema"]] + + } + + def "introspection for repeatable directive info"() { + def spec = ''' + directive @repeatableDirective(arg: String) repeatable on FIELD + + type Query { + namedField: String + } + ''' + + when: + def graphQL = TestUtil.graphQL(spec).build() + def executionResult = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + executionResult.errors.isEmpty() + + def directives = executionResult.data["__schema"]["directives"] as List + def geoPolygonType = directives.find { it['name'] == 'repeatableDirective' } + geoPolygonType["isRepeatable"] == true + } + + def "introspection for deprecated support"() { + def spec = ''' + + directive @someDirective( + deprecatedArg : String @deprecated + notDeprecatedArg : String + ) on FIELD + + type Query { + namedField(arg : InputType @deprecated ) : Enum @deprecated + notDeprecated(arg : InputType) : Enum + } + enum Enum { + RED @deprecated + BLUE + } + input InputType { + inputField : String @deprecated + } + ''' + + when: + def graphQL = TestUtil.graphQL(spec).build() + def executionResult = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + executionResult.errors.isEmpty() + + def types = executionResult.data['__schema']['types'] as List + def queryType = types.find { it['name'] == 'Query' } + def namedField = (queryType['fields'] as List).find({ it["name"] == "namedField" }) + namedField["isDeprecated"] + + def notDeprecatedField = (queryType['fields'] as List).find({ it["name"] == "notDeprecated" }) + !notDeprecatedField["isDeprecated"] + notDeprecatedField["deprecationReason"] == null + + def enumType = types.find { it['name'] == 'Enum' } + def red = enumType["enumValues"].find({ it["name"] == "RED" }) + red["isDeprecated"] + red["deprecationReason"] == "No longer supported" + + def inputType = types.find { it['name'] == 'InputType' } + def inputField = inputType["inputFields"].find({ it["name"] == "inputField" }) + inputField["isDeprecated"] + inputField["deprecationReason"] == "No longer supported" + + def argument = (namedField["args"] as List).find({ it["name"] == "arg" }) + argument["isDeprecated"] + argument["deprecationReason"] == "No longer supported" + + def argument2 = (notDeprecatedField["args"] as List).find({ it["name"] == "arg" }) + !argument2["isDeprecated"] + argument2["deprecationReason"] == null + + + def directives = executionResult.data['__schema']['directives'] as List + def directive = directives.find { it['name'] == "someDirective" } + + def directiveArgs = directive["args"] as List + directiveArgs.collect({ it["name"] }).sort() == ["deprecatedArg", "notDeprecatedArg"] + + def dArgument = directiveArgs.find({ it["name"] == "deprecatedArg" }) + dArgument["isDeprecated"] + dArgument["deprecationReason"] == "No longer supported" + + } + + def "can filter out deprecated things in introspection"() { + + def spec = ''' + + directive @someDirective( + deprecatedArg : String @deprecated + notDeprecatedArg : String + ) on FIELD + + type Query { + namedField(arg : InputType @deprecated, notDeprecatedArg : InputType ) : Enum @deprecated + notDeprecated(arg : InputType @deprecated, notDeprecatedArg : InputType) : Enum + } + enum Enum { + RED @deprecated + BLUE + } + input InputType { + inputField : String @deprecated + notDeprecatedInputField : String + } + ''' + + def graphQL = TestUtil.graphQL(spec).build() + + when: "we dont include deprecated things" + def introspectionQueryWithoutDeprecated = IntrospectionQuery.INTROSPECTION_QUERY.replace("includeDeprecated: true", "includeDeprecated: false") + + def executionResult = graphQL.execute(introspectionQueryWithoutDeprecated) + + then: + executionResult.errors.isEmpty() + + def types = executionResult.data['__schema']['types'] as List + def queryType = types.find { it['name'] == 'Query' } + def fields = (queryType['fields'] as List) + fields.size() == 1 + + def notDeprecatedField = fields[0] + notDeprecatedField["name"] == "notDeprecated" + + def fieldArgs = notDeprecatedField["args"] as List + fieldArgs.size() == 1 + fieldArgs[0]["name"] == "notDeprecatedArg" + + def enumType = types.find { it['name'] == 'Enum' } + def enumValues = (enumType['enumValues'] as List) + enumValues.size() == 1 + enumValues[0]["name"] == "BLUE" + + def inputType = types.find { it['name'] == 'InputType' } + def inputFields = (inputType['inputFields'] as List) + inputFields.size() == 1 + inputFields[0]["name"] == "notDeprecatedInputField" + + when: "we DO include deprecated things" + executionResult = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + types = executionResult.data['__schema']['types'] as List + queryType = types.find { it['name'] == 'Query' } + fields = (queryType['fields'] as List) + + notDeprecatedField = fields.find { it["name"] == "notDeprecated" } + fieldArgs = notDeprecatedField["args"] as List + + enumType = types.find { it['name'] == 'Enum' } + enumValues = (enumType['enumValues'] as List) + + inputType = types.find { it['name'] == 'InputType' } + inputFields = (inputType['inputFields'] as List) + + then: + executionResult.errors.isEmpty() + + fields.size() == 2 + + fieldArgs.size() == 2 + + enumValues.size() == 2 + + inputFields.size() == 2 + } + + def "can change data fetchers for introspection types"() { + def sdl = ''' + type Query { + inA : Int + inB : Int + inC : Int + outA : Int + outB : Int + outC : Int + } + ''' + + def schema = TestUtil.schema(sdl) + def graphQL = newGraphQL(schema).build() + def query = ''' + { + __schema { + types { + name + fields { + name + } + } + } + } + ''' + + when: + def er = graphQL.execute(query) + then: + def queryTypeFields = er.data["__schema"]["types"].find({ it["name"] == "Query" })["fields"] + queryTypeFields == [[name: "inA"], [name: "inB"], [name: "inC"], [name: "outA"], [name: "outB"], [name: "outC"]] + + when: + DataFetcher introspectionFieldsOfTypeFetcher = { env -> + GraphQLNamedType type = env.getSource() + if (type instanceof GraphQLFieldsContainer) { + def fieldDefs = ((GraphQLFieldsContainer) type).getFieldDefinitions() + return fieldDefs.stream().filter({ fld -> fld.getName().startsWith("in") }).collect() + } + } + GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry() + codeRegistry = codeRegistry.transform({ + bld -> bld.dataFetcher(FieldCoordinates.coordinates("__Type", "fields"), introspectionFieldsOfTypeFetcher) + } + ) + schema = schema.transform({ bld -> bld.codeRegistry(codeRegistry) }) + graphQL = newGraphQL(schema).build() + er = graphQL.execute(query) + queryTypeFields = er.data["__schema"]["types"].find({ it["name"] == "Query" })["fields"] + + then: + queryTypeFields == [[name: "inA"], [name: "inB"], [name: "inC"]] + } + + def "test introspection for #296 with map"() { + + def graphql = newGraphQL(newSchema() + .query(newObject() + .name("Query") + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("argument") + .type(newInputObject() + .name("InputObjectType") + .field(newInputObjectField() + .name("inputField") + .type(GraphQLString)) + .build()) + .defaultValueProgrammatic([inputField: 'value1']) + ) + ) + ) + .build() + ).build() + + def query = '{ __type(name: "Query") { fields { args { defaultValue } } } }' + + expect: + // converts the default object value to AST, then graphql pretty prints that as the value + graphql.execute(query).data == + [__type: [fields: [[args: [[defaultValue: '{inputField : "value1"}']]]]]] + } + + class FooBar { + final String inputField = "foo" + final String bar = "bar" + + String getInputField() { + return inputField + } + + String getBar() { + return bar + } + } + + def "test introspection for #296 with some object"() { + + def graphql = newGraphQL(newSchema() + .query(newObject() + .name("Query") + .field(newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(newArgument() + .name("argument") + .type(newInputObject() + .name("InputObjectType") + .field(newInputObjectField() + .name("inputField") + .type(GraphQLString)) + .build()) + .defaultValue(new FooBar()) // Retain for test coverage. There is no alternative method that sets an internal value. + ) + ) + ) + .build() + ).build() + + def query = '{ __type(name: "Query") { fields { args { defaultValue } } } }' + + expect: + // converts the default object value to AST, then graphql pretty prints that as the value + graphql.execute(query).data == + [__type: [fields: [[args: [[defaultValue: '{inputField : "foo"}']]]]]] + } + + def "test AST printed introspection query is equivalent to original string"() { + when: + def oldIntrospectionQuery = "\n" + + " query IntrospectionQuery {\n" + + " __schema {\n" + + " queryType { name }\n" + + " mutationType { name }\n" + + " subscriptionType { name }\n" + + " types {\n" + + " ...FullType\n" + + " }\n" + + " directives {\n" + + " name\n" + + " description\n" + + " locations\n" + + " args(includeDeprecated: true) {\n" + + " ...InputValue\n" + + " }\n" + + " isRepeatable\n" + + " }\n" + + " }\n" + + " }\n" + + "\n" + + " fragment FullType on __Type {\n" + + " kind\n" + + " name\n" + + " description\n" + + " isOneOf\n" + + " fields(includeDeprecated: true) {\n" + + " name\n" + + " description\n" + + " args(includeDeprecated: true) {\n" + + " ...InputValue\n" + + " }\n" + + " type {\n" + + " ...TypeRef\n" + + " }\n" + + " isDeprecated\n" + + " deprecationReason\n" + + " }\n" + + " inputFields(includeDeprecated: true) {\n" + + " ...InputValue\n" + + " }\n" + + " interfaces {\n" + + " ...TypeRef\n" + + " }\n" + + " enumValues(includeDeprecated: true) {\n" + + " name\n" + + " description\n" + + " isDeprecated\n" + + " deprecationReason\n" + + " }\n" + + " possibleTypes {\n" + + " ...TypeRef\n" + + " }\n" + + " }\n" + + "\n" + + " fragment InputValue on __InputValue {\n" + + " name\n" + + " description\n" + + " type { ...TypeRef }\n" + + " defaultValue\n" + + " isDeprecated\n" + + " deprecationReason\n" + + " }\n" + + "\n" + + // + // The depth of the types is actually an arbitrary decision. It could be any depth in fact. This depth + // was taken from GraphIQL https://github.com/graphql/graphiql/blob/master/src/utility/introspectionQueries.js + // which uses 7 levels and hence could represent a type like say [[[[[Float!]]]]] + // + "fragment TypeRef on __Type {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " ofType {\n" + + " kind\n" + + " name\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + "\n" + + def newIntrospectionQuery = IntrospectionQuery.INTROSPECTION_QUERY + + + then: + def oldQuery = oldIntrospectionQuery.replaceAll("\\s+", "") + def newQuery = newIntrospectionQuery.replaceAll("\\s+", "") + oldQuery == newQuery + } + + def "test parameterized introspection queries"() { + def spec = ''' + scalar UUID @specifiedBy(url: "https://tools.ietf.org/html/rfc4122") + + directive @repeatableDirective(arg: String) repeatable on FIELD + + """schema description""" + schema { + query: Query + } + + directive @someDirective( + deprecatedArg : String @deprecated + notDeprecatedArg : String + ) repeatable on FIELD + + type Query { + """notDeprecated root field description""" + notDeprecated(arg : InputType @deprecated, notDeprecatedArg : InputType) : Enum + tenDimensionalList : [[[[[[[[[[String]]]]]]]]]] + } + enum Enum { + RED @deprecated + BLUE + } + input InputType { + inputField : String @deprecated + } + ''' + + def graphQL = TestUtil.graphQL(spec).build() + + def parseExecutionResult = { + [ + it.data["__schema"]["types"].find { it["name"] == "Query" }["fields"].find { it["name"] == "notDeprecated" }["description"] != null, // descriptions is true + it.data["__schema"]["types"].find { it["name"] == "UUID" }["specifiedByURL"] != null, // specifiedByUrl is true + it.data["__schema"]["directives"].find { it["name"] == "repeatableDirective" }["isRepeatable"] != null, // directiveIsRepeatable is true + it.data["__schema"]["description"] != null, // schemaDescription is true + it.data["__schema"]["types"].find { it['name'] == 'InputType' }["inputFields"].find({ it["name"] == "inputField" }) != null // inputValueDeprecation is true + ] + } + + when: + def allFalseExecutionResult = graphQL.execute( + IntrospectionQueryBuilder.build( + IntrospectionQueryBuilder.Options.defaultOptions() + .descriptions(false) + .specifiedByUrl(false) + .directiveIsRepeatable(false) + .schemaDescription(false) + .inputValueDeprecation(false) + .typeRefFragmentDepth(5) + ) + ) + then: + !parseExecutionResult(allFalseExecutionResult).any() + allFalseExecutionResult.data["__schema"]["types"].find { it["name"] == "Query" }["fields"].find { it["name"] == "tenDimensionalList" }["type"]["ofType"]["ofType"]["ofType"]["ofType"]["ofType"]["ofType"] == null // typeRefFragmentDepth is 5 + + when: + def allTrueExecutionResult = graphQL.execute( + IntrospectionQueryBuilder.build( + IntrospectionQueryBuilder.Options.defaultOptions() + .descriptions(true) + .specifiedByUrl(true) + .directiveIsRepeatable(true) + .schemaDescription(true) + .inputValueDeprecation(true) + .typeRefFragmentDepth(7) + ) + ) + then: + parseExecutionResult(allTrueExecutionResult).every() + allTrueExecutionResult.data["__schema"]["types"].find { it["name"] == "Query" }["fields"].find { it["name"] == "tenDimensionalList" }["type"]["ofType"]["ofType"]["ofType"]["ofType"]["ofType"]["ofType"]["ofType"]["ofType"] == null // typeRefFragmentDepth is 7 + } + + def "issue 3285 - deprecated defaultValue on programmatic args prints AST literal as expected"() { + def queryObjType = newObject().name("Query") + .field(newFieldDefinition().name("f").type(GraphQLString) + .argument(newArgument().name("arg").type(GraphQLString).defaultValue(null))) + .build() + def schema = newSchema().query(queryObjType).build() + def graphQL = newGraphQL(schema).build() + + + when: + def executionResult = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + then: + executionResult.errors.isEmpty() + + def types = executionResult.data['__schema']['types'] as List + def queryType = types.find { it['name'] == 'Query' } + def fField = (queryType['fields'] as List)[0] + def arg = (fField['args'] as List)[0] + arg['name'] == "arg" + arg['defaultValue'] == "null" // printed AST + } + + + def "introspection for oneOf support"() { + def spec = ''' + + type Query { + oneOfNamedField(arg : OneOfInputType) : Enum + namedField(arg : InputType) : Enum + } + enum Enum { + RED + BLUE + } + input InputType { + inputField : String + } + input OneOfInputType @oneOf { + inputFieldA : String + inputFieldB : String + } + ''' + + when: + def graphQL = TestUtil.graphQL(spec).build() + def executionResult = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + executionResult.errors.isEmpty() + + def types = executionResult.data['__schema']['types'] as List + + def inputType = types.find { it['name'] == 'InputType' } + inputType["isOneOf"] == false + + def oneOfInputType = types.find { it['name'] == 'OneOfInputType' } + oneOfInputType["isOneOf"] == true + + def queryType = types.find { it['name'] == 'Query' } + queryType["isOneOf"] == null + } + + def "jvm wide enablement"() { + def graphQL = TestUtil.graphQL("type Query { f : String } ").build() + + when: + def er = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + er.errors.isEmpty() + + when: + Introspection.enabledJvmWide(false) + er = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + er.errors[0] instanceof IntrospectionDisabledError + er.errors[0].getErrorType().toString() == "IntrospectionDisabled" + + when: + Introspection.enabledJvmWide(true) + er = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + er.errors.isEmpty() + } + + def "per request enablement"() { + def graphQL = TestUtil.graphQL("type Query { f : String } ").build() + + when: + // null context + def ei = ExecutionInput.newExecutionInput(IntrospectionQuery.INTROSPECTION_QUERY) + .build() + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + + when: + ei = ExecutionInput.newExecutionInput(IntrospectionQuery.INTROSPECTION_QUERY) + .graphQLContext(Map.of(Introspection.INTROSPECTION_DISABLED, false)).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + + when: + ei = ExecutionInput.newExecutionInput(IntrospectionQuery.INTROSPECTION_QUERY) + .graphQLContext(Map.of(Introspection.INTROSPECTION_DISABLED, true)).build() + er = graphQL.execute(ei) + + then: + er.errors[0] instanceof IntrospectionDisabledError + er.errors[0].getErrorType().toString() == "IntrospectionDisabled" + } + + def "mixed schema and other fields stop early"() { + def graphQL = TestUtil.graphQL("type Query { normalField : String } ").build() + + def query = """ + query goodAndBad { + normalField + __schema{ types{ fields { name }}} + } + """ + + when: + def er = graphQL.execute(query) + + then: + er.errors.isEmpty() + + when: + Introspection.enabledJvmWide(false) + er = graphQL.execute(query) + + then: + er.errors[0] instanceof IntrospectionDisabledError + er.errors[0].getErrorType().toString() == "IntrospectionDisabled" + er.data == null // stops hard + } + + def "AsyncSerialExecutionStrategy with jvm wide enablement"() { + def graphQL = TestUtil.graphQL("type Query { f : String } ") + .queryExecutionStrategy(new AsyncSerialExecutionStrategy()).build() + + when: + def er = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + er.errors.isEmpty() + + when: + Introspection.enabledJvmWide(false) + er = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + er.errors[0] instanceof IntrospectionDisabledError + er.errors[0].getErrorType().toString() == "IntrospectionDisabled" + + when: + Introspection.enabledJvmWide(true) + er = graphQL.execute(IntrospectionQuery.INTROSPECTION_QUERY) + + then: + er.errors.isEmpty() + } + } diff --git a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy new file mode 100644 index 0000000000..591a44146e --- /dev/null +++ b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy @@ -0,0 +1,239 @@ +package graphql.introspection + +import graphql.GraphQL +import graphql.TestUtil +import spock.lang.Specification + +class IntrospectionWithDirectivesSupportTest extends Specification { + + def "can find directives in introspection"() { + def sdl = ''' + directive @example( argName : String = "default") on OBJECT | FIELD_DEFINITION | INPUT_OBJECT | INPUT_FIELD_DEFINITION | SCHEMA + directive @secret( argName : String = "secret") on OBJECT + directive @noDefault( arg1 : String, arg2 : String) on OBJECT + + schema @example(argName : "onSchema") { + query : Query + } + + type Query @example(argName : "onQuery") @noDefault(arg1 : "set") { + hello : Hello @deprecated + } + + type Hello @example @noDefault { + world : String @deprecated + } + + input InputType { + inputField : String @example(argName : "onInputField") + } + ''' + + def schema = TestUtil.schema(sdl) + schema = new IntrospectionWithDirectivesSupport().apply(schema) + def graphql = GraphQL.newGraphQL(schema).build() + + def query = ''' + { + __schema { + directives { + name + } + appliedDirectives { + name + args { + name + value + } + } + types { + name + appliedDirectives { + name + args { + name + value + } + } + fields(includeDeprecated:true) { + name + appliedDirectives { + name + args { + name + value + } + } + } + inputFields { + name + appliedDirectives { + name + args { + name + value + } + } + } + } + } + } + ''' + + when: + + def er = graphql.execute(query) + then: + er.errors.isEmpty() + println TestUtil.prettyPrint(er) + + def schemaType = er.data["__schema"] + + schemaType["directives"] == [ + [name: "include"], [name: "skip"], [name: "example"], [name: "secret"], + [name: "noDefault"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], + [name: "defer"], [name: "experimental_disableErrorPropagation"] + ] + + schemaType["appliedDirectives"] == [[name: "example", args: [[name: "argName", value: '"onSchema"']]]] + + def queryType = er.data["__schema"]["types"].find({ type -> (type["name"] == "Query") }) + queryType["appliedDirectives"] == [ + [name: "example", args: [[name: "argName", value: '"onQuery"']]], + [name: "noDefault", args: [[name: "arg1", value: '"set"']]] + ] + + def helloType = er.data["__schema"]["types"].find({ type -> (type["name"] == "Hello") }) + helloType["appliedDirectives"] == [ + [name: "example", args: [[name: "argName", value: '"default"']]], + [name: "noDefault", args: []] // always empty list + ] + + def worldField = helloType["fields"].find({ type -> (type["name"] == "world") }) + worldField["appliedDirectives"] == [[name: 'deprecated', args: [[name: 'reason', value: '"No longer supported"']]]] + + def inputType = er.data["__schema"]["types"].find({ type -> (type["name"] == "InputType") }) + def inputField = inputType["inputFields"].find({ type -> (type["name"] == "inputField") }) + inputField["appliedDirectives"] == [[name: 'example', args: [[name: 'argName', value: '"onInputField"']]]] + + } + + def "can filter the directives returned in introspection"() { + def sdl = ''' + directive @example( argName : String = "default") on OBJECT + directive @secret( argName : String = "secret") on OBJECT + + type Query { + hello : Hello + } + + type Hello @example @secret { + world : String + } + ''' + + def schema = TestUtil.schema(sdl) + def filter = new IntrospectionWithDirectivesSupport.DirectivePredicate() { + @Override + boolean isDirectiveIncluded(IntrospectionWithDirectivesSupport.DirectivePredicateEnvironment env) { + return !env.getDirectiveName().contains("secret") + } + } + schema = new IntrospectionWithDirectivesSupport(filter).apply(schema) + + def graphql = GraphQL.newGraphQL(schema).build() + + def query = ''' + { + __schema { + directives { + name + } + types { + name + appliedDirectives { + name + args { + name + value + } + } + } + } + } + ''' + + when: + + def er = graphql.execute(query) + then: + er.errors.isEmpty() + + def helloType = er.data["__schema"]["types"].find({ type -> (type["name"] == "Hello") }) + helloType["appliedDirectives"] == [[name: "example", args: [[name: "argName", value: '"default"']]]] + + def definedDirectives = er.data["__schema"]["directives"] + // secret is filter out + definedDirectives == [[name: "include"], [name: "skip"], [name: "example"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], + [name: "defer"], [name: "experimental_disableErrorPropagation"] + ] + } + + def "can set prefixes onto the Applied types"() { + def sdl = ''' + type Query { + hello : __Hello + } + + type __Hello { + world : _Bar + } + + type _Bar { + bar : String + } + ''' + + def schema = TestUtil.schema(sdl) + def filter = new IntrospectionWithDirectivesSupport.DirectivePredicate() { + @Override + boolean isDirectiveIncluded(IntrospectionWithDirectivesSupport.DirectivePredicateEnvironment env) { + return !env.getDirective().getName().contains("secret") + } + } + def newSchema = new IntrospectionWithDirectivesSupport(filter, "__x__").apply(schema) + def graphql = GraphQL.newGraphQL(newSchema).build() + + def query = ''' + { + __schema { + types { + name + } + } + } + ''' + + when: + def er = graphql.execute(query) + then: + er.errors.isEmpty() + def types = er.data["__schema"]["types"] + + types.find({ type -> (type["name"] == "__x__AppliedDirective") }) != null + types.find({ type -> (type["name"] == "__x__DirectiveArgument") }) != null + + when: + + newSchema = new IntrospectionWithDirectivesSupport(filter, "__").apply(schema) + graphql = GraphQL.newGraphQL(newSchema).build() + er = graphql.execute(query) + + then: + er.errors.isEmpty() + def types2 = er.data["__schema"]["types"] + + types2.find({ type -> (type["name"] == "__AppliedDirective") }) != null + types2.find({ type -> (type["name"] == "__DirectiveArgument") }) != null + } +} diff --git a/src/test/groovy/graphql/language/AstPrinterTest.groovy b/src/test/groovy/graphql/language/AstPrinterTest.groovy index 4086cb7bb9..84c2de667a 100644 --- a/src/test/groovy/graphql/language/AstPrinterTest.groovy +++ b/src/test/groovy/graphql/language/AstPrinterTest.groovy @@ -3,6 +3,8 @@ package graphql.language import graphql.parser.Parser import spock.lang.Specification +import java.nio.CharBuffer + class AstPrinterTest extends Specification { Document parse(String input) { @@ -19,6 +21,16 @@ class AstPrinterTest extends Specification { AstPrinter.printAst(node) } + boolean isParseableAst(ast) { + try { + def document = parse(ast) + return document != null + } catch (Exception ignored) { + return false + } + } + + def starWarsSchema = """ # objects can have comments # over a number of lines @@ -199,7 +211,7 @@ scalar DateTime String output = printAst(document) expect: - output == """query { + output == """{ empireHero: hero(episode: EMPIRE) { name } @@ -235,7 +247,7 @@ fragment comparisonFields on Character { String output = printAst(document) expect: - output == """query { + output == """{ leftComparison: hero(episode: EMPIRE) { ...comparisonFields } @@ -280,7 +292,7 @@ query HeroNameAndFriends($episode: Episode) { def query = ''' query Hero($episode: Episode, $withFriends: Boolean!) { hero ( episode: $episode) { - name + name @repeatable @repeatable friends @include (if : $withFriends) { name } @@ -291,9 +303,10 @@ query Hero($episode: Episode, $withFriends: Boolean!) { String output = printAst(document) expect: + isParseableAst(output) output == '''query Hero($episode: Episode, $withFriends: Boolean!) { hero(episode: $episode) { - name + name @repeatable @repeatable friends @include(if: $withFriends) { name } @@ -332,7 +345,39 @@ query HeroForEpisode($ep: Episode!) { } } ''' + isParseableAst(output) + } + + def "ast printing of inline fragments in compactMode"() { + def query = ''' +query HeroForEpisode($ep: Episode!) { + hero(episode: $ep) { + name + ... on Droid { + primaryFunction + id + } + ... on Human { + height + id } + age { + inMonths + inYears + } + } +}''' + when: + def document = parse(query) + String output = AstPrinter.printAstCompact(document) + + then: + + isParseableAst(output) + + output == 'query HeroForEpisode($ep:Episode!){hero(episode:$ep){name ...on Droid{primaryFunction id}...on Human{height id}age{inMonths inYears}}}' + } + //------------------------------------------------- def "ast printing of default variables"() { @@ -402,6 +447,26 @@ query NullEpisodeQuery { ''' } + def "ast printing of blank string"() { + def query = ''' +query NullEpisodeQuery { + human(id: " ") { + name + } +} +''' + def document = parse(query) + String output = printAst(document) + + expect: + output == '''query NullEpisodeQuery { + human(id: " ") { + name + } +} +''' + } + //------------------------------------------------- def "ast printing of default variables with null"() { def query = ''' @@ -452,8 +517,46 @@ type Query { } + def "print field descriptions"() { + def query = '''type Query { + "description" + field( + "description" + a: String): String +} +''' + def document = parse(query) + String output = printAst(document) + expect: + output == '''type Query { + "description" + field( + "description" + a: String): String +} +''' + } + + def "print empty description"() { + def query = ''' +"" +scalar Demo +''' + def document = parse(query) + String output = printAst(document) + + expect: + output == '''"" +scalar Demo +''' + } + def "print type extensions"() { def query = ''' + extend schema { + query: Query + } + extend type Object @directive { objectField : String } @@ -479,7 +582,11 @@ type Query { String output = printAst(document) expect: - output == '''extend type Object @directive { + output == '''extend schema { + query: Query +} + +extend type Object @directive { objectField: String } @@ -507,10 +614,10 @@ extend input Input @directive { def query = ''' { #comments go away - aliasOfFoo : foo(arg1 : "val1", args2 : "val2") @isCached { # and this comment as well + aliasOfFoo : foo(arg1 : "val1", args2 : "val2") @isCached @orIsItNotCached { # and this comment as well hello } - world @neverCache @okThenCache + world @neverCache @youSaidCache @okThenCache } fragment FX on SomeType { @@ -521,7 +628,17 @@ extend input Input @directive { String output = AstPrinter.printAstCompact(document) expect: - output == '''query {aliasOfFoo:foo(arg1:"val1",args2:"val2") @isCached {hello} world @neverCache @okThenCache} fragment FX on SomeType {aliased:field(withArgs:"argVal",andMoreArgs:"andMoreVals")}''' + isParseableAst(output) + output == '''{aliasOfFoo:foo(arg1:"val1",args2:"val2") @isCached@orIsItNotCached{hello}world @neverCache@youSaidCache@okThenCache} fragment FX on SomeType {aliased:field(withArgs:"argVal",andMoreArgs:"andMoreVals")}''' + } + + def "can tighten fields with no query prefix"() { + when: + def doc = parse("{root { fooA{ midB{ leafB}} fooB{ midB{ leafB }}}}") + def output = AstPrinter.printAstCompact(doc) + then: + isParseableAst(output) + output == "{root{fooA{midB{leafB}}fooB{midB{leafB}}}}" } def "print ast with inline fragment without type condition"() { @@ -539,8 +656,8 @@ extend input Input @directive { String outputFull = AstPrinter.printAst(document) expect: - outputCompact == '''query {foo {... {hello}}}''' - outputFull == '''query { + outputCompact == '''{foo{...{hello}}}''' + outputFull == '''{ foo { ... { hello @@ -548,23 +665,147 @@ extend input Input @directive { } } ''' + isParseableAst(outputCompact) + isParseableAst(outputFull) } def 'StringValue is converted to valid Strings'() { - AstPrinter astPrinter = new AstPrinter(true) - when: - def result = astPrinter.value(new StringValue(strValue)) + def result = AstPrinter.printAstCompact(new StringValue(strValue)) then: result == expected where: - strValue | expected - 'VALUE' | '"VALUE"' - 'VA\n\t\f\n\b\\LUE' | '"VA\\n\\t\\f\\n\\b\\\\LUE"' - 'VA\\L"UE' | '"VA\\\\L\\"UE"' + strValue | expected + 'VALUE' | '"VALUE"' + 'VA\n\t\f\n\b\\LUE' | '"VA\\n\\t\\f\\n\\b\\\\LUE"' + 'VA\\L"UE' | '"VA\\\\L\\"UE"' + } + + def 'Interfaces implementing interfaces'() { + given: + def interfaceType = InterfaceTypeDefinition + .newInterfaceTypeDefinition() + .name("Resource") + .implementz(new TypeName("Node")) + .implementz(new TypeName("Extra")) + .build() + + + when: + def result = AstPrinter.printAstCompact(interfaceType) + + then: + result == "interface Resource implements Node & Extra" + + } + + def 'Interfaces implementing interfaces in extension'() { + given: + def interfaceType = InterfaceTypeExtensionDefinition + .newInterfaceTypeExtensionDefinition() + .name("Resource") + .implementz(new TypeName("Node")) + .implementz(new TypeName("Extra")) + .build() + + when: + def result = AstPrinter.printAstCompact(interfaceType) + + then: + result == "extend interface Resource implements Node & Extra" + + } + + def "directive definitions can be printed"() { + + given: + def directiveDef1 = DirectiveDefinition.newDirectiveDefinition() + .name("d1") + .repeatable(true) + .directiveLocation(DirectiveLocation.newDirectiveLocation().name("FIELD").build()) + .directiveLocation(DirectiveLocation.newDirectiveLocation().name("OBJECT").build()) + .build() + + def directiveDef2 = DirectiveDefinition.newDirectiveDefinition() + .name("d2") + .repeatable(false) + .directiveLocation(DirectiveLocation.newDirectiveLocation().name("FIELD").build()) + .directiveLocation(DirectiveLocation.newDirectiveLocation().name("ENUM").build()) + .build() + + when: + def result = AstPrinter.printAstCompact(directiveDef1) + + then: + result == "directive @d1 repeatable on FIELD | OBJECT" + + when: + result = AstPrinter.printAstCompact(directiveDef2) + + then: + result == "directive @d2 on FIELD | ENUM" + } + def "empty type does not include braces"() { + def sdl = "type Query" + def document = parse(sdl) + + when: + String output = printAst(document) + then: + output == "type Query\n" + } + + def "empty selection set does not include braces"() { + // technically below is not valid graphql and will never be parsed as is + def field_with_empty_selection_set = Field.newField("foo") + .selectionSet(SelectionSet.newSelectionSet().build()) + .build() + + when: + String output = printAst(field_with_empty_selection_set) + then: + output == "foo" + } + + def "printAstTo writes to a StringBuilder instance"() { + def document = parse(starWarsSchema) + def output = new StringBuilder() + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } + + def "printAstTo writes to a Writer instance"() { + def document = parse(starWarsSchema) + def output = new StringWriter() + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } + + def "printAstTo writes to an Appendable instance"() { + def document = parse(starWarsSchema) + def output = CharBuffer.allocate(100) + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + output.flip() + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } } diff --git a/src/test/groovy/graphql/language/AstSignatureTest.groovy b/src/test/groovy/graphql/language/AstSignatureTest.groovy index a9d29f918a..0bf57022cf 100644 --- a/src/test/groovy/graphql/language/AstSignatureTest.groovy +++ b/src/test/groovy/graphql/language/AstSignatureTest.groovy @@ -7,12 +7,11 @@ import static graphql.language.AstPrinter.printAst class AstSignatureTest extends Specification { - def "can make a signature for a query"() { - def query = ''' + def query = ''' query Ouch($secretVariable : String, $otherVariable : Int) { fieldZ fieldX(password : "hunter2", accountBalance : 200000.23, - avatar : { name : "secretPicture", url : "http://some place" } + avatar : { name : "secretPicture", url : "http://someplace" } favouriteThings : [ "brown", "paper", "packages", "tied", "up", "in", "string" ] likesIceCream : true argToAVariable : $secretVariable @@ -53,6 +52,8 @@ class AstSignatureTest extends Specification { field : String } ''' + def "can make a signature for a query"() { + def expectedQuery = '''query Ouch($var1: String, $var2: Int) { fieldX(accountBalance: 0, anotherArg: $var2, argToAVariable: $var1, avatar: {}, favouriteThings: [], likesIceCream: false, password: "") fieldY { @@ -75,4 +76,54 @@ fragment X on SomeType { newDoc != null printAst(newDoc) == expectedQuery } + + def "can make a privacy safe document for a query"() { + + def expectedQuery = '''query Ouch($var1: String, $var2: Int) { + fieldX(accountBalance: 0, anotherArg: $var2, argToAVariable: $var1, avatar: {name : "", url : ""}, favouriteThings: ["", "", "", "", "", "", ""], likesIceCream: false, password: "") + fieldY { + innerFieldA + innerFieldB + innerFieldC + } + fieldZ + ...X +} + +fragment X on SomeType { + fieldX(accountBalance: 0, avatar: {name : "", url : ""}, favouriteThings: ["", "", "", "", "", "", ""], likesIceCream: false, password: "") +} +''' + def doc = TestUtil.parseQuery(query) + when: + def newDoc = new AstSignature().privacySafeQuery(doc, "Ouch") + then: + newDoc != null + printAst(newDoc) == expectedQuery + } + + def "can do signature on queries with no name"() { + def query = """ + { + allIssues(arg1 : "UGC", arg2 : 666) { + id + } + }""" + + def expectedQuery = """{ + allIssues(arg1: "", arg2: 0) { + id + } +} +""" + + def doc = TestUtil.parseQuery(query) + when: + def newDoc = new AstSignature().signatureQuery(doc, null) + then: + newDoc != null + printAst(newDoc) == expectedQuery + + + } } diff --git a/src/test/groovy/graphql/language/AstSorterTest.groovy b/src/test/groovy/graphql/language/AstSorterTest.groovy index 4e9ca7c9d5..498598d715 100644 --- a/src/test/groovy/graphql/language/AstSorterTest.groovy +++ b/src/test/groovy/graphql/language/AstSorterTest.groovy @@ -97,7 +97,7 @@ class AstSorterTest extends Specification { ''' - def expectedQuery = '''query { + def expectedQuery = '''{ unamedQueryX unamedQueryY unamedQueryZ @@ -340,7 +340,7 @@ input InputZ { } ''' - def expectedQuery = '''query { + def expectedQuery = '''{ field(arg: {x : {a : "vala", b : "valb", c : "valc"}, y : "valy", z : "valz"}) } ''' diff --git a/src/test/groovy/graphql/language/AstTransformerTest.groovy b/src/test/groovy/graphql/language/AstTransformerTest.groovy index 130b16c26d..f0eeaed400 100644 --- a/src/test/groovy/graphql/language/AstTransformerTest.groovy +++ b/src/test/groovy/graphql/language/AstTransformerTest.groovy @@ -5,6 +5,7 @@ import graphql.util.TraversalControl import graphql.util.TraverserContext import spock.lang.Specification +import static graphql.language.AstPrinter.printAst import static graphql.language.AstPrinter.printAstCompact import static graphql.util.TreeTransformerUtil.changeNode import static graphql.util.TreeTransformerUtil.deleteNode @@ -37,7 +38,7 @@ class AstTransformerTest extends Specification { then: printAstCompact(newDocument) == - "query {root {foo {midA-modified {leafA} midB-modified {leafB}} bar {midC-modified {leafC} midD-modified {leafD}}}}" + "{root{foo{midA-modified{leafA}midB-modified{leafB}}bar{midC-modified{leafC}midD-modified{leafD}}}}" } def "modify multiple nodes parallel"() { @@ -65,7 +66,7 @@ class AstTransformerTest extends Specification { then: printAstCompact(newDocument) == - "query {root {foo {midA-modified {leafA} midB-modified {leafB}} bar {midC-modified {leafC} midD-modified {leafD}}}}" + "{root{foo{midA-modified{leafA}midB-modified{leafB}}bar{midC-modified{leafC}midD-modified{leafD}}}}" } def "no change at all"() { @@ -115,7 +116,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {foo2}" + printAstCompact(newDocument) == "{foo2}" } @@ -138,7 +139,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {foo2}" + printAstCompact(newDocument) == "{foo2}" } @@ -164,7 +165,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {foo2 {a b}}" + printAstCompact(newDocument) == "{foo2{a b}}" } @@ -190,7 +191,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {foo2 {a b}}" + printAstCompact(newDocument) == "{foo2{a b}}" } @@ -205,7 +206,7 @@ class AstTransformerTest extends Specification { @Override TraversalControl visitSelectionSet(SelectionSet node, TraverserContext context) { if (node.getChildren().isEmpty()) return TraversalControl.CONTINUE; - def selections = node.getSelections() + def selections = new ArrayList<>(node.getSelections()) Collections.sort(selections, { o1, o2 -> (o1.name <=> o2.name) }) Node changed = node.transform({ builder -> builder.selections(selections) }) return changeNode(context, changed) @@ -216,7 +217,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(a_arg:2) {v w} b(b_arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a(a_arg:2){v w}b(b_arg:1){x y}}}" } @@ -230,7 +231,7 @@ class AstTransformerTest extends Specification { @Override TraversalControl visitSelectionSet(SelectionSet node, TraverserContext context) { if (node.getChildren().isEmpty()) return TraversalControl.CONTINUE; - def selections = node.getSelections() + def selections = new ArrayList<>(node.getSelections()) Collections.sort(selections, { o1, o2 -> (o1.name <=> o2.name) }) Node changed = node.transform({ builder -> builder.selections(selections) }) return changeNode(context, changed) @@ -241,7 +242,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(a_arg:2) {v w} b(b_arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a(a_arg:2){v w}b(b_arg:1){x y}}}" } @@ -267,7 +268,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a(arg:1){x y}}}" } @@ -292,7 +293,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a(arg:1){x y}}}" } @@ -317,7 +318,36 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a(arg:1){x y}}}" + + } + + def "delete node through context"() { + def document = TestUtil.parseQuery("{root { a(arg: 1) { x y } toDelete { x y } } }") + + final Map, Object> rootVars = new LinkedHashMap<>(); + rootVars.put(String.class, "toDelete"); + + AstTransformer astTransformer = new AstTransformer() + + def visitor = new NodeVisitorStub() { + + @Override + TraversalControl visitField(Field field, TraverserContext context) { + final String fieldToDelete = context.getVarFromParents(String.class); + if (field.name == fieldToDelete) { + return deleteNode(context); + } else { + return TraversalControl.CONTINUE; + } + } + } + + when: + def newDocument = astTransformer.transform(document, visitor, rootVars) + + then: + printAstCompact(newDocument) == "{root{a(arg:1){x y}}}" } @@ -343,7 +373,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a(arg:1){x y}}}" } @@ -377,8 +407,8 @@ class AstTransformerTest extends Specification { then: - printAstCompact(newDocument) == "query {root {aChanged(arg:1) {y1} b {y2} new}}" - printAstCompact(newDocumentParallel) == "query {root {aChanged(arg:1) {y1} b {y2} new}}" + printAstCompact(newDocument) == "{root{aChanged(arg:1){y1}b{y2}new}}" + printAstCompact(newDocumentParallel) == "{root{aChanged(arg:1){y1}b{y2}new}}" } @@ -401,8 +431,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {foo foo2}" - printAstCompact(newDocumentParallel) == "query {foo foo2}" + printAstCompact(newDocument) == "{foo foo2}" + printAstCompact(newDocumentParallel) == "{foo foo2}" } @@ -425,8 +455,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {foo2 foo}" - printAstCompact(newDocumentParallel) == "query {foo2 foo}" + printAstCompact(newDocument) == "{foo2 foo}" + printAstCompact(newDocumentParallel) == "{foo2 foo}" } @@ -450,7 +480,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {foo2 foo foo3}" + printAstCompact(newDocument) == "{foo2 foo foo3}" } @@ -474,7 +504,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {foo2 foo foo3}" + printAstCompact(newDocument) == "{foo2 foo foo3}" } @@ -502,8 +532,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {root {a(arg:1) {x y} newOne}}" - printAstCompact(newDocumentParallel) == "query {root {a(arg:1) {x y} newOne}}" + printAstCompact(newDocument) == "{root{a(arg:1){x y}newOne}}" + printAstCompact(newDocumentParallel) == "{root{a(arg:1){x y}newOne}}" } @@ -532,8 +562,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {root {a-changed(arg:1) {x y}}}" - printAstCompact(newDocumentParallel) == "query {root {a-changed(arg:1) {x y}}}" + printAstCompact(newDocument) == "{root{a-changed(arg:1){x y}}}" + printAstCompact(newDocumentParallel) == "{root{a-changed(arg:1){x y}}}" } @@ -547,7 +577,7 @@ class AstTransformerTest extends Specification { @Override TraversalControl visitDocument(Document node, TraverserContext context) { - def children = node.getChildren() + def children = new ArrayList<>(node.getChildren()) children.remove(0) def newNode = node.transform({ builder -> builder.definitions(children) }) changeNode(context, newNode) @@ -559,8 +589,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query B {fieldB}" - printAstCompact(newDocumentParallel) == "query B {fieldB}" + printAstCompact(newDocument) == "query B{fieldB}" + printAstCompact(newDocumentParallel) == "query B{fieldB}" } @@ -599,8 +629,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {field(newArg1:10,arg2:2,arg3:10) @directive1 @after1Directive @newDirective2}" - printAstCompact(newDocumentParallel) == "query {field(newArg1:10,arg2:2,arg3:10) @directive1 @after1Directive @newDirective2}" + printAstCompact(newDocument) == "{field(newArg1:10,arg2:2,arg3:10) @directive1@after1Directive@newDirective2}" + printAstCompact(newDocumentParallel) == "{field(newArg1:10,arg2:2,arg3:10) @directive1@after1Directive@newDirective2}" } @@ -631,8 +661,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {field @before @directive1 @after @directive2}" - printAstCompact(newDocumentParallel) == "query {field @before @directive1 @after @directive2}" + printAstCompact(newDocument) == "{field @before@directive1@after@directive2}" + printAstCompact(newDocumentParallel) == "{field @before@directive1@after@directive2}" } @@ -678,8 +708,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {field(arg1:1,a1:10,a4:10,a2:10,a3:10) @d5 @directive1 @d4 @d1 @d2 @d3}" - printAstCompact(newDocumentParallel) == "query {field(arg1:1,a1:10,a4:10,a2:10,a3:10) @d5 @directive1 @d4 @d1 @d2 @d3}" + printAstCompact(newDocument) == "{field(arg1:1,a1:10,a4:10,a2:10,a3:10) @d5@directive1@d4@d1@d2@d3}" + printAstCompact(newDocumentParallel) == "{field(arg1:1,a1:10,a4:10,a2:10,a3:10) @d5@directive1@d4@d1@d2@d3}" } @@ -711,8 +741,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {first-changed second-changed after-second-1 after-second-2}" - printAstCompact(newDocumentParallel) == "query {first-changed second-changed after-second-1 after-second-2}" + printAstCompact(newDocument) == "{first-changed second-changed after-second-1 after-second-2}" + printAstCompact(newDocumentParallel) == "{first-changed second-changed after-second-1 after-second-2}" } @@ -742,7 +772,7 @@ class AstTransformerTest extends Specification { def newDocument = astTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {before-1 before-2 changed after-1 after-2 after-3}" + printAstCompact(newDocument) == "{before-1 before-2 changed after-1 after-2 after-3}" } @@ -767,8 +797,8 @@ class AstTransformerTest extends Specification { def newDocumentParallel = astTransformer.transformParallel(document, visitor) then: - printAstCompact(newDocument) == "query {change3}" - printAstCompact(newDocumentParallel) == "query {change3}" + printAstCompact(newDocument) == "{change3}" + printAstCompact(newDocumentParallel) == "{change3}" } @@ -795,5 +825,105 @@ class AstTransformerTest extends Specification { } + def "regression: changing a property of an extension should not change the extension to a base definition"() { + def document = TestUtil.toDocument(""" + extend schema { query: Query } + extend type MyObjectType { login: String } + extend input MyInputObjectType { login: String } + extend interface MyInterface { login: String } + extend enum MyEnum { MONDAY } + extend scalar MyScalar @myDirective + extend union MyUnion = MyObjectType + """) + + AstTransformer astTransformer = new AstTransformer() + + def visitor = new NodeVisitorStub() { + + @Override + TraversalControl visitFieldDefinition(FieldDefinition fieldDefinition, TraverserContext context) { + if (fieldDefinition.name == "login") { + // change name + FieldDefinition signin = fieldDefinition.transform({ builder -> builder.name("signin") }) + return changeNode(context, signin) + } + return super.visitFieldDefinition(fieldDefinition, context) + } + + @Override + TraversalControl visitInputValueDefinition(InputValueDefinition fieldDefinition, TraverserContext context) { + if (fieldDefinition.name == "login") { + // change name + InputValueDefinition signin = fieldDefinition.transform({ builder -> builder.name("signin") }) + return changeNode(context, signin) + } + return super.visitInputValueDefinition(fieldDefinition, context) + } + + @Override + TraversalControl visitEnumValueDefinition(EnumValueDefinition node, TraverserContext context) { + if (node.name == "MONDAY") { + // change name + return changeNode(context, node.transform({ builder -> builder.name("TUESDAY") })) + } + return super.visitEnumValueDefinition(node, context) + } + + @Override + TraversalControl visitSchemaDefinition(SchemaDefinition node, TraverserContext context) { + if (node instanceof SchemaExtensionDefinition) { + return changeNode(context, node.transformExtension({ + it.operationTypeDefinitions([OperationTypeDefinition.newOperationTypeDefinition() + .name("myQuery") + .typeName(TypeName.newTypeName("MyQuery").build()) + .build()]) + })) + } + return super.visitSchemaDefinition(node, context) + } + } + + when: + def newDocument = astTransformer.transform(document, visitor) + then: + newDocument instanceof Document + + and: + def transformedDoc = newDocument as Document + transformedDoc.definitions.find {it instanceof NamedNode && it.name == "MyObjectType"} instanceof ObjectTypeExtensionDefinition + transformedDoc.definitions.find {it instanceof NamedNode && it.name == "MyInputObjectType"} instanceof InputObjectTypeExtensionDefinition + transformedDoc.definitions.find {it instanceof NamedNode && it.name == "MyInterface"} instanceof InterfaceTypeExtensionDefinition + transformedDoc.definitions.find {it instanceof NamedNode && it.name == "MyEnum"} instanceof EnumTypeExtensionDefinition + transformedDoc.definitions.find {it instanceof NamedNode && it.name == "MyScalar"} instanceof ScalarTypeExtensionDefinition + transformedDoc.definitions.find {it instanceof NamedNode && it.name == "MyUnion"} instanceof UnionTypeExtensionDefinition + transformedDoc.definitions.find {it instanceof SchemaDefinition } instanceof SchemaExtensionDefinition + + and: + printAst(newDocument).trim() == """ + |extend schema { + | myQuery: MyQuery + |} + | + |extend type MyObjectType { + | signin: String + |} + | + |extend input MyInputObjectType { + | signin: String + |} + | + |extend interface MyInterface { + | signin: String + |} + | + |extend enum MyEnum { + | TUESDAY + |} + | + |extend scalar MyScalar @myDirective + | + |extend union MyUnion = MyObjectType + """.trim().stripMargin() + } } diff --git a/src/test/groovy/graphql/language/AstValueHelperTest.groovy b/src/test/groovy/graphql/language/AstValueHelperTest.groovy deleted file mode 100644 index dfc3ffaa1a..0000000000 --- a/src/test/groovy/graphql/language/AstValueHelperTest.groovy +++ /dev/null @@ -1,198 +0,0 @@ -package graphql.language - -import graphql.schema.GraphQLEnumType -import graphql.schema.GraphQLInputObjectType -import spock.lang.Specification - -import static AstValueHelper.astFromValue -import static graphql.Scalars.GraphQLBoolean -import static graphql.Scalars.GraphQLFloat -import static graphql.Scalars.GraphQLID -import static graphql.Scalars.GraphQLInt -import static graphql.Scalars.GraphQLString -import static graphql.language.BooleanValue.newBooleanValue -import static graphql.schema.GraphQLList.list -import static graphql.schema.GraphQLNonNull.nonNull - -class AstValueHelperTest extends Specification { - - def 'converts boolean values to ASTs'() { - expect: - astFromValue(true, GraphQLBoolean).isEqualTo(newBooleanValue(true).build()) - - astFromValue(false, GraphQLBoolean).isEqualTo(newBooleanValue(false).build()) - - astFromValue(null, GraphQLBoolean) == null - - astFromValue(0, GraphQLBoolean).isEqualTo(newBooleanValue(false).build()) - - astFromValue(1, GraphQLBoolean).isEqualTo(newBooleanValue(true).build()) - - def NonNullBoolean = nonNull(GraphQLBoolean) - astFromValue(0, NonNullBoolean).isEqualTo(newBooleanValue(false).build()) - } - - BigInteger bigInt(int i) { - return new BigInteger(String.valueOf(i)) - } - - def 'converts Int values to Int ASTs'() { - expect: - astFromValue(123.0, GraphQLInt).isEqualTo(IntValue.newIntValue(bigInt(123)).build()) - - astFromValue(1e4, GraphQLInt).isEqualTo(IntValue.newIntValue(bigInt(10000)).build()) - } - - def 'converts Float values to Int/Float ASTs'() { - expect: - astFromValue(123.0, GraphQLFloat).isEqualTo(FloatValue.newFloatValue(123.0).build()) - - astFromValue(123.5, GraphQLFloat).isEqualTo(FloatValue.newFloatValue(123.5).build()) - - astFromValue(1e4, GraphQLFloat).isEqualTo(FloatValue.newFloatValue(10000.0).build()) - - astFromValue(1e40, GraphQLFloat).isEqualTo(FloatValue.newFloatValue(1.0e40).build()) - } - - - def 'converts String values to String ASTs'() { - expect: - astFromValue('hello', GraphQLString).isEqualTo(new StringValue('hello')) - - astFromValue('VALUE', GraphQLString).isEqualTo(new StringValue('VALUE')) - - astFromValue('VA\n\t\f\r\b\\LUE', GraphQLString).isEqualTo(new StringValue('VA\n\t\f\r\b\\LUE')) - - astFromValue('VA\\L\"UE', GraphQLString).isEqualTo(new StringValue('VA\\L\"UE')) - - astFromValue(123, GraphQLString).isEqualTo(new StringValue('123')) - - astFromValue(false, GraphQLString).isEqualTo(new StringValue('false')) - - astFromValue(null, GraphQLString) == null - } - - def 'converts ID values to Int/String ASTs'() { - expect: - astFromValue('hello', GraphQLID).isEqualTo(new StringValue('hello')) - - astFromValue('VALUE', GraphQLID).isEqualTo(new StringValue('VALUE')) - - // Note: EnumValues cannot contain non-identifier characters - astFromValue('VA\nLUE', GraphQLID).isEqualTo(new StringValue('VA\nLUE')) - - // Note: IntValues are used when possible. - astFromValue(123, GraphQLID).isEqualTo(new IntValue(bigInt(123))) - - astFromValue(null, GraphQLID) == null - } - - - def 'does not converts NonNull values to NullValue'() { - expect: - def NonNullBoolean = nonNull(GraphQLBoolean) - astFromValue(null, NonNullBoolean) == null - } - - def complexValue = { someArbitrary: 'complexValue' } - - - def myEnum = GraphQLEnumType.newEnum().name('MyEnum') - .value('HELLO') - .value('GOODBYE') - .value('COMPLEX', complexValue) - .build() - - def 'converts string values to Enum ASTs if possible'() { - expect: - astFromValue('HELLO', myEnum).isEqualTo(new EnumValue('HELLO')) - - astFromValue(complexValue, myEnum).isEqualTo(new EnumValue('COMPLEX')) - } - - def 'converts array values to List ASTs'() { - expect: - astFromValue(['FOO', 'BAR'], list(GraphQLString)).isEqualTo( - new ArrayValue([new StringValue('FOO'), new StringValue('BAR')]) - ) - - - astFromValue(['HELLO', 'GOODBYE'], list(myEnum)).isEqualTo( - new ArrayValue([new EnumValue('HELLO'), new EnumValue('GOODBYE')]) - ) - } - - def 'converts list singletons'() { - expect: - astFromValue('FOO', list(GraphQLString)).isEqualTo( - new StringValue('FOO') - ) - } - - class SomePojo { - def foo = 3 - def bar = "HELLO" - } - class SomePojoWithFields { - public float foo = 3 - public String bar = "HELLO" - } - - def 'converts input objects'() { - given: - def inputObj = GraphQLInputObjectType.newInputObject() - .name('MyInputObj') - .field({ f -> f.name("foo").type(GraphQLFloat) }) - .field({ f -> f.name("bar").type(myEnum) }) - .build() - expect: - - astFromValue([foo: 3, bar: 'HELLO'], inputObj).isEqualTo( - new ObjectValue([new ObjectField("foo", new IntValue(bigInt(3))), - new ObjectField("bar", new EnumValue('HELLO')), - ]) - ) - - astFromValue(new SomePojo(), inputObj).isEqualTo( - new ObjectValue([new ObjectField("foo", new IntValue(bigInt(3))), - new ObjectField("bar", new EnumValue('HELLO')), - ]) - ) - - astFromValue(new SomePojoWithFields(), inputObj).isEqualTo( - new ObjectValue([new ObjectField("foo", new IntValue(bigInt(3))), - new ObjectField("bar", new EnumValue('HELLO')), - ]) - ) - - - } - - def 'converts input objects with explicit nulls'() { - expect: - def inputObj = GraphQLInputObjectType.newInputObject() - .name('MyInputObj') - .field({ f -> f.name("foo").type(GraphQLFloat) }) - .field({ f -> f.name("bar").type(myEnum) }) - .build() - - astFromValue([foo: null], inputObj).isEqualTo( - new ObjectValue([new ObjectField("foo", null)]) - ) - } - - def 'parse ast literals'() { - expect: - AstValueHelper.valueFromAst(valueLiteral) in expectedValue - - where: - valueLiteral | expectedValue - '"s"' | StringValue.class - 'true' | BooleanValue.class - '666' | IntValue.class - '666.6' | FloatValue.class - '["A", "B", "C"]' | ArrayValue.class - '{string : "s", integer : 1, boolean : true}' | ObjectValue.class - } - -} diff --git a/src/test/groovy/graphql/language/DirectiveTest.groovy b/src/test/groovy/graphql/language/DirectiveTest.groovy index 8821c500cd..0b3d2e0506 100644 --- a/src/test/groovy/graphql/language/DirectiveTest.groovy +++ b/src/test/groovy/graphql/language/DirectiveTest.groovy @@ -36,17 +36,14 @@ class DirectiveTest extends Specification { new Directive("repeated", [new Argument("a1", new StringValue("v1"))]), new Directive("repeated", [new Argument("a1", new StringValue("v2"))]), ] - def directivesMap = NodeUtil.directivesByName(directives) - expect: - - // - // other parts of the system ensure that repeated directives are invalid, but if we manually create them - // we always return the first + when: + def directivesMap = NodeUtil.allDirectivesByName(directives) + then: directivesMap.size() == 3 - directivesMap.get("d1") == d1 + directivesMap.get("d1") == [d1] directivesMap.get("null") == null - directivesMap.get("repeated").getArgument("a1").getValue().isEqualTo(new StringValue("v1")) + directivesMap.get("repeated").collect({ d -> d.getName() }) == ["repeated", "repeated"] } } diff --git a/src/test/groovy/graphql/language/DocumentTest.groovy b/src/test/groovy/graphql/language/DocumentTest.groovy index 2c74b9c9d8..2aea51969f 100644 --- a/src/test/groovy/graphql/language/DocumentTest.groovy +++ b/src/test/groovy/graphql/language/DocumentTest.groovy @@ -43,4 +43,50 @@ class DocumentTest extends Specification { expected == actual } + + def "can give back one definition"() { + def doc = TestUtil.parseQuery(''' + query foo { + field + } + + query bar { + field + } + + type Query { + a : String + } + + ''') + + when: + def definition = doc.getFirstDefinitionOfType(OperationDefinition.class) + then: + definition.isPresent() + + when: + def operationDefinition = definition.get() + then: + operationDefinition instanceof OperationDefinition + operationDefinition.getName() == "foo" + + + when: + definition = doc.getOperationDefinition("bar") + then: + definition.isPresent() + + when: + operationDefinition = definition.get() + then: + operationDefinition instanceof OperationDefinition + operationDefinition.getName() == "bar" + + when: + definition = doc.getOperationDefinition("baz") + then: + !definition.isPresent() + + } } diff --git a/src/test/groovy/graphql/language/NodeUtilTest.groovy b/src/test/groovy/graphql/language/NodeUtilTest.groovy index d4ef91a8d1..b5265f276a 100644 --- a/src/test/groovy/graphql/language/NodeUtilTest.groovy +++ b/src/test/groovy/graphql/language/NodeUtilTest.groovy @@ -1,5 +1,6 @@ package graphql.language + import graphql.TestUtil import graphql.execution.UnknownOperationException import spock.lang.Specification @@ -35,4 +36,17 @@ class NodeUtilTest extends Specification { def ex = thrown(UnknownOperationException) ex.message == "Unknown operation named 'Unknown'." } + + def d1 = Directive.newDirective().name("d1").build() + def d2 = Directive.newDirective().name("d2").build() + def d3r = Directive.newDirective().name("d3").build() + + def "can create a map of all directives"() { + when: + def result = NodeUtil.allDirectivesByName([d1, d2, d3r, d3r]) + then: + result == [d1: [d1], d2: [d2], d3: [d3r, d3r],] + } + + } diff --git a/src/test/groovy/graphql/language/NodeVisitorStubTest.groovy b/src/test/groovy/graphql/language/NodeVisitorStubTest.groovy index 77d1e96b15..8ca86ca936 100644 --- a/src/test/groovy/graphql/language/NodeVisitorStubTest.groovy +++ b/src/test/groovy/graphql/language/NodeVisitorStubTest.groovy @@ -140,7 +140,7 @@ class NodeVisitorStubTest extends Specification { FieldDefinition.newFieldDefinition().build() | 'visitFieldDefinition' InputValueDefinition.newInputValueDefinition().build() | 'visitInputValueDefinition' InputValueDefinition.newInputValueDefinition().build() | 'visitInputValueDefinition' - new ObjectField("", null) | 'visitObjectField' + new ObjectField("a", IntValue.of(1)) | 'visitObjectField' OperationTypeDefinition.newOperationTypeDefinition().build() | 'visitOperationTypeDefinition' OperationTypeDefinition.newOperationTypeDefinition().build() | 'visitOperationTypeDefinition' SelectionSet.newSelectionSet().build() | 'visitSelectionSet' diff --git a/src/test/groovy/graphql/language/PrettyAstPrinterTest.groovy b/src/test/groovy/graphql/language/PrettyAstPrinterTest.groovy new file mode 100644 index 0000000000..0fab95cbf6 --- /dev/null +++ b/src/test/groovy/graphql/language/PrettyAstPrinterTest.groovy @@ -0,0 +1,521 @@ +package graphql.language + +import spock.lang.Specification + +class PrettyAstPrinterTest extends Specification { + + def "can print type with comments"() { + given: + def input = ''' +# before description +""" Description """ +# before def #1 +# before def #2 +type Query { # beginning of block +a: A b: B + # end of block inside #1 +# end of block inside #2 +} # end of block +''' + + def expected = '''# before description +""" + Description +""" +# before def #1 +# before def #2 +type Query { # beginning of block + a: A + b: B + # end of block inside #1 + # end of block inside #2 +} # end of block +''' + when: + def result = print(input) + + then: + result == expected + } + + + def "can print type with no comments"() { + given: + def input = ''' +""" Description """ +type Query { +a: A b: B} +''' + + def expected = '''""" + Description +""" +type Query { + a: A + b: B +} +''' + when: + def result = print(input) + then: + result == expected + } + + + def "can print interface with comments"() { + given: + def input = ''' +# before description +""" Description """ +# before def #1 +# before def #2 +interface MyInterface { # beginning of block +a: A b: B} # end of block +''' + + def expected = '''# before description +""" + Description +""" +# before def #1 +# before def #2 +interface MyInterface { # beginning of block + a: A + b: B +} # end of block +''' + when: + def result = print(input) + + then: + result == expected + } + + + def "can print interface with no comments"() { + given: + def input = ''' +""" Description """ +interface MyInterface { +a: A b: B} +''' + + def expected = '''""" + Description +""" +interface MyInterface { + a: A + b: B +} +''' + when: + def result = print(input) + then: + result == expected + } + + + def "can print fields with comments"() { + given: + def input = ''' +# before type +type MyType { # beginning of block + +# before field A #1 + +# before field A #2 +""" Description fieldA """ +# before field A #3 + a(arg1: String, arg2: String, arg3: String): A # after field A + # before field B #1 +b(arg1: String, arg2: String, arg3: String): B # after field B +} # end of block +''' + + def expected = '''# before type +type MyType { # beginning of block + # before field A #1 + # before field A #2 + """ + Description fieldA + """ + # before field A #3 + a(arg1: String, arg2: String, arg3: String): A # after field A + # before field B #1 + b(arg1: String, arg2: String, arg3: String): B # after field B +} # end of block +''' + when: + def result = print(input) + + then: + result == expected + } + + + def "can print field arguments with comments"() { + given: + def input = '''type MyType { +""" Description fieldA """ + a(arg1: String # arg1 #1 + # arg2 #1 + """ Description arg2 """ + # arg2 #2 + arg2: String, arg3: String # arg3 #1 + # after all args + ): A # after field A +} +''' + + def expected = '''type MyType { + """ + Description fieldA + """ + a( + arg1: String # arg1 #1 + # arg2 #1 + """ + Description arg2 + """ + # arg2 #2 + arg2: String + arg3: String # arg3 #1 + # after all args + ): A # after field A +} +''' + when: + def result = print(input) + + then: + result == expected + } + + + def "can print schema keeping document level comments"() { + given: + def input = ''' # start of document + +# before Query def + +type Query {a: A b: B} +type MyType {field(id: ID!): MyType! listField: [MyType!]!} +enum MyEnum {VALUE_1 VALUE_2} +# end of document #1 +# end of document #2 +''' + + def expected = """# start of document +# before Query def +type Query { + a: A + b: B +} + +type MyType { + field(id: ID!): MyType! + listField: [MyType!]! +} + +enum MyEnum { + VALUE_1 + VALUE_2 +} +# end of document #1 +# end of document #2 +""" + + when: + def result = print(input) + then: + + result == expected + } + + + def "can print comments between implements"() { + given: + def input = ''' +type MyType implements A & +# interface B #1 + # interface B #2 + B + & + # interface C + C {a: A} +''' + + def expected = '''type MyType implements + A & + # interface B #1 + # interface B #2 + B & + # interface C + C + { + a: A +} +''' + + when: + def result = print(input) + then: + + result == expected + } + + + def "can print type implementing interfaces with no comments"() { + given: + def input = ''' +type MyType implements A & + B & + C + & D + & E { # trailing comment + a: A} +''' + + def expected = '''type MyType implements A & B & C & D & E { # trailing comment + a: A +} +''' + + when: + def result = print(input) + then: + + result == expected + } + + + def "can print enums without comments"() { + given: + def input = ''' +enum MyEnum { + VALUE_1 +VALUE_2 VALUE_3 +} +''' + + def expected = '''enum MyEnum { + VALUE_1 + VALUE_2 + VALUE_3 +} +''' + + when: + def result = print(input) + then: + + result == expected + } + + + def "can print comments in enums"() { + given: + def input = ''' +# before def +enum MyEnum { # inside block #1 +# before VALUE_1 #1 + """ VALUE_1 description """ + # before VALUE_1 #2 + VALUE_1 # after VALUE_1 +VALUE_2 + #inside block #2 +} +''' + + def expected = '''# before def +enum MyEnum { # inside block #1 + # before VALUE_1 #1 + """ + VALUE_1 description + """ + # before VALUE_1 #2 + VALUE_1 # after VALUE_1 + VALUE_2 + #inside block #2 +} +''' + + when: + def result = print(input) + then: + + result == expected + } + + + def "can print comments in scalars"() { + given: + def input = ''' +# before def #1 +""" Description """ + # before def #2 +scalar +MyScalar # def trailing +# after def +''' + + def expected = '''# before def #1 +""" + Description +""" +# before def #2 +scalar MyScalar # def trailing +# after def +''' + + when: + def result = print(input) + then: + + result == expected + } + + + def "can print comments in directives"() { + given: + def input = ''' +# before def #1 +""" Description def """ + # before def #2 +directive +@myDirective( # inside block #1 + # arg1 #1 + """ Description arg1 """ + + # arg1 #2 + arg1: String! # arg1 trailing + # arg2 #1 + arg2: ID arg3: String! # arg3 trailing + # inside block #1 + ) on FIELD_DEFINITION # trailing def +# after def +''' + + def expected = '''# before def #1 +""" + Description def +""" +# before def #2 +directive @myDirective( # inside block #1 + # arg1 #1 + """ + Description arg1 + """ + # arg1 #2 + arg1: String! # arg1 trailing + # arg2 #1 + arg2: ID + arg3: String! # arg3 trailing + # inside block #1 +) on FIELD_DEFINITION # trailing def +# after def +''' + + when: + def result = print(input) + then: + + result == expected + } + + def "can print extended type with comments"() { + given: + def input = ''' +# before description +extend type Query { # beginning of block +a: A b: B + # end of block inside #1 +# end of block inside #2 +} # end of block +''' + + def expected = '''# before description +extend type Query { # beginning of block + a: A + b: B + # end of block inside #1 + # end of block inside #2 +} # end of block +''' + when: + def result = print(input) + + then: + result == expected + } + + + def "can print input type with comments"() { + given: + def input = ''' +# before description +""" Description """ +# before def #1 +# before def #2 +input MyInput { # beginning of block +a: A b: B + # end of block inside #1 +# end of block inside #2 +} # end of block +''' + + def expected = '''# before description +""" + Description +""" +# before def #1 +# before def #2 +input MyInput { # beginning of block + a: A + b: B + # end of block inside #1 + # end of block inside #2 +} # end of block +''' + when: + def result = print(input) + + then: + result == expected + } + + def "can use print with tab indent"() { + given: + def input = ''' +type Query { +field( +# comment +a: A, b: B): Type +} +''' + + def expected = '''type Query { +\tfield( +\t\t# comment +\t\ta: A +\t\tb: B +\t): Type +} +''' + when: + def options = PrettyAstPrinter.PrettyPrinterOptions + .builder() + .indentType(PrettyAstPrinter.PrettyPrinterOptions.IndentType.TAB) + .indentWith(1) + .build() + + def result = PrettyAstPrinter.print(input, options) + + then: + result == expected + } + + private static String print(String input) { + return PrettyAstPrinter.print(input, PrettyAstPrinter.PrettyPrinterOptions.defaultOptions()) + } +} diff --git a/src/test/groovy/graphql/language/SerialisationTest.groovy b/src/test/groovy/graphql/language/SerialisationTest.groovy index 4174834dc2..8bd4ae46af 100644 --- a/src/test/groovy/graphql/language/SerialisationTest.groovy +++ b/src/test/groovy/graphql/language/SerialisationTest.groovy @@ -112,7 +112,11 @@ class SerialisationTest extends Specification { when: GraphQLError syntaxError1 = new InvalidSyntaxError(srcLoc(1, 1), "Bad Syntax 1") - GraphQLError validationError2 = new ValidationError(ValidationErrorType.FieldUndefined, srcLoc(2, 2), "Bad Query 2") + GraphQLError validationError2 = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.FieldUndefined) + .sourceLocation(srcLoc(2, 2)) + .description("Bad Query 2") + .build() def originalEntry = new PreparsedDocumentEntry([syntaxError1, validationError2]) PreparsedDocumentEntry newEntry = serialisedDownAndBack(originalEntry) @@ -122,7 +126,47 @@ class SerialisationTest extends Specification { newEntry.getErrors().size() == 2 newEntry.getErrors().get(0).getMessage() == syntaxError1.getMessage() newEntry.getErrors().get(0).getLocations() == syntaxError1.getLocations() + newEntry.getErrors().get(1).getMessage() == validationError2.getMessage() + newEntry.getErrors().get(1).getLocations() == validationError2.getLocations() + } + + def "PreparsedDocumentEntry with error is serializable"() { + + when: + GraphQLError syntaxError1 = new InvalidSyntaxError(srcLoc(1, 1), "Bad Syntax 1") + def originalEntry = new PreparsedDocumentEntry(syntaxError1) + + PreparsedDocumentEntry newEntry = serialisedDownAndBack(originalEntry) + + then: + + newEntry.getErrors().size() == 1 + newEntry.getErrors().get(0).getMessage() == syntaxError1.getMessage() + newEntry.getErrors().get(0).getLocations() == syntaxError1.getLocations() + } + def "PreparsedDocumentEntry with errors and document is serializable"() { + when: + + Document originalDoc = TestUtil.parseQuery(query) + GraphQLError syntaxError1 = new InvalidSyntaxError(srcLoc(1, 1), "Bad Syntax 1") + GraphQLError validationError2 = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.FieldUndefined) + .sourceLocation(srcLoc(2, 2)) + .description("Bad Query 2") + .build() + def originalEntry = new PreparsedDocumentEntry(originalDoc, [syntaxError1, validationError2]) + def originalAst = AstPrinter.printAst(originalEntry.getDocument()) + PreparsedDocumentEntry newEntry = serialisedDownAndBack(originalEntry) + + def newAst = AstPrinter.printAst(newEntry.getDocument()) + + then: + + originalAst == newAst + newEntry.getErrors().size() == 2 + newEntry.getErrors().get(0).getMessage() == syntaxError1.getMessage() + newEntry.getErrors().get(0).getLocations() == syntaxError1.getLocations() newEntry.getErrors().get(1).getMessage() == validationError2.getMessage() newEntry.getErrors().get(1).getLocations() == validationError2.getLocations() } diff --git a/src/test/groovy/graphql/language/SourceLocationTest.groovy b/src/test/groovy/graphql/language/SourceLocationTest.groovy new file mode 100644 index 0000000000..f5e71e6f72 --- /dev/null +++ b/src/test/groovy/graphql/language/SourceLocationTest.groovy @@ -0,0 +1,71 @@ +package graphql.language + +import graphql.parser.MultiSourceReader +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.SchemaParser +import spock.lang.Specification + +import static graphql.schema.FieldCoordinates.coordinates + +class SourceLocationTest extends Specification { + + def "can get source location"() { + def sdl = """ + type Query { + a : A! + } + + type A { + b : B + } + + type B { + c : String + } + """ + + def sourceReader = MultiSourceReader.newMultiSourceReader().string(sdl, "sourceName").build() + + def definitionRegistry = new SchemaParser().parse(sourceReader) + when: + def schema = new SchemaGenerator().makeExecutableSchema(definitionRegistry, RuntimeWiring.MOCKED_WIRING) + def schemaElement = schema.getType("Query") + def location = SourceLocation.getLocation(schemaElement) + + then: + location.sourceName == "sourceName" + location.line == 2 + location.column == 13 + + when: + schemaElement = schema.getFieldDefinition(coordinates("Query", "a")) + location = SourceLocation.getLocation(schemaElement) + + then: + location.sourceName == "sourceName" + location.line == 3 + location.column == 17 + + when: + schemaElement = schema.getFieldDefinition(coordinates("Query", "a")).getType() + // unwrapped + location = SourceLocation.getLocation(schemaElement) + + then: + location.sourceName == "sourceName" + location.line == 6 + location.column == 13 + + when: + schemaElement = schema.getType("A") + location = SourceLocation.getLocation(schemaElement) + + then: + location.sourceName == "sourceName" + location.line == 6 + location.column == 13 + + + } +} diff --git a/src/test/groovy/graphql/nextgen/GraphqlNextGenTest.groovy b/src/test/groovy/graphql/nextgen/GraphqlNextGenTest.groovy deleted file mode 100644 index 5b59e6ca9c..0000000000 --- a/src/test/groovy/graphql/nextgen/GraphqlNextGenTest.groovy +++ /dev/null @@ -1,32 +0,0 @@ -package graphql.nextgen - - -import graphql.schema.DataFetcher -import spock.lang.Specification - -import static graphql.ExecutionInput.newExecutionInput -import static graphql.TestUtil.schema - -class GraphqlNextGenTest extends Specification { - - def "simple query"() { - given: - def dataFetchers = [ - Query: [hello: { env -> "world" } as DataFetcher] - ] - - def schema = schema(''' - type Query { - hello : String! - } - ''', dataFetchers) - - def graphQL = GraphQL.newGraphQL(schema).build() - - when: - def result = graphQL.executeAsync(newExecutionInput('{ hello }')).get() - - then: - result.data == [hello: 'world'] - } -} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedFieldTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedFieldTest.groovy new file mode 100644 index 0000000000..6debbb2ff2 --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedFieldTest.groovy @@ -0,0 +1,62 @@ +package graphql.normalized + +import graphql.TestUtil +import graphql.execution.CoercedVariables +import graphql.language.Document +import graphql.schema.GraphQLSchema +import spock.lang.Specification + +class ExecutableNormalizedFieldTest extends Specification { + + def "can get children of object type"() { + + String schema = """ + type Query{ + pets: [Pet] + } + interface Pet { + id: ID + name : String! + } + type Cat implements Pet{ + id: ID + name : String! + meow : String + } + type Dog implements Pet{ + id: ID + name : String! + woof : String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pets { + id + name + ... on Dog { + woof + } + ... on Cat { + meow + } + } + } + + """ + Document document = TestUtil.parseQuery(query) + + def normalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + + def pets = normalizedOperation.getTopLevelFields()[0] + def allChildren = pets.getChildren() + def dogFields = pets.getChildren("Dog") + + expect: + allChildren.collect { it.name } == ["id", "name", "woof", "meow"] + dogFields.collect { it.name } == ["id", "name", "woof"] + } + +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryDeferTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryDeferTest.groovy new file mode 100644 index 0000000000..f861fcf222 --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryDeferTest.groovy @@ -0,0 +1,908 @@ +package graphql.normalized + +import graphql.AssertException +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.RawVariables +import graphql.language.Document +import graphql.schema.GraphQLSchema +import graphql.util.TraversalControl +import graphql.util.Traverser +import graphql.util.TraverserContext +import graphql.util.TraverserVisitorStub +import spock.lang.Specification + +class ExecutableNormalizedOperationFactoryDeferTest extends Specification { + String schema = """ + directive @defer(if: Boolean, label: String) on FRAGMENT_SPREAD | INLINE_FRAGMENT + + type Query { + dog: Dog + animal: Animal + mammal: Mammal + } + + interface LivingThing { + age: Int + } + + interface Animal implements LivingThing { + name: String + age: Int + } + + type Dog implements Animal & LivingThing { + name: String + age: Int + breed: String + owner: Person + } + + type Cat implements Animal & LivingThing { + name: String + age: Int + breed: String + color: String + siblings: [Cat] + } + + type Fish implements Animal & LivingThing { + name: String + age: Int + } + + type Person { + firstname: String + lastname: String + bestFriend: Person + } + + union Mammal = Dog | Cat + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + def "defer on a single field via inline fragment without type"() { + given: + + String query = ''' + query q { + dog { + name + ... @defer(label: "breed-defer") { + breed + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name', + 'Dog.breed defer{[label=breed-defer;types=[Dog]]}', + ] + } + + def "fragment on interface field with no type"() { + given: + + String query = ''' + query q { + animal { + ... @defer { + name + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + "[Cat, Dog, Fish].name defer{[label=null;types=[Cat, Dog, Fish]]}", + ] + } + + def "fragments on non-conditional fields"() { + given: + + String query = ''' + query q { + animal { + ... on Cat @defer { + name + } + ... on Dog @defer { + name + } + ... on Animal @defer { + name + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + "[Cat, Dog, Fish].name defer{[label=null;types=[Cat]],[label=null;types=[Dog]],[label=null;types=[Cat, Dog, Fish]]}", + ] + } + + def "fragments on subset of non-conditional fields"() { + given: + + String query = ''' + query q { + animal { + ... on Cat @defer { + name + } + ... on Dog @defer { + name + } + ... on Fish { + name + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + "[Cat, Dog, Fish].name defer{[label=null;types=[Cat]],[label=null;types=[Dog]]}", + ] + } + + def "field on multiple defer declarations is associated with "() { + given: + String query = ''' + query q { + dog { + ... @defer { + name + age + } + ... @defer { + age + } + } + } + ''' + Map variables = [:] + + when: + def executableNormalizedOperation = createExecutableNormalizedOperations(query, variables); + + List printedTree = printTreeWithIncrementalExecutionDetails(executableNormalizedOperation) + + then: + + def nameField = findField(executableNormalizedOperation, "Dog", "name") + def ageField = findField(executableNormalizedOperation, "Dog", "age") + + nameField.deferredExecutions.size() == 1 + ageField.deferredExecutions.size() == 2 + + // age field is associated with 2 defer executions, one of then is shared with "name" the other isn't + ageField.deferredExecutions.any { + it == nameField.deferredExecutions[0] + } + + ageField.deferredExecutions.any { + it != nameField.deferredExecutions[0] + } + + printedTree == ['Query.dog', + "Dog.name defer{[label=null;types=[Dog]]}", + "Dog.age defer{[label=null;types=[Dog]],[label=null;types=[Dog]]}", + ] + } + + def "fragment on interface"() { + given: + + String query = ''' + query q { + animal { + ... on Animal @defer { + name + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + '[Cat, Dog, Fish].name defer{[label=null;types=[Cat, Dog, Fish]]}', + ] + } + + def "fragment on distant interface"() { + given: + + String query = ''' + query q { + animal { + ... on LivingThing @defer { + age + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + '[Cat, Dog, Fish].age defer{[label=null;types=[Cat, Dog, Fish]]}', + ] + } + + def "fragment on union"() { + given: + + String query = ''' + query q { + mammal { + ... on Dog @defer { + name + breed + } + ... on Cat @defer { + name + breed + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.mammal', + '[Dog, Cat].name defer{[label=null;types=[Cat]],[label=null;types=[Dog]]}', + 'Dog.breed defer{[label=null;types=[Dog]]}', + 'Cat.breed defer{[label=null;types=[Cat]]}', + ] + } + + def "fragments on interface"() { + given: + + String query = ''' + query q { + animal { + ... on Animal @defer { + name + } + ... on Animal @defer { + age + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + '[Cat, Dog, Fish].name defer{[label=null;types=[Cat, Dog, Fish]]}', + '[Cat, Dog, Fish].age defer{[label=null;types=[Cat, Dog, Fish]]}', + ] + } + + def "defer on a subselection of non-conditional fields"() { + given: + + String query = ''' + query q { + animal { + ... on Cat @defer { + name + } + ... on Dog { + name + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + '[Cat, Dog].name defer{[label=null;types=[Cat]]}', + ] + } + + def "fragments on conditional fields"() { + given: + + String query = ''' + query q { + animal { + ... on Cat @defer { + breed + } + ... on Dog @defer { + breed + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + 'Cat.breed defer{[label=null;types=[Cat]]}', + 'Dog.breed defer{[label=null;types=[Dog]]}' + ] + } + + def "defer on a single field via inline fragment with type"() { + given: + + String query = ''' + query q { + dog { + name + ... on Dog @defer(label: "breed-defer") { + breed + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name', + 'Dog.breed defer{[label=breed-defer;types=[Dog]]}', + ] + } + + def "1 defer on 2 fields"() { + given: + String query = ''' + query q { + animal { + ... @defer { + name + } + + ... on Dog @defer { + name + breed + } + + ... on Cat @defer { + name + breed + } + } + } + ''' + + Map variables = [:] + + when: + def executableNormalizedOperation = createExecutableNormalizedOperations(query, variables); + + List printedTree = printTreeWithIncrementalExecutionDetails(executableNormalizedOperation) + + then: "should result in the same instance of defer block" + def nameField = findField(executableNormalizedOperation,"[Cat, Dog, Fish]","name") + def dogBreedField = findField(executableNormalizedOperation, "Dog", "breed") + def catBreedField = findField(executableNormalizedOperation, "Cat", "breed") + + nameField.deferredExecutions.size() == 3 + dogBreedField.deferredExecutions.size() == 1 + catBreedField.deferredExecutions.size() == 1 + + // nameField should share a defer block with each of the other fields + nameField.deferredExecutions.any { + it == dogBreedField.deferredExecutions[0] + } + nameField.deferredExecutions.any { + it == catBreedField.deferredExecutions[0] + } + // also, nameField should have a defer block that is not shared with any other field + nameField.deferredExecutions.any { + it != dogBreedField.deferredExecutions[0] && + it != catBreedField.deferredExecutions[0] + } + + printedTree == ['Query.animal', + '[Cat, Dog, Fish].name defer{[label=null;types=[Cat]],[label=null;types=[Dog]],[label=null;types=[Cat, Dog, Fish]]}', + 'Dog.breed defer{[label=null;types=[Dog]]}', + 'Cat.breed defer{[label=null;types=[Cat]]}', + ] + } + + def "2 defers on 2 fields"() { + given: + + String query = ''' + query q { + dog { + ... @defer{ + name + } + ... @defer{ + breed + } + } + } + ''' + + Map variables = [:] + + when: + def executableNormalizedOperation = createExecutableNormalizedOperations(query, variables); + + List printedTree = printTreeWithIncrementalExecutionDetails(executableNormalizedOperation) + + then: "should result in 2 different instances of defer" + def nameField = findField(executableNormalizedOperation, "Dog", "name") + def breedField = findField(executableNormalizedOperation, "Dog", "breed") + + nameField.deferredExecutions.size() == 1 + breedField.deferredExecutions.size() == 1 + + // different label instances + nameField.deferredExecutions[0] != breedField.deferredExecutions[0] + + printedTree == ['Query.dog', + 'Dog.name defer{[label=null;types=[Dog]]}', + 'Dog.breed defer{[label=null;types=[Dog]]}', + ] + } + + def "defer on a fragment definition"() { + given: + + String query = ''' + query q { + dog { + ... DogFrag @defer(label: "breed-defer") + } + } + + fragment DogFrag on Dog { + name + breed + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=breed-defer;types=[Dog]]}', + 'Dog.breed defer{[label=breed-defer;types=[Dog]]}', + ] + } + + def "multiple defer on same field with different labels"() { + given: + + String query = ''' + query q { + dog { + ... @defer(label: "name-defer") { + name + } + + ... @defer(label: "another-name-defer") { + name + } + } + } + + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=another-name-defer;types=[Dog]],[label=name-defer;types=[Dog]]}' + ] + } + + def "multiple fields and a single defer"() { + given: + + String query = ''' + query q { + dog { + ... @defer(label: "name-defer") { + name + } + + ... { + name + } + } + } + + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=name-defer;types=[Dog]]}', + ] + } + + def "multiple fields and a single defer - no label"() { + given: + + String query = ''' + query q { + dog { + ... @defer { + name + } + + ... { + name + } + } + } + + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=null;types=[Dog]]}', + ] + } + + def "multiple fields and multiple defers - no label"() { + given: + + String query = ''' + query q { + dog { + ... @defer { + name + } + + ... @defer { + name + } + } + } + + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=null;types=[Dog]],[label=null;types=[Dog]]}', + ] + } + + def "nested defers - no label"() { + given: + + String query = ''' + query q { + dog { + ... @defer { + name + owner { + firstname + ... @defer { + lastname + } + } + } + } + } + + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=null;types=[Dog]]}', + 'Dog.owner defer{[label=null;types=[Dog]]}', + 'Person.firstname', + 'Person.lastname defer{[label=null;types=[Person]]}', + ] + } + + def "nested defers - with labels"() { + given: + + String query = ''' + query q { + dog { + ... @defer(label:"dog-defer") { + name + owner { + firstname + ... @defer(label: "lastname-defer") { + lastname + } + } + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=dog-defer;types=[Dog]]}', + 'Dog.owner defer{[label=dog-defer;types=[Dog]]}', + 'Person.firstname', + 'Person.lastname defer{[label=lastname-defer;types=[Person]]}', + ] + } + + def "nested defers - with named spreads"() { + given: + + String query = ''' + query q { + animal { + name + ... on Dog @defer(label:"dog-defer") { + owner { + firstname + ... @defer(label: "lastname-defer") { + lastname + } + } + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.animal', + '[Cat, Dog, Fish].name', + 'Dog.owner defer{[label=dog-defer;types=[Dog]]}', + 'Person.firstname', + 'Person.lastname defer{[label=lastname-defer;types=[Person]]}', + ] + } + + def "nesting defer blocks that would always result in no data are ignored"() { + given: + + String query = ''' + query q { + dog { + ... @defer(label: "one") { + ... @defer(label: "two") { + ... @defer(label: "three") { + name + } + } + } + } + } + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=three;types=[Dog]]}', + ] + } + + def "'if' argument is respected"() { + given: + + String query = ''' + query q { + dog { + ... @defer(if: false, label: "name-defer") { + name + } + + ... @defer(if: true, label: "another-name-defer") { + name + } + } + } + + ''' + + Map variables = [:] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=another-name-defer;types=[Dog]]}', + ] + } + + def "'if' argument is respected when value is passed through variable"() { + given: + + String query = ''' + query q($if1: Boolean, $if2: Boolean) { + dog { + ... @defer(if: $if1, label: "name-defer") { + name + } + + ... @defer(if: $if2, label: "another-name-defer") { + name + } + } + } + + ''' + + Map variables = [if1: false, if2: true] + + when: + List printedTree = executeQueryAndPrintTree(query, variables) + + then: + printedTree == ['Query.dog', + 'Dog.name defer{[label=another-name-defer;types=[Dog]]}', + ] + } + + private ExecutableNormalizedOperation createExecutableNormalizedOperations(String query, Map variables) { + assertValidQuery(graphQLSchema, query, variables) + Document document = TestUtil.parseQuery(query) + ExecutableNormalizedOperationFactory dependencyGraph = new ExecutableNormalizedOperationFactory() + + return dependencyGraph.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.of(variables), + ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(true), + ) + } + + private List executeQueryAndPrintTree(String query, Map variables) { + assertValidQuery(graphQLSchema, query, variables) + Document document = TestUtil.parseQuery(query) + ExecutableNormalizedOperationFactory dependencyGraph = new ExecutableNormalizedOperationFactory() + + def tree = dependencyGraph.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.of(variables), + ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(true), + ) + return printTreeWithIncrementalExecutionDetails(tree) + } + + private List printTreeWithIncrementalExecutionDetails(ExecutableNormalizedOperation queryExecutionTree) { + def result = [] + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + + traverser.traverse(queryExecutionTree.getTopLevelFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + ExecutableNormalizedField queryExecutionField = context.thisNode() + result << queryExecutionField.printDetails() + printDeferExecutionDetails(queryExecutionField) + return TraversalControl.CONTINUE + } + + String printDeferExecutionDetails(ExecutableNormalizedField field) { + def deferExecutions = field.deferredExecutions + if (deferExecutions == null || deferExecutions.isEmpty()) { + return "" + } + + def deferLabels = new ArrayList<>(deferExecutions) + .sort { it.label } + .sort { it.possibleTypes.collect {it.name} } + .collect { "[label=${it.label};types=${it.possibleTypes.collect{it.name}.sort()}]" } + .join(",") + + return " defer{${deferLabels}}" + } + }) + + result + } + + private static void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + def ei = ExecutionInput.newExecutionInput(query).variables(variables).build() + assert graphQL.execute(ei).errors.size() == 0 + } + + private static ExecutableNormalizedField findField(ExecutableNormalizedOperation operation, String objectTypeNames, String fieldName) { + return operation.normalizedFieldToMergedField + .collect { it.key } + .find { it.fieldName == fieldName + && it.objectTypeNamesToString() == objectTypeNames} + } +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy new file mode 100644 index 0000000000..a04c74f954 --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy @@ -0,0 +1,3297 @@ +package graphql.normalized + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.AbortExecutionException +import graphql.execution.CoercedVariables +import graphql.execution.MergedField +import graphql.execution.RawVariables +import graphql.execution.directives.QueryAppliedDirective +import graphql.introspection.IntrospectionQuery +import graphql.language.Document +import graphql.language.Field +import graphql.language.FragmentDefinition +import graphql.language.OperationDefinition +import graphql.schema.GraphQLDirective +import graphql.schema.GraphQLSchema +import graphql.schema.GraphQLTypeUtil +import graphql.util.TraversalControl +import graphql.util.Traverser +import graphql.util.TraverserContext +import graphql.util.TraverserVisitorStub +import spock.lang.Specification + +import java.util.stream.Collectors +import java.util.stream.IntStream + +import static graphql.TestUtil.schema +import static graphql.language.AstPrinter.printAst +import static graphql.parser.Parser.parseValue +import static graphql.schema.FieldCoordinates.coordinates + +class ExecutableNormalizedOperationFactoryTest extends Specification { + static boolean deferSupport + + + def "test"() { + String schema = """ +type Query{ + animal: Animal +} +interface Animal { + name: String + friends: [Friend] +} + +union Pet = Dog | Cat + +type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] +} + +type Bird implements Animal { + name: String + friends: [Friend] +} + +type Cat implements Animal{ + name: String + friends: [Friend] + breed: String +} + +type Dog implements Animal{ + name: String + breed: String + friends: [Friend] +} + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + animal{ + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + } + }} + + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.animal: Animal', + '--[Bird, Cat, Dog].name: String', + '--otherName: [Bird, Cat, Dog].name: String', + '--Cat.friends: [Friend]', + '---Friend.isCatOwner: Boolean', + '---Friend.pets: [Pet]', + '----Dog.name: String', + '--Bird.friends: [Friend]', + '---Friend.isBirdOwner: Boolean', + '---Friend.name: String', + '---Friend.pets: [Pet]', + '----Cat.breed: String' + ] + } + + def "test2"() { + String schema = """ + type Query{ + a: A + } + interface A { + b: B + } + type A1 implements A { + b: B + } + type A2 implements A{ + b: B + } + interface B { + leaf: String + } + type B1 implements B { + leaf: String + } + type B2 implements B { + leaf: String + } + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + a { + ... on A { + myAlias: b { leaf } + } + ... on A1 { + b { + ... on B1 { + leaf + } + ... on B2 { + leaf + } + } + } + ... on A1 { + b { + ... on B1 { + leaf + } + } + } + ... on A2 { + b { + ... on B2 { + leaf + } + } + } + } + } + + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.a: A', + '--myAlias: [A1, A2].b: B', + '---[B1, B2].leaf: String', + '--A1.b: B', + '---[B1, B2].leaf: String', + '--A2.b: B', + '---B2.leaf: String' + ] + + + } + + def "test3"() { + String schema = """ + type Query{ + a: [A] + object: Object + } + type Object { + someValue: String + } + interface A { + b: B + } + type A1 implements A { + b: B + } + type A2 implements A{ + b: B + } + interface B { + leaf: String + } + type B1 implements B { + leaf: String + } + type B2 implements B { + leaf: String + } + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + object{someValue} + a { + ... on A1 { + b { + ... on B { + leaf + } + ... on B1 { + leaf + } + ... on B2 { + ... on B { + leaf + } + leaf + leaf + ... on B2 { + leaf + } + } + } + } + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.object: Object', + '--Object.someValue: String', + '-Query.a: [A]', + '--A1.b: B', + '---[B1, B2].leaf: String' + ] + + } + + def "test impossible type condition"() { + + String schema = """ + type Query{ + pets: [Pet] + } + interface Pet { + name: String + } + type Cat implements Pet { + name: String + } + type Dog implements Pet{ + name: String + } + union CatOrDog = Cat | Dog + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pets { + ... on Dog { + ... on CatOrDog { + ... on Cat{ + name + } + } + } + } + } + + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.pets'] + + } + + def "query with unions and __typename"() { + + String schema = """ + type Query{ + pets: [CatOrDog] + } + type Cat { + catName: String + } + type Dog { + dogName: String + } + union CatOrDog = Cat | Dog + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pets { + __typename + ... on Cat { + catName + } + ... on Dog { + dogName + } + } + } + + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.pets', + '[Cat, Dog].__typename', + 'Cat.catName', + 'Dog.dogName'] + + } + + def "query with interface"() { + + String schema = """ + type Query{ + pets: [Pet] + } + interface Pet { + id: ID + } + type Cat implements Pet{ + id: ID + catName: String + } + type Dog implements Pet{ + id: ID + dogName: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pets { + id + ... on Cat { + catName + } + ... on Dog { + dogName + } + } + } + + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.pets', + '[Cat, Dog].id', + 'Cat.catName', + 'Dog.dogName'] + + } + + def "test5"() { + String schema = """ + type Query{ + a: [A] + } + interface A { + b: String + } + type A1 implements A { + b: String + } + type A2 implements A{ + b: String + otherField: A + } + type A3 implements A { + b: String + } + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + + def query = """ + { + a { + b + ... on A1 { + b + } + ... on A2 { + b + otherField { + ... on A2 { + b + } + ... on A3 { + b + } + } + + } + } + } + + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.a: [A]', + '--[A1, A2, A3].b: String', + '--A2.otherField: A', + '---[A2, A3].b: String' + ] + + } + + def "test6"() { + String schema = """ + type Query { + issues: [Issue] + } + + type Issue { + id: ID + author: User + } + type User { + name: String + createdIssues: [Issue] + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + def query = """{ issues { + author { + name + ... on User { + createdIssues { + id + } + } + } + }} + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.issues', + 'Issue.author', + 'User.name', + 'User.createdIssues', + 'Issue.id'] + + } + + def "test7"() { + String schema = """ + type Query { + issues: [Issue] + } + + type Issue { + authors: [User] + } + type User { + name: String + friends: [User] + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + def query = """{ issues { + authors { + friends { + friends { + name + } + } + } + }} + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.issues', + 'Issue.authors', + 'User.friends', + 'User.friends', + 'User.name'] + + } + + def "parses operation name"() { + String schema = """ + type Query { + issues: [Issue] + } + + type Issue { + authors: [User] + } + type User { + name: String + friends: [User] + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + def query = """query X_28 { issues { + authors { + friends { + friends { + name + } + } + } + }} + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + tree.operation == OperationDefinition.Operation.QUERY + tree.operationName == "X_28" + printedTree == ['Query.issues', + 'Issue.authors', + 'User.friends', + 'User.friends', + 'User.name'] + + } + + def "query with fragment definition"() { + def graphQLSchema = TestUtil.schema(""" + type Query{ + foo: Foo + } + type Foo { + subFoo: String + moreFoos: Foo + } + """) + def query = """ + {foo { ...fooData moreFoos { ...fooData }}} fragment fooData on Foo { subFoo } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.foo', + 'Foo.subFoo', + 'Foo.moreFoos', + 'Foo.subFoo'] + } + + def "query with fragment and type condition"() { + def graphQLSchema = TestUtil.schema(""" + type Query { + pet(qualifier : String) : Pet + } + interface Pet { + name(nameArg : String) : String + } + + type Dog implements Pet { + name(nameArg : String) : String + } + + type Bird implements Pet { + name(nameArg : String) : String + } + + type Cat implements Pet { + name(nameArg : String) : String + } + """) + def query = """ + { + pet { + name + ... on Dog { + name + } + ... CatFrag + } + } + + fragment CatFrag on Cat { + name + } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.pet: Pet', + '--[Bird, Cat, Dog].name: String' + ] + } + + def "query with fragment and type condition merged together 2"() { + def graphQLSchema = TestUtil.schema(""" + type Query { + pet : Pet + } + interface Pet { + name : String + } + + type Dog implements Pet { + name : String + } + + type Bird implements Pet { + name : String + } + + type Cat implements Pet { + name : String + } + """) + def query = """ + { + pet { + name + ... on Dog { + name + } + ... CatFrag + } + } + + fragment CatFrag on Cat { + name + } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.pet: Pet', + '--[Bird, Cat, Dog].name: String' + ] + } + + + def "query with interface in between"() { + def graphQLSchema = schema(""" + type Query { + pets: [Pet] + } + interface Pet { + name: String + friends: [Human] + } + type Human { + name: String + } + type Cat implements Pet { + name: String + friends: [Human] + } + type Dog implements Pet { + name: String + friends: [Human] + } + """) + def query = """ + { pets { friends {name} } } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.pets', + '[Cat, Dog].friends', + 'Human.name'] + } + + def "test interface fields with different output types (covariance) on the implementations"() { + def graphQLSchema = schema(""" + interface Animal { + parent: Animal + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + def query = """ + { + animal { + parent { + name + } + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == [ + "-Query.animal: Animal", + "--[Cat, Dog].parent: Cat, Dog", + "---[Cat, Dog].name: String", + ] + } + + def "__typename in unions get merged"() { + def graphQLSchema = schema(""" + + type Cat { + name: String + } + type Dog { + name: String + } + union CatOrDog = Cat | Dog + type Query { + animal: CatOrDog + } + """) + + def query = """ + { + animal { + ... on Cat {__typename} + ... on Dog {__typename} + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == [ + "-Query.animal: CatOrDog", + "--[Cat, Dog].__typename: String!", + ] + } + + def "test union fields with different output types (covariance) on the implementations"() { + def graphQLSchema = schema(""" + + interface Animal { + parent: CatOrDog + name: String + } + type Cat implements Animal{ + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + union CatOrDog = Cat | Dog + type Query { + animal: Animal + } + """) + + def query = """ + { + animal { + parent { + ... on Cat {name __typename } + ... on Dog {name __typename } + } + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == [ + "-Query.animal: Animal", + "--[Cat, Dog].parent: Cat, Dog", + "---[Cat, Dog].name: String", + "---[Cat, Dog].__typename: String!" + ] + } + + List printTree(ExecutableNormalizedOperation queryExecutionTree) { + def result = [] + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + traverser.traverse(queryExecutionTree.getTopLevelFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + ExecutableNormalizedField queryExecutionField = context.thisNode() + result << queryExecutionField.printDetails() + return TraversalControl.CONTINUE + } + }) + result + } + + List printTreeAndDirectives(ExecutableNormalizedOperation queryExecutionTree) { + def result = [] + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + traverser.traverse(queryExecutionTree.getTopLevelFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + ExecutableNormalizedField queryExecutionField = context.thisNode() + def queryDirectives = queryExecutionTree.getQueryDirectives(queryExecutionField) + + def fieldDetails = queryExecutionField.printDetails() + if (queryDirectives != null) { + def appliedDirectivesByName = queryDirectives.getImmediateAppliedDirectivesByName() + if (!appliedDirectivesByName.isEmpty()) { + fieldDetails += " " + printDirectives(appliedDirectivesByName) + } + } + result << fieldDetails + return TraversalControl.CONTINUE + } + + String printDirectives(Map> stringListMap) { + String s = stringListMap.collect { entry -> + entry.value.collect { + " @" + it.name + "(" + it.getArguments().collect { + it.name + " : " + '"' + it.value + '"' + }.join(",") + ")" + }.join(' ') + }.join(" ") + return s + } + }) + result + } + + static List printTreeWithLevelInfo(ExecutableNormalizedOperation queryExecutionTree, GraphQLSchema schema) { + def result = [] + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + traverser.traverse(queryExecutionTree.getTopLevelFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + ExecutableNormalizedField queryExecutionField = context.thisNode() + String prefix = "" + for (int i = 1; i <= queryExecutionField.getLevel(); i++) { + prefix += "-" + } + + def possibleOutputTypes = new LinkedHashSet() + for (fieldDef in queryExecutionField.getFieldDefinitions(schema)) { + possibleOutputTypes.add(GraphQLTypeUtil.simplePrint(fieldDef.type)) + } + + result << (prefix + queryExecutionField.printDetails() + ": " + possibleOutputTypes.join(", ")) + return TraversalControl.CONTINUE + } + }) + result + } + + def "field to normalized field is build"() { + def graphQLSchema = TestUtil.schema(""" + type Query{ + foo: Foo + } + type Foo { + subFoo: String + moreFoos: Foo + } + """) + def query = """ + {foo { ...fooData moreFoos { ...fooData }}} fragment fooData on Foo { subFoo } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + def subFooField = (document.getDefinitions()[1] as FragmentDefinition).getSelectionSet().getSelections()[0] as Field + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def fieldToNormalizedField = tree.getFieldToNormalizedField() + + expect: + fieldToNormalizedField.keys().size() == 4 + fieldToNormalizedField.get(subFooField).size() == 2 + fieldToNormalizedField.get(subFooField)[0].level == 2 + fieldToNormalizedField.get(subFooField)[1].level == 3 + } + + def "normalized fields map with interfaces "() { + + String schema = """ + type Query{ + pets: [Pet] + } + interface Pet { + id: ID + } + type Cat implements Pet{ + id: ID + } + type Dog implements Pet{ + id: ID + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pets { + id + } + } + + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + def petsField = (document.getDefinitions()[0] as OperationDefinition).getSelectionSet().getSelections()[0] as Field + def idField = petsField.getSelectionSet().getSelections()[0] as Field + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def fieldToNormalizedField = tree.getFieldToNormalizedField() + + + expect: + fieldToNormalizedField.size() == 2 + fieldToNormalizedField.get(petsField).size() == 1 + fieldToNormalizedField.get(petsField)[0].printDetails() == "Query.pets" + fieldToNormalizedField.get(idField).size() == 1 + fieldToNormalizedField.get(idField)[0].printDetails() == "[Cat, Dog].id" + + + } + + def "query with introspection fields"() { + String schema = """ + type Query{ + foo: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + __typename + alias: __typename + __schema { queryType { name } } + __type(name: "Query") {name} + ...F + } + fragment F on Query { + __typename + alias: __typename + __schema { queryType { name } } + __type(name: "Query") {name} + } + + + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + def selections = (document.getDefinitions()[0] as OperationDefinition).getSelectionSet().getSelections() + def typeNameField = selections[0] as Field + def aliasedTypeName = selections[1] as Field + def schemaField = selections[2] as Field + def typeField = selections[3] as Field + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def fieldToNormalizedField = tree.getFieldToNormalizedField() + + expect: + fieldToNormalizedField.size() == 14 + fieldToNormalizedField.get(typeNameField)[0].objectTypeNamesToString() == "Query" + fieldToNormalizedField.get(typeNameField)[0].getFieldDefinitions(graphQLSchema) == [graphQLSchema.getIntrospectionTypenameFieldDefinition()] + fieldToNormalizedField.get(aliasedTypeName)[0].alias == "alias" + fieldToNormalizedField.get(aliasedTypeName)[0].getFieldDefinitions(graphQLSchema) == [graphQLSchema.getIntrospectionTypenameFieldDefinition()] + + fieldToNormalizedField.get(schemaField)[0].objectTypeNamesToString() == "Query" + fieldToNormalizedField.get(schemaField)[0].getFieldDefinitions(graphQLSchema) == [graphQLSchema.getIntrospectionSchemaFieldDefinition()] + + fieldToNormalizedField.get(typeField)[0].objectTypeNamesToString() == "Query" + fieldToNormalizedField.get(typeField)[0].getFieldDefinitions(graphQLSchema) == [graphQLSchema.getIntrospectionTypeFieldDefinition()] + + } + + def "fragment is used multiple times with different parents"() { + String schema = """ + type Query{ + pet: Pet + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pet { + ... on Dog { + ...F + } + ... on Cat { + ...F + } + } + } + fragment F on Pet { + name + } + + + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.pet: Pet', + '--[Dog, Cat].name: String'] + } + + def "same result key but different field"() { + String schema = """ + type Query{ + pet: Pet + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + otherField: String + } + type Cat implements Pet { + name: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + pet { + ... on Dog { + name: otherField + } + ... on Cat { + name + } + } + } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTree(tree) + + expect: + printedTree == ['Query.pet', + 'name: Dog.otherField', + 'Cat.name'] + } + + def "normalized field to MergedField is build"() { + given: + def graphQLSchema = TestUtil.schema(""" + type Query{ + foo: Foo + } + type Foo { + subFoo: String + moreFoos: Foo + } + """) + def query = """ + {foo { ...fooData moreFoos { ...fooData }}} fragment fooData on Foo { subFoo } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def normalizedFieldToMergedField = tree.getNormalizedFieldToMergedField() + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + List result = new ArrayList<>() + when: + traverser.traverse(tree.getTopLevelFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + ExecutableNormalizedField normalizedField = context.thisNode() + result.add(normalizedFieldToMergedField[normalizedField]) + return TraversalControl.CONTINUE + } + }) + + then: + result.size() == 4 + result.collect { it.getResultKey() } == ['foo', 'subFoo', 'moreFoos', 'subFoo'] + } + + def "coordinates to NormalizedField is build"() { + given: + def graphQLSchema = TestUtil.schema(""" + type Query{ + foo: Foo + } + type Foo { + subFoo: String + moreFoos: Foo + } + """) + def query = """ + {foo { ...fooData moreFoos { ...fooData }}} fragment fooData on Foo { subFoo } + """ + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + when: + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def coordinatesToNormalizedFields = tree.coordinatesToNormalizedFields + + then: + coordinatesToNormalizedFields.size() == 4 + coordinatesToNormalizedFields.get(coordinates("Query", "foo")).size() == 1 + coordinatesToNormalizedFields.get(coordinates("Foo", "moreFoos")).size() == 1 + coordinatesToNormalizedFields.get(coordinates("Foo", "subFoo")).size() == 2 + } + + def "handles mutations"() { + String schema = """ +type Query{ + animal: Animal +} + +type Mutation { + createAnimal: Query +} + +type Subscription { + subscribeToAnimal: Query +} + +interface Animal { + name: String + friends: [Friend] +} + +union Pet = Dog | Cat + +type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] +} + +type Bird implements Animal { + name: String + friends: [Friend] +} + +type Cat implements Animal{ + name: String + friends: [Friend] + breed: String +} + +type Dog implements Animal{ + name: String + breed: String + friends: [Friend] +} + +schema { + query: Query + mutation: Mutation + subscription: Subscription +} + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String mutation = """ + mutation TestMutation{ + createAnimal { + animal { + name + otherName: name + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + } + } + ... on Dog { + name + } + } + } + } + """ + + assertValidQuery(graphQLSchema, mutation) + + Document document = TestUtil.parseQuery(mutation) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Mutation.createAnimal: Query', + '--Query.animal: Animal', + '---[Bird, Cat, Dog].name: String', + '---otherName: [Bird, Cat, Dog].name: String', + '---Cat.friends: [Friend]', + '----Friend.isCatOwner: Boolean', + '---Bird.friends: [Friend]', + '----Friend.isBirdOwner: Boolean', + '----Friend.name: String'] + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + def ei = ExecutionInput.newExecutionInput(query).variables(variables).build() + assert graphQL.execute(ei).errors.size() == 0 + } + + def "normalized arguments"() { + given: + String schema = """ + type Query{ + dog(id:ID): Dog + } + type Dog { + name: String + search(arg1: Input1, arg2: Input1, arg3: Input1): Boolean + } + input Input1 { + foo: String + input2: Input2 + } + input Input2 { + bar: Int + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + query(\$var1: Input2, \$var2: Input1){dog(id: "123"){ + search(arg1: {foo: "foo", input2: {bar: 123}}, arg2: {foo: "foo", input2: \$var1}, arg3: \$var2) + }} + """ + + assertValidQuery(graphQLSchema, query) + Document document = TestUtil.parseQuery(query) + + def variables = [ + var1: [bar: 123], + var2: [foo: "foo", input2: [bar: 123]] + ] + // the normalized arg value should be the same regardless of how the value was provided + def expectedNormalizedArgValue = [foo: new NormalizedInputValue("String", parseValue('"foo"')), input2: new NormalizedInputValue("Input2", [bar: new NormalizedInputValue("Int", parseValue("123"))])] + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.of(variables)) + def topLevelField = tree.getTopLevelFields().get(0) + def secondField = topLevelField.getChildren().get(0) + def arg1 = secondField.getNormalizedArgument("arg1") + def arg2 = secondField.getNormalizedArgument("arg2") + def arg3 = secondField.getNormalizedArgument("arg3") + + then: + topLevelField.getNormalizedArgument("id").getTypeName() == "ID" + printAst(topLevelField.getNormalizedArgument("id").getValue()) == '"123"' + + arg1.getTypeName() == "Input1" + arg1.getValue() == expectedNormalizedArgValue + arg2.getTypeName() == "Input1" + arg2.value == expectedNormalizedArgValue + arg3.getTypeName() == "Input1" + arg3.value == expectedNormalizedArgValue + } + + def "arguments with absent variable values inside input objects"() { + given: + def schema = """ + type Query { + hello(arg: Arg, otherArg: String = "otherValue"): String + } + input Arg { + ids: [ID] = ["defaultId"] + } + """ + def graphQLSchema = TestUtil.schema(schema) + + def query = """ + query myQuery(\$varIds: [ID], \$otherVar: String) { + hello(arg: {ids: \$varIds}, otherArg: \$otherVar) + } + """ + + assertValidQuery(graphQLSchema, query) + def document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.emptyVariables()) + + then: + def topLevelField = tree.getTopLevelFields().get(0) + + def arg = topLevelField.getNormalizedArgument("arg") + arg == new NormalizedInputValue("Arg", [:]) + !topLevelField.normalizedArguments.containsKey("otherArg") + + topLevelField.resolvedArguments.get("arg") == [ids: ["defaultId"]] + topLevelField.resolvedArguments.get("otherArg") == "otherValue" + } + + def "arguments with null variable values"() { + given: + def schema = """ + type Query { + hello(arg: Arg, otherArg: String = "otherValue"): String + } + input Arg { + ids: [ID] = ["defaultId"] + } + """ + def graphQLSchema = TestUtil.schema(schema) + + def query = """ + query nadel_2_MyService_myQuery(\$varIds: [ID], \$otherVar: String) { + hello(arg: {ids: \$varIds}, otherArg: \$otherVar) + } + """ + + assertValidQuery(graphQLSchema, query) + def document = TestUtil.parseQuery(query) + + def variables = [ + varIds : null, + otherVar: null, + ] + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.of(variables)) + + then: + def topLevelField = tree.getTopLevelFields().get(0) + def arg = topLevelField.getNormalizedArgument("arg") + def otherArg = topLevelField.getNormalizedArgument("otherArg") + + arg == new NormalizedInputValue( + "Arg", + [ + ids: new NormalizedInputValue( + "[ID]", + null, + ), + ] + ) + otherArg == new NormalizedInputValue("String", null) + + topLevelField.resolvedArguments.get("arg") == [ids: null] + topLevelField.resolvedArguments.get("otherArg") == null + } + + def "normalized arguments with lists"() { + given: + String schema = """ + type Query{ + search(arg1:[ID!], arg2:[[Input1]], arg3: [Input1]): Boolean + } + input Input1 { + foo: String + input2: Input2 + } + input Input2 { + bar: Int + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query($var1: [Input1], $var2: ID!){ + search(arg1:["1",$var2], arg2: [[{foo: "foo1", input2: {bar: 123}},{foo: "foo2", input2: {bar: 456}}]], arg3: $var1) + } + ''' + + def variables = [ + var1: [[foo: "foo3", input2: [bar: 789]]], + var2: "2", + ] + assertValidQuery(graphQLSchema, query, variables) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.of(variables)) + def topLevelField = tree.getTopLevelFields().get(0) + def arg1 = topLevelField.getNormalizedArgument("arg1") + def arg2 = topLevelField.getNormalizedArgument("arg2") + def arg3 = topLevelField.getNormalizedArgument("arg3") + + then: + arg1.typeName == "[ID!]" + arg1.value.collect { printAst(it) } == ['"1"', '"2"'] + arg2.typeName == "[[Input1]]" + arg2.value == [[ + [foo: new NormalizedInputValue("String", parseValue('"foo1"')), input2: new NormalizedInputValue("Input2", [bar: new NormalizedInputValue("Int", parseValue("123"))])], + [foo: new NormalizedInputValue("String", parseValue('"foo2"')), input2: new NormalizedInputValue("Input2", [bar: new NormalizedInputValue("Int", parseValue("456"))])] + ]] + + arg3.getTypeName() == "[Input1]" + arg3.value == [ + [foo: new NormalizedInputValue("String", parseValue('"foo3"')), input2: new NormalizedInputValue("Input2", [bar: new NormalizedInputValue("Int", parseValue("789"))])], + ] + + + } + + def "normalized arguments with lists 2"() { + given: + String schema = """ + type Query{ + search(arg1:[[Input1]] ,arg2:[[ID!]!]): Boolean + } + input Input1 { + foo: String + input2: Input2 + } + input Input2 { + bar: Int + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query($var1: [Input1], $var2: [ID!]!){ + search(arg1: [$var1],arg2:[["1"],$var2] ) + } + ''' + + def variables = [ + var1: [[foo: "foo1", input2: [bar: 123]]], + var2: "2" + ] + assertValidQuery(graphQLSchema, query, variables) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.of(variables)) + def topLevelField = tree.getTopLevelFields().get(0) + def arg1 = topLevelField.getNormalizedArgument("arg1") + def arg2 = topLevelField.getNormalizedArgument("arg2") + + then: + arg1.typeName == "[[Input1]]" + arg1.value == [[ + [foo: new NormalizedInputValue("String", parseValue('"foo1"')), input2: new NormalizedInputValue("Input2", [bar: new NormalizedInputValue("Int", parseValue("123"))])], + ]] + arg2.typeName == "[[ID!]!]" + arg2.value.collect { outer -> outer.collect { printAst(it) } } == [['"1"'], ['"2"']] + } + + + def "recursive schema with a lot of objects"() { + given: + String schema = """ + type Query{ + foo: Foo + } + interface Foo { + field: Foo + id: ID + } + type O1 implements Foo { + field: Foo + id: ID + } + type O2 implements Foo { + field: Foo + id: ID + } + type O3 implements Foo { + field: Foo + id: ID + } + type O4 implements Foo { + field: Foo + id: ID + } + type O5 implements Foo { + field: Foo + id: ID + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + {foo{field{id}}foo{field{id}}} + ''' + assertValidQuery(graphQLSchema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.emptyVariables()) + + then: + tree.normalizedFieldToMergedField.size() == 3 + tree.fieldToNormalizedField.size() == 6 + println String.join("\n", printTree(tree)) + /** + * NF{Query.foo} -> NF{"O1...O5".field,} -> NF{O1...O5.id}*/ + } + + def "diverged fields"() { + given: + String schema = """ + type Query { + pets: Pet + } + interface Pet { + name: String + } + type Cat implements Pet { + name: String + catValue: Int + catFriend(arg: String): CatFriend + } + type CatFriend { + catFriendName: String + } + type Dog implements Pet { + name: String + dogValue: Float + dogFriend: DogFriend + } + type DogFriend { + dogFriendName: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + {pets { + ... on Cat { + friend: catFriend(arg: "hello") { + catFriendName + }} + ... on Cat { + friend: catFriend(arg: "hello") { + catFriendName + }} + ... on Dog { + friend: dogFriend { + dogFriendName + }} + }} + ''' + assertValidQuery(graphQLSchema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + then: + // the two friend fields are not in on ENF + printedTree == ['-Query.pets: Pet', + '--friend: Cat.catFriend: CatFriend', + '---CatFriend.catFriendName: String', + '--friend: Dog.dogFriend: DogFriend', + '---DogFriend.dogFriendName: String'] + + tree.normalizedFieldToMergedField.size() == 5 + tree.fieldToNormalizedField.size() == 7 + } + + def "diverged fields 2"() { + given: + String schema = """ + type Query { + pets: Pet + } + interface Pet { + name(arg:String): String + } + type Cat implements Pet { + name(arg: String): String + } + + type Dog implements Pet { + name(arg: String): String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + {pets { + ... on Cat { + name(arg: "foo") + } + ... on Dog { + name(arg: "fooOther") + } + }} + ''' + assertValidQuery(graphQLSchema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + then: + /** + * the two name fields are not merged, because they are backed by different fields with different arguments + * If the arguments are the same, it would be one ENF. + */ + printedTree == ['-Query.pets: Pet', + '--Cat.name: String', + '--Dog.name: String' + ] + } + + + def "diverging fields with the same parent type on deeper level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + name : String + friends: [Pet] + + } + ''') + /** + * Here F1 and F2 are allowed to diverge (backed by different field definitions) because the parent fields have + * different concrete parent: P1 has Dog, P2 has Cat. + */ + def query = ''' + { + pets { + ... on Dog { + friends { #P1 + name + ... on Dog { + breed: dogBreed #F1 + } + } + } + ... on Cat { + friends { #P2 + catFriendsName: name + ... on Dog { + breed #F2 + } + } + } + ... on Pet { + friends { + name + } + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--Dog.friends: [Pet]', + '---[Cat, Dog].name: String', + '---breed: Dog.dogBreed: String', + '--Cat.friends: [Pet]', + '---catFriendsName: [Cat, Dog].name: String', + '---Dog.breed: String', + '---[Cat, Dog].name: String' + ] + } + + def "subselection different with different concrete parents"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + ... on Dog { + friends { #P1 + name + } + } + ... on Cat { + friends { + otherName: name + } + } + friends { + breed + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--Dog.friends: [Pet]', + '---[Cat, Dog].name: String', + '---[Cat, Dog].breed: String', + '--Cat.friends: [Pet]', + '---otherName: [Cat, Dog].name: String', + '---[Cat, Dog].breed: String', + ] + } + + + def "diverging non-composite fields"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + ... on Dog { + breed: dogBreed + } + ... on Cat { + breed: catBreed + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--breed: Dog.dogBreed: String', + '--breed: Cat.catBreed: String' + ] + } + + def "different children for different Interfaces"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + + interface Mammal implements Pet { + name: String + breed: String + friends: [Pet] + } + type Turtle implements Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Mammal & Pet { + name: String + dogBreed: String + breed: String + friends: [Pet] + } + type Cat implements Mammal & Pet { + catBreed: String + breed: String + name : String + friends: [Pet] + } + ''') + def query = ''' + { + pets { + ... on Cat { + friends { + catFriendName: name + } + } + ... on Dog { + friends { + dogFriendName: name + } + } + ... on Mammal { + friends { + name + } + } + ... on Pet { + friends { + breed + } + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--Cat.friends: [Pet]', + '---catFriendName: [Cat, Dog, Turtle].name: String', + '---[Cat, Dog, Turtle].name: String', + '---[Cat, Dog, Turtle].breed: String', + '--Dog.friends: [Pet]', + '---dogFriendName: [Cat, Dog, Turtle].name: String', + '---[Cat, Dog, Turtle].name: String', + '---[Cat, Dog, Turtle].breed: String', + '--Turtle.friends: [Pet]', + '---[Cat, Dog, Turtle].breed: String' + ] + } + + def "diverging fields with Union as parent type"() { + given: + def schema = schema(''' + type Query { + pets: [DogOrCat] + } + type Dog { + name: String + dogBreed: String + breed: String + friends: [DogOrCat] + } + type Cat { + catBreed: String + breed: String + name : String + friends: [DogOrCat] + } + union DogOrCat = Dog | Cat + ''') + def query = ''' + { + pets { + ... on Dog { + friends { #P1 + ... on Dog { + breed: dogBreed #F1 + } + } + } + ... on Cat { + friends { #P2 + ... on Dog { + breed #F2 + } + } + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [DogOrCat]', + '--Dog.friends: [DogOrCat]', + '---breed: Dog.dogBreed: String', + '--Cat.friends: [DogOrCat]', + '---Dog.breed: String' + ] + } + + def "union fields are not merged"() { + given: + def schema = schema(''' + type Query { + pets: [DogOrCat] + } + type Dog { + name: String + } + type Cat { + name: String + } + union DogOrCat = Dog | Cat + ''') + def query = ''' + { + pets { + ... on Dog { + name + } + ... on Cat { + name + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [DogOrCat]', + '--Dog.name: String', + '--Cat.name: String' + ] + } + + def "union fields which are shared in an interface are merged"() { + given: + def schema = schema(''' + type Query { + pets: [DogOrCat] + } + interface Pet { + name: String + } + type Dog implements Pet{ + name: String + } + type Cat implements Pet{ + name: String + } + union DogOrCat = Dog | Cat + ''') + def query = ''' + { + pets { + ... on Dog { + name + } + ... on Cat { + name + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [DogOrCat]', + '--[Dog, Cat].name: String' + ] + } + + def "fields which don't come from a shared interface are not merged"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + } + type Dog implements Pet{ + name: String + breed: String + } + + type Cat implements Pet{ + name: String + breed: String + } + ''') + def query = ''' + { + pets { + ... on Dog { + breed + } + ... on Cat { + breed + } + }} + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--Dog.breed: String', + '--Cat.breed: String' + ] + } + + def "fields are merged together on multiple level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + name : String + friends: [Pet] + + } + + ''') + def query = ''' + { + pets { + ... on Dog { + friends { + ... on Dog { + friends { + name + } + } + ... on Cat { + friends { + name + } + } + } + } + ... on Cat { + friends { + ... on Dog { + friends { + name + } + } + ... on Cat { + friends { + name + } + } + } + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--[Dog, Cat].friends: [Pet]', + '---[Dog, Cat].friends: [Pet]', + '----[Cat, Dog].name: String' + ] + } + + def "fields are not merged together because of different arguments on deeper level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name(arg:String): String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name(arg:String): String + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + name(arg:String) : String + friends: [Pet] + + } + + ''') + def query = ''' + { + pets { + ... on Dog { + friends { + ... on Dog { + friends { + name + } + } + ... on Cat { + friends { + name + } + } + } + } + ... on Cat { + friends { + ... on Dog { + friends { + name + } + } + ... on Cat { + friends { + name(arg: "not-be-merged") + } + } + } + } + } + } + ''' + assertValidQuery(schema, query) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, schema) + + then: + printedTree == ['-Query.pets: [Pet]', + '--Dog.friends: [Pet]', + '---[Dog, Cat].friends: [Pet]', + '----[Cat, Dog].name: String', + '--Cat.friends: [Pet]', + '---Dog.friends: [Pet]', + '----[Cat, Dog].name: String', + '---Cat.friends: [Pet]', + '----[Cat, Dog].name: String' + ] + } + + + def "skip/include is respected"() { + given: + String schema = """ + type Query { + pets: Pet + } + interface Pet { + name: String + } + type Cat implements Pet { + name: String + } + type Dog implements Pet { + name: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query($true: Boolean!,$false: Boolean!){pets { + ... on Cat { + cat_not: name @skip(if:true) + cat_not: name @skip(if:$true) + cat_yes_1: name @include(if:true) + cat_yes_2: name @skip(if:$false) + } + ... on Dog @include(if:$true) { + dog_no: name @include(if:false) + dog_no: name @include(if:$false) + dog_yes_1: name @include(if:$true) + dog_yes_2: name @skip(if:$false) + } + ... on Pet @skip(if:$true) { + not: name + } + ... on Pet @skip(if:$false) { + pet_name: name + } + }} + ''' + def variables = ["true": Boolean.TRUE, "false": Boolean.FALSE] + assertValidQuery(graphQLSchema, query, variables) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.of(variables)) + println String.join("\n", printTree(tree)) + def printedTree = printTree(tree) + + + then: + printedTree == ['Query.pets', + 'cat_yes_1: Cat.name', + 'cat_yes_2: Cat.name', + 'dog_yes_1: Dog.name', + 'dog_yes_2: Dog.name', + 'pet_name: [Cat, Dog].name', + ] + } + + + def "query directives are captured is respected"() { + given: + String schema = """ + directive @fieldDirective(target : String!) on FIELD + directive @fieldXDirective(target : String!) on FIELD + + type Query { + pets: Pet + } + interface Pet { + name: String + } + type Cat implements Pet { + name: String + } + type Dog implements Pet { + name: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query q { + pets { + ... on Cat { + cName : name @fieldDirective(target : "Cat.name") + } + ... on Dog { + dName : name @fieldDirective(target : "Dog.name") @fieldXDirective(target : "Dog.name") + } + ... on Pet { + pName : name @fieldDirective(target : "Pet.name") + } + }} + ''' + + def variables = [:] + assertValidQuery(graphQLSchema, query, variables) + Document document = TestUtil.parseQuery(query) + + when: + def tree = localCreateExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.of(variables)) + def printedTree = printTreeAndDirectives(tree) + + then: + printedTree == ['Query.pets', + 'cName: Cat.name @fieldDirective(target : "Cat.name")', + 'dName: Dog.name @fieldDirective(target : "Dog.name") @fieldXDirective(target : "Dog.name")', + 'pName: [Cat, Dog].name @fieldDirective(target : "Pet.name")', + ] + } + + def "missing argument"() { + given: + String schema = """ + type Query { + hello(arg: String): String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = '''{hello} ''' + assertValidQuery(graphQLSchema, query) + Document document = TestUtil.parseQuery(query) + when: + def tree = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(graphQLSchema, document, null, RawVariables.emptyVariables()) + println String.join("\n", printTree(tree)) + def printedTree = printTree(tree) + + + then: + printedTree == ['Query.hello'] + tree.getTopLevelFields().get(0).getNormalizedArguments().isEmpty() + } + + def "reused field via fragments"() { + String schema = """ + type Query { + pet: Pet + } + type Pet { + owner: Person + emergencyContact: Person + } + type Person { + name: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ +{ pet { + owner { ...personName } + emergencyContact { ...personName } +}} +fragment personName on Person { + name +} + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.pet: Pet', + '--Pet.owner: Person', + '---Person.name: String', + '--Pet.emergencyContact: Person', + '---Person.name: String' + ] + + } + + + def "test interface fields with three different output types (covariance) on the implementations"() { + def graphQLSchema = schema(""" + interface Animal { + parent: Animal + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Bird implements Animal { + name: String + parent: Bird + } + type Query { + animal: Animal + } + """) + + def query = """ + { + animal { + parent { + name + } + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == [ + "-Query.animal: Animal", + "--[Bird, Cat, Dog].parent: Bird, Cat, Dog", + "---[Bird, Cat, Dog].name: String", + ] + } + + def "covariants with union fields"() { + def graphQLSchema = schema(""" + type Query { + animal: Animal + } + interface Animal { + parent: DogOrCat + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + union DogOrCat = Dog | Cat + """) + + def query = """ + { + animal { + parent { + __typename + } + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + + def tree = localCreateExecutableNormalizedOperation(graphQLSchema, document, null, CoercedVariables.emptyVariables()) + def printedTree = printTreeWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == [ + "-Query.animal: Animal", + "--[Cat, Dog].parent: Cat, Dog", + "---[Cat, Dog].__typename: String!", + ] + } + + def "query cannot exceed max depth"() { + String schema = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Animal] + } + type Bird implements Animal { + name: String + friends: [Animal] + } + type Cat implements Animal { + name: String + friends: [Animal] + breed: String + } + type Dog implements Animal { + name: String + breed: String + friends: [Animal] + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + // We generate two less fields than the given depth + // One is due to the top level field + // One is due to the leaf selection + def animalSubselection = IntStream.rangeClosed(1, queryDepth - 2) + .mapToObj { + "" + } + .reduce("CHILD") { acc, value -> + acc.replace("CHILD", "friends { CHILD }") + } + .replace("CHILD", "name") + + // Note: there is a total of 51 fields here + String query = """ + { + animal { + $animalSubselection + } + } + """ + + def limit = 50 + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + Exception exception + try { + ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables(), + ExecutableNormalizedOperationFactory.Options.defaultOptions().maxChildrenDepth(limit)) + } catch (Exception e) { + exception = e + } + + then: + if (queryDepth > limit) { + assert exception != null + assert exception.message.contains("depth exceeded") + assert exception.message.contains("> 50") + } else { + assert exception == null + } + + where: + _ | queryDepth + _ | 49 + _ | 50 + _ | 51 + } + + def "big query is fine as long as depth is under limit"() { + String schema = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Friend] + } + union Pet = Dog | Cat + type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] + } + type Bird implements Animal { + name: String + friends: [Friend] + } + type Cat implements Animal { + name: String + friends: [Friend] + breed: String + } + type Dog implements Animal { + name: String + breed: String + friends: [Friend] + } + """ + + def garbageFields = IntStream.range(0, 1000) + .mapToObj { + """test_$it: friends { name }""" + } + .collect(Collectors.joining("\n")) + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + animal { + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + } + $garbageFields + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables(), + ExecutableNormalizedOperationFactory.Options.defaultOptions().maxChildrenDepth(5)) + + then: + noExceptionThrown() + } + + def "big query exceeding fields count"() { + String schema = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Friend] + } + union Pet = Dog | Cat + type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] + } + type Bird implements Animal { + name: String + friends: [Friend] + } + type Cat implements Animal { + name: String + friends: [Friend] + breed: String + } + type Dog implements Animal { + name: String + breed: String + friends: [Friend] + } + """ + + def garbageFields = IntStream.range(0, 1000) + .mapToObj { + """test_$it: friends { name }""" + } + .collect(Collectors.joining("\n")) + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + animal { + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + } + $garbageFields + } + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables(), + ExecutableNormalizedOperationFactory.Options.defaultOptions().maxFieldsCount(2013)) + + then: + def e = thrown(AbortExecutionException) + e.message == "Maximum field count exceeded. 2014 > 2013" + } + + def "small query exceeding fields count"() { + String schema = """ + type Query { + hello: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ {hello a1: hello}""" + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables(), + ExecutableNormalizedOperationFactory.Options.defaultOptions().maxFieldsCount(1)) + + then: + def e = thrown(AbortExecutionException) + e.message == "Maximum field count exceeded. 2 > 1" + + + } + + def "query not exceeding fields count"() { + String schema = """ + type Query { + dogs: [Dog] + } + type Dog { + name: String + breed: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ {dogs{name breed }}""" + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables(), + ExecutableNormalizedOperationFactory.Options.defaultOptions().maxFieldsCount(3)) + + then: + notThrown(AbortExecutionException) + + + } + + def "query with meta fields exceeding fields count"() { + String schema = """ + type Query { + hello: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = IntrospectionQuery.INTROSPECTION_QUERY + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables(), + ExecutableNormalizedOperationFactory.Options.defaultOptions().maxFieldsCount(188)) + println result.normalizedFieldToMergedField.size() + + then: + def e = thrown(AbortExecutionException) + e.message == "Maximum field count exceeded. 189 > 188" + } + + def "can capture depth and field count"() { + String schema = """ + type Query { + foo: Foo + } + + type Foo { + stop : String + bar : Bar + } + + type Bar { + stop : String + foo : Foo + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = "{ foo { bar { foo { bar { foo { stop bar { stop }}}}}}}" + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables() + ) + + then: + result.getOperationDepth() == 7 + result.getOperationFieldCount() == 8 + } + + def "factory has a default max node count"() { + String schema = """ + type Query { + foo: Foo + } + type Foo { + foo: Foo + name: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = "{ foo { ...F1}} " + int fragmentCount = 12 + for (int i = 1; i < fragmentCount; i++) { + query += """ + fragment F$i on Foo { + foo { ...F${i + 1} } + a: foo{ ...F${i + 1} } + b: foo{ ...F${i + 1} } + } + """ + } + query += """ + fragment F$fragmentCount on Foo{ + name + } + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables() + ) + then: + def e = thrown(AbortExecutionException) + e.message == "Maximum field count exceeded. 100001 > 100000" + } + + def "default max fields can be changed "() { + String schema = """ + type Query { + foo: Foo + } + type Foo { + foo: Foo + name: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = "{foo{foo{name}}} " + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + ExecutableNormalizedOperationFactory.Options.setDefaultOptions(ExecutableNormalizedOperationFactory.Options.defaultOptions().maxFieldsCount(2)) + + when: + def result = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables() + ) + then: + def e = thrown(AbortExecutionException) + e.message == "Maximum field count exceeded. 3 > 2" + cleanup: + ExecutableNormalizedOperationFactory.Options.setDefaultOptions(ExecutableNormalizedOperationFactory.Options.defaultOptions().maxFieldsCount(ExecutableNormalizedOperationFactory.Options.DEFAULT_MAX_FIELDS_COUNT)) + } + + def "fragments used multiple times and directives on it"() { + String schema = """ + type Query { + foo: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = "{...F1 ...F1 } fragment F1 on Query { foo @include(if: true) } " + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + when: + def operation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables() + ) + def rootField = operation.topLevelFields[0] + def directives = operation.getQueryDirectives(rootField) + def byName = directives.getImmediateDirectivesByName(); + then: + byName.size() == 1 + byName["include"].size() == 1 + byName["include"][0] instanceof GraphQLDirective + } + + def "fragments used multiple times and directives on it deeper"() { + String schema = """ + type Query { + foo: Foo + } + type Foo { + hello: String + } + """ + + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = "{foo{...F1 ...F1 } } fragment F1 on Foo { hello @include(if: true) hello @include(if:true) } " + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + when: + def operation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + null, + RawVariables.emptyVariables() + ) + def enf = operation.topLevelFields[0].children[0] + def directives = operation.getQueryDirectives(enf) + def byName = directives.getImmediateDirectivesByName(); + then: + byName.size() == 1 + byName["include"].size() == 2 + byName["include"][0] instanceof GraphQLDirective + byName["include"][1] instanceof GraphQLDirective + byName["include"][0] != byName["include"][1] + } + + + private static ExecutableNormalizedOperation localCreateExecutableNormalizedOperation( + GraphQLSchema graphQLSchema, + Document document, + String operationName, + CoercedVariables coercedVariableValues + ) { + + def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) + + return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, document, operationName, coercedVariableValues, options) + } + + private static ExecutableNormalizedOperation localCreateExecutableNormalizedOperationWithRawVariables( + GraphQLSchema graphQLSchema, + Document document, + String operationName, + RawVariables rawVariables + ) { + + def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) + + return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + graphQLSchema, + document, + operationName, + rawVariables, + options + ) + } +} + +class ExecutableNormalizedOperationFactoryTestWithDeferSupport extends ExecutableNormalizedOperationFactoryTest { + static { + deferSupport = true + } +} + +class ExecutableNormalizedOperationFactoryTestNoDeferSupport extends ExecutableNormalizedOperationFactoryTest { + static { + deferSupport = false + } +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDeferTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDeferTest.groovy new file mode 100644 index 0000000000..13928fd991 --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDeferTest.groovy @@ -0,0 +1,525 @@ +package graphql.normalized + + +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.RawVariables +import graphql.language.AstPrinter +import graphql.language.AstSorter +import graphql.language.Document +import graphql.schema.GraphQLSchema +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.TestLiveMockedWiringFactory +import graphql.schema.scalars.JsonScalar +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.language.OperationDefinition.Operation.QUERY +import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocumentWithDeferSupport + +class ExecutableNormalizedOperationToAstCompilerDeferTest extends Specification { + VariablePredicate noVariables = new VariablePredicate() { + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { + return false + } + } + + String sdl = """ + directive @defer(if: Boolean, label: String) on FRAGMENT_SPREAD | INLINE_FRAGMENT + + type Query { + dog: Dog + animal: Animal + } + + interface Animal { + name: String + } + + type Dog implements Animal { + name: String + breed: String + owner: Person + } + + type Cat implements Animal { + name: String + breed: String + color: String + siblings: [Cat] + } + + type Fish implements Animal { + name: String + } + + type Person { + firstname: String + lastname: String + bestFriend: Person + } + """ + + def "simple defer"() { + String query = """ + query q { + dog { + name + ... @defer(label: "breed-defer") { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + dog { + name + ... @defer(label: "breed-defer") { + breed + } + } +} +''' + } + + def "simple defer with named spread"() { + String query = """ + query q { + dog { + name + ... on Dog @defer(label: "breed-defer") { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + dog { + name + ... @defer(label: "breed-defer") { + breed + } + } +} +''' + } + + def "multiple labels on the same field"() { + String query = """ + query q { + dog { + name + ... @defer(label: "breed-defer") { + breed + } + ... @defer(label: "breed-defer-2") { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + dog { + name + ... @defer(label: "breed-defer") { + breed + } + ... @defer(label: "breed-defer-2") { + breed + } + } +} +''' + } + + def "multiple defers without label on the same field"() { + String query = """ + query q { + dog { + name + ... @defer { + breed + } + ... @defer { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + dog { + name + ... @defer { + breed + } + ... @defer { + breed + } + } +} +''' + } + + def "field with and without defer"() { + String query = """ + query q { + dog { + ... @defer { + breed + } + ... { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + dog { + ... @defer { + breed + } + } +} +''' + } + + def "defer on type spread"() { + String query = """ + query q { + animal { + ... on Dog @defer { + breed + } + ... on Dog { + name + } + ... on Dog @defer(label: "owner-defer") { + owner { + firstname + } + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + ... on Dog @defer { + breed + } + ... on Dog { + name + } + ... on Dog @defer(label: "owner-defer") { + owner { + firstname + } + } + } +} +''' + } + + def "2 fragments on non-conditional fields"() { + String query = """ + query q { + animal { + ... on Cat @defer { + name + } + ... on Animal @defer { + name + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + ... @defer { + name + } + ... @defer { + name + } + } +} +''' + } + + def "2 fragments on conditional fields"() { + String query = """ + query q { + animal { + ... on Cat @defer { + breed + } + ... on Dog @defer { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + ... on Cat @defer { + breed + } + ... on Dog @defer { + breed + } + } +} +''' + } + + def "2 fragments on conditional fields with different labels"() { + String query = """ + query q { + animal { + ... on Cat @defer(label: "cat-defer") { + breed + } + ... on Dog @defer(label: "dog-defer") { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + ... on Cat @defer(label: "cat-defer") { + breed + } + ... on Dog @defer(label: "dog-defer") { + breed + } + } +} +''' + } + + def "fragments on conditional fields with different labels and repeating types"() { + String query = """ + query q { + animal { + ... on Cat @defer(label: "cat-defer-1") { + breed + } + ... on Cat @defer(label: "cat-defer-2") { + breed + } + ... on Dog @defer(label: "dog-defer") { + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + ... on Cat @defer(label: "cat-defer-1") { + breed + } + ... on Cat @defer(label: "cat-defer-2") { + breed + } + ... on Dog @defer(label: "dog-defer") { + breed + } + } +} +''' + } + + def "nested defer"() { + String query = """ + query q { + animal { + ... on Cat @defer { + name + } + ... on Animal @defer { + name + ... on Dog @defer { + owner { + firstname + ... @defer { + lastname + } + ... @defer { + bestFriend { + firstname + ... @defer { + lastname + } + } + } + } + } + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + ... @defer { + name + } + ... @defer { + name + } + ... on Dog @defer { + owner { + firstname + ... @defer { + lastname + } + ... @defer { + bestFriend { + firstname + ... @defer { + lastname + } + } + } + } + } + } +} +''' + } + + def "multiple defers at the same level are preserved"() { + String query = """ + query q { + dog { + ... @defer { + name + } + ... @defer { + breed + } + ... @defer { + owner { + firstname + } + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def tree = createNormalizedTree(schema, query) + when: + def result = compileToDocumentWithDeferSupport(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + dog { + ... @defer { + name + } + ... @defer { + breed + } + ... @defer { + owner { + firstname + } + } + } +} +''' + } + + private ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { + assertValidQuery(schema, query, variables) + Document originalDocument = TestUtil.parseQuery(query) + + ExecutableNormalizedOperationFactory dependencyGraph = new ExecutableNormalizedOperationFactory() + def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(true) + return dependencyGraph.createExecutableNormalizedOperationWithRawVariables( + schema, + originalDocument, + null, + RawVariables.of(variables), + options + ) + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + GraphQLSchema mkSchema(String sdl) { + def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .wiringFactory(wiringFactory).build() + TestUtil.schema(sdl, runtimeWiring) + } +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy new file mode 100644 index 0000000000..b7928b4aed --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy @@ -0,0 +1,194 @@ +package graphql.normalized + +import graphql.schema.GraphQLSchema + +import static graphql.language.OperationDefinition.Operation.QUERY + +/** + * Test related to ENO and directives + */ +class ExecutableNormalizedOperationToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { + def bookSDL = ''' + directive @timeout(afterMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @cached(forMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @importance(place : String) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + type Query { + books(searchString : String) : [Book] + } + + type Book { + id : ID + title : String + review : String + } + ''' + + def "can extract variables or inline values for directives on the query"() { + def sdl = ''' + type Query { + foo(fooArg : String) : Foo + } + + type Foo { + bar(barArg : String) : String + } + + directive @optIn(to : [String!]!) repeatable on FIELD + ''' + + def query = ''' + query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!, $optVar : [String!]!) { + foo(fooArg : $fooArgVar) @skip(if : $skipVar) { + bar(barArg : $barArgVar) @optIn(to : ["optToX"]) @optIn(to : $optVar) + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def eno = createNormalizedTree(schema, query, + [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false, optVar: ["optToY"]]) + + when: + def result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0: "barArgVar", v1: ["optToX"], v2: ["optToY"], v3: "fooArgVar", v4: false] + // + // the below is what ir currently produces but its WRONG + // fix up when the other tests starts to work + // + ast == '''query named($v0: String, $v1: [String!]!, $v2: [String!]!, $v3: String, $v4: Boolean!) { + foo(fooArg: $v3) @skip(if: $v4) { + bar(barArg: $v0) @optIn(to: $v1) @optIn(to: $v2) + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query named { + foo(fooArg: "fooArgVar") @skip(if: false) { + bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) + } +} +''' + + } + + def "can handle quite a pathological fragment query as expected"() { + + def pathologicalQuery = ''' + fragment Details on Book @timeout(afterMillis: 25) @cached(forMillis : 25) @importance(place:"FragDef") { + title + review @timeout(afterMillis: 5) @cached(forMillis : 5) + ...InnerDetails @timeout(afterMillis: 26) + } + + fragment InnerDetails on Book @timeout(afterMillis: 27) { + review @timeout(afterMillis: 28) + } + + query Books @timeout(afterMillis: 30) @importance(place:"Operation") { + books(searchString: "monkey") { + id + ...Details @timeout(afterMillis: 20) + ...on Book @timeout(afterMillis: 15) { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + } + } + } + ''' + + GraphQLSchema schema = mkSchema(bookSDL) + def eno = createNormalizedTree(schema, pathologicalQuery, [:]) + + when: + def result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0:5, v1:5, v2:28, v3:10, v4:10, v5:"monkey"] + ast == '''query Books($v0: Int, $v1: Int, $v2: Int, $v3: Int, $v4: Int, $v5: String) { + books(searchString: $v5) { + id + review @cached(forMillis: $v1) @cached(forMillis: $v4) @timeout(afterMillis: $v0) @timeout(afterMillis: $v2) @timeout(afterMillis: $v3) + title + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query Books { + books(searchString: "monkey") { + id + review @cached(forMillis: 5) @cached(forMillis: 10) @timeout(afterMillis: 5) @timeout(afterMillis: 28) @timeout(afterMillis: 10) + title + } +} +''' + + } + + def "merged fields with the same field will capture all directives"() { + def query = ''' + query Books { + books(searchString: "monkey") { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + review @timeout(afterMillis: 100) @cached(forMillis : 100) + } + } + ''' + + GraphQLSchema schema = mkSchema(bookSDL) + def eno = createNormalizedTree(schema, query, [:]) + + when: + def result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + def document = result.document + def ast = printDoc(document) + + then: + ast == '''query Books { + books(searchString: "monkey") { + review @cached(forMillis: 10) @cached(forMillis: 100) @timeout(afterMillis: 10) @timeout(afterMillis: 100) + } +} +''' + } +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy new file mode 100644 index 0000000000..8f4a0851ac --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -0,0 +1,2288 @@ +package graphql.normalized + +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.RawVariables +import graphql.execution.directives.QueryAppliedDirective +import graphql.execution.directives.QueryDirectives +import graphql.language.AstPrinter +import graphql.language.AstSorter +import graphql.language.Document +import graphql.language.Field +import graphql.language.IntValue +import graphql.language.OperationDefinition +import graphql.language.StringValue +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.TestLiveMockedWiringFactory +import graphql.schema.scalars.JsonScalar +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.language.OperationDefinition.Operation.MUTATION +import static graphql.language.OperationDefinition.Operation.QUERY +import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION +import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocument +import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocumentWithDeferSupport + +abstract class ENOToAstCompilerTestBase extends Specification { + static boolean deferSupport + + VariablePredicate noVariables = new VariablePredicate() { + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + return false + } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { + return false + } + } + + VariablePredicate jsonVariables = new VariablePredicate() { + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { + "JSON" == normalizedInputValue.unwrappedTypeName && normalizedInputValue.value != null + } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + "JSON" == normalizedInputValue.unwrappedTypeName && normalizedInputValue.value != null + } + } + + VariablePredicate allVariables = new VariablePredicate() { + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { + return true + } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + return true + } + } + + + static ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { + assertValidQuery(schema, query, variables) + Document originalDocument = TestUtil.parseQuery(query) + + def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) + return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, originalDocument, null, RawVariables.of(variables), options) + } + + static List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { + return createNormalizedTree(schema, query, variables).getTopLevelFields() + } + + static void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + static GraphQLSchema mkSchema(String sdl) { + def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .wiringFactory(wiringFactory).build() + TestUtil.schema(sdl, runtimeWiring) + } + + static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( + GraphQLSchema schema, + OperationDefinition.Operation operationKind, + String operationName, + List topLevelFields, + VariablePredicate variablePredicate + ) { + return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); + } + + static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( + GraphQLSchema schema, + OperationDefinition.Operation operationKind, + String operationName, + List topLevelFields, + Map normalizedFieldToQueryDirectives, + VariablePredicate variablePredicate + ) { + if (deferSupport) { + return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + } + return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + } + + static Document sortDoc(Document doc) { + return new AstSorter().sort(doc) + } + + static printDoc(Document doc) { + return AstPrinter.printAst(sortDoc(doc)) + } +} + +/** + * Test code in here - helps in the base class + */ +abstract class ExecutableNormalizedOperationToAstCompilerTest extends ENOToAstCompilerTestBase { + + def "test pet interfaces"() { + String sdl = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Friend] + } + + union Pet = Dog | Cat + + type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] + } + + type Bird implements Animal { + name: String + friends: [Friend] + } + + type Cat implements Animal { + name: String + friends: [Friend] + breed: String + mood: String + } + + type Dog implements Animal { + name: String + breed: String + friends: [Friend] + } + """ + + String query = """ + { + animal { + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + mood + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + breed + } + } + } + """ + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def printed = printDoc(result.document) + then: + printed == '''{ + animal { + name + otherName: name + ... on Bird { + friends { + isBirdOwner + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Cat { + friends { + isCatOwner + pets { + ... on Dog { + name + } + } + } + mood + } + ... on Dog { + breed + } + } +} +''' + } + + def "test interface fields with different output types on the implementations"() { + def schema = TestUtil.schema(""" + interface Animal { + parent: Animal + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + parent { + name + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + parent { + name + } + } +} +""" + } + + def "test interface fields with different output types on the implementations 2"() { + def schema = TestUtil.schema(""" + interface Animal { + parent: Animal + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + parent { + name + ... on Dog { + isGoodBoy + } + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + parent { + name + ... on Dog { + isGoodBoy + } + } + } +} +""" + } + + def "test interface fields with different output types on the implementations 3"() { + // Tests we don't consider File as a possible option for parent on animals + def schema = TestUtil.schema(""" + interface Node { + parent: Node + } + type File implements Node { + name: ID + parent: File + } + interface Animal implements Node { + parent: Animal + name: String + } + type Cat implements Animal & Node { + name: String + parent: Cat + } + type Dog implements Animal & Node { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + file: File + } + """) + + String query = """ + { + animal { + parent { + name + ... on Dog { + isGoodBoy + } + ... on Node { + parent { + ... on Cat { + name + } + ... on Dog { + name + } + } + } + } + } + file { + name + ... on File { + parent { + name + } + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + parent { + name + parent { + name + } + ... on Dog { + isGoodBoy + } + } + } + file { + name + parent { + name + } + } +} +""" + } + + def "test interface fields with different output types on the implementations 4"() { + // Tests we don't consider File as a possible option for parent on animals + def schema = TestUtil.schema(""" + interface Node { + parent: Node + } + type File implements Node { + name: String + parent: File + } + interface Animal implements Node { + parent: Animal + name: String + } + type Cat implements Animal & Node { + name: String + parent: Cat + } + type Dog implements Animal & Node { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + file: File + } + """) + + String query = """ + { + animal { + parent { + name + ... on Dog { + isGoodBoy + } + ...F1 + } + } + file { + name + ... on File { + ...F1 + parent { + name + } + } + } + } + fragment F1 on Node { + parent { + ... on Cat { + name + } + ... on Dog { + name + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + parent { + name + parent { + name + } + ... on Dog { + isGoodBoy + } + } + } + file { + name + parent { + name + } + } +} +""" + } + + def "test named fragments on interface fields with different output types on implementations"() { + // Tests we don't consider File as a possible option for parent on animals + def schema = TestUtil.schema(""" + interface Node { + parent: Node + } + type File implements Node { + name: String + parent: File + } + interface Animal implements Node { + parent: Animal + name: String + } + type Cat implements Animal & Node { + name: String + parent: Cat + } + type Dog implements Animal & Node { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + file: File + } + """) + + String query = """ + { + animal { + parent { + name + ... on Dog { + isGoodBoy + } + ... on Node { + ...ParentName + } + } + } + file { + name + ... on File { + ...ParentName + } + } + } + + fragment ParentName on Node { + parent { + ... on Cat { + name + } + ... on Animal { + animal: name + } + ... on File { + name + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + parent { + name + parent { + animal: name + ... on Cat { + name + } + } + ... on Dog { + isGoodBoy + } + } + } + file { + name + parent { + name + } + } +} +""" + } + + def "test unions always insert fragments for its subselections"() { + def schema = TestUtil.schema(""" + union Animal = Cat | Dog + type Cat { + name: String + parent: Cat + } + type Dog { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + ... on Cat { + __typename + name + } + ... on Dog { + name + } + ... on Dog { + isGoodBoy + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + ... on Cat { + __typename + name + } + ... on Dog { + isGoodBoy + name + } + } +} +""" + } + + def "test typename in union when placed outside of fragments"() { + def schema = TestUtil.schema(""" + union Animal = Cat | Dog + type Cat { + name: String + parent: Cat + } + type Dog { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + __typename + ... on Cat { + name + } + ... on Dog { + name + } + ... on Dog { + isGoodBoy + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + printed == """{ + animal { + __typename + ... on Cat { + name + } + ... on Dog { + isGoodBoy + name + } + } +} +""" + } + + def "test typename in union when placed inside fragments but on all types conditions"() { + def schema = TestUtil.schema(""" + union Animal = Cat | Dog + type Cat { + name: String + parent: Cat + } + type Dog { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + ... on Cat { + __typename + name + } + ... on Dog { + __typename + name + } + ... on Dog { + isGoodBoy + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + // Perhaps the typename should be hoisted out of the fragments, but the impl currently generates + // -Query.animal: Animal + // --Cat.__typename: String! + // --Dog.__typename: String! + // --Cat.name: String + // --Dog.name: String + // --Dog.isGoodBoy: Boolean + printed == """{ + animal { + __typename + ... on Cat { + name + } + ... on Dog { + isGoodBoy + name + } + } +} +""" + } + + def "test print field for isGoodBoy when parent is changed to type Dog"() { + def schema = TestUtil.schema(""" + interface Animal { + parent: Animal + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + ... on Dog { + parent { + isGoodBoy + } + } + ... on Animal { + parent { + name + } + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + // Note: the name field is spread across both fragments + printed == """{ + animal { + ... on Cat { + parent { + name + } + } + ... on Dog { + parent { + isGoodBoy + name + } + } + } +} +""" + } + + def "test non conditional fields from interfaces are not surrounded by fragments"() { + def schema = TestUtil.schema(""" + interface Animal { + parent: Animal + name: String + age: Int + location: String + } + type Cat implements Animal { + name: String + parent: Cat + age: Int + location: String + } + type Possum implements Animal { + name: String + parent: Animal + age: Int + location: String + } + type Rodent implements Animal { + name: String + parent: Animal + age: Int + location: String + } + type Deer implements Animal { + name: String + parent: Animal + age: Int + location: String + } + type Dog implements Animal { + name: String + parent: Dog + age: Int + location: String + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """) + + String query = """ + { + animal { + __typename + name + age + location + parent { + name + location + ... on Dog { + __typename + age + isGoodBoy + } + grandparent: parent { + name + age + ... on Cat { + catAge: age + } + } + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + // Ensure that age location name etc are not surrounded by fragments unnecessarily + printed == """{ + animal { + __typename + age + location + name + parent { + location + name + grandparent: parent { + age + name + ... on Cat { + catAge: age + } + } + ... on Dog { + __typename + age + isGoodBoy + } + } + } +} +""" + } + + def "test non conditional fields from interfaces are not surrounded by fragments 2"() { + def schema = TestUtil.schema(""" + type Issue { + fields: IssueField + } + interface IssueField { + id: ID! + fieldId: Int + fieldName: String + label: String! + } + type DateIssueField implements IssueField { + id: ID! + fieldId: Int + fieldName: String + label: String! + date: String + } + type OptionsIssueField implements IssueField { + id: ID! + fieldId: Int + fieldName: String + label: String! + } + type SpecialIssueField implements IssueField { + id: ID! + fieldId: Int + fieldName: String + label: String! + specialType: String + } + type Query { + issue: Issue + } + """) + + // This query also includes unnecessary fragments for fields that are already defined without fragments + String query = """ + { + issue { + fields { + __typename + id + fieldId + fieldName + label + ... on IssueField { + fieldId + } + ... on DateIssueField { + date + } + ... on SpecialIssueField { + id + fieldId + specialType + } + } + } + } + """ + + def tree = createNormalizedTree(schema, query) + // printTreeWithLevelInfo(tree, schema).forEach { println it } + + when: + def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) + def printed = printDoc(result.document) + + then: + // Ensure that __typename id fieldId fieldName etc. are not surrounded by fragments unnecessarily + printed == """{ + issue { + fields { + __typename + fieldId + fieldName + id + label + ... on DateIssueField { + date + } + ... on SpecialIssueField { + specialType + } + } + } +} +""" + } + + def "test a combination of plain objects and interfaces"() { + def sdl = ''' + type Query { + foo(arg: I): Foo + } + type Foo { + bar(arg: I): Bar + } + type Bar { + baz : Baz + } + interface Baz { + boo : String + } + type ABaz implements Baz { + boo : String + a : String + } + type BBaz implements Baz { + boo : String + b : String + } + input I { + arg1: String + } + ''' + def query = '''query { + foo(arg: {arg1 : "fooArg"}) { + bar(arg: {arg1 : "barArg"}) { + baz { + ... on ABaz { + boo + a + } + } + } + } +} + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''{ + foo(arg: {arg1 : "fooArg"}) { + bar(arg: {arg1 : "barArg"}) { + baz { + ... on ABaz { + a + boo + } + } + } + } +} +''' + } + + def "test arguments"() { + def sdl = ''' + type Query { + foo1(arg: String): String + foo2(a: Int, b: Boolean, c: Float): String + } + ''' + def query = ''' { + foo1(arg: "hello") + foo2(a: 123, b: true, c: 123.45) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''{ + foo1(arg: "hello") + foo2(a: 123, b: true, c: 123.45) +} +''' + } + + def "sets operation name"() { + def sdl = ''' + type Query { + foo1(arg: String): String + foo2(a: Int,b: Boolean, c: Float): String + } + ''' + def query = ''' { + foo1(arg: "hello") + foo2(a: 123, b: true, c: 123.45) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, "My_Op23", fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''query My_Op23 { + foo1(arg: "hello") + foo2(a: 123, b: true, c: 123.45) +} +''' + } + + def "test input object arguments"() { + def sdl = ''' + type Query { + foo1(arg: I): String + } + input I { + arg1: String + arg2: Int + arg3: ID + arg4: Boolean + arg5: Float + nested: I + } + ''' + def query = '''{ + foo1(arg: { + arg1: "Hello" + arg2: 123 + arg3: "IDID" + arg4: false + arg5: 123.123 + nested: { + arg1: "Hello2" + arg2: 1234 + arg3: "IDID1" + arg4: null + arg5: null + } + }) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''{ + foo1(arg: {arg1 : "Hello", arg2 : 123, arg3 : "IDID", arg4 : false, arg5 : 123.123, nested : {arg1 : "Hello2", arg2 : 1234, arg3 : "IDID1", arg4 : null, arg5 : null}}) +} +''' + } + + + def "test input object arguments 2"() { + def sdl = ''' + type Query { + foo1(arg: Outer): String + } + input Outer { + a : Inner + } + input Inner { + b : InnerInner + } + input InnerInner { + c : Int + d : String + } + ''' + def query = '''query something($v : Int){ + foo1(arg: { a : { b : { c :$v, d :"ast" }}}) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query, ["v": 123]) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, allVariables) + def documentPrinted = printDoc(result.document) + + then: + fields[0].normalizedArguments["arg"].value["a"].value["b"].value["c"].value.isEqualTo(IntValue.of(123)) + fields[0].normalizedArguments["arg"].value["a"].value["b"].value["d"].value.isEqualTo(StringValue.of("ast")) + documentPrinted.trim() == '''query ($v0: Outer) { + foo1(arg: $v0) +}''' + } + + def "test mutations"() { + def sdl = ''' + type Query { + foo1(arg: I): String + } + type Mutation { + foo1(arg: I): String + } + input I { + arg1: String + } + ''' + def query = '''mutation { + foo1(arg: { + arg1: "Mutation" + }) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''mutation { + foo1(arg: {arg1 : "Mutation"}) +} +''' + } + + def "test subscriptions"() { + def sdl = ''' + type Query { + foo1(arg: I): String + } + type Subscription { + foo1(arg: I): String + } + input I { + arg1: String + } + ''' + def query = '''subscription { + foo1(arg: { + arg1: "Subscription" + }) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, SUBSCRIPTION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''subscription { + foo1(arg: {arg1 : "Subscription"}) +} +''' + } + + + def "test query directive"() { + def sdl = ''' + type Query { + foo1(arg: I): String + + } + type Subscription { + foo1(arg: I): DevOps + + } + input I { + arg1: String + } + + type DevOps{ + name: String + } + + directive @optIn(to : [String!]!) repeatable on FIELD + ''' + def query = '''subscription { + foo1 (arg: { + arg1: "Subscription" + }) @optIn(to: "foo") { + name @optIn(to: "devOps") + } + + + } + ''' + GraphQLSchema schema = mkSchema(sdl) + Document document = new Parser().parse(query) + ExecutableNormalizedOperation eno = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, document, null, RawVariables.emptyVariables()) + + + when: + def result = localCompileToDocument(schema, SUBSCRIPTION, null, eno.topLevelFields, eno.normalizedFieldToQueryDirectives, noVariables) + OperationDefinition operationDefinition = result.document.getDefinitionsOfType(OperationDefinition.class)[0] + def fooField = (Field) operationDefinition.selectionSet.children[0] + def nameField = (Field) fooField.selectionSet.children[0] + def documentPrinted = printDoc(result.document) + + then: + + fooField.directives.size() == 1 + nameField.directives.size() == 1 + documentPrinted == '''subscription { + foo1(arg: {arg1 : "Subscription"}) @optIn(to: ["foo"]) { + name @optIn(to: ["devOps"]) + } +} +''' + } + + def "test redundant inline fragments specified in original query"() { + def sdl = ''' + type Query { + foo1(arg: I): Foo + } + type Mutation { + foo1(arg: I): Foo + } + type Foo { + test: String + } + input I { + arg1: String + } + ''' + def query = '''mutation { + ... on Mutation { + foo1(arg: { + arg1: "Mutation" + }) { + ... on Foo { + test + } + } + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + documentPrinted == '''mutation { + foo1(arg: {arg1 : "Mutation"}) { + test + } +} +''' + } + + def "inserts inline fragment on interface types"() { + def sdl = ''' + type Query { + foo1(arg: I): Foo + } + type Mutation { + foo1(arg: I): Foo + } + interface Foo { + test: String + } + type AFoo implements Foo { + test: String + } + input I { + arg1: String + } + ''' + def query = '''query { + ... on Query { + foo1(arg: { + arg1: "Query" + }) { + ... on Foo { + test + } + } + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + documentPrinted == '''{ + foo1(arg: {arg1 : "Query"}) { + test + } +} +''' + } + + def "introspection query can be printed __schema"() { + def sdl = ''' + type Query { + f: String + } + ''' + def query = ''' + query introspection_query { + __schema { + queryType { + fields(includeDeprecated: false) { + name + } + } + } + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + documentPrinted == '''{ + __schema { + queryType { + fields(includeDeprecated: false) { + name + } + } + } +} +''' + } + + def "introspection query can be printed __type"() { + def sdl = ''' + type Query { + f: String + } + ''' + def query = ''' + query introspection_query { + __type(name: "World") { + name + fields { + name + } + } + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + documentPrinted == '''{ + __type(name: "World") { + fields { + name + } + name + } +} +''' + } + + def "test is conditional when there is only one interface implementation"() { + def sdl = ''' + type Query { + foo1: Foo + } + interface Foo { + test: String + } + type AFoo implements Foo { + test: String + aFoo: String + } + ''' + def query = '''query { + ... on Query { + foo1 { + ... on Foo { + test + } + ... on AFoo { + aFoo + } + } + } + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + documentPrinted == '''{ + foo1 { + test + ... on AFoo { + aFoo + } + } +} +''' + } + + def "test is conditional when there is only one union implementation"() { + def sdl = ''' + type Query { + foo1: Foo + } + union Foo = AFoo + type AFoo { + test: String + aFoo: String + } + ''' + def query = '''{ + ... on Query { + foo1 { + ... on AFoo { + aFoo + } + } + } + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + documentPrinted == '''{ + foo1 { + ... on AFoo { + aFoo + } + } +} +''' + } + + def "handles concrete and abstract fields"() { + def sdl = ''' + type Query { + foo1(arg: I): Foo + } + type Mutation { + foo1(arg: I): Foo + } + interface Foo { + test: String + } + type AFoo implements Foo { + test: String + afoo: String + } + input I { + arg1: String + } + ''' + def query = '''query { + ... on Query { + foo1(arg: { + arg1: "Query" + }) { + test + ... on AFoo { + afoo + } + ... on AFoo { + __typename + } + } + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + // Note: the typename field moves out of a fragment because AFoo is the only impl + documentPrinted == '''{ + foo1(arg: {arg1 : "Query"}) { + __typename + test + ... on AFoo { + afoo + } + } +} +''' + } + + def "handles typename outside fragment and inside fragment"() { + def sdl = ''' + type Query { + foo1(arg: I): Foo + } + type Mutation { + foo1(arg: I): Foo + } + interface Foo { + test: String + } + type AFoo implements Foo { + test: String + } + input I { + arg1: String + } + ''' + def query = '''query { + ... on Query { + foo1(arg: { + arg1: "Query" + }) { + __typename + test + ... on AFoo { + __typename + } + } + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + // Note: the typename field moves out of a fragment because AFoo is the only impl + documentPrinted == '''{ + foo1(arg: {arg1 : "Query"}) { + __typename + test + } +} +''' + } + + def "handles typename inside fragment"() { + def sdl = ''' + type Query { + foo1(arg: I): Foo + } + type Mutation { + foo1(arg: I): Foo + } + interface Foo { + test: String + } + type AFoo implements Foo { + test: String + } + type BFoo implements Foo { + test: String + } + input I { + arg1: String + } + ''' + def query = '''{ + ... on Query { + foo1(arg: { + arg1: "Query" + }) { + test + ... on AFoo { + __typename + } + } + } + } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + def fields = createNormalizedFields(schema, query) + when: + def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + then: + // Note: the typename field moves out of a fragment because AFoo is the only impl + documentPrinted == '''{ + foo1(arg: {arg1 : "Query"}) { + test + ... on AFoo { + __typename + } + } +} +''' + } + + def "test JSON when input is a variable"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: JSON!): String + } + + scalar JSON + ''' + def query = '''mutation hello($var: JSON!) { + foo1(arg: $var) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + + def vars = [var: ["48x48": "hello"]] + def fields = createNormalizedFields(schema, query, vars) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [v0: ["48x48": "hello"]] + documentPrinted == '''mutation ($v0: JSON!) { + foo1(arg: $v0) +} +''' + } + + def "test JSON when input is a string variable"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: JSON!): String + } + + scalar JSON + ''' + def query = '''mutation hello($var: JSON!) { + foo1(arg: $var) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + + def vars = [var: "hello there"] + def fields = createNormalizedFields(schema, query, vars) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [v0: "hello there"] + documentPrinted == '''mutation ($v0: JSON!) { + foo1(arg: $v0) +} +''' + } + + def "test JSON when input is an int variable"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: JSON!): String + } + + scalar JSON + ''' + def query = '''mutation hello($var: JSON!) { + foo1(arg: $var) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + + def vars = [var: 1] + def fields = createNormalizedFields(schema, query, vars) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [v0: 1] + documentPrinted == '''mutation ($v0: JSON!) { + foo1(arg: $v0) +} +''' + } + + def "test JSON scalar when JSON arg is null"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: JSON): String + } + + scalar JSON + ''' + def query = '''mutation { + foo1 + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [:] + documentPrinted == '''mutation { + foo1 +} +''' + } + + def "test JSON scalar when JSON arg is explicitly null"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: JSON): String + } + + scalar JSON + ''' + def query = '''mutation { + foo1(arg: null) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [:] + documentPrinted == '''mutation { + foo1(arg: null) +} +''' + } + + def "test JSON scalar when input is inlined"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: JSON!): String + } + + scalar JSON + ''' + def query = '''mutation { + foo1(arg: {one: "two", three: ["four", "five"]}) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [v0: [one: "two", three: ["four", "five"]]] + documentPrinted == '''mutation ($v0: JSON!) { + foo1(arg: $v0) +} +''' + } + + def "test JSON scalar when input is inlined, multiple JSON args"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg1: JSON!, arg2: [JSON!]): String + } + + scalar JSON + ''' + def query = '''mutation { + foo1(arg1: {one: "two", three: ["four", "five"]}, arg2: [{one: "two", three: ["four", "five"]}]) + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables.size() == 2 + result.variables['v0'] == [one: "two", three: ["four", "five"]] + result.variables['v1'] == [[one: "two", three: ["four", "five"]]] + documentPrinted == '''mutation ($v0: JSON!, $v1: [JSON!]) { + foo1(arg1: $v0, arg2: $v1) +} +''' + } + + def "test JSON scalar inside an input type"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: InputWithJson): String + } + + input InputWithJson { + id: ID + json: JSON + } + scalar JSON + ''' + def query = '''mutation { + foo1(arg: {id: "ID-00", json: {name: "Zlatan", lastName: "Ibrahimoviç", clubs: ["MU", "Barsa", "Inter", "Milan"]}}) + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + def vars = result.variables + + then: + vars.size() == 1 + vars['v0'] == [lastName: "Ibrahimoviç", name: "Zlatan", clubs: ["MU", "Barsa", "Inter", "Milan"]] + documentPrinted == '''mutation ($v0: JSON) { + foo1(arg: {id : "ID-00", json : $v0}) +} +''' + } + + def "test JSON scalar inside an input type, json value is explicitly null"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: InputWithJson): String + } + + input InputWithJson { + id: ID + json: JSON + } + scalar JSON + ''' + def query = '''mutation { + foo1(arg: {id: "ID-00", json: null}) + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [:] + documentPrinted == '''mutation { + foo1(arg: {id : "ID-00", json : null}) +} +''' + } + + def "test JSON scalar inside an input type, json value is null"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: InputWithJson): String + } + + input InputWithJson { + id: ID + json: JSON + } + scalar JSON + ''' + def query = '''mutation { + foo1(arg: {id: "ID-00"}) + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables == [:] + documentPrinted == '''mutation { + foo1(arg: {id : "ID-00"}) +} +''' + } + + def "test JSON scalar inside an input type, json key is illegal graphql input name"() { + def sdl = ''' + type Query { + foo: String + } + type Mutation { + foo1(arg: InputWithJson): String + } + + input InputWithJson { + id: ID + json: [JSON!] + } + scalar JSON + ''' + def query = '''mutation test($var: InputWithJson) { + foo1(arg: $var) + } + ''' + def variables = [var: [ + id : "ID-00", + json: [[name : "Zlatan", + lastName: "Ibrahimoviç", + clubs : ["MU", "Barsa", "Inter", "Milan", null], + "48x48" : "Zlatan_48x48.jpg", + "96x96" : null + ]] + ]] + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query, variables) + + when: + def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) + def documentPrinted = printDoc(result.document) + + then: + result.variables.size() == 1 + result.variables['v0'] == [[name : "Zlatan", + lastName: "Ibrahimoviç", + clubs : ["MU", "Barsa", "Inter", "Milan", null], + "48x48" : "Zlatan_48x48.jpg", + "96x96" : null + ]] + documentPrinted == '''mutation ($v0: [JSON!]) { + foo1(arg: {id : "ID-00", json : $v0}) +} +''' + } + + + def "test a combination of plain objects and interfaces with all variables and no variables"() { + def sdl = ''' + type Query { + listField1(arg: [Int]): String + listField2(arg: [I]): String + foo(arg: I): Foo + fooNonNull(arg: [I!]!): String + } + type Foo { + bar(arg: I): Bar + } + type Bar { + baz : Baz + } + interface Baz { + boo(arg: I) : String + } + type ABaz implements Baz { + boo(arg: I) : String + a : String + } + type BBaz implements Baz { + boo(arg: I) : String + b : String + } + input I { + arg1: String + arg2: [I] + } + ''' + def query = ''' + query whatEv { + listField1( arg : [1,2,3] ) + listField2( arg : [ {arg1 : "v1", arg2 : [ {arg1 : "v1.1"}] }, + {arg1 : "v2"}, + {arg1 : "v3"}] ) + + fooNonNull(arg: [{arg1 : "fooNonNullArg1"}, {arg1 : "fooNonNullArg2"}]) + + foo(arg: {arg1 : "fooArg"}) { + bar(arg: {arg1 : "barArg"}) { + baz { + ... on ABaz { + boo(arg : {arg1 : "barFragArg"}) + a + } + } + } + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query) + + when: + def result = localCompileToDocument(schema, QUERY, "named", fields, allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + + ast == '''query named($v0: [Int], $v1: [I], $v2: [I!]!, $v3: I, $v4: I, $v5: I) { + foo(arg: $v5) { + bar(arg: $v4) { + baz { + ... on ABaz { + a + boo(arg: $v3) + } + } + } + } + fooNonNull(arg: $v2) + listField1(arg: $v0) + listField2(arg: $v1) +} +''' + + vars == [v0: [1, 2, 3], + v1: [[arg1: "v1", arg2: [[arg1: "v1.1"]]], [arg1: "v2"], [arg1: "v3"]], + v2: [[arg1: "fooNonNullArg1"], [arg1: "fooNonNullArg2"]], + v3: [arg1: "barFragArg"], + v4: [arg1: "barArg"], + v5: [arg1: "fooArg"]] + + // + // Test the opposite - when we use no variables predicate everything should be inlined + // + when: "it has no variables" + + fields = createNormalizedFields(schema, query, [v0: [1, 2, 3], + v1: [[arg1: "v1", arg2: [[arg1: "v1.1"]]], [arg1: "v2"], [arg1: "v3"]], + v2: [[arg1: "fooNonNullArg1"], [arg1: "fooNonNullArg2"]], + v3: [arg1: "barFragArg"], + v4: [arg1: "barArg"], + v5: [arg1: "fooArg"]]) + + result = localCompileToDocument(schema, QUERY, "named", fields, noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: "they should be inlined as values" + + // no vars created + vars == [:] + + // everything inlined + ast == '''query named { + foo(arg: {arg1 : "fooArg"}) { + bar(arg: {arg1 : "barArg"}) { + baz { + ... on ABaz { + a + boo(arg: {arg1 : "barFragArg"}) + } + } + } + } + fooNonNull(arg: [{arg1 : "fooNonNullArg1"}, {arg1 : "fooNonNullArg2"}]) + listField1(arg: [1, 2, 3]) + listField2(arg: [{arg1 : "v1", arg2 : [{arg1 : "v1.1"}]}, {arg1 : "v2"}, {arg1 : "v3"}]) +} +''' + } +} + +class ExecutableNormalizedOperationToAstCompilerTestWithDeferSupport extends ExecutableNormalizedOperationToAstCompilerTest { + static { + deferSupport = true + } +} + +class ExecutableNormalizedOperationToAstCompilerTestNoDeferSupport extends ExecutableNormalizedOperationToAstCompilerTest { + static { + deferSupport = false + } +} diff --git a/src/test/groovy/graphql/normalized/NormalizedInputValueTest.groovy b/src/test/groovy/graphql/normalized/NormalizedInputValueTest.groovy new file mode 100644 index 0000000000..1eb092fa74 --- /dev/null +++ b/src/test/groovy/graphql/normalized/NormalizedInputValueTest.groovy @@ -0,0 +1,87 @@ +package graphql.normalized + +import graphql.AssertException +import spock.lang.Specification +import spock.lang.Unroll + +class NormalizedInputValueTest extends Specification { + + @Unroll + def "can get unwrapped type name - #typename"() { + expect: + + def value = new NormalizedInputValue(typename, 1) + value.getTypeName() == typename + value.getUnwrappedTypeName() == unwrappedTypeName + + where: + typename | unwrappedTypeName + "[TypeName!]!" | "TypeName" + "[TypeName!]" | "TypeName" + "[TypeName]" | "TypeName" + "TypeName!" | "TypeName" + "TypeName!" | "TypeName" + "TypeName" | "TypeName" + } + + @Unroll + def "is list like- #typename"() { + expect: + + def value = new NormalizedInputValue(typename, 1) + value.isListLike() == expected + + where: + typename | expected + "[TypeName!]!" | true + "[TypeName!]" | true + "[TypeName]" | true + "TypeName!" | false + "TypeName" | false + } + + @Unroll + def "is nullable - #typename"() { + expect: + + def value = new NormalizedInputValue(typename, 1) + value.isNonNullable() == expectedNonNullable + value.isNullable() == !expectedNonNullable + + where: + typename | expectedNonNullable + "[TypeName!]!" | true + "[TypeName!]" | false + "[TypeName]" | false + "TypeName!" | true + "TypeName" | false + } + + @Unroll + def "bad input will be rejected = #typename"() { + expect: + + try { + new NormalizedInputValue(typename, 1) + assert valid, "This should have thrown an assert" + } catch (AssertException ignored) { + assert !valid, "This should have been valid" + } + + where: + typename | valid + " !" | false + "" | false + " " | false + " Name" | false + "Name " | false + "[]!" | false + "!!" | false + "[Name" | false + "Name]" | false + null | false + "[Valid]" | true + "[Valid]!" | true + "[Valid!]!" | true + } +} diff --git a/src/test/groovy/graphql/normalized/ValueToVariableValueCompilerTest.groovy b/src/test/groovy/graphql/normalized/ValueToVariableValueCompilerTest.groovy new file mode 100644 index 0000000000..0a168121e7 --- /dev/null +++ b/src/test/groovy/graphql/normalized/ValueToVariableValueCompilerTest.groovy @@ -0,0 +1,134 @@ +package graphql.normalized + +import graphql.language.ArrayValue +import graphql.language.BooleanValue +import graphql.language.EnumValue +import graphql.language.FloatValue +import graphql.language.IntValue +import graphql.language.ListType +import graphql.language.NonNullType +import graphql.language.NullValue +import graphql.language.ObjectField +import graphql.language.ObjectValue +import graphql.language.StringValue +import graphql.language.TypeName +import graphql.schema.idl.TypeUtil +import spock.lang.Specification + +class ValueToVariableValueCompilerTest extends Specification { + + def "cam handle different ast Value objects"() { + + expect: + def actual = ValueToVariableValueCompiler.normalisedValueToVariableValue(value) + actual == expected + + where: + value | expected + NullValue.of() | null + IntValue.of(666) | 666 + StringValue.of("str") | "str" + BooleanValue.of(true) | true + FloatValue.of(999d) | 999d + EnumValue.of("enumValue") | "enumValue" + ObjectValue.newObjectValue() + .objectField(ObjectField.newObjectField().name("a").value(IntValue.of(64)).build()) + .objectField(ObjectField.newObjectField().name("b").value(StringValue.of("65")).build()) + .build() | [a: 64, b: "65"] + ArrayValue.newArrayValue() + .value(IntValue.of(9)) + .value(StringValue.of("10")) + .value(EnumValue.of("enum")) + .build() | [9, "10", "enum"] + + } + + def "can handle NormalizedInputValue values that are literals"() { + expect: + def niv = new NormalizedInputValue("TypeName", value) + def actual = ValueToVariableValueCompiler.normalisedValueToVariableValue(niv) + actual == expected + + where: + value | expected + NullValue.of() | null + IntValue.of(666) | 666 + StringValue.of("str") | "str" + BooleanValue.of(true) | true + FloatValue.of(999d) | 999d + EnumValue.of("enumValue") | "enumValue" + ObjectValue.newObjectValue() + .objectField(ObjectField.newObjectField().name("a").value(IntValue.of(64)).build()) + .objectField(ObjectField.newObjectField().name("b").value(StringValue.of("65")).build()) + .build() | [a: 64, b: "65"] + ArrayValue.newArrayValue() + .value(IntValue.of(9)) + .value(StringValue.of("10")) + .value(EnumValue.of("enum")) + .build() | [9, "10", "enum"] + + + } + + def "can handle NormalizedInputValue values that are not literals"() { + expect: + def niv = new NormalizedInputValue("TypeName", value) + def actual = ValueToVariableValueCompiler.normalisedValueToVariableValue(niv) + actual == expected + + where: + value | expected + null | null + [IntValue.of(666), IntValue.of(664)] | [666, 664] + [a: IntValue.of(666), b: IntValue.of(664)] | [a: 666, b: 664] + + // at present we dont handle straight up java objects like 123 because + // the ValueResolver never produces them during + // ValueResolver.getNormalizedVariableValues say - this is debatable behavior + // but for now this is what we do + } + + def "can handle NormalizedInputValue values that are NIV with null members"() { + expect: + def niv = new NormalizedInputValue("TypeName", value) + def actual = ValueToVariableValueCompiler.normalisedValueToVariableValue(niv) + actual == expected + + where: + value | expected + [a: new NormalizedInputValue("X", IntValue.of(666)), b: new NormalizedInputValue("X", null)] | [a: 666, b: null] + [new NormalizedInputValue("X", IntValue.of(666)), new NormalizedInputValue("X", null)] | [666, null] + } + + + def "can print variables as expected"() { + expect: + def niv = new NormalizedInputValue(typeName, value) + def actual = ValueToVariableValueCompiler.normalizedInputValueToVariable(niv, varCount) + actual.value == expectedValue + actual.variableReference.name == expectedVarName + actual.definition.name == expectedVarName + // compare actual type + def actualType = actual.definition.type + actualType.isEqualTo(expectedType) + if (actualType instanceof NonNullType || actualType instanceof ListType) { + actualType.type.isEqualTo(expectedType.type) + } + TypeUtil.simplePrint(actualType) == typeName + + where: + value | varCount | typeName | expectedValue | expectedVarName | expectedType + NullValue.newNullValue().build() | 1 | "ID" | null | "v1" | new TypeName("ID") + IntValue.of(666) | 2 | "Int!" | 666 | "v2" | new NonNullType(new TypeName("Int")) + StringValue.of("str") | 3 | "String" | "str" | "v3" | new TypeName("String") + BooleanValue.of(true) | 4 | "Boolean!" | true | "v4" | new NonNullType(new TypeName("Boolean")) + FloatValue.of(999d) | 5 | "Float" | 999d | "v5" | new TypeName("Float") + EnumValue.of("enumValue") | 6 | "Foo!" | "enumValue" | "v6" | new NonNullType(new TypeName("Foo")) + ["a": IntValue.of(64), + "b": IntValue.of(65)] | 7 | "ObjectType" | [a: 64, b: 65] | "v7" | new TypeName("ObjectType") + [StringValue.of("9"), + StringValue.of("10"), + StringValue.of("11")] | 8 | "[String]" | ["9", "10", "11"] | "v8" | new ListType((new TypeName("String"))) + + } +} diff --git a/src/test/groovy/graphql/normalized/VariableAccumulatorTest.groovy b/src/test/groovy/graphql/normalized/VariableAccumulatorTest.groovy new file mode 100644 index 0000000000..377907b771 --- /dev/null +++ b/src/test/groovy/graphql/normalized/VariableAccumulatorTest.groovy @@ -0,0 +1,46 @@ +package graphql.normalized + +import graphql.language.IntValue +import graphql.language.NullValue +import graphql.language.StringValue +import graphql.language.TypeName +import spock.lang.Specification + +class VariableAccumulatorTest extends Specification { + + def alwaysTruePredicate = new VariablePredicate() { + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { + return true + } + } + + def "can build itself handing null values"() { + when: + VariableAccumulator accumulator = new VariableAccumulator(alwaysTruePredicate) + accumulateData(accumulator) + + def variablesMap = accumulator.getVariablesMap() + then: + variablesMap == [v0: "hello", v1: 666, v2: null, v3: null] + } + + def "can build variable definitions"() { + when: + VariableAccumulator accumulator = new VariableAccumulator(alwaysTruePredicate) + accumulateData(accumulator) + def names = accumulator.getVariableDefinitions().collect { vd -> vd.name } + def typeNames = accumulator.getVariableDefinitions().collect { vd -> (vd.type as TypeName).name } + + then: + names == ["v0", "v1", "v2", "v3"] + typeNames == ["String", "Int", "Int", "String"] + } + + private void accumulateData(VariableAccumulator accumulator) { + accumulator.accumulateVariable(new NormalizedInputValue("String", StringValue.of("hello"))) + accumulator.accumulateVariable(new NormalizedInputValue("Int", IntValue.of(666))) + accumulator.accumulateVariable(new NormalizedInputValue("Int", NullValue.of())) + accumulator.accumulateVariable(new NormalizedInputValue("String", null)) + } +} diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy new file mode 100644 index 0000000000..5ef79cd417 --- /dev/null +++ b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy @@ -0,0 +1,251 @@ +package graphql.normalized.nf + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.Document +import graphql.schema.GraphQLSchema +import graphql.schema.GraphQLTypeUtil +import graphql.util.TraversalControl +import graphql.util.Traverser +import graphql.util.TraverserContext +import graphql.util.TraverserVisitorStub +import spock.lang.Specification + +class NormalizedDocumentFactoryTest extends Specification { + + def "test"() { + String schema = """ +type Query{ + animal: Animal +} +interface Animal { + name: String + friends: [Friend] +} + +union Pet = Dog | Cat + +type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] +} + +type Bird implements Animal { + name: String + friends: [Friend] +} + +type Cat implements Animal{ + name: String + friends: [Friend] + breed: String +} + +type Dog implements Animal{ + name: String + breed: String + friends: [Friend] +} + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + animal{ + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + } + }} + + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + def tree = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.animal: Animal', + '--[Bird, Cat, Dog].name: String', + '--otherName: [Bird, Cat, Dog].name: String', + '--Cat.friends: [Friend]', + '---Friend.isCatOwner: Boolean', + '---Friend.pets: [Pet]', + '----Dog.name: String', + '--Bird.friends: [Friend]', + '---Friend.isBirdOwner: Boolean', + '---Friend.name: String', + '---Friend.pets: [Pet]', + '----Cat.breed: String' + ] + } + + def "document with skip/include with variables"() { + String schema = """ + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query ($skip: Boolean!, $include: Boolean!) { + foo { + name + bar @skip(if: $skip) { + baz @include(if: $include) + } + } + } + ''' + + + assertValidQuery(graphQLSchema, query, [skip: false, include: true]) + + Document document = TestUtil.parseQuery(query) + def tree = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree.join("\n") == '''variables: [skip:false, include:false] +-Query.foo: Foo +--Foo.name: String +--Foo.bar: Bar +variables: [skip:true, include:false] +-Query.foo: Foo +--Foo.name: String +variables: [skip:false, include:true] +-Query.foo: Foo +--Foo.name: String +--Foo.bar: Bar +---Bar.baz: String +variables: [skip:true, include:true] +-Query.foo: Foo +--Foo.name: String''' + } + + def "document with custom directives"() { + String schema = """ + directive @cache(time: Int!) on FIELD + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query { + foo { + name + bar @cache(time:100) { + baz + } + bar @cache(time:200) { + baz + } + + } + } + ''' + + + assertValidQuery(graphQLSchema, query, [skip: false, include: true]) + + Document document = TestUtil.parseQuery(query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def rootField = normalizedDocument.getSingleNormalizedOperation().getRootFields().get(0) + def bar = rootField.getChildren().get(1) + + expect: + bar.getAstDirectives().size() == 2 + } + + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + def ei = ExecutionInput.newExecutionInput(query).variables(variables).build() + assert graphQL.execute(ei).errors.size() == 0 + } + + static List printDocumentWithLevelInfo(NormalizedDocument normalizedDocument, GraphQLSchema schema) { + def result = [] + for (NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables normalizedOperationWithAssumedSkipIncludeVariables : normalizedDocument.normalizedOperations) { + NormalizedOperation normalizedOperation = normalizedOperationWithAssumedSkipIncludeVariables.normalizedOperation; + if (normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables != null) { + result << "variables: " + normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables + } + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + traverser.traverse(normalizedOperation.getRootFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + NormalizedField normalizedField = context.thisNode() + String prefix = "" + for (int i = 1; i <= normalizedField.getLevel(); i++) { + prefix += "-" + } + + def possibleOutputTypes = new LinkedHashSet() + for (fieldDef in normalizedField.getFieldDefinitions(schema)) { + possibleOutputTypes.add(GraphQLTypeUtil.simplePrint(fieldDef.type)) + } + + result << (prefix + normalizedField.printDetails() + ": " + possibleOutputTypes.join(", ")) + return TraversalControl.CONTINUE + } + }) + } + result + } + + +} diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy new file mode 100644 index 0000000000..c797392fe3 --- /dev/null +++ b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy @@ -0,0 +1,257 @@ +package graphql.normalized.nf + +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.AstPrinter +import graphql.language.AstSorter +import graphql.language.OperationDefinition +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput + +class NormalizedOperationToAstCompilerTest extends Specification { + + + def "test pet interfaces"() { + String sdl = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Friend] + } + + union Pet = Dog | Cat + + type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] + } + + type Bird implements Animal { + name: String + friends: [Friend] + } + + type Cat implements Animal { + name: String + friends: [Friend] + breed: String + mood: String + } + + type Dog implements Animal { + name: String + breed: String + friends: [Friend] + } + """ + + String query = """ + { + animal { + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + mood + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + breed + } + } + } + """ + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, normalizedOperation) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + name + otherName: name + ... on Bird { + friends { + isBirdOwner + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Cat { + friends { + isCatOwner + pets { + ... on Dog { + name + } + } + } + mood + } + ... on Dog { + breed + } + } +} +''' + } + + def "print custom directives"() { + String sdl = """ + directive @cache(time: Int!) on FIELD + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + + String query = ''' + query { + foo { + name + bar @cache(time:100) { + baz + } + bar @cache(time:200) { + baz + } + + } + } + ''' + + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, normalizedOperation) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + foo { + bar @cache(time: 100) @cache(time: 200) { + baz + } + name + } +} +''' + } + + + def "print one root field"() { + def sdl = """ + type Query { + foo: Foo + } + type Foo { + bar: String + } + """ + def query = ''' + { foo { bar } } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + def rootField = normalizedOperation.getRootFields().get(0) + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, schema.getObjectType("Query"), rootField, "myOperation", OperationDefinition.Operation.QUERY) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''query myOperation { + foo { + bar + } +} +''' + } + + def "print list of root fields"() { + def sdl = """ + type Query { + foo: Foo + } + type Foo { + bar: String + } + """ + def query = ''' + { foo { bar } foo2: foo { bar } } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + def rootFields = normalizedOperation.getRootFields() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, schema.getObjectType("Query"), rootFields, "myOperation", OperationDefinition.Operation.QUERY) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''query myOperation { + foo { + bar + } + foo2: foo { + bar + } +} +''' + } + + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + +} diff --git a/src/test/groovy/graphql/parser/BadParserSituations.java b/src/test/groovy/graphql/parser/BadParserSituations.java new file mode 100644 index 0000000000..9f603ccee9 --- /dev/null +++ b/src/test/groovy/graphql/parser/BadParserSituations.java @@ -0,0 +1,128 @@ +package graphql.parser; + +import com.google.common.base.Strings; +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.GraphQLError; +import graphql.schema.GraphQLSchema; +import graphql.schema.StaticDataFetcher; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; + +import java.io.OutputStream; +import java.io.PrintStream; +import java.time.Duration; +import java.util.List; +import java.util.function.Function; + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; + +/** + * This is not a test - it's a program we can run to show the system reacts to certain bad inputs + * + * You can run this to discover scenarios and see what happens at what levels. + * + * I used this to help discover more on the behavior of ANTLR and its moving parts + */ +public class BadParserSituations { + static Integer STEP = 5000; + static Integer CHECKS_AMOUNT = 15; + + public static void main(String[] args) { + GraphQL graphQL = setupSchema(); + + System.setErr(toDevNull()); + + for (int runNumber = 1; runNumber <= 2; runNumber++) { + String runState = "Limited Tokens"; + // on the second run - have unlimited tokens + if (runNumber > 1) { + ParserOptions unlimitedTokens = ParserOptions.getDefaultOperationParserOptions().transform( + builder -> builder.maxTokens(Integer.MAX_VALUE).maxWhitespaceTokens(Integer.MAX_VALUE)); + ParserOptions.setDefaultOperationParserOptions(unlimitedTokens); + + runState = "Unlimited Tokens"; + } + runScenarios("Whitespace Bad Payloads", runState, graphQL, howMany -> { + String repeatedPayload = Strings.repeat(" ", howMany); + return "query {__typename " + repeatedPayload + " }"; + }); + runScenarios("Comment Bad Payloads", runState, graphQL, howMany -> { + String repeatedPayload = Strings.repeat("# some comment\n", howMany); + String query = repeatedPayload + "\nquery q {__typename }"; + return query; + }); + runScenarios("Grammar Directives Bad Payloads", runState, graphQL, howMany -> { + String repeatedPayload = Strings.repeat("@lol", howMany); + return "query {__typename " + repeatedPayload + " }"; + }); + runScenarios("Grammar Field Bad Payloads", runState, graphQL, howMany -> { + String repeatedPayload = Strings.repeat("f(id:null)", howMany); + return "query {__typename " + repeatedPayload + " }"; + }); + + } + + } + + private static void runScenarios(String scenarioName, String runState, GraphQL graphQL, Function queryGenerator) { + long maxRuntime = 0; + for (int i = 1; i < CHECKS_AMOUNT; i++) { + + int howManyBadPayloads = i * STEP; + String query = queryGenerator.apply(howManyBadPayloads); + + ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).build(); + long startTime = System.nanoTime(); + + ExecutionResult executionResult = graphQL.execute(executionInput); + + Duration duration = Duration.ofNanos(System.nanoTime() - startTime); + + System.out.printf("%s(%s)(%d of %d) - | query length %d | bad payloads %d | duration %dms \n", scenarioName, runState, i, CHECKS_AMOUNT, query.length(), howManyBadPayloads, duration.toMillis()); + printLastError(executionResult.getErrors()); + + if (duration.toMillis() > maxRuntime) { + maxRuntime = duration.toMillis(); + } + } + System.out.printf("%s(%s) - finished | max time was %s ms \n" + + "=======================\n\n", scenarioName, runState, maxRuntime); + } + + private static void printLastError(List errors) { + if (errors.size() > 0) { + GraphQLError lastError = errors.get(errors.size() - 1); + System.out.printf("\terror : %s \n", lastError.getMessage()); + } + + } + + private static PrintStream toDevNull() { + return new PrintStream(new OutputStream() { + public void write(int b) { + //DO NOTHING + } + }); + } + + private static GraphQL setupSchema() { + String schema = "type Query{hello: String}"; + + SchemaParser schemaParser = new SchemaParser(); + TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema); + + RuntimeWiring runtimeWiring = newRuntimeWiring() + .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world"))) + .build(); + + SchemaGenerator schemaGenerator = new SchemaGenerator(); + GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build(); + return graphQL; + } +} diff --git a/src/test/groovy/graphql/parser/ParserExceptionTest.groovy b/src/test/groovy/graphql/parser/ParserExceptionTest.groovy index 51ebe9f32b..459ba957b6 100644 --- a/src/test/groovy/graphql/parser/ParserExceptionTest.groovy +++ b/src/test/groovy/graphql/parser/ParserExceptionTest.groovy @@ -79,10 +79,12 @@ fragment X on SomeType { } ''' when: - new Parser().parseDocument(sdl, "namedSource") + Reader reader = MultiSourceReader.newMultiSourceReader() + .string(sdl, "namedSource") + .build() + new Parser().parseDocument(reader) then: def e = thrown(InvalidSyntaxException) - print e e.location.line == 2 e.location.column == 13 diff --git a/src/test/groovy/graphql/parser/ParserOptionsTest.groovy b/src/test/groovy/graphql/parser/ParserOptionsTest.groovy new file mode 100644 index 0000000000..9d43543f89 --- /dev/null +++ b/src/test/groovy/graphql/parser/ParserOptionsTest.groovy @@ -0,0 +1,111 @@ +package graphql.parser + +import spock.lang.Specification + +class ParserOptionsTest extends Specification { + static defaultOptions = ParserOptions.getDefaultParserOptions() + static defaultOperationOptions = ParserOptions.getDefaultOperationParserOptions() + static defaultSdlOptions = ParserOptions.getDefaultSdlParserOptions() + + static final int ONE_MB = 1024 * 1024 + + void setup() { + ParserOptions.setDefaultParserOptions(defaultOptions) + ParserOptions.setDefaultOperationParserOptions(defaultOperationOptions) + ParserOptions.setDefaultSdlParserOptions(defaultSdlOptions) + } + + void cleanup() { + ParserOptions.setDefaultParserOptions(defaultOptions) + ParserOptions.setDefaultOperationParserOptions(defaultOperationOptions) + ParserOptions.setDefaultSdlParserOptions(defaultSdlOptions) + } + + def "lock in default settings"() { + expect: + defaultOptions.getMaxCharacters() == ONE_MB + defaultOptions.getMaxTokens() == 15_000 + defaultOptions.getMaxWhitespaceTokens() == 200_000 + defaultOptions.isCaptureSourceLocation() + defaultOptions.isCaptureLineComments() + !defaultOptions.isCaptureIgnoredChars() + defaultOptions.isReaderTrackData() + !defaultOptions.isRedactTokenParserErrorMessages() + + defaultOperationOptions.getMaxTokens() == 15_000 + defaultOperationOptions.getMaxWhitespaceTokens() == 200_000 + defaultOperationOptions.isCaptureSourceLocation() + !defaultOperationOptions.isCaptureLineComments() + !defaultOperationOptions.isCaptureIgnoredChars() + defaultOperationOptions.isReaderTrackData() + !defaultOperationOptions.isRedactTokenParserErrorMessages() + + defaultSdlOptions.getMaxCharacters() == Integer.MAX_VALUE + defaultSdlOptions.getMaxTokens() == Integer.MAX_VALUE + defaultSdlOptions.getMaxWhitespaceTokens() == Integer.MAX_VALUE + defaultSdlOptions.isCaptureSourceLocation() + defaultSdlOptions.isCaptureLineComments() + !defaultSdlOptions.isCaptureIgnoredChars() + defaultSdlOptions.isReaderTrackData() + !defaultSdlOptions.isRedactTokenParserErrorMessages() + } + + def "can set in new option JVM wide"() { + def newDefaultOptions = defaultOptions.transform({ + it.captureIgnoredChars(true) + .readerTrackData(false) + .redactTokenParserErrorMessages(true) + }) + def newDefaultOperationOptions = defaultOperationOptions.transform( + { + it.captureIgnoredChars(true) + .captureLineComments(true) + .maxCharacters(1_000_000) + .maxWhitespaceTokens(300_000) + }) + def newDefaultSDlOptions = defaultSdlOptions.transform( + { + it.captureIgnoredChars(true) + .captureLineComments(true) + .maxWhitespaceTokens(300_000) + }) + + when: + ParserOptions.setDefaultParserOptions(newDefaultOptions) + ParserOptions.setDefaultOperationParserOptions(newDefaultOperationOptions) + ParserOptions.setDefaultSdlParserOptions(newDefaultSDlOptions) + + def currentDefaultOptions = ParserOptions.getDefaultParserOptions() + def currentDefaultOperationOptions = ParserOptions.getDefaultOperationParserOptions() + def currentDefaultSdlOptions = ParserOptions.getDefaultSdlParserOptions() + + then: + + currentDefaultOptions.getMaxCharacters() == ONE_MB + currentDefaultOptions.getMaxTokens() == 15_000 + currentDefaultOptions.getMaxWhitespaceTokens() == 200_000 + currentDefaultOptions.isCaptureSourceLocation() + currentDefaultOptions.isCaptureLineComments() + currentDefaultOptions.isCaptureIgnoredChars() + !currentDefaultOptions.isReaderTrackData() + currentDefaultOptions.isRedactTokenParserErrorMessages() + + currentDefaultOperationOptions.getMaxCharacters() == 1_000_000 + currentDefaultOperationOptions.getMaxTokens() == 15_000 + currentDefaultOperationOptions.getMaxWhitespaceTokens() == 300_000 + currentDefaultOperationOptions.isCaptureSourceLocation() + currentDefaultOperationOptions.isCaptureLineComments() + currentDefaultOperationOptions.isCaptureIgnoredChars() + currentDefaultOperationOptions.isReaderTrackData() + !currentDefaultOperationOptions.isRedactTokenParserErrorMessages() + + currentDefaultSdlOptions.getMaxCharacters() == Integer.MAX_VALUE + currentDefaultSdlOptions.getMaxTokens() == Integer.MAX_VALUE + currentDefaultSdlOptions.getMaxWhitespaceTokens() == 300_000 + currentDefaultSdlOptions.isCaptureSourceLocation() + currentDefaultSdlOptions.isCaptureLineComments() + currentDefaultSdlOptions.isCaptureIgnoredChars() + currentDefaultSdlOptions.isReaderTrackData() + !currentDefaultSdlOptions.isRedactTokenParserErrorMessages() + } +} diff --git a/src/test/groovy/graphql/parser/ParserStressTest.groovy b/src/test/groovy/graphql/parser/ParserStressTest.groovy new file mode 100644 index 0000000000..c058d56a2f --- /dev/null +++ b/src/test/groovy/graphql/parser/ParserStressTest.groovy @@ -0,0 +1,211 @@ +package graphql.parser + +import graphql.ExecutionInput +import graphql.TestUtil +import graphql.language.Document +import graphql.parser.exceptions.ParseCancelledException +import graphql.parser.exceptions.ParseCancelledTooDeepException +import graphql.parser.exceptions.ParseCancelledTooManyCharsException +import spock.lang.Specification + +import static graphql.parser.ParserEnvironment.newParserEnvironment + +/** + * Tests related to how the Parser can be stress tested + */ +class ParserStressTest extends Specification { + static defaultOptions = ParserOptions.getDefaultParserOptions() + static defaultOperationOptions = ParserOptions.getDefaultOperationParserOptions() + static defaultSdlOptions = ParserOptions.getDefaultSdlParserOptions() + + void setup() { + ParserOptions.setDefaultParserOptions(defaultOptions) + ParserOptions.setDefaultOperationParserOptions(defaultOperationOptions) + ParserOptions.setDefaultSdlParserOptions(defaultSdlOptions) + } + + void cleanup() { + ParserOptions.setDefaultParserOptions(defaultOptions) + ParserOptions.setDefaultOperationParserOptions(defaultOperationOptions) + ParserOptions.setDefaultSdlParserOptions(defaultSdlOptions) + } + + + def "a billion laughs attack will be prevented by default"() { + def lol = "@lol" * 10000 // two tokens = 20000+ tokens + def text = "query { f $lol }" + when: + Parser.parse(text) + + then: + def e = thrown(ParseCancelledException) + e.getMessage().contains("parsing has been cancelled") + + when: "integration test to prove it cancels by default" + + def sdl = """type Query { f : ID} """ + def graphQL = TestUtil.graphQL(sdl).build() + def er = graphQL.execute(text) + then: + er.errors.size() == 1 + er.errors[0].message.contains("parsing has been cancelled") + } + + def "a large whitespace laughs attack will be prevented by default"() { + def spaces = " " * 300_000 + def text = "query { f $spaces }" + when: + Parser.parse(text) + + then: + def e = thrown(ParseCancelledException) + e.getMessage().contains("parsing has been cancelled") + + when: "integration test to prove it cancels by default" + + def sdl = """type Query { f : ID} """ + def graphQL = TestUtil.graphQL(sdl).build() + def er = graphQL.execute(text) + then: + er.errors.size() == 1 + er.errors[0].message.contains("parsing has been cancelled") + } + + def "they can shoot themselves if they want to with large documents"() { + def lol = "@lol" * 10000 // two tokens = 20000+ tokens + def text = "query { f $lol }" + + def options = ParserOptions.newParserOptions().maxTokens(30000).build() + def parserEnvironment = newParserEnvironment().document(text).parserOptions(options).build() + + when: + def doc = new Parser().parseDocument(parserEnvironment) + + then: + doc != null + } + + def "they can shoot themselves if they want to with large documents with lots of whitespace"() { + def spaces = " " * 300_000 + def text = "query { f $spaces }" + + def options = ParserOptions.newParserOptions().maxWhitespaceTokens(Integer.MAX_VALUE).build() + def parserEnvironment = newParserEnvironment().document(text).parserOptions(options).build() + when: + def doc = new Parser().parseDocument(parserEnvironment) + + then: + doc != null + } + + def "they can set their own listener into action"() { + def queryText = "query { f(arg : 1) }" + + def count = 0 + def tokens = [] + ParsingListener listener = { count++; tokens.add(it.getText()) } + def parserOptions = ParserOptions.newParserOptions().parsingListener(listener).build() + def parserEnvironment = newParserEnvironment().document(queryText).parserOptions(parserOptions).build() + + when: + def doc = new Parser().parseDocument(parserEnvironment) + + then: + doc != null + count == 9 + tokens == ["query", "{", "f", "(", "arg", ":", "1", ")", "}"] + + when: "integration test to prove it be supplied via EI" + + def sdl = """type Query { f(arg : Int) : ID} """ + def graphQL = TestUtil.graphQL(sdl).build() + + + def context = [:] + context.put(ParserOptions.class, parserOptions) + def executionInput = ExecutionInput.newExecutionInput() + .query(queryText) + .graphQLContext(context).build() + + count = 0 + tokens = [] + def er = graphQL.execute(executionInput) + then: + er.errors.size() == 0 + count == 9 + tokens == ["query", "{", "f", "(", "arg", ":", "1", ")", "}"] + + } + + def "deep query stack overflows are prevented by limiting the depth of rules"() { + String text = mkDeepQuery(10000) + + when: + def parserEnvironment = newParserEnvironment().document(text).parserOptions(defaultOperationOptions).build() + Parser.parse(parserEnvironment) + + then: + thrown(ParseCancelledTooDeepException) + } + + def "wide queries are prevented by max token counts"() { + String text = mkWideQuery(10000) + + when: + + def parserEnvironment = newParserEnvironment().document(text).parserOptions(defaultOperationOptions).build() + Parser.parse(parserEnvironment) + + then: + thrown(ParseCancelledException) // too many tokens will catch this wide queries + } + + def "large single token attack parse can be prevented"() { + String text = "q" * 10_000_000 + text = "query " + text + " {f}" + + when: + def parserEnvironment = newParserEnvironment().document(text).parserOptions(defaultOperationOptions).build() + Parser.parse(parserEnvironment) + + then: + thrown(ParseCancelledTooManyCharsException) + } + + def "inside limits single token attack parse will be accepted"() { + String text = "q" * 900_000 + text = "query " + text + " {f}" + + when: + def parserEnvironment = newParserEnvironment().document(text).parserOptions(defaultOperationOptions).build() + def document = Parser.parse(parserEnvironment) + + then: + document != null // its parsed - its invalid of course but parsed + } + + String mkDeepQuery(int howMany) { + def field = 'f(a:"")' + StringBuilder sb = new StringBuilder("query q{") + for (int i = 0; i < howMany; i++) { + sb.append(field) + if (i < howMany - 1) { + sb.append("{") + } + } + for (int i = 0; i < howMany - 1; i++) { + sb.append("}") + } + sb.append("}") + return sb.toString() + } + + String mkWideQuery(int howMany) { + StringBuilder sb = new StringBuilder("query q{f(") + for (int i = 0; i < howMany; i++) { + sb.append('a:1,') + } + sb.append(")}") + return sb.toString() + } +} diff --git a/src/test/groovy/graphql/parser/ParserTest.groovy b/src/test/groovy/graphql/parser/ParserTest.groovy index 8f5763cdc9..94724742d4 100644 --- a/src/test/groovy/graphql/parser/ParserTest.groovy +++ b/src/test/groovy/graphql/parser/ParserTest.groovy @@ -1,9 +1,9 @@ package graphql.parser - import graphql.language.Argument import graphql.language.ArrayValue import graphql.language.AstComparator +import graphql.language.AstPrinter import graphql.language.BooleanValue import graphql.language.Description import graphql.language.Directive @@ -15,6 +15,7 @@ import graphql.language.FloatValue import graphql.language.FragmentDefinition import graphql.language.FragmentSpread import graphql.language.IgnoredChar +import graphql.language.IgnoredChars import graphql.language.InlineFragment import graphql.language.InputObjectTypeDefinition import graphql.language.IntValue @@ -33,18 +34,19 @@ import graphql.language.Selection import graphql.language.SelectionSet import graphql.language.SourceLocation import graphql.language.StringValue +import graphql.language.Type import graphql.language.TypeName import graphql.language.UnionTypeDefinition import graphql.language.VariableDefinition import graphql.language.VariableReference import org.antlr.v4.runtime.CommonTokenStream import org.antlr.v4.runtime.ParserRuleContext +import spock.lang.Issue import spock.lang.Specification import spock.lang.Unroll class ParserTest extends Specification { - def "parse anonymous simple query"() { given: def input = "{ me }" @@ -69,11 +71,7 @@ class ParserTest extends Specification { boolean isEqual(Node node1, Node node2) { - return new AstComparator().isEqual(node1, node2) - } - - boolean isEqual(List node1, List node2) { - return new AstComparator().isEqual(node1, node2) + return AstComparator.isEqual(node1, node2) } def "parse selectionSet for field"() { @@ -137,7 +135,7 @@ class ParserTest extends Specification { given: def input = '{ user(id: 10, name: "homer", admin:true, floatValue: 3.04) }' - def argument = new Argument("id", new IntValue(10)) + def argument = new Argument("id", new IntValue(BigInteger.valueOf(10))) def argument2 = new Argument("name", new StringValue("homer")) def argument3 = new Argument("admin", new BooleanValue(true)) def argument4 = new Argument("floatValue", new FloatValue(3.04)) @@ -173,20 +171,20 @@ class ParserTest extends Specification { and: "expected query" def fragmentSpreadFriends = new FragmentSpread("friendFields") def selectionSetFriends = new SelectionSet([fragmentSpreadFriends]) - def friendsField = new Field("friends", [new Argument("first", new IntValue(10))], selectionSetFriends) + def friendsField = new Field("friends", [new Argument("first", new IntValue(BigInteger.valueOf(10)))], selectionSetFriends) def fragmentSpreadMutalFriends = new FragmentSpread("friendFields") def selectionSetMutalFriends = new SelectionSet([fragmentSpreadMutalFriends]) - def mutalFriendsField = new Field("mutualFriends", [new Argument("first", new IntValue(10))], selectionSetMutalFriends) + def mutalFriendsField = new Field("mutualFriends", [new Argument("first", new IntValue(BigInteger.valueOf(10)))], selectionSetMutalFriends) - def userField = new Field("user", [new Argument("id", new IntValue(4))], new SelectionSet([friendsField, mutalFriendsField])) + def userField = new Field("user", [new Argument("id", new IntValue(BigInteger.valueOf(4)))], new SelectionSet([friendsField, mutalFriendsField])) def queryDefinition = OperationDefinition.newOperationDefinition().name("withFragments").operation(OperationDefinition.Operation.QUERY).selectionSet(new SelectionSet([userField])).build() and: "expected fragment definition" def idField = new Field("id") def nameField = new Field("name") - def profilePicField = new Field("profilePic", [new Argument("size", new IntValue(50))]) + def profilePicField = new Field("profilePic", [new Argument("size", new IntValue(BigInteger.valueOf(50)))]) def selectionSet = SelectionSet.newSelectionSet().selections([idField, nameField, profilePicField]).build() def fragmentDefinition = FragmentDefinition.newFragmentDefinition().name("friendFields").typeCondition(new TypeName("User")).selectionSet(selectionSet).build() @@ -282,7 +280,7 @@ class ParserTest extends Specification { def helloField = new Field("hello") - def variableDefinition = new VariableDefinition("someTest", getOutputType) + def variableDefinition = new VariableDefinition("someTest", getOutputType as Type) def queryDefinition = OperationDefinition.newOperationDefinition().name("myQuery").operation(OperationDefinition.Operation.QUERY) .variableDefinitions([variableDefinition]).selectionSet(new SelectionSet([helloField])).build() @@ -334,7 +332,7 @@ class ParserTest extends Specification { and: "expected query" def objectValue = ObjectValue.newObjectValue() - objectValue.objectField(new ObjectField("intKey", new IntValue(1))) + objectValue.objectField(new ObjectField("intKey", new IntValue(BigInteger.valueOf(1)))) objectValue.objectField(new ObjectField("floatKey", new FloatValue(4.1))) objectValue.objectField(new ObjectField("stringKey", new StringValue("world"))) def subObject = ObjectValue.newObjectValue() @@ -363,13 +361,36 @@ class ParserTest extends Specification { when: def document = new Parser().parseDocument(input) - Field helloField = document.definitions[0].selectionSet.selections[0] + Field helloField = (document.definitions[0] as OperationDefinition).selectionSet.selections[0] as Field then: isEqual(helloField, new Field("hello", [new Argument("arg", new StringValue("hello, world"))])) helloField.comments.collect { c -> c.content } == [" this is some comment, which should be captured"] } + @Issue("https://github.com/graphql-java/graphql-java/issues/2767") + def "parser does not transform comments to AST nodes when ParserOptions.captureLineComments(false)"() { + given: + def input = """ + { # this is some comment, which should be captured + hello(arg: "hello, world" ) # test + } + """ + def parserOptionsWithoutCaptureLineComments = ParserOptions.newParserOptions() + .captureLineComments(false) + .build() + + when: + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(input).parserOptions(parserOptionsWithoutCaptureLineComments).build() + def document = new Parser().parseDocument(parserEnvironment) + Field helloField = (document.definitions[0] as OperationDefinition).selectionSet.selections[0] as Field + + then: + isEqual(helloField, new Field("hello", [new Argument("arg", new StringValue("hello, world"))])) + assert helloField.comments.isEmpty() // No single-line comments on lone fields + assert document.comments.isEmpty() // No single-line comments in entire document + } + @Unroll def "parse floatValue #floatString"() { given: @@ -378,7 +399,7 @@ class ParserTest extends Specification { """ when: def document = new Parser().parseDocument(input) - Field helloField = document.definitions[0].selectionSet.selections[0] + Field helloField = (document.definitions[0] as OperationDefinition).selectionSet.selections[0] as Field then: isEqual(helloField, new Field("hello", [new Argument("arg", new FloatValue(floatValue))])) @@ -554,6 +575,45 @@ class ParserTest extends Specification { selection.name == "foo" } + def "four quotation marks is an illegal string"() { + given: + def input = '''{foo(arg:[""""])}''' + + when: + Parser.parse(input) + + then: + def e = thrown(InvalidSyntaxException) + e.message.contains("Invalid syntax") + } + + def "three quotation marks is an illegal string"() { + given: + def input = '''{foo(arg: ["""])}''' + + when: + Parser.parse(input) + + then: + def e = thrown(InvalidSyntaxException) + e.message.contains("Invalid syntax") + } + + def "escaped triple quote inside block string"() { + given: + def input = '''{foo(arg: """\\"""""")}''' + + when: + Document document = Parser.parse(input) + OperationDefinition operationDefinition = document.definitions[0] as OperationDefinition + Selection selection = operationDefinition.getSelectionSet().getSelections()[0] + Field field = (Field) selection + + then: + field.getArguments().size() == 1 + argValue(field, 0) == '"""' + } + def "triple quoted strings"() { given: def input = '''{ field(triple : """triple @@ -564,7 +624,7 @@ string""", single : "single") }''' then: document.definitions.size() == 1 - OperationDefinition operationDefinition = document.definitions[0] + OperationDefinition operationDefinition = document.definitions[0] as OperationDefinition Selection selection = operationDefinition.getSelectionSet().getSelections()[0] Field field = (Field) selection assert field.getArguments().size() == 2 @@ -590,7 +650,7 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" then: document.definitions.size() == 1 - OperationDefinition operationDefinition = document.definitions[0] + OperationDefinition operationDefinition = document.definitions[0] as OperationDefinition Selection selection = operationDefinition.getSelectionSet().getSelections()[0] Field field = (Field) selection assert field.getArguments().size() == 3 @@ -688,7 +748,11 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" def input = "{,\r me\n\t} ,\n" when: - Document document = new Parser().parseDocument(input) + def captureIgnoredCharsTRUE = ParserOptions.newParserOptions().captureIgnoredChars(true).build() + + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(input).parserOptions(captureIgnoredCharsTRUE).build() + + Document document = new Parser().parseDocument(parserEnvironment) def field = (document.definitions[0] as OperationDefinition).selectionSet.selections[0] then: field.getIgnoredChars().getLeft().size() == 3 @@ -717,7 +781,7 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" """ when: Document document = new Parser().parseDocument(input) - Field getEmployee = (document.definitions[0] as OperationDefinition).selectionSet.selections[0] + Field getEmployee = (document.definitions[0] as OperationDefinition).selectionSet.selections[0] as Field def argumentValue = getEmployee.getArguments().get(0).getValue() then: @@ -775,6 +839,24 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" operationDefinition.getComments()[0].content == " Represents the 😕 emoji." } + + def "the parser can be invoked via parser environment"() { + def input = ''' + # Represents the 😕 emoji. + { + foo + } + ''' + when: + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(input).build() + + Document document = Parser.parse(parserEnvironment) + OperationDefinition operationDefinition = (document.definitions[0] as OperationDefinition) + + then: + operationDefinition.getComments()[0].content == " Represents the 😕 emoji." + } + def "can override antlr to ast"() { def query = ''' @@ -785,9 +867,9 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" when: Parser parser = new Parser() { @Override - protected GraphqlAntlrToLanguage getAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader) { + protected GraphqlAntlrToLanguage getAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader, ParserEnvironment environment) { // this pattern is used in Nadel - its backdoor but needed - return new GraphqlAntlrToLanguage(tokens,multiSourceReader) { + return new GraphqlAntlrToLanguage(tokens, multiSourceReader, environment.parserOptions, environment.i18N, null) { @Override protected void addCommonData(NodeBuilder nodeBuilder, ParserRuleContext parserRuleContext) { super.addCommonData(nodeBuilder, parserRuleContext) @@ -803,5 +885,386 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" document.getAdditionalData().get("key") == "value" document.children[0].getAdditionalData().get("key") == "value" + when: "The new override method is used" + parser = new Parser() { + + @Override + protected GraphqlAntlrToLanguage getAntlrToLanguage(CommonTokenStream tokens, MultiSourceReader multiSourceReader, ParserEnvironment environment) { + return new GraphqlAntlrToLanguage(tokens, multiSourceReader, environment.parserOptions, environment.i18N, null) { + @Override + protected void addCommonData(NodeBuilder nodeBuilder, ParserRuleContext parserRuleContext) { + super.addCommonData(nodeBuilder, parserRuleContext) + nodeBuilder.additionalData("key", "value") + } + } + } + } + + document = parser.parseDocument(query) + + then: + document.getAdditionalData().get("key") == "value" + document.children[0].getAdditionalData().get("key") == "value" + } + + def "parse integer"() { + given: + def input = '''{foo(arg: 11)}''' + + when: + Document document = Parser.parse(input) + OperationDefinition operationDefinition = document.definitions[0] as OperationDefinition + Selection selection = operationDefinition.getSelectionSet().getSelections()[0] + Field field = (Field) selection + + then: + field.getArguments().size() == 1 + (field.getArguments()[0].getValue() as IntValue).getValue().intValueExact() == 11 + } + + @Unroll + def "invalid int #value is an error"() { + given: + def input = "{foo(arg: [$value])}" + + when: + Parser.parse(input) + + then: + def e = thrown(InvalidSyntaxException) + e.message.contains("Invalid syntax") + where: + value | _ + '00' | _ + '01' | _ + '123.' | _ + '123e' | _ + '123E' | _ + } + + @Unroll + def "invalid float #value is an error"() { + given: + def input = "{foo(arg: [$value])}" + + when: + Parser.parse(input) + + then: + def e = thrown(InvalidSyntaxException) + e.message.contains("Invalid syntax") + where: + value | _ + '01.23' | _ + '1.2e3.4' | _ + '1.23.4' | _ + '1.2e3e' | _ + } + + @Unroll + def 'parse ast field definition #valueLiteral'() { + expect: + def fieldDefinition = Parser.parseFieldDefinition(valueLiteral) + AstPrinter.printAstCompact(fieldDefinition) == valueLiteral + + where: + valueLiteral | _ + 'foo: Foo' | _ + 'foo(a:String): Foo' | _ + 'foo(a:String!,b:Int!): Foo' | _ + 'foo(a:String! ="defaultValue",b:Int!): Foo' | _ + 'foo(a:String!,b:Int!): Foo @directive(someValue:String)' | _ + } + + + @Unroll + def 'parse ast literals #valueLiteral'() { + expect: + Parser.parseValue(valueLiteral) in expectedValue + + where: + valueLiteral | expectedValue + '"s"' | StringValue.class + 'true' | BooleanValue.class + '666' | IntValue.class + '666.6' | FloatValue.class + '["A", "B", "C"]' | ArrayValue.class + '{string : "s", integer : 1, boolean : true}' | ObjectValue.class + } + + @Unroll + def 'parse type literals #typeLiteral'() { + expect: + Parser.parseType(typeLiteral).isEqualTo(expectedType) + + where: + typeLiteral | expectedType + "Foo" | new TypeName("Foo") + "String" | new TypeName("String") + "[String]" | new ListType(new TypeName("String")) + "Boolean!" | new NonNullType(new TypeName("Boolean")) + "Boolean !" | new NonNullType(new TypeName("Boolean")) + "Boolean, !" | new NonNullType(new TypeName("Boolean")) + "[Int]!" | new NonNullType(new ListType(new TypeName("Int"))) + "[[String!]]" | new ListType(new ListType(new NonNullType(new TypeName("String")))) + } + + @Unroll + def 'parse invalid type literal #typeLiteral'() { + when: + Parser.parseType(typeLiteral) + + then: + thrown(InvalidSyntaxException) + + where: + typeLiteral | _ + "[String" | _ + "[[Int]" | _ + "![Foo]" | _ + "!Boolean" | _ + "[Int!" | _ + "[String]]" | _ + } + + def "ignored chars can be set on or off"() { + def s = ''' + + type X { + s : String + } + ''' + + def captureIgnoredCharsFALSE = ParserOptions.newParserOptions().captureIgnoredChars(false).build() + def captureIgnoredCharsTRUE = ParserOptions.newParserOptions().captureIgnoredChars(true).build() + + when: "explicitly off" + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(s).parserOptions(captureIgnoredCharsFALSE).build() + def doc = new Parser().parseDocument(parserEnvironment) + def type = doc.getDefinitionsOfType(ObjectTypeDefinition)[0] + then: + type.getIgnoredChars() == IgnoredChars.EMPTY + + when: "implicitly off it uses the system default" + doc = new Parser().parseDocument(s) + type = doc.getDefinitionsOfType(ObjectTypeDefinition)[0] + + then: + type.getIgnoredChars() == IgnoredChars.EMPTY + !ParserOptions.getDefaultParserOptions().isCaptureIgnoredChars() + + when: "explicitly on" + + parserEnvironment = ParserEnvironment.newParserEnvironment().document(s).parserOptions(captureIgnoredCharsTRUE).build() + doc = new Parser().parseDocument(parserEnvironment) + type = doc.getDefinitionsOfType(ObjectTypeDefinition)[0] + + then: + type.getIgnoredChars() != IgnoredChars.EMPTY + !type.getIgnoredChars().getLeft().isEmpty() + !type.getIgnoredChars().getRight().isEmpty() + + + when: "implicitly on if the static is set" + ParserOptions.setDefaultParserOptions(captureIgnoredCharsTRUE) + doc = new Parser().parseDocument(s) + type = doc.getDefinitionsOfType(ObjectTypeDefinition)[0] + + then: + type.getIgnoredChars() != IgnoredChars.EMPTY + !type.getIgnoredChars().getLeft().isEmpty() + !type.getIgnoredChars().getRight().isEmpty() + } + + def "allow braced escaped unicode"() { + given: + def input = ''' + { + foo(arg: "\\u{1F37A}") + } + ''' + + when: + Document document = Parser.parse(input) + OperationDefinition operationDefinition = (document.definitions[0] as OperationDefinition) + def field = operationDefinition.getSelectionSet().getSelections()[0] as Field + def argValue = field.arguments[0].value as StringValue + + then: + argValue.getValue() == "🍺" // contains the beer icon U+1F37A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + def "allow surrogate pairs escaped unicode"() { + given: + def input = ''' + { + foo(arg: "\\ud83c\\udf7a") + } + ''' + + when: + Document document = Parser.parse(input) + OperationDefinition operationDefinition = (document.definitions[0] as OperationDefinition) + def field = operationDefinition.getSelectionSet().getSelections()[0] as Field + def argValue = field.arguments[0].value as StringValue + + then: + argValue.getValue() == "🍺" // contains the beer icon U+1F37 A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + def "invalid surrogate pair - no trailing value"() { + given: + def input = ''' + { + foo(arg: "\\ud83c") + } + ''' + + when: + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\ud83c' at line 3 column 24" + } + + def "invalid surrogate pair - no leading value"() { + given: + def input = ''' + { + foo(arg: "\\uDC00") + } + ''' + + when: + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Trailing surrogate must be preceded with a leading surrogate. Offending token '\\uDC00' at line 3 column 24" + } + + def "source locations are on by default but can be turned off"() { + when: + def options = ParserOptions.getDefaultParserOptions() + + def document = new Parser().parseDocument("{ f }") + then: + options.isCaptureSourceLocation() + document.getSourceLocation() == new SourceLocation(1, 1) + document.getDefinitions()[0].getSourceLocation() == new SourceLocation(1, 1) + + when: + options = ParserOptions.newParserOptions().captureSourceLocation(false).build() + def parserEnvironment = ParserEnvironment.newParserEnvironment().document("{ f }").parserOptions(options).build() + document = new Parser().parseDocument(parserEnvironment) + + then: + !options.isCaptureSourceLocation() + document.getSourceLocation() == SourceLocation.EMPTY + document.getDefinitions()[0].getSourceLocation() == SourceLocation.EMPTY + } + + def "escape characters correctly printed when printing AST"() { + given: + def env = ParserEnvironment.newParserEnvironment() + .document(src) + .parserOptions( + ParserOptions.newParserOptions() + .captureIgnoredChars(true) + .build() + ) + .build() + + when: + // Parse the original Document + def doc = Parser.parse(env) + // Print the AST + def printed = AstPrinter.printAst(doc) + // Re-parse printed AST + def reparsed = Parser.parse(printed) + + then: + noExceptionThrown() // The printed AST was re-parsed without exception + + when: + def reparsedPrinted = AstPrinter.printAst(reparsed) + + then: + reparsedPrinted == printed // Re-parsing and re-printing produces the same result + + where: + src | _ + "\"\\\"\" scalar A" | _ + "\"\f\" scalar A" | _ + "\"\b\" scalar A" | _ + "\"\t\" scalar A" | _ + } + + def "can redact tokens in InvalidSyntax parser error message"() { + given: + def input = '''""" scalar ComputerSaysNo''' + + when: // Default options do not redact error messages + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == '''Invalid syntax with ANTLR error 'token recognition error at: '""" scalar ComputerSaysNo'' at line 1 column 1''' + + when: // Enable redacted parser error messages + def redactParserErrorMessages = ParserOptions.newParserOptions().redactTokenParserErrorMessages(true).build() + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(input).parserOptions(redactParserErrorMessages).build() + new Parser().parseDocument(parserEnvironment) + + then: + InvalidSyntaxException redactedError = thrown(InvalidSyntaxException) + redactedError.message == "Invalid syntax at line 1 column 1" + } + + def "can redact tokens in InvalidSyntaxBail parser error message"() { + given: + def input = ''' + query { + computer says no!!!!!! + ''' + + when: // Default options do not redact error messages + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid syntax with offending token '!' at line 3 column 31" + + when: // Enable redacted parser error messages + def redactParserErrorMessages = ParserOptions.newParserOptions().redactTokenParserErrorMessages(true).build() + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(input).parserOptions(redactParserErrorMessages).build() + new Parser().parseDocument(parserEnvironment) + + then: + InvalidSyntaxException redactedError = thrown(InvalidSyntaxException) + redactedError.message == "Invalid syntax at line 3 column 31" + } + + def "can redact tokens in InvalidSyntaxMoreTokens parser error message"() { + given: + def input = "{profile(id:117) {computer, says, no}}}" + + + when: // Default options do not redact error messages + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token '}' at line 1 column 39" + + when: // Enable redacted parser error messages + def redactParserErrorMessages = ParserOptions.newParserOptions().redactTokenParserErrorMessages(true).build() + def parserEnvironment = ParserEnvironment.newParserEnvironment().document(input).parserOptions(redactParserErrorMessages).build() + new Parser().parseDocument(parserEnvironment) + + then: + InvalidSyntaxException redactedError = thrown(InvalidSyntaxException) + redactedError.message == "Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token at line 1 column 39" } } diff --git a/src/test/groovy/graphql/parser/IDLParserTest.groovy b/src/test/groovy/graphql/parser/SDLParserTest.groovy similarity index 80% rename from src/test/groovy/graphql/parser/IDLParserTest.groovy rename to src/test/groovy/graphql/parser/SDLParserTest.groovy index ebda31b776..928619cf23 100644 --- a/src/test/groovy/graphql/parser/IDLParserTest.groovy +++ b/src/test/groovy/graphql/parser/SDLParserTest.groovy @@ -39,14 +39,14 @@ import spock.lang.Specification import java.util.stream.Collectors -class IDLParserTest extends Specification { +class SDLParserTest extends Specification { - boolean isEqual(Node node1, Node node2) { - return new AstComparator().isEqual(node1, node2) + static boolean isEqual(Node node1, Node node2) { + return AstComparator.isEqual(node1, node2) } - boolean isEqual(List node1, List node2) { - return new AstComparator().isEqual(node1, node2) + static boolean isEqual(List node1, List node2) { + return AstComparator.isEqual(node1, node2) } @@ -135,7 +135,7 @@ fieldName(arg1:SomeType={one:1} @argDirective(a1:\$v1)):[Elm] @fieldDirective(co field.directive(new Directive("fieldDirective", [new Argument("cool", new BooleanValue(true))])) def defaultValue = ObjectValue.newObjectValue() - defaultValue.objectField(new ObjectField("one", new IntValue(1))) + defaultValue.objectField(new ObjectField("one", new IntValue(BigInteger.valueOf(1)))) def arg1 = InputValueDefinition.newInputValueDefinition().name("arg1").type(new TypeName("SomeType")).defaultValue(defaultValue.build()) arg1.directive(new Directive("argDirective", [new Argument("a1", new VariableReference("v1"))])) @@ -177,7 +177,7 @@ TWO @second, def "object schema"() { given: def input = """ -type TypeName implements Impl1 Impl2 @typeDirective(a1:\$v1) { +type TypeName implements Impl1 & Impl2 @typeDirective(a1:\$v1) { one: Number two: Number @second cmd(arg1:[Number]=[1] arg2:String @secondArg(cool:true)): Function @@ -198,7 +198,7 @@ cmd(arg1:[Number]=[1] arg2:String @secondArg(cool:true)): Function def cmdField = FieldDefinition.newFieldDefinition().name("cmd").type(new TypeName("Function")) cmdField.inputValueDefinition(new InputValueDefinition("arg1", new ListType(new TypeName("Number")), - new ArrayValue([new IntValue(1)]))) + new ArrayValue([new IntValue(BigInteger.valueOf(1))]))) def arg2 = InputValueDefinition.newInputValueDefinition().name("arg2").type(new TypeName("String")) arg2.directive(new Directive("secondArg", [new Argument("cool", new BooleanValue(true))])) cmdField.inputValueDefinition(arg2.build()) @@ -241,18 +241,14 @@ union UnionName @d1 @d2 = Type1 | Type2 """ and: "expected schema" - def schema = UnionTypeDefinition.newUnionTypeDefinition().name("UnionName") - schema.directive(new Directive("d1")) - schema.directive(new Directive("d2")) - schema.memberType(new TypeName("Type1")) - schema.memberType(new TypeName("Type2")) + def unionTypeTestDefinition = unionDefinition() when: def document = new Parser().parseDocument(input) then: document.definitions.size() == 1 - isEqual(document.definitions[0], schema.build()) + isEqual(document.definitions[0], unionTypeTestDefinition) } def "input object schema"() { @@ -271,7 +267,7 @@ three: [Number] @three schema.directive(new Directive("d2")) schema.inputValueDefinition(new InputValueDefinition("one", new TypeName("Number"))) - def two = InputValueDefinition.newInputValueDefinition().name("two").type(new TypeName("Number")).defaultValue(new IntValue(1)) + def two = InputValueDefinition.newInputValueDefinition().name("two").type(new TypeName("Number")).defaultValue(new IntValue(BigInteger.valueOf(1))) two.directive(new Directive("two")) schema.inputValueDefinition(two.build()) @@ -336,7 +332,7 @@ withArgs(arg1:[Number]=[1] arg2:String @secondArg(cool:true)): Function def withArgs = FieldDefinition.newFieldDefinition().name("withArgs").type(new TypeName("Function")) withArgs.inputValueDefinition(new InputValueDefinition("arg1", new ListType(new TypeName("Number")), - new ArrayValue([new IntValue(1)]))) + new ArrayValue([new IntValue(BigInteger.valueOf(1))]))) def arg2 = InputValueDefinition.newInputValueDefinition().name("arg2").type(new TypeName("String")) arg2.directive(new Directive("secondArg", [new Argument("cool", new BooleanValue(true))])) @@ -351,7 +347,7 @@ withArgs(arg1:[Number]=[1] arg2:String @secondArg(cool:true)): Function isEqual(document.definitions[0], schema.build()) } - def "directive schema"() { + def "directive definition schema"() { given: def input = """ directive @DirectiveName(arg1:String arg2:Int=23) on FIELD | QUERY @@ -360,9 +356,10 @@ directive @DirectiveName(arg1:String arg2:Int=23) on FIELD | QUERY and: "expected schema" def schema = DirectiveDefinition.newDirectiveDefinition().name("DirectiveName") schema.inputValueDefinition(new InputValueDefinition("arg1", new TypeName("String"))) - schema.inputValueDefinition(new InputValueDefinition("arg2", new TypeName("Int"), new IntValue(23))) + schema.inputValueDefinition(new InputValueDefinition("arg2", new TypeName("Int"), new IntValue(BigInteger.valueOf(23)))) schema.directiveLocation(new DirectiveLocation("FIELD")) schema.directiveLocation(new DirectiveLocation("QUERY")) + schema.repeatable(false) when: def document = new Parser().parseDocument(input) @@ -372,14 +369,34 @@ directive @DirectiveName(arg1:String arg2:Int=23) on FIELD | QUERY isEqual(document.definitions[0], schema.build()) } + def "repeatable directive definition schema"() { + given: + def input = """ +directive @DirectiveName(arg1:String arg2:Int=23) repeatable on FIELD | QUERY +""" - List commentContent(List comments) { - comments.stream().map { c -> c.content }.collect(Collectors.toList()) + and: "expected schema" + def schema = DirectiveDefinition.newDirectiveDefinition().name("DirectiveName") + schema.inputValueDefinition(new InputValueDefinition("arg1", new TypeName("String"))) + schema.inputValueDefinition(new InputValueDefinition("arg2", new TypeName("Int"), new IntValue(BigInteger.valueOf(23)))) + schema.directiveLocation(new DirectiveLocation("FIELD")) + schema.directiveLocation(new DirectiveLocation("QUERY")) + schema.repeatable(true) + + when: + def document = new Parser().parseDocument(input) + + then: + document.definitions.size() == 1 + isEqual(document.definitions[0], schema.build()) } - def "comment support on definitions"() { + static List commentContent(List comments) { + comments.stream().map { c -> c.content }.collect(Collectors.toList()) + } + def "comment support on definitions"() { given: def input = """ @@ -556,12 +573,6 @@ input Gun { bar : String baz : String } - - type Foo2 implements Bar Baz { - bar : String - baz : String - } - """ when: def document = new Parser().parseDocument(input) @@ -572,13 +583,6 @@ input Gun { typeDef.getImplements().size() == 2 (typeDef.getImplements()[0] as TypeName).getName() == 'Bar' (typeDef.getImplements()[1] as TypeName).getName() == 'Baz' - - then: - ObjectTypeDefinition typeDef2 = document.definitions[3] as ObjectTypeDefinition - typeDef2.getName() == 'Foo2' - typeDef2.getImplements().size() == 2 - (typeDef2.getImplements()[0] as TypeName).getName() == 'Bar' - (typeDef2.getImplements()[1] as TypeName).getName() == 'Baz' } def "object type extensions"() { @@ -796,13 +800,15 @@ input Gun { when: def defaultDoc = new Parser().parseDocument(input) - def namedDocNull = new Parser().parseDocument(input, null) - def namedDoc = new Parser().parseDocument(input, sourceName) + Reader reader = MultiSourceReader.newMultiSourceReader() + .string(input, sourceName) + .build(); + + def namedDoc = new Parser().parseDocument(reader) then: defaultDoc.definitions[0].sourceLocation.sourceName == null - namedDocNull.definitions[0].sourceLocation.sourceName == null namedDoc.definitions[0].sourceLocation.sourceName == sourceName } @@ -852,6 +858,215 @@ input Gun { description == "Represents the 😕 emoji." } + def unionDefinition() { + def schema = UnionTypeDefinition.newUnionTypeDefinition().name("UnionName") + schema.directive(new Directive("d1")) + schema.directive(new Directive("d2")) + schema.memberType(new TypeName("Type1")) + schema.memberType(new TypeName("Type2")) + return schema.build() + } + + def "union with two types and leading pipe"() { + given: + def input = """ +union UnionName @d1 @d2 = | Type1 | Type2 +""" + + when: + def document = new Parser().parseDocument(input) + + then: + document.definitions.size() == 1 + isEqual(document.definitions[0], unionDefinition()) + } + + def "union with leading pipe"() { + given: + def input = """ +union UnionName @d1 @d2 = | Type1 +""" + and: "expected schema" + def schema = UnionTypeDefinition.newUnionTypeDefinition().name("UnionName") + schema.directive(new Directive("d1")) + schema.directive(new Directive("d2")) + schema.memberType(new TypeName("Type1")) + + when: + def document = new Parser().parseDocument(input) + + then: + document.definitions.size() == 1 + isEqual(document.definitions[0], schema.build()) + } + + def "union fails with double leading pipe"() { + given: + def input = """ +union UnionName @d1 @d2 = || Type1 | Type2 +""" + + when: + new Parser().parseDocument(input) + + then: + def e = thrown(InvalidSyntaxException) + + e.location.line == 2 + e.location.column == 28 + e.offendingToken == "|" + } + + def "union fails with double inner pipe"() { + given: + def input = """ +union UnionName @d1 @d2 = Type1 || Type2 +""" + + when: + new Parser().parseDocument(input) + + then: + def e = thrown(InvalidSyntaxException) + + e.location.line == 2 + e.location.column == 34 + e.offendingToken == "|" + } + + def "union fails with trailing pipe"() { + given: + def input = """ +union UnionName @d1 @d2 = Type1 | Type2 | +""" + + when: + new Parser().parseDocument(input) + + then: + def e = thrown(InvalidSyntaxException) + + e.location.line == 3 + e.location.column == 1 + e.offendingToken == "" + } + + def "directive with two locations and leading pipe"() { + given: + def input = """ +directive @myDirective on + | OBJECT + | INTERFACE +""" + + when: + def directive = new Parser().parseDocument(input) + + then: + directive.definitions.size() == 1 + def first = directive.definitions[0] + first instanceof DirectiveDefinition + def resultDirective = (DirectiveDefinition) first + resultDirective.name == "myDirective" + resultDirective.inputValueDefinitions.size() == 0 + resultDirective.directiveLocations.size() == 2 + resultDirective.directiveLocations[0].name == "OBJECT" + resultDirective.directiveLocations[1].name == "INTERFACE" + } + + def "directive with leading pipe"() { + given: + def input = """ +directive @myDirective on + | OBJECT +""" + + when: + def directive = new Parser().parseDocument(input) + + then: + directive.definitions.size() == 1 + def first = directive.definitions[0] + first instanceof DirectiveDefinition + def resultDirective = (DirectiveDefinition) first + resultDirective.name == "myDirective" + resultDirective.inputValueDefinitions.size() == 0 + resultDirective.directiveLocations.size() == 1 + resultDirective.directiveLocations[0].name == "OBJECT" + } + + def "directive with leading pipe INLINE"() { + given: + def input = """ +directive @myDirective on | OBJECT +""" + + when: + def directive = new Parser().parseDocument(input) + + then: + directive.definitions.size() == 1 + def first = directive.definitions[0] + first instanceof DirectiveDefinition + def resultDirective = (DirectiveDefinition) first + resultDirective.name == "myDirective" + resultDirective.inputValueDefinitions.size() == 0 + resultDirective.directiveLocations.size() == 1 + resultDirective.directiveLocations[0].name == "OBJECT" + } + + def "directive fails with double leading pipe"() { + given: + def input = """ +directive @myDirective on || OBJECT | INTERFACE +""" + + when: + new Parser().parseDocument(input) + + then: + def e = thrown(InvalidSyntaxException) + + e.location.line == 2 + e.location.column == 28 + e.offendingToken == "|" + } + + def "directive fails with double inner pipe between locations"() { + given: + def input = """ +directive @myDirective on OBJECT || INTERFACE +""" + + when: + new Parser().parseDocument(input) + + then: + def e = thrown(InvalidSyntaxException) + + e.location.line == 2 + e.location.column == 35 + e.offendingToken == "|" + } + + def "directive fails with trailing pipe"() { + given: + def input = """ +directive @myDirective on + OBJECT + | INTERFACE | +""" + + when: + new Parser().parseDocument(input) + + then: + def e = thrown(InvalidSyntaxException) + + e.location.line == 5 + e.location.column == 1 + e.offendingToken == "" + } } diff --git a/src/test/groovy/graphql/parser/SafeTokenReaderTest.groovy b/src/test/groovy/graphql/parser/SafeTokenReaderTest.groovy new file mode 100644 index 0000000000..e96fe93b9c --- /dev/null +++ b/src/test/groovy/graphql/parser/SafeTokenReaderTest.groovy @@ -0,0 +1,18 @@ +package graphql.parser + +import spock.lang.Specification + +class SafeTokenReaderTest extends Specification { + + def "will count how many its read and stop after max"() { + when: + StringReader sr = new StringReader("0123456789") + SafeTokenReader safeReader = new SafeTokenReader(sr, 5, + { Integer maxChars -> throw new RuntimeException("max " + maxChars) }) + safeReader.readLine() + + then: + def rte = thrown(RuntimeException) + rte.message == "max 5" + } +} diff --git a/src/test/groovy/graphql/parser/SafeTokenSourceTest.groovy b/src/test/groovy/graphql/parser/SafeTokenSourceTest.groovy new file mode 100644 index 0000000000..cf8b34658e --- /dev/null +++ b/src/test/groovy/graphql/parser/SafeTokenSourceTest.groovy @@ -0,0 +1,94 @@ +package graphql.parser + +import graphql.parser.antlr.GraphqlLexer +import org.antlr.v4.runtime.CharStreams +import org.antlr.v4.runtime.Token +import spock.lang.Specification + +import java.util.function.BiConsumer + +class SafeTokenSourceTest extends Specification { + + private void consumeAllTokens(SafeTokenSource tokenSource) { + def nextToken = tokenSource.nextToken() + while (nextToken != null && nextToken.getType() != Token.EOF) { + nextToken = tokenSource.nextToken() + } + } + + private GraphqlLexer lexer(doc) { + def charStream = CharStreams.fromString(doc) + def graphqlLexer = new GraphqlLexer(charStream) + graphqlLexer + } + + def "can call back to the consumer when max whitespace tokens are encountered"() { + + def offendingText = " " * 1000 + GraphqlLexer graphqlLexer = lexer(""" + query foo { _typename $offendingText @lol@lol@lol } + """) + when: + Token offendingToken = null + BiConsumer onTooManyTokens = { max, token -> + offendingToken = token + throw new IllegalStateException("stop at $max") + } + def tokenSource = new SafeTokenSource(graphqlLexer, 50, 1000, onTooManyTokens) + + consumeAllTokens(tokenSource) + assert false, "This is not meant to actually consume all tokens" + + then: + def e = thrown(IllegalStateException) + e.message == "stop at 1000" + offendingToken != null + offendingToken.getChannel() == 3 // whitespace + offendingToken.getText() == " " + } + + def "can call back to the consumer when max grammar tokens are encountered"() { + + def offendingText = "@lol" * 1000 + GraphqlLexer graphqlLexer = lexer(""" + query foo { _typename $offendingText } + """) + when: + Token offendingToken = null + BiConsumer onTooManyTokens = { max, token -> + offendingToken = token + throw new IllegalStateException("stop at $max") + } + def tokenSource = new SafeTokenSource(graphqlLexer, 1000, 200_000, onTooManyTokens) + + consumeAllTokens(tokenSource) + assert false, "This is not meant to actually consume all tokens" + + then: + def e = thrown(IllegalStateException) + e.message == "stop at 1000" + offendingToken != null + offendingToken.getChannel() == 0 // grammar + } + + def "can safely get to the end of text if its ok"() { + + GraphqlLexer graphqlLexer = lexer(""" + query foo { _typename @lol@lol@lol } + """) + when: + Token offendingToken = null + BiConsumer onTooManyTokens = { max, token -> + offendingToken = token + throw new IllegalStateException("stop at $max") + } + def tokenSource = new SafeTokenSource(graphqlLexer, 1000, 200_000, onTooManyTokens) + + consumeAllTokens(tokenSource) + + then: + noExceptionThrown() + offendingToken == null + } + +} diff --git a/src/test/groovy/graphql/parser/StringValueParsingTest.groovy b/src/test/groovy/graphql/parser/StringValueParsingTest.groovy index 8044d1cec7..2142c84175 100644 --- a/src/test/groovy/graphql/parser/StringValueParsingTest.groovy +++ b/src/test/groovy/graphql/parser/StringValueParsingTest.groovy @@ -1,5 +1,7 @@ package graphql.parser +import graphql.i18n.I18n +import graphql.language.SourceLocation import spock.lang.Specification import static java.util.Arrays.asList @@ -7,12 +9,15 @@ import static java.util.stream.Collectors.joining class StringValueParsingTest extends Specification { + def i18n = I18n.i18n(I18n.BundleType.Parsing, Locale.ENGLISH) + def sourceLocation = SourceLocation.EMPTY + def "parsing quoted string should work"() { given: def input = '''"simple quoted"''' when: - String parsed = StringValueParsing.parseSingleQuotedString(input) + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) then: parsed == "simple quoted" @@ -23,7 +28,7 @@ class StringValueParsingTest extends Specification { def input = '''"{\"name\": \"graphql\", \"year\": 2015}"''' when: - String parsed = StringValueParsing.parseSingleQuotedString(input) + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) then: parsed == '''{\"name\": \"graphql\", \"year\": 2015}''' @@ -34,36 +39,34 @@ class StringValueParsingTest extends Specification { def input = '''"""''' when: - String parsed = StringValueParsing.parseSingleQuotedString(input) + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) then: parsed == '''"''' } - def "parsing emoji should work"() { - // needs surrogate pairs for this emoji + def "parsing beer stein as surrogate pair should work"() { given: def input = '''"\\ud83c\\udf7a"''' when: - String parsed = StringValueParsing.parseSingleQuotedString(input) + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) then: parsed == '''🍺''' // contains the beer icon U+1F37A : http://www.charbase.com/1f37a-unicode-beer-mug } - def "parsing simple unicode should work"() { + def "parsing simple unicode should work - Basic Multilingual Plane (BMP)"() { given: - def input = '''"\\u56fe"''' + def input = '''"\\u5564\\u9152"''' when: - String parsed = StringValueParsing.parseSingleQuotedString(input) + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) then: - parsed == '''图''' + parsed == '''啤酒''' } - def "parsing triple quoted string should work"() { given: def input = '''"""triple quoted"""''' diff --git a/src/test/groovy/graphql/parser/StringValueParsingUnicodeTest.groovy b/src/test/groovy/graphql/parser/StringValueParsingUnicodeTest.groovy new file mode 100644 index 0000000000..192f3b0097 --- /dev/null +++ b/src/test/groovy/graphql/parser/StringValueParsingUnicodeTest.groovy @@ -0,0 +1,260 @@ +package graphql.parser + +import graphql.i18n.I18n +import graphql.language.SourceLocation +import spock.lang.Specification + +class StringValueParsingUnicodeTest extends Specification { + + def i18n = I18n.i18n(I18n.BundleType.Parsing, Locale.ENGLISH) + def sourceLocation = SourceLocation.EMPTY + + /** + * Implements RFC to support full Unicode https://github.com/graphql/graphql-spec/pull/849 + * + * Key changes + * + SourceCharacters now include all Unicode scalar values. Previously only included up to U+FFFF (Basic Multilingual Plane). + * + SourceCharacters now include control characters. Previously certain control characters were excluded. + * + Surrogate pair validation added. + * + * Note that "unescaped" Unicode characters such as 🍺 are handled by ANTLR grammar. + * "Escaped" Unicode characters such as \\u{1F37A} are handled by StringValueParsing. + */ + + // With this RFC, escaped code points outside the Basic Multilingual Plane (e.g. emojis) can be parsed. + def "parsing beer stein as escaped unicode"() { + given: + def input = '''"\\u{1F37A} hello"''' + + when: + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + parsed == '''🍺 hello''' // contains the beer icon U+1F37A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + def "parsing beer stein without escaping"() { + given: + def input = '''"🍺 hello"''' + + when: + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + parsed == '''🍺 hello''' // contains the beer icon U+1F37A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + /** + * From the RFC: + * For legacy reasons, a *supplementary character* may be escaped by two + * fixed-width unicode escape sequences forming a *surrogate pair*. For example + * the input `"\\uD83D\\uDCA9"` is a valid {StringValue} which represents the same + * Unicode text as `"\\u{1F4A9}"`. While this legacy form is allowed, it should be + * avoided as a variable-width unicode escape sequence is a clearer way to encode + * such code points. + * + * Valid surrogate pair combinations: + * + If {leadingValue} is >= 0xD800 and <= 0xDBFF (a *Leading Surrogate*): + * + Assert {trailingValue} is >= 0xDC00 and <= 0xDFFF (a *Trailing Surrogate*). + */ + def "invalid surrogate pair - no trailing value"() { + given: + def input = '''"\\uD83D hello"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\uD83D' at line -1 column -1" + } + + def "invalid surrogate pair - end of string"() { + given: + def input = '''"\\uD83D"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\uD83D' at line -1 column -1" + } + + def "invalid surrogate pair - invalid trailing value"() { + given: + def input = '''"\\uD83D\\uDBFF"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\uDBFF' at line -1 column -1" + } + + def "invalid surrogate pair - no leading value"() { + given: + def input = '''"\\uDC00"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Trailing surrogate must be preceded with a leading surrogate. Offending token '\\uDC00' at line -1 column -1" + } + + def "invalid surrogate pair - invalid leading value"() { + given: + def input = '''"\\uD700\\uDC00"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Trailing surrogate must be preceded with a leading surrogate. Offending token '\\uDC00' at line -1 column -1" + } + + def "valid surrogate pair - leading code with braces"() { + given: + def input = '''"hello \\u{d83c}\\udf7a"''' + + when: + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + parsed == '''hello 🍺''' // contains the beer icon U+1F37 A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + def "valid surrogate pair - trailing code with braces"() { + given: + def input = '''"hello \\ud83c\\u{df7a}"''' + + when: + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + parsed == '''hello 🍺''' // contains the beer icon U+1F37A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + def "valid surrogate pair - leading and trailing code with braces"() { + given: + def input = '''"hello \\u{d83c}\\u{df7a}"''' + + when: + String parsed = StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + parsed == '''hello 🍺''' // contains the beer icon U+1F37A : http://www.charbase.com/1f37a-unicode-beer-mug + } + + def "invalid surrogate pair - leading code with only \\ at end of string"() { + given: + def input = '''"hello \\u{d83c}\\"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\u{d83c}' at line -1 column -1" + } + + def "invalid surrogate pair - leading code with only \\u at end of string"() { + given: + def input = '''"hello \\u{d83c}\\u"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Incorrectly formatted escape sequence. Offending token '\\u\"' at line -1 column -1" + } + + def "invalid surrogate pair - trailing code without closing brace"() { + given: + def input = '''"hello \\u{d83c}\\u{df7a"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Incorrectly formatted escape sequence. Offending token '\\u{df7a' at line -1 column -1" + } + + def "invalid surrogate pair - invalid trailing code without unicode escape 1"() { + given: + def input = '''"hello \\u{d83c}{df7a}"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\u{d83c}' at line -1 column -1" + } + + def "invalid surrogate pair - invalid trailing code without unicode escape 2"() { + given: + def input = '''"hello \\u{d83c}df7a"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\u{d83c}' at line -1 column -1" + } + + def "invalid surrogate pair - invalid leading code"() { + given: + def input = '''"hello d83c\\u{df7a}"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Trailing surrogate must be preceded with a leading surrogate. Offending token '\\u{df7a}' at line -1 column -1" + } + + def "invalid surrogate pair - invalid leading value with braces"() { + given: + def input = '''"\\u{5B57}\\uDC00"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Trailing surrogate must be preceded with a leading surrogate. Offending token '\\uDC00' at line -1 column -1" + } + + def "invalid surrogate pair - invalid trailing value with braces"() { + given: + def input = '''"\\uD83D\\u{DBFF}"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Leading surrogate must be followed by a trailing surrogate. Offending token '\\u{DBFF}' at line -1 column -1" + } + + def "invalid unicode code point - value is too high"() { + given: + def input = '''"\\u{fffffff}"''' + + when: + StringValueParsing.parseSingleQuotedString(i18n, input,sourceLocation) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid unicode encountered. Not a valid code point. Offending token '\\u{fffffff}' at line -1 column -1" + } +} diff --git a/src/test/groovy/graphql/relay/DefaultConnectionTest.groovy b/src/test/groovy/graphql/relay/DefaultConnectionTest.groovy new file mode 100644 index 0000000000..592b18c968 --- /dev/null +++ b/src/test/groovy/graphql/relay/DefaultConnectionTest.groovy @@ -0,0 +1,27 @@ +package graphql.relay + +import com.google.common.collect.ImmutableList +import spock.lang.Specification + +class DefaultConnectionTest extends Specification { + + def "test equality and hashcode"() { + def edges1 = ImmutableList.of(new DefaultEdge("a", new DefaultConnectionCursor("a"))) + def edges2 = ImmutableList.of(new DefaultEdge("b", new DefaultConnectionCursor("b"))) + + def pageInfo1 = new DefaultPageInfo(new DefaultConnectionCursor("c"), new DefaultConnectionCursor("c"), true, false) + def pageInfo2 = new DefaultPageInfo(new DefaultConnectionCursor("d"), new DefaultConnectionCursor("d"), false, true) + + expect: + + assert new DefaultConnection(edges1, pageInfo1).equals(new DefaultConnection(edges1, pageInfo1)) + assert !new DefaultConnection(edges1, pageInfo2).equals(new DefaultConnection(edges1, pageInfo1)) + assert !new DefaultConnection(edges1, pageInfo1).equals(new DefaultConnection(edges2, pageInfo1)) + assert !new DefaultConnection(edges1, pageInfo1).equals(new DefaultConnection(edges1, pageInfo2)) + + assert new DefaultConnection(edges1, pageInfo1).hashCode() == new DefaultConnection(edges1, pageInfo1).hashCode() + assert new DefaultConnection(edges1, pageInfo2).hashCode() != new DefaultConnection(edges1, pageInfo1).hashCode() + assert new DefaultConnection(edges1, pageInfo1).hashCode() != new DefaultConnection(edges2, pageInfo1).hashCode() + assert new DefaultConnection(edges1, pageInfo1).hashCode() != new DefaultConnection(edges1, pageInfo2).hashCode() + } +} diff --git a/src/test/groovy/graphql/relay/DefaultEdgeTest.groovy b/src/test/groovy/graphql/relay/DefaultEdgeTest.groovy new file mode 100644 index 0000000000..3763a0c7ab --- /dev/null +++ b/src/test/groovy/graphql/relay/DefaultEdgeTest.groovy @@ -0,0 +1,25 @@ +package graphql.relay + +import spock.lang.Specification + +class DefaultEdgeTest extends Specification { + + def "test equality and hashcode"() { + expect: + + assert new DefaultEdge(leftNode, new DefaultConnectionCursor(leftConnectionCursor)).equals( + new DefaultEdge(rightNode, new DefaultConnectionCursor(rightConnectionCursor))) == isEqual + + assert (new DefaultEdge(leftNode, new DefaultConnectionCursor(leftConnectionCursor)).hashCode() == + new DefaultEdge(rightNode, new DefaultConnectionCursor(rightConnectionCursor)).hashCode()) == isEqual + + where: + + leftNode | leftConnectionCursor | rightNode | rightConnectionCursor || isEqual + "a" | "b" | "a" | "b" || true + "x" | "b" | "a" | "b" || false + "a" | "x" | "a" | "b" || false + "a" | "b" | "x" | "b" || false + "a" | "b" | "a" | "x" || false + } +} diff --git a/src/test/groovy/graphql/relay/DefaultPageInfoTest.groovy b/src/test/groovy/graphql/relay/DefaultPageInfoTest.groovy new file mode 100644 index 0000000000..2e370467cb --- /dev/null +++ b/src/test/groovy/graphql/relay/DefaultPageInfoTest.groovy @@ -0,0 +1,29 @@ +package graphql.relay + +import spock.lang.Specification + +class DefaultPageInfoTest extends Specification { + + def "test equality and hashcode"() { + expect: + + assert new DefaultPageInfo(new DefaultConnectionCursor(ls), new DefaultConnectionCursor(le), lp, ln).equals( + new DefaultPageInfo(new DefaultConnectionCursor(rs), new DefaultConnectionCursor(re), rp, rn)) == isEqual + + assert (new DefaultPageInfo(new DefaultConnectionCursor(ls), new DefaultConnectionCursor(le), lp, ln).hashCode() == + new DefaultPageInfo(new DefaultConnectionCursor(rs), new DefaultConnectionCursor(re), rp, rn).hashCode()) == isEqual + + where: + + ls | le | lp | ln | rs | re | rp | rn || isEqual + "a" | "b" | true | true | "a" | "b" | true | true || true + "x" | "b" | true | true | "a" | "b" | true | true || false + "a" | "x" | true | true | "a" | "b" | true | true || false + "a" | "b" | false | true | "a" | "b" | true | true || false + "a" | "b" | true | false | "a" | "b" | true | true || false + "a" | "b" | true | true | "x" | "b" | true | true || false + "a" | "b" | true | true | "a" | "x" | true | true || false + "a" | "b" | true | true | "a" | "b" | false | true || false + "a" | "b" | true | true | "a" | "b" | true | false || false + } +} diff --git a/src/test/groovy/graphql/schema/CoercingTest.groovy b/src/test/groovy/graphql/schema/CoercingTest.groovy index a890c7d54e..9504243c4d 100644 --- a/src/test/groovy/graphql/schema/CoercingTest.groovy +++ b/src/test/groovy/graphql/schema/CoercingTest.groovy @@ -1,7 +1,9 @@ package graphql.schema import graphql.ExecutionInput +import graphql.GraphQLContext import graphql.TestUtil +import graphql.analysis.MaxQueryDepthInstrumentation import graphql.language.ArrayValue import graphql.language.BooleanValue import graphql.language.FloatValue @@ -14,9 +16,13 @@ import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.TypeRuntimeWiring import spock.lang.Specification +import java.time.ZonedDateTime + +import static graphql.schema.GraphQLScalarType.newScalar + class CoercingTest extends Specification { - GraphQLScalarType mapLikeScalar = new GraphQLScalarType("MapLike", "MapLike", new Coercing() { + GraphQLScalarType mapLikeScalar = newScalar().name("MapLike").description("MapLike").coercing(new Coercing() { @Override Object serialize(Object dataFetcherResult) throws CoercingSerializeException { return dataFetcherResult @@ -68,7 +74,7 @@ class CoercingTest extends Specification { throw new CoercingParseLiteralException() } }) - + .build() def "end to end test of coercing with variables references"() { def spec = ''' @@ -114,7 +120,7 @@ class CoercingTest extends Specification { er.data == [field: [s: "strVar", i: 666]] } - GraphQLScalarType customScalar = new GraphQLScalarType("CustomScalar", "CustomScalar", new Coercing() { + GraphQLScalarType customScalar = newScalar().name("CustomScalar").description("CustomScalar").coercing(new Coercing() { @Override Object serialize(Object input) throws CoercingSerializeException { if ("bang" == String.valueOf(input)) { @@ -143,6 +149,7 @@ class CoercingTest extends Specification { return new StringValue(String.valueOf("input")) } }) + .build() def customScalarSDL = ''' scalar CustomScalar @@ -190,7 +197,7 @@ class CoercingTest extends Specification { def er = customScalarSchema.execute(ei) then: er.errors.size() == 1 - er.errors[0].message.contains("parseLiteral message") + er.errors[0].message == "Validation error (WrongType@[field]) : argument 'arg2' with value 'StringValue{value='bang'}' is not a valid 'CustomScalar' - parseLiteral message" er.errors[0].extensions == [parseLiteral: true] } @@ -207,7 +214,87 @@ class CoercingTest extends Specification { def er = customScalarSchema.execute(ei) then: er.errors.size() == 1 - er.errors[0].message.contains("serialize message") + er.errors[0].message.contains("Can't serialize value (/field) : serialize message") er.errors[0].extensions == [serialize: true] } + + static def parseDateTimeValue(Object input) { + try { + if (input instanceof StringValue) { + return ZonedDateTime.parse(((StringValue) input).getValue()) + } else if (input instanceof String) { + return ZonedDateTime.parse((String) input) + } else throw new IllegalArgumentException("Unexpected input type: ${input.getClass()}") + } catch (Exception e) { + throw new CoercingParseValueException("Failed to parse input value $input as ZonedDateTime", e) + } + } + + GraphQLScalarType zonedDateTimeLikeScalar = newScalar().name("ZonedDateTimeLike").description("ZonedDateTimeLike").coercing(new Coercing() { + @Override + Object serialize(Object dataFetcherResult) throws CoercingSerializeException { + return dataFetcherResult + } + + @Override + Object parseValue(Object input) throws CoercingParseValueException { + return parseDateTimeValue(input) + } + + @Override + Object parseLiteral(Object input) throws CoercingParseLiteralException { + return input + } + + @Override + StringValue valueToLiteral(Object input, GraphQLContext graphQLContext, Locale locale) { + return new StringValue(input.toString()) + } + }) + .build() + + def "custom scalars are only coerced once - end to end test with execution and instrumentation"() { + def spec = ''' + scalar ZonedDateTimeLike + + type Query { + field(argument : ZonedDateTimeLike) : ZonedDateTimeLike + } + ''' + DataFetcher df = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + def argument = environment.getArgument("argument") + return argument + } + } + + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Query") + .dataFetcher("field", df)) + .scalar(zonedDateTimeLikeScalar) + .build() + + def executionInput = ExecutionInput.newExecutionInput() + .variables([zonedDateTime: "2022-05-16T19:52:37Z"]) + .query(''' + query myZonedDateTimeQuery($zonedDateTime : ZonedDateTimeLike) { + field(argument : $zonedDateTime) + }''') + .build() + + MaxQueryDepthInstrumentation maximumQueryDepthInstrumentation = new MaxQueryDepthInstrumentation(7) + + def graphQL = TestUtil.graphQL(spec, runtimeWiring).instrumentation(maximumQueryDepthInstrumentation).build() + + when: + def er = graphQL.execute(executionInput) + + then: + // If variables were coerced twice, would expect an IllegalArgumentException to be thrown, + // as the ZonedDateTime custom scalar parser can only parse strings, not instances of ZonedDateTime + notThrown(Exception) + er.errors.isEmpty() + er.data == [field: ZonedDateTime.parse("2022-05-16T19:52:37Z")] + } } diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 5050ba0ef1..3fb58ed1e7 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -32,7 +32,17 @@ class DataFetcherFactoriesTest extends Specification { def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) when: - def value = fetcherFactory.get(null).get(null) + def value = fetcherFactory.get((GraphQLFieldDefinition)null).get(null) + + then: + value == "goodbye" + } + + def "will use given df via field"() { + def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) + + when: + def value = fetcherFactory.get((GraphQLFieldDefinition) null).get(null) then: value == "goodbye" diff --git a/src/test/groovy/graphql/schema/DataFetcherSelectionTest.groovy b/src/test/groovy/graphql/schema/DataFetcherSelectionTest.groovy deleted file mode 100644 index 4f7f93798e..0000000000 --- a/src/test/groovy/graphql/schema/DataFetcherSelectionTest.groovy +++ /dev/null @@ -1,262 +0,0 @@ -package graphql.schema - -import graphql.ExecutionInput -import graphql.GraphQL -import graphql.StarWarsData -import graphql.TestUtil -import graphql.execution.FieldCollector -import graphql.language.AstPrinter -import graphql.language.Field -import graphql.schema.idl.MapEnumValuesProvider -import graphql.schema.idl.RuntimeWiring -import spock.lang.Specification - -import java.util.stream.Collectors - -import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring - -/** - * #377 - this test proves that a data fetcher has enough information to allow sub request - * proxying or fine grained control of the fields in an object that should be returned - */ -class DataFetcherSelectionTest extends Specification { - - class SelectionCapturingDataFetcher implements DataFetcher { - final DataFetcher delegate - final FieldCollector fieldCollector - final Map captureMap - - final List>> captureFieldArgs - - SelectionCapturingDataFetcher(DataFetcher delegate, Map captureMap, List>> captureFieldArgs) { - this.delegate = delegate - this.fieldCollector = new FieldCollector() - this.captureMap = captureMap - this.captureFieldArgs = captureFieldArgs; - } - - @Override - Object get(DataFetchingEnvironment environment) { - - // - // we capture the inner field selections of the current field that is being fetched - // this would allow proxying or really fine grained controlled object retrieval - // if one was so included - // - def selectionSet = environment.getSelectionSet().get() - def arguments = environment.getSelectionSet().getArguments() - captureFieldArgs.add(arguments) - - if (!selectionSet.isEmpty()) { - for (String fieldName : selectionSet.keySet()) { - String ast = captureFields(selectionSet.getSubField(fieldName).getFields()) - captureMap.put(fieldName, ast) - } - } - - return delegate.get(environment) - } - - String captureFields(List fields) { - def collect = fields.stream().map({ f -> AstPrinter.printAst(f) }).collect(Collectors.joining(";")) - return collect - } - } - - // side effect captured here - Map captureMap = new HashMap<>() - List>> captureFieldArgs = [] - - SelectionCapturingDataFetcher captureSelection(DataFetcher delegate) { - return new SelectionCapturingDataFetcher(delegate, captureMap, captureFieldArgs) - } - - def episodeValuesProvider = new MapEnumValuesProvider([NEWHOPE: 4, EMPIRE: 5, JEDI: 6]) - def episodeWiring = newTypeWiring("Episode").enumValues(episodeValuesProvider).build() - - RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring() - .type(newTypeWiring("QueryType") - .dataFetchers( - [ - "hero" : captureSelection(new StaticDataFetcher(StarWarsData.getArtoo())), - "human": captureSelection(StarWarsData.getHumanDataFetcher()), - "droid": captureSelection(StarWarsData.getDroidDataFetcher()) - ]) - ) - .type(newTypeWiring("Human") - .dataFetcher("friends", captureSelection(StarWarsData.getFriendsDataFetcher())) - ) - .type(newTypeWiring("Droid") - .dataFetcher("friends", captureSelection(StarWarsData.getFriendsDataFetcher())) - ) - - .type(newTypeWiring("Character") - .typeResolver(StarWarsData.getCharacterTypeResolver()) - ) - .type(episodeWiring) - .build() - - def executableStarWarsSchema = TestUtil.schemaFile("starWarsSchemaWithArguments.graphqls", wiring) - - void setup() { - captureMap.clear() - captureFieldArgs.clear() - - } - - def "field selection can be captured via data environment"() { - - def query = """ - query CAPTURED_VIA_DF { - - luke: human(id: "1000") { - ...HumanFragment # this is a named fragment - homePlanet - } - - leia: human(id: "1003") { - ... on Character { # this is an inline fragment - id - friends { - name - } - } - appearsIn - } - } - fragment HumanFragment on Human { - name - ...FriendsAndFriendsFragment - - } - - fragment FriendsAndFriendsFragment on Character { - friends { - name - friends { - name - } - } - } - - """ - - - expect: - when: - GraphQL.newGraphQL(executableStarWarsSchema).build().execute(query).data - - then: - - // captures each stage as it descends - captureMap == [ - "appearsIn" : "appearsIn", - "friends/friends/name": "name", - "friends/friends" : "friends {\n" + - " name\n" + - "}", - "friends/name" : "name", - "friends" : "friends {\n" + - " name\n" + - "}", - "homePlanet" : "homePlanet", - "id" : "id", - "name" : "name" - - ] - } - - def "#595 - field selection works for List types"() { - - def query = """ - query CAPTURED_VIA_DF { - luke: human(id: "1000") { - name - friends { - name - } - homePlanet - } - } - """ - - - expect: - when: - GraphQL.newGraphQL(executableStarWarsSchema).build().execute(query).data - - then: - - captureMap == [ - "name" : "name", - "friends" : "friends {\n" + - " name\n" + - "}", - "friends/name": "name", - "homePlanet" : "homePlanet", - ] - } - - def "#832 - field selection captures field arguments"() { - - def query = ''' - query CAPTURED_VIA_DF($localeVar : String) { - luke: human(id: "1000") { - name - homePlanet(coordsFormat: "republic") - } - - leia: human(id: "1003") { - ... on Human { # this is an inline fragment - name - homePlanet(includeMoons : true, locale: $localeVar) - } - } - - vader: human(id: "1003") { - ...CharacterFragment # this is an named fragment - } - } - - fragment CharacterFragment on Character { - name - friends(separationCount : 4) { - id - } - } - - ''' - - - expect: - when: - ExecutionInput input = ExecutionInput.newExecutionInput().query(query).variables([localeVar: "AU"]).build() - def executionResult = GraphQL.newGraphQL(executableStarWarsSchema).build().execute(input) - - then: - - executionResult.errors.isEmpty() - - captureFieldArgs == [ - [ - name : [:], - homePlanet: [ - includeMoons: false, - coordsFormat: "republic" - ] - ], - - [ - name : [:], - homePlanet: [ - includeMoons: true, - locale : "AU" - ] - ], - [name: [:], friends: [separationCount: 4], "friends/id": [:]], - [id: [:]] - ] - - } - -} diff --git a/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy b/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy index f1f25e4e0c..561b881bd2 100644 --- a/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy @@ -1,19 +1,25 @@ package graphql.schema -import graphql.cachecontrol.CacheControl +import graphql.GraphQLContext +import graphql.execution.CoercedVariables import graphql.execution.ExecutionId import graphql.execution.ExecutionStepInfo +import graphql.execution.instrumentation.dataloader.DataLoaderDispatchingContextKeys +import graphql.language.Argument +import graphql.language.Field import graphql.language.FragmentDefinition import graphql.language.OperationDefinition +import graphql.language.StringValue import graphql.language.TypeName import org.dataloader.BatchLoader -import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification import java.util.concurrent.CompletableFuture import static graphql.StarWarsSchema.starWarsSchema +import static graphql.TestUtil.mergedField import static graphql.TestUtil.toDocument import static graphql.execution.ExecutionContextBuilder.newExecutionContextBuilder import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment @@ -22,29 +28,26 @@ class DataFetchingEnvironmentImplTest extends Specification { def frag = FragmentDefinition.newFragmentDefinition().name("frag").typeCondition(new TypeName("t")).build() - def dataLoader = DataLoader.newDataLoader({ keys -> CompletableFuture.completedFuture(keys) } as BatchLoader) + def dataLoader = DataLoaderFactory.newDataLoader({ keys -> CompletableFuture.completedFuture(keys) } as BatchLoader) def operationDefinition = new OperationDefinition("q") def document = toDocument("{ f }") def executionId = ExecutionId.from("123") def fragmentByName = [frag: frag] def variables = [var: "able"] def dataLoaderRegistry = new DataLoaderRegistry().register("dataLoader", dataLoader) - def cacheControl = CacheControl.newCacheControl() def executionContext = newExecutionContextBuilder() .root("root") - .context("context") + .graphQLContext(GraphQLContext.of(["key": "context"])) .executionId(executionId) .operationDefinition(operationDefinition) .document(document) - .variables(variables) + .coercedVariables(CoercedVariables.of(variables)) .graphQLSchema(starWarsSchema) .fragmentsByName(fragmentByName) .dataLoaderRegistry(dataLoaderRegistry) - .cacheControl(cacheControl) .build() - def "immutable arguments"() { def dataFetchingEnvironment = newDataFetchingEnvironment(executionContext).arguments([arg: "argVal"]) .build() @@ -60,24 +63,29 @@ class DataFetchingEnvironmentImplTest extends Specification { } def "copying works as expected from execution context"() { - when: def dfe = newDataFetchingEnvironment(executionContext) .build() + dfe.getGraphQlContext().put(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, chainedDataLoaderEnabled) then: dfe.getRoot() == "root" - dfe.getContext() == "context" + dfe.getGraphQlContext().get("key") == "context" dfe.getGraphQLSchema() == starWarsSchema dfe.getDocument() == document dfe.getVariables() == variables dfe.getOperationDefinition() == operationDefinition dfe.getExecutionId() == executionId - dfe.getDataLoader("dataLoader") == dataLoader + dfe.getDataLoaderRegistry() == executionContext.getDataLoaderRegistry() + dfe.getDataLoader("dataLoader") == executionContext.getDataLoaderRegistry().getDataLoader("dataLoader") || + dfe.getDataLoader("dataLoader").delegate == executionContext.getDataLoaderRegistry().getDataLoader("dataLoader") + where: + chainedDataLoaderEnabled << [true, false] } def "create environment from existing one will copy everything to new instance"() { def dfe = newDataFetchingEnvironment() - .context("Test Context") + .context("Test Context") // Retain deprecated builder for coverage + .graphQLContext(GraphQLContext.of(["key": "context", (DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING): chainedDataLoaderEnabled])) .source("Test Source") .root("Test Root") .fieldDefinition(Mock(GraphQLFieldDefinition)) @@ -92,7 +100,8 @@ class DataFetchingEnvironmentImplTest extends Specification { .document(document) .variables(variables) .dataLoaderRegistry(dataLoaderRegistry) - .cacheControl(cacheControl) + .locale(Locale.CANADA) + .localContext("localContext") .build() when: @@ -100,7 +109,8 @@ class DataFetchingEnvironmentImplTest extends Specification { then: dfe != dfeCopy - dfe.getContext() == dfeCopy.getContext() + dfe.getContext() == dfeCopy.getContext() // Retain deprecated method for coverage + dfe.getGraphQlContext() == dfeCopy.getGraphQlContext() dfe.getSource() == dfeCopy.getSource() dfe.getRoot() == dfeCopy.getRoot() dfe.getFieldDefinition() == dfeCopy.getFieldDefinition() @@ -114,8 +124,13 @@ class DataFetchingEnvironmentImplTest extends Specification { dfe.getDocument() == dfeCopy.getDocument() dfe.getOperationDefinition() == dfeCopy.getOperationDefinition() dfe.getVariables() == dfeCopy.getVariables() - dfe.getDataLoader("dataLoader") == dataLoader - dfe.getCacheControl() == cacheControl + dfe.getDataLoader("dataLoader") == executionContext.getDataLoaderRegistry().getDataLoader("dataLoader") || + dfe.getDataLoader("dataLoader").delegate == dfeCopy.getDataLoader("dataLoader").delegate + dfe.getLocale() == dfeCopy.getLocale() + dfe.getLocalContext() == dfeCopy.getLocalContext() + where: + chainedDataLoaderEnabled << [true, false] + } def "get or default support"() { @@ -129,4 +144,18 @@ class DataFetchingEnvironmentImplTest extends Specification { dfe.getArgument("x") == "y" dfe.getArgumentOrDefault("x", "default") == "y" } + + def "deprecated getFields() method works"() { + when: + Argument argument = new Argument("arg1", new StringValue("argVal")) + Field field = new Field("someField", [argument]) + + def environment = newDataFetchingEnvironment(executionContext) + .mergedField(mergedField(field)) + .build() + + then: + environment.fields == [field] // Retain deprecated method for test coverage + } + } diff --git a/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy b/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy index 0d1f4dc866..ff80ad9b32 100644 --- a/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy @@ -1,32 +1,26 @@ package graphql.schema -import graphql.Scalars +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.StarWarsData import graphql.TestUtil -import graphql.execution.ExecutionContextBuilder -import graphql.execution.ExecutionId -import graphql.language.Document -import graphql.language.Field -import graphql.language.FragmentDefinition -import graphql.language.NodeUtil -import graphql.language.OperationDefinition +import graphql.schema.idl.RuntimeWiring import spock.lang.Specification -import static graphql.TestUtil.mergedField +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class DataFetchingFieldSelectionSetImplTest extends Specification { - def starWarsSchema = TestUtil.schemaFile("starWarsSchemaWithArguments.graphqls") - - - def query = ''' + def starWarsQuery = ''' { human { name appearsIn - friends(separationCount : 2) { + friends { name appearsIn - friends(separationCount : 5) { + friends { name appearsIn } @@ -45,30 +39,29 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { } ''' - List firstFields(Document document) { - (document.definitions[0] as OperationDefinition).selectionSet.selections - .collect({ node -> (Field) node }) - } - - Map getFragments(Document document) { - NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, null) - getOperationResult.fragmentsByName + DataFetchingFieldSelectionSet selectionSet = null + DataFetcher humanDF = { DataFetchingEnvironment env -> + selectionSet = env.getSelectionSet() + return StarWarsData.humanDataFetcher.get(env) } - def "glob pattern matching works"() { + RuntimeWiring starWarsRuntimeWiring = newRuntimeWiring() + .type(newTypeWiring("QueryType").dataFetcher("human", humanDF)) + .type(newTypeWiring("Character").typeResolver({ env -> env.getSchema().getType("Human") })) + .build() - def document = TestUtil.parseQuery(query) + def starWarsSchema = TestUtil.schemaFile("starWarsSchemaWithArguments.graphqls", starWarsRuntimeWiring) + def starWarsGraphql = GraphQL.newGraphQL(starWarsSchema).build() - List fields = firstFields(document) - def executionContext = ExecutionContextBuilder.newExecutionContextBuilder() - .executionId(ExecutionId.generate()) - .fragmentsByName(getFragments(document)) - .graphQLSchema(starWarsSchema).build() + def "glob pattern matching works"() { - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, starWarsSchema.getType('Human'), mergedField(fields)) + def ei = ExecutionInput.newExecutionInput(starWarsQuery).build() + def er = starWarsGraphql.execute(ei) expect: + er.errors.isEmpty() + !selectionSet.contains(null) !selectionSet.contains("") !selectionSet.contains("rubbish") @@ -124,77 +117,8 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { !selectionSet.containsAnyOf("notPresent", "alsoNotPresent") } - def "test field selection set capture works"() { - - def document = TestUtil.parseQuery(query) - - List fields = firstFields(document) - - def executionContext = ExecutionContextBuilder.newExecutionContextBuilder() - .executionId(ExecutionId.generate()) - .fragmentsByName(getFragments(document)) - .graphQLSchema(starWarsSchema).build() - - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, starWarsSchema.getType('Human'), mergedField(fields)) - - def fieldMap = selectionSet.get() - expect: - fieldMap.keySet() == [ - "name", - "appearsIn", - "friends", - "friends/name", - "friends/appearsIn", - "friends/friends", - "friends/friends/name", - "friends/friends/appearsIn", - ] as Set - - } - - - def "test field argument capture works"() { - - def document = TestUtil.parseQuery(query) - - List fields = firstFields(document) - - def executionContext = ExecutionContextBuilder.newExecutionContextBuilder() - .executionId(ExecutionId.generate()) - .fragmentsByName(getFragments(document)) - .graphQLSchema(starWarsSchema).build() - - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, starWarsSchema.getType('Human'), mergedField(fields)) - - expect: - - selectionSet.arguments['name'] == [:] - selectionSet.arguments['friends'] == [separationCount: 2] - selectionSet.arguments['friends/friends'] == [separationCount: 5] - - } - - def "test field type capture works"() { - - def document = TestUtil.parseQuery(query) - List fields = firstFields(document) - - def executionContext = ExecutionContextBuilder.newExecutionContextBuilder() - .executionId(ExecutionId.generate()) - .fragmentsByName(getFragments(document)) - .graphQLSchema(starWarsSchema).build() - - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(executionContext, starWarsSchema.getType('Human'), mergedField(fields)) - - expect: - - (selectionSet.definitions['name'].getType() as GraphQLNonNull).getWrappedType() == Scalars.GraphQLString - (selectionSet.definitions['friends'].getType() as GraphQLList).getWrappedType() == starWarsSchema.getType('Character') - (selectionSet.definitions['friends/friends'].getType() as GraphQLList).getWrappedType() == starWarsSchema.getType('Character') - } - - def replayQuery = ''' + def relayQuery = ''' { things(first: 10) { nodes { @@ -239,28 +163,31 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { } ''' - def replaySchema = TestUtil.schemaFile("thingRelaySchema.graphqls") + DataFetcher thingConnectionDF = { DataFetchingEnvironment env -> + selectionSet = env.getSelectionSet() + return [totalCount: 0] + } - def relayDocument = TestUtil.parseQuery(replayQuery) + RuntimeWiring relayRuntimeWiring = newRuntimeWiring() + .type(newTypeWiring("Query").dataFetcher("things", thingConnectionDF)) + .type(newTypeWiring("Node").typeResolver({ env -> env.getSchema().getType("Thing") })) + .build() - def replayExecutionContext = ExecutionContextBuilder.newExecutionContextBuilder() - .executionId(ExecutionId.generate()) - .fragmentsByName(getFragments(relayDocument)) - .graphQLSchema(replaySchema).build() + def relaySchema = TestUtil.schemaFile("thingRelaySchema.graphqls", relayRuntimeWiring) + def relayGraphql = GraphQL.newGraphQL(relaySchema).build() def "test getting sub selected fields by name"() { - def startField = firstFields(relayDocument) - def startingType = replaySchema.getType('ThingConnection') - when: - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(replayExecutionContext, startingType, mergedField(startField)) - - def selectedNodesField = selectionSet.getField("nodes") + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) then: + er.getErrors().isEmpty() + + def selectedNodesField = selectionSet.getFields("nodes")[0] selectedNodesField.getName() == "nodes" - GraphQLTypeUtil.simplePrint(selectedNodesField.fieldDefinition.type) == "[Thing]" + GraphQLTypeUtil.simplePrint(selectedNodesField.type) == "[Thing]" selectedNodesField.getSelectionSet().contains("key") selectedNodesField.getSelectionSet().contains("summary") selectedNodesField.getSelectionSet().contains("status") @@ -273,68 +200,68 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { !selectedNodesField.getSelectionSet().contains("lastUpdatedDate") when: - def selectedKeyField = selectedNodesField.getSelectionSet().getField("key") + def selectedKeyField = selectedNodesField.getSelectionSet().getFields("key")[0] then: selectedKeyField.getName() == "key" - GraphQLTypeUtil.simplePrint(selectedKeyField.fieldDefinition.type) == "String" + GraphQLTypeUtil.simplePrint(selectedKeyField.type) == "String" when: - def selectedStatusField = selectedNodesField.getSelectionSet().getField("status") + def selectedStatusField = selectedNodesField.getSelectionSet().getFields("status")[0] then: selectedStatusField.getName() == "status" - GraphQLTypeUtil.simplePrint(selectedStatusField.fieldDefinition.type) == "Status" + GraphQLTypeUtil.simplePrint(selectedStatusField.type) == "Status" selectedStatusField.getSelectionSet().contains("name") // jump straight to compound fq name (which is 2 down from 'nodes') when: - def selectedStatusNameField = selectedNodesField.getSelectionSet().getField("status/name") + def selectedStatusNameField = selectedNodesField.getSelectionSet().getFields("status/name")[0] then: selectedStatusNameField.getName() == "name" - GraphQLTypeUtil.simplePrint(selectedStatusNameField.fieldDefinition.type) == "String" + GraphQLTypeUtil.simplePrint(selectedStatusNameField.type) == "String" } def "test getting sub selected fields by glob"() { - def startField = firstFields(relayDocument) - def startingType = replaySchema.getType('ThingConnection') - when: - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(replayExecutionContext, startingType, mergedField(startField)) - List selectedUnderNodesAster = selectionSet.getFields("nodes/*") + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) then: + er.getErrors().isEmpty() + List selectedUnderNodesAster = selectionSet.getFields("nodes/*") selectedUnderNodesAster.size() == 4 - def sortedSelectedUnderNodesAster = selectedUnderNodesAster.sort({ sf -> sf.name }) + def sortedSelectedUnderNodesAster = new ArrayList<>(selectedUnderNodesAster).sort({ sf -> sf.name }) def fieldNames = sortedSelectedUnderNodesAster.collect({ sf -> sf.name }) fieldNames == ["key", "status", "stuff", "summary"] - GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[0].fieldDefinition.type) == "String" - GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[1].fieldDefinition.type) == "Status" - GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[2].fieldDefinition.type) == "Stuff" - GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[3].fieldDefinition.type) == "String" + GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[0].type) == "String" + GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[1].type) == "Status" + GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[2].type) == "Stuff" + GraphQLTypeUtil.simplePrint(sortedSelectedUnderNodesAster[3].type) == "String" // descend one down from here Status.name which has not further sub selection when: - def statusName = sortedSelectedUnderNodesAster[1].getSelectionSet().getField("name") + def statusName = sortedSelectedUnderNodesAster[1].getSelectionSet().getFields("name")[0] then: statusName.name == "name" - GraphQLTypeUtil.simplePrint(statusName.fieldDefinition.type) == "String" - statusName.getSelectionSet().get().isEmpty() + GraphQLTypeUtil.simplePrint(statusName.type) == "String" + statusName.getSelectionSet().getFields().isEmpty() } def "test that aster aster is equal to get all"() { - def startField = firstFields(relayDocument) - def startingType = replaySchema.getType('ThingConnection') - when: - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(replayExecutionContext, startingType, mergedField(startField)) + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) + + then: + er.getErrors().isEmpty() List allFieldsViaAsterAster = selectionSet.getFields("**") List allFields = selectionSet.getFields() @@ -342,10 +269,10 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { allFieldsViaAsterAster.size() == 14 allFields.size() == 14 - def allFieldsViaAsterAsterSorted = allFieldsViaAsterAster.sort({ sf -> sf.qualifiedName }) - def allFieldsSorted = allFields.sort({ sf -> sf.qualifiedName }) + def allFieldsViaAsterAsterSorted = new ArrayList<>(allFieldsViaAsterAster).sort({ sf -> sf.qualifiedName }) + def allFieldsSorted = new ArrayList<>(allFields).sort({ sf -> sf.qualifiedName }) - def expectedFieldName = [ + def expectedFieldNames = [ "edges", "edges/cursor", "edges/node", @@ -361,17 +288,89 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { "nodes/summary", "totalCount" ] - allFieldsViaAsterAsterSorted.collect({ sf -> sf.qualifiedName }) == expectedFieldName - allFieldsSorted.collect({ sf -> sf.qualifiedName }) == expectedFieldName + allFieldsViaAsterAsterSorted.collect({ sf -> sf.qualifiedName }) == expectedFieldNames + allFieldsSorted.collect({ sf -> sf.qualifiedName }) == expectedFieldNames + + when: + def expectedFullyQualifiedFieldNames = [ + "ThingConnection.edges", + "ThingConnection.edges/ThingEdge.cursor", + "ThingConnection.edges/ThingEdge.node", + "ThingConnection.edges/ThingEdge.node/Thing.description", + "ThingConnection.edges/ThingEdge.node/Thing.status", + "ThingConnection.edges/ThingEdge.node/Thing.status/Status.name", + "ThingConnection.nodes", + "ThingConnection.nodes/Thing.key", + "ThingConnection.nodes/Thing.status", + "ThingConnection.nodes/Thing.status/Status.name", + "ThingConnection.nodes/Thing.stuff", + "ThingConnection.nodes/Thing.stuff/Stuff.name", + "ThingConnection.nodes/Thing.summary", + "ThingConnection.totalCount" + ] + then: + allFieldsViaAsterAsterSorted.collect({ sf -> sf.fullyQualifiedName }) == expectedFullyQualifiedFieldNames + allFieldsSorted.collect({ sf -> sf.fullyQualifiedName }) == expectedFullyQualifiedFieldNames + } def "fields are returned in pre order"() { - def startField = firstFields(relayDocument) - def startingType = replaySchema.getType('ThingConnection') + when: + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) + + then: + er.getErrors().isEmpty() + + List fieldsGlob = selectionSet.getFields("**") + List fields = selectionSet.getFields() + + def expectedFieldName = [ + "nodes", + "nodes/key", + "nodes/summary", + "nodes/status", + "nodes/status/name", + "nodes/stuff", + "nodes/stuff/name", + "edges", + "edges/cursor", + "edges/node", + "edges/node/description", + "edges/node/status", + "edges/node/status/name", + "totalCount" + ] + + then: + fieldsGlob.collect({ field -> field.qualifiedName }) == expectedFieldName + fields.collect({ field -> field.qualifiedName }) == expectedFieldName + } + + + def "immediate fields followed by fields are computed"() { when: - def selectionSet = DataFetchingFieldSelectionSetImpl.newCollector(replayExecutionContext, startingType, mergedField(startField)) + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) + + then: + er.getErrors().isEmpty() + + then: + List immediateFields = selectionSet.getImmediateFields() + + then: + def expectedImmediateFieldName = [ + "nodes", + "edges", + "totalCount" + ] + + immediateFields.collect({ field -> field.qualifiedName }) == expectedImmediateFieldName + + then: List fieldsGlob = selectionSet.getFields("**") List fields = selectionSet.getFields() @@ -395,6 +394,590 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { then: fieldsGlob.collect({ field -> field.qualifiedName }) == expectedFieldName fields.collect({ field -> field.qualifiedName }) == expectedFieldName + } + + def petSDL = ''' + type Query { + petUnion : PetUnion + pet(qualifier : String) : Pet + leads : [Lead] + } + + interface Pet { + name(nameArg : String) : String + pet(qualifier : String) : Pet + petUnion : PetUnion + lead : Lead + } + + type Dog implements Pet { + name(nameArg : String) : String + pet(qualifier : String) : Pet + petUnion : PetUnion + lead : Lead + woof : String + } + + type Bird implements Pet { + name(nameArg : String) : String + pet(qualifier : String) : Pet + petUnion : PetUnion + lead : Lead + tweet : String + } + + type Cat implements Pet { + name(nameArg : String) : String + pet(qualifier : String) : Pet + petUnion : PetUnion + lead : Lead + meow : String + } + + type Lead { + material : String + } + + union PetUnion = Dog | Cat + + ''' + + def lassie = [name: "lassie", lead: [material: "leather"]] + def grumpyCat = [name: "grumpCat", pet: lassie, petUnion: lassie, lead: [material: "leather"]] + def fido = [name: "fido", pet: grumpyCat, petUnion: grumpyCat, lead: [material: "leather"]] + + DataFetchingFieldSelectionSet petSelectionSet = null + DataFetcher petDF = { DataFetchingEnvironment env -> + petSelectionSet = env.getSelectionSet() + return fido + } + DataFetchingFieldSelectionSet petUnionSelectionSet = null + DataFetcher petUnionDF = { DataFetchingEnvironment env -> + petUnionSelectionSet = env.getSelectionSet() + return fido + } + + DataFetchingFieldSelectionSet leadsSelectionSet = null + DataFetcher leadsDF = { DataFetchingEnvironment env -> + leadsSelectionSet = env.getSelectionSet() + return [[material: "rope"]] + } + + DataFetchingFieldSelectionSet leadSelectionSet = null + DataFetcher leadDF = { DataFetchingEnvironment env -> + leadSelectionSet = env.getSelectionSet() + return [material: "plastic"] + } + + DataFetchingFieldSelectionSet simpleSelectionSet = null + DataFetcher simpleSF = { DataFetchingEnvironment env -> + simpleSelectionSet = env.getSelectionSet() + def pdf = PropertyDataFetcher.fetching(env.getFieldDefinition().getName()) + return pdf.get(env) + } + + def typeResolver = { e -> e.getSchema().getObjectType("Dog") } + RuntimeWiring runtimeWiring = newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("leads", leadsDF) + .dataFetcher("pet", petDF) + .dataFetcher("petUnion", petUnionDF) + ) + .type(newTypeWiring("Dog") + .dataFetcher("name", simpleSF) + .dataFetcher("lead", leadDF) + ) + .type(newTypeWiring("Pet") + .typeResolver(typeResolver) + ) + .type(newTypeWiring("PetUnion") + .typeResolver(typeResolver) + ) + .build() + + def petSchema = TestUtil.graphQL(petSDL, runtimeWiring).build() + + def "test normalised selection occurs on interfaces"() { + + when: + def query = ''' + { + pet(qualifier : "onPet") { + name(nameArg : "OnPet") + lead { material } + ... on Cat { + n1: name(nameArg : "OnCatN1") + n2: name(nameArg : "OnCatN2") + } + } + + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + petSelectionSet.contains("name") + petSelectionSet.contains("*Dog*.name") + petSelectionSet.contains("*Cat*.name") + petSelectionSet.contains("*Bird*.name") + petSelectionSet.contains("*Bird*.*") + petSelectionSet.contains("*name") + !petSelectionSet.contains("notPresent") + + petSelectionSet.containsAnyOf("name", "lead", "notPresent") + petSelectionSet.containsAllOf("name", "lead") + !petSelectionSet.containsAllOf("name", "lead", "notPresent") + + when: + def selectedFields = petSelectionSet.getFields("name") + + then: + selectedFields.size() == 3 + assertTheyAreExpected(selectedFields, ["[Bird, Cat, Dog].name", "n1:Cat.name", "n2:Cat.name"]) + + def byResultKey = petSelectionSet.getFieldsGroupedByResultKey("name") + byResultKey.size() == 3 + assertTheyAreExpected(byResultKey["name"], ["[Bird, Cat, Dog].name"]) + assertTheyAreExpected(byResultKey["n1"], ["n1:Cat.name"]) + assertTheyAreExpected(byResultKey["n2"], ["n2:Cat.name"]) + + petSelectionSet.contains("lead") + petSelectionSet.contains("lead/material") + + when: + selectedFields = petSelectionSet.getFields("*Dog*.name") + then: + selectedFields.size() == 1 + + when: + selectedFields = new ArrayList<>(petSelectionSet.getFields("*lead*")) + selectedFields.sort(byName()) + + then: + selectedFields.size() == 1 + assertTheyAreExpected(selectedFields, ["[Bird, Cat, Dog].lead"]) + // we can work our sub selection from them as well + selectedFields[0].getSelectionSet().contains("material") + !selectedFields[0].getSelectionSet().contains("rubbish") + + + when: + selectedFields = new ArrayList<>(petSelectionSet.getFields("lead/material")) + selectedFields.sort(byName()) + + then: + selectedFields.size() == 1 //one for the Cat and Dog and Bird entries + assertTheyAreExpected(selectedFields, ["Lead.material"]) + selectedFields[0].getParentField().getFullyQualifiedName() == "[Bird, Cat, Dog].lead" + + // parents can have computed selection sets + def birdLead = selectedFields[0].getParentField() + birdLead.getSelectionSet().contains("material") + !birdLead.getSelectionSet().contains("rubbish") + + when: + selectedFields = petSelectionSet.getFields("name", "lead**") + then: + selectedFields.size() == 5 + } + + def "aliasing returns values as selected fields"() { + when: + def query = ''' + { + pet { + name + ... on Dog { + aliasedName : name + } + } + + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + def selectedFields = petSelectionSet.getFields("name") + selectedFields.size() == 2 + assertTheyAreExpected(selectedFields, ["[Bird, Cat, Dog].name", "aliasedName:Dog.name"]) + + def getFields = petSelectionSet.getFields() + getFields.size() == 2 + assertTheyAreExpected(getFields, ["[Bird, Cat, Dog].name", "aliasedName:Dog.name"]) + + def byResultKey = petSelectionSet.getFieldsGroupedByResultKey() + byResultKey.size() == 2 + byResultKey.containsKey("name") + byResultKey.containsKey("aliasedName") + } + + def "test normalised selection occurs on unions"() { + + when: + def query = ''' + { + + petUnion { + ... on Cat { + name + meow + pet(qualifier : "cat") { + name + ... on Cat { + name + meow + } + } + } + ... on Dog { + name + woof + pet(qualifier : "dog") { + name + ... on Dog { + name + woof + lead { material } + } + } + } + } + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + petUnionSelectionSet.contains("name") + petUnionSelectionSet.contains("meow") + petUnionSelectionSet.contains("pet") + petUnionSelectionSet.contains("pet/name") + petUnionSelectionSet.contains("pet/woof") + petUnionSelectionSet.contains("pet/meow") + petUnionSelectionSet.contains("pet/lead") + petUnionSelectionSet.contains("pet/lead/material") + + when: + def selectedFields = petUnionSelectionSet.getFields("name") + then: + selectedFields.size() == 1 + assertTheyAreExpected(selectedFields, ["[Cat, Dog].name"]) + } + + def "test normalised selection occurs on objects"() { + + when: + def query = ''' + { + leads { + material + } + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + leadsSelectionSet.contains("material") + leadsSelectionSet.contains("material*") + leadsSelectionSet.contains("material**") + + when: + def selectedFields = leadsSelectionSet.getFields("material*") + then: + selectedFields.size() == 1 + assertTheyAreExpected(selectedFields, ["Lead.material"]) + + def byResultKey = leadsSelectionSet.getFieldsGroupedByResultKey("material") + byResultKey.size() == 1 + + } + + def "different arguments are available for different result keys"() { + when: + def query = ''' + { + pet { + name(nameArg : "OnPet") + ... on Cat { + n1: name(nameArg : "OnCatN1") + n2: name(nameArg : "OnCatN2") + } + } + + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + when: + def selectedFields = petSelectionSet.getFields("name") + + then: + selectedFields.size() == 3 + assertTheyAreExpected(selectedFields, ["[Bird, Cat, Dog].name", "n1:Cat.name", "n2:Cat.name"]) + + def byResultKey = petSelectionSet.getFieldsGroupedByResultKey("name") + byResultKey.size() == 3 + + byResultKey["name"][0].getArguments()["nameArg"] == "OnPet" + + byResultKey["n1"][0].getArguments()["nameArg"] == "OnCatN1" + byResultKey["n2"][0].getArguments()["nameArg"] == "OnCatN2" + } + + def "field definitions and object types are available"() { + when: + def query = ''' + { + pet { + name(nameArg : "OnPet") + } + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + when: + def selectedFields = new ArrayList<>(petSelectionSet.getFields("name")) + selectedFields.sort(byName()) + + then: + selectedFields[0].getObjectTypeNames() == ["Bird", "Cat", "Dog"] + selectedFields[0].getName() == "name" + + } + + def "fragments inline and defined work as expected"() { + // this is repeating a lot of the underlying NormalisedField tests - so this is not extensively tested here + when: + def query = ''' + { + pet { + name + ... on Dog { + name + } + ... CatFrag + } + } + + fragment CatFrag on Cat { + name + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + when: + def selectedFields = new ArrayList<>(petSelectionSet.getFields("name")) + selectedFields.sort(byName()) + + then: + selectedFields.size() == 1 + assertTheyAreExpected(selectedFields, ["[Bird, Cat, Dog].name"]) + + } + + def "immediate fields can be found at all levels"() { + when: + def query = ''' + { + pet { + name + ... on Dog { + woof + } + ... on Cat { + meow + } + lead { + material + } + } + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + when: + def selectedFields = petSelectionSet.getImmediateFields() + then: + assertTheyAreExpected(selectedFields, [ + "Cat.meow", "Dog.woof", "[Bird, Cat, Dog].lead", "[Bird, Cat, Dog].name"]) + + when: + selectedFields = petSelectionSet.getFields("lead") + selectedFields = selectedFields[0].getSelectionSet().getImmediateFields() + then: + assertTheyAreExpected(selectedFields, ["Lead.material"]) + } + + def "simple fields do not have selection sets"() { + when: + def query = ''' + { + pet { + name(nameArg : "OnPet") + } + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + simpleSelectionSet.getFields().isEmpty() + } + + def "selection supplier grabs the right type down the execution path"() { + when: + def query = ''' + { + pet { + lead { material } + ... on Dog { + lead { material } + } + } + } + ''' + def ei = ExecutionInput.newExecutionInput(query).build() + def er = petSchema.execute(ei) + then: + er.errors.isEmpty() + + when: + def selectedFields = leadSelectionSet.getFields() + + then: + selectedFields.size() == 1 + assertTheyAreExpected(selectedFields, ["Lead.material"]) + + when: + selectedFields = leadSelectionSet.getFields("material") + + then: + selectedFields.size() == 1 + assertTheyAreExpected(selectedFields, ["Lead.material"]) + + } + + def "issue 2381 - selected fields can work in mutations"() { + def sdl = ''' + type Query { + f :String + } + + type Mutation { + mutate : SomeType + } + + type SomeType { + selectedFieldNames : [String] + b : String + c : String + } + ''' + DataFetcher mutationDF = { DataFetchingEnvironment env -> + def selectedFields = env.getSelectionSet().getImmediateFields() + + def fieldNames = selectedFields.collect { it.getName() } + return ["selectedFieldNames": fieldNames] + } + def schema = TestUtil.schema(sdl, [Mutation: ["mutate": mutationDF]]) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute('''mutation M { + mutate { + selectedFieldNames + b + c + } + }''') + then: + er.errors.isEmpty() + er.data["mutate"]["selectedFieldNames"] == ["selectedFieldNames", "b", "c"] + } + + def "issue 2736 - test interface fields with different output types on the implementations - covariance"() { + def sdl = """ + interface Animal { + parent: Animal + name: String + } + type Cat implements Animal { + name: String + parent: Cat + } + type Dog implements Animal { + name: String + parent: Dog + isGoodBoy: Boolean + } + type Query { + animal: Animal + } + """ + + def query = """ + { + animal { + parent { + name + } + } + } + """ + + + DataFetcher dataFetcher = { DataFetchingEnvironment env -> + selectionSet = env.getSelectionSet() + } + RuntimeWiring runtimeWiring = newRuntimeWiring() + .type(newTypeWiring("Query").dataFetcher("animal", dataFetcher)) + .type(newTypeWiring("Animal").typeResolver({ env -> env.schema.getObjectType("Dog") })) + .build() + def schema = TestUtil.schema(sdl, runtimeWiring) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(query) + then: + er.errors.isEmpty() + + selectionSet.contains("parent") // short syntax + selectionSet.contains("parent/name") // short syntax + selectionSet.contains("*Cat*.parent/*Cat*.name") + selectionSet.contains("*Dog*.parent/*Dog*.name") + + } + + static Comparator byName() { + { o1, o2 -> (o1.getQualifiedName() <=> o2.getQualifiedName()) } + } + + static void assertTheyAreExpected(List selectedFields, List expected) { + def names = selectedFields.collect({ sf -> mkSpecialName(sf) }) + names.sort() + assert names == expected, "Not the right selected fields" + } + static String mkSpecialName(SelectedField selectedField) { + def names = selectedField.getObjectTypeNames() + (selectedField.getAlias() == null ? "" : selectedField.getAlias() + ":") + (names.size() > 1 ? names.toString() : names.get(0)) + "." + selectedField.getName() } } diff --git a/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy b/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy index c30343c3ea..687a0f62ae 100644 --- a/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy +++ b/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy @@ -1,5 +1,6 @@ package graphql.schema +import graphql.GraphQLContext import spock.lang.Specification class DelegatingDataFetchingEnvironmentTest extends Specification { @@ -15,14 +16,19 @@ class DelegatingDataFetchingEnvironmentTest extends Specification { .source(source) .arguments(args) .root(root) - .context("context") + .graphQLContext(GraphQLContext.of(["key": "context"])) .variables(variables) .build() when: def delegatingDFE = new DelegatingDataFetchingEnvironment(dfe) { @Override - def getContext() { + GraphQLContext getGraphQlContext() { + return GraphQLContext.of(["key": "overriddenContext"]) + } + + @Override + def getContext() { // Retain for test coverage return "overriddenContext" } } @@ -30,6 +36,7 @@ class DelegatingDataFetchingEnvironmentTest extends Specification { delegatingDFE.getSource() == source delegatingDFE.getRoot() == root delegatingDFE.getContext() == "overriddenContext" + delegatingDFE.getGraphQlContext().get("key") == "overriddenContext" delegatingDFE.getVariables() == variables delegatingDFE.getArguments() == args delegatingDFE.getArgumentOrDefault("arg1", "x") == "val1" diff --git a/src/test/groovy/graphql/schema/FieldCoordinatesTest.groovy b/src/test/groovy/graphql/schema/FieldCoordinatesTest.groovy new file mode 100644 index 0000000000..e2e82da0a4 --- /dev/null +++ b/src/test/groovy/graphql/schema/FieldCoordinatesTest.groovy @@ -0,0 +1,307 @@ +package graphql.schema + +import graphql.AssertException +import spock.lang.Specification + +import static graphql.Scalars.GraphQLFloat +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLObjectType.newObject + +class FieldCoordinatesTest extends Specification { + def emptyParentName = "" + def validParentName = "Foo" + def invalidParentName = "InvalidParent;" + def validFieldName = "Bar" + def invalidFieldName = "InvalidField;" + def validSystemFieldName = "__Foo" + def invalidSystemFieldName = "Invalid" + + def validSystemFieldDef = newFieldDefinition().name(validSystemFieldName).type(GraphQLFloat).build() + def validFieldDef = newFieldDefinition().name(validFieldName).type(GraphQLFloat).build() + + GraphQLObjectType validParentType = newObject().name(validParentName).field(validFieldDef).build() + def emptyParentType = [ + getName: { -> "" }, + getFieldDefinition: { name -> validFieldDef } + ] as GraphQLFieldsContainer + def nullParentType = [ + getName: { -> null }, + getFieldDefinition: { name -> validFieldDef } + ] as GraphQLFieldsContainer + + + def "GetTypeName for standard coordinates"() { + def coordinatesFromStrings = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(validParentType, validFieldDef) + expect: + validParentName.equals(coordinatesFromStrings.getTypeName()) + validParentName.equals(coordinatesFromTypes.getTypeName()) + } + + def "GetFieldName for standard coordinates"() { + def coordinatesFromStrings = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(validParentType, validFieldDef) + expect: + validFieldName.equals(coordinatesFromStrings.getFieldName()) + validFieldName.equals(coordinatesFromTypes.getFieldName()) + } + + def "GetTypeName for system coordinates"() { + def coordinatesFromStrings = FieldCoordinates.systemCoordinates(validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(nullParentType, validFieldDef) + expect: + null == coordinatesFromStrings.getTypeName() + null == coordinatesFromTypes.getTypeName() + } + + def "GetFieldName for sytem coordinates"() { + def coordinatesFromStrings = FieldCoordinates.systemCoordinates(validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(nullParentType, validFieldDef) + expect: + validFieldName.equals(coordinatesFromStrings.getFieldName()) + validFieldName.equals(coordinatesFromTypes.getFieldName()) + } + + def "Equals true"() { + when: 'The same parent and field names are used to construct different coordinates' + def coordinatesFromStrings1 = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromStrings2 = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes1 = FieldCoordinates.coordinates(validParentType, validFieldDef) + def coordinatesFromTypes2 = FieldCoordinates.coordinates(validParentType, validFieldDef) + then: 'All coordinates should equal each other' + coordinatesFromStrings1.equals(coordinatesFromStrings2) + coordinatesFromTypes1.equals(coordinatesFromTypes2) + coordinatesFromStrings1.equals(coordinatesFromTypes1) + } + + def "Equals false"() { + when: 'The different parent and field names are used to construct different coordinates' + def coordinatesFromStrings = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(nullParentType, validFieldDef) + then: 'Coordinates should NOT equal each other' + !coordinatesFromStrings.equals(coordinatesFromTypes) + } + + def "HashCode equals"() { + when: 'The same parent and field names are used to construct different coordinates' + def coordinatesFromStrings1 = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromStrings2 = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes1 = FieldCoordinates.coordinates(validParentType, validFieldDef) + def coordinatesFromTypes2 = FieldCoordinates.coordinates(validParentType, validFieldDef) + then: 'All coordinate hash codes should equal each other' + coordinatesFromStrings1.hashCode().equals(coordinatesFromStrings2.hashCode()) + coordinatesFromTypes1.hashCode().equals(coordinatesFromTypes2.hashCode()) + coordinatesFromStrings1.hashCode().equals(coordinatesFromTypes1.hashCode()) + } + + def "HashCode NOT equals"() { + when: 'The different parent and field names are used to construct different coordinates' + def coordinatesFromStrings = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(nullParentType, validFieldDef) + then: 'Coordinate hash codes should NOT equal each other' + !coordinatesFromStrings.hashCode().equals(coordinatesFromTypes.hashCode()) + } + + def "ToString equals"() { + when: 'The same parent and field names are used to construct different coordinates' + def coordinatesFromStrings1 = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromStrings2 = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes1 = FieldCoordinates.coordinates(validParentType, validFieldDef) + then: 'All coordinate toStrings should equal each other' + coordinatesFromStrings1.toString().equals(coordinatesFromStrings2.toString()) + coordinatesFromStrings1.toString().equals(coordinatesFromTypes1.toString()) + } + + def "ToString NOT equals"() { + when: 'The different parent and field names are used to construct different coordinates' + def coordinatesFromStrings = FieldCoordinates.coordinates(validParentName, validFieldName) + def coordinatesFromTypes = FieldCoordinates.coordinates(nullParentType, validFieldDef) + then: 'Coordinate toStrings should NOT equal each other' + !coordinatesFromStrings.toString().equals(coordinatesFromTypes.toString()) + } + + def "FieldCoordinate.coordinates(GraphQLFieldsContainer, GraphQLFieldDefinition) creation failure on null parentType"() { + when: 'null parent type is given for coordinates and no validation' + FieldCoordinates.coordinates(null, validFieldDef) + then: 'throw NullPointerException' + thrown NullPointerException; + } + + def "FieldCoordinate.coordinates(GraphQLFieldsContainer, GraphQLFieldDefinition) creation failure on null fieldDefinition"() { + when: 'null field definition is given for coordinates and no validation' + FieldCoordinates.coordinates(validParentType, null as GraphQLFieldDefinition) + then: 'throw NullPointerException' + thrown NullPointerException; + } + + def "FieldCoordinate.coordinates(GraphQLFieldsContainer, GraphQLFieldDefinition) test validation"() { + when: 'parent type with null name is given for coordinates' + def coordinates = FieldCoordinates.coordinates(nullParentType, validFieldDef) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'parent type with empty name is given for coordinates' + coordinates = FieldCoordinates.coordinates(emptyParentType, validFieldDef) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'valid parent type with name and field definition are given for coordinates' + coordinates = FieldCoordinates.coordinates(validParentType, validFieldDef) + coordinates.assertValidNames() + then: 'succeed' + validParentName.equals(coordinates.getTypeName()) + validFieldName.equals(coordinates.getFieldName()) + } + + def "FieldCoordinate.coordinates(GraphQLFieldsContainer, GraphQLFieldDefinition) creation success with no validation"() { + when: 'parent type with null name is given for coordinates and no validation' + def coordinates = FieldCoordinates.coordinates(nullParentType, validFieldDef) + then: 'succeed' + null == coordinates.getTypeName() + validFieldName.equals(coordinates.getFieldName()) + + when: 'parent type with empty name is given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(emptyParentType, validFieldDef) + then: 'succeed' + emptyParentName.equals(coordinates.getTypeName()) + validFieldName.equals(coordinates.getFieldName()) + + when: 'valid parent type with name and field definition are given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(validParentType, validFieldDef) + then: 'succeed' + validParentName.equals(coordinates.getTypeName()) + validFieldName.equals(coordinates.getFieldName()) + } + + def "FieldCoordinate.coordinates(String, String) test validation"() { + when: 'null parent name is given for coordinates' + def coordinates = FieldCoordinates.coordinates(null as String, validFieldName) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'null field name is given for coordinates' + coordinates = FieldCoordinates.coordinates(validParentName, null) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'null parent name and null field name are given for coordinates' + coordinates = FieldCoordinates.coordinates((String) null, null) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'invalid parent name is given for coordinates' + coordinates = FieldCoordinates.coordinates(invalidParentName, validFieldName) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'invalid field name is given for coordinates' + coordinates = FieldCoordinates.coordinates(validParentName, invalidFieldName) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'invalid parent and field names are given for coordinates' + coordinates = FieldCoordinates.coordinates(invalidParentName, invalidFieldName) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'valid parent name and field name are given for coordinates' + coordinates = FieldCoordinates.coordinates(validParentName, validFieldName) + coordinates.assertValidNames() + then: 'succeed' + validParentName.equals(coordinates.getTypeName()) + validFieldName.equals(coordinates.getFieldName()) + } + + def "FieldCoordinate.coordinates(String, String) creation success with no validation"() { + when: 'null parent name is given for coordinates and no validation' + def coordinates = FieldCoordinates.coordinates(null as String, validFieldName) + then: 'succeed' + null == coordinates.getTypeName() + validFieldName.equals(coordinates.getFieldName()) + + when: 'null field name is given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(validParentName, null) + then: 'succeed' + validParentName.equals(coordinates.getTypeName()) + null == coordinates.getFieldName() + + when: 'null parent name and null field name are given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates((String) null, null) + then: 'succeed' + null == coordinates.getTypeName() + null == coordinates.getFieldName() + + when: 'invalid parent name is given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(invalidParentName, validFieldName) + then: 'succeed' + invalidParentName.equals(coordinates.getTypeName()) + validFieldName.equals(coordinates.getFieldName()) + + when: 'invalid field name is given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(validParentName, invalidFieldName) + then: 'succeed' + validParentName.equals(coordinates.getTypeName()) + invalidFieldName.equals(coordinates.getFieldName()) + + when: 'invalid parent and field names are given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(invalidParentName, invalidFieldName) + then: 'succeed' + invalidParentName.equals(coordinates.getTypeName()) + invalidFieldName.equals(coordinates.getFieldName()) + + when: 'valid parent name and field name are given for coordinates and no validation' + coordinates = FieldCoordinates.coordinates(validParentName, validFieldName) + then: 'succeed' + validParentName.equals(coordinates.getTypeName()) + validFieldName.equals(coordinates.getFieldName()) + } + + def "FieldCoordinate.systemCoordinates(String) test validation"() { + when: 'null field name is given for system coordinates' + def coordinates = FieldCoordinates.systemCoordinates(null) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'invalid field name is given for system coordinates' + coordinates = FieldCoordinates.systemCoordinates(invalidSystemFieldName) + coordinates.assertValidNames() + then: 'fail assert on validation' + thrown AssertException + + when: 'valid field name is given for system coordinates' + coordinates = FieldCoordinates.systemCoordinates(validSystemFieldName) + coordinates.assertValidNames() + then: 'succeed' + null == coordinates.getTypeName() + validSystemFieldName.equals(coordinates.getFieldName()) + } + + def "FieldCoordinate.systemCoordinates(String) creation success with no validation"() { + when: 'null field name is given for system coordinates and no validation' + def coordinates = FieldCoordinates.systemCoordinates(null) + then: 'succeed' + null == coordinates.getTypeName() + null == coordinates.getFieldName() + + when: 'invalid field name is given for system coordinates and no validation' + coordinates = FieldCoordinates.systemCoordinates(invalidSystemFieldName) + then: 'succeed' + null == coordinates.getTypeName() + invalidSystemFieldName.equals(coordinates.getFieldName()) + + when: 'valid field name is given for system coordinates and no validation' + coordinates = FieldCoordinates.systemCoordinates(validSystemFieldName) + then: 'succeed' + null == coordinates.getTypeName() + validSystemFieldName.equals(coordinates.getFieldName()) + } +} diff --git a/src/test/groovy/graphql/schema/GraphQLAppliedDirectiveArgumentTest.groovy b/src/test/groovy/graphql/schema/GraphQLAppliedDirectiveArgumentTest.groovy new file mode 100644 index 0000000000..35875c78d2 --- /dev/null +++ b/src/test/groovy/graphql/schema/GraphQLAppliedDirectiveArgumentTest.groovy @@ -0,0 +1,64 @@ +package graphql.schema + +import graphql.GraphQLContext +import graphql.TestUtil +import graphql.execution.ValuesResolver +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.SchemaParser +import graphql.schema.idl.errors.SchemaProblem +import spock.lang.Specification + +class GraphQLAppliedDirectiveArgumentTest extends Specification { + def "test non-list value for a list argument of a directive - issue 2001"() { + def spec = ''' + directive @test(value: [String] = "default") on FIELD_DEFINITION + type Query { + testDefaultWorks : String @test + testItWorks : String @test(value: "test") + testItIsNotBroken : String @test(value: ["test"]) + } + ''' + + def closure = { + def argument = it.fieldDefinition.getAppliedDirective("test").getArgument("value") as GraphQLAppliedDirectiveArgument + return ValuesResolver.valueToInternalValue(argument.getArgumentValue(), argument.getType(), GraphQLContext.getDefault(), Locale.getDefault())[0] + } + def graphql = TestUtil.graphQL(spec, RuntimeWiring.newRuntimeWiring() + .type("Query", { + it.dataFetcher("testDefaultWorks", closure) + .dataFetcher("testItWorks", closure) + .dataFetcher("testItIsNotBroken", closure) + }).build()) + .build() + + when: + def result = graphql.execute(' { testDefaultWorks testItWorks testItIsNotBroken }') + + then: + result.errors.isEmpty() + result.data.testDefaultWorks == "default" + result.data.testItWorks == "test" + result.data.testItIsNotBroken == "test" + } + + def "test an incorrect non-list value for a list argument of a directive - issue 2001"() { + def spec = ''' + directive @test(value: [String]) on FIELD_DEFINITION + type Query { + test : String @test(value : 123) + } + ''' + + when: + def reader = new StringReader(spec) + def registry = new SchemaParser().parse(reader) + + def options = SchemaGenerator.Options.defaultOptions() + + def schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) + + then: + thrown(SchemaProblem.class) + } +} diff --git a/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy b/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy index 1442c5b1ac..a957b25425 100644 --- a/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy @@ -1,10 +1,19 @@ package graphql.schema +import graphql.collect.ImmutableKit +import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION +import graphql.language.FloatValue +import graphql.schema.validation.InvalidSchemaException import spock.lang.Specification +import static graphql.Scalars.GraphQLFloat import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString -import static graphql.schema.GraphQLDirective.newDirective +import static graphql.schema.GraphQLArgument.newArgument +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema +import static graphql.TestUtil.mkDirective class GraphQLArgumentTest extends Specification { @@ -13,7 +22,8 @@ class GraphQLArgumentTest extends Specification { def startingArgument = GraphQLArgument.newArgument().name("A1") .description("A1_description") .type(GraphQLInt) - .withDirective(newDirective().name("directive1")) + .deprecate("custom reason") + .withDirective(mkDirective("directive1", ARGUMENT_DEFINITION)) .build() when: def transformedArgument = startingArgument.transform({ @@ -21,38 +31,58 @@ class GraphQLArgumentTest extends Specification { .name("A2") .description("A2_description") .type(GraphQLString) - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive3")) - .value("VALUE") - .defaultValue("DEFAULT") + .withDirective(mkDirective("directive3", ARGUMENT_DEFINITION)) + .value("VALUE") // Retain deprecated for test coverage + .deprecate(null) + .defaultValue("DEFAULT") // Retain deprecated for test coverage }) then: startingArgument.name == "A1" startingArgument.description == "A1_description" startingArgument.type == GraphQLInt - startingArgument.defaultValue == null + startingArgument.argumentDefaultValue.value == null + startingArgument.deprecationReason == "custom reason" + startingArgument.isDeprecated() startingArgument.getDirectives().size() == 1 startingArgument.getDirective("directive1") != null transformedArgument.name == "A2" transformedArgument.description == "A2_description" transformedArgument.type == GraphQLString - transformedArgument.value == "VALUE" - transformedArgument.defaultValue == "DEFAULT" + transformedArgument.argumentValue.value == "VALUE" // Retain deprecated for test coverage + transformedArgument.argumentDefaultValue.value == "DEFAULT" + transformedArgument.deprecationReason == null + !transformedArgument.isDeprecated() transformedArgument.getDirectives().size() == 2 transformedArgument.getDirective("directive1") != null transformedArgument.getDirective("directive3") != null } + def "object can be transformed without setting the default value"() { + given: + def startingArgument = GraphQLArgument.newArgument().name("A1") + .type(GraphQLInt) + .build() + when: + def transformedArgument = startingArgument.transform({ + it.name("A2") + }) + + then: + + transformedArgument.name == "A2" + !transformedArgument.hasSetDefaultValue() + } + def "directive support on arguments via builder"() { def argument given: - def builder = GraphQLArgument.newArgument().name("A1") + def builder = newArgument().name("A1") .type(GraphQLInt) - .withDirective(newDirective().name("directive1")) + .withDirective(mkDirective("directive1", ARGUMENT_DEFINITION)) when: argument = builder.build() @@ -67,8 +97,8 @@ class GraphQLArgumentTest extends Specification { when: argument = builder .clearDirectives() - .withDirective(newDirective().name("directive2")) - .withDirective(newDirective().name("directive3")) + .withDirective(mkDirective("directive2", ARGUMENT_DEFINITION)) + .withDirective(mkDirective("directive3", ARGUMENT_DEFINITION)) .build() then: @@ -79,9 +109,10 @@ class GraphQLArgumentTest extends Specification { when: argument = builder - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive2")) // overwrite - .withDirective(newDirective().name("directive3")) // overwrite + .replaceDirectives([ + mkDirective("directive1", ARGUMENT_DEFINITION), + mkDirective("directive2", ARGUMENT_DEFINITION), + mkDirective("directive3", ARGUMENT_DEFINITION)]) // overwrite .build() then: @@ -90,4 +121,131 @@ class GraphQLArgumentTest extends Specification { argument.getDirective("directive2") != null argument.getDirective("directive3") != null } + + def "can get values statically"() { + // Retain deprecated API usages in this test for test coverage + when: + GraphQLArgument startingArg = GraphQLArgument.newArgument() + .name("F1") + .type(GraphQLFloat) + .description("F1_description") + .valueProgrammatic(4.56d) // Retain deprecated for test coverage + .defaultValueProgrammatic(1.23d) + .build() + def inputValue = startingArg.getArgumentValue() // Retain deprecated for test coverage + def resolvedValue = GraphQLArgument.getArgumentValue(startingArg) // Retain deprecated for test coverage + + def inputDefaultValue = startingArg.getArgumentDefaultValue() + def resolvedDefaultValue = GraphQLArgument.getArgumentDefaultValue(startingArg) + + then: + inputValue.isExternal() + inputValue.getValue() == 4.56d + resolvedValue == 4.56d + + inputDefaultValue.isExternal() + inputDefaultValue.getValue() == 1.23d + resolvedDefaultValue == 1.23d + + when: + startingArg = GraphQLArgument.newArgument() + .name("F1") + .type(GraphQLFloat) + .description("F1_description") + .valueLiteral(FloatValue.newFloatValue().value(4.56d).build()) // Retain deprecated for test coverage + .defaultValueLiteral(FloatValue.newFloatValue().value(1.23d).build()) + .build() + + inputValue = startingArg.getArgumentValue() // Retain deprecated for test coverage + resolvedValue = GraphQLArgument.getArgumentValue(startingArg) // Retain deprecated for test coverage + + inputDefaultValue = startingArg.getArgumentDefaultValue() + resolvedDefaultValue = GraphQLArgument.getArgumentDefaultValue(startingArg) + + then: + + inputValue.isLiteral() + (inputValue.getValue() as FloatValue).getValue().toDouble() == 4.56d + resolvedValue == 4.56d + + inputDefaultValue.isLiteral() + (inputDefaultValue.getValue() as FloatValue).getValue().toDouble() == 1.23d + resolvedDefaultValue == 1.23d + + when: + startingArg = GraphQLArgument.newArgument() + .name("F1") + .type(GraphQLFloat) + .description("F1_description") + .build() + + inputValue = startingArg.getArgumentValue() // Retain deprecated for test coverage + resolvedValue = GraphQLArgument.getArgumentValue(startingArg) // Retain deprecated for test coverage + + inputDefaultValue = startingArg.getArgumentDefaultValue() + resolvedDefaultValue = GraphQLArgument.getArgumentDefaultValue(startingArg) + + then: + + inputValue.isNotSet() + inputValue.getValue() == null + resolvedValue == null + + inputDefaultValue.isNotSet() + inputDefaultValue.getValue() == null + resolvedDefaultValue == null + } + + def "schema directive arguments are validated for programmatic schemas"() { + given: + def arg = newArgument().name("arg").type(GraphQLInt).valueProgrammatic(ImmutableKit.emptyMap()).build() // Retain for test coverage + def directive = mkDirective("cached", ARGUMENT_DEFINITION, arg) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .argument(arg) + .withDirective(directive) + .build() + when: + newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive) + .build() + then: + def e = thrown(InvalidSchemaException) + e.message.contains("Invalid argument 'arg' for applied directive of name 'cached'") + } + + def "applied directive arguments are validated for programmatic schemas"() { + given: + def arg = newArgument() + .name("arg") + .type(GraphQLNonNull.nonNull(GraphQLInt)) + .build() + def directive = mkDirective("cached", ARGUMENT_DEFINITION, arg) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .withAppliedDirective(directive.toAppliedDirective()) + .build() + when: + newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive) + .build() + then: + def e = thrown(InvalidSchemaException) + e.message.contains("Invalid argument 'arg' for applied directive of name 'cached'") + } + } diff --git a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy index 03e54230e4..e528f5619f 100644 --- a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy @@ -3,11 +3,15 @@ package graphql.schema import graphql.ExecutionInput import graphql.GraphQL import graphql.Scalars +import graphql.StarWarsSchema import graphql.TestUtil +import graphql.TrivialDataFetcher import graphql.TypeResolutionEnvironment import graphql.schema.visibility.GraphqlFieldVisibility import spock.lang.Specification +import static graphql.Scalars.GraphQLInt +import static graphql.Scalars.GraphQLString import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLObjectType.newObject import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring @@ -64,7 +68,12 @@ class GraphQLCodeRegistryTest extends Specification { } static GraphQLObjectType objectType(String name) { - return newObject().name(name).build() + return newObject() + .field(newFieldDefinition() + .name("field") + .type(GraphQLString)) + .name(name) + .build() } static GraphQLInterfaceType interfaceType(String name) { @@ -90,7 +99,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistryBuilder.getDataFetcher(objectType("parentType3"), field("fieldD")) as NamedDF).name == "D" (codeRegistryBuilder.getDataFetcher(objectType("parentType3"), field("fieldE")) as NamedDF).name == "E" - codeRegistryBuilder.getDataFetcher(objectType("parentType2"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistryBuilder.getDataFetcher(objectType("parentType2"), field("A")) instanceof SingletonPropertyDataFetcher // a default one when: def codeRegistry = codeRegistryBuilder.build() @@ -100,7 +109,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistry.getDataFetcher(objectType("parentType3"), field("fieldD")) as NamedDF).name == "D" (codeRegistry.getDataFetcher(objectType("parentType3"), field("fieldE")) as NamedDF).name == "E" - codeRegistry.getDataFetcher(objectType("parentType2"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistry.getDataFetcher(objectType("parentType2"), field("A")) instanceof SingletonPropertyDataFetcher // a default one } def "data fetchers can be retrieved using field coordinates"() { @@ -117,7 +126,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldD"), field("fieldD")) as NamedDF).name == "D" (codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldE"), field("fieldE")) as NamedDF).name == "E" - codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof SingletonPropertyDataFetcher // a default one when: def codeRegistry = codeRegistryBuilder.build() @@ -127,7 +136,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldD"), field("fieldD")) as NamedDF).name == "D" (codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldE"), field("fieldE")) as NamedDF).name == "E" - codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof SingletonPropertyDataFetcher // a default one } def "records type resolvers against unions and interfaces"() { @@ -159,21 +168,70 @@ class GraphQLCodeRegistryTest extends Specification { } def "schema delegates field visibility to code registry"() { - when: - def schema = GraphQLSchema.newSchema().fieldVisibility(new NamedFieldVisibility("B")).query(objectType("query")).build() + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .fieldVisibility(new NamedFieldVisibility("B")) + .build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(objectType("query")) + .build() then: - (schema.getFieldVisibility() as NamedFieldVisibility).name == "B" (schema.getCodeRegistry().getFieldVisibility() as NamedFieldVisibility).name == "B" } + def "SingletonPropertyDataFetcher is the default data fetcher used when no data fetcher is available"() { + + when: + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build() + def dataFetcher = codeRegistry.getDataFetcher(StarWarsSchema.humanType, StarWarsSchema.humanType.getFieldDefinition("name")) + then: + dataFetcher instanceof SingletonPropertyDataFetcher + } + + def "custom DF can be the default data fetcher used when no data fetcher is available"() { + + when: + + DataFetcher customDF = { env -> "hi" } + DataFetcherFactory customDataFetcherFactory = { env -> customDF } + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().defaultDataFetcher(customDataFetcherFactory).build() + def dataFetcher = codeRegistry.getDataFetcher(StarWarsSchema.humanType, StarWarsSchema.humanType.getFieldDefinition("name")) + then: + dataFetcher == customDF + dataFetcher.get(null) == "hi" + } + + def "default DF is used when no data fetcher is specified"() { + + def queryType = newObject().name("Query") + .field(newFieldDefinition().name("test").type(Scalars.GraphQLString)) + .build() + + DataFetcher customDF = { env -> "hi" } + DataFetcherFactory customDataFetcherFactory = { env -> customDF } + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().defaultDataFetcher(customDataFetcherFactory).build() + + def schema = GraphQLSchema.newSchema().query(queryType).codeRegistry(codeRegistry).build() + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(ExecutionInput.newExecutionInput().query('''query { test }''').build()) + + then: + er.errors.isEmpty() + er.data == [test: "hi"] + } + def "integration test that code registry gets asked for data fetchers"() { def queryType = newObject().name("Query") .field(newFieldDefinition().name("codeRegistryField").type(Scalars.GraphQLString)) .field(newFieldDefinition().name("nonCodeRegistryField").type(Scalars.GraphQLString) - // df comes from the field itself here - .dataFetcher(new NamedDF("nonCodeRegistryFieldValue"))) + // df comes from the field itself here + .dataFetcher(new NamedDF("nonCodeRegistryFieldValue"))) // Retain to test Field Definition DataFetcher .field(newFieldDefinition().name("neitherSpecified").type(Scalars.GraphQLString)) .build() @@ -194,8 +252,8 @@ class GraphQLCodeRegistryTest extends Specification { er.errors.isEmpty() er.data == [codeRegistryField: "codeRegistryFieldValue", nonCodeRegistryField: "nonCodeRegistryFieldValue", neitherSpecified: "neitherSpecifiedValue"] - // when nothing is specified then its a plain old PropertyDataFetcher - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof PropertyDataFetcher + // when nothing is specified then its a plain old SingletonPropertyDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof SingletonPropertyDataFetcher } @@ -211,7 +269,7 @@ class GraphQLCodeRegistryTest extends Specification { def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() .dataFetchers("Query", [codeRegistryField: new NamedDF("codeRegistryFieldValue")] - ) + ) def runtime = newRuntimeWiring().type(newTypeWiring("Query") .dataFetcher("nonCodeRegistryField", new NamedDF("nonCodeRegistryFieldValue"))) .codeRegistry(codeRegistry) @@ -230,7 +288,112 @@ class GraphQLCodeRegistryTest extends Specification { // when nothing is specified then its a plain old PropertyDataFetcher def queryType = schema.getObjectType("Query") - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof PropertyDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof SingletonPropertyDataFetcher + } + + def "will detect system versus user data fetchers"() { + DataFetcher dfSystem = { env -> "system" } + DataFetcher dfUser = { env -> "user" } + def systemFieldDef = newFieldDefinition().name("__system").type(GraphQLInt).build() + def userFieldDef = newFieldDefinition().name("field").type(GraphQLInt).build() + def systemCoords = FieldCoordinates.systemCoordinates(systemFieldDef.name) + def userCoords = FieldCoordinates.coordinates("User", userFieldDef.name) + + + when: + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(systemCoords, dfSystem) + .dataFetcher(userCoords, dfUser) + .build() + + then: + codeRegistry.hasDataFetcher(systemCoords) + codeRegistry.hasDataFetcher(userCoords) + + codeRegistry.getDataFetcher(systemCoords, systemFieldDef) == dfSystem + codeRegistry.getDataFetcher(userCoords, userFieldDef) == dfUser + } + + def "will put a data fetcher if absent"() { + DataFetcher dfSystem = { env -> "system" } + DataFetcher dfUser = { env -> "user" } + + DataFetcher dfSystem2 = { env -> "system2" } + DataFetcher dfUser2 = { env -> "user2" } + + def systemFieldDef = newFieldDefinition().name("__system").type(GraphQLInt).build() + def userFieldDef = newFieldDefinition().name("field").type(GraphQLInt).build() + def systemCoords = FieldCoordinates.systemCoordinates(systemFieldDef.name) + def userCoords = FieldCoordinates.coordinates("User", userFieldDef.name) + + + when: + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcherIfAbsent(systemCoords, dfSystem) + .dataFetcherIfAbsent(userCoords, dfUser) + .build() + + then: + + codeRegistry.getDataFetcher(systemCoords, systemFieldDef) == dfSystem + codeRegistry.getDataFetcher(userCoords, userFieldDef) == dfUser + + when: + codeRegistry = GraphQLCodeRegistry.newCodeRegistry(codeRegistry) + .dataFetcherIfAbsent(systemCoords, dfSystem2) + .dataFetcherIfAbsent(userCoords, dfUser2) + .build() + + then: + + codeRegistry.getDataFetcher(systemCoords, systemFieldDef) == dfSystem + codeRegistry.getDataFetcher(userCoords, userFieldDef) == dfUser + + } + + def "builder can track changes - internal methods"() { + DataFetcher dfSystem = { env -> "system" } + DataFetcher dfUser = { env -> "user" } + def systemFieldDef = newFieldDefinition().name("__system").type(GraphQLInt).build() + def userFieldDef = newFieldDefinition().name("field").type(GraphQLInt).build() + def systemCoords = FieldCoordinates.systemCoordinates(systemFieldDef.name) + def userCoords = FieldCoordinates.coordinates("User", userFieldDef.name) + when: + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + then: + !codeRegistry.hasChanged() + + when: + codeRegistry.dataFetcher(systemCoords, dfSystem) + codeRegistry.dataFetcher(userCoords, dfUser) + then: + codeRegistry.hasChanged() + + when: + codeRegistry.trackChanges() + then: + !codeRegistry.hasChanged() + + when: + codeRegistry.clearDataFetchers() + then: + codeRegistry.hasChanged() + + when: + def newCodeRegistry = GraphQLCodeRegistry.newCodeRegistry(codeRegistry.build()) + then: + !newCodeRegistry.hasChanged() + + when: + newCodeRegistry = GraphQLCodeRegistry.newCodeRegistry(codeRegistry.build()) + then: + !newCodeRegistry.hasChanged() + + when: + newCodeRegistry.dataFetcher(systemCoords, dfSystem as DataFetcher) + newCodeRegistry.dataFetcher(userCoords, dfUser as DataFetcher) + then: + newCodeRegistry.hasChanged() } } diff --git a/src/test/groovy/graphql/schema/GraphQLDirectiveTest.groovy b/src/test/groovy/graphql/schema/GraphQLDirectiveTest.groovy index cf530ed65f..4c9b8bd486 100644 --- a/src/test/groovy/graphql/schema/GraphQLDirectiveTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLDirectiveTest.groovy @@ -1,5 +1,9 @@ package graphql.schema +import graphql.AssertException +import graphql.TestUtil +import graphql.introspection.Introspection +import graphql.language.Node import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -10,6 +14,7 @@ import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINI import static graphql.introspection.Introspection.DirectiveLocation.INTERFACE import static graphql.introspection.Introspection.DirectiveLocation.OBJECT import static graphql.introspection.Introspection.DirectiveLocation.UNION +import static graphql.language.AstPrinter.printAst class GraphQLDirectiveTest extends Specification { @@ -48,4 +53,174 @@ class GraphQLDirectiveTest extends Specification { transformedDirective.getArgument("argInt").type == GraphQLBoolean // swapped transformedDirective.getArgument("argIntAdded").type == GraphQLInt } + + def "integration test of directives on elements"() { + def sdl = """ + directive @d1(arg : String) on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | + ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + directive @dr(arg : String) repeatable on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | + ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + + schema @d1 @dr(arg : "a1") @dr(arg : "a2") { + query : Query + } + + type Query @d1 @dr(arg : "a1") @dr(arg : "a2") { + field(arg : String @d1 @dr(arg : "a1") @dr(arg : "a2") ) : String @d1 @dr(arg : "a1") @dr(arg : "a2") + } + + input Input @d1 @dr(arg : "a1") @dr(arg : "a2") { + inputField : String @d1 @dr(arg : "a1") @dr(arg : "a2") + } + + + interface InterfaceType @d1 @dr(arg : "a1") @dr(arg : "a2") { + interfaceField : String @d1 @dr(arg : "a1") @dr(arg : "a2") + } + + type A { a : String } + + type B { b : String } + + union UnionType @d1 @dr(arg : "a1") @dr(arg : "a2") = A | B + + scalar ScalarType @d1 @dr(arg : "a1") @dr(arg : "a2") + + enum EnumType @d1 @dr(arg : "a1") @dr(arg : "a2") { + EnumVal @d1 @dr(arg : "a1") @dr(arg : "a2") + } + """ + + when: + def schema = TestUtil.schema(sdl) + then: + schema.getSchemaAppliedDirective("d1").name == "d1" + schema.getAllSchemaAppliedDirectivesByName().keySet() == ["d1", "dr"] as Set + + schema.getAllSchemaAppliedDirectivesByName()["d1"].size() == 1 + schema.getAllSchemaAppliedDirectivesByName()["dr"].size() == 2 + schema.getAllSchemaAppliedDirectivesByName()["dr"].collect({ printAst(it.getArgument("arg").argumentValue.value) }) == ['"a1"', '"a2"'] + + when: + def queryType = schema.getObjectType("Query") + + then: + assertDirectiveContainer(queryType) + + when: + def fieldDef = queryType.getFieldDefinition("field") + + then: + assertDirectiveContainer(fieldDef) + + when: + def arg = fieldDef.getArgument("arg") + + then: + assertDirectiveContainer(arg) + + when: + def inputType = schema.getType("Input") as GraphQLInputObjectType + + then: + assertDirectiveContainer(inputType) + + when: + def inputField = inputType.getField("inputField") + + then: + assertDirectiveContainer(inputField) + + + when: + def enumType = schema.getType("EnumType") as GraphQLEnumType + + then: + assertDirectiveContainer(enumType) + + when: + def enumVal = enumType.getValue("EnumVal") + + then: + assertDirectiveContainer(enumVal) + + when: + def interfaceType = schema.getType("InterfaceType") as GraphQLInterfaceType + + then: + assertDirectiveContainer(interfaceType) + + when: + def interfaceField = interfaceType.getFieldDefinition("interfaceField") + + then: + assertDirectiveContainer(interfaceField) + + when: + def unionType = schema.getType("UnionType") as GraphQLUnionType + + then: + assertDirectiveContainer(unionType) + + + when: + def scalarType = schema.getType("ScalarType") as GraphQLScalarType + + then: + assertDirectiveContainer(scalarType) + } + + def "throws an error on missing required properties"() { + given: + def validDirective = GraphQLDirective.newDirective() + .name("dir") + .validLocation(Introspection.DirectiveLocation.SCALAR) + .build() + + when: + validDirective.transform { it.name(null) } + + then: + def e = thrown(AssertException) + e.message.contains("Name must be non-null, non-empty") + + when: + validDirective.transform { it.replaceArguments(null) } + + then: + def e2 = thrown(AssertException) + e2.message.contains("arguments must not be null") + + when: + validDirective.transform { it.clearValidLocations() } + + then: + def e3 = thrown(AssertException) + e3.message.contains("locations can't be empty") + } + + + static boolean assertDirectiveContainer(GraphQLDirectiveContainer container) { + assert container.hasDirective("d1") // Retain for test coverage + assert container.hasAppliedDirective("d1") + assert container.hasAppliedDirective("dr") + assert !container.hasAppliedDirective("non existent") + assert container.getDirectives().collect({ it.name }) == ["d1", "dr", "dr"] // Retain for test coverage + assert container.getAppliedDirectives().collect({ it.name }) == ["d1", "dr", "dr"] + assert container.getAppliedDirective("d1").name == "d1" + assert container.getDirectivesByName().keySet() == ["d1"] as Set // Retain for test coverage, there is no equivalent non-repeatable directive method + + assert container.getAllDirectivesByName().keySet() == ["d1", "dr"] as Set // Retain for test coverage + assert container.getAllAppliedDirectivesByName().keySet() == ["d1", "dr"] as Set + assert container.getAllAppliedDirectivesByName()["d1"].size() == 1 + assert container.getAllAppliedDirectivesByName()["dr"].size() == 2 + + assert container.getAppliedDirectives("d1").size() == 1 + assert container.getAppliedDirectives("dr").size() == 2 + assert container.getAppliedDirectives("dr").collect({ printAst(it.getArgument("arg").argumentValue.value as Node) }) == ['"a1"', '"a2"'] + + return true + } } diff --git a/src/test/groovy/graphql/schema/GraphQLEnumTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLEnumTypeTest.groovy index cb832d323f..d717e607a7 100644 --- a/src/test/groovy/graphql/schema/GraphQLEnumTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLEnumTypeTest.groovy @@ -1,6 +1,7 @@ package graphql.schema import graphql.AssertException +import graphql.GraphQLContext import graphql.language.EnumValue import graphql.language.StringValue import spock.lang.Specification @@ -19,32 +20,52 @@ class GraphQLEnumTypeTest extends Specification { def "parse throws exception for unknown value"() { when: - enumType.parseValue("UNKNOWN") + enumType.parseValue("UNKNOWN", GraphQLContext.default, Locale.default) then: thrown(CoercingParseValueException) } + def "parse throws exception for unknown value with deprecated method"() { + when: + enumType.parseValue("UNKNOWN") // Retain for test coverage + + then: + thrown(CoercingParseValueException) + } def "parse value return value for the name"() { expect: - enumType.parseValue("NAME") == 42 + enumType.parseValue("NAME", GraphQLContext.default, Locale.default) == 42 } def "serialize returns name for value"() { + expect: + enumType.serialize(42, GraphQLContext.default, Locale.default) == "NAME" + } + + def "serialize returns name for value with deprecated method"() { expect: enumType.serialize(42) == "NAME" } def "serialize throws exception for unknown value"() { when: - enumType.serialize(12) + enumType.serialize(12, GraphQLContext.default, Locale.default) then: thrown(CoercingSerializeException) } - def "parseLiteral return null for invalid input"() { + when: + enumType.parseLiteral(StringValue.newStringValue("foo").build(), + GraphQLContext.default, + Locale.default) + then: + thrown(CoercingParseLiteralException) + } + + def "parseLiteral return null for invalid input with deprecated method"() { when: enumType.parseLiteral(StringValue.newStringValue("foo").build()) then: @@ -53,17 +74,20 @@ class GraphQLEnumTypeTest extends Specification { def "parseLiteral return null for invalid enum name"() { when: - enumType.parseLiteral(EnumValue.newEnumValue("NOT_NAME").build()) + enumType.parseLiteral(EnumValue.newEnumValue("NOT_NAME").build(), + GraphQLContext.default, + Locale.default) then: thrown(CoercingParseLiteralException) } def "parseLiteral returns value for 'NAME'"() { expect: - enumType.parseLiteral(EnumValue.newEnumValue("NAME").build()) == 42 + enumType.parseLiteral(EnumValue.newEnumValue("NAME").build(), + GraphQLContext.default, + Locale.default) == 42 } - def "null values are not allowed"() { when: newEnum().name("AnotherTestEnum") @@ -72,7 +96,6 @@ class GraphQLEnumTypeTest extends Specification { thrown(AssertException) } - def "duplicate value definition overwrites"() { when: def enumType = newEnum().name("AnotherTestEnum") @@ -96,7 +119,7 @@ class GraphQLEnumTypeTest extends Specification { .build() when: - def serialized = enumType.serialize(Episode.EMPIRE) + def serialized = enumType.serialize(Episode.EMPIRE, GraphQLContext.default, Locale.default) then: serialized == "EMPIRE" @@ -111,7 +134,7 @@ class GraphQLEnumTypeTest extends Specification { .build() when: - def serialized = enumType.serialize(Episode.NEWHOPE) + def serialized = enumType.serialize(Episode.NEWHOPE, GraphQLContext.default, Locale.default) then: serialized == "NEWHOPE" @@ -128,7 +151,7 @@ class GraphQLEnumTypeTest extends Specification { String stringInput = Episode.NEWHOPE.toString() when: - def serialized = enumType.serialize(stringInput) + def serialized = enumType.serialize(stringInput, GraphQLContext.default, Locale.default) then: serialized == "NEWHOPE" diff --git a/src/test/groovy/graphql/schema/GraphQLEnumValueDefinitionTest.groovy b/src/test/groovy/graphql/schema/GraphQLEnumValueDefinitionTest.groovy index 8f6a4145bc..0a755a9f3c 100644 --- a/src/test/groovy/graphql/schema/GraphQLEnumValueDefinitionTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLEnumValueDefinitionTest.groovy @@ -1,9 +1,10 @@ package graphql.schema +import static graphql.introspection.Introspection.DirectiveLocation import spock.lang.Specification -import static graphql.schema.GraphQLDirective.newDirective import static graphql.schema.GraphQLEnumValueDefinition.newEnumValueDefinition +import static graphql.TestUtil.mkDirective class GraphQLEnumValueDefinitionTest extends Specification { def "object can be transformed"() { @@ -11,15 +12,14 @@ class GraphQLEnumValueDefinitionTest extends Specification { def startEnumValue = newEnumValueDefinition().name("EV1") .description("EV1_description") .value("A") - .withDirective(newDirective().name("directive1")) + .withDirective(mkDirective("directive1", DirectiveLocation.ENUM_VALUE)) .build() when: def transformedEnumValue = startEnumValue.transform({ it .name("EV2") .value("X") - .withDirective(newDirective().name("directive2")) - + .withDirective(mkDirective("directive2", DirectiveLocation.ENUM_VALUE)) }) then: diff --git a/src/test/groovy/graphql/schema/GraphQLFieldDefinitionTest.groovy b/src/test/groovy/graphql/schema/GraphQLFieldDefinitionTest.groovy index 5c5854eb48..46a5c3c1e5 100644 --- a/src/test/groovy/graphql/schema/GraphQLFieldDefinitionTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLFieldDefinitionTest.groovy @@ -1,21 +1,27 @@ package graphql.schema import graphql.AssertException +import graphql.TestUtil +import graphql.introspection.Introspection +import graphql.schema.idl.SchemaPrinter import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLFloat import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString +import static graphql.TestUtil.mockArguments +import static graphql.TestUtil.mkDirective +import static graphql.schema.DefaultGraphqlTypeComparatorRegistry.newComparators import static graphql.schema.GraphQLArgument.newArgument -import static graphql.schema.GraphQLDirective.newDirective import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.idl.SchemaPrinter.Options.defaultOptions class GraphQLFieldDefinitionTest extends Specification { def "dataFetcher can't be null"() { when: - newFieldDefinition().dataFetcher(null) + newFieldDefinition().dataFetcher(null) // Retain for test coverage then: def exception = thrown(AssertException) exception.getMessage().contains("dataFetcher") @@ -30,8 +36,8 @@ class GraphQLFieldDefinitionTest extends Specification { .deprecate("F1_deprecated") .argument(newArgument().name("argStr").type(GraphQLString)) .argument(newArgument().name("argInt").type(GraphQLInt)) - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive2")) + .withDirective(mkDirective("directive1", Introspection.DirectiveLocation.FIELD_DEFINITION)) + .withDirective(mkDirective("directive2", Introspection.DirectiveLocation.FIELD_DEFINITION)) .build() when: @@ -42,14 +48,10 @@ class GraphQLFieldDefinitionTest extends Specification { .argument(newArgument().name("argStr").type(GraphQLString)) .argument(newArgument().name("argInt").type(GraphQLBoolean)) .argument(newArgument().name("argIntAdded").type(GraphQLInt)) - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive3")) - + .withDirective(mkDirective("directive3", Introspection.DirectiveLocation.FIELD_DEFINITION)) }) - then: - startingField.name == "F1" startingField.type == GraphQLFloat startingField.description == "F1_description" @@ -78,4 +80,19 @@ class GraphQLFieldDefinitionTest extends Specification { transformedField.getDirective("directive2") != null transformedField.getDirective("directive3") != null } + + def "test deprecated argument builder for list"() { + given: + def field = newFieldDefinition().name("field").type(GraphQLInt).argument(mockArguments("a", "bb")).build() // Retain for test coverage + + when: + def registry = newComparators() + .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .build() + def options = defaultOptions().setComparators(registry) + def printer = new SchemaPrinter(options) + + then: + printer.argsString(GraphQLFieldDefinition.class, field.arguments) == '''(bb: Int, a: Int)''' + } } diff --git a/src/test/groovy/graphql/schema/GraphQLInputObjectFieldTest.groovy b/src/test/groovy/graphql/schema/GraphQLInputObjectFieldTest.groovy index 1e4eb3de8e..67e3611442 100644 --- a/src/test/groovy/graphql/schema/GraphQLInputObjectFieldTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLInputObjectFieldTest.groovy @@ -1,11 +1,13 @@ package graphql.schema +import graphql.introspection.Introspection +import graphql.language.FloatValue import spock.lang.Specification import static graphql.Scalars.GraphQLFloat import static graphql.Scalars.GraphQLInt -import static graphql.schema.GraphQLDirective.newDirective import static graphql.schema.GraphQLInputObjectField.newInputObjectField +import static graphql.TestUtil.mkDirective class GraphQLInputObjectFieldTest extends Specification { @@ -15,25 +17,25 @@ class GraphQLInputObjectFieldTest extends Specification { .name("F1") .type(GraphQLFloat) .description("F1_description") - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive2")) + .withDirective(mkDirective("directive1", Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION)) + .withDirective(mkDirective("directive2", Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION)) + .deprecate("No longer useful") .build() when: def transformedField = startingField.transform({ builder -> builder.name("F2") .type(GraphQLInt) - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive3")) - + .deprecate(null) + .withDirective(mkDirective("directive3", Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION)) }) - then: - startingField.name == "F1" startingField.type == GraphQLFloat startingField.description == "F1_description" + startingField.isDeprecated() + startingField.getDeprecationReason() == "No longer useful" startingField.getDirectives().size() == 2 startingField.getDirective("directive1") != null @@ -43,9 +45,58 @@ class GraphQLInputObjectFieldTest extends Specification { transformedField.type == GraphQLInt transformedField.description == "F1_description" // left alone + !transformedField.isDeprecated() + transformedField.getDeprecationReason() == null + transformedField.getDirectives().size() == 3 transformedField.getDirective("directive1") != null transformedField.getDirective("directive2") != null transformedField.getDirective("directive3") != null } + + def "can get default values statically"() { + when: + def startingField = newInputObjectField() + .name("F1") + .type(GraphQLFloat) + .description("F1_description") + .defaultValueProgrammatic(1.23d) + .build() + def inputValue = startingField.getInputFieldDefaultValue() + def resolvedValue = GraphQLInputObjectField.getInputFieldDefaultValue(startingField) + + then: + inputValue.isExternal() + inputValue.getValue() == 1.23d + resolvedValue == 1.23d + + when: + startingField = newInputObjectField() + .name("F1") + .type(GraphQLFloat) + .description("F1_description") + .defaultValueLiteral(FloatValue.newFloatValue().value(1.23d).build()) + .build() + inputValue = startingField.getInputFieldDefaultValue() + resolvedValue = GraphQLInputObjectField.getInputFieldDefaultValue(startingField) + + then: + inputValue.isLiteral() + (inputValue.getValue() as FloatValue).getValue().toDouble() == 1.23d + resolvedValue == 1.23d + + when: " we have no values " + startingField = newInputObjectField() + .name("F1") + .type(GraphQLFloat) + .description("F1_description") + .build() + inputValue = startingField.getInputFieldDefaultValue() + resolvedValue = GraphQLInputObjectField.getInputFieldDefaultValue(startingField) + + then: + inputValue.isNotSet() + inputValue.getValue() == null + resolvedValue == null + } } diff --git a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy index f8f3358b12..9ad43412bf 100644 --- a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy @@ -1,6 +1,13 @@ package graphql.schema -import graphql.AssertException +import graphql.Directives +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.GraphQLContext +import graphql.StarWarsSchema +import graphql.TestUtil +import graphql.language.ObjectValue +import graphql.validation.ValidationUtil import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -8,22 +15,10 @@ import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString import static graphql.schema.GraphQLInputObjectField.newInputObjectField import static graphql.schema.GraphQLInputObjectType.newInputObject +import static graphql.schema.GraphQLNonNull.nonNull class GraphQLInputObjectTypeTest extends Specification { - def "duplicate field definition fails"() { - when: - // preserve old constructor behavior test - new GraphQLInputObjectType("TestInputObjectType", "description", - [ - newInputObjectField().name("NAME").type(GraphQLString).build(), - newInputObjectField().name("NAME").type(GraphQLString).build() - ]) - then: - thrown(AssertException) - } - - def "duplicate field definition overwrites"() { when: def inputObjectType = newInputObject().name("TestInputObjectType") @@ -68,4 +63,122 @@ class GraphQLInputObjectTypeTest extends Specification { transformedInputType.getFieldDefinition("Str").getType() == GraphQLBoolean } + def "deprecated default value builder works"() { + given: + def graphQLContext = GraphQLContext.getDefault() + def schema = GraphQLSchema.newSchema() + .query(StarWarsSchema.queryType) + .codeRegistry(StarWarsSchema.codeRegistry) + .build() + def validationUtil = new ValidationUtil() + def inputObjectType = GraphQLInputObjectType.newInputObject() + .name("inputObjectType") + .field(GraphQLInputObjectField.newInputObjectField() + .name("hello") + .type(nonNull(GraphQLString)) + .defaultValue("default")) // Retain deprecated builder for test coverage + .build() + def objectValue = ObjectValue.newObjectValue() + + expect: + validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema, graphQLContext, Locale.ENGLISH) + } + + def "can detect one of support"() { + when: + def inputObjectType = newInputObject().name("TestInputObjectType") + .field(newInputObjectField().name("NAME").type(GraphQLInt)) + .build() + then: + !inputObjectType.isOneOf() + + when: + inputObjectType = newInputObject().name("TestInputObjectType") + .field(newInputObjectField().name("NAME").type(GraphQLInt)) + .withDirective(Directives.OneOfDirective) + .build() + then: + inputObjectType.isOneOf() + + when: + inputObjectType = newInputObject().name("TestInputObjectType") + .field(newInputObjectField().name("NAME").type(GraphQLInt)) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .build() + then: + inputObjectType.isOneOf() + } + + def "e2e test of oneOf support"() { + def sdl = ''' + type Query { + f(arg : OneOf) : [KV] + } + + type KV { + key : String + value : String + } + + input OneOf @oneOf { + a : String + b : Int + } + ''' + + DataFetcher df = { DataFetchingEnvironment env -> + Map arg = env.getArgument("arg") + + def l = [] + for (Map.Entry entry : arg.entrySet()) { + l.add(["key": entry.getKey(), "value": String.valueOf(entry.getValue())]) + } + return l + } + + def graphQLSchema = TestUtil.schema(sdl, [Query: [f: df]]) + def graphQL = GraphQL.newGraphQL(graphQLSchema).build() + + when: + def er = graphQL.execute('query q { f( arg : {a : "abc"}) { key value }}') + def l = (er.data["f"] as List) + then: + er.errors.isEmpty() + l.size() == 1 + l[0]["key"] == "a" + l[0]["value"] == "abc" + + when: + er = graphQL.execute('query q { f( arg : {b : 123}) { key value }}') + l = (er.data["f"] as List) + + then: + er.errors.isEmpty() + l.size() == 1 + l[0]["key"] == "b" + l[0]["value"] == "123" + + when: + er = graphQL.execute('query q { f( arg : {a : "abc", b : 123}) { key value }}') + then: + !er.errors.isEmpty() + // caught during early validation + er.errors[0].message == "Validation error (WrongType@[f]) : Exactly one key must be specified for OneOf type 'OneOf'." + + when: + def ei = ExecutionInput.newExecutionInput('query q($var : OneOf) { f( arg : $var) { key value }}').variables([var: [a: "abc", b: 123]]).build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message == "Exactly one key must be specified for OneOf type 'OneOf'." + + when: + ei = ExecutionInput.newExecutionInput('query q($var : OneOf) { f( arg : $var) { key value }}').variables([var: [a: null]]).build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message == "OneOf type field 'OneOf.a' must be non-null." + + // lots more covered in unit tests + } } diff --git a/src/test/groovy/graphql/schema/GraphQLInterfaceTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLInterfaceTypeTest.groovy index 670a86188d..b6c4273ae3 100644 --- a/src/test/groovy/graphql/schema/GraphQLInterfaceTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLInterfaceTypeTest.groovy @@ -1,26 +1,33 @@ package graphql.schema -import graphql.AssertException +import graphql.util.TraversalControl +import graphql.util.TraverserContext import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString +import static graphql.schema.GraphQLCodeRegistry.newCodeRegistry import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLInterfaceType.newInterface +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema +import static graphql.schema.GraphQLTypeReference.typeRef class GraphQLInterfaceTypeTest extends Specification { - def "duplicate field definition fails"() { + def "duplicate field definition overwrites existing value"() { when: - // preserve old constructor behavior test - new GraphQLInterfaceType("TestInputObjectType", "description", - [ + def interfaceType = newInterface().name("TestInterfaceType") + .description("description") + .fields([ newFieldDefinition().name("NAME").type(GraphQLString).build(), - newFieldDefinition().name("NAME").type(GraphQLString).build() - ], new TypeResolverProxy()) + newFieldDefinition().name("NAME").type(GraphQLInt).build() + ]) + .build() then: - thrown(AssertException) + interfaceType.getName() == "TestInterfaceType" + interfaceType.getFieldDefinition("NAME").getType() == GraphQLInt } def "builder can change existing object into a new one"() { @@ -29,7 +36,6 @@ class GraphQLInterfaceTypeTest extends Specification { .description("StartingDescription") .field(newFieldDefinition().name("Str").type(GraphQLString)) .field(newFieldDefinition().name("Int").type(GraphQLInt)) - .typeResolver(new TypeResolverProxy()) .build() when: @@ -57,4 +63,61 @@ class GraphQLInterfaceTypeTest extends Specification { objectType2.getFieldDefinition("Str").getType() == GraphQLBoolean } + def "schema transformer accepts interface with type reference"() { + given: + def iFace = newInterface().name("iFace") + .field(builder -> builder.type(GraphQLString).name("field")) + .withInterface(typeRef("iFace2")) + .build() + + def iFace2 = newInterface().name("iFace2") + .field(builder -> builder.type(GraphQLString).name("field")) + .build() + + def impl = newObject().name("impl") + .field(builder -> builder.type(GraphQLString).name("field")) + .withInterfaces(typeRef("iFace")) + .withInterfaces(typeRef("iFace2")) + .build() + + def codeRegBuilder = newCodeRegistry().typeResolver(iFace, env -> impl) + .typeResolver(iFace2, env -> impl) + + def schema = newSchema() + .codeRegistry(codeRegBuilder.build()) + .additionalType(iFace).additionalType(iFace2) + .query(newObject() + .name("test") + .field(builder -> builder.name("iFaceField").type(impl)) + ).build() + + when: + SchemaTransformer.transformSchema(schema, new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + GraphQLFieldDefinition transform = node.transform( + builder -> builder.argument(builder1 -> builder1.name("arg").type(GraphQLString))) + changeNode(context, transform) + return super.visitGraphQLFieldDefinition(node, context) + } + }) + + then: + noExceptionThrown() + } + + def "deprecated typeResolver builder works"() { + when: + def interfaceType = newInterface().name("TestInterfaceType") + .description("description") + .fields([ + newFieldDefinition().name("NAME").type(GraphQLString).build(), + newFieldDefinition().name("NAME").type(GraphQLInt).build() + ]) + .typeResolver(new TypeResolverProxy()) // Retain for test coverage + .build() + then: + interfaceType.getName() == "TestInterfaceType" + interfaceType.getFieldDefinition("NAME").getType() == GraphQLInt + } } diff --git a/src/test/groovy/graphql/schema/GraphQLObjectTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLObjectTypeTest.groovy index 7a29451272..5a79fc97e7 100644 --- a/src/test/groovy/graphql/schema/GraphQLObjectTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLObjectTypeTest.groovy @@ -1,6 +1,5 @@ package graphql.schema -import graphql.AssertException import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -11,18 +10,6 @@ import static graphql.schema.GraphQLObjectType.newObject class GraphQLObjectTypeTest extends Specification { - def "duplicate field definition fails"() { - when: - // preserve old constructor behavior test - new GraphQLObjectType("TestObjectType", "description", - [ - newFieldDefinition().name("NAME").type(GraphQLString).build(), - newFieldDefinition().name("NAME").type(GraphQLString).build() - ], []) - then: - thrown(AssertException) - } - def "duplicate field definition overwrites existing value"() { when: def objectType = newObject().name("TestObjectType") @@ -65,5 +52,10 @@ class GraphQLObjectTypeTest extends Specification { objectType2.getFieldDefinition("AddedInt").getType() == GraphQLInt objectType2.getFieldDefinition("Int").getType() == GraphQLInt objectType2.getFieldDefinition("Str").getType() == GraphQLBoolean + + // getFields shortcuts work + objectType.getField("Int").getType() == GraphQLInt + objectType.getField("Str").getType() == GraphQLString + objectType.getFields().size() == 2 } } diff --git a/src/test/groovy/graphql/schema/GraphQLScalarTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLScalarTypeTest.groovy index 5a4f0ad286..100269838d 100644 --- a/src/test/groovy/graphql/schema/GraphQLScalarTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLScalarTypeTest.groovy @@ -1,8 +1,9 @@ package graphql.schema +import graphql.introspection.Introspection import spock.lang.Specification -import static graphql.schema.GraphQLDirective.newDirective +import static graphql.TestUtil.mkDirective class GraphQLScalarTypeTest extends Specification { Coercing coercing = new Coercing() { @@ -28,15 +29,14 @@ class GraphQLScalarTypeTest extends Specification { .name("S1") .description("S1_description") .coercing(coercing) - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive2")) + .withDirective(mkDirective("directive1", Introspection.DirectiveLocation.SCALAR)) + .withDirective(mkDirective("directive2", Introspection.DirectiveLocation.SCALAR)) .build() when: def transformedScalar = startingScalar.transform({ builder -> builder.name("S2") .description("S2_description") - .withDirective(newDirective().name("directive1")) - .withDirective(newDirective().name("directive3")) + .withDirective(mkDirective("directive3", Introspection.DirectiveLocation.SCALAR)) }) then: @@ -56,6 +56,5 @@ class GraphQLScalarTypeTest extends Specification { transformedScalar.getDirective("directive1") != null transformedScalar.getDirective("directive2") != null transformedScalar.getDirective("directive3") != null - } } diff --git a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy index eaccea6018..73a04346f2 100644 --- a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy @@ -5,8 +5,12 @@ import graphql.Directives import graphql.ExecutionInput import graphql.GraphQL import graphql.TestUtil +import graphql.language.Directive +import graphql.language.SchemaExtensionDefinition import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.TypeRuntimeWiring +import graphql.util.TraversalControl +import graphql.util.TraverserContext import spock.lang.Specification import java.util.function.UnaryOperator @@ -16,8 +20,14 @@ import static graphql.StarWarsSchema.characterInterface import static graphql.StarWarsSchema.droidType import static graphql.StarWarsSchema.humanType import static graphql.StarWarsSchema.starWarsSchema +import static graphql.schema.GraphQLArgument.newArgument import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLInputObjectField.newInputObjectField +import static graphql.schema.GraphQLInputObjectType.newInputObject +import static graphql.schema.GraphQLNonNull.nonNull import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLTypeReference.typeRef +import static java.util.stream.Collectors.toList class GraphQLSchemaTest extends Specification { @@ -63,15 +73,15 @@ class GraphQLSchemaTest extends Specification { RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() .type("Query", { wiring -> - wiring.dataFetcher("foo", { env -> - Map map = new HashMap<>() - map.put("id", "abc") - return map - }) - } as UnaryOperator) + wiring.dataFetcher("foo", { env -> + Map map = new HashMap<>() + map.put("id", "abc") + return map + }) + } as UnaryOperator) .type("Node", { wiring -> - wiring.typeResolver({ env -> (GraphQLObjectType) env.getSchema().getType("Foo") }) - } as UnaryOperator) + wiring.typeResolver({ env -> (GraphQLObjectType) env.getSchema().getType("Foo") }) + } as UnaryOperator) .build() def existingSchema = TestUtil.schema(idl, runtimeWiring) @@ -84,7 +94,7 @@ class GraphQLSchemaTest extends Specification { assert 0 == runQuery(schema).getErrors().size() } - def runQuery(GraphQLSchema schema) { + static def runQuery(GraphQLSchema schema) { GraphQL graphQL = GraphQL.newGraphQL(schema) .build() @@ -97,31 +107,46 @@ class GraphQLSchemaTest extends Specification { .join() } - def basicSchemaBuilder() { + static def basicSchemaBuilder() { + def queryTypeName = "QueryType" + def fooCoordinates = FieldCoordinates.coordinates(queryTypeName, "hero") + DataFetcher basicDataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return null + } + } + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, basicDataFetcher) + .build() + GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(newObject() - .name("QueryType") - .field(newFieldDefinition() - .name("hero") - .type(GraphQLString) - .dataFetcher({ env -> null }))) - } - - def additionalType1 = newObject() - .name("Additional1") - .field(newFieldDefinition() - .name("field") - .type(GraphQLString) - .dataFetcher({ env -> null })) - .build() - - def additionalType2 = newObject() - .name("Additional2") - .field(newFieldDefinition() - .name("field") - .type(GraphQLString) - .dataFetcher({ env -> null })) - .build() + .name("QueryType") + .field(newFieldDefinition() + .name("hero") + .type(GraphQLString) + )) + } + + def "schema builder copies extension definitions"() { + setup: + def schemaBuilder = basicSchemaBuilder() + def newDirective = Directive.newDirective().name("pizza").build() + def extension = SchemaExtensionDefinition.newSchemaExtensionDefinition().directive(newDirective).build() + def oldSchema = schemaBuilder.extensionDefinitions([extension]).build() + + when: + def newSchema = GraphQLSchema.newSchema(oldSchema).build() + + then: + oldSchema.extensionDefinitions.size() == 1 + newSchema.extensionDefinitions.size() == 1 + ((Directive) oldSchema.extensionDefinitions.first().getDirectives().first()).name == "pizza" + ((Directive) newSchema.extensionDefinitions.first().getDirectives().first()).name == "pizza" + } def "clear directives works as expected"() { setup: @@ -130,25 +155,25 @@ class GraphQLSchemaTest extends Specification { when: "no additional directives have been specified" def schema = schemaBuilder.build() then: - schema.directives.size() == 3 + schema.directives.size() == 7 when: "clear directives is called" schema = schemaBuilder.clearDirectives().build() then: - schema.directives.size() == 1 // @deprecated is ALWAYS added if missing + schema.directives.size() == 5 // @deprecated and @specifiedBy and @oneOf et al is ALWAYS added if missing when: "clear directives is called with more directives" schema = schemaBuilder.clearDirectives().additionalDirective(Directives.SkipDirective).build() then: - schema.directives.size() == 2 + schema.directives.size() == 6 when: "the schema is transformed, things are copied" - schema = schema.transform({ bldr -> bldr.additionalDirective(Directives.IncludeDirective) }) + schema = schema.transform({ builder -> builder.additionalDirective(Directives.IncludeDirective) }) then: - schema.directives.size() == 3 + schema.directives.size() == 7 } - def "clear additional types works as expected"() { + def "clear additional types works as expected"() { setup: def schemaBuilder = basicSchemaBuilder() @@ -163,13 +188,379 @@ class GraphQLSchemaTest extends Specification { schema.additionalTypes.empty when: "clear types is called with additional types" - schema = schemaBuilder.clearAdditionalTypes().additionalType(additionalType1).build() + def additional1TypeName = "Additional1" + def additional2TypeName = "Additional2" + def fieldName = "field" + def additionalType1 = newObject() + .name(additional1TypeName) + .field(newFieldDefinition() + .name(fieldName) + .type(GraphQLString)) + .build() + def additionalType2 = newObject() + .name("Additional2") + .field(newFieldDefinition() + .name(fieldName) + .type(GraphQLString)) + .build() + + def additional1Coordinates = FieldCoordinates.coordinates(additionalType1, fieldName) + DataFetcher basicDataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return null + } + } + + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(additional1Coordinates, basicDataFetcher) + .build() + + schema = schemaBuilder + .clearAdditionalTypes() + .additionalType(additionalType1) + .codeRegistry(codeRegistry) + .build() + then: schema.additionalTypes.size() == 1 when: "the schema is transformed, things are copied" - schema = schema.transform({ bldr -> bldr.additionalType(additionalType2) }) + def additional2Coordinates = FieldCoordinates.coordinates(additional2TypeName, fieldName) + codeRegistry = codeRegistry.transform({ builder -> builder.dataFetcher(additional2Coordinates, basicDataFetcher) }) + schema = schema.transform({ builder -> builder.additionalType(additionalType2).codeRegistry(codeRegistry) }) then: schema.additionalTypes.size() == 2 } + + def "getType works as expected"() { + def sdl = ''' + type Query { + field1 : Pet + field2 : UnionType + } + + interface Pet { + name : String + } + + type Dog implements Pet { + name : String + } + type Cat implements Pet { + name : String + } + + union UnionType = Cat | Dog + ''' + + when: + def schema = TestUtil.schema(sdl) + + then: + schema.containsType("Pet") + schema.containsType("Dog") + !schema.containsType("Elephant") + + schema.getType("Pet") != null + + GraphQLInterfaceType petType = schema.getTypeAs("Pet") + petType.getName() == "Pet" + + GraphQLObjectType dogType = schema.getTypeAs("Dog") + dogType.getName() == "Dog" + } + + def "issue with type references when original type is transformed away"() { + def sdl = ''' + type Query { + # The b fields leads to the addition of the B type (actual definition) + b: B + # When we filter out the `b` field, we can still access B through A + # however they are GraphQLTypeReferences and not an actual GraphQL Object + a: A + } + + type A { + b: B + } + + type B { + a: A + b: B + } + ''' + + when: + def schema = TestUtil.schema(sdl) + // When field `b` is filtered out + List fields = schema.queryType.fieldDefinitions.stream().filter({ + it.name == "a" + }).collect(toList()) + // And we transform the schema's query root, the schema building + // will throw because type B won't be in the type map anymore, since + // there are no more actual B object types in the schema tree. + def transformed = schema.transform({ + it.query(schema.queryType.transform({ + it.replaceFields(fields) + })) + }) + + then: + transformed.containsType("B") + + } + + def "can change types via SchemaTransformer and visitor"() { + def sdl = ''' + type Query { + b: B + a: A + } + + type A { + b: B + } + + type B { + a: A + b: B + } + ''' + + when: + def schema = TestUtil.schema(sdl) + + GraphQLTypeVisitorStub visitor = new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + if (objectType.getName() == "Query") { + def queryType = objectType + List fields = queryType.fieldDefinitions.stream().filter({ + it.name == "a" + }).collect(toList()) + + GraphQLObjectType newObjectType = queryType.transform({ + it.replaceFields(fields) + }) + + return changeNode(context, newObjectType) + } + return TraversalControl.CONTINUE + } + } + GraphQLSchema transformedSchema = SchemaTransformer.transformSchema(schema, visitor) + + then: + transformedSchema.containsType("B") + } + + def "fields edited from type references should still built valid schemas"() { + def typeB = newObject().name("B") + .field(newFieldDefinition().name("a").type(typeRef("A"))) + .field(newFieldDefinition().name("b").type(typeRef("B"))) + .build() + + + def typeAFieldB = newFieldDefinition().name("b").type(typeRef("B")).build() + // at the line above typeB is never strongly referenced + // and this simulates an edit situation that wont happen with direct java declaration + // but where the type reference is replaced to an actual but its the ONLY direct reference + // to that type`` + typeAFieldB.replaceType(typeB) + + def typeA = newObject().name("A") + .field(typeAFieldB) + .build() + + // + // the same pattern above applies ot other replaceable types like arguments and input fields + def inputTypeY = newInputObject().name("InputTypeY") + .field(newInputObjectField().name("in2").type(GraphQLString)) + .build() + + def inputFieldOfY = newInputObjectField().name("inY").type(typeRef("InputTypeY")).build() + // only reference to InputTypeY + inputFieldOfY.replaceType(inputTypeY) + + def inputTypeZ = newInputObject().name("InputTypeZ") + .field(inputFieldOfY) + .build() + + def inputTypeX = newInputObject().name("InputTypeX") + .field(newInputObjectField().name("inX").type(GraphQLString)) + .build() + + GraphQLArgument argOfX = newArgument().name("argOfX").type(typeRef("InputTypeX")).build() + // only reference to InputTypeX + argOfX.replaceType(inputTypeX) + + GraphQLArgument argOfZ = newArgument().name("argOfZ").type(inputTypeZ).build() + + def typeC = newObject().name("C") + .field(newFieldDefinition().name("f1").type(GraphQLString).argument(argOfX)) + .field(newFieldDefinition().name("f2").type(GraphQLString).argument(argOfZ)) + .build() + + def queryType = newObject().name("Query") + .field(newFieldDefinition().name("a").type(typeA)) + .field(newFieldDefinition().name("c").type(typeC)) + .build() + + when: + def schema = GraphQLSchema.newSchema().query(queryType).build() + then: + schema.getType("A") != null + schema.getType("B") != null + schema.getType("InputTypeX") != null + schema.getType("InputTypeY") != null + schema.getType("InputTypeZ") != null + } + + def "list and non nulls work when direct references are edited"() { + + def typeX = newObject().name("TypeX") + .field(newFieldDefinition().name("f1").type(GraphQLString)) + .build() + def queryType = newObject().name("Query") + .field(newFieldDefinition().name("direct").type(typeX)) + .field(newFieldDefinition().name("indirectNonNull").type(nonNull(typeRef("TypeX")))) + .field(newFieldDefinition().name("indirectList").type(GraphQLList.list(nonNull(typeRef("TypeX"))))) + .build() + + when: + def schema = GraphQLSchema.newSchema().query(queryType).build() + then: + schema.getType("TypeX") != null + + // now edit away the actual strong reference + when: + GraphQLTypeVisitor visitor = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + if (node.getName() == "direct") { + return deleteNode(context) + } + return TraversalControl.CONTINUE + } + } + + GraphQLSchema transformedSchema = SchemaTransformer.transformSchema(schema, visitor) + + then: + transformedSchema.getType("TypeX") != null + } + + def "cheap transform without types transformation works"() { + + def sdl = ''' + "a schema involving pets" + schema { + query : Query + } + type Query { + field1 : Dog + field2 : Cat + } + + type Dog { + name : String + } + + type Cat { + name : String + } + + ''' + + + when: + DataFetcher nameDF = { env -> "name" } + def originalSchema = TestUtil.schema(sdl, ["Dog": ["name": nameDF]]) + def originalCodeRegistry = originalSchema.getCodeRegistry() + + then: + originalSchema.getDescription() == "a schema involving pets" + originalSchema.containsType("Dog") + !originalSchema.containsType("Elephant") + + originalCodeRegistry.getDataFetcher(originalSchema.getObjectType("Dog"), originalSchema.getObjectType("Dog").getField("name")) === nameDF + + when: + def newRegistry = originalCodeRegistry.transform({ bld -> bld.clearDataFetchers() }) + def newSchema = originalSchema.transformWithoutTypes({ + it.description("A new home for pets").codeRegistry(newRegistry) + }) + + then: + + newSchema.getDescription() == "A new home for pets" + newSchema.containsType("Dog") + !newSchema.containsType("Elephant") + + def dogType = newSchema.getObjectType("Dog") + dogType === originalSchema.getObjectType("Dog") // schema type graph is the same + + newRegistry == newSchema.getCodeRegistry() + newRegistry != originalCodeRegistry + + + def newDF = newRegistry.getDataFetcher(dogType, dogType.getField("name")) + newDF !== nameDF + newDF instanceof LightDataFetcher // defaulted in + } + + def "can get by field co-ordinate"() { + when: + def fieldDef = starWarsSchema.getFieldDefinition(FieldCoordinates.coordinates("QueryType", "hero")) + + then: + fieldDef.name == "hero" + (fieldDef.type as GraphQLInterfaceType).getName() == "Character" + + when: + fieldDef = starWarsSchema.getFieldDefinition(FieldCoordinates.coordinates("X", "hero")) + + then: + fieldDef == null + + when: + fieldDef = starWarsSchema.getFieldDefinition(FieldCoordinates.coordinates("QueryType", "X")) + + then: + fieldDef == null + + when: + starWarsSchema.getFieldDefinition(FieldCoordinates.coordinates("Episode", "JEDI")) + + then: + thrown(AssertException) + + when: + fieldDef = starWarsSchema.getFieldDefinition(FieldCoordinates.systemCoordinates("__typename")) + + then: + fieldDef == starWarsSchema.getIntrospectionTypenameFieldDefinition() + + when: + fieldDef = starWarsSchema.getFieldDefinition(FieldCoordinates.systemCoordinates("__type")) + + then: + fieldDef == starWarsSchema.getIntrospectionTypeFieldDefinition() + + when: + fieldDef = starWarsSchema.getFieldDefinition(FieldCoordinates.systemCoordinates("__schema")) + + then: + fieldDef == starWarsSchema.getIntrospectionSchemaFieldDefinition() + + when: + starWarsSchema.getFieldDefinition(FieldCoordinates.systemCoordinates("__junk")) + + then: + thrown(AssertException) + + } + } diff --git a/src/test/groovy/graphql/schema/GraphQLTypeUtilTest.groovy b/src/test/groovy/graphql/schema/GraphQLTypeUtilTest.groovy index e60e947481..bc8a08aff1 100644 --- a/src/test/groovy/graphql/schema/GraphQLTypeUtilTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLTypeUtilTest.groovy @@ -6,6 +6,7 @@ import static graphql.Scalars.GraphQLString import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLTypeReference.typeRef class GraphQLTypeUtilTest extends Specification { @@ -85,7 +86,6 @@ class GraphQLTypeUtilTest extends Specification { then: GraphQLTypeUtil.isList(type) - when: type = GraphQLTypeUtil.unwrapOne(type) @@ -98,6 +98,12 @@ class GraphQLTypeUtilTest extends Specification { then: !GraphQLTypeUtil.isWrapped(type) type == GraphQLString + + when: + GraphQLScalarType scalar = GraphQLTypeUtil.unwrapOneAs(nonNull(GraphQLString)) + + then: + scalar == GraphQLString } def "unwrapAll tests"() { @@ -122,6 +128,38 @@ class GraphQLTypeUtilTest extends Specification { } + def "unwrapAllAs tests"() { + def type = list(nonNull(list(nonNull(GraphQLString)))) + def typeRef = list(nonNull(list(nonNull(typeRef("A"))))) + + when: + type = GraphQLTypeUtil.unwrapAllAs(type) + + then: + type == GraphQLString + + when: + type = GraphQLTypeUtil.unwrapAllAs(type) + + then: + type == GraphQLString + + when: + typeRef = GraphQLTypeUtil.unwrapAllAs(typeRef) + + then: + typeRef instanceof GraphQLTypeReference + (typeRef as GraphQLTypeReference).name == "A" + + when: + typeRef = GraphQLTypeUtil.unwrapAllAs(typeRef) + + then: + typeRef instanceof GraphQLTypeReference + (typeRef as GraphQLTypeReference).name == "A" + + } + def "isLeaf tests"() { when: def type = GraphQLString @@ -167,4 +205,32 @@ class GraphQLTypeUtilTest extends Specification { then: !GraphQLTypeUtil.isInput(type) } + + def "can unwrap non null-ness"() { + + when: + def type = GraphQLTypeUtil.unwrapNonNull(nonNull(GraphQLString)) + + then: + (type as GraphQLNamedType).getName() == "String" + + when: + type = GraphQLTypeUtil.unwrapNonNull(nonNull(list(GraphQLString))) + + then: + type instanceof GraphQLList + + when: + type = GraphQLTypeUtil.unwrapNonNull(list(GraphQLString)) + + then: + type instanceof GraphQLList + + when: + type = GraphQLTypeUtil.unwrapNonNull(GraphQLString) + + then: + (type as GraphQLNamedType).getName() == "String" + + } } diff --git a/src/test/groovy/graphql/schema/GraphQLTypeVisitorStubTest.groovy b/src/test/groovy/graphql/schema/GraphQLTypeVisitorStubTest.groovy index bf047baf71..019d7e0f6f 100644 --- a/src/test/groovy/graphql/schema/GraphQLTypeVisitorStubTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLTypeVisitorStubTest.groovy @@ -1,17 +1,12 @@ package graphql.schema - import graphql.util.TraversalControl import graphql.util.TraverserContext -import spock.lang.Ignore import spock.lang.Specification import spock.lang.Unroll class GraphQLTypeVisitorStubTest extends Specification { - - // spock has mocking problem with the withNewChildren method - @Ignore @Unroll def "#visitMethod scalar type"() { given: diff --git a/src/test/groovy/graphql/schema/GraphQLUnionTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLUnionTypeTest.groovy index d30cc79ff7..6524d135da 100644 --- a/src/test/groovy/graphql/schema/GraphQLUnionTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLUnionTypeTest.groovy @@ -14,7 +14,6 @@ class GraphQLUnionTypeTest extends Specification { when: newUnionType() .name("TestUnionType") - .typeResolver(new TypeResolverProxy()) .build() then: thrown(AssertException) @@ -38,7 +37,6 @@ class GraphQLUnionTypeTest extends Specification { .description("StartingDescription") .possibleType(objType1) .possibleType(objType2) - .typeResolver(new TypeResolverProxy()) .build() when: @@ -55,9 +53,23 @@ class GraphQLUnionTypeTest extends Specification { startingUnion.getDescription() == "StartingDescription" startingUnion.getTypes().size() == 2 + startingUnion.isPossibleType(objType2) + !startingUnion.isPossibleType(objType3) + transformedUnion.getName() == "NewName" transformedUnion.getDescription() == "NewDescription" transformedUnion.getTypes().size() == 1 + !transformedUnion.isPossibleType(objType2) + transformedUnion.isPossibleType(objType3) } + def "deprecated typeResolver builder works"() { + when: + newUnionType() + .name("TestUnionType") + .typeResolver(new TypeResolverProxy()) // Retain for test coverage + .build() + then: + thrown(AssertException) + } } diff --git a/src/test/groovy/graphql/schema/GraphqlTypeComparatorEnvironmentTest.groovy b/src/test/groovy/graphql/schema/GraphqlTypeComparatorEnvironmentTest.groovy index dc647119b1..c997e42fc5 100644 --- a/src/test/groovy/graphql/schema/GraphqlTypeComparatorEnvironmentTest.groovy +++ b/src/test/groovy/graphql/schema/GraphqlTypeComparatorEnvironmentTest.groovy @@ -25,21 +25,6 @@ class GraphqlTypeComparatorEnvironmentTest extends Specification { ] } - def "invalid instance with missing elementType"() { - when: - environment.build() - - then: - thrown(AssertException) - - where: - - environment << [ - newEnvironment().parentType(GraphQLObjectType.class), - newEnvironment() - ] - } - def "equals handles optional parentType"() { given: def fullEnvironmentA = newEnvironment() @@ -120,20 +105,15 @@ class GraphqlTypeComparatorEnvironmentTest extends Specification { transformedEnvironment.parentType == null transformedEnvironment.elementType == GraphQLFieldDefinition.class - } - def "object cannot be transformed into an invalid state"() { - given: - def startEnvironment = newEnvironment() - .parentType(GraphQLObjectType.class) - .elementType(GraphQLFieldDefinition.class) - .build() when: - startEnvironment.transform({ + transformedEnvironment = startEnvironment.transform({ it.elementType(null) }) then: - thrown(AssertException) + transformedEnvironment.parentType == GraphQLObjectType.class + transformedEnvironment.elementType == null } + } diff --git a/src/test/groovy/graphql/schema/GraphqlTypeComparatorsTest.groovy b/src/test/groovy/graphql/schema/GraphqlTypeComparatorsTest.groovy index 9286928508..ba93f1d2ec 100644 --- a/src/test/groovy/graphql/schema/GraphqlTypeComparatorsTest.groovy +++ b/src/test/groovy/graphql/schema/GraphqlTypeComparatorsTest.groovy @@ -38,7 +38,7 @@ class GraphqlTypeComparatorsTest extends Specification { union XUnion = Foo | Bar - type Foo implements YInterface, XInterface, ZInterface { + type Foo implements YInterface & XInterface & ZInterface { zField : String yField : String xField : String diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy new file mode 100644 index 0000000000..62b814db0d --- /dev/null +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy @@ -0,0 +1,62 @@ +package graphql.schema + +import graphql.GraphQLException +import graphql.Scalars +import spock.lang.Specification + +class PropertyDataFetcherClassLoadingTest extends Specification { + + GraphQLFieldDefinition fld(String fldName) { + return GraphQLFieldDefinition.newFieldDefinition().name(fldName).type(Scalars.GraphQLString).build() + } + + static class BrokenClass { + static { + // this should prevent it from existing + throw new RuntimeException("No soup for you!") + } + } + + + static class TargetClass { + + String getOkThings() { + return "ok" + } + + BrokenClass getBrokenThings() { + return new BrokenClass() + } + } + + def "can survive linkage errors during access to broken classes in Lambda support"() { + def okDF = PropertyDataFetcher.fetching("okThings") + def brokenDF = PropertyDataFetcher.fetching("brokenThings") + + def target = new TargetClass() + + when: + def value = okDF.get(fld("okThings"), target, { -> null }) + then: + value == "ok" + + when: + brokenDF.get(fld("brokenThings"), target, { -> null }) + then: + // This is because the reflection method finder cant get to it + // but it has made it past the Meta Lambda support + thrown(GraphQLException) + + // multiple times - same result + when: + value = okDF.get(fld("okThings"), target, { -> null }) + then: + value == "ok" + + when: + brokenDF.get(fld("brokenThings"), target, { -> null }) + then: + thrown(GraphQLException) + + } +} diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy index 0317f8e103..7903f14229 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy @@ -1,10 +1,14 @@ package graphql.schema import graphql.ExecutionInput +import graphql.Scalars import graphql.TestUtil +import graphql.schema.fetching.ConfusedPojo import graphql.schema.somepackage.ClassWithDFEMethods import graphql.schema.somepackage.ClassWithInterfaces import graphql.schema.somepackage.ClassWithInteritanceAndInterfaces +import graphql.schema.somepackage.RecordLikeClass +import graphql.schema.somepackage.RecordLikeTwoClassesDown import graphql.schema.somepackage.TestClass import graphql.schema.somepackage.TwoClassesDown import spock.lang.Specification @@ -13,6 +17,14 @@ import java.util.function.Function import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment +/** + * Note : That `new PropertyDataFetcher("someProperty")` and `SingletonPropertyDataFetcher.singleton()` + * should really be the equivalent since they both go via `PropertyDataFetcherHelper.getPropertyValue` + * under the covers. + * + * But where we can we have tried to use `where` blocks to test both + * + */ @SuppressWarnings("GroovyUnusedDeclaration") class PropertyDataFetcherTest extends Specification { @@ -20,28 +32,37 @@ class PropertyDataFetcherTest extends Specification { PropertyDataFetcher.setUseSetAccessible(true) PropertyDataFetcher.setUseNegativeCache(true) PropertyDataFetcher.clearReflectionCache() + PropertyDataFetcherHelper.setUseLambdaFactory(true) } - def env(obj) { + def env(String propertyName, Object obj) { + def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(Scalars.GraphQLString).build() newDataFetchingEnvironment() .source(obj) + .fieldDefinition(fieldDefinition) .arguments([argument1: "value1", argument2: "value2"]) .build() } - class SomeObject { + static class SomeObject { String value } def "null source is always null"() { - def environment = env(null) - def fetcher = new PropertyDataFetcher("someProperty") + given: + def environment = env("someProperty", null) + expect: fetcher.get(environment) == null + + where: + fetcher | _ + new PropertyDataFetcher("someProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "function based fetcher works with non null source"() { - def environment = env(new SomeObject(value: "aValue")) + def environment = env("notused", new SomeObject(value: "aValue")) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -49,7 +70,7 @@ class PropertyDataFetcherTest extends Specification { } def "function based fetcher works with null source"() { - def environment = env(null) + def environment = env("notused", null) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -57,97 +78,295 @@ class PropertyDataFetcherTest extends Specification { } def "fetch via map lookup"() { - def environment = env(["mapProperty": "aValue"]) - def fetcher = PropertyDataFetcher.fetching("mapProperty") + given: + def environment = env("mapProperty", ["mapProperty": "aValue"]) + expect: fetcher.get(environment) == "aValue" + + where: + fetcher | _ + PropertyDataFetcher.fetching("mapProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public getter with private subclass"() { - def environment = env(TestClass.createPackageProtectedImpl("aValue")) - def fetcher = new PropertyDataFetcher("packageProtectedProperty") + given: + def environment = env("packageProtectedProperty", TestClass.createPackageProtectedImpl("aValue")) + expect: fetcher.get(environment) == "aValue" + + where: + fetcher | _ + new PropertyDataFetcher("packageProtectedProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via method that isn't present"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("valueNotPresent") + given: + def environment = env("valueNotPresent", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("valueNotPresent") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via method that is private"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateProperty") + given: + def environment = env("privateProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == "privateValue" + + where: + fetcher | _ + new PropertyDataFetcher("privateProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via method that is private with setAccessible OFF"() { + given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateProperty") + def environment = env("privateProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("privateProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + + } + + def "fetch via record method"() { + given: + def environment = env("recordProperty", new RecordLikeClass()) + + when: + def fetcher = new PropertyDataFetcher("recordProperty") + def result = fetcher.get(environment) + then: + result == "recordProperty" + + // caching works + when: + fetcher = new PropertyDataFetcher("recordProperty") + result = fetcher.get(environment) + then: + result == "recordProperty" + + // recordArgumentMethod will not work because it takes a parameter + when: + fetcher = new PropertyDataFetcher("recordArgumentMethod") + result = fetcher.get(environment) + then: + result == null + + // equals will not work because it takes a parameter + when: + fetcher = new PropertyDataFetcher("equals") + result = fetcher.get(environment) + then: + result == null + + // we allow hashCode() and toString() because why not - they are valid property names + // they might not be that useful but they can be accessed + + when: + fetcher = new PropertyDataFetcher("hashCode") + result = fetcher.get(environment) + then: + result == 666 + + when: + fetcher = new PropertyDataFetcher("toString") + result = fetcher.get(environment) + then: + result == "toString" + } + + def "fetch via record method with singleton fetcher"() { + given: + def environment = env("recordProperty", new RecordLikeClass()) + + when: + def fetcher = SingletonPropertyDataFetcher.singleton() + def result = fetcher.get(environment) + then: + result == "recordProperty" + } + + def "can fetch record like methods that are public and on super classes"() { + given: + def environment = env("recordProperty", new RecordLikeTwoClassesDown()) + + when: + def result = fetcher.get(environment) + + then: + result == "recordProperty" + + where: + fetcher | _ + new PropertyDataFetcher("recordProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + } + + def "fetch via record method without lambda support"() { + given: + PropertyDataFetcherHelper.setUseLambdaFactory(false) + PropertyDataFetcherHelper.clearReflectionCache() + + when: + def environment = env("recordProperty", new RecordLikeClass()) + def fetcher = new PropertyDataFetcher("recordProperty") + def result = fetcher.get(environment) + + then: + result == "recordProperty" + + when: + environment = env("recordProperty", new RecordLikeTwoClassesDown()) + fetcher = new PropertyDataFetcher("recordProperty") + result = fetcher.get(environment) + + then: + result == "recordProperty" + } + + def "fetch via record method without lambda support in preference to getter methods"() { + given: + PropertyDataFetcherHelper.setUseLambdaFactory(false) + PropertyDataFetcherHelper.clearReflectionCache() + + when: + def environment = env("recordLike", new ConfusedPojo()) + def result = fetcher.get(environment) + + then: + result == "recordLike" + + where: + fetcher | _ + new PropertyDataFetcher("recordLike") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public method"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("publicProperty") + given: + def environment = env("publicProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == "publicValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via public method declared two classes up"() { - def environment = env(new TwoClassesDown("aValue")) + given: + def environment = env("publicProperty", new TwoClassesDown("aValue")) def fetcher = new PropertyDataFetcher("publicProperty") + + when: def result = fetcher.get(environment) - expect: + then: + result == "publicValue" + + when: + result = fetcher.get(environment) + then: result == "publicValue" + } def "fetch via property only defined on package protected impl"() { - def environment = env(TestClass.createPackageProtectedImpl("aValue")) - def fetcher = new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") + given: + def environment = env("propertyOnlyDefinedOnPackageProtectedImpl", TestClass.createPackageProtectedImpl("aValue")) + + when: def result = fetcher.get(environment) - expect: + + then: result == "valueOnlyDefinedOnPackageProtectedIpl" + + where: + fetcher | _ + new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public field"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("publicField") + given: + + def environment = env("publicField", new TestClass()) def result = fetcher.get(environment) + expect: result == "publicFieldValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via private field"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateField") + given: + def environment = env("privateField", new TestClass()) def result = fetcher.get(environment) + expect: result == "privateFieldValue" + + where: + fetcher | _ + new PropertyDataFetcher("privateField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via private field when setAccessible OFF"() { + given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateField") + def environment = env("privateField", new TestClass()) def result = fetcher.get(environment) + expect: result == null + + where: + fetcher | _ + new PropertyDataFetcher("privateField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch when caching is in place has no bad effects"() { - def environment = env(new TestClass()) + def environment = env("publicProperty", new TestClass()) def fetcher = new PropertyDataFetcher("publicProperty") when: def result = fetcher.get(environment) @@ -221,8 +440,10 @@ class PropertyDataFetcherTest extends Specification { } def "support for DFE on methods"() { - def environment = env(new ClassWithDFEMethods()) + given: + def environment = env("methodWithDFE", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodWithDFE") + when: def result = fetcher.get(environment) then: @@ -274,7 +495,7 @@ class PropertyDataFetcherTest extends Specification { def "finds interface methods"() { when: - def environment = env(new ClassWithInterfaces()) + def environment = env("methodYouMustImplement", new ClassWithInterfaces()) def fetcher = new PropertyDataFetcher("methodYouMustImplement") def result = fetcher.get(environment) then: @@ -301,7 +522,7 @@ class PropertyDataFetcherTest extends Specification { } def "finds interface methods with inheritance"() { - def environment = env(new ClassWithInteritanceAndInterfaces.StartingClass()) + def environment = env("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.StartingClass()) when: def fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -315,7 +536,7 @@ class PropertyDataFetcherTest extends Specification { then: result == "methodThatIsADefault" - def environment2 = env(new ClassWithInteritanceAndInterfaces.InheritedClass()) + def environment2 = env("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.InheritedClass()) when: fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -344,7 +565,7 @@ class PropertyDataFetcherTest extends Specification { def "ensure DFE is passed to method"() { - def environment = env(new ClassWithDFEMethods()) + def environment = env("methodUsesDataFetchingEnvironment", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodUsesDataFetchingEnvironment") when: def result = fetcher.get(environment) @@ -359,7 +580,7 @@ class PropertyDataFetcherTest extends Specification { } def "negative caching works as expected"() { - def environment = env(new ClassWithDFEMethods()) + def environment = env("doesNotExist", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("doesNotExist") when: def result = fetcher.get(environment) @@ -387,7 +608,7 @@ class PropertyDataFetcherTest extends Specification { } - class ProductDTO { + static class ProductDTO { String name String model } @@ -440,8 +661,8 @@ class PropertyDataFetcherTest extends Specification { private static class Bar implements Foo { @Override - public String getSomething() { - return "bar"; + String getSomething() { + return "bar" } } @@ -450,13 +671,200 @@ class PropertyDataFetcherTest extends Specification { def "search for private getter in class hierarchy"() { given: Bar bar = new Baz() - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("something") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> bar + def dfe = env("something", bar) + + when: + def result = fetcher.get(dfe) + + then: + result == "bar" + + // repeat - should be cached + when: + result = fetcher.get(dfe) + + then: + result == "bar" + + where: + fetcher | _ + new PropertyDataFetcher("something") | _ + SingletonPropertyDataFetcher.singleton() | _ + } + + def "issue 3247 - record like statics should not be used"() { + given: + def payload = new UpdateOrganizerSubscriptionPayload(true, new OrganizerSubscriptionError()) + def dfe = env("success", payload) + + when: + def result = fetcher.get(dfe) + + then: + result == true + + // repeat - should be cached + when: + result = fetcher.get(dfe) + + then: + result == true + + where: + fetcher | _ + new PropertyDataFetcher("success") | _ + SingletonPropertyDataFetcher.singleton() | _ + } + + def "issue 3247 - record like statics should not be found"() { + given: + def errorShape = new OrganizerSubscriptionError() + def dfe = env("message", errorShape) + + when: + def result = fetcher.get(dfe) + + then: + result == null // not found as its a static recordLike() method + + // repeat - should be cached + when: + result = fetcher.get(dfe) + + then: + result == null + + where: + fetcher | _ + new PropertyDataFetcher("message") | _ + SingletonPropertyDataFetcher.singleton() | _ + } + + def "issue 3247 - getter statics should be found"() { + given: + def objectInQuestion = new BarClassWithStaticProperties() + def dfe = env("foo", objectInQuestion) + PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("foo") + when: def result = propertyDataFetcher.get(dfe) + then: + result == "foo" + + // repeat - should be cached + when: + result = propertyDataFetcher.get(dfe) + + then: + result == "foo" + + when: + propertyDataFetcher = new PropertyDataFetcher("bar") + result = propertyDataFetcher.get(dfe) + then: result == "bar" + + // repeat - should be cached + when: + result = propertyDataFetcher.get(dfe) + + then: + result == "bar" + } + + class BaseObject { + private String id + + String getId() { + return id + } + + void setId(String value) { + id = value; + } + } + + class OtherObject extends BaseObject {} + + def "Can access private property from base class that starts with i in Turkish"() { + // see https://github.com/graphql-java/graphql-java/issues/3385 + given: + Locale oldLocale = Locale.getDefault() + Locale.setDefault(new Locale("tr", "TR")) + + def environment = env("id", new OtherObject(id: "aValue")) + + when: + def fetcher = PropertyDataFetcher.fetching("id") + String propValue = fetcher.get(environment) + + then: + propValue == 'aValue' + + when: + fetcher = SingletonPropertyDataFetcher.singleton() + propValue = fetcher.get(environment) + + then: + propValue == 'aValue' + + cleanup: + Locale.setDefault(oldLocale) + } + /** + * Classes from issue to ensure we reproduce as reported by customers + * + * In the UpdateOrganizerSubscriptionPayload class we will find the getSuccess() because static recordLike() methods are no longer allowed + */ + static class OrganizerSubscriptionError { + static String message() { return "error " } + } + + static class UpdateOrganizerSubscriptionPayload { + private final Boolean success + private final OrganizerSubscriptionError error + + UpdateOrganizerSubscriptionPayload(Boolean success, OrganizerSubscriptionError error) { + this.success = success + this.error = error + } + + static UpdateOrganizerSubscriptionPayload success() { + // 👈 note the static factory method for creating a success payload + return new UpdateOrganizerSubscriptionPayload(Boolean.TRUE, null) + } + + static UpdateOrganizerSubscriptionPayload error(OrganizerSubscriptionError error) { + // 👈 note the static factory method for creating a success payload + return new UpdateOrganizerSubscriptionPayload(null, error) + } + + Boolean getSuccess() { + return success + } + + OrganizerSubscriptionError getError() { + return error + } + + + @Override + String toString() { + return new StringJoiner( + ", ", UpdateOrganizerSubscriptionPayload.class.getSimpleName() + "[", "]") + .add("success=" + success) + .add("error=" + error) + .toString() + } + } + + static class FooClassWithStaticProperties { + static String getFoo() { return "foo" } + } + + static class BarClassWithStaticProperties extends FooClassWithStaticProperties { + static String getBar() { return "bar" } } } diff --git a/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy b/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy index 48c72c1dd0..35ef8ab026 100644 --- a/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy @@ -4,6 +4,8 @@ import graphql.TestUtil import graphql.schema.idl.SchemaPrinter import spock.lang.Specification +import java.util.stream.Collectors + import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString import static graphql.TestUtil.* @@ -26,7 +28,7 @@ class SchemaPrinterComparatorsTest extends Specification { def "scalarPrinter default comparator"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -36,16 +38,15 @@ class SchemaPrinterComparatorsTest extends Specification { then: result == '''"TestScalar" scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) - ''' } def "enumPrinter default comparator"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .withDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -57,14 +58,13 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) a @a(a : 0, bb : 0) @bb(a : 0, bb : 0) bb @a(a : 0, bb : 0) @bb(a : 0, bb : 0) } - ''' } def "unionPrinter default comparator"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -75,7 +75,6 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) then: result == '''union TestUnion @a(a : 0, bb : 0) @bb(a : 0, bb : 0) = a | bb - ''' } @@ -83,15 +82,15 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -104,7 +103,6 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) a(a: Int, bb: Int): String @a(a : 0, bb : 0) @bb(a : 0, bb : 0) bb(a: Int, bb: Int): String @a(a : 0, bb : 0) @bb(a : 0, bb : 0) } - ''' } @@ -113,15 +111,15 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a").build(), newInterface().name("bb").build()) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -134,7 +132,6 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) a(a: Int, bb: Int): String @a(a : 0, bb : 0) @bb(a : 0, bb : 0) bb(a: Int, bb: Int): String @a(a : 0, bb : 0) @bb(a : 0, bb : 0) } - ''' } @@ -142,13 +139,13 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -161,7 +158,6 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) a: String @a(a : 0, bb : 0) @bb(a : 0, bb : 0) bb: String @a(a : 0, bb : 0) @bb(a : 0, bb : 0) } - ''' } @@ -193,13 +189,13 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) def "scalarPrinter uses most specific registered comparators"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLScalarType.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLScalarType.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().includeScalarTypes(true).setComparators(registry) @@ -208,20 +204,19 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) then: result == '''"TestScalar" scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) - ''' } def "scalarPrinter uses least specific registered comparators"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().includeScalarTypes(true).setComparators(registry) @@ -230,24 +225,23 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) then: result == '''"TestScalar" scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) - ''' } def "enumPrinter uses most specific registered comparators"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .withDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLEnumType.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLEnumType.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLEnumType.class).elementType(GraphQLEnumValueDefinition.class) }, GraphQLEnumValueDefinition.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLEnumValueDefinition.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLEnumValueDefinition.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) @@ -258,23 +252,22 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } def "enumPrinter uses least specific registered comparators"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .withDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLEnumValueDefinition.class) }, GraphQLEnumValueDefinition.class, TestUtil.byGreatestLength) - .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) @@ -285,23 +278,22 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } def "unionPrinter uses most specific registered comparators"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLUnionType.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLUnionType.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLUnionType.class).elementType(GraphQLOutputType.class) }, GraphQLOutputType.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) @@ -309,23 +301,22 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) then: result == '''union TestUnion @bb(bb : 0, a : 0) @a(bb : 0, a : 0) = bb | a - ''' } def "unionPrinter uses least specific registered comparators"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLOutputType.class) }, GraphQLOutputType.class, TestUtil.byGreatestLength) - .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) @@ -333,7 +324,6 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) then: result == '''union TestUnion @bb(bb : 0, a : 0) @a(bb : 0, a : 0) = bb | a - ''' } @@ -341,25 +331,25 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLInterfaceType.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLInterfaceType.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLInterfaceType.class).elementType(GraphQLFieldDefinition.class) }, GraphQLFieldDefinition.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) @@ -370,7 +360,6 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } @@ -378,23 +367,24 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLFieldDefinition.class) }, GraphQLFieldDefinition.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) @@ -405,7 +395,6 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } @@ -414,25 +403,25 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) - .type(GraphQLString).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .arguments(mockArguments("a", "bb")) + .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLObjectType.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLObjectType.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLObjectType.class).elementType(GraphQLOutputType.class) }, GraphQLOutputType.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLObjectType.class).elementType(GraphQLFieldDefinition.class) }, GraphQLFieldDefinition.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLAppliedDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) def result = new SchemaPrinter(options).print(objectType) @@ -442,7 +431,6 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } @@ -451,23 +439,24 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) - .type(GraphQLString).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .arguments(mockArguments("a", "bb")) + .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLOutputType.class) }, GraphQLOutputType.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLFieldDefinition.class) }, GraphQLFieldDefinition.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) def result = new SchemaPrinter(options).print(objectType) @@ -477,7 +466,6 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } @@ -485,22 +473,22 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLInputObjectType.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLInputObjectType.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.parentType(GraphQLInputObjectType.class).elementType(GraphQLInputObjectField.class) }, GraphQLInputObjectField.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLInputObjectField.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLInputObjectField.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) def result = new SchemaPrinter(options).print(inputObjectType) @@ -510,7 +498,6 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb: String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a: String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } @@ -518,21 +505,21 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLInputObjectField.class) }, GraphQLInputObjectField.class, TestUtil.byGreatestLength) - .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) def result = new SchemaPrinter(options).print(inputObjectType) @@ -542,13 +529,12 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) bb: String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a: String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } def "argsString uses most specific registered comparators"() { given: - def field = newFieldDefinition().name("field").type(GraphQLInt).argument(mockArguments("a", "bb")).build() + def field = newFieldDefinition().name("field").type(GraphQLInt).arguments(mockArguments("a", "bb")).build() when: def registry = newComparators() @@ -563,7 +549,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "argsString uses least specific registered comparators"() { given: - def field = newFieldDefinition().name("field").type(GraphQLInt).argument(mockArguments("a", "bb")).build() + def field = newFieldDefinition().name("field").type(GraphQLInt).arguments(mockArguments("a", "bb")).build() when: def registry = newComparators() @@ -582,35 +568,35 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: def field = newFieldDefinition().name("field") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: def registry = newComparators() - .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLFieldDefinition.class).elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) - def result = new SchemaPrinter(options).directivesString(GraphQLFieldDefinition.class, field.directives) + def result = new SchemaPrinter(options).directivesString(GraphQLFieldDefinition.class, field) then: result == ''' @bb(bb : 0, a : 0) @a(bb : 0, a : 0)''' } - def "directivesString uses least specific registered comparators"() { + def "directivesString uses least specific registered comparators"() { given: def field = newFieldDefinition().name("field") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: def registry = newComparators() - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) - .addComparator({ it.parentType(GraphQLDirective.class).elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.parentType(GraphQLAppliedDirective.class).elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().setComparators(registry) - def result = new SchemaPrinter(options).directivesString(GraphQLFieldDefinition.class, field.directives) + def result = new SchemaPrinter(options).directivesString(GraphQLFieldDefinition.class, field) then: result == ''' @bb(bb : 0, a : 0) @a(bb : 0, a : 0)''' @@ -621,53 +607,53 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() GraphQLEnumType enumType = newEnum().name("TestEnum") - .withDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(0).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLObjectType objectType = newObject().name("TestObjectType") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) - .type(GraphQLString).withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .arguments(mockArguments("a", "bb")) + .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLInterfaceType interfaceType = newInterface().name("TestInterfaceType") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") - .argument(mockArguments("a", "bb")) + .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLInputObjectType inputObjectType = newInputObject().name("TestInputObjectType") - .withDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -677,7 +663,8 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) .addComparator({ it.elementType(GraphQLInputObjectField.class) }, GraphQLInputObjectField.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLEnumValueDefinition.class) }, GraphQLEnumValueDefinition.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLOutputType.class) }, GraphQLOutputType.class, TestUtil.byGreatestLength) - .addComparator({ it.elementType(GraphQLDirective.class) }, GraphQLDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirective.class) }, GraphQLAppliedDirective.class, TestUtil.byGreatestLength) + .addComparator({ it.elementType(GraphQLAppliedDirectiveArgument.class) }, GraphQLAppliedDirectiveArgument.class, TestUtil.byGreatestLength) .addComparator({ it.elementType(GraphQLArgument.class) }, GraphQLArgument.class, TestUtil.byGreatestLength) .build() def options = defaultOptions().includeScalarTypes(true).setComparators(registry) @@ -694,39 +681,33 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) scalarResult == '''"TestScalar" scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) - ''' enumResult == '''enum TestEnum @bb(bb : 0, a : 0) @a(bb : 0, a : 0) { bb @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' unionResult == '''union TestUnion @bb(bb : 0, a : 0) @a(bb : 0, a : 0) = bb | a - ''' interfaceTypeResult == '''interface TestInterfaceType @bb(bb : 0, a : 0) @a(bb : 0, a : 0) { bb(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' objectTypeResult == '''type TestObjectType implements bb & a @bb(bb : 0, a : 0) @a(bb : 0, a : 0) { bb(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a(bb: Int, a: Int): String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' inputObjectTypeResult == '''input TestInputObjectType @bb(bb : 0, a : 0) @a(bb : 0, a : 0) { bb: String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) a: String @bb(bb : 0, a : 0) @a(bb : 0, a : 0) } - ''' } @@ -740,7 +721,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def result = registry.getComparator(newEnvironment().elementType(GraphQLFieldDefinition.class).build()) then: - result == TestUtil.byGreatestLength + result == byGreatestLength } def "DefaultSchemaPrinterComparatorRegistry provides default comparator when environment is not found"() { @@ -757,7 +738,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "directive string when argument has no value"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withDirectives(mockDirectivesWithNoValueArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithNoValueArguments("a", "bb")) .build() when: @@ -766,8 +747,48 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) then: result == '''"TestScalar" -scalar TestScalar @a() @bb() - +scalar TestScalar @a @bb ''' } + + def " sort GraphQLSchemaElement by name or toString()"() { + given: + def coercing = new Coercing() { + @Override + Object serialize(Object dataFetcherResult) throws CoercingSerializeException { + return null + } + + @Override + Object parseValue(Object input) throws CoercingParseValueException { + return null + } + + @Override + Object parseLiteral(Object input) throws CoercingParseLiteralException { + return null + } + } + + def a = newScalar() + .name("a") + .coercing(coercing) + .build() + def b = newScalar() + .name("b") + .coercing(coercing) + .build() + + def nonNullA = GraphQLNonNull.nonNull(a) + def nonNullB = GraphQLNonNull.nonNull(b) + def list = [nonNullB, nonNullA] + + when: + def sortedList = list.stream().sorted( + DEFAULT_COMPARATOR).collect(Collectors.toList() + ) + + then: + sortedList == [nonNullA, nonNullB] + } } \ No newline at end of file diff --git a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy index 7836bcdae9..9513ed39fc 100644 --- a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy @@ -15,12 +15,9 @@ import static graphql.schema.GraphQLObjectType.newObject import static graphql.schema.GraphQLSchema.newSchema import static graphql.schema.GraphQLTypeReference.typeRef import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring -import static graphql.util.TreeTransformerUtil.changeNode -import static graphql.util.TreeTransformerUtil.deleteNode class SchemaTransformerTest extends Specification { - def "can change field in schema"() { given: GraphQLSchema schema = TestUtil.schema(""" @@ -31,7 +28,7 @@ class SchemaTransformerTest extends Specification { bar: String } """) - schema.getQueryType(); + schema.getQueryType() SchemaTransformer schemaTransformer = new SchemaTransformer() when: GraphQLSchema newSchema = schemaTransformer.transform(schema, new GraphQLTypeVisitorStub() { @@ -42,7 +39,7 @@ class SchemaTransformerTest extends Specification { def changedNode = fieldDefinition.transform({ builder -> builder.name("barChanged") }) return changeNode(context, changedNode) } - return TraversalControl.CONTINUE; + return TraversalControl.CONTINUE } }) @@ -62,7 +59,7 @@ class SchemaTransformerTest extends Specification { baz: String } """) - schema.getQueryType(); + schema.getQueryType() SchemaTransformer schemaTransformer = new SchemaTransformer() when: GraphQLSchema newSchema = schemaTransformer.transform(schema, new GraphQLTypeVisitorStub() { @@ -72,7 +69,7 @@ class SchemaTransformerTest extends Specification { if (fieldDefinition.name == "baz") { return deleteNode(context) } - return TraversalControl.CONTINUE; + return TraversalControl.CONTINUE } }) @@ -136,7 +133,7 @@ class SchemaTransformerTest extends Specification { baz: String } """) - schema.getQueryType(); + schema.getQueryType() SchemaTransformer schemaTransformer = new SchemaTransformer() when: GraphQLSchema newSchema = schemaTransformer.transform(schema, new GraphQLTypeVisitorStub() { @@ -146,7 +143,7 @@ class SchemaTransformerTest extends Specification { if (fieldDefinition.name == "baz") { return deleteNode(context) } - return TraversalControl.CONTINUE; + return TraversalControl.CONTINUE } }) @@ -185,7 +182,7 @@ class SchemaTransformerTest extends Specification { def changedNode = fieldDefinition.transform({ builder -> builder.name("helloChanged") }) return changeNode(context, changedNode) } - return TraversalControl.CONTINUE; + return TraversalControl.CONTINUE } @Override @@ -204,7 +201,7 @@ class SchemaTransformerTest extends Specification { @Override TraversalControl visitGraphQLTypeReference(GraphQLTypeReference node, TraverserContext context) { if (node.name == "Parent") { - return changeNode(context, typeRef("ParentChanged")); + return changeNode(context, typeRef("ParentChanged")) } return super.visitGraphQLTypeReference(node, context) } @@ -306,21 +303,30 @@ type SubChildChanged { def queryObject = newObject() .name("Query") .field({ builder -> - builder.name("foo").type(Scalars.GraphQLString).dataFetcher(new DataFetcher() { - @Override - Object get(DataFetchingEnvironment environment) throws Exception { - return "bar"; - } - }) - }).build(); + builder.name("foo") + .type(Scalars.GraphQLString) + }).build() + + def fooCoordinates = FieldCoordinates.coordinates("Query", "foo") + DataFetcher dataFetcher = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return "bar" + } + } + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(fooCoordinates, dataFetcher) + .build() - def schemaObject = GraphQLSchema.newSchema() + def schemaObject = newSchema() + .codeRegistry(codeRegistry) .query(queryObject) .build() when: def result = GraphQL.newGraphQL(schemaObject) - .build().execute(''' + .build() + .execute(''' { foo } ''').getData() @@ -339,14 +345,20 @@ type SubChildChanged { return TraversalControl.CONTINUE } }) + + def fooTransformedCoordinates = FieldCoordinates.coordinates("Query", "fooChanged") + codeRegistry = codeRegistry.transform({ it.dataFetcher(fooTransformedCoordinates, dataFetcher) }) + newSchema = newSchema.transform({ + builder -> builder.codeRegistry(codeRegistry) + }) result = GraphQL.newGraphQL(newSchema) - .build().execute(''' + .build() + .execute(''' { fooChanged } ''').getData() then: (result as Map)['fooChanged'] == 'bar' - } def "transformed schema can be executed"() { @@ -433,7 +445,7 @@ type SubChildChanged { if (fieldDefinition.name == "billingStatus") { return deleteNode(context) } - return TraversalControl.CONTINUE; + return TraversalControl.CONTINUE } }) @@ -444,4 +456,650 @@ type SubChildChanged { } + def "test as reported in 1928 "() { + given: + + def internalNoteHider = new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLDirective(GraphQLDirective node, + TraverserContext context) { + if ("internalnote" == node.getName()) { + // this deletes the declaration and the two usages of it + deleteNode(context) + } + return TraversalControl.CONTINUE + } + } + + GraphQLSchema schema = TestUtil.schema(""" + directive @internalnote(doc: String!) on OBJECT | FIELD_DEFINITION | INTERFACE + + type Query { + fooBar: Foo + } + + interface Manchu @internalnote(doc:"...") { + id: ID! + } + + type Foo implements Manchu { + id: ID! + } + + type Bar @internalnote(doc:"...") { + id: ID! + hidden: String! + } + + union FooBar = Foo | Bar + """) + + when: + def newSchema = SchemaTransformer.transformSchema(schema, internalNoteHider) + + then: + newSchema.getType("FooBar") != null + def printer = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(false)) + then: + printer.print(newSchema) == """interface Manchu { + id: ID! +} + +union FooBar = Bar | Foo + +type Bar { + hidden: String! + id: ID! +} + +type Foo implements Manchu { + id: ID! +} + +type Query { + fooBar: Foo +} +""" + } + + def "test as reported in 1953 "() { + given: + + def fieldChanger = new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, + TraverserContext context) { + if (node.getName() == "f") { + changeNode(context, node.transform({ builder -> builder.type(Scalars.GraphQLInt) })) + } + return TraversalControl.CONTINUE + } + } + + GraphQLSchema schema = TestUtil.schema(""" + type Query { + manchu: Manchu + foo: Foo + } + + interface Manchu { + id: ID! + f: String + } + + type Foo implements Manchu { + id: ID! + f: String + } + """) + + when: + def newSchema = SchemaTransformer.transformSchema(schema, fieldChanger) + + def printer = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(false)) + then: + (newSchema.getType("Foo") as GraphQLObjectType).getFieldDefinition("f").getType() == Scalars.GraphQLInt + printer.print(newSchema) == """interface Manchu { + f: Int + id: ID! +} + +type Foo implements Manchu { + f: Int + id: ID! +} + +type Query { + foo: Foo + manchu: Manchu +} +""" + } + + def "can change a schema element only"() { + def sdl = ''' + type Query { + f : Foo + } + type Foo { + foo : Foo + bar : Bar + } + type Bar { + b : EnumType + } + enum EnumType { + E + } + ''' + def schema = TestUtil.schema(sdl) + def oldType = schema.getObjectType("Foo") + when: + GraphQLObjectType newType = new SchemaTransformer().transform(oldType, new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + node = node.transform({ b -> b.name(node.getName().toUpperCase()) }) + return changeNode(context, node) + } + + @Override + TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + node = node.transform({ b -> b.name(node.getName().toUpperCase()) }) + return changeNode(context, node) + } + }) + then: + newType.getName() == "FOO" + newType.getFieldDefinition("FOO") != null + newType.getFieldDefinition("BAR") != null + } + + def "can handle self referencing type which require type references"() { + def sdl = ''' + type Query { + f : Foo + } + type Foo { + foo : Foo + bar : Bar + } + type Bar { + foo : Foo + enum : EnumType + } + enum EnumType { + e + } + ''' + def schema = TestUtil.schema(sdl) + + when: + GraphQLSchema newSchema = new SchemaTransformer().transform(schema, new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + node = node.transform({ b -> b.name(node.getName().toUpperCase()) }) + return changeNode(context, node) + } + + @Override + TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + if (node.getName().startsWith("__")) return TraversalControl.ABORT + node = node.transform({ b -> b.name(node.getName().toUpperCase()) }) + return changeNode(context, node) + } + }) + then: + + // all our fields are upper case as are our object types + def queryType = newSchema.getObjectType("QUERY") + def fooType = newSchema.getObjectType("FOO") + def barType = newSchema.getObjectType("BAR") + def enumType = newSchema.getType("EnumType") as GraphQLEnumType + + queryType.getFieldDefinition("F").getType().is(fooType) // groovy object equality + fooType.getFieldDefinition("FOO").getType().is(fooType) + fooType.getFieldDefinition("BAR").getType().is(barType) + + barType.getFieldDefinition("FOO").getType().is(fooType) + barType.getFieldDefinition("ENUM").getType().is(enumType) + + enumType.getValue("e") != null // left alone + } + + def "cycle with type refs"() { + given: + def field = newFieldDefinition() + .name("foo") + .type(typeRef("Foo")) + .build() + + def query = newObject() + .name("Query") + .field(field) + .build() + def foo = newObject() + .name("Foo") + .field(newFieldDefinition().name("toChange").type(Scalars.GraphQLString)) + .field(newFieldDefinition().name("subFoo").type(typeRef("Foo"))) + .build() + + + GraphQLSchema schema = newSchema().query(query).additionalType(foo).build() + def fieldChanger = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, + TraverserContext context) { + if (node.getName() == "toChange") { + changeNode(context, node.transform({ builder -> builder.name("changed") })) + } + return TraversalControl.CONTINUE + } + } + + when: + def newSchema = SchemaTransformer.transformSchema(schema, fieldChanger) + + def newFoo = newSchema.getQueryType().getFieldDefinition("foo").getType() as GraphQLObjectType + then: + newFoo.getFieldDefinition("changed") != null + } + + def "delete type which is references twice"() { + def sdl = ''' + type Query { + u1: U1 + u2: U2 + } + union U1 = A | ToDel + union U2 = B | ToDel + type A { + a: String + } + type B { + a: String + } + type ToDel { + a: String + } + + ''' + def schema = TestUtil.schema(sdl) + + when: + GraphQLSchema newSchema = new SchemaTransformer().transform(schema, new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + if (node.getName() == 'ToDel') { + return deleteNode(context) + } + return TraversalControl.CONTINUE + } + }) + then: + def printer = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(false)) + printer.print(newSchema) == '''union U1 = A + +union U2 = B + +type A { + a: String +} + +type B { + a: String +} + +type Query { + u1: U1 + u2: U2 +} +''' + } + + def "if nothing changes in the schema transformer, we return the same object"() { + + def schema = TestUtil.schema("type Query { f : String }") + + def fieldChanger = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, + TraverserContext context) { + return TraversalControl.CONTINUE + } + } + + when: + def newSchema = SchemaTransformer.transformSchema(schema, fieldChanger) + then: + newSchema === schema + } + + def "__Field can be changed"() { + // this is a test when only + // one element inside a scc is changed + def schema = TestUtil.schema("type Query { f : String }") + + def fieldChanger = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + if (node.name == "__Field") { + return changeNode(context, node.transform({ it.name("__FieldChanged") })) + } + return TraversalControl.CONTINUE + } + } + + when: + def newSchema = SchemaTransformer.transformSchema(schema, fieldChanger) + then: + def printer = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(false)) + printer.print(newSchema) == '''type Query { + f: String +} +''' + newSchema.getObjectType("__FieldChanged") != null + newSchema.getObjectType("__Field") == null + + } + + + def "applied directive and applied args can be changed"() { + // this is a test when only + // one element inside a scc is changed + def schema = TestUtil.schema(""" + directive @foo(arg1 : String) on FIELD_DEFINITION + directive @bar(arg1 : String) on FIELD_DEFINITION + type Query { + field : String @foo(arg1 : "fooArg") + field2 : String @bar(arg1 : "barArg") + } +""") + + def visitor = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + if (context.getParentNode() instanceof GraphQLAppliedDirective) { + GraphQLAppliedDirective directive = context.getParentNode() + if (directive.name == "foo") { + if (node.name == "arg1") { + def newNode = node.transform({ + it.name("changedArg1") + }) + return changeNode(context, newNode) + } + } + } + return TraversalControl.CONTINUE + } + + @Override + TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective node, TraverserContext context) { + return super.visitGraphQLAppliedDirective(node, context) + } + + } + + when: + def newSchema = SchemaTransformer.transformSchema(schema, visitor) + then: + def printer = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(true)) + def newQueryType = newSchema.getObjectType("Query") + + printer.print(newQueryType) == '''type Query { + field: String @foo(changedArg1 : "fooArg") + field2: String @bar(arg1 : "barArg") +} +''' + } + + def "can rename scalars"() { + + def schema = TestUtil.schema(""" + scalar Foo + type Query { + field : Foo + } +""") + + def visitor = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { + if (node.getName() == "Foo") { + GraphQLScalarType newNode = node.transform({ sc -> sc.name("Bar") }) + return changeNode(context, newNode) + } + return super.visitGraphQLScalarType(node, context) + } + } + + when: + def newSchema = SchemaTransformer.transformSchema(schema, visitor) + then: + newSchema.getType("Bar") instanceof GraphQLScalarType + newSchema.getType("Foo") == null + (newSchema.getObjectType("Query").getFieldDefinition("field").getType() as GraphQLScalarType).getName() == "Bar" + } + + def "rename scalars are changed in applied arguments"() { + + def schema = TestUtil.schema(""" + scalar Foo + directive @myDirective(fooArgOnDirective: Foo) on FIELD_DEFINITION + type Query { + foo(fooArgOnField: Foo) : Foo @myDirective + } +""") + + def visitor = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLScalarType(GraphQLScalarType node, TraverserContext context) { + if (node.getName() == "Foo") { + GraphQLScalarType newNode = node.transform({ sc -> sc.name("Bar") }) + return changeNode(context, newNode) + } + return super.visitGraphQLScalarType(node, context) + } + } + + when: + def newSchema = SchemaTransformer.transformSchema(schema, visitor) + then: + + def fieldDef = newSchema.getObjectType("Query").getFieldDefinition("foo") + def appliedDirective = fieldDef.getAppliedDirective("myDirective") + def oldSkoolDirective = fieldDef.getDirective("myDirective") + def argument = fieldDef.getArgument("fooArgOnField") + def directiveDecl = newSchema.getDirective("myDirective") + def directiveArgument = directiveDecl.getArgument("fooArgOnDirective") + + (fieldDef.getType() as GraphQLScalarType).getName() == "Bar" + (argument.getType() as GraphQLScalarType).getName() == "Bar" + (directiveArgument.getType() as GraphQLScalarType).getName() == "Bar" + + (oldSkoolDirective.getArgument("fooArgOnDirective").getType() as GraphQLScalarType).getName() == "Bar" + + newSchema.getType("Bar") instanceof GraphQLScalarType + + // not working at this stage + (appliedDirective.getArgument("fooArgOnDirective").getType() as GraphQLScalarType).getName() == "Bar" + newSchema.getType("Foo") == null + } + + def "has access to common variables"() { + def schema = TestUtil.schema(""" + type Query { + foo : String + } + """) + + def visitedSchema = null + def visitedCodeRegistry = null + def visitor = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + visitedSchema = context.getVarFromParents(GraphQLSchema.class) + visitedCodeRegistry = context.getVarFromParents(GraphQLCodeRegistry.Builder.class) + return super.visitGraphQLFieldDefinition(node, context) + } + + } + + when: + SchemaTransformer.transformSchema(schema, visitor) + + then: + visitedSchema == schema + visitedCodeRegistry instanceof GraphQLCodeRegistry.Builder + } + + def "deprecation transformation correctly overrides existing deprecated directive reasons"() { + def schema = TestUtil.schema(""" + schema { + query: QueryType + } + + type QueryType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + + interface InterfaceType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + + input InputType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + """) + + when: + def typeVisitor = new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + def n = node.transform(b -> b.deprecate("NEW REASON")); + return changeNode(context, n); + } + + @Override + TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + def n = node.transform(b -> b.deprecate("NEW REASON")); + return changeNode(context, n); + } + } + def newSchema = SchemaTransformer.transformSchema(schema, typeVisitor) + + then: + def newQueryType = newSchema.getObjectType("QueryType") + def newQueryTypePrinted = new SchemaPrinter().print(newQueryType) + + newQueryTypePrinted == """type QueryType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + def newInterfaceType = newSchema.getType("InterfaceType") + def newInterfaceTypePrinted = new SchemaPrinter().print(newInterfaceType) + newInterfaceTypePrinted == """interface InterfaceType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + def newInputType = newSchema.getType("InputType") + def newInputTypePrinted = new SchemaPrinter().print(newInputType) + newInputTypePrinted == """input InputType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + } + + def "issue 4133 reproduction"() { + def sdl = """ + directive @remove on FIELD_DEFINITION + + type Query { + rental: Rental @remove + customer: Customer + } + + type Store { + inventory: Inventory @remove + } + + type Inventory { + store: Store @remove + } + + type Customer { + rental: Rental + payment: Payment @remove + } + + type Payment { + inventory: Inventory @remove + } + + type Rental { + id: ID + customer: Customer @remove + } + """ + + def schema = TestUtil.schema(sdl) + schema = schema.transform { builder -> + for (def type : schema.getTypeMap().values()) { + if (type != schema.getQueryType() && type != schema.getMutationType() && type != schema.getSubscriptionType()) { + builder.additionalType(type) + } + } + } + + + def visitor = new GraphQLTypeVisitorStub() { + + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + if (node.hasAppliedDirective("remove")) { + return deleteNode(context) + } + return TraversalControl.CONTINUE + } + + @Override + TraversalControl visitGraphQLObjectType(GraphQLObjectType node, TraverserContext context) { + if (node.getFields().stream().allMatch(field -> field.hasAppliedDirective("remove"))) { + return deleteNode(context) + } + + return TraversalControl.CONTINUE + } + } + when: + def newSchema = SchemaTransformer.transformSchema(schema, visitor) + def printer = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(false)) + def newSdl = printer.print(newSchema) + + then: + newSdl.trim() == """type Customer { + rental: Rental +} + +type Query { + customer: Customer +} + +type Rental { + id: ID +}""".trim() + } } diff --git a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy index 7c8c867ead..f7a6fc8a9c 100644 --- a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy @@ -1,30 +1,27 @@ package graphql.schema import graphql.Scalars -import graphql.TypeResolutionEnvironment +import graphql.TestUtil import graphql.util.TraversalControl import graphql.util.TraverserContext import spock.lang.Specification +import static graphql.introspection.Introspection.DirectiveLocation import static graphql.schema.GraphQLArgument.newArgument import static graphql.schema.GraphQLTypeReference.typeRef import static graphql.schema.GraphqlTypeComparatorRegistry.BY_NAME_REGISTRY +import static graphql.TestUtil.mkDirective class SchemaTraverserTest extends Specification { - def "reachable scalar type"() { when: - def visitor = new GraphQLTestingVisitor() new SchemaTraverser().depthFirst(visitor, Scalars.GraphQLString) then: - visitor.getStack() == ["scalar: String", "fallback: String"] - - } def "reachable string argument type"() { @@ -48,7 +45,6 @@ class SchemaTraverserTest extends Specification { .build()) then: visitor.getStack() == ["argument: Test", "fallback: Test", "scalar: Int", "fallback: Int"] - } def "reachable enum type"() { @@ -65,7 +61,6 @@ class SchemaTraverserTest extends Specification { visitor.getStack() == ["enum: foo", "fallback: foo", "enum value: abc", "fallback: abc", "enum value: bar", "fallback: bar"] - } def "reachable field definition type"() { @@ -77,7 +72,6 @@ class SchemaTraverserTest extends Specification { .build()) then: visitor.getStack() == ["field: foo", "fallback: foo", "scalar: String", "fallback: String"] - } def "reachable input object field type"() { @@ -97,9 +91,9 @@ class SchemaTraverserTest extends Specification { new SchemaTraverser().depthFirst(visitor, GraphQLInputObjectType.newInputObject() .name("foo") .field(GraphQLInputObjectField.newInputObjectField() - .name("bar") - .type(Scalars.GraphQLString) - .build()) + .name("bar") + .type(Scalars.GraphQLString) + .build()) .build()) then: visitor.getStack() == ["input object: foo", "fallback: foo", @@ -107,17 +101,15 @@ class SchemaTraverserTest extends Specification { "scalar: String", "fallback: String"] } - def "reachable interface type"() { when: def visitor = new GraphQLTestingVisitor() new SchemaTraverser().depthFirst(visitor, GraphQLInterfaceType.newInterface() .name("foo") .field(GraphQLFieldDefinition.newFieldDefinition() - .name("bar") - .type(Scalars.GraphQLString) - .build()) - .typeResolver(NOOP_RESOLVER) + .name("bar") + .type(Scalars.GraphQLString) + .build()) .build()) then: visitor.getStack() == ["interface: foo", "fallback: foo", @@ -150,13 +142,12 @@ class SchemaTraverserTest extends Specification { new SchemaTraverser().depthFirst(visitor, GraphQLObjectType.newObject() .name("myObject") .field(GraphQLFieldDefinition.newFieldDefinition() - .name("foo") - .type(Scalars.GraphQLString) - .build()) + .name("foo") + .type(Scalars.GraphQLString) + .build()) .withInterface(GraphQLInterfaceType.newInterface() - .name("bar") - .typeResolver(NOOP_RESOLVER) - .build()) + .name("bar") + .build()) .build()) then: visitor.getStack() == ["object: myObject", "fallback: myObject", @@ -165,7 +156,6 @@ class SchemaTraverserTest extends Specification { "interface: bar", "fallback: bar"] } - def "reachable reference type"() { when: def visitor = new GraphQLTestingVisitor() @@ -181,7 +171,6 @@ class SchemaTraverserTest extends Specification { .name("foo") .possibleType(GraphQLObjectType.newObject().name("dummy").build()) .possibleType(typeRef("dummyRef")) - .typeResolver(NOOP_RESOLVER) .build()) then: visitor.getStack() == ["union: foo", "fallback: foo", @@ -193,32 +182,35 @@ class SchemaTraverserTest extends Specification { when: def visitor = new GraphQLTestingVisitor() def coercing = new Coercing() { - private static final String TEST_ONLY = "For testing only"; + private static final String TEST_ONLY = "For testing only" @Override Object serialize(Object dataFetcherResult) throws CoercingSerializeException { - throw new UnsupportedOperationException(TEST_ONLY); + throw new UnsupportedOperationException(TEST_ONLY) } @Override Object parseValue(Object input) throws CoercingParseValueException { - throw new UnsupportedOperationException(TEST_ONLY); + throw new UnsupportedOperationException(TEST_ONLY) } @Override Object parseLiteral(Object input) throws CoercingParseLiteralException { - throw new UnsupportedOperationException(TEST_ONLY); + throw new UnsupportedOperationException(TEST_ONLY) } } def scalarType = GraphQLScalarType.newScalar() .name("foo") .coercing(coercing) - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.SCALAR)) + .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, scalarType) then: - visitor.getStack() == ["scalar: foo", "fallback: foo", "directive: bar", "fallback: bar"] + visitor.getStack() == [ + "scalar: foo", "fallback: foo", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" + ] } def "reachable object directive"() { @@ -226,12 +218,15 @@ class SchemaTraverserTest extends Specification { def visitor = new GraphQLTestingVisitor() def objectType = GraphQLObjectType.newObject() .name("foo") - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.OBJECT)) + .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, objectType) then: - visitor.getStack() == ["object: foo", "fallback: foo", "directive: bar", "fallback: bar"] + visitor.getStack() == [ + "object: foo", "fallback: foo", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" + ] } def "reachable field definition directive"() { @@ -240,12 +235,15 @@ class SchemaTraverserTest extends Specification { def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition() .name("foo") .type(Scalars.GraphQLString) - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.FIELD_DEFINITION)) + .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, fieldDefinition) then: - visitor.getStack() == ["field: foo", "fallback: foo", "scalar: String", "fallback: String", "directive: bar", "fallback: bar"] + visitor.getStack() == [ + "field: foo", "fallback: foo", "scalar: String", "fallback: String", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" + ] } def "reachable argument directive"() { @@ -254,12 +252,15 @@ class SchemaTraverserTest extends Specification { def argument = newArgument() .name("foo") .type(Scalars.GraphQLString) - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.ARGUMENT_DEFINITION)) + .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, argument) then: - visitor.getStack() == ["argument: foo", "fallback: foo", "scalar: String", "fallback: String", "directive: bar", "fallback: bar"] + visitor.getStack() == [ + "argument: foo", "fallback: foo", "scalar: String", "fallback: String", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" + ] } def "reachable interface directive"() { @@ -267,13 +268,15 @@ class SchemaTraverserTest extends Specification { def visitor = new GraphQLTestingVisitor() def interfaceType = GraphQLInterfaceType.newInterface() .name("foo") - .typeResolver(NOOP_RESOLVER) - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.INTERFACE)) + .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, interfaceType) then: - visitor.getStack() == ["interface: foo", "fallback: foo", "directive: bar", "fallback: bar"] + visitor.getStack() == [ + "interface: foo", "fallback: foo", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" + ] } def "reachable union directive"() { @@ -282,9 +285,7 @@ class SchemaTraverserTest extends Specification { def unionType = GraphQLUnionType.newUnionType() .name("foo") .possibleType(GraphQLObjectType.newObject().name("dummy").build()) - .typeResolver(NOOP_RESOLVER) - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.UNION)) .build() new SchemaTraverser().depthFirst(visitor, unionType) then: @@ -297,8 +298,7 @@ class SchemaTraverserTest extends Specification { def enumType = GraphQLEnumType.newEnum() .name("foo") .value("dummy") - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.ENUM)) .build() new SchemaTraverser().depthFirst(visitor, enumType) then: @@ -310,8 +310,7 @@ class SchemaTraverserTest extends Specification { def visitor = new GraphQLTestingVisitor() def enumValue = GraphQLEnumValueDefinition.newEnumValueDefinition() .name("foo") - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.ENUM_VALUE)) .build() new SchemaTraverser().depthFirst(visitor, enumValue) then: @@ -323,8 +322,7 @@ class SchemaTraverserTest extends Specification { def visitor = new GraphQLTestingVisitor() def inputObjectType = GraphQLInputObjectType.newInputObject() .name("foo") - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.INPUT_OBJECT)) .build() new SchemaTraverser().depthFirst(visitor, inputObjectType) then: @@ -337,8 +335,7 @@ class SchemaTraverserTest extends Specification { def inputField = GraphQLInputObjectField.newInputObjectField() .name("foo") .type(Scalars.GraphQLString) - .withDirective(GraphQLDirective.newDirective() - .name("bar")) + .withDirective(mkDirective("bar", DirectiveLocation.INPUT_FIELD_DEFINITION)) .build() new SchemaTraverser().depthFirst(visitor, inputField) then: @@ -365,22 +362,68 @@ class SchemaTraverserTest extends Specification { visitor.getStack() == ["argument: Test1", "fallback: Test1", "reference: String", "fallback: String", "argument: Test2", "fallback: Test2", "backRef: String" ] - } + def "can quit the schema traverser"() { + def sdl = """ + type Query { + f : ObjType + f2NeverVisited : String + } + + type ObjType { + fQuit : ObjType2 + } + + type ObjType2 { + neverVisited : String + } + """ + + def schema = TestUtil.schema(sdl) - def NOOP_RESOLVER = new TypeResolver() { - @Override - GraphQLObjectType getType(TypeResolutionEnvironment env) { - return null + def visitor = new GraphQLTestingVisitor() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + super.visitGraphQLFieldDefinition(node, context) + if (node.name.contains("Quit")) { + return TraversalControl.QUIT + } + return TraversalControl.CONTINUE + } } - } + when: + new SchemaTraverser().depthFirstFullSchema(visitor, schema) + + then: + visitor.getStack() == ["object: Query", + "fallback: Query", + "field: f", + "fallback: f", + "object: ObjType", + "fallback: ObjType", + "field: fQuit", + "fallback: fQuit", + ] + } class GraphQLTestingVisitor extends GraphQLTypeVisitorStub { def stack = [] + @Override + TraversalControl visitGraphQLAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument node, TraverserContext context) { + stack.add("appliedArgument: ${node.getName()}") + return super.visitGraphQLAppliedDirectiveArgument(node, context) + } + + @Override + TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective node, TraverserContext context) { + stack.add("appliedDirective: ${node.getName()}") + return super.visitGraphQLAppliedDirective(node, context) + } + @Override TraversalControl visitGraphQLArgument(GraphQLArgument node, TraverserContext context) { stack.add("argument: ${node.getName()}") diff --git a/src/test/groovy/graphql/schema/diff/SchemaDiffTest.groovy b/src/test/groovy/graphql/schema/diff/SchemaDiffTest.groovy index b40bdc792d..fbefc15de2 100644 --- a/src/test/groovy/graphql/schema/diff/SchemaDiffTest.groovy +++ b/src/test/groovy/graphql/schema/diff/SchemaDiffTest.groovy @@ -1,5 +1,6 @@ package graphql.schema.diff +import graphql.AssertException import graphql.TestUtil import graphql.language.Argument import graphql.language.Directive @@ -15,6 +16,7 @@ import graphql.language.TypeName import graphql.schema.Coercing import graphql.schema.DataFetcher import graphql.schema.GraphQLScalarType +import graphql.schema.GraphQLSchema import graphql.schema.PropertyDataFetcher import graphql.schema.TypeResolver import graphql.schema.diff.reporting.CapturingReporter @@ -30,77 +32,121 @@ import spock.lang.Specification import java.util.stream.Collectors class SchemaDiffTest extends Specification { - private CapturingReporter reporter - private ChainedReporter chainedReporter + private CapturingReporter introspectionReporter + private CapturingReporter sdlReporter + private ChainedReporter introspectionChainedReporter + private ChainedReporter sdlChainedReporter private static final TypeResolver NULL_TYPE_RESOLVER = { env -> null } - static GraphQLScalarType CUSTOM_SCALAR = new GraphQLScalarType("CustomScalar", "CustomScalar", new Coercing() { - @Override - Object serialize(Object dataFetcherResult) { - throw new UnsupportedOperationException("Not implemented") - } - - @Override - Object parseValue(Object input) { - throw new UnsupportedOperationException("Not implemented") - } - - @Override - Object parseLiteral(Object input) { - throw new UnsupportedOperationException("Not implemented") - } - }) + static GraphQLScalarType CUSTOM_SCALAR = GraphQLScalarType + .newScalar() + .name("CustomScalar") + .description("CustomScalar") + .coercing(new Coercing() { + @Override + Object serialize(Object dataFetcherResult) { + throw new UnsupportedOperationException("Not implemented") + } + + @Override + Object parseValue(Object input) { + throw new UnsupportedOperationException("Not implemented") + } + + @Override + Object parseLiteral(Object input) { + throw new UnsupportedOperationException("Not implemented") + } + }) + .build() static RuntimeWiring wireWithNoFetching() { return RuntimeWiring.newRuntimeWiring() .wiringFactory(new WiringFactory() { - @Override - boolean providesTypeResolver(UnionWiringEnvironment environment) { - return true - } - - @Override - boolean providesTypeResolver(InterfaceWiringEnvironment environment) { - return true - } - - @Override - TypeResolver getTypeResolver(InterfaceWiringEnvironment environment) { - return NULL_TYPE_RESOLVER - } - - @Override - TypeResolver getTypeResolver(UnionWiringEnvironment environment) { - return NULL_TYPE_RESOLVER - } - - @Override - DataFetcher getDefaultDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()) - } - }) + @Override + boolean providesTypeResolver(UnionWiringEnvironment environment) { + return true + } + + @Override + boolean providesTypeResolver(InterfaceWiringEnvironment environment) { + return true + } + + @Override + TypeResolver getTypeResolver(InterfaceWiringEnvironment environment) { + return NULL_TYPE_RESOLVER + } + + @Override + TypeResolver getTypeResolver(UnionWiringEnvironment environment) { + return NULL_TYPE_RESOLVER + } + + @Override + DataFetcher getDefaultDataFetcher(FieldWiringEnvironment environment) { + return new PropertyDataFetcher(environment.getFieldDefinition().getName()) + } + }) .scalar(CUSTOM_SCALAR) .build() } void setup() { - reporter = new CapturingReporter() - chainedReporter = new ChainedReporter(reporter, new PrintStreamReporter()) + introspectionReporter = new CapturingReporter() + sdlReporter = new CapturingReporter() + introspectionChainedReporter = new ChainedReporter(introspectionReporter, new PrintStreamReporter()) + sdlChainedReporter = new ChainedReporter(sdlReporter, new PrintStreamReporter()) } - DiffSet diffSet(String newFile) { + void compareDiff(String newFile) { + SchemaDiffSet introspectionSchemaDiffSet = introspectionSchemaDiffSet(newFile) + SchemaDiffSet sdlSchemaDiffSet = sdlSchemaDiffSet(newFile) + + def diff = new SchemaDiff() + diff.diffSchema(introspectionSchemaDiffSet, introspectionChainedReporter) + diff.diffSchema(sdlSchemaDiffSet, sdlChainedReporter) + } + + void compareDiff(GraphQLSchema oldSchema, GraphQLSchema newSchema) { + SchemaDiffSet introspectionSchemaDiffSet = SchemaDiffSet.diffSetFromIntrospection(oldSchema, newSchema) + SchemaDiffSet sdlSchemaDiffSet = SchemaDiffSet.diffSetFromSdl(oldSchema, newSchema) + + def diff = new SchemaDiff() + diff.diffSchema(introspectionSchemaDiffSet, introspectionChainedReporter) + diff.diffSchema(sdlSchemaDiffSet, sdlChainedReporter) + } + + void validateReportersAreEqual() { + introspectionReporter.events == sdlReporter.events + introspectionReporter.infos == sdlReporter.infos + introspectionReporter.dangers == sdlReporter.dangers + introspectionReporter.breakages == sdlReporter.breakages + introspectionReporter.breakageCount == sdlReporter.breakageCount + introspectionReporter.infoCount == sdlReporter.infoCount + introspectionReporter.dangerCount == sdlReporter.dangerCount + } + + SchemaDiffSet introspectionSchemaDiffSet(String newFile) { def schemaOld = TestUtil.schemaFile("diff/" + "schema_ABaseLine.graphqls", wireWithNoFetching()) def schemaNew = TestUtil.schemaFile("diff/" + newFile, wireWithNoFetching()) - def diffSet = DiffSet.diffSet(schemaOld, schemaNew) + def diffSet = SchemaDiffSet.diffSetFromIntrospection(schemaOld, schemaNew) diffSet } + SchemaDiffSet sdlSchemaDiffSet(String newFile) { + def schemaOld = TestUtil.schemaFile("diff/" + "schema_ABaseLine.graphqls", wireWithNoFetching()) + def schemaNew = TestUtil.schemaFile("diff/" + newFile, wireWithNoFetching()) - def "change_in_null_ness"() { + def diffSet = SchemaDiffSet.diffSetFromSdl(schemaOld, schemaNew) + diffSet + } + + def "change_in_null_ness_input_or_arg"() { given: Type baseLine = new NonNullType(new ListType(new TypeName("foo"))) @@ -111,12 +157,12 @@ class SchemaDiffTest extends Specification { def diff = new SchemaDiff() - def sameType = diff.checkTypeWithNonNullAndList(baseLine, same) + def sameType = diff.checkTypeWithNonNullAndListOnInputOrArg(baseLine, same) - def lessStrict = diff.checkTypeWithNonNullAndList(baseLine, less) + def lessStrict = diff.checkTypeWithNonNullAndListOnInputOrArg(baseLine, less) // not allowed as old clients wont work - def moreStrict = diff.checkTypeWithNonNullAndList(less, baseLine) + def moreStrict = diff.checkTypeWithNonNullAndListOnInputOrArg(less, baseLine) expect: @@ -125,18 +171,60 @@ class SchemaDiffTest extends Specification { moreStrict == DiffCategory.STRICTER } - def "change_in_list_ness"() { + def "change_in_null_ness_object_or_interface"() { given: - Type baseLine = new NonNullType(new ListType(new TypeName("foo"))) + Type nonNull = new NonNullType(new ListType(new TypeName("foo"))) + Type nonNullDuplicate = new NonNullType(new ListType(new TypeName("foo"))) + + Type nullable = new ListType(new TypeName("foo")) + + + def diff = new SchemaDiff() + + def sameType = diff.checkTypeWithNonNullAndListOnObjectOrInterface(nonNull, nonNullDuplicate) + + def removeGuarantee = diff.checkTypeWithNonNullAndListOnObjectOrInterface(nonNull, nullable) + + def addGuarantee = diff.checkTypeWithNonNullAndListOnObjectOrInterface(nullable, nonNull) + + + expect: + sameType == null + removeGuarantee == DiffCategory.STRICTER + addGuarantee == null + } + + def "change_in_list_ness_input_or_arg"() { + + given: + Type list = new NonNullType(new ListType(new TypeName("foo"))) + Type notList = new NonNullType(new TypeName("foo")) + + def diff = new SchemaDiff() + + def noLongerList = diff.checkTypeWithNonNullAndListOnInputOrArg(list, notList) + def nowList = diff.checkTypeWithNonNullAndListOnInputOrArg(notList, list) + + expect: + noLongerList == DiffCategory.INVALID + nowList == DiffCategory.INVALID + } + + def "change_in_list_ness_object_or_interface"() { + + given: + Type list = new NonNullType(new ListType(new TypeName("foo"))) Type notList = new NonNullType(new TypeName("foo")) def diff = new SchemaDiff() - def noLongerList = diff.checkTypeWithNonNullAndList(baseLine, notList) + def noLongerList = diff.checkTypeWithNonNullAndListOnObjectOrInterface(list, notList) + def nowList = diff.checkTypeWithNonNullAndListOnObjectOrInterface(list, notList) expect: noLongerList == DiffCategory.INVALID + nowList == DiffCategory.INVALID } DiffEvent lastBreakage(CapturingReporter capturingReporter) { @@ -147,7 +235,7 @@ class SchemaDiffTest extends Specification { def "directives_controlled_via_options"() { given: - DiffCtx ctx = new DiffCtx(reporter, null, null) + DiffCtx ctx = new DiffCtx(introspectionReporter, null, null) TypeDefinition left = new ObjectTypeDefinition("fooType") @@ -156,11 +244,11 @@ class SchemaDiffTest extends Specification { def diff = new SchemaDiff() diff.checkDirectives(ctx, left, twoDirectives, oneDirective) - def notChecked = lastBreakage(reporter) + def notChecked = lastBreakage(introspectionReporter) diff = new SchemaDiff(SchemaDiff.Options.defaultOptions().enforceDirectives()) diff.checkDirectives(ctx, left, twoDirectives, oneDirective) - def missingDirective = lastBreakage(reporter) + def missingDirective = lastBreakage(introspectionReporter) expect: notChecked == null @@ -171,7 +259,7 @@ class SchemaDiffTest extends Specification { def "directives enforced to be the same"() { given: - DiffCtx ctx = new DiffCtx(reporter, null, null) + DiffCtx ctx = new DiffCtx(introspectionReporter, null, null) TypeDefinition left = new ObjectTypeDefinition("fooType") @@ -182,7 +270,7 @@ class SchemaDiffTest extends Specification { def diff = new SchemaDiff(SchemaDiff.Options.defaultOptions().enforceDirectives()) diff.checkDirectives(ctx, left, twoDirectives, oneDirective) - def missingDirective = lastBreakage(reporter) + def missingDirective = lastBreakage(introspectionReporter) def oldDirective = new Directive("foo", [ new Argument("arg1", new StringValue("p1")), @@ -195,7 +283,7 @@ class SchemaDiffTest extends Specification { ]) diff.checkDirectives(ctx, left, [oldDirective], [newDirective]) - def missingArgs = lastBreakage(reporter) + def missingArgs = lastBreakage(introspectionReporter) def newDirectiveDiffDefaultType = new Directive("foo", [ @@ -204,36 +292,32 @@ class SchemaDiffTest extends Specification { ]) diff.checkDirectives(ctx, left, [oldDirective], [newDirectiveDiffDefaultType]) - def changedType = lastBreakage(reporter) + def changedType = lastBreakage(introspectionReporter) expect: missingDirective.category == DiffCategory.MISSING missingArgs.category == DiffCategory.MISSING changedType.category == DiffCategory.INVALID - reporter.getBreakageCount() == 3 + introspectionReporter.getBreakageCount() == 3 } def "same schema diff"() { - DiffSet diffSet = diffSet("schema_ABaseLine.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_ABaseLine.graphqls") expect: - reporter.breakageCount == 0 + validateReportersAreEqual() + introspectionReporter.breakageCount == 0 } def "additional field"() { - DiffSet diffSet = diffSet("schema_with_additional_field.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_with_additional_field.graphqls") expect: - reporter.breakageCount == 0 + validateReportersAreEqual() + introspectionReporter.breakageCount == 0 - List newFieldEvents = reporter.infos.stream() - .filter{de -> de.typeName == "Ainur" && de.fieldName == "surname"} + List newFieldEvents = introspectionReporter.infos.stream() + .filter { de -> de.typeName == "Ainur" && de.fieldName == "surname" } .collect(Collectors.toList()) newFieldEvents.size() == 2 @@ -244,271 +328,483 @@ class SchemaDiffTest extends Specification { } def "missing fields on interface"() { - DiffSet diffSet = diffSet("schema_interface_fields_missing.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_interface_fields_missing.graphqls") expect: - reporter.breakageCount == 8 // 2 fields removed from interface, affecting 3 types - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.Interface + validateReportersAreEqual() + introspectionReporter.breakageCount == 8 // 2 fields removed from interface, affecting 3 types + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.Interface - reporter.breakages[1].category == DiffCategory.MISSING - reporter.breakages[1].typeKind == TypeKind.Interface + introspectionReporter.breakages[1].category == DiffCategory.MISSING + introspectionReporter.breakages[1].typeKind == TypeKind.Interface } def "missing members on union"() { - DiffSet diffSet = diffSet("schema_missing_union_members.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_missing_union_members.graphqls") expect: - reporter.breakageCount == 1 // 1 member removed - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.Union - + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 // 1 member removed + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.Union } def "missing fields on object"() { - DiffSet diffSet = diffSet("schema_missing_object_fields.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_missing_object_fields.graphqls") expect: - reporter.breakageCount == 2 // 2 fields removed - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.Object - reporter.breakages[0].fieldName == 'colour' + validateReportersAreEqual() + introspectionReporter.breakageCount == 2 // 2 fields removed + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.Object + introspectionReporter.breakages[0].fieldName == 'colour' - reporter.breakages[1].category == DiffCategory.MISSING - reporter.breakages[1].typeKind == TypeKind.Object - reporter.breakages[1].fieldName == 'temperament' + introspectionReporter.breakages[1].category == DiffCategory.MISSING + introspectionReporter.breakages[1].typeKind == TypeKind.Object + introspectionReporter.breakages[1].fieldName == 'temperament' } def "missing operation"() { - DiffSet diffSet = diffSet("schema_missing_operation.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_missing_operation.graphqls") expect: - reporter.breakageCount == 1 - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.Operation - reporter.breakages[0].typeName == 'Mutation' - + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.Operation + introspectionReporter.breakages[0].typeName == 'Mutation' } def "missing input object fields"() { - DiffSet diffSet = diffSet("schema_missing_input_object_fields.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_missing_input_object_fields.graphqls") expect: - reporter.breakageCount == 1 - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.InputObject - reporter.breakages[0].fieldName == 'queryTarget' + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.InputObject + introspectionReporter.breakages[0].fieldName == 'queryTarget' } def "changed nested input object field types"() { - DiffSet diffSet = diffSet("schema_changed_nested_input_object_fields.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_changed_nested_input_object_fields.graphqls") expect: - reporter.breakageCount == 1 - reporter.breakages[0].category == DiffCategory.INVALID - reporter.breakages[0].typeName == 'NestedInput' - reporter.breakages[0].typeKind == TypeKind.InputObject - reporter.breakages[0].fieldName == 'nestedInput' - + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages[0].category == DiffCategory.INVALID + introspectionReporter.breakages[0].typeName == 'NestedInput' + introspectionReporter.breakages[0].typeKind == TypeKind.InputObject + introspectionReporter.breakages[0].fieldName == 'nestedInput' } def "changed input object field types"() { - DiffSet diffSet = diffSet("schema_changed_input_object_fields.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_changed_input_object_fields.graphqls") expect: - reporter.breakageCount == 2 - reporter.breakages[0].category == DiffCategory.INVALID - reporter.breakages[0].typeName == 'Questor' - reporter.breakages[0].typeKind == TypeKind.InputObject - reporter.breakages[0].fieldName == 'queryTarget' - - reporter.breakages[1].category == DiffCategory.STRICTER - reporter.breakages[1].typeName == 'Questor' - reporter.breakages[1].typeKind == TypeKind.InputObject - reporter.breakages[1].fieldName == 'newMandatoryField' + validateReportersAreEqual() + introspectionReporter.breakageCount == 4 + introspectionReporter.breakages[0].category == DiffCategory.STRICTER + introspectionReporter.breakages[0].typeName == 'Query' + introspectionReporter.breakages[0].typeKind == TypeKind.Object + introspectionReporter.breakages[0].fieldName == 'being' + + introspectionReporter.breakages[1].category == DiffCategory.STRICTER + introspectionReporter.breakages[1].typeName == 'Questor' + introspectionReporter.breakages[1].typeKind == TypeKind.InputObject + introspectionReporter.breakages[1].fieldName == 'nestedInput' + + introspectionReporter.breakages[2].category == DiffCategory.INVALID + introspectionReporter.breakages[2].typeName == 'Questor' + introspectionReporter.breakages[2].typeKind == TypeKind.InputObject + introspectionReporter.breakages[2].fieldName == 'queryTarget' + + introspectionReporter.breakages[3].category == DiffCategory.STRICTER + introspectionReporter.breakages[3].typeName == 'Questor' + introspectionReporter.breakages[3].typeKind == TypeKind.InputObject + introspectionReporter.breakages[3].fieldName == 'newMandatoryField' } def "changed type kind"() { - DiffSet diffSet = diffSet("schema_changed_type_kind.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_changed_type_kind.graphqls") expect: - reporter.breakageCount == 1 - reporter.breakages[0].category == DiffCategory.INVALID - reporter.breakages[0].typeName == 'Character' - reporter.breakages[0].typeKind == TypeKind.Union - + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages[0].category == DiffCategory.INVALID + introspectionReporter.breakages[0].typeName == 'Character' + introspectionReporter.breakages[0].typeKind == TypeKind.Union } def "missing object field args"() { - DiffSet diffSet = diffSet("schema_missing_field_arguments.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_missing_field_arguments.graphqls") expect: - reporter.breakageCount == 2 + validateReportersAreEqual() + introspectionReporter.breakageCount == 2 - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.Object - reporter.breakages[0].typeName == "Mutation" - reporter.breakages[0].fieldName == 'being' - reporter.breakages[0].components.contains("questor") + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.Object + introspectionReporter.breakages[0].typeName == "Mutation" + introspectionReporter.breakages[0].fieldName == 'being' + introspectionReporter.breakages[0].components.contains("questor") - reporter.breakages[1].category == DiffCategory.MISSING - reporter.breakages[1].typeKind == TypeKind.Object - reporter.breakages[0].typeName == "Mutation" - reporter.breakages[1].fieldName == 'sword' + introspectionReporter.breakages[1].category == DiffCategory.MISSING + introspectionReporter.breakages[1].typeKind == TypeKind.Object + introspectionReporter.breakages[0].typeName == "Mutation" + introspectionReporter.breakages[1].fieldName == 'sword' } def "missing enum value"() { - DiffSet diffSet = diffSet("schema_missing_enum_value.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_missing_enum_value.graphqls") expect: - reporter.breakageCount == 1 - reporter.breakages[0].category == DiffCategory.MISSING - reporter.breakages[0].typeKind == TypeKind.Enum - reporter.breakages[0].typeName == 'Temperament' - reporter.breakages[0].components.contains("Duplicitous") + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages[0].category == DiffCategory.MISSING + introspectionReporter.breakages[0].typeKind == TypeKind.Enum + introspectionReporter.breakages[0].typeName == 'Temperament' + introspectionReporter.breakages[0].components.contains("Duplicitous") } def "changed object field args"() { - DiffSet diffSet = diffSet("schema_changed_field_arguments.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_changed_field_arguments.graphqls") expect: - reporter.breakageCount == 2 - reporter.breakages[0].category == DiffCategory.INVALID - reporter.breakages[0].typeKind == TypeKind.Object - reporter.breakages[0].fieldName == 'sword' + validateReportersAreEqual() + introspectionReporter.breakageCount == 2 + introspectionReporter.breakages[0].category == DiffCategory.INVALID + introspectionReporter.breakages[0].typeKind == TypeKind.Object + introspectionReporter.breakages[0].fieldName == 'sword' - reporter.breakages[1].category == DiffCategory.INVALID - reporter.breakages[1].typeKind == TypeKind.Object - reporter.breakages[1].fieldName == 'sword' + introspectionReporter.breakages[1].category == DiffCategory.INVALID + introspectionReporter.breakages[1].typeKind == TypeKind.Object + introspectionReporter.breakages[1].fieldName == 'sword' } def "changed type on object"() { - DiffSet diffSet = diffSet("schema_changed_object_fields.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_changed_object_fields.graphqls") expect: - reporter.breakageCount == 4 - reporter.breakages[0].category == DiffCategory.STRICTER - reporter.breakages[0].typeName == 'Query' - reporter.breakages[0].typeKind == TypeKind.Object - reporter.breakages[0].fieldName == 'being' - - reporter.breakages[1].category == DiffCategory.INVALID - reporter.breakages[1].typeName == 'Query' - reporter.breakages[1].typeKind == TypeKind.Object - reporter.breakages[1].fieldName == 'beings' - - reporter.breakages[2].category == DiffCategory.STRICTER - reporter.breakages[2].typeName == 'Query' - reporter.breakages[2].typeKind == TypeKind.Object - reporter.breakages[2].fieldName == 'customScalar' - - reporter.breakages[3].category == DiffCategory.STRICTER - reporter.breakages[3].typeName == 'Query' - reporter.breakages[3].typeKind == TypeKind.Object - reporter.breakages[3].fieldName == 'wizards' - + validateReportersAreEqual() + introspectionReporter.breakageCount == 3 + introspectionReporter.breakages[0].category == DiffCategory.STRICTER + introspectionReporter.breakages[0].typeName == 'Istari' + introspectionReporter.breakages[0].typeKind == TypeKind.Object + introspectionReporter.breakages[0].fieldName == 'temperament' + + introspectionReporter.breakages[1].category == DiffCategory.INVALID + introspectionReporter.breakages[1].typeName == 'Query' + introspectionReporter.breakages[1].typeKind == TypeKind.Object + introspectionReporter.breakages[1].fieldName == 'beings' + + introspectionReporter.breakages[2].category == DiffCategory.INVALID + introspectionReporter.breakages[2].typeName == 'Query' + introspectionReporter.breakages[2].typeKind == TypeKind.Object + introspectionReporter.breakages[2].fieldName == 'customScalar' } def "dangerous changes"() { - DiffSet diffSet = diffSet("schema_dangerous_changes.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_dangerous_changes.graphqls") expect: - reporter.breakageCount == 0 - reporter.dangerCount == 3 - - reporter.dangers[0].category == DiffCategory.ADDITION - reporter.dangers[0].typeName == "Character" - reporter.dangers[0].typeKind == TypeKind.Union - reporter.dangers[0].components.contains("BenignFigure") + validateReportersAreEqual() + introspectionReporter.breakageCount == 0 + introspectionReporter.dangerCount == 3 + + introspectionReporter.dangers[0].category == DiffCategory.ADDITION + introspectionReporter.dangers[0].typeName == "Temperament" + introspectionReporter.dangers[0].typeKind == TypeKind.Enum + introspectionReporter.dangers[0].components.contains("Nonplussed") + + introspectionReporter.dangers[1].category == DiffCategory.ADDITION + introspectionReporter.dangers[1].typeName == "Character" + introspectionReporter.dangers[1].typeKind == TypeKind.Union + introspectionReporter.dangers[1].components.contains("BenignFigure") + + introspectionReporter.dangers[2].category == DiffCategory.DIFFERENT + introspectionReporter.dangers[2].typeName == "Query" + introspectionReporter.dangers[2].typeKind == TypeKind.Object + introspectionReporter.dangers[2].fieldName == "being" + introspectionReporter.dangers[2].components.contains("type") + } - reporter.dangers[1].category == DiffCategory.DIFFERENT - reporter.dangers[1].typeName == "Query" - reporter.dangers[1].typeKind == TypeKind.Object - reporter.dangers[1].fieldName == "being" - reporter.dangers[1].components.contains("type") + def "deprecated fields are unchanged"() { + def schema = TestUtil.schemaFile("diff/" + "schema_deprecated_fields_new.graphqls", wireWithNoFetching()) + SchemaDiffSet introspectionSchemaDiffSet = SchemaDiffSet.diffSetFromIntrospection(schema, schema) + SchemaDiffSet sdlSchemaDiffSet = SchemaDiffSet.diffSetFromSdl(schema, schema) - reporter.dangers[2].category == DiffCategory.ADDITION - reporter.dangers[2].typeName == "Temperament" - reporter.dangers[2].typeKind == TypeKind.Enum - reporter.dangers[2].components.contains("Nonplussed") + def diff = new SchemaDiff() + diff.diffSchema(introspectionSchemaDiffSet, introspectionChainedReporter) + diff.diffSchema(sdlSchemaDiffSet, sdlChainedReporter) + expect: + validateReportersAreEqual() + introspectionReporter.dangerCount == 0 + introspectionReporter.breakageCount == 0 } def "field was deprecated"() { - DiffSet diffSet = diffSet("schema_deprecated_fields_new.graphqls") - - def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + compareDiff("schema_deprecated_fields_new.graphqls") expect: - reporter.dangerCount == 13 - reporter.breakageCount == 0 - reporter.dangers.every { + validateReportersAreEqual() + introspectionReporter.dangerCount == 14 + introspectionReporter.breakageCount == 0 + introspectionReporter.dangers.every { it.getCategory() == DiffCategory.DEPRECATION_ADDED } - } def "deprecated field was removed"() { def schemaOld = TestUtil.schemaFile("diff/" + "schema_deprecated_fields_new.graphqls", wireWithNoFetching()) def schemaNew = TestUtil.schemaFile("diff/" + "schema_deprecated_fields_removed.graphqls", wireWithNoFetching()) - DiffSet diffSet = DiffSet.diffSet(schemaOld, schemaNew) + SchemaDiffSet introspectionSchemaDiffSet = SchemaDiffSet.diffSetFromIntrospection(schemaOld, schemaNew) + SchemaDiffSet sdlSchemaDiffSet = SchemaDiffSet.diffSetFromSdl(schemaOld, schemaNew) def diff = new SchemaDiff() - diff.diffSchema(diffSet, chainedReporter) + diff.diffSchema(introspectionSchemaDiffSet, introspectionChainedReporter) + diff.diffSchema(sdlSchemaDiffSet, sdlChainedReporter) expect: + validateReportersAreEqual() + introspectionReporter.dangerCount == 0 + introspectionReporter.breakageCount == 12 + introspectionReporter.breakages.every { + it.getCategory() == DiffCategory.DEPRECATION_REMOVED + } + } + + def "union members are checked"() { + def oldSchema = TestUtil.schema(''' + type Query { + foo: Foo + } + union Foo = A | B + type A { + a: String + toRemove: String + } + type B { + b: String + } + ''') + def newSchema = TestUtil.schema(''' + type Query { + foo: Foo + } + union Foo = A | B + type A { + a: String + } + type B { + b: String + } + ''') + + when: + compareDiff(oldSchema, newSchema) + + then: + validateReportersAreEqual() + introspectionReporter.dangerCount == 0 + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages.every { + it.getCategory() == DiffCategory.MISSING + } + + } + + def "field renamed"() { + def oldSchema = TestUtil.schema(''' + type Query { + hello: String + } + ''') + def newSchema = TestUtil.schema(''' + type Query { + hello2: String + } + ''') + when: + compareDiff(oldSchema, newSchema) + + then: + // the old hello field is missing + validateReportersAreEqual() + introspectionReporter.breakageCount == 1 + introspectionReporter.breakages.every { + it.getCategory() == DiffCategory.MISSING + } + } + def "interface renamed"() { + def oldSchema = TestUtil.schema(''' + type Query implements Hello{ + hello: String + world: World + } + type World implements Hello { + hello: String + } + interface Hello { + hello: String + } + ''') + def newSchema = TestUtil.schema(''' + type Query implements Hello2{ + hello: String + world: World + } + type World implements Hello2 { + hello: String + } + interface Hello2 { + hello: String + } + ''') + when: + + compareDiff(oldSchema, newSchema) + + then: + // two breakages for World and Query not implementing Hello anymore + validateReportersAreEqual() + introspectionReporter.breakageCount == 2 + + } + + def "SchemaDiff and CapturingReporter have the same diff counts"() { + def schema1 = TestUtil.schema("type Query { f : String }") + def schema2 = TestUtil.schema("type Query { f : Int }") + + when: + def capturingReporter = new CapturingReporter() + def schemaDiff = new SchemaDiff() + def breakingCount = schemaDiff.diffSchema(SchemaDiffSet.diffSetFromIntrospection(schema1, schema1), capturingReporter) + then: + breakingCount == capturingReporter.getBreakageCount() + breakingCount == 0 + + when: + capturingReporter = new CapturingReporter() + schemaDiff = new SchemaDiff() + breakingCount = schemaDiff.diffSchema(SchemaDiffSet.diffSetFromIntrospection(schema1, schema2), capturingReporter) + + then: + breakingCount == capturingReporter.getBreakageCount() + breakingCount == 1 + } + + def "directives are removed should be breaking when enforceDirectives is enabled"() { + def oldSchema = TestUtil.schema(''' + directive @someDirective on FIELD_DEFINITION + + type test { + version: String! @someDirective + } + + type Query { + getTests: [test]! + } + ''') + def newSchema = TestUtil.schema(''' + type test { + version: String! + } + + type Query { + getTests: [test]! + } + ''') + def reporter = new CapturingReporter() + SchemaDiffSet diffSet = SchemaDiffSet.diffSetFromSdl(oldSchema, newSchema) + def diff = new SchemaDiff(SchemaDiff.Options.defaultOptions().enforceDirectives()) + when: + diff.diffSchema(diffSet, reporter) + + then: reporter.dangerCount == 0 - reporter.breakageCount == 11 + reporter.breakageCount == 1 reporter.breakages.every { - it.getCategory() == DiffCategory.DEPRECATION_REMOVED + it.getCategory() == DiffCategory.MISSING } } + def "When enforceDirectives is enabled, IntrospectionSchemaDiffSet should assert"() { + def oldSchema = TestUtil.schema(''' + directive @someDirective on FIELD_DEFINITION + + type test { + version: String! @someDirective + } + + type Query { + getTests: [test]! + } + ''') + def newSchema = TestUtil.schema(''' + type test { + version: String! + } + + type Query { + getTests: [test]! + } + ''') + def reporter = new CapturingReporter() + SchemaDiffSet diffSet = SchemaDiffSet.diffSetFromIntrospection(oldSchema, newSchema) + def diff = new SchemaDiff(SchemaDiff.Options.defaultOptions().enforceDirectives()) + when: + diff.diffSchema(diffSet, reporter) + + then: + thrown(AssertException) + } + + def "checkImplements emits ADDITION events for new interfaces"() { + def oldSchema = TestUtil.schema(''' + type Query { + foo: Foo + } + type Foo { + a: String + } + interface Bar { + a: String + } + ''') + def newSchema = TestUtil.schema(''' + type Query { + foo: Foo + } + type Foo implements Bar { + a: String + } + interface Bar { + a: String + } + ''') + + when: + compareDiff(oldSchema, newSchema) + + then: + validateReportersAreEqual() + introspectionReporter.breakageCount == 0 + introspectionReporter.infos.any { + it.category == DiffCategory.ADDITION && + it.typeKind == TypeKind.Object && + it.typeName == "Foo" && + it.level == DiffLevel.INFO + } + + } } diff --git a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy new file mode 100644 index 0000000000..46481fa7a5 --- /dev/null +++ b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy @@ -0,0 +1,1596 @@ +package graphql.schema.diffing + +import graphql.TestUtil +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLSchemaElement +import graphql.schema.GraphQLTypeVisitorStub +import graphql.schema.SchemaTransformer +import graphql.util.TraversalControl +import graphql.util.TraverserContext +import spock.lang.Specification + +import static graphql.TestUtil.schema + +class SchemaDiffingTest extends Specification { + + + def "test schema generation"() { + given: + def schema = schema(""" + type Query { + hello: String + } + """) + + when: + def schemaGraph = new SchemaGraphFactory().createGraph(schema) + + then: + schemaGraph.getVerticesByType().keySet().size() == 8 + schemaGraph.getVerticesByType(SchemaGraph.SCHEMA).size() == 1 + schemaGraph.getVerticesByType(SchemaGraph.OBJECT).size() == 7 + schemaGraph.getVerticesByType(SchemaGraph.ENUM).size() == 2 + schemaGraph.getVerticesByType(SchemaGraph.ENUM_VALUE).size() == 27 + schemaGraph.getVerticesByType(SchemaGraph.INTERFACE).size() == 0 + schemaGraph.getVerticesByType(SchemaGraph.UNION).size() == 0 + schemaGraph.getVerticesByType(SchemaGraph.SCALAR).size() == 2 + schemaGraph.getVerticesByType(SchemaGraph.FIELD).size() == 40 + schemaGraph.getVerticesByType(SchemaGraph.ARGUMENT).size() == 11 + schemaGraph.getVerticesByType(SchemaGraph.INPUT_FIELD).size() == 0 + schemaGraph.getVerticesByType(SchemaGraph.INPUT_OBJECT).size() == 0 + schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 7 + schemaGraph.getVerticesByType(SchemaGraph.APPLIED_ARGUMENT).size() == 0 + schemaGraph.getVerticesByType(SchemaGraph.APPLIED_DIRECTIVE).size() == 0 + schemaGraph.size() == 97 + + } + + def "test rename field"() { + given: + def schema1 = schema(""" + type Query { + hello: String + } + """) + def schema2 = schema(""" + type Query { + hello2: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + then: + diff.size() == 1 + + } + + def "test rename field 2"() { + given: + def schema1 = schema(""" + type Query { + fixed: String + hello: String + f3(arg3: String): String + } + type O1 { + f1(arg1: String, x: String): String + } + + """) + def schema2 = schema(""" + type Query { + hello2: String + fixed: String + f3(arg4: String): String + } + type O2 { + f2(arg2: String, y: String): String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + then: + diff.size() == 6 + + } + + def "adding fields and rename and delete"() { + given: + def schema1 = schema(""" + type Query { + hello: String + toDelete:String + newField: String + newField2: String + } + type Mutation { + unchanged: Boolean + unchanged2: Other + } + type Other { + id: ID + } + """) + def schema2 = schema(""" + type Query { + helloRenamed: String + newField: String + newField2: String + } + type Mutation { + unchanged: Boolean + unchanged2: Other + } + type Other { + id: ID + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + then: + diff.size() == 4 + + } + + def "remove field and rename type"() { + given: + def schema1 = schema(""" + type Query { + foo: Foo + } + type Foo { + bar: Bar + toDelete:String + } + type Bar { + id: ID + name: String + } + """) + def schema2 = schema(""" + type Query { + foo: FooRenamed + } + type FooRenamed { + bar: Bar + } + type Bar { + id: ID + name: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + then: + diff.size() == 5 + + } + + def "renamed field and added field and type"() { + given: + def schema1 = schema(""" + type Query { + foo: Foo + } + type Foo { + foo:String + } + """) + def schema2 = schema(""" + type Query { + foo: Foo + } + type Foo { + fooRenamed:String + bar: Bar + } + type Bar { + id: String + name: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + then: + /** + * 1: Changed Field + * 2: New Object + * 3-8: Three new Fields + DummyTypes + * 9-17: Edges from Object to new Fields (3) + Edges from Field to Dummy Type (3) + Edges from DummyType to String + * */ + diff.size() == 11 + + } + + + def "test two field renames one type rename"() { + given: + def schema1 = schema(""" + type Query { + hello: Foo + } + type Foo { + foo: String + } + """) + def schema2 = schema(""" + type Query { + hello2: Foo2 + } + type Foo2 { + foo2: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 4 + + } + + def "test field type change"() { + given: + def schema1 = schema(""" + type Query { + hello: Boolean + } + """) + def schema2 = schema(""" + type Query { + hello: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + /** + * Deleting the edge from __DUMMY_TYPE_VERTICE to Boolean + * Insert the edge from __DUMMY_TYPE_VERTICE to String + */ + diff.size() == 2 + + } + + def "change object type name used once"() { + given: + def schema1 = schema(""" + type Query { + hello: Foo + } + type Foo { + foo: String + } + """) + def schema2 = schema(""" + type Query { + hello: Foo2 + } + type Foo2 { + foo: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 2 + + } + + def "remove Interface from Object"() { + given: + def schema1 = schema(""" + type Query { + hello: Foo + hello2: Foo2 + } + interface Node { + id: ID + } + type Foo implements Node{ + id: ID + } + type Foo2 implements Node{ + id: ID + } + """) + def schema2 = schema(""" + type Query { + hello: Foo + hello2: Foo2 + } + interface Node { + id: ID + } + type Foo implements Node{ + id: ID + } + type Foo2 { + id: ID + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 1 + + } + + def "inserting interface with same name as previous object"() { + given: + def schema1 = schema(""" + type Query { + luna: Pet + } + type Pet { + name: String + } + """) + def schema2 = schema(""" + type Query { + luna: Pet + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + for (EditOperation operation : diff) { + println operation + } + + then: + /** + * If we would allow to map Object to Interface this would have a result of 8 + */ + diff.size() == 8 + + } + + def "remove scalars and add Enums"() { + given: + def schema1 = schema(""" + scalar S1 + scalar S2 + scalar S3 + enum E1{ + E1 + } + type Query { + s1: S1 + s2: S2 + s3: S3 + e1: E1 + } + """) + def schema2 = schema(""" + enum E1{ + E1 + } + enum E2{ + E2 + } + type Query { + e1: E1 + e2: E2 + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + for (EditOperation operation : diff) { + println operation + } + + then: + diff.size() == 15 + + } + + def "change large schema a bit"() { + given: + def largeSchema = TestUtil.schemaFromResource("large-schema-2.graphqls", TestUtil.mockRuntimeWiring) + int counter = 0; + def changedOne = SchemaTransformer.transformSchema(largeSchema, new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition fieldDefinition, TraverserContext context) { + if (fieldDefinition.getName() == "field50") { + counter++; + return changeNode(context, fieldDefinition.transform({ it.name("field50Changed") })) + } + return TraversalControl.CONTINUE + } + }) + println "changed fields: " + counter + when: + def diff = new SchemaDiffing().diffGraphQLSchema(largeSchema, changedOne) + then: + diff.size() == 171 + } + + def "change large schema a bit 2"() { + given: + def largeSchema = TestUtil.schemaFromResource("large-schema-2.graphqls", TestUtil.mockRuntimeWiring) + int counter = 0; + def changedOne = SchemaTransformer.transformSchema(largeSchema, new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition fieldDefinition, TraverserContext context) { + if (fieldDefinition.getName() == "field50") { + counter++; + return deleteNode(context); + } + return TraversalControl.CONTINUE + } + }) + println "deleted fields: " + counter + when: + def diff = new SchemaDiffing().diffGraphQLSchema(largeSchema, changedOne) + diff.each { println it } + then: + // deleting 171 fields + dummyTypes + 3 edges for each field,dummyType pair = 5*171 + diff.size() == 3 * 171 + } + + def "change object type name used twice"() { + given: + def schema1 = schema(""" + type Query { + hello: Foo + hello2: Foo + } + type Foo { + foo: String + } + """) + def schema2 = schema(""" + type Query { + hello: Foo2 + hello2: Foo2 + } + type Foo2 { + foo: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 3 + + } + + def "change directive not applied"() { + given: + def schema1 = schema(""" + directive @foo on FIELD_DEFINITION + type Query { + hello: String + } + """) + def schema2 = schema(""" + directive @foo2 on FIELD_DEFINITION + type Query { + hello: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 1 + + } + + def "change directive which is also applied"() { + given: + def schema1 = schema(""" + directive @foo on FIELD_DEFINITION + type Query { + hello: String @foo + } + """) + def schema2 = schema(""" + directive @foo2 on FIELD_DEFINITION + type Query { + hello: String @foo2 + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 2 + + } + + def "delete a field"() { + given: + def schema1 = schema(""" + type Query { + hello: String + toDelete: String + } + """) + def schema2 = schema(""" + type Query { + hello: String + } + """) + + def diffing = new SchemaDiffing() + when: + def diff = diffing.diffGraphQLSchema(schema1, schema2) + for (EditOperation editOperation : diff) { + println editOperation + } + + then: + diff.size() == 3 + } + + + def "added different types and fields"() { + given: + def schema1 = schema(""" + type Query { + pets: [Pet] + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + """) + def schema2 = schema(""" + type Query { + pets: [Animal] @deprecated + animals: [Animal] + } + interface Animal { + name: String + friend: Human + } + type Human { + name: String + } + interface Pet implements Animal { + name: String + friend: Human + } + type Dog implements Pet & Animal { + name: String + friend: Human + } + type Cat implements Pet & Animal { + name: String + friend: Human + } + type Fish implements Pet & Animal { + name: String + friend: Human + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + + then: + diff.size() == 41 + + } + + def "adding a few things "() { + given: + def schema1 = schema(""" + type Query { + pets: [Pet] + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + """) + def schema2 = schema(""" + type Query { + pets: [Pet] + animals: [Animal] + } + interface Animal { + name: String + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + type Fish implements Pet{ + name: String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 12 + } + + def "adding a few things plus introducing new interface"() { + given: + def schema1 = schema(""" + type Query { + pets: [Pet] + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + """) + def schema2 = schema(""" + type Query { + pets: [Pet] + animals: [Animal] + } + interface Animal { + name: String + } + interface Pet implements Animal { + name: String + } + type Dog implements Pet & Animal { + name: String + } + type Cat implements Pet & Animal { + name: String + } + type Fish implements Pet & Animal { + name: String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 16 + } + + def "adding a few things plus introducing new interface plus changing return type"() { + given: + def schema1 = schema(""" + type Query { + pets: [Pet] + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + """) + def schema2 = schema(""" + type Query { + pets: [Animal] + animals: [Animal] + } + interface Animal { + name: String + } + interface Pet implements Animal { + name: String + } + type Dog implements Pet & Animal { + name: String + } + type Cat implements Pet & Animal { + name: String + } + type Fish implements Pet & Animal { + name: String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 18 + } + + def "adding a few things plus introducing new interface plus changing return type plus adding field in Interface"() { + given: + def schema1 = schema(""" + type Query { + pets: [Pet] + } + interface Pet { + name: String + } + type Dog implements Pet { + name: String + } + type Cat implements Pet { + name: String + } + """) + def schema2 = schema(""" + type Query { + pets: [Pet] + } + interface Animal { + name: String + friend: String + } + interface Pet implements Animal { + name: String + friend: String + } + type Dog implements Pet & Animal { + name: String + friend: String + } + type Cat implements Pet & Animal { + name: String + friend: String + } + type Fish implements Pet & Animal { + name: String + friend: String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 28 + } + + def "add a field"() { + given: + def schema1 = schema(""" + type Query { + hello: String + } + """) + def schema2 = schema(""" + type Query { + hello: String + newField: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 3 + + } + + def "add a field and Type"() { + given: + def schema1 = schema(""" + type Query { + hello: String + } + """) + def schema2 = schema(""" + type Query { + hello: String + newField: Foo + } + type Foo { + foo: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + diff.each { println it } + + then: + diff.size() == 7 + + } + + def "add a field and Type and remove a field"() { + given: + def schema1 = schema(""" + type Query { + hello: String + } + """) + def schema2 = schema(""" + type Query { + newField: Foo + } + type Foo { + foo: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + diff.size() == 7 + + } + + + def "change a Union "() { + given: + def schema1 = schema(""" + type Query { + pet: Pet + } + union Pet = Dog | Cat + type Dog { + name: String + } + type Cat { + name: String + } + """) + def schema2 = schema(""" + type Query { + pet: Pet + } + union Pet = Dog | Bird | Fish + type Dog { + name: String + } + type Bird { + name: String + } + type Fish { + name: String + } + """) + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + /** + * 1. Change Cat to Bird + * 2,3: Insert Fish, Insert Fish.name + * 4. Insert Edge from Fish to Fish.name + * 5 Insert Edge from Fish.name -> String + * 6. Insert edge from Pet -> Fish + */ + diff.size() == 6 + + } + + def "adding an argument "() { + given: + def schema1 = schema(""" + type Query { + foo: String + } + """) + def schema2 = schema(""" + type Query { + foo(arg: Int): String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 4 + } + + def "changing an argument "() { + given: + def schema1 = schema(""" + type Query { + foo(arg: Int): String + } + """) + def schema2 = schema(""" + type Query { + foo(arg2: Boolean): String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 4 + } + + def "input fields"() { + given: + def schema1 = schema(""" + type Query { + foo(arg: I1, arg2: I2): String + } + input I1 { + f1: String + f2: String + } + input I2 { + g1: String + g2: String + } + """) + def schema2 = schema(""" + type Query { + foo(arg: I1,arg2: I2 ): String + } + input I1 { + f1: String + } + input I2 { + g2: String + g3: String + g4: String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + /** + * The test here is that f2 is deleted and one g is renamed and g3 is inserted. + * It would be less operations with f2 renamed to g3, but this would defy expectations. + * + */ + operations.size() == 7 + } + + def "arguments in fields"() { + given: + def schema1 = schema(""" + type Query { + a(f1: String, f2:String): String + b(g1: String, g2:String): O1 + } + type O1 { + c(h1: String, h2:String): String + d(i1: String, i2:String): O1 + } + """) + def schema2 = schema(""" + type Query { + a(f1: String): String + b(g2: String, g3:String, g4: String): String + } + type O1 { + c(h1: String, h2:String): String + renamed(i2: String, i3:String): O1 + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + /** + * Query.f2 deleted + * O1.b.g1 => O1.b.g4 + * O1.d.i1 -> O.renamed.i3 + * O1.d => O1.renamed + * Inserted O1.b.g3 + */ + operations.size() == 11 + } + + def "same arguments in different contexts"() { + given: + def schema1 = schema(""" + type Query { + foo(someArg:String): String + } + """) + def schema2 = schema(""" + type Query { + field1(arg1: String): String + field2(arg1: String): String + field3(arg1: String): String + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 14 + } + + def "adding enum value"() { + given: + def schema1 = schema(""" + type Query { + foo: Foo + } + enum Foo { + V1 + V2 + } + """) + def schema2 = schema(""" + type Query { + foo: Foo + } + enum Foo { + V1 + V2 + V3 + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 2 + } + + def "rename enum value"() { + given: + def schema1 = schema(""" + type Query { + foo: Foo + } + enum Foo { + V1 + V2 + } + """) + def schema2 = schema(""" + type Query { + foo: Foo + } + enum Foo { + V1 + V3 + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 1 + } + + def "arguments in directives changed"() { + given: + def schema1 = schema(''' + directive @d(a1: String, a2: String) on FIELD_DEFINITION + type Query { + foo: String @d + } + ''') + def schema2 = schema(""" + directive @d(a1: String, a3: String, a4: String) on FIELD_DEFINITION + type Query { + foo: String @d + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + /** + * change: a2 => a3 + * insert: a4 + * new edge from directive to a4 + * new edge from a4 to String + */ + operations.size() == 4 + } + + def "change applied argument"() { + given: + def schema1 = schema(''' + directive @d(a1: String, a2: String) on FIELD_DEFINITION + type Query { + foo: String @d(a1: "S1", a2: "S2") + } + ''') + def schema2 = schema(""" + directive @d(a1: String, a2: String) on FIELD_DEFINITION + type Query { + foo: String @d(a2: "S2Changed", a1: "S1Changed") + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 2 + } + + def "applied arguments in different contexts"() { + given: + def schema1 = schema(''' + directive @d(a1: String, a2: String, b1: String, b2: String, b3: String, b4: String) on FIELD_DEFINITION + type Query { + foo: String @d(a1: "a1", a2: "a2") + foo2: String @d(b1: "b1", b2: "b2") + } + ''') + def schema2 = schema(""" + directive @d(a1: String, a2: String, b1: String, b2: String, b3: String, b4: String) on FIELD_DEFINITION + type Query { + foo: String @d(a1: "a1") + foo2: String @d(b2: "b2", b3: "b3", b4: "b4") + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + /** + * The test here is that the context of the applied argument is considered and that a2 is deleted and one b is inserted and another one changed. + * Note: this is not longer true + */ + operations.size() == 8 + } + + def "with directives"() { + given: + def schema1 = schema(''' + directive @TopLevelType on OBJECT + directive @specialId(type: String) on ARGUMENT_DEFINITION + type Query { + foo: Foo + } + type Foo @TopLevelType { + user(location: ID! @specialId(type : "someId"), limit: Int = 25, start: Int, title: String): PaginatedList + } + type PaginatedList { + count: Int + } + ''') + def schema2 = schema(""" + directive @TopLevelType on OBJECT + directive @specialId(type: String) on ARGUMENT_DEFINITION + type Query { + foo: Foo + } + type Foo @TopLevelType { + user(location: ID! @specialId(type : "someId"), limit: Int = 25, start: Int, title: String): PaginatedList + other(after: String, favourite: Boolean, first: Int = 25, location: ID! @specialId(type : "someId"), label: [String], offset: Int, status: String, type: String): PaginatedList + } + type PaginatedList { + count: Int + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + + then: + operations.size() == 31 + } + + def "built in directives"() { + given: + def schema1 = schema(''' + directive @specialId(type: String) on FIELD_DEFINITION + + + type Query { + hello: String @specialId(type: "someId") + } + ''') + def schema2 = schema(""" + directive @specialId(type: String) on FIELD_DEFINITION + + type Query { + renamedHello: String @specialId(type: "otherId") + } + """) + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 2 + } + + def "unchanged scheme"() { + given: + def schema1 = schema(''' + directive @specialId(type: String) on FIELD_DEFINITION + directive @Magic(owner: String!, type: String!) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION + + + type Query { + hello: String @specialId(type: "someId") + foo(arg: Int, arg2: String = "hello"): [Foo]! + old: Boolean @deprecated + someOther(input1: MyInput, input2: OtherInput): E + } + type Foo { + id: ID + e1: E + union: MyUnion + } + union MyUnion = Foo | Bar + type Bar { + id: ID + } + enum E { + E1, E2, E3 + } + input MyInput { + id: ID + other: String! @Magic(owner: "Me", type: "SomeType") + } + input OtherInput { + inputField1: ID! @Magic(owner: "O1", type: "T1") + inputField2: ID! @Magic(owner: "O2", type: "T2") + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema1) + operations.each { println it } + + then: + operations.size() == 0 + } + + def "changed query operation type "() { + given: + def schema1 = schema(''' + type Query { + foo: String + } + type MyQuery { + foo: String + } + ''') + def schema2 = schema(''' + schema { + query: MyQuery + } + type Query { + foo: String + } + type MyQuery { + foo: String + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + // delete edge and insert new one + operations.size() == 2 + } + + def "applied schema directives"() { + given: + def schema1 = schema(''' + directive @foo(arg: String) on SCHEMA + + schema @foo(arg: "bar") { + query: MyQuery + } + type MyQuery { + foo: String + } + ''') + def schema2 = schema(''' + directive @foo(arg: String) on SCHEMA + + schema @foo(arg: "barChanged") { + query: MyQuery + } + type MyQuery { + foo: String + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + // applied argument changed + operations.size() == 1 + + } + + def "change description"() { + given: + def schema1 = schema(''' + "Hello World" + type Query { + "helloDesc" + hello: String + } + ''') + def schema2 = schema(''' + "Hello World now" + type Query { + "helloDescChanged" + hello: String + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 2 + + } + + def "change default value"() { + given: + def schema1 = schema(''' + input I { + someNumber: Int = 100 + } + type Query { + hello(arg: String = "defaultValue", i: I): String + } + ''') + def schema2 = schema(''' + input I { + someNumber: Int = 200 + } + type Query { + hello(arg: String = "defaultValueChanged",i: I): String + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 2 + + } + + def "change field type, but not the wrapped type "() { + given: + def schema1 = schema(''' + type Query { + hello: String + hello2: String + } + ''') + def schema2 = schema(''' + type Query { + hello: String! + hello2: [[String!]] + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 2 + operations.findAll({ it.operation == EditOperation.Operation.CHANGE_EDGE }).size() == 2 + + } + + def "Recursive input field with default "() { + given: + def schema1 = schema(''' + input I { + name: String + field: I = {name: "default name"} + } + type Query { + foo(arg: I): String + } + ''') + def schema2 = schema(''' + input I { + name: String + field: [I] = [{name: "default name"}] + } + type Query { + foo(arg: I): String + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + // changing the label of the edge to the type + operations.size() == 1 + operations.findAll({ it.operation == EditOperation.Operation.CHANGE_EDGE }).size() == 1 + + } + + def "directive argument default value changed"() { + given: + def schema1 = schema(''' + type Query { + foo: String + } + directive @d(foo:String = "A") on FIELD + ''') + def schema2 = schema(''' + type Query { + foo: String + } + directive @d(foo: String = "B") on FIELD + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + // changing the label of the edge to the type + operations.size() == 1 + operations.findAll({ it.operation == EditOperation.Operation.CHANGE_EDGE }).size() == 1 + + + } + + def "object applied directive argument change"() { + given: + def schema1 = schema(''' + directive @d(arg:String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "foo") + } + + ''') + def schema2 = schema(''' + directive @d(arg: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "bar") + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 1 + } + + def "object applied directive rename"() { + given: + def schema1 = schema(''' + directive @d1(arg:String) on FIELD_DEFINITION + directive @d2(arg:String) on FIELD_DEFINITION + + type Query { + foo: String @d1(arg: "foo") + } + + ''') + def schema2 = schema(''' + directive @d1(arg:String) on FIELD_DEFINITION + directive @d2(arg:String) on FIELD_DEFINITION + + type Query { + foo: String @d2(arg: "foo") + } + ''') + + when: + def operations = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + operations.each { println it } + + then: + operations.size() == 1 + } + + + /* + * The schema can't be mapped at the moment because + * the arguments mapping doesn't work. + * The PossibleMappingCalculator finds two context: "Object.Query" (with one argument vertex) which is deleted + * and "Object.Foo" (with two argument vertices) which is added. Therefore one isolated vertex is added in the source + * to align both context. + * + * But the parent restrictions dictate that the target parent of i1 must be Query.foo, because Query.echo is fixed mapped + * to Query.foo. But that would mean i1 is deleted, but there is no isolated argument vertex for the target because of + * the contexts. So there is no possible mapping and the exception is thrown. + */ + + def "bug produced well known exception"() { + given: + def schema1 = schema(''' + type Query { + echo(i1: String): String + } + ''') + def schema2 = schema(''' + type Query { + foo: Foo + } + type Foo { + a(i2: String): String + b(i3: String): String + } +''') + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + then: + def e = thrown(RuntimeException) + e.message.contains("bug: ") + } + +} + + diff --git a/src/test/groovy/graphql/schema/diffing/ana/EditOperationAnalyzerAppliedDirectivesTest.groovy b/src/test/groovy/graphql/schema/diffing/ana/EditOperationAnalyzerAppliedDirectivesTest.groovy new file mode 100644 index 0000000000..2fc9336bcc --- /dev/null +++ b/src/test/groovy/graphql/schema/diffing/ana/EditOperationAnalyzerAppliedDirectivesTest.groovy @@ -0,0 +1,1947 @@ +package graphql.schema.diffing.ana + +import graphql.TestUtil +import graphql.schema.diffing.SchemaDiffing +import spock.lang.Specification + +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveAddition +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentAddition +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentDeletion +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentRename +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveArgumentValueModification +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveDeletion +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveDirectiveArgumentLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveEnumLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveEnumValueLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInputObjectFieldLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInputObjectLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceFieldArgumentLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceFieldLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectFieldArgumentLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectFieldLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveScalarLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveUnionLocation +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveModification +import static graphql.schema.diffing.ana.SchemaDifference.EnumModification +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectModification +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceModification +import static graphql.schema.diffing.ana.SchemaDifference.ObjectModification +import static graphql.schema.diffing.ana.SchemaDifference.ScalarModification +import static graphql.schema.diffing.ana.SchemaDifference.UnionModification + +class EditOperationAnalyzerAppliedDirectivesTest extends Specification { + + def "applied directive argument added interface field"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query implements I{ + foo: String + } + interface I { + foo: String @d + } + ''' + def newSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query implements I{ + foo: String + } + interface I { + foo: String @d(arg1: "foo") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def argumentAddition = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentAddition) + def location = argumentAddition[0].locationDetail as AppliedDirectiveInterfaceFieldLocation + location.interfaceName == "I" + location.fieldName == "foo" + argumentAddition[0].argumentName == "arg1" + } + + def "applied directive argument value changed object"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on OBJECT + + type Query @d(arg1:"foo") { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1: String) on OBJECT + + type Query @d(arg1: "bar") { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def detail = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveObjectLocation + location.name == "Query" + location.directiveName == "d" + detail[0].argumentName == "arg1" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed object field"() { + given: + def oldSdl = ''' + directive @d(arg:String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "foo") + } + ''' + def newSdl = ''' + directive @d(arg: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "bar") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def detail = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveObjectFieldLocation + location.objectName == "Query" + location.fieldName == "foo" + location.directiveName == "d" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed object field argument"() { + given: + def oldSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d(directiveArg: "foo")) : String + } + ''' + def newSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d(directiveArg: "bar")) : String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def detail = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentValueModification) + def locationDetail = detail[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation + locationDetail.objectName == "Query" + locationDetail.fieldName == "foo" + locationDetail.argumentName == "arg" + locationDetail.directiveName == "d" + detail[0].argumentName == "directiveArg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + + def "applied directive argument value changed interface"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I @d(arg1: "foo") { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I @d(arg1: "bar") { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def detail = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveInterfaceLocation + location.name == "I" + location.directiveName == "d" + detail[0].argumentName == "arg1" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + + def "applied directive argument value changed interface field"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query implements I{ + foo: String + } + interface I { + foo: String @d(arg1: "foo") + } + ''' + def newSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query implements I{ + foo: String + } + interface I { + foo: String @d(arg1: "bar") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def detail = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveInterfaceFieldLocation + location.interfaceName == "I" + location.fieldName == "foo" + location.directiveName == "d" + detail[0].argumentName == "arg1" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed interface field argument"() { + given: + def oldSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d(directiveArg: "foo") ): String + } + ''' + def newSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d(directiveArg: "bar") ): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def detail = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation + location.interfaceName == "I" + location.fieldName == "foo" + location.argumentName == "arg" + location.directiveName == "d" + detail[0].argumentName == "directiveArg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed input object"() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d(arg: "foo"){ + a: String + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d(arg: "bar") { + a: String + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def detail = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveInputObjectLocation + location.name == "I" + location.directiveName == "d" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + + } + + + def "applied directive argument value changed input object field "() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d(arg: "foo") + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d(arg: "bar") + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def detail = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveInputObjectFieldLocation + location.inputObjectName == "I" + location.fieldName == "a" + location.directiveName == "d" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed enum"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM + enum E @d(arg:"foo") { A, B } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM + enum E @d(arg: "bar") { A, B } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def detail = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveEnumLocation + location.name == "E" + location.directiveName == "d" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed enum value"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d(arg: "foo") } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d(arg: "bar") } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def detail = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveEnumValueLocation + location.enumName == "E" + location.valueName == "B" + location.directiveName == "d" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed union"() { + given: + def oldSdl = ''' + directive @d(arg: String) on UNION + type Query { + foo: U + } + union U @d(arg: "foo") = A | B + type A { a: String } + type B { b: String } + ''' + def newSdl = ''' + directive @d(arg: String) on UNION + type Query { + foo: U + } + union U @d(arg: "bar") = A | B + type A { a: String } + type B { b: String } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionModification + def detail = (changes.unionDifferences["U"] as UnionModification).getDetails(AppliedDirectiveArgumentValueModification) + (detail[0].locationDetail as AppliedDirectiveUnionLocation).name == "U" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed scalar"() { + given: + def oldSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d(arg: "foo") + type Query { + foo: DateTime + } + ''' + def newSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d(arg: "bar") + type Query { + foo: DateTime + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["DateTime"] instanceof ScalarModification + def detail = (changes.scalarDifferences["DateTime"] as ScalarModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveScalarLocation + location.name == "DateTime" + location.directiveName == "d" + detail[0].argumentName == "arg" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + def "applied directive argument value changed directive argument"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on ARGUMENT_DEFINITION + directive @d2(arg:String @d(arg1:"foo")) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1:String) on ARGUMENT_DEFINITION + directive @d2(arg:String @d(arg1:"bar")) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d2"] instanceof DirectiveModification + (changes.directiveDifferences["d2"] as DirectiveModification).details.size() == 1 + def detail = (changes.directiveDifferences["d2"] as DirectiveModification).getDetails(AppliedDirectiveArgumentValueModification) + def location = detail[0].locationDetail as AppliedDirectiveDirectiveArgumentLocation + location.directiveDefinitionName == "d2" + location.directiveName == "d" + location.argumentName == "arg" + detail[0].argumentName == "arg1" + detail[0].oldValue == '"foo"' + detail[0].newValue == '"bar"' + } + + + def "applied directive argument added interface"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I @d { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I @d(arg1: "foo") { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def argumentAddition = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentAddition) + def location = argumentAddition[0].locationDetail as AppliedDirectiveInterfaceLocation + location.name == "I" + argumentAddition[0].argumentName == "arg1" + } + + def "applied directive argument deleted interface field "() { + given: + def oldSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query implements I{ + foo: String + } + interface I { + foo: String @d(arg1: "foo") + } + ''' + def newSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query implements I{ + foo: String + } + interface I { + foo: String @d + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def argumentDeletions = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = argumentDeletions[0].locationDetail as AppliedDirectiveInterfaceFieldLocation + location.interfaceName == "I" + location.fieldName == "foo" + argumentDeletions[0].argumentName == "arg1" + } + + def "applied directive argument deleted interface"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I @d(arg1: "foo") { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1:String) on INTERFACE + + type Query implements I { + foo: String + } + interface I @d{ + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def argumentDeletions = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = argumentDeletions[0].locationDetail as AppliedDirectiveInterfaceLocation + location.name == "I" + argumentDeletions[0].argumentName == "arg1" + } + + + def "applied directive added input object field "() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d(arg: "foo") + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def appliedDirective = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveInputObjectFieldLocation).inputObjectName == "I" + (appliedDirective[0].locationDetail as AppliedDirectiveInputObjectFieldLocation).fieldName == "a" + appliedDirective[0].name == "d" + } + + def "applied directive added object field"() { + given: + def oldSdl = ''' + directive @d(arg:String) on FIELD_DEFINITION + + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "foo") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirective = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldLocation).objectName == "Query" + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldLocation).fieldName == "foo" + appliedDirective[0].name == "d" + } + + def "applied directive argument value changed object field "() { + given: + def oldSdl = ''' + directive @d(arg:String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "foo1") + } + ''' + def newSdl = ''' + directive @d(arg: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "foo2") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def argumentValueModifications = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentValueModification) + (argumentValueModifications[0].locationDetail as AppliedDirectiveObjectFieldLocation).objectName == "Query" + (argumentValueModifications[0].locationDetail as AppliedDirectiveObjectFieldLocation).fieldName == "foo" + argumentValueModifications[0].argumentName == "arg" + argumentValueModifications[0].oldValue == '"foo1"' + argumentValueModifications[0].newValue == '"foo2"' + } + + def "applied directive argument name changed object field"() { + given: + def oldSdl = ''' + directive @d(arg1:String, arg2: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg1: "foo") + } + ''' + def newSdl = ''' + directive @d(arg1: String, arg2: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg2: "foo") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def argumentRenames = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentRename) + def location = argumentRenames[0].locationDetail as AppliedDirectiveObjectFieldLocation + location.objectName == "Query" + location.fieldName == "foo" + argumentRenames[0].oldName == "arg1" + argumentRenames[0].newName == "arg2" + } + + def "applied directive argument added object"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on OBJECT + + type Query @d { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1: String) on OBJECT + + type Query @d(arg1: "foo") { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def argumentAddition = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentAddition) + def location = argumentAddition[0].locationDetail as AppliedDirectiveObjectLocation + location.name == "Query" + argumentAddition[0].argumentName == "arg1" + } + + def "applied directive argument added object field"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query { + foo: String @d + } + ''' + def newSdl = ''' + directive @d(arg1: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg1: "foo") + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def argumentAddition = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentAddition) + def location = argumentAddition[0].locationDetail as AppliedDirectiveObjectFieldLocation + location.objectName == "Query" + location.fieldName == "foo" + argumentAddition[0].argumentName == "arg1" + } + + def "applied directive argument deleted object field"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg1: "foo") + } + ''' + def newSdl = ''' + directive @d(arg1: String) on FIELD_DEFINITION + + type Query { + foo: String @d + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def argumentDeletions = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = argumentDeletions[0].locationDetail as AppliedDirectiveObjectFieldLocation + location.objectName == "Query" + location.fieldName == "foo" + argumentDeletions[0].argumentName == "arg1" + } + + def "applied directive argument deleted object"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on OBJECT + + type Query @d(arg1: "foo"){ + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1: String) on OBJECT + + type Query @d { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def argumentDeletions = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = argumentDeletions[0].locationDetail as AppliedDirectiveObjectLocation + location.name == "Query" + argumentDeletions[0].argumentName == "arg1" + } + + def "applied directive added input object"() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I { + a: String + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d(arg: "foo") { + a: String + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def appliedDirective = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveInputObjectLocation).name == "I" + appliedDirective[0].name == "d" + } + + def "applied directive added object"() { + given: + def oldSdl = ''' + directive @d(arg:String) on OBJECT + + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg: String) on OBJECT + + type Query @d(arg: "foo") { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + (changes.objectDifferences["Query"] as ObjectModification).details.size() == 1 + def appliedDirective = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveObjectLocation).name == "Query" + appliedDirective[0].name == "d" + } + + def "applied directive added interface"() { + given: + def oldSdl = ''' + directive @d(arg:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg: String) on INTERFACE + + type Query implements I { + foo: String + } + interface I @d(arg: "foo") { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def appliedDirective = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceLocation).name == "I" + appliedDirective[0].name == "d" + } + + def "applied directive added union"() { + given: + def oldSdl = ''' + directive @d(arg: String) on UNION + type Query { + foo: U + } + union U = A | B + type A { a: String } + type B { b: String } + ''' + def newSdl = ''' + directive @d(arg: String) on UNION + type Query { + foo: U + } + union U @d(arg: "foo") = A | B + type A { a: String } + type B { b: String } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionModification + def appliedDirective = (changes.unionDifferences["U"] as UnionModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveUnionLocation).name == "U" + appliedDirective[0].name == "d" + } + + def "applied directive added scalar"() { + given: + def oldSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime + type Query { + foo: DateTime + } + ''' + def newSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d(arg: "foo") + type Query { + foo: DateTime + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["DateTime"] instanceof ScalarModification + def appliedDirective = (changes.scalarDifferences["DateTime"] as ScalarModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveScalarLocation).name == "DateTime" + appliedDirective[0].name == "d" + } + + def "applied directive added enum"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM + enum E { A, B } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM + enum E @d(arg: "foo") { A, B } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def appliedDirective = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveEnumLocation).name == "E" + appliedDirective[0].name == "d" + } + + def "applied directive added enum value"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d(arg: "foo") } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def appliedDirective = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveEnumValueLocation).enumName == "E" + (appliedDirective[0].locationDetail as AppliedDirectiveEnumValueLocation).valueName == "B" + appliedDirective[0].name == "d" + } + + def "applied directive argument added enum value"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d(arg: "foo") } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def argumentAdded = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveArgumentAddition) + def location = argumentAdded[0].locationDetail as AppliedDirectiveEnumValueLocation + location.enumName == "E" + location.valueName == "B" + location.directiveName == "d" + argumentAdded[0].argumentName == "arg" + } + + def "applied directive argument deleted enum value"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d(arg: "foo") } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def argumentDeletion = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = argumentDeletion[0].locationDetail as AppliedDirectiveEnumValueLocation + location.enumName == "E" + location.valueName == "B" + location.directiveName == "d" + argumentDeletion[0].argumentName == "arg" + } + + + def "applied directive added object field argument"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String) : String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d(arg: "foo")) : String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirective = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation).objectName == "Query" + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation).fieldName == "foo" + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation).argumentName == "arg" + appliedDirective[0].name == "d" + } + + def "applied directive argument added object field argument"() { + given: + def oldSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d) : String + } + ''' + def newSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d(directiveArg: "foo")) : String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirectiveArgumentAddition = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentAddition) + def locationDetail = appliedDirectiveArgumentAddition[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation + locationDetail.objectName == "Query" + locationDetail.fieldName == "foo" + locationDetail.argumentName == "arg" + appliedDirectiveArgumentAddition[0].argumentName == "directiveArg" + } + + def "applied directive argument deleted object field argument"() { + given: + def oldSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d(directiveArg: "foo")) : String + } + ''' + def newSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d) : String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirectiveArgumentDeletion = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveArgumentDeletion) + def locationDetail = appliedDirectiveArgumentDeletion[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation + locationDetail.objectName == "Query" + locationDetail.fieldName == "foo" + locationDetail.argumentName == "arg" + appliedDirectiveArgumentDeletion[0].argumentName == "directiveArg" + } + + def "applied directive added interface field argument"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def appliedDirective = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveAddition) + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation).interfaceName == "I" + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation).fieldName == "foo" + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation).argumentName == "arg" + appliedDirective[0].name == "d" + } + + def "applied directive argument added interface field argument"() { + given: + def oldSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d): String + } + ''' + def newSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d(directiveArg: "foo") ): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def appliedDirective = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentAddition) + def location = appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation + location.interfaceName == "I" + location.fieldName == "foo" + location.argumentName == "arg" + appliedDirective[0].argumentName == "directiveArg" + } + + def "applied directive argument deleted interface field argument"() { + given: + def oldSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d(directiveArg: "foo")): String + } + ''' + def newSdl = ''' + directive @d(directiveArg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def appliedDirective = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation + location.interfaceName == "I" + location.fieldName == "foo" + location.argumentName == "arg" + appliedDirective[0].argumentName == "directiveArg" + } + + def "applied directive added directive argument "() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + directive @d2(arg:String) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + directive @d2(arg:String @d) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d2"] instanceof DirectiveModification + def appliedDirective = (changes.directiveDifferences["d2"] as DirectiveModification).getDetails(AppliedDirectiveAddition) + def location = appliedDirective[0].locationDetail as AppliedDirectiveDirectiveArgumentLocation + location.directiveDefinitionName == "d2" + location.argumentName == "arg" + location.directiveName == "d" + appliedDirective[0].name == "d" + } + + def "applied directive argument added directive argument "() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + directive @d2(arg2:String @d) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + directive @d2(arg2:String @d(arg:"foo") ) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d2"] instanceof DirectiveModification + (changes.directiveDifferences["d2"] as DirectiveModification).details.size() == 1 + def appliedDirectiveArgumentAddition = (changes.directiveDifferences["d2"] as DirectiveModification).getDetails(AppliedDirectiveArgumentAddition) + def location = appliedDirectiveArgumentAddition[0].locationDetail as AppliedDirectiveDirectiveArgumentLocation + location.directiveName == "d" + location.argumentName == "arg2" + appliedDirectiveArgumentAddition[0].argumentName == "arg" + } + + def "applied directive argument deleted directive argument "() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + directive @d2(arg2:String @d(arg:"foo")) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + directive @d2(arg2:String @d ) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d2"] instanceof DirectiveModification + (changes.directiveDifferences["d2"] as DirectiveModification).details.size() == 1 + def appliedDirectiveArgumentDeletion = (changes.directiveDifferences["d2"] as DirectiveModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = appliedDirectiveArgumentDeletion[0].locationDetail as AppliedDirectiveDirectiveArgumentLocation + location.directiveName == "d" + location.argumentName == "arg2" + appliedDirectiveArgumentDeletion[0].argumentName == "arg" + } + + + def "applied directive deleted object"() { + given: + def oldSdl = ''' + directive @d(arg: String) on OBJECT + + type Query @d(arg: "foo") { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg:String) on OBJECT + + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirective = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveObjectLocation).name == "Query" + appliedDirective[0].name == "d" + } + + def "applied directive deleted argument directive argument"() { + given: + def oldSdl = ''' + directive @d(arg1:String) on ARGUMENT_DEFINITION + directive @d2(arg:String @d(arg1:"foo")) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg1:String) on ARGUMENT_DEFINITION + directive @d2(arg:String) on ARGUMENT_DEFINITION + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d2"] instanceof DirectiveModification + // whole applied directive is deleted, so we don't count the applied argument deletion + (changes.directiveDifferences["d2"] as DirectiveModification).details.size() == 1 + def appliedDirective = (changes.directiveDifferences["d2"] as DirectiveModification).getDetails(AppliedDirectiveDeletion) + def location = appliedDirective[0].locationDetail as AppliedDirectiveDirectiveArgumentLocation + location.directiveDefinitionName == "d2" + location.argumentName == "arg" + location.directiveName == "d" + appliedDirective[0].name == "d" + } + + def "applied directive deleted enum"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM + enum E @d(arg: "foo") { A, B } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM + enum E { A, B } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def diff = changes.enumDifferences["E"] as EnumModification + + diff.getDetails().size() == 1 + + def appliedDirective = diff.getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveEnumLocation).name == "E" + appliedDirective[0].name == "d" + } + + def "applied directive deleted argument enum"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM + enum E @d(arg: "foo") { A, B } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM + enum E @d { A, B } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def argumentDeleted = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveArgumentDeletion) + (argumentDeleted[0].locationDetail as AppliedDirectiveEnumLocation).name == "E" + argumentDeleted[0].argumentName == "arg" + } + + def "applied directive added argument enum"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM + enum E @d { A, B } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM + enum E @d(arg: "foo"){ A, B } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def argumentAdded = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveArgumentAddition) + (argumentAdded[0].locationDetail as AppliedDirectiveEnumLocation).name == "E" + argumentAdded[0].argumentName == "arg" + + } + + + def "applied directive deleted enum value"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B @d(arg: "foo") } + type Query { + foo: E + } + ''' + def newSdl = ''' + directive @d(arg:String) on ENUM_VALUE + enum E { A, B } + type Query { + foo: E + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def appliedDirective = (changes.enumDifferences["E"] as EnumModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveEnumValueLocation).enumName == "E" + (appliedDirective[0].locationDetail as AppliedDirectiveEnumValueLocation).valueName == "B" + appliedDirective[0].name == "d" + } + + + def "applied directive deleted input object"() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d(arg: "foo") { + a: String + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I { + a: String + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def appliedDirective = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveInputObjectLocation).name == "I" + appliedDirective[0].name == "d" + } + + def "applied directive deleted input object field "() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d(arg: "foo") + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def appliedDirective = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveInputObjectFieldLocation).inputObjectName == "I" + (appliedDirective[0].locationDetail as AppliedDirectiveInputObjectFieldLocation).fieldName == "a" + appliedDirective[0].name == "d" + } + + + def "applied directive argument added input object field "() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d(arg: "foo") + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def argumentAdded = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveArgumentAddition) + def location = argumentAdded[0].locationDetail as AppliedDirectiveInputObjectFieldLocation + location.inputObjectName == "I" + location.fieldName == "a" + location.directiveName == "d" + argumentAdded[0].argumentName == "arg" + } + + def "applied directive argument deleted input object field "() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d(arg: "foo") + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_FIELD_DEFINITION + input I { + a: String @d + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def argumentDeletion = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveArgumentDeletion) + def location = argumentDeletion[0].locationDetail as AppliedDirectiveInputObjectFieldLocation + location.inputObjectName == "I" + location.fieldName == "a" + location.directiveName == "d" + argumentDeletion[0].argumentName == "arg" + } + + + def "applied directive deleted interface"() { + given: + def oldSdl = ''' + directive @d(arg: String) on INTERFACE + + type Query implements I { + foo: String + } + interface I @d(arg: "foo") { + foo: String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INTERFACE + + type Query implements I{ + foo: String + } + interface I { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def appliedDirective = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceLocation).name == "I" + appliedDirective[0].name == "d" + } + + + def "applied directive deleted interface field argument"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String @d): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query implements I { + foo(arg: String) : String + } + interface I { + foo(arg: String): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def appliedDirective = (changes.interfaceDifferences["I"] as InterfaceModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation).interfaceName == "I" + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation).fieldName == "foo" + (appliedDirective[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation).argumentName == "arg" + appliedDirective[0].name == "d" + } + + def "applied directive deleted object field"() { + given: + def oldSdl = ''' + directive @d(arg: String) on FIELD_DEFINITION + + type Query { + foo: String @d(arg: "foo") + } + ''' + def newSdl = ''' + directive @d(arg:String) on FIELD_DEFINITION + + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirective = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldLocation).objectName == "Query" + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldLocation).fieldName == "foo" + appliedDirective[0].name == "d" + } + + def "applied directive deleted object field argument"() { + given: + def oldSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String @d(arg: "foo")) : String + } + ''' + def newSdl = ''' + directive @d(arg:String) on ARGUMENT_DEFINITION + type Query { + foo(arg: String) : String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def appliedDirective = (changes.objectDifferences["Query"] as ObjectModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation).objectName == "Query" + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation).fieldName == "foo" + (appliedDirective[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation).argumentName == "arg" + appliedDirective[0].name == "d" + } + + + def "applied directive deleted scalar"() { + given: + def oldSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d(arg: "foo") + type Query { + foo: DateTime + } + ''' + def newSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime + type Query { + foo: DateTime + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["DateTime"] instanceof ScalarModification + def appliedDirective = (changes.scalarDifferences["DateTime"] as ScalarModification).getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveScalarLocation).name == "DateTime" + appliedDirective[0].name == "d" + } + + def "applied directive deleted union"() { + given: + def oldSdl = ''' + directive @d(arg: String) on UNION + type Query { + foo: U + } + union U @d(arg: "foo") = A | B + type A { a: String } + type B { b: String } + ''' + def newSdl = ''' + directive @d(arg: String) on UNION + type Query { + foo: U + } + union U = A | B + type A { a: String } + type B { b: String } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences.keySet() == ["U"] as Set + changes.unionDifferences["U"] instanceof UnionModification + def diff = changes.unionDifferences["U"] as UnionModification + diff.details.size() == 1 + + def appliedDirective = diff.getDetails(AppliedDirectiveDeletion) + (appliedDirective[0].locationDetail as AppliedDirectiveUnionLocation).name == "U" + appliedDirective[0].name == "d" + } + + def "applied directive argument added union"() { + given: + def oldSdl = ''' + directive @d(arg:String) on UNION + type Query { + foo: FooBar + } + union FooBar @d = A | B + type A { a: String } + type B { b: String } + ''' + def newSdl = ''' + directive @d(arg:String) on UNION + type Query { + foo: FooBar + } + union FooBar @d(arg:"arg") = A | B + type A { a: String } + type B { b: String } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["FooBar"] instanceof UnionModification + def argumentAdded = (changes.unionDifferences["FooBar"] as UnionModification).getDetails(AppliedDirectiveArgumentAddition) + (argumentAdded[0].locationDetail as AppliedDirectiveUnionLocation).name == "FooBar" + (argumentAdded[0].locationDetail as AppliedDirectiveUnionLocation).directiveName == "d" + argumentAdded[0].argumentName == "arg" + } + + def "applied directive argument deleted union"() { + given: + def oldSdl = ''' + directive @d(arg:String) on UNION + type Query { + foo: FooBar + } + union FooBar @d(arg:"arg") = A | B + type A { a: String } + type B { b: String } + ''' + def newSdl = ''' + directive @d(arg:String) on UNION + type Query { + foo: FooBar + } + union FooBar @d = A | B + type A { a: String } + type B { b: String } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["FooBar"] instanceof UnionModification + def argumentDeleted = (changes.unionDifferences["FooBar"] as UnionModification).getDetails(AppliedDirectiveArgumentDeletion) + (argumentDeleted[0].locationDetail as AppliedDirectiveUnionLocation).name == "FooBar" + (argumentDeleted[0].locationDetail as AppliedDirectiveUnionLocation).directiveName == "d" + argumentDeleted[0].argumentName == "arg" + } + + + def "applied directive argument added scalar"() { + given: + def oldSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d + type Query { + foo: DateTime + } + ''' + def newSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d(arg: "foo") + type Query { + foo: DateTime + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["DateTime"] instanceof ScalarModification + def argumentAdded = (changes.scalarDifferences["DateTime"] as ScalarModification).getDetails(AppliedDirectiveArgumentAddition) + (argumentAdded[0].locationDetail as AppliedDirectiveScalarLocation).name == "DateTime" + argumentAdded[0].argumentName == "arg" + } + + def "applied directive argument deleted scalar"() { + given: + def oldSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d(arg: "foo") + type Query { + foo: DateTime + } + ''' + def newSdl = ''' + directive @d(arg:String) on SCALAR + scalar DateTime @d + type Query { + foo: DateTime + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["DateTime"] instanceof ScalarModification + def argumentDeletion = (changes.scalarDifferences["DateTime"] as ScalarModification).getDetails(AppliedDirectiveArgumentDeletion) + (argumentDeletion[0].locationDetail as AppliedDirectiveScalarLocation).name == "DateTime" + argumentDeletion[0].argumentName == "arg" + } + + def "applied directive argument added input object"() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d { + a: String + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d(arg: "foo") { + a: String + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def argumentAdded = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveArgumentAddition) + (argumentAdded[0].locationDetail as AppliedDirectiveInputObjectLocation).name == "I" + argumentAdded[0].argumentName == "arg" + } + + def "applied directive argument deleted input object"() { + given: + def oldSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d(arg: "foo") { + a: String + } + type Query { + foo(arg: I): String + } + ''' + def newSdl = ''' + directive @d(arg:String) on INPUT_OBJECT + input I @d { + a: String + } + type Query { + foo(arg: I): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def argumentAdded = (changes.inputObjectDifferences["I"] as InputObjectModification).getDetails(AppliedDirectiveArgumentDeletion) + (argumentAdded[0].locationDetail as AppliedDirectiveInputObjectLocation).name == "I" + argumentAdded[0].argumentName == "arg" + } + + + EditOperationAnalysisResult calcDiff( + String oldSdl, + String newSdl + ) { + def oldSchema = TestUtil.schema(oldSdl) + def newSchema = TestUtil.schema(newSdl) + def changes = new SchemaDiffing().diffAndAnalyze(oldSchema, newSchema) + return changes + } + +} diff --git a/src/test/groovy/graphql/schema/diffing/ana/EditOperationAnalyzerTest.groovy b/src/test/groovy/graphql/schema/diffing/ana/EditOperationAnalyzerTest.groovy new file mode 100644 index 0000000000..8661293408 --- /dev/null +++ b/src/test/groovy/graphql/schema/diffing/ana/EditOperationAnalyzerTest.groovy @@ -0,0 +1,3162 @@ +package graphql.schema.diffing.ana + +import graphql.TestUtil +import graphql.schema.diffing.Edge +import graphql.schema.diffing.EditOperation +import graphql.schema.diffing.SchemaDiffing +import graphql.schema.diffing.SchemaGraph +import graphql.schema.diffing.Vertex +import spock.lang.Specification + +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveDeletion +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveDirectiveArgumentLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveInterfaceFieldArgumentLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectFieldArgumentLocation +import static graphql.schema.diffing.ana.SchemaDifference.AppliedDirectiveObjectFieldLocation +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveAddition +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentAddition +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentDefaultValueModification +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentDeletion +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentRename +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveArgumentTypeModification +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveDeletion +import static graphql.schema.diffing.ana.SchemaDifference.DirectiveModification +import static graphql.schema.diffing.ana.SchemaDifference.EnumAddition +import static graphql.schema.diffing.ana.SchemaDifference.EnumDeletion +import static graphql.schema.diffing.ana.SchemaDifference.EnumModification +import static graphql.schema.diffing.ana.SchemaDifference.EnumValueAddition +import static graphql.schema.diffing.ana.SchemaDifference.EnumValueDeletion +import static graphql.schema.diffing.ana.SchemaDifference.EnumValueRenamed +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectAddition +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectDeletion +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldAddition +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldDefaultValueModification +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldDeletion +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldRename +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectFieldTypeModification +import static graphql.schema.diffing.ana.SchemaDifference.InputObjectModification +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceAddition +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceDeletion +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldAddition +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentAddition +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentDefaultValueModification +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentDeletion +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentRename +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldArgumentTypeModification +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldDeletion +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldRename +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceFieldTypeModification +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceInterfaceImplementationDeletion +import static graphql.schema.diffing.ana.SchemaDifference.InterfaceModification +import static graphql.schema.diffing.ana.SchemaDifference.ObjectAddition +import static graphql.schema.diffing.ana.SchemaDifference.ObjectDeletion +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldAddition +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentAddition +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentDefaultValueModification +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentDeletion +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentRename +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldArgumentTypeModification +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldDeletion +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldRename +import static graphql.schema.diffing.ana.SchemaDifference.ObjectFieldTypeModification +import static graphql.schema.diffing.ana.SchemaDifference.ObjectInterfaceImplementationAddition +import static graphql.schema.diffing.ana.SchemaDifference.ObjectInterfaceImplementationDeletion +import static graphql.schema.diffing.ana.SchemaDifference.ObjectModification +import static graphql.schema.diffing.ana.SchemaDifference.ScalarAddition +import static graphql.schema.diffing.ana.SchemaDifference.ScalarDeletion +import static graphql.schema.diffing.ana.SchemaDifference.ScalarModification +import static graphql.schema.diffing.ana.SchemaDifference.UnionAddition +import static graphql.schema.diffing.ana.SchemaDifference.UnionDeletion +import static graphql.schema.diffing.ana.SchemaDifference.UnionMemberAddition +import static graphql.schema.diffing.ana.SchemaDifference.UnionMemberDeletion +import static graphql.schema.diffing.ana.SchemaDifference.UnionModification + +class EditOperationAnalyzerTest extends Specification { + def "object renamed"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + ''' + def newSdl = ''' + schema { + query: MyQuery + } + type MyQuery { + foo: String + } + + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] === changes.objectDifferences["MyQuery"] + changes.objectDifferences["Query"] instanceof ObjectModification + (changes.objectDifferences["Query"] as ObjectModification).oldName == "Query" + (changes.objectDifferences["Query"] as ObjectModification).newName == "MyQuery" + (changes.objectDifferences["Query"] as ObjectModification).isNameChanged() + } + + def "interface renamed"() { + given: + def oldSdl = ''' + type Query implements I { + foo: String + } + interface I { + foo: String + } + ''' + def newSdl = ''' + type Query implements IRenamed { + foo: String + } + interface IRenamed { + foo: String + } + + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] === changes.interfaceDifferences["IRenamed"] + changes.interfaceDifferences["I"] instanceof InterfaceModification + (changes.interfaceDifferences["I"] as InterfaceModification).oldName == "I" + (changes.interfaceDifferences["I"] as InterfaceModification).newName == "IRenamed" + (changes.interfaceDifferences["I"] as InterfaceModification).isNameChanged() + } + + def "interface removed from object"() { + given: + def oldSdl = ''' + type Query implements I { + foo: String + } + interface I { + foo: String + } + ''' + def newSdl = ''' + type Query{ + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def implementationDeletions = (changes.objectDifferences["Query"] as ObjectModification).getDetails(ObjectInterfaceImplementationDeletion) + implementationDeletions[0].name == "I" + } + + def "interface removed from interface"() { + given: + def oldSdl = ''' + type Query { + foo: Foo + } + interface FooI { + foo: String + } + interface Foo implements FooI { + foo: String + } + type FooImpl implements Foo & FooI { + foo: String + } + ''' + def newSdl = ''' + type Query { + foo: Foo + } + interface Foo { + foo: String + } + type FooImpl implements Foo { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["Foo"] instanceof InterfaceModification + def implementationDeletions = (changes.interfaceDifferences["Foo"] as InterfaceModification).getDetails(InterfaceInterfaceImplementationDeletion) + implementationDeletions[0].name == "FooI" + } + + def "object and interface field renamed"() { + given: + def oldSdl = ''' + type Query implements I{ + hello: String + } + interface I { + hello: String + } + ''' + def newSdl = ''' + type Query implements I{ + hello2: String + } + interface I { + hello2: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def oFieldRenames = objectModification.getDetails(ObjectFieldRename.class) + oFieldRenames[0].oldName == "hello" + oFieldRenames[0].newName == "hello2" + and: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["I"] as InterfaceModification + def iFieldRenames = interfaceModification.getDetails(InterfaceFieldRename.class) + iFieldRenames[0].oldName == "hello" + iFieldRenames[0].newName == "hello2" + } + + def "object and interface field deleted"() { + given: + def oldSdl = ''' + type Query implements I{ + hello: String + toDelete: String + } + interface I { + hello: String + toDelete: String + } + ''' + def newSdl = ''' + type Query implements I{ + hello: String + } + interface I { + hello: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def oFieldDeletions = objectModification.getDetails(ObjectFieldDeletion.class) + oFieldDeletions[0].name == "toDelete" + and: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["I"] as InterfaceModification + def iFieldDeletions = interfaceModification.getDetails(InterfaceFieldDeletion.class) + iFieldDeletions[0].name == "toDelete" + + } + + def "union added"() { + given: + def oldSdl = ''' + type Query { + hello: String + } + ''' + def newSdl = ''' + type Query { + hello: String + u: U + } + union U = A | B + type A { + foo: String + } + type B { + foo: String + } + + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionAddition + (changes.unionDifferences["U"] as UnionAddition).name == "U" + } + + def "union deleted"() { + given: + def oldSdl = ''' + type Query { + hello: String + u: U + } + union U = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + def newSdl = ''' + type Query { + hello: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionDeletion + (changes.unionDifferences["U"] as UnionDeletion).name == "U" + } + + def "union renamed"() { + given: + def oldSdl = ''' + type Query { + u: U + } + union U = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + def newSdl = ''' + type Query { + u: X + } + union X = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["X"] === changes.unionDifferences["U"] + changes.unionDifferences["U"] instanceof UnionModification + (changes.unionDifferences["U"] as UnionModification).oldName == "U" + (changes.unionDifferences["U"] as UnionModification).newName == "X" + (changes.unionDifferences["U"] as UnionModification).isNameChanged() + } + + def "union renamed and member removed"() { + given: + def oldSdl = ''' + type Query { + u: U + } + union U = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + def newSdl = ''' + type Query { + u: X + } + union X = A + type A { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionModification + def unionDiff = changes.unionDifferences["U"] as UnionModification + unionDiff.oldName == "U" + unionDiff.newName == "X" + unionDiff.getDetails(UnionMemberDeletion)[0].name == "B" + unionDiff.isNameChanged() + } + + def "union renamed and member added"() { + given: + def oldSdl = ''' + type Query { + u: U + } + union U = A + type A { + foo: String + } + + ''' + def newSdl = ''' + type Query { + u: X + } + union X = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionModification + def unionDiff = changes.unionDifferences["U"] as UnionModification + unionDiff.oldName == "U" + unionDiff.newName == "X" + unionDiff.isNameChanged() + unionDiff.getDetails(UnionMemberAddition)[0].name == "B" + } + + def "union member added"() { + given: + def oldSdl = ''' + type Query { + hello: String + u: U + } + union U = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + def newSdl = ''' + type Query { + hello: String + u: U + } + union U = A | B | C + type A { + foo: String + } + type B { + foo: String + } + type C { + foo: String + } + + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionModification + def unionModification = changes.unionDifferences["U"] as UnionModification + unionModification.getDetails(UnionMemberAddition)[0].name == "C" + } + + def "union member deleted"() { + given: + def oldSdl = ''' + type Query { + hello: String + u: U + } + union U = A | B + type A { + foo: String + } + type B { + foo: String + } + ''' + def newSdl = ''' + type Query { + hello: String + u: U + } + union U = A + type A { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.unionDifferences["U"] instanceof UnionModification + def unionModification = changes.unionDifferences["U"] as UnionModification + unionModification.getDetails(UnionMemberDeletion)[0].name == "B" + } + + def "field type modified"() { + given: + def oldSdl = ''' + type Query { + hello: String + } + ''' + def newSdl = ''' + type Query { + hello: String! + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def typeModification = objectModification.getDetails(ObjectFieldTypeModification.class) + typeModification[0].oldType == "String" + typeModification[0].newType == "String!" + } + + def "object and interface field argument added"() { + given: + def oldSdl = ''' + type Query implements I{ + hello: String + } + interface I { + hello: String + } + ''' + def newSdl = ''' + type Query implements I{ + hello(arg: String): String + } + interface I { + hello(arg: String): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def objectArgumentAdded = objectModification.getDetails(ObjectFieldArgumentAddition.class); + objectArgumentAdded[0].name == "arg" + and: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["I"] as InterfaceModification + def interfaceArgumentAdded = interfaceModification.getDetails(InterfaceFieldArgumentAddition.class); + interfaceArgumentAdded[0].name == "arg" + + } + + def "object and interface field argument renamed"() { + given: + def oldSdl = ''' + type Query implements I{ + hello(arg: String): String + } + interface I { + hello(arg: String): String + } + ''' + def newSdl = ''' + type Query implements I{ + hello(argRename: String): String + } + interface I { + hello(argRename: String): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def objectArgumentRenamed = objectModification.getDetails(ObjectFieldArgumentRename.class); + objectArgumentRenamed[0].fieldName == "hello" + objectArgumentRenamed[0].oldName == "arg" + objectArgumentRenamed[0].newName == "argRename" + and: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["I"] as InterfaceModification + def interfaceArgumentRenamed = interfaceModification.getDetails(InterfaceFieldArgumentRename.class); + interfaceArgumentRenamed[0].fieldName == "hello" + interfaceArgumentRenamed[0].oldName == "arg" + interfaceArgumentRenamed[0].newName == "argRename" + } + + + def "object and interface field argument deleted"() { + given: + def oldSdl = ''' + type Query implements I{ + hello(arg: String): String + } + interface I{ + hello(arg: String): String + } + ''' + def newSdl = ''' + type Query implements I { + hello: String + } + interface I { + hello: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def oArgumentRemoved = objectModification.getDetails(ObjectFieldArgumentDeletion.class); + oArgumentRemoved[0].fieldName == "hello" + oArgumentRemoved[0].name == "arg" + and: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["I"] as InterfaceModification + def iArgumentRemoved = interfaceModification.getDetails(InterfaceFieldArgumentDeletion.class); + iArgumentRemoved[0].fieldName == "hello" + iArgumentRemoved[0].name == "arg" + + } + + def "argument default value modified for Object and Interface"() { + given: + def oldSdl = ''' + type Query implements Foo { + foo(arg: String = "bar"): String + } + interface Foo { + foo(arg: String = "bar"): String + } + + ''' + def newSdl = ''' + type Query implements Foo { + foo(arg: String = "barChanged"): String + } + interface Foo { + foo(arg: String = "barChanged"): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def objDefaultValueModified = objectModification.getDetails(ObjectFieldArgumentDefaultValueModification.class); + objDefaultValueModified[0].fieldName == "foo" + objDefaultValueModified[0].argumentName == "arg" + objDefaultValueModified[0].oldValue == '"bar"' + objDefaultValueModified[0].newValue == '"barChanged"' + and: + changes.interfaceDifferences["Foo"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["Foo"] as InterfaceModification + def intDefaultValueModified = interfaceModification.getDetails(InterfaceFieldArgumentDefaultValueModification.class); + intDefaultValueModified[0].fieldName == "foo" + intDefaultValueModified[0].argumentName == "arg" + intDefaultValueModified[0].oldValue == '"bar"' + intDefaultValueModified[0].newValue == '"barChanged"' + } + + def "object and interface argument type changed completely"() { + given: + def oldSdl = ''' + type Query implements Foo { + foo(arg: String ): String + } + interface Foo { + foo(arg: String): String + } + + ''' + def newSdl = ''' + type Query implements Foo { + foo(arg: Int!): String + } + interface Foo { + foo(arg: Int!): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def objDefaultValueModified = objectModification.getDetails(ObjectFieldArgumentTypeModification.class); + objDefaultValueModified[0].fieldName == "foo" + objDefaultValueModified[0].argumentName == "arg" + objDefaultValueModified[0].oldType == 'String' + objDefaultValueModified[0].newType == 'Int!' + and: + changes.interfaceDifferences["Foo"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["Foo"] as InterfaceModification + def intDefaultValueModified = interfaceModification.getDetails(InterfaceFieldArgumentTypeModification.class); + intDefaultValueModified[0].fieldName == "foo" + intDefaultValueModified[0].argumentName == "arg" + intDefaultValueModified[0].oldType == 'String' + intDefaultValueModified[0].newType == 'Int!' + } + + def "object and interface argument type changed wrapping type"() { + given: + def oldSdl = ''' + type Query implements Foo { + foo(arg: String ): String + } + interface Foo { + foo(arg: String): String + } + + ''' + def newSdl = ''' + type Query implements Foo { + foo(arg: String!): String + } + interface Foo { + foo(arg: String!): String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def objDefaultValueModified = objectModification.getDetails(ObjectFieldArgumentTypeModification.class); + objDefaultValueModified[0].fieldName == "foo" + objDefaultValueModified[0].argumentName == "arg" + objDefaultValueModified[0].oldType == 'String' + objDefaultValueModified[0].newType == 'String!' + and: + changes.interfaceDifferences["Foo"] instanceof InterfaceModification + def interfaceModification = changes.interfaceDifferences["Foo"] as InterfaceModification + def intDefaultValueModified = interfaceModification.getDetails(InterfaceFieldArgumentTypeModification.class); + intDefaultValueModified[0].fieldName == "foo" + intDefaultValueModified[0].argumentName == "arg" + intDefaultValueModified[0].oldType == 'String' + intDefaultValueModified[0].newType == 'String!' + } + + def "object and interface field added"() { + given: + def oldSdl = ''' + type Query implements I{ + hello: String + } + interface I { + hello: String + } + ''' + def newSdl = ''' + type Query implements I{ + hello: String + newOne: String + } + interface I { + hello: String + newOne: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Query"] as ObjectModification + def oFieldAdded = objectModification.getDetails(ObjectFieldAddition) + oFieldAdded[0].name == "newOne" + and: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def iInterfaces = changes.interfaceDifferences["I"] as InterfaceModification + def iFieldAdded = iInterfaces.getDetails(InterfaceFieldAddition) + iFieldAdded[0].name == "newOne" + + } + + def "object added"() { + given: + def oldSdl = ''' + type Query { + hello: String + } + ''' + def newSdl = ''' + type Query { + hello: String + foo: Foo + } + type Foo { + id: ID + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Foo"] instanceof ObjectAddition + } + + def "object removed and field type changed"() { + given: + def oldSdl = ''' + type Query { + foo: Foo + } + type Foo { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.objectDifferences["Foo"] instanceof ObjectDeletion + (changes.objectDifferences["Foo"] as ObjectDeletion).name == "Foo" + changes.objectDifferences["Query"] instanceof ObjectModification + def queryObjectModification = changes.objectDifferences["Query"] as ObjectModification + queryObjectModification.details.size() == 1 + queryObjectModification.details[0] instanceof ObjectFieldTypeModification + (queryObjectModification.details[0] as ObjectFieldTypeModification).oldType == "Foo" + (queryObjectModification.details[0] as ObjectFieldTypeModification).newType == "String" + + } + + def "Interface and Object field type changed completely"() { + given: + def oldSdl = ''' + type Query implements I{ + foo: String + } + interface I { + foo: String + } + ''' + def newSdl = ''' + type Query implements I{ + foo: ID + } + interface I { + foo: ID + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def iModification = changes.interfaceDifferences["I"] as InterfaceModification + def iFieldTypeModifications = iModification.getDetails(InterfaceFieldTypeModification) + iFieldTypeModifications[0].fieldName == "foo" + iFieldTypeModifications[0].oldType == "String" + iFieldTypeModifications[0].newType == "ID" + and: + changes.objectDifferences["Query"] instanceof ObjectModification + def oModification = changes.objectDifferences["Query"] as ObjectModification + def oFieldTypeModifications = oModification.getDetails(ObjectFieldTypeModification) + oFieldTypeModifications[0].fieldName == "foo" + oFieldTypeModifications[0].oldType == "String" + oFieldTypeModifications[0].newType == "ID" + } + + def "Interface and Object field type changed wrapping type"() { + given: + def oldSdl = ''' + type Query implements I{ + foo: String + } + interface I { + foo: String + } + ''' + def newSdl = ''' + type Query implements I{ + foo: [String!] + } + interface I { + foo: [String!] + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences["I"] instanceof InterfaceModification + def iModification = changes.interfaceDifferences["I"] as InterfaceModification + def iFieldTypeModifications = iModification.getDetails(InterfaceFieldTypeModification) + iFieldTypeModifications[0].fieldName == "foo" + iFieldTypeModifications[0].oldType == "String" + iFieldTypeModifications[0].newType == "[String!]" + and: + changes.objectDifferences["Query"] instanceof ObjectModification + def oModification = changes.objectDifferences["Query"] as ObjectModification + def oFieldTypeModifications = oModification.getDetails(ObjectFieldTypeModification) + oFieldTypeModifications[0].fieldName == "foo" + oFieldTypeModifications[0].oldType == "String" + oFieldTypeModifications[0].newType == "[String!]" + + + } + + def "new Interface introduced"() { + given: + def oldSdl = ''' + type Query { + foo: Foo + } + type Foo { + id: ID! + } + ''' + def newSdl = ''' + type Query { + foo: Foo + } + type Foo implements Node{ + id: ID! + } + interface Node { + id: ID! + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences.size() == 1 + changes.interfaceDifferences["Node"] instanceof InterfaceAddition + changes.objectDifferences.size() == 1 + changes.objectDifferences["Foo"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Foo"] as ObjectModification + def addedInterfaceDetails = objectModification.getDetails(ObjectInterfaceImplementationAddition.class) + addedInterfaceDetails.size() == 1 + addedInterfaceDetails[0].name == "Node" + } + + def "Object and Interface added"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + ''' + def newSdl = ''' + type Query { + foo: Foo + } + type Foo implements Node{ + id: ID! + } + interface Node { + id: ID! + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences.size() == 1 + changes.interfaceDifferences["Node"] instanceof InterfaceAddition + changes.objectDifferences.size() == 2 + changes.objectDifferences["Foo"] instanceof ObjectAddition + changes.objectDifferences["Query"] instanceof ObjectModification + (changes.objectDifferences["Query"] as ObjectModification).getDetails()[0] instanceof ObjectFieldTypeModification + } + + def "interfaced renamed"() { + given: + def oldSdl = ''' + type Query { + foo: Foo + } + type Foo implements Node{ + id: ID! + } + interface Node { + id: ID! + } + ''' + def newSdl = ''' + type Query { + foo: Foo + } + interface Node2 { + id: ID! + } + type Foo implements Node2{ + id: ID! + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences.size() == 2 + changes.interfaceDifferences["Node"] === changes.interfaceDifferences["Node2"] + changes.interfaceDifferences["Node2"] instanceof InterfaceModification + (changes.interfaceDifferences["Node2"] as InterfaceModification).isNameChanged() + } + + def "interfaced renamed and another interface added to it"() { + given: + def oldSdl = ''' + type Query { + foo: Foo + } + type Foo implements Node{ + id: ID! + } + interface Node { + id: ID! + } + ''' + def newSdl = ''' + type Query { + foo: Foo + } + interface NewI { + hello: String + } + interface Node2 { + id: ID! + } + type Foo implements Node2 & NewI { + id: ID! + hello: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.interfaceDifferences.size() == 3 + changes.interfaceDifferences["Node"] == changes.interfaceDifferences["Node2"] + changes.interfaceDifferences["Node2"] instanceof InterfaceModification + (changes.interfaceDifferences["Node2"] as InterfaceModification).isNameChanged() + changes.interfaceDifferences["NewI"] instanceof InterfaceAddition + changes.objectDifferences.size() == 1 + changes.objectDifferences["Foo"] instanceof ObjectModification + def objectModification = changes.objectDifferences["Foo"] as ObjectModification + def addedInterfaceDetails = objectModification.getDetails(ObjectInterfaceImplementationAddition) + addedInterfaceDetails.size() == 1 + addedInterfaceDetails[0].name == "NewI" + } + + def "enum renamed"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + enum E { + A, B + } + ''' + def newSdl = ''' + type Query { + foo: ERenamed + } + enum ERenamed { + A, B + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] === changes.enumDifferences["ERenamed"] + def modification = changes.enumDifferences["E"] as EnumModification + modification.oldName == "E" + modification.newName == "ERenamed" + modification.isNameChanged() + } + + def "enum added"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + ''' + def newSdl = ''' + type Query { + foo: E + } + enum E { + A, B + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumAddition + (changes.enumDifferences["E"] as EnumAddition).getName() == "E" + } + + def "enum deleted"() { + given: + def oldSdl = ''' + type Query { + foo: E + } + enum E { + A, B + } + ''' + def newSdl = ''' + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumDeletion + (changes.enumDifferences["E"] as EnumDeletion).getName() == "E" + } + + + def "enum value added"() { + given: + def oldSdl = ''' + type Query { + e: E + } + enum E { + A + } + ''' + def newSdl = ''' + type Query { + e: E + } + enum E { + A, B + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def enumModification = changes.enumDifferences["E"] as EnumModification + enumModification.getDetails(EnumValueAddition)[0].name == "B" + } + + def "enum value deleted"() { + given: + def oldSdl = ''' + type Query { + e: E + } + enum E { + A,B + } + ''' + def newSdl = ''' + type Query { + e: E + } + enum E { + A + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["E"] instanceof EnumModification + def enumModification = changes.enumDifferences["E"] as EnumModification + enumModification.getDetails(EnumValueDeletion)[0].name == "B" + } + + def "enum value added and removed"() { + given: + def oldSdl = ''' + type Query { + e: MyEnum + } + enum MyEnum { + A + B + } + ''' + def newSdl = ''' + type Query { + e: MyEnum + } + enum MyEnum { + A + C + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.enumDifferences["MyEnum"] instanceof EnumModification + + def enumModification = changes.enumDifferences["MyEnum"] as EnumModification + enumModification.getDetails().size() == 1 + + def rename = enumModification.getDetails(EnumValueRenamed)[0] + rename.oldName == "B" + rename.newName == "C" + } + + def "scalar added"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + ''' + def newSdl = ''' + type Query { + foo: E + } + scalar E + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["E"] instanceof ScalarAddition + (changes.scalarDifferences["E"] as ScalarAddition).getName() == "E" + } + + def "scalar deleted"() { + given: + def oldSdl = ''' + type Query { + foo: E + } + scalar E + ''' + def newSdl = ''' + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["E"] instanceof ScalarDeletion + (changes.scalarDifferences["E"] as ScalarDeletion).getName() == "E" + } + + def "scalar renamed"() { + given: + def oldSdl = ''' + type Query { + foo: Foo + } + scalar Foo + ''' + def newSdl = ''' + type Query { + foo: Bar + } + scalar Bar + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.scalarDifferences["Foo"] === changes.scalarDifferences["Bar"] + def modification = changes.scalarDifferences["Foo"] as ScalarModification + modification.oldName == "Foo" + modification.newName == "Bar" + modification.isNameChanged() + } + + def "input object added"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectAddition + (changes.inputObjectDifferences["I"] as InputObjectAddition).getName() == "I" + } + + def "input object field added"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + newField: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + def fieldAddition = modification.getDetails(InputObjectFieldAddition)[0] + fieldAddition.name == "newField" + } + + def "input object field deletion"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + toDelete: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + def fieldDeletion = modification.getDetails(InputObjectFieldDeletion)[0] + fieldDeletion.name == "toDelete" + } + + def "input object field renamed"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + barNew: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + def fieldDeletion = modification.getDetails(InputObjectFieldRename)[0] + fieldDeletion.oldName == "bar" + fieldDeletion.newName == "barNew" + } + + def "input object field wrapping type changed"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: [String] + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + def typeModification = modification.getDetails(InputObjectFieldTypeModification)[0] + typeModification.oldType == "String" + typeModification.newType == "[String]" + } + + def "input object field type changed"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: ID + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + def typeModification = modification.getDetails(InputObjectFieldTypeModification)[0] + typeModification.oldType == "String" + typeModification.newType == "ID" + } + + def "input object field default value changed"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String = "A" + } + ''' + def newSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String = "B" + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectModification + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + def modificationDetail = modification.getDetails(InputObjectFieldDefaultValueModification)[0] + modificationDetail.oldDefaultValue == '"A"' + modificationDetail.newDefaultValue == '"B"' + } + + def "input object deleted"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] instanceof InputObjectDeletion + (changes.inputObjectDifferences["I"] as InputObjectDeletion).getName() == "I" + } + + def "input object renamed"() { + given: + def oldSdl = ''' + type Query { + foo(arg: I): String + } + input I { + bar: String + } + ''' + def newSdl = ''' + type Query { + foo(arg: IRenamed): String + } + input IRenamed { + bar: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["I"] === changes.inputObjectDifferences["IRenamed"] + def modification = changes.inputObjectDifferences["I"] as InputObjectModification + modification.oldName == "I" + modification.newName == "IRenamed" + modification.isNameChanged() + } + + + def "directive added"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveAddition + (changes.directiveDifferences["d"] as DirectiveAddition).getName() == "d" + } + + def "directive deleted"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveDeletion + (changes.directiveDifferences["d"] as DirectiveDeletion).getName() == "d" + } + + def "directive renamed"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @dRenamed on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] === changes.directiveDifferences["dRenamed"] + def modification = changes.directiveDifferences["d"] as DirectiveModification + modification.oldName == "d" + modification.newName == "dRenamed" + modification.isNameChanged() + } + + def "directive argument renamed"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d(foo: String) on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d(bar:String) on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveModification + def renames = (changes.directiveDifferences["d"] as DirectiveModification).getDetails(DirectiveArgumentRename) + renames[0].oldName == "foo" + renames[0].newName == "bar" + } + + def "directive argument added"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d(foo:String) on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveModification + def addition = (changes.directiveDifferences["d"] as DirectiveModification).getDetails(DirectiveArgumentAddition) + addition[0].name == "foo" + + + } + + def "directive argument deleted"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d(foo:String) on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveModification + def deletion = (changes.directiveDifferences["d"] as DirectiveModification).getDetails(DirectiveArgumentDeletion) + deletion[0].name == "foo" + + + } + + def "directive argument default value changed"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d(foo:String = "A") on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d(foo: String = "B") on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveModification + def defaultValueChange = (changes.directiveDifferences["d"] as DirectiveModification).getDetails(DirectiveArgumentDefaultValueModification) + defaultValueChange[0].argumentName == "foo" + defaultValueChange[0].oldValue == '"A"' + defaultValueChange[0].newValue == '"B"' + + + } + + def "directive argument type changed completely"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d(foo:String) on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d(foo: ID) on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveModification + def argTypeModification = (changes.directiveDifferences["d"] as DirectiveModification).getDetails(DirectiveArgumentTypeModification) + argTypeModification[0].argumentName == "foo" + argTypeModification[0].oldType == 'String' + argTypeModification[0].newType == 'ID' + } + + def "directive argument wrapping type changed"() { + given: + def oldSdl = ''' + type Query { + foo: String + } + directive @d(foo:String) on FIELD + ''' + def newSdl = ''' + type Query { + foo: String + } + directive @d(foo: [String]!) on FIELD + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.directiveDifferences["d"] instanceof DirectiveModification + def argTypeModification = (changes.directiveDifferences["d"] as DirectiveModification).getDetails(DirectiveArgumentTypeModification) + argTypeModification[0].argumentName == "foo" + argTypeModification[0].oldType == 'String' + argTypeModification[0].newType == '[String]!' + } + + def "field renamed and output type changed and argument deleted"() { + given: + def oldSdl = ''' + type Query { + ping(pong: String): ID + } + ''' + def newSdl = ''' + type Query { + echo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + true + changes.objectDifferences["Query"] instanceof ObjectModification + def objectDiff = changes.objectDifferences["Query"] as ObjectModification + + def rename = objectDiff.getDetails(ObjectFieldRename) + rename.size() == 1 + rename[0].oldName == "ping" + rename[0].newName == "echo" + + def argumentDeletion = objectDiff.getDetails(ObjectFieldArgumentDeletion) + argumentDeletion.size() == 1 + argumentDeletion[0].fieldName == "ping" + argumentDeletion[0].name == "pong" + + def typeModification = objectDiff.getDetails(ObjectFieldTypeModification) + typeModification.size() == 1 + typeModification[0].fieldName == "echo" + typeModification[0].oldType == "ID" + typeModification[0].newType == "String" + } + + def "object field argument changed and applied directive deleted"() { + given: + def oldSdl = ''' + type Query { + ping(pong: String @d): ID + } + directive @d on ARGUMENT_DEFINITION + ''' + def newSdl = ''' + type Query { + ping(pong: Int): ID + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + true + changes.objectDifferences["Query"] instanceof ObjectModification + def objectDiff = changes.objectDifferences["Query"] as ObjectModification + + def typeModification = objectDiff.getDetails(ObjectFieldArgumentTypeModification) + typeModification.size() == 1 + typeModification[0].oldType == "String" + typeModification[0].newType == "Int" + typeModification[0].fieldName == "ping" + typeModification[0].argumentName == "pong" + + def directiveDeletion = objectDiff.getDetails(AppliedDirectiveDeletion) + directiveDeletion.size() == 1 + directiveDeletion[0].name == "d" + directiveDeletion[0].locationDetail instanceof AppliedDirectiveObjectFieldArgumentLocation + + def location = directiveDeletion[0].locationDetail as AppliedDirectiveObjectFieldArgumentLocation + location.objectName == "Query" + location.fieldName == "ping" + location.argumentName == "pong" + } + + def "interface field argument changed and applied directive deleted"() { + given: + def oldSdl = ''' + type Query { + echo: String + } + interface TableTennis { + ping(pong: String @d): ID + } + directive @d on ARGUMENT_DEFINITION + ''' + def newSdl = ''' + type Query { + echo: String + } + interface TableTennis { + ping(pong: Int): ID + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + true + changes.interfaceDifferences["TableTennis"] instanceof InterfaceModification + def diff = changes.interfaceDifferences["TableTennis"] as InterfaceModification + + def typeModification = diff.getDetails(InterfaceFieldArgumentTypeModification) + typeModification.size() == 1 + typeModification[0].oldType == "String" + typeModification[0].newType == "Int" + typeModification[0].fieldName == "ping" + typeModification[0].argumentName == "pong" + + def directiveDeletion = diff.getDetails(AppliedDirectiveDeletion) + directiveDeletion.size() == 1 + directiveDeletion[0].name == "d" + directiveDeletion[0].locationDetail instanceof AppliedDirectiveInterfaceFieldArgumentLocation + + def location = directiveDeletion[0].locationDetail as AppliedDirectiveInterfaceFieldArgumentLocation + location.interfaceName == "TableTennis" + location.fieldName == "ping" + location.argumentName == "pong" + } + + def "directive argument changed and applied directive deleted"() { + given: + def oldSdl = ''' + type Query { + ping(pong: String): ID @d + } + directive @a on ARGUMENT_DEFINITION + directive @d(message: ID @a) on FIELD_DEFINITION + ''' + def newSdl = ''' + type Query { + ping(pong: String): ID @d + } + directive @a on ARGUMENT_DEFINITION + directive @d(message: String) on FIELD_DEFINITION + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + true + changes.directiveDifferences["d"] instanceof DirectiveModification + def diff = changes.directiveDifferences["d"] as DirectiveModification + + def typeModification = diff.getDetails(DirectiveArgumentTypeModification) + typeModification.size() == 1 + typeModification[0].oldType == "ID" + typeModification[0].newType == "String" + typeModification[0].argumentName == "message" + + def directiveDeletion = diff.getDetails(AppliedDirectiveDeletion) + directiveDeletion.size() == 1 + directiveDeletion[0].name == "a" + directiveDeletion[0].locationDetail instanceof AppliedDirectiveDirectiveArgumentLocation + + def location = directiveDeletion[0].locationDetail as AppliedDirectiveDirectiveArgumentLocation + location.directiveDefinitionName == "d" + location.argumentName == "message" + location.directiveName == "a" + } + + def "field output type changed and applied directive removed"() { + given: + def oldSdl = ''' + type Query { + echo: ID @d + } + directive @d on FIELD_DEFINITION + ''' + def newSdl = ''' + type Query { + echo: String + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + true + changes.objectDifferences["Query"] instanceof ObjectModification + def objectDiff = changes.objectDifferences["Query"] as ObjectModification + + def typeModification = objectDiff.getDetails(ObjectFieldTypeModification) + typeModification.size() == 1 + typeModification[0].fieldName == "echo" + typeModification[0].oldType == "ID" + typeModification[0].newType == "String" + + def directiveDeletion = objectDiff.getDetails(AppliedDirectiveDeletion) + directiveDeletion.size() == 1 + directiveDeletion[0].name == "d" + directiveDeletion[0].locationDetail instanceof AppliedDirectiveObjectFieldLocation + + def location = directiveDeletion[0].locationDetail as AppliedDirectiveObjectFieldLocation + location.objectName == "Query" + location.fieldName == "echo" + } + + def "input field renamed and type changed and applied directive removed"() { + given: + def oldSdl = ''' + type Query { + echo(input: Echo): String + } + input Echo { + message: String @d + } + directive @d on INPUT_FIELD_DEFINITION + ''' + def newSdl = ''' + type Query { + echo(input: Echo): String + } + input Echo { + age: Int + } + ''' + when: + def changes = calcDiff(oldSdl, newSdl) + then: + changes.inputObjectDifferences["Echo"] instanceof InputObjectModification + def diff = changes.inputObjectDifferences["Echo"] as InputObjectModification + + def rename = diff.getDetails(InputObjectFieldRename) + rename.size() == 1 + rename[0].oldName == "message" + rename[0].newName == "age" + + def typeModification = diff.getDetails(InputObjectFieldTypeModification) + typeModification.size() == 1 + typeModification[0].fieldName == "age" + typeModification[0].oldType == "String" + typeModification[0].newType == "Int" + + def directiveDeletion = diff.getDetails(AppliedDirectiveDeletion) + directiveDeletion.size() == 1 + directiveDeletion[0].name == "d" + } + + def "object field description changed"() { + given: + def oldSdl = ''' + type Query { + " Hello" + echo: String + } + ''' + def newSdl = ''' + type Query { + "Test " + echo: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + // no changes + changes.objectDifferences["Query"] == null + } + + def "interface field description changed"() { + given: + def oldSdl = ''' + type Query { + node: Node + } + interface Node { + " Hello" + echo: String + } + ''' + def newSdl = ''' + type Query { + node: Node + } + interface Node { + "World" + echo: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + // no changes + changes.interfaceDifferences["Node"] == null + } + + def "interface deleted with field argument"() { + given: + def oldSdl = ''' + type Query { + node: Node + } + interface Node { + echo(test: String): String + } + ''' + def newSdl = ''' + type Query { + node: ID + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["Node"] instanceof InterfaceDeletion + } + + def "object deleted with field argument"() { + given: + def oldSdl = ''' + type Query { + node: Node + } + type Node { + echo(test: String): String + } + ''' + def newSdl = ''' + type Query { + node: ID + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Node"] instanceof ObjectDeletion + } + + def "directive deleted with argument"() { + given: + def oldSdl = ''' + type Query { + node: String + } + directive @test(message: String) on FIELD + ''' + def newSdl = ''' + type Query { + node: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences["test"] instanceof DirectiveDeletion + } + + def "interface added with field argument"() { + given: + def oldSdl = ''' + type Query { + node: ID + } + ''' + def newSdl = ''' + type Query { + node: Node + } + interface Node { + echo(test: String): String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["Node"] instanceof InterfaceAddition + } + + def "object added with field argument"() { + given: + def oldSdl = ''' + type Query { + node: ID + } + ''' + def newSdl = ''' + type Query { + node: Node + } + type Node { + echo(test: String): String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Node"] instanceof ObjectAddition + } + + def "directive added with argument"() { + given: + def oldSdl = ''' + type Query { + node: String + } + ''' + def newSdl = ''' + type Query { + node: String + } + directive @test(message: String) on FIELD + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences["test"] instanceof DirectiveAddition + } + + def "delete object with applied directive on field"() { + given: + def oldSdl = ''' + type Query { + user(id: ID!): User + } + directive @id(type: String, owner: String) on FIELD_DEFINITION + type User { + id: ID! @id(type: "user", owner: "profiles") + } + ''' + def newSdl = ''' + type Query { + echo: String + } + directive @id(type: String, owner: String) on FIELD_DEFINITION + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["User"] instanceof ObjectDeletion + } + + def "delete interface with applied directive on field"() { + given: + def oldSdl = ''' + type Query { + user(id: ID!): User + } + directive @id(type: String, owner: String) on FIELD_DEFINITION + interface User { + id: ID! @id(type: "user", owner: "profiles") + } + ''' + def newSdl = ''' + type Query { + echo: String + } + directive @id(type: String, owner: String) on FIELD_DEFINITION + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["User"] instanceof InterfaceDeletion + } + + def "argument removed and similar argument added on separate object fields"() { + given: + def oldSdl = ''' + type Query { + issues: IssueQuery + } + type IssueQuery { + issue: Issue + issues(id: [ID!]!): [Issue] + } + type Issue { + id: ID! + } + ''' + def newSdl = ''' + type Query { + issues: IssueQuery + } + type IssueQuery { + issue(id: ID): Issue + issues: [Issue] + } + type Issue { + id: ID! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["IssueQuery"] instanceof ObjectModification + def issueQueryChanges = changes.objectDifferences["IssueQuery"] as ObjectModification + issueQueryChanges.details.size() == 2 + + def argumentAddition = issueQueryChanges.getDetails(ObjectFieldArgumentAddition) + argumentAddition.size() == 1 + argumentAddition[0].fieldName == "issue" + argumentAddition[0].name == "id" + + def argumentDeletion = issueQueryChanges.getDetails(ObjectFieldArgumentDeletion) + argumentDeletion.size() == 1 + argumentDeletion[0].fieldName == "issues" + argumentDeletion[0].name == "id" + } + + def "argument removed and similar argument added on separate interface fields"() { + given: + def oldSdl = ''' + type Query { + issues: IssueQuery + } + interface IssueQuery { + issue: Issue + issues(id: [ID!]!): [Issue] + } + type Issue { + id: ID! + } + ''' + def newSdl = ''' + type Query { + issues: IssueQuery + } + interface IssueQuery { + issue(id: ID): Issue + issues: [Issue] + } + type Issue { + id: ID! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["IssueQuery"] instanceof InterfaceModification + def issueQueryChanges = changes.interfaceDifferences["IssueQuery"] as InterfaceModification + issueQueryChanges.details.size() == 2 + + def argumentAddition = issueQueryChanges.getDetails(InterfaceFieldArgumentAddition) + argumentAddition.size() == 1 + argumentAddition[0].fieldName == "issue" + argumentAddition[0].name == "id" + + def argumentDeletion = issueQueryChanges.getDetails(InterfaceFieldArgumentDeletion) + argumentDeletion.size() == 1 + argumentDeletion[0].fieldName == "issues" + argumentDeletion[0].name == "id" + } + + def "argument removed and similar argument added on separate directives"() { + given: + def oldSdl = ''' + directive @dog(name: String) on FIELD_DEFINITION + directive @cat on FIELD_DEFINITION + type Query { + pet: String @dog + } + ''' + def newSdl = ''' + directive @dog on FIELD_DEFINITION + directive @cat(name: [String]) on FIELD_DEFINITION + type Query { + pet: String @dog + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences["cat"] instanceof DirectiveModification + def catChanges = changes.directiveDifferences["cat"] as DirectiveModification + catChanges.details.size() == 1 + def argumentAdditions = catChanges.getDetails(DirectiveArgumentAddition) + argumentAdditions.size() == 1 + argumentAdditions[0].name == "name" + + changes.directiveDifferences["dog"] instanceof DirectiveModification + def dogChanges = changes.directiveDifferences["dog"] as DirectiveModification + dogChanges.details.size() == 1 + def argumentDeletions = dogChanges.getDetails(DirectiveArgumentDeletion) + argumentDeletions.size() == 1 + argumentDeletions[0].name == "name" + } + + def "argument removed and added on renamed object field"() { + given: + def oldSdl = ''' + type Query { + issues: IssueQuery + } + type IssueQuery { + issues(id: [ID!]): [Issue] + } + type Issue { + id: ID! + } + ''' + def newSdl = ''' + type Query { + issues: IssueQuery + } + type IssueQuery { + issuesById(ids: [ID!]!): [Issue] + } + type Issue { + id: ID! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["IssueQuery"] instanceof ObjectModification + def issueQueryChanges = changes.objectDifferences["IssueQuery"] as ObjectModification + issueQueryChanges.details.size() == 3 + + def rename = issueQueryChanges.getDetails(ObjectFieldRename) + rename.size() == 1 + rename[0].oldName == "issues" + rename[0].newName == "issuesById" + + def argumentRename = issueQueryChanges.getDetails(ObjectFieldArgumentRename) + argumentRename.size() == 1 + argumentRename[0].fieldName == "issuesById" + argumentRename[0].oldName == "id" + argumentRename[0].newName == "ids" + + def argumentTypeModification = issueQueryChanges.getDetails(ObjectFieldArgumentTypeModification) + argumentTypeModification.size() == 1 + argumentTypeModification[0].fieldName == "issuesById" + argumentTypeModification[0].argumentName == "ids" + argumentTypeModification[0].oldType == "[ID!]" + argumentTypeModification[0].newType == "[ID!]!" + } + + def "argument removed and added on renamed interface field"() { + given: + def oldSdl = ''' + type Query { + issues: IssueQuery + } + interface IssueQuery { + issues(id: [ID!]): [Issue] + } + type Issue { + id: ID! + } + ''' + def newSdl = ''' + type Query { + issues: IssueQuery + } + interface IssueQuery { + issuesById(ids: [ID!]!): [Issue] + } + type Issue { + id: ID! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["IssueQuery"] instanceof InterfaceModification + def issueQueryChanges = changes.interfaceDifferences["IssueQuery"] as InterfaceModification + issueQueryChanges.details.size() == 3 + + def rename = issueQueryChanges.getDetails(InterfaceFieldRename) + rename.size() == 1 + rename[0].oldName == "issues" + rename[0].newName == "issuesById" + + def argumentRename = issueQueryChanges.getDetails(InterfaceFieldArgumentRename) + argumentRename.size() == 1 + argumentRename[0].fieldName == "issuesById" + argumentRename[0].oldName == "id" + argumentRename[0].newName == "ids" + + def argumentTypeModification = issueQueryChanges.getDetails(InterfaceFieldArgumentTypeModification) + argumentTypeModification.size() == 1 + argumentTypeModification[0].fieldName == "issuesById" + argumentTypeModification[0].argumentName == "ids" + argumentTypeModification[0].oldType == "[ID!]" + argumentTypeModification[0].newType == "[ID!]!" + } + + def "argument removed and added on renamed directive"() { + given: + def oldSdl = ''' + directive @dog(name: String) on FIELD_DEFINITION + type Query { + pet: String @dog + } + ''' + def newSdl = ''' + directive @cat(names: [String]) on FIELD_DEFINITION + type Query { + pet: String @cat + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences["cat"] instanceof DirectiveModification + def catChanges = changes.directiveDifferences["cat"] as DirectiveModification + catChanges.oldName == "dog" + catChanges.newName == "cat" + catChanges.isNameChanged() + catChanges.details.size() == 2 + + def argumentRename = catChanges.getDetails(DirectiveArgumentRename) + argumentRename.size() == 1 + argumentRename[0].oldName == "name" + argumentRename[0].newName == "names" + + def argumentTypeModification = catChanges.getDetails(DirectiveArgumentTypeModification) + argumentTypeModification.size() == 1 + argumentTypeModification[0].argumentName == "names" + argumentTypeModification[0].oldType == "String" + argumentTypeModification[0].newType == "[String]" + } + + + def "object field argument type and default value changed"() { + given: + def oldSdl = ''' + type Query { + echo(message: String! = "Hello World"): String + } + ''' + def newSdl = ''' + type Query { + echo(message: ID! = "1"): String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Query"] instanceof ObjectModification + def queryChanges = changes.objectDifferences["Query"] as ObjectModification + queryChanges.details.size() == 2 + + def argumentTypeModification = queryChanges.getDetails(ObjectFieldArgumentTypeModification) + argumentTypeModification.size() == 1 + argumentTypeModification[0].fieldName == "echo" + argumentTypeModification[0].argumentName == "message" + argumentTypeModification[0].oldType == "String!" + argumentTypeModification[0].newType == "ID!" + + def defaultValueModification = queryChanges.getDetails(ObjectFieldArgumentDefaultValueModification) + defaultValueModification.size() == 1 + defaultValueModification[0].fieldName == "echo" + defaultValueModification[0].argumentName == "message" + defaultValueModification[0].oldValue == '"Hello World"' + defaultValueModification[0].newValue == '"1"' + } + + def "interface field argument type and default value changed"() { + given: + def oldSdl = ''' + type Query { + echo: EchoProvider + } + interface EchoProvider { + send(message: String! = "Hello World"): String + } + ''' + def newSdl = ''' + type Query { + echo: EchoProvider + } + interface EchoProvider { + send(message: ID! = "1"): String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["EchoProvider"] instanceof InterfaceModification + def echoProviderChanges = changes.interfaceDifferences["EchoProvider"] as InterfaceModification + echoProviderChanges.details.size() == 2 + + def argumentTypeModification = echoProviderChanges.getDetails(InterfaceFieldArgumentTypeModification) + argumentTypeModification.size() == 1 + argumentTypeModification[0].fieldName == "send" + argumentTypeModification[0].argumentName == "message" + argumentTypeModification[0].oldType == "String!" + argumentTypeModification[0].newType == "ID!" + + def defaultValueModification = echoProviderChanges.getDetails(InterfaceFieldArgumentDefaultValueModification) + defaultValueModification.size() == 1 + defaultValueModification[0].fieldName == "send" + defaultValueModification[0].argumentName == "message" + defaultValueModification[0].oldValue == '"Hello World"' + defaultValueModification[0].newValue == '"1"' + } + + def "directive argument type and default value changed"() { + given: + def oldSdl = ''' + directive @deleteBy(date: String = "+1 week") on FIELD_DEFINITION + type Query { + echo: String @deleteBy + } + ''' + def newSdl = ''' + directive @deleteBy(date: Int = 1000) on FIELD_DEFINITION + type Query { + echo: String @deleteBy + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences["deleteBy"] instanceof DirectiveModification + def deleteByChanges = changes.directiveDifferences["deleteBy"] as DirectiveModification + deleteByChanges.details.size() == 2 + + def argumentTypeModification = deleteByChanges.getDetails(DirectiveArgumentTypeModification) + argumentTypeModification.size() == 1 + argumentTypeModification[0].argumentName == "date" + argumentTypeModification[0].oldType == "String" + argumentTypeModification[0].newType == "Int" + + def defaultValueModification = deleteByChanges.getDetails(DirectiveArgumentDefaultValueModification) + defaultValueModification.size() == 1 + defaultValueModification[0].argumentName == "date" + defaultValueModification[0].oldValue == '"+1 week"' + defaultValueModification[0].newValue == '1000' + } + + def "object field with argument removed and similarly named argument added"() { + given: + def oldSdl = """ + type Query { + issues: IssueQuery + } + type IssueQuery { + issues(id: [ID!]): [Issue] + issuesById: [Issue] + } + type Issue { + id: ID! + } + """ + def newSdl = ''' + type Query { + issues: IssueQuery + } + type IssueQuery { + issuesById(ids: [ID!]!): [Issue] + } + type Issue { + id: ID! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["IssueQuery"] instanceof ObjectModification + def issueQueryChanges = changes.objectDifferences["IssueQuery"] as ObjectModification + issueQueryChanges.details.size() == 2 + + def fieldDeletion = issueQueryChanges.getDetails(ObjectFieldDeletion) + fieldDeletion.size() == 1 + fieldDeletion[0].name == "issues" + + def fieldArgumentAddition = issueQueryChanges.getDetails(ObjectFieldArgumentAddition) + fieldArgumentAddition.size() == 1 + fieldArgumentAddition[0].fieldName == "issuesById" + fieldArgumentAddition[0].name == "ids" + } + + def "interface field with argument removed and similarly named argument added"() { + given: + def oldSdl = """ + type Query { + issues: IssueQuery + } + interface IssueQuery { + issues(id: [ID!]): [Issue] + issuesById: [Issue] + } + type Issue { + id: ID! + } + """ + def newSdl = ''' + type Query { + issues: IssueQuery + } + interface IssueQuery { + issuesById(ids: [ID!]!): [Issue] + } + type Issue { + id: ID! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences["IssueQuery"] instanceof InterfaceModification + def issueQueryChanges = changes.interfaceDifferences["IssueQuery"] as InterfaceModification + issueQueryChanges.details.size() == 2 + + def fieldDeletion = issueQueryChanges.getDetails(InterfaceFieldDeletion) + fieldDeletion.size() == 1 + fieldDeletion[0].name == "issues" + + def fieldArgumentAddition = issueQueryChanges.getDetails(InterfaceFieldArgumentAddition) + fieldArgumentAddition.size() == 1 + fieldArgumentAddition[0].fieldName == "issuesById" + fieldArgumentAddition[0].name == "ids" + } + + def "directive removed and similarly named argument added"() { + given: + def oldSdl = ''' + directive @dog(name: String) on FIELD_DEFINITION + directive @cat on FIELD_DEFINITION + type Query { + pet: String + } + ''' + def newSdl = ''' + directive @cat(names: String) on FIELD_DEFINITION + type Query { + pet: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences["dog"] instanceof DirectiveDeletion + def dogChanges = changes.directiveDifferences["dog"] as DirectiveDeletion + dogChanges.name == "dog" + + changes.directiveDifferences["cat"] instanceof DirectiveModification + def catChanges = changes.directiveDifferences["cat"] as DirectiveModification + !catChanges.isNameChanged() + catChanges.oldName == catChanges.newName + catChanges.newName == "cat" + catChanges.details.size() == 1 + + def argumentAddition = catChanges.getDetails(DirectiveArgumentAddition) + argumentAddition.size() == 1 + argumentAddition[0].name == "names" + } + + def "change object description"() { + given: + def oldSdl = ''' + "HELLO" + type Query { + pet: String + } + ''' + def newSdl = ''' + type Query { + pet: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences.isEmpty() + } + + def "change object field argument description"() { + given: + def oldSdl = ''' + type Query { + pet( + age: Int + ): String + } + ''' + def newSdl = ''' + type Query { + pet( + "The age of the pet" + age: Int + ): String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences.isEmpty() + } + + def "change interface description"() { + given: + def oldSdl = ''' + type Query { + pet: Pet + } + interface Pet { + name: String + } + ''' + def newSdl = ''' + type Query { + pet: Pet + } + "Hello World" + interface Pet { + name: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.interfaceDifferences.isEmpty() + } + + def "change union description"() { + given: + def oldSdl = ''' + type Query { + pet: Pet + } + union Pet = Dog | Cat + type Dog { + name: String + } + type Cat { + name: String + } + ''' + def newSdl = ''' + type Query { + pet: Pet + } + "----------------" + union Pet = Dog | Cat + type Dog { + name: String + } + type Cat { + name: String + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.unionDifferences.isEmpty() + } + + def "change input object and field description"() { + given: + def oldSdl = ''' + type Query { + pets(filter: PetFilter): [ID] + } + "Pet" + input PetFilter { + age: Int + } + ''' + def newSdl = ''' + type Query { + pets(filter: PetFilter): [ID] + } + "Only pets matching the filter will be returned" + input PetFilter { + "The age in years" + age: Int + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.inputObjectDifferences.isEmpty() + } + + def "change enum type and value description"() { + given: + def oldSdl = ''' + type Query { + pet(kind: PetKind): ID + } + enum PetKind { + "doggo" + DOG, + CAT, + } + ''' + def newSdl = ''' + type Query { + pet(kind: PetKind): ID + } + "The kind of pet" + enum PetKind { + DOG, + CAT, + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.enumDifferences.isEmpty() + } + + def "change scalar description"() { + given: + def oldSdl = ''' + scalar Age + type Query { + pet(age: Age): ID + } + ''' + def newSdl = ''' + "Represents age in years" + scalar Age + type Query { + pet(age: Age): ID + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.scalarDifferences.isEmpty() + } + + def "change directive description"() { + given: + def oldSdl = ''' + directive @cat on FIELD_DEFINITION + type Query { + pet: String @cat + } + ''' + def newSdl = ''' + "A cat or something" + directive @cat on FIELD_DEFINITION + type Query { + pet: String @cat + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.directiveDifferences.isEmpty() + } + + def "traversal order puts field changes before arguments"() { + def objectOld = new Vertex(SchemaGraph.OBJECT, "target-1") + objectOld.add("name", "Obey") + def objectNew = new Vertex(SchemaGraph.OBJECT, "target-1") + objectNew.add("name", "Ob") + def changeObjectVertex = EditOperation.changeVertex( + "Change object", + objectOld, + objectNew, + ) + + def newField = new Vertex(SchemaGraph.FIELD, "target-1") + newField.add("name", "fried") + def insertNewFieldVertex = EditOperation.insertVertex( + "Insert new field", + Vertex.newIsolatedNode("source-isolated-Field-1"), + newField, + ) + + def newArgument = new Vertex(SchemaGraph.ARGUMENT, "target-1") + newArgument.add("name", "alone") + def insertNewArgumentVertex = EditOperation.insertVertex( + "Insert argument", + Vertex.newIsolatedNode("source-isolated-Argument-1"), + newArgument, + ) + + def insertNewFieldEdge = EditOperation.insertEdge( + "Insert Object -> Field Edge", + new Edge(objectNew, newField), + ) + + def insertNewArgumentEdge = EditOperation.insertEdge( + "Insert Field -> Argument Edge", + new Edge(newField, newArgument), + ) + + when: + def result = EditOperationAnalyzer.getTraversalOrder([ + insertNewArgumentVertex, + insertNewFieldEdge, + insertNewArgumentEdge, + changeObjectVertex, + insertNewFieldVertex, + ]) + + then: + result == [ + changeObjectVertex, + insertNewFieldVertex, + insertNewArgumentVertex, + insertNewFieldEdge, + insertNewArgumentEdge, + ] + } + + def "less fields in the renamed object"() { + given: + def oldSdl = ''' + type Query { + user(id: ID!): User + } + type User { + id: String + name: String + account: String + email: Boolean + age: Int + } + ''' + def newSdl = ''' + type Query { + account(id: ID!): Account + } + type Account { + id: String + name: String + yearsOld: Int + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["User"] instanceof ObjectModification + def userModification = changes.objectDifferences["User"] as ObjectModification + userModification.isNameChanged() + userModification.oldName == "User" + userModification.newName == "Account" + + def deletions = userModification.getDetails(ObjectFieldDeletion) + deletions.size() == 2 + deletions.collect { it.name }.toSet() == ["account", "email"] as Set + + def rename = userModification.getDetails(ObjectFieldRename) + rename.size() == 1 + rename[0].oldName == "age" + rename[0].newName == "yearsOld" + } + + def "two possible mappings for object rename where one has less fields"() { + given: + def oldSdl = ''' + type Query { + user(id: ID!): User + } + type User { + id: String + name: String + account: String + email: String + age: Int + } + ''' + def newSdl = ''' + type Query { + account(id: ID!): Account + } + type Account { + yearsOld: Int + } + type Profile { + id: String + name: String + account: String + email: String + age: Int + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["Account"] instanceof ObjectAddition + + changes.objectDifferences["User"] instanceof ObjectModification + def userModification = changes.objectDifferences["User"] as ObjectModification + userModification.isNameChanged() + userModification.oldName == "User" + userModification.newName == "Profile" + + userModification.details.isEmpty() + } + + def "deleted field with fixed parent binding can map to isolated node"() { + given: + def oldSdl = ''' + type Query { + notifications: NotificationQuery + } + type NotificationQuery { + notificationFeed( + feedFilter: NotificationFeedFilter + first: Int = 25 + after: String + ): NotificationGroupedConnection! + unseenNotificationCount(workspaceId: String, product: String): Int! + } + input NotificationFeedFilter { + workspaceId: String + productFilter: String + groupId: String + } + type NotificationItem { + notificationId: ID! + workspaceId: String + } + type NotificationGroupedItem { + groupId: ID! + groupSize: Int! + headNotification: NotificationItem! + childItems(first: Int, after: String): [NotificationItem!] + } + type NotificationGroupedConnection { + nodes: [NotificationGroupedItem!]! + } + ''' + def newSdl = ''' + type Query { + notifications: NotificationQuery + } + type NotificationQuery { + notificationFeed( + filter: NotificationFilter + first: Int = 25 + after: String + ): NotificationFeedConnection! + notificationGroup( + groupId: String! + filter: NotificationFilter + first: Int = 25 + after: String + ): NotificationGroupConnection! + unseenNotificationCount(workspaceId: String, product: String): Int! + } + input NotificationFilter { + workspaceId: String + productFilter: String + } + type NotificationEntityModel{ + objectId: String! + containerId: String + workspaceId: String + cloudId: String + } + type NotificationItem { + notificationId: ID! + entityModel: NotificationEntityModel + workspaceId: String + } + type NotificationHeadItem { + groupId: ID! + groupSize: Int! + readStates: [String]! + additionalTypes: [String!]! + headNotification: NotificationItem! + endCursor: String + } + type NotificationFeedConnection { + nodes: [NotificationHeadItem!]! + } + type NotificationGroupConnection { + nodes: [NotificationItem!]! + } + ''' + + when: + def changes = calcDiff(oldSdl, newSdl) + + then: + changes.objectDifferences["NotificationGroupedItem"] === changes.objectDifferences["NotificationHeadItem"] + changes.objectDifferences["NotificationGroupedConnection"] === changes.objectDifferences["NotificationFeedConnection"] + changes.objectDifferences["NotificationGroupedItem"] instanceof ObjectModification + changes.objectDifferences["NotificationGroupedConnection"] instanceof ObjectModification + changes.objectDifferences["NotificationEntityModel"] instanceof ObjectAddition + changes.objectDifferences["NotificationGroupConnection"] instanceof ObjectAddition + changes.objectDifferences["NotificationItem"] instanceof ObjectModification + changes.objectDifferences["NotificationQuery"] instanceof ObjectModification + + changes.inputObjectDifferences["NotificationFeedFilter"] === changes.inputObjectDifferences["NotificationFilter"] + changes.inputObjectDifferences["NotificationFeedFilter"] instanceof InputObjectModification + + def notificationFeedFilterChange = changes.inputObjectDifferences["NotificationFeedFilter"] as InputObjectModification + notificationFeedFilterChange.details.size() == 1 + notificationFeedFilterChange.details[0] instanceof InputObjectFieldDeletion + def groupIdInputObjectFieldDeletion = notificationFeedFilterChange.details[0] as InputObjectFieldDeletion + groupIdInputObjectFieldDeletion.name == "groupId" + } + + EditOperationAnalysisResult calcDiff( + String oldSdl, + String newSdl + ) { + def oldSchema = TestUtil.schema(oldSdl) + def newSchema = TestUtil.schema(newSdl) + def changes = new SchemaDiffing().diffAndAnalyze(oldSchema, newSchema) + return changes + } +} diff --git a/src/test/groovy/graphql/schema/fetching/ConfusedPojo.java b/src/test/groovy/graphql/schema/fetching/ConfusedPojo.java new file mode 100644 index 0000000000..aa0bc174c6 --- /dev/null +++ b/src/test/groovy/graphql/schema/fetching/ConfusedPojo.java @@ -0,0 +1,28 @@ +package graphql.schema.fetching; + +public class ConfusedPojo { + + public String getRecordLike() { + return "getRecordLike"; + } + + public String recordLike() { + return "recordLike"; + } + + public String gettingConfused() { + return "gettingConfused"; + } + + public String getTingConfused() { + return "getTingConfused"; + } + + public boolean issues() { + return true; + } + + public boolean isSues() { + return false; + } +} diff --git a/src/test/groovy/graphql/schema/fetching/LambdaFetchingSupportTest.groovy b/src/test/groovy/graphql/schema/fetching/LambdaFetchingSupportTest.groovy new file mode 100644 index 0000000000..9ad4df39ef --- /dev/null +++ b/src/test/groovy/graphql/schema/fetching/LambdaFetchingSupportTest.groovy @@ -0,0 +1,199 @@ +package graphql.schema.fetching + +import graphql.Scalars +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.PropertyDataFetcher +import graphql.util.javac.DynamicJavacSupport +import spock.lang.IgnoreIf +import spock.lang.Specification + +class LambdaFetchingSupportTest extends Specification { + + def "can proxy Pojo methods"() { + + def pojo = new Pojo("Brad", 42) + when: + def getName = LambdaFetchingSupport.mkCallFunction(Pojo.class, "getName", String.class) + def getAge = LambdaFetchingSupport.mkCallFunction(Pojo.class, "getAge", Integer.TYPE) + + then: + getName.apply(pojo) == "Brad" + getAge.apply(pojo) == 42 + } + + def "get make getters based on property names"() { + def pojo = new Pojo("Brad", 42) + when: + def getter = LambdaFetchingSupport.createGetter(Pojo.class, "name") + then: + getter.isPresent() + getter.get().apply(pojo) == "Brad" + + when: + getter = LambdaFetchingSupport.createGetter(Pojo.class, "age") + then: + getter.isPresent() + getter.get().apply(pojo) == 42 + + } + + def "get make getters based on record like names"() { + def pojo = new Pojo("Brad", 42) + when: + def getter = LambdaFetchingSupport.createGetter(Pojo.class, "recordLike") + then: + getter.isPresent() + getter.get().apply(pojo) == "recordLike" + + // + // record like getters will be found first - this is new behavior but more sensible behavior + def confusedPojo = new ConfusedPojo() + when: + getter = LambdaFetchingSupport.createGetter(ConfusedPojo.class, "recordLike") + then: + getter.isPresent() + getter.get().apply(confusedPojo) == "recordLike" + + // weird arse getter methods like `issues` versus `isSues` + when: + getter = LambdaFetchingSupport.createGetter(ConfusedPojo.class, "gettingConfused") + then: + getter.isPresent() + getter.get().apply(confusedPojo) == "gettingConfused" + + when: + getter = LambdaFetchingSupport.createGetter(ConfusedPojo.class, "tingConfused") + then: + getter.isPresent() + getter.get().apply(confusedPojo) == "getTingConfused" + + // weird arse getter methods like `issues` versus `isSues` + when: + getter = LambdaFetchingSupport.createGetter(ConfusedPojo.class, "issues") + then: + getter.isPresent() + getter.get().apply(confusedPojo) == true + + when: + getter = LambdaFetchingSupport.createGetter(ConfusedPojo.class, "sues") + then: + getter.isPresent() + getter.get().apply(confusedPojo) == false + + } + + def "will handle missing ones"() { + + when: + def getter = LambdaFetchingSupport.createGetter(Pojo.class, "nameX") + then: + !getter.isPresent() + } + + def "will handle weird ones"() { + + def pojo = new Pojo("Brad", 42) + + when: + def getter = LambdaFetchingSupport.createGetter(Pojo.class, "get") + then: + getter.isPresent() + getter.get().apply(pojo) == "get" + + when: + getter = LambdaFetchingSupport.createGetter(Pojo.class, "is") + then: + getter.isPresent() + getter.get().apply(pojo) == "is" + } + + def "can handle boolean setters - is by preference"() { + + def pojo = new Pojo("Brad", 42) + when: + def getter = LambdaFetchingSupport.createGetter(Pojo.class, "interesting") + then: + getter.isPresent() + getter.get().apply(pojo) == true + + when: + getter = LambdaFetchingSupport.createGetter(Pojo.class, "alone") + then: + getter.isPresent() + getter.get().apply(pojo) == true + + when: + getter = LambdaFetchingSupport.createGetter(Pojo.class, "booleanAndNullish") + then: + getter.isPresent() + getter.get().apply(pojo) == null + } + + def "will ignore non public methods"() { + + when: + def getter = LambdaFetchingSupport.createGetter(Pojo.class, "protectedLevelMethod") + then: + !getter.isPresent() + + when: + getter = LambdaFetchingSupport.createGetter(Pojo.class, "privateLevelMethod") + then: + !getter.isPresent() + + when: + getter = LambdaFetchingSupport.createGetter(Pojo.class, "packageLevelMethod") + then: + !getter.isPresent() + } + + GraphQLFieldDefinition fld(String fldName) { + return GraphQLFieldDefinition.newFieldDefinition().name(fldName).type(Scalars.GraphQLString).build() + } + + @IgnoreIf({ System.getProperty("java.version").split('\\.')[0] as Integer > 11 }) + def "different class loaders induce certain behaviours"() { + String sourceCode = ''' + package com.dynamic; + public class TestClass { + public String hello() { + return "world"; + } + } + ''' + + def customClass = new DynamicJavacSupport(null).compile("com.dynamic.TestClass", sourceCode) + def targetObject = customClass.getDeclaredConstructor().newInstance() + + // show that the graphql-java classes cant access this custom loaded class + when: + LambdaFetchingSupport.class.getClassLoader().loadClass("com.dynamic.TestClass") + then: + thrown(ClassNotFoundException) + + // show that reflection works + when: + def helloMethod = targetObject.getClass().getMethod("hello") + def reflectedValue = helloMethod.invoke(targetObject) + then: + reflectedValue == "world" + + // without MethodHandles.privateLookupIn this will fail crossing class loaders in Java 8 + // if we change to privateLookupIn - then this will start working and this test will need to be changed + when: + def getter = LambdaFetchingSupport.createGetter(customClass, "hello") + then: + + // with Java 9+ we can get access to methods across class loaders + getter.isPresent() + def value = getter.get().apply(targetObject) + value == "world" + + // show that a DF can be used + when: + def ageDF = PropertyDataFetcher.fetching("hello") + value = ageDF.get(fld("hello"), targetObject, { -> null }) + then: + value == "world" + } +} diff --git a/src/test/groovy/graphql/schema/fetching/Pojo.java b/src/test/groovy/graphql/schema/fetching/Pojo.java new file mode 100644 index 0000000000..dac6ce914b --- /dev/null +++ b/src/test/groovy/graphql/schema/fetching/Pojo.java @@ -0,0 +1,72 @@ +package graphql.schema.fetching; + +import com.google.common.collect.ImmutableList; + +import java.util.List; + +public class Pojo { + final String name; + final int age; + + public Pojo(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + public Integer getHeight() { + return null; + } + + public List getOtherNames() { + return ImmutableList.of("A", "B"); + } + + protected String protectedLevelMethod() { + return "protectedLevelMethod"; + } + + private String privateLevelMethod() { + return "privateLevelMethod"; + } + + String packageLevelMethod() { + return "packageLevelMethod"; + } + + public boolean getInteresting() { + return false; + } + + public boolean isInteresting() { + return true; + } + + public Boolean getAlone() { + return true; + } + + public Boolean getBooleanAndNullish() { + return null; + } + + public String get() { + return "get"; + } + + public String is() { + return "is"; + } + + public String recordLike() { + return "recordLike"; + } + +} \ No newline at end of file diff --git a/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy b/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy new file mode 100644 index 0000000000..9bf440c572 --- /dev/null +++ b/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy @@ -0,0 +1,255 @@ +package graphql.schema.idl + +import graphql.language.InterfaceTypeDefinition +import graphql.language.TypeDefinition +import spock.lang.Specification + +class ImmutableTypeDefinitionRegistryTest extends Specification { + + def serializableSchema = ''' + "the schema" + schema { + query : Q + } + + "the query type" + type Q { + field( arg : String! = "default") : FieldType @deprecated(reason : "no good") + } + + interface FieldType { + f : UnionType + } + + type FieldTypeImpl implements FieldType { + f : UnionType + } + + union UnionType = Foo | Bar + + type Foo { + foo : String + } + + type Bar { + bar : String + } + + scalar MyScalar + + input InputType { + in : String + } + ''' + + def "immutable registry can be serialized and hence cacheable"() { + def registryOut = new SchemaParser().parse(serializableSchema).readOnly() + + when: + + TypeDefinitionRegistry registryIn = serialise(registryOut).readOnly() + + then: + + TypeDefinition typeIn = registryIn.getTypeOrNull(typeName) + TypeDefinition typeOut = registryOut.getTypeOrNull(typeName) + typeIn.isEqualTo(typeOut) + + where: + typeName | _ + "Q" | _ + "FieldType" | _ + "FieldTypeImpl" | _ + "UnionType" | _ + "Foo" | _ + "Bar" | _ + } + + def "immutable registry is a perfect copy of the starting registry"() { + when: + def mutableRegistry = new SchemaParser().parse(serializableSchema) + def immutableRegistry = mutableRegistry.readOnly() + + then: + + containsSameObjects(mutableRegistry.types(), immutableRegistry.types()) + + TypeDefinition typeIn = mutableRegistry.getTypeOrNull(typeName) + TypeDefinition typeOut = immutableRegistry.getTypeOrNull(typeName) + typeIn.isEqualTo(typeOut) + + where: + typeName | _ + "Q" | _ + "FieldType" | _ + "FieldTypeImpl" | _ + "UnionType" | _ + "Foo" | _ + "Bar" | _ + } + + def "extensions are also present in immutable copy"() { + def sdl = serializableSchema + """ + extend type FieldTypeImpl { + extra : String + } + + extend input InputType { + out : String + } + + extend scalar MyScalar @specifiedBy(url: "myUrl.example") + + extend union UnionType @deprecated + + extend interface FieldType @deprecated + + """ + + when: + def mutableRegistry = new SchemaParser().parse(sdl) + def immutableRegistry = mutableRegistry.readOnly() + + then: + + containsSameObjects(mutableRegistry.types(), immutableRegistry.types()) + containsSameObjects(mutableRegistry.objectTypeExtensions(), immutableRegistry.objectTypeExtensions()) + containsSameObjects(mutableRegistry.inputObjectTypeExtensions(), immutableRegistry.inputObjectTypeExtensions()) + containsSameObjects(mutableRegistry.interfaceTypeExtensions(), immutableRegistry.interfaceTypeExtensions()) + containsSameObjects(mutableRegistry.unionTypeExtensions(), immutableRegistry.unionTypeExtensions()) + containsSameObjects(mutableRegistry.scalarTypeExtensions(), immutableRegistry.scalarTypeExtensions()) + + } + + def "readonly is aware if itself"() { + when: + def mutableRegistry = new SchemaParser().parse(serializableSchema) + def immutableRegistry1 = mutableRegistry.readOnly() + + then: + mutableRegistry !== immutableRegistry1 + + when: + def immutableRegistry2 = immutableRegistry1.readOnly() + + then: + immutableRegistry2 === immutableRegistry1 + + + } + + def "is in read only mode"() { + when: + def mutableRegistry = new SchemaParser().parse(serializableSchema) + def immutableRegistry = mutableRegistry.readOnly() + + immutableRegistry.merge(mutableRegistry) + + then: + thrown(UnsupportedOperationException) + + when: + immutableRegistry.addAll([]) + then: + thrown(UnsupportedOperationException) + + + def someDef = mutableRegistry.getTypes(TypeDefinition.class)[0] + + when: + immutableRegistry.add(someDef) + then: + thrown(UnsupportedOperationException) + + when: + immutableRegistry.remove(someDef) + then: + thrown(UnsupportedOperationException) + + when: + immutableRegistry.remove("key", someDef) + then: + thrown(UnsupportedOperationException) + } + + def "get implementations of"() { + def sdl = serializableSchema + """ + interface IType { + i : String + } + + interface DerivedIType implements IType { + i : String + d : String + } + + """ + for (int i = 0; i < 10; i++) { + sdl += """ + type OT$i implements IType { + i : String + } + """ + + } + for (int i = 0; i < 5; i++) { + sdl += """ + type DT$i implements DerivedIType { + i : String + d : String + } + """ + + } + def immutableRegistry = new SchemaParser().parse(sdl).readOnly() + + Map interfaces = immutableRegistry.getTypesMap(InterfaceTypeDefinition.class) + + when: + def iFieldType = interfaces.get("IType") + def allImplementationsOf = immutableRegistry.getAllImplementationsOf(iFieldType) + def implementationsOf = immutableRegistry.getImplementationsOf(iFieldType) + + then: + allImplementationsOf.size() == 11 + allImplementationsOf.collect({ it.getName() }).every { it.startsWith("OT") || it == "DerivedIType" } + + implementationsOf.size() == 10 + implementationsOf.collect({ it.getName() }).every { it.startsWith("OT") } + + when: + def iDerivedType = interfaces.get("DerivedIType") + allImplementationsOf = immutableRegistry.getAllImplementationsOf(iDerivedType) + implementationsOf = immutableRegistry.getImplementationsOf(iDerivedType) + + then: + allImplementationsOf.size() == 5 + allImplementationsOf.collect({ it.getName() }).every { it.startsWith("DT") } + + implementationsOf.size() == 5 + implementationsOf.collect({ it.getName() }).every { it.startsWith("DT") } + + } + + void containsSameObjects(Map leftMap, Map rightMap) { + assert leftMap.size() > 0, "The map must have some entries" + assert leftMap.size() == rightMap.size(), "The maps are not the same size" + for (String leftKey : leftMap.keySet()) { + def leftVal = leftMap.get(leftKey) + def rightVal = rightMap.get(leftKey) + assert leftVal === rightVal, "$leftKey : $leftVal dont not strictly equal $rightVal" + } + } + + static TypeDefinitionRegistry serialise(TypeDefinitionRegistry registryOut) { + ByteArrayOutputStream baOS = new ByteArrayOutputStream() + ObjectOutputStream oos = new ObjectOutputStream(baOS) + + oos.writeObject(registryOut) + + ByteArrayInputStream baIS = new ByteArrayInputStream(baOS.toByteArray()) + ObjectInputStream ois = new ObjectInputStream(baIS) + + ois.readObject() as TypeDefinitionRegistry + } +} diff --git a/src/test/groovy/graphql/schema/idl/MockedWiringFactoryTest.groovy b/src/test/groovy/graphql/schema/idl/MockedWiringFactoryTest.groovy new file mode 100644 index 0000000000..18fa630a7b --- /dev/null +++ b/src/test/groovy/graphql/schema/idl/MockedWiringFactoryTest.groovy @@ -0,0 +1,49 @@ +package graphql.schema.idl + + +import spock.lang.Specification + +class MockedWiringFactoryTest extends Specification { + + def "mock wiring factory can be used for any schema"() { + def sdl = """ + type Query { + foo : Foo + } + + scalar SomeScalar + scalar SomeOtherScalar + + type Foo { + bar( + arg1 : SomeScalar! = 666, + arg2 : Int! = 777, + arg3 : SomeOtherScalar = { x : [{ y : 1, z : "s"}] } ) : Bar + } + + interface Bar { + baz : String + } + + type BarBar implements Bar { + baz : String + } + + type BlackSheep implements Bar { + baz : String + } + """ + + when: + def registry = new SchemaParser().parse(sdl) + def schema = new SchemaGenerator().makeExecutableSchema(registry, RuntimeWiring.MOCKED_WIRING) + + then: + schema != null + schema.getType("Query") != null + schema.getType("Foo") != null + schema.getType("Bar") != null + schema.getType("BarBar") != null + schema.getType("BlackSheep") != null + } +} diff --git a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy index f5bb8a9fb4..beb518ae2f 100644 --- a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy @@ -1,12 +1,17 @@ package graphql.schema.idl +import graphql.Scalars import graphql.TypeResolutionEnvironment import graphql.schema.Coercing import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLFieldsContainer import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.TypeResolver +import graphql.schema.idl.errors.StrictModeWiringException +import graphql.schema.visibility.GraphqlFieldVisibility import spock.lang.Specification import java.util.function.UnaryOperator @@ -59,22 +64,22 @@ class RuntimeWiringTest extends Specification { def "basic call structure"() { def wiring = RuntimeWiring.newRuntimeWiring() .type("Query", { type -> - type - .dataFetcher("fieldX", new NamedDF("fieldX")) - .dataFetcher("fieldY", new NamedDF("fieldY")) - .dataFetcher("fieldZ", new NamedDF("fieldZ")) - .defaultDataFetcher(new NamedDF("defaultQueryDF")) - .typeResolver(new NamedTR("typeResolver4Query")) - } as UnaryOperator) + type + .dataFetcher("fieldX", new NamedDF("fieldX")) + .dataFetcher("fieldY", new NamedDF("fieldY")) + .dataFetcher("fieldZ", new NamedDF("fieldZ")) + .defaultDataFetcher(new NamedDF("defaultQueryDF")) + .typeResolver(new NamedTR("typeResolver4Query")) + } as UnaryOperator) .type("Mutation", { type -> - type - .dataFetcher("fieldX", new NamedDF("mfieldX")) - .dataFetcher("fieldY", new NamedDF("mfieldY")) - .dataFetcher("fieldZ", new NamedDF("mfieldZ")) - .defaultDataFetcher(new NamedDF("defaultMutationDF")) - .typeResolver(new NamedTR("typeResolver4Mutation")) - } as UnaryOperator) + type + .dataFetcher("fieldX", new NamedDF("mfieldX")) + .dataFetcher("fieldY", new NamedDF("mfieldY")) + .dataFetcher("fieldZ", new NamedDF("mfieldZ")) + .defaultDataFetcher(new NamedDF("defaultMutationDF")) + .typeResolver(new NamedTR("typeResolver4Mutation")) + } as UnaryOperator) .build() @@ -99,7 +104,7 @@ class RuntimeWiringTest extends Specification { } def "scalars are present"() { - def customScalar = new GraphQLScalarType("URL", "Custom", coercing) + def customScalar = GraphQLScalarType.newScalar().name("URL").description("Custom").coercing(coercing).build() def wiring = RuntimeWiring.newRuntimeWiring().scalar(customScalar).build() @@ -114,4 +119,271 @@ class RuntimeWiringTest extends Specification { wiring.getScalars().get("Boolean").name == "Boolean" wiring.getScalars().get("ID").name == "ID" } + + def "newRuntimeWiring works and copies values"() { + when: + def customScalar1 = GraphQLScalarType.newScalar() + .name("Custom1").description("Custom 1").coercing(coercing).build() + + def oldWiring = RuntimeWiring.newRuntimeWiring() + .scalar(customScalar1) + .build() + + def customScalar2 = GraphQLScalarType.newScalar() + .name("Custom2").description("Custom 2").coercing(coercing).build() + + GraphqlFieldVisibility fieldVisibility = new GraphqlFieldVisibility() { + @Override + List getFieldDefinitions(GraphQLFieldsContainer fieldsContainer) { + return null + } + + @Override + GraphQLFieldDefinition getFieldDefinition(GraphQLFieldsContainer fieldsContainer, String fieldName) { + return null + } + } + + def newWiring = RuntimeWiring.newRuntimeWiring(oldWiring) + .scalar(customScalar2) + .fieldVisibility(fieldVisibility) + .build() + + then: + newWiring.scalars.entrySet().containsAll(oldWiring.scalars.entrySet()) + newWiring.scalars["Custom1"] == customScalar1 + newWiring.scalars["Custom2"] == customScalar2 + newWiring.fieldVisibility == fieldVisibility + } + + def "transform works and copies values"() { + when: + def customScalar1 = GraphQLScalarType.newScalar() + .name("Custom1").description("Custom 1").coercing(coercing).build() + + def oldWiring = RuntimeWiring.newRuntimeWiring() + .scalar(customScalar1) + .build() + + def customScalar2 = GraphQLScalarType.newScalar() + .name("Custom2").description("Custom 2").coercing(coercing).build() + + GraphqlFieldVisibility fieldVisibility = new GraphqlFieldVisibility() { + @Override + List getFieldDefinitions(GraphQLFieldsContainer fieldsContainer) { + return null + } + + @Override + GraphQLFieldDefinition getFieldDefinition(GraphQLFieldsContainer fieldsContainer, String fieldName) { + return null + } + } + + def newWiring = oldWiring.transform({ builder -> + builder + .scalar(customScalar2) + .fieldVisibility(fieldVisibility) + }) + + then: + newWiring.scalars.entrySet().containsAll(oldWiring.scalars.entrySet()) + newWiring.scalars["Custom1"] == customScalar1 + newWiring.scalars["Custom2"] == customScalar2 + newWiring.fieldVisibility == fieldVisibility + } + + def "strict mode, on by default, can stop certain redefinitions"() { + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null + + when: + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) // Cannot redefine the same field's datafetcher + + then: + def e1 = thrown(StrictModeWiringException) + e1.message == "The field foo on type Foo has already been defined" + + when: + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + + then: + def e2 = thrown(StrictModeWiringException) + e2.message == "The type Foo already has a type resolver defined" + + when: + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + then: + def e3 = thrown(StrictModeWiringException) + e3.message == "The type Foo already has a enum provider defined" + + when: + RuntimeWiring.newRuntimeWiring() + .scalar(Scalars.GraphQLString) + then: + def e4 = thrown(StrictModeWiringException) + e4.message == "The scalar String is already defined" + + when: + TypeRuntimeWiring.newTypeWiring("Foo") + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + + then: + def e5 = thrown(StrictModeWiringException) + e5.message == "The type Foo has already has a default data fetcher defined" + } + + def "strict mode, on by default, permits a type to be defined more than once as long as elements are not overlapping"() { + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null + + when: + // Permit type wiring to be defined more than once, if child DataFetchers are for distinct fields + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF2)) + .build() + + then: + noExceptionThrown() + runtimeWiring1.getDataFetchers().get("Foo").get("foo") == DF1 + runtimeWiring1.getDataFetchers().get("Foo").get("bar") == DF2 + + when: + // Only one type wiring is allowed per type, do not allow redefinition + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + + then: + def e2 = thrown(StrictModeWiringException) + e2.message == "The type Foo already has a type resolver defined" + + when: + // Only one enum values provider is allowed per type, do not allow redefinition + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + + then: + def e3 = thrown(StrictModeWiringException) + e3.message == "The type Foo already has a enum provider defined" + + when: + // Only one scalar wiring is allowed per scalar + RuntimeWiring.newRuntimeWiring() + .scalar(Scalars.GraphQLString) + then: + def e4 = thrown(StrictModeWiringException) + e4.message == "The scalar String is already defined" + + when: + // Only one default data fetcher is allowed, do not allow redefinition + TypeRuntimeWiring.newTypeWiring("Foo") + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + + then: + def e5 = thrown(StrictModeWiringException) + e5.message == "The type Foo has already has a default data fetcher defined" + } + + def "strict mode, if set to off, won't stop certain redefinitions"() { + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null + + when: + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF2)) + .build() + + then: + noExceptionThrown() + runtimeWiring1.getDataFetchers().get("Foo").get("foo") == DF2 + + when: + def runtimeWiring2 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .build() + + then: + noExceptionThrown() + runtimeWiring2.typeResolvers.get("Foo") == TR1 + + when: + def runtimeWiring3 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .build() + + then: + noExceptionThrown() + runtimeWiring3.getEnumValuesProviders().get("Foo") == EVP1 + + when: + def runtimeWiring4 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .scalar(Scalars.GraphQLString) + .build() + + then: + noExceptionThrown() + runtimeWiring4.scalars.get("String") == Scalars.GraphQLString + + when: + def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + .strictMode(false) + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + .build() + + then: + noExceptionThrown() + typeRuntimeWiring.defaultDataFetcher == DF2 + } + + def "when strict mode on, do not allow default data fetcher redefinition"() { + DataFetcher DF1 = env -> "w" + DataFetcher DEFAULT_DF = env -> "x" + DataFetcher DEFAULT_DF2 = env -> "y" + + // Having a datafetcher and a default for the type is ok + when: + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .build() + + then: + runtimeWiring1.getDefaultDataFetcherForType("Foo") == DEFAULT_DF + + // Do not permit redefinition of the default datafetcher + when: + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF2)) + .build() + + then: + def error = thrown(StrictModeWiringException) + error.message == "The type Foo already has a default data fetcher defined" + } } diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy new file mode 100644 index 0000000000..f42cc49058 --- /dev/null +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy @@ -0,0 +1,132 @@ +package graphql.schema.idl + + +import graphql.TestUtil +import graphql.schema.GraphQLInputType +import spock.lang.Specification + +class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { + + def sdl = """ + directive @foo(arg1 : String! = "fooArg1Value", arg2 : String) on + SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | + INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + directive @bar(arg1 : String, arg2 : String) on + SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | + INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + directive @complex(complexArg1 : ComplexInput! = { name : "Boris", address : { number : 10 street : "Downing St", town : "London" }}) on + SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | + INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + + type Query { + field : Bar @foo(arg2 : "arg2Value") @bar(arg1 : "barArg1Value" arg2 : "arg2Value") + complexField : Bar @complex + } + + type Bar @foo(arg1 : "BarTypeValue" arg2 : "arg2Value") { + bar : String + } + + input ComplexInput { + name : String + address : Address + } + + input Address { + number : Int + street : String + town : String + } + + """ + + def "can capture applied directives and legacy directives"() { + + when: + def schema = TestUtil.schema(sdl) + def field = schema.getObjectType("Query").getField("field") + def complexField = schema.getObjectType("Query").getField("complexField") + def barType = schema.getObjectType("Bar") + + then: + + schema.getDirectives().collect {it.name}.sort() == [ + "bar", + "complex", + "defer", + "deprecated", + "experimental_disableErrorPropagation", + "foo", + "include", + "oneOf", + "skip", + "specifiedBy", + ] + + field.directives.collect { it.name }.sort() == ["bar", "foo"] + field.appliedDirectives.collect { it.name }.sort() == ["bar", "foo"] + + barType.directives.collect { it.name }.sort() == ["foo"] + barType.appliedDirectives.collect { it.name }.sort() == ["foo"] + + def fooAppliedDirective = field.getAppliedDirective("foo") + fooAppliedDirective.arguments.collect { it.name }.sort() == ["arg1", "arg2"] + fooAppliedDirective.arguments.collect { it.getValue() }.sort() == ["arg2Value", "fooArg1Value"] + + def fooAppliedDirectiveOnType = barType.getAppliedDirective("foo") + fooAppliedDirectiveOnType.arguments.collect { it.name }.sort() == ["arg1", "arg2"] + fooAppliedDirectiveOnType.arguments.collect { it.getValue() }.sort() == ["BarTypeValue", "arg2Value",] + + def complexAppliedDirective = complexField.getAppliedDirective("complex") + GraphQLInputType complexInputType = schema.getTypeAs("ComplexInput") + complexAppliedDirective.arguments.collect { it.name }.sort() == ["complexArg1"] + complexAppliedDirective.arguments.collect { it.getValue() }.sort() == [ + [name:"Boris", address:[number:10, street:"Downing St", town:"London"]] + ] + } + + def "can capture ONLY applied directives"() { + + when: + def options = SchemaGenerator.Options.defaultOptions() + then: + !options.isUseAppliedDirectivesOnly() // default is capture both + + + when: + options = SchemaGenerator.Options.defaultOptions().useAppliedDirectivesOnly(true) + + def schema = TestUtil.schema(options, sdl, RuntimeWiring.MOCKED_WIRING) + def field = schema.getObjectType("Query").getField("field") + def barType = schema.getObjectType("Bar") + + then: + + schema.getDirectives().collect {it.name}.sort() == [ + "bar", + "complex", + "defer", + "deprecated", + "experimental_disableErrorPropagation", + "foo", + "include", + "oneOf", + "skip", + "specifiedBy", + ] + + field.directives.collect { it.name }.sort() == [] + field.appliedDirectives.collect { it.name }.sort() == ["bar", "foo"] + + barType.directives.collect { it.name }.sort() == [] + barType.appliedDirectives.collect { it.name }.sort() == ["foo"] + + + def fooAppliedDirective = field.getAppliedDirective("foo") + fooAppliedDirective.arguments.collect { it.name }.sort() == ["arg1", "arg2"] + fooAppliedDirective.arguments.collect { it.value }.sort() == ["arg2Value", "fooArg1Value"] + } + +} diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorDirectiveHelperTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorDirectiveHelperTest.groovy index f147b37df9..0570df2770 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorDirectiveHelperTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorDirectiveHelperTest.groovy @@ -2,6 +2,8 @@ package graphql.schema.idl import graphql.ExecutionInput import graphql.GraphQL +import graphql.GraphQLContext +import graphql.execution.ValuesResolver import graphql.schema.Coercing import graphql.schema.CoercingParseLiteralException import graphql.schema.CoercingParseValueException @@ -9,9 +11,10 @@ import graphql.schema.CoercingSerializeException import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLAppliedDirective import graphql.schema.GraphQLArgument import graphql.schema.GraphQLCodeRegistry -import graphql.schema.GraphQLDirective +import graphql.schema.GraphQLDirectiveContainer import graphql.schema.GraphQLEnumType import graphql.schema.GraphQLEnumValueDefinition import graphql.schema.GraphQLFieldDefinition @@ -19,6 +22,7 @@ import graphql.schema.GraphQLFieldsContainer import graphql.schema.GraphQLInputObjectField import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLInterfaceType +import graphql.schema.GraphQLNamedType import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLUnionType @@ -33,7 +37,7 @@ import static graphql.schema.DataFetcherFactories.wrapDataFetcher class SchemaGeneratorDirectiveHelperTest extends Specification { - def customScalarType = new GraphQLScalarType("ScalarType", "", new Coercing() { + def customScalarType = GraphQLScalarType.newScalar().name("ScalarType").coercing(new Coercing() { @Override Object serialize(Object input) throws CoercingSerializeException { return input @@ -49,8 +53,9 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { return input } }) + .build() - def assertCallHierarchy(elementHierarchy, astHierarchy, String name, List l) { + static def assertCallHierarchy(elementHierarchy, astHierarchy, String name, List l) { assert elementHierarchy[name] == l, "unexpected elementHierarchy" assert astHierarchy[name] == l, "unexpected astHierarchy" true @@ -100,15 +105,19 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { input InputType @inputDirective(target : "InputType") { inputField1 : String @inputFieldDirective(target : "inputField1") inputField2 : String @inputFieldDirective(target : "inputField2") + circularInputField : IndirectType @inputFieldDirective(target : "circularInputField") } + input IndirectType { + indirectInputField1 : InputType @inputFieldDirective(target : "indirectInputField1") + } + enum EnumType @enumDirective(target:"EnumType") { enumVal1 @enumValueDirective(target : "enumVal1") enumVal2 @enumValueDirective(target : "enumVal2") } scalar ScalarType @scalarDirective(target:"ScalarType") - ''' //`this contains the name of the element that was asked to be directive wired @@ -133,8 +142,10 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { fieldsContainers[name] = environment.getFieldsContainer()?.getName() fieldDefinitions[name] = environment.getFieldDefinition()?.getName() - GraphQLDirective directive = environment.getDirective() - String target = directive.getArgument("target").getValue() + GraphQLAppliedDirective appliedDirective = environment.getAppliedDirective() + def arg = appliedDirective.getArgument("target") + + String target = ValuesResolver.valueToInternalValue(arg.getArgumentValue(), arg.getType(), GraphQLContext.getDefault(), Locale.getDefault()) assert name == target, " The target $target is not equal to the object name $name" return element } @@ -232,6 +243,8 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { targetList.contains("InputType") targetList.contains("inputField1") targetList.contains("inputField2") + targetList.contains("circularInputField") + targetList.contains("indirectInputField1") targetList.contains("EnumType") targetList.contains("enumVal1") @@ -312,11 +325,16 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { @Override GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment directiveEnv) { GraphQLFieldDefinition field = directiveEnv.getElement() + def container = directiveEnv.fieldsContainer + if (!container instanceof GraphQLObjectType) { + return field + } // // we use the non shortcut path to the data fetcher here so prove it still works - def fetcher = directiveEnv.getCodeRegistry().getDataFetcher(directiveEnv.fieldsContainer, field) + + def fetcher = directiveEnv.getCodeRegistry().getDataFetcher(container as GraphQLObjectType, field) def newFetcher = wrapDataFetcher(fetcher, { dfEnv, value -> - def directiveName = directiveEnv.directive.name + def directiveName = directiveEnv.appliedDirective.name if (directiveName == "uppercase") { return String.valueOf(value).toUpperCase() } else if (directiveName == "lowercase") { @@ -365,10 +383,10 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { def graphQL = GraphQL.newGraphQL(schema).build() def input = ExecutionInput.newExecutionInput() .root( - [ - lowerCaseValue: "lowercasevalue", - upperCaseValue: "UPPERCASEVALUE", - ]) + [ + lowerCaseValue: "lowercasevalue", + upperCaseValue: "UPPERCASEVALUE", + ]) .query(""" query { lowerCaseValue @@ -471,10 +489,15 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { @Override GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment environment) { GraphQLFieldDefinition element = environment.getElement() - return wrapField(environment.fieldsContainer, element, environment.getBuildContext(), environment.getCodeRegistry()) + + def container = environment.fieldsContainer + if (! container instanceof GraphQLObjectType) { + return element + } + return wrapField(container as GraphQLObjectType, element, environment.getBuildContext(), environment.getCodeRegistry()) } - private GraphQLFieldDefinition wrapField(GraphQLFieldsContainer parentType, GraphQLFieldDefinition field, Map contextMap, GraphQLCodeRegistry.Builder codeRegistry) { + private GraphQLFieldDefinition wrapField(GraphQLObjectType parentType, GraphQLFieldDefinition field, Map contextMap, GraphQLCodeRegistry.Builder codeRegistry) { def originalFetcher = codeRegistry.getDataFetcher(parentType, field) String key = mkFieldKey(parentType.getName(), field.getName()) @@ -485,8 +508,8 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { } contextMap.put(key, true) - DataFetcher wrapper = { dfEnv -> - def flag = dfEnv.getContext()['protectSecrets'] + DataFetcher wrapper = { DataFetchingEnvironment dfEnv -> + def flag = dfEnv.getGraphQlContext().get('protectSecrets') if (flag == null || flag == false) { return originalFetcher.get(dfEnv) } @@ -527,7 +550,7 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { def executionInput = ExecutionInput.newExecutionInput() .root(root) .query(query) - .context([protectSecrets: true]) + .graphQLContext([protectSecrets: true]) .build() def er = graphQL.execute(executionInput) @@ -543,7 +566,7 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { executionInput = ExecutionInput.newExecutionInput() .root(root) .query(query) - .context([protectSecrets: false]) + .graphQLContext([protectSecrets: false]) .build() er = graphQL.execute(executionInput) @@ -608,7 +631,7 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { def namedWiring = new SchemaDirectiveWiring() { @Override GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment environment) { - GraphQLDirective directive = environment.getDirective() + GraphQLAppliedDirective directive = environment.getAppliedDirective() DataFetcher existingFetcher = environment.getFieldDataFetcher() DataFetcher newDF = new DataFetcher() { @@ -672,7 +695,7 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { @Override GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment env) { generalCount++ - def directiveNames = env.getDirectives().values().collect { d -> d.getName() }.sort() + def directiveNames = env.getAppliedDirectives().values().collect { d -> d.getName() }.sort() assert directiveNames == ["factoryDirective", "generalDirective", "namedDirective1", "namedDirective2"] return env.getFieldDefinition() } @@ -682,7 +705,7 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { @Override GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment env) { factoryCount++ - def directiveNames = env.getDirectives().values().collect { d -> d.getName() }.sort() + def directiveNames = env.getAppliedDirectives().values().collect { d -> d.getName() }.sort() assert directiveNames == ["factoryDirective", "generalDirective", "namedDirective1", "namedDirective2"] return env.getFieldDefinition() } @@ -704,10 +727,10 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { @Override GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment env) { namedCount++ - def directiveNames = env.getDirectives().values().collect { d -> d.getName() }.sort() + def directiveNames = env.getAppliedDirectives().values().collect { d -> d.getName() }.sort() assert directiveNames == ["factoryDirective", "generalDirective", "namedDirective1", "namedDirective2"] - assert env.getDirective("factoryDirective") != null + assert env.getAppliedDirective("factoryDirective") != null assert env.containsDirective("factoryDirective") return env.getFieldDefinition() } @@ -764,10 +787,12 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { argCount++ def arg = env.getElement() if (arg.getName() == "arg1") { - assert env.getDirectives().keySet().sort() == ["argDirective1", "argDirective2"] + assert env.getAppliedDirectives().keySet().sort() == ["argDirective1", "argDirective2"] + assert env.getAppliedDirectives().keySet().sort() == ["argDirective1", "argDirective2"] } if (arg.getName() == "arg2") { - assert env.getDirectives().keySet().sort() == ["argDirective3"] + assert env.getAppliedDirectives().keySet().sort() == ["argDirective3"] + assert env.getAppliedDirectives().keySet().sort() == ["argDirective3"] } def fieldDef = env.getFieldDefinition() assert fieldDef != null @@ -780,7 +805,7 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment env) { fieldCount++ - assert env.getDirectives().keySet().sort() == ["fieldDirective"] + assert env.getAppliedDirectives().keySet().sort() == ["fieldDirective"] def fieldDef = env.getFieldDefinition() assert fieldDef.getDirectives().collect({ d -> d.getName() }) == ["fieldDirective"] @@ -794,6 +819,15 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { assert argDirectiveNames == ["argDirective1", "argDirective2", "argDirective3"] + def argAppliedDirectiveNames = fieldDef.getArguments() + .stream() + .map({ a -> a.getAppliedDirectives() }) + .flatMap({ dl -> dl.stream() }) + .collect { d -> d.getName() } + .sort() + + assert argAppliedDirectiveNames == ["argDirective1", "argDirective2", "argDirective3"] + return env.getElement() } } @@ -883,4 +917,80 @@ class SchemaGeneratorDirectiveHelperTest extends Specification { er.data["field2"] == "data+field2" } + def "can change elements and rebuild the schema"() { + + def sdl = ''' + type Query { + field(arg : Int) : String + } + + ''' + + SchemaDirectiveWiring generalWiring = new SchemaDirectiveWiring() { + + @Override + GraphQLArgument onArgument(SchemaDirectiveWiringEnvironment env) { + def argument = env.getElement() + return argument.transform({ builder -> builder.name(reverse(argument.getName())) }) + } + + @Override + GraphQLObjectType onObject(SchemaDirectiveWiringEnvironment env) { + def obj = env.getElement() + return obj.transform({ builder -> builder.name(reverse(obj.getName())) }) + } + + @Override + GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment env) { + def field = env.getElement() + return field.transform({ builder -> builder.name(reverse(field.getName())) }) + } + } + + def wiringFactory = new WiringFactory() { + @Override + boolean providesSchemaDirectiveWiring(SchemaDirectiveWiringEnvironment environment) { + true + } + + @Override + SchemaDirectiveWiring getSchemaDirectiveWiring(SchemaDirectiveWiringEnvironment environment) { + return generalWiring + } + } + + when: "Its via a hard coded wiring" + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .directiveWiring(generalWiring) + .build() + def graphqlSchema = schema(sdl, runtimeWiring) + + then: + assert directiveWiringAsserts(graphqlSchema) + + when: "It via a wiring factory" + runtimeWiring = RuntimeWiring.newRuntimeWiring() + .wiringFactory(wiringFactory) + .build() + graphqlSchema = schema(sdl, runtimeWiring) + + then: + assert directiveWiringAsserts(graphqlSchema) + } + + static def directiveWiringAsserts(schema) { + def queryType = schema.getObjectType("yreuQ") + assert queryType != null + + def fld = queryType.getFieldDefinition("dleif") + assert fld != null + + def arg = fld.getArgument("gra") + assert arg != null + true + } + + static def reverse(String s) { + new StringBuilder(s).reverse().toString() + } } diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy index 64d2e0e8da..9eeed6c018 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy @@ -1,10 +1,14 @@ package graphql.schema.idl - import graphql.TestUtil import graphql.introspection.Introspection -import graphql.schema.GraphQLArgument -import graphql.schema.GraphQLDirective +import graphql.language.Node +import graphql.schema.DataFetcher +import graphql.schema.DataFetcherFactory +import graphql.schema.DataFetcherFactoryEnvironment +import graphql.schema.DataFetchingEnvironment +import graphql.schema.GraphQLAppliedDirective +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLDirectiveContainer import graphql.schema.GraphQLEnumType import graphql.schema.GraphQLFieldDefinition @@ -12,6 +16,7 @@ import graphql.schema.GraphQLFieldsContainer import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLInterfaceType import graphql.schema.GraphQLList +import graphql.schema.GraphQLNamedType import graphql.schema.GraphQLNonNull import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType @@ -20,9 +25,9 @@ import graphql.schema.GraphQLType import graphql.schema.GraphQLTypeUtil import graphql.schema.GraphQLUnionType import graphql.schema.GraphqlTypeComparatorRegistry -import graphql.schema.PropertyDataFetcher import graphql.schema.idl.errors.NotAnInputTypeError import graphql.schema.idl.errors.NotAnOutputTypeError +import graphql.schema.idl.errors.SchemaProblem import graphql.schema.visibility.GraphqlFieldVisibility import spock.lang.Specification @@ -32,15 +37,19 @@ import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLFloat import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString +import static graphql.language.AstPrinter.printAst +import static graphql.schema.GraphQLCodeRegistry.newCodeRegistry +import static graphql.schema.idl.SchemaGenerator.Options.defaultOptions +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring class SchemaGeneratorTest extends Specification { - def newRuntimeWiring() { + static def newRuntimeWiring() { return RuntimeWiring.newRuntimeWiring() .comparatorRegistry(GraphqlTypeComparatorRegistry.BY_NAME_REGISTRY) } - GraphQLSchema schema(String sdl) { + static GraphQLSchema schema(String sdl) { def runtimeWiringAsIs = newRuntimeWiring() .comparatorRegistry(GraphqlTypeComparatorRegistry.BY_NAME_REGISTRY) .wiringFactory(TestUtil.mockWiringFactory) @@ -48,21 +57,13 @@ class SchemaGeneratorTest extends Specification { return schema(sdl, runtimeWiringAsIs) } - GraphQLSchema schema(String sdl, RuntimeWiring runtimeWiring) { - return TestUtil.schema(sdl, runtimeWiring) + static GraphQLSchema schema(String sdl, RuntimeWiring runtimeWiring) { + SchemaGenerator.Options options = defaultOptions().captureAstDefinitions(true) + return TestUtil.schema(options, sdl, runtimeWiring) } - GraphQLType unwrap1Layer(GraphQLType type) { - if (type instanceof GraphQLNonNull) { - type = (type as GraphQLNonNull).wrappedType - } else if (type instanceof GraphQLList) { - type = (type as GraphQLList).wrappedType - } - type - } - - GraphQLType unwrap(GraphQLType type) { + static GraphQLType unwrap(GraphQLType type) { while (true) { if (type instanceof GraphQLNonNull) { type = (type as GraphQLNonNull).wrappedType @@ -75,7 +76,7 @@ class SchemaGeneratorTest extends Specification { type } - void commonSchemaAsserts(GraphQLSchema schema) { + static void commonSchemaAsserts(GraphQLSchema schema) { assert schema.getQueryType().name == "Query" assert schema.getMutationType().name == "Mutation" @@ -529,11 +530,9 @@ class SchemaGeneratorTest extends Specification { extraField1 : String } extend type BaseType implements Interface2 { - extraField1 : String extraField2 : Int } extend type BaseType implements Interface3 { - extraField1 : String extraField3 : ID } extend type BaseType { @@ -542,13 +541,6 @@ class SchemaGeneratorTest extends Specification { extend type BaseType { extraField5 : Boolean! } - # - # if we repeat a definition, that's ok as long as its the same types as before - # they will be de-duped since the effect is the same - # - extend type BaseType implements Interface1 { - extraField1 : String - } schema { query: BaseType @@ -609,7 +601,6 @@ class SchemaGeneratorTest extends Specification { name: String! } extend type Human implements Character { - name: String! friends: [Character] } extend type Human { @@ -894,6 +885,33 @@ class SchemaGeneratorTest extends Specification { enumType.getValue("C").value == ExampleEnum.C } + def " MapEnum values provider"() { + given: + def spec = ''' + enum Enum{ + A + B + C + } + + type Query{ + field: Enum + } + ''' + + when: + def mapEnumProvider = new MapEnumValuesProvider([A: 11, B: 12, C: 13]) + def enumTypeWiring = newTypeWiring("Enum").enumValues(mapEnumProvider).build() + def wiring = RuntimeWiring.newRuntimeWiring().type(enumTypeWiring).build() + def schema = TestUtil.schema(spec, wiring) + GraphQLEnumType graphQLEnumType = schema.getType("Enum") as GraphQLEnumType + + then: + graphQLEnumType.getValue("A").value == 11 + graphQLEnumType.getValue("B").value == 12 + graphQLEnumType.getValue("C").value == 13 + } + def "enum with no values provider: value is the name"() { given: def spec = """ @@ -954,6 +972,57 @@ class SchemaGeneratorTest extends Specification { !queryType.getFieldDefinition("baz").isDeprecated() } + def "specifiedBy directive is supported"() { + given: + def spec = """ + type Query { + foo: MyScalar + } + "My scalar has a specifiedBy url" + scalar MyScalar @specifiedBy(url: "myUrl.example") + """ + when: + def schema = schema(spec) + GraphQLScalarType scalar = schema.getType("MyScalar") as GraphQLScalarType + + then: + scalar.getSpecifiedByUrl() == "myUrl.example" + scalar.getDescription() == "My scalar has a specifiedBy url" + } + + def "specifiedBy requires an url "() { + given: + def spec = """ + type Query { + foo: MyScalar + } + scalar MyScalar @specifiedBy + """ + when: + def registry = new SchemaParser().parse(spec) + new SchemaGenerator().makeExecutableSchema(defaultOptions(), registry, TestUtil.mockRuntimeWiring) + + then: + def schemaProblem = thrown(SchemaProblem) + schemaProblem.message.contains("failed to provide a value for the non null argument 'url' on directive 'specifiedBy'") + } + + def "specifiedBy can be added via extension"() { + given: + def spec = """ + type Query { + foo: MyScalar + } + scalar MyScalar + extend scalar MyScalar @specifiedBy(url: "myUrl.example") + """ + when: + def schema = schema(spec) + GraphQLScalarType scalar = schema.getType("MyScalar") as GraphQLScalarType + + then: + scalar.getSpecifiedByUrl() == "myUrl.example" + } def "schema is optional if there is a type called Query"() { @@ -1059,6 +1128,103 @@ class SchemaGeneratorTest extends Specification { schema.getType("UnReferencedD") instanceof GraphQLUnionType } + def "nested additional types should be part of the additional types, not the schema types"() { + def spec = """ + type Query { + fieldA : ReferencedA + } + + type ReferencedA { + field : String + } + + type UnReferencedA { + field : UnReferencedNestedE + } + + input UnReferencedB { + field : UnReferencedNestedF + } + + type UnReferencedNestedE { + field: String + field2: UnReferencedScalarB + } + + input UnReferencedNestedF { + field: String + } + + interface UnReferencedC { + field : UnReferencedNestedE + } + + union UnReferencedD = ReferencedA + + scalar UnReferencedScalarA + + scalar UnReferencedScalarB + """ + + def schema = schema(spec) + + expect: "all types to be registered" + schema.getType("ReferencedA") instanceof GraphQLObjectType + schema.getType("UnReferencedA") instanceof GraphQLObjectType + schema.getType("UnReferencedB") instanceof GraphQLInputObjectType + schema.getType("UnReferencedC") instanceof GraphQLInterfaceType + schema.getType("UnReferencedD") instanceof GraphQLUnionType + schema.getType("UnReferencedNestedE") instanceof GraphQLObjectType + schema.getType("UnReferencedNestedF") instanceof GraphQLInputObjectType + + + and: "unreferenced types should all be additional types" + + def namedTypes = schema.getAdditionalTypes() as Set + namedTypes.name.toSet() == ["UnReferencedA", + "UnReferencedB", + "UnReferencedC", + "UnReferencedD", + "UnReferencedNestedE", + "UnReferencedNestedF", + "UnReferencedScalarA", + "UnReferencedScalarB"].toSet() + } + + + def "nested additional types recursive"() { + def spec = """ + type Query { + fieldA : ReferencedA + } + + type ReferencedA { + field : String + } + + type UnReferencedA { + field : UnReferencedNestedB + } + + type UnReferencedNestedB { + field: UnReferencedNestedB + } + """ + + def schema = schema(spec) + + expect: "all types to be registered" + schema.getType("ReferencedA") instanceof GraphQLObjectType + schema.getType("UnReferencedA") instanceof GraphQLObjectType + schema.getType("UnReferencedNestedB") instanceof GraphQLObjectType + + and: "unreferenced types should all be additional types" + + def namedTypes = schema.getAdditionalTypes() as Set + namedTypes.name.toSet() == ["UnReferencedA", "UnReferencedNestedB"].toSet() + } + + def "scalar default value is parsed"() { def spec = """ type Query { @@ -1069,13 +1235,12 @@ class SchemaGeneratorTest extends Specification { def schema = schema(spec) schema.getType("Query") instanceof GraphQLObjectType GraphQLObjectType query = schema.getType("Query") as GraphQLObjectType - Object arg1 = query.getFieldDefinition("field").getArgument("arg1").defaultValue - Object arg2 = query.getFieldDefinition("field").getArgument("arg2").defaultValue + Object arg1 = printAst(query.getFieldDefinition("field").getArgument("arg1").argumentDefaultValue.value as Node) + Object arg2 = printAst(query.getFieldDefinition("field").getArgument("arg2").argumentDefaultValue.value as Node) expect: - arg1 instanceof Integer - arg2 instanceof List - (arg2 as List).get(0) instanceof Integer + arg1 == "10" + arg2 == "[20]" } def "null default arguments are ok"() { @@ -1088,7 +1253,7 @@ class SchemaGeneratorTest extends Specification { def schema = schema(spec) schema.getType("Query") instanceof GraphQLObjectType GraphQLObjectType query = schema.getType("Query") as GraphQLObjectType - Object argNoDefault = query.getFieldDefinition("field").getArgument("argNoDefault").defaultValue + Object argNoDefault = query.getFieldDefinition("field").getArgument("argNoDefault").argumentDefaultValue.value expect: argNoDefault == null @@ -1111,8 +1276,6 @@ class SchemaGeneratorTest extends Specification { field2 : String @fieldDirective2 } - extend type Query @directive2 - extend type Query @directive3 extend type Query @directiveWithArgs(strArg : "String", intArg : 1, boolArg : true, floatArg : 1.1, nullArg : null) @@ -1126,8 +1289,11 @@ class SchemaGeneratorTest extends Specification { expect: type.getDirectives().size() == 4 type.getDirectives()[0].name == "directive1" + type.getDirectives()[0].getDefinition() != null type.getDirectives()[1].name == "directive2" + type.getDirectives()[1].getDefinition() != null type.getDirectives()[2].name == "directive3" + type.getDirectives()[2].getDefinition() != null // test that fields can have directives as well @@ -1141,23 +1307,22 @@ class SchemaGeneratorTest extends Specification { def fieldDirective2 = field2.getDirectives()[0] fieldDirective2.getName() == "fieldDirective2" - - def directive = type.getDirectives()[3] as GraphQLDirective + def directive = type.getAppliedDirectives()[3] as GraphQLAppliedDirective directive.name == "directiveWithArgs" directive.arguments.size() == 5 directive.arguments[argIndex].name == argName directive.arguments[argIndex].type == argType - directive.arguments[argIndex].value == argValue + printAst(directive.arguments[argIndex].argumentValue.value as Node) == argValue // arguments are sorted where: argIndex | argName | argType | argValue - 0 | "boolArg" | GraphQLBoolean | true - 1 | "floatArg" | GraphQLFloat | 1.1 - 2 | "intArg" | GraphQLInt | 1 - 3 | "nullArg" | GraphQLString | null - 4 | "strArg" | GraphQLString | "String" + 0 | "boolArg" | GraphQLBoolean | "true" + 1 | "floatArg" | GraphQLFloat | "1.1" + 2 | "intArg" | GraphQLInt | "1" + 3 | "nullArg" | GraphQLString | "null" + 4 | "strArg" | GraphQLString | "\"String\"" } @@ -1197,7 +1362,7 @@ class SchemaGeneratorTest extends Specification { expect: - container.getDirective(directiveName) != null + container.getAppliedDirective(directiveName) != null if (container instanceof GraphQLEnumType) { def evd = ((GraphQLEnumType) container).getValue("X").getDirective("EnumValueDirective") @@ -1230,11 +1395,10 @@ class SchemaGeneratorTest extends Specification { def schema = schema(spec) schema.getType("Query") instanceof GraphQLObjectType GraphQLObjectType query = schema.getType("Query") as GraphQLObjectType - Object arg = query.getFieldDefinition("field").getArgument("arg").defaultValue as Map + String arg = printAst(query.getFieldDefinition("field").getArgument("arg").argumentDefaultValue.value as Node) expect: - arg["str"] instanceof String - arg["num"] instanceof Integer + arg == '{str : "string", num : 100}' } def "field visibility is used"() { @@ -1466,13 +1630,14 @@ class SchemaGeneratorTest extends Specification { argInt.getDirective("thirdDirective") != null def intDirective = argInt.getDirective("intDirective") - intDirective.name == "intDirective" - intDirective.arguments.size() == 1 - def directiveArg = intDirective.getArgument("inception") + def intAppliedDirective = argInt.getAppliedDirective("intDirective") + intAppliedDirective.name == "intDirective" + intAppliedDirective.arguments.size() == 1 + def directiveArg = intAppliedDirective.getArgument("inception") directiveArg.name == "inception" directiveArg.type == GraphQLBoolean - directiveArg.value == true - directiveArg.defaultValue == null + printAst(directiveArg.argumentValue.value as Node) == "true" + intDirective.getArgument("inception").argumentDefaultValue.value == null } def "directives definitions can be made"() { @@ -1489,7 +1654,7 @@ class SchemaGeneratorTest extends Specification { """ when: - def options = SchemaGenerator.Options.defaultOptions() + def options = defaultOptions() def registry = new SchemaParser().parse(spec) def schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) @@ -1510,7 +1675,7 @@ class SchemaGeneratorTest extends Specification { Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION, ) directive.getArgument("knownArg").type == GraphQLString - directive.getArgument("knownArg").defaultValue == "defaultValue" + printAst(directive.getArgument("knownArg").argumentDefaultValue.value as Node) == '"defaultValue"' } def "directive definitions don't have to provide default values"() { @@ -1526,21 +1691,23 @@ class SchemaGeneratorTest extends Specification { """ when: - def options = SchemaGenerator.Options.defaultOptions() + def options = defaultOptions() def registry = new SchemaParser().parse(spec) def schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) then: def directiveTest1 = schema.getDirective("test1") - directiveTest1.getArgument("include").type == GraphQLNonNull.nonNull(GraphQLBoolean) - directiveTest1.getArgument("include").value == null + GraphQLNonNull.nonNull(GraphQLBoolean).isEqualTo(directiveTest1.getArgument("include").type) + directiveTest1.getArgument("include").argumentDefaultValue.value == null + def appliedDirective1 = schema.getObjectType("Query").getFieldDefinition("f1").getAppliedDirective("test1") + printAst(appliedDirective1.getArgument("include").argumentValue.value as Node) == "false" def directiveTest2 = schema.getDirective("test2") - directiveTest2.getArgument("include").type == GraphQLNonNull.nonNull(GraphQLBoolean) - directiveTest2.getArgument("include").value == true - directiveTest2.getArgument("include").defaultValue == true - + GraphQLNonNull.nonNull(GraphQLBoolean).isEqualTo(directiveTest2.getArgument("include").type) + printAst(directiveTest2.getArgument("include").argumentDefaultValue.value as Node) == "true" + def appliedDirective2 = schema.getObjectType("Query").getFieldDefinition("f2").getAppliedDirective("test2") + printAst(appliedDirective2.getArgument("include").argumentValue.value as Node) == "true" } def "missing directive arguments are transferred as are default values"() { @@ -1558,23 +1725,24 @@ class SchemaGeneratorTest extends Specification { """ when: - def options = SchemaGenerator.Options.defaultOptions() + def options = defaultOptions() def registry = new SchemaParser().parse(spec) def schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) then: def directive = schema.getObjectType("Query").getFieldDefinition("f").getDirective("testDirective") directive.getArgument("knownArg1").type == GraphQLString - directive.getArgument("knownArg1").value == "overrideVal1" - directive.getArgument("knownArg1").defaultValue == "defaultValue1" + printAst(directive.getArgument("knownArg1").argumentDefaultValue.value as Node) == '"defaultValue1"' + def appliedDirective = schema.getObjectType("Query").getFieldDefinition("f").getAppliedDirective("testDirective") + printAst(appliedDirective.getArgument("knownArg1").argumentValue.value as Node) == '"overrideVal1"' directive.getArgument("knownArg2").type == GraphQLInt - directive.getArgument("knownArg2").value == 666 - directive.getArgument("knownArg2").defaultValue == 666 + printAst(directive.getArgument("knownArg2").argumentDefaultValue.value as Node) == "666" + printAst(appliedDirective.getArgument("knownArg2").argumentValue.value as Node) == "666" directive.getArgument("knownArg3").type == GraphQLString - directive.getArgument("knownArg3").value == null - directive.getArgument("knownArg3").defaultValue == null + directive.getArgument("knownArg3").argumentDefaultValue.value == null + appliedDirective.getArgument("knownArg3").argumentValue.value == null } def "deprecated directive is implicit"() { @@ -1586,7 +1754,7 @@ class SchemaGeneratorTest extends Specification { } """ - def options = SchemaGenerator.Options.defaultOptions() + def options = defaultOptions() when: def registry = new SchemaParser().parse(spec) @@ -1597,60 +1765,31 @@ class SchemaGeneratorTest extends Specification { f1.getDeprecationReason() == "No longer supported" // spec default text def directive = f1.getDirective("deprecated") - directive.name == "deprecated" - directive.getArgument("reason").type == GraphQLString - directive.getArgument("reason").value == "No longer supported" - directive.getArgument("reason").defaultValue == "No longer supported" + printAst(directive.getArgument("reason").argumentDefaultValue.value as Node) == '"No longer supported"' directive.validLocations().collect { it.name() } == [Introspection.DirectiveLocation.FIELD_DEFINITION.name()] + def appliedDirective = f1.getAppliedDirective("deprecated") + appliedDirective.name == "deprecated" + appliedDirective.getArgument("reason").type instanceof GraphQLNonNull + (appliedDirective.getArgument("reason").type as GraphQLNonNull).wrappedType == GraphQLString + printAst(appliedDirective.getArgument("reason").argumentValue.value as Node) == '"No longer supported"' + when: def f2 = schema.getObjectType("Query").getFieldDefinition("f2") then: f2.getDeprecationReason() == "Just because" + def appliedDirective2 = f2.getAppliedDirective("deprecated") + appliedDirective2.name == "deprecated" + appliedDirective2.getArgument("reason").type instanceof GraphQLNonNull + (appliedDirective2.getArgument("reason").type as GraphQLNonNull).wrappedType == GraphQLString + printAst(appliedDirective2.getArgument("reason").argumentValue.value as Node) == '"Just because"' def directive2 = f2.getDirective("deprecated") - directive2.name == "deprecated" - directive2.getArgument("reason").type == GraphQLString - directive2.getArgument("reason").value == "Just because" - directive2.getArgument("reason").defaultValue == "No longer supported" + printAst(directive2.getArgument("reason").argumentDefaultValue.value as Node) == '"No longer supported"' directive2.validLocations().collect { it.name() } == [Introspection.DirectiveLocation.FIELD_DEFINITION.name()] - } - def "@fetch directive is respected"() { - def spec = """ - - directive @fetch(from : String!) on FIELD_DEFINITION - - type Query { - name : String, - homePlanet: String @fetch(from : "planetOfBirth") - } - """ - - def wiring = RuntimeWiring.newRuntimeWiring().build() - def schema = schema(spec, wiring) - - GraphQLObjectType type = schema.getType("Query") as GraphQLObjectType - - expect: - def fetcher = schema.getCodeRegistry().getDataFetcher(type, type.getFieldDefinition("homePlanet")) - fetcher instanceof PropertyDataFetcher - - PropertyDataFetcher propertyDataFetcher = fetcher as PropertyDataFetcher - propertyDataFetcher.getPropertyName() == "planetOfBirth" - // - // no directive - plain name - // - def fetcher2 = schema.getCodeRegistry().getDataFetcher(type, type.getFieldDefinition("name")) - fetcher2 instanceof PropertyDataFetcher - - PropertyDataFetcher propertyDataFetcher2 = fetcher2 as PropertyDataFetcher - propertyDataFetcher2.getPropertyName() == "name" - } - - def "does not break for circular references to interfaces"() { def spec = """ interface MyInterface { @@ -1680,33 +1819,7 @@ class SchemaGeneratorTest extends Specification { assert schema != null } - def "transformers get called once the schema is built"() { - def spec = """ - type Query { - hello: String - } - """ - - def types = new SchemaParser().parse(spec) - - def extraDirective = (GraphQLDirective.newDirective()).name("extra") - .argument(GraphQLArgument.newArgument().name("value").type(GraphQLString)).build() - def transformer = new SchemaGeneratorPostProcessing() { - @Override - GraphQLSchema process(GraphQLSchema originalSchema) { - originalSchema.transform({ builder -> builder.additionalDirective(extraDirective) }) - } - } - def wiring = RuntimeWiring.newRuntimeWiring() - .transformer(transformer) - .build() - GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(types, wiring) - expect: - assert schema != null - schema.getDirective("extra") != null - } - - def "1509- enum object string default values are handled"() { + def "enum object default values are handled"() { def spec = ''' enum EnumValue { ONE, TWO, THREE @@ -1718,7 +1831,6 @@ class SchemaGeneratorTest extends Specification { type Query { fieldWithEnum(arg : InputType = { value : ONE } ) : String - fieldWithString(arg : InputType = { value : "ONE" } ) : String } ''' def types = new SchemaParser().parse(spec) @@ -1728,11 +1840,7 @@ class SchemaGeneratorTest extends Specification { def queryType = schema.getObjectType("Query") def fieldWithEnum = queryType.getFieldDefinition("fieldWithEnum") def arg = fieldWithEnum.getArgument("arg") - arg.defaultValue == [value: "ONE"] - - def fieldWithString = queryType.getFieldDefinition("fieldWithString") - def arg2 = fieldWithString.getArgument("arg") - arg2.defaultValue == [value: "ONE"] + printAst(arg.argumentDefaultValue.value as Node) == '{value : ONE}' } def "extensions are captured into runtime objects"() { @@ -1839,7 +1947,7 @@ class SchemaGeneratorTest extends Specification { .wiringFactory(wiringFactory) .build() - def options = SchemaGenerator.Options.defaultOptions() + def options = defaultOptions() def types = new SchemaParser().parse(sdl) GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(options, types, runtimeWiring) @@ -1897,16 +2005,16 @@ class SchemaGeneratorTest extends Specification { schema.getMutationType().name == 'Mutation' when: - def directives = schema.getSchemaDirectives() + def directives = schema.getSchemaDirectives() // Retain for test coverage then: directives.size() == 3 - schema.getSchemaDirective("sd1") != null - schema.getSchemaDirective("sd2") != null - schema.getSchemaDirective("sd3") != null + schema.getSchemaDirective("sd1") != null // Retain for test coverage + schema.getSchemaDirective("sd2") != null // Retain for test coverage + schema.getSchemaDirective("sd3") != null // Retain for test coverage when: - def directivesMap = schema.getSchemaDirectiveByName() + def directivesMap = schema.getSchemaDirectiveByName() // Retain for test coverage then: directives.size() == 3 directivesMap["sd1"] != null @@ -1917,23 +2025,28 @@ class SchemaGeneratorTest extends Specification { directives = schema.getDirectives() then: - directives.size() == 6 // built in ones : include / skip and deprecated + directives.size() == 10 // built in ones : include / skip and deprecated def directiveNames = directives.collect { it.name } directiveNames.contains("include") directiveNames.contains("skip") + directiveNames.contains("defer") directiveNames.contains("deprecated") + directiveNames.contains("specifiedBy") + directiveNames.contains("oneOf") directiveNames.contains("sd1") directiveNames.contains("sd2") directiveNames.contains("sd3") when: - directivesMap = schema.getDirectiveByName() + directivesMap = schema.getDirectivesByName() then: - directivesMap.size() == 6 // built in ones + directivesMap.size() == 10 // built in ones directivesMap.containsKey("include") directivesMap.containsKey("skip") + directivesMap.containsKey("defer") directivesMap.containsKey("deprecated") + directivesMap.containsKey("oneOf") directivesMap.containsKey("sd1") directivesMap.containsKey("sd2") directivesMap.containsKey("sd3") @@ -1996,7 +2109,7 @@ class SchemaGeneratorTest extends Specification { then: directive != null GraphQLTypeUtil.simplePrint(directive.getArgument("enumArguments").getType()) == "[SomeEnum!]" - directive.getArgument("enumArguments").getDefaultValue() == [] + printAst(directive.getArgument("enumArguments").getArgumentDefaultValue().value as Node) == "[]" } def "scalar used as output is not in additional types"() { @@ -2043,4 +2156,389 @@ class SchemaGeneratorTest extends Specification { schema.getType("UnusedScalar") != null schema.getAdditionalTypes().find { it.name == "UnusedScalar" } != null } + + def "interface can be implemented with additional optional arguments"() { + given: + def spec = """ + interface Vehicle { + name: String! + } + + type Car implements Vehicle { + name(charLimit: Int = 10): String! + } + type Query { + car: Car + } + """ + when: + def schema = schema(spec) + then: + (schema.getType("Car") as GraphQLObjectType).getFieldDefinition("name").getArgument("charLimit") != null + (schema.getType("Car") as GraphQLObjectType).getInterfaces().size() == 1 + + (schema.getType("Vehicle") as GraphQLInterfaceType).getFieldDefinition("name").getArguments().size() == 0 + + } + + def "extended enums work as expected for arg values"() { + + given: + def spec = """ + enum AuthRoles { + USER + } + + extend enum AuthRoles { + AUTHENTICATED + } + + directive @auth(if: AuthRoles) on FIELD_DEFINITION + + type Query { + danger: String @auth(if: AUTHENTICATED) + } + """ + when: + def schema = schema(spec) + then: + def enumType = schema.getType("AuthRoles") as GraphQLEnumType + def listOfEnumValues = enumType.getValues().collect({ it.getValue() }) + listOfEnumValues.sort() == ["AUTHENTICATED", "USER"] + } + + def "extended input objects work as expected for arg values"() { + + given: + def spec = """ + input ArgInput { + fieldA : String + } + + extend input ArgInput { + fieldB : String + } + + directive @auth(if: ArgInput) on FIELD_DEFINITION + + type Query { + danger: String @auth(if: { fieldB : "B"} ) + } + """ + when: + def schema = schema(spec) + then: + def inputType = schema.getType("ArgInput") as GraphQLInputObjectType + def listOfEnumValues = inputType.getFieldDefinitions().collect({ it.getName() }) + listOfEnumValues.sort() == ["fieldA", "fieldB"] + } + + def "shows that issue 2238 and 2290 - recursive input types on directives - has been fixed"() { + def sdl1 = ''' + directive @test(arg: Recursive) on OBJECT + + input Recursive { + deeper: Recursive + name: String + } + type Test @test(arg: { deeper: {name: "test"}}){ + field: String + } + type Query { + test : Test + } + ''' + when: + GraphQLSchema schema = TestUtil.schema(sdl1) + then: + schema != null + + def sdl2 = ''' + input MyInput { + a: String + b: MyInput + } + directive @myDirective(x: MyInput) on FIELD_DEFINITION + type Query { + f: String @myDirective(x: {b: {a:"yada"}}) + } + ''' + + when: + schema = TestUtil.schema(sdl2) + then: + schema != null + } + + def "code registry default data fetcher is respected"() { + def sdl = ''' + type Query { + field : String + } + ''' + + DataFetcher df = { DataFetchingEnvironment env -> + env.getFieldDefinition().getName().reverse() + } + + DataFetcherFactory dff = new DataFetcherFactory() { + @Override + DataFetcher get(DataFetcherFactoryEnvironment environment) { + return df + } + + @Override + DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return df + } + } + + GraphQLCodeRegistry codeRegistry = newCodeRegistry() + .defaultDataFetcher(dff).build() + + def runtimeWiring = newRuntimeWiring().codeRegistry(codeRegistry).build() + + def graphQL = TestUtil.graphQL(sdl, runtimeWiring).build() + when: + def er = graphQL.execute('{ field }') + then: + er.errors.isEmpty() + er.data["field"] == "dleif" + + } + + def "custom scalars can be used in schema generation as directive args"() { + def sdl = ''' + directive @test(arg: MyType) on OBJECT + scalar MyType + type Test @test(arg: { some: "data" }){ + field: String + } + type Query { + field: Test + } + ''' + def runtimeWiring = RuntimeWiring.newRuntimeWiring().scalar(TestUtil.mockScalar("MyType")).build() + when: + def schema = TestUtil.schema(sdl, runtimeWiring) + then: + schema.getType("MyType") instanceof GraphQLScalarType + } + + def "1498 - order of arguments should not matter"() { + def sdl = ''' + input TimelineDimensionPredicate { + s : String + } + + input TimelineDimension { + d : String + } + + type TimelineEntriesGroup { + e : String + } + + interface Timeline { + id: ID! + entryGroups(groupBy: [TimelineDimension!]!, filter: TimelineDimensionPredicate): [TimelineEntriesGroup!]! + } + + type ActualSalesTimeline implements Timeline { + id: ID! + entryGroups(groupBy: [TimelineDimension!]!, filter: TimelineDimensionPredicate): [TimelineEntriesGroup!]! + } + + type Query { + salesTimeLine : Timeline + } + ''' + + when: + def schema = TestUtil.schema(sdl) + then: + assert1498Shape(schema) + + when: "The arg order has been rearranged" + sdl = ''' + input TimelineDimensionPredicate { + s : String + } + + input TimelineDimension { + d : String + } + + type TimelineEntriesGroup { + e : String + } + + interface Timeline { + id: ID! + entryGroups(filter: TimelineDimensionPredicate, groupBy: [TimelineDimension!]!): [TimelineEntriesGroup!]! + } + + type ActualSalesTimeline implements Timeline { + id: ID! + entryGroups(groupBy: [TimelineDimension!]!, filter: TimelineDimensionPredicate): [TimelineEntriesGroup!]! + } + + type Query { + salesTimeLine : Timeline + } + ''' + + schema = TestUtil.schema(sdl) + then: + assert1498Shape(schema) + + } + + static boolean assert1498Shape(GraphQLSchema schema) { + def actualSalesTL = schema.getObjectType("ActualSalesTimeline") + def entryGroupsField = actualSalesTL.getField("entryGroups") + def groupByArg = entryGroupsField.getArgument("groupBy") + def filterArg = entryGroupsField.getArgument("filter") + + GraphQLInputObjectType groupArgType = GraphQLTypeUtil.unwrapAllAs(groupByArg.getType()) + assert groupArgType.name == "TimelineDimension" + + GraphQLInputObjectType filterArgType = GraphQLTypeUtil.unwrapAllAs(filterArg.getType()) + assert filterArgType.name == "TimelineDimensionPredicate" + true + } + + + def "comments as descriptions disabled"() { + def sdl = ''' + type Query { + # Comment + test : String + "Description" + test2: String + } + ''' + when: + def registry = new SchemaParser().parse(sdl) + def options = defaultOptions().useCommentsAsDescriptions(false) + def schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) + + then: + schema.getQueryType().getFieldDefinition("test").getDescription() == null + schema.getQueryType().getFieldDefinition("test2").getDescription() == "Description" + } + + def "ast definition capture can be disabled"() { + def sdl = ''' + type Query { + test : String + } + + extend type Query { + test2 : Int + } + ''' + when: + def registry = new SchemaParser().parse(sdl) + def options = defaultOptions().captureAstDefinitions(false) + def schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) + + then: + schema.getQueryType().getDefinition() == null + schema.getQueryType().getExtensionDefinitions() == [] + schema.getQueryType().getFieldDefinition("test").getDefinition() == null + + when: + registry = new SchemaParser().parse(sdl) + options = defaultOptions() // default is to capture them + schema = new SchemaGenerator().makeExecutableSchema(options, registry, TestUtil.mockRuntimeWiring) + + then: + options.isCaptureAstDefinitions() + schema.getQueryType().getDefinition() != null + schema.getQueryType().getExtensionDefinitions().size() == 1 + schema.getQueryType().getFieldDefinition("test").getDefinition() != null + } + + + def "classCastException when interface extension is before base and has recursion"() { + given: + def spec = ''' + # order is important, moving extension below type Foo will fix the issue + extend type Foo implements HasFoo { + foo: Foo + } + + type Query { + test: ID + } + + interface HasFoo { + foo: Foo + } + + type Foo { + id: ID + } + ''' + + when: + TestUtil.schema(spec) + + then: + noExceptionThrown() + } + + def "skip and include should be added to the schema only if not already defined"() { + def sdl = ''' + "Directs the executor to skip this field or fragment when the `if`'argument is true." + directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + + "Directs the executor to include this field or fragment only when the `if` argument is true" + directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + + type Query { + hello: String + } + ''' + when: + def schema = TestUtil.schema(sdl) + then: + schema.getDirectives().findAll { it.name == "skip" }.size() == 1 + schema.getDirectives().findAll { it.name == "include" }.size() == 1 + + and: + def newSchema = GraphQLSchema.newSchema(schema).build() + then: + newSchema.getDirectives().findAll { it.name == "skip" }.size() == 1 + newSchema.getDirectives().findAll { it.name == "include" }.size() == 1 + } + + def "oneOf directive is available implicitly"() { + def sdl = ''' + type Query { + f(arg : OneOfInputType) : String + } + + input OneOfInputType @oneOf { + a : String + b : String + } + ''' + + when: + def schema = TestUtil.schema(sdl) + then: + schema.getDirectives().findAll { it.name == "oneOf" }.size() == 1 + + GraphQLInputObjectType inputObjectType = schema.getTypeAs("OneOfInputType") + inputObjectType.isOneOf() + inputObjectType.hasAppliedDirective("oneOf") + } } diff --git a/src/test/groovy/graphql/schema/idl/SchemaParserTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaParserTest.groovy index 76fd45413c..762cce719f 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaParserTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaParserTest.groovy @@ -1,13 +1,17 @@ package graphql.schema.idl +import graphql.TestUtil import graphql.language.EnumTypeDefinition import graphql.language.InterfaceTypeDefinition import graphql.language.ObjectTypeDefinition import graphql.language.ScalarTypeDefinition +import graphql.parser.ParserOptions import graphql.schema.idl.errors.SchemaProblem import spock.lang.Specification import spock.lang.Unroll +import static graphql.schema.idl.SchemaPrinter.Options.defaultOptions + /** * We don't want to retest the base GraphQL parser since it has its own testing * but we do want to test our aspects of it @@ -29,7 +33,7 @@ class SchemaParserTest extends Specification { is_bar : Boolean } - type Baz implements Foo, Goo { + type Baz implements Foo & Goo { is_foo : Boolean is_goo : Boolean is_baz : Boolean @@ -337,4 +341,153 @@ class SchemaParserTest extends Specification { schemaProblem.getErrors()[1].getMessage().contains("FragmentDefinition") schemaProblem.getErrors()[2].getMessage().contains("OperationDefinition") } + + def "large schema files can be parsed - there is no limit"() { + def sdl = "type Query {\n" + for (int i = 0; i < 30000; i++) { + sdl += " f" + i + " : ID\n" + sdl += " " * 10 // 10 whitespace as well + } + sdl += "}" + + when: + def typeDefinitionRegistry = new SchemaParser().parse(sdl) + then: + typeDefinitionRegistry != null + + + when: "options are used they will be respected" + def options = ParserOptions.defaultParserOptions.transform({ it.maxTokens(100) }) + new SchemaParser().parse(new StringReader(sdl), options) + then: + def e = thrown(SchemaProblem) + e.errors[0].message.contains("parsing has been cancelled") + + } + + def "correctly parses schema keyword block, include Query, does not include Mutation type"() { + // From RFC to clarify spec https://github.com/graphql/graphql-spec/pull/987 + when: + def schema = """schema { + query: Query +} + +type Mutation { + geneSequence: String! + name: String! +} + +type Query { + viruses: [Virus!] +} + +type Virus { + knownMutations: [Mutation!]! + name: String! +} +""" + def graphQL = TestUtil.graphQL(schema).build() + + then: + graphQL.graphQLSchema.definition.operationTypeDefinitions.size() == 1 + graphQL.graphQLSchema.definition.operationTypeDefinitions.first().name == "query" + graphQL.graphQLSchema.queryType != null + graphQL.graphQLSchema.mutationType == null + + when: + // Verify that the printed schema is the same as the original + def options = defaultOptions() + .includeIntrospectionTypes(false) + .includeScalarTypes(false) + .includeDirectiveDefinitions(false) + .includeSchemaDefinition(true) + + then: + def printedSchema = new SchemaPrinter(options).print(graphQL.graphQLSchema) + printedSchema == schema + } + + def "correctly parses schema keyword block, include Query, does not include Subscription type"() { + // From RFC to clarify spec https://github.com/graphql/graphql-spec/pull/987 + when: + def schema = """schema { + query: Query +} + +type Query { + viruses: [Virus!] +} + +type Subscription { + newspaper: String! +} + +type Virus { + name: String! +} +""" + def graphQL = TestUtil.graphQL(schema).build() + + then: + graphQL.graphQLSchema.definition.operationTypeDefinitions.size() == 1 + graphQL.graphQLSchema.definition.operationTypeDefinitions.first().name == "query" + graphQL.graphQLSchema.queryType != null + graphQL.graphQLSchema.subscriptionType == null + + when: + // Verify that the printed schema is the same as the original + def options = defaultOptions() + .includeIntrospectionTypes(false) + .includeScalarTypes(false) + .includeDirectiveDefinitions(false) + .includeSchemaDefinition(true) + + then: + def printedSchema = new SchemaPrinter(options).print(graphQL.graphQLSchema) + printedSchema == schema + } + + def "correctly parses schema that does not contain a schema definition block, includes Query and Mutation types"() { + when: + def schema = """type Mutation { + geneSequence: String! + name: String! +} + +type Query { + viruses: [Virus!] +} + +type Virus { + name: String! +} +""" + def graphQL = TestUtil.graphQL(schema).build() + + then: + graphQL.graphQLSchema.definition == null // No SchemaDefinition + graphQL.graphQLSchema.queryType != null + graphQL.graphQLSchema.mutationType != null + + when: + // Verify that the printed schema is the same as the original + def options = defaultOptions() + .includeIntrospectionTypes(false) + .includeScalarTypes(false) + .includeDirectiveDefinitions(false) + + then: + def printedSchema = new SchemaPrinter(options).print(graphQL.graphQLSchema) + printedSchema == schema + } + + def "testNumberFormatException"() { + when: + SchemaParser parser = new SchemaParser(); + parser.parse("{B(t:66E3333333320,t:#\n66666666660)},622»» »»»6666662}}6666660t:z6666") + + then: + thrown(SchemaProblem) + } + } diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 734da1c975..2870244328 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -1,40 +1,69 @@ package graphql.schema.idl import graphql.GraphQL -import graphql.Scalars import graphql.TestUtil import graphql.TypeResolutionEnvironment +import graphql.introspection.Introspection import graphql.introspection.IntrospectionQuery import graphql.introspection.IntrospectionResultToSchema +import graphql.language.Comment +import graphql.language.DirectiveDefinition +import graphql.language.EnumValueDefinition +import graphql.language.FieldDefinition +import graphql.language.IntValue +import graphql.language.ScalarTypeDefinition +import graphql.language.SchemaDefinition +import graphql.language.StringValue import graphql.schema.Coercing -import graphql.schema.GraphQLArgument +import graphql.schema.GraphQLAppliedDirective +import graphql.schema.GraphQLCodeRegistry +import graphql.schema.GraphQLDirective import graphql.schema.GraphQLEnumType +import graphql.schema.GraphQLEnumValueDefinition import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLInputType import graphql.schema.GraphQLInterfaceType +import graphql.schema.GraphQLNamedSchemaElement import graphql.schema.GraphQLObjectType -import graphql.schema.GraphQLOutputType import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLSchema +import graphql.schema.GraphQLSchemaElement import graphql.schema.GraphQLType import graphql.schema.GraphQLUnionType +import graphql.schema.GraphqlTypeComparatorRegistry +import graphql.schema.GraphqlTypeComparators import graphql.schema.TypeResolver import spock.lang.Specification +import java.util.function.Predicate import java.util.function.UnaryOperator +import java.util.stream.Collectors +import static graphql.Scalars.GraphQLID import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString import static graphql.TestUtil.mockScalar import static graphql.TestUtil.mockTypeRuntimeWiring +import static graphql.language.EnumTypeDefinition.newEnumTypeDefinition +import static graphql.language.InputObjectTypeDefinition.newInputObjectDefinition +import static graphql.language.InputValueDefinition.newInputValueDefinition +import static graphql.language.InterfaceTypeDefinition.newInterfaceTypeDefinition +import static graphql.language.ObjectTypeDefinition.newObjectTypeDefinition +import static graphql.language.UnionTypeDefinition.newUnionTypeDefinition import static graphql.schema.GraphQLArgument.newArgument +import static graphql.schema.GraphQLEnumType.newEnum import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLInputObjectField.newInputObjectField import static graphql.schema.GraphQLInterfaceType.newInterface import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLScalarType.newScalar +import static graphql.schema.GraphQLTypeReference.typeRef +import static graphql.schema.GraphQLUnionType.newUnionType import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring +import static graphql.schema.idl.SchemaPrinter.ExcludeGraphQLSpecifiedDirectivesPredicate import static graphql.schema.idl.SchemaPrinter.Options.defaultOptions class SchemaPrinterTest extends Specification { @@ -52,7 +81,7 @@ class SchemaPrinterTest extends Specification { } - GraphQLScalarType ASTEROID = new GraphQLScalarType("Asteroid", "desc", new Coercing() { + GraphQLScalarType ASTEROID = newScalar().name("Asteroid").description("desc").coercing(new Coercing() { @Override Object serialize(Object input) { throw new UnsupportedOperationException("Not implemented") @@ -68,6 +97,7 @@ class SchemaPrinterTest extends Specification { throw new UnsupportedOperationException("Not implemented") } }) + .build() def resolver = new TypeResolver() { @@ -77,24 +107,9 @@ class SchemaPrinterTest extends Specification { } } - static class MyGraphQLObjectType extends GraphQLObjectType { - - MyGraphQLObjectType(String name, String description, List fieldDefinitions) { - super(name, description, fieldDefinitions, new ArrayList()) - } - } - - static class MyTestGraphQLObjectType extends MyGraphQLObjectType { - - MyTestGraphQLObjectType(String name, String description, List fieldDefinitions) { - super(name, description, fieldDefinitions) - } - } - - def "typeString"() { - GraphQLType type1 = nonNull(list(nonNull(list(nonNull(Scalars.GraphQLInt))))) + GraphQLType type1 = nonNull(list(nonNull(list(nonNull(GraphQLInt))))) def typeStr1 = new SchemaPrinter().typeString(type1) @@ -103,9 +118,20 @@ class SchemaPrinterTest extends Specification { } def "argsString"() { - def argument1 = new GraphQLArgument("arg1", null, list(nonNull(Scalars.GraphQLInt)), 10) - def argument2 = new GraphQLArgument("arg2", null, GraphQLString, null) - def argument3 = new GraphQLArgument("arg3", null, GraphQLString, "default") + def argument1 = newArgument() + .name("arg1") + .type(list(nonNull(GraphQLInt))) + .defaultValueLiteral(IntValue.newIntValue().value(10).build()) + .build() + def argument2 = newArgument() + .name("arg2") + .type(GraphQLString) + .build() + def argument3 = newArgument() + .name("arg3") + .type(GraphQLString) + .defaultValueLiteral(StringValue.newStringValue().value("default").build()) + .build() def argStr = new SchemaPrinter().argsString([argument1, argument2, argument3]) expect: @@ -114,9 +140,20 @@ class SchemaPrinterTest extends Specification { } def "argsString_sorts"() { - def argument1 = new GraphQLArgument("arg1", null, list(nonNull(Scalars.GraphQLInt)), 10) - def argument2 = new GraphQLArgument("arg2", null, GraphQLString, null) - def argument3 = new GraphQLArgument("arg3", null, GraphQLString, "default") + def argument1 = newArgument() + .name("arg1") + .type(list(nonNull(GraphQLInt))) + .defaultValueLiteral(IntValue.newIntValue().value(10).build()) + .build() + def argument2 = newArgument() + .name("arg2") + .type(GraphQLString) + .build() + def argument3 = newArgument() + .name("arg3") + .type(GraphQLString) + .defaultValueLiteral(StringValue.newStringValue().value("default").build()) + .build() def argStr = new SchemaPrinter().argsString([argument2, argument1, argument3]) expect: @@ -125,8 +162,18 @@ class SchemaPrinterTest extends Specification { } def "argsString_comments"() { - def argument1 = new GraphQLArgument("arg1", "A multiline\ncomment", list(nonNull(Scalars.GraphQLInt)), 10) - def argument2 = new GraphQLArgument("arg2", "A single line comment", list(nonNull(Scalars.GraphQLInt)), 10) + def argument1 = newArgument() + .name("arg1") + .description("A multiline\ncomment") + .type(list(nonNull(GraphQLInt))) + .defaultValueLiteral(IntValue.newIntValue().value(10).build()) + .build() + def argument2 = newArgument() + .name("arg2") + .description("A single line comment") + .type(list(nonNull(GraphQLInt))) + .defaultValueLiteral(IntValue.newIntValue().value(10).build()) + .build() def argStr = new SchemaPrinter().argsString([argument1, argument2]) expect: @@ -136,7 +183,7 @@ class SchemaPrinterTest extends Specification { A multiline comment """ - arg1: [Int!] = 10, + arg1: [Int!] = 10, "A single line comment" arg2: [Int!] = 10 )''' @@ -155,7 +202,6 @@ class SchemaPrinterTest extends Specification { id: ID! name: String! } - """ } @@ -310,7 +356,7 @@ type Subscription { given: GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").type(GraphQLString).build() - def queryType = GraphQLObjectType.newObject().name("Query").description("About Query\nSecond Line").field(fieldDefinition).build() + def queryType = newObject().name("Query").description("About Query\nSecond Line").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -330,7 +376,7 @@ type Query { given: GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").description("About field\nsecond").type(GraphQLString).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -350,7 +396,7 @@ type Query { given: GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").description("").type(GraphQLString).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -364,14 +410,14 @@ type Query { def "prints enum description as comment"() { given: - GraphQLEnumType graphQLEnumType = GraphQLEnumType.newEnum() + GraphQLEnumType graphQLEnumType = newEnum() .name("Enum") .description("About enum") .value("value", "value", "value desc") .build() GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").type(graphQLEnumType).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -394,17 +440,24 @@ enum Enum { given: GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").type(GraphQLString).build() - def possibleType = GraphQLObjectType.newObject().name("PossibleType").field(fieldDefinition).build() - GraphQLUnionType unionType = GraphQLUnionType.newUnionType() + def possibleType = newObject().name("PossibleType").field(fieldDefinition).build() + GraphQLUnionType unionType = newUnionType() .name("Union") .description("About union") .possibleType(possibleType) - .typeResolver({ it -> null }) .build() GraphQLFieldDefinition fieldDefinition2 = newFieldDefinition() .name("field").type(unionType).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition2).build() - def schema = GraphQLSchema.newSchema().query(queryType).build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(unionType, { it -> null }) + .build() + def queryType = newObject().name("Query").field(fieldDefinition2).build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(queryType) + .build() + when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -424,22 +477,29 @@ type Query { } def "prints union"() { - def possibleType1 = GraphQLObjectType.newObject().name("PossibleType1").field( + def possibleType1 = newObject().name("PossibleType1").field( newFieldDefinition().name("field").type(GraphQLString).build() ).build() - def possibleType2 = GraphQLObjectType.newObject().name("PossibleType2").field( + def possibleType2 = newObject().name("PossibleType2").field( newFieldDefinition().name("field").type(GraphQLString).build() ).build() - GraphQLUnionType unionType = GraphQLUnionType.newUnionType() + GraphQLUnionType unionType = newUnionType() .name("Union") .possibleType(possibleType1) .possibleType(possibleType2) - .typeResolver({ it -> null }) .build() GraphQLFieldDefinition fieldDefinition2 = newFieldDefinition() .name("field").type(unionType).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition2).build() - def schema = GraphQLSchema.newSchema().query(queryType).build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(unionType, { it -> null }) + .build() + def queryType = newObject().name("Query").field(fieldDefinition2).build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(queryType) + .build() + when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -472,7 +532,7 @@ type Query { .name("field") .argument(newArgument().name("arg").type(inputType).build()) .type(GraphQLString).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition2).build() + def queryType = newObject().name("Query").field(fieldDefinition2).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -497,12 +557,19 @@ input Input { .name("Interface") .description("about interface") .field(newFieldDefinition().name("field").description("about field").type(GraphQLString).build()) - .typeResolver({ it -> null }) .build() GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").type(graphQLInterfaceType).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() - def schema = GraphQLSchema.newSchema().query(queryType).build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(graphQLInterfaceType, { it -> null }) + .build() + def queryType = newObject().name("Query").field(fieldDefinition).build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(queryType) + .build() + when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -521,7 +588,7 @@ type Query { def "prints scalar description as comment"() { given: - GraphQLScalarType myScalar = new GraphQLScalarType("Scalar", "about scalar", new Coercing() { + GraphQLScalarType myScalar = newScalar().name("Scalar").description("about scalar").coercing(new Coercing() { @Override Object serialize(Object input) { return null @@ -537,9 +604,10 @@ type Query { return null } }) + .build() GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("field").type(myScalar).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(defaultOptions().includeScalarTypes(true).includeDirectives(false)).print(schema) @@ -561,7 +629,7 @@ scalar Scalar .argument(newArgument().name("arg2").type(GraphQLString).build()) .argument(newArgument().name("arg3").description("about 3\nsecond line").type(GraphQLString).build()) .type(GraphQLString).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition2).build() + def queryType = newObject().name("Query").field(fieldDefinition2).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) @@ -570,8 +638,8 @@ scalar Scalar result == '''type Query { field( "about arg1" - arg1: String, - arg2: String, + arg1: String, + arg2: String, """ about 3 second line @@ -583,30 +651,86 @@ scalar Scalar } - def "prints derived object type"() { + def "prints type"() { given: - GraphQLFieldDefinition fieldDefinition = newFieldDefinition().name("field").type(GraphQLString).build() - def queryType = new MyGraphQLObjectType("Query", "About Query\nSecond Line", Arrays.asList(fieldDefinition)) - def schema = GraphQLSchema.newSchema().query(queryType).build() + def inputObjectType = GraphQLInputObjectType.newInputObject() + .name("inputObjectType") + .field(newInputObjectField().name("field").type(GraphQLString).build()) + .build() + def objectType = newObject() + .name("objectType") + .field(newFieldDefinition().name("field").type(GraphQLString).build()) + .build() + def argument = newArgument().name("arg").type(inputObjectType).build() + GraphQLFieldDefinition field1 = newFieldDefinition().name("field1").type(objectType).argument(argument).build() + + def interfaceType = newInterface() + .name("interfaceType") + .field(newFieldDefinition().name("field").type(GraphQLString).build()) + .build() + def objectWithInterface = newObject() + .name("objectWithInterface") + .field(newFieldDefinition().name("field").type(GraphQLString).build()) + .withInterface(interfaceType) + .build() + GraphQLFieldDefinition field2 = newFieldDefinition() + .name("field2") + .type(objectWithInterface) + .build() + + def enumType = newEnum() + .name("enumType") + .value(GraphQLEnumValueDefinition.newEnumValueDefinition().name("GraphQLEnumValueDefinition").build()) + .build() + GraphQLFieldDefinition field3 = newFieldDefinition() + .name("field3") + .type(enumType) + .build() + def queryType = newObject().name("Query").field(field1).field(field2).field(field3).build() + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().typeResolver(interfaceType, { env -> null }).build() + def schema = GraphQLSchema.newSchema().query(queryType).codeRegistry(codeRegistry).build() when: def result = new SchemaPrinter(noDirectivesOption).print(schema) then: - result == '''""" -About Query -Second Line -""" + result == '''interface interfaceType { + field: String +} + type Query { + field1(arg: inputObjectType): objectType + field2: objectWithInterface + field3: enumType +} + +type objectType { + field: String +} + +type objectWithInterface implements interfaceType { + field: String +} + +enum enumType { + GraphQLEnumValueDefinition +} + +input inputObjectType { field: String } ''' } - def "concurrentModificationException should not occur when multiple extended graphQL types are used"() { + def "arrayIndexOutOfBoundsException should not occur if a field description of only a newline is passed"() { given: - GraphQLFieldDefinition fieldDefinition = newFieldDefinition().name("field").type(GraphQLString).build() - def queryType = new MyTestGraphQLObjectType("Query", "test", Arrays.asList(fieldDefinition)) + GraphQLFieldDefinition fieldDefinition = newFieldDefinition() + .name("field") + .description("\n") + .type(GraphQLString) + .build() + + def queryType = newObject().name("Query").description("test").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).build() when: @@ -732,7 +856,7 @@ enum Episode { NEWHOPE } -"Asteroid" +"desc" scalar Asteroid """ } @@ -766,12 +890,11 @@ type Query { ''' } - def idlWithDirectives() { return """ directive @interfaceFieldDirective on FIELD_DEFINITION directive @unionTypeDirective on UNION - directive @query1 on OBJECT + directive @query1 repeatable on OBJECT directive @query2(arg1: String) on OBJECT directive @fieldDirective1 on FIELD_DEFINITION directive @fieldDirective2(argStr: String, argInt: Int, argFloat: Float, argBool: Boolean) on FIELD_DEFINITION @@ -786,6 +909,7 @@ type Query { directive @inputFieldDirective on INPUT_FIELD_DEFINITION directive @interfaceTypeDirective on INTERFACE directive @scalarDirective on SCALAR + directive @repeatableDirective repeatable on SCALAR interface SomeInterface @interfaceTypeDirective { fieldA : String @interfaceFieldDirective @@ -814,7 +938,7 @@ type Query { SOME_ENUM_VALUE @enumValueDirective } - scalar SomeScalar @scalarDirective + scalar SomeScalar @scalarDirective @repeatableDirective @repeatableDirective input SomeInput @inputTypeDirective { fieldA : String @inputFieldDirective @@ -839,57 +963,79 @@ type Query { then: // args and directives are sorted like the rest of the schema printer - result == '''"Directs the executor to include this field or fragment only when the `if` argument is true" -directive @include( - "Included when true." - if: Boolean! - ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + result == '''directive @argDirective on ARGUMENT_DEFINITION -"Directs the executor to skip this field or fragment when the `if`'argument is true." -directive @skip( - "Skipped when true." - if: Boolean! - ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @interfaceFieldDirective on FIELD_DEFINITION +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION -directive @unionTypeDirective on UNION +directive @enumTypeDirective on ENUM -directive @query1 on OBJECT +directive @enumValueDirective on ENUM_VALUE -directive @query2(arg1: String) on OBJECT +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION directive @fieldDirective1 on FIELD_DEFINITION directive @fieldDirective2(argBool: Boolean, argFloat: Float, argInt: Int, argStr: String) on FIELD_DEFINITION -directive @argDirective on ARGUMENT_DEFINITION - -directive @interfaceImplementingTypeDirective on OBJECT +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @enumTypeDirective on ENUM +directive @inputFieldDirective on INPUT_FIELD_DEFINITION -directive @single on OBJECT +directive @inputTypeDirective on INPUT_OBJECT -directive @singleField on FIELD_DEFINITION +directive @interfaceFieldDirective on FIELD_DEFINITION directive @interfaceImplementingFieldDirective on FIELD_DEFINITION -directive @enumValueDirective on ENUM_VALUE +directive @interfaceImplementingTypeDirective on OBJECT -directive @inputTypeDirective on INPUT_OBJECT +directive @interfaceTypeDirective on INTERFACE -directive @inputFieldDirective on INPUT_FIELD_DEFINITION +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT -directive @interfaceTypeDirective on INTERFACE +directive @query1 repeatable on OBJECT + +directive @query2(arg1: String) on OBJECT + +directive @repeatableDirective repeatable on SCALAR directive @scalarDirective on SCALAR -"Marks the field or enum value as deprecated" -directive @deprecated( - "The reason for the deprecation" - reason: String = "No longer supported" - ) on FIELD_DEFINITION | ENUM_VALUE +directive @single on OBJECT + +directive @singleField on FIELD_DEFINITION + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +directive @unionTypeDirective on UNION interface SomeInterface @interfaceTypeDirective { fieldA: String @interfaceFieldDirective @@ -918,7 +1064,7 @@ enum SomeEnum @enumTypeDirective { SOME_ENUM_VALUE @enumValueDirective } -scalar SomeScalar @scalarDirective +scalar SomeScalar @repeatableDirective @repeatableDirective @scalarDirective input SomeInput @inputTypeDirective { fieldA: String @inputFieldDirective @@ -976,6 +1122,8 @@ input SomeInput { active : Enum deprecated : Enum @deprecated deprecatedWithReason : Enum @deprecated(reason : "Custom reason 1") + deprecatedFieldArgument( arg1 : String, arg2 : Int @deprecated) : Enum + deprecatedFieldArgumentWithReason( arg1 : String, arg2 : Int @deprecated(reason : "Custom arg reason 1")) : Enum } type Query { @@ -987,6 +1135,12 @@ input SomeInput { DEPRECATED @deprecated DEPRECATED_WITH_REASON @deprecated(reason : "Custom reason 2") } + + input Input { + active : Enum + deprecated : Enum @deprecated + deprecatedWithReason : Enum @deprecated(reason : "Custom reason 3") + } """ def registry = new SchemaParser().parse(idl) def runtimeWiring = newRuntimeWiring().build() @@ -998,27 +1152,49 @@ input SomeInput { then: // args and directives are sorted like the rest of the schema printer - result == '''"Directs the executor to include this field or fragment only when the `if` argument is true" + result == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -"Directs the executor to skip this field or fragment when the `if`'argument is true." +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." directive @skip( "Skipped when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -"Marks the field or enum value as deprecated" -directive @deprecated( - "The reason for the deprecation" - reason: String = "No longer supported" - ) on FIELD_DEFINITION | ENUM_VALUE +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR type Field { active: Enum deprecated: Enum @deprecated(reason : "No longer supported") + deprecatedFieldArgument(arg1: String, arg2: Int @deprecated(reason : "No longer supported")): Enum + deprecatedFieldArgumentWithReason(arg1: String, arg2: Int @deprecated(reason : "Custom arg reason 1")): Enum deprecatedWithReason: Enum @deprecated(reason : "Custom reason 1") } @@ -1031,6 +1207,12 @@ enum Enum { DEPRECATED @deprecated(reason : "No longer supported") DEPRECATED_WITH_REASON @deprecated(reason : "Custom reason 2") } + +input Input { + active: Enum + deprecated: Enum @deprecated(reason : "No longer supported") + deprecatedWithReason: Enum @deprecated(reason : "Custom reason 3") +} ''' } @@ -1063,7 +1245,7 @@ enum Enum { ''' when: - def resultWithSomeDirectives = new SchemaPrinter(defaultOptions().includeDirectives({it.name == "example" })).print(schema) + def resultWithSomeDirectives = new SchemaPrinter(defaultOptions().includeDirectives({ it == "example" })).print(schema) then: resultWithSomeDirectives == '''directive @example on FIELD_DEFINITION @@ -1077,27 +1259,126 @@ type Query { def resultWithDirectives = new SchemaPrinter(defaultOptions().includeDirectives(true)).print(schema) then: - resultWithDirectives == '''"Directs the executor to include this field or fragment only when the `if` argument is true" + resultWithDirectives == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +directive @example on FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -"Directs the executor to skip this field or fragment when the `if`'argument is true." +directive @moreComplex(arg1: String = "default", arg2: Int) on FIELD_DEFINITION | INPUT_FIELD_DEFINITION + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." directive @skip( "Skipped when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @example on FIELD_DEFINITION +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR -directive @moreComplex(arg1: String = "default", arg2: Int) on FIELD_DEFINITION | INPUT_FIELD_DEFINITION +type Query { + fieldA: String @example @moreComplex(arg1 : "default", arg2 : 666) +} +''' + } + + def "directive definitions are not printed when the includeDirectiveDefinitions flag is set to false"() { + def simpleIdlWithDirective = ''' + directive @example on FIELD_DEFINITION + + directive @moreComplex(arg1 : String = "default", arg2 : Int) + on FIELD_DEFINITION | + INPUT_FIELD_DEFINITION + + type Query { + fieldA : String @example @moreComplex(arg2 : 666) + } + ''' + given: + def registry = new SchemaParser().parse(simpleIdlWithDirective) + def runtimeWiring = newRuntimeWiring().build() + def options = SchemaGenerator.Options.defaultOptions() + def schema = new SchemaGenerator().makeExecutableSchema(options, registry, runtimeWiring) + + when: + def resultWithNoDirectiveDefinitions = new SchemaPrinter(defaultOptions().includeDirectiveDefinitions(false)).print(schema) + + then: + resultWithNoDirectiveDefinitions == '''type Query { + fieldA: String @example @moreComplex(arg1 : "default", arg2 : 666) +} +''' + + when: + def resultWithDirectiveDefinitions = new SchemaPrinter(defaultOptions().includeDirectiveDefinitions(true)).print(schema) -"Marks the field or enum value as deprecated" + then: + resultWithDirectiveDefinitions == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" - ) on FIELD_DEFINITION | ENUM_VALUE + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +directive @example on FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +directive @moreComplex(arg1: String = "default", arg2: Int) on FIELD_DEFINITION | INPUT_FIELD_DEFINITION + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR type Query { fieldA: String @example @moreComplex(arg1 : "default", arg2 : 666) @@ -1105,86 +1386,294 @@ type Query { ''' } - def "can print a schema as AST elements"() { + def "can print extend schema block when AST printing enabled"() { def sdl = ''' - directive @directive1 on SCALAR - type Query { - foo : String - } - - extend type Query { - bar : String - } - - extend type Query { - baz : String - } - - enum Enum { - A - } + directive @schemaDirective on SCHEMA - extend enum Enum { - B - } - - interface Interface { - foo : String - } - - extend interface Interface { - bar : String - } - - extend interface Interface { - baz : String + """ + My schema block description + """ + schema { + mutation: MyMutation } - type Foo { - foo : String + extend schema @schemaDirective { + query: MyQuery } - type Bar { - bar : Scalar + extend schema { + subscription: MySubscription } - - union Union = Foo - - extend union Union = Bar - input Input { + type MyQuery { foo: String } - extend input Input { - bar: String - } - - extend input Input { - baz: String - } - - extend input Input { - faz: String + type MyMutation { + pizza: String } - scalar Scalar - - extend scalar Scalar @directive1 + type MySubscription { + chippies: String + } ''' - when: - def wiringFactory = new MockedWiringFactory() { - @Override - boolean providesScalar(ScalarWiringEnvironment env) { - return env.getScalarTypeDefinition().getName() == "Scalar" - } + def runtimeWiring = newRuntimeWiring().build() - @Override + def options = SchemaGenerator.Options.defaultOptions() + def types = new SchemaParser().parse(sdl) + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(options, types, runtimeWiring) + + def printOptions = defaultOptions() + .useAstDefinitions(true) + .includeSchemaDefinition(true) + def result = new SchemaPrinter(printOptions).print(schema) + + then: + result == '''""" +My schema block description +""" +schema { + mutation: MyMutation +} + +extend schema @schemaDirective { + query: MyQuery +} + +extend schema { + subscription: MySubscription +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +directive @schemaDirective on SCHEMA + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type MyMutation { + pizza: String +} + +type MyQuery { + foo: String +} + +type MySubscription { + chippies: String +} +''' + } + + def "will not print extend schema block when AST printing not enabled"() { + def sdl = ''' + directive @schemaDirective on SCHEMA + + """ + My schema block description + """ + schema { + mutation: MyMutation + } + + extend schema @schemaDirective { + query: MyQuery + } + + type MyQuery { + foo: String + } + + type MyMutation { + pizza: String + } + ''' + + when: + def runtimeWiring = newRuntimeWiring().build() + + def options = SchemaGenerator.Options.defaultOptions() + def types = new SchemaParser().parse(sdl) + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(options, types, runtimeWiring) + + def printOptions = defaultOptions() + .useAstDefinitions(false) + .includeSchemaDefinition(true) + def result = new SchemaPrinter(printOptions).print(schema) + + then: + result == '''"My schema block description" +schema @schemaDirective{ + query: MyQuery + mutation: MyMutation +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +directive @schemaDirective on SCHEMA + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type MyMutation { + pizza: String +} + +type MyQuery { + foo: String +} +''' + } + + def "can print a schema as AST elements"() { + def sdl = ''' + directive @directive1 on SCALAR + + type Query { + foo : String + } + + extend type Query { + bar : String + } + + extend type Query { + baz : String + } + + enum Enum { + A + } + + extend enum Enum { + B + } + + interface Interface { + foo : String + } + + extend interface Interface { + bar : String + } + + extend interface Interface { + baz : String + } + + type Foo { + foo : String + } + + type Bar { + bar : Scalar + } + + union Union = Foo + + extend union Union = Bar + + input Input { + foo: String + } + + extend input Input { + bar: String + } + + extend input Input { + baz: String + } + + extend input Input { + faz: String + } + + scalar Scalar + + extend scalar Scalar @directive1 + ''' + + + when: + def wiringFactory = new MockedWiringFactory() { + @Override + boolean providesScalar(ScalarWiringEnvironment env) { + return env.getScalarTypeDefinition().getName() == "Scalar" + } + + @Override GraphQLScalarType getScalar(ScalarWiringEnvironment env) { def definition = env.getScalarTypeDefinition() - return GraphQLScalarType.newScalar() + return newScalar() .name(definition.getName()) .definition(definition) .extensionDefinitions(env.getExtensions()) @@ -1205,25 +1694,45 @@ type Query { def result = new SchemaPrinter(printOptions).print(schema) then: - result == '''"Directs the executor to include this field or fragment only when the `if` argument is true" + result == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +directive @directive1 on SCALAR + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -"Directs the executor to skip this field or fragment when the `if`'argument is true." +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." directive @skip( "Skipped when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @directive1 on SCALAR - -"Marks the field or enum value as deprecated" -directive @deprecated( - "The reason for the deprecation" - reason: String = "No longer supported" - ) on FIELD_DEFINITION | ENUM_VALUE +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR interface Interface { foo: String @@ -1307,11 +1816,10 @@ extend type Query { extend type Query { baz: String } - ''' } - def "@deprecated directives are always printed"() { + def "@deprecated directives are NOT always printed - they used to be"() { given: def idl = """ @@ -1328,6 +1836,10 @@ extend type Query { enum Enum { enumVal @deprecated } + + input Input { + deprecated : String @deprecated(reason : "custom reason") + } """ def registry = new SchemaParser().parse(idl) def runtimeWiring = newRuntimeWiring().build() @@ -1339,7 +1851,7 @@ extend type Query { then: result == '''type Field { - deprecated: Enum @deprecated(reason : "No longer supported") + deprecated: Enum } type Query { @@ -1347,7 +1859,11 @@ type Query { } enum Enum { - enumVal @deprecated(reason : "No longer supported") + enumVal +} + +input Input { + deprecated: String } ''' } @@ -1388,7 +1904,7 @@ type Query { ''' } - def "@deprecated directive are always printed regardless of options"() { + def "@deprecated directive are NOT always printed regardless of options"() { given: def idl = ''' @@ -1407,6 +1923,37 @@ type Query { then: result == '''type Query { + fieldX: String +} +''' + } + + def "@deprecated directive are printed respecting options"() { + given: + def idl = ''' + + type Query { + fieldX : String @deprecated + } + + ''' + def registry = new SchemaParser().parse(idl) + def runtimeWiring = newRuntimeWiring().build() + def options = SchemaGenerator.Options.defaultOptions() + def schema = new SchemaGenerator().makeExecutableSchema(options, registry, runtimeWiring) + + when: + def printOptions = defaultOptions().includeDirectives({ dName -> (dName == "deprecated") }) + def result = new SchemaPrinter(printOptions).print(schema) + + then: + result == '''"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +type Query { fieldX: String @deprecated(reason : "No longer supported") } ''' @@ -1466,7 +2013,7 @@ scalar CustomScalar def "omit unused built-in by default - created programmatically"() { given: - GraphQLScalarType myScalar = new GraphQLScalarType("RandomScalar", "about scalar", new Coercing() { + GraphQLScalarType myScalar = newScalar().name("RandomScalar").description("about scalar").coercing(new Coercing() { @Override Object serialize(Object input) { return null @@ -1482,9 +2029,11 @@ scalar CustomScalar return null } }) + .build() + GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("scalarType").type(myScalar).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).additionalType(myScalar).build() @@ -1506,7 +2055,7 @@ scalar RandomScalar def "show unused custom scalars when unused - created programmatically"() { given: - GraphQLScalarType myScalar = new GraphQLScalarType("Scalar", "about scalar", new Coercing() { + GraphQLScalarType myScalar = newScalar().name("Scalar").description("about scalar").coercing(new Coercing() { @Override Object serialize(Object input) { return null @@ -1522,9 +2071,11 @@ scalar RandomScalar return null } }) + .build() + GraphQLFieldDefinition fieldDefinition = newFieldDefinition() .name("someType").type(GraphQLInt).build() - def queryType = GraphQLObjectType.newObject().name("Query").field(fieldDefinition).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() def schema = GraphQLSchema.newSchema().query(queryType).additionalType(myScalar).build() @@ -1574,4 +2125,976 @@ scalar Scalar _ | 'horizontal-tab-\\t' } -} \ No newline at end of file + def 'print interfaces implementing interfaces correctly'() { + given: + def sdl = """ + type Query { + foo: Resource + } + + interface Node { + id: ID! + } + interface Node2 { + id2: ID! + } + + interface Resource implements Node & Node2 { + id: ID! + id2: ID! + } + """ + def schema = TestUtil.schema(sdl) + when: + def result = new SchemaPrinter(defaultOptions().includeDirectives(false)).print(schema) + + then: + result == """interface Node { + id: ID! +} + +interface Node2 { + id2: ID! +} + +interface Resource implements Node & Node2 { + id: ID! + id2: ID! +} + +type Query { + foo: Resource +} +""" + } + + def "schema element filtering works"() { + def sdl = """ + schema { + query : PrintMeQuery + } + + directive @directivePrintMe on ARGUMENT_DEFINITION + directive @someOtherDirective on FIELD_DEFINITION + + type PrintMeQuery { + field : PrintMeType + fieldPrintMe : SomeType + fieldPrintMeWithArgs(arg1 : String, arg2PrintMe : String @directivePrintMe) : SomeType @someOtherDirective + } + + type PrintMeType { + fieldPrintMe : String + } + + type SomeType { + fieldPrintMe : String + } + + """ + def schema = TestUtil.schema(sdl) + + when: + Predicate predicate = { element -> + if (element instanceof GraphQLNamedSchemaElement) { + def printIt = ((GraphQLNamedSchemaElement) element).getName().contains("PrintMe") + return printIt + } + return false + } + def result = new SchemaPrinter(defaultOptions().includeDirectives(true).includeSchemaElement(predicate)).print(schema) + + then: + result == """schema { + query: PrintMeQuery +} + +directive @directivePrintMe on ARGUMENT_DEFINITION + +type PrintMeQuery { + fieldPrintMe: SomeType + fieldPrintMeWithArgs(arg2PrintMe: String @directivePrintMe): SomeType +} + +type PrintMeType { + fieldPrintMe: String +} +""" + + } + + def "schema with directive prints directive"() { + def sdl = """ + directive @foo on SCHEMA + type MyQuery { anything: String } + schema @foo { + query: MyQuery + } + """ + def schema = TestUtil.schema(sdl) + + when: + def result = new SchemaPrinter(defaultOptions().includeDirectives(true)).print(schema) + + then: + result == """schema @foo{ + query: MyQuery +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +directive @foo on SCHEMA + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type MyQuery { + anything: String +} +""" + } + + def "allow printing of just directives"() { + def sdl = """ + directive @foo on FIELD_DEFINITION + type Query { anything: String @foo } + """ + def schema = TestUtil.schema(sdl) + def directive = schema.getDirective("foo") + + when: + def result = new SchemaPrinter(defaultOptions().includeDirectives(true)).print(directive) + + then: + result == """directive @foo on FIELD_DEFINITION""" + } + + def "directive with leading pipe gets discarded"() { + def sdl = """ + directive @foo on | OBJECT | FIELD_DEFINITION + type Query { anything: String @foo } + """ + def schema = TestUtil.schema(sdl) + def directive = schema.getDirective("foo") + + when: + def result = new SchemaPrinter(defaultOptions().includeDirectives(true)).print(directive) + + then: + result == """directive @foo on OBJECT | FIELD_DEFINITION""" + } + + def "description printing escapes triple quotes"() { + def descriptionWithTripleQuote = 'Hello """ \n World """ """' + def field = newFieldDefinition().name("hello").type(GraphQLString).build() + def queryType = newObject().name("Query").field(field).description(descriptionWithTripleQuote).build() + def schema = GraphQLSchema.newSchema().query(queryType).build() + when: + def result = new SchemaPrinter(defaultOptions().includeDirectives(ExcludeGraphQLSpecifiedDirectivesPredicate)).print(schema) + + then: + result == '''""" +Hello \\""" + World \\""" \\""" +""" +type Query { + hello: String +} +''' + } + + def "directive with optional values"() { + def sdl = """ + directive @foo(note:String) on FIELD_DEFINITION + type Query { + anything: String @foo + anything2: String @foo(note: "foo") + } + """ + def schema = TestUtil.schema(sdl) + when: + def result = new SchemaPrinter(defaultOptions().includeDirectives(ExcludeGraphQLSpecifiedDirectivesPredicate)).print(schema) + + + then: + result == """directive @foo(note: String) on FIELD_DEFINITION + +type Query { + anything: String @foo + anything2: String @foo(note : "foo") +} +""" + } + + def "programmatic object value in an argument is printed"() { + + GraphQLInputObjectType compoundType = GraphQLInputObjectType.newInputObject().name("Compound") + .field({ it.name("a").type(GraphQLString) }) + .field({ it.name("b").type(GraphQLString) }) + .build() + + GraphQLObjectType objType = newObject().name("obj") + .field({ + it.name("f").type(GraphQLString) + .argument({ + it.name("arg").type(compoundType).defaultValueProgrammatic(["a": "A", "b": "B"]) + }) + }).build() + + when: + + def result = new SchemaPrinter().print(objType) + + + then: + result == '''type obj { + f(arg: Compound = {a : "A", b : "B"}): String +} +''' + + when: + def newAppliedDirective = GraphQLAppliedDirective.newDirective().name("foo") + .argument({ + it.name("arg").type(compoundType).valueProgrammatic(["a": "A", "b": "B"]) + }) + .build() + + objType = newObject().name("obj").field({ + it.name("f").type(GraphQLString).withAppliedDirective(newAppliedDirective) + }).build() + + result = new SchemaPrinter().print(objType) + + then: + + result == '''type obj { + f: String @foo(arg : {a : "A", b : "B"}) +} +''' + } + + def "directive containing formatting specifiers"() { + def constraintAppliedDirective = GraphQLAppliedDirective.newDirective().name("constraint") + .argument({ + it.name("regex").type(GraphQLString).valueProgrammatic("%") + }) + .build() + + GraphQLInputObjectType type = GraphQLInputObjectType.newInputObject().name("Person") + .field({ it.name("thisMustBeAPercentageSign").type(GraphQLString).withAppliedDirective(constraintAppliedDirective) }) + .build() + + when: + def result = new SchemaPrinter().print(type) + + + then: + result == '''input Person { + thisMustBeAPercentageSign: String @constraint(regex : "%") +} +''' + } + + def "can specify a new ordering for the schema printer"() { + + def sdl = """ + type Query { id( b:ID a:ID c:ID) : ID } + + type XQuery { id: ID } + type YQuery { id: ID } + type ZQuery { id: ID } + + interface XInterface { id: ID } + interface ZInterface { id: ID } + interface YInterface { id: ID } + + + input XInput { x : Int } + input ZInput { x : Int } + input YInput { x : Int } + + scalar XScalar + scalar ZScalar + scalar YScalar + + union XUnion = Query | XQuery + union ZUnion = Query | XQuery + union YUnion = Query | XQuery + """ + def schema = TestUtil.schema(sdl) + + // by name descending + GraphqlTypeComparatorRegistry comparatorRegistry = { env -> return GraphqlTypeComparators.byNameAsc().reversed() } + def options = defaultOptions().includeDirectives(true).setComparators(comparatorRegistry) + when: + def result = new SchemaPrinter(options).print(schema) + + then: + result == '''"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive allows results to be deferred during execution" +directive @defer( + "A unique label that represents the fragment being deferred" + label: String, + "Deferred behaviour is controlled by this argument" + if: Boolean! = true + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +union ZUnion = XQuery | Query + +scalar ZScalar + +type ZQuery { + id: ID +} + +interface ZInterface { + id: ID +} + +input ZInput { + x: Int +} + +union YUnion = XQuery | Query + +scalar YScalar + +type YQuery { + id: ID +} + +interface YInterface { + id: ID +} + +input YInput { + x: Int +} + +union XUnion = XQuery | Query + +scalar XScalar + +type XQuery { + id: ID +} + +interface XInterface { + id: ID +} + +input XInput { + x: Int +} + +type Query { + id(c: ID, b: ID, a: ID): ID +} +''' + + } + + def "prints schema description as comment"() { + given: + GraphQLFieldDefinition fieldDefinition = newFieldDefinition() + .name("field").type(GraphQLString).build() + def queryType = newObject().name("Query").field(fieldDefinition).build() + def schema = GraphQLSchema.newSchema().description("About Schema").query(queryType).build() + when: + def result = new SchemaPrinter(noDirectivesOption.includeSchemaDefinition(true)).print(schema) + println(result) + + then: + result == '''"About Schema" +schema { + query: Query +} + +type Query { + field: String +} +''' + } + + def "prints list of schema elements"() { + given: + def testObjectA = newObject() + .name("TestObjectA") + .field(newFieldDefinition().name("field").type(GraphQLString)) + .build() + def testObjectB = newObject() + .name("TestObjectB") + .field(newFieldDefinition().name("field").type(GraphQLString)) + .build() + + when: + def result = new SchemaPrinter().print([testObjectA, testObjectB]) + println(result) + + then: + result == '''type TestObjectA { + field: String +} + +type TestObjectB { + field: String +} +''' + } + + final def SDL_WITH_COMMENTS = '''#schema comment 1 +# schema comment 2 with leading spaces +schema { + query: Query + mutation: Mutation +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +" custom directive 'example' description 1" +# custom directive 'example' comment 1 +directive @example on ENUM_VALUE + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +# interface Character comment 1 +# interface Character comment 2 +interface Character implements Node { + appearsIn: [Episode] + friends: [Character] + id: ID! + name: String +} + +interface Node { + id: ID! +} + +# union type Humanoid comment 1 +union Humanoid = Droid | Human + +type Droid implements Character & Node { + appearsIn: [Episode]! + friends: [Character] + id: ID! + madeOn: Planet + name: String! + primaryFunction: String +} + +type Human implements Character & Node { + appearsIn: [Episode]! + friends: [Character] + homePlanet: String + id: ID! + name: String! +} + +type Mutation { + shoot( + # arg 'id\' + id: String!, + # arg 'with\' + with: Gun + ): Query +} + +type Planet { + hitBy: Asteroid + name: String +} + +# type query comment 1 +# type query comment 2 +type Query { + # query field 'hero' comment + hero(episode: Episode): Character + # query field 'humanoid' comment + humanoid(id: ID!): Humanoid +} + +# enum Episode comment 1 +# enum Episode comment 2 +enum Episode { + # enum value EMPIRE comment 1 + EMPIRE + JEDI + NEWHOPE @example +} + +"desc" +# scalar Asteroid comment 1 +scalar Asteroid + +# input type Gun comment 1 +input Gun { + # gun 'caliber' input value comment + caliber: Int + # gun 'name' input value comment + name: String +} +''' + + static List makeComments(String... strings) { + return strings.stream() + .map(s -> new Comment(s, null)) + .collect(Collectors.toList()) + } + + def "prints with AST comments"() { + given: + def exampleDirective = GraphQLDirective.newDirective().name("example").validLocation(Introspection.DirectiveLocation.ENUM_VALUE) + .description(" custom directive 'example' description 1") + .definition(DirectiveDefinition.newDirectiveDefinition().comments(makeComments(" custom directive 'example' comment 1")).build()).build() + def asteroidType = newScalar().name("Asteroid").description("desc") + .definition(ScalarTypeDefinition.newScalarTypeDefinition().comments(makeComments(" scalar Asteroid comment 1")).build()) + .coercing(TestUtil.mockCoercing()) + .build() + def nodeType = newInterface().name("Node") + .field(newFieldDefinition().name("id").type(nonNull(GraphQLID)).build()) + .build() + def planetType = newObject().name("Planet") + .field(newFieldDefinition().name("hitBy").type(asteroidType).build()) + .field(newFieldDefinition().name("name").type(GraphQLString).build()) + .build() + def episodeType = newEnum().name("Episode") + .definition(newEnumTypeDefinition().comments( + makeComments(" enum Episode comment 1", " enum Episode comment 2")).build()) + .values(List.of( + GraphQLEnumValueDefinition.newEnumValueDefinition().name("EMPIRE") + .definition(EnumValueDefinition.newEnumValueDefinition().comments(makeComments(" enum value EMPIRE comment 1")).build()).build(), + GraphQLEnumValueDefinition.newEnumValueDefinition().name("JEDI").build(), + GraphQLEnumValueDefinition.newEnumValueDefinition().name("NEWHOPE").withDirective(exampleDirective).build())) + .build() + def characterType = newInterface().name("Character").withInterface(nodeType) + .definition(newInterfaceTypeDefinition().comments( + makeComments(" interface Character comment 1", " interface Character comment 2")).build()) + .field(newFieldDefinition().name("appearsIn").type(list(episodeType)).build()) + .field(newFieldDefinition().name("friends").type(list(typeRef("Character"))).build()) + .field(newFieldDefinition().name("id").type(nonNull(GraphQLID)).build()) + .field(newFieldDefinition().name("name").type(GraphQLString).build()) + .build() + def droidType = newObject().name("Droid").withInterfaces(characterType, nodeType) + .field(newFieldDefinition().name("appearsIn").type(nonNull(list(episodeType))).build()) + .field(newFieldDefinition().name("friends").type(list(typeRef("Character"))).build()) + .field(newFieldDefinition().name("id").type(nonNull(GraphQLID)).build()) + .field(newFieldDefinition().name("madeOn").type(planetType).build()) + .field(newFieldDefinition().name("name").type(nonNull(GraphQLString)).build()) + .field(newFieldDefinition().name("primaryFunction").type(GraphQLString).build()) + .build() + def humanType = newObject().name("Human").withInterfaces(characterType, nodeType) + .field(newFieldDefinition().name("appearsIn").type(nonNull(list(episodeType))).build()) + .field(newFieldDefinition().name("friends").type(list(typeRef("Character"))).build()) + .field(newFieldDefinition().name("homePlanet").type(GraphQLString).build()) + .field(newFieldDefinition().name("id").type(nonNull(GraphQLID)).build()) + .field(newFieldDefinition().name("name").type(nonNull(GraphQLString)).build()) + .build() + def humanoidType = newUnionType().name("Humanoid") + .definition(newUnionTypeDefinition().comments(makeComments(" union type Humanoid comment 1")).build()) + .possibleTypes(humanType, droidType) + .build() + def queryType = newObject().name("Query") + .definition(newObjectTypeDefinition().comments(makeComments(" type query comment 1", " type query comment 2")).build()) + .field(newFieldDefinition().name("hero").type(characterType) + .definition(FieldDefinition.newFieldDefinition().comments(makeComments(" query field 'hero' comment")).build()) + .argument(newArgument().name("episode").type(episodeType).build()) + .build()) + .field(newFieldDefinition().name("humanoid").type(humanoidType) + .definition(FieldDefinition.newFieldDefinition().comments(makeComments(" query field 'humanoid' comment")).build()) + .argument(newArgument().name("id").type(nonNull(GraphQLID)).build()) + .build()) + .build() + def gunType = GraphQLInputObjectType.newInputObject().name("Gun") + .definition(newInputObjectDefinition().comments(makeComments(" input type Gun comment 1")).build()) + .field(newInputObjectField().name("name").type(GraphQLString) + .definition(newInputValueDefinition().comments(makeComments(" gun 'name' input value comment")).build()).build()) + .field(newInputObjectField().name("caliber").type(GraphQLInt) + .definition(newInputValueDefinition().comments(makeComments(" gun 'caliber' input value comment")).build()).build()) + .build() + def schema = GraphQLSchema.newSchema() + .additionalDirective(exampleDirective) + .codeRegistry(GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(characterType, resolver) + .typeResolver(humanoidType, resolver) + .typeResolver(nodeType, resolver) + .build()) + .definition(SchemaDefinition.newSchemaDefinition().comments( + makeComments("schema comment 1", " schema comment 2 with leading spaces")).build()) + .mutation(newObject().name("Mutation") + .field(newFieldDefinition().name("shoot").type(queryType).arguments(List.of( + newArgument().name("id").type(nonNull(GraphQLString)) + .definition(newInputValueDefinition().comments(makeComments(" arg 'id'")).build()).build(), + newArgument().name("with").type(gunType) + .definition(newInputValueDefinition().comments(makeComments(" arg 'with'")).build()).build())) + .build()) + .build()) + .query(queryType) + .build() + when: + def result = new SchemaPrinter(defaultOptions().includeSchemaDefinition(true).includeAstDefinitionComments(true)).print(schema) + println(result) + + then: + result == SDL_WITH_COMMENTS + } + + def "parses, generates and prints with AST comments"() { + given: + def registry = new SchemaParser().parse(SDL_WITH_COMMENTS) + def wiring = newRuntimeWiring() + .scalar(mockScalar(registry.scalars().get("Asteroid"))) + .type(mockTypeRuntimeWiring("Character", true)) + .type(mockTypeRuntimeWiring("Humanoid", true)) + .type(mockTypeRuntimeWiring("Node", true)) + .build() + def options = SchemaGenerator.Options.defaultOptions().useCommentsAsDescriptions(false) + def schema = new SchemaGenerator().makeExecutableSchema(options, registry, wiring) + when: + def result = new SchemaPrinter(defaultOptions().includeSchemaDefinition(true).includeAstDefinitionComments(true)).print(schema) + println(result) + + // @TODO: Schema Parser seems to be ignoring directive and scalar comments and needs to be fixed. + // The expected result below should be the same as the SDL_WITH_COMMENTS above BUT with the two comments temporarily removed. + then: + result == '''#schema comment 1 +# schema comment 2 with leading spaces +schema { + query: Query + mutation: Mutation +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +" custom directive 'example' description 1" +directive @example on ENUM_VALUE + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +# interface Character comment 1 +# interface Character comment 2 +interface Character implements Node { + appearsIn: [Episode] + friends: [Character] + id: ID! + name: String +} + +interface Node { + id: ID! +} + +# union type Humanoid comment 1 +union Humanoid = Droid | Human + +type Droid implements Character & Node { + appearsIn: [Episode]! + friends: [Character] + id: ID! + madeOn: Planet + name: String! + primaryFunction: String +} + +type Human implements Character & Node { + appearsIn: [Episode]! + friends: [Character] + homePlanet: String + id: ID! + name: String! +} + +type Mutation { + shoot( + # arg 'id\' + id: String!, + # arg 'with\' + with: Gun + ): Query +} + +type Planet { + hitBy: Asteroid + name: String +} + +# type query comment 1 +# type query comment 2 +type Query { + # query field 'hero' comment + hero(episode: Episode): Character + # query field 'humanoid' comment + humanoid(id: ID!): Humanoid +} + +# enum Episode comment 1 +# enum Episode comment 2 +enum Episode { + # enum value EMPIRE comment 1 + EMPIRE + JEDI + NEWHOPE @example +} + +"desc" +scalar Asteroid + +# input type Gun comment 1 +input Gun { + # gun 'caliber' input value comment + caliber: Int + # gun 'name' input value comment + name: String +} +''' + } + + def "issue 3285 - deprecated defaultValue on programmatic args prints as expected"() { + def queryObjType = newObject().name("Query") + .field(newFieldDefinition().name("f").type(GraphQLString) + .argument(newArgument().name("arg").type(GraphQLString).defaultValue(null))) + .build() + def schema = GraphQLSchema.newSchema().query(queryObjType).build() + + + when: + def options = defaultOptions().includeDirectiveDefinitions(false) + def sdl = new SchemaPrinter(options).print(schema) + then: + sdl == '''type Query { + f(arg: String = null): String +} +''' + } + + def "deprecated directive with custom reason"() { + given: + def enumType = newEnum().name("Enum") + .values(List.of( + GraphQLEnumValueDefinition.newEnumValueDefinition().name("DEPRECATED_WITH_REASON").deprecationReason("Custom enum value reason").build())) + .build() + def fieldType = newObject().name("Field") + .field(newFieldDefinition().name("deprecatedWithReason").type(enumType).deprecate("Custom field reason").build()) + .build() + def inputType = GraphQLInputObjectType.newInputObject().name("Input") + .field(newInputObjectField().name("deprecatedWithReason").type(enumType).deprecate("Custom input reason").build()) + .build() + def queryType = newObject().name("Query") + .field(newFieldDefinition().name("field").type(fieldType) + .argument(newArgument().name("deprecatedWithReason").type(inputType).deprecate("Custom argument reason").build()).build()) + .build() + def schema = GraphQLSchema.newSchema() + .query(queryType) + .build() + when: + + def printOptions = defaultOptions().includeDirectiveDefinitions(false).includeDirectives({ d -> true }) + + def result = "\n" + new SchemaPrinter(printOptions).print(schema) + println(result) + + then: + result == """ +type Field { + deprecatedWithReason: Enum @deprecated(reason : "Custom field reason") +} + +type Query { + field(deprecatedWithReason: Input @deprecated(reason : "Custom argument reason")): Field +} + +enum Enum { + DEPRECATED_WITH_REASON @deprecated(reason : "Custom enum value reason") +} + +input Input { + deprecatedWithReason: Enum @deprecated(reason : "Custom input reason") +} +""" + } + + def "can use predicate for directive definitions"() { + + def schema = TestUtil.schema(""" + type Query { + field: String @deprecated + } + """) + + + def options = defaultOptions() + .includeDirectiveDefinitions(true) + .includeDirectiveDefinition({ it != "skip" }) + def result = new SchemaPrinter(options).print(schema) + + expect: "has no skip definition" + + result == """"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type Query { + field: String @deprecated(reason : "No longer supported") +} +""" + } +} + + diff --git a/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy index cdb7df745a..a109e0583c 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy @@ -8,7 +8,6 @@ import graphql.schema.Coercing import graphql.schema.CoercingParseLiteralException import graphql.schema.DataFetcher import graphql.schema.GraphQLObjectType -import graphql.schema.GraphQLScalarType import graphql.schema.TypeResolver import graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError import graphql.schema.idl.errors.DirectiveIllegalLocationError @@ -19,12 +18,11 @@ import graphql.schema.idl.errors.QueryOperationMissingError import spock.lang.Specification import spock.lang.Unroll +import static graphql.schema.GraphQLScalarType.newScalar import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.DUPLICATED_KEYS_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_ENUM_MESSAGE -import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_LIST_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_NON_NULL_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_OBJECT_MESSAGE -import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_SCALAR_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.MISSING_REQUIRED_FIELD_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.MUST_BE_VALID_ENUM_VALUE_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.NOT_A_VALID_SCALAR_LITERAL_MESSAGE @@ -33,10 +31,8 @@ import static java.lang.String.format class SchemaTypeCheckerTest extends Specification { - - - TypeDefinitionRegistry parse(String spec) { - new SchemaParser().parse(spec) + static TypeDefinitionRegistry parseSDL(String spec) { + new SchemaParser().parse(spec).readOnly() } def resolver = new TypeResolver() { @@ -89,12 +85,12 @@ class SchemaTypeCheckerTest extends Specification { } List check(String spec, List resolvingNames) { - def types = parse(spec) + def types = parseSDL(spec) NamedWiringFactory wiringFactory = new NamedWiringFactory("InterfaceType") - def scalesScalar = new GraphQLScalarType("Scales", "", new Coercing() { + def scalesScalar = newScalar().name("Scales").coercing(new Coercing() { @Override Object serialize(Object dataFetcherResult) { return null @@ -110,7 +106,9 @@ class SchemaTypeCheckerTest extends Specification { return null } }) - def aCustomDateScalar = new GraphQLScalarType("ACustomDate", "", new Coercing() { + .build() + + def aCustomDateScalar = newScalar().name("ACustomDate").coercing(new Coercing() { @Override Object serialize(Object dataFetcherResult) { return null @@ -128,7 +126,8 @@ class SchemaTypeCheckerTest extends Specification { } return null } - }) + }).build() + def runtimeBuilder = RuntimeWiring.newRuntimeWiring() .wiringFactory(wiringFactory) .scalar(scalesScalar) @@ -140,7 +139,7 @@ class SchemaTypeCheckerTest extends Specification { for (String name : resolvingNames) { runtimeBuilder.type(TypeRuntimeWiring.newTypeWiring(name).typeResolver(resolver)) } - return new SchemaTypeChecker().checkTypeRegistry(types, runtimeBuilder.build()) + return new SchemaTypeChecker().checkTypeRegistry(types.readOnly(), runtimeBuilder.build()) } def "test missing type in object"() { @@ -400,8 +399,8 @@ class SchemaTypeCheckerTest extends Specification { result.get(0).getMessage().contains("tried to redefine field 'fieldA'") } - def "test ext type can redefine fields in their base type of the same type"() { - + def "test ext type cannot redefine fields in their base type of the same type"() { + given: def spec = """ type BaseType { @@ -418,11 +417,12 @@ class SchemaTypeCheckerTest extends Specification { } """ + when: def result = check(spec) - expect: + then: - result.isEmpty() + errorContaining(result, "BaseType' extension type [@n:n] tried to redefine field 'fieldA' [@n:n]") } def "test ext type redefines fields in their peer types"() { @@ -454,7 +454,7 @@ class SchemaTypeCheckerTest extends Specification { } def "test ext type redefines fields in their peer types of the same type is ok"() { - + given: def spec = """ type BaseType { @@ -474,11 +474,11 @@ class SchemaTypeCheckerTest extends Specification { } """ + when: def result = check(spec) - expect: - - result.isEmpty() + then: + errorContaining(result, "BaseType' extension type [@n:n] tried to redefine field 'fieldB' [@n:n]") } def "test ext type is missing the base type"() { @@ -707,6 +707,35 @@ class SchemaTypeCheckerTest extends Specification { } + def "directives on arguments are not relevant"() { + def spec = """ + directive @d on ARGUMENT_DEFINITION + interface InterfaceType { + fieldB(arg1 : String = "defaultVal", arg2 : String @d, arg3 : Int @d) : String + } + + type BaseType { + fieldX : Int + } + + extend type BaseType implements InterfaceType { + fieldB(arg1 : String = "defaultVal" @d, arg2 : String, arg3 : Int) : String + } + + schema { + query : BaseType + } + """ + + def result = check(spec) + + expect: + result.isEmpty() + + } + + + def "test field arguments on object can contain additional optional arguments"() { def spec = """ interface InterfaceType { @@ -735,6 +764,33 @@ class SchemaTypeCheckerTest extends Specification { result.isEmpty() } + def "order of interface args does not matter"() { + def spec = """ + interface InterfaceType { + fieldA(arg1 : String, arg2 : Int) : String + } + + type BaseType { + fieldX : Int + } + + extend type BaseType implements InterfaceType { + fieldA(arg2 : Int, arg1 : String) : String + } + + schema { + query : BaseType + } + """ + + def result = check(spec) + + expect: + + result.isEmpty() + } + + def "test field arguments on object cannot contain additional required arguments"() { def spec = """ interface InterfaceType { @@ -887,7 +943,7 @@ class SchemaTypeCheckerTest extends Specification { expect: !result.isEmpty() - result.size() == 4 + result.size() == 5 } def "test that field args are unique"() { @@ -944,50 +1000,13 @@ class SchemaTypeCheckerTest extends Specification { } enum EnumType { - enumA @deprecated(badName : "must be called reason"), enumB @deprecated(reason : "it must have", one : "argument value") } - # deprecation is no allowed on input field definitions and args atm, see: https://github.com/graphql-java/graphql-java/issues/1770 - """ - - def result = check(spec) - - expect: - - !result.isEmpty() - result.size() == 6 - } - - def "test that directives are valid"() { - - def spec = """ - directive @directiveA on FIELD_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION - directive @directiveOK on FIELD_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION - interface InterfaceType1 { - fieldA : String @directiveA @directiveA - } - - type Query implements InterfaceType1 { - fieldA : String - fieldC : String @directiveA @directiveA - } - - extend type Query { - fieldB : Int - fieldD: Int @directiveA @directiveA - fieldE: Int @directiveA @directiveOK - } - enum EnumType { - - enumA @directiveA @directiveA - enumB @directiveA @directiveOK - } - + # deprecation is no allowed on input field definitions and args atm, see: https://github.com/graphql-java/graphql-java/issues/1770 input InputType { - inputFieldA : String @directiveA @directiveA - inputFieldB : String @directiveA @directiveOK + inputField : String @deprecated } """ @@ -996,9 +1015,10 @@ class SchemaTypeCheckerTest extends Specification { expect: !result.isEmpty() - result.size() == 5 + result.size() == 7 } + def "test that directives args are valid"() { def spec = """ @@ -1085,7 +1105,6 @@ class SchemaTypeCheckerTest extends Specification { expect: - errorContaining(result, "The extension 'Query' type [@n:n] has redefined the directive called 'directive'") errorContaining(result, "'Query' extension type [@n:n] tried to redefine field 'fieldB' [@n:n]") errorContaining(result, "The type 'Query' [@n:n] has declared a field with a non unique name 'fieldC'") errorContaining(result, "The extension 'NonExistent' type [@n:n] is missing its base underlying type") @@ -1118,10 +1137,9 @@ class SchemaTypeCheckerTest extends Specification { expect: - result.size() == 3 + result.size() == 2 errorContaining(result, "The extension 'NonExistent' type [@n:n] is missing its base underlying type") errorContaining(result, "'InterfaceType1' extension type [@n:n] tried to redefine field 'fieldA' [@n:n]") - errorContaining(result, "The extension 'InterfaceType1' type [@n:n] has redefined the directive called 'directive'") } def "union type extensions invariants are enforced"() { @@ -1161,9 +1179,8 @@ class SchemaTypeCheckerTest extends Specification { expect: - result.size() == 4 + result.size() == 3 errorContaining(result, "The extension 'NonExistent' type [@n:n] is missing its base underlying type") - errorContaining(result, "The extension 'FooBar' type [@n:n] has redefined the directive called 'directive'") errorContaining(result, "The union member type 'Buzz' is not present when resolving type 'FooBar' [@n:n]") errorContaining(result, "The type 'FooBar' [@n:n] has declared an union member with a non unique name 'Foo'") } @@ -1202,7 +1219,6 @@ class SchemaTypeCheckerTest extends Specification { expect: errorContaining(result, "'Numb' extension type [@n:n] tried to redefine enum value 'A' [@n:n]") - errorContaining(result, "The extension 'Numb' type [@n:n] has redefined the directive called 'directive'") errorContaining(result, "The type 'Numb' [@n:n] has declared an enum value with a non unique name 'D'") errorContaining(result, "The extension 'NonExistent' type [@n:n] is missing its base underlying type") } @@ -1228,7 +1244,6 @@ class SchemaTypeCheckerTest extends Specification { expect: - errorContaining(result, "The extension 'Scales' type [@n:n] has redefined the directive called 'directive'") errorContaining(result, "The extension 'NonExistent' type [@n:n] is missing its base underlying type") } @@ -1276,7 +1291,6 @@ class SchemaTypeCheckerTest extends Specification { expect: - errorContaining(result, "The extension 'Puter' type [@n:n] has redefined the directive called 'directive'") errorContaining(result, "The type 'Puter' [@n:n] has declared an input field with a non unique name 'fieldD'") errorContaining(result, "'Puter' extension type [@n:n] tried to redefine field 'fieldE' [@n:n]") errorContaining(result, "The extension 'NonExistent' type [@n:n] is missing its base underlying type") @@ -1496,22 +1510,16 @@ class SchemaTypeCheckerTest extends Specification { where: allowedArgType | argValue | detailedMessage - "String" | 'MONDAY' | format(EXPECTED_SCALAR_MESSAGE, "EnumValue") - "String" | '{ an: "object" }' | format(EXPECTED_SCALAR_MESSAGE, "ObjectValue") - "String" | '["str", "str2"]' | format(EXPECTED_SCALAR_MESSAGE, "ArrayValue") "ACustomDate" | '"AFailingDate"' | format(NOT_A_VALID_SCALAR_LITERAL_MESSAGE, "ACustomDate") - "[String]" | '"str"' | format(EXPECTED_LIST_MESSAGE, "StringValue") - "[String]!" | '"str"' | format(EXPECTED_LIST_MESSAGE, "StringValue") + "[String]" | 123 | format(NOT_A_VALID_SCALAR_LITERAL_MESSAGE, "String") "[String!]" | '["str", null]' | format(EXPECTED_NON_NULL_MESSAGE) "[[String!]!]" | '[["str"], ["str2", null]]' | format(EXPECTED_NON_NULL_MESSAGE) + "[[String!]!]" | '[["str"], ["str2", "str3"], null]' | format(EXPECTED_NON_NULL_MESSAGE) "WEEKDAY" | '"somestr"' | format(EXPECTED_ENUM_MESSAGE, "StringValue") "WEEKDAY" | 'SATURDAY' | format(MUST_BE_VALID_ENUM_VALUE_MESSAGE, "SATURDAY", "MONDAY,TUESDAY") "UserInput" | '{ fieldNonNull: "str", fieldNonNull: "dupeKey" }' | format(DUPLICATED_KEYS_MESSAGE, "fieldNonNull") "UserInput" | '{ fieldNonNull: "str", unknown: "field" }' | format(UNKNOWN_FIELDS_MESSAGE, "unknown", "UserInput") - "UserInput" | '{ fieldNonNull: "str", fieldArray: "strInsteadOfArray" }' | format(EXPECTED_LIST_MESSAGE, "StringValue") - "UserInput" | '{ fieldNonNull: "str", fieldArrayOfArray: ["ArrayInsteadOfArrayOfArray"] }' | format(EXPECTED_LIST_MESSAGE, "StringValue") "UserInput" | '{ fieldNonNull: "str", fieldNestedInput: "strInsteadOfObject" }' | format(EXPECTED_OBJECT_MESSAGE, "StringValue") - "UserInput" | '{ fieldNonNull: "str", fieldNestedInput: { street: { s: "objectInsteadOfString" }} }' | format(EXPECTED_SCALAR_MESSAGE, "ObjectValue") "UserInput" | '{ field: "missing the `fieldNonNull` entry"}' | format(MISSING_REQUIRED_FIELD_MESSAGE, "fieldNonNull") } @@ -1560,8 +1568,11 @@ class SchemaTypeCheckerTest extends Specification { "ACustomDate" | '2002' "[String]" | '["str", null]' "[String]" | 'null' + "[String]" | '"str"' // see #2001 "[String!]!" | '["str"]' "[[String!]!]" | '[["str"], ["str2", "str3"]]' + "[[String]]" | '[["str"], ["str2", null], null]' + "[[String!]]" | '[["str"], ["str2", "str3"], null]' "WEEKDAY" | 'MONDAY' "UserInput" | '{ fieldNonNull: "str" }' "UserInput" | '{ fieldNonNull: "str", fieldString: "Hey" }' @@ -1665,4 +1676,268 @@ class SchemaTypeCheckerTest extends Specification { } + def "field in base interface type redefined in extension type should cause an error"() { + given: + def sdl = """ + type Query { hello: String } + + interface Human { + id: ID! + name: String! + } + extend interface Human { + name: String! + friends: [String] + } + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "'Human' extension type [@n:n] tried to redefine field 'name' [@n:n]") + + } + + def "field in interface extension type redefined in another extension type should cause an error"() { + given: + def sdl = """ + type Query { hello: String } + + interface Human { + id: ID! + } + + extend interface Human { + name: String! + } + + extend interface Human { + name: String! + friends: [String] + } + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "'Human' extension type [@n:n] tried to redefine field 'name' [@n:n]") + + } + + def "field in base input type redefined in extension type should cause an error"() { + given: + def sdl = """ + type Query { hello: String } + + input Human { + id: ID! + name: String! + } + extend input Human { + name: String! + friends: [String] + } + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "'Human' extension type [@n:n] tried to redefine field 'name' [@n:n]") + + } + + def "union type name must not begin with '__'"() { + given: + def sdl = """ + type Query { hello: String } + + type Bar { + id : ID! + } + + type Foo { + id : ID! + } + + union __FooBar = Bar | Foo + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "'__FooBar' must not begin with '__', which is reserved by GraphQL introspection.") + } + + def "union type must include one or more member types"() { + given: + def sdl = """ + type Query { hello: String } + + union UnionType + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "Union type 'UnionType' must include one or more member types.") + } + + def "The member types of a Union type must all be object base types"() { + given: + def sdl = """ + type Query { hello: String } + + type A { hello: String } + + interface B { hello: String } + + union UnionType = A | B + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "The member types of a Union type must all be Object base types. member type 'B' in Union 'UnionType' is invalid.") + } + + def "The member types of a Union type must be unique"() { + given: + def sdl = """ + type Query { hello: String } + + type Bar { + id : ID! + } + + union DuplicateBar = Bar | Bar + """ + + when: + def result = check(sdl) + + then: + errorContaining(result, "member type 'Bar' in Union 'DuplicateBar' is not unique. The member types of a Union type must be unique.") + } + + def "how many errors do we get on type extension field redefinition"() { + def sdl = """ + + type Query { + foo : Foo + } + + type Foo { + foo : String + } + + extend type Foo { + redefinedField : String + } + + extend type Foo { + otherField1 : String + } + + extend type Foo { + otherField2 : String + } + + extend type Foo { + redefinedField : String + } + + extend type Foo { + redefinedField : String + } + + interface InterfaceType { + foo : String + } + + extend interface InterfaceType { + redefinedInterfaceField : String + } + + extend interface InterfaceType { + otherField1 : String + } + + extend interface InterfaceType { + otherField2 : String + } + + extend interface InterfaceType { + redefinedInterfaceField : String + } + + extend interface InterfaceType { + redefinedInterfaceField : String + } + + input Bar { + bar : String + } + + extend input Bar { + redefinedInputField : String + } + + extend input Bar { + otherField1 : String + } + + extend input Bar { + otherField2 : String + } + + extend input Bar { + redefinedInputField : String + } + + extend input Bar { + redefinedInputField : String + } + + enum Baz { + baz + } + + extend enum Baz { + redefinedEnumValue + } + + extend enum Baz { + otherField1 + } + + extend enum Baz { + otherField2 + } + + extend enum Baz { + redefinedEnumValue + } + + extend enum Baz { + redefinedEnumValue + } + + """ + + when: + def result = check(sdl) + + then: + result.size() == 8 + errorContaining(result, "'Foo' extension type [@n:n] tried to redefine field 'redefinedField' [@n:n]") + errorContaining(result, "'InterfaceType' extension type [@n:n] tried to redefine field 'redefinedInterfaceField' [@n:n]") + errorContaining(result, "'Bar' extension type [@n:n] tried to redefine field 'redefinedInputField' [@n:n]") + errorContaining(result, "'Baz' extension type [@n:n] tried to redefine enum value 'redefinedEnumValue' [@n:n]") + } } diff --git a/src/test/groovy/graphql/schema/idl/SchemaTypeDirectivesCheckerTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaTypeDirectivesCheckerTest.groovy index a88bbc6822..887fe97f5c 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaTypeDirectivesCheckerTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaTypeDirectivesCheckerTest.groovy @@ -1,9 +1,14 @@ package graphql.schema.idl +import graphql.Scalars +import graphql.schema.GraphQLScalarType import graphql.schema.idl.errors.DirectiveIllegalLocationError +import graphql.schema.idl.errors.DirectiveIllegalReferenceError import graphql.schema.idl.errors.DirectiveMissingNonNullArgumentError import graphql.schema.idl.errors.DirectiveUndeclaredError import graphql.schema.idl.errors.DirectiveUnknownArgumentError +import graphql.schema.idl.errors.IllegalNameError +import graphql.schema.idl.errors.NotAnInputTypeError import spock.lang.Specification class SchemaTypeDirectivesCheckerTest extends Specification { @@ -22,6 +27,8 @@ class SchemaTypeDirectivesCheckerTest extends Specification { ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + directive @d(arg: String @testDirective) on FIELD + type ObjectType @testDirective(knownArg : "x") { field(arg1 : String @testDirective(knownArg : "x")) : String @testDirective(knownArg : "x") @@ -203,4 +210,131 @@ class SchemaTypeDirectivesCheckerTest extends Specification { errors.size() == 1 errors.each { assert it instanceof DirectiveMissingNonNullArgumentError } } + + def "directive must not reference itself"() { + given: + def spec = ''' + directive @invalidExample(arg: String @invalidExample) on ARGUMENT_DEFINITION + + type Query { + f1 : String + } + ''' + def registry = parse(spec) + def errors = [] + + when: + new SchemaTypeDirectivesChecker(registry, RuntimeWiring.newRuntimeWiring().build()).checkTypeDirectives(errors) + + then: + errors.size() == 1 + errors.get(0) instanceof DirectiveIllegalReferenceError + errors.get(0).getMessage() == "'invalidExample' must not reference itself on 'arg''[@2:39]'" + } + + def "directive must not begin with '__'"() { + given: + def spec = ''' + directive @__invalidExample on ARGUMENT_DEFINITION + + type Query { + f1 : String + } + ''' + def registry = parse(spec) + def errors = [] + + when: + new SchemaTypeDirectivesChecker(registry, RuntimeWiring.newRuntimeWiring().build()).checkTypeDirectives(errors) + + then: + errors.size() == 1 + errors.get(0) instanceof IllegalNameError + errors.get(0).getMessage() == "'__invalidExample''[@2:13]' must not begin with '__', which is reserved by GraphQL introspection." + } + + def "arguments of directive must not have a name which begins with the characters '__' "() { + given: + def spec = ''' + directive @directiveExample(__arg: String) on ARGUMENT_DEFINITION + + type Query { + f1 : String + } + ''' + def registry = parse(spec) + def errors = [] + + when: + new SchemaTypeDirectivesChecker(registry, RuntimeWiring.newRuntimeWiring().build()).checkTypeDirectives(errors) + + then: + errors.size() == 1 + errors.get(0) instanceof IllegalNameError + errors.get(0).getMessage() == "'__arg''[@2:41]' must not begin with '__', which is reserved by GraphQL introspection." + } + + def "arguments of directive is not an input type"() { + given: + def spec = ''' + type NotInputType{ + field: String + } + + directive @directiveExample(arg: NotInputType) on ARGUMENT_DEFINITION + + type Query { + f1 : String + } + ''' + def registry = parse(spec) + def errors = [] + + when: + new SchemaTypeDirectivesChecker(registry, RuntimeWiring.newRuntimeWiring().build()).checkTypeDirectives(errors) + + then: + errors.size() == 1 + errors.get(0) instanceof NotAnInputTypeError + errors.get(0).getMessage() == "The type 'NotInputType' [@2:13] is not an input type, but was used as an input type [@6:46]" + } + + def "uses runtime wiring factory for scalars"() { + given: + def spec = ''' + directive @testDirective(knownArg : ScalarType!) on OBJECT + + scalar ScalarType + + type ObjectType @testDirective(knownArg : "x") { + field : String + } + ''' + def registry = parse(spec) + def scalarType = GraphQLScalarType + .newScalar(Scalars.GraphQLString) + .name("ScalarType") + .build() + def runtimeWiring = RuntimeWiring + .newRuntimeWiring() + .wiringFactory(new WiringFactory() { + @Override + boolean providesScalar(ScalarWiringEnvironment environment) { + return environment.scalarTypeDefinition.name == scalarType.name + } + + @Override + GraphQLScalarType getScalar(ScalarWiringEnvironment environment) { + return scalarType + } + }) + .build() + def errors = [] + + when: + new SchemaTypeDirectivesChecker(registry, runtimeWiring).checkTypeDirectives(errors) + + then: + errors.size() == 0 + } } diff --git a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy new file mode 100644 index 0000000000..fe12c3a1b1 --- /dev/null +++ b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy @@ -0,0 +1,110 @@ +package graphql.schema.idl + +import graphql.TypeResolutionEnvironment +import graphql.schema.Coercing +import graphql.schema.CoercingParseLiteralException +import graphql.schema.CoercingParseValueException +import graphql.schema.CoercingSerializeException +import graphql.schema.DataFetcher +import graphql.schema.GraphQLInterfaceType +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLScalarType +import graphql.schema.GraphQLTypeUtil +import graphql.schema.GraphQLUnionType +import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher +import graphql.schema.TypeResolver + +class TestLiveMockedWiringFactory implements WiringFactory { + + private final Map scalars + + TestLiveMockedWiringFactory() { + this.scalars = new HashMap<>() + } + + TestLiveMockedWiringFactory(List scalars) { + this.scalars = new HashMap<>() + scalars.forEach({ scalar -> this.scalars.put(scalar.getName(), scalar) }) + } + + @Override + boolean providesTypeResolver(InterfaceWiringEnvironment environment) { + return true + } + + @Override + TypeResolver getTypeResolver(InterfaceWiringEnvironment environment) { + new TypeResolver() { + @Override + GraphQLObjectType getType(TypeResolutionEnvironment env) { + def fieldType = GraphQLTypeUtil.unwrapAll(env.getFieldType()) + env.getSchema().getImplementations((GraphQLInterfaceType) fieldType).get(0) + } + } + } + + @Override + boolean providesTypeResolver(UnionWiringEnvironment environment) { + return true + } + + @Override + TypeResolver getTypeResolver(UnionWiringEnvironment environment) { + new TypeResolver() { + @Override + GraphQLObjectType getType(TypeResolutionEnvironment env) { + def fieldType = GraphQLTypeUtil.unwrapAll(env.getFieldType()) + GraphQLObjectType graphQLObjectType + def unionFirstType = ((GraphQLUnionType) fieldType).getTypes().get(0) + if (unionFirstType instanceof GraphQLInterfaceType) { + graphQLObjectType = env.getSchema().getImplementations((GraphQLInterfaceType) unionFirstType).get(0) + } else { + graphQLObjectType = unionFirstType as GraphQLObjectType + } + return graphQLObjectType + } + } + } + + + @Override + boolean providesDataFetcher(FieldWiringEnvironment environment) { + return true + } + + @Override + DataFetcher getDataFetcher(FieldWiringEnvironment environment) { + return SingletonPropertyDataFetcher.singleton() + } + + @Override + boolean providesScalar(ScalarWiringEnvironment environment) { + if (ScalarInfo.isGraphqlSpecifiedScalar(environment.getScalarTypeDefinition().getName())) { + return false + } + return true + } + + @Override + GraphQLScalarType getScalar(ScalarWiringEnvironment environment) { + + String scalarName = environment.getScalarTypeDefinition().getName() + return scalars.computeIfAbsent(scalarName, name -> GraphQLScalarType.newScalar().name(name).coercing(new Coercing() { + @Override + Object serialize(Object dataFetcherResult) throws CoercingSerializeException { + throw new UnsupportedOperationException("Not implemented...this is only a mocked scalar") + } + + @Override + Object parseValue(Object input) throws CoercingParseValueException { + throw new UnsupportedOperationException("Not implemented...this is only a mocked scalar") + } + + @Override + Object parseLiteral(Object input) throws CoercingParseLiteralException { + throw new UnsupportedOperationException("Not implemented...this is only a mocked scalar") + } + }).build()) + } +} diff --git a/src/test/groovy/graphql/schema/idl/MockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy similarity index 90% rename from src/test/groovy/graphql/schema/idl/MockedWiringFactory.groovy rename to src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy index 62ef813a7a..827fadafbb 100644 --- a/src/test/groovy/graphql/schema/idl/MockedWiringFactory.groovy +++ b/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy @@ -11,7 +11,11 @@ import graphql.schema.GraphQLScalarType import graphql.schema.PropertyDataFetcher import graphql.schema.TypeResolver -class MockedWiringFactory implements WiringFactory { +/** + * There is a {@link MockedWiringFactory} in the main code base now but this one is retained + * for testing purposes. + */ +class TestMockedWiringFactory implements WiringFactory { @Override boolean providesTypeResolver(InterfaceWiringEnvironment environment) { @@ -45,12 +49,8 @@ class MockedWiringFactory implements WiringFactory { @Override boolean providesDataFetcher(FieldWiringEnvironment environment) { - return true - } - - @Override - DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()) + // rely on defaulting in code registry + return false } @Override diff --git a/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy b/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy index e3c0238217..0ebd6dc882 100644 --- a/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy @@ -1,6 +1,5 @@ package graphql.schema.idl - import graphql.language.DirectiveDefinition import graphql.language.EnumTypeDefinition import graphql.language.EnumTypeExtensionDefinition @@ -16,20 +15,26 @@ import graphql.language.ScalarTypeDefinition import graphql.language.ScalarTypeExtensionDefinition import graphql.language.SchemaDefinition import graphql.language.Type +import graphql.language.TypeDefinition import graphql.language.TypeName import graphql.language.UnionTypeDefinition import graphql.language.UnionTypeExtensionDefinition +import graphql.parser.MultiSourceReader +import graphql.schema.GraphQLTypeUtil import graphql.schema.idl.errors.SchemaProblem import graphql.schema.idl.errors.SchemaRedefinitionError import spock.lang.Specification import spock.lang.Unroll +import java.util.stream.Collectors + class TypeDefinitionRegistryTest extends Specification { - TypeDefinitionRegistry parse(String spec) { + static TypeDefinitionRegistry parse(String spec) { new SchemaParser().parse(spec) } + def "test default scalars are locked in"() { def registry = new TypeDefinitionRegistry() @@ -325,6 +330,18 @@ class TypeDefinitionRegistryTest extends Specification { !registry.isInterfaceOrUnion(type("Scalar")) } + def "test object type or interface detection"() { + + when: + def registry = parse(commonSpec) + + then: + registry.isObjectTypeOrInterface(type("Type")) + registry.isObjectTypeOrInterface(type("Interface")) + !registry.isObjectTypeOrInterface(type("Union")) + !registry.isObjectTypeOrInterface(type("Scalar")) + } + def "test object type detection"() { when: @@ -358,7 +375,7 @@ class TypeDefinitionRegistryTest extends Specification { } - def "test can get implements of interface"() { + def "test can get implements of interface #typeOfReg"() { def spec = ''' interface Interface { name : String @@ -379,14 +396,30 @@ class TypeDefinitionRegistryTest extends Specification { type Type4 implements NotThatInterface { name : String } + + interface Type5 implements Interface { + name : String + } + + interface Type6 implements NotThatInterface { + name : String + } ''' when: def registry = parse(spec) - def interfaceDef = registry.getType("Interface", InterfaceTypeDefinition.class).get() - def objectTypeDefinitions = registry.getImplementationsOf(interfaceDef) - def names = objectTypeDefinitions.collect { it.getName() } + if (typeOfReg == "immutable") { + registry = registry.readOnly() + } + def interfaceDef = registry.getTypeOrNull("Interface", InterfaceTypeDefinition.class) + def implementingTypeDefinitions = registry.getAllImplementationsOf(interfaceDef) + def names = implementingTypeDefinitions.collect { it.getName() } then: - names == ["Type1", "Type2", "Type3"] + names == ["Type1", "Type2", "Type3", "Type5"] + + where: + typeOfReg | _ + "mutable" | _ + "immutable" | _ } def animalia = ''' @@ -397,38 +430,58 @@ class TypeDefinitionRegistryTest extends Specification { interface Mammal { id: String! + mother: Mammal! + offspring: [Mammal!]! } interface Reptile { id: String! } - type Dog implements Animal, Mammal { + interface Canine implements Animal & Mammal { id: String! + mother: Canine! + offspring: [Canine!]! } - type Duck implements Animal, Mammal { + type Dog implements Animal & Mammal & Canine { id: String! + mother: Dog! + offspring: [Dog!]! } - + + type Duck implements Animal { + id: String! + } + union Platypus = Duck | Turtle - type Cat implements Animal, Mammal { + type Cat implements Animal & Mammal { id: String! + mother: Cat! + offspring: [Cat!]! } - type Turtle implements Animal, Reptile { + type Turtle implements Animal & Reptile { id: String! } ''' - def "test possible type detection"() { + def "test possible type detection #typeOfReg"() { + given: + TypeDefinitionRegistry mutableReg = parse(animalia) + ImmutableTypeDefinitionRegistry immutableReg = mutableReg.readOnly() + when: - def registry = parse(animalia) + def registry = mutableReg + if (typeOfReg == "immutable") { + registry = immutableReg + } then: + registry.isPossibleType(type("Mammal"), type("Canine")) registry.isPossibleType(type("Mammal"), type("Dog")) registry.isPossibleType(type("Mammal"), type("Cat")) !registry.isPossibleType(type("Mammal"), type("Turtle")) @@ -437,6 +490,7 @@ class TypeDefinitionRegistryTest extends Specification { !registry.isPossibleType(type("Reptile"), type("Cat")) registry.isPossibleType(type("Reptile"), type("Turtle")) + registry.isPossibleType(type("Animal"), type("Canine")) registry.isPossibleType(type("Animal"), type("Dog")) registry.isPossibleType(type("Animal"), type("Cat")) registry.isPossibleType(type("Animal"), type("Turtle")) @@ -446,16 +500,28 @@ class TypeDefinitionRegistryTest extends Specification { !registry.isPossibleType(type("Platypus"), type("Dog")) !registry.isPossibleType(type("Platypus"), type("Cat")) + where: + typeOfReg | _ + "mutable" | _ + "immutable" | _ } - def "isSubTypeOf detection"() { + def "isSubTypeOf detection #typeOfReg"() { when: def registry = parse(animalia) + if (typeOfReg == "immutable") { + registry = registry.readOnly() + } then: registry.isSubTypeOf(type("Mammal"), type("Mammal")) + registry.isSubTypeOf(type("Canine"), type("Animal")) + registry.isSubTypeOf(type("Canine"), type("Mammal")) + registry.isSubTypeOf(type("Canine"), type("Canine")) + registry.isSubTypeOf(type("Dog"), type("Animal")) registry.isSubTypeOf(type("Dog"), type("Mammal")) + registry.isSubTypeOf(type("Dog"), type("Canine")) registry.isSubTypeOf(type("Turtle"), type("Animal")) !registry.isSubTypeOf(type("Turtle"), type("Mammal")) @@ -465,11 +531,19 @@ class TypeDefinitionRegistryTest extends Specification { registry.isSubTypeOf(listType("Mammal"), listType("Mammal")) !registry.isSubTypeOf(listType("Mammal"), type("Mammal")) // but not if they aren't both lists + registry.isSubTypeOf(listType("Canine"), listType("Mammal")) + registry.isSubTypeOf(listType("Canine"), listType("Animal")) // unwraps all the way down registry.isSubTypeOf(listType(nonNullType(listType(type("Dog")))), listType(nonNullType(listType(type("Mammal"))))) + registry.isSubTypeOf(listType(nonNullType(listType(type("Canine")))), listType(nonNullType(listType(type("Mammal"))))) !registry.isSubTypeOf(listType(nonNullType(listType(type("Turtle")))), listType(nonNullType(listType(type("Mammal"))))) + + where: + typeOfReg | _ + "mutable" | _ + "immutable" | _ } @Unroll @@ -480,7 +554,7 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(definition) then: - !registry.getType(definition.getName()).isPresent() + registry.getTypeOrNull(definition.getName()) == null where: definition | _ @@ -492,7 +566,7 @@ class TypeDefinitionRegistryTest extends Specification { InputObjectTypeDefinition.newInputObjectDefinition().name("foo").build() | _ } - def "remove directive definition"() { + def "remove single directive definition from list"() { given: DirectiveDefinition definition = DirectiveDefinition.newDirectiveDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -503,8 +577,47 @@ class TypeDefinitionRegistryTest extends Specification { !registry.getDirectiveDefinition(definition.getName()).isPresent() } + def "remove multiple directive definition from list"() { + given: + DirectiveDefinition definition1 = DirectiveDefinition.newDirectiveDefinition().name("foo").build() + DirectiveDefinition definition2 = DirectiveDefinition.newDirectiveDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(definition1) + registry.add(definition2) + when: + registry.remove(definition1) + then: + !registry.getDirectiveDefinition(definition1.getName()).isPresent() + registry.getDirectiveDefinition(definition2.getName()).isPresent() + } + + def "remove single directive definition from map"() { + given: + DirectiveDefinition definition = DirectiveDefinition.newDirectiveDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(definition) + when: + registry.remove(definition.getName(), definition) + then: + !registry.getDirectiveDefinition(definition.getName()).isPresent() + } + + def "remove multiple directive definition from map"() { + given: + DirectiveDefinition definition1 = DirectiveDefinition.newDirectiveDefinition().name("foo").build() + DirectiveDefinition definition2 = DirectiveDefinition.newDirectiveDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(definition1) + registry.add(definition2) + when: + registry.remove(definition1.getName(), definition1) + then: + !registry.getDirectiveDefinition(definition1.getName()).isPresent() + registry.getDirectiveDefinition(definition2.getName()).isPresent() + } + - def "remove object type extension"() { + def "remove single object type extension from list"() { given: def extension = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -512,10 +625,51 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(extension) then: - !registry.objectTypeExtensions().get(extension.getName()).contains(extension) + !registry.objectTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple object type extension from list"() { + given: + def extension1 = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("foo").build() + def extension2 = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1) + then: + !registry.objectTypeExtensions().containsKey(extension1.getName()) + registry.objectTypeExtensions().containsKey(extension2.getName()) + registry.objectTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single object type extension from map"() { + given: + def extension = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension) + when: + registry.remove(extension.getName(), extension) + then: + !registry.objectTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple object type extension from map"() { + given: + def extension1 = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("foo").build() + def extension2 = ObjectTypeExtensionDefinition.newObjectTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1.getName(), extension1) + then: + !registry.objectTypeExtensions().containsKey(extension1.getName()) + registry.objectTypeExtensions().containsKey(extension2.getName()) + registry.objectTypeExtensions().get(extension2.getName()).contains(extension2) } - def "remove interface type extension"() { + def "remove single interface type extension from list"() { given: def extension = InterfaceTypeExtensionDefinition.newInterfaceTypeExtensionDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -523,10 +677,51 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(extension) then: - !registry.interfaceTypeExtensions().get(extension.getName()).contains(extension) + !registry.interfaceTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple interface type extension from list"() { + given: + def extension1 = InterfaceTypeExtensionDefinition.newInterfaceTypeExtensionDefinition().name("foo").build() + def extension2 = InterfaceTypeExtensionDefinition.newInterfaceTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1) + then: + !registry.interfaceTypeExtensions().containsKey(extension1.getName()) + registry.interfaceTypeExtensions().containsKey(extension2.getName()) + registry.interfaceTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single interface type extension from map"() { + given: + def extension = InterfaceTypeExtensionDefinition.newInterfaceTypeExtensionDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension) + when: + registry.remove(extension.getName(), extension) + then: + !registry.interfaceTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple interface type extension from map"() { + given: + def extension1 = InterfaceTypeExtensionDefinition.newInterfaceTypeExtensionDefinition().name("foo").build() + def extension2 = InterfaceTypeExtensionDefinition.newInterfaceTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1.getName(), extension1) + then: + !registry.interfaceTypeExtensions().containsKey(extension1.getName()) + registry.interfaceTypeExtensions().containsKey(extension2.getName()) + registry.interfaceTypeExtensions().get(extension2.getName()).contains(extension2) } - def "remove union type extension"() { + def "remove single union type extension from list"() { given: def extension = UnionTypeExtensionDefinition.newUnionTypeExtensionDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -534,10 +729,51 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(extension) then: - !registry.unionTypeExtensions().get(extension.getName()).contains(extension) + !registry.unionTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple union type extension from list"() { + given: + def extension1 = UnionTypeExtensionDefinition.newUnionTypeExtensionDefinition().name("foo").build() + def extension2 = UnionTypeExtensionDefinition.newUnionTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1) + then: + !registry.unionTypeExtensions().containsKey(extension1.getName()) + registry.unionTypeExtensions().containsKey(extension2.getName()) + registry.unionTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single union type extension from map"() { + given: + def extension = UnionTypeExtensionDefinition.newUnionTypeExtensionDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension) + when: + registry.remove(extension.getName(), extension) + then: + !registry.unionTypeExtensions().containsKey(extension.getName()) } - def "remove enum type extension"() { + def "remove multiple union type extension from map"() { + given: + def extension1 = UnionTypeExtensionDefinition.newUnionTypeExtensionDefinition().name("foo").build() + def extension2 = UnionTypeExtensionDefinition.newUnionTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1.getName(), extension1) + then: + !registry.unionTypeExtensions().containsKey(extension1.getName()) + registry.unionTypeExtensions().containsKey(extension2.getName()) + registry.unionTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single enum type extension from list"() { given: def extension = EnumTypeExtensionDefinition.newEnumTypeExtensionDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -545,10 +781,51 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(extension) then: - !registry.enumTypeExtensions().get(extension.getName()).contains(extension) + !registry.enumTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple enum type extension from list"() { + given: + def extension1 = EnumTypeExtensionDefinition.newEnumTypeExtensionDefinition().name("foo").build() + def extension2 = EnumTypeExtensionDefinition.newEnumTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1) + then: + !registry.enumTypeExtensions().containsKey(extension1.getName()) + registry.enumTypeExtensions().containsKey(extension2.getName()) + registry.enumTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single enum type extension from map"() { + given: + def extension = EnumTypeExtensionDefinition.newEnumTypeExtensionDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension) + when: + registry.remove(extension.getName(), extension) + then: + !registry.enumTypeExtensions().containsKey(extension.getName()) } - def "remove scalar type extension"() { + def "remove multiple enum type extension from map"() { + given: + def extension1 = EnumTypeExtensionDefinition.newEnumTypeExtensionDefinition().name("foo").build() + def extension2 = EnumTypeExtensionDefinition.newEnumTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1.getName(), extension1) + then: + !registry.enumTypeExtensions().containsKey(extension1.getName()) + registry.enumTypeExtensions().containsKey(extension2.getName()) + registry.enumTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single scalar type extension from list"() { given: def extension = ScalarTypeExtensionDefinition.newScalarTypeExtensionDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -556,10 +833,51 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(extension) then: - !registry.scalarTypeExtensions().get(extension.getName()).contains(extension) + !registry.scalarTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple scalar type extension from list"() { + given: + def extension1 = ScalarTypeExtensionDefinition.newScalarTypeExtensionDefinition().name("foo").build() + def extension2 = ScalarTypeExtensionDefinition.newScalarTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1) + then: + !registry.scalarTypeExtensions().containsKey(extension1.getName()) + registry.scalarTypeExtensions().containsKey(extension2.getName()) + registry.scalarTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single scalar type extension from map"() { + given: + def extension = ScalarTypeExtensionDefinition.newScalarTypeExtensionDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension) + when: + registry.remove(extension.getName(), extension) + then: + !registry.scalarTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple scalar type extension from map"() { + given: + def extension1 = ScalarTypeExtensionDefinition.newScalarTypeExtensionDefinition().name("foo").build() + def extension2 = ScalarTypeExtensionDefinition.newScalarTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1.getName(), extension1) + then: + !registry.scalarTypeExtensions().containsKey(extension1.getName()) + registry.scalarTypeExtensions().containsKey(extension2.getName()) + registry.scalarTypeExtensions().get(extension2.getName()).contains(extension2) } - def "remove input object type extension"() { + def "remove single input object type extension from list"() { given: def extension = InputObjectTypeExtensionDefinition.newInputObjectTypeExtensionDefinition().name("foo").build() def registry = new TypeDefinitionRegistry() @@ -567,7 +885,48 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(extension) then: - !registry.inputObjectTypeExtensions().get(extension.getName()).contains(extension) + !registry.inputObjectTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple input object type extension from list"() { + given: + def extension1 = InputObjectTypeExtensionDefinition.newInputObjectTypeExtensionDefinition().name("foo").build() + def extension2 = InputObjectTypeExtensionDefinition.newInputObjectTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1) + then: + !registry.inputObjectTypeExtensions().containsKey(extension1.getName()) + registry.inputObjectTypeExtensions().containsKey(extension2.getName()) + registry.inputObjectTypeExtensions().get(extension2.getName()).contains(extension2) + } + + def "remove single input object type extension from map"() { + given: + def extension = InputObjectTypeExtensionDefinition.newInputObjectTypeExtensionDefinition().name("foo").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension) + when: + registry.remove(extension.getName(), extension) + then: + !registry.inputObjectTypeExtensions().containsKey(extension.getName()) + } + + def "remove multiple input object type extension from map"() { + given: + def extension1 = InputObjectTypeExtensionDefinition.newInputObjectTypeExtensionDefinition().name("foo").build() + def extension2 = InputObjectTypeExtensionDefinition.newInputObjectTypeExtensionDefinition().name("bar").build() + def registry = new TypeDefinitionRegistry() + registry.add(extension1) + registry.add(extension2) + when: + registry.remove(extension1.getName(), extension1) + then: + !registry.inputObjectTypeExtensions().containsKey(extension1.getName()) + registry.inputObjectTypeExtensions().containsKey(extension2.getName()) + registry.inputObjectTypeExtensions().get(extension2.getName()).contains(extension2) } def "remove schema definition"() { @@ -588,8 +947,8 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.addAll(Arrays.asList(obj1, obj2)) then: - registry.getType("foo").isPresent() - registry.getType("bar").isPresent() + registry.getTypeOrNull("foo") != null + registry.getTypeOrNull("bar") != null } def "addAll will return an error on the first abd thing"() { @@ -604,4 +963,276 @@ class TypeDefinitionRegistryTest extends Specification { error.isPresent() error.get().getMessage().contains("tried to redefine existing 'bar' type") } + + def "can be serialized and hence cacheable"() { + def sdl = ''' + "the schema" + schema { + query : Q + } + + "the query type" + type Q { + field( arg : String! = "default") : FieldType @deprecated(reason : "no good") + } + + interface FieldType { + f : UnionType + } + + type FieldTypeImpl implements FieldType { + f : UnionType + } + + union UnionType = Foo | Bar + + type Foo { + foo : String + } + + type Bar { + bar : String + } + ''' + def registryOut = new SchemaParser().parse(sdl) + + when: + + TypeDefinitionRegistry registryIn = serialise(registryOut) + + then: + TypeDefinition typeIn = registryIn.getTypeOrNull(typeName) + TypeDefinition typeOut = registryOut.getTypeOrNull(typeName) + typeIn.isEqualTo(typeOut) + + where: + typeName | _ + "Q" | _ + "FieldType" | _ + "FieldTypeImpl" | _ + "UnionType" | _ + "Foo" | _ + "Bar" | _ + } + + def "can maintain parsed order"() { + def sdl = ''' + "the schema" + schema { + query : Q + } + + "the query type" + type Q { + field( arg : String! = "default") : FieldType @deprecated(reason : "no good") + } + + interface FieldType { + f : UnionType + } + + type FieldTypeImpl implements FieldType { + f : UnionType + } + + union UnionType = Foo | Bar + + type Foo { + foo : String + } + + type Bar { + bar : String + } + + scalar FooScalar + + directive @FooDirective on FIELD_DEFINITION + ''' + + when: + def registry = new SchemaParser().parse(sdl) + def parseOrder = registry.getParseOrder() + def defListInOrder = parseOrder.getInOrder().get("") + def defListInNameOrder = parseOrder.getInNameOrder().get("") + def listOfNames = defListInNameOrder.collect({ d -> d.getName() }) + + then: + + defListInOrder.size() == 9 + + defListInOrder[0] instanceof SchemaDefinition + defListInOrder[1] instanceof ObjectTypeDefinition + defListInOrder[2] instanceof InterfaceTypeDefinition + + defListInOrder[8] instanceof DirectiveDefinition + + listOfNames == ["Q", "FieldType", "FieldTypeImpl", "UnionType", + "Foo", "Bar", "FooScalar", "FooDirective"] + + when: "We merge in a new type registry, they are added to the end" + def extraSDL = ''' + type Extra { + s : String + } + + interface ExtraInterface { + s : String + } + ''' + + def extraRegistry = new SchemaParser().parse(extraSDL) + registry.merge(extraRegistry) + + parseOrder = registry.getParseOrder() + defListInOrder = parseOrder.getInOrder().get("") + defListInNameOrder = parseOrder.getInNameOrder().get("") + listOfNames = defListInNameOrder.collect({ d -> d.getName() }) + + then: + + defListInOrder.size() == 11 + + defListInOrder[0] instanceof SchemaDefinition + defListInOrder[1] instanceof ObjectTypeDefinition + defListInOrder[2] instanceof InterfaceTypeDefinition + + defListInOrder[9] instanceof ObjectTypeDefinition + defListInOrder[10] instanceof InterfaceTypeDefinition + + listOfNames == ["Q", "FieldType", "FieldTypeImpl", "UnionType", + "Foo", "Bar", "FooScalar", "FooDirective", "Extra", "ExtraInterface"] + } + + def "multi source reader works"() { + + def sdl1 = ''' + type Query { + f : IType + } + + scalar FooScalar + ''' + + def sdl2 = ''' + interface IType { + q : FooScalar + } + + type QType { + q : FooScalar + } + ''' + + def sdl3 = ''' + directive @FooDirective on FIELD_DEFINITION + ''' + + def multiSourceReader = MultiSourceReader.newMultiSourceReader() + .string(sdl1, "source1") + .string(sdl2, "source2") + .string(sdl3, null) + .build() + + when: + def registry = new SchemaParser().parse(multiSourceReader) + def parseOrder = registry.getParseOrder() + def inNameOrderMap = parseOrder.getInNameOrder() + + then: + inNameOrderMap.size() == 3 + inNameOrderMap["source1"].collect({ it.getName() }) + == ["Query", "FooScalar"] + inNameOrderMap["source2"].collect({ it.getName() }) + == ["IType", "QType"] + inNameOrderMap[""].collect({ it.getName() }) + == ["FooDirective"] + + } + + def "can created a runtime type comparator"() { + def sdl1 = ''' + type Query { + f : QType @FooDirective + } + + input BInput { + b : String + } + + input AInput { + a : String + } + + scalar FooScalar + ''' + + def sdl2 = ''' + type QType { + c : String + b : ID + a : FooScalar + } + + type XType { + x : String + z : ID + y : FooScalar + } + + ''' + + def sdl3 = ''' + type AType { + y : FooScalar + x : String + z : ID + } + + directive @FooDirective on FIELD_DEFINITION + ''' + + def multiSourceReader = MultiSourceReader.newMultiSourceReader() + .string(sdl1, "source1") + .string(sdl2, "source2") + .string(sdl3, null) + .build() + + when: + def registry = new SchemaParser().parse(multiSourceReader) + def parseOrder = registry.getParseOrder() + def schema = new SchemaGenerator().makeExecutableSchema(registry, RuntimeWiring.MOCKED_WIRING) + + + def schemaElements = schema.getAllElementsAsList().stream() + .filter(GraphQLTypeUtil.isSystemElement().negate()) + .collect(Collectors.toList()) + + schemaElements.sort(parseOrder.getElementComparator()) + + then: + schemaElements.collect({ it.name }) == + ["Query", + "BInput", + "AInput", + "FooScalar", + "QType", + "XType", + "AType", + "FooDirective", + ] + + } + + static TypeDefinitionRegistry serialise(TypeDefinitionRegistry registryOut) { + ByteArrayOutputStream baOS = new ByteArrayOutputStream() + ObjectOutputStream oos = new ObjectOutputStream(baOS) + + oos.writeObject(registryOut) + + ByteArrayInputStream baIS = new ByteArrayInputStream(baOS.toByteArray()) + ObjectInputStream ois = new ObjectInputStream(baIS) + + ois.readObject() as TypeDefinitionRegistry + } } diff --git a/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy b/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy index 92ec7b1b8c..556755e436 100644 --- a/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy +++ b/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy @@ -136,4 +136,22 @@ class TypeInfoTest extends Specification { "[named!]!" | "[newName!]!" "[[named!]!]" | "[[newName!]!]" } + + @Unroll + def "test getTypeName gets to the inner type"() { + + expect: + Type actualType = TestUtil.parseType(actual) + def typeName = TypeInfo.getTypeName(actualType) + typeName.getName() == expected + + where: + actual | expected + "named" | "named" + "named!" | "named" + "[named]" | "named" + "[named!]" | "named" + "[named!]!" | "named" + "[[named!]!]" | "named" + } } diff --git a/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy new file mode 100644 index 0000000000..006258cdb3 --- /dev/null +++ b/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy @@ -0,0 +1,85 @@ +package graphql.schema.idl + +import graphql.schema.DataFetcher +import graphql.schema.idl.errors.StrictModeWiringException +import spock.lang.Specification + +class TypeRuntimeWiringTest extends Specification { + + void setup() { + TypeRuntimeWiring.setStrictModeJvmWide(true) + } + + void cleanup() { + TypeRuntimeWiring.setStrictModeJvmWide(true) + } + + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "y" + + def "strict mode is on by default"() { + when: + TypeRuntimeWiring.newTypeWiring("Foo") + .dataFetcher("foo", DF1) + .dataFetcher("foo", DF2) + .build() + then: + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" + } + + def "strict mode can be turned off"() { + when: + def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + .strictMode(false) + .dataFetcher("foo", DF1) + .dataFetcher("foo", DF2) + .build() + then: + typeRuntimeWiring.getFieldDataFetchers().get("foo") == DF2 + } + + def "strict mode, on by default, works for maps of fields"() { + when: + TypeRuntimeWiring.newTypeWiring("Foo") + .dataFetcher("foo", DF1) + .dataFetchers(["foo": DF2]) + .build() + then: + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" + } + + def "strict mode can be turned off and on JVM wide"() { + when: + def inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() + then: + inStrictMode + + when: + TypeRuntimeWiring.setStrictModeJvmWide(false) + inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() + + TypeRuntimeWiring.newTypeWiring("Foo") + .dataFetcher("foo", DF1) + .dataFetcher("foo", DF2) + .build() + then: + !inStrictMode + noExceptionThrown() + + when: + TypeRuntimeWiring.setStrictModeJvmWide(true) + inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() + + TypeRuntimeWiring.newTypeWiring("Foo") + .dataFetcher("foo", DF1) + .dataFetcher("foo", DF2) + .build() + + then: + inStrictMode + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" + } +} diff --git a/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy b/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy index 1ef0695fb6..70c96fc7da 100644 --- a/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy +++ b/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy @@ -1,6 +1,6 @@ package graphql.schema.idl -import graphql.Scalars + import graphql.TestUtil import graphql.TypeResolutionEnvironment import graphql.schema.Coercing @@ -53,12 +53,12 @@ class WiringFactoryTest extends Specification { @Override boolean providesScalar(ScalarWiringEnvironment environment) { - return name == environment.getInterfaceTypeDefinition().getName() + return name == environment.getScalarTypeDefinition().getName() } @Override GraphQLScalarType getScalar(ScalarWiringEnvironment environment) { - return new GraphQLScalarType(name, "Custom scalar", new Coercing() { + return GraphQLScalarType.newScalar().name(name).description("Custom scalar").coercing(new Coercing() { @Override Object serialize(Object input) { throw new UnsupportedOperationException("Not implemented") @@ -74,6 +74,7 @@ class WiringFactoryTest extends Specification { throw new UnsupportedOperationException("Not implemented") } }) + .build() } @Override @@ -125,6 +126,30 @@ class WiringFactoryTest extends Specification { } } + class NamedDefaultDataFetcherWiringFactory implements WiringFactory { + def fields = [] + + @Override + boolean providesDataFetcher(FieldWiringEnvironment environment) { + if (environment.getFieldDefinition().getName() == "name") { + return true + } + return false + } + + @Override + DataFetcher getDataFetcher(FieldWiringEnvironment environment) { + new PropertyDataFetcher("name") + } + + @Override + DataFetcher getDefaultDataFetcher(FieldWiringEnvironment environment) { + def name = environment.getFieldDefinition().getName() + fields.add(name) + new PropertyDataFetcher(name) + } + } + def "ensure that wiring factory is called to resolve and create data fetchers"() { @@ -161,21 +186,27 @@ class WiringFactoryTest extends Specification { appearsIn: [Episode]! homePlanet: String cyborg: Cyborg - } + } + + type Other implements Character { + name: String! + fetchedByDefaultDataFetcher: String! + } """ - + WiringFactory defaultDataFetcherWiringFactory = new NamedDefaultDataFetcherWiringFactory() def combinedWiringFactory = new CombinedWiringFactory([ new NamedWiringFactory("Character"), new NamedWiringFactory("Cyborg"), new NamedWiringFactory("Long"), new NamedDataFetcherFactoryWiringFactory("cyborg"), - new NamedWiringFactory("friends")]) + new NamedWiringFactory("friends"), + defaultDataFetcherWiringFactory + ]) def wiring = RuntimeWiring.newRuntimeWiring() .wiringFactory(combinedWiringFactory) - .scalar(Scalars.GraphQLLong) .build() def schema = TestUtil.schema(spec, wiring) @@ -203,6 +234,9 @@ class WiringFactoryTest extends Specification { GraphQLScalarType longScalar = schema.getType("Long") as GraphQLScalarType longScalar.name == "Long" + + defaultDataFetcherWiringFactory.fields.contains("fetchedByDefaultDataFetcher") + } def "ensure field wiring environment makes sense"() { @@ -225,7 +259,7 @@ class WiringFactoryTest extends Specification { boolean providesDataFetcher(FieldWiringEnvironment environment) { assert ["id", "name", "homePlanet"].contains(environment.fieldDefinition.name) assert environment.parentType.name == "Human" - assert environment.registry.getType("Human").isPresent() + assert environment.registry.getTypeOrNull("Human") != null return true } @@ -233,7 +267,7 @@ class WiringFactoryTest extends Specification { DataFetcher getDataFetcher(FieldWiringEnvironment environment) { assert ["id", "name", "homePlanet"].contains(environment.fieldDefinition.name) assert environment.parentType.name == "Human" - assert environment.registry.getType("Human").isPresent() + assert environment.registry.getTypeOrNull("Human") != null new PropertyDataFetcher(environment.fieldDefinition.name) } } @@ -259,30 +293,7 @@ class WiringFactoryTest extends Specification { } """ - - def fields = [] - - def wiringFactory = new WiringFactory() { - @Override - boolean providesDataFetcher(FieldWiringEnvironment environment) { - if (environment.getFieldDefinition().getName() == "name") { - return true - } - return false - } - - @Override - DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - new PropertyDataFetcher("name") - } - - @Override - DataFetcher getDefaultDataFetcher(FieldWiringEnvironment environment) { - def name = environment.getFieldDefinition().getName() - fields.add(name) - new PropertyDataFetcher(name) - } - } + def wiringFactory = new NamedDefaultDataFetcherWiringFactory() def wiring = RuntimeWiring.newRuntimeWiring() .wiringFactory(wiringFactory) .build() @@ -291,45 +302,7 @@ class WiringFactoryTest extends Specification { expect: - fields == ["id", "homePlanet"] - } - - def "@fetch directive is respected by default data fetcher wiring"() { - def spec = """ - - directive @fetch(from : String!) on FIELD_DEFINITION - - type Query { - name : String, - homePlanet: String @fetch(from : "planetOfBirth") - } - """ - - def wiringFactory = new WiringFactory() { - } - def wiring = RuntimeWiring.newRuntimeWiring() - .wiringFactory(wiringFactory) - .build() - - def schema = TestUtil.schema(spec, wiring) - - GraphQLObjectType type = schema.getType("Query") as GraphQLObjectType - - expect: - def fetcher = schema.getCodeRegistry().getDataFetcher(type, type.getFieldDefinition("homePlanet")) - fetcher instanceof PropertyDataFetcher - - PropertyDataFetcher propertyDataFetcher = fetcher as PropertyDataFetcher - propertyDataFetcher.getPropertyName() == "planetOfBirth" - // - // no directive - plain name - // - def fetcher2 = type.getFieldDefinition("name").getDataFetcher() - fetcher2 instanceof PropertyDataFetcher - - PropertyDataFetcher propertyDataFetcher2 = fetcher2 as PropertyDataFetcher - propertyDataFetcher2.getPropertyName() == "name" - + wiringFactory.fields == ["id", "homePlanet"] } def "Name"() { diff --git a/src/test/groovy/graphql/schema/SchemaUtilTest.groovy b/src/test/groovy/graphql/schema/impl/SchemaUtilTest.groovy similarity index 78% rename from src/test/groovy/graphql/schema/SchemaUtilTest.groovy rename to src/test/groovy/graphql/schema/impl/SchemaUtilTest.groovy index 002fc63fbc..a36dfaf924 100644 --- a/src/test/groovy/graphql/schema/SchemaUtilTest.groovy +++ b/src/test/groovy/graphql/schema/impl/SchemaUtilTest.groovy @@ -1,9 +1,17 @@ -package graphql.schema +package graphql.schema.impl import graphql.AssertException import graphql.DirectivesUtil import graphql.NestedInputSchema import graphql.introspection.Introspection +import graphql.schema.GraphQLAppliedDirectiveArgument +import graphql.schema.GraphQLArgument +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLInputObjectType +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLType +import graphql.schema.GraphQLTypeReference +import graphql.schema.GraphQLUnionType import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -35,13 +43,16 @@ import static graphql.schema.GraphQLInputObjectField.newInputObjectField import static graphql.schema.GraphQLInputObjectType.newInputObject import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema import static graphql.schema.GraphQLTypeReference.typeRef class SchemaUtilTest extends Specification { def "collectAllTypes"() { when: - Map types = new SchemaUtil().allTypes(starWarsSchema, Collections.emptySet(), false) + def collectingVisitor = new GraphQLTypeCollectingVisitor() + SchemaUtil.visitPartiallySchema(starWarsSchema, collectingVisitor) + Map types = collectingVisitor.getResult() then: types.size() == 17 types == [(droidType.name) : droidType, @@ -65,7 +76,9 @@ class SchemaUtilTest extends Specification { def "collectAllTypesNestedInput"() { when: - Map types = new SchemaUtil().allTypes(NestedInputSchema.createSchema(), Collections.emptySet(), false) + def collectingVisitor = new GraphQLTypeCollectingVisitor() + SchemaUtil.visitPartiallySchema(NestedInputSchema.createSchema(), collectingVisitor) + Map types = collectingVisitor.getResult() Map expected = [(NestedInputSchema.rootType().name) : NestedInputSchema.rootType(), @@ -88,7 +101,10 @@ class SchemaUtilTest extends Specification { def "collect all types defined in directives"() { when: - Map types = new SchemaUtil().allTypes(SchemaWithReferences, Collections.emptySet(), false) + def collectingVisitor = new GraphQLTypeCollectingVisitor() + SchemaUtil.visitPartiallySchema(SchemaWithReferences, collectingVisitor) + Map types = collectingVisitor.getResult() + then: types.size() == 30 types.containsValue(UnionDirectiveInput) @@ -105,13 +121,13 @@ class SchemaUtilTest extends Specification { def "group all types by implemented interface"() { when: - Map> byInterface = new SchemaUtil().groupImplementations(starWarsSchema) + Map> byInterface = SchemaUtil.groupInterfaceImplementationsByName(starWarsSchema.getAllTypesAsList()) then: byInterface.size() == 1 byInterface[characterInterface.getName()].size() == 2 byInterface == [ - (characterInterface.getName()): [ droidType, humanType] + (characterInterface.getName()): [droidType, humanType] ] } @@ -120,25 +136,25 @@ class SchemaUtilTest extends Specification { GraphQLInputObjectType PersonInputType = newInputObject() .name("Person") .field(newInputObjectField() - .name("name") - .type(GraphQLString)) + .name("name") + .type(GraphQLString)) .build() GraphQLFieldDefinition field = newFieldDefinition() .name("find") .type(typeRef("Person")) .argument(newArgument() - .name("ssn") - .type(GraphQLString)) + .name("ssn") + .type(GraphQLString)) .build() GraphQLObjectType PersonService = newObject() .name("PersonService") .field(field) .build() - def schema = new GraphQLSchema(PersonService, null, Collections.singleton(PersonInputType)) + when: - new SchemaUtil().replaceTypeReferences(schema) + newSchema().query(PersonService).additionalType(PersonInputType).build() then: thrown(ClassCastException) } @@ -147,8 +163,26 @@ class SchemaUtilTest extends Specification { when: GraphQLUnionType pet = ((GraphQLUnionType) SchemaWithReferences.getType("Pet")) GraphQLObjectType person = ((GraphQLObjectType) SchemaWithReferences.getType("Person")) - GraphQLArgument cacheEnabled = DirectivesUtil.directiveWithArg( - SchemaWithReferences.getDirectives(), Cache.getName(), "enabled").get(); + GraphQLArgument cacheEnabled = SchemaWithReferences.getDirectivesByName() + .get(Cache.getName()).getArgument("enabled") + GraphQLAppliedDirectiveArgument appliedCacheEnabled = SchemaWithReferences.getSchemaAppliedDirective(Cache.getName()) + .getArgument("enabled") + + then: + SchemaWithReferences.allTypesAsList.findIndexOf { it instanceof GraphQLTypeReference } == -1 + pet.types.findIndexOf { it instanceof GraphQLTypeReference } == -1 + person.interfaces.findIndexOf { it instanceof GraphQLTypeReference } == -1 + !(cacheEnabled.getType() instanceof GraphQLTypeReference) + !(appliedCacheEnabled.getType() instanceof GraphQLTypeReference) + } + + def "all references are replaced with deprecated directiveWithArg"() { + when: + GraphQLUnionType pet = ((GraphQLUnionType) SchemaWithReferences.getType("Pet")) + GraphQLObjectType person = ((GraphQLObjectType) SchemaWithReferences.getType("Person")) + GraphQLArgument cacheEnabled = DirectivesUtil.directiveWithArg( // Retain for test coverage + SchemaWithReferences.getDirectives(), Cache.getName(), "enabled").get() + then: SchemaWithReferences.allTypesAsList.findIndexOf { it instanceof GraphQLTypeReference } == -1 pet.types.findIndexOf { it instanceof GraphQLTypeReference } == -1 @@ -195,7 +229,7 @@ class SchemaUtilTest extends Specification { final GraphQLObjectType mutation = newObject().name("mutation").field(systemWithArgsForMutation) .build() - GraphQLSchema.newSchema().query(queryType).mutation(mutation).build() + newSchema().query(queryType).mutation(mutation).build() then: diff --git a/src/test/groovy/graphql/schema/somepackage/RecordLikeClass.java b/src/test/groovy/graphql/schema/somepackage/RecordLikeClass.java new file mode 100644 index 0000000000..57cc04f2f1 --- /dev/null +++ b/src/test/groovy/graphql/schema/somepackage/RecordLikeClass.java @@ -0,0 +1,34 @@ +package graphql.schema.somepackage; + +import graphql.schema.DataFetchingEnvironment; + +/** + * This is obviously not an actual record class from Java 14 onwards, but it + * smells like one and that's enough really. Its public, not derived from another + * class and has a public method named after a property + */ +public class RecordLikeClass { + + public String recordProperty() { + return "recordProperty"; + } + + public String recordArgumentMethod(DataFetchingEnvironment environment) { + return "recordArgumentMethod"; + } + + @Override + public int hashCode() { + return 666; + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + + @Override + public String toString() { + return "toString"; + } +} diff --git a/src/test/groovy/graphql/schema/somepackage/RecordLikeTwoClassesDown.java b/src/test/groovy/graphql/schema/somepackage/RecordLikeTwoClassesDown.java new file mode 100644 index 0000000000..4e744f2872 --- /dev/null +++ b/src/test/groovy/graphql/schema/somepackage/RecordLikeTwoClassesDown.java @@ -0,0 +1,4 @@ +package graphql.schema.somepackage; + +public class RecordLikeTwoClassesDown extends RecordLikeClass { +} diff --git a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy index d1ca684f22..25a6331e02 100644 --- a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy +++ b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy @@ -2,15 +2,15 @@ package graphql.schema.transform import graphql.Scalars import graphql.TestUtil +import graphql.schema.GraphQLAppliedDirective +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLDirectiveContainer import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLSchema import graphql.schema.TypeResolver -import graphql.schema.idl.SchemaPrinter import spock.lang.Specification -import static graphql.schema.GraphQLDirective.newDirective import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLInterfaceType.newInterface import static graphql.schema.GraphQLObjectType.newObject @@ -19,7 +19,7 @@ import static graphql.schema.GraphQLTypeReference.typeRef class FieldVisibilitySchemaTransformationTest extends Specification { def visibilitySchemaTransformation = new FieldVisibilitySchemaTransformation({ environment -> - def directives = (environment.schemaElement as GraphQLDirectiveContainer).directives + def directives = (environment.schemaElement as GraphQLDirectiveContainer).appliedDirectives return directives.find({ directive -> directive.name == "private" }) == null }) @@ -48,6 +48,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { then: (restrictedSchema.getType("Account") as GraphQLObjectType).getFieldDefinition("billingStatus") == null + restrictedSchema.getType("BillingStatus") == null } def "can remove a type associated with a private field"() { @@ -214,8 +215,10 @@ class FieldVisibilitySchemaTransformationTest extends Specification { directive @private on FIELD_DEFINITION type Query { - public: FooOrBar @private - private: Bar @private + privateFooOrBar: FooOrBar @private + privateBar: Bar @private + privateFoo: Foo @private + public: Foo } union FooOrBar = Foo | Bar @@ -235,11 +238,13 @@ class FieldVisibilitySchemaTransformationTest extends Specification { GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: - (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("private") == null - (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("public") == null - restrictedSchema.getType("Bar") == null - restrictedSchema.getType("Foo") == null + (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("privateFooOrBar") == null + (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("privateBar") == null + (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("privateFoo") == null + (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("public") != null restrictedSchema.getType("FooOrBar") == null + restrictedSchema.getType("Bar") == null + restrictedSchema.getType("Foo") != null } def "union type with reference by private interface removed"() { @@ -527,6 +532,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { type Query { bar: String @private baz: Boolean @private + placeholderField: Int } """) @@ -587,10 +593,12 @@ class FieldVisibilitySchemaTransformationTest extends Specification { type Mutation { setFoo(foo: String): Foo @private + placeholderField: Int } type Subscription { barAdded: Bar @private + placeholderField: Int } type Foo { @@ -623,6 +631,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { type Foo { baz: Baz @private + placeholderField: Int } type Bar { @@ -655,10 +664,12 @@ class FieldVisibilitySchemaTransformationTest extends Specification { type Foo { baz: Baz @private + placeholderField: Int } type Bar { baz: Baz @private + placeholderField: Int } type Baz { @@ -684,6 +695,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { type Query { foo: Foo @private bar: Bar @private + placeholderField: Int } type Foo { @@ -817,7 +829,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { restrictedSchema.getType("FooEnum") == null } - def "unreferenced types can have fields removed"() { + def "unreferenced types can have fields removed, and the referenced types must be removed as well if they are not used"() { given: GraphQLSchema schema = TestUtil.schema(""" @@ -844,11 +856,83 @@ class FieldVisibilitySchemaTransformationTest extends Specification { when: GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) - then: + then: "Bar.bing field must have been removed" (restrictedSchema.getType("Bar") as GraphQLObjectType).getFieldDefinition("bing") == null + + and: "since Bing is not used anywhere else, it should be removed" restrictedSchema.getType("Bing") == null } + def "unreferenced types can have fields removed, and referenced type must not be removed if used elsewhere in the connected graph"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + + directive @private on FIELD_DEFINITION + + type Query { + foo: Foo + zinc: Bing + } + + type Foo { + id: ID + } + + type Bar { + baz: String + bing: Bing @private + } + + type Bing { + id: ID + } + """) + + when: + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) + + then: "Bar.bing field must have been removed" + (restrictedSchema.getType("Bar") as GraphQLObjectType).getFieldDefinition("bing") == null + + and: "since Bing is used in the connected graph, it MUST not be removed" + restrictedSchema.getType("Bing") != null + } + + def "unreferenced types can have fields removed, and referenced type must not be removed if used elsewhere"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + + directive @private on FIELD_DEFINITION + + type Query { + foo: Foo + } + + type Foo { + id: ID + } + + type Bar { + baz: String + foo: Bing + bing: Bing @private + } + + type Bing { + id: ID + } + """) + + when: + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) + + then: "Bar.bing field must have been removed" + (restrictedSchema.getType("Bar") as GraphQLObjectType).getFieldDefinition("bing") == null + + and: "since Bing is used elsewhere, it SHOULD not be removed" + restrictedSchema.getType("Bing") != null + } + def "use type references - private field declared with interface type removes both concrete and interface"() { given: def query = newObject() @@ -856,11 +940,11 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .field(newFieldDefinition().name("account").type(typeRef("Account")).build()) .build() - def privateDirective = newDirective().name("private").build() + def privateDirective = GraphQLAppliedDirective.newDirective().name("private").build() def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("SuperSecretCustomerData")).withDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("SuperSecretCustomerData")).withAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -872,10 +956,14 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def secretData = newInterface() .name("SuperSecretCustomerData") .field(newFieldDefinition().name("id").type(Scalars.GraphQLString).build()) - .typeResolver(Mock(TypeResolver)) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(secretData, Mock(TypeResolver)) .build() def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(query) .additionalType(billingStatus) .additionalType(account) @@ -884,7 +972,6 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .build() when: - System.out.println((new SchemaPrinter()).print(schema)) GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: @@ -901,11 +988,11 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .field(newFieldDefinition().name("account").type(typeRef("Account")).build()) .build() - def privateDirective = newDirective().name("private").build() + def privateDirective = GraphQLAppliedDirective.newDirective().name("private").build() def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -917,10 +1004,14 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def secretData = newInterface() .name("SuperSecretCustomerData") .field(newFieldDefinition().name("id").type(Scalars.GraphQLString).build()) - .typeResolver(Mock(TypeResolver)) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(secretData, Mock(TypeResolver)) .build() def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(query) .additionalType(billingStatus) .additionalType(account) @@ -929,7 +1020,6 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .build() when: - System.out.println((new SchemaPrinter()).print(schema)) GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: @@ -945,11 +1035,11 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .field(newFieldDefinition().name("account").type(typeRef("Account")).build()) .build() - def privateDirective = newDirective().name("private").build() + def privateDirective = GraphQLAppliedDirective.newDirective().name("private").build() def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -964,7 +1054,6 @@ class FieldVisibilitySchemaTransformationTest extends Specification { .build() when: - System.out.println((new SchemaPrinter()).print(schema)) GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) then: @@ -978,9 +1067,9 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def callbacks = [] def visibilitySchemaTransformation = new FieldVisibilitySchemaTransformation({ environment -> - def directives = (environment.schemaElement as GraphQLDirectiveContainer).directives + def directives = (environment.schemaElement as GraphQLDirectiveContainer).appliedDirectives return directives.find({ directive -> directive.name == "private" }) == null - }, { -> callbacks << "before" }, { -> callbacks << "after"} ) + }, { -> callbacks << "before" }, { -> callbacks << "after" }) GraphQLSchema schema = TestUtil.schema(""" @@ -1006,4 +1095,256 @@ class FieldVisibilitySchemaTransformationTest extends Specification { then: callbacks.containsAll(["before", "after"]) } + + def "handles types that become visible via types reachable by interface only"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + + directive @private on FIELD_DEFINITION + + type Query { + account: Account + node: Node + } + + type Account { + name: String + billingStatus: BillingStatus @private + } + + type BillingStatus { + accountNumber: String + } + + interface Node { + id: ID! + } + + type Billing implements Node { + id: ID! + status: BillingStatus + } + + """) + + when: + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) + + then: + (restrictedSchema.getType("Account") as GraphQLObjectType).getFieldDefinition("billingStatus") == null + restrictedSchema.getType("BillingStatus") != null + } + + def "handles types that become visible via types reachable by interface that implements interface"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + + directive @private on FIELD_DEFINITION + + type Query { + account: Account + node: Node + } + + type Account { + name: String + billingStatus: BillingStatus @private + } + + type BillingStatus { + accountNumber: String + } + + interface Node { + id: ID! + } + + interface NamedNode implements Node { + id: ID! + name: String + } + + type Billing implements Node & NamedNode { + id: ID! + name: String + status: BillingStatus + } + + """) + + when: + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) + + then: + (restrictedSchema.getType("Account") as GraphQLObjectType).getFieldDefinition("billingStatus") == null + restrictedSchema.getType("BillingStatus") != null + } + + def "can remove a field with a directive containing enum argument"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + + directive @private(privateType: SecretType) on FIELD_DEFINITION + enum SecretType { + SUPER_SECRET + NOT_SO_SECRET + } + + type Query { + account: Account + } + + type Account { + name: String + billingStatus: BillingStatus @private(privateType: NOT_SO_SECRET) + } + + type BillingStatus { + accountNumber: String + } + """) + + when: + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) + + then: + (restrictedSchema.getType("Account") as GraphQLObjectType).getFieldDefinition("billingStatus") == null + restrictedSchema.getType("BillingStatus") == null + } + + def "can remove a field with a directive containing type argument"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + + directive @private(privateType: SecretType) on FIELD_DEFINITION + input SecretType { + description: String + } + + type Query { + account: Account + } + + type Account { + name: String + billingStatus: BillingStatus @private(privateType: { description: "secret" }) + } + + type BillingStatus { + accountNumber: String + } + """) + + when: + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(schema) + + then: + (restrictedSchema.getType("Account") as GraphQLObjectType).getFieldDefinition("billingStatus") == null + restrictedSchema.getType("BillingStatus") == null + + } + + def "remove all fields from a type which is referenced via additional types"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + directive @private on FIELD_DEFINITION + type Query { + foo: Foo + } + type Foo { + foo: String + toDelete: ToDelete @private + } + type ToDelete { + toDelete:String @private + } + """) + + when: + schema.typeMap + def patchedSchema = schema.transform { builder -> + schema.typeMap.each { entry -> + def type = entry.value + if (type != schema.queryType && type != schema.mutationType && type != schema.subscriptionType) { + builder.additionalType(type) + } + } + } + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(patchedSchema) + then: + (restrictedSchema.getType("Foo") as GraphQLObjectType).getFieldDefinition("toDelete") == null + } + + def "remove field from a type which is referenced via additional types and an additional not reachable child is deleted"() { + given: + /* + the test case here is that ToDelete is changed, because ToDelete.toDelete is deleted + and additionally Indirect needs to be deleted because it is not reachable via the + Query type anymore. + We had a bug where ToDeleted was not deleted correctly, but because Indirect was, it resulted + in an invalid schema and exception. + */ + GraphQLSchema schema = TestUtil.schema(""" + directive @private on FIELD_DEFINITION + type Query { + foo: String + toDelete: ToDelete @private + } + type ToDelete { + bare: String @private + toDelete:[Indirect!] + } + type Indirect { + foo: String + } + """) + + when: + schema.typeMap + def patchedSchema = schema.transform { builder -> + schema.typeMap.each { entry -> + def type = entry.value + if (type != schema.queryType && type != schema.mutationType && type != schema.subscriptionType) { + builder.additionalType(type) + } + } + } + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(patchedSchema) + then: + (restrictedSchema.getType("Query") as GraphQLObjectType).getFieldDefinition("toDelete") == null + } + + + def "remove all fields from an input type which is referenced via additional types"() { + given: + GraphQLSchema schema = TestUtil.schema(""" + directive @private on FIELD_DEFINITION | INPUT_FIELD_DEFINITION + type Query { + foo(input: Input): String + } + input Input { + foo: String + toDelete:ToDelete @private + } + input ToDelete { + toDelete:String @private + } + """) + + when: + schema.typeMap + def patchedSchema = schema.transform { builder -> + schema.typeMap.each { entry -> + def type = entry.value + if (type != schema.queryType && type != schema.mutationType && type != schema.subscriptionType) { + builder.additionalType(type) + } + } + } + GraphQLSchema restrictedSchema = visibilitySchemaTransformation.apply(patchedSchema) + then: + (restrictedSchema.getType("Input") as GraphQLInputObjectType).getFieldDefinition("toDelete") == null + } + + } diff --git a/src/test/groovy/graphql/schema/usage/SchemaUsageSupportTest.groovy b/src/test/groovy/graphql/schema/usage/SchemaUsageSupportTest.groovy new file mode 100644 index 0000000000..07c2db114c --- /dev/null +++ b/src/test/groovy/graphql/schema/usage/SchemaUsageSupportTest.groovy @@ -0,0 +1,280 @@ +package graphql.schema.usage + +import graphql.TestUtil +import graphql.schema.GraphQLAppliedDirective +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.SchemaTransformer +import graphql.schema.visitor.GraphQLSchemaTraversalControl +import graphql.schema.visitor.GraphQLSchemaVisitor +import spock.lang.Specification + +class SchemaUsageSupportTest extends Specification { + + def sdl = ''' + type Query { + f : Ref1 + } + + type Ref1 { + f1 : Ref2 + f2 : IRef1 + f3 : RefUnion1 + f4 : RefEnum1 + f5 : String + f6 : RefUnion2 + + f_arg1( arg : RefInput1) : String + f_arg2( arg : [RefInput2]) : String + f_arg3( arg : RefInput3!) : String + + f_directive1 : RefDirectiveObjectType + } + + type Ref2 { f : ID} + + interface IRef1 implements IRef2 { + f : ID + f2 : String + } + + interface IRef2 { + f: ID + } + + + type Floating1 implements IRef1 & IRef2 { + f : ID + f2 : String + } + + type Floating2 implements IRef2 { + f : ID + circular1 : Floating2 + circular2 : Floating3 + } + + type Floating3 { + circular1 : Floating2 @deprecated + } + + union RefUnion1 = Ref1 | Ref2 + + + type RefByUnionOnly1 { f : ID} + type RefByUnionOnly2 { f : ID} + + union RefUnion2 = RefByUnionOnly1 | RefByUnionOnly2 + + enum RefEnum1 { A, B } + + + input RefInput1 { + f : RefInput2 + } + + input RefInput2 { + f : RefInput1 + f1 : String + f3 : RefInput1 + f4 : RefInput1 + } + + input RefInput3 { + f1 : String + f2 : RefInput4 + } + + input RefInput4 { + f1 : String + } + + + interface UnIRef1 { f: ID } + + union UnRefUnion1 = Ref1 | Ref2 + + type UnRef1 { f : ID } + + enum UnRefEnum1 { A, B } + + input UnRefInput1 { + f : ID + } + + + directive @RefArgDirective on ARGUMENT_DEFINITION + directive @RefFieldDirective on FIELD_DEFINITION + directive @RefInputFieldDirective on INPUT_FIELD_DEFINITION + directive @RefInputTypeDirective on INPUT_OBJECT + directive @RefObjectTypeDirective(arg : RefDirectiveInputType) on OBJECT + + type RefDirectiveObjectType @RefObjectTypeDirective { + f(arg : ID @RefArgDirective) : ID @RefFieldDirective + } + + input RefDirectiveInputType @RefInputTypeDirective { + f : ID @RefInputFieldDirective + } + + + directive @UnRefFieldDirective(arg : UnRefDirectiveInputType) on FIELD_DEFINITION + directive @UnRefInputTypeDirective on INPUT_OBJECT + + input UnRefDirectiveInputType @UnRefInputTypeDirective { + f : ID + } + + ### hanging elements + + directive @UnRefHangingArgDirective(arg : UnRefHangingInputType3) on ARGUMENT_DEFINITION + + type UnRefHangingType { + f(arg : UnRefHangingInputType @UnRefHangingArgDirective) : UnRefHangingType2 + } + + type UnRefHangingType2 { + f : UnRefHangingType2 + } + + input UnRefHangingInputType { + f : UnRefHangingInputType2 + } + + input UnRefHangingInputType2 { + f : UnRefHangingInputType + } + + input UnRefHangingInputType3 { + f : ID + } + ''' + + def "can get references"() { + + def schema = TestUtil.schema(sdl) + + when: + def schemaUsage = SchemaUsageSupport.getSchemaUsage(schema) + then: + schemaUsage.isStronglyReferenced(schema, "Ref1") + schemaUsage.isStronglyReferenced(schema, "Ref2") + schemaUsage.isStronglyReferenced(schema, "IRef1") + schemaUsage.isStronglyReferenced(schema, "IRef2") + schemaUsage.isStronglyReferenced(schema, "Floating1") + schemaUsage.isStronglyReferenced(schema, "Floating2") + schemaUsage.isStronglyReferenced(schema, "Floating3") + + schemaUsage.isStronglyReferenced(schema, "RefUnion1") + + schemaUsage.isStronglyReferenced(schema, "RefUnion2") + schemaUsage.isStronglyReferenced(schema, "RefByUnionOnly1") + schemaUsage.isStronglyReferenced(schema, "RefByUnionOnly2") + + schemaUsage.isStronglyReferenced(schema, "RefInput1") + schemaUsage.isStronglyReferenced(schema, "RefInput2") + schemaUsage.isStronglyReferenced(schema, "RefInput3") + schemaUsage.isStronglyReferenced(schema, "RefInput4") + + schemaUsage.isStronglyReferenced(schema, "ID") + schemaUsage.isStronglyReferenced(schema, "String") + schemaUsage.isStronglyReferenced(schema, "Int") + schemaUsage.isStronglyReferenced(schema, "__Type") + schemaUsage.isStronglyReferenced(schema, "__Schema") + + schemaUsage.isStronglyReferenced(schema, "RefDirectiveObjectType") + schemaUsage.isStronglyReferenced(schema, "RefDirectiveInputType") + schemaUsage.isStronglyReferenced(schema, "RefInputTypeDirective") + schemaUsage.isStronglyReferenced(schema, "RefFieldDirective") + schemaUsage.isStronglyReferenced(schema, "RefArgDirective") + schemaUsage.isStronglyReferenced(schema, "RefInputFieldDirective") + + + !schemaUsage.isStronglyReferenced(schema, "UnRef1") + !schemaUsage.isStronglyReferenced(schema, "UnIRef1") + !schemaUsage.isStronglyReferenced(schema, "UnRefEnum1") + !schemaUsage.isStronglyReferenced(schema, "UnRefInput1") + + !schemaUsage.isStronglyReferenced(schema, "UnRefFieldDirective") + !schemaUsage.isStronglyReferenced(schema, "UnRefInputTypeDirective") + !schemaUsage.isStronglyReferenced(schema, "UnRefDirectiveInputType") + + schemaUsage.getUnReferencedElements(schema).collect { it.name }.sort() == + ["UnIRef1", "UnRef1", "UnRefDirectiveInputType", "UnRefEnum1", + "UnRefHangingInputType", "UnRefHangingInputType2", "UnRefHangingInputType3", + "UnRefHangingType", "UnRefHangingType2", "UnRefInput1", + "UnRefFieldDirective", "UnRefInputTypeDirective", "UnRefHangingArgDirective"].sort() + } + + def "can record counts"() { + def schema = TestUtil.schema(sdl) + + when: + def schemaUsage = SchemaUsageSupport.getSchemaUsage(schema) + + then: + schemaUsage.getOutputFieldReferenceCounts()["Ref1"] == 1 + schemaUsage.getFieldReferenceCounts()["Ref1"] == 1 + schemaUsage.getUnionReferenceCounts()["Ref1"] == 2 + + schemaUsage.getInputFieldReferenceCounts()["Ref1"] == null + schemaUsage.getInputFieldReferenceCounts()["RefInput1"] == 3 + + schemaUsage.getFieldReferenceCounts()["RefInput1"] == 3 + schemaUsage.getArgumentReferenceCounts()["RefInput1"] == 1 + + schemaUsage.getFieldReferenceCounts()["UnRef1"] == null + schemaUsage.getFieldReferenceCounts()["UnRefInput1"] == null + schemaUsage.getDirectiveReferenceCounts()["UnRefFieldDirective"] == null + + } + + def "can handle hanging elements"() { + // hanging elements are elements that reference other elements + // but ultimately dont lead to the root types + + def schema = TestUtil.schema(sdl) + + when: + def schemaUsage = SchemaUsageSupport.getSchemaUsage(schema) + + then: + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingType") + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingType2") + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingType3") + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingInputType") + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingInputType2") + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingInputType3") + !schemaUsage.isStronglyReferenced(schema, "UnRefHangingArgDirective") + + // 2 because of the dual nature of directives and applied directives + schemaUsage.getDirectiveReferenceCounts()["UnRefHangingArgDirective"] == 2 + schemaUsage.getArgumentReferenceCounts()["UnRefHangingInputType"] == 1 + schemaUsage.getFieldReferenceCounts()["UnRefHangingType2"] == 2 + schemaUsage.getArgumentReferenceCounts()["UnRefHangingInputType3"] == 3 + } + + def "can handle cleared directives"() { + // https://github.com/graphql-java/graphql-java/issues/3267 + + + def schema = TestUtil.schema(sdl) + schema = new SchemaTransformer().transform(schema, new GraphQLSchemaVisitor() { + + @Override + GraphQLSchemaTraversalControl visitFieldDefinition(GraphQLFieldDefinition fieldDef, GraphQLSchemaVisitor.FieldDefinitionVisitorEnvironment env) { + if (fieldDef.getAppliedDirective("RefFieldDirective") != null) { + List directives = fieldDef.getAppliedDirectives(); + fieldDef = fieldDef.transform( + f -> f.clearDirectives().replaceAppliedDirectives(directives) + ) + } + return env.changeNode(fieldDef) + } + }.toTypeVisitor()) + + when: + def schemaUsage = SchemaUsageSupport.getSchemaUsage(schema) + then: + schemaUsage.isStronglyReferenced(schema, "RefFieldDirective") + } +} diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy new file mode 100644 index 0000000000..f5a2136bba --- /dev/null +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -0,0 +1,127 @@ +package graphql.schema.validation + +import graphql.TestUtil +import graphql.schema.FieldCoordinates +import spock.lang.Specification + +import static graphql.Scalars.GraphQLString +import static graphql.TestUtil.mkDirective +import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINITION +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema + +class AppliedDirectivesAreValidTest extends Specification { + + def "non repeatable directives cannot be repeated"() { + def sdl = ''' + + directive @directiveA on FIELD_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + directive @directiveOK on FIELD_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + + interface InterfaceType1 { + fieldA : String @directiveA @directiveA + } + + type Query implements InterfaceType1 { + fieldA : String + fieldC : String @directiveA @directiveA + } + + extend type Query { + fieldB : Int + fieldD: Int @directiveA @directiveA + fieldE: Int @directiveA @directiveOK + } + + enum EnumType { + + enumA @directiveA @directiveA + enumB @directiveA @directiveOK + } + + input InputType { + inputFieldA : String @directiveA @directiveA + inputFieldB : String @directiveA @directiveOK + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 5 + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldC' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldD' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldA' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLEnumValueDefinition' called 'enumA' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLInputObjectField' called 'inputFieldA' is a non repeatable directive but has been applied 2 times") + } + + def "applied directive builders do not clear any existing applied directives"() { + given: + def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) + def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .withAppliedDirectives(directive1.toAppliedDirective()) + .withAppliedDirectives(directive2.toAppliedDirective()) + .build() + + when: + def schema = newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive1) + .additionalDirective(directive2) + .build() + + then: + def fieldAppliedDirectives = schema.getFieldDefinition(FieldCoordinates.coordinates("Query", "hello")).getAppliedDirectives() + fieldAppliedDirectives.size() == 2 + fieldAppliedDirectives.any { it.name == "myDirectiveName1" } + fieldAppliedDirectives.any { it.name == "myDirectiveName2" } + } + + def "replace applied directive builder does clear and replace existing applied directives"() { + given: + def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) + def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .withAppliedDirective(directive1.toAppliedDirective()) + .replaceAppliedDirectives(List.of(directive2.toAppliedDirective())) + .build() + + when: + def schema = newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive1) + .additionalDirective(directive2) + .build() + + then: + // As prior applied directives are cleared, there is only 1 applied directive left on the field (directive container) + def fieldAppliedDirectives = schema.getFieldDefinition(FieldCoordinates.coordinates("Query", "hello")).getAppliedDirectives() + fieldAppliedDirectives.size() == 1 + fieldAppliedDirectives.find { it.name == "myDirectiveName1" } == null + fieldAppliedDirectives.any { it.name == "myDirectiveName2" } + } + + static boolean hasError(InvalidSchemaException schemaException, String msg) { + def err = schemaException.getErrors().find { it.description == msg } + return err != null + } +} diff --git a/src/test/groovy/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValidTest.groovy new file mode 100644 index 0000000000..056f134db4 --- /dev/null +++ b/src/test/groovy/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValidTest.groovy @@ -0,0 +1,296 @@ +package graphql.schema.validation + +import graphql.TestUtil +import spock.lang.Specification + +class DeprecatedInputObjectAndArgumentsAreValidTest extends Specification { + + def "required input field cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! @deprecated(reason: "Don't need this input field") + spicy: Boolean @deprecated(reason: "Don't need this nullable input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required input field 'PizzaInfo.pineapples' cannot be deprecated." + } + + def "multiple required input fields cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! @deprecated(reason: "Don't need this input field") + spicy: Boolean! @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 2 + schemaProblem.getErrors()[0].description == "Required input field 'PizzaInfo.pineapples' cannot be deprecated." + schemaProblem.getErrors()[1].description == "Required input field 'PizzaInfo.spicy' cannot be deprecated." + } + + def "required input field list cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfos: [PizzaInfo]!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required input field 'PizzaInfo.pineapples' cannot be deprecated." + } + + def "nullable input field can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "non-nullable input field with default value can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! = false @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "required field argument cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean! @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required argument 'pineapples' on field 'updatePizza' cannot be deprecated." + } + + def "multiple required field arguments cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String! @deprecated(reason: "yeah nah"), pineapples: Boolean! @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 2 + schemaProblem.getErrors()[0].description == "Required argument 'name' on field 'updatePizza' cannot be deprecated." + schemaProblem.getErrors()[1].description == "Required argument 'pineapples' on field 'updatePizza' cannot be deprecated." + } + + def "nullable field argument can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "non-nullable field argument with default value can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean! = false @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "required directive argument cannot be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String!, likesPineapples: Boolean! @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required argument 'likesPineapples' on directive 'pizzaDirective' cannot be deprecated." + } + + def "multiple required directive arguments cannot be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String! @deprecated, likesPineapples: Boolean! @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 2 + schemaProblem.getErrors()[0].description == "Required argument 'name' on directive 'pizzaDirective' cannot be deprecated." + schemaProblem.getErrors()[1].description == "Required argument 'likesPineapples' on directive 'pizzaDirective' cannot be deprecated." + } + + def "nullable directive argument can be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String!, likesPineapples: Boolean @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "non-nullable directive argument with default value can be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String!, likesPineapples: Boolean! = false @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + +} diff --git a/src/test/groovy/graphql/schema/validation/InputAndOutputTypesUsedAppropriatelyTest.groovy b/src/test/groovy/graphql/schema/validation/InputAndOutputTypesUsedAppropriatelyTest.groovy new file mode 100644 index 0000000000..0c5a60208f --- /dev/null +++ b/src/test/groovy/graphql/schema/validation/InputAndOutputTypesUsedAppropriatelyTest.groovy @@ -0,0 +1,93 @@ +package graphql.schema.validation + +import graphql.schema.GraphQLArgument +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLInputObjectType +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLSchema +import spock.lang.Specification + +import static graphql.Scalars.GraphQLBoolean +import static graphql.Scalars.GraphQLString +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLInputObjectField.newInputObjectField +import static graphql.schema.GraphQLInputObjectType.newInputObject +import static graphql.schema.GraphQLList.list +import static graphql.schema.GraphQLNonNull.nonNull +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLTypeReference.typeRef + +class InputAndOutputTypesUsedAppropriatelyTest extends Specification { + + def "output type within input context is caught"() { + given: + + GraphQLObjectType OutputType = newObject() + .name("OutputType") + .field(newFieldDefinition().name("field").type(GraphQLString)) + .build() + + GraphQLInputObjectType PersonInputType = newInputObject() + .name("Person") + .field(newInputObjectField() + .name("friend") + .type(nonNull(list(nonNull(typeRef("OutputType"))))) + .build()) + .build() + + GraphQLFieldDefinition field = newFieldDefinition() + .name("exists") + .type(GraphQLBoolean) + .argument(GraphQLArgument.newArgument() + .name("person") + .type(PersonInputType)) + .build() + + GraphQLObjectType queryType = newObject() + .name("Query") + .field(field) + .build() + + when: + GraphQLSchema.newSchema() + .query(queryType) + .additionalTypes([OutputType] as Set) + .build() + then: + def schemaException = thrown(InvalidSchemaException) + def errors = schemaException.getErrors().collect { it.description } + errors.contains("The output type 'OutputType' has been used in an input type context : 'Person.friend'") + } + + def "input type within output context is caught"() { + given: + + GraphQLInputObjectType PersonInputType = newInputObject() + .name("Person") + .field(newInputObjectField() + .name("friend") + .type(GraphQLString) + .build()) + .build() + + GraphQLFieldDefinition field = newFieldDefinition() + .name("outputField") + .type(nonNull(list(nonNull(typeRef("Person"))))) + .build() + + GraphQLObjectType queryType = newObject() + .name("Query") + .field(field) + .build() + + when: + GraphQLSchema.newSchema() + .query(queryType) + .additionalTypes([PersonInputType] as Set) + .build() + then: + def schemaException = thrown(InvalidSchemaException) + def errors = schemaException.getErrors().collect { it.description } + errors.contains("The input type 'Person' has been used in a output type context : 'Query.outputField'") + } +} diff --git a/src/test/groovy/graphql/schema/validation/NoUnbrokenInputCyclesTest.groovy b/src/test/groovy/graphql/schema/validation/NoUnbrokenInputCyclesTest.groovy index 438a60452d..2ead346116 100644 --- a/src/test/groovy/graphql/schema/validation/NoUnbrokenInputCyclesTest.groovy +++ b/src/test/groovy/graphql/schema/validation/NoUnbrokenInputCyclesTest.groovy @@ -4,6 +4,7 @@ import graphql.schema.GraphQLArgument import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLInputObjectField import graphql.schema.GraphQLInputObjectType +import graphql.util.TraverserContext import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -30,13 +31,15 @@ class NoUnbrokenInputCyclesTest extends Specification { .name("exists") .type(GraphQLBoolean) .argument(GraphQLArgument.newArgument() - .name("person") - .type(PersonInputType)) + .name("person") + .type(PersonInputType)) .build() PersonInputType.getFieldDefinition("friend").replacedType = nonNull(PersonInputType) + def context = Mock(TraverserContext) + context.getVarFromParents(SchemaValidationErrorCollector) >> errorCollector when: - new NoUnbrokenInputCycles().check(field, errorCollector) + new NoUnbrokenInputCycles().visitGraphQLFieldDefinition(field, context) then: errorCollector.containsValidationError(SchemaValidationErrorType.UnbrokenInputCycle) } diff --git a/src/test/groovy/graphql/schema/validation/OneOfInputObjectRulesTest.groovy b/src/test/groovy/graphql/schema/validation/OneOfInputObjectRulesTest.groovy new file mode 100644 index 0000000000..813e54672b --- /dev/null +++ b/src/test/groovy/graphql/schema/validation/OneOfInputObjectRulesTest.groovy @@ -0,0 +1,36 @@ +package graphql.schema.validation + +import graphql.TestUtil +import graphql.schema.idl.SchemaGenerator +import graphql.schema.idl.SchemaParser +import spock.lang.Specification + +class OneOfInputObjectRulesTest extends Specification { + + def "oneOf fields must be the right shape"() { + + def sdl = """ + type Query { + f(arg : OneOfInputType) : String + } + + input OneOfInputType @oneOf { + ok : String + badNonNull : String! + badDefaulted : String = "default" + } + """ + + when: + def registry = new SchemaParser().parse(sdl) + new SchemaGenerator().makeExecutableSchema(registry, TestUtil.getMockRuntimeWiring()) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.errors.size() == 2 + schemaProblem.errors[0].description == "OneOf input field OneOfInputType.badNonNull must be nullable." + schemaProblem.errors[0].classification == SchemaValidationErrorType.OneOfNonNullableField + schemaProblem.errors[1].description == "OneOf input field OneOfInputType.badDefaulted cannot have a default value." + schemaProblem.errors[1].classification == SchemaValidationErrorType.OneOfDefaultValueOnField + } +} diff --git a/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy b/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy index aab7bfd153..706542df8d 100644 --- a/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy +++ b/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy @@ -1,9 +1,6 @@ package graphql.schema.validation -import graphql.Scalars -import graphql.schema.GraphQLFieldDefinition -import graphql.schema.GraphQLObjectType -import graphql.schema.GraphQLSchema + import spock.lang.Specification class SchemaValidatorTest extends Specification { @@ -14,96 +11,15 @@ class SchemaValidatorTest extends Specification { def validator = new SchemaValidator() def rules = validator.rules then: - rules.size() == 2 + rules.size() == 9 rules[0] instanceof NoUnbrokenInputCycles - rules[1] instanceof ObjectsImplementInterfaces - } - - def "rules are used"() { - def queryType = GraphQLObjectType.newObject() - .name("query") - .build() - def schema = GraphQLSchema.newSchema() - .query(queryType) - .build() - def dummyRule = Mock(SchemaValidationRule) - when: - def validator = new SchemaValidator([dummyRule]) - validator.validateSchema(schema) - - then: - 1 * dummyRule.check(queryType, _ as SchemaValidationErrorCollector) - } - - def "query fields are checked"() { - def field = GraphQLFieldDefinition.newFieldDefinition() - .name("field") - .type(Scalars.GraphQLString) - .build() - def queryType = GraphQLObjectType.newObject() - .name("query") - .field(field) - .build() - def schema = GraphQLSchema.newSchema() - .query(queryType) - .build() - def dummyRule = Mock(SchemaValidationRule) - when: - def validator = new SchemaValidator([dummyRule]) - validator.validateSchema(schema) - - then: - 1 * dummyRule.check(field, _ as SchemaValidationErrorCollector) + rules[1] instanceof TypesImplementInterfaces + rules[2] instanceof TypeAndFieldRule + rules[3] instanceof DefaultValuesAreValid + rules[4] instanceof AppliedDirectivesAreValid + rules[5] instanceof AppliedDirectiveArgumentsAreValid + rules[6] instanceof InputAndOutputTypesUsedAppropriately + rules[7] instanceof OneOfInputObjectRules + rules[8] instanceof DeprecatedInputObjectAndArgumentsAreValid } - - def "mutation fields are checked"() { - def dummyRule = Mock(SchemaValidationRule) - def field = GraphQLFieldDefinition.newFieldDefinition() - .name("field") - .type(Scalars.GraphQLString) - .build() - def mutation = GraphQLObjectType.newObject() - .name("mutation") - .field(field) - .build() - def queryType = GraphQLObjectType.newObject() - .name("query") - .build() - def schema = GraphQLSchema.newSchema() - .query(queryType) - .mutation(mutation) - .build() - when: - def validator = new SchemaValidator([dummyRule]) - validator.validateSchema(schema) - - then: - 1 * dummyRule.check(field, _ as SchemaValidationErrorCollector) - } - - def "subscription fields are checked"() { - def dummyRule = Mock(SchemaValidationRule) - def field = GraphQLFieldDefinition.newFieldDefinition() - .name("field") - .type(Scalars.GraphQLString) - .build() - def mutation = GraphQLObjectType.newObject() - .name("subscription") - .field(field) - .build() - def queryType = GraphQLObjectType.newObject() - .name("query") - .build() - def schema = GraphQLSchema.newSchema() - .query(queryType) - .subscription(mutation) - .build() - when: - def validator = new SchemaValidator([dummyRule]) - validator.validateSchema(schema) - - then: - 1 * dummyRule.check(field, _ as SchemaValidationErrorCollector) - } - } diff --git a/src/test/groovy/graphql/schema/validation/TypeAndFieldRuleTest.groovy b/src/test/groovy/graphql/schema/validation/TypeAndFieldRuleTest.groovy new file mode 100644 index 0000000000..8c3f4fc2a3 --- /dev/null +++ b/src/test/groovy/graphql/schema/validation/TypeAndFieldRuleTest.groovy @@ -0,0 +1,168 @@ +package graphql.schema.validation + +import graphql.TestUtil +import graphql.schema.GraphQLCodeRegistry +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLTypeReference +import graphql.schema.TypeResolverProxy +import spock.lang.Specification + +import static graphql.schema.GraphQLUnionType.newUnionType + +class TypeAndFieldRuleTest extends Specification { + + def "type must define one or more fields."() { + when: + def sdl = ''' + type Query {} + ''' + + TestUtil.schema(sdl) + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + e.message == "invalid schema:\n\"Query\" must define one or more fields." + } + + def "Enum type must define one or more enum values"() { + when: + def sdl = ''' + type Query { + enumValue: EnumType + } + enum EnumType {} + ''' + + TestUtil.schema(sdl) + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + e.message == "invalid schema:\nEnum type \"EnumType\" must define one or more enum values." + } + + def "input type must define one or more fields"() { + when: + def sdl = ''' + type Query { + field: String + } + input InputType {} + + ''' + + TestUtil.schema(sdl) + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + print(e.message) + e.message == "invalid schema:\n\"InputType\" must define one or more fields." + } + + def "field name must not begin with \"__\""() { + when: + def sdl = ''' + type Query { __namedField: Int } + ''' + + TestUtil.schema(sdl) + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + e.message == "invalid schema:\n\"__namedField\" in \"Query\" must not begin with \"__\", which is reserved by GraphQL introspection." + } + + def "argument name must not begin with \"__\""() { + when: + def sdl = ''' + type Query { namedField(__arg: Int): Int } + ''' + + TestUtil.schema(sdl) + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + e.message == "invalid schema:\nArgument name \"__arg\" in \"Query-namedField\" must not begin with \"__\", which is reserved by GraphQL introspection." + } + + def "interface must define one or more fields."() { + when: + def sdl = ''' + type Query { field: Int } + interface Interface {} + ''' + + TestUtil.schema(sdl) + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + e.message == "invalid schema:\n\"Interface\" must define one or more fields." + } + + def "union member types must be object types"() { + def sdl = ''' + type Query { dummy: String } + + type Object { + dummy: String + } + + interface Interface { + dummy: String + } + ''' + when: + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver("Interface", { null }) + .build() + def graphQLSchema = TestUtil.schema(sdl).transform({it.codeRegistry(codeRegistry)}) + + // this is a little convoluted, since this rule is repeated in the schemaChecker + // we add the invalid union after schema creation so we can cover the validation from + // the TypeAndFieldRule. + def unionType = newUnionType().name("unionWithNonObjectTypes") + .possibleType(graphQLSchema.getObjectType("Object")) + .possibleType(GraphQLTypeReference.typeRef("Interface")) + .build() + codeRegistry = codeRegistry.transform({it.typeResolver(unionType, new TypeResolverProxy())}) + graphQLSchema.transform({ schema -> schema + .additionalType(unionType) + .codeRegistry(codeRegistry)}) + + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + !e.getErrors().isEmpty() + e.getErrors()[0].classification == SchemaValidationErrorType.InvalidUnionMemberTypeError + } + + def "union member types must be unique"() { + def sdl = ''' + type Query { dummy: String } + + type Object { + dummy: String + } + ''' + when: + def graphQLSchema = TestUtil.schema(sdl) + + // Since this rule is repeated in the schemaChecker + // there is no way to effectively cover it after the schema has + // been constructed. We use a Stub here to register the same object type at two + // different names. + def stubObjectType = Stub(GraphQLObjectType) { + getName() >>> ["Other","Object"] + } + + def unionType = newUnionType().name("unionWithNonObjectTypes") + .possibleType(graphQLSchema.getObjectType("Object")) + .possibleType(stubObjectType) + .build() + + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(unionType, new TypeResolverProxy()) + .build() + + graphQLSchema.transform({ schema -> schema + .additionalType(unionType) + .codeRegistry(codeRegistry) }) + + then: + InvalidSchemaException e = thrown(InvalidSchemaException) + !e.getErrors().isEmpty() + e.getErrors()[0].classification == SchemaValidationErrorType.RepetitiveElementError + } +} diff --git a/src/test/groovy/graphql/schema/validation/ObjectsImplementInterfacesTest.groovy b/src/test/groovy/graphql/schema/validation/TypesImplementInterfacesTest.groovy similarity index 62% rename from src/test/groovy/graphql/schema/validation/ObjectsImplementInterfacesTest.groovy rename to src/test/groovy/graphql/schema/validation/TypesImplementInterfacesTest.groovy index 4bb20649ba..c504393cf2 100644 --- a/src/test/groovy/graphql/schema/validation/ObjectsImplementInterfacesTest.groovy +++ b/src/test/groovy/graphql/schema/validation/TypesImplementInterfacesTest.groovy @@ -1,9 +1,7 @@ package graphql.schema.validation -import graphql.TypeResolutionEnvironment import graphql.schema.GraphQLInterfaceType import graphql.schema.GraphQLObjectType -import graphql.schema.TypeResolver import spock.lang.Specification import static SchemaValidationErrorType.ObjectDoesNotImplementItsInterfaces @@ -18,14 +16,7 @@ import static graphql.schema.GraphQLNonNull.nonNull import static graphql.schema.GraphQLObjectType.newObject import static graphql.schema.GraphQLUnionType.newUnionType -class ObjectsImplementInterfacesTest extends Specification { - - TypeResolver typeResolver = new TypeResolver() { - @Override - GraphQLObjectType getType(TypeResolutionEnvironment env) { - null - } - } +class TypesImplementInterfacesTest extends Specification { GraphQLInterfaceType InterfaceType = newInterface() .name("Interface") @@ -39,7 +30,7 @@ class ObjectsImplementInterfacesTest extends Specification { .argument(newArgument().name("arg1").type(GraphQLString)) .argument(newArgument().name("arg2").type(GraphQLInt)) .argument(newArgument().name("arg3").type(GraphQLBoolean)) - .argument(newArgument().name("arg4").type(GraphQLString).defaultValue("ABC")) + .argument(newArgument().name("arg4").type(GraphQLString).defaultValueProgrammatic("ABC")) ) .field(newFieldDefinition().name("argField2").type(GraphQLString) @@ -47,14 +38,13 @@ class ObjectsImplementInterfacesTest extends Specification { .argument(newArgument().name("arg2").type(GraphQLInt)) .argument(newArgument().name("arg3").type(GraphQLBoolean)) ) - .typeResolver(typeResolver) .build() def "objects implement interfaces"() { given: SchemaValidationErrorCollector errorCollector = new SchemaValidationErrorCollector() - GraphQLObjectType objType = GraphQLObjectType.newObject() + GraphQLObjectType objType = newObject() .name("obj") .withInterface(InterfaceType) .field(newFieldDefinition().name("name").type(GraphQLString)) @@ -66,7 +56,7 @@ class ObjectsImplementInterfacesTest extends Specification { .argument(newArgument().name("arg1").type(GraphQLInt)) .argument(newArgument().name("arg2").type(GraphQLInt)) .argument(newArgument().name("arg3").type(GraphQLInt)) - .argument(newArgument().name("arg4").type(GraphQLString).defaultValue("XYZ")) + .argument(newArgument().name("arg4").type(GraphQLString).defaultValueProgrammatic("XYZ")) ) .field(newFieldDefinition().name("argField2").type(GraphQLString) @@ -76,7 +66,7 @@ class ObjectsImplementInterfacesTest extends Specification { .build() when: - new ObjectsImplementInterfaces().check(objType, errorCollector) + new TypesImplementInterfaces().check(objType, errorCollector) then: @@ -94,7 +84,7 @@ class ObjectsImplementInterfacesTest extends Specification { errors.contains(new SchemaValidationError(ObjectDoesNotImplementItsInterfaces, "object type 'obj' does not implement interface 'Interface' because field 'argField1' argument 'arg4' is defined differently")) errors.contains(new SchemaValidationError(ObjectDoesNotImplementItsInterfaces, - "object type 'obj' does not implement interface 'Interface' because field 'argField2' has a different number of arguments")) + "object type 'obj' does not implement interface 'Interface' because field 'argField2' is missing argument(s): 'arg2, arg3'")) } def "field is object implementing interface"() { @@ -102,7 +92,6 @@ class ObjectsImplementInterfacesTest extends Specification { def person = newInterface() .name("Person") .field(newFieldDefinition().name("name").type(GraphQLString).build()) - .typeResolver({}) .build() def actor = newObject() @@ -119,7 +108,6 @@ class ObjectsImplementInterfacesTest extends Specification { GraphQLInterfaceType interfaceType = newInterface() .name("TestInterface") .field(newFieldDefinition().name("field").type(person).build()) - .typeResolver({}) .build() GraphQLObjectType goodImpl = newObject() @@ -138,8 +126,8 @@ class ObjectsImplementInterfacesTest extends Specification { SchemaValidationErrorCollector badErrorCollector = new SchemaValidationErrorCollector() when: - new ObjectsImplementInterfaces().check(goodImpl, goodErrorCollector) - new ObjectsImplementInterfaces().check(badImpl, badErrorCollector) + new TypesImplementInterfaces().check(goodImpl, goodErrorCollector) + new TypesImplementInterfaces().check(badImpl, badErrorCollector) then: goodErrorCollector.getErrors().isEmpty() @@ -151,7 +139,6 @@ class ObjectsImplementInterfacesTest extends Specification { def person = newInterface() .name("Person") .field(newFieldDefinition().name("name").type(GraphQLString).build()) - .typeResolver({}) .build() def actor = newObject() @@ -168,7 +155,6 @@ class ObjectsImplementInterfacesTest extends Specification { GraphQLInterfaceType interfaceType = newInterface() .name("TestInterface") .field(newFieldDefinition().name("field").type(list(person)).build()) - .typeResolver({}) .build() GraphQLObjectType goodImpl = newObject() @@ -187,8 +173,55 @@ class ObjectsImplementInterfacesTest extends Specification { SchemaValidationErrorCollector badErrorCollector = new SchemaValidationErrorCollector() when: - new ObjectsImplementInterfaces().check(goodImpl, goodErrorCollector) - new ObjectsImplementInterfaces().check(badImpl, badErrorCollector) + new TypesImplementInterfaces().check(goodImpl, goodErrorCollector) + new TypesImplementInterfaces().check(badImpl, badErrorCollector) + + then: + goodErrorCollector.getErrors().isEmpty() + !badErrorCollector.getErrors().isEmpty() + } + + def "field is list of interfaces implementing interface" () { + given: + def person = newInterface() + .name("Person") + .field(newFieldDefinition().name("name").type(GraphQLString).build()) + .build() + + def actor = newInterface() + .name("Actor") + .field(newFieldDefinition().name("name").type(GraphQLString).build()) + .withInterface(person) + .build() + + def prop = newObject() + .name("Prop") + .field(newFieldDefinition().name("name").type(GraphQLString).build()) + .build() + + GraphQLInterfaceType interfaceType = newInterface() + .name("TestInterface") + .field(newFieldDefinition().name("field").type(list(person)).build()) + .build() + + GraphQLObjectType goodImpl = newObject() + .name("GoodImpl") + .field(newFieldDefinition().name("field").type(list(actor)).build()) + .withInterface(interfaceType) + .build() + + GraphQLObjectType badImpl = newObject() + .name("BadImpl") + .field(newFieldDefinition().name("field").type(list(prop)).build()) + .withInterface(interfaceType) + .build() + + SchemaValidationErrorCollector goodErrorCollector = new SchemaValidationErrorCollector() + SchemaValidationErrorCollector badErrorCollector = new SchemaValidationErrorCollector() + + when: + new TypesImplementInterfaces().check(goodImpl, goodErrorCollector) + new TypesImplementInterfaces().check(badImpl, badErrorCollector) then: goodErrorCollector.getErrors().isEmpty() @@ -211,7 +244,6 @@ class ObjectsImplementInterfacesTest extends Specification { .name("Person") .possibleType(actor) .possibleType(director) - .typeResolver({}) .build() def prop = newObject() @@ -222,7 +254,6 @@ class ObjectsImplementInterfacesTest extends Specification { GraphQLInterfaceType interfaceType = newInterface() .name("TestInterface") .field(newFieldDefinition().name("field").type(person).build()) - .typeResolver({}) .build() GraphQLObjectType goodImpl = newObject() @@ -241,8 +272,8 @@ class ObjectsImplementInterfacesTest extends Specification { SchemaValidationErrorCollector badErrorCollector = new SchemaValidationErrorCollector() when: - new ObjectsImplementInterfaces().check(goodImpl, goodErrorCollector) - new ObjectsImplementInterfaces().check(badImpl, badErrorCollector) + new TypesImplementInterfaces().check(goodImpl, goodErrorCollector) + new TypesImplementInterfaces().check(badImpl, badErrorCollector) then: goodErrorCollector.getErrors().isEmpty() @@ -254,7 +285,6 @@ class ObjectsImplementInterfacesTest extends Specification { GraphQLInterfaceType interfaceType = newInterface() .name("TestInterface") .field(newFieldDefinition().name("field").type(GraphQLString).build()) - .typeResolver({}) .build() GraphQLObjectType goodImpl = newObject() @@ -273,8 +303,8 @@ class ObjectsImplementInterfacesTest extends Specification { SchemaValidationErrorCollector badErrorCollector = new SchemaValidationErrorCollector() when: - new ObjectsImplementInterfaces().check(goodImpl, goodErrorCollector) - new ObjectsImplementInterfaces().check(badImpl, badErrorCollector) + new TypesImplementInterfaces().check(goodImpl, goodErrorCollector) + new TypesImplementInterfaces().check(badImpl, badErrorCollector) then: goodErrorCollector.getErrors().isEmpty() @@ -287,7 +317,6 @@ class ObjectsImplementInterfacesTest extends Specification { GraphQLInterfaceType memberInterface = newInterface() .name("TestMemberInterface") .field(newFieldDefinition().name("field").type(GraphQLString).build()) - .typeResolver({}) .build() GraphQLObjectType memberInterfaceImpl = newObject() @@ -299,7 +328,6 @@ class ObjectsImplementInterfacesTest extends Specification { GraphQLInterfaceType testInterface = newInterface() .name("TestInterface") .field(newFieldDefinition().name("field").type(nonNull(memberInterface)).build()) - .typeResolver({}) .build() GraphQLObjectType testInterfaceImpl = newObject() @@ -311,10 +339,119 @@ class ObjectsImplementInterfacesTest extends Specification { SchemaValidationErrorCollector goodErrorCollector = new SchemaValidationErrorCollector() when: - new ObjectsImplementInterfaces().check(testInterfaceImpl, goodErrorCollector) + new TypesImplementInterfaces().check(testInterfaceImpl, goodErrorCollector) then: goodErrorCollector.getErrors().isEmpty() } + def "type can declare extra optional field arguments"() { + given: + + GraphQLInterfaceType InterfaceType = newInterface() + .name("Interface") + .field(newFieldDefinition().name("argField").type(GraphQLString)) + .build() + + SchemaValidationErrorCollector errorCollector = new SchemaValidationErrorCollector() + + GraphQLObjectType objType = newObject() + .name("Object") + .withInterface(InterfaceType) + .field(newFieldDefinition().name("argField").type(GraphQLString) + .argument(newArgument().name("arg1").type(GraphQLInt)) + ) + .build() + + when: + new TypesImplementInterfaces().check(objType, errorCollector) + + then: + def errors = errorCollector.getErrors() + errors.isEmpty() + } + + def "type should declare all arguments present in implemented interface"() { + given: + + GraphQLInterfaceType InterfaceType = newInterface() + .name("Interface") + .field(newFieldDefinition().name("argField").type(GraphQLString) + .argument(newArgument().name("arg1").type(GraphQLInt)) + .argument(newArgument().name("arg2").type(GraphQLInt)) + ) + .build() + + SchemaValidationErrorCollector errorCollector = new SchemaValidationErrorCollector() + + GraphQLObjectType objType = newObject() + .name("Object") + .withInterface(InterfaceType) + .field(newFieldDefinition().name("argField").type(GraphQLString) + .argument(newArgument().name("argX").type(GraphQLInt)) + .argument(newArgument().name("argZ").type(GraphQLInt)) + ) + .build() + + when: + new TypesImplementInterfaces().check(objType, errorCollector) + + then: + def errors = errorCollector.getErrors() + errors.size() == 1 + errors.iterator().next().description == "object type 'Object' does not implement interface 'Interface' because field 'argField' is missing argument(s): 'arg1, arg2'" + } + + def "type cannot declare extra non-null field arguments"() { + given: + + GraphQLInterfaceType InterfaceType = newInterface() + .name("Interface") + .field(newFieldDefinition().name("argField").type(GraphQLString)) + .build() + + SchemaValidationErrorCollector errorCollector = new SchemaValidationErrorCollector() + + GraphQLObjectType objType = newObject() + .name("Object") + .withInterface(InterfaceType) + .field(newFieldDefinition().name("argField").type(GraphQLString) + .argument(newArgument().name("arg1").type(nonNull(GraphQLInt))) + ) + .build() + + when: + new TypesImplementInterfaces().check(objType, errorCollector) + + then: + def errors = errorCollector.getErrors() + errors.size() == 1 + errors.iterator().next().description == "object type 'Object' field 'argField' defines an additional non-optional argument 'arg1' which is not allowed because field is also defined in interface 'Interface'" + } + + def "type can change order of field arguments"() { + given: + + GraphQLInterfaceType InterfaceType = newInterface() + .name("Interface") + .field(newFieldDefinition().name("argField1").type(GraphQLString)) + .field(newFieldDefinition().name("argField2").type(GraphQLString)) + .build() + + SchemaValidationErrorCollector errorCollector = new SchemaValidationErrorCollector() + + GraphQLObjectType objType = newObject() + .name("Object") + .withInterface(InterfaceType) + .field(newFieldDefinition().name("argField2").type(GraphQLString)) + .field(newFieldDefinition().name("argField1").type(GraphQLString)) + .build() + + when: + new TypesImplementInterfaces().check(objType, errorCollector) + + then: + def errors = errorCollector.getErrors() + errors.isEmpty() + } } diff --git a/src/test/groovy/graphql/schema/visibility/GraphqlFieldVisibilityTest.groovy b/src/test/groovy/graphql/schema/visibility/GraphqlFieldVisibilityTest.groovy index b64495fc28..e292cffb9a 100644 --- a/src/test/groovy/graphql/schema/visibility/GraphqlFieldVisibilityTest.groovy +++ b/src/test/groovy/graphql/schema/visibility/GraphqlFieldVisibilityTest.groovy @@ -6,6 +6,8 @@ import graphql.StarWarsSchema import graphql.execution.AsyncExecutionStrategy import graphql.introspection.IntrospectionQuery import graphql.language.Field +import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLObjectType @@ -24,45 +26,14 @@ import static graphql.schema.visibility.NoIntrospectionGraphqlFieldVisibility.NO class GraphqlFieldVisibilityTest extends Specification { - def "visibility is enforced"() { - - GraphqlFieldVisibility banNameVisibility = newBlock().addPattern(".*\\.name").build() - def schema = GraphQLSchema.newSchema() - .query(StarWarsSchema.queryType) - .fieldVisibility(banNameVisibility) - .build() - - def graphQL = GraphQL.newGraphQL(schema).build() - - given: - def query = """ - { - hero { - id - name - friends { - aliasHandled: name - } - } - } - """ - - when: - def result = graphQL.execute(query) - - then: - result.errors[0].getMessage().contains("Field 'name' in type 'Character' is undefined") - result.errors[1].getMessage().contains("Field 'name' in type 'Character' is undefined") - } - def "introspection visibility is enforced"() { - - given: - + GraphQLCodeRegistry codeRegistry = StarWarsSchema.codeRegistry.transform(builder -> { + builder.fieldVisibility(fieldVisibility) + }) def schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) - .fieldVisibility(fieldVisibility) + .codeRegistry(codeRegistry) .build() def graphQL = GraphQL.newGraphQL(schema).build() @@ -93,10 +64,12 @@ class GraphqlFieldVisibilityTest extends Specification { def "introspection turned off via field visibility"() { given: - + GraphQLCodeRegistry codeRegistry = StarWarsSchema.codeRegistry.transform(builder -> { + builder.fieldVisibility(NO_INTROSPECTION_FIELD_VISIBILITY) + }) def schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) - .fieldVisibility(NO_INTROSPECTION_FIELD_VISIBILITY) + .codeRegistry(codeRegistry) .build() def graphQL = GraphQL.newGraphQL(schema).build() @@ -115,7 +88,9 @@ class GraphqlFieldVisibilityTest extends Specification { def "schema printing filters on visibility"() { when: - def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().fieldVisibility(DEFAULT_FIELD_VISIBILITY).build() + def codeRegistry = StarWarsSchema.codeRegistry.transform(builder -> { + builder.fieldVisibility(DEFAULT_FIELD_VISIBILITY) + }) def schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) .codeRegistry(codeRegistry) @@ -197,7 +172,9 @@ enum Episode { // and with specific bans when: - codeRegistry = GraphQLCodeRegistry.newCodeRegistry().fieldVisibility(ban(['Droid.id', 'Character.name', "QueryType.hero"])).build() + codeRegistry = StarWarsSchema.codeRegistry.transform(builder -> { + builder.fieldVisibility(ban(['Droid.id', 'Character.name', "QueryType.hero"])) + }) schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) .codeRegistry(codeRegistry) @@ -278,16 +255,15 @@ enum Episode { } def "ensure execution cant get to the field"() { - - when: + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .fieldVisibility(ban(['Droid.appearsIn'])) + .build() def schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) - .fieldVisibility(ban(['Droid.appearsIn'])) + .codeRegistry(codeRegistry) .build() - - def executionStrategy = new AsyncExecutionStrategy() { // gives us access to this unit tested method @@ -310,17 +286,28 @@ enum Episode { .field(newInputObjectField().name("closedField").type(GraphQLString)) .build() - def inputQueryType = GraphQLObjectType.newObject().name("InputQuery") - .field(newFieldDefinition().name("hello").type(GraphQLString) - .argument(newArgument().name("arg").type(inputType)) - .dataFetcher({ env -> return "world" }) - ) - .build() + DataFetcher inputDataFetcher = { env -> return "world" } + + def inputQueryType = GraphQLObjectType.newObject() + .name("InputQuery") + .field(newFieldDefinition() + .name("hello") + .type(GraphQLString) + .argument(newArgument() + .name("arg") + .type(inputType)) + ).build() def "ensure input field are blocked"() { when: + def inputTypeCoordinates = FieldCoordinates.coordinates("InputQuery", "hello") + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .dataFetcher(inputTypeCoordinates, inputDataFetcher) + .build() + def schema = GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) .query(inputQueryType) .build() @@ -340,9 +327,10 @@ enum Episode { er.getData() == ["hello": "world"] when: + codeRegistry = codeRegistry.transform({builder -> builder.fieldVisibility(ban(['InputType.closedField']))}) schema = GraphQLSchema.newSchema() .query(inputQueryType) - .fieldVisibility(ban(['InputType.closedField'])) + .codeRegistry(codeRegistry) .build() graphQL = GraphQL.newGraphQL(schema).build() @@ -366,9 +354,12 @@ enum Episode { given: + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .fieldVisibility(fieldVisibility) + .build() def schema = GraphQLSchema.newSchema() .query(inputQueryType) - .fieldVisibility(fieldVisibility) + .codeRegistry(codeRegistry) .build() def graphQL = GraphQL.newGraphQL(schema).build() diff --git a/src/test/groovy/graphql/schema/visitor/GraphQLSchemaVisitorTest.groovy b/src/test/groovy/graphql/schema/visitor/GraphQLSchemaVisitorTest.groovy new file mode 100644 index 0000000000..9629920db6 --- /dev/null +++ b/src/test/groovy/graphql/schema/visitor/GraphQLSchemaVisitorTest.groovy @@ -0,0 +1,372 @@ +package graphql.schema.visitor + +import graphql.Assert +import graphql.TestUtil +import graphql.schema.GraphQLAppliedDirective +import graphql.schema.GraphQLAppliedDirectiveArgument +import graphql.schema.GraphQLArgument +import graphql.schema.GraphQLDirective +import graphql.schema.GraphQLEnumType +import graphql.schema.GraphQLEnumValueDefinition +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLInputObjectField +import graphql.schema.GraphQLInputObjectType +import graphql.schema.GraphQLInterfaceType +import graphql.schema.GraphQLModifiedType +import graphql.schema.GraphQLNamedSchemaElement +import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLScalarType +import graphql.schema.GraphQLSchemaElement +import graphql.schema.GraphQLTypeUtil +import graphql.schema.GraphQLUnionType +import graphql.schema.SchemaTransformer +import graphql.schema.SchemaTraverser +import spock.lang.Specification + +import static graphql.schema.FieldCoordinates.coordinates + +class GraphQLSchemaVisitorTest extends Specification { + + + def toNames(GraphQLSchemaElement start, List elements) { + def l = elements.collect({ + return GraphQLTypeUtil.simplePrint(it) + }) + l.add(0, GraphQLTypeUtil.simplePrint((start))) + return l + } + + class CapturingSchemaVisitor implements GraphQLSchemaVisitor { + + Map> pathsToElement = [:] + def types = [:] + def leafs = [:] + def schema + + @Override + GraphQLSchemaTraversalControl visitSchemaElement(GraphQLSchemaElement schemaElement, SchemaElementVisitorEnvironment environment) { + this.schema = environment.getSchema() + def leadingElements = environment.getLeadingElements() + pathsToElement.put(schemaElement, leadingElements) + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitFieldDefinition(GraphQLFieldDefinition fieldDefinition, FieldDefinitionVisitorEnvironment environment) { + def key = environment.container.getName() + "." + fieldDefinition.getName() + ":" + environment.getUnwrappedType().getName() + leafs[key] = fieldDefinition + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitAppliedDirective(GraphQLAppliedDirective appliedDirective, AppliedDirectiveVisitorEnvironment environment) { + def key = "@" + environment.container.getName() + "." + appliedDirective.getName() + leafs[key] = appliedDirective + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitAppliedDirectiveArgument(GraphQLAppliedDirectiveArgument appliedDirectiveArgument, AppliedDirectiveArgumentVisitorEnvironment environment) { + def key = "@" + environment.container.getName() + "." + appliedDirectiveArgument.getName() + ":" + environment.getUnwrappedType().getName() + leafs[key] = appliedDirectiveArgument + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitArgument(GraphQLArgument argument, ArgumentVisitorEnvironment environment) { + def key = environment.container.getName() + "." + argument.getName() + ":" + environment.getUnwrappedType().getName() + leafs[key] = argument + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitDirective(GraphQLDirective directive, DirectiveVisitorEnvironment environment) { + leafs[directive.getName()] = directive + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitEnumType(GraphQLEnumType enumType, EnumTypeVisitorEnvironment environment) { + types[enumType.getName()] = enumType + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitEnumValueDefinition(GraphQLEnumValueDefinition enumValueDefinition, EnumValueDefinitionVisitorEnvironment environment) { + leafs[environment.container.getName() + "." + enumValueDefinition.getName()] = enumValueDefinition + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitInputObjectField(GraphQLInputObjectField inputObjectField, InputObjectFieldVisitorEnvironment environment) { + def key = environment.container.getName() + "." + inputObjectField.getName() + ":" + environment.getUnwrappedType().getName() + leafs[key] = inputObjectField + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitInputObjectType(GraphQLInputObjectType inputObjectType, InputObjectTypeVisitorEnvironment environment) { + types[inputObjectType.getName()] = inputObjectType + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitInterfaceType(GraphQLInterfaceType interfaceType, InterfaceTypeVisitorEnvironment environment) { + types[interfaceType.getName()] = interfaceType + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitScalarType(GraphQLScalarType scalarType, ScalarTypeVisitorEnvironment environment) { + types[scalarType.getName()] = scalarType + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitUnionType(GraphQLUnionType unionType, UnionTypeVisitorEnvironment environment) { + types[unionType.getName()] = unionType + return environment.ok() + } + + @Override + GraphQLSchemaTraversalControl visitObjectType(GraphQLObjectType objectType, ObjectVisitorEnvironment environment) { + types[objectType.getName()] = objectType + return environment.ok() + } + } + + def uberSDL = ''' + directive @directive(directiveArgument : String) on FIELD_DEFINITION + + type Query { + object(arg : InputObjectTypeA) : [ObjectTypeA!]! @directive(directiveArgument : "directiveArgument") + } + + input InputObjectTypeA { + fieldA : String! + } + + input InputObjectTypeB { + fieldB : String + } + + interface InterfaceTypeA { + fieldA : [String!]! + } + + type ObjectTypeA implements InterfaceTypeA { + fieldA : [String!]! + fieldAToX : [ObjectTypeX!]! + } + + type ObjectTypeB { + fieldB : String + } + + type ObjectTypeX { + fieldX(arg : InputObjectTypeA) : ObjectTypeX # self referential + } + + union UnionTypeA = ObjectTypeA | ObjectTypeB + + enum EnumTypeA { + enumDefA + enumDefB + } + ''' + + def schema = TestUtil.schema(uberSDL) + + + def "will visit things"() { + + def visitor = new CapturingSchemaVisitor() + + when: + new SchemaTraverser().depthFirstFullSchema(visitor.toTypeVisitor(), this.schema) + + then: + + visitor.schema == this.schema + visitor.types["Query"] instanceof GraphQLObjectType + + visitor.leafs["directive"] instanceof GraphQLDirective + visitor.leafs["directive.directiveArgument:String"] instanceof GraphQLArgument + + visitor.leafs["@object.directive"] instanceof GraphQLAppliedDirective + visitor.leafs["@directive.directiveArgument:String"] instanceof GraphQLAppliedDirectiveArgument + + visitor.types["EnumTypeA"] instanceof GraphQLEnumType + visitor.leafs["EnumTypeA.enumDefA"] instanceof GraphQLEnumValueDefinition + visitor.leafs["EnumTypeA.enumDefB"] instanceof GraphQLEnumValueDefinition + + visitor.types["InputObjectTypeA"] instanceof GraphQLInputObjectType + visitor.types["InputObjectTypeB"] instanceof GraphQLInputObjectType + visitor.leafs["InputObjectTypeA.fieldA:String"] instanceof GraphQLInputObjectField + + visitor.types["InterfaceTypeA"] instanceof GraphQLInterfaceType + visitor.leafs["InterfaceTypeA.fieldA:String"] instanceof GraphQLFieldDefinition + + visitor.types["ObjectTypeA"] instanceof GraphQLObjectType + visitor.types["ObjectTypeB"] instanceof GraphQLObjectType + visitor.leafs["ObjectTypeA.fieldA:String"] instanceof GraphQLFieldDefinition + + visitor.types["String"] instanceof GraphQLScalarType + + visitor.types["UnionTypeA"] instanceof GraphQLUnionType + + // schema paths + + + def fieldX = schema.getFieldDefinition(coordinates("ObjectTypeX", "fieldX")) + def fieldXArg = fieldX.getArgument("arg") + toNames(fieldXArg, visitor.pathsToElement[fieldXArg]) == [ + "arg", + "fieldX", "ObjectTypeX", "ObjectTypeX!", "[ObjectTypeX!]", "[ObjectTypeX!]!", + "fieldAToX", "ObjectTypeA", "ObjectTypeA!", "[ObjectTypeA!]", "[ObjectTypeA!]!", + "object", "Query"] + + def argInputType = fieldXArg.getType() as GraphQLInputObjectType + def inputFieldA = argInputType.getFieldDefinition("fieldA") + + toNames(inputFieldA, visitor.pathsToElement[inputFieldA]) == [ + "fieldA", "InputObjectTypeA", "arg", + "fieldX", "ObjectTypeX", "ObjectTypeX!", "[ObjectTypeX!]", "[ObjectTypeX!]!", + "fieldAToX", "ObjectTypeA", "ObjectTypeA!", "[ObjectTypeA!]", "[ObjectTypeA!]!", + "object", "Query"] + + } + + def "can transform schemas via this pattern"() { + def sdl = """ + type Query { + f : xfoo + } + + type xfoo { + bar : xbar + } + + type xbar { + baz : String + } + + """ + + def schema = TestUtil.schema(sdl) + + def schemaVisitor = new GraphQLSchemaVisitor() { + + @Override + GraphQLSchemaTraversalControl visitObjectType(GraphQLObjectType objectType, GraphQLSchemaVisitor.ObjectVisitorEnvironment environment) { + if (objectType.name.startsWith("x")) { + def newName = objectType.name.replaceFirst("x", "").capitalize() + def newType = objectType.transform { it.name(newName) } + return environment.changeNode(newType) + } + return environment.ok(); + } + } + + when: + def newSchema = new SchemaTransformer().transform(schema, schemaVisitor.toTypeVisitor()) + then: + newSchema.getType("Foo") instanceof GraphQLObjectType + newSchema.getType("Bar") instanceof GraphQLObjectType + } + + def "can change things at the schema element level and its does not continue"() { + def sdl = """ + type Query { + f : xfoo + } + + type xfoo { + bar : xbar + } + + type xbar { + baz : String + } + + """ + + def schema = TestUtil.schema(sdl) + + def schemaVisitor = new GraphQLSchemaVisitor() { + + @Override + GraphQLSchemaTraversalControl visitSchemaElement(GraphQLSchemaElement schemaElement, GraphQLSchemaVisitor.SchemaElementVisitorEnvironment environment) { + if (schemaElement instanceof GraphQLObjectType) { + GraphQLObjectType objectType = schemaElement + if (objectType.name.startsWith("x")) { + def newName = objectType.name.replaceFirst("x", "y").capitalize() + def newType = objectType.transform { it.name(newName) } + return environment.changeNode(newType) + } + } + return environment.ok(); + } + + @Override + GraphQLSchemaTraversalControl visitObjectType(GraphQLObjectType objectType, GraphQLSchemaVisitor.ObjectVisitorEnvironment environment) { + // this wont be called if we changed it + if (objectType.name.startsWith("x")) { + assert false, "This should not be called for X object types" + } + return environment.ok(); + } + } + + when: + def newSchema = new SchemaTransformer().transform(schema, schemaVisitor.toTypeVisitor()) + then: + newSchema.getType("Yfoo") instanceof GraphQLObjectType + newSchema.getType("Ybar") instanceof GraphQLObjectType + } + + def "can quit visitation"() { + + def visited = [] + def schemaVisitor = new GraphQLSchemaVisitor() { + + @Override + GraphQLSchemaTraversalControl visitSchemaElement(GraphQLSchemaElement schemaElement, GraphQLSchemaVisitor.SchemaElementVisitorEnvironment environment) { + def name = GraphQLTypeUtil.simplePrint(schemaElement) + if (name.toLowerCase().startsWith("x")) { + visited.add(name) + if (name.contains("Quit")) { + return environment.quit() + } + } + return environment.ok() + } + } + when: // test quit + + def sdl = """ + type Query { + xField(xQuit : XInputType) : XObjectType + } + + type XObjectType { + xObj(xArg : String) : XObjectType2 + } + + type XObjectType2 { + xObj2 : XObjectType2 + } + + input XInputType { + xinA : String + } + + """ + + def schema = TestUtil.schema(sdl) + new SchemaTransformer().transform(schema,schemaVisitor.toTypeVisitor()) + + then: + visited == ["xField", "xQuit",] + } +} diff --git a/src/test/groovy/graphql/util/AnonymizerTest.groovy b/src/test/groovy/graphql/util/AnonymizerTest.groovy new file mode 100644 index 0000000000..6865879f55 --- /dev/null +++ b/src/test/groovy/graphql/util/AnonymizerTest.groovy @@ -0,0 +1,876 @@ +package graphql.util + +import graphql.AssertException +import graphql.TestUtil +import graphql.schema.idl.DirectiveInfo +import graphql.schema.idl.SchemaPrinter +import spock.lang.Specification + +class AnonymizerTest extends Specification { + + def "simple schema and query"() { + given: + def schema = TestUtil.schema(""" + type Query { + foo: Foo + } + type Foo { + bar1: String + bar2: ID + } + """) + def query = "{foo{bar1 bar2}}" + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1: Object2 +} + +type Object2 { + field2: String + field3: ID +} +""" + newQuery == "{field1{field2 field3}}" + } + + def "query with fragments"() { + given: + def schema = TestUtil.schema(""" + type Query { + foo: Foo + } + type Foo { + bar1: String + bar2: ID + } + """) + def query = "{...MyFragment foo {... on Foo{bar1 bar2}}} fragment MyFragment on Query{foo {bar1 bar2 }}" + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1: Object2 +} + +type Object2 { + field2: String + field3: ID +} +""" + newQuery == "{...Fragment1 field1{...on Object2{field2 field3}}} fragment Fragment1 on Object1 {field1{field2 field3}}" + + } + + def "query with arguments"() { + given: + def schema = TestUtil.schema(""" + type Query { + foo(id: ID, otherArg: String): Foo + } + type Foo { + bar1(someArg: Boolean): String + bar2: ID + } + """) + def query = '{foo(id: "123", otherArg: "456") {bar1 bar2 }}' + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1(argument1: ID, argument2: String): Object2 +} + +type Object2 { + field2(argument3: Boolean): String + field3: ID +} +""" + newQuery == '{field1(argument1:"stringValue1",argument2:"stringValue2"){field2 field3}}' + + } + + def "query with operation and variable names"() { + given: + def schema = TestUtil.schema(""" + type Query { + foo(id: ID, otherArg: String): Foo + } + type Foo { + bar1(someArg: Boolean): String + bar2(otherId: ID): ID + } + """) + def query = 'query myOperation($myVar:ID) {foo(id: $myVar, otherArg: "456") {bar1 bar2(otherId: $myVar) }}' + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query], [myVar: "myVarValue"]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1(argument1: ID, argument2: String): Object2 +} + +type Object2 { + field2(argument3: Boolean): String + field3(argument4: ID): ID +} +""" + newQuery == 'query operation($var1:ID){field1(argument1:$var1,argument2:"stringValue1"){field2 field3(argument4:$var1)}}' + + + } + + def "rejects query with multiple operations"() { + given: + def schema = TestUtil.schema(""" + type Query { + foo: String + } + """) + def query = 'query myOperation{foo} query myOtherQuery{foo}' + + when: + Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + + then: + def assertException = thrown(AssertException) + assertException.getMessage().contains("Query must have exactly one operation") + + } + + def "replace values"() { + given: + def schema = TestUtil.schema(""" + + type Query { + foo(myInput: MyInput!): String + foo2(arg: String = "toBeReplaced"): String + foo3(arg: [[String!]!]! = [["defaultValueList"]]): String + foo4(arg: Weekend! = SATURDAY): String + foo5(arg: MyInput! = { foo2: "default", foo5: SUNDAY, foo6: { foo1: 10 } } ): String + foo6: Object + } + input MyInput { + foo1: Int + foo2: String = "myDefaultValue" + foo3: Int = 1234 + foo4: Int = 4567 + foo5: Weekend = SUNDAY + foo6: MyInput + } + + enum Weekend { + SATURDAY + SUNDAY + } + + type Object implements Iface { + id: String + # default value must match across hierarchy + bar(arg: MyInput = {foo2: "adefault", foo5: SATURDAY}): String + } + + interface Iface { + id: String + + bar(arg: MyInput = {foo2: "adefault", foo5: SATURDAY}): String + } + """) + def query = ''' + query myQuery($myVar: String = "someValue", + $varFoo3: [[String!]!]! = [["defaultValueList"]], + $varFoo4: Weekend! = SATURDAY, + $varFoo5: MyInput! = { foo2: "default", foo5: SUNDAY, foo6: { foo1: 10 } }){ + foo(myInput: {foo1: 8923, foo2: $myVar }) + foo3(arg: $varFoo3) + foo4(arg: $varFoo4) + foo5(arg: $varFoo5) + } + ''' + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """\ + schema { + query: Object1 + } + + interface Interface1 { + field7: String + field8(argument6: InputObject1 = {inputField2 : "stringValue5", inputField5 : EnumValue1}): String + } + + type Object1 { + field1(argument1: InputObject1!): String + field2(argument2: String = "stringValue2"): String + field3(argument3: [[String!]!]! = [["stringValue3"]]): String + field4(argument4: Enum1! = EnumValue1): String + field5(argument5: InputObject1! = {inputField2 : "stringValue4", inputField5 : EnumValue2, inputField6 : {inputField1 : 3}}): String + field6: Object2 + } + + type Object2 implements Interface1 { + field7: String + field8(argument6: InputObject1 = {inputField2 : "stringValue5", inputField5 : EnumValue1}): String + } + + enum Enum1 { + EnumValue1 + EnumValue2 + } + + input InputObject1 { + inputField1: Int + inputField2: String = "stringValue1" + inputField3: Int = 1 + inputField4: Int = 2 + inputField5: Enum1 = EnumValue2 + inputField6: InputObject1 + } + """.stripIndent() + newQuery == 'query operation($var1:String="stringValue1",$var2:[[String!]!]!=[["stringValue2"]],$var3:Enum1!=EnumValue1,$var4:InputObject1!={inputField2:"stringValue3",inputField5:EnumValue2,inputField6:{inputField1:2}}){field1(argument1:{inputField1:1,inputField2:$var1}) field3(argument3:$var2) field4(argument4:$var3) field5(argument5:$var4)}' + } + + def "query with aliases"() { + given: + def schema = TestUtil.schema(""" + type Query { + foo: Foo + } + type Foo { + bar1: String + bar2: ID + } + """) + def query = "{myAlias: foo { anotherOne: bar2}}" + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newQuery = result.queries[0] + + then: + newQuery == "{alias1:field1{alias2:field3}}" + } + + def "complex schema"() { + given: + def schema = TestUtil.schema(""" + type Query { + pets: Pet + allPets: AllPets + } + enum PetKind { + FRIENDLY + NOT_FRIENDLY + } + + interface Pet { + name: String + petKind: PetKind + } + type Dog implements Pet { + name: String + dogField: String + petKind: PetKind + } + type Cat implements Pet { + name: String + catField: String + petKind: PetKind + } + union AllPets = Dog | Cat + """) + + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object1 +} + +interface Interface1 { + field2: String + field3: Enum1 +} + +union Union1 = Object2 | Object3 + +type Object1 { + field1: Interface1 + field4: Union1 +} + +type Object2 implements Interface1 { + field2: String + field3: Enum1 + field5: String +} + +type Object3 implements Interface1 { + field2: String + field3: Enum1 + field6: String +} + +enum Enum1 { + EnumValue1 + EnumValue2 +} +""" + } + + def "interface hierarchies with arguments"() { + given: + def schema = TestUtil.schema(""" + type Query { + pets: Pet + } + + interface Pet { + name: String + } + interface GoodPet implements Pet { + name(nameArg1: String): String + goodScore: Int + } + type Cat implements GoodPet & Pet{ + name(nameArg1:String, nameArg2: ID): String + goodScore: Int + catField: ID + } + + interface ProblematicPet implements Pet { + name(nameArg3:String): String + problemField: Float + } + interface AnotherInterface implements ProblematicPet & Pet { + name(nameArg3: String, nameArg4: Float): String + problemField: Float + otherField: Boolean + } + type Dog implements AnotherInterface & ProblematicPet & Pet { + name(nameArg3: String, nameArg4: Float): String + problemField: Float + otherField: Boolean + dogField: Int + } + """) + + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object3 +} + +interface Interface1 implements Interface2 { + field1(argument1: String): String + field2: Int +} + +interface Interface2 { + field1: String +} + +interface Interface3 implements Interface2 { + field1(argument3: String): String + field4: Float +} + +interface Interface4 implements Interface2 & Interface3 { + field1(argument3: String, argument4: Float): String + field4: Float + field5: Boolean +} + +type Object1 implements Interface1 & Interface2 { + field1(argument1: String, argument2: ID): String + field2: Int + field3: ID +} + +type Object2 implements Interface2 & Interface3 & Interface4 { + field1(argument3: String, argument4: Float): String + field4: Float + field5: Boolean + field6: Int +} + +type Object3 { + field7: Interface2 +} +""" + } + + def "simple interface hierarchies with arguments"() { + given: + def schema = TestUtil.schema(""" + type Query { + pets: Pet + } + + interface Pet { + name(nameArg: String): String + } + type Dog implements Pet { + name(nameArg: String, otherOptionalArg: Float): String + } + """) + + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object2 +} + +interface Interface1 { + field1(argument1: String): String +} + +type Object1 implements Interface1 { + field1(argument1: String, argument2: Float): String +} + +type Object2 { + field2: Interface1 +} +""" + } + + def "query with introspection typename"() { + given: + def schema = TestUtil.schema(""" + type Query { + pets: Pet + } + interface Pet { + name:String + } + type Dog implements Pet { + name:String + } + """) + + def query = "{pets {__typename otherTypeName:__typename name}}" + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newQuery = result.queries[0] + + then: + newQuery == "{field2{__typename alias1:__typename field1}}" + } + + def "handles cyclic types"() { + def schema = TestUtil.schema(""" + type Query { + query: Foo + } + type Foo { + foo: [Bar] + } + + type Bar { + bar: [Foo] + } + """) + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1: Object2 +} + +type Object2 { + field2: [Object3] +} + +type Object3 { + field3: [Object2] +} +""" + } + + def "descriptions are removed"() { + def schema = TestUtil.schema(""" + "DOC" + type Query { + "DOC" + query( + "DOC" + arg: String): Foo + } + "DOC" + type Foo { + "DOC" + foo: String + } + + """) + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1(argument1: String): Object2 +} + +type Object2 { + field2: String +} +""" + } + + def "deprecated reasons are removed"() { + def schema = TestUtil.schema(""" + type Query { + foo: String @deprecated(reason: "secret") + } + """) + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object1 +} + +type Object1 { + field1: String @deprecated +} +""" + } + + def "same field across hierarchy"() { + def schema = TestUtil.schema(""" + type Query { + foo: Interface2 + } +interface Interface1 implements Interface2 & Interface3 { + id: ID! +} +interface Interface4 implements Interface1 & Interface2 & Interface3 { + id: ID! +} +interface Interface5 implements Interface1 & Interface2 & Interface3 & Interface6{ + id: ID! +} +interface Interface2 { + id: ID! +} + +interface Interface3 { + id: ID! +} +interface Interface6 { + id: ID! +} + +interface Interface7 implements Interface6 { + id: ID! +} + + + """) + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectiveDefinitions(false)).print(result) + + then: + newSchema == """schema { + query: Object1 +} + +interface Interface1 implements Interface2 & Interface3 { + field1: ID! +} + +interface Interface2 { + field1: ID! +} + +interface Interface3 { + field1: ID! +} + +interface Interface4 implements Interface1 & Interface2 & Interface3 { + field1: ID! +} + +interface Interface5 implements Interface1 & Interface2 & Interface3 & Interface6 { + field1: ID! +} + +interface Interface6 { + field1: ID! +} + +interface Interface7 implements Interface6 { + field1: ID! +} + +type Object1 { + field2: Interface2 +} +""" + } + + def "complex schema with directives"() { + given: + def schema = TestUtil.schema(""" + directive @key(fields: String! = "sensitive") repeatable on SCHEMA | SCALAR + | OBJECT + | FIELD_DEFINITION + | ARGUMENT_DEFINITION + | INTERFACE + | UNION + | ENUM + | ENUM_VALUE + | INPUT_OBJECT + | INPUT_FIELD_DEFINITION + + schema @key(fields: "hello") { + query: Query + } + + type Query @key(fields: "hello2") { + pets: Pet @key(fields: "hello3") + allPets: AllPets @deprecated(reason: "no money") + } + + enum PetKind @key(fields: "hello4") { + FRIENDLY @key(fields: "hello5") + NOT_FRIENDLY + } + + interface Pet @key(fields: "hello6") { + name: String + petKind: PetKind + } + type Dog implements Pet { + name: String + dogField(limit: LimitInput): String + petKind: PetKind + } + + input LimitInput @key(fields: "hello7") { + value: Int @key(fields: "hello8") + } + + union AllPets @key(fields: "hello9") = Dog + """) + + when: + def result = Anonymizer.anonymizeSchema(schema) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions() + .includeDirectives({!DirectiveInfo.isGraphqlSpecifiedDirective(it) || it == "deprecated"})) + .print(result) + + then: + newSchema == """schema @Directive1(argument1 : "stringValue1"){ + query: Object1 +} + +directive @Directive1(argument1: String! = "stringValue4") repeatable on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +interface Interface1 @Directive1(argument1 : "stringValue12") { + field2: String + field3: Enum1 +} + +union Union1 @Directive1(argument1 : "stringValue21") = Object2 + +type Object1 @Directive1(argument1 : "stringValue8") { + field1: Interface1 @Directive1(argument1 : "stringValue9") + field4: Union1 @deprecated +} + +type Object2 implements Interface1 { + field2: String + field3: Enum1 + field5(argument2: InputObject1): String +} + +enum Enum1 @Directive1(argument1 : "stringValue15") { + EnumValue1 @Directive1(argument1 : "stringValue18") + EnumValue2 +} + +input InputObject1 @Directive1(argument1 : "stringValue24") { + inputField1: Int @Directive1(argument1 : "stringValue27") +} +""" + } + + def "query with directives"() { + given: + def schema = TestUtil.schema(""" + directive @whatever(myArg: String = "secret") on FIELD + type Query { + foo: Foo + } + type Foo { + bar: String + } + """) + def query = 'query{foo @whatever {bar @whatever }}' + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(SchemaPrinter.ExcludeGraphQLSpecifiedDirectivesPredicate)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +directive @Directive1(argument1: String = "stringValue1") on FIELD + +type Object1 { + field1: Object2 +} + +type Object2 { + field2: String +} +""" + newQuery == "{field1 @Directive1{field2 @Directive1}}" + + } + + def "query with directives with arguments"() { + given: + def schema = TestUtil.schema(""" + directive @whatever(myArg: String = "secret") on FIELD + type Query { + foo: Foo + } + type Foo { + bar: String + } + """) + def query = '{foo @whatever(myArg: "secret2") {bar @whatever(myArg: "secret3") }}' + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(SchemaPrinter.ExcludeGraphQLSpecifiedDirectivesPredicate)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +directive @Directive1(argument1: String = "stringValue1") on FIELD + +type Object1 { + field1: Object2 +} + +type Object2 { + field2: String +} +""" + newQuery == '{field1 @Directive1(argument1:"stringValue2"){field2 @Directive1(argument1:"stringValue1")}}' + + } + + def "query with directives with arguments and variables"() { + given: + def schema = TestUtil.schema(""" + directive @whatever(myArg: String = "secret") on FIELD + type Query { + foo: Foo + } + type Foo { + bar(barArg: String): String + } + """) + def query = 'query($myVar: String = "myDefaultValue"){foo @whatever(myArg: $myVar) {bar(barArg: "barArgValue") @whatever(myArg: "secret3") }}' + + when: + def result = Anonymizer.anonymizeSchemaAndQueries(schema, [query]) + def newSchema = new SchemaPrinter(SchemaPrinter.Options.defaultOptions().includeDirectives(SchemaPrinter.ExcludeGraphQLSpecifiedDirectivesPredicate)).print(result.schema) + def newQuery = result.queries[0] + + then: + newSchema == """schema { + query: Object1 +} + +directive @Directive1(argument1: String = "stringValue1") on FIELD + +type Object1 { + field1: Object2 +} + +type Object2 { + field2(argument2: String): String +} +""" + newQuery == 'query ($var1:String="stringValue3"){field1 @Directive1(argument1:$var1){field2(argument2:"stringValue2") @Directive1(argument1:"stringValue1")}}' + + } +} diff --git a/src/test/groovy/graphql/util/CyclicSchemaAnalyzerTest.groovy b/src/test/groovy/graphql/util/CyclicSchemaAnalyzerTest.groovy new file mode 100644 index 0000000000..d24c2289c6 --- /dev/null +++ b/src/test/groovy/graphql/util/CyclicSchemaAnalyzerTest.groovy @@ -0,0 +1,311 @@ +package graphql.util + + +import graphql.TestUtil +import spock.lang.Specification + +class CyclicSchemaAnalyzerTest extends Specification { + + def "simple cycle"() { + given: + def sdl = ''' + + type Query { + hello: [Foo] + } + type Foo { + foo: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 1 + cycles[0].toString() == "[Foo.foo, Foo]" + + } + + def "simple cycle with interfaces"() { + given: + def sdl = ''' + + type Query { + hello: [Foo] + } + interface Foo { + foo: Foo + } + type Impl implements Foo { + foo: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 1 + cycles[0].toString() == "[Foo.foo, Foo]" + + } + + def "input field cycle"() { + given: + def sdl = ''' + type Query { + hello(i: I): String + } + input I { + foo: I + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 1 + cycles[0].toString() == "[I.foo, I]" + + } + + def "multiple cycles"() { + given: + def sdl = ''' + + type Query { + hello: [Foo] + } + type Foo { + bar: Bar + foo: Foo + } + type Bar { + bar: [Bar]! + foo: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 3 + cycles[0].toString() == "[Foo.bar, Bar, Bar.foo, Foo]" + cycles[1].toString() == "[Foo.foo, Foo]" + cycles[2].toString() == "[Bar.bar, Bar]" + + } + + def "larger cycle"() { + given: + def sdl = ''' + + type Query { + hello: [Foo] + } + type Foo { + bar: Bar + } + type Bar { + subBar: SubBar + } + type SubBar { + foo: Foo + } + + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 1 + cycles[0].toString() == "[Foo.bar, Bar, Bar.subBar, SubBar, SubBar.foo, Foo]" + + } + + def "two parents and no cycle"() { + given: + def sdl = ''' + + type Query { + hello: Foo1 + hello2: Foo2 + } + type Foo1 { + bar: Bar + } + type Foo2 { + bar: Bar + } + type Bar { + id: ID + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 0 + + } + + def "cycle test"() { + given: + def sdl = ''' + type Query { + foo: Foo + } + type Foo { + f1: Foo + f2: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 2 + cycles[0].toString() == "[Foo.f1, Foo]" + cycles[1].toString() == "[Foo.f2, Foo]" + + + } + + def "cycle test 2"() { + given: + def sdl = ''' + type Query { + foo: Foo + } + type Foo { + f1: Foo + f2: Bar + } + type Bar { + foo: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 2 + cycles[0].toString() == "[Foo.f1, Foo]" + cycles[1].toString() == "[Foo.f2, Bar, Bar.foo, Foo]" + + } + + def "cycle test 3"() { + given: + def sdl = ''' + type Query { + foo: Foo + } + type Foo { + issues: [IssueConnection] + } + type IssueConnection { + edges: [Edge] + nodes: [Issue] + } + type Edge { + node: Issue + } + type Issue { + foo: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + //TODO: should be 2 + cycles.size() == 2 + cycles[0].toString() == "[Foo.issues, IssueConnection, IssueConnection.nodes, Issue, Issue.foo, Foo]" + cycles[1].toString() == "[Foo.issues, IssueConnection, IssueConnection.edges, Edge, Edge.node, Issue, Issue.foo, Foo]" + + } + + def "cycle test 4"() { + given: + def sdl = ''' + type Query { + foo: Foo + } + type Foo { + issues: [IssueConnection] + } + type IssueConnection { + edges: [Edge] + nodes: [Foo] + } + type Edge { + node: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 2 + cycles[0].toString() == "[Foo.issues, IssueConnection, IssueConnection.nodes, Foo]" + cycles[1].toString() == "[Foo.issues, IssueConnection, IssueConnection.edges, Edge, Edge.node, Foo]" + + } + + def "cycle with Union"() { + given: + def sdl = ''' + type Query { + foo: Foo + } + union Foo = Bar | Baz + type Bar { + bar: Foo + } + type Baz { + bar: Foo + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema) + + then: + cycles.size() == 2 + cycles[0].toString() == "[Foo, Baz, Baz.bar]" + cycles[1].toString() == "[Foo, Bar, Bar.bar]" + + } + + def "introspection cycles "() { + given: + def sdl = ''' + type Query { + hello: String + } + ''' + def schema = TestUtil.schema(sdl) + when: + def cycles = CyclicSchemaAnalyzer.findCycles(schema, false) + + then: + cycles.size() == 6 + cycles[0].toString() == "[__Type.fields, __Field, __Field.type, __Type]" + cycles[1].toString() == "[__Type.fields, __Field, __Field.args, __InputValue, __InputValue.type, __Type]" + cycles[2].toString() == "[__Type.interfaces, __Type]" + cycles[3].toString() == "[__Type.possibleTypes, __Type]" + cycles[4].toString() == "[__Type.inputFields, __InputValue, __InputValue.type, __Type]" + cycles[5].toString() == "[__Type.ofType, __Type]" + + } +} diff --git a/src/test/groovy/graphql/util/EscapeUtilTest.groovy b/src/test/groovy/graphql/util/EscapeUtilTest.groovy index 3c246bdf5e..be41f2e0ed 100644 --- a/src/test/groovy/graphql/util/EscapeUtilTest.groovy +++ b/src/test/groovy/graphql/util/EscapeUtilTest.groovy @@ -28,4 +28,24 @@ class EscapeUtilTest extends Specification { '''"{"operator":"eq", "operands": []}"''' | '''\\"{\\"operator\\":\\"eq\\", \\"operands\\": []}\\"''' } + def "escapeJsonStringTo produces correct escaped output"() { + given: + def strValue = new StringBuilder() + + when: + EscapeUtil.escapeJsonStringTo(strValue, input) + + then: + strValue.toString() == expected + + where: + input | expected + '' | '' + 'plain' | 'plain' + 'quote-"and\\' | 'quote-\\"and\\\\' + 'tab\tnewline\n' | 'tab\\tnewline\\n' + 'combo-"\\\b\f\n\r\t' | 'combo-\\"\\\\\\b\\f\\n\\r\\t' + } + + } diff --git a/src/test/groovy/graphql/util/FpKitTest.groovy b/src/test/groovy/graphql/util/FpKitTest.groovy index ddfcc05451..21dad8ef1f 100644 --- a/src/test/groovy/graphql/util/FpKitTest.groovy +++ b/src/test/groovy/graphql/util/FpKitTest.groovy @@ -1,12 +1,19 @@ package graphql.util +import com.google.common.collect.ImmutableList import spock.lang.Specification +import java.util.function.Supplier + class FpKitTest extends Specification { class IterableThing implements Iterable { Iterable delegate + IterableThing(Iterable delegate) { + this.delegate = delegate + } + @Override Iterator iterator() { return delegate.iterator() @@ -36,9 +43,196 @@ class FpKitTest extends Specification { actual == expected when: - IterableThing iterableThing = new IterableThing(delegate: ["a", "b", "c"]) + IterableThing iterableThing = new IterableThing(["a", "b", "c"]) actual = FpKit.toCollection(iterableThing) then: actual == expected } + + void "memoized supplier"() { + + def count = 0 + Supplier supplier = { -> count++; return count } + + when: + def memoizeSupplier = FpKit.intraThreadMemoize(supplier) + def val1 = supplier.get() + def val2 = supplier.get() + def memoVal1 = memoizeSupplier.get() + def memoVal2 = memoizeSupplier.get() + + then: + val1 == 1 + val2 == 2 + + memoVal1 == 3 + memoVal2 == 3 + } + + def "toListOrSingletonList works"() { + def birdArr = ["Parrot", "Cockatiel", "Pigeon"] as String[] + + when: + def l = FpKit.toListOrSingletonList(birdArr) + then: + l == ["Parrot", "Cockatiel", "Pigeon"] + + when: + l = FpKit.toListOrSingletonList(["Parrot", "Cockatiel", "Pigeon"]) + then: + l == ["Parrot", "Cockatiel", "Pigeon"] + + when: + l = FpKit.toListOrSingletonList(["Parrot", "Cockatiel", "Pigeon"].stream()) + then: + l == ["Parrot", "Cockatiel", "Pigeon"] + + when: + l = FpKit.toListOrSingletonList(["Parrot", "Cockatiel", "Pigeon"].stream().iterator()) + then: + l == ["Parrot", "Cockatiel", "Pigeon"] + + when: + l = FpKit.toListOrSingletonList("Parrot") + then: + l == ["Parrot"] + } + + class Person { + String name + String city + + Person(String name) { + this.name = name + } + + Person(String name, String city) { + this.name = name + this.city = city + } + + String getName() { + return name + } + + String getCity() { + return city + } + } + + def a = new Person("a", "New York") + def b = new Person("b", "New York") + def c1 = new Person("c", "Sydney") + def c2 = new Person("c", "London") + + def "getByName tests"() { + + when: + def map = FpKit.getByName([a, b, c1, c2], { it -> it.getName() }) + then: + map == ["a": a, "b": b, c: c1] + + when: + map = FpKit.getByName([a, b, c1, c2], { it -> it.getName() }, { it1, it2 -> it2 }) + then: + map == ["a": a, "b": b, c: c2] + } + + def "groupingBy tests"() { + + when: + Map> map = FpKit.groupingBy([a, b, c1, c2], { it -> it.getCity() }) + then: + map == ["New York": [a, b], "Sydney": [c1], "London": [c2]] + + when: + map = FpKit.filterAndGroupingBy([a, b, c1, c2], { it -> it != c1 }, { it -> it.getCity() }) + then: + map == ["New York": [a, b], "London": [c2]] + + } + + def "toMapByUniqueKey works"() { + + when: + Map map = FpKit.toMapByUniqueKey([a, b, c1], { it -> it.getName() }) + then: + map == ["a": a, "b": b, "c": c1] + + when: + FpKit.toMapByUniqueKey([a, b, c1, c2], { it -> it.getName() }) + then: + def e = thrown(IllegalStateException.class) + e.message.contains("Duplicate key") + } + + def "findOne test"() { + when: + def opt = FpKit.findOne([a, b, c1, c2], { it -> it.getName() == "c" }) + then: + opt.isPresent() + opt.get() == c1 + + when: + opt = FpKit.findOne([a, b, c1, c2], { it -> it.getName() == "d" }) + then: + opt.isEmpty() + + when: + opt = FpKit.findOne([a, b, c1, c2], { it -> it.getName() == "a" }) + then: + opt.isPresent() + opt.get() == a + } + + def "filterList works"() { + when: + def list = FpKit.filterList([a, b, c1, c2], { it -> it.getName() == "c" }) + then: + list == [c1, c2] + } + + def "set intersection works"() { + def set1 = ["A", "B", "C"] as Set + def set2 = ["A", "C", "D"] as Set + def singleSetA = ["A"] as Set + def disjointSet = ["X", "Y"] as Set + + when: + def intersection = FpKit.intersection(set1, set2) + then: + intersection == ["A", "C"] as Set + + when: // reversed parameters + intersection = FpKit.intersection(set2, set1) + then: + intersection == ["A", "C"] as Set + + when: // singles + intersection = FpKit.intersection(set1, singleSetA) + then: + intersection == ["A"] as Set + + when: // singles reversed + intersection = FpKit.intersection(singleSetA, set1) + then: + intersection == ["A"] as Set + + when: // disjoint + intersection = FpKit.intersection(set1, disjointSet) + then: + intersection.isEmpty() + + when: // disjoint reversed + intersection = FpKit.intersection(disjointSet, set1) + then: + intersection.isEmpty() + } + + def "test sized allocation"() { + when: + def newArrayList = FpKit.arrayListSizedTo(["a", "b", "c"]) + then: + newArrayList instanceof ArrayList + } } diff --git a/src/test/groovy/graphql/util/IdGeneratorTest.groovy b/src/test/groovy/graphql/util/IdGeneratorTest.groovy new file mode 100644 index 0000000000..99a9344012 --- /dev/null +++ b/src/test/groovy/graphql/util/IdGeneratorTest.groovy @@ -0,0 +1,17 @@ +package graphql.util + +import spock.lang.Specification + +class IdGeneratorTest extends Specification { + def "can generate uuids"() { + when: + def set = new HashSet() + for (int i = 0; i < 1000; i++) { + set.add(IdGenerator.uuid().toString()); + } + + then: + // should this fail - the universe has ended and has retracted back into the singularity + set.size() == 1000 + } +} diff --git a/src/test/groovy/graphql/util/LockKitTest.groovy b/src/test/groovy/graphql/util/LockKitTest.groovy new file mode 100644 index 0000000000..e205ff0574 --- /dev/null +++ b/src/test/groovy/graphql/util/LockKitTest.groovy @@ -0,0 +1,70 @@ +package graphql.util + +import spock.lang.Specification + +class LockKitTest extends Specification { + + + def "can run code under a lock (simple test)"() { + def sideEffect = 0 + + when: + LockKit.ReentrantLock lockedCode = new LockKit.ReentrantLock() + lockedCode.runLocked { sideEffect++ } + + then: + sideEffect == 1 + } + + def "can call code under a lock (simple test)"() { + + when: + LockKit.ReentrantLock lockedCode = new LockKit.ReentrantLock() + def val = lockedCode.callLocked { return "x" } + + then: + val == "x" + } + + def "is reentrant"() { + + def sideEffect = 0 + + when: + LockKit.ReentrantLock lockedCode = new LockKit.ReentrantLock() + lockedCode.runLocked { + sideEffect++ + lockedCode.runLocked { + sideEffect++ + } + } + + then: + sideEffect == 2 + } + + def "can compute once"() { + def sideEffect = 0 + + when: + LockKit.ComputedOnce computedOnce = new LockKit.ComputedOnce() + + then: + !computedOnce.hasBeenComputed() + sideEffect == 0 + + when: + computedOnce.runOnce { sideEffect++ } + + then: + computedOnce.hasBeenComputed() + sideEffect == 1 + + when: + computedOnce.runOnce { sideEffect++ } + + then: + computedOnce.hasBeenComputed() + sideEffect == 1 + } +} diff --git a/src/test/groovy/graphql/util/LogKitTest.groovy b/src/test/groovy/graphql/util/LogKitTest.groovy deleted file mode 100644 index eeb1582baa..0000000000 --- a/src/test/groovy/graphql/util/LogKitTest.groovy +++ /dev/null @@ -1,14 +0,0 @@ -package graphql.util - - -import spock.lang.Specification - -class LogKitTest extends Specification { - - def "logger has a prefixed name"() { - when: - def logger = LogKit.getNotPrivacySafeLogger(LogKitTest.class) - then: - logger.getName() == "notprivacysafe.graphql.util.LogKitTest" - } -} diff --git a/src/test/groovy/graphql/util/PairTest.groovy b/src/test/groovy/graphql/util/PairTest.groovy new file mode 100644 index 0000000000..f64f9127a4 --- /dev/null +++ b/src/test/groovy/graphql/util/PairTest.groovy @@ -0,0 +1,31 @@ +package graphql.util + +import spock.lang.Specification + +class PairTest extends Specification { + def "constructor initializes fields correctly"() { + when: + def pair = new Pair<>("hello", 123) + + then: + pair.first == "hello" + pair.second == 123 + } + + def "static pair method creates Pair instance"() { + when: + def pair = Pair.pair("foo", "bar") + + then: + pair instanceof Pair + pair.first == "foo" + pair.second == "bar" + } + + def "toString returns formatted string"() { + expect: + new Pair<>(1, 2).toString() == "(1, 2)" + Pair.pair("a", "b").toString() == "(a, b)" + new Pair<>(null, null).toString() == "(null, null)" + } +} diff --git a/src/test/groovy/graphql/util/StringKitTest.groovy b/src/test/groovy/graphql/util/StringKitTest.groovy new file mode 100644 index 0000000000..a2a428bce6 --- /dev/null +++ b/src/test/groovy/graphql/util/StringKitTest.groovy @@ -0,0 +1,22 @@ +package graphql.util + +import spock.lang.Specification + +class StringKitTest extends Specification { + + + def "can capitalise"() { + expect: + + def actual = StringKit.capitalize(input) + actual == expected + + where: + input | expected + null | null + "" | "" + "a" | "A" + "abc" | "Abc" + + } +} diff --git a/src/test/groovy/graphql/util/TreeParallelTransformerTest.groovy b/src/test/groovy/graphql/util/TreeParallelTransformerTest.groovy index dd740f59d1..d9f3eb5aa1 100644 --- a/src/test/groovy/graphql/util/TreeParallelTransformerTest.groovy +++ b/src/test/groovy/graphql/util/TreeParallelTransformerTest.groovy @@ -31,7 +31,7 @@ class TreeParallelTransformerTest extends Specification { def newDocument = parallelTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {foo2}" + printAstCompact(newDocument) == "{foo2}" } @@ -56,7 +56,7 @@ class TreeParallelTransformerTest extends Specification { def newDocument = parallelTransformer.transform(document, visitor) then: - printAstCompact(newDocument) == "query {foo2}" + printAstCompact(newDocument) == "{foo2}" } } diff --git a/src/test/groovy/graphql/util/TreeTransformerUtilTest.groovy b/src/test/groovy/graphql/util/TreeTransformerUtilTest.groovy new file mode 100644 index 0000000000..c46cdf08b5 --- /dev/null +++ b/src/test/groovy/graphql/util/TreeTransformerUtilTest.groovy @@ -0,0 +1,72 @@ +package graphql.util + +import spock.lang.Specification + +class TreeTransformerUtilTest extends Specification { + + def "changeNode in parallel mode with already changed node"() { + given: + def context = Mock(TraverserContext) + def zippers = [] + def adapter = Mock(NodeAdapter) + def originalNode = "original" + def newNode = "changed" + + def mockZipper = Mock(NodeZipper) + mockZipper.getCurNode() >> originalNode + zippers << mockZipper + + context.isParallel() >> true + context.isChanged() >> true + context.thisNode() >> originalNode + context.getVar(List) >> zippers + context.getVar(NodeAdapter) >> adapter + + when: + def result = TreeTransformerUtil.changeNode(context, newNode) + + then: + 1 * context.changeNode(newNode) + result == TraversalControl.CONTINUE + } + + def "deleteNode in sequential mode adds delete zipper to shared context"() { + given: + def context = Mock(TraverserContext) + def nodeZipper = Mock(NodeZipper) + def zipperQueue = Mock(Queue) + + context.isParallel() >> false + context.getVar(NodeZipper) >> nodeZipper + context.getSharedContextData() >> zipperQueue + nodeZipper.deleteNode() >> nodeZipper + + when: + def result = TreeTransformerUtil.deleteNode(context) + + then: + 1 * context.deleteNode() + 1 * zipperQueue.add(nodeZipper) + result == TraversalControl.CONTINUE + } + + def "insertBefore in sequential mode adds zipper to queue"() { + given: + def context = Mock(TraverserContext) + def zipper = Mock(NodeZipper) + def zipperQueue = Mock(Queue) + def toInsert = "insert-me" + + context.isParallel() >> false + context.getVar(NodeZipper) >> zipper + zipper.insertBefore(toInsert) >> zipper + context.getSharedContextData() >> zipperQueue + + when: + def result = TreeTransformerUtil.insertBefore(context, toInsert) + + then: + 1 * zipperQueue.add(zipper) + result == TraversalControl.CONTINUE + } +} diff --git a/src/test/groovy/graphql/util/javac/DynamicJavacSupport.java b/src/test/groovy/graphql/util/javac/DynamicJavacSupport.java new file mode 100644 index 0000000000..6655bcd599 --- /dev/null +++ b/src/test/groovy/graphql/util/javac/DynamicJavacSupport.java @@ -0,0 +1,157 @@ +package graphql.util.javac; + +import javax.tools.DiagnosticCollector; +import javax.tools.FileObject; +import javax.tools.ForwardingJavaFileManager; +import javax.tools.JavaCompiler; +import javax.tools.JavaFileManager; +import javax.tools.JavaFileObject; +import javax.tools.SimpleJavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.ToolProvider; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; +import java.net.URI; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import static java.util.Objects.requireNonNull; + + +/** + * This utility allows is to dynamically create Java classes and place them into + * floating class loaders. This will allow us to test class loader challenges + *

      + * Proprs to https://www.baeldung.com/java-string-compile-execute-code where + * most of this code came from. + */ +public class DynamicJavacSupport { + + private final JavaCompiler compiler; + private final InMemoryFileManager manager; + + public DynamicJavacSupport(ClassLoader parentClassLoader) { + compiler = ToolProvider.getSystemJavaCompiler(); + StandardJavaFileManager standardFileManager = compiler.getStandardFileManager(null, null, null); + manager = new InMemoryFileManager(parentClassLoader, standardFileManager); + } + + + public Class compile(String qualifiedClassName, String sourceCode) throws ClassNotFoundException { + + List sourceFiles = Collections.singletonList(new JavaSourceFromString(qualifiedClassName, sourceCode)); + + DiagnosticCollector diagnostics = new DiagnosticCollector<>(); + JavaCompiler.CompilationTask task = compiler.getTask(null, manager, diagnostics, null, null, sourceFiles); + + boolean result = task.call(); + + if (!result) { + diagnostics.getDiagnostics() + .forEach(d -> System.out.printf("dyna-javac : %s\n", d)); + throw new IllegalStateException("Could not compile " + qualifiedClassName + " as a class"); + } else { + ClassLoader classLoader = manager.getClassLoader(null); + Class clazz = classLoader.loadClass(qualifiedClassName); + return (Class) clazz; + } + } + + static class InMemoryFileManager extends ForwardingJavaFileManager { + private final InMemoryClassLoader loader; + private final Map compiledClasses; + + InMemoryFileManager(ClassLoader parentClassLoader, StandardJavaFileManager standardManager) { + super(standardManager); + this.compiledClasses = new ConcurrentHashMap<>(); + this.loader = new InMemoryClassLoader(parentClassLoader, this); + } + + @Override + public JavaFileObject getJavaFileForOutput(Location location, + String className, JavaFileObject.Kind kind, FileObject sibling) { + + JavaClassAsBytes classAsBytes = new JavaClassAsBytes(className, kind); + compiledClasses.put(className, classAsBytes); + + return classAsBytes; + } + + public Map getBytesMap() { + return compiledClasses; + } + + @Override + public ClassLoader getClassLoader(Location location) { + return loader; + } + } + + static class InMemoryClassLoader extends ClassLoader { + + private InMemoryFileManager manager; + + InMemoryClassLoader(ClassLoader parentClassLoader, InMemoryFileManager manager) { + super(parentClassLoader); + this.manager = requireNonNull(manager, "manager must not be null"); + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + + Map compiledClasses = manager.getBytesMap(); + + if (compiledClasses.containsKey(name)) { + byte[] bytes = compiledClasses.get(name).getBytes(); + return defineClass(name, bytes, 0, bytes.length); + } else { + throw new ClassNotFoundException(); + } + } + + } + + static class JavaSourceFromString extends SimpleJavaFileObject { + + + private String sourceCode; + + JavaSourceFromString(String name, String sourceCode) { + super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), + Kind.SOURCE); + this.sourceCode = requireNonNull(sourceCode, "sourceCode must not be null"); + } + + @Override + public CharSequence getCharContent(boolean ignoreEncodingErrors) { + return sourceCode; + } + + } + + static class JavaClassAsBytes extends SimpleJavaFileObject { + + + protected ByteArrayOutputStream bos = + new ByteArrayOutputStream(); + + JavaClassAsBytes(String name, Kind kind) { + super(URI.create("string:///" + name.replace('.', '/') + + kind.extension), kind); + } + + public byte[] getBytes() { + return bos.toByteArray(); + } + + @Override + public OutputStream openOutputStream() { + return bos; + } + + } + + +} diff --git a/src/test/groovy/graphql/util/javac/DynamicJavacSupportTest.groovy b/src/test/groovy/graphql/util/javac/DynamicJavacSupportTest.groovy new file mode 100644 index 0000000000..a07c4cbbd2 --- /dev/null +++ b/src/test/groovy/graphql/util/javac/DynamicJavacSupportTest.groovy @@ -0,0 +1,57 @@ +package graphql.util.javac + +import spock.lang.Specification + +class DynamicJavacSupportTest extends Specification { + + String sourceCode = ''' + package com.dynamic; + public class TestClass { + public String hello() { + return "world"; + } + } + ''' + + def "can compile things without a parent class loader"() { + + def javacSupport = new DynamicJavacSupport(null) + + when: + def compiledClass = javacSupport.compile("com.dynamic.TestClass", sourceCode) + def instance = compiledClass.getDeclaredConstructor().newInstance() + def runCodeMethod = compiledClass.getMethod("hello") + def value = runCodeMethod.invoke(instance) + + then: + value == "world" + + // with a null parent class loader, this class loader should not be able to see this code + when: + compiledClass.getClassLoader().loadClass(this.getClass().getCanonicalName()) + then: + thrown(ClassNotFoundException) + } + + + def "can compile things with a parent class loader"() { + + def javacSupport = new DynamicJavacSupport(this.getClass().getClassLoader()) + + when: + def compiledClass = javacSupport.compile("com.dynamic.TestClass", sourceCode) + def instance = compiledClass.getDeclaredConstructor().newInstance() + def runCodeMethod = compiledClass.getMethod("hello") + def value = runCodeMethod.invoke(instance) + + then: + noExceptionThrown() + value == "world" + + // with a parent class loader, this class loader should be able to see this code + when: + def backToUs = compiledClass.getClassLoader().loadClass(this.getClass().getCanonicalName()) + then: + backToUs === this.getClass() + } +} diff --git a/src/test/groovy/graphql/util/querygenerator/QueryGeneratorOptionsTest.groovy b/src/test/groovy/graphql/util/querygenerator/QueryGeneratorOptionsTest.groovy new file mode 100644 index 0000000000..78a0f4fe11 --- /dev/null +++ b/src/test/groovy/graphql/util/querygenerator/QueryGeneratorOptionsTest.groovy @@ -0,0 +1,80 @@ +package graphql.util.querygenerator + +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLFieldsContainer +import spock.lang.Specification + +import java.util.function.Predicate + +class QueryGeneratorOptionsTest extends Specification { + + def "default builder sets maxFieldCount to 10_000 and always-true predicates"() { + when: + def options = QueryGeneratorOptions.newBuilder().build() + + then: + options.maxFieldCount == 10_000 + options.filterFieldContainerPredicate.test(Mock(GraphQLFieldsContainer)) + options.filterFieldDefinitionPredicate.test(Mock(GraphQLFieldDefinition)) + } + + def "builder sets maxFieldCount to custom value within range"() { + when: + def options = QueryGeneratorOptions.newBuilder() + .maxFieldCount(500) + .build() + + then: + options.maxFieldCount == 500 + } + + def "builder throws exception if maxFieldCount is negative"() { + when: + QueryGeneratorOptions.newBuilder().maxFieldCount(-1) + + then: + def e = thrown(IllegalArgumentException) + e.message == "Max field count cannot be negative" + } + + def "builder throws exception if maxFieldCount exceeds MAX_FIELD_COUNT_LIMIT"() { + when: + QueryGeneratorOptions.newBuilder().maxFieldCount(10_001) + + then: + def e = thrown(IllegalArgumentException) + e.message == "Max field count cannot exceed 10000" + } + + def "builder uses custom field container predicate"() { + given: + def customPredicate = Mock(Predicate) + customPredicate.test(_) >> false + + when: + def options = QueryGeneratorOptions.newBuilder() + .filterFieldContainerPredicate(customPredicate) + .build() + + then: + !options.filterFieldContainerPredicate.test(Mock(GraphQLFieldsContainer)) + } + + def "builder uses custom field definition predicate"() { + given: + def customPredicate = { GraphQLFieldDefinition defn -> defn.name == "includeMe" } as Predicate + + and: + def included = Mock(GraphQLFieldDefinition) { getName() >> "includeMe" } + def excluded = Mock(GraphQLFieldDefinition) { getName() >> "skipMe" } + + when: + def options = QueryGeneratorOptions.newBuilder() + .filterFieldDefinitionPredicate(customPredicate) + .build() + + then: + options.filterFieldDefinitionPredicate.test(included) + !options.filterFieldDefinitionPredicate.test(excluded) + } +} diff --git a/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy b/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy new file mode 100644 index 0000000000..877dc11d73 --- /dev/null +++ b/src/test/groovy/graphql/util/querygenerator/QueryGeneratorTest.groovy @@ -0,0 +1,1128 @@ +package graphql.util.querygenerator + + +import graphql.TestUtil +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import graphql.validation.Validator +import spock.lang.Specification + + +class QueryGeneratorTest extends Specification { + def "generate query for simple type"() { + given: + def schema = """ + type Query { + bar(filter: String): Bar + } + + type Bar { + id: ID! + name: String + type: TypeEnum + foos: [String!]! + } + + enum TypeEnum { + FOO + BAR + } +""" + + def fieldPath = "Query.bar" + when: + def expectedNoOperation = """ +{ + bar { + ... on Bar { + id + name + type + foos + } + } +}""" + + def result = executeTest(schema, fieldPath, expectedNoOperation) + + then: + result != null + "Bar" == result.usedType + 4 == result.totalFieldCount + !result.reachedMaxFieldCount + + when: "operation and arguments are passed" + def expectedWithOperation = """ +query barTestOperation { + bar(filter: "some filter") { + ... on Bar { + id + name + type + foos + } + } +} +""" + + result = executeTest( + schema, + fieldPath, + "barTestOperation", + "(filter: \"some filter\")", + null, + expectedWithOperation, + QueryGeneratorOptions.newBuilder().build() + ) + + then: + result != null + } + + + def "generate query field of list type"() { + given: + def schema = """ + type Query { + allBars: [Bar] + } + + type Bar { + id: ID! + name: String + } +""" + + def fieldPath = "Query.allBars" + when: + def expectedNoOperation = """ +{ + allBars { + ... on Bar { + id + name + } + } +}""" + + def result = executeTest(schema, fieldPath, expectedNoOperation) + + then: + result != null + } + + def "generate query field of non-nullable type"() { + given: + def schema = """ + type Query { + bar: Bar + } + + type Bar { + id: ID! + name: String + } +""" + + def fieldPath = "Query.bar" + when: + def expectedNoOperation = """ +{ + bar { + ... on Bar { + id + name + } + } +}""" + + def result = executeTest(schema, fieldPath, expectedNoOperation) + + then: + result != null + } + + def "generate query for type with nested type"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + bar: Bar + bars: [Bar] + } + + type Bar { + id: ID! + name: String + } +""" + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + bar { + id + name + } + bars { + id + name + } + } + } +} +""" + + when: + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "generate query for deeply nested field"() { + given: + def schema = """ + type Query { + bar: Bar + } + + type Bar { + id: ID! + foo: Foo + } + + type Foo { + id: ID! + baz: Baz + } + + type Baz { + id: ID! + name: String + } + +""" + + def fieldPath = "Query.bar.foo.baz" + when: + def expectedNoOperation = """ +{ + bar { + foo { + baz { + ... on Baz { + id + name + } + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, expectedNoOperation) + + then: + result != null + } + + def "straight forward cyclic dependency"() { + given: + def schema = """ + type Query { + fooFoo: FooFoo + } + + type FooFoo { + id: ID! + name: String + fooFoo: FooFoo + } +""" + def fieldPath = "Query.fooFoo" + def expected = """ +{ + fooFoo { + ... on FooFoo { + id + name + fooFoo { + id + name + } + } + } +} +""" + + when: + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "cyclic dependency with 2 fields of the same type"() { + given: + def schema = """ + type Query { + fooFoo: FooFoo + } + + type FooFoo { + id: ID! + name: String + fooFoo: FooFoo + fooFoo2: FooFoo + } +""" + def fieldPath = "Query.fooFoo" + def expected = """ +{ + fooFoo { + ... on FooFoo { + id + name + fooFoo { + id + name + } + fooFoo2 { + id + name + } + } + } +} +""" + + when: + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "transitive cyclic dependency"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + name: String + bar: Bar + } + + type Bar { + id: ID! + name: String + baz: Baz + } + + type Baz { + id: ID! + name: String + foo: Foo + } + +""" + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + name + bar { + id + name + baz { + id + name + foo { + id + name + } + } + } + } + } +} +""" + + when: + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "generate mutation and subscription for simple type"() { + given: + def schema = """ + type Query { + echo: String + } + + type Mutation { + bar: Bar + } + + type Subscription { + bar: Bar + } + + type Bar { + id: ID! + name: String + } +""" + + + when: "generate query for mutation" + def fieldPath = "Mutation.bar" + def expected = """ +mutation { + bar { + ... on Bar { + id + name + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + + when: "operation and arguments are passed" + + fieldPath = "Subscription.bar" + expected = """ +subscription { + bar { + ... on Bar { + id + name + } + } +} +""" + + result = executeTest( + schema, + fieldPath, + expected + ) + + then: + result != null + } + + def "generate query containing fields with arguments"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + optionalArg(filter: String): String + mandatoryArg(id: ID!): String + mixed(id: ID!, filter: String): String + defaultArg(filter: String! = "default"): String + multipleOptionalArgs(filter: String, filter2: String, filter3: String = "default"): String + } +""" + + + when: + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + optionalArg + defaultArg + multipleOptionalArgs + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "generate query for the 'node' field, which returns an interface"() { + given: + def schema = """ + type Query { + node(id: ID!): Node + foo: Foo + } + + interface Node { + id: ID! + } + + type Foo implements Node { + id: ID! + fooName: String + } + + type Bar implements Node { + id: ID! + barName: String + } + + type BazDoesntImplementNode { + id: ID! + bazName: String + } +""" + + + when: + def fieldPath = "Query.node" + def classifierType = null + def expected = null + + def result = executeTest(schema, fieldPath, null, "(id: \"1\")", classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + def e = thrown(IllegalArgumentException) + e.message == "typeName is required for interface types" + + when: "generate query for the 'node' field with a specific type" + fieldPath = "Query.node" + classifierType = "Foo" + expected = """ +{ + node(id: "1") { + ... on Foo { + id + fooName + } + } +} +""" + result = executeTest(schema, fieldPath, null, "(id: \"1\")", classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + result != null + + when: "passing typeName on field that doesn't return an interface" + fieldPath = "Query.foo" + classifierType = "Foo" + + executeTest(schema, fieldPath, null, "(id: \"1\")", classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + e = thrown(IllegalArgumentException) + e.message == "typeName should be used only with interface or union types" + + when: "passing typeName that doesn't implement Node" + fieldPath = "Query.node" + classifierType = "BazDoesntImplementNode" + + executeTest(schema, fieldPath, null, "(id: \"1\")", classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + e = thrown(IllegalArgumentException) + e.message == "Type BazDoesntImplementNode not found in interface Node" + } + + def "generate query for field which returns an union"() { + given: + def schema = """ + type Query { + something: Something + } + + union Something = Foo | Bar + + type Foo { + id: ID! + fooName: String + } + + type Bar { + id: ID! + barName: String + } + + type BazIsNotPartOfUnion { + id: ID! + bazName: String + } +""" + + + when: + def fieldPath = "Query.something" + def classifierType = null + def expected = null + def result = executeTest(schema, fieldPath, null, null, classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + def e = thrown(IllegalArgumentException) + e.message == "typeName is required for union types" + + when: "generate query for field returning union with a specific type" + fieldPath = "Query.something" + classifierType = "Foo" + expected = """ +{ + something { + ... on Foo { + id + fooName + } + } +} +""" + result = executeTest(schema, fieldPath, null, null, classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + result != null + + when: "passing typeName that is not part of the union" + fieldPath = "Query.something" + classifierType = "BazIsNotPartOfUnion" + + executeTest(schema, fieldPath, null, null, classifierType, expected, QueryGeneratorOptions.newBuilder().build()) + + then: + e = thrown(IllegalArgumentException) + e.message == "Type BazIsNotPartOfUnion not found in union Something" + } + + def "simple field limit"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + field1: String + field2: String + field3: String + field4: String + field5: String + } +""" + + + when: + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + field1 + field2 + field3 + } + } +} +""" + + def options = QueryGeneratorOptions + .newBuilder() + .maxFieldCount(3) + .build() + + def result = executeTest(schema, fieldPath, null, null, null, expected, options) + + then: + result != null + 3 == result.totalFieldCount + result.reachedMaxFieldCount + } + + def "field limit enforcement may result in less fields than the MAX"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + bar: Bar + name: String + age: Int + } + + type Bar { + id: ID! + name: String + } +""" + + + when: "A limit would result on a field container (Foo.bar) having empty field selection" + def options = QueryGeneratorOptions + .newBuilder() + .maxFieldCount(3) + .build() + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + name + } + } +} +""" + + def result = executeTest(schema, fieldPath, null, null, null, expected, options) + + then: + result != null + } + + def "max field limit is enforced"() { + given: + def queryFieldCount = 20_000 + def queryFields = (1..queryFieldCount).collect { " field$it: String" }.join("\n") + + def schema = """ + type Query { + largeType: LargeType + } + + type LargeType { +$queryFields + } +""" + + + when: + + def fieldPath = "Query.largeType" + + def resultFieldCount = 10_000 + def resultFields = (1..resultFieldCount).collect { " field$it" }.join("\n") + + def expected = """ +{ + largeType { + ... on LargeType { +$resultFields + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + 10_000 == result.totalFieldCount + result.reachedMaxFieldCount + } + + def "filter types and field"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + bar: Bar + name: String + age: Int + baz: Baz + } + + type Bar { + id: ID! + name: String + } + + type Baz { + id: ID! + name: String + } +""" + + + when: + def options = QueryGeneratorOptions + .newBuilder() + .filterFieldContainerPredicate { it.name != "Bar" } + .filterFieldDefinitionPredicate { it.name != "name" } + .build() + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + age + baz { + id + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, null, null, null, expected, options) + + then: + result != null + } + + def "union fields"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + barOrBaz: BarOrBaz + } + + union BarOrBaz = Bar | Baz + + type Bar { + id: ID! + barName: String + } + + type Baz { + id: ID! + bazName: String + } +""" + + + when: + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + barOrBaz { + ... on Bar { + Bar_id: id + Bar_barName: barName + } + ... on Baz { + Baz_id: id + Baz_bazName: bazName + } + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "interface fields"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + barOrBaz: BarOrBaz + } + + interface BarOrBaz { + id: ID! + } + + type Bar implements BarOrBaz { + id: ID! + barName: String + } + + type Baz implements BarOrBaz { + id: ID! + bazName: String + } +""" + + + when: + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + barOrBaz { + ... on Bar { + Bar_id: id + Bar_barName: barName + } + ... on Baz { + Baz_id: id + Baz_bazName: bazName + } + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "interface fields with a single implementing type"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + alwaysBar: BarInterface + } + + interface BarInterface { + id: ID! + } + + type Bar implements BarInterface { + id: ID! + barName: String + } +""" + + + when: + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + alwaysBar { + ... on Bar { + Bar_id: id + Bar_barName: barName + } + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "cyclic dependency with union"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + bar: Bar + } + + type Bar { + id: ID! + baz: Baz + } + + union Baz = Bar | Qux + + type Qux { + id: ID! + name: String + } + +""" + + + when: + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + bar { + id + baz { + ... on Bar { + Bar_id: id + } + ... on Qux { + Qux_id: id + Qux_name: name + } + } + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "union fields with a single type in union"() { + given: + def schema = """ + type Query { + foo: Foo + } + + type Foo { + id: ID! + alwaysBar: BarUnion + } + + union BarUnion = Bar + + type Bar { + id: ID! + barName: String + } +""" + + + when: + + def fieldPath = "Query.foo" + def expected = """ +{ + foo { + ... on Foo { + id + alwaysBar { + ... on Bar { + Bar_id: id + Bar_barName: barName + } + } + } + } +} +""" + + def result = executeTest(schema, fieldPath, expected) + + then: + result != null + } + + def "generates query for large type"() { + given: + def schema = getClass().getClassLoader().getResourceAsStream("extra-large-schema-1.graphqls").text + + when: + def fieldPath = "Query.node" + + def expected = getClass().getClassLoader().getResourceAsStream("querygenerator/generated-query-for-extra-large-schema-1.graphql").text + + def result = executeTest(schema, fieldPath, null, "(id: \"issue-id-1\")", "JiraIssue", expected, QueryGeneratorOptions.newBuilder().build()) + + then: + result != null + } + + private static QueryGeneratorResult executeTest( + String schemaDefinition, + String fieldPath, + String expected + ) { + return executeTest( + schemaDefinition, + fieldPath, + null, + null, + null, + expected, + QueryGeneratorOptions.newBuilder().build() + ) + } + + private static QueryGeneratorResult executeTest( + String schemaDefinition, + String fieldPath, + String operationName, + String arguments, + String typeName, + String expected, + QueryGeneratorOptions options + ) { + def schema = TestUtil.schema(schemaDefinition) + def queryGenerator = new QueryGenerator(schema, options) + + def result = queryGenerator.generateQuery(fieldPath, operationName, arguments, typeName) + def query = result.query + + executeQuery(query, schema) + + expected.trim() == query.trim() + + return result + } + + private static void executeQuery(String query, GraphQLSchema schema) { + def document = new Parser().parseDocument(query) + + def errors = new Validator().validateDocument(schema, document, Locale.ENGLISH) + + if (!errors.isEmpty()) { + throw new Exception("Validation errors: " + errors.collect { it.getMessage() }.join(", ")) + } + + } +} diff --git a/src/test/groovy/graphql/validation/MaxValidationErrorsTest.groovy b/src/test/groovy/graphql/validation/MaxValidationErrorsTest.groovy new file mode 100644 index 0000000000..ea624d8625 --- /dev/null +++ b/src/test/groovy/graphql/validation/MaxValidationErrorsTest.groovy @@ -0,0 +1,25 @@ +package graphql.validation + +class MaxValidationErrorsTest extends SpecValidationBase { + + def "The maximum number of validation messages is respected"() { + def directives = "@lol" * 500 + def query = """ + query lotsOfErrors { + f $directives + } + """ + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 100 + + when: "we can set a new maximum" + Validator.setMaxValidationErrors(10) + validationErrors = validate(query) + + then: + validationErrors.size() == 10 + } +} diff --git a/src/test/groovy/graphql/validation/RulesVisitorTest.groovy b/src/test/groovy/graphql/validation/RulesVisitorTest.groovy index 1f74542a68..2b0de3a993 100644 --- a/src/test/groovy/graphql/validation/RulesVisitorTest.groovy +++ b/src/test/groovy/graphql/validation/RulesVisitorTest.groovy @@ -1,22 +1,25 @@ package graphql.validation import graphql.TestUtil +import graphql.i18n.I18n import graphql.language.Document import graphql.parser.Parser -import graphql.validation.rules.NoUnusedVariables import spock.lang.Specification class RulesVisitorTest extends Specification { - ValidationErrorCollector errorCollector = new ValidationErrorCollector() + AbstractRule simpleRule = Mock() + AbstractRule visitsSpreadsRule = Mock() + + def setup() { + visitsSpreadsRule.isVisitFragmentSpreads() >> true + } def traverse(String query) { Document document = new Parser().parseDocument(query) - ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document, i18n) LanguageTraversal languageTraversal = new LanguageTraversal() - // this is one of the rules which checks inside fragment spreads, so it's needed to test this - NoUnusedVariables noUnusedVariables = new NoUnusedVariables(validationContext, errorCollector) - - languageTraversal.traverse(document, new RulesVisitor(validationContext, [noUnusedVariables])) + languageTraversal.traverse(document, new RulesVisitor(validationContext, [simpleRule, visitsSpreadsRule])) } def "RulesVisitor does not repeatedly spread directly recursive fragments leading to a stackoverflow"() { @@ -71,4 +74,24 @@ class RulesVisitorTest extends Specification { notThrown(StackOverflowError) } + def "RulesVisitor visits fragment definition with isVisitFragmentSpread rules once per operation"() { + given: + def query = """ + fragment A on A { __typename } + fragment B on B { ...A } + fragment C on C { ...A ...B } + + query Q1 { ...A ...B ...C } + query Q2 { ...A ...B ...C } + """ + + when: + traverse(query) + + then: + 2 * visitsSpreadsRule.checkFragmentDefinition({it.name == "A"}) + 2 * visitsSpreadsRule.checkFragmentDefinition({it.name == "B"}) + 2 * visitsSpreadsRule.checkFragmentDefinition({it.name == "C"}) + } } + diff --git a/src/test/groovy/graphql/validation/SpecValidation282Test.groovy b/src/test/groovy/graphql/validation/SpecValidation282Test.groovy index 92885e1c56..949f40cedc 100644 --- a/src/test/groovy/graphql/validation/SpecValidation282Test.groovy +++ b/src/test/groovy/graphql/validation/SpecValidation282Test.groovy @@ -2,7 +2,7 @@ package graphql.validation /** * validation examples used in the spec in given section - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * * This test checks that an inline fragment containing just a directive * is parsed correctly diff --git a/src/test/groovy/graphql/validation/SpecValidation51Test.groovy b/src/test/groovy/graphql/validation/SpecValidation51Test.groovy index 173459238b..ef05fa8063 100644 --- a/src/test/groovy/graphql/validation/SpecValidation51Test.groovy +++ b/src/test/groovy/graphql/validation/SpecValidation51Test.groovy @@ -1,7 +1,7 @@ package graphql.validation /** * validation examples used in the spec in given section - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * @author dwinsor * */ @@ -66,95 +66,6 @@ mutation dogOperation { id } } -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - } - - - def '5.1.2.1 Lone Anonymous Operation Valid'() { - def query = """ -{ - dog { - name - } -} -""" - when: - def validationErrors = validate(query) - - then: - validationErrors.empty - } - - - def '5.1.2.1 Lone Anonymous Operation Not Valid'() { - def query = """ -{ - dog { - name - } -} - -query getName { - dog { - owner { - name - } - } -} -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - } - - def '5.1.2.1 Lone Anonymous Operation Not Valid (reverse order) '() { - def query = """ - -query getName { - dog { - owner { - name - } - } -} - -{ - dog { - name - } -} - -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - } - - def '5.1.2.1 Lone Anonymous Operation Not Valid (not really alone)'() { - def query = """ -{ - dog { - owner { - name - } - } -} - -{ - dog { - name - } -} - """ when: def validationErrors = validate(query) diff --git a/src/test/groovy/graphql/validation/SpecValidation521Test.groovy b/src/test/groovy/graphql/validation/SpecValidation521Test.groovy deleted file mode 100644 index 88c86898db..0000000000 --- a/src/test/groovy/graphql/validation/SpecValidation521Test.groovy +++ /dev/null @@ -1,133 +0,0 @@ -package graphql.validation -/** - * validation examples used in the spec in given section - * http://facebook.github.io/graphql/#sec-Validation - * @author dwinsor - * - */ -class SpecValidation521Test extends SpecValidationBase { - - def '5.2.1 Field Selections on ... fieldNotDefined'() { - def query = """ -{ - dog { - ... fieldNotDefined - } -} -fragment fieldNotDefined on Dog { - meowVolume -} -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined - } - - def '5.2.1 Field Selections on ... aliasedLyingFieldTargetNotDefined'() { - def query = """ -{ - dog { - ... aliasedLyingFieldTargetNotDefined - } -} -fragment aliasedLyingFieldTargetNotDefined on Dog { - barkVolume: kawVolume -} -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined - } - - def '5.2.1 Field Selections on ... interfaceFieldSelection'() { - def query = """ -{ - dog { - ... interfaceFieldSelection - } -} -fragment interfaceFieldSelection on Pet { - name -} -""" - when: - def validationErrors = validate(query) - - then: - validationErrors.empty - } - - def '5.2.1 Field Selections on ... definedOnImplementorsButNotInterface'() { - def query = """ -{ - dog { - ... definedOnImplementorsButNotInterface - } -} -fragment definedOnImplementorsButNotInterface on Pet { - nickname -} -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined - } - - def '5.2.1 Field Selections on ... inDirectFieldSelectionOnUnion'() { - def query = """ -{ - dog { - ... inDirectFieldSelectionOnUnion - } -} -fragment inDirectFieldSelectionOnUnion on CatOrDog { - __typename - ... on Pet { - name - } - ... on Dog { - barkVolume - } -} -""" - when: - def validationErrors = validate(query) - - then: - validationErrors.empty - } - - def '5.2.1 Field Selections on ... directFieldSelectionOnUnion'() { - def query = """ -{ - dog { - ... directFieldSelectionOnUnion - } -} -fragment directFieldSelectionOnUnion on CatOrDog { - name - barkVolume -} -""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 2 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined - validationErrors.get(1).getValidationErrorType() == ValidationErrorType.FieldUndefined - } -} diff --git a/src/test/groovy/graphql/validation/SpecValidation5421Test.groovy b/src/test/groovy/graphql/validation/SpecValidation5421Test.groovy deleted file mode 100644 index b937fd8f88..0000000000 --- a/src/test/groovy/graphql/validation/SpecValidation5421Test.groovy +++ /dev/null @@ -1,26 +0,0 @@ -package graphql.validation -/** - * validation examples used in the spec in given section - * http://facebook.github.io/graphql/#sec-Validation - * @author dwinsor - * - */ -class SpecValidation5421Test extends SpecValidationBase { - - def '5.4.2.1 Fragment spread target defined '() { - def query = """ - query getDogName { - dog { - ... FragmentDoesNotExist - } - } - """ - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UndefinedFragment - } -} diff --git a/src/test/groovy/graphql/validation/SpecValidation562Test.groovy b/src/test/groovy/graphql/validation/SpecValidation562Test.groovy index bbec32c5d6..7a0f1ada73 100644 --- a/src/test/groovy/graphql/validation/SpecValidation562Test.groovy +++ b/src/test/groovy/graphql/validation/SpecValidation562Test.groovy @@ -1,7 +1,7 @@ package graphql.validation /** * validation examples used in the spec in given section - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * @author dwinsor * */ diff --git a/src/test/groovy/graphql/validation/SpecValidation573Test.groovy b/src/test/groovy/graphql/validation/SpecValidation573Test.groovy index 4fc5827cdc..0d8565e227 100644 --- a/src/test/groovy/graphql/validation/SpecValidation573Test.groovy +++ b/src/test/groovy/graphql/validation/SpecValidation573Test.groovy @@ -1,7 +1,7 @@ package graphql.validation /** * validation examples used in the spec in given section - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * */ class SpecValidation573Test extends SpecValidationBase { @@ -21,52 +21,4 @@ query madDog(\$dogCommand: DogCommand){ validationErrors.size() == 1 validationErrors.get(0).getValidationErrorType() == ValidationErrorType.VariableTypeMismatch } - - def '5.7.3 Variables Are Input Types - unknown type'() { - def query = """ -query madDog(\$dogCommand: UnknownType){ - dog { - doesKnowCommand(dogCommand: \$dogCommand) - } -}""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownType - } - - def '5.7.3 Variables Are Input Types - non-null unknown type'() { - def query = """ -query madDog(\$dogCommand: UnknownType!){ - dog { - doesKnowCommand(dogCommand: \$dogCommand) - } -}""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownType - } - - def '5.7.3 Variables Are Input Types - non-null list unknown type'() { - def query = """ -query madDog(\$dogCommand: [UnknownType]){ - dog { - doesKnowCommand(dogCommand: \$dogCommand) - } -}""" - when: - def validationErrors = validate(query) - - then: - !validationErrors.empty - validationErrors.size() == 1 - validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownType - } } diff --git a/src/test/groovy/graphql/validation/SpecValidationBase.groovy b/src/test/groovy/graphql/validation/SpecValidationBase.groovy index 6611670f45..1436f47524 100644 --- a/src/test/groovy/graphql/validation/SpecValidationBase.groovy +++ b/src/test/groovy/graphql/validation/SpecValidationBase.groovy @@ -5,14 +5,14 @@ import spock.lang.Specification /** * validation examples used in the spec - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * @author dwinsor * */ class SpecValidationBase extends Specification { - List validate(String query) { + static List validate(String query) { def document = new Parser().parseDocument(query) - return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) } } diff --git a/src/test/groovy/graphql/validation/SpecValidationSchema.java b/src/test/groovy/graphql/validation/SpecValidationSchema.java index c5b33cb9d4..aa244a6a11 100644 --- a/src/test/groovy/graphql/validation/SpecValidationSchema.java +++ b/src/test/groovy/graphql/validation/SpecValidationSchema.java @@ -1,10 +1,13 @@ package graphql.validation; +import graphql.Directives; import graphql.Scalars; -import graphql.TypeResolutionEnvironment; import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLEnumType; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; @@ -19,18 +22,22 @@ import java.util.HashSet; import java.util.Set; +import static graphql.Scalars.GraphQLString; import static graphql.introspection.Introspection.DirectiveLocation.FIELD; import static graphql.introspection.Introspection.DirectiveLocation.FRAGMENT_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.FRAGMENT_SPREAD; import static graphql.introspection.Introspection.DirectiveLocation.INLINE_FRAGMENT; import static graphql.introspection.Introspection.DirectiveLocation.QUERY; +import static graphql.schema.GraphQLArgument.newArgument; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; +import static graphql.schema.GraphQLInputObjectField.newInputObjectField; +import static graphql.schema.GraphQLInputObjectType.newInputObject; import static graphql.schema.GraphQLNonNull.nonNull; import static java.util.Collections.singletonList; /** * Sample schema used in the spec for validation examples - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * * @author dwinsor */ @@ -51,27 +58,6 @@ public class SpecValidationSchema { public static final GraphQLInterfaceType sentient = GraphQLInterfaceType.newInterface() .name("Sentient") .field(newFieldDefinition().name("name").type(nonNull(Scalars.GraphQLString))) - .typeResolver(new TypeResolver() { - @Override - public GraphQLObjectType getType(TypeResolutionEnvironment env) { - if (env.getObject() instanceof Human) return human; - if (env.getObject() instanceof Alien) return alien; - return null; - } - }) - .build(); - - public static final GraphQLInterfaceType pet = GraphQLInterfaceType.newInterface() - .name("Pet") - .field(newFieldDefinition().name("name").type(nonNull(Scalars.GraphQLString))) - .typeResolver(new TypeResolver() { - @Override - public GraphQLObjectType getType(TypeResolutionEnvironment env) { - if (env.getObject() instanceof Dog) return dog; - if (env.getObject() instanceof Cat) return cat; - return null; - } - }) .build(); public static final GraphQLObjectType human = GraphQLObjectType.newObject() @@ -87,6 +73,21 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .withInterface(SpecValidationSchema.sentient) .build(); + public static final TypeResolver sentientTypeResolver = env -> { + if (env.getObject() instanceof Human) { + return human; + } + if (env.getObject() instanceof Alien) { + return alien; + } + return null; + }; + + public static final GraphQLArgument catCommandArg = GraphQLArgument.newArgument() + .name("catCommand") + .type(nonNull(catCommand)) + .build(); + public static final GraphQLArgument dogCommandArg = GraphQLArgument.newArgument() .name("dogCommand") .type(nonNull(dogCommand)) @@ -97,9 +98,9 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .type(Scalars.GraphQLBoolean) .build(); - public static final GraphQLArgument catCommandArg = GraphQLArgument.newArgument() - .name("catCommand") - .type(nonNull(catCommand)) + public static final GraphQLInterfaceType pet = GraphQLInterfaceType.newInterface() + .name("Pet") + .field(newFieldDefinition().name("name").type(nonNull(Scalars.GraphQLString))) .build(); public static final GraphQLObjectType dog = GraphQLObjectType.newObject() @@ -108,9 +109,9 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .field(newFieldDefinition().name("nickname").type(Scalars.GraphQLString)) .field(newFieldDefinition().name("barkVolume").type(Scalars.GraphQLInt)) .field(newFieldDefinition().name("doesKnowCommand").type(nonNull(Scalars.GraphQLBoolean)) - .argument(singletonList(dogCommandArg))) + .arguments(singletonList(dogCommandArg))) .field(newFieldDefinition().name("isHousetrained").type(Scalars.GraphQLBoolean) - .argument(singletonList(atOtherHomesArg))) + .arguments(singletonList(atOtherHomesArg))) .field(newFieldDefinition().name("owner").type(human)) .withInterface(SpecValidationSchema.pet) .build(); @@ -121,47 +122,120 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .field(newFieldDefinition().name("nickname").type(Scalars.GraphQLString)) .field(newFieldDefinition().name("meowVolume").type(Scalars.GraphQLInt)) .field(newFieldDefinition().name("doesKnowCommand").type(nonNull(Scalars.GraphQLBoolean)) - .argument(singletonList(catCommandArg))) + .arguments(singletonList(catCommandArg))) .withInterface(SpecValidationSchema.pet) .build(); + public static final TypeResolver petTypeResolver = env -> { + if (env.getObject() instanceof Dog) { + return dog; + } + if (env.getObject() instanceof Cat) { + return cat; + } + return null; + }; + public static final GraphQLUnionType catOrDog = GraphQLUnionType.newUnionType() .name("CatOrDog") .possibleTypes(cat, dog) - .typeResolver(env -> { - if (env.getObject() instanceof Cat) return cat; - if (env.getObject() instanceof Dog) return dog; - return null; - }) .build(); + public static final TypeResolver catOrDogTypeResolver = env -> { + if (env.getObject() instanceof Cat) { + return cat; + } + if (env.getObject() instanceof Dog) { + return dog; + } + return null; + }; + public static final GraphQLUnionType dogOrHuman = GraphQLUnionType.newUnionType() .name("DogOrHuman") .possibleTypes(dog, human) - .typeResolver(env -> { - if (env.getObject() instanceof Human) return human; - if (env.getObject() instanceof Dog) return dog; - return null; - }) .build(); + public static final TypeResolver dogOrHumanTypeResolver = env -> { + if (env.getObject() instanceof Human) { + return human; + } + if (env.getObject() instanceof Dog) { + return dog; + } + return null; + }; + public static final GraphQLUnionType humanOrAlien = GraphQLUnionType.newUnionType() .name("HumanOrAlien") .possibleTypes(human, alien) - .typeResolver(env -> { - if (env.getObject() instanceof Human) return human; - if (env.getObject() instanceof Alien) return alien; - return null; - }) .build(); + public static final TypeResolver humanOrAlienTypeResolver = env -> { + if (env.getObject() instanceof Human) { + return human; + } + if (env.getObject() instanceof Alien) { + return alien; + } + return null; + }; + + public static final GraphQLDirective dogDirective = GraphQLDirective.newDirective() + .name("dogDirective") + .argument(newArgument().name("arg1").type(GraphQLString).build()) + .validLocations(FIELD, FRAGMENT_SPREAD, FRAGMENT_DEFINITION, INLINE_FRAGMENT, QUERY) + .build(); + + public static final GraphQLInputObjectType oneOfInputType = GraphQLInputObjectType.newInputObject() + .name("oneOfInputType") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(GraphQLInputObjectField.newInputObjectField() + .name("a") + .type(GraphQLString)) + .field(GraphQLInputObjectField.newInputObjectField() + .name("b") + .type(GraphQLString)) + .build(); + + public static final GraphQLObjectType queryRoot = GraphQLObjectType.newObject() .name("QueryRoot") - .field(newFieldDefinition().name("dog").type(dog)) + .field(newFieldDefinition().name("dog").type(dog) + .argument(newArgument().name("arg1").type(GraphQLString).build()) + .withDirective(dogDirective) + ) .field(newFieldDefinition().name("pet").type(pet)) + .field(newFieldDefinition().name("oneOfField").type(GraphQLString) + .argument(newArgument().name("oneOfArg").type(oneOfInputType).build()) + ) + .build(); + + public static final GraphQLObjectType subscriptionRoot = GraphQLObjectType.newObject() + .name("SubscriptionRoot") + .field(newFieldDefinition().name("dog").type(dog)) + .field(newFieldDefinition().name("cat").type(cat)) + .build(); + + public static GraphQLInputObjectType inputDogType = newInputObject() + .name("DogInput") + .description("Input for A Dog creation.") + .field(newInputObjectField() + .name("id") + .description("The id of the dog.") + .type(nonNull(GraphQLString))) + .build(); + + public static final GraphQLObjectType petMutationType = GraphQLObjectType.newObject() + .name("PetMutationType") + .field(newFieldDefinition() + .name("createDog") + .type(dog) + .argument(newArgument() + .name("input") + .type(inputDogType))) .build(); - @SuppressWarnings("serial") public static final Set specValidationDictionary = new HashSet() {{ add(dogCommand); add(catCommand); @@ -186,11 +260,50 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { .validLocations(FIELD, FRAGMENT_SPREAD, FRAGMENT_DEFINITION, INLINE_FRAGMENT, QUERY) .build(); + public static final GraphQLDirective nonNullDirective = GraphQLDirective.newDirective() + .name("nonNullDirective") + .argument(newArgument().name("arg1").type(nonNull(GraphQLString)).build()) + .validLocations(FIELD, FRAGMENT_SPREAD, FRAGMENT_DEFINITION, INLINE_FRAGMENT, QUERY) + .build(); + + public static final GraphQLInputObjectType inputType = GraphQLInputObjectType.newInputObject() + .name("Input") + .field(GraphQLInputObjectField.newInputObjectField() + .name("id") + .type(GraphQLString) + .build()) + .field(GraphQLInputObjectField.newInputObjectField() + .name("name") + .type(nonNull(GraphQLString)) + .build()) + .build(); + + public static final GraphQLDirective objectArgumentDirective = GraphQLDirective.newDirective() + .name("objectArgumentDirective") + .argument(newArgument().name("myObject").type(nonNull(inputType)).build()) + .validLocations(FIELD, FRAGMENT_SPREAD, FRAGMENT_DEFINITION, INLINE_FRAGMENT, QUERY) + .build(); + + public static final GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver("Sentient", sentientTypeResolver) + .typeResolver("Pet", petTypeResolver) + .typeResolver("CatOrDog", catOrDogTypeResolver) + .typeResolver("DogOrHuman", dogOrHumanTypeResolver) + .typeResolver("HumanOrAlien", humanOrAlienTypeResolver) + .build(); + public static final GraphQLSchema specValidationSchema = GraphQLSchema.newSchema() .query(queryRoot) + .codeRegistry(codeRegistry) + .subscription(subscriptionRoot) + .mutation(petMutationType) .additionalDirective(upperDirective) .additionalDirective(lowerDirective) - .build(specValidationDictionary); - + .additionalDirective(dogDirective) + .additionalDirective(nonNullDirective) + .additionalDirective(objectArgumentDirective) + .additionalDirective(Directives.DeferDirective) + .additionalTypes(specValidationDictionary) + .build(); } diff --git a/src/test/groovy/graphql/validation/SpecValidationSchemaPojos.java b/src/test/groovy/graphql/validation/SpecValidationSchemaPojos.java index 9b0346b3e1..da3d0c7622 100644 --- a/src/test/groovy/graphql/validation/SpecValidationSchemaPojos.java +++ b/src/test/groovy/graphql/validation/SpecValidationSchemaPojos.java @@ -2,7 +2,7 @@ /** * Sample schema pojos used in the spec for validation examples - * http://facebook.github.io/graphql/#sec-Validation + * https://spec.graphql.org/October2021/#sec-Validation * * @author dwinsor */ diff --git a/src/test/groovy/graphql/validation/ValidateCustomDirectives.groovy b/src/test/groovy/graphql/validation/ValidateCustomDirectives.groovy index eb7550ec94..5a1569e978 100644 --- a/src/test/groovy/graphql/validation/ValidateCustomDirectives.groovy +++ b/src/test/groovy/graphql/validation/ValidateCustomDirectives.groovy @@ -19,7 +19,11 @@ class ValidateCustomDirectives extends Specification { GraphQLSchema customDirectiveSchema = GraphQLSchema.newSchema() .query(SpecValidationSchema.queryRoot) - .build(SpecValidationSchema.specValidationDictionary, [customDirective].toSet()) + .codeRegistry(SpecValidationSchema.codeRegistry) + .additionalDirective(SpecValidationSchema.dogDirective) + .additionalDirective(customDirective) + .additionalTypes(SpecValidationSchema.specValidationDictionary) + .build() def 'Schema with custom directive validates query with same directive'() { def query = """ @@ -50,11 +54,11 @@ query { then: validationErrors.size() == 1 validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownDirective - validationErrors.get(0).getDescription() == 'Unknown directive argument dummy' + validationErrors.get(0).getDescription() == "Validation error (UnknownDirective@[dog/name]) : Unknown directive argument 'dummy'" } List validate(String query) { def document = new Parser().parseDocument(query) - return new Validator().validateDocument(customDirectiveSchema, document) + return new Validator().validateDocument(customDirectiveSchema, document, Locale.ENGLISH) } } diff --git a/src/test/groovy/graphql/validation/ValidationErrorToString.groovy b/src/test/groovy/graphql/validation/ValidationErrorToString.groovy new file mode 100644 index 0000000000..cfade59c28 --- /dev/null +++ b/src/test/groovy/graphql/validation/ValidationErrorToString.groovy @@ -0,0 +1,39 @@ +package graphql.validation + +import graphql.language.SourceLocation +import spock.lang.Specification + +class ValidationErrorToString extends Specification { + + def 'toString prints correctly ValidationError object when all fields are initialized'() { + given: + def sourceLocations = [new SourceLocation(5, 0), new SourceLocation(10, 1)] + def description = "Validation Error (UnknownType)" + def validationErrorClassification = ValidationErrorType.UnknownType + def queryPath = ["home", "address"] + def extensions = ["extension1": "first", "extension2": true, "extension3": 2] + + when: + def validationError = ValidationError + .newValidationError() + .sourceLocations(sourceLocations) + .description(description) + .validationErrorType(validationErrorClassification) + .queryPath(queryPath) + .extensions(extensions) + .build() + + then: + validationError.toString() == "ValidationError{validationErrorType=UnknownType, queryPath=[home, address], message=Validation Error (UnknownType), locations=[SourceLocation{line=5, column=0}, SourceLocation{line=10, column=1}], description='Validation Error (UnknownType)', extensions=[extension1=first, extension2=true, extension3=2]}" + } + + def 'toString prints correctly ValidationError object when all fields are empty'() { + when: + def validationError = ValidationError + .newValidationError() + .build() + + then: + validationError.toString() == "ValidationError{validationErrorType=null, queryPath=[], message=null, locations=[], description='null', extensions=[]}" + } +} diff --git a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy index 8ed1d8e55c..251362b09a 100644 --- a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy +++ b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy @@ -1,5 +1,6 @@ package graphql.validation +import graphql.GraphQLContext import graphql.StarWarsSchema import graphql.language.ArrayValue import graphql.language.BooleanValue @@ -18,15 +19,23 @@ import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLSchema import spock.lang.Specification +import static graphql.Directives.OneOfDirective import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLString +import static graphql.language.ObjectField.newObjectField +import static graphql.schema.GraphQLAppliedDirective.newDirective import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull class ValidationUtilTest extends Specification { - def schema = GraphQLSchema.newSchema().query(StarWarsSchema.queryType).build() + def schema = GraphQLSchema.newSchema() + .query(StarWarsSchema.queryType) + .codeRegistry(StarWarsSchema.codeRegistry) + .build() def validationUtil = new ValidationUtil() + def graphQLContext = GraphQLContext.getDefault() + def locale = Locale.getDefault() def "getUnmodified type of list of nonNull"() { given: @@ -51,32 +60,32 @@ class ValidationUtilTest extends Specification { def "null and NonNull is invalid"() { expect: - !validationUtil.isValidLiteralValue(null, nonNull(GraphQLString),schema) + !validationUtil.isValidLiteralValue(null, nonNull(GraphQLString), schema, graphQLContext, locale) } def "NullValue and NonNull is invalid"() { expect: - !validationUtil.isValidLiteralValue(NullValue.newNullValue().build(), nonNull(GraphQLString),schema) + !validationUtil.isValidLiteralValue(NullValue.newNullValue().build(), nonNull(GraphQLString), schema, graphQLContext, locale) } def "a nonNull value for a NonNull type is valid"() { expect: - validationUtil.isValidLiteralValue(new StringValue("string"), nonNull(GraphQLString),schema) + validationUtil.isValidLiteralValue(new StringValue("string"), nonNull(GraphQLString), schema, graphQLContext, locale) } def "null is valid when type is NonNull"() { expect: - validationUtil.isValidLiteralValue(null, GraphQLString,schema) + validationUtil.isValidLiteralValue(null, GraphQLString, schema, graphQLContext, locale) } def "NullValue is valid when type is NonNull"() { expect: - validationUtil.isValidLiteralValue(NullValue.newNullValue().build(), GraphQLString,schema) + validationUtil.isValidLiteralValue(NullValue.newNullValue().build(), GraphQLString, schema, graphQLContext, locale) } def "variables are valid"() { expect: - validationUtil.isValidLiteralValue(new VariableReference("var"), GraphQLBoolean,schema) + validationUtil.isValidLiteralValue(new VariableReference("var"), GraphQLBoolean, schema, graphQLContext, locale) } def "ArrayValue and ListType is invalid when one entry is invalid"() { @@ -85,7 +94,7 @@ class ValidationUtilTest extends Specification { def type = list(GraphQLString) expect: - !validationUtil.isValidLiteralValue(arrayValue, type,schema) + !validationUtil.isValidLiteralValue(arrayValue, type, schema, graphQLContext, locale) } def "One value is a single element List"() { @@ -93,7 +102,7 @@ class ValidationUtilTest extends Specification { def singleValue = new BooleanValue(true) def type = list(GraphQLBoolean) expect: - validationUtil.isValidLiteralValue(singleValue, type,schema) + validationUtil.isValidLiteralValue(singleValue, type, schema, graphQLContext, locale) } def "a valid array"() { @@ -102,19 +111,19 @@ class ValidationUtilTest extends Specification { def type = list(GraphQLString) expect: - validationUtil.isValidLiteralValue(arrayValue, type,schema) + validationUtil.isValidLiteralValue(arrayValue, type, schema, graphQLContext, locale) } def "a valid scalar"() { given: expect: - validationUtil.isValidLiteralValue(new BooleanValue(true), GraphQLBoolean,schema) + validationUtil.isValidLiteralValue(new BooleanValue(true), GraphQLBoolean, schema, graphQLContext, locale) } def "invalid scalar"() { given: expect: - !validationUtil.isValidLiteralValue(new BooleanValue(true), GraphQLString,schema) + !validationUtil.isValidLiteralValue(new BooleanValue(true), GraphQLString, schema, graphQLContext, locale) } def "valid enum"() { @@ -122,21 +131,21 @@ class ValidationUtilTest extends Specification { def enumType = GraphQLEnumType.newEnum().name("enumType").value("PLUTO").build() expect: - validationUtil.isValidLiteralValue(new EnumValue("PLUTO"), enumType,schema) + validationUtil.isValidLiteralValue(new EnumValue("PLUTO"), enumType, schema, graphQLContext, locale) } def "invalid enum value"() { given: def enumType = GraphQLEnumType.newEnum().name("enumType").value("PLUTO").build() expect: - !validationUtil.isValidLiteralValue(new StringValue("MARS"), enumType,schema) + !validationUtil.isValidLiteralValue(new StringValue("MARS"), enumType, schema, graphQLContext, locale) } def "invalid enum name"() { given: def enumType = GraphQLEnumType.newEnum().name("enumType").value("PLUTO").build() expect: - !validationUtil.isValidLiteralValue(new EnumValue("MARS"), enumType,schema) + !validationUtil.isValidLiteralValue(new EnumValue("MARS"), enumType, schema, graphQLContext, locale) } def "a valid ObjectValue"() { @@ -144,14 +153,14 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(GraphQLString)) + .name("hello") + .type(GraphQLString)) .build() def objectValue = ObjectValue.newObjectValue() objectValue.objectField(new ObjectField("hello", new StringValue("world"))) expect: - validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema) + validationUtil.isValidLiteralValueForInputObjectType(objectValue.build(), inputObjectType, schema, graphQLContext, locale) } def "a invalid ObjectValue with a invalid field"() { @@ -159,14 +168,14 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(GraphQLString)) + .name("hello") + .type(GraphQLString)) .build() def objectValue = ObjectValue.newObjectValue() objectValue.objectField(new ObjectField("hello", new BooleanValue(false))) expect: - !validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema) + !validationUtil.isValidLiteralValueForInputObjectType(objectValue.build(), inputObjectType, schema, graphQLContext, locale) } def "a invalid ObjectValue with a missing field"() { @@ -174,13 +183,13 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(nonNull(GraphQLString))) + .name("hello") + .type(nonNull(GraphQLString))) .build() def objectValue = ObjectValue.newObjectValue().build() expect: - !validationUtil.isValidLiteralValue(objectValue, inputObjectType,schema) + !validationUtil.isValidLiteralValueForInputObjectType(objectValue, inputObjectType, schema, graphQLContext, locale) } def "a valid ObjectValue with a nonNull field and default value"() { @@ -188,13 +197,55 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(nonNull(GraphQLString)) - .defaultValue("default")) + .name("hello") + .type(nonNull(GraphQLString)) + .defaultValueProgrammatic("default")) .build() def objectValue = ObjectValue.newObjectValue() expect: - validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema) + validationUtil.isValidLiteralValueForInputObjectType(objectValue.build(), inputObjectType, schema, graphQLContext, locale) + } + + def "a valid @oneOf input literal"() { + given: + def inputObjectType = GraphQLInputObjectType.newInputObject() + .name("inputObjectType") + .withAppliedDirective(newDirective().name(OneOfDirective.getName())) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f1") + .type(GraphQLString)) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f2") + .type(GraphQLString)) + .build() + def objectValue = ObjectValue.newObjectValue() + .objectField(newObjectField().name("f1").value(StringValue.of("v1")).build()) + .build() + + expect: + validationUtil.isValidLiteralValueForInputObjectType(objectValue, inputObjectType, schema, graphQLContext, locale) + } + + def "an invalid @oneOf input literal"() { + given: + def inputObjectType = GraphQLInputObjectType.newInputObject() + .name("inputObjectType") + .withAppliedDirective(newDirective().name(OneOfDirective.getName())) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f1") + .type(GraphQLString)) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f2") + .type(GraphQLString)) + .build() + + def objectValue = ObjectValue.newObjectValue() + .objectField(newObjectField().name("f1").value(StringValue.of("v1")).build()) + .objectField(newObjectField().name("f2").value(StringValue.of("v2")).build()) + .build() + + expect: + !validationUtil.isValidLiteralValueForInputObjectType(objectValue, inputObjectType, schema, graphQLContext, locale) } } diff --git a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy index b4d1354ac5..7e8210955e 100644 --- a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy @@ -1,5 +1,7 @@ package graphql.validation.rules +import graphql.GraphQLContext +import graphql.i18n.I18n import graphql.language.Argument import graphql.language.ArrayValue import graphql.language.BooleanValue @@ -8,18 +10,22 @@ import graphql.language.ObjectField import graphql.language.ObjectValue import graphql.language.StringValue import graphql.language.VariableReference +import graphql.parser.Parser import graphql.schema.GraphQLArgument import graphql.schema.GraphQLInputObjectField import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLList import graphql.schema.GraphQLNonNull +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification -import static graphql.Scalars.GraphQLBigDecimal import static graphql.Scalars.GraphQLBoolean +import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString import static graphql.StarWarsSchema.starWarsSchema @@ -28,16 +34,40 @@ class ArgumentsOfCorrectTypeTest extends Specification { ArgumentsOfCorrectType argumentsOfCorrectType ValidationContext validationContext = Mock(ValidationContext) ValidationErrorCollector errorCollector = new ValidationErrorCollector() + I18n i18n = Mock(I18n) def setup() { argumentsOfCorrectType = new ArgumentsOfCorrectType(validationContext, errorCollector) + def context = GraphQLContext.getDefault() + validationContext.getGraphQLContext() >> context + validationContext.getI18n() >> i18n + i18n.getLocale() >> Locale.ENGLISH + } + + def "error message uses locale of client (German), not server (English)"() { + def query = """ + query getDog { + dog @objectArgumentDirective(myObject: { id: "1" }) { + name + } + } + """ + def document = new Parser().parseDocument(query) + + when: + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.GERMAN) + + then: + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validierungsfehler (WrongType@[dog]) : Argument 'myObject' mit Wert 'ObjectValue{objectFields=[ObjectField{name='id', value=StringValue{value='1'}}]}' fehlen Pflichtfelder '[name]'" } def "valid type results in no error"() { given: def variableReference = new VariableReference("ref") def argumentLiteral = new Argument("arg", variableReference) - def graphQLArgument = new GraphQLArgument("arg", GraphQLBigDecimal) + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLInt).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument when: argumentsOfCorrectType.checkArgument(argumentLiteral) @@ -49,22 +79,38 @@ class ArgumentsOfCorrectTypeTest extends Specification { given: def stringValue = new StringValue("string") def argumentLiteral = new Argument("arg", stringValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLBoolean) + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLBoolean).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument when: argumentsOfCorrectType.checkArgument(argumentLiteral) then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg' with value 'StringValue{value='string'}' is not a valid 'Boolean' - Expected AST type 'BooleanValue' but was 'StringValue'." + } + + def "invalid type scalar results in error with message"() { + def query = """ + query getDog { + dog(arg1: 1) { + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[dog]) : argument 'arg1' with value 'IntValue{value=1}' is not a valid 'String' - Expected an AST type of 'StringValue' but it was a 'IntValue'" } def "invalid input object type results in error"() { given: def objectValue = new ObjectValue([new ObjectField("foo", new StringValue("string"))]) def argumentLiteral = new Argument("arg", objectValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLInputObjectType.newInputObject().name("ArgumentObjectType").field(GraphQLInputObjectField.newInputObjectField().name("foo").type(GraphQLBoolean)).build()) + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType").field(GraphQLInputObjectField.newInputObjectField().name("foo").type(GraphQLBoolean)).build()).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument argumentsOfCorrectType.validationContext.getSchema() >> starWarsSchema @@ -73,8 +119,6 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg.foo' with value 'StringValue{value='string'}' is not a valid 'Boolean' - Expected AST type 'BooleanValue' but was 'StringValue'." } def "invalid list object type results in error"() { @@ -84,7 +128,7 @@ class ArgumentsOfCorrectTypeTest extends Specification { def invalidValue = new ObjectValue([new ObjectField("foo", new StringValue("string"))]) def arrayValue = new ArrayValue([validValue, invalidValue]) def argumentLiteral = new Argument("arg", arrayValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLList.list(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType").field(GraphQLInputObjectField.newInputObjectField().name("foo").type(GraphQLBoolean)).build())) + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLList.list(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType").field(GraphQLInputObjectField.newInputObjectField().name("foo").type(GraphQLBoolean)).build())).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument argumentsOfCorrectType.validationContext.getSchema() >> starWarsSchema @@ -94,8 +138,6 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg[1].foo' with value 'StringValue{value='string'}' is not a valid 'Boolean' - Expected AST type 'BooleanValue' but was 'StringValue'." } def "invalid list inside object type results in error"() { @@ -105,7 +147,7 @@ class ArgumentsOfCorrectTypeTest extends Specification { def invalidValue = new ObjectValue([new ObjectField("foo", new ArrayValue([new BooleanValue(true), new StringValue('string')]))]) def arrayValue = new ArrayValue([invalidValue, validValue]) def argumentLiteral = new Argument("arg", arrayValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLList.list(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType").field(GraphQLInputObjectField.newInputObjectField().name("foo").type(GraphQLList.list(GraphQLBoolean))).build())) + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLList.list(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType").field(GraphQLInputObjectField.newInputObjectField().name("foo").type(GraphQLList.list(GraphQLBoolean))).build())).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument argumentsOfCorrectType.validationContext.getSchema() >> starWarsSchema @@ -115,8 +157,6 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg[0].foo[1]' with value 'StringValue{value='string'}' is not a valid 'Boolean' - Expected AST type 'BooleanValue' but was 'StringValue'." } def "invalid list simple type results in error"() { @@ -126,7 +166,7 @@ class ArgumentsOfCorrectTypeTest extends Specification { def invalidValue = new StringValue("string") def arrayValue = new ArrayValue([validValue, invalidValue]) def argumentLiteral = new Argument("arg", arrayValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLList.list(GraphQLBoolean)) + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLList.list(GraphQLBoolean)).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument when: @@ -134,20 +174,18 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg[1]' with value 'StringValue{value='string'}' is not a valid 'Boolean' - Expected AST type 'BooleanValue' but was 'StringValue'." } def "type missing fields results in error"() { given: def objectValue = new ObjectValue([new ObjectField("foo", new StringValue("string"))]) def argumentLiteral = new Argument("arg", objectValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") .field(GraphQLInputObjectField.newInputObjectField() .name("foo").type(GraphQLNonNull.nonNull(GraphQLString))) .field(GraphQLInputObjectField.newInputObjectField() .name("bar").type(GraphQLNonNull.nonNull(GraphQLString))) - .build()) + .build()).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument argumentsOfCorrectType.validationContext.getSchema() >> starWarsSchema @@ -157,20 +195,36 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg' with value 'ObjectValue{objectFields=[ObjectField{name='foo', value=StringValue{value='string'}}]}' is missing required fields '[bar]'" + } + + def "type missing fields results in error with message"() { + def query = """ + query getDog { + dog @objectArgumentDirective(myObject: { id: "1" }) { + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[dog]) : argument 'myObject' with value 'ObjectValue{objectFields=[ObjectField{name='id', value=StringValue{value='1'}}]}' is missing required fields '[name]'" } def "type not object results in error"() { given: def objectValue = new StringValue("string") def argumentLiteral = new Argument("arg", objectValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") .field(GraphQLInputObjectField.newInputObjectField() .name("foo").type(GraphQLNonNull.nonNull(GraphQLString))) .field(GraphQLInputObjectField.newInputObjectField() .name("bar").type(GraphQLNonNull.nonNull(GraphQLString))) - .build()) + .build()).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument when: @@ -178,20 +232,36 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg' with value 'StringValue{value='string'}' must be an object type" + } + + def "invalid not object type results in error with message"() { + def query = """ + query getDog { + dog @objectArgumentDirective(myObject: 1) { + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[dog]) : argument 'myObject' with value 'IntValue{value=1}' must be an object type" } def "type null fields results in error"() { given: def objectValue = new ObjectValue([new ObjectField("foo", new StringValue("string")), new ObjectField("bar", NullValue.newNullValue().build())]) def argumentLiteral = new Argument("arg", objectValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") .field(GraphQLInputObjectField.newInputObjectField() .name("foo").type(GraphQLNonNull.nonNull(GraphQLString))) .field(GraphQLInputObjectField.newInputObjectField() .name("bar").type(GraphQLNonNull.nonNull(GraphQLString))) - .build()) + .build()).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument argumentsOfCorrectType.validationContext.getSchema() >> starWarsSchema @@ -201,20 +271,36 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg.bar' with value 'NullValue{}' must not be null" + } + + def "type null results in error with message"() { + def query = """ + query getDog { + dog { + doesKnowCommand(dogCommand: null) + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 2 // First error is NullValueForNonNullArgument + validationErrors.get(1).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(1).message == "Validation error (WrongType@[dog/doesKnowCommand]) : argument 'dogCommand' with value 'NullValue{}' must not be null" } def "type with extra fields results in error"() { given: def objectValue = new ObjectValue([new ObjectField("foo", new StringValue("string")), new ObjectField("bar", new StringValue("string")), new ObjectField("fooBar", new BooleanValue(true))]) def argumentLiteral = new Argument("arg", objectValue) - def graphQLArgument = new GraphQLArgument("arg", GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") + def graphQLArgument = GraphQLArgument.newArgument().name("arg").type(GraphQLInputObjectType.newInputObject().name("ArgumentObjectType") .field(GraphQLInputObjectField.newInputObjectField() .name("foo").type(GraphQLNonNull.nonNull(GraphQLString))) .field(GraphQLInputObjectField.newInputObjectField() .name("bar").type(GraphQLNonNull.nonNull(GraphQLString))) - .build()) + .build()).build() argumentsOfCorrectType.validationContext.getArgument() >> graphQLArgument argumentsOfCorrectType.validationContext.getSchema() >> starWarsSchema @@ -224,8 +310,24 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.WrongType) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == - "Validation error of type WrongType: argument 'arg' with value 'ObjectValue{objectFields=[ObjectField{name='foo', value=StringValue{value='string'}}, ObjectField{name='bar', value=StringValue{value='string'}}, ObjectField{name='fooBar', value=BooleanValue{value=true}}]}' contains a field not in 'ArgumentObjectType': 'fooBar'" + } + + def "type with extra fields results in error with message"() { + def query = """ + query getDog { + dog @objectArgumentDirective(myObject: { name: "Gary", extraField: "ShouldNotBeHere" }) { + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[dog]) : argument 'myObject' with value 'ObjectValue{objectFields=[ObjectField{name='name', value=StringValue{value='Gary'}}, ObjectField{name='extraField', value=StringValue{value='ShouldNotBeHere'}}]}' contains a field not in 'Input': 'extraField'" } def "current null argument from context is no error"() { @@ -237,4 +339,58 @@ class ArgumentsOfCorrectTypeTest extends Specification { then: argumentsOfCorrectType.getErrors().isEmpty() } + + def "invalid enum type results in error with message"() { + def query = """ + query getDog { + dog { + doesKnowCommand(dogCommand: PRETTY) + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[dog/doesKnowCommand]) : argument 'dogCommand' with value 'EnumValue{name='PRETTY'}' is not a valid 'DogCommand' - Literal value not in allowable values for enum 'DogCommand' - 'EnumValue{name='PRETTY'}'" + } + + def "invalid @oneOf argument - has more than 1 key - case #why"() { + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[oneOfField]) : Exactly one key must be specified for OneOf type 'oneOfInputType'." + + where: + why | query | _ + 'some variables' | + ''' + query q($v1 : String) { + oneOfField(oneOfArg : { a : $v1, b : "y" }) + } + ''' | _ + 'all variables' | + ''' + query q($v1 : String, $v2 : String) { + oneOfField(oneOfArg : { a : $v1, b : $v2 }) + } + ''' | _ + 'all literals' | + ''' + query q { + oneOfField(oneOfArg : { a : "x", b : "y" }) + } + ''' | _ + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } } diff --git a/src/test/groovy/graphql/validation/rules/DeferDirectiveLabelTest.groovy b/src/test/groovy/graphql/validation/rules/DeferDirectiveLabelTest.groovy new file mode 100644 index 0000000000..2e3975269d --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/DeferDirectiveLabelTest.groovy @@ -0,0 +1,213 @@ +package graphql.validation.rules + +import graphql.ExperimentalApi +import graphql.GraphQLContext +import graphql.language.Document +import graphql.parser.Parser +import graphql.validation.LanguageTraversal +import graphql.validation.RulesVisitor +import graphql.validation.SpecValidationSchema +import graphql.validation.TraversalContext +import graphql.validation.ValidationContext +import graphql.validation.ValidationError +import graphql.validation.ValidationErrorCollector +import graphql.validation.ValidationErrorType +import graphql.validation.Validator +import spock.lang.Specification + +class DeferDirectiveLabelTest extends Specification { + + ValidationContext validationContext = Mock(ValidationContext) + + ValidationErrorCollector errorCollector = new ValidationErrorCollector() + + DeferDirectiveLabel deferDirectiveLabel = new DeferDirectiveLabel(validationContext, errorCollector) + + def setup() { + def traversalContext = Mock(TraversalContext) + validationContext.getSchema() >> SpecValidationSchema.specValidationSchema + validationContext.getGraphQLContext() >> GraphQLContext.newContext().of( + ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, true + ).build(); + validationContext.getTraversalContext() >> traversalContext + } + + def "Allow unique label directive"() { + given: + def query = """ + query defer_query { + ... @defer(label: "name") { + human { + name + } + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + errorCollector.errors.isEmpty() + + } + + def "Defer directive label argument must be unique"() { + given: + def query = """ + query defer_query { + dog { + ... @defer(label: "name") { + name + } + } + alien { + ... @defer(label: "name") { + name + } + } + + } + """ + + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + !errorCollector.errors.isEmpty() + errorCollector.containsValidationError(ValidationErrorType.DuplicateIncrementalLabel) + } + + def "Multiple use of Defer directive is valid"() { + given: + def query = """ + query defer_query { + dog { + ... @defer { + name + } + ... @defer { + name + } + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + errorCollector.errors.isEmpty() + } + + def "Allow Multiple use of Defer directive with different labels"() { + given: + def query = """ + query defer_query { + dog { + ... @defer(label: "name") { + name + } + ... @defer(label: "nameAgain") { + name + } + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + errorCollector.errors.isEmpty() + } + + + def "Label cannot be an argument directive"() { + given: + def query = """ + query defer_query(\$label: Int) { + ... @defer(label:\$label) { + human { + name + } + } + } + """ + + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + !errorCollector.errors.isEmpty() + errorCollector.containsValidationError(ValidationErrorType.WrongType) + } + + + def "Defer directive Label must be string"() { + given: + def query = """ + query defer_query { + dog { + ... @defer(label: 1) { + name + } + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.WrongType) + } + + def "defer with null label should behave as if no label was provided"() { + def query = ''' + query { + dog { + ... @defer(label: null) { + name + } + } + cat { + ... @defer(label: null) { + name + } + } + } + ''' + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + languageTraversal.traverse(document, new RulesVisitor(validationContext, [deferDirectiveLabel])) + + then: + errorCollector.errors.isEmpty() + } + + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } +} + diff --git a/src/test/groovy/graphql/validation/rules/DeferDirectiveOnRootLevelTest.groovy b/src/test/groovy/graphql/validation/rules/DeferDirectiveOnRootLevelTest.groovy new file mode 100644 index 0000000000..ec65ec1937 --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/DeferDirectiveOnRootLevelTest.groovy @@ -0,0 +1,473 @@ +package graphql.validation.rules + +import graphql.ExperimentalApi +import graphql.i18n.I18n +import graphql.language.Document +import graphql.parser.Parser +import graphql.validation.LanguageTraversal +import graphql.validation.RulesVisitor +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationContext +import graphql.validation.ValidationErrorCollector +import graphql.validation.ValidationErrorType +import spock.lang.Specification + +class DeferDirectiveOnRootLevelTest extends Specification { + + ValidationErrorCollector errorCollector = new ValidationErrorCollector() + + def traverse(String query) { + Document document = new Parser().parseDocument(query) + ValidationContext validationContext = new ValidationContext( + SpecValidationSchema.specValidationSchema, + document, + I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH)) + validationContext.getGraphQLContext().put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, true) + + LanguageTraversal languageTraversal = new LanguageTraversal() + languageTraversal.traverse(document, new RulesVisitor(validationContext, [new DeferDirectiveOnRootLevel(validationContext, errorCollector)])) + } + + + def "Not allow defer on subscription root level"() { + given: + def query = """ + subscription pets { + ... @defer { + dog { + name + } + } + } + """ + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + + } + + def "Not allow defer mutation root level "() { + given: + def query = """ + mutation dog { + ... @defer { + createDog(input: {id: "1"}) { + name + } + } + } + """ + + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root mutation type 'PetMutationType'" + + } + + def "Defer directive is allowed on query root level"() { + given: + def query = """ + query defer_query { + ... @defer { + dog { + name + } + } + } + """ + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + def "Not allow defer mutation root level on inline fragments "() { + given: + def query = """ + mutation doggo { + ... { + ... @defer { + createDog(input: {id: "1"}) { + name + } + } + + } + } + """ + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root mutation type 'PetMutationType'" + } + + def "Not allow defer on subscription root level even when is inside multiple inline fragment"() { + given: + def query = """ + subscription pets { + ...{ + ...{ + ... @defer { + dog { + name + } + } + } + } + } + """ + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root subscription type 'SubscriptionRoot'" + + } + + + def "Not allow defer on mutation root level even when ih multiple inline fragments split in fragment"() { + given: + def query = """ + fragment doggo on PetMutationType { + ... { + ... @defer { + createDog(id: "1") { + id + } + } + } + } + + mutation doggoMutation { + ...{ + ...doggo + } + } + + + """ + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective@[doggo]) : Defer directive cannot be used on root mutation type 'PetMutationType'" + } + + + def "Allows defer on mutation when it is not on root level"() { + given: + def query = """ + mutation pets { + createDog(input: {id: "1"}) { + ... @defer { + name + } + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + def "allow defer on fragment when is not on mutation root level"() { + given: + def query = """ + mutation doggo { + ...{ + createDog(id: "1") { + ...doggo + } + } + } + + fragment doggo on Dog { + ... @defer { + id + } + } + + """ + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + + def "allow defer on split fragment when is not on mutation root level"() { + given: + def query = """ + mutation doggo { + ...doggoCreate + } + + fragment doggoCreate on PetMutationType { + createDog(id: "1") { + ...doggoFields + } + } + + fragment doggoFields on Dog { + ... @defer { + id + } + } + + """ + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + + } + + + def "Not allow defer subscription root level even when there are multiple subscriptions"() { + given: + def query = """ + subscription pets { + dog { + name + } + } + subscription dog { + ... @defer { + dog { + name + } + } + } + + subscription morePets { + cat { + name + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal() + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.size() == 1 + + } + + def "Not allow defer on mutation root level when there are multiple fragment levels regarless fragment order on query"() { + given: + def query = """ + + fragment createDoggoRoot on PetMutationType { + ... { + ...createDoggo + } + } + + mutation createDoggoRootOp { + ...createDoggoRoot + } + + fragment createDoggo on PetMutationType { + ... { + ... @defer { + createDog(input: {id: "1"}) { + name + } + } + } + } + + """ + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective@[createDoggoRoot/createDoggo]) : Defer directive cannot be used on root mutation type 'PetMutationType'" + + } + + def "Not allow defer on mutation root level even when there are multiple fragments and operations"() { + given: + def query = """ + + fragment createDoggoLevel1 on PetMutationType { + ... { + ... { + ...createDoggoLevel2 + } + } + } + + fragment createDoggoLevel2 on PetMutationType { + ...createDoggo + } + + fragment createDoggo on PetMutationType { + ... { + ... @defer { + createDog(input: {id: "1"}) { + name + } + } + } + } + + query pets1 { + ... @defer { + dog { + name + } + } + } + + mutation createDoggo { + ...createDoggoLevel1 + } + + """ + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective@[createDoggoLevel1/createDoggoLevel2/createDoggo]) : Defer directive cannot be used on root mutation type 'PetMutationType'" + + } + + + def "Not allow defer on subscription root level even when defer(if == false) "() { + given: + def query = """ + subscription pets{ + ... @defer(if:false) { + dog { + + name + } + nickname + } + } + """ + Document document = new Parser().parseDocument(query) + LanguageTraversal languageTraversal = new LanguageTraversal()\ + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root subscription type 'SubscriptionRoot'" + + } + + def "Not allow defer on subscription root level when defer(if == true) "() { + given: + def query = """ + subscription pets{ + ... @defer(if:true) { + dog { + + name + } + nickname + } + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root subscription type 'SubscriptionRoot'" + + } + + def "Not allow defer on mutation root level even when if is variable that could have false as value "() { + given: + def query = """ + mutation pets(\$ifVar:Boolean){ + ... @defer(if:\$ifVar) { + createDog(input: {id: "1"}) { + name + } + } + + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root mutation type 'PetMutationType'" + } + + def "Not allow defer on mutation root level when defer(if == true) "() { + given: + def query = """ + mutation pets{ + ... @defer(if:true) { + createDog(input: {id: "1"}) { + name + } + } + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective) : Defer directive cannot be used on root mutation type 'PetMutationType'" + + } + +} + diff --git a/src/test/groovy/graphql/validation/rules/DeferDirectiveOnValidOperationTest.groovy b/src/test/groovy/graphql/validation/rules/DeferDirectiveOnValidOperationTest.groovy new file mode 100644 index 0000000000..1430b7743b --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/DeferDirectiveOnValidOperationTest.groovy @@ -0,0 +1,366 @@ +package graphql.validation.rules + +import graphql.ExperimentalApi +import graphql.i18n.I18n +import graphql.language.Document +import graphql.parser.Parser +import graphql.validation.LanguageTraversal +import graphql.validation.RulesVisitor +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationContext +import graphql.validation.ValidationErrorCollector +import graphql.validation.ValidationErrorType +import spock.lang.Specification + +class DeferDirectiveOnValidOperationTest extends Specification { + ValidationErrorCollector errorCollector = new ValidationErrorCollector() + + def traverse(String query) { + Document document = new Parser().parseDocument(query) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(SpecValidationSchema.specValidationSchema, document, i18n) + validationContext.getGraphQLContext().put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, true) + LanguageTraversal languageTraversal = new LanguageTraversal() + languageTraversal.traverse(document, new RulesVisitor(validationContext, [new DeferDirectiveOnValidOperation(validationContext, errorCollector)])) + } + + def "Allow simple defer on query with fragment definition"() { + def query = ''' + query { + dog { + ... DogFields @defer + } + } + + fragment DogFields on Dog { + name + } + ''' + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + def "Allow simple defer on mutation with fragment definition"() { + def query = ''' + mutation { + createDog(input: {name: "Fido"}) { + ... DogFields @defer + } + } + + fragment DogFields on Dog { + name + } + ''' + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + def "Not allow defer on subscription operation"() { + given: + def query = """ + subscription pets { + dog { + ... @defer { + name + } + nickname + } + } + """ + + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + + } + + + def "Allow defer(if:false) on subscription operation"() { + given: + def query = """ + subscription pets { + dog { + ... @defer(if:false) { + name + } + nickname + } + } + """ + + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + + } + + def "Not allow simple defer on subscription with fragment definition"() { + def query = ''' + subscription { + dog { + ... DogFields @defer + } + } + + fragment DogFields on Dog { + name + } + ''' + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + + } + + def "Not allow defer on fragment when operation is subscription"() { + given: + def query = """ + fragment doggo on PetMutationType { + ... { + dog { + ... @defer { + id + } + nickname + } + + } + } + + subscription doggoMutation { + ...{ + ...doggo + } + } + + + """ + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + + } + + def "Allow defer(if:false) on fragment when operation is subscription"() { + given: + def query = """ + fragment doggo on PetMutationType { + ... { + dog { + ... @defer(if:false) { + id + } + nickname + } + + } + } + + subscription doggoMutation { + ...{ + ...doggo + } + } + + + """ + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + + } + + def "Not allow defer subscription even when there are multiple operations with multiple fragments"() { + given: + def query = """ + + fragment doggoSubscription on SubscriptionRoot { + ... { + dog { + ...doggo + } + } + } + + query pets { + ... @defer { + dog { + name + } + } + } + + subscription pets2 { + ...doggoSubscription + } + + query pets3 { + dog { + name + } + } + + fragment doggo on Dog{ + ... @defer { + name + } + } + """ + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.errors.get(0).getValidationErrorType() == ValidationErrorType.MisplacedDirective + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective@[doggoSubscription/dog/doggo]) : Directive 'defer' is not allowed to be used on operation subscription" + + } + + + def "Not allow defer subscription even when there are multiple operations and multiple fragments"() { + given: + def query = """ + query pets { + ... @defer { + dog { + name + } + } + } + + subscription pets2 { + dog { + ... @defer { + name + } + } + } + + + """ + + when: + traverse(query) + + then: + !errorCollector.errors.isEmpty() + errorCollector.errors.size() == 1 + errorCollector.errors.get(0).getValidationErrorType() == ValidationErrorType.MisplacedDirective + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective@[dog]) : Directive 'defer' is not allowed to be used on operation subscription" + + } + + def "Allows defer on mutation when it is not on root level"() { + given: + def query = """ + mutation pets { + dog { + ... @defer { + name + } + } + } + """ + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + + def "Allow defer on subscription when defer(if == false) "() { + given: + def query = """ + subscription pets{ + dog { + ... @defer(if:false) { + name + } + nickname + } + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + + } + + def "Not allow defer on subscription when defer(if == true) "() { + given: + def query = """ + subscription pets{ + dog { + ... @defer(if:true) { + name + } + nickname + } + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.size() == 1 + errorCollector.containsValidationError(ValidationErrorType.MisplacedDirective) + errorCollector.errors.get(0).message == "Validation error (MisplacedDirective@[dog]) : Directive 'defer' is not allowed to be used on operation subscription" + + + } + + def "Allow defer when if is variable that could have false as value "() { + given: + def query = """ + subscription pets(\$ifVar:Boolean){ + dog { + ... @defer(if:\$ifVar) { + name + } + nickname + } + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + + +} \ No newline at end of file diff --git a/src/test/groovy/graphql/validation/rules/DeferredDirectiveAbstractRuleTest.groovy b/src/test/groovy/graphql/validation/rules/DeferredDirectiveAbstractRuleTest.groovy deleted file mode 100644 index 1e1947d443..0000000000 --- a/src/test/groovy/graphql/validation/rules/DeferredDirectiveAbstractRuleTest.groovy +++ /dev/null @@ -1,40 +0,0 @@ -package graphql.validation.rules - -import graphql.Directives -import graphql.language.Directive -import graphql.validation.ValidationContext -import graphql.validation.ValidationErrorCollector -import spock.lang.Specification - -class DeferredDirectiveAbstractRuleTest extends Specification { - ValidationContext validationContext = Mock(ValidationContext) - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - DeferredDirectiveOnNonNullableField deferredRule = new DeferredDirectiveOnNonNullableField(validationContext, errorCollector) - - - def 'if directive name is not deferred then empty errors'() { - when: - deferredRule.checkDirective(new Directive("someOtherName"), []) - then: - errorCollector.errors.isEmpty() - } - - def 'if parent type is empty then empty errors'() { - validationContext.getParentType() >> null - - when: - deferredRule.checkDirective(new Directive(Directives.DeferDirective.name), []) - then: - errorCollector.errors.isEmpty() - } - - def 'if field def is empty then empty errors'() { - validationContext.getFieldDef() >> null - - when: - deferredRule.checkDirective(new Directive(Directives.DeferDirective.name), []) - then: - errorCollector.errors.isEmpty() - } - -} diff --git a/src/test/groovy/graphql/validation/rules/DeferredDirectiveOnNonNullableFieldTest.groovy b/src/test/groovy/graphql/validation/rules/DeferredDirectiveOnNonNullableFieldTest.groovy deleted file mode 100644 index fa3f69f46e..0000000000 --- a/src/test/groovy/graphql/validation/rules/DeferredDirectiveOnNonNullableFieldTest.groovy +++ /dev/null @@ -1,46 +0,0 @@ -package graphql.validation.rules - -import graphql.Directives -import graphql.StarWarsSchema -import graphql.language.Directive -import graphql.validation.ValidationContext -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorCollector -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -import static graphql.Scalars.GraphQLString -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition -import static graphql.schema.GraphQLNonNull.nonNull - -class DeferredDirectiveOnNonNullableFieldTest extends Specification { - ValidationContext validationContext = Mock(ValidationContext) - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - DeferredDirectiveOnNonNullableField deferredOnNullableField = new DeferredDirectiveOnNonNullableField(validationContext, errorCollector) - - - def "denies non nullable fields"() { - def fieldDefinition = newFieldDefinition().name("field").type(nonNull(GraphQLString)).build() - - validationContext.getParentType() >> StarWarsSchema.humanType - validationContext.getFieldDef() >> fieldDefinition - - when: - deferredOnNullableField.checkDirective(new Directive(Directives.DeferDirective.name), []) - then: - !errorCollector.errors.isEmpty() - (errorCollector.errors[0] as ValidationError).validationErrorType == ValidationErrorType.DeferDirectiveOnNonNullField - } - - def "allows nullable fields"() { - def fieldDefinition = newFieldDefinition().name("field").type(GraphQLString).build() - - validationContext.getParentType() >> StarWarsSchema.humanType - validationContext.getFieldDef() >> fieldDefinition - - when: - deferredOnNullableField.checkDirective(new Directive(Directives.DeferDirective.name), []) - then: - errorCollector.errors.isEmpty() - } -} diff --git a/src/test/groovy/graphql/validation/rules/DeferredDirectiveOnQueryOperationTest.groovy b/src/test/groovy/graphql/validation/rules/DeferredDirectiveOnQueryOperationTest.groovy deleted file mode 100644 index 721fb2c89b..0000000000 --- a/src/test/groovy/graphql/validation/rules/DeferredDirectiveOnQueryOperationTest.groovy +++ /dev/null @@ -1,71 +0,0 @@ -package graphql.validation.rules - -import graphql.StarWarsSchema -import graphql.language.Document -import graphql.parser.Parser -import graphql.validation.LanguageTraversal -import graphql.validation.RulesVisitor -import graphql.validation.TraversalContext -import graphql.validation.ValidationContext -import graphql.validation.ValidationErrorCollector -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -import static graphql.Scalars.GraphQLString -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition -import static graphql.schema.GraphQLNonNull.nonNull - -class DeferredDirectiveOnQueryOperationTest extends Specification { - - ValidationContext validationContext = Mock(ValidationContext) - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - DeferredDirectiveOnQueryOperation directiveOnQueryOperation = new DeferredDirectiveOnQueryOperation(validationContext, errorCollector) - - void setup() { - def traversalContext = Mock(TraversalContext) - validationContext.getSchema() >> StarWarsSchema.starWarsSchema - validationContext.getTraversalContext() >> traversalContext - - def fieldDefinition = newFieldDefinition().name("field").type(nonNull(GraphQLString)).build() - - validationContext.getParentType() >> StarWarsSchema.humanType - validationContext.getFieldDef() >> fieldDefinition - } - - def "denies operations that are not queries"() { - given: - def query = """ - mutation Foo { - name @defer - } - """ - - Document document = new Parser().parseDocument(query) - LanguageTraversal languageTraversal = new LanguageTraversal() - - when: - languageTraversal.traverse(document, new RulesVisitor(validationContext, [directiveOnQueryOperation])) - - then: - errorCollector.containsValidationError(ValidationErrorType.DeferDirectiveNotOnQueryOperation) - } - - def "allows operations that are queries"() { - given: - def query = """ - query Foo { - name @defer - } - """ - - Document document = new Parser().parseDocument(query) - LanguageTraversal languageTraversal = new LanguageTraversal() - - when: - languageTraversal.traverse(document, new RulesVisitor(validationContext, [directiveOnQueryOperation])) - - then: - errorCollector.errors.isEmpty() - } - -} diff --git a/src/test/groovy/graphql/validation/rules/DeferredMustBeOnAllFieldsTest.groovy b/src/test/groovy/graphql/validation/rules/DeferredMustBeOnAllFieldsTest.groovy deleted file mode 100644 index 9a7c3dcfe5..0000000000 --- a/src/test/groovy/graphql/validation/rules/DeferredMustBeOnAllFieldsTest.groovy +++ /dev/null @@ -1,193 +0,0 @@ -package graphql.validation.rules - -import graphql.Directives -import graphql.GraphQL -import graphql.TestUtil -import graphql.validation.ValidationError -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -class DeferredMustBeOnAllFieldsTest extends Specification { - - def schema = TestUtil.schema(''' - type Query { - newsFeed : NewsFeed - } - - type NewsFeed { - stories : [Story] - } - - type Story { - id : ID - text : String - } - - ''').transform({ it.additionalDirective(Directives.DeferDirective) }) - - - def "all fields MUST contain @defer on all declarations"() { - - def graphQL = GraphQL.newGraphQL(schema).build() - - def query = """ - fragment StoryDetail on Story { - id - text @defer - } - query { - newsFeed { - stories { - text @defer - - # fragment - ...StoryDetail - - ## inline fragment - ... on Story { - id - text # @defer is missing - } - } - } - } - """ - - - when: - def er = graphQL.execute(query) - then: - er.errors.size() == 1 - (er.errors[0] as ValidationError).validationErrorType == ValidationErrorType.DeferMustBeOnAllFields - (er.errors[0] as ValidationError).queryPath == ["newsFeed", "stories"] - - when: - query = """ - fragment StoryDetail on Story { - id - text # @defer is missing - } - query { - newsFeed { - stories { - text @defer - - # fragment - ...StoryDetail - - ## inline fragment - ... on Story { - id - text @defer - } - } - } - } - """ - - er = graphQL.execute(query) - - then: - er.errors.size() == 1 - (er.errors[0] as ValidationError).validationErrorType == ValidationErrorType.DeferMustBeOnAllFields - (er.errors[0] as ValidationError).queryPath == ["newsFeed", "stories"] - - when: - query = """ - fragment StoryDetail on Story { - id - text @defer - } - query { - newsFeed { - stories { - text # @defer is missing - - # fragment - ...StoryDetail - - ## inline fragment - ... on Story { - id - text @defer - } - } - } - } - """ - - er = graphQL.execute(query) - - then: - er.errors.size() == 1 - (er.errors[0] as ValidationError).validationErrorType == ValidationErrorType.DeferMustBeOnAllFields - (er.errors[0] as ValidationError).queryPath == ["newsFeed", "stories"] - - } - - def "if all fields contain @defer then its ok"() { - - def graphQL = GraphQL.newGraphQL(schema).build() - - def query = """ - fragment StoryDetail on Story { - id - text @defer - } - query { - newsFeed { - stories { - text @defer - - # fragment - ...StoryDetail - - ## inline fragment - ... on Story { - id - text @defer - } - } - } - } - """ - - - when: - def er = graphQL.execute(query) - then: - er.errors.size() == 0 - } - - def "if only one field contain @defer then its ok"() { - - def graphQL = GraphQL.newGraphQL(schema).build() - - def query = """ - fragment StoryDetail on Story { - id - text @defer - } - query { - newsFeed { - stories { - id - - # fragment - ...StoryDetail - - ## inline fragment - ... on Story { - id - } - } - } - } - """ - - when: - def er = graphQL.execute(query) - then: - er.errors.size() == 0 - } -} diff --git a/src/test/groovy/graphql/validation/rules/ExecutableDefinitionsTest.groovy b/src/test/groovy/graphql/validation/rules/ExecutableDefinitionsTest.groovy index 9ec8693104..4002b14ab4 100644 --- a/src/test/groovy/graphql/validation/rules/ExecutableDefinitionsTest.groovy +++ b/src/test/groovy/graphql/validation/rules/ExecutableDefinitionsTest.groovy @@ -2,13 +2,13 @@ package graphql.validation.rules import graphql.language.SourceLocation import graphql.parser.Parser +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationError import graphql.validation.ValidationErrorType import graphql.validation.Validator +import org.codehaus.groovy.runtime.StringGroovyMethods import spock.lang.Specification -import static graphql.validation.rules.ExecutableDefinitions.nonExecutableDefinitionMessage - class ExecutableDefinitionsTest extends Specification { def 'Executable Definitions with only operation'() { @@ -47,7 +47,7 @@ class ExecutableDefinitionsTest extends Specification { } def 'Executable Definitions with type definition'() { - def query = """ + def query = StringGroovyMethods.stripIndent(""" query Foo { dog { name @@ -61,20 +61,23 @@ class ExecutableDefinitionsTest extends Specification { extend type Dog { color: String } - """.stripIndent() + """) when: def validationErrors = validate(query) then: !validationErrors.empty validationErrors.size() == 2 - validationErrors[0] == nonExecutableDefinition("Cow", 8, 1) - validationErrors[1] == nonExecutableDefinition("Dog", 12, 1) - + validationErrors[0].validationErrorType == ValidationErrorType.NonExecutableDefinition + validationErrors[0].locations == [new SourceLocation(8, 1)] + validationErrors[0].message == "Validation error (NonExecutableDefinition) : Type 'Cow' definition is not executable" + validationErrors[1].validationErrorType == ValidationErrorType.NonExecutableDefinition + validationErrors[1].locations == [new SourceLocation(12, 1)] + validationErrors[1].message == "Validation error (NonExecutableDefinition) : Type 'Dog' definition is not executable" } def 'Executable Definitions with schema definition'() { - def query = """ + def query = StringGroovyMethods.stripIndent(""" schema { query: QueryRoot } @@ -82,15 +85,19 @@ class ExecutableDefinitionsTest extends Specification { type QueryRoot { test: String } - """.stripIndent() + """) when: def validationErrors = validate(query) then: !validationErrors.empty validationErrors.size() == 2 - validationErrors[0] == nonExecutableDefinition("schema", 2, 1) - validationErrors[1] == nonExecutableDefinition("QueryRoot", 6, 1) + validationErrors[0].validationErrorType == ValidationErrorType.NonExecutableDefinition + validationErrors[0].locations == [new SourceLocation(2, 1)] + validationErrors[0].message == "Validation error (NonExecutableDefinition) : Schema definition is not executable" + validationErrors[1].validationErrorType == ValidationErrorType.NonExecutableDefinition + validationErrors[1].locations == [new SourceLocation(6, 1)] + validationErrors[1].message == "Validation error (NonExecutableDefinition) : Type 'QueryRoot' definition is not executable" } def 'Executable Definitions with input value type definition'() { @@ -105,18 +112,29 @@ class ExecutableDefinitionsTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - validationErrors[0] == nonExecutableDefinition("QueryRoot", 2, 1) + validationErrors[0].validationErrorType == ValidationErrorType.NonExecutableDefinition + validationErrors[0].locations == [new SourceLocation(2, 1)] + validationErrors[0].message == "Validation error (NonExecutableDefinition) : Type 'QueryRoot' definition is not executable" } + def 'Executable Definitions with no directive definition'() { + def query = StringGroovyMethods.stripIndent(""" + directive @nope on INPUT_OBJECT + """) + when: + def document = new Parser().parseDocument(query) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) - ValidationError nonExecutableDefinition(String defName, int line, int column) { - return new ValidationError(ValidationErrorType.NonExecutableDefinition, - [new SourceLocation(line, column)], - nonExecutableDefinitionMessage(defName)) + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.NonExecutableDefinition + validationErrors[0].locations == [new SourceLocation(2, 1)] + validationErrors[0].message == "Validation error (NonExecutableDefinition) : Directive 'nope' definition is not executable" } - List validate(String query) { + static List validate(String query) { def document = new Parser().parseDocument(query) - return new Validator().validateDocument(Harness.Schema, document) + return new Validator().validateDocument(Harness.Schema, document, Locale.ENGLISH) } } diff --git a/src/test/groovy/graphql/validation/rules/FieldsOnCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/FieldsOnCorrectTypeTest.groovy index f16b804ae9..8bbb8052e3 100644 --- a/src/test/groovy/graphql/validation/rules/FieldsOnCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/FieldsOnCorrectTypeTest.groovy @@ -1,11 +1,15 @@ package graphql.validation.rules import graphql.language.Field +import graphql.parser.Parser import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLObjectType +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class FieldsOnCorrectTypeTest extends Specification { @@ -28,7 +32,6 @@ class FieldsOnCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.FieldUndefined) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == "Validation error of type FieldUndefined: Field 'name' in type 'parentType' is undefined" } def "should results in no error when field definition is filled"() { @@ -56,4 +59,138 @@ class FieldsOnCorrectTypeTest extends Specification { then: errorCollector.errors.isEmpty() } + + def '5.2.1 Field Selections on ... fieldNotDefined'() { + def query = """ +{ + dog { + ... fieldNotDefined + } +} +fragment fieldNotDefined on Dog { + meowVolume +} +""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined + validationErrors.get(0).message == "Validation error (FieldUndefined@[fieldNotDefined/meowVolume]) : Field 'meowVolume' in type 'Dog' is undefined" + } + + def '5.2.1 Field Selections on ... aliasedLyingFieldTargetNotDefined'() { + def query = """ +{ + dog { + ... aliasedLyingFieldTargetNotDefined + } +} +fragment aliasedLyingFieldTargetNotDefined on Dog { + barkVolume: kawVolume +} +""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined + validationErrors.get(0).message == "Validation error (FieldUndefined@[aliasedLyingFieldTargetNotDefined/kawVolume]) : Field 'kawVolume' in type 'Dog' is undefined" + } + + def '5.2.1 Field Selections on ... interfaceFieldSelection'() { + def query = """ +{ + dog { + ... interfaceFieldSelection + } +} +fragment interfaceFieldSelection on Pet { + name +} +""" + when: + def validationErrors = validate(query) + + then: + validationErrors.empty + } + + def '5.2.1 Field Selections on ... definedOnImplementorsButNotInterface'() { + def query = """ +{ + dog { + ... definedOnImplementorsButNotInterface + } +} +fragment definedOnImplementorsButNotInterface on Pet { + nickname +} +""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined + validationErrors.get(0).message == "Validation error (FieldUndefined@[definedOnImplementorsButNotInterface/nickname]) : Field 'nickname' in type 'Pet' is undefined" + } + + def '5.2.1 Field Selections on ... inDirectFieldSelectionOnUnion'() { + def query = """ +{ + dog { + ... inDirectFieldSelectionOnUnion + } +} +fragment inDirectFieldSelectionOnUnion on CatOrDog { + __typename + ... on Pet { + name + } + ... on Dog { + barkVolume + } +} +""" + when: + def validationErrors = validate(query) + + then: + validationErrors.empty + } + + def '5.2.1 Field Selections on ... directFieldSelectionOnUnion'() { + def query = """ +{ + dog { + ... directFieldSelectionOnUnion + } +} +fragment directFieldSelectionOnUnion on CatOrDog { + name + barkVolume +} +""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 2 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.FieldUndefined + validationErrors.get(0).message == "Validation error (FieldUndefined@[directFieldSelectionOnUnion/name]) : Field 'name' in type 'CatOrDog' is undefined" + validationErrors.get(1).getValidationErrorType() == ValidationErrorType.FieldUndefined + validationErrors.get(1).message == "Validation error (FieldUndefined@[directFieldSelectionOnUnion/barkVolume]) : Field 'barkVolume' in type 'CatOrDog' is undefined" + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } } diff --git a/src/test/groovy/graphql/validation/rules/FragmentsOnCompositeTypeTest.groovy b/src/test/groovy/graphql/validation/rules/FragmentsOnCompositeTypeTest.groovy index 5b8aa6a05e..ccd918cbdb 100644 --- a/src/test/groovy/graphql/validation/rules/FragmentsOnCompositeTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/FragmentsOnCompositeTypeTest.groovy @@ -1,10 +1,14 @@ package graphql.validation.rules +import graphql.ExecutionInput +import graphql.GraphQL import graphql.StarWarsSchema +import graphql.TestUtil import graphql.language.FragmentDefinition import graphql.language.InlineFragment import graphql.language.TypeName import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType import spock.lang.Specification @@ -26,7 +30,6 @@ class FragmentsOnCompositeTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.InlineFragmentTypeConditionInvalid) errorCollector.errors.size() == 1 - errorCollector.errors[0].message == "Validation error of type InlineFragmentTypeConditionInvalid: Inline fragment type condition is invalid, must be on Object/Interface/Union" } def "should results in no error"(InlineFragment inlineFragment) { @@ -71,5 +74,88 @@ class FragmentsOnCompositeTypeTest extends Specification { errorCollector.containsValidationError(ValidationErrorType.FragmentTypeConditionInvalid) } + def schema = TestUtil.schema(""" + type Query { + nothing: String + } + + type Mutation { + updateUDI(input: UDIInput!): UDIOutput + } + + type UDIOutput { + device: String + version: String + } + + input UDIInput { + device: String + version: String + } + """) + + def graphQL = GraphQL.newGraphQL(schema).build() + + + def "#1440 when fragment type condition is input type it should return validation error - not classCastException"() { + when: + def executionInput = ExecutionInput.newExecutionInput() + .query(''' + mutation UpdateUDI($input: UDIInput!) { + updateUDI(input: $input) { + ...fragOnInputType + __typename + } + } + + # fragment should only target composite types + fragment fragOnInputType on UDIInput { + device + version + __typename + } + + ''') + .variables([input: [device: 'device', version: 'version'] ]) + .build() + + def executionResult = graphQL.execute(executionInput) + + then: + + executionResult.data == null + executionResult.errors.size() == 1 + (executionResult.errors[0] as ValidationError).validationErrorType == ValidationErrorType.FragmentTypeConditionInvalid + (executionResult.errors[0] as ValidationError).message == "Validation error (FragmentTypeConditionInvalid@[fragOnInputType]) : Fragment type condition is invalid, must be on Object/Interface/Union" + } + + def "#1440 when inline fragment type condition is input type it should return validation error - not classCastException"() { + when: + def executionInput = ExecutionInput.newExecutionInput() + .query(''' + mutation UpdateUDI($input: UDIInput!) { + updateUDI(input: $input) { + # fragment should only target composite types + ... on UDIInput { + device + version + __typename + } + __typename + } + } + ''') + .variables([input: [device: 'device', version: 'version'] ]) + .build() + + def executionResult = graphQL.execute(executionInput) + + then: + + executionResult.data == null + executionResult.errors.size() == 1 + (executionResult.errors[0] as ValidationError).validationErrorType == ValidationErrorType.InlineFragmentTypeConditionInvalid + (executionResult.errors[0] as ValidationError).message == "Validation error (InlineFragmentTypeConditionInvalid@[updateUDI]) : Inline fragment type condition is invalid, must be on Object/Interface/Union" + } } diff --git a/src/test/groovy/graphql/validation/rules/Harness.java b/src/test/groovy/graphql/validation/rules/Harness.java index 6d751285c7..2b233b77d0 100644 --- a/src/test/groovy/graphql/validation/rules/Harness.java +++ b/src/test/groovy/graphql/validation/rules/Harness.java @@ -77,7 +77,7 @@ public class Harness { .argument(newArgument() .name("atOtherHomes") .type(GraphQLBoolean) - .defaultValue(true))) + .defaultValueProgrammatic(true))) .field(newFieldDefinition() .name("isAtLocation") .type(GraphQLBoolean) diff --git a/src/test/groovy/graphql/validation/rules/KnownArgumentNamesTest.groovy b/src/test/groovy/graphql/validation/rules/KnownArgumentNamesTest.groovy index 3911b13c52..e437b43eda 100644 --- a/src/test/groovy/graphql/validation/rules/KnownArgumentNamesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/KnownArgumentNamesTest.groovy @@ -1,14 +1,19 @@ package graphql.validation.rules +import graphql.introspection.Introspection import graphql.language.Argument import graphql.language.BooleanValue import graphql.language.StringValue +import graphql.parser.Parser import graphql.schema.GraphQLArgument import graphql.schema.GraphQLDirective import graphql.schema.GraphQLFieldDefinition +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -48,7 +53,9 @@ class KnownArgumentNamesTest extends Specification { given: Argument argument = Argument.newArgument("unknownArg", BooleanValue.newBooleanValue(true).build()).build() def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name("field").type(GraphQLString).build() - def directiveDefinition = GraphQLDirective.newDirective().name("directive") + def directiveDefinition = GraphQLDirective.newDirective() + .name("directive") + .validLocation(Introspection.DirectiveLocation.FIELD_DEFINITION) .argument(GraphQLArgument.newArgument().name("knownArg").type(GraphQLBoolean).build()).build() validationContext.getFieldDef() >> fieldDefinition validationContext.getDirective() >> directiveDefinition @@ -62,7 +69,9 @@ class KnownArgumentNamesTest extends Specification { given: Argument argument = Argument.newArgument("knownArg", BooleanValue.newBooleanValue(true).build()).build() def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name("field").type(GraphQLString).build() - def directiveDefinition = GraphQLDirective.newDirective().name("directive") + def directiveDefinition = GraphQLDirective.newDirective() + .name("directive") + .validLocation(Introspection.DirectiveLocation.FIELD_DEFINITION) .argument(GraphQLArgument.newArgument().name("knownArg").type(GraphQLBoolean).build()).build() validationContext.getFieldDef() >> fieldDefinition validationContext.getDirective() >> directiveDefinition @@ -77,7 +86,9 @@ class KnownArgumentNamesTest extends Specification { Argument argument = Argument.newArgument("unknownArg", BooleanValue.newBooleanValue(true).build()).build() def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name("field").type(GraphQLString) .argument(GraphQLArgument.newArgument().name("unknownArg").type(GraphQLString).build()).build() - def directiveDefinition = GraphQLDirective.newDirective().name("directive") + def directiveDefinition = GraphQLDirective.newDirective() + .name("directive") + .validLocation(Introspection.DirectiveLocation.FIELD_DEFINITION) .argument(GraphQLArgument.newArgument().name("knownArg").type(GraphQLBoolean).build()).build() validationContext.getFieldDef() >> fieldDefinition validationContext.getDirective() >> directiveDefinition @@ -86,4 +97,45 @@ class KnownArgumentNamesTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.UnknownDirective) } + + def "directive missing argument validation error with message"() { + def query = """ + query getDogName { + dog @dogDirective(notArgument: "value"){ + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownDirective + validationErrors.get(0).message == "Validation error (UnknownDirective@[dog]) : Unknown directive argument 'notArgument'" + } + + def "field missing argument validation error with message"() { + def query = """ + query getDog { + dog { + doesKnowCommand(dogCommand: SIT, notArgument: false) + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownArgument + validationErrors.get(0).message == "Validation error (UnknownArgument@[dog/doesKnowCommand]) : Unknown field argument 'notArgument'" + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } } diff --git a/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy b/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy index 64c76444fe..8ac2b0d037 100644 --- a/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy @@ -1,6 +1,7 @@ package graphql.validation.rules import graphql.StarWarsSchema +import graphql.TestUtil import graphql.language.Document import graphql.parser.Parser import graphql.validation.LanguageTraversal @@ -9,6 +10,7 @@ import graphql.validation.TraversalContext import graphql.validation.ValidationContext import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class KnownDirectivesTest extends Specification { @@ -234,5 +236,74 @@ class KnownDirectivesTest extends Specification { } + def sdl = ''' + + directive @queryDirective on QUERY + + directive @subDirective on SUBSCRIPTION + + type Query { + field: String + } + + type Subscription { + field: String + } + + ''' + + def schema = TestUtil.schema(sdl) + + def "invalid directive on SUBSCRIPTION"() { + def spec = ''' + subscription sub @queryDirective{ + field + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 1 + validationErrors.get(0).validationErrorType == ValidationErrorType.MisplacedDirective + validationErrors.get(0).message == "Validation error (MisplacedDirective) : Directive 'queryDirective' not allowed here" + } + + def "unknown directive on SUBSCRIPTION"() { + def spec = ''' + subscription sub @unknownDirective{ + field + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 1 + validationErrors.get(0).validationErrorType == ValidationErrorType.UnknownDirective + validationErrors.get(0).message == "Validation error (UnknownDirective) : Unknown directive 'unknownDirective'" + } + + def "valid directive on SUBSCRIPTION"() { + def spec = ''' + subscription sub @subDirective{ + field + } + ''' + + when: + def document = TestUtil.parseQuery(spec) + def validator = new Validator() + def validationErrors = validator.validateDocument(schema, document, Locale.ENGLISH) + + then: + validationErrors.size() == 0 + } } diff --git a/src/test/groovy/graphql/validation/rules/KnownFragmentNamesTest.groovy b/src/test/groovy/graphql/validation/rules/KnownFragmentNamesTest.groovy index 6ef084edd6..5a56b13514 100644 --- a/src/test/groovy/graphql/validation/rules/KnownFragmentNamesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/KnownFragmentNamesTest.groovy @@ -1,9 +1,13 @@ package graphql.validation.rules import graphql.language.FragmentSpread +import graphql.parser.Parser +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class KnownFragmentNamesTest extends Specification { @@ -21,8 +25,28 @@ class KnownFragmentNamesTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.UndefinedFragment) - } + def '5.4.2.1 Fragment spread target defined '() { + def query = """ + query getDogName { + dog { + ... FragmentDoesNotExist + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UndefinedFragment + validationErrors.get(0).message == "Validation error (UndefinedFragment@[dog]) : Undefined fragment 'FragmentDoesNotExist'" + } + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } } diff --git a/src/test/groovy/graphql/validation/rules/KnownTypeNamesTest.groovy b/src/test/groovy/graphql/validation/rules/KnownTypeNamesTest.groovy index 0135d80a3e..fb84d8739d 100644 --- a/src/test/groovy/graphql/validation/rules/KnownTypeNamesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/KnownTypeNamesTest.groovy @@ -2,9 +2,13 @@ package graphql.validation.rules import graphql.StarWarsSchema import graphql.language.TypeName +import graphql.parser.Parser +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class KnownTypeNamesTest extends Specification { @@ -22,6 +26,61 @@ class KnownTypeNamesTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.UnknownType) + } + + def '5.7.3 Variables Are Input Types - unknown type'() { + def query = """ + query madDog(\$dogCommand: UnknownType){ + dog { + doesKnowCommand(dogCommand: \$dogCommand) + } + }""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownType + validationErrors.get(0).message == "Validation error (UnknownType) : Unknown type 'UnknownType'" + } + + def '5.7.3 Variables Are Input Types - non-null unknown type'() { + def query = """ + query madDog(\$dogCommand: UnknownType!){ + dog { + doesKnowCommand(dogCommand: \$dogCommand) + } + }""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownType + validationErrors.get(0).message == "Validation error (UnknownType) : Unknown type 'UnknownType'" + } + + def '5.7.3 Variables Are Input Types - non-null list unknown type'() { + def query = """ + query madDog(\$dogCommand: [UnknownType]){ + dog { + doesKnowCommand(dogCommand: \$dogCommand) + } + }""" + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnknownType + validationErrors.get(0).message == "Validation error (UnknownType) : Unknown type 'UnknownType'" + } + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) } } diff --git a/src/test/groovy/graphql/validation/rules/LoneAnonymousOperationTest.groovy b/src/test/groovy/graphql/validation/rules/LoneAnonymousOperationTest.groovy new file mode 100644 index 0000000000..f2543b7815 --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/LoneAnonymousOperationTest.groovy @@ -0,0 +1,107 @@ +package graphql.validation.rules + +import graphql.parser.Parser +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationError +import graphql.validation.ValidationErrorType +import graphql.validation.Validator +import spock.lang.Specification + +class LoneAnonymousOperationTest extends Specification { + def '5.1.2.1 Lone Anonymous Operation Valid'() { + def query = """ + { + dog { + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + validationErrors.empty + } + + + def '5.1.2.1 Lone Anonymous Operation Not Valid'() { + def query = """ + { + dog { + name + } + } + + query getName { + dog { + owner { + name + } + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors[0].validationErrorType == ValidationErrorType.LoneAnonymousOperationViolation + validationErrors[0].message == "Validation error (LoneAnonymousOperationViolation) : Operation 'getName' is following anonymous operation" + } + + def '5.1.2.1 Lone Anonymous Operation Not Valid (reverse order) '() { + def query = """ + query getName { + dog { + owner { + name + } + } + } + + { + dog { + name + } + } + """ + + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors[0].validationErrorType == ValidationErrorType.LoneAnonymousOperationViolation + validationErrors[0].message == "Validation error (LoneAnonymousOperationViolation) : Anonymous operation with other operations" + } + + def '5.1.2.1 Lone Anonymous Operation Not Valid (not really alone)'() { + def query = """ + { + dog { + owner { + name + } + } + } + + { + dog { + name + } + } + """ + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors[0].validationErrorType == ValidationErrorType.LoneAnonymousOperationViolation + validationErrors[0].message == "Validation error (LoneAnonymousOperationViolation) : Anonymous operation with other operations" + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } +} diff --git a/src/test/groovy/graphql/validation/rules/NoFragmentCyclesTest.groovy b/src/test/groovy/graphql/validation/rules/NoFragmentCyclesTest.groovy index 8fa32cb59d..ea3e1807f7 100644 --- a/src/test/groovy/graphql/validation/rules/NoFragmentCyclesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/NoFragmentCyclesTest.groovy @@ -1,6 +1,7 @@ package graphql.validation.rules import graphql.TestUtil +import graphql.i18n.I18n import graphql.language.Document import graphql.parser.Parser import graphql.validation.LanguageTraversal @@ -8,6 +9,7 @@ import graphql.validation.RulesVisitor import graphql.validation.ValidationContext import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class NoFragmentCyclesTest extends Specification { @@ -16,10 +18,10 @@ class NoFragmentCyclesTest extends Specification { def traverse(String query) { Document document = new Parser().parseDocument(query) - ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document, i18n) NoFragmentCycles noFragmentCycles = new NoFragmentCycles(validationContext, errorCollector) LanguageTraversal languageTraversal = new LanguageTraversal() - languageTraversal.traverse(document, new RulesVisitor(validationContext, [noFragmentCycles])) } @@ -46,7 +48,6 @@ class NoFragmentCyclesTest extends Specification { traverse(query) then: errorCollector.getErrors().isEmpty() - } def 'spreading twice indirectly is not circular'() { @@ -65,12 +66,12 @@ class NoFragmentCyclesTest extends Specification { def 'double spread within abstract types'() { given: def query = """ - fragment nameFragment on Pet { + fragment nameFragment on Pet { ... on Dog { name } ... on Cat { name } } - fragment spreadsInAnon on Pet { + fragment spreadsInAnon on Pet { ... on Dog { ...nameFragment } ... on Cat { ...nameFragment } } @@ -81,67 +82,118 @@ class NoFragmentCyclesTest extends Specification { errorCollector.getErrors().isEmpty() } + def "no spreading itself indirectly within inline fragment"() { + given: + def query = """ + fragment fragA on Pet { + ... on Dog { + ...fragB + } + } + fragment fragB on Pet { + ... on Dog { + ...fragA + } + } + """ + when: + traverse(query) + then: + errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) + errorCollector.getErrors()[0].message == "Validation error (FragmentCycle@[fragA]) : Fragment cycles not allowed" + } - def "circular fragments"() { + def "no spreading itself deeply two paths"() { given: def query = """ - fragment fragA on Dog { ...fragB } + fragment fragA on Dog { ...fragB, ...fragC } fragment fragB on Dog { ...fragA } + fragment fragC on Dog { ...fragA } """ - when: traverse(query) then: errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) - + errorCollector.getErrors()[0].message == "Validation error (FragmentCycle@[fragA]) : Fragment cycles not allowed" } + def "no self-spreading in floating fragments"() { + given: + def query = """ + fragment fragA on Dog { + ...fragA + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) + errorCollector.getErrors()[0].message == "Validation error (FragmentCycle@[fragA]) : Fragment cycles not allowed" + } - def 'no spreading itself directly'() { + def "no co-recursive spreads in floating fragments"() { given: def query = """ - fragment fragA on Dog { ...fragA } + fragment fragB on Dog { ...fragA } + fragment fragA on Dog { ...fragB } """ + when: traverse(query) + then: errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) + errorCollector.getErrors()[0].message == "Validation error (FragmentCycle@[fragB]) : Fragment cycles not allowed" + } + def "no co-recursive spreads in non-initial fragments"() { + given: + def query = """ + fragment fragA on Dog { ...fragB } + fragment fragB on Dog { ...fragC } + fragment fragC on Doc { ...fragB } + """ + + when: + traverse(query) + then: + errorCollector.containsValidationError((ValidationErrorType.FragmentCycle)) } - def "no spreading itself indirectly within inline fragment"() { + def "mix of inline fragments and fragments"() { given: def query = """ - fragment fragA on Pet { - ... on Dog { - ...fragB + fragment Foo on Foo { + ... on Type1 { ...Bar } + ... on Type2 { ...Baz } } - } - fragment fragB on Pet { - ... on Dog { - ...fragA - } - } + + fragment Bar on Bar { ...Baz } + fragment Baz on Baz { x } """ + when: traverse(query) then: - errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) - + errorCollector.getErrors().isEmpty() } - def "no spreading itself deeply two paths"() { + def "no self-spread fragments used in multiple operations"() { given: def query = """ - fragment fragA on Dog { ...fragB, ...fragC } - fragment fragB on Dog { ...fragA } - fragment fragC on Dog { ...fragA } + fragment fragA on Dog { ...fragA } + query A { ...fragA } + query B { ...fragA } """ + when: traverse(query) + then: errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) - + errorCollector.getErrors()[0].message == "Validation error (FragmentCycle@[fragA]) : Fragment cycles not allowed" } def "#583 no npe on undefined fragment"() { @@ -159,4 +211,31 @@ class NoFragmentCyclesTest extends Specification { errorCollector.getErrors().isEmpty() } + def "#1817 no stack overflow on circular fragment"() { + given: + def query = """ + query { + ...MyFrag + } + fragment MyFrag on QueryType { + field + ...MyFrag + } + """ + + def document = Parser.parse(query) + + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + def validationContext = new ValidationContext(TestUtil.dummySchema, document, i18n) + def rules = new Validator().createRules(validationContext, errorCollector) + when: + LanguageTraversal languageTraversal = new LanguageTraversal() + languageTraversal.traverse(document, new RulesVisitor(validationContext, rules)) + + then: + + !errorCollector.getErrors().isEmpty() + errorCollector.containsValidationError(ValidationErrorType.FragmentCycle) + errorCollector.getErrors()[0].message == "Validation error (FragmentCycle@[MyFrag]) : Fragment cycles not allowed" + } } diff --git a/src/test/groovy/graphql/validation/rules/NoUndefinedVariablesTest.groovy b/src/test/groovy/graphql/validation/rules/NoUndefinedVariablesTest.groovy index 0727651fd1..90f9976a4d 100644 --- a/src/test/groovy/graphql/validation/rules/NoUndefinedVariablesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/NoUndefinedVariablesTest.groovy @@ -1,6 +1,7 @@ package graphql.validation.rules import graphql.TestUtil +import graphql.i18n.I18n import graphql.language.Document import graphql.parser.Parser import graphql.validation.LanguageTraversal @@ -11,21 +12,18 @@ import graphql.validation.ValidationErrorType import spock.lang.Specification class NoUndefinedVariablesTest extends Specification { - - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - def traverse(String query) { Document document = new Parser().parseDocument(query) - ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document, i18n) NoUndefinedVariables noUndefinedVariables = new NoUndefinedVariables(validationContext, errorCollector) LanguageTraversal languageTraversal = new LanguageTraversal() languageTraversal.traverse(document, new RulesVisitor(validationContext, [noUndefinedVariables])) } - def "undefined variable"() { given: def query = """ @@ -39,10 +37,10 @@ class NoUndefinedVariablesTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.UndefinedVariable) - + errorCollector.getErrors()[0].message == "Validation error (UndefinedVariable@[field]) : Undefined variable 'd'" } - def "all variables definied"() { + def "all variables defined"() { given: def query = """ query Foo(\$a: String, \$b: String, \$c: String) { @@ -55,7 +53,6 @@ class NoUndefinedVariablesTest extends Specification { then: errorCollector.errors.isEmpty() - } def "all variables in fragments deeply defined"() { @@ -86,7 +83,7 @@ class NoUndefinedVariablesTest extends Specification { errorCollector.errors.isEmpty() } - def 'variable in fragment not defined by operation'() { + def "variable in fragment not defined by operation"() { given: def query = """ query Foo(\$a: String, \$b: String) { @@ -111,6 +108,77 @@ class NoUndefinedVariablesTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.UndefinedVariable) + errorCollector.getErrors()[0].message == "Validation error (UndefinedVariable@[FragA/field/FragB/field/FragC/field]) : Undefined variable 'c'" + } + + def "floating fragment with variables"() { + given: + def query = """ + fragment A on Type { + field(a: \$a) + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + def "multiple operations and completely defined variables"() { + given: + def query = """ + query Foo(\$a: String) { ...A } + query Bar(\$a: String) { ...A } + + fragment A on Type { + field(a: \$a) + } + """ + + when: + traverse(query) + then: + errorCollector.errors.isEmpty() + } + + def "multiple operations and mixed variable definitions"() { + given: + def query = """ + query Foo(\$a: String) { ...A } + query Bar { ...A } + + fragment A on Type { + field(a: \$a) + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.UndefinedVariable) + errorCollector.getErrors()[0].message == "Validation error (UndefinedVariable@[A/field]) : Undefined variable 'a'" + } + + def "multiple operations with undefined variables"() { + given: + def query = """ + query Foo { ...A } + query Bar { ...A } + + fragment A on Type { + field(a: \$a) + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.UndefinedVariable) + errorCollector.getErrors()[0].message == "Validation error (UndefinedVariable@[A/field]) : Undefined variable 'a'" } } diff --git a/src/test/groovy/graphql/validation/rules/NoUnusedFragmentsTest.groovy b/src/test/groovy/graphql/validation/rules/NoUnusedFragmentsTest.groovy index c6a12eec02..3fde31a3fb 100644 --- a/src/test/groovy/graphql/validation/rules/NoUnusedFragmentsTest.groovy +++ b/src/test/groovy/graphql/validation/rules/NoUnusedFragmentsTest.groovy @@ -4,10 +4,13 @@ import graphql.language.Document import graphql.parser.Parser import graphql.validation.LanguageTraversal import graphql.validation.RulesVisitor +import graphql.validation.SpecValidationSchema import graphql.validation.TraversalContext import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class NoUnusedFragmentsTest extends Specification { @@ -174,4 +177,28 @@ class NoUnusedFragmentsTest extends Specification { errorCollector.containsValidationError(ValidationErrorType.UnusedFragment) errorCollector.getErrors().size() == 2 } + + def "contains unused fragment with error message"() { + def query = """ + query getDogName { + dog { + name + } + } + fragment dogFragment on Dog { barkVolume } + """.stripIndent() + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.UnusedFragment + validationErrors[0].message == "Validation error (UnusedFragment) : Unused fragment 'dogFragment'" + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } } \ No newline at end of file diff --git a/src/test/groovy/graphql/validation/rules/NoUnusedVariablesTest.groovy b/src/test/groovy/graphql/validation/rules/NoUnusedVariablesTest.groovy index df6e431e21..9b7d0dc8de 100644 --- a/src/test/groovy/graphql/validation/rules/NoUnusedVariablesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/NoUnusedVariablesTest.groovy @@ -1,32 +1,32 @@ package graphql.validation.rules import graphql.TestUtil +import graphql.i18n.I18n import graphql.language.Document import graphql.parser.Parser import graphql.validation.LanguageTraversal import graphql.validation.RulesVisitor +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification class NoUnusedVariablesTest extends Specification { - - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - def traverse(String query) { Document document = new Parser().parseDocument(query) - ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(TestUtil.dummySchema, document, i18n) NoUnusedVariables noUnusedVariables = new NoUnusedVariables(validationContext, errorCollector) LanguageTraversal languageTraversal = new LanguageTraversal() languageTraversal.traverse(document, new RulesVisitor(validationContext, [noUnusedVariables])) } - - def 'uses all variables in fragments'() { + def "uses all variables in fragments"() { given: def query = """ fragment FragA on Type { @@ -56,7 +56,7 @@ class NoUnusedVariablesTest extends Specification { def "variable used by fragment in multiple operations"() { given: def query = """ - query Foo(\$a: String) { + query Foo(\$a: String) { ...FragA } query Bar(\$b: String) { @@ -68,7 +68,7 @@ class NoUnusedVariablesTest extends Specification { fragment FragB on Type { field(b: \$b) } - """ + """ when: traverse(query) @@ -89,8 +89,52 @@ class NoUnusedVariablesTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.UnusedVariable) + } + + def "variables not used in fragments"() { + given: + def query = """ + fragment FragA on Type { + field(a: \$a) { + ...FragB + } + } + fragment FragB on Type { + field(b: \$b) { + ...FragC + } + } + fragment FragC on Type { + __typename + } + query Foo(\$a: String, \$b: String, \$c: String) { + ...FragA + } + """ + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.UnusedVariable) } + def "variables not used in fragments with error message"() { + def query = ''' + query getDogName($arg1: String, $unusedArg: Int) { + dog(arg1: $arg1) { + name + } + } + ''' + when: + def document = Parser.parse(query) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.UnusedVariable + validationErrors.get(0).message == "Validation error (UnusedVariable) : Unused variable 'unusedArg'" + } } diff --git a/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy b/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy index 3f0dab35cc..d35ec38084 100644 --- a/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy +++ b/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy @@ -1,13 +1,11 @@ package graphql.validation.rules -import graphql.TestUtil -import graphql.TypeResolutionEnvironment +import graphql.i18n.I18n import graphql.language.Document import graphql.language.SourceLocation import graphql.parser.Parser -import graphql.schema.GraphQLObjectType +import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLSchema -import graphql.schema.TypeResolver import graphql.validation.LanguageTraversal import graphql.validation.RulesVisitor import graphql.validation.ValidationContext @@ -16,6 +14,7 @@ import spock.lang.Specification import static graphql.Scalars.GraphQLInt import static graphql.Scalars.GraphQLString +import static graphql.TestUtil.schema import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull @@ -26,7 +25,6 @@ class OverlappingFieldsCanBeMergedTest extends Specification { ValidationErrorCollector errorCollector = new ValidationErrorCollector() - def traverse(String query, GraphQLSchema schema) { if (schema == null) { def objectType = newObject() @@ -38,7 +36,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { } Document document = new Parser().parseDocument(query) - ValidationContext validationContext = new ValidationContext(schema, document) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(schema, document, i18n) OverlappingFieldsCanBeMerged overlappingFieldsCanBeMerged = new OverlappingFieldsCanBeMerged(validationContext, errorCollector) LanguageTraversal languageTraversal = new LanguageTraversal() @@ -48,6 +47,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def "identical fields are ok"() { given: def query = """ + {...f} fragment f on Test{ name name @@ -60,9 +60,22 @@ class OverlappingFieldsCanBeMergedTest extends Specification { errorCollector.errors.isEmpty() } + def "identical fields are ok 2"() { + given: + def query = """ + { name name name name: name} + """ + when: + traverse(query, null) + + then: + errorCollector.errors.isEmpty() + } + def "two aliases with different targets"() { given: def query = """ + {... f } fragment f on Test{ myName : name myName : nickname @@ -73,11 +86,11 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: myName: name and nickname are different fields @ 'f'" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 17), new SourceLocation(4, 17)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'myName' : 'name' and 'nickname' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 17), new SourceLocation(5, 17)] } - GraphQLSchema unionSchema() { + static GraphQLSchema unionSchema() { def StringBox = newObject().name("StringBox") .field(newFieldDefinition().name("scalar").type(GraphQLString)) .build() @@ -100,17 +113,18 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def BoxUnion = newUnionType() .name("BoxUnion") .possibleTypes(StringBox, IntBox, NonNullStringBox1, NonNullStringBox2, ListStringBox1) - .typeResolver(new TypeResolver() { - @Override - GraphQLObjectType getType(TypeResolutionEnvironment env) { - return null - } - }) + .build() + def codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .typeResolver(BoxUnion, { env -> null }) .build() def QueryRoot = newObject() .name("QueryRoot") .field(newFieldDefinition().name("boxUnion").type(BoxUnion)).build() - return GraphQLSchema.newSchema().query(QueryRoot).build() + + return GraphQLSchema.newSchema() + .codeRegistry(codeRegistry) + .query(QueryRoot) + .build() } def 'conflicting scalar return types'() { @@ -134,7 +148,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: scalar: they return differing types Int and String @ 'boxUnion'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : returns different types 'Int' and 'String'" } @@ -182,7 +196,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: scalar: fields have different nullability shapes @ 'boxUnion'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : fields have different nullability shapes" } def 'not the same list return types'() { @@ -206,7 +220,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: scalar: fields have different list shapes @ 'boxUnion'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : fields have different list shapes" } @@ -303,52 +317,132 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def 'Same aliases with different field targets'() { given: def query = """ + {dog{...sameAliasesWithDifferentFieldTargets}} fragment sameAliasesWithDifferentFieldTargets on Dog { fido: name fido: nickname } """ + def schema = schema(''' + type Dog { + name: String + nickname: String + } + type Query { + dog: Dog + } + ''') when: - traverse(query, null) + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: fido: name and nickname are different fields @ 'sameAliasesWithDifferentFieldTargets'" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/fido' : 'name' and 'nickname' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } def 'Alias masking direct field access'() { given: def query = """ + {dog{...aliasMaskingDirectFieldAccess}} fragment aliasMaskingDirectFieldAccess on Dog { name: nickname name } """ + def schema = schema(''' + type Dog { + nickname: String + name : String + } + type Query { dog: Dog } + ''') when: - traverse(query, null) + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: name: nickname and name are different fields @ 'aliasMaskingDirectFieldAccess'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/name' : 'nickname' and 'name' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] + } + + def 'issue 3332 - Alias masking direct field access non fragment'() { + given: + def query = """ + { dog { + name: nickname + name + }} + """ + def schema = schema(''' + type Dog { + name : String + nickname: String + } + type Query { dog: Dog } + ''') + when: + traverse(query, schema) + + then: + errorCollector.getErrors().size() == 1 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/name' : 'nickname' and 'name' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] } + def 'issue 3332 -Alias masking direct field access non fragment with non null parent type'() { + given: + def query = """ + query GetCat { + cat { + foo1 + foo1: foo2 + } + } + """ + def schema = schema(''' + type Query { + cat: Cat! # non null parent type + } + type Cat { + foo1: String! + foo2: String! + } + ''') + when: + traverse(query, schema) + + then: + errorCollector.getErrors().size() == 1 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'cat/foo1' : 'foo1' and 'foo2' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 17), new SourceLocation(5, 17)] + } + def 'conflicting args'() { given: def query = """ + {dog{...conflictingArgs}} fragment conflictingArgs on Dog { doesKnowCommand(dogCommand: SIT) doesKnowCommand(dogCommand: HEEL) } """ + def schema = schema(''' + type Dog { + doesKnowCommand(dogCommand: DogCommand): String + } + enum DogCommand { SIT, HEEL } + type Query { + dog: Dog + } + ''') when: - traverse(query, null) + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: doesKnowCommand: they have differing arguments @ 'conflictingArgs'" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/doesKnowCommand' : fields have different arguments" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } // @@ -385,12 +479,22 @@ class OverlappingFieldsCanBeMergedTest extends Specification { x: b } """ + def schema = schema(''' + type Type { + a: String + b: String + c: String + } + schema { + query: Type + } + ''') when: - traverse(query, null) + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: x: a and b are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'x' : 'a' and 'b' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(7, 13), new SourceLocation(10, 13)] } @@ -418,20 +522,27 @@ class OverlappingFieldsCanBeMergedTest extends Specification { x: b } """ + def schema = schema(''' + type Type { + a: String + b: String + c: String + } + type Query { + f1: Type + f2: Type + f3: Type + } + ''') + when: - traverse(query, null) + traverse(query, schema) then: - errorCollector.getErrors().size() == 3 + errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: x: a and b are different fields @ 'f1'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'f1/x' : 'a' and 'b' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(18, 13), new SourceLocation(21, 13)] - - errorCollector.getErrors()[1].message == "Validation error of type FieldsConflict: x: a and c are different fields @ 'f3'" - errorCollector.getErrors()[1].locations == [new SourceLocation(18, 13), new SourceLocation(14, 17)] - - errorCollector.getErrors()[2].message == "Validation error of type FieldsConflict: x: b and c are different fields @ 'f3'" - errorCollector.getErrors()[2].locations == [new SourceLocation(21, 13), new SourceLocation(14, 17)] } @@ -447,12 +558,21 @@ class OverlappingFieldsCanBeMergedTest extends Specification { } """ when: - traverse(query, null) + def schema = schema(''' + type Type { + a: String + b: String + } + type Query { + field: Type + } + ''') + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: field: (x: a and b are different fields)" - errorCollector.getErrors()[0].locations.size() == 4 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'field/x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].locations.size() == 2 } def 'deep conflict with multiple issues'() { @@ -468,13 +588,28 @@ class OverlappingFieldsCanBeMergedTest extends Specification { } } """ + def schema = schema(''' + type Type { + a: String + b: String + c: String + d: String + } + type Query { + field: Type + } + ''') + when: - traverse(query, null) + traverse(query, schema) then: - errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: field: (x: a and b are different fields, y: c and d are different fields)" - errorCollector.getErrors()[0].locations.size() == 6 + errorCollector.getErrors().size() == 2 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'field/x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].locations.size() == 2 + + errorCollector.getErrors()[1].message == "Validation error (FieldsConflict) : 'field/y' : 'c' and 'd' are different fields" + errorCollector.getErrors()[1].locations.size() == 2 } def 'very deep conflict'() { @@ -493,13 +628,27 @@ class OverlappingFieldsCanBeMergedTest extends Specification { } } """ + def schema = schema(''' + type Type { + a: String + b: String + c: String + d: String + } + type Field { + deepField: Type + } + type Query { + field: Field + } + ''') when: - traverse(query, null) + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: field: (deepField: (x: a and b are different fields))" - errorCollector.getErrors()[0].locations.size() == 6 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'field/deepField/x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].locations.size() == 2 } def 'reports deep conflict to nearest common ancestor'() { @@ -520,13 +669,28 @@ class OverlappingFieldsCanBeMergedTest extends Specification { } } """ + def schema = schema(''' + type Type { + a: String + b: String + c: String + d: String + } + type Field { + deepField: Type + } + type Query { + field: Field + } + ''') + when: - traverse(query, null) + traverse(query, schema) then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error of type FieldsConflict: deepField: (x: a and b are different fields) @ 'field'" - errorCollector.getErrors()[0].locations.size() == 4 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'field/deepField/x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].locations.size() == 2 } @@ -544,7 +708,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { componentInfoLocationUrl } """ - def schema = TestUtil.schema(""" + def schema = schema(""" type Query { services(ids: [String!]): [Component!] } @@ -576,7 +740,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { componentInfoLocationUrl } """ - def schema = TestUtil.schema(""" + def schema = schema(""" type Query { services(ids: [String!]): [[Component!]] } @@ -608,7 +772,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { componentInfoLocationUrl } """ - def schema = TestUtil.schema(""" + def schema = schema(""" type Query { services(ids: [String!]): [Component!] } @@ -626,5 +790,232 @@ class OverlappingFieldsCanBeMergedTest extends Specification { } + def "valid diverging fields with the same parent type on deeper level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + name : String + friends: [Pet] + + } + ''') + /** + * Here F1 and F2 are allowed to diverge (backed by different field definitions) because the parent fields have + * different concrete parent: P1 has Dog, P2 has Cat. + */ + def query = ''' +{ + pets { + ... on Dog { + friends { #P1 + name + ... on Dog { + breed: dogBreed #F1 + } + } + } + ... on Cat { + friends { #P2 + name + ... on Dog { + breed #F2 + } + } + } + ... on Pet { + friends { + name + } + } + } +} + ''' + when: + traverse(query, schema) + + + then: + errorCollector.getErrors().size() == 0 + } + + def "children of diverging fields still need to have same response shape"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + age: Int + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + height: Float + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + ... on Dog { + friends { + ... on Dog { + conflict: age + } + } + } + ... on Cat { + friends { + ... on Cat { + conflict: height + } + } + } + } + } + ''' + when: + traverse(query, schema) + + + then: + errorCollector.getErrors().size() == 1 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'pets/friends/conflict' : returns different types 'Int' and 'Float'" + } + + + def "subselection of fields with different concrete parent can be different "() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + age: Int + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + height: Float + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + ... on Dog { + friends { + name + } + } + ... on Cat { + friends { + breed + } + } + } + } + ''' + when: + traverse(query, schema) + + + then: + errorCollector.getErrors().size() == 0 + } + + def "overlapping fields on lower level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + age: Int + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + height: Float + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + friends { + ... on Dog { + x: name + } + ... on Cat { + x: height + } + } + } + } + ''' + when: + traverse(query, schema) + + + then: + errorCollector.getErrors().size() == 1 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'pets/friends/x' : returns different types 'String' and 'Float'" + + } + } diff --git a/src/test/groovy/graphql/validation/rules/PossibleFragmentSpreadsTest.groovy b/src/test/groovy/graphql/validation/rules/PossibleFragmentSpreadsTest.groovy index ec30d3039d..87c465fd38 100644 --- a/src/test/groovy/graphql/validation/rules/PossibleFragmentSpreadsTest.groovy +++ b/src/test/groovy/graphql/validation/rules/PossibleFragmentSpreadsTest.groovy @@ -1,5 +1,6 @@ package graphql.validation.rules +import graphql.i18n.I18n import graphql.language.Document import graphql.parser.Parser import graphql.validation.LanguageTraversal @@ -15,7 +16,8 @@ class PossibleFragmentSpreadsTest extends Specification { def traverse(String query) { Document document = new Parser().parseDocument(query) - ValidationContext validationContext = new ValidationContext(Harness.Schema, document) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + ValidationContext validationContext = new ValidationContext(Harness.Schema, document, i18n) PossibleFragmentSpreads possibleFragmentSpreads = new PossibleFragmentSpreads(validationContext, errorCollector) LanguageTraversal languageTraversal = new LanguageTraversal() @@ -179,7 +181,7 @@ class PossibleFragmentSpreadsTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors().get(0).message == 'Validation error of type InvalidFragmentType: Fragment cannot be spread here as objects of type Cat can never be of type Dog @ \'invalidObjectWithinObjectAnon\'' + errorCollector.getErrors().get(0).message == "Validation error (InvalidFragmentType@[invalidObjectWithinObjectAnon]) : Fragment cannot be spread here as objects of type 'Cat' can never be of type 'Dog'" } def 'object into not implementing interface'() { @@ -192,7 +194,7 @@ class PossibleFragmentSpreadsTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors().get(0).message == 'Validation error of type InvalidFragmentType: Fragment humanFragment cannot be spread here as objects of type Pet can never be of type Human @ \'invalidObjectWithinInterface\'' + errorCollector.getErrors().get(0).message == "Validation error (InvalidFragmentType@[invalidObjectWithinInterface]) : Fragment 'humanFragment' cannot be spread here as objects of type 'Pet' can never be of type 'Human'" } def 'object into not containing union'() { diff --git a/src/test/groovy/graphql/validation/rules/ProvidedNonNullArgumentsTest.groovy b/src/test/groovy/graphql/validation/rules/ProvidedNonNullArgumentsTest.groovy index f3cdcabdbb..9a11066973 100644 --- a/src/test/groovy/graphql/validation/rules/ProvidedNonNullArgumentsTest.groovy +++ b/src/test/groovy/graphql/validation/rules/ProvidedNonNullArgumentsTest.groovy @@ -1,16 +1,22 @@ package graphql.validation.rules +import graphql.introspection.Introspection import graphql.language.Argument import graphql.language.Directive import graphql.language.Field +import graphql.language.NullValue import graphql.language.StringValue +import graphql.parser.Parser import graphql.schema.GraphQLArgument import graphql.schema.GraphQLDirective import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLNonNull +import graphql.validation.SpecValidationSchema import graphql.validation.ValidationContext +import graphql.validation.ValidationError import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification import static graphql.Scalars.GraphQLString @@ -41,11 +47,29 @@ class ProvidedNonNullArgumentsTest extends Specification { errorCollector.containsValidationError(ValidationErrorType.MissingFieldArgument) } + def "not provided and not defaulted non null field argument with error message"() { + def query = """ + query getDogName { + dog { + doesKnowCommand + } + } + """.stripIndent() + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.MissingFieldArgument + validationErrors[0].message == "Validation error (MissingFieldArgument@[dog/doesKnowCommand]) : Missing field argument 'dogCommand'" + } + def "not provided and but defaulted non null field argument"() { given: def fieldArg = GraphQLArgument.newArgument().name("arg") .type(GraphQLNonNull.nonNull(GraphQLString)) - .defaultValue("defaultVal") + .defaultValueProgrammatic("defaultVal") def fieldDef = GraphQLFieldDefinition.newFieldDefinition() .name("field") .type(GraphQLString) @@ -62,7 +86,6 @@ class ProvidedNonNullArgumentsTest extends Specification { errorCollector.getErrors().isEmpty() } - def "all field arguments are provided"() { given: def fieldArg = GraphQLArgument.newArgument().name("arg") @@ -89,6 +112,7 @@ class ProvidedNonNullArgumentsTest extends Specification { .name("arg").type(GraphQLNonNull.nonNull(GraphQLString)) def graphQLDirective = GraphQLDirective.newDirective() .name("directive") + .validLocation(Introspection.DirectiveLocation.SCALAR) .argument(directiveArg) .build() validationContext.getDirective() >> graphQLDirective @@ -102,13 +126,32 @@ class ProvidedNonNullArgumentsTest extends Specification { errorCollector.containsValidationError(ValidationErrorType.MissingDirectiveArgument) } + def "not provided and not defaulted non null directive argument with error message"() { + def query = """ + query getDogName { + dog @nonNullDirective { + name + } + } + """.stripIndent() + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.MissingDirectiveArgument + validationErrors[0].message == "Validation error (MissingDirectiveArgument@[dog]) : Missing directive argument 'arg1'" + } + def "not provided but defaulted directive argument"() { given: def directiveArg = GraphQLArgument.newArgument() .name("arg").type(GraphQLNonNull.nonNull(GraphQLString)) - .defaultValue("defaultVal") + .defaultValueProgrammatic("defaultVal") def graphQLDirective = GraphQLDirective.newDirective() .name("directive") + .validLocation(Introspection.DirectiveLocation.SCALAR) .argument(directiveArg) .build() validationContext.getDirective() >> graphQLDirective @@ -122,12 +165,12 @@ class ProvidedNonNullArgumentsTest extends Specification { errorCollector.getErrors().isEmpty() } - def "all directive arguments are provided"() { given: def directiveArg = GraphQLArgument.newArgument().name("arg").type(GraphQLNonNull.nonNull(GraphQLString)) def graphQLDirective = GraphQLDirective.newDirective() .name("directive") + .validLocation(Introspection.DirectiveLocation.SCALAR) .argument(directiveArg) .build() validationContext.getDirective() >> graphQLDirective @@ -141,4 +184,50 @@ class ProvidedNonNullArgumentsTest extends Specification { then: errorCollector.getErrors().isEmpty() } + + def "provide the explicit value null is not valid for non null argument"() { + given: + def fieldArg = GraphQLArgument.newArgument().name("arg") + .type(GraphQLNonNull.nonNull(GraphQLString)) + + def fieldDef = GraphQLFieldDefinition.newFieldDefinition() + .name("field") + .type(GraphQLString) + .argument(fieldArg) + .build() + + validationContext.getFieldDef() >> fieldDef + + def defaultNullArg = Argument.newArgument().name("arg").value(NullValue.newNullValue().build()).build() + def field = new Field("field", [defaultNullArg]) + + when: + providedNonNullArguments.checkField(field) + + then: + errorCollector.containsValidationError(ValidationErrorType.NullValueForNonNullArgument) + } + + def "provide the explicit value null is not valid for non null argument with error message"() { + def query = """ + query getDogName { + dog { + doesKnowCommand(dogCommand: null) + } + } + """.stripIndent() + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 2 + validationErrors[0].validationErrorType == ValidationErrorType.NullValueForNonNullArgument + validationErrors[0].message == "Validation error (NullValueForNonNullArgument@[dog/doesKnowCommand]) : Null value for non-null field argument 'dogCommand'" + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } } diff --git a/src/test/groovy/graphql/validation/rules/ScalarLeafsTest.groovy b/src/test/groovy/graphql/validation/rules/ScalarLeafsTest.groovy deleted file mode 100644 index 0416486042..0000000000 --- a/src/test/groovy/graphql/validation/rules/ScalarLeafsTest.groovy +++ /dev/null @@ -1,47 +0,0 @@ -package graphql.validation.rules - -import graphql.Scalars -import graphql.language.Field -import graphql.language.SelectionSet -import graphql.schema.GraphQLObjectType -import graphql.validation.ValidationContext -import graphql.validation.ValidationErrorCollector -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -import static graphql.language.Field.newField - -class ScalarLeafsTest extends Specification { - - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - ValidationContext validationContext = Mock(ValidationContext) - ScalarLeafs scalarLeafs = new ScalarLeafs(validationContext, errorCollector) - - def "sub selection not allowed"() { - given: - Field field = newField("hello", SelectionSet.newSelectionSet([newField("world").build()]).build()).build() - validationContext.getOutputType() >> Scalars.GraphQLString - when: - scalarLeafs.checkField(field) - - then: - errorCollector.containsValidationError( - ValidationErrorType.SubSelectionNotAllowed, - "Sub selection not allowed on leaf type String of field hello" - ) - } - - def "sub selection required"() { - given: - Field field = newField("hello").build() - validationContext.getOutputType() >> GraphQLObjectType.newObject().name("objectType").build() - when: - scalarLeafs.checkField(field) - - then: - errorCollector.containsValidationError( - ValidationErrorType.SubSelectionRequired, - "Sub selection required for type objectType of field hello" - ) - } -} diff --git a/src/test/groovy/graphql/validation/rules/ScalarLeavesTest.groovy b/src/test/groovy/graphql/validation/rules/ScalarLeavesTest.groovy new file mode 100644 index 0000000000..14934a4846 --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/ScalarLeavesTest.groovy @@ -0,0 +1,86 @@ +package graphql.validation.rules + +import graphql.Scalars +import graphql.language.Field +import graphql.language.SelectionSet +import graphql.parser.Parser +import graphql.schema.GraphQLObjectType +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationContext +import graphql.validation.ValidationError +import graphql.validation.ValidationErrorCollector +import graphql.validation.ValidationErrorType +import graphql.validation.Validator +import spock.lang.Specification + +import static graphql.language.Field.newField + +class ScalarLeavesTest extends Specification { + + ValidationErrorCollector errorCollector = new ValidationErrorCollector() + ValidationContext validationContext = Mock(ValidationContext) + ScalarLeaves scalarLeaves = new ScalarLeaves(validationContext, errorCollector) + + def "subselection not allowed"() { + given: + Field field = newField("hello", SelectionSet.newSelectionSet([newField("world").build()]).build()).build() + validationContext.getOutputType() >> Scalars.GraphQLString + when: + scalarLeaves.checkField(field) + + then: + errorCollector.containsValidationError(ValidationErrorType.SubselectionNotAllowed) + } + + def "subselection not allowed with error message"() { + def query = """ + query dogOperation { + dog { + name { + id + } + } + } + """.stripIndent() + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubselectionNotAllowed + validationErrors[0].message == "Validation error (SubselectionNotAllowed@[dog/name]) : Subselection not allowed on leaf type 'String!' of field 'name'" + } + + def "subselection required"() { + given: + Field field = newField("hello").build() + validationContext.getOutputType() >> GraphQLObjectType.newObject().name("objectType").build() + when: + scalarLeaves.checkField(field) + + then: + errorCollector.containsValidationError(ValidationErrorType.SubselectionRequired) + } + + def "subselection required with error message"() { + def query = """ + query dogOperation { + dog + } + """.stripIndent() + when: + def validationErrors = validate(query) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubselectionRequired + validationErrors[0].message == "Validation error (SubselectionRequired@[dog]) : Subselection required for type 'Dog' of field 'dog'" + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } +} diff --git a/src/test/groovy/graphql/validation/rules/SubscriptionUniqueRootFieldTest.groovy b/src/test/groovy/graphql/validation/rules/SubscriptionUniqueRootFieldTest.groovy new file mode 100644 index 0000000000..9b171f2256 --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/SubscriptionUniqueRootFieldTest.groovy @@ -0,0 +1,293 @@ +package graphql.validation.rules + +import graphql.parser.Parser +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationError +import graphql.validation.ValidationErrorType +import graphql.validation.Validator +import spock.lang.Specification + +class SubscriptionUniqueRootFieldTest extends Specification { + def "5.2.3.1 subscription with only one root field passes validation"() { + given: + def subscriptionOneRoot = ''' + subscription doggo { + dog { + name + } + } + ''' + + when: + def validationErrors = validate(subscriptionOneRoot) + + then: + validationErrors.empty + } + + def "5.2.3.1 subscription with only one root field with fragment passes validation"() { + given: + def subscriptionOneRootWithFragment = ''' + subscription doggo { + ...doggoFields + } + + fragment doggoFields on SubscriptionRoot { + dog { + name + } + } + ''' + + when: + def validationErrors = validate(subscriptionOneRootWithFragment) + + then: + validationErrors.empty + } + + def "5.2.3.1 subscription with more than one root field fails validation"() { + given: + def subscriptionTwoRoots = ''' + subscription pets { + dog { + name + } + cat { + name + } + } + ''' + when: + def validationErrors = validate(subscriptionTwoRoots) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionMultipleRootFields + validationErrors[0].message == "Validation error (SubscriptionMultipleRootFields) : Subscription operation 'pets' must have exactly one root field" + } + + def "5.2.3.1 subscription with more than one root field with fragment fails validation"() { + given: + def subscriptionTwoRootsWithFragment = ''' + subscription whoIsAGoodBoy { + ...pets + } + + fragment pets on SubscriptionRoot { + dog { + name + } + cat { + name + } + } + ''' + when: + def validationErrors = validate(subscriptionTwoRootsWithFragment) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionMultipleRootFields + validationErrors[0].message == "Validation error (SubscriptionMultipleRootFields) : Subscription operation 'whoIsAGoodBoy' must have exactly one root field" + } + + def "5.2.3.1 document can contain multiple operations with different root fields"() { + given: + def document = ''' + subscription catto { + cat { + name + } + } + + query doggo { + dog { + name + } + } + ''' + when: + def validationErrors = validate(document) + + then: + validationErrors.empty + } + + def "5.2.3.1 subscription root field must not be an introspection field"() { + given: + def subscriptionIntrospectionField = ''' + subscription doggo { + __typename + } + ''' + when: + def validationErrors = validate(subscriptionIntrospectionField) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionIntrospectionRootField + validationErrors[0].message == "Validation error (SubscriptionIntrospectionRootField) : Subscription operation 'doggo' root field '__typename' cannot be an introspection field" + } + + def "5.2.3.1 subscription root field via fragment must not be an introspection field"() { + given: + def subscriptionIntrospectionField = ''' + subscription doggo { + ...dogs + } + + fragment dogs on SubscriptionRoot { + __typename + } + ''' + when: + def validationErrors = validate(subscriptionIntrospectionField) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionIntrospectionRootField + validationErrors[0].message == "Validation error (SubscriptionIntrospectionRootField) : Subscription operation 'doggo' root field '__typename' cannot be an introspection field" + } + + def "5.2.3.1 subscription with multiple root fields within inline fragment are not allowed"() { + given: + def subscriptionOneRootWithFragment = ''' + subscription doggo { + ... { + dog { + name + } + cat { + name + } + } + } + ''' + + when: + def validationErrors = validate(subscriptionOneRootWithFragment) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionMultipleRootFields + validationErrors[0].message == "Validation error (SubscriptionMultipleRootFields) : Subscription operation 'doggo' must have exactly one root field" + } + + + def "5.2.3.1 subscription with more than one root field with multiple fragment fails validation"() { + given: + def subscriptionTwoRootsWithFragment = ''' + fragment doggoRoot on SubscriptionRoot { + ...doggoLevel1 + } + + fragment doggoLevel1 on SubscriptionRoot { + ...doggoLevel2 + } + + fragment doggoLevel2 on SubscriptionRoot { + dog { + name + } + cat { + name + } + } + + subscription whoIsAGoodBoy { + ...doggoRoot + } + ''' + when: + def validationErrors = validate(subscriptionTwoRootsWithFragment) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionMultipleRootFields + validationErrors[0].message == "Validation error (SubscriptionMultipleRootFields) : Subscription operation 'whoIsAGoodBoy' must have exactly one root field" + } + + + def "5.2.3.1 subscription with more than one root field with multiple fragment with inline fragments fails validation"() { + given: + def subscriptionTwoRootsWithFragment = ''' + fragment doggoRoot on SubscriptionRoot { + ...doggoLevel1 + } + + fragment doggoLevel1 on SubscriptionRoot { + ...{ + ...doggoLevel2 + } + } + + fragment doggoLevel2 on SubscriptionRoot { + ...{ + dog { + name + } + cat { + name + } + } + } + + subscription whoIsAGoodBoy { + ...doggoRoot + } + ''' + when: + def validationErrors = validate(subscriptionTwoRootsWithFragment) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].validationErrorType == ValidationErrorType.SubscriptionMultipleRootFields + validationErrors[0].message == "Validation error (SubscriptionMultipleRootFields) : Subscription operation 'whoIsAGoodBoy' must have exactly one root field" + } + + + def "5.2.3.1 subscription with one root field with multiple fragment with inline fragments does not fail validation"() { + given: + def subscriptionTwoRootsWithFragment = ''' + fragment doggoRoot on SubscriptionRoot { + ...doggoLevel1 + } + + fragment doggoLevel1 on SubscriptionRoot { + ...{ + ...doggoLevel2 + } + } + + fragment doggoLevel2 on SubscriptionRoot { + ...{ + dog { + name + } + + } + } + + subscription whoIsAGoodBoy { + ...doggoRoot + } + ''' + when: + def validationErrors = validate(subscriptionTwoRootsWithFragment) + + then: + validationErrors.empty + } + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } +} diff --git a/src/test/groovy/graphql/validation/rules/UniqueArgumentNamesTest.groovy b/src/test/groovy/graphql/validation/rules/UniqueArgumentNamesTest.groovy new file mode 100644 index 0000000000..4e76fc69a4 --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/UniqueArgumentNamesTest.groovy @@ -0,0 +1,84 @@ +package graphql.validation.rules + +import graphql.parser.Parser +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationErrorType +import graphql.validation.Validator +import spock.lang.Specification + +class UniqueArgumentNamesTest extends Specification { + + def "unique argument name"() { + def query = """ + query getDogName { + dog(arg1:"argValue") @dogDirective(arg1: "value"){ + name @include(if: true) + } + } + """ + when: + def document = Parser.parse(query) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + + then: + validationErrors.empty + } + + def "duplicate argument name on field"() { + def query = """ + query getDogName { + dog(arg1:"value1",arg1:"value2") { + name + } + } + """ + when: + def document = Parser.parse(query) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.DuplicateArgumentNames + validationErrors.get(0).message == "Validation error (DuplicateArgumentNames@[dog]) : There can be only one argument named 'arg1'" + } + + def "duplicate argument name on directive"() { + def query = """ + query getDogName { + dog(arg1:"argValue") { + name @include(if: true,if: false) + } + } + """ + when: + def document = Parser.parse(query) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.DuplicateArgumentNames + validationErrors.get(0).message == "Validation error (DuplicateArgumentNames@[dog/name]) : There can be only one argument named 'if'" + } + + def "duplicate argument name on custom directive"() { + def query = """ + query getDogName { + dog(arg1:"argValue") @dogDirective(arg1: "value",arg1: "value2"){ + name + } + } + """ + when: + def document = Parser.parse(query) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.DuplicateArgumentNames + validationErrors.get(0).message == "Validation error (DuplicateArgumentNames@[dog]) : There can be only one argument named 'arg1'" + } +} diff --git a/src/test/groovy/graphql/validation/rules/UniqueDirectiveNamesPerLocationTest.groovy b/src/test/groovy/graphql/validation/rules/UniqueDirectiveNamesPerLocationTest.groovy index c336eef243..107a140295 100644 --- a/src/test/groovy/graphql/validation/rules/UniqueDirectiveNamesPerLocationTest.groovy +++ b/src/test/groovy/graphql/validation/rules/UniqueDirectiveNamesPerLocationTest.groovy @@ -32,7 +32,10 @@ class UniqueDirectiveNamesPerLocationTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - assertDuplicateDirectiveName("upper", "FragmentDefinition", 12, 39, validationErrors[0]) + validationErrors[0].locations[0].line == 12 + validationErrors[0].locations[0].column == 39 + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateDirectiveName + validationErrors[0].message == "Validation error (DuplicateDirectiveName@[FragDef]) : Non repeatable directives must be uniquely named within a location. The directive 'upper' used on a 'FragmentDefinition' is not unique" } def '5.7.3 Directives Are Unique Per Location - OperationDefinition'() { @@ -57,7 +60,10 @@ class UniqueDirectiveNamesPerLocationTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - assertDuplicateDirectiveName("upper", "OperationDefinition", 2, 29, validationErrors[0]) + validationErrors[0].locations[0].line == 2 + validationErrors[0].locations[0].column == 29 + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateDirectiveName + validationErrors[0].message == "Validation error (DuplicateDirectiveName) : Non repeatable directives must be uniquely named within a location. The directive 'upper' used on a 'OperationDefinition' is not unique" } def '5.7.3 Directives Are Unique Per Location - Field'() { @@ -82,7 +88,10 @@ class UniqueDirectiveNamesPerLocationTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - assertDuplicateDirectiveName("upper", "Field", 4, 28, validationErrors[0]) + validationErrors[0].locations[0].line == 4 + validationErrors[0].locations[0].column == 28 + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateDirectiveName + validationErrors[0].message == "Validation error (DuplicateDirectiveName@[dog/name]) : Non repeatable directives must be uniquely named within a location. The directive 'upper' used on a 'Field' is not unique" } def '5.7.3 Directives Are Unique Per Location - FragmentSpread'() { @@ -107,7 +116,10 @@ class UniqueDirectiveNamesPerLocationTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - assertDuplicateDirectiveName("upper", "FragmentSpread", 5, 35, validationErrors[0]) + validationErrors[0].locations[0].line == 5 + validationErrors[0].locations[0].column == 35 + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateDirectiveName + validationErrors[0].message == "Validation error (DuplicateDirectiveName@[dog]) : Non repeatable directives must be uniquely named within a location. The directive 'upper' used on a 'FragmentSpread' is not unique" } def '5.7.3 Directives Are Unique Per Location - InlineFragment'() { @@ -132,22 +144,14 @@ class UniqueDirectiveNamesPerLocationTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - assertDuplicateDirectiveName("upper", "InlineFragment", 6, 27, validationErrors[0]) + validationErrors[0].locations[0].line == 6 + validationErrors[0].locations[0].column == 27 + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateDirectiveName + validationErrors[0].message == "Validation error (DuplicateDirectiveName@[dog]) : Non repeatable directives must be uniquely named within a location. The directive 'upper' used on a 'InlineFragment' is not unique" } - - - def assertDuplicateDirectiveName(String name, String type, int line, int column, ValidationError error) { - assert error.locations[0].line == line - assert error.locations[0].column == column - assert error.validationErrorType == ValidationErrorType.DuplicateDirectiveName - def expectedMsg = "Directives must be uniquely named within a location. The directive '${name}' used on a '${type}' is not unique." - assert error.message.contains(expectedMsg) - true - } - - List validate(String query) { + static List validate(String query) { def document = new Parser().parseDocument(query) - return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) } } diff --git a/src/test/groovy/graphql/validation/rules/UniqueFragmentNamesTest.groovy b/src/test/groovy/graphql/validation/rules/UniqueFragmentNamesTest.groovy index 53b1f8beb3..f3d049aba1 100644 --- a/src/test/groovy/graphql/validation/rules/UniqueFragmentNamesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/UniqueFragmentNamesTest.groovy @@ -27,15 +27,14 @@ class UniqueFragmentNamesTest extends Specification { """.stripIndent() when: def document = Parser.parse(query) - def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document) + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) then: !validationErrors.empty validationErrors.size() == 1 validationErrors[0].locations == [new SourceLocation(10, 1)] - validationErrors[0].message.contains("There can be only one fragment named 'F'") + validationErrors[0].message == "Validation error (DuplicateFragmentName@[F]) : There can be only one fragment named 'F'" validationErrors[0].validationErrorType == ValidationErrorType.DuplicateFragmentName - } } diff --git a/src/test/groovy/graphql/validation/rules/UniqueObjectFieldNameTest.groovy b/src/test/groovy/graphql/validation/rules/UniqueObjectFieldNameTest.groovy new file mode 100644 index 0000000000..f59a4e7c07 --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/UniqueObjectFieldNameTest.groovy @@ -0,0 +1,30 @@ +package graphql.validation.rules + +import graphql.parser.Parser +import graphql.validation.Validator +import spock.lang.Specification + +class UniqueObjectFieldNameTest extends Specification { + + def 'Object Field Name Uniqueness Not Valid'() { + def query = """ + query { + dogWithInput(leash: { + id: "foo" + id: "bar" + }) { + name + } + } + """ + when: + def document = Parser.parse(query) + def validationErrors = new Validator().validateDocument(Harness.Schema, document, Locale.ENGLISH) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].message == "Validation Error (UniqueObjectFieldName@[dogWithInput]) : There can be only one field named 'id'" + } + +} diff --git a/src/test/groovy/graphql/validation/rules/UniqueOperationNamesTest.groovy b/src/test/groovy/graphql/validation/rules/UniqueOperationNamesTest.groovy index 94854ee987..c5fa1eb3d2 100644 --- a/src/test/groovy/graphql/validation/rules/UniqueOperationNamesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/UniqueOperationNamesTest.groovy @@ -8,8 +8,6 @@ import graphql.validation.ValidationErrorType import graphql.validation.Validator import spock.lang.Specification -import static graphql.validation.rules.UniqueOperationNames.duplicateOperationNameMessage - class UniqueOperationNamesTest extends Specification { def '5.1.1.1 Operation Name Uniqueness Not Valid'() { @@ -34,7 +32,9 @@ class UniqueOperationNamesTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - validationErrors[0] == duplicateOperationName("getName", 8, 1) + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateOperationName + validationErrors[0].locations == [new SourceLocation(8, 1)] + validationErrors[0].message == "Validation error (DuplicateOperationName) : There can be only one operation named 'getName'" } def '5.1.1.1 Operation Name Uniqueness Not Valid Different Operations'() { @@ -46,8 +46,8 @@ class UniqueOperationNamesTest extends Specification { } mutation dogOperation { - mutateDog { - id + createDog(input: {id: "1"}) { + name } } """.stripIndent() @@ -57,17 +57,13 @@ class UniqueOperationNamesTest extends Specification { then: !validationErrors.empty validationErrors.size() == 1 - validationErrors[0] == duplicateOperationName("dogOperation", 8, 1) - } - - ValidationError duplicateOperationName(String defName, int line, int column) { - return new ValidationError(ValidationErrorType.DuplicateOperationName, - [new SourceLocation(line, column)], - duplicateOperationNameMessage(defName)) + validationErrors[0].validationErrorType == ValidationErrorType.DuplicateOperationName + validationErrors[0].locations == [new SourceLocation(8, 1)] + validationErrors[0].message == "Validation error (DuplicateOperationName) : There can be only one operation named 'dogOperation'" } - List validate(String query) { + static List validate(String query) { def document = new Parser().parseDocument(query) - return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) } } diff --git a/src/test/groovy/graphql/validation/rules/UniqueVariableNamesTest.groovy b/src/test/groovy/graphql/validation/rules/UniqueVariableNamesTest.groovy new file mode 100644 index 0000000000..79e80c05ba --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/UniqueVariableNamesTest.groovy @@ -0,0 +1,52 @@ +package graphql.validation.rules + +import graphql.TestUtil +import graphql.parser.Parser +import graphql.validation.ValidationError +import graphql.validation.ValidationErrorType +import graphql.validation.Validator +import spock.lang.Specification + +class UniqueVariableNamesTest extends Specification { + + def schema = TestUtil.schema(''' + type Query { + field(arg: Int) : String + } + ''') + + def "normal query "() { + + def query = """ + query(\$arg:Int){ + field(arg: \$arg) + } + """ + + when: + def document = Parser.parse(query) + def validationResult = new Validator().validateDocument(schema, document, Locale.ENGLISH) + + then: + validationResult.size() == 0 + } + + def "duplicate variable name error"() { + + def query = """ + query(\$arg:Int,\$arg:Int){ + field(arg: \$arg) + } + """ + + when: + def document = Parser.parse(query) + def validationResult = new Validator().validateDocument(schema, document, Locale.ENGLISH) + + then: + validationResult.size() == 1 + (validationResult[0] as ValidationError).validationErrorType == ValidationErrorType.DuplicateVariableName + validationResult[0].message == "Validation error (DuplicateVariableName) : There can be only one variable named 'arg'" + } + +} diff --git a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy index 072b560592..29f132d411 100644 --- a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy @@ -1,36 +1,31 @@ package graphql.validation.rules +import graphql.GraphQLContext +import graphql.TestUtil +import graphql.i18n.I18n import graphql.language.BooleanValue -import graphql.language.StringValue import graphql.language.TypeName import graphql.language.VariableDefinition -import graphql.schema.GraphQLNonNull import graphql.validation.ValidationContext import graphql.validation.ValidationErrorCollector import graphql.validation.ValidationErrorType +import graphql.validation.Validator import spock.lang.Specification import static graphql.Scalars.GraphQLString -import static graphql.schema.GraphQLNonNull.nonNull class VariableDefaultValuesOfCorrectTypeTest extends Specification { ValidationContext validationContext = Mock(ValidationContext) ValidationErrorCollector errorCollector = new ValidationErrorCollector() VariableDefaultValuesOfCorrectType defaultValuesOfCorrectType = new VariableDefaultValuesOfCorrectType(validationContext, errorCollector) + I18n i18n = Mock(I18n) - def "NonNull type, but with default value"() { - given: - GraphQLNonNull nonNullType = nonNull(GraphQLString) - StringValue defaultValue = StringValue.newStringValue("string").build() - VariableDefinition variableDefinition = VariableDefinition.newVariableDefinition("var", TypeName.newTypeName("String").build(), defaultValue).build() - validationContext.getInputType() >> nonNullType - when: - defaultValuesOfCorrectType.checkVariableDefinition(variableDefinition) - - then: - errorCollector.containsValidationError(ValidationErrorType.DefaultForNonNullArgument) - + void setup() { + def context = GraphQLContext.getDefault() + validationContext.getGraphQLContext() >> context + validationContext.getI18n() >> i18n + i18n.getLocale() >> Locale.ENGLISH } def "default value has wrong type"() { @@ -44,4 +39,72 @@ class VariableDefaultValuesOfCorrectTypeTest extends Specification { then: errorCollector.containsValidationError(ValidationErrorType.BadValueForDefaultArg) } -} + + def "default value has wrong type with error message"() { + setup: + def schema = ''' + type User { + id: String + } + + type Query { + getUsers(howMany: Int) : [User] + } + ''' + + def query = ''' + query($howMany: Int = "NotANumber") { + getUsers(howMany: $howMany) { + id + } + } + ''' + + def graphQlSchema = TestUtil.schema(schema) + def document = TestUtil.parseQuery(query) + def validator = new Validator() + + when: + def validationErrors = validator.validateDocument(graphQlSchema, document, Locale.ENGLISH) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].getValidationErrorType() == ValidationErrorType.BadValueForDefaultArg + validationErrors[0].message == "Validation error (BadValueForDefaultArg) : Bad default value 'StringValue{value='NotANumber'}' for type 'Int'" + } + + def "default value has wrong type with error message of client (German), not server (English)"() { + setup: + def schema = ''' + type User { + id: String + } + + type Query { + getUsers(howMany: Int) : [User] + } + ''' + + def query = ''' + query($howMany: Int = "NotANumber") { + getUsers(howMany: $howMany) { + id + } + } + ''' + + def graphQlSchema = TestUtil.schema(schema) + def document = TestUtil.parseQuery(query) + def validator = new Validator() + + when: + def validationErrors = validator.validateDocument(graphQlSchema, document, Locale.GERMAN) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].getValidationErrorType() == ValidationErrorType.BadValueForDefaultArg + validationErrors[0].message == "Validierungsfehler (BadValueForDefaultArg) : Ungültiger Standardwert 'StringValue{value='NotANumber'}' für Typ 'Int'" + } +} \ No newline at end of file diff --git a/src/test/groovy/graphql/validation/rules/VariableTypesMatchRuleTest.groovy b/src/test/groovy/graphql/validation/rules/VariableTypesMatchRuleTest.groovy deleted file mode 100644 index 2948b114ea..0000000000 --- a/src/test/groovy/graphql/validation/rules/VariableTypesMatchRuleTest.groovy +++ /dev/null @@ -1,76 +0,0 @@ -package graphql.validation.rules - -import graphql.Scalars -import graphql.StarWarsSchema -import graphql.language.ListType -import graphql.language.NonNullType -import graphql.language.OperationDefinition -import graphql.language.StringValue -import graphql.language.TypeName -import graphql.language.VariableDefinition -import graphql.language.VariableReference -import graphql.schema.GraphQLList -import graphql.schema.GraphQLNonNull -import graphql.validation.ValidationContext -import graphql.validation.ValidationErrorCollector -import graphql.validation.ValidationErrorType -import spock.lang.Specification - -class VariableTypesMatchRuleTest extends Specification { - - ValidationContext validationContext = Mock(ValidationContext) - ValidationErrorCollector errorCollector = new ValidationErrorCollector() - VariableTypesMatchRule variableTypesMatchRule - VariablesTypesMatcher variablesTypeMatcher - - def setup() { - variablesTypeMatcher = Mock(VariablesTypesMatcher) - variableTypesMatchRule = new VariableTypesMatchRule(validationContext, errorCollector, variablesTypeMatcher) - } - - def "invalid type"() { - given: - def defaultValue = new StringValue("default") - def astType = new TypeName("String") - def expectedType = Scalars.GraphQLBoolean - - validationContext.getSchema() >> StarWarsSchema.starWarsSchema - validationContext.getInputType() >> expectedType - variablesTypeMatcher.effectiveType(Scalars.GraphQLString, defaultValue) >> Scalars.GraphQLString - variablesTypeMatcher - .doesVariableTypesMatch(Scalars.GraphQLString, defaultValue, expectedType) >> false - - when: - variableTypesMatchRule.checkOperationDefinition(OperationDefinition.newOperationDefinition().build()) - variableTypesMatchRule.checkVariableDefinition(new VariableDefinition("var", astType, defaultValue)) - variableTypesMatchRule.checkVariable(new VariableReference("var")) - - then: - errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) - } - - def "validation error message contains type information - issue 911 "() { - given: - def defaultValue = null - def astType = new NonNullType(new ListType(new TypeName("String"))) - def expectedType = GraphQLList.list(GraphQLNonNull.nonNull(Scalars.GraphQLString)) - - def mismatchedType = GraphQLNonNull.nonNull(GraphQLList.list(Scalars.GraphQLString)) - - validationContext.getSchema() >> StarWarsSchema.starWarsSchema - validationContext.getInputType() >> expectedType - variablesTypeMatcher.effectiveType(mismatchedType, defaultValue) >> mismatchedType - variablesTypeMatcher - .doesVariableTypesMatch(expectedType, defaultValue, expectedType) >> false - - - when: - variableTypesMatchRule.checkOperationDefinition(OperationDefinition.newOperationDefinition().build()) - variableTypesMatchRule.checkVariableDefinition(new VariableDefinition("var", astType, defaultValue)) - variableTypesMatchRule.checkVariable(new VariableReference("var")) - - then: - errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) - errorCollector.errors[0].message.contains("Variable type '[String]!' doesn't match expected type '[String!]'") - } -} diff --git a/src/test/groovy/graphql/validation/rules/VariableTypesMatchTest.groovy b/src/test/groovy/graphql/validation/rules/VariableTypesMatchTest.groovy new file mode 100644 index 0000000000..5ccaff13dd --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/VariableTypesMatchTest.groovy @@ -0,0 +1,256 @@ +package graphql.validation.rules + + +import graphql.StarWarsSchema +import graphql.TestUtil +import graphql.i18n.I18n +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import graphql.validation.LanguageTraversal +import graphql.validation.RulesVisitor +import graphql.validation.ValidationContext +import graphql.validation.ValidationErrorCollector +import graphql.validation.ValidationErrorType +import spock.lang.Specification + +class VariableTypesMatchTest extends Specification { + ValidationErrorCollector errorCollector = new ValidationErrorCollector() + + def traverse(String query, GraphQLSchema schema = StarWarsSchema.starWarsSchema) { + def document = Parser.parse(query) + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH) + def validationContext = new ValidationContext(schema, document, i18n) + def variableTypesMatchRule = new VariableTypesMatch(validationContext, errorCollector) + def languageTraversal = new LanguageTraversal() + languageTraversal.traverse(document, new RulesVisitor(validationContext, [variableTypesMatchRule])) + } + + def "valid variables"() { + given: + def query = """ + query Q(\$id: String!) { + human(id: \$id) { + __typename + } + } + """ + + when: + traverse(query) + + then: + errorCollector.errors.isEmpty() + } + + def "invalid variables"() { + given: + def query = """ + query Q(\$id: String) { + human(id: \$id) { + __typename + } + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) + // #991: describe which types were mismatched in error message + errorCollector.errors[0].message == "Validation error (VariableTypeMismatch@[human]) : Variable 'id' of type 'String' used in position expecting type 'String!'" + } + + def "invalid variables in fragment spread"() { + given: + def query = """ + fragment QueryType on QueryType { + human(id: \$xid) { + __typename + } + } + + query Invalid(\$xid: String) { + ...QueryType + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) + errorCollector.errors[0].message == "Validation error (VariableTypeMismatch@[QueryType/human]) : Variable 'xid' of type 'String' used in position expecting type 'String!'" + } + + def "mixed validity operations, valid first"() { + given: + def query = """ + fragment QueryType on QueryType { + human(id: \$id) { + __typename + } + } + + query Valid(\$id: String!) { + ... QueryType + } + + query Invalid(\$id: String) { + ... QueryType + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) + errorCollector.errors[0].message == "Validation error (VariableTypeMismatch@[QueryType/human]) : Variable 'id' of type 'String' used in position expecting type 'String!'" + } + + def "mixed validity operations, invalid first"() { + given: + def query = """ + fragment QueryType on QueryType { + human(id: \$id) { + __typename + } + } + + query Invalid(\$id: String) { + ... QueryType + } + + query Valid(\$id: String!) { + ... QueryType + } + """ + + when: + traverse(query) + + then: + errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) + errorCollector.errors[0].message == "Validation error (VariableTypeMismatch@[QueryType/human]) : Variable 'id' of type 'String' used in position expecting type 'String!'" + } + + def "multiple invalid operations"() { + given: + def query = """ + fragment QueryType on QueryType { + human(id: \$id) { + __typename + } + } + + query Invalid1(\$id: String) { + ... QueryType + } + + query Invalid2(\$id: Boolean) { + ... QueryType + } + """ + + when: + traverse(query) + + then: + errorCollector.getErrors().size() == 2 + errorCollector.errors.any { + it.validationErrorType == ValidationErrorType.VariableTypeMismatch && + it.message == "Validation error (VariableTypeMismatch@[QueryType/human]) : Variable 'id' of type 'String' used in position expecting type 'String!'" + } + errorCollector.errors.any { + it.validationErrorType == ValidationErrorType.VariableTypeMismatch && + it.message == "Validation error (VariableTypeMismatch@[QueryType/human]) : Variable 'id' of type 'Boolean' used in position expecting type 'String!'" + } + } + + + def "issue 3276 - invalid variables in object field values with no defaults in location"() { + + def sdl = ''' + type Query { + items(pagination: Pagination = {limit: 1, offset: 1}): [String] + } + input Pagination { + limit: Int! + offset: Int! + } + ''' + def schema = TestUtil.schema(sdl) + given: + def query = ''' + query Items( $limit: Int, $offset: Int) { + items( + pagination: {limit: $limit, offset: $offset} + ) + } + ''' + + when: + traverse(query, schema) + + then: + errorCollector.containsValidationError(ValidationErrorType.VariableTypeMismatch) + errorCollector.errors[0].message == "Validation error (VariableTypeMismatch@[items]) : Variable 'limit' of type 'Int' used in position expecting type 'Int!'" + } + + def "issue 3276 - valid variables because of schema defaults with nullable variable"() { + + def sdl = ''' + type Query { + items(pagination: Pagination! = {limit: 1, offset: 1}): [String] + } + input Pagination { + limit: Int! + offset: Int! + } + ''' + def schema = TestUtil.schema(sdl) + given: + def query = ''' + query Items( $var : Pagination) { + items( + pagination: $var + ) + } + ''' + + when: + traverse(query, schema) + + then: + errorCollector.errors.isEmpty() + } + + def "issue 3276 - valid variables because of variable defaults"() { + + def sdl = ''' + type Query { + items(pagination: Pagination!): [String] + } + input Pagination { + limit: Int! + offset: Int! + } + ''' + def schema = TestUtil.schema(sdl) + given: + def query = ''' + query Items( $var : Pagination = {limit: 1, offset: 1}) { + items( + pagination: $var + ) + } + ''' + + when: + traverse(query, schema) + + then: + errorCollector.errors.isEmpty() + } +} diff --git a/src/test/groovy/graphql/validation/rules/VariablesAreInputTypesTest.groovy b/src/test/groovy/graphql/validation/rules/VariablesAreInputTypesTest.groovy index fb7febd3c2..b01eebabc3 100644 --- a/src/test/groovy/graphql/validation/rules/VariablesAreInputTypesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/VariablesAreInputTypesTest.groovy @@ -18,7 +18,6 @@ class VariablesAreInputTypesTest extends Specification { ValidationErrorCollector errorCollector = new ValidationErrorCollector() VariablesAreInputTypes variablesAreInputTypes = new VariablesAreInputTypes(validationContext, errorCollector) - def "the unmodified ast type is not a schema input type"() { given: def astType = new NonNullType(new ListType(new TypeName(StarWarsSchema.droidType.getName()))) @@ -65,12 +64,13 @@ class VariablesAreInputTypesTest extends Specification { def validator = new Validator() when: - def validationErrors = validator.validateDocument(graphQlSchema, document) + def validationErrors = validator.validateDocument(graphQlSchema, document, Locale.ENGLISH) then: !validationErrors.empty validationErrors.size() == 2 validationErrors.validationErrorType as Set == [ValidationErrorType.VariableTypeMismatch, ValidationErrorType.NonInputTypeOnVariable] as Set + validationErrors[0].message == "Validation error (NonInputTypeOnVariable) : Input variable 'user' type 'User' is not an input type" } } diff --git a/src/test/groovy/graphql/validation/rules/VariablesTypesMatcherTest.groovy b/src/test/groovy/graphql/validation/rules/VariablesTypesMatcherTest.groovy index c6bead4ef6..b05e425090 100644 --- a/src/test/groovy/graphql/validation/rules/VariablesTypesMatcherTest.groovy +++ b/src/test/groovy/graphql/validation/rules/VariablesTypesMatcherTest.groovy @@ -1,6 +1,7 @@ package graphql.validation.rules import graphql.language.BooleanValue +import graphql.language.StringValue import spock.lang.Specification import spock.lang.Unroll @@ -18,7 +19,7 @@ class VariablesTypesMatcherTest extends Specification { def "#variableType with default value #defaultValue and expected #expectedType should result: #result "() { expect: - typesMatcher.doesVariableTypesMatch(variableType, defaultValue, expectedType) == result + typesMatcher.doesVariableTypesMatch(variableType, defaultValue, expectedType, null) == result where: variableType | defaultValue | expectedType || result @@ -27,4 +28,18 @@ class VariablesTypesMatcherTest extends Specification { nonNull(GraphQLBoolean) | new BooleanValue(true) | GraphQLBoolean || true nonNull(GraphQLString) | null | list(GraphQLString) || false } + + @Unroll + def "issue 3276 - #variableType with default value #defaultValue and expected #expectedType with #locationDefaultValue should result: #result "() { + + expect: + typesMatcher.doesVariableTypesMatch(variableType, defaultValue, expectedType, locationDefaultValue) == result + + where: + variableType | defaultValue | expectedType | locationDefaultValue || result + GraphQLString | null | nonNull(GraphQLString) | null || false + GraphQLString | null | nonNull(GraphQLString) | StringValue.of("x") || true + GraphQLString | StringValue.of("x") | nonNull(GraphQLString) | StringValue.of("x") || true + GraphQLString | StringValue.of("x") | nonNull(GraphQLString) | null || true + } } diff --git a/src/test/groovy/readme/ConcernsExamples.java b/src/test/groovy/readme/ConcernsExamples.java index f2e9737395..89bd775574 100644 --- a/src/test/groovy/readme/ConcernsExamples.java +++ b/src/test/groovy/readme/ConcernsExamples.java @@ -57,7 +57,7 @@ private void contextHelper() { UserContext contextForUser = YourGraphqlContextBuilder.getContextForUser(getCurrentUser()); ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .context(contextForUser) + .graphQLContext(context -> context.put("userContext", contextForUser)) .build(); ExecutionResult executionResult = graphQL.execute(executionInput); @@ -70,7 +70,7 @@ private void contextHelper() { DataFetcher dataFetcher = new DataFetcher() { @Override public Object get(DataFetchingEnvironment environment) { - UserContext userCtx = environment.getContext(); + UserContext userCtx = environment.getGraphQlContext().get("userContext"); Long businessObjId = environment.getArgument("businessObjId"); return invokeBusinessLayerMethod(userCtx, businessObjId); diff --git a/src/test/groovy/readme/DataFetchingExamples.java b/src/test/groovy/readme/DataFetchingExamples.java index dbe637dad1..c44dfce56a 100644 --- a/src/test/groovy/readme/DataFetchingExamples.java +++ b/src/test/groovy/readme/DataFetchingExamples.java @@ -47,7 +47,7 @@ void getProductsDataFetcher() { DataFetcher productsDataFetcher = new DataFetcher>() { @Override public List get(DataFetchingEnvironment environment) { - DatabaseSecurityCtx ctx = environment.getContext(); + DatabaseSecurityCtx ctx = environment.getGraphQlContext().get("databaseSecurityCtx"); List products; String match = environment.getArgument("match"); diff --git a/src/test/groovy/readme/DataLoaderBatchingExamples.java b/src/test/groovy/readme/DataLoaderBatchingExamples.java index 495a860911..1bf55e0452 100644 --- a/src/test/groovy/readme/DataLoaderBatchingExamples.java +++ b/src/test/groovy/readme/DataLoaderBatchingExamples.java @@ -3,8 +3,6 @@ import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.GraphQL; -import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation; -import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; import graphql.schema.GraphQLSchema; @@ -12,10 +10,11 @@ import org.dataloader.BatchLoaderContextProvider; import org.dataloader.BatchLoaderEnvironment; import org.dataloader.BatchLoaderWithContext; -import org.dataloader.CacheMap; import org.dataloader.DataLoader; +import org.dataloader.DataLoaderFactory; import org.dataloader.DataLoaderOptions; import org.dataloader.DataLoaderRegistry; +import org.dataloader.ValueCache; import java.util.List; import java.util.Map; @@ -24,11 +23,11 @@ import static graphql.ExecutionInput.newExecutionInput; -@SuppressWarnings({"unused", "Convert2Lambda", "ConstantConditions", "ClassCanBeStatic"}) +@SuppressWarnings({"unused", "Convert2Lambda", "ClassCanBeStatic"}) public class DataLoaderBatchingExamples { - class StarWarsCharacter { + static class StarWarsCharacter { List getFriendIds() { return null; } @@ -59,7 +58,7 @@ public CompletionStage> load(List keys) { // use this data loader in the data fetchers associated with characters and put them into // the graphql schema (not shown) // - DataFetcher heroDataFetcher = new DataFetcher() { + DataFetcher heroDataFetcher = new DataFetcher() { @Override public Object get(DataFetchingEnvironment environment) { DataLoader dataLoader = environment.getDataLoader("character"); @@ -67,7 +66,7 @@ public Object get(DataFetchingEnvironment environment) { } }; - DataFetcher friendsDataFetcher = new DataFetcher() { + DataFetcher friendsDataFetcher = new DataFetcher() { @Override public Object get(DataFetchingEnvironment environment) { StarWarsCharacter starWarsCharacter = environment.getSource(); @@ -83,13 +82,6 @@ public Object get(DataFetchingEnvironment environment) { // as each level of the graphql query is executed and hence make batched objects // available to the query and the associated DataFetchers // - // In this case we use options to make it keep statistics on the batching efficiency - // - DataLoaderDispatcherInstrumentationOptions options = DataLoaderDispatcherInstrumentationOptions - .newOptions().includeStatistics(true); - - DataLoaderDispatcherInstrumentation dispatcherInstrumentation - = new DataLoaderDispatcherInstrumentation(options); // // now build your graphql object and execute queries on it. @@ -97,7 +89,6 @@ public Object get(DataFetchingEnvironment environment) { // schema fields // GraphQL graphQL = GraphQL.newGraphQL(buildSchema()) - .instrumentation(dispatcherInstrumentation) .build(); // @@ -105,7 +96,7 @@ public Object get(DataFetchingEnvironment environment) { // // Since data loaders are stateful, they are created per execution request. // - DataLoader characterDataLoader = DataLoader.newDataLoader(characterBatchLoader); + DataLoader characterDataLoader = DataLoaderFactory.newDataLoader(characterBatchLoader); // // DataLoaderRegistry is a place to register all data loaders in that needs to be dispatched together @@ -124,24 +115,25 @@ public Object get(DataFetchingEnvironment environment) { ExecutionResult executionResult = graphQL.execute(executionInput); } - class Redis { + static class Redis { public boolean containsKey(String key) { return false; } - public Object getValue(String key) { + public CompletableFuture getValue(String key) { return null; } - public CacheMap setValue(String key, Object value) { + public CompletableFuture setValue(String key, Object value) { return null; } - public void clearKey(String key) { + public CompletableFuture clearKey(String key) { + return null; } - public CacheMap clearAll() { + public CompletableFuture clearAll() { return null; } } @@ -157,39 +149,31 @@ public CompletionStage> load(List keys) { private void changeCachingSolutionOfDataLoader() { - CacheMap crossRequestCacheMap = new CacheMap() { - @Override - public boolean containsKey(String key) { - return redisIntegration.containsKey(key); - } - + ValueCache crossRequestValueCache = new ValueCache() { @Override - public Object get(String key) { + public CompletableFuture get(String key) { return redisIntegration.getValue(key); } @Override - public CacheMap set(String key, Object value) { - redisIntegration.setValue(key, value); - return this; + public CompletableFuture set(String key, Object value) { + return redisIntegration.setValue(key, value); } @Override - public CacheMap delete(String key) { - redisIntegration.clearKey(key); - return this; + public CompletableFuture delete(String key) { + return redisIntegration.clearKey(key); } @Override - public CacheMap clear() { - redisIntegration.clearAll(); - return this; + public CompletableFuture clear() { + return redisIntegration.clearAll(); } }; - DataLoaderOptions options = DataLoaderOptions.newOptions().setCacheMap(crossRequestCacheMap); + DataLoaderOptions options = DataLoaderOptions.newOptions().setValueCache(crossRequestValueCache).build(); - DataLoader dataLoader = DataLoader.newDataLoader(batchLoader, options); + DataLoader dataLoader = DataLoaderFactory.newDataLoader(batchLoader, options); } private void doNotUseAsyncInYouDataFetcher() { @@ -201,11 +185,11 @@ public CompletionStage> load(List keys) { } }; - DataLoader characterDataLoader = DataLoader.newDataLoader(batchLoader); + DataLoader characterDataLoader = DataLoaderFactory.newDataLoader(batchLoader); // .... later in your data fetcher - DataFetcher dataFetcherThatCallsTheDataLoader = new DataFetcher() { + DataFetcher dataFetcherThatCallsTheDataLoader = new DataFetcher() { @Override public Object get(DataFetchingEnvironment environment) { // @@ -229,11 +213,11 @@ public CompletionStage> load(List keys) { } }; - DataLoader characterDataLoader = DataLoader.newDataLoader(batchLoader); + DataLoader characterDataLoader = DataLoaderFactory.newDataLoader(batchLoader); // .... later in your data fetcher - DataFetcher dataFetcherThatCallsTheDataLoader = new DataFetcher() { + DataFetcher dataFetcherThatCallsTheDataLoader = new DataFetcher() { @Override public Object get(DataFetchingEnvironment environment) { // @@ -276,12 +260,12 @@ public Object getContext() { // // this creates an overall context for the dataloader // - DataLoaderOptions loaderOptions = DataLoaderOptions.newOptions().setBatchLoaderContextProvider(contextProvider); - DataLoader characterDataLoader = DataLoader.newDataLoader(batchLoaderWithCtx, loaderOptions); + DataLoaderOptions loaderOptions = DataLoaderOptions.newOptions().setBatchLoaderContextProvider(contextProvider).build(); + DataLoader characterDataLoader = DataLoaderFactory.newDataLoader(batchLoaderWithCtx, loaderOptions); // .... later in your data fetcher - DataFetcher dataFetcherThatCallsTheDataLoader = new DataFetcher() { + DataFetcher dataFetcherThatCallsTheDataLoader = new DataFetcher() { @Override public Object get(DataFetchingEnvironment environment) { String argId = environment.getArgument("id"); diff --git a/src/test/groovy/readme/DirectivesExamples.java b/src/test/groovy/readme/DirectivesExamples.java index 3419d91599..2d6af20f24 100644 --- a/src/test/groovy/readme/DirectivesExamples.java +++ b/src/test/groovy/readme/DirectivesExamples.java @@ -4,6 +4,9 @@ import graphql.ExecutionResult; import graphql.GraphQL; import graphql.Scalars; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryAppliedDirectiveArgument; +import graphql.execution.directives.QueryDirectives; import graphql.schema.DataFetcher; import graphql.schema.DataFetcherFactories; import graphql.schema.DataFetchingEnvironment; @@ -20,6 +23,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; +import java.util.List; import java.util.Map; @SuppressWarnings({"Convert2Lambda", "unused", "ClassCanBeStatic"}) @@ -39,7 +43,7 @@ class AuthorisationDirective implements SchemaDirectiveWiring { @Override public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment environment) { - String targetAuthRole = (String) environment.getDirective().getArgument("role").getValue(); + String targetAuthRole = (String) environment.getAppliedDirective().getArgument("role").getArgumentValue().getValue(); // // build a data fetcher that first checks authorisation roles before then calling the original data fetcher @@ -48,8 +52,7 @@ public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment contextMap = dataFetchingEnvironment.getContext(); - AuthorisationCtx authContext = (AuthorisationCtx) contextMap.get("authContext"); + AuthorisationCtx authContext = dataFetchingEnvironment.getGraphQlContext().get("authContext"); if (authContext.hasRole(targetAuthRole)) { return originalDataFetcher.get(dataFetchingEnvironment); @@ -83,7 +86,7 @@ void contextWiring() { ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query(query) - .context(authCtx) + .graphQLContext(builder -> builder.put("authContext", authCtx)) .build(); } @@ -171,4 +174,26 @@ public static void main(String[] args) { // data['default'] == '08-10-1969' // data['usa'] == '10-08-1969' } + + DataFetcher cacheDataFetcher = new DataFetcher() { + @Override + public Object get(DataFetchingEnvironment env) { + QueryDirectives queryDirectives = env.getQueryDirectives(); + List cacheDirectives = queryDirectives + .getImmediateAppliedDirective("cache"); + // We get a List, because we could have + // repeatable directives + if (cacheDirectives.size() > 0) { + QueryAppliedDirective cache = cacheDirectives.get(0); + QueryAppliedDirectiveArgument maxAgeArgument + = cache.getArgument("maxAge"); + int maxAge = maxAgeArgument.getValue(); + + // Now we know the max allowed cache time and + // can make use of it + // Your logic goes here + } + return "your logic here"; + } + }; } diff --git a/src/test/groovy/readme/ExecutionExamples.java b/src/test/groovy/readme/ExecutionExamples.java index 0d2cc901ca..b2b56e798f 100644 --- a/src/test/groovy/readme/ExecutionExamples.java +++ b/src/test/groovy/readme/ExecutionExamples.java @@ -12,12 +12,15 @@ import graphql.execution.DataFetcherExceptionHandlerParameters; import graphql.execution.DataFetcherExceptionHandlerResult; import graphql.execution.ExecutionStrategy; -import graphql.execution.ExecutorServiceExecutionStrategy; +import graphql.execution.values.InputInterceptor; +import graphql.execution.values.legacycoercing.LegacyCoercingInputInterceptor; import graphql.language.SourceLocation; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLSchema; import graphql.schema.visibility.BlockedFields; import graphql.schema.visibility.GraphqlFieldVisibility; @@ -28,10 +31,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; import static graphql.StarWarsSchema.queryType; @@ -140,34 +139,21 @@ private void wireInExecutionStrategies() { //::/FigureG } - private void exampleExecutorServiceExecutionStrategy() { - //::FigureH - ExecutorService executorService = new ThreadPoolExecutor( - 2, /* core pool size 2 thread */ - 2, /* max pool size 2 thread */ - 30, TimeUnit.SECONDS, - new LinkedBlockingQueue<>(), - new ThreadPoolExecutor.CallerRunsPolicy()); - - GraphQL graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) - .queryExecutionStrategy(new ExecutorServiceExecutionStrategy(executorService)) - .mutationExecutionStrategy(new AsyncSerialExecutionStrategy()) - .build(); - //::/FigureH - } - private void exceptionHandler() { //::FigureI DataFetcherExceptionHandler handler = new DataFetcherExceptionHandler() { @Override - public DataFetcherExceptionHandlerResult onException(DataFetcherExceptionHandlerParameters handlerParameters) { + public CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) { // // do your custom handling here. The parameters have all you need GraphQLError buildCustomError = buildCustomError(handlerParameters); - return DataFetcherExceptionHandlerResult.newResult() - .error(buildCustomError).build(); + DataFetcherExceptionHandlerResult exceptionResult = DataFetcherExceptionHandlerResult + .newResult() + .error(buildCustomError) + .build(); + return CompletableFuture.completedFuture(exceptionResult); } }; ExecutionStrategy executionStrategy = new AsyncExecutionStrategy(handler); @@ -185,21 +171,26 @@ private void blockedFields() { .addPattern("Droid.appearsIn") .addPattern(".*\\.hero") // it uses regular expressions .build(); + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .fieldVisibility(blockedFields) + .build(); GraphQLSchema schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) - .fieldVisibility(blockedFields) + .codeRegistry(codeRegistry) .build(); - //::/FigureJ } private void noIntrospection() { //::FigureK + GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry() + .fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY) + .build(); GraphQLSchema schema = GraphQLSchema.newSchema() .query(StarWarsSchema.queryType) - .fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY) + .codeRegistry(codeRegistry) .build(); //::/FigureK } @@ -302,4 +293,26 @@ private GraphQL buildSchema() { .build(); } + private void emitAMetric(Object inputValue, GraphQLInputType graphQLInputType) { + return; + } + + private void inputInterceptorObservesExample() { + InputInterceptor legacyInputInterceptor = LegacyCoercingInputInterceptor.observesValues((inputValue, graphQLInputType) -> { + emitAMetric(inputValue, graphQLInputType); + }); + + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query { exampleField }") + .graphQLContext(Map.of(InputInterceptor.class, legacyInputInterceptor)) + .build(); + } + + private void inputInterceptorMigratesExample() { + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query { exampleField }") + .graphQLContext(Map.of(InputInterceptor.class, LegacyCoercingInputInterceptor.migratesValues())) + .build(); + } + } diff --git a/src/test/groovy/readme/FieldSelectionExamples.java b/src/test/groovy/readme/FieldSelectionExamples.java index 1645b96097..19fc4fb121 100644 --- a/src/test/groovy/readme/FieldSelectionExamples.java +++ b/src/test/groovy/readme/FieldSelectionExamples.java @@ -17,7 +17,7 @@ public Object get(DataFetchingEnvironment env) { String userId = env.getArgument("userId"); DataFetchingFieldSelectionSet selectionSet = env.getSelectionSet(); - if (selectionSet.contains("user/*")) { + if (selectionSet.contains("friends/*")) { return getUserAndTheirFriends(userId); } else { return getUser(userId); @@ -33,7 +33,7 @@ void getFields() { List nodeFields = selectionSet.getFields("edges/nodes/*"); nodeFields.forEach(selectedField -> { System.out.println(selectedField.getName()); - System.out.println(selectedField.getFieldDefinition().getType()); + System.out.println(selectedField.getType()); DataFetchingFieldSelectionSet innerSelectionSet = selectedField.getSelectionSet(); // .. this forms a tree of selection and you can get very fancy with it diff --git a/src/test/groovy/readme/DeferredExamples.java b/src/test/groovy/readme/IncrementalExamples.java similarity index 69% rename from src/test/groovy/readme/DeferredExamples.java rename to src/test/groovy/readme/IncrementalExamples.java index 23aff5d472..3b7d1ed7be 100644 --- a/src/test/groovy/readme/DeferredExamples.java +++ b/src/test/groovy/readme/IncrementalExamples.java @@ -1,20 +1,19 @@ package readme; -import graphql.DeferredExecutionResult; import graphql.Directives; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.GraphQL; +import graphql.incremental.DelayedIncrementalPartialResult; +import graphql.incremental.IncrementalExecutionResult; import graphql.schema.GraphQLSchema; +import jakarta.servlet.http.HttpServletResponse; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; -import javax.servlet.http.HttpServletResponse; -import java.util.Map; - -@SuppressWarnings({"unused", "ConstantConditions", "UnusedAssignment", "unchecked"}) -public class DeferredExamples { +@SuppressWarnings({"unused", "ConstantConditions"}) +public class IncrementalExamples { GraphQLSchema buildSchemaWithDirective() { @@ -34,19 +33,26 @@ void basicExample(HttpServletResponse httpServletResponse, String deferredQuery) // ExecutionResult initialResult = graphQL.execute(ExecutionInput.newExecutionInput().query(deferredQuery).build()); + if (!(initialResult instanceof IncrementalExecutionResult)) { + // handle non incremental response + return; + } + + IncrementalExecutionResult incrementalResult = (IncrementalExecutionResult) initialResult; + // - // then initial results happen first, the deferred ones will begin AFTER these initial + // then initial results happen first, the incremental ones will begin AFTER these initial // results have completed // sendMultipartHttpResult(httpServletResponse, initialResult); - Map extensions = initialResult.getExtensions(); - Publisher deferredResults = (Publisher) extensions.get(GraphQL.DEFERRED_RESULTS); + Publisher delayedIncrementalResults = incrementalResult + .getIncrementalItemPublisher(); // - // you subscribe to the deferred results like any other reactive stream + // you subscribe to the incremental results like any other reactive stream // - deferredResults.subscribe(new Subscriber() { + delayedIncrementalResults.subscribe(new Subscriber<>() { Subscription subscription; @@ -59,7 +65,7 @@ public void onSubscribe(Subscription s) { } @Override - public void onNext(DeferredExecutionResult executionResult) { + public void onNext(DelayedIncrementalPartialResult executionResult) { // // as each deferred result arrives, send it to where it needs to go // @@ -85,7 +91,7 @@ private void completeResponse(HttpServletResponse httpServletResponse) { private void handleError(HttpServletResponse httpServletResponse, Throwable t) { } - private void sendMultipartHttpResult(HttpServletResponse httpServletResponse, ExecutionResult initialResult) { + private void sendMultipartHttpResult(HttpServletResponse httpServletResponse, Object result) { } diff --git a/src/test/groovy/readme/InstrumentationExamples.java b/src/test/groovy/readme/InstrumentationExamples.java index 826939c445..142cd4f240 100644 --- a/src/test/groovy/readme/InstrumentationExamples.java +++ b/src/test/groovy/readme/InstrumentationExamples.java @@ -3,23 +3,26 @@ import graphql.ExecutionResult; import graphql.GraphQL; import graphql.GraphQLError; -import graphql.execution.ExecutionPath; +import graphql.execution.ResultPath; import graphql.execution.instrumentation.ChainedInstrumentation; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.SimpleInstrumentation; import graphql.execution.instrumentation.SimpleInstrumentationContext; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.fieldvalidation.FieldAndArguments; import graphql.execution.instrumentation.fieldvalidation.FieldValidation; import graphql.execution.instrumentation.fieldvalidation.FieldValidationEnvironment; import graphql.execution.instrumentation.fieldvalidation.FieldValidationInstrumentation; import graphql.execution.instrumentation.fieldvalidation.SimpleFieldValidation; +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.tracing.TracingInstrumentation; import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.HashMap; @@ -60,30 +63,30 @@ void recordTiming(String key, long time) { } } - class CustomInstrumentation extends SimpleInstrumentation { + class CustomInstrumentation extends SimplePerformantInstrumentation { + @Override - public InstrumentationState createState() { + public @Nullable CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { // // instrumentation state is passed during each invocation of an Instrumentation method // and allows you to put stateful data away and reference it during the query execution // - return new CustomInstrumentationState(); + return CompletableFuture.completedFuture(new CustomInstrumentationState()); } @Override - public InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters) { + public @Nullable InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) { long startNanos = System.nanoTime(); return new SimpleInstrumentationContext() { @Override public void onCompleted(ExecutionResult result, Throwable t) { - CustomInstrumentationState state = parameters.getInstrumentationState(); - state.recordTiming(parameters.getQuery(), System.nanoTime() - startNanos); + ((CustomInstrumentationState) state).recordTiming(parameters.getQuery(), System.nanoTime() - startNanos); } }; } @Override - public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { // // this allows you to intercept the data fetcher used to fetch a field and provide another one, perhaps // that enforces certain behaviours or has certain side effects on the data @@ -92,9 +95,9 @@ public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, Instrume } @Override - public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { // - // this allows you to instrument the execution result some how. For example the Tracing support uses this to put + // this allows you to instrument the execution result somehow. For example the Tracing support uses this to put // the `extensions` map of data in place // return CompletableFuture.completedFuture(executionResult); @@ -123,7 +126,7 @@ private void chained() { private void fieldValidation() { - ExecutionPath fieldPath = ExecutionPath.parse("/user"); + ResultPath fieldPath = ResultPath.parse("/user"); FieldValidation fieldValidation = new SimpleFieldValidation() .addRule(fieldPath, new BiFunction>() { @Override diff --git a/src/test/groovy/readme/MappingExamples.java b/src/test/groovy/readme/MappingExamples.java index a5161c5f9f..15309b3e21 100644 --- a/src/test/groovy/readme/MappingExamples.java +++ b/src/test/groovy/readme/MappingExamples.java @@ -3,7 +3,6 @@ import graphql.Scalars; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; -import graphql.schema.FieldCoordinates; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.PropertyDataFetcher; diff --git a/src/test/groovy/readme/ReadmeExamples.java b/src/test/groovy/readme/ReadmeExamples.java index 2976505343..6eb795279e 100644 --- a/src/test/groovy/readme/ReadmeExamples.java +++ b/src/test/groovy/readme/ReadmeExamples.java @@ -1,12 +1,12 @@ package readme; -import graphql.GraphQL; +import graphql.ErrorClassification; +import graphql.GraphQLError; +import graphql.GraphqlErrorBuilder; +import graphql.InvalidSyntaxError; import graphql.Scalars; import graphql.StarWarsData; -import graphql.StarWarsSchema; import graphql.TypeResolutionEnvironment; -import graphql.execution.AsyncExecutionStrategy; -import graphql.execution.ExecutorServiceExecutionStrategy; import graphql.language.Directive; import graphql.language.FieldDefinition; import graphql.language.TypeDefinition; @@ -38,9 +38,6 @@ import java.io.File; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; import static graphql.GarfieldSchema.Cat; import static graphql.GarfieldSchema.CatType; @@ -87,6 +84,9 @@ void creatingASchema() { .query(queryType) // must be provided .mutation(mutationType) // is optional .build(); + + GraphQLUnionType.Builder description = newUnionType().description(""); + description.definition(null).build(); } void listsAndNonNullLists() { @@ -94,7 +94,7 @@ void listsAndNonNullLists() { GraphQLNonNull.nonNull(GraphQLString); // a non null String - // with static imports its even shorter + // with static imports it's even shorter newArgument() .name("example") .type(nonNull(list(GraphQLString))); @@ -181,23 +181,6 @@ void recursiveTypes() { .build(); } - void executionStrategies() { - - ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( - 2, /* core pool size 2 thread */ - 2, /* max pool size 2 thread */ - 30, TimeUnit.SECONDS, - new LinkedBlockingQueue<>(), - new ThreadPoolExecutor.CallerRunsPolicy()); - - GraphQL graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) - .queryExecutionStrategy(new ExecutorServiceExecutionStrategy(threadPoolExecutor)) - .mutationExecutionStrategy(new AsyncExecutionStrategy()) - .subscriptionExecutionStrategy(new AsyncExecutionStrategy()) - .build(); - - } - void dataFetching() { DataFetcher fooDataFetcher = new DataFetcher() { @@ -322,7 +305,7 @@ public Review get(DataFetchingEnvironment environment) { // be maps. You can convert them to POJOs inside the data fetcher if that // suits your code better // - // See http://facebook.github.io/graphql/October2016/#sec-Input-Objects + // See https://spec.graphql.org/October2021/#sec-Input-Objects // Map episodeInputMap = environment.getArgument("episode"); Map reviewInputMap = environment.getArgument("review"); @@ -472,6 +455,30 @@ public GraphQLObjectType getType(TypeResolutionEnvironment env) { }; } + static class SpecialError extends InvalidSyntaxError { + + public SpecialError(SpecialErrorBuilder builder) { + super(builder.getLocations(), builder.getMessage()); + } + } + + static class SpecialErrorBuilder extends GraphqlErrorBuilder { + + @Override + public SpecialError build() { + return new SpecialError(this); + } + } + + private void errorBuilderExample() { + GraphQLError err = GraphQLError.newError() + .message("direct") + .errorType(ErrorClassification.errorClassification("customClassification")) + .build(); + + SpecialError specialErr = new SpecialErrorBuilder().message("special").build(); + } + private DataFetcher createDataFetcher(FieldDefinition definition, Directive directive) { throw new UnsupportedOperationException("Not implemented"); } diff --git a/src/test/groovy/readme/ScalarExamples.java b/src/test/groovy/readme/ScalarExamples.java index ee46a76aaa..601d949d67 100644 --- a/src/test/groovy/readme/ScalarExamples.java +++ b/src/test/groovy/readme/ScalarExamples.java @@ -1,12 +1,16 @@ package readme; +import graphql.GraphQLContext; +import graphql.execution.CoercedVariables; import graphql.language.StringValue; +import graphql.language.Value; import graphql.schema.Coercing; import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; import graphql.schema.GraphQLScalarType; +import java.util.Locale; import java.util.regex.Pattern; @SuppressWarnings("unused") @@ -14,22 +18,26 @@ public class ScalarExamples { public static class EmailScalar { - public static final GraphQLScalarType EMAIL = new GraphQLScalarType("email", "A custom scalar that handles emails", new Coercing() { - @Override - public Object serialize(Object dataFetcherResult) { - return serializeEmail(dataFetcherResult); - } + public static final GraphQLScalarType EMAIL = GraphQLScalarType.newScalar() + .name("email") + .description("A custom scalar that handles emails") + .coercing(new Coercing() { + @Override + public Object serialize(Object dataFetcherResult, GraphQLContext graphQLContext, Locale locale) { + return serializeEmail(dataFetcherResult); + } - @Override - public Object parseValue(Object input) { - return parseEmailFromVariable(input); - } + @Override + public Object parseValue(Object input, GraphQLContext graphQLContext, Locale locale) { + return parseEmailFromVariable(input); + } - @Override - public Object parseLiteral(Object input) { - return parseEmailFromAstLiteral(input); - } - }); + @Override + public Object parseLiteral(Value input, CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { + return parseEmailFromAstLiteral(input); + } + }) + .build(); private static boolean looksLikeAnEmailAddress(String possibleEmailValue) { @@ -69,5 +77,4 @@ private static Object parseEmailFromAstLiteral(Object input) { } } - } diff --git a/src/test/groovy/readme/SchemaTransformExamples.java b/src/test/groovy/readme/SchemaTransformExamples.java new file mode 100644 index 0000000000..7037fac173 --- /dev/null +++ b/src/test/groovy/readme/SchemaTransformExamples.java @@ -0,0 +1,83 @@ +package readme; + +import graphql.Scalars; +import graphql.schema.DataFetcher; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.schema.SchemaTransformer; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import static graphql.util.TraversalControl.CONTINUE; + +@SuppressWarnings("ALL") +public class SchemaTransformExamples { + + GraphQLSchema schema; + + void trasnformSchema() { + GraphQLTypeVisitorStub visitor = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + GraphQLCodeRegistry.Builder codeRegistry = context.getVarFromParents(GraphQLCodeRegistry.Builder.class); + // we need to change __XXX introspection types to have directive extensions + if (someConditionalLogic(objectType)) { + GraphQLObjectType newObjectType = buildChangedObjectType(objectType, codeRegistry); + return changeNode(context, newObjectType); + } + return CONTINUE; + } + + private boolean someConditionalLogic(GraphQLObjectType objectType) { + // up to you to decide what causes a change, perhaps a directive is on the element + return objectType.hasDirective("specialDirective"); + } + + private GraphQLObjectType buildChangedObjectType(GraphQLObjectType objectType, GraphQLCodeRegistry.Builder codeRegistry) { + GraphQLFieldDefinition newField = GraphQLFieldDefinition.newFieldDefinition() + .name("newField").type(Scalars.GraphQLString).build(); + GraphQLObjectType newObjectType = objectType.transform(builder -> builder.field(newField)); + + DataFetcher newDataFetcher = dataFetchingEnvironment -> { + return "someValueForTheNewField"; + }; + FieldCoordinates coordinates = FieldCoordinates.coordinates(objectType.getName(), newField.getName()); + codeRegistry.dataFetcher(coordinates, newDataFetcher); + return newObjectType; + } + }; + GraphQLSchema newSchema = SchemaTransformer.transformSchema(schema, visitor); + } + + void example_commands() { + + GraphQLSchemaElement updatedElement = null; + GraphQLSchemaElement newElement = null; + + GraphQLTypeVisitorStub visitor = new GraphQLTypeVisitorStub() { + @Override + public TraversalControl visitGraphQLObjectType(GraphQLObjectType objectType, TraverserContext context) { + + // changes the current element in the schema + changeNode(context, updatedElement); + + // inserts a new element after the current one in the schema + insertAfter(context, newElement); + + // inserts a new element before the current one in teh schema + insertBefore(context, newElement); + + // deletes the current element from the schema + deleteNode(context); + + + return CONTINUE; + } + }; + } +} diff --git a/src/test/java/benchmark/AddError.java b/src/test/java/benchmark/AddError.java deleted file mode 100644 index efd123acde..0000000000 --- a/src/test/java/benchmark/AddError.java +++ /dev/null @@ -1,38 +0,0 @@ -package benchmark; - -import graphql.execution.ExecutionContext; -import graphql.execution.ExecutionContextBuilder; -import graphql.execution.ExecutionId; -import graphql.execution.ExecutionPath; -import graphql.schema.idl.errors.SchemaMissingError; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; - -import java.util.Collections; - -@State(Scope.Benchmark) -public class AddError { - - private ExecutionContext context = new ExecutionContextBuilder() - .executionId(ExecutionId.generate()) - .build(); - - private volatile int x = 0; - - @Benchmark - @BenchmarkMode(Mode.SingleShotTime) - @Warmup(iterations = 1, batchSize = 50000) - @Measurement(iterations = 1, batchSize = 5000) - public ExecutionContext benchMarkAddError() { - context.addError( - new SchemaMissingError(), - ExecutionPath.fromList(Collections.singletonList(x++)) - ); - return context; - } -} diff --git a/src/test/java/graphql/schema/scalars/JsonScalar.java b/src/test/java/graphql/schema/scalars/JsonScalar.java new file mode 100644 index 0000000000..fe2decfb98 --- /dev/null +++ b/src/test/java/graphql/schema/scalars/JsonScalar.java @@ -0,0 +1,19 @@ +package graphql.schema.scalars; + +import graphql.Internal; +import graphql.schema.GraphQLScalarType; + +import static graphql.schema.scalars.ObjectScalar.OBJECT_COERCING; + +/** + * Copied from ExtendedScalars to avoid the circular dependency but used for testing as an example of a complex scalar + */ +@Internal +public class JsonScalar { + + public static GraphQLScalarType JSON_SCALAR = GraphQLScalarType.newScalar() + .name("JSON") + .description("A JSON scalar") + .coercing(OBJECT_COERCING) + .build(); +} diff --git a/src/test/java/graphql/schema/scalars/ObjectScalar.java b/src/test/java/graphql/schema/scalars/ObjectScalar.java new file mode 100644 index 0000000000..6182c68e2e --- /dev/null +++ b/src/test/java/graphql/schema/scalars/ObjectScalar.java @@ -0,0 +1,178 @@ +package graphql.schema.scalars; + +import com.google.common.collect.Maps; +import graphql.Assert; +import graphql.Internal; +import graphql.language.ArrayValue; +import graphql.language.BooleanValue; +import graphql.language.EnumValue; +import graphql.language.FloatValue; +import graphql.language.IntValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.StringValue; +import graphql.language.Value; +import graphql.language.VariableReference; +import graphql.schema.Coercing; +import graphql.schema.CoercingParseLiteralException; +import graphql.schema.CoercingParseValueException; +import graphql.schema.CoercingSerializeException; +import graphql.schema.GraphQLScalarType; +import graphql.util.FpKit; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static graphql.language.ObjectField.newObjectField; + +/** + * Copied from ExtendedScalars to avoid the circular dependency but used for testing as an example of a complex scalar + */ +@Internal +public class ObjectScalar { + + static Coercing OBJECT_COERCING = new Coercing() { + @Override + public Object serialize(Object input) throws CoercingSerializeException { + return input; + } + + @Override + public Object parseValue(Object input) throws CoercingParseValueException { + return input; + } + + @Override + public Object parseLiteral(Object input) throws CoercingParseLiteralException { + // on purpose - object scalars can be null + //noinspection ConstantConditions + return parseLiteral(input, Collections.emptyMap()); + } + + @Override + public Object parseLiteral(Object input, Map variables) throws CoercingParseLiteralException { + if (!(input instanceof Value)) { + throw new CoercingParseLiteralException( + "Expected AST type 'Value' but was '" + typeName(input) + "'." + ); + } + if (input instanceof NullValue) { + return null; + } + if (input instanceof FloatValue) { + return ((FloatValue) input).getValue(); + } + if (input instanceof StringValue) { + return ((StringValue) input).getValue(); + } + if (input instanceof IntValue) { + return ((IntValue) input).getValue(); + } + if (input instanceof BooleanValue) { + return ((BooleanValue) input).isValue(); + } + if (input instanceof EnumValue) { + return ((EnumValue) input).getName(); + } + if (input instanceof VariableReference) { + String varName = ((VariableReference) input).getName(); + return variables.get(varName); + } + if (input instanceof ArrayValue) { + List values = ((ArrayValue) input).getValues(); + return values.stream() + .map(v -> parseLiteral(v, variables)) + .collect(Collectors.toList()); + } + if (input instanceof ObjectValue) { + List values = ((ObjectValue) input).getObjectFields(); + Map parsedValues = Maps.newLinkedHashMapWithExpectedSize(values.size()); + values.forEach(fld -> { + Object parsedValue = parseLiteral(fld.getValue(), variables); + parsedValues.put(fld.getName(), parsedValue); + }); + return parsedValues; + } + return Assert.assertShouldNeverHappen("We have covered all Value types"); + } + + @Override + public Value valueToLiteral(Object input) { + if (input == null) { + return NullValue.newNullValue().build(); + } + if (input instanceof String) { + return new StringValue((String) input); + } + if (input instanceof Float) { + return new FloatValue(BigDecimal.valueOf((Float) input)); + } + if (input instanceof Double) { + return new FloatValue(BigDecimal.valueOf((Double) input)); + } + if (input instanceof BigDecimal) { + return new FloatValue((BigDecimal) input); + } + if (input instanceof BigInteger) { + return new IntValue((BigInteger) input); + } + if (input instanceof Number) { + long l = ((Number) input).longValue(); + return new IntValue(BigInteger.valueOf(l)); + } + if (input instanceof Boolean) { + return new BooleanValue((Boolean) input); + } + if (FpKit.isIterable(input)) { + return handleIterable(FpKit.toIterable(input)); + } + if (input instanceof Map) { + return handleMap((Map) input); + } + throw new UnsupportedOperationException("The ObjectScalar cant handle values of type : " + input.getClass()); + } + + private Value handleMap(Map map) { + ObjectValue.Builder builder = ObjectValue.newObjectValue(); + for (Map.Entry entry : map.entrySet()) { + String name = String.valueOf(entry.getKey()); + Value value = valueToLiteral(entry.getValue()); + + builder.objectField( + newObjectField().name(name).value(value).build() + ); + } + return builder.build(); + } + + @SuppressWarnings("rawtypes") + private Value handleIterable(Iterable input) { + List values = new ArrayList<>(); + for (Object val : input) { + values.add(valueToLiteral(val)); + } + return ArrayValue.newArrayValue().values(values).build(); + } + + String typeName(Object input) { + if (input == null) { + return "null"; + } + return input.getClass().getSimpleName(); + } + }; + + + public static GraphQLScalarType OBJECT_SCALAR = GraphQLScalarType.newScalar() + .name("Object") + .description("An object scalar") + .coercing(OBJECT_COERCING) + .build(); +} diff --git a/src/test/java/reproductions/SubscriptionReproduction.java b/src/test/java/reproductions/SubscriptionReproduction.java new file mode 100644 index 0000000000..47bde26e74 --- /dev/null +++ b/src/test/java/reproductions/SubscriptionReproduction.java @@ -0,0 +1,202 @@ +package reproductions; + +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.execution.SubscriptionExecutionStrategy; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; + +import java.util.Map; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Supplier; + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * Related to ... + *

      + * This reproduction is to see what's happening with Subscriptions and whether they keep their + * order when values are async. + */ +public class SubscriptionReproduction { + public static void main(String[] args) { + new SubscriptionReproduction().run(args); + } + + private void run(String[] args) { + + boolean ordered = args.length > 0 && "ordered".equals(args[0]); + + GraphQL graphQL = mkGraphQl(); + String query = "subscription MySubscription {\n" + + " searchVideo {\n" + + " id\n" + + " name\n" + + " lastEpisode\n" + + " isFavorite\n" + + " }\n" + + "}"; + + ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).graphQLContext( + b -> b.put(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED, ordered) + ).build(); + ExecutionResult executionResult = graphQL.execute(executionInput); + Publisher> publisher = executionResult.getData(); + + DeathEater eater = new DeathEater(); + eater.eat(publisher); + } + + private GraphQL mkGraphQl() { + String sdl = "type Query { f : ID }" + + "type Subscription {" + + " searchVideo : VideoSearch" + + "}" + + "type VideoSearch {" + + " id : ID" + + " name : String" + + " lastEpisode : String" + + " isFavorite : Boolean" + + "}"; + RuntimeWiring runtimeWiring = newRuntimeWiring() + .type(newTypeWiring("Subscription") + .dataFetcher("searchVideo", this::mkFluxDF) + ) + .type(newTypeWiring("VideoSearch") + .dataFetcher("name", this::nameDF) + .dataFetcher("isFavorite", this::isFavoriteDF) + .dataFetcher("lastEpisode", this::lastEpisode) + ) + .build(); + + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema( + new SchemaParser().parse(sdl), runtimeWiring + ); + return GraphQL.newGraphQL(schema).build(); + } + + private CompletableFuture> mkFluxDF(DataFetchingEnvironment env) { + // async deliver of the publisher with random snoozing between values + Supplier> fluxSupplier = () -> Flux.generate(() -> 0, (counter, sink) -> { + sink.next(mkValue(counter)); + snooze(rand(10, 100)); + if (counter == 10) { + sink.complete(); + } + return counter + 1; + }); + return CompletableFuture.supplyAsync(fluxSupplier); + } + + private Object isFavoriteDF(DataFetchingEnvironment env) { + // async deliver of the isFavorite property with random delay + return CompletableFuture.supplyAsync(() -> { + Integer counter = getCounter(env.getSource()); + return counter % 2 == 0; + }); + } + + private Object lastEpisode(DataFetchingEnvironment env) { + // Mono-based async property that uses CF as the interface + return Mono.fromCallable(() -> { + Integer counter = getCounter(env.getSource()); + return "episode-" + Thread.currentThread().getName() + "for" + counter; + }) + .publishOn(Schedulers.boundedElastic()) + .toFuture(); + } + + private Object nameDF(DataFetchingEnvironment env) { + // async deliver of the isFavorite property with random delay + return CompletableFuture.supplyAsync(() -> { + Integer counter = getCounter(env.getSource()); + return "name" + counter; + }); + } + + private static Integer getCounter(Map video) { + Integer counter = (Integer) video.getOrDefault("counter", 0); + snooze(rand(100, 500)); + return counter; + } + + private @NonNull Object mkValue(Integer counter) { + // name and isFavorite are future values via DFs + return Map.of( + "counter", counter, + "id", String.valueOf(counter) // immediate value + ); + } + + + private static void snooze(int ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + static Random rn = new Random(); + + private static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min; + } + + public static class DeathEater implements Subscriber { + private Subscription subscription; + private final AtomicBoolean done = new AtomicBoolean(); + + public boolean isDone() { + return done.get(); + } + + @Override + public void onSubscribe(Subscription subscription) { + this.subscription = subscription; + System.out.println("onSubscribe"); + subscription.request(10); + } + + @Override + public void onNext(Object o) { + System.out.println("\tonNext : " + o); + subscription.request(1); + } + + @Override + public void onError(Throwable throwable) { + System.out.println("onError"); + throwable.printStackTrace(System.err); + done.set(true); + } + + @Override + public void onComplete() { + System.out.println("complete"); + done.set(true); + } + + public void eat(Publisher publisher) { + publisher.subscribe(this); + while (!this.isDone()) { + snooze(2); + } + + } + } +} diff --git a/src/test/resources/dataLoaderPerformanceSchema.graphqls b/src/test/resources/dataLoaderPerformanceSchema.graphqls new file mode 100644 index 0000000000..1c1da310ec --- /dev/null +++ b/src/test/resources/dataLoaderPerformanceSchema.graphqls @@ -0,0 +1,17 @@ +type Query { + owners: [Owner] +} + +type Owner { + id: ID! + name: String + pets: [Pet] +} + +type Pet { + id: ID! + name: String + owner: Owner + friends: [Pet] +} + diff --git a/src/test/resources/diff/schema_ABaseLine.graphqls b/src/test/resources/diff/schema_ABaseLine.graphqls index 7444225c96..59806923f1 100644 --- a/src/test/resources/diff/schema_ABaseLine.graphqls +++ b/src/test/resources/diff/schema_ABaseLine.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_changed_field_arguments.graphqls b/src/test/resources/diff/schema_changed_field_arguments.graphqls index 43c919dd33..e8c0c260fe 100644 --- a/src/test/resources/diff/schema_changed_field_arguments.graphqls +++ b/src/test/resources/diff/schema_changed_field_arguments.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -23,7 +24,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_changed_input_object_fields.graphqls b/src/test/resources/diff/schema_changed_input_object_fields.graphqls index 7d6af1b074..d7d026ffa8 100644 --- a/src/test/resources/diff/schema_changed_input_object_fields.graphqls +++ b/src/test/resources/diff/schema_changed_input_object_fields.graphqls @@ -4,7 +4,8 @@ schema { } type Query { - being(id : ID, type : String = "wizard") : Being + #being(id : ID, type : String = "wizard") : Being + being(id : ID, type : String, newArg : String!) : Being beings(type : String) : [Being] wizards : [Istari] @@ -12,6 +13,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,9 +24,14 @@ type Mutation { } input Questor { + #beingID : ID! beingID : ID + + #queryTarget : String queryTarget : Int - nestedInput : NestedInput + + #nestedInput : NestedInput + nestedInput : NestedInput! newMandatoryField : String! } diff --git a/src/test/resources/diff/schema_changed_nested_input_object_fields.graphqls b/src/test/resources/diff/schema_changed_nested_input_object_fields.graphqls index 1ac57e90c5..d3009f7db7 100644 --- a/src/test/resources/diff/schema_changed_nested_input_object_fields.graphqls +++ b/src/test/resources/diff/schema_changed_nested_input_object_fields.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_changed_object_fields.graphqls b/src/test/resources/diff/schema_changed_object_fields.graphqls index d7a86306de..4c5f273dca 100644 --- a/src/test/resources/diff/schema_changed_object_fields.graphqls +++ b/src/test/resources/diff/schema_changed_object_fields.graphqls @@ -4,8 +4,7 @@ schema { } type Query { - #being(id : ID, type : String = "wizard") : Being - being(id : ID, type : String, newArg : String!) : Being + being(id : ID, type : String = "wizard") : Being #beings(type : String) : [Being] beings(type : String) : Being @@ -18,6 +17,9 @@ type Query { #allCharacters : [Character!] @deprecated(reason: "no longer supported") allCharacters : [Character!] + #allCharactersByTemperament : [[Character]] + allCharactersByTemperament : [[Character!]]! + #customScalar : CustomScalar customScalar : [CustomScalar]! } @@ -28,7 +30,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } @@ -41,7 +43,8 @@ scalar CustomScalar interface Being { - id : ID + #id : ID + id : ID! name : String nameInQuenyan : String invitedBy(id : ID) : Being @@ -49,7 +52,8 @@ interface Being { type Ainur implements Being { - id : ID + #id : ID + id : ID! name : String nameInQuenyan : String invitedBy(id : ID) : Being @@ -58,17 +62,21 @@ type Ainur implements Being { type Istari implements Being { - id : ID + #id : ID + id : ID! name : String nameInQuenyan : String invitedBy(id : ID) : Being colour : String - temperament : Temperament! + + #temperament : Temperament! + temperament : Temperament } type Deity implements Being { - id : ID + #id : ID + id : ID! name : String nameInQuenyan : String invitedBy(id : ID) : Being diff --git a/src/test/resources/diff/schema_changed_type_kind.graphqls b/src/test/resources/diff/schema_changed_type_kind.graphqls index 5107c3ed39..14e85658f9 100644 --- a/src/test/resources/diff/schema_changed_type_kind.graphqls +++ b/src/test/resources/diff/schema_changed_type_kind.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_dangerous_changes.graphqls b/src/test/resources/diff/schema_dangerous_changes.graphqls index cb910f80c0..1fa8b8808e 100644 --- a/src/test/resources/diff/schema_dangerous_changes.graphqls +++ b/src/test/resources/diff/schema_dangerous_changes.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_deprecated_fields_new.graphqls b/src/test/resources/diff/schema_deprecated_fields_new.graphqls index b3d92e6d15..53dc321ede 100644 --- a/src/test/resources/diff/schema_deprecated_fields_new.graphqls +++ b/src/test/resources/diff/schema_deprecated_fields_new.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] @deprecated allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] @deprecated(reason: "remove all Character references") customScalar : CustomScalar @deprecated(reason: "because") } diff --git a/src/test/resources/diff/schema_interface_fields_missing.graphqls b/src/test/resources/diff/schema_interface_fields_missing.graphqls index b8e0f043fb..15f45aacdf 100644 --- a/src/test/resources/diff/schema_interface_fields_missing.graphqls +++ b/src/test/resources/diff/schema_interface_fields_missing.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_missing_enum_value.graphqls b/src/test/resources/diff/schema_missing_enum_value.graphqls index f69185f429..7dcf130ab5 100644 --- a/src/test/resources/diff/schema_missing_enum_value.graphqls +++ b/src/test/resources/diff/schema_missing_enum_value.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_missing_field_arguments.graphqls b/src/test/resources/diff/schema_missing_field_arguments.graphqls index 40c5ad21e9..1657a86eed 100644 --- a/src/test/resources/diff/schema_missing_field_arguments.graphqls +++ b/src/test/resources/diff/schema_missing_field_arguments.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -24,7 +25,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_missing_input_object_fields.graphqls b/src/test/resources/diff/schema_missing_input_object_fields.graphqls index 543e4f4048..c06aa426d4 100644 --- a/src/test/resources/diff/schema_missing_input_object_fields.graphqls +++ b/src/test/resources/diff/schema_missing_input_object_fields.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! #queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_missing_object_fields.graphqls b/src/test/resources/diff/schema_missing_object_fields.graphqls index d033ac0a1d..073de2507d 100644 --- a/src/test/resources/diff/schema_missing_object_fields.graphqls +++ b/src/test/resources/diff/schema_missing_object_fields.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_missing_operation.graphqls b/src/test/resources/diff/schema_missing_operation.graphqls index 9e83a2eb6a..7b4ac24077 100644 --- a/src/test/resources/diff/schema_missing_operation.graphqls +++ b/src/test/resources/diff/schema_missing_operation.graphqls @@ -11,12 +11,13 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_missing_union_members.graphqls b/src/test/resources/diff/schema_missing_union_members.graphqls index dd6ea96050..51c3d2ea6a 100644 --- a/src/test/resources/diff/schema_missing_union_members.graphqls +++ b/src/test/resources/diff/schema_missing_union_members.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/diff/schema_with_additional_field.graphqls b/src/test/resources/diff/schema_with_additional_field.graphqls index 2001ba2f75..1e9c4daa1c 100644 --- a/src/test/resources/diff/schema_with_additional_field.graphqls +++ b/src/test/resources/diff/schema_with_additional_field.graphqls @@ -12,6 +12,7 @@ type Query { deities : [Deity] allCharacters : [Character!] @deprecated(reason: "no longer supported") + allCharactersByTemperament : [[Character]] customScalar : CustomScalar } @@ -22,7 +23,7 @@ type Mutation { } input Questor { - beingID : ID + beingID : ID! queryTarget : String nestedInput : NestedInput } diff --git a/src/test/resources/extra-large-schema-1-query.graphql b/src/test/resources/extra-large-schema-1-query.graphql new file mode 100644 index 0000000000..6e61f3b233 --- /dev/null +++ b/src/test/resources/extra-large-schema-1-query.graphql @@ -0,0 +1,2761 @@ +query extra_large { + jira { + epicLinkFieldKey + screenIdByIssueKey(issueKey: "GJ-1") + issueByKey(key: "GJ-1", cloudId: "abc123") { + issueId + fields { + edges { + node { + __typename + ... on JiraAffectedServicesField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedAffectedServicesConnection { + totalCount + edges { + node { + serviceId + } + } + } + affectedServices { + totalCount + edges { + node { + serviceId + } + } + } + searchUrl + } + ... on JiraAssetField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedAssetsConnection { + totalCount + edges { + node { + appKey + originId + serializedOrigin + value + } + } + } + searchUrl + } + ... on JiraCMDBField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + isMulti + searchUrl + selectedCmdbObjectsConnection { + totalCount + edges { + node { + id + objectGlobalId + objectId + workspaceId + label + } + } + } + attributesIncludedInAutoCompleteSearch + } + ... on JiraCascadingSelectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + cascadingOption { + parentOptionValue { + id + optionId + value + isDisabled + } + childOptionValue { + id + optionId + value + isDisabled + } + } + cascadingOptions { + totalCount + edges { + node { + parentOptionValue { + id + optionId + value + isDisabled + } + childOptionValues { + id + optionId + value + isDisabled + } + } + } + } + } + ... on JiraCheckboxesField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + fieldOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + } + ... on JiraColorField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + color { + id + colorKey + } + } + ... on JiraComponentsField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedComponentsConnection { + totalCount + edges { + node { + id + componentId + name + description + } + } + } + components { + totalCount + edges { + node { + id + componentId + name + description + } + } + } + } + ... on JiraConnectMultipleSelectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + fieldOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + searchUrl + } + ... on JiraConnectNumberField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + number + } + ... on JiraConnectRichTextField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + richText { + plainText + adfValue { + json + } + } + renderer + } + ... on JiraConnectSingleSelectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + fieldOption { + id + optionId + value + isDisabled + } + fieldOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + searchUrl + } + ... on JiraConnectTextField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + text + } + ... on JiraDatePickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + date + } + ... on JiraDateTimePickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + dateTime + } + ... on JiraEpicLinkField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + epic { + id + issueId + name + key + summary + color + done + } + epics { + totalCount + edges { + node { + id + issueId + name + key + summary + color + done + } + } + } + searchUrl + } + ... on JiraFlagField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + flag { + isFlagged + } + } + ... on JiraForgeGroupField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedGroup { + id + groupId + name + } + groups { + totalCount + edges { + node { + id + groupId + name + } + } + } + searchUrl + renderer + } + ... on JiraForgeGroupsField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + selectedGroupsConnection { + edges { + node { + id + groupId + name + } + } + } + renderer + } + ... on JiraForgeNumberField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + number + renderer + } + ... on JiraForgeObjectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + object + renderer + } + ... on JiraForgeStringField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + text + renderer + } + ... on JiraForgeStringsField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedLabelsConnection { + totalCount + edges { + node { + labelId + name + } + } + } + labels { + totalCount + edges { + node { + labelId + name + } + } + } + renderer + searchUrl + } + ... on JiraForgeUserField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + user { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + searchUrl + } + ... on JiraIssueRestrictionField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedRolesConnection { + totalCount + edges { + node { + id + roleId + name + description + } + } + } + roles { + totalCount + edges { + node { + id + roleId + name + description + } + } + } + searchUrl + } + ... on JiraIssueTypeField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + issueType { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + issueTypes { + edges { + node { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + } + } + } + ... on JiraLabelsField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedLabelsConnection { + totalCount + edges { + node { + labelId + name + } + } + } + labels { + totalCount + edges { + node { + labelId + name + } + } + } + searchUrl + } + ... on JiraMultipleGroupPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedGroupsConnection { + totalCount + edges { + node { + groupId + name + id + } + } + } + groups { + totalCount + edges { + node { + id + groupId + name + } + } + } + searchUrl + } + ... on JiraMultipleSelectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + fieldOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + searchUrl + } + ... on JiraMultipleSelectUserPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedUsersConnection { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + users { + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + searchUrl + } + ... on JiraMultipleVersionPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedVersionsConnection { + totalCount + edges { + node { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + } + } + } + versions { + totalCount + edges { + node { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + } + } + } + } + ... on JiraNumberField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + number + isStoryPointField + } + ... on JiraParentIssueField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + parentIssue { + id + issueId + key + webUrl + fieldsById(ids: ["issuetype ", "project ", "summary "]) { + edges { + node { + __typename + ... on JiraIssueTypeField { + fieldId + name + type + description + issueType { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + issueTypes { + edges { + node { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + } + } + } + ... on JiraProjectField { + fieldId + name + type + description + project { + projectId + key + name + avatar { + medium + } + projectType + status + projectStyle + id + } + } + ... on JiraSingleLineTextField { + fieldId + name + type + description + text + } + id + } + } + } + } + } + ... on JiraPeopleField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedUsersConnection { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + users { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + isMulti + searchUrl + } + ... on JiraPriorityField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + priority { + priorityId + name + iconUrl + color + id + } + priorities { + edges { + node { + priorityId + name + iconUrl + color + id + } + } + } + } + ... on JiraProjectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + project { + projectId + key + name + avatar { + medium + } + projectType + status + projectStyle + id + } + } + ... on JiraRadioSelectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedOption { + id + optionId + value + isDisabled + } + fieldOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + } + ... on JiraResolutionField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + resolution { + id + resolutionId + name + description + } + resolutions { + totalCount + edges { + node { + id + resolutionId + name + description + } + } + } + } + ... on JiraRichTextField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + richText { + plainText + adfValue { + json + } + } + renderer + } + ... on JiraSecurityLevelField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + securityLevel { + id + name + securityId + description + } + } + ... on JiraServiceManagementDateTimeField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + dateTime + } + ... on JiraServiceManagementIncidentLinkingField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + incident { + hasLinkedIncidents + } + } + ... on JiraServiceManagementMultipleSelectUserPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedUsersConnection { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + users { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + searchUrl + } + ... on JiraServiceManagementOrganizationField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedOrganizationsConnection { + totalCount + edges { + node { + organizationId + organizationName + domain + } + } + } + searchUrl + } + ... on JiraServiceManagementPeopleField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedUsersConnection { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + users { + totalCount + edges { + node { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + } + isMulti + searchUrl + } + ... on JiraServiceManagementRequestFeedbackField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + feedback { + rating + } + } + ... on JiraServiceManagementRequestLanguageField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + language { + languageCode + displayName + } + languages { + languageCode + displayName + } + } + ... on JiraServiceManagementRequestTypeField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + requestType { + id + requestTypeId + name + key + description + helpText + issueType { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + } + portalId + avatar { + xsmall + small + medium + large + } + practices { + key + } + } + requestTypes { + totalCount + edges { + node { + id + requestTypeId + name + key + description + helpText + issueType { + id + name + description + avatar { + xsmall + small + medium + large + } + } + portalId + avatar { + xsmall + small + medium + large + } + practices { + key + } + } + } + } + } + ... on JiraServiceManagementRespondersField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + respondersConnection { + edges { + node { + __typename + ... on JiraServiceManagementUserResponder { + user { + __typename + picture + name + } + } + ... on JiraServiceManagementTeamResponder { + teamId + teamName + } + } + } + } + } + ... on JiraSingleGroupPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedGroup { + id + groupId + name + } + groups { + totalCount + edges { + node { + id + groupId + name + } + } + } + searchUrl + } + ... on JiraSingleLineTextField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + text + } + ... on JiraSingleSelectField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + fieldOption { + id + optionId + value + isDisabled + } + fieldOptions { + totalCount + edges { + node { + id + optionId + value + isDisabled + } + } + } + searchUrl + } + ... on JiraSingleSelectUserPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + user { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + searchUrl + } + ... on JiraSingleVersionPickerField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + version { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + } + versions { + totalCount + edges { + node { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + } + } + } + } + ... on JiraSprintField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedSprintsConnection { + totalCount + edges { + node { + id + sprintId + name + state + boardName + startDate + endDate + completionDate + goal + } + } + } + sprints { + totalCount + edges { + node { + id + sprintId + name + state + boardName + startDate + endDate + completionDate + goal + } + } + } + searchUrl + } + ... on JiraStatusField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + status { + id + name + description + statusId + statusCategory { + id + statusCategoryId + key + name + colorName + } + } + } + ... on JiraTeamField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedTeam { + id + teamId + name + avatar { + xsmall + small + medium + large + } + members { + totalCount + edges { + node { + __typename + } + } + } + } + teams { + totalCount + edges { + node { + id + teamId + name + avatar { + xsmall + small + medium + large + } + members { + totalCount + edges { + node { + __typename + } + } + } + } + } + } + searchUrl + } + ... on JiraTeamViewField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + selectedTeam { + jiraSuppliedVisibility + jiraSuppliedName + jiraSuppliedId + jiraSuppliedTeamId + jiraSuppliedAvatar { + xsmall + small + medium + large + } + } + searchUrl + } + ... on JiraTimeTrackingField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + originalEstimate { + timeInSeconds + } + remainingEstimate { + timeInSeconds + } + timeSpent { + timeInSeconds + } + timeTrackingSettings { + isJiraConfiguredTimeTrackingEnabled + workingHoursPerDay + workingDaysPerWeek + defaultFormat + defaultUnit + } + } + ... on JiraUrlField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + url + } + ... on JiraVotesField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + vote { + hasVoted + count + } + } + ... on JiraWatchesField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + watch { + isWatching + count + } + } + ... on JiraForgeDatetimeField { + ... on JiraIssueField { + __isJiraIssueField: __typename + ... on JiraIssueFieldConfiguration { + __isJiraIssueFieldConfiguration: __typename + fieldConfig { + isRequired + isEditable + } + } + ... on JiraUserIssueFieldConfiguration { + __isJiraUserIssueFieldConfiguration: __typename + userFieldConfig { + isPinned + } + } + } + fieldId + name + type + description + dateTime + renderer + } + id + } + } + } + childIssues { + __typename + ... on JiraChildIssuesWithinLimit { + issues { + totalCount + edges { + node { + id + key + issueId + webUrl + fieldsById( + ids: [ + "assignee " + "created " + "issuetype " + "priority " + "status " + "summary " + "timetracking " + "updated " + ] + ) { + edges { + node { + __typename + ... on JiraIssueTypeField { + fieldId + name + type + description + issueType { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + issueTypes { + edges { + node { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + } + } + } + ... on JiraSingleLineTextField { + fieldId + name + type + description + text + } + ... on JiraPriorityField { + fieldId + name + type + description + priority { + priorityId + name + iconUrl + color + id + } + priorities { + edges { + node { + priorityId + name + iconUrl + color + id + } + } + } + } + ... on JiraStatusField { + fieldId + name + type + description + status { + id + name + description + statusId + statusCategory { + id + statusCategoryId + key + name + colorName + } + } + } + ... on JiraSingleSelectUserPickerField { + fieldId + name + type + description + user { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + searchUrl + } + ... on JiraTimeTrackingField { + fieldId + name + type + description + originalEstimate { + timeInSeconds + } + remainingEstimate { + timeInSeconds + } + timeSpent { + timeInSeconds + } + timeTrackingSettings { + isJiraConfiguredTimeTrackingEnabled + workingHoursPerDay + workingDaysPerWeek + defaultFormat + defaultUnit + } + } + ... on JiraDateTimePickerField { + fieldId + name + type + description + dateTime + } + ... on JiraDatePickerField { + fieldId + name + type + description + date + } + id + } + } + } + } + } + } + } + ... on JiraChildIssuesExceedingLimit { + search + } + } + issueLinks { + totalCount + edges { + node { + id + issueLinkId + relatedBy { + id + relationName + linkTypeId + linkTypeName + direction + } + issue { + id + issueId + key + webUrl + fieldsById( + ids: [ + "assignee " + "issuetype " + "priority " + "status " + "summary " + ] + ) { + edges { + node { + __typename + ... on JiraStatusField { + fieldId + name + type + description + status { + id + name + description + statusId + statusCategory { + id + statusCategoryId + key + name + colorName + } + } + } + ... on JiraPriorityField { + fieldId + name + type + description + priority { + priorityId + name + iconUrl + color + id + } + priorities { + edges { + node { + priorityId + name + iconUrl + color + id + } + } + } + } + ... on JiraIssueTypeField { + fieldId + name + type + description + issueType { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + issueTypes { + edges { + node { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + } + } + } + ... on JiraSingleLineTextField { + fieldId + name + type + description + text + } + ... on JiraSingleSelectUserPickerField { + fieldId + name + type + description + searchUrl + user { + __typename + __isUser: __typename + accountId + accountStatus + name + picture + ... on AtlassianAccountUser { + email + zoneinfo + locale + } + } + } + id + } + } + } + } + } + } + } + id + } + } +} \ No newline at end of file diff --git a/src/test/resources/extra-large-schema-1.graphqls b/src/test/resources/extra-large-schema-1.graphqls new file mode 100644 index 0000000000..0d32ac9cca --- /dev/null +++ b/src/test/resources/extra-large-schema-1.graphqls @@ -0,0 +1,15360 @@ +""" +Represents an affected service entity for a Jira Issue. +AffectedService provides context on what has been changed. +""" +type JiraAffectedService { + """ + The ID of the affected service. E.g. ari:cloud:graph::service//. + """ + serviceId: ID! + """ + The name of the affected service. E.g. Jira. + """ + name: String +} + +""" +The connection type for JiraAffectedService. +""" +type JiraAffectedServiceConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraAffectedServiceEdge] +} + +""" +An edge in a JiraAffectedService connection. +""" +type JiraAffectedServiceEdge { + """ + The node at the edge. + """ + node: JiraAffectedService + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents an approval that is completed. +""" +type JiraServiceManagementCompletedApproval implements Node { + """ + ID of the completed approval. + """ + id: ID! + """ + Name of the approval that has been provided. + """ + name: String + """ + Outcome of the approval, based on the approvals provided by all approvers. + """ + finalDecision: JiraServiceManagementApprovalDecisionResponseType + """ + Detailed list of the users who responded to the approval. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + approvers( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementApproverConnection + """ + Date the approval was created. + """ + createdDate: DateTime + """ + Date the approval was completed. + """ + completedDate: DateTime + """ + Status details in which the approval is applicable. + """ + status: JiraServiceManagementApprovalStatus +} + +""" +The connection type for JiraServiceManagementCompletedApproval. +""" +type JiraServiceManagementCompletedApprovalConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementCompletedApprovalEdge] +} + +""" +An edge in a JiraServiceManagementCompletedApproval connection. +""" +type JiraServiceManagementCompletedApprovalEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementCompletedApproval + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraServiceManagementApprover. +""" +type JiraServiceManagementApproverConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementApproverEdge] +} + +""" +An edge in a JiraServiceManagementApprover connection. +""" +type JiraServiceManagementApproverEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementApprover + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents an approval that is still active. +""" +type JiraServiceManagementActiveApproval implements Node { + """ + ID of the active approval. + """ + id: ID! + """ + Name of the approval being sought. + """ + name: String + """ + Outcome of the approval, based on the approvals provided by all approvers. + """ + finalDecision: JiraServiceManagementApprovalDecisionResponseType + """ + Detailed list of the users who responded to the approval with a decision. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + approvers( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementApproverConnection + """ + Detailed list of the users who are excluded to approve the approval. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + excludedApprovers( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraUserConnection + """ + Indicates whether the user making the request is one of the approvers and can respond to the approval (true) or not (false). + """ + canAnswerApproval: Boolean + """ + List of the users' decisions. Does not include undecided users. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + decisions( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementDecisionConnection + """ + Date the approval was created. + """ + createdDate: DateTime + """ + Configurations of the approval including the approval condition and approvers configuration. + There is a maximum limit of how many configurations an active approval can have. + """ + configurations: [JiraServiceManagementApprovalConfiguration] + """ + Status details of the approval. + """ + status: JiraServiceManagementApprovalStatus + """ + Approver principals can be a connection of users or groups that may decide on an approval. + The list includes undecided members. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + approverPrincipals( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementApproverPrincipalConnection + """ + The number of approvals needed to complete. + """ + pendingApprovalCount: Int + """ + Active Approval state, can it be achieved or not. + """ + approvalState: JiraServiceManagementApprovalState +} + +""" +The connection type for JiraServiceManagementDecision. +""" +type JiraServiceManagementDecisionConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementDecisionEdge] +} + +""" +An edge in a JiraServiceManagementDecision connection. +""" +type JiraServiceManagementDecisionEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementDecision + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraServiceManagementApproverPrincipal. +""" +type JiraServiceManagementApproverPrincipalConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementApproverPrincipalEdge] +} + +""" +An edge in a JiraServiceManagementApproverPrincipal connection. +""" +type JiraServiceManagementApproverPrincipalEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementApproverPrincipal + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Approver principals are either users or groups that may decide on an approval. +""" +union JiraServiceManagementApproverPrincipal = JiraServiceManagementUserApproverPrincipal | JiraServiceManagementGroupApproverPrincipal + + +""" +Contains information about the approvers when approver is a user. +""" +type JiraServiceManagementUserApproverPrincipal { + """ + A approver principal who's a user type + """ + user: User + """ + URL for the principal. + """ + jiraRest: URL +} +""" +The user and decision that approved the approval. +""" +type JiraServiceManagementApprover { + """ + Details of the User who is providing approval. + """ + approver: User + """ + Decision made by the approver. + """ + approverDecision: JiraServiceManagementApprovalDecisionResponseType +} + +""" +Represents the user and decision details. +""" +type JiraServiceManagementDecision { + """ + The user providing a decision. + """ + approver: User + """ + The decision made by the approver. + """ + approverDecision: JiraServiceManagementApprovalDecisionResponseType +} + +""" +Represents the possible decisions that can be made by an approver. +""" +enum JiraServiceManagementApprovalDecisionResponseType { + """ + Indicates that the decision is approved by the approver. + """ + approved + """ + Indicates that the decision is declined by the approver. + """ + declined + """ + Indicates that the decision is pending by the approver. + """ + pending +} + +""" +Represent whether approval can be achieved or not. +""" +enum JiraServiceManagementApprovalState { + """ + Indicates that approval can not be completed due to lack of approvers. + """ + INSUFFICIENT_APPROVERS + """ + Indicates that approval has sufficient user to complete. + """ + OK +} + +""" +Represents the configuration details of an approval. +""" +type JiraServiceManagementApprovalConfiguration { + """ + Contains information about approvers configuration. + There is a maximum number of fields that can be set for the approvers configuration. + """ + approversConfigurations: [JiraServiceManagementApproversConfiguration] + """ + Contains information about approval condition. + """ + condition: JiraServiceManagementApprovalCondition +} + +""" +Represents the configuration details of the users providing approval. +""" +type JiraServiceManagementApproversConfiguration { + """ + Approvers configuration type. E.g. custom_field. + """ + type: String + """ + The field's name configured for the approvers. Only set for type "field". + """ + fieldName: String + """ + The field's id configured for the approvers. + """ + fieldId: String +} + +""" +Represents the details of an approval condition. +""" +type JiraServiceManagementApprovalCondition { + """ + Condition type for approval. + """ + type: String + """ + Condition value for approval. + """ + value: String +} + +""" +Contains information about the approvers when approver is a group. +""" +type JiraServiceManagementGroupApproverPrincipal { + """ + A group identifier. + Note: Group identifiers are nullable. + """ + groupId: String + """ + Display name for a group. + """ + name: String + """ + This contains the number of members. + """ + memberCount: Int + """ + This contains the number of members that have approved a decision. + """ + approvedCount: Int +} + +""" +Represents details of the approval status. +""" +type JiraServiceManagementApprovalStatus { + """ + Status id of approval. + """ + id: String + """ + Status name of approval. E.g. Waiting for approval. + """ + name: String + """ + Status category Id of approval. + """ + categoryId: String +} +""" +Represents a single option value for an asset field. +""" +type JiraAsset { + """ + The app key, which should be the Connect app key. + This parameter is used to scope the originId. + """ + appKey: String + """ + The identifier of an asset. + This is the same identifier for the asset in its origin (external) system. + """ + originId: String + """ + The appKey + originId separated by a forward slash. + """ + serializedOrigin: String + """ + The appKey + originId separated by a forward slash. + """ + value: String +} + +""" +The connection type for JiraAsset. +""" +type JiraAssetConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraAssetEdge] +} + +""" +An edge in a JiraAsset connection. +""" +type JiraAssetEdge { + """ + The node at the edge. + """ + node: JiraAsset + """ + The cursor to this edge. + """ + cursor: String! +}""" +Deprecated type. Please use `JiraTeamView` instead. +""" +type JiraAtlassianTeam { + """ + The UUID of team. + """ + teamId: String + """ + The name of the team. + """ + name: String + """ + The avatar of the team. + """ + avatar: JiraAvatar +} + +""" +Deprecated type. +""" +type JiraAtlassianTeamConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraAtlassianTeamEdge] +} + +""" +Deprecated type. +""" +type JiraAtlassianTeamEdge { + """ + The node at the edge. + """ + node: JiraAtlassianTeam + """ + The cursor to this edge. + """ + cursor: String! +} +""" +An interface shared across all attachment types. +""" +interface JiraAttachment { + """ + Identifier for the attachment. + """ + attachmentId: String! + """ + User profile of the attachment author. + """ + author: User + """ + Date the attachment was created in seconds since the epoch. + """ + created: DateTime! + """ + Media Services file id of this Attachment, May be absent if the attachment has not yet been migrated to Media Services. + """ + mediaApiFileId: String + """ + The mimetype (also called content type) of the attachment. This may be {@code null}. + """ + mimeType: String + """ + Filename of the attachment. + """ + fileName: String + """ + Size of the attachment in bytes. + """ + fileSize: Long + """ + Parent name that this attachment is contained in e.g Issue, Field, Comment, Worklog. + """ + parentName: String + """ + Parent id that this attachment is contained in. + """ + parentId: String +} + +""" +Represents a Jira platform attachment. +""" +type JiraPlatformAttachment implements JiraAttachment & Node { + """ + Global identifier for the attachment + """ + id: ID! + """ + Identifier for the attachment. + """ + attachmentId: String! + """ + User profile of the attachment author. + """ + author: User + """ + Date the attachment was created in seconds since the epoch. + """ + created: DateTime! + """ + Media Services file id of this Attachment, May be absent if the attachment has not yet been migrated to Media Services. + """ + mediaApiFileId: String + """ + The mimetype (also called content type) of the attachment. This may be {@code null}. + """ + mimeType: String + """ + Filename of the attachment. + """ + fileName: String + """ + Size of the attachment in bytes. + """ + fileSize: Long + """ + Parent name that this attachment is contained in e.g Issue, Field, Comment, Worklog. + """ + parentName: String + """ + Parent id that this attachment is contained in. + """ + parentId: String +} + +""" +Represents an attachment within a JiraServiceManagement project. +""" +type JiraServiceManagementAttachment implements JiraAttachment & Node { + """ + Global identifier for the attachment + """ + id: ID! + """ + Identifier for the attachment. + """ + attachmentId: String! + """ + User profile of the attachment author. + """ + author: User + """ + Media Services file id of this Attachment, May be absent if the attachment has not yet been migrated to Media Services. + """ + mediaApiFileId: String + """ + Date the attachment was created in seconds since the epoch. + """ + created: DateTime! + """ + The mimetype (also called content type) of the attachment. This may be {@code null}. + """ + mimeType: String + """ + Filename of the attachment. + """ + fileName: String + """ + Size of the attachment in bytes. + """ + fileSize: Long + """ + Parent name that this attachment is contained in e.g Issue, Field, Comment, Worklog. + """ + parentName: String + """ + Parent id that this attachment is contained in. + """ + parentId: String + """ + If the parent for the JSM attachment is a comment, this represents the JSM visibility property associated with this comment. + """ + parentCommentVisibility: JiraServiceManagementCommentVisibility +} + +""" +The connection type for JiraAttachment. +""" +type JiraAttachmentConnection { + """ + The approximate count of items in the connection. + """ + indicativeCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraAttachmentEdge] +} + +""" +An edge in a JiraAttachment connection. +""" +type JiraAttachmentEdge { + """ + The node at the the edge. + """ + node: JiraAttachment + """ + The cursor to this edge. + """ + cursor: String! +} + +enum JiraAttachmentsPermissions { + "Allows the user to create atachments on the correspondig Issue." + CREATE_ATTACHMENTS, + "Allows the user to delete attachments on the corresponding Issue." + DELETE_OWN_ATTACHMENTS +} + +input JiraOrderDirection { + id: ID +} + +input JiraAttachmentsOrderField { + id: ID +} +""" +Represents the avatar size urls. +""" +type JiraAvatar { + """ + An extra-small avatar (16x16 pixels). + """ + xsmall: String + """ + A small avatar (24x24 pixels). + """ + small: String + """ + A medium avatar (32x32 pixels). + """ + medium: String + """ + A large avatar (48x48 pixels). + """ + large: String +} +""" +A union type representing childIssues available within a Jira Issue. +The *WithinLimit type is used for childIssues with a count that is within a limit specified by the server. +The *ExceedsLimit type is used for childIssues with a count that exceeds a limit specified by the server. +""" +union JiraChildIssues = JiraChildIssuesWithinLimit | JiraChildIssuesExceedingLimit + +""" +Represents childIssues with a count that is within the count limit set by the server. +""" +type JiraChildIssuesWithinLimit { + """ + Paginated list of childIssues within this Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + issues( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueConnection +} + +""" +Represents childIssues with a count that exceeds a limit set by the server. +""" +type JiraChildIssuesExceedingLimit { + """ + Search string to query childIssues when limit is exceeded. + """ + search: String +}""" +Jira Configuration Management Database. +""" +type JiraCmdbObject implements Node { + """ + Global identifier for the CMDB field. + """ + id: ID! + """ + Unique object id formed with `workspaceId`:`objectId`. + """ + objectGlobalId: String + """ + Unique id in the workspace of the CMDB object. + """ + objectId: String + """ + Workspace id of the CMDB object. + """ + workspaceId: String + """ + Label of the CMDB object. + """ + label: String + """ + The key associated with the CMDB object. + """ + objectKey: String + """ + The avatar associated with this CMDB object. + """ + avatar: JiraCmdbAvatar + """ + The CMDB object type. + """ + objectType: JiraCmdbObjectType + """ + Paginated list of attributes present on the CMDB object. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + attributes( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCmdbAttributeConnection + """ + The URL link for this CMDB object. + """ + webUrl: String +} + +""" +Represents a CMDB avatar. +""" +type JiraCmdbAvatar { + """ + The ID of the CMDB avatar. + """ + id: String + """ + The UUID of the CMDB avatar. + """ + avatarUUID: String + """ + The 16x16 pixel CMDB avatar. + """ + url16: String + """ + The 48x48 pixel CMDB avatar. + """ + url48: String + """ + The 72x72 pixel CMDB avatar. + """ + url72: String + """ + The 144x144 pixel CMDB avatar. + """ + url144: String + """ + The 288x288 pixel CMDB avatar. + """ + url288: String + """ + The media client config used for retrieving the CMDB Avatar. + """ + mediaClientConfig: JiraCmdbMediaClientConfig +} + +""" +Represents the media client config used for retrieving the CMDB Avatar. +""" +type JiraCmdbMediaClientConfig { + """ + The media client ID for the CMDB avatar. + """ + clientId: String + """ + The ASAP issuer of the media token. + """ + issuer: String + """ + The media file ID for the CMDB avatar. + """ + fileId: String + """ + The media base URL for the CMDB avatar. + """ + mediaBaseUrl: URL + """ + The media JWT token for the CMDB avatar. + """ + mediaJwtToken: String +} + +""" +Represents the attribute associated with the CMDB object. +""" +type JiraCmdbAttribute { + """ + The attribute ID. + """ + attributeId: String + """ + The object type attribute ID. + """ + objectTypeAttributeId: String + """ + The object type attribute. + """ + objectTypeAttribute: JiraCmdbObjectTypeAttribute + """ + Paginated list of attribute values present on the CMDB object. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + objectAttributeValues( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCmdbObjectAttributeValueConnection +} + +""" +Represents the CMDB object type attribute. +""" +type JiraCmdbObjectTypeAttribute { + """ + The name of the CMDB object type attribute. + """ + name: String + """ + A boolean representing whether this attribute is set as the label attribute or not. + """ + label: Boolean + """ + The category of the CMDB attribute that can be created. + """ + type: JiraCmdbAttributeType + """ + The description of the CMDB object type attribute. + """ + description: String + """ + The object type of the CMDB object type attribute. + """ + objectType: JiraCmdbObjectType + """ + The default type of the CMDB object type attribute. + This property will be present if the `type` of the attribute is `DEFAULT`. + """ + defaultType: JiraCmdbDefaultType + """ + The reference type of the CMDB object type attribute. + This property will be present if the `type` of the attribute is `REFERENCED_OBJECT`. + """ + referenceType: JiraCmdbReferenceType + """ + The reference object type ID of the CMDB object type attribute. + This property will be present if the `type` of the attribute is `REFERENCED_OBJECT`. + """ + referenceObjectTypeId: String + """ + The reference object type of the CMDB object type attribute. + This property will be present if the `type` of the attribute is `REFERENCED_OBJECT`. + """ + referenceObjectType: JiraCmdbObjectType + """ + The additional value of the CMDB object type attribute. + """ + additionalValue: String + """ + The suffix associated with the CMDB object type attribute. + """ + suffix: String +} + +""" +The category of the CMDB attribute that can be created. +""" +enum JiraCmdbAttributeType { + """ + Default attributes, e.g. text, boolean, integer, date. + """ + DEFAULT + """ + Reference object attribute. + """ + REFERENCED_OBJECT + """ + User attribute. + """ + USER + """ + Confluence attribute. + """ + CONFLUENCE + """ + Group attribute. + """ + GROUP + """ + Version attribute. + """ + VERSION + """ + Project attribute. + """ + PROJECT + """ + Status attribute. + """ + STATUS +} + +""" +Represents the CMDB object type. +""" +type JiraCmdbObjectType { + """ + The ID of the CMDB object type. + """ + objectTypeId: String! + """ + The name of the CMDB object type. + """ + name: String + """ + The description of the CMDB object type. + """ + description: String + """ + The icon of the CMDB object type. + """ + icon: JiraCmdbIcon + """ + The object schema id of the CMDB object type. + """ + objectSchemaId: String +} + +""" +Represents a CMDB icon. +""" +type JiraCmdbIcon { + """ + The ID of the CMDB icon. + """ + id: String! + """ + The name of the CMDB icon. + """ + name: String + """ + The URL of the small CMDB icon. + """ + url16: String + """ + The URL of the large CMDB icon. + """ + url48: String +} + +""" +Represents the CMDB default type. +This contains information about what type of default attribute this is. +The possible id: name values are as follows: + 0: Text + 1: Integer + 2: Boolean + 3: Float + 4: Date + 6: DateTime + 7: URL + 8: Email + 9: Textarea + 10: Select + 11: IP Address +""" +type JiraCmdbDefaultType { + """ + The ID of the CMDB default type. + """ + id: String + """ + The name of the CMDB default type. + """ + name: String +} + +""" +Represents the CMDB reference type. +This describes the type of connection between one object and another. +""" +type JiraCmdbReferenceType { + """ + The ID of the CMDB reference type. + """ + id: String + """ + The name of the CMDB reference type. + """ + name: String + """ + The description of the CMDB reference type. + """ + description: String + """ + The color of the CMDB reference type. + """ + color: String + """ + The URL of the icon of the CMDB reference type. + """ + webUrl: String + """ + The object schema ID of the CMDB reference type. + """ + objectSchemaId: String +} + +""" +Represents the CMDB object attribute value. +The property values in this type will be defined depending on the attribute type. +E.g. the `referenceObject` property value will only be defined if the attribute type is a reference object type. +""" +type JiraCmdbObjectAttributeValue { + """ + The referenced CMDB object. + """ + referencedObject: JiraCmdbObject + """ + The user associated with this CMDB object attribute value. + """ + user: User + """ + The group associated with this CMDB object attribute value. + """ + group: JiraGroup + """ + The status of this CMDB object attribute value. + """ + status: JiraCmdbStatusType + """ + The value of this CMDB object attribute value. + """ + value: String + """ + The display value of this CMDB object attribute value. + """ + displayValue: String + """ + The search value of this CMDB object attribute value. + """ + searchValue: String + """ + The additional value of this CMDB object attribute value. + """ + additionalValue: String +} + +""" +Represents the CMDB status type. +""" +type JiraCmdbStatusType { + """ + The ID of the CMDB status type. + """ + id: String + """ + The name of the CMDB status type. + """ + name: String + """ + The description of the CMDB status type. + """ + description: String + """ + The category of the CMDB status type. + """ + category: Int + """ + The object schema ID associated with the CMDB status type. + """ + objectSchemaId: String +} + +""" +The connection type for JiraCmdbAttribute. +""" +type JiraCmdbAttributeConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraCmdbAttributeEdge] +} + +""" +An edge in a JiraCmdbAttribute connection. +""" +type JiraCmdbAttributeEdge { + """ + The node at the edge. + """ + node: JiraCmdbAttribute + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraCmdbObjectAttributeValue. +""" +type JiraCmdbObjectAttributeValueConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraCmdbObjectAttributeValueEdge] +} + +""" +An edge in a JiraCmdbObjectAttributeValue connection. +""" +type JiraCmdbObjectAttributeValueEdge { + """ + The node at the edge. + """ + node: JiraCmdbObjectAttributeValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraCmdbObject. +""" +type JiraCmdbObjectConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraCmdbObjectEdge] +} + +""" +An edge in a JiraCmdbObject connection. +""" +type JiraCmdbObjectEdge { + """ + The node at the edge. + """ + node: JiraCmdbObject + """ + The cursor to this edge. + """ + cursor: String! +}""" +Jira color that displays on a field. +""" +type JiraColor { + """ + Global identifier for the color. + """ + id: ID + """ + The key associated with the color based on the field type (issue color, epic color). + """ + colorKey: String +} +""" +An interface shared across all comment types. +""" +interface JiraComment { + """ + Identifier for the comment. + """ + commentId: ID! + """ + The issue to which this comment is belonged. + """ + issue: JiraIssue + """ + The browser clickable link of this comment. + """ + webUrl: URL + """ + User profile of the original comment author. + """ + author: User + """ + User profile of the author performing the comment update. + """ + updateAuthor: User + """ + Comment body rich text. + """ + richText: JiraRichText + """ + Time of comment creation. + """ + created: DateTime! + """ + Time of last comment update. + """ + updated: DateTime + """ + Either the group or the project role associated with this comment, but not both. + Null means the permission level is unspecified, i.e. the comment is public. + """ + permissionLevel: JiraPermissionLevel +} + +""" +Represents a Jira platform comment. +""" +type JiraPlatformComment implements JiraComment & Node { + """ + Global identifier for the comment + """ + id: ID! + """ + Identifier for the comment. + """ + commentId: ID! + """ + The issue to which this comment is belonged. + """ + issue: JiraIssue + """ + The browser clickable link of this comment. + """ + webUrl: URL + """ + User profile of the original comment author. + """ + author: User + """ + User profile of the author performing the comment update. + """ + updateAuthor: User + """ + Comment body rich text. + """ + richText: JiraRichText + """ + Time of comment creation. + """ + created: DateTime! + """ + Time of last comment update. + """ + updated: DateTime + """ + Either the group or the project role associated with this comment, but not both. + Null means the permission level is unspecified, i.e. the comment is public. + """ + permissionLevel: JiraPermissionLevel +} + +""" +Represents a comment within a JiraServiceManagement project. +""" +type JiraServiceManagementComment implements JiraComment & Node { + """ + Global identifier for the comment + """ + id: ID! + """ + Identifier for the comment. + """ + commentId: ID! + """ + The issue to which this comment is belonged. + """ + issue: JiraIssue + """ + The browser clickable link of this comment. + """ + webUrl: URL + """ + User profile of the original comment author. + """ + author: User + """ + User profile of the author performing the comment update. + """ + updateAuthor: User + """ + Comment body rich text. + """ + richText: JiraRichText + """ + Time of comment creation. + """ + created: DateTime! + """ + Time of last comment update. + """ + updated: DateTime + """ + Either the group or the project role associated with this comment, but not both. + Null means the permission level is unspecified, i.e. the comment is public. + """ + permissionLevel: JiraPermissionLevel + """ + The JSM visibility property associated with this comment. + """ + visibility: JiraServiceManagementCommentVisibility + """ + Indicates whether the comment author can see the request or not. + """ + authorCanSeeRequest: Boolean +} + +""" +The connection type for JiraComment. +""" +type JiraCommentConnection { + """ + The approximate count of items in the connection. + """ + indicativeCount: Int + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraCommentEdge] +} + +""" +An edge in a JiraComment connection. +""" +type JiraCommentEdge { + """ + The node at the the edge. + """ + node: JiraComment + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents the input for comments by issue ID and comment ID. +""" +input JiraCommentByIdInput { + """ + Issue ID. + """ + issueId: ID! + """ + Comment ID. + """ + id: ID! +}""" +Jira component defines a sub-selectin of a project. +""" +type JiraComponent implements Node { + """ + Global identifier for the color. + """ + id: ID! + """ + Component id in digital format. + """ + componentId: String! + """ + The name of the component. + """ + name: String + """ + Component description. + """ + description: String +} + +""" +The connection type for JiraComponent. +""" +type JiraComponentConnection { + """ + The total number of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraComponentEdge] +} + +""" +An edge in a JiraComponent connection. +""" +type JiraComponentEdge { + """ + The node at the edge. + """ + node: JiraComponent + """ + The cursor to this edge. + """ + cursor: String! +} +""" +The precondition state of the deployments JSW feature for a particular project and user. +""" +enum JiraDeploymentsFeaturePrecondition { + """ + The deployments feature is not available as the precondition checks have not been satisfied. + """ + NOT_AVAILABLE + """ + The deployments feature is available and will show the empty-state page as no CI/CD provider is sending deployment data. + """ + DEPLOYMENTS_EMPTY_STATE + """ + The deployments feature is available as the project has satisfied all precondition checks. + """ + ALL_SATISFIED +} + +""" +The precondition state of the install-deployments banner for a particular project and user. +""" +enum JiraInstallDeploymentsBannerPrecondition { + """ + The deployments banner is not available as the precondition checks have not been satisfied. + """ + NOT_AVAILABLE + """ + The deployments banner is available but the feature has not been enabled. + """ + FEATURE_NOT_ENABLED + """ + The deployments banner is available but no CI/CD provider is sending deployment data. + """ + DEPLOYMENTS_EMPTY_STATE +} + +extend type JiraQuery { + """ + Returns the precondition state of the deployments JSW feature for a particular project and user. + """ + deploymentsFeaturePrecondition( + """ + The identifier of the project to get the precondition for. + """ + projectId: ID! + ): JiraDeploymentsFeaturePrecondition + + """ + Returns the precondition state of the deployments JSW feature for a particular project and user. + """ + deploymentsFeaturePreconditionByProjectKey( + """ + The identifier that indicates that cloud instance this data is to be fetched for + """ + cloudId: ID! + """ + The key identifier of the project to get the precondition for. + """ + projectKey: String! + ): JiraDeploymentsFeaturePrecondition + + """ + Returns the precondition state of the install-deployments banner for a particular project and user. + """ + installDeploymentsBannerPrecondition( + """ + The identifier of the project to get the precondition for. + """ + projectId: ID! + ): JiraInstallDeploymentsBannerPrecondition +} +extend type JiraQuery { + """ + Container for all DevOps related queries in Jira + """ + devOps: JiraDevOpsQuery +} + +""" +Container for all DevOps related queries in Jira +""" +type JiraDevOpsQuery { + """ + Returns the JiraDevOpsIssuePanel for an issue + """ + devOpsIssuePanel(issueId: ID!): JiraDevOpsIssuePanel +} + +extend type JiraMutation { + """ + Container for all DevOps related mutations in Jira + """ + devOps: JiraDevOpsMutation +} + +""" +Container for all DevOps related mutations in Jira +""" +type JiraDevOpsMutation { + """ + Lets a user opt-out of the "not-connected" state in the DevOps Issue Panel + """ + optoutOfDevOpsIssuePanelNotConnectedState( + input: JiraOptoutDevOpsIssuePanelNotConnectedInput! + ): JiraOptoutDevOpsIssuePanelNotConnectedPayload + """ + Lets a user dismiss a banner shown in the DevOps Issue Panel + """ + dismissDevOpsIssuePanelBanner( + input: JiraDismissDevOpsIssuePanelBannerInput! + ): JiraDismissDevOpsIssuePanelBannerPayload +} + +""" +The input type for opting out of the Not Connected state in the DevOpsPanel +""" +input JiraOptoutDevOpsIssuePanelNotConnectedInput { + """ + Cloud ID of the tenant this change is applied to + """ + cloudId: ID! +} + +""" +The response payload for opting out of the Not Connected state in the DevOpsPanel +""" +type JiraOptoutDevOpsIssuePanelNotConnectedPayload implements Payload { + "The success indicator saying whether mutation operation was successful as a whole or not." + success: Boolean! + "The errors field represents additional mutation error information if exists." + errors: [MutationError!] +} + +""" +The input type for devops panel banner dismissal +""" +input JiraDismissDevOpsIssuePanelBannerInput { + """ + ID of the issue this banner was dismissed on + """ + issueId: ID! + """ + Only "issue-key-onboarding" is supported currently as this is the only banner + that can be displayed in the panel for now + """ + bannerType: JiraDevOpsIssuePanelBannerType! +} + +""" +The response payload for devops panel banner dismissal +""" +type JiraDismissDevOpsIssuePanelBannerPayload implements Payload { + "The success indicator saying whether mutation operation was successful as a whole or not." + success: Boolean! + "The errors field represents additional mutation error information if exists." + errors: [MutationError!] +} +""" +Container for all DevOps data for an issue, to be displayed in the DevOps Panel of an issue +""" +type JiraDevOpsIssuePanel { + """ + Specifies the state the DevOps panel in the issue view should be in + """ + panelState: JiraDevOpsIssuePanelState + + """ + Specify a banner to show on top of the dev panel. `null` means that no banner should be displayed. + """ + devOpsIssuePanelBanner: JiraDevOpsIssuePanelBannerType + + """ + Container for the Dev Summary of this issue + """ + devSummaryResult: JiraIssueDevSummaryResult + + """ + Specify if tenant which hosts the project of this issue has installed SCM providers supporting Branch capabilities. + """ + hasBranchCapabilities: Boolean +} + +""" +The possible States the DevOps Issue Panel can be in +""" +enum JiraDevOpsIssuePanelState { + """ + Panel should be hidden + """ + HIDDEN + """ + Panel should show the "not connected" state to prompt user to integrate tools + """ + NOT_CONNECTED + """ + Panel should show the available Dev Summary + """ + DEV_SUMMARY +} + +enum JiraDevOpsIssuePanelBannerType { + """ + Banner that explains how to add issue keys in your commits, branches and PRs + """ + ISSUE_KEY_ONBOARDING +} +extend type JiraQuery { + """ + Retrieves the list of devOps providers filtered by the types of capabilities they should support + Note: Bitbucket pipelines will be omitted from the result if Bitbucket SCM is not installed + """ + devOpsProviders( + """ + The ID of the tenant to get devOps providers for + """ + cloudId: ID! + """ + The capabilities the returned devOps providers will support + This result will contain providers that support *any* of the provided capabilities + + e.g. Requesting [COMMIT, DEPLOYMENT] will return providers that support either COMMIT, + DEPLOYMENT or both + + Note: The resulting list is bounded and is expected to *not* exceed 20 items with no filter. + Adding a filter will reduce the result even further. This is because a tenant will + reasonably install only handful of devOps integrations. i.e. It's possible but rare for + a site to have all of GitHub, GitLab, and Bitbucket providers installed + + Note: Omitting or passing an empty filter will return all devOps providers + """ + filter: [JiraDevOpsCapability!] = [] + ): [JiraDevOpsProvider] +} + +interface JiraDevOpsProvider { + """ + The human-readable display name of the devOps provider + """ + displayName: String + """ + The link to the web URL of the devOps provider + """ + webUrl: URL + """ + The list of capabilities the devOps provider supports + + This max size of the list is bounded by the total number of enum states + """ + capabilities: [JiraDevOpsCapability] +} + +""" +A connect app which provides devOps capabilities. +""" +type JiraClassicConnectDevOpsProvider implements JiraDevOpsProvider { + """ + The human-readable display name of the devOps provider + """ + displayName: String + """ + The link to the web URL of the devOps provider + """ + webUrl: URL + """ + The list of capabilities the devOps provider supports + + This max size of the list is bounded by the total number of enum states + """ + capabilities: [JiraDevOpsCapability] + """ + The link to the icon of the devOps provider + """ + iconUrl: URL + """ + The connect app ID + """ + connectAppId: ID +} + +""" +An oauth app which provides devOps capabilities. +""" +type JiraOAuthDevOpsProvider implements JiraDevOpsProvider { + """ + The human-readable display name of the devOps provider + """ + displayName: String + """ + The link to the web URL of the devOps provider + """ + webUrl: URL + """ + The list of capabilities the devOps provider supports + + This max size of the list is bounded by the total number of enum states + """ + capabilities: [JiraDevOpsCapability] + """ + The link to the icon of the devOps provider + """ + iconUrl: URL + """ + The oauth app ID + """ + oauthAppId: ID + """ + The corresponding marketplace app key for the oauth app + """ + marketplaceAppKey: String +} + +""" +The internal BB app which provides devOps capabilities +This provider will be filtered out from the list of providers if BB SCM is not installed +""" +type JiraBitbucketDevOpsProvider implements JiraDevOpsProvider { + """ + The human-readable display name of the devOps provider + """ + displayName: String + """ + The link to the web URL of the devOps provider + """ + webUrl: URL + """ + The list of capabilities the devOps provider supports + + This max size of the list is bounded by the total number of enum states + """ + capabilities: [JiraDevOpsCapability] +} + +""" +The types of capabilities a devOps provider can support +""" +enum JiraDevOpsCapability { + COMMIT + BRANCH + PULL_REQUEST + BUILD + DEPLOYMENT + FEATURE_FLAG + REVIEW +} +""" +The SCM entities (pullrequest, branches or commits) associated with a Jira issue. +""" +type JiraIssueDevInfoDetails { + """ + Created pull-requests associated with a Jira issue. + """ + pullRequests: JiraIssuePullRequests + """ + Created SCM branches associated with a Jira issue. + """ + branches: JiraIssueBranches + """ + Created SCM commits associated with a Jira issue. + """ + commits: JiraIssueCommits +} + +""" +The container of SCM pull requests info associated with a Jira issue. +""" +type JiraIssuePullRequests { + """ + A list of pull request details from the original SCM providers. + Maximum of 50 latest updated pull-requests will be returned. + """ + details: [JiraDevOpsPullRequestDetails!] + """ + A list of config errors of underlined data-providers providing pull request details. + """ + configErrors: [JiraDevInfoConfigError!] +} + +""" +The container of SCM branches info associated with a Jira issue. +""" +type JiraIssueBranches { + """ + A list of branches details from the original SCM providers. + Maximum of 50 branches will be returned. + """ + details: [JiraDevOpsBranchDetails!] + """ + A list of config errors of underlined data-providers providing branches details. + """ + configErrors: [JiraDevInfoConfigError!] +} + +""" +The container of SCM commits info associated with a Jira issue. +""" +type JiraIssueCommits { + """ + A list of commits details from the original SCM providers. + Maximum of 50 latest created commits will be returned. + """ + details: [JiraDevOpsCommitDetails!] + """ + A list of config errors of underlined data-providers providing commit details. + """ + configErrors: [JiraDevInfoConfigError!] +} + +""" +Details of a SCM Pull-request associated with a Jira issue +""" +type JiraDevOpsPullRequestDetails { + """ + Value uniquely identify a pull request scoped to its original scm provider, not ARI format + """ + providerPullRequestId: String, + """ + Entity URL link to pull request in its original provider + """ + entityUrl: URL, + """ + Pull request title + """ + name: String, + """ + The name of the source branch of the PR. + """ + branchName: String, + """ + The timestamp of when the PR last updated in ISO 8601 format. + """ + lastUpdated: DateTime, + """ + Possible states for Pull Requests. + """ + status: JiraPullRequestState, + """ + Details of author who created the Pull Request. + """ + author: JiraDevOpsEntityAuthor, + """ + List of the reviewers for this pull request and their approval status. + Maximum of 50 reviewers will be returned. + """ + reviewers: [JiraPullRequestReviewer!], +} + +""" +Details of a created SCM branch associated with a Jira issue. +""" +type JiraDevOpsBranchDetails { + """ + Value uniquely identify the scm branch scoped to its original provider, not ARI format + """ + providerBranchId: String, + """ + Entity URL link to branch in its original provider + """ + entityUrl: URL, + """ + Branch name + """ + name: String, + """ + The scm repository contains the branch. + """ + scmRepository: JiraScmRepository, +} + +""" +Details of a SCM commit associated with a Jira issue. +""" +type JiraDevOpsCommitDetails { + """ + Value uniquely identify the commit (commit-hash), not ARI format. + """ + providerCommitId: String, + """ + Shorten value of the commit-hash, used for display. + """ + displayCommitId: String, + """ + Entity URL link to commit in its original provider + """ + entityUrl: URL, + """ + The commit message. + """ + name: String, + """ + The commit date in ISO 8601 format. + """ + created: DateTime, + """ + Details of author who created the commit. + """ + author: JiraDevOpsEntityAuthor, + """ + Flag represents if the commit is a merge commit. + """ + isMergeCommit: Boolean, + """ + The scm repository contains the commit. + """ + scmRepository: JiraScmRepository, +} + +""" +Basic person information who created a SCM entity (Pull-request, Branches, or Commit) +""" +type JiraDevOpsEntityAuthor { + """ + The author's avatar. + """ + avatar: JiraAvatar, + """ + Author name. + """ + name: String, +} + +""" +Basic person information who reviews a pull-request. +""" +type JiraPullRequestReviewer { + """ + The reviewer's avatar. + """ + avatar: JiraAvatar, + """ + Reviewer name. + """ + name: String, + """ + Represent the approval status from reviewer for the pull request. + """ + hasApproved: Boolean, +} + +""" +Repository information provided by data-providers. +""" +type JiraScmRepository { + """ + Repository name. + """ + name: String + """ + URL link to the repository in scm provider. + """ + entityUrl: URL +} + +""" +User actionable error details. +""" +type JiraDevInfoConfigError { + """ + Type of the error + """ + errorType: JiraDevInfoConfigErrorType + """ + id of the data provider associated with this error + """ + dataProviderId: String +} + +""" +The possible config error type with a provider that feed devinfo details. +""" +enum JiraDevInfoConfigErrorType { + UNAUTHORIZED + NOT_CONFIGURED + INCAPABLE + UNKNOWN_CONFIG_ERROR +} +""" +Represents an epic. +""" +type JiraEpic { + """ + Global identifier for the epic/issue Id. + """ + id: ID! + """ + Issue Id for the epic. + """ + issueId: String! + """ + Name of the epic. + """ + name: String + """ + Key identifier for the Issue. + """ + key: String + """ + Summary of the epic. + """ + summary: String + """ + Color string for the epic. + """ + color: String + """ + Status of the epic, whether its completed or not. + """ + done: Boolean +} + +""" +The connection type for JiraEpic. +""" +type JiraEpicConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraEpicEdge] +} + +""" +An edge in a JiraEpic connection. +""" +type JiraEpicEdge { + """ + The node at the edge. + """ + node: JiraEpic + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the JSM feedback rating. +""" +type JiraServiceManagementFeedback { + """ + Represents the integer rating value available on the issue. + """ + rating: Int +} +""" +Represents the Jira flag. +""" +type JiraFlag { + """ + Indicates whether the issue is flagged or not. + """ + isFlagged: Boolean +} +""" +Represents a Jira Group. +""" +type JiraGroup implements Node { + """ + The global identifier of the group in ARI format. + Note: this will be populated with a fake ARI until the Group Rename project is complete. + """ + id: ID! + "Group Id, can be null on group creation" + groupId: String! + "Name of the Group" + name: String! +} + +""" +The connection type for JiraGroup. +""" +type JiraGroupConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraGroupEdge] +} + +""" +An edge in a JiraGroupConnection connection. +""" +type JiraGroupEdge { + """ + The node at the edge. + """ + node: JiraGroup + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the JSM incident. +""" +type JiraServiceManagementIncident { + """ + Indicates whether any incident is linked to the issue or not. + """ + hasLinkedIncidents: Boolean +} +""" +Jira Issue node. Includes the Issue data displayable in the current User context. +""" +type JiraIssue implements Node { + """ + Unique identifier associated with this Issue. + """ + id: ID! + """ + Issue ID in numeric format. E.g. 10000 + """ + issueId: String! + """ + The {projectKey}-{issueNumber} associated with this Issue. + """ + key: String! + """ + The browser clickable link of this Issue. + """ + webUrl: URL + """ + Loads the fields relevant to the current GraphQL Query, Issue and User contexts. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fields( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueFieldConnection + """ + Paginated list of fields available on this issue. Allows clients to specify fields by their identifier. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldsById( + """ + A list of field identifiers corresponding to the fields to be returned. + E.g. ["ari:cloud:jira:{siteId}:issuefieldvalue/{issueId}/description", "ari:cloud:jira:{siteId}:issuefieldvalue/{issueId}/customfield_10000"]. + """ + ids: [ID!]! + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueFieldConnection + """ + Paginated list of comments available on this issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + comments( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCommentConnection + """ + Paginated list of worklogs available on this issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + worklogs( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraWorkLogConnection + """ + Paginated list of attachments available on this issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + attachments( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraAttachmentConnection + """ + Loads all field sets relevant to the current context for the Issue. + """ + fieldSets( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueFieldSetConnection + """ + Loads all field sets for a specified JiraIssueSearchView. + """ + fieldSetsForIssueSearchView( + """ + The namespace for a JiraIssueSearchView. + """ + namespace: String + """ + The viewId for a JiraIssueSearchView. + """ + viewId: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String): JiraIssueFieldSetConnection + + """ + Loads the given field sets for the JiraIssue + """ + fieldSetsById( + """ + The identifiers of the field sets to retrieve e.g. ["assignee", "reporter", "checkbox_cf[Checkboxes]"] + """ + fieldSetIds: [String!]! + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String): JiraIssueFieldSetConnection + + """ + Paginated list of issue links available on this issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + issueLinks( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueLinkConnection + """ + The childIssues within this issue. + """ + childIssues: JiraChildIssues + """ + The dev summary cache. This could be stale. + """ + devSummaryCache: JiraIssueDevSummaryResult + + """ + The SCM development-info entities (pullrequests, branches, commits) associated with a Jira issue. + """ + devInfoDetails: JiraIssueDevInfoDetails + """ + Returns the hierarchy info that's directly below the current issue's hierarchy if the current issue's project is TMP. + """ + hierarchyLevelBelow: JiraIssueTypeHierarchyLevel + """ + Returns the hierarchy info that's directly below the current issue's hierarchy. + """ + hierarchyLevelAbove: JiraIssueTypeHierarchyLevel + """ + Returns the issue types within the same project and are directly below the current issue's hierarchy if the current issue's project is TMP. + """ + issueTypesForHierarchyBelow: JiraIssueTypeConnection + """ + Returns the issue types within the same project and are directly above the current issue's hierarchy. + """ + issueTypesForHierarchyAbove: JiraIssueTypeConnection + """ + Returns the issue types within the same project that are at the same level as the current issue's hierarchy if the current issue's project is TMP. + """ + issueTypesForHierarchySame: JiraIssueTypeConnection + """ + Indicates that there was at least one error in retrieving data for this Jira issue. + """ + errorRetrievingData: Boolean @deprecated(reason: "Intended only for feature parity with legacy experiences.") + """ + The story points field for the given issue. + """ + storyPointsField: JiraNumberField + """ + The story point estimate field for the given issue. + """ + storyPointEstimateField: JiraNumberField + """ + Returns the ID of the screen the issue is on. + """ + screenId: Long @deprecated(reason: "The screen concept has been deprecated, and is only used for legacy reasons.") +} + +""" +The connection type for JiraIssue. +""" +type JiraIssueConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + jql if issues are returned by jql. This field will have value only when the context has jql + """ + jql: String + """ + A list of edges in the current page. + """ + edges: [JiraIssueEdge] + """ + The error that occurred during an issue search. + """ + issueSearchError: JiraIssueSearchError + + """ + The total number of issues for a given JQL search. + This number will be capped based on the server's configured limit. + """ + totalIssueSearchResultCount: Int + + """ + Returns whether or not there were more issues available for a given issue search. + """ + isCappingIssueSearchResult: Boolean + + """ + Extra page information for the issue navigator. + """ + issueNavigatorPageInfo: JiraIssueNavigatorPageInfo + + """ + Cursors to help with random access pagination. + """ + pageCursors(maxCursors: Int!): JiraPageCursors +} + +""" +An edge in a JiraIssue connection. +""" +type JiraIssueEdge { + """ + The node at the edge. + """ + node: JiraIssue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents a field set which contains a set of JiraIssueFields, otherwise commonly referred to as collapsed fields. +""" +type JiraIssueFieldSet { + """ + The identifer of the field set e.g. `assignee`, `reporter`, `checkbox_cf[Checkboxes]`. + """ + fieldSetId: String + """ + The field type key of the contained fields e.g: `project`, `issuetype`, `com.pyxis.greenhopper.jira:gh-epic-link`. + """ + type: String + """ + Retrieves a connection of JiraIssueFields + """ + fields( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueFieldConnection +} + +""" +An edge in a JiraIssueFieldSet connection. +""" +type JiraIssueFieldSetEdge { + """ + The node at the the edge. + """ + node: JiraIssueFieldSet + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraIssueFieldSet. +""" +type JiraIssueFieldSetConnection { + """ + The total number of JiraIssueFields matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo + """ + The data for Edges in the current page. + """ + edges: [JiraIssueFieldSetEdge] +} + +""" +Extra page information to assist the Issue Navigator UI to display information about the current set of issues. +""" +type JiraIssueNavigatorPageInfo { + """ + The position of the first issue in the current page, relative to the entire stable search. + The first issue's position will start at 1. + If there are no issues, the position returned is 0. + You can consider a position to effectively be a traditional index + 1. + """ + firstIssuePosition: Int + """ + The position of the last issue in the current page, relative to the entire stable search. + If there is only 1 issue, the last position is 1. + If there are no issues, the position returned is 0. + You can consider a position to effectively be a traditional index + 1. + """ + lastIssuePosition: Int + """ + The issue key of the first node from the next page of issues. + """ + firstIssueKeyFromNextPage: String + """ + The issue key of the last node from the previous page of issues. + """ + lastIssueKeyFromPreviousPage: String +} + +""" +The base type cursor data necessary for random access pagination. +""" +type JiraPageCursor { + """ + This is a Base64 encoded value containing the all the necessary data for retrieving the page items. + """ + cursor: String + """ + The number of the page it represents. First page is 1. + """ + pageNumber: Int + """ + Indicates if this page is the current page. Usually the current page is represented differently on the FE. + """ + isCurrent: Boolean +} + +""" +This encapsulates all the necessary cursors for random access pagination. +""" +type JiraPageCursors { + """ + Represents the cursor for the first page. + """ + first: JiraPageCursor + """ + Represents a list of cursors around the current page. + Even if the list is not bounded, there are strict limits set on the server (MAX_SIZE <= 7). + """ + around: [JiraPageCursor] + """ + Represents the cursor for the last page. + """ + last: JiraPageCursor + """ + Represents the cursor for the previous page. + E.g. currentPage=2 => previousPage=1 + """ + previous: JiraPageCursor +} +""" +Represents a collection of system container types to be fetched by passing in an issue id. +""" +input JiraIssueItemSystemContainerTypeWithIdInput { + """ + ARI of the issue. + """ + issueId: ID! + """ + The collection of system container types. + """ + systemContainerTypes: [JiraIssueItemSystemContainerType!]! +} + +""" +Represents a collection of system container types to be fetched by passing in an issue key and a cloud id. +""" +input JiraIssueItemSystemContainerTypeWithKeyInput { + """ + The {projectKey}-{issueNumber} associated with this Issue. + """ + issueKey: String! + """ + The cloudId associated with this Issue. + """ + cloudId: ID! + """ + The collection of system container types. + """ + systemContainerTypes: [JiraIssueItemSystemContainerType!]! +} + +""" +Contains the fetched containers or an error. +""" +union JiraIssueItemContainersResult = JiraIssueItemContainers | QueryError + +""" +Represents a related collection of system containers and their items, and the collection of default item locations. +""" +type JiraIssueItemContainers { + #id: ID - An id has not been added yet to allow room to make this a Node in future. + """ + The collection of system containers. + """ + containers: [JiraIssueItemContainer] + """ + The collection of default item locations. + """ + defaultItemLocations: [JiraIssueItemLayoutDefaultItemLocation] +} +""" +Represents a system container and its items. +""" +type JiraIssueItemContainer { + """ + The system container type. + """ + containerType: JiraIssueItemSystemContainerType + """ + The system container items. + """ + items: JiraIssueItemContainerItemConnection +} + +""" +The connection type for `JiraIssueItemContainerItem`. +""" +type JiraIssueItemContainerItemConnection { + """ + Information about the page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + Deprecated. + """ + nodes: [JiraIssueItemContainerItem] @deprecated(reason: "Please use edges instead.") + """ + The data for edges in the page. + """ + edges: [JiraIssueItemContainerItemEdge] + """ + The total count of items in the connection. + """ + totalCount: Int +} + +""" +An edge in a `JiraIssueItemContainerItem` connection. +""" +type JiraIssueItemContainerItemEdge { + """ + The node at the edge. + """ + node: JiraIssueItemContainerItem + """ + The cursor to the edge. + """ + cursor: String! +} + +""" +The system container types that are available for placing items. +""" +enum JiraIssueItemSystemContainerType { + """ + The container type for the request portal in JSM projects. + """ + REQUEST_PORTAL + """ + The container type for the issue content. + """ + CONTENT + """ + The container type for the issue primary context. + """ + PRIMARY + """ + The container type for the issue secondary context. + """ + SECONDARY + """ + The container type for the issue context. + """ + CONTEXT + """ + The container type for the issue hidden items. + """ + HIDDEN_ITEMS + """ + The container type for the request in JSM projects. + """ + REQUEST +} + +""" +Represents a default location rule for items that are not configured in a container. +Example: A user picker is added to a screen. Until the administrator places it in the layout, the item is placed in +the location specified by the 'PEOPLE' category. The categories available may vary based on the project type. +""" +type JiraIssueItemLayoutDefaultItemLocation { + """ + A destination container type or the ID of a destination group. + """ + containerLocation: String + """ + The item location rule type. + """ + itemLocationRuleType: JiraIssueItemLayoutItemLocationRuleType +} + +""" +Represents the type of items that the default location rule applies to. +""" +enum JiraIssueItemLayoutItemLocationRuleType { + """ + People items. For example: user pickers, team pickers or group picker. + """ + PEOPLE + """ + Multiline text items. For example: a description field or custom multi-line test fields. + """ + MULTILINE_TEXT + """ + Time tracking items. For example: estimate, original estimate or time tracking panels. + """ + TIMETRACKING + """ + Date items. For example: date or time related fields. + """ + DATES + """ + Any other item types not covered by previous item types. + """ + OTHER +} + +""" +Represents the items that can be placed in any system container. +""" +union JiraIssueItemContainerItem = JiraIssueItemFieldItem | JiraIssueItemPanelItem | JiraIssueItemGroupContainer | JiraIssueItemTabContainer + +""" +Represents the items that can be placed in any group container. +""" +union JiraIssueItemGroupContainerItem = JiraIssueItemFieldItem | JiraIssueItemPanelItem + +""" +Represents the items that can be placed in any tab container. +""" +union JiraIssueItemTabContainerItem = JiraIssueItemFieldItem + +""" +Represents a collection of items that are held in a tab container. +""" +type JiraIssueItemTabContainer { + """ + The tab container ID. + """ + tabContainerId: String! + """ + The tab container name. + """ + name: String + """ + The tab container items. + """ + items: JiraIssueItemTabContainerItemConnection +} + +""" +Represents a collection of items that are held in a group container. +""" +type JiraIssueItemGroupContainer { + """ + The group container ID. + """ + groupContainerId: String! + """ + The group container name. + """ + name: String + """ + Whether a group container is minimized. + """ + minimised: Boolean + """ + The group container items. + """ + items: JiraIssueItemGroupContainerItemConnection +} + +""" +The connection type for `JiraIssueItemGroupContainerItem`. +""" +type JiraIssueItemGroupContainerItemConnection { + """ + Information about the page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + Deprecated. + """ + nodes: [JiraIssueItemGroupContainerItem] @deprecated(reason: "Please use edges instead.") + """ + The data for edges in the page. + """ + edges: [JiraIssueItemGroupContainerItemEdge] + """ + The total count of items in the connection. + """ + totalCount: Int +} + +""" +An edge in a `JiraIssueItemGroupContainerItem` connection. +""" +type JiraIssueItemGroupContainerItemEdge { + """ + The node at the edge. + """ + node: JiraIssueItemGroupContainerItem + """ + The cursor to the edge. + """ + cursor: String! +} + +""" +The connection type for `JiraIssueItemTabContainerItem`. +""" +type JiraIssueItemTabContainerItemConnection { + """ + Information about the page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + Deprecated. + """ + nodes: [JiraIssueItemTabContainerItem] @deprecated(reason: "Please use edges instead.") + """ + The data for edges in the page. + """ + edges: [JiraIssueItemTabContainerItemEdge] + """ + The total count of items in the connection. + """ + totalCount: Int +} + +""" +An edge in a `JiraIssueItemTabContainerItem` connection. +""" +type JiraIssueItemTabContainerItemEdge { + """ + The node at the edge. + """ + node: JiraIssueItemTabContainerItem + """ + The cursor to the edge. + """ + cursor: String! +} + +""" +Represents a reference to a field by field ID, used for laying out fields on an issue. +""" +type JiraIssueItemFieldItem { + """ + The field item ID. + """ + fieldItemId: String! + """ + Represents the position of the field in the container. + Aid to preserve the field position when combining items in `PRIMARY` and `REQUEST` container types before saving in JSM projects. + """ + containerPosition: Int! +} + +""" +Represents a reference to a panel by panel ID, used for laying out panels on an issue. +""" +type JiraIssueItemPanelItem { + """ + The panel item ID. + """ + panelItemId: String! +} +""" +Container for the Dev Summary of an issue +""" +type JiraIssueDevSummaryResult { + """ + Contains all available summaries for the issue + """ + devSummary: JiraIssueDevSummary + + """ + Returns "transient errors". That is, errors that may be solved by retrying the fetch operation. + This excludes configuration errors that require admin intervention to be solved. + """ + errors: [JiraIssueDevSummaryError!] + """ + Returns "non-transient errors". That is, configuration errors that require admin intervention to be solved. + This returns an empty collection when called for users that are not administrators or system administrators. + """ + configErrors: [JiraIssueDevSummaryError!] +} + +""" +Lists the summaries available for each type of dev info, for a given issue +""" +type JiraIssueDevSummary { + """ + Summary of the Branches attached to the issue + """ + branch: JiraIssueBranchDevSummaryContainer + """ + Summary of the Commits attached to the issue + """ + commit: JiraIssueCommitDevSummaryContainer + """ + Summary of the Pull Requests attached to the issue + """ + pullrequest: JiraIssuePullRequestDevSummaryContainer + """ + Summary of the Builds attached to the issue + """ + build: JiraIssueBuildDevSummaryContainer + """ + Summary of the Reviews attached to the issue + """ + review: JiraIssueReviewDevSummaryContainer + """ + Summary of the deployment environments attached to some builds. + This is a legacy attribute only used by Bamboo builds + """ + deploymentEnvironments: JiraIssueDeploymentEnvironmentDevSummaryContainer +} + +""" +Aggregates the `count` of entities for a given provider +""" +type JiraIssueDevSummaryByProvider { + """ + UUID for a given provider, to allow aggregation + """ + providerId: String + """ + Provider name + """ + name: String + """ + Number of entities associated with that provider + """ + count: Int +} + +""" +Error when querying the JiraIssueDevSummary +""" +type JiraIssueDevSummaryError { + """ + A message describing the error + """ + message: String + """ + Information about the provider that triggered the error + """ + instance: JiraIssueDevSummaryErrorProviderInstance +} + +""" +Basic information on a provider that triggered an error +""" +type JiraIssueDevSummaryErrorProviderInstance { + """ + Provider's name + """ + name: String + """ + Provider's type + """ + type: String + """ + Base URL of the provider's instance that failed + """ + baseUrl: String +} + +""" +Container for the summary of the Branches attached to the issue +""" +type JiraIssueBranchDevSummaryContainer { + """ + The actual summary of the Branches attached to the issue + """ + overall: JiraIssueBranchDevSummary + """ + Count of Branches aggregated per provider + """ + summaryByProvider: [JiraIssueDevSummaryByProvider!] +} + +""" +Summary of the Branches attached to the issue +""" +type JiraIssueBranchDevSummary { + """ + Total number of Branches for the issue + """ + count: Int + """ + Date at which this summary was last updated + """ + lastUpdated: DateTime +} + +""" +Container for the summary of the Commits attached to the issue +""" +type JiraIssueCommitDevSummaryContainer { + """ + The actual summary of the Commits attached to the issue + """ + overall: JiraIssueCommitDevSummary + """ + Count of Commits aggregated per provider + """ + summaryByProvider: [JiraIssueDevSummaryByProvider!] +} + +""" +Summary of the Commits attached to the issue +""" +type JiraIssueCommitDevSummary { + """ + Total number of Commits for the issue + """ + count: Int + """ + Date at which this summary was last updated + """ + lastUpdated: DateTime +} + +""" +Container for the summary of the Pull Requests attached to the issue +""" +type JiraIssuePullRequestDevSummaryContainer { + """ + The actual summary of the Pull Requests attached to the issue + """ + overall: JiraIssuePullRequestDevSummary + """ + Count of Pull Requests aggregated per provider + """ + summaryByProvider: [JiraIssueDevSummaryByProvider!] +} + +""" +Summary of the Pull Requests attached to the issue +""" +type JiraIssuePullRequestDevSummary { + """ + Total number of Pull Requests for the issue + """ + count: Int + """ + Date at which this summary was last updated + """ + lastUpdated: DateTime + + """ + State of the Pull Requests in the summary + """ + state: JiraPullRequestState + """ + Number of Pull Requests for the state + """ + stateCount: Int + """ + Whether the Pull Requests for the given state are open or not + """ + open: Boolean +} + +""" +Possible states for Pull Requests +""" +enum JiraPullRequestState { + """ + Pull Request is Open + """ + OPEN + """ + Pull Request is Declined + """ + DECLINED + """ + Pull Request is Merged + """ + MERGED +} + +""" +Container for the summary of the Builds attached to the issue +""" +type JiraIssueBuildDevSummaryContainer { + """ + The actual summary of the Builds attached to the issue + """ + overall: JiraIssueBuildDevSummary + """ + Count of Builds aggregated per provider + """ + summaryByProvider: [JiraIssueDevSummaryByProvider!] +} + +""" +Summary of the Builds attached to the issue +""" +type JiraIssueBuildDevSummary { + """ + Total number of Builds for the issue + """ + count: Int + """ + Date at which this summary was last updated + """ + lastUpdated: DateTime + + """ + Number of failed buids for the issue + """ + failedBuildCount: Int + """ + Number of successful buids for the issue + """ + successfulBuildCount: Int + """ + Number of buids with unknown result for the issue + """ + unknownBuildCount: Int +} + +""" +Container for the summary of the Reviews attached to the issue +""" +type JiraIssueReviewDevSummaryContainer { + """ + The actual summary of the Reviews attached to the issue + """ + overall: JiraIssueReviewDevSummary + """ + Count of Reviews aggregated per provider + """ + summaryByProvider: [JiraIssueDevSummaryByProvider!] +} + +""" +Summary of the Reviews attached to the issue +""" +type JiraIssueReviewDevSummary { + """ + Total number of Reviews for the issue + """ + count: Int + """ + Date at which this summary was last updated + """ + lastUpdated: DateTime + + """ + State of the Reviews in the summary + """ + state: JiraReviewState + """ + Number of Reviews for the state + """ + stateCount: Int +} + +""" +Possible states for Reviews +""" +enum JiraReviewState { + """ + Review is in Review state + """ + REVIEW + """ + Review is in Require Approval state + """ + APPROVAL + """ + Review is in Summarize state + """ + SUMMARIZE + """ + Review has been rejected + """ + REJECTED + """ + Review has been closed + """ + CLOSED + """ + Review is in Draft state + """ + DRAFT + """ + Review is in Dead state + """ + DEAD + """ + Review state is unknown + """ + UNKNOWN +} + +""" +Container for the summary of the Deployment Environments attached to the issue +""" +type JiraIssueDeploymentEnvironmentDevSummaryContainer { + """ + The actual summary of the Deployment Environments attached to the issue + """ + overall: JiraIssueDeploymentEnvironmentDevSummary + """ + Count of Deployment Environments aggregated per provider + """ + summaryByProvider: [JiraIssueDevSummaryByProvider!] +} + +""" +Summary of the Deployment Environments attached to the issue +""" +type JiraIssueDeploymentEnvironmentDevSummary { + """ + Total number of Reviews for the issue + """ + count: Int + """ + Date at which this summary was last updated + """ + lastUpdated: DateTime + + """ + A list of the top environment there was a deployment on + """ + topEnvironments: [JiraIssueDeploymentEnvironment!] +} + +type JiraIssueDeploymentEnvironment { + """ + Title of the deployment environment + """ + title: String + """ + State of the deployment + """ + status: JiraIssueDeploymentEnvironmentState +} + +""" +Possible states for a deployment environment +""" +enum JiraIssueDeploymentEnvironmentState { + """ + The deployment was not deployed successfully + """ + NOT_DEPLOYED + """ + The deployment was deployed successfully + """ + DEPLOYED +}""" +Represents the common structure across Issue fields. +""" +interface JiraIssueField implements Node { + """ + Unique identifier for the entity. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias. + Applies to managed or commonly known custom fields in Jira, which allow lookup without requiring the custom field ID. + E.g. rank or startdate. + """ + aliasFieldId: ID + """ + Field type key. E.g. project, issuetype, com.pyxis.greenhopper.Jira:gh-epic-link. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String +} + +""" +The connection type for JiraIssueField. +""" +type JiraIssueFieldConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraIssueFieldEdge] +} + +union JiraIssueFieldConnectionResult = JiraIssueFieldConnection | QueryError + +""" +An edge in a JiraIssueField connection. +""" +type JiraIssueFieldEdge { + """ + The node at the edge. + """ + node: JiraIssueField + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents the configurations associated with an Issue field. +""" +interface JiraIssueFieldConfiguration { + """ + Attributes of an Issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Attributes of field configuration. +""" +type JiraFieldConfig { + """ + Defines if a field is required on a screen. + """ + isRequired: Boolean + """ + Defines if a field is editable. + """ + isEditable: Boolean + """ + Explains the reason why a field is not editable on a screen. + E.g. cases where a field needs a licensed premium version to be editable. + """ + nonEditableReason: JiraFieldNonEditableReason +} + +""" +Attributes of CMDB field configuration. +""" +type JiraCmdbFieldConfig { + """ + The object schema ID associated with the CMDB object. + """ + objectSchemaId: String! + """ + The object filter query. + """ + objectFilterQuery: String + """ + The issue scope filter query. + """ + issueScopeFilterQuery: String + """ + Indicates whether this CMDB field should contain multiple CMDB objects or not. + """ + multiple: Boolean + """ + Paginated list of CMDB attributes displayed on issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + attributesDisplayedOnIssue( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCmdbConfigAttributeConnection + """ + Paginated list of CMDB attributes included in autocomplete search. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + attributesIncludedInAutoCompleteSearch( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCmdbConfigAttributeConnection +} + +""" +The connection type for CMDB config attributes. +""" +type JiraCmdbConfigAttributeConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraCmdbConfigAttributeEdge] +} + +""" +An edge in a JiraCmdbConfigAttributeConnection. +""" +type JiraCmdbConfigAttributeEdge { + """ + The node at the edge. + """ + node: String + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents the information for a field being non-editable on Issue screens. +""" +type JiraFieldNonEditableReason { + """ + Message explanining why the field is non-editable (if present). + """ + message: String +} + +""" +Represents user made configurations associated with an Issue field. +""" +interface JiraUserIssueFieldConfiguration { + """ + Attributes of an Issue field configuration info from a user's customisation. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Attributes of user made field configurations. +""" +type JiraUserFieldConfig { + """ + Defines whether a field has been pinned by the user. + """ + isPinned: Boolean + """ + Defines if the user has preferred to check a field on Issue creation. + """ + isSelected: Boolean +} + +""" +Represents a priority field on a Jira Issue. +""" +type JiraPriorityField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The priority selected on the Issue or default priority configured for the field. + """ + priority: JiraPriority + """ + Paginated list of priority options for the field or on an Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + priorities( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Determines if the results should be limited to suggested priorities. + """ + suggested: Boolean + ): JiraPriorityConnection + """ + Attributes of an Issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a project field on a Jira Issue. +Both the system & custom project field can be represented by this type. +""" +type JiraProjectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The ID of the project field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The project selected on the Issue or default project configured for the field. + """ + project: JiraProject + """ + List of project options available for this field to be selected. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + projects( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + recent: Boolean = false + ) : JiraProjectConnection + """ + Search url to fetch all available projects options on the field or an Issue. + To be deprecated once project connection is supported for custom project fields. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an Issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents an issue type field on a Jira Issue. +""" +type JiraIssueTypeField implements Node & JiraIssueField & JiraIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """" + The issue type selected on the Issue or default issue type configured for the field. + """ + issueType: JiraIssueType + """ + List of issuetype options available to be selected for the field. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + issueTypes( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraIssueTypeConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Represents a rich text field on a Jira Issue. E.g. description, environment. +""" +type JiraRichTextField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The rich text selected on the Issue or default rich text configured for the field. + """ + richText: JiraRichText + """ + Determines what editor to render. + E.g. default text rendering or wiki text rendering. + """ + renderer: String + """ + Contains the information needed to add media content to the field. + """ + mediaContext: JiraMediaContext + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a version field on a Jira Issue. E.g. custom version picker field. +""" +type JiraSingleVersionPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The version selected on the Issue or default version configured for the field. + """ + version: JiraVersion + """ + Paginated list of versions options for the field or on a Jira Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + versions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraVersionConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a multi version picker field on a Jira Issue. E.g. fixVersions and multi version custom field. +""" +type JiraMultipleVersionPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The versions selected on the Issue or default versions configured for the field. + """ + selectedVersions: [JiraVersion] @deprecated(reason: "Please use selectedVersionsConnection instead.") + """ + The versions selected on the Issue or default versions configured for the field. + """ + selectedVersionsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraVersionConnection + """ + Paginated list of versions options for the field or on a Jira Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + versions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraVersionConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a labels field on a Jira Issue. Both system & custom field can be represented by this type. +""" +type JiraLabelsField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The labels selected on the Issue or default labels configured for the field. + """ + selectedLabels: [JiraLabel] @deprecated(reason: "Please use selectedLabelsConnection instead.") + """ + The labels selected on the Issue or default labels configured for the field. + """ + selectedLabelsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraLabelConnection + """ + Paginated list of label options for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + labels( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraLabelConnection + """ + Search url to fetch all available label options on a field or an Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a single select user field on a Jira Issue. E.g. assignee, reporter, custom user picker. +""" +type JiraSingleSelectUserPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The user selected on the Issue or default user configured for the field. + """ + user: User + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a multi select user picker field on a Jira Issue. E.g. custom user picker, sd-request-participants. +""" +type JiraMultipleSelectUserPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the entity. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key of the field. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsers: [User] @deprecated(reason: "Please use selectedUsersConnection instead.") + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsersConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraUserConnection + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + + +""" +Represents a people picker field on a Jira Issue. E.g. people custom field, servicedesk-approvers-list. +""" +type JiraPeopleField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The people selected on the Issue or default people configured for the field. + """ + selectedUsers: [User] @deprecated(reason: "Please use selectedUsersConnection instead.") + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsersConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraUserConnection + """ + Whether the field is configured to act as single/multi select user(s) field. + """ + isMulti: Boolean + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a date time picker field on a Jira Issue. E.g. created, resolution date, custom date time, request-feedback-date. +""" +type JiraDateTimePickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The datetime selected on the Issue or default datetime configured for the field. + """ + dateTime: DateTime + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a date picker field on an issue. E.g. due date, custom date picker, baseline start, baseline end. +""" +type JiraDatePickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The date selected on the Issue or default date configured for the field. + """ + date: Date + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a resolution field on a Jira Issue. +""" +type JiraResolutionField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The resolution selected on the Issue or default resolution configured for the field. + """ + resolution: JiraResolution + """ + Paginated list of resolution options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + resolutions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraResolutionConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a number field on a Jira Issue. E.g. float, story points. +""" +type JiraNumberField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The number selected on the Issue or default number configured for the field. + """ + number: Float + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + Returns if the current number field is a story point field + """ + isStoryPointField: Boolean @deprecated(reason: "Story point field is treated as a special field only on issue view") +} + +""" +Represents single line text field on a Jira Issue. E.g. summary, epic name, custom text field. +""" +type JiraSingleLineTextField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The text selected on the Issue or default text configured for the field. + """ + text: String + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents epic link field on a Jira Issue. +""" +type JiraEpicLinkField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The epic selected on the Issue or default epic configured for the field. + """ + epic: JiraEpic + """ + Paginated list of epic options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + epics( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Set to true to search only for epics that are done, false otherwise. + """ + done: Boolean + ): JiraEpicConnection + """ + Search url to fetch all available epics options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents components field on a Jira Issue. +""" +type JiraComponentsField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The component selected on the Issue or default component configured for the field. + """ + selectedComponents: [JiraComponent] @deprecated(reason: "Please use selectedComponentsConnection instead.") + """ + The component selected on the Issue or default component configured for the field. + """ + selectedComponentsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraComponentConnection + """ + Paginated list of component options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + components( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraComponentConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents url field on a Jira Issue. +""" +type JiraUrlField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The url selected on the Issue or default url configured for the field. (deprecated) + """ + url: URL @deprecated(reason: "Please use urlValue; replaced Url with String to accommodate values that are URI but not URL") + """ + The url selected on the Issue or default url configured for the field. + """ + urlValue: String + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents sprint field on a Jira Issue. +""" +type JiraSprintField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The sprints selected on the Issue or default sprints configured for the field. + """ + selectedSprints: [JiraSprint] @deprecated(reason: "Please use selectedSprintsConnection instead.") + """ + The sprints selected on the Issue or default sprints configured for the field. + """ + selectedSprintsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraSprintConnection + """ + Paginated list of sprint options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + sprints( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + The Result Sprints fetched will have particular Sprint State eg. ACTIVe. + """ + state: JiraSprintState + ): JiraSprintConnection + """ + Search url to fetch all available sprints options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents linked issues field on a Jira Issue. +""" +type JiraIssueLinkField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Represents all the issue links defined on a Jira Issue. Should be deprecated and replaced with issueLinksConnection. + """ + issueLinks: [JiraIssueLink] @deprecated(reason: "Please use issueLinkConnection instead.") + """ + Paginated list of issue links selected on the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + issueLinkConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueLinkConnection + """ + Represents the different issue link type relations/desc which can be mapped/linked to the issue in context. + Issue in context is the one which is being created/ which is being queried. + """ + issueLinkTypeRelations( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueLinkTypeRelationConnection + """ + Paginated list of issues which can be related/linked with above issueLinkTypeRelations. + """ + issues( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueConnection + """ + Search url to list all available issues which can be related/linked with above issueLinkTypeRelations. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents Parent field on a Jira Issue. E.g. JSW Parent, JPO Parent (to be unified). +""" +type JiraParentIssueField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The parent selected on the Issue or default parent configured for the field. + """ + parentIssue: JiraIssue + """ + Represents flags required to determine parent field visibility + """ + parentVisibility: JiraParentVisibility + """ + Search url to fetch all available parents for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents security level field on a Jira Issue. Issue Security allows you to control who can and cannot view issues. +""" +type JiraSecurityLevelField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The security level selected on the Issue or default security level configured for the field. + """ + securityLevel: JiraSecurityLevel + """ + Paginated list of security level options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + securityLevels( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraSecurityLevelConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents cascading select field. Currently only handles 2 level hierarchy. +""" +type JiraCascadingSelectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The cascading option selected on the Issue or default cascading option configured for the field. + """ + cascadingOption: JiraCascadingOption + """ + Paginated list of cascading options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + cascadingOptions( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCascadingOptionsConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents issue restriction field on an issue for next gen projects. +""" +type JiraIssueRestrictionField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The roles selected on the Issue or default roles configured for the field. + """ + selectedRoles: [JiraRole] @deprecated(reason: "Please use selectedRolesConnection instead.") + """ + The roles selected on the Issue or default roles configured for the field. + """ + selectedRolesConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraRoleConnection + """ + Paginated list of roles available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + roles( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraRoleConnection + """ + Search URL to fetch all the roles options for the fields on an issue. + """ + searchUrl : String + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents color field on a Jira Issue. E.g. issue color, epic color. +""" +type JiraColorField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The color selected on the Issue or default color configured for the field. + """ + color: JiraColor + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents single select field on a Jira Issue. +""" +type JiraSingleSelectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The option selected on the Issue or default option configured for the field. + """ + fieldOption: JiraOption + """ + Paginated list of options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldOptions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Search URL to fetch the select option for the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the check boxes field on a Jira Issue. +""" +type JiraCheckboxesField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The options selected on the Issue or default options configured for the field. + """ + selectedFieldOptions: [JiraOption] @deprecated(reason: "Please use selectedOptions instead.") + """ + The options selected on the Issue or default options configured for the field. + """ + selectedOptions( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Paginated list of options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldOptions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the radio select field on a Jira Issue. +""" +type JiraRadioSelectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The option selected on the Issue or default option configured for the field. + """ + selectedOption: JiraOption + """ + Paginated list of options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldOptions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the Asset field on a Jira Issue. +""" +type JiraAssetField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The assets selected on the Issue or default assets configured for the field. + """ + selectedAssets: [JiraAsset] @deprecated(reason: "Please use selectedAssetsConnection instead.") + """ + The assets selected on the Issue or default assets configured for the field. + """ + selectedAssetsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraAssetConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Search URL to fetch all the assets for the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the multi-select field on a Jira Issue. +""" +type JiraMultipleSelectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The options selected on the Issue or default options configured for the field. + """ + selectedFieldOptions: [JiraOption] @deprecated(reason: "Please use selectedOptions instead.") + """ + The options selected on the Issue or default options configured for the field. + """ + selectedOptions( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Paginated list of options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldOptions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Search URL to fetch all the teams options for the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents single group picker field. Allows you to select single Jira group to be associated with an issue. +""" +type JiraSingleGroupPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The group selected on the Issue or default group configured for the field. + """ + selectedGroup: JiraGroup + """ + Paginated list of group options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + groups( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraGroupConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Search URL to fetch group picker field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a multiple group picker field on a Jira Issue. +""" +type JiraMultipleGroupPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The groups selected on the Issue or default groups configured for the field. + """ + selectedGroups: [JiraGroup] @deprecated(reason: "Please use selectedGroupsConnection instead.") + """ + The groups selected on the Issue or default groups configured for the field. + """ + selectedGroupsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraGroupConnection + """ + Paginated list of group options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + groups( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraGroupConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Search URL to fetch all group pickers of the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Deprecated type. Please use `JiraTeamViewField` instead. +""" +type JiraTeamField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The team selected on the Issue or default team configured for the field. + """ + selectedTeam: JiraTeam + """ + Paginated list of team options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + teams( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraTeamConnection + """ + Search URL to fetch all the teams options for the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Deprecated type. Please use `JiraTeamViewField` instead. +""" +type JiraAtlassianTeamField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The team selected on the Issue or default team configured for the field. + """ + selectedTeam: JiraAtlassianTeam + """ + Paginated list of team options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + teams( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraAtlassianTeamConnection + """ + Search URL to fetch all the teams options for the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the Team field on a Jira Issue. Allows you to select a team to be associated with an Issue. +""" +type JiraTeamViewField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The team selected on the Issue or default team configured for the field. + """ + selectedTeam: JiraTeamView + """ + Search URL to fetch all the teams options for the field on a Jira Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents Affected Services field. +""" +type JiraAffectedServicesField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The affected services selected on the Issue or default affected services configured for the field. + """ + selectedAffectedServices: [JiraAffectedService] @deprecated(reason: "Please use selectedAffectedServicesConnection instead.") + """ + The affected services selected on the Issue or default affected services configured for the field. + """ + selectedAffectedServicesConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraAffectedServiceConnection + """ + Paginated list of affected services available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + affectedServices( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraAffectedServiceConnection + """ + Search url to query for all Affected Services when user interact with field. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents CMDB (Configuration Management Database) field on a Jira Issue. +""" +type JiraCMDBField implements Node & JiraIssueField & JiraIssueFieldConfiguration{ + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Whether the field is configured to act as single/multi select CMDB(s) field. + """ + isMulti: Boolean @deprecated(reason: "Please use `multiple` defined in `JiraCmdbFieldConfig`.") + """ + Search url to fetch all available cmdb options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + The CMDB objects selected on the Issue or default CMDB objects configured for the field. + """ + selectedCmdbObjects: [JiraCmdbObject] @deprecated(reason: "Please use selectedCmdbObjectsConnection instead.") + """ + The CMDB objects selected on the Issue or default CMDB objects configured for the field. + """ + selectedCmdbObjectsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraCmdbObjectConnection + """ + Indicates whether the field has been enriched with data from Insight, allowing Jira to show correct error states. + """ + wasInsightRequestSuccessful: Boolean + """ + Indicates whether the current site has sufficient licence for the Insight feature, allowing Jira to show correct error states. + """ + isInsightAvailable: Boolean + """ + Attributes of a CMDB field’s configuration info. + """ + cmdbFieldConfig: JiraCmdbFieldConfig + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + Attributes that are configured for autocomplete search. + """ + attributesIncludedInAutoCompleteSearch: [String] @deprecated(reason: "Please use `attributesIncludedInAutoCompleteSearch` defined in `JiraCmdbFieldConfig`.") +} + +""" +Represents the time tracking field on Jira issue screens. +""" +type JiraTimeTrackingField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Original Estimate displays the amount of time originally anticipated to resolve the issue. + """ + originalEstimate: JiraEstimate + """ + Time Remaining displays the amount of time currently anticipated to resolve the issue. + """ + remainingEstimate: JiraEstimate + """ + Time Spent displays the amount of time that has been spent on resolving the issue. + """ + timeSpent: JiraEstimate + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + This represents the global time tracking settings configuration like working hours and days. + """ + timeTrackingSettings: JiraTimeTrackingSettings +} + +""" +Represents the original time estimate field on Jira issue screens. Note that this is the same value as the originalEstimate from JiraTimeTrackingField +This field should only be used on issue view because issue view hasn't deprecated the original estimation as a standalone field +""" +type JiraOriginalTimeEstimateField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Original Estimate displays the amount of time originally anticipated to resolve the issue. + """ + originalEstimate: JiraEstimate + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a text field created by Connect App. +""" +type JiraConnectTextField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Content of the connect text field. + """ + text: String + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a number field created by Connect App. +""" +type JiraConnectNumberField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Connected number. + """ + number: Float + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a single select field created by Connect App. +""" +type JiraConnectSingleSelectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The option selected on the Issue or default option configured for the field. + """ + fieldOption: JiraOption + """ + Paginated list of options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldOptions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Search url to fetch all available options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a multi-select field created by Connect App. +""" +type JiraConnectMultipleSelectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The options selected on the Issue or default options configured for the field. + """ + selectedFieldOptions: [JiraOption] @deprecated(reason: "Please use selectedOptions instead.") + """ + The options selected on the Issue or default options configured for the field. + """ + selectedOptions( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Paginated list of options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + fieldOptions( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraOptionConnection + """ + Search url to fetch all available options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents rich text field on a Jira Issue. E.g. description, environment. +""" +type JiraConnectRichTextField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The rich text selected on the Issue or default rich text configured for the field. + """ + richText: JiraRichText + """ + Determines what editor to render. + E.g. default text rendering or wiki text rendering. + """ + renderer: String + """ + Contains the information needed to add a media content to this field. + """ + mediaContext: JiraMediaContext + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents Status field. +""" +type JiraStatusField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The status selected on the Issue or default status configured for the field. + """ + status: JiraStatus! + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents Status Category field. +""" +type JiraStatusCategoryField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The status category for the issue or default status category configured for the field. + """ + statusCategory: JiraStatusCategory! + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a string field created by Forge App. +""" +type JiraForgeStringField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The text selected on the Issue or default text configured for the field. + """ + text: String + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a strings field created by Forge App. +""" +type JiraForgeStringsField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The labels selected on the Issue or default labels configured for the field. + """ + selectedLabels: [JiraLabel] @deprecated(reason: "Please use selectedLabelsConnection instead.") + """ + The labels selected on the Issue or default labels configured for the field. + """ + selectedLabelsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraLabelConnection + """ + Paginated list of label options for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + labels( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraLabelConnection + """ + Search url to fetch all available labels options on the field or an Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a number field created by Forge App. +""" +type JiraForgeNumberField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The number selected on the Issue or default number configured for the field. + """ + number: Float + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a date time field created by Forge App. +""" +type JiraForgeDatetimeField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The datetime selected on the issue or default datetime configured for the field. + """ + dateTime: DateTime + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a object field created by Forge App. +""" +type JiraForgeObjectField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The object string selected on the issue or default datetime configured for the field. + """ + object: String + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a User field created by Forge App. +""" +type JiraForgeUserField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The user selected on the Issue or default user configured for the field. + """ + user: User + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a Users field created by Forge App. +""" +type JiraForgeUsersField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsers: [User] @deprecated(reason: "Please use selectedUsersConnection instead.") + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsersConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraUserConnection + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a Group field created by Forge App. +""" +type JiraForgeGroupField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The group selected on the Issue or default group configured for the field. + """ + selectedGroup: JiraGroup + """ + Paginated list of group options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + groups( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraGroupConnection + """ + Search url to fetch all available groups for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a Groups field created by Forge App. +""" +type JiraForgeGroupsField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The groups selected on the Issue or default group configured for the field. + """ + selectedGroups: [JiraGroup] @deprecated(reason: "Please use selectedGroupsConnection instead.") + """ + The groups selected on the Issue or default group configured for the field. + """ + selectedGroupsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraGroupConnection + """ + Paginated list of group options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + groups( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraGroupConnection + """ + Search url to fetch all available groups for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig + """ + The renderer type of the forge app, returns 'forge' if it's customised in the app, otherwise returns the one of the predefined custom field renderer type. + """ + renderer: String +} + +""" +Represents a votes field on a Jira Issue. +""" +type JiraVotesField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Represents the vote value selected on the Issue. + Can be null when voting is disabled. + """ + vote: JiraVote + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the Watches system field. +""" +type JiraWatchesField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Represents the watch value selected on the Issue. + Can be null when watching is disabled. + """ + watch: JiraWatch + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a flag field on a Jira Issue. E.g. flagged. +""" +type JiraFlagField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The flag value selected on the Issue. + """ + flag: JiraFlag + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Deprecated type. Please use `childIssues` field under `JiraIssue` instead. +""" +type JiraSubtasksField implements Node & JiraIssueField & JiraIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Paginated list of subtasks on the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + subtasks( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Deprecated type. Please use `attachments` field under `JiraIssue` instead. +""" +type JiraAttachmentsField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Defines the permissions of the attachment collection. + """ + permissions: [JiraAttachmentsPermissions] + """ + Paginated list of attachments available for the field or the Issue. + """ + attachments( + startAt: Int + maxResults: Int + orderField: JiraAttachmentsOrderField, + orderDirection: JiraOrderDirection + ): JiraAttachmentConnection + """ + Defines the maximum size limit (in bytes) of the total of all the attachments which can be associated with this field. + """ + maxAllowedTotalAttachmentsSize: Long + """ + Contains the information needed to add a media content to this field. + """ + mediaContext: JiraMediaContext + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents dev summary for an issue. The identifier for this field is devSummary +""" +type JiraDevSummaryField implements Node & JiraIssueField { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + A summary of the development information (e.g. pull requests, commits) associated with + this issue. + + WARNING: The data returned by this field may be stale/outdated. This field is temporary and + will be replaced by a `devSummary` field that returns up-to-date information. + + In the meantime, if you only need data for a single issue you can use the `JiraDevOpsQuery.devOpsIssuePanel` + field to get up-to-date dev summary data. + """ + devSummaryCache: JiraIssueDevSummaryResult +} + +""" +Represents the WorkCategory field on an Issue. +""" +type JiraWorkCategoryField implements Node & JiraIssueField & JiraIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The WorkCategory selected on the Issue or default WorkCategory configured for the field. + """ + workCategory: JiraWorkCategory + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Represents a generic boolean field for an Issue. E.g. JSM alert linking. +""" +type JiraBooleanField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The value selected on the Issue or default value configured for the field. + """ + value: Boolean + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the proforma-forms field for an Issue. +""" +type JiraProformaFormsField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The proforma-forms selected on the Issue or default major incident configured for the field. + """ + proformaForms: JiraProformaForms + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +############################################################ +########### Jira Service Management (JSM) Fields ########### +############################################################ + +""" +Represents the Request Feedback custom field on an Issue in a JSM project. +""" +type JiraServiceManagementRequestFeedbackField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Represents the JSM feedback rating value selected on the Issue. + """ + feedback: JiraServiceManagementFeedback + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents a datetime field on an Issue in a JSM project. +Deprecated: Please use `JiraDateTimePickerField`. +""" +type JiraServiceManagementDateTimeField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The datetime selected on the Issue or default datetime configured for the field. + """ + dateTime: DateTime + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the responders entity custom field on an Issue in a JSM project. +""" +type JiraServiceManagementRespondersField implements Node & JiraIssueField & JiraIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Represents the list of responders. + """ + responders: [JiraServiceManagementResponder] @deprecated(reason: "Please use respondersConnection instead.") + """ + Represents the list of responders. + """ + respondersConnection( + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementResponderConnection + """ + Search URL to query for all responders available for the user to choose from when interacting with the field. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Represents the Incident Linking custom field on an Issue in a JSM project. +Deprecated: please use `JiraBooleanField` instead. +""" +type JiraServiceManagementIncidentLinkingField implements Node & JiraIssueField & JiraIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + Represents the JSM incident linked to the issue. + """ + incident: JiraServiceManagementIncident + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Represents the Approval custom field on an Issue in a JSM project. +""" +type JiraServiceManagementApprovalField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. customfield_10001 or description. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The active approval is used to render the approval panel that the users can interact with to approve/decline the request or update approvers. + """ + activeApproval: JiraServiceManagementActiveApproval + """ + The completed approvals are used to render the approval history section and contains records for all previous approvals for that issue. + """ + completedApprovals: [JiraServiceManagementCompletedApproval] @deprecated(reason: "Please use completedApprovalsConnection instead.") + """ + The completed approvals are used to render the approval history section and contains records for all previous approvals for that issue. + """ + completedApprovalsConnection( + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementCompletedApprovalConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Deprecated type. Please use `JiraMultipleSelectUserPickerField` instead. +""" +type JiraServiceManagementMultipleSelectUserPickerField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsers: [User] @deprecated(reason: "Please use selectedUsersConnection instead.") + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsersConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraUserConnection + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the Request Language field on an Issue in a JSM project. +""" +type JiraServiceManagementRequestLanguageField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The language selected on the Issue or default language configured for the field. + """ + language: JiraServiceManagementLanguage + """ + List of languages available. + """ + languages: [JiraServiceManagementLanguage] + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the Customer Organization field on an Issue in a JSM project. +""" +type JiraServiceManagementOrganizationField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The organizations selected on the Issue or default organizations configured for the field. + """ + selectedOrganizations: [JiraServiceManagementOrganization] @deprecated(reason: "Please use selectedOrganizationsConnection instead.") + """ + The organizations selected on the Issue or default organizations configured for the field. + """ + selectedOrganizationsConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraServiceManagementOrganizationConnection + """ + Paginated list of organization options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + organizations( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraServiceManagementOrganizationConnection + """ + Search url to query for all Customer orgs when user interact with field. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Deprecated type. Please use `JiraPeopleField` instead. +""" +type JiraServiceManagementPeopleField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The people selected on the Issue or default people configured for the field. + """ + selectedUsers: [User] @deprecated(reason: "Please use selectedUsersConnection instead.") + """ + The users selected on the Issue or default users configured for the field. + """ + selectedUsersConnection( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraUserConnection + """ + Whether the field is configured to act as single/multi select user(s) field. + """ + isMulti: Boolean + """ + Paginated list of user options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + users( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraUserConnection + """ + Search url to fetch all available users options for the field or the Issue. + """ + searchUrl: String @deprecated(reason: "Search URLs are planned to be replaced by Connections.") + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} + +""" +Represents the request type field for an Issue in a JSM project. +""" +type JiraServiceManagementRequestTypeField implements Node & JiraIssueField & JiraIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The request type selected on the Issue or default request type configured for the field. + """ + requestType: JiraServiceManagementRequestType + """ + Paginated list of request type options available for the field or the Issue. + The server may throw an error if both a forward page (specified with `first`) and a backward page (specified with `last`) are requested simultaneously. + """ + requestTypes( + """ + Search by the id/name of the item. + """ + searchBy: String + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Returns the recent items based on user history. + """ + suggested: Boolean + ): JiraServiceManagementRequestTypeConnection + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig +} + +""" +Represents the major incident field for an Issue in a JSM project. +""" +type JiraServiceManagementMajorIncidentField implements Node & JiraIssueField & JiraIssueFieldConfiguration & JiraUserIssueFieldConfiguration { + """ + Unique identifier for the field. + """ + id: ID! + """ + The identifier of the field. E.g. summary, customfield_10001, etc. + """ + fieldId: String! + """ + The field ID alias (if applicable). + """ + aliasFieldId: ID + """ + Field type key. + """ + type: String! + """ + Translated name for the field (if applicable). + """ + name: String! + """ + Description for the field (if present). + """ + description: String + """ + The major incident selected on the Issue or default major incident configured for the field. + """ + majorIncident: JiraServiceManagementMajorIncident + """ + Attributes of an issue field's configuration info. + """ + fieldConfig: JiraFieldConfig + """ + Configuration changes which a user can apply to a field. E.g. pin or hide the field. + """ + userFieldConfig: JiraUserFieldConfig +} +extend type JiraQuery { + """ + Container for all Issue Hierarchy Configuration related queries in Jira + """ + issueHierarchyConfig(cloudId: ID!): JiraIssueHierarchyConfigurationQuery! + + """ + Container for all Issue Hierarchy Limits related queries in Jira + """ + issueHierarchyLimits(cloudId: ID!): JiraIssueHierarchyLimits! + + """ + A List of JiraIssueType IDs that cannot be moved to a different hierarchy level. + """ + lockedIssueTypeIds(cloudId: ID!): [ID!]! +} + +extend type JiraMutation { + """ + Used to update the Issue Hierarchy Configuration in Jira + """ + updateIssueHierarchyConfig( + cloudId: ID!, + input: JiraIssueHierarchyConfigurationMutationInput! + ): JiraIssueHierarchyConfigurationMutationResult! +} + +type JiraIssueHierarchyConfigurationMutationResult { + """ + The field that indicates if the update action is successfully initiated + """ + updateInitiated: Boolean! + + """ + The success indicator saying whether mutation operation was successful as a whole or not + """ + success: Boolean! + + """ + The errors field represents additional mutation error information if exists + """ + errors: [JiraHierarchyConfigError!] +} + +type JiraIssueHierarchyConfigurationQuery { + """ + This indicates data payload + """ + data: [JiraIssueHierarchyConfigData!] + + """ + The success indicator saying whether mutation operation was successful as a whole or not + """ + success: Boolean! + + """ + The errors field represents additional mutation error information if exists + """ + errors: [JiraHierarchyConfigError!] +} + +type JiraIssueHierarchyConfigData { + """ + Each one of the levels with its basic data + """ + hierarchyLevel: JiraIssueTypeHierarchyLevel + + """ + Issue types inside the level + """ + cmpIssueTypes( + first: Int, + after: String, + last: Int, + before: String + ): JiraIssueTypeConnection +} + +type JiraIssueHierarchyLimits { + """ + Max levels that the user can set + """ + maxLevels: Int! + + """ + Max name length + """ + nameLength: Int! +} + +type JiraHierarchyConfigError { + """ + This indicates error code + """ + code: String + + """ + This indicates error message + """ + message: String +} + +input JiraIssueHierarchyConfigInput { + """ + Level number + """ + level: Int! + + """ + Level title + """ + title: String! + + """ + A list of issue type IDs + """ + issueTypeIds: [ID!]! +} + +input JiraIssueHierarchyConfigurationMutationInput { + """ + This indicates if the service needs to make a simulation run + """ + dryRun: Boolean! + + """ + A list of hierarchy config input objects + """ + issueHierarchyConfig: [JiraIssueHierarchyConfigInput!]! +} +extend type JiraQuery { + """ + Used to retrieve Issue layout information by type by `issueId`. + """ + issueContainersByType( + input: JiraIssueItemSystemContainerTypeWithIdInput! + ): JiraIssueItemContainersResult! + + """ + Used to retrieve Issue layout information by `issueKey` and `cloudId`. + """ + issueContainersByTypeByKey( + input: JiraIssueItemSystemContainerTypeWithKeyInput! + ): JiraIssueItemContainersResult! +}type JiraIssueLinkTypeRelation implements Node { + "Global identifier for the Issue Link Type Relation." + id: ID! + """ + Represents the description of the relation by which this link is identified. + This can be the inward or outward description of an IssueLinkType. + E.g. blocks, is blocked by, duplicates, is duplicated by, clones, is cloned by. + """ + relationName: String + """ + Represents the IssueLinkType id to which this type belongs to. + """ + linkTypeId: String! + """ + Display name of IssueLinkType to which this relation belongs to. E.g. Blocks, Duplicate, Cloners. + """ + linkTypeName: String + """ + Represents the direction of Issue link type. E.g. INWARD, OUTWARD. + """ + direction: JiraIssueLinkDirection +} + +""" +Represents a single Issue link containing the link id, link type and destination Issue. + +For Issue create, JiraIssueLink will be populated with +the default IssueLink types in the relatedBy field. +The issueLinkId and Issue fields will be null. + +For Issue view, JiraIssueLink will be populated with +the Issue link data available on the Issue. +The Issue field will contain a nested JiraIssue that is atmost 1 level deep. +The nested JiraIssue will not contain fields that can contain further nesting. +""" +type JiraIssueLink { + """ + Global identifier for the Issue Link. + """ + id: ID + """ + Identifier for the Issue Link. Can be null to represent a link not yet created. + """ + issueLinkId: String + """ + Issue link type relation through which the source Issue is connected to the + destination Issue. Source Issue is the Issue being created/queried. + """ + relatedBy: JiraIssueLinkTypeRelation + """ + The destination Issue to which this link is connected. + """ + issue: JiraIssue +} + +""" +The connection type for JiraIssueLink. +""" +type JiraIssueLinkConnection { + """ + The total number of JiraIssueLink matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraIssueLinkEdge] +} + +""" +An edge in a JiraIssueLink connection. +""" +type JiraIssueLinkEdge { + """ + The node at the edge. + """ + node: JiraIssueLink + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraIssueLinkTypeRelation. +""" +type JiraIssueLinkTypeRelationConnection { + """ + The total number of JiraIssueLinkTypeRelation matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraIssueLinkTypeRelationEdge] +} + +""" +An edge in a JiraIssueLinkType connection. +""" +type JiraIssueLinkTypeRelationEdge { + """ + The node at the edge. + """ + node: JiraIssueLinkTypeRelation + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents the possible linking directions between issues. +""" +enum JiraIssueLinkDirection { + """ + Going from the other issue to this issue. + """ + INWARD + """ + Going from this issue to the other issue. + """ + OUTWARD +} +extend type JiraQuery { + """ + Performs an issue search using the provided string of JQL. + This query will error if the JQL does not pass validation. + """ + issueSearchByJql(cloudId: ID!, jql: String!): JiraIssueSearchByJqlResult + + """ + Performs an issue search using the underlying JQL saved as a filter. + + The id provided MUST be in ARI format. + + This query will error if the id parameter is not in ARI format, does not pass validation or does not correspond to a filter. + """ + issueSearchByFilterId(id: ID!): JiraIssueSearchByFilterResult + + """ + Hydrate a list of issue IDs into issue data. The issue data retrieved will depend on + the subsequently specified view(s) and/or fields. + + The ids provided MUST be in ARI format. + + For each id provided, it will resolve to either a JiraIssue as a leaf node in an subsequent query, or a QueryError if: + - The ARI provided did not pass validation. + - The ARI did not resolve to an issue. + """ + issueHydrateByIssueIds(ids: [ID!]!): JiraIssueSearchByHydration + + """ + Retrieves data about a JiraIssueSearchView. + + The id provided MUST be in ARI format. + + This query will error if the id parameter is not in ARI format, does not pass validation or does not correspond to a JiraIssueSearchView. + """ + issueSearchView(id: ID!): JiraIssueSearchView + + """ + Retrieves a JiraIssueSearchView corresponding to the provided namespace and viewId. + """ + issueSearchViewByNamespaceAndViewId(cloudId: ID!, namespace: String, viewId: String): JiraIssueSearchView + + """ + Performs an issue search using the issueSearchInput argument. + This relies on stable search where the issue ids from the initial search are preserved between pagination. + An "initial search" is when no cursors are specified. + The server will configure a limit on the maximum issue ids preserved for a given search e.g. 1000. + On pagination, we take the next page of issues from this stable set of 1000 ids and return hydrated issue data. + """ + issueSearchStable( + """ + The cloud id of the tenant. + """ + cloudId: ID! + """ + The input used for the issue search. + """ + issueSearchInput: JiraIssueSearchInput! + """ + The options used for an issue search. + """ + options: JiraIssueSearchOptions + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueConnection +} + +extend type JiraMutation { + """ + Replaces field config sets from the specified JiraIssueSearchView with the provided field config set id nodes. + If the provided nodes contain a node outside the given range of `before` and/or `after`, then those nodes will also be deleted and replaced within the range. + - If `before` is provided, then the entire range before that node will be replaced, or error if not found. + - If `after` is provided, then the entire range after that node will be replaced, or error if not found. + - If `before` and `after` are both provided, then the range between `before` and `after` will be replaced depending on the inclusive value. + - If neither `before` or `after` are provided, then the entire range will be replaced. + + The id provided MUST be in ARI format. This mutation will error if the id parameter is not in ARI format, does not pass validation or does not correspond to a JiraIssueSearchView. + """ + replaceIssueSearchViewFieldSets( + id: ID! + input: JiraReplaceIssueSearchViewFieldSetsInput! + ): JiraIssueSearchViewPayload +} + +input JiraReplaceIssueSearchViewFieldSetsInput { + before: String + after: String + nodes: [String!]! + # Denotes whether `before` and/or `after` nodes will be replaced inclusively. If not specified, defaults to false. + inclusive: Boolean +} + +""" +The payload returned when a JiraIssueSearchView has been updated. +""" +type JiraIssueSearchViewPayload implements Payload { + success: Boolean! + errors: [MutationError!] + view: JiraIssueSearchView +} + +""" +A generic interface for issue search results in Jira. +""" +interface JiraIssueSearchResult { + """ + Retrieves content controlled by the context of a JiraIssueSearchView. + To query multiple content views at once, use GraphQL aliases. + + If a namespace is provided, and a viewId is: + - Not provided, then the last used view is returned within this namespace. + - Provided, then this view is returned if it exists in this namespace. + + If a namespace is not provided, and a viewId is: + - Not provided, then the last used view across any namespace is returned. + - Provided, then this view is returned if it exists in the global namespace. + """ + content(namespace: String, viewId: String): JiraIssueSearchContextualContent + + """ + Retrieves content by provided field config set ids, ignoring the active query context. + To query multiple content views at once, use GraphQL aliases. + """ + contentByFieldSetIds(fieldSetIds: [String!]!): JiraIssueSearchContextlessContent +} + +""" +Represents an issue search result when querying with a JiraFilter. +""" +type JiraIssueSearchByFilter implements JiraIssueSearchResult { + """ + Retrieves content controlled by the context of a JiraIssueSearchView. + To query multiple content views at once, use GraphQL aliases. + + If a namespace is provided, and a viewId is: + - Not provided, then the last used view is returned within this namespace. + - Provided, then this view is returned if it exists in this namespace. + + If a namespace is not provided, and a viewId is: + - Not provided, then the last used view across any namespace is returned. + - Provided, then this view is returned if it exists in the global namespace. + """ + content(namespace: String, viewId: String): JiraIssueSearchContextualContent + """ + Retrieves content by provided field config set ids, ignoring the active query context. + To query multiple content views at once, use GraphQL aliases. + """ + contentByFieldSetIds(fieldSetIds: [String!]!): JiraIssueSearchContextlessContent + """ + The Jira Filter corresponding to the filter ARI specified in the calling query. + """ + filter: JiraFilter +} + + +union JiraIssueSearchByJqlResult = JiraIssueSearchByJql | QueryError + +union JiraIssueSearchByFilterResult = JiraIssueSearchByFilter | QueryError + +""" +Represents an issue search result when querying with a Jira Query Language (JQL) string. +""" +type JiraIssueSearchByJql implements JiraIssueSearchResult { + """ + Retrieves content controlled by the context of a JiraIssueSearchView. + To query multiple content views at once, use GraphQL aliases. + + If a namespace is provided, and a viewId is: + - Not provided, then the last used view is returned within this namespace. + - Provided, then this view is returned if it exists in this namespace. + + If a namespace is not provided, and a viewId is: + - Not provided, then the last used view across any namespace is returned. + - Provided, then this view is returned if it exists in the global namespace. + """ + content(namespace: String, viewId: String): JiraIssueSearchContextualContent + """ + Retrieves content by provided field config set ids, ignoring the active query context. + To query multiple content views at once, use GraphQL aliases. + """ + contentByFieldSetIds(fieldSetIds: [String!]!): JiraIssueSearchContextlessContent + """ + The JQL specified in the calling query. + """ + jql: String +} + +""" +Represents an issue search result when querying with a set of issue ids. +""" +type JiraIssueSearchByHydration implements JiraIssueSearchResult { + """ + Retrieves content controlled by the context of a JiraIssueSearchView. + To query multiple content views at once, use GraphQL aliases. + + If a namespace is provided, and a viewId is: + - Not provided, then the last used view is returned within this namespace. + - Provided, then this view is returned if it exists in this namespace. + + If a namespace is not provided, and a viewId is: + - Not provided, then the last used view across any namespace is returned. + - Provided, then this view is returned if it exists in the global namespace. + """ + content(namespace: String, viewId: String): JiraIssueSearchContextualContent + """ + Retrieves content by provided field config set ids, ignoring the active query context. + To query multiple content views at once, use GraphQL aliases. + """ + contentByFieldSetIds(fieldSetIds: [String!]!): JiraIssueSearchContextlessContent +} + +""" +A generic interface for the content of an issue search result in Jira. +""" +interface JiraIssueSearchResultContent { + """ + Retrieves JiraIssue limited by provided pagination params, or global search limits, whichever is smaller. + To retrieve multiple sets of issues, use GraphQL aliases. + + An optimized search is run when only JiraIssue issue ids are requested. + """ + issues( + first: Int + last: Int + before: String + after: String + ): JiraIssueConnection +} + +""" +Represents the contextual content for an issue search result in Jira. +The context here is determined by the JiraIssueSearchView associated with the content. +""" +type JiraIssueSearchContextualContent implements JiraIssueSearchResultContent { + """ + The JiraIssueSearchView that will be used as the context when retrieving JiraIssueField data. + """ + view: JiraIssueSearchView + """ + Retrieves a connection of JiraIssues for the current search context. + """ + issues( + first: Int + last: Int + before: String + after: String + ): JiraIssueConnection +} + +""" +Represents the contextless content for an issue search result in Jira. +There is no JiraIssueSearchView associated with this content and is therefore contextless. +""" +type JiraIssueSearchContextlessContent implements JiraIssueSearchResultContent { + """ + Retrieves a connection of JiraIssues for the current search context. + """ + issues( + first: Int + last: Int + before: String + after: String + ): JiraIssueConnection +} + +""" +Represents a grouping of search data to a particular UI behaviour. +Built-in views are automatically created for certain Jira pages and global Jira system filters. +""" +type JiraIssueSearchView implements Node { + """ + An ARI-format value that encodes both namespace and viewId. + """ + id: ID! + """ + A subscoping that affects where this view's last used data is stored and grouped by. If null, this view is in the global namespace. + """ + namespace: String + """ + A unique identifier for this view within its namespace, or the global namespace if no namespace is defined. + """ + viewId: String + """ + A connection of included fields' configurations, grouped where logical (e.g. collapsed fields). + """ + fieldSets(first: Int, last: Int, before: String, after: String, filter: JiraIssueSearchFieldSetsFilter): JiraIssueSearchFieldSetConnection +} + +""" +Specifies which field config sets should be returned. +""" +enum JiraIssueSearchFieldSetSelectedState { + """ + Both selected and non-selected field config sets. + """ + ALL, + """ + Only the field config sets selected in the current view. + """ + SELECTED, + """ + Only the field config sets that have not been selected in the current view. + """ + NON_SELECTED +} + +""" +A filter for the JiraIssueSearchFieldSet connections. +By default, if no fieldSetSelectedState is specified, only SELECTED fields are returned. +""" +input JiraIssueSearchFieldSetsFilter { + """ + Only the fieldSets that case-insensitively, contain this searchString in their displayName will be returned. + """ + searchString: String, + """ + An enum specifying which field config sets should be returned based on the selected status. + """ + fieldSetSelectedState: JiraIssueSearchFieldSetSelectedState, +} + +""" +A Connection of JiraIssueSearchFieldSet. +""" +type JiraIssueSearchFieldSetConnection { + """ + The total number of JiraIssueSearchFieldSet matching the criteria + """ + totalCount: Int + """ + The page info of the current page of results + """ + pageInfo: PageInfo! + """ + The data for Edges in the current page + """ + edges: [JiraIssueSearchFieldSetEdge] + """ + Indicates if any fields in the column configuration cannot be shown as they're currently unsupported + """ + isWithholdingUnsupportedSelectedFields: Boolean +} + +""" +Represents a field-value edge for a JiraIssueSearchFieldSet. +""" +type JiraIssueSearchFieldSetEdge { + """ + The node at the the edge. + """ + node: JiraIssueSearchFieldSet + """ + The cursor to this edge + """ + cursor: String! +} + +""" +Represents a configurable field in Jira issue searches. +These fields can be used to update JiraIssueSearchViews or to directly query for issue fields. +This mirrors the concept of collapsed fields where all collapsible fields with the same `name` and `type` will be +collapsed into a single JiraIssueSearchFieldSet with `fieldSetId = name[type]`. +Non-collapsible and system fields cannot be collapsed but can still be represented as this type where `fieldSetId = fieldId`. +""" +type JiraIssueSearchFieldSet { + """ + The identifer of the field config set e.g. `assignee`, `reporter`, `checkbox_cf[Checkboxes]`. + """ + fieldSetId: String + """ + The user-friendly name for a JiraIssueSearchFieldSet, to be displayed in the UI. + """ + displayName: String + """ + The field-type of the current field set. + E.g. `Short Text`, `Number`, `Version Picker`, `Team`. + Important note: This information only exists for collapsed fields. + """ + type: String + """ + The jqlTerm for the current field config set. + E.g. `component`, `fixVersion` + """ + jqlTerm: String + """ + Determines whether or not the current field config set is sortable. + """ + isSortable: Boolean + """ + Tracks whether or not the current field config set has been selected. + """ + isSelected: Boolean +} + +""" +The input used for an issue search. +The issue search will either rely on the specified JQL or the specified filter's underlying JQL. + +""" +input JiraIssueSearchInput { + jql: String + filterId: String +} + +""" +The options used for an issue search. +The issueKey determines the target page for search. +Do not provide pagination arguments alongside issueKey. + +""" +input JiraIssueSearchOptions { + issueKey: String +} + +""" +The possible errors that can occur during an issue search. +""" +union JiraIssueSearchError = JiraInvalidJqlError | JiraInvalidSyntaxError + +""" +The representation for an invalid JQL error. +E.g. 'project = TMP' where 'TMP' has been deleted. +""" +type JiraInvalidJqlError { + """ + A list of JQL validation messages. + """ + messages: [String] +} + +""" +The representation for JQL syntax error. +E.g. 'project asdf = TMP'. +""" +type JiraInvalidSyntaxError { + """ + The specific error message. + """ + message: String + """ + The error type of this particular syntax error. + """ + errorType: JiraJqlSyntaxError + """ + The line of the JQL where the JQL syntax error occurred. + """ + line: Int + """ + The column of the JQL where the JQL syntax error occurred. + """ + column: Int +} + +enum JiraJqlSyntaxError { + RESERVED_WORD, + ILLEGAL_ESCAPE, + UNFINISHED_STRING, + ILLEGAL_CHARACTER, + RESERVED_CHARACTER, + UNKNOWN, + ILLEGAL_NUMBER, + EMPTY_FIELD, + EMPTY_FUNCTION, + MISSING_FIELD_NAME, + NO_ORDER, + UNEXPECTED_TEXT, + NO_OPERATOR, + BAD_FIELD_ID, + BAD_PROPERTY_ID, + BAD_FUNCTION_ARGUMENT, + EMPTY_FUNCTION_ARGUMENT, + MISSING_LOGICAL_OPERATOR, + BAD_OPERATOR, + PREDICATE_UNSUPPORTED, + OPERAND_UNSUPPORTED +}# Copied over from jira-project, will extend this type after deprecating rest bridge project + +""" +Represents an Issue type, e.g. story, task, bug. +""" +type JiraIssueType implements Node { + """ + Global identifier of the Issue type. + """ + id: ID! + """ + This is the internal id of the IssueType. + """ + issueTypeId: String + """ + Name of the Issue type. + """ + name: String! + """ + Description of the Issue type. + """ + description: String + """ + Avatar of the Issue type. + """ + avatar: JiraAvatar + """ + The IssueType hierarchy level + """ + hierarchy: JiraIssueTypeHierarchyLevel +} + +""" +The connection type for JiraIssueType. +""" +type JiraIssueTypeConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraIssueTypeEdge] +} + +""" +An edge in a JiraCommentConnection connection. +""" +type JiraIssueTypeEdge { + """ + The node at the the edge. + """ + node: JiraIssueType + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The Jira IssueType hierarchy level. +Hierarchy levels represent Issue parent-child relationships using an integer scale. +""" +type JiraIssueTypeHierarchyLevel { + """ + The global hierarchy level of the IssueType. + E.g. -1 for the subtask level, 0 for the base level, 1 for the epic level. + """ + level: Int + """ + The name of the IssueType hierarchy level. + """ + name: String +} +extend type JiraQuery { + """ + Returns an Issue by the Issue Key and Jira instance Cloud ID. + """ + issueByKey ( + key: String! + cloudId: ID! + ): JiraIssue + + """ + Returns an Issue by the Issue ID and Jira instance Cloud ID. + """ + issueById ( + id: ID! + ): JiraIssue + + """ + Returns an Issue by the issue ID (ARI). + Prefer this over issueByKey/issueById as the latter are still experimental. + """ + issue( + id: ID + ): JiraIssue + + """ + Returns Issues by the Issue ID. + At first input and output sizes are limited to 1 per API call. + Once the bulk API is implemented, input and output sizes will be limited to 50 per API call. + The server will return an error if the limit is exceeded. + """ + issuesById ( + ids: [ID!]! + ): [JiraIssue] + + """ + Returns Screen Id by the Issue ID. + """ + screenIdByIssueId( + issueId: ID! + ): Long @deprecated(reason: "The screen concept has been deprecated, and is only used for legacy reasons.") + + """ + Returns Screen Id by the Issue Key. + """ + screenIdByIssueKey ( + issueKey: String! + ): Long @deprecated(reason: "The screen concept has been deprecated, and is only used for legacy reasons.") + + """ + Returns comments by the Issue ID and the Comment ID. + At first input and output sizes are limited to 1 per API call. + Once the bulk API is implemented, input and output sizes will be limited to 50 per API call. + The server will return an error if the limit is exceeded. + """ + commentsById ( + input: [JiraCommentByIdInput!]! + ): [JiraComment] + + """ + The id of the tenant's epic link field. + """ + epicLinkFieldKey: String @deprecated(reason: "A temp attribute before issue creation modal supports unified parent") +}extend type JiraQuery { + """ + Retrieves application properties for the given instance. + + Returns an array containing application properties for each of the provided keys. If a matching application property + cannot be found, then no entry is added to the array for that key. + + A maximum of 50 keys can be provided. If the limit is exceeded then then an error may be returned. + """ + applicationPropertiesByKey(cloudId: ID!, keys: [String!]!): [JiraApplicationProperty!] +} + +""" +Jira application properties is effectively a key/value store scoped to a Jira instance. A JiraApplicationProperty +represents one of these key/value pairs, along with associated metadata about the property. +""" +type JiraApplicationProperty implements Node { + """ + Globally unique identifier + """ + id: ID!, + + """ + The unique key of the application property + """ + key: String!, + + """ + Although all application properties are stored as strings, they notionally have a type (e.g. boolean, int, enum, + string). The type can be anything (for example, there is even a colour type), and there may be associated validation + on the server based on the property's type. + """ + type: String!, + + """ + The value of the application property, encoded as a string. If no value is stored the default value will + be returned. + """ + value: String!, + + """ + The default value which will be returned if there is no value stored. This might be useful for UIs which allow a + user to 'reset' an application property to the default value. + """ + defaultValue: String!, + + """ + The human readable name for the application property. If no human readable name has been defined then the key will + be returned. + """ + name: String!, + + """ + The human readable description for the application property + """ + description: String, + + """ + Example is mostly used for application properties which store some sort of format pattern (e.g. date formats). + Example will contain an example string formatted according to the format stored in the property. + """ + example: String, + + """ + If the type is 'enum', then allowedValues may optionally contain a list of values which are valid for this property. + Otherwise the value will be null. + """ + allowedValues: [String!], + + """ + True if the user is allowed to edit the property, false otherwise + """ + isEditable: Boolean! +} + +extend type JiraMutation { + """ + Sets application properties for the given instance. + + Takes a list of key/value pairs to be updated, and returns a summary of the mutation result. + """ + setApplicationProperties(cloudId: ID!, input: [JiraSetApplicationPropertyInput!]!): JiraSetApplicationPropertiesPayload +} + +""" +The key of the property you want to update, and the new value you want to set it to +""" +input JiraSetApplicationPropertyInput { + key: String!, + value: String! +} + +type JiraSetApplicationPropertiesPayload implements Payload { + """ + True if the mutation was successfully applied. False if the mutation was either partially successful or if the + mutation failed completely. + """ + success: Boolean!, + + """ + A list of errors which encountered during the mutation + """ + errors: [MutationError!], + + """ + A list of application properties which were successfully updated + """ + applicationProperties: [JiraApplicationProperty!]! +} +type JiraQuery { + "Empty types are not allowed in schema language, even if they are later extended" + _empty: String +} + +type Mutation { + """ + this field is added to enable self governed onboarding of Jira GraphQL types to AGG + see https://hello.atlassian.net/wiki/spaces/PSRV/pages/1010287708/Announcing+self+governed+APIs for more details + """ + jira: JiraMutation +} + +type JiraMutation { + "Empty types are not allowed in schema language, even if they are later extended" + _empty: String +} +extend type JiraQuery { + """ + Grabs jira entities that have been favourited, filtered by type. + """ + favourites( + cloudId: ID!, + filter: JiraFavouriteFilter!, + first: Int, + after: String, + last: Int, + before: String + ): JiraFavouriteConnection! +} + +type JiraFavouriteConnection { + edges: [JiraFavouriteEdge] + pageInfo: PageInfo! +} + +type JiraFavouriteEdge { + node: JiraFavourite + cursor: String! +} + +input JiraFavouriteFilter { + """The Jira entity type to get.""" + type: JiraFavouriteType! +} + +"""Currently supported favouritable entities in Jira.""" +enum JiraFavouriteType { + PROJECT +} + +union JiraFavourite = JiraProject +extend type JiraQuery { + """ + A parent field to get information about a given Jira filter. The id provided must be in ARI format. + """ + filter (id: ID!): JiraFilter + + """ + A field to get a list of favourited filters. + """ + favouriteFilters ( + """ + The cloud id of the tenant. + """ + cloudId: ID! + + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraFilterConnection + + """ + A field to get a list of system filters. Accepts `isFavourite` argument to return list of favourited system filters or to exclude favourited + filters from the list. + """ + systemFilters ( + """ + The cloud id of the tenant. + """ + cloudId: ID! + + """ + Whether the filters are favourited by the user. + """ + isFavourite: Boolean, + + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraSystemFilterConnection +} + +""" +JiraFilterResult can resolve to a system filter, custom filter or a QueryError when filter does not exist or the user has no permission to access the filter. +""" +union JiraFilterResult = JiraCustomFilter | JiraSystemFilter | QueryError + +""" +A generic interface for Jira Filter. +""" +interface JiraFilter implements Node { + """ + An ARI value in the format `ari:cloud:jira:{siteId}:filter/activation/{activationId}/{filterId}`that encodes the filterId. + """ + id: ID! + + """ + A tenant local filterId. This value is used for interoperability with REST APIs (eg vendors). + """ + filterId: String! + + """ + JQL associated with the filter. + """ + jql: String! + + """ + A string representing the filter name. + """ + name: String! + + """ + Determines whether the filter is currently starred by the user viewing the filter. + """ + isFavourite: Boolean +} + +""" +Represents a pre-defined filter in Jira. +""" +type JiraSystemFilter implements JiraFilter & Node { + """ + An ARI value in the format `ari:cloud:jira:{siteId}:filter/activation/{activationId}/{filterId}`that encodes the filterId. + """ + id: ID! + + """ + A tenant local filterId. For system filters the ID is in the range from -9 to -1. This value is used for interoperability with REST APIs (eg vendors). + """ + filterId: String! + + """ + JQL associated with the filter. + """ + jql: String! + + """ + A string representing the filter name. + """ + name: String! + + """ + Determines whether the filter is currently starred by the user viewing the filter. + """ + isFavourite: Boolean +} + +""" +Represents a user generated custom filter. +""" +type JiraCustomFilter implements JiraFilter & Node { + """ + An ARI value in the format `ari:cloud:jira:{siteId}:filter/activation/{activationId}/{filterId}`that encodes the filterId. + """ + id: ID! + + """ + A tenant local filterId. This value is used for interoperability with REST APIs (eg vendors). + """ + filterId: String! + + """ + JQL associated with the filter. + """ + jql: String! + + """ + The user that owns the filter. + """ + ownerAccountId: String + + """ + A string representing the filter name. + """ + name: String! + + """ + A string containing filter description. + """ + description: String + + """ + Determines whether the filter is currently starred by the user viewing the filter. + """ + isFavourite: Boolean + + """ + Determines whether the user has permissions to edit the filter + """ + isEditable: Boolean + + """ + Retrieves a connection of email subscriptions for the filter. + """ + emailSubscriptions( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraFilterEmailSubscriptionConnection + + """ + Retrieves a connection of share grants for the filter. Share grants represent collections of users who can access the filter. + """ + shareGrants( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraShareableEntityShareGrantConnection + + """ + Retrieves a connection of edit grants for the filter. Edit grants represent collections of users who can edit the filter. + """ + editGrants( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraShareableEntityEditGrantConnection +} + +""" +Represents connection of JiraFilters +""" +type JiraFilterConnection { + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + + """ + The data for the edges in the current page. + """ + edges: [JiraFilterEdge] +} + +""" +Represents a filter edge +""" +type JiraFilterEdge { + """ + The node at the edge + """ + node: JiraFilter + + """ + The cursor to this edge + """ + cursor: String! +} + +""" +Represents connection of JiraSystemFilters +""" +type JiraSystemFilterConnection { + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + + """ + The data for the edges in the current page. + """ + edges: [JiraSystemFilterEdge] +} + +""" +Represents a system filter edge +""" +type JiraSystemFilterEdge { + """ + The node at the edge + """ + node: JiraSystemFilter + + """ + The cursor to this edge + """ + cursor: String! +} + +""" +Represents an email subscription to a Jira Filter +""" +type JiraFilterEmailSubscription implements Node { + """ + ARI of the email subscription. + """ + id: ID! + + """ + User that created the subscription. If no group is specified then the subscription is personal for this user. + """ + userAccountId: String + + """ + The group subscribed to the filter. + """ + group: JiraGroup +} + +""" +Represents a connection of JiraFilterEmailSubscriptions. +""" +type JiraFilterEmailSubscriptionConnection { + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + + """ + The data for the edges in the current page. + """ + edges: [JiraFilterEmailSubscriptionEdge] +} + +""" +Represents a filter email subscription edge +""" +type JiraFilterEmailSubscriptionEdge { + """ + The node at the edge + """ + node: JiraFilterEmailSubscription + + """ + The cursor to this edge + """ + cursor: String! +} + +extend type JiraMutation { + jiraFilterMutation: JiraFilterMutation +} + +""" +Mutations for JiraFilters +""" +type JiraFilterMutation { + """ + Mutation to create JiraCustomFilter + """ + createJiraCustomFilter(cloudId: ID!, input: JiraCreateCustomFilterInput!): JiraCreateCustomFilterPayload + """ + Mutation to update JiraCustomFilter details + """ + updateJiraCustomFilterDetails(input: JiraUpdateCustomFilterDetailsInput!): JiraUpdateCustomFilterPayload + """ + Mutation to update JiraCustomFilter JQL + """ + updateJiraCustomFilterJql(input: JiraUpdateCustomFilterJqlInput!): JiraUpdateCustomFilterJqlPayload +} + + +""" +The payload returned after creating a JiraCustomFilter. +""" +type JiraCreateCustomFilterPayload implements Payload { + """ + Was this mutation successful + """ + success: Boolean! + """ + A list of errors if the mutation was not successful + """ + errors: [MutationError!] + """ + JiraFilter created or updated by the mutation + """ + filter: JiraCustomFilter +} + + +""" +The payload returned after updating a JiraCustomFilter. +""" +type JiraUpdateCustomFilterPayload implements Payload { + """ + Was this mutation successful + """ + success: Boolean! + """ + A list of errors if the mutation was not successful + """ + errors: [MutationError!] + """ + JiraFilter created or updated by the mutation + """ + filter: JiraCustomFilter +} + +""" +The payload returned after updating a JiraCustomFilter's JQL. +""" +type JiraUpdateCustomFilterJqlPayload implements Payload { + """ + Was this mutation successful + """ + success: Boolean! + """ + A list of errors if the mutation was not successful + """ + errors: [MutationError!] + """ + JiraFilter updated by the mutation + """ + filter: JiraCustomFilter +} + +""" +Error extension for filter name validation errors. +""" +type JiraFilterNameMutationErrorExtension implements MutationErrorExtension { + """ + A numerical code (example: HTTP status code) representing the error category + For example: 412 for operation preconditions failure. + """ + statusCode: Int + """ + Application specific error type in human readable format. + For example: FilterNameError + """ + errorType: String +} + +""" +Input for creating a JiraCustomFilter. +""" +input JiraCreateCustomFilterInput { + """ + JQL associated with the filter + """ + jql: String! + """ + A string representing the name of the filter + """ + name: String! + """ + A string containing filter description + """ + description: String + """ + Determines whether the filter is currently starred by the user viewing the filter + """ + isFavourite: Boolean! + """ + The list of share grants for the filter. Share Grants represent different ways that users have been granted access to the filter. + Empty array represents private and null represents default share grant. + """ + shareGrants: [JiraShareableEntityShareGrantInput]! + """ + The list of edit grants for the filter. Edit Grants represent different ways that users have been granted access to edit the filter. + Empty array represents private edit grant. + """ + editGrants: [JiraShareableEntityEditGrantInput]! +} + +""" +Input for updating a JiraCustomFilter. +""" +input JiraUpdateCustomFilterDetailsInput { + """ + ARI of the filter + """ + id: ID! + """ + A string representing the name of the filter + """ + name: String! + """ + A string containing filter description + """ + description: String + """ + The list of share grants for the filter. Share Grants represent different ways that users have been granted access to the filter. + Empty array represents private share grant. + """ + shareGrants: [JiraShareableEntityShareGrantInput]! + """ + The list of edit grants for the filter. Edit Grants represent different ways that users have been granted access to edit the filter. + Empty array represents private edit grant. + """ + editGrants: [JiraShareableEntityEditGrantInput]! +} + +""" +Input for updating the JQL of a JiraCustomFilter. +""" +input JiraUpdateCustomFilterJqlInput { + """ + An ARI-format value that encodes the filterId. + """ + id: ID! + """ + JQL associated with the filter + """ + jql: String! +} +""" +The grant types to share or edit ShareableEntities. +""" +enum JiraShareableEntityGrant { + """ + The anonymous access represents the public access without logging in. + """ + ANONYMOUS_ACCESS + + """ + Any user who has the product access. + """ + ANY_LOGGEDIN_USER_APPLICATION_ROLE + + """ + A group is a collection of users who can be given access together. + It represents group in the organization's user base. + """ + GROUP + + """ + A project or a role that user can play in a project. + """ + PROJECT + + """ + A project or a role that user can play in a project. + """ + PROJECT_ROLE + + """ + Indicates that the user does not have access to the project + the members of which have been granted permission. + """ + PROJECT_UNKNOWN + + """ + An individual user who can be given the access to work on one or more projects. + """ + USER + +} + +""" +Union of grant types to share entities. +""" +union JiraShareableEntityShareGrant = JiraShareableEntityGroupGrant | JiraShareableEntityProjectRoleGrant | JiraShareableEntityProjectGrant | JiraShareableEntityAnonymousAccessGrant | JiraShareableEntityAnyLoggedInUserGrant | JiraShareableEntityUnknownProjectGrant + +""" +Union of grant types to edit entities. +""" +union JiraShareableEntityEditGrant = JiraShareableEntityGroupGrant | JiraShareableEntityProjectRoleGrant | JiraShareableEntityUserGrant | JiraShareableEntityProjectGrant | JiraShareableEntityUnknownProjectGrant + +""" +GROUP grant type. +""" +type JiraShareableEntityGroupGrant { + """ + 'GROUP' type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant + + """ + Jira Group, members of which will be granted permission. + """ + group: JiraGroup +} + +""" +PROJECT grant type. +""" +type JiraShareableEntityProjectGrant { + """ + 'PROJECT_ROLE' type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant + + """ + Jira Project, members of which will have the permission. + """ + project: JiraProject +} + +""" +PROJECT_ROLE grant type. +""" +type JiraShareableEntityProjectRoleGrant { + """ + 'PROJECT_ROLE' type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant + + """ + Jira Project, members of which will have the permission. + """ + project: JiraProject + + """ + Users with the specified Jira Project Role in the Jira Project will have have the permission. + If no role is specified then all members of the project have the permisison. + """ + role: JiraRole +} + +""" +ANONYMOUS_ACCESS grant type. +""" +type JiraShareableEntityAnonymousAccessGrant { + """ + 'ANONYMOUS_ACCESS' type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant +} + +""" +ANY_LOGGEDIN_USER_APPLICATION_ROLE grant type. +""" +type JiraShareableEntityAnyLoggedInUserGrant { + """ + 'ANY_LOGGEDIN_USER_APPLICATION_ROLE' type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant +} + +""" +USER grant type +""" +type JiraShareableEntityUserGrant { + """ + 'USER' grant type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant + + """ + User that is granted the permission + """ + userAccountId: String +} + +""" +PROJECT_UNKNOWN grant type +""" +type JiraShareableEntityUnknownProjectGrant { + """ + PROJECT_UNKNOWN grant type of Jira ShareableEntity Grant Types. + """ + type: JiraShareableEntityGrant +} + +""" +Represents a connection of share permissions for a shared entity. +""" +type JiraShareableEntityShareGrantConnection { + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + + """ + The data for the edges in the current page. + """ + edges: [JiraShareableEntityShareGrantEdge] +} + +""" +Represents a share permission edge for a shared entity. +""" +type JiraShareableEntityShareGrantEdge { + """ + The node at the the edge. + """ + node: JiraShareableEntityShareGrant + + """ + The cursor to this edge. + """ + cursor: String +} + +""" +Represents a connection of edit permissions for a shared entity. +""" +type JiraShareableEntityEditGrantConnection { + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + + """ + The data for the edges in the current page. + """ + edges: [JiraShareableEntityEditGrantEdge] +} + +""" +Represents an edit permission edge for a shared entity. +""" +type JiraShareableEntityEditGrantEdge { + """ + The node at the the edge. + """ + node: JiraShareableEntityEditGrant + + """ + The cursor to this edge. + """ + cursor: String +} + +# INPUTS + +""" +Input type for JiraShareableEntityShareGrants. +""" +input JiraShareableEntityShareGrantInput { + """ + User group that will be granted permission. + """ + group: JiraShareableEntityGroupGrantInput + + """ + Members of the specified project will be granted permission. + """ + project: JiraShareableEntityProjectGrantInput + + """ + Users with the specified role in the project will be granted permission. + """ + projectRole: JiraShareableEntityProjectRoleGrantInput + """ + All users with access to the instance and anonymous users will be granted permission. + """ + anonymousAccess: JiraShareableEntityAnonymousAccessGrantInput + """ + All users with access to the instance will be granted permission. + """ + anyLoggedInUser: JiraShareableEntityAnyLoggedInUserGrantInput +} + +""" +Input type for JiraShareableEntityEditGrants. +""" +input JiraShareableEntityEditGrantInput { + """ + User group that will be granted permission. + """ + group: JiraShareableEntityGroupGrantInput + + """ + Members of the specifid project will be granted permission. + """ + project: JiraShareableEntityProjectGrantInput + + """ + Users with the specified role in the project will be granted permission. + """ + projectRole: JiraShareableEntityProjectRoleGrantInput + + """ + User that will be granted permission. + """ + user: JiraShareableEntityUserGrantInput +} + +""" +Input for the group that will be granted permission. +""" +input JiraShareableEntityGroupGrantInput { + """ + JiraShareableEntityGrant ARI. + """ + id: ID + + """ + Id of the user group + """ + groupId: ID! +} + +""" +Input for the project ID, members of which will be granted permission. +""" +input JiraShareableEntityProjectGrantInput { + """ + JiraShareableEntityGrant ARI. + """ + id: ID + """ + ARI of the project in the format `ari:cloud:jira:{siteId}:project/{projectId}`. + """ + projectId: ID! +} + +""" +Input for the id of the role. +Users with the specified role will be granted permission. +""" +input JiraShareableEntityProjectRoleGrantInput { + """ + JiraShareableEntityGrant ARI. + """ + id: ID + """ + ARI of the project in the format `ari:cloud:jira:{siteId}:project/{projectId}`. + """ + projectId: ID! + """ + Tenant local roleId. + """ + projectRoleId: Int! +} + +""" +Input for user that will be granted permission. +""" +input JiraShareableEntityUserGrantInput { + """ + JiraShareableEntityGrant ARI. + """ + id: ID + """ + ARI of the user in the form of ARI: ari:cloud:identity::user/{userId}. + """ + userId: ID! +} + +""" +Input for when the shareable entity is intended to be shared with all users on a Jira instance +and anonymous users. +""" +input JiraShareableEntityAnonymousAccessGrantInput { + """ + JiraShareableEntityGrant ARI. + """ + id: ID +} + +""" +Input for when the shareable entity is intended to be shared with all users on a Jira instance +and NOT anonymous users. +""" +input JiraShareableEntityAnyLoggedInUserGrantInput { + """ + JiraShareableEntityGrant ARI. + """ + id: ID +} +extend type JiraQuery { + """ + A parent field to get information about jql related aspects from a given jira instance. + """ + jqlBuilder(cloudId: ID!): JiraJqlBuilder +} + +""" +Encapsulates queries and fields necessary to power the JQL builder. + +It also exposes generic JQL capabilities that can be leveraged to power other experiences. +""" +type JiraJqlBuilder { + """ + A list of available JQL functions. + """ + functions: [JiraJqlFunction!]! + + """ + The last used JQL builder search mode. + + This can either be the Basic or JQL search mode. + """ + lastUsedMode: JiraJqlBuilderMode + + """ + Hydrates the JQL fields and field-values of a given JQL query. + """ + hydrateJqlQuery(query: String): JiraJqlHydratedQueryResult + """ + Hydrates the JQL fields and field-values of a filter corresponding to the provided filter ID. + + The id provided MUST be in ARI format. + + This query will error if the id parameter is not in ARI format, does not pass validation or does not correspond to a JiraFilter. + """ + hydrateJqlQueryForFilter(id: ID!): JiraJqlHydratedQueryResult + + """ + Retrieves a connection of searchable Jira JQL fields. + + In a given JQL, fields will precede operators and operators precede field-values/ functions. + + E.g. `${FIELD} ${OPERATOR} ${FUNCTION}()` => `Assignee = currentUser()` + """ + fields( + """ + The JQL query that will be parsed and used to form a search context. + + Only the Jira fields that are scoped to this search context will be returned. + + E.g. `Project IN (KEY1, KEY2) AND issueType = Task`. + """ + jqlContext: String + """ + Only the fields that contain this searchString in their displayName will be returned. + """ + searchString: String + """ + Only the fields that support the provided JqlClauseType will be returned. + """ + forClause: JiraJqlClauseType + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified the cursor is assumed to be the beginning. + """ + after: String + ): JiraJqlFieldConnectionResult + + """ + Retrieves a connection of Jira fields recently used in JQL searches. + """ + recentFields( + """ + The JQL query that will be parsed and used to form a search context. + + Only the Jira fields that are scoped to this search context will be returned. + + E.g. `Project IN (KEY1, KEY2) AND issueType = Task`. + """ + jqlContext: String + """ + Only the Jira fields that support the provided forClause will be returned. + """ + forClause: JiraJqlClauseType + """ + The number of items after the cursor to be returned. Either `first` or `last` is required. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. Either `first` or `last` is required. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlFieldConnectionResult + + """ + Retrieves a connection of field-values for a specified Jira Field. + + E.g. A given Jira checkbox field may have the following field-values: `Option 1`, `Option 2` and `Option 3`. + """ + fieldValues( + """ + The JQL query that will be parsed and used to form a search context. + + Only the Jira fields that are scoped to this search context will be returned. + + E.g. `Project IN (KEY1, KEY2) AND issueType = Task` + """ + jqlContext: String + """ + An identifier that a client should use in a JQL query when it’s referring to a field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + Only the Jira field-values with their diplayName matching this searchString will be retrieved. + """ + searchString: String + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified the cursor is assumed to be the beginning. + """ + after: String + ): JiraJqlFieldValueConnection + + """ + Retrieves a connection of users recently used in Jira user fields. + """ + recentlyUsedUsers( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlUserFieldValueConnection + + """ + Retrieves a connection of suggested groups. + + Groups are suggested when the current user is a member. + """ + suggestedGroups( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlGroupFieldValueConnection + + """ + Retrieves a connection of projects that have recently been viewed by the current user. + """ + recentlyUsedProjects( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlProjectFieldValueConnection + + """ + Retrieves a connection of sprints that have recently been viewed by the current user. + """ + recentlyUsedSprints( + """ + The JQL query that will be parsed and used to form a search context. + + Only the Jira fields that are scoped to this search context will be returned. + + E.g. `Project IN (KEY1, KEY2) AND issueType = Task` + """ + jqlContext: String + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlSprintFieldValueConnection + + """ + Retrieves the field-values for the Jira issueType field. + """ + issueTypes(jqlContext: String): JiraJqlIssueTypes + + """ + Retrieves the field-values for the Jira cascading options field. + """ + cascadingSelectOptions( + """ + The number of items to be sliced away to target between the after and before cursors. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + The JQL query that will be parsed and used to form a search context. + + Only the Jira fields that are scoped to this search context will be returned. + + E.g. `Project IN (KEY1, KEY2) AND issueType = Task` + """ + jqlContext: String + """ + An identifier that a client should use in a JQL query when it’s referring to an instance of a Jira cascading option field. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + Only the Jira field-values with their diplayName matching this searchString will be retrieved. + """ + searchString: String + """ + Only the cascading options matching this filter will be retrieved. + """ + filter: JiraCascadingSelectOptionsFilter! + ): JiraJqlOptionFieldValueConnection + + """ + Retrieves the field-values for the Jira version field. + """ + versions( + """ + The JQL query that will be parsed and used to form a search context. + + Only the Jira fields that are scoped to this search context will be returned. + + E.g. `Project IN (KEY1, KEY2) AND issueType = Task`. + """ + jqlContext: String, + """ + An identifier that a client should use in a JQL query when it’s referring to an instance of a Jira version field. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + ): JiraJqlVersions +} + +""" +A function in JQL appears as a word followed by parentheses, which may contain one or more explicit values or Jira fields. + +In a clause, a function is preceded by an operator, which in turn is preceded by a field. + +A function performs a calculation on either specific Jira data or the function's content in parentheses, +such that only true results are retrieved by the function, and then again by the clause in which the function is used. + +E.g. `approved()`, `currentUser()`, `endOfMonth()` etc. +""" +type JiraJqlFunction { + """ + The user-friendly name for the function, to be displayed in the UI. + """ + displayName: String + """ + A JQL-function safe encoded name. This value will not be encoded if the displayName is already safe. + """ + value: String + """ + Indicates whether or not the function is meant to be used with IN or NOT IN operators, that is, + if the function should be viewed as returning a list. + + The method should return false when it is to be used with the other relational operators (e.g. =, !=, <, >, ...) + that only work with single values. + """ + isList: Boolean + """ + The data types that this function handles and creates values for. + + This allows consumers to infer information on the JiraJqlField type such as which functions are supported. + """ + dataTypes: [String!]! +} + +""" +The modes the JQL builder can be displayed and used in. +""" +enum JiraJqlBuilderMode { + """ + The JQL mode, allows queries to be built and executed via the JQL advanced editor. + + This mode allows users to manually type and construct complex JQL queries. + """ + JQL + """ + The basic mode, allows queries to be built and executed via the JQL basic editor. + + This mode allows users to easily construct JQL queries by interacting with the UI. + """ + BASIC +} + +""" +A union of a Jira JQL hydrated query and a GraphQL query error. +""" +union JiraJqlHydratedQueryResult = JiraJqlHydratedQuery | QueryError + +""" +Represents a JQL query with hydrated fields and field-values. +""" +type JiraJqlHydratedQuery { + """ + The JQL query to be hydrated. + """ + jql: String + """ + A list of hydrated fields from the provided JQL. + """ + fields: [JiraJqlQueryHydratedFieldResult!]! +} + +""" +A union of a JQL query hydrated field and a GraphQL query error. +""" +union JiraJqlQueryHydratedFieldResult = + JiraJqlQueryHydratedField + | JiraJqlQueryHydratedError + +""" +Represents an error for a JQL query hydration. +""" +type JiraJqlQueryHydratedError { + """ + An identifier for the hydrated Jira JQL field where the error occurred. + """ + jqlTerm: String! + """ + The error that occurred whilst hydrating the Jira JQL field. + """ + error: QueryError +} + +""" +Represents a hydrated field for a JQL query. +""" +type JiraJqlQueryHydratedField { + """ + An identifier for the hydrated Jira JQL field. + """ + jqlTerm: String! + """ + The Jira JQL field associated with the hydrated field. + """ + field: JiraJqlField! + """ + The hydrated value results. + """ + values: [JiraJqlQueryHydratedValueResult]! +} + +""" +A union of a JQL query hydrated field-value and a GraphQL query error. +""" +union JiraJqlQueryHydratedValueResult = + JiraJqlQueryHydratedValue + | JiraJqlQueryHydratedError + +""" +Represents a hydrated field-value for a given field in the JQL query. +""" +type JiraJqlQueryHydratedValue { + """ + An identifier for the hydrated Jira JQL field value. + """ + jqlTerm: String! + """ + The hydrated field values. + """ + values: [JiraJqlFieldValue]! +} + +""" +A union of a Jira JQL field connection and a GraphQL query error. +""" +union JiraJqlFieldConnectionResult = JiraJqlFieldConnection | QueryError + +""" +Represents a connection of Jira JQL fields. +""" +type JiraJqlFieldConnection { + """ + The total number of JiraJqlFields matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlFieldEdge] +} + +""" +Represents a Jira JQL field edge. +""" +type JiraJqlFieldEdge { + """ + The node at the edge. + """ + node: JiraJqlField + """ + The cursor to this edge. + """ + cursor: String! +} + + +""" +The representation of a Jira field within the context of the Jira Query Language. +""" +type JiraJqlField { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira JQL field. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: ID! + """ + The user-friendly name for the current field, to be displayed in the UI. + """ + displayName: String + """ + The data types handled by the current field. + These can be used to identify which JQL functions are supported. + """ + dataTypes: [String] + """ + The JQL clause types that can be used with this field. + """ + allowedClauseTypes: [JiraJqlClauseType!]! + """ + The JQL operators that can be used with this field. + """ + operators: [JiraJqlOperator!]! + """ + Defines how a field should be represented in the basic search mode of the JQL builder. + """ + searchTemplate: JiraJqlSearchTemplate + """ + Defines how the field-values should be shown for a field in the JQL-Builder's JQL mode. + """ + autoCompleteTemplate: JiraJqlAutocompleteType + """ + The field-type of the current field. + E.g. `Short Text`, `Number`, `Version Picker`, `Team` etc. + Important note: This information only exists for collapsed fields. + """ + jqlFieldType: JiraJqlFieldType + """ + Determines whether or not the current field should be accessible in the current search context. + """ + shouldShowInContext: Boolean +} + +""" +The types of JQL clauses supported by Jira. +""" +enum JiraJqlClauseType { + """ + This denotes both WHERE and ORDER_BY. + """ + ANY + """ + This corresponds to jql fields used as filter criteria of Jira issues. + """ + WHERE + """ + This corresponds to fields used to sort Jira Issues. + """ + ORDER_BY +} + +""" +The types of JQL operators supported by Jira. + +An operator in JQL is one or more symbols or words,which compares the value of a field on its left with one or more values (or functions) on its right, +such that only true results are retrieved by the clause. + +For more information on JQL operators please visit: https://support.atlassian.com/jira-software-cloud/docs/advanced-search-reference-jql-operators. +""" +enum JiraJqlOperator { + """ + The `=` operator is used to search for issues where the value of the specified field exactly matches the specified value. + """ + EQUALS + """ + The `!=` operator is used to search for issues where the value of the specified field does not match the specified value. + """ + NOT_EQUALS + """ + The `IN` operator is used to search for issues where the value of the specified field is one of multiple specified values. + """ + IN + """ + The `NOT IN` operator is used to search for issues where the value of the specified field is not one of multiple specified values. + """ + NOT_IN + """ + The `IS` operator can only be used with EMPTY or NULL. That is, it is used to search for issues where the specified field has no value. + """ + IS + """ + The `IS NOT` operator can only be used with EMPTY or NULL. That is, it is used to search for issues where the specified field has a value. + """ + IS_NOT + """ + The `<` operator is used to search for issues where the value of the specified field is less than the specified value. + """ + LESS_THAN + """ + The `<=` operator is used to search for issues where the value of the specified field is less than or equal to than the specified value. + """ + LESS_THAN_OR_EQUAL + """ + The `>` operator is used to search for issues where the value of the specified field is greater than the specified value. + """ + GREATER_THAN + """ + The `>=` operator is used to search for issues where the value of the specified field is greater than or equal to the specified value. + """ + GREATER_THAN_OR_EQUAL + """ + The `CHANGED` operator is used to find issues that have a value that had changed for the specified field. + """ + CONTAINS + """ + The `!~` operator is used to search for issues where the value of the specified field is not a "fuzzy" match for the specified value. + """ + NOT_CONTAINS + """ + The `WAS NOT IN` operator is used to search for issues where the value of the specified field has never been one of multiple specified values. + """ + WAS_NOT_IN + """ + The `CHANGED` operator is used to find issues that have a value that had changed for the specified field. + """ + CHANGED + """ + The `WAS IN` operator is used to find issues that currently have or previously had any of multiple specified values for the specified field. + """ + WAS_IN + """ + The `WAS` operator is used to find issues that currently have or previously had the specified value for the specified field. + """ + WAS + """ + The `WAS NOT` operator is used to find issues that have never had the specified value for the specified field. + """ + WAS_NOT +} + +""" +The representation of a Jira field in the basic search mode of the JQL builder. +""" +type JiraJqlSearchTemplate { + key: String +} + +""" +The autocomplete types available for Jira fields in the context of the Jira Query Language. + +This enum also describes which fields have field-value support from this schema. +""" +enum JiraJqlAutocompleteType { + """ + No autocomplete support. + """ + NONE + """ + The Jira component field JQL autocomplete type. + """ + COMPONENT + """ + The Jira group field JQL autocomplete type. + """ + GROUP + """ + The Jira issue field JQL autocomplete type. + """ + ISSUE + """ + The Jira issue field type JQL autocomplete type. + """ + ISSUETYPE + """ + The Jira priority field JQL autocomplete type. + """ + PRIORITY + """ + The Jira project field JQL autocomplete type. + """ + PROJECT + """ + The Jira sprint field JQL autocomplete type. + """ + SPRINT + """ + The Jira status category field JQL autocomplete type. + """ + STATUSCATEGORY + """ + The Jira status field JQL autocomplete type. + """ + STATUS + """ + The Jira user field JQL autocomplete type. + """ + USER + """ + The Jira version field JQL autocomplete type. + """ + VERSION +} + +""" +The representation of a Jira JQL field-type in the context of the Jira Query Language. + +E.g. `Short Text`, `Number`, `Version Picker`, `Team` etc. + +Important note: This information only exists for collapsed fields. +""" +type JiraJqlFieldType { + """ + The non-translated name of the field type. + """ + jqlTerm: String! + """ + The translated name of the field type. + """ + displayName: String! +} + +""" +Represents a connection of field-values for a JQL field. +""" +type JiraJqlFieldValueConnection { + """ + The total number of JiraJqlFieldValues matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL field. +""" +type JiraJqlFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +A generic interface for JQL fields in Jira. +""" +interface JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira JQL field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a component JQL field value, to be displayed in the UI. + """ + displayName: String! +} + +""" +Represents a field-value for a JQL component field. +""" +type JiraJqlComponentFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira component field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a component JQL field value, to be displayed in the UI. + """ + displayName: String! +} + +""" +Represents a field-value for a JQL group field. +""" +type JiraJqlGroupFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira group field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ) + """ + jqlTerm: String! + """ + The user-friendly name for a group JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira group associated with this JQL field value. + """ + group: JiraGroup! +} + +""" +Represents a field-value for a JQL Issue field. +""" +type JiraJqlIssueFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for an issue JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira issue associated with this JQL field value. + """ + issue: JiraIssue! +} + +""" +Represents a field-value for a JQL issue type field. +""" +type JiraJqlIssueTypeFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira issue type field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for an issue type JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira issue types associated with this JQL field value. + """ + issueTypes: [JiraIssueType!]! +} + +""" +Represents a field-value for a JQL sprint field. +""" +type JiraJqlSprintFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira sprint field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a sprint JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira sprint associated with this JQL field value. + """ + sprint: JiraSprint! +} + +""" +Represents a field-value for a JQL priority field. +""" +type JiraJqlPriorityFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira priority field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a priority JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira property associated with this JQL field value. + """ + priority: JiraPriority! +} + +""" +Represents a field-value for a JQL option field. +""" +type JiraJqlOptionFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira option field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for an option JQL field value, to be displayed in the UI. + """ + displayName: String! +} + +""" +Represents a field-value for a JQL cascading option field. +""" +type JiraJqlCascadingOptionFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira cascading option field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a cascading option JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira JQL parent option associated with this JQL field value. + """ + parentOption: JiraJqlOptionFieldValue +} + +""" +Represents a field-value for a JQL status category field. +""" +type JiraJqlStatusCategoryFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira status category field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a status category JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira status category associated with this JQL field value. + """ + statusCategory: JiraStatusCategory! +} + +""" +Represents a field-value for a JQL status field. +""" +type JiraJqlStatusFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira status field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a status JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira status category associated with this JQL field value. + """ + statusCategory: JiraStatusCategory! +} + +""" +Represents a field-value for a JQL user field. +""" +type JiraJqlUserFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira user field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a user JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The user associated with this JQL field value. + """ + user: User! +} + +""" +Represents a field-value for a JQL resolution field. +""" +type JiraJqlResolutionFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira resolution field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a resolution JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira resolution associated with this JQL field value. + """ + resolution: JiraResolution +} + +""" +Represents a field-value for a JQL label field. +""" +type JiraJqlLabelFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira label field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a label JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira label associated with this JQL field value. + """ + label: JiraLabel +} + +""" +Represents a field-value for a JQL project field. +""" +type JiraJqlProjectFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira project field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a project JQL field value, to be displayed in the UI. + """ + displayName: String! + """ + The Jira project associated with this JQL field value. + """ + project: JiraProject! +} + +""" +Represents a field-value for a JQL version field. +""" +type JiraJqlVersionFieldValue implements JiraJqlFieldValue { + """ + An identifier that a client should use in a JQL query when it’s referring to a Jira version field-value. + + Important note: this jqlTerm could require proper escaping before placing it into a query (e.g. wrap it in "" ). + """ + jqlTerm: String! + """ + The user-friendly name for a version JQL field value, to be displayed in the UI. + """ + displayName: String! +} + +""" +Represents a connection of field-values for a JQL user field. +""" +type JiraJqlUserFieldValueConnection { + """ + The total number of JiraJqlUserFieldValues matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlUserFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL user field. +""" +type JiraJqlUserFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlUserFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents a connection of field-values for a JQL group field. +""" +type JiraJqlGroupFieldValueConnection { + """ + The total number of JiraJqlGroupFieldValues matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlGroupFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL group field. +""" +type JiraJqlGroupFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlGroupFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents a connection of field-values for a JQL project field. +""" +type JiraJqlProjectFieldValueConnection { + """ + The total number of JiraJqlProjectFieldValues matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlProjectFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL project field. +""" +type JiraJqlProjectFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlProjectFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Represents a connection of field-values for a JQL sprint field. +""" +type JiraJqlSprintFieldValueConnection { + """ + The total number of JiraJqlSprintFieldValues matching the criteria + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlSprintFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL sprint field. +""" +type JiraJqlSprintFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlSprintFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +A variation of the fieldValues query for retrieving specifically Jira issue type field-values. +""" +type JiraJqlIssueTypes { + """ + Retrieves top-level issue types that encapsulate all others. + + E.g. The `Epic` issue type in company-managed projects. + """ + aboveBaseLevel( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlIssueTypeFieldValueConnection + """ + Retrieves mid-level issue types. + + E.g. The `Bug`, `Story` and `Task` issue type in company-managed projects. + """ + baseLevel( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlIssueTypeFieldValueConnection + """ + Retrieves the lowest level issue types. + + E.g. The `Subtask` issue type in company-managed projects. + """ + belowBaseLevel( + """ + The number of items after the cursor to be returned, if not specified it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlIssueTypeFieldValueConnection +} + +""" +Represents a connection of field-values for a JQL issue type field. +""" +type JiraJqlIssueTypeFieldValueConnection { + """ + The total number of JiraJqlIssueTypeFieldValues matching the criteria + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlIssueTypeFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL issue type field. +""" +type JiraJqlIssueTypeFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlIssueTypeFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +An input filter used to specify the cascading options returned. +""" +input JiraCascadingSelectOptionsFilter { + """ + The type of cascading option to be returned. + """ + optionType: JiraCascadingSelectOptionType! + """ + Used for retrieving CHILD cascading options by specifying the PARENT cascading option's name. + + The parent name is case-sensitive and it will not be applied to non-child cascading options. + """ + parentOptionName: String +} + +""" +Represents a connection of field-values for a JQL option field. +""" +type JiraJqlOptionFieldValueConnection { + """ + The total number of JiraJqlOptionFieldValues matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlOptionFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL option field. +""" +type JiraJqlOptionFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlOptionFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Cascading options can either be a parent or a child - this enum captures this characteristic. + +E.g. If there is a parent cascading option named `P1`, it may or may not have +child cascading options named `C1` and `C2`. +- `P1` would be a `PARENT` enum +- `C1` and `C2` would be `CHILD` enums +""" +enum JiraCascadingSelectOptionType { + """ + Parent option only + """ + PARENT + """ + Child option only + """ + CHILD + """ + All options, regardless of whether they're a parent or child. + """ + ALL +} + +""" +A variation of the fieldValues query for retrieving specifically Jira version field-values. + +This type provides the capability to retrieve connections of released, unreleased and archived versions. + +Important note: that released and unreleased versions can be archived and vice versa. +""" +type JiraJqlVersions { + """ + Retrieves a connection of released versions. + """ + released( + """ + The number of items to be sliced away to target between the after and before cursors. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Determines whether or not archived versions are returned. By default it will be false. + """ + includeArchived: Boolean + ): JiraJqlVersionFieldValueConnection + """ + Retrieves a connection of unreleased versions. + """ + unreleased( + """ + The number of items to be sliced away to target between the after and before cursors. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + Determines whether or not archived versions are returned. By default it will be false. + """ + includeArchived: Boolean + ): JiraJqlVersionFieldValueConnection + + """ + Retrieves a connection of archived versions. + """ + archived( + """ + The number of items to be sliced away to target between the after and before cursors. + """ + first: Int + """ + The index based cursor to specify the beginning of the items, if not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items to be sliced away from the bottom of the list after slicing with `first` argument. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items, if not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraJqlVersionFieldValueConnection +} + +""" +Represents a connection of field-values for a JQL version field. +""" +type JiraJqlVersionFieldValueConnection { + """ + The total number of JiraJqlVersionFieldValues matching the criteria. + """ + totalCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + The data for the edges in the current page. + """ + edges: [JiraJqlVersionFieldValueEdge] +} + +""" +Represents a field-value edge for a JQL version field. +""" +type JiraJqlVersionFieldValueEdge { + """ + The node at the edge. + """ + node: JiraJqlVersionFieldValue + """ + The cursor to this edge. + """ + cursor: String! +} +""" +The visibility property of a comment within a JSM project type. +""" +enum JiraServiceManagementCommentVisibility { + """ + This comment will appear in the portal, visible to all customers. Also called public. + """ + VISIBLE_TO_HELPSEEKER + """ + This comment will only appear in JIRA's issue view. Also called private. + """ + INTERNAL +} +""" +Represents the label of a custom label field. +""" +type JiraLabel { + """ + The identifier of the label. + Can be null when label is not yet created or label was returned without providing an Issue id. + """ + labelId: String + """ + The name of the label. + """ + name: String +} + +""" +The connection type for JiraLabel. +""" +type JiraLabelConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraLabelEdge] +} + +""" +An edge in a Jiralabel connection. +""" +type JiraLabelEdge { + """ + The node at the edge. + """ + node: JiraLabel + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the language that can be used for fields such as JSM Requested Language. +""" +type JiraServiceManagementLanguage { + """ + A unique language code that represents the language. + """ + languageCode: String + """ + A readable common name for this language. + """ + displayName: String +} +""" +An enum representing possible values for Major Incident JSM field. +""" +enum JiraServiceManagementMajorIncident { + MAJOR_INCIDENT +}""" +Represents a media context used for file uploads. +""" +type JiraMediaContext { + """ + Contains the token information for uploading a media content. + """ + uploadToken: JiraMediaUploadTokenResult +} + +""" +Contains either the successful fetched media token information or an error. +""" +union JiraMediaUploadTokenResult = JiraMediaUploadToken | QueryError + +""" +Contains the information needed for uploading a media content in jira on issue create/view screens. +""" +type JiraMediaUploadToken { + """ + Endpoint where the media content will be uploaded. + """ + endpointUrl: URL + """ + Registered client id of media API. + """ + clientId: String + """ + The collection in which to put the new files. + It can be user-scoped (such as upload-user-collection-*) + or project scoped (such as upload-project-*). + """ + targetCollection: String + """ + token string value which can be used with Media API requests. + """ + token: String + """ + Represents the duration (in minutes) for which token will be valid. + """ + tokenDurationInMin: Int +} +""" +Represents the pair of values (parent & child combination) in a cascading select. +This type is used to represent a selected cascading field value on a Jira Issue. +Since this is 2 level hierarchy, it is not possible to represent the same underlying +type for both single cascadingOption and list of cascadingOptions. Thus, we have created different types. +""" +type JiraCascadingOption { + """ + Defines the parent option value. + """ + parentOptionValue: JiraOption + """ + Defines the selected single child option value for the parent. + """ + childOptionValue: JiraOption +} + +""" +Represents the childs options allowed values for a parent option in cascading select operation. +""" +type JiraCascadingOptions { + """ + Defines the parent option value. + """ + parentOptionValue: JiraOption + """ + Defines all the list of child options available for the parent option. + """ + childOptionValues: [JiraOption] +} + +""" +Represents a single option value in a select operation. +""" +type JiraOption implements Node { + """ + Global Identifier of the option. + """ + id: ID! + """ + Identifier of the option. + """ + optionId: String! + """ + Value of the option. + """ + value: String + """ + Whether or not the option has been disabled by the user. Disabled options are typically not accessible in the UI. + """ + isDisabled: Boolean +} + +""" +The connection type for JiraOption. +""" +type JiraOptionConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraOptionEdge] +} + +""" +An edge in a JiraOption connection. +""" +type JiraOptionEdge { + """ + The node at the edge. + """ + node: JiraOption + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +The connection type for JiraCascadingOptions. +""" +type JiraCascadingOptionsConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraCascadingOptionsEdge] +} + +""" +An edge in a JiraCascadingOptions connection. +""" +type JiraCascadingOptionsEdge { + """ + The node at the edge. + """ + node: JiraCascadingOptions + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the customer organization on an Issue in a JiraServiceManagement project. +""" +type JiraServiceManagementOrganization { + """ + Globally unique id within this schema. + """ + organizationId: ID + """ + The organization's name. + """ + organizationName: String + """ + The organization's domain. + """ + domain: String +} + +""" +The connection type for JiraServiceManagementOrganization. +""" +type JiraServiceManagementOrganizationConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementOrganizationEdge] +} + +""" +An edge in a JiraServiceManagementOrganization connection. +""" +type JiraServiceManagementOrganizationEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementOrganization + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents flags required to determine parent field visibility +""" +type JiraParentVisibility { + """ + Flag to disable editing the Parent Link field and showing the error that the issue has an epic link set, and thus cannot use the Parent Link field. + """ + hasEpicLinkFieldDependency: Boolean + """ + Flag which along with hasEpicLinkFieldDependency is used to determine the Parent Link field visiblity. + """ + canUseParentLinkField: Boolean +} +""" +Contains either the group or the projectRole associated with a comment/worklog, but not both. +If both are null, then the permission level is unspecified and the comment/worklog is public. +""" +type JiraPermissionLevel { + """ + The Jira Group associated with the comment/worklog. + """ + group: JiraGroup + """ + The Jira ProjectRole associated with the comment/worklog. + """ + role: JiraRole +} +""" +A permission scheme is a collection of permission grants. +""" +type JiraPermissionScheme implements Node { + "The ARI of the permission scheme." + id: ID! + "The display name of the permission scheme." + name: String! + "The description of the permission scheme." + description: String +} + +""" +The project permission in Jira and it is scoped to projects. +""" +type JiraProjectPermission { + "The unique key of the permission." + key: String! + "The display name of the permission." + name: String! + "The description of the permission." + description: String! + "The category of the permission." + type: JiraProjectPermissionCategory! +} + +""" +The category of the project permission. +The category information is typically seen in the permission scheme Admin UI. +It is used to group the project permissions in general and available for connect app developers when registering new project permissions. +""" +type JiraProjectPermissionCategory { + "The unique key of the permission category." + key: JiraProjectPermissionCategoryEnum! + "The display name of the permission category." + name: String! +} + +""" +The category of the project permission. +It represents the logical grouping of the project permissions. +""" +enum JiraProjectPermissionCategoryEnum { + "Represents one or more permissions applicable at project level such as project administration, view project information, and manage sprints." + PROJECTS + "Represents one or more permissions applicable at issue level to manage operations such as create, delete, edit, and transition." + ISSUES + "Represents one or more permissions to manage watchers and voters of an issue." + VOTERS_AND_WATCHERS + "Represents one or more permissions to manage issue comments such as add, delete and edit." + COMMENTS + "Represents one or more permissions to manage issue attacments such as create and delete." + ATTACHMENTS + "Represents one or more permissions to manage worklogs, time tracking for billing purpose in some cases." + TIME_TRACKING + "Represents one or more permissions representing default category if not any other existing category." + OTHER +} + +""" +The unique key of the grant type such as PROJECT_ROLE. +""" +type JiraGrantTypeKey { + "The key to identify the grant type such as PROJECT_ROLE." + key: JiraGrantTypeKeyEnum! + "The display name of the grant type key such as Project Role." + name: String! +} + +""" +The grant type key enum represents all the possible grant types available in Jira. +A grant type may take an optional parameter value. +For example: PROJECT_ROLE grant type takes project role id as parameter. And, PROJECT_LEAD grant type do not. + +The actual ARI formats are documented on the various concrete grant type values. +""" +enum JiraGrantTypeKeyEnum { + """ + A role that user/group can play in a project. + It takes project role as parameter. + """ + PROJECT_ROLE + + """ + A application role is used to grant a user/group access to the application group. + It takes application role as parameter. + """ + APPLICATION_ROLE + + """ + An individual user who can be given the access to work on one or more projects. + It takes user account id as parameter. + """ + USER + + """ + A group is a collection of users who can be given access together. + It represents group in the organization's user base. + It takes group id as parameter. + """ + GROUP + + """ + A multi user picker custom field. + It takes multi user picker custom field id as parameter. + """ + MULTI_USER_PICKER + + """ + A multi group picker custom field. + It takes multi group picker custom field id as parameter. + """ + MULTI_GROUP_PICKER + + """ + The grant type defines what the customers can do from the portal view. + It takes no parameter. + """ + SERVICE_PROJECT_CUSTOMER_PORTAL_ACCESS + + """ + The issue reporter role. + It takes platform defined 'reporter' as parameter to represent the issue field value. + """ + REPORTER + + """ + The project lead role. + It takes no parameter. + """ + PROJECT_LEAD + + """ + The issue assignee role. + It takes platform defined 'assignee' as parameter to represent the issue field value. + """ + ASSIGNEE + + """ + The anonymous access represents the public access without logging in. + It takes no parameter. + """ + ANONYMOUS_ACCESS + + """ + Any user who has the product access. + It takes no parameter. + """ + ANY_LOGGEDIN_USER_APPLICATION_ROLE +} + +""" +The default grant type with only id and name to return data for grant types such as PROJECT_LEAD, APPLICATION_ROLE, +ANY_LOGGEDIN_USER_APPLICATION_ROLE, ANONYMOUS_ACCESS, SERVICE_PROJECT_CUSTOMER_PORTAL_ACCESS +""" +type JiraDefaultGrantTypeValue implements Node { + """ + The ARI to represent the default grant type value. + For example: + PROJECT_LEAD ari - ari:cloud:jira:a2520569-493f-45bc-807b-54b02bc724d1:role/project-lead/activation/bd0c43a9-a23a-4302-8ffa-ca04bde7c747/project/f67c73a8-545e-455b-a6bd-3d53cb7e0524 + APPLICATION_ROLE ari for JSM - ari:cloud:jira-servicedesk::role/123 + ANY_LOGGEDIN_USER_APPLICATION_ROLE ari - ari:cloud:jira::role/product/member + ANONYMOUS_ACCESS ari - ari:cloud:identity::user/unidentified + """ + id: ID! + "The display name of the grant type value such as GROUP." + name: String! +} + +""" +The USER grant type value where user data is provided by identity service. +""" +type JiraUserGrantTypeValue implements Node { + """ + The ARI to represent the grant user type value. + For example: ari:cloud:identity::user/123 + """ + id: ID! + "The GDPR compliant user profile information." + user: User! +} + +""" +The GROUP grant type value where group data is provided by identity service. +""" +type JiraGroupGrantTypeValue implements Node { + """ + The ARI to represent the group grant type value. + For example: ari:cloud:identity::group/123 + """ + id: ID! + "The group information such as name, and description." + group: JiraGroup! +} + +""" +The project role grant type value having the project role information. +""" +type JiraProjectRoleGrantTypeValue implements Node { + """ + The ARI to represent the project role grant type value. + For example: ari:cloud:jira:a2520569-493f-45bc-807b-54b02bc724d1:role/project-role/activation/bd0c43a9-a23a-4302-8ffa-ca04bde7c747/projectrole/b434089d-7f6d-476b-884b-7811661f91d2 + """ + id: ID! + "The project role information such as name, description." + role: JiraRole! +} + +""" +The issue field grant type used to represent field of an issue. +Grant types such as ASSIGNEE, REPORTER, MULTI USER PICKER, and MULTI GROUP PICKER use this grant type value. +""" +type JiraIssueFieldGrantTypeValue implements Node { + """ + The ARI to represent the issue field grant type value. + For example: + assignee field ARI is ari:cloud:jira:a2520569-493f-45bc-807b-54b02bc724d1:issuefieldvalue/10000/assignee + reporter field ARI is ari:cloud:jira:a2520569-493f-45bc-807b-54b02bc724d1:issuefieldvalue/10000/reporter + multi user picker field ARI is ari:cloud:jira:a2520569-493f-45bc-807b-54b02bc724d1:issuefieldvalue/10000/customfield_10126 + """ + id: ID! + "The issue field information such as name, description, field id." + field: JiraIssueField! +} +extend type JiraQuery { + + """ + Get all the available grant type keys such as project role, application access, user, group. + """ + allGrantTypeKeys(cloudId: ID!): [JiraGrantTypeKey!]! + + """ + Get the grant type values by search term and grant type key. + It only supports fetching values for APPLICATION_ROLE, PROJECT_ROLE, MULTI_USER_PICKER and MULTI_GROUP_PICKER grant types. + """ + grantTypeValues( + "Returns the first n elements from the list." + first: Int + "Returns the elements in the list that come after the specified cursor." + after: String + "Returns the last n elements from the list." + last: Int + "Returns the elements in the list that come before the specified cursor." + before: String + "The mandatory grant type key to search within specific grant type such as project role." + grantTypeKey: JiraGrantTypeKeyEnum! + "search term to filter down on the grant type values." + searchTerm: String + "The cloud id of the tenant." + cloudId: ID! + ): JiraGrantTypeValueConnection + + """ + Get the permission scheme based on scheme id. The scheme ID input represent an ARI. + """ + viewPermissionScheme(schemeId: ID!): JiraPermissionSchemeViewResult + + """ + Get the list of paginated projects associated with the given permission scheme ID. + The project objects will be returned based on implicit ascending order by project name. + """ + getProjectsByPermissionScheme( + "Returns the first n elements from the list." + first: Int + "Returns the elements in the list that come after the specified cursor." + after: String + "Returns the last n elements from the list." + last: Int + "Returns the elements in the list that come before the specified cursor." + before: String + "The permission scheme ARI to filter the results." + schemeId: ID! + ): JiraProjectConnection + + """ + A list of paginated permission scheme grants based on the given permission scheme ID. + """ + permissionSchemeGrants( + "Returns the first n elements from the list." + first: Int + "Returns the elements in the list that come after the specified cursor." + after: String + "Returns the last n elements from the list." + last: Int + "Returns the elements in the list that come before the specified cursor." + before: String + "The permission scheme ARI to filter the results." + schemeId: ID! + "The optional project permission key to filter the results." + permissionKey: String + ): JiraPermissionGrantValueConnection @deprecated(reason: "Please use getPermissionSchemeGrants instead.") + + """ + A list of paginated permission scheme grants based on the given permission scheme ID and permission key. + """ + getPermissionSchemeGrants( + "Returns the first n elements from the list." + first: Int + "Returns the elements in the list that come after the specified cursor." + after: String + "Returns the last n elements from the list." + last: Int + "Returns the elements in the list that come before the specified cursor." + before: String + "The permission scheme ARI to filter the results." + schemeId: ID! + "The mandatory project permission key to filter the results." + permissionKey: String! + "The optional grant type key to filter the results." + grantTypeKey: JiraGrantTypeKeyEnum + ): JiraPermissionGrantConnection + + """ + Gets the permission scheme grants hierarchy (by grant type key) based on the given permission scheme ID and permission key. + This returns a bounded list of data with limit set to 50. For getting the complete list in paginated manner, use getPermissionSchemeGrants. + """ + getPermissionSchemeGrantsHierarchy( + "The permission scheme ARI to filter the results." + schemeId: ID! + "The mandatory project permission key to filter the results." + permissionKey: String! + ): [JiraPermissionGrants!]! + +} + +extend type JiraMutation { + + """ + The mutation operation to add one or more new permission grants to the given permission scheme. + The operation takes mandatory permission scheme ID. + The limit on the new permission grants can be added is set to 50. + """ + addPermissionSchemeGrants(input: JiraPermissionSchemeAddGrantInput!): JiraPermissionSchemeAddGrantPayload + + """ + The mutation operation to remove one or more existing permission scheme grants in the given permission scheme. + The operation takes mandatory permission scheme ID. + The limit on the new permission grants can be removed is set to 50. + """ + removePermissionSchemeGrants(input: JiraPermissionSchemeRemoveGrantInput!): JiraPermissionSchemeRemoveGrantPayload + +} + +""" +The JiraPermissionSchemeView represents the composite view to capture basic information of +the permission scheme such as id, name, description and a bounded list of one or more grant groups. +A grant group contains existing permission grant information such as permission, permission category, grant type and grant type value. +""" +type JiraPermissionSchemeView { + "The basic permission scheme information such as id, name and description." + scheme: JiraPermissionScheme! + "The additional configuration information regarding the permission scheme." + configuration: JiraPermissionSchemeConfiguration! + "The bounded list of one or more grant groups represent each group of permission grants based on project permission category such as PROJECTS, ISSUES." + grantGroups: [JiraPermissionSchemeGrantGroup!] +} + +""" +The JiraPermissionSchemeConfiguration represents additional configuration information regarding the permission scheme such as its editability. +""" +type JiraPermissionSchemeConfiguration { + "The indicator saying whether a permission scheme is editable or not." + isEditable: Boolean! +} + +""" +The JiraPermissionSchemeGrantGroup is an association between project permission category information and a bounded list of one or more +associated permission grant holder. A grant holder represents project permission information and its associated permission grants. +""" +type JiraPermissionSchemeGrantGroup { + "The basic project permission category information such as key and display name." + category: JiraProjectPermissionCategory! + "A bounded list of one or more permission grant holders." + grantHolders: [JiraPermissionGrantHolder] +} + +""" +The JiraPermissionGrantHolder represents an association between project permission information and +a bounded list of one or more permission grant. +A permission grant holds association between grant type and a paginated list of grant values. +""" +type JiraPermissionGrantHolder { + "The basic information about the project permission." + permission: JiraProjectPermission! + "The additional configuration information regarding the permission." + configuration: JiraPermissionConfiguration + "A bounded list of jira permission grant." + grants: [JiraPermissionGrants!] +} + +""" +The JiraPermissionConfiguration represents additional configuration information regarding the permission such as +deprecation, new addition etc. It contains documentation/notice and/or actionable items for the permission +such as deprecation of BROWSE_PROJECTS in favour of VIEW_PROJECTS and VIEW_ISSUES. +""" +type JiraPermissionConfiguration { + "The tag for the permission key." + tag: JiraPermissionTagEnum! + "The message contains actionable information for the permission key." + message: JiraPermissionMessageExtension + "The documentation for the permission key." + documentation: JiraPermissionDocumentationExtension +} + +""" +The JiraPermissionTagEnum represents additional tags for the permission key. +""" +enum JiraPermissionTagEnum { + "Represents a permission that is about to be deprecated." + DEPRECATED, + "Represents a permission that is newly added." + NEW +} + +""" +The JiraPermissionMessageExtension represents actionable information for a permission such as deprecation of +BROWSE_PROJECTS in favour of VIEW_PROJECTS and VIEW_ISSUES. +""" +type JiraPermissionMessageExtension { + "The category of the message such as WARNING, INFORMATION etc." + type: JiraPermissionMessageTypeEnum! + "The display text of the message." + text: String! +} + +""" +The JiraPermissionMessageTypeEnum represents category of the message section. +""" +enum JiraPermissionMessageTypeEnum { + "Represents a basic message." + INFORMATION, + "Represents a warning message." + WARNING +} + +""" +The JiraPermissionDocumentationExtension contains developer documentation for a permission key. +""" +type JiraPermissionDocumentationExtension { + "The display text of the developer documentation." + text: String! + "The link to the developer documentation." + url: String! +} + +""" +The JiraPermissionGrants represents an association between grant type information and a bounded list of one or more grant +values associated with given grant type. +Each grant value has grant type specific information. +For example, PROJECT_ROLE grant type value contains project role ID in ARI format and role specific details. +""" +type JiraPermissionGrants { + "The grant type information includes key and display name." + grantType: JiraGrantTypeKey! + "A bounded list of grant values. Each grant value has grant type specific information." + grantValues: [JiraPermissionGrantValue!] + "The total number of items matching the criteria" + totalCount: Int +} + +""" +The type represents a paginated view of permission grants in the form of connection object. +""" +type JiraPermissionGrantConnection { + "The page info of the current page of results." + pageInfo: PageInfo! + "A list of edges in the current page." + edges: [JiraPermissionGrantEdge] + "The total number of items matching the criteria." + totalCount: Int +} + +""" +The permission grant edge object used in connection object for representing an edge. +""" +type JiraPermissionGrantEdge { + "The node at this edge." + node: JiraPermissionGrant! + "The cursor to this edge." + cursor: String! +} + +""" +The JiraPermissionGrant represents an association between the grant type key and the grant value. +Each grant value has grant type specific information. +For example, PROJECT_ROLE grant type value contains project role ID in ARI format and role specific details. +""" +type JiraPermissionGrant { + "The grant type information includes key and display name." + grantType: JiraGrantTypeKey! + "The grant value has grant type key specific information." + grantValue: JiraPermissionGrantValue! +} + +""" +The type represents a paginated view of permission grant values in the form of connection object. +""" +type JiraPermissionGrantValueConnection { + "The page info of the current page of results." + pageInfo: PageInfo! + "A list of edges in the current page." + edges: [JiraPermissionGrantValueEdge] + "The total number of items matching the criteria." + totalCount: Int +} + +""" +The permission grant value edge object used in connection object for representing an edge. +""" +type JiraPermissionGrantValueEdge { + "The node at this edge." + node: JiraPermissionGrantValue! + "The cursor to this edge." + cursor: String! +} + +""" +The permission grant value represents the actual permission grant value. +The id field represent the grant ID and its not an ARI. The value represents actual value information specific to grant type. +For example: PROJECT_ROLE grant type value contains project role ID in ARI format and role specific details +""" +type JiraPermissionGrantValue { + """ + The ID of the permission grant. + It represents the relationship among permission, grant type and grant type specific value. + """ + id: ID! + """ + The optional grant type value is a union type. + The value itself may resolve to one of the concrete types such as JiraDefaultGrantTypeValue, JiraProjectRoleGrantTypeValue. + """ + value: JiraGrantTypeValue +} + +""" +The JiraGrantTypeValue union resolves to one of the concrete types such as JiraDefaultGrantTypeValue, JiraProjectRoleGrantTypeValue. +""" +union JiraGrantTypeValue = JiraDefaultGrantTypeValue | JiraUserGrantTypeValue | JiraProjectRoleGrantTypeValue | JiraGroupGrantTypeValue | JiraIssueFieldGrantTypeValue + +""" +A type to represent one or more paginated list of one or more permission grant values available for a given grant type. +""" +type JiraGrantTypeValueConnection { + "A list of edges in the current page." + edges: [JiraGrantTypeValueEdge] + "The page info of the current page of results." + pageInfo: PageInfo! + "The total number of items matching the criteria." + totalCount: Int +} + +""" +An edge object representing grant type value information used within connection object. +""" +type JiraGrantTypeValueEdge { + "The node at this edge." + node: JiraGrantTypeValue! + "The cursor to this edge." + cursor: String! +} + +""" +The union result representing either the composite view of the permission scheme or the query error information. +""" +union JiraPermissionSchemeViewResult = JiraPermissionSchemeView | QueryError + +""" +Specifies permission scheme grant for the combination of permission key, grant type key, and grant type value ARI. +""" +input JiraPermissionSchemeGrantInput { + "the project permission key." + permissionKey: String! + "The grant type key such as USER." + grantType: JiraGrantTypeKeyEnum! + """ + The optional grant value in ARI format. Some grantType like PROJECT_LEAD, REPORTER etc. have no grantValue. Any grantValue passed will be silently ignored. + For example: project role ID ari is of the format - ari:cloud:jira:a2520569-493f-45bc-807b-54b02bc724d1:role/project-role/activation/bd0c43a9-a23a-4302-8ffa-ca04bde7c747/projectrole/b434089d-7f6d-476b-884b-7811661f91d2 + """ + grantValue: ID +} + +""" +The input type to add new permission grants to the given permission scheme. +""" +input JiraPermissionSchemeAddGrantInput { + "The permission scheme ID in ARI format." + schemeId: ID! + "The list of one or more grants to be added." + grants: [JiraPermissionSchemeGrantInput!]! +} + +""" +The response payload for add permission grants mutation operation for a given permission scheme. +""" +type JiraPermissionSchemeAddGrantPayload implements Payload { + "The success indicator saying whether mutation operation was successful as a whole or not." + success: Boolean! + "The errors field represents additional mutation error information if exists." + errors: [MutationError!] +} + +""" +The input type to remove permission grants from the given permission scheme. +""" +input JiraPermissionSchemeRemoveGrantInput { + "The permission scheme ID in ARI format." + schemeId: ID! + "The list of one or more grants to be removed." + grants: [JiraPermissionSchemeGrantInput!] @deprecated(reason: "Please use grantIds field instead") + "The list of permission grant ids." + grantIds: [Long!]! +} + +""" +The response payload for remove existing permission grants mutation operation for a given permission scheme. +""" +type JiraPermissionSchemeRemoveGrantPayload implements Payload { + "The success indicator saying whether mutation operation was successful as a whole or not." + success: Boolean! + "The errors field represents additional mutation error information if exists." + errors: [MutationError!] +}""" +Represents an issue's priority field +""" +type JiraPriority implements Node { + """ + Unique identifier referencing the priority ID. + """ + id: ID! + """" + The priority ID. E.g. 10000. + """ + priorityId: String! + """ + The priority name. + """ + name: String + """ + The priority icon URL. + """ + iconUrl: URL + """ + The priority color. + """ + color: String +} + +""" +The connection type for JiraPriority. +""" +type JiraPriorityConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraPriorityEdge] +} + +""" +An edge in a JiraPriority connection. +""" +type JiraPriorityEdge { + """ + The node at the edge. + """ + node: JiraPriority + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents proforma-forms. +""" +type JiraProformaForms { + """ + Indicates whether the project has proforma-forms or not. + """ + hasProjectForms: Boolean + """ + Indicates whether the issue has proforma-forms or not. + """ + hasIssueForms: Boolean +}# Copied over from jira-project, will extend this type after deprecating rest bridge project + +""" +Represents a Jira project. +""" +type JiraProject implements Node { + """ + Global identifier for the project. + """ + id: ID! + """ + The key of the project. + """ + key: String! + """ + The project id of the project. e.g. 10000. Temporarily needed to support interoperability with REST. + """ + projectId: String + """ + The name of the project. + """ + name: String! + """ + The cloudId associated with the project. + """ + cloudId: ID! + """ + The description of the project. + """ + description: String + """ + The ID of the project lead. + """ + leadId: ID + """ + The category of the project. + """ + category: JiraProjectCategory + """ + The avatar of the project. + """ + avatar: JiraAvatar + """ + The URL associated with the project. + """ + projectUrl: String + """ + Specifies the type to which project belongs to ex:- software, service_desk, business etc. + """ + projectType: JiraProjectType + """ + Specifies the style of the project. + The use of this field is discouraged. API deviations between project styles are deprecated. + This field only exists to support legacy use cases. This field will be removed in the future. + """ + projectStyle: JiraProjectStyle @deprecated(reason: "The `projectStyle` is a deprecated field.") + """ + Specifies the status of the project e.g. archived, deleted. + """ + status: JiraProjectStatus + """ + Represents the SimilarIssues feature associated with this project. + """ + similarIssues: JiraSimilarIssues + """ + Returns if the user has the access to set issue restriction with the current project + """ + canSetIssueRestriction: Boolean + """ + Returns navigation specific information to aid in transitioning from a project to a landing page eg. board, queue, list, etc + """ + navigationMetadata: JiraProjectNavigationMetadata +} + +""" +""" +type JiraProjectCategory implements Node { + """ + Global id of this project category. + """ + id: ID! + """ + Display name of the Project category. + """ + name: String + """ + Description of the Project category. + """ + description: String +} + +""" +The connection type for JiraProject. +""" +type JiraProjectConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraProjectEdge] +} + +""" +An edge in a JiraProject connection. +""" +type JiraProjectEdge { + """ + The node at the edge. + """ + node: JiraProject + """ + The cursor to this edge. + """ + cursor: String! +} + +""" +Jira Project types. +""" +enum JiraProjectType { + """ + A service desk project. + """ + SERVICE_DESK + """ + A business project. + """ + BUSINESS + """ + A software project. + """ + SOFTWARE +} + +""" +Jira Project statuses. +""" +enum JiraProjectStatus { + """ + An active project. + """ + ACTIVE + """ + An archived project. + """ + ARCHIVED + """ + A deleted project. + """ + DELETED +} + +""" +Jira Project Styles. +""" +enum JiraProjectStyle { + """ + A team-managed project. + """ + TEAM_MANAGED_PROJECT + """ + A company-managed project. + """ + COMPANY_MANAGED_PROJECT +}type JiraSoftwareProjectNavigationMetadata { + id: ID!, + boardId: ID!, + boardName: String! + # Used to tell the difference between classic and next generation boards (agility, simple, nextgen, CMP) + isSimpleBoard: Boolean! +} + +type JiraServiceManagementProjectNavigationMetadata { + queueId: ID!, + queueName: String! +} + +type JiraWorkManagementProjectNavigationMetadata { + boardName: String! +} + +union JiraProjectNavigationMetadata = JiraSoftwareProjectNavigationMetadata | JiraServiceManagementProjectNavigationMetadata | JiraWorkManagementProjectNavigationMetadata +""" +Represents a Jira ProjectRole. +""" +type JiraRole implements Node { + """ + Global identifier of the ProjectRole. + """ + id: ID! + """ + Id of the ProjectRole. + """ + roleId: String! + """ + Name of the ProjectRole. + """ + name: String + """ + Description of the ProjectRole. + """ + description: String +} + +""" +The connection type for JiraRole. +""" +type JiraRoleConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + The page infor of the current page of results. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraRoleEdge] +} + +""" +An edge in a JiraRoleConnection connection. +""" +type JiraRoleEdge { + """ + The node at the edge. + """ + node: JiraRole + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Requests the request type structure on an Issue. +""" +type JiraServiceManagementRequestType implements Node { + """ + Global identifier representing the request type id. + """ + id: ID! + """ + Identifier for the request type. + """ + requestTypeId: String! + """ + Name of the request type. + """ + name: String + """ + A deprecated unique identifier string for Request Types. + It is still necessary due to the lack of request-type-id in critical parts of JiraServiceManagement backend. + """ + key: String @deprecated(reason: "The `key` field is deprecated. Please use the `requestTypeId` instead.") + """ + Description of the request type if applicable. + """ + description: String + """ + Help text for the request type. + """ + helpText: String + """ + Issue type to which request type belongs to. + """ + issueType: JiraIssueType + """ + Id of the portal that this request type belongs to. + """ + portalId: String + """ + Avatar for the request type. + """ + avatar: JiraAvatar + """ + Request type practice. E.g. incidents, service_request. + """ + practices: [JiraServiceManagementRequestTypePractice] +} + +""" +Defines grouping of the request types,currently only applicable for JiraServiceManagement ITSM projects. +""" +type JiraServiceManagementRequestTypePractice { + """ + Practice in which the request type is categorized. + """ + key: JiraServiceManagementPractice +} + +""" +ITSM project practice categorization. +""" +enum JiraServiceManagementPractice { + """ + Manage work across teams with one platform so the employees and customers quickly get the help they need. + """ + SERVICE_REQUEST + """ + Bring the development and IT operations teams together to rapidly respond to, resolve, and continuously learn from incidents. + """ + INCIDENT_MANAGEMENT + """ + Group incidents to problems, fast-track root cause analysis, and record workarounds to minimize the impact of incidents. + """ + PROBLEM_MANAGEMENT + """ + Empower the IT operations teams with richer contextual information around changes from software development tools so they can make better decisions and minimize risk. + """ + CHANGE_MANAGEMENT + """ + Bring people and teams together to discuss the details of an incident: why it happened, what impact it had, what actions were taken to resolve it, and how the team can prevent it from happening again. + """ + POST_INCIDENT_REVIEW +} + +""" +The connection type for JiraServiceManagementRequestType. +""" +type JiraServiceManagementRequestTypeConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementRequestTypeEdge] +} + +""" +An edge in a JiraServiceManagementIssueType connection. +""" +type JiraServiceManagementRequestTypeEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementRequestType + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the resolution field of an issue. +""" +type JiraResolution implements Node { + """ + Global identifier representing the resolution id. + """ + id: ID! + """ + Resolution Id in the digital format. + """ + resolutionId: String! + """ + Resolution name. + """ + name: String + """ + Resolution description. + """ + description: String +} + +""" +The connection type for JiraResolution. +""" +type JiraResolutionConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraResolutionEdge] +} + +""" +An edge in a JiraResolution connection. +""" +type JiraResolutionEdge { + """ + The node at the edge. + """ + node: JiraResolution + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Responder field of a JSM issue, can be either a user or a team. +""" +union JiraServiceManagementResponder = JiraServiceManagementUserResponder | JiraServiceManagementTeamResponder + +""" +A user as a responder. +""" +type JiraServiceManagementUserResponder { + user: User +} + +""" +An Opsgenie team as a responder. +""" +type JiraServiceManagementTeamResponder { + """ + Opsgenie team id. + """ + teamId : String + """ + Opsgenie team name. + """ + teamName : String +} + +""" +The connection type for JiraServiceManagementResponder. +""" +type JiraServiceManagementResponderConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraServiceManagementResponderEdge] +} + +""" +An edge in a JiraServiceManagementResponder connection. +""" +type JiraServiceManagementResponderEdge { + """ + The node at the edge. + """ + node: JiraServiceManagementResponder + """ + The cursor to this edge. + """ + cursor: String! +}""" +Represents the rich text format of a rich text field. +""" +type JiraRichText { + """ + Text in Atlassian Document Format. + """ + adfValue: JiraADF + """ + Plain text version of the text. + """ + plainText: String @deprecated(reason: "`plainText` is deprecated. Please use `adfValue` for all rich text in Jira.") + """ + Text in wiki format. + """ + wikiValue: String @deprecated(reason: "`wikiValue` is deprecated. Please use `adfValue` for all rich text in Jira.") +} + +""" +Represents the Atlassian Document Format content in JSON format. +""" +type JiraADF { + """ + The content of ADF in JSON. + """ + json: JSON +} +""" +Represents the security levels on an Issue. +""" +type JiraSecurityLevel implements Node { + """ + Global identifier for the security level. + """ + id: ID! + """ + identifier for the security level. + """ + securityId: String! + """ + Name of the security level. + """ + name: String + """ + Description of the security level. + """ + description: String +} + +""" +The connection type for JiraSecurityLevel. +""" +type JiraSecurityLevelConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraSecurityLevelEdge] +} + +""" +An edge in a JiraSecurityLevel connection. +""" +type JiraSecurityLevelEdge { + """ + The node at the edge. + """ + node: JiraSecurityLevel + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the SimilarIssues feature associated with a JiraProject. +""" +type JiraSimilarIssues { + """ + Indicates whether the SimilarIssues feature is enabled or not. + """ + featureEnabled: Boolean! +} +""" +Represents the sprint field of an issue. +""" +type JiraSprint implements Node { + """ + Global identifier for the sprint. + """ + id: ID! + """ + Sprint id in the digital format. + """ + sprintId: String! + """ + Sprint name. + """ + name: String + """ + Current state of the sprint. + """ + state: JiraSprintState + """ + The board name that the sprint belongs to. + """ + boardName: String + """ + Start date of the sprint. + """ + startDate: DateTime + """ + End date of the sprint. + """ + endDate: DateTime + """ + Completion date of the sprint. + """ + completionDate: DateTime + """ + The goal of the sprint. + """ + goal: String +} + +""" +Represents the state of the sprint. +""" +enum JiraSprintState { + """ + The sprint is in progress. + """ + ACTIVE + """ + The sprint hasn't been started yet. + """ + FUTURE + """ + The sprint has been completed. + """ + CLOSED +} + +""" +The connection type for JiraSprint. +""" +type JiraSprintConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraSprintEdge] +} + +""" +An edge in a JiraSprint connection. +""" +type JiraSprintEdge { + """ + The node at the edge. + """ + node: JiraSprint + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents the status field of an issue. +""" +type JiraStatus implements Node { + """ + Global identifier for the Status. + """ + id: ID! + """ + Status id in the digital format. + """ + statusId: String! + """ + Name of status. E.g. Backlog, Selected for Development, In Progress, Done. + """ + name: String + """ + Optional description of the status. E.g. "This issue is actively being worked on by the assignee". + """ + description: String + """ + Represents a group of Jira statuses. + """ + statusCategory: JiraStatusCategory +} + +""" +Represents the category of a status. +""" +type JiraStatusCategory implements Node { + """ + Global identifier for the Status Category. + """ + id: ID! + """ + Status category id in the digital format. + """ + statusCategoryId: String! + """ + A unique key to identify this status category. E.g. new, indeterminate, done. + """ + key: String + """ + Name of status category. E.g. New, In Progress, Complete. + """ + name: String + """ + Color of status category. + """ + colorName: JiraStatusCategoryColor +} + +""" +Color of the status category. +""" +enum JiraStatusCategoryColor { + """ + #707070 + """ + MEDIUM_GRAY + """ + #14892c + """ + GREEN + """ + #f6c342 + """ + YELLOW + """ + #815b3a + """ + BROWN + """ + #d04437 + """ + WARM_RED + """ + #4a6785 + """ + BLUE_GRAY +} +""" +Represents a single team in Jira +""" +type JiraTeam implements Node { + """ + Global identifier of team. + """ + id: ID! + """ + Team id in the digital format. + """ + teamId: String! + """ + Name of the team. + """ + name: String + """ + Description of the team. + """ + description: String @deprecated(reason: "JPO Team does not have a description field.") + """ + Avatar of the team. + """ + avatar: JiraAvatar + """ + Members available in the team. + """ + members: JiraUserConnection + """ + Indicates whether the team is publicly shared or not. + """ + isShared: Boolean +} + +""" +The connection type for JiraTeam. +""" +type JiraTeamConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraTeamEdge] +} + +""" +An edge in a JiraTeam connection. +""" +type JiraTeamEdge { + """ + The node at the edge. + """ + node: JiraTeam + """ + The cursor to this edge. + """ + cursor: String! +} +""" +Represents a view on a Team in Jira. +""" +type JiraTeamView { + """ + The ARI of the team. + """ + jiraSuppliedId: ID! + """ + The unique identifier of the team. + """ + jiraSuppliedTeamId: String! + """ + If this is false, team data is no longer available. For example, a deleted team. + """ + jiraSuppliedVisibility: Boolean + """ + The name of the team. + """ + jiraSuppliedName: String + """ + The avatar of the team. + """ + jiraSuppliedAvatar: JiraAvatar @deprecated(reason: "in future, team avatar will no longer be exposed") +} +""" +Represents the type for representing global time tracking settings. +""" +type JiraTimeTrackingSettings { + """ + Returns whether time tracking implementation is provided by Jira or some external providers. + """ + isJiraConfiguredTimeTrackingEnabled: Boolean + """ + Number of hours in a working day. + """ + workingHoursPerDay: Float + """ + Number of days in a working week. + """ + workingDaysPerWeek: Float + """ + Format in which the time tracking details are presented to the user. + """ + defaultFormat: JiraTimeFormat + """ + Default unit for time tracking wherever not specified. + """ + defaultUnit: JiraTimeUnit +} + +""" +Different time formats supported for entering & displaying time tracking related data. +""" +enum JiraTimeFormat { + """ + E.g. 2 days, 4 hours, 30 minutes + """ + PRETTY + """ + E.g. 2d 4.5h + """ + DAYS + """ + E.g. 52.5h + """ + HOURS +} + +""" +Different time units supported for entering & displaying time tracking related data. +Get the currently configured default duration to use when parsing duration string for time tracking. +""" +enum JiraTimeUnit { + """ + When the current duration is in minutes. + """ + MINUTE + """ + When the current duration is in hours. + """ + HOUR + """ + When the current duration is in days. + """ + DAY + """ + When the current duration is in weeks. + """ + WEEK +} + +""" +Represents the Jira time tracking estimate type. +""" +type JiraEstimate { + """ + The estimated time in seconds. + """ + timeInSeconds: Long +} +""" +A connection to a list of users. +""" +type JiraUserConnection { + "The page info of the current page of results." + pageInfo: PageInfo! + "A list of User edges." + edges: [JiraUserEdge] + "A count of filtered result set across all pages." + totalCount: Int +} + +""" +An edge in an User connection object. +""" +type JiraUserEdge { + "The node at this edge." + node: User + "The cursor to this edge." + cursor: String +} +""" +Jira Version type that can be either Versions system fields or Versions Custom fields. +""" +type JiraVersion implements Node { + id: ID! + """ + Version Id. + """ + versionId: String! + """ + Version name. + """ + name: String + """ + Version icon URL. + """ + iconUrl: URL + """ + Status to which version belongs to. + """ + status: JiraVersionStatus + """ + Version description. + """ + description: String + """ + The date at which work on the version began. + """ + startDate: DateTime + """ + The date at which the version was released to customers. Must occur after startDate. + """ + releaseDate: DateTime + """ + Warning config of the version. This is per project setting. + """ + warningConfig: JiraVersionWarningConfig + """ + Marketplace connect app iframe data for Version details page's top right corner extension + point(location: atl.jira.releasereport.top.right.panels) + An empty array will be returned in case there isn't any marketplace apps installed. + """ + connectAddonIframeData: [JiraVersionConnectAddonIframeData] + """ + List of issues with the version. + """ + issues( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + filter of the issues under this version. If not given, the default filter will be determined by the server + """ + filter: JiraVersionIssuesFilter = ALL + ): JiraIssueConnection + + """ + List of related work items linked to the version. + """ + relatedWork( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified, it is assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraVersionRelatedWorkConnection + + """ + List of suggested categories to be displayed when creating a new related work item for a given + version. + """ + suggestedRelatedWorkCategories: [String] + + """ + Indicates whether the user has permission to edit the version such as releasing it or + associating related work to it. + """ + canEdit: Boolean +} + +""" +Input to update the version name. +""" +input JiraUpdateVersionNameInput { + """ + The identifier of the Jira version. + """ + id: ID! + """ + Version name. + """ + name: String! +} + +""" +Input to update the version description. +""" +input JiraUpdateVersionDescriptionInput { + """ + The identifier of the Jira version. + """ + id: ID! + """ + Version description. + """ + description: String +} + +""" +Input to update the version start date. +""" +input JiraUpdateVersionStartDateInput { + """ + The identifier of the Jira version. + """ + id: ID! + """ + The date at which work on the version began. + """ + startDate: DateTime +} + +""" +Input to update the version release date. +""" +input JiraUpdateVersionReleaseDateInput { + """ + The identifier of the Jira version. + """ + id: ID! + """ + The date at which the version was released to customers. Must occur after startDate. + """ + releaseDate: DateTime +} + +""" +The return payload of updating a version. +""" +type JiraUpdateVersionPayload implements Payload { + """ + Whether the mutation was successful or not. + """ + success: Boolean! + """ + A list of errors that occurred during the mutation. + """ + errors: [MutationError!] + """ + The updated version. + """ + version: JiraVersion +} + +""" +The connection type for JiraVersionRelatedWork. +""" +type JiraVersionRelatedWorkConnection { + """ + Information about the current page; used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraVersionRelatedWorkEdge] +} + +""" +An edge in a JiraVersionRelatedWork connection. +""" +type JiraVersionRelatedWorkEdge { + """ + The cursor to this edge. + """ + cursor: String + """ + The node at this edge. + """ + node: JiraVersionRelatedWork +} + +""" +Jira version related work type, which is used to associate "smart links" with a given Jira version. +""" +type JiraVersionRelatedWork { + """ + Client-generated ID for the related work item. + """ + relatedWorkId: ID + """ + Related work URL. + """ + url: URL + """ + Related work title; can be null if user didn't enter a title when adding the link. + """ + title: String + """ + Category for the related work item. + """ + category: String + """ + Creation date. + """ + addedOn: DateTime + """ + ID of user who created the related work item. + """ + addedById: ID +} + +""" +Input to create a new related work item and associated with a version. +""" +input JiraAddRelatedWorkToVersionInput { + """ + The identifier of the Jira version. + """ + versionId: ID! + """ + Client-generated ID for the related work item. + """ + relatedWorkId: ID! + """ + Related work URL. + """ + url: URL! + """ + Related work title; can be null if user didn't enter a title when adding the link. + """ + title: String + """ + Category for the related work item. + """ + category: String! +} + +""" +Input to delete a related work item and unlink it from a version. +""" +input JiraRemoveRelatedWorkFromVersionInput { + """ + The identifier of the Jira version. + """ + versionId: ID! + """ + Client-generated ID for the related work item. + """ + relatedWorkId: ID! +} + +""" +The return payload of creating a new related work item and associating it with a version. +""" +type JiraAddRelatedWorkToVersionPayload implements Payload { + """ + Whether the mutation was successful or not. + """ + success: Boolean! + """ + A list of errors that occurred during the mutation. + """ + errors: [MutationError!] + """ + The newly added edge and associated data. + """ + relatedWorkEdge: JiraVersionRelatedWorkEdge +} + +""" +The return payload of deleting a related work item and unlinking it from a version. +""" +type JiraRemoveRelatedWorkFromVersionPayload implements Payload { + """ + Whether the mutation was successful or not. + """ + success: Boolean! + """ + A list of errors that occurred during the mutation. + """ + errors: [MutationError!] +} + +""" +Marketplace connect app iframe data for Version details page's top right corner extension +point(location: atl.jira.releasereport.top.right.panels) +If options is null, parsing string json into json object failed while mapping. +""" +type JiraVersionConnectAddonIframeData { + appKey: String + moduleKey: String + appName: String + location: String + options: JSON +} + +""" +The filter for a version's issues +""" +enum JiraVersionIssuesFilter { + ALL + TODO + IN_PROGRESS + DONE + UNREVIEWED_CODE + OPEN_REVIEW + OPEN_PULL_REQUEST + FAILING_BUILD +} + +""" +The status of a version field. +""" +enum JiraVersionStatus { + """ + Indicates the version is available to public + """ + RELEASED + """ + Indicates the version is not launched yet + """ + UNRELEASED + """ + Indicates the version is archived, no further changes can be made to this version unless it is un-archived + """ + ARCHIVED +} + +""" +The connection type for JiraVersion. +""" +type JiraVersionConnection { + """ + The total count of items in the connection. + """ + totalCount: Int + """ + Information about the current page. Used to aid in pagination. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraVersionEdge] +} + +""" +An edge in a JiraVersion connection. +""" +type JiraVersionEdge { + """ + The node at the edge. + """ + node: JiraVersion + """ + The cursor to this edge. + """ + cursor: String! +} + +extend type JiraQuery { + "Get version by ARI" + version( + """ + The identifier of the Jira version + """ + id: ID! + ): JiraVersionResult + + """ + This field returns a connection over JiraVersion. + """ + versionsForProject( + """ + The identifier for the Jira project + """ + jiraProjectId: ID! + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + """ + The filter array dictates what versions to return by their status. + Defaults to unreleased versions only + """ + filter: [JiraVersionStatus] = [UNRELEASED] + ): JiraVersionConnection +} + +""" +The input to associate issues with a fix version +""" +input JiraAddIssuesToFixVersionInput { + """ + The issues to be associated with the fix version + """ + issueIds: [ID!]! + """ + The version to be associated with the issues + """ + versionId: ID! +} + +""" +The return payload of associating issues with a fix version +""" +type JiraAddIssuesToFixVersionPayload implements Payload { + """ + The updated version + """ + version: JiraVersion + """ + Whether the mutation was successful or not. + """ + success: Boolean! + """ + A list of errors that occurred during the mutation. + """ + errors: [MutationError!] +} + +""" +Contains either the successful fetched version information or an error. +""" +union JiraVersionResult = JiraVersion | QueryError + +""" +The warning config for version details page to generate warning report. Depending on tenant settings and providers installed, some warning config could be in NOT_APPLICABLE state. +""" +enum JiraVersionWarningConfigState { + ENABLED + DISABLED + NOT_APPLICABLE +} + +""" +The warning configuration to generate version details page warning report. +""" +type JiraVersionWarningConfig { + """ + The warnings for issues that has open pull request and in done issue status category. + """ + openPullRequest: JiraVersionWarningConfigState + """ + The warnings for issues that has open review and in done issue status category (only applicable for FishEye/Crucible integration to Jira). + """ + openReview: JiraVersionWarningConfigState + """ + The warnings for issues that has unreviewed code and in done issue status category. + """ + unreviewedCode: JiraVersionWarningConfigState + """ + The warnings for issues that has failing build and in done issue status category. + """ + failingBuild: JiraVersionWarningConfigState + """ + Whether the user requesting the warning config has edit permissions. + """ + canEdit: Boolean +} + +""" +The warning configuration to be updated for version details page warning report. +Applicable values will have their value updated. Null values will default to true. +""" +input JiraVersionUpdatedWarningConfigInput { + """ + The warnings for issues that has open pull request and in done issue status category. + """ + isOpenPullRequestEnabled: Boolean = true + """ + The warnings for issues that has open review(FishEye/Crucible integration) and in done issue status category. + """ + isOpenReviewEnabled: Boolean = true + """ + The warnings for issues that has unreviewed code and in done issue status category. + """ + isUnreviewedCodeEnabled: Boolean = true + """ + The warnings for issues that has failing build and in done issue status category. + """ + isFailingBuildEnabled: Boolean = true +} + +""" +The input to update the version details page warning report. +""" +input JiraUpdateVersionWarningConfigInput { + """ + The ARI of the Jira project. + """ + jiraProjectId: ID! + """ + The version configuration options to be updated. + """ + updatedVersionWarningConfig: JiraVersionUpdatedWarningConfigInput! +} + +type JiraUpdateVersionWarningConfigPayload implements Payload { + "Whether the mutation was successful or not." + success: Boolean! + + "A list of errors that occurred during the mutation." + errors: [MutationError!] +} + +extend type JiraMutation { + """ + Associate issues with a fix version + """ + addIssuesToFixVersion( + input: JiraAddIssuesToFixVersionInput! + ): JiraAddIssuesToFixVersionPayload + """ + Update version warning configuration by enabling/disabling warnings + for specific scenarios. + """ + updateVersionWarningConfig( + input: JiraUpdateVersionWarningConfigInput! + ): JiraUpdateVersionWarningConfigPayload + + """ + Create a related work item and link it to a version. + """ + addRelatedWorkToVersion( + input: JiraAddRelatedWorkToVersionInput! + ): JiraAddRelatedWorkToVersionPayload + + """ + Delete a related work item from a version. + """ + removeRelatedWorkFromVersion( + input: JiraRemoveRelatedWorkFromVersionInput! + ): JiraRemoveRelatedWorkFromVersionPayload + + """ + Update a version's name. + """ + updateVersionName( + input: JiraUpdateVersionNameInput! + ): JiraUpdateVersionPayload + + """ + Update a version's description. + """ + updateVersionDescription( + input: JiraUpdateVersionDescriptionInput! + ): JiraUpdateVersionPayload + + """ + Update a version's start date. + """ + updateVersionStartDate( + input: JiraUpdateVersionStartDateInput! + ): JiraUpdateVersionPayload + + """ + Update a version's release date. + """ + updateVersionReleaseDate( + input: JiraUpdateVersionReleaseDateInput! + ): JiraUpdateVersionPayload +} +""" +A list of issues and JQL that results the list of issues. +""" +type JiraVersionDetailPageIssues { + """ + JQL that is used to list issues + """ + jql: String + """ + Issues returned by the provided JQL query + """ + issues( + """ + The number of items after the cursor to be returned in a forward page. + If not specified, it is up to the server to determine a page size. + """ + first: Int + """ + The index based cursor to specify the beginning of the items. + If not specified it's assumed as the cursor for the item before the beginning. + """ + after: String + """ + The number of items before the cursor to be returned in a backward page. + If not specified, it is up to the server to determine a page size. + """ + last: Int + """ + The index based cursor to specify the bottom limit of the items. + If not specified it's assumed as the cursor to the item after the last item. + """ + before: String + ): JiraIssueConnection +} + +extend type JiraQuery { + """ + Contains the lists of issues per table and the warning config for the version detail page under Releases home page. + """ + versionDetailPage(versionId: ID!): JiraVersionDetailPage @deprecated(reason:"use the fields that is used to live under this type from JiraVersion instead. It is simply migrated.") +} + +""" +This type holds specific information for version details page holding warning config for the version and issues for each category. +""" +type JiraVersionDetailPage { + """ + Warning config of the version. This is per project setting. + """ + warningConfig: JiraVersionWarningConfig + """ + List of issues and its JQL, that have failing build, and its status is in done issue status category. + """ + failingBuildIssues: JiraVersionDetailPageIssues + """ + List of issues and its JQL, that have open pull request, and its status is in done issue status category. + """ + openPullRequestIssues: JiraVersionDetailPageIssues + """ + List of issues and its JQL, that have commits that are not a part of pull request, and its status is in done issue status category. + """ + unreviewedCodeIssues: JiraVersionDetailPageIssues + """ + List of issues and its JQL, that are in to-do issue status category. + """ + toDoIssues: JiraVersionDetailPageIssues + """ + List of issues and its JQL, that are in-progress issue status category. + """ + inProgressIssues: JiraVersionDetailPageIssues + """ + List of issues and its JQL, that are done issue status category. + """ + doneIssues: JiraVersionDetailPageIssues + """ + List of issues and its JQL, that have the given version as its fixed version. + """ + allIssues: JiraVersionDetailPageIssues +} +""" +Represents the votes information of an Issue. +""" +type JiraVote { + """ + Indicates whether the current user has voted for this Issue. + """ + hasVoted: Boolean + """ + Count of users who have voted for this Issue. + """ + count: Long +} +""" +Represents the watches information. +""" +type JiraWatch { + """ + Indicates whether the current user is watching this issue. + """ + isWatching: Boolean + """ + Count of users who are watching this issue. + """ + count: Long +}""" +Represents a WorkCategory. +""" +type JiraWorkCategory { + """ + The value of the WorkCategory. + """ + value: String +}""" +Represents a Jira worklog. +""" +type JiraWorklog implements Node { + """ + Global identifier for the worklog. + """ + id: ID! + """ + Identifier for the worklog. + """ + worklogId: ID! + """ + User profile of the original worklog author. + """ + author: User + """ + User profile of the author performing the worklog update. + """ + updateAuthor: User + """ + Time spent displays the amount of time logged working on the issue so far. + """ + timeSpent: JiraEstimate + """ + Time Remaining displays the amount of time currently anticipated to resolve the issue. + """ + remainingEstimate: JiraEstimate + """ + Time of worklog creation. + """ + created: DateTime! + """ + Time of last worklog update. + """ + updated: DateTime + """ + Date and time when this unit of work was started. + """ + startDate: DateTime + """ + Either the group or the project role associated with this worklog, but not both. + Null means the permission level is unspecified, i.e. the worklog is public. + """ + permissionLevel: JiraPermissionLevel + """ + Description related to the achieved work. + """ + workDescription: JiraRichText +} + +""" +The connection type for JiraWorklog. +""" +type JiraWorkLogConnection { + """ + The approximate count of items in the connection. + """ + indicativeCount: Int + """ + The page info of the current page of results. + """ + pageInfo: PageInfo! + """ + A list of edges in the current page. + """ + edges: [JiraWorkLogEdge] +} + +""" +An edge in a JiraWorkLog connection. +""" +type JiraWorkLogEdge { + """ + The node at the the edge. + """ + node: JiraWorklog + """ + The cursor to this edge. + """ + cursor: String! +} +""" + AGG requirement - The combination of all *.graphqls in the directory need to be self contained. + So all the Dependencies from base schema need to be copied over here +""" +scalar URL +scalar DateTime +scalar Date +scalar Long +scalar JSON + +type Query { + """ + this field is added to enable self governed onboarding of Jira GraphQL types to AGG + see https://hello.atlassian.net/wiki/spaces/PSRV/pages/1010287708/Announcing+self+governed+APIs for more details + """ + jira: JiraQuery + + node(id: ID!): Node +} + +"Standard Relay node interface" +interface Node { + "The id of the node" + id: ID! +} + +type PageInfo { + """ + `true` if having more items when navigating forward + """ + hasNextPage: Boolean! + """ + `true` if having more items when navigating backward + """ + hasPreviousPage: Boolean! + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String +} + +interface QueryErrorExtension { + """ + A numerical code (such as an HTTP status code) representing the error category. + """ + statusCode: Int + + """ + A code representing the type of error. See the CompassErrorType enum for possible values. + """ + errorType: String +} + +type QueryError { + """ + The ID of the requested object, or null when the ID is not available. + """ + identifier: ID + + """ + A message describing the error. + """ + message: String + + """ + Contains extra data describing the error. + """ + extensions: [QueryErrorExtension!] +} + +""" +A very generic query error extension type with no additional fields specific to service. +""" +type GenericQueryErrorExtension implements QueryErrorExtension { + "A numerical code (such as a HTTP status code) representing the error category" + statusCode: Int + "Application specific error type" + errorType: String +} + +""" +The payload represents the mutation response structure. +It represents both success and error responses. +""" +interface Payload { + "The success field returns true if operation is successful. Otherwise, false." + success: Boolean! + """ + A bounded list of one or more mutation error information in case of unsuccessful execution. + If success field value is false, then errors field may offer additional information. + """ + errors: [MutationError!] +} + +""" +It represents mutation operation error details. +""" +type MutationError { + "The error message related to mutation operation" + message: String + "An extension to mutation error representing more details about the mutation error such as application specific codes and error types" + extensions : MutationErrorExtension +} + +""" +An extension to mutation error information to offer application specific error codes and error types. +It helps to pinpoint and classify the error response. +""" +interface MutationErrorExtension { + """ + A numerical code (example: HTTP status code) representing the error category + For example: 412 for operation preconditions failure. + """ + statusCode: Int + """ + Application specific error type in the readable format. + For example: unable to process request because application is at an illegal state. + """ + errorType: String +} + +""" +A very generic mutation error extension type with no additional fields specific to service. +""" +type GenericMutationErrorExtension implements MutationErrorExtension { + """ + A numerical code (example: HTTP status code) representing the error category + For example: 412 for operation preconditions failure. + """ + statusCode: Int + """ + Application specific error type in the readable format. + For example: unable to process request because application is at an illegal state. + """ + errorType: String +}""" + AGG requirement - The combination of all *.graphqls in the directory need to be self contained. +So all gira Dependencies from identity schema need to be copied over here +""" + +interface User { + accountId: ID! + canonicalAccountId: ID! + accountStatus: AccountStatus! + name: String! + picture: URL! +} + +enum AccountStatus { + active + inactive + closed +} + +type AtlassianAccountUser implements User { + accountId: ID! + canonicalAccountId: ID! + accountStatus: AccountStatus! + name: String! + picture: URL! + email: String + zoneinfo: String + locale: String +} \ No newline at end of file diff --git a/src/test/resources/introspection/1509-first-bug-data.json b/src/test/resources/introspection/1509-first-bug-data.json index 17669cbd09..a7a50bd75a 100644 --- a/src/test/resources/introspection/1509-first-bug-data.json +++ b/src/test/resources/introspection/1509-first-bug-data.json @@ -746,7 +746,7 @@ "name": "SecurityAdvisoryOrder", "ofType": null }, - "defaultValue": "{field:\"UPDATED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:UPDATED_AT,direction:DESC}" }, { "name": "identifier", @@ -870,7 +870,7 @@ "name": "SecurityVulnerabilityOrder", "ofType": null }, - "defaultValue": "{field:\"UPDATED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:UPDATED_AT,direction:DESC}" }, { "name": "ecosystem", @@ -2839,7 +2839,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -2853,7 +2853,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -3288,7 +3288,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -3302,7 +3302,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -3752,7 +3752,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\", \"ORGANIZATION_MEMBER\"]" + "defaultValue": "[OWNER, COLLABORATOR, ORGANIZATION_MEMBER]" }, { "name": "ownerAffiliations", @@ -3766,7 +3766,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -4500,7 +4500,7 @@ "name": "DeploymentOrder", "ofType": null }, - "defaultValue": "{field:\"CREATED_AT\",direction:\"ASC\"}" + "defaultValue": "{field:CREATED_AT,direction:ASC}" }, { "name": "after", @@ -4647,7 +4647,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -4661,7 +4661,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -6989,7 +6989,7 @@ "ofType": null } }, - "defaultValue": "[\"ARCHIVED\", \"NOT_ARCHIVED\"]" + "defaultValue": "[ARCHIVED, NOT_ARCHIVED]" } ], "type": { @@ -7442,7 +7442,7 @@ "ofType": null } }, - "defaultValue": "[\"ARCHIVED\", \"NOT_ARCHIVED\"]" + "defaultValue": "[ARCHIVED, NOT_ARCHIVED]" } ], "type": { @@ -8544,7 +8544,7 @@ "ofType": null } }, - "defaultValue": "[\"ARCHIVED\", \"NOT_ARCHIVED\"]" + "defaultValue": "[ARCHIVED, NOT_ARCHIVED]" } ], "type": { @@ -12055,7 +12055,7 @@ "ofType": null } }, - "defaultValue": "[\"ARCHIVED\", \"NOT_ARCHIVED\"]" + "defaultValue": "[ARCHIVED, NOT_ARCHIVED]" } ], "type": { @@ -14316,7 +14316,7 @@ "name": "UserStatusOrder", "ofType": null }, - "defaultValue": "{field:\"UPDATED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:UPDATED_AT,direction:DESC}" } ], "type": { @@ -14703,7 +14703,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -14717,7 +14717,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -14972,7 +14972,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -14986,7 +14986,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -15636,7 +15636,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -15650,7 +15650,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -15751,7 +15751,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "ownerAffiliations", @@ -15765,7 +15765,7 @@ "ofType": null } }, - "defaultValue": "[\"OWNER\", \"COLLABORATOR\"]" + "defaultValue": "[OWNER, COLLABORATOR]" }, { "name": "isLocked", @@ -16245,7 +16245,7 @@ "name": "UserStatusOrder", "ofType": null }, - "defaultValue": "{field:\"UPDATED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:UPDATED_AT,direction:DESC}" } ], "type": { @@ -22221,7 +22221,7 @@ "name": "PullRequestOrder", "ofType": null }, - "defaultValue": "{field:\"CREATED_AT\",direction:\"ASC\"}" + "defaultValue": "{field:CREATED_AT,direction:ASC}" } ], "type": { @@ -22502,7 +22502,7 @@ "name": "DeploymentOrder", "ofType": null }, - "defaultValue": "{field:\"CREATED_AT\",direction:\"ASC\"}" + "defaultValue": "{field:CREATED_AT,direction:ASC}" }, { "name": "after", @@ -27735,7 +27735,7 @@ "name": "UserStatusOrder", "ofType": null }, - "defaultValue": "{field:\"UPDATED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:UPDATED_AT,direction:DESC}" } ], "type": { @@ -41686,7 +41686,7 @@ "name": "SecurityVulnerabilityOrder", "ofType": null }, - "defaultValue": "{field:\"UPDATED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:UPDATED_AT,direction:DESC}" }, { "name": "ecosystem", @@ -42745,7 +42745,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -42970,7 +42970,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -43092,7 +43092,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -43204,7 +43204,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -45151,7 +45151,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -45245,7 +45245,7 @@ "name": "CommitContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -45790,7 +45790,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { @@ -45884,7 +45884,7 @@ "name": "ContributionOrder", "ofType": null }, - "defaultValue": "{field:\"OCCURRED_AT\",direction:\"DESC\"}" + "defaultValue": "{field:OCCURRED_AT,direction:DESC}" } ], "type": { diff --git a/src/test/resources/introspection/1509-second-bug-data.json b/src/test/resources/introspection/1509-second-bug-data.json index 0755ac59c9..4e4cb77684 100644 --- a/src/test/resources/introspection/1509-second-bug-data.json +++ b/src/test/resources/introspection/1509-second-bug-data.json @@ -804,7 +804,7 @@ "name": "NoteOrder", "ofType": null }, - "defaultValue": "{field:\"TITLE\",direction:\"ASC\"}" + "defaultValue": "{field:TITLE,direction:ASC}" } ], "type": { @@ -2095,7 +2095,7 @@ "name": "ContributorOrder", "ofType": null }, - "defaultValue": "{field:\"CONTRIBUTED_AT\",direction:\"ASC\"}" + "defaultValue": "{field:CONTRIBUTED_AT,direction:ASC}" } ], "type": { @@ -2718,7 +2718,7 @@ "name": "NoteOrder", "ofType": null }, - "defaultValue": "{field:\"TITLE\",direction:\"ASC\"}" + "defaultValue": "{field:TITLE,direction:ASC}" } ], "type": { @@ -4489,7 +4489,7 @@ "name": "ContributorOrder", "ofType": null }, - "defaultValue": "{field:\"CONTRIBUTED_AT\",direction:\"ASC\"}" + "defaultValue": "{field:CONTRIBUTED_AT,direction:ASC}" } ], "type": { diff --git a/src/test/resources/large-schema-1-query.graphql b/src/test/resources/large-schema-1-query.graphql new file mode 100644 index 0000000000..d83c60335d --- /dev/null +++ b/src/test/resources/large-schema-1-query.graphql @@ -0,0 +1 @@ +query operation {...Fragment1 ...Fragment2 ...Fragment3} fragment Fragment3 on Object27 {field91 {field29 field30 field27 field1} field57 {field58 field59 field1}} fragment Fragment2 on Object27 {field91 {field29 field30 field27 field1} field57 {field58 field59 field1}} fragment Fragment1 on Object27 {field91 {field27 field1} field57 {field58 field59 field1}} diff --git a/src/test/resources/large-schema-1.graphqls b/src/test/resources/large-schema-1.graphqls new file mode 100644 index 0000000000..d56a03590d --- /dev/null +++ b/src/test/resources/large-schema-1.graphqls @@ -0,0 +1,551 @@ +schema { + query: Object27 + mutation: Object23 +} + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! +) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Directs the executor to skip this field or fragment when the `if`'argument is true." +directive @skip( + "Skipped when true." + if: Boolean! +) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" +) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! +) on SCALAR + +interface Interface1 implements Interface2 & Interface3 { + field1: ID! + field13: String + field14: String + field15: String + field16: String! + field17: Scalar1 + field18(argument6: [Enum2] = [EnumValue14], argument7: Int, argument8: String): Object5 + field2: String! + field23(argument10: [Enum2] = [EnumValue14], argument11: Int, argument12: String, argument9: Float = 1.0): Object5 + field3: Interface2 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +interface Interface2 { + field1: ID! + field2: String! + field3: Interface2 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +interface Interface3 { + field1: ID! +} + +interface Interface4 implements Interface2 & Interface3 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +interface Interface5 implements Interface2 & Interface3 { + field1: ID! + field2: String! + field27: String + field28: String + field29: String + field3: Interface2 + field30: String + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +interface Interface6 { + field36: Boolean! + field37: String +} + +interface Interface7 { + field1: ID! + field16: String! + field24: Int + field40: String! +} + +type Object1 implements Interface1 & Interface2 & Interface3 & Interface4 { + field1: ID! + field13: String + field14: String + field15: String + field16: String! + field17: Scalar1 + field18(argument6: [Enum2] = [EnumValue14], argument7: Int, argument8: String): Object5 + field2: String! + field23(argument10: [Enum2] = [EnumValue14], argument11: Int, argument12: String, argument9: Float = 1.0): Object5 + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +type Object10 implements Interface6 { + field36: Boolean! + field37: String + field38: Object6 +} + +type Object11 implements Interface2 & Interface3 & Interface4 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field39: Interface1 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +type Object12 implements Interface2 & Interface3 & Interface4 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field40: String! +} + +type Object13 implements Interface2 & Interface3 & Interface4 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +type Object14 implements Interface2 & Interface3 & Interface5 { + field1: ID! + field2: String! + field27: String + field28: String + field29: String + field3: Interface2 + field30: String + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +type Object15 implements Interface2 & Interface3 & Interface5 { + field1: ID! + field2: String! + field27: String + field28: String + field29: String + field3: Interface2 + field30: String + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +type Object16 implements Interface6 { + field36: Boolean! + field37: String +} + +type Object17 { + field41: [String!] + field42: String! +} + +type Object18 implements Interface2 & Interface3 & Interface4 & Interface7 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field40: String! +} + +type Object19 implements Interface2 & Interface3 & Interface4 & Interface7 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field40: String! +} + +type Object2 { + field5: [Object3] + field8: Object4 +} + +type Object20 implements Interface2 & Interface3 & Interface4 & Interface7 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field40: String! +} + +type Object21 implements Interface2 & Interface3 & Interface4 & Interface7 { + field1: ID! + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field40: String! +} + +type Object22 implements Interface2 & Interface3 { + field1: ID! + field2: String! + field3: Interface2 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +type Object23 { + field43(argument13: InputObject3): Object24! + field45(argument14: InputObject4): Object24! + field46(argument15: InputObject3): Object24! + field47(argument16: InputObject4): Object24! + field48(argument17: InputObject5): Object24! + field49(argument18: InputObject6): Object24! + field50(argument19: InputObject7): Object24! + field51(argument20: InputObject9): Object24! + field52(argument21: InputObject10): Object25! + field54(argument22: InputObject11): Object26! + field56(argument23: InputObject12): Object24! +} + +type Object24 implements Interface6 { + field36: Boolean! + field37: String + field44: Object8 +} + +type Object25 implements Interface6 { + field36: Boolean! + field37: String + field53: ID +} + +type Object26 implements Interface6 { + field36: Boolean! + field37: String + field55: Interface5 +} + +type Object27 { + field105(argument55: ID): Interface3 + field106(argument56: Int, argument57: String, argument58: Int, argument59: String): Object36 + field57: Object28 + field68(argument24: ID): Interface1 + field69(argument25: Scalar1, argument26: [Enum2] = [EnumValue14], argument27: Int, argument28: String): Object5 + field70(argument29: Float, argument30: Float, argument31: Float = 1.0, argument32: [Enum2] = [EnumValue14], argument33: Int, argument34: String): Object5 + field71(argument35: Int, argument36: String): Object5 + field72(argument37: [ID]): [Interface4]! + field73(argument38: [Enum1!]!, argument39: Int, argument40: String, argument41: Int, argument42: String): Object7 + field74(argument43: String, argument44: Int = 1, argument45: Int = 2, argument46: Boolean): Object30 + field91: Object32 +} + +type Object28 implements Interface3 { + field1: ID! + field58: String + field59: Boolean! + field60: [Object29] +} + +type Object29 { + field61: String! + field62: String! + field63: String + field64: String + field65: String + field66: String + field67: String +} + +type Object3 { + field6: String + field7: Interface2 +} + +type Object30 implements Interface2 & Interface3 { + field1: ID! + field14: String + field2: String! + field3: Interface2 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field75: String + field76: String + field77: String! + field78: Object31 + field88: [Object31] + field89: [Object31] + field90: [Object31] +} + +type Object31 { + field79: ID! + field80: Enum3 + field81: String + field82: String + field83: String + field84: String + field85: Int + field86: Int + field87: String +} + +type Object32 implements Interface2 & Interface3 & Interface5 { + field1: ID! + field104(argument51: Int, argument52: String, argument53: Int, argument54: String): Object7 + field2: String! + field27: String + field28: String + field29: String + field3: Interface2 + field30: String + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field92: String + field93: String + field94(argument47: Int, argument48: String, argument49: Int, argument50: String): Object33 +} + +type Object33 { + field103: Object4 + field95: [Object34] +} + +type Object34 { + field96: String + field97: Object35 +} + +type Object35 implements Interface2 & Interface3 & Interface4 { + field1: ID! + field100: [String!] + field101: [String!] + field102: [String!] + field16: String! + field2: String! + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field39: Interface1 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 + field98: [Interface5] + field99: String! +} + +type Object36 { + field107: [Object37] + field110: Object4 +} + +type Object37 { + field108: String + field109: Interface7 +} + +type Object4 { + field10: Boolean! + field11: Boolean! + field12: String + field9: String +} + +type Object5 { + field19: [Object6] + field22: Object4 +} + +type Object6 { + field20: String + field21: Interface1 +} + +type Object7 { + field32: [Object8] + field35: Object4 +} + +type Object8 { + field33: String + field34: Interface4 +} + +type Object9 implements Interface1 & Interface2 & Interface3 & Interface4 { + field1: ID! + field13: String + field14: String + field15: String + field16: String! + field17: Scalar1 + field18(argument6: [Enum2] = [EnumValue14], argument7: Int, argument8: String): Object5 + field2: String! + field23(argument10: [Enum2] = [EnumValue14], argument11: Int, argument12: String, argument9: Float = 1.0): Object5 + field24: Int + field25: Int + field26: Interface5 + field3: Interface2 + field31: Object7 + field4(argument1: [Enum1!] = [EnumValue1], argument2: Int, argument3: String, argument4: Int, argument5: String): Object2 +} + +enum Enum1 { + EnumValue1 + EnumValue10 + EnumValue11 + EnumValue2 + EnumValue3 + EnumValue4 + EnumValue5 + EnumValue6 + EnumValue7 + EnumValue8 + EnumValue9 +} + +enum Enum2 { + EnumValue12 + EnumValue13 + EnumValue14 + EnumValue15 + EnumValue16 + EnumValue17 +} + +enum Enum3 { + EnumValue18 + EnumValue19 + EnumValue20 + EnumValue21 +} + +scalar Scalar1 + +scalar Scalar2 + +input InputObject1 { + inputField1: String! +} + +input InputObject10 { + inputField35: ID! +} + +input InputObject11 { + inputField36: ID! + inputField37: String + inputField38: String + inputField39: String + inputField40: Boolean = true +} + +input InputObject12 { + inputField41: String + inputField42: [Scalar2] +} + +input InputObject2 { + inputField2: String + inputField3: String! +} + +input InputObject3 { + inputField4: ID! + inputField5: Enum2! + inputField6: String! + inputField7: String + inputField8: String + inputField9: Scalar1 +} + +input InputObject4 { + inputField10: ID! + inputField11: Enum2! + inputField12: String! + inputField13: String + inputField14: String + inputField15: Scalar1 +} + +input InputObject5 { + inputField16: ID! + inputField17: String! +} + +input InputObject6 { + inputField18: ID! + inputField19: String! +} + +input InputObject7 { + inputField20: ID! + inputField21: String! + inputField22: String + inputField23: String! + inputField24: [Scalar2] + inputField25: InputObject8 +} + +input InputObject8 { + inputField26: ID + inputField27: String + inputField28: Scalar1 +} + +input InputObject9 { + inputField29: ID! + inputField30: String + inputField31: String! + inputField32: [ID!] + inputField33: [Scalar2] + inputField34: InputObject8 +} diff --git a/src/test/resources/large-schema-2-query.graphql b/src/test/resources/large-schema-2-query.graphql new file mode 100644 index 0000000000..5c3a27bf80 --- /dev/null +++ b/src/test/resources/large-schema-2-query.graphql @@ -0,0 +1 @@ +query {field1121 {field10 field50 {field10 field49 field50 {field10 field49 field50 {field10 field49 field50 {field10 field49}}}}}} diff --git a/src/test/resources/large-schema-2.graphqls b/src/test/resources/large-schema-2.graphqls new file mode 100644 index 0000000000..5b7e961891 --- /dev/null +++ b/src/test/resources/large-schema-2.graphqls @@ -0,0 +1,4265 @@ +schema { + query: Object1 +} + +interface Interface1 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface10 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +interface Interface11 { + field10: ID + field106: Scalar3 + field107: String + field108: Boolean + field109: Boolean + field11: Boolean! + field110: Boolean + field111: String + field112: String + field113: String + field114: String + field115: String + field116: String + field117: String + field118: String + field119: Boolean + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field120: Boolean + field121: Boolean + field122: Boolean + field123: Boolean + field124: Scalar3 + field125: String + field126: String + field127: Scalar2 + field128: String + field129: String + field130: String + field131: Enum6 + field132: String + field133: String + field134: Scalar3 + field135: Boolean + field136: String + field137: String + field138: String + field139: String + field140: Boolean + field141: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface12 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface13 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface14 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +interface Interface15 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface16 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface17 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface18 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface19 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar2 + field213: Scalar4 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface20 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar2 + field213: Scalar4 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface21 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface22 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface23 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface24 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface25 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface26 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface27 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface28 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface29 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface3 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +interface Interface30 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field264(argument391: Int, argument392: Int, argument393: InputObject1): [Object33!]! + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface31 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field286: Boolean + field287: Scalar3 + field288: Scalar3 + field289: Boolean + field290: Boolean + field291: Boolean + field292: Boolean + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface32 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface33 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface34 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface35 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface36 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +interface Interface37 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field438: String + field439: String + field440: String + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +interface Interface38 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field439: String + field440: String + field446: String + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +interface Interface39 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface4 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface40 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface41 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field497: Boolean + field498: Scalar3 + field499: Boolean + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field500: Boolean + field501: Boolean + field502: String + field503: Boolean + field504: Int + field505: Scalar3 +} + +interface Interface42 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field497: Boolean + field498: Scalar3 + field499: Boolean + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field500: Boolean + field501: Boolean + field502: String + field503: Boolean + field504: Int + field505: Scalar3 +} + +interface Interface43 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field127: Scalar2 + field139: Scalar2 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field529: Int + field530: String + field531: String + field532: Enum16 + field533: String + field534: String + field535: Int + field536: String + field537: Boolean + field538: Int + field539: String +} + +interface Interface44 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface45 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field498: Scalar4 + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field502: String + field504: Int! + field505: Scalar4 +} + +interface Interface46 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +interface Interface47 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +interface Interface48 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field778: String +} + +interface Interface49 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field788: String +} + +interface Interface5 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface50 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface6 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface7 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +interface Interface8 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +interface Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object1 { + field1(argument1: ID): Interface1 + field1000(argument1947: ID): Object134 + field1001(argument1948: Scalar3, argument1949: String, argument1950: Boolean, argument1951: Boolean, argument1952: Boolean, argument1953: String, argument1954: String, argument1955: String, argument1956: String, argument1957: String, argument1958: String, argument1959: String, argument1960: String, argument1961: Boolean, argument1962: Boolean, argument1963: Boolean, argument1964: Boolean, argument1965: Boolean, argument1966: Scalar3, argument1967: String, argument1968: String, argument1969: Int, argument1970: Scalar2, argument1971: String, argument1972: String, argument1973: String, argument1974: ID, argument1975: Boolean, argument1976: Enum6, argument1977: String, argument1978: Int, argument1979: InputObject1, argument1980: String, argument1981: String, argument1982: Scalar3, argument1983: Boolean, argument1984: String, argument1985: String, argument1986: String, argument1987: String, argument1988: Boolean, argument1989: String): [Object134!]! + field1002(argument1990: ID): Interface48 + field1003(argument1991: Int, argument1992: ID, argument1993: Boolean, argument1994: String, argument1995: String, argument1996: Int, argument1997: InputObject1): [Interface48!]! + field1004(argument1998: Int, argument1999: ID, argument2000: Boolean, argument2001: String, argument2002: Int, argument2003: InputObject1): [Object135!]! + field1005(argument2004: ID): Object135 + field1006(argument2005: ID): Object136 + field1008(argument2006: String, argument2007: Int, argument2008: ID, argument2009: Boolean, argument2010: String, argument2011: Int, argument2012: InputObject1, argument2013: Scalar2, argument2014: Scalar2, argument2015: Scalar2, argument2016: Scalar2): [Object136!]! + field1009(argument2017: Scalar2, argument2018: Int, argument2019: ID, argument2020: Boolean, argument2021: Scalar2, argument2022: String, argument2023: Int, argument2024: InputObject1, argument2025: String, argument2026: Scalar2, argument2027: Scalar2, argument2028: Scalar2, argument2029: Scalar2): [Object137!]! + field101(argument123: Int, argument124: Int, argument125: ID, argument126: InputObject1, argument127: Int): [Object11!]! + field1015(argument2030: ID): Object137 + field1016(argument2031: ID): Object138 + field102(argument128: Int, argument129: String, argument130: Int, argument131: ID, argument132: InputObject1, argument133: Scalar1, argument134: String, argument135: Int): [Object12!]! + field1021(argument2032: String, argument2033: Enum31, argument2034: Int, argument2035: String, argument2036: String, argument2037: ID, argument2038: Boolean, argument2039: String, argument2040: Int, argument2041: InputObject1, argument2042: String, argument2043: Int, argument2044: Int): [Object138!]! + field1022(argument2045: ID): Object139 + field1023(argument2046: ID): Object140 + field1024(argument2047: Int, argument2048: ID, argument2049: Boolean, argument2050: String, argument2051: Int, argument2052: InputObject1): [Object140!]! + field1025(argument2053: Int, argument2054: ID, argument2055: Boolean, argument2056: String, argument2057: Int, argument2058: InputObject1): [Object139!]! + field1026(argument2059: ID): Object141 + field1030(argument2060: String, argument2061: Scalar1, argument2062: Int, argument2063: ID, argument2064: Boolean, argument2065: String, argument2066: Int, argument2067: InputObject1, argument2068: Int, argument2069: Enum32, argument2070: Scalar1, argument2071: Enum33): [Object141!]! + field1031(argument2072: ID): Object142 + field1032(argument2073: Int, argument2074: ID, argument2075: Boolean, argument2076: String, argument2077: Int, argument2078: InputObject1): [Object142!]! + field1033(argument2079: ID): Object143 + field1038(argument2080: Int, argument2081: ID, argument2082: Boolean, argument2083: String, argument2084: Int, argument2085: InputObject1, argument2086: String, argument2087: String, argument2088: Scalar2, argument2089: String): [Object143!]! + field1039(argument2090: ID): Object144 + field1040(argument2091: Int, argument2092: ID, argument2093: Boolean, argument2094: String, argument2095: Int, argument2096: InputObject1): [Object144!]! + field1041(argument2097: ID): Object145 + field1042(argument2098: Int, argument2099: ID, argument2100: Boolean, argument2101: String, argument2102: Int, argument2103: InputObject1): [Object145!]! + field1043(argument2104: ID): Interface50 + field1044(argument2105: Int, argument2106: ID, argument2107: Boolean, argument2108: String, argument2109: Int, argument2110: InputObject1): [Interface50!]! + field1045(argument2111: ID): Object146 + field1050(argument2112: String, argument2113: Scalar1, argument2114: String, argument2115: String, argument2116: Scalar2, argument2117: String, argument2118: Int, argument2119: Boolean, argument2120: String, argument2121: ID, argument2122: String, argument2123: String, argument2124: Boolean, argument2125: String, argument2126: String, argument2127: Enum2, argument2128: Int, argument2129: String, argument2130: Int, argument2131: InputObject1, argument2132: Boolean, argument2133: String, argument2134: String, argument2135: Scalar2, argument2136: Scalar2): [Object146!]! + field1051(argument2137: ID): Object147 + field1052(argument2138: String, argument2139: Scalar1, argument2140: String, argument2141: String, argument2142: Scalar2, argument2143: String, argument2144: Int, argument2145: Boolean, argument2146: String, argument2147: ID, argument2148: String, argument2149: String, argument2150: Boolean, argument2151: String, argument2152: String, argument2153: Enum2, argument2154: Int, argument2155: String, argument2156: Int, argument2157: InputObject1, argument2158: Boolean, argument2159: String, argument2160: String, argument2161: Scalar2, argument2162: Scalar2): [Object147!]! + field1053(argument2163: ID): Object148 + field1055(argument2164: String, argument2165: Scalar1, argument2166: Int, argument2167: Boolean, argument2168: ID, argument2169: Boolean, argument2170: Int, argument2171: String, argument2172: Int, argument2173: InputObject1, argument2174: String): [Object148!]! + field1056(argument2175: ID): Object149 + field1058(argument2176: String, argument2177: Int, argument2178: ID, argument2179: Boolean, argument2180: String, argument2181: Int, argument2182: InputObject1, argument2183: String, argument2184: Scalar2): [Object149!]! + field1059(argument2185: ID): Object150 + field1074(argument2192: ID): Object151 + field1075(argument2193: Int, argument2194: Int, argument2195: ID, argument2196: InputObject1, argument2197: Int): [Object151!]! + field1076(argument2198: Int, argument2199: Int, argument2200: Int, argument2201: Int, argument2202: ID, argument2203: InputObject1, argument2204: Int, argument2205: String, argument2206: Int): [Object150!]! + field1077(argument2207: ID): Object98 + field1078(argument2208: String, argument2209: String, argument2210: String, argument2211: String, argument2212: Int, argument2213: String, argument2214: ID, argument2215: Scalar1, argument2216: Float, argument2217: String, argument2218: String, argument2219: Float, argument2220: String, argument2221: Int, argument2222: InputObject1, argument2223: String, argument2224: String, argument2225: Int): [Object98!]! + field1079(argument2226: ID): Object152 + field1081(argument2227: Boolean, argument2228: String, argument2229: Int, argument2230: ID, argument2231: Boolean, argument2232: String, argument2233: Int, argument2234: InputObject1): [Object152!]! + field1082(argument2235: ID): Interface8 + field1083(argument2236: Int, argument2237: ID, argument2238: Boolean, argument2239: String, argument2240: Int, argument2241: InputObject1): [Interface8!]! + field1084(argument2242: ID): Object153 + field1085(argument2243: Int, argument2244: ID, argument2245: Boolean, argument2246: String, argument2247: Int, argument2248: InputObject1): [Object153!]! + field1086(argument2249: Int, argument2250: Boolean, argument2251: Boolean, argument2252: ID, argument2253: Boolean, argument2254: Int, argument2255: Int, argument2256: Boolean, argument2257: String, argument2258: Int, argument2259: InputObject1, argument2260: Boolean): [Object154!]! + field1093(argument2261: ID): Object154 + field1094(argument2262: ID): Object155 + field1102(argument2263: String, argument2264: Int, argument2265: Int, argument2266: ID, argument2267: InputObject1, argument2268: String, argument2269: String, argument2270: Int, argument2271: Int): [Object155!]! + field1103(argument2272: ID): Object156 + field1104(argument2273: Int, argument2274: ID, argument2275: Boolean, argument2276: String, argument2277: Int, argument2278: InputObject1): [Object156!]! + field1105(argument2279: ID): Object157 + field1107(argument2280: Boolean, argument2281: String, argument2282: String, argument2283: Int, argument2284: ID, argument2285: Boolean, argument2286: String, argument2287: Int, argument2288: Int, argument2289: InputObject1, argument2290: Enum8): [Object157!]! + field1108(argument2291: ID): Object158 + field1110(argument2292: String, argument2293: Int, argument2294: ID, argument2295: String, argument2296: Boolean, argument2297: String, argument2298: Int, argument2299: InputObject1): [Object158!]! + field1111(argument2300: Int, argument2301: String, argument2302: Int, argument2303: ID, argument2304: InputObject1, argument2305: String, argument2306: String, argument2307: Scalar1, argument2308: Int): [Object159!]! + field1119(argument2309: ID): Object159 + field1120(argument2310: ID): Object42 + field1121(argument2311: Scalar3, argument2312: Int, argument2313: ID, argument2314: Boolean, argument2315: String, argument2316: Int, argument2317: InputObject1): [Object42!]! + field1122(argument2318: ID): Object160 + field1123(argument2319: Scalar2, argument2320: Int, argument2321: ID, argument2322: Boolean, argument2323: Scalar4, argument2324: String, argument2325: Int, argument2326: InputObject1): [Object160!]! + field1124(argument2327: ID): Object161 + field1161(argument2337: Int, argument2338: String, argument2339: Scalar2, argument2340: Scalar2, argument2341: Int, argument2342: ID, argument2343: InputObject1): [Object161!]! + field1162(argument2344: ID): Object163 + field1163(argument2345: Boolean, argument2346: Int, argument2347: Float, argument2348: Scalar2, argument2349: String, argument2350: Int, argument2351: ID, argument2352: InputObject1, argument2353: String, argument2354: Scalar1, argument2355: String, argument2356: Int): [Object163!]! + field1164(argument2357: Scalar2, argument2358: String, argument2359: Int, argument2360: Int, argument2361: ID, argument2362: InputObject1, argument2363: String, argument2364: Int): [Object164!]! + field1165(argument2365: ID): Object164 + field1166(argument2366: ID): Object162 + field1167(argument2367: Enum34, argument2368: String, argument2369: Scalar1, argument2370: Int, argument2371: Int, argument2372: ID, argument2373: InputObject1, argument2374: String, argument2375: Int): [Object162!]! + field1168(argument2376: ID): Object165 + field1172(argument2377: String, argument2378: Int, argument2379: ID, argument2380: Boolean, argument2381: String, argument2382: Int, argument2383: InputObject1, argument2384: Scalar6, argument2385: Scalar6): [Object165!]! + field1173(argument2386: ID): Object53 + field1174(argument2387: ID): Interface15 + field1175(argument2388: Int, argument2389: ID, argument2390: Boolean, argument2391: String, argument2392: Int, argument2393: InputObject1): [Interface15!]! + field1176(argument2394: ID): Object166 + field1179(argument2395: Int, argument2396: String, argument2397: Int, argument2398: ID, argument2399: InputObject1): [Object166!]! + field1180(argument2400: ID): Object167 + field1181(argument2401: String, argument2402: Scalar1, argument2403: Scalar2, argument2404: String, argument2405: Int, argument2406: Boolean, argument2407: ID, argument2408: Boolean, argument2409: Enum2, argument2410: Int, argument2411: String, argument2412: Int, argument2413: InputObject1, argument2414: String, argument2415: String, argument2416: Boolean, argument2417: String, argument2418: String, argument2419: Scalar2, argument2420: Scalar2): [Object167!]! + field1182(argument2421: ID): Object168 + field1183(argument2422: Int, argument2423: ID, argument2424: Boolean, argument2425: String, argument2426: Int, argument2427: InputObject1): [Object168!]! + field1184(argument2428: Boolean, argument2429: Int, argument2430: ID, argument2431: Boolean, argument2432: String, argument2433: Int, argument2434: InputObject1, argument2435: Boolean): [Object53!]! + field145(argument136: ID): Object12 + field146(argument137: String, argument138: Int, argument139: Int, argument140: ID, argument141: String, argument142: InputObject1, argument143: String, argument144: Scalar1, argument145: String, argument146: Int): [Object13!]! + field166(argument147: ID): Object13 + field167(argument148: ID): Interface12 + field169(argument149: Int, argument150: String, argument151: ID, argument152: Boolean, argument153: String, argument154: Int, argument155: InputObject1): [Interface12!]! + field170(argument156: ID): Object15 + field171(argument157: String, argument158: Int, argument159: ID, argument160: Boolean, argument161: String, argument162: Int, argument163: InputObject1, argument164: Scalar2): [Object15!]! + field172(argument165: ID, argument166: String): Object16 + field185(argument167: ID): Interface9 + field186(argument168: Int, argument169: ID, argument170: Boolean, argument171: String, argument172: Int, argument173: InputObject1): [Interface9!]! + field187(argument174: Scalar2, argument175: Boolean, argument176: Boolean, argument177: Boolean, argument178: Boolean, argument179: String, argument180: String, argument181: String, argument182: String, argument183: String, argument184: String, argument185: String, argument186: String, argument187: String, argument188: Boolean, argument189: String, argument190: Int, argument191: ID, argument192: Boolean, argument193: Scalar2, argument194: Boolean, argument195: Boolean, argument196: String, argument197: Int, argument198: InputObject1, argument199: String, argument200: String, argument201: String, argument202: Scalar2): [Object16!]! + field188(argument203: ID): Object17 + field193(argument204: Boolean, argument205: String, argument206: String, argument207: Int, argument208: ID, argument209: Boolean, argument210: String, argument211: Int, argument212: Int, argument213: InputObject1, argument214: Enum8): [Object17!]! + field194(argument215: ID): Object18 + field204(argument216: String, argument217: Scalar1, argument218: Int, argument219: Int, argument220: ID, argument221: InputObject1, argument222: Scalar2, argument223: Scalar1, argument224: String, argument225: Int): [Object18!]! + field205(argument226: ID): Interface16 + field208(argument227: Int, argument228: ID, argument229: Boolean, argument230: String, argument231: Int, argument232: Scalar2, argument233: InputObject1): [Interface16!]! + field209(argument234: ID): Interface18 + field210(argument235: Int, argument236: ID, argument237: Boolean, argument238: String, argument239: Int, argument240: Scalar2, argument241: InputObject1): [Interface18!]! + field211(argument242: ID): Object19 + field222(argument243: Scalar2, argument244: Int, argument245: ID, argument246: Boolean, argument247: Scalar4, argument248: Scalar3, argument249: String, argument250: Int, argument251: InputObject1, argument252: Boolean, argument253: Enum9, argument254: Scalar3, argument255: Scalar3, argument256: Scalar4, argument257: String, argument258: Scalar3, argument259: Scalar3): [Object19!]! + field223(argument260: ID): Object20 + field224(argument261: Int, argument262: ID, argument263: Boolean, argument264: String, argument265: Int, argument266: Scalar2, argument267: InputObject1): [Object20!]! + field225(argument268: ID): Object21 + field226(argument269: Int, argument270: ID, argument271: Boolean, argument272: String, argument273: Int, argument274: Scalar2, argument275: InputObject1): [Object21!]! + field227(argument276: ID): Object22 + field228(argument277: Int, argument278: ID, argument279: Boolean, argument280: String, argument281: Int, argument282: Scalar2, argument283: InputObject1): [Object22!]! + field229(argument284: ID): Object23 + field230(argument285: Int, argument286: ID, argument287: Boolean, argument288: String, argument289: Int, argument290: Scalar2, argument291: InputObject1): [Object23!]! + field231(argument292: ID): Object24 + field232(argument293: Int, argument294: ID, argument295: Boolean, argument296: String, argument297: Int, argument298: InputObject1): [Object24!]! + field233(argument299: ID): Interface27 + field234(argument300: Int, argument301: ID, argument302: Boolean, argument303: String, argument304: Int, argument305: InputObject1): [Interface27!]! + field235(argument306: ID): Interface28 + field236(argument307: Int, argument308: ID, argument309: Boolean, argument310: String, argument311: Int, argument312: InputObject1): [Interface28!]! + field237(argument313: ID): Object25 + field240(argument314: Int, argument315: Boolean, argument316: Scalar2, argument317: ID, argument318: Boolean, argument319: String, argument320: Boolean, argument321: Int, argument322: InputObject1, argument323: Scalar2): [Object25!]! + field241(argument324: ID): Object26 + field242(argument325: ID): Object27 + field243(argument326: Int, argument327: ID, argument328: Boolean, argument329: String, argument330: Int, argument331: InputObject1): [Object27!]! + field244(argument332: ID): Object28 + field245(argument333: Int, argument334: ID, argument335: Boolean, argument336: String, argument337: Int, argument338: InputObject1): [Object28!]! + field246(argument339: Int, argument340: ID, argument341: Boolean, argument342: String, argument343: Int, argument344: InputObject1): [Object26!]! + field247(argument345: Int, argument346: ID, argument347: Boolean, argument348: String, argument349: Int, argument350: InputObject1): [Interface29!]! + field248(argument351: ID): Interface29 + field249(argument352: ID): Object29 + field250(argument353: Int, argument354: ID, argument355: Boolean, argument356: String, argument357: Int, argument358: InputObject1): [Object29!]! + field251(argument359: ID): Interface25 + field252(argument360: Int, argument361: ID, argument362: Boolean, argument363: String, argument364: Int, argument365: InputObject1): [Interface25!]! + field253(argument366: ID): Object30 + field255(argument367: Int, argument368: ID, argument369: Boolean, argument370: String, argument371: Int, argument372: InputObject1): [Object30!]! + field256(argument373: ID): Object31 + field260(argument374: String, argument375: String, argument376: Int, argument377: ID, argument378: Boolean, argument379: Scalar2, argument380: String, argument381: Int, argument382: InputObject1): [Object31!]! + field261(argument383: ID): Interface22 + field262(argument384: Int, argument385: ID, argument386: Boolean, argument387: String, argument388: Int, argument389: InputObject1): [Interface22!]! + field263(argument390: ID): Object32 + field269(argument394: Int, argument395: ID, argument396: Boolean, argument397: String, argument398: Int, argument399: InputObject1): [Object32!]! + field270(argument400: ID): Object34 + field279(argument401: Scalar2, argument402: String, argument403: Scalar2, argument404: Int, argument405: Int, argument406: ID, argument407: InputObject1, argument408: Scalar2, argument409: Scalar2, argument410: Int, argument411: Int): [Object34!]! + field280(argument412: ID): Interface23 + field281(argument413: Int, argument414: ID, argument415: Boolean, argument416: String, argument417: Int, argument418: Scalar2, argument419: InputObject1): [Interface23!]! + field282(argument420: ID): Object35 + field284(argument421: String, argument422: Int, argument423: ID, argument424: Boolean, argument425: String, argument426: Int, argument427: InputObject1): [Object35!]! + field285(argument428: ID): Interface31 + field293(argument429: ID): Object36 + field294(argument430: Int, argument431: ID, argument432: Boolean, argument433: String, argument434: Int, argument435: InputObject1): [Object36!]! + field295(argument436: Int, argument437: ID, argument438: Boolean, argument439: Boolean, argument440: String, argument441: Int, argument442: InputObject1, argument443: Scalar3, argument444: Scalar3, argument445: Boolean, argument446: Boolean, argument447: Boolean, argument448: Boolean): [Interface31!]! + field296(argument449: Int, argument450: ID, argument451: Boolean, argument452: String, argument453: Int, argument454: InputObject1, argument455: String, argument456: String, argument457: String, argument458: Scalar2, argument459: Scalar2): [Object37!]! + field302(argument460: ID): Object37 + field303(argument461: Int, argument462: ID, argument463: Boolean, argument464: String, argument465: String, argument466: String, argument467: String, argument468: Int, argument469: InputObject1): [Object38!]! + field307(argument470: ID): Object38 + field308(argument471: Int, argument472: ID, argument473: Boolean, argument474: String, argument475: Int, argument476: InputObject1): [Interface32!]! + field309(argument477: ID): Interface32 + field310(argument478: ID): Object39 + field311(argument479: Int, argument480: ID, argument481: Boolean, argument482: String, argument483: Int, argument484: InputObject1): [Object39!]! + field312(argument485: ID): Object40 + field319(argument486: Boolean, argument487: String, argument488: String, argument489: Int, argument490: ID, argument491: Boolean, argument492: String, argument493: String, argument494: Int, argument495: InputObject1, argument496: Boolean, argument497: String): [Object40!]! + field320(argument498: ID): Object41 + field326(argument499: Scalar2, argument500: Int, argument501: ID, argument502: Boolean, argument503: String, argument504: Scalar2, argument505: Int, argument506: InputObject1): [Object41!]! + field327(argument507: ID): Interface13 + field328(argument508: Int, argument509: ID, argument510: Boolean, argument511: String, argument512: Int, argument513: InputObject1): [Interface13!]! + field329(argument514: ID): Interface33 + field330(argument515: Int, argument516: ID, argument517: Boolean, argument518: String, argument519: Int, argument520: InputObject1): [Interface33!]! + field331(argument521: ID): Object43 + field332(argument522: Int, argument523: ID, argument524: Boolean, argument525: String, argument526: Int, argument527: InputObject1): [Object43!]! + field333(argument528: Int, argument529: ID, argument530: Boolean, argument531: String, argument532: Int, argument533: InputObject1): [Interface34!]! + field334(argument534: ID): Interface34 + field335(argument535: Int, argument536: ID, argument537: Boolean, argument538: String, argument539: Int, argument540: Int, argument541: String, argument542: String, argument543: Enum10, argument544: Int, argument545: Scalar2, argument546: Int, argument547: Enum2, argument548: String, argument549: Int, argument550: InputObject1, argument551: String, argument552: Int, argument553: Int, argument554: String, argument555: Int, argument556: Int, argument557: String, argument558: String, argument559: Enum10, argument560: Int, argument561: Scalar2, argument562: Int): [Object44!]! + field357(argument563: ID): Object44 + field358(argument564: Scalar2, argument565: Int, argument566: ID, argument567: Boolean, argument568: String, argument569: Int, argument570: InputObject1): [Object45!]! + field360(argument571: ID): Object45 + field361(argument572: ID): Object46 + field363(argument573: Boolean, argument574: Int, argument575: ID, argument576: Boolean, argument577: String, argument578: Int, argument579: InputObject1): [Object46!]! + field364(argument580: Int, argument581: ID, argument582: Boolean, argument583: String, argument584: Int, argument585: InputObject1): [Interface2!]! + field365(argument586: ID): Interface2 + field366(argument587: ID): Object2 + field367(argument588: Int, argument589: Int, argument590: ID, argument591: InputObject1, argument592: String, argument593: Int): [Object2!]! + field368(argument594: ID): Object5 + field369(argument595: Boolean, argument596: String, argument597: String, argument598: String, argument599: Int, argument600: Boolean, argument601: Int, argument602: ID, argument603: InputObject1, argument604: Int, argument605: Boolean): [Object5!]! + field370(argument606: ID): Object3 + field371(argument607: ID): Object4 + field372(argument608: Int, argument609: Int, argument610: ID, argument611: InputObject1): [Object4!]! + field373(argument612: Int, argument613: ID, argument614: String, argument615: String, argument616: Int, argument617: InputObject1, argument618: Int): [Object3!]! + field374(argument619: ID): Object47 + field380(argument620: Int, argument621: Int, argument622: ID, argument623: InputObject1, argument624: String, argument625: Scalar2): [Object47!]! + field381(argument626: Int, argument627: Int, argument628: ID, argument629: InputObject1, argument630: String, argument631: String, argument632: Int): [Object48!]! + field386(argument633: ID): Object48 + field387(argument634: ID): Object49 + field401(argument635: Enum11, argument636: String, argument637: Int, argument638: String, argument639: Int, argument640: ID, argument641: InputObject1, argument642: String, argument643: Scalar2, argument644: String, argument645: String, argument646: String, argument647: Scalar1, argument648: Enum12, argument649: Int): [Object49!]! + field402(argument650: ID): Object50 + field403(argument651: String, argument652: Int, argument653: ID, argument654: Boolean, argument655: String, argument656: Int, argument657: InputObject1, argument658: Scalar2): [Object50!]! + field404(argument659: ID): Object51 + field405(argument660: Int, argument661: ID, argument662: Boolean, argument663: String, argument664: Int, argument665: InputObject1): [Object51!]! + field406(argument666: ID): Object8 + field407(argument667: Enum3, argument668: Int, argument669: Int, argument670: ID, argument671: InputObject1, argument672: Int): [Object8!]! + field408(argument673: ID): Object52 + field412(argument674: Int, argument675: ID, argument676: Boolean, argument677: Boolean, argument678: String, argument679: Int, argument680: InputObject1, argument681: Scalar3, argument682: Scalar3, argument683: Boolean, argument684: Boolean, argument685: Boolean, argument686: Boolean): [Object52!]! + field413(argument687: ID): Object54 + field414(argument688: Int, argument689: ID, argument690: Boolean, argument691: String, argument692: Int, argument693: Scalar2, argument694: InputObject1): [Object54!]! + field415(argument695: ID): Object55 + field418(argument696: String, argument697: Int, argument698: ID, argument699: Boolean, argument700: String, argument701: Int, argument702: InputObject1, argument703: String, argument704: Scalar2, argument705: Scalar2): [Object55!]! + field419(argument706: ID): Object56 + field422(argument707: String, argument708: String, argument709: Int, argument710: ID, argument711: Boolean, argument712: String, argument713: Int, argument714: InputObject1, argument715: String, argument716: Scalar2): [Object56!]! + field423(argument717: String, argument718: Int, argument719: Int, argument720: ID, argument721: Enum13, argument722: InputObject1, argument723: Scalar1, argument724: String, argument725: Int): [Object57!]! + field432(argument726: ID): Object57 + field433(argument727: ID): Object58 + field434(argument728: String, argument729: Int, argument730: ID, argument731: Boolean, argument732: String, argument733: Int, argument734: InputObject1, argument735: Scalar2): [Object58!]! + field435(argument736: ID): Object59 + field436(argument737: Int, argument738: ID, argument739: Boolean, argument740: Enum2, argument741: String, argument742: Int, argument743: InputObject1): [Object59!]! + field437(argument744: ID): Interface37 + field441(argument745: String, argument746: Scalar1, argument747: Scalar2, argument748: String, argument749: Int, argument750: Boolean, argument751: String, argument752: ID, argument753: Boolean, argument754: String, argument755: String, argument756: Enum2, argument757: Int, argument758: String, argument759: Int, argument760: InputObject1, argument761: Boolean, argument762: String, argument763: String, argument764: Scalar2, argument765: Scalar2): [Interface37!]! + field442(argument766: ID): Object60 + field444(argument767: Scalar3, argument768: Int, argument769: Scalar2, argument770: ID, argument771: Boolean, argument772: String, argument773: Int, argument774: InputObject1): [Object60!]! + field445(argument775: ID): Interface38 + field447(argument776: String, argument777: Scalar1, argument778: Scalar2, argument779: String, argument780: Int, argument781: Boolean, argument782: String, argument783: ID, argument784: Boolean, argument785: String, argument786: String, argument787: Enum2, argument788: Int, argument789: String, argument790: Int, argument791: InputObject1, argument792: Boolean, argument793: String, argument794: String, argument795: Scalar2, argument796: Scalar2): [Interface38!]! + field448(argument797: ID): Object61 + field467(argument807: Int, argument808: String, argument809: Int, argument810: ID, argument811: InputObject1, argument812: String, argument813: Int): [Object61!]! + field468(argument814: Int, argument815: String, argument816: Int, argument817: ID, argument818: InputObject1, argument819: Scalar2, argument820: String, argument821: Int): [Object62!]! + field469(argument822: ID): Object62 + field470(argument823: ID): Object63 + field471(argument824: Int, argument825: Int, argument826: ID, argument827: InputObject1, argument828: String, argument829: Int): [Object63!]! + field472(argument830: ID): Object64 + field473(argument831: Boolean, argument832: Int, argument833: ID, argument834: Boolean, argument835: String, argument836: Int, argument837: InputObject1): [Object64!]! + field474(argument838: ID): Object65 + field495(argument842: Scalar3, argument843: Int, argument844: ID, argument845: Boolean, argument846: String, argument847: Int, argument848: InputObject1, argument849: String, argument850: String, argument851: String): [Object65!]! + field496(argument852: ID): Object67 + field508(argument853: Boolean, argument854: Scalar3, argument855: Int, argument856: Int, argument857: ID, argument858: Boolean, argument859: Boolean, argument860: Boolean, argument861: Int, argument862: String, argument863: Int, argument864: InputObject1, argument865: Boolean, argument866: Boolean, argument867: Scalar3): [Object67!]! + field509(argument868: Int, argument869: ID, argument870: Boolean, argument871: String, argument872: Int, argument873: InputObject1): [Interface39!]! + field51(argument29: Int, argument30: ID, argument31: Boolean, argument32: String, argument33: Int, argument34: InputObject1): [Interface1!]! + field510(argument874: ID): Interface39 + field511(argument875: ID): Object68 + field512(argument876: ID): Interface42 + field513(argument877: Boolean, argument878: Scalar3, argument879: Int, argument880: ID, argument881: Boolean, argument882: Boolean, argument883: Boolean, argument884: String, argument885: Int, argument886: InputObject1, argument887: Boolean, argument888: Boolean, argument889: Scalar3): [Interface42!]! + field514(argument890: ID): Object69 + field516(argument891: ID): Object70 + field52(argument35: ID): Interface3 + field521(argument892: ID): Object71 + field522(argument893: Int, argument894: ID, argument895: Boolean, argument896: String, argument897: Int, argument898: InputObject1): [Object71!]! + field523(argument899: Boolean, argument900: Enum15, argument901: Int, argument902: ID, argument903: Boolean, argument904: String, argument905: Int, argument906: InputObject1, argument907: Scalar2, argument908: Scalar2): [Object70!]! + field524(argument909: Int, argument910: ID, argument911: Boolean, argument912: String, argument913: Int, argument914: InputObject1, argument915: String): [Object69!]! + field525(argument916: Boolean, argument917: Scalar3, argument918: Int, argument919: Int, argument920: ID, argument921: Boolean, argument922: Boolean, argument923: Boolean, argument924: Int, argument925: String, argument926: Int, argument927: InputObject1, argument928: Boolean, argument929: String, argument930: Boolean, argument931: Scalar3): [Object68!]! + field526(argument932: ID): Interface41 + field527(argument933: Boolean, argument934: Scalar3, argument935: Int, argument936: ID, argument937: Boolean, argument938: Boolean, argument939: Boolean, argument940: String, argument941: Int, argument942: InputObject1, argument943: Boolean, argument944: Boolean, argument945: Scalar3): [Interface41!]! + field528(argument946: String, argument947: Int, argument948: String, argument949: String, argument950: Enum16, argument951: String, argument952: Boolean, argument953: Int, argument954: Scalar2, argument955: ID, argument956: Boolean, argument957: String, argument958: Int, argument959: InputObject1, argument960: String, argument961: String, argument962: String, argument963: Int, argument964: String, argument965: Boolean, argument966: Scalar2, argument967: Int, argument968: String): [Object72!]! + field544(argument969: ID): Object72 + field545(argument970: ID): Object73 + field548(argument971: Scalar3, argument972: Boolean, argument973: Boolean, argument974: Scalar3, argument975: String, argument976: Int, argument977: Int, argument978: ID, argument979: Boolean, argument980: Boolean, argument981: Boolean, argument982: Int, argument983: String, argument984: Int, argument985: InputObject1, argument986: Boolean, argument987: Boolean, argument988: Scalar3): [Object73!]! + field549(argument989: ID): Object74 + field550(argument1000: Boolean, argument1001: Boolean, argument1002: Scalar3, argument990: Boolean, argument991: Scalar3, argument992: Int, argument993: ID, argument994: Boolean, argument995: Boolean, argument996: Boolean, argument997: String, argument998: Int, argument999: InputObject1): [Object74!]! + field551(argument1003: ID): Object75 + field568(argument1004: Int, argument1005: Enum17, argument1006: ID, argument1007: Boolean, argument1008: Scalar2, argument1009: String, argument1010: Int, argument1011: InputObject1, argument1012: Scalar2): [Object75!]! + field569(argument1013: ID): Object77 + field570(argument1014: Int, argument1015: ID, argument1016: Boolean, argument1017: String, argument1018: Int, argument1019: InputObject1): [Object77!]! + field571(argument1020: ID): Object78 + field574(argument1021: Int, argument1022: Int, argument1023: ID, argument1024: InputObject1, argument1025: Int): [Object78!]! + field575(argument1026: Int, argument1027: ID, argument1028: Boolean, argument1029: String, argument1030: Int, argument1031: InputObject1): [Interface44!]! + field576(argument1032: ID): Interface44 + field577(argument1033: Int, argument1034: Int, argument1035: ID, argument1036: InputObject1, argument1037: Int, argument1038: Int): [Object79!]! + field582(argument1039: ID): Object79 + field583(argument1040: ID): Object76 + field584(argument1041: String, argument1042: String, argument1043: Scalar2, argument1044: Scalar2, argument1045: Scalar2, argument1046: Scalar1, argument1047: Int, argument1048: Scalar2, argument1049: Scalar2, argument1050: Scalar1, argument1051: Scalar1, argument1052: Int, argument1053: ID, argument1054: InputObject1, argument1055: String, argument1056: Scalar2): [Object80!]! + field599(argument1057: ID): Object80 + field600(argument1058: String, argument1059: String, argument1060: Scalar2, argument1061: Scalar2, argument1062: Scalar2, argument1063: Scalar1, argument1064: Int, argument1065: Scalar2, argument1066: Scalar2, argument1067: Scalar1, argument1068: Int, argument1069: ID, argument1070: InputObject1, argument1071: String, argument1072: Int): [Object76!]! + field601(argument1073: ID): Object81 + field602(argument1074: ID): Object82 + field603(argument1075: ID): Object83 + field604(argument1076: Enum19, argument1077: Int, argument1078: ID, argument1079: Boolean, argument1080: String, argument1081: Int, argument1082: InputObject1, argument1083: Scalar2, argument1084: Scalar2): [Object83!]! + field605(argument1085: Int, argument1086: ID, argument1087: Boolean, argument1088: String, argument1089: Int, argument1090: InputObject1): [Object82!]! + field606(argument1091: Int, argument1092: ID, argument1093: Boolean, argument1094: String, argument1095: Int, argument1096: InputObject1): [Object81!]! + field607(argument1097: ID): Interface45 + field608(argument1098: Int, argument1099: ID, argument1100: Boolean, argument1101: String, argument1102: Int, argument1103: InputObject1): [Interface45!]! + field609(argument1104: ID): Object84 + field629(argument1105: Int, argument1106: String, argument1107: String, argument1108: Enum16, argument1109: String, argument1110: Int, argument1111: Scalar2, argument1112: ID, argument1113: Boolean, argument1114: String, argument1115: Int, argument1116: InputObject1, argument1117: String, argument1118: Int, argument1119: String, argument1120: Boolean, argument1121: Scalar2, argument1122: Int, argument1123: String): [Object85!]! + field630(argument1124: ID): Object85 + field631(argument1125: String, argument1126: Scalar2, argument1127: Scalar1, argument1128: Int, argument1129: String, argument1130: Scalar2, argument1131: Scalar2, argument1132: Scalar2, argument1133: Scalar2, argument1134: String, argument1135: Int, argument1136: ID, argument1137: InputObject1, argument1138: Scalar1, argument1139: Enum20, argument1140: Enum21, argument1141: Scalar2, argument1142: Scalar2, argument1143: Int, argument1144: String): [Object84!]! + field632(argument1145: ID): Object86 + field633(argument1146: Int, argument1147: ID, argument1148: Boolean, argument1149: String, argument1150: Int, argument1151: InputObject1): [Object86!]! + field634(argument1152: Int, argument1153: ID, argument1154: Boolean, argument1155: String, argument1156: Int, argument1157: InputObject1): [Interface40!]! + field635(argument1158: ID): Interface40 + field636(argument1159: Int, argument1160: String, argument1161: String, argument1162: Enum16, argument1163: String, argument1164: Int, argument1165: Scalar2, argument1166: ID, argument1167: Boolean, argument1168: String, argument1169: Int, argument1170: InputObject1, argument1171: String, argument1172: Int, argument1173: String, argument1174: Boolean, argument1175: Scalar2, argument1176: Int, argument1177: String): [Interface43!]! + field637(argument1178: ID): Interface43 + field638(argument1179: ID): Interface19 + field639(argument1180: Scalar2, argument1181: Int, argument1182: ID, argument1183: Boolean, argument1184: Scalar4, argument1185: String, argument1186: Int, argument1187: InputObject1): [Interface19!]! + field640(argument1188: ID): Object87 + field643(argument1189: Int, argument1190: ID, argument1191: Boolean, argument1192: String, argument1193: Int, argument1194: String, argument1195: Int, argument1196: InputObject1): [Object87!]! + field644(argument1197: ID): Object88 + field646(argument1198: ID): Object89 + field648(argument1199: String, argument1200: Int, argument1201: ID, argument1202: Boolean, argument1203: String, argument1204: Int, argument1205: InputObject1): [Object89!]! + field649(argument1206: Int, argument1207: String, argument1208: ID, argument1209: Boolean, argument1210: String, argument1211: Int, argument1212: InputObject1, argument1213: String): [Object88!]! + field65(argument36: String, argument37: Scalar1, argument38: Scalar2, argument39: String, argument40: Int, argument41: Boolean, argument42: ID, argument43: Boolean, argument44: Enum2, argument45: Int, argument46: String, argument47: Int, argument48: InputObject1, argument49: Boolean, argument50: String, argument51: String, argument52: Scalar2, argument53: Scalar2): [Interface3!]! + field650(argument1214: ID): Object90 + field653(argument1215: String, argument1216: Scalar1, argument1217: Scalar2, argument1218: String, argument1219: Int, argument1220: Boolean, argument1221: ID, argument1222: Boolean, argument1223: Enum2, argument1224: Int, argument1225: String, argument1226: Int, argument1227: InputObject1, argument1228: String, argument1229: String, argument1230: Boolean, argument1231: String, argument1232: String, argument1233: Scalar2, argument1234: Scalar2): [Object90!]! + field654(argument1235: ID): Object91 + field66(argument54: ID): Interface4 + field668(argument1236: String, argument1237: String, argument1238: Boolean, argument1239: Enum22, argument1240: String, argument1241: Int, argument1242: String, argument1243: String, argument1244: ID, argument1245: Boolean, argument1246: Enum23, argument1247: Enum24, argument1248: String, argument1249: String, argument1250: Int, argument1251: InputObject1, argument1252: Int, argument1253: String, argument1254: Boolean, argument1255: String, argument1256: String): [Object91!]! + field669(argument1257: ID): Object66 + field67(argument55: Int, argument56: ID, argument57: Boolean, argument58: String, argument59: Int, argument60: InputObject1): [Interface4!]! + field670(argument1258: String, argument1259: String, argument1260: Scalar2, argument1261: Scalar2, argument1262: Scalar1, argument1263: Int, argument1264: Scalar2, argument1265: Scalar1, argument1266: Scalar1, argument1267: Scalar2, argument1268: Int, argument1269: ID, argument1270: InputObject1, argument1271: String, argument1272: String, argument1273: Scalar2, argument1274: String): [Object92!]! + field68(argument61: ID): Interface5 + field686(argument1275: ID): Object92 + field687(argument1276: String, argument1277: String, argument1278: Scalar2, argument1279: Scalar2, argument1280: Scalar1, argument1281: Int, argument1282: Scalar2, argument1283: Scalar2, argument1284: Scalar1, argument1285: Int, argument1286: ID, argument1287: InputObject1, argument1288: String, argument1289: String, argument1290: String, argument1291: Int): [Object66!]! + field688(argument1292: ID): Object93 + field69(argument62: Int, argument63: ID, argument64: Boolean, argument65: String, argument66: Int, argument67: InputObject1): [Interface5!]! + field70(argument68: ID): Interface6 + field700(argument1299: ID): Object94 + field701(argument1300: Int, argument1301: Int, argument1302: ID, argument1303: InputObject1, argument1304: Enum25, argument1305: Int): [Object94!]! + field702(argument1306: String, argument1307: Int, argument1308: ID, argument1309: Int, argument1310: Scalar2, argument1311: InputObject1, argument1312: Int): [Object93!]! + field703(argument1313: ID): Interface10 + field704(argument1314: String, argument1315: Int, argument1316: ID, argument1317: Boolean, argument1318: String, argument1319: Int, argument1320: InputObject1, argument1321: Scalar2): [Interface10!]! + field705(argument1322: ID): Object95 + field71(argument69: ID): Interface7 + field72(argument70: String, argument71: Scalar1, argument72: Scalar2, argument73: String, argument74: Int, argument75: Boolean, argument76: ID, argument77: Boolean, argument78: Enum2, argument79: Int, argument80: String, argument81: Int, argument82: InputObject1, argument83: Boolean, argument84: String, argument85: String, argument86: Scalar2, argument87: Scalar2): [Interface7!]! + field721(argument1323: Int, argument1324: String, argument1325: Int, argument1326: ID, argument1327: InputObject1, argument1328: Int): [Object95!]! + field722(argument1329: Int, argument1330: String, argument1331: Int, argument1332: ID, argument1333: InputObject1, argument1334: String, argument1335: String, argument1336: Int): [Object96!]! + field728(argument1337: ID): Object96 + field729(argument1338: ID): Object97 + field73(argument88: Int, argument89: ID, argument90: Boolean, argument91: String, argument92: Int, argument93: InputObject1): [Interface6!]! + field74(argument94: ID): Object7 + field747(argument1339: ID): Object99 + field748(argument1340: Int, argument1341: ID, argument1342: Boolean, argument1343: String, argument1344: Int, argument1345: InputObject1): [Object99!]! + field749(argument1346: Int, argument1347: ID, argument1348: Boolean, argument1349: String, argument1350: Int, argument1351: InputObject1): [Object97!]! + field750(argument1352: ID): Object100 + field755(argument1353: Int, argument1354: ID, argument1355: Boolean, argument1356: Int, argument1357: Int, argument1358: Int, argument1359: Boolean, argument1360: String, argument1361: Int, argument1362: InputObject1): [Object100!]! + field756(argument1363: ID): Object101 + field758(argument1364: Scalar5, argument1365: Enum26, argument1366: Int, argument1367: ID, argument1368: Boolean, argument1369: String, argument1370: Int, argument1371: InputObject1): [Object101!]! + field759(argument1372: ID): Interface26 + field760(argument1373: Int, argument1374: ID, argument1375: Boolean, argument1376: String, argument1377: Int, argument1378: InputObject1): [Interface26!]! + field761(argument1379: ID): Object6 + field762(argument1380: String, argument1381: String, argument1382: Boolean, argument1383: Int, argument1384: Boolean, argument1385: String, argument1386: Int, argument1387: ID, argument1388: InputObject1, argument1389: String, argument1390: String, argument1391: Boolean, argument1392: String, argument1393: String, argument1394: String, argument1395: Int): [Object6!]! + field763(argument1396: ID): Object102 + field773(argument1397: Boolean, argument1398: Int, argument1399: Float, argument1400: ID, argument1401: Scalar2, argument1402: Int, argument1403: InputObject1, argument1404: String, argument1405: Scalar1, argument1406: Int): [Object102!]! + field774(argument1407: ID): Object103 + field776(argument1408: String, argument1409: Int, argument1410: ID, argument1411: Boolean, argument1412: String, argument1413: Int, argument1414: InputObject1, argument1415: Scalar2, argument1416: Scalar2): [Object103!]! + field777(argument1417: ID): Object104 + field784(argument1418: String, argument1419: Int, argument1420: Enum27, argument1421: ID, argument1422: Boolean, argument1423: String, argument1424: String, argument1425: Int, argument1426: InputObject1, argument1427: String, argument1428: String, argument1429: Enum27, argument1430: Scalar2): [Object104!]! + field785(argument1431: Int, argument1432: ID, argument1433: Boolean, argument1434: String, argument1435: Int, argument1436: InputObject1): [Object105!]! + field786(argument1437: ID): Object105 + field787(argument1438: ID): Interface49 + field789(argument1439: ID): Object106 + field790(argument1440: Int, argument1441: ID, argument1442: Boolean, argument1443: String, argument1444: String, argument1445: Int, argument1446: InputObject1): [Object106!]! + field791(argument1447: ID): Object107 + field792(argument1448: Int, argument1449: ID, argument1450: Boolean, argument1451: String, argument1452: String, argument1453: Int, argument1454: InputObject1): [Object107!]! + field793(argument1455: ID): Object108 + field794(argument1456: Int, argument1457: ID, argument1458: Boolean, argument1459: String, argument1460: String, argument1461: Int, argument1462: InputObject1): [Object108!]! + field795(argument1463: ID): Object109 + field796(argument1464: Int, argument1465: ID, argument1466: Boolean, argument1467: String, argument1468: String, argument1469: Int, argument1470: InputObject1): [Object109!]! + field797(argument1471: ID): Object110 + field798(argument1472: Int, argument1473: ID, argument1474: Boolean, argument1475: String, argument1476: String, argument1477: Int, argument1478: InputObject1): [Object110!]! + field799(argument1479: Int, argument1480: ID, argument1481: Boolean, argument1482: String, argument1483: String, argument1484: Int, argument1485: InputObject1): [Interface49!]! + field800(argument1486: ID): Object111 + field802(argument1487: Int, argument1488: ID, argument1489: Boolean, argument1490: String, argument1491: Int, argument1492: InputObject1, argument1493: String): [Object111!]! + field803(argument1494: ID): Object112 + field809(argument1495: ID): Object113 + field811(argument1496: Int, argument1497: ID, argument1498: Boolean, argument1499: String, argument1500: String, argument1501: Int, argument1502: InputObject1): [Object113!]! + field812(argument1503: String, argument1504: Int, argument1505: String, argument1506: ID, argument1507: Boolean, argument1508: String, argument1509: Int, argument1510: InputObject1, argument1511: Scalar2, argument1512: String, argument1513: String, argument1514: String, argument1515: Scalar2): [Object112!]! + field813(argument1516: ID): Interface35 + field814(argument1517: Int, argument1518: ID, argument1519: Boolean, argument1520: String, argument1521: Int, argument1522: InputObject1): [Interface35!]! + field815(argument1523: ID): Interface20 + field816(argument1524: Scalar2, argument1525: Int, argument1526: ID, argument1527: Boolean, argument1528: Scalar4, argument1529: String, argument1530: Int, argument1531: InputObject1): [Interface20!]! + field817(argument1532: ID): Object114 + field820(argument1533: Int, argument1534: ID, argument1535: Boolean, argument1536: String, argument1537: Enum28, argument1538: Int, argument1539: InputObject1, argument1540: String): [Object114!]! + field821(argument1541: ID): Object115 + field838(argument1542: String, argument1543: String, argument1544: String, argument1545: String, argument1546: String, argument1547: Boolean, argument1548: Int, argument1549: String, argument1550: String, argument1551: ID, argument1552: Boolean, argument1553: String, argument1554: String, argument1555: String, argument1556: Int, argument1557: InputObject1, argument1558: String, argument1559: String, argument1560: String, argument1561: String, argument1562: String, argument1563: String, argument1564: String, argument1565: String): [Object115!]! + field839(argument1566: ID): Object116 + field840(argument1567: Int, argument1568: String, argument1569: ID, argument1570: Boolean, argument1571: String, argument1572: Int, argument1573: InputObject1): [Object116!]! + field841(argument1574: ID): Object117 + field842(argument1575: Scalar2, argument1576: Int, argument1577: ID, argument1578: Boolean, argument1579: Scalar4, argument1580: String, argument1581: Int, argument1582: InputObject1): [Object117!]! + field843(argument1583: ID): Object118 + field852(argument1584: Int, argument1585: Int, argument1586: Int, argument1587: Int, argument1588: Int, argument1589: String, argument1590: ID, argument1591: Boolean, argument1592: String, argument1593: String, argument1594: Int, argument1595: Int, argument1596: InputObject1, argument1597: Int, argument1598: String, argument1599: Int): [Object118!]! + field853(argument1600: ID): Interface30 + field854(argument1601: ID): Object33 + field855(argument1602: Int, argument1603: Int, argument1604: ID, argument1605: InputObject1, argument1606: String, argument1607: Int): [Object33!]! + field856(argument1608: Int, argument1609: ID, argument1610: Boolean, argument1611: String, argument1612: Int, argument1613: InputObject1): [Interface30!]! + field857(argument1614: ID): Object119 + field876(argument1615: String, argument1616: Scalar2, argument1617: Scalar1, argument1618: Scalar2, argument1619: Int, argument1620: String, argument1621: Scalar2, argument1622: String, argument1623: Int, argument1624: ID, argument1625: InputObject1, argument1626: Scalar1, argument1627: Enum20, argument1628: Enum21, argument1629: Scalar2, argument1630: Scalar2, argument1631: Scalar2, argument1632: Int, argument1633: String): [Object119!]! + field877(argument1634: ID): Interface47 + field878(argument1635: String, argument1636: Int, argument1637: ID, argument1638: Boolean, argument1639: String, argument1640: Int, argument1641: InputObject1, argument1642: Scalar2): [Interface47!]! + field879(argument1643: ID): Object120 + field884(argument1644: ID): Object121 + field887(argument1645: String, argument1646: String, argument1647: Int, argument1648: Scalar2, argument1649: ID, argument1650: Boolean, argument1651: String, argument1652: Int, argument1653: InputObject1, argument1654: Scalar2): [Object121!]! + field888(argument1655: String, argument1656: String, argument1657: Int, argument1658: ID, argument1659: Boolean, argument1660: String, argument1661: Int, argument1662: InputObject1, argument1663: String, argument1664: String, argument1665: String): [Object120!]! + field889(argument1666: ID): Interface14 + field89(argument100: Int, argument101: Int, argument102: ID, argument103: InputObject1, argument104: Boolean, argument105: Int, argument106: Enum4, argument98: Enum3, argument99: Boolean): [Object7!]! + field890(argument1667: String, argument1668: Int, argument1669: ID, argument1670: Boolean, argument1671: String, argument1672: Int, argument1673: InputObject1, argument1674: Scalar2): [Interface14!]! + field891(argument1675: Int, argument1676: ID, argument1677: Boolean, argument1678: String, argument1679: Int, argument1680: InputObject1, argument1681: String, argument1682: Scalar2, argument1683: Enum29): [Object122!]! + field898(argument1687: ID): Object122 + field899(argument1688: ID): Object123 + field90(argument107: ID): Object9 + field900(argument1689: Int, argument1690: String, argument1691: Int, argument1692: ID, argument1693: InputObject1, argument1694: Int): [Object123!]! + field901(argument1695: ID): Object124 + field903(argument1696: Int, argument1697: ID, argument1698: Boolean, argument1699: Boolean, argument1700: String, argument1701: Int, argument1702: InputObject1, argument1703: Scalar3, argument1704: Scalar3, argument1705: Boolean, argument1706: Boolean, argument1707: Boolean, argument1708: Boolean): [Object124!]! + field904(argument1709: ID): Object125 + field93(argument108: ID): Object10 + field935(argument1710: ID): Object126 + field936(argument1711: Int, argument1712: ID, argument1713: Boolean, argument1714: String, argument1715: Int, argument1716: InputObject1): [Object126!]! + field937(argument1717: Scalar2, argument1718: Boolean, argument1719: Boolean, argument1720: Boolean, argument1721: String, argument1722: Boolean, argument1723: Scalar2, argument1724: Boolean, argument1725: Scalar2, argument1726: Int, argument1727: Int, argument1728: String, argument1729: ID, argument1730: String, argument1731: Boolean, argument1732: Int, argument1733: Boolean, argument1734: Scalar2, argument1735: String, argument1736: Int, argument1737: InputObject1, argument1738: String, argument1739: String, argument1740: String, argument1741: Boolean, argument1742: Int, argument1743: Boolean, argument1744: Boolean, argument1745: Scalar2, argument1746: String, argument1747: Boolean, argument1748: Scalar2, argument1749: String, argument1750: String, argument1751: Scalar2, argument1752: String, argument1753: Scalar2, argument1754: String): [Object125!]! + field938(argument1755: ID): Object127 + field943(argument1756: Int, argument1757: ID, argument1758: Boolean, argument1759: String, argument1760: Int, argument1761: InputObject1, argument1762: Enum29, argument1763: String, argument1764: Scalar2, argument1765: String, argument1766: Enum30): [Object127!]! + field944(argument1767: ID): Object128 + field95(argument109: Int, argument110: ID, argument111: Boolean, argument112: String, argument113: Int, argument114: InputObject1, argument115: Enum5): [Object10!]! + field953(argument1768: String, argument1769: String, argument1770: Boolean, argument1771: Boolean, argument1772: String, argument1773: Int, argument1774: String, argument1775: String, argument1776: ID, argument1777: Boolean, argument1778: String, argument1779: Int, argument1780: InputObject1, argument1781: String, argument1782: String, argument1783: String, argument1784: String, argument1785: String, argument1786: String): [Object128!]! + field954(argument1787: ID): Object129 + field96(argument116: Int, argument117: ID, argument118: Boolean, argument119: String, argument120: Int, argument121: InputObject1): [Object9!]! + field967(argument1788: String, argument1789: String, argument1790: String, argument1791: String, argument1792: String, argument1793: String, argument1794: String, argument1795: Boolean, argument1796: Int, argument1797: ID, argument1798: Boolean, argument1799: String, argument1800: String, argument1801: Int, argument1802: InputObject1, argument1803: String, argument1804: String, argument1805: Boolean): [Object129!]! + field968(argument1806: ID): Interface11 + field969(argument1807: ID): Object130 + field97(argument122: ID): Object11 + field970(argument1808: Int, argument1809: ID, argument1810: Boolean, argument1811: String, argument1812: Int, argument1813: InputObject1): [Object130!]! + field971(argument1814: ID): Interface21 + field972(argument1815: Int, argument1816: ID, argument1817: Boolean, argument1818: String, argument1819: Int, argument1820: InputObject1): [Interface21!]! + field973(argument1821: ID): Interface17 + field974(argument1822: Int, argument1823: ID, argument1824: Boolean, argument1825: String, argument1826: Int, argument1827: InputObject1): [Interface17!]! + field975(argument1828: Scalar3, argument1829: String, argument1830: Boolean, argument1831: Boolean, argument1832: Boolean, argument1833: String, argument1834: String, argument1835: String, argument1836: String, argument1837: String, argument1838: String, argument1839: String, argument1840: String, argument1841: Boolean, argument1842: Boolean, argument1843: Boolean, argument1844: Boolean, argument1845: Boolean, argument1846: Scalar3, argument1847: String, argument1848: String, argument1849: Int, argument1850: Scalar2, argument1851: String, argument1852: String, argument1853: String, argument1854: ID, argument1855: Boolean, argument1856: Enum6, argument1857: String, argument1858: Int, argument1859: InputObject1, argument1860: String, argument1861: String, argument1862: Scalar3, argument1863: Boolean, argument1864: String, argument1865: String, argument1866: String, argument1867: String, argument1868: Boolean, argument1869: String): [Interface11!]! + field976(argument1870: ID): Object131 + field984(argument1871: String, argument1872: Int, argument1873: Int, argument1874: ID, argument1875: InputObject1, argument1876: String, argument1877: String, argument1878: String, argument1879: String): [Object131!]! + field985(argument1880: ID): Interface24 + field986(argument1881: ID): Object132 + field988(argument1882: Int, argument1883: ID, argument1884: Boolean, argument1885: String, argument1886: Int, argument1887: Int, argument1888: InputObject1): [Object132!]! + field989(argument1889: Int, argument1890: ID, argument1891: Boolean, argument1892: String, argument1893: Int, argument1894: InputObject1): [Interface24!]! + field990(argument1895: ID): Object133 + field993(argument1896: Int, argument1897: ID, argument1898: Boolean, argument1899: Int, argument1900: String, argument1901: Int, argument1902: InputObject1, argument1903: String): [Object133!]! + field994(argument1904: ID): Object14 + field995(argument1905: Scalar2, argument1906: String, argument1907: Int, argument1908: Scalar1, argument1909: Scalar1, argument1910: String, argument1911: Int, argument1912: ID, argument1913: InputObject1, argument1914: String, argument1915: Enum7, argument1916: Scalar2, argument1917: String, argument1918: Int): [Object14!]! + field996(argument1919: ID): Interface46 + field997(argument1920: String, argument1921: Scalar1, argument1922: Scalar2, argument1923: String, argument1924: Int, argument1925: Boolean, argument1926: ID, argument1927: Boolean, argument1928: Enum2, argument1929: Int, argument1930: String, argument1931: Int, argument1932: InputObject1, argument1933: Boolean, argument1934: String, argument1935: String, argument1936: Scalar2, argument1937: Scalar2): [Interface46!]! + field998(argument1938: ID): Interface36 + field999(argument1939: String, argument1940: Int, argument1941: ID, argument1942: Boolean, argument1943: String, argument1944: Int, argument1945: InputObject1, argument1946: Scalar2): [Interface36!]! +} + +type Object10 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field94: Enum5 +} + +type Object100 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field751: Int + field752: Int + field753: Int + field754: Boolean +} + +type Object101 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar5 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field757: Enum26 +} + +type Object102 { + field764: Boolean + field765: Object6 + field766: Float + field767: ID + field768: Scalar2 + field769: Interface2 + field770: String + field771: Scalar1 + field772: Int! +} + +type Object103 implements Interface13 & Interface14 & Interface15 & Interface2 & Interface47 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field775: Scalar2 + field92: String +} + +type Object104 implements Interface2 & Interface48 & Interface8 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field132: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field778: String + field779: String + field780: Enum27 + field781: String + field782: Enum27 + field783: Scalar2 +} + +type Object105 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object106 implements Interface2 & Interface49 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field788: String +} + +type Object107 implements Interface2 & Interface49 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field788: String +} + +type Object108 implements Interface2 & Interface49 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field788: String +} + +type Object109 implements Interface2 & Interface49 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field788: String +} + +type Object11 { + field100: Int! + field98: ID + field99: Interface8 +} + +type Object110 implements Interface2 & Interface49 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field788: String +} + +type Object111 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field801: String +} + +type Object112 implements Interface13 & Interface14 & Interface15 & Interface2 & Interface36 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field804: String + field805: Scalar2 + field806: String + field807: String + field808: String + field92: String +} + +type Object113 implements Interface2 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field810: String +} + +type Object114 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field818: Enum28 + field819: String +} + +type Object115 implements Interface12 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field176: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field822: String + field823: String + field824: String + field825: String + field826: Boolean + field827: String + field828: String + field829: String + field830: String + field831: String + field832: String + field833: String + field834: String + field835: String + field836: String + field837: String +} + +type Object116 implements Interface12 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object117 implements Interface19 & Interface2 & Interface21 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar2 + field213: Scalar4 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object118 implements Interface12 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field783: Int + field844: Int + field845: Int + field846: Int + field847: Int + field848: String + field849: Int + field850: Int + field851: String +} + +type Object119 { + field858: String + field859: Scalar2! + field860: Scalar1 + field861: Scalar2 + field862: Interface2 + field863: String + field864: Scalar2 + field865: String + field866: ID + field867: Interface2 + field868: Scalar1 + field869: Enum20 + field870: Enum21 + field871: Scalar2 + field872: Scalar2 + field873: Scalar2 + field874: Int! + field875: String +} + +type Object12 { + field103: String + field104: ID + field105: Interface11 + field142: Scalar1 + field143: String + field144: Int! +} + +type Object120 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field176: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field880: String + field881: String + field882: String + field883: String +} + +type Object121 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field127: Scalar2 + field139: Scalar2 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field885: String + field886: String +} + +type Object122 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field192: Enum29 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field892(argument1684: Int, argument1685: Int, argument1686: InputObject1): [Object123!]! + field897: String +} + +type Object123 { + field893: String + field894: ID + field895: Object122 + field896: Int! +} + +type Object124 implements Interface2 & Interface31 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field286: Boolean + field287: Scalar3 + field288: Scalar3 + field289: Boolean + field290: Boolean + field291: Boolean + field292: Boolean + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field902: Interface40 +} + +type Object125 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field506: Int + field507: Int + field905: Scalar2 + field906: Boolean + field907: Boolean + field908: Boolean + field909: String + field910: Boolean + field911: Scalar2 + field912: Boolean + field913: Scalar2 + field914: String + field915: String + field916: Boolean + field917: Scalar2 + field918: String + field919: String + field920: String + field921: Boolean + field922: Int + field923: Boolean + field924: Boolean + field925: Scalar2 + field926: String + field927: Boolean + field928: Scalar2 + field929: String + field930: String + field931: Scalar2 + field932: String + field933: Scalar2 + field934: String +} + +type Object126 implements Interface2 & Interface27 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object127 implements Interface2 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field192: Enum30 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field939: Enum29 + field940: String + field941: Scalar2 + field942: String +} + +type Object128 implements Interface12 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field176: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field779: String + field826: Boolean + field831: String + field945: Boolean + field946: String + field947: String + field948: String + field949: String + field950: String + field951: String + field952: String +} + +type Object129 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field955: String + field956: String + field957: String + field958: String + field959: String + field960: String + field961: String + field962: Boolean + field963: String + field964: String + field965: String + field966: Boolean +} + +type Object13 { + field147: String + field148: ID + field149: String + field150: String + field151: Object14 + field163: Scalar1 + field164: String + field165: Int! +} + +type Object130 implements Interface17 & Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object131 { + field977: String + field978: ID + field979: String + field980: Interface11 + field981: String + field982: String + field983: String +} + +type Object132 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field987: Int +} + +type Object133 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field991: Int + field992: String +} + +type Object134 implements Interface11 & Interface17 & Interface2 & Interface9 { + field10: ID + field106: Scalar3 + field107: String + field108: Boolean + field109: Boolean + field11: Boolean! + field110: Boolean + field111: String + field112: String + field113: String + field114: String + field115: String + field116: String + field117: String + field118: String + field119: Boolean + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field120: Boolean + field121: Boolean + field122: Boolean + field123: Boolean + field124: Scalar3 + field125: String + field126: String + field127: Scalar2 + field128: String + field129: String + field130: String + field131: Enum6 + field132: String + field133: String + field134: Scalar3 + field135: Boolean + field136: String + field137: String + field138: String + field139: String + field140: Boolean + field141: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object135 implements Interface2 & Interface32 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object136 implements Interface13 & Interface14 & Interface15 & Interface2 & Interface47 & Interface9 { + field10: ID + field1007: Scalar2 + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field535: Scalar2 + field64: Scalar2 + field775: Scalar2 + field92: String +} + +type Object137 implements Interface2 & Interface24 & Interface33 & Interface4 & Interface9 { + field10: ID + field1010: Scalar2 + field1011: Scalar2 + field1012: String + field1013: Scalar2 + field1014: Scalar2 + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field850: Scalar2 +} + +type Object138 implements Interface12 & Interface2 { + field10: ID + field1017: String + field1018: Enum31 + field1019: String + field1020: Int + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field783: Int + field851: String +} + +type Object139 implements Interface2 & Interface5 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object14 { + field152: Scalar2 + field153: String + field154: Scalar1 + field155: Scalar1 + field156: String + field157: ID + field158: String + field159: Enum7 + field160: Scalar2 + field161: String + field162: Int! +} + +type Object140 implements Interface2 & Interface5 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object141 implements Interface2 { + field10: ID + field1027: Scalar1 + field1028: Int + field1029: Scalar1 + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field493: Enum33 + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field775: Enum32 + field92: String +} + +type Object142 implements Interface2 & Interface28 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object143 implements Interface2 & Interface50 & Interface9 { + field10: ID + field1034: String + field1035: String + field1036: Scalar2 + field1037: String + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object144 implements Interface2 & Interface50 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object145 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object146 implements Interface13 & Interface15 & Interface2 & Interface3 & Interface37 & Interface46 & Interface9 { + field10: ID + field1046: String + field1047: String + field1048: String + field1049: String + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field438: String + field439: String + field440: String + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +type Object147 implements Interface13 & Interface15 & Interface2 & Interface38 & Interface46 & Interface7 & Interface9 { + field10: ID + field1046: String + field1047: String + field1048: String + field1049: String + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field439: String + field440: String + field446: String + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 +} + +type Object148 implements Interface2 & Interface9 { + field10: ID + field1054: Scalar1 + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field57: Boolean + field59: Int + field830: String +} + +type Object149 implements Interface13 & Interface14 & Interface15 & Interface2 & Interface36 & Interface9 { + field10: ID + field1057: String + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +type Object15 implements Interface10 & Interface13 & Interface14 & Interface15 & Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +type Object150 { + field1060(argument2186: Int, argument2187: Int, argument2188: InputObject1): [Object150!]! + field1061: Int + field1062: Int + field1063(argument2189: Int, argument2190: Int, argument2191: InputObject1): [Object151!]! + field1068: ID + field1069: Object150 + field1070: Int + field1071: Interface8 + field1072: String + field1073: Int! +} + +type Object151 { + field1064: Interface2 + field1065: ID + field1066: Object150 + field1067: Int! +} + +type Object152 implements Interface2 & Interface8 { + field10: ID + field1080: Boolean + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field176: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object153 implements Interface2 & Interface26 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object154 implements Interface2 { + field10: ID + field1087: Boolean + field1088: Boolean + field1089: Int + field1090: Int + field1091: Boolean + field1092: Boolean + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object155 { + field1095: String + field1096: ID + field1097: String + field1098: String + field1099: Int + field1100: Object104 + field1101: Int! +} + +type Object156 implements Interface2 & Interface22 & Interface24 & Interface25 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object157 implements Interface2 { + field10: ID + field11: Boolean! + field1106: Int + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field176: String + field189: Boolean + field190: String + field192: Enum8 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object158 implements Interface2 { + field10: ID + field11: Boolean! + field1109: String + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field176: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object159 { + field1112: String + field1113: ID + field1114: Interface2 + field1115: String + field1116: String + field1117: Scalar1 + field1118: Int! +} + +type Object16 implements Interface2 { + field10: ID + field108: Boolean + field109: Boolean + field11: Boolean! + field110: Boolean + field111: String + field112: String + field113: String + field114: String + field115: String + field116: String + field117: String + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field136: String + field137: String + field138: String + field139: Scalar2 + field173: Scalar2 + field174: Boolean + field175: String + field176: String + field177: Boolean! + field178: Boolean! + field179: Boolean! + field180: Boolean + field181: String + field182: Scalar2 + field183: Boolean + field184: Boolean + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object160 implements Interface19 & Interface2 & Interface20 & Interface21 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar2 + field213: Scalar4 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object161 { + field1125: Object16 + field1126: String + field1127: Scalar2 + field1128: Scalar2 + field1129: ID + field1130: Interface2 + field1131: Object162 +} + +type Object162 { + field1132: Enum34 + field1133: String + field1134(argument2328: Int, argument2329: Int, argument2330: InputObject1): [Object163!]! + field1145(argument2331: Int, argument2332: Int, argument2333: InputObject1): [Object162!]! + field1146: Interface2 + field1147: Scalar1 + field1148: Interface8 + field1149(argument2334: Int, argument2335: Int, argument2336: InputObject1): [Object164!]! + field1157: ID + field1158: Object162 + field1159: String + field1160: Int! +} + +type Object163 { + field1135: Boolean + field1136: Float + field1137: Scalar2 + field1138: String + field1139: ID + field1140: String + field1141: Scalar1 + field1142: String + field1143: Int! + field1144: Object162 +} + +type Object164 { + field1150: Scalar2 + field1151: Interface2 + field1152: String + field1153: ID + field1154: String + field1155: Int! + field1156: Object162 +} + +type Object165 implements Interface2 { + field10: ID + field11: Boolean! + field1169: String + field1170: Scalar6 + field1171: Scalar6 + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object166 { + field1177: String + field1178: ID +} + +type Object167 implements Interface13 & Interface15 & Interface2 & Interface46 & Interface7 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 + field651: String + field652: String +} + +type Object168 implements Interface2 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object17 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field176: String + field189: Boolean + field190: String + field191: Int + field192: Enum8 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object18 { + field195: String + field196: Interface2 + field197: Scalar1 + field198: Interface2 + field199: ID + field200: Scalar2 + field201: Scalar1 + field202: String + field203: Int! +} + +type Object19 implements Interface19 & Interface2 & Interface20 & Interface21 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field135: Boolean + field2: Interface2 + field212: Scalar2 + field213: Scalar4 + field214: Scalar3 + field215: Enum9 + field216: Scalar3 + field217: Scalar3 + field218: Scalar4 + field219: String + field220: Scalar3 + field221: Scalar3 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object2 { + field6: ID + field7: Interface2 + field8: String + field9: Int! +} + +type Object20 implements Interface16 & Interface2 & Interface22 & Interface23 & Interface24 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object21 implements Interface18 & Interface2 & Interface22 & Interface24 & Interface25 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object22 implements Interface18 & Interface2 & Interface22 & Interface24 & Interface25 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object23 implements Interface16 & Interface2 & Interface22 & Interface23 & Interface24 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object24 implements Interface2 & Interface26 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object25 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field127: Scalar2 + field139: Scalar2 + field2: Interface2 + field238: Boolean + field239: Boolean + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object26 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object27 implements Interface1 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object28 implements Interface1 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object29 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object3 { + field13(argument14: Int, argument15: Int, argument16: InputObject1): [Object4!]! + field42: ID + field43: String + field44: String + field45: Interface2 + field46: Interface2 + field47: Int! +} + +type Object30 implements Interface2 & Interface28 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field254: Interface21 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object31 implements Interface2 & Interface29 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field257: String + field258: String + field259: Scalar2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object32 implements Interface2 & Interface24 & Interface30 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field264(argument391: Int, argument392: Int, argument393: InputObject1): [Object33!]! + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object33 { + field265: ID + field266: Interface2 + field267: String + field268: Int! +} + +type Object34 { + field271: Scalar2! + field272: String + field273: Scalar2! + field274: ID + field275: Scalar2! + field276: Scalar2! + field277: Int! + field278: Int! +} + +type Object35 implements Interface2 & Interface29 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field283: String + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object36 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object37 implements Interface2 & Interface32 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field297: String + field298: String + field299: String + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field300: Scalar2 + field301: Scalar2 + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object38 implements Interface2 & Interface32 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field304: String + field305: String + field306: String + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object39 implements Interface2 & Interface24 & Interface30 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field264(argument391: Int, argument392: Int, argument393: InputObject1): [Object33!]! + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object4 { + field14: Object5 + field40: Object3 + field41: ID +} + +type Object40 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field313: Boolean + field314: String + field315: String + field316: String + field317: Boolean + field318: String + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object41 implements Interface2 & Interface28 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field321: Scalar2 + field322: Scalar2 + field323: Object42 + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object42 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field324: Scalar3 + field325: Boolean! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Object16! +} + +type Object43 implements Interface2 & Interface24 & Interface30 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field207: Interface17 + field264(argument391: Int, argument392: Int, argument393: InputObject1): [Object33!]! + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object44 implements Interface2 & Interface34 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field336: String + field337: Int + field338: Int + field339: String + field340: String + field341: Enum10 + field342: Int + field343: Scalar2 + field344: Int + field345: String + field346: Int + field347: Int + field348: String + field349: Int + field350: Int + field351: String + field352: String + field353: Enum10 + field354: Int + field355: Scalar2 + field356: Int + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field58: Enum2 +} + +type Object45 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field359: Scalar2 + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object46 implements Interface2 & Interface27 & Interface35 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field362: Boolean + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object47 { + field375: Interface2 + field376: ID + field377: Interface2 + field378: String + field379: Scalar2 +} + +type Object48 { + field382: ID + field383: String + field384: String + field385: Int! +} + +type Object49 { + field388: Enum11 + field389: String + field390: String + field391: ID + field392: String + field393: Object14 + field394: Scalar2 + field395: String + field396: String + field397: String + field398: Scalar1 + field399: Enum12 + field400: Int! +} + +type Object5 { + field15: Boolean! + field16: String + field17(argument17: Int, argument18: Int, argument19: InputObject1): [Object5!]! + field18: String + field19: String + field20(argument20: Int, argument21: Int, argument22: InputObject1): [Object6!]! + field35: Boolean! + field36: ID + field37(argument23: Int, argument24: Int, argument25: InputObject1): [Object5!]! + field38: Int! + field39: Boolean! +} + +type Object50 implements Interface10 & Interface13 & Interface14 & Interface15 & Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +type Object51 implements Interface2 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object52 implements Interface2 & Interface31 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field286: Boolean + field287: Scalar3 + field288: Scalar3 + field289: Boolean + field290: Boolean + field291: Boolean + field292: Boolean + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field409: Object53 + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object53 implements Interface2 & Interface27 & Interface35 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field362: Boolean + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field410: String + field411: Boolean + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object54 implements Interface2 & Interface24 & Interface33 & Interface4 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field206: Scalar2 + field207: Interface17 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object55 implements Interface13 & Interface14 & Interface15 & Interface2 & Interface36 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field416: String + field417: Scalar2 + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +type Object56 implements Interface13 & Interface14 & Interface15 & Interface2 & Interface36 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field420: String + field421: String + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +type Object57 { + field424: String + field425: ID + field426: Enum13 + field427: Object14 + field428: Scalar1 + field429: Object57 + field430: String + field431: Int! +} + +type Object58 implements Interface10 & Interface13 & Interface14 & Interface15 & Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field64: Scalar2 + field92: String +} + +type Object59 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field58: Enum2 +} + +type Object6 { + field21: String + field22: String + field23: Boolean + field24: Object5 + field25: Boolean + field26: String + field27: ID + field28: String + field29: String + field30: Boolean + field31: String + field32: String + field33: String + field34: Int! +} + +type Object60 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar3 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field443: Scalar2 + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object61 { + field449: Object62 + field463: String + field464: ID + field465: String + field466: Int! +} + +type Object62 { + field450(argument798: Int, argument799: Int, argument800: InputObject1): [Object61!]! + field451(argument801: Int, argument802: Int, argument803: InputObject1): [Object62!]! + field452: String + field453: ID + field454: Object62 + field455: Scalar2 + field456: String + field457(argument804: Int, argument805: Int, argument806: InputObject1): [Object63!]! + field462: Int! +} + +type Object63 { + field458: Object62 + field459: ID + field460: String + field461: Int! +} + +type Object64 implements Interface2 & Interface27 & Interface6 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field362: Boolean + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object65 implements Interface2 & Interface39 & Interface40 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar3 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field475: Enum14 + field476(argument839: Int, argument840: Int, argument841: InputObject1): [Object66!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field491: String + field492: String + field493: Enum14 + field494: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object66 { + field477: String + field478: String + field479: Scalar2! + field480: Scalar2! + field481: Scalar1 + field482: Interface2 + field483: Scalar2! + field484: Scalar2! + field485: Scalar1 + field486: ID + field487: String + field488: String + field489: String + field490: Int! +} + +type Object67 implements Interface2 & Interface39 & Interface40 & Interface41 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field497: Boolean + field498: Scalar3 + field499: Boolean + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field500: Boolean + field501: Boolean + field502: String + field503: Boolean + field504: Int + field505: Scalar3 + field506: Int + field507: Int +} + +type Object68 implements Interface2 & Interface39 & Interface40 & Interface41 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field491: String + field497: Boolean + field498: Scalar3 + field499: Boolean + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field500: Boolean + field501: Boolean + field502: String + field503: Boolean + field504: Int + field505: Scalar3 + field506: Int + field507: Int +} + +type Object69 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field515: String +} + +type Object7 { + field75: Enum3 + field76: Boolean + field77(argument95: Int, argument96: Int, argument97: InputObject1): [Object8!]! + field83: ID + field84: Interface2 + field85: Boolean + field86: Interface8 + field87: Int! + field88: Enum4 +} + +type Object70 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field517: Boolean + field518: Enum15 + field519: Scalar2 + field520: Scalar2 +} + +type Object71 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object72 implements Interface2 & Interface43 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field127: Scalar2 + field139: Scalar2 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field529: Int + field530: String + field531: String + field532: Enum16 + field533: String + field534: String + field535: Int + field536: String + field537: Boolean + field538: Int + field539: String + field540: String + field541: Boolean + field542: String + field543: String +} + +type Object73 implements Interface2 & Interface39 & Interface40 & Interface41 & Interface42 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field497: Boolean + field498: Scalar3 + field499: Boolean + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field500: Boolean + field501: Boolean + field502: String + field503: Boolean + field504: Int + field505: Scalar3 + field506: Int + field507: Int + field517: Boolean + field546: Scalar3 + field547: String +} + +type Object74 implements Interface2 & Interface39 & Interface40 & Interface41 & Interface42 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field497: Boolean + field498: Scalar3 + field499: Boolean + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field500: Boolean + field501: Boolean + field502: String + field503: Boolean + field504: Int + field505: Scalar3 +} + +type Object75 implements Interface2 & Interface40 & Interface44 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field212: Scalar4 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field475: Enum18 + field476(argument839: Int, argument840: Int, argument841: InputObject1): [Object76!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field493: Enum18 + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field552: Enum17 + field553: Scalar2 + field567: Scalar2 +} + +type Object76 { + field554: String + field555: String + field556: Scalar2 + field557: Scalar2 + field558: Scalar2 + field559: Scalar1 + field560: Interface2 + field561: Scalar2 + field562: Scalar2 + field563: Scalar1 + field564: ID + field565: String + field566: Int! +} + +type Object77 implements Interface2 & Interface40 & Interface44 & Interface45 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field498: Scalar4 + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Object16! + field502: String + field504: Int! + field505: Scalar4 +} + +type Object78 { + field572: ID + field573: Int! +} + +type Object79 { + field578: Interface2 + field579: ID + field580: Int + field581: Int! +} + +type Object8 { + field78: Enum3 + field79: Object5 + field80: ID + field81: Object7 + field82: Int! +} + +type Object80 { + field585: String + field586: String + field587: Scalar2! + field588: Scalar2! + field589: Scalar2! + field590: Scalar1 + field591: Interface2 + field592: Scalar2! + field593: Scalar2! + field594: Scalar1 + field595: Scalar1 + field596: ID + field597: String + field598: Scalar2! +} + +type Object81 implements Interface2 & Interface40 & Interface44 & Interface45 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field498: Scalar4 + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field502: String + field504: Int! + field505: Scalar4 +} + +type Object82 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object83 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field518: Enum19 + field519: Scalar2 + field520: Scalar2 +} + +type Object84 { + field610: String + field611: Scalar2! + field612: Scalar1 + field613: Interface2 + field614: String + field615: Scalar2 + field616: Scalar2 + field617: Scalar2 + field618: Scalar2 + field619: String + field620: ID + field621: Interface2 + field622: Scalar1 + field623: Enum20 + field624: Enum21 + field625: Scalar2 + field626: Scalar2 + field627: Int! + field628: String +} + +type Object85 implements Interface2 & Interface43 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field127: Scalar2 + field139: Scalar2 + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field529: Int + field530: String + field531: String + field532: Enum16 + field533: String + field534: String + field535: Int + field536: String + field537: Boolean + field538: Int + field539: String +} + +type Object86 implements Interface2 & Interface40 & Interface44 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +type Object87 implements Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field641: String + field642: Int +} + +type Object88 implements Interface12 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field645: String +} + +type Object89 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field647: String +} + +type Object9 implements Interface2 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field91: Interface10 +} + +type Object90 implements Interface13 & Interface15 & Interface2 & Interface3 & Interface46 & Interface9 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field53: String + field54: Scalar1 + field55: Scalar2 + field56: String + field57: Boolean + field58: Enum2 + field59: Int + field60: Boolean + field61: String + field62: String + field63: Scalar2 + field64: Scalar2 + field651: String + field652: String +} + +type Object91 implements Interface12 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field168: String + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field535: Int + field655: String + field656: String + field657: Boolean + field658: Enum22 + field659: String + field660: String + field661: Enum23 + field662: Enum24 + field663: String + field664: String + field665: Boolean + field666: String + field667: String +} + +type Object92 { + field671: String + field672: String + field673: Scalar2! + field674: Scalar2! + field675: Scalar1 + field676: Interface2 + field677: Scalar2! + field678: Scalar1 + field679: Scalar1 + field680: Scalar2! + field681: ID + field682: String + field683: String + field684: Scalar2! + field685: String +} + +type Object93 { + field689(argument1293: Int, argument1294: Int, argument1295: InputObject1): [Object94!]! + field695: String + field696: ID + field697: Scalar2 + field698(argument1296: Int, argument1297: Int, argument1298: InputObject1): [Object94!]! + field699: Int! +} + +type Object94 { + field690: Object5 + field691: Object93 + field692: ID + field693: Enum25 + field694: Int! +} + +type Object95 { + field706: Object95 + field707: Object95 + field708: Object95 + field709: Object95 + field710: Object95 + field711: Object95 + field712: Object95 + field713: Object95 + field714: Object95 + field715: Object95 + field716: Object95 + field717: Object95 + field718: String + field719: ID + field720: Int! +} + +type Object96 { + field723: String + field724: ID + field725: String + field726: String + field727: Int! +} + +type Object97 implements Interface1 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! + field730: Object98 +} + +type Object98 { + field731: String + field732: String + field733: String + field734: String + field735: String + field736: ID + field737: Scalar1 + field738: Float + field739: String + field740: String + field741: Object97 + field742: Float + field743: String + field744: String + field745: String + field746: Int! +} + +type Object99 implements Interface1 & Interface2 { + field10: ID + field11: Boolean! + field12(argument11: Int, argument12: Int, argument13: InputObject1): [Object3!]! + field2: Interface2 + field3(argument2: Int, argument3: Int, argument4: InputObject1): [Interface2!]! + field4(argument5: Int, argument6: Int, argument7: InputObject1): [Interface2!]! + field48(argument26: Int, argument27: Int, argument28: InputObject1): [Object3!]! + field49: String + field5(argument10: InputObject1, argument8: Int, argument9: Int): [Object2!]! + field50: Interface2! +} + +enum Enum1 { + EnumValue1 + EnumValue2 +} + +enum Enum10 { + EnumValue55 + EnumValue56 +} + +enum Enum11 { + EnumValue57 + EnumValue58 + EnumValue59 + EnumValue60 + EnumValue61 + EnumValue62 + EnumValue63 + EnumValue64 + EnumValue65 + EnumValue66 + EnumValue67 + EnumValue68 + EnumValue69 + EnumValue70 + EnumValue71 + EnumValue72 + EnumValue73 + EnumValue74 + EnumValue75 + EnumValue76 + EnumValue77 +} + +enum Enum12 { + EnumValue78 + EnumValue79 + EnumValue80 + EnumValue81 + EnumValue82 + EnumValue83 + EnumValue84 + EnumValue85 + EnumValue86 + EnumValue87 +} + +enum Enum13 { + EnumValue88 + EnumValue89 + EnumValue90 + EnumValue91 + EnumValue92 +} + +enum Enum14 { + EnumValue100 + EnumValue101 + EnumValue93 + EnumValue94 + EnumValue95 + EnumValue96 + EnumValue97 + EnumValue98 + EnumValue99 +} + +enum Enum15 { + EnumValue102 + EnumValue103 + EnumValue104 +} + +enum Enum16 { + EnumValue105 + EnumValue106 + EnumValue107 + EnumValue108 +} + +enum Enum17 { + EnumValue109 + EnumValue110 +} + +enum Enum18 { + EnumValue111 + EnumValue112 + EnumValue113 + EnumValue114 + EnumValue115 + EnumValue116 + EnumValue117 + EnumValue118 + EnumValue119 + EnumValue120 + EnumValue121 +} + +enum Enum19 { + EnumValue122 + EnumValue123 + EnumValue124 +} + +enum Enum2 { + EnumValue3 + EnumValue4 +} + +enum Enum20 { + EnumValue125 + EnumValue126 + EnumValue127 + EnumValue128 + EnumValue129 + EnumValue130 + EnumValue131 + EnumValue132 + EnumValue133 + EnumValue134 + EnumValue135 + EnumValue136 +} + +enum Enum21 { + EnumValue137 + EnumValue138 + EnumValue139 + EnumValue140 +} + +enum Enum22 { + EnumValue141 + EnumValue142 + EnumValue143 + EnumValue144 +} + +enum Enum23 { + EnumValue145 + EnumValue146 + EnumValue147 +} + +enum Enum24 { + EnumValue148 + EnumValue149 + EnumValue150 +} + +enum Enum25 { + EnumValue151 + EnumValue152 +} + +enum Enum26 { + EnumValue153 + EnumValue154 + EnumValue155 + EnumValue156 + EnumValue157 + EnumValue158 +} + +enum Enum27 { + EnumValue159 + EnumValue160 + EnumValue161 + EnumValue162 + EnumValue163 + EnumValue164 + EnumValue165 +} + +enum Enum28 { + EnumValue166 + EnumValue167 + EnumValue168 +} + +enum Enum29 { + EnumValue169 + EnumValue170 + EnumValue171 + EnumValue172 +} + +enum Enum3 { + EnumValue5 + EnumValue6 + EnumValue7 + EnumValue8 + EnumValue9 +} + +enum Enum30 { + EnumValue173 + EnumValue174 + EnumValue175 +} + +enum Enum31 { + EnumValue176 + EnumValue177 + EnumValue178 + EnumValue179 + EnumValue180 +} + +enum Enum32 { + EnumValue181 + EnumValue182 + EnumValue183 + EnumValue184 +} + +enum Enum33 { + EnumValue185 + EnumValue186 + EnumValue187 + EnumValue188 + EnumValue189 + EnumValue190 +} + +enum Enum34 { + EnumValue191 + EnumValue192 + EnumValue193 + EnumValue194 + EnumValue195 + EnumValue196 + EnumValue197 + EnumValue198 + EnumValue199 + EnumValue200 + EnumValue201 + EnumValue202 + EnumValue203 + EnumValue204 + EnumValue205 + EnumValue206 + EnumValue207 + EnumValue208 + EnumValue209 + EnumValue210 + EnumValue211 +} + +enum Enum4 { + EnumValue10 + EnumValue11 + EnumValue12 + EnumValue13 +} + +enum Enum5 { + EnumValue14 + EnumValue15 + EnumValue16 + EnumValue17 + EnumValue18 + EnumValue19 + EnumValue20 +} + +enum Enum6 { + EnumValue21 + EnumValue22 + EnumValue23 +} + +enum Enum7 { + EnumValue24 + EnumValue25 + EnumValue26 + EnumValue27 + EnumValue28 + EnumValue29 +} + +enum Enum8 { + EnumValue30 + EnumValue31 + EnumValue32 + EnumValue33 + EnumValue34 + EnumValue35 + EnumValue36 + EnumValue37 + EnumValue38 + EnumValue39 + EnumValue40 + EnumValue41 + EnumValue42 + EnumValue43 + EnumValue44 + EnumValue45 + EnumValue46 + EnumValue47 + EnumValue48 +} + +enum Enum9 { + EnumValue49 + EnumValue50 + EnumValue51 + EnumValue52 + EnumValue53 + EnumValue54 +} + +scalar Scalar1 + +scalar Scalar2 + +scalar Scalar3 + +scalar Scalar4 + +scalar Scalar5 + +scalar Scalar6 + +input InputObject1 { + inputField1: Enum1 + inputField2: String! + inputField3: InputObject1 +} + + diff --git a/src/test/resources/large-schema-3.graphqls b/src/test/resources/large-schema-3.graphqls new file mode 100644 index 0000000000..67bb0b632f --- /dev/null +++ b/src/test/resources/large-schema-3.graphqls @@ -0,0 +1,33739 @@ +schema { + query: Object1757 + mutation: Object1136 + subscription: Object1079 +} + +directive @Directive1(argument1: String!) repeatable on OBJECT | INTERFACE + +directive @Directive2 on OBJECT | INTERFACE + +directive @Directive3 on OBJECT | FIELD_DEFINITION + +directive @Directive4(argument2: String!) on FIELD_DEFINITION + +directive @Directive5(argument3: String!) on FIELD_DEFINITION + +directive @Directive6 on FIELD + +directive @Directive7(argument4: Boolean! = true) on FIELD_DEFINITION + +directive @Directive8(argument5: [String!]!) on FIELD_DEFINITION + +directive @Directive9 on FIELD_DEFINITION + +interface Interface1 implements Interface2 { + field1: [Object3] + field13: Scalar3 + field14: Scalar4 + field2: Boolean + field3: Enum1 + field3015: Object24 + field3016: [Object24] + field3017: [Object11] + field3018(argument442: InputObject1): Object8 + field4: Object7 + field5: Scalar1 + field6: ID + field7: String + field8: Object1 +} + +interface Interface10 { + field590: String! + field591: String! +} + +interface Interface100 implements Interface99 { + field5650: ID + field5683: Object1269! + field5684: Boolean! + field5685: Object6 +} + +interface Interface101 implements Interface96 & Interface97 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5684: Boolean! + field5685: Object6 +} + +interface Interface102 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 +} + +interface Interface103 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 +} + +interface Interface104 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 +} + +interface Interface105 { + field7640: String + field7641: ID! + field7642: Enum450! + field7643: String + field7644: String! + field7645: String + field7646: String! + field7647: String! +} + +interface Interface106 { + field8005: String! +} + +interface Interface107 @Directive1(argument1 : "defaultValue354") { + field161: ID + field2332: Enum462 + field8038: String + field8039: String + field8040: String + field8041: String + field8042: Scalar1 + field8043: Scalar1 + field8044: String + field8045: Enum460 + field8046: Scalar1 + field8047: Scalar1 + field8048: Object1759 + field8049: ID + field8050: String + field8051: String + field8052: Scalar1 + field8053: Object1759 + field8054: ID + field8055: String + field8056: Scalar1 + field8057: [Enum461] + field8058: Scalar1 +} + +interface Interface108 { + field9078: Object1952 + field9079: ID! + field9080: String + field9081: String +} + +interface Interface109 { + field9727: String +} + +interface Interface11 { + field653: String! + field654: Scalar1! + field655: String + field656: String + field657: String! + field658: ID! + field659: Boolean! + field660: Object88! + field661: Object119! + field671: Scalar1! + field672: String + field673: String + field674: String! +} + +interface Interface110 { + field9783: Int! + field9784: Union102 + field9788: String! + field9789: String! + field9790: Enum535! + field9791: String! + field9792: String! +} + +interface Interface111 { + field10187: String + field10188: String + field10189: String + field10190: String + field10191: String + field10192: String + field10193: String + field10194: String + field10195: String + field10196: String + field10197: ID! + field10198: Boolean + field10199: String + field10200: String + field10201: String + field10202: String + field10203: String + field10204: String + field10205: String + field10206: String + field10207: String + field10208: String + field10209: String + field10210: String + field10211: String + field10212: Int + field10213: Int +} + +interface Interface112 { + field10460: Enum551 + field10461: String + field10462: [Object2191] + field10468: Scalar1! + field10469: Object589 +} + +interface Interface12 { + field791: Object34 + field843: Object148 + field849: Object34 + field850: Object148 +} + +interface Interface13 { + field161: ID! + field183: String + field915: String + field916: Boolean +} + +interface Interface14 { + field161: ID! + field164: String @deprecated + field166: String @deprecated + field791: Object164 + field806: String + field849: Object164 + field919: Object163 + field922: Scalar1 + field925: Scalar1 + field926: [Object165] + field930: Scalar1 +} + +interface Interface15 { + field958: Object171! + field963: Int! + field964: [Object172] + field974: [Object174] +} + +interface Interface16 { + field1011: String + field1012: String + field1013: String + field1014: String + field1015: String + field1016: String + field1017: Int + field1018: String + field1019: String + field1020: String + field1021: String + field1022: String + field1023: String + field1024: Object45 @Directive3 + field1025: String + field1026: String + field1027: String + field1028: String + field1029: String + field1030: Scalar5 +} + +interface Interface17 { + field1041: Int + field1042: Scalar4 + field1043: String + field1044: Object188 + field1048: Object6 + field1049: Object189! + field1054: Scalar4 + field1055: Int + field1056: Scalar4 + field1057: Object190 + field1062: Object191 + field1065: Int + field1066: Object192 + field1103: Boolean + field1104: Object6 + field161: ID + field925: Scalar4 +} + +interface Interface18 { + field1406: [Object246!] + field1410: Enum51 + field161: ID! + field183: String! + field915: String +} + +interface Interface19 { + field1446: ID + field1447: Object45 + field1448: Scalar10 + field1449: String +} + +interface Interface2 { + field1: [Object3] + field13: Scalar3 + field14: Scalar4 + field2: Boolean + field3: Enum1 + field4: Object7 + field5: Scalar1 + field6: ID + field7: String + field8: Object1 +} + +interface Interface20 { + field1596: ID! + field1597: Boolean! + field1598: Boolean! + field1599: Boolean! + field1600: Object45! + field1601: Enum60! + field1602: [Enum61!] + field1603: [Interface21!] + field1635: Enum61! + field1636: Scalar1 + field1637: [String!] + field1638: [Enum61!] +} + +interface Interface21 { + field1604: Enum62! + field1605: Scalar4 + field1606: Object273 + field1621: String + field1622: String + field1623: Object274 + field1630: ID! + field1631: Scalar4 + field1632: Object276 +} + +interface Interface22 { + field1640: ID! +} + +interface Interface23 implements Interface22 { + field1640: ID! + field1641: String +} + +interface Interface24 { + field1680: Boolean + field1681: [Object288] + field1691: String + field1692: Object289 + field1701: [Object291] + field1707: Boolean + field1708: ID + field1709: Int! + field1710: String + field1711: Int + field1712: [Object292] + field1719: String + field1720: Object282 +} + +interface Interface25 { + field1696: ID! + field1697: Int! + field1698: String + field1699: String + field1700: Object282 +} + +interface Interface26 { + field1306: Interface26 + field161: ID! + field163: Scalar1 + field165: Scalar1 + field1740: [ID!] + field1741: [Interface26!] + field1743(argument236: InputObject9, argument237: Int = 4, argument238: String): Object296 + field1744: String + field183: String! + field926(argument233: InputObject8, argument234: Int = 3, argument235: String): Object298 +} + +interface Interface27 { + field1132: String + field161: ID! + field163: Scalar1 + field165: Scalar1 + field1738: String + field1739: String + field1740: [ID!] + field1741: [Interface26!] +} + +interface Interface28 { + field1779: ID! +} + +interface Interface29 { + field1817: [Object321] +} + +interface Interface3 { + field15: ID! +} + +interface Interface30 { + field1822: Int! + field1823: Enum74! + field1824: String + field1825: String +} + +interface Interface31 { + field2112: Object372! +} + +interface Interface32 { + field2627: String +} + +interface Interface33 @Directive1(argument1 : "defaultValue204") { + field161: ID! + field183: String + field185: Enum149 + field2634: String + field2635: String +} + +interface Interface34 { + field2674: String! + field2675: Int! +} + +interface Interface35 @Directive1(argument1 : "defaultValue219") { + field153: ID! + field2697: Interface33! + field2698: Object503 + field2705: Object503 +} + +interface Interface36 { + field2716(argument403: [InputObject24!]): [Interface37!] + field2720(argument404: Scalar4, argument405: Scalar4): [Interface38] + field2724(argument406: [InputObject25!]): [Object511!] +} + +interface Interface37 { + field2698: Object503 + field2705: Object503 + field2717: Object510 + field2719: Object491 +} + +interface Interface38 { + field2721: String + field2722: Scalar4! + field2723: Scalar4! +} + +interface Interface39 { + field3019: Object589 + field3297: String + field3298: Scalar1 + field3299: Object589 + field3300: String + field3301: Scalar1 + field3302: String + field3303: String +} + +interface Interface4 { + field29: Scalar7 + field30: Boolean + field31: String + field32: [Object11] +} + +interface Interface40 { + field161: ID! + field3048: Object596 +} + +interface Interface41 { + field2627: String +} + +interface Interface42 { + field2627: String +} + +interface Interface43 { + field3304: String! + field3305: String! +} + +interface Interface44 { + field3342: Enum197 +} + +interface Interface45 { + field3350: Enum198 +} + +interface Interface46 { + field3359: Enum199 +} + +interface Interface47 { + field3394: ID! + field3395: Int! + field3396: [String!]! + field3397: Object690 + field3398: Enum202! +} + +interface Interface48 { + field3479: Enum211 +} + +interface Interface49 { + field3481: [Object711!]! + field3486: ID! + field3487: [Object713!]! + field3496: Object719! + field3497: String! + field3498: Object715 + field3502: [Object716!]! +} + +interface Interface5 { + field52: Object11 + field53: String + field54: Interface6 + field59: Interface6 +} + +interface Interface50 { + field3538: Object726 + field3547: Object728! +} + +interface Interface51 { + field3661: String +} + +interface Interface52 { + field3676: Object411 + field3677: [Interface53!] + field3679: Scalar8 + field3680: String + field3681: String + field3682: [Interface54!] + field3687: [Object739!] + field3688: [Object738!] + field3689: Object741 + field3690: [String!] + field3691: Scalar8 + field3692: String + field3693: [Object738!] + field3694: [Object45!] + field3695: String + field3696: [Interface55!] + field3701: Enum218 + field3702: [Object745!] + field3703: [Object744] + field3704: Scalar8 + field3705: String + field3706: String + field3707: [Object745!] +} + +interface Interface53 { + field3678: String +} + +interface Interface54 { + field3683: Interface52 + field3684: String + field3685: String + field3686: [Object738] +} + +interface Interface55 { + field3697: String + field3698: [Object738] + field3699: Interface52 + field3700: String +} + +interface Interface56 { + field3735(argument462: String, argument463: String): [Interface56] + field3736: String + field3737: String + field3738(argument464: String, argument465: String): [Interface56] + field3739: [Object768] + field3742: Object769 + field3764: String! + field3765: [Object768] + field3766: [Object45!] + field3767(argument467: String, argument468: String): [Interface56] + field3768: Enum225 + field3769: [Object768!] + field3770: [String!] + field3771: String + field3772: String + field3773: String! + field3774: [Object768!] +} + +interface Interface57 { + field3816(argument469: String, argument470: String): [Interface57] + field3817(argument471: String, argument472: String): [Interface57] + field3818: String + field3819: String + field3820(argument473: String, argument474: String): [Interface57] + field3821: [Object768] + field3822: Object790 + field3827: String! + field3828: Object791 + field3833: [Object768] + field3834: Object792 + field3841(argument476: String, argument477: String): [Interface57] + field3842(argument478: String, argument479: String = "defaultValue284", argument480: String): Object794 + field3845: [String!] + field3846: String + field3847: String + field3848: String! +} + +interface Interface58 { + field3857(argument484: String, argument485: String): Interface57 + field3858: Interface59 + field3860: Int! + field3861: String + field3862: ID! + field3863: String! + field3864: Object800! + field3870: String! + field3871: String + field3872: Int! +} + +interface Interface59 { + field3859: String +} + +interface Interface6 { + field55: Scalar5 + field56: Scalar6! + field57: Int + field58: Object6! +} + +interface Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String +} + +interface Interface61 { + field4002: [Object841!] + field4005: ID! + field4006: String + field4007: Object842 +} + +interface Interface62 { + field4025: Object850! + field4048: [Object854!] + field4062: ID! +} + +interface Interface63 { + field4075: Enum235! + field4076: Object860 + field4084: Object862 + field4087: Object863 + field4089: ID! +} + +interface Interface64 @Directive1(argument1 : "defaultValue285") { + field4133: Scalar1! + field4134: String! + field4135: String + field4136: Union25 + field4138: ID! + field4139: Scalar1! + field4140: String! + field4141: String + field4142: Int! +} + +interface Interface65 @Directive1(argument1 : "defaultValue286") { + field4143: Scalar1! + field4144: String! + field4145: String + field4146(argument527: String, argument528: Int): Interface66 + field4151: ID! + field4152: String! + field4153: Scalar1! + field4154: String! + field4155: String + field4156: Int! +} + +interface Interface66 { + field4147: [Interface67] + field4150: Object16 +} + +interface Interface67 { + field4148: String + field4149: Interface64 +} + +interface Interface68 { + field4236: Object913! + field4442: Scalar1! + field4443: Enum249! + field4444: Object926! +} + +interface Interface69 { + field4291: String + field4292: Scalar1 + field4293: Object922! + field4294: String + field4295: String + field4296: String + field4297: Enum241 + field4298: Object925 + field4302: Enum243 + field4303: String + field4304: Object926 +} + +interface Interface7 { + field175: Object40 +} + +interface Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! +} + +interface Interface71 { + field4533: Enum256! + field4534: Object162! + field4535: Object145! + field4536: Interface72! + field4542: Object255 + field4543: ID! + field4544: Object45! +} + +interface Interface72 { + field4537: Object162! + field4538: Object145! + field4539: ID! + field4540: Object255 + field4541: Object45! +} + +interface Interface73 { + field4552: Object985 + field4562: [Enum259!] + field4563: [Enum18!]! + field4564: Object589 + field4565: Scalar1 + field4566: Boolean + field4567: Union26 + field4577: [String] + field4578: [String] + field4579: Boolean + field4580: String + field4581: Boolean + field4582: String + field4583: Union27 + field4591: [Object993!]! + field4597: Object589 + field4598: Scalar1 + field4599: Int +} + +interface Interface74 { + field4607: Enum261! + field4608: [Enum18!]! + field4609: Union26 + field4610: [String] + field4611: [String] + field4612: String + field4613: Object984 + field4614: String + field4615: Union27 + field4616: ID! + field4617: [Object993!]! +} + +interface Interface75 { + field4632: Enum261! + field4633: [Enum18!]! + field4634: Union26 + field4635: [String] + field4636: [String] + field4637: String + field4638: String + field4639: Union27 + field4640: Interface74! + field4641: ID! + field4642: [Object993!]! + field4643: Object996! +} + +interface Interface76 { + field4673: String +} + +interface Interface77 implements Interface76 & Interface78 { + field4673: String + field4674: String +} + +interface Interface78 implements Interface76 { + field4673: String + field4674: String +} + +interface Interface79 { + field4702: ID! +} + +interface Interface8 { + field364: ID! + field365: Enum21 +} + +interface Interface80 { + field4716: String +} + +interface Interface81 { + field4773: Int + field4774: Scalar1 + field4775: Union1 + field4776: Scalar17 + field4777: String + field4778: Int + field4779: ID +} + +interface Interface82 { + field4834: ID! +} + +interface Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String +} + +interface Interface84 { + field4913: Scalar5 + field4914: Scalar5 + field4915: Scalar5 + field4916: Scalar5 + field4917: Scalar5 + field4918: Scalar5 + field4919: Scalar5 + field4920: Scalar5 + field4921: Scalar5 + field4922: Scalar5 + field4923: Scalar5 + field4924: Scalar5 + field4925: Scalar5 + field4926: Scalar5 + field4927: Scalar5 + field4928: Scalar5 +} + +interface Interface85 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum311! + field4943: Object1128 + field4951: String! + field4952: String! + field4953: Object1682 + field4954: Object1129 +} + +interface Interface86 { + field5004: [Object1139] + field5007: String + field5008: String +} + +interface Interface87 { + field5132: [Union38!]! +} + +interface Interface88 { + field5133: String! +} + +interface Interface89 { + field331: [String] + field5144: [Object1161] + field5148: Object1162 + field5149: String + field5150: Int + field5151: Object1161 + field5152: [String] + field5153: String + field5154: Object1163 +} + +interface Interface9 { + field527: ID! + field528: Boolean + field529: Boolean + field530: Boolean + field531: String + field532: String + field533: Enum27 +} + +interface Interface90 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 +} + +interface Interface91 { + field5172: [Object1167] +} + +interface Interface92 { + field5235: String + field5236: String! + field5237: ID! + field5238: String! +} + +interface Interface93 { + field5633: [Union40]! +} + +interface Interface94 { + field5634: Enum339! + field5635: String! +} + +interface Interface95 { + field5638: Union41! + field5639: Enum340! + field5640: Int! +} + +interface Interface96 { + field5643: String! + field5644: Scalar1! +} + +interface Interface97 implements Interface96 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! +} + +interface Interface98 { + field5664: Object6 + field5665: Object6 +} + +interface Interface99 { + field5650: ID + field5683: Object1269! + field5684: Boolean! +} + +union Union1 = Object2 | Object589 + +union Union10 = Object373 | Object374 + +union Union100 = Object1318 | Object619 + +union Union101 = Object138 | Object145 | Object1655 | Object3 | Object32 | Object352 | Object392 | Object4 | Object45 + +union Union102 = Object138 | Object145 | Object156 | Object157 | Object162 | Object1655 | Object173 | Object175 | Object177 | Object2091 | Object210 | Object237 | Object3 | Object32 | Object352 | Object39 | Object392 | Object4 | Object41 | Object42 | Object45 | Object594 | Object88 + +union Union103 = Object1318 | Object2196 + +union Union104 = Object1318 | Object2197 + +union Union105 = Object1318 | Object594 + +union Union11 = Object452 | Object453 + +union Union12 = Object516 | Object589 + +union Union13 = Object536 | Object538 | Object539 | Object542 | Object546 | Object553 | Object557 | Object558 | Object563 + +union Union14 = Object564 | Object566 | Object567 | Object569 | Object571 | Object572 + +union Union15 = Object589 | Object592 + +union Union16 = Object599 | Object604 + +union Union17 = Object657 | Object658 + +union Union18 = Object658 | Object659 + +union Union19 = Object660 | Object665 + +union Union2 = Object94 | Object95 + +union Union20 = Object662 | Object663 | Object664 + +union Union21 = Object589 | Object668 + +union Union22 = Object727 + +union Union23 = Object735 | Object736 + +union Union24 = Object589 | Object843 + +union Union25 = Object88 | Object888 + +union Union26 = Object988 | Object989 | Object990 + +union Union27 = Object991 | Object992 + +union Union28 = Object994 | Object998 + +union Union29 = Object997 | Object999 + +union Union3 = Object102 | Object103 + +union Union30 = Object1086 | Object1092 + +union Union31 = Object1087 | Object1088 | Object1089 | Object1090 | Object1091 + +union Union32 = Object1096 | Object1098 + +union Union33 = Object1097 + +union Union34 = Object1112 | Object589 + +union Union35 = Object1107 | Object145 | Object149 | Object3 | Object45 | Object589 | Object88 + +union Union36 = Object1117 | Object1119 + +union Union37 = Object1118 + +union Union38 = Object1155 | Object1156 + +union Union39 = Object1233 | Object1234 | Object452 + +union Union4 = Object121 | Object122 + +union Union40 = Object1266 | Object1267 + +union Union41 = Object39 | Object41 | Object42 + +union Union42 = Object1317 | Object1318 + +union Union43 = Object1476 | Object88 + +union Union44 = Object1488 | Object1489 + +union Union45 = Object1535 | Object1537 | Object1539 | Object1540 | Object1541 | Object1542 | Object1543 | Object1544 | Object1545 | Object1546 | Object1547 | Object1548 | Object1549 | Object1550 | Object1551 | Object1552 | Object1553 | Object1554 + +union Union46 = Object1535 | Object1537 | Object1539 | Object1540 | Object1541 | Object1542 | Object1543 | Object1544 | Object1545 | Object1546 | Object1547 | Object1548 | Object1549 | Object1550 | Object1552 | Object1553 | Object1554 | Object1557 | Object1558 | Object1559 + +union Union47 = Object1537 | Object1543 | Object1547 + +union Union48 = Object1535 | Object1537 | Object1539 | Object1540 | Object1541 | Object1542 | Object1543 | Object1544 | Object1545 | Object1546 | Object1547 | Object1548 | Object1549 | Object1550 | Object1551 | Object1552 | Object1553 | Object1554 | Object1559 + +union Union49 = Object1537 | Object1543 + +union Union5 = Object222 | Object223 | Object224 + +union Union50 = Object1539 | Object1540 | Object1541 | Object1544 | Object1545 | Object1546 | Object1547 | Object1548 | Object1549 | Object1550 | Object1552 | Object1554 | Object1557 | Object1558 | Object1559 + +union Union51 = Object1547 + +union Union52 = Object1539 | Object1540 | Object1541 | Object1544 | Object1545 | Object1546 | Object1547 | Object1548 | Object1549 | Object1550 | Object1551 | Object1552 | Object1554 | Object1559 + +union Union53 = Object1547 + +union Union54 = Object1535 | Object1537 | Object1539 | Object1540 | Object1541 | Object1542 | Object1543 | Object1544 | Object1545 | Object1547 | Object1548 | Object1549 | Object1550 | Object1552 | Object1553 | Object1554 | Object1557 | Object1558 | Object1559 + +union Union55 = Object1537 | Object1543 | Object1547 + +union Union56 = Object1546 | Object1551 | Object1554 + +union Union57 = Object1535 | Object1537 | Object1539 | Object1540 | Object1541 | Object1542 | Object1543 | Object1544 | Object1545 | Object1546 | Object1547 | Object1548 | Object1549 | Object1550 | Object1551 | Object1552 | Object1553 | Object1554 | Object1559 + +union Union58 = Object1537 | Object1543 | Object1547 + +union Union59 = Object1583 | Object1586 + +union Union6 = Object250 | Object251 | Object252 + +union Union60 = Object1635 | Object589 + +union Union61 = Object1646 | Object1647 + +union Union62 = Object1653 | Object1654 + +union Union63 = Object1666 | Object1668 + +union Union64 = Object1667 + +union Union65 = Object1318 | Object1676 + +union Union66 = Object1318 | Object1721 + +union Union67 = Object1318 | Object1722 + +union Union68 = Object1318 | Object1723 + +union Union69 = Object1318 | Object1724 + +union Union7 = Object250 | Object251 + +union Union70 = Object1318 | Object1725 + +union Union71 = Object1318 | Object1726 + +union Union72 = Object1318 | Object1727 + +union Union73 = Object1318 | Object1727 + +union Union74 = Object1318 | Object1729 + +union Union75 = Object1318 | Object1730 + +union Union76 = Object1318 | Object1731 + +union Union77 = Object1318 | Object1732 + +union Union78 = Object1318 | Object1733 + +union Union79 = Object1318 | Object1734 + +union Union8 = Object361 | Object362 | Object363 + +union Union80 = Object1318 | Object1735 + +union Union81 = Object1318 | Object1736 + +union Union82 = Object1318 | Object1737 + +union Union83 = Object1318 | Object1738 + +union Union84 = Object1318 | Object1739 + +union Union85 = Object1318 | Object1740 + +union Union86 = Object1318 | Object1741 + +union Union87 = Object1318 | Object1742 + +union Union88 = Object1318 | Object1743 + +union Union89 = Object1318 | Object1744 + +union Union9 = Object361 | Object362 + +union Union90 = Object1318 | Object1745 + +union Union91 = Object1318 | Object1746 + +union Union92 = Object1747 | Object1748 | Object1749 | Object1750 | Object1751 + +union Union93 = Object1749 | Object1750 | Object1751 | Object1752 | Object1753 + +union Union94 = Object1749 | Object1750 | Object1751 | Object1755 | Object1756 + +union Union95 = Object1853 | Object1854 + +union Union96 = Object32 | Object45 + +union Union97 = Object1868 | Object1869 + +union Union98 = Object1342 | Object1957 | Object1961 + +union Union99 = Object915 | Object928 | Object935 + +type Object1 { + field10: Union1 + field12: Scalar2 + field9: Scalar1 +} + +type Object10 implements Interface4 { + field29: Scalar7 + field30: Boolean + field31: String + field32: [Object11] + field33: ID + field34: Int + field35: Object6 + field36: [Object12] + field40: Object6 +} + +type Object100 { + field537: String! + field538: Object101 +} + +type Object1000 implements Interface74 { + field4607: Enum261! + field4608: [Enum18!]! + field4609: Union26 + field4610: [String] + field4611: [String] + field4612: String + field4613: Object984 + field4614: String + field4615: Union27 + field4616: ID! + field4617: [Object993!]! + field4645: Enum262! + field4646: Boolean +} + +type Object1001 implements Interface75 { + field4632: Enum261! + field4633: [Enum18!]! + field4634: Union26 + field4635: [String] + field4636: [String] + field4637: String + field4638: String + field4639: Union27 + field4640: Object1000! + field4641: ID! + field4642: [Object993!]! + field4643: Object996! + field4647: Enum262! + field4648: Boolean +} + +type Object1002 implements Interface71 { + field4533: Enum256! + field4534: Object162! + field4535: Object145! + field4536: Object1003! + field4542: Object255 + field4543: ID! + field4544: Object45! + field4650: [Object997!] +} + +type Object1003 implements Interface72 { + field4537: Object162! + field4538: Object145! + field4539: ID! + field4540: Object255 + field4541: Object45! + field4649: [Object998!] +} + +type Object1004 implements Interface71 { + field4533: Enum256! + field4534: Object162! + field4535: Object145! + field4536: Object1005! + field4542: Object255 + field4543: ID! + field4544: Object45! + field4652: [Object1002!] +} + +type Object1005 implements Interface72 { + field4537: Object162! + field4538: Object145! + field4539: ID! + field4540: Object255 + field4541: Object45! + field4651: [Object1003!] +} + +type Object1006 implements Interface74 { + field4607: Enum261! + field4608: [Enum18!]! + field4609: Union26 + field4610: [String] + field4611: [String] + field4612: String + field4613: Object984 + field4614: String + field4615: Union27 + field4616: ID! + field4617: [Object993!]! +} + +type Object1007 implements Interface75 { + field4632: Enum261! + field4633: [Enum18!]! + field4634: Union26 + field4635: [String] + field4636: [String] + field4637: String + field4638: String + field4639: Union27 + field4640: Object1006! + field4641: ID! + field4642: [Object993!]! + field4643: Object996! +} + +type Object1008 implements Interface20 { + field1596: ID! + field1597: Boolean! + field1598: Boolean! + field1599: Boolean! + field1600: Object45! + field1601: Enum60! + field1602: [Enum61!] + field1603: [Interface21!] + field1635: Enum61! + field1636: Scalar1 + field1637: [String!] + field1638: [Enum61!] + field3726: [Object766!] + field3734: [String!] + field4531: Int + field4532: Scalar1 +} + +type Object1009 implements Interface37 { + field153: ID! + field2698: Object503 + field2705: Object503 + field2717: Object510 + field2719: Object491 + field2776: [Object1010!] + field2782: Object510 + field2783: Object503 + field2784: Object503 + field4653: Object492! +} + +type Object101 { + field539: String +} + +type Object1010 { + field4654: Object503 + field4655: Object503 + field4656: ID + field4657: String +} + +type Object1011 { + field4658: Object503 + field4659: Object503 + field4660: [Object1012!] + field4667: ID + field4668: String +} + +type Object1012 { + field4661: Object503 + field4662: Object520 + field4663: String + field4664: Object494! + field4665: Scalar1 + field4666: Union12 +} + +type Object1013 { + field4669: String + field4670: String + field4671: String + field4672: String +} + +type Object1014 implements Interface32 & Interface41 { + field2627: String +} + +type Object1015 implements Interface32 & Interface41 { + field2627: String +} + +type Object1016 implements Interface32 & Interface41 { + field2627: String +} + +type Object1017 implements Interface32 & Interface42 { + field2627: String +} + +type Object1018 implements Interface32 & Interface41 { + field2627: String +} + +type Object1019 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field4681: String + field4682: String +} + +type Object102 { + field551: Scalar1! + field552: String + field553: String + field554: String! + field555: ID! + field556: Boolean! + field557: String + field558: Enum29 + field559: Scalar1! + field560: String + field561: String + field562: String! + field563: String +} + +type Object1020 { + field4676: String + field4677: String + field4678: String + field4679: String + field4680: String +} + +type Object1021 implements Interface38 { + field2721: String + field2722: Scalar4! + field2723: Scalar4! +} + +type Object1022 { + field4683: Object1013 + field4684: Object1023 + field4687: Enum263! + field4688: Object1024 + field4691: String +} + +type Object1023 { + field4685: String + field4686: String +} + +type Object1024 { + field4689: String + field4690: String +} + +type Object1025 { + field4692: ID! + field4693: String! +} + +type Object1026 implements Interface3 @Directive1(argument1 : "defaultValue289") @Directive1(argument1 : "defaultValue290") { + field15: ID! + field153: ID! + field4694: ID! + field4695: Interface35 +} + +type Object1027 implements Interface3 & Interface35 & Interface37 @Directive1(argument1 : "defaultValue291") @Directive1(argument1 : "defaultValue292") { + field15: ID! + field153: ID! + field2697: Object494! + field2698: Object503 + field2705: Object503 + field2717: Object510 + field2719: Object491 + field2776: [Object1011!] + field2782: Object510 + field2783: Object503 + field2784: Object503 + field4696: Scalar1 + field4697: Union12 + field4698: [Object1012] +} + +type Object1028 implements Interface43 { + field3304: String! + field3305: String! + field4699: Boolean + field4700: String! +} + +type Object1029 implements Interface31 { + field2112: Object372! + field4701: Boolean! +} + +type Object103 { + field564: Scalar1! + field565: String + field566: String + field567: String! + field568: ID! + field569: Boolean! + field570: String + field571: Enum29 + field572: Scalar1! + field573: String + field574: String + field575: String! + field576: String +} + +type Object1030 implements Interface31 { + field2112: Object372! + field4701: [Boolean!]! +} + +type Object1031 implements Interface31 { + field2112: Object372! + field4701: Union10! +} + +type Object1032 implements Interface31 { + field2112: Object372! + field4701: Enum18! +} + +type Object1033 implements Interface31 { + field2112: Object372! + field4701: [Enum18!]! +} + +type Object1034 implements Interface31 { + field2112: Object372! + field4701: Object369! +} + +type Object1035 implements Interface31 { + field2112: Object372! + field4701: [Object369!]! +} + +type Object1036 implements Interface31 { + field2112: Object372! + field4701: Float! +} + +type Object1037 implements Interface31 { + field2112: Object372! + field4701: [Float!]! +} + +type Object1038 implements Interface31 { + field2112: Object372! + field4701: Int! +} + +type Object1039 implements Interface31 { + field2112: Object372! + field4701: [Int!]! +} + +type Object104 { + field578: Scalar1! + field579: String + field580: String + field581: String! + field582: ID! + field583: String! + field584: Scalar1! + field585: String + field586: String + field587: String! + field588: String! +} + +type Object1040 implements Interface31 { + field2112: Object372! + field4701: Scalar15! +} + +type Object1041 implements Interface31 { + field2112: Object372! + field4701: [Scalar15!]! +} + +type Object1042 implements Interface31 { + field2112: Object372! + field4701: Scalar8! +} + +type Object1043 implements Interface31 { + field2112: Object372! + field4701: [Scalar8!]! +} + +type Object1044 implements Interface31 { + field2112: Object372! + field4701: String! +} + +type Object1045 implements Interface31 { + field2112: Object372! + field4701: [String!]! +} + +type Object1046 implements Interface31 { + field2112: Object372! + field4701: Object59! +} + +type Object1047 implements Interface31 { + field2112: Object372! + field4701: [Object59!]! +} + +type Object1048 implements Interface31 { + field2112: Object372! + field4701: Object45! +} + +type Object1049 implements Interface31 { + field2112: Object372! + field4701: [Object45!]! +} + +type Object105 implements Interface10 { + field590: String! + field591: String! +} + +type Object1050 implements Interface79 { + field4702: ID! + field4703: Object1051 + field4710: String + field4711: String +} + +type Object1051 { + field4704(argument532: String = "defaultValue293"): String + field4705: ID! + field4706(argument533: String = "defaultValue294"): String + field4707: [String!] + field4708: Enum264 + field4709: String +} + +type Object1052 implements Interface79 { + field4702: ID! + field4711: String + field4712: Enum265! + field4713: String +} + +type Object1053 implements Interface21 { + field1604: Enum62! + field1605: Scalar4 + field1606: Object273 + field1621: String + field1622: String + field1623: Object274 + field1630: ID! + field1631: Scalar4 + field1632: Object276 + field3778: Enum226 + field3787: Object45 + field3788: Interface20 + field4714: Boolean! + field4715: String +} + +type Object1054 implements Interface80 { + field4716: String + field4717: Enum266 +} + +type Object1055 { + field4718: [Enum267!] + field4719: ID! + field4720: String! +} + +type Object1056 implements Interface18 & Interface3 @Directive1(argument1 : "defaultValue295") @Directive1(argument1 : "defaultValue296") @Directive1(argument1 : "defaultValue297") { + field1406: [Object246!] + field1410: Enum51 + field15: ID! + field153: String + field161: ID! + field183: String! + field260: Int + field4721: [Object1055!] @Directive4(argument2 : "defaultValue298") @Directive7(argument4 : true) + field915: String +} + +type Object1057 implements Interface18 { + field1406: [Object246!] + field1410: Enum51 + field161: ID! + field183: String! + field915: String +} + +type Object1058 { + field4722: String + field4723: String + field4724: String + field4725: String +} + +type Object1059 { + field4726: Object1058 + field4727: Object1060 + field4733: [Object1062] +} + +type Object106 { + field593(argument137: String, argument138: Int): Object107 + field598: [Object109] @deprecated + field603: Boolean! + field604: Object16! + field605: Scalar1! + field606: String + field607: String + field608: String! + field609: [Object110] +} + +type Object1060 { + field4728: Object1061 + field4732: String +} + +type Object1061 { + field4729: Boolean + field4730: ID + field4731: String +} + +type Object1062 { + field4734: ID + field4735: String +} + +type Object1063 { + field4736: [Object1059] + field4737: Object1064! + field4742: ID! +} + +type Object1064 { + field4738: String + field4739: String + field4740: Int + field4741: Int +} + +type Object1065 implements Interface3 & Interface40 @Directive1(argument1 : "defaultValue299") @Directive1(argument1 : "defaultValue300") { + field15: ID! + field161: ID! + field3048: Object596 + field4743: Object1066 + field4745: [Object1067] + field4751: String +} + +type Object1066 implements Interface13 & Interface3 @Directive1(argument1 : "defaultValue301") @Directive1(argument1 : "defaultValue302") { + field15: ID! + field161: ID! + field183: String + field4744: Boolean + field4745: [Object1067] + field4747: Object1067 + field4748: Object1068 + field915: String + field916: Boolean +} + +type Object1067 implements Interface3 @Directive1(argument1 : "defaultValue303") @Directive1(argument1 : "defaultValue304") { + field15: ID! + field161: ID! + field4746: String + field915: String +} + +type Object1068 { + field4749: Int + field4750: Int +} + +type Object1069 implements Interface3 & Interface40 @Directive1(argument1 : "defaultValue305") @Directive1(argument1 : "defaultValue306") { + field15: ID! + field161: ID! + field3048: Object596 + field4743: Object1070 + field4755: Int +} + +type Object107 { + field594: [Object108] + field597: Object16! +} + +type Object1070 implements Interface13 & Interface3 @Directive1(argument1 : "defaultValue307") @Directive1(argument1 : "defaultValue308") { + field15: ID! + field161: ID! + field183: String + field4752: Object1071 + field915: String + field916: Boolean +} + +type Object1071 { + field4753: Int + field4754: Int +} + +type Object1072 implements Interface3 & Interface40 @Directive1(argument1 : "defaultValue309") @Directive1(argument1 : "defaultValue310") { + field15: ID! + field161: ID! + field3048: Object596 + field4743: Object1073 + field4762: String +} + +type Object1073 implements Interface13 & Interface3 @Directive1(argument1 : "defaultValue311") @Directive1(argument1 : "defaultValue312") { + field15: ID! + field161: ID! + field183: String + field4756: Object1074 + field4759: Object1075 + field915: String + field916: Boolean +} + +type Object1074 { + field4757: Int + field4758: Int +} + +type Object1075 { + field4760: String + field4761: String +} + +type Object1076 implements Interface3 & Interface40 @Directive1(argument1 : "defaultValue313") @Directive1(argument1 : "defaultValue314") { + field15: ID! + field161: ID! + field3048: Object596 + field4743: Object1077 + field4763: [String] +} + +type Object1077 implements Interface13 & Interface3 @Directive1(argument1 : "defaultValue315") @Directive1(argument1 : "defaultValue316") { + field15: ID! + field161: ID! + field183: String + field4748: Object1068 + field4756: Object1074 + field4759: Object1075 + field915: String + field916: Boolean +} + +type Object1078 implements Interface21 { + field1604: Enum62! + field1605: Scalar4 + field1606: Object273 + field1621: String + field1622: String + field1623: Object274 + field1630: ID! + field1631: Scalar4 + field1632: Object276 + field3778: Enum226 + field3786: String + field3787: Object45 + field3788: Interface20 + field3789: Boolean! + field4221: String + field4222: String + field4223: String + field4225: String + field4226: String + field4227: String + field4228: String + field4229: String + field4230: String + field4231: String + field4232: String +} + +type Object1079 { + field4764(argument534: String!): Object1080 @Directive9 + field4769(argument535: String!): Object1081 @Directive9 + field4771(argument536: ID!): Interface2 + field4772(argument537: Int): Object1082 + field4780(argument538: Int): Object1083 + field4781(argument539: ID, argument540: ID): Object4 + field4782: Object4 + field4783(argument541: String!): Object1084 + field4787: Object1085 + field4789(argument542: ID!): Union30 + field4803: Int + field4804: Object1093 + field4806(argument543: ID!): Object1094 + field4810: Object1095 + field4812(argument544: ID!): Union32 + field4817: Object1099 + field4819(argument545: String!): Object1100 + field4821(argument546: [Enum302!], argument547: Enum303): Object1101 + field4829: Object942 + field4830(argument548: [InputObject54!]!): Object1103 + field4833(argument549: InputObject55!): Object1104 + field4835(argument550: InputObject56!): Object1105 + field4837: Interface19 + field4838: Object1106 + field4840(argument551: ID!): Object1107 + field4888: Object1107 + field4889(argument570: ID!): Union36 + field4894: Int + field4895(argument571: ID!): Object1120 +} + +type Object108 { + field595: String! + field596: Object106 +} + +type Object1080 { + field4765: String + field4766: String! + field4767: String! + field4768: String! +} + +type Object1081 { + field4770: Object697 +} + +type Object1082 implements Interface81 { + field4773: Int + field4774: Scalar1 + field4775: Union1 + field4776: Scalar17 + field4777: String + field4778: Int + field4779: ID +} + +type Object1083 implements Interface81 { + field4773: Int + field4774: Scalar1 + field4775: Union1 + field4776: Scalar17 + field4777: String + field4778: Int + field4779: ID +} + +type Object1084 { + field4784: Int + field4785: String + field4786: Object1 +} + +type Object1085 { + field4788: Boolean +} + +type Object1086 { + field4790: Enum297! + field4791: Union31 +} + +type Object1087 { + field4792: Int +} + +type Object1088 { + field4793: String +} + +type Object1089 { + field4794: Enum298! + field4795: String + field4796: String + field4797: Scalar3 +} + +type Object109 { + field599: String! + field600: Object110 +} + +type Object1090 { + field4798: String + field4799: String +} + +type Object1091 { + field4800: Enum299! + field4801: String +} + +type Object1092 { + field4802: Scalar2! +} + +type Object1093 { + field4805: Scalar2 +} + +type Object1094 { + field4807: String! + field4808: Enum300! + field4809: String +} + +type Object1095 { + field4811: Boolean +} + +type Object1096 { + field4813: Enum301! + field4814: Union33 +} + +type Object1097 { + field4815: String +} + +type Object1098 { + field4816: Scalar14! +} + +type Object1099 { + field4818: Scalar14 +} + +type Object11 implements Interface4 { + field29: Scalar7 + field30: Boolean + field31: String + field32: [Object11] +} + +type Object110 { + field601: String + field602: Int +} + +type Object1100 { + field4820: String! +} + +type Object1101 { + field4822: Enum302 + field4823: Object589 + field4824: Scalar1 + field4825: String! + field4826: [Object1102] +} + +type Object1102 { + field4827: String + field4828: String +} + +type Object1103 { + field4831: ID! + field4832: Enum304! +} + +type Object1104 implements Interface82 { + field4834: ID! +} + +type Object1105 { + field4836: ID! +} + +type Object1106 { + field4839: String +} + +type Object1107 { + field4841: [Interface79] + field4842: Object1108 + field4878: Object1116 + field4883: ID! + field4884: String! + field4885: Object1111 + field4886(argument569: ID!): Object1108 + field4887: [Object1108] +} + +type Object1108 { + field4843: [Interface79] + field4844: Boolean + field4845: Object1109 + field4852: ID! + field4853: String! + field4854: Object1111 + field4859(argument552: String, argument553: String, argument554: String, argument555: Int, argument556: Int, argument557: String): Object1113 + field4874: [Object1115] +} + +type Object1109 { + field4846: [Object1110] + field4851: Enum306 +} + +type Object111 { + field614: [Object112] @deprecated + field618: Boolean! + field619: Object16! + field620: Scalar1! + field621: String + field622: String + field623: String! + field624: [String] +} + +type Object1110 { + field4847: Interface79 + field4848: ID! + field4849: Enum305! + field4850: [String]! +} + +type Object1111 { + field4855: Scalar1 + field4856: Union34 + field4858: Scalar18 +} + +type Object1112 { + field4857: String +} + +type Object1113 { + field4860: [Object1114] + field4873: Object16 +} + +type Object1114 { + field4861: String + field4862(argument558: ID): Scalar1 + field4863(argument559: ID): Scalar4 + field4864(argument560: ID): Scalar10 + field4865(argument561: ID): Scalar19 + field4866(argument562: ID): Object6 + field4867(argument563: ID): Object45 + field4868: Union35 + field4869(argument564: ID): Object3 + field4870: String + field4871(argument565: ID): String + field4872(argument566: ID): Object589 +} + +type Object1115 { + field4875: Interface79 + field4876: Enum307 + field4877: ID! +} + +type Object1116 implements Interface3 @Directive1(argument1 : "defaultValue317") @Directive1(argument1 : "defaultValue318") { + field130(argument568: String = "defaultValue320"): String + field15: ID! + field161: ID! + field285: [Object1051] + field4879: Boolean + field4880: String + field4881: Object1051 + field4882: String + field915(argument567: String = "defaultValue319"): String +} + +type Object1117 { + field4890: Enum308! + field4891: Union37 +} + +type Object1118 { + field4892: String +} + +type Object1119 { + field4893: Int! +} + +type Object112 { + field615: String! + field616: Object113 +} + +type Object1120 { + field4896: ID! + field4897: [Object1121!] +} + +type Object1121 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4904: Enum309! + field4905: String + field4906: String + field4907: ID! + field4908: Object1122 + field4951: String! + field4952: String + field4988: String + field4989: String + field4990: Int! + field4991: [Object1135!] + field4994: Enum314 + field4995: String + field4996: String! + field4997: Int +} + +type Object1122 { + field4909: String + field4910: Object1123! + field4937: ID! + field4938: Object1125! + field4982: String + field4983: ID! + field4984: Scalar5 + field4985: Scalar5 + field4986: Object594! + field4987: String +} + +type Object1123 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4911: String! + field4912: Object1124 + field4930: Scalar5 + field4931: String + field4932: Object1121! + field4933: Enum310! + field4934: Scalar5 + field4935: Scalar5 + field4936: String +} + +type Object1124 implements Interface84 { + field4913: Scalar5 + field4914: Scalar5 + field4915: Scalar5 + field4916: Scalar5 + field4917: Scalar5 + field4918: Scalar5 + field4919: Scalar5 + field4920: Scalar5 + field4921: Scalar5 + field4922: Scalar5 + field4923: Scalar5 + field4924: Scalar5 + field4925: Scalar5 + field4926: Scalar5 + field4927: Scalar5 + field4928: Scalar5 + field4929: Scalar5 +} + +type Object1125 { + field4939: Object1126 + field4940: [Object1127!] + field4980: Scalar5 + field4981: Scalar5 +} + +type Object1126 implements Interface84 { + field4913: Scalar5 + field4914: Scalar5 + field4915: Scalar5 + field4916: Scalar5 + field4917: Scalar5 + field4918: Scalar5 + field4919: Scalar5 + field4920: Scalar5 + field4921: Scalar5 + field4922: Scalar5 + field4923: Scalar5 + field4924: Scalar5 + field4925: Scalar5 + field4926: Scalar5 + field4927: Scalar5 + field4928: Scalar5 +} + +type Object1127 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4911: String + field4932: Object1121 + field4933: Enum313! + field4934: Scalar5 + field4936: String + field4941: Scalar1 + field4942: Interface85 + field4959: Object1131 + field4971: ID! + field4972: String + field4973: Object1133 + field4974: Object1134 +} + +type Object1128 { + field4944: Int! + field4945: Scalar5! + field4946: Scalar5! + field4947: Scalar5! + field4948: Scalar5! + field4949: Scalar5! + field4950: Scalar5! +} + +type Object1129 { + field4955: [Object1130] + field4958: Object16! +} + +type Object113 { + field617: String +} + +type Object1130 { + field4956: String + field4957: Object1127 +} + +type Object1131 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum312! + field4934: Scalar5 + field4951: String! + field4954: [Object1127!] + field4960: Scalar1 + field4961: Object1132 + field4967: Int! + field4968: Scalar1 + field4969: Int + field4970: Object594! +} + +type Object1132 { + field4962: Scalar5! + field4963: Scalar5! + field4964: Scalar5! + field4965: Scalar5! + field4966: Scalar5! +} + +type Object1133 implements Interface84 { + field4913: Scalar5 + field4914: Scalar5 + field4915: Scalar5 + field4916: Scalar5 + field4917: Scalar5 + field4918: Scalar5 + field4919: Scalar5 + field4920: Scalar5 + field4921: Scalar5 + field4922: Scalar5 + field4923: Scalar5 + field4924: Scalar5 + field4925: Scalar5 + field4926: Scalar5 + field4927: Scalar5 + field4928: Scalar5 +} + +type Object1134 { + field4975: Scalar5 + field4976: Scalar5 + field4977: Scalar5 + field4978: Scalar5 + field4979: Scalar5 +} + +type Object1135 { + field4992: ID! + field4993: String! +} + +type Object1136 { + field4998(argument572: InputObject57): Object1137 + field5001(argument573: InputObject58!, argument574: ID!): Object146 + field5002(argument575: InputObject58!, argument576: ID!, argument577: ID!): Object146 + field5003(argument578: ID!, argument579: [ID!], argument580: Enum315!): Object1138 + field5009(argument581: String!, argument582: ID!, argument583: ID, argument584: Enum315!): Object1140 + field5018(argument585: ID!, argument586: ID!, argument587: ID!, argument588: ID): Object185 + field5019(argument589: ID!, argument590: ID!, argument591: String): Int + field5020(argument592: ID!, argument593: ID!, argument594: String, argument595: ID!): Int + field5021(argument596: ID!): Boolean + field5022(argument597: ID!, argument598: String): Object1138 + field5023(argument599: ID!, argument600: String, argument601: ID!): Object1138 + field5024(argument602: InputObject59!): Object198 + field5025(argument603: InputObject63): Object185 + field5026(argument604: [InputObject63]): [Object1141] + field5068(argument605: ID!, argument606: ID!, argument607: String!): Object185 + field5069(argument608: ID!, argument609: [ID], argument610: String!): [Object1141] + field5070(argument611: ID!, argument612: ID!): Object185 + field5071(argument613: String, argument614: String, argument615: String): Object185 + field5072(argument616: ID!, argument617: String): Object146 + field5073(argument618: ID!, argument619: String!, argument620: String!): Object146 + field5074(argument621: [ID!]!, argument622: ID!, argument623: ID!, argument624: ID!): Boolean + field5075(argument625: ID!, argument626: String): Object146 @deprecated + field5076(argument627: InputObject59!, argument628: Boolean): Object198 + field5077(argument629: [ID!]!, argument630: ID!, argument631: ID!): Boolean + field5078(argument632: ID!, argument633: Enum44, argument634: ID!): Object185 + field5079(argument635: ID!, argument636: ID!, argument637: InputObject68, argument638: InputObject68, argument639: [InputObject68]): Object185 + field5080(argument640: ID!, argument641: InputObject68, argument642: InputObject68, argument643: [InputObject68]): Object145 + field5081(argument644: ID!, argument645: ID!, argument646: [ID!]): Boolean + field5082(argument647: ID!, argument648: ID!, argument649: ID): Boolean + field5083(argument650: ID!, argument651: InputObject69): Object1144 + field5085(argument652: ID!, argument653: InputObject69, argument654: ID!): Object1144 + field5086(argument655: [InputObject70!]!, argument656: String!, argument657: Enum319): Object1145 + field5117(argument658: ID!, argument659: Scalar1!, argument660: Scalar1!): Object1145 + field5118(argument661: ID!): Object1151 + field5120(argument662: ID!): Object1145 + field5121(argument663: ID!, argument664: Scalar1!): Object1152 + field5123(argument665: ID!): Object1153 + field5125(argument666: ID!): Object1152 + field5126(argument667: ID!, argument668: String!): Object1152 + field5127(argument669: ID!, argument670: String!): Object1145 + field5128(argument671: [InputObject70!]!, argument672: ID!): Object1145 + field5129(argument673: ID!, argument674: Scalar1!, argument675: Scalar1!): Object1145 + field5130(argument676: ID!): Object1145 + field5131(argument677: [InputObject71!]!): Object1154! + field5135(argument678: InputObject73): Object1157 + field5142(argument681: InputObject74!): Object1159 + field5166(argument682: InputObject84!): Object1165 + field5264(argument683: InputObject85!): Object1184! @Directive9 + field5266(argument684: InputObject86!): Object1185! @Directive9 + field5268(argument685: InputObject88!): Object1186! @Directive9 + field5270(argument686: [InputObject90!]!): Object1187 + field5273(argument687: InputObject91!): Object1188 @deprecated + field5276(argument688: InputObject97!): Object1189 + field5279(argument689: InputObject99!): Object1190! @Directive9 + field5281(argument690: InputObject101!, argument691: ID!): Object1191 + field5355(argument697: InputObject103!): Object1204 + field5364(argument698: String, argument699: [ID!]): Object1204 + field5365(argument700: [ID!]!): Object1205 + field5368(argument701: [String!]!): Object1206 + field5372(argument702: InputObject104!): Object1207! @Directive9 + field5374(argument703: InputObject105!): Object1208! @Directive9 + field5376(argument704: String!): Object1209! + field5381(argument705: ID!): Object1191 + field5382(argument706: ID!): Object1204 + field5383(argument707: InputObject106!): Object1187 + field5384(argument708: InputObject107!): Object1211! @Directive9 + field5387(argument709: InputObject108!): Object1213! @Directive9 + field5390(argument710: InputObject109!): Object1214 + field5393(argument711: InputObject111!): Object1188 + field5394(argument712: InputObject112!): Object1215! @Directive9 + field5396(argument713: InputObject113!): Object1216! @Directive9 + field5398(argument714: [Int!]!, argument715: ID!, argument716: ID!): Object1217 + field5401(argument717: InputObject114!): Object1187 @deprecated + field5402(argument718: InputObject115!): Object1188 @deprecated + field5403(argument719: InputObject116!): Object1218 + field5406(argument720: InputObject117!): Object1219 @deprecated + field5409(argument721: InputObject118!): Object1220! @Directive9 + field5411(argument722: InputObject120!): Object1221! @Directive9 + field5413(argument723: InputObject121!): Object1186! @Directive9 + field5414(argument724: InputObject122!): Object1222 @deprecated + field5417(argument725: InputObject123!): Object1223 + field5420(argument726: String!, argument727: InputObject124!): Object1224! + field5423(argument728: InputObject101!): Object1191 + field5424(argument729: InputObject103!): Object1204 + field5425(argument730: InputObject125!): Object1225 @deprecated + field5430(argument731: InputObject101!, argument732: ID!): Object1191 + field5431(argument733: InputObject103!): Object1204 + field5432(argument734: InputObject126!): Object591 + field5433(argument735: ID!): Object1226 @Directive9 + field5435(argument736: InputObject127): Interface49 + field5436(argument737: InputObject134): Object719 + field5437(argument738: InputObject136): Interface49 + field5438(argument739: InputObject138): Interface49 + field5439(argument740: ID!): Object1227 + field5441(argument741: InputObject140): Interface49 + field5442(argument742: InputObject141): Object719 + field5443(argument743: InputObject142): Interface49 + field5444(argument744: InputObject143): Interface49 + field5445(argument745: InputObject144): Object719 + field5446(argument746: InputObject145!, argument747: InputObject146!): Union30! + field5447(argument748: ID!, argument749: InputObject146!): Union30! + field5448(argument750: InputObject147!, argument751: InputObject146!): Union30! + field5449(argument752: ID!, argument753: InputObject146!): Union30! + field5450(argument754: InputObject148!, argument755: InputObject146!): Union30! + field5451(argument756: InputObject150!, argument757: InputObject146!): Union30! + field5452(argument758: InputObject151!, argument759: InputObject146!): Union30! + field5453(argument760: InputObject152!, argument761: InputObject146!): Union30! + field5454(argument762: InputObject153!, argument763: InputObject146!): Union30! + field5455(argument764: InputObject146!): Union30! + field5456(argument765: InputObject155!, argument766: InputObject146!): Union30! + field5457: Int! + field5458(argument767: InputObject156!, argument768: InputObject146!): Union30! + field5459(argument769: ID!, argument770: InputObject146!): Union30! + field5460(argument771: InputObject158!, argument772: InputObject146!): Union30! + field5461(argument773: ID!, argument774: InputObject146!): Union30! + field5462(argument775: InputObject159!): Object1228! + field5469(argument776: InputObject161!, argument777: InputObject146!): Union30! + field5470(argument778: ID!, argument779: InputObject146!): Union30! + field5471(argument780: ID!, argument781: InputObject146!): Union30! + field5472(argument782: InputObject163!, argument783: InputObject146!): Union30! + field5473(argument784: InputObject147!, argument785: InputObject146!): Union30! + field5474(argument786: InputObject164!, argument787: InputObject146!): Union30! + field5475(argument788: InputObject165!, argument789: InputObject146!): Union30! + field5476(argument790: InputObject166!, argument791: InputObject146!): Union30! + field5477(argument792: InputObject167!, argument793: InputObject146!): Union30! + field5478(argument794: InputObject168!, argument795: InputObject146!): Union30! + field5479(argument796: InputObject169!, argument797: InputObject146!): Union30! + field5480(argument798: InputObject170!, argument799: InputObject146!): Union30! + field5481(argument800: InputObject171!, argument801: InputObject146!): Union30! + field5482(argument802: [InputObject173!]!, argument803: Int!): [Object214] + field5483(argument804: Int!, argument805: [Int!]!): Boolean + field5484(argument806: Int!, argument807: [InputObject174!]!): [Object216] + field5485(argument808: [InputObject175!]!): [Object214] + field5486(argument809: InputObject176!, argument810: ID!): Object1231! + field5490(argument811: String!, argument812: ID!): Object1231! + field5491(argument813: ID!): Object1231 + field5492(argument814: Boolean, argument815: Enum332, argument816: Boolean, argument817: Boolean, argument818: String): Object1232 + field5495(argument819: ID!): Object1231 + field5496(argument820: String!, argument821: ID!): Object1231! + field5497(argument822: ID, argument823: [InputObject178!]!, argument824: ID!): Union39! + field5500(argument825: [InputObject180!]!, argument826: InputObject184!, argument827: String!): Object1231 + field5501(argument828: InputObject188): String! + field5502(argument829: [String]): Boolean + field5503(argument830: String!, argument831: [InputObject189]): [Object1235] + field5508(argument832: InputObject190): Boolean + field5509(argument833: Scalar1!, argument834: String!): Interface60! + field5510(argument835: Int, argument836: String!): Object1236 + field5515(argument837: InputObject191): Object1237 + field5521(argument838: InputObject193!): Int! + field5522(argument839: InputObject194!): Object1239 @Directive9 + field5526(argument840: InputObject197!): Object1240 @Directive9 + field5530(argument841: InputObject200!): Object1241 @Directive9 + field5533(argument842: InputObject202!): Object1243 + field5537(argument843: ID!, argument844: ID!): String + field5538(argument845: String!): Object1244! + field5544(argument846: ID!): String + field5545(argument847: ID!, argument848: ID!): String + field5546(argument849: ID!, argument850: ID!): String + field5547(argument851: ID!, argument852: String!): Object1245! + field5551(argument853: InputObject205!): Object1247 + field5556(argument854: InputObject209!): Object1249 + field5559(argument855: InputObject212!): Object1250 + field5595(argument862: InputObject213!): Object1257 + field5599(argument863: InputObject220!): Object1258 + field5602(argument864: InputObject221!): Object1259 + field5605(argument865: InputObject222!): Object1260 + field5608(argument866: InputObject223!): Object1261 + field5611(argument867: InputObject224!): Object1262 + field5614(argument868: InputObject225!): Object1263 + field5618(argument869: InputObject226!): Object1264 + field5621(argument870: InputObject227!, argument871: InputObject229!): Union32! + field5622(argument872: InputObject230!, argument873: InputObject229!): Union32! + field5623(argument874: InputObject232!, argument875: InputObject229!): Union32! + field5624(argument876: InputObject234!, argument877: InputObject229!): Union32! + field5625(argument878: InputObject235!, argument879: InputObject229!): Union32! + field5626(argument880: InputObject42!, argument881: InputObject229!): Union32! + field5627(argument882: InputObject236!, argument883: InputObject229!): Union32! + field5628(argument884: InputObject237!, argument885: InputObject229!): Union32! + field5629(argument886: InputObject238!, argument887: InputObject229!): Union32! + field5630(argument888: InputObject239!, argument889: InputObject229!): Union32! + field5631(argument890: InputObject240!, argument891: InputObject229!): Union32! + field5632(argument892: [InputObject242]!): Object1265! + field5655(argument893: [InputObject243!]!): Object1271! + field5719(argument900: [InputObject243!]!): Object1271! + field5720(argument901: [InputObject252!]!): Object1271! + field5721(argument902: [InputObject256]!): Object1265! + field5722(argument903: [InputObject257!]!): Object1271! + field5723(argument904: [InputObject259!]!): Object1271! + field5724(argument905: [InputObject261!]!): Object1271! + field5725(argument906: ID!): Object1226 @Directive9 + field5726(argument907: ID!): Object1226 @Directive9 + field5727(argument908: InputObject263): Object1226 @Directive9 + field5728(argument909: ID!): Object1226 @Directive9 + field5729(argument910: ID!, argument911: Boolean, argument912: Enum20!): Boolean + field5730(argument913: InputObject264!, argument914: ID!, argument915: ID!): Object82 + field5731(argument916: [InputObject266]): Boolean + field5732(argument917: [InputObject267]): [Object1293] + field5735(argument918: InputObject268!): [Object81] + field5736(argument919: String!): Boolean + field5737(argument920: InputObject271!): Object75 + field5738(argument921: ID!): Boolean + field5739(argument922: ID!, argument923: [String], argument924: Enum20!): Object1294 + field5744(argument925: InputObject272!): Object75 + field5745(argument926: ID!, argument927: [String], argument928: Enum20!): Boolean + field5746(argument929: ID!, argument930: String, argument931: [String], argument932: Enum20!): Boolean + field5747: [String] + field5748(argument933: [String]): [String] + field5749(argument934: InputObject276): Boolean + field5750(argument935: [InputObject278]!): Boolean + field5751(argument936: ID!): Boolean + field5752(argument937: ID!, argument938: InputObject280): Object82 + field5753(argument939: ID!, argument940: ID!, argument941: ID!, argument942: InputObject280, argument943: Int!, argument944: Enum20!): Object82 + field5754(argument945: ID!, argument946: InputObject281!): Object75 + field5755(argument947: ID!, argument948: InputObject282!): Boolean + field5756(argument949: ID!, argument950: ID!, argument951: InputObject269!): Object81 + field5757(argument952: String!): Object1296! + field5759(argument953: ID!, argument954: String!): Object1297! + field5761(argument955: [InputObject283]): [Object347] + field5762(argument956: [InputObject284]): [Object347] + field5763(argument957: [InputObject285]): [Object347] + field5764(argument958: InputObject286!): Int! + field5765(argument959: Int!, argument960: InputObject287!): Object147 + field5766(argument961: Int!, argument962: InputObject288!): Object149 + field5767(argument963: Int!, argument964: InputObject289!): Object158 + field5768(argument965: InputObject290, argument966: Int!, argument967: InputObject290): Object168 + field5769(argument968: InputObject291, argument969: Int!, argument970: InputObject291): Object169 + field5770(argument971: Int!, argument972: Int!, argument973: InputObject296!): Interface15 + field5771(argument974: Int!, argument975: InputObject298!, argument976: [Int], argument977: [Int]): Interface15 + field5772(argument978: InputObject292, argument979: Int!, argument980: InputObject292): Object178 + field5773(argument981: Int!, argument982: InputObject299!): Object180 + field5774(argument983: Int!, argument984: InputObject293!): Object172 + field5775(argument985: Int!, argument986: InputObject294!): Object174 + field5776(argument987: Int!, argument988: InputObject174!): Object216 + field5777(argument989: InputObject173, argument990: InputObject173, argument991: Int!): Object214 + field5778(argument992: Int!, argument993: InputObject300!): Object211 + field5779(argument994: InputObject302!): Object1298 + field5783(argument995: Int!, argument996: InputObject295!): Object218 + field5784(argument997: [InputObject303], argument998: Boolean, argument999: String): [Object1300] + field5787(argument1000: InputObject304!): Object1301! + field5844(argument1001: InputObject309!): Object1313 + field5849(argument1002: [InputObject310]): [Object255] + field5850(argument1003: ID!, argument1004: String!): Object1315! + field5852(argument1005: InputObject313!): Object1316 + field5854(argument1006: InputObject314!): Union42 + field5858(argument1007: InputObject322!): Object393 @Directive9 + field5859(argument1008: [ID], argument1009: [ID], argument1010: [ID], argument1011: ID!): [Object396] @Directive9 + field5860(argument1012: InputObject323!): Object392 @Directive9 + field5861(argument1013: ID!): Object393 @Directive9 + field5862(argument1014: [ID], argument1015: ID!, argument1016: ID!): [Object396] @Directive9 + field5863(argument1017: InputObject324!): Object403 + field5864(argument1018: ID!): Object392 @Directive9 + field5865(argument1019: ID!): Object392 @Directive9 + field5866(argument1020: [InputObject325]!): [Object403] @Directive9 + field5867(argument1021: InputObject326!): Object393 @Directive9 + field5868(argument1022: InputObject327): [Object396] @Directive9 + field5869(argument1023: InputObject328!): Object401 @Directive9 + field5870(argument1024: InputObject329!): Object402 @Directive9 + field5871(argument1025: InputObject330): Object396 @Directive9 + field5872(argument1026: InputObject331!): Object392 @Directive9 + field5873(argument1027: InputObject332!): Object392 @Directive9 + field5874(argument1028: InputObject334!): Object1319! + field5903(argument1029: [InputObject348!]!, argument1030: String!): Object1325! + field5907(argument1031: [InputObject349]): [Object1326] + field5913(argument1032: Int!): Boolean + field5914(argument1033: Int!): Boolean + field5915(argument1034: Int!): Boolean + field5916(argument1035: Int!): Boolean + field5917(argument1036: Int!, argument1037: Int!): Boolean + field5918(argument1038: Int!): Boolean + field5919(argument1039: Int!): Boolean + field5920(argument1040: Int!): Boolean + field5921(argument1041: Int!): Boolean + field5922(argument1042: Int!): Boolean + field5923(argument1043: Int!): Boolean + field5924(argument1044: Int!): Boolean + field5925(argument1045: Int!): Boolean + field5926(argument1046: Int!): Boolean + field5927(argument1047: Int!): Boolean + field5928(argument1048: Int!): Boolean + field5929(argument1049: [InputObject350]): [Object1327] + field5931(argument1050: Int!): Boolean + field5932(argument1051: Scalar8): Scalar8 + field5933(argument1052: Scalar8): Scalar8 + field5934(argument1053: String!, argument1054: String, argument1055: Enum353!): Object1328 + field5937(argument1056: String): String + field5938(argument1057: InputObject351!): Object1329 + field5943(argument1058: InputObject352!): Object1331 + field5946(argument1059: InputObject353): [Object335] @Directive9 + field5947(argument1060: Scalar8, argument1061: Scalar8): Boolean + field5948: Object1332 + field5951(argument1062: [Int!], argument1063: InputObject355!): Object138 + field5952(argument1064: [InputObject360!]!): [Object233] + field5953(argument1065: [ID!]!): Boolean + field5954(argument1066: [ID!]!): Boolean + field5955(argument1067: InputObject355!, argument1068: ID!): Object138 + field5956(argument1069: InputObject361): Object1333 + field5959(argument1070: [InputObject367!]!, argument1071: InputObject367): Object1334 + field5962(argument1072: InputObject367): Object1334 + field5963(argument1073: ID!, argument1074: [InputObject368!]!): Object1335 + field5966(argument1075: InputObject361): Object1333 + field5967(argument1076: Boolean, argument1077: InputObject370): Object1336 + field5972(argument1082: InputObject372): Object1336 + field5973(argument1083: InputObject373): Object1336 + field5974(argument1084: InputObject374): Object1337 + field5979(argument1085: InputObject377!): Object1339! + field5986(argument1086: InputObject379!): Object1341! + field6047(argument1087: InputObject382!): Object1346! + field6133(argument1088: InputObject385!): Object1353! + field6136(argument1089: InputObject386!): Object1354! + field6139(argument1090: InputObject377!): Object1339! + field6140(argument1091: InputObject388!): Object1355! + field6143(argument1092: InputObject389!): Object1356! + field6146(argument1093: [InputObject391!]!, argument1094: String!): Object1357! + field6151(argument1095: InputObject392!): Object1226 @Directive9 + field6152(argument1096: [InputObject394!]!): [Object724!] @deprecated + field6153(argument1097: InputObject394!): Object724! @deprecated + field6154(argument1098: InputObject396!): Object724! + field6155(argument1099: [InputObject401!]!): [Object724!] @deprecated + field6156(argument1100: InputObject403!): Object724! + field6157(argument1101: InputObject401!): Object724! @deprecated + field6158(argument1102: InputObject406!): Object724! + field6159(argument1103: InputObject409!): Object724! + field6160(argument1104: [InputObject411!]!): [Object724!] @deprecated + field6161(argument1105: InputObject412!): Object724! + field6162(argument1106: InputObject411!): Object724! @deprecated + field6163(argument1107: InputObject413!): Object724! + field6164(argument1108: InputObject414!): Object724! + field6165(argument1109: [InputObject415!]!): [Object724!] @deprecated + field6166(argument1110: [InputObject416!]!): [Object45!] + field6167(argument1111: InputObject417!): Object724! + field6168(argument1112: InputObject415!): Object724! @deprecated + field6169(argument1113: InputObject418!): Object724! + field6170(argument1114: InputObject416!): Object45! + field6171(argument1115: ID!): Object913! + field6172(argument1116: InputObject419!): Object1359 + field6184(argument1117: InputObject420!): Object1360 + field6248(argument1118: [ID!]!, argument1119: [ID!]!): [Object942!]! + field6249(argument1120: [String!]!, argument1121: ID!): Object942 + field6250(argument1122: InputObject428!): Object1368 + field6335(argument1123: String, argument1124: ID!, argument1125: ID!): Object922 + field6336(argument1126: ID!): Object1376 + field6339(argument1127: [ID!]!, argument1128: [ID!]!): [Object922!]! + field6340(argument1129: InputObject436): Object1377 + field6344(argument1130: String): Boolean + field6345(argument1131: ID!): Object942 + field6346(argument1132: ID!): Object1378! + field6353(argument1133: ID!, argument1134: String!): Object1379! + field6357(argument1135: ID!): Object1379 + field6358(argument1136: Boolean!, argument1137: ID!): Object942 + field6359(argument1138: String): [String!]! + field6360: [Object942!]! + field6361(argument1139: Int): [Object1376!]! + field6362(argument1140: Int): [Object922!]! + field6363: [Object1380!]! + field6367(argument1141: [ID!]!, argument1142: [ID!]!): [Object942!]! + field6368(argument1143: [String!]!, argument1144: ID!): Object942 + field6369(argument1145: String): String + field6370(argument1146: Boolean): Object1381 + field6373(argument1147: InputObject437!): Object913! + field6374(argument1148: ID!, argument1149: [ID!]!): Object928 + field6375(argument1150: InputObject445!): Object922! + field6376(argument1151: String, argument1152: String): Object922 + field6377(argument1153: InputObject436, argument1154: String): Object1377 + field6378(argument1155: InputObject446!): Object924 + field6379(argument1156: InputObject447!): Object929 + field6380(argument1157: InputObject448!): Object923 + field6381(argument1158: InputObject449): Object924 + field6382(argument1159: InputObject451): Object1382 + field6404(argument1160: InputObject454): Object1384 + field6413(argument1161: InputObject451): Object1382 + field6414(argument1162: InputObject455): Object1386 + field6429(argument1163: InputObject456): Object928 + field6430(argument1164: InputObject457): Object922 + field6431(argument1165: InputObject460!, argument1166: String): Object942 + field6432(argument1167: InputObject461): Object929 + field6433(argument1168: InputObject463): Object1387 + field6439(argument1169: InputObject465): Object1388 + field6457(argument1170: InputObject466!): Object1378! + field6458(argument1171: InputObject467!): [Object1389!]! + field6461(argument1172: InputObject468): Object926 + field6462(argument1173: [Scalar8]): Boolean + field6463(argument1174: InputObject469!): Object1390! + field6468(argument1175: InputObject471): Interface20 + field6469(argument1176: InputObject473!): Object1392! + field6477(argument1177: InputObject474!): Object1393! + field6484(argument1178: [ID]!, argument1179: Enum61!): Object1394! + field6492(argument1180: InputObject475!): Object1396! + field6502(argument1181: InputObject477!): Object1398! + field6512(argument1182: InputObject479!): Object1400! + field6532(argument1183: String!, argument1184: InputObject481!): Object1402! + field6566(argument1185: InputObject488!): Object1409! + field6583(argument1186: ID!, argument1187: Enum371!): Object1401! + field6584(argument1188: ID!): Object1409! + field6585(argument1189: ID!): Object1409! + field6586(argument1190: String!, argument1191: InputObject481!, argument1192: Int!): Object1402! + field6587(argument1193: ID!, argument1194: InputObject481): Object1402! + field6588(argument1195: InputObject489!, argument1196: ID!): Object1409! + field6589(argument1197: InputObject490!): Object1410 + field6667(argument1202: InputObject494!): Object1421 + field6677(argument1203: InputObject495): Object1423 @Directive7(argument4 : true) + field6682(argument1204: InputObject496!): Object1424 + field6688(argument1205: InputObject497!): Object1427 + field6691(argument1206: InputObject498!): Object1428 + field6695(argument1207: InputObject496!): Object1424 + field6696(argument1208: InputObject500!): Object1430 + field6700(argument1209: InputObject501!): Object1432 + field6703(argument1210: InputObject502!): Object1424 + field6704(argument1211: InputObject505!): Object1433 + field6707(argument1212: InputObject506!): Object1434 + field6709(argument1213: InputObject508!): Object1435 + field6711(argument1214: InputObject510!): Object1436 + field6713(argument1215: InputObject512!): Object1429 + field6714(argument1216: InputObject516!): Object1437 + field6717(argument1217: InputObject517!): Object1438 + field6720(argument1218: InputObject518!): Object1439 + field6723(argument1219: InputObject519!): Object1440 + field6726(argument1220: InputObject520!): Object1441 + field6729(argument1221: InputObject521!): Object1442 + field6732(argument1222: InputObject522!): Object1429 + field6733(argument1223: InputObject523!): Object1443! + field6735(argument1224: InputObject524!): Object1444 + field6743(argument1225: InputObject526!): Object1447 + field6746(argument1226: InputObject499!): Object1429 + field6747(argument1227: InputObject527!): Object1429 + field6748(argument1228: InputObject528!): Object1448 + field6750(argument1229: InputObject529!): Object1449 @Directive7(argument4 : true) + field6755(argument1230: InputObject534!): Object1429 + field6756(argument1231: ID!): Object1431 + field6757(argument1232: ID): Object1437 + field6758(argument1233: ID): Object1438 + field6759(argument1234: ID): Object1439 + field6760(argument1235: ID): Object1440 + field6761(argument1236: ID): Object1441 + field6762(argument1237: ID): Object1442 + field6763(argument1238: ID!): Object1451 + field6766(argument1239: InputObject535!): Object1452 + field6770(argument1240: InputObject537!): Object1454 + field6774(argument1241: InputObject539!): Object1456 + field6778(argument1242: InputObject541!): Object1458 + field6781(argument1243: InputObject542!): Object1459 + field6783(argument1244: InputObject543!): Object1460 @Directive7(argument4 : true) + field6786(argument1245: InputObject544!): Object1461 + field6793(argument1246: InputObject545!): Object1463 + field6795(argument1247: InputObject546!): Object1464 + field6800(argument1248: InputObject549!): Object1466 + field6802(argument1249: InputObject550!): Object1467 + field6804(argument1250: Int, argument1251: ID): Object1468 + field6806(argument1252: ID!): Object1469 + field6808(argument1253: InputObject552!): Object1470 + field6810(argument1254: ID!): Object1410 + field6811(argument1255: ID!): Object1420 + field6812(argument1256: InputObject553!): Object1471 + field6814(argument1257: ID!): Object1410 + field6815(argument1258: InputObject512!): Object1429 + field6816(argument1259: InputObject516!): Object1437 + field6817(argument1260: InputObject517!): Object1438 + field6818(argument1261: InputObject518!): Object1439 + field6819(argument1262: InputObject519!): Object1440 + field6820(argument1263: InputObject520!): Object1441 + field6821(argument1264: InputObject521!): Object1442 + field6822(argument1265: InputObject522!): Object1429 + field6823(argument1266: InputObject555!): Object1421 + field6824(argument1267: InputObject556!): Object1472 + field6827(argument1268: InputObject499!): Object1429 + field6828(argument1269: InputObject527!): Object1429 + field6829(argument1270: InputObject528!): Object1473 + field6831(argument1271: InputObject557!): Object1474 @Directive7(argument4 : true) + field6834(argument1272: InputObject534!): Object1429 + field6835(argument1273: [InputObject558]): Object1475 + field6841(argument1274: InputObject560): Object1478 + field6844(argument1275: InputObject561): Object1479 + field6847(argument1276: InputObject562): Object1480 + field6850(argument1277: InputObject563): Object1481 + field6853(argument1278: InputObject564): Object1482 + field6856(argument1279: InputObject565): Object1483 + field6859(argument1280: InputObject573): Object1484 @Directive9 + field6876(argument1281: InputObject575): Object1490 + field6879(argument1282: InputObject576): Object1491 + field6882(argument1283: InputObject577!): Object1492 + field6885(argument1284: InputObject585): Object1493 + field6888(argument1285: InputObject586): Object1494 + field6891(argument1286: InputObject587): Object1495 + field6894(argument1287: InputObject588): Object1496 + field6897(argument1288: InputObject589): Object1497 + field6900(argument1289: InputObject590): Object1498 + field6903(argument1290: InputObject591): Object1499 + field6906(argument1291: InputObject592): Object1500 + field6909(argument1292: InputObject593!): Object1501 + field6911(argument1293: InputObject594): Object1502 + field6914(argument1294: InputObject595): Object1503 + field6917(argument1295: InputObject596): Object1504 + field6919(argument1296: InputObject597): Object1505 + field6922(argument1297: InputObject598): Object1506 + field6925(argument1298: InputObject599): Object1507 + field6928(argument1299: InputObject600): Object1508 + field6931(argument1300: [InputObject601]): Object1509 + field6933(argument1301: InputObject602): Object1510 + field6936(argument1302: InputObject603): Object1511 + field6939(argument1303: InputObject604): Object1512 + field6942(argument1304: InputObject605): Object1513 + field6945(argument1305: InputObject606): Object1514 + field6948(argument1306: InputObject614): Object1515 + field6951(argument1307: InputObject617): Object1516 + field6954(argument1308: InputObject618): Object1517 + field6957(argument1309: InputObject619, argument1310: String): Object1518 + field6960(argument1311: InputObject629): Object1519 + field6963(argument1312: [InputObject630!]!, argument1313: String!): Object1520 + field7042(argument1316: [InputObject71!]!): Object1154! + field7043(argument1317: [InputObject632]): [Object1157] + field7044(argument1318: String!, argument1319: String!): Boolean @deprecated + field7045(argument1320: [InputObject633!], argument1321: [ID!], argument1322: InputObject635, argument1323: [InputObject633!]): [Object1530!] @Directive9 + field7048(argument1324: InputObject636): Object1531 + field7057(argument1329: InputObject638): [Object265] + field7058(argument1330: [InputObject638]): [Object265] + field7059(argument1331: InputObject644): Object269 + field7060(argument1332: InputObject646): Object364 + field7061(argument1333: [InputObject646]): Object1533 + field7064(argument1338: InputObject647): Object1534 + field7084(argument1339: InputObject658): Object1556 + field7094(argument1340: InputObject659): Object1561 + field7101(argument1341: InputObject660): Object1563 + field7109(argument1342: InputObject661): Object1565 + field7116(argument1343: InputObject662): Object1567 + field7124(argument1344: InputObject663): Object1569 + field7128(argument1345: InputObject664): Object1571 + field7135(argument1346: InputObject665): Boolean + field7136(argument1347: [InputObject665]): Boolean + field7137(argument1348: InputObject666): Boolean + field7138(argument1349: InputObject667): Boolean + field7139(argument1350: [InputObject667]): Boolean + field7140(argument1351: [InputObject668], argument1352: Scalar8): Boolean + field7141(argument1353: InputObject669): Boolean + field7142(argument1354: [InputObject669]): Boolean + field7143(argument1355: InputObject670): Boolean + field7144(argument1356: [InputObject671]): Boolean + field7145(argument1357: InputObject671): Boolean + field7146(argument1358: InputObject672): Boolean + field7147(argument1359: [InputObject673!]!): [Object143!] + field7148(argument1360: [ID!]!): Boolean + field7149(argument1361: [ID!]): Boolean + field7150(argument1362: [InputObject674!], argument1363: [ID!], argument1364: [InputObject677!]): [Object144!] + field7151(argument1365: [InputObject680!]!, argument1366: String!): Object1573! + field7154(argument1367: String, argument1368: Int, argument1369: String): Boolean + field7155(argument1370: InputObject682, argument1371: Int, argument1372: String): Object1574 + field7157(argument1373: String, argument1374: String, argument1375: Boolean, argument1376: String, argument1377: Int, argument1378: String, argument1379: String, argument1380: String): Object1575 + field7159(argument1381: InputObject683): Object253 + field7160(argument1382: ID!): Boolean + field7161(argument1383: ID!): Boolean + field7162(argument1384: InputObject684!): Object1576 + field7164(argument1385: InputObject685!): Object1577 + field7167(argument1386: InputObject687!): Object1578 + field7169(argument1387: InputObject688!): Object1579 + field7171(argument1388: InputObject689!): Object1580 + field7173(argument1389: InputObject690): Object1581 + field7207(argument1390: InputObject691): Object1590 + field7209(argument1391: InputObject693): Object1590 + field7210(argument1392: InputObject695!): Object1591 + field7212(argument1393: InputObject702!): Object1592 + field7214(argument1394: InputObject703!): Object1593 + field7216(argument1395: InputObject704!): Object1594 + field7218(argument1396: InputObject705!): Object1595 + field7231(argument1397: InputObject707): Object1598 + field7233(argument1398: InputObject708!): Object1599 + field7235(argument1399: InputObject709!): Object1600 + field7237(argument1400: InputObject710!): Object1601 + field7239(argument1401: InputObject711!): Object1602 + field7241(argument1402: InputObject712!): Object1603 + field7243(argument1403: InputObject713!): Object1604 + field7245(argument1404: InputObject714!): Object1605 + field7247(argument1405: InputObject715!): Object1606 + field7249(argument1406: InputObject716!): Object1607 + field7251(argument1407: InputObject717!): Object1608 + field7253(argument1408: InputObject718!): Object1609 @Directive9 + field7255(argument1409: InputObject719!): Object1610 @Directive9 + field7257(argument1410: InputObject720!): Object1611 + field7259(argument1411: InputObject721!): Object1612 + field7261(argument1412: InputObject722!): Object1613 + field7263(argument1413: InputObject723!): Object1614 + field7265(argument1414: InputObject724!): Object1615 + field7267(argument1415: InputObject725!): Object1616 + field7269(argument1416: InputObject726!): Object1617 + field7271(argument1417: InputObject727!): Object1618 + field7273(argument1418: InputObject728!): Object1619 + field7275(argument1419: InputObject729!): Object1620 + field7277(argument1420: InputObject730!): Object1621 + field7279(argument1421: InputObject731!): Object1622 + field7283(argument1422: InputObject732): Object1623 + field7285(argument1423: InputObject733): Object1623 + field7286(argument1424: InputObject734!): Object1624 + field7288(argument1425: InputObject735!): Object1625 + field7290(argument1426: InputObject736!): Object1626 + field7292(argument1427: InputObject737!): Object1627 + field7294(argument1428: InputObject738!): Object1628 + field7296(argument1429: InputObject739!): Object1629 + field7298(argument1430: InputObject740!): Object1630 + field7300(argument1431: InputObject741!): Object1631! @Directive9 + field7302(argument1432: InputObject742!): Object1632! @Directive9 + field7345(argument1433: InputObject743!): Object1640! @Directive9 + field7347(argument1434: InputObject745!): Object1641! @Directive9 + field7349(argument1435: InputObject751!): Object1642! @Directive9 + field7351(argument1436: InputObject752!): Object1643! @Directive9 + field7353(argument1437: InputObject753!): Object1644! @Directive9 + field7355(argument1438: InputObject754): Object1645 + field7357(argument1439: ID!, argument1440: [InputObject778!]!): Union61! @Directive9 + field7388(argument1441: ID!, argument1442: [InputObject786!]!): Union62! + field7466(argument1443: ID!, argument1444: [InputObject787!]!): Union62! + field7467(argument1445: ID!, argument1446: [InputObject778!]!): Union61! @Directive9 + field7468(argument1447: InputObject796): Object1665! + field7497: String + field7498(argument1448: InputObject797!, argument1449: InputObject799!): Union63! @Directive9 + field7503(argument1450: InputObject800!, argument1451: InputObject799!): Union63! @Directive9 + field7504(argument1452: InputObject805!, argument1453: InputObject799!): Union63! @Directive9 + field7505(argument1454: InputObject806!, argument1455: InputObject807!): Union36! + field7506(argument1456: InputObject808!, argument1457: InputObject807!): Union36! + field7507(argument1458: InputObject809!, argument1459: InputObject807!): Union36! + field7508(argument1460: InputObject810!, argument1461: InputObject807!): Union36! + field7509(argument1462: InputObject811!, argument1463: InputObject807!): Union36! + field7510(argument1464: ID!): Object1226 @Directive9 + field7511(argument1465: [InputObject812!]!, argument1466: String!): Object1669! + field7520(argument1467: [InputObject814!]!, argument1468: String!): Object1672! + field7524(argument1469: ID!, argument1470: String, argument1471: Enum9): Object1296! + field7525(argument1472: InputObject816): [Object1300] + field7526(argument1473: ID, argument1474: ID!, argument1475: String, argument1476: Enum9): Object1297! + field7527(argument1477: Int!, argument1478: InputObject836!): Int! + field7528(argument1479: Int!, argument1480: InputObject288!): Object149 + field7529(argument1481: Int!, argument1482: InputObject289!): Object158 + field7530(argument1483: Int!, argument1484: Int!, argument1485: InputObject837!): Object161 + field7531(argument1486: InputObject290, argument1487: Int!, argument1488: InputObject290): Object168 + field7532(argument1489: InputObject291, argument1490: Int!, argument1491: InputObject291): Object169 + field7533(argument1492: Int!, argument1493: Int!, argument1494: InputObject296!): Interface15 + field7534(argument1495: Int!, argument1496: InputObject298!, argument1497: [Int], argument1498: [Int]): Interface15 + field7535(argument1499: InputObject292, argument1500: Int!, argument1501: InputObject292): Object178 + field7536(argument1502: InputObject838!): [Object219] + field7537(argument1503: Int!, argument1504: InputObject293!): Object172 + field7538(argument1505: Int!, argument1506: InputObject294!): Object174 + field7539(argument1507: Int!, argument1508: InputObject174!): Object216 + field7540(argument1509: Int!, argument1510: InputObject173, argument1511: InputObject173): Object214 + field7541(argument1512: Int!, argument1513: InputObject300!): Object211 + field7542(argument1514: Int!, argument1515: InputObject295!): Object218 + field7543(argument1516: [InputObject839]): [Object1300] + field7544(argument1517: Int, argument1518: InputObject844, argument1519: Int!): Object45 + field7545(argument1520: String!, argument1521: String, argument1522: String, argument1523: Enum353!): Object1328 + field7546(argument1524: [InputObject845!]!, argument1525: String!): Boolean + field7547(argument1526: InputObject846!): Object1673 + field7550(argument1527: InputObject847!): Object1674 + field7553(argument1528: InputObject848!): Object1675 + field7556(argument1529: [InputObject849]): [Object255] + field7557(argument1530: ID, argument1531: ID!, argument1532: String, argument1533: Enum9): Object1315! + field7558(argument1534: [InputObject850]): [Object1157] + field7559(argument1535: [InputObject852]): [Object375] + field7560(argument1536: InputObject854!): Union65 + field7563(argument1537: InputObject863!): [Object1677] + field7573(argument1538: InputObject866): [Object1677] + field7574(argument1539: InputObject868!): [Object1677] + field7575(argument1540: InputObject869): [Object1677] + field7576(argument1541: InputObject870): [Object1677] + field7577(argument1542: [InputObject871]): [Object1680] + field7581(argument1545: [InputObject872]): [Object1300] + field7582(argument1546: [InputObject873]): [Object1300] + field7583(argument1547: [InputObject875!]!, argument1548: String): [Object1123!] + field7584(argument1549: ID!): Object1131 + field7585(argument1550: [ID!]!): [Object1127!] + field7586(argument1551: ID!, argument1552: String): Object1681 + field7712(argument1553: ID!, argument1554: [ID!], argument1555: ID): Object1131 + field7713(argument1556: ID!, argument1557: [ID!]!): Object1702 + field7726(argument1558: ID!, argument1559: [ID!]!): Object1121! + field7727(argument1560: ID!, argument1561: [ID!]!, argument1562: ID): Object1121! + field7728(argument1563: ID!, argument1564: [ID!]!): Object1702 + field7729(argument1565: ID!, argument1566: [String!]!): Object1692 + field7730(argument1567: ID!, argument1568: String): Boolean + field7731(argument1569: [ID!]!): Boolean + field7732(argument1570: [InputObject875!]!): [Object1123!] + field7733(argument1571: InputObject876, argument1572: String): Object1706 + field7761(argument1573: InputObject877!): Object1702 + field7762(argument1574: ID!, argument1575: [ID!], argument1576: String): String + field7763(argument1577: ID!, argument1578: [ID!]): Object1709 + field7765(argument1579: [InputObject880!], argument1580: String!, argument1581: String!, argument1582: ID!): Object1681 + field7766(argument1583: [InputObject881!], argument1584: String!, argument1585: String, argument1586: ID!, argument1587: String): Object1710 + field7767(argument1588: InputObject883!, argument1589: ID): Object1131 + field7768(argument1590: ID!, argument1591: [ID!], argument1592: String): Object1709 + field7769(argument1593: InputObject884!): Object1709 + field7770(argument1594: InputObject885!, argument1595: String): Object1709 + field7771(argument1596: ID!, argument1597: [ID!]): Object1709 + field7772(argument1598: InputObject886!): Object1682 + field7773(argument1599: [InputObject887!]!): [Object1688!] + field7774(argument1600: ID!, argument1601: [ID!], argument1602: String): String + field7775(argument1603: ID!, argument1604: [ID!], argument1605: String): String + field7776(argument1606: ID!, argument1607: [ID!], argument1608: String): Object1709 + field7777(argument1609: ID!, argument1610: [ID!], argument1611: String): Object1709 + field7778(argument1612: InputObject888!): Object1691 + field7779(argument1613: InputObject885!, argument1614: String): String + field7780(argument1615: [InputObject880!]!): [Object1127!] + field7781(argument1616: [InputObject881!]!, argument1617: String): [Object1127!] + field7782(argument1618: ID!, argument1619: [InputObject880!]!): Object1129 + field7783(argument1620: ID!, argument1621: [InputObject881!]!, argument1622: String): Object1129 + field7784(argument1623: [InputObject889!]!): [Object1694!] + field7785(argument1624: ID!, argument1625: [String!]!): [Object1135!] + field7786(argument1626: ID!, argument1627: [String!]!, argument1628: ID): [Object1135!] + field7787(argument1629: [InputObject890!]!): [Object1121!] + field7788(argument1630: InputObject891): Object1709 + field7789(argument1631: InputObject892): Object1692 + field7790(argument1632: InputObject893): Object1711 + field7794(argument1633: ID!, argument1634: String): Boolean + field7795(argument1635: [ID!]!, argument1636: String): Boolean + field7796(argument1637: [ID!]!): Boolean + field7797(argument1638: ID!): Boolean + field7798(argument1639: ID!, argument1640: String): Boolean + field7799(argument1641: ID!, argument1642: ID): Boolean + field7800(argument1643: ID!): Boolean + field7801(argument1644: [ID!]!): Boolean + field7802(argument1645: ID!): Boolean + field7803(argument1646: [ID!]!): Boolean + field7804(argument1647: ID!, argument1648: [ID!]): Object1681 + field7805(argument1649: ID!, argument1650: [ID!], argument1651: String): Object1710 + field7806(argument1652: [ID!]!): Boolean + field7807(argument1653: ID!, argument1654: [ID!]!): Object1702 + field7808(argument1655: ID!, argument1656: [ID!]!): Object1121! + field7809(argument1657: ID!, argument1658: [ID!]!, argument1659: ID): Object1121! + field7810(argument1660: ID!, argument1661: [ID!]!): [Object1121!] + field7811(argument1662: [ID!]!): Boolean + field7812(argument1663: ID!, argument1664: [ID!]!): Object1702 + field7813(argument1665: ID): Boolean + field7814(argument1666: ID!): Boolean + field7815(argument1667: [InputObject875!]!): [Object1123!] + field7816: Boolean + field7817(argument1668: ID!, argument1669: String): Boolean + field7818(argument1670: ID!, argument1671: String): Interface85 + field7819(argument1672: ID!, argument1673: [ID!]): [Object1121!] + field7820(argument1674: [InputObject875!]!, argument1675: String): [Object1123!] + field7821(argument1676: ID!): Object1131 + field7822(argument1677: [ID!]!): [Object1127!] + field7823(argument1678: [ID!]!): Boolean + field7824(argument1679: ID!, argument1680: [ID!], argument1681: ID): Object1131 + field7825(argument1682: ID!, argument1683: [String!]!): Object1692 + field7826(argument1684: String!, argument1685: String!, argument1686: ID!): Object1135! + field7827(argument1687: String!, argument1688: String!, argument1689: ID!, argument1690: ID): Object1135! + field7828(argument1691: ID!): Object1681 + field7829(argument1692: ID!): Object1131 + field7830(argument1693: ID!): Enum453! + field7831(argument1694: ID!, argument1695: String): Object1710 + field7832(argument1696: [InputObject875!]!, argument1697: String): [Object1123!] + field7833(argument1698: ID!): Object1681 + field7834(argument1699: ID!, argument1700: String): Object1706 + field7835(argument1701: ID!): Enum453! + field7836(argument1702: ID!, argument1703: ID): Object1131 + field7837(argument1704: InputObject894!, argument1705: Enum189!, argument1706: ID!): Boolean + field7838(argument1707: [ID!]!): Boolean + field7839(argument1708: ID!, argument1709: String): Object1706 + field7840(argument1710: ID!): Enum453! + field7841(argument1711: ID!, argument1712: ID): Object1131 + field7842(argument1713: ID!, argument1714: String): Boolean + field7843(argument1715: ID!, argument1716: String!, argument1717: String): Object1706 + field7844(argument1718: ID!, argument1719: String!, argument1720: String): Object1706 + field7845(argument1721: InputObject895!, argument1722: String): Object1123 + field7846(argument1723: InputObject896!): Object1702 + field7847(argument1724: [InputObject897!]!, argument1725: String): [Object1706!] + field7848(argument1726: ID!, argument1727: String!, argument1728: String): Object1681 + field7849(argument1729: ID!, argument1730: String!, argument1731: String, argument1732: String): Object1710 + field7850(argument1733: InputObject898!): Object1682 + field7851(argument1734: [InputObject899!]!): [Object1688!] + field7852(argument1735: InputObject900!): Object1691 + field7853(argument1736: [InputObject901!]!): [Object1127!] + field7854(argument1737: [InputObject902!]!, argument1738: String): [Object1127!] + field7855(argument1739: ID!, argument1740: ID!): Object1129 + field7856(argument1741: ID!, argument1742: ID!, argument1743: String): Object1129 + field7857(argument1744: ID!, argument1745: String!, argument1746: String): Object1129 + field7858(argument1747: [InputObject903!]!): [Object1694!] + field7859(argument1748: ID!, argument1749: [ID!]!): Object1121! + field7860(argument1750: ID!, argument1751: [ID!]!, argument1752: ID): Object1121! + field7861(argument1753: ID!, argument1754: [ID!]!, argument1755: Enum314): [Object1121!] + field7862(argument1756: [InputObject904!]!): [Object1121!] + field7863(argument1757: InputObject905): Object1692 + field7864(argument1758: InputObject906): Object1711 + field7865(argument1759: ID!, argument1760: String!): [Object1127!] + field7866(argument1761: [String!]!, argument1762: ID!): Object1712 + field7871(argument1763: ID!, argument1764: String!, argument1765: ID): [Object1127!] + field7872(argument1766: ID!, argument1767: String!, argument1768: String): [Object1127!] + field7873(argument1769: ID!, argument1770: String!): [Object1121!] + field7874(argument1771: InputObject907!, argument1772: ID): Object1714! + field7895(argument1773: InputObject910!): Object1717! + field7908(argument1774: [ID]!): Object1719! + field7910(argument1775: [ID]!): Object1720! + field7912(argument1776: InputObject911!, argument1777: ID!): Object1714! + field7913(argument1778: InputObject913!, argument1779: ID!): Object1717! + field7914(argument1780: InputObject914!): Union66 + field7919(argument1781: InputObject920!): Union67 + field7922(argument1782: InputObject922!): Union68 + field7925(argument1783: InputObject923!): Union69 + field7928(argument1784: InputObject932!): Union70 + field7932(argument1785: InputObject933!): Union71 + field7935(argument1786: InputObject936!): Union72 + field7939(argument1787: InputObject938!): Union73 + field7940(argument1788: InputObject939!): Union74 + field7943(argument1789: InputObject942!): Union75 + field7946(argument1790: InputObject943!): Union76 + field7948(argument1791: InputObject944!): Union77 + field7950(argument1792: InputObject945!): Union78 + field7952(argument1793: InputObject946!): Union79 + field7954(argument1794: InputObject947!): Union80 + field7956(argument1795: InputObject948!): Union81 + field7958(argument1796: InputObject949!): Union82 + field7960(argument1797: InputObject950!): Union83 + field7962(argument1798: InputObject951!): Union84 + field7965(argument1799: InputObject952!): Union85 + field7967(argument1800: InputObject953!): Union86 + field7970(argument1801: InputObject954!): Union87 + field7973(argument1802: InputObject955!): Union88 + field7976(argument1803: InputObject957!): Union89 + field7979(argument1804: InputObject968!): Union90 + field7983(argument1805: InputObject970!): Union91 + field7986(argument1806: InputObject972!): Object425 + field7987(argument1807: InputObject973!): Boolean + field7988(argument1808: InputObject974!): Boolean + field7989(argument1809: InputObject976!): Object425 + field7990(argument1810: InputObject978!): Boolean + field7991(argument1811: InputObject979!): Boolean + field7992(argument1812: InputObject980!): Boolean + field7993(argument1813: InputObject981!): Boolean @Directive9 + field7994(argument1814: InputObject982!): Object425 + field7995(argument1815: InputObject983!): Object409 + field7996(argument1816: InputObject984!): Object409 + field7997(argument1817: InputObject986!): Object415 + field7998(argument1818: InputObject987!): Object422 + field7999(argument1819: InputObject988!): Object425 + field8000(argument1820: InputObject989!): Object406 + field8001(argument1821: ID!): Object425 + field8002(argument1822: ID!): Boolean + field8003(argument1823: ID!): Boolean + field8004(argument1824: InputObject990!): Union92 + field8009(argument1825: InputObject991!): Object425 + field8010(argument1826: InputObject992!): Boolean + field8011(argument1827: InputObject973!): Boolean + field8012(argument1828: InputObject974!): Boolean + field8013(argument1829: InputObject993!): Object425 + field8014(argument1830: InputObject978!): Union93 @Directive9 + field8017(argument1831: InputObject979!): Object1754 @Directive9 + field8020(argument1832: InputObject980!): Boolean + field8021(argument1833: InputObject994!): Object425 + field8022(argument1834: InputObject993!): Boolean + field8023(argument1835: InputObject973!): Boolean + field8024(argument1836: InputObject995!): Boolean @deprecated + field8025(argument1837: InputObject996!): Boolean + field8026(argument1838: InputObject997!): Union94 + field8028(argument1839: ID!): Boolean + field8029(argument1840: InputObject998): Object425 + field8030(argument1841: ID!): Boolean + field8031(argument1842: InputObject999!): Boolean + field8032(argument1843: InputObject1000!): Boolean + field8033(argument1844: InputObject1001!): Boolean + field8034(argument1845: InputObject1002!): Boolean + field8035(argument1846: InputObject1003!): Object410 @Directive9 +} + +type Object1137 { + field4999: ID + field5000: Boolean +} + +type Object1138 implements Interface86 { + field5004: [Object1139] + field5007: String + field5008: String +} + +type Object1139 { + field5005: String + field5006: String +} + +type Object114 { + field626: String + field627: String + field628: String + field629: String! + field630: Scalar1! + field631: String + field632: String + field633: String! + field634: ID! + field635: String + field636: String + field637: Boolean! + field638: [Enum30!] + field639: Scalar1! + field640: String + field641: String + field642: String! +} + +type Object1140 { + field5010: ID! + field5011: Object589 + field5012: Scalar10 + field5013: String + field5014: String! + field5015: Enum316! + field5016: Enum315! + field5017: Enum317! +} + +type Object1141 { + field5027: ID + field5028: Int + field5029: Scalar4 + field5030: String + field5031: String + field5032: [Object1142] + field5043: String + field5044: ID! + field5045: [Object1143] + field5052: [String] + field5053: Scalar4 + field5054: Scalar4 + field5055: Int + field5056: Scalar4 + field5057: ID + field5058: String + field5059: Boolean + field5060: Object45 @Directive3 + field5061: [String] + field5062: Int + field5063: ID + field5064: Boolean + field5065: Enum44 + field5066: Object45 @Directive3 + field5067: Scalar5 +} + +type Object1142 { + field5033: Object187 + field5034: [String] + field5035: Boolean + field5036: Boolean + field5037: Boolean + field5038: Boolean + field5039: Boolean + field5040: Boolean + field5041: Boolean + field5042: [String] +} + +type Object1143 { + field5046: ID! + field5047: ID! + field5048: ID! + field5049: ID! + field5050: ID! + field5051: ID! +} + +type Object1144 implements Interface86 { + field5004: [Object1139] + field5007: String + field5008: String + field5084: ID! +} + +type Object1145 { + field5087: [Object1146!] + field5090: Object1147! + field5098: Object1148 + field5106: Object1149 +} + +type Object1146 { + field5088: ID! + field5089: String! +} + +type Object1147 { + field5091: ID! + field5092: Scalar1! + field5093: String! + field5094: String! + field5095: Enum319 + field5096: Scalar1! + field5097: String! +} + +type Object1148 { + field5099: Scalar1! + field5100: String! + field5101: Scalar1! + field5102: String! + field5103: Scalar1! + field5104: Scalar1 + field5105: String +} + +type Object1149 { + field5107: [Object1150!] + field5111: Scalar1! + field5112: String! + field5113: Scalar1 + field5114: String + field5115: Scalar1 + field5116: String +} + +type Object115 { + field644: Object88 +} + +type Object1150 { + field5108: Object1146! + field5109: Object1146! + field5110: Enum320! +} + +type Object1151 { + field5119: Boolean! +} + +type Object1152 { + field5122: ID! +} + +type Object1153 { + field5124: Boolean! +} + +type Object1154 implements Interface87 { + field5132: [Union38!]! +} + +type Object1155 implements Interface88 { + field5133: String! + field5134: String! +} + +type Object1156 implements Interface88 { + field5133: String! +} + +type Object1157 { + field5136(argument679: Int, argument680: Int): [Object1158] +} + +type Object1158 { + field5137: Object45 + field5138: Scalar8 + field5139: Scalar8 + field5140: Int + field5141: Scalar8 +} + +type Object1159 { + field5143: Object1160 + field5164: String + field5165: Boolean! +} + +type Object116 { + field648: Object92 +} + +type Object1160 implements Interface3 & Interface89 @Directive1(argument1 : "defaultValue324") @Directive1(argument1 : "defaultValue325") { + field15: ID! + field331: [String] + field5144: [Object1161] + field5148: Object1162 + field5149: String + field5150: Int + field5151: Object1161 + field5152: [String] + field5153: String + field5154: Object1163 + field5159: String + field5160: String + field5161: [Object1164] + field806: Object411 +} + +type Object1161 { + field5145: String + field5146: String + field5147: [String] +} + +type Object1162 implements Interface3 @Directive1(argument1 : "defaultValue322") @Directive1(argument1 : "defaultValue323") { + field1132: String + field15: ID! + field161: String! +} + +type Object1163 { + field5155: Scalar1 + field5156: String + field5157: Scalar1 + field5158: String +} + +type Object1164 { + field5162: [Interface44] + field5163: Interface45 +} + +type Object1165 { + field5167: Object1166 + field5259: [Object1183] +} + +type Object1166 implements Interface90 & Interface91 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5172: [Object1167] + field5174: Boolean + field5175: Object1168 + field5192: [Object1172] + field5194: ID! + field5198: [Object1174] + field5200: String + field5219: Object3! + field5233: [String!] + field5234: Object1179 + field5242: Boolean + field5243: [Object1173] @deprecated + field5244: [Object1180!] + field5248: [Object1181!] + field5252: [Object1182!] + field5256: Boolean + field5257: [Object1175] + field5258: Enum327 +} + +type Object1167 implements Interface90 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5173: String! +} + +type Object1168 { + field5176: [Object1169] + field5231: [Object1166] + field5232: String +} + +type Object1169 { + field5177: [Object1170] + field5180: [Object1171] + field5228: ID! + field5229: Enum326 + field5230: ID! +} + +type Object117 { + field650: [Object118] + field675: Object16 +} + +type Object1170 { + field5178: Int! + field5179: Int! +} + +type Object1171 { + field5181: [Object1172] + field5225: Enum325 + field5226: Object1174 + field5227: Int +} + +type Object1172 implements Interface90 & Interface91 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5172: [Object1167] + field5182: Object1166 @deprecated + field5183: String! + field5184: [Object1173] + field5190: Interface46 + field5191: Object1174 @deprecated + field5194: ID! + field5200: String! + field5204: [Object1176!] + field5206: Object1177 @deprecated + field5218: [Object1173] + field5219: Object3 + field5220: [Object1172] @deprecated + field5221: Object1172 @deprecated + field5222: Int + field5223: Enum324 + field5224: Enum296 +} + +type Object1173 { + field5185: Object1172 + field5186: ID + field5187: [Object1167] + field5188: Object1172 + field5189: Enum321 +} + +type Object1174 implements Interface90 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5192: [Object1172] + field5193: Int! + field5194: ID! + field5195: String + field5196: Object1175 +} + +type Object1175 implements Interface90 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5172: [Object1167] + field5190: Interface48 + field5194: ID + field5197: Int + field5198: [Object1174] + field5199: Enum322 + field5200: String + field5201: String + field5202: String + field5203: Int +} + +type Object1176 implements Interface90 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5182: Object1166! + field5191: Object1174 + field5194: ID + field5205: Object1172 + field5206: Object1177 +} + +type Object1177 implements Interface90 { + field5168: Scalar10 + field5169: Object589 + field5170: Scalar10 + field5171: Object589 + field5194: ID! + field5207: Int + field5208: Int + field5209: String + field5210: Int + field5211: [Object1178] + field5214: Enum323 + field5215: Int + field5216: Float + field5217: Float +} + +type Object1178 { + field5212: Float! + field5213: Float! +} + +type Object1179 implements Interface92 { + field5235: String + field5236: String! + field5237: ID! + field5238: String! + field5239: Boolean + field5240: String + field5241: String +} + +type Object118 { + field651: String + field652: Interface11 +} + +type Object1180 { + field5245: Int + field5246: String + field5247: String +} + +type Object1181 { + field5249: Int + field5250: String + field5251: String +} + +type Object1182 { + field5253: String + field5254: Int + field5255: String +} + +type Object1183 { + field5260: [String] + field5261: String! + field5262: String + field5263: Enum328! +} + +type Object1184 { + field5265: Interface47 +} + +type Object1185 { + field5267: Object685 +} + +type Object1186 { + field5269: Object697 +} + +type Object1187 { + field5271: [Object1172] + field5272: [Object1183] +} + +type Object1188 { + field5274: Object1172 + field5275: [Object1183] +} + +type Object1189 { + field5277: [Object1183] + field5278: [Object1173] +} + +type Object119 { + field662: Object120! + field667: ID! + field668: String! + field669: String! + field670: Boolean! +} + +type Object1190 { + field5280: Object688 +} + +type Object1191 { + field5282: Object1192 @Directive9 + field5340: Scalar1 + field5341: Object589 + field5342: String + field5343: ID! + field5344: String! + field5345: Object88 @deprecated + field5346: [Object1200] @deprecated + field5347(argument695: String, argument696: Int): Object1202 + field5353: Scalar1 + field5354: Object589 +} + +type Object1192 implements Interface3 @Directive1(argument1 : "defaultValue326") @Directive1(argument1 : "defaultValue327") @Directive1(argument1 : "defaultValue328") { + field15: ID! + field161: ID! + field5283: String! + field5284: [Object1193!] + field5298: [Object589!] + field5299: [String] @deprecated + field5300: String + field5301: [String] + field5302: [Object1193!] + field5310: [Object1195] + field5311: Scalar4 + field5312: Object88 + field5313: String! @deprecated + field5314: String + field5315: String! + field5316(argument692: String, argument693: InputObject102, argument694: Int): Object1198 + field550: [Object1196] + field577: [Object1197!] +} + +type Object1193 { + field5285: Scalar4 + field5286: ID! + field5287: Object1194 + field5290: Object1195 + field5297: Scalar4 +} + +type Object1194 { + field5288: ID! + field5289: String +} + +type Object1195 { + field5291: [String] + field5292: String + field5293: String + field5294: [String] + field5295: String + field5296: Int +} + +type Object1196 { + field5303: ID! + field5304: String + field5305: String +} + +type Object1197 { + field5306: ID! + field5307: String + field5308: String + field5309: String! +} + +type Object1198 { + field5317: [Object1199] + field5338: Object16! + field5339: Int +} + +type Object1199 { + field5318: String! + field5319: Object1200! +} + +type Object12 { + field37: String + field38: String + field39: Enum2 +} + +type Object120 { + field663: Enum31! + field664: ID! + field665: String! + field666: [Object119!]! +} + +type Object1200 implements Interface3 @Directive1(argument1 : "defaultValue329") @Directive1(argument1 : "defaultValue330") { + field1132: String! + field15: ID! + field1738: String + field2304: [String] + field3047: String + field5312: Object88! + field5320: String + field5321: String + field5322: Enum329 + field5323: Int + field5324: Object1201 + field5329: Object1201 + field5330: Object1201 + field5331: Object1201 + field5332: String @deprecated + field5333: Object1201 + field5334: Object1201 + field5335: Object1201 + field5336: String @deprecated + field5337: Int + field799: String + field806: String! + field837: String + field915: String +} + +type Object1201 { + field5325: String + field5326: String + field5327: Int + field5328: Int +} + +type Object1202 { + field5348: [Object1203] + field5351: Object16! + field5352: Int +} + +type Object1203 { + field5349: String! + field5350: Object1200 +} + +type Object1204 { + field5356: Scalar1 + field5357: Object589 + field5358: String + field5359: ID! + field5360: String + field5361: [Object1191!] + field5362: Scalar1 + field5363: Object589 +} + +type Object1205 { + field5366: [Object1183] + field5367: [ID] +} + +type Object1206 { + field5369: [Object1183] + field5370: [ID] + field5371: [ID] +} + +type Object1207 { + field5373: [ID!]! +} + +type Object1208 { + field5375: [ID!]! +} + +type Object1209 { + field5377: ID + field5378: [Object1210] +} + +type Object121 { + field677: String + field678: Scalar1! + field679: String + field680: String + field681: String! + field682: ID! + field683: Boolean! + field684: String + field685: String! + field686: Enum32 + field687: Scalar1! + field688: String + field689: String + field690: String! +} + +type Object1210 { + field5379: String! + field5380: String +} + +type Object1211 { + field5385: Object1212! + field5386: Object689 +} + +type Object1212 implements Interface86 { + field5004: [Object1139!] + field5007: String + field5008: String +} + +type Object1213 { + field5388: Object1212! + field5389: Object697 +} + +type Object1214 { + field5391: [Object1183!] + field5392: ID +} + +type Object1215 { + field5395: Boolean +} + +type Object1216 { + field5397: Object685 +} + +type Object1217 { + field5399: [Object1183] + field5400: [Object1174] +} + +type Object1218 { + field5404: [Object1183] + field5405: Object1173 +} + +type Object1219 { + field5407: [Object1183] + field5408: Object1174 +} + +type Object122 { + field691: String + field692: Scalar1! + field693: String + field694: String + field695: String! + field696: ID! + field697: Boolean! + field698: String + field699: String! + field700: Enum32 + field701: Scalar1! + field702: String + field703: String + field704: String! +} + +type Object1220 { + field5410: [Object690!] +} + +type Object1221 { + field5412: Object688 +} + +type Object1222 { + field5415: [Object1183] + field5416: Object1175 +} + +type Object1223 { + field5418: [Object1183] + field5419: [Object1175] +} + +type Object1224 { + field5421: [Object1210] + field5422: Object1200 +} + +type Object1225 { + field5426: [Object1183] + field5427: Int + field5428: String + field5429: Boolean +} + +type Object1226 { + field5434: Boolean! +} + +type Object1227 { + field5440: Boolean! +} + +type Object1228 { + field5463: [Object1229] +} + +type Object1229 { + field5464: Enum330 + field5465: String + field5466: Object1230 +} + +type Object123 { + field708: Scalar1! + field709: String + field710: String + field711: String! + field712: Interface9! + field713: Scalar1! + field714: String + field715: String + field716: String! +} + +type Object1230 { + field5467: String + field5468: String +} + +type Object1231 { + field5487: [String!] + field5488: String + field5489: Enum331 +} + +type Object1232 { + field5493: Int + field5494: String +} + +type Object1233 { + field5498: ID! +} + +type Object1234 { + field5499: ID! +} + +type Object1235 { + field5504: String! + field5505: String! + field5506: String! + field5507: String! +} + +type Object1236 { + field5511: ID! + field5512: Int + field5513: Object45 + field5514: String +} + +type Object1237 { + field5516: String! + field5517: [Object1238!]! +} + +type Object1238 { + field5518: Boolean + field5519: String! + field5520: String! +} + +type Object1239 { + field5523: [Object500] + field5524: Int + field5525: [Object500] +} + +type Object124 { + field720: [Object125] + field730: [Object126] +} + +type Object1240 { + field5527: [Object499] + field5528: Int + field5529: [Object499] +} + +type Object1241 { + field5531: [Object1242] + field5532: Int +} + +type Object1242 implements Interface3 @Directive1(argument1 : "defaultValue331") @Directive1(argument1 : "defaultValue332") { + field15: ID! + field151: Object3! + field161: ID! + field163: Scalar1! + field164: String + field165: Scalar1 + field166: String + field204: Object45! +} + +type Object1243 { + field5534: [Object35] + field5535: Int + field5536: [Object35] +} + +type Object1244 { + field5539: Scalar1! + field5540: Object589! + field5541: ID! + field5542: String! + field5543: Scalar1! +} + +type Object1245 { + field5548: Object1244 + field5549: [Object1246!]! +} + +type Object1246 { + field5550: String! +} + +type Object1247 { + field5552: Object1248 + field5555: Boolean +} + +type Object1248 { + field5553: String! + field5554: Enum333! +} + +type Object1249 { + field5557: Object1248 + field5558: Boolean +} + +type Object125 implements Interface10 { + field590: String! + field591: String! + field721: Scalar1! + field722: String + field723: String + field724: String! + field725: ID! + field726: Scalar1! + field727: String + field728: String + field729: String! +} + +type Object1250 { + field5560: Object1251 + field5593: Object1248 + field5594: Boolean +} + +type Object1251 { + field5561: String! + field5562: String! + field5563: ID! + field5564: String + field5565: Int! + field5566(argument856: ID, argument857: Int): Object1252 + field5585: [Object1255!] + field5586: String + field5587(argument858: Boolean): Int! + field5588(argument859: ID, argument860: Boolean, argument861: Int): Object1252 + field5589: [Object1256!] +} + +type Object1252 { + field5567: [Object1253] + field5584: Object16 +} + +type Object1253 { + field5568: String + field5569: Object1254 +} + +type Object1254 { + field5570: Enum335 + field5571: Object1251! + field5572: Scalar1! + field5573: String + field5574: ID! + field5575: String! + field5576: [Object1255!] + field5579: Object1254 + field5580: String + field5581: ID + field5582: Scalar1! + field5583: Object589! +} + +type Object1255 { + field5577: String! + field5578: [String!]! +} + +type Object1256 { + field5590: Enum334! + field5591: [Object1255!] + field5592: ID! +} + +type Object1257 { + field5596: Object1248 + field5597: Object1254 + field5598: Boolean +} + +type Object1258 { + field5600: Object1248 + field5601: Boolean +} + +type Object1259 { + field5603: Object1248 + field5604: Boolean +} + +type Object126 implements Interface10 { + field590: String! + field591: String! + field721: Scalar1! + field722: String + field723: String + field724: String! + field725: ID! + field726: Scalar1! + field727: String + field728: String + field729: String! + field731: Object88! +} + +type Object1260 { + field5606: Object1248 + field5607: Boolean +} + +type Object1261 { + field5609: Object1248 + field5610: Boolean +} + +type Object1262 { + field5612: Object1248 + field5613: Boolean +} + +type Object1263 { + field5615: Object1251 + field5616: Object1248 + field5617: Boolean +} + +type Object1264 { + field5619: Object1248 + field5620: Boolean +} + +type Object1265 implements Interface93 { + field5633: [Union40]! + field5642: [Object1269!] +} + +type Object1266 implements Interface94 { + field5634: Enum339! + field5635: String! + field5636: String! +} + +type Object1267 implements Interface94 { + field5634: Enum339! + field5635: String! + field5637: Object1268 +} + +type Object1268 implements Interface95 { + field5638: Union41! + field5639: Enum340! + field5640: Int! + field5641: Int +} + +type Object1269 implements Interface96 & Interface97 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5647: Boolean! + field5648: Boolean! + field5649: Boolean! + field5650: ID! + field5651: String! + field5652: Object1270 +} + +type Object127 implements Interface10 { + field590: String! + field591: String! + field721: Scalar1! + field722: String + field723: String + field724: String! + field725: ID! + field726: Scalar1! + field727: String + field728: String + field729: String! + field735: String! + field736: String! +} + +type Object1270 implements Interface96 { + field5643: String! + field5644: Scalar1! + field5650: ID! + field5653: String + field5654: String +} + +type Object1271 implements Interface93 { + field5633: [Union40]! + field5656: Object1272 +} + +type Object1272 { + field5657(argument894: InputObject249!): [Object1269]! + field5658(argument895: InputObject250!): Object1273 + field5663(argument896: InputObject251!): Object1275! + field5671: Object1270! + field5672(argument897: InputObject251!): Object1276! + field5673(argument898: InputObject251!): Object1277! + field5678(argument899: InputObject251!): [Object1278!]! +} + +type Object1273 { + field5659: [Object1274] + field5662: Object16! +} + +type Object1274 { + field5660: String! + field5661: Object1270 +} + +type Object1275 implements Interface98 { + field5664: Object6 + field5665: Object6 + field5666: [Object1275]! + field5667: ID + field5668: String + field5669: Object6 + field5670: Object6 +} + +type Object1276 implements Interface98 { + field5664: Object6 + field5665: Object6 + field5666: [Object1276]! + field5668: String +} + +type Object1277 { + field5674: [Object1277]! + field5675: String + field5676: Int + field5677: Int +} + +type Object1278 { + field5679: Object1279 + field5692: [Object1283]! + field5711: [Object1292]! + field5716: Object1284 + field5717: Object1288 + field5718: Int! +} + +type Object1279 { + field5680: [Object1280]! + field5691: Object1275 +} + +type Object128 { + field743: String! + field744: Scalar1! + field745: String + field746: String + field747: String! + field748: ID! + field749: Scalar1! + field750: String + field751: String + field752: String! +} + +type Object1280 { + field5681: Union41! + field5682: [Object1281]! + field5686: [Object1280]! + field5687: Object6! + field5688: ID + field5689: Object6! + field5690: Object1282! +} + +type Object1281 implements Interface100 & Interface96 & Interface97 & Interface99 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5683: Object1269! + field5684: Boolean! + field5685: Object6 +} + +type Object1282 implements Interface101 & Interface96 & Interface97 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5684: Boolean! + field5685: Object6 +} + +type Object1283 { + field5693: Object1279! + field5694: Enum340! + field5695: Object1284! + field5703: Object1288! +} + +type Object1284 { + field5696: [Object1285]! + field5702: Object1276 +} + +type Object1285 { + field5697: Union41! + field5698: [Object1286]! + field5699: [Object1285]! + field5700: ID + field5701: Object1287! +} + +type Object1286 implements Interface100 & Interface96 & Interface97 & Interface99 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5683: Object1269! + field5684: Boolean! + field5685: Object6! +} + +type Object1287 implements Interface101 & Interface96 & Interface97 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5684: Boolean! + field5685: Object6 +} + +type Object1288 { + field5704: [Object1289]! + field5710: Object1277 +} + +type Object1289 { + field5705: Union41! + field5706: [Object1290]! + field5707: [Object1289]! + field5708: ID + field5709: Object1291! +} + +type Object129 { + field754: [Object125] + field755: [Object126] +} + +type Object1290 implements Interface96 & Interface97 & Interface99 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5683: Object1269! + field5684: Boolean! + field5685: Int! +} + +type Object1291 implements Interface96 & Interface97 { + field5643: String! + field5644: Scalar1! + field5645: String! + field5646: Scalar1! + field5650: ID + field5684: Boolean! + field5685: Int +} + +type Object1292 { + field5712: Object1279! + field5713: Enum341! + field5714: Object1284! + field5715: Object1288! +} + +type Object1293 { + field5733: Boolean + field5734: Object71 +} + +type Object1294 { + field5740: [Object1295] + field5743: [Object633] +} + +type Object1295 { + field5741: Enum342! + field5742: String! +} + +type Object1296 implements Interface87 { + field5132: [Union38!]! + field5758: Object41 +} + +type Object1297 implements Interface87 { + field5132: [Union38!]! + field5760: Object39 +} + +type Object1298 { + field5780: [Object1299!]! +} + +type Object1299 { + field5781: Int! + field5782: String! +} + +type Object13 { + field45: [Object10] + field46: Object6 + field47: Object6 +} + +type Object130 { + field757: Int + field758: [Object131] + field769: Object16 +} + +type Object1300 { + field5785: Object45 + field5786: Scalar8 +} + +type Object1301 { + field5788: Object1302 + field5823: Object1309! +} + +type Object1302 { + field5789: String + field5790: Object1303 + field5822: Enum346! +} + +type Object1303 { + field5791: String + field5792: Scalar1! + field5793: ID! + field5794: [Object1304!]! +} + +type Object1304 { + field5795: String! + field5796: Object1305! + field5813: Scalar1! + field5814: Object1308! + field5819: ID! + field5820: String! + field5821: Enum345! +} + +type Object1305 { + field5797: String + field5798: [String!] + field5799: String + field5800: Scalar1 + field5801: String! + field5802: [Object1306!]! + field5805: String + field5806: Object1307 + field5809: Int + field5810: String + field5811: Enum343 + field5812: Enum344 +} + +type Object1306 { + field5803: [String!]! + field5804: String! +} + +type Object1307 { + field5807: String + field5808: String +} + +type Object1308 { + field5815: Int + field5816: Object45 + field5817: Int @deprecated + field5818: Int +} + +type Object1309 { + field5824: Enum347! + field5825: [Object1310!]! +} + +type Object131 { + field759: String + field760: Object132 +} + +type Object1310 { + field5826: Enum347! + field5827: Object1311 + field5843: ID! +} + +type Object1311 { + field5828: Object1312 + field5832: Object1312 + field5833: Object1312 + field5834: Object1312 + field5835: Object1312 + field5836: Object1312 + field5837: Object1312 + field5838: Object1312 + field5839: Object1312 + field5840: Object1312 + field5841: Object1312 + field5842: Object1312 +} + +type Object1312 { + field5829: String + field5830: [String!] + field5831: Enum347! +} + +type Object1313 { + field5845: [Object1314] + field5848: Object318! +} + +type Object1314 { + field5846: Enum348 + field5847: String +} + +type Object1315 implements Interface87 { + field5132: [Union38!]! + field5851: Object42 +} + +type Object1316 { + field5853: String +} + +type Object1317 { + field5855: ID + field5856: Object594 +} + +type Object1318 { + field5857: Enum349 +} + +type Object1319 { + field5875: Object1320 + field5900: Object1324! +} + +type Object132 { + field761: ID! + field762: Object45 + field763: ID! @deprecated + field764: Int + field765: Object88! + field766: Object133! +} + +type Object1320 { + field5876: String + field5877: [String!] + field5878: Object1321 + field5899: Enum351! +} + +type Object1321 { + field5879: [Object851] + field5880: String + field5881: Scalar1! + field5882: Scalar1 + field5883: Scalar1 + field5884: Object1322! + field5889: [String!] + field5890: ID! + field5891: [Object853] + field5892: [Object853] + field5893: [Interface62!]! + field5894: Enum228! + field5895: [Object1323!]! + field5898: String +} + +type Object1322 { + field5885: [Int!]! + field5886: [Int!]! + field5887: [Int!]! + field5888: [Int!]! +} + +type Object1323 { + field5896: Int! + field5897: Enum229! +} + +type Object1324 { + field5901: Enum235! + field5902: [Interface63!]! +} + +type Object1325 { + field5904: Int! + field5905: Int! + field5906: Int! +} + +type Object1326 { + field5908: String + field5909: String + field5910: Boolean + field5911: Scalar8 + field5912: String +} + +type Object1327 { + field5930: Scalar8 +} + +type Object1328 { + field5935: String + field5936: String +} + +type Object1329 { + field5939: [Object1330] + field5942: ID! +} + +type Object133 { + field767: ID! + field768: String +} + +type Object1330 { + field5940: Enum348 + field5941: String +} + +type Object1331 { + field5944: [Object1314] + field5945: ID! +} + +type Object1332 { + field5949: String + field5950: String +} + +type Object1333 { + field5957: [Object887] + field5958: Interface65 +} + +type Object1334 { + field5960: [Object887] + field5961: Boolean +} + +type Object1335 { + field5964: [Object887] + field5965: Boolean +} + +type Object1336 { + field5968(argument1078: Int, argument1079: Int): [Int] + field5969(argument1080: Int, argument1081: Int): [Object45] + field5970: Scalar8 + field5971: Object255 +} + +type Object1337 { + field5975: Object1338 + field5978: String +} + +type Object1338 { + field5976: Object45 + field5977: Scalar8 +} + +type Object1339 { + field5980: Object615 + field5981: [Object1340!] +} + +type Object134 { + field771: Int + field772: [Object135] + field785: Object16 +} + +type Object1340 { + field5982: String + field5983: String + field5984: String! + field5985: String! +} + +type Object1341 { + field5987: [Object1340!] + field5988: Object1342 +} + +type Object1342 implements Interface3 @Directive1(argument1 : "defaultValue333") @Directive1(argument1 : "defaultValue334") { + field1132: Int + field15: ID! + field161: ID! + field183: String + field185: Enum360 + field5989: Int + field5990: Scalar5 + field5991: Int + field5992: String + field5993: Object617 @Directive9 + field5994: Enum358 + field5995: String + field5996: Scalar4 + field5997: Boolean + field5998: Scalar5 + field5999: Scalar5 + field6000: Scalar5 + field6001: String + field6002: String + field6003: Scalar4 + field6004: Scalar4 + field6005: Int + field6006: Scalar5 + field6007: Scalar5 + field6008: Scalar5 + field6009: Scalar5 + field6010: Scalar5 + field6011: Scalar5 + field6012: Scalar5 + field6013: Int + field6014: [Object1343!] + field6017: String + field6018: Object1344 @Directive9 + field6033: Scalar5 + field6034: String + field6035: Scalar5 + field6036: Scalar5 + field6037: Scalar5 + field6038: Scalar5 + field6039: Int + field6040: Scalar4 + field6041: Scalar5 + field6042: Scalar5 + field6043: Scalar5 + field6044: Object1345 + field796: String +} + +type Object1343 { + field6015: String! + field6016: String! +} + +type Object1344 { + field6019: Boolean @Directive9 + field6020: Scalar6 @Directive9 + field6021: String @Directive9 + field6022: String @Directive9 + field6023: String + field6024: String + field6025: String + field6026: String + field6027: String + field6028: String + field6029: Enum359 @Directive9 + field6030: String @Directive9 + field6031: [Object1343!] @Directive9 + field6032: String @Directive9 +} + +type Object1345 { + field6045: Int + field6046: String +} + +type Object1346 { + field6048: [Object1340!] + field6049: Object1347 +} + +type Object1347 implements Interface3 @Directive1(argument1 : "defaultValue335") @Directive1(argument1 : "defaultValue336") { + field1132: Int + field15: ID! + field161: ID! + field163: Scalar1 + field164: Object589 + field165: Scalar1 + field166: Object589 + field259: Object1344 @Directive9 + field5153: Object589 + field5994: Enum358 + field6003: Scalar4 + field6004: Scalar4 + field6050: Boolean + field6051: [Object1344!] @Directive9 + field6052: Object594 + field6053: Scalar1 @Directive9 + field6054: Scalar1 @Directive9 + field6055: Scalar5 + field6056: Scalar5 + field6057: Object1348 @Directive9 + field6063: [Object1349!] + field6103: [Object594!] + field6104: [Object589!] + field6105: Enum364 + field6106: Enum365 + field6107: Object1351 + field6115: Scalar6 + field6116: Scalar6 + field6117: [String!] + field6118: [Object1352!] + field6126: Scalar5 + field6127: Scalar5 + field6128: Object1350 + field6129: Scalar5 + field6130: Scalar5 + field6131: Scalar5 + field6132: Scalar11 @Directive9 + field796: String +} + +type Object1348 { + field6058: Object6 @Directive9 + field6059: String @Directive9 + field6060: String @Directive9 + field6061: String @Directive9 + field6062: Scalar1 @Directive9 +} + +type Object1349 { + field6064: String + field6065: Enum358 + field6066: Scalar5 + field6067: Scalar5 + field6068: [Object594!] + field6069: [Object589!] + field6070: Scalar4 + field6071: Scalar4 + field6072: ID! + field6073: [Object1342!] + field6074: Scalar5 + field6075: Boolean + field6076: Object1350 + field6100: Enum363 + field6101: Scalar5 + field6102: Enum361 +} + +type Object135 { + field773: String + field774: Object136 +} + +type Object1350 { + field6077: Scalar5 + field6078: Scalar5 + field6079: Scalar5 + field6080: Scalar5 + field6081: Scalar5 + field6082: Scalar5 + field6083: Scalar5 + field6084: Scalar5 + field6085: Scalar5 + field6086: Scalar5 + field6087: Scalar5 + field6088: Scalar5 + field6089: Scalar5 + field6090: Scalar5 + field6091: Scalar5 + field6092: Scalar5 + field6093: Scalar5 + field6094: Scalar5 + field6095: Scalar5 + field6096: Scalar5 + field6097: Scalar5 + field6098: Scalar5 + field6099: Scalar5 +} + +type Object1351 { + field6108: Enum362 + field6109: ID! + field6110: Scalar4 + field6111: Object45 + field6112: String + field6113: String + field6114: String +} + +type Object1352 { + field6119: Object589 + field6120: Scalar1 + field6121: String + field6122: String + field6123: String + field6124: Enum366 + field6125: String +} + +type Object1353 { + field6134: [Object1340!] + field6135: Object1342 +} + +type Object1354 { + field6137: [Object1340] + field6138: Boolean +} + +type Object1355 { + field6141: [Object1340!] + field6142: Object1342 +} + +type Object1356 { + field6144: [Object1340!] + field6145: Object1347 +} + +type Object1357 { + field6147: [String]! + field6148: [Object1358]! +} + +type Object1358 { + field6149: [String!]! + field6150: String! +} + +type Object1359 { + field6173: String + field6174: String + field6175: String + field6176: ID! + field6177: String + field6178: String + field6179: Object922 + field6180: String + field6181: String + field6182: String + field6183: String +} + +type Object136 { + field775: Boolean + field776: ID! + field777: Boolean + field778: Object45 + field779: ID! @deprecated + field780: [String] + field781: Int + field782: Object88! + field783: Interface9! + field784: Enum36 +} + +type Object1360 { + field6185: ID! + field6186: [Object1361!]! + field6194: [Object1362!]! + field6202: String + field6203: String + field6204: [Object1363!]! + field6210: Object922! + field6211: [Object1364!]! + field6214: String + field6215: String + field6216: String + field6217: [Object1365!]! + field6227: String + field6228: [Object1366!]! + field6239: String + field6240: [Object1367!]! + field6246: [String!] + field6247: String +} + +type Object1361 { + field6187: String + field6188: String + field6189: String + field6190: String + field6191: String + field6192: String + field6193: String +} + +type Object1362 { + field6195: String + field6196: String + field6197: String + field6198: String + field6199: String + field6200: String + field6201: String +} + +type Object1363 { + field6205: String + field6206: String + field6207: String + field6208: String + field6209: String +} + +type Object1364 { + field6212: String + field6213: String +} + +type Object1365 { + field6218: String + field6219: String + field6220: String + field6221: String + field6222: String + field6223: String + field6224: String + field6225: String + field6226: String +} + +type Object1366 { + field6229: String + field6230: String + field6231: String + field6232: Boolean + field6233: String + field6234: String + field6235: String + field6236: String + field6237: String + field6238: String +} + +type Object1367 { + field6241: String + field6242: String + field6243: String + field6244: String + field6245: String +} + +type Object1368 { + field6251: Object1369 + field6264: String + field6265: [Object1370!]! + field6272: String + field6273: String + field6274: [Object1371!]! + field6287: String + field6288: String + field6289: [String!] + field6290: [Object1372!]! + field6308: String + field6309: String + field6310: String + field6311: String + field6312: Object1373 + field6317: Object922 + field6318: String + field6319: [Object1370!]! + field6320: String + field6321: String + field6322: String + field6323: String + field6324: [Object1370!]! + field6325: [Object1374!]! + field6328: [Object1375] + field6331: [Object1370!]! + field6332: String + field6333: ID! + field6334: String +} + +type Object1369 { + field6252: String + field6253: String + field6254: String + field6255: String + field6256: String + field6257: String + field6258: String + field6259: String + field6260: String + field6261: String + field6262: String + field6263: String +} + +type Object137 { + field787: Object93 + field788: Object93 + field789: Object93 +} + +type Object1370 { + field6266: String + field6267: String + field6268: String + field6269: String + field6270: String + field6271: String +} + +type Object1371 { + field6275: String + field6276: String + field6277: String + field6278: String + field6279: String + field6280: String + field6281: String + field6282: String + field6283: String + field6284: String + field6285: String + field6286: String +} + +type Object1372 { + field6291: String + field6292: String + field6293: String + field6294: String + field6295: String + field6296: String + field6297: String + field6298: String + field6299: String + field6300: String + field6301: String + field6302: String + field6303: String + field6304: String + field6305: String + field6306: String + field6307: String +} + +type Object1373 { + field6313: String + field6314: String + field6315: String + field6316: String +} + +type Object1374 { + field6326: String + field6327: String +} + +type Object1375 { + field6329: String + field6330: String +} + +type Object1376 { + field6337: Object913 + field6338: String! +} + +type Object1377 { + field6341: Int + field6342: Int + field6343: ID! +} + +type Object1378 { + field6347: [String!]! + field6348: [String!]! + field6349: String! + field6350: String! + field6351: ID! + field6352: [String!]! +} + +type Object1379 { + field6354: Object913! + field6355: Scalar1! + field6356: Object926 +} + +type Object138 implements Interface3 @Directive1(argument1 : "defaultValue80") @Directive1(argument1 : "defaultValue81") @Directive1(argument1 : "defaultValue82") { + field1328: [Object230] + field1331: ID! + field1332: [Object231] + field1335: [Object232] + field1343: [Object234] + field1346: Scalar1 + field15: ID! + field791: Object589 + field792: Scalar1 + field793: String + field794: String + field795: String + field796: String + field797: Enum37 + field798: String + field799: String! + field800: [Object139] + field804: [Object140] + field849: Object589 +} + +type Object1380 { + field6364: Object913! + field6365: Scalar1! + field6366: Scalar1 +} + +type Object1381 { + field6371: Boolean! + field6372: [Object942!]! +} + +type Object1382 { + field6383: String + field6384: Scalar1 + field6385: [Object1383!]! + field6397: String + field6398: String + field6399: Enum241 + field6400: Object925 + field6401: Enum243 + field6402: ID! + field6403: String +} + +type Object1383 { + field6386: String + field6387: String + field6388: String! + field6389: String! + field6390: String + field6391: String + field6392: String + field6393: String + field6394: Boolean + field6395: String + field6396: String +} + +type Object1384 implements Interface69 { + field4291: String + field4292: Scalar1 + field4293: Object922! + field4294: String + field4295: String + field4296: String + field4297: Enum241 + field4298: Object925 + field4302: Enum243 + field4303: String + field4304: Object926 + field4324: [Object1385!]! + field6411: ID! + field6412: String +} + +type Object1385 { + field6405: String + field6406: String! + field6407: String! + field6408: String + field6409: String + field6410: String +} + +type Object1386 { + field6415: Int + field6416: [Object924!]! + field6417: String! + field6418: [Object926!]! + field6419: Object922! + field6420: String + field6421: String + field6422: String + field6423: String! + field6424: String + field6425: String + field6426: Object925 + field6427: String + field6428: String +} + +type Object1387 { + field6434: String + field6435: String + field6436: String + field6437: String + field6438: ID! +} + +type Object1388 { + field6440: Scalar1 + field6441: String + field6442: ID! + field6443: String + field6444: Enum368 + field6445: Object922 + field6446: String + field6447: String + field6448: String + field6449: String + field6450: String + field6451: String + field6452: String + field6453: String + field6454: String + field6455: String + field6456: String +} + +type Object1389 { + field6459: String! + field6460: [String!]! +} + +type Object139 { + field801: Object88 + field802: String! + field803: Float! +} + +type Object1390 { + field6464: [Object1391!]! +} + +type Object1391 { + field6465: String + field6466: Interface20! + field6467: Enum253! +} + +type Object1392 { + field6470: [Enum18!] + field6471: Object145! + field6472: String + field6473: [Enum18!] + field6474: ID! + field6475: Boolean! + field6476: Interface20! +} + +type Object1393 { + field6478: String + field6479: Scalar1 + field6480: Scalar1 + field6481: Interface20! + field6482: Enum253! + field6483: Scalar1 +} + +type Object1394 { + field6485: [Object1395!]! +} + +type Object1395 { + field6486: String + field6487: Object45 + field6488: Enum61 + field6489: Enum253! + field6490: Interface20! + field6491: Enum61! +} + +type Object1396 { + field6493: [Object1397!]! +} + +type Object1397 { + field6494: Object145! + field6495: [Enum18!] + field6496: [Enum18!] + field6497: Boolean! + field6498: String + field6499: Object45 + field6500: Interface20! + field6501: Enum253! +} + +type Object1398 { + field6503: [Object1399!] +} + +type Object1399 { + field6504: Object145! + field6505: [Enum18!] + field6506: [Enum18!] + field6507: Boolean! + field6508: String + field6509: Object45! + field6510: Interface20! + field6511: Enum253! +} + +type Object14 { + field49: [Object15] + field60: Object16 +} + +type Object140 implements Interface3 @Directive1(argument1 : "defaultValue83") @Directive1(argument1 : "defaultValue84") { + field1311: Object229 @Directive9 + field15: ID! + field805: Object141 + field808: Object138 @Directive3 + field809: [Object142] + field832: [Object143] +} + +type Object1400 { + field6513: String! + field6514: [Object1401!]! +} + +type Object1401 { + field6515: ID + field6516: ID! + field6517: String! + field6518: ID! + field6519: String! + field6520: Scalar1! + field6521: String! + field6522: Boolean! + field6523: Enum371 + field6524: String! + field6525: String! + field6526: ID! + field6527: Scalar1! + field6528: String! + field6529: ID! + field6530: Enum372! + field6531: ID! +} + +type Object1402 { + field6533: String! + field6534: Scalar1! + field6535: String! + field6536: String + field6537: [Object1403!] + field6555: [Object1408!] + field6560: ID! + field6561: String! + field6562: String! + field6563: Scalar1! + field6564: String! + field6565: Int! +} + +type Object1403 { + field6538: [Object1404] + field6541: [Object1405] + field6548: Object1406 + field6551: String! + field6552: Object1407 +} + +type Object1404 { + field6539: String! + field6540: Int +} + +type Object1405 { + field6542: String + field6543: Boolean + field6544: String! + field6545: String! + field6546: Enum374! + field6547: Boolean +} + +type Object1406 { + field6549: [String!] + field6550: [String!] +} + +type Object1407 { + field6553: [String!] + field6554: [String!] +} + +type Object1408 { + field6556: String! + field6557: String! + field6558: Int! + field6559: Int! +} + +type Object1409 { + field6567: String! + field6568: Scalar1! + field6569: String! + field6570: ID + field6571: [Object1401] + field6572: ID! @deprecated + field6573: ID + field6574: ID + field6575: Enum375! + field6576: String! + field6577: Scalar1! + field6578: String! + field6579: String! @deprecated + field6580: Int! + field6581: Object1402! + field6582: ID! @deprecated +} + +type Object141 implements Interface3 @Directive1(argument1 : "defaultValue85") @Directive1(argument1 : "defaultValue86") { + field15: ID! + field161: ID! + field183: String + field185: String + field796: String + field804: [Object140] + field806: ID + field807: Scalar4 +} + +type Object1410 { + field6590: [Object1411] + field6594: Object1412 +} + +type Object1411 { + field6591: Enum379 + field6592: String + field6593: String +} + +type Object1412 { + field6595: Scalar1 + field6596: Object589 + field6597: Enum376 + field6598: Boolean + field6599: [Object1413!] + field6602: String + field6603: ID + field6604: Boolean + field6605(argument1198: String, argument1199: Int): Object1414 + field6629: Boolean + field6630: Scalar1 + field6631: Boolean + field6632: Boolean + field6633: Boolean + field6634: Boolean + field6635: Int + field6636: String + field6637: String + field6638: Object45 + field6639: [String] + field6640: [String] + field6641(argument1200: String, argument1201: Int): Object1418 + field6657: String + field6658: String + field6659: Enum384 + field6660: String + field6661: Boolean + field6662: String + field6663: String + field6664: Int + field6665: Int + field6666: Enum378 +} + +type Object1413 { + field6600: Int! + field6601: Enum380! +} + +type Object1414 { + field6606: [Object1415] + field6627: Object307! + field6628: Int +} + +type Object1415 { + field6607: String! + field6608: Object1416 +} + +type Object1416 { + field6609: Object1417 + field6619: Enum381 + field6620: String + field6621: Boolean + field6622: ID + field6623: String + field6624: Int + field6625: String + field6626: Enum382 +} + +type Object1417 implements Interface27 & Interface28 & Interface3 @Directive1(argument1 : "defaultValue337") @Directive1(argument1 : "defaultValue338") { + field1132: String + field15: ID! + field151: Object3 + field161: ID! + field163: Scalar1 + field164: Object589 + field165: Scalar1 + field166: Object589 + field1738: String + field1739: String + field1740: [ID!] + field1741: [Interface26!] + field1779: ID! + field2776: [Object3!] + field3047: String + field6610: Scalar1 + field6611: Interface26 + field6612: Boolean + field6613: Boolean + field6614: String + field6615: String + field6616: [String!] + field6617: [Object589!] + field6618: String +} + +type Object1418 { + field6642: [Object1419] + field6655: Object307! + field6656: Int +} + +type Object1419 { + field6643: String! + field6644: Object1420 +} + +type Object142 { + field810: String + field811: Scalar5 + field812: String + field813: String + field814: Scalar6 + field815: String + field816: ID! + field817: String + field818: Enum38! + field819: String + field820: String + field821: Scalar4 + field822: Enum39! + field823: String + field824: String + field825: String + field826: Scalar5 + field827: String + field828: String + field829: String + field830: Scalar4 + field831: Scalar5 +} + +type Object1420 { + field6645: ID + field6646: Enum377 + field6647: String! + field6648: Enum380 + field6649: ID! + field6650: Boolean + field6651: String + field6652: String + field6653: String + field6654: Enum383 +} + +type Object1421 { + field6668: [Object1411] + field6669: Object1422 +} + +type Object1422 { + field6670: String + field6671: String + field6672: ID! + field6673: Object45 + field6674: String! + field6675: String + field6676: String +} + +type Object1423 { + field6678: String + field6679: String @Directive7(argument4 : true) @deprecated + field6680: Boolean @Directive7(argument4 : true) + field6681: String @Directive7(argument4 : true) @deprecated +} + +type Object1424 { + field6683: [Object1425] +} + +type Object1425 { + field6684: ID + field6685: [Object1426] +} + +type Object1426 { + field6686: String + field6687: String +} + +type Object1427 { + field6689: [ID] + field6690: [ID] +} + +type Object1428 { + field6692: [Object1429] +} + +type Object1429 { + field6693: Interface24 + field6694: [Object1426] +} + +type Object143 implements Interface3 @Directive1(argument1 : "defaultValue87") @Directive1(argument1 : "defaultValue88") { + field15: ID! + field161: ID! + field204: Object45 + field806: String + field808: Object138 + field833: Object144 +} + +type Object1430 { + field6697: [Object1431] +} + +type Object1431 { + field6698: ID + field6699: [Object1426] +} + +type Object1432 { + field6701: [ID] + field6702: [ID] +} + +type Object1433 { + field6705: [ID] + field6706: ID +} + +type Object1434 { + field6708: Int! +} + +type Object1435 { + field6710: Int! +} + +type Object1436 { + field6712: Int! +} + +type Object1437 { + field6715: Object281 + field6716: [Object1426] +} + +type Object1438 { + field6718: Object295 + field6719: [Object1426] +} + +type Object1439 { + field6721: Object285 + field6722: [Object1426] +} + +type Object144 implements Interface3 @Directive1(argument1 : "defaultValue89") @Directive1(argument1 : "defaultValue90") { + field1276: Union5! + field1281: [String!] + field1282: Enum49! + field1283: [String!]! + field1284: String + field1285: [Object225] + field1289: [Object226] + field1310: ID! + field15: ID! + field163: Scalar1 + field164: Object589 + field165: Scalar1 + field166: Object589 + field311: [Object228!]! + field807: Scalar4! + field834: [String!]! + field835: Object145 +} + +type Object1440 { + field6724: Interface25 + field6725: [Object1426] +} + +type Object1441 { + field6727: [Object1426] + field6728: Object343 +} + +type Object1442 { + field6730: [Object1426] + field6731: Object346 +} + +type Object1443 { + field6734: Interface26! +} + +type Object1444 { + field6736: [Object1445!]! +} + +type Object1445 { + field6737: [Object1446!]! + field6741: [String!]! @deprecated + field6742: ID! +} + +type Object1446 { + field6738: String! + field6739: ID! + field6740: String! +} + +type Object1447 { + field6744: [Object1446!] + field6745: Object308 +} + +type Object1448 { + field6749: Object312 +} + +type Object1449 { + field6751: [Object1450] + field6754: Object317 +} + +type Object145 implements Interface3 @Directive1(argument1 : "defaultValue91") @Directive1(argument1 : "defaultValue92") @Directive1(argument1 : "defaultValue93") @Directive1(argument1 : "defaultValue94") @Directive1(argument1 : "defaultValue95") { + field1002: Interface15 @deprecated + field1003: [Object180] + field1007(argument152: String, argument153: String, argument154: Int = 1, argument155: Int): Object181 + field1032(argument156: Int): [Object184] @Directive7(argument4 : true) + field1153: [Object201] + field1181: Object589 + field1183: Object589 + field1208: Scalar5 + field1209: [Object208] + field1211: Object209 + field1214: [Object172] + field1215: [Object174] + field1216: Object156! + field1217: String + field1218: Scalar1 + field1219: Scalar10 + field1220: Scalar10 + field1221: Scalar1 + field1222: Object210! @Directive7(argument4 : true) + field1223: Object211 + field1239: [Object216] + field1246: Object217 + field1249: Boolean + field1250: Boolean + field1251: Boolean + field1252: [Object218] + field1254: [Object219] + field1256: Object220 + field1265: [Object39] @Directive9 + field1266: [Object221] @Directive9 + field1272: [Object144] + field1273: String + field1274: Scalar5 + field1275: [Object589] + field15: ID! + field161: Int + field163: Scalar10! + field165: Scalar10! + field192: [Object146] + field791: Object34 + field840: String + field841: [Object39] + field842: [Object147] + field843: Object148 + field849: Object34 + field850: Object148 + field891: String @Directive7(argument4 : true) + field892: Scalar10 + field893: [Object155] + field900: Object157 + field901: [Object158] + field915: String + field917: [Object161] + field948: [Object168] + field949: [Object169] + field957: [Interface15] + field991: Object178 +} + +type Object1450 { + field6752: Enum388 + field6753: String +} + +type Object1451 { + field6764: [Object1411] + field6765: String +} + +type Object1452 { + field6767: [Object1453!]! +} + +type Object1453 { + field6768: [String!]! + field6769: ID! +} + +type Object1454 { + field6771: [Object1455!]! +} + +type Object1455 { + field6772: [String!]! + field6773: ID! +} + +type Object1456 { + field6775: [Object1457!]! +} + +type Object1457 { + field6776: [String!]! + field6777: ID! +} + +type Object1458 { + field6779: [Object1446!] + field6780: ID +} + +type Object1459 { + field6782: Object312 +} + +type Object146 implements Interface3 @Directive1(argument1 : "defaultValue96") @Directive1(argument1 : "defaultValue97") { + field15: ID! + field161: ID! + field183: String + field836: String + field837: String + field838: Enum40! + field839: String! +} + +type Object1460 { + field6784: [Object1450] + field6785: ID! +} + +type Object1461 { + field6787: [Object1462!]! + field6790: Object1417 + field6791: String + field6792: String +} + +type Object1462 { + field6788: String! + field6789: String! +} + +type Object1463 { + field6794: [Object1461!]! +} + +type Object1464 { + field6796: [Object1465!]! +} + +type Object1465 { + field6797: [Object1462!]! + field6798: [String!]! @deprecated + field6799: Interface27 +} + +type Object1466 { + field6801: Boolean +} + +type Object1467 { + field6803: Int! +} + +type Object1468 { + field6805: [ID!]! +} + +type Object1469 { + field6807: ID +} + +type Object147 implements Interface12 { + field161: Int + field183: String + field791: Object34 + field835: Object145! + field843: Object148 + field849: Object34 + field850: Object148 + field851: [Object149] + field883: Object153 + field887: Object154 +} + +type Object1470 { + field6809: Boolean +} + +type Object1471 { + field6813: [Object1465!]! +} + +type Object1472 { + field6825: [Object1446!] + field6826: Object308 +} + +type Object1473 { + field6830: Object312 +} + +type Object1474 { + field6832: [Object1450] + field6833: Object317 +} + +type Object1475 { + field6836: [Union43] +} + +type Object1476 { + field6837: [Object1477] +} + +type Object1477 { + field6838: String + field6839: String + field6840: Enum392 +} + +type Object1478 { + field6842: Object955 + field6843: [Object1477] +} + +type Object1479 { + field6845: Union2 + field6846: [Object1477] +} + +type Object148 { + field844: String + field845: String + field846: String + field847: String + field848: String +} + +type Object1480 { + field6848: Object125 + field6849: [Object1477] +} + +type Object1481 { + field6851: Union3 + field6852: [Object1477] +} + +type Object1482 { + field6854: Object104 + field6855: [Object1477] +} + +type Object1483 { + field6857: Object955 + field6858: [Object1477] +} + +type Object1484 { + field6860: Object1485 + field6875: [Object1477] +} + +type Object1485 implements Interface3 @Directive1(argument1 : "defaultValue339") @Directive1(argument1 : "defaultValue340") { + field1399: String + field1412: String + field15: ID! + field161: ID! + field163: Scalar1! + field165: Scalar1! + field4492: String! + field4523: String! + field6861: String + field6862: Int + field6863: Object1486 + field6871: [Object45!] + field6872: [Object3!] + field6873: Interface9 + field6874: String +} + +type Object1486 { + field6864: [Object1487] + field6870: Object16! +} + +type Object1487 { + field6865: String + field6866: Union44 +} + +type Object1488 { + field6867: ID! + field6868: Object88! +} + +type Object1489 { + field6869: Object1485 +} + +type Object149 implements Interface12 & Interface3 @Directive1(argument1 : "defaultValue98") @Directive1(argument1 : "defaultValue99") { + field15: ID! + field161: Int + field163: Scalar10! + field165: Scalar10! + field791: Object34 + field796: String + field843: Object148 + field849: Object34 + field850: Object148 + field852: Scalar10 @deprecated + field853: Scalar1 + field854: String @deprecated + field855: Object147! + field856: Object150 + field860: Scalar10 @deprecated + field861: Scalar1 + field862: String @deprecated + field863: Scalar1 + field864: Object151 + field869: Scalar1 + field870: Object152 + field876: Int + field877: Boolean + field878: String + field879: String + field880: Boolean + field881: Object34 + field882: Int +} + +type Object1490 { + field6877: Object126 + field6878: [Object1477] +} + +type Object1491 { + field6880: Object114 + field6881: [Object1477] +} + +type Object1492 { + field6883: Object88 + field6884: [Object1477] +} + +type Object1493 { + field6886: Interface11 + field6887: [Object1477] +} + +type Object1494 { + field6889: [Object1477] + field6890: Object235 +} + +type Object1495 { + field6892: Union4 + field6893: [Object1477] +} + +type Object1496 { + field6895: Object965 + field6896: [Object1477!] +} + +type Object1497 { + field6898: Object88 + field6899: [Object1477] +} + +type Object1498 { + field6901: Object88 + field6902: [Object1477] +} + +type Object1499 { + field6904: Object88 + field6905: [Object1477] +} + +type Object15 { + field50: String + field51: Interface5 +} + +type Object150 { + field857: Boolean + field858: Int + field859: String +} + +type Object1500 { + field6907: Object88 + field6908: [Object1477] +} + +type Object1501 { + field6910: [Object1477] +} + +type Object1502 { + field6912: Object88 + field6913: [Object1477] +} + +type Object1503 { + field6915: Object88 + field6916: [Object1477] +} + +type Object1504 { + field6918: [Object1477] +} + +type Object1505 { + field6920: Object88 + field6921: [Object1477] +} + +type Object1506 { + field6923: Object88 + field6924: [Object1477] +} + +type Object1507 { + field6926: Object88 + field6927: [Object1477] +} + +type Object1508 { + field6929: Object88 + field6930: [Object1477] +} + +type Object1509 { + field6932: [Union43] +} + +type Object151 { + field865: Int + field866: String + field867: Boolean + field868: String +} + +type Object1510 { + field6934: Union2 + field6935: [Object1477] +} + +type Object1511 { + field6937: Object125 + field6938: [Object1477] +} + +type Object1512 { + field6940: Union3 + field6941: [Object1477] +} + +type Object1513 { + field6943: Object104 + field6944: [Object1477] +} + +type Object1514 { + field6946: Object955 + field6947: [Object1477] +} + +type Object1515 { + field6949: Object959 + field6950: [Object1477!] +} + +type Object1516 { + field6952: Object126 + field6953: [Object1477] +} + +type Object1517 { + field6955: Object114 + field6956: [Object1477] +} + +type Object1518 { + field6958: Object88 + field6959: [Object1477] +} + +type Object1519 { + field6961: Union4 + field6962: [Object1477] +} + +type Object152 { + field871: String + field872: String + field873: String + field874: String + field875: String +} + +type Object1520 { + field6964: [Object1521!] + field7036: String + field7037: [Object1529!]! +} + +type Object1521 { + field6965: Enum395 + field6966: Object594 + field6967(argument1314: Enum52 = EnumValue499): String + field6968: Enum396 + field6969: [Object1522!] + field6985: String + field6986: Scalar1 + field6987: String + field6988: Boolean + field6989: String + field6990: Int + field6991: Enum397 + field6992: [Object1524!] + field7004: ID! + field7005: [String!] + field7006: [String] + field7007: Boolean! + field7008: Boolean + field7009: [String!] + field7010: Object1525 + field7013: [Object1526!] + field7017: [Object1527!] + field7021: [Enum398!] + field7022: String + field7023: Scalar1 + field7024(argument1315: Enum399!): [Object1528] + field7028: Boolean + field7029: Boolean + field7030: Enum400 @Directive9 + field7031: [Object88] + field7032: [Enum401!] + field7033: Enum402 + field7034: Scalar1 + field7035: String +} + +type Object1522 { + field6970: Object59! + field6971: String + field6972: [Object1523!] +} + +type Object1523 { + field6973: [String!] + field6974: Scalar1 + field6975: String + field6976: ID! + field6977: Boolean! + field6978: Boolean! + field6979: String! + field6980: String + field6981: Scalar1 + field6982: Int + field6983: Scalar1 + field6984: String +} + +type Object1524 { + field6993: Float + field6994: Float + field6995: Float + field6996: Scalar1 + field6997: String + field6998: ID + field6999: String + field7000: Scalar1 + field7001: String + field7002: Float + field7003: Float +} + +type Object1525 { + field7011: [Object1521] + field7012: ID! +} + +type Object1526 { + field7014: String + field7015: [Object1523!] + field7016: Object45! +} + +type Object1527 { + field7018: String + field7019: [Object1523!] + field7020: Object88! +} + +type Object1528 { + field7025: Object1521 + field7026: Enum399 + field7027: Object1521 +} + +type Object1529 { + field7038: Enum394! + field7039: String + field7040: ID! + field7041: Enum403! +} + +type Object153 { + field884: Boolean + field885: Int + field886: String +} + +type Object1530 { + field7046: [Interface72!] + field7047: [Interface71!] +} + +type Object1531 { + field7049: String + field7050(argument1325: Int, argument1326: Int): [Object1532] +} + +type Object1532 { + field7051: Boolean + field7052: Boolean + field7053: Int + field7054: Int + field7055: Boolean + field7056(argument1327: Int, argument1328: Int): [Enum59] +} + +type Object1533 { + field7062(argument1334: Int, argument1335: Int): [Object364] + field7063(argument1336: Int, argument1337: Int): [Object364] +} + +type Object1534 { + field7065: [Union45] + field7080: Object1555 +} + +type Object1535 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field7066: Object493 + field7067: Object1536 + field7070: Object1536 +} + +type Object1536 { + field7068: Object505 + field7069: Object504 +} + +type Object1537 implements Interface102 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 + field7074: Object1536 + field7075: Object1536 +} + +type Object1538 { + field7072: String + field7073: String +} + +type Object1539 implements Interface103 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7076: Interface33 +} + +type Object154 { + field888: Boolean + field889: Int + field890: String +} + +type Object1540 implements Interface104 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 +} + +type Object1541 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 +} + +type Object1542 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field7077: Object1536 + field7078: Object494 +} + +type Object1543 implements Interface102 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 + field7079: Object1536 +} + +type Object1544 implements Interface103 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 +} + +type Object1545 implements Interface103 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 +} + +type Object1546 implements Interface76 & Interface78 { + field4673: String + field4674: String +} + +type Object1547 implements Interface102 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 +} + +type Object1548 implements Interface104 & Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 +} + +type Object1549 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7076: Interface33 +} + +type Object155 { + field894: Object148 + field895: Int + field896: Object156 + field897: String + field898: Object156 + field899: Object148 +} + +type Object1550 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7076: Interface33 +} + +type Object1551 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 +} + +type Object1552 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field7076: Interface33 +} + +type Object1553 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field7067: Object1536 + field7070: Object1536 + field7076: Interface33 +} + +type Object1554 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7071: Object1538 +} + +type Object1555 { + field7081: Object514 + field7082: String + field7083: Object517 +} + +type Object1556 { + field7085: [Union46] + field7088: Object1560 +} + +type Object1557 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7086: Object589 +} + +type Object1558 implements Interface76 & Interface77 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 +} + +type Object1559 implements Interface76 & Interface78 { + field4673: String + field4674: String + field4675: Object1020 + field7087: String +} + +type Object156 implements Interface3 @Directive1(argument1 : "defaultValue100") @Directive1(argument1 : "defaultValue101") { + field15: ID! + field161: Int! + field183: String + field467: Boolean +} + +type Object1560 { + field7089: Object514 + field7090: [Interface35] + field7091: Object517 + field7092: [Object511!] + field7093: [Union47] +} + +type Object1561 { + field7095: [Union48] + field7096: Object1562 +} + +type Object1562 { + field7097: [Interface35] + field7098: [Object511!] + field7099: Object514 + field7100: [Union49] +} + +type Object1563 { + field7102: [Union50] + field7103: Object1564 +} + +type Object1564 { + field7104: Object514 + field7105: [Interface35] + field7106: Object517 + field7107: [Object511!] + field7108: [Union51] +} + +type Object1565 { + field7110: [Union52] + field7111: Object1566 +} + +type Object1566 { + field7112: [Interface35] + field7113: [Object511!] + field7114: Object514 + field7115: [Union53] +} + +type Object1567 { + field7117: [Union54] + field7118: Object1568 +} + +type Object1568 { + field7119: Object514 + field7120: [Interface35] + field7121: Object517 + field7122: [Object511!] + field7123: [Union55] +} + +type Object1569 { + field7125: [Union56] + field7126: Object1570 +} + +type Object157 implements Interface3 @Directive1(argument1 : "defaultValue102") @Directive1(argument1 : "defaultValue103") { + field15: ID! + field161: Int! + field183: String + field467: Boolean +} + +type Object1570 { + field7127: Object517 +} + +type Object1571 { + field7129: [Union57] + field7130: Object1572 +} + +type Object1572 { + field7131: [Interface35] + field7132: [Object511!] + field7133: Object514 + field7134: [Union58] +} + +type Object1573 { + field7152: [Object1521!] + field7153: [String] +} + +type Object1574 { + field7156: String! +} + +type Object1575 { + field7158: String! +} + +type Object1576 implements Interface3 @Directive1(argument1 : "defaultValue341") @Directive1(argument1 : "defaultValue342") { + field15: ID! + field204: Object45 + field260: ID! + field7163: [Object45] +} + +type Object1577 { + field7165: Object358 + field7166: [Object360] +} + +type Object1578 { + field7168: Object534 +} + +type Object1579 { + field7170: Object534 +} + +type Object158 { + field902: Object34 + field903: Object148 + field904: Object159 + field907: Int + field908: Object88 + field909: Object34 + field910: Object148 + field911: Object594 + field912: Object160 +} + +type Object1580 { + field7172: Object528 +} + +type Object1581 { + field7174: Object1582 +} + +type Object1582 { + field7175: Scalar10 + field7176: Union59! + field7188: Enum409! + field7189: [Object1587!] @deprecated + field7192: ID! + field7193: Scalar10 + field7194: Object534! + field7195: String! + field7196: [Object1588!] + field7202: [Object589!] + field7203: [Object34!] @deprecated + field7204: [Object1589!] +} + +type Object1583 { + field7177: Object1584! + field7183: Int! + field7184: Enum408! + field7185: Object1585! + field7186: Enum407! +} + +type Object1584 { + field7178: Scalar4 + field7179: Object1585! + field7182: Enum407! +} + +type Object1585 { + field7180: ID! + field7181: String +} + +type Object1586 { + field7187: Scalar4! +} + +type Object1587 { + field7190: String! + field7191: ID! +} + +type Object1588 { + field7197: String! + field7198: String! + field7199: ID! + field7200: String! + field7201: String! +} + +type Object1589 { + field7205: Object1587! + field7206: [Object34!] +} + +type Object159 { + field905: Int + field906: String +} + +type Object1590 { + field7208: Object1582 +} + +type Object1591 { + field7211: Object534 +} + +type Object1592 { + field7213: Object531 +} + +type Object1593 { + field7215: Object581 +} + +type Object1594 { + field7217: Object578 +} + +type Object1595 { + field7219: Object1596 +} + +type Object1596 { + field7220: Scalar10 + field7221: Object1597! + field7226: [Object1587!] + field7227: ID! + field7228: Object581! + field7229: String! + field7230: [Object1588!] +} + +type Object1597 { + field7222: Int! + field7223: Enum408! + field7224: Object1585! + field7225: Enum407! +} + +type Object1598 { + field7232: Object528 +} + +type Object1599 { + field7234: Object575 +} + +type Object16 { + field61: String + field62: Boolean! + field63: Boolean! + field64: String +} + +type Object160 implements Interface3 @Directive1(argument1 : "defaultValue104") @Directive1(argument1 : "defaultValue105") { + field15: ID! + field161: ID! + field183: String + field913: [Enum41] + field914: [Interface13] + field915: String +} + +type Object1600 { + field7236: Object584 +} + +type Object1601 { + field7238: ID +} + +type Object1602 { + field7240: ID +} + +type Object1603 { + field7242: ID +} + +type Object1604 { + field7244: ID +} + +type Object1605 { + field7246: ID +} + +type Object1606 { + field7248: [ID!] +} + +type Object1607 { + field7250: ID +} + +type Object1608 { + field7252: ID +} + +type Object1609 { + field7254: Object531 +} + +type Object161 implements Interface3 @Directive1(argument1 : "defaultValue106") @Directive1(argument1 : "defaultValue107") @Directive1(argument1 : "defaultValue108") { + field15: ID! + field835: Object145! + field918: Object162 + field935: Object167 + field946: Boolean! + field947: Object167 @deprecated +} + +type Object1610 { + field7256: Object531 +} + +type Object1611 { + field7258: Object534 +} + +type Object1612 { + field7260: [Object534!] +} + +type Object1613 { + field7262: [Object534!] +} + +type Object1614 { + field7264: Object575 +} + +type Object1615 { + field7266: Object575 +} + +type Object1616 { + field7268: [Object528!] +} + +type Object1617 { + field7270: Object534 +} + +type Object1618 { + field7272: Object531 +} + +type Object1619 { + field7274: Object581 +} + +type Object162 implements Interface14 & Interface3 @Directive1(argument1 : "defaultValue109") @Directive1(argument1 : "defaultValue110") @Directive1(argument1 : "defaultValue111") { + field15: ID! + field161: ID! + field164: String @deprecated + field166: String @deprecated + field791: Object164 + field806: String + field849: Object164 + field917: [Object161] @Directive7(argument4 : true) + field919: Object163 + field922: Scalar1 + field925: Scalar1 + field926: [Object165] + field930: Scalar1 + field931: String + field932: Object166 +} + +type Object1620 { + field7276: Object578 +} + +type Object1621 { + field7278: Object584 +} + +type Object1622 { + field7280: [Object584!] @deprecated + field7281: Object584 @deprecated + field7282: Object589 +} + +type Object1623 { + field7284: Object1582 +} + +type Object1624 { + field7287: Object534 +} + +type Object1625 { + field7289: Object531 +} + +type Object1626 { + field7291: Object581 +} + +type Object1627 { + field7293: Object578 +} + +type Object1628 { + field7295: Object1596 +} + +type Object1629 { + field7297: Object575 +} + +type Object163 { + field920: ID! + field921: String! +} + +type Object1630 { + field7299: Object584 +} + +type Object1631 { + field7301: ID +} + +type Object1632 { + field7303: Object1633 +} + +type Object1633 { + field7304: [Object1634!] + field7311: Scalar1 + field7312: [Object1636!] + field7317: Enum412 + field7318: [Object1637!] + field7325: Enum410 + field7326: ID! + field7327: Boolean + field7328: Object589 + field7329: Enum414 + field7330: String! + field7331: ID @deprecated + field7332: [Object1638!] + field7342: [Object1639!] + field7343: [Object1639!] + field7344: Scalar1 +} + +type Object1634 { + field7305: Union60 + field7309: ID! + field7310: Enum410! +} + +type Object1635 { + field7306: String! + field7307: ID! + field7308: String! +} + +type Object1636 { + field7313: ID! + field7314: String! + field7315: Enum411! + field7316: String! +} + +type Object1637 { + field7319: String + field7320: [Object1636!] + field7321: ID! + field7322: String! + field7323: Int + field7324: Enum413 +} + +type Object1638 { + field7333: Enum413! + field7334: ID! + field7335: Int + field7336: Object1639! +} + +type Object1639 { + field7337: Enum415! + field7338: ID + field7339: ID! + field7340: String! + field7341: Int! +} + +type Object164 { + field923: String! + field924: String! +} + +type Object1640 { + field7346: Object1633! +} + +type Object1641 { + field7348: Object1633! +} + +type Object1642 { + field7350: Object1633! +} + +type Object1643 { + field7352: Object1633! +} + +type Object1644 { + field7354: Object1633! +} + +type Object1645 { + field7356: Object371 +} + +type Object1646 { + field7358: [Object661!] +} + +type Object1647 { + field7359: ID! + field7360: [Object1648!] +} + +type Object1648 { + field7361: Boolean! + field7362: [Object667!] + field7363: Object1649 + field7382: ID! + field7383: Boolean! + field7384: String + field7385: Enum421! + field7386: [Object666!] + field7387: Int! +} + +type Object1649 { + field7364: Enum417 + field7365: Enum418 + field7366: Enum419 + field7367: Boolean + field7368: Boolean + field7369: [Object45!] + field7370: Object1650 + field7378: Int + field7379: Object6 + field7380: Scalar4 + field7381: Enum420 +} + +type Object165 { + field927: Boolean! + field928: String! + field929: String! +} + +type Object1650 { + field7371: Object1651 +} + +type Object1651 implements Interface3 @Directive1(argument1 : "defaultValue343") @Directive1(argument1 : "defaultValue344") { + field15: ID! + field161: ID! + field183: String + field185: Enum422 + field7372: [Scalar6] + field7373: [Object1652] + field7375: String + field7376: String + field7377: Scalar5 +} + +type Object1652 implements Interface3 @Directive1(argument1 : "defaultValue345") @Directive1(argument1 : "defaultValue346") { + field1489: Boolean + field15: ID! + field161: ID! + field183: String + field7374: Scalar6 +} + +type Object1653 { + field7389: [Object661!] +} + +type Object1654 { + field7390: ID! + field7391: [Object1655!] +} + +type Object1655 implements Interface3 @Directive1(argument1 : "defaultValue347") @Directive1(argument1 : "defaultValue348") { + field1132: Int + field15: ID! + field161: ID + field183: String + field7374: Scalar6 + field7392: Boolean + field7393: Enum423 + field7394: Enum424 + field7395: Int + field7396: Enum425 + field7397: String + field7398: Scalar5 + field7399: Enum426 + field7400: Object1656 + field7403: ID + field7404: Int + field7405: [Object1657] + field7419: Scalar4 + field7420: Boolean + field7421: Scalar4 + field7422: [ID!] + field7423: [Object1650] + field7424: [Object1658] + field7438: Enum434 + field7439: Enum435 + field7440: Scalar4 + field7441: [Object1661] + field7457: Boolean + field7458: Int + field7459: [Object1663] + field7462: Object1664 + field7465: Enum440 + field796: String + field835: Object145! + field838: Enum439! +} + +type Object1656 { + field7401: Scalar5 + field7402: Scalar5 +} + +type Object1657 { + field7406: Scalar5 + field7407: Scalar5 + field7408: Scalar5 + field7409: Enum427 + field7410: Enum428 + field7411: Enum429 + field7412: Enum430 + field7413: Scalar5 + field7414: Boolean + field7415: String + field7416: Scalar5 + field7417: Scalar5 + field7418: Scalar5 +} + +type Object1658 { + field7425: Enum431 + field7426: Scalar4 + field7427: Enum432 + field7428: [Object1659] + field7432: Int + field7433: Int + field7434: Object1660 + field7437: Enum433 +} + +type Object1659 { + field7429: Scalar5 + field7430: Int + field7431: Scalar5 +} + +type Object166 { + field933: ID! + field934: String! +} + +type Object1660 { + field7435: Int + field7436: Int +} + +type Object1661 { + field7442: Enum436 + field7443: Int + field7444: Boolean + field7445: Boolean + field7446: Int + field7447: Scalar5 + field7448: Scalar5 + field7449: Scalar5 + field7450: [Object1662] + field7455: Enum437 + field7456: Enum438 +} + +type Object1662 { + field7451: Scalar5 + field7452: Scalar5 + field7453: Boolean + field7454: Int +} + +type Object1663 { + field7460: Scalar4 + field7461: ID! +} + +type Object1664 { + field7463: Scalar4 + field7464: Scalar4 +} + +type Object1665 { + field7469: Int + field7470: Int + field7471: Int + field7472: Int + field7473: ID + field7474: String + field7475: ID! + field7476: Enum441 + field7477: Float + field7478: String + field7479: String + field7480: Int + field7481: Int + field7482: Enum442 + field7483: String + field7484: String + field7485: String + field7486: String + field7487: String + field7488: Int + field7489: Int + field7490: String + field7491: String + field7492: String + field7493: String + field7494: Int + field7495: Int + field7496: String +} + +type Object1666 { + field7499: Enum444! + field7500: Union64 +} + +type Object1667 { + field7501: String +} + +type Object1668 { + field7502: Scalar18! +} + +type Object1669 { + field7512: String + field7513: [Object1524] + field7514: [Object1670]! +} + +type Object167 { + field936: Object589 + field937: Object589 + field938: Scalar1 + field939: Object161! + field940: ID! + field941: String + field942: Int! + field943: Enum42! + field944: Object589 + field945: Scalar1 +} + +type Object1670 { + field7515: [Object1671]! + field7518: String! + field7519: ID! +} + +type Object1671 { + field7516: Enum445! + field7517: [String!] +} + +type Object1672 { + field7521: [Object1521] + field7522: String + field7523: [Object1670]! +} + +type Object1673 { + field7548: [Object1330] + field7549: Object326 +} + +type Object1674 { + field7551: [Object1314] + field7552: Object318! +} + +type Object1675 { + field7554: [Object1314] + field7555: Object318! +} + +type Object1676 { + field7561: ID + field7562: Object594 +} + +type Object1677 { + field7564: [Object1678!] + field7567: ID + field7568: String + field7569: [Object1679!] +} + +type Object1678 { + field7565: String + field7566: String +} + +type Object1679 { + field7570: String + field7571: String + field7572: Enum448 +} + +type Object168 implements Interface12 { + field161: Int! + field163: Scalar10! + field165: Scalar10! + field183: String + field791: Object34 + field839: String! + field843: Object148 + field849: Object34 + field850: Object148 +} + +type Object1680 { + field7578(argument1543: Int, argument1544: Int): [String] + field7579: Scalar8 + field7580: Object45 +} + +type Object1681 implements Interface83 & Interface85 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum311! + field4943: Object1128 + field4951: String! + field4952: String! + field4953: Object1682 + field4954: Object1129 + field7711: Object594 +} + +type Object1682 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum452! + field4952: String + field7587: String + field7588: Enum190! + field7589: Object1683 @deprecated + field7630: [Object589!] + field7631: String + field7632: Int! + field7633: Enum449! + field7634: Scalar5! + field7635: Object45 + field7636: [Object1688!] + field7648: [Object1691!] + field7665: Object1693 @deprecated + field7678: [Object589!] + field7679: [Object1694!] + field7683: [Object1121!] + field7684: Object1696 + field7710: String +} + +type Object1683 { + field7590: Scalar5! + field7591: Int! + field7592: Object1684! + field7601: Object1685! + field7607: Object1686! + field7615: Int! + field7616: Scalar5! + field7617: Object1687! + field7627: Scalar5! + field7628: Int! + field7629: Int! +} + +type Object1684 { + field7593: Int! + field7594: Int! + field7595: Int! + field7596: Int! + field7597: Int! + field7598: Int! + field7599: Int! + field7600: Int! +} + +type Object1685 { + field7602: Int! + field7603: Int! + field7604: Int! + field7605: Int! + field7606: Int! +} + +type Object1686 { + field7608: Scalar5! + field7609: Scalar5! + field7610: Int! + field7611: Int! + field7612: Int! + field7613: Int! + field7614: Int! +} + +type Object1687 { + field7618: Scalar5! + field7619: Scalar5! + field7620: Scalar5! + field7621: Int! + field7622: Int! + field7623: Int! + field7624: Int! + field7625: Int! + field7626: Int! +} + +type Object1688 { + field7637: Object1689! + field7639: Object1690! +} + +type Object1689 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4952: String + field7638: ID! +} + +type Object169 { + field950: Object152 + field951: Object170 + field954: Int + field955: Object34 + field956: Scalar10! +} + +type Object1690 implements Interface105 { + field7640: String + field7641: ID! + field7642: Enum450! + field7643: String + field7644: String! + field7645: String + field7646: String! + field7647: String! +} + +type Object1691 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4970: Object594! + field7649: Enum190! + field7650: Enum451! + field7651: Scalar5! + field7652: Scalar5! + field7653: Scalar5! + field7654: Scalar5! + field7655: Scalar5! + field7656: Scalar5 + field7657: Enum190! + field7658: Enum190! + field7659: Scalar5! + field7660: Object1692 +} + +type Object1692 { + field7661: ID! + field7662: String + field7663: [String!]! + field7664: Object594! +} + +type Object1693 { + field7666: Scalar5! + field7667: Int! + field7668: Object1684! + field7669: Object1685! + field7670: Object1686! + field7671: Int! + field7672: Int! + field7673: Int! + field7674: Scalar5! + field7675: Object1687! + field7676: Scalar5! + field7677: Int! +} + +type Object1694 { + field7680: Object1689! + field7681: Object1695! +} + +type Object1695 implements Interface105 { + field7640: String + field7641: ID! + field7642: Enum450! + field7643: String! + field7644: String! + field7645: String + field7646: String! + field7647: String! + field7682: String +} + +type Object1696 { + field7685: Object1697 + field7706: Object1701 +} + +type Object1697 { + field7686: Object1698 + field7689: Object1684 + field7690: Object1685 + field7691: Object1699 + field7699: Object1700 +} + +type Object1698 { + field7687: Int! + field7688: Int! +} + +type Object1699 { + field7692: Scalar5! + field7693: Scalar5! + field7694: Int! + field7695: Int! + field7696: Int! + field7697: Int! + field7698: Int! +} + +type Object17 { + field67: [Object18] + field78: Object20 + field82: Object18 + field83: String + field84: Object6 + field85: Object6 + field86: Object13 +} + +type Object170 { + field952: Int + field953: String +} + +type Object1700 { + field7700: Int! + field7701: Int! + field7702: Int! + field7703: Int! + field7704: Int! + field7705: Int! +} + +type Object1701 { + field7707: Scalar5! + field7708: Scalar5! + field7709: Scalar5! +} + +type Object1702 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum453! + field4951: String! + field4952: String + field7714: [Object1703!] + field7716: [Object1704!] + field7717: Object1684! + field7718: Object1705 + field7725: String +} + +type Object1703 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field7715: Object1694! +} + +type Object1704 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4932: Object1121! +} + +type Object1705 { + field7719: Scalar5! + field7720: Int! + field7721: Int! + field7722: Scalar5! + field7723: Scalar5! + field7724: Int! +} + +type Object1706 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum454! + field4951: String! + field4952: String + field4970: Object594! + field7734: [Object1123!] + field7735: Object1702 + field7736: Object1707 + field7741: Object1708 + field7757: Scalar5 + field7758: Scalar5 + field7759: Scalar5 + field7760: Scalar5 +} + +type Object1707 { + field7737: Scalar5 + field7738: Scalar5 + field7739: Scalar5 + field7740: Scalar5 +} + +type Object1708 { + field7742: Scalar5! + field7743: Scalar5! + field7744: Scalar5! + field7745: Scalar5! + field7746: Scalar5! + field7747: Int! + field7748: Int! + field7749: Scalar5! + field7750: Scalar5! + field7751: Scalar5! + field7752: Scalar5! + field7753: Scalar5! + field7754: Scalar5! + field7755: Scalar5! + field7756: Int! +} + +type Object1709 implements Interface86 { + field5004: [Object1139] + field5007: String + field5008: String + field7764: String +} + +type Object171 { + field959: Int! @deprecated + field960: [Int!]! + field961: Int! + field962: String +} + +type Object1710 implements Interface83 & Interface85 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4933: Enum311! + field4943: Object1128 + field4951: String! + field4952: String! + field4953: Object1682 + field4954: Object1129 + field4970: Object594 +} + +type Object1711 implements Interface83 { + field4898: Scalar1 + field4899: Object589 + field4900: String + field4901: Scalar1 + field4902: Object589 + field4903: String + field4907: ID! + field4970: Object594! + field7650: Enum451 + field7656: Scalar5 + field7657: Enum190 + field7658: Enum190! + field7791: String! + field7792: Enum190! + field7793: String! +} + +type Object1712 { + field7867: [String!] + field7868: [Object1713] +} + +type Object1713 { + field7869: String! + field7870: String! +} + +type Object1714 { + field7875: Object1715 +} + +type Object1715 { + field7876: Scalar1 + field7877: Object589 + field7878: Object6 + field7879: ID! + field7880: String + field7881: Object1716 + field7891: Enum455 + field7892: Int + field7893: Scalar1 + field7894: Object589 +} + +type Object1716 { + field7882: Int + field7883: Int + field7884: Int + field7885: String + field7886: ID! + field7887: String @Directive9 + field7888: Int + field7889: Int + field7890: Int +} + +type Object1717 { + field7896: Object1718 +} + +type Object1718 { + field7897: Scalar1 + field7898: Object589 + field7899: Scalar6 + field7900: String + field7901: ID! + field7902: Object326 + field7903: Enum456 + field7904: String + field7905: Scalar1 + field7906: Object589 + field7907: [Object1715] +} + +type Object1719 { + field7909: Int +} + +type Object172 { + field965: Object34 + field966: Object148 + field967: Object173! + field968: Int + field969: Object88 + field970: Object34 + field971: Object148 + field972: Object594 + field973: Object160 +} + +type Object1720 { + field7911: Int +} + +type Object1721 { + field7915: Object1066 + field7916: Object1070 + field7917: Object1073 + field7918: Object1077 +} + +type Object1722 { + field7920: ID + field7921: Object607 +} + +type Object1723 { + field7923: ID + field7924: Object608 +} + +type Object1724 { + field7926: ID + field7927: Object622 +} + +type Object1725 { + field7929: ID + field7930: Object622 + field7931: Object625 +} + +type Object1726 { + field7933: ID + field7934: Object612 +} + +type Object1727 { + field7936: [Object1728] + field7938: [ID] +} + +type Object1728 implements Interface3 @Directive1(argument1 : "defaultValue349") @Directive1(argument1 : "defaultValue350") { + field15: ID! + field161: ID + field183: String + field3055: Int + field7937: String + field838: Enum171 + field915: String +} + +type Object1729 { + field7941: Union16 + field7942: ID +} + +type Object173 implements Interface3 @Directive1(argument1 : "defaultValue112") @Directive1(argument1 : "defaultValue113") { + field15: ID! + field161: Int + field183: String + field467: Boolean +} + +type Object1730 { + field7944: Union16 + field7945: ID +} + +type Object1731 { + field7947: [ID!]! +} + +type Object1732 { + field7949: ID +} + +type Object1733 { + field7951: [ID] +} + +type Object1734 { + field7953: ID +} + +type Object1735 { + field7955: ID +} + +type Object1736 { + field7957: ID +} + +type Object1737 { + field7959: ID +} + +type Object1738 { + field7961: ID +} + +type Object1739 { + field7963: ID + field7964: ID +} + +type Object174 { + field975: Object175 + field976: Object176 + field980: Scalar10! + field981: Object34 + field982: Object148 + field983: Int + field984: Object45 + field985: Object88 + field986: Object177 + field988: Scalar10! + field989: Object34 + field990: Object148 +} + +type Object1740 { + field7966: [ID] +} + +type Object1741 { + field7968: Object595 + field7969: ID +} + +type Object1742 { + field7971: ID + field7972: Object607 +} + +type Object1743 { + field7974: ID + field7975: Object608 +} + +type Object1744 { + field7977: ID + field7978: Object622 +} + +type Object1745 { + field7980: ID + field7981: Object622 + field7982: Object625 +} + +type Object1746 { + field7984: ID + field7985: Object612 +} + +type Object1747 implements Interface106 { + field8005: String! + field8006: ID! +} + +type Object1748 { + field8007: ID! +} + +type Object1749 implements Interface106 { + field8005: String! + field8008: ID! +} + +type Object175 implements Interface3 @Directive1(argument1 : "defaultValue114") @Directive1(argument1 : "defaultValue115") { + field15: ID! + field161: Int + field183: String + field467: Boolean +} + +type Object1750 implements Interface106 { + field8005: String! +} + +type Object1751 implements Interface106 { + field8005: String! +} + +type Object1752 implements Interface106 { + field8005: String! + field8008: ID! +} + +type Object1753 { + field8015: ID! + field8016: ID! +} + +type Object1754 { + field8018: [ID!]! + field8019: [Union93!]! +} + +type Object1755 implements Interface106 { + field8005: String! +} + +type Object1756 { + field8027: String! +} + +type Object1757 { + field10126(argument2818: ID!): Object1633 @Directive9 + field10127(argument2819: InputObject1087): [Object1633!] @Directive9 + field10128(argument2820: String): String + field10129(argument2821: String): String + field10130(argument2822: String): String + field10131(argument2823: [String!]): Object2138! + field10133(argument2824: [Int!]): [Object45!] + field10134: [Object1655!] + field10135(argument2825: [ID!]!): [Object2139!] @Directive9 + field10139(argument2826: ID!): [Object1655!] + field10140(argument2827: [ID!]!): [Object1655!] + field10141(argument2828: ID!): [Object1648!] @Directive9 + field10142: Object2140 + field10185(argument2829: String, argument2830: Int, argument2831: InputObject1088, argument2832: Int, argument2833: InputObject1089, argument2834: Enum547): Object2152 + field10282(argument2835: ID!): Object138 + field10283(argument2836: ID!, argument2837: ID!): Object140 + field10284(argument2838: Int!, argument2839: ID!): Object232 + field10285(argument2840: [ID!]!): [Object143] + field10286(argument2841: Scalar18, argument2842: ID!): Object1107 @Directive9 + field10287: Object1107 @Directive9 + field10288(argument2843: [ID!]!): [Object138] + field10289(argument2844: Scalar18, argument2845: ID!): Object1107 @Directive9 + field10290(argument2846: Scalar8): Object59 + field10291(argument2847: String): Object66 + field10292(argument2848: Scalar8): Object2159 + field10307(argument2855: InputObject1091!): Object2162 + field10323(argument2856: InputObject1093!): Object2165 + field10328(argument2857: Int, argument2858: String!): Object2167 + field10334(argument2859: InputObject1095!): Object238 + field10335(argument2860: InputObject1095!): Object244 + field10336: Object238 + field10337(argument2861: InputObject306!): Boolean + field10338(argument2862: InputObject304!): Object1309! + field10339(argument2863: Int!, argument2864: Enum449!): Object1682 + field10340(argument2865: ID!, argument2866: ID): [Object1127!] + field10341(argument2867: ID!, argument2868: ID): [Object1127!] + field10342(argument2869: ID!): Object1685 + field10343(argument2870: ID!, argument2871: String): Object1685 + field10344(argument2872: ID!): Object1706 + field10345(argument2873: ID!, argument2874: String): Object1706 + field10346: Object2168 + field10368(argument2875: ID!): Object1702 + field10369(argument2876: ID!, argument2877: ID): Object1702 + field10370(argument2878: ID!): Object2169 + field10375(argument2879: ID!, argument2880: ID): Object2169 + field10376(argument2881: ID!): [Object2171!]! + field10379(argument2882: ID!, argument2883: ID): [Object2171!]! + field10380(argument2884: ID!): [Object1706!] + field10381(argument2885: ID!, argument2886: ID): [Object1706!] + field10382(argument2887: ID!): [Object1706!] + field10383(argument2888: ID!, argument2889: String): [Object1706!] + field10384(argument2890: ID!): Interface85 + field10385(argument2891: ID!, argument2892: String): Interface85 + field10386(argument2893: ID!): Object2172 + field10391(argument2894: ID!): Object2172 + field10392(argument2895: ID!, argument2896: String): Object2172 + field10393(argument2897: ID!, argument2898: String): Object2172 + field10394(argument2899: ID!): Object1131 + field10395(argument2900: ID!, argument2901: ID): Object1131 + field10396(argument2902: ID!, argument2903: ID): [Object2174!] + field10400(argument2904: ID!, argument2905: ID): Object2174 + field10401(argument2906: Int!, argument2907: Enum449!, argument2908: ID): Object1682 + field10402(argument2909: ID!): Object1682 + field10403(argument2910: ID!, argument2911: ID): Object1682 + field10404(argument2912: String, argument2913: Int, argument2914: Boolean): Object2175 + field10409(argument2915: String, argument2916: Int, argument2917: Boolean, argument2918: ID): Object2175 + field10410(argument2919: String, argument2920: Int, argument2921: ID!): Object2177 + field10415(argument2922: String, argument2923: Int!, argument2924: Enum449!, argument2925: Int): Object2179 + field10420(argument2926: String, argument2927: Int!, argument2928: Enum449!, argument2929: Int): Object2181 + field10425(argument2930: ID!): [Object1691!] + field10426(argument2931: ID!, argument2932: ID): Object1691 + field10427(argument2933: ID!): Object1121 + field10428(argument2934: ID!, argument2935: ID): Object1121 + field10429: Object2183 + field10439(argument2936: ID!, argument2937: ID!): Object1129 + field10440(argument2938: ID!, argument2939: ID!, argument2940: String): Object1129 + field10441(argument2941: ID!): Object1129 + field10442(argument2942: ID!, argument2943: String): Object1129 + field10443(argument2944: String, argument2945: Int, argument2946: ID!): Object2184 + field10448(argument2947: ID!): [Object1135!] + field10449(argument2948: ID!, argument2949: ID): [Object1135!] + field10450(argument2950: String, argument2951: Int, argument2952: ID!): Object2186 + field10455(argument2953: String, argument2954: Int, argument2955: ID!, argument2956: ID): Object2186 + field10456(argument2957: String, argument2958: Int, argument2959: ID!): Object2188 + field10473(argument2960: String, argument2961: Int, argument2962: ID!, argument2963: ID): Object2188 + field10474(argument2964: String): [Object1692] + field10475(argument2965: [String!]!, argument2966: ID!): Object1712 + field10476(argument2967: ID!): Object1711 + field10477: [Object1711!] + field10478(argument2968: Int, argument2969: Int = 25, argument2970: String): [Object1715] + field10479(argument2971: ID!): Object1718 + field10480(argument2972: String, argument2973: [ID], argument2974: Int = 26): Object2192 + field10485(argument2975: [ID!]): [Object627] + field10486(argument2976: [ID!]): [Object597] + field10487: [Object2194] + field10491(argument2977: ID!): Union103 @deprecated + field10494(argument2978: [ID!]): [Object601] + field10495(argument2979: [ID!]): [Object611] + field10496(argument2980: String, argument2981: Int, argument2982: InputObject1096!): Union104 + field10502(argument2983: [ID!]): [Object160] + field10503(argument2984: [ID!]): [Object614] + field10504(argument2985: [ID!]): [Union105] + field10505: [Object151] + field10506(argument2986: String!): [Object152] + field10507: [Object1652] + field10508: [Object2199] + field10513(argument2987: Enum422): [Object1651] + field10514(argument2988: ID!): Object1652 + field10515(argument2989: [ID!]!): [Object2200] + field10529(argument2990: ID!): Object2199 + field10530(argument2991: [ID!]!): [Object2199] + field10531(argument2992: String): [Object1651] + field10532(argument2993: ID!): Object1651 + field10533(argument2994: ID!): Object409 + field10534(argument2995: String, argument2996: InputObject13, argument2997: Int, argument2998: ID!, argument2999: [InputObject15]): Object407 + field10535(argument3000: ID!): ID + field10536(argument3001: String, argument3002: Int, argument3003: Enum127, argument3004: Enum119): Object423 + field10537(argument3005: ID!): Object45 + field10538(argument3006: String, argument3007: String, argument3008: Int, argument3009: Int, argument3010: Enum127): Object2202 + field10544(argument3011: ID!): Object415 + field10545(argument3012: String, argument3013: String, argument3014: Int, argument3015: Int, argument3016: Enum121, argument3017: Enum119, argument3018: ID!): Object413 + field10546(argument3019: ID!): Object425 + field10547(argument3020: ID!): Object2204 + field10553(argument3021: ID!): Object406 + field8036(argument1847: ID!): Object1758 + field8074: [Object1763] + field8077: [Object1764] + field8086: [Object188]! + field8087: [Object1766]! + field8090(argument1848: ID, argument1849: ID): [Object198] + field8091(argument1850: ID!, argument1851: ID!): [Object204] + field8092(argument1852: ID!): [Object201] + field8093: [Object190]! + field8094: [Object200] + field8095: [Object589!]! + field8096(argument1853: ID!): [Object192] + field8097: [Object191] + field8098: [Object207]! + field8099(argument1854: InputObject1004!, argument1855: ID!, argument1856: [InputObject1005!]): Object1767! + field8105(argument1857: [InputObject1006]!, argument1858: [ID!]!, argument1859: [InputObject1007!]!, argument1860: ID): [Object1769!] + field8110: [Object189] + field8111(argument1861: ID!, argument1862: ID!, argument1863: ID!): Int + field8112(argument1864: ID!): Object145 + field8113(argument1865: ID!, argument1866: ID!, argument1867: ID!): Object1770 + field8118(argument1868: ID!, argument1869: ID!): Object1771 + field8137(argument1870: ID!): Object1140 + field8138(argument1871: String!): Object1138 + field8139(argument1872: InputObject69): Object1776 + field8141(argument1873: ID!, argument1874: ID!): [Object1142] + field8142(argument1875: ID!, argument1876: ID): [Object1777] + field8147(argument1877: ID, argument1878: ID, argument1879: ID!, argument1880: ID!, argument1881: [InputObject1006]): [Object195] + field8148: [Object190]! + field8149(argument1882: ID!): [Object1141] + field8150(argument1883: ID!, argument1884: ID!): [Object1778] + field8153(argument1885: ID, argument1886: ID): [Object1779!] + field8166(argument1887: ID!, argument1888: ID!): [Object1782] + field8168(argument1889: String, argument1890: String, argument1891: ID!, argument1892: Int = 6, argument1893: Int): Object181 + field8169(argument1894: ID!, argument1895: ID!): [Object1783]! + field8174(argument1896: Int, argument1897: String): [Object1784] + field8219(argument1898: [ID!]): [Object1785] + field8227(argument1899: InputObject70!): Object1787 + field8229(argument1900: String, argument1901: Int, argument1902: Enum319): Object1788 + field8233: Object1789 + field8235(argument1903: ID!): Object1145 + field8236(argument1904: String!): Object1790 + field8238(argument1905: InputObject70!, argument1906: InputObject70!, argument1907: String!): Object1791 + field8240(argument1908: [InputObject70!]!): Object1792 + field8253(argument1909: InputObject70!): Object1797 + field8258: Object1799 + field8260(argument1910: InputObject70!, argument1911: String!): Object1800 + field8265(argument1912: InputObject70!, argument1913: String!): Object1801 + field8267(argument1914: String!): Object1802 + field8279(argument1915: InputObject70!): Object1808 + field8282(argument1916: [InputObject70!]!): Object1809 + field8286: [Object1811] + field8291: [Object228] + field8292: Object1812 + field8294(argument1919: InputObject31, argument1920: [InputObject32!]): Object724 + field8295(argument1921: InputObject31!, argument1922: [Enum224!], argument1923: Boolean = false, argument1924: [InputObject32!], argument1925: Int!, argument1926: Enum468!, argument1927: String): [Object1813] + field8315(argument1928: InputObject1008, argument1929: [InputObject32!]): Object1818 @Directive9 + field8326(argument1930: Int = 9, argument1931: String, argument1932: [InputObject32!], argument1933: InputObject1025!): Object1821 + field8331(argument1934: InputObject1026, argument1935: [InputObject32!]): [Object1823] + field8337(argument1936: [InputObject31!], argument1937: [Enum224!], argument1938: Boolean = false, argument1939: [InputObject32!], argument1940: Int!, argument1941: Enum468!): [Object1813] + field8338(argument1942: InputObject31!, argument1943: String!, argument1944: [InputObject32!]): [Interface52] + field8339(argument1945: InputObject31!, argument1946: [InputObject32!]): Interface52 @Directive9 + field8340(argument1947: Int = 10, argument1948: String, argument1949: [InputObject32!], argument1950: InputObject1025!): Object1818 @Directive9 + field8341(argument1951: String!, argument1952: String): Object1160 + field8342(argument1953: InputObject1027, argument1954: InputObject78!, argument1955: String, argument1956: Int!): Object1825 + field8348(argument1957: ID!): Object1165 + field8349(argument1958: [String!]!): Object1828 + field8352(argument1959: InputObject1028, argument1960: [String!]): Object1829 + field8355(argument1961: ID!, argument1962: ID!): Object1830 + field8358(argument1963: InputObject1029, argument1964: [String!]): Object1187 + field8359(argument1965: InputObject1030!): Object1831 + field8367(argument1966: [InputObject1031!]!): [Object1200] + field8368(argument1967: InputObject102, argument1968: ID!): [Object1200] @deprecated + field8369(argument1969: String, argument1970: InputObject102, argument1971: Int, argument1972: ID!): Object1198 + field8370(argument1973: ID!, argument1974: Int!): Object1219 + field8371(argument1975: ID!): Object685 @Directive9 + field8372: Object1833 + field8381(argument1976: ID!): Object688 @Directive9 + field8382(argument1977: ID!): Object697 @Directive9 + field8383(argument1978: String, argument1979: Int, argument1980: InputObject1032): Object1836 + field8389(argument1981: ID!): Object1838 + field8394(argument1982: ID!): Object1192 + field8395(argument1983: [ID!]): [Object1192] + field8396(argument1984: ID): Object1191 + field8397(argument1985: ID): Object1204 + field8398: [Object1204!]! + field8399(argument1986: ID!): [Object1191!]! + field8400(argument1987: String, argument1988: Int): Object1839! @Directive9 + field8406(argument1989: Enum476!): [Object589] + field8407(argument1990: String): [Object617!]! @Directive9 + field8408: [Object1344!]! @Directive9 + field8409(argument1991: ID!): Object590 + field8410(argument1992: InputObject1033!): Object1842 + field8416: [Object712!] + field8417: [Object717!] + field8418(argument1993: [InputObject135!]!): [Object724!] + field8419(argument1994: InputObject135!): Object724! + field8420(argument1995: [String!]): [Object712!] + field8421: Object1844 + field8425(argument1996: ID!): Interface49! + field8426(argument1997: [ID!]): [Interface49!] + field8427(argument1998: String!): Object719! + field8428(argument1999: [String!]): [Object719!] + field8429(argument2000: [InputObject133!]): [Object717!] + field8430(argument2001: String!): String! + field8431(argument2002: Scalar2, argument2003: Scalar2, argument2004: ID, argument2005: ID, argument2006: Scalar12): Object4 + field8432(argument2007: Scalar2, argument2008: Scalar12): [Object4] + field8433(argument2009: Scalar2, argument2010: String!, argument2011: Scalar12): Object1084 + field8434: Object1845 + field8437(argument2012: String, argument2013: Scalar2, argument2014: String, argument2015: Int, argument2016: Int, argument2017: Scalar12): Object1846 + field8442(argument2018: ID!): [Object1760] + field8443(argument2019: String): Object1811 + field8444(argument2020: [String]): [Object1811] + field8445: [Object41!] + field8446(argument2021: [ID!]!): [Object41] + field8447(argument2022: [String!]!): [Object41] + field8448(argument2023: String, argument2024: String): Interface57 + field8449(argument2025: String): [Object1848] + field8459(argument2026: String, argument2027: String = "defaultValue359", argument2028: String): Object794 + field8460: [Object1849!] + field8463(argument2029: String): Object770 + field8464: [String!]! + field8465(argument2030: String): Interface60 + field8466(argument2031: Int, argument2032: String): Object1850 + field8470: Object1851! + field8478(argument2033: InputObject1034): [Object1853] + field8480(argument2034: InputObject1035): [Object1855] + field8490(argument2035: ID!): Object1856 + field8499: [Object1244!] + field8500(argument2036: Int!, argument2037: ID!, argument2038: Int!): Object1857! + field8518(argument2039: Int!, argument2040: Int!): Object1857! + field8519(argument2041: ID!): [Object1244] + field8520(argument2042: [ID!]): [Object1860] + field8523(argument2043: String, argument2044: Int = 11, argument2045: InputObject1036): Object1861! + field8530(argument2046: InputObject206!): Object1251 + field8531(argument2047: ID, argument2048: String!, argument2049: [String!]!, argument2050: Int): Object1864 + field8536(argument2051: ID, argument2052: String!, argument2053: Int, argument2054: String): Object1864 + field8537(argument2055: ID, argument2056: String!, argument2057: Int): Object1864 + field8538(argument2058: InputObject206!, argument2059: ID!, argument2060: ID, argument2061: ID): Object1254 + field8539(argument2062: ID, argument2063: String, argument2064: Int): Object1864 @Directive9 + field8540(argument2065: Scalar14, argument2066: Scalar12): [Interface61!] + field8541(argument2067: Scalar14, argument2068: ID!, argument2069: Scalar12): Interface61 + field8542(argument2070: Scalar14, argument2071: ID!, argument2072: Scalar12): Object1866 + field8553(argument2073: Scalar14, argument2074: ID!, argument2075: ID!, argument2076: Scalar12): Object1870 + field8558(argument2077: Scalar14, argument2078: Scalar12): Object1872 + field8561(argument2079: [Int!]!): [Object1873] + field8564: [Object39!] + field8565(argument2080: [ID!]!): [Object39] + field8566(argument2081: [String!]!): [Object39] + field8567(argument2082: [ID!]): [Object162] + field8568: Object1272! + field8569: Object1874 + field8574(argument2097: ID!, argument2098: Int): Object1875 + field8577: Object633 + field8578: [Object1876] + field8586: [Object71] + field8587: [Object1878] + field8592(argument2099: ID!): Object71 + field8593(argument2100: [String]): [Object1879] + field8597(argument2101: String!, argument2102: Enum485!, argument2103: Int!): Object1880 + field8599(argument2104: ID!): Object1881 + field8602(argument2105: String): Object633 + field8603(argument2106: Int, argument2107: String): [Object633] + field8604(argument2108: String, argument2109: Int!, argument2110: [Int], argument2111: [String], argument2112: Enum486, argument2113: Enum487): Object1882 + field8608(argument2114: Int, argument2115: String): [Object633] + field8609(argument2116: ID!): Interface107 + field8610(argument2117: ID!): Object1883 + field8617(argument2118: String, argument2119: ID!, argument2120: Enum488): Object1885 + field8626(argument2121: ID!, argument2122: Enum106!, argument2123: Enum107): [Object1888] @Directive9 + field8631: [Object392] @Directive9 + field8632(argument2124: ID!): Object392 @Directive9 + field8633(argument2125: [String!]): [Object1889]! + field8647(argument2126: [String!]!): [Interface62!] + field8648(argument2127: [Int!]): [Interface62!] + field8649(argument2128: [String!]): [Object1321!] + field8650(argument2129: InputObject1037): Object1891 + field8653(argument2130: InputObject1038!): [Object1321!]! + field8654(argument2131: InputObject341!): Boolean + field8655(argument2132: InputObject343!): Boolean + field8656(argument2133: InputObject334!): Object1324! + field8657(argument2134: [InputObject334!]!): Object1893! + field8660(argument2135: InputObject345!): Boolean + field8661(argument2136: InputObject347!): Boolean + field8662(argument2137: Int): Object145 @Directive7(argument4 : true) + field8663: [Object175] + field8664: [Object157] + field8665: [Object176] + field8666(argument2138: String, argument2139: Int): Object1894! @Directive9 + field8672: [Object149!]! @Directive9 + field8673: [Object150] + field8674: [Object153] + field8675: [Object154] + field8676: [Object159] + field8677: [Object170] + field8678(argument2140: Int): [Object171] + field8679: [Object179] + field8680: [Object173] + field8681(argument2141: Int, argument2142: Int): Object184 @Directive7(argument4 : true) + field8682: [Object1896] + field8685: [Object209] + field8686: [Object1896] + field8687: [Object156] + field8688: [Object237] + field8689: [Object210] @Directive7(argument4 : true) + field8690: [Object212] + field8691: [Object213] + field8692: [Object215] + field8693: [Object1896] + field8694(argument2143: [Int]): [Object145] @Directive7(argument4 : true) + field8695(argument2144: InputObject1039): [Object145] @Directive9 + field8696(argument2145: ID!): Object1897 + field8723: Object1900 + field8733(argument2152: [InputObject1040!]!): [Object1903!] + field8740: Object1332 + field8741(argument2153: Enum352!, argument2154: Int!, argument2155: [String!]): [Object1521!] + field8742(argument2156: Enum495!): [Interface34] + field8743(argument2157: String, argument2158: Enum352!, argument2159: [Int!]!, argument2160: InputObject1041, argument2161: Int, argument2162: Enum497, argument2163: Enum498): Object1904 + field8805(argument2164: Enum352!, argument2165: [String], argument2166: Int!, argument2167: ID!, argument2168: String!, argument2169: String): Object1521 + field8806(argument2170: Enum352!, argument2171: [Int!]!): [Object1912]! + field8810(argument2172: Enum352!, argument2173: [Int!]!): [Object1913]! + field8815(argument2174: Enum352!, argument2175: [Int!]!): [Object1914]! + field8819(argument2176: [InputObject1042!]!): [Object1915!]! + field8827(argument2177: Enum352!, argument2178: [String!]): [Object1916]! + field8844(argument2179: String, argument2180: Enum352, argument2181: Int): Object1919 + field8849(argument2182: String): Object610 + field8850: Object589 + field8851(argument2183: [Int!]!): [Object1921]! + field8854: [Object1922] + field8857(argument2184: String): Object1922 + field8858: [Object1923] + field8861(argument2185: String, argument2186: String!): [Object1924] + field8868(argument2187: String, argument2188: String!, argument2189: String!): Object1924 + field8869(argument2190: String!, argument2191: String!, argument2192: Enum353!): Object1925 + field8872(argument2193: String!, argument2194: String, argument2195: Enum353!): Object1926 + field8876(argument2196: [String!], argument2197: String!, argument2198: Enum353!): [Object1927] + field8879(argument2199: ID!): Object88 @deprecated + field8880(argument2200: Int): [Object1928!] + field8888(argument2201: String!): [Object326] @Directive9 + field8889(argument2202: String!): [Object335] @Directive9 + field8890(argument2203: String!): Object1930 + field8894(argument2204: String): Object589 @deprecated + field8895(argument2205: String): Object589 + field8896(argument2206: [String]): [Object589] + field8897(argument2207: String, argument2208: String, argument2209: Scalar1!, argument2210: Int, argument2211: Int, argument2212: Scalar1!, argument2213: [String!]!): Object1931 + field8902(argument2214: [String]): [Object34] + field8903(argument2215: String): String + field8904(argument2216: String): String + field8905(argument2217: String = "defaultValue368"): String @Directive9 + field8906(argument2218: String): String + field8907: String @deprecated + field8908: Object1933 + field8912(argument2221: String, argument2222: Scalar8): Object48 + field8913(argument2223: Int): [Object1935] @Directive9 + field8916(argument2226: Scalar8): Object262 + field8917(argument2227: ID!, argument2228: Int): Interface65 + field8918(argument2229: String, argument2230: String, argument2231: Int): Object1936 + field8923(argument2232: String, argument2233: Int, argument2234: InputObject1043!): Object1936 + field8924(argument2235: ID!): Object1938 @Directive9 + field8942(argument2236: ID!): Object1899 @deprecated + field8943(argument2237: ID!, argument2238: Enum500): Object1940 + field8950: [Object1116] @Directive9 + field8951(argument2239: ID!): Object1116 @Directive9 + field8952: Object1942 + field8954(argument2241: [ID!]!): [Object615!]! @Directive9 + field8955(argument2242: ID!): Object1943 @Directive9 + field8986(argument2243: ID!): Object1952 @Directive9 + field8990(argument2244: ID!, argument2245: Int): Object1953 @Directive9 + field9005(argument2246: InputObject1045!): [Object1956!] @Directive9 + field9061(argument2247: InputObject1046!): [Object1965!] @Directive9 + field9068(argument2248: InputObject1047!): [Object1966!] @Directive9 + field9072(argument2249: ID!): Object1967 @Directive9 + field9076(argument2250: ID!): Object1954 @Directive9 + field9077(argument2251: ID!): Object1968 @Directive9 + field9082(argument2252: InputObject1048!): [Object1963!] @Directive9 + field9083(argument2253: [String!]): [Object1963!] @Directive9 + field9084(argument2254: [String!]): [Object1963!] @Directive9 + field9085: [Object594!]! @Directive9 + field9086(argument2255: ID!): Object1969 @Directive9 + field9087(argument2256: ID!): Object1970 @Directive9 + field9088(argument2257: ID!): Object1347 + field9089: Object1971! + field9097(argument2258: [ID!]!): [Object1347!]! + field9098(argument2259: InputObject1049!): [Object1347!]! + field9099(argument2260: ID!): Object1972 @deprecated + field9109(argument2261: ID!, argument2262: Int): Object1974 @Directive9 + field9133(argument2265: ID!, argument2266: Int): Object1979 @Directive9 + field9172(argument2271: ID!): Object1981 @Directive9 + field9173(argument2272: ID!): Object1982 @Directive9 + field9174(argument2273: ID!): Object1975 @Directive9 + field9175(argument2274: ID!): Object1978 @Directive9 + field9176(argument2275: ID!, argument2276: Int): Object1988 @Directive9 + field9208(argument2279: ID!): Object1957 @Directive9 + field9209(argument2280: ID!): Object1973 @Directive9 + field9210(argument2281: String, argument2282: [ID], argument2283: Int, argument2284: String): Object1994 @Directive9 + field9215(argument2285: String, argument2286: [ID], argument2287: Int, argument2288: String): Object1996 @Directive9 + field9220(argument2289: String, argument2290: [ID], argument2291: Int, argument2292: String): Object1998 @Directive9 + field9225(argument2293: String, argument2294: [ID], argument2295: Int, argument2296: String): Object2000 @Directive9 + field9230(argument2297: String, argument2298: [ID], argument2299: Int, argument2300: String): Object2002 @Directive9 + field9235(argument2301: String, argument2302: [ID], argument2303: Int, argument2304: String): Object2004 @Directive9 + field9240(argument2305: String, argument2306: [ID], argument2307: Int, argument2308: String): Object2006 @Directive9 + field9245(argument2309: String, argument2310: [ID], argument2311: Int, argument2312: String): Object2008 @Directive9 + field9250(argument2313: String, argument2314: [ID], argument2315: Int, argument2316: String): Object1985 @Directive9 + field9251(argument2317: String, argument2318: [ID], argument2319: Int, argument2320: String): Object1989 @Directive9 + field9252(argument2321: String, argument2322: [ID], argument2323: Int, argument2324: String): Object1983 @Directive9 + field9253(argument2325: String, argument2326: [ID], argument2327: Int, argument2328: String): Object2010 @Directive9 + field9258(argument2329: String, argument2330: [ID], argument2331: Int, argument2332: String): Object2012 @Directive9 + field9263(argument2333: String, argument2334: [ID], argument2335: Int, argument2336: String): Object1976 @Directive9 + field9264(argument2337: String, argument2338: [ID], argument2339: Int, argument2340: String): Object2014 @Directive9 + field9269(argument2341: String, argument2342: [ID], argument2343: Int, argument2344: String): Object2016 @Directive9 + field9274(argument2345: String, argument2346: [ID], argument2347: Int, argument2348: String): Object2018 @Directive9 + field9279(argument2349: String, argument2350: [ID], argument2351: Int, argument2352: String): Object2021 @Directive9 + field9284(argument2353: ID!): Object2020 @Directive9 + field9285(argument2354: ID!): Object2023 @Directive9 + field9286(argument2355: [Int!]!): [Object2024] + field9293(argument2356: Int, argument2357: [Int], argument2358: Int): [Object45] @Directive7(argument4 : true) + field9294(argument2359: InputObject1050): [Object45]! + field9295(argument2360: [InputObject47!]!): [Object724!] @deprecated + field9296(argument2361: [ID!]!): [Object45!] + field9297(argument2362: InputObject47!): Object724! + field9298(argument2363: ID!): Object45! + field9299: Object2025 + field9303(argument2372: Scalar8): Object269 + field9304: Object2026 + field9309: Object2027 + field9311(argument2381: String, argument2382: String): Interface56 + field9312(argument2383: ID!): Object1379 + field9313: [Object923!]! + field9314(argument2384: ID): Object913 + field9315(argument2385: ID!): [Interface68!]! + field9316(argument2386: ID): [Object922!]! + field9317: [Object913!]! + field9318(argument2387: String): [Object2028!]! + field9322(argument2388: ID!): [Object1388!]! + field9323(argument2389: ID, argument2390: String): [Object922!]! + field9324(argument2391: String): [Object928!]! + field9325(argument2392: ID): Object928 + field9326(argument2393: ID!): Object922 + field9327(argument2394: ID): [Object922!]! + field9328(argument2395: String): [Object2028!]! + field9329(argument2396: String): [Object2028!]! + field9330: [Object928!]! + field9331(argument2397: ID, argument2398: String): Object942 + field9332(argument2399: ID!): [Object913!]! + field9333(argument2400: ID!): [Object926!]! + field9334(argument2401: ID!): [Object913!]! + field9335(argument2402: String): [Object942!]! + field9336(argument2403: ID!): [Object942!]! + field9337(argument2404: String): [Object2028!]! + field9338: Object2029! + field9342: [Object1378!]! + field9343(argument2405: String, argument2406: Int!, argument2407: InputObject1051!): Object2030! + field9350(argument2408: String): [String!]! + field9351(argument2409: String, argument2410: Int!, argument2411: String): Object2032 + field9356(argument2412: String, argument2413: Int!, argument2414: Enum517, argument2415: String): Object2032 + field9357(argument2416: String): [String!]! + field9358(argument2417: String): [String!]! + field9359(argument2418: String, argument2419: Int, argument2420: String): Object2032 + field9360(argument2421: Enum514, argument2422: String): [Object2034!]! + field9363(argument2423: String): [Object926!]! + field9364(argument2424: String): [Object2028!]! + field9365: [Object2028!]! + field9366(argument2425: String): Object926 + field9367(argument2426: String): [Object1389!]! + field9368: [Object2028!]! + field9369(argument2427: String, argument2428: String, argument2429: String, argument2430: Int = 16, argument2431: String!, argument2432: String, argument2433: String): [Object2035] @Directive9 + field9383(argument2434: ID!): Interface3 + field9384(argument2435: ID!): Object2037 + field9386(argument2436: ID!): Interface20 + field9387(argument2437: String!): [Object2038] + field9424(argument2438: ID!): Object2039 + field9448(argument2441: Enum520, argument2442: String!): [Object2039] + field9449(argument2443: ID!): [Object2041] + field9491(argument2444: String!): [Object2041] + field9492(argument2445: String!): [Object2042] + field9516(argument2446: ID!): [Object2043] + field9559(argument2447: String!): [Object2043] + field9560(argument2448: ID!, argument2449: Boolean): Object88 + field9561(argument2450: [ID!]!, argument2451: Boolean): [Object88] + field9562: String @Directive9 + field9563(argument2452: ID!): Object1759 + field9564: [Object1409!]! + field9565(argument2453: String!): [Object1402!]! + field9566(argument2454: String!): [Object1402!]! + field9567(argument2455: String!, argument2456: Int!): Object1402! + field9568(argument2457: String!): Object1402! + field9569(argument2458: String!): Object1402! + field9570(argument2459: [ID!]!): [Object1401!]! + field9571(argument2460: ID): Object1409! + field9572(argument2461: ID): Object2044! + field9576: [Object2045!] + field9579(argument2462: Enum522!, argument2463: String, argument2464: Int = 17, argument2465: String!, argument2466: String!): Object2046 + field9585(argument2467: ID!): Interface28 + field9586(argument2468: [ID!]!): [Interface28]! + field9587: [Object3!]! + field9588(argument2469: Int!): Object279 + field9589(argument2470: Int!): Object293 + field9590(argument2471: Int!): Object300 + field9591(argument2472: Int!): Object341 + field9592(argument2473: Int!): Object344 + field9593(argument2474: Int!): Object286 + field9594(argument2475: Int!): Object283 + field9595(argument2476: ID): Object1412 + field9596(argument2477: Int, argument2478: String): [Object1422] + field9597(argument2479: String, argument2480: String, argument2481: Int = 18, argument2482: Int, argument2483: Int, argument2484: InputObject10 = {inputField20 : EnumValue573, inputField19 : EnumValue571}, argument2485: String, argument2486: String): Object2048 + field9603(argument2487: String, argument2488: String, argument2489: Int = 19, argument2490: Int, argument2491: Int!, argument2492: InputObject10 = {inputField20 : EnumValue573, inputField19 : EnumValue571}, argument2493: String): Object303 + field9604: Object1423 @Directive7(argument4 : true) + field9605(argument2494: String, argument2495: String, argument2496: Int = 20, argument2497: Int): Object2050 + field9614(argument2498: String, argument2499: String, argument2500: String, argument2501: Int = 21, argument2502: Int): Object2053 + field9629(argument2503: InputObject1053!): Object311 @deprecated + field9630(argument2504: InputObject1054!): Object312 @deprecated + field9631(argument2505: String, argument2506: String, argument2507: Int = 22, argument2508: InputObject1055!, argument2509: Int): Object2056 + field9645: [ID!]! @deprecated + field9646(argument2510: [ID!]!): [Object317] @Directive7(argument4 : true) + field9647(argument2511: [ID!]!, argument2512: String!): Object2059 + field9652(argument2513: String!): [Object2061] + field9655(argument2514: ID!): Object2039 + field9656(argument2515: Boolean = false, argument2516: String!, argument2517: [Enum162!]): Object3 + field9657(argument2518: [ID!]): [Object501]! + field9658(argument2519: [ID!]): [Object500]! + field9659(argument2520: [ID!]!): [Object499]! + field9660(argument2521: [ID!], argument2522: [String!]): [Object1242]! + field9661(argument2523: [ID!]!): [Object2062]! + field9663(argument2524: [ID!]): [Object2063]! @Directive9 + field9666(argument2525: [ID!]): [Object36]! + field9667(argument2526: [ID!]!): [Object35]! + field9668(argument2527: [ID!]): [Object37]! + field9669(argument2528: Boolean = false, argument2529: [String!], argument2530: [Enum162!]): [Object3]! + field9670: [Object3]! @Directive9 + field9671(argument2531: [ID!]!): [Union2] + field9672: [Object91!] + field9673(argument2532: [ID!]!): [Union3] + field9674: Object2064 + field9695(argument2533: ID!, argument2534: Int): Object955 @deprecated + field9696(argument2535: String, argument2536: InputObject1057, argument2537: Int, argument2538: [Enum527!]!): Object2069 + field9701(argument2539: ID!): Object955 + field9702(argument2540: [ID!]!): [Interface70] + field9703(argument2541: ID!): Object1485 @Directive9 + field9704(argument2542: InputObject1058): Object241 + field9705(argument2543: [ID!]!): [Object114] + field9706: [Object120!] + field9707(argument2544: [ID!]!): [Union4] + field9708(argument2545: String, argument2546: Int, argument2547: InputObject1059): Object2071 + field9713(argument2548: InputObject1060!): [Object119!] + field9714(argument2549: String, argument2550: Int, argument2551: InputObject1061, argument2552: Int): Object2073 + field9720(argument2553: [ID!]!): [Object126] + field9721(argument2554: [ID!]!): [Object136] + field9722: Object2075 + field9729(argument2556: [ID!]): [Union100] + field9730: Object253 + field9731: [Enum529!] @Directive9 + field9732: [Enum262!] @Directive9 + field9733: [Object993!] + field9734: [Enum42!] @Directive9 + field9735(argument2557: InputObject1067): Object2079 + field9738(argument2558: InputObject1068): Object2080 + field9741(argument2559: InputObject1069): [Object996!] @Directive9 + field9742(argument2560: InputObject1070): [Object167] @Directive9 + field9743(argument2561: [ID]): Object2081 + field9749(argument2562: [ID]!): Object502 + field9750: Object2083 + field9753(argument2563: [ID!]!): [Object326] + field9754(argument2564: InputObject1072): Object2084 @Directive9 + field9776(argument2565: String, argument2566: Enum533!, argument2567: Enum534 = EnumValue3032, argument2568: Int!, argument2569: Int!, argument2570: String, argument2571: [String!]): Object2089! + field9782(argument2572: String!, argument2573: String, argument2574: String, argument2575: String!, argument2576: String, argument2577: Enum533!, argument2578: Enum534 = EnumValue3032, argument2579: String): [Object2090!] + field9793(argument2580: Enum533!, argument2581: Enum534 = EnumValue3032): [Object2092!]! @deprecated + field9801(argument2582: String, argument2583: Enum533!, argument2584: Enum534 = EnumValue3032, argument2585: String, argument2586: [InputObject1073] = []): Object2093! + field9838(argument2587: String!, argument2588: Enum533!, argument2589: Enum534 = EnumValue3032): [Object2090!] @deprecated + field9839(argument2590: String, argument2591: [ID], argument2592: Int, argument2593: String): Object2094 @Directive9 + field9844(argument2594: InputObject1074): [Object326] @Directive9 + field9845(argument2595: String, argument2596: [ID], argument2597: Int, argument2598: String): Object2096 @deprecated + field9854(argument2599: String, argument2600: Enum533!, argument2601: Enum534 = EnumValue3032, argument2602: String!): [Object2099!] + field9857: Object2100 + field9860(argument2610: String, argument2611: Int = 23, argument2612: InputObject1075 = {inputField4796 : EnumValue3052}): Object2101 + field9866(argument2613: String, argument2614: Int = 24, argument2615: InputObject1075 = {inputField4796 : EnumValue3052}): Object2103 + field9872: [Object145] + field9873(argument2616: Int!, argument2617: ID!): [Object145] + field9874(argument2618: ID!): Object352 + field9875: [Object2105] + field9879(argument2619: [ID!]!): [Object144] + field9880(argument2620: Scalar8): Object255 + field9881(argument2621: Int, argument2622: String, argument2623: Int, argument2624: String): Object2106 + field9898(argument2625: ID!): Object2098 @deprecated + field9899: [Object42!] + field9900(argument2626: [ID!]!): [Object42] + field9901(argument2627: [String!]!): [Object42] + field9902(argument2628: [Int!]): [Object2108]! + field9908(argument2629: [Int!]): [Object32]! + field9909(argument2630: Scalar8): Object356 + field9910(argument2631: String, argument2632: String, argument2633: Int, argument2634: InputObject1078!, argument2635: Int): Object2109! + field9915(argument2636: InputObject1079!): [Enum166!] + field9916(argument2637: String, argument2638: String, argument2639: Int, argument2640: InputObject1080!, argument2641: Int): Object529! @Directive9 + field9917(argument2642: ID!): Object534 + field9918(argument2643: ID!): Object531 + field9919(argument2644: String, argument2645: String, argument2646: Int, argument2647: InputObject1081!, argument2648: Int): Object2111! + field9924(argument2649: String, argument2650: String, argument2651: Int, argument2652: InputObject1082!, argument2653: Int): Object2113! + field9929(argument2654: ID!): Object581 + field9930(argument2655: ID!): Object578 + field9931(argument2656: String, argument2657: String, argument2658: Int, argument2659: InputObject1083!, argument2660: Int): Object2115! + field9938(argument2661: String, argument2662: String, argument2663: Int, argument2664: InputObject1084!, argument2665: Int): Object2118! + field9943(argument2666: ID!): Object528 + field9944(argument2667: ID!): Object575 + field9945(argument2668: String, argument2669: String, argument2670: Int, argument2671: InputObject1085!, argument2672: Int): Object2120! + field9950(argument2673: String, argument2674: String, argument2675: Int, argument2676: InputObject1086!, argument2677: Int): Object2122! + field9955(argument2678: ID!): Object584 + field9956(argument2679: String, argument2680: String, argument2681: Int, argument2682: Int): Object2124! + field9962: Object2126 +} + +type Object1758 implements Interface3 @Directive1(argument1 : "defaultValue351") @Directive1(argument1 : "defaultValue352") @Directive1(argument1 : "defaultValue353") { + field15: ID! + field161: ID! + field8037: Interface107 + field8059: [Object1760!]! +} + +type Object1759 implements Interface3 @Directive1(argument1 : "defaultValue355") @Directive1(argument1 : "defaultValue356") { + field15: ID! + field161: ID! + field183: String + field915: String +} + +type Object176 { + field977: Boolean + field978: Int + field979: String +} + +type Object1760 { + field8060: Float! + field8061: String! + field8062: String! + field8063: ID! + field8064: [Object1761] + field8066: Object1762 + field8070: String + field8071: [Object1762]! + field8072: String! + field8073: String! +} + +type Object1761 { + field8065: Int +} + +type Object1762 { + field8067: String + field8068: String + field8069: String +} + +type Object1763 { + field8075: ID! + field8076: String +} + +type Object1764 implements Interface3 @Directive1(argument1 : "defaultValue357") @Directive1(argument1 : "defaultValue358") { + field15: ID! + field161: ID! + field163: Scalar1! + field165: Scalar1! + field185: String + field8078: [Object1765!]! + field8082: String + field8083: Object589! + field8084: String + field8085: String +} + +type Object1765 { + field8079: String + field8080: String + field8081: String +} + +type Object1766 { + field8088: Scalar6! + field8089: Int +} + +type Object1767 { + field8100: [Object1768!]! + field8104: Object6! +} + +type Object1768 { + field8101: Object6! + field8102: ID! + field8103: Object6! +} + +type Object1769 { + field8106: Object6! + field8107: ID! + field8108: ID! + field8109: Object6! +} + +type Object177 implements Interface3 @Directive1(argument1 : "defaultValue116") @Directive1(argument1 : "defaultValue117") { + field15: ID! + field161: ID! + field987: Interface9 +} + +type Object1770 { + field8114: Float + field8115: Object191 + field8116: Scalar5 + field8117: Object6 +} + +type Object1771 { + field8119: ID! + field8120: [Object1772] +} + +type Object1772 { + field8121: Enum463! + field8122: Scalar5 + field8123: [Object1773] + field8128: Object1774 +} + +type Object1773 { + field8124: String! + field8125: Object6! + field8126: Object6! + field8127: Object6! +} + +type Object1774 { + field8129: Scalar5 + field8130: Scalar5 + field8131: Scalar5 + field8132: [Object1775] +} + +type Object1775 { + field8133: Object189! + field8134: Object6! + field8135: Object6! + field8136: Object6! +} + +type Object1776 implements Interface86 { + field5004: [Object1139] + field5007: String + field5008: String + field8140: String! +} + +type Object1777 { + field8143: ID! + field8144: ID! + field8145: ID! + field8146: Enum464! +} + +type Object1778 { + field8151: Object6! + field8152: Scalar4! +} + +type Object1779 { + field8154: Boolean + field8155: Enum465! + field8156: Object191 + field8157: [Object1780!]! + field8165: String +} + +type Object178 implements Interface12 { + field1001: Object179 + field161: Int + field791: Object34 + field843: Object148 + field849: Object34 + field850: Object148 + field992: Boolean + field993: Boolean + field994: Boolean + field995: Object179 +} + +type Object1780 { + field8158: Object1781! + field8163: Object1781 + field8164: Object45 @Directive3 +} + +type Object1781 { + field8159: Scalar4 + field8160: Boolean + field8161: Scalar4 + field8162: Boolean +} + +type Object1782 implements Interface16 { + field1011: String + field1012: String + field1013: String + field1014: String + field1015: String + field1016: String + field1017: Int + field1018: String + field1019: String + field1020: String + field1021: String + field1022: String + field1023: String + field1024: Object45 @Directive3 + field1025: String + field1026: String + field1027: String + field1028: String + field1029: String + field1030: Scalar5 + field8167: ID! +} + +type Object1783 { + field8170: Object6! + field8171: ID! + field8172: String! + field8173: Object6! +} + +type Object1784 { + field8175: String + field8176: String + field8177: Scalar10 + field8178: String + field8179: Int + field8180: Float + field8181: Scalar4 + field8182: String + field8183: Float + field8184: ID! + field8185: String + field8186: Scalar4 + field8187: String + field8188: Boolean + field8189: String + field8190: Object6 + field8191: Boolean + field8192: Object45 + field8193: Boolean + field8194: Boolean + field8195: Object6 + field8196: Enum466 + field8197: Scalar4 + field8198: Int + field8199: String + field8200: Boolean + field8201: Float + field8202: Int + field8203: String + field8204: Enum467 + field8205: Boolean + field8206: String + field8207: Float + field8208: String + field8209: Scalar10 + field8210: Boolean + field8211: Object194 + field8212: Object6 + field8213: String + field8214: Float + field8215: Boolean + field8216: Object6 + field8217: Scalar10 + field8218: Int +} + +type Object1785 { + field8220: ID! + field8221: Scalar5! + field8222: [Object1786] + field8226: Scalar5! +} + +type Object1786 { + field8223: ID! + field8224: Object6! + field8225: Object6! +} + +type Object1787 { + field8228: [Object1146!]! +} + +type Object1788 { + field8230: [Object1145!] + field8231: String + field8232: Int! +} + +type Object1789 { + field8234: [Int!]! +} + +type Object179 { + field1000: String + field996: Boolean + field997: Int + field998: Boolean + field999: Boolean +} + +type Object1790 { + field8237: ID! +} + +type Object1791 { + field8239: String! +} + +type Object1792 { + field8241: [Object1793!]! +} + +type Object1793 { + field8242: Object1146! + field8243: Object1794 + field8250: Object1796 +} + +type Object1794 { + field8244: Object1795 + field8249: String! +} + +type Object1795 { + field8245: String! + field8246: String! + field8247: String! + field8248: String! +} + +type Object1796 { + field8251: String + field8252: String +} + +type Object1797 { + field8254: [Object1798]! +} + +type Object1798 { + field8255: Object1146! + field8256: String + field8257: String! +} + +type Object1799 { + field8259: [Int!]! +} + +type Object18 { + field68: [Object19] + field75: String + field76: Object6 + field77: Object6 +} + +type Object180 { + field1004: Object148 + field1005: Int + field1006: Object34 +} + +type Object1800 { + field8261: Object1146! + field8262: String! + field8263: [Object1798]! + field8264: String! +} + +type Object1801 { + field8266: String! +} + +type Object1802 { + field8268: [Object1146!] + field8269: Object1803! + field8277: String + field8278: Object1148! +} + +type Object1803 { + field8270: [Object1804!] +} + +type Object1804 { + field8271: String! + field8272: Object1805! +} + +type Object1805 { + field8273: [Object1806!] +} + +type Object1806 { + field8274: Object1807! + field8276: String! +} + +type Object1807 { + field8275: Boolean! +} + +type Object1808 { + field8280: Object1146! + field8281: String +} + +type Object1809 { + field8283: [Object1810!]! +} + +type Object181 { + field1008: [Object182] + field1031: Object16! +} + +type Object1810 { + field8284: Object1146! + field8285: Boolean! +} + +type Object1811 { + field8287: [String] + field8288: String + field8289: String + field8290: String +} + +type Object1812 { + field8293(argument1917: Int, argument1918: Int): [Object47] +} + +type Object1813 { + field8296: Object411 + field8297: Object1814 + field8314: String +} + +type Object1814 { + field8298: Object1815 + field8303: String + field8304: [Object1816] + field8313: String +} + +type Object1815 { + field8299: String + field8300: String + field8301: String + field8302: String +} + +type Object1816 { + field8305: Object1817 + field8308: String + field8309: String + field8310: String + field8311: Enum216 + field8312: Scalar8 +} + +type Object1817 { + field8306: String + field8307: String +} + +type Object1818 { + field8316: [Object1819] + field8319: Object1820 +} + +type Object1819 { + field8317: String + field8318: Interface52 +} + +type Object182 { + field1009: String! + field1010: Object183 +} + +type Object1820 { + field8320: String + field8321: Scalar8 + field8322: String + field8323: Scalar8 + field8324: String + field8325: Scalar8 +} + +type Object1821 { + field8327: [Object1822] + field8330: Object1820 +} + +type Object1822 { + field8328: Interface51 + field8329: String +} + +type Object1823 { + field8332: [Object1824] + field8336: String +} + +type Object1824 { + field8333: [Object1823] + field8334: Int + field8335: String +} + +type Object1825 { + field8343: [Object1826] + field8345: Object1827! +} + +type Object1826 { + field8344: Object1160 +} + +type Object1827 { + field8346: String + field8347: Int +} + +type Object1828 { + field8350: [Object1168!] + field8351: [Object1183] +} + +type Object1829 { + field8353: [Object1166] + field8354: [Object1183] +} + +type Object183 implements Interface16 { + field1011: String + field1012: String + field1013: String + field1014: String + field1015: String + field1016: String + field1017: Int + field1018: String + field1019: String + field1020: String + field1021: String + field1022: String + field1023: String + field1024: Object45 @Directive3 + field1025: String + field1026: String + field1027: String + field1028: String + field1029: String + field1030: Scalar5 +} + +type Object1830 { + field8356: Object1169 + field8357: [Object1183] +} + +type Object1831 { + field8360: [Object1183] + field8361: [Object1832!] +} + +type Object1832 { + field8362: Object1172 + field8363: String + field8364: String + field8365: String + field8366: Int +} + +type Object1833 { + field8373: [Object1834!]! +} + +type Object1834 { + field8374: String + field8375: ID! + field8376: String! + field8377: [Object1835!] +} + +type Object1835 { + field8378: String + field8379: ID! + field8380: String! +} + +type Object1836 { + field8384: [Object1837] + field8387: Object16! + field8388: Int +} + +type Object1837 { + field8385: String + field8386: Object1192 +} + +type Object1838 { + field8390: [Object1183] + field8391: Int + field8392: String + field8393: Enum475 +} + +type Object1839 { + field8401: Object1840 +} + +type Object184 implements Interface3 @Directive1(argument1 : "defaultValue118") @Directive1(argument1 : "defaultValue119") @Directive1(argument1 : "defaultValue120") { + field1033: Object185 @Directive7(argument4 : true) + field1207: Enum44 + field1208: Scalar5 + field15: ID! + field204: Object45 + field835: Object145 +} + +type Object1840 { + field8402: [Object1841!] + field8405: Object16! +} + +type Object1841 { + field8403: String! + field8404: Object685 +} + +type Object1842 { + field8411: [Object1843] + field8414: Object16 + field8415: Int +} + +type Object1843 { + field8412: String + field8413: Object590 +} + +type Object1844 { + field8422: Object714! + field8423: [Object714!]! + field8424: [Object714!]! +} + +type Object1845 { + field8435: Object9 + field8436: Object17 +} + +type Object1846 { + field8438: [Object1847] + field8441: Object16 +} + +type Object1847 { + field8439: String + field8440: Object4 +} + +type Object1848 { + field8450: String! + field8451: String! + field8452: String! + field8453: Int + field8454: String! + field8455: String + field8456: String + field8457: [String!] + field8458: String +} + +type Object1849 { + field8461: String + field8462: ID! +} + +type Object185 implements Interface3 @Directive1(argument1 : "defaultValue121") @Directive1(argument1 : "defaultValue122") { + field1034: String @Directive7(argument4 : true) + field1035: String @Directive7(argument4 : true) + field1036: Object186 @Directive7(argument4 : true) + field1040: [Object187] + field1153: [Object201] + field1172: [Object198] + field1173: [Object204] + field1180: [Object192] + field1181: String @Directive7(argument4 : true) + field1182: Object589 + field1183: String @Directive7(argument4 : true) + field1184: Object589 + field1185: [Object205] + field1201: [Object589] + field1202: Object207 @Directive7(argument4 : true) + field15: ID! + field161: ID! + field183: String @Directive7(argument4 : true) + field185: Enum44 @Directive7(argument4 : true) + field192: [Object146] + field796: String @Directive7(argument4 : true) + field836: String @Directive7(argument4 : true) + field838: Enum47 @Directive7(argument4 : true) +} + +type Object1850 { + field8467: String + field8468: Object45 + field8469: String +} + +type Object1851 { + field8471: String + field8472: [Object1852] + field8475: [Object1236] + field8476: [Object1236] + field8477: String! +} + +type Object1852 { + field8473: Boolean + field8474: String! +} + +type Object1853 implements Interface3 @Directive1(argument1 : "defaultValue360") @Directive1(argument1 : "defaultValue361") { + field15: ID! + field161: ID! + field3483: String! + field467: Boolean! + field834: [Object1854!] + field915: String +} + +type Object1854 { + field8479: String! +} + +type Object1855 { + field8481: Enum477 + field8482: Union95 + field8483: Enum479! + field8484: Enum482! + field8485: Scalar5! + field8486: Object45! + field8487: Enum481! + field8488: Scalar1! + field8489: Enum483! +} + +type Object1856 { + field8491: Scalar1! + field8492: Object589! + field8493: ID! + field8494: [Object45!] + field8495: String! + field8496: Int! + field8497: Scalar8! + field8498: Scalar1! +} + +type Object1857 { + field8501: [Object1858!] + field8515: Object16! + field8516: Object589! + field8517: Int! +} + +type Object1858 { + field8502: String! + field8503: Object1859! +} + +type Object1859 { + field8504: [ID!] + field8505: Scalar1! + field8506: Object589! + field8507: Scalar8! + field8508: ID! + field8509: Object45! + field8510: Int! + field8511: Scalar8! + field8512: String + field8513: String! + field8514: Scalar1! +} + +type Object186 { + field1037: Boolean + field1038: ID! + field1039: String +} + +type Object1860 { + field8521: ID! + field8522: [ID!] +} + +type Object1861 { + field8524: [Object1862] + field8529: Object16 +} + +type Object1862 { + field8525: String + field8526: Object1863 +} + +type Object1863 { + field8527: Float + field8528: Union96 +} + +type Object1864 { + field8532: [Object1865] + field8535: Object16 +} + +type Object1865 { + field8533: String + field8534: Object1251 +} + +type Object1866 { + field8543: ID! + field8544: Object842 + field8545: Object1867 + field8552: Enum338 +} + +type Object1867 { + field8546: Union97 + field8549: Scalar20! + field8550: String + field8551: Enum336 +} + +type Object1868 { + field8547: [Object1867!] +} + +type Object1869 { + field8548: [Object841!] +} + +type Object187 implements Interface17 & Interface3 @Directive1(argument1 : "defaultValue123") @Directive1(argument1 : "defaultValue124") { + field1041: Int + field1042: Scalar4 + field1043: String + field1044: Object188 + field1048: Object6 + field1049: Object189! + field1054: Scalar4 + field1055: Int + field1056: Scalar4 + field1057: Object190 + field1062: Object191 + field1065: Int + field1066: Object192 + field1103: Boolean + field1104: Object6 + field1105: [Object195] + field1124: [Object197] + field1133: Object198 + field1153: [Object201] + field1167: [Object202] + field1168: [Object203] + field15: ID! + field161: ID! + field925: Scalar4 +} + +type Object1870 { + field8554: [Object1871!] +} + +type Object1871 { + field8555: Object841! + field8556: ID! + field8557: Object841! +} + +type Object1872 implements Interface61 { + field4002: [Object841!] + field4005: ID! + field4006: String + field4007: Object842 + field8559: Boolean + field8560: Object1866 +} + +type Object1873 { + field8562: [Object68] + field8563: Object45! +} + +type Object1874 { + field8570(argument2083: Int, argument2084: Scalar8, argument2085: Int): [Object347] + field8571(argument2086: String, argument2087: Int, argument2088: Int, argument2089: Boolean): [Object347] + field8572(argument2090: String, argument2091: Int, argument2092: [Scalar8], argument2093: Int): [Object347] + field8573(argument2094: [String], argument2095: Int, argument2096: Int): [Object347] +} + +type Object1875 { + field8575: Object82 + field8576: [Object75] +} + +type Object1876 { + field8579: String + field8580: [Object1877] + field8583: String + field8584: Enum484 + field8585: String +} + +type Object1877 { + field8581: String + field8582: String +} + +type Object1878 { + field8588: String + field8589: String + field8590: String + field8591: String +} + +type Object1879 { + field8594: String + field8595: String + field8596: [String] +} + +type Object188 { + field1045: Scalar6 + field1046: ID! + field1047: String +} + +type Object1880 { + field8598: String! +} + +type Object1881 { + field8600: [Object75] + field8601: Object81 +} + +type Object1882 { + field8605: Boolean + field8606: String + field8607: [Object71] +} + +type Object1883 { + field8611: [Object1884] + field8616: ID +} + +type Object1884 { + field8612: String + field8613: Interface107 + field8614: String + field8615: Scalar1 +} + +type Object1885 { + field8618: String + field8619: [Object1758] + field8620: [Object1886] + field8625: String +} + +type Object1886 { + field8621: ID! + field8622: [Object1887] + field8624: Enum488 +} + +type Object1887 { + field8623: String +} + +type Object1888 implements Interface3 @Directive1(argument1 : "defaultValue362") @Directive1(argument1 : "defaultValue363") { + field15: ID! + field2192: ID! + field2198: Enum107 + field2205: Enum108 + field8627: String + field8628: Enum109 + field8629: Enum106 + field8630: Scalar5 +} + +type Object1889 { + field8634: [Object1890]! + field8646: String! +} + +type Object189 { + field1050: Boolean! + field1051: ID! + field1052: String! + field1053: Object189 +} + +type Object1890 { + field8635: Enum489! + field8636: String + field8637: String + field8638: String + field8639: String! + field8640: Boolean! + field8641: Enum490 + field8642: String! + field8643: Scalar1! + field8644: String + field8645: String +} + +type Object1891 { + field8651: [Object1892!]! +} + +type Object1892 { + field8652: Interface62! +} + +type Object1893 { + field8658: Enum235! + field8659: [Object1324!] +} + +type Object1894 { + field8667: [Object1895] + field8670: Object16! + field8671: Int +} + +type Object1895 { + field8668: String! + field8669: Object149! +} + +type Object1896 { + field8683: String! + field8684: String +} + +type Object1897 implements Interface107 & Interface3 @Directive1(argument1 : "defaultValue364") @Directive1(argument1 : "defaultValue365") { + field1276: Scalar1 + field15: ID! + field161: ID + field185: Enum494 + field2332: Enum462 + field2664: Boolean + field8038: String + field8039: String + field8040: String + field8041: String + field8042: Scalar1 + field8043: Scalar1 + field8044: String + field8045: Enum460 + field8046: Scalar1 + field8047: Scalar1 + field8048: Object1759 + field8049: ID + field8050: String + field8051: String + field8052: Scalar1 + field8053: Object1759 + field8054: ID + field8055: String + field8056: Scalar1 + field8057: [Enum461] + field8058: Scalar1 + field807: Scalar1 + field8697: String @deprecated + field8698: Scalar1 + field8699: String + field8700: Object1759 + field8701: ID + field8702: String @deprecated + field8703: Object1898 + field8707: Object1898 + field8708: Object1899 + field8722: ID +} + +type Object1898 { + field8704: ID + field8705: Object1759 + field8706: String +} + +type Object1899 implements Interface107 & Interface3 @Directive1(argument1 : "defaultValue366") @Directive1(argument1 : "defaultValue367") { + field15: ID! + field161: ID + field2332: Enum462 + field8038: String + field8039: String + field8040: String + field8041: String + field8042: Scalar1 + field8043: Scalar1 + field8044: String + field8045: Enum460 + field8046: Scalar1 + field8047: Scalar1 + field8048: Object1759 + field8049: ID + field8050: String + field8051: String + field8052: Scalar1 + field8053: Object1759 + field8054: ID + field8055: String + field8056: Scalar1 + field8057: [Enum461] + field8058: Scalar1 + field8709: ID + field8710: [Object1897] + field8711: Boolean + field8712: Scalar1 + field8713: Enum491 + field8714: Scalar1 + field8715: Enum492 + field8716: Enum493 + field8717: Boolean + field8718: Object1759 + field8719: ID + field8720: String + field8721: String +} + +type Object19 { + field69: Scalar7 + field70: [Object10] + field71: String + field72: [Object6] + field73: Object6 + field74: Object6 +} + +type Object190 { + field1058: ID! + field1059: Int + field1060: String + field1061: Int +} + +type Object1900 { + field8724(argument2146: Int, argument2147: Int): [Object1901] + field8728(argument2148: Int, argument2149: Int): [Object264] + field8729(argument2150: Int, argument2151: Int): [Object1902] +} + +type Object1901 { + field8725: String + field8726: Int + field8727: String +} + +type Object1902 { + field8730: String + field8731: String + field8732: Scalar8 +} + +type Object1903 { + field8734: String + field8735: String + field8736: [String!] + field8737: Int + field8738: [Object1307!]! + field8739: Enum343 +} + +type Object1904 { + field8744: [Object1905] + field8804: Object16! +} + +type Object1905 { + field8745: String! + field8746: Object1906 +} + +type Object1906 { + field8747: [Object1907!] + field8781: [Object1908!] + field8782: Object59 + field8783: [String!] + field8784: Scalar1 + field8785: ID! + field8786: String + field8787: String + field8788: [Object1910!] + field8794: Object45 + field8795: String! + field8796: Object88 + field8797: Object594 + field8798: [Object1911!] +} + +type Object1907 { + field8748: [Object1908!] + field8772: Boolean + field8773: Boolean + field8774: Boolean + field8775: Boolean + field8776: ID! + field8777: String + field8778: String + field8779: String + field8780: String +} + +type Object1908 { + field8749: Enum395 + field8750: Int + field8751: String + field8752: [String!] + field8753: [Object1524!] + field8754: ID + field8755: String + field8756: Object1909 + field8762: Boolean + field8763: Boolean + field8764: Boolean + field8765: Boolean + field8766: String + field8767: [Enum398!] + field8768: Int + field8769: Enum400 @Directive9 + field8770: String + field8771: Enum402 +} + +type Object1909 { + field8757: ID + field8758: ID + field8759: [String]! + field8760: ID + field8761: String! +} + +type Object191 { + field1063: ID! + field1064: String! +} + +type Object1910 { + field8789: [String!] + field8790: String! + field8791: Int! + field8792: String + field8793: String +} + +type Object1911 { + field8799: [String!] + field8800: Scalar1 + field8801: Boolean + field8802: String! + field8803: Object594 +} + +type Object1912 { + field8807: Int! + field8808: Enum352 + field8809: [Enum499]! +} + +type Object1913 { + field8811: [String!] + field8812: Int! + field8813: Enum352 + field8814: [Object1911!] +} + +type Object1914 { + field8816: Int! + field8817: Enum352 + field8818: [String] +} + +type Object1915 { + field8820: [String!] + field8821: Int! + field8822: Enum352! + field8823: ID! + field8824: String! + field8825: String + field8826: [Object1523] +} + +type Object1916 { + field8828: [Object1917!] + field8840: [Enum352] + field8841: ID! + field8842: String! + field8843: [String] +} + +type Object1917 { + field8829: String! + field8830: [Object1918] + field8833: String! + field8834: [Enum352] + field8835: [String] + field8836: Boolean! + field8837: Int! + field8838: Boolean! + field8839: [Enum402] +} + +type Object1918 { + field8831: Int! + field8832: Int! +} + +type Object1919 { + field8845: [Object1920] + field8848: Object16! +} + +type Object192 { + field1067: String + field1068: ID! + field1069: [Object193] + field1099: String + field1100: String + field1101: Scalar10 + field1102: Int +} + +type Object1920 { + field8846: String! + field8847: Object1917 +} + +type Object1921 { + field8852: Object45 + field8853: [Object594!] +} + +type Object1922 { + field8855: String + field8856: Enum18! +} + +type Object1923 { + field8859: Enum18! + field8860: Scalar11 +} + +type Object1924 { + field8862: [Enum18] + field8863: ID! + field8864: String + field8865: String + field8866: String + field8867: String +} + +type Object1925 { + field8870: String + field8871: Scalar10 +} + +type Object1926 { + field8873: [Object1926] + field8874: String + field8875: Object1925 +} + +type Object1927 { + field8877: String + field8878: Object1925 +} + +type Object1928 { + field8881: [Object1929!] + field8884: String + field8885: String! + field8886: Boolean + field8887: [Enum344!] +} + +type Object1929 { + field8882: Int! + field8883: Int! +} + +type Object193 { + field1070: String + field1071: Int + field1072: Int + field1073: ID! + field1074: Int + field1075: Int + field1076: Scalar5 + field1077: Scalar4 + field1078: String + field1079: Scalar5 + field1080: String + field1081: Scalar4 + field1082: String + field1083: Boolean + field1084: Object194 + field1095: String + field1096: String + field1097: Scalar10 + field1098: Int +} + +type Object1930 { + field8891: String + field8892: Boolean + field8893: String +} + +type Object1931 { + field8898: [Object1932] + field8901: Object16! +} + +type Object1932 { + field8899: String! + field8900: Object45 +} + +type Object1933 { + field8909(argument2219: Int, argument2220: Int): [Object1934] +} + +type Object1934 { + field8910: String + field8911: String +} + +type Object1935 { + field8914(argument2224: String = "defaultValue369"): String @Directive9 + field8915(argument2225: Int): [Object1935] @Directive9 +} + +type Object1936 { + field8919: [Object1937] + field8922: Object16 +} + +type Object1937 { + field8920: String + field8921: Interface65 +} + +type Object1938 implements Interface3 @Directive1(argument1 : "defaultValue370") @Directive1(argument1 : "defaultValue371") { + field15: ID! + field2022: Scalar4 + field8925: ID + field8926: Object1939 @Directive9 + field8937: String + field8938: String + field8939: Object45 + field8940: Object45 + field8941: String +} + +type Object1939 { + field8927: String + field8928: Scalar1 + field8929: String + field8930: ID + field8931: Scalar1 + field8932: String + field8933: String + field8934: String + field8935: Int + field8936: Int +} + +type Object194 { + field1085: String + field1086: String + field1087: ID! + field1088: String + field1089: String + field1090: String + field1091: Float + field1092: String + field1093: Scalar10 + field1094: Int +} + +type Object1940 { + field8944: [Object1941] + field8948: [Object1941] + field8949: [Object1941] +} + +type Object1941 { + field8945: String + field8946: String + field8947: String +} + +type Object1942 { + field8953(argument2240: Boolean!): Boolean +} + +type Object1943 { + field8956: Object1944 + field8961: Object1939 + field8962: Object1945 + field8969: ID! + field8970: Object1946 + field8982: Object1950 +} + +type Object1944 { + field8957: [Enum18] + field8958: String + field8959: [String] + field8960: [Object45] +} + +type Object1945 { + field8963: Scalar3 + field8964: String + field8965: String + field8966: Scalar3 + field8967: Scalar8 + field8968: Scalar3 +} + +type Object1946 { + field8971: Object1947 + field8976: Enum501 + field8977: Object1949 +} + +type Object1947 { + field8972: String + field8973: Object1948 +} + +type Object1948 { + field8974: Int + field8975: Int +} + +type Object1949 { + field8978: String + field8979: Float + field8980: Float + field8981: Object1948 +} + +type Object195 implements Interface17 & Interface3 @Directive1(argument1 : "defaultValue125") @Directive1(argument1 : "defaultValue126") { + field1041: Int + field1042: Scalar4 + field1043: String + field1044: Object188 + field1048: Object6 + field1049: Object189! + field1054: Scalar4 + field1055: Int + field1056: Scalar4 + field1057: Object190 + field1062: Object191 + field1065: Int + field1066: Object192 + field1103: Boolean + field1104: Object6 + field1106: Scalar10 + field1107: Object196 + field1122: ID + field1123: Boolean + field1124: [Object197] + field1131: Scalar10 + field1132: Int + field15: ID! + field161: ID + field164: String + field166: String + field185: Enum43 + field204: Object45 @Directive3 + field925: Scalar4 +} + +type Object1950 { + field8983: Object724 + field8984: Object1951 @Directive9 +} + +type Object1951 { + field8985: Scalar3 +} + +type Object1952 { + field8987: Object1939 + field8988: ID! + field8989: String +} + +type Object1953 { + field8991: Object1954 + field8995: Object1955 + field9000: Object1939 + field9001: ID! + field9002: Boolean + field9003: Object1955 + field9004: String +} + +type Object1954 { + field8992: String + field8993: Object1939 + field8994: ID! +} + +type Object1955 { + field8996: Scalar4 + field8997: Scalar1 + field8998: Scalar19 + field8999: Scalar11 +} + +type Object1956 { + field9006: String + field9007: Scalar1 + field9008: Union98 + field9047: ID! + field9048: String @deprecated + field9049: String @Directive9 + field9050: Object1963 + field9058: String + field9059: Scalar1 + field9060: Scalar11 +} + +type Object1957 implements Interface3 @Directive1(argument1 : "defaultValue372") @Directive1(argument1 : "defaultValue373") { + field15: ID! + field161: ID! + field185: Enum502 + field204: Object45 + field3115: Scalar11 + field9009: String + field9010: String + field9011: String + field9012: [Object589] + field9013: Object1958 + field9016: Object1959 + field9021: String @Directive9 + field9022: Object1960 + field9024: Scalar1 + field9025: Scalar1 + field9026: Scalar1 + field9027: Scalar1 + field9028: Object589 + field9029: String +} + +type Object1958 { + field9014: String + field9015: Scalar3 +} + +type Object1959 { + field9017: Scalar1 + field9018: String + field9019: Scalar1 + field9020: Boolean +} + +type Object196 { + field1108: ID + field1109: Scalar4 + field1110: ID + field1111: Scalar4 + field1112: Scalar4 + field1113: ID! + field1114: Boolean + field1115: String + field1116: Scalar4 + field1117: Scalar4 + field1118: Scalar4 + field1119: String + field1120: String + field1121: Scalar10 +} + +type Object1960 { + field9023: Boolean +} + +type Object1961 { + field9030: [Object1962] + field9040: String + field9041: String + field9042: String + field9043: String + field9044: String + field9045: Scalar3 + field9046: String +} + +type Object1962 { + field9031: Scalar3 @deprecated + field9032: Enum503 + field9033: String + field9034: String + field9035: String + field9036: Scalar3 + field9037: Scalar3 + field9038: Scalar5 + field9039: Scalar3 +} + +type Object1963 implements Interface3 @Directive1(argument1 : "defaultValue374") @Directive1(argument1 : "defaultValue375") { + field15: ID! + field161: ID! @Directive9 + field183: String @Directive9 + field834: [Object610!] @Directive9 + field9051: [Object1344!] @Directive9 + field9052: Enum504 @Directive9 + field9053: [Object1964!] @Directive9 +} + +type Object1964 { + field9054: ID! @Directive9 + field9055: String @Directive9 + field9056: String @Directive9 + field9057: String @Directive9 +} + +type Object1965 { + field9062: String + field9063: Scalar1 + field9064: Scalar1 + field9065: String @deprecated + field9066: Object1963 + field9067: String +} + +type Object1966 { + field9069: Scalar1 + field9070: Scalar1 + field9071: String @Directive9 +} + +type Object1967 { + field9073: String + field9074: Object1939 + field9075: ID! +} + +type Object1968 implements Interface108 { + field9078: Object1952 + field9079: ID! + field9080: String + field9081: String +} + +type Object1969 implements Interface108 { + field9078: Object1952 + field9079: ID! + field9080: String + field9081: String +} + +type Object197 { + field1125: String + field1126: String! + field1127: ID! + field1128: String! + field1129: String! + field1130: Scalar10! +} + +type Object1970 implements Interface108 { + field9078: Object1952 + field9079: ID! + field9080: String + field9081: String +} + +type Object1971 { + field9090: [Enum361!] + field9091: [Object589!] + field9092: [Enum364!] + field9093: [Object1344!] @Directive9 + field9094: [Object1351!] + field9095: [Object589!] + field9096: [String!] +} + +type Object1972 implements Interface3 @Directive1(argument1 : "defaultValue376") @Directive1(argument1 : "defaultValue377") { + field15: ID! + field161: ID! @deprecated + field8926: Object1939 @deprecated + field9100: String @deprecated + field9101: Object1938 @deprecated + field9102: ID @deprecated + field9103: Object1973 @deprecated + field9108: ID @deprecated +} + +type Object1973 { + field9104: [String] + field9105: Object1939 + field9106: String + field9107: ID! +} + +type Object1974 implements Interface3 @Directive1(argument1 : "defaultValue378") @Directive1(argument1 : "defaultValue379") { + field15: ID! + field161: ID! + field2648: Boolean + field796: String + field8926: Object1939 + field9100: String + field9101: Object1938 @Directive9 + field9103: Object1973 + field9110: String + field9111: Enum505 + field9112: [String] + field9113: Scalar3 + field9114: String + field9115: Object1954 + field9116: Object1967 + field9117: Object1975 + field9120: Object1955 + field9121(argument2263: String, argument2264: Int = 12): Object1976 + field9130: [Object88] + field9131: Scalar3 + field9132: String +} + +type Object1975 { + field9118: [String] + field9119: ID! +} + +type Object1976 { + field9122: [Object1977] + field9128: Object16! + field9129: Int! +} + +type Object1977 { + field9123: Object1978 +} + +type Object1978 { + field9124: Object1952 + field9125: Object1939 + field9126: ID! + field9127: String +} + +type Object1979 implements Interface3 @Directive1(argument1 : "defaultValue380") @Directive1(argument1 : "defaultValue381") { + field15: ID! + field161: ID! + field2238: Boolean + field2648: Boolean + field796: String + field8926: Object1939 + field9117: Object1975 + field9134: ID + field9135: String + field9136: Enum506 + field9137: Object1980 + field9151(argument2269: String, argument2270: Int = 14): Object1985 + field9156: String + field9157: Object1943 + field9158: Object1987 + field9169: [Object45] + field9170: Scalar3 + field9171: Scalar3 +} + +type Object198 { + field1134: String + field1135: Scalar10 + field1136: ID! + field1137: [Object199!] + field1144: Object200! + field1147: ID! + field1148: Boolean! + field1149: Boolean + field1150: ID! + field1151: String! + field1152: [Object197] +} + +type Object1980 { + field9138: Object1981 + field9142: Object1982 +} + +type Object1981 { + field9139: String + field9140: Object1939 + field9141: ID! +} + +type Object1982 { + field9143(argument2267: String, argument2268: Int = 13): Object1983 + field9148: String + field9149: Object1939 + field9150: ID! +} + +type Object1983 { + field9144: [Object1984] + field9146: Object16! + field9147: Int! +} + +type Object1984 { + field9145: Object1981 +} + +type Object1985 { + field9152: [Object1986] + field9154: Object16! + field9155: Int! +} + +type Object1986 { + field9153: Object1974 +} + +type Object1987 { + field9159: String + field9160: String + field9161: Enum501 + field9162: String + field9163: [String] + field9164: String + field9165: Object594 + field9166: String + field9167: String + field9168: Scalar4 +} + +type Object1988 implements Interface3 @Directive1(argument1 : "defaultValue382") @Directive1(argument1 : "defaultValue383") { + field1284: String + field15: ID! + field161: ID! + field185: Enum507 + field2648: Boolean + field5336: Scalar3 + field8926: Object1939 + field9117: Object1975 + field9177(argument2277: String, argument2278: Int = 15): Object1989 + field9182: Object1974 + field9183: Object1991 + field9185: Scalar3 @deprecated + field9186: Interface108 + field9187: Object1978 + field9188: String + field9189: Object1992 + field9192: Object1993 +} + +type Object1989 { + field9178: [Object1990] + field9180: Object16! + field9181: Int! +} + +type Object199 { + field1138: Object191! + field1139: Boolean! + field1140: ID + field1141: String + field1142: Float + field1143: Boolean +} + +type Object1990 { + field9179: Object1979 +} + +type Object1991 { + field9184: Scalar3 +} + +type Object1992 { + field9190: Object1955 + field9191: Object1955 +} + +type Object1993 { + field9193: String + field9194: String + field9195: String + field9196: Object1955 + field9197: String + field9198: Boolean + field9199: String + field9200: [String] + field9201: String + field9202: String + field9203: String + field9204: Scalar3 + field9205: String + field9206: String + field9207: String +} + +type Object1994 { + field9211: [Object1995] + field9213: Object16! + field9214: Int! +} + +type Object1995 { + field9212: Object1943 +} + +type Object1996 { + field9216: [Object1997] + field9218: Object16! + field9219: Int! +} + +type Object1997 { + field9217: Object1952 +} + +type Object1998 { + field9221: [Object1999] + field9223: Object16! + field9224: Int! +} + +type Object1999 { + field9222: Object1953 +} + +type Object2 { + field11: String +} + +type Object20 { + field79: [Object18] + field80: Object6 + field81: Object6 +} + +type Object200 { + field1145: ID! + field1146: String! +} + +type Object2000 { + field9226: [Object2001] + field9228: Object16! + field9229: Int! +} + +type Object2001 { + field9227: Object1967 +} + +type Object2002 { + field9231: [Object2003] + field9233: Object16! + field9234: Int! +} + +type Object2003 { + field9232: Object1954 +} + +type Object2004 { + field9236: [Object2005] + field9238: Object16! + field9239: Int! +} + +type Object2005 { + field9237: Object1968 +} + +type Object2006 { + field9241: [Object2007] + field9243: Object16! + field9244: Int! +} + +type Object2007 { + field9242: Object1969 +} + +type Object2008 { + field9246: [Object2009] + field9248: Object16! + field9249: Int! +} + +type Object2009 { + field9247: Object1970 +} + +type Object201 { + field1154: String! + field1155: Scalar5! + field1156: [Object146] + field1157: [String] + field1158: String + field1159: Scalar5 + field1160: Scalar5 + field1161: String + field1162: ID! + field1163: Scalar4 + field1164: ID! + field1165: [Object187] + field1166: [Object184] +} + +type Object2010 { + field9254: [Object2011] + field9256: Object16! + field9257: Int! +} + +type Object2011 { + field9255: Object1982 +} + +type Object2012 { + field9259: [Object2013] + field9261: Object16! + field9262: Int! +} + +type Object2013 { + field9260: Object1975 +} + +type Object2014 { + field9265: [Object2015] + field9267: Object16! + field9268: Int! +} + +type Object2015 { + field9266: Object1988 +} + +type Object2016 { + field9270: [Object2017] + field9272: Object16! + field9273: Int! +} + +type Object2017 { + field9271: Object1973 +} + +type Object2018 { + field9275: [Object2019] + field9277: Object16! + field9278: Int! +} + +type Object2019 { + field9276: Object2020 +} + +type Object202 implements Interface17 { + field1041: Int + field1042: Scalar4 + field1043: String + field1044: Object188 + field1048: Object6 + field1049: Object189! + field1054: Scalar4 + field1055: Int + field1056: Scalar4 + field1057: Object190 + field1062: Object191! + field1065: Int + field1066: Object192 + field1103: Boolean + field1104: Object6 + field1124: [Object197] + field1153: [Object201] + field161: ID! + field925: Scalar4 +} + +type Object2020 implements Interface108 { + field9078: Object1952 + field9079: ID! + field9080: String + field9081: String +} + +type Object2021 { + field9280: [Object2022] + field9282: Object16! + field9283: Int! +} + +type Object2022 { + field9281: Object2023 +} + +type Object2023 implements Interface108 { + field9078: Object1952 + field9079: ID! + field9080: String + field9081: String +} + +type Object2024 { + field9287: Object40 + field9288: Int + field9289: Int + field9290: Int + field9291: Int + field9292: Int +} + +type Object2025 { + field9300(argument2364: String): Object265 + field9301(argument2365: Int, argument2366: Scalar8, argument2367: Int): [Object265] + field9302(argument2368: String, argument2369: Int, argument2370: Scalar8, argument2371: Int): [Object265] +} + +type Object2026 { + field9305(argument2373: Int, argument2374: Int): [Object269] + field9306(argument2375: Scalar8): Object269 + field9307(argument2376: String): Object269 + field9308(argument2377: Int, argument2378: [Scalar8], argument2379: Int): [Object269] +} + +type Object2027 { + field9310(argument2380: String): Object1531 +} + +type Object2028 { + field9319: Int + field9320: String + field9321: String! +} + +type Object2029 { + field9339: [String!]! + field9340: [String!]! + field9341: [String!]! +} + +type Object203 { + field1169: Object6! + field1170: ID! + field1171: Object6! +} + +type Object2030 { + field9344: [Object2031] + field9347: Object16 + field9348: [Object1389!]! + field9349: Int +} + +type Object2031 { + field9345: String! + field9346: Object913 +} + +type Object2032 { + field9352: [Object2033] + field9355: Object16 +} + +type Object2033 { + field9353: String! + field9354: Union99 +} + +type Object2034 { + field9361: String! + field9362: Enum514! +} + +type Object2035 { + field9370: String + field9371: String + field9372: String @deprecated + field9373: String + field9374: String + field9375: Object2036 + field9378: String @deprecated + field9379: String + field9380: String @deprecated + field9381: String + field9382: String +} + +type Object2036 { + field9376: ID + field9377: String +} + +type Object2037 implements Interface3 @Directive1(argument1 : "defaultValue384") @Directive1(argument1 : "defaultValue385") { + field15: ID! + field161: ID! + field8053: Object1759 + field8054: ID! + field9385: String +} + +type Object2038 { + field9388: String + field9389: Scalar5 + field9390: Scalar5 + field9391: Scalar5 + field9392: Scalar5 + field9393: String + field9394: Scalar5 + field9395: Scalar5 + field9396: String + field9397: String + field9398: String + field9399: String + field9400: Scalar1! + field9401: String + field9402: Scalar4 + field9403: Scalar5 + field9404: Scalar5 + field9405: String + field9406: String + field9407: String + field9408: ID! + field9409: ID! + field9410: String + field9411: String + field9412: String + field9413: Scalar5 + field9414: Scalar5 + field9415: Scalar5 + field9416: Scalar5 + field9417: String + field9418: String + field9419: String + field9420: String + field9421: String + field9422: Scalar1! + field9423: String +} + +type Object2039 { + field9425: Scalar1! + field9426: ID! + field9427(argument2439: Enum518, argument2440: Enum519): [Object2040] + field9442: Enum520 + field9443: String + field9444: String! + field9445: Enum521! + field9446: String + field9447: Scalar1! +} + +type Object204 { + field1174: Object589 + field1175: Scalar10 + field1176: ID! + field1177: ID! + field1178: ID! + field1179: String! +} + +type Object2040 { + field9428: Scalar1! + field9429: String + field9430: String + field9431: ID! + field9432: ID! + field9433: String + field9434: Int + field9435: String! + field9436: String + field9437: String + field9438: Enum518! + field9439: Enum519! + field9440: String + field9441: Scalar1! +} + +type Object2041 { + field9450: String + field9451: String + field9452: String + field9453: String + field9454: String + field9455: String + field9456: Scalar1! + field9457: String + field9458: Scalar5 + field9459: Scalar4 + field9460: String + field9461: ID! + field9462: ID! + field9463: String + field9464: String + field9465: String + field9466: Scalar5 + field9467: Scalar5 + field9468: String + field9469: String + field9470: String + field9471: String + field9472: String + field9473: String + field9474: String + field9475: String + field9476: String + field9477: String + field9478: String + field9479: Scalar4 + field9480: String + field9481: String + field9482: String + field9483: String + field9484: String + field9485: String + field9486: String + field9487: Scalar1! + field9488: String + field9489: String + field9490: String +} + +type Object2042 { + field9493: String + field9494: Scalar4 + field9495: Scalar5 + field9496: Scalar5 + field9497: String + field9498: String + field9499: Scalar1! + field9500: String + field9501: Scalar4 + field9502: Scalar4 + field9503: String + field9504: ID! + field9505: ID! + field9506: String + field9507: String + field9508: String + field9509: String + field9510: String + field9511: String + field9512: String + field9513: Scalar1! + field9514: String + field9515: String +} + +type Object2043 { + field9517: Boolean + field9518: String + field9519: String + field9520: String + field9521: String + field9522: String + field9523: String + field9524: Scalar1! + field9525: String + field9526: Scalar4 + field9527: String + field9528: String + field9529: String + field9530: Scalar5 + field9531: String + field9532: Scalar4 + field9533: ID! + field9534: ID! + field9535: String + field9536: String + field9537: String + field9538: String + field9539: String + field9540: String + field9541: String + field9542: String + field9543: String + field9544: String + field9545: String + field9546: String + field9547: String + field9548: Boolean + field9549: String + field9550: String + field9551: String + field9552: Scalar1! + field9553: String + field9554: String + field9555: String + field9556: String + field9557: Scalar4 + field9558: String +} + +type Object2044 { + field9573: ID! + field9574: [Object1401!]! + field9575: Boolean! +} + +type Object2045 { + field9577: Enum61! + field9578: Enum61! +} + +type Object2046 { + field9580: [Object2047!]! + field9583: Object16! + field9584: Int +} + +type Object2047 { + field9581: String! + field9582: Interface28! +} + +type Object2048 { + field9598: [Object2049] + field9601: Object307! + field9602: Int +} + +type Object2049 { + field9599: String! + field9600: Object1412 +} + +type Object205 { + field1186: String + field1187: String + field1188: Scalar10 + field1189: ID! + field1190: ID! + field1191: ID + field1192: ID! + field1193: Object206 + field1196: ID! + field1197: Enum45! + field1198: Enum46! + field1199: String + field1200: Scalar10 +} + +type Object2050 { + field9606: [Object2051] + field9612: Object307! + field9613: Int +} + +type Object2051 { + field9607: String! + field9608: Object2052 +} + +type Object2052 { + field9609: String + field9610: String + field9611: String +} + +type Object2053 { + field9615: [Object2054] + field9627: Object307! + field9628: Int +} + +type Object2054 { + field9616: String! + field9617: Object2055 +} + +type Object2055 { + field9618: Enum523 + field9619: ID! + field9620: Boolean + field9621: String + field9622: String + field9623: Scalar1 + field9624: String + field9625: Int + field9626: String +} + +type Object2056 { + field9632: [Object2057!]! + field9643: Object16! + field9644: Int +} + +type Object2057 { + field9633: String! + field9634: Object2058! +} + +type Object2058 { + field9635: ID! + field9636: Boolean + field9637: String + field9638: String + field9639: Scalar1 + field9640: String + field9641: Int + field9642: String +} + +type Object2059 { + field9648: [Object2060!]! + field9651: Object589! +} + +type Object206 { + field1194: String + field1195: String +} + +type Object2060 { + field9649: Boolean! + field9650: ID! +} + +type Object2061 { + field9653: String + field9654: [String] +} + +type Object2062 implements Interface3 @Directive1(argument1 : "defaultValue386") @Directive1(argument1 : "defaultValue387") { + field15: ID! + field151: Object3! + field161: ID! + field9662: Object496! +} + +type Object2063 { + field9664: Int! + field9665: Enum161 +} + +type Object2064 { + field9675: Object2065 + field9682: Object2065 + field9683: Object2065 + field9684: Object2065 + field9685: Object2068 + field9687: Object2065 + field9688: Object2065 + field9689: Object2065 + field9690: Object2065 + field9691: Object2065 + field9692: Object2065 + field9693: Object2065 + field9694: Object2065 +} + +type Object2065 { + field9676: [Object2066] + field9681: Object16! +} + +type Object2066 { + field9677: String! + field9678: Object2067 +} + +type Object2067 { + field9679: String + field9680: Int +} + +type Object2068 { + field9686: Object2065 +} + +type Object2069 { + field9697: [Object2070] + field9700: Object16 +} + +type Object207 { + field1203: String + field1204: ID! + field1205: Boolean + field1206: String +} + +type Object2070 { + field9698: String + field9699: Interface9 +} + +type Object2071 { + field9709: [Object2072] + field9712: Object16! +} + +type Object2072 { + field9710: String + field9711: Object955 +} + +type Object2073 { + field9715: [Object2074] + field9718: Object16! + field9719: Int +} + +type Object2074 { + field9716: String + field9717: Object88 +} + +type Object2075 { + field9723(argument2555: String!): Object2076 +} + +type Object2076 { + field9724: [Object2077] + field9728: Object16! +} + +type Object2077 { + field9725: String! + field9726: Object2078 +} + +type Object2078 implements Interface109 { + field9727: String +} + +type Object2079 { + field9736: [Interface71!] + field9737: Int! +} + +type Object208 { + field1210: Object145! +} + +type Object2080 { + field9739: [Interface72!] + field9740: Int! +} + +type Object2081 { + field9744: [Interface33] + field9745: Object2082 +} + +type Object2082 { + field9746: Int + field9747: Int + field9748: Int +} + +type Object2083 { + field9751: [Object491] + field9752: Object2082 +} + +type Object2084 { + field9755: [Object2085] + field9767: [Object2087] +} + +type Object2085 { + field9756: [Object2086] + field9762: Enum531 + field9763: Int + field9764: Int + field9765: Int + field9766: Int +} + +type Object2086 { + field9757: Int + field9758: String + field9759: Int + field9760: String + field9761: Enum531 +} + +type Object2087 { + field9768: [Object2088] + field9772: ID + field9773: Object318 + field9774: Enum531 + field9775: ID +} + +type Object2088 { + field9769: Int + field9770: Enum532 + field9771: Enum531 +} + +type Object2089 { + field9777: Int! + field9778: Int! + field9779: [String!] + field9780: [Union101!]! + field9781: Int! +} + +type Object209 { + field1212: Int + field1213: String +} + +type Object2090 implements Interface110 { + field9783: Int! + field9784: Union102 + field9788: String! + field9789: String! + field9790: Enum535! + field9791: String! + field9792: String! +} + +type Object2091 { + field9785: String + field9786: Boolean + field9787: String +} + +type Object2092 { + field9794: String + field9795: Boolean! + field9796: String + field9797: String! + field9798: String + field9799: Enum535! + field9800: Boolean! +} + +type Object2093 { + field9802: [Object2090!] + field9803: [Object2090!] + field9804: [Object2090!] + field9805: [Object2090!] + field9806: [Object2090!] + field9807: [Object2090!] + field9808: [Object2090!] + field9809: [Object2090!] @deprecated + field9810: [Object2090!] + field9811: [Object2090!] + field9812: [Object2090!] + field9813: [Object2090!] + field9814: [Object2090!] + field9815: [Object2090!] + field9816: [Object2090!] + field9817: [Object2090!] + field9818: [Object2090!] + field9819: [Object2090!] + field9820: [Object2090!] + field9821: [Object2090!] + field9822: [Object2090!] + field9823: [Object2090!] + field9824: [Object2090!] + field9825: [Object2090!] + field9826: [Object2090!] + field9827: [Object2090!] + field9828: [Object2090!] + field9829: [Object2090!] @deprecated + field9830: [Object2090!] + field9831: [Object2090!] + field9832: [Object2090!] + field9833: [Object2090!] + field9834: [Object2090!] + field9835: [Object2090!] + field9836: [Object2090!] + field9837: [Object2090!] +} + +type Object2094 { + field9840: [Object2095] @Directive9 + field9842: Object16! + field9843: Int! +} + +type Object2095 { + field9841: Object1938 @Directive9 +} + +type Object2096 { + field9846: [Object2097] @deprecated + field9852: Object16! @deprecated + field9853: Int! @deprecated +} + +type Object2097 { + field9847: Object2098 @deprecated +} + +type Object2098 { + field9848: [String] @deprecated + field9849: Object1939 @deprecated + field9850: String @deprecated + field9851: ID! @deprecated +} + +type Object2099 implements Interface110 { + field9783: Int! + field9784: Union102 + field9788: String! + field9789: String! + field9790: Enum535! + field9791: String! + field9792: String! + field9855: [String!] + field9856: String! +} + +type Object21 { + field90: Object22 + field94: Object6 + field95: Object23 + field99: Object6 +} + +type Object210 implements Interface3 @Directive1(argument1 : "defaultValue127") @Directive1(argument1 : "defaultValue128") { + field15: ID! + field161: Int! + field183: String + field467: Boolean +} + +type Object2100 { + field9858(argument2603: Int, argument2604: String, argument2605: Int): [Object59] + field9859(argument2606: Int, argument2607: String, argument2608: Int, argument2609: String): [Object59] +} + +type Object2101 { + field9861: [Object2102] + field9864: Object16 + field9865: Scalar8 +} + +type Object2102 { + field9862: String + field9863: Object589 +} + +type Object2103 { + field9867: [Object2104] + field9870: Object16 + field9871: Scalar8 +} + +type Object2104 { + field9868: String + field9869: Object34 +} + +type Object2105 { + field9876: [Object88] + field9877: Object45 + field9878: [Object88] +} + +type Object2106 { + field9882: [Object2107] + field9897: String +} + +type Object2107 { + field9883: String + field9884: String + field9885: String + field9886: String + field9887: Boolean + field9888: String + field9889: String + field9890: String + field9891: String + field9892: String + field9893: String + field9894: String + field9895: String + field9896: String +} + +type Object2108 implements Interface3 @Directive1(argument1 : "defaultValue388") @Directive1(argument1 : "defaultValue389") { + field1036: Object594 + field1386: Object237 + field15: ID! + field157: Object32 + field161: Int! + field163: Scalar10 + field165: Scalar10 + field204: Object45 + field3014: String + field791: Object34 + field9903: Object39 + field9904: String + field9905: Object34 + field9906: Boolean + field9907: Boolean +} + +type Object2109 { + field9911: [Object2110] + field9914: Object16! +} + +type Object211 implements Interface12 { + field1224: String + field1225: Object212! + field1229: [Object213!]! + field1233: [Object214!] + field1235: Object215! + field161: Int + field791: Object34 + field843: Object148 + field849: Object34 + field850: Object148 +} + +type Object2110 { + field9912: String! + field9913: Object535 +} + +type Object2111 { + field9920: [Object2112] + field9923: Object16! +} + +type Object2112 { + field9921: String! + field9922: Object1584 +} + +type Object2113 { + field9925: [Object2114] + field9928: Object16! +} + +type Object2114 { + field9926: String! + field9927: Object1582 +} + +type Object2115 { + field9932: [Object2116] + field9937: Object16! +} + +type Object2116 { + field9933: String! + field9934: Object2117 +} + +type Object2117 { + field9935: Object1585! + field9936: Enum407! +} + +type Object2118 { + field9939: [Object2119] + field9942: Object16! +} + +type Object2119 { + field9940: String! + field9941: Object1596 +} + +type Object212 { + field1226: Boolean + field1227: Int + field1228: String +} + +type Object2120 { + field9946: [Object2121] + field9949: Object16! +} + +type Object2121 { + field9947: String! + field9948: Object575 +} + +type Object2122 { + field9951: [Object2123] + field9954: Object16! +} + +type Object2123 { + field9952: String! + field9953: Object1588 +} + +type Object2124 { + field9957: [Object2125] + field9960: [Object584] @deprecated + field9961: Object16! +} + +type Object2125 { + field9958: String! + field9959: Object584 +} + +type Object2126 { + field9963(argument2683: Int, argument2684: Enum538, argument2685: Int): [Object2127] + field9968(argument2688: Int, argument2689: Enum538, argument2690: Int): [Object2128] +} + +type Object2127 { + field9964(argument2686: Int, argument2687: Int): [Object63] + field9965: Boolean + field9966: Scalar8 + field9967: Scalar8 +} + +type Object2128 { + field9969(argument2691: Int, argument2692: Int): [Object63] + field9970: Enum539 + field9971: String + field9972: Boolean + field9973: Scalar8 + field9974(argument2693: Int, argument2694: Int): [Object2129] +} + +type Object2129 { + field10031(argument2739: Int, argument2740: Int): [Object2133] + field10034(argument2743: Int, argument2744: Int): [Object63] + field10035(argument2745: Int, argument2746: Int): [Object63] + field10036(argument2747: Int, argument2748: Int): [Object2134] + field10069: String + field10070: Boolean + field10071: Boolean + field10072(argument2776: Int, argument2777: Int): [Object2136] + field10097: Scalar8 + field10098: String + field10099(argument2796: Int, argument2797: Int): [Scalar8] + field10100(argument2798: Int, argument2799: Int): [Object2137] + field9975(argument2695: Int, argument2696: Int): [Object2130] + field9998(argument2715: Int, argument2716: Int): [Object2131] +} + +type Object213 { + field1230: Boolean + field1231: Int + field1232: String +} + +type Object2130 { + field9976(argument2697: Int, argument2698: Int): [String] + field9977(argument2699: Int, argument2700: Int): [Enum540] + field9978: Enum541 + field9979: String + field9980(argument2701: String): Object63 + field9981(argument2702: Int, argument2703: Int): [Object63] + field9982(argument2704: String): Object63 + field9983(argument2705: Int, argument2706: Int): [Object63] + field9984: Enum542 + field9985: Boolean + field9986(argument2707: Enum543): Boolean + field9987(argument2708: Enum538): Boolean + field9988: String + field9989(argument2709: Int, argument2710: Int): [Enum543] + field9990: String + field9991: Scalar8 + field9992(argument2711: Int, argument2712: Int): [Enum538] + field9993: Enum544 + field9994(argument2713: Int, argument2714: Int): [String] + field9995: Scalar8 + field9996: Enum545 + field9997: Scalar8 +} + +type Object2131 { + field10006(argument2721: Int, argument2722: Int): [String] + field10007(argument2723: Int, argument2724: Int): [Enum540] + field10008: Enum541 + field10009: String + field10010(argument2725: String): Object63 + field10011(argument2726: Int, argument2727: Int): [Object63] + field10012(argument2728: String): Object63 + field10013(argument2729: Int, argument2730: Int): [Object63] + field10014: Enum542 + field10015: Boolean + field10016: Boolean + field10017(argument2731: Enum543): Boolean + field10018(argument2732: Enum538): Boolean + field10019: String + field10020: Scalar8 + field10021: Scalar8 + field10022(argument2733: Int, argument2734: Int): [Enum543] + field10023: String + field10024: Scalar8 + field10025(argument2735: Int, argument2736: Int): [Enum538] + field10026: Enum544 + field10027(argument2737: Int, argument2738: Int): [String] + field10028: Scalar8 + field10029: Enum545 + field10030: Scalar8 + field9999(argument2717: Int, argument2718: Int): [Object2132] +} + +type Object2132 { + field10000(argument2719: Int, argument2720: Int): [Object63] + field10001: Scalar8 + field10002: String + field10003: Scalar8 + field10004: Enum541 + field10005: String +} + +type Object2133 { + field10032(argument2741: Int, argument2742: Int): [Object63] + field10033: Int +} + +type Object2134 { + field10037(argument2749: Int, argument2750: Int): [String] + field10038(argument2751: Int, argument2752: Int): [Enum540] + field10039: Enum541 + field10040: String + field10041(argument2753: String): Object63 + field10042(argument2754: Int, argument2755: Int): [Object63] + field10043(argument2756: String): Object63 + field10044(argument2757: Int, argument2758: Int): [Object63] + field10045(argument2759: Int, argument2760: Int): [Object2135] + field10052: Enum542 + field10053: Boolean + field10054: Boolean + field10055(argument2768: Enum543): Boolean + field10056(argument2769: Enum538): Boolean + field10057: String + field10058: Scalar8 + field10059: Scalar8 + field10060(argument2770: Int, argument2771: Int): [Enum543] + field10061: String + field10062: Scalar8 + field10063(argument2772: Int, argument2773: Int): [Enum538] + field10064: Enum544 + field10065(argument2774: Int, argument2775: Int): [String] + field10066: Scalar8 + field10067: Enum545 + field10068: Scalar8 +} + +type Object2135 { + field10046(argument2761: Int, argument2762: Int): [Object63] + field10047(argument2763: String): Object63 + field10048(argument2764: Int, argument2765: Int): [Object63] + field10049: Scalar8 + field10050: String + field10051(argument2766: Int, argument2767: Int): [Object2132] +} + +type Object2136 { + field10073(argument2778: Int, argument2779: Int): [String] + field10074(argument2780: Int, argument2781: Int): [Enum540] + field10075: Enum541 + field10076: String + field10077(argument2782: String): Object63 + field10078(argument2783: Int, argument2784: Int): [Object63] + field10079(argument2785: String): Object63 + field10080(argument2786: Int, argument2787: Int): [Object63] + field10081: Enum542 + field10082: Boolean + field10083(argument2788: Enum543): Boolean + field10084(argument2789: Enum538): Boolean + field10085: String + field10086: Scalar8 + field10087: Scalar8 + field10088(argument2790: Int, argument2791: Int): [Enum543] + field10089: String + field10090: Scalar8 + field10091(argument2792: Int, argument2793: Int): [Enum538] + field10092: Enum544 + field10093(argument2794: Int, argument2795: Int): [String] + field10094: Scalar8 + field10095: Enum545 + field10096: Scalar8 +} + +type Object2137 { + field10101(argument2800: Int, argument2801: Int): [String] + field10102(argument2802: Int, argument2803: Int): [Enum540] + field10103: Enum541 + field10104: String + field10105(argument2804: String): Object63 + field10106(argument2805: Int, argument2806: Int): [Object63] + field10107(argument2807: String): Object63 + field10108(argument2808: Int, argument2809: Int): [Object63] + field10109: Enum542 + field10110: Boolean + field10111: Boolean + field10112(argument2810: Enum543): Boolean + field10113(argument2811: Enum538): Boolean + field10114: String + field10115: Scalar8 + field10116: Scalar8 + field10117(argument2812: Int, argument2813: Int): [Enum543] + field10118: String + field10119: Scalar8 + field10120(argument2814: Int, argument2815: Int): [Enum538] + field10121: Enum544 + field10122(argument2816: Int, argument2817: Int): [String] + field10123: Scalar8 + field10124: Enum545 + field10125: Scalar8 +} + +type Object2138 { + field10132: [Object368!]! +} + +type Object2139 { + field10136: Boolean! + field10137: ID! + field10138: String! +} + +type Object214 implements Interface12 { + field1234: String! + field161: Int + field183: String + field791: Object34 + field843: Object148 + field849: Object34 + field850: Object148 +} + +type Object2140 { + field10143: Object2141! + field10175: Object2149! +} + +type Object2141 { + field10144: [Object2142!]! + field10148: Int + field10149: [Object2143!]! + field10154: [Object2144!]! + field10158: [Object2145!]! + field10162: [Object2146!]! + field10167: [Object2147!]! + field10171: [Object2148!]! +} + +type Object2142 { + field10145: Int + field10146: String! + field10147: String! +} + +type Object2143 { + field10150: [Object2143!]! + field10151: Int + field10152: String! + field10153: String! +} + +type Object2144 { + field10155: Int + field10156: String! + field10157: String! +} + +type Object2145 { + field10159: Int + field10160: String! + field10161: String! +} + +type Object2146 { + field10163: Enum546! + field10164: Int + field10165: String! + field10166: String! +} + +type Object2147 { + field10168: Int + field10169: String! + field10170: String! +} + +type Object2148 { + field10172: Int + field10173: String! + field10174: Enum443! +} + +type Object2149 { + field10176: [Object2146!]! + field10177: [Object2150!]! + field10181: [Object2151!]! +} + +type Object215 { + field1236: Boolean + field1237: Int + field1238: String +} + +type Object2150 { + field10178: Enum547! + field10179: String! + field10180: String! +} + +type Object2151 { + field10182: Enum547! + field10183: String! + field10184: String! +} + +type Object2152 { + field10186: [Object2153!]! + field10214: Object2140 + field10215: [Object2154!]! + field10216: [Object2155!]! + field10252: Object2157 + field10262: [Object2158!]! +} + +type Object2153 implements Interface111 { + field10187: String + field10188: String + field10189: String + field10190: String + field10191: String + field10192: String + field10193: String + field10194: String + field10195: String + field10196: String + field10197: ID! + field10198: Boolean + field10199: String + field10200: String + field10201: String + field10202: String + field10203: String + field10204: String + field10205: String + field10206: String + field10207: String + field10208: String + field10209: String + field10210: String + field10211: String + field10212: Int + field10213: Int +} + +type Object2154 implements Interface111 { + field10187: String + field10188: String + field10189: String + field10190: String + field10191: String + field10192: String + field10193: String + field10194: String + field10195: String + field10196: String + field10197: ID! + field10198: Boolean + field10199: String + field10200: String + field10201: String + field10202: String + field10203: String + field10204: String + field10205: String + field10206: String + field10207: String + field10208: String + field10209: String + field10210: String + field10211: String + field10212: Int + field10213: Int +} + +type Object2155 { + field10217: String + field10218: String + field10219: String + field10220: Object2156 + field10226: Enum441 + field10227: Scalar1 + field10228: String + field10229: String + field10230: String + field10231: String + field10232: String + field10233: Enum550 + field10234: ID! + field10235: Boolean + field10236: [String!] + field10237: String + field10238: [String!] + field10239: String + field10240: String + field10241: Object2156 + field10242: String + field10243: String + field10244: String + field10245: String + field10246: String + field10247: [String!] + field10248: String + field10249: String + field10250: Scalar1 + field10251: [String!] +} + +type Object2156 { + field10221: String + field10222: String + field10223: String + field10224: String + field10225: String +} + +type Object2157 { + field10253: Int! + field10254: Int! + field10255: Int! + field10256: Int! + field10257: Int! + field10258: Int! + field10259: Int! + field10260: Int! + field10261: Enum547! +} + +type Object2158 { + field10263: String + field10264: String + field10265: String + field10266: String + field10267: String + field10268: String + field10269: String + field10270: String + field10271: String + field10272: String + field10273: String + field10274: String + field10275: String + field10276: String + field10277: String + field10278: String + field10279: String + field10280: String + field10281: String +} + +type Object2159 { + field10293: Boolean + field10294(argument2849: Int, argument2850: Int): [String] + field10295: Scalar8 + field10296(argument2851: Int, argument2852: Int): [Object2160] + field10306: Object67 +} + +type Object216 { + field1240: Object34 + field1241: Object148 + field1242: Int + field1243: Object34 + field1244: Object148 + field1245: Object594! +} + +type Object2160 { + field10297: String + field10298(argument2853: Int, argument2854: Int): [Object2161] + field10305: String +} + +type Object2161 { + field10299: Scalar8 + field10300: String + field10301: String + field10302: String + field10303: String + field10304: String +} + +type Object2162 { + field10308: [Object2163!]! +} + +type Object2163 { + field10309: String + field10310: Boolean + field10311: String + field10312: Boolean + field10313: Boolean + field10314: [Object2164!]! + field10319: String + field10320: String + field10321: String + field10322: String +} + +type Object2164 { + field10315: Boolean! + field10316: String! + field10317: Boolean! + field10318: [String!]! +} + +type Object2165 { + field10324: [Object2166!]! + field10326: String + field10327: Boolean! +} + +type Object2166 { + field10325: String! +} + +type Object2167 { + field10329: String + field10330: [Interface80] + field10331: ID! + field10332: String + field10333: Object586 +} + +type Object2168 { + field10347: String! + field10348: String! + field10349: String! + field10350: String! + field10351: String! + field10352: String! + field10353: String! + field10354: String! + field10355: String! + field10356: String! + field10357: String! + field10358: String! + field10359: String! + field10360: String! + field10361: String! + field10362: String! + field10363: String! + field10364: String! + field10365: String! + field10366: String! + field10367: String! +} + +type Object2169 { + field10371: [Object2170] + field10374: Object16! +} + +type Object217 { + field1247: ID + field1248: String +} + +type Object2170 { + field10372: String! + field10373: Object1702 +} + +type Object2171 { + field10377: Object1702! + field10378: [Object1706!]! +} + +type Object2172 { + field10387: [Object2173] + field10390: Object16! +} + +type Object2173 { + field10388: String + field10389: Interface85 +} + +type Object2174 { + field10397: Object1132 + field10398: [Object1131!] + field10399: Object594! +} + +type Object2175 { + field10405: [Object2176] + field10408: Object16! +} + +type Object2176 { + field10406: String! + field10407: Object1682 +} + +type Object2177 { + field10411: [Object2178] + field10414: Object16! +} + +type Object2178 { + field10412: String! + field10413: Object1688 +} + +type Object2179 { + field10416: [Object2180] + field10419: Object16! +} + +type Object218 implements Interface12 { + field1253: Object145! + field161: Int + field791: Object34 + field843: Object148 + field849: Object34 + field850: Object148 +} + +type Object2180 { + field10417: String! + field10418: Object1690 +} + +type Object2181 { + field10421: [Object2182] + field10424: Object16! +} + +type Object2182 { + field10422: String! + field10423: Object1695 +} + +type Object2183 { + field10430: String! + field10431: String! + field10432: String! + field10433: String! + field10434: String! + field10435: String! + field10436: String! + field10437: String! + field10438: String! +} + +type Object2184 { + field10444: [Object2185] + field10447: Object16! +} + +type Object2185 { + field10445: String! + field10446: Object1694 +} + +type Object2186 { + field10451: [Object2187] + field10454: Object16! +} + +type Object2187 { + field10452: String! + field10453: Object1121 +} + +type Object2188 { + field10457: [Object2189] + field10472: Object16! +} + +type Object2189 { + field10458: String! + field10459: Object2190 +} + +type Object219 implements Interface3 @Directive1(argument1 : "defaultValue129") @Directive1(argument1 : "defaultValue130") { + field1255: Enum48 + field15: ID! + field204: Object45 +} + +type Object2190 implements Interface112 { + field10460: Enum551 + field10461: String + field10462: [Object2191] + field10468: Scalar1! + field10469: Object589 + field10470: Object1121 + field10471: Object1121 +} + +type Object2191 { + field10463: String! + field10464: String + field10465: String + field10466: String + field10467: String +} + +type Object2192 { + field10481: [Object2193] + field10484: Object16! +} + +type Object2193 { + field10482: String! + field10483: Object1718 +} + +type Object2194 { + field10488: Object597 + field10489: Object160 + field10490: Object2195 +} + +type Object2195 implements Interface3 @Directive1(argument1 : "defaultValue390") @Directive1(argument1 : "defaultValue391") { + field15: ID! + field161: ID! + field183: String +} + +type Object2196 { + field10492: Union16 + field10493: Object594 +} + +type Object2197 { + field10497: [Object2198] + field10500: Object16! + field10501: Int +} + +type Object2198 { + field10498: String! + field10499: Object594 +} + +type Object2199 { + field10509: ID! + field10510: Object45 @Directive3 + field10511: String + field10512: String +} + +type Object22 { + field91: [Object10] + field92: Object6 + field93: Object6 +} + +type Object220 { + field1257: String + field1258: Object145! + field1259: Boolean + field1260: Boolean + field1261: Boolean + field1262: String + field1263: Boolean + field1264: Boolean +} + +type Object2200 implements Interface3 @Directive1(argument1 : "defaultValue392") @Directive1(argument1 : "defaultValue393") { + field1044: Object1652 + field10516: String + field10517: Object6 + field10518: Scalar4 + field10519: Scalar4 + field10526: String + field10527: Object1651 + field10528: String! + field15: ID! + field161: ID! + field185: Enum555 + field7424: [Object2201] +} + +type Object2201 { + field10520: Scalar4 + field10521: Scalar5 + field10522: Scalar4 + field10523: Enum553 + field10524: Enum554 + field10525: ID +} + +type Object2202 { + field10539: [Object2203]! + field10542: Object16! + field10543: Int! +} + +type Object2203 { + field10540: String! + field10541: Object45 +} + +type Object2204 { + field10548: String! + field10549: String! + field10550: String @Directive9 + field10551: Int! + field10552: String! +} + +type Object221 { + field1267: Object175 @Directive9 + field1268: Object173 @Directive9 + field1269: Object88 @Directive9 + field1270: Object177 @Directive9 + field1271: Object594 @Directive9 +} + +type Object222 { + field1277: Scalar4 +} + +type Object223 { + field1278: Boolean! +} + +type Object224 { + field1279: Scalar4 + field1280: String! +} + +type Object225 { + field1286: Enum50! + field1287: String + field1288: ID! +} + +type Object226 { + field1290: Enum50! + field1291: [String] + field1292: Union5 + field1293: [String!] + field1294: [String!] + field1295: String + field1296: ID! + field1297: Scalar4 + field1298: Object227 + field1308: [Object228] + field1309: Object144 +} + +type Object227 { + field1299: Enum50! + field1300: [String!]! + field1301: Union5! + field1302: String + field1303: ID! + field1304: Scalar4! + field1305: [Object228!]! +} + +type Object228 implements Interface3 @Directive1(argument1 : "defaultValue131") @Directive1(argument1 : "defaultValue132") { + field1306: Object228 + field1307: Int! + field15: ID! + field161: ID! + field183: String! +} + +type Object229 { + field1312: String + field1313: Scalar5 + field1314: Scalar6 + field1315: String + field1316: String + field1317: ID! + field1318: String + field1319: String + field1320: String + field1321: Scalar5 + field1322: Boolean + field1323: String + field1324: String + field1325: Scalar5 + field1326: String + field1327: [String] +} + +type Object23 { + field96: [Object18] + field97: Object6 + field98: Object6 +} + +type Object230 { + field1329: Object88 + field1330: Float! +} + +type Object231 { + field1333: Object594 + field1334: Float! +} + +type Object232 implements Interface3 @Directive1(argument1 : "defaultValue133") @Directive1(argument1 : "defaultValue134") @Directive1(argument1 : "defaultValue135") { + field1311: Object229 @Directive9 + field1336: [Object233] + field1342: Boolean + field15: ID! + field204: Object45 + field808: Object138 + field809: [Object142] + field832: [Object143] +} + +type Object233 { + field1337: Object85 + field1338: ID! + field1339: ID! + field1340: String + field1341: ID! +} + +type Object234 { + field1344: Object594 + field1345: Float! +} + +type Object235 { + field1352: Scalar1! + field1353: String + field1354: String + field1355: String! + field1356: ID! + field1357: Scalar1! + field1358: String + field1359: String + field1360: String! + field1361: Object594 +} + +type Object236 { + field1367: String + field1368: Scalar5 + field1369: Object594 + field1370: Scalar5 +} + +type Object237 implements Interface3 @Directive1(argument1 : "defaultValue136") @Directive1(argument1 : "defaultValue137") { + field1387: Int! + field1388: Boolean + field1389: Boolean + field15: ID! + field169: String + field882: Int +} + +type Object238 { + field1392: [Object239] + field1414: Object16 +} + +type Object239 { + field1393: String + field1394: Object240 +} + +type Object24 { + field104: Scalar6 + field105: Object1 + field106: Scalar5 + field107: Scalar5 +} + +type Object240 implements Interface3 @Directive1(argument1 : "defaultValue138") @Directive1(argument1 : "defaultValue139") { + field1395: Object241 + field1402(argument160: InputObject6!): Object244 + field15: ID! + field161: ID! + field163: Scalar1! + field164: String! + field165: Scalar1! + field166: String! + field183: String! +} + +type Object241 { + field1396: [Object242] + field1413: Object16 +} + +type Object242 { + field1397: String + field1398: Object243 +} + +type Object243 implements Interface3 @Directive1(argument1 : "defaultValue140") @Directive1(argument1 : "defaultValue141") @Directive1(argument1 : "defaultValue142") { + field1399: String + field1400(argument158: InputObject6!): Boolean + field1401(argument159: InputObject6!): Boolean + field1402(argument160: InputObject6!): Object244 + field1412: String + field15: ID! + field161: ID! + field163: Scalar1! + field164: String! + field165: Scalar1! + field166: String! + field467: Boolean! + field799: String! +} + +type Object244 { + field1403: [Object245] + field1411: Object16 +} + +type Object245 { + field1404: String + field1405: Interface18 +} + +type Object246 { + field1407: String + field1408: ID! + field1409: String! +} + +type Object247 { + field1416: String + field1417: String + field1418: Int + field1419: Int + field1420: Boolean + field1421: Int + field1422: String + field1423: Int + field1424: String + field1425: String + field1426: String + field1427: String + field1428: String + field1429: String +} + +type Object248 { + field1432(argument168: Int, argument169: Int): [String] + field1433: Enum53 +} + +type Object249 implements Interface3 @Directive1(argument1 : "defaultValue143") @Directive1(argument1 : "defaultValue144") { + field1276: Union6! + field1310: ID! + field1440: Boolean + field1441: String + field15: ID! + field204: Object45! + field331: [Enum18!]! + field807: Union7! + field835: Object145 +} + +type Object25 { + field112: String + field113: Object1 +} + +type Object250 { + field1435: Scalar10! + field1436: Scalar11 + field1437: Enum18! +} + +type Object251 { + field1438: Scalar10! +} + +type Object252 { + field1439: Boolean +} + +type Object253 { + field1443: [Object254] + field1450: Object16! +} + +type Object254 { + field1444: String! + field1445: Interface19 +} + +type Object255 implements Interface3 @Directive1(argument1 : "defaultValue145") @Directive1(argument1 : "defaultValue146") { + field1452: Boolean + field1453(argument175: Int, argument176: Int): [Object256] + field1473: Scalar8 + field15: ID! + field204: Object45 + field260: Int + field834(argument173: Int, argument174: Int): [String] +} + +type Object256 { + field1454: Object257 + field1462(argument181: Int, argument182: Int): [Object260] + field1468: Object45 + field1469: Int + field1470: Object45 + field1471: Int + field1472: Int +} + +type Object257 { + field1455(argument177: Int, argument178: Int): [Object258] +} + +type Object258 { + field1456(argument179: Int, argument180: Int): [Object259] + field1459: Object45 + field1460: Scalar8 + field1461: Int +} + +type Object259 { + field1457: Object45 + field1458: Int +} + +type Object26 { + field115: [Object27] + field118: Object16 +} + +type Object260 { + field1463: Object45 + field1464: Int + field1465: Object45 + field1466: Int + field1467: Int +} + +type Object261 { + field1479: String + field1480: Int +} + +type Object262 { + field1498: String + field1499: Enum55 + field1500: Scalar8 + field1501: Boolean + field1502: Boolean + field1503: Scalar8 + field1504: Enum56 + field1505: Scalar8 + field1506: String + field1507: Scalar8 + field1508: String + field1509: String + field1510: String + field1511: String + field1512: Enum57 + field1513: String + field1514: String + field1515: String + field1516: String +} + +type Object263 { + field1518: String + field1519: String + field1520: String + field1521: String +} + +type Object264 { + field1525(argument192: Int, argument193: Int): [Object264] + field1526: String + field1527: Int + field1528: Enum58 + field1529: String +} + +type Object265 { + field1531(argument196: Int, argument197: Int): [Object266] + field1534: String + field1535: Object267 + field1570(argument220: Int, argument221: [String], argument222: Int): [Object268] + field1571: Object271 +} + +type Object266 { + field1532: String + field1533: Scalar8 +} + +type Object267 { + field1536: Boolean + field1537(argument198: Int, argument199: [String], argument200: Int): [Object268] + field1541: Int + field1542: Object269 + field1567: String + field1568: String + field1569: Scalar8 +} + +type Object268 { + field1538: String + field1539: String + field1540: String +} + +type Object269 { + field1543: Boolean + field1544(argument201: Int, argument202: Int): [Object267] + field1545(argument203: Int, argument204: Int): [Object270] + field1548(argument207: Int, argument208: Int): [String] + field1549(argument209: Int, argument210: Int): [String] + field1550: Boolean + field1551: String + field1552: String + field1553: Boolean + field1554: Scalar8 + field1555: Boolean + field1556(argument211: Int, argument212: [String], argument213: Int): [Object268] + field1557: String + field1558: Boolean + field1559(argument214: Int, argument215: Int): [Object271] + field1562(argument216: Int, argument217: Int): [Object267] + field1563: Boolean + field1564(argument218: Int, argument219: Int): [String] + field1565: Boolean + field1566: String +} + +type Object27 { + field116: String + field117: Interface2 +} + +type Object270 { + field1546: String + field1547(argument205: Int, argument206: Int): [String] +} + +type Object271 { + field1560: String + field1561: Enum59 +} + +type Object272 { + field1574: String + field1575: String + field1576: String + field1577: Object589 + field1578: String + field1579: Scalar1 + field1580: String + field1581: Object589 + field1582: String + field1583: Scalar1 + field1584: String + field1585: String + field1586: String + field1587: String + field1588: String +} + +type Object273 { + field1607: String + field1608: [Enum18!] + field1609: Int + field1610: Int + field1611: String + field1612: String + field1613: String + field1614: String + field1615: Int + field1616: Int + field1617: String + field1618: [Enum18!] + field1619: Int + field1620: Int +} + +type Object274 { + field1624: Object275 + field1629: Object275 +} + +type Object275 { + field1625: Scalar4 + field1626: String + field1627: String + field1628: Scalar4 +} + +type Object276 { + field1633: String + field1634: String! +} + +type Object277 implements Interface22 & Interface23 { + field1640: ID! + field1641: String + field1642(argument228: String): String +} + +type Object278 implements Interface3 @Directive1(argument1 : "defaultValue147") @Directive1(argument1 : "defaultValue148") @Directive1(argument1 : "defaultValue149") @Directive1(argument1 : "defaultValue150") @Directive1(argument1 : "defaultValue151") @Directive1(argument1 : "defaultValue152") @Directive1(argument1 : "defaultValue153") @Directive1(argument1 : "defaultValue154") { + field1391(argument157: InputObject5): Object238 + field15: ID! + field153: String! + field161: ID! + field1645: Object279 + field1664: Object283 + field1676: Object286 + field1721: Object293 + field1731(argument231: String, argument232: Int = 2): Object296 + field1746: Object300 + field1751(argument239: String, argument240: String, argument241: Int = 5, argument242: Int, argument243: InputObject10 = {inputField20 : EnumValue573, inputField19 : EnumValue571}, argument244: String): Object303 + field1777: Object308 + field1788(argument245: InputObject11): Object311 + field1790(argument246: String!): Object312 + field1797: Object313 @Directive7(argument4 : true) + field1806: Object315 @Directive7(argument4 : true) + field1929: Object341 + field1939: Object344 + field260: Int! +} + +type Object279 { + field1646: [Object280] +} + +type Object28 { + field126: Object1 + field127: Enum5 + field128: ID +} + +type Object280 { + field1647: String + field1648: Object281 +} + +type Object281 { + field1649: ID! + field1650: Int + field1651: Int! + field1652: String + field1653: String + field1654: Object282 +} + +type Object282 { + field1655: Boolean + field1656: Scalar1 + field1657: String @deprecated + field1658: Enum63 + field1659: Object589 + field1660: Scalar1 + field1661: String @deprecated + field1662: Enum63 + field1663: Object589 +} + +type Object283 { + field1665: [Object284] +} + +type Object284 { + field1666: String + field1667: Object285 +} + +type Object285 { + field1668: ID! + field1669: Int + field1670: Int! + field1671: String + field1672: Int + field1673: String + field1674: Object282 + field1675: Object240 @Directive9 +} + +type Object286 { + field1677: [Object287] +} + +type Object287 { + field1678: String + field1679: Interface24 +} + +type Object288 { + field1682: String + field1683: String + field1684: String + field1685: String + field1686: ID + field1687: String + field1688: Enum64 + field1689: String + field1690: Enum65 +} + +type Object289 { + field1693: [Object290] +} + +type Object29 { + field132: ID! + field133: String + field134: Scalar1 @deprecated + field135: Scalar1 @deprecated + field136: Object1 + field137: Scalar3 + field138: Enum7 + field139: Enum8 +} + +type Object290 { + field1694: String + field1695: Interface25 +} + +type Object291 { + field1702: ID + field1703: Enum64 + field1704: Object282 + field1705: Enum66 + field1706: String +} + +type Object292 { + field1713: String + field1714: ID + field1715: Enum64 + field1716: Object282 + field1717: Enum67 + field1718: String +} + +type Object293 { + field1722: [Object294] +} + +type Object294 { + field1723: String + field1724: Object295 +} + +type Object295 { + field1725: ID! + field1726: Int + field1727: Int! + field1728: String + field1729: String + field1730: Object282 +} + +type Object296 { + field1732: [Object297!]! + field1745: Object16! +} + +type Object297 { + field1733: String! + field1734: Interface26! +} + +type Object298 { + field1735: [Object299!]! + field1742: Object16! +} + +type Object299 { + field1736: String! + field1737: Interface27! +} + +type Object3 implements Interface3 @Directive1(argument1 : "defaultValue1") @Directive1(argument1 : "defaultValue2") @Directive1(argument1 : "defaultValue3") @Directive1(argument1 : "defaultValue4") @Directive1(argument1 : "defaultValue5") @Directive1(argument1 : "defaultValue6") @Directive1(argument1 : "defaultValue7") @Directive1(argument1 : "defaultValue8") @Directive1(argument1 : "defaultValue9") { + field1254(argument396: Boolean): [Object45] + field131: [Object495] @deprecated + field15: ID! + field153: String! + field16: Scalar1 + field162(argument31: [ID!], argument32: [ID!]): [Object35] + field163: Scalar1! + field164: String + field1644: Object278 + field165: Scalar1 + field166: String + field17: Object4 + field2006(argument260: Enum78): Object350 + field2241: Enum157 + field2369(argument376: Boolean): Object435 + field2605: Int + field2606: [Object3] + field2607: [Object484!] @Directive9 + field2625: Object490 + field2645: String @deprecated + field2646: Boolean + field2647: Int @Directive9 + field2648: Boolean + field2649: Boolean @deprecated + field2650: Boolean @Directive9 + field2651: Boolean + field2652: Boolean + field2656: String + field2657: Int + field2658: Object3 + field2659: String + field2660: [Object496] + field2677: Enum155 @Directive9 + field2678: Enum156 @Directive9 + field2679: Enum158 @Directive9 + field2680: Enum159 + field2681(argument397: InputObject21): [Object499] + field2684: Int + field2685: [Enum160!] @Directive9 + field2686: Enum161 @Directive9 + field2687: Enum162! @Directive9 + field2688: String + field2689: Int + field2690: String + field2691: String + field2692: String + field2693: String + field2694: [Object619] + field2695: Object502 + field2798(argument411: [ID!]): Object526 + field3002: Object585 @Directive9 + field3008: Object587 @Directive9 + field3011: Object588 @Directive9 + field3014: String +} + +type Object30 { + field146: [Object31] + field149: Object16 +} + +type Object300 { + field1747: [Object301] +} + +type Object301 { + field1748: String + field1749: Object302 +} + +type Object302 implements Interface25 { + field1696: ID! + field1697: Int! + field1698: String + field1699: String + field1700: Object282 + field1750: Int! +} + +type Object303 { + field1752: [Object304] + field1771: Object307! + field1776: Int +} + +type Object304 { + field1753: String! + field1754: Object305 +} + +type Object305 { + field1755: Scalar1 + field1756: String + field1757: String + field1758: ID + field1759: Boolean + field1760: Boolean + field1761: String + field1762: Object45 + field1763: [Object306] + field1768: String + field1769: String + field1770: String +} + +type Object306 { + field1764: ID + field1765: String + field1766: String + field1767: String +} + +type Object307 { + field1772: String! + field1773: Boolean! + field1774: Boolean! + field1775: String! +} + +type Object308 { + field1778: [Object309!]! + field1786: Enum71! + field1787: ID! +} + +type Object309 implements Interface26 & Interface28 { + field1306: Interface26 + field151: Object3 + field153: ID @deprecated + field161: ID! + field163: Scalar1 + field164: Object589 + field165: Scalar1 + field166: Object589 + field1740: [ID!] + field1741: [Interface26!] + field1743(argument236: InputObject9, argument237: Int = 4, argument238: String): Object296 + field1744: String + field1779: ID! + field1780: Boolean! + field1781: Int! + field1782: Object310! + field183: String! + field926(argument233: InputObject8, argument234: Int = 3, argument235: String): Object298 +} + +type Object31 { + field147: String + field148: Object7 +} + +type Object310 { + field1783: Enum71 + field1784: Boolean! + field1785: ID +} + +type Object311 { + field1789: String +} + +type Object312 { + field1791: String + field1792: Enum72 + field1793: String + field1794: ID + field1795: Int + field1796: String +} + +type Object313 { + field1798: String + field1799: [Object314!] + field1804: Boolean! + field1805: String +} + +type Object314 { + field1800: Boolean! + field1801: ID! + field1802: String! + field1803: String! +} + +type Object315 { + field1807: [Object316] +} + +type Object316 { + field1808: String + field1809: Object317 +} + +type Object317 { + field1810: Scalar1 + field1811: Object589 + field1812: ID! + field1813: Object45! + field1814: [Object318!]! + field1921: Scalar1 + field1922: Int + field1923: Object340! + field1926: String + field1927: Scalar1 + field1928: Object589 +} + +type Object318 implements Interface3 @Directive1(argument1 : "defaultValue155") @Directive1(argument1 : "defaultValue156") { + field15: ID! + field161: ID! + field1815(argument247: Enum73): [Object319] @deprecated + field1835: Object324 + field1850: Object326! + field1920(argument250: Enum73): [Interface29] +} + +type Object319 { + field1816: Object320 + field1829: Object323 + field1834: Enum73! +} + +type Object32 implements Interface3 @Directive1(argument1 : "defaultValue14") @Directive1(argument1 : "defaultValue15") @Directive1(argument1 : "defaultValue16") @Directive1(argument1 : "defaultValue17") { + field15: ID! + field158: [Object33] + field163: Scalar1 + field17: Object4 + field173: [Object38] + field192: [Object43] + field198: [Object44] + field201: Boolean + field202: Boolean + field203: String + field204: Object45 + field2189: [Object392] + field2241: String + field2364: String @Directive9 + field2365: Int! + field2366: Scalar4 + field799: String +} + +type Object320 implements Interface29 { + field1817: [Object321] + field1828: [String] @deprecated +} + +type Object321 { + field1818: Int + field1819: Int + field1820: Int + field1821(argument248: [Enum74]!): [Object322] @Directive9 + field1827: String! +} + +type Object322 implements Interface30 { + field1822: Int! + field1823: Enum74! + field1824: String + field1825: String + field1826: Int! +} + +type Object323 implements Interface29 { + field1817: [Object321] + field1828: [String] @deprecated + field1830: String + field1831: String + field1832: [Object323] + field1833: [String] +} + +type Object324 { + field1836: Int! @deprecated + field1837: String + field1838: String + field1839: String + field1840: Object325 + field1848: Int! + field1849: Int! +} + +type Object325 { + field1841: String + field1842: String + field1843: String + field1844: String + field1845: String + field1846: String + field1847: String +} + +type Object326 implements Interface3 @Directive1(argument1 : "defaultValue157") @Directive1(argument1 : "defaultValue158") @Directive1(argument1 : "defaultValue159") { + field1132: String + field15: ID! + field161: ID! + field163: Scalar1 + field165: Scalar1 + field185: Object337! + field1851: String + field1852: Scalar1 + field1853: [Object323] + field1854: Enum75 + field1855: String + field1856: Int + field1857: [Object318] + field1858: Int + field1859: String + field1860: Object327 + field1892: String + field1893: Enum77 + field1894: Object45 + field1895: Enum78 + field1896: Object3 + field1897: [Object333] @Directive9 + field1905: [Object336] @Directive9 + field1911: [Object338] + field1919: String + field791: Object589 + field799: String + field849: Object589 +} + +type Object327 { + field1861: Object328 @deprecated + field1872: [Object329] + field1890: Int! @deprecated + field1891: Object326! @deprecated +} + +type Object328 { + field1862: Float + field1863: Float + field1864: Int + field1865: String + field1866: Float + field1867: String + field1868: Int + field1869: Int + field1870: Int + field1871: String +} + +type Object329 { + field1873: [Object330] + field1886: Int! + field1887: String + field1888: Object331 + field1889: String +} + +type Object33 { + field159: Scalar1 + field160: Object34 +} + +type Object330 { + field1874: Float + field1875: Int + field1876: String + field1877: Object331 + field1880(argument249: [Enum74]!): [Object332] @Directive9 + field1884: String + field1885: Enum76 +} + +type Object331 { + field1878: Float + field1879: Float +} + +type Object332 implements Interface30 { + field1822: Int! + field1823: Enum74! + field1824: String + field1825: String + field1881: Int! + field1882: Int! + field1883: Int! +} + +type Object333 { + field1898: Int @Directive9 + field1899: [Object334] @Directive9 + field1904: String @Directive9 +} + +type Object334 { + field1900: Int! @Directive9 + field1901: Object335! @Directive9 +} + +type Object335 { + field1902: String @Directive9 + field1903: String @Directive9 +} + +type Object336 { + field1906: [Object333] @Directive9 + field1907: Int @Directive9 +} + +type Object337 { + field1908: String + field1909: Enum79! + field1910: [Enum80!] +} + +type Object338 { + field1912: [Enum81] + field1913: Object339 + field1918: Enum79! +} + +type Object339 { + field1914: [String] @deprecated + field1915: String + field1916: Enum74 + field1917: String +} + +type Object34 implements Interface3 @Directive1(argument1 : "defaultValue18") @Directive1(argument1 : "defaultValue19") @Directive1(argument1 : "defaultValue20") { + field15: ID! + field161: ID! + field162(argument31: [ID!], argument32: [ID!]): [Object35] + field171: Object589! + field172: String! +} + +type Object340 { + field1924: String + field1925: Enum82! +} + +type Object341 { + field1930: [Object342] +} + +type Object342 { + field1931: String + field1932: Object343 +} + +type Object343 { + field1933: ID! + field1934: Int + field1935: Int! + field1936: String + field1937: String + field1938: Object282 +} + +type Object344 { + field1940: [Object345] +} + +type Object345 { + field1941: String + field1942: Object346 +} + +type Object346 { + field1943: ID! + field1944: Int! + field1945: String + field1946: Int + field1947: String + field1948: Object282 +} + +type Object347 { + field1952: String + field1953: Enum83 + field1954: String + field1955: Scalar8 + field1956: Scalar8 + field1957: String + field1958: String + field1959: Enum84 + field1960: String + field1961: Boolean + field1962: Boolean + field1963: Boolean + field1964: Boolean + field1965: Boolean + field1966: Boolean + field1967: Boolean + field1968: Boolean + field1969: Boolean + field1970: Boolean + field1971: String + field1972: Scalar8 + field1973: Object45 + field1974: Scalar8 + field1975: String + field1976: Scalar8 + field1977: String + field1978: Scalar8 + field1979: Enum85 + field1980: Enum86 + field1981: String + field1982: Scalar8 + field1983: String + field1984: Enum87 +} + +type Object348 { + field1990: Object349 + field2000: Scalar8 + field2001: Scalar8 + field2002: Enum92 + field2003: Enum91 + field2004: Enum90 +} + +type Object349 { + field1991: Scalar8 + field1992: Scalar8 + field1993: Scalar8 + field1994: Scalar8 + field1995: Enum91 + field1996: Scalar8 + field1997: Scalar8 + field1998: Enum92 + field1999: Enum91 +} + +type Object35 implements Interface3 @Directive1(argument1 : "defaultValue21") @Directive1(argument1 : "defaultValue22") { + field15: ID! + field151: Object3! + field161: ID! + field163: Scalar1! + field164: String + field165: Scalar1 + field166: String + field167: Object34! + field168: Object36! + field170: Object37! +} + +type Object350 { + field2007: [Object351] + field2010: Object16 +} + +type Object351 { + field2008: String + field2009: Object326 +} + +type Object352 implements Interface3 @Directive1(argument1 : "defaultValue160") @Directive1(argument1 : "defaultValue161") { + field15: ID! + field161: ID! + field183: String + field2013: [Object141] + field2014: String + field2015: String + field2016: String + field2017: String + field2018: String + field2019: String + field2020: String + field2021: Enum94 + field2022: Scalar4 + field2023: String + field2024: Scalar6 + field2025: String + field2026: String + field2027: String + field2028: Enum95! + field2029: Object353 + field2032: [Object354] + field204: Object45 @Directive3 + field2048: String + field2049: Int + field2050: String + field838: Enum96! +} + +type Object353 { + field2030: Int + field2031: String +} + +type Object354 { + field2033: String + field2034: String + field2035: String + field2036: String + field2037: String + field2038: ID! + field2039: Scalar4 + field2040: Object45 + field2041: Object352 + field2042: String + field2043: String + field2044: String + field2045: Int + field2046: String + field2047: Int +} + +type Object355 { + field2055(argument267: Int, argument268: Int): [String] + field2056: Enum97 +} + +type Object356 implements Interface3 @Directive1(argument1 : "defaultValue162") @Directive1(argument1 : "defaultValue163") { + field1306: Object45 + field1473: Scalar8 + field15: ID! + field204: Object45 + field2059: Int + field2060: Object357 + field260: Scalar8 +} + +type Object357 { + field2061: Scalar8 + field2062: Enum98 + field2063: String +} + +type Object358 implements Interface3 @Directive1(argument1 : "defaultValue164") @Directive1(argument1 : "defaultValue165") { + field1276: Scalar10 + field1440: Boolean + field15: ID! + field204: Object45 + field2066: Boolean + field2067: Boolean + field2068: Object359 + field2071: Object45 + field2072: Enum99! + field260: ID! + field807: Scalar10 +} + +type Object359 { + field2069: Int + field2070: Int +} + +type Object36 implements Interface3 @Directive1(argument1 : "defaultValue23") @Directive1(argument1 : "defaultValue24") { + field15: ID! + field161: ID! + field169: String! +} + +type Object360 implements Interface3 @Directive1(argument1 : "defaultValue166") @Directive1(argument1 : "defaultValue167") { + field1276: Union8! + field1310: ID! + field1440: Boolean + field15: ID! + field204: Object45 + field2079: Object249 + field807: Union9! + field834: [Enum18!]! + field835: Object145 +} + +type Object361 { + field2074: Scalar10! + field2075: Scalar11 + field2076: Enum18! +} + +type Object362 { + field2077: Scalar10! +} + +type Object363 { + field2078: Boolean +} + +type Object364 { + field2082: Scalar8 + field2083: Object365 + field2086: Scalar8 + field2087(argument277: Int, argument278: Int): [String] +} + +type Object365 { + field2084: Enum100 + field2085: String +} + +type Object366 { + field2092: Enum18! + field2093: Scalar1! +} + +type Object367 { + field2095: Object368! + field2107: Object371 + field2119: String @Directive9 +} + +type Object368 { + field2096: [String!]! @Directive9 + field2097: String! + field2098: String! @Directive9 + field2099: [Object45!]! @Directive9 + field2100: Boolean! + field2101: String + field2102: String! + field2103: [Object369!] + field2104: String @Directive9 + field2105: String! + field2106: Enum102! +} + +type Object369 implements Interface3 @Directive1(argument1 : "defaultValue168") @Directive1(argument1 : "defaultValue169") { + field130: String @Directive9 + field15: ID! + field183: String! + field838: Object370! + field915: String @Directive9 +} + +type Object37 implements Interface3 @Directive1(argument1 : "defaultValue25") @Directive1(argument1 : "defaultValue26") { + field15: ID! + field161: ID! + field168: Object36! + field169: String! +} + +type Object370 implements Interface3 @Directive1(argument1 : "defaultValue170") @Directive1(argument1 : "defaultValue171") { + field15: ID! + field183: String! +} + +type Object371 { + field2108: String + field2109: Scalar1 + field2110: Object589 + field2111: [Interface31!]! +} + +type Object372 { + field2113: Union10 + field2116: [Enum18!] + field2117: [Enum18!] + field2118: Union10 +} + +type Object373 { + field2114: Scalar1! +} + +type Object374 { + field2115: Scalar12! +} + +type Object375 { + field2123(argument286: Int, argument287: Int): [String] + field2124: Boolean + field2125(argument288: Int, argument289: Int): [Object376] + field2129: Object45 + field2130: Scalar8 + field2131: Scalar8 +} + +type Object376 { + field2126: Object45 + field2127: Scalar8 + field2128: Int +} + +type Object377 { + field2133(argument293: Int, argument294: Int): [Object378] + field2180: Scalar8 + field2181: String + field2182(argument323: Int, argument324: Int): [Object386] + field2183: Scalar8 +} + +type Object378 { + field2134(argument295: Int, argument296: Int): [Object379] + field2157(argument311: Int, argument312: Int): [Object385] + field2160: String + field2161: Scalar8 + field2162: String + field2163: String + field2164(argument313: Int, argument314: Int): [Object386] + field2178: String + field2179: Scalar8 +} + +type Object379 { + field2135(argument297: Int, argument298: Int): [Object380] + field2152: String + field2153: String + field2154: String + field2155: Scalar8 + field2156: String +} + +type Object38 { + field174: Object39 + field190: Enum10 + field191: String +} + +type Object380 { + field2136: String + field2137(argument299: Int, argument300: Int): [Object381] + field2151: String +} + +type Object381 { + field2138: String + field2139(argument301: Int, argument302: Int): [Object382] + field2144: String + field2145: String + field2146(argument307: Int, argument308: Int): [Object384] +} + +type Object382 { + field2140(argument303: Int, argument304: Int): [Object383] +} + +type Object383 { + field2141: String + field2142: String + field2143(argument305: Int, argument306: Int): [String] +} + +type Object384 { + field2147: String + field2148: String + field2149(argument309: Int, argument310: Int): [String] + field2150: String +} + +type Object385 { + field2158: String + field2159: String +} + +type Object386 { + field2165(argument315: Int, argument316: Int): [Object387] + field2171(argument319: Int, argument320: Int): [Object389] + field2177: String +} + +type Object387 { + field2166(argument317: Int, argument318: Int): [Object388] + field2169: String + field2170: String +} + +type Object388 { + field2167: String + field2168: String +} + +type Object389 { + field2172(argument321: Int, argument322: Int): [Object390] + field2175: String + field2176: String +} + +type Object39 implements Interface3 & Interface7 @Directive1(argument1 : "defaultValue27") @Directive1(argument1 : "defaultValue28") @Directive1(argument1 : "defaultValue29") @Directive1(argument1 : "defaultValue30") @Directive1(argument1 : "defaultValue31") { + field15: ID! + field161: ID + field175: Object40 + field180: Object41! + field183: String + field184: ID @deprecated + field185: Enum9 + field186: String + field187: [Object42] +} + +type Object390 { + field2173: String + field2174: String +} + +type Object391 { + field2185: Scalar8 + field2186: Boolean + field2187: Int +} + +type Object392 implements Interface3 @Directive1(argument1 : "defaultValue172") @Directive1(argument1 : "defaultValue173") { + field1132: Int + field1346: Scalar10 + field15: ID! + field157: Object32 + field164: String @deprecated + field183: String + field185: Enum113! + field204: Object45 + field2190: [Object393] + field2223: ID! + field2224: Object401 + field2233: Object402 + field2244: String + field2245: Boolean + field2246: Boolean + field2247: Enum111! + field2248: String + field2249: [Object403] + field791: Object589 + field792: Scalar10 + field796: String +} + +type Object393 implements Interface3 @Directive1(argument1 : "defaultValue174") @Directive1(argument1 : "defaultValue175") { + field15: ID! + field2191: [Object394] + field2192: ID! + field2200: [Object396] + field2205: Enum108 + field2221: Enum110 + field2222: Scalar5 + field2223: ID! +} + +type Object394 implements Interface3 @Directive1(argument1 : "defaultValue176") @Directive1(argument1 : "defaultValue177") { + field15: ID! + field2192: ID! + field2193: Object395 + field2196: Float + field2197: Object6 + field2198: Enum107 + field2199: Object395 +} + +type Object395 { + field2194: Enum106 + field2195: Scalar5 +} + +type Object396 implements Interface3 @Directive1(argument1 : "defaultValue178") @Directive1(argument1 : "defaultValue179") { + field15: ID! + field2192: ID! + field2193: Scalar5 + field2196: Float + field2197: Object6 + field2198: Enum107 + field2199: Scalar5 + field2201: Float + field2202: Object397! + field2219: Boolean + field2220: Float +} + +type Object397 implements Interface3 @Directive1(argument1 : "defaultValue180") @Directive1(argument1 : "defaultValue181") { + field142: Int + field15: ID! + field1989: Int + field204: Object45 + field2203: ID! + field2204: [Object398] + field2214: Object400 + field2218: Int +} + +type Object398 implements Interface3 @Directive1(argument1 : "defaultValue182") @Directive1(argument1 : "defaultValue183") { + field15: ID! + field2193: Object399 + field2199: Object399 + field2203: ID! + field2205: Enum108 + field2210: ID! + field2211: String + field2212: Enum109 + field2213: Scalar5 +} + +type Object399 { + field2206: String + field2207: Scalar5 + field2208: String + field2209: String +} + +type Object4 implements Interface3 @Directive1(argument1 : "defaultValue10") @Directive1(argument1 : "defaultValue11") @Directive1(argument1 : "defaultValue12") @Directive1(argument1 : "defaultValue13") { + field130: Enum6 + field131: [Object29] + field140: Scalar4 + field141: Boolean + field142: Int + field143: Object1 + field144(argument20: String, argument21: String, argument22: Boolean, argument23: Int, argument24: Int): Object26 + field145(argument25: String, argument26: String, argument27: Int, argument28: Int): Object30 + field15: ID! + field150: [Object7] @deprecated + field151: Object3 + field152: ID! + field153: String @Directive3 + field154: Object1 + field155(argument29: ID!): Interface2 + field156(argument30: ID): Object7 + field157: Object32 + field18: Scalar4 + field19: Object5 + field2365: Int @Directive3 + field2367: Object5 + field2368: Object5 + field25: Object7 +} + +type Object40 { + field176: String + field177: Scalar1! + field178: String + field179: Scalar1 +} + +type Object400 { + field2215: Int @deprecated + field2216: String + field2217: ID! +} + +type Object401 implements Interface3 @Directive1(argument1 : "defaultValue184") @Directive1(argument1 : "defaultValue185") { + field15: ID! + field2223: ID! + field2225: Object6 + field2226: Object6 + field2227: Object6 + field2228: Object6 + field2229: Object6 + field2230: Object6 + field2231: Object6 + field2232: Object6 +} + +type Object402 implements Interface3 @Directive1(argument1 : "defaultValue186") @Directive1(argument1 : "defaultValue187") { + field142: Int + field15: ID! + field188: Object39 + field1989: Int + field2223: ID! + field2234: String + field2235: Scalar10 + field2236: Boolean + field2237: Boolean + field2238: Boolean + field2239: Boolean + field2240: Int + field2241: String + field2242: String + field2243: Int +} + +type Object403 implements Interface3 @Directive1(argument1 : "defaultValue188") @Directive1(argument1 : "defaultValue189") { + field15: ID! + field2211: String + field2212: Enum109! + field2223: ID! + field2250: Enum112! +} + +type Object404 { + field2252: String + field2253: String +} + +type Object405 implements Interface3 @Directive1(argument1 : "defaultValue190") @Directive1(argument1 : "defaultValue191") { + field15: ID! + field2256: Object406! @deprecated + field2304(argument346: String, argument347: String, argument348: Int, argument349: Int): Object420 + field2337: Int! + field2353: Object406! @deprecated + field2354: Object406! + field2355: Int! @Directive9 + field2356: Int! + field2357(argument367: String, argument368: String, argument369: Int, argument370: Int): Object418 @Directive9 + field2358(argument371: String, argument372: String, argument373: Int, argument374: Int, argument375: InputObject17): Object433 + field260: ID! +} + +type Object406 implements Interface3 @Directive1(argument1 : "defaultValue192") @Directive1(argument1 : "defaultValue193") { + field15: ID! + field161: ID! + field163: Scalar1 + field164: Object589 + field165: Scalar1 + field166: Object589 + field183: String! + field2013(argument327: String, argument328: InputObject13, argument329: Int, argument330: [InputObject15]): Object407 + field204: Object45! + field2257: Enum114! + field2258: Enum115! + field2273(argument332: String, argument333: String, argument334: Int, argument335: Int, argument336: Enum121, argument337: Enum119): Object413 + field2297: String + field2298: Int! + field2304(argument346: String, argument347: String, argument348: Int, argument349: Int): Object420 + field2314(argument362: String, argument363: InputObject16, argument364: Int, argument365: Enum127, argument366: Enum119): Object423 + field2333: Int! + field2337: Int! + field2338: Int! + field2343: Scalar1 + field2344(argument358: String, argument359: String, argument360: Int, argument361: Int): Object430 + field2351: String + field2352: Int! +} + +type Object407 { + field2259: [Object408]! + field2341: Object16! + field2342: Int! @deprecated +} + +type Object408 { + field2260: String! + field2261: Object409! +} + +type Object409 implements Interface3 @Directive1(argument1 : "defaultValue194") @Directive1(argument1 : "defaultValue195") { + field15: ID! + field161: ID! + field183: String! + field2257(argument331: ID!): Enum120! + field2262: Object410 + field2299(argument345: ID!): Object418 + field2304(argument346: String, argument347: String, argument348: Int, argument349: Int, argument350: ID!): Object420 + field2314: Object423 @Directive9 + field2337(argument353: ID!): Int! + field2338: Int! + field2339: Int! + field2340(argument354: String, argument355: String, argument356: Int, argument357: Int): Object416 + field838: Enum126! + field915: String +} + +type Object41 implements Interface3 & Interface7 @Directive1(argument1 : "defaultValue32") @Directive1(argument1 : "defaultValue33") @Directive1(argument1 : "defaultValue34") @Directive1(argument1 : "defaultValue35") @Directive1(argument1 : "defaultValue36") { + field15: ID! + field161: ID + field175: Object40 + field181: [Object39] + field182: String + field183: String + field184: ID @deprecated + field185: Enum9 +} + +type Object410 implements Interface3 @Directive1(argument1 : "defaultValue196") @Directive1(argument1 : "defaultValue197") { + field1043: String + field1132: Int! + field15: ID! + field161: ID! + field163: Scalar1 + field164: Object589 + field185: String! + field2263: Object411! + field2264: ID! @deprecated + field2265: String + field2266: Int + field2267: [String]! + field2268: Object412 + field2273(argument332: String, argument333: String, argument334: Int, argument335: Int, argument336: Enum121, argument337: Enum119, argument338: String!): Object413 + field2297: String + field2298: Int! + field805: Object409! @Directive9 +} + +type Object411 implements Interface3 @Directive1(argument1 : "defaultValue198") @Directive1(argument1 : "defaultValue199") { + field1132: String + field15: ID! + field161: String! +} + +type Object412 { + field2269: Object411! + field2270: Int + field2271: String + field2272: String +} + +type Object413 { + field2274: [Object414]! + field2295: Object16! + field2296: Int! @deprecated +} + +type Object414 { + field2275: String! + field2276: Object415! +} + +type Object415 { + field2277: Scalar1 + field2278: Object589 + field2279: Scalar1! + field2280: String + field2281: ID! + field2282(argument339: String, argument340: String, argument341: Int, argument342: Int, argument343: Enum122, argument344: Enum119): Object416 + field2288: String! + field2289: String @Directive9 + field2290: String + field2291: Enum123 @Directive9 + field2292: Int! + field2293: Scalar1 + field2294: Object589 +} + +type Object416 { + field2283: [Object417]! + field2286: Object16! + field2287: Int! @deprecated +} + +type Object417 { + field2284: String! + field2285: Object410! +} + +type Object418 { + field2300: [Object419]! + field2303: Object16! +} + +type Object419 { + field2301: String + field2302: Object589 +} + +type Object42 implements Interface3 & Interface7 @Directive1(argument1 : "defaultValue37") @Directive1(argument1 : "defaultValue38") @Directive1(argument1 : "defaultValue39") @Directive1(argument1 : "defaultValue40") @Directive1(argument1 : "defaultValue41") { + field15: ID! + field161: ID + field175: Object40 + field183: String + field184: ID @deprecated + field185: Enum9 + field188: Object39! + field189: String +} + +type Object420 { + field2305: [Object421]! + field2312: Object16! + field2313: Int! @deprecated +} + +type Object421 { + field2306: String + field2307: Object422 +} + +type Object422 { + field2308: String + field2309: ID! + field2310: Object45! + field2311: String! +} + +type Object423 { + field2315: [Object424]! + field2335: Object16! + field2336: Int! @deprecated +} + +type Object424 { + field2316: String! + field2317: Object425! +} + +type Object425 implements Interface3 @Directive1(argument1 : "defaultValue200") @Directive1(argument1 : "defaultValue201") { + field15: ID! + field161: ID! + field163: Scalar1 + field164: Object589 + field165: Scalar1 + field166: Object589 + field183: String + field2013(argument327: String, argument329: Int, argument351: String, argument352: Int): Object416 + field204: Object45! + field2318: Object426 + field2321: Object410 + field2322: String + field2323: Object427! + field2332: Enum124! + field2333: Int! + field2334: Object406! + field838: Enum125! +} + +type Object426 { + field2319: Scalar1 + field2320: Object589 +} + +type Object427 { + field2324: [Object428!]! + field2331: [Object428!]! +} + +type Object428 { + field2325: Boolean + field2326: Object410 + field2327: [Object429!]! +} + +type Object429 { + field2328: String! + field2329: Scalar1 + field2330: Object589 +} + +type Object43 { + field193: [String] + field194: Scalar1 + field195: String + field196: String + field197: Scalar1 +} + +type Object430 { + field2345: [Object431]! + field2349: Object16! + field2350: Int! @deprecated +} + +type Object431 { + field2346: String! + field2347: Object432! +} + +type Object432 { + field2348: Object589! +} + +type Object433 { + field2359: [Object434]! + field2362: Object16! + field2363: Int! @deprecated +} + +type Object434 { + field2360: String! + field2361: Object406 +} + +type Object435 { + field2370: [Object436] + field2402(argument377: Enum129!): [Object441] + field2423(argument378: ID, argument379: Enum132!, argument380: Enum133, argument381: String, argument382: Boolean, argument383: String!): [Object445] + field2430(argument384: String!, argument385: String!): Object446 + field2451(argument386: InputObject18, argument387: Boolean, argument388: Boolean = true, argument389: Enum136, argument390: InputObject19!, argument391: String): Union11! + field2470: [Object459] + field2476(argument392: Boolean, argument393: String): Object460 +} + +type Object436 { + field2371: String + field2372: String + field2373: String + field2374: [Object437] + field2377: String + field2378: [Object438] +} + +type Object437 { + field2375: String + field2376: String +} + +type Object438 { + field2379: String + field2380: String + field2381: Int + field2382: String + field2383: Float + field2384: Scalar4 + field2385: String + field2386: [Object437] + field2387: Object439 + field2390: Object440 + field2394: Float + field2395: Enum128 + field2396: Object440 + field2397: Object440 + field2398: Int + field2399: String + field2400: String + field2401: String +} + +type Object439 { + field2388: String + field2389: String +} + +type Object44 { + field199: String + field200: [String] +} + +type Object440 { + field2391: Int + field2392: Int + field2393: Int +} + +type Object441 { + field2403: Enum130! + field2404: ID! + field2405: String! + field2406: [Object442] + field2410: String! + field2411: Enum129! + field2412: String + field2413: Int! + field2414: [Object443] + field2420: [Object444] +} + +type Object442 { + field2407: ID! + field2408: Enum131! + field2409: String +} + +type Object443 { + field2415: String + field2416: String + field2417: String! + field2418: String + field2419: String! +} + +type Object444 { + field2421: String! + field2422: String! +} + +type Object445 { + field2424: Object441 + field2425: ID! + field2426: Enum133 + field2427: ID! + field2428: String + field2429: Boolean +} + +type Object446 { + field2431: Object447 + field2436: String + field2437: String + field2438: Object449 +} + +type Object447 { + field2432: String! + field2433: [Object448] +} + +type Object448 { + field2434: [String] + field2435: String +} + +type Object449 { + field2439: Int + field2440: [Object450] + field2449: String + field2450: String +} + +type Object45 implements Interface3 @Directive1(argument1 : "defaultValue42") @Directive1(argument1 : "defaultValue43") @Directive1(argument1 : "defaultValue44") @Directive1(argument1 : "defaultValue45") @Directive1(argument1 : "defaultValue46") @Directive1(argument1 : "defaultValue47") @Directive1(argument1 : "defaultValue48") @Directive1(argument1 : "defaultValue49") @Directive1(argument1 : "defaultValue50") @Directive1(argument1 : "defaultValue51") @Directive1(argument1 : "defaultValue52") @Directive1(argument1 : "defaultValue53") @Directive1(argument1 : "defaultValue54") @Directive1(argument1 : "defaultValue55") @Directive1(argument1 : "defaultValue56") @Directive1(argument1 : "defaultValue57") @Directive1(argument1 : "defaultValue58") @Directive1(argument1 : "defaultValue59") @Directive1(argument1 : "defaultValue60") @Directive1(argument1 : "defaultValue61") @Directive1(argument1 : "defaultValue62") @Directive1(argument1 : "defaultValue63") @Directive1(argument1 : "defaultValue64") @Directive1(argument1 : "defaultValue65") @Directive1(argument1 : "defaultValue66") @Directive1(argument1 : "defaultValue67") @Directive1(argument1 : "defaultValue68") { + field1032: [Object184] @Directive7(argument4 : true) + field1335: [Object232] + field1385: Int + field1386: Object237 @Directive7(argument4 : true) + field1388: Boolean + field1390: String @deprecated + field1391(argument157: InputObject5): Object238 + field1415(argument164: Int, argument165: Int): [Object247] @deprecated + field1430: Int + field1431(argument166: Int, argument167: Int): [Object248] + field1434: [Object249] + field1442: Object253 + field1451(argument170: Enum54, argument171: Int, argument172: Int): [Object255] + field1474: Int + field1475: Int @deprecated + field1476: String + field1477(argument183: String!): Object48 + field1478: Object261 @deprecated + field1481: Boolean! @Directive9 + field1482(argument184: Int, argument185: Int): [String] + field1483: Int + field1484: String + field1485: String @Directive7(argument4 : true) + field1486: String @deprecated + field1487: String + field1488: String + field1489: Boolean + field1490: Boolean + field1491: Boolean + field1492: Boolean + field1493(argument186: InputObject7): Boolean + field1494: Boolean + field1495: Int + field1496(argument187: String!): Object48 + field1497(argument188: Int, argument189: Int): [Object262] + field15: ID! + field1517(argument190: Int, argument191: Int): [Object263] @deprecated + field1522: Enum58 + field1523: String + field1524: Object264 + field1530(argument194: Int, argument195: Int): [Object265] + field1572(argument223: String!, argument224: Int, argument225: Int): [Object265] + field1573: Object272 + field1589(argument226: Int, argument227: Int): [String] + field1590: String + field1591: String + field1592: String + field1593: String @deprecated + field1594: String @deprecated + field1595: [Interface20!] + field1639: Object277 + field164: String + field1643(argument229: [String] = [], argument230: Boolean = false): Object54 + field1644: Object278 + field166: String + field185: String @deprecated + field1949: Object315 @Directive7(argument4 : true) + field1950(argument251: Boolean = false): [Object3] + field1951(argument252: Int, argument253: Int): [Object347] + field198: [Object44] + field1985(argument254: String, argument255: Int, argument256: Int): [Object347] + field1986: Enum88 + field1987(argument257: Int, argument258: Int): [Enum89] + field1988: Int @deprecated + field1989(argument259: Enum90): Object348 + field2005: Enum93 @deprecated + field2006(argument260: Enum78): Object350 + field2011: Boolean + field2012: [Object352] + field203: String @deprecated + field205(argument33: Int, argument34: Int): [String] + field2051: Object354 + field2052(argument261: Int, argument262: Int, argument263: Boolean): [Object255] + field2053(argument264: Boolean): Object255 @deprecated + field2054(argument265: Int, argument266: Int): [Object355] + field2057: String + field2058: Object356 + field206(argument35: Int, argument36: Int): [Object46] + field2064: [Object45] + field2065: Object358 + field2073: [Object360] + field2080(argument270: Int, argument271: Int): [Object356] + field2081(argument272: Int, argument273: Enum100, argument274: String, argument275: [Scalar8], argument276: Int): [Object364] + field2088: Boolean + field2089: Enum101 + field2090(argument279: String): String + field2091(argument280: [Enum18!]): [Object366!]! + field2094(argument281: [String!]): [Object367!]! + field211(argument39: Int, argument40: Int, argument41: String): [Object46] + field212(argument42: Int, argument43: Int): [Object48] + field2120(argument282: Int, argument283: Int): [String] + field2121: Enum103 + field2122(argument284: Int, argument285: Int): [Object375] + field2132(argument290: [String], argument291: [String], argument292: Enum104): Object377 + field2184: Object391 + field2188(argument325: Int, argument326: Int): [String] + field2189: [Object392] + field2251: Object404 + field2254: Boolean + field2255: Object405 @Directive9 + field260: Int! + field261(argument84: Int, argument85: Int): [Object48] + field262(argument86: [String] = []): [Object54] + field266: Enum12 + field267: Object55 + field277(argument87: String, argument88: [String], argument89: Int, argument90: Int): [Object58] + field317: Enum14 + field318: Int @deprecated + field319: Object59 + field320: [Object68] + field324(argument123: Int, argument124: String, argument125: Int, argument126: Enum16): [Object69] + field331(argument127: Int, argument128: Int): [String] @deprecated + field332: String + field333: [Object70] + field340: Object71 + field433: [Object85] + field549(argument135: Enum28 = EnumValue400, argument161: Enum52 = EnumValue499, argument162: Boolean = false, argument163: Boolean = true): String + field756(argument140: String, argument142: Int): Object130 + field770(argument146: String, argument148: Int, argument269: InputObject12): Object134 + field838: Enum105 +} + +type Object450 { + field2441: String + field2442: ID + field2443: Object451 + field2446: Int + field2447: String + field2448: Enum134 +} + +type Object451 { + field2444: String! + field2445: Float! +} + +type Object452 { + field2452: Enum137 +} + +type Object453 { + field2453: ID! + field2454: Object454! + field2467: [Object457!]! + field2468: Object454! + field2469: Object454! +} + +type Object454 { + field2455: String! + field2456: [Object455!]! +} + +type Object455 { + field2457: [Object456!]! + field2463: Object458! +} + +type Object456 { + field2458: Object457! + field2462: Float! +} + +type Object457 { + field2459: Scalar4! + field2460: Enum138! + field2461: Scalar4! +} + +type Object458 { + field2464: Object441! + field2465: String! + field2466: Enum134! +} + +type Object459 { + field2471: Boolean! + field2472: Enum134 + field2473: String + field2474: String! + field2475: Enum139! +} + +type Object46 { + field207: Object47 + field210(argument37: Int, argument38: Int): [String] +} + +type Object460 { + field2477: Int + field2478: Object461 + field2495: [Object445] + field2496: [Object464] + field2532: Object469 + field2548: Int + field2549: Object473 + field2567: Object476 + field2579: String! + field2580: ID + field2581: Object480 + field2586: String + field2587: Object482 + field2598(argument394: ID!, argument395: String!): [Object483] +} + +type Object461 { + field2479: Scalar4 + field2480: Scalar4 + field2481: Scalar4 + field2482: Object451 + field2483: Scalar4 + field2484: [Object462] + field2492: Object463 + field2493: Boolean + field2494: Boolean +} + +type Object462 { + field2485: String! + field2486: Object463 +} + +type Object463 { + field2487: Object451 + field2488: Scalar4! + field2489: Object451! + field2490: Enum140! + field2491: Object451 +} + +type Object464 { + field2497: Boolean + field2498: Enum141! + field2499: [Object465] + field2502: String + field2503: [Object466] + field2526: Enum129! + field2527: Enum144! + field2528: Scalar4! + field2529: Boolean + field2530: Enum145! + field2531: Enum146 +} + +type Object465 { + field2500: Float! + field2501: Int! +} + +type Object466 { + field2504: Object467 + field2508: ID! + field2509: String! + field2510: Object451 + field2511: String! + field2512: String + field2513: Object463 + field2514: Object463 + field2515: Object467 + field2516: ID + field2517: [Object468] + field2525: Boolean! +} + +type Object467 { + field2505: Object451 + field2506: Object451 + field2507: Object451 +} + +type Object468 { + field2518: Scalar4 + field2519: Enum142 + field2520: Int! + field2521: String + field2522: Enum143! + field2523: Object451 + field2524: Enum134! +} + +type Object469 { + field2533: [Object470] + field2547: [Object470] +} + +type Object47 { + field208: String + field209: String +} + +type Object470 { + field2534: String + field2535: Object471 +} + +type Object471 { + field2536: Object451 + field2537: Enum129 + field2538: Object463 + field2539: Object472 + field2542: Object472 + field2543: Object472 + field2544: Object472 + field2545: Object472 + field2546: Object472 +} + +type Object472 { + field2540: Object451 + field2541: String! +} + +type Object473 { + field2550: Object474 + field2553: [Object475] + field2566: Object451 +} + +type Object474 { + field2551: String! + field2552: Enum147! +} + +type Object475 { + field2554: Float! + field2555: Float! + field2556: Float! + field2557: Object451! + field2558: Object451! + field2559: ID! + field2560: String! + field2561: Enum129! + field2562: String! + field2563: Object451! + field2564: Enum138! + field2565: Scalar4! +} + +type Object476 { + field2568: Object477! + field2571: [Object478] + field2575: Object479! +} + +type Object477 { + field2569: String! + field2570: Float! +} + +type Object478 { + field2572: String! + field2573: Float! + field2574: Int! +} + +type Object479 { + field2576: Enum142! + field2577: Int! + field2578: Scalar4! +} + +type Object48 implements Interface3 @Directive1(argument1 : "defaultValue69") @Directive1(argument1 : "defaultValue70") { + field15: ID! + field213(argument44: Int, argument45: Int): [Object49] + field257: Object49 + field258(argument83: String!): Object49 + field259: String + field260: Scalar8 +} + +type Object480 { + field2582: Object481 + field2585: Object481 +} + +type Object481 { + field2583: Object471 + field2584: Object471 +} + +type Object482 { + field2588: String + field2589: ID + field2590: ID + field2591: ID + field2592: ID + field2593: ID + field2594: ID + field2595: Scalar4! + field2596: ID + field2597: ID! +} + +type Object483 { + field2599: Scalar4 + field2600: Object451 + field2601: ID! + field2602: String + field2603: String + field2604: String +} + +type Object484 implements Interface3 @Directive1(argument1 : "defaultValue202") @Directive1(argument1 : "defaultValue203") { + field1048: Object486 @Directive9 + field1386: Object237 @Directive9 + field1491: Boolean @Directive9 + field15: ID! + field1590: String @Directive9 + field161: ID! + field1643(argument229: [String] = []): Object487 @Directive9 + field1989: Object488 @Directive9 + field204: Object45 @Directive9 + field2612: String @Directive9 + field2613: Boolean @Directive9 + field2614: Boolean @Directive9 + field2615: Boolean @Directive9 + field2621: Object45 @Directive9 + field2622: Object489 @Directive9 + field320: [Object485] @Directive9 +} + +type Object485 { + field2608: Object39 @Directive9 + field2609: Object42 @Directive9 +} + +type Object486 { + field2610: Object6 @Directive9 + field2611: Object6 @Directive9 +} + +type Object487 { + field2616: [String!]! + field2617: Scalar1 + field2618: Enum148! +} + +type Object488 { + field2619: Enum92 @Directive9 + field2620: Enum91 @Directive9 +} + +type Object489 { + field2623: ID! @Directive9 + field2624: String! @Directive9 +} + +type Object49 { + field214(argument46: Int, argument47: Int): [String] + field215: String + field216: Object50 + field230: Scalar8 + field231(argument67: Boolean): Object49 + field232: Scalar8 + field233: Boolean + field234: Boolean + field235: Boolean + field236: Boolean + field237: Scalar8 + field238(argument68: Int, argument69: Int): [String] + field239(argument70: Int, argument71: Int): [Object51] +} + +type Object490 { + field2626: Interface32 + field2628: Object491 +} + +type Object491 { + field2629: String + field2630: String + field2631: [Object492] + field2642: ID! + field2643: String + field2644: Enum149 +} + +type Object492 { + field2632: String + field2633: [Object493] + field2636: String + field2637: ID! + field2638: [Object494] + field2640: String + field2641: Enum149 +} + +type Object493 implements Interface3 & Interface33 @Directive1(argument1 : "defaultValue205") @Directive1(argument1 : "defaultValue206") { + field15: ID! + field161: ID! + field183: String + field185: Enum149 + field2634: String + field2635: String +} + +type Object494 implements Interface3 & Interface33 @Directive1(argument1 : "defaultValue207") @Directive1(argument1 : "defaultValue208") { + field15: ID! + field161: ID! + field183: String + field185: Enum149 + field2634: String + field2635: String + field2639: Enum150 +} + +type Object495 { + field2653: String + field2654: Int + field2655: String +} + +type Object496 implements Interface3 @Directive1(argument1 : "defaultValue209") @Directive1(argument1 : "defaultValue210") { + field15: ID! + field161: ID! + field2332: String + field259: String + field2661: String + field2662: Int + field2663: String + field2664: Boolean + field2665: String + field2666: String + field2667: Enum151 + field2668: String @deprecated + field2669: Enum152 + field2670: Int @deprecated + field2671: Enum153 + field2672: Enum154 + field2673: Int + field796: String + field838: Object497 @deprecated +} + +type Object497 implements Interface34 { + field2674: String! @deprecated + field2675: Int! @deprecated + field2676: Object498 @deprecated +} + +type Object498 implements Interface34 { + field2674: String! @deprecated + field2675: Int! @deprecated +} + +type Object499 implements Interface3 @Directive1(argument1 : "defaultValue211") @Directive1(argument1 : "defaultValue212") @Directive1(argument1 : "defaultValue213") @Directive1(argument1 : "defaultValue214") { + field15: ID! + field151: Object3! + field161: ID! + field2682: Object500! + field839: String! +} + +type Object5 { + field20: Object6 + field23: Object6 @deprecated + field24: Object6 +} + +type Object50 { + field217(argument48: Int, argument49: Int): [String] + field218(argument50: Int, argument51: Int): [String] + field219(argument52: Int, argument53: Int): [String] + field220(argument54: Int, argument55: Int): [String] + field221(argument56: String!): Boolean + field222(argument57: String!): Boolean + field223(argument58: String!): Boolean + field224(argument59: String!): Boolean + field225(argument60: String!): Boolean + field226(argument61: String!): Boolean + field227(argument62: String!): Boolean + field228(argument63: Int, argument64: Int): [String] + field229(argument65: Int, argument66: Int): [String] +} + +type Object500 implements Interface3 @Directive1(argument1 : "defaultValue215") @Directive1(argument1 : "defaultValue216") { + field15: ID! + field161: ID! + field169: String! + field2683: Object501! +} + +type Object501 implements Interface3 @Directive1(argument1 : "defaultValue217") @Directive1(argument1 : "defaultValue218") { + field15: ID! + field161: ID! + field169: String! +} + +type Object502 { + field2696(argument398: [InputObject22]): [Interface35] + field2706(argument399: [InputObject23]): [Object506] + field2712(argument400: String, argument401: [ID!], argument402: Int): Object507 + field2759(argument407: [InputObject25]): [Object511] + field2760: Object511 + field2761: Object511 + field2762: Object518 + field2785: Object511 + field2786(argument408: String, argument409: Int, argument410: [ID!]): Object522 + field2797: Object514 +} + +type Object503 { + field2699: Object504! + field2702: Object505! +} + +type Object504 { + field2700: Scalar1! + field2701: Scalar11! +} + +type Object505 { + field2703: Scalar4! + field2704: Scalar11! +} + +type Object506 { + field2707: Object492! + field2708: Object503 + field2709: Object503 + field2710: Object491 + field2711: ID! +} + +type Object507 { + field2713: [Object508] + field2758: Object16! +} + +type Object508 { + field2714: String + field2715: Object509 +} + +type Object509 implements Interface36 { + field2716(argument403: [InputObject24!]): [Interface37!] + field2720(argument404: Scalar4, argument405: Scalar4): [Interface38] + field2724(argument406: [InputObject25!]): [Object511!] + field2739: Object514 + field2748: Object517 +} + +type Object51 { + field240(argument72: Int, argument73: Int): [Scalar8] + field241: Scalar8 + field242: Boolean + field243: Boolean + field244: Boolean + field245(argument74: Int, argument75: Int): [Object52] + field256: Scalar8 +} + +type Object510 { + field2718: Int +} + +type Object511 { + field2725: Object510 + field2726: Object503 + field2727: Object503 + field2728: Object491! + field2729: ID! + field2730: [Object512] @deprecated + field2733: [Object513] + field2738: Enum163 +} + +type Object512 { + field2731: Object503! + field2732: Object503! +} + +type Object513 { + field2734: Object510 + field2735: Object503 + field2736: Object503 + field2737: Interface32 +} + +type Object514 { + field2740: ID + field2741: Scalar1 + field2742: Object515 + field2746: Enum164 + field2747: String +} + +type Object515 { + field2743: Object516 + field2745: Object589 +} + +type Object516 { + field2744: String +} + +type Object517 { + field2749: Object515 + field2750: ID + field2751: String + field2752: Object589 + field2753: Scalar1 + field2754: Object515 + field2755: Enum165 + field2756: Scalar1 + field2757: Object515 +} + +type Object518 implements Interface3 & Interface35 & Interface37 @Directive1(argument1 : "defaultValue220") @Directive1(argument1 : "defaultValue221") { + field15: ID! + field153: ID! + field2697: Object493! + field2698: Object503 + field2705: Object503 + field2717: Object510 + field2719: Object491 + field2763: [Object519] + field2774: Scalar1 + field2775: Union12 + field2776: [Object521!] + field2782: Object510 + field2783: Object503 + field2784: Object503 +} + +type Object519 { + field2764: Object503 + field2765: Object520 + field2769: String + field2770: Object503 + field2771: Object493! + field2772: Scalar1 + field2773: Union12 +} + +type Object52 { + field246(argument76: Int, argument77: Int): [Scalar8] + field247: Boolean + field248: Boolean + field249: Boolean + field250: Boolean + field251: Scalar8 + field252(argument78: Int, argument79: Int): [Object53] + field255(argument80: Int, argument81: String, argument82: Int): [Object53] +} + +type Object520 { + field2766: String + field2767: Object496 + field2768: Enum163 +} + +type Object521 { + field2777: [Object519!] + field2778: Object503 + field2779: Object503 + field2780: ID + field2781: String +} + +type Object522 { + field2787: [Object523] + field2796: Object16! +} + +type Object523 { + field2788: String + field2789: Object524 +} + +type Object524 implements Interface36 { + field2716(argument403: [InputObject24!]): [Interface37!] + field2720(argument404: Scalar4, argument405: Scalar4): [Interface38] + field2724(argument406: [InputObject25!]): [Object511!] + field2790: [Object525!] + field2795: Object514 +} + +type Object525 { + field2791: Object503 + field2792: Object503 + field2793: Object491! + field2794: [Object513] +} + +type Object526 { + field2799: [Object527] + field3001: Object16! +} + +type Object527 { + field2800: String! + field2801: Object528 +} + +type Object528 { + field2802: Int! + field2803: Float! + field2804: ID! + field2805: Object3! + field2806(argument412: String, argument413: String, argument414: Int, argument415: InputObject26!, argument416: Int): Object529! + field2958: Int! + field2959: String! + field2960: Object575! + field3000: Object584! +} + +type Object529 { + field2807: [Object530] + field2957: Object16! +} + +type Object53 { + field253: String + field254: String +} + +type Object530 { + field2808: String! + field2809: Object531 +} + +type Object531 { + field2810: Int! + field2811: Float! + field2812: Boolean! + field2813: Boolean! + field2814: ID! + field2815: String! + field2816: Boolean! + field2817: Int! + field2818(argument417: String, argument418: String, argument419: InputObject27, argument420: Int, argument421: Int): Object532! + field2956: Int! +} + +type Object532 { + field2819: [Object533] + field2955: Object16! +} + +type Object533 { + field2820: String! + field2821: Object534 +} + +type Object534 { + field2822: Scalar1 + field2823: Object589 + field2824: [Object535!] + field2829: Boolean! + field2830: Boolean! + field2831: ID! + field2832: String + field2833: Union13 + field2921: Union14 + field2939: Enum166! + field2940: String! + field2941: String + field2942: Object534 + field2943: Object3 + field2944: [Object535!] + field2945: Int! + field2946: Enum167! + field2947(argument423: InputObject28): Int! + field2948(argument424: String, argument425: String, argument426: Int, argument427: Int): Object573! + field2953: Object531! + field2954: Object528! +} + +type Object535 { + field2825: String! + field2826: String! + field2827: ID! + field2828: String! +} + +type Object536 { + field2834: Object537! + field2837: ID! +} + +type Object537 { + field2835: Boolean! + field2836: String +} + +type Object538 { + field2838: String! +} + +type Object539 { + field2839: Object540 +} + +type Object54 { + field263: [String!]! + field264: Scalar1 + field265: Enum11! +} + +type Object540 { + field2840: ID! + field2841: [Object541!]! + field2844: ID! + field2845: ID! + field2846: String +} + +type Object541 { + field2842: String! + field2843: String! +} + +type Object542 { + field2847: Object543 @deprecated + field2856: Object499 + field2857: ID! +} + +type Object543 { + field2848: ID! + field2849: Object544! + field2855: String! +} + +type Object544 { + field2850: ID! + field2851: Object545! + field2854: String! +} + +type Object545 { + field2852: ID! + field2853: String! +} + +type Object546 { + field2858: [Object547!]! + field2886: ID! +} + +type Object547 { + field2859: Scalar4 + field2860: ID + field2861: Boolean! + field2862: String + field2863: Object548 + field2885: Scalar4 +} + +type Object548 { + field2864: String + field2865: Object549 + field2868: ID + field2869: ID! + field2870: String + field2871: String + field2872: String + field2873: Boolean! + field2874: Object550 + field2878: ID + field2879: Object551 + field2882: Object552 +} + +type Object549 { + field2866: ID! + field2867: String! +} + +type Object55 { + field268: String + field269: [Object56!]! +} + +type Object550 { + field2875: ID! + field2876: String! + field2877: Int +} + +type Object551 { + field2880: ID! + field2881: String! +} + +type Object552 { + field2883: ID! + field2884: String! +} + +type Object553 { + field2887: [Object35!] + field2888: [Object554!]! @deprecated + field2897: ID! +} + +type Object554 { + field2889: Object555! + field2893: ID + field2894: Object556! +} + +type Object555 { + field2890: String + field2891: String + field2892: ID +} + +type Object556 { + field2895: ID! + field2896: String! +} + +type Object557 { + field2898: ID! + field2899: [Object548!]! +} + +type Object558 { + field2900: ID! + field2901: [Object559!]! +} + +type Object559 { + field2902: ID! + field2903: Boolean! + field2904: String + field2905: Int + field2906: Object560 + field2914: Object562 + field2918: String +} + +type Object56 { + field270: [String!]! + field271: [String!]! + field272: String! + field273: String! + field274: Object57 +} + +type Object560 { + field2907: String + field2908: ID! + field2909: String! + field2910(argument422: [ID!]): [Object561!] +} + +type Object561 { + field2911: String! + field2912: String + field2913: String! +} + +type Object562 { + field2915: ID! + field2916: String! + field2917: String +} + +type Object563 { + field2919: ID! + field2920: [Object559!]! +} + +type Object564 { + field2922: Object565 +} + +type Object565 { + field2923: ID! + field2924: String! +} + +type Object566 { + field2925: Object544 @deprecated + field2926: Object500 +} + +type Object567 { + field2927: Object568 +} + +type Object568 { + field2928: ID! + field2929: Boolean! + field2930: String! +} + +type Object569 { + field2931: Object37 + field2932: Object570 @deprecated + field2935: Object556 @deprecated +} + +type Object57 { + field275: Boolean! + field276: Enum13 +} + +type Object570 { + field2933: ID! + field2934: String! +} + +type Object571 { + field2936: String + field2937: Object562 +} + +type Object572 { + field2938: [Object562!] +} + +type Object573 { + field2949: [Object574] + field2952: Object16! +} + +type Object574 { + field2950: String! + field2951: Object534 +} + +type Object575 { + field2961: Boolean! + field2962: ID! + field2963: String! + field2964(argument428: String, argument429: String, argument430: Int, argument431: [ID!], argument432: Int): Object576! + field2996: Int! + field2997: Object584! +} + +type Object576 { + field2965: [Object577] + field2995: Object16! +} + +type Object577 { + field2966: String! + field2967: Object578 +} + +type Object578 { + field2968: ID! + field2969: String! + field2970: Boolean! + field2971: Int! + field2972(argument433: String, argument434: String, argument435: InputObject29, argument436: Int, argument437: Int): Object579! +} + +type Object579 { + field2973: [Object580] + field2994: Object16! +} + +type Object58 { + field278(argument91: Int, argument92: Int): [Scalar8] + field279: String + field280(argument93: Int, argument94: Int): [Object59] +} + +type Object580 { + field2974: String! + field2975: Object581 +} + +type Object581 { + field2976: [Object535!] + field2977: Boolean! + field2978: ID! + field2979: String + field2980: Union14 + field2981: Enum166! + field2982: String! + field2983: Object581 + field2984: [Object535!] + field2985: Int! + field2986: Int! + field2987(argument438: String, argument439: String, argument440: Int, argument441: Int): Object582! + field2992: Object578! + field2993: Object575! +} + +type Object582 { + field2988: [Object583] + field2991: Object16! +} + +type Object583 { + field2989: String! + field2990: Object581 +} + +type Object584 { + field2998: ID! + field2999: String! +} + +type Object585 { + field3003: Object586 + field3007: String +} + +type Object586 { + field3004: Scalar1 + field3005: Object589 + field3006: Int +} + +type Object587 { + field3009: String + field3010: Object586 +} + +type Object588 { + field3012: String + field3013: Object586 +} + +type Object589 implements Interface3 @Directive1(argument1 : "defaultValue222") @Directive1(argument1 : "defaultValue223") @Directive1(argument1 : "defaultValue224") @Directive1(argument1 : "defaultValue225") @Directive1(argument1 : "defaultValue226") @Directive1(argument1 : "defaultValue227") @Directive1(argument1 : "defaultValue228") @Directive1(argument1 : "defaultValue229") { + field1402: [Object644] + field15: ID! + field3020: String! + field3021: Object590 + field3188: [Object632] + field3194: Object633 + field3210: String @deprecated + field3214(argument447: String!, argument448: String!): Object639 + field3221: [Object640] @deprecated + field3224: String + field3225: String + field3226: Boolean @Directive9 @deprecated + field3227: Boolean! + field3228: Boolean! + field3229: Boolean! + field3230: Object641 + field3232: String + field3233: Enum185 + field3234: [Object642] @deprecated + field3237: [Object643] @deprecated + field3244: [Object645] + field3256: String + field3257: [Object646] + field3260: String + field3261: [Object647] @deprecated + field3264: [Object648] @deprecated + field3267(argument449: String, argument450: InputObject30, argument451: Int): Object649 @deprecated + field3281: Enum187 + field3282: Enum188 + field3283: String + field3284: ID! + field3285: String + field3286: Object653 + field3294: Object656 + field550: [Object638] + field589: String +} + +type Object59 implements Interface3 @Directive1(argument1 : "defaultValue71") @Directive1(argument1 : "defaultValue72") { + field15: ID! + field164: String + field166: String + field183: String + field185: String + field281(argument95: [String], argument96: Int, argument97: Boolean, argument98: Int): [Object60] + field285(argument103: [String], argument104: Int, argument105: Int): [Object61] + field301: Scalar8 + field302: Object64 + field304(argument114: Int, argument115: Int): [Object65] + field309: Scalar8 + field310(argument116: Int, argument117: Int): [Scalar8] + field311(argument118: Int, argument119: Int): [Object66] + field315: Object67 +} + +type Object590 { + field3022: Boolean + field3023: Boolean + field3024: Boolean + field3025: Boolean + field3026: Boolean + field3027: [String!] + field3028: [Object591!] + field3038: [Object593!] + field3042: [Enum169!] + field3043: [Enum170!] + field3044: Object589! + field3045: Object594 +} + +type Object591 implements Interface3 @Directive1(argument1 : "defaultValue230") @Directive1(argument1 : "defaultValue231") { + field1132: Int! + field15: ID! + field163: Scalar1! + field164: Union15 + field165: Scalar1! + field166: Union15 + field171: Object590! + field3030: Scalar1! + field3031: String + field3032: ID! + field3033: String! + field3034: Enum168 + field3035: String! + field3036: Enum169! + field3037: Enum170! +} + +type Object592 { + field3029: String +} + +type Object593 { + field3039: String! + field3040: Enum169! + field3041: Enum170! +} + +type Object594 implements Interface3 @Directive1(argument1 : "defaultValue232") @Directive1(argument1 : "defaultValue233") @Directive1(argument1 : "defaultValue234") { + field131: [Object607] + field15: ID! + field161: ID! + field1676(argument443: [ID!]): [Union16] + field183: String! + field2013: [Object595] + field2304: [Enum183] + field2694: [Object619] + field3046: [String] + field3048: Object596 + field3056: [Object597] + field3059: String + field3073: Boolean + field3074: [String] + field3075: Scalar4 + field3076: String + field3077: String + field3078: Object605 + field3081: Object606 + field3096: String + field3116: Object615 + field3135: Object618 + field3140: Boolean + field3149: [Object620] + field3155: Object621 + field3161: [String] + field3162(argument445: [ID!]): [Object622] + field3179: Object629 + field3181: Object630 + field3185: [Object631] + field3186: Int + field3187: String + field625(argument444: [ID!]): [Object608] +} + +type Object595 implements Interface3 @Directive1(argument1 : "defaultValue235") @Directive1(argument1 : "defaultValue236") { + field15: ID! + field161: ID! + field183: String + field3047: String + field3048: Object596 + field3055: Int + field838: Enum171 + field915: String +} + +type Object596 { + field3049: Scalar1 + field3050: String + field3051: String + field3052: Scalar1 + field3053: String + field3054: String +} + +type Object597 implements Interface3 @Directive1(argument1 : "defaultValue237") @Directive1(argument1 : "defaultValue238") { + field15: ID! + field161: ID! + field183: String + field3057: [Object598] +} + +type Object598 implements Interface3 @Directive1(argument1 : "defaultValue239") @Directive1(argument1 : "defaultValue240") { + field15: ID! + field161: ID! + field183: String + field3058: [Object160] +} + +type Object599 implements Interface3 @Directive1(argument1 : "defaultValue241") @Directive1(argument1 : "defaultValue242") { + field15: ID! + field161: ID! + field183: String + field3060: Object600 + field550: [Object602] + field676: [Object603] +} + +type Object6 { + field21: Scalar5! + field22: Scalar6! +} + +type Object60 { + field282: String + field283(argument100: Int, argument99: Int): [Scalar8] + field284(argument101: Int, argument102: Int): [Object45] +} + +type Object600 { + field3061: String + field3062: Boolean + field3063: Boolean + field3064: Object596 + field3065: String + field3066: Enum172 + field3067: [Object601] +} + +type Object601 implements Interface3 @Directive1(argument1 : "defaultValue243") @Directive1(argument1 : "defaultValue244") { + field15: ID! + field161: ID! + field183: String + field3068: Boolean +} + +type Object602 { + field3069: String + field3070: String +} + +type Object603 { + field3071: String + field3072: String +} + +type Object604 implements Interface3 @Directive1(argument1 : "defaultValue245") @Directive1(argument1 : "defaultValue246") { + field15: ID! + field161: ID! + field171: Object589 + field3060: Object600 +} + +type Object605 { + field3079: [String] + field3080: [String] +} + +type Object606 { + field3082: Boolean +} + +type Object607 implements Interface3 @Directive1(argument1 : "defaultValue247") @Directive1(argument1 : "defaultValue248") { + field15: ID! + field161: ID! + field3048: Object596 + field3083: String + field796: String +} + +type Object608 implements Interface3 @Directive1(argument1 : "defaultValue249") @Directive1(argument1 : "defaultValue250") { + field15: ID! + field161: ID! + field183: String + field2332: Enum175 + field2665: Float + field2666: Float + field3084: Object609 + field3094: [Object611] + field3095: Boolean + field3096: String + field3097: String + field3098: [Object612] + field796: String +} + +type Object609 { + field3085: String + field3086: Object610 + field3090: String + field3091: String + field3092: String + field3093: String +} + +type Object61 { + field286: Boolean + field287: String + field288(argument106: Int, argument107: Int): [Scalar8] + field289: String + field290: Scalar8 + field291: Int + field292(argument108: Int, argument109: Int): [Object62] + field296(argument112: Int, argument113: Int): [Object63] + field297: String + field298: Scalar8 + field299: String + field300: String +} + +type Object610 { + field3087: Enum18 + field3088: String + field3089: String +} + +type Object611 implements Interface3 @Directive1(argument1 : "defaultValue251") @Directive1(argument1 : "defaultValue252") { + field15: ID! + field161: ID! + field183: String +} + +type Object612 implements Interface3 @Directive1(argument1 : "defaultValue253") @Directive1(argument1 : "defaultValue254") { + field15: ID! + field161: ID! + field183: String + field2013: [Object595] + field2332: Enum174 + field3048: Object596 + field3099: [ID] + field3100: Float + field3101: String + field3102: Object613 + field3106: String + field3107: String + field3108: String + field3109: Object613 + field311: [Object614] + field3110: Enum173 + field3111: Boolean + field3112: String + field3113: Int + field3114: String + field3115: String + field796: String + field839: String +} + +type Object613 { + field3103: Float + field3104: Float + field3105: Float +} + +type Object614 implements Interface3 @Directive1(argument1 : "defaultValue255") @Directive1(argument1 : "defaultValue256") { + field15: ID! + field161: ID! + field183: String +} + +type Object615 { + field3117: ID! + field3118: [Object616!] + field3130: Scalar1 + field3131: Object589 + field3132: Scalar1 + field3133: Object589 + field3134: Int +} + +type Object616 { + field3119: Object617 @Directive9 + field3129: Scalar5 +} + +type Object617 { + field3120: Boolean @Directive9 + field3121: String + field3122: String + field3123: String + field3124: String + field3125: String + field3126: String + field3127: String + field3128: String +} + +type Object618 { + field3136: Scalar1 + field3137: String + field3138: [String] + field3139: String +} + +type Object619 { + field3141: [Union16] + field3142: ID! + field3143: Object608 + field3144: Object3 + field3145: Object596 + field3146: Object160 + field3147: Object612 + field3148: Object594 +} + +type Object62 { + field293(argument110: Int, argument111: Int): [Object63] +} + +type Object620 { + field3150: Object596 + field3151: Enum176 + field3152: Object594 + field3153: Boolean + field3154: Object594 +} + +type Object621 { + field3156: Boolean + field3157: String + field3158: Enum177 + field3159: Scalar1 + field3160: String +} + +type Object622 implements Interface3 @Directive1(argument1 : "defaultValue257") @Directive1(argument1 : "defaultValue258") { + field15: ID! + field161: ID! + field285: Object623 + field3048: Object596 + field3168(argument446: [ID!]): [Object625] + field3178: Object160 + field625(argument444: [ID!]): [Object608] +} + +type Object623 { + field3163: [Interface40] + field3164: [Object624] + field3167: [String] +} + +type Object624 { + field3165: String + field3166: String +} + +type Object625 implements Interface3 @Directive1(argument1 : "defaultValue259") @Directive1(argument1 : "defaultValue260") { + field15: ID! + field161: ID! + field2332: Enum179 + field285: Object626 + field3048: Object596 + field3171: Object627 + field3173: Boolean + field3174: Boolean + field3175: Object628 + field3176: Enum180 + field3177: Enum178 + field796: String +} + +type Object626 { + field3169: [Object624!] + field3170: [String!] +} + +type Object627 implements Interface3 @Directive1(argument1 : "defaultValue261") @Directive1(argument1 : "defaultValue262") { + field15: ID! + field161: ID! + field183: String + field3172: [Enum178] + field915: String +} + +type Object628 implements Interface3 @Directive1(argument1 : "defaultValue263") @Directive1(argument1 : "defaultValue264") { + field15: ID! + field161: ID! + field915: String +} + +type Object629 { + field3180: Boolean +} + +type Object63 { + field294: String + field295: String +} + +type Object630 { + field3182: Enum181 + field3183: Enum182 + field3184: String +} + +type Object631 implements Interface3 @Directive1(argument1 : "defaultValue265") @Directive1(argument1 : "defaultValue266") { + field15: ID! + field161: ID! +} + +type Object632 { + field3189: String + field3190: String + field3191: String + field3192: [String] + field3193: String +} + +type Object633 { + field3195: Object634 + field3209: Object589! +} + +type Object634 { + field3196: [Object635] + field3199: Object636 +} + +type Object635 { + field3197: String + field3198: String +} + +type Object636 { + field3200: Boolean + field3201: Boolean + field3202: Boolean + field3203: Boolean + field3204: Object637 + field3208: [Enum20] +} + +type Object637 { + field3205: Enum184 + field3206: Enum184 + field3207: Enum184 +} + +type Object638 { + field3211: String + field3212: Boolean + field3213: String +} + +type Object639 { + field3215: String + field3216: String + field3217: Boolean + field3218: String + field3219: String + field3220: Boolean +} + +type Object64 { + field303: Scalar8 +} + +type Object640 { + field3222: [Object639] + field3223: String +} + +type Object641 { + field3231: Object34 +} + +type Object642 { + field3235: [Object632] + field3236: Object45 +} + +type Object643 { + field3238: Object45 + field3239: [Object644] +} + +type Object644 { + field3240: [Object632] + field3241: String + field3242: String + field3243: String +} + +type Object645 { + field3245: String + field3246: String + field3247: String + field3248: String + field3249: String + field3250: String + field3251: String + field3252: String + field3253: Boolean + field3254: String + field3255: String +} + +type Object646 { + field3258: String + field3259: String +} + +type Object647 { + field3262: [Object632] + field3263: Object3 +} + +type Object648 { + field3265: Object3 + field3266: [Object644] +} + +type Object649 { + field3268: [Object650] + field3280: Object16 +} + +type Object65 { + field305: Int + field306: Boolean + field307: String + field308: String +} + +type Object650 { + field3269: String + field3270: Object651 +} + +type Object651 { + field3271: String + field3272: String + field3273: String + field3274: String + field3275: String! + field3276: [Object652] + field3279: String +} + +type Object652 { + field3277: String + field3278: String +} + +type Object653 implements Interface3 @Directive1(argument1 : "defaultValue267") @Directive1(argument1 : "defaultValue268") @Directive1(argument1 : "defaultValue269") { + field15: ID! + field3284: ID! + field3287(argument452: Enum189!, argument453: ID!): Object654 +} + +type Object654 { + field3288: Object655 +} + +type Object655 { + field3289: Enum190! + field3290: Enum191! + field3291: Enum189! + field3292: ID! + field3293: String +} + +type Object656 { + field3295: [Object584!] + field3296: Object584 +} + +type Object657 implements Interface9 { + field3306: [Union18!] + field527: ID! + field528: Boolean + field529: Boolean + field530: Boolean + field531: String + field532: String + field533: Enum27 +} + +type Object658 implements Interface9 { + field3306: [Object659!] + field3307: Object657 + field527: ID! + field528: Boolean + field529: Boolean + field530: Boolean + field531: String + field532: String + field533: Enum27 +} + +type Object659 implements Interface9 { + field3307: Union17 + field527: ID! + field528: Boolean + field529: Boolean + field530: Boolean + field531: String + field532: String + field533: Enum27 +} + +type Object66 { + field312(argument120: [String], argument121: Int, argument122: Int): [Object58] + field313: String + field314: Int +} + +type Object660 { + field3308: [Object661!] +} + +type Object661 { + field3309: Union20 + field3316: String! + field3317: Enum194! +} + +type Object662 { + field3310: Enum192! + field3311: ID! +} + +type Object663 { + field3312: Enum193! + field3313: ID! +} + +type Object664 { + field3314: Enum193! + field3315: ID! +} + +type Object665 { + field3318: ID! + field3319: [Object666!]! +} + +type Object666 { + field3320: Object6! + field3321: [Object667!] + field3325: String + field3326: ID + field3327: Boolean! + field3328: Scalar4! + field3329: Enum196! + field3330: Int +} + +type Object667 { + field3322: String! + field3323: String + field3324: Enum195! +} + +type Object668 { + field3331: String! +} + +type Object669 { + field3332: ID! + field3333: Object198 + field3334: ID! + field3335: ID! + field3336: [Object589] + field3337: [Object589] + field3338: Enum44! + field3339: [Object589] + field3340: ID +} + +type Object67 { + field316: Scalar8 +} + +type Object670 { + field3341: Int! +} + +type Object671 implements Interface44 { + field3342: Enum197 + field3343: Object672 + field3347: Object672 +} + +type Object672 implements Interface44 { + field3342: Enum197 + field3344: Float + field3345: Float + field3346: Float +} + +type Object673 implements Interface44 { + field3342: Enum197 + field3348: [Object672] +} + +type Object674 implements Interface44 { + field3342: Enum197 + field3348: [Object672] +} + +type Object675 implements Interface44 { + field3342: Enum197 + field3349: [Object673] +} + +type Object676 implements Interface45 { + field3350: Enum198 + field3351: Scalar8 + field3352: Int + field3353: Int +} + +type Object677 implements Interface45 { + field3350: Enum198 + field3352: Int + field3353: Int + field3354: Scalar8 + field3355: Scalar8 +} + +type Object678 implements Interface45 { + field3350: Enum198 + field3356: Scalar8 +} + +type Object679 implements Interface45 { + field3350: Enum198 + field3357: Scalar8 + field3358: Scalar8 +} + +type Object68 { + field321: Enum15 @deprecated + field322: Object39 + field323: Object42 +} + +type Object680 implements Interface46 { + field3359: Enum199 +} + +type Object681 implements Interface46 { + field3359: Enum199 + field3360: Object326 +} + +type Object682 implements Interface46 { + field3359: Enum199 +} + +type Object683 implements Interface46 { + field3359: Enum199 +} + +type Object684 { + field3361: Object685 +} + +type Object685 { + field3362: [Object589!] + field3363: [Object686!] + field3371: [Object687!] + field3372: ID! + field3373: Object3 + field3374: [Object688!] + field3468(argument459: [ID!]): [Object690!] +} + +type Object686 { + field3364: Object687! + field3368: Object685 + field3369: Enum200! + field3370: Object88! +} + +type Object687 { + field3365: [Object686!] + field3366: ID! + field3367: String! +} + +type Object688 { + field3375: [Object686!] + field3376: Scalar1 + field3377: Object589 + field3378: Object689 + field3383: ID! + field3384: Object685 + field3385: Object589 + field3386: Scalar1 + field3387: Scalar1 + field3388: [Object690!] + field3415: Enum204! + field3416: Scalar1 + field3417: Enum205 + field3418: Scalar1 + field3419: Object694 + field3429(argument456: [String]): [Object697!] + field3459: Enum200! + field3460: Scalar1 + field3461: Object589 + field3462: Object701 +} + +type Object689 { + field3379: ID! + field3380: Object688 + field3381: Enum201! + field3382: String +} + +type Object69 { + field325: Boolean + field326: String + field327: Enum17 + field328: String + field329: String + field330: Enum16 +} + +type Object690 { + field3389: Scalar1 + field3390: Object589 + field3391: ID! + field3392: String! + field3393(argument454: [ID!]): [Interface47!] + field3399: ID! + field3400: Scalar1 + field3401: Object326! + field3402: Enum203! + field3403: Object691 + field3413: Scalar1 + field3414: Object589 +} + +type Object691 { + field3404(argument455: [ID!]): [Object692!] + field3410: [Object693!] + field3411: Object690! + field3412: Int +} + +type Object692 { + field3405: Object687 + field3406: [Object693!] + field3409: Int +} + +type Object693 { + field3407: Int + field3408: Enum200 +} + +type Object694 { + field3420: [Object695!] + field3423: Int + field3424: String + field3425: Object688 + field3426: [Object696!] +} + +type Object695 { + field3421: Object687 + field3422: Int +} + +type Object696 { + field3427: String! + field3428: Int +} + +type Object697 { + field3430: Boolean! + field3431: [Object686!] + field3432: Scalar1 + field3433: Object589 + field3434: Enum206 + field3435: [Object698!] + field3439: Boolean! + field3440(argument458: Enum207 = EnumValue1197): String + field3441: ID! + field3442: [String!] + field3443: Boolean! + field3444: Boolean! + field3445: String + field3446: Enum208 + field3447: Object688! + field3448: Enum209! + field3449: Int! + field3450: Object699 + field3453: [Object700!] + field3456: Enum200! + field3457: Scalar1 + field3458: Object589 +} + +type Object698 implements Interface47 { + field3394: ID! + field3395: Int! + field3396: [String!]! + field3397: Object690 + field3398: Enum202! + field3436: [Object687!] + field3437: String + field3438(argument457: Enum200): [Object697!] +} + +type Object699 { + field3451: String + field3452: String +} + +type Object7 { + field100: Object5 + field101: Object5 + field102(argument13: InputObject1): Object8 + field103: Object24 + field108(argument14: ID!, argument15: InputObject1): Object8 + field109: [Object24] + field110: ID + field111: Object25 + field114(argument16: String, argument17: String, argument18: Int, argument19: Int): Object26 + field119: Int + field120: Object6 + field121: Object1 + field122: Enum3 + field123: Enum4 + field124: Scalar4 + field125: [Object28] + field129: Object5 @deprecated + field26(argument6: InputObject1): Object8 + field89(argument12: InputObject1): Object21 +} + +type Object70 { + field334: [Enum18] + field335: Scalar1 + field336: Object45! + field337: Boolean + field338: String + field339: Scalar1 +} + +type Object700 { + field3454: String! + field3455: String +} + +type Object701 { + field3463: [Object702!] +} + +type Object702 { + field3464: String + field3465: Int + field3466: [String!]! + field3467: String +} + +type Object703 { + field3469: Object686 + field3470: String! + field3471: ID! + field3472: String + field3473: [String!] + field3474: Object690 + field3475: Object704 +} + +type Object704 { + field3476: Object703 + field3477: Enum210 + field3478: [Object697!] +} + +type Object705 implements Interface47 { + field3394: ID! + field3395: Int! + field3396: [String!]! + field3397: Object690 + field3398: Enum202! +} + +type Object706 implements Interface48 { + field3479: Enum211 +} + +type Object707 implements Interface48 { + field3479: Enum211 +} + +type Object708 implements Interface48 { + field3479: Enum211 +} + +type Object709 { + field3480: Object685 +} + +type Object71 { + field341: ID + field342: Boolean + field343: Scalar1 + field344: String + field345: ID! + field346: String + field347: Scalar4 + field348: Object45 + field349: String + field350(argument129: [Enum19]): [Object72] + field353: Scalar1 + field354(argument130: Enum20!): Object73 +} + +type Object710 implements Interface49 { + field3481: [Object711!]! + field3486: ID! + field3487: [Object713!]! + field3496: Object719! + field3497: String! + field3498: Object715 + field3502: [Object716!]! + field3516: Object720 +} + +type Object711 { + field3482: Object712 + field3484: ID! + field3485: Boolean +} + +type Object712 implements Interface3 @Directive1(argument1 : "defaultValue270") @Directive1(argument1 : "defaultValue271") { + field15: ID! + field183: String! + field3483: String! +} + +type Object713 { + field3488: ID! + field3489: Object714! + field3495: ID! +} + +type Object714 { + field3490: [Object714!]! + field3491: Boolean! + field3492: ID! + field3493: String! + field3494: Boolean! +} + +type Object715 { + field3499: Scalar1! + field3500: ID! + field3501: Scalar1! +} + +type Object716 { + field3503: ID! + field3504: Boolean + field3505: Object717 +} + +type Object717 implements Interface3 @Directive1(argument1 : "defaultValue272") @Directive1(argument1 : "defaultValue273") { + field15: ID! + field183: String! + field3506: Object718! + field834: [Object712] +} + +type Object718 implements Interface3 @Directive1(argument1 : "defaultValue274") @Directive1(argument1 : "defaultValue275") { + field15: ID! + field3483: String! + field838: String! +} + +type Object719 { + field3507: [Object724!]! + field3508: ID + field3509: String + field3510: String! + field3511: Object45 + field3512: Boolean! + field3513: [Interface49!]! + field3514: Enum212 + field3515: Enum213! +} + +type Object72 { + field351: Int + field352: Enum20 +} + +type Object720 { + field3517: String + field3518: String +} + +type Object721 { + field3519: [Object711!]! + field3520: ID! + field3521: [Object713!]! + field3522: [Object722!]! + field3526: Object719 + field3527: String! + field3528: Object715 + field3529: [Object716!]! + field3530: String +} + +type Object722 { + field3523: ID! + field3524: String! + field3525: String! +} + +type Object723 { + field3531: Object724! + field3643: [Object719]! +} + +type Object724 implements Interface3 @Directive1(argument1 : "defaultValue276") @Directive1(argument1 : "defaultValue277") @Directive1(argument1 : "defaultValue278") @Directive1(argument1 : "defaultValue279") @Directive1(argument1 : "defaultValue280") { + field1399: String + field1412: String + field15: ID! + field164: String + field166: String + field3532: Object725 + field3536: Boolean @Directive4(argument2 : "defaultValue281") + field3537: Interface50 + field3567: Object731 @deprecated + field3602: Object737 + field3640: Object746 + field806: Object411 + field922: Scalar8 + field930: Scalar8 +} + +type Object725 { + field3533: Boolean + field3534: Scalar1 + field3535: String +} + +type Object726 { + field3539: Object589 + field3540: String + field3541: Scalar1 + field3542: Object589 + field3543: String + field3544: Scalar1 + field3545: [Union22!]! +} + +type Object727 { + field3546: Object88 +} + +type Object728 { + field3548: Int + field3549: String + field3550: Int + field3551: Int + field3552: String + field3553: Object729 + field3556: Object730 + field3559: String + field3560: String + field3561: String + field3562: String + field3563: String + field3564: Scalar1 + field3565: String + field3566: String +} + +type Object729 { + field3554: Int! + field3555: Int! +} + +type Object73 { + field355(argument131: [Enum19], argument132: [Enum19]): Object74 + field362: [Object75]! + field384: Boolean + field385: Object78 + field388: Boolean + field389: Object79 + field394(argument133: [InputObject2]): [Object81] + field431: Boolean + field432: Enum20! +} + +type Object730 { + field3557: Int! + field3558: Int! +} + +type Object731 { + field3568: Object732 + field3600: Object726 + field3601: Object728! +} + +type Object732 { + field3569: Object733 + field3589: Object734 + field3599: Object272! +} + +type Object733 { + field3570: String + field3571: Object589 + field3572: String + field3573: Scalar1 + field3574: String + field3575: Boolean + field3576: Boolean + field3577: Boolean + field3578: Boolean! + field3579: Boolean + field3580: Boolean + field3581: [String!]! + field3582: String + field3583: Object589 + field3584: String + field3585: Scalar1 + field3586: Enum214 + field3587: Object589 + field3588: Scalar1 +} + +type Object734 { + field3590: Object589 + field3591: String + field3592: Scalar1 + field3593: [Union23!] + field3596: Object589 + field3597: String + field3598: Scalar1 +} + +type Object735 { + field3594: ID! +} + +type Object736 { + field3595: Object45! +} + +type Object737 { + field3603: [Object738] + field3606: [Object739] + field3611: Object741 + field3629: [String] + field3630: [Object738] + field3631: [Object45] + field3632: String + field3633: Enum218 + field3634: [Object744] + field3637: [Object745] +} + +type Object738 { + field3604: String + field3605: String +} + +type Object739 { + field3607: String + field3608: Object740 +} + +type Object74 { + field356: String + field357: String + field358: String + field359: String + field360: String + field361: String +} + +type Object740 { + field3609: String + field3610: String +} + +type Object741 { + field3612: String + field3613: [Object738] + field3614: String + field3615: String + field3616: String + field3617: String + field3618: Enum215 + field3619: [Object738] + field3620: [Object742] + field3625: String + field3626: Scalar8 + field3627: Scalar8 + field3628: Enum217 +} + +type Object742 { + field3621: Object743 + field3624: Enum216 +} + +type Object743 { + field3622: Enum216 + field3623: String +} + +type Object744 { + field3635: String + field3636: Int +} + +type Object745 { + field3638: String + field3639: [String] +} + +type Object746 { + field3641: [Object719!]! + field3642: Enum219! +} + +type Object747 implements Interface49 { + field3481: [Object711!]! + field3486: ID! + field3487: [Object713!]! + field3496: Object719! + field3497: String! + field3498: Object715 + field3502: [Object716!]! + field3516: Object748! +} + +type Object748 { + field3644: String + field3645: String + field3646: [Enum220] + field3647: ID + field3648: Enum221 + field3649: Object88! +} + +type Object749 implements Interface49 { + field3481: [Object711!]! + field3486: ID! + field3487: [Object713!]! + field3496: Object719! + field3497: String! + field3498: Object715 + field3502: [Object716!]! + field3516: Object750! +} + +type Object75 { + field363: Interface8 + field366: [Object76] + field375: String + field376: String + field377: Scalar9 + field378: ID! + field379: String + field380: String + field381: ID + field382: Enum22 + field383: Scalar9 +} + +type Object750 { + field3650: String + field3651: String + field3652: [Enum220!]! + field3653: ID! + field3654: Enum222 + field3655: Boolean! + field3656: Object594! + field3657: Enum221 @deprecated + field3658: Enum223 +} + +type Object751 { + field3659(argument460: InputObject31, argument461: [InputObject32!]): Object724 + field3660: String +} + +type Object752 implements Interface51 { + field3661: String + field3662: [Object751] + field3663: [Object753] + field3669: [Object754] + field3675: String +} + +type Object753 { + field3664: String + field3665: String + field3666: String + field3667: [Object738] + field3668: Enum224 +} + +type Object754 { + field3670: String + field3671: String + field3672: String + field3673: [Object738] + field3674: String +} + +type Object755 implements Interface52 { + field3676: Object411 + field3677: [Interface53!] + field3679: Scalar8 + field3680: String + field3681: String + field3682: [Interface54!] + field3687: [Object739!] + field3688: [Object738!] + field3689: Object741 + field3690: [String!] + field3691: Scalar8 + field3692: String + field3693: [Object738!] + field3694: [Object45!] + field3695: String + field3696: [Interface55!] + field3701: Enum218 + field3702: [Object745!] + field3703: [Object744] + field3704: Scalar8 + field3705: String + field3706: String + field3707: [Object745!] + field3708: String + field3709: String + field3710: String +} + +type Object756 implements Interface53 { + field3678: String + field3711: String + field3712: String + field3713: String +} + +type Object757 implements Interface52 { + field3676: Object411 + field3677: [Interface53!] + field3679: Scalar8 + field3680: String + field3681: String + field3682: [Interface54!] + field3687: [Object739!] + field3688: [Object738!] + field3689: Object741 + field3690: [String!] + field3691: Scalar8 + field3692: String + field3693: [Object738!] + field3694: [Object45!] + field3695: String + field3696: [Interface55!] + field3701: Enum218 + field3702: [Object745!] + field3703: [Object744] + field3704: Scalar8 + field3705: String + field3706: String + field3707: [Object745!] +} + +type Object758 implements Interface54 { + field3683: Interface52 + field3684: String + field3685: String + field3686: [Object738] +} + +type Object759 implements Interface55 { + field3697: String + field3698: [Object738] + field3699: Interface52 + field3700: String +} + +type Object76 { + field367: String + field368: Object77 + field372: String + field373: ID! + field374: String +} + +type Object760 implements Interface53 { + field3678: String +} + +type Object761 implements Interface52 { + field3676: Object411 + field3677: [Interface53!] + field3679: Scalar8 + field3680: String + field3681: String + field3682: [Interface54!] + field3687: [Object739!] + field3688: [Object738!] + field3689: Object741 + field3690: [String!] + field3691: Scalar8 + field3692: String + field3693: [Object738!] + field3694: [Object45!] + field3695: String + field3696: [Interface55!] + field3701: Enum218 + field3702: [Object745!] + field3703: [Object744] + field3704: Scalar8 + field3705: String + field3706: String + field3707: [Object745!] + field3709: String + field3714: String + field3715: Int + field3716: Int +} + +type Object762 implements Interface53 { + field3678: String + field3712: String + field3717: String + field3718: Int + field3719: Int +} + +type Object763 implements Interface52 { + field3676: Object411 + field3677: [Interface53!] + field3679: Scalar8 + field3680: String + field3681: String + field3682: [Interface54!] + field3687: [Object739!] + field3688: [Object738!] + field3689: Object741 + field3690: [String!] + field3691: Scalar8 + field3692: String + field3693: [Object738!] + field3694: [Object45!] + field3695: String + field3696: [Interface55!] + field3701: Enum218 + field3702: [Object745!] + field3703: [Object744] + field3704: Scalar8 + field3705: String + field3706: String + field3707: [Object745!] + field3715: Int + field3716: Int + field3720: Int + field3721: String + field3722: Int +} + +type Object764 implements Interface53 { + field3678: String + field3718: Int + field3719: Int + field3723: Int + field3724: String + field3725: Int +} + +type Object765 implements Interface20 { + field1596: ID! + field1597: Boolean! + field1598: Boolean! + field1599: Boolean! + field1600: Object45! + field1601: Enum60! + field1602: [Enum61!] + field1603: [Interface21!] + field1635: Enum61! + field1636: Scalar1 + field1637: [String!] + field1638: [Enum61!] + field3726: [Object766!] + field3734: [String!] +} + +type Object766 { + field3727: [Enum18!] + field3728: [Enum18!] + field3729: [Enum18!] + field3730: Object145! + field3731: [Enum18!] + field3732: [Enum18!] + field3733: Boolean! +} + +type Object767 implements Interface56 { + field3735(argument462: String, argument463: String): [Interface56] + field3736: String + field3737: String + field3738(argument464: String, argument465: String): [Interface56] + field3739: [Object768] + field3742: Object769 + field3764: String! + field3765: [Object768] + field3766: [Object45!] + field3767(argument467: String, argument468: String): [Interface56] + field3768: Enum225 + field3769: [Object768!] + field3770: [String!] + field3771: String + field3772: String + field3773: String! + field3774: [Object768!] + field3775: String + field3776: String + field3777: String +} + +type Object768 { + field3740: String + field3741: String +} + +type Object769 { + field3743: Object770 + field3762: String + field3763: String +} + +type Object77 { + field369: String + field370: String + field371: String +} + +type Object770 implements Interface3 @Directive1(argument1 : "defaultValue282") @Directive1(argument1 : "defaultValue283") { + field15: ID! + field161: String! + field164: String! + field183: String! + field2332: String! + field3055: String! + field3744: Interface57 + field3745(argument466: String): [Object770] + field3746: Object771 + field3756: [[Int]] + field3757: Object773 + field838: String! + field922: Int! +} + +type Object771 { + field3747: [Object772] +} + +type Object772 { + field3748: String + field3749: String + field3750: String + field3751: Int + field3752: String + field3753: String + field3754: String + field3755: String +} + +type Object773 { + field3758: Int + field3759: Int + field3760: String + field3761: String +} + +type Object774 implements Interface21 { + field1604: Enum62! + field1605: Scalar4 + field1606: Object273 + field1621: String + field1622: String + field1623: Object274 + field1630: ID! + field1631: Scalar4 + field1632: Object276 + field3778: Enum226 + field3779: String + field3780: String + field3781: String + field3782: String + field3783: String + field3784: String + field3785: Boolean! + field3786: String + field3787: Object45 + field3788: Interface20 + field3789: Boolean! +} + +type Object775 implements Interface6 { + field3790: Scalar5 + field55: Scalar5 + field56: Scalar6! + field57: Int + field58: Object6! +} + +type Object776 implements Interface1 & Interface2 { + field1: [Object3] + field13: Scalar3 + field14: Scalar4 + field2: Boolean + field3: Enum1 + field3015: Object24 + field3016: [Object24] + field3017: [Object11] + field3018(argument442: InputObject1): Object8 + field4: Object7 + field5: Scalar1 + field6: ID + field7: String + field8: Object1 +} + +type Object777 implements Interface1 & Interface2 { + field1: [Object3] + field13: Scalar3 + field14: Scalar4 + field2: Boolean + field3: Enum1 + field3015: Object24 + field3016: [Object24] + field3017: [Object11] + field3018(argument442: InputObject1): Object8 + field4: Object7 + field5: Scalar1 + field6: ID + field7: String + field8: Object1 +} + +type Object778 implements Interface5 { + field3791: ID! + field3792: Interface2 + field52: Object11 + field53: String + field54: Interface6 + field59: Interface6 +} + +type Object779 implements Interface5 { + field3793: Scalar7 + field3794: [Object780] + field52: Object11 + field53: String + field54: Interface6 + field59: Interface6 +} + +type Object78 { + field386: [String] + field387: [String] +} + +type Object780 implements Interface5 { + field3792: Interface2 + field3795: Object781 + field3798: Object781 + field3799: String + field3800: Object781 + field3801: Object6 + field3802: String + field3803: [Object12] + field52: Object11 + field53: String + field54: Interface6 + field59: Interface6 +} + +type Object781 { + field3796: Float + field3797: String +} + +type Object782 implements Interface6 { + field55: Scalar5 + field56: Scalar6! + field57: Int + field58: Object6! +} + +type Object783 implements Interface1 & Interface2 { + field1: [Object3] + field13: Scalar3 + field14: Scalar4 + field2: Boolean + field3: Enum1 + field3015: Object24 + field3016: [Object24] + field3017: [Object11] + field3018(argument442: InputObject1): Object8 + field4: Object7 + field5: Scalar1 + field6: ID + field7: String + field8: Object1 +} + +type Object784 implements Interface2 { + field1: [Object3] + field13: Scalar3 + field14: Scalar4 + field2: Boolean + field3: Enum1 + field3804: Object785 + field4: Object7 + field5: Scalar1 + field6: ID + field7: String + field8: Object1 +} + +type Object785 { + field3805: Enum227 + field3806: String +} + +type Object786 { + field3807: String +} + +type Object787 { + field3808: ID! + field3809: ID! + field3810: Object451 + field3811: Object451 + field3812: String +} + +type Object788 { + field3813: [Float] + field3814: [Float] + field3815: [Float] +} + +type Object789 implements Interface57 { + field3816(argument469: String, argument470: String): [Interface57] + field3817(argument471: String, argument472: String): [Interface57] + field3818: String + field3819: String + field3820(argument473: String, argument474: String): [Interface57] + field3821: [Object768] + field3822: Object790 + field3827: String! + field3828: Object791 + field3833: [Object768] + field3834: Object792 + field3841(argument476: String, argument477: String): [Interface57] + field3842(argument478: String, argument479: String = "defaultValue284", argument480: String): Object794 + field3845: [String!] + field3846: String + field3847: String + field3848: String! +} + +type Object79 { + field390: [Object80] + field393: Int +} + +type Object790 { + field3823(argument475: String): Object770 + field3824: String + field3825: String + field3826: String +} + +type Object791 { + field3829: String + field3830: String + field3831: String + field3832: String +} + +type Object792 { + field3835: Object793 + field3839: String + field3840: String +} + +type Object793 { + field3836: String + field3837: String + field3838: String +} + +type Object794 { + field3843: String @deprecated + field3844: [String] +} + +type Object795 implements Interface57 { + field3816(argument469: String, argument470: String): [Interface57] + field3817(argument471: String, argument472: String): [Interface57] + field3818: String + field3819: String + field3820(argument473: String, argument474: String): [Interface57] + field3821: [Object768] + field3822: Object790 + field3827: String! + field3828: Object791 + field3833: [Object768] + field3834: Object792 + field3841(argument476: String, argument477: String): [Interface57] + field3842(argument478: String, argument479: String = "defaultValue284", argument480: String): Object794 + field3845: [String!] + field3846: String + field3847: String + field3848: String! + field3849: Object796 + field3852: String +} + +type Object796 { + field3850(argument481: String, argument482: String): Interface57 + field3851: Object791 +} + +type Object797 { + field3853: Float + field3854: Object788 +} + +type Object798 { + field3855(argument483: String): Object770 + field3856: String! +} + +type Object799 implements Interface58 { + field3857(argument484: String, argument485: String): Interface57 + field3858: Interface59 + field3860: Int! + field3861: String + field3862: ID! + field3863: String! + field3864: Object800! + field3870: String! + field3871: String + field3872: Int! + field3873(argument486: String): Object770 + field3874: String + field3875: String + field3876: Boolean +} + +type Object8 { + field27: Object9 + field48(argument10: Int, argument11: Int, argument7: ID, argument8: String, argument9: String): Object14 + field65: Object6 + field66: Object17 + field87: Object6 + field88: Object13 @deprecated +} + +type Object80 { + field391: Int! + field392: ID! +} + +type Object800 { + field3865: String + field3866: String + field3867: String + field3868: Object800 + field3869: String +} + +type Object801 implements Interface59 { + field3859: String +} + +type Object802 implements Interface58 { + field3857(argument484: String, argument485: String): Interface57 + field3858: Interface59 + field3860: Int! + field3861: String + field3862: ID! + field3863: String! + field3864: Object800! + field3870: String! + field3871: String + field3872: Int! +} + +type Object803 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3919(argument503: String, argument504: String): [Interface57] + field3920: String + field3921: String + field3922: String + field3923(argument505: String, argument506: String, argument507: Int, argument508: Int, argument509: InputObject33, argument510: String): Object815 + field3935: String + field3936(argument511: String): Object770 + field3937: String +} + +type Object804 { + field3878: [Object805] + field3882: Object807 +} + +type Object805 { + field3879: Object806 + field3881(argument493: String, argument494: String): Interface57 +} + +type Object806 { + field3880: String +} + +type Object807 { + field3883: Object806 + field3884: Boolean + field3885: Boolean + field3886: Object806 +} + +type Object808 { + field3888: Object809 + field3895: Object594 +} + +type Object809 { + field3889: String! + field3890: String! + field3891: ID! + field3892: String! + field3893: String + field3894: String! +} + +type Object81 { + field395: Enum19 + field396: [Object82] + field418: Int + field419: Scalar9 + field420: String + field421: String + field422: ID! + field423: Object84 + field427: [Object83] + field428: String + field429: Scalar9 + field430: String +} + +type Object810 { + field3908: [Object768] +} + +type Object811 { + field3910: [Object812] + field3913: Object807 +} + +type Object812 { + field3911: Object806 + field3912: Interface58 +} + +type Object813 { + field3915: String + field3916: [Object814] +} + +type Object814 { + field3917: String +} + +type Object815 { + field3924: [Object816] + field3934: Object807 +} + +type Object816 { + field3925: Object806 + field3926: Object817 +} + +type Object817 { + field3927: String + field3928: String + field3929: String + field3930: String + field3931: String + field3932: String + field3933: String +} + +type Object818 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3920: String + field3921: String + field3922: String + field3923: [Object817] + field3935: String + field3937: String +} + +type Object819 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3920: String + field3921: String + field3922: String + field3923: [Object817] + field3935: String + field3937: String +} + +type Object82 { + field397: Enum19 + field398: Int + field399: String + field400: Scalar9 + field401: String + field402: String + field403: String + field404: Object77 + field405: String + field406: [Object82] + field407: ID! + field408: String + field409: Enum23 + field410: [Object83] + field413: Enum24 + field414: Scalar9 + field415: String + field416: Int + field417: [Object82] +} + +type Object820 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3920: String + field3921: String + field3922: String + field3923: [Object817] + field3935: String + field3937: String +} + +type Object821 { + field3938(argument512: String, argument513: String): Interface57 + field3939: Object791 +} + +type Object822 { + field3940: Float + field3941: Float +} + +type Object823 implements Interface58 { + field3857(argument484: String, argument485: String): Interface57 + field3858: Interface59 + field3860: Int! + field3861: String + field3862: ID! + field3863: String! + field3864: Object800! + field3870: String! + field3871: String + field3872: Int! + field3942(argument514: String): Object770 + field3943: Int + field3944: Int + field3945: String + field3946: Boolean + field3947: Boolean +} + +type Object824 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String +} + +type Object825 { + field3948(argument515: String, argument516: String): Interface57 + field3949: Object791 +} + +type Object826 { + field3950(argument517: String, argument518: String): Interface57 + field3951: Object791 +} + +type Object827 { + field3952: String + field3953: Object828 + field3959: String +} + +type Object828 { + field3954: Int + field3955: Object822 + field3956: String + field3957: String + field3958: String +} + +type Object829 { + field3960(argument519: String, argument520: String): Interface57 + field3961: String + field3962: [Object830] + field3966: String + field3967: String + field3968: String + field3969: String + field3970: String + field3971: String +} + +type Object83 { + field411: String + field412: [String] +} + +type Object830 { + field3963: String + field3964: String + field3965: String +} + +type Object831 implements Interface58 { + field3857(argument484: String, argument485: String): Interface57 + field3858: Interface59 + field3860: Int! + field3861: String + field3862: ID! + field3863: String! + field3864: Object800! + field3870: String! + field3871: String + field3872: Int! + field3972(argument521: String, argument522: String): [Interface57] + field3973: Object797 + field3974: String + field3975: String + field3976: [Object827] + field3977: [Object830] + field3978: String + field3979: Object828 + field3980: String +} + +type Object832 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3935: String + field3981: Object799 + field3982: [Object829] + field3983: Object798 + field3984: [String] +} + +type Object833 { + field3985(argument523: String, argument524: String): Interface57 + field3986: [Object830] + field3987: String +} + +type Object834 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3935: String + field3981: Object799 + field3983: Object798 + field3984: [String] + field3988: [Object833] +} + +type Object835 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3935: String + field3984: [String] + field3989: Object823 + field3990: [Object831] +} + +type Object836 { + field3991(argument525: String, argument526: String): Interface57 + field3992: [Object830] + field3993: String +} + +type Object837 implements Interface60 { + field3877(argument487: String, argument488: String, argument489: Int, argument490: Int, argument491: InputObject33, argument492: String): Object804 + field3887: Object808 + field3896: String + field3897: Int + field3898: Scalar1 + field3899: ID! + field3900: Int + field3901: Object45 + field3902: String + field3903: String + field3904: ID + field3905: String + field3906: Object808 + field3907(argument495: String, argument496: String): Object810 + field3909(argument497: String, argument498: String, argument499: Int, argument500: Int, argument501: InputObject33, argument502: String): Object811 + field3914: Object813 + field3918: String + field3935: String + field3981: Object799 + field3983: Object798 + field3984: [String] + field3994: [Object836] +} + +type Object838 implements Interface57 { + field3816(argument469: String, argument470: String): [Interface57] + field3817(argument471: String, argument472: String): [Interface57] + field3818: String + field3819: String + field3820(argument473: String, argument474: String): [Interface57] + field3821: [Object768] + field3822: Object790 + field3827: String! + field3828: Object791 + field3833: [Object768] + field3834: Object792 + field3841(argument476: String, argument477: String): [Interface57] + field3842(argument478: String, argument479: String = "defaultValue284", argument480: String): Object794 + field3845: [String!] + field3846: String + field3847: String + field3848: String! + field3995: String + field3996: [String] + field3997: String + field3998: String +} + +type Object839 implements Interface57 { + field3816(argument469: String, argument470: String): [Interface57] + field3817(argument471: String, argument472: String): [Interface57] + field3818: String + field3819: String + field3820(argument473: String, argument474: String): [Interface57] + field3821: [Object768] + field3822: Object790 + field3827: String! + field3828: Object791 + field3833: [Object768] + field3834: Object792 + field3841(argument476: String, argument477: String): [Interface57] + field3842(argument478: String, argument479: String = "defaultValue284", argument480: String): Object794 + field3845: [String!] + field3846: String + field3847: String + field3848: String! + field3849: Object796 + field3999: Object821 + field4000: Object825 + field4001: Object826 +} + +type Object84 { + field424: ID! + field425: String + field426: Enum20 +} + +type Object840 implements Interface61 { + field4002: [Object841!] + field4005: ID! + field4006: String + field4007: Object842 +} + +type Object841 { + field4003: Scalar13! + field4004: String +} + +type Object842 { + field4008: Scalar1 + field4009: Union24 + field4011: Scalar14 +} + +type Object843 { + field4010: String +} + +type Object844 implements Interface8 { + field364: ID! + field365: Enum21 + field4012: Float + field4013: Float + field4014: Float + field4015: Float +} + +type Object845 implements Interface8 { + field364: ID! + field365: Enum21 + field4016: [[Float]] + field4017: Float +} + +type Object846 implements Interface8 { + field364: ID! + field365: Enum21 + field4012: Float + field4013: Float + field4014: Float + field4015: Float +} + +type Object847 { + field4018: Enum19 + field4019: Scalar1 + field4020: String + field4021: String + field4022: ID! + field4023: Scalar1 + field4024: String +} + +type Object848 implements Interface8 { + field364: ID! + field365: Enum21 +} + +type Object849 implements Interface62 { + field4025: Object850! + field4048: [Object854!] + field4062: ID! + field4063: Object858! +} + +type Object85 implements Interface3 @Directive1(argument1 : "defaultValue73") @Directive1(argument1 : "defaultValue74") { + field1380: String + field1381: String + field1382: String + field1383: String + field1384: Scalar1 + field15: ID! + field161: ID! + field163: Scalar1 + field165: Scalar1 + field185: String + field204: Object45 + field434: ID + field435: [Object86] +} + +type Object850 { + field4026: [Object851] + field4029: String! + field4030: Scalar1! + field4031: Scalar1 + field4032: Scalar1 + field4033: Object852! + field4039: [String!] + field4040: [Object853] + field4042: [Object853] + field4043: String! + field4044: Enum228! + field4045: Enum229! + field4046: Enum230! + field4047: String +} + +type Object851 { + field4027: String! + field4028: String! +} + +type Object852 { + field4034: Int + field4035: Object45 + field4036: Int @deprecated + field4037: Int + field4038: Int +} + +type Object853 { + field4041: String! +} + +type Object854 { + field4049: String + field4050: String + field4051: String + field4052: [Object855!] + field4056: Object856 + field4059: Object857 +} + +type Object855 { + field4053: String! + field4054: Enum231! + field4055: [String] +} + +type Object856 { + field4057: String! + field4058: String! +} + +type Object857 { + field4060: String + field4061: String +} + +type Object858 { + field4064: String + field4065: [String!] + field4066: [String!]! + field4067: String! + field4068: String + field4069: String + field4070: String + field4071: Int + field4072: Enum232 + field4073: Enum233 + field4074: Enum234 +} + +type Object859 implements Interface63 { + field4075: Enum235! + field4076: Object860 + field4084: Object862 + field4087: Object863 + field4089: ID! + field4090: Object864 +} + +type Object86 { + field1366: [Object236] + field1371: String + field1372: ID! + field1373: String + field1374: Int + field1375: String + field1376: String + field1377: String + field1378: Object232 + field1379: String + field436: String + field437: String + field438: String + field439: [Object87] +} + +type Object860 { + field4077: Object861 + field4082: Object861 + field4083: Enum230 +} + +type Object861 { + field4078: String + field4079: String + field4080: [String!] + field4081: Enum235! +} + +type Object862 { + field4085: [String!]! + field4086: Object861 +} + +type Object863 { + field4088: [Object861!]! +} + +type Object864 { + field4091: Object861 + field4092: Object861 + field4093: Object861 + field4094: Object861 + field4095: Object861 + field4096: Object861 + field4097: Object861 + field4098: Object861 +} + +type Object865 implements Interface62 { + field4025: Object850! + field4048: [Object854!] + field4062: ID! + field4063: Object866! +} + +type Object866 { + field4099: String + field4100: String + field4101: String! +} + +type Object867 implements Interface63 { + field4075: Enum235! + field4076: Object860 + field4084: Object862 + field4087: Object863 + field4089: ID! + field4090: Object868 +} + +type Object868 { + field4102: Object861 + field4103: Object861 +} + +type Object869 { + field4104: [Object854!] + field4105: String! +} + +type Object87 { + field1363: String + field1364: Scalar5 + field1365: Scalar5 + field440: Object88 +} + +type Object870 implements Interface62 { + field4025: Object850! + field4048: [Object854!] + field4062: ID! + field4063: Object871! +} + +type Object871 { + field4106: String! +} + +type Object872 implements Interface63 { + field4075: Enum235! + field4076: Object860 + field4084: Object862 + field4087: Object863 + field4089: ID! + field4090: Object873 +} + +type Object873 { + field4107: Object861 +} + +type Object874 implements Interface62 { + field4025: Object850! + field4048: [Object854!] + field4062: ID! + field4063: Object875! +} + +type Object875 { + field4108: String! +} + +type Object876 implements Interface63 { + field4075: Enum235! + field4076: Object860 + field4084: Object862 + field4087: Object863 + field4089: ID! + field4090: Object877 +} + +type Object877 { + field4109: Object861 +} + +type Object878 { + field4110: String + field4111: String +} + +type Object879 implements Interface34 { + field2674: String! + field2675: Int! +} + +type Object88 implements Interface3 @Directive1(argument1 : "defaultValue75") @Directive1(argument1 : "defaultValue76") @Directive1(argument1 : "defaultValue77") @Directive1(argument1 : "defaultValue78") @Directive1(argument1 : "defaultValue79") { + field1347: Object92 + field1348: Object93 + field1349: Object93 + field1350: Object93 + field1351: [Object235] + field1362: Object92 + field15: ID! + field161: ID + field183: String + field441: Object89 + field444: [Object90!] + field452: Object92 + field460: Object93 + field467: Boolean + field468(argument134: Boolean): [Union2!] + field511: String! + field512: Scalar4 + field513: Object93 + field514: Object96 + field524: [Object98!] + field534: Object93 + field535: Object99 + field547: Object92 + field548: Object93 + field549(argument135: Enum28 = EnumValue400): String + field550(argument136: Boolean): [Union3!] + field577: [Object104!] + field589: Object105 @deprecated + field592: Object106 + field610: Object93 + field611: Object92 + field612: Object93 + field613: Object111 + field625: [Object114!] + field643: Object115 + field645: [Interface10!] + field646: Object111 + field647: Object116 + field649: Object117 + field676(argument139: Boolean): [Union4!] + field705: Object93 + field706: Object92 + field707: [Object123!] + field717: Object106 + field718: Object93 + field719: Object124 @deprecated + field732: Object106 + field733: Object93 + field734: [Object127] + field737: Object106 + field738: Object93 + field739: Object92 + field740: Object92 + field741: Object93 + field742: [Object128!] + field753: Object129 + field756(argument140: String, argument141: String, argument142: Int, argument143: Int, argument144: InputObject3, argument145: InputObject4): Object130 + field770(argument146: String, argument147: String, argument148: Int, argument149: Int, argument150: InputObject3, argument151: InputObject4): Object134 + field786: Object137 + field790: [Object138] +} + +type Object880 implements Interface34 { + field2674: String! + field2675: Int! +} + +type Object881 implements Interface15 { + field4112: Boolean + field4113: Boolean + field4114: Object6 + field4115: Int + field4116: Object6 + field4117: Object6 + field4118: [String!] + field4119: Object6 + field4120: String + field4121: Object6 + field4122: String! + field958: Object171! + field963: Int! + field964: [Object172] + field974: [Object174] +} + +type Object882 implements Interface21 { + field1604: Enum62! + field1605: Scalar4 + field1606: Object273 + field1621: String + field1622: String + field1623: Object274 + field1630: ID! + field1631: Scalar4 + field1632: Object276 + field3787: Object45 + field3788: Interface20 + field4123: String +} + +type Object883 implements Interface19 { + field1446: ID + field1447: Object45 + field1448: Scalar10 + field1449: String + field4124: String + field4125: Int +} + +type Object884 { + field4126: [Object885] +} + +type Object885 { + field4127: String! + field4128: String! +} + +type Object886 { + field4129: [Object887] + field4132: Interface64 +} + +type Object887 { + field4130: String + field4131: Enum236 +} + +type Object888 { + field4137: String! +} + +type Object889 implements Interface65 { + field4143: Scalar1! + field4144: String! + field4145: String + field4146(argument527: String, argument528: Int): Object890 + field4151: ID! + field4152: String! + field4153: Scalar1! + field4154: String! + field4155: String + field4156: Int! + field4157: String + field4158: Object884 + field4159: String + field4160: Int! + field4161: Enum237! + field4162: String + field4163: String! + field4164: [String] + field4165: Boolean! + field4166: Boolean! +} + +type Object89 { + field442: [String] + field443: [String] +} + +type Object890 implements Interface66 { + field4147: [Interface67] + field4150: Object16 +} + +type Object891 implements Interface64 { + field4133: Scalar1! + field4134: String! + field4135: String + field4136: Union25 + field4138: ID! + field4139: Scalar1! + field4140: String! + field4141: String + field4142: Int! + field4167: String + field4168: Object884 + field4169: String + field4170: Enum238 + field4171: String + field4172: Int +} + +type Object892 implements Interface67 { + field4148: String + field4149: Object891 +} + +type Object893 implements Interface19 { + field1446: ID + field1447: Object45 + field1448: Scalar10 + field1449: String + field4173: String + field4174: Float + field4175: Enum239 +} + +type Object894 { + field4176: Object733 + field4177: Object734 + field4178: Object895! +} + +type Object895 implements Interface39 { + field3019: Object589 + field3297: String + field3298: Scalar1 + field3299: Object589 + field3300: String + field3301: Scalar1 + field3302: String + field3303: String + field4179: Object896 +} + +type Object896 { + field4180: String + field4181: String + field4182: String + field4183: String + field4184: String +} + +type Object897 implements Interface50 { + field3538: Object726 + field3547: Object728! + field4185: Object894 +} + +type Object898 { + field4186: Object733 + field4187: Object734 + field4188: Object899! +} + +type Object899 implements Interface39 { + field3019: Object589 + field3297: String + field3298: Scalar1 + field3299: Object589 + field3300: String + field3301: Scalar1 + field3302: String + field3303: String + field4179: Object900 + field4202: String + field4203: String +} + +type Object9 { + field28: [Object10] + field41: String + field42: Object6 + field43: Object6 + field44: Object13 +} + +type Object90 { + field445: Scalar1! + field446: String! + field447: ID! + field448: String + field449: Object91! +} + +type Object900 { + field4189: String + field4190: String + field4191: String + field4192: String + field4193: String + field4194: String + field4195: String + field4196: String + field4197: String + field4198: String + field4199: String + field4200: String + field4201: String +} + +type Object901 implements Interface50 { + field3538: Object726 + field3547: Object728! + field4185: Object898 +} + +type Object902 { + field4204: Object733 + field4205: Object734 + field4206: Object903! +} + +type Object903 implements Interface39 { + field3019: Object589 + field3297: String + field3298: Scalar1 + field3299: Object589 + field3300: String + field3301: Scalar1 + field3302: String + field3303: String + field4179: Object904 +} + +type Object904 { + field4207: [String!] + field4208: String + field4209: [String!] + field4210: String + field4211: String + field4212: String +} + +type Object905 implements Interface50 { + field3538: Object726 + field3547: Object728! + field4185: Object902 +} + +type Object906 { + field4213: [String!] + field4214: String + field4215: [String!] + field4216: String + field4217: String + field4218: String +} + +type Object907 implements Interface56 { + field3735(argument462: String, argument463: String): [Interface56] + field3736: String + field3737: String + field3738(argument464: String, argument465: String): [Interface56] + field3739: [Object768] + field3742: Object769 + field3764: String! + field3765: [Object768] + field3766: [Object45!] + field3767(argument467: String, argument468: String): [Interface56] + field3768: Enum225 + field3769: [Object768!] + field3770: [String!] + field3771: String + field3772: String + field3773: String! + field3774: [Object768!] +} + +type Object908 { + field4219: String + field4220: String +} + +type Object909 implements Interface34 { + field2674: String! + field2675: Int! +} + +type Object91 { + field450: ID! + field451: String! +} + +type Object910 implements Interface21 { + field1604: Enum62! + field1605: Scalar4 + field1606: Object273 + field1621: String + field1622: String + field1623: Object274 + field1630: ID! + field1631: Scalar4 + field1632: Object276 + field3778: Enum226 + field3779: String + field3780: String + field3781: String + field3782: String + field3783: String + field3784: String + field3785: Boolean! + field3786: String + field3787: Object45 + field3788: Interface20 + field3789: Boolean! + field4221: String + field4222: String + field4223: String + field4224: String + field4225: String + field4226: String + field4227: String + field4228: String + field4229: String + field4230: String + field4231: String + field4232: String +} + +type Object911 implements Interface56 { + field3735(argument462: String, argument463: String): [Interface56] + field3736: String + field3737: String + field3738(argument464: String, argument465: String): [Interface56] + field3739: [Object768] + field3742: Object769 + field3764: String! + field3765: [Object768] + field3766: [Object45!] + field3767(argument467: String, argument468: String): [Interface56] + field3768: Enum225 + field3769: [Object768!] + field3770: [String!] + field3771: String + field3772: String + field3773: String! + field3774: [Object768!] + field4233: [Object767] + field4234: String + field4235: String +} + +type Object912 implements Interface68 { + field4236: Object913! + field4442: Scalar1! + field4443: Enum249! + field4444: Object926! + field4445: Scalar1! + field4446: String! + field4447: Scalar1! +} + +type Object913 { + field4237: String + field4238: String + field4239: String + field4240: [Object914!]! + field4245: String + field4246: ID! + field4247: [Object915!]! + field4252: String + field4253: Scalar1 + field4254: [Object916!]! + field4257: Object917 + field4260: [Object918!]! + field4264: [String!]! + field4265: Object919 + field4268: Object920 + field4271: Boolean + field4272: Boolean + field4273: String + field4274: Object921 + field4277: String + field4278: [Object922!]! + field4387: String + field4388: [Object931!]! + field4391: Scalar1 + field4392: Scalar1 + field4393: Scalar1 + field4394: Scalar1 + field4395: String + field4396: String + field4397: [Object932!]! + field4402: String + field4403: String + field4404: Object933 + field4416: [Object934!]! + field4421: String + field4422: Enum246 + field4423: String + field4424: [Object935!]! + field4427: [Object936!]! + field4435: Enum245 + field4436: [Object938!]! + field4441: Int +} + +type Object914 { + field4241: ID! + field4242: String + field4243: String + field4244: String +} + +type Object915 { + field4248: ID! + field4249: String + field4250: String! + field4251: String +} + +type Object916 { + field4255: Enum240 + field4256: String +} + +type Object917 { + field4258: ID! + field4259: String! +} + +type Object918 { + field4261: String + field4262: String! + field4263: String +} + +type Object919 { + field4266: ID! + field4267: String! +} + +type Object92 { + field453: String + field454: Boolean + field455: Scalar1! + field456: String + field457: String + field458: String! + field459: Int +} + +type Object920 { + field4269: String + field4270: String +} + +type Object921 { + field4275: ID! + field4276: String! +} + +type Object922 { + field4279: String + field4280: Object923 + field4284: String + field4285: String + field4286: Object913! + field4287: Boolean + field4288: Scalar1 + field4289: Scalar1 + field4290: [Object924!]! + field4336: String + field4337: Object928 + field4355: ID! + field4356: Scalar1 + field4357: String + field4358: String + field4359: String + field4360: String + field4361: String + field4362: String! + field4363: String + field4364: [String!]! + field4365: [Object929!]! + field4374: Enum244 + field4375: String + field4376: String + field4377: String + field4378: Object924 + field4379: Object929 + field4380: String + field4381: Object926 + field4382: [String!]! + field4383: Object925! + field4384: Scalar1 + field4385: Enum245 + field4386: [String!]! +} + +type Object923 { + field4281: String! + field4282: String! + field4283: String! +} + +type Object924 implements Interface69 { + field4291: String + field4292: Scalar1 + field4293: Object922! + field4294: String + field4295: String + field4296: String + field4297: Enum241 + field4298: Object925 + field4302: Enum243 + field4303: String + field4304: Object926 + field4323: ID! + field4324: [Object927!]! + field4335: String +} + +type Object925 { + field4299: String! + field4300: Enum242! + field4301: String! +} + +type Object926 { + field4305: Boolean! + field4306: Boolean! @deprecated + field4307: String! + field4308: Boolean! + field4309: Boolean! + field4310: Boolean! + field4311: Boolean! + field4312: Boolean! + field4313: Boolean! + field4314: Boolean! + field4315: Boolean! + field4316: Boolean! + field4317: String + field4318: String + field4319: String! + field4320: String + field4321: String + field4322: ID! +} + +type Object927 { + field4325: String + field4326: String + field4327: String! + field4328: String! + field4329: String + field4330: String + field4331: String + field4332: Boolean + field4333: String + field4334: String +} + +type Object928 { + field4338: String + field4339: Scalar1 + field4340: String + field4341: Int + field4342: Int + field4343: Object926 + field4344: ID! + field4345: Scalar1 + field4346: String + field4347: String! + field4348: String + field4349: String + field4350: Object926 + field4351: Int + field4352: [String!]! + field4353: String + field4354: String! +} + +type Object929 implements Interface69 { + field4291: String + field4292: Scalar1 + field4293: Object922! + field4294: String + field4295: String + field4296: String + field4297: Enum241 + field4298: Object925 + field4302: Enum243 + field4303: String + field4304: Object926 + field4324: [Object930!]! + field4372: String + field4373: ID! +} + +type Object93 { + field461: Boolean + field462: Scalar1! + field463: String + field464: String + field465: String! + field466: String +} + +type Object930 { + field4366: String + field4367: String! + field4368: String! + field4369: String + field4370: String + field4371: String +} + +type Object931 { + field4389: ID! + field4390: String! +} + +type Object932 { + field4398: Boolean! + field4399: ID! + field4400: String + field4401: String! +} + +type Object933 { + field4405: String + field4406: String + field4407: String + field4408: String + field4409: ID! + field4410: String + field4411: String + field4412: String + field4413: String + field4414: String + field4415: String +} + +type Object934 { + field4417: ID! + field4418: String + field4419: Boolean! + field4420: String! +} + +type Object935 { + field4425: String! + field4426: ID! +} + +type Object936 { + field4428: Enum247 + field4429: Object937! +} + +type Object937 { + field4430: String + field4431: String + field4432: String! + field4433: ID! + field4434: String +} + +type Object938 { + field4437: Object913! + field4438: Object921 + field4439: ID! + field4440: Enum248 +} + +type Object939 implements Interface68 { + field4236: Object913! + field4442: Scalar1! + field4443: Enum249! + field4444: Object926! + field4446: String! + field4448: String! +} + +type Object94 { + field469: String + field470: String + field471: String + field472: String + field473: String + field474: Scalar1! + field475: String + field476: String + field477: String! + field478: ID! + field479: String + field480: Boolean! + field481: String @deprecated + field482: String + field483: String + field484: Enum25 + field485: Enum26 + field486: Scalar1! + field487: String + field488: String + field489: String! +} + +type Object940 implements Interface68 { + field4236: Object913! + field4442: Scalar1! + field4443: Enum249! + field4444: Object926! + field4449: Object922! +} + +type Object941 implements Interface68 { + field4236: Object913! + field4442: Scalar1! + field4443: Enum249! + field4444: Object926! + field4450: Object942! +} + +type Object942 { + field4451: Scalar1! + field4452: Scalar1 + field4453: String + field4454: Boolean + field4455: Enum250 + field4456: ID! + field4457: String + field4458: Int! + field4459: Object926! + field4460: Enum251 + field4461: [Enum252!]! + field4462: Scalar1! +} + +type Object943 { + field4463: ID! + field4464: String! +} + +type Object944 { + field4465: String + field4466: [String!]! + field4467: String +} + +type Object945 { + field4468: [Object944!]! +} + +type Object946 implements Interface15 { + field4112: Boolean + field4113: Boolean + field4114: Object6 + field4115: Int + field4116: Object6 + field4117: Object6 + field4118: [String!] + field4119: Object6 + field4120: String + field4121: Object6 + field4122: String! + field958: Object171! + field963: Int! + field964: [Object172] + field974: [Object174] +} + +type Object947 { + field4469: String + field4470: Enum61 + field4471: Enum253! +} + +type Object948 implements Interface24 { + field1680: Boolean + field1681: [Object288] + field1691: String + field1692: Object289 + field1701: [Object291] + field1707: Boolean + field1708: ID + field1709: Int! + field1710: String + field1711: Int + field1712: [Object292] + field1719: String + field1720: Object282 + field4472: String + field4473: String + field4474: Object281 + field4475: Object589 +} + +type Object949 implements Interface25 { + field1696: ID! + field1697: Int! + field1698: String + field1699: String + field1700: Object282 +} + +type Object95 { + field490: String + field491: String + field492: String + field493: String + field494: String + field495: Scalar1! + field496: String + field497: String + field498: String! + field499: ID! + field500: String + field501: Boolean! + field502: String @deprecated + field503: String + field504: String + field505: Enum25 + field506: Enum26 + field507: Scalar1! + field508: String + field509: String + field510: String! +} + +type Object950 implements Interface24 { + field1680: Boolean + field1681: [Object288] + field1691: String + field1692: Object289 + field1701: [Object291] + field1707: Boolean + field1708: ID + field1709: Int! + field1710: String + field1711: Int + field1712: [Object292] + field1719: String + field1720: Object282 + field4472: String + field4473: String + field4475: Object589 + field4476: String @Directive9 + field4477: Object285 + field4478: Object243 @Directive9 + field4479: Object295 +} + +type Object951 implements Interface24 { + field1680: Boolean @deprecated + field1681: [Object288] @deprecated + field1691: String @deprecated + field1692: Object289 + field1701: [Object291] @deprecated + field1707: Boolean @deprecated + field1708: ID + field1709: Int! + field1710: String @deprecated + field1711: Int + field1712: [Object292] @deprecated + field1719: String + field1720: Object282 + field4480: Object35 +} + +type Object952 implements Interface24 { + field1680: Boolean + field1681: [Object288] + field1691: String + field1692: Object289 + field1701: [Object291] + field1707: Boolean + field1708: ID + field1709: Int! + field1710: String + field1711: Int + field1712: [Object292] + field1719: String + field1720: Object282 +} + +type Object953 implements Interface24 { + field1680: Boolean + field1681: [Object288] + field1691: String + field1692: Object289 + field1701: [Object291] + field1707: Boolean + field1708: ID + field1709: Int! + field1710: String + field1711: Int + field1712: [Object292] + field1719: String + field1720: Object282 + field4481: Object346 + field4482: Object343 +} + +type Object954 implements Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! +} + +type Object955 implements Interface3 @Directive1(argument1 : "defaultValue287") @Directive1(argument1 : "defaultValue288") { + field1132: Int! + field1399: String + field1412: String + field15: ID! + field161: ID! + field163: Scalar1! + field165: Scalar1! + field183: String! + field3055: Int + field4487: Object956 + field4491: [Interface70!] + field4492: String! + field4493(argument529: String, argument530: InputObject34, argument531: Int): Object957 + field4523: String! + field915: String +} + +type Object956 { + field4488: Enum254 + field4489: [ID!] + field4490: [Object589] +} + +type Object957 { + field4494: [Object958] + field4521: Object16 + field4522: [String!] +} + +type Object958 { + field4495: String + field4496: Object959 +} + +type Object959 { + field4497: Scalar1! + field4498: String + field4499: String! + field4500: Object88 + field4501: ID! + field4502: [Object960] + field4509: [Object963] + field4512: [Object964] + field4517: Scalar1! + field4518: String + field4519: String! + field4520: Int! +} + +type Object96 { + field515: Boolean + field516: Scalar1! + field517: String + field518: String + field519: String! + field520: Object97 +} + +type Object960 { + field4503: ID! + field4504: Object961 +} + +type Object961 { + field4505: [Object962] + field4508: Object16 +} + +type Object962 { + field4506: String + field4507: Interface11 +} + +type Object963 { + field4510: ID! + field4511: String! +} + +type Object964 { + field4513: ID! + field4514: [Object965!]! +} + +type Object965 { + field4515: ID! + field4516: String! +} + +type Object966 implements Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! +} + +type Object967 implements Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! +} + +type Object968 implements Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! + field4524: [Enum255!] + field4525: [Object119!] +} + +type Object969 implements Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! +} + +type Object97 { + field521: Int + field522: Int + field523: Int +} + +type Object970 implements Interface70 { + field4483: ID! + field4484: String! + field4485: Object955! + field4486: String! + field4526: [Object965!] +} + +type Object971 { + field4527: [Object972] + field4530: Object16 +} + +type Object972 { + field4528: String + field4529: Object88 +} + +type Object973 implements Interface11 { + field653: String! + field654: Scalar1! + field655: String + field656: String + field657: String! + field658: ID! + field659: Boolean! + field660: Object88! + field661: Object119! + field671: Scalar1! + field672: String + field673: String + field674: String! +} + +type Object974 implements Interface11 { + field653: String! + field654: Scalar1! + field655: String + field656: String + field657: String! + field658: ID! + field659: Boolean! + field660: Object88! + field661: Object119! + field671: Scalar1! + field672: String + field673: String + field674: String! +} + +type Object975 implements Interface11 { + field653: String! + field654: Scalar1! + field655: String + field656: String + field657: String! + field658: ID! + field659: Boolean! + field660: Object88! + field661: Object119! + field671: Scalar1! + field672: String + field673: String + field674: String! +} + +type Object976 implements Interface34 { + field2674: String! + field2675: Int! +} + +type Object977 implements Interface20 { + field1596: ID! + field1597: Boolean! + field1598: Boolean! + field1599: Boolean! + field1600: Object45! + field1601: Enum60! + field1602: [Enum61!] + field1603: [Interface21!] + field1635: Enum61! + field1636: Scalar1 + field1637: [String!] + field1638: [Enum61!] + field3726: [Object766!] + field3734: [String!] + field4531: Int + field4532: Scalar1 +} + +type Object978 implements Interface34 { + field2674: String! + field2675: Int! +} + +type Object979 implements Interface34 { + field2674: String! + field2675: Int! +} + +type Object98 { + field525: Int + field526: Interface9! +} + +type Object980 implements Interface20 { + field1596: ID! + field1597: Boolean! + field1598: Boolean! + field1599: Boolean! + field1600: Object45! + field1601: Enum60! + field1602: [Enum61!] + field1603: [Interface21!] + field1635: Enum61! + field1636: Scalar1 + field1637: [String!] + field1638: [Enum61!] +} + +type Object981 implements Interface71 { + field4533: Enum256! + field4534: Object162! + field4535: Object145! + field4536: Object982! + field4542: Object255 + field4543: ID! + field4544: Object45! + field4620: [Object995!] + field4627: [Object996!] +} + +type Object982 implements Interface72 { + field4537: Object162! + field4538: Object145! + field4539: ID! + field4540: Object255 + field4541: Object45! + field4545: [Object983!] + field4551: [Object984!] +} + +type Object983 { + field4546: ID! + field4547: [Enum18!] + field4548: Interface72! + field4549: Enum257! + field4550: Boolean +} + +type Object984 implements Interface73 { + field4552: Object985 + field4562: [Enum259!] + field4563: [Enum18!]! + field4564: Object589 + field4565: Scalar1 + field4566: Boolean + field4567: Union26 + field4577: [String] + field4578: [String] + field4579: Boolean + field4580: String + field4581: Boolean + field4582: String + field4583: Union27 + field4591: [Object993!]! + field4597: Object589 + field4598: Scalar1 + field4599: Int + field4600: Union28! + field4601: Boolean + field4602: Boolean + field4603: Boolean + field4604: String + field4605: Boolean + field4606: [Interface74!]! + field4618: Boolean + field4619: ID! +} + +type Object985 { + field4553: [Object986!] + field4558: Object589 + field4559: Scalar1 + field4560: ID! + field4561: Boolean +} + +type Object986 { + field4554: [Object987!] + field4557: [Enum18!] +} + +type Object987 { + field4555: String + field4556: Enum258 +} + +type Object988 { + field4568: Enum260 + field4569: Scalar10! + field4570: Boolean + field4571: Scalar11 + field4572: Enum18! +} + +type Object989 { + field4573: Enum260 + field4574: Scalar10! + field4575: Boolean +} + +type Object99 { + field536: [Object100] @deprecated + field540: Boolean + field541: Object16! + field542: Scalar1! + field543: String + field544: String + field545: String! + field546: [String] +} + +type Object990 { + field4576: Boolean +} + +type Object991 { + field4584: Scalar10! + field4585: Boolean + field4586: Boolean + field4587: Scalar11 + field4588: Enum18! +} + +type Object992 { + field4589: Scalar10! + field4590: Boolean +} + +type Object993 { + field4592: [Object993!]! + field4593: ID! + field4594: String! + field4595: Object993 + field4596: Int +} + +type Object994 implements Interface72 { + field4537: Object162! + field4538: Object145! + field4539: ID! + field4540: Object255 + field4541: Object45! + field4545: [Object983!] + field4551: [Object984!] +} + +type Object995 { + field4621: Enum256! + field4622: [Enum18!] + field4623: Interface71! + field4624: Enum257! + field4625: Object983! + field4626: Boolean +} + +type Object996 implements Interface73 { + field4552: Object985 + field4562: [Enum259!] + field4563: [Enum18!]! + field4564: Object589 + field4565: Scalar1 + field4566: Boolean + field4567: Union26 + field4577: [String] + field4578: [String] + field4579: Boolean + field4580: String + field4581: Boolean + field4582: String + field4583: Union27 + field4591: [Object993!]! + field4597: Object589 + field4598: Scalar1 + field4599: Int + field4628: Enum256! + field4629: Union29! + field4630: ID! + field4631: [Interface75!]! + field4644: Object984 +} + +type Object997 implements Interface71 { + field4533: Enum256! + field4534: Object162! + field4535: Object145! + field4536: Object998! + field4542: Object255 + field4543: ID! + field4544: Object45! + field4620: [Object995!] + field4627: [Object996!] +} + +type Object998 implements Interface72 { + field4537: Object162! + field4538: Object145! + field4539: ID! + field4540: Object255 + field4541: Object45! + field4545: [Object983!] + field4551: [Object984!] +} + +type Object999 implements Interface71 { + field4533: Enum256! + field4534: Object162! + field4535: Object145! + field4536: Object994! + field4542: Object255 + field4543: ID! + field4544: Object45! + field4620: [Object995!] + field4627: [Object996!] +} + +enum Enum1 { + EnumValue1 + EnumValue2 + EnumValue3 + EnumValue4 + EnumValue5 + EnumValue6 + EnumValue7 + EnumValue8 +} + +enum Enum10 { + EnumValue39 + EnumValue40 + EnumValue41 + EnumValue42 + EnumValue43 + EnumValue44 + EnumValue45 + EnumValue46 + EnumValue47 + EnumValue48 + EnumValue49 + EnumValue50 + EnumValue51 +} + +enum Enum100 { + EnumValue758 + EnumValue759 + EnumValue760 + EnumValue761 +} + +enum Enum101 { + EnumValue762 + EnumValue763 + EnumValue764 +} + +enum Enum102 { + EnumValue765 + EnumValue766 + EnumValue767 +} + +enum Enum103 { + EnumValue768 + EnumValue769 + EnumValue770 + EnumValue771 + EnumValue772 +} + +enum Enum104 { + EnumValue773 + EnumValue774 +} + +enum Enum105 { + EnumValue775 + EnumValue776 + EnumValue777 + EnumValue778 + EnumValue779 + EnumValue780 + EnumValue781 + EnumValue782 + EnumValue783 +} + +enum Enum106 { + EnumValue784 + EnumValue785 +} + +enum Enum107 { + EnumValue786 + EnumValue787 + EnumValue788 +} + +enum Enum108 { + EnumValue789 + EnumValue790 + EnumValue791 +} + +enum Enum109 { + EnumValue792 + EnumValue793 +} + +enum Enum11 { + EnumValue52 + EnumValue53 + EnumValue54 +} + +enum Enum110 { + EnumValue794 + EnumValue795 + EnumValue796 + EnumValue797 +} + +enum Enum111 { + EnumValue798 + EnumValue799 +} + +enum Enum112 { + EnumValue800 + EnumValue801 + EnumValue802 +} + +enum Enum113 { + EnumValue803 + EnumValue804 +} + +enum Enum114 { + EnumValue805 + EnumValue806 +} + +enum Enum115 { + EnumValue807 + EnumValue808 + EnumValue809 +} + +enum Enum116 { + EnumValue810 + EnumValue811 +} + +enum Enum117 { + EnumValue812 + EnumValue813 + EnumValue814 + EnumValue815 + EnumValue816 + EnumValue817 +} + +enum Enum118 { + EnumValue818 + EnumValue819 + EnumValue820 + EnumValue821 + EnumValue822 + EnumValue823 +} + +enum Enum119 { + EnumValue824 + EnumValue825 +} + +enum Enum12 { + EnumValue55 + EnumValue56 + EnumValue57 + EnumValue58 +} + +enum Enum120 { + EnumValue826 + EnumValue827 +} + +enum Enum121 { + EnumValue828 + EnumValue829 + EnumValue830 + EnumValue831 + EnumValue832 +} + +enum Enum122 { + EnumValue833 + EnumValue834 + EnumValue835 +} + +enum Enum123 { + EnumValue836 + EnumValue837 + EnumValue838 + EnumValue839 + EnumValue840 + EnumValue841 +} + +enum Enum124 { + EnumValue842 + EnumValue843 + EnumValue844 + EnumValue845 + EnumValue846 + EnumValue847 + EnumValue848 + EnumValue849 + EnumValue850 +} + +enum Enum125 { + EnumValue851 + EnumValue852 + EnumValue853 + EnumValue854 +} + +enum Enum126 { + EnumValue855 + EnumValue856 + EnumValue857 + EnumValue858 + EnumValue859 + EnumValue860 + EnumValue861 +} + +enum Enum127 { + EnumValue862 + EnumValue863 +} + +enum Enum128 { + EnumValue864 + EnumValue865 +} + +enum Enum129 { + EnumValue866 + EnumValue867 + EnumValue868 +} + +enum Enum13 { + EnumValue59 + EnumValue60 +} + +enum Enum130 { + EnumValue869 + EnumValue870 + EnumValue871 +} + +enum Enum131 { + EnumValue872 + EnumValue873 +} + +enum Enum132 { + EnumValue874 + EnumValue875 + EnumValue876 +} + +enum Enum133 { + EnumValue877 + EnumValue878 +} + +enum Enum134 { + EnumValue879 + EnumValue880 +} + +enum Enum135 { + EnumValue881 + EnumValue882 +} + +enum Enum136 { + EnumValue883 + EnumValue884 + EnumValue885 + EnumValue886 +} + +enum Enum137 { + EnumValue887 + EnumValue888 +} + +enum Enum138 { + EnumValue889 + EnumValue890 + EnumValue891 + EnumValue892 + EnumValue893 + EnumValue894 + EnumValue895 + EnumValue896 + EnumValue897 +} + +enum Enum139 { + EnumValue898 + EnumValue899 +} + +enum Enum14 { + EnumValue61 + EnumValue62 + EnumValue63 + EnumValue64 + EnumValue65 + EnumValue66 + EnumValue67 + EnumValue68 + EnumValue69 + EnumValue70 + EnumValue71 +} + +enum Enum140 { + EnumValue900 + EnumValue901 + EnumValue902 + EnumValue903 +} + +enum Enum141 { + EnumValue904 + EnumValue905 + EnumValue906 + EnumValue907 + EnumValue908 +} + +enum Enum142 { + EnumValue909 +} + +enum Enum143 { + EnumValue910 + EnumValue911 + EnumValue912 +} + +enum Enum144 { + EnumValue913 + EnumValue914 +} + +enum Enum145 { + EnumValue915 + EnumValue916 + EnumValue917 +} + +enum Enum146 { + EnumValue918 + EnumValue919 + EnumValue920 +} + +enum Enum147 { + EnumValue921 + EnumValue922 + EnumValue923 + EnumValue924 + EnumValue925 + EnumValue926 +} + +enum Enum148 { + EnumValue927 + EnumValue928 + EnumValue929 +} + +enum Enum149 { + EnumValue930 + EnumValue931 +} + +enum Enum15 { + EnumValue72 + EnumValue73 + EnumValue74 +} + +enum Enum150 { + EnumValue932 + EnumValue933 +} + +enum Enum151 { + EnumValue934 + EnumValue935 + EnumValue936 +} + +enum Enum152 { + EnumValue937 + EnumValue938 + EnumValue939 + EnumValue940 + EnumValue941 +} + +enum Enum153 { + EnumValue942 + EnumValue943 +} + +enum Enum154 { + EnumValue944 + EnumValue945 + EnumValue946 + EnumValue947 + EnumValue948 + EnumValue949 + EnumValue950 + EnumValue951 + EnumValue952 + EnumValue953 + EnumValue954 +} + +enum Enum155 { + EnumValue955 + EnumValue956 + EnumValue957 + EnumValue958 +} + +enum Enum156 { + EnumValue959 + EnumValue960 + EnumValue961 + EnumValue962 + EnumValue963 + EnumValue964 + EnumValue965 + EnumValue966 + EnumValue967 + EnumValue968 + EnumValue969 +} + +enum Enum157 { + EnumValue970 + EnumValue971 + EnumValue972 + EnumValue973 + EnumValue974 +} + +enum Enum158 { + EnumValue975 + EnumValue976 + EnumValue977 +} + +enum Enum159 { + EnumValue978 + EnumValue979 + EnumValue980 + EnumValue981 +} + +enum Enum16 { + EnumValue75 + EnumValue76 + EnumValue77 + EnumValue78 + EnumValue79 + EnumValue80 + EnumValue81 + EnumValue82 + EnumValue83 + EnumValue84 + EnumValue85 + EnumValue86 + EnumValue87 + EnumValue88 + EnumValue89 + EnumValue90 + EnumValue91 + EnumValue92 + EnumValue93 + EnumValue94 + EnumValue95 + EnumValue96 +} + +enum Enum160 { + EnumValue982 + EnumValue983 + EnumValue984 + EnumValue985 + EnumValue986 + EnumValue987 +} + +enum Enum161 { + EnumValue988 + EnumValue989 + EnumValue990 + EnumValue991 + EnumValue992 +} + +enum Enum162 { + EnumValue993 + EnumValue994 +} + +enum Enum163 { + EnumValue995 + EnumValue996 +} + +enum Enum164 { + EnumValue997 + EnumValue998 +} + +enum Enum165 { + EnumValue1000 + EnumValue999 +} + +enum Enum166 { + EnumValue1001 + EnumValue1002 + EnumValue1003 + EnumValue1004 + EnumValue1005 + EnumValue1006 + EnumValue1007 + EnumValue1008 + EnumValue1009 + EnumValue1010 +} + +enum Enum167 { + EnumValue1011 + EnumValue1012 + EnumValue1013 +} + +enum Enum168 { + EnumValue1014 +} + +enum Enum169 { + EnumValue1015 + EnumValue1016 + EnumValue1017 +} + +enum Enum17 { + EnumValue100 + EnumValue101 + EnumValue102 + EnumValue103 + EnumValue104 + EnumValue105 + EnumValue106 + EnumValue107 + EnumValue108 + EnumValue109 + EnumValue110 + EnumValue111 + EnumValue112 + EnumValue113 + EnumValue97 + EnumValue98 + EnumValue99 +} + +enum Enum170 { + EnumValue1018 + EnumValue1019 + EnumValue1020 + EnumValue1021 + EnumValue1022 + EnumValue1023 + EnumValue1024 + EnumValue1025 + EnumValue1026 + EnumValue1027 + EnumValue1028 + EnumValue1029 + EnumValue1030 + EnumValue1031 + EnumValue1032 + EnumValue1033 + EnumValue1034 + EnumValue1035 + EnumValue1036 + EnumValue1037 + EnumValue1038 + EnumValue1039 + EnumValue1040 + EnumValue1041 + EnumValue1042 +} + +enum Enum171 { + EnumValue1043 + EnumValue1044 + EnumValue1045 + EnumValue1046 +} + +enum Enum172 { + EnumValue1047 + EnumValue1048 + EnumValue1049 + EnumValue1050 +} + +enum Enum173 { + EnumValue1051 + EnumValue1052 +} + +enum Enum174 { + EnumValue1053 + EnumValue1054 + EnumValue1055 +} + +enum Enum175 { + EnumValue1056 + EnumValue1057 + EnumValue1058 + EnumValue1059 +} + +enum Enum176 { + EnumValue1060 + EnumValue1061 + EnumValue1062 + EnumValue1063 + EnumValue1064 +} + +enum Enum177 { + EnumValue1065 + EnumValue1066 + EnumValue1067 + EnumValue1068 +} + +enum Enum178 { + EnumValue1069 + EnumValue1070 + EnumValue1071 +} + +enum Enum179 { + EnumValue1072 + EnumValue1073 + EnumValue1074 + EnumValue1075 + EnumValue1076 +} + +enum Enum18 { + EnumValue114 + EnumValue115 + EnumValue116 + EnumValue117 + EnumValue118 + EnumValue119 + EnumValue120 + EnumValue121 + EnumValue122 + EnumValue123 + EnumValue124 + EnumValue125 + EnumValue126 + EnumValue127 + EnumValue128 + EnumValue129 + EnumValue130 + EnumValue131 + EnumValue132 + EnumValue133 + EnumValue134 + EnumValue135 + EnumValue136 + EnumValue137 + EnumValue138 + EnumValue139 + EnumValue140 + EnumValue141 + EnumValue142 + EnumValue143 + EnumValue144 + EnumValue145 + EnumValue146 + EnumValue147 + EnumValue148 + EnumValue149 + EnumValue150 + EnumValue151 + EnumValue152 + EnumValue153 + EnumValue154 + EnumValue155 + EnumValue156 + EnumValue157 + EnumValue158 + EnumValue159 + EnumValue160 + EnumValue161 + EnumValue162 + EnumValue163 + EnumValue164 + EnumValue165 + EnumValue166 + EnumValue167 + EnumValue168 + EnumValue169 + EnumValue170 + EnumValue171 + EnumValue172 + EnumValue173 + EnumValue174 + EnumValue175 + EnumValue176 + EnumValue177 + EnumValue178 + EnumValue179 + EnumValue180 + EnumValue181 + EnumValue182 + EnumValue183 + EnumValue184 + EnumValue185 + EnumValue186 + EnumValue187 + EnumValue188 + EnumValue189 + EnumValue190 + EnumValue191 + EnumValue192 + EnumValue193 + EnumValue194 + EnumValue195 + EnumValue196 + EnumValue197 + EnumValue198 + EnumValue199 + EnumValue200 + EnumValue201 + EnumValue202 + EnumValue203 + EnumValue204 + EnumValue205 + EnumValue206 + EnumValue207 + EnumValue208 + EnumValue209 + EnumValue210 + EnumValue211 + EnumValue212 + EnumValue213 + EnumValue214 + EnumValue215 + EnumValue216 + EnumValue217 + EnumValue218 + EnumValue219 + EnumValue220 + EnumValue221 + EnumValue222 + EnumValue223 + EnumValue224 + EnumValue225 + EnumValue226 + EnumValue227 + EnumValue228 + EnumValue229 + EnumValue230 + EnumValue231 + EnumValue232 + EnumValue233 + EnumValue234 + EnumValue235 + EnumValue236 + EnumValue237 + EnumValue238 + EnumValue239 + EnumValue240 + EnumValue241 + EnumValue242 + EnumValue243 + EnumValue244 + EnumValue245 + EnumValue246 + EnumValue247 + EnumValue248 + EnumValue249 + EnumValue250 + EnumValue251 + EnumValue252 + EnumValue253 + EnumValue254 + EnumValue255 + EnumValue256 + EnumValue257 + EnumValue258 + EnumValue259 + EnumValue260 + EnumValue261 + EnumValue262 + EnumValue263 + EnumValue264 + EnumValue265 + EnumValue266 + EnumValue267 + EnumValue268 + EnumValue269 + EnumValue270 + EnumValue271 + EnumValue272 + EnumValue273 + EnumValue274 + EnumValue275 + EnumValue276 + EnumValue277 + EnumValue278 + EnumValue279 + EnumValue280 + EnumValue281 + EnumValue282 + EnumValue283 + EnumValue284 + EnumValue285 + EnumValue286 + EnumValue287 + EnumValue288 + EnumValue289 + EnumValue290 + EnumValue291 + EnumValue292 + EnumValue293 + EnumValue294 + EnumValue295 + EnumValue296 + EnumValue297 + EnumValue298 + EnumValue299 + EnumValue300 + EnumValue301 + EnumValue302 + EnumValue303 + EnumValue304 + EnumValue305 + EnumValue306 + EnumValue307 + EnumValue308 + EnumValue309 + EnumValue310 + EnumValue311 + EnumValue312 + EnumValue313 + EnumValue314 + EnumValue315 + EnumValue316 + EnumValue317 + EnumValue318 + EnumValue319 + EnumValue320 + EnumValue321 + EnumValue322 + EnumValue323 + EnumValue324 + EnumValue325 + EnumValue326 + EnumValue327 + EnumValue328 + EnumValue329 + EnumValue330 + EnumValue331 + EnumValue332 + EnumValue333 + EnumValue334 + EnumValue335 + EnumValue336 + EnumValue337 + EnumValue338 + EnumValue339 + EnumValue340 + EnumValue341 + EnumValue342 + EnumValue343 + EnumValue344 + EnumValue345 + EnumValue346 + EnumValue347 + EnumValue348 + EnumValue349 + EnumValue350 + EnumValue351 + EnumValue352 + EnumValue353 + EnumValue354 + EnumValue355 + EnumValue356 + EnumValue357 + EnumValue358 + EnumValue359 + EnumValue360 + EnumValue361 + EnumValue362 + EnumValue363 + EnumValue364 + EnumValue365 +} + +enum Enum180 { + EnumValue1077 + EnumValue1078 + EnumValue1079 +} + +enum Enum181 { + EnumValue1080 + EnumValue1081 + EnumValue1082 + EnumValue1083 + EnumValue1084 +} + +enum Enum182 { + EnumValue1085 + EnumValue1086 + EnumValue1087 + EnumValue1088 + EnumValue1089 + EnumValue1090 + EnumValue1091 +} + +enum Enum183 { + EnumValue1092 + EnumValue1093 + EnumValue1094 + EnumValue1095 +} + +enum Enum184 { + EnumValue1096 + EnumValue1097 + EnumValue1098 + EnumValue1099 + EnumValue1100 +} + +enum Enum185 { + EnumValue1101 + EnumValue1102 + EnumValue1103 +} + +enum Enum186 { + EnumValue1104 + EnumValue1105 + EnumValue1106 +} + +enum Enum187 { + EnumValue1107 + EnumValue1108 + EnumValue1109 + EnumValue1110 + EnumValue1111 +} + +enum Enum188 { + EnumValue1112 + EnumValue1113 + EnumValue1114 + EnumValue1115 + EnumValue1116 + EnumValue1117 + EnumValue1118 +} + +enum Enum189 { + EnumValue1119 + EnumValue1120 +} + +enum Enum19 { + EnumValue366 + EnumValue367 +} + +enum Enum190 { + EnumValue1121 + EnumValue1122 + EnumValue1123 + EnumValue1124 + EnumValue1125 + EnumValue1126 +} + +enum Enum191 { + EnumValue1127 + EnumValue1128 + EnumValue1129 +} + +enum Enum192 { + EnumValue1130 + EnumValue1131 + EnumValue1132 +} + +enum Enum193 { + EnumValue1133 + EnumValue1134 + EnumValue1135 + EnumValue1136 + EnumValue1137 + EnumValue1138 + EnumValue1139 + EnumValue1140 + EnumValue1141 +} + +enum Enum194 { + EnumValue1142 + EnumValue1143 + EnumValue1144 +} + +enum Enum195 { + EnumValue1145 + EnumValue1146 +} + +enum Enum196 { + EnumValue1147 + EnumValue1148 + EnumValue1149 + EnumValue1150 + EnumValue1151 + EnumValue1152 + EnumValue1153 +} + +enum Enum197 { + EnumValue1154 + EnumValue1155 + EnumValue1156 + EnumValue1157 + EnumValue1158 +} + +enum Enum198 { + EnumValue1159 + EnumValue1160 + EnumValue1161 + EnumValue1162 +} + +enum Enum199 { + EnumValue1163 + EnumValue1164 + EnumValue1165 + EnumValue1166 +} + +enum Enum2 { + EnumValue10 + EnumValue11 + EnumValue12 + EnumValue13 + EnumValue14 + EnumValue9 +} + +enum Enum20 { + EnumValue368 + EnumValue369 + EnumValue370 + EnumValue371 + EnumValue372 + EnumValue373 + EnumValue374 +} + +enum Enum200 { + EnumValue1167 + EnumValue1168 +} + +enum Enum201 { + EnumValue1169 + EnumValue1170 + EnumValue1171 + EnumValue1172 + EnumValue1173 + EnumValue1174 +} + +enum Enum202 { + EnumValue1175 + EnumValue1176 +} + +enum Enum203 { + EnumValue1177 + EnumValue1178 + EnumValue1179 + EnumValue1180 + EnumValue1181 + EnumValue1182 +} + +enum Enum204 { + EnumValue1183 + EnumValue1184 + EnumValue1185 +} + +enum Enum205 { + EnumValue1186 + EnumValue1187 + EnumValue1188 + EnumValue1189 + EnumValue1190 +} + +enum Enum206 { + EnumValue1191 + EnumValue1192 +} + +enum Enum207 { + EnumValue1193 + EnumValue1194 + EnumValue1195 + EnumValue1196 + EnumValue1197 +} + +enum Enum208 { + EnumValue1198 + EnumValue1199 +} + +enum Enum209 { + EnumValue1200 + EnumValue1201 + EnumValue1202 + EnumValue1203 + EnumValue1204 +} + +enum Enum21 { + EnumValue375 + EnumValue376 + EnumValue377 + EnumValue378 +} + +enum Enum210 { + EnumValue1205 + EnumValue1206 + EnumValue1207 +} + +enum Enum211 { + EnumValue1208 + EnumValue1209 + EnumValue1210 +} + +enum Enum212 { + EnumValue1211 + EnumValue1212 + EnumValue1213 +} + +enum Enum213 { + EnumValue1214 + EnumValue1215 +} + +enum Enum214 { + EnumValue1216 + EnumValue1217 + EnumValue1218 +} + +enum Enum215 { + EnumValue1219 + EnumValue1220 + EnumValue1221 + EnumValue1222 +} + +enum Enum216 { + EnumValue1223 + EnumValue1224 + EnumValue1225 + EnumValue1226 + EnumValue1227 +} + +enum Enum217 { + EnumValue1228 + EnumValue1229 + EnumValue1230 + EnumValue1231 + EnumValue1232 +} + +enum Enum218 { + EnumValue1233 + EnumValue1234 + EnumValue1235 + EnumValue1236 + EnumValue1237 +} + +enum Enum219 { + EnumValue1238 + EnumValue1239 + EnumValue1240 + EnumValue1241 +} + +enum Enum22 { + EnumValue379 + EnumValue380 +} + +enum Enum220 { + EnumValue1242 + EnumValue1243 + EnumValue1244 +} + +enum Enum221 { + EnumValue1245 + EnumValue1246 +} + +enum Enum222 { + EnumValue1247 + EnumValue1248 + EnumValue1249 + EnumValue1250 +} + +enum Enum223 { + EnumValue1251 + EnumValue1252 +} + +enum Enum224 { + EnumValue1253 + EnumValue1254 + EnumValue1255 + EnumValue1256 + EnumValue1257 + EnumValue1258 + EnumValue1259 + EnumValue1260 + EnumValue1261 + EnumValue1262 +} + +enum Enum225 { + EnumValue1263 + EnumValue1264 + EnumValue1265 + EnumValue1266 + EnumValue1267 +} + +enum Enum226 { + EnumValue1268 + EnumValue1269 + EnumValue1270 +} + +enum Enum227 { + EnumValue1271 + EnumValue1272 +} + +enum Enum228 { + EnumValue1273 + EnumValue1274 + EnumValue1275 + EnumValue1276 + EnumValue1277 + EnumValue1278 +} + +enum Enum229 { + EnumValue1279 + EnumValue1280 + EnumValue1281 + EnumValue1282 + EnumValue1283 + EnumValue1284 + EnumValue1285 + EnumValue1286 +} + +enum Enum23 { + EnumValue381 + EnumValue382 + EnumValue383 + EnumValue384 + EnumValue385 +} + +enum Enum230 { + EnumValue1287 + EnumValue1288 + EnumValue1289 + EnumValue1290 + EnumValue1291 + EnumValue1292 + EnumValue1293 +} + +enum Enum231 { + EnumValue1294 + EnumValue1295 + EnumValue1296 + EnumValue1297 +} + +enum Enum232 { + EnumValue1298 + EnumValue1299 +} + +enum Enum233 { + EnumValue1300 + EnumValue1301 + EnumValue1302 + EnumValue1303 +} + +enum Enum234 { + EnumValue1304 + EnumValue1305 +} + +enum Enum235 { + EnumValue1306 + EnumValue1307 + EnumValue1308 +} + +enum Enum236 { + EnumValue1309 + EnumValue1310 + EnumValue1311 + EnumValue1312 + EnumValue1313 +} + +enum Enum237 { + EnumValue1314 + EnumValue1315 +} + +enum Enum238 { + EnumValue1316 + EnumValue1317 +} + +enum Enum239 { + EnumValue1318 + EnumValue1319 +} + +enum Enum24 { + EnumValue386 + EnumValue387 +} + +enum Enum240 { + EnumValue1320 + EnumValue1321 + EnumValue1322 + EnumValue1323 +} + +enum Enum241 { + EnumValue1324 + EnumValue1325 + EnumValue1326 + EnumValue1327 + EnumValue1328 +} + +enum Enum242 { + EnumValue1329 + EnumValue1330 + EnumValue1331 + EnumValue1332 + EnumValue1333 + EnumValue1334 + EnumValue1335 + EnumValue1336 + EnumValue1337 + EnumValue1338 + EnumValue1339 + EnumValue1340 + EnumValue1341 + EnumValue1342 + EnumValue1343 +} + +enum Enum243 { + EnumValue1344 + EnumValue1345 + EnumValue1346 + EnumValue1347 + EnumValue1348 + EnumValue1349 + EnumValue1350 +} + +enum Enum244 { + EnumValue1351 + EnumValue1352 + EnumValue1353 + EnumValue1354 + EnumValue1355 + EnumValue1356 + EnumValue1357 +} + +enum Enum245 { + EnumValue1358 + EnumValue1359 + EnumValue1360 + EnumValue1361 +} + +enum Enum246 { + EnumValue1362 + EnumValue1363 + EnumValue1364 + EnumValue1365 + EnumValue1366 +} + +enum Enum247 { + EnumValue1367 + EnumValue1368 + EnumValue1369 + EnumValue1370 + EnumValue1371 + EnumValue1372 +} + +enum Enum248 { + EnumValue1373 + EnumValue1374 + EnumValue1375 + EnumValue1376 + EnumValue1377 +} + +enum Enum249 { + EnumValue1378 + EnumValue1379 + EnumValue1380 + EnumValue1381 +} + +enum Enum25 { + EnumValue388 + EnumValue389 + EnumValue390 +} + +enum Enum250 { + EnumValue1382 + EnumValue1383 + EnumValue1384 + EnumValue1385 + EnumValue1386 +} + +enum Enum251 { + EnumValue1387 + EnumValue1388 +} + +enum Enum252 { + EnumValue1389 + EnumValue1390 + EnumValue1391 + EnumValue1392 +} + +enum Enum253 { + EnumValue1393 + EnumValue1394 +} + +enum Enum254 { + EnumValue1395 + EnumValue1396 +} + +enum Enum255 { + EnumValue1397 + EnumValue1398 + EnumValue1399 +} + +enum Enum256 { + EnumValue1400 + EnumValue1401 + EnumValue1402 +} + +enum Enum257 { + EnumValue1403 + EnumValue1404 + EnumValue1405 + EnumValue1406 + EnumValue1407 + EnumValue1408 + EnumValue1409 + EnumValue1410 +} + +enum Enum258 { + EnumValue1411 + EnumValue1412 + EnumValue1413 + EnumValue1414 + EnumValue1415 +} + +enum Enum259 { + EnumValue1416 + EnumValue1417 + EnumValue1418 +} + +enum Enum26 { + EnumValue391 + EnumValue392 + EnumValue393 + EnumValue394 + EnumValue395 +} + +enum Enum260 { + EnumValue1419 + EnumValue1420 + EnumValue1421 + EnumValue1422 +} + +enum Enum261 { + EnumValue1423 + EnumValue1424 + EnumValue1425 + EnumValue1426 +} + +enum Enum262 { + EnumValue1427 + EnumValue1428 + EnumValue1429 + EnumValue1430 + EnumValue1431 + EnumValue1432 + EnumValue1433 +} + +enum Enum263 { + EnumValue1434 + EnumValue1435 + EnumValue1436 + EnumValue1437 + EnumValue1438 + EnumValue1439 + EnumValue1440 +} + +enum Enum264 { + EnumValue1441 + EnumValue1442 + EnumValue1443 + EnumValue1444 + EnumValue1445 +} + +enum Enum265 { + EnumValue1446 + EnumValue1447 + EnumValue1448 + EnumValue1449 + EnumValue1450 + EnumValue1451 + EnumValue1452 + EnumValue1453 + EnumValue1454 + EnumValue1455 +} + +enum Enum266 { + EnumValue1456 + EnumValue1457 + EnumValue1458 + EnumValue1459 + EnumValue1460 + EnumValue1461 + EnumValue1462 + EnumValue1463 + EnumValue1464 +} + +enum Enum267 { + EnumValue1465 + EnumValue1466 + EnumValue1467 + EnumValue1468 + EnumValue1469 + EnumValue1470 + EnumValue1471 +} + +enum Enum268 { + EnumValue1472 + EnumValue1473 +} + +enum Enum269 { + EnumValue1474 + EnumValue1475 + EnumValue1476 + EnumValue1477 @deprecated + EnumValue1478 +} + +enum Enum27 { + EnumValue396 + EnumValue397 + EnumValue398 +} + +enum Enum270 { + EnumValue1479 + EnumValue1480 + EnumValue1481 + EnumValue1482 + EnumValue1483 + EnumValue1484 + EnumValue1485 + EnumValue1486 + EnumValue1487 + EnumValue1488 + EnumValue1489 + EnumValue1490 +} + +enum Enum271 { + EnumValue1491 + EnumValue1492 + EnumValue1493 +} + +enum Enum272 { + EnumValue1494 + EnumValue1495 +} + +enum Enum273 { + EnumValue1496 + EnumValue1497 + EnumValue1498 + EnumValue1499 + EnumValue1500 +} + +enum Enum274 { + EnumValue1501 + EnumValue1502 + EnumValue1503 + EnumValue1504 +} + +enum Enum275 { + EnumValue1505 +} + +enum Enum276 { + EnumValue1506 + EnumValue1507 + EnumValue1508 + EnumValue1509 + EnumValue1510 + EnumValue1511 + EnumValue1512 + EnumValue1513 +} + +enum Enum277 { + EnumValue1514 + EnumValue1515 + EnumValue1516 + EnumValue1517 + EnumValue1518 + EnumValue1519 + EnumValue1520 +} + +enum Enum278 { + EnumValue1521 + EnumValue1522 + EnumValue1523 + EnumValue1524 + EnumValue1525 + EnumValue1526 +} + +enum Enum279 { + EnumValue1527 +} + +enum Enum28 { + EnumValue399 + EnumValue400 + EnumValue401 + EnumValue402 +} + +enum Enum280 { + EnumValue1528 + EnumValue1529 + EnumValue1530 + EnumValue1531 +} + +enum Enum281 { + EnumValue1532 + EnumValue1533 + EnumValue1534 + EnumValue1535 + EnumValue1536 +} + +enum Enum282 { + EnumValue1537 + EnumValue1538 +} + +enum Enum283 { + EnumValue1539 + EnumValue1540 + EnumValue1541 + EnumValue1542 + EnumValue1543 +} + +enum Enum284 { + EnumValue1544 + EnumValue1545 + EnumValue1546 +} + +enum Enum285 { + EnumValue1547 + EnumValue1548 + EnumValue1549 +} + +enum Enum286 { + EnumValue1550 + EnumValue1551 + EnumValue1552 +} + +enum Enum287 { + EnumValue1553 + EnumValue1554 + EnumValue1555 + EnumValue1556 + EnumValue1557 + EnumValue1558 +} + +enum Enum288 { + EnumValue1559 +} + +enum Enum289 { + EnumValue1560 + EnumValue1561 + EnumValue1562 +} + +enum Enum29 { + EnumValue403 + EnumValue404 + EnumValue405 +} + +enum Enum290 { + EnumValue1563 +} + +enum Enum291 { + EnumValue1564 + EnumValue1565 + EnumValue1566 +} + +enum Enum292 { + EnumValue1567 + EnumValue1568 + EnumValue1569 + EnumValue1570 +} + +enum Enum293 { + EnumValue1571 + EnumValue1572 +} + +enum Enum294 { + EnumValue1573 + EnumValue1574 + EnumValue1575 + EnumValue1576 + EnumValue1577 +} + +enum Enum295 { + EnumValue1578 + EnumValue1579 + EnumValue1580 + EnumValue1581 + EnumValue1582 +} + +enum Enum296 { + EnumValue1583 + EnumValue1584 + EnumValue1585 + EnumValue1586 +} + +enum Enum297 { + EnumValue1587 + EnumValue1588 + EnumValue1589 + EnumValue1590 + EnumValue1591 + EnumValue1592 + EnumValue1593 + EnumValue1594 + EnumValue1595 + EnumValue1596 + EnumValue1597 + EnumValue1598 +} + +enum Enum298 { + EnumValue1599 + EnumValue1600 + EnumValue1601 + EnumValue1602 + EnumValue1603 + EnumValue1604 +} + +enum Enum299 { + EnumValue1605 + EnumValue1606 + EnumValue1607 + EnumValue1608 +} + +enum Enum3 { + EnumValue15 + EnumValue16 + EnumValue17 +} + +enum Enum30 { + EnumValue406 + EnumValue407 +} + +enum Enum300 { + EnumValue1609 + EnumValue1610 +} + +enum Enum301 { + EnumValue1611 + EnumValue1612 + EnumValue1613 + EnumValue1614 + EnumValue1615 + EnumValue1616 + EnumValue1617 + EnumValue1618 + EnumValue1619 + EnumValue1620 +} + +enum Enum302 { + EnumValue1621 + EnumValue1622 + EnumValue1623 + EnumValue1624 + EnumValue1625 + EnumValue1626 +} + +enum Enum303 { + EnumValue1627 + EnumValue1628 +} + +enum Enum304 { + EnumValue1629 + EnumValue1630 +} + +enum Enum305 { + EnumValue1631 + EnumValue1632 + EnumValue1633 + EnumValue1634 +} + +enum Enum306 { + EnumValue1635 + EnumValue1636 +} + +enum Enum307 { + EnumValue1637 + EnumValue1638 +} + +enum Enum308 { + EnumValue1639 + EnumValue1640 + EnumValue1641 + EnumValue1642 + EnumValue1643 + EnumValue1644 + EnumValue1645 + EnumValue1646 + EnumValue1647 + EnumValue1648 +} + +enum Enum309 { + EnumValue1649 + EnumValue1650 + EnumValue1651 + EnumValue1652 + EnumValue1653 + EnumValue1654 + EnumValue1655 + EnumValue1656 + EnumValue1657 + EnumValue1658 + EnumValue1659 + EnumValue1660 + EnumValue1661 + EnumValue1662 + EnumValue1663 + EnumValue1664 + EnumValue1665 + EnumValue1666 +} + +enum Enum31 { + EnumValue408 + EnumValue409 +} + +enum Enum310 { + EnumValue1667 + EnumValue1668 + EnumValue1669 + EnumValue1670 + EnumValue1671 + EnumValue1672 + EnumValue1673 +} + +enum Enum311 { + EnumValue1674 + EnumValue1675 + EnumValue1676 + EnumValue1677 + EnumValue1678 + EnumValue1679 + EnumValue1680 +} + +enum Enum312 { + EnumValue1681 + EnumValue1682 + EnumValue1683 +} + +enum Enum313 { + EnumValue1684 + EnumValue1685 + EnumValue1686 + EnumValue1687 + EnumValue1688 + EnumValue1689 + EnumValue1690 + EnumValue1691 + EnumValue1692 + EnumValue1693 + EnumValue1694 + EnumValue1695 + EnumValue1696 + EnumValue1697 + EnumValue1698 + EnumValue1699 + EnumValue1700 + EnumValue1701 + EnumValue1702 + EnumValue1703 + EnumValue1704 + EnumValue1705 + EnumValue1706 +} + +enum Enum314 { + EnumValue1707 + EnumValue1708 + EnumValue1709 +} + +enum Enum315 { + EnumValue1710 + EnumValue1711 +} + +enum Enum316 { + EnumValue1712 + EnumValue1713 + EnumValue1714 +} + +enum Enum317 { + EnumValue1715 + EnumValue1716 +} + +enum Enum318 { + EnumValue1717 + EnumValue1718 + EnumValue1719 + EnumValue1720 +} + +enum Enum319 { + EnumValue1721 + EnumValue1722 + EnumValue1723 + EnumValue1724 +} + +enum Enum32 { + EnumValue410 + EnumValue411 + EnumValue412 +} + +enum Enum320 { + EnumValue1725 + EnumValue1726 + EnumValue1727 + EnumValue1728 +} + +enum Enum321 { + EnumValue1729 + EnumValue1730 +} + +enum Enum322 { + EnumValue1731 + EnumValue1732 + EnumValue1733 +} + +enum Enum323 { + EnumValue1734 + EnumValue1735 + EnumValue1736 +} + +enum Enum324 { + EnumValue1737 + EnumValue1738 +} + +enum Enum325 { + EnumValue1739 + EnumValue1740 + EnumValue1741 + EnumValue1742 +} + +enum Enum326 { + EnumValue1743 + EnumValue1744 + EnumValue1745 + EnumValue1746 +} + +enum Enum327 { + EnumValue1747 + EnumValue1748 + EnumValue1749 +} + +enum Enum328 { + EnumValue1750 + EnumValue1751 + EnumValue1752 + EnumValue1753 + EnumValue1754 + EnumValue1755 + EnumValue1756 + EnumValue1757 + EnumValue1758 + EnumValue1759 + EnumValue1760 + EnumValue1761 + EnumValue1762 + EnumValue1763 + EnumValue1764 + EnumValue1765 + EnumValue1766 + EnumValue1767 + EnumValue1768 + EnumValue1769 + EnumValue1770 + EnumValue1771 + EnumValue1772 + EnumValue1773 + EnumValue1774 + EnumValue1775 +} + +enum Enum329 { + EnumValue1776 + EnumValue1777 + EnumValue1778 +} + +enum Enum33 { + EnumValue413 + EnumValue414 + EnumValue415 + EnumValue416 + EnumValue417 + EnumValue418 + EnumValue419 + EnumValue420 + EnumValue421 + EnumValue422 + EnumValue423 +} + +enum Enum330 { + EnumValue1779 +} + +enum Enum331 { + EnumValue1780 + EnumValue1781 + EnumValue1782 + EnumValue1783 + EnumValue1784 + EnumValue1785 +} + +enum Enum332 { + EnumValue1786 + EnumValue1787 + EnumValue1788 + EnumValue1789 + EnumValue1790 +} + +enum Enum333 { + EnumValue1791 + EnumValue1792 + EnumValue1793 + EnumValue1794 + EnumValue1795 + EnumValue1796 +} + +enum Enum334 { + EnumValue1797 + EnumValue1798 +} + +enum Enum335 { + EnumValue1799 + EnumValue1800 + EnumValue1801 +} + +enum Enum336 { + EnumValue1802 + EnumValue1803 + EnumValue1804 + EnumValue1805 +} + +enum Enum337 { + EnumValue1806 + EnumValue1807 +} + +enum Enum338 { + EnumValue1808 +} + +enum Enum339 { + EnumValue1809 + EnumValue1810 + EnumValue1811 + EnumValue1812 + EnumValue1813 + EnumValue1814 + EnumValue1815 + EnumValue1816 + EnumValue1817 + EnumValue1818 + EnumValue1819 + EnumValue1820 + EnumValue1821 + EnumValue1822 + EnumValue1823 + EnumValue1824 +} + +enum Enum34 { + EnumValue424 + EnumValue425 +} + +enum Enum340 { + EnumValue1825 + EnumValue1826 + EnumValue1827 + EnumValue1828 + EnumValue1829 + EnumValue1830 + EnumValue1831 + EnumValue1832 + EnumValue1833 + EnumValue1834 + EnumValue1835 + EnumValue1836 +} + +enum Enum341 { + EnumValue1837 + EnumValue1838 + EnumValue1839 + EnumValue1840 +} + +enum Enum342 { + EnumValue1841 + EnumValue1842 + EnumValue1843 +} + +enum Enum343 { + EnumValue1844 + EnumValue1845 + EnumValue1846 +} + +enum Enum344 { + EnumValue1847 + EnumValue1848 +} + +enum Enum345 { + EnumValue1849 + EnumValue1850 + EnumValue1851 + EnumValue1852 + EnumValue1853 + EnumValue1854 + EnumValue1855 + EnumValue1856 +} + +enum Enum346 { + EnumValue1857 + EnumValue1858 + EnumValue1859 + EnumValue1860 + EnumValue1861 + EnumValue1862 +} + +enum Enum347 { + EnumValue1863 + EnumValue1864 + EnumValue1865 +} + +enum Enum348 { + EnumValue1866 + EnumValue1867 + EnumValue1868 + EnumValue1869 + EnumValue1870 + EnumValue1871 + EnumValue1872 + EnumValue1873 + EnumValue1874 + EnumValue1875 + EnumValue1876 + EnumValue1877 + EnumValue1878 + EnumValue1879 + EnumValue1880 + EnumValue1881 + EnumValue1882 + EnumValue1883 + EnumValue1884 +} + +enum Enum349 { + EnumValue1885 + EnumValue1886 + EnumValue1887 + EnumValue1888 + EnumValue1889 + EnumValue1890 + EnumValue1891 + EnumValue1892 +} + +enum Enum35 { + EnumValue426 + EnumValue427 +} + +enum Enum350 { + EnumValue1893 + EnumValue1894 + EnumValue1895 + EnumValue1896 +} + +enum Enum351 { + EnumValue1897 + EnumValue1898 + EnumValue1899 + EnumValue1900 + EnumValue1901 + EnumValue1902 +} + +enum Enum352 { + EnumValue1903 + EnumValue1904 + EnumValue1905 +} + +enum Enum353 { + EnumValue1906 + EnumValue1907 + EnumValue1908 + EnumValue1909 + EnumValue1910 + EnumValue1911 +} + +enum Enum354 { + EnumValue1912 + EnumValue1913 + EnumValue1914 + EnumValue1915 + EnumValue1916 + EnumValue1917 +} + +enum Enum355 { + EnumValue1918 + EnumValue1919 + EnumValue1920 + EnumValue1921 + EnumValue1922 + EnumValue1923 + EnumValue1924 + EnumValue1925 + EnumValue1926 + EnumValue1927 + EnumValue1928 + EnumValue1929 + EnumValue1930 + EnumValue1931 + EnumValue1932 + EnumValue1933 + EnumValue1934 + EnumValue1935 + EnumValue1936 + EnumValue1937 + EnumValue1938 + EnumValue1939 +} + +enum Enum356 { + EnumValue1940 + EnumValue1941 + EnumValue1942 + EnumValue1943 + EnumValue1944 + EnumValue1945 + EnumValue1946 + EnumValue1947 + EnumValue1948 + EnumValue1949 + EnumValue1950 + EnumValue1951 + EnumValue1952 + EnumValue1953 + EnumValue1954 + EnumValue1955 + EnumValue1956 +} + +enum Enum357 { + EnumValue1957 + EnumValue1958 + EnumValue1959 + EnumValue1960 + EnumValue1961 + EnumValue1962 + EnumValue1963 + EnumValue1964 + EnumValue1965 + EnumValue1966 + EnumValue1967 + EnumValue1968 + EnumValue1969 + EnumValue1970 +} + +enum Enum358 { + EnumValue1971 + EnumValue1972 + EnumValue1973 +} + +enum Enum359 { + EnumValue1974 + EnumValue1975 + EnumValue1976 + EnumValue1977 + EnumValue1978 + EnumValue1979 + EnumValue1980 + EnumValue1981 + EnumValue1982 + EnumValue1983 + EnumValue1984 + EnumValue1985 + EnumValue1986 + EnumValue1987 + EnumValue1988 + EnumValue1989 + EnumValue1990 + EnumValue1991 + EnumValue1992 + EnumValue1993 + EnumValue1994 + EnumValue1995 + EnumValue1996 + EnumValue1997 + EnumValue1998 + EnumValue1999 + EnumValue2000 + EnumValue2001 + EnumValue2002 + EnumValue2003 + EnumValue2004 + EnumValue2005 + EnumValue2006 + EnumValue2007 + EnumValue2008 + EnumValue2009 + EnumValue2010 + EnumValue2011 + EnumValue2012 + EnumValue2013 + EnumValue2014 + EnumValue2015 + EnumValue2016 + EnumValue2017 + EnumValue2018 + EnumValue2019 + EnumValue2020 + EnumValue2021 + EnumValue2022 + EnumValue2023 + EnumValue2024 + EnumValue2025 + EnumValue2026 + EnumValue2027 + EnumValue2028 + EnumValue2029 + EnumValue2030 + EnumValue2031 + EnumValue2032 + EnumValue2033 + EnumValue2034 + EnumValue2035 + EnumValue2036 + EnumValue2037 + EnumValue2038 + EnumValue2039 + EnumValue2040 + EnumValue2041 + EnumValue2042 + EnumValue2043 + EnumValue2044 + EnumValue2045 + EnumValue2046 + EnumValue2047 + EnumValue2048 + EnumValue2049 + EnumValue2050 + EnumValue2051 + EnumValue2052 + EnumValue2053 + EnumValue2054 + EnumValue2055 + EnumValue2056 + EnumValue2057 + EnumValue2058 + EnumValue2059 + EnumValue2060 + EnumValue2061 + EnumValue2062 + EnumValue2063 + EnumValue2064 + EnumValue2065 + EnumValue2066 + EnumValue2067 + EnumValue2068 + EnumValue2069 + EnumValue2070 + EnumValue2071 + EnumValue2072 + EnumValue2073 + EnumValue2074 + EnumValue2075 + EnumValue2076 + EnumValue2077 + EnumValue2078 + EnumValue2079 + EnumValue2080 + EnumValue2081 + EnumValue2082 + EnumValue2083 + EnumValue2084 + EnumValue2085 + EnumValue2086 + EnumValue2087 + EnumValue2088 + EnumValue2089 + EnumValue2090 + EnumValue2091 + EnumValue2092 + EnumValue2093 + EnumValue2094 + EnumValue2095 + EnumValue2096 + EnumValue2097 + EnumValue2098 + EnumValue2099 + EnumValue2100 + EnumValue2101 + EnumValue2102 + EnumValue2103 + EnumValue2104 + EnumValue2105 + EnumValue2106 + EnumValue2107 + EnumValue2108 + EnumValue2109 + EnumValue2110 + EnumValue2111 + EnumValue2112 + EnumValue2113 + EnumValue2114 + EnumValue2115 + EnumValue2116 + EnumValue2117 + EnumValue2118 + EnumValue2119 + EnumValue2120 + EnumValue2121 + EnumValue2122 + EnumValue2123 + EnumValue2124 + EnumValue2125 + EnumValue2126 + EnumValue2127 + EnumValue2128 + EnumValue2129 + EnumValue2130 + EnumValue2131 + EnumValue2132 + EnumValue2133 + EnumValue2134 + EnumValue2135 + EnumValue2136 + EnumValue2137 + EnumValue2138 + EnumValue2139 + EnumValue2140 + EnumValue2141 + EnumValue2142 + EnumValue2143 + EnumValue2144 + EnumValue2145 + EnumValue2146 + EnumValue2147 + EnumValue2148 + EnumValue2149 + EnumValue2150 + EnumValue2151 + EnumValue2152 + EnumValue2153 + EnumValue2154 + EnumValue2155 + EnumValue2156 + EnumValue2157 + EnumValue2158 + EnumValue2159 + EnumValue2160 + EnumValue2161 + EnumValue2162 + EnumValue2163 + EnumValue2164 + EnumValue2165 + EnumValue2166 + EnumValue2167 + EnumValue2168 + EnumValue2169 + EnumValue2170 + EnumValue2171 + EnumValue2172 + EnumValue2173 + EnumValue2174 + EnumValue2175 + EnumValue2176 + EnumValue2177 + EnumValue2178 + EnumValue2179 + EnumValue2180 + EnumValue2181 + EnumValue2182 + EnumValue2183 + EnumValue2184 + EnumValue2185 + EnumValue2186 + EnumValue2187 + EnumValue2188 + EnumValue2189 + EnumValue2190 + EnumValue2191 + EnumValue2192 + EnumValue2193 + EnumValue2194 + EnumValue2195 + EnumValue2196 + EnumValue2197 + EnumValue2198 + EnumValue2199 + EnumValue2200 + EnumValue2201 + EnumValue2202 + EnumValue2203 + EnumValue2204 + EnumValue2205 + EnumValue2206 + EnumValue2207 + EnumValue2208 + EnumValue2209 + EnumValue2210 + EnumValue2211 + EnumValue2212 + EnumValue2213 + EnumValue2214 + EnumValue2215 + EnumValue2216 + EnumValue2217 + EnumValue2218 + EnumValue2219 + EnumValue2220 + EnumValue2221 + EnumValue2222 + EnumValue2223 + EnumValue2224 + EnumValue2225 + EnumValue2226 + EnumValue2227 + EnumValue2228 + EnumValue2229 + EnumValue2230 + EnumValue2231 + EnumValue2232 + EnumValue2233 + EnumValue2234 + EnumValue2235 + EnumValue2236 + EnumValue2237 + EnumValue2238 +} + +enum Enum36 { + EnumValue428 + EnumValue429 + EnumValue430 + EnumValue431 + EnumValue432 + EnumValue433 + EnumValue434 +} + +enum Enum360 { + EnumValue2239 + EnumValue2240 +} + +enum Enum361 { + EnumValue2241 + EnumValue2242 + EnumValue2243 + EnumValue2244 + EnumValue2245 + EnumValue2246 + EnumValue2247 + EnumValue2248 + EnumValue2249 + EnumValue2250 +} + +enum Enum362 { + EnumValue2251 + EnumValue2252 +} + +enum Enum363 { + EnumValue2253 + EnumValue2254 + EnumValue2255 +} + +enum Enum364 { + EnumValue2256 + EnumValue2257 + EnumValue2258 +} + +enum Enum365 { + EnumValue2259 + EnumValue2260 +} + +enum Enum366 { + EnumValue2261 + EnumValue2262 + EnumValue2263 +} + +enum Enum367 { + EnumValue2264 + EnumValue2265 + EnumValue2266 +} + +enum Enum368 { + EnumValue2267 + EnumValue2268 +} + +enum Enum369 { + EnumValue2269 + EnumValue2270 + EnumValue2271 + EnumValue2272 +} + +enum Enum37 { + EnumValue435 + EnumValue436 + EnumValue437 +} + +enum Enum370 { + EnumValue2273 +} + +enum Enum371 { + EnumValue2274 + EnumValue2275 + EnumValue2276 + EnumValue2277 +} + +enum Enum372 { + EnumValue2278 + EnumValue2279 + EnumValue2280 + EnumValue2281 +} + +enum Enum373 { + EnumValue2282 +} + +enum Enum374 { + EnumValue2283 +} + +enum Enum375 { + EnumValue2284 + EnumValue2285 + EnumValue2286 + EnumValue2287 +} + +enum Enum376 { + EnumValue2288 + EnumValue2289 + EnumValue2290 + EnumValue2291 +} + +enum Enum377 { + EnumValue2292 + EnumValue2293 + EnumValue2294 +} + +enum Enum378 { + EnumValue2295 + EnumValue2296 + EnumValue2297 +} + +enum Enum379 { + EnumValue2298 + EnumValue2299 + EnumValue2300 +} + +enum Enum38 { + EnumValue438 + EnumValue439 + EnumValue440 +} + +enum Enum380 { + EnumValue2301 + EnumValue2302 + EnumValue2303 + EnumValue2304 + EnumValue2305 +} + +enum Enum381 { + EnumValue2306 + EnumValue2307 + EnumValue2308 +} + +enum Enum382 { + EnumValue2309 + EnumValue2310 + EnumValue2311 +} + +enum Enum383 { + EnumValue2312 + EnumValue2313 + EnumValue2314 + EnumValue2315 +} + +enum Enum384 { + EnumValue2316 + EnumValue2317 + EnumValue2318 + EnumValue2319 +} + +enum Enum385 { + EnumValue2320 + EnumValue2321 + EnumValue2322 + EnumValue2323 + EnumValue2324 +} + +enum Enum386 { + EnumValue2325 + EnumValue2326 +} + +enum Enum387 { + EnumValue2327 + EnumValue2328 + EnumValue2329 + EnumValue2330 +} + +enum Enum388 { + EnumValue2331 + EnumValue2332 + EnumValue2333 + EnumValue2334 + EnumValue2335 + EnumValue2336 + EnumValue2337 + EnumValue2338 + EnumValue2339 + EnumValue2340 + EnumValue2341 + EnumValue2342 + EnumValue2343 + EnumValue2344 +} + +enum Enum389 { + EnumValue2345 + EnumValue2346 +} + +enum Enum39 { + EnumValue441 + EnumValue442 + EnumValue443 + EnumValue444 +} + +enum Enum390 { + EnumValue2347 + EnumValue2348 +} + +enum Enum391 { + EnumValue2349 + EnumValue2350 +} + +enum Enum392 { + EnumValue2351 + EnumValue2352 + EnumValue2353 + EnumValue2354 + EnumValue2355 + EnumValue2356 +} + +enum Enum393 { + EnumValue2357 + EnumValue2358 +} + +enum Enum394 { + EnumValue2359 + EnumValue2360 +} + +enum Enum395 { + EnumValue2361 + EnumValue2362 + EnumValue2363 +} + +enum Enum396 { + EnumValue2364 + EnumValue2365 + EnumValue2366 +} + +enum Enum397 { + EnumValue2367 + EnumValue2368 +} + +enum Enum398 { + EnumValue2369 + EnumValue2370 + EnumValue2371 + EnumValue2372 +} + +enum Enum399 { + EnumValue2373 + EnumValue2374 + EnumValue2375 + EnumValue2376 +} + +enum Enum4 { + EnumValue18 + EnumValue19 + EnumValue20 + EnumValue21 +} + +enum Enum40 { + EnumValue445 + EnumValue446 + EnumValue447 +} + +enum Enum400 { + EnumValue2377 + EnumValue2378 + EnumValue2379 + EnumValue2380 + EnumValue2381 +} + +enum Enum401 { + EnumValue2382 + EnumValue2383 + EnumValue2384 + EnumValue2385 + EnumValue2386 + EnumValue2387 + EnumValue2388 + EnumValue2389 + EnumValue2390 + EnumValue2391 + EnumValue2392 + EnumValue2393 + EnumValue2394 + EnumValue2395 + EnumValue2396 + EnumValue2397 + EnumValue2398 + EnumValue2399 + EnumValue2400 + EnumValue2401 + EnumValue2402 + EnumValue2403 +} + +enum Enum402 { + EnumValue2404 + EnumValue2405 +} + +enum Enum403 { + EnumValue2406 + EnumValue2407 + EnumValue2408 +} + +enum Enum404 { + EnumValue2409 + EnumValue2410 +} + +enum Enum405 { + EnumValue2411 + EnumValue2412 +} + +enum Enum406 { + EnumValue2413 + EnumValue2414 +} + +enum Enum407 { + EnumValue2415 + EnumValue2416 + EnumValue2417 +} + +enum Enum408 { + EnumValue2418 + EnumValue2419 +} + +enum Enum409 { + EnumValue2420 + EnumValue2421 + EnumValue2422 + EnumValue2423 + EnumValue2424 + EnumValue2425 + EnumValue2426 +} + +enum Enum41 { + EnumValue448 + EnumValue449 + EnumValue450 +} + +enum Enum410 { + EnumValue2427 + EnumValue2428 + EnumValue2429 +} + +enum Enum411 { + EnumValue2430 + EnumValue2431 + EnumValue2432 + EnumValue2433 +} + +enum Enum412 { + EnumValue2434 + EnumValue2435 +} + +enum Enum413 { + EnumValue2436 + EnumValue2437 +} + +enum Enum414 { + EnumValue2438 + EnumValue2439 +} + +enum Enum415 { + EnumValue2440 + EnumValue2441 + EnumValue2442 + EnumValue2443 + EnumValue2444 + EnumValue2445 + EnumValue2446 + EnumValue2447 + EnumValue2448 + EnumValue2449 + EnumValue2450 + EnumValue2451 + EnumValue2452 +} + +enum Enum416 { + EnumValue2453 + EnumValue2454 +} + +enum Enum417 { + EnumValue2455 + EnumValue2456 + EnumValue2457 +} + +enum Enum418 { + EnumValue2458 +} + +enum Enum419 { + EnumValue2459 +} + +enum Enum42 { + EnumValue451 + EnumValue452 + EnumValue453 + EnumValue454 + EnumValue455 + EnumValue456 + EnumValue457 + EnumValue458 +} + +enum Enum420 { + EnumValue2460 + EnumValue2461 +} + +enum Enum421 { + EnumValue2462 + EnumValue2463 + EnumValue2464 + EnumValue2465 + EnumValue2466 + EnumValue2467 +} + +enum Enum422 { + EnumValue2468 + EnumValue2469 + EnumValue2470 + EnumValue2471 +} + +enum Enum423 { + EnumValue2472 + EnumValue2473 + EnumValue2474 + EnumValue2475 +} + +enum Enum424 { + EnumValue2476 + EnumValue2477 + EnumValue2478 + EnumValue2479 +} + +enum Enum425 { + EnumValue2480 + EnumValue2481 +} + +enum Enum426 { + EnumValue2482 + EnumValue2483 + EnumValue2484 + EnumValue2485 + EnumValue2486 +} + +enum Enum427 { + EnumValue2487 + EnumValue2488 + EnumValue2489 + EnumValue2490 + EnumValue2491 + EnumValue2492 + EnumValue2493 +} + +enum Enum428 { + EnumValue2494 + EnumValue2495 + EnumValue2496 + EnumValue2497 + EnumValue2498 + EnumValue2499 + EnumValue2500 + EnumValue2501 +} + +enum Enum429 { + EnumValue2502 + EnumValue2503 + EnumValue2504 + EnumValue2505 + EnumValue2506 + EnumValue2507 + EnumValue2508 + EnumValue2509 +} + +enum Enum43 { + EnumValue459 + EnumValue460 +} + +enum Enum430 { + EnumValue2510 + EnumValue2511 +} + +enum Enum431 { + EnumValue2512 + EnumValue2513 +} + +enum Enum432 { + EnumValue2514 + EnumValue2515 + EnumValue2516 + EnumValue2517 + EnumValue2518 +} + +enum Enum433 { + EnumValue2519 +} + +enum Enum434 { + EnumValue2520 + EnumValue2521 + EnumValue2522 + EnumValue2523 + EnumValue2524 + EnumValue2525 +} + +enum Enum435 { + EnumValue2526 + EnumValue2527 + EnumValue2528 +} + +enum Enum436 { + EnumValue2529 + EnumValue2530 + EnumValue2531 +} + +enum Enum437 { + EnumValue2532 + EnumValue2533 + EnumValue2534 + EnumValue2535 + EnumValue2536 + EnumValue2537 + EnumValue2538 + EnumValue2539 + EnumValue2540 + EnumValue2541 + EnumValue2542 + EnumValue2543 + EnumValue2544 + EnumValue2545 + EnumValue2546 + EnumValue2547 + EnumValue2548 + EnumValue2549 + EnumValue2550 + EnumValue2551 + EnumValue2552 + EnumValue2553 + EnumValue2554 + EnumValue2555 + EnumValue2556 + EnumValue2557 + EnumValue2558 + EnumValue2559 + EnumValue2560 + EnumValue2561 + EnumValue2562 + EnumValue2563 + EnumValue2564 + EnumValue2565 + EnumValue2566 + EnumValue2567 + EnumValue2568 + EnumValue2569 + EnumValue2570 + EnumValue2571 + EnumValue2572 + EnumValue2573 + EnumValue2574 + EnumValue2575 +} + +enum Enum438 { + EnumValue2576 + EnumValue2577 + EnumValue2578 + EnumValue2579 + EnumValue2580 + EnumValue2581 + EnumValue2582 + EnumValue2583 + EnumValue2584 + EnumValue2585 + EnumValue2586 + EnumValue2587 + EnumValue2588 + EnumValue2589 +} + +enum Enum439 { + EnumValue2590 + EnumValue2591 + EnumValue2592 + EnumValue2593 + EnumValue2594 + EnumValue2595 + EnumValue2596 + EnumValue2597 +} + +enum Enum44 { + EnumValue461 + EnumValue462 + EnumValue463 + EnumValue464 + EnumValue465 + EnumValue466 + EnumValue467 +} + +enum Enum440 { + EnumValue2598 + EnumValue2599 + EnumValue2600 +} + +enum Enum441 { + EnumValue2601 + EnumValue2602 + EnumValue2603 + EnumValue2604 +} + +enum Enum442 { + EnumValue2605 + EnumValue2606 + EnumValue2607 + EnumValue2608 + EnumValue2609 +} + +enum Enum443 { + EnumValue2610 + EnumValue2611 + EnumValue2612 + EnumValue2613 + EnumValue2614 +} + +enum Enum444 { + EnumValue2615 + EnumValue2616 + EnumValue2617 + EnumValue2618 + EnumValue2619 + EnumValue2620 + EnumValue2621 + EnumValue2622 + EnumValue2623 + EnumValue2624 +} + +enum Enum445 { + EnumValue2625 + EnumValue2626 + EnumValue2627 + EnumValue2628 + EnumValue2629 + EnumValue2630 + EnumValue2631 + EnumValue2632 + EnumValue2633 + EnumValue2634 + EnumValue2635 + EnumValue2636 + EnumValue2637 + EnumValue2638 + EnumValue2639 +} + +enum Enum446 { + EnumValue2640 + EnumValue2641 + EnumValue2642 +} + +enum Enum447 { + EnumValue2643 + EnumValue2644 + EnumValue2645 +} + +enum Enum448 { + EnumValue2646 + EnumValue2647 + EnumValue2648 + EnumValue2649 + EnumValue2650 + EnumValue2651 +} + +enum Enum449 { + EnumValue2652 + EnumValue2653 +} + +enum Enum45 { + EnumValue468 + EnumValue469 + EnumValue470 +} + +enum Enum450 { + EnumValue2654 +} + +enum Enum451 { + EnumValue2655 +} + +enum Enum452 { + EnumValue2656 + EnumValue2657 +} + +enum Enum453 { + EnumValue2658 + EnumValue2659 + EnumValue2660 + EnumValue2661 + EnumValue2662 + EnumValue2663 + EnumValue2664 + EnumValue2665 +} + +enum Enum454 { + EnumValue2666 + EnumValue2667 + EnumValue2668 + EnumValue2669 + EnumValue2670 + EnumValue2671 + EnumValue2672 +} + +enum Enum455 { + EnumValue2673 + EnumValue2674 + EnumValue2675 +} + +enum Enum456 { + EnumValue2676 + EnumValue2677 + EnumValue2678 + EnumValue2679 +} + +enum Enum457 { + EnumValue2680 + EnumValue2681 + EnumValue2682 + EnumValue2683 + EnumValue2684 + EnumValue2685 + EnumValue2686 + EnumValue2687 + EnumValue2688 +} + +enum Enum458 { + EnumValue2689 + EnumValue2690 +} + +enum Enum459 { + EnumValue2691 + EnumValue2692 +} + +enum Enum46 { + EnumValue471 + EnumValue472 + EnumValue473 + EnumValue474 + EnumValue475 +} + +enum Enum460 { + EnumValue2693 + EnumValue2694 + EnumValue2695 + EnumValue2696 + EnumValue2697 +} + +enum Enum461 { + EnumValue2698 + EnumValue2699 @deprecated + EnumValue2700 + EnumValue2701 + EnumValue2702 + EnumValue2703 + EnumValue2704 + EnumValue2705 +} + +enum Enum462 { + EnumValue2706 + EnumValue2707 + EnumValue2708 + EnumValue2709 +} + +enum Enum463 { + EnumValue2710 + EnumValue2711 +} + +enum Enum464 { + EnumValue2712 + EnumValue2713 + EnumValue2714 + EnumValue2715 +} + +enum Enum465 { + EnumValue2716 + EnumValue2717 + EnumValue2718 + EnumValue2719 +} + +enum Enum466 { + EnumValue2720 + EnumValue2721 + EnumValue2722 + EnumValue2723 + EnumValue2724 +} + +enum Enum467 { + EnumValue2725 + EnumValue2726 + EnumValue2727 +} + +enum Enum468 { + EnumValue2728 + EnumValue2729 +} + +enum Enum469 { + EnumValue2730 + EnumValue2731 + EnumValue2732 +} + +enum Enum47 { + EnumValue476 + EnumValue477 + EnumValue478 + EnumValue479 + EnumValue480 +} + +enum Enum470 { + EnumValue2733 + EnumValue2734 +} + +enum Enum471 { + EnumValue2735 + EnumValue2736 + EnumValue2737 + EnumValue2738 + EnumValue2739 +} + +enum Enum472 { + EnumValue2740 + EnumValue2741 + EnumValue2742 +} + +enum Enum473 { + EnumValue2743 + EnumValue2744 + EnumValue2745 + EnumValue2746 + EnumValue2747 +} + +enum Enum474 { + EnumValue2748 + EnumValue2749 + EnumValue2750 + EnumValue2751 + EnumValue2752 +} + +enum Enum475 { + EnumValue2753 + EnumValue2754 + EnumValue2755 +} + +enum Enum476 { + EnumValue2756 + EnumValue2757 +} + +enum Enum477 { + EnumValue2758 + EnumValue2759 + EnumValue2760 + EnumValue2761 +} + +enum Enum478 { + EnumValue2762 + EnumValue2763 + EnumValue2764 +} + +enum Enum479 { + EnumValue2765 + EnumValue2766 + EnumValue2767 +} + +enum Enum48 { + EnumValue481 + EnumValue482 + EnumValue483 +} + +enum Enum480 { + EnumValue2768 + EnumValue2769 +} + +enum Enum481 { + EnumValue2770 + EnumValue2771 + EnumValue2772 + EnumValue2773 + EnumValue2774 + EnumValue2775 + EnumValue2776 + EnumValue2777 + EnumValue2778 + EnumValue2779 + EnumValue2780 +} + +enum Enum482 { + EnumValue2781 + EnumValue2782 + EnumValue2783 + EnumValue2784 +} + +enum Enum483 { + EnumValue2785 + EnumValue2786 + EnumValue2787 +} + +enum Enum484 { + EnumValue2788 + EnumValue2789 + EnumValue2790 +} + +enum Enum485 { + EnumValue2791 + EnumValue2792 + EnumValue2793 + EnumValue2794 +} + +enum Enum486 { + EnumValue2795 + EnumValue2796 + EnumValue2797 + EnumValue2798 +} + +enum Enum487 { + EnumValue2799 + EnumValue2800 +} + +enum Enum488 { + EnumValue2801 + EnumValue2802 + EnumValue2803 + EnumValue2804 + EnumValue2805 +} + +enum Enum489 { + EnumValue2806 + EnumValue2807 + EnumValue2808 + EnumValue2809 +} + +enum Enum49 { + EnumValue484 + EnumValue485 + EnumValue486 +} + +enum Enum490 { + EnumValue2810 + EnumValue2811 + EnumValue2812 + EnumValue2813 + EnumValue2814 + EnumValue2815 +} + +enum Enum491 { + EnumValue2816 + EnumValue2817 + EnumValue2818 + EnumValue2819 + EnumValue2820 + EnumValue2821 +} + +enum Enum492 { + EnumValue2822 + EnumValue2823 + EnumValue2824 + EnumValue2825 +} + +enum Enum493 { + EnumValue2826 + EnumValue2827 + EnumValue2828 + EnumValue2829 + EnumValue2830 + EnumValue2831 + EnumValue2832 + EnumValue2833 + EnumValue2834 + EnumValue2835 + EnumValue2836 + EnumValue2837 + EnumValue2838 +} + +enum Enum494 { + EnumValue2839 + EnumValue2840 + EnumValue2841 + EnumValue2842 + EnumValue2843 + EnumValue2844 + EnumValue2845 +} + +enum Enum495 { + EnumValue2846 + EnumValue2847 + EnumValue2848 + EnumValue2849 + EnumValue2850 + EnumValue2851 +} + +enum Enum496 { + EnumValue2852 + EnumValue2853 + EnumValue2854 +} + +enum Enum497 { + EnumValue2855 + EnumValue2856 +} + +enum Enum498 { + EnumValue2857 +} + +enum Enum499 { + EnumValue2858 + EnumValue2859 + EnumValue2860 + EnumValue2861 + EnumValue2862 + EnumValue2863 + EnumValue2864 + EnumValue2865 +} + +enum Enum5 { + EnumValue22 + EnumValue23 + EnumValue24 + EnumValue25 +} + +enum Enum50 { + EnumValue487 + EnumValue488 + EnumValue489 + EnumValue490 + EnumValue491 + EnumValue492 + EnumValue493 +} + +enum Enum500 { + EnumValue2866 + EnumValue2867 + EnumValue2868 +} + +enum Enum501 { + EnumValue2869 + EnumValue2870 + EnumValue2871 +} + +enum Enum502 { + EnumValue2872 + EnumValue2873 + EnumValue2874 + EnumValue2875 + EnumValue2876 +} + +enum Enum503 { + EnumValue2877 + EnumValue2878 + EnumValue2879 + EnumValue2880 + EnumValue2881 +} + +enum Enum504 { + EnumValue2882 + EnumValue2883 + EnumValue2884 +} + +enum Enum505 { + EnumValue2885 + EnumValue2886 + EnumValue2887 + EnumValue2888 + EnumValue2889 + EnumValue2890 + EnumValue2891 +} + +enum Enum506 { + EnumValue2892 + EnumValue2893 + EnumValue2894 + EnumValue2895 + EnumValue2896 +} + +enum Enum507 { + EnumValue2897 + EnumValue2898 + EnumValue2899 + EnumValue2900 + EnumValue2901 + EnumValue2902 + EnumValue2903 +} + +enum Enum508 { + EnumValue2904 + EnumValue2905 + EnumValue2906 + EnumValue2907 + EnumValue2908 +} + +enum Enum509 { + EnumValue2909 + EnumValue2910 + EnumValue2911 +} + +enum Enum51 { + EnumValue494 + EnumValue495 + EnumValue496 +} + +enum Enum510 { + EnumValue2912 + EnumValue2913 + EnumValue2914 +} + +enum Enum511 { + EnumValue2915 + EnumValue2916 + EnumValue2917 + EnumValue2918 + EnumValue2919 + EnumValue2920 +} + +enum Enum512 { + EnumValue2921 + EnumValue2922 +} + +enum Enum513 { + EnumValue2923 + EnumValue2924 + EnumValue2925 +} + +enum Enum514 { + EnumValue2926 + EnumValue2927 + EnumValue2928 +} + +enum Enum515 { + EnumValue2929 + EnumValue2930 + EnumValue2931 + EnumValue2932 + EnumValue2933 + EnumValue2934 + EnumValue2935 + EnumValue2936 + EnumValue2937 + EnumValue2938 +} + +enum Enum516 { + EnumValue2939 + EnumValue2940 + EnumValue2941 + EnumValue2942 + EnumValue2943 +} + +enum Enum517 { + EnumValue2944 + EnumValue2945 + EnumValue2946 +} + +enum Enum518 { + EnumValue2947 + EnumValue2948 + EnumValue2949 + EnumValue2950 + EnumValue2951 + EnumValue2952 + EnumValue2953 + EnumValue2954 + EnumValue2955 + EnumValue2956 + EnumValue2957 + EnumValue2958 + EnumValue2959 + EnumValue2960 + EnumValue2961 + EnumValue2962 + EnumValue2963 +} + +enum Enum519 { + EnumValue2964 + EnumValue2965 + EnumValue2966 + EnumValue2967 +} + +enum Enum52 { + EnumValue497 + EnumValue498 + EnumValue499 +} + +enum Enum520 { + EnumValue2968 + EnumValue2969 + EnumValue2970 + EnumValue2971 + EnumValue2972 + EnumValue2973 +} + +enum Enum521 { + EnumValue2974 + EnumValue2975 + EnumValue2976 + EnumValue2977 + EnumValue2978 + EnumValue2979 +} + +enum Enum522 { + EnumValue2980 + EnumValue2981 +} + +enum Enum523 { + EnumValue2982 + EnumValue2983 + EnumValue2984 +} + +enum Enum524 { + EnumValue2985 + EnumValue2986 + EnumValue2987 + EnumValue2988 +} + +enum Enum525 { + EnumValue2989 + EnumValue2990 +} + +enum Enum526 { + EnumValue2991 + EnumValue2992 + EnumValue2993 + EnumValue2994 + EnumValue2995 + EnumValue2996 +} + +enum Enum527 { + EnumValue2997 + EnumValue2998 + EnumValue2999 + EnumValue3000 +} + +enum Enum528 { + EnumValue3001 + EnumValue3002 + EnumValue3003 + EnumValue3004 + EnumValue3005 +} + +enum Enum529 { + EnumValue3006 + EnumValue3007 + EnumValue3008 +} + +enum Enum53 { + EnumValue500 + EnumValue501 + EnumValue502 + EnumValue503 +} + +enum Enum530 { + EnumValue3009 + EnumValue3010 + EnumValue3011 +} + +enum Enum531 { + EnumValue3012 + EnumValue3013 + EnumValue3014 + EnumValue3015 +} + +enum Enum532 { + EnumValue3016 + EnumValue3017 + EnumValue3018 + EnumValue3019 +} + +enum Enum533 { + EnumValue3020 + EnumValue3021 + EnumValue3022 + EnumValue3023 + EnumValue3024 + EnumValue3025 + EnumValue3026 + EnumValue3027 + EnumValue3028 + EnumValue3029 + EnumValue3030 +} + +enum Enum534 { + EnumValue3031 + EnumValue3032 + EnumValue3033 + EnumValue3034 + EnumValue3035 + EnumValue3036 + EnumValue3037 +} + +enum Enum535 { + EnumValue3038 + EnumValue3039 + EnumValue3040 + EnumValue3041 + EnumValue3042 +} + +enum Enum536 { + EnumValue3043 + EnumValue3044 + EnumValue3045 + EnumValue3046 + EnumValue3047 + EnumValue3048 + EnumValue3049 + EnumValue3050 +} + +enum Enum537 { + EnumValue3051 + EnumValue3052 +} + +enum Enum538 { + EnumValue3053 + EnumValue3054 + EnumValue3055 + EnumValue3056 + EnumValue3057 + EnumValue3058 +} + +enum Enum539 { + EnumValue3059 + EnumValue3060 + EnumValue3061 +} + +enum Enum54 { + EnumValue504 + EnumValue505 + EnumValue506 +} + +enum Enum540 { + EnumValue3062 + EnumValue3063 + EnumValue3064 +} + +enum Enum541 { + EnumValue3065 + EnumValue3066 + EnumValue3067 +} + +enum Enum542 { + EnumValue3068 + EnumValue3069 + EnumValue3070 + EnumValue3071 + EnumValue3072 +} + +enum Enum543 { + EnumValue3073 + EnumValue3074 + EnumValue3075 + EnumValue3076 + EnumValue3077 + EnumValue3078 +} + +enum Enum544 { + EnumValue3079 + EnumValue3080 + EnumValue3081 + EnumValue3082 + EnumValue3083 + EnumValue3084 +} + +enum Enum545 { + EnumValue3085 + EnumValue3086 +} + +enum Enum546 { + EnumValue3087 + EnumValue3088 + EnumValue3089 + EnumValue3090 +} + +enum Enum547 { + EnumValue3091 + EnumValue3092 + EnumValue3093 + EnumValue3094 +} + +enum Enum548 { + EnumValue3095 + EnumValue3096 + EnumValue3097 +} + +enum Enum549 { + EnumValue3098 + EnumValue3099 + EnumValue3100 + EnumValue3101 + EnumValue3102 + EnumValue3103 + EnumValue3104 + EnumValue3105 +} + +enum Enum55 { + EnumValue507 + EnumValue508 +} + +enum Enum550 { + EnumValue3106 + EnumValue3107 + EnumValue3108 + EnumValue3109 +} + +enum Enum551 { + EnumValue3110 + EnumValue3111 + EnumValue3112 + EnumValue3113 +} + +enum Enum552 { + EnumValue3114 + EnumValue3115 + EnumValue3116 + EnumValue3117 +} + +enum Enum553 { + EnumValue3118 + EnumValue3119 + EnumValue3120 + EnumValue3121 +} + +enum Enum554 { + EnumValue3122 + EnumValue3123 + EnumValue3124 + EnumValue3125 + EnumValue3126 +} + +enum Enum555 { + EnumValue3127 + EnumValue3128 + EnumValue3129 + EnumValue3130 + EnumValue3131 + EnumValue3132 + EnumValue3133 + EnumValue3134 + EnumValue3135 + EnumValue3136 +} + +enum Enum56 { + EnumValue509 + EnumValue510 + EnumValue511 + EnumValue512 + EnumValue513 +} + +enum Enum57 { + EnumValue514 + EnumValue515 + EnumValue516 +} + +enum Enum58 { + EnumValue517 + EnumValue518 + EnumValue519 + EnumValue520 + EnumValue521 + EnumValue522 + EnumValue523 + EnumValue524 + EnumValue525 + EnumValue526 + EnumValue527 +} + +enum Enum59 { + EnumValue528 + EnumValue529 + EnumValue530 + EnumValue531 + EnumValue532 + EnumValue533 + EnumValue534 + EnumValue535 + EnumValue536 +} + +enum Enum6 { + EnumValue26 + EnumValue27 + EnumValue28 +} + +enum Enum60 { + EnumValue537 + EnumValue538 +} + +enum Enum61 { + EnumValue539 + EnumValue540 + EnumValue541 + EnumValue542 + EnumValue543 + EnumValue544 +} + +enum Enum62 { + EnumValue545 + EnumValue546 +} + +enum Enum63 { + EnumValue547 + EnumValue548 +} + +enum Enum64 { + EnumValue549 + EnumValue550 +} + +enum Enum65 { + EnumValue551 + EnumValue552 + EnumValue553 + EnumValue554 + EnumValue555 + EnumValue556 + EnumValue557 + EnumValue558 +} + +enum Enum66 { + EnumValue559 + EnumValue560 + EnumValue561 +} + +enum Enum67 { + EnumValue562 + EnumValue563 + EnumValue564 + EnumValue565 + EnumValue566 + EnumValue567 + EnumValue568 +} + +enum Enum68 { + EnumValue569 + EnumValue570 +} + +enum Enum69 { + EnumValue571 + EnumValue572 +} + +enum Enum7 { + EnumValue29 + EnumValue30 +} + +enum Enum70 { + EnumValue573 + EnumValue574 + EnumValue575 + EnumValue576 +} + +enum Enum71 { + EnumValue577 + EnumValue578 + EnumValue579 + EnumValue580 + EnumValue581 +} + +enum Enum72 { + EnumValue582 + EnumValue583 + EnumValue584 + EnumValue585 +} + +enum Enum73 { + EnumValue586 + EnumValue587 +} + +enum Enum74 { + EnumValue588 + EnumValue589 +} + +enum Enum75 { + EnumValue590 + EnumValue591 + EnumValue592 +} + +enum Enum76 { + EnumValue593 + EnumValue594 + EnumValue595 + EnumValue596 + EnumValue597 + EnumValue598 + EnumValue599 + EnumValue600 + EnumValue601 + EnumValue602 + EnumValue603 + EnumValue604 + EnumValue605 + EnumValue606 + EnumValue607 +} + +enum Enum77 { + EnumValue608 + EnumValue609 +} + +enum Enum78 { + EnumValue610 + EnumValue611 + EnumValue612 + EnumValue613 + EnumValue614 + EnumValue615 +} + +enum Enum79 { + EnumValue616 + EnumValue617 + EnumValue618 + EnumValue619 + EnumValue620 +} + +enum Enum8 { + EnumValue31 + EnumValue32 + EnumValue33 + EnumValue34 + EnumValue35 +} + +enum Enum80 { + EnumValue621 + EnumValue622 + EnumValue623 + EnumValue624 +} + +enum Enum81 { + EnumValue625 + EnumValue626 + EnumValue627 + EnumValue628 + EnumValue629 + EnumValue630 +} + +enum Enum82 { + EnumValue631 + EnumValue632 + EnumValue633 + EnumValue634 + EnumValue635 +} + +enum Enum83 { + EnumValue636 + EnumValue637 + EnumValue638 + EnumValue639 + EnumValue640 +} + +enum Enum84 { + EnumValue641 + EnumValue642 + EnumValue643 +} + +enum Enum85 { + EnumValue644 + EnumValue645 + EnumValue646 + EnumValue647 +} + +enum Enum86 { + EnumValue648 + EnumValue649 + EnumValue650 + EnumValue651 + EnumValue652 + EnumValue653 + EnumValue654 +} + +enum Enum87 { + EnumValue655 + EnumValue656 +} + +enum Enum88 { + EnumValue657 + EnumValue658 + EnumValue659 + EnumValue660 + EnumValue661 + EnumValue662 + EnumValue663 + EnumValue664 + EnumValue665 + EnumValue666 + EnumValue667 + EnumValue668 + EnumValue669 + EnumValue670 + EnumValue671 + EnumValue672 + EnumValue673 + EnumValue674 + EnumValue675 + EnumValue676 + EnumValue677 + EnumValue678 + EnumValue679 + EnumValue680 + EnumValue681 + EnumValue682 + EnumValue683 + EnumValue684 + EnumValue685 + EnumValue686 + EnumValue687 + EnumValue688 + EnumValue689 + EnumValue690 + EnumValue691 + EnumValue692 +} + +enum Enum89 { + EnumValue693 + EnumValue694 + EnumValue695 +} + +enum Enum9 { + EnumValue36 + EnumValue37 + EnumValue38 +} + +enum Enum90 { + EnumValue696 + EnumValue697 + EnumValue698 + EnumValue699 + EnumValue700 + EnumValue701 + EnumValue702 +} + +enum Enum91 { + EnumValue703 + EnumValue704 + EnumValue705 + EnumValue706 + EnumValue707 +} + +enum Enum92 { + EnumValue708 + EnumValue709 + EnumValue710 + EnumValue711 + EnumValue712 + EnumValue713 + EnumValue714 + EnumValue715 + EnumValue716 + EnumValue717 + EnumValue718 + EnumValue719 + EnumValue720 + EnumValue721 + EnumValue722 +} + +enum Enum93 { + EnumValue723 + EnumValue724 + EnumValue725 + EnumValue726 + EnumValue727 + EnumValue728 + EnumValue729 + EnumValue730 + EnumValue731 +} + +enum Enum94 { + EnumValue732 + EnumValue733 +} + +enum Enum95 { + EnumValue734 + EnumValue735 + EnumValue736 +} + +enum Enum96 { + EnumValue737 + EnumValue738 +} + +enum Enum97 { + EnumValue739 + EnumValue740 + EnumValue741 + EnumValue742 + EnumValue743 + EnumValue744 + EnumValue745 + EnumValue746 + EnumValue747 + EnumValue748 + EnumValue749 +} + +enum Enum98 { + EnumValue750 + EnumValue751 + EnumValue752 + EnumValue753 + EnumValue754 + EnumValue755 +} + +enum Enum99 { + EnumValue756 + EnumValue757 +} + +scalar Scalar1 + +scalar Scalar10 + +scalar Scalar11 + +scalar Scalar12 + +scalar Scalar13 + +scalar Scalar14 + +scalar Scalar15 + +scalar Scalar16 + +scalar Scalar17 + +scalar Scalar18 + +scalar Scalar19 + +scalar Scalar2 + +scalar Scalar20 + +scalar Scalar21 + +scalar Scalar22 + +scalar Scalar23 + +scalar Scalar24 + +scalar Scalar25 + +scalar Scalar26 + +scalar Scalar27 + +scalar Scalar3 + +scalar Scalar4 + +scalar Scalar5 + +scalar Scalar6 + +scalar Scalar7 + +scalar Scalar8 + +scalar Scalar9 + +input InputObject1 { + inputField1: Scalar6 +} + +input InputObject10 { + inputField19: Enum69! = EnumValue571 + inputField20: Enum70! +} + +input InputObject100 { + inputField321: ID! + inputField322: ID! +} + +input InputObject1000 { + inputField4411: Scalar1 + inputField4412: String + inputField4413: ID! + inputField4414: String + inputField4415: String +} + +input InputObject1001 { + inputField4416: String + inputField4417: ID! + inputField4418: String +} + +input InputObject1002 { + inputField4419: Enum114 + inputField4420: [ID] + inputField4421: String + inputField4422: String + inputField4423: [ID] + inputField4424: ID! +} + +input InputObject1003 { + inputField4425: ID! + inputField4426: ID! + inputField4427: String +} + +input InputObject1004 { + inputField4428: Scalar5! + inputField4429: Scalar6! +} + +input InputObject1005 { + inputField4430: InputObject1004! + inputField4431: ID! +} + +input InputObject1006 { + inputField4432: InputObject1004! + inputField4433: ID! + inputField4434: ID! +} + +input InputObject1007 { + inputField4435: InputObject1004! + inputField4436: ID! +} + +input InputObject1008 { + inputField4437: InputObject1009 + inputField4517: String + inputField4518: Boolean = false + inputField4519: [Enum473] = [] + inputField4520: [Enum474] = [] +} + +input InputObject1009 { + inputField4438: InputObject1010 + inputField4454: InputObject1014 + inputField4460: Boolean + inputField4461: [InputObject1016] = [] + inputField4488: [InputObject1019] = [] + inputField4489: [InputObject1022] = [] + inputField4515: Boolean + inputField4516: [InputObject1021] = [] +} + +input InputObject101 { + inputField330: String + inputField331: ID + inputField332: String + inputField333: [ID!] +} + +input InputObject1010 { + inputField4439: InputObject1011 + inputField4452: InputObject1011 + inputField4453: Boolean = false +} + +input InputObject1011 { + inputField4440: [InputObject31!] + inputField4441: [String!] + inputField4442: [InputObject1012] + inputField4445: [String!] + inputField4446: [InputObject1013] + inputField4449: [String!] + inputField4450: [String!] + inputField4451: [Enum218!] +} + +input InputObject1012 { + inputField4443: String! + inputField4444: [String!] +} + +input InputObject1013 { + inputField4447: String! + inputField4448: [String!] +} + +input InputObject1014 { + inputField4455: Int + inputField4456: [InputObject1015] +} + +input InputObject1015 { + inputField4457: String + inputField4458: Int + inputField4459: String +} + +input InputObject1016 { + inputField4462: InputObject1009 + inputField4463: InputObject1017 + inputField4474: String + inputField4475: [InputObject1016] = [] + inputField4476: [InputObject1019] = [] + inputField4482: Int + inputField4483: [InputObject1021] = [] + inputField4487: Enum471! +} + +input InputObject1017 { + inputField4464: InputObject1018 + inputField4473: InputObject1018 +} + +input InputObject1018 { + inputField4465: [InputObject31!] = [] + inputField4466: [String!] = [] + inputField4467: [String!] = [] + inputField4468: [String!] = [] + inputField4469: [String!] = [] + inputField4470: [InputObject31!] = [] + inputField4471: [String!] = [] + inputField4472: [InputObject1013] = [] +} + +input InputObject1019 { + inputField4477: [String] = [] + inputField4478: [InputObject1020] = [] + inputField4481: Enum469! +} + +input InputObject102 { + inputField334: [Enum329!] + inputField335: [String!] +} + +input InputObject1020 { + inputField4479: String + inputField4480: String +} + +input InputObject1021 { + inputField4484: String + inputField4485: String + inputField4486: Enum470 +} + +input InputObject1022 { + inputField4490: String + inputField4491: InputObject1023 + inputField4504: String + inputField4505: [String] = [] + inputField4506: Boolean + inputField4507: String + inputField4508: [InputObject1024] = [] + inputField4511: [String] = [] + inputField4512: String + inputField4513: Scalar8 + inputField4514: Enum472! +} + +input InputObject1023 { + inputField4492: String + inputField4493: [String] = [] + inputField4494: [String] = [] + inputField4495: [InputObject1020] = [] + inputField4496: Boolean = true + inputField4497: String + inputField4498: Int = 7 + inputField4499: Int = 8 + inputField4500: Boolean = true + inputField4501: Boolean = false + inputField4502: String + inputField4503: [InputObject1020] = [] +} + +input InputObject1024 { + inputField4509: String + inputField4510: [InputObject1020] = [] +} + +input InputObject1025 { + inputField4521: [String!] + inputField4522: [String!] + inputField4523: InputObject1010 + inputField4524: String + inputField4525: String + inputField4526: Boolean = false + inputField4527: [Enum224!] + inputField4528: Boolean = false + inputField4529: Boolean = true + inputField4530: [Enum473!] + inputField4531: [String!] + inputField4532: Boolean = false + inputField4533: [String!] +} + +input InputObject1026 { + inputField4534: [String!] + inputField4535: InputObject1010 + inputField4536: [String!] + inputField4537: Boolean = false + inputField4538: Int + inputField4539: [Enum473!] +} + +input InputObject1027 { + inputField4540: String! + inputField4541: Int +} + +input InputObject1028 { + inputField4542: String +} + +input InputObject1029 { + inputField4543: [Enum324!] + inputField4544: [String!] + inputField4545: [Enum199!] + inputField4546: String + inputField4547: [Enum296!] +} + +input InputObject103 { + inputField336: String + inputField337: ID + inputField338: String + inputField339: [ID!] +} + +input InputObject1030 { + inputField4548: Int + inputField4549: String! + inputField4550: Int +} + +input InputObject1031 { + inputField4551: ID! + inputField4552: String +} + +input InputObject1032 { + inputField4553: String +} + +input InputObject1033 { + inputField4554: Boolean + inputField4555: String + inputField4556: String + inputField4557: String + inputField4558: Enum169 + inputField4559: Enum170 +} + +input InputObject1034 { + inputField4560: Boolean = true + inputField4561: [String!] + inputField4562: [ID!] +} + +input InputObject1035 { + inputField4563: Enum477 + inputField4564: Enum478 + inputField4565: String + inputField4566: Enum479 + inputField4567: Enum480! + inputField4568: [Int!]! + inputField4569: Enum481 +} + +input InputObject1036 { + inputField4570: String! + inputField4571: Int + inputField4572: Boolean +} + +input InputObject1037 { + inputField4573: String + inputField4574: [Int!] +} + +input InputObject1038 { + inputField4575: String +} + +input InputObject1039 { + inputField4576: Int + inputField4577: Int + inputField4578: String +} + +input InputObject104 { + inputField340: [ID!]! +} + +input InputObject1040 { + inputField4579: String! + inputField4580: String + inputField4581: String! + inputField4582: Int! + inputField4583: Enum343! +} + +input InputObject1041 { + inputField4584: [String!] + inputField4585: [String!] + inputField4586: [String!] + inputField4587: [String!] + inputField4588: [Enum398] + inputField4589: [Enum496] + inputField4590: [Enum402] +} + +input InputObject1042 { + inputField4591: [String!] + inputField4592: Int! + inputField4593: Enum352! + inputField4594: ID! + inputField4595: String! + inputField4596: String +} + +input InputObject1043 { + inputField4597: String + inputField4598: String + inputField4599: String + inputField4600: Enum238 + inputField4601: [InputObject1044] + inputField4605: [InputObject1044] + inputField4606: String + inputField4607: String + inputField4608: String +} + +input InputObject1044 { + inputField4602: String + inputField4603: String + inputField4604: String +} + +input InputObject1045 { + inputField4609: [String!] + inputField4610: Scalar5 + inputField4611: [String!] + inputField4612: String + inputField4613: [String!] + inputField4614: Int + inputField4615: [String!] + inputField4616: [String!] + inputField4617: Scalar5 +} + +input InputObject1046 { + inputField4618: [String!] + inputField4619: [String!] + inputField4620: String + inputField4621: [String!] + inputField4622: Int + inputField4623: [String!] +} + +input InputObject1047 { + inputField4624: [String!] + inputField4625: [String!] + inputField4626: [String!] + inputField4627: [Int!] +} + +input InputObject1048 { + inputField4628: [Enum504!] + inputField4629: Boolean + inputField4630: [ID!] + inputField4631: Boolean +} + +input InputObject1049 { + inputField4632: [Enum361!] + inputField4633: [String!] + inputField4634: [Enum359!] + inputField4635: [Enum364!] + inputField4636: [String!] + inputField4637: [String!] + inputField4638: [Enum362!] + inputField4639: [ID!] + inputField4640: [String!] + inputField4641: [String!] +} + +input InputObject105 { + inputField341: [ID!]! +} + +input InputObject1050 { + inputField4642: [String] = [] + inputField4643: Scalar1 + inputField4644: Boolean = false + inputField4645: [Enum508] = [] + inputField4646: Scalar1 +} + +input InputObject1051 { + inputField4647: [String!] + inputField4648: [String!] + inputField4649: Enum509 + inputField4650: [String!] + inputField4651: [String!] + inputField4652: Boolean + inputField4653: [String!] + inputField4654: Enum510 + inputField4655: [String!] + inputField4656: [String!] + inputField4657: Enum511 + inputField4658: Enum512 + inputField4659: String + inputField4660: Enum513 + inputField4661: [String!] + inputField4662: String + inputField4663: [InputObject1052!] + inputField4666: Enum515 + inputField4667: [Enum516!] + inputField4668: [Enum245!] + inputField4669: [InputObject467!] +} + +input InputObject1052 { + inputField4664: String! + inputField4665: Enum514! +} + +input InputObject1053 { + inputField4670: Int! + inputField4671: InputObject11 +} + +input InputObject1054 { + inputField4672: String! + inputField4673: Int! +} + +input InputObject1055 { + inputField4674: InputObject1056 + inputField4679: [Enum524!] + inputField4680: Enum525 +} + +input InputObject1056 { + inputField4675: [String] + inputField4676: String + inputField4677: String + inputField4678: Boolean +} + +input InputObject1057 { + inputField4681: [Enum526!] + inputField4682: String + inputField4683: [Enum27!] +} + +input InputObject1058 { + inputField4684: Boolean + inputField4685: [ID!] + inputField4686: InputObject35 +} + +input InputObject1059 { + inputField4687: String + inputField4688: [ID!] + inputField4689: [InputObject35!] +} + +input InputObject106 { + inputField342: String! + inputField343: [Int!]! +} + +input InputObject1060 { + inputField4690: String +} + +input InputObject1061 { + inputField4691: [ID!] + inputField4692: [InputObject1062!] + inputField4697: InputObject1063 + inputField4702: String + inputField4703: InputObject1064 + inputField4706: InputObject1066 + inputField4709: [ID!] + inputField4710: [ID!] + inputField4711: [InputObject35!] + inputField4712: [String!] + inputField4713: [ID!] + inputField4714: [Enum527!] +} + +input InputObject1062 { + inputField4693: String + inputField4694: String + inputField4695: String + inputField4696: String +} + +input InputObject1063 { + inputField4698: Boolean! + inputField4699: [ID!] + inputField4700: [ID!] + inputField4701: [Enum36!] +} + +input InputObject1064 { + inputField4704: InputObject1065 +} + +input InputObject1065 { + inputField4705: Int! +} + +input InputObject1066 { + inputField4707: Enum528! + inputField4708: Scalar4! +} + +input InputObject1067 { + inputField4715: [ID!] + inputField4716: ID! + inputField4717: [Enum18!] + inputField4718: [Enum18!] + inputField4719: ID! + inputField4720: Scalar4 + inputField4721: Boolean + inputField4722: Scalar4 + inputField4723: Boolean + inputField4724: [ID!] + inputField4725: [String!] + inputField4726: Int + inputField4727: [ID!] + inputField4728: [Enum530!] + inputField4729: Boolean + inputField4730: [Int!] + inputField4731: Scalar4 + inputField4732: Boolean + inputField4733: Scalar4 + inputField4734: Boolean + inputField4735: [String!] + inputField4736: [String!] +} + +input InputObject1068 { + inputField4737: [ID!] + inputField4738: [Enum18!] + inputField4739: [Enum18!] + inputField4740: ID! + inputField4741: Scalar4 + inputField4742: Boolean + inputField4743: Scalar4 + inputField4744: Boolean + inputField4745: [String!] + inputField4746: Int + inputField4747: [ID!] + inputField4748: [Enum530!] + inputField4749: Boolean + inputField4750: [Int!] + inputField4751: Scalar4 + inputField4752: Boolean + inputField4753: Scalar4 + inputField4754: Boolean + inputField4755: [String!] + inputField4756: [ID!] + inputField4757: [String!] +} + +input InputObject1069 { + inputField4758: [ID!]! + inputField4759: [ID!]! + inputField4760: [ID!]! + inputField4761: [ID!]! +} + +input InputObject107 { + inputField344: String! +} + +input InputObject1070 { + inputField4762: [String!] + inputField4763: InputObject1071 + inputField4775: [Enum18!] + inputField4776: [ID!] + inputField4777: String + inputField4778: Boolean + inputField4779: [ID!] + inputField4780: [ID!] + inputField4781: Boolean + inputField4782: Enum42 + inputField4783: String +} + +input InputObject1071 { + inputField4764: [ID!] + inputField4765: [ID!] + inputField4766: [ID!] + inputField4767: [ID!] + inputField4768: Scalar4 + inputField4769: Scalar4 + inputField4770: Boolean + inputField4771: Scalar4 + inputField4772: String + inputField4773: String + inputField4774: [ID!] +} + +input InputObject1072 { + inputField4784: ID! + inputField4785: ID! +} + +input InputObject1073 { + inputField4786: String! + inputField4787: String! +} + +input InputObject1074 { + inputField4788: [InputObject354!] +} + +input InputObject1075 { + inputField4789: [InputObject1076] + inputField4796: Enum537 = EnumValue3052 +} + +input InputObject1076 { + inputField4790: [String] + inputField4791: [InputObject1077] + inputField4795: String +} + +input InputObject1077 { + inputField4792: String! + inputField4793: Enum536 = EnumValue3043 + inputField4794: [String] +} + +input InputObject1078 { + inputField4797: [ID!] +} + +input InputObject1079 { + inputField4798: Boolean + inputField4799: ID + inputField4800: ID +} + +input InputObject108 { + inputField345: [ID!] + inputField346: String + inputField347: [String!] + inputField348: Enum208 + inputField349: String! + inputField350: String + inputField351: String + inputField352: Enum200! +} + +input InputObject1080 { + inputField4801: ID! +} + +input InputObject1081 { + inputField4802: ID! + inputField4803: String! +} + +input InputObject1082 { + inputField4804: ID! +} + +input InputObject1083 { + inputField4805: String! +} + +input InputObject1084 { + inputField4806: ID! +} + +input InputObject1085 { + inputField4807: Boolean! + inputField4808: ID + inputField4809: [ID!] +} + +input InputObject1086 { + inputField4810: [String!] + inputField4811: String +} + +input InputObject1087 { + inputField4812: ID + inputField4813: ID +} + +input InputObject1088 { + inputField4814: Enum548 + inputField4815: String + inputField4816: String + inputField4817: [String!] + inputField4818: [String!] + inputField4819: [String!] + inputField4820: [String!] + inputField4821: [String!] + inputField4822: [ID!] + inputField4823: [String!] + inputField4824: [Enum443] +} + +input InputObject1089 { + inputField4825: [ID!] + inputField4826: [InputObject1090!] + inputField4829: [Enum549!] +} + +input InputObject109 { + inputField353: [InputObject110!]! + inputField356: Int + inputField357: Int +} + +input InputObject1090 { + inputField4827: ID! + inputField4828: Enum547 +} + +input InputObject1091 { + inputField4830: String + inputField4831: InputObject1092 + inputField4833: Boolean + inputField4834: String + inputField4835: String + inputField4836: String + inputField4837: String +} + +input InputObject1092 { + inputField4832: Int! +} + +input InputObject1093 { + inputField4838: String! + inputField4839: InputObject1092 + inputField4840: Boolean + inputField4841: [InputObject1094!] + inputField4844: String + inputField4845: String + inputField4846: String + inputField4847: String! +} + +input InputObject1094 { + inputField4842: String! + inputField4843: String! +} + +input InputObject1095 { + inputField4848: Int + inputField4849: String + inputField4850: String +} + +input InputObject1096 { + inputField4851: InputObject1097! +} + +input InputObject1097 { + inputField4852: InputObject1098 + inputField4856: InputObject1099 + inputField4858: InputObject1100 + inputField4860: InputObject1101 + inputField4862: InputObject1102 + inputField4864: InputObject1103 + inputField4866: InputObject1104 + inputField4870: InputObject1105 + inputField4872: InputObject1106 + inputField4874: InputObject1107 + inputField4876: InputObject1108 +} + +input InputObject1098 { + inputField4853: [InputObject1097!] + inputField4854: [InputObject1097!] + inputField4855: [InputObject1097!] +} + +input InputObject1099 { + inputField4857: ID! +} + +input InputObject11 { + inputField21: Boolean + inputField22: Int + inputField23: Int +} + +input InputObject110 { + inputField354: ID! + inputField355: Int +} + +input InputObject1100 { + inputField4859: Boolean! +} + +input InputObject1101 { + inputField4861: Boolean! +} + +input InputObject1102 { + inputField4863: Boolean! +} + +input InputObject1103 { + inputField4865: Boolean! +} + +input InputObject1104 { + inputField4867: Float + inputField4868: [Enum552!]! + inputField4869: String! +} + +input InputObject1105 { + inputField4871: ID! +} + +input InputObject1106 { + inputField4873: Boolean! +} + +input InputObject1107 { + inputField4875: Enum181! +} + +input InputObject1108 { + inputField4877: Enum552! + inputField4878: String! +} + +input InputObject111 { + inputField358: String + inputField359: ID! + inputField360: String + inputField361: [String] + inputField362: ID + inputField363: Enum296 +} + +input InputObject112 { + inputField364: String! + inputField365: String! + inputField366: String! + inputField367: String! +} + +input InputObject113 { + inputField368: ID! + inputField369: [ID!]! +} + +input InputObject114 { + inputField370: [ID!]! +} + +input InputObject115 { + inputField371: ID! + inputField372: InputObject92! + inputField373: InputObject95! + inputField374: ID! + inputField375: InputObject96 +} + +input InputObject116 { + inputField376: ID! + inputField377: [String] + inputField378: Enum321 +} + +input InputObject117 { + inputField379: ID! + inputField380: Int! + inputField381: ID! +} + +input InputObject118 { + inputField382: [InputObject119!] +} + +input InputObject119 { + inputField383: String + inputField384: ID! +} + +input InputObject12 { + inputField24: [ID!] + inputField25: [Enum36!] +} + +input InputObject120 { + inputField385: [InputObject100!] + inputField386: String + inputField387: [ID!] + inputField388: String! + inputField389: Scalar1 + inputField390: Scalar1 + inputField391: Scalar1 + inputField392: Scalar1 +} + +input InputObject121 { + inputField393: Boolean + inputField394: String + inputField395: Boolean + inputField396: [String!] + inputField397: Boolean + inputField398: Boolean + inputField399: String + inputField400: String + inputField401: String! + inputField402: String +} + +input InputObject122 { + inputField403: ID! + inputField404: Enum322 + inputField405: String + inputField406: [String] + inputField407: String + inputField408: String +} + +input InputObject123 { + inputField409: [InputObject122!]! +} + +input InputObject124 { + inputField410: String + inputField411: String + inputField412: String! + inputField413: [String!] + inputField414: String +} + +input InputObject125 { + inputField415: [InputObject110!]! + inputField416: Int + inputField417: Int +} + +input InputObject126 { + inputField418: String! + inputField419: String! + inputField420: Enum169! + inputField421: Enum170! + inputField422: Boolean! + inputField423: String! +} + +input InputObject127 { + inputField424: [InputObject128!]! + inputField427: InputObject129 + inputField429: InputObject130 + inputField432: ID! + inputField433: InputObject131 + inputField436: [InputObject132!]! +} + +input InputObject128 { + inputField425: String! + inputField426: Boolean! +} + +input InputObject129 { + inputField428: [ID!]! +} + +input InputObject13 { + inputField26: [InputObject13] + inputField27: Enum116! + inputField28: [InputObject14] +} + +input InputObject130 { + inputField430: String + inputField431: String +} + +input InputObject131 { + inputField434: Scalar1! + inputField435: Scalar1! +} + +input InputObject132 { + inputField437: Boolean! + inputField438: InputObject133 +} + +input InputObject133 { + inputField439: String! + inputField440: String! +} + +input InputObject134 { + inputField441: [InputObject135!]! + inputField444: ID + inputField445: String + inputField446: ID + inputField447: Boolean! +} + +input InputObject135 { + inputField442: ID! + inputField443: String! +} + +input InputObject136 { + inputField448: [InputObject128!]! + inputField449: InputObject129 + inputField450: InputObject137 + inputField455: ID! + inputField456: ID! + inputField457: InputObject131 + inputField458: [InputObject132!]! +} + +input InputObject137 { + inputField451: String + inputField452: String + inputField453: [Enum220!]! + inputField454: Enum221 +} + +input InputObject138 { + inputField459: [InputObject128!]! + inputField460: ID! + inputField461: InputObject129 + inputField462: InputObject139 + inputField470: ID! + inputField471: InputObject131 + inputField472: [InputObject132!]! +} + +input InputObject139 { + inputField463: String + inputField464: String + inputField465: [Enum220!]! + inputField466: Enum222! + inputField467: Boolean! + inputField468: Enum221 + inputField469: Enum223 +} + +input InputObject14 { + inputField29: Enum117! + inputField30: Enum118! + inputField31: [String!]! +} + +input InputObject140 { + inputField473: [InputObject128!]! + inputField474: ID! + inputField475: InputObject129 + inputField476: InputObject130 + inputField477: String! + inputField478: InputObject131 + inputField479: [InputObject132!]! +} + +input InputObject141 { + inputField480: ID + inputField481: String + inputField482: String! + inputField483: ID + inputField484: Boolean! +} + +input InputObject142 { + inputField485: [InputObject128!]! + inputField486: ID! + inputField487: InputObject129 + inputField488: InputObject137 + inputField489: String! + inputField490: ID! + inputField491: InputObject131 + inputField492: [InputObject132!]! +} + +input InputObject143 { + inputField493: [InputObject128!]! + inputField494: ID! + inputField495: ID! + inputField496: InputObject129 + inputField497: InputObject139 + inputField498: String! + inputField499: InputObject131 + inputField500: [InputObject132!]! +} + +input InputObject144 { + inputField501: String! +} + +input InputObject145 { + inputField502: ID + inputField503: ID + inputField504: Scalar3! +} + +input InputObject146 { + inputField505: Scalar2! + inputField506: ID! +} + +input InputObject147 { + inputField507: [ID!]! + inputField508: ID! +} + +input InputObject148 { + inputField509: [InputObject149!]! + inputField514: ID! +} + +input InputObject149 { + inputField510: Scalar7! + inputField511: Scalar6! + inputField512: String + inputField513: Scalar5! +} + +input InputObject15 { + inputField32: Enum117! + inputField33: Enum119! +} + +input InputObject150 { + inputField515: [ID!]! + inputField516: String + inputField517: ID + inputField518: Boolean + inputField519: ID +} + +input InputObject151 { + inputField520: String! + inputField521: ID + inputField522: ID + inputField523: Enum8! + inputField524: Scalar3! +} + +input InputObject152 { + inputField525: String! +} + +input InputObject153 { + inputField526: [InputObject154!]! + inputField531: ID! +} + +input InputObject154 { + inputField527: Scalar6! + inputField528: String + inputField529: ID! + inputField530: Scalar5! +} + +input InputObject155 { + inputField532: ID! + inputField533: ID! +} + +input InputObject156 { + inputField534: [InputObject157!]! + inputField538: ID! +} + +input InputObject157 { + inputField535: Scalar7 + inputField536: String + inputField537: Scalar7! +} + +input InputObject158 { + inputField539: [ID!]! + inputField540: ID! +} + +input InputObject159 { + inputField541: String + inputField542: [InputObject160!]! + inputField545: String + inputField546: Scalar3! +} + +input InputObject16 { + inputField34: [Enum124!]! +} + +input InputObject160 { + inputField543: String! + inputField544: String! +} + +input InputObject161 { + inputField547: [InputObject162!]! + inputField551: InputObject162! + inputField552: ID! +} + +input InputObject162 { + inputField548: Scalar6! + inputField549: Scalar5! + inputField550: Scalar5! +} + +input InputObject163 { + inputField553: ID! + inputField554: Enum3! +} + +input InputObject164 { + inputField555: [ID!] + inputField556: Boolean + inputField557: Enum1 + inputField558: ID! + inputField559: String + inputField560: Scalar4 +} + +input InputObject165 { + inputField561: Int! + inputField562: ID + inputField563: ID +} + +input InputObject166 { + inputField564: ID! + inputField565: String +} + +input InputObject167 { + inputField566: ID! + inputField567: Enum4! +} + +input InputObject168 { + inputField568: ID! + inputField569: Enum5 + inputField570: ID! +} + +input InputObject169 { + inputField571: Enum6! + inputField572: ID + inputField573: ID +} + +input InputObject17 { + inputField35: Enum127! + inputField36: Enum119! +} + +input InputObject170 { + inputField574: ID! + inputField575: String + inputField576: Enum8 + inputField577: Scalar3 +} + +input InputObject171 { + inputField578: Scalar4 + inputField579: InputObject172 + inputField582: ID + inputField583: ID + inputField584: InputObject172 + inputField585: InputObject172 +} + +input InputObject172 { + inputField580: Scalar5! + inputField581: Scalar6! +} + +input InputObject173 { + inputField586: String! + inputField587: String +} + +input InputObject174 { + inputField588: String! +} + +input InputObject175 { + inputField589: String! + inputField590: Int! + inputField591: String +} + +input InputObject176 { + inputField592: ID! + inputField593: Enum133! + inputField594: ID! + inputField595: InputObject177 +} + +input InputObject177 { + inputField596: ID! + inputField597: String! + inputField598: Boolean! +} + +input InputObject178 { + inputField599: ID! + inputField600: InputObject179! + inputField604: InputObject44 + inputField605: Enum134! + inputField606: InputObject44 +} + +input InputObject179 { + inputField601: Scalar4! + inputField602: Enum138! + inputField603: Scalar4! +} + +input InputObject18 { + inputField37: String! + inputField38: Enum135! +} + +input InputObject180 { + inputField607: Boolean = false + inputField608: Enum141! + inputField609: [InputObject181] + inputField612: String + inputField613: [InputObject182] + inputField629: Enum129! + inputField630: Enum144! + inputField631: Enum145! + inputField632: Enum146 +} + +input InputObject181 { + inputField610: Float! + inputField611: Int! +} + +input InputObject182 { + inputField614: ID! + inputField615: String! + inputField616: String + inputField617: String + inputField618: Float + inputField619: ID + inputField620: [InputObject183] + inputField628: Boolean! +} + +input InputObject183 { + inputField621: Scalar4 + inputField622: Enum142 + inputField623: Int! + inputField624: String + inputField625: Enum143! + inputField626: InputObject44 + inputField627: Enum134! +} + +input InputObject184 { + inputField633: InputObject185! + inputField636: [InputObject186] + inputField640: InputObject187! +} + +input InputObject185 { + inputField634: String! + inputField635: Float! +} + +input InputObject186 { + inputField637: String! + inputField638: Float! + inputField639: Int! +} + +input InputObject187 { + inputField641: Enum142! + inputField642: Int! + inputField643: Scalar4! +} + +input InputObject188 { + inputField644: Enum129 + inputField645: ID! + inputField646: Boolean! + inputField647: ID! +} + +input InputObject189 { + inputField648: String + inputField649: Int + inputField650: String +} + +input InputObject19 { + inputField39: [InputObject20!]! +} + +input InputObject190 { + inputField651: String! + inputField652: String + inputField653: String +} + +input InputObject191 { + inputField654: [InputObject192!]! +} + +input InputObject192 { + inputField655: Boolean + inputField656: String! +} + +input InputObject193 { + inputField657: Int + inputField658: Int! + inputField659: Int! +} + +input InputObject194 { + inputField660: [InputObject195!] + inputField663: [ID!] + inputField664: [InputObject196!] +} + +input InputObject195 { + inputField661: String! + inputField662: ID! +} + +input InputObject196 { + inputField665: String! + inputField666: ID! + inputField667: ID! +} + +input InputObject197 { + inputField668: [InputObject198!] + inputField672: [ID!] + inputField673: [InputObject199!] +} + +input InputObject198 { + inputField669: ID! + inputField670: ID! + inputField671: String! +} + +input InputObject199 { + inputField674: ID! + inputField675: ID! + inputField676: ID! + inputField677: String! +} + +input InputObject2 { + inputField2: String! + inputField3: [String] +} + +input InputObject20 { + inputField40: Scalar4! + inputField41: Scalar4! +} + +input InputObject200 { + inputField678: [InputObject201!] + inputField681: [InputObject201!] +} + +input InputObject201 { + inputField679: Int! + inputField680: ID! +} + +input InputObject202 { + inputField682: [InputObject203!] + inputField686: [ID!] + inputField687: [InputObject204!] +} + +input InputObject203 { + inputField683: ID! + inputField684: ID! + inputField685: ID! +} + +input InputObject204 { + inputField688: InputObject203! + inputField689: ID! +} + +input InputObject205 { + inputField690: InputObject206! + inputField695: [InputObject208!]! +} + +input InputObject206 { + inputField691: InputObject207 + inputField694: ID +} + +input InputObject207 { + inputField692: String! + inputField693: String! +} + +input InputObject208 { + inputField696: String! + inputField697: [String!]! +} + +input InputObject209 { + inputField698: InputObject206! + inputField699: InputObject210! +} + +input InputObject21 { + inputField42: [ID!] +} + +input InputObject210 { + inputField700: ID! + inputField701: InputObject211! +} + +input InputObject211 { + inputField702: Enum334! + inputField703: [InputObject208!] +} + +input InputObject212 { + inputField704: InputObject206! + inputField705: String + inputField706: [InputObject208!] + inputField707: String +} + +input InputObject213 { + inputField708: InputObject206! + inputField709: InputObject214! +} + +input InputObject214 { + inputField710: Enum335 + inputField711: String + inputField712: String! + inputField713: [InputObject208!] + inputField714: InputObject215 + inputField732: ID + inputField733: ID +} + +input InputObject215 { + inputField715: InputObject216 + inputField727: InputObject219 +} + +input InputObject216 { + inputField716: String! + inputField717: [InputObject217!]! + inputField726: [String!]! +} + +input InputObject217 { + inputField718: String! + inputField719: [InputObject218!]! +} + +input InputObject218 { + inputField720: Boolean + inputField721: Scalar1 + inputField722: Float + inputField723: Int + inputField724: InputObject217 + inputField725: String +} + +input InputObject219 { + inputField728: [InputObject217!]! + inputField729: String! + inputField730: String! + inputField731: [String!]! +} + +input InputObject22 { + inputField43: Scalar1 + inputField44: Scalar1 + inputField45: ID! +} + +input InputObject220 { + inputField734: InputObject206! + inputField735: String! +} + +input InputObject221 { + inputField736: InputObject206! + inputField737: Boolean + inputField738: ID! + inputField739: ID + inputField740: ID +} + +input InputObject222 { + inputField741: InputObject206! + inputField742: ID! +} + +input InputObject223 { + inputField743: InputObject206! + inputField744: String! + inputField745: [String!]! +} + +input InputObject224 { + inputField746: InputObject206! + inputField747: InputObject214! + inputField748: ID! +} + +input InputObject225 { + inputField749: InputObject206! + inputField750: [InputObject208!]! +} + +input InputObject226 { + inputField751: InputObject206! + inputField752: ID! + inputField753: ID + inputField754: String! + inputField755: ID! +} + +input InputObject227 { + inputField756: [InputObject228!]! + inputField762: ID! +} + +input InputObject228 { + inputField757: Scalar20! + inputField758: String! + inputField759: [Scalar13!] + inputField760: [Scalar20!] + inputField761: Enum336! +} + +input InputObject229 { + inputField763: Scalar14! + inputField764: ID! +} + +input InputObject23 { + inputField46: Scalar1 + inputField47: Scalar1 + inputField48: ID! +} + +input InputObject230 { + inputField765: ID! + inputField766: [InputObject231!]! + inputField769: ID! +} + +input InputObject231 { + inputField767: Scalar13! + inputField768: Scalar13! +} + +input InputObject232 { + inputField770: [InputObject233!]! + inputField773: ID! +} + +input InputObject233 { + inputField771: Scalar13! + inputField772: String! +} + +input InputObject234 { + inputField774: [InputObject233!]! + inputField775: String! + inputField776: Enum337! +} + +input InputObject235 { + inputField777: ID! + inputField778: Enum338! +} + +input InputObject236 { + inputField779: Scalar20! + inputField780: [Scalar13!]! + inputField781: ID! +} + +input InputObject237 { + inputField782: [ID!]! + inputField783: ID! + inputField784: ID! +} + +input InputObject238 { + inputField785: ID! +} + +input InputObject239 { + inputField786: Scalar20! + inputField787: ID! +} + +input InputObject24 { + inputField49: Scalar1 + inputField50: Scalar1 + inputField51: ID + inputField52: ID +} + +input InputObject240 { + inputField788: [InputObject241!]! + inputField791: ID! +} + +input InputObject241 { + inputField789: Scalar13! + inputField790: String! +} + +input InputObject242 { + inputField792: Boolean! + inputField793: Boolean! + inputField794: Boolean! + inputField795: String! + inputField796: ID +} + +input InputObject243 { + inputField797: [InputObject244!]! + inputField813: Enum340! + inputField814: Int! +} + +input InputObject244 { + inputField798: InputObject245! + inputField801: [InputObject246!] + inputField807: [InputObject248!] + inputField811: [InputObject248!] + inputField812: [InputObject244!] +} + +input InputObject245 { + inputField799: ID! + inputField800: String! +} + +input InputObject246 { + inputField802: Int! + inputField803: ID + inputField804: InputObject247! +} + +input InputObject247 { + inputField805: Scalar5! + inputField806: Scalar6 +} + +input InputObject248 { + inputField808: Int! + inputField809: ID! + inputField810: InputObject247! +} + +input InputObject249 { + inputField815: Boolean + inputField816: Boolean + inputField817: Boolean +} + +input InputObject25 { + inputField53: Scalar1 + inputField54: Scalar1 + inputField55: ID! +} + +input InputObject250 { + inputField818: String + inputField819: String + inputField820: Int + inputField821: Int +} + +input InputObject251 { + inputField822: Enum340 = EnumValue1829 + inputField823: Int! + inputField824: Int + inputField825: Enum340 = EnumValue1827 + inputField826: Int! +} + +input InputObject252 { + inputField827: [InputObject253!]! + inputField838: Enum340! + inputField839: Int! +} + +input InputObject253 { + inputField828: InputObject245! + inputField829: [InputObject254!] + inputField832: [InputObject255!] + inputField836: [InputObject255!] + inputField837: [InputObject253!] +} + +input InputObject254 { + inputField830: Int! + inputField831: Int! +} + +input InputObject255 { + inputField833: Int! + inputField834: ID! + inputField835: Int! +} + +input InputObject256 { + inputField840: Boolean + inputField841: Boolean + inputField842: Boolean + inputField843: ID! + inputField844: String +} + +input InputObject257 { + inputField845: Enum340! + inputField846: [InputObject258!]! + inputField850: Int! +} + +input InputObject258 { + inputField847: InputObject245! + inputField848: [InputObject258!] + inputField849: InputObject247 +} + +input InputObject259 { + inputField851: Enum340! + inputField852: [InputObject260!]! + inputField856: Int! +} + +input InputObject26 { + inputField56: [ID!] +} + +input InputObject260 { + inputField853: InputObject245! + inputField854: [InputObject258!] + inputField855: InputObject247 +} + +input InputObject261 { + inputField857: Enum340! + inputField858: [InputObject262!]! + inputField862: Int! +} + +input InputObject262 { + inputField859: InputObject245! + inputField860: [InputObject262!] + inputField861: Int! +} + +input InputObject263 { + inputField863: Boolean + inputField864: ID! +} + +input InputObject264 { + inputField865: InputObject265 +} + +input InputObject265 { + inputField866: String + inputField867: String + inputField868: String +} + +input InputObject266 { + inputField869: String + inputField870: String + inputField871: [String] +} + +input InputObject267 { + inputField872: String + inputField873: String + inputField874: Scalar4 + inputField875: Int + inputField876: String +} + +input InputObject268 { + inputField877: String + inputField878: [InputObject269] + inputField889: Enum20 +} + +input InputObject269 { + inputField879: Enum19 + inputField880: [InputObject270] + inputField887: String + inputField888: String +} + +input InputObject27 { + inputField57: [ID!] + inputField58: [Enum166!] + inputField59: String + inputField60: [ID!] + inputField61: [Enum167!] +} + +input InputObject270 { + inputField881: Enum19 + inputField882: String + inputField883: InputObject265 + inputField884: String + inputField885: Enum23 + inputField886: Enum24 +} + +input InputObject271 { + inputField890: ID + inputField891: Int + inputField892: ID! + inputField893: ID! + inputField894: ID! + inputField895: ID + inputField896: Enum20! +} + +input InputObject272 { + inputField897: ID + inputField898: String + inputField899: Int + inputField900: [InputObject273] + inputField903: InputObject274 + inputField919: ID! + inputField920: String + inputField921: ID + inputField922: String + inputField923: Enum20 +} + +input InputObject273 { + inputField901: InputObject265 + inputField902: Enum24 +} + +input InputObject274 { + inputField904: InputObject275 + inputField912: [ID] + inputField913: [String] + inputField914: String + inputField915: [String] + inputField916: String + inputField917: String + inputField918: Enum22 +} + +input InputObject275 { + inputField905: Float + inputField906: Float + inputField907: [[Float]] + inputField908: Float + inputField909: Float + inputField910: Float + inputField911: Enum21 +} + +input InputObject276 { + inputField924: Boolean + inputField925: Boolean + inputField926: Boolean + inputField927: Boolean + inputField928: InputObject277 + inputField932: [Enum20] +} + +input InputObject277 { + inputField929: Enum184 + inputField930: Enum184 + inputField931: Enum184 +} + +input InputObject278 { + inputField933: ID! + inputField934: [InputObject279] +} + +input InputObject279 { + inputField935: String + inputField936: [String] +} + +input InputObject28 { + inputField62: Enum167 +} + +input InputObject280 { + inputField937: Enum19 + inputField938: String + inputField939: String + inputField940: Enum23 +} + +input InputObject281 { + inputField941: ID + inputField942: String + inputField943: Int + inputField944: [InputObject273] + inputField945: [ID] + inputField946: [String] + inputField947: ID! + inputField948: String + inputField949: [String] + inputField950: String + inputField951: String + inputField952: ID + inputField953: Enum20 +} + +input InputObject282 { + inputField954: String + inputField955: String + inputField956: Scalar4 + inputField957: Int + inputField958: String +} + +input InputObject283 { + inputField959: Boolean + inputField960: Boolean + inputField961: String + inputField962: String + inputField963: Scalar8 + inputField964: Scalar8 + inputField965: String + inputField966: String + inputField967: Boolean + inputField968: Boolean + inputField969: Scalar8 + inputField970: String + inputField971: Scalar8 + inputField972: Enum85 + inputField973: Enum86 + inputField974: Scalar8 + inputField975: String +} + +input InputObject284 { + inputField976: Boolean + inputField977: String + inputField978: String + inputField979: Scalar8 + inputField980: Scalar8 + inputField981: String + inputField982: String + inputField983: Boolean + inputField984: Scalar8 + inputField985: String + inputField986: Scalar8 + inputField987: Enum85 + inputField988: Enum86 + inputField989: String +} + +input InputObject285 { + inputField1000: Boolean + inputField1001: Boolean + inputField1002: Boolean + inputField1003: Scalar8 + inputField1004: String + inputField1005: Scalar8 + inputField1006: String + inputField1007: Scalar8 + inputField1008: Enum85 + inputField1009: Enum86 + inputField1010: Scalar8 + inputField1011: String + inputField1012: Enum87 + inputField990: Boolean + inputField991: Boolean + inputField992: String + inputField993: String + inputField994: Scalar8 + inputField995: Scalar8 + inputField996: String + inputField997: String + inputField998: Enum84 + inputField999: Boolean +} + +input InputObject286 { + inputField1013: String + inputField1014: [String] + inputField1015: [InputObject287] + inputField1035: Scalar10 + inputField1036: Int + inputField1037: [InputObject289] + inputField1042: [InputObject290] + inputField1045: [InputObject291] + inputField1049: InputObject292 + inputField1055: Int + inputField1056: [InputObject293] + inputField1061: [InputObject294] + inputField1068: Int! + inputField1069: String + inputField1070: Scalar1 + inputField1071: Scalar10 + inputField1072: Scalar10 + inputField1073: Scalar1 + inputField1074: Int! + inputField1075: [InputObject174] + inputField1076: String + inputField1077: Boolean + inputField1078: Boolean + inputField1079: Boolean + inputField1080: Boolean = false + inputField1081: [InputObject295] + inputField1083: [Int] + inputField1084: String +} + +input InputObject287 { + inputField1016: [InputObject288!] + inputField1032: Int + inputField1033: Int! + inputField1034: String! +} + +input InputObject288 { + inputField1017: Scalar1 + inputField1018: Float + inputField1019: Float + inputField1020: Int + inputField1021: Scalar1 + inputField1022: Scalar1 + inputField1023: Int + inputField1024: Scalar1 + inputField1025: String + inputField1026: Int + inputField1027: Boolean + inputField1028: Boolean + inputField1029: String + inputField1030: String + inputField1031: Int +} + +input InputObject289 { + inputField1038: Int + inputField1039: Int + inputField1040: String + inputField1041: Int +} + +input InputObject29 { + inputField63: [ID!] + inputField64: [Enum166!] + inputField65: String + inputField66: [ID!] + inputField67: [Enum167!] +} + +input InputObject290 { + inputField1043: String + inputField1044: String! +} + +input InputObject291 { + inputField1046: String + inputField1047: String + inputField1048: Int +} + +input InputObject292 { + inputField1050: Boolean + inputField1051: Boolean + inputField1052: Boolean + inputField1053: Int + inputField1054: Int +} + +input InputObject293 { + inputField1057: Int! + inputField1058: Int + inputField1059: String + inputField1060: Int +} + +input InputObject294 { + inputField1062: Int + inputField1063: Int + inputField1064: ID + inputField1065: Int + inputField1066: Int! + inputField1067: ID +} + +input InputObject295 { + inputField1082: Int! +} + +input InputObject296 { + inputField1085: Boolean + inputField1086: Boolean + inputField1087: InputObject297 + inputField1090: Int + inputField1091: InputObject297 + inputField1092: InputObject297 + inputField1093: [String!] + inputField1094: InputObject297 + inputField1095: String + inputField1096: InputObject297 + inputField1097: String! +} + +input InputObject297 { + inputField1088: Scalar5 + inputField1089: Scalar6 +} + +input InputObject298 { + inputField1098: Boolean + inputField1099: Boolean + inputField1100: InputObject297 + inputField1101: Int + inputField1102: InputObject297 + inputField1103: InputObject297 + inputField1104: [String!] + inputField1105: InputObject297 + inputField1106: String + inputField1107: InputObject297 + inputField1108: String! +} + +input InputObject299 { + inputField1109: String + inputField1110: String +} + +input InputObject3 { + inputField4: Boolean + inputField5: [Enum33] +} + +input InputObject30 { + inputField68: Enum186 +} + +input InputObject300 { + inputField1111: String + inputField1112: Int! + inputField1113: [Int!]! + inputField1114: [InputObject301!] + inputField1118: Int! +} + +input InputObject301 { + inputField1115: String! + inputField1116: Int + inputField1117: String +} + +input InputObject302 { + inputField1119: [Int!]! +} + +input InputObject303 { + inputField1120: Enum105 + inputField1121: String + inputField1122: String + inputField1123: String +} + +input InputObject304 { + inputField1124: [InputObject305!] + inputField1149: String + inputField1150: ID + inputField1151: String +} + +input InputObject305 { + inputField1125: String + inputField1126: InputObject306! + inputField1141: InputObject308! + inputField1146: Enum345! + inputField1147: String + inputField1148: ID! +} + +input InputObject306 { + inputField1127: String! + inputField1128: [String!] + inputField1129: String! + inputField1130: Scalar1 + inputField1131: String! + inputField1132: [InputObject307!]! + inputField1135: String! + inputField1136: String + inputField1137: Int + inputField1138: String + inputField1139: Enum343! + inputField1140: Enum344 +} + +input InputObject307 { + inputField1133: [String!]! + inputField1134: String! +} + +input InputObject308 { + inputField1142: Int + inputField1143: Int + inputField1144: Int + inputField1145: Int +} + +input InputObject309 { + inputField1152: Int! + inputField1153: Int! + inputField1154: String! + inputField1155: String! + inputField1156: String! + inputField1157: ID! +} + +input InputObject31 { + inputField69: String! + inputField70: String +} + +input InputObject310 { + inputField1158: [String] + inputField1159: Boolean! + inputField1160: Scalar8! + inputField1161: [InputObject311] +} + +input InputObject311 { + inputField1162: [InputObject312] + inputField1167: Scalar8! + inputField1168: Int! +} + +input InputObject312 { + inputField1163: Scalar8 + inputField1164: Int + inputField1165: Scalar8! + inputField1166: Int! +} + +input InputObject313 { + inputField1169: Int! +} + +input InputObject314 { + inputField1170: [String!] + inputField1171: [ID!] + inputField1172: String + inputField1173: Boolean + inputField1174: [String!] + inputField1175: Scalar4 + inputField1176: String + inputField1177: String + inputField1178: InputObject315 + inputField1181: InputObject316 + inputField1183: [InputObject317!] + inputField1199: String! + inputField1200: Boolean + inputField1201: String + inputField1202: InputObject319 + inputField1206: [String!] + inputField1207: InputObject320 + inputField1209: InputObject321! + inputField1213: [ID!] + inputField1214: [Enum183!] + inputField1215: Int + inputField1216: String +} + +input InputObject315 { + inputField1179: [String!] + inputField1180: [String!] +} + +input InputObject316 { + inputField1182: Boolean +} + +input InputObject317 { + inputField1184: InputObject318! + inputField1191: Float + inputField1192: [ID!] + inputField1193: Float + inputField1194: String + inputField1195: String + inputField1196: Boolean + inputField1197: String + inputField1198: String +} + +input InputObject318 { + inputField1185: String + inputField1186: Enum18! + inputField1187: String + inputField1188: String + inputField1189: String! + inputField1190: String +} + +input InputObject319 { + inputField1203: Boolean + inputField1204: String + inputField1205: Enum177! +} + +input InputObject32 { + inputField71: String + inputField72: String +} + +input InputObject320 { + inputField1208: Boolean +} + +input InputObject321 { + inputField1210: Enum181! + inputField1211: Enum182 + inputField1212: String +} + +input InputObject322 { + inputField1217: Enum110! + inputField1218: Enum108 + inputField1219: Scalar5 + inputField1220: ID! +} + +input InputObject323 { + inputField1221: String + inputField1222: Enum111! + inputField1223: ID + inputField1224: String + inputField1225: String + inputField1226: ID +} + +input InputObject324 { + inputField1227: String + inputField1228: Enum109! + inputField1229: ID! +} + +input InputObject325 { + inputField1230: Enum112! + inputField1231: String + inputField1232: Enum109! + inputField1233: ID! +} + +input InputObject326 { + inputField1234: ID! + inputField1235: Scalar5 +} + +input InputObject327 { + inputField1236: [ID] + inputField1237: ID! + inputField1238: Enum107 + inputField1239: Boolean! + inputField1240: ID! +} + +input InputObject328 { + inputField1241: Scalar5 + inputField1242: Scalar5 + inputField1243: Scalar5 + inputField1244: Scalar5 + inputField1245: Scalar5 + inputField1246: Scalar5 + inputField1247: Scalar5 + inputField1248: ID! +} + +input InputObject329 { + inputField1249: ID + inputField1250: String + inputField1251: Scalar10 + inputField1252: Boolean + inputField1253: Boolean + inputField1254: Boolean + inputField1255: Boolean + inputField1256: Int + inputField1257: Int + inputField1258: String + inputField1259: String + inputField1260: Int + inputField1261: String + inputField1262: Int + inputField1263: ID! +} + +input InputObject33 { + inputField73: String + inputField74: String +} + +input InputObject330 { + inputField1264: ID! + inputField1265: Float! + inputField1266: ID! + inputField1267: Float! +} + +input InputObject331 { + inputField1268: String + inputField1269: Enum111! + inputField1270: ID + inputField1271: String + inputField1272: String + inputField1273: ID + inputField1274: ID! +} + +input InputObject332 { + inputField1275: [InputObject333] + inputField1281: InputObject328 + inputField1282: InputObject329 + inputField1283: [InputObject325] + inputField1284: InputObject331! +} + +input InputObject333 { + inputField1276: ID + inputField1277: Enum110! + inputField1278: Enum108! + inputField1279: Scalar5 + inputField1280: ID! +} + +input InputObject334 { + inputField1285: [InputObject335!] + inputField1318: [InputObject337] + inputField1319: [InputObject342!] + inputField1326: String + inputField1327: Scalar1 + inputField1328: [String!] + inputField1329: ID + inputField1330: [InputObject340] + inputField1331: [InputObject340] + inputField1332: [InputObject344!] + inputField1337: Enum228! + inputField1338: [InputObject346!] + inputField1343: String +} + +input InputObject335 { + inputField1286: InputObject336! + inputField1305: InputObject341! + inputField1317: ID! +} + +input InputObject336 { + inputField1287: [InputObject337] + inputField1290: String + inputField1291: Scalar1 + inputField1292: InputObject338! + inputField1298: [String!] + inputField1299: [InputObject340] + inputField1301: [InputObject340] + inputField1302: Enum229! + inputField1303: Enum230! + inputField1304: String +} + +input InputObject337 { + inputField1288: String! + inputField1289: String! +} + +input InputObject338 { + inputField1293: Int + inputField1294: InputObject339 + inputField1296: Int + inputField1297: Int +} + +input InputObject339 { + inputField1295: Int +} + +input InputObject34 { + inputField75: String + inputField76: [ID!] + inputField77: [InputObject35!] + inputField80: [ID!] +} + +input InputObject340 { + inputField1300: String! +} + +input InputObject341 { + inputField1306: String! + inputField1307: [String!] + inputField1308: [String!]! + inputField1309: String! + inputField1310: String! + inputField1311: String! + inputField1312: String + inputField1313: Int + inputField1314: Enum232! + inputField1315: Enum233 + inputField1316: Enum234 +} + +input InputObject342 { + inputField1320: InputObject336! + inputField1321: InputObject343! + inputField1325: ID! +} + +input InputObject343 { + inputField1322: String + inputField1323: String + inputField1324: Enum350! +} + +input InputObject344 { + inputField1333: InputObject336! + inputField1334: InputObject345! + inputField1336: ID! +} + +input InputObject345 { + inputField1335: String! +} + +input InputObject346 { + inputField1339: InputObject336! + inputField1340: InputObject347! + inputField1342: ID! +} + +input InputObject347 { + inputField1341: String! +} + +input InputObject348 { + inputField1344: [String!] + inputField1345: Int! + inputField1346: Enum352! + inputField1347: ID! + inputField1348: String! + inputField1349: String +} + +input InputObject349 { + inputField1350: String + inputField1351: Scalar8 +} + +input InputObject35 { + inputField78: String! + inputField79: Enum35! +} + +input InputObject350 { + inputField1352: Scalar8 +} + +input InputObject351 { + inputField1353: ID! +} + +input InputObject352 { + inputField1354: ID! + inputField1355: ID! +} + +input InputObject353 { + inputField1356: String + inputField1357: InputObject354 +} + +input InputObject354 { + inputField1358: String + inputField1359: String +} + +input InputObject355 { + inputField1360: String + inputField1361: String + inputField1362: String + inputField1363: String + inputField1364: Enum37 + inputField1365: String + inputField1366: String! + inputField1367: [InputObject356] + inputField1371: [InputObject357] + inputField1374: [InputObject358] + inputField1377: [InputObject359] +} + +input InputObject356 { + inputField1368: ID! + inputField1369: String + inputField1370: Float! +} + +input InputObject357 { + inputField1372: ID! + inputField1373: Float! +} + +input InputObject358 { + inputField1375: ID! + inputField1376: Float! +} + +input InputObject359 { + inputField1378: ID! + inputField1379: Float! +} + +input InputObject36 { + inputField81: String! + inputField82: ID + inputField83: String! + inputField84: [String] + inputField85: Enum296! +} + +input InputObject360 { + inputField1380: ID + inputField1381: ID! + inputField1382: String + inputField1383: ID! +} + +input InputObject361 { + inputField1384: String + inputField1385: InputObject362 + inputField1395: String + inputField1396: [InputObject366] + inputField1406: ID + inputField1407: Enum237! + inputField1408: String! + inputField1409: String + inputField1410: String! + inputField1411: [String] + inputField1412: Boolean! + inputField1413: Int + inputField1414: Boolean! +} + +input InputObject362 { + inputField1386: [InputObject363] + inputField1389: [InputObject364] + inputField1392: [InputObject365] +} + +input InputObject363 { + inputField1387: String! + inputField1388: Scalar1! +} + +input InputObject364 { + inputField1390: String! + inputField1391: Int! +} + +input InputObject365 { + inputField1393: String! + inputField1394: String! +} + +input InputObject366 { + inputField1397: String + inputField1398: InputObject362 + inputField1399: String + inputField1400: String! + inputField1401: Enum238! + inputField1402: ID + inputField1403: String + inputField1404: Int + inputField1405: Int +} + +input InputObject367 { + inputField1415: ID! + inputField1416: Int! +} + +input InputObject368 { + inputField1417: [Enum354!]! + inputField1418: InputObject369! +} + +input InputObject369 { + inputField1419: String + inputField1420: String +} + +input InputObject37 { + inputField86: [InputObject38!]! + inputField90: ID! +} + +input InputObject370 { + inputField1421: [String] + inputField1422: [InputObject371] + inputField1424: String + inputField1425: String +} + +input InputObject371 { + inputField1423: Int! +} + +input InputObject372 { + inputField1426: String + inputField1427: Int + inputField1428: Int! + inputField1429: Int! + inputField1430: Scalar8 +} + +input InputObject373 { + inputField1431: String + inputField1432: InputObject371 + inputField1433: Int + inputField1434: [InputObject371] + inputField1435: Scalar8 +} + +input InputObject374 { + inputField1436: InputObject375 + inputField1442: Scalar8! + inputField1443: InputObject376 +} + +input InputObject375 { + inputField1437: [String] + inputField1438: Enum88 + inputField1439: Enum355! + inputField1440: [Enum356] + inputField1441: [Enum357] +} + +input InputObject376 { + inputField1444: String! + inputField1445: Int! + inputField1446: String! + inputField1447: String! + inputField1448: String! + inputField1449: String! + inputField1450: String! +} + +input InputObject377 { + inputField1451: ID! + inputField1452: [InputObject378!]! + inputField1455: Int +} + +input InputObject378 { + inputField1453: String! + inputField1454: Scalar5! +} + +input InputObject379 { + inputField1456: Int + inputField1457: Scalar5 + inputField1458: Int + inputField1459: String + inputField1460: Enum358 + inputField1461: String + inputField1462: Scalar4 + inputField1463: Boolean + inputField1464: ID! + inputField1465: Scalar5 + inputField1466: Scalar5 + inputField1467: String + inputField1468: String + inputField1469: String + inputField1470: Scalar4 + inputField1471: Scalar4 + inputField1472: Int + inputField1473: Scalar5 + inputField1474: ID! + inputField1475: Int + inputField1476: [InputObject380!] + inputField1479: String + inputField1480: ID! + inputField1481: String + inputField1482: String + inputField1483: Enum359 + inputField1484: String + inputField1485: Int + inputField1486: Int + inputField1487: Scalar4 + inputField1488: Scalar5 + inputField1489: Enum360 + inputField1490: Scalar5 + inputField1491: InputObject381 +} + +input InputObject38 { + inputField87: ID! + inputField88: Enum200! + inputField89: ID! +} + +input InputObject380 { + inputField1477: String! + inputField1478: String! +} + +input InputObject381 { + inputField1492: Int + inputField1493: String +} + +input InputObject382 { + inputField1494: Boolean! + inputField1495: [Enum359!] + inputField1496: String + inputField1497: Scalar5! + inputField1498: [InputObject383!]! + inputField1503: [ID!]! + inputField1504: Enum359! + inputField1505: Scalar4! + inputField1506: Scalar4! + inputField1507: ID! + inputField1508: Enum362! + inputField1509: Scalar6 + inputField1510: Scalar6! + inputField1511: String! + inputField1512: String + inputField1513: ID! + inputField1514: [InputObject384!] +} + +input InputObject383 { + inputField1499: String + inputField1500: Scalar5 + inputField1501: [String!] + inputField1502: Enum361! +} + +input InputObject384 { + inputField1515: ID! + inputField1516: String! + inputField1517: String! + inputField1518: String! +} + +input InputObject385 { + inputField1519: ID! + inputField1520: ID! + inputField1521: ID! + inputField1522: Int! +} + +input InputObject386 { + inputField1523: [InputObject387] + inputField1526: ID +} + +input InputObject387 { + inputField1524: String + inputField1525: String +} + +input InputObject388 { + inputField1527: Int + inputField1528: Scalar5 + inputField1529: Int + inputField1530: String + inputField1531: Enum358 + inputField1532: String + inputField1533: Scalar4 + inputField1534: Boolean + inputField1535: ID! + inputField1536: Scalar5 + inputField1537: Scalar5 + inputField1538: String + inputField1539: String + inputField1540: String + inputField1541: Scalar4 + inputField1542: Scalar4 + inputField1543: Int + inputField1544: Scalar5 + inputField1545: ID! + inputField1546: Int + inputField1547: [InputObject380!] + inputField1548: String + inputField1549: ID! + inputField1550: String + inputField1551: String + inputField1552: Enum359 + inputField1553: String + inputField1554: Int + inputField1555: Int + inputField1556: Scalar4 + inputField1557: Scalar5 + inputField1558: Enum360 + inputField1559: Scalar5 + inputField1560: InputObject381 + inputField1561: Int! +} + +input InputObject389 { + inputField1562: Boolean + inputField1563: String + inputField1564: Scalar5 + inputField1565: [InputObject390!] + inputField1572: [String!] + inputField1573: Scalar4 + inputField1574: Scalar4 + inputField1575: ID! + inputField1576: Enum365 + inputField1577: Scalar6 + inputField1578: Scalar6 + inputField1579: String + inputField1580: String + inputField1581: [InputObject384!] + inputField1582: Int! +} + +input InputObject39 { + inputField91: [InputObject38!]! + inputField92: ID! +} + +input InputObject390 { + inputField1566: String + inputField1567: Float + inputField1568: ID + inputField1569: [String!] + inputField1570: Enum363 + inputField1571: Enum361 +} + +input InputObject391 { + inputField1583: Boolean! + inputField1584: Boolean! + inputField1585: [String!]! + inputField1586: [String] + inputField1587: Int! + inputField1588: Enum352! + inputField1589: String! + inputField1590: Enum367 + inputField1591: [String!]! + inputField1592: String! +} + +input InputObject392 { + inputField1593: [InputObject393!]! +} + +input InputObject393 { + inputField1594: Int! + inputField1595: ID! + inputField1596: ID! +} + +input InputObject394 { + inputField1597: InputObject395 + inputField1599: InputObject47! +} + +input InputObject395 { + inputField1598: [ID!]! +} + +input InputObject396 { + inputField1600: InputObject47! + inputField1601: InputObject397 + inputField1614: InputObject398 + inputField1617: InputObject399! +} + +input InputObject397 { + inputField1602: String + inputField1603: String + inputField1604: Boolean + inputField1605: Boolean + inputField1606: Boolean + inputField1607: Boolean! + inputField1608: Boolean + inputField1609: Boolean + inputField1610: [String!]! + inputField1611: String + inputField1612: Enum214 + inputField1613: String +} + +input InputObject398 { + inputField1615: [ID!]! + inputField1616: [ID!]! +} + +input InputObject399 { + inputField1618: InputObject400 + inputField1624: String + inputField1625: String! +} + +input InputObject4 { + inputField6: Enum34 + inputField7: Enum35 +} + +input InputObject40 { + inputField93: Scalar7 + inputField94: String +} + +input InputObject400 { + inputField1619: String + inputField1620: String + inputField1621: String + inputField1622: String + inputField1623: String +} + +input InputObject401 { + inputField1626: InputObject47! + inputField1627: InputObject397 + inputField1628: InputObject398 + inputField1629: InputObject402! +} + +input InputObject402 { + inputField1630: String + inputField1631: String! + inputField1632: String + inputField1633: String + inputField1634: String + inputField1635: String + inputField1636: String + inputField1637: String + inputField1638: String! +} + +input InputObject403 { + inputField1639: InputObject47! + inputField1640: InputObject397 + inputField1641: InputObject398 + inputField1642: InputObject404! +} + +input InputObject404 { + inputField1643: InputObject405 + inputField1657: String + inputField1658: String + inputField1659: String + inputField1660: String! +} + +input InputObject405 { + inputField1644: String + inputField1645: String + inputField1646: String + inputField1647: String + inputField1648: String + inputField1649: String + inputField1650: String + inputField1651: String + inputField1652: String + inputField1653: String + inputField1654: String + inputField1655: String + inputField1656: String +} + +input InputObject406 { + inputField1661: InputObject47! + inputField1662: InputObject397 + inputField1663: InputObject398 + inputField1664: InputObject407! +} + +input InputObject407 { + inputField1665: InputObject408 + inputField1672: String + inputField1673: String! +} + +input InputObject408 { + inputField1666: [String!] + inputField1667: String + inputField1668: [String!] + inputField1669: String + inputField1670: String + inputField1671: String +} + +input InputObject409 { + inputField1674: InputObject47! + inputField1675: InputObject410 + inputField1688: InputObject398 + inputField1689: InputObject399 +} + +input InputObject41 { + inputField95: [InputObject42!]! + inputField98: ID! +} + +input InputObject410 { + inputField1676: String + inputField1677: String + inputField1678: Boolean + inputField1679: Boolean + inputField1680: Boolean + inputField1681: Boolean + inputField1682: Boolean + inputField1683: Boolean + inputField1684: [String!]! + inputField1685: String + inputField1686: Enum214 + inputField1687: String +} + +input InputObject411 { + inputField1690: InputObject47! + inputField1691: InputObject410 + inputField1692: InputObject398 + inputField1693: InputObject402 +} + +input InputObject412 { + inputField1694: InputObject47! + inputField1695: InputObject410 + inputField1696: InputObject398 + inputField1697: InputObject404 +} + +input InputObject413 { + inputField1698: InputObject47! + inputField1699: InputObject410 + inputField1700: InputObject398 + inputField1701: InputObject407 +} + +input InputObject414 { + inputField1702: InputObject395 + inputField1703: InputObject47! + inputField1704: InputObject410 + inputField1705: InputObject398 + inputField1706: InputObject399 +} + +input InputObject415 { + inputField1707: InputObject395 + inputField1708: InputObject47! + inputField1709: InputObject410 + inputField1710: InputObject398 + inputField1711: InputObject402 +} + +input InputObject416 { + inputField1712: ID! + inputField1713: InputObject402! +} + +input InputObject417 { + inputField1714: InputObject395 + inputField1715: InputObject47! + inputField1716: InputObject410 + inputField1717: InputObject398 + inputField1718: InputObject404 +} + +input InputObject418 { + inputField1719: InputObject395 + inputField1720: InputObject47! + inputField1721: InputObject410 + inputField1722: InputObject398 + inputField1723: InputObject407 +} + +input InputObject419 { + inputField1724: String + inputField1725: String + inputField1726: String! + inputField1727: String + inputField1728: String + inputField1729: String + inputField1730: String +} + +input InputObject42 { + inputField96: Scalar13! + inputField97: Scalar13 +} + +input InputObject420 { + inputField1731: [InputObject421!] + inputField1739: [InputObject422!] + inputField1747: String + inputField1748: String + inputField1749: [InputObject423!] + inputField1755: [InputObject424!] + inputField1758: String + inputField1759: String! + inputField1760: String + inputField1761: String + inputField1762: [InputObject425!] + inputField1772: String + inputField1773: [InputObject426!] + inputField1784: String + inputField1785: [InputObject427!] + inputField1791: [String!] + inputField1792: String +} + +input InputObject421 { + inputField1732: String + inputField1733: String + inputField1734: String + inputField1735: String + inputField1736: String + inputField1737: String + inputField1738: String +} + +input InputObject422 { + inputField1740: String + inputField1741: String + inputField1742: String + inputField1743: String + inputField1744: String + inputField1745: String + inputField1746: String +} + +input InputObject423 { + inputField1750: String + inputField1751: String + inputField1752: String + inputField1753: String + inputField1754: String +} + +input InputObject424 { + inputField1756: String + inputField1757: String +} + +input InputObject425 { + inputField1763: String + inputField1764: String + inputField1765: String + inputField1766: String + inputField1767: String + inputField1768: String + inputField1769: String + inputField1770: String + inputField1771: String +} + +input InputObject426 { + inputField1774: String + inputField1775: String + inputField1776: String + inputField1777: Boolean + inputField1778: String + inputField1779: String + inputField1780: String + inputField1781: String + inputField1782: String + inputField1783: String +} + +input InputObject427 { + inputField1786: String + inputField1787: String + inputField1788: String + inputField1789: String + inputField1790: String +} + +input InputObject428 { + inputField1793: InputObject429 + inputField1806: String + inputField1807: [InputObject430!] + inputField1814: String + inputField1815: String + inputField1816: [InputObject431!] + inputField1829: String + inputField1830: String + inputField1831: [String!] + inputField1832: [InputObject432!] + inputField1850: String + inputField1851: String + inputField1852: String + inputField1853: String + inputField1854: InputObject433 + inputField1859: String + inputField1860: [InputObject430!] + inputField1861: String + inputField1862: String + inputField1863: String + inputField1864: String + inputField1865: String + inputField1866: [InputObject430!] + inputField1867: [InputObject434!] + inputField1870: [InputObject435] + inputField1873: [InputObject430!] + inputField1874: String + inputField1875: String +} + +input InputObject429 { + inputField1794: String + inputField1795: String + inputField1796: String + inputField1797: String + inputField1798: String + inputField1799: String + inputField1800: String + inputField1801: String + inputField1802: String + inputField1803: String + inputField1804: String + inputField1805: String +} + +input InputObject43 { + inputField102: ID! + inputField103: ID + inputField104: String + inputField105: String + inputField106: Enum134! + inputField99: InputObject44 +} + +input InputObject430 { + inputField1808: String + inputField1809: String + inputField1810: String + inputField1811: String + inputField1812: String + inputField1813: String +} + +input InputObject431 { + inputField1817: String + inputField1818: String + inputField1819: String + inputField1820: String + inputField1821: String + inputField1822: String + inputField1823: String + inputField1824: String + inputField1825: String + inputField1826: String + inputField1827: String + inputField1828: String +} + +input InputObject432 { + inputField1833: String + inputField1834: String + inputField1835: String + inputField1836: String + inputField1837: String + inputField1838: String + inputField1839: String + inputField1840: String + inputField1841: String + inputField1842: String + inputField1843: String + inputField1844: String + inputField1845: String + inputField1846: String + inputField1847: String + inputField1848: String + inputField1849: String +} + +input InputObject433 { + inputField1855: String + inputField1856: String + inputField1857: String + inputField1858: String +} + +input InputObject434 { + inputField1868: String + inputField1869: String +} + +input InputObject435 { + inputField1871: String + inputField1872: String +} + +input InputObject436 { + inputField1876: Int + inputField1877: Int +} + +input InputObject437 { + inputField1878: String + inputField1879: String + inputField1880: String + inputField1881: [InputObject438!] + inputField1885: String + inputField1886: ID! + inputField1887: String + inputField1888: String + inputField1889: String + inputField1890: [InputObject439!] + inputField1893: String + inputField1894: [InputObject440!] + inputField1898: [String!] + inputField1899: String + inputField1900: String + inputField1901: String + inputField1902: [InputObject441!] + inputField1905: [InputObject442!] + inputField1909: [ID!] + inputField1910: String + inputField1911: [InputObject443!] + inputField1914: String + inputField1915: Enum246 + inputField1916: [String!] + inputField1917: [InputObject444!] +} + +input InputObject438 { + inputField1882: String + inputField1883: String + inputField1884: String +} + +input InputObject439 { + inputField1891: Enum240 + inputField1892: String +} + +input InputObject44 { + inputField100: String! + inputField101: Float! +} + +input InputObject440 { + inputField1895: String + inputField1896: String! + inputField1897: String +} + +input InputObject441 { + inputField1903: String! + inputField1904: Enum247 +} + +input InputObject442 { + inputField1906: Boolean! + inputField1907: String + inputField1908: String! +} + +input InputObject443 { + inputField1912: String + inputField1913: String +} + +input InputObject444 { + inputField1918: String + inputField1919: Enum248 +} + +input InputObject445 { + inputField1920: ID! + inputField1921: Enum242! +} + +input InputObject446 { + inputField1922: String + inputField1923: String + inputField1924: String! + inputField1925: Enum241 + inputField1926: Enum243 +} + +input InputObject447 { + inputField1927: String + inputField1928: String! + inputField1929: String + inputField1930: Enum241 + inputField1931: Enum243 +} + +input InputObject448 { + inputField1932: String! + inputField1933: String! +} + +input InputObject449 { + inputField1934: [InputObject450] + inputField1944: String + inputField1945: String + inputField1946: String + inputField1947: String! + inputField1948: String! + inputField1949: String + inputField1950: String +} + +input InputObject45 { + inputField107: String + inputField108: Int + inputField109: String + inputField110: String + inputField111: String + inputField112: Int +} + +input InputObject450 { + inputField1935: String + inputField1936: String + inputField1937: String! + inputField1938: String + inputField1939: String + inputField1940: String + inputField1941: Boolean + inputField1942: String + inputField1943: String +} + +input InputObject451 { + inputField1951: [InputObject452] + inputField1962: String + inputField1963: String! + inputField1964: InputObject453 + inputField1967: String +} + +input InputObject452 { + inputField1952: String + inputField1953: String + inputField1954: String! + inputField1955: String + inputField1956: String + inputField1957: String + inputField1958: String + inputField1959: Boolean + inputField1960: String + inputField1961: String +} + +input InputObject453 { + inputField1965: String! + inputField1966: String! +} + +input InputObject454 { + inputField1968: [InputObject452] + inputField1969: String + inputField1970: String + inputField1971: String + inputField1972: String! + inputField1973: String! + inputField1974: String + inputField1975: InputObject453 + inputField1976: String +} + +input InputObject455 { + inputField1977: Int + inputField1978: [InputObject449] + inputField1979: [String] + inputField1980: String + inputField1981: String + inputField1982: String + inputField1983: String! + inputField1984: String! + inputField1985: String + inputField1986: String + inputField1987: InputObject453 + inputField1988: String + inputField1989: String +} + +input InputObject456 { + inputField1990: String + inputField1991: String + inputField1992: [String!] + inputField1993: Int + inputField1994: Int + inputField1995: String + inputField1996: String + inputField1997: String! + inputField1998: String + inputField1999: String + inputField2000: String + inputField2001: [String!] + inputField2002: String + inputField2003: String +} + +input InputObject457 { + inputField2004: Boolean + inputField2005: InputObject458 + inputField2019: Boolean + inputField2020: String + inputField2021: String + inputField2022: String + inputField2023: String + inputField2024: String + inputField2025: String + inputField2026: String + inputField2027: String + inputField2028: String + inputField2029: String + inputField2030: [String!] + inputField2031: String + inputField2032: String + inputField2033: [String!] + inputField2034: InputObject453 + inputField2035: [String!] +} + +input InputObject458 { + inputField2006: String + inputField2007: [String!] + inputField2008: String + inputField2009: String + inputField2010: String! + inputField2011: String + inputField2012: String + inputField2013: [InputObject459!] + inputField2016: [String] + inputField2017: String + inputField2018: Int +} + +input InputObject459 { + inputField2014: String + inputField2015: String +} + +input InputObject46 { + inputField113: InputObject47! +} + +input InputObject460 { + inputField2036: [String!] + inputField2037: String + inputField2038: Enum250 + inputField2039: String + inputField2040: String + inputField2041: Enum251 + inputField2042: [String!] +} + +input InputObject461 { + inputField2043: [InputObject462] + inputField2049: String + inputField2050: String + inputField2051: String + inputField2052: String! + inputField2053: String! + inputField2054: String + inputField2055: String +} + +input InputObject462 { + inputField2044: String + inputField2045: String! + inputField2046: InputObject453 + inputField2047: String + inputField2048: String +} + +input InputObject463 { + inputField2056: [InputObject464] + inputField2062: String + inputField2063: String + inputField2064: String + inputField2065: String! + inputField2066: String! + inputField2067: String +} + +input InputObject464 { + inputField2057: String + inputField2058: String! + inputField2059: String + inputField2060: String + inputField2061: String +} + +input InputObject465 { + inputField2068: String + inputField2069: String + inputField2070: String + inputField2071: String + inputField2072: String + inputField2073: String + inputField2074: String + inputField2075: String + inputField2076: String + inputField2077: String + inputField2078: String + inputField2079: String + inputField2080: String +} + +input InputObject466 { + inputField2081: [String!]! + inputField2082: [String!]! + inputField2083: String! + inputField2084: ID + inputField2085: [String!]! +} + +input InputObject467 { + inputField2086: String + inputField2087: [String!]! +} + +input InputObject468 { + inputField2088: String! + inputField2089: String + inputField2090: String + inputField2091: String + inputField2092: String +} + +input InputObject469 { + inputField2093: [InputObject470!]! +} + +input InputObject47 { + inputField114: ID! + inputField115: String +} + +input InputObject470 { + inputField2094: String + inputField2095: String! + inputField2096: [Enum18!] + inputField2097: Enum60! + inputField2098: [String!] + inputField2099: Enum369! +} + +input InputObject471 { + inputField2100: [InputObject472!] + inputField2103: Enum60 + inputField2104: ID! + inputField2105: [String!] + inputField2106: Enum369 + inputField2107: [String!] + inputField2108: String +} + +input InputObject472 { + inputField2101: Enum370 + inputField2102: String +} + +input InputObject473 { + inputField2109: String + inputField2110: [Enum18!] + inputField2111: [Enum18!] + inputField2112: Boolean + inputField2113: String + inputField2114: ID! +} + +input InputObject474 { + inputField2115: ID! + inputField2116: Scalar1 + inputField2117: Scalar1! +} + +input InputObject475 { + inputField2118: [InputObject476!]! +} + +input InputObject476 { + inputField2119: String + inputField2120: [Enum18!] + inputField2121: [Enum18!] + inputField2122: Boolean! = true + inputField2123: String + inputField2124: ID! +} + +input InputObject477 { + inputField2125: [InputObject478!]! +} + +input InputObject478 { + inputField2126: String + inputField2127: String + inputField2128: ID! +} + +input InputObject479 { + inputField2129: [InputObject480!]! + inputField2132: ID! +} + +input InputObject48 { + inputField116: [InputObject47!]! +} + +input InputObject480 { + inputField2130: String! + inputField2131: String! +} + +input InputObject481 { + inputField2133: String + inputField2134: [InputObject482!] + inputField2152: [InputObject487!] +} + +input InputObject482 { + inputField2135: [InputObject483] + inputField2138: [InputObject484] + inputField2145: InputObject485 + inputField2148: String! + inputField2149: InputObject486 +} + +input InputObject483 { + inputField2136: String! + inputField2137: Int +} + +input InputObject484 { + inputField2139: String + inputField2140: Boolean + inputField2141: String! + inputField2142: String! + inputField2143: Enum373! + inputField2144: Boolean +} + +input InputObject485 { + inputField2146: [String!] + inputField2147: [String!] +} + +input InputObject486 { + inputField2150: [String!] + inputField2151: [String!] +} + +input InputObject487 { + inputField2153: String! + inputField2154: String! + inputField2155: Int! + inputField2156: Int! +} + +input InputObject488 { + inputField2157: String! + inputField2158: Int +} + +input InputObject489 { + inputField2159: ID + inputField2160: ID +} + +input InputObject49 { + inputField117: String + inputField118: String + inputField119: String + inputField120: String + inputField121: String + inputField122: String +} + +input InputObject490 { + inputField2161: Enum376 + inputField2162: Boolean + inputField2163: String + inputField2164: Boolean! + inputField2165: [InputObject491] + inputField2175: Boolean! + inputField2176: Scalar1 + inputField2177: Boolean! + inputField2178: Boolean! + inputField2179: Int + inputField2180: String + inputField2181: String + inputField2182: Int + inputField2183: Boolean + inputField2184: String + inputField2185: [String] + inputField2186: [String] + inputField2187: [InputObject493] + inputField2192: String + inputField2193: String + inputField2194: Boolean! + inputField2195: String + inputField2196: String + inputField2197: Int + inputField2198: Int + inputField2199: Enum378 +} + +input InputObject491 { + inputField2166: InputObject492 + inputField2170: String + inputField2171: Boolean + inputField2172: String + inputField2173: String + inputField2174: Int +} + +input InputObject492 { + inputField2167: [ID!] + inputField2168: ID! + inputField2169: Boolean +} + +input InputObject493 { + inputField2188: ID + inputField2189: Enum377 + inputField2190: String! + inputField2191: String +} + +input InputObject494 { + inputField2200: String + inputField2201: String + inputField2202: Int + inputField2203: String! + inputField2204: String + inputField2205: String + inputField2206: String +} + +input InputObject495 { + inputField2207: String! + inputField2208: String! +} + +input InputObject496 { + inputField2209: [ID!]! + inputField2210: Int + inputField2211: String +} + +input InputObject497 { + inputField2212: [ID!] + inputField2213: [ID!] + inputField2214: Int + inputField2215: String +} + +input InputObject498 { + inputField2216: [InputObject499!] +} + +input InputObject499 { + inputField2217: [ID] + inputField2218: ID + inputField2219: Int + inputField2220: Int! + inputField2221: ID + inputField2222: String +} + +input InputObject5 { + inputField8: [ID!] +} + +input InputObject50 { + inputField123: ID! +} + +input InputObject500 { + inputField2223: [ID!]! + inputField2224: Int + inputField2225: String +} + +input InputObject501 { + inputField2226: [ID!] + inputField2227: [ID!] + inputField2228: Int + inputField2229: String +} + +input InputObject502 { + inputField2230: Int + inputField2231: [InputObject503!] + inputField2239: String +} + +input InputObject503 { + inputField2232: ID! + inputField2233: InputObject504! +} + +input InputObject504 { + inputField2234: String + inputField2235: String + inputField2236: Scalar1 + inputField2237: [Enum385] + inputField2238: Enum386 +} + +input InputObject505 { + inputField2240: [ID!]! + inputField2241: ID! + inputField2242: Int + inputField2243: String +} + +input InputObject506 { + inputField2244: [InputObject507!]! + inputField2247: Int + inputField2248: String +} + +input InputObject507 { + inputField2245: ID! + inputField2246: Int! +} + +input InputObject508 { + inputField2249: [InputObject509!]! + inputField2252: Int + inputField2253: String +} + +input InputObject509 { + inputField2250: ID! + inputField2251: Int! +} + +input InputObject51 { + inputField124: [InputObject52] + inputField127: String +} + +input InputObject510 { + inputField2254: Int + inputField2255: String + inputField2256: [InputObject511!]! +} + +input InputObject511 { + inputField2257: Int! + inputField2258: ID! +} + +input InputObject512 { + inputField2259: Boolean + inputField2260: [InputObject513] + inputField2270: ID + inputField2271: String + inputField2272: [ID] + inputField2273: [InputObject514] + inputField2278: String + inputField2279: ID + inputField2280: String + inputField2281: Int + inputField2282: String + inputField2283: Int! + inputField2284: [InputObject515] + inputField2290: String + inputField2291: InputObject504 +} + +input InputObject513 { + inputField2261: String + inputField2262: String + inputField2263: String + inputField2264: String + inputField2265: ID + inputField2266: String + inputField2267: Enum64 + inputField2268: String + inputField2269: Enum65 +} + +input InputObject514 { + inputField2274: ID + inputField2275: Enum64 + inputField2276: Enum66 + inputField2277: String +} + +input InputObject515 { + inputField2285: String! + inputField2286: ID + inputField2287: Enum64 + inputField2288: Enum67 + inputField2289: String! +} + +input InputObject516 { + inputField2292: ID + inputField2293: Int + inputField2294: String + inputField2295: String +} + +input InputObject517 { + inputField2296: ID + inputField2297: Int + inputField2298: String + inputField2299: String +} + +input InputObject518 { + inputField2300: ID + inputField2301: Int + inputField2302: String + inputField2303: Int + inputField2304: String +} + +input InputObject519 { + inputField2305: ID + inputField2306: Int + inputField2307: String + inputField2308: String +} + +input InputObject52 { + inputField125: String + inputField126: String +} + +input InputObject520 { + inputField2309: ID + inputField2310: Int + inputField2311: String + inputField2312: String +} + +input InputObject521 { + inputField2313: ID + inputField2314: Int + inputField2315: String + inputField2316: Int + inputField2317: String +} + +input InputObject522 { + inputField2318: Boolean + inputField2319: [InputObject513] + inputField2320: String + inputField2321: ID + inputField2322: String + inputField2323: ID + inputField2324: [ID] + inputField2325: [InputObject514] + inputField2326: String + inputField2327: ID + inputField2328: String + inputField2329: Int + inputField2330: String + inputField2331: Int! + inputField2332: [InputObject515] + inputField2333: ID + inputField2334: ID + inputField2335: InputObject504 +} + +input InputObject523 { + inputField2336: Boolean! + inputField2337: String! + inputField2338: ID! +} + +input InputObject524 { + inputField2339: [InputObject525!]! + inputField2341: Enum71 +} + +input InputObject525 { + inputField2340: ID! +} + +input InputObject526 { + inputField2342: [ID!]! + inputField2343: Enum71 +} + +input InputObject527 { + inputField2344: Boolean + inputField2345: [InputObject513] + inputField2346: String + inputField2347: [ID] + inputField2348: [InputObject514] + inputField2349: ID + inputField2350: Int + inputField2351: String! + inputField2352: Int! + inputField2353: [InputObject515] + inputField2354: String +} + +input InputObject528 { + inputField2355: String! + inputField2356: Enum72! + inputField2357: String! + inputField2358: Int + inputField2359: String +} + +input InputObject529 { + inputField2360: InputObject530 + inputField2370: Enum387 + inputField2371: [InputObject533!]! + inputField2374: Scalar1 + inputField2375: Int + inputField2376: Boolean + inputField2377: String! +} + +input InputObject53 { + inputField128: ID! + inputField129: ID +} + +input InputObject530 { + inputField2361: InputObject531 + inputField2368: InputObject531 + inputField2369: InputObject532 +} + +input InputObject531 { + inputField2362: InputObject532 + inputField2367: Int +} + +input InputObject532 { + inputField2363: Int + inputField2364: Int + inputField2365: Int + inputField2366: Int +} + +input InputObject533 { + inputField2372: ID! + inputField2373: ID! +} + +input InputObject534 { + inputField2378: Boolean + inputField2379: [InputObject513] + inputField2380: String + inputField2381: [ID] + inputField2382: [InputObject514] + inputField2383: ID + inputField2384: Int + inputField2385: String! + inputField2386: Int! + inputField2387: [InputObject515] + inputField2388: String + inputField2389: ID + inputField2390: ID +} + +input InputObject535 { + inputField2391: [InputObject536] +} + +input InputObject536 { + inputField2392: ID! +} + +input InputObject537 { + inputField2393: [InputObject538!]! +} + +input InputObject538 { + inputField2394: ID! +} + +input InputObject539 { + inputField2395: [InputObject540!]! +} + +input InputObject54 { + inputField130: ID + inputField131: Enum304 +} + +input InputObject540 { + inputField2396: ID! +} + +input InputObject541 { + inputField2397: ID! +} + +input InputObject542 { + inputField2398: String! + inputField2399: Int + inputField2400: String +} + +input InputObject543 { + inputField2401: ID! +} + +input InputObject544 { + inputField2402: Enum389 + inputField2403: String + inputField2404: String + inputField2405: ID! + inputField2406: String + inputField2407: Boolean + inputField2408: Int + inputField2409: Enum390 + inputField2410: String + inputField2411: [String!] +} + +input InputObject545 { + inputField2412: [InputObject544!]! +} + +input InputObject546 { + inputField2413: [InputObject547!]! + inputField2421: InputObject548 +} + +input InputObject547 { + inputField2414: [ID!] + inputField2415: ID! + inputField2416: String + inputField2417: ID! + inputField2418: Boolean + inputField2419: Boolean + inputField2420: [String!] +} + +input InputObject548 { + inputField2422: String + inputField2423: [String!]! +} + +input InputObject549 { + inputField2424: Enum391! + inputField2425: String! +} + +input InputObject55 { + inputField132: [ID!]! +} + +input InputObject550 { + inputField2426: [InputObject551]! + inputField2437: String! + inputField2438: Int + inputField2439: String +} + +input InputObject551 { + inputField2427: Boolean + inputField2428: String + inputField2429: String + inputField2430: InputObject514 + inputField2431: String + inputField2432: String + inputField2433: String + inputField2434: InputObject515 + inputField2435: ID + inputField2436: InputObject504 +} + +input InputObject552 { + inputField2440: String! + inputField2441: Enum391! + inputField2442: String! + inputField2443: String! + inputField2444: Boolean! +} + +input InputObject553 { + inputField2445: [InputObject554!]! + inputField2447: InputObject548! +} + +input InputObject554 { + inputField2446: ID! +} + +input InputObject555 { + inputField2448: String + inputField2449: String + inputField2450: ID! + inputField2451: Int + inputField2452: String! + inputField2453: String + inputField2454: String + inputField2455: String +} + +input InputObject556 { + inputField2456: [ID!]! + inputField2457: Enum71 + inputField2458: ID! +} + +input InputObject557 { + inputField2459: Scalar1 + inputField2460: Int + inputField2461: ID! + inputField2462: String! +} + +input InputObject558 { + inputField2463: [InputObject559!]! + inputField2466: ID! +} + +input InputObject559 { + inputField2464: String + inputField2465: ID! +} + +input InputObject56 { + inputField133: [ID!]! +} + +input InputObject560 { + inputField2467: ID! + inputField2468: [ID!] + inputField2469: [ID!] +} + +input InputObject561 { + inputField2470: String + inputField2471: String + inputField2472: String + inputField2473: String + inputField2474: String + inputField2475: String + inputField2476: Boolean + inputField2477: String + inputField2478: ID! + inputField2479: String + inputField2480: Enum25 + inputField2481: Enum26! +} + +input InputObject562 { + inputField2482: String! + inputField2483: ID! + inputField2484: String! +} + +input InputObject563 { + inputField2485: Boolean + inputField2486: String! + inputField2487: ID! + inputField2488: Enum29 + inputField2489: String! +} + +input InputObject564 { + inputField2490: String! + inputField2491: ID! + inputField2492: String! +} + +input InputObject565 { + inputField2493: InputObject566 + inputField2497: [InputObject567!] + inputField2500: [InputObject568!] + inputField2503: String + inputField2504: [InputObject569!] + inputField2507: String! + inputField2508: [ID!] + inputField2509: [InputObject570!] + inputField2514: [InputObject571!] + inputField2517: [InputObject572!] +} + +input InputObject566 { + inputField2494: Enum254 + inputField2495: [ID!] + inputField2496: [ID!] +} + +input InputObject567 { + inputField2498: String! + inputField2499: String! +} + +input InputObject568 { + inputField2501: String! + inputField2502: String! +} + +input InputObject569 { + inputField2505: String! + inputField2506: String! +} + +input InputObject57 { + inputField134: ID! + inputField135: String! +} + +input InputObject570 { + inputField2510: String! + inputField2511: String! + inputField2512: [Enum255!] + inputField2513: [ID!] +} + +input InputObject571 { + inputField2515: String! + inputField2516: String! +} + +input InputObject572 { + inputField2518: String! + inputField2519: String! +} + +input InputObject573 { + inputField2520: ID! + inputField2521: Enum393! + inputField2522: [InputObject574!] + inputField2524: ID +} + +input InputObject574 { + inputField2523: ID! +} + +input InputObject575 { + inputField2525: String! + inputField2526: ID! + inputField2527: String! +} + +input InputObject576 { + inputField2528: String + inputField2529: String + inputField2530: String + inputField2531: String! + inputField2532: String + inputField2533: ID! + inputField2534: String + inputField2535: Boolean + inputField2536: [Enum30!]! +} + +input InputObject577 { + inputField2537: [InputObject578!] + inputField2549: [InputObject579!] + inputField2554: [InputObject580!] + inputField2557: [InputObject581!] + inputField2560: [InputObject582!] + inputField2569: String! + inputField2570: [InputObject583!] + inputField2575: [InputObject584!] + inputField2581: [ID!] +} + +input InputObject578 { + inputField2538: String + inputField2539: String + inputField2540: String + inputField2541: String + inputField2542: String + inputField2543: String + inputField2544: Boolean + inputField2545: String + inputField2546: String + inputField2547: Enum25 + inputField2548: Enum26! +} + +input InputObject579 { + inputField2550: Boolean + inputField2551: String! + inputField2552: Enum29 + inputField2553: String! +} + +input InputObject58 { + inputField136: String + inputField137: String + inputField138: String + inputField139: Enum40 = EnumValue447 + inputField140: String! +} + +input InputObject580 { + inputField2555: String! + inputField2556: String! +} + +input InputObject581 { + inputField2558: Int! + inputField2559: ID! +} + +input InputObject582 { + inputField2561: String + inputField2562: String + inputField2563: String + inputField2564: String! + inputField2565: String + inputField2566: String + inputField2567: Boolean + inputField2568: [Enum30!]! +} + +input InputObject583 { + inputField2571: Boolean + inputField2572: ID! + inputField2573: Enum255! + inputField2574: ID! +} + +input InputObject584 { + inputField2576: String! + inputField2577: Boolean + inputField2578: String! + inputField2579: String! + inputField2580: Enum32 +} + +input InputObject585 { + inputField2582: Boolean + inputField2583: ID! + inputField2584: ID! + inputField2585: Enum255! + inputField2586: ID! +} + +input InputObject586 { + inputField2587: ID! + inputField2588: String! +} + +input InputObject587 { + inputField2589: String! + inputField2590: Boolean + inputField2591: String! + inputField2592: String! + inputField2593: ID! + inputField2594: Enum32 +} + +input InputObject588 { + inputField2595: ID! + inputField2596: String! +} + +input InputObject589 { + inputField2597: ID! +} + +input InputObject59 { + inputField141: ID! + inputField142: [InputObject60!] + inputField148: ID! + inputField149: ID + inputField150: ID! + inputField151: String + inputField152: [InputObject61] + inputField158: [InputObject62] +} + +input InputObject590 { + inputField2598: ID! +} + +input InputObject591 { + inputField2599: ID! +} + +input InputObject592 { + inputField2600: ID! +} + +input InputObject593 { + inputField2601: ID! +} + +input InputObject594 { + inputField2602: ID! +} + +input InputObject595 { + inputField2603: ID! +} + +input InputObject596 { + inputField2604: ID! +} + +input InputObject597 { + inputField2605: ID! +} + +input InputObject598 { + inputField2606: ID! +} + +input InputObject599 { + inputField2607: ID! + inputField2608: [ID!]! +} + +input InputObject6 { + inputField10: String + inputField11: String + inputField9: Int +} + +input InputObject60 { + inputField143: Boolean! + inputField144: ID + inputField145: String + inputField146: Float + inputField147: String! +} + +input InputObject600 { + inputField2609: [String!]! + inputField2610: ID! +} + +input InputObject601 { + inputField2611: ID! + inputField2612: [ID!]! +} + +input InputObject602 { + inputField2613: String + inputField2614: String + inputField2615: String + inputField2616: String + inputField2617: String + inputField2618: ID! + inputField2619: String + inputField2620: Boolean + inputField2621: String + inputField2622: String + inputField2623: String + inputField2624: Enum25 + inputField2625: Enum26 +} + +input InputObject603 { + inputField2626: String! + inputField2627: ID! + inputField2628: String! +} + +input InputObject604 { + inputField2629: ID! + inputField2630: Boolean + inputField2631: String + inputField2632: Enum29 + inputField2633: String +} + +input InputObject605 { + inputField2634: ID! + inputField2635: String + inputField2636: String +} + +input InputObject606 { + inputField2637: InputObject607 + inputField2643: [InputObject608!] + inputField2646: [InputObject609!] + inputField2649: [ID!] + inputField2650: String + inputField2651: [InputObject610!] + inputField2654: ID! + inputField2655: String + inputField2656: [InputObject611!] + inputField2661: [InputObject612!] + inputField2664: [InputObject613!] +} + +input InputObject607 { + inputField2638: Enum254 + inputField2639: [ID!] + inputField2640: [ID!] + inputField2641: [ID!] + inputField2642: [ID!] +} + +input InputObject608 { + inputField2644: String! + inputField2645: String! +} + +input InputObject609 { + inputField2647: String! + inputField2648: String! +} + +input InputObject61 { + inputField153: Enum318! + inputField154: String + inputField155: String! + inputField156: ID + inputField157: String! +} + +input InputObject610 { + inputField2652: String! + inputField2653: String! +} + +input InputObject611 { + inputField2657: String! + inputField2658: String! + inputField2659: [Enum255!] + inputField2660: [ID!] +} + +input InputObject612 { + inputField2662: String! + inputField2663: String! +} + +input InputObject613 { + inputField2665: String! + inputField2666: String! +} + +input InputObject614 { + inputField2667: ID! + inputField2668: [InputObject615!] + inputField2671: [InputObject616!] +} + +input InputObject615 { + inputField2669: ID! + inputField2670: String! +} + +input InputObject616 { + inputField2672: ID! + inputField2673: [ID!] + inputField2674: [ID!] +} + +input InputObject617 { + inputField2675: String! + inputField2676: ID! + inputField2677: String! +} + +input InputObject618 { + inputField2678: String + inputField2679: String + inputField2680: String + inputField2681: String + inputField2682: ID! + inputField2683: String + inputField2684: String + inputField2685: Boolean + inputField2686: [Enum30!] +} + +input InputObject619 { + inputField2687: InputObject620 + inputField2689: InputObject621 + inputField2691: Scalar4 + inputField2692: InputObject621 + inputField2693: InputObject622 + inputField2698: InputObject621 + inputField2699: InputObject624 + inputField2701: InputObject620 + inputField2702: InputObject621 + inputField2703: InputObject625 + inputField2705: InputObject621 + inputField2706: ID! + inputField2707: InputObject620 + inputField2708: InputObject621 + inputField2709: InputObject626 + inputField2711: String + inputField2712: InputObject626 + inputField2713: InputObject627 + inputField2715: InputObject621 + inputField2716: InputObject620 + inputField2717: InputObject625 + inputField2718: InputObject621 + inputField2719: InputObject625 + inputField2720: InputObject621 + inputField2721: InputObject625 + inputField2722: InputObject621 + inputField2723: InputObject620 + inputField2724: InputObject620 + inputField2725: InputObject621 + inputField2726: InputObject628 + inputField2730: InputObject620 + inputField2731: InputObject621 + inputField2732: InputObject621 + inputField2733: InputObject621 + inputField2734: InputObject620 +} + +input InputObject62 { + inputField159: String + inputField160: ID! + inputField161: Enum45! +} + +input InputObject620 { + inputField2688: Int +} + +input InputObject621 { + inputField2690: String +} + +input InputObject622 { + inputField2694: InputObject623 +} + +input InputObject623 { + inputField2695: Int + inputField2696: Int + inputField2697: Int +} + +input InputObject624 { + inputField2700: [String] +} + +input InputObject625 { + inputField2704: [Int] +} + +input InputObject626 { + inputField2710: [String] +} + +input InputObject627 { + inputField2714: InputObject620 +} + +input InputObject628 { + inputField2727: InputObject621 + inputField2728: InputObject621 + inputField2729: InputObject621 +} + +input InputObject629 { + inputField2735: String + inputField2736: ID! + inputField2737: Boolean + inputField2738: String + inputField2739: String + inputField2740: Enum32 +} + +input InputObject63 { + inputField162: ID! + inputField163: [InputObject64] + inputField200: ID! + inputField201: ID! + inputField202: [InputObject62] + inputField203: Int + inputField204: ID +} + +input InputObject630 { + inputField2741: Enum394! + inputField2742: Int! + inputField2743: Enum352! + inputField2744: ID! + inputField2745: String! + inputField2746: [InputObject631!]! +} + +input InputObject631 { + inputField2747: [String!]! + inputField2748: String! +} + +input InputObject632 { + inputField2749: Boolean! + inputField2750: Scalar8! + inputField2751: [Scalar8] +} + +input InputObject633 { + inputField2752: Enum256! + inputField2753: ID! + inputField2754: [Enum18!] + inputField2755: ID! + inputField2756: ID + inputField2757: Boolean + inputField2758: Scalar10 + inputField2759: Boolean + inputField2760: Boolean + inputField2761: Boolean + inputField2762: Boolean + inputField2763: Enum18 + inputField2764: [String!] + inputField2765: ID + inputField2766: [String!] + inputField2767: ID! + inputField2768: String + inputField2769: Boolean + inputField2770: String + inputField2771: [ID!]! + inputField2772: Scalar10 + inputField2773: Boolean + inputField2774: Boolean + inputField2775: Boolean + inputField2776: Boolean + inputField2777: Enum18 + inputField2778: [InputObject634!] +} + +input InputObject634 { + inputField2779: Enum261! + inputField2780: [Enum18!] + inputField2781: Scalar10 + inputField2782: Boolean + inputField2783: Boolean + inputField2784: String + inputField2785: [String!] + inputField2786: [String!] + inputField2787: String + inputField2788: Enum262 + inputField2789: [ID!] + inputField2790: Boolean + inputField2791: Scalar10 + inputField2792: Boolean + inputField2793: Boolean + inputField2794: String + inputField2795: ID +} + +input InputObject635 { + inputField2796: Boolean + inputField2797: Boolean + inputField2798: Boolean + inputField2799: Boolean +} + +input InputObject636 { + inputField2800: String + inputField2801: [InputObject637] +} + +input InputObject637 { + inputField2802: String + inputField2803: Boolean! + inputField2804: Boolean! + inputField2805: Int! + inputField2806: Int! + inputField2807: Boolean! + inputField2808: [Enum59] +} + +input InputObject638 { + inputField2809: [InputObject639] + inputField2812: String + inputField2813: String + inputField2814: Scalar8 + inputField2815: InputObject640 + inputField2825: InputObject642 + inputField2829: [InputObject643] +} + +input InputObject639 { + inputField2810: String + inputField2811: Scalar8 +} + +input InputObject64 { + inputField164: [InputObject65] + inputField189: ID + inputField190: ID + inputField191: ID + inputField192: InputObject66 + inputField193: [ID!] + inputField194: [InputObject67] + inputField199: Boolean +} + +input InputObject640 { + inputField2816: Boolean! + inputField2817: Scalar8 + inputField2818: [InputObject641] + inputField2822: Int! + inputField2823: String + inputField2824: String +} + +input InputObject641 { + inputField2819: String + inputField2820: String + inputField2821: String +} + +input InputObject642 { + inputField2826: Boolean! + inputField2827: Int! + inputField2828: String +} + +input InputObject643 { + inputField2830: String + inputField2831: String +} + +input InputObject644 { + inputField2832: Boolean! + inputField2833: [InputObject640] + inputField2834: [InputObject645] + inputField2837: [String] + inputField2838: [String] + inputField2839: Boolean! + inputField2840: String + inputField2841: String + inputField2842: Boolean! + inputField2843: Scalar8 + inputField2844: Boolean! + inputField2845: [InputObject641] + inputField2846: String + inputField2847: Boolean! + inputField2848: [InputObject642] + inputField2849: [InputObject640] + inputField2850: Boolean! + inputField2851: [String] + inputField2852: Boolean! + inputField2853: String +} + +input InputObject645 { + inputField2835: String + inputField2836: [String] +} + +input InputObject646 { + inputField2854: Scalar8! + inputField2855: Enum100 + inputField2856: String + inputField2857: Scalar8! + inputField2858: [String]! +} + +input InputObject647 { + inputField2859: [InputObject648!] + inputField2873: [InputObject653!] + inputField2877: ID! + inputField2878: [InputObject654!] + inputField2881: [InputObject655!] + inputField2884: [InputObject656!] + inputField2890: [InputObject657!] +} + +input InputObject648 { + inputField2860: String! + inputField2861: InputObject649! + inputField2868: InputObject652 + inputField2872: InputObject649! +} + +input InputObject649 { + inputField2862: InputObject650 + inputField2865: InputObject651 +} + +input InputObject65 { + inputField165: InputObject66 + inputField183: Boolean + inputField184: ID + inputField185: ID + inputField186: ID! + inputField187: Enum43 + inputField188: Int +} + +input InputObject650 { + inputField2863: Scalar4! + inputField2864: Scalar11 +} + +input InputObject651 { + inputField2866: Scalar1! + inputField2867: Scalar11 +} + +input InputObject652 { + inputField2869: String + inputField2870: String + inputField2871: Enum163 +} + +input InputObject653 { + inputField2874: InputObject649! + inputField2875: String! + inputField2876: InputObject652 +} + +input InputObject654 { + inputField2879: String! + inputField2880: String! +} + +input InputObject655 { + inputField2882: String! + inputField2883: String! +} + +input InputObject656 { + inputField2885: String! + inputField2886: InputObject649 + inputField2887: InputObject652 + inputField2888: String! + inputField2889: InputObject649 +} + +input InputObject657 { + inputField2891: InputObject649 + inputField2892: String! + inputField2893: InputObject652 + inputField2894: String! +} + +input InputObject658 { + inputField2895: [InputObject648!] + inputField2896: ID! + inputField2897: Enum404 + inputField2898: [InputObject653!] + inputField2899: ID! + inputField2900: Enum405 +} + +input InputObject659 { + inputField2901: [InputObject648!] + inputField2902: Enum404 + inputField2903: [InputObject653!] + inputField2904: ID! + inputField2905: Enum405 +} + +input InputObject66 { + inputField166: Enum318! + inputField167: Scalar5 + inputField168: Int + inputField169: Scalar4 + inputField170: String + inputField171: ID + inputField172: Scalar6 + inputField173: Scalar4 + inputField174: Scalar4 + inputField175: Int + inputField176: Scalar4 + inputField177: ID + inputField178: ID + inputField179: [InputObject61] + inputField180: Int + inputField181: ID + inputField182: Int +} + +input InputObject660 { + inputField2906: [InputObject654!] + inputField2907: ID! + inputField2908: [InputObject655!] + inputField2909: ID! + inputField2910: Enum405 +} + +input InputObject661 { + inputField2911: [InputObject654!] + inputField2912: Enum404 + inputField2913: [InputObject655!] + inputField2914: ID! + inputField2915: Enum405 +} + +input InputObject662 { + inputField2916: [InputObject656!] + inputField2917: ID! + inputField2918: [InputObject657!] + inputField2919: ID! + inputField2920: Enum405 +} + +input InputObject663 { + inputField2921: ID! +} + +input InputObject664 { + inputField2922: [InputObject656!] + inputField2923: Enum404 + inputField2924: [InputObject657!] + inputField2925: ID! + inputField2926: Enum405 +} + +input InputObject665 { + inputField2927: Enum12 + inputField2928: Scalar8 +} + +input InputObject666 { + inputField2929: String + inputField2930: Scalar8 + inputField2931: Enum17 + inputField2932: String + inputField2933: Enum16 + inputField2934: String +} + +input InputObject667 { + inputField2935: Enum14 + inputField2936: Scalar8 +} + +input InputObject668 { + inputField2937: Enum406 + inputField2938: [String] +} + +input InputObject669 { + inputField2939: Scalar8 + inputField2940: Enum58 +} + +input InputObject67 { + inputField195: InputObject66 + inputField196: [ID!] + inputField197: ID + inputField198: Boolean +} + +input InputObject670 { + inputField2941: Scalar8 + inputField2942: Boolean + inputField2943: Scalar8 + inputField2944: Scalar8 + inputField2945: Enum92 + inputField2946: Enum91 + inputField2947: Enum90 +} + +input InputObject671 { + inputField2948: Scalar8 + inputField2949: Enum93 +} + +input InputObject672 { + inputField2950: String! + inputField2951: Boolean + inputField2952: String! +} + +input InputObject673 { + inputField2953: String + inputField2954: ID + inputField2955: ID! + inputField2956: ID! +} + +input InputObject674 { + inputField2957: ID + inputField2958: Scalar4 + inputField2959: [String!] + inputField2960: Enum49 + inputField2961: [String!]! + inputField2962: String + inputField2963: String + inputField2964: Boolean + inputField2965: [InputObject675] + inputField2968: Scalar4! + inputField2969: [InputObject676!] + inputField2979: [ID!]! +} + +input InputObject675 { + inputField2966: Enum50! + inputField2967: String! +} + +input InputObject676 { + inputField2970: Enum50! + inputField2971: Scalar4 + inputField2972: [String!] + inputField2973: [String!] + inputField2974: String + inputField2975: String + inputField2976: Boolean + inputField2977: Scalar4 + inputField2978: [ID] +} + +input InputObject677 { + inputField2980: ID + inputField2981: Scalar4 + inputField2982: [String!] + inputField2983: Enum49 + inputField2984: [String!] + inputField2985: String + inputField2986: String + inputField2987: Boolean + inputField2988: [InputObject678] + inputField2992: Scalar4 + inputField2993: [InputObject679!] + inputField3004: [ID] + inputField3005: ID! +} + +input InputObject678 { + inputField2989: Enum50! + inputField2990: String! + inputField2991: ID +} + +input InputObject679 { + inputField2994: Enum50! + inputField2995: Scalar4 + inputField2996: [String!] + inputField2997: [String!] + inputField2998: String + inputField2999: ID + inputField3000: String + inputField3001: Boolean + inputField3002: Scalar4 + inputField3003: [ID] +} + +input InputObject68 { + inputField205: String! + inputField206: Enum187 +} + +input InputObject680 { + inputField3006: [String!] + inputField3007: Int! + inputField3008: Enum352! + inputField3009: ID! + inputField3010: String! + inputField3011: String + inputField3012: [InputObject681]! +} + +input InputObject681 { + inputField3013: [String!]! + inputField3014: String! +} + +input InputObject682 { + inputField3015: String + inputField3016: String + inputField3017: String + inputField3018: String + inputField3019: Boolean + inputField3020: String + inputField3021: String + inputField3022: String + inputField3023: String + inputField3024: String + inputField3025: String + inputField3026: String + inputField3027: String + inputField3028: String +} + +input InputObject683 { + inputField3029: String + inputField3030: Int! + inputField3031: Int +} + +input InputObject684 { + inputField3032: ID! + inputField3033: [ID!]! +} + +input InputObject685 { + inputField3034: Scalar10 + inputField3035: Boolean + inputField3036: ID! + inputField3037: Boolean + inputField3038: Scalar10 + inputField3039: Boolean + inputField3040: InputObject686 + inputField3043: ID! + inputField3044: Enum99! +} + +input InputObject686 { + inputField3041: Int + inputField3042: Int +} + +input InputObject687 { + inputField3045: String! + inputField3046: ID! +} + +input InputObject688 { + inputField3047: Scalar1! + inputField3048: String! +} + +input InputObject689 { + inputField3049: ID! + inputField3050: ID! +} + +input InputObject69 { + inputField207: String + inputField208: String + inputField209: String + inputField210: Int +} + +input InputObject690 { + inputField3051: ID! +} + +input InputObject691 { + inputField3052: InputObject692 + inputField3057: [ID!] + inputField3058: ID! + inputField3059: String! + inputField3060: [ID!] + inputField3061: [ID!] +} + +input InputObject692 { + inputField3053: Int! + inputField3054: Enum408! + inputField3055: ID! + inputField3056: Enum407! +} + +input InputObject693 { + inputField3062: [ID!] + inputField3063: InputObject694 + inputField3065: ID! + inputField3066: String! + inputField3067: [ID!] + inputField3068: [ID!] +} + +input InputObject694 { + inputField3064: Scalar4! +} + +input InputObject695 { + inputField3069: [ID!]! + inputField3070: InputObject696 + inputField3072: String + inputField3073: Enum166! + inputField3074: InputObject697 + inputField3076: String! + inputField3077: ID + inputField3078: InputObject698 + inputField3080: InputObject699 + inputField3083: InputObject700 + inputField3086: [ID!]! + inputField3087: Int + inputField3088: InputObject701 + inputField3090: ID! +} + +input InputObject696 { + inputField3071: ID! +} + +input InputObject697 { + inputField3075: ID! +} + +input InputObject698 { + inputField3079: ID! +} + +input InputObject699 { + inputField3081: ID! + inputField3082: ID +} + +input InputObject7 { + inputField12: [String] +} + +input InputObject70 { + inputField211: ID! + inputField212: String! +} + +input InputObject700 { + inputField3084: String + inputField3085: ID! +} + +input InputObject701 { + inputField3089: [ID!]! +} + +input InputObject702 { + inputField3091: String! + inputField3092: ID + inputField3093: ID! +} + +input InputObject703 { + inputField3094: [ID!]! + inputField3095: InputObject696 + inputField3096: String + inputField3097: Enum166! + inputField3098: InputObject697 + inputField3099: String! + inputField3100: ID + inputField3101: InputObject698 + inputField3102: InputObject699 + inputField3103: InputObject700 + inputField3104: [ID!]! + inputField3105: Int + inputField3106: InputObject701 + inputField3107: ID! +} + +input InputObject704 { + inputField3108: String! + inputField3109: Boolean = false + inputField3110: Int + inputField3111: ID! +} + +input InputObject705 { + inputField3112: InputObject706 + inputField3117: [ID!] + inputField3118: ID! + inputField3119: String! + inputField3120: [ID!] +} + +input InputObject706 { + inputField3113: Int! + inputField3114: Enum408! + inputField3115: ID! + inputField3116: Enum407! +} + +input InputObject707 { + inputField3121: ID! + inputField3122: ID! + inputField3123: ID! +} + +input InputObject708 { + inputField3124: String! + inputField3125: ID + inputField3126: ID! +} + +input InputObject709 { + inputField3127: String! +} + +input InputObject71 { + inputField213: [InputObject72!]! + inputField216: Int! +} + +input InputObject710 { + inputField3128: ID! +} + +input InputObject711 { + inputField3129: ID! +} + +input InputObject712 { + inputField3130: ID! +} + +input InputObject713 { + inputField3131: ID! +} + +input InputObject714 { + inputField3132: ID! +} + +input InputObject715 { + inputField3133: [ID!]! +} + +input InputObject716 { + inputField3134: ID! +} + +input InputObject717 { + inputField3135: ID! +} + +input InputObject718 { + inputField3136: ID! +} + +input InputObject719 { + inputField3137: ID! +} + +input InputObject72 { + inputField214: ID + inputField215: ID +} + +input InputObject720 { + inputField3138: ID! +} + +input InputObject721 { + inputField3139: [ID!]! +} + +input InputObject722 { + inputField3140: [ID!]! +} + +input InputObject723 { + inputField3141: ID! +} + +input InputObject724 { + inputField3142: ID! +} + +input InputObject725 { + inputField3143: [ID!]! + inputField3144: ID! +} + +input InputObject726 { + inputField3145: ID + inputField3146: ID + inputField3147: ID! + inputField3148: ID! +} + +input InputObject727 { + inputField3149: ID + inputField3150: ID! +} + +input InputObject728 { + inputField3151: ID + inputField3152: ID + inputField3153: ID! + inputField3154: ID! +} + +input InputObject729 { + inputField3155: ID + inputField3156: ID! +} + +input InputObject73 { + inputField217: Scalar8! + inputField218: [Scalar8]! +} + +input InputObject730 { + inputField3157: ID! +} + +input InputObject731 { + inputField3158: ID! + inputField3159: [ID!]! +} + +input InputObject732 { + inputField3160: InputObject692 + inputField3161: [ID!] + inputField3162: ID! + inputField3163: String! + inputField3164: [ID!] + inputField3165: [ID!] +} + +input InputObject733 { + inputField3166: [ID!] + inputField3167: InputObject694 + inputField3168: ID! + inputField3169: String! + inputField3170: [ID!] + inputField3171: [ID!] +} + +input InputObject734 { + inputField3172: [ID!]! + inputField3173: InputObject696 + inputField3174: ID! + inputField3175: String + inputField3176: Enum166! + inputField3177: InputObject697 + inputField3178: String! + inputField3179: InputObject698 + inputField3180: InputObject699 + inputField3181: InputObject700 + inputField3182: [ID!]! + inputField3183: InputObject701 +} + +input InputObject735 { + inputField3184: ID! + inputField3185: String! +} + +input InputObject736 { + inputField3186: [ID!]! + inputField3187: InputObject696 + inputField3188: ID! + inputField3189: String + inputField3190: Enum166! + inputField3191: InputObject697 + inputField3192: String! + inputField3193: InputObject698 + inputField3194: InputObject699 + inputField3195: InputObject700 + inputField3196: [ID!]! + inputField3197: InputObject701 +} + +input InputObject737 { + inputField3198: ID! + inputField3199: String! +} + +input InputObject738 { + inputField3200: InputObject706 + inputField3201: [ID!] + inputField3202: ID! + inputField3203: String! + inputField3204: [ID!] +} + +input InputObject739 { + inputField3205: ID! + inputField3206: String! +} + +input InputObject74 { + inputField219: InputObject75! + inputField263: Boolean! +} + +input InputObject740 { + inputField3207: ID! + inputField3208: String! +} + +input InputObject741 { + inputField3209: ID! +} + +input InputObject742 { + inputField3210: String! + inputField3211: ID! +} + +input InputObject743 { + inputField3212: [InputObject744!] + inputField3216: Boolean! + inputField3217: ID! +} + +input InputObject744 { + inputField3213: ID! + inputField3214: Enum416! + inputField3215: Enum410! +} + +input InputObject745 { + inputField3218: [InputObject746!] + inputField3222: Enum412 + inputField3223: [InputObject747!] + inputField3229: ID! + inputField3230: String + inputField3231: String + inputField3232: [InputObject748!] + inputField3241: [InputObject748!] +} + +input InputObject746 { + inputField3219: String! + inputField3220: String! + inputField3221: String! +} + +input InputObject747 { + inputField3224: String + inputField3225: [InputObject746!] + inputField3226: String! + inputField3227: Int + inputField3228: Enum413 +} + +input InputObject748 { + inputField3233: InputObject749 + inputField3236: String + inputField3237: Int + inputField3238: InputObject750 +} + +input InputObject749 { + inputField3234: Enum415! + inputField3235: ID +} + +input InputObject75 { + inputField220: [InputObject76] + inputField224: InputObject77 + inputField227: String! = "defaultValue321" + inputField228: Int + inputField229: InputObject78! + inputField232: String + inputField233: [String] + inputField234: [String] + inputField235: String! + inputField236: String + inputField237: [InputObject79] +} + +input InputObject750 { + inputField3239: Enum413! + inputField3240: Int +} + +input InputObject751 { + inputField3242: ID! + inputField3243: String! +} + +input InputObject752 { + inputField3244: [String!]! + inputField3245: ID! +} + +input InputObject753 { + inputField3246: [InputObject744!] + inputField3247: ID! +} + +input InputObject754 { + inputField3248: String! + inputField3249: Int! + inputField3250: String + inputField3251: [InputObject755!]! +} + +input InputObject755 { + inputField3252: InputObject756 + inputField3260: InputObject758 + inputField3264: InputObject759 + inputField3268: InputObject760 + inputField3272: InputObject761 + inputField3276: InputObject762 + inputField3280: InputObject763 + inputField3284: InputObject764 + inputField3288: InputObject765 + inputField3292: InputObject766 + inputField3296: InputObject767 + inputField3300: InputObject768 + inputField3304: InputObject769 + inputField3308: InputObject770 + inputField3312: InputObject771 + inputField3316: InputObject772 + inputField3320: InputObject773 + inputField3324: InputObject774 + inputField3328: InputObject775 + inputField3332: InputObject776 + inputField3336: InputObject777 +} + +input InputObject756 { + inputField3253: InputObject757! + inputField3258: String + inputField3259: Boolean! +} + +input InputObject757 { + inputField3254: String + inputField3255: [String!] + inputField3256: [String!] + inputField3257: String +} + +input InputObject758 { + inputField3261: InputObject757! + inputField3262: String + inputField3263: [Boolean!]! +} + +input InputObject759 { + inputField3265: InputObject757! + inputField3266: String + inputField3267: String! +} + +input InputObject76 { + inputField221: String + inputField222: String + inputField223: [String] +} + +input InputObject760 { + inputField3269: InputObject757! + inputField3270: String + inputField3271: String! +} + +input InputObject761 { + inputField3273: InputObject757! + inputField3274: String + inputField3275: [String!]! +} + +input InputObject762 { + inputField3277: InputObject757! + inputField3278: String + inputField3279: String! +} + +input InputObject763 { + inputField3281: InputObject757! + inputField3282: String + inputField3283: [String!]! +} + +input InputObject764 { + inputField3285: InputObject757! + inputField3286: String + inputField3287: Float! +} + +input InputObject765 { + inputField3289: InputObject757! + inputField3290: String + inputField3291: [Float!]! +} + +input InputObject766 { + inputField3293: InputObject757! + inputField3294: String + inputField3295: Int! +} + +input InputObject767 { + inputField3297: InputObject757! + inputField3298: String + inputField3299: [Int!]! +} + +input InputObject768 { + inputField3301: InputObject757! + inputField3302: String + inputField3303: String! +} + +input InputObject769 { + inputField3305: InputObject757! + inputField3306: String + inputField3307: [String!]! +} + +input InputObject77 { + inputField225: String + inputField226: String +} + +input InputObject770 { + inputField3309: InputObject757! + inputField3310: String + inputField3311: Scalar8! +} + +input InputObject771 { + inputField3313: InputObject757! + inputField3314: String + inputField3315: [Scalar8!]! +} + +input InputObject772 { + inputField3317: InputObject757! + inputField3318: String + inputField3319: String! +} + +input InputObject773 { + inputField3321: InputObject757! + inputField3322: String + inputField3323: [String!]! +} + +input InputObject774 { + inputField3325: InputObject757! + inputField3326: String + inputField3327: Scalar8! +} + +input InputObject775 { + inputField3329: InputObject757! + inputField3330: String + inputField3331: [Scalar8!]! +} + +input InputObject776 { + inputField3333: InputObject757! + inputField3334: String + inputField3335: Int! +} + +input InputObject777 { + inputField3337: InputObject757! + inputField3338: String + inputField3339: [Int!]! +} + +input InputObject778 { + inputField3340: Boolean! + inputField3341: [InputObject779!] + inputField3345: InputObject780 + inputField3362: ID + inputField3363: String + inputField3364: Enum421! + inputField3365: [InputObject785!] + inputField3373: Int +} + +input InputObject779 { + inputField3342: String + inputField3343: String + inputField3344: Enum195 +} + +input InputObject78 { + inputField230: String! + inputField231: String +} + +input InputObject780 { + inputField3346: Enum417 + inputField3347: Enum418 + inputField3348: Enum419 + inputField3349: Boolean + inputField3350: Boolean + inputField3351: [InputObject781!] + inputField3353: InputObject782 + inputField3356: Int + inputField3357: InputObject784 + inputField3360: Scalar4 + inputField3361: Enum420 +} + +input InputObject781 { + inputField3352: ID! +} + +input InputObject782 { + inputField3354: InputObject783 +} + +input InputObject783 { + inputField3355: ID! +} + +input InputObject784 { + inputField3358: Scalar5! + inputField3359: Scalar6! +} + +input InputObject785 { + inputField3366: InputObject784! + inputField3367: [InputObject779!] + inputField3368: String + inputField3369: ID + inputField3370: Boolean + inputField3371: Scalar4! + inputField3372: Int +} + +input InputObject786 { + inputField3374: ID! + inputField3375: Boolean! + inputField3376: String + inputField3377: Int! + inputField3378: Int! +} + +input InputObject787 { + inputField3379: Boolean + inputField3380: Enum423 + inputField3381: Enum424 + inputField3382: Int + inputField3383: Enum425 + inputField3384: String + inputField3385: Scalar5 + inputField3386: Enum426 + inputField3387: InputObject788 + inputField3390: ID + inputField3391: Scalar6 + inputField3392: Int + inputField3393: [InputObject789] + inputField3407: Scalar4 + inputField3408: ID + inputField3409: Boolean + inputField3410: Scalar4 + inputField3411: [ID!] + inputField3412: String + inputField3413: String + inputField3414: [InputObject782] + inputField3415: [InputObject790] + inputField3429: Enum434 + inputField3430: Enum435 + inputField3431: Scalar4 + inputField3432: [InputObject793] + inputField3448: Boolean + inputField3449: Enum439! + inputField3450: InputObject795 + inputField3453: Enum440 + inputField3454: Int +} + +input InputObject788 { + inputField3388: Scalar5 + inputField3389: Scalar5 +} + +input InputObject789 { + inputField3394: Scalar5 + inputField3395: Scalar5 + inputField3396: Scalar5 + inputField3397: Enum427 + inputField3398: Enum428 + inputField3399: Enum429 + inputField3400: Enum430 + inputField3401: Scalar5 + inputField3402: Boolean + inputField3403: String + inputField3404: Scalar5 + inputField3405: Scalar5 + inputField3406: Scalar5 +} + +input InputObject79 { + inputField238: [InputObject80] + inputField253: InputObject83 +} + +input InputObject790 { + inputField3416: Enum431 + inputField3417: Scalar4 + inputField3418: Enum432 + inputField3419: [InputObject791] + inputField3423: Int + inputField3424: Int + inputField3425: InputObject792 + inputField3428: Enum433 +} + +input InputObject791 { + inputField3420: Scalar5 + inputField3421: Int + inputField3422: Scalar5 +} + +input InputObject792 { + inputField3426: Int + inputField3427: Int +} + +input InputObject793 { + inputField3433: Enum436 + inputField3434: Int + inputField3435: Boolean + inputField3436: Boolean + inputField3437: Int + inputField3438: Scalar5 + inputField3439: Scalar5 + inputField3440: Scalar5 + inputField3441: [InputObject794] + inputField3446: Enum437 + inputField3447: Enum438 +} + +input InputObject794 { + inputField3442: Scalar5 + inputField3443: Scalar5 + inputField3444: Boolean + inputField3445: Int +} + +input InputObject795 { + inputField3451: Scalar4 + inputField3452: Scalar4 +} + +input InputObject796 { + inputField3455: String + inputField3456: Int + inputField3457: Int + inputField3458: String! + inputField3459: Enum441! + inputField3460: String! + inputField3461: String! + inputField3462: Int + inputField3463: Boolean! + inputField3464: String! + inputField3465: Enum442! + inputField3466: String + inputField3467: Int! + inputField3468: Int + inputField3469: [String!]! + inputField3470: Int! + inputField3471: Enum443! +} + +input InputObject797 { + inputField3472: [InputObject798!]! + inputField3476: ID! + inputField3477: [ID!]! +} + +input InputObject798 { + inputField3473: Enum265! + inputField3474: String! + inputField3475: String +} + +input InputObject799 { + inputField3478: Scalar18! + inputField3479: ID! +} + +input InputObject8 { + inputField13: Enum68 + inputField14: Enum68 + inputField15: Enum68 + inputField16: Enum68 + inputField17: Enum68 +} + +input InputObject80 { + inputField239: InputObject81 + inputField244: Enum197! + inputField245: [InputObject82] + inputField248: [InputObject81] + inputField249: InputObject81 + inputField250: Float + inputField251: Float + inputField252: Float +} + +input InputObject800 { + inputField3480: [InputObject801!]! + inputField3484: ID! + inputField3485: InputObject802 + inputField3491: [InputObject804!] + inputField3494: String! + inputField3495: String! +} + +input InputObject801 { + inputField3481: ID! + inputField3482: String + inputField3483: String +} + +input InputObject802 { + inputField3486: [InputObject803!] + inputField3490: Enum306! +} + +input InputObject803 { + inputField3487: ID! + inputField3488: Enum305! + inputField3489: [String]! +} + +input InputObject804 { + inputField3492: ID! + inputField3493: Enum307! +} + +input InputObject805 { + inputField3496: ID! + inputField3497: Scalar1 + inputField3498: Scalar4 + inputField3499: Scalar10 + inputField3500: Scalar19 + inputField3501: InputObject784 + inputField3502: Int + inputField3503: String + inputField3504: ID! + inputField3505: String + inputField3506: ID! + inputField3507: ID +} + +input InputObject806 { + inputField3508: ID! + inputField3509: String! + inputField3510: Enum266! +} + +input InputObject807 { + inputField3511: Int! + inputField3512: ID! +} + +input InputObject808 { + inputField3513: String! + inputField3514: String! +} + +input InputObject809 { + inputField3515: String! + inputField3516: String +} + +input InputObject81 { + inputField240: Enum197 + inputField241: Float + inputField242: Float + inputField243: Float +} + +input InputObject810 { + inputField3517: String + inputField3518: String! +} + +input InputObject811 { + inputField3519: String + inputField3520: String! +} + +input InputObject812 { + inputField3521: InputObject813 + inputField3524: ID! + inputField3525: String! + inputField3526: Int! +} + +input InputObject813 { + inputField3522: Float! + inputField3523: Float! +} + +input InputObject814 { + inputField3527: [InputObject815!] + inputField3530: [String!] + inputField3531: Int! + inputField3532: Enum352! + inputField3533: ID! + inputField3534: String! + inputField3535: String + inputField3536: [Enum398] +} + +input InputObject815 { + inputField3528: Enum445! + inputField3529: [String] +} + +input InputObject816 { + inputField3537: [InputObject817] + inputField3539: [InputObject818] + inputField3559: [InputObject824] + inputField3567: [InputObject826] + inputField3577: [InputObject829] + inputField3586: [InputObject831] + inputField3595: [InputObject833] +} + +input InputObject817 { + inputField3538: Enum446 +} + +input InputObject818 { + inputField3540: InputObject819 + inputField3544: InputObject820 + inputField3546: Scalar8 + inputField3547: InputObject821 + inputField3549: InputObject822 + inputField3557: InputObject823 +} + +input InputObject819 { + inputField3541: String + inputField3542: Boolean + inputField3543: Int +} + +input InputObject82 { + inputField246: Enum197 + inputField247: [InputObject81] +} + +input InputObject820 { + inputField3545: [Enum89] +} + +input InputObject821 { + inputField3548: Int +} + +input InputObject822 { + inputField3550: String! + inputField3551: Int! + inputField3552: String! + inputField3553: String! + inputField3554: String! + inputField3555: String! + inputField3556: String! +} + +input InputObject823 { + inputField3558: Enum101! +} + +input InputObject824 { + inputField3560: InputObject825 + inputField3563: Scalar8 + inputField3564: InputObject821 + inputField3565: InputObject822 + inputField3566: InputObject823 +} + +input InputObject825 { + inputField3561: String + inputField3562: Boolean +} + +input InputObject826 { + inputField3568: InputObject825 + inputField3569: InputObject827 + inputField3573: Scalar8 + inputField3574: InputObject821 + inputField3575: InputObject822 + inputField3576: InputObject823 +} + +input InputObject827 { + inputField3570: InputObject828 +} + +input InputObject828 { + inputField3571: String + inputField3572: String +} + +input InputObject829 { + inputField3578: InputObject819 + inputField3579: InputObject830 + inputField3582: Scalar8 + inputField3583: InputObject821 + inputField3584: InputObject822 + inputField3585: InputObject823 +} + +input InputObject83 { + inputField254: Scalar8 + inputField255: Scalar8 + inputField256: Scalar8 + inputField257: Int + inputField258: Int + inputField259: Scalar8 + inputField260: Scalar8 + inputField261: Enum198! + inputField262: Scalar8 +} + +input InputObject830 { + inputField3580: InputObject828 + inputField3581: [Enum89] +} + +input InputObject831 { + inputField3587: Scalar8! + inputField3588: InputObject832 + inputField3593: InputObject821 + inputField3594: InputObject822 +} + +input InputObject832 { + inputField3589: [String] + inputField3590: Enum88 + inputField3591: [Enum356] + inputField3592: [Enum357] +} + +input InputObject833 { + inputField3596: String + inputField3597: String + inputField3598: InputObject834 + inputField3600: Scalar8 + inputField3601: String + inputField3602: String + inputField3603: InputObject835 +} + +input InputObject834 { + inputField3599: InputObject828 +} + +input InputObject835 { + inputField3604: Enum103 +} + +input InputObject836 { + inputField3605: String + inputField3606: [String] + inputField3607: Scalar10 + inputField3608: Int + inputField3609: Int + inputField3610: Int + inputField3611: String + inputField3612: Scalar1 + inputField3613: Scalar10 + inputField3614: Scalar10 + inputField3615: Scalar1 + inputField3616: Int + inputField3617: String + inputField3618: Boolean + inputField3619: Boolean + inputField3620: Boolean + inputField3621: Boolean + inputField3622: String +} + +input InputObject837 { + inputField3623: Boolean +} + +input InputObject838 { + inputField3624: Int! + inputField3625: [Int!]! +} + +input InputObject839 { + inputField3626: Boolean + inputField3627: InputObject840 + inputField3641: Boolean + inputField3642: String + inputField3643: String + inputField3644: Int + inputField3645: String + inputField3646: Boolean + inputField3647: String + inputField3648: String + inputField3649: String + inputField3650: Scalar8 + inputField3651: Boolean + inputField3652: String + inputField3653: String + inputField3654: String + inputField3655: String + inputField3656: String + inputField3657: Int + inputField3658: String + inputField3659: Boolean + inputField3660: Enum105 + inputField3661: String + inputField3662: Boolean +} + +input InputObject84 { + inputField264: Boolean + inputField265: ID! + inputField266: String + inputField267: [String!] +} + +input InputObject840 { + inputField3628: [InputObject841] + inputField3631: InputObject828 + inputField3632: [Enum89] + inputField3633: InputObject842 + inputField3635: Boolean + inputField3636: [InputObject843] + inputField3639: Enum101 + inputField3640: Enum103 +} + +input InputObject841 { + inputField3629: [String] + inputField3630: Enum53 +} + +input InputObject842 { + inputField3634: Int +} + +input InputObject843 { + inputField3637: [String]! + inputField3638: Enum97! +} + +input InputObject844 { + inputField3663: Int! +} + +input InputObject845 { + inputField3664: ID! + inputField3665: Int! + inputField3666: [Enum398!] +} + +input InputObject846 { + inputField3667: String + inputField3668: Scalar1 + inputField3669: Enum75 + inputField3670: [Enum81] + inputField3671: Int + inputField3672: String + inputField3673: String + inputField3674: ID! + inputField3675: Int + inputField3676: Int + inputField3677: [Enum74] + inputField3678: String + inputField3679: String +} + +input InputObject847 { + inputField3680: String! + inputField3681: String! + inputField3682: ID! + inputField3683: String! + inputField3684: ID! +} + +input InputObject848 { + inputField3685: Int! + inputField3686: Int! + inputField3687: ID! + inputField3688: ID! +} + +input InputObject849 { + inputField3689: Scalar8! + inputField3690: InputObject310 +} + +input InputObject85 { + inputField268: [ID!]! + inputField269: String! + inputField270: [String!]! + inputField271: ID! +} + +input InputObject850 { + inputField3691: Scalar8! + inputField3692: Scalar8 + inputField3693: [InputObject851] +} + +input InputObject851 { + inputField3694: Scalar8! + inputField3695: Int! +} + +input InputObject852 { + inputField3696: [String] + inputField3697: [InputObject853] + inputField3700: Scalar8! + inputField3701: Scalar8 +} + +input InputObject853 { + inputField3698: Scalar8! + inputField3699: Int! +} + +input InputObject854 { + inputField3702: InputObject855 + inputField3705: InputObject856 + inputField3708: Scalar21 + inputField3709: Scalar22 + inputField3710: InputObject855 + inputField3711: Scalar23 + inputField3712: Scalar21 + inputField3713: Scalar21 + inputField3714: InputObject857 + inputField3717: InputObject858 + inputField3719: Scalar21 + inputField3720: Scalar22 + inputField3721: Scalar21 + inputField3722: InputObject859 + inputField3726: InputObject855 + inputField3727: InputObject860 + inputField3729: InputObject861 + inputField3733: InputObject856 + inputField3734: InputObject862 + inputField3737: Scalar24 + inputField3738: ID! + inputField3739: Scalar21 +} + +input InputObject855 { + inputField3703: [String!] + inputField3704: [String!] +} + +input InputObject856 { + inputField3706: [ID!] + inputField3707: [ID!] +} + +input InputObject857 { + inputField3715: InputObject855 + inputField3716: InputObject855 +} + +input InputObject858 { + inputField3718: Scalar22 +} + +input InputObject859 { + inputField3723: Scalar22 + inputField3724: Scalar21 + inputField3725: Enum177! +} + +input InputObject86 { + inputField272: ID! + inputField273: [InputObject87!] +} + +input InputObject860 { + inputField3728: Scalar22 +} + +input InputObject861 { + inputField3730: Enum181! + inputField3731: Enum182 + inputField3732: Scalar21 +} + +input InputObject862 { + inputField3735: [Enum183!] + inputField3736: [Enum183!] +} + +input InputObject863 { + inputField3740: [InputObject864!]! + inputField3749: String! + inputField3750: Enum447! +} + +input InputObject864 { + inputField3741: ID + inputField3742: [InputObject865] + inputField3747: String + inputField3748: [String] +} + +input InputObject865 { + inputField3743: ID! + inputField3744: Boolean + inputField3745: [String!]! + inputField3746: String! +} + +input InputObject866 { + inputField3751: String! + inputField3752: Enum447! + inputField3753: [InputObject867!]! +} + +input InputObject867 { + inputField3754: ID! + inputField3755: Enum51! +} + +input InputObject868 { + inputField3756: [String!]! + inputField3757: String! + inputField3758: Enum447! +} + +input InputObject869 { + inputField3759: String! + inputField3760: Enum447! + inputField3761: [String!]! +} + +input InputObject87 { + inputField274: String! + inputField275: Scalar1 + inputField276: ID + inputField277: ID! +} + +input InputObject870 { + inputField3762: ID! + inputField3763: String! + inputField3764: Enum447! + inputField3765: [String!]! +} + +input InputObject871 { + inputField3766: [String] + inputField3767: Scalar8 +} + +input InputObject872 { + inputField3768: String + inputField3769: Boolean + inputField3770: Scalar8 + inputField3771: String + inputField3772: String +} + +input InputObject873 { + inputField3773: InputObject839 + inputField3774: InputObject874 +} + +input InputObject874 { + inputField3775: String + inputField3776: Enum105 + inputField3777: String + inputField3778: String + inputField3779: String +} + +input InputObject875 { + inputField3780: ID! + inputField3781: ID! +} + +input InputObject876 { + inputField3782: ID! + inputField3783: Scalar5 + inputField3784: Scalar5 + inputField3785: String! + inputField3786: String +} + +input InputObject877 { + inputField3787: [InputObject878!] + inputField3789: [InputObject879!] + inputField3791: String! + inputField3792: String + inputField3793: ID! + inputField3794: String +} + +input InputObject878 { + inputField3788: ID! +} + +input InputObject879 { + inputField3790: ID! +} + +input InputObject88 { + inputField278: [ID!] + inputField279: [InputObject89!] + inputField282: String! +} + +input InputObject880 { + inputField3795: ID! + inputField3796: String + inputField3797: Enum313! +} + +input InputObject881 { + inputField3798: String + inputField3799: ID! + inputField3800: InputObject882 + inputField3816: Enum313! + inputField3817: String +} + +input InputObject882 { + inputField3801: Scalar5 + inputField3802: Scalar5 + inputField3803: Scalar5 + inputField3804: Int + inputField3805: Int + inputField3806: Int + inputField3807: Int + inputField3808: Int + inputField3809: Int + inputField3810: Int + inputField3811: Int + inputField3812: Int + inputField3813: Int + inputField3814: Int + inputField3815: Int +} + +input InputObject883 { + inputField3818: String! + inputField3819: String + inputField3820: ID! + inputField3821: [ID!] +} + +input InputObject884 { + inputField3822: [ID!] + inputField3823: ID! + inputField3824: Enum313! +} + +input InputObject885 { + inputField3825: Boolean! + inputField3826: [ID!]! + inputField3827: ID! +} + +input InputObject886 { + inputField3828: String + inputField3829: Enum190! + inputField3830: String + inputField3831: Int! + inputField3832: Enum449! + inputField3833: Scalar5! + inputField3834: String + inputField3835: String +} + +input InputObject887 { + inputField3836: String + inputField3837: String! + inputField3838: Enum450! + inputField3839: String + inputField3840: String! + inputField3841: String + inputField3842: String! + inputField3843: String! + inputField3844: String + inputField3845: ID! +} + +input InputObject888 { + inputField3846: Enum190! + inputField3847: Enum451! + inputField3848: Scalar5! + inputField3849: Scalar5! + inputField3850: Scalar5! + inputField3851: Scalar5! + inputField3852: Scalar5! + inputField3853: String + inputField3854: ID! + inputField3855: Scalar5! + inputField3856: Enum190! + inputField3857: Enum190! + inputField3858: Scalar5! + inputField3859: [String!]! + inputField3860: ID! +} + +input InputObject889 { + inputField3861: String + inputField3862: String + inputField3863: String! + inputField3864: Enum450! + inputField3865: String + inputField3866: String! + inputField3867: String + inputField3868: String! + inputField3869: String! + inputField3870: String + inputField3871: ID! +} + +input InputObject89 { + inputField280: String! + inputField281: ID! +} + +input InputObject890 { + inputField3872: String + inputField3873: String + inputField3874: String! + inputField3875: String + inputField3876: ID! + inputField3877: String + inputField3878: String + inputField3879: Int! + inputField3880: String! + inputField3881: Int +} + +input InputObject891 { + inputField3882: String! + inputField3883: Int! + inputField3884: String! +} + +input InputObject892 { + inputField3885: String! + inputField3886: [String!]! + inputField3887: ID! +} + +input InputObject893 { + inputField3888: Enum451! + inputField3889: String! + inputField3890: Scalar5! + inputField3891: Enum190! + inputField3892: Enum190! + inputField3893: Enum190! + inputField3894: String! + inputField3895: ID! +} + +input InputObject894 { + inputField3896: Enum191! + inputField3897: String +} + +input InputObject895 { + inputField3898: Scalar5 + inputField3899: String + inputField3900: Scalar5 + inputField3901: Scalar5 + inputField3902: Scalar5 + inputField3903: Scalar5 + inputField3904: Scalar5 + inputField3905: Scalar5 + inputField3906: Scalar5 + inputField3907: Scalar5 + inputField3908: Scalar5 + inputField3909: Scalar5 + inputField3910: Scalar5 + inputField3911: Scalar5 + inputField3912: Scalar5 + inputField3913: Scalar5 + inputField3914: ID! + inputField3915: String + inputField3916: String +} + +input InputObject896 { + inputField3917: [InputObject878!] + inputField3918: [InputObject879!] + inputField3919: ID! + inputField3920: String! + inputField3921: String + inputField3922: String +} + +input InputObject897 { + inputField3923: Scalar5 + inputField3924: Scalar5 + inputField3925: ID! + inputField3926: String! + inputField3927: String +} + +input InputObject898 { + inputField3928: String + inputField3929: Enum190! + inputField3930: String + inputField3931: Int! + inputField3932: Enum449! + inputField3933: Scalar5! + inputField3934: ID! + inputField3935: String + inputField3936: String +} + +input InputObject899 { + inputField3937: String + inputField3938: String! + inputField3939: Enum450! + inputField3940: String + inputField3941: String! + inputField3942: String + inputField3943: String! + inputField3944: String! + inputField3945: ID! + inputField3946: String + inputField3947: ID! +} + +input InputObject9 { + inputField18: Boolean +} + +input InputObject90 { + inputField283: String! + inputField284: String! + inputField285: String! + inputField286: String +} + +input InputObject900 { + inputField3948: Enum190! + inputField3949: Enum451! + inputField3950: Scalar5! + inputField3951: Scalar5! + inputField3952: Scalar5! + inputField3953: Scalar5! + inputField3954: Scalar5! + inputField3955: ID! + inputField3956: String! + inputField3957: Scalar5! + inputField3958: Enum190! + inputField3959: Enum190! + inputField3960: Scalar5! + inputField3961: [String!]! +} + +input InputObject901 { + inputField3962: String + inputField3963: ID! +} + +input InputObject902 { + inputField3964: String + inputField3965: Scalar1 + inputField3966: ID! + inputField3967: InputObject882! + inputField3968: String +} + +input InputObject903 { + inputField3969: String + inputField3970: String + inputField3971: String! + inputField3972: Enum450! + inputField3973: String + inputField3974: String! + inputField3975: String + inputField3976: String! + inputField3977: String! + inputField3978: ID! + inputField3979: String +} + +input InputObject904 { + inputField3980: String + inputField3981: String + inputField3982: ID! + inputField3983: String! + inputField3984: String + inputField3985: ID! + inputField3986: String + inputField3987: String + inputField3988: Int! + inputField3989: String! + inputField3990: Int +} + +input InputObject905 { + inputField3991: ID! + inputField3992: String! + inputField3993: [String!]! + inputField3994: ID! +} + +input InputObject906 { + inputField3995: Enum451! + inputField3996: ID! + inputField3997: String! + inputField3998: Scalar5! + inputField3999: Enum190! + inputField4000: Enum190! + inputField4001: Enum190! + inputField4002: String! + inputField4003: ID! +} + +input InputObject907 { + inputField4004: InputObject908 + inputField4007: String + inputField4008: Enum455! + inputField4009: Int + inputField4010: InputObject909 +} + +input InputObject908 { + inputField4005: Scalar5 + inputField4006: Scalar6 +} + +input InputObject909 { + inputField4011: Int! + inputField4012: Int! + inputField4013: Int! + inputField4014: String! + inputField4015: String + inputField4016: Int! + inputField4017: Int! + inputField4018: Int! +} + +input InputObject91 { + inputField287: ID! + inputField288: InputObject92! + inputField306: InputObject95! + inputField308: InputObject96 +} + +input InputObject910 { + inputField4019: Scalar6 + inputField4020: String + inputField4021: ID! + inputField4022: Enum456 + inputField4023: String +} + +input InputObject911 { + inputField4024: InputObject908 + inputField4025: String + inputField4026: Enum455 + inputField4027: Int + inputField4028: InputObject912 +} + +input InputObject912 { + inputField4029: Int + inputField4030: Int + inputField4031: Int + inputField4032: String + inputField4033: String + inputField4034: Int + inputField4035: Int + inputField4036: Int +} + +input InputObject913 { + inputField4037: Scalar6 + inputField4038: Enum456 + inputField4039: String +} + +input InputObject914 { + inputField4040: ID! + inputField4041: Enum457! + inputField4042: InputObject915 + inputField4065: InputObject917 + inputField4082: InputObject918 + inputField4101: InputObject919 +} + +input InputObject915 { + inputField4043: Boolean + inputField4044: [String!] + inputField4045: String + inputField4046: [String!] + inputField4047: String + inputField4048: String + inputField4049: [InputObject916!]! + inputField4053: InputObject916 + inputField4054: ID! + inputField4055: String! + inputField4056: Int + inputField4057: Int + inputField4058: String! + inputField4059: String! + inputField4060: [String!] + inputField4061: String + inputField4062: Boolean + inputField4063: [String!] + inputField4064: String +} + +input InputObject916 { + inputField4050: String + inputField4051: ID! + inputField4052: String! +} + +input InputObject917 { + inputField4066: [String!] + inputField4067: String + inputField4068: [String!] + inputField4069: String + inputField4070: String + inputField4071: ID! + inputField4072: String! + inputField4073: Int + inputField4074: Int + inputField4075: String! + inputField4076: String! + inputField4077: [String!] + inputField4078: String + inputField4079: Boolean + inputField4080: [String!] + inputField4081: String +} + +input InputObject918 { + inputField4083: [String!] + inputField4084: String + inputField4085: [String!] + inputField4086: String + inputField4087: String + inputField4088: ID! + inputField4089: String! + inputField4090: Int + inputField4091: Int + inputField4092: String! + inputField4093: String! + inputField4094: [String!] + inputField4095: String + inputField4096: String + inputField4097: String + inputField4098: Boolean + inputField4099: [String!] + inputField4100: String +} + +input InputObject919 { + inputField4102: [String!] + inputField4103: String + inputField4104: [String!] + inputField4105: String + inputField4106: String + inputField4107: ID! + inputField4108: String! + inputField4109: Int + inputField4110: Int + inputField4111: Int + inputField4112: Int + inputField4113: String! + inputField4114: String! + inputField4115: [String!] + inputField4116: String + inputField4117: String + inputField4118: String + inputField4119: Boolean + inputField4120: [String!] + inputField4121: String +} + +input InputObject92 { + inputField289: String! + inputField290: String! + inputField291: [String] + inputField292: ID + inputField293: InputObject93! + inputField305: Enum296! +} + +input InputObject920 { + inputField4122: InputObject921! + inputField4125: ID! +} + +input InputObject921 { + inputField4123: String! + inputField4124: String +} + +input InputObject922 { + inputField4126: InputObject317! + inputField4127: ID! +} + +input InputObject923 { + inputField4128: InputObject924 + inputField4146: [ID!] + inputField4147: [InputObject930!] + inputField4159: ID! + inputField4160: ID! +} + +input InputObject924 { + inputField4129: [InputObject925!] + inputField4133: [InputObject926!] + inputField4136: [InputObject927!] + inputField4139: [String!] + inputField4140: [InputObject928!] + inputField4143: [InputObject929!] +} + +input InputObject925 { + inputField4130: ID! + inputField4131: [ID!]! + inputField4132: String +} + +input InputObject926 { + inputField4134: ID! + inputField4135: Int! +} + +input InputObject927 { + inputField4137: String! + inputField4138: String! +} + +input InputObject928 { + inputField4141: ID! + inputField4142: String! +} + +input InputObject929 { + inputField4144: ID! + inputField4145: [String!]! +} + +input InputObject93 { + inputField294: Int + inputField295: Int + inputField296: String + inputField297: Int + inputField298: [InputObject94] + inputField301: Enum323 + inputField302: Int + inputField303: Float + inputField304: Float +} + +input InputObject930 { + inputField4148: InputObject931 + inputField4151: ID + inputField4152: Boolean + inputField4153: Boolean + inputField4154: String + inputField4155: ID! + inputField4156: Enum179! + inputField4157: Enum180 + inputField4158: Enum178 +} + +input InputObject931 { + inputField4149: [InputObject927!] + inputField4150: [String!] +} + +input InputObject932 { + inputField4161: InputObject930! + inputField4162: ID! +} + +input InputObject933 { + inputField4163: ID! + inputField4164: InputObject934! +} + +input InputObject934 { + inputField4165: [ID!] + inputField4166: Float + inputField4167: String + inputField4168: InputObject935 + inputField4172: String + inputField4173: String + inputField4174: String + inputField4175: InputObject935 + inputField4176: Enum173 + inputField4177: Boolean + inputField4178: String + inputField4179: String + inputField4180: String + inputField4181: Int + inputField4182: Enum174! + inputField4183: String + inputField4184: String + inputField4185: [ID!]! + inputField4186: String +} + +input InputObject935 { + inputField4169: Float + inputField4170: Float + inputField4171: Float +} + +input InputObject936 { + inputField4187: [InputObject937!]! + inputField4192: ID! +} + +input InputObject937 { + inputField4188: String + inputField4189: String! + inputField4190: Int + inputField4191: Enum171 +} + +input InputObject938 { + inputField4193: [InputObject937!]! + inputField4194: Boolean + inputField4195: ID! +} + +input InputObject939 { + inputField4196: [ID!] + inputField4197: String + inputField4198: [InputObject940!] + inputField4201: String! + inputField4202: [InputObject941!] + inputField4205: Boolean + inputField4206: String + inputField4207: ID! +} + +input InputObject94 { + inputField299: Float! + inputField300: Float! +} + +input InputObject940 { + inputField4199: String! + inputField4200: String! +} + +input InputObject941 { + inputField4203: String! + inputField4204: String! +} + +input InputObject942 { + inputField4208: [ID!] + inputField4209: String + inputField4210: Boolean + inputField4211: String + inputField4212: ID! + inputField4213: ID! +} + +input InputObject943 { + inputField4214: [ID!]! +} + +input InputObject944 { + inputField4215: ID! +} + +input InputObject945 { + inputField4216: Boolean! + inputField4217: String + inputField4218: String + inputField4219: [ID!] +} + +input InputObject946 { + inputField4220: ID! +} + +input InputObject947 { + inputField4221: ID! +} + +input InputObject948 { + inputField4222: ID! +} + +input InputObject949 { + inputField4223: ID! +} + +input InputObject95 { + inputField307: Int! +} + +input InputObject950 { + inputField4224: ID! +} + +input InputObject951 { + inputField4225: ID! + inputField4226: ID! +} + +input InputObject952 { + inputField4227: Boolean! + inputField4228: String! + inputField4229: String! + inputField4230: [ID!] +} + +input InputObject953 { + inputField4231: Scalar21 + inputField4232: ID! + inputField4233: Scalar24 + inputField4234: Enum171 +} + +input InputObject954 { + inputField4235: ID! + inputField4236: Scalar21! + inputField4237: Scalar21 +} + +input InputObject955 { + inputField4238: InputObject956 + inputField4245: ID! + inputField4246: Scalar26 + inputField4247: InputObject856 + inputField4248: Scalar26 + inputField4249: Scalar21 + inputField4250: Scalar21 + inputField4251: Scalar22 + inputField4252: Scalar21 + inputField4253: Scalar21 + inputField4254: Enum175 +} + +input InputObject956 { + inputField4239: Scalar21 + inputField4240: Scalar25 + inputField4241: Scalar21 + inputField4242: Scalar21 + inputField4243: Scalar21 + inputField4244: Scalar21 +} + +input InputObject957 { + inputField4255: InputObject958 + inputField4285: ID! + inputField4286: InputObject856 + inputField4287: ID +} + +input InputObject958 { + inputField4256: InputObject959 + inputField4263: InputObject961 + inputField4269: InputObject963 + inputField4272: InputObject855 + inputField4273: InputObject964 + inputField4279: InputObject966 +} + +input InputObject959 { + inputField4257: [InputObject925!] + inputField4258: [ID!] + inputField4259: [InputObject960!] +} + +input InputObject96 { + inputField309: ID + inputField310: Enum322 + inputField311: String + inputField312: [String] + inputField313: String + inputField314: String +} + +input InputObject960 { + inputField4260: ID! + inputField4261: InputObject856 + inputField4262: Scalar21 +} + +input InputObject961 { + inputField4264: [InputObject926!] + inputField4265: [ID!] + inputField4266: [InputObject962!] +} + +input InputObject962 { + inputField4267: ID! + inputField4268: Int! +} + +input InputObject963 { + inputField4270: [InputObject927!] + inputField4271: [InputObject927!] +} + +input InputObject964 { + inputField4274: [InputObject928!] + inputField4275: [ID!] + inputField4276: [InputObject965!] +} + +input InputObject965 { + inputField4277: ID! + inputField4278: String! +} + +input InputObject966 { + inputField4280: [InputObject929!] + inputField4281: [ID!] + inputField4282: [InputObject967!] +} + +input InputObject967 { + inputField4283: ID! + inputField4284: InputObject855! +} + +input InputObject968 { + inputField4288: InputObject969 + inputField4291: Scalar27 + inputField4292: Scalar22 + inputField4293: ID! + inputField4294: Scalar22 + inputField4295: Scalar21 + inputField4296: Scalar27 + inputField4297: Enum179 + inputField4298: Enum180 + inputField4299: Enum178 +} + +input InputObject969 { + inputField4289: InputObject963 + inputField4290: InputObject855 +} + +input InputObject97 { + inputField315: [InputObject98!]! +} + +input InputObject970 { + inputField4300: InputObject856 + inputField4301: Scalar26 + inputField4302: Scalar21 + inputField4303: InputObject971 + inputField4307: Scalar21 + inputField4308: Scalar21 + inputField4309: Scalar21 + inputField4310: InputObject971 + inputField4311: ID! + inputField4312: Enum173 + inputField4313: Scalar22 + inputField4314: Scalar21 + inputField4315: Scalar21 + inputField4316: Scalar21 + inputField4317: Scalar24 + inputField4318: Enum174 + inputField4319: Scalar21 + inputField4320: Scalar21 + inputField4321: InputObject856 + inputField4322: Scalar21 +} + +input InputObject971 { + inputField4304: Scalar26 + inputField4305: Scalar26 + inputField4306: Scalar26 +} + +input InputObject972 { + inputField4323: Enum458 + inputField4324: ID! + inputField4325: Boolean! +} + +input InputObject973 { + inputField4326: ID! + inputField4327: ID! + inputField4328: [ID!]! +} + +input InputObject974 { + inputField4329: [InputObject975!]! + inputField4332: [ID!]! +} + +input InputObject975 { + inputField4330: ID! + inputField4331: Int! +} + +input InputObject976 { + inputField4333: [InputObject977!]! + inputField4336: ID! +} + +input InputObject977 { + inputField4334: InputObject975! + inputField4335: Enum459 +} + +input InputObject978 { + inputField4337: ID! + inputField4338: ID! +} + +input InputObject979 { + inputField4339: [ID!]! + inputField4340: ID! +} + +input InputObject98 { + inputField316: ID! + inputField317: [String!] + inputField318: ID! + inputField319: Enum321 +} + +input InputObject980 { + inputField4341: [ID!]! + inputField4342: ID! +} + +input InputObject981 { + inputField4343: [ID!]! + inputField4344: [ID!]! +} + +input InputObject982 { + inputField4345: InputObject975! + inputField4346: Int! + inputField4347: ID! +} + +input InputObject983 { + inputField4348: Enum120! + inputField4349: ID! + inputField4350: Int! + inputField4351: String + inputField4352: String! + inputField4353: [ID] + inputField4354: [ID] + inputField4355: ID! +} + +input InputObject984 { + inputField4356: Enum120! + inputField4357: String + inputField4358: String! + inputField4359: [ID] + inputField4360: InputObject985! + inputField4363: [ID] + inputField4364: ID! +} + +input InputObject985 { + inputField4361: Enum126! + inputField4362: Int! +} + +input InputObject986 { + inputField4365: Scalar1! + inputField4366: String + inputField4367: String! + inputField4368: String + inputField4369: ID! +} + +input InputObject987 { + inputField4370: String! + inputField4371: ID! + inputField4372: String! +} + +input InputObject988 { + inputField4373: InputObject975 + inputField4374: [InputObject977!] + inputField4375: ID! + inputField4376: String + inputField4377: Enum125! + inputField4378: ID! +} + +input InputObject989 { + inputField4379: Enum114! + inputField4380: [ID] + inputField4381: ID! + inputField4382: String! + inputField4383: String + inputField4384: [ID] +} + +input InputObject99 { + inputField320: [InputObject100!]! + inputField323: ID! + inputField324: ID + inputField325: [ID!]! + inputField326: Scalar1 + inputField327: Scalar1 + inputField328: Enum204! + inputField329: Enum200! +} + +input InputObject990 { + inputField4385: ID! + inputField4386: ID! +} + +input InputObject991 { + inputField4387: String! + inputField4388: ID! +} + +input InputObject992 { + inputField4389: [InputObject975]! + inputField4390: String + inputField4391: ID! +} + +input InputObject993 { + inputField4392: [InputObject975]! + inputField4393: ID! +} + +input InputObject994 { + inputField4394: String! + inputField4395: ID! +} + +input InputObject995 { + inputField4396: ID! + inputField4397: ID! +} + +input InputObject996 { + inputField4398: ID! + inputField4399: ID! +} + +input InputObject997 { + inputField4400: ID! + inputField4401: ID! +} + +input InputObject998 { + inputField4402: String + inputField4403: ID! +} + +input InputObject999 { + inputField4404: Enum120 + inputField4405: ID! + inputField4406: String + inputField4407: String + inputField4408: [ID] + inputField4409: [ID] + inputField4410: ID! +} diff --git a/src/test/resources/large-schema-4-query.graphql b/src/test/resources/large-schema-4-query.graphql new file mode 100644 index 0000000000..0719dbdb2d --- /dev/null +++ b/src/test/resources/large-schema-4-query.graphql @@ -0,0 +1 @@ +query operation($var2:InputObject1399,$var3:InputObject50,$var1:String,$var4:Boolean,$var7:Boolean,$var6:Boolean,$var5:Enum308) {field29531 {__typename field30371 @Directive23(argument63:$var1) {__typename field30372(argument1566:$var2,argument1567:$var3) {__typename ...Fragment1 ...Fragment71 field2616 {__typename field2621 {__typename ...Fragment87}} field8329 {__typename ...Fragment268} field8330 {__typename ...Fragment271} field17373 field17374 {__typename ...Fragment272 field17376 {__typename ... on Object3570 {field16286 {__typename field2621 {__typename ...Fragment87}}}}}}}}} fragment Fragment61 on Object820 {__typename field4783 field4784 field4785 field4786 field4787 field4791 {__typename ...Fragment6}} fragment Fragment5 on Object481 {__typename field2667 field2666 {__typename field2652} field2668 {__typename ... on Object453 {field2495}} field2669 {__typename ...Fragment6}} fragment Fragment24 on Object389 {__typename field4 {__typename ...Fragment3} field74 field75 field2249} fragment Fragment272 on Object3988 {__typename field17375 {__typename field16278 field16279 ... on Object3569 {field16280 field16281 field16282 field16283 field16284 {__typename ...Fragment66}}} field17376 {__typename field16285 ... on Object3570 {field16286 {__typename ...Fragment2}}}} fragment Fragment64 on Object1532 {__typename field8315 field8316 field8318 {__typename field8319 field8320 field8321 field8322} field8327 {__typename field8328 {__typename field8312 field8313}}} fragment Fragment2 on Object474 {__typename field2617 field2618 field2620 field2619 field8309 {__typename field2519 field2520} field8301 field8305 field8303 field8306 {__typename ...Fragment3} field8311 {__typename field8312 field8313} field8310 {__typename field8054 field8055}} fragment Fragment89 on Object509 {__typename field2846 field2847 {__typename ...Fragment42} field2848 {__typename ...Fragment42}} fragment Fragment68 on Object504 {__typename field2799 field2800 field2801 field2802 field2803 field2804 field2805 field2806 field2807 field2808 field2809} fragment Fragment261 on Object509 {__typename field2846 field2847 {__typename ...Fragment42} field2848 {__typename ...Fragment42 field2491 {__typename ... on Object397 {field2287 field2288 field2289 field2292 field2291 field2265 {__typename ...Fragment96}}}}} fragment Fragment59 on Object480 {__typename field2652 field2648 field2649 field2655 {__typename ...Fragment3} field2661 {__typename ...Fragment6}} fragment Fragment47 on Object10 {__typename field89 field90 field91 {__typename field92} field88 field101} fragment Fragment7 on Interface3 {__typename ...Fragment8 ...Fragment9 ...Fragment10 ...Fragment11 ...Fragment12 ...Fragment13 ...Fragment14} fragment Fragment4 on Union93 {__typename ...Fragment5 ...Fragment36 ...Fragment38 ...Fragment40 ...Fragment43 ...Fragment44 ...Fragment54 ...Fragment55 ...Fragment56 ...Fragment60 ...Fragment61 ...Fragment62} fragment Fragment141 on Object952 {__typename field5549 {__typename ...Fragment121} field5550 {__typename ...Fragment121}} fragment Fragment13 on Object1583 {__typename field4 {__typename ...Fragment3} field74} fragment Fragment25 on Object1584 {__typename field4 {__typename ...Fragment3} field74 field75} fragment Fragment16 on Object1585 {__typename field4 {__typename ...Fragment3} field74 field75} fragment Fragment67 on Object506 {__typename field2822 field2823 field2824 {__typename ...Fragment47} field2827 field2828} fragment Fragment37 on Interface64 {__typename field4799 field4800 field4801 field4802 field4803 field4804 field4805 field4806} fragment Fragment36 on Object822 {__typename ...Fragment37 field4807 {__typename ...Fragment6} field4808 {__typename ...Fragment6} field4809 field4810} fragment Fragment39 on Interface67 {__typename field4811 field4812 field4813 field4814 field4815} fragment Fragment38 on Object823 {__typename ...Fragment39 field4817 field4818 field4816 {__typename ...Fragment6}} fragment Fragment40 on Object824 {__typename field4819 {__typename ...Fragment41 field4821 field4822 {__typename ...Fragment6} field2511 field4823 {__typename ...Fragment42}}} fragment Fragment41 on Interface70 {__typename field76 field77 field2508 field4820} fragment Fragment78 on Object1769 {__typename field8969 alias1:field8971} fragment Fragment83 on Object1770 {__typename field120 field8972} fragment Fragment77 on Object1771 {__typename field8973 field8974 {__typename ...Fragment78} field8975 {__typename ...Fragment78} field8976 {__typename ...Fragment78}} fragment Fragment124 on Object585 {__typename field3222 field3223 {__typename ...Fragment47} field3224 {__typename ...Fragment107}} fragment Fragment121 on Object596 {__typename field3278 {__typename ...Fragment122} field3279 {__typename ...Fragment123} field3282 {__typename ...Fragment114} field3283 {__typename ...Fragment124} field3284 {__typename ...Fragment124}} fragment Fragment114 on Object598 {__typename field3197 {__typename field3198 field3199} field3200 {__typename field3201 field3202} field3203 {__typename ...Fragment112} field3210 {__typename field3211 {__typename field3205 field3206} field3212 {__typename field3205 field3206}}} fragment Fragment105 on Object576 {__typename field3228 {__typename field3229 {__typename ...Fragment106} field3230 {__typename ...Fragment107}} field3192 {__typename ...Fragment106} field3215 {__typename field3218 field3219 {__typename ...Fragment107} field3216} field3232 {__typename field3233 {__typename ...Fragment113} field3270 {__typename ...Fragment107}} field3191} fragment Fragment107 on Object578 {__typename field3200 {__typename ...Fragment108} field3197 {__typename ...Fragment109} field3213 field3210 {__typename ...Fragment110} field3203 {__typename ...Fragment112}} fragment Fragment106 on Object577 {__typename field3195 field3193 field3196 {__typename ...Fragment107} field3214 field3194} fragment Fragment150 on Object964 {__typename field5621 field5620} fragment Fragment149 on Object963 {__typename field5619 {__typename ...Fragment150} field5622 {__typename ...Fragment150} field5623 {__typename ...Fragment150}} fragment Fragment122 on Object595 {__typename field3276 {__typename ...Fragment51} field3275} fragment Fragment51 on Object450 {__typename field2474 {__typename ...Fragment47} field2475 {__typename ...Fragment52} field2483} fragment Fragment123 on Object597 {__typename field3280 {__typename ...Fragment47} field3281 {__typename ...Fragment112}} fragment Fragment90 on Object839 {__typename field4874 field4882 {__typename field4876 field4880 field4879 field4877 field4881 field4878} field4883 {__typename field2850 field2849 {__typename ... on Object433 {field2424 field2423 field2431 field2430} ... on Object432 {field2424 field2423 field2426 field2427 field2428 field2429 field2425 {__typename ... on Object434 {field1 field2434 field2432 field2433} ... on Object420 {field1 field2319 field2320 field2321 field2322 field2422 field2323 {__typename ...Fragment91}} ... on Object435 {field1 field2432 field2433 field2422 field2323 {__typename ...Fragment91}}}}}}} fragment Fragment228 on Object1277 {__typename field7123 {__typename ...Fragment229} field7120 {__typename field7122 {__typename field4279 field4280} field7121}} fragment Fragment254 on Object884 {__typename field5112 field5113 field5117 field5114 field5118 field5119 field5120 field5115} fragment Fragment97 on Object895 {__typename field5222 field5223 field5224 {__typename ...Fragment8} field5225} fragment Fragment140 on Object951 {__typename field5548 {__typename ...Fragment141} field5551 {__typename ...Fragment141} field5552 {__typename ...Fragment141}} fragment Fragment130 on Object953 {__typename field5556 field5555} fragment Fragment148 on Object972 {__typename field5661 {__typename ...Fragment121} field5664 {__typename field3195 field3193 field3196 {__typename ...Fragment107} field3214 field3194} field5663 {__typename ...Fragment105} field5662 {__typename ...Fragment123} field5660 {__typename ...Fragment121} field5659 {__typename ...Fragment121}} fragment Fragment147 on Object970 {__typename field5669 {__typename ...Fragment7 field75 field74 ... on Object3358 {field75 field74 field2265 {__typename ...Fragment96}}} field5657 {__typename field5666 {__typename ...Fragment148} field5665 {__typename ...Fragment148} field5658 {__typename ...Fragment148}} field5668} fragment Fragment231 on Object1279 {__typename field7124 {__typename field4587 field4588 {__typename field4589 {__typename field4603 field4604} field4616 {__typename field81 field3257}} field4624 field4625 field4626 field4627 field4630 field4632 field4638 field4649 {__typename field4650 field4651 field4652} field4653 field4655 field4656 field4658 field4659 field4660 field4662 {__typename field4590 field4592 field4598 field4599 field4602 field4603 field4604 field4614 field4615} field4663 {__typename field4603 field4604} field4670 field4672 field4675 field4678 field4679 field4681 field4682 {__typename field4683 field4684 field4685}}} fragment Fragment98 on Object1001 {__typename field5802 field5803 field5804 field5805 {__typename field2486}} fragment Fragment267 on Object1154 {__typename field6521 {__typename field6524 field6527 field6525 field6523 {__typename ...Fragment233}} field6515 {__typename field6517 field6520 field6518 field6516 {__typename ...Fragment91}}} fragment Fragment92 on Object421 {__typename ...Fragment93 field2411 {__typename ...Fragment93 alias2:field2339 {__typename ...Fragment94 field2387 {__typename ...Fragment93 alias3:field2339 {__typename ...Fragment94}}}} alias4:field2339 {__typename ...Fragment94 field2387 {__typename ...Fragment93 alias5:field2339 {__typename ...Fragment94}}}} fragment Fragment91 on Object421 {__typename ...Fragment92} fragment Fragment128 on Object909 {__typename field5282 field5283 field5286 field5287 {__typename ...Fragment129} field5288 field5289 {__typename field5290 field5291} field5292 {__typename ...Fragment129} field5293 {__typename ...Fragment129} field5294 field5295 {__typename ...Fragment129} field5284 {__typename field5285}} fragment Fragment169 on Object922 {__typename field5349 field5350 field5353 field5354 field5355} fragment Fragment174 on Object921 {__typename alias6:field5347 {__typename ...Fragment169} field5358 {__typename ...Fragment169} field5359 {__typename ...Fragment169} field5360 {__typename ...Fragment169}} fragment Fragment125 on Object925 {__typename field5421 field5219 {__typename field2331 field2336} field5220 {__typename ... on Object926 {field5400 field5401 {__typename field5404} field5408 field5409 field5410 field5411 field5412 field5413 field5414 {__typename ...Fragment96} field5415 field5416 field5417 field5418 field5419}} field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5189 {__typename ...Fragment103} field5186 field5185} fragment Fragment170 on Object937 {__typename field5476 field5474 field5477 field5478 {__typename ...Fragment96} field5479 field5480 field5481} fragment Fragment185 on Object780 {__typename field4487 field4488 field4489 field4490} fragment Fragment126 on Object948 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object949 {alias7:field5540 field5541 field5543 {__typename field4279 field4280} field5545 field5542 field5544 {__typename ... on Object899 {field5243 field5237}} field5546 {__typename ...Fragment96}}}} fragment Fragment116 on Object2128 {__typename field11428 field5188} fragment Fragment219 on Object1150 {__typename field6477} fragment Fragment131 on Object898 {__typename field5229 field5230 field5231} fragment Fragment127 on Object950 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5553 {__typename ...Fragment130} field5421 field5220 {__typename ... on Object954 {field5561 field5562 {__typename ...Fragment131} field5563 field5565 field5566 field5567 field5568 field5569 field5570 field5571 {__typename ... on Object899 {field5237 field5236 field5241}} field5572 field5573 field5574 field5576 field5577 {__typename ...Fragment132} field5578 field5579 {__typename ... on Object899 {field5236}} field5575 {__typename ... on Object899 {field5236}} field5591 {__typename ... on Object899 {field5236}} field5580 {__typename ... on Object899 {field5240 field5237 field5236 field5241}} field5592 field5581 field5582 {__typename ...Fragment96} field5583 field5584 field5585 field5587 field5588 field5589 field5590 {__typename ... on Object914 {alias8:field5316}}}}} fragment Fragment134 on Object950 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5553 {__typename ... on Object953 {field5556 field5555}} field5421 field5624 {__typename ...Fragment135} field5220 {__typename ... on Object954 {field5561 field5562 {__typename ...Fragment131} field5563 field5565 field5566 field5567 field5568 field5569 field5570 field5571 {__typename ... on Object899 {field5237 field5236 field5241}} field5572 field5573 field5574 field5576 field5577 {__typename ...Fragment132} field5578 field5579 {__typename ... on Object899 {field5236}} field5575 {__typename ... on Object899 {field5236}} field5591 {__typename ... on Object899 {field5236}} field5580 {__typename ... on Object899 {field5240 field5237 field5236 field5241}} field5592 field5581 field5582 {__typename ...Fragment96} field5583 field5584 field5585 field5587 field5588 field5589 field5590 {__typename ... on Object914 {alias9:field5316}}}}} fragment Fragment138 on Object950 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5553 {__typename ... on Object953 {field5556 field5555}} field5421 field5220 {__typename ... on Object954 {field5561 field5562 {__typename ...Fragment131} field5563 field5565 field5566 field5567 field5568 field5569 field5570 field5571 {__typename ... on Object899 {field5237 field5236 field5241}} field5572 field5573 field5574 field5576 field5577 {__typename ...Fragment132} field5578 field5579 {__typename ... on Object899 {field5236}} field5575 {__typename ... on Object899 {field5236}} field5591 {__typename ... on Object899 {field5236}} field5580 {__typename ... on Object899 {field5240 field5237 field5236 field5241}} field5592 field5581 field5582 {__typename ...Fragment96} field5583 field5584 field5585 field5587 field5588 field5589 field5590 {__typename ... on Object914 {alias10:field5316}}}}} fragment Fragment139 on Object950 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5547 {__typename ...Fragment140} field5281 {__typename ...Fragment128} field5553 {__typename ... on Object953 {field5556 field5555}} field5421 field5624 {__typename ...Fragment135} field5220 {__typename ... on Object954 {field5561 field5562 {__typename ...Fragment131} field5563 field5565 field5566 field5567 field5568 field5569 field5570 field5571 {__typename ... on Object899 {field5237 field5236 field5241}} field5572 field5573 field5574 field5576 field5577 {__typename ...Fragment132} field5578 field5579 {__typename ... on Object899 {field5236}} field5575 {__typename ... on Object899 {field5236}} field5591 {__typename ... on Object899 {field5236}} field5580 {__typename ... on Object899 {field5240 field5237 field5236 field5241}} field5592 field5581 field5582 {__typename ...Fragment96} field5583 field5584 field5585 field5587 field5588 field5589 field5590 {__typename ... on Object914 {alias11:field5316}}}}} fragment Fragment142 on Object950 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5553 {__typename ... on Object953 {field5556 field5555}} field5421 field5624 {__typename ...Fragment135} field5220 {__typename ... on Object954 {field5561 field5562 {__typename ...Fragment131} field5563 field5564 field5565 field5566 field5567 field5568 field5569 field5570 field5571 {__typename ... on Object899 {field5237 field5236 field5241}} field5572 field5573 field5574 field5576 field5577 {__typename ...Fragment132} field5578 field5579 {__typename ... on Object899 {field5236}} field5575 {__typename ... on Object899 {field5236}} field5591 {__typename ... on Object899 {field5236}} field5580 {__typename ... on Object899 {field5240 field5237 field5236 field5241}} field5592 field5581 field5582 {__typename ...Fragment96} field5583 field5584 field5585 field5587 field5588 field5589 field5590 {__typename ... on Object914 {alias12:field5316}}}}} fragment Fragment133 on Object901 {__typename field5247 field5248 field5249 {__typename field5251} field5252} fragment Fragment132 on Object900 {__typename field5246 {__typename ...Fragment133} field5253 {__typename ...Fragment133} field5254 {__typename ...Fragment133}} fragment Fragment144 on Object969 {__typename field5635 field5636 {__typename field5230} field5637 field5654 field5638 {__typename ... on Object899 {field5236}} field5639 {__typename ...Fragment132} field5640 field5641 {__typename ... on Object899 {field5236}} field5642 {__typename ... on Object899 {field5236 field5237}} field5644 {__typename ...Fragment96} field5645 field5649 field5652 {__typename ... on Object899 {field5236}}} fragment Fragment143 on Object968 {__typename field5553 {__typename ... on Object953 {field5556}} field5421 field5219 {__typename field2331 field2336} field5220 {__typename ...Fragment144} field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5189 {__typename ...Fragment103} field5186 field5185} fragment Fragment145 on Object968 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5553 {__typename ... on Object953 {field5556}} field5421 field5220 {__typename ...Fragment144}} fragment Fragment146 on Object968 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5553 {__typename ...Fragment130} field5421 field5656 {__typename ...Fragment147} field5618 {__typename ...Fragment149}} fragment Fragment151 on Object968 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5553 {__typename ... on Object953 {field5556 field5555}} field5421 field5220 {__typename ...Fragment144}} fragment Fragment152 on Object968 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5553 {__typename ... on Object953 {field5556}} field5421 field5220 {__typename ...Fragment144}} fragment Fragment129 on Object899 {__typename field5234 field5235 field5236 field5237 field5238 field5239 field5240 field5241 field5242 field5243 field5244} fragment Fragment153 on Object978 {__typename field5219 {__typename field2331 field2336} field5220 {__typename ... on Object979 {field5696 field5697 field5698 field5699 {__typename field4567 field4568 field4571} field5701 field5702 field5703 field5704 {__typename field4638}}} field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5189 {__typename ...Fragment103} field5186 field5185} fragment Fragment154 on Object982 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object983 {field5715 field5726 field5716 field5720 field5721 field5722 field5723 field5719 {__typename ...Fragment144} field5714 {__typename field5237 field5239} field5717 {__typename field5237} field5718 {__typename field5237} field5724 {__typename field5237}}}} fragment Fragment159 on Object787 {__typename field4577 {__typename field4582 field4581 field4583} field4587 field4588 {__typename field4589 {__typename field4590 field4603 field4604} field4616 {__typename field81 alias13:field3259}} field4624 field4625 field4626 field4627 field4632 field4638 field4645 {__typename field4647 field4648} field4649 {__typename field4652 field4651 field4650} field4653 field4655 field4656 field4658 field4659 field4660 field4662 {__typename field4602 field4604} field4663 {__typename field4603 field4604} field4664 field4667 field4668 field4669 field4670 field4672 field4674 field4675 field4678 field4679 field4681 field4682 {__typename field4683 field4684 field4685}} fragment Fragment155 on Object980 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object981 {field5706 field5707 field5708 field5709 field5710 field5712 field5711}}} fragment Fragment156 on Object980 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5187 {__typename field5188 ... on Object2128 {field11428} ... on Object2135 {field11437 {__typename field5168 field5170 field5173 field5174}}} field5220 {__typename ... on Object981 {field5706 field5707 field5708 field5709 field5710 field5712}}} fragment Fragment157 on Object993 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object994 {field5771 field5772 {__typename field5235 field5237 field5238 field5239} field5773 {__typename ...Fragment96} field5774 field5775}}} fragment Fragment158 on Object995 {__typename field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5219 {__typename field2331 field2336} field5220 {__typename ...Fragment159} field5221 field5779 field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102 field5166 {__typename field5168 field5170 field5173 field5174}} field5189 {__typename ...Fragment103} field5186 field5185 field5796} fragment Fragment160 on Object995 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5221 field5220 {__typename ...Fragment159} field5779 field5150 {__typename field5166 {__typename field5168 field5170 field5173 field5174} field5183} field5796} fragment Fragment161 on Object995 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5783 {__typename ...Fragment162} field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5221 field5220 {__typename ...Fragment159} field5779 field5150 {__typename field5166 {__typename field5168 field5170 field5173 field5174} field5183} field5796} fragment Fragment163 on Object995 {__typename field5122 {__typename ...Fragment101} field5149 field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5783 {__typename ...Fragment162} field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5221 field5220 {__typename ...Fragment159} field5779 field5150 {__typename ...Fragment102 field5166 {__typename field5168 field5170 field5173 field5174} field5183} field5796} fragment Fragment164 on Object995 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5783 {__typename ...Fragment162} field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5221 field5220 {__typename ...Fragment159} field5779 field5150 {__typename field5166 {__typename field5168 field5170 field5173 field5174} field5183} field5796} fragment Fragment165 on Object995 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5783 {__typename ...Fragment162} field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5221 field5220 {__typename ...Fragment159} field5779 field5150 {__typename field5166 {__typename field5168 field5170 field5173 field5174} field5183} field5796} fragment Fragment166 on Object995 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5783 {__typename ...Fragment162} field5281 {__typename field5282 field5283 field5296 {__typename field5299 field5298 field5297} field5293 {__typename field5236 field5237 field5240 field5241} field5294} field5421 field5221 field5220 {__typename ...Fragment159} field5779 field5150 {__typename field5166 {__typename field5168 field5170 field5173 field5174} field5183} field5796} fragment Fragment117 on Object2129 {__typename field11429} fragment Fragment94 on Object424 {__typename field2340 field2343 {__typename field2344 {__typename field2345 field2346 field2347 field2348 field2349}} field2341 field2397 field2398 field2342 field2359 field2360 field2361 field2382 {__typename ...Fragment6} field2362 {__typename field2363 field2364 {__typename field2365 field2367 field2366} field2368 field2370 field2372 field2373 field2380 field2381 field2377 field2378 field2369 field2374 field2375 field2376 field2381 field2380} field2383 {__typename ...Fragment95} field2384 {__typename ...Fragment96} field2385 field2386 field2393 field2388 field2389 field2390 field2391 field2392 field2394 field2395 field2396} fragment Fragment95 on Object427 {__typename field2357 field2353 field2354 field2355 {__typename ... on Object401 {alias14:field2272} ... on Object403 {field2274} ... on Object402 {field2273} ... on Object400 {field2271}} field2356} fragment Fragment181 on Object746 {__typename ...Fragment182 field4546 {__typename field4549 field4548 field4547 field4550 field4551} field4531 {__typename field4534 field4533 field4532 field4535} field4536} fragment Fragment168 on Object923 {__typename field5373} fragment Fragment167 on Object1066 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object1067 {field6089 {__typename ...Fragment168} field6072 {__typename ...Fragment168} field6069 {__typename ...Fragment168} field6044 field6093 field6091 field6059 field6068 field6055 field6057 field6071 field6090 field6095 {__typename field6097 field6096} field6045 {__typename alias15:field5347 {__typename ...Fragment169} field5360 {__typename ...Fragment169} field5359 {__typename ...Fragment169} field5358 {__typename ...Fragment169}} field6087 {__typename ...Fragment96} field6073 field6099 {__typename ...Fragment170} field6061 {__typename ... on Object1069 {field6067 field6062 field6063 {__typename ... on Object1070 {field6064 field6066 field6065}}}}}}} fragment Fragment171 on Object1066 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object1067 {field6089 {__typename ...Fragment168} field6072 {__typename ...Fragment168} field6069 {__typename ...Fragment168} field6044 field6093 field6091 field6059 field6068 field6055 field6057 field6071 field6090 field6095 {__typename field6097 field6096} field6045 {__typename alias16:field5347 {__typename ...Fragment169} field5360 {__typename ...Fragment169} field5359 {__typename ...Fragment169} field5358 {__typename ...Fragment169}} field6087 {__typename ...Fragment96} field6073 field6099 {__typename ...Fragment170} field6061 {__typename ... on Object1069 {field6067 field6062 field6063 {__typename ... on Object1070 {field6064 field6066 field6065}}}}}}} fragment Fragment172 on Object1066 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object1067 {field6089 {__typename ...Fragment168} field6072 {__typename ...Fragment168} field6069 {__typename ...Fragment168} field6044 field6093 field6091 field6068 field6055 field6057 field6071 field6090 field6095 {__typename field6097 field6096} field6045 {__typename alias17:field5347 {__typename ...Fragment169} field5360 {__typename ...Fragment169} field5359 {__typename ...Fragment169} field5358 {__typename ...Fragment169}} field6087 {__typename ...Fragment96} field6073 field6099 {__typename ...Fragment170} field6061 {__typename ... on Object1069 {field6067 field6062 field6063 {__typename ... on Object1070 {field6064 field6066 field6065}}}}}}} fragment Fragment118 on Object2130 {__typename field11429} fragment Fragment175 on Object1086 {__typename field6162 field6163 field6164 field6165 field6166} fragment Fragment178 on Object1085 {__typename field6155 {__typename ...Fragment174} field6172 {__typename ...Fragment175} field6175 {__typename ...Fragment175} field6161 {__typename ...Fragment175} field6157 field6158 field6159 field6184 field6160 field6168 {__typename field5373} field6169 {__typename ...Fragment132} field6170 field6173 {__typename ...Fragment176} field6176 field6177 field6178 field6179 field6180 field6181 field6183 {__typename ...Fragment176}} fragment Fragment173 on Object1084 {__typename field5219 {__typename field2331 field2336} field5220 {__typename ... on Object1085 {field6155 {__typename ...Fragment174} field6157 field6158 field6159 field6184 field6160 field6161 {__typename ...Fragment175} field6168 {__typename field5373} field6169 {__typename ...Fragment132} field6170 field6172 {__typename ...Fragment175} field6173 {__typename ...Fragment176} field6175 {__typename ...Fragment175} field6176 field6177 field6178 field6179 field6180 field6181 field6183 {__typename ...Fragment176}}} field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5189 {__typename ...Fragment103} field5186 field5185} fragment Fragment177 on Object1084 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ...Fragment178}} fragment Fragment179 on Object1084 {__typename field5122 {__typename ...Fragment101} field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5220 {__typename ... on Object1085 {field6181}}} fragment Fragment180 on Object1088 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename field5282} field5421 field5221 field5203 {__typename field5205 field5204 field5206 {__typename ...Fragment115}} alias18:field6191 {__typename ...Fragment181}} fragment Fragment203 on Object1088 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename field5282} field5421 field5221 alias19:field6191 {__typename ...Fragment181}} fragment Fragment204 on Object1088 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename field5282} field5421 field5221 alias20:field6191 {__typename ...Fragment181}} fragment Fragment205 on Object1097 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ... on Object909 {field5282 field5294}} field5220 {__typename ... on Object1098 {field6247 {__typename ... on Object909 {field5282 field5294}} field6246 {__typename field5561 field5563 field5568 field5572 field5573 field5575 {__typename ... on Object899 {field5236 field5239}} field5576 field5579 {__typename ... on Object899 {field5236 field5239}} field5580 {__typename ... on Object899 {field5240 field5237 field5236 field5241 field5239}} field5582 {__typename ...Fragment96} field5587 field5588 field5590 {__typename ... on Object914 {alias21:field5322}} field5591 {__typename ... on Object899 {field5236 field5239}}}}}} fragment Fragment104 on Object1101 {__typename field6250 {__typename ...Fragment105} field6256 {__typename ...Fragment114} field6255 {__typename ...Fragment115} field6254 {__typename field5601 field5602 {__typename field3275 field3276 {__typename field2474 {__typename field88} field2475 {__typename field2476 field2477 field2478 field2479 field2480 field2481 field2482} field2483}} field5603 {__typename field5604 {__typename field3280 {__typename field88} field3281 {__typename ...Fragment112}} field5605 {__typename field3280 {__typename field88} field3281 {__typename ...Fragment112}}} field5606 {__typename ...Fragment114}} field6253 {__typename ...Fragment121} field6252 {__typename ...Fragment121} field6251 {__typename ...Fragment121} field6257 {__typename ...Fragment105}} fragment Fragment206 on Object1099 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} alias22:field6261 {__typename field6249 {__typename ...Fragment104} field6259 {__typename ...Fragment104} field6260 {__typename ...Fragment104}}} fragment Fragment207 on Object1099 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} alias23:field6261 {__typename field6249 {__typename ...Fragment104} field6259 {__typename ...Fragment104} field6260 {__typename ...Fragment104}}} fragment Fragment100 on Object1099 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} alias24:field6261 {__typename field6249 {__typename ...Fragment104} field6259 {__typename ...Fragment104} field6260 {__typename ...Fragment104}}} fragment Fragment208 on Object1099 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} alias25:field6261 {__typename field6249 {__typename ...Fragment104} field6259 {__typename ...Fragment104} field6260 {__typename ...Fragment104}}} fragment Fragment209 on Object1114 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5220 {__typename ... on Object1115 {field6328 field6327 {__typename ...Fragment103} field6313 {__typename ... on Object1116 {field6314 field6315 {__typename ...Fragment131} field6316 field6317 {__typename ...Fragment168} field6318 {__typename ... on Object899 {field5237 field5239}} field6324 field6319 {__typename ...Fragment96} field6320 field6321 field6322 field6323}}}}} fragment Fragment210 on Object1114 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ...Fragment128} field5220 {__typename ... on Object1115 {field6328 field6327 {__typename ...Fragment103} field6313 {__typename ... on Object1116 {field6314 field6315 {__typename ...Fragment131} field6316 field6317 {__typename ...Fragment168} field6318 {__typename ... on Object899 {field5237 field5239}} field6324 field6319 {__typename ...Fragment96} field6320 field6321 field6322 field6323}}}}} fragment Fragment211 on Object1117 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename ... on Object909 {field5282 field5294}} field5547 {__typename ...Fragment140} field5624 {__typename ...Fragment135} alias26:field6330 {__typename field6315 {__typename ...Fragment131} field6321 field6320 field6316 field6314 field6326 {__typename ...Fragment212 ...Fragment8} field6318 {__typename ... on Object899 {field5237 field5239}} field6319 {__typename ...Fragment96} field6322 field6323 field6324}} fragment Fragment182 on Object746 {__typename field4229 {__typename field4231 field4245 {__typename ...Fragment183} field4273 {__typename field4274 field4277} field4322 {__typename field4324 field4326 field4323 field4325} field4331 {__typename field2652} field4337 field4338 field4342 field4344 field4345 {__typename field4256 {__typename field4257 field4258} field4260 field4261} field4347 field4478 field4349 field4352 field4374 field4375 {__typename field4379 field4377 field4376 field4378} field4380 {__typename field4379 field4377 field4376 field4378} field4384 field4387 {__typename field2652} field4388 field4389 field4390 field4391 field4405 field4407 field4417 field4428 field4432 field4479 field4445 field4451 field4453 field4456} field4537 {__typename field4538 field4545 field4543 field4541 field4542 field4539 field4540 field4544} field4480 {__typename ...Fragment184}} fragment Fragment184 on Object778 {__typename field4500 {__typename field4501 field4503 field4502 field4504} field4516 {__typename ...Fragment185} field4481 field4515 field4482 field4483 {__typename field4491 field4492 field4484 field4485 {__typename field4491 field4492 field4484 field4486 {__typename ...Fragment185}} field4486 {__typename ...Fragment185}} field4517 field4493 field4494 {__typename ...Fragment185} field4495 field4499 {__typename ...Fragment185} field4496 {__typename ...Fragment185} field4514 field4498 field4528 {__typename ...Fragment186} field4518 field4513 {__typename ...Fragment185} field4497} fragment Fragment213 on Object1132 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5421 alias27:field6413 {__typename field6404 field6406 {__typename field5373} field6402 {__typename ...Fragment96} alias28:field6407 field6399 field6408 field6398}} fragment Fragment214 on Object1132 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5421 alias29:field6413 {__typename field6404 field6406 {__typename field5373} field6402 {__typename ...Fragment96} alias30:field6407 field6399 field6408 field6398}} fragment Fragment215 on Object1132 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5421 alias31:field6413 {__typename field6404 field6406 {__typename field5373} field6402 {__typename ...Fragment96} alias32:field6407 field6399 field6408 field6398}} fragment Fragment120 on Object2131 {__typename field11430 {__typename ...Fragment96}} fragment Fragment96 on Object398 {__typename field2286 field2266 {__typename field2269 field2267 field2270 {__typename ... on Object401 {alias33:field2272} ... on Object403 {field2274} ... on Object402 {field2273} ... on Object400 {field2271}} field2268} field2278 field2279 field2280 field2283 field2284 field2282} fragment Fragment99 on Interface76 {__typename ... on Object1137 {field6431 {__typename field8303 field8309 {__typename field2520 field2519} field2617 field8306 {__typename field18 field19 field6 {__typename field9 field7 field8} field5} field2621 {__typename ...Fragment100 ...Fragment125 ...Fragment126 ...Fragment127 ...Fragment134 ...Fragment138 ...Fragment139 ...Fragment142 ...Fragment143 ...Fragment145 ...Fragment146 ...Fragment151 ...Fragment152 ...Fragment153 ...Fragment154 ...Fragment155 ...Fragment156 ...Fragment157 ...Fragment158 ...Fragment160 ...Fragment161 ...Fragment163 ...Fragment164 ...Fragment165 ...Fragment166 ...Fragment167 ...Fragment171 ...Fragment172 ...Fragment173 ...Fragment177 ...Fragment179 ...Fragment180 ...Fragment203 ...Fragment204 ...Fragment205 ...Fragment206 ...Fragment207 ...Fragment208 ...Fragment209 ...Fragment210 ...Fragment211 ...Fragment213 ...Fragment214 ...Fragment215 ...Fragment216 ...Fragment217 ...Fragment218 ...Fragment220 ...Fragment221 ...Fragment222 ...Fragment223 ...Fragment224 ...Fragment225 ...Fragment226} field2618 field2620 field8301 field2619} field5207 {__typename field5209 field5210 field5208 {__typename ...Fragment103} field5211} field6429 field6428 field5203 {__typename field5204 field5205} field5122 {__typename field5123 field5127 field5124 field5125 field5129 field5128 field5126} field5149 field5150 {__typename field5151 field5152 field5153 field5155 field5180 field5184 field5176 field5177 field5178 field5156 field5157 field5158 field5159 {__typename field5160 field5161 field5162} field5181 field5179}}} fragment Fragment115 on Interface77 {__typename field5188 ...Fragment116 ...Fragment117 ...Fragment118 ...Fragment119 ...Fragment120} fragment Fragment101 on Object886 {__typename field5123 field5127 field5124 field5125 field5129 field5128 field5126} fragment Fragment102 on Object888 {__typename field5152 field5153 field5155 field5180 field5184 field5177 field5157 field5159 {__typename field5160 field5161 field5162} field5181 field5163 field5164 field5165 field5179} fragment Fragment216 on Object1138 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object1139 {field6432 {__typename ...Fragment96} field6433}}} fragment Fragment103 on Object891 {__typename field5190 field5202 field5192 field5193 field5195 {__typename ...Fragment96} field5196 field5201 field5197 field5198 field5200} fragment Fragment162 on Object996 {__typename field5784 {__typename ...Fragment96}} fragment Fragment119 on Object2135 {__typename field11437 {__typename field5168 field5170 field5173 field5174}} fragment Fragment135 on Object965 {__typename field5625 {__typename ...Fragment136} field5632 {__typename ...Fragment136} field5633 {__typename ...Fragment136}} fragment Fragment217 on Object980 {__typename field5219 {__typename field2331 field2336} field5220 {__typename ... on Object981 {field5706 field5707 field5708 field5709 field5710 field5711 field5712}} field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5189 {__typename ...Fragment103} field5186 field5185} fragment Fragment218 on Object1149 {__typename field5122 {__typename ...Fragment101} field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5281 {__typename field5282} field6476 {__typename ...Fragment219} alias34:field6478 {__typename field5760 field5762 field5763 field5764 field5765 field5766 field5767 field5768 field5769}} fragment Fragment220 on Object1149 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field6476 {__typename ...Fragment219} alias35:field6478 {__typename field5760 field5762 field5763 field5764 field5765 field5766 field5767 field5768 field5769}} fragment Fragment221 on Object1149 {__typename field5185 field5281 {__typename field5282} alias36:field6478 {__typename field5760 field5762 field5763 field5764 field5765 field5766 field5767 field5768 field5769}} fragment Fragment222 on Object1149 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5281 {__typename field5282} field6476 {__typename ...Fragment219} alias37:field6478 {__typename field5760 field5762 field5763 field5764 field5765 field5766 field5767 field5768 field5769}} fragment Fragment176 on Object914 {__typename field5313 field5314 alias38:field5316 alias39:field5317 alias40:field5318 alias41:field5319 alias42:field5320 alias43:field5321 alias44:field5322 alias45:field5323 alias46:field5324 field5325 field5326 {__typename field5329 field5327 field5328} field5330 field5331 field5332 field5333 field5334 field5335} fragment Fragment223 on Object1151 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object1152 {field6479 field6481 field6482 field6483 field6485 field6486 field6487 {__typename ... on Object899 {field5237 field5236 field5241}} field6489 field6490 field6491 field6492 field6493}}} fragment Fragment258 on Object1001 {__typename field5802 field5803 field5804} fragment Fragment229 on Object746 {__typename ...Fragment182} fragment Fragment269 on Object6310 {__typename field30384 field30385 field30386 {__typename ...Fragment270}} fragment Fragment227 on Object1275 {__typename field7132 {__typename field7140 field7133 field7134 {__typename field4279 field4280} field7135 field7137 {__typename field7138 field7139 {__typename field4279 field4280}} field7136} field7118 {__typename ...Fragment228 ...Fragment230 ...Fragment231 ...Fragment232} field7141 {__typename field7142 field7143 {__typename field7144 field7145 field7146 {__typename ...Fragment8 ...Fragment233}}}} fragment Fragment224 on Object1105 {__typename alias47:field5220 {__typename ... on Object1106 {field6271 field6273 field6274 field6287 field6289 {__typename ...Fragment96} field6290 field6291 field6292 field6275 {__typename field6276 {__typename ... on Object1108 {field6277 {__typename field6278 field6279 field6280 field6281} field6282 field6283 field6284}}}}} field5122 {__typename field5123 field5124 field5125 field5128 field5126 field5127}} fragment Fragment268 on Object6308 {__typename field2517 {__typename field2518 {__typename field2519 field2520} field2521} field9459 {__typename ...Fragment269} field30373 {__typename field30379 field30380 field30376 field30381 field30377 field30382 {__typename field9433 field9434 field9435 field9436 field9437} field30378 field30374 field30375 field30383 {__typename field9453 field9454 field9455 field9456 field9457}} field2515 field2516} fragment Fragment235 on Object1120 {__typename field6335 field6336 field6338 field6337 field6340 field6339} fragment Fragment270 on Object6311 {__typename field30390 field30389 field30387 field30388} fragment Fragment234 on Object1172 {__typename field6589 {__typename field4199 {__typename ...Fragment47} field4198 {__typename ...Fragment47} field4197} field6586} fragment Fragment183 on Object749 {__typename field4255 {__typename field4256 {__typename field4257 field4258} field4260} field4246 field4249} fragment Fragment271 on Object6312 {__typename field8331 field30391 {__typename field30393 field30392 field30411 field30394 {__typename ... on Object6315 {alias48:field30398} ... on Object6320 {alias49:field30406} ... on Object6324 {alias50:field30410} ... on Object6318 {alias51:field30404} ... on Object6323 {alias52:field30409} ... on Object6316 {alias53:field30400} ... on Object6321 {alias54:field30407} ... on Object6317 {alias55:field30402} ... on Object6322 {alias56:field30408} ... on Object6314 {alias57:field30396} ... on Object6319 {alias58:field30405}}}} fragment Fragment257 on Object1172 {__typename field6586} fragment Fragment236 on Object1134 {__typename field6415 field6416 field6418 field6414 field6417} fragment Fragment262 on Object421 {__typename ...Fragment91} fragment Fragment88 on Union93 {__typename ...Fragment89 ...Fragment90 ...Fragment97 ...Fragment98 ...Fragment91 ...Fragment99 ...Fragment227 ...Fragment234 ...Fragment235 ...Fragment236 ...Fragment237 ...Fragment238 ...Fragment241 ...Fragment242 ...Fragment243 ...Fragment244 ...Fragment250 ...Fragment251 ...Fragment252 ...Fragment253 ...Fragment254 ...Fragment255 ...Fragment257 ...Fragment258 ...Fragment259 ...Fragment260 ...Fragment261 ...Fragment262 ...Fragment263 ...Fragment264 ...Fragment265 ...Fragment266 ...Fragment267} fragment Fragment237 on Object1137 {__typename ...Fragment99} fragment Fragment264 on Object1172 {__typename field6580 {__typename ...Fragment42 field2491 {__typename ... on Object3574 {field16291}}}} fragment Fragment230 on Object1276 {__typename field7119 {__typename ...Fragment229}} fragment Fragment87 on Union93 {__typename ...Fragment88} fragment Fragment238 on Object1154 {__typename field6513 field6499 {__typename ...Fragment239} field6512 {__typename ...Fragment91} field6508 {__typename ...Fragment240}} fragment Fragment239 on Object1155 {__typename field6500 field6501 field6502 field6503 field6506 {__typename ...Fragment8}} fragment Fragment241 on Object1159 {__typename field6529 {__typename ...Fragment42} field6531 field6528 {__typename ...Fragment42} field6530} fragment Fragment259 on Object1159 {__typename field6529 {__typename ...Fragment42} field6531 field6528 {__typename ...Fragment42} field6530 field6532} fragment Fragment242 on Object1160 {__typename field6533 {__typename ... on Object1158 {field6522 {__typename ...Fragment8} field6524}}} fragment Fragment260 on Object1172 {__typename ...Fragment44} fragment Fragment17 on Object2149 {__typename field4 {__typename ...Fragment3} field74 field75} fragment Fragment243 on Object1169 {__typename field6573 {__typename ...Fragment96} field6574 field6570 field6571 field6567 {__typename field2486 field2489 field2492} field6568 {__typename field2486 field2489 field2492} field6569 {__typename field2486 field2489 field2492} field6572 {__typename ...Fragment8}} fragment Fragment70 on Object1536 {__typename field8333 field8334 field8335 field8336} fragment Fragment52 on Object451 {__typename field2476 field2477 field2478 field2482 field2481 field2479 field2480} fragment Fragment43 on Object1171 {__typename alias59:field6579} fragment Fragment42 on Object452 {__typename field2492 field2486 field2490 field2489 field2488 field2487 field2491 {__typename ...Fragment6} field2493 {__typename field5} field2494 {__typename ... on Object453 {field2495}} field2497 {__typename field107}} fragment Fragment137 on Object967 {__typename field5627 field5628} fragment Fragment71 on Interface46 {__typename field2616 {__typename ...Fragment2 field2621 {__typename ...Fragment4}} field8314 {__typename ...Fragment72} field8332 {__typename ...Fragment70}} fragment Fragment136 on Object966 {__typename field5631 {__typename ...Fragment137} field5626 {__typename ...Fragment137} field5629 {__typename ...Fragment137} field5630 {__typename ...Fragment137}} fragment Fragment6 on Interface3 {__typename field74 field4 {__typename ...Fragment3} ...Fragment7 ...Fragment15 ...Fragment26} fragment Fragment113 on Object589 {__typename field81 field83 field80 field82 field3236 field3249 field3250 field3251 field3257} fragment Fragment44 on Object1172 {__typename field6580 {__typename ...Fragment42} field6581 field6583 {__typename ...Fragment45} field6584 field6585 {__typename ...Fragment51} field6586 field6587 {__typename ...Fragment51} field6588 {__typename ...Fragment53} field6589 {__typename field4197 field4198 {__typename ...Fragment47} field4199 {__typename ...Fragment47}}} fragment Fragment232 on Object1283 {__typename field7128 {__typename field7129 field7130 field7131}} fragment Fragment12 on Object2155 {__typename field4 {__typename ...Fragment3} field74} fragment Fragment1 on Interface46 {__typename field2616 {__typename ...Fragment2 field8308 field2621 {__typename ...Fragment4}} field8314 {__typename ...Fragment63} field8332 {__typename ...Fragment70}} fragment Fragment247 on Object1208 {__typename field6746(argument105:$var4,argument106:$var5) {__typename ...Fragment248} field6759(argument107:$var4,argument109:$var6,argument108:$var7) {__typename ...Fragment248}} fragment Fragment248 on Object1209 {__typename field6747 field6748 field6749 {__typename field6757 field6756 field6750 field6751 field6758 field6753 field6754 field6752 field6755}} fragment Fragment265 on Object1211 {__typename field6761 {__typename field74} field6763} fragment Fragment245 on Object1211 {__typename field6761 {__typename field74} field6763 field6762 {__typename field101 field89}} fragment Fragment246 on Object1207 {__typename alias60:field6745 {__typename ...Fragment247}} fragment Fragment244 on Object1205 {__typename field6741 field6742 field6743 {__typename ...Fragment2 field2621 {__typename ...Fragment90 ...Fragment245 ...Fragment246 ...Fragment249}} field6744 {__typename ...Fragment65}} fragment Fragment54 on Object1212 {__typename field6766 field6764 {__typename field3275 field3276 {__typename field2474 {__typename field101 field89 field90 field91 {__typename field92} field88} field2475 {__typename field2476 field2477 field2478 field2479 field2480 field2481 field2482} field2483}} field6765} fragment Fragment15 on Interface3 {__typename field74 field4 {__typename ...Fragment3} ...Fragment7 ...Fragment16 ...Fragment17 ...Fragment18 ...Fragment19 ...Fragment20 ...Fragment21 ...Fragment22 ...Fragment23 ...Fragment24 ...Fragment25} fragment Fragment53 on Object449 {__typename field2472 field2485 {__typename ...Fragment42} field2473 {__typename ...Fragment51} field2498 field2500} fragment Fragment50 on Object722 {__typename field81 field4105 field4106 field83 field4108} fragment Fragment225 on Object1066 {__typename field5122 {__typename ...Fragment101} field5149 field5150 {__typename ...Fragment102} field5219 {__typename field2331 field2336} field5185 field5186 field5189 {__typename ...Fragment103} field5220 {__typename ... on Object1067 {field6089 {__typename ...Fragment168} field6072 {__typename ...Fragment168} field6069 {__typename ...Fragment168} field6044 field6093 field6091 field6068 field6055 field6057 field6071 field6090 field6095 {__typename field6097 field6096} field6045 {__typename alias61:field5347 {__typename ...Fragment169} field5360 {__typename ...Fragment169} field5359 {__typename ...Fragment169} field5358 {__typename ...Fragment169}} field6087 {__typename ...Fragment96} field6073 field6099 {__typename ...Fragment170} field6061 {__typename ... on Object1069 {field6067 field6062 field6063 {__typename ... on Object1070 {field6064 field6066 field6065}}}}}}} fragment Fragment226 on Object1066 {__typename field5220 {__typename ... on Object1067 {field6100 {__typename field6101 field6102 field6110 field6104 {__typename field6105 field6106 field6107 field6109} field6103 {__typename ...Fragment96}}}}} fragment Fragment263 on Object509 {__typename field2847 {__typename ...Fragment42} field2846} fragment Fragment108 on Object580 {__typename field3201 field3202} fragment Fragment109 on Object579 {__typename field3199 field3198} fragment Fragment111 on Object582 {__typename field3205 field3206} fragment Fragment110 on Object583 {__typename field3212 {__typename ...Fragment111} field3211 {__typename ...Fragment111}} fragment Fragment112 on Object581 {__typename field3204 {__typename field3205 field3206} field3207 {__typename field3205 field3206} field3208 {__typename field3205 field3206} field3209 {__typename field3205 field3206}} fragment Fragment250 on Object1323 {__typename field7298 field7296 field7297 field7295 field7299 {__typename ... on Object1158 {field6522 {__typename ...Fragment8} field6524}} field7286 {__typename field7287 field7288 field7289 field7290 field7291 field7292 {__typename ...Fragment233}} field7300 field7301 {__typename field6499 {__typename ...Fragment239} field6508 {__typename ...Fragment240} field6512 {__typename ...Fragment91}} field7302} fragment Fragment266 on Object1323 {__typename field7298 field7296 field7297 field7295 field7299 {__typename ... on Object1158 {field6522 {__typename ...Fragment8} field6524}} field7286 {__typename field7287 field7288 field7289 field7290 field7291 field7292 {__typename ...Fragment233}} field7300 field7301 {__typename field6515 {__typename field6520 field6518 field6516 {__typename ...Fragment91} field6519 {__typename ...Fragment8}} field6513} field7302} fragment Fragment251 on Object1326 {__typename field7303 {__typename field2652}} fragment Fragment3 on Object1 {__typename field5 field6 {__typename field7 field8 field9} field18 field17 field20 field21} fragment Fragment57 on Object1296 {__typename field7184 field7185 field7186 {__typename ...Fragment58}} fragment Fragment58 on Union165 {__typename ... on Object1298 {field7190} ... on Object1299 {field7191 field7192} ... on Object1300 {field7193 field7194 field7195} ... on Object1297 {field7187 field7188 field7189} ... on Object1311 {field7220 field7221 field7222} ... on Object1301 {field7196} ... on Object1302 {field7197 field7198} ... on Object1303 {field7199 field7200 field7201} ... on Object1304 {field7202 field7203 field7204 field7205} ... on Object1307 {field7209 field7210} ... on Object1305 {field7206} ... on Object1310 {field7217 field7218 field7219} ... on Object1309 {field7214 field7215 field7216} ... on Object1308 {field7211 field7212 field7213}} fragment Fragment45 on Interface6 {__typename field81 field80 field82 field109 {__typename ...Fragment6} ...Fragment46 ...Fragment48 ...Fragment49 ...Fragment50} fragment Fragment26 on Interface3 {__typename field74 field4 {__typename ...Fragment3} ...Fragment27 ...Fragment28 ...Fragment32 ...Fragment33 ...Fragment34} fragment Fragment35 on Object452 {__typename field2492 field2486 field2490 field2489 field2488 field2487 field2491 {__typename ...Fragment29}} fragment Fragment30 on Object2943 {__typename field4 {__typename ...Fragment3} field74 field75 field2252 field2253 field14323 {__typename ...Fragment31}} fragment Fragment29 on Interface3 {__typename field74 field4 {__typename ...Fragment3} ...Fragment8 ...Fragment27 ...Fragment30} fragment Fragment31 on Object2944 {__typename field14324 field14325 field14326 {__typename field14327 field14328 field14329 field14330 field14331}} fragment Fragment33 on Object2947 {__typename field4 {__typename ...Fragment3} field74 field75 field2223} fragment Fragment55 on Object1357 {__typename field7473 field7474 field7475 {__typename field2652 field2648 field2655 {__typename ...Fragment3}} field7476 {__typename field88} field7477} fragment Fragment56 on Object1361 {__typename field7486 {__typename ...Fragment45} field7487 {__typename ...Fragment57} field7488 field7489 {__typename ...Fragment59 field2656 {__typename ... on Object453 {field2495}}} field7491 {__typename ...Fragment3}} fragment Fragment74 on Object603 {__typename field3304 field3305 {__typename ...Fragment66} field3303 {__typename ...Fragment69}} fragment Fragment28 on Object3303 {__typename field4 {__typename ...Fragment3} field74 field75 field2252 field2253 field2254 {__typename ...Fragment29}} fragment Fragment11 on Object3308 {__typename field4 {__typename ...Fragment3} field74 field15598} fragment Fragment10 on Object3316 {__typename field4 {__typename ...Fragment3} field74 field15603} fragment Fragment233 on Object1325 {__typename field4 {__typename ...Fragment3} field74 field7293} fragment Fragment212 on Object3323 {__typename field4 {__typename ...Fragment3} field74 field7293 field15613 field15614 alias62:field2223} fragment Fragment27 on Object3338 {__typename field4 {__typename ...Fragment3} field74 field75 field2223 field15637 field15638} fragment Fragment22 on Object3351 {__typename field4 {__typename ...Fragment3} field74 field8402} fragment Fragment8 on Object371 {__typename field4 {__typename ...Fragment3} field74 field2223 field2224} fragment Fragment256 on Object372 {__typename field74 field4 {__typename ...Fragment3}} fragment Fragment9 on Object878 {__typename field4 {__typename ...Fragment3} field74} fragment Fragment249 on Object1365 {__typename field7507 {__typename field7508 field7509 field7510 {__typename ...Fragment47} field7511 {__typename ...Fragment47} field7512}} fragment Fragment195 on Object564 {__typename field3125 field3122 field3123} fragment Fragment196 on Object565 {__typename field3129 field3126 field3127} fragment Fragment194 on Object563 {__typename field3145 field3121 {__typename ...Fragment195 ...Fragment196 ...Fragment197} field3142 field3143} fragment Fragment197 on Object566 {__typename field3133 field3130 field3131} fragment Fragment93 on Object421 {__typename field2324 field2325 field2326 field2327 field2418 {__typename field2419} field2328 field2329 field2330 {__typename field2332 {__typename field2333 field2335 field2334} field2336 field2331} field2337 field2338 field2409 field2421 {__typename field4 {__typename ...Fragment3} field74 field75} field2410 field2414 field2412 field2413} fragment Fragment21 on Object3393 {__typename field15723} fragment Fragment82 on Object3399 {__typename field120 field15739 field15740} fragment Fragment81 on Object3400 {__typename field15741 {__typename ...Fragment82} field15742 {__typename ...Fragment83}} fragment Fragment69 on Object503 {__typename field2814 field2798 {__typename ...Fragment68} field2797 field2816 field2795 field2812 field2811 field2796 field2815 field2794} fragment Fragment23 on Object3418 {__typename field4 {__typename ...Fragment3} field74} fragment Fragment187 on Object549 {__typename field3073 field3072 field3071} fragment Fragment188 on Object552 {__typename field3088 field3087 field3085 field3086 {__typename field89 field101 field88}} fragment Fragment193 on Object564 {__typename field3125 field3122 field3123 field3124 {__typename field3146 field3111 {__typename ...Fragment191 ...Fragment194 ...Fragment198 ...Fragment199 ...Fragment200}}} fragment Fragment189 on Object551 {__typename field3084 field3082 field3080 field3079 field3081 field3083} fragment Fragment201 on Object565 {__typename field3129 field3126 field3127 field3128 {__typename field3146 field3111 {__typename ...Fragment191 ...Fragment194 ...Fragment198 ...Fragment199 ...Fragment200}}} fragment Fragment191 on Object561 {__typename field3117 field3116} fragment Fragment198 on Object562 {__typename field3120 field3119 field3118} fragment Fragment192 on Object563 {__typename field3145 field3121 {__typename ...Fragment193 ...Fragment201 ...Fragment202} field3142 field3143} fragment Fragment199 on Object560 {__typename field3115 field3114} fragment Fragment200 on Object559 {__typename field3113 field3112} fragment Fragment202 on Object566 {__typename field3133 field3130 field3131 field3132 {__typename field3146 field3111 {__typename ...Fragment191 ...Fragment194 ...Fragment198 ...Fragment199 ...Fragment200}}} fragment Fragment190 on Object550 {__typename field3078 field3076 field3074 field3075 field3077} fragment Fragment186 on Object548 {__typename field3070 {__typename ...Fragment187 ...Fragment188 ...Fragment189 ...Fragment190} field3109 {__typename ...Fragment187 ...Fragment188 ...Fragment189 ...Fragment190} field3110 {__typename field3146 field3111 {__typename ...Fragment191 ...Fragment192 ...Fragment198 ...Fragment199 ...Fragment200}}} fragment Fragment240 on Object1156 {__typename field6510 {__typename ...Fragment96} field6511 field6509} fragment Fragment19 on Object3564 {__typename field4 {__typename ...Fragment3} field74 field75 field16272} fragment Fragment72 on Object1532 {__typename ...Fragment64 field8323 {__typename field8324 {__typename ...Fragment73 ...Fragment75 ...Fragment79 ...Fragment80 ...Fragment81} field8326 {__typename ...Fragment73 ...Fragment84 ...Fragment86 ...Fragment81}}} fragment Fragment63 on Object1532 {__typename ...Fragment64 field8317 {__typename ...Fragment65}} fragment Fragment14 on Object3567 {__typename field4 {__typename ...Fragment3} field74 field15726} fragment Fragment252 on Object1475 {__typename field8032 field8033 {__typename ...Fragment128}} fragment Fragment253 on Object1476 {__typename field8034 field8035 alias63:field8036 {__typename ...Fragment212} field8037 {__typename field7508 field7509 field7510 {__typename ...Fragment47} field7511 {__typename ...Fragment47} field7512}} fragment Fragment66 on Object505 {__typename field2820 field2821 {__typename ...Fragment67} field2829 {__typename ...Fragment68} field2830 field2831 field2832 field2833 field2834 {__typename field88 field89} field2835 field2836} fragment Fragment65 on Object502 {__typename field2792 field2791 field2819 {__typename ...Fragment66} field2793 {__typename ...Fragment69} field2790 field2818} fragment Fragment20 on Object3571 {__typename field4 {__typename ...Fragment3} field74 field75 field16272 field16287 field16288} fragment Fragment18 on Object3575 {__typename field4 {__typename ...Fragment3} field74 field75 field16292} fragment Fragment34 on Object3657 {__typename field4 {__typename ...Fragment3} field74 field75 field2287 field16510 field16511 {__typename ...Fragment35} field16512 {__typename ...Fragment35}} fragment Fragment86 on Object3661 {__typename field16523 {__typename ...Fragment74} field16524 {__typename ...Fragment74} field16526 {__typename ...Fragment74} field16527 {__typename ...Fragment74} field16525 {__typename ...Fragment74} field16528 {__typename ...Fragment85}} fragment Fragment85 on Object3662 {__typename field16529 field16530 field16531 field16532} fragment Fragment75 on Object3663 {__typename field16523 {__typename ...Fragment74} field16534 {__typename ...Fragment76} field16533 {__typename ...Fragment74} field16538 {__typename ...Fragment74} field16525 {__typename ...Fragment74} field16540 {__typename ...Fragment77}} fragment Fragment73 on Object3665 {__typename field16523 {__typename ...Fragment74} field16533 {__typename ...Fragment74} field16525 {__typename ...Fragment74} field16539 {__typename ...Fragment74}} fragment Fragment80 on Object3667 {__typename field16523 {__typename ...Fragment74} field16533 {__typename ...Fragment76} field16525 {__typename ...Fragment74}} fragment Fragment79 on Object3668 {__typename field16523 {__typename ...Fragment74} field16534 {__typename ...Fragment76} field16533 {__typename ...Fragment76} field16538 {__typename ...Fragment74} field16525 {__typename ...Fragment74} field16540 {__typename ...Fragment77}} fragment Fragment76 on Object3664 {__typename field16536 field16537 {__typename ...Fragment66} field16535 {__typename ...Fragment69}} fragment Fragment84 on Object3669 {__typename field16523 {__typename ...Fragment74} field16524 {__typename ...Fragment74} field16526 {__typename ...Fragment76} field16527 {__typename ...Fragment74} field16525 {__typename ...Fragment74} field16528 {__typename ...Fragment85}} fragment Fragment49 on Object1175 {__typename field6620 field80 field81 field82 field83 field84 {__typename field105 {__typename ...Fragment47}}} fragment Fragment60 on Object1509 {__typename field8178 field8179} fragment Fragment62 on Object828 {__typename alias64:field4835 field4831 field4836 {__typename ...Fragment51} field4832 field4837 {__typename ...Fragment51} field4833 field4834 field4838 {__typename ...Fragment6} field4839 {__typename ...Fragment6}} fragment Fragment32 on Object3827 {__typename field4 {__typename ...Fragment3} field74 field75 field15634 field16932 field16933} fragment Fragment255 on Object1526 {__typename field8277 {__typename field8278 field8279 field8280 field8281 field8284 field8282 {__typename ...Fragment96} field8283 {__typename ...Fragment212 ...Fragment256 ...Fragment8}}} fragment Fragment46 on Object478 {__typename field81 field83 field80 field2634 field2635 field2636 {__typename field2637 field2638 field2639} field82 field2640 field84 {__typename field105 {__typename ...Fragment47}} field2641 {__typename ...Fragment3} field109 {__typename ...Fragment6}} fragment Fragment48 on Object589 {__typename field81 field80 field82 field3235 {__typename ...Fragment46} field3237 {__typename field3238 {__typename field3239 field3240 {__typename field3241 field3242 {__typename field3243 field3244}}}}} diff --git a/src/test/resources/large-schema-4.graphqls b/src/test/resources/large-schema-4.graphqls new file mode 100644 index 0000000000..439099fecb --- /dev/null +++ b/src/test/resources/large-schema-4.graphqls @@ -0,0 +1,197706 @@ +schema { + query: Object6137 + mutation: Object3982 +} + +directive @Directive1 on OBJECT | FIELD_DEFINITION + +directive @Directive2 on OBJECT + +directive @Directive3(argument1: String, argument2: String, argument3: String!) on FIELD_DEFINITION + +directive @Directive4(argument4: String, argument5: String!) on FIELD_DEFINITION + +directive @Directive5(argument6: String, argument7: String!) on FIELD_DEFINITION + +directive @Directive6(argument8: String, argument9: String!) on FIELD_DEFINITION + +directive @Directive7(argument10: String, argument11: String, argument12: String, argument13: String, argument14: String!, argument15: String, argument16: String, argument17: String!, argument18: Boolean) on OBJECT + +directive @Directive8(argument19: String, argument20: String, argument21: String!, argument22: String, argument23: String, argument24: String!, argument25: String, argument26: String, argument27: String, argument28: Boolean) on OBJECT + +directive @Directive9(argument29: String, argument30: String, argument31: String, argument32: String, argument33: String!, argument34: String!, argument35: String) on FIELD_DEFINITION + +directive @Directive10(argument36: String, argument37: String!, argument38: String, argument39: String!, argument40: String!, argument41: String, argument42: String!) on FIELD_DEFINITION + +directive @Directive11(argument43: String, argument44: String, argument45: String, argument46: String, argument47: String!, argument48: String!) on FIELD_DEFINITION + +directive @Directive12 on OBJECT + +directive @Directive13(argument49: String, argument50: String) on FIELD_DEFINITION + +directive @Directive14(argument51: String, argument52: String) on FIELD_DEFINITION + +directive @Directive15(argument53: String) on FIELD_DEFINITION + +directive @Directive16(argument54: String, argument55: String) on FIELD_DEFINITION + +directive @Directive17 on FIELD_DEFINITION + +directive @Directive18(argument56: String) on FIELD_DEFINITION + +directive @Directive19(argument57: String!) on ENUM + +directive @Directive20(argument58: String!, argument59: Boolean = false, argument60: Boolean = false) on OBJECT | INPUT_OBJECT + +directive @Directive21(argument61: String) on OBJECT | INPUT_OBJECT + +directive @Directive22(argument62: String) on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION + +directive @Directive23(argument63: String) on FIELD + +directive @Directive24(argument64: String!) on OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | INPUT_OBJECT + +directive @Directive25(argument65: String!) on ARGUMENT_DEFINITION + +directive @Directive26(argument66: Int, argument67: String, argument68: String, argument69: String, argument70: String, argument71: String, argument72: String, argument73: String, argument74: String, argument75: String) on OBJECT | FIELD_DEFINITION + +directive @Directive27(argument76: String) on OBJECT | FIELD_DEFINITION + +directive @Directive28(argument77: String) on OBJECT | FIELD_DEFINITION + +directive @Directive29(argument78: String) on OBJECT | FIELD_DEFINITION + +directive @Directive30(argument79: String, argument80: Boolean, argument81: String, argument82: Boolean, argument83: [String!], argument84: String, argument85: String, argument86: String, argument87: String) on OBJECT | FIELD_DEFINITION + +directive @Directive31 on OBJECT + +directive @Directive32 on FIELD + +directive @Directive33(argument88: String) on OBJECT + +directive @Directive34 on OBJECT + +directive @Directive35(argument89: String!, argument90: Boolean, argument91: String!, argument92: Int, argument93: String!, argument94: Boolean) on FIELD_DEFINITION + +directive @Directive36 on FIELD_DEFINITION + +directive @Directive37(argument95: String!) on FIELD_DEFINITION + +directive @Directive38 on FIELD_DEFINITION + +directive @Directive39 on FIELD_DEFINITION + +directive @Directive40 on FIELD_DEFINITION + +directive @Directive41 on FIELD_DEFINITION + +directive @Directive42(argument96: [String]!) on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT + +directive @Directive43 on FIELD + +directive @Directive44(argument97: [String!]!) on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT + +directive @Directive45(argument98: [String!]!) repeatable on OBJECT | INTERFACE | INPUT_OBJECT + +directive @Directive46(argument99: [String!]!) on ENUM + +directive @Directive47(argument100: [String!]!) on UNION + +directive @Directive48(argument101: Int) on FIELD + +directive @Directive49(argument102: String!) on FIELD_DEFINITION + +directive @Directive50(argument103: String) on ENUM_VALUE + +directive @Directive51 on INPUT_OBJECT + +interface Interface1 @Directive22(argument62 : "stringValue1") @Directive44(argument97 : ["stringValue2", "stringValue3"]) { + field1: String +} + +interface Interface10 @Directive22(argument62 : "stringValue118") @Directive44(argument97 : ["stringValue119", "stringValue120"]) { + field115: Enum11 + field116: Int + field117: Int + field118: String +} + +interface Interface100 @Directive22(argument62 : "stringValue8305") @Directive44(argument97 : ["stringValue8306", "stringValue8307"]) { + field9033: Object1795 +} + +interface Interface101 @Directive42(argument96 : ["stringValue8430"]) @Directive44(argument97 : ["stringValue8431"]) { + field2312: ID + field9087: Scalar4 + field9141: Object2258 + field9142: Scalar4 + field9143: Scalar4 + field9144: Scalar4 + field9145: Scalar4 + field9146: Int + field9147: String + field9148: String + field9149: Boolean + field9150: String + field9151: Boolean + field9152: Boolean +} + +interface Interface102 @Directive22(argument62 : "stringValue8681") @Directive44(argument97 : ["stringValue8682", "stringValue8683"]) { + field2525: Interface103 + field9411: Enum185 + field9412: Object570 + field9413: Object1860 + field9459: Object1866 @deprecated + field9484: Object1868 + field9621: Enum316 + field9622: Enum219 + field9623: Enum379 +} + +interface Interface103 @Directive22(argument62 : "stringValue8794") @Directive44(argument97 : ["stringValue8795", "stringValue8796"]) { + field9596: Enum185 + field9597: String + field9598: Object1883 + field9600: String + field9601: [Scalar2] + field9602: Float + field9603: Int + field9604: Object1884 + field9612: Object1885 +} + +interface Interface104 @Directive22(argument62 : "stringValue9636") @Directive44(argument97 : ["stringValue9637", "stringValue9638"]) { + field2312: ID! +} + +interface Interface105 @Directive44(argument97 : ["stringValue10464"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +interface Interface106 @Directive44(argument97 : ["stringValue10489"]) { + field11541: Enum420 + field11542: Enum421 + field11543: Object2169 + field11558: Float + field11559: String + field11560: String + field11561: Object2169 + field11562: Object2172 +} + +interface Interface107 @Directive44(argument97 : ["stringValue10512"]) { + field11574: Enum426 +} + +interface Interface108 @Directive44(argument97 : ["stringValue10535"]) { + field11594: String! + field11595: Enum428 + field11596: Float + field11597: String + field11598: Interface106 + field11599: Interface105 +} + +interface Interface109 @Directive42(argument96 : ["stringValue10763"]) @Directive44(argument97 : ["stringValue10764"]) { + field10799: String + field10800: String +} + +interface Interface11 @Directive22(argument62 : "stringValue127") @Directive44(argument97 : ["stringValue128", "stringValue129"]) { + field119: String +} + +interface Interface110 @Directive22(argument62 : "stringValue11557") @Directive44(argument97 : ["stringValue11558", "stringValue11559"]) { + field12170: ID! + field12171: String + field12172: Object2363 + field12173: Object1837 + field12174: Object1837 +} + +interface Interface111 @Directive22(argument62 : "stringValue11674") @Directive44(argument97 : ["stringValue11675"]) { + field2312: ID! +} + +interface Interface112 @Directive42(argument96 : ["stringValue12167"]) @Directive44(argument97 : ["stringValue12168"]) { + field12309: Int + field12310: Int + field12311: Int +} + +interface Interface113 @Directive22(argument62 : "stringValue12400") @Directive44(argument97 : ["stringValue12401", "stringValue12402"]) { + field12630: [Interface114] + field12633: Interface115! +} + +interface Interface114 @Directive22(argument62 : "stringValue12403") @Directive44(argument97 : ["stringValue12404", "stringValue12405"]) { + field12631: String! + field12632: Interface36 +} + +interface Interface115 @Directive22(argument62 : "stringValue12406") @Directive44(argument97 : ["stringValue12407", "stringValue12408"]) { + field12634: Boolean! + field12635: Boolean! + field12636: Int! + field12637: Int! + field12638: Int! + field12639: Int + field12640: Int +} + +interface Interface116 @Directive44(argument97 : ["stringValue12575"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String +} + +interface Interface117 @Directive22(argument62 : "stringValue12950") @Directive44(argument97 : ["stringValue12951", "stringValue12952"]) { + field13558: [Interface85] @Directive41 +} + +interface Interface118 @Directive22(argument62 : "stringValue12998") @Directive44(argument97 : ["stringValue12999", "stringValue13000"]) { + field13594: String @Directive41 + field13595: Interface3 @Directive41 +} + +interface Interface119 @Directive22(argument62 : "stringValue13036") @Directive44(argument97 : ["stringValue13037", "stringValue13038"]) { + field13637: String @Directive41 + field13638: String @Directive41 +} + +interface Interface12 @Directive22(argument62 : "stringValue130") @Directive44(argument97 : ["stringValue131", "stringValue132"]) { + field120: String! @Directive37(argument95 : "stringValue133") +} + +interface Interface120 @Directive44(argument97 : ["stringValue13253"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +interface Interface121 @Directive44(argument97 : ["stringValue13267"]) { + field13862: Enum552 + field13863: Enum553 + field13864: Object2779 + field13879: Float + field13880: String + field13881: String + field13882: Object2779 + field13883: Object2782 +} + +interface Interface122 @Directive44(argument97 : ["stringValue13308"]) { + field13913: String! + field13914: Enum558 + field13915: Float + field13916: String + field13917: Interface121 + field13918: Interface120 +} + +interface Interface123 @Directive44(argument97 : ["stringValue13416"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +interface Interface124 @Directive44(argument97 : ["stringValue13430"]) { + field14076: Enum566 + field14077: Enum567 + field14078: Object2852 + field14093: Float + field14094: String + field14095: String + field14096: Object2852 + field14097: Object2855 +} + +interface Interface125 @Directive44(argument97 : ["stringValue13470"]) { + field14148: String! + field14149: Enum577 + field14150: Float + field14151: String + field14152: Interface124 + field14153: Interface123 +} + +interface Interface126 @Directive44(argument97 : ["stringValue13517"]) { + field14210: Boolean +} + +interface Interface127 @Directive44(argument97 : ["stringValue13657"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +interface Interface128 @Directive44(argument97 : ["stringValue13682"]) { + field14380: Enum587 + field14381: Enum588 + field14382: Object2959 + field14397: Float + field14398: String + field14399: String + field14400: Object2959 + field14401: Object2962 +} + +interface Interface129 @Directive44(argument97 : ["stringValue13705"]) { + field14407: String! + field14408: Enum593 + field14409: Float + field14410: String + field14411: Interface128 + field14412: Interface127 +} + +interface Interface13 @Directive22(argument62 : "stringValue134") @Directive44(argument97 : ["stringValue135", "stringValue136"]) { + field121: Enum12! @Directive37(argument95 : "stringValue137") + field122: Object1 @Directive37(argument95 : "stringValue141") +} + +interface Interface130 @Directive44(argument97 : ["stringValue13751"]) { + field14512: String! +} + +interface Interface131 @Directive44(argument97 : ["stringValue13779"]) { + field14553: Boolean +} + +interface Interface132 @Directive44(argument97 : ["stringValue13893"]) { + field14641: String! + field14642: String! + field14643: [String] + field14644: Scalar1 + field14645: String + field14646: Scalar1 + field14647: String + field14648: Object3052 + field14653: [Object3053] +} + +interface Interface133 @Directive44(argument97 : ["stringValue13900"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] +} + +interface Interface134 @Directive44(argument97 : ["stringValue13905"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] +} + +interface Interface135 @Directive44(argument97 : ["stringValue14203"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! +} + +interface Interface136 @Directive44(argument97 : ["stringValue14424"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] +} + +interface Interface137 @Directive22(argument62 : "stringValue14838") @Directive44(argument97 : ["stringValue14839", "stringValue14840"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 @Directive40 +} + +interface Interface138 @Directive22(argument62 : "stringValue15124") @Directive44(argument97 : ["stringValue15125"]) { + field15921: String! +} + +interface Interface139 @Directive44(argument97 : ["stringValue15284"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +interface Interface14 @Directive22(argument62 : "stringValue142") @Directive44(argument97 : ["stringValue143", "stringValue144"]) { + field123: String! @Directive37(argument95 : "stringValue145") + field124: Enum12! @Directive37(argument95 : "stringValue146") + field125: Object1 @Directive37(argument95 : "stringValue147") +} + +interface Interface140 @Directive44(argument97 : ["stringValue15309"]) { + field16101: Enum687 + field16102: Enum688 + field16103: Object3497 + field16118: Float + field16119: String + field16120: String + field16121: Object3497 + field16122: Object3500 +} + +interface Interface141 @Directive44(argument97 : ["stringValue15350"]) { + field16152: String! + field16153: Enum693 + field16154: Float + field16155: String + field16156: Interface140 + field16157: Interface139 +} + +interface Interface142 @Directive22(argument62 : "stringValue15474") @Directive44(argument97 : ["stringValue15475", "stringValue15476"]) { + field16278: Enum698 + field16279: String +} + +interface Interface143 @Directive22(argument62 : "stringValue15483") @Directive44(argument97 : ["stringValue15484", "stringValue15485"]) { + field16285: String +} + +interface Interface144 @Directive44(argument97 : ["stringValue15512"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +interface Interface145 @Directive44(argument97 : ["stringValue15537"]) { + field16357: Enum702 + field16358: Enum703 + field16359: Object3589 + field16374: Float + field16375: String + field16376: String + field16377: Object3589 + field16378: Object3592 +} + +interface Interface146 @Directive44(argument97 : ["stringValue15560"]) { + field16390: Enum708 +} + +interface Interface147 @Directive44(argument97 : ["stringValue15583"]) { + field16410: String! + field16411: Enum710 + field16412: Float + field16413: String + field16414: Interface145 + field16415: Interface144 +} + +interface Interface148 @Directive44(argument97 : ["stringValue15744"]) { + field16543: String! +} + +interface Interface149 @Directive44(argument97 : ["stringValue16177"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +interface Interface15 @Directive44(argument97 : ["stringValue148"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +interface Interface150 @Directive44(argument97 : ["stringValue16192"]) { + field16723: Enum756 + field16724: Enum757 + field16725: Object3739 + field16740: Float + field16741: String + field16742: String + field16743: Object3739 + field16744: Object3742 +} + +interface Interface151 @Directive44(argument97 : ["stringValue16233"]) { + field16774: String! + field16775: Enum762 + field16776: Float + field16777: String + field16778: Interface150 + field16779: Interface149 +} + +interface Interface152 @Directive44(argument97 : ["stringValue16440"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +interface Interface153 @Directive44(argument97 : ["stringValue16465"]) { + field16982: Enum772 + field16983: Enum773 + field16984: Object3840 + field16999: Float + field17000: String + field17001: String + field17002: Object3840 + field17003: Object3843 +} + +interface Interface154 @Directive44(argument97 : ["stringValue16488"]) { + field17015: Enum778 +} + +interface Interface155 @Directive44(argument97 : ["stringValue16511"]) { + field17035: String! + field17036: Enum780 + field17037: Float + field17038: String + field17039: Interface153 + field17040: Interface152 +} + +interface Interface156 @Directive44(argument97 : ["stringValue16619"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +interface Interface157 @Directive44(argument97 : ["stringValue16634"]) { + field17178: Enum788 + field17179: Enum789 + field17180: Object3914 + field17195: Float + field17196: String + field17197: String + field17198: Object3914 + field17199: Object3917 +} + +interface Interface158 @Directive44(argument97 : ["stringValue16675"]) { + field17229: String! + field17230: Enum794 + field17231: Float + field17232: String + field17233: Interface157 + field17234: Interface156 +} + +interface Interface159 @Directive22(argument62 : "stringValue17247") @Directive44(argument97 : ["stringValue17248", "stringValue17249"]) { + field17369: Interface46 +} + +interface Interface16 @Directive44(argument97 : ["stringValue155"]) { + field146: String! + field147: Enum15 + field148: Float + field149: String + field150: Interface17 + field175: Interface15 +} + +interface Interface160 @Directive22(argument62 : "stringValue17257") @Directive44(argument97 : ["stringValue17258", "stringValue17259"]) { + field17373: Enum871 + field17374: Object3988 +} + +interface Interface161 @Directive42(argument96 : ["stringValue19026"]) @Directive44(argument97 : ["stringValue19027"]) { + field18382: Object4205 + field18401: Object4207 +} + +interface Interface162 implements Interface36 @Directive22(argument62 : "stringValue19908") @Directive44(argument97 : ["stringValue19909", "stringValue19910"]) { + field19012: String @Directive41 + field19013: String @Directive41 + field19014: Enum951 @Directive41 + field2312: ID! @Directive41 +} + +interface Interface163 @Directive42(argument96 : ["stringValue29228"]) @Directive44(argument97 : ["stringValue29229"]) { + field29547: Object6144 @Directive1 +} + +interface Interface164 implements Interface165 & Interface166 @Directive22(argument62 : "stringValue31723") @Directive44(argument97 : ["stringValue31724", "stringValue31725"]) { + field31176: String + field31177: String + field31178: Boolean + field31179: Enum1659 +} + +interface Interface165 @Directive22(argument62 : "stringValue31714") @Directive44(argument97 : ["stringValue31715", "stringValue31716"]) { + field31176: String + field31177: String + field31178: Boolean +} + +interface Interface166 @Directive22(argument62 : "stringValue31717") @Directive44(argument97 : ["stringValue31718", "stringValue31719"]) { + field31179: Enum1659 +} + +interface Interface167 implements Interface168 & Interface169 @Directive22(argument62 : "stringValue31971") @Directive44(argument97 : ["stringValue31972", "stringValue31973"]) { + field31254: String + field31255: String + field31256: Enum1664 +} + +interface Interface168 @Directive22(argument62 : "stringValue31962") @Directive44(argument97 : ["stringValue31963", "stringValue31964"]) { + field31254: String + field31255: String +} + +interface Interface169 @Directive22(argument62 : "stringValue31965") @Directive44(argument97 : ["stringValue31966", "stringValue31967"]) { + field31256: Enum1664 +} + +interface Interface17 @Directive44(argument97 : ["stringValue157"]) { + field151: Enum16 + field152: Enum17 + field153: Object16 + field168: Float + field169: String + field170: String + field171: Object16 + field172: Object19 +} + +interface Interface170 implements Interface171 & Interface172 @Directive22(argument62 : "stringValue31989") @Directive44(argument97 : ["stringValue31990", "stringValue31991"]) { + field31257: String + field31258: String + field31259: String + field31260: String + field31261: Enum1665 +} + +interface Interface171 @Directive22(argument62 : "stringValue31980") @Directive44(argument97 : ["stringValue31981", "stringValue31982"]) { + field31257: String + field31258: String + field31259: String + field31260: String +} + +interface Interface172 @Directive22(argument62 : "stringValue31983") @Directive44(argument97 : ["stringValue31984", "stringValue31985"]) { + field31261: Enum1665 +} + +interface Interface173 implements Interface174 & Interface175 @Directive22(argument62 : "stringValue32013") @Directive44(argument97 : ["stringValue32014", "stringValue32015"]) { + field31262: String + field31263: String + field31264: Boolean + field31265: Enum1666 +} + +interface Interface174 @Directive22(argument62 : "stringValue32004") @Directive44(argument97 : ["stringValue32005", "stringValue32006"]) { + field31262: String + field31263: String + field31264: Boolean +} + +interface Interface175 @Directive22(argument62 : "stringValue32007") @Directive44(argument97 : ["stringValue32008", "stringValue32009"]) { + field31265: Enum1666 +} + +interface Interface176 @Directive22(argument62 : "stringValue50433") @Directive44(argument97 : ["stringValue50434", "stringValue50435"]) { + field69203: Object12717 +} + +interface Interface18 @Directive22(argument62 : "stringValue172") @Directive44(argument97 : ["stringValue173", "stringValue174"]) { + field176: String + field177: Enum22 +} + +interface Interface19 @Directive44(argument97 : ["stringValue312"]) { + field509: String! + field510: Enum37 + field511: Float + field512: String + field513: Interface20 + field538: Interface21 +} + +interface Interface2 @Directive22(argument62 : "stringValue4") @Directive44(argument97 : ["stringValue5", "stringValue6"]) { + field2: String + field3: Interface3 +} + +interface Interface20 @Directive44(argument97 : ["stringValue314"]) { + field514: Enum38 + field515: Enum39 + field516: Object77 + field531: Float + field532: String + field533: String + field534: Object77 + field535: Object80 +} + +interface Interface21 @Directive44(argument97 : ["stringValue329"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +interface Interface22 @Directive44(argument97 : ["stringValue857"]) { + field1828: Enum106 +} + +interface Interface23 @Directive22(argument62 : "stringValue1131") @Directive44(argument97 : ["stringValue1132", "stringValue1133"]) { + field2241: String @Directive41 + field2242: Enum123 +} + +interface Interface24 @Directive22(argument62 : "stringValue1140") @Directive44(argument97 : ["stringValue1141", "stringValue1142"]) { + field2244: String @Directive41 + field2245: String @Directive41 + field2246: String @Directive40 + field2247: String @Directive41 +} + +interface Interface25 @Directive22(argument62 : "stringValue1152") @Directive44(argument97 : ["stringValue1153", "stringValue1154"]) { + field2250: String +} + +interface Interface26 @Directive22(argument62 : "stringValue1155") @Directive44(argument97 : ["stringValue1156", "stringValue1157"]) { + field2250: String +} + +interface Interface27 @Directive22(argument62 : "stringValue1158") @Directive44(argument97 : ["stringValue1159", "stringValue1160"]) { + field2250: String +} + +interface Interface28 @Directive22(argument62 : "stringValue1161") @Directive44(argument97 : ["stringValue1162", "stringValue1163"]) { + field2250: String +} + +interface Interface29 @Directive22(argument62 : "stringValue1164") @Directive44(argument97 : ["stringValue1165", "stringValue1166"]) { + field2250: String +} + +interface Interface3 @Directive22(argument62 : "stringValue7") @Directive44(argument97 : ["stringValue8", "stringValue9"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +interface Interface30 @Directive22(argument62 : "stringValue1167") @Directive44(argument97 : ["stringValue1168", "stringValue1169"]) { + field2250: String +} + +interface Interface31 @Directive22(argument62 : "stringValue1170") @Directive44(argument97 : ["stringValue1171", "stringValue1172"]) { + field2250: String +} + +interface Interface32 @Directive22(argument62 : "stringValue1173") @Directive44(argument97 : ["stringValue1174", "stringValue1175"]) { + field2250: String +} + +interface Interface33 @Directive22(argument62 : "stringValue1180") @Directive44(argument97 : ["stringValue1181", "stringValue1182"]) { + field2251: String @Directive41 +} + +interface Interface34 @Directive44(argument97 : ["stringValue1238"]) { + field2293: Object405! +} + +interface Interface35 @Directive44(argument97 : ["stringValue1267"]) { + field2304: Scalar2! + field2305: String +} + +interface Interface36 @Directive42(argument96 : ["stringValue1276"]) @Directive44(argument97 : ["stringValue1277", "stringValue1278", "stringValue1279", "stringValue1280", "stringValue1281", "stringValue1282", "stringValue1283", "stringValue1284", "stringValue1285"]) { + field2312: ID! +} + +interface Interface37 @Directive22(argument62 : "stringValue1349") @Directive44(argument97 : ["stringValue1350", "stringValue1351"]) { + field2423: String! + field2424: String +} + +interface Interface38 @Directive22(argument62 : "stringValue1368") @Directive44(argument97 : ["stringValue1369", "stringValue1370"]) { + field2436: String @Directive30(argument80 : true) +} + +interface Interface39 @Directive22(argument62 : "stringValue1471") @Directive44(argument97 : ["stringValue1472"]) { + field2486: String + field2487: Enum10 + field2488: Enum145 +} + +interface Interface4 implements Interface5 @Directive22(argument62 : "stringValue58") @Directive44(argument97 : ["stringValue59", "stringValue60"]) { + field110: [Interface2] @Directive41 + field76: String @Directive41 + field77: String @Directive41 + field78: String @Directive41 + field79: [Interface6] @Directive41 +} + +interface Interface40 @Directive22(argument62 : "stringValue1477") @Directive44(argument97 : ["stringValue1478"]) { + field2489: Enum109 +} + +interface Interface41 @Directive22(argument62 : "stringValue1493") @Directive44(argument97 : ["stringValue1494", "stringValue1495"]) { + field2507: ID @Directive30(argument80 : true) +} + +interface Interface42 implements Interface43 & Interface44 @Directive22(argument62 : "stringValue1508") @Directive44(argument97 : ["stringValue1509", "stringValue1510"]) { + field2508: Boolean + field2509: Enum146 + field76: String + field77: String +} + +interface Interface43 @Directive22(argument62 : "stringValue1499") @Directive44(argument97 : ["stringValue1500", "stringValue1501"]) { + field2508: Boolean + field76: String + field77: String +} + +interface Interface44 @Directive22(argument62 : "stringValue1502") @Directive44(argument97 : ["stringValue1503", "stringValue1504"]) { + field2509: Enum146 +} + +interface Interface45 @Directive22(argument62 : "stringValue1516") @Directive44(argument97 : ["stringValue1517", "stringValue1518"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +interface Interface46 @Directive22(argument62 : "stringValue1589") @Directive44(argument97 : ["stringValue1590", "stringValue1591"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Interface45 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +interface Interface47 @Directive22(argument62 : "stringValue2951") @Directive44(argument97 : ["stringValue2952", "stringValue2953"]) { + field3160: ID! +} + +interface Interface48 @Directive22(argument62 : "stringValue2999") @Directive44(argument97 : ["stringValue3000", "stringValue3001"]) { + field3197: Object579 + field3200: Object580 + field3203: Object581 + field3210: Object583 +} + +interface Interface49 @Directive22(argument62 : "stringValue3116") @Directive44(argument97 : ["stringValue3117", "stringValue3118"]) { + field3300: Interface50! +} + +interface Interface5 @Directive22(argument62 : "stringValue55") @Directive44(argument97 : ["stringValue56", "stringValue57"]) { + field76: String + field77: String + field78: String +} + +interface Interface50 @Directive22(argument62 : "stringValue3119") @Directive44(argument97 : ["stringValue3120", "stringValue3121"]) { + field3301: Boolean +} + +interface Interface51 @Directive22(argument62 : "stringValue3660") @Directive44(argument97 : ["stringValue3661", "stringValue3662"]) { + field4117: Interface3 + field4118: Object1 + field4119: String! +} + +interface Interface52 implements Interface53 & Interface54 @Directive22(argument62 : "stringValue3741") @Directive44(argument97 : ["stringValue3742", "stringValue3743"]) { + field4204: String + field4205: String + field4206: String + field4207: String + field4208: Enum10 + field4209: Enum210 + field4210: Enum211 +} + +interface Interface53 @Directive22(argument62 : "stringValue3729") @Directive44(argument97 : ["stringValue3730", "stringValue3731"]) { + field4204: String + field4205: String + field4206: String + field4207: String + field4208: Enum10 + field4209: Enum210 +} + +interface Interface54 @Directive22(argument62 : "stringValue3735") @Directive44(argument97 : ["stringValue3736", "stringValue3737"]) { + field4210: Enum211 +} + +interface Interface55 implements Interface56 & Interface57 @Directive22(argument62 : "stringValue4128") @Directive44(argument97 : ["stringValue4129", "stringValue4130"]) { + field4777: String + field4778: String + field4779: Boolean + field4780: Enum230 +} + +interface Interface56 @Directive22(argument62 : "stringValue4118") @Directive44(argument97 : ["stringValue4119", "stringValue4120"]) { + field4777: String + field4778: String + field4779: Boolean +} + +interface Interface57 @Directive22(argument62 : "stringValue4121") @Directive44(argument97 : ["stringValue4122", "stringValue4123"]) { + field4780: Enum230 +} + +interface Interface58 implements Interface59 & Interface60 @Directive22(argument62 : "stringValue4144") @Directive44(argument97 : ["stringValue4145", "stringValue4146"]) { + field4783: String + field4784: String + field4785: String + field4786: Boolean + field4787: Enum231 +} + +interface Interface59 @Directive22(argument62 : "stringValue4135") @Directive44(argument97 : ["stringValue4136", "stringValue4137"]) { + field4783: String + field4784: String + field4785: String + field4786: Boolean +} + +interface Interface6 @Directive22(argument62 : "stringValue61") @Directive44(argument97 : ["stringValue62", "stringValue63"]) { + field109: Interface3 + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +interface Interface60 @Directive22(argument62 : "stringValue4138") @Directive44(argument97 : ["stringValue4139", "stringValue4140"]) { + field4787: Enum231 +} + +interface Interface61 implements Interface62 & Interface63 @Directive22(argument62 : "stringValue4162") @Directive44(argument97 : ["stringValue4163", "stringValue4164"]) { + field4792: String + field4793: String + field4794: Boolean + field4795: Enum10 + field4796: Enum232 + field4797: Enum233 +} + +interface Interface62 @Directive22(argument62 : "stringValue4150") @Directive44(argument97 : ["stringValue4151", "stringValue4152"]) { + field4792: String + field4793: String + field4794: Boolean + field4795: Enum10 + field4796: Enum232 +} + +interface Interface63 @Directive22(argument62 : "stringValue4156") @Directive44(argument97 : ["stringValue4157", "stringValue4158"]) { + field4797: Enum233 +} + +interface Interface64 implements Interface65 & Interface66 @Directive22(argument62 : "stringValue4182") @Directive44(argument97 : ["stringValue4183", "stringValue4184"]) { + field4799: String + field4800: String + field4801: String + field4802: String + field4803: Boolean + field4804: Enum10 + field4805: Enum234 + field4806: Enum235 +} + +interface Interface65 @Directive22(argument62 : "stringValue4168") @Directive44(argument97 : ["stringValue4169", "stringValue4170"]) { + field4799: String + field4800: String + field4801: String + field4802: String + field4803: Boolean + field4804: Enum10 + field4805: Enum234 +} + +interface Interface66 @Directive22(argument62 : "stringValue4175") @Directive44(argument97 : ["stringValue4176", "stringValue4177"]) { + field4806: Enum235 +} + +interface Interface67 implements Interface68 & Interface69 @Directive22(argument62 : "stringValue4205") @Directive44(argument97 : ["stringValue4206", "stringValue4207"]) { + field4811: String + field4812: String + field4813: Enum10 + field4814: Enum237 + field4815: Enum238 +} + +interface Interface68 @Directive22(argument62 : "stringValue4193") @Directive44(argument97 : ["stringValue4194", "stringValue4195"]) { + field4811: String + field4812: String + field4813: Enum10 + field4814: Enum237 +} + +interface Interface69 @Directive22(argument62 : "stringValue4199") @Directive44(argument97 : ["stringValue4200", "stringValue4201"]) { + field4815: Enum238 +} + +interface Interface7 @Directive22(argument62 : "stringValue68") @Directive44(argument97 : ["stringValue69", "stringValue70"]) { + field102: Float + field103: String + field104: String + field105: Object10 + field106: Object13 + field85: Enum4 + field86: Enum5 + field87: Object10 +} + +interface Interface70 implements Interface71 & Interface72 @Directive22(argument62 : "stringValue4223") @Directive44(argument97 : ["stringValue4224", "stringValue4225"]) { + field2508: Boolean + field4820: Enum239 + field76: String + field77: String +} + +interface Interface71 @Directive22(argument62 : "stringValue4214") @Directive44(argument97 : ["stringValue4215", "stringValue4216"]) { + field2508: Boolean + field76: String + field77: String +} + +interface Interface72 @Directive22(argument62 : "stringValue4217") @Directive44(argument97 : ["stringValue4218", "stringValue4219"]) { + field4820: Enum239 +} + +interface Interface73 implements Interface74 & Interface75 @Directive22(argument62 : "stringValue4244") @Directive44(argument97 : ["stringValue4245", "stringValue4246"]) { + field4831: String + field4832: String + field4833: Boolean + field4834: Enum240 +} + +interface Interface74 @Directive22(argument62 : "stringValue4235") @Directive44(argument97 : ["stringValue4236", "stringValue4237"]) { + field4831: String + field4832: String + field4833: Boolean +} + +interface Interface75 @Directive22(argument62 : "stringValue4238") @Directive44(argument97 : ["stringValue4239", "stringValue4240"]) { + field4834: Enum240 +} + +interface Interface76 @Directive22(argument62 : "stringValue4461") @Directive44(argument97 : ["stringValue4462", "stringValue4463", "stringValue4464"]) @Directive45(argument98 : ["stringValue4465"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String @deprecated + field5186: String @deprecated + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 +} + +interface Interface77 @Directive22(argument62 : "stringValue4502") @Directive44(argument97 : ["stringValue4503", "stringValue4504"]) { + field5188: Enum251 +} + +interface Interface78 @Directive22(argument62 : "stringValue6074") @Directive44(argument97 : ["stringValue6075", "stringValue6076"]) { + field6535: String @Directive41 + field6536: String @Directive41 + field6537: [Interface79] @Directive41 +} + +interface Interface79 @Directive22(argument62 : "stringValue6077") @Directive44(argument97 : ["stringValue6078", "stringValue6079"]) { + field6538: String @Directive41 + field6539: String @Directive41 + field6540: Object1 @Directive41 +} + +interface Interface8 implements Interface10 & Interface9 @Directive22(argument62 : "stringValue124") @Directive44(argument97 : ["stringValue125", "stringValue126"]) { + field111: String + field112: String + field113: Enum10 + field114: String + field115: Enum11 + field116: Int + field117: Int + field118: String +} + +interface Interface80 @Directive22(argument62 : "stringValue6153") @Directive44(argument97 : ["stringValue6154", "stringValue6155"]) { + field6628: String @Directive1 @deprecated +} + +interface Interface81 @Directive22(argument62 : "stringValue6162") @Directive44(argument97 : ["stringValue6163", "stringValue6164"]) { + field6635(argument104: InputObject1): Object1182 @Directive41 + field6640: Interface82 @Directive41 +} + +interface Interface82 @Directive22(argument62 : "stringValue6174") @Directive44(argument97 : ["stringValue6175", "stringValue6176"]) { + field6641: Int +} + +interface Interface83 @Directive22(argument62 : "stringValue6628") @Directive44(argument97 : ["stringValue6629", "stringValue6630"]) { + field7153: String @Directive41 +} + +interface Interface84 implements Interface85 @Directive22(argument62 : "stringValue6637") @Directive44(argument97 : ["stringValue6638", "stringValue6639"]) { + field7155: [Object1290] @Directive41 + field7156: [Enum319!] @Directive41 + field7157: [Enum319!] @Directive41 +} + +interface Interface85 @Directive22(argument62 : "stringValue6631") @Directive44(argument97 : ["stringValue6632", "stringValue6633"]) { + field7155: [Interface23] @Directive41 + field7156: [Enum319!] @Directive41 + field7157: [Enum319!] @Directive41 +} + +interface Interface86 @Directive22(argument62 : "stringValue6767") @Directive44(argument97 : ["stringValue6768", "stringValue6769"]) { + field7275: [Interface5!] +} + +interface Interface87 @Directive22(argument62 : "stringValue6777") @Directive44(argument97 : ["stringValue6778", "stringValue6779"]) { + field7284: String +} + +interface Interface88 @Directive22(argument62 : "stringValue6926") @Directive44(argument97 : ["stringValue6927", "stringValue6928"]) { + field7484: String +} + +interface Interface89 implements Interface49 @Directive22(argument62 : "stringValue7396") @Directive44(argument97 : ["stringValue7397", "stringValue7398"]) { + field3300: Interface50! + field8096: [Interface84!] +} + +interface Interface9 @Directive22(argument62 : "stringValue111") @Directive44(argument97 : ["stringValue112", "stringValue113"]) { + field111: String + field112: String + field113: Enum10 + field114: String +} + +interface Interface90 @Directive22(argument62 : "stringValue7574") @Directive44(argument97 : ["stringValue7575", "stringValue7576"]) { + field8325: Boolean @deprecated +} + +interface Interface91 @Directive22(argument62 : "stringValue7581") @Directive44(argument97 : ["stringValue7582", "stringValue7583"]) { + field8331: [String] +} + +interface Interface92 @Directive42(argument96 : ["stringValue7659"]) @Directive44(argument97 : ["stringValue7660", "stringValue7661", "stringValue7662", "stringValue7663", "stringValue7664", "stringValue7665", "stringValue7666", "stringValue7667", "stringValue7668"]) { + field8384: Object753! + field8385: [Interface93] +} + +interface Interface93 @Directive22(argument62 : "stringValue7669") @Directive44(argument97 : ["stringValue7670"]) { + field8386: String +} + +interface Interface94 @Directive44(argument97 : ["stringValue7697"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 +} + +interface Interface95 @Directive44(argument97 : ["stringValue7789"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String @deprecated + field8568: [Interface22] +} + +interface Interface96 @Directive42(argument96 : ["stringValue8189"]) @Directive44(argument97 : ["stringValue8190"]) { + field8988: Scalar4 + field8989: Scalar4 +} + +interface Interface97 @Directive42(argument96 : ["stringValue8202"]) @Directive44(argument97 : ["stringValue8203"]) { + field2312: ID! + field8994: String + field8995: [Object792!]! +} + +interface Interface98 @Directive22(argument62 : "stringValue8204") @Directive44(argument97 : ["stringValue8205", "stringValue8206"]) { + field8996: Interface99 +} + +interface Interface99 @Directive22(argument62 : "stringValue8207") @Directive44(argument97 : ["stringValue8208"]) { + field8997: Interface36 +} + +union Union1 @Directive44(argument97 : ["stringValue178"]) = Object20 + +union Union10 @Directive44(argument97 : ["stringValue365"]) = Object91 | Object92 | Object93 + +union Union100 @Directive22(argument62 : "stringValue3404") @Directive44(argument97 : ["stringValue3405", "stringValue3406"]) = Object665 | Object666 | Object667 | Object668 + +union Union101 @Directive22(argument62 : "stringValue3640") @Directive44(argument97 : ["stringValue3641", "stringValue3642"]) = Object596 | Object721 | Object722 | Object723 + +union Union102 @Directive22(argument62 : "stringValue4541") @Directive44(argument97 : ["stringValue4542", "stringValue4543"]) = Object894 + +union Union103 @Directive22(argument62 : "stringValue4593") @Directive44(argument97 : ["stringValue4594", "stringValue4595"]) = Object905 | Object907 + +union Union104 @Directive22(argument62 : "stringValue4658") @Directive44(argument97 : ["stringValue4659", "stringValue4660"]) = Object913 + +union Union105 @Directive22(argument62 : "stringValue4667") @Directive44(argument97 : ["stringValue4668", "stringValue4669"]) = Object917 + +union Union106 @Directive22(argument62 : "stringValue4708") @Directive44(argument97 : ["stringValue4709", "stringValue4710"]) = Object920 + +union Union107 @Directive22(argument62 : "stringValue4725") @Directive44(argument97 : ["stringValue4726", "stringValue4727"]) = Object926 + +union Union108 @Directive22(argument62 : "stringValue4816") @Directive44(argument97 : ["stringValue4817", "stringValue4818"]) = Object939 | Object941 | Object942 | Object943 | Object944 + +union Union109 @Directive22(argument62 : "stringValue4863") @Directive44(argument97 : ["stringValue4864", "stringValue4865"]) = Object931 + +union Union11 @Directive44(argument97 : ["stringValue395"]) = Object103 | Object104 | Object105 | Object110 | Object111 + +union Union110 @Directive22(argument62 : "stringValue4880") @Directive44(argument97 : ["stringValue4881", "stringValue4882"]) = Object946 + +union Union111 @Directive22(argument62 : "stringValue4893") @Directive44(argument97 : ["stringValue4894", "stringValue4895"]) = Object949 + +union Union112 @Directive22(argument62 : "stringValue4966") @Directive44(argument97 : ["stringValue4967", "stringValue4968"]) = Object954 + +union Union113 @Directive22(argument62 : "stringValue5015") @Directive44(argument97 : ["stringValue5016", "stringValue5017"]) = Object969 + +union Union114 @Directive22(argument62 : "stringValue5028") @Directive44(argument97 : ["stringValue5029", "stringValue5030"]) = Object974 + +union Union115 @Directive22(argument62 : "stringValue5056") @Directive44(argument97 : ["stringValue5057", "stringValue5058"]) = Object979 + +union Union116 @Directive22(argument62 : "stringValue5069") @Directive44(argument97 : ["stringValue5070", "stringValue5071"]) = Object981 + +union Union117 @Directive22(argument62 : "stringValue5082") @Directive44(argument97 : ["stringValue5083", "stringValue5084"]) = Object983 + +union Union118 @Directive22(argument62 : "stringValue5099") @Directive44(argument97 : ["stringValue5100", "stringValue5101"]) = Object985 + +union Union119 @Directive22(argument62 : "stringValue5120") @Directive44(argument97 : ["stringValue5121", "stringValue5122"]) = Object988 + +union Union12 @Directive44(argument97 : ["stringValue405"]) = Object107 | Object108 + +union Union120 @Directive22(argument62 : "stringValue5129") @Directive44(argument97 : ["stringValue5130", "stringValue5131"]) = Object991 + +union Union121 @Directive22(argument62 : "stringValue5150") @Directive44(argument97 : ["stringValue5151", "stringValue5152"]) = Object994 + +union Union122 @Directive22(argument62 : "stringValue5159") @Directive44(argument97 : ["stringValue5160", "stringValue5161"]) = Object787 + +union Union123 @Directive22(argument62 : "stringValue5206") @Directive44(argument97 : ["stringValue5207", "stringValue5208"]) = Object1003 + +union Union124 @Directive22(argument62 : "stringValue5215") @Directive44(argument97 : ["stringValue5216", "stringValue5217"]) = Object1006 + +union Union125 @Directive22(argument62 : "stringValue5238") @Directive44(argument97 : ["stringValue5239", "stringValue5240"]) = Object1011 | Object1012 | Object1013 + +union Union126 @Directive22(argument62 : "stringValue5283") @Directive44(argument97 : ["stringValue5284", "stringValue5285"]) = Object1020 + +union Union127 @Directive22(argument62 : "stringValue5310") @Directive44(argument97 : ["stringValue5311", "stringValue5312"]) = Object1025 | Object1027 + +union Union128 @Directive22(argument62 : "stringValue5407") @Directive44(argument97 : ["stringValue5408", "stringValue5409"]) = Object1044 + +union Union129 @Directive22(argument62 : "stringValue5420") @Directive44(argument97 : ["stringValue5421", "stringValue5422"]) = Object1047 + +union Union13 @Directive44(argument97 : ["stringValue419"]) = Object113 | Object114 | Object120 | Object121 | Object122 | Object123 + +union Union130 @Directive22(argument62 : "stringValue5441") @Directive44(argument97 : ["stringValue5442", "stringValue5443"]) = Object1049 + +union Union131 @Directive22(argument62 : "stringValue5458") @Directive44(argument97 : ["stringValue5459", "stringValue5460"]) = Object1052 + +union Union132 @Directive22(argument62 : "stringValue5471") @Directive44(argument97 : ["stringValue5472", "stringValue5473"]) = Object1055 + +union Union133 @Directive22(argument62 : "stringValue5496") @Directive44(argument97 : ["stringValue5497", "stringValue5498"]) = Object1057 + +union Union134 @Directive22(argument62 : "stringValue5513") @Directive44(argument97 : ["stringValue5514", "stringValue5515"]) = Object1063 + +union Union135 @Directive22(argument62 : "stringValue5522") @Directive44(argument97 : ["stringValue5523", "stringValue5524"]) = Object1065 + +union Union136 @Directive22(argument62 : "stringValue5578") @Directive44(argument97 : ["stringValue5579", "stringValue5580"]) = Object1067 + +union Union137 @Directive22(argument62 : "stringValue5603") @Directive44(argument97 : ["stringValue5604", "stringValue5605"]) = Object1077 + +union Union138 @Directive22(argument62 : "stringValue5612") @Directive44(argument97 : ["stringValue5613", "stringValue5614"]) = Object1081 + +union Union139 @Directive22(argument62 : "stringValue5635") @Directive44(argument97 : ["stringValue5636", "stringValue5637"]) = Object1085 + +union Union14 @Directive44(argument97 : ["stringValue424"]) = Object115 | Object116 | Object117 | Object118 | Object119 + +union Union140 @Directive22(argument62 : "stringValue5656") @Directive44(argument97 : ["stringValue5657", "stringValue5658"]) = Object746 + +union Union141 @Directive22(argument62 : "stringValue5665") @Directive44(argument97 : ["stringValue5666", "stringValue5667"]) = Object1090 + +union Union142 @Directive22(argument62 : "stringValue5694") @Directive44(argument97 : ["stringValue5695", "stringValue5696"]) = Object1096 + +union Union143 @Directive22(argument62 : "stringValue5707") @Directive44(argument97 : ["stringValue5708", "stringValue5709"]) = Object1098 + +union Union144 @Directive22(argument62 : "stringValue5720") @Directive44(argument97 : ["stringValue5721", "stringValue5722"]) = Object1100 + +union Union145 @Directive22(argument62 : "stringValue5759") @Directive44(argument97 : ["stringValue5760", "stringValue5761"]) = Object1108 + +union Union146 @Directive22(argument62 : "stringValue5773") @Directive44(argument97 : ["stringValue5774", "stringValue5775"]) = Object1106 + +union Union147 @Directive22(argument62 : "stringValue5782") @Directive44(argument97 : ["stringValue5783", "stringValue5784"]) = Object1111 + +union Union148 @Directive22(argument62 : "stringValue5803") @Directive44(argument97 : ["stringValue5804", "stringValue5805"]) = Object1115 + +union Union149 @Directive22(argument62 : "stringValue5820") @Directive44(argument97 : ["stringValue5821", "stringValue5822"]) = Object1116 + +union Union15 @Directive44(argument97 : ["stringValue465"]) = Object134 + +union Union150 @Directive22(argument62 : "stringValue5830") @Directive44(argument97 : ["stringValue5831", "stringValue5832"]) = Object1119 + +union Union151 @Directive22(argument62 : "stringValue5849") @Directive44(argument97 : ["stringValue5850", "stringValue5851"]) = Object1123 + +union Union152 @Directive22(argument62 : "stringValue5865") @Directive44(argument97 : ["stringValue5866", "stringValue5867"]) = Object1125 + +union Union153 @Directive22(argument62 : "stringValue5874") @Directive44(argument97 : ["stringValue5875", "stringValue5876"]) = Object1127 + +union Union154 @Directive22(argument62 : "stringValue5887") @Directive44(argument97 : ["stringValue5888", "stringValue5889"]) = Object1129 + +union Union155 @Directive22(argument62 : "stringValue5900") @Directive44(argument97 : ["stringValue5901", "stringValue5902"]) = Object1131 + +union Union156 @Directive22(argument62 : "stringValue5920") @Directive44(argument97 : ["stringValue5921", "stringValue5922"]) = Object1133 + +union Union157 @Directive22(argument62 : "stringValue5932") @Directive44(argument97 : ["stringValue5933", "stringValue5934"]) = Object1136 + +union Union158 @Directive22(argument62 : "stringValue5950") @Directive44(argument97 : ["stringValue5951", "stringValue5952"]) = Object1139 + +union Union159 @Directive22(argument62 : "stringValue5963") @Directive44(argument97 : ["stringValue5964", "stringValue5965"]) = Object1141 + +union Union16 @Directive44(argument97 : ["stringValue501"]) = Object150 + +union Union160 @Directive22(argument62 : "stringValue5976") @Directive44(argument97 : ["stringValue5977", "stringValue5978"]) = Object1143 + +union Union161 @Directive22(argument62 : "stringValue5989") @Directive44(argument97 : ["stringValue5990", "stringValue5991"]) = Object1145 + +union Union162 @Directive22(argument62 : "stringValue6020") @Directive44(argument97 : ["stringValue6021", "stringValue6022"]) = Object992 + +union Union163 @Directive22(argument62 : "stringValue6029") @Directive44(argument97 : ["stringValue6030", "stringValue6031"]) = Object1152 + +union Union164 @Directive22(argument62 : "stringValue6578") @Directive44(argument97 : ["stringValue6579", "stringValue6580"]) = Object1276 | Object1277 | Object1279 | Object1280 | Object1281 | Object1282 | Object1283 + +union Union165 @Directive22(argument62 : "stringValue6677") @Directive44(argument97 : ["stringValue6678", "stringValue6679"]) = Object1297 | Object1298 | Object1299 | Object1300 | Object1301 | Object1302 | Object1303 | Object1304 | Object1305 | Object1306 | Object1307 | Object1308 | Object1309 | Object1310 | Object1311 + +union Union166 @Directive44(argument97 : ["stringValue7828"]) = Object1611 | Object1613 + +union Union167 @Directive22(argument62 : "stringValue9527") @Directive44(argument97 : ["stringValue9528", "stringValue9529"]) = Object2017 + +union Union168 @Directive22(argument62 : "stringValue9556") @Directive44(argument97 : ["stringValue9557"]) = Object2015 | Object2022 + +union Union169 @Directive44(argument97 : ["stringValue10477"]) = Object2163 | Object2164 | Object2165 | Object2166 | Object2167 + +union Union17 @Directive44(argument97 : ["stringValue506"]) = Object152 + +union Union170 @Directive22(argument62 : "stringValue11219") @Directive44(argument97 : ["stringValue11220"]) = Object2301 | Object2302 | Object2303 | Object2304 | Object2306 | Object2307 | Object2308 | Object2310 | Object2311 | Object2312 | Object2313 | Object2314 | Object2315 | Object2316 | Object2318 | Object2320 | Object2322 | Object2323 + +union Union171 @Directive22(argument62 : "stringValue11322") @Directive44(argument97 : ["stringValue11323"]) = Object2330 | Object2331 | Object2332 + +union Union172 @Directive22(argument62 : "stringValue11550") @Directive44(argument97 : ["stringValue11548", "stringValue11549"]) = Object2365 + +union Union173 @Directive22(argument62 : "stringValue11554") @Directive44(argument97 : ["stringValue11555", "stringValue11556"]) = Object2366 | Object2369 + +union Union174 @Directive22(argument62 : "stringValue12263") @Directive44(argument97 : ["stringValue12264", "stringValue12265"]) = Object2460 + +union Union175 @Directive22(argument62 : "stringValue12368") @Directive44(argument97 : ["stringValue12367"]) = Object2481 + +union Union176 @Directive22(argument62 : "stringValue12470") @Directive44(argument97 : ["stringValue12471", "stringValue12472"]) = Object2495 | Object2500 + +union Union177 @Directive44(argument97 : ["stringValue13670"]) = Object2953 | Object2954 | Object2955 | Object2956 | Object2957 + +union Union178 @Directive44(argument97 : ["stringValue13922"]) = Object3064 | Object3065 | Object3066 | Object3071 | Object3072 | Object3073 | Object3074 | Object3075 | Object3076 | Object3077 | Object3078 | Object3079 | Object3080 | Object3081 | Object3082 | Object3083 | Object3084 | Object3085 | Object3086 | Object3087 | Object3088 | Object3089 | Object3090 | Object3091 | Object3092 | Object3093 | Object3096 | Object3097 | Object3098 | Object3099 | Object3100 | Object3101 | Object3102 | Object3103 | Object3104 | Object3105 | Object3106 | Object3107 | Object3108 | Object3109 | Object3110 | Object3111 | Object3112 + +union Union179 @Directive44(argument97 : ["stringValue14187"]) = Object3176 | Object3177 | Object3178 + +union Union18 @Directive44(argument97 : ["stringValue535"]) = Object160 | Object161 | Object163 | Object164 | Object165 | Object166 + +union Union180 @Directive44(argument97 : ["stringValue15297"]) = Object3491 | Object3492 | Object3493 | Object3494 | Object3495 + +union Union181 @Directive44(argument97 : ["stringValue15525"]) = Object3583 | Object3584 | Object3585 | Object3586 | Object3587 + +union Union182 @Directive22(argument62 : "stringValue15795") @Directive44(argument97 : ["stringValue15796", "stringValue15797"]) = Object3683 | Object3684 | Object3685 | Object3690 | Object3691 | Object3692 | Object3693 | Object3694 | Object3695 | Object3696 | Object3697 | Object3698 | Object3699 | Object3700 | Object3701 | Object3702 | Object3703 | Object3704 | Object3705 | Object3706 | Object3707 | Object3708 | Object3709 | Object3710 | Object3711 | Object3712 | Object3715 | Object3716 | Object3717 | Object3718 | Object3719 | Object3720 | Object3721 | Object3722 | Object3723 | Object3724 | Object3725 | Object3726 | Object3727 | Object3728 | Object3729 | Object3730 | Object3731 + +union Union183 @Directive44(argument97 : ["stringValue16190"]) = Object373 | Object374 | Object376 | Object377 + +union Union184 @Directive44(argument97 : ["stringValue16453"]) = Object3834 | Object3835 | Object3836 | Object3837 | Object3838 + +union Union185 @Directive44(argument97 : ["stringValue16632"]) = Object378 | Object379 | Object381 | Object382 + +union Union186 @Directive22(argument62 : "stringValue17908") @Directive44(argument97 : ["stringValue17909", "stringValue17910"]) = Object4073 | Object4074 | Object4075 | Object4076 + +union Union187 @Directive22(argument62 : "stringValue18616") @Directive44(argument97 : ["stringValue18617", "stringValue18618"]) = Object4151 | Object4152 | Object4153 + +union Union188 @Directive22(argument62 : "stringValue19195") @Directive44(argument97 : ["stringValue19196", "stringValue19197"]) = Object4232 + +union Union189 @Directive22(argument62 : "stringValue19920") @Directive44(argument97 : ["stringValue19921", "stringValue19922"]) = Object4355 | Object4374 + +union Union19 @Directive44(argument97 : ["stringValue554"]) = Object167 + +union Union190 @Directive22(argument62 : "stringValue19931") @Directive44(argument97 : ["stringValue19932", "stringValue19933"]) = Object4356 | Object4357 | Object4359 | Object4360 | Object4361 | Object4362 | Object4364 + +union Union191 @Directive22(argument62 : "stringValue19983") @Directive44(argument97 : ["stringValue19984", "stringValue19985"]) = Object4366 | Object4370 | Object4371 | Object4372 + +union Union192 @Directive22(argument62 : "stringValue19994") @Directive44(argument97 : ["stringValue19995", "stringValue19996"]) = Object4368 | Object4369 + +union Union193 @Directive22(argument62 : "stringValue20037") @Directive44(argument97 : ["stringValue20038", "stringValue20039"]) = Object4375 + +union Union194 @Directive22(argument62 : "stringValue20056") @Directive44(argument97 : ["stringValue20057", "stringValue20058"]) = Object4379 | Object4380 + +union Union195 @Directive22(argument62 : "stringValue20444") @Directive44(argument97 : ["stringValue20445", "stringValue20446"]) = Object3459 | Object3460 | Object3464 | Object4396 | Object4397 | Object4399 | Object4418 | Object4420 | Object4433 + +union Union196 @Directive22(argument62 : "stringValue20700") @Directive44(argument97 : ["stringValue20701", "stringValue20702"]) = Object4403 | Object4441 + +union Union197 @Directive22(argument62 : "stringValue21074") @Directive44(argument97 : ["stringValue21075", "stringValue21076"]) = Object4470 | Object4473 + +union Union198 @Directive22(argument62 : "stringValue21455") @Directive44(argument97 : ["stringValue21456", "stringValue21457", "stringValue21458"]) = Object4501 + +union Union199 @Directive22(argument62 : "stringValue21494") @Directive44(argument97 : ["stringValue21495", "stringValue21496", "stringValue21497"]) = Object4505 + +union Union2 @Directive44(argument97 : ["stringValue181"]) = Object21 | Object22 + +union Union20 @Directive44(argument97 : ["stringValue557"]) = Object168 + +union Union200 @Directive44(argument97 : ["stringValue22551"]) = Object4611 | Object4612 | Object4620 | Object4623 | Object4624 | Object4626 | Object4628 | Object4629 | Object4630 + +union Union201 @Directive44(argument97 : ["stringValue23274", "stringValue23275"]) = Object4841 | Object4843 | Object4864 | Object4865 | Object4893 | Object4894 | Object4895 | Object4896 | Object4897 | Object4908 | Object4911 | Object4912 | Object4913 | Object4915 | Object4916 | Object4917 | Object4918 + +union Union202 @Directive44(argument97 : ["stringValue23310", "stringValue23311"]) = Object4849 + +union Union203 @Directive44(argument97 : ["stringValue23470", "stringValue23471"]) = Object4875 | Object4876 | Object4878 | Object4879 | Object4880 | Object4881 + +union Union204 @Directive44(argument97 : ["stringValue23577", "stringValue23578"]) = Object4902 | Object4903 | Object4904 | Object4905 | Object4906 + +union Union205 @Directive44(argument97 : ["stringValue23720", "stringValue23721"]) = Object4933 | Object4934 | Object4937 + +union Union206 @Directive44(argument97 : ["stringValue23785", "stringValue23786"]) = Object4948 | Object4952 | Object4953 | Object4954 | Object4955 | Object4956 | Object4957 | Object4959 + +union Union207 @Directive44(argument97 : ["stringValue24169"]) = Object22 | Object416 | Object418 | Object4980 | Object4981 | Object4982 + +union Union208 @Directive44(argument97 : ["stringValue24278"]) = Object4997 | Object5015 | Object5020 | Object5021 | Object5022 | Object5024 | Object5032 | Object5033 | Object5034 | Object5035 | Object5036 | Object5037 | Object5040 | Object5043 | Object5044 | Object5045 + +union Union209 @Directive44(argument97 : ["stringValue24780"]) = Object5123 | Object5126 + +union Union21 @Directive44(argument97 : ["stringValue562"]) = Object170 + +union Union210 @Directive44(argument97 : ["stringValue26016"]) = Object5347 | Object5348 | Object5349 | Object5350 | Object5351 | Object5352 | Object5353 | Object5354 | Object5355 | Object5356 | Object5357 | Object5358 | Object5359 | Object5360 + +union Union211 @Directive44(argument97 : ["stringValue26365"]) = Object5468 | Object5469 | Object5470 | Object5471 | Object5472 | Object5473 | Object5474 | Object5475 | Object5476 | Object5477 | Object5478 | Object5479 | Object5480 | Object5481 | Object5482 | Object5483 | Object5484 | Object5485 | Object5486 | Object5487 | Object5488 | Object5489 + +union Union212 @Directive44(argument97 : ["stringValue26413"]) = Object5490 | Object5491 | Object5492 | Object5493 | Object5495 | Object5496 | Object5497 | Object5498 | Object5499 | Object5500 | Object5501 + +union Union213 @Directive44(argument97 : ["stringValue26504"]) = Object364 | Object366 | Object5528 | Object5531 | Object5532 | Object5533 | Object5536 | Object5538 + +union Union214 @Directive44(argument97 : ["stringValue26755"]) = Object5601 | Object5602 | Object5606 | Object5607 | Object5608 + +union Union215 @Directive44(argument97 : ["stringValue26964"]) = Object5663 | Object5664 + +union Union216 @Directive44(argument97 : ["stringValue27123"]) = Object5707 + +union Union217 @Directive44(argument97 : ["stringValue28633"]) = Object6016 | Object6021 | Object6029 | Object6030 | Object6041 | Object6042 | Object6051 | Object6063 + +union Union218 @Directive44(argument97 : ["stringValue28718"]) = Object6054 | Object6055 | Object6057 + +union Union219 @Directive44(argument97 : ["stringValue28750"]) = Object6068 | Object6069 | Object6070 | Object6075 | Object6076 | Object6077 | Object6078 | Object6079 | Object6080 | Object6081 | Object6082 | Object6083 | Object6084 | Object6085 | Object6086 | Object6087 | Object6088 | Object6089 | Object6090 | Object6091 | Object6092 | Object6093 | Object6094 | Object6095 | Object6096 | Object6097 | Object6100 | Object6101 | Object6102 | Object6103 | Object6104 | Object6105 | Object6106 | Object6107 | Object6108 | Object6109 | Object6110 | Object6111 | Object6112 | Object6113 | Object6114 | Object6115 | Object6116 + +union Union22 @Directive44(argument97 : ["stringValue568"]) = Object172 + +union Union220 @Directive22(argument62 : "stringValue30317") @Directive44(argument97 : ["stringValue30318", "stringValue30319"]) = Object6314 | Object6315 | Object6316 | Object6317 | Object6318 | Object6319 | Object6320 | Object6321 | Object6322 | Object6323 | Object6324 + +union Union221 @Directive22(argument62 : "stringValue30443") @Directive44(argument97 : ["stringValue30444", "stringValue30445"]) = Object6339 | Object6340 | Object6341 | Object6342 | Object878 + +union Union222 @Directive22(argument62 : "stringValue30840") @Directive44(argument97 : ["stringValue30838", "stringValue30839"]) = Object2365 | Object6410 + +union Union223 @Directive42(argument96 : ["stringValue30894"]) @Directive44(argument97 : ["stringValue30895", "stringValue30896"]) = Object6423 | Object6425 + +union Union224 @Directive22(argument62 : "stringValue31702") @Directive44(argument97 : ["stringValue31703", "stringValue31704"]) = Object6567 | Object6572 | Object6574 + +union Union225 @Directive22(argument62 : "stringValue31708") @Directive44(argument97 : ["stringValue31709", "stringValue31710"]) = Object6568 | Object6569 + +union Union226 @Directive22(argument62 : "stringValue31729") @Directive44(argument97 : ["stringValue31730", "stringValue31731"]) = Object6570 + +union Union227 @Directive22(argument62 : "stringValue31961") @Directive44(argument97 : ["stringValue31959", "stringValue31960"]) = Object6621 | Object6622 | Object6623 | Object6624 | Object6625 | Object6626 | Object6627 | Object6628 | Object6629 + +union Union228 @Directive22(argument62 : "stringValue32127") @Directive44(argument97 : ["stringValue32128", "stringValue32129"]) = Object6651 | Object6659 + +union Union229 @Directive22(argument62 : "stringValue32145") @Directive44(argument97 : ["stringValue32146", "stringValue32147"]) = Object6656 | Object6657 + +union Union23 @Directive44(argument97 : ["stringValue571"]) = Object173 + +union Union230 @Directive22(argument62 : "stringValue32951") @Directive44(argument97 : ["stringValue32950"]) = Object6772 | Object6779 | Object6780 | Object6781 + +union Union231 @Directive22(argument62 : "stringValue32964") @Directive44(argument97 : ["stringValue32963"]) = Object6772 | Object6779 | Object6780 | Object6781 | Object6782 | Object6784 + +union Union232 @Directive22(argument62 : "stringValue33344") @Directive44(argument97 : ["stringValue33345", "stringValue33346"]) = Object1551 | Object6842 | Object6843 | Object6865 | Object6867 | Object6869 | Object6870 | Object6872 + +union Union233 @Directive22(argument62 : "stringValue33385") @Directive44(argument97 : ["stringValue33386", "stringValue33387"]) = Object6848 | Object6849 | Object6850 | Object6853 | Object6854 | Object6857 | Object6858 | Object6859 | Object6860 | Object6862 | Object6864 + +union Union234 @Directive44(argument97 : ["stringValue33900"]) = Object6950 | Object6951 | Object6952 + +union Union235 @Directive44(argument97 : ["stringValue33922"]) = Object6957 | Object6958 | Object6960 + +union Union236 @Directive44(argument97 : ["stringValue33956"]) = Object4628 + +union Union237 @Directive44(argument97 : ["stringValue33957"]) = Object6969 + +union Union238 @Directive44(argument97 : ["stringValue33962"]) = Object4617 | Object4628 | Object6971 | Object6972 + +union Union239 @Directive44(argument97 : ["stringValue33974"]) = Object6975 | Object6977 | Object6979 + +union Union24 @Directive44(argument97 : ["stringValue574"]) = Object174 + +union Union240 @Directive44(argument97 : ["stringValue34015"]) = Object6991 | Object6993 + +union Union241 @Directive44(argument97 : ["stringValue34026"]) = Object6996 | Object7018 | Object7020 | Object7021 | Object7025 | Object7027 + +union Union242 @Directive44(argument97 : ["stringValue34047"]) = Object7005 | Object7006 | Object7007 | Object7008 + +union Union243 @Directive44(argument97 : ["stringValue34092"]) = Object7023 | Object7024 + +union Union244 @Directive44(argument97 : ["stringValue34107"]) = Object6986 | Object7030 | Object7031 | Object7033 + +union Union245 @Directive44(argument97 : ["stringValue34131"]) = Object7037 | Object7038 | Object7039 + +union Union246 @Directive44(argument97 : ["stringValue34224"]) = Object7062 | Object7063 | Object7064 | Object7065 + +union Union247 @Directive44(argument97 : ["stringValue34233"]) = Object7066 | Object7067 | Object7069 | Object7070 | Object7071 | Object7193 | Object7203 | Object7205 | Object7207 | Object7209 | Object7211 | Object7212 + +union Union248 @Directive44(argument97 : ["stringValue34264"]) = Object7080 | Object7081 | Object7082 | Object7083 | Object7084 | Object7085 | Object7086 + +union Union249 @Directive44(argument97 : ["stringValue34608"]) = Object7239 + +union Union25 @Directive44(argument97 : ["stringValue582"]) = Object177 + +union Union250 @Directive44(argument97 : ["stringValue34638"]) = Object7248 | Object7249 | Object7252 | Object7253 + +union Union251 @Directive44(argument97 : ["stringValue34730"]) = Object7270 | Object7282 | Object7284 | Object7286 + +union Union252 @Directive44(argument97 : ["stringValue34837"]) = Object7308 | Object7309 | Object7310 | Object7311 + +union Union253 @Directive44(argument97 : ["stringValue34851"]) = Object7313 | Object7314 + +union Union254 @Directive44(argument97 : ["stringValue35124"]) = Object21 | Object22 | Object4981 | Object4982 | Object7384 | Object7385 | Object7386 | Object7387 | Object7388 + +union Union255 @Directive44(argument97 : ["stringValue35146"]) = Object7381 | Object7382 + +union Union256 @Directive44(argument97 : ["stringValue35349"]) = Object7465 | Object7466 | Object7469 | Object7470 | Object7471 | Object7472 | Object7475 | Object7477 + +union Union257 @Directive44(argument97 : ["stringValue35442"]) = Object7430 | Object7505 | Object7506 + +union Union258 @Directive44(argument97 : ["stringValue35484"]) = Object7465 | Object7470 | Object7520 | Object7521 | Object7522 | Object7523 + +union Union259 @Directive44(argument97 : ["stringValue35655"]) = Object7578 | Object7581 + +union Union26 @Directive44(argument97 : ["stringValue607"]) = Object187 + +union Union260 @Directive44(argument97 : ["stringValue35912"]) = Object7652 | Object7653 | Object7654 | Object7655 | Object7656 + +union Union261 @Directive44(argument97 : ["stringValue35962"]) = Object7671 | Object7672 | Object7673 | Object7678 | Object7679 + +union Union262 @Directive44(argument97 : ["stringValue35973"]) = Object7675 | Object7676 + +union Union263 @Directive44(argument97 : ["stringValue35987"]) = Object7681 | Object7682 | Object7688 | Object7689 | Object7690 | Object7691 + +union Union264 @Directive44(argument97 : ["stringValue35992"]) = Object7683 | Object7684 | Object7685 | Object7686 | Object7687 + +union Union265 @Directive44(argument97 : ["stringValue36081"]) = Object7709 | Object7710 | Object7711 | Object7712 | Object7713 | Object7714 | Object7715 | Object7716 | Object7717 | Object7718 | Object7719 | Object7720 | Object7722 | Object7723 | Object7724 + +union Union266 @Directive44(argument97 : ["stringValue36241"]) = Object7765 | Object7767 + +union Union267 @Directive44(argument97 : ["stringValue36458"]) = Object7811 + +union Union268 @Directive44(argument97 : ["stringValue36563"]) = Object7838 | Object7840 + +union Union269 @Directive44(argument97 : ["stringValue36892"]) = Object7955 | Object7956 | Object7957 | Object7958 | Object7959 | Object7960 | Object7961 | Object7962 | Object7963 | Object7964 | Object7965 + +union Union27 @Directive44(argument97 : ["stringValue610"]) = Object188 + +union Union270 @Directive44(argument97 : ["stringValue37062"]) = Object8031 | Object8032 + +union Union271 @Directive44(argument97 : ["stringValue37116"]) = Object8054 + +union Union272 @Directive44(argument97 : ["stringValue37166"]) = Object8068 | Object8069 | Object8070 | Object8075 | Object8077 | Object8078 | Object8079 + +union Union273 @Directive44(argument97 : ["stringValue37174"]) = Object8071 | Object8073 | Object8074 + +union Union274 @Directive44(argument97 : ["stringValue37250"]) = Object8099 | Object8111 | Object8115 + +union Union275 @Directive44(argument97 : ["stringValue37274"]) = Object8110 + +union Union276 @Directive44(argument97 : ["stringValue37637"]) = Object8262 | Object8267 | Object8268 | Object8632 | Object8633 | Object8640 | Object8643 | Object8644 | Object8646 | Object8649 | Object8650 | Object8660 | Object8664 | Object8666 | Object8669 | Object8674 | Object8677 | Object8678 | Object8679 | Object8680 | Object8682 | Object8684 | Object8687 | Object8688 | Object8691 | Object8692 | Object8694 | Object8695 | Object8696 | Object8697 + +union Union277 @Directive44(argument97 : ["stringValue37743"]) = Object8306 + +union Union278 @Directive44(argument97 : ["stringValue37846"]) = Object8353 + +union Union279 @Directive44(argument97 : ["stringValue37862"]) = Object8358 | Object8359 | Object8360 + +union Union28 @Directive44(argument97 : ["stringValue613"]) = Object189 + +union Union280 @Directive44(argument97 : ["stringValue37892"]) = Object8370 | Object8371 | Object8372 | Object8377 | Object8378 + +union Union281 @Directive44(argument97 : ["stringValue37902"]) = Object8374 | Object8375 + +union Union282 @Directive44(argument97 : ["stringValue37916"]) = Object8380 | Object8381 | Object8387 | Object8388 | Object8389 | Object8390 + +union Union283 @Directive44(argument97 : ["stringValue37921"]) = Object8382 | Object8383 | Object8384 | Object8385 | Object8386 + +union Union284 @Directive44(argument97 : ["stringValue38059"]) = Object8439 | Object8440 | Object8442 | Object8443 | Object8444 | Object8445 + +union Union285 @Directive44(argument97 : ["stringValue38261"]) = Object8527 | Object8528 | Object8529 + +union Union286 @Directive44(argument97 : ["stringValue38291"]) = Object8541 | Object8548 + +union Union287 @Directive44(argument97 : ["stringValue38365"]) = Object8575 | Object8577 + +union Union288 @Directive44(argument97 : ["stringValue38510"]) = Object8642 + +union Union289 @Directive44(argument97 : ["stringValue38555"]) = Object8262 | Object8267 | Object8663 | Object8664 | Object8665 + +union Union29 @Directive44(argument97 : ["stringValue622"]) = Object192 + +union Union290 @Directive44(argument97 : ["stringValue38730"]) = Object8700 | Object8730 | Object8731 + +union Union291 @Directive44(argument97 : ["stringValue39066"]) = Object8828 | Object8829 + +union Union292 @Directive44(argument97 : ["stringValue39075"]) = Object8832 + +union Union293 @Directive44(argument97 : ["stringValue39518"]) = Object8956 | Object8957 | Object8960 | Object8961 | Object8962 | Object8963 | Object8966 | Object8968 | Object8969 + +union Union294 @Directive44(argument97 : ["stringValue39547"]) = Object8970 | Object8971 + +union Union295 @Directive44(argument97 : ["stringValue39576"]) = Object8982 | Object8984 + +union Union296 @Directive44(argument97 : ["stringValue39794"]) = Object9061 | Object9063 | Object9064 | Object9065 | Object9066 | Object9067 | Object9068 | Object9069 + +union Union297 @Directive44(argument97 : ["stringValue39810"]) = Object9070 + +union Union298 @Directive44(argument97 : ["stringValue39824"]) = Object9069 | Object9075 | Object9076 + +union Union299 @Directive44(argument97 : ["stringValue39837"]) = Object9058 + +union Union3 @Directive44(argument97 : ["stringValue186"]) = Object23 + +union Union30 @Directive44(argument97 : ["stringValue628"]) = Object194 + +union Union300 @Directive44(argument97 : ["stringValue39865"]) = Object9063 | Object9064 | Object9092 | Object9093 + +union Union301 @Directive44(argument97 : ["stringValue39890"]) = Object9064 | Object9077 | Object9092 | Object9094 | Object9099 + +union Union302 @Directive44(argument97 : ["stringValue40329"]) = Object5455 | Object9207 | Object9213 | Object9214 | Object9215 | Object9221 | Object9224 | Object9225 | Object9227 | Object9228 | Object9229 | Object9232 | Object9233 | Object9234 | Object9235 | Object9236 | Object9237 | Object9238 | Object9240 | Object9241 | Object9242 | Object9243 | Object9244 | Object9246 | Object9247 | Object9248 | Object9249 | Object9250 | Object9251 | Object9252 | Object9253 | Object9254 | Object9256 | Object9257 | Object9258 | Object9259 | Object9260 | Object9262 | Object9263 | Object9264 | Object9265 | Object9266 | Object9267 | Object9269 | Object9270 | Object9271 | Object9275 | Object9276 | Object9277 | Object9278 | Object9279 | Object9280 | Object9281 | Object9282 | Object9284 | Object9285 | Object9287 | Object9288 | Object9289 | Object9290 | Object9291 | Object9292 | Object9294 | Object9295 | Object9296 | Object9297 | Object9299 | Object9300 | Object9302 | Object9304 | Object9306 | Object9307 | Object9308 | Object9309 | Object9310 + +union Union303 @Directive44(argument97 : ["stringValue40338"]) = Object9210 + +union Union304 @Directive44(argument97 : ["stringValue40656"]) = Object9353 + +union Union305 @Directive44(argument97 : ["stringValue40684"]) = Object9361 + +union Union306 @Directive44(argument97 : ["stringValue40687"]) = Object9362 | Object9364 | Object9366 + +union Union307 @Directive44(argument97 : ["stringValue40883"]) = Object9437 | Object9438 | Object9439 | Object9444 | Object9445 + +union Union308 @Directive44(argument97 : ["stringValue40893"]) = Object9441 | Object9442 + +union Union309 @Directive44(argument97 : ["stringValue40907"]) = Object9447 | Object9448 | Object9454 | Object9455 | Object9456 | Object9457 + +union Union31 @Directive44(argument97 : ["stringValue633"]) = Object196 + +union Union310 @Directive44(argument97 : ["stringValue40912"]) = Object9449 | Object9450 | Object9451 | Object9452 | Object9453 + +union Union311 @Directive44(argument97 : ["stringValue40949"]) = Object9464 + +union Union312 @Directive44(argument97 : ["stringValue41063"]) = Object9491 | Object9492 | Object9493 + +union Union313 @Directive44(argument97 : ["stringValue41078"]) = Object9492 | Object9495 | Object9498 + +union Union314 @Directive44(argument97 : ["stringValue41081"]) = Object9492 | Object9496 | Object9499 + +union Union315 @Directive44(argument97 : ["stringValue41098"]) = Object9492 | Object9493 + +union Union316 @Directive44(argument97 : ["stringValue41200"]) = Object9491 | Object9552 | Object9555 | Object9556 | Object9557 | Object9558 | Object9561 | Object9563 + +union Union317 @Directive44(argument97 : ["stringValue41339"]) = Object9609 + +union Union318 @Directive44(argument97 : ["stringValue41496"]) = Object9681 | Object9682 | Object9683 | Object9686 | Object9688 | Object9689 | Object9692 | Object9693 | Object9694 | Object9695 | Object9696 | Object9697 | Object9700 + +union Union319 @Directive44(argument97 : ["stringValue41728"]) = Object9783 | Object9784 | Object9785 | Object9790 | Object9791 + +union Union32 @Directive44(argument97 : ["stringValue636"]) = Object193 + +union Union320 @Directive44(argument97 : ["stringValue41738"]) = Object9787 | Object9788 + +union Union321 @Directive44(argument97 : ["stringValue41752"]) = Object2977 | Object9793 | Object9794 | Object9800 | Object9801 | Object9802 + +union Union322 @Directive44(argument97 : ["stringValue41757"]) = Object9795 | Object9796 | Object9797 | Object9798 | Object9799 + +union Union323 @Directive44(argument97 : ["stringValue41904"]) = Object9854 | Object9855 | Object9856 + +union Union324 @Directive44(argument97 : ["stringValue41997"]) = Object9893 | Object9894 | Object9895 | Object9896 | Object9897 | Object9898 | Object9899 | Object9900 | Object9901 | Object9902 | Object9903 | Object9904 | Object9905 | Object9906 | Object9907 + +union Union325 @Directive44(argument97 : ["stringValue42062"]) = Object9916 | Object9917 + +union Union326 @Directive44(argument97 : ["stringValue42074"]) = Object9737 | Object9813 + +union Union327 @Directive44(argument97 : ["stringValue42099"]) = Object10002 | Object10005 | Object10008 | Object10010 | Object10014 | Object10017 | Object10018 | Object10020 | Object10021 | Object10022 | Object10025 | Object10026 | Object10027 | Object10028 | Object10029 | Object10030 | Object10031 | Object10032 | Object10033 | Object10035 | Object10036 | Object10041 | Object10042 | Object10043 | Object10045 | Object10049 | Object10051 | Object10057 | Object10058 | Object10059 | Object10060 | Object10062 | Object10063 | Object10066 | Object10068 | Object10070 | Object10071 | Object10074 | Object10075 | Object10076 | Object10081 | Object10082 | Object10083 | Object10086 | Object10087 | Object10088 | Object10089 | Object10091 | Object10092 | Object10097 | Object10098 | Object10099 | Object10100 | Object10101 | Object10102 | Object10104 | Object10105 | Object10106 | Object10107 | Object10109 | Object10112 | Object10113 | Object10116 | Object10117 | Object10118 | Object10121 | Object10122 | Object10123 | Object10124 | Object10125 | Object10127 | Object10128 | Object10129 | Object9806 | Object9929 | Object9932 | Object9933 | Object9934 | Object9935 | Object9936 | Object9938 | Object9940 | Object9945 | Object9952 | Object9953 | Object9956 | Object9957 | Object9959 | Object9965 | Object9966 | Object9967 | Object9988 | Object9989 | Object9992 | Object9995 | Object9997 | Object9999 + +union Union328 @Directive44(argument97 : ["stringValue42215"]) = Object9983 | Object9984 | Object9985 | Object9986 + +union Union329 @Directive44(argument97 : ["stringValue43103"]) = Object10303 | Object10316 | Object10347 | Object10348 | Object10349 | Object10350 | Object10351 | Object10352 | Object10353 | Object10354 | Object10355 | Object10358 | Object10359 | Object10360 + +union Union33 @Directive44(argument97 : ["stringValue637"]) = Object178 + +union Union330 @Directive44(argument97 : ["stringValue43123"]) = Object10310 | Object10311 + +union Union331 @Directive44(argument97 : ["stringValue43130"]) = Object10313 | Object10314 | Object10315 + +union Union332 @Directive44(argument97 : ["stringValue43142"]) = Object10318 | Object10319 | Object10320 | Object10321 + +union Union333 @Directive44(argument97 : ["stringValue43153"]) = Object10323 + +union Union334 @Directive44(argument97 : ["stringValue43211"]) = Object10344 | Object10345 | Object10346 + +union Union335 @Directive44(argument97 : ["stringValue43281"]) = Object10367 | Object10368 | Object10376 | Object10386 | Object10387 | Object10390 | Object10395 | Object10397 | Object10398 | Object10405 | Object10407 | Object10412 | Object10414 | Object10415 | Object10416 | Object10422 | Object10423 | Object10424 | Object10426 | Object10429 | Object10430 | Object10431 + +union Union336 @Directive44(argument97 : ["stringValue43292"]) = Object10313 | Object10314 | Object10315 + +union Union337 @Directive44(argument97 : ["stringValue43310"]) = Object10313 | Object10314 | Object10315 | Object10380 | Object10381 | Object10382 + +union Union338 @Directive44(argument97 : ["stringValue43337"]) = Object10391 | Object10392 | Object10393 | Object10394 + +union Union339 @Directive44(argument97 : ["stringValue43410"]) = Object10420 | Object10421 + +union Union34 @Directive44(argument97 : ["stringValue638"]) = Object197 + +union Union340 @Directive44(argument97 : ["stringValue43753"]) = Object10529 + +union Union341 @Directive44(argument97 : ["stringValue43758"]) = Object10529 + +union Union342 @Directive44(argument97 : ["stringValue43761"]) = Object10529 + +union Union343 @Directive44(argument97 : ["stringValue43762"]) = Object10529 | Object10532 + +union Union344 @Directive44(argument97 : ["stringValue43767"]) = Object10529 + +union Union345 @Directive44(argument97 : ["stringValue43937"]) = Object10602 + +union Union346 @Directive44(argument97 : ["stringValue44051"]) = Object10627 | Object10628 | Object10629 | Object10630 | Object10631 | Object10632 + +union Union347 @Directive44(argument97 : ["stringValue44428"]) = Object10724 | Object10725 | Object10726 | Object10731 | Object10732 | Object10733 | Object10734 | Object10735 | Object10736 | Object10737 | Object10738 | Object10739 | Object10740 | Object10741 | Object10742 | Object10743 | Object10744 | Object10745 | Object10746 | Object10747 | Object10748 | Object10749 | Object10750 | Object10751 | Object10752 | Object10753 | Object10756 | Object10757 | Object10758 | Object10759 | Object10760 | Object10761 | Object10762 | Object10763 | Object10764 | Object10765 | Object10766 | Object10767 | Object10768 | Object10769 | Object10770 | Object10771 | Object10772 + +union Union348 @Directive44(argument97 : ["stringValue44580"]) = Object10779 | Object10780 | Object10781 | Object10782 | Object10783 | Object10784 | Object10785 | Object10786 + +union Union349 @Directive44(argument97 : ["stringValue44608"]) = Object10789 | Object10790 | Object10791 + +union Union35 @Directive44(argument97 : ["stringValue647"]) = Object200 + +union Union350 @Directive44(argument97 : ["stringValue44622"]) = Object10793 | Object10794 | Object10795 | Object10796 + +union Union351 @Directive44(argument97 : ["stringValue44656"]) = Object10805 | Object10806 + +union Union352 @Directive44(argument97 : ["stringValue44749"]) = Object3494 | Object3495 + +union Union353 @Directive44(argument97 : ["stringValue44751"]) = Object10845 | Object10849 | Object10850 | Object10852 | Object10853 | Object10854 | Object3495 + +union Union354 @Directive44(argument97 : ["stringValue45094"]) = Object10941 + +union Union355 @Directive44(argument97 : ["stringValue45117"]) = Object10948 | Object10949 | Object10950 + +union Union356 @Directive44(argument97 : ["stringValue45142"]) = Object10959 | Object10960 | Object10961 | Object10966 | Object10967 + +union Union357 @Directive44(argument97 : ["stringValue45152"]) = Object10963 | Object10964 + +union Union358 @Directive44(argument97 : ["stringValue45166"]) = Object10969 | Object10970 | Object10976 | Object10977 | Object10978 | Object10979 + +union Union359 @Directive44(argument97 : ["stringValue45171"]) = Object10971 | Object10972 | Object10973 | Object10974 | Object10975 + +union Union36 @Directive44(argument97 : ["stringValue669"]) = Object210 | Object211 | Object212 + +union Union360 @Directive44(argument97 : ["stringValue45453"]) = Object11046 | Object11047 | Object11048 | Object11053 | Object11054 + +union Union361 @Directive44(argument97 : ["stringValue45463"]) = Object11050 | Object11051 + +union Union362 @Directive44(argument97 : ["stringValue45477"]) = Object11056 | Object11057 | Object11063 | Object11064 | Object11065 | Object11066 + +union Union363 @Directive44(argument97 : ["stringValue45482"]) = Object11058 | Object11059 | Object11060 | Object11061 | Object11062 + +union Union364 @Directive44(argument97 : ["stringValue45557"]) = Object11089 + +union Union365 @Directive44(argument97 : ["stringValue45579"]) = Object11095 | Object11096 | Object11097 + +union Union366 @Directive44(argument97 : ["stringValue46028"]) = Object11211 | Object11212 + +union Union367 @Directive44(argument97 : ["stringValue46080"]) = Object11227 + +union Union368 @Directive44(argument97 : ["stringValue46083"]) = Object11228 + +union Union369 @Directive44(argument97 : ["stringValue46092"]) = Object11232 + +union Union37 @Directive44(argument97 : ["stringValue676"]) = Object213 + +union Union370 @Directive44(argument97 : ["stringValue46122"]) = Object11244 + +union Union371 @Directive44(argument97 : ["stringValue46208"]) = Object11272 + +union Union372 @Directive44(argument97 : ["stringValue46250"]) = Object11291 | Object11292 + +union Union373 @Directive44(argument97 : ["stringValue46426"]) = Object11367 + +union Union374 @Directive44(argument97 : ["stringValue46529"]) = Object11414 + +union Union375 @Directive44(argument97 : ["stringValue46545"]) = Object11419 | Object11420 | Object11421 + +union Union376 @Directive44(argument97 : ["stringValue46575"]) = Object11431 | Object11432 | Object11433 | Object11438 | Object11439 + +union Union377 @Directive44(argument97 : ["stringValue46585"]) = Object11435 | Object11436 + +union Union378 @Directive44(argument97 : ["stringValue46599"]) = Object11441 | Object11442 | Object11448 | Object11449 | Object11450 | Object11451 + +union Union379 @Directive44(argument97 : ["stringValue46604"]) = Object11443 | Object11444 | Object11445 | Object11446 | Object11447 + +union Union38 @Directive44(argument97 : ["stringValue702"]) = Object225 | Object232 + +union Union380 @Directive44(argument97 : ["stringValue46742"]) = Object11500 | Object11501 | Object11503 | Object11504 | Object11505 | Object11506 + +union Union381 @Directive44(argument97 : ["stringValue46944"]) = Object11588 | Object11589 | Object11590 + +union Union382 @Directive44(argument97 : ["stringValue46974"]) = Object11602 | Object11609 + +union Union383 @Directive44(argument97 : ["stringValue47048"]) = Object11636 | Object11638 + +union Union384 @Directive44(argument97 : ["stringValue47377"]) = Object11758 + +union Union385 @Directive44(argument97 : ["stringValue47613"]) = Object11825 + +union Union386 @Directive44(argument97 : ["stringValue48119"]) = Object11971 + +union Union387 @Directive44(argument97 : ["stringValue48222"]) = Object12018 + +union Union388 @Directive44(argument97 : ["stringValue48238"]) = Object12023 | Object12024 | Object12025 + +union Union389 @Directive44(argument97 : ["stringValue48268"]) = Object12035 | Object12036 | Object12037 | Object12042 | Object12043 + +union Union39 @Directive44(argument97 : ["stringValue725"]) = Object236 + +union Union390 @Directive44(argument97 : ["stringValue48278"]) = Object12039 | Object12040 + +union Union391 @Directive44(argument97 : ["stringValue48292"]) = Object12045 | Object12046 | Object12052 | Object12053 | Object12054 | Object12055 + +union Union392 @Directive44(argument97 : ["stringValue48297"]) = Object12047 | Object12048 | Object12049 | Object12050 | Object12051 + +union Union393 @Directive44(argument97 : ["stringValue48435"]) = Object12104 | Object12105 | Object12107 | Object12108 | Object12109 | Object12110 + +union Union394 @Directive44(argument97 : ["stringValue48637"]) = Object12192 | Object12193 | Object12194 + +union Union395 @Directive44(argument97 : ["stringValue48667"]) = Object12206 | Object12213 + +union Union396 @Directive44(argument97 : ["stringValue48741"]) = Object12240 | Object12242 + +union Union397 @Directive44(argument97 : ["stringValue48883"]) = Object12305 + +union Union398 @Directive44(argument97 : ["stringValue48935"]) = Object12322 | Object12324 | Object12332 | Object12333 | Object12351 | Object12352 | Object12353 | Object12354 | Object12355 | Object12357 | Object12359 | Object12360 | Object12361 | Object12362 | Object12363 | Object12364 | Object12365 + +union Union399 @Directive44(argument97 : ["stringValue49096"]) = Object12380 | Object12381 | Object12384 + +union Union4 @Directive44(argument97 : ["stringValue189"]) = Object24 | Object25 | Object26 | Object27 | Object28 | Object29 | Object30 | Object31 | Object32 | Object33 + +union Union40 @Directive44(argument97 : ["stringValue732"]) = Object238 + +union Union400 @Directive44(argument97 : ["stringValue49490"]) = Object12494 | Object12495 | Object12496 | Object12497 | Object12498 | Object12499 | Object12500 | Object12501 + +union Union401 @Directive44(argument97 : ["stringValue49518"]) = Object12504 | Object12505 | Object12506 + +union Union402 @Directive44(argument97 : ["stringValue49532"]) = Object12508 | Object12509 | Object12510 | Object12511 + +union Union403 @Directive44(argument97 : ["stringValue49721"]) = Object12555 | Object12556 | Object12557 | Object12562 | Object12563 + +union Union404 @Directive44(argument97 : ["stringValue49731"]) = Object12559 | Object12560 + +union Union405 @Directive44(argument97 : ["stringValue49745"]) = Object12565 | Object12566 | Object12572 | Object12573 | Object12574 | Object12575 + +union Union406 @Directive44(argument97 : ["stringValue49750"]) = Object12567 | Object12568 | Object12569 | Object12570 | Object12571 + +union Union407 @Directive44(argument97 : ["stringValue49825"]) = Object12598 + +union Union408 @Directive44(argument97 : ["stringValue49847"]) = Object12604 | Object12605 | Object12606 + +union Union409 @Directive44(argument97 : ["stringValue50009"]) = Object12651 | Object12653 + +union Union41 @Directive44(argument97 : ["stringValue735"]) = Object239 + +union Union410 @Directive44(argument97 : ["stringValue50047"]) = Object12662 | Object12663 | Object12667 | Object12668 | Object12669 | Object12672 | Object12673 | Object12676 | Object12677 | Object12684 | Object12685 | Object12686 | Object12687 | Object12689 | Object12692 | Object12695 | Object12697 | Object12698 | Object12699 | Object12700 | Object12704 | Object12705 | Object12706 + +union Union42 @Directive44(argument97 : ["stringValue741"]) = Object241 + +union Union43 @Directive44(argument97 : ["stringValue746"]) = Object243 + +union Union44 @Directive44(argument97 : ["stringValue749"]) = Object244 + +union Union45 @Directive44(argument97 : ["stringValue758"]) = Object248 + +union Union46 @Directive44(argument97 : ["stringValue761"]) = Object249 + +union Union47 @Directive44(argument97 : ["stringValue764"]) = Object250 + +union Union48 @Directive44(argument97 : ["stringValue785"]) = Object259 + +union Union49 @Directive44(argument97 : ["stringValue793"]) = Object262 + +union Union5 @Directive44(argument97 : ["stringValue214"]) = Object34 + +union Union50 @Directive44(argument97 : ["stringValue796"]) = Object263 + +union Union51 @Directive44(argument97 : ["stringValue803"]) = Object51 + +union Union52 @Directive44(argument97 : ["stringValue804"]) = Object266 + +union Union53 @Directive44(argument97 : ["stringValue809"]) = Object268 + +union Union54 @Directive44(argument97 : ["stringValue812"]) = Object269 + +union Union55 @Directive44(argument97 : ["stringValue822"]) = Object273 + +union Union56 @Directive44(argument97 : ["stringValue859"]) = Object289 + +union Union57 @Directive44(argument97 : ["stringValue864"]) = Object291 + +union Union58 @Directive44(argument97 : ["stringValue870"]) = Object293 + +union Union59 @Directive44(argument97 : ["stringValue877"]) = Object296 + +union Union6 @Directive44(argument97 : ["stringValue221"]) = Object37 | Object38 | Object39 | Object40 | Object41 + +union Union60 @Directive44(argument97 : ["stringValue882"]) = Object297 + +union Union61 @Directive44(argument97 : ["stringValue883"]) = Object298 + +union Union62 @Directive44(argument97 : ["stringValue886"]) = Object299 + +union Union63 @Directive44(argument97 : ["stringValue889"]) = Object300 + +union Union64 @Directive44(argument97 : ["stringValue892"]) = Object301 + +union Union65 @Directive44(argument97 : ["stringValue895"]) = Object302 + +union Union66 @Directive44(argument97 : ["stringValue898"]) = Object303 + +union Union67 @Directive44(argument97 : ["stringValue901"]) = Object304 + +union Union68 @Directive44(argument97 : ["stringValue905"]) = Object305 + +union Union69 @Directive44(argument97 : ["stringValue908"]) = Object306 + +union Union7 @Directive44(argument97 : ["stringValue233"]) = Object42 + +union Union70 @Directive44(argument97 : ["stringValue911"]) = Object307 + +union Union71 @Directive44(argument97 : ["stringValue914"]) = Object308 + +union Union72 @Directive44(argument97 : ["stringValue917"]) = Object309 + +union Union73 @Directive44(argument97 : ["stringValue922"]) = Object195 + +union Union74 @Directive44(argument97 : ["stringValue923"]) = Object311 + +union Union75 @Directive22(argument62 : "stringValue926") @Directive44(argument97 : ["stringValue927", "stringValue928"]) = Object312 | Object314 | Object316 | Object317 | Object319 + +union Union76 @Directive44(argument97 : ["stringValue965"]) = Object320 | Object321 + +union Union77 @Directive44(argument97 : ["stringValue971"]) = Object322 | Object323 | Object330 | Object331 | Object332 | Object333 + +union Union78 @Directive44(argument97 : ["stringValue977"]) = Object324 | Object326 | Object327 | Object328 | Object329 + +union Union79 @Directive44(argument97 : ["stringValue1000"]) = Object334 | Object335 | Object336 | Object339 | Object340 + +union Union8 @Directive44(argument97 : ["stringValue250"]) = Object50 + +union Union80 @Directive44(argument97 : ["stringValue1016"]) = Object341 + +union Union81 @Directive44(argument97 : ["stringValue1019"]) = Object342 | Object351 | Object352 + +union Union82 @Directive44(argument97 : ["stringValue1029"]) = Object346 + +union Union83 @Directive44(argument97 : ["stringValue1050"]) = Object353 | Object354 | Object355 | Object356 | Object357 + +union Union84 @Directive44(argument97 : ["stringValue1061"]) = Object358 | Object359 | Object360 | Object361 | Object362 + +union Union85 @Directive44(argument97 : ["stringValue1072"]) = Object363 | Object364 | Object365 | Object366 | Object367 + +union Union86 @Directive44(argument97 : ["stringValue1083"]) = Object368 | Object369 | Object370 + +union Union87 @Directive22(argument62 : "stringValue1090") @Directive44(argument97 : ["stringValue1091", "stringValue1092"]) = Object371 | Object372 + +union Union88 @Directive44(argument97 : ["stringValue1100"]) = Object373 | Object374 | Object375 | Object376 | Object377 + +union Union89 @Directive44(argument97 : ["stringValue1111"]) = Object378 | Object379 | Object380 | Object381 | Object382 + +union Union9 @Directive44(argument97 : ["stringValue341"]) = Object84 + +union Union90 @Directive44(argument97 : ["stringValue1122"]) = Object383 + +union Union91 @Directive22(argument62 : "stringValue1215") @Directive44(argument97 : ["stringValue1216", "stringValue1217"]) = Object400 | Object401 | Object402 | Object403 + +union Union92 @Directive22(argument62 : "stringValue1483") @Directive44(argument97 : ["stringValue1484", "stringValue1485"]) = Object453 + +union Union93 @Directive22(argument62 : "stringValue2411") @Directive44(argument97 : ["stringValue2412", "stringValue2413"]) = Object1001 | Object1002 | Object1005 | Object1019 | Object1043 | Object1046 | Object1048 | Object1051 | Object1054 | Object1056 | Object1061 | Object1064 | Object1066 | Object1076 | Object1080 | Object1082 | Object1084 | Object1088 | Object1089 | Object1095 | Object1097 | Object1099 | Object1102 | Object1105 | Object1110 | Object1114 | Object1117 | Object1118 | Object1120 | Object1121 | Object1122 | Object1124 | Object1126 | Object1128 | Object1130 | Object1132 | Object1134 | Object1135 | Object1137 | Object1138 | Object1140 | Object1142 | Object1144 | Object1147 | Object1149 | Object1151 | Object1153 | Object1154 | Object1159 | Object1160 | Object1161 | Object1163 | Object1165 | Object1167 | Object1169 | Object1170 | Object1171 | Object1172 | Object1173 | Object1174 | Object1177 | Object1178 | Object1179 | Object1180 | Object1181 | Object1184 | Object1185 | Object1186 | Object1190 | Object1191 | Object1193 | Object1194 | Object1202 | Object1203 | Object1205 | Object1207 | Object1211 | Object1212 | Object1213 | Object1214 | Object1215 | Object1217 | Object1218 | Object1219 | Object1220 | Object1227 | Object1228 | Object1229 | Object1231 | Object1232 | Object1234 | Object1235 | Object1236 | Object1237 | Object1238 | Object1239 | Object1244 | Object1245 | Object1247 | Object1249 | Object1250 | Object1251 | Object1254 | Object1257 | Object1258 | Object1262 | Object1263 | Object1264 | Object1265 | Object1266 | Object1267 | Object1268 | Object1269 | Object1270 | Object1271 | Object1272 | Object1273 | Object1274 | Object1275 | Object1289 | Object1291 | Object1292 | Object1294 | Object1312 | Object1313 | Object1314 | Object1316 | Object1317 | Object1318 | Object1319 | Object1320 | Object1321 | Object1322 | Object1323 | Object1326 | Object1327 | Object1332 | Object1333 | Object1334 | Object1335 | Object1336 | Object1337 | Object1338 | Object1339 | Object1340 | Object1341 | Object1342 | Object1343 | Object1344 | Object1345 | Object1346 | Object1347 | Object1349 | Object1350 | Object1351 | Object1352 | Object1353 | Object1354 | Object1355 | Object1357 | Object1358 | Object1359 | Object1360 | Object1361 | Object1362 | Object1364 | Object1365 | Object1367 | Object1368 | Object1369 | Object1370 | Object1371 | Object1373 | Object1376 | Object1377 | Object1379 | Object1380 | Object1381 | Object1382 | Object1383 | Object1384 | Object1385 | Object1386 | Object1387 | Object1388 | Object1389 | Object1392 | Object1393 | Object1395 | Object1398 | Object1403 | Object1405 | Object1407 | Object1408 | Object1410 | Object1413 | Object1415 | Object1416 | Object1417 | Object1418 | Object1419 | Object1420 | Object1421 | Object1422 | Object1426 | Object1428 | Object1429 | Object1432 | Object1433 | Object1436 | Object1437 | Object1440 | Object1441 | Object1455 | Object1456 | Object1457 | Object1459 | Object1462 | Object1463 | Object1465 | Object1466 | Object1467 | Object1468 | Object1469 | Object1470 | Object1474 | Object1475 | Object1476 | Object1477 | Object1478 | Object1479 | Object1480 | Object1484 | Object1486 | Object1487 | Object1488 | Object1489 | Object1490 | Object1491 | Object1492 | Object1493 | Object1494 | Object1495 | Object1498 | Object1499 | Object1502 | Object1503 | Object1504 | Object1505 | Object1507 | Object1509 | Object1510 | Object1511 | Object1512 | Object1513 | Object1514 | Object1515 | Object1516 | Object1517 | Object1518 | Object1519 | Object1520 | Object1521 | Object1522 | Object1524 | Object1525 | Object1526 | Object1528 | Object1529 | Object1530 | Object421 | Object475 | Object481 | Object482 | Object483 | Object484 | Object485 | Object489 | Object490 | Object492 | Object493 | Object495 | Object500 | Object501 | Object507 | Object509 | Object510 | Object511 | Object512 | Object575 | Object599 | Object601 | Object604 | Object605 | Object606 | Object607 | Object608 | Object612 | Object613 | Object616 | Object617 | Object618 | Object619 | Object622 | Object623 | Object627 | Object641 | Object643 | Object644 | Object645 | Object647 | Object648 | Object649 | Object670 | Object671 | Object674 | Object677 | Object679 | Object682 | Object683 | Object687 | Object690 | Object691 | Object695 | Object697 | Object698 | Object699 | Object700 | Object704 | Object705 | Object706 | Object707 | Object710 | Object711 | Object712 | Object713 | Object714 | Object715 | Object716 | Object717 | Object718 | Object720 | Object726 | Object730 | Object732 | Object735 | Object736 | Object737 | Object738 | Object740 | Object743 | Object744 | Object800 | Object808 | Object811 | Object812 | Object813 | Object814 | Object817 | Object818 | Object819 | Object820 | Object821 | Object822 | Object823 | Object824 | Object826 | Object828 | Object829 | Object831 | Object835 | Object836 | Object838 | Object839 | Object841 | Object843 | Object847 | Object850 | Object852 | Object858 | Object859 | Object860 | Object861 | Object864 | Object865 | Object867 | Object876 | Object879 | Object881 | Object883 | Object884 | Object885 | Object895 | Object896 | Object908 | Object916 | Object919 | Object925 | Object928 | Object930 | Object945 | Object948 | Object950 | Object968 | Object973 | Object975 | Object978 | Object980 | Object982 | Object984 | Object987 | Object990 | Object993 | Object995 + +union Union94 @Directive42(argument96 : ["stringValue2828"]) @Directive44(argument97 : ["stringValue2829", "stringValue2830"]) = Object549 | Object550 | Object551 | Object552 | Object553 + +union Union95 @Directive22(argument62 : "stringValue2862") @Directive44(argument97 : ["stringValue2863", "stringValue2864"]) = Object555 | Object556 + +union Union96 @Directive42(argument96 : ["stringValue2885"]) @Directive44(argument97 : ["stringValue2886", "stringValue2887"]) = Object506 | Object559 | Object560 | Object561 | Object562 | Object563 + +union Union97 @Directive42(argument96 : ["stringValue2913"]) @Directive44(argument97 : ["stringValue2914", "stringValue2915"]) = Object564 | Object565 | Object566 | Object567 | Object568 + +union Union98 @Directive22(argument62 : "stringValue2966") @Directive44(argument97 : ["stringValue2967", "stringValue2968"]) = Object572 | Object573 + +union Union99 @Directive22(argument62 : "stringValue3299") @Directive44(argument97 : ["stringValue3300", "stringValue3301"]) = Object525 | Object634 + +type Object1 @Directive20(argument58 : "stringValue11", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue10") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue12", "stringValue13", "stringValue14"]) @Directive45(argument98 : ["stringValue15"]) { + field17: String + field18: Scalar1 + field19: Enum2 @deprecated + field20: String @deprecated + field21: String @deprecated + field22: Object3 @Directive41 @deprecated + field5: String + field6: [Object2] +} + +type Object10 @Directive20(argument58 : "stringValue80", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue79") @Directive31 @Directive44(argument97 : ["stringValue81", "stringValue82"]) { + field101: Enum9 + field88: String + field89: Enum6 + field90: Enum7 + field91: Object11 +} + +type Object100 @Directive21(argument61 : "stringValue386") @Directive44(argument97 : ["stringValue385"]) { + field675: Enum57 + field676: String + field677: Boolean + field678: Boolean + field679: Int + field680: String + field681: Scalar2 + field682: String + field683: Int + field684: String + field685: Float + field686: Int + field687: Enum58 +} + +type Object1000 @Directive20(argument58 : "stringValue5179", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5178") @Directive31 @Directive44(argument97 : ["stringValue5180", "stringValue5181"]) { + field5792: String + field5793: [Object427] + field5794: [String] +} + +type Object10000 @Directive21(argument61 : "stringValue42251") @Directive44(argument97 : ["stringValue42250"]) { + field52457: String + field52458: String + field52459: Object10001 + field52462: Object10001 + field52463: Object10001 + field52464: Int +} + +type Object10001 @Directive21(argument61 : "stringValue42253") @Directive44(argument97 : ["stringValue42252"]) { + field52460: Boolean + field52461: Object9608 +} + +type Object10002 @Directive21(argument61 : "stringValue42255") @Directive44(argument97 : ["stringValue42254"]) { + field52465: [Object10003] +} + +type Object10003 @Directive21(argument61 : "stringValue42257") @Directive44(argument97 : ["stringValue42256"]) { + field52466: String! + field52467: String! + field52468: [Object10004]! +} + +type Object10004 @Directive21(argument61 : "stringValue42259") @Directive44(argument97 : ["stringValue42258"]) { + field52469: Scalar2 + field52470: Scalar2 + field52471: String + field52472: String + field52473: String + field52474: Object2967! +} + +type Object10005 @Directive21(argument61 : "stringValue42261") @Directive44(argument97 : ["stringValue42260"]) { + field52475: String + field52476: [Enum2377] + field52477: Object9968 + field52478: Object9975 + field52479: Object9993 + field52480: Object9973! + field52481: Object10006 +} + +type Object10006 @Directive21(argument61 : "stringValue42263") @Directive44(argument97 : ["stringValue42262"]) { + field52482: Object9955 + field52483: Object9955 + field52484: Object9955 + field52485: Object9955 + field52486: Object9955 + field52487: Object9955 + field52488: Object10007 +} + +type Object10007 @Directive21(argument61 : "stringValue42265") @Directive44(argument97 : ["stringValue42264"]) { + field52489: Float + field52490: Float +} + +type Object10008 @Directive21(argument61 : "stringValue42267") @Directive44(argument97 : ["stringValue42266"]) { + field52491: String + field52492: [Enum2377] + field52493: [Object10009!] + field52500: Object9608 +} + +type Object10009 @Directive21(argument61 : "stringValue42269") @Directive44(argument97 : ["stringValue42268"]) { + field52494: Scalar2 + field52495: Object2967 + field52496: Int + field52497: String + field52498: String + field52499: Object9608 +} + +type Object1001 @Directive22(argument62 : "stringValue5186") @Directive31 @Directive44(argument97 : ["stringValue5187", "stringValue5188"]) { + field5802: String + field5803: Int + field5804: Int + field5805: Object452 +} + +type Object10010 @Directive21(argument61 : "stringValue42271") @Directive44(argument97 : ["stringValue42270"]) { + field52501: String + field52502: [Enum2377] @deprecated + field52503: [Object9608] + field52504: [Object9931] + field52505: [Object9976] + field52506: Object9955 + field52507: Object9975 + field52508: Object9993 + field52509: [Object10011] + field52514: [Object9954] + field52515: Object2949 + field52516: [Object10013] +} + +type Object10011 @Directive21(argument61 : "stringValue42273") @Directive44(argument97 : ["stringValue42272"]) { + field52510: String + field52511: [Object10012] +} + +type Object10012 @Directive21(argument61 : "stringValue42275") @Directive44(argument97 : ["stringValue42274"]) { + field52512: String + field52513: Enum2380 +} + +type Object10013 @Directive21(argument61 : "stringValue42278") @Directive44(argument97 : ["stringValue42277"]) { + field52517: String + field52518: String + field52519: String + field52520: String + field52521: String + field52522: String + field52523: String + field52524: String + field52525: String + field52526: Object2949 +} + +type Object10014 @Directive21(argument61 : "stringValue42280") @Directive44(argument97 : ["stringValue42279"]) { + field52527: String + field52528: [Enum2377] @deprecated + field52529: Boolean + field52530: String + field52531: Object9993 + field52532: Float + field52533: Float + field52534: Object9608 + field52535: String + field52536: [Object10015] + field52555: Object9975 + field52556: String + field52557: Object9955 + field52558: Object2949 + field52559: Object9955 + field52560: Boolean + field52561: Object9955 + field52562: [Object2950] + field52563: Object9968 + field52564: Object9955 + field52565: Object9955 + field52566: Object2949 + field52567: Object2949 + field52568: Object2949 + field52569: Object2949 + field52570: Object2949 + field52571: Object2949 + field52572: Object2949 +} + +type Object10015 @Directive21(argument61 : "stringValue42282") @Directive44(argument97 : ["stringValue42281"]) { + field52537: Enum2381 + field52538: String + field52539: [Object10016] + field52551: Object9955 + field52552: Int + field52553: String + field52554: Object2949 +} + +type Object10016 @Directive21(argument61 : "stringValue42285") @Directive44(argument97 : ["stringValue42284"]) { + field52540: String + field52541: String + field52542: Float + field52543: Float + field52544: Int + field52545: [String] + field52546: String + field52547: String + field52548: String + field52549: String + field52550: [String] +} + +type Object10017 @Directive21(argument61 : "stringValue42287") @Directive44(argument97 : ["stringValue42286"]) { + field52573: String + field52574: Object9955 + field52575: [String] + field52576: Float + field52577: Float + field52578: [Object10015] + field52579: Object2949 + field52580: String + field52581: Object9811 +} + +type Object10018 @Directive21(argument61 : "stringValue42289") @Directive44(argument97 : ["stringValue42288"]) { + field52582: [Object10019!] + field52589: Object9608 + field52590: Object9608 + field52591: Object9608 + field52592: Enum2382 + field52593: Interface129 + field52594: Object9951 + field52595: Object9950 +} + +type Object10019 @Directive21(argument61 : "stringValue42291") @Directive44(argument97 : ["stringValue42290"]) { + field52583: String + field52584: String + field52585: Int + field52586: Object2949 + field52587: String + field52588: String +} + +type Object1002 implements Interface76 @Directive21(argument61 : "stringValue5190") @Directive22(argument62 : "stringValue5189") @Directive31 @Directive44(argument97 : ["stringValue5191", "stringValue5192", "stringValue5193"]) @Directive45(argument98 : ["stringValue5194"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union123] + field5221: Boolean + field5806: [Object1003] +} + +type Object10020 @Directive21(argument61 : "stringValue42294") @Directive44(argument97 : ["stringValue42293"]) { + field52596: String + field52597: [Object9955] +} + +type Object10021 @Directive21(argument61 : "stringValue42296") @Directive44(argument97 : ["stringValue42295"]) { + field52598: String + field52599: [Enum2377] @deprecated +} + +type Object10022 @Directive21(argument61 : "stringValue42298") @Directive44(argument97 : ["stringValue42297"]) { + field52600: String + field52601: [Enum2377] @deprecated + field52602: Object10023 + field52607: Object10023 + field52608: Object10023 + field52609: Object10023 + field52610: Object10023 + field52611: Object9975 + field52612: Object9993 + field52613: Boolean + field52614: Object9993 + field52615: Object10023 + field52616: Object9993 + field52617: [Object10024] + field52622: Object10023 + field52623: [Object9947] + field52624: Object10023 + field52625: String + field52626: Boolean + field52627: [Object9680] + field52628: Object9734 + field52629: Object9949 @deprecated + field52630: Object9947 +} + +type Object10023 @Directive21(argument61 : "stringValue42300") @Directive44(argument97 : ["stringValue42299"]) { + field52603: String + field52604: String + field52605: [Object9608] + field52606: Object9955 +} + +type Object10024 @Directive21(argument61 : "stringValue42302") @Directive44(argument97 : ["stringValue42301"]) { + field52618: String + field52619: String + field52620: Enum602 + field52621: Object9608 +} + +type Object10025 @Directive21(argument61 : "stringValue42304") @Directive44(argument97 : ["stringValue42303"]) { + field52631: String + field52632: Object9811 + field52633: Object9811 + field52634: Boolean + field52635: Object2949 + field52636: Object2949 + field52637: Object2949 + field52638: Boolean + field52639: Object9811 + field52640: [Object9813] + field52641: Object9734 + field52642: [Object2950] + field52643: Object2949 + field52644: Object9919 +} + +type Object10026 @Directive21(argument61 : "stringValue42306") @Directive44(argument97 : ["stringValue42305"]) { + field52645: String + field52646: String + field52647: Object9608 + field52648: Object9980 +} + +type Object10027 @Directive21(argument61 : "stringValue42308") @Directive44(argument97 : ["stringValue42307"]) { + field52649: String + field52650: [Enum2377] @deprecated + field52651: Object9975 + field52652: Object9960 + field52653: Object9955 + field52654: Object9608 + field52655: [Object2950] +} + +type Object10028 @Directive21(argument61 : "stringValue42310") @Directive44(argument97 : ["stringValue42309"]) { + field52656: String + field52657: [Enum2377] @deprecated + field52658: String + field52659: String + field52660: Boolean + field52661: String +} + +type Object10029 @Directive21(argument61 : "stringValue42312") @Directive44(argument97 : ["stringValue42311"]) { + field52662: String + field52663: [Enum2377] @deprecated + field52664: Object9973 + field52665: [Object9608] + field52666: Object9608 + field52667: [Object9976] + field52668: Object9975 + field52669: Object9993 + field52670: String + field52671: [Object9955] + field52672: [Object10013] + field52673: Object2949 + field52674: [Object2950] + field52675: [Object9608] +} + +type Object1003 @Directive20(argument58 : "stringValue5196", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5195") @Directive31 @Directive44(argument97 : ["stringValue5197", "stringValue5198"]) { + field5807: String + field5808: String + field5809: String + field5810: String + field5811: [Object1004] + field5819: String + field5820: String +} + +type Object10030 @Directive21(argument61 : "stringValue42314") @Directive44(argument97 : ["stringValue42313"]) { + field52676: String + field52677: [Enum2377] @deprecated + field52678: Object9734 + field52679: [Object9947!] +} + +type Object10031 @Directive21(argument61 : "stringValue42316") @Directive44(argument97 : ["stringValue42315"]) { + field52680: String + field52681: [Enum2377] @deprecated + field52682: Object9973! + field52683: [Object9608!] + field52684: [Object9974] + field52685: [Object9972] + field52686: [Object10013] + field52687: Object9975 + field52688: Object9811 + field52689: Object9811 + field52690: Float + field52691: Int + field52692: Int + field52693: Object9811 + field52694: Object2949 + field52695: Object9941 + field52696: Object9979 +} + +type Object10032 @Directive21(argument61 : "stringValue42318") @Directive44(argument97 : ["stringValue42317"]) { + field52697: Enum602 + field52698: String + field52699: String + field52700: Object9611 + field52701: Object9608 + field52702: Object9608 + field52703: Int + field52704: Object9611 + field52705: [Object2967] + field52706: Object9611 + field52707: String + field52708: Object9611 + field52709: String + field52710: [Object9611] + field52711: Object2959 +} + +type Object10033 @Directive21(argument61 : "stringValue42320") @Directive44(argument97 : ["stringValue42319"]) { + field52712: String + field52713: String + field52714: String @deprecated + field52715: Object9608 + field52716: Object9771 + field52717: Object10034 + field52720: [Object9608!] + field52721: Object9722 + field52722: Object9782 +} + +type Object10034 @Directive21(argument61 : "stringValue42322") @Directive44(argument97 : ["stringValue42321"]) { + field52718: Object2967 + field52719: Object2967 +} + +type Object10035 @Directive21(argument61 : "stringValue42324") @Directive44(argument97 : ["stringValue42323"]) { + field52723: String + field52724: Object2949 @deprecated + field52725: Object2949 @deprecated + field52726: Object2949 @deprecated + field52727: Object2949 @deprecated + field52728: Object2949 + field52729: Object2949 + field52730: Object2949 + field52731: Object2949 + field52732: Object9827 + field52733: Object9873 + field52734: Object9888 +} + +type Object10036 @Directive21(argument61 : "stringValue42326") @Directive44(argument97 : ["stringValue42325"]) { + field52735: Object10037 + field52740: String + field52741: String @deprecated + field52742: Object10038 + field52745: Object10039 + field52753: Object9608 + field52754: Object9608 + field52755: String + field52756: Object10040 + field52768: String + field52769: Object9610 + field52770: Boolean +} + +type Object10037 @Directive21(argument61 : "stringValue42328") @Directive44(argument97 : ["stringValue42327"]) { + field52736: String + field52737: String @deprecated + field52738: Int + field52739: Object9608 +} + +type Object10038 @Directive21(argument61 : "stringValue42330") @Directive44(argument97 : ["stringValue42329"]) { + field52743: Object10037 + field52744: String +} + +type Object10039 @Directive21(argument61 : "stringValue42332") @Directive44(argument97 : ["stringValue42331"]) { + field52746: Enum2366 + field52747: String + field52748: String + field52749: Enum602 + field52750: Object2949 + field52751: Interface129 + field52752: String +} + +type Object1004 @Directive20(argument58 : "stringValue5200", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5199") @Directive31 @Directive44(argument97 : ["stringValue5201", "stringValue5202"]) { + field5812: Enum131 + field5813: Enum284 + field5814: String + field5815: [Object427] + field5816: String + field5817: String + field5818: String +} + +type Object10040 @Directive21(argument61 : "stringValue42334") @Directive44(argument97 : ["stringValue42333"]) { + field52757: String + field52758: String + field52759: String + field52760: String + field52761: String + field52762: String + field52763: String + field52764: String + field52765: String + field52766: Object2949 + field52767: String +} + +type Object10041 @Directive21(argument61 : "stringValue42336") @Directive44(argument97 : ["stringValue42335"]) { + field52771: String + field52772: String + field52773: String + field52774: Interface127 + field52775: String + field52776: Interface127 + field52777: Boolean + field52778: Enum602 + field52779: Enum2383 + field52780: Enum2384 + field52781: Enum2385 + field52782: Int +} + +type Object10042 @Directive21(argument61 : "stringValue42341") @Directive44(argument97 : ["stringValue42340"]) { + field52783: String + field52784: Object9803 + field52785: Interface127 +} + +type Object10043 @Directive21(argument61 : "stringValue42343") @Directive44(argument97 : ["stringValue42342"]) { + field52786: Object10044 + field52789: String + field52790: Enum2368 +} + +type Object10044 @Directive21(argument61 : "stringValue42345") @Directive44(argument97 : ["stringValue42344"]) { + field52787: String + field52788: String +} + +type Object10045 @Directive21(argument61 : "stringValue42347") @Directive44(argument97 : ["stringValue42346"]) { + field52791: [Object9608!] + field52792: Scalar2 + field52793: Float + field52794: [Object10046!] + field52801: String + field52802: Object9608 + field52803: String @deprecated + field52804: String + field52805: String + field52806: [Object10047!] + field52823: Object2949 + field52824: Object2949 + field52825: Object2949 + field52826: String + field52827: Object9608 + field52828: Enum2302 +} + +type Object10046 @Directive21(argument61 : "stringValue42349") @Directive44(argument97 : ["stringValue42348"]) { + field52795: String + field52796: String + field52797: String + field52798: Float + field52799: Scalar2 + field52800: Enum2359 +} + +type Object10047 @Directive21(argument61 : "stringValue42351") @Directive44(argument97 : ["stringValue42350"]) { + field52807: Scalar2! + field52808: String + field52809: String! + field52810: String + field52811: Scalar4 + field52812: Object9605! + field52813: Object9605! + field52814: String! + field52815: Object9606 + field52816: Int + field52817: String + field52818: Object10048 + field52820: Object9608 + field52821: String @deprecated + field52822: [Object9608!] +} + +type Object10048 @Directive21(argument61 : "stringValue42353") @Directive44(argument97 : ["stringValue42352"]) { + field52819: String +} + +type Object10049 @Directive21(argument61 : "stringValue42355") @Directive44(argument97 : ["stringValue42354"]) { + field52829: [Object10050] + field52835: String + field52836: String +} + +type Object1005 implements Interface76 @Directive21(argument61 : "stringValue5210") @Directive22(argument62 : "stringValue5209") @Directive31 @Directive44(argument97 : ["stringValue5211", "stringValue5212", "stringValue5213"]) @Directive45(argument98 : ["stringValue5214"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union124] +} + +type Object10050 @Directive21(argument61 : "stringValue42357") @Directive44(argument97 : ["stringValue42356"]) { + field52830: Enum602 + field52831: Object9608 + field52832: String + field52833: String + field52834: [Object9608] +} + +type Object10051 @Directive21(argument61 : "stringValue42359") @Directive44(argument97 : ["stringValue42358"]) { + field52837: String + field52838: String + field52839: Object9771 + field52840: String + field52841: String + field52842: Object9608 + field52843: Object9608 + field52844: Object9608 + field52845: Object9608 + field52846: String + field52847: [Object10052!] + field52873: Object9782 + field52874: Object9608 + field52875: String! + field52876: [Object10054!] + field52879: Object2949 + field52880: Object9939 + field52881: Object2949 + field52882: Boolean + field52883: Object9608 + field52884: Object9608 + field52885: Object9608 + field52886: Boolean + field52887: Boolean + field52888: Object9608 + field52889: String + field52890: Object9608 + field52891: Int + field52892: Int + field52893: Object9611 + field52894: String + field52895: [Object10055!] + field52899: Object9611 + field52900: String + field52901: Object10056 + field52907: Object10056 @deprecated + field52908: Object9608 + field52909: Object9950 +} + +type Object10052 @Directive21(argument61 : "stringValue42361") @Directive44(argument97 : ["stringValue42360"]) { + field52848: String + field52849: String + field52850: Object9771 + field52851: Object9608 + field52852: [Object9608!] @deprecated + field52853: String! + field52854: Scalar3 + field52855: Object9782 + field52856: Int + field52857: Int + field52858: [Object10053!] + field52866: String + field52867: Enum2387 + field52868: Object9611 + field52869: Boolean + field52870: Boolean + field52871: Boolean + field52872: Object9950 +} + +type Object10053 @Directive21(argument61 : "stringValue42363") @Directive44(argument97 : ["stringValue42362"]) { + field52859: String + field52860: String + field52861: String + field52862: Object9951 + field52863: Object2949 + field52864: Enum2386 + field52865: Union317 +} + +type Object10054 @Directive21(argument61 : "stringValue42367") @Directive44(argument97 : ["stringValue42366"]) { + field52877: String + field52878: [String!] +} + +type Object10055 @Directive21(argument61 : "stringValue42369") @Directive44(argument97 : ["stringValue42368"]) { + field52896: Scalar3 + field52897: Int @deprecated + field52898: Boolean +} + +type Object10056 @Directive21(argument61 : "stringValue42371") @Directive44(argument97 : ["stringValue42370"]) { + field52902: Object9782 + field52903: Object9782 + field52904: Object9782 + field52905: Object9782 + field52906: Object9782 +} + +type Object10057 @Directive21(argument61 : "stringValue42373") @Directive44(argument97 : ["stringValue42372"]) { + field52910: [Object9608!] + field52911: Object9950 +} + +type Object10058 @Directive21(argument61 : "stringValue42375") @Directive44(argument97 : ["stringValue42374"]) { + field52912: String + field52913: String + field52914: String + field52915: [Object9608!] + field52916: Object9608 + field52917: String! +} + +type Object10059 @Directive21(argument61 : "stringValue42377") @Directive44(argument97 : ["stringValue42376"]) { + field52918: Object2966 + field52919: Object2966 +} + +type Object1006 @Directive20(argument58 : "stringValue5219", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5218") @Directive31 @Directive44(argument97 : ["stringValue5220", "stringValue5221"]) { + field5821: Object1007 + field5849: String! @deprecated + field5850: Object1017 + field5855: String! +} + +type Object10060 @Directive21(argument61 : "stringValue42379") @Directive44(argument97 : ["stringValue42378"]) { + field52920: [Object10061!] + field52924: String +} + +type Object10061 @Directive21(argument61 : "stringValue42381") @Directive44(argument97 : ["stringValue42380"]) { + field52921: String + field52922: Object9608 + field52923: String +} + +type Object10062 @Directive21(argument61 : "stringValue42383") @Directive44(argument97 : ["stringValue42382"]) { + field52925: String + field52926: String + field52927: [Object9608] + field52928: Object9608 + field52929: String +} + +type Object10063 @Directive21(argument61 : "stringValue42385") @Directive44(argument97 : ["stringValue42384"]) { + field52930: String + field52931: [Object10064!] + field52949: Object2949 +} + +type Object10064 @Directive21(argument61 : "stringValue42387") @Directive44(argument97 : ["stringValue42386"]) { + field52932: Int + field52933: Object10065 + field52938: Object2951 + field52939: String + field52940: String + field52941: Enum2388 + field52942: String + field52943: String + field52944: Boolean + field52945: Boolean + field52946: String + field52947: String + field52948: String +} + +type Object10065 @Directive21(argument61 : "stringValue42389") @Directive44(argument97 : ["stringValue42388"]) { + field52934: Scalar2 + field52935: String + field52936: String + field52937: String +} + +type Object10066 @Directive21(argument61 : "stringValue42392") @Directive44(argument97 : ["stringValue42391"]) { + field52950: String + field52951: [Object10067!] +} + +type Object10067 @Directive21(argument61 : "stringValue42394") @Directive44(argument97 : ["stringValue42393"]) { + field52952: Scalar2 + field52953: String + field52954: Scalar2 +} + +type Object10068 @Directive21(argument61 : "stringValue42396") @Directive44(argument97 : ["stringValue42395"]) { + field52955: Object9611 + field52956: Enum602 + field52957: String @deprecated + field52958: Interface129 + field52959: String + field52960: String + field52961: Object9610 + field52962: Object10069 + field52967: Object9612 + field52968: Object9612 +} + +type Object10069 @Directive21(argument61 : "stringValue42398") @Directive44(argument97 : ["stringValue42397"]) { + field52963: String + field52964: Object2959 + field52965: Object2959 + field52966: String +} + +type Object1007 @Directive20(argument58 : "stringValue5223", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5222") @Directive31 @Directive44(argument97 : ["stringValue5224", "stringValue5225"]) { + field5822: Object1008 + field5829: Object1008 + field5830: Object1008 + field5831: Union125 + field5836: Object1014 + field5842: [Object1016] + field5847: String + field5848: String +} + +type Object10070 @Directive21(argument61 : "stringValue42400") @Directive44(argument97 : ["stringValue42399"]) { + field52969: String + field52970: String + field52971: [Object9608!] + field52972: Interface129 + field52973: Boolean + field52974: String + field52975: Object9611 + field52976: Enum2389 + field52977: Object10069 + field52978: Object9872 + field52979: [Interface129!] + field52980: String +} + +type Object10071 @Directive21(argument61 : "stringValue42403") @Directive44(argument97 : ["stringValue42402"]) { + field52981: String + field52982: String + field52983: Int + field52984: Int + field52985: Object2967 + field52986: Object9608 + field52987: Object9608 + field52988: Object9608 + field52989: Object9611 + field52990: Object9611 + field52991: Object9608 + field52992: String + field52993: Object10072 + field52995: Object9608 + field52996: Object10073 +} + +type Object10072 implements Interface129 @Directive21(argument61 : "stringValue42405") @Directive44(argument97 : ["stringValue42404"]) { + field14407: String! + field14408: Enum593 + field14409: Float + field14410: String + field14411: Interface128 + field14412: Interface127 + field52994: Enum2390 +} + +type Object10073 @Directive21(argument61 : "stringValue42408") @Directive44(argument97 : ["stringValue42407"]) { + field52997: [Object2967!] + field52998: Object2949 + field52999: Object2949 + field53000: String +} + +type Object10074 @Directive21(argument61 : "stringValue42410") @Directive44(argument97 : ["stringValue42409"]) { + field53001: Object9611 +} + +type Object10075 @Directive21(argument61 : "stringValue42412") @Directive44(argument97 : ["stringValue42411"]) { + field53002: [Object2967!] @deprecated + field53003: Object2949 + field53004: Object9608 @deprecated + field53005: Object9608 @deprecated + field53006: Object9608 @deprecated + field53007: Object9608 + field53008: Object2949 + field53009: [Interface129!] + field53010: [Object9892!] + field53011: Int + field53012: Object9950 + field53013: Boolean +} + +type Object10076 @Directive21(argument61 : "stringValue42414") @Directive44(argument97 : ["stringValue42413"]) { + field53014: String + field53015: String + field53016: Object10077 + field53023: [Object9608!] + field53024: Object10037 + field53025: String + field53026: [Object9608!] @deprecated + field53027: [Object9608!] + field53028: String + field53029: [Object10078!] + field53033: [Object10079!] + field53036: Object9608 + field53037: Object9608 @deprecated + field53038: Object10080 + field53041: Object2967 + field53042: String + field53043: String! + field53044: Object9608 + field53045: Enum2392 +} + +type Object10077 @Directive21(argument61 : "stringValue42416") @Directive44(argument97 : ["stringValue42415"]) { + field53017: Object2967 + field53018: Enum2391 + field53019: String + field53020: Object2949 + field53021: String + field53022: String! +} + +type Object10078 @Directive21(argument61 : "stringValue42419") @Directive44(argument97 : ["stringValue42418"]) { + field53030: String + field53031: Object10077 + field53032: String +} + +type Object10079 @Directive21(argument61 : "stringValue42421") @Directive44(argument97 : ["stringValue42420"]) { + field53034: String + field53035: Object10037 +} + +type Object1008 @Directive20(argument58 : "stringValue5227", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5226") @Directive31 @Directive44(argument97 : ["stringValue5228", "stringValue5229"]) { + field5823: Object1009 + field5825: Object1010 +} + +type Object10080 @Directive21(argument61 : "stringValue42423") @Directive44(argument97 : ["stringValue42422"]) { + field53039: Object9608 + field53040: Object9608 +} + +type Object10081 @Directive21(argument61 : "stringValue42426") @Directive44(argument97 : ["stringValue42425"]) { + field53046: String + field53047: Float + field53048: Float + field53049: Object9608 + field53050: Object10039 +} + +type Object10082 @Directive21(argument61 : "stringValue42428") @Directive44(argument97 : ["stringValue42427"]) { + field53051: String + field53052: Object10037 @deprecated + field53053: Object9608 + field53054: String + field53055: String + field53056: Object10077 + field53057: [Object9608!] + field53058: [Object9608!] + field53059: String + field53060: [Object10078!] + field53061: [Object10079!] + field53062: Object9608 + field53063: String + field53064: [Object10079] + field53065: Object10037 +} + +type Object10083 @Directive21(argument61 : "stringValue42430") @Directive44(argument97 : ["stringValue42429"]) { + field53066: String + field53067: String + field53068: [Object10084!] + field53085: String + field53086: Object9608 + field53087: String + field53088: Object9608 + field53089: [Object9779!] + field53090: String + field53091: Object9778 + field53092: Boolean +} + +type Object10084 @Directive21(argument61 : "stringValue42432") @Directive44(argument97 : ["stringValue42431"]) { + field53069: String + field53070: [Object9608!] + field53071: [Enum602!] + field53072: [Object2967!] + field53073: String + field53074: String + field53075: String + field53076: [Object9937] + field53077: Object9608 + field53078: [Object9608!] + field53079: [Object10085!] + field53084: Object2949 +} + +type Object10085 @Directive21(argument61 : "stringValue42434") @Directive44(argument97 : ["stringValue42433"]) { + field53080: String + field53081: String + field53082: [Enum602!] + field53083: [Object2967!] +} + +type Object10086 @Directive21(argument61 : "stringValue42436") @Directive44(argument97 : ["stringValue42435"]) { + field53093: String + field53094: [Object10085!] + field53095: String + field53096: Object10084 +} + +type Object10087 @Directive21(argument61 : "stringValue42438") @Directive44(argument97 : ["stringValue42437"]) { + field53097: String + field53098: String + field53099: Object9608 + field53100: Enum2382 + field53101: String +} + +type Object10088 @Directive21(argument61 : "stringValue42440") @Directive44(argument97 : ["stringValue42439"]) { + field53102: String + field53103: Enum2393 +} + +type Object10089 @Directive21(argument61 : "stringValue42443") @Directive44(argument97 : ["stringValue42442"]) { + field53104: String + field53105: [Object10090]! + field53117: Object2949 +} + +type Object1009 @Directive20(argument58 : "stringValue5231", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5230") @Directive31 @Directive44(argument97 : ["stringValue5232", "stringValue5233"]) { + field5824: String +} + +type Object10090 @Directive21(argument61 : "stringValue42445") @Directive44(argument97 : ["stringValue42444"]) { + field53106: String + field53107: String + field53108: String + field53109: Object2967 @deprecated + field53110: Object9608 + field53111: String + field53112: [Interface129!] + field53113: [Object9892!] + field53114: [Object9892!] + field53115: [Object9608!] + field53116: Object9608 +} + +type Object10091 @Directive21(argument61 : "stringValue42447") @Directive44(argument97 : ["stringValue42446"]) { + field53118: String + field53119: String + field53120: Boolean + field53121: Scalar2 + field53122: String + field53123: String + field53124: Float + field53125: Boolean + field53126: Float + field53127: [Object2986] + field53128: Int + field53129: Int + field53130: String + field53131: String + field53132: Int + field53133: Union317 + field53134: String + field53135: Boolean + field53136: Boolean + field53137: Boolean + field53138: Boolean + field53139: Int + field53140: Int + field53141: Int + field53142: String + field53143: Float + field53144: String + field53145: Float + field53146: Float +} + +type Object10092 @Directive21(argument61 : "stringValue42449") @Directive44(argument97 : ["stringValue42448"]) { + field53147: String + field53148: String + field53149: Float + field53150: Float + field53151: String + field53152: String + field53153: Enum602 + field53154: String @deprecated + field53155: Object10037 @deprecated + field53156: String + field53157: [Object10093!] + field53168: [Object10093!] + field53169: String + field53170: Enum2395 + field53171: Object9608 + field53172: Object9608 + field53173: Object9608 + field53174: Object10096 + field53178: Object10096 + field53179: Object2949 + field53180: Int + field53181: [Object9608] + field53182: Boolean + field53183: [Object10093!] + field53184: String +} + +type Object10093 @Directive21(argument61 : "stringValue42451") @Directive44(argument97 : ["stringValue42450"]) { + field53158: String + field53159: Enum2394 + field53160: String + field53161: Object10037 + field53162: [Object9608!] + field53163: Object10094 +} + +type Object10094 @Directive21(argument61 : "stringValue42454") @Directive44(argument97 : ["stringValue42453"]) { + field53164: [Object10095!] +} + +type Object10095 @Directive21(argument61 : "stringValue42456") @Directive44(argument97 : ["stringValue42455"]) { + field53165: String + field53166: String + field53167: Int +} + +type Object10096 @Directive21(argument61 : "stringValue42459") @Directive44(argument97 : ["stringValue42458"]) { + field53175: Object2949 + field53176: Object2949 + field53177: Object2949 +} + +type Object10097 @Directive21(argument61 : "stringValue42461") @Directive44(argument97 : ["stringValue42460"]) { + field53185: Enum602 + field53186: String + field53187: Object10034 + field53188: [Object9608!] +} + +type Object10098 @Directive21(argument61 : "stringValue42463") @Directive44(argument97 : ["stringValue42462"]) { + field53189: Object10037 + field53190: Object10039 + field53191: Enum602 + field53192: Object9608 + field53193: String + field53194: String +} + +type Object10099 @Directive21(argument61 : "stringValue42465") @Directive44(argument97 : ["stringValue42464"]) { + field53195: String + field53196: Enum2382 + field53197: Object10034 + field53198: [Object2967!] + field53199: Object2949 + field53200: [Object9608!] + field53201: Object9608 + field53202: Object9608 + field53203: Object9608 + field53204: Object9608 +} + +type Object101 @Directive21(argument61 : "stringValue390") @Directive44(argument97 : ["stringValue389"]) { + field695: String + field696: String + field697: String + field698: String + field699: String + field700: Enum59 + field701: String +} + +type Object1010 @Directive20(argument58 : "stringValue5235", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5234") @Directive31 @Directive44(argument97 : ["stringValue5236", "stringValue5237"]) { + field5826: String + field5827: String + field5828: Boolean +} + +type Object10100 @Directive21(argument61 : "stringValue42467") @Directive44(argument97 : ["stringValue42466"]) { + field53205: String + field53206: String + field53207: Object9608 + field53208: Enum602 + field53209: Object9608 + field53210: String + field53211: String +} + +type Object10101 @Directive21(argument61 : "stringValue42469") @Directive44(argument97 : ["stringValue42468"]) { + field53212: Object9771 + field53213: Object9778 + field53214: String + field53215: Enum2396 + field53216: String + field53217: Object9782 +} + +type Object10102 @Directive21(argument61 : "stringValue42472") @Directive44(argument97 : ["stringValue42471"]) { + field53218: String + field53219: [Object10103!] +} + +type Object10103 @Directive21(argument61 : "stringValue42474") @Directive44(argument97 : ["stringValue42473"]) { + field53220: Object2967 + field53221: String + field53222: [Object9608!] + field53223: String +} + +type Object10104 @Directive21(argument61 : "stringValue42476") @Directive44(argument97 : ["stringValue42475"]) { + field53224: String + field53225: String + field53226: Object9608 + field53227: Object2959 + field53228: Enum602 +} + +type Object10105 @Directive21(argument61 : "stringValue42478") @Directive44(argument97 : ["stringValue42477"]) { + field53229: [Object9892!] + field53230: [Object2967!] + field53231: String + field53232: Int + field53233: Object9608 + field53234: Object2949 + field53235: [Interface129!] +} + +type Object10106 @Directive21(argument61 : "stringValue42480") @Directive44(argument97 : ["stringValue42479"]) { + field53236: Object9608 @deprecated + field53237: Object9608 @deprecated + field53238: Object9608 @deprecated + field53239: Object9638 + field53240: Object9950 +} + +type Object10107 @Directive21(argument61 : "stringValue42482") @Directive44(argument97 : ["stringValue42481"]) { + field53241: [Object10108!] + field53247: Object9608 @deprecated + field53248: Object9608 @deprecated + field53249: Object9608 @deprecated + field53250: Enum2382 + field53251: Interface129 + field53252: Object9950 +} + +type Object10108 @Directive21(argument61 : "stringValue42484") @Directive44(argument97 : ["stringValue42483"]) { + field53242: String + field53243: String + field53244: Int + field53245: Object2949 + field53246: String +} + +type Object10109 @Directive21(argument61 : "stringValue42486") @Directive44(argument97 : ["stringValue42485"]) { + field53253: String + field53254: String + field53255: [Object9608!] @deprecated + field53256: Object10077 + field53257: Object10110 + field53263: String @deprecated + field53264: Object10111 + field53267: Object9608 + field53268: String + field53269: String + field53270: String + field53271: Object9613 + field53272: Object9613 + field53273: [Object9608!] + field53274: Enum2392 +} + +type Object1011 @Directive20(argument58 : "stringValue5242", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5241") @Directive31 @Directive44(argument97 : ["stringValue5243", "stringValue5244"]) { + field5832: [Object427] +} + +type Object10110 @Directive21(argument61 : "stringValue42488") @Directive44(argument97 : ["stringValue42487"]) { + field53258: String + field53259: String @deprecated + field53260: String + field53261: String + field53262: Object9608 +} + +type Object10111 @Directive21(argument61 : "stringValue42490") @Directive44(argument97 : ["stringValue42489"]) { + field53265: String + field53266: [Object9608] +} + +type Object10112 @Directive21(argument61 : "stringValue42492") @Directive44(argument97 : ["stringValue42491"]) { + field53275: String + field53276: [Interface129!] + field53277: Object9608 + field53278: Object9608 @deprecated + field53279: Object9608 @deprecated + field53280: Object9608 @deprecated + field53281: Object2949 @deprecated + field53282: Object2949 + field53283: Object9950 + field53284: Object2949 + field53285: Object9608 + field53286: [Object9890] +} + +type Object10113 @Directive21(argument61 : "stringValue42494") @Directive44(argument97 : ["stringValue42493"]) { + field53287: String + field53288: String + field53289: [Object9608!] + field53290: String + field53291: String + field53292: [Object9608] @deprecated + field53293: String + field53294: String + field53295: [Object9608] + field53296: String + field53297: String + field53298: [Object10114] @deprecated + field53306: Object9608 @deprecated + field53307: [Object9947] + field53308: String @deprecated + field53309: String + field53310: Object9608 + field53311: Object9608 + field53312: Object9608 + field53313: String + field53314: String + field53315: [Object10024] + field53316: Object9608 + field53317: [Object10024] + field53318: Object10115 + field53324: Object9947 + field53325: Object9734 + field53326: Object9608 + field53327: String + field53328: Boolean + field53329: [Object9680] + field53330: Object9608 +} + +type Object10114 @Directive21(argument61 : "stringValue42496") @Directive44(argument97 : ["stringValue42495"]) { + field53299: [String] + field53300: [String] + field53301: String + field53302: String + field53303: Float + field53304: Float + field53305: Boolean +} + +type Object10115 @Directive21(argument61 : "stringValue42498") @Directive44(argument97 : ["stringValue42497"]) { + field53319: Enum602 + field53320: String + field53321: String + field53322: [Object9608!] + field53323: Object9608 +} + +type Object10116 @Directive21(argument61 : "stringValue42500") @Directive44(argument97 : ["stringValue42499"]) { + field53331: String + field53332: Object9608 + field53333: Enum2397 + field53334: String +} + +type Object10117 @Directive21(argument61 : "stringValue42503") @Directive44(argument97 : ["stringValue42502"]) { + field53335: String + field53336: String @deprecated + field53337: Enum2398 @deprecated + field53338: Enum602 @deprecated + field53339: String @deprecated + field53340: [Object9608!] +} + +type Object10118 @Directive21(argument61 : "stringValue42506") @Directive44(argument97 : ["stringValue42505"]) { + field53341: String + field53342: String + field53343: [Object10046!] + field53344: [Object10119!] @deprecated + field53352: String + field53353: Scalar2 + field53354: Float + field53355: String + field53356: Object9608 + field53357: Object2949 + field53358: Object2949 + field53359: Object2949 + field53360: Object2949 + field53361: Object2949 + field53362: [Object9608!] + field53363: String + field53364: [Object10046] + field53365: [Object10046] + field53366: Object9608 + field53367: Object9608 + field53368: Object9608 +} + +type Object10119 @Directive21(argument61 : "stringValue42508") @Directive44(argument97 : ["stringValue42507"]) { + field53345: Object10120 + field53351: Object10120 +} + +type Object1012 @Directive20(argument58 : "stringValue5246", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5245") @Directive31 @Directive44(argument97 : ["stringValue5247", "stringValue5248"]) { + field5833: Object398 + field5834: [Object399] @deprecated +} + +type Object10120 @Directive21(argument61 : "stringValue42510") @Directive44(argument97 : ["stringValue42509"]) { + field53346: String + field53347: Object10078 + field53348: String + field53349: Scalar4 + field53350: Object10037 +} + +type Object10121 @Directive21(argument61 : "stringValue42512") @Directive44(argument97 : ["stringValue42511"]) { + field53369: String + field53370: String + field53371: [Object9608!] + field53372: [Object9608!] +} + +type Object10122 @Directive21(argument61 : "stringValue42514") @Directive44(argument97 : ["stringValue42513"]) { + field53373: String + field53374: String + field53375: [Object9608!] + field53376: String + field53377: String @deprecated + field53378: Object9608 +} + +type Object10123 @Directive21(argument61 : "stringValue42516") @Directive44(argument97 : ["stringValue42515"]) { + field53379: String + field53380: [Object9874] + field53381: String + field53382: Object2949 + field53383: Object2949 + field53384: Object2949 + field53385: Object9608 + field53386: Float + field53387: Float + field53388: Float + field53389: Float +} + +type Object10124 @Directive21(argument61 : "stringValue42518") @Directive44(argument97 : ["stringValue42517"]) { + field53390: String + field53391: [Object10085!] + field53392: Object2949 +} + +type Object10125 @Directive21(argument61 : "stringValue42520") @Directive44(argument97 : ["stringValue42519"]) { + field53393: String + field53394: [Object9608!] + field53395: Enum2382 + field53396: Object9608 @deprecated + field53397: Object9608 @deprecated + field53398: Object9608 @deprecated + field53399: String + field53400: Object10126 + field53403: String + field53404: Object9950 + field53405: Object9608 + field53406: Enum602 + field53407: [Object9608!] + field53408: Object9608 +} + +type Object10126 implements Interface129 @Directive21(argument61 : "stringValue42522") @Directive44(argument97 : ["stringValue42521"]) { + field14407: String! + field14408: Enum593 + field14409: Float + field14410: String + field14411: Interface128 + field14412: Interface127 + field53401: Enum2382 + field53402: Object2967 +} + +type Object10127 @Directive21(argument61 : "stringValue42524") @Directive44(argument97 : ["stringValue42523"]) { + field53409: [Object2967!] + field53410: String @deprecated + field53411: Object9608 +} + +type Object10128 @Directive21(argument61 : "stringValue42526") @Directive44(argument97 : ["stringValue42525"]) { + field53412: Object10039 +} + +type Object10129 @Directive21(argument61 : "stringValue42528") @Directive44(argument97 : ["stringValue42527"]) { + field53413: String + field53414: String + field53415: String + field53416: Int + field53417: String + field53418: String + field53419: String + field53420: Enum2399 + field53421: String + field53422: String + field53423: String + field53424: String +} + +type Object1013 @Directive20(argument58 : "stringValue5250", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5249") @Directive31 @Directive44(argument97 : ["stringValue5251", "stringValue5252"]) { + field5835: String +} + +type Object10130 @Directive21(argument61 : "stringValue42531") @Directive44(argument97 : ["stringValue42530"]) { + field53426: Enum2400! + field53427: Enum2360! + field53428: [String!]! + field53429: [Object2976!] + field53430: Enum584 + field53431: Object2979 +} + +type Object10131 @Directive21(argument61 : "stringValue42534") @Directive44(argument97 : ["stringValue42533"]) { + field53433: String! + field53434: String + field53435: [Object10132!] @deprecated + field53442: Object10133 + field53447: Object10134 + field53450: Object10135 +} + +type Object10132 @Directive21(argument61 : "stringValue42536") @Directive44(argument97 : ["stringValue42535"]) { + field53436: Enum2401! + field53437: Enum2402! + field53438: [Object2976!]! + field53439: Object2979 + field53440: Enum584! + field53441: Enum599 +} + +type Object10133 @Directive21(argument61 : "stringValue42540") @Directive44(argument97 : ["stringValue42539"]) { + field53443: Enum2403 + field53444: Enum2404 + field53445: String + field53446: Boolean +} + +type Object10134 @Directive21(argument61 : "stringValue42544") @Directive44(argument97 : ["stringValue42543"]) { + field53448: Interface131 + field53449: Interface131 +} + +type Object10135 @Directive21(argument61 : "stringValue42546") @Directive44(argument97 : ["stringValue42545"]) { + field53451: [Object9928!] +} + +type Object10136 @Directive44(argument97 : ["stringValue42547"]) { + field53453(argument2354: InputObject1933!): Object10137 @Directive35(argument89 : "stringValue42549", argument90 : true, argument91 : "stringValue42548", argument92 : 861, argument93 : "stringValue42550", argument94 : false) +} + +type Object10137 @Directive21(argument61 : "stringValue42553") @Directive44(argument97 : ["stringValue42552"]) { + field53454: [String] + field53455: [Interface136] + field53456: Scalar1 + field53457: Object10138 +} + +type Object10138 @Directive21(argument61 : "stringValue42555") @Directive44(argument97 : ["stringValue42554"]) { + field53458: String + field53459: String + field53460: String! +} + +type Object10139 @Directive44(argument97 : ["stringValue42556"]) { + field53462(argument2355: InputObject1934!): Object10140 @Directive35(argument89 : "stringValue42558", argument90 : true, argument91 : "stringValue42557", argument93 : "stringValue42559", argument94 : false) + field53465(argument2356: InputObject1935!): Object10141 @Directive35(argument89 : "stringValue42564", argument90 : true, argument91 : "stringValue42563", argument93 : "stringValue42565", argument94 : false) + field53468: Object10142 @Directive35(argument89 : "stringValue42570", argument90 : true, argument91 : "stringValue42569", argument93 : "stringValue42571", argument94 : false) + field53488: Object10146 @Directive35(argument89 : "stringValue42584", argument90 : true, argument91 : "stringValue42583", argument93 : "stringValue42585", argument94 : false) + field53536(argument2357: InputObject1936!): Object10163 @Directive35(argument89 : "stringValue42629", argument90 : true, argument91 : "stringValue42628", argument93 : "stringValue42630", argument94 : false) + field53538(argument2358: InputObject1937!): Object10164 @Directive35(argument89 : "stringValue42635", argument90 : true, argument91 : "stringValue42634", argument93 : "stringValue42636", argument94 : false) + field53540(argument2359: InputObject1938!): Object10165 @Directive35(argument89 : "stringValue42641", argument90 : true, argument91 : "stringValue42640", argument92 : 862, argument93 : "stringValue42642", argument94 : false) + field53597(argument2360: InputObject1939!): Object10171 @Directive35(argument89 : "stringValue42667", argument90 : true, argument91 : "stringValue42666", argument92 : 863, argument93 : "stringValue42668", argument94 : false) + field53599(argument2361: InputObject1939!): Object10172 @Directive35(argument89 : "stringValue42676", argument90 : true, argument91 : "stringValue42675", argument92 : 864, argument93 : "stringValue42677", argument94 : false) + field53702: Object10192 @Directive35(argument89 : "stringValue42728", argument90 : true, argument91 : "stringValue42727", argument93 : "stringValue42729", argument94 : false) + field53718(argument2362: InputObject1943!): Object10194 @Directive35(argument89 : "stringValue42737", argument90 : true, argument91 : "stringValue42736", argument92 : 865, argument93 : "stringValue42738", argument94 : false) + field53722(argument2363: InputObject1943!): Object10196 @Directive35(argument89 : "stringValue42746", argument90 : true, argument91 : "stringValue42745", argument92 : 866, argument93 : "stringValue42747", argument94 : false) + field53725(argument2364: InputObject1945!): Object10197 @Directive35(argument89 : "stringValue42751", argument90 : true, argument91 : "stringValue42750", argument92 : 867, argument93 : "stringValue42752", argument94 : false) + field53727(argument2365: InputObject1945!): Object10198 @Directive35(argument89 : "stringValue42757", argument90 : true, argument91 : "stringValue42756", argument92 : 868, argument93 : "stringValue42758", argument94 : false) + field53733(argument2366: InputObject1946!): Object10200 @Directive35(argument89 : "stringValue42764", argument90 : true, argument91 : "stringValue42763", argument93 : "stringValue42765", argument94 : false) + field53748(argument2367: InputObject1947!): Object10202 @Directive35(argument89 : "stringValue42772", argument90 : true, argument91 : "stringValue42771", argument93 : "stringValue42773", argument94 : false) + field53751(argument2368: InputObject1948!): Object10203 @Directive35(argument89 : "stringValue42778", argument90 : true, argument91 : "stringValue42777", argument93 : "stringValue42779", argument94 : false) + field53755(argument2369: InputObject1951!): Object10204 @Directive35(argument89 : "stringValue42786", argument90 : true, argument91 : "stringValue42785", argument93 : "stringValue42787", argument94 : false) + field53759(argument2370: InputObject1967!): Object10205 @Directive35(argument89 : "stringValue42807", argument90 : true, argument91 : "stringValue42806", argument93 : "stringValue42808", argument94 : false) + field53762(argument2371: InputObject1968!): Object10206 @Directive35(argument89 : "stringValue42813", argument90 : true, argument91 : "stringValue42812", argument93 : "stringValue42814", argument94 : false) +} + +type Object1014 @Directive20(argument58 : "stringValue5254", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5253") @Directive31 @Directive44(argument97 : ["stringValue5255", "stringValue5256"]) { + field5837: Object1008 + field5838: Object1008 + field5839: [Object1015] +} + +type Object10140 @Directive21(argument61 : "stringValue42562") @Directive44(argument97 : ["stringValue42561"]) { + field53463: Boolean! + field53464: [String] +} + +type Object10141 @Directive21(argument61 : "stringValue42568") @Directive44(argument97 : ["stringValue42567"]) { + field53466: Boolean! + field53467: [String] +} + +type Object10142 @Directive21(argument61 : "stringValue42573") @Directive44(argument97 : ["stringValue42572"]) { + field53469: [Object10143]! +} + +type Object10143 @Directive21(argument61 : "stringValue42575") @Directive44(argument97 : ["stringValue42574"]) { + field53470: Object10144! + field53485: Boolean! + field53486: Scalar2! + field53487: Boolean! +} + +type Object10144 @Directive21(argument61 : "stringValue42577") @Directive44(argument97 : ["stringValue42576"]) { + field53471: String! + field53472: Enum2405! + field53473: [String]! + field53474: [String] + field53475: [Enum1394]! + field53476: [Object10145]! + field53483: [String]! + field53484: Enum2407 +} + +type Object10145 @Directive21(argument61 : "stringValue42580") @Directive44(argument97 : ["stringValue42579"]) { + field53477: Enum1395! + field53478: Enum2406! + field53479: Scalar2! + field53480: Scalar2! + field53481: [Enum1394] + field53482: [Enum1394] +} + +type Object10146 @Directive21(argument61 : "stringValue42587") @Directive44(argument97 : ["stringValue42586"]) { + field53489: [Object10147] +} + +type Object10147 @Directive21(argument61 : "stringValue42589") @Directive44(argument97 : ["stringValue42588"]) { + field53490: Object10148! + field53532: Boolean + field53533: Scalar2! + field53534: [Object10143]! + field53535: Boolean +} + +type Object10148 @Directive21(argument61 : "stringValue42591") @Directive44(argument97 : ["stringValue42590"]) { + field53491: String! + field53492: String! + field53493: String! + field53494: String! + field53495: [Enum1394]! + field53496: Float + field53497: Object10149 + field53509: [Object10153] + field53513: Object10154 + field53521: Object10154 + field53522: Object10159 +} + +type Object10149 @Directive21(argument61 : "stringValue42593") @Directive44(argument97 : ["stringValue42592"]) { + field53498: Enum2408 + field53499: [Object10150] + field53508: String +} + +type Object1015 @Directive20(argument58 : "stringValue5258", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5257") @Directive31 @Directive44(argument97 : ["stringValue5259", "stringValue5260"]) { + field5840: Enum285 + field5841: String +} + +type Object10150 @Directive21(argument61 : "stringValue42596") @Directive44(argument97 : ["stringValue42595"]) { + field53500: Object10151 +} + +type Object10151 @Directive21(argument61 : "stringValue42598") @Directive44(argument97 : ["stringValue42597"]) { + field53501: Object10152 + field53506: Enum2408 + field53507: Object10151 +} + +type Object10152 @Directive21(argument61 : "stringValue42600") @Directive44(argument97 : ["stringValue42599"]) { + field53502: Enum2409 + field53503: Enum2410 + field53504: String + field53505: Boolean +} + +type Object10153 @Directive21(argument61 : "stringValue42604") @Directive44(argument97 : ["stringValue42603"]) { + field53510: Enum2411! + field53511: String + field53512: Enum1394 +} + +type Object10154 @Directive21(argument61 : "stringValue42607") @Directive44(argument97 : ["stringValue42606"]) { + field53514: Object10155 + field53518: Object10157 +} + +type Object10155 @Directive21(argument61 : "stringValue42609") @Directive44(argument97 : ["stringValue42608"]) { + field53515: Object10156 +} + +type Object10156 @Directive21(argument61 : "stringValue42611") @Directive44(argument97 : ["stringValue42610"]) { + field53516: String + field53517: String +} + +type Object10157 @Directive21(argument61 : "stringValue42613") @Directive44(argument97 : ["stringValue42612"]) { + field53519: Object10158 +} + +type Object10158 @Directive21(argument61 : "stringValue42615") @Directive44(argument97 : ["stringValue42614"]) { + field53520: Scalar2 +} + +type Object10159 @Directive21(argument61 : "stringValue42617") @Directive44(argument97 : ["stringValue42616"]) { + field53523: Enum2412 + field53524: [Object10160] +} + +type Object1016 @Directive20(argument58 : "stringValue5266", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5265") @Directive31 @Directive44(argument97 : ["stringValue5267", "stringValue5268"]) { + field5843: String + field5844: String + field5845: String + field5846: String +} + +type Object10160 @Directive21(argument61 : "stringValue42620") @Directive44(argument97 : ["stringValue42619"]) { + field53525: Enum2413 + field53526: Enum2414 + field53527: [Object10161] + field53530: Object10162 +} + +type Object10161 @Directive21(argument61 : "stringValue42624") @Directive44(argument97 : ["stringValue42623"]) { + field53528: Enum2415 + field53529: String +} + +type Object10162 @Directive21(argument61 : "stringValue42627") @Directive44(argument97 : ["stringValue42626"]) { + field53531: Scalar2 +} + +type Object10163 @Directive21(argument61 : "stringValue42633") @Directive44(argument97 : ["stringValue42632"]) { + field53537: [Object10143]! +} + +type Object10164 @Directive21(argument61 : "stringValue42639") @Directive44(argument97 : ["stringValue42638"]) { + field53539: [Object10147]! +} + +type Object10165 @Directive21(argument61 : "stringValue42645") @Directive44(argument97 : ["stringValue42644"]) { + field53541: [Object10166] +} + +type Object10166 @Directive21(argument61 : "stringValue42647") @Directive44(argument97 : ["stringValue42646"]) { + field53542: String + field53543: String + field53544: String + field53545: Enum2416 + field53546: Enum1394 + field53547: Enum2417 + field53548: [Object10167] + field53594: [Object10167] + field53595: String + field53596: String +} + +type Object10167 @Directive21(argument61 : "stringValue42651") @Directive44(argument97 : ["stringValue42650"]) { + field53549: String + field53550: Enum1393 @deprecated + field53551: Enum2418 + field53552: Enum2419 + field53553: Enum2420 + field53554: Enum2421 + field53555: Scalar1 + field53556: String + field53557: Scalar1 + field53558: Scalar1 + field53559: Scalar1 + field53560: Scalar1 + field53561: Scalar2 + field53562: Scalar2 + field53563: Scalar2 + field53564: Scalar3 + field53565: Scalar3 + field53566: Scalar1 + field53567: Enum2407 + field53568: Enum2422 + field53569: Enum2423 + field53570: [Object10168] + field53586: Enum2412 + field53587: Enum2424 + field53588: Enum2417 + field53589: Object10170 + field53591: Boolean + field53592: String + field53593: String +} + +type Object10168 @Directive21(argument61 : "stringValue42659") @Directive44(argument97 : ["stringValue42658"]) { + field53571: Enum2413 + field53572: Scalar1 + field53573: Enum2414 + field53574: Enum2424 @deprecated + field53575: String + field53576: String + field53577: Boolean + field53578: Boolean + field53579: Scalar2 + field53580: Scalar2 + field53581: Float + field53582: Float + field53583: [Object10169] +} + +type Object10169 @Directive21(argument61 : "stringValue42662") @Directive44(argument97 : ["stringValue42661"]) { + field53584: Scalar3! + field53585: Enum2425! +} + +type Object1017 @Directive20(argument58 : "stringValue5270", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5269") @Directive31 @Directive44(argument97 : ["stringValue5271", "stringValue5272"]) { + field5851: [Object1018] + field5853: String + field5854: String +} + +type Object10170 @Directive21(argument61 : "stringValue42665") @Directive44(argument97 : ["stringValue42664"]) { + field53590: Float +} + +type Object10171 @Directive21(argument61 : "stringValue42674") @Directive44(argument97 : ["stringValue42673"]) { + field53598: Scalar1 +} + +type Object10172 @Directive21(argument61 : "stringValue42679") @Directive44(argument97 : ["stringValue42678"]) { + field53600: [Object10173] +} + +type Object10173 @Directive21(argument61 : "stringValue42681") @Directive44(argument97 : ["stringValue42680"]) { + field53601: Scalar2! + field53602: [Object10174] + field53694: Object10190 +} + +type Object10174 @Directive21(argument61 : "stringValue42683") @Directive44(argument97 : ["stringValue42682"]) { + field53603: Scalar2! + field53604: [Object10175] + field53693: Int +} + +type Object10175 @Directive21(argument61 : "stringValue42685") @Directive44(argument97 : ["stringValue42684"]) { + field53605: String + field53606: Enum1393 + field53607: Enum2418 + field53608: Enum2419 + field53609: Enum2420 + field53610: Enum2421 + field53611: [Object10176] + field53614: String + field53615: [Object10177] + field53627: [Object10180] + field53640: [Object10183] + field53645: [Object10185] + field53649: Scalar2 + field53650: Scalar2 + field53651: Scalar2 + field53652: Scalar3 + field53653: Scalar3 + field53654: [Object10187] + field53687: Enum2407 + field53688: Enum2422 + field53689: Enum2423 + field53690: Enum2412 + field53691: Enum2424 + field53692: [Object10168] +} + +type Object10176 @Directive21(argument61 : "stringValue42687") @Directive44(argument97 : ["stringValue42686"]) { + field53612: Enum2411 + field53613: String +} + +type Object10177 @Directive21(argument61 : "stringValue42689") @Directive44(argument97 : ["stringValue42688"]) { + field53616: Enum2426! + field53617: Object10178! +} + +type Object10178 @Directive21(argument61 : "stringValue42692") @Directive44(argument97 : ["stringValue42691"]) { + field53618: Scalar2 + field53619: String + field53620: [[Object10179]] + field53626: [Scalar2] +} + +type Object10179 @Directive21(argument61 : "stringValue42694") @Directive44(argument97 : ["stringValue42693"]) { + field53621: String + field53622: Float + field53623: Float + field53624: Float + field53625: Float +} + +type Object1018 @Directive20(argument58 : "stringValue5274", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5273") @Directive31 @Directive44(argument97 : ["stringValue5275", "stringValue5276"]) { + field5852: String +} + +type Object10180 @Directive21(argument61 : "stringValue42696") @Directive44(argument97 : ["stringValue42695"]) { + field53628: Enum2427! + field53629: Object10181! +} + +type Object10181 @Directive21(argument61 : "stringValue42699") @Directive44(argument97 : ["stringValue42698"]) { + field53630: Scalar2 + field53631: String + field53632: Float + field53633: Boolean + field53634: Object10182 + field53637: Scalar3 + field53638: Enum2428 + field53639: [Object10169] +} + +type Object10182 @Directive21(argument61 : "stringValue42701") @Directive44(argument97 : ["stringValue42700"]) { + field53635: Scalar3 + field53636: Scalar3 +} + +type Object10183 @Directive21(argument61 : "stringValue42704") @Directive44(argument97 : ["stringValue42703"]) { + field53641: Enum2429! + field53642: Object10184! +} + +type Object10184 @Directive21(argument61 : "stringValue42707") @Directive44(argument97 : ["stringValue42706"]) { + field53643: Scalar2 + field53644: String +} + +type Object10185 @Directive21(argument61 : "stringValue42709") @Directive44(argument97 : ["stringValue42708"]) { + field53646: Enum2430! + field53647: Object10186! +} + +type Object10186 @Directive21(argument61 : "stringValue42712") @Directive44(argument97 : ["stringValue42711"]) { + field53648: Enum2431 +} + +type Object10187 @Directive21(argument61 : "stringValue42715") @Directive44(argument97 : ["stringValue42714"]) { + field53655: Enum2432! + field53656: Object10188! +} + +type Object10188 @Directive21(argument61 : "stringValue42718") @Directive44(argument97 : ["stringValue42717"]) { + field53657: Enum2433 + field53658: Enum2434 + field53659: String + field53660: String + field53661: Boolean + field53662: Object10189 +} + +type Object10189 @Directive21(argument61 : "stringValue42722") @Directive44(argument97 : ["stringValue42721"]) { + field53663: Enum2418 + field53664: Scalar2 + field53665: Scalar3 + field53666: Scalar3 + field53667: Scalar3 + field53668: Scalar3 + field53669: String + field53670: Float + field53671: Float + field53672: Enum2428 + field53673: String + field53674: Scalar2 + field53675: String + field53676: String + field53677: String + field53678: Boolean + field53679: Scalar2 + field53680: Scalar2 + field53681: Boolean + field53682: Scalar2 + field53683: Scalar2 + field53684: Float + field53685: Scalar2 + field53686: String +} + +type Object1019 implements Interface76 @Directive21(argument61 : "stringValue5278") @Directive22(argument62 : "stringValue5277") @Directive31 @Directive44(argument97 : ["stringValue5279", "stringValue5280", "stringValue5281"]) @Directive45(argument98 : ["stringValue5282"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union126] + field5221: Boolean +} + +type Object10190 @Directive21(argument61 : "stringValue42724") @Directive44(argument97 : ["stringValue42723"]) { + field53695: [Object10191] +} + +type Object10191 @Directive21(argument61 : "stringValue42726") @Directive44(argument97 : ["stringValue42725"]) { + field53696: Scalar2 + field53697: String + field53698: String + field53699: Int + field53700: String + field53701: String +} + +type Object10192 @Directive21(argument61 : "stringValue42731") @Directive44(argument97 : ["stringValue42730"]) { + field53703: [Object10193] +} + +type Object10193 @Directive21(argument61 : "stringValue42733") @Directive44(argument97 : ["stringValue42732"]) { + field53704: String + field53705: Enum1393 + field53706: Enum2435 + field53707: Enum2418 + field53708: Enum2419 + field53709: Enum2420 + field53710: Enum2421 + field53711: Enum1394 + field53712: Float + field53713: [Object10176] + field53714: Scalar1 + field53715: Boolean + field53716: [Enum2436] + field53717: String +} + +type Object10194 @Directive21(argument61 : "stringValue42742") @Directive44(argument97 : ["stringValue42741"]) { + field53719: Scalar1 + field53720: Object10195 +} + +type Object10195 @Directive21(argument61 : "stringValue42744") @Directive44(argument97 : ["stringValue42743"]) { + field53721: Scalar1 +} + +type Object10196 @Directive21(argument61 : "stringValue42749") @Directive44(argument97 : ["stringValue42748"]) { + field53723: [Object10174] + field53724: Object10190 +} + +type Object10197 @Directive21(argument61 : "stringValue42755") @Directive44(argument97 : ["stringValue42754"]) { + field53726: Scalar1 +} + +type Object10198 @Directive21(argument61 : "stringValue42760") @Directive44(argument97 : ["stringValue42759"]) { + field53728: [Object10199] +} + +type Object10199 @Directive21(argument61 : "stringValue42762") @Directive44(argument97 : ["stringValue42761"]) { + field53729: Scalar2! + field53730: [Object10175] + field53731: Int + field53732: Object10190 +} + +type Object102 @Directive21(argument61 : "stringValue394") @Directive44(argument97 : ["stringValue393"]) { + field705: Union11 + field744: Union11 + field745: Object112 +} + +type Object1020 @Directive20(argument58 : "stringValue5287", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5286") @Directive31 @Directive44(argument97 : ["stringValue5288", "stringValue5289"]) { + field5856: Object1021 + field5867: Object1023 + field5921: String! @deprecated + field5922: Object1040 + field5928: Object1041 + field5938: String! +} + +type Object10200 @Directive21(argument61 : "stringValue42768") @Directive44(argument97 : ["stringValue42767"]) { + field53734: [Object10201] +} + +type Object10201 @Directive21(argument61 : "stringValue42770") @Directive44(argument97 : ["stringValue42769"]) { + field53735: Scalar2! + field53736: String! + field53737: Enum1393! + field53738: Enum1394! + field53739: Int! + field53740: Int + field53741: Int + field53742: Scalar4! + field53743: Enum1395! + field53744: Scalar3 + field53745: Scalar3 + field53746: Scalar2 + field53747: String +} + +type Object10202 @Directive21(argument61 : "stringValue42776") @Directive44(argument97 : ["stringValue42775"]) { + field53749: Enum1394 + field53750: Int +} + +type Object10203 @Directive21(argument61 : "stringValue42784") @Directive44(argument97 : ["stringValue42783"]) { + field53752: Boolean! + field53753: [String] + field53754: Object10143 +} + +type Object10204 @Directive21(argument61 : "stringValue42805") @Directive44(argument97 : ["stringValue42804"]) { + field53756: Boolean! + field53757: [String] + field53758: Object10147 +} + +type Object10205 @Directive21(argument61 : "stringValue42811") @Directive44(argument97 : ["stringValue42810"]) { + field53760: Boolean! + field53761: [String] +} + +type Object10206 @Directive21(argument61 : "stringValue42817") @Directive44(argument97 : ["stringValue42816"]) { + field53763: Boolean! + field53764: [String] +} + +type Object10207 @Directive44(argument97 : ["stringValue42818"]) { + field53766(argument2372: InputObject1969!): Object10208 @Directive35(argument89 : "stringValue42820", argument90 : true, argument91 : "stringValue42819", argument92 : 869, argument93 : "stringValue42821", argument94 : false) + field53768(argument2373: InputObject1970!): Object10209 @Directive35(argument89 : "stringValue42827", argument90 : true, argument91 : "stringValue42826", argument92 : 870, argument93 : "stringValue42828", argument94 : false) +} + +type Object10208 @Directive21(argument61 : "stringValue42825") @Directive44(argument97 : ["stringValue42824"]) { + field53767: Scalar1 +} + +type Object10209 @Directive21(argument61 : "stringValue42832") @Directive44(argument97 : ["stringValue42831"]) { + field53769: [Object10210] +} + +type Object1021 @Directive20(argument58 : "stringValue5291", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5290") @Directive31 @Directive44(argument97 : ["stringValue5292", "stringValue5293"]) { + field5857: Object1008 + field5858: Object1008 + field5859: Object1008 + field5860: Object1008 + field5861: Object1022 + field5865: Object1014 + field5866: [Object1016] +} + +type Object10210 @Directive21(argument61 : "stringValue42834") @Directive44(argument97 : ["stringValue42833"]) { + field53770: Enum2437 + field53771: String +} + +type Object10211 @Directive44(argument97 : ["stringValue42835"]) { + field53773(argument2374: InputObject1972!): Object10212 @Directive35(argument89 : "stringValue42837", argument90 : true, argument91 : "stringValue42836", argument92 : 871, argument93 : "stringValue42838", argument94 : false) + field53787(argument2375: InputObject1973!): Object10215 @Directive35(argument89 : "stringValue42847", argument90 : true, argument91 : "stringValue42846", argument92 : 872, argument93 : "stringValue42848", argument94 : false) + field53790(argument2376: InputObject1974!): Object10216 @Directive35(argument89 : "stringValue42853", argument90 : true, argument91 : "stringValue42852", argument92 : 873, argument93 : "stringValue42854", argument94 : false) + field53805(argument2377: InputObject1975!): Object10220 @Directive35(argument89 : "stringValue42865", argument90 : true, argument91 : "stringValue42864", argument92 : 874, argument93 : "stringValue42866", argument94 : false) +} + +type Object10212 @Directive21(argument61 : "stringValue42841") @Directive44(argument97 : ["stringValue42840"]) { + field53774: [Object10213] + field53786: Int +} + +type Object10213 @Directive21(argument61 : "stringValue42843") @Directive44(argument97 : ["stringValue42842"]) { + field53775: Scalar2! + field53776: String + field53777: String + field53778: String @deprecated + field53779: [Object5595] @deprecated + field53780: Object5596 @deprecated + field53781: Object5600 + field53782: String + field53783: Object10214 + field53785: Boolean +} + +type Object10214 @Directive21(argument61 : "stringValue42845") @Directive44(argument97 : ["stringValue42844"]) { + field53784: String +} + +type Object10215 @Directive21(argument61 : "stringValue42851") @Directive44(argument97 : ["stringValue42850"]) { + field53788: [Object5585] + field53789: Int +} + +type Object10216 @Directive21(argument61 : "stringValue42857") @Directive44(argument97 : ["stringValue42856"]) { + field53791: [Object5599] + field53792: [Object10217] + field53801: [Object10219] + field53804: String +} + +type Object10217 @Directive21(argument61 : "stringValue42859") @Directive44(argument97 : ["stringValue42858"]) { + field53793: Enum1396 + field53794: String + field53795: String + field53796: [Object10218] + field53800: String +} + +type Object10218 @Directive21(argument61 : "stringValue42861") @Directive44(argument97 : ["stringValue42860"]) { + field53797: String! + field53798: String + field53799: Boolean +} + +type Object10219 @Directive21(argument61 : "stringValue42863") @Directive44(argument97 : ["stringValue42862"]) { + field53802: String! + field53803: String! +} + +type Object1022 @Directive20(argument58 : "stringValue5295", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5294") @Directive31 @Directive44(argument97 : ["stringValue5296", "stringValue5297"]) { + field5862: Union125 + field5863: Enum286 + field5864: String +} + +type Object10220 @Directive21(argument61 : "stringValue42871") @Directive44(argument97 : ["stringValue42870"]) { + field53806: [Object10221] +} + +type Object10221 @Directive21(argument61 : "stringValue42873") @Directive44(argument97 : ["stringValue42872"]) { + field53807: Object10222 + field53811: [Object5594] +} + +type Object10222 @Directive21(argument61 : "stringValue42875") @Directive44(argument97 : ["stringValue42874"]) { + field53808: String + field53809: String + field53810: String +} + +type Object10223 @Directive44(argument97 : ["stringValue42876"]) { + field53813(argument2378: InputObject1977!): Object10224 @Directive35(argument89 : "stringValue42878", argument90 : true, argument91 : "stringValue42877", argument92 : 875, argument93 : "stringValue42879", argument94 : false) + field53854(argument2379: InputObject1978!): Object10235 @Directive35(argument89 : "stringValue42905", argument90 : false, argument91 : "stringValue42904", argument92 : 876, argument93 : "stringValue42906", argument94 : false) @deprecated + field54027(argument2380: InputObject1979!): Object10265 @Directive35(argument89 : "stringValue42972", argument90 : false, argument91 : "stringValue42971", argument92 : 877, argument93 : "stringValue42973", argument94 : false) + field54033(argument2381: InputObject1980!): Object10266 @Directive35(argument89 : "stringValue42978", argument90 : false, argument91 : "stringValue42977", argument92 : 878, argument93 : "stringValue42979", argument94 : false) @deprecated + field54044(argument2382: InputObject1981!): Object10270 @Directive35(argument89 : "stringValue42990", argument90 : false, argument91 : "stringValue42989", argument92 : 879, argument93 : "stringValue42991", argument94 : false) @deprecated + field54142(argument2383: InputObject1982!): Object10287 @Directive35(argument89 : "stringValue43029", argument90 : false, argument91 : "stringValue43028", argument92 : 880, argument93 : "stringValue43030", argument94 : false) + field54177(argument2384: InputObject1983!): Object10291 @Directive35(argument89 : "stringValue43043", argument90 : false, argument91 : "stringValue43042", argument92 : 881, argument93 : "stringValue43044", argument94 : false) @deprecated + field54179(argument2385: InputObject1984!): Object10292 @Directive35(argument89 : "stringValue43049", argument90 : true, argument91 : "stringValue43048", argument93 : "stringValue43050", argument94 : false) @deprecated +} + +type Object10224 @Directive21(argument61 : "stringValue42882") @Directive44(argument97 : ["stringValue42881"]) { + field53814: Scalar2! + field53815: Object10225 + field53826: Object10228 + field53846: Object10232 +} + +type Object10225 @Directive21(argument61 : "stringValue42884") @Directive44(argument97 : ["stringValue42883"]) { + field53816: [Object10226] + field53823: String + field53824: Enum2439 + field53825: Boolean +} + +type Object10226 @Directive21(argument61 : "stringValue42886") @Directive44(argument97 : ["stringValue42885"]) { + field53817: String + field53818: [Object10227] +} + +type Object10227 @Directive21(argument61 : "stringValue42888") @Directive44(argument97 : ["stringValue42887"]) { + field53819: String + field53820: Scalar2! + field53821: Scalar2 + field53822: Scalar2 +} + +type Object10228 @Directive21(argument61 : "stringValue42891") @Directive44(argument97 : ["stringValue42890"]) { + field53827: [Object10229] + field53842: Object10231 +} + +type Object10229 @Directive21(argument61 : "stringValue42893") @Directive44(argument97 : ["stringValue42892"]) { + field53828: String + field53829: String + field53830: Object10230 + field53840: Scalar2! + field53841: Scalar2 +} + +type Object1023 @Directive20(argument58 : "stringValue5303", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5302") @Directive31 @Directive44(argument97 : ["stringValue5304", "stringValue5305"]) { + field5868: Union125 + field5869: Object1024 + field5911: Object1038 + field5916: Object1016 + field5917: Object1033 + field5918: Object1033 + field5919: Object1033 + field5920: [Object1037] +} + +type Object10230 @Directive21(argument61 : "stringValue42895") @Directive44(argument97 : ["stringValue42894"]) { + field53831: String + field53832: String + field53833: String + field53834: Scalar2! + field53835: Boolean + field53836: Boolean + field53837: String + field53838: String + field53839: String +} + +type Object10231 @Directive21(argument61 : "stringValue42897") @Directive44(argument97 : ["stringValue42896"]) { + field53843: String + field53844: String + field53845: Object10230 +} + +type Object10232 @Directive21(argument61 : "stringValue42899") @Directive44(argument97 : ["stringValue42898"]) { + field53847: Object10233 + field53853: Object10233 +} + +type Object10233 @Directive21(argument61 : "stringValue42901") @Directive44(argument97 : ["stringValue42900"]) { + field53848: [Object10234] +} + +type Object10234 @Directive21(argument61 : "stringValue42903") @Directive44(argument97 : ["stringValue42902"]) { + field53849: Scalar2 + field53850: String + field53851: String + field53852: Object10230 +} + +type Object10235 @Directive21(argument61 : "stringValue42909") @Directive44(argument97 : ["stringValue42908"]) { + field53855: Scalar2! + field53856: Float + field53857: Int + field53858: Int + field53859: Boolean + field53860: String + field53861: Object10236 + field53893: Object10239! + field53901: String! + field53902: Int + field53903: Int + field53904: String + field53905: String + field53906: Int + field53907: String + field53908: [Object10240] + field53926: Object10244 + field53932: [Object10245] + field53938: String + field53939: Object10246 + field53949: Object10248 + field53959: Object10250 + field53970: [Object10253] + field53978: [Object10255] + field53983: Object10256 + field53994: String + field53995: Object10259 + field54003: Object10259 + field54004: String + field54005: String + field54006: Scalar2 + field54007: Boolean + field54008: String + field54009: String + field54010: String + field54011: [Object10237] + field54012: Object10237 + field54013: [Int] + field54014: Object10262 + field54022: Boolean + field54023: Int + field54024: String + field54025: Object10247 + field54026: Boolean +} + +type Object10236 @Directive21(argument61 : "stringValue42911") @Directive44(argument97 : ["stringValue42910"]) { + field53862: Object10237 + field53872: Object10238 + field53891: Object10237 + field53892: Object10238 +} + +type Object10237 @Directive21(argument61 : "stringValue42913") @Directive44(argument97 : ["stringValue42912"]) { + field53863: String + field53864: String + field53865: String + field53866: Scalar2! + field53867: Boolean + field53868: Boolean + field53869: String + field53870: String + field53871: String +} + +type Object10238 @Directive21(argument61 : "stringValue42915") @Directive44(argument97 : ["stringValue42914"]) { + field53873: String + field53874: String + field53875: String + field53876: Scalar2! + field53877: Boolean + field53878: Boolean + field53879: String + field53880: String + field53881: String + field53882: String + field53883: String + field53884: String + field53885: String + field53886: String + field53887: String + field53888: String + field53889: String + field53890: String +} + +type Object10239 @Directive21(argument61 : "stringValue42917") @Directive44(argument97 : ["stringValue42916"]) { + field53894: Float! + field53895: Float! + field53896: String! + field53897: String + field53898: String + field53899: String + field53900: String +} + +type Object1024 @Directive20(argument58 : "stringValue5307", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5306") @Directive31 @Directive44(argument97 : ["stringValue5308", "stringValue5309"]) { + field5870: [Union127] + field5902: Object1036 +} + +type Object10240 @Directive21(argument61 : "stringValue42919") @Directive44(argument97 : ["stringValue42918"]) { + field53909: String + field53910: Object10237 + field53911: String + field53912: Scalar2! + field53913: Object10241 + field53919: [Object10237] + field53920: String + field53921: String + field53922: [Object10243] + field53924: String + field53925: Boolean +} + +type Object10241 @Directive21(argument61 : "stringValue42921") @Directive44(argument97 : ["stringValue42920"]) { + field53914: String + field53915: Object10242 + field53918: String +} + +type Object10242 @Directive21(argument61 : "stringValue42923") @Directive44(argument97 : ["stringValue42922"]) { + field53916: Float! + field53917: Float! +} + +type Object10243 @Directive21(argument61 : "stringValue42925") @Directive44(argument97 : ["stringValue42924"]) { + field53923: String! +} + +type Object10244 @Directive21(argument61 : "stringValue42927") @Directive44(argument97 : ["stringValue42926"]) { + field53927: String + field53928: String + field53929: Object10236 + field53930: String + field53931: String +} + +type Object10245 @Directive21(argument61 : "stringValue42929") @Directive44(argument97 : ["stringValue42928"]) { + field53933: String + field53934: String + field53935: Int! + field53936: String + field53937: String +} + +type Object10246 @Directive21(argument61 : "stringValue42931") @Directive44(argument97 : ["stringValue42930"]) { + field53940: Float + field53941: Scalar2 + field53942: String + field53943: Boolean + field53944: String + field53945: String + field53946: Object10247 +} + +type Object10247 @Directive21(argument61 : "stringValue42933") @Directive44(argument97 : ["stringValue42932"]) { + field53947: String + field53948: Enum2440 +} + +type Object10248 @Directive21(argument61 : "stringValue42936") @Directive44(argument97 : ["stringValue42935"]) { + field53950: Object10249 + field53955: String + field53956: [String] + field53957: Enum2441 + field53958: String +} + +type Object10249 @Directive21(argument61 : "stringValue42938") @Directive44(argument97 : ["stringValue42937"]) { + field53951: String + field53952: String + field53953: [String] + field53954: String +} + +type Object1025 @Directive20(argument58 : "stringValue5314", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5313") @Directive31 @Directive44(argument97 : ["stringValue5315", "stringValue5316"]) { + field5871: Object1026 + field5874: String +} + +type Object10250 @Directive21(argument61 : "stringValue42941") @Directive44(argument97 : ["stringValue42940"]) { + field53960: [Object10251] + field53967: String + field53968: Enum2441 + field53969: Boolean +} + +type Object10251 @Directive21(argument61 : "stringValue42943") @Directive44(argument97 : ["stringValue42942"]) { + field53961: String + field53962: [Object10252] +} + +type Object10252 @Directive21(argument61 : "stringValue42945") @Directive44(argument97 : ["stringValue42944"]) { + field53963: String + field53964: Scalar2! + field53965: Scalar2 + field53966: Scalar2 +} + +type Object10253 @Directive21(argument61 : "stringValue42947") @Directive44(argument97 : ["stringValue42946"]) { + field53971: String! + field53972: [Object10254]! +} + +type Object10254 @Directive21(argument61 : "stringValue42949") @Directive44(argument97 : ["stringValue42948"]) { + field53973: String! + field53974: Float! + field53975: Float! + field53976: String + field53977: String +} + +type Object10255 @Directive21(argument61 : "stringValue42951") @Directive44(argument97 : ["stringValue42950"]) { + field53979: Int + field53980: Int + field53981: String + field53982: Object10237 +} + +type Object10256 @Directive21(argument61 : "stringValue42953") @Directive44(argument97 : ["stringValue42952"]) { + field53984: [Object10257] + field53990: Object10258 +} + +type Object10257 @Directive21(argument61 : "stringValue42955") @Directive44(argument97 : ["stringValue42954"]) { + field53985: String + field53986: String + field53987: Object10237 + field53988: Scalar2! + field53989: Scalar2 +} + +type Object10258 @Directive21(argument61 : "stringValue42957") @Directive44(argument97 : ["stringValue42956"]) { + field53991: String + field53992: String + field53993: Object10237 +} + +type Object10259 @Directive21(argument61 : "stringValue42959") @Directive44(argument97 : ["stringValue42958"]) { + field53996: Object10260 + field53998: [Object10261] +} + +type Object1026 @Directive20(argument58 : "stringValue5318", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5317") @Directive31 @Directive44(argument97 : ["stringValue5319", "stringValue5320"]) { + field5872: String + field5873: String +} + +type Object10260 @Directive21(argument61 : "stringValue42961") @Directive44(argument97 : ["stringValue42960"]) { + field53997: Int +} + +type Object10261 @Directive21(argument61 : "stringValue42963") @Directive44(argument97 : ["stringValue42962"]) { + field53999: Enum2442 + field54000: String + field54001: [Object10261] + field54002: [Object10261] +} + +type Object10262 @Directive21(argument61 : "stringValue42966") @Directive44(argument97 : ["stringValue42965"]) { + field54015: Object10263 + field54021: Object10263 +} + +type Object10263 @Directive21(argument61 : "stringValue42968") @Directive44(argument97 : ["stringValue42967"]) { + field54016: [Object10264] +} + +type Object10264 @Directive21(argument61 : "stringValue42970") @Directive44(argument97 : ["stringValue42969"]) { + field54017: Scalar2 + field54018: String + field54019: String + field54020: Object10237 +} + +type Object10265 @Directive21(argument61 : "stringValue42976") @Directive44(argument97 : ["stringValue42975"]) { + field54028: String + field54029: String + field54030: String! + field54031: [Object10240]! + field54032: [Object10237] +} + +type Object10266 @Directive21(argument61 : "stringValue42982") @Directive44(argument97 : ["stringValue42981"]) { + field54034: Scalar2! + field54035: Object10267 +} + +type Object10267 @Directive21(argument61 : "stringValue42984") @Directive44(argument97 : ["stringValue42983"]) { + field54036: [Object10268] + field54043: Enum2441 +} + +type Object10268 @Directive21(argument61 : "stringValue42986") @Directive44(argument97 : ["stringValue42985"]) { + field54037: [Object10269] + field54040: Int + field54041: String + field54042: Int +} + +type Object10269 @Directive21(argument61 : "stringValue42988") @Directive44(argument97 : ["stringValue42987"]) { + field54038: Boolean + field54039: String +} + +type Object1027 @Directive20(argument58 : "stringValue5322", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5321") @Directive31 @Directive44(argument97 : ["stringValue5323", "stringValue5324"]) { + field5875: Object1028 + field5884: Object1031 + field5887: Object1032 + field5890: Object1016 + field5891: Object1033 + field5898: Object1033 + field5899: Object1033 + field5900: Object1033 + field5901: String +} + +type Object10270 @Directive21(argument61 : "stringValue42994") @Directive44(argument97 : ["stringValue42993"]) { + field54045: Scalar2! + field54046: Float + field54047: Int + field54048: Int + field54049: String + field54050: Object10239 + field54051: String + field54052: String + field54053: Int + field54054: String + field54055: Int + field54056: Object10271 + field54059: Object10250 + field54060: Object10272 + field54072: Int @deprecated + field54073: Boolean + field54074: Object10276 @deprecated + field54076: Boolean + field54077: String + field54078: Object10277 + field54082: Object10278 @deprecated + field54084: Scalar2 + field54085: Object10248 + field54086: Object10279 + field54089: [Object10245] + field54090: Object10280 + field54094: [Object10281] + field54097: Object10267 + field54098: Object10282 + field54101: String + field54102: String + field54103: String + field54104: String + field54105: [Object10283] + field54110: [Object10284] + field54122: Scalar2 + field54123: Object10247 + field54124: Float + field54125: Float + field54126: Object10262 + field54127: [Object10286] + field54136: Object10236 + field54137: Boolean + field54138: Float + field54139: Boolean + field54140: Boolean + field54141: Boolean +} + +type Object10271 @Directive21(argument61 : "stringValue42996") @Directive44(argument97 : ["stringValue42995"]) { + field54057: [Object10240] + field54058: Enum2441 +} + +type Object10272 @Directive21(argument61 : "stringValue42998") @Directive44(argument97 : ["stringValue42997"]) { + field54061: Enum2441! + field54062: Object10273 + field54069: Object10275 +} + +type Object10273 @Directive21(argument61 : "stringValue43000") @Directive44(argument97 : ["stringValue42999"]) { + field54063: String! + field54064: [Object10274]! +} + +type Object10274 @Directive21(argument61 : "stringValue43002") @Directive44(argument97 : ["stringValue43001"]) { + field54065: Scalar3! + field54066: Scalar3! + field54067: Object10246! + field54068: Int! +} + +type Object10275 @Directive21(argument61 : "stringValue43004") @Directive44(argument97 : ["stringValue43003"]) { + field54070: String + field54071: String +} + +type Object10276 @Directive21(argument61 : "stringValue43006") @Directive44(argument97 : ["stringValue43005"]) { + field54075: Enum2441! +} + +type Object10277 @Directive21(argument61 : "stringValue43008") @Directive44(argument97 : ["stringValue43007"]) { + field54079: Enum2441! + field54080: String + field54081: String +} + +type Object10278 @Directive21(argument61 : "stringValue43010") @Directive44(argument97 : ["stringValue43009"]) { + field54083: Enum2441! +} + +type Object10279 @Directive21(argument61 : "stringValue43012") @Directive44(argument97 : ["stringValue43011"]) { + field54087: [Object10255] + field54088: Enum2441 +} + +type Object1028 @Directive20(argument58 : "stringValue5326", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5325") @Directive31 @Directive44(argument97 : ["stringValue5327", "stringValue5328"]) { + field5876: Object1029 + field5882: String + field5883: [String] +} + +type Object10280 @Directive21(argument61 : "stringValue43014") @Directive44(argument97 : ["stringValue43013"]) { + field54091: String! + field54092: Enum2441! + field54093: String +} + +type Object10281 @Directive21(argument61 : "stringValue43016") @Directive44(argument97 : ["stringValue43015"]) { + field54095: String + field54096: String +} + +type Object10282 @Directive21(argument61 : "stringValue43018") @Directive44(argument97 : ["stringValue43017"]) { + field54099: String + field54100: Enum2441 +} + +type Object10283 @Directive21(argument61 : "stringValue43020") @Directive44(argument97 : ["stringValue43019"]) { + field54106: Scalar2 + field54107: Scalar2 + field54108: String + field54109: Scalar2 +} + +type Object10284 @Directive21(argument61 : "stringValue43022") @Directive44(argument97 : ["stringValue43021"]) { + field54111: Scalar2 + field54112: String + field54113: Int + field54114: Scalar4 + field54115: Object10285 + field54121: String +} + +type Object10285 @Directive21(argument61 : "stringValue43024") @Directive44(argument97 : ["stringValue43023"]) { + field54116: Scalar2 + field54117: String + field54118: String + field54119: String + field54120: Enum2443 +} + +type Object10286 @Directive21(argument61 : "stringValue43027") @Directive44(argument97 : ["stringValue43026"]) { + field54128: String + field54129: String + field54130: String + field54131: String + field54132: String + field54133: String + field54134: Object10237 + field54135: Scalar2 +} + +type Object10287 @Directive21(argument61 : "stringValue43033") @Directive44(argument97 : ["stringValue43032"]) { + field54143: Object10288 + field54168: Boolean + field54169: String + field54170: [Object10288] + field54171: Enum2444 + field54172: String + field54173: String + field54174: Enum2445 + field54175: String + field54176: Boolean +} + +type Object10288 @Directive21(argument61 : "stringValue43035") @Directive44(argument97 : ["stringValue43034"]) { + field54144: Float + field54145: String + field54146: [Object10289] + field54158: Boolean + field54159: String + field54160: String + field54161: Scalar2 + field54162: String + field54163: String + field54164: Int + field54165: Int + field54166: Object10290 + field54167: String +} + +type Object10289 @Directive21(argument61 : "stringValue43037") @Directive44(argument97 : ["stringValue43036"]) { + field54147: String + field54148: String + field54149: Object10290 + field54157: String +} + +type Object1029 @Directive20(argument58 : "stringValue5330", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5329") @Directive31 @Directive44(argument97 : ["stringValue5331", "stringValue5332"]) { + field5877: [Object1030] + field5880: [String] + field5881: String +} + +type Object10290 @Directive21(argument61 : "stringValue43039") @Directive44(argument97 : ["stringValue43038"]) { + field54150: String + field54151: Float + field54152: Float + field54153: Boolean + field54154: String + field54155: Float + field54156: Float +} + +type Object10291 @Directive21(argument61 : "stringValue43047") @Directive44(argument97 : ["stringValue43046"]) { + field54178: String +} + +type Object10292 @Directive21(argument61 : "stringValue43053") @Directive44(argument97 : ["stringValue43052"]) { + field54180: String +} + +type Object10293 @Directive44(argument97 : ["stringValue43054"]) { + field54182(argument2386: InputObject1985!): Object10294 @Directive35(argument89 : "stringValue43056", argument90 : true, argument91 : "stringValue43055", argument92 : 882, argument93 : "stringValue43057", argument94 : true) + field54211(argument2387: InputObject1986!): Object10302 @Directive35(argument89 : "stringValue43077", argument90 : true, argument91 : "stringValue43076", argument92 : 883, argument93 : "stringValue43078", argument94 : true) + field54570(argument2388: InputObject1992!): Object10362 @Directive35(argument89 : "stringValue43250", argument90 : true, argument91 : "stringValue43249", argument92 : 884, argument93 : "stringValue43251", argument94 : true) + field54572(argument2389: InputObject1993!): Object10363 @Directive35(argument89 : "stringValue43257", argument90 : true, argument91 : "stringValue43256", argument92 : 885, argument93 : "stringValue43258", argument94 : true) @deprecated + field54585(argument2390: InputObject1995!): Object10366 @Directive35(argument89 : "stringValue43268", argument90 : true, argument91 : "stringValue43267", argument92 : 886, argument93 : "stringValue43269", argument94 : true) + field54921(argument2391: InputObject1998!): Object10434 @Directive35(argument89 : "stringValue43440", argument90 : true, argument91 : "stringValue43439", argument92 : 887, argument93 : "stringValue43441", argument94 : true) + field54936(argument2392: InputObject1999!): Object10435 @Directive35(argument89 : "stringValue43446", argument90 : true, argument91 : "stringValue43445", argument92 : 888, argument93 : "stringValue43447", argument94 : true) @deprecated + field54938(argument2393: InputObject2000!): Object10436 @Directive35(argument89 : "stringValue43452", argument90 : true, argument91 : "stringValue43451", argument92 : 889, argument93 : "stringValue43453", argument94 : true) +} + +type Object10294 @Directive21(argument61 : "stringValue43061") @Directive44(argument97 : ["stringValue43060"]) { + field54183: Object10295 +} + +type Object10295 @Directive21(argument61 : "stringValue43063") @Directive44(argument97 : ["stringValue43062"]) { + field54184: Object10296 + field54193: Scalar2! + field54194: [Object10298] + field54202: [Object10300] +} + +type Object10296 @Directive21(argument61 : "stringValue43065") @Directive44(argument97 : ["stringValue43064"]) { + field54185: Float + field54186: String + field54187: [Object10297] + field54191: Scalar2 + field54192: Scalar2 +} + +type Object10297 @Directive21(argument61 : "stringValue43067") @Directive44(argument97 : ["stringValue43066"]) { + field54188: Scalar2 + field54189: Scalar2 + field54190: Scalar2 +} + +type Object10298 @Directive21(argument61 : "stringValue43069") @Directive44(argument97 : ["stringValue43068"]) { + field54195: Scalar2 + field54196: [Object10299] +} + +type Object10299 @Directive21(argument61 : "stringValue43071") @Directive44(argument97 : ["stringValue43070"]) { + field54197: Float + field54198: String + field54199: [Object10297] + field54200: Scalar2 + field54201: Scalar2 +} + +type Object103 @Directive21(argument61 : "stringValue397") @Directive44(argument97 : ["stringValue396"]) { + field706: String! + field707: String + field708: Enum61 +} + +type Object1030 @Directive20(argument58 : "stringValue5334", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5333") @Directive31 @Directive44(argument97 : ["stringValue5335", "stringValue5336"]) { + field5878: String + field5879: String +} + +type Object10300 @Directive21(argument61 : "stringValue43073") @Directive44(argument97 : ["stringValue43072"]) { + field54203: [Object10301] + field54208: String + field54209: String + field54210: String +} + +type Object10301 @Directive21(argument61 : "stringValue43075") @Directive44(argument97 : ["stringValue43074"]) { + field54204: Scalar2 + field54205: String + field54206: Scalar2 + field54207: String +} + +type Object10302 @Directive21(argument61 : "stringValue43102") @Directive44(argument97 : ["stringValue43101"]) { + field54212: [Union329]! + field54556: String + field54557: Object10361 + field54569: String +} + +type Object10303 @Directive21(argument61 : "stringValue43105") @Directive44(argument97 : ["stringValue43104"]) { + field54213: [Object10304]! + field54261: Int! + field54262: Object10307 + field54295: Enum1408 +} + +type Object10304 @Directive21(argument61 : "stringValue43107") @Directive44(argument97 : ["stringValue43106"]) { + field54214: Scalar2! + field54215: String + field54216: String + field54217: String + field54218: String + field54219: String + field54220: String + field54221: String + field54222: Boolean + field54223: Object10305 + field54236: Scalar3 + field54237: Scalar3 + field54238: Scalar2 + field54239: String + field54240: Int + field54241: Int + field54242: Int + field54243: Object10306 + field54259: String + field54260: String +} + +type Object10305 @Directive21(argument61 : "stringValue43109") @Directive44(argument97 : ["stringValue43108"]) { + field54224: String! + field54225: Scalar2! + field54226: Enum2463! + field54227: Scalar3 + field54228: Scalar3 + field54229: Float + field54230: Scalar2 + field54231: Enum2464! + field54232: Scalar2 + field54233: Scalar3 + field54234: Scalar2 + field54235: Enum2465 +} + +type Object10306 @Directive21(argument61 : "stringValue43114") @Directive44(argument97 : ["stringValue43113"]) { + field54244: String + field54245: Scalar2 + field54246: String + field54247: Enum2466 + field54248: Int + field54249: Enum2467 + field54250: Scalar3 + field54251: Scalar3 + field54252: Scalar2 + field54253: Scalar2 + field54254: Scalar2 + field54255: Scalar2 + field54256: String + field54257: String + field54258: String +} + +type Object10307 @Directive21(argument61 : "stringValue43118") @Directive44(argument97 : ["stringValue43117"]) { + field54263: String + field54264: String + field54265: String + field54266: Object10308 + field54270: Int + field54271: Int + field54272: String + field54273: Object10309 @deprecated + field54281: String + field54282: String + field54283: Object10312 + field54293: String + field54294: String +} + +type Object10308 @Directive21(argument61 : "stringValue43120") @Directive44(argument97 : ["stringValue43119"]) { + field54267: String! + field54268: String! + field54269: String +} + +type Object10309 @Directive21(argument61 : "stringValue43122") @Directive44(argument97 : ["stringValue43121"]) { + field54274: String + field54275: String + field54276: [Union330] +} + +type Object1031 @Directive20(argument58 : "stringValue5338", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5337") @Directive31 @Directive44(argument97 : ["stringValue5339", "stringValue5340"]) { + field5885: String + field5886: String +} + +type Object10310 @Directive21(argument61 : "stringValue43125") @Directive44(argument97 : ["stringValue43124"]) { + field54277: String + field54278: [String] +} + +type Object10311 @Directive21(argument61 : "stringValue43127") @Directive44(argument97 : ["stringValue43126"]) { + field54279: String + field54280: Object10308 +} + +type Object10312 @Directive21(argument61 : "stringValue43129") @Directive44(argument97 : ["stringValue43128"]) { + field54284: Union331! + field54288: Enum2468 + field54289: Union331 + field54290: Enum2468 + field54291: String + field54292: String +} + +type Object10313 @Directive21(argument61 : "stringValue43132") @Directive44(argument97 : ["stringValue43131"]) { + field54285: Float +} + +type Object10314 @Directive21(argument61 : "stringValue43134") @Directive44(argument97 : ["stringValue43133"]) { + field54286: Scalar2 +} + +type Object10315 @Directive21(argument61 : "stringValue43136") @Directive44(argument97 : ["stringValue43135"]) { + field54287: String +} + +type Object10316 @Directive21(argument61 : "stringValue43139") @Directive44(argument97 : ["stringValue43138"]) { + field54296: [Object10317] @deprecated + field54333: Object10324! @deprecated + field54447: Object5621! + field54448: Object10307 + field54449: Int + field54450: Int + field54451: Union334 + field54461: Enum2484 + field54462: Enum1408 + field54463: String + field54464: String +} + +type Object10317 @Directive21(argument61 : "stringValue43141") @Directive44(argument97 : ["stringValue43140"]) { + field54297: String + field54298: String + field54299: [Union332] + field54332: String +} + +type Object10318 @Directive21(argument61 : "stringValue43144") @Directive44(argument97 : ["stringValue43143"]) { + field54300: Float + field54301: Float + field54302: Float + field54303: String + field54304: String + field54305: String + field54306: String + field54307: String +} + +type Object10319 @Directive21(argument61 : "stringValue43146") @Directive44(argument97 : ["stringValue43145"]) { + field54308: Int + field54309: Int + field54310: Int + field54311: String + field54312: String + field54313: String + field54314: String + field54315: String +} + +type Object1032 @Directive20(argument58 : "stringValue5342", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5341") @Directive31 @Directive44(argument97 : ["stringValue5343", "stringValue5344"]) { + field5888: String + field5889: Object1026 +} + +type Object10320 @Directive21(argument61 : "stringValue43148") @Directive44(argument97 : ["stringValue43147"]) { + field54316: Int + field54317: Int + field54318: Int + field54319: String + field54320: String + field54321: String + field54322: String + field54323: String +} + +type Object10321 @Directive21(argument61 : "stringValue43150") @Directive44(argument97 : ["stringValue43149"]) { + field54324: String + field54325: [Object10322]! + field54331: String +} + +type Object10322 @Directive21(argument61 : "stringValue43152") @Directive44(argument97 : ["stringValue43151"]) { + field54326: String! + field54327: String + field54328: Union333! + field54330: String! +} + +type Object10323 @Directive21(argument61 : "stringValue43155") @Directive44(argument97 : ["stringValue43154"]) { + field54329: Enum2469 +} + +type Object10324 @Directive21(argument61 : "stringValue43158") @Directive44(argument97 : ["stringValue43157"]) { + field54334: String + field54335: String + field54336: [Object10325] + field54445: String + field54446: Int +} + +type Object10325 @Directive21(argument61 : "stringValue43160") @Directive44(argument97 : ["stringValue43159"]) { + field54337: Scalar2! + field54338: String! + field54339: String + field54340: String + field54341: [Enum2470]! + field54342: Object10326! + field54443: [Enum2470]! + field54444: Object10326! +} + +type Object10326 @Directive21(argument61 : "stringValue43163") @Directive44(argument97 : ["stringValue43162"]) { + field54343: Scalar2! + field54344: Object10327 + field54352: Object10327 + field54353: Object10328 + field54358: Enum2472 + field54359: Float + field54360: Float + field54361: Object10329 + field54365: Object10330 + field54368: Scalar1 + field54369: Enum2469 + field54370: Boolean + field54371: Object10331 + field54375: Object10332 + field54385: String + field54386: String + field54387: [Enum2478] + field54388: Object10334 + field54391: Object10335 + field54394: [Enum2479] + field54395: [Scalar2] + field54396: [Scalar2] + field54397: Enum2480 + field54398: Object10336 + field54411: Boolean + field54412: Scalar3 + field54413: Object10337 + field54416: Object10336 + field54417: Object10336 + field54418: Object10338 + field54421: Object10339 + field54428: Object10339 + field54429: Object10340 + field54431: [Object10341] + field54437: [Scalar3] + field54438: String + field54439: String + field54440: Object10343 +} + +type Object10327 @Directive21(argument61 : "stringValue43165") @Directive44(argument97 : ["stringValue43164"]) { + field54345: Scalar4 + field54346: Scalar4 + field54347: Float + field54348: Scalar4 + field54349: Scalar2 + field54350: Scalar4 + field54351: String +} + +type Object10328 @Directive21(argument61 : "stringValue43167") @Directive44(argument97 : ["stringValue43166"]) { + field54354: Enum2471 + field54355: String + field54356: Scalar1 + field54357: Boolean +} + +type Object10329 @Directive21(argument61 : "stringValue43171") @Directive44(argument97 : ["stringValue43170"]) { + field54362: Scalar1! + field54363: Scalar1 + field54364: String +} + +type Object1033 @Directive20(argument58 : "stringValue5346", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5345") @Directive31 @Directive44(argument97 : ["stringValue5347", "stringValue5348"]) { + field5892: String + field5893: Object1034 + field5895: Object1035 +} + +type Object10330 @Directive21(argument61 : "stringValue43173") @Directive44(argument97 : ["stringValue43172"]) { + field54366: String! + field54367: String +} + +type Object10331 @Directive21(argument61 : "stringValue43175") @Directive44(argument97 : ["stringValue43174"]) { + field54372: Enum2473 + field54373: Enum2474 + field54374: Enum2475 +} + +type Object10332 @Directive21(argument61 : "stringValue43180") @Directive44(argument97 : ["stringValue43179"]) { + field54376: Int + field54377: Int + field54378: Int + field54379: Int + field54380: [Object10333] +} + +type Object10333 @Directive21(argument61 : "stringValue43182") @Directive44(argument97 : ["stringValue43181"]) { + field54381: Enum2476! + field54382: Enum2477! + field54383: Float! + field54384: Boolean +} + +type Object10334 @Directive21(argument61 : "stringValue43187") @Directive44(argument97 : ["stringValue43186"]) { + field54389: Scalar2! + field54390: String +} + +type Object10335 @Directive21(argument61 : "stringValue43189") @Directive44(argument97 : ["stringValue43188"]) { + field54392: Int + field54393: Int +} + +type Object10336 @Directive21(argument61 : "stringValue43193") @Directive44(argument97 : ["stringValue43192"]) { + field54399: Scalar3 + field54400: Scalar3 + field54401: Float + field54402: Scalar3 + field54403: Scalar2 + field54404: String + field54405: String + field54406: Float + field54407: Boolean + field54408: Scalar2 + field54409: String + field54410: String +} + +type Object10337 @Directive21(argument61 : "stringValue43195") @Directive44(argument97 : ["stringValue43194"]) { + field54414: Boolean + field54415: Enum2481 +} + +type Object10338 @Directive21(argument61 : "stringValue43198") @Directive44(argument97 : ["stringValue43197"]) { + field54419: Int + field54420: Boolean +} + +type Object10339 @Directive21(argument61 : "stringValue43200") @Directive44(argument97 : ["stringValue43199"]) { + field54422: Enum2482! + field54423: Enum2477! + field54424: Float! + field54425: Int + field54426: Int + field54427: Int +} + +type Object1034 @Directive20(argument58 : "stringValue5350", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5349") @Directive31 @Directive44(argument97 : ["stringValue5351", "stringValue5352"]) { + field5894: String +} + +type Object10340 @Directive21(argument61 : "stringValue43203") @Directive44(argument97 : ["stringValue43202"]) { + field54430: Boolean +} + +type Object10341 @Directive21(argument61 : "stringValue43205") @Directive44(argument97 : ["stringValue43204"]) { + field54432: Int + field54433: Enum2483 + field54434: Object10342 +} + +type Object10342 @Directive21(argument61 : "stringValue43208") @Directive44(argument97 : ["stringValue43207"]) { + field54435: Scalar3! + field54436: Scalar3! +} + +type Object10343 @Directive21(argument61 : "stringValue43210") @Directive44(argument97 : ["stringValue43209"]) { + field54441: Int + field54442: Boolean +} + +type Object10344 @Directive21(argument61 : "stringValue43213") @Directive44(argument97 : ["stringValue43212"]) { + field54452: String + field54453: String + field54454: [Union332] + field54455: String + field54456: Object10309 +} + +type Object10345 @Directive21(argument61 : "stringValue43215") @Directive44(argument97 : ["stringValue43214"]) { + field54457: Object10324! + field54458: Object10309 +} + +type Object10346 @Directive21(argument61 : "stringValue43217") @Directive44(argument97 : ["stringValue43216"]) { + field54459: Object10308 + field54460: Boolean +} + +type Object10347 @Directive21(argument61 : "stringValue43220") @Directive44(argument97 : ["stringValue43219"]) { + field54465: [Object10304]! + field54466: Int! + field54467: Object10307 + field54468: Enum1408 +} + +type Object10348 @Directive21(argument61 : "stringValue43222") @Directive44(argument97 : ["stringValue43221"]) { + field54469: [Object10304]! + field54470: Int! + field54471: Object10307 + field54472: Enum1408 +} + +type Object10349 @Directive21(argument61 : "stringValue43224") @Directive44(argument97 : ["stringValue43223"]) { + field54473: [Object10304]! + field54474: Int! + field54475: Object10307 + field54476: Enum1408 +} + +type Object1035 @Directive20(argument58 : "stringValue5354", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5353") @Directive31 @Directive44(argument97 : ["stringValue5355", "stringValue5356"]) { + field5896: String + field5897: String +} + +type Object10350 @Directive21(argument61 : "stringValue43226") @Directive44(argument97 : ["stringValue43225"]) { + field54477: [Object10304]! + field54478: Int! + field54479: Object10307 + field54480: Enum1408 +} + +type Object10351 @Directive21(argument61 : "stringValue43228") @Directive44(argument97 : ["stringValue43227"]) { + field54481: [Object10304]! + field54482: Int! + field54483: Object10307 + field54484: Enum1408 +} + +type Object10352 @Directive21(argument61 : "stringValue43230") @Directive44(argument97 : ["stringValue43229"]) { + field54485: [Object10304]! + field54486: Int! + field54487: Object10307 + field54488: Enum1408 +} + +type Object10353 @Directive21(argument61 : "stringValue43232") @Directive44(argument97 : ["stringValue43231"]) { + field54489: [Object10304]! + field54490: Scalar1! + field54491: Int! + field54492: Enum2471! + field54493: String + field54494: [String] + field54495: [String] + field54496: [String] + field54497: String + field54498: String + field54499: String + field54500: String + field54501: Enum1408 +} + +type Object10354 @Directive21(argument61 : "stringValue43234") @Directive44(argument97 : ["stringValue43233"]) { + field54502: [Object10304]! + field54503: Int! + field54504: Object10307 + field54505: Enum1408 +} + +type Object10355 @Directive21(argument61 : "stringValue43236") @Directive44(argument97 : ["stringValue43235"]) { + field54506: String! + field54507: [Object10356]! + field54528: String + field54529: String + field54530: Int! + field54531: Object10307 + field54532: String + field54533: String + field54534: [String] + field54535: Object10308 + field54536: String + field54537: String + field54538: Object10308 + field54539: Enum1408 + field54540: Object10357 +} + +type Object10356 @Directive21(argument61 : "stringValue43238") @Directive44(argument97 : ["stringValue43237"]) { + field54508: String! + field54509: [Object10304]! + field54510: Int! + field54511: String + field54512: String + field54513: Int! + field54514: Int! + field54515: String + field54516: String + field54517: [String] + field54518: String + field54519: String + field54520: String + field54521: String + field54522: String + field54523: String + field54524: String + field54525: String + field54526: String + field54527: String +} + +type Object10357 @Directive21(argument61 : "stringValue43240") @Directive44(argument97 : ["stringValue43239"]) { + field54541: String + field54542: Object10308 +} + +type Object10358 @Directive21(argument61 : "stringValue43242") @Directive44(argument97 : ["stringValue43241"]) { + field54543: [Object10304]! + field54544: Int! + field54545: Object10307 + field54546: Enum1408 +} + +type Object10359 @Directive21(argument61 : "stringValue43244") @Directive44(argument97 : ["stringValue43243"]) { + field54547: [Object10304]! + field54548: Int! + field54549: Object10307 + field54550: Object10306 + field54551: Enum1408 +} + +type Object1036 @Directive20(argument58 : "stringValue5358", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5357") @Directive31 @Directive44(argument97 : ["stringValue5359", "stringValue5360"]) { + field5903: Object1022 + field5904: [Object1037] + field5908: String + field5909: [Object1037] + field5910: Object1033 +} + +type Object10360 @Directive21(argument61 : "stringValue43246") @Directive44(argument97 : ["stringValue43245"]) { + field54552: [Object10304]! + field54553: Int! + field54554: Object10307 + field54555: Enum1408 +} + +type Object10361 @Directive21(argument61 : "stringValue43248") @Directive44(argument97 : ["stringValue43247"]) { + field54558: String + field54559: Int + field54560: Int + field54561: Int + field54562: Int + field54563: String + field54564: String + field54565: [String] + field54566: Object10308 + field54567: String + field54568: Object10357 +} + +type Object10362 @Directive21(argument61 : "stringValue43255") @Directive44(argument97 : ["stringValue43254"]) { + field54571: String! +} + +type Object10363 @Directive21(argument61 : "stringValue43262") @Directive44(argument97 : ["stringValue43261"]) { + field54573: [Object10364] + field54582: Scalar2 + field54583: Int + field54584: Int +} + +type Object10364 @Directive21(argument61 : "stringValue43264") @Directive44(argument97 : ["stringValue43263"]) { + field54574: Object10365 + field54580: Scalar1 + field54581: String +} + +type Object10365 @Directive21(argument61 : "stringValue43266") @Directive44(argument97 : ["stringValue43265"]) { + field54575: Scalar2! + field54576: String + field54577: String + field54578: String + field54579: String +} + +type Object10366 @Directive21(argument61 : "stringValue43280") @Directive44(argument97 : ["stringValue43279"]) { + field54586: [Union335]! + field54919: Object10433 +} + +type Object10367 @Directive21(argument61 : "stringValue43283") @Directive44(argument97 : ["stringValue43282"]) { + field54587: Scalar4! + field54588: String! + field54589: Enum2491! +} + +type Object10368 @Directive21(argument61 : "stringValue43285") @Directive44(argument97 : ["stringValue43284"]) { + field54590: Scalar2! + field54591: [String] + field54592: String + field54593: String + field54594: [Object10369] + field54598: Object10370 + field54616: Object10373 + field54621: Object10374 + field54624: Object10375 + field54628: [Object10371] + field54629: Object10371 + field54630: Enum2491! +} + +type Object10369 @Directive21(argument61 : "stringValue43287") @Directive44(argument97 : ["stringValue43286"]) { + field54595: String! + field54596: String! + field54597: Boolean! +} + +type Object1037 @Directive20(argument58 : "stringValue5362", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5361") @Directive31 @Directive44(argument97 : ["stringValue5363", "stringValue5364"]) { + field5905: String + field5906: String + field5907: String +} + +type Object10370 @Directive21(argument61 : "stringValue43289") @Directive44(argument97 : ["stringValue43288"]) { + field54599: String + field54600: Object10371 + field54610: String + field54611: String + field54612: Object10372 +} + +type Object10371 @Directive21(argument61 : "stringValue43291") @Directive44(argument97 : ["stringValue43290"]) { + field54601: Union336! + field54602: Enum2492 + field54603: Union336 + field54604: Enum2492 + field54605: String + field54606: String + field54607: String + field54608: String + field54609: String +} + +type Object10372 @Directive21(argument61 : "stringValue43295") @Directive44(argument97 : ["stringValue43294"]) { + field54613: String! + field54614: String! + field54615: String +} + +type Object10373 @Directive21(argument61 : "stringValue43297") @Directive44(argument97 : ["stringValue43296"]) { + field54617: String + field54618: String + field54619: String + field54620: String +} + +type Object10374 @Directive21(argument61 : "stringValue43299") @Directive44(argument97 : ["stringValue43298"]) { + field54622: String + field54623: String +} + +type Object10375 @Directive21(argument61 : "stringValue43301") @Directive44(argument97 : ["stringValue43300"]) { + field54625: String + field54626: Int + field54627: Float +} + +type Object10376 @Directive21(argument61 : "stringValue43303") @Directive44(argument97 : ["stringValue43302"]) { + field54631: String + field54632: [Object10377] + field54638: [Object10378]! + field54662: String + field54663: Object10383 + field54668: Object10384 + field54676: Enum2491! +} + +type Object10377 @Directive21(argument61 : "stringValue43305") @Directive44(argument97 : ["stringValue43304"]) { + field54633: String! + field54634: Int! + field54635: Int! + field54636: Boolean! + field54637: Enum2490! +} + +type Object10378 @Directive21(argument61 : "stringValue43307") @Directive44(argument97 : ["stringValue43306"]) { + field54639: String + field54640: String! + field54641: Scalar2! + field54642: [Object10379]! + field54660: Boolean + field54661: Enum2496! +} + +type Object10379 @Directive21(argument61 : "stringValue43309") @Directive44(argument97 : ["stringValue43308"]) { + field54643: String! + field54644: String! + field54645: String! + field54646: Union337! + field54650: Enum2493 + field54651: Enum2494 + field54652: Enum2495 + field54653: Enum2495 + field54654: Scalar2 + field54655: Scalar2 + field54656: Float + field54657: String! + field54658: Boolean + field54659: Enum2495! +} + +type Object1038 @Directive20(argument58 : "stringValue5366", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5365") @Directive31 @Directive44(argument97 : ["stringValue5367", "stringValue5368"]) { + field5912: [Object1039] +} + +type Object10380 @Directive21(argument61 : "stringValue43312") @Directive44(argument97 : ["stringValue43311"]) { + field54647: Boolean +} + +type Object10381 @Directive21(argument61 : "stringValue43314") @Directive44(argument97 : ["stringValue43313"]) { + field54648: Enum2448 +} + +type Object10382 @Directive21(argument61 : "stringValue43316") @Directive44(argument97 : ["stringValue43315"]) { + field54649: Enum2450 +} + +type Object10383 @Directive21(argument61 : "stringValue43322") @Directive44(argument97 : ["stringValue43321"]) { + field54664: Scalar3! + field54665: Scalar3! + field54666: Scalar3! + field54667: Scalar3! +} + +type Object10384 @Directive21(argument61 : "stringValue43324") @Directive44(argument97 : ["stringValue43323"]) { + field54669: String + field54670: [Object10385] + field54675: Int +} + +type Object10385 @Directive21(argument61 : "stringValue43326") @Directive44(argument97 : ["stringValue43325"]) { + field54671: Scalar2! + field54672: String! + field54673: String + field54674: String +} + +type Object10386 @Directive21(argument61 : "stringValue43328") @Directive44(argument97 : ["stringValue43327"]) { + field54677: [Object10371] + field54678: Enum2491! +} + +type Object10387 @Directive21(argument61 : "stringValue43330") @Directive44(argument97 : ["stringValue43329"]) { + field54679: String + field54680: String + field54681: [Object10388] + field54685: [String] + field54686: [Object10389] + field54694: Int + field54695: Int + field54696: Enum2491! +} + +type Object10388 @Directive21(argument61 : "stringValue43332") @Directive44(argument97 : ["stringValue43331"]) { + field54682: String! + field54683: Enum2488! + field54684: Boolean! +} + +type Object10389 @Directive21(argument61 : "stringValue43334") @Directive44(argument97 : ["stringValue43333"]) { + field54687: String + field54688: String + field54689: Enum2488! + field54690: Object10371 + field54691: [Object10389] + field54692: Int + field54693: Int +} + +type Object1039 @Directive20(argument58 : "stringValue5370", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5369") @Directive31 @Directive44(argument97 : ["stringValue5371", "stringValue5372"]) { + field5913: String + field5914: Int + field5915: String +} + +type Object10390 @Directive21(argument61 : "stringValue43336") @Directive44(argument97 : ["stringValue43335"]) { + field54697: String + field54698: [Union338] + field54703: Enum2491! +} + +type Object10391 @Directive21(argument61 : "stringValue43339") @Directive44(argument97 : ["stringValue43338"]) { + field54699: String +} + +type Object10392 @Directive21(argument61 : "stringValue43341") @Directive44(argument97 : ["stringValue43340"]) { + field54700: String +} + +type Object10393 @Directive21(argument61 : "stringValue43343") @Directive44(argument97 : ["stringValue43342"]) { + field54701: String +} + +type Object10394 @Directive21(argument61 : "stringValue43345") @Directive44(argument97 : ["stringValue43344"]) { + field54702: String +} + +type Object10395 @Directive21(argument61 : "stringValue43347") @Directive44(argument97 : ["stringValue43346"]) { + field54704: String + field54705: [Object10396]! + field54711: Enum2491! +} + +type Object10396 @Directive21(argument61 : "stringValue43349") @Directive44(argument97 : ["stringValue43348"]) { + field54706: Enum2486! + field54707: String + field54708: String + field54709: Boolean + field54710: [Object10396] +} + +type Object10397 @Directive21(argument61 : "stringValue43351") @Directive44(argument97 : ["stringValue43350"]) { + field54712: String + field54713: String + field54714: [Object10377] + field54715: Object10370 + field54716: Enum2491! +} + +type Object10398 @Directive21(argument61 : "stringValue43353") @Directive44(argument97 : ["stringValue43352"]) { + field54717: String + field54718: [Object10399] + field54772: Int + field54773: Int + field54774: Int + field54775: Int + field54776: String + field54777: String + field54778: [String] + field54779: Enum2491! + field54780: Object10404 +} + +type Object10399 @Directive21(argument61 : "stringValue43355") @Directive44(argument97 : ["stringValue43354"]) { + field54719: String + field54720: String + field54721: String + field54722: Object10372 + field54723: Enum2467 + field54724: Object10400 + field54770: [Object10400] + field54771: Scalar1 +} + +type Object104 @Directive21(argument61 : "stringValue400") @Directive44(argument97 : ["stringValue399"]) { + field709: String + field710: Object77 + field711: Enum36 + field712: Enum61 +} + +type Object1040 @Directive20(argument58 : "stringValue5374", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5373") @Directive31 @Directive44(argument97 : ["stringValue5375", "stringValue5376"]) { + field5923: String + field5924: Object1008 + field5925: Object1008 + field5926: Object1022 + field5927: [Object1016] +} + +type Object10400 @Directive21(argument61 : "stringValue43357") @Directive44(argument97 : ["stringValue43356"]) { + field54725: String + field54726: Enum2467 @deprecated + field54727: Enum2497 + field54728: Enum2498 + field54729: Enum2499 + field54730: Enum2500 + field54731: Scalar1 + field54732: String + field54733: Scalar1 + field54734: Scalar1 + field54735: Scalar1 + field54736: Scalar1 + field54737: Scalar2 + field54738: Scalar2 + field54739: Scalar2 + field54740: Scalar3 + field54741: Scalar3 + field54742: Scalar1 + field54743: Enum2501 + field54744: Enum2502 + field54745: Enum2503 + field54746: [Object10401] + field54762: Enum2508 + field54763: Enum2506 + field54764: Enum2509 + field54765: Object10403 + field54767: Boolean + field54768: String + field54769: String +} + +type Object10401 @Directive21(argument61 : "stringValue43366") @Directive44(argument97 : ["stringValue43365"]) { + field54747: Enum2504 + field54748: Scalar1 + field54749: Enum2505 + field54750: Enum2506 @deprecated + field54751: String + field54752: String + field54753: Boolean + field54754: Boolean + field54755: Scalar2 + field54756: Scalar2 + field54757: Float + field54758: Float + field54759: [Object10402] +} + +type Object10402 @Directive21(argument61 : "stringValue43371") @Directive44(argument97 : ["stringValue43370"]) { + field54760: Scalar3! + field54761: Enum2507! +} + +type Object10403 @Directive21(argument61 : "stringValue43376") @Directive44(argument97 : ["stringValue43375"]) { + field54766: Float +} + +type Object10404 @Directive21(argument61 : "stringValue43378") @Directive44(argument97 : ["stringValue43377"]) { + field54781: String + field54782: Object10372 + field54783: String +} + +type Object10405 @Directive21(argument61 : "stringValue43380") @Directive44(argument97 : ["stringValue43379"]) { + field54784: [Object10406] + field54787: String + field54788: Enum2491! +} + +type Object10406 @Directive21(argument61 : "stringValue43382") @Directive44(argument97 : ["stringValue43381"]) { + field54785: String! + field54786: Enum2462! +} + +type Object10407 @Directive21(argument61 : "stringValue43384") @Directive44(argument97 : ["stringValue43383"]) { + field54789: String + field54790: Object10408 + field54797: [Object10410] + field54806: Enum2491! + field54807: Object10404 +} + +type Object10408 @Directive21(argument61 : "stringValue43386") @Directive44(argument97 : ["stringValue43385"]) { + field54791: String + field54792: String + field54793: [Object10409] +} + +type Object10409 @Directive21(argument61 : "stringValue43388") @Directive44(argument97 : ["stringValue43387"]) { + field54794: String! + field54795: Enum2462 + field54796: Boolean! +} + +type Object1041 @Directive20(argument58 : "stringValue5378", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5377") @Directive31 @Directive44(argument97 : ["stringValue5379", "stringValue5380"]) { + field5929: Union125 + field5930: Object1042 + field5933: Object1016 + field5934: Object1033 + field5935: Object1033 + field5936: Object1026 + field5937: [Object1037] +} + +type Object10410 @Directive21(argument61 : "stringValue43390") @Directive44(argument97 : ["stringValue43389"]) { + field54798: Object10411! + field54804: String! + field54805: Enum2510 +} + +type Object10411 @Directive21(argument61 : "stringValue43392") @Directive44(argument97 : ["stringValue43391"]) { + field54799: Scalar3! + field54800: Union336 + field54801: Enum2492 + field54802: String + field54803: String +} + +type Object10412 @Directive21(argument61 : "stringValue43395") @Directive44(argument97 : ["stringValue43394"]) { + field54808: Object10413! + field54811: String! + field54812: Object10308! + field54813: String! +} + +type Object10413 @Directive21(argument61 : "stringValue43397") @Directive44(argument97 : ["stringValue43396"]) { + field54809: String! + field54810: Boolean! +} + +type Object10414 @Directive21(argument61 : "stringValue43399") @Directive44(argument97 : ["stringValue43398"]) { + field54814: [Object10316]! + field54815: Object10361 + field54816: [String] + field54817: Enum2491! + field54818: Object10404 +} + +type Object10415 @Directive21(argument61 : "stringValue43401") @Directive44(argument97 : ["stringValue43400"]) { + field54819: String + field54820: String + field54821: String + field54822: String + field54823: Enum2491! +} + +type Object10416 @Directive21(argument61 : "stringValue43403") @Directive44(argument97 : ["stringValue43402"]) { + field54824: [Object10417] + field54838: [Union339]! + field54848: Int + field54849: Int + field54850: Enum2491! +} + +type Object10417 @Directive21(argument61 : "stringValue43405") @Directive44(argument97 : ["stringValue43404"]) { + field54825: Enum2486! + field54826: String + field54827: Object10370 + field54828: Object10418 +} + +type Object10418 @Directive21(argument61 : "stringValue43407") @Directive44(argument97 : ["stringValue43406"]) { + field54829: String + field54830: Object10371 + field54831: Object10419 + field54837: [Object10371] +} + +type Object10419 @Directive21(argument61 : "stringValue43409") @Directive44(argument97 : ["stringValue43408"]) { + field54832: [Object10411]! + field54833: String + field54834: Enum2490! + field54835: Object10411 + field54836: Object10411 +} + +type Object1042 @Directive20(argument58 : "stringValue5382", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5381") @Directive31 @Directive44(argument97 : ["stringValue5383", "stringValue5384"]) { + field5931: Object1022 + field5932: [Object1037] +} + +type Object10420 @Directive21(argument61 : "stringValue43412") @Directive44(argument97 : ["stringValue43411"]) { + field54839: Enum2486! + field54840: String + field54841: [Object10371] + field54842: String! +} + +type Object10421 @Directive21(argument61 : "stringValue43414") @Directive44(argument97 : ["stringValue43413"]) { + field54843: Enum2486! + field54844: String + field54845: Object10370 + field54846: Object10418 + field54847: String! +} + +type Object10422 @Directive21(argument61 : "stringValue43416") @Directive44(argument97 : ["stringValue43415"]) { + field54851: String + field54852: String + field54853: [Object10377] + field54854: [Object10371] + field54855: Enum2491! +} + +type Object10423 @Directive21(argument61 : "stringValue43418") @Directive44(argument97 : ["stringValue43417"]) { + field54856: String + field54857: Enum2491! +} + +type Object10424 @Directive21(argument61 : "stringValue43420") @Directive44(argument97 : ["stringValue43419"]) { + field54858: String + field54859: [Object10425] + field54863: [Object10419] + field54864: String + field54865: Object10372 + field54866: [Object10371] + field54867: Object10371 + field54868: Object10411 + field54869: Object10411 + field54870: String + field54871: Enum2491! + field54872: Object10404 +} + +type Object10425 @Directive21(argument61 : "stringValue43422") @Directive44(argument97 : ["stringValue43421"]) { + field54860: String! + field54861: Enum2489! + field54862: Boolean! +} + +type Object10426 @Directive21(argument61 : "stringValue43424") @Directive44(argument97 : ["stringValue43423"]) { + field54873: String + field54874: [Object10377] + field54875: [Object10427] + field54879: [String] + field54880: [Object10428] + field54887: Int + field54888: Int + field54889: Enum2491! + field54890: Object10404 +} + +type Object10427 @Directive21(argument61 : "stringValue43426") @Directive44(argument97 : ["stringValue43425"]) { + field54876: String! + field54877: Enum2487! + field54878: Boolean! +} + +type Object10428 @Directive21(argument61 : "stringValue43428") @Directive44(argument97 : ["stringValue43427"]) { + field54881: Scalar2! + field54882: String! + field54883: Object10371 + field54884: String! + field54885: String + field54886: String +} + +type Object10429 @Directive21(argument61 : "stringValue43430") @Directive44(argument97 : ["stringValue43429"]) { + field54891: String + field54892: String + field54893: [Object10427] + field54894: [String] + field54895: [Object10428] + field54896: Int + field54897: Int + field54898: Enum2491! + field54899: Object10404 +} + +type Object1043 implements Interface76 @Directive21(argument61 : "stringValue5386") @Directive22(argument62 : "stringValue5385") @Directive31 @Directive44(argument97 : ["stringValue5387", "stringValue5388", "stringValue5389"]) @Directive45(argument98 : ["stringValue5390"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union128] + field5221: Boolean + field5939: [Object1044] +} + +type Object10430 @Directive21(argument61 : "stringValue43432") @Directive44(argument97 : ["stringValue43431"]) { + field54900: String + field54901: [Object10377] + field54902: Object10370 + field54903: Enum2491! +} + +type Object10431 @Directive21(argument61 : "stringValue43434") @Directive44(argument97 : ["stringValue43433"]) { + field54904: String + field54905: [Object10432] + field54913: Int + field54914: Int + field54915: Int + field54916: Int + field54917: Enum2491! + field54918: Object10404 +} + +type Object10432 @Directive21(argument61 : "stringValue43436") @Directive44(argument97 : ["stringValue43435"]) { + field54906: Scalar2! + field54907: String + field54908: String + field54909: [Object10371] + field54910: String + field54911: String + field54912: String +} + +type Object10433 @Directive21(argument61 : "stringValue43438") @Directive44(argument97 : ["stringValue43437"]) { + field54920: String +} + +type Object10434 @Directive21(argument61 : "stringValue43444") @Directive44(argument97 : ["stringValue43443"]) { + field54922: Scalar2 + field54923: Boolean + field54924: Boolean + field54925: Boolean @deprecated + field54926: Boolean @deprecated + field54927: [Object10378] + field54928: Boolean @deprecated + field54929: Boolean + field54930: Boolean + field54931: Boolean @deprecated + field54932: Boolean + field54933: Boolean + field54934: Boolean + field54935: String +} + +type Object10435 @Directive21(argument61 : "stringValue43450") @Directive44(argument97 : ["stringValue43449"]) { + field54937: Scalar1 +} + +type Object10436 @Directive21(argument61 : "stringValue43456") @Directive44(argument97 : ["stringValue43455"]) { + field54939: [Object10437] + field55015: Object10448 +} + +type Object10437 @Directive21(argument61 : "stringValue43458") @Directive44(argument97 : ["stringValue43457"]) { + field54940: Int + field54941: String + field54942: [String] + field54943: [Object10438] + field54946: Boolean + field54947: [Object10439] + field54953: Int + field54954: String + field54955: [String] + field54956: Int + field54957: String + field54958: [String] + field54959: String + field54960: Int + field54961: String + field54962: [String] + field54963: [String] + field54964: Scalar2! + field54965: String + field54966: Int + field54967: String + field54968: String + field54969: String + field54970: Int + field54971: Object10440 + field54981: String + field54982: String + field54983: Object10442 + field54988: Object10443 + field54998: [Int] + field54999: Int + field55000: String + field55001: Object10444 + field55013: String + field55014: Boolean +} + +type Object10438 @Directive21(argument61 : "stringValue43460") @Directive44(argument97 : ["stringValue43459"]) { + field54944: String + field54945: String +} + +type Object10439 @Directive21(argument61 : "stringValue43462") @Directive44(argument97 : ["stringValue43461"]) { + field54948: String + field54949: String + field54950: String + field54951: String + field54952: Scalar2 +} + +type Object1044 @Directive20(argument58 : "stringValue5392", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5391") @Directive31 @Directive44(argument97 : ["stringValue5393", "stringValue5394"]) { + field5940: [Object1045] + field5946: Scalar2! + field5947: String + field5948: String + field5949: String + field5950: String +} + +type Object10440 @Directive21(argument61 : "stringValue43464") @Directive44(argument97 : ["stringValue43463"]) { + field54972: String + field54973: String + field54974: String + field54975: Scalar2 + field54976: Object10441 + field54979: String + field54980: Int +} + +type Object10441 @Directive21(argument61 : "stringValue43466") @Directive44(argument97 : ["stringValue43465"]) { + field54977: Scalar2! + field54978: String +} + +type Object10442 @Directive21(argument61 : "stringValue43468") @Directive44(argument97 : ["stringValue43467"]) { + field54984: String + field54985: String + field54986: [String] + field54987: [String] +} + +type Object10443 @Directive21(argument61 : "stringValue43470") @Directive44(argument97 : ["stringValue43469"]) { + field54989: Scalar2 + field54990: String + field54991: String + field54992: String + field54993: Boolean + field54994: Boolean + field54995: String + field54996: String + field54997: String +} + +type Object10444 @Directive21(argument61 : "stringValue43472") @Directive44(argument97 : ["stringValue43471"]) { + field55002: Scalar1 + field55003: Scalar1 + field55004: [Object10445] + field55007: Object10446 + field55012: String +} + +type Object10445 @Directive21(argument61 : "stringValue43474") @Directive44(argument97 : ["stringValue43473"]) { + field55005: String + field55006: [Scalar2] +} + +type Object10446 @Directive21(argument61 : "stringValue43476") @Directive44(argument97 : ["stringValue43475"]) { + field55008: [Object10447] + field55011: [Object10447] +} + +type Object10447 @Directive21(argument61 : "stringValue43478") @Directive44(argument97 : ["stringValue43477"]) { + field55009: Scalar2 + field55010: [Scalar2] +} + +type Object10448 @Directive21(argument61 : "stringValue43480") @Directive44(argument97 : ["stringValue43479"]) { + field55016: Int +} + +type Object10449 @Directive44(argument97 : ["stringValue43481"]) { + field55018(argument2394: InputObject2001!): Object10450 @Directive35(argument89 : "stringValue43483", argument90 : true, argument91 : "stringValue43482", argument92 : 890, argument93 : "stringValue43484", argument94 : false) + field55020(argument2395: InputObject2002!): Object10451 @Directive35(argument89 : "stringValue43489", argument90 : true, argument91 : "stringValue43488", argument92 : 891, argument93 : "stringValue43490", argument94 : false) + field55052(argument2396: InputObject2003!): Object10455 @Directive35(argument89 : "stringValue43506", argument90 : true, argument91 : "stringValue43505", argument92 : 892, argument93 : "stringValue43507", argument94 : false) + field55084(argument2397: InputObject2004!): Object10459 @Directive35(argument89 : "stringValue43518", argument90 : false, argument91 : "stringValue43517", argument92 : 893, argument93 : "stringValue43519", argument94 : false) + field55091(argument2398: InputObject2005!): Object10461 @Directive35(argument89 : "stringValue43526", argument90 : true, argument91 : "stringValue43525", argument92 : 894, argument93 : "stringValue43527", argument94 : false) + field55098(argument2399: InputObject2006!): Object10463 @Directive35(argument89 : "stringValue43535", argument90 : true, argument91 : "stringValue43534", argument92 : 895, argument93 : "stringValue43536", argument94 : false) + field55113(argument2400: InputObject2007!): Object10466 @Directive35(argument89 : "stringValue43546", argument90 : true, argument91 : "stringValue43545", argument92 : 896, argument93 : "stringValue43547", argument94 : false) + field55119(argument2401: InputObject2008!): Object10468 @Directive35(argument89 : "stringValue43555", argument90 : true, argument91 : "stringValue43554", argument92 : 897, argument93 : "stringValue43556", argument94 : false) + field55134(argument2402: InputObject2009!): Object10471 @Directive35(argument89 : "stringValue43565", argument90 : true, argument91 : "stringValue43564", argument92 : 898, argument93 : "stringValue43566", argument94 : false) + field55180: Object10480 @Directive35(argument89 : "stringValue43591", argument90 : true, argument91 : "stringValue43590", argument92 : 899, argument93 : "stringValue43592", argument94 : false) + field55198(argument2403: InputObject2010!): Object10484 @Directive35(argument89 : "stringValue43603", argument90 : true, argument91 : "stringValue43602", argument92 : 900, argument93 : "stringValue43604", argument94 : false) + field55200: Object10485 @Directive35(argument89 : "stringValue43609", argument90 : true, argument91 : "stringValue43608", argument92 : 901, argument93 : "stringValue43610", argument94 : false) + field55206(argument2404: InputObject2011!): Object10487 @Directive35(argument89 : "stringValue43616", argument90 : true, argument91 : "stringValue43615", argument92 : 902, argument93 : "stringValue43617", argument94 : false) + field55216: Object10489 @Directive35(argument89 : "stringValue43624", argument90 : false, argument91 : "stringValue43623", argument92 : 903, argument93 : "stringValue43625", argument94 : false) + field55242(argument2405: InputObject2012!): Object10497 @Directive35(argument89 : "stringValue43643", argument90 : true, argument91 : "stringValue43642", argument92 : 904, argument93 : "stringValue43644", argument94 : false) +} + +type Object1045 @Directive20(argument58 : "stringValue5396", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5395") @Directive31 @Directive44(argument97 : ["stringValue5397", "stringValue5398"]) { + field5941: String + field5942: Enum287 + field5943: Enum288! + field5944: Scalar2! + field5945: Boolean! +} + +type Object10450 @Directive21(argument61 : "stringValue43487") @Directive44(argument97 : ["stringValue43486"]) { + field55019: Scalar1 +} + +type Object10451 @Directive21(argument61 : "stringValue43494") @Directive44(argument97 : ["stringValue43493"]) { + field55021: Boolean! + field55022: String + field55023: String + field55024: String + field55025: [Object10452]! + field55034: String + field55035: Scalar4 + field55036: Object10454 + field55051: String +} + +type Object10452 @Directive21(argument61 : "stringValue43496") @Directive44(argument97 : ["stringValue43495"]) { + field55026: Enum2512! + field55027: [Object10453]! + field55032: Enum2513! + field55033: Int! +} + +type Object10453 @Directive21(argument61 : "stringValue43499") @Directive44(argument97 : ["stringValue43498"]) { + field55028: Scalar2! + field55029: Object5626 + field55030: Enum2513! + field55031: Int! +} + +type Object10454 @Directive21(argument61 : "stringValue43502") @Directive44(argument97 : ["stringValue43501"]) { + field55037: Enum2514! + field55038: Float + field55039: Int + field55040: Int + field55041: Enum2515 + field55042: String + field55043: String + field55044: String + field55045: String + field55046: String + field55047: Float + field55048: String + field55049: Scalar2 + field55050: String +} + +type Object10455 @Directive21(argument61 : "stringValue43510") @Directive44(argument97 : ["stringValue43509"]) { + field55053: [Object10453]! + field55054: Object10456 + field55061: Object10457 + field55068: Object10458 + field55083: Scalar1 +} + +type Object10456 @Directive21(argument61 : "stringValue43512") @Directive44(argument97 : ["stringValue43511"]) { + field55055: String + field55056: String + field55057: String + field55058: String + field55059: String + field55060: String +} + +type Object10457 @Directive21(argument61 : "stringValue43514") @Directive44(argument97 : ["stringValue43513"]) { + field55062: String + field55063: String + field55064: Int + field55065: Int + field55066: Int + field55067: Float +} + +type Object10458 @Directive21(argument61 : "stringValue43516") @Directive44(argument97 : ["stringValue43515"]) { + field55069: String + field55070: String + field55071: String + field55072: String + field55073: String + field55074: Float + field55075: Float + field55076: String + field55077: Boolean + field55078: String + field55079: String + field55080: String + field55081: Float + field55082: Float +} + +type Object10459 @Directive21(argument61 : "stringValue43522") @Directive44(argument97 : ["stringValue43521"]) { + field55085: String + field55086: [Object10460] +} + +type Object1046 implements Interface76 @Directive21(argument61 : "stringValue5411") @Directive22(argument62 : "stringValue5410") @Directive31 @Directive44(argument97 : ["stringValue5412", "stringValue5413", "stringValue5414"]) @Directive45(argument98 : ["stringValue5415"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union129] + field5221: Boolean + field5951: [Object1047] +} + +type Object10460 @Directive21(argument61 : "stringValue43524") @Directive44(argument97 : ["stringValue43523"]) { + field55087: String + field55088: String + field55089: String + field55090: String +} + +type Object10461 @Directive21(argument61 : "stringValue43531") @Directive44(argument97 : ["stringValue43530"]) { + field55092: Object10462 + field55096: [Object10462] + field55097: String +} + +type Object10462 @Directive21(argument61 : "stringValue43533") @Directive44(argument97 : ["stringValue43532"]) { + field55093: String + field55094: String + field55095: String +} + +type Object10463 @Directive21(argument61 : "stringValue43539") @Directive44(argument97 : ["stringValue43538"]) { + field55099: Object10464! +} + +type Object10464 @Directive21(argument61 : "stringValue43541") @Directive44(argument97 : ["stringValue43540"]) { + field55100: Scalar2! + field55101: Object10465 + field55105: [Object10454] + field55106: [String] + field55107: [String] + field55108: Enum2517 + field55109: String + field55110: String + field55111: String + field55112: String +} + +type Object10465 @Directive21(argument61 : "stringValue43543") @Directive44(argument97 : ["stringValue43542"]) { + field55102: String + field55103: String + field55104: String +} + +type Object10466 @Directive21(argument61 : "stringValue43551") @Directive44(argument97 : ["stringValue43550"]) { + field55114: Scalar1! + field55115: Scalar1! + field55116: Object10467 +} + +type Object10467 @Directive21(argument61 : "stringValue43553") @Directive44(argument97 : ["stringValue43552"]) { + field55117: String + field55118: String +} + +type Object10468 @Directive21(argument61 : "stringValue43559") @Directive44(argument97 : ["stringValue43558"]) { + field55120: Object10469 + field55126: [Object10470]! + field55133: Int! +} + +type Object10469 @Directive21(argument61 : "stringValue43561") @Directive44(argument97 : ["stringValue43560"]) { + field55121: Scalar2! + field55122: String + field55123: String + field55124: Object5626 + field55125: Enum2513 +} + +type Object1047 @Directive20(argument58 : "stringValue5417", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5416") @Directive31 @Directive44(argument97 : ["stringValue5418", "stringValue5419"]) { + field5952: String + field5953: Scalar2! + field5954: String + field5955: String + field5956: String + field5957: String + field5958: String + field5959: Object776 + field5960: String +} + +type Object10470 @Directive21(argument61 : "stringValue43563") @Directive44(argument97 : ["stringValue43562"]) { + field55127: Scalar2 + field55128: String + field55129: [Object10469] + field55130: Object5626 + field55131: Enum2513 + field55132: String +} + +type Object10471 @Directive21(argument61 : "stringValue43569") @Directive44(argument97 : ["stringValue43568"]) { + field55135: Object10472 + field55140: [Object10473] + field55151: [Object10473] + field55152: [Object10473] + field55153: Object10475 + field55160: Object10477 + field55175: Object10478 +} + +type Object10472 @Directive21(argument61 : "stringValue43571") @Directive44(argument97 : ["stringValue43570"]) { + field55136: String + field55137: Enum2519 + field55138: String + field55139: String +} + +type Object10473 @Directive21(argument61 : "stringValue43574") @Directive44(argument97 : ["stringValue43573"]) { + field55141: Enum2520 + field55142: Int + field55143: String + field55144: String + field55145: [Object10474] + field55148: String + field55149: String + field55150: Int +} + +type Object10474 @Directive21(argument61 : "stringValue43577") @Directive44(argument97 : ["stringValue43576"]) { + field55146: String + field55147: Enum2521 +} + +type Object10475 @Directive21(argument61 : "stringValue43580") @Directive44(argument97 : ["stringValue43579"]) { + field55154: [Object10476] + field55158: String + field55159: String +} + +type Object10476 @Directive21(argument61 : "stringValue43582") @Directive44(argument97 : ["stringValue43581"]) { + field55155: String + field55156: String + field55157: String +} + +type Object10477 @Directive21(argument61 : "stringValue43584") @Directive44(argument97 : ["stringValue43583"]) { + field55161: String + field55162: String + field55163: Enum2522 + field55164: String + field55165: String + field55166: String + field55167: String + field55168: String + field55169: String + field55170: String + field55171: String + field55172: String + field55173: String + field55174: String +} + +type Object10478 @Directive21(argument61 : "stringValue43587") @Directive44(argument97 : ["stringValue43586"]) { + field55176: [Object10479] +} + +type Object10479 @Directive21(argument61 : "stringValue43589") @Directive44(argument97 : ["stringValue43588"]) { + field55177: String + field55178: Int + field55179: Int +} + +type Object1048 implements Interface76 @Directive21(argument61 : "stringValue5424") @Directive22(argument62 : "stringValue5423") @Directive31 @Directive44(argument97 : ["stringValue5425", "stringValue5426", "stringValue5427"]) @Directive45(argument98 : ["stringValue5428"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union130] + field5221: Boolean + field5961: [Object1049] +} + +type Object10480 @Directive21(argument61 : "stringValue43594") @Directive44(argument97 : ["stringValue43593"]) { + field55181: [Object10481] + field55192: Object10483 +} + +type Object10481 @Directive21(argument61 : "stringValue43596") @Directive44(argument97 : ["stringValue43595"]) { + field55182: String + field55183: Scalar2 + field55184: [Object10482] + field55189: Enum2519 + field55190: String + field55191: String +} + +type Object10482 @Directive21(argument61 : "stringValue43598") @Directive44(argument97 : ["stringValue43597"]) { + field55185: Enum2519 + field55186: String + field55187: Enum2523 + field55188: String +} + +type Object10483 @Directive21(argument61 : "stringValue43601") @Directive44(argument97 : ["stringValue43600"]) { + field55193: String + field55194: String + field55195: String + field55196: String + field55197: String +} + +type Object10484 @Directive21(argument61 : "stringValue43607") @Directive44(argument97 : ["stringValue43606"]) { + field55199: Scalar1 +} + +type Object10485 @Directive21(argument61 : "stringValue43612") @Directive44(argument97 : ["stringValue43611"]) { + field55201: String + field55202: [Object10486] +} + +type Object10486 @Directive21(argument61 : "stringValue43614") @Directive44(argument97 : ["stringValue43613"]) { + field55203: String + field55204: String + field55205: String +} + +type Object10487 @Directive21(argument61 : "stringValue43620") @Directive44(argument97 : ["stringValue43619"]) { + field55207: Boolean + field55208: Boolean + field55209: Boolean + field55210: Object10488 +} + +type Object10488 @Directive21(argument61 : "stringValue43622") @Directive44(argument97 : ["stringValue43621"]) { + field55211: String + field55212: String + field55213: String + field55214: Boolean + field55215: String +} + +type Object10489 @Directive21(argument61 : "stringValue43627") @Directive44(argument97 : ["stringValue43626"]) { + field55217: Object10490 +} + +type Object1049 @Directive20(argument58 : "stringValue5430", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5429") @Directive31 @Directive44(argument97 : ["stringValue5431", "stringValue5432"]) { + field5962: String + field5963: String + field5964: String + field5965: String + field5966: [Object1045] + field5967: Scalar2! + field5968: String + field5969: String + field5970: Int + field5971: String + field5972: [Object1050] + field5976: String + field5977: String + field5978: [String] + field5979: String + field5980: String + field5981: Enum289 + field5982: Scalar2 + field5983: String + field5984: String + field5985: String + field5986: String +} + +type Object10490 @Directive21(argument61 : "stringValue43629") @Directive44(argument97 : ["stringValue43628"]) { + field55218: Object10491 + field55221: [Object10492] + field55238: [Object10493] + field55239: Object10496 +} + +type Object10491 @Directive21(argument61 : "stringValue43631") @Directive44(argument97 : ["stringValue43630"]) { + field55219: String + field55220: String +} + +type Object10492 @Directive21(argument61 : "stringValue43633") @Directive44(argument97 : ["stringValue43632"]) { + field55222: String + field55223: [Object10493] +} + +type Object10493 @Directive21(argument61 : "stringValue43635") @Directive44(argument97 : ["stringValue43634"]) { + field55224: String + field55225: String + field55226: [Object10486] + field55227: String + field55228: String + field55229: Object10494 + field55236: [String] + field55237: String +} + +type Object10494 @Directive21(argument61 : "stringValue43637") @Directive44(argument97 : ["stringValue43636"]) { + field55230: String + field55231: String + field55232: [Object10495] +} + +type Object10495 @Directive21(argument61 : "stringValue43639") @Directive44(argument97 : ["stringValue43638"]) { + field55233: String + field55234: String + field55235: String +} + +type Object10496 @Directive21(argument61 : "stringValue43641") @Directive44(argument97 : ["stringValue43640"]) { + field55240: String + field55241: [Object10486] +} + +type Object10497 @Directive21(argument61 : "stringValue43647") @Directive44(argument97 : ["stringValue43646"]) { + field55243: Object10462 + field55244: Object10498 + field55250: Object10498 + field55251: Object10498 +} + +type Object10498 @Directive21(argument61 : "stringValue43649") @Directive44(argument97 : ["stringValue43648"]) { + field55245: String + field55246: String + field55247: [Object10476] + field55248: String + field55249: String +} + +type Object10499 @Directive44(argument97 : ["stringValue43650"]) { + field55253(argument2406: InputObject2013!): Object10500 @Directive35(argument89 : "stringValue43652", argument90 : true, argument91 : "stringValue43651", argument92 : 905, argument93 : "stringValue43653", argument94 : false) + field55277(argument2407: InputObject2014!): Object10506 @Directive35(argument89 : "stringValue43669", argument90 : true, argument91 : "stringValue43668", argument92 : 906, argument93 : "stringValue43670", argument94 : false) + field55308(argument2408: InputObject2015!): Object10513 @Directive35(argument89 : "stringValue43691", argument90 : true, argument91 : "stringValue43690", argument92 : 907, argument93 : "stringValue43692", argument94 : false) + field55333(argument2409: InputObject2020!): Object10515 @Directive35(argument89 : "stringValue43705", argument90 : true, argument91 : "stringValue43704", argument92 : 908, argument93 : "stringValue43706", argument94 : false) + field55336(argument2410: InputObject2021!): Object10516 @Directive35(argument89 : "stringValue43711", argument90 : true, argument91 : "stringValue43710", argument92 : 909, argument93 : "stringValue43712", argument94 : false) + field55351(argument2411: InputObject2022!): Object10520 @Directive35(argument89 : "stringValue43725", argument90 : true, argument91 : "stringValue43724", argument92 : 910, argument93 : "stringValue43726", argument94 : false) + field55365: Object10525 @Directive35(argument89 : "stringValue43740", argument90 : true, argument91 : "stringValue43739", argument92 : 911, argument93 : "stringValue43741", argument94 : false) +} + +type Object105 @Directive21(argument61 : "stringValue402") @Directive44(argument97 : ["stringValue401"]) { + field713: String + field714: String! + field715: String! + field716: String + field717: Object106 + field729: Object109 +} + +type Object1050 @Directive20(argument58 : "stringValue5434", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5433") @Directive31 @Directive44(argument97 : ["stringValue5435", "stringValue5436"]) { + field5973: String + field5974: Int + field5975: String +} + +type Object10500 @Directive21(argument61 : "stringValue43657") @Directive44(argument97 : ["stringValue43656"]) { + field55254: [Object10501]! +} + +type Object10501 @Directive21(argument61 : "stringValue43659") @Directive44(argument97 : ["stringValue43658"]) { + field55255: Enum1414! + field55256: String! + field55257: String + field55258: Object10502! + field55263: Object10502! + field55264: Enum2524! + field55265: Object10503! + field55273: Object10505 +} + +type Object10502 @Directive21(argument61 : "stringValue43661") @Directive44(argument97 : ["stringValue43660"]) { + field55259: String! + field55260: String! + field55261: String! + field55262: String +} + +type Object10503 @Directive21(argument61 : "stringValue43663") @Directive44(argument97 : ["stringValue43662"]) { + field55266: Enum1413! + field55267: String! + field55268: Object10504! +} + +type Object10504 @Directive21(argument61 : "stringValue43665") @Directive44(argument97 : ["stringValue43664"]) { + field55269: Scalar3! + field55270: Scalar3! + field55271: String! + field55272: Scalar2 +} + +type Object10505 @Directive21(argument61 : "stringValue43667") @Directive44(argument97 : ["stringValue43666"]) { + field55274: String + field55275: String + field55276: String +} + +type Object10506 @Directive21(argument61 : "stringValue43673") @Directive44(argument97 : ["stringValue43672"]) { + field55278: Object10507! + field55305: [Object10512] + field55307: Enum2528 +} + +type Object10507 @Directive21(argument61 : "stringValue43675") @Directive44(argument97 : ["stringValue43674"]) { + field55279: String! + field55280: Object10502! + field55281: Object10502! + field55282: Enum2525! + field55283: Enum1414! + field55284: String! + field55285: Object5631 + field55286: Object5631 + field55287: String + field55288: Object10503! + field55289: [Object10508!]! + field55302: String! + field55303: Enum2524! + field55304: Object5631 +} + +type Object10508 @Directive21(argument61 : "stringValue43678") @Directive44(argument97 : ["stringValue43677"]) { + field55290: String! + field55291: Enum2526! + field55292: Object10509! + field55299: String! + field55300: Enum2527! + field55301: Scalar4! +} + +type Object10509 @Directive21(argument61 : "stringValue43681") @Directive44(argument97 : ["stringValue43680"]) { + field55293: Object10510 + field55297: Object10511 +} + +type Object1051 implements Interface76 @Directive21(argument61 : "stringValue5445") @Directive22(argument62 : "stringValue5444") @Directive31 @Directive44(argument97 : ["stringValue5446", "stringValue5447", "stringValue5448"]) @Directive45(argument98 : ["stringValue5449"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union131] + field5221: Boolean + field5987: [Object1052] +} + +type Object10510 @Directive21(argument61 : "stringValue43683") @Directive44(argument97 : ["stringValue43682"]) { + field55294: String + field55295: String + field55296: String +} + +type Object10511 @Directive21(argument61 : "stringValue43685") @Directive44(argument97 : ["stringValue43684"]) { + field55298: String +} + +type Object10512 @Directive21(argument61 : "stringValue43688") @Directive44(argument97 : ["stringValue43687"]) { + field55306: String! +} + +type Object10513 @Directive21(argument61 : "stringValue43700") @Directive44(argument97 : ["stringValue43699"]) { + field55309: [Object10514]! + field55332: String +} + +type Object10514 @Directive21(argument61 : "stringValue43702") @Directive44(argument97 : ["stringValue43701"]) { + field55310: String! + field55311: String! + field55312: String + field55313: String + field55314: String + field55315: Enum2525! + field55316: String + field55317: String! + field55318: Enum1414! + field55319: Object5631 + field55320: Object5631 + field55321: Object5631 + field55322: Scalar4! + field55323: Scalar4! + field55324: [Object10502]! + field55325: Object10503! + field55326: Boolean! + field55327: Boolean! + field55328: String + field55329: Enum2530 + field55330: String! + field55331: String +} + +type Object10515 @Directive21(argument61 : "stringValue43709") @Directive44(argument97 : ["stringValue43708"]) { + field55334: String + field55335: [Object10514]! +} + +type Object10516 @Directive21(argument61 : "stringValue43715") @Directive44(argument97 : ["stringValue43714"]) { + field55337: Object10517! +} + +type Object10517 @Directive21(argument61 : "stringValue43717") @Directive44(argument97 : ["stringValue43716"]) { + field55338: Enum2525! + field55339: String + field55340: String + field55341: [Object10518!]! + field55347: [Object10519!]! +} + +type Object10518 @Directive21(argument61 : "stringValue43719") @Directive44(argument97 : ["stringValue43718"]) { + field55342: String! + field55343: Scalar4! + field55344: Object10502! + field55345: Enum2531! + field55346: String +} + +type Object10519 @Directive21(argument61 : "stringValue43722") @Directive44(argument97 : ["stringValue43721"]) { + field55348: Enum2532! + field55349: String! + field55350: String +} + +type Object1052 @Directive20(argument58 : "stringValue5451", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5450") @Directive31 @Directive44(argument97 : ["stringValue5452", "stringValue5453"]) { + field5988: Object747 + field5989: Object778 + field5990: Object783 + field5991: Object914 + field5992: Object914 + field5993: Object1053 + field5997: Object1053 +} + +type Object10520 @Directive21(argument61 : "stringValue43729") @Directive44(argument97 : ["stringValue43728"]) { + field55352: [Object10521!]! +} + +type Object10521 @Directive21(argument61 : "stringValue43731") @Directive44(argument97 : ["stringValue43730"]) { + field55353: Object10522! + field55358: Object10524 + field55361: Enum2533! + field55362: Object10518 + field55363: String! + field55364: Object10522 +} + +type Object10522 @Directive21(argument61 : "stringValue43733") @Directive44(argument97 : ["stringValue43732"]) { + field55354: String! + field55355: [Object10523!] +} + +type Object10523 @Directive21(argument61 : "stringValue43735") @Directive44(argument97 : ["stringValue43734"]) { + field55356: String! + field55357: String +} + +type Object10524 @Directive21(argument61 : "stringValue43737") @Directive44(argument97 : ["stringValue43736"]) { + field55359: String! + field55360: Scalar4! +} + +type Object10525 @Directive21(argument61 : "stringValue43743") @Directive44(argument97 : ["stringValue43742"]) { + field55366: Boolean! +} + +type Object10526 @Directive44(argument97 : ["stringValue43744"]) { + field55368(argument2412: InputObject2023!): Object10527 @Directive35(argument89 : "stringValue43746", argument90 : false, argument91 : "stringValue43745", argument92 : 912, argument93 : "stringValue43747", argument94 : true) + field55391(argument2413: InputObject2024!): Object10534 @Directive35(argument89 : "stringValue43769", argument90 : false, argument91 : "stringValue43768", argument92 : 913, argument93 : "stringValue43770", argument94 : true) + field55403(argument2414: InputObject2025!): Object10537 @Directive35(argument89 : "stringValue43779", argument90 : false, argument91 : "stringValue43778", argument92 : 914, argument93 : "stringValue43780", argument94 : true) + field55492: Object10554 @Directive35(argument89 : "stringValue43821", argument90 : false, argument91 : "stringValue43820", argument92 : 915, argument93 : "stringValue43822", argument94 : true) + field55626: Object10585 @Directive35(argument89 : "stringValue43886", argument90 : false, argument91 : "stringValue43885", argument92 : 916, argument93 : "stringValue43887", argument94 : true) @deprecated + field55744(argument2415: InputObject2026!): Object10585 @Directive35(argument89 : "stringValue43943", argument90 : false, argument91 : "stringValue43942", argument92 : 917, argument93 : "stringValue43944", argument94 : true) +} + +type Object10527 @Directive21(argument61 : "stringValue43750") @Directive44(argument97 : ["stringValue43749"]) { + field55369: Object10528 + field55377: Object10530 + field55380: Object10531 + field55383: Union343 + field55388: Object10533 +} + +type Object10528 @Directive21(argument61 : "stringValue43752") @Directive44(argument97 : ["stringValue43751"]) { + field55370: String + field55371: [Union340] +} + +type Object10529 @Directive21(argument61 : "stringValue43755") @Directive44(argument97 : ["stringValue43754"]) { + field55372: String + field55373: String + field55374: String + field55375: String + field55376: String +} + +type Object1053 @Directive20(argument58 : "stringValue5455", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5454") @Directive31 @Directive44(argument97 : ["stringValue5456", "stringValue5457"]) { + field5994: Float + field5995: String + field5996: String +} + +type Object10530 @Directive21(argument61 : "stringValue43757") @Directive44(argument97 : ["stringValue43756"]) { + field55378: String + field55379: [Union341] +} + +type Object10531 @Directive21(argument61 : "stringValue43760") @Directive44(argument97 : ["stringValue43759"]) { + field55381: String + field55382: [Union342] +} + +type Object10532 @Directive21(argument61 : "stringValue43764") @Directive44(argument97 : ["stringValue43763"]) { + field55384: String + field55385: String + field55386: String + field55387: Boolean +} + +type Object10533 @Directive21(argument61 : "stringValue43766") @Directive44(argument97 : ["stringValue43765"]) { + field55389: String + field55390: [Union344] +} + +type Object10534 @Directive21(argument61 : "stringValue43773") @Directive44(argument97 : ["stringValue43772"]) { + field55392: Object10528 + field55393: Object10530 + field55394: Object10531 + field55395: Object10535 + field55401: Union343 + field55402: Object10533 +} + +type Object10535 @Directive21(argument61 : "stringValue43775") @Directive44(argument97 : ["stringValue43774"]) { + field55396: String + field55397: [Object10536] + field55400: Scalar2 +} + +type Object10536 @Directive21(argument61 : "stringValue43777") @Directive44(argument97 : ["stringValue43776"]) { + field55398: String + field55399: String +} + +type Object10537 @Directive21(argument61 : "stringValue43785") @Directive44(argument97 : ["stringValue43784"]) { + field55404: Scalar2! + field55405: Boolean + field55406: Boolean + field55407: Int + field55408: Boolean + field55409: Boolean + field55410: Boolean @deprecated + field55411: Int + field55412: Boolean + field55413: Boolean + field55414: Object10538 + field55417: [Object10539] + field55428: [Object10541] + field55433: Object10542 + field55438: Boolean + field55439: Boolean + field55440: String + field55441: Boolean @deprecated + field55442: Boolean + field55443: Boolean + field55444: Object10543 + field55449: Int + field55450: Object10544 + field55458: Boolean + field55459: Boolean + field55460: Object10546 + field55463: Object10547 + field55470: Object10549 + field55472: Object10550 + field55477: Object10551 + field55484: Object10553 + field55486: Boolean + field55487: Boolean + field55488: [Scalar2] + field55489: Boolean + field55490: String + field55491: Boolean +} + +type Object10538 @Directive21(argument61 : "stringValue43787") @Directive44(argument97 : ["stringValue43786"]) { + field55415: Int + field55416: Int +} + +type Object10539 @Directive21(argument61 : "stringValue43789") @Directive44(argument97 : ["stringValue43788"]) { + field55418: Scalar2 + field55419: String + field55420: Scalar4 + field55421: Int + field55422: String + field55423: Object10540 + field55426: String + field55427: String +} + +type Object1054 implements Interface76 @Directive21(argument61 : "stringValue5462") @Directive22(argument62 : "stringValue5461") @Directive31 @Directive44(argument97 : ["stringValue5463", "stringValue5464", "stringValue5465"]) @Directive45(argument98 : ["stringValue5466"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union132] + field5221: Boolean + field5998: [Object1055] +} + +type Object10540 @Directive21(argument61 : "stringValue43791") @Directive44(argument97 : ["stringValue43790"]) { + field55424: String + field55425: String +} + +type Object10541 @Directive21(argument61 : "stringValue43793") @Directive44(argument97 : ["stringValue43792"]) { + field55429: Scalar2! + field55430: Scalar2! + field55431: String! + field55432: String! +} + +type Object10542 @Directive21(argument61 : "stringValue43795") @Directive44(argument97 : ["stringValue43794"]) { + field55434: Boolean + field55435: String + field55436: String + field55437: String +} + +type Object10543 @Directive21(argument61 : "stringValue43797") @Directive44(argument97 : ["stringValue43796"]) { + field55445: Boolean + field55446: Boolean + field55447: Scalar2 + field55448: Boolean +} + +type Object10544 @Directive21(argument61 : "stringValue43799") @Directive44(argument97 : ["stringValue43798"]) { + field55451: String + field55452: String + field55453: String + field55454: Object10545 +} + +type Object10545 @Directive21(argument61 : "stringValue43801") @Directive44(argument97 : ["stringValue43800"]) { + field55455: String + field55456: Int + field55457: Int +} + +type Object10546 @Directive21(argument61 : "stringValue43803") @Directive44(argument97 : ["stringValue43802"]) { + field55461: String + field55462: String +} + +type Object10547 @Directive21(argument61 : "stringValue43805") @Directive44(argument97 : ["stringValue43804"]) { + field55464: [Object10548] +} + +type Object10548 @Directive21(argument61 : "stringValue43807") @Directive44(argument97 : ["stringValue43806"]) { + field55465: String + field55466: String + field55467: String + field55468: String + field55469: String +} + +type Object10549 @Directive21(argument61 : "stringValue43809") @Directive44(argument97 : ["stringValue43808"]) { + field55471: Boolean +} + +type Object1055 @Directive20(argument58 : "stringValue5468", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5467") @Directive31 @Directive44(argument97 : ["stringValue5469", "stringValue5470"]) { + field5999: String + field6000: Object923 + field6001: String! + field6002: String + field6003: String + field6004: Object776 + field6005: Scalar2 + field6006: String +} + +type Object10550 @Directive21(argument61 : "stringValue43811") @Directive44(argument97 : ["stringValue43810"]) { + field55473: Scalar1 + field55474: Scalar1 + field55475: Scalar1 + field55476: Scalar2 +} + +type Object10551 @Directive21(argument61 : "stringValue43813") @Directive44(argument97 : ["stringValue43812"]) { + field55478: [Object10552] + field55483: [Enum2537] +} + +type Object10552 @Directive21(argument61 : "stringValue43815") @Directive44(argument97 : ["stringValue43814"]) { + field55479: Enum2536 + field55480: Enum2537 + field55481: [Scalar2] + field55482: Scalar1 +} + +type Object10553 @Directive21(argument61 : "stringValue43819") @Directive44(argument97 : ["stringValue43818"]) { + field55485: String +} + +type Object10554 @Directive21(argument61 : "stringValue43824") @Directive44(argument97 : ["stringValue43823"]) { + field55493: [Object10555] + field55496: Object10556 + field55522: Object10564 + field55525: Object10565 + field55529: Object10566 + field55534: Object10567 + field55538: Object10568 + field55540: Object10569 + field55545: Object10570 + field55561: Object10573 + field55569: Boolean + field55570: Boolean + field55571: Boolean + field55572: Boolean + field55573: Boolean + field55574: Boolean + field55575: Object10575 + field55578: Object10576 + field55585: Object10577 + field55588: Object10578 + field55593: Object10579 + field55599: Int + field55600: [Object10580] + field55610: Boolean + field55611: Boolean + field55612: Object10582 + field55615: Boolean + field55616: Boolean + field55617: Object10583 + field55621: Boolean + field55622: Object10584 +} + +type Object10555 @Directive21(argument61 : "stringValue43826") @Directive44(argument97 : ["stringValue43825"]) { + field55494: String + field55495: Scalar2 +} + +type Object10556 @Directive21(argument61 : "stringValue43828") @Directive44(argument97 : ["stringValue43827"]) { + field55497: Boolean + field55498: Scalar1 + field55499: Object10557 +} + +type Object10557 @Directive21(argument61 : "stringValue43830") @Directive44(argument97 : ["stringValue43829"]) { + field55500: Boolean + field55501: Boolean + field55502: Boolean + field55503: Boolean + field55504: Boolean + field55505: Int + field55506: Object10558 + field55514: Object10561 + field55517: Object10562 +} + +type Object10558 @Directive21(argument61 : "stringValue43832") @Directive44(argument97 : ["stringValue43831"]) { + field55507: Object10559 + field55513: Object10559 +} + +type Object10559 @Directive21(argument61 : "stringValue43834") @Directive44(argument97 : ["stringValue43833"]) { + field55508: String + field55509: String + field55510: [Object10560] +} + +type Object1056 implements Interface76 @Directive21(argument61 : "stringValue5475") @Directive22(argument62 : "stringValue5474") @Directive31 @Directive44(argument97 : ["stringValue5476", "stringValue5477", "stringValue5478"]) @Directive45(argument98 : ["stringValue5479"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union133] + field5221: Boolean + field6007: [Object1057] +} + +type Object10560 @Directive21(argument61 : "stringValue43836") @Directive44(argument97 : ["stringValue43835"]) { + field55511: String + field55512: Boolean +} + +type Object10561 @Directive21(argument61 : "stringValue43838") @Directive44(argument97 : ["stringValue43837"]) { + field55515: String + field55516: String +} + +type Object10562 @Directive21(argument61 : "stringValue43840") @Directive44(argument97 : ["stringValue43839"]) { + field55518: Object10563 + field55521: Object10563 +} + +type Object10563 @Directive21(argument61 : "stringValue43842") @Directive44(argument97 : ["stringValue43841"]) { + field55519: String + field55520: String +} + +type Object10564 @Directive21(argument61 : "stringValue43844") @Directive44(argument97 : ["stringValue43843"]) { + field55523: Boolean + field55524: Int +} + +type Object10565 @Directive21(argument61 : "stringValue43846") @Directive44(argument97 : ["stringValue43845"]) { + field55526: Boolean + field55527: Int + field55528: String +} + +type Object10566 @Directive21(argument61 : "stringValue43848") @Directive44(argument97 : ["stringValue43847"]) { + field55530: String + field55531: String + field55532: String + field55533: String +} + +type Object10567 @Directive21(argument61 : "stringValue43850") @Directive44(argument97 : ["stringValue43849"]) { + field55535: Boolean + field55536: Scalar2 + field55537: String +} + +type Object10568 @Directive21(argument61 : "stringValue43852") @Directive44(argument97 : ["stringValue43851"]) { + field55539: Boolean +} + +type Object10569 @Directive21(argument61 : "stringValue43854") @Directive44(argument97 : ["stringValue43853"]) { + field55541: String + field55542: String + field55543: String + field55544: Boolean +} + +type Object1057 @Directive20(argument58 : "stringValue5481", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5480") @Directive31 @Directive44(argument97 : ["stringValue5482", "stringValue5483"]) { + field6008: [String] + field6009: String + field6010: Object891 + field6011: String + field6012: String + field6013: Boolean + field6014: Object1058 + field6020: Object1060 +} + +type Object10570 @Directive21(argument61 : "stringValue43856") @Directive44(argument97 : ["stringValue43855"]) { + field55546: Boolean + field55547: Scalar3 + field55548: Float + field55549: Boolean + field55550: Float + field55551: String + field55552: String + field55553: [String] + field55554: Int + field55555: Object10571 +} + +type Object10571 @Directive21(argument61 : "stringValue43858") @Directive44(argument97 : ["stringValue43857"]) { + field55556: Object10572! + field55559: Int + field55560: String +} + +type Object10572 @Directive21(argument61 : "stringValue43860") @Directive44(argument97 : ["stringValue43859"]) { + field55557: Scalar2! + field55558: String +} + +type Object10573 @Directive21(argument61 : "stringValue43862") @Directive44(argument97 : ["stringValue43861"]) { + field55562: [Object10574] + field55566: Scalar4 + field55567: Int + field55568: Int +} + +type Object10574 @Directive21(argument61 : "stringValue43864") @Directive44(argument97 : ["stringValue43863"]) { + field55563: Scalar2! + field55564: String + field55565: Scalar4 +} + +type Object10575 @Directive21(argument61 : "stringValue43866") @Directive44(argument97 : ["stringValue43865"]) { + field55576: Boolean + field55577: Boolean +} + +type Object10576 @Directive21(argument61 : "stringValue43868") @Directive44(argument97 : ["stringValue43867"]) { + field55579: Boolean + field55580: String + field55581: String + field55582: String + field55583: String + field55584: String +} + +type Object10577 @Directive21(argument61 : "stringValue43870") @Directive44(argument97 : ["stringValue43869"]) { + field55586: Boolean + field55587: Boolean +} + +type Object10578 @Directive21(argument61 : "stringValue43872") @Directive44(argument97 : ["stringValue43871"]) { + field55589: String + field55590: String + field55591: String + field55592: String +} + +type Object10579 @Directive21(argument61 : "stringValue43874") @Directive44(argument97 : ["stringValue43873"]) { + field55594: Boolean + field55595: Boolean + field55596: Boolean + field55597: Boolean + field55598: Boolean +} + +type Object1058 @Directive20(argument58 : "stringValue5485", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5484") @Directive31 @Directive44(argument97 : ["stringValue5486", "stringValue5487"]) { + field6015: [Object1059] + field6018: String + field6019: String +} + +type Object10580 @Directive21(argument61 : "stringValue43876") @Directive44(argument97 : ["stringValue43875"]) { + field55601: Scalar2 + field55602: String + field55603: Scalar4 + field55604: Int + field55605: String + field55606: Object10581 + field55609: String +} + +type Object10581 @Directive21(argument61 : "stringValue43878") @Directive44(argument97 : ["stringValue43877"]) { + field55607: String + field55608: String +} + +type Object10582 @Directive21(argument61 : "stringValue43880") @Directive44(argument97 : ["stringValue43879"]) { + field55613: Boolean + field55614: Int +} + +type Object10583 @Directive21(argument61 : "stringValue43882") @Directive44(argument97 : ["stringValue43881"]) { + field55618: Boolean + field55619: Int + field55620: Boolean +} + +type Object10584 @Directive21(argument61 : "stringValue43884") @Directive44(argument97 : ["stringValue43883"]) { + field55623: Boolean + field55624: Boolean + field55625: String +} + +type Object10585 @Directive21(argument61 : "stringValue43889") @Directive44(argument97 : ["stringValue43888"]) { + field55627: Boolean + field55628: Object10586 + field55632: Object10587 + field55692: Object10593 + field55701: Object10596 + field55718: Object10599 + field55734: Object10601 + field55739: Object10603 +} + +type Object10586 @Directive21(argument61 : "stringValue43891") @Directive44(argument97 : ["stringValue43890"]) { + field55629: String + field55630: String + field55631: [String] +} + +type Object10587 @Directive21(argument61 : "stringValue43893") @Directive44(argument97 : ["stringValue43892"]) { + field55633: String + field55634: String + field55635: [Object10588] + field55691: String +} + +type Object10588 @Directive21(argument61 : "stringValue43895") @Directive44(argument97 : ["stringValue43894"]) { + field55636: String + field55637: String + field55638: String + field55639: Enum2538 + field55640: Enum2535 + field55641: Enum2539 + field55642: [Object10589] + field55688: [Object10589] + field55689: String + field55690: String +} + +type Object10589 @Directive21(argument61 : "stringValue43899") @Directive44(argument97 : ["stringValue43898"]) { + field55643: String + field55644: Enum2536 @deprecated + field55645: Enum2540 + field55646: Enum2541 + field55647: Enum2542 + field55648: Enum2543 + field55649: Scalar1 + field55650: String + field55651: Scalar1 + field55652: Scalar1 + field55653: Scalar1 + field55654: Scalar1 + field55655: Scalar2 + field55656: Scalar2 + field55657: Scalar2 + field55658: Scalar3 + field55659: Scalar3 + field55660: Scalar1 + field55661: Enum2544 + field55662: Enum2545 + field55663: Enum2546 + field55664: [Object10590] + field55680: Enum2551 + field55681: Enum2549 + field55682: Enum2539 + field55683: Object10592 + field55685: Boolean + field55686: String + field55687: String +} + +type Object1059 @Directive20(argument58 : "stringValue5489", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5488") @Directive31 @Directive44(argument97 : ["stringValue5490", "stringValue5491"]) { + field6016: String + field6017: String +} + +type Object10590 @Directive21(argument61 : "stringValue43908") @Directive44(argument97 : ["stringValue43907"]) { + field55665: Enum2547 + field55666: Scalar1 + field55667: Enum2548 + field55668: Enum2549 @deprecated + field55669: String + field55670: String + field55671: Boolean + field55672: Boolean + field55673: Scalar2 + field55674: Scalar2 + field55675: Float + field55676: Float + field55677: [Object10591] +} + +type Object10591 @Directive21(argument61 : "stringValue43913") @Directive44(argument97 : ["stringValue43912"]) { + field55678: Scalar3! + field55679: Enum2550! +} + +type Object10592 @Directive21(argument61 : "stringValue43917") @Directive44(argument97 : ["stringValue43916"]) { + field55684: Float +} + +type Object10593 @Directive21(argument61 : "stringValue43919") @Directive44(argument97 : ["stringValue43918"]) { + field55693: String + field55694: [Object10594] +} + +type Object10594 @Directive21(argument61 : "stringValue43921") @Directive44(argument97 : ["stringValue43920"]) { + field55695: String + field55696: String + field55697: Object10595 + field55700: String +} + +type Object10595 @Directive21(argument61 : "stringValue43923") @Directive44(argument97 : ["stringValue43922"]) { + field55698: String + field55699: String +} + +type Object10596 @Directive21(argument61 : "stringValue43925") @Directive44(argument97 : ["stringValue43924"]) { + field55702: Object10597 + field55714: [Object10597] + field55715: String + field55716: String + field55717: Object10595 +} + +type Object10597 @Directive21(argument61 : "stringValue43927") @Directive44(argument97 : ["stringValue43926"]) { + field55703: Scalar2 + field55704: String + field55705: String + field55706: Float + field55707: String + field55708: String + field55709: Object10598 + field55711: [Object10589] + field55712: String + field55713: String +} + +type Object10598 @Directive21(argument61 : "stringValue43929") @Directive44(argument97 : ["stringValue43928"]) { + field55710: Float +} + +type Object10599 @Directive21(argument61 : "stringValue43931") @Directive44(argument97 : ["stringValue43930"]) { + field55719: [Object10600] +} + +type Object106 @Directive21(argument61 : "stringValue404") @Directive44(argument97 : ["stringValue403"]) { + field718: [Union12] + field726: String + field727: String + field728: String +} + +type Object1060 @Directive20(argument58 : "stringValue5493", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5492") @Directive31 @Directive44(argument97 : ["stringValue5494", "stringValue5495"]) { + field6021: String + field6022: String +} + +type Object10600 @Directive21(argument61 : "stringValue43933") @Directive44(argument97 : ["stringValue43932"]) { + field55720: Scalar2 + field55721: Enum2552 + field55722: String + field55723: String + field55724: String + field55725: String + field55726: String + field55727: String + field55728: Scalar2 + field55729: String + field55730: String + field55731: Boolean + field55732: Boolean + field55733: String +} + +type Object10601 @Directive21(argument61 : "stringValue43936") @Directive44(argument97 : ["stringValue43935"]) { + field55735: String + field55736: String + field55737: Union345 +} + +type Object10602 @Directive21(argument61 : "stringValue43939") @Directive44(argument97 : ["stringValue43938"]) { + field55738: String +} + +type Object10603 @Directive21(argument61 : "stringValue43941") @Directive44(argument97 : ["stringValue43940"]) { + field55740: String + field55741: [Object10589] @deprecated + field55742: [Object10589] + field55743: [Object10589] +} + +type Object10604 @Directive44(argument97 : ["stringValue43946"]) { + field55746(argument2416: InputObject2027!): Object10605 @Directive35(argument89 : "stringValue43948", argument90 : true, argument91 : "stringValue43947", argument92 : 918, argument93 : "stringValue43949", argument94 : false) + field55757(argument2417: InputObject2028!): Object10607 @Directive35(argument89 : "stringValue43956", argument90 : true, argument91 : "stringValue43955", argument92 : 919, argument93 : "stringValue43957", argument94 : false) + field55771: Object10610 @Directive35(argument89 : "stringValue43967", argument90 : false, argument91 : "stringValue43966", argument92 : 920, argument93 : "stringValue43968", argument94 : false) + field55776(argument2418: InputObject2030!): Object10612 @Directive35(argument89 : "stringValue43974", argument90 : false, argument91 : "stringValue43973", argument92 : 921, argument93 : "stringValue43975", argument94 : false) + field55783(argument2419: InputObject2031!): Object10615 @Directive35(argument89 : "stringValue43984", argument90 : true, argument91 : "stringValue43983", argument92 : 922, argument93 : "stringValue43985", argument94 : false) + field55785(argument2420: InputObject2032!): Object10616 @Directive35(argument89 : "stringValue43990", argument90 : true, argument91 : "stringValue43989", argument92 : 923, argument93 : "stringValue43991", argument94 : false) + field55802(argument2421: InputObject2035!): Object10619 @Directive35(argument89 : "stringValue44002", argument90 : true, argument91 : "stringValue44001", argument92 : 924, argument93 : "stringValue44003", argument94 : false) + field55805(argument2422: InputObject2036!): Object10620 @Directive35(argument89 : "stringValue44008", argument90 : false, argument91 : "stringValue44007", argument92 : 925, argument93 : "stringValue44009", argument94 : false) +} + +type Object10605 @Directive21(argument61 : "stringValue43952") @Directive44(argument97 : ["stringValue43951"]) { + field55747: Enum1428 + field55748: String + field55749: String + field55750: String + field55751: [Object10606] + field55755: [Object10606] + field55756: Object5673 +} + +type Object10606 @Directive21(argument61 : "stringValue43954") @Directive44(argument97 : ["stringValue43953"]) { + field55752: String + field55753: String + field55754: String +} + +type Object10607 @Directive21(argument61 : "stringValue43961") @Directive44(argument97 : ["stringValue43960"]) { + field55758: [Object10608] + field55769: Int + field55770: String +} + +type Object10608 @Directive21(argument61 : "stringValue43963") @Directive44(argument97 : ["stringValue43962"]) { + field55759: String + field55760: Scalar2 + field55761: [Object10609] +} + +type Object10609 @Directive21(argument61 : "stringValue43965") @Directive44(argument97 : ["stringValue43964"]) { + field55762: String + field55763: String + field55764: Float + field55765: String + field55766: Int + field55767: String + field55768: Scalar2 +} + +type Object1061 implements Interface76 @Directive21(argument61 : "stringValue5500") @Directive22(argument62 : "stringValue5499") @Directive31 @Directive44(argument97 : ["stringValue5501", "stringValue5502", "stringValue5503"]) @Directive45(argument98 : ["stringValue5504"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union134] + field6023: Object1062 + field6028: [Object1063] +} + +type Object10610 @Directive21(argument61 : "stringValue43970") @Directive44(argument97 : ["stringValue43969"]) { + field55772: [Object10611] +} + +type Object10611 @Directive21(argument61 : "stringValue43972") @Directive44(argument97 : ["stringValue43971"]) { + field55773: Scalar2 + field55774: String + field55775: String +} + +type Object10612 @Directive21(argument61 : "stringValue43978") @Directive44(argument97 : ["stringValue43977"]) { + field55777: [Object10613] +} + +type Object10613 @Directive21(argument61 : "stringValue43980") @Directive44(argument97 : ["stringValue43979"]) { + field55778: Object10611 + field55779: [Object10614] +} + +type Object10614 @Directive21(argument61 : "stringValue43982") @Directive44(argument97 : ["stringValue43981"]) { + field55780: String + field55781: Int + field55782: Int +} + +type Object10615 @Directive21(argument61 : "stringValue43988") @Directive44(argument97 : ["stringValue43987"]) { + field55784: Scalar1 +} + +type Object10616 @Directive21(argument61 : "stringValue43996") @Directive44(argument97 : ["stringValue43995"]) { + field55786: Int + field55787: String + field55788: [Object10617] +} + +type Object10617 @Directive21(argument61 : "stringValue43998") @Directive44(argument97 : ["stringValue43997"]) { + field55789: Scalar2 + field55790: String + field55791: [Object10618] +} + +type Object10618 @Directive21(argument61 : "stringValue44000") @Directive44(argument97 : ["stringValue43999"]) { + field55792: String + field55793: String + field55794: Float + field55795: Float + field55796: Float + field55797: String + field55798: Int + field55799: String + field55800: Float + field55801: Float +} + +type Object10619 @Directive21(argument61 : "stringValue44006") @Directive44(argument97 : ["stringValue44005"]) { + field55803: Scalar1! + field55804: Int +} + +type Object1062 @Directive20(argument58 : "stringValue5506", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5505") @Directive31 @Directive44(argument97 : ["stringValue5507", "stringValue5508"]) { + field6024: String + field6025: String + field6026: String + field6027: String +} + +type Object10620 @Directive21(argument61 : "stringValue44012") @Directive44(argument97 : ["stringValue44011"]) { + field55806: [Object10614] + field55807: Int + field55808: Int + field55809: Int + field55810: Int +} + +type Object10621 @Directive44(argument97 : ["stringValue44013"]) { + field55812(argument2423: InputObject2037!): Object10622 @Directive35(argument89 : "stringValue44015", argument90 : false, argument91 : "stringValue44014", argument92 : 926, argument93 : "stringValue44016", argument94 : false) + field55814(argument2424: InputObject2038!): Object10623 @Directive35(argument89 : "stringValue44022", argument90 : true, argument91 : "stringValue44021", argument92 : 927, argument93 : "stringValue44023", argument94 : false) + field55852(argument2425: InputObject2044!): Object10633 @Directive35(argument89 : "stringValue44069", argument90 : false, argument91 : "stringValue44068", argument92 : 928, argument93 : "stringValue44070", argument94 : false) + field55859(argument2426: InputObject2045!): Object10635 @Directive35(argument89 : "stringValue44077", argument90 : true, argument91 : "stringValue44076", argument92 : 929, argument93 : "stringValue44078", argument94 : false) + field55861: Object10636 @Directive35(argument89 : "stringValue44083", argument90 : false, argument91 : "stringValue44082", argument92 : 930, argument93 : "stringValue44084", argument94 : false) + field55863(argument2427: InputObject2046!): Object10637 @Directive35(argument89 : "stringValue44088", argument90 : false, argument91 : "stringValue44087", argument92 : 931, argument93 : "stringValue44089", argument94 : false) + field55904(argument2428: InputObject2047!): Object10647 @Directive35(argument89 : "stringValue44113", argument90 : false, argument91 : "stringValue44112", argument92 : 932, argument93 : "stringValue44114", argument94 : false) + field55926(argument2429: InputObject2048!): Object10649 @Directive35(argument89 : "stringValue44129", argument90 : false, argument91 : "stringValue44128", argument92 : 933, argument93 : "stringValue44130", argument94 : false) + field55927(argument2430: InputObject2050!): Object10652 @Directive35(argument89 : "stringValue44132", argument90 : true, argument91 : "stringValue44131", argument92 : 934, argument93 : "stringValue44133", argument94 : false) + field55929(argument2431: InputObject2051!): Object10653 @Directive35(argument89 : "stringValue44138", argument90 : true, argument91 : "stringValue44137", argument92 : 935, argument93 : "stringValue44139", argument94 : false) + field55959(argument2432: InputObject2049!): Object10648 @Directive35(argument89 : "stringValue44153", argument90 : false, argument91 : "stringValue44152", argument92 : 936, argument93 : "stringValue44154", argument94 : false) + field55960(argument2433: InputObject2053!): Object10658 @Directive35(argument89 : "stringValue44156", argument90 : true, argument91 : "stringValue44155", argument92 : 937, argument93 : "stringValue44157", argument94 : false) +} + +type Object10622 @Directive21(argument61 : "stringValue44020") @Directive44(argument97 : ["stringValue44019"]) { + field55813: Scalar1! +} + +type Object10623 @Directive21(argument61 : "stringValue44044") @Directive44(argument97 : ["stringValue44043"]) { + field55815: Object5712 + field55816: [Object5712]! + field55817: [Object10624]! + field55824: [Object5730]! + field55825: [Object10625] +} + +type Object10624 @Directive21(argument61 : "stringValue44046") @Directive44(argument97 : ["stringValue44045"]) { + field55818: Scalar2! + field55819: String! + field55820: Scalar2 + field55821: Scalar2 + field55822: Scalar2 + field55823: Boolean +} + +type Object10625 @Directive21(argument61 : "stringValue44048") @Directive44(argument97 : ["stringValue44047"]) { + field55826: String + field55827: String! + field55828: Scalar2! + field55829: [Object10626]! + field55850: Boolean + field55851: Enum2570! +} + +type Object10626 @Directive21(argument61 : "stringValue44050") @Directive44(argument97 : ["stringValue44049"]) { + field55830: String! + field55831: String! + field55832: String! + field55833: Union346! + field55840: Enum2567 + field55841: Enum2568 + field55842: Enum2569 + field55843: Enum2569 + field55844: Scalar2 + field55845: Scalar2 + field55846: Float + field55847: String! + field55848: Boolean + field55849: Enum2569! +} + +type Object10627 @Directive21(argument61 : "stringValue44053") @Directive44(argument97 : ["stringValue44052"]) { + field55834: Boolean +} + +type Object10628 @Directive21(argument61 : "stringValue44055") @Directive44(argument97 : ["stringValue44054"]) { + field55835: Float +} + +type Object10629 @Directive21(argument61 : "stringValue44057") @Directive44(argument97 : ["stringValue44056"]) { + field55836: Scalar2 +} + +type Object1063 @Directive20(argument58 : "stringValue5510", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5509") @Directive31 @Directive44(argument97 : ["stringValue5511", "stringValue5512"]) { + field6029: Int + field6030: String + field6031: String + field6032: String + field6033: String + field6034: String + field6035: Int + field6036: String + field6037: String +} + +type Object10630 @Directive21(argument61 : "stringValue44059") @Directive44(argument97 : ["stringValue44058"]) { + field55837: Enum2556 +} + +type Object10631 @Directive21(argument61 : "stringValue44061") @Directive44(argument97 : ["stringValue44060"]) { + field55838: Enum1431 +} + +type Object10632 @Directive21(argument61 : "stringValue44063") @Directive44(argument97 : ["stringValue44062"]) { + field55839: String +} + +type Object10633 @Directive21(argument61 : "stringValue44073") @Directive44(argument97 : ["stringValue44072"]) { + field55853: [Object5711]! + field55854: Object10634! +} + +type Object10634 @Directive21(argument61 : "stringValue44075") @Directive44(argument97 : ["stringValue44074"]) { + field55855: Scalar2 + field55856: Boolean @deprecated + field55857: Boolean + field55858: Boolean +} + +type Object10635 @Directive21(argument61 : "stringValue44081") @Directive44(argument97 : ["stringValue44080"]) { + field55860: [Object5695] +} + +type Object10636 @Directive21(argument61 : "stringValue44086") @Directive44(argument97 : ["stringValue44085"]) { + field55862: Object5726 +} + +type Object10637 @Directive21(argument61 : "stringValue44093") @Directive44(argument97 : ["stringValue44092"]) { + field55864: [Object10638]! + field55900: Object10645 +} + +type Object10638 @Directive21(argument61 : "stringValue44095") @Directive44(argument97 : ["stringValue44094"]) { + field55865: Scalar2! + field55866: [Object10639] + field55870: Object5712 + field55871: [Object10640] + field55881: Object10642 + field55883: Object10643 +} + +type Object10639 @Directive21(argument61 : "stringValue44097") @Directive44(argument97 : ["stringValue44096"]) { + field55867: Scalar3! + field55868: Float + field55869: String +} + +type Object1064 implements Interface76 @Directive21(argument61 : "stringValue5517") @Directive22(argument62 : "stringValue5516") @Directive31 @Directive44(argument97 : ["stringValue5518", "stringValue5519", "stringValue5520"]) @Directive45(argument98 : ["stringValue5521"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union135] + field5221: Boolean +} + +type Object10640 @Directive21(argument61 : "stringValue44099") @Directive44(argument97 : ["stringValue44098"]) { + field55872: Scalar3! + field55873: Object10641 + field55880: String +} + +type Object10641 @Directive21(argument61 : "stringValue44101") @Directive44(argument97 : ["stringValue44100"]) { + field55874: Float + field55875: Float + field55876: Float + field55877: Float + field55878: Float + field55879: Float +} + +type Object10642 @Directive21(argument61 : "stringValue44103") @Directive44(argument97 : ["stringValue44102"]) { + field55882: Scalar3 +} + +type Object10643 @Directive21(argument61 : "stringValue44105") @Directive44(argument97 : ["stringValue44104"]) { + field55884: Scalar2! + field55885: Scalar2 + field55886: String + field55887: Int + field55888: String + field55889: [Object10644] +} + +type Object10644 @Directive21(argument61 : "stringValue44107") @Directive44(argument97 : ["stringValue44106"]) { + field55890: String + field55891: Float + field55892: Float + field55893: Float + field55894: Float + field55895: Float + field55896: Float + field55897: Float + field55898: Float + field55899: Boolean +} + +type Object10645 @Directive21(argument61 : "stringValue44109") @Directive44(argument97 : ["stringValue44108"]) { + field55901: Object10646 +} + +type Object10646 @Directive21(argument61 : "stringValue44111") @Directive44(argument97 : ["stringValue44110"]) { + field55902: Boolean + field55903: Boolean +} + +type Object10647 @Directive21(argument61 : "stringValue44119") @Directive44(argument97 : ["stringValue44118"]) { + field55905: Object10648 + field55907: Object10649 + field55914: [Object10625] + field55915: Int + field55916: Scalar3 + field55917: Scalar3 + field55918: Boolean + field55919: Boolean + field55920: Boolean + field55921: Boolean + field55922: Boolean + field55923: Boolean + field55924: Boolean + field55925: Boolean +} + +type Object10648 @Directive21(argument61 : "stringValue44121") @Directive44(argument97 : ["stringValue44120"]) { + field55906: [Object5679]! +} + +type Object10649 @Directive21(argument61 : "stringValue44123") @Directive44(argument97 : ["stringValue44122"]) { + field55908: Object10633 + field55909: Object10650 +} + +type Object1065 @Directive20(argument58 : "stringValue5526", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5525") @Directive31 @Directive44(argument97 : ["stringValue5527", "stringValue5528"]) { + field6038: String! + field6039: String + field6040: String + field6041: String + field6042: String +} + +type Object10650 @Directive21(argument61 : "stringValue44125") @Directive44(argument97 : ["stringValue44124"]) { + field55910: [Object5712] + field55911: Object10651 +} + +type Object10651 @Directive21(argument61 : "stringValue44127") @Directive44(argument97 : ["stringValue44126"]) { + field55912: Int + field55913: [Scalar2] +} + +type Object10652 @Directive21(argument61 : "stringValue44136") @Directive44(argument97 : ["stringValue44135"]) { + field55928: [Object5730]! +} + +type Object10653 @Directive21(argument61 : "stringValue44143") @Directive44(argument97 : ["stringValue44142"]) { + field55930: [Object10654] + field55951: [Object5712]! + field55952: [Object10655]! + field55953: String + field55954: [Object10654]! + field55955: [Object10657]! +} + +type Object10654 @Directive21(argument61 : "stringValue44145") @Directive44(argument97 : ["stringValue44144"]) { + field55931: Scalar2 + field55932: Scalar2 + field55933: String + field55934: Object10655 + field55938: Scalar2 + field55939: Scalar2 + field55940: Int + field55941: Int + field55942: Scalar2 + field55943: Object10656 + field55947: [Object5712] + field55948: [String] + field55949: Scalar2 + field55950: [Scalar2] +} + +type Object10655 @Directive21(argument61 : "stringValue44147") @Directive44(argument97 : ["stringValue44146"]) { + field55935: Scalar2! + field55936: String + field55937: String +} + +type Object10656 @Directive21(argument61 : "stringValue44149") @Directive44(argument97 : ["stringValue44148"]) { + field55944: String! + field55945: Scalar2! + field55946: String @deprecated +} + +type Object10657 @Directive21(argument61 : "stringValue44151") @Directive44(argument97 : ["stringValue44150"]) { + field55956: Scalar2! + field55957: String + field55958: String +} + +type Object10658 @Directive21(argument61 : "stringValue44160") @Directive44(argument97 : ["stringValue44159"]) { + field55961: Scalar1! +} + +type Object10659 @Directive44(argument97 : ["stringValue44161"]) { + field55963(argument2434: InputObject2054!): Object10660 @Directive35(argument89 : "stringValue44163", argument90 : true, argument91 : "stringValue44162", argument92 : 938, argument93 : "stringValue44164", argument94 : false) + field55965: Object10661 @Directive35(argument89 : "stringValue44169", argument90 : true, argument91 : "stringValue44168", argument92 : 939, argument93 : "stringValue44170", argument94 : false) + field55967: Object10662 @Directive35(argument89 : "stringValue44174", argument90 : true, argument91 : "stringValue44173", argument92 : 940, argument93 : "stringValue44175", argument94 : false) + field55969(argument2435: InputObject2055!): Object10663 @Directive35(argument89 : "stringValue44179", argument90 : true, argument91 : "stringValue44178", argument92 : 941, argument93 : "stringValue44180", argument94 : false) + field55971(argument2436: InputObject2056!): Object10664 @Directive35(argument89 : "stringValue44185", argument90 : true, argument91 : "stringValue44184", argument92 : 942, argument93 : "stringValue44186", argument94 : false) + field55973(argument2437: InputObject2057!): Object10665 @Directive35(argument89 : "stringValue44191", argument90 : true, argument91 : "stringValue44190", argument92 : 943, argument93 : "stringValue44192", argument94 : false) + field55997: Object10668 @Directive35(argument89 : "stringValue44201", argument90 : false, argument91 : "stringValue44200", argument92 : 944, argument93 : "stringValue44202", argument94 : false) + field56007(argument2438: InputObject2058!): Object10670 @Directive35(argument89 : "stringValue44208", argument90 : false, argument91 : "stringValue44207", argument92 : 945, argument93 : "stringValue44209", argument94 : false) + field56011: Object10671 @Directive35(argument89 : "stringValue44214", argument90 : false, argument91 : "stringValue44213", argument92 : 946, argument93 : "stringValue44215", argument94 : false) + field56013(argument2439: InputObject2059!): Object10672 @Directive35(argument89 : "stringValue44219", argument90 : false, argument91 : "stringValue44218", argument92 : 947, argument93 : "stringValue44220", argument94 : false) + field56015(argument2440: InputObject2060!): Object10673 @Directive35(argument89 : "stringValue44225", argument90 : true, argument91 : "stringValue44224", argument92 : 948, argument93 : "stringValue44226", argument94 : false) + field56017(argument2441: InputObject2061!): Object10674 @Directive35(argument89 : "stringValue44232", argument90 : true, argument91 : "stringValue44231", argument92 : 949, argument93 : "stringValue44233", argument94 : false) + field56019(argument2442: InputObject2062!): Object10675 @Directive35(argument89 : "stringValue44238", argument90 : true, argument91 : "stringValue44237", argument92 : 950, argument93 : "stringValue44239", argument94 : false) + field56021(argument2443: InputObject2063!): Object10676 @Directive35(argument89 : "stringValue44244", argument90 : true, argument91 : "stringValue44243", argument92 : 951, argument93 : "stringValue44245", argument94 : false) + field56029(argument2444: InputObject2064!): Object10678 @Directive35(argument89 : "stringValue44252", argument90 : true, argument91 : "stringValue44251", argument92 : 952, argument93 : "stringValue44253", argument94 : false) + field56035: Object10680 @Directive35(argument89 : "stringValue44260", argument90 : false, argument91 : "stringValue44259", argument92 : 953, argument93 : "stringValue44261", argument94 : false) + field56039(argument2445: InputObject2065!): Object10681 @Directive35(argument89 : "stringValue44265", argument90 : true, argument91 : "stringValue44264", argument92 : 954, argument93 : "stringValue44266", argument94 : false) + field56041(argument2446: InputObject2066!): Object10682 @Directive35(argument89 : "stringValue44271", argument90 : true, argument91 : "stringValue44270", argument92 : 955, argument93 : "stringValue44272", argument94 : false) + field56055(argument2447: InputObject2067!): Object10685 @Directive35(argument89 : "stringValue44281", argument90 : true, argument91 : "stringValue44280", argument92 : 956, argument93 : "stringValue44282", argument94 : false) + field56057(argument2448: InputObject2068!): Object10686 @Directive35(argument89 : "stringValue44287", argument90 : true, argument91 : "stringValue44286", argument92 : 957, argument93 : "stringValue44288", argument94 : false) + field56060(argument2449: InputObject2069!): Object10687 @Directive35(argument89 : "stringValue44293", argument90 : true, argument91 : "stringValue44292", argument92 : 958, argument93 : "stringValue44294", argument94 : false) + field56062(argument2450: InputObject2070!): Object10688 @Directive35(argument89 : "stringValue44299", argument90 : true, argument91 : "stringValue44298", argument92 : 959, argument93 : "stringValue44300", argument94 : false) + field56064(argument2451: InputObject2071!): Object10689 @Directive35(argument89 : "stringValue44305", argument90 : true, argument91 : "stringValue44304", argument92 : 960, argument93 : "stringValue44306", argument94 : false) + field56076(argument2452: InputObject2072!): Object10690 @Directive35(argument89 : "stringValue44311", argument90 : true, argument91 : "stringValue44310", argument92 : 961, argument93 : "stringValue44312", argument94 : false) + field56083(argument2453: InputObject2073!): Object10692 @Directive35(argument89 : "stringValue44319", argument90 : true, argument91 : "stringValue44318", argument92 : 962, argument93 : "stringValue44320", argument94 : false) + field56086(argument2454: InputObject2074!): Object10693 @Directive35(argument89 : "stringValue44325", argument90 : true, argument91 : "stringValue44324", argument92 : 963, argument93 : "stringValue44326", argument94 : false) + field56093: Object10695 @Directive35(argument89 : "stringValue44333", argument90 : true, argument91 : "stringValue44332", argument92 : 964, argument93 : "stringValue44334", argument94 : false) + field56101(argument2455: InputObject2075!): Object10697 @Directive35(argument89 : "stringValue44340", argument90 : true, argument91 : "stringValue44339", argument92 : 965, argument93 : "stringValue44341", argument94 : false) + field57257(argument2456: InputObject2076!): Object10871 @Directive35(argument89 : "stringValue44814", argument90 : true, argument91 : "stringValue44813", argument92 : 966, argument93 : "stringValue44815", argument94 : false) + field57259(argument2457: InputObject2077!): Object10872 @Directive35(argument89 : "stringValue44822", argument90 : true, argument91 : "stringValue44821", argument92 : 967, argument93 : "stringValue44823", argument94 : false) + field57261(argument2458: InputObject2078!): Object10873 @Directive35(argument89 : "stringValue44828", argument90 : true, argument91 : "stringValue44827", argument92 : 968, argument93 : "stringValue44829", argument94 : false) + field57277: Object10875 @Directive35(argument89 : "stringValue44836", argument90 : true, argument91 : "stringValue44835", argument92 : 969, argument93 : "stringValue44837", argument94 : false) + field57280: Object10876 @Directive35(argument89 : "stringValue44841", argument90 : true, argument91 : "stringValue44840", argument92 : 970, argument93 : "stringValue44842", argument94 : false) + field57282(argument2459: InputObject2079!): Object10877 @Directive35(argument89 : "stringValue44847", argument90 : false, argument91 : "stringValue44846", argument92 : 971, argument93 : "stringValue44848", argument94 : false) + field57286(argument2460: InputObject2080!): Object10878 @Directive35(argument89 : "stringValue44853", argument90 : true, argument91 : "stringValue44852", argument92 : 972, argument93 : "stringValue44854", argument94 : false) + field57288(argument2461: InputObject2081!): Object10879 @Directive35(argument89 : "stringValue44859", argument90 : true, argument91 : "stringValue44858", argument92 : 973, argument93 : "stringValue44860", argument94 : false) + field57290(argument2462: InputObject2082!): Object10880 @Directive35(argument89 : "stringValue44865", argument90 : true, argument91 : "stringValue44864", argument92 : 974, argument93 : "stringValue44866", argument94 : false) + field57292(argument2463: InputObject2083!): Object10881 @Directive35(argument89 : "stringValue44871", argument90 : true, argument91 : "stringValue44870", argument92 : 975, argument93 : "stringValue44872", argument94 : false) + field57294(argument2464: InputObject2084!): Object10882 @Directive35(argument89 : "stringValue44877", argument90 : true, argument91 : "stringValue44876", argument92 : 976, argument93 : "stringValue44878", argument94 : false) + field57298(argument2465: InputObject2085!): Object10883 @Directive35(argument89 : "stringValue44883", argument90 : true, argument91 : "stringValue44882", argument92 : 977, argument93 : "stringValue44884", argument94 : false) + field57303(argument2466: InputObject2086!): Object10885 @Directive35(argument89 : "stringValue44891", argument90 : true, argument91 : "stringValue44890", argument92 : 978, argument93 : "stringValue44892", argument94 : false) + field57308(argument2467: InputObject2087!): Object10885 @Directive35(argument89 : "stringValue44897", argument90 : true, argument91 : "stringValue44896", argument92 : 979, argument93 : "stringValue44898", argument94 : false) + field57309(argument2468: InputObject2088!): Object10886 @Directive35(argument89 : "stringValue44901", argument90 : true, argument91 : "stringValue44900", argument92 : 980, argument93 : "stringValue44902", argument94 : false) + field57312(argument2469: InputObject2089!): Object10887 @Directive35(argument89 : "stringValue44907", argument90 : true, argument91 : "stringValue44906", argument92 : 981, argument93 : "stringValue44908", argument94 : false) + field57323(argument2470: InputObject2090!): Object10889 @Directive35(argument89 : "stringValue44915", argument90 : true, argument91 : "stringValue44914", argument92 : 982, argument93 : "stringValue44916", argument94 : false) + field57326(argument2471: InputObject2091!): Object10890 @Directive35(argument89 : "stringValue44921", argument90 : true, argument91 : "stringValue44920", argument93 : "stringValue44922", argument94 : false) + field57334(argument2472: InputObject2092!): Object10892 @Directive35(argument89 : "stringValue44929", argument90 : true, argument91 : "stringValue44928", argument92 : 983, argument93 : "stringValue44930", argument94 : false) + field57340: Object10893 @Directive35(argument89 : "stringValue44935", argument90 : false, argument91 : "stringValue44934", argument92 : 984, argument93 : "stringValue44936", argument94 : false) + field57342(argument2473: InputObject2093!): Object10894 @Directive35(argument89 : "stringValue44940", argument90 : true, argument91 : "stringValue44939", argument92 : 985, argument93 : "stringValue44941", argument94 : false) + field57344(argument2474: InputObject2094!): Object10895 @Directive35(argument89 : "stringValue44946", argument90 : true, argument91 : "stringValue44945", argument92 : 986, argument93 : "stringValue44947", argument94 : false) + field57352(argument2475: InputObject2095!): Object10897 @Directive35(argument89 : "stringValue44954", argument90 : true, argument91 : "stringValue44953", argument92 : 987, argument93 : "stringValue44955", argument94 : false) @deprecated + field57359(argument2476: InputObject2096!): Object10899 @Directive35(argument89 : "stringValue44962", argument90 : true, argument91 : "stringValue44961", argument92 : 988, argument93 : "stringValue44963", argument94 : false) + field57361(argument2477: InputObject2097!): Object10900 @Directive35(argument89 : "stringValue44968", argument90 : true, argument91 : "stringValue44967", argument92 : 989, argument93 : "stringValue44969", argument94 : false) + field57367(argument2478: InputObject2098!): Object10902 @Directive35(argument89 : "stringValue44976", argument90 : false, argument91 : "stringValue44975", argument92 : 990, argument93 : "stringValue44977", argument94 : false) + field57376(argument2479: InputObject2099!): Object10904 @Directive35(argument89 : "stringValue44984", argument90 : true, argument91 : "stringValue44983", argument92 : 991, argument93 : "stringValue44985", argument94 : false) + field57378: Object10905 @Directive35(argument89 : "stringValue44990", argument90 : true, argument91 : "stringValue44989", argument92 : 992, argument93 : "stringValue44991", argument94 : false) + field57380: Object10906 @Directive35(argument89 : "stringValue44995", argument90 : true, argument91 : "stringValue44994", argument92 : 993, argument93 : "stringValue44996", argument94 : false) + field57382(argument2480: InputObject2100!): Object10907 @Directive35(argument89 : "stringValue45000", argument90 : true, argument91 : "stringValue44999", argument92 : 994, argument93 : "stringValue45001", argument94 : false) + field57386: Object10908 @Directive35(argument89 : "stringValue45006", argument90 : true, argument91 : "stringValue45005", argument92 : 995, argument93 : "stringValue45007", argument94 : false) @deprecated + field57388(argument2481: InputObject2101!): Object10909 @Directive35(argument89 : "stringValue45011", argument90 : true, argument91 : "stringValue45010", argument92 : 996, argument93 : "stringValue45012", argument94 : false) + field57397(argument2482: InputObject2102!): Object10912 @Directive35(argument89 : "stringValue45021", argument90 : true, argument91 : "stringValue45020", argument92 : 997, argument93 : "stringValue45022", argument94 : false) + field57400(argument2483: InputObject2103!): Object10913 @Directive35(argument89 : "stringValue45028", argument90 : true, argument91 : "stringValue45027", argument92 : 998, argument93 : "stringValue45029", argument94 : false) + field57914(argument2484: InputObject2104!): Object10989 @Directive35(argument89 : "stringValue45211", argument90 : true, argument91 : "stringValue45210", argument92 : 999, argument93 : "stringValue45212", argument94 : false) + field57917(argument2485: InputObject2105!): Object10990 @Directive35(argument89 : "stringValue45217", argument90 : true, argument91 : "stringValue45216", argument92 : 1000, argument93 : "stringValue45218", argument94 : false) + field57919(argument2486: InputObject2106!): Object10991 @Directive35(argument89 : "stringValue45223", argument90 : true, argument91 : "stringValue45222", argument92 : 1001, argument93 : "stringValue45224", argument94 : false) + field57921(argument2487: InputObject2107!): Object10992 @Directive35(argument89 : "stringValue45229", argument90 : true, argument91 : "stringValue45228", argument92 : 1002, argument93 : "stringValue45230", argument94 : false) + field57930(argument2488: InputObject2108!): Object10994 @Directive35(argument89 : "stringValue45237", argument90 : true, argument91 : "stringValue45236", argument92 : 1003, argument93 : "stringValue45238", argument94 : false) + field57934(argument2489: InputObject2109!): Object10995 @Directive35(argument89 : "stringValue45243", argument90 : true, argument91 : "stringValue45242", argument92 : 1004, argument93 : "stringValue45244", argument94 : false) + field57940(argument2490: InputObject2110!): Object10996 @Directive35(argument89 : "stringValue45251", argument90 : true, argument91 : "stringValue45250", argument92 : 1005, argument93 : "stringValue45252", argument94 : false) + field57946(argument2491: InputObject2111!): Object10997 @Directive35(argument89 : "stringValue45257", argument90 : true, argument91 : "stringValue45256", argument92 : 1006, argument93 : "stringValue45258", argument94 : false) + field57948(argument2492: InputObject2112!): Object10998 @Directive35(argument89 : "stringValue45263", argument90 : true, argument91 : "stringValue45262", argument92 : 1007, argument93 : "stringValue45264", argument94 : false) @deprecated + field57954(argument2493: InputObject2113!): Object10999 @Directive35(argument89 : "stringValue45269", argument90 : true, argument91 : "stringValue45268", argument92 : 1008, argument93 : "stringValue45270", argument94 : false) + field57956(argument2494: InputObject2114!): Object11000 @Directive35(argument89 : "stringValue45275", argument90 : true, argument91 : "stringValue45274", argument92 : 1009, argument93 : "stringValue45276", argument94 : false) + field57961(argument2495: InputObject2115!): Object11001 @Directive35(argument89 : "stringValue45281", argument90 : true, argument91 : "stringValue45280", argument92 : 1010, argument93 : "stringValue45282", argument94 : false) + field57963(argument2496: InputObject2116!): Object11002 @Directive35(argument89 : "stringValue45287", argument90 : true, argument91 : "stringValue45286", argument92 : 1011, argument93 : "stringValue45288", argument94 : false) + field57965(argument2497: InputObject2117!): Object11003 @Directive35(argument89 : "stringValue45293", argument90 : true, argument91 : "stringValue45292", argument92 : 1012, argument93 : "stringValue45294", argument94 : false) + field57974(argument2498: InputObject2118!): Object11005 @Directive35(argument89 : "stringValue45301", argument90 : true, argument91 : "stringValue45300", argument92 : 1013, argument93 : "stringValue45302", argument94 : false) @deprecated + field57984: Object11006 @Directive35(argument89 : "stringValue45308", argument90 : true, argument91 : "stringValue45307", argument92 : 1014, argument93 : "stringValue45309", argument94 : false) + field57989(argument2499: InputObject2119!): Object11007 @Directive35(argument89 : "stringValue45313", argument90 : true, argument91 : "stringValue45312", argument92 : 1015, argument93 : "stringValue45314", argument94 : false) + field57991(argument2500: InputObject2120!): Object11008 @Directive35(argument89 : "stringValue45319", argument90 : false, argument91 : "stringValue45318", argument92 : 1016, argument93 : "stringValue45320", argument94 : false) + field57993(argument2501: InputObject2121!): Object11009 @Directive35(argument89 : "stringValue45326", argument90 : false, argument91 : "stringValue45325", argument92 : 1017, argument93 : "stringValue45327", argument94 : false) + field57999(argument2502: InputObject2122!): Object11010 @Directive35(argument89 : "stringValue45333", argument90 : true, argument91 : "stringValue45332", argument92 : 1018, argument93 : "stringValue45334", argument94 : false) + field58001(argument2503: InputObject2123!): Object11011 @Directive35(argument89 : "stringValue45339", argument90 : true, argument91 : "stringValue45338", argument92 : 1019, argument93 : "stringValue45340", argument94 : false) @deprecated + field58004(argument2504: InputObject2124!): Object11012 @Directive35(argument89 : "stringValue45345", argument90 : true, argument91 : "stringValue45344", argument92 : 1020, argument93 : "stringValue45346", argument94 : false) + field58017(argument2505: InputObject2125!): Object11015 @Directive35(argument89 : "stringValue45355", argument90 : true, argument91 : "stringValue45354", argument92 : 1021, argument93 : "stringValue45356", argument94 : false) + field58019(argument2506: InputObject2126!): Object11016 @Directive35(argument89 : "stringValue45361", argument90 : true, argument91 : "stringValue45360", argument92 : 1022, argument93 : "stringValue45362", argument94 : false) + field58027(argument2507: InputObject2127!): Object11018 @Directive35(argument89 : "stringValue45369", argument90 : true, argument91 : "stringValue45368", argument92 : 1023, argument93 : "stringValue45370", argument94 : false) + field58029(argument2508: InputObject2128!): Object11019 @Directive35(argument89 : "stringValue45375", argument90 : true, argument91 : "stringValue45374", argument92 : 1024, argument93 : "stringValue45376", argument94 : false) @deprecated + field58032(argument2509: InputObject2129!): Object11020 @Directive35(argument89 : "stringValue45381", argument90 : false, argument91 : "stringValue45380", argument92 : 1025, argument93 : "stringValue45382", argument94 : false) + field58034(argument2510: InputObject2130!): Object11021 @Directive35(argument89 : "stringValue45387", argument90 : true, argument91 : "stringValue45386", argument92 : 1026, argument93 : "stringValue45388", argument94 : false) +} + +type Object1066 implements Interface76 @Directive21(argument61 : "stringValue5530") @Directive22(argument62 : "stringValue5529") @Directive31 @Directive44(argument97 : ["stringValue5531", "stringValue5532", "stringValue5533"]) @Directive45(argument98 : ["stringValue5534"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union136] + field5221: Boolean + field5421: String @deprecated + field6043: [Object1067] +} + +type Object10660 @Directive21(argument61 : "stringValue44167") @Directive44(argument97 : ["stringValue44166"]) { + field55964: Object5740 +} + +type Object10661 @Directive21(argument61 : "stringValue44172") @Directive44(argument97 : ["stringValue44171"]) { + field55966: [Object5766!]! +} + +type Object10662 @Directive21(argument61 : "stringValue44177") @Directive44(argument97 : ["stringValue44176"]) { + field55968: [Object5766!]! +} + +type Object10663 @Directive21(argument61 : "stringValue44183") @Directive44(argument97 : ["stringValue44182"]) { + field55970: Scalar1! +} + +type Object10664 @Directive21(argument61 : "stringValue44189") @Directive44(argument97 : ["stringValue44188"]) { + field55972: [Object5837!]! +} + +type Object10665 @Directive21(argument61 : "stringValue44195") @Directive44(argument97 : ["stringValue44194"]) { + field55974: Object10666 +} + +type Object10666 @Directive21(argument61 : "stringValue44197") @Directive44(argument97 : ["stringValue44196"]) { + field55975: Scalar2 + field55976: Scalar2 + field55977: String + field55978: Enum1487 + field55979: [Enum1453] + field55980: [Object10667] + field55993: Int + field55994: Int + field55995: Scalar4 + field55996: Scalar4 +} + +type Object10667 @Directive21(argument61 : "stringValue44199") @Directive44(argument97 : ["stringValue44198"]) { + field55981: Scalar2 + field55982: Scalar2 + field55983: Enum1466 + field55984: String + field55985: String + field55986: String + field55987: String + field55988: String + field55989: Float + field55990: Scalar4 + field55991: Scalar4 + field55992: Scalar4 +} + +type Object10668 @Directive21(argument61 : "stringValue44204") @Directive44(argument97 : ["stringValue44203"]) { + field55998: [Object10669!]! + field56001: [Object10669!]! + field56002: [Object10669!]! + field56003: [Object10669!]! + field56004: [Object10669!]! + field56005: [String!]! + field56006: [Object10669!]! +} + +type Object10669 @Directive21(argument61 : "stringValue44206") @Directive44(argument97 : ["stringValue44205"]) { + field55999: String + field56000: String +} + +type Object1067 @Directive20(argument58 : "stringValue5536", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5535") @Directive31 @Directive44(argument97 : ["stringValue5537", "stringValue5538"]) { + field6044: Enum290 + field6045: Object921 + field6046: String + field6047: Object1068 + field6055: String + field6056: String + field6057: String + field6058: String + field6059: String + field6060: String + field6061: Object1069 + field6068: String + field6069: Object923 + field6070: Enum252 + field6071: String + field6072: Object923 + field6073: String + field6074: Object914 + field6075: Object1071 + field6082: [Object1072] + field6086: [Object1072] + field6087: Object398 + field6088: String + field6089: Object923 + field6090: String + field6091: String + field6092: String + field6093: String + field6094: String + field6095: Object1073 + field6098: Object914 + field6099: [Object937] + field6100: Object1074 +} + +type Object10670 @Directive21(argument61 : "stringValue44212") @Directive44(argument97 : ["stringValue44211"]) { + field56008: String + field56009: String + field56010: Scalar2 +} + +type Object10671 @Directive21(argument61 : "stringValue44217") @Directive44(argument97 : ["stringValue44216"]) { + field56012: Object5778 +} + +type Object10672 @Directive21(argument61 : "stringValue44223") @Directive44(argument97 : ["stringValue44222"]) { + field56014: Object5778 +} + +type Object10673 @Directive21(argument61 : "stringValue44230") @Directive44(argument97 : ["stringValue44229"]) { + field56016: Object5742 +} + +type Object10674 @Directive21(argument61 : "stringValue44236") @Directive44(argument97 : ["stringValue44235"]) { + field56018: [Object5742!]! +} + +type Object10675 @Directive21(argument61 : "stringValue44242") @Directive44(argument97 : ["stringValue44241"]) { + field56020: Object5774 +} + +type Object10676 @Directive21(argument61 : "stringValue44248") @Directive44(argument97 : ["stringValue44247"]) { + field56022: [Object10677!]! +} + +type Object10677 @Directive21(argument61 : "stringValue44250") @Directive44(argument97 : ["stringValue44249"]) { + field56023: Scalar2! + field56024: String! + field56025: Int! + field56026: String! + field56027: String! + field56028: String! +} + +type Object10678 @Directive21(argument61 : "stringValue44256") @Directive44(argument97 : ["stringValue44255"]) { + field56030: [Object10679!]! +} + +type Object10679 @Directive21(argument61 : "stringValue44258") @Directive44(argument97 : ["stringValue44257"]) { + field56031: Scalar2! + field56032: String! + field56033: String! + field56034: String +} + +type Object1068 @Directive20(argument58 : "stringValue5544", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5543") @Directive31 @Directive44(argument97 : ["stringValue5545", "stringValue5546"]) { + field6048: String + field6049: String + field6050: String + field6051: String + field6052: String + field6053: String + field6054: Scalar2 +} + +type Object10680 @Directive21(argument61 : "stringValue44263") @Directive44(argument97 : ["stringValue44262"]) { + field56036: [Object10669!]! + field56037: [Object10669!]! + field56038: [String!]! +} + +type Object10681 @Directive21(argument61 : "stringValue44269") @Directive44(argument97 : ["stringValue44268"]) { + field56040: Object5817 +} + +type Object10682 @Directive21(argument61 : "stringValue44275") @Directive44(argument97 : ["stringValue44274"]) { + field56042: Object10683 +} + +type Object10683 @Directive21(argument61 : "stringValue44277") @Directive44(argument97 : ["stringValue44276"]) { + field56043: Scalar2! + field56044: Scalar4! + field56045: String! + field56046: String! + field56047: Scalar2! + field56048: Boolean + field56049: String + field56050: Enum1452! + field56051: String! + field56052: Object10684 +} + +type Object10684 @Directive21(argument61 : "stringValue44279") @Directive44(argument97 : ["stringValue44278"]) { + field56053: Boolean! + field56054: Boolean! +} + +type Object10685 @Directive21(argument61 : "stringValue44285") @Directive44(argument97 : ["stringValue44284"]) { + field56056: Object5780 +} + +type Object10686 @Directive21(argument61 : "stringValue44291") @Directive44(argument97 : ["stringValue44290"]) { + field56058: Object5782 + field56059: Enum1477 +} + +type Object10687 @Directive21(argument61 : "stringValue44297") @Directive44(argument97 : ["stringValue44296"]) { + field56061: [Object5782!]! +} + +type Object10688 @Directive21(argument61 : "stringValue44303") @Directive44(argument97 : ["stringValue44302"]) { + field56063: [Object5780!]! +} + +type Object10689 @Directive21(argument61 : "stringValue44309") @Directive44(argument97 : ["stringValue44308"]) { + field56065: Scalar2! + field56066: String! + field56067: String! + field56068: String! + field56069: String! + field56070: String! + field56071: String! + field56072: String + field56073: String! + field56074: String! + field56075: Int! +} + +type Object1069 @Directive20(argument58 : "stringValue5548", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5547") @Directive31 @Directive44(argument97 : ["stringValue5549", "stringValue5550"]) { + field6062: String + field6063: [Object1070] + field6067: String +} + +type Object10690 @Directive21(argument61 : "stringValue44315") @Directive44(argument97 : ["stringValue44314"]) { + field56077: [Object10691!]! +} + +type Object10691 @Directive21(argument61 : "stringValue44317") @Directive44(argument97 : ["stringValue44316"]) { + field56078: Scalar2! + field56079: String! + field56080: String! + field56081: String! + field56082: String! +} + +type Object10692 @Directive21(argument61 : "stringValue44323") @Directive44(argument97 : ["stringValue44322"]) { + field56084: String + field56085: Int! +} + +type Object10693 @Directive21(argument61 : "stringValue44329") @Directive44(argument97 : ["stringValue44328"]) { + field56087: [Object10694!]! +} + +type Object10694 @Directive21(argument61 : "stringValue44331") @Directive44(argument97 : ["stringValue44330"]) { + field56088: Scalar2! + field56089: String! + field56090: String! + field56091: String! + field56092: String! +} + +type Object10695 @Directive21(argument61 : "stringValue44336") @Directive44(argument97 : ["stringValue44335"]) { + field56094: [Object10696!]! +} + +type Object10696 @Directive21(argument61 : "stringValue44338") @Directive44(argument97 : ["stringValue44337"]) { + field56095: Scalar2! + field56096: String! + field56097: Float + field56098: Float + field56099: String + field56100: String +} + +type Object10697 @Directive21(argument61 : "stringValue44344") @Directive44(argument97 : ["stringValue44343"]) { + field56102: Object10698 + field57253: Object5740 + field57254: Scalar2 + field57255: Scalar2 + field57256: Boolean +} + +type Object10698 @Directive21(argument61 : "stringValue44346") @Directive44(argument97 : ["stringValue44345"]) { + field56103: Scalar2! + field56104: String + field56105: Scalar3 + field56106: Scalar3 + field56107: String! + field56108: String + field56109: Float + field56110: Float + field56111: Int + field56112: Float + field56113: Enum2573 + field56114: String + field56115: Int + field56116: String + field56117: String + field56118: String + field56119: String + field56120: String + field56121: String + field56122: String + field56123: String + field56124: Object5740 + field56125: [Object5741] + field56126: Object5741 + field56127: Object10699 + field56148: Object10700 + field56790: Object10797 + field56871: Object10808 + field57195: Object10863 + field57208: Object10864 + field57211: Object10865 + field57219: Object10866 + field57222: Object10866 + field57223: Object10867 + field57231: Object5759 + field57232: Object10869 + field57239: Object10870 + field57251: Object5761 + field57252: String +} + +type Object10699 @Directive21(argument61 : "stringValue44349") @Directive44(argument97 : ["stringValue44348"]) { + field56128: Scalar2 + field56129: Scalar2 + field56130: Scalar2 + field56131: Enum1452 + field56132: String + field56133: Scalar2 + field56134: Scalar2 + field56135: Scalar2 + field56136: String + field56137: Scalar3 + field56138: Scalar3 + field56139: Enum2573 + field56140: Scalar4 + field56141: Boolean + field56142: String + field56143: String + field56144: Object5761 + field56145: Scalar4 + field56146: Scalar4 + field56147: Scalar4 +} + +type Object107 @Directive21(argument61 : "stringValue407") @Directive44(argument97 : ["stringValue406"]) { + field719: String! + field720: Boolean! + field721: Boolean! + field722: String! +} + +type Object1070 @Directive20(argument58 : "stringValue5552", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5551") @Directive31 @Directive44(argument97 : ["stringValue5553", "stringValue5554"]) { + field6064: Scalar3 + field6065: String + field6066: Float +} + +type Object10700 @Directive21(argument61 : "stringValue44351") @Directive44(argument97 : ["stringValue44350"]) { + field56149: Scalar2 + field56150: Scalar4 + field56151: Scalar4 + field56152: Scalar4 + field56153: Scalar2 + field56154: Enum2574 + field56155: Enum2575 + field56156: Scalar2 + field56157: Enum2576 + field56158: Boolean + field56159: Scalar4 + field56160: Boolean + field56161: Scalar4 + field56162: Scalar4 + field56163: Int + field56164: Boolean + field56165: Boolean + field56166: Boolean + field56167: Scalar2 + field56168: String + field56169: Scalar4 + field56170: Boolean + field56171: Boolean + field56172: Boolean + field56173: Enum2577 + field56174: Boolean + field56175: Boolean + field56176: Enum2578 + field56177: Enum2579 + field56178: Enum1453 + field56179: String + field56180: Enum2580 + field56181: Enum2581 + field56182: Int + field56183: Float + field56184: Int + field56185: Int + field56186: Int + field56187: Int + field56188: String + field56189: String + field56190: String + field56191: Boolean + field56192: Enum2582 + field56193: Int + field56194: Int + field56195: Int + field56196: Int + field56197: Int + field56198: Float + field56199: Float + field56200: String + field56201: String + field56202: String + field56203: String + field56204: String + field56205: String + field56206: String + field56207: String + field56208: String + field56209: String + field56210: String + field56211: String + field56212: String + field56213: String + field56214: String + field56215: Boolean + field56216: Boolean + field56217: Boolean + field56218: String + field56219: String + field56220: Float + field56221: Int + field56222: String + field56223: String + field56224: String + field56225: String + field56226: String + field56227: String + field56228: String + field56229: String + field56230: String + field56231: String + field56232: String + field56233: String + field56234: String + field56235: String + field56236: String + field56237: Enum2583 + field56238: String + field56239: String + field56240: String + field56241: String + field56242: String + field56243: String + field56244: String + field56245: String + field56246: String + field56247: String + field56248: String + field56249: String + field56250: Boolean + field56251: String + field56252: String + field56253: Enum2584 + field56254: Int + field56255: Int + field56256: Int + field56257: Int + field56258: Int + field56259: Boolean + field56260: Boolean + field56261: Boolean + field56262: Enum2585 + field56263: Int + field56264: String + field56265: String + field56266: Boolean + field56267: Boolean + field56268: Boolean + field56269: Boolean + field56270: Boolean + field56271: Boolean + field56272: Boolean + field56273: Boolean + field56274: String + field56275: String + field56276: String + field56277: Boolean + field56278: Int + field56279: String + field56280: Int + field56281: Scalar4 + field56282: String + field56283: Scalar4 + field56284: Boolean + field56285: String + field56286: Scalar4 + field56287: Scalar2 + field56288: Scalar2 + field56289: String + field56290: Boolean + field56291: Boolean + field56292: Int + field56293: String + field56294: Int + field56295: Boolean + field56296: Boolean + field56297: String + field56298: String + field56299: String + field56300: String + field56301: Boolean + field56302: Boolean + field56303: Boolean + field56304: Boolean + field56305: Boolean + field56306: Boolean + field56307: Boolean + field56308: Boolean + field56309: Int + field56310: Boolean + field56311: Boolean + field56312: Boolean + field56313: String + field56314: Int + field56315: Boolean + field56316: Int + field56317: Scalar4 + field56318: Boolean + field56319: Float + field56320: Float + field56321: Int + field56322: Int + field56323: Int + field56324: Enum2586 + field56325: Enum2587 + field56326: Enum2588 + field56327: Boolean + field56328: Boolean + field56329: Boolean + field56330: Boolean + field56331: Boolean + field56332: Boolean + field56333: Boolean + field56334: Boolean + field56335: Boolean + field56336: Scalar4 + field56337: Boolean + field56338: Enum2589 + field56339: Scalar3 + field56340: Enum2590 + field56341: Int + field56342: String + field56343: String + field56344: String + field56345: String + field56346: String + field56347: String + field56348: String + field56349: String + field56350: String + field56351: String + field56352: String + field56353: String + field56354: Boolean + field56355: Float + field56356: Scalar2 + field56357: Boolean + field56358: Scalar2 + field56359: Boolean + field56360: Boolean + field56361: Boolean + field56362: String + field56363: String + field56364: Enum2591 + field56365: Boolean + field56366: Enum2592 + field56367: String + field56368: String + field56369: String + field56370: String + field56371: String + field56372: String + field56373: String + field56374: String + field56375: Boolean + field56376: Enum2593 + field56377: Scalar2 + field56378: Boolean + field56379: Boolean + field56380: Boolean + field56381: Int + field56382: Scalar4 + field56383: Scalar4 + field56384: [Scalar2] + field56385: Object10701 + field56394: Object10702 + field56401: Object10704 + field56412: Object10705 + field56423: Object10706 + field56474: [Scalar2] + field56475: [Scalar2] + field56476: [Enum2602] + field56477: [Enum2603] + field56478: [String] + field56479: [String] + field56480: [String] + field56481: [Object10722] + field56501: [Object10723] + field56616: [Object10773] + field56626: [Object10774] + field56634: [Object10775] + field56643: [Object10776] + field56720: [Object10787] + field56756: [Union349] + field56774: [Enum2654] + field56775: Enum2655 + field56776: Scalar4 + field56777: [Object10792] +} + +type Object10701 @Directive21(argument61 : "stringValue44373") @Directive44(argument97 : ["stringValue44372"]) { + field56386: Boolean + field56387: Boolean + field56388: Int + field56389: Int + field56390: Int + field56391: [Int] + field56392: [Enum2594] + field56393: [Enum2594] +} + +type Object10702 @Directive21(argument61 : "stringValue44376") @Directive44(argument97 : ["stringValue44375"]) { + field56395: Scalar2 + field56396: Object10703 + field56400: [Enum2595] +} + +type Object10703 @Directive21(argument61 : "stringValue44378") @Directive44(argument97 : ["stringValue44377"]) { + field56397: Scalar2 + field56398: [Object10703] + field56399: Object10700 +} + +type Object10704 @Directive21(argument61 : "stringValue44381") @Directive44(argument97 : ["stringValue44380"]) { + field56402: String + field56403: String + field56404: String + field56405: String + field56406: String + field56407: String + field56408: String + field56409: String + field56410: String + field56411: String +} + +type Object10705 @Directive21(argument61 : "stringValue44383") @Directive44(argument97 : ["stringValue44382"]) { + field56413: Enum2596 + field56414: Enum2596 + field56415: Enum2596 + field56416: Enum2596 + field56417: Enum2596 + field56418: Enum2596 + field56419: Enum2596 + field56420: Enum2596 + field56421: Enum2596 + field56422: Enum2596 +} + +type Object10706 @Directive21(argument61 : "stringValue44386") @Directive44(argument97 : ["stringValue44385"]) { + field56424: Scalar2 + field56425: Scalar4 + field56426: Scalar4 + field56427: Scalar2 + field56428: Object10707 +} + +type Object10707 @Directive21(argument61 : "stringValue44388") @Directive44(argument97 : ["stringValue44387"]) { + field56429: Int + field56430: Object10708 + field56456: Object10716 + field56461: Object10718 + field56472: [Enum2601] + field56473: Boolean +} + +type Object10708 @Directive21(argument61 : "stringValue44390") @Directive44(argument97 : ["stringValue44389"]) { + field56431: Object10709 + field56455: Object10709 +} + +type Object10709 @Directive21(argument61 : "stringValue44392") @Directive44(argument97 : ["stringValue44391"]) { + field56432: Enum2597 + field56433: Object10710 + field56453: String + field56454: String +} + +type Object1071 @Directive20(argument58 : "stringValue5556", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5555") @Directive31 @Directive44(argument97 : ["stringValue5557", "stringValue5558"]) { + field6076: String + field6077: Scalar2 + field6078: String + field6079: Scalar2 + field6080: String + field6081: String +} + +type Object10710 @Directive21(argument61 : "stringValue44395") @Directive44(argument97 : ["stringValue44394"]) { + field56434: Object10711 + field56437: Object10712 + field56440: Object10713 + field56445: Object10714 + field56449: Object10715 +} + +type Object10711 @Directive21(argument61 : "stringValue44397") @Directive44(argument97 : ["stringValue44396"]) { + field56435: String + field56436: String +} + +type Object10712 @Directive21(argument61 : "stringValue44399") @Directive44(argument97 : ["stringValue44398"]) { + field56438: String + field56439: Boolean +} + +type Object10713 @Directive21(argument61 : "stringValue44401") @Directive44(argument97 : ["stringValue44400"]) { + field56441: String + field56442: String + field56443: Boolean + field56444: String +} + +type Object10714 @Directive21(argument61 : "stringValue44403") @Directive44(argument97 : ["stringValue44402"]) { + field56446: String + field56447: Boolean + field56448: String +} + +type Object10715 @Directive21(argument61 : "stringValue44405") @Directive44(argument97 : ["stringValue44404"]) { + field56450: String + field56451: Boolean + field56452: String +} + +type Object10716 @Directive21(argument61 : "stringValue44407") @Directive44(argument97 : ["stringValue44406"]) { + field56457: [Object10717] + field56460: Boolean +} + +type Object10717 @Directive21(argument61 : "stringValue44409") @Directive44(argument97 : ["stringValue44408"]) { + field56458: String + field56459: String +} + +type Object10718 @Directive21(argument61 : "stringValue44411") @Directive44(argument97 : ["stringValue44410"]) { + field56462: Object10719 +} + +type Object10719 @Directive21(argument61 : "stringValue44413") @Directive44(argument97 : ["stringValue44412"]) { + field56463: Boolean + field56464: [Enum2598] + field56465: Int + field56466: Object10720 + field56469: Object10721 +} + +type Object1072 @Directive20(argument58 : "stringValue5560", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5559") @Directive31 @Directive44(argument97 : ["stringValue5561", "stringValue5562"]) { + field6083: String + field6084: String + field6085: Enum291 +} + +type Object10720 @Directive21(argument61 : "stringValue44416") @Directive44(argument97 : ["stringValue44415"]) { + field56467: Enum2599 + field56468: Float +} + +type Object10721 @Directive21(argument61 : "stringValue44419") @Directive44(argument97 : ["stringValue44418"]) { + field56470: Int + field56471: Enum2600 +} + +type Object10722 @Directive21(argument61 : "stringValue44425") @Directive44(argument97 : ["stringValue44424"]) { + field56482: Scalar2 + field56483: Scalar4 + field56484: Scalar4 + field56485: Scalar2 + field56486: Enum2574 + field56487: String + field56488: Enum2596 + field56489: Boolean + field56490: String + field56491: String + field56492: String + field56493: String + field56494: String + field56495: String + field56496: String + field56497: String + field56498: String + field56499: String + field56500: Boolean +} + +type Object10723 @Directive21(argument61 : "stringValue44427") @Directive44(argument97 : ["stringValue44426"]) { + field56502: Scalar2 + field56503: Scalar4 + field56504: Scalar4 + field56505: Scalar2 + field56506: Int + field56507: Enum2602 + field56508: Boolean + field56509: String + field56510: Int + field56511: Union347 +} + +type Object10724 @Directive21(argument61 : "stringValue44430") @Directive44(argument97 : ["stringValue44429"]) { + field56512: [Enum2604] +} + +type Object10725 @Directive21(argument61 : "stringValue44433") @Directive44(argument97 : ["stringValue44432"]) { + field56513: Enum2605 +} + +type Object10726 @Directive21(argument61 : "stringValue44436") @Directive44(argument97 : ["stringValue44435"]) { + field56514: [Object10727] + field56522: Object10730 +} + +type Object10727 @Directive21(argument61 : "stringValue44438") @Directive44(argument97 : ["stringValue44437"]) { + field56515: [Object10728] + field56518: [Int] + field56519: [Object10729] +} + +type Object10728 @Directive21(argument61 : "stringValue44440") @Directive44(argument97 : ["stringValue44439"]) { + field56516: String + field56517: String +} + +type Object10729 @Directive21(argument61 : "stringValue44442") @Directive44(argument97 : ["stringValue44441"]) { + field56520: String + field56521: String +} + +type Object1073 @Directive20(argument58 : "stringValue5568", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5567") @Directive31 @Directive44(argument97 : ["stringValue5569", "stringValue5570"]) { + field6096: Int + field6097: Int +} + +type Object10730 @Directive21(argument61 : "stringValue44444") @Directive44(argument97 : ["stringValue44443"]) { + field56523: Scalar2 + field56524: String + field56525: Enum2606 + field56526: Enum2607 +} + +type Object10731 @Directive21(argument61 : "stringValue44448") @Directive44(argument97 : ["stringValue44447"]) { + field56527: Enum2608 @deprecated + field56528: [Enum2608] +} + +type Object10732 @Directive21(argument61 : "stringValue44451") @Directive44(argument97 : ["stringValue44450"]) { + field56529: Enum2605 + field56530: Boolean +} + +type Object10733 @Directive21(argument61 : "stringValue44453") @Directive44(argument97 : ["stringValue44452"]) { + field56531: String + field56532: Enum2609 +} + +type Object10734 @Directive21(argument61 : "stringValue44456") @Directive44(argument97 : ["stringValue44455"]) { + field56533: String + field56534: Boolean + field56535: Boolean + field56536: String + field56537: Boolean +} + +type Object10735 @Directive21(argument61 : "stringValue44458") @Directive44(argument97 : ["stringValue44457"]) { + field56538: [Enum2610] +} + +type Object10736 @Directive21(argument61 : "stringValue44461") @Directive44(argument97 : ["stringValue44460"]) { + field56539: [Object10727] + field56540: Object10730 + field56541: Enum2611 +} + +type Object10737 @Directive21(argument61 : "stringValue44464") @Directive44(argument97 : ["stringValue44463"]) { + field56542: Boolean +} + +type Object10738 @Directive21(argument61 : "stringValue44466") @Directive44(argument97 : ["stringValue44465"]) { + field56543: [Enum2612] +} + +type Object10739 @Directive21(argument61 : "stringValue44469") @Directive44(argument97 : ["stringValue44468"]) { + field56544: [Enum2613] +} + +type Object1074 @Directive20(argument58 : "stringValue5572", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5571") @Directive31 @Directive44(argument97 : ["stringValue5573", "stringValue5574"]) { + field6101: String + field6102: String + field6103: Object398 + field6104: Object1075 + field6110: Boolean +} + +type Object10740 @Directive21(argument61 : "stringValue44472") @Directive44(argument97 : ["stringValue44471"]) { + field56545: Boolean + field56546: Enum2614 +} + +type Object10741 @Directive21(argument61 : "stringValue44475") @Directive44(argument97 : ["stringValue44474"]) { + field56547: String +} + +type Object10742 @Directive21(argument61 : "stringValue44477") @Directive44(argument97 : ["stringValue44476"]) { + field56548: [Enum2615] +} + +type Object10743 @Directive21(argument61 : "stringValue44480") @Directive44(argument97 : ["stringValue44479"]) { + field56549: [Enum2616] +} + +type Object10744 @Directive21(argument61 : "stringValue44483") @Directive44(argument97 : ["stringValue44482"]) { + field56550: Enum2617 + field56551: String +} + +type Object10745 @Directive21(argument61 : "stringValue44486") @Directive44(argument97 : ["stringValue44485"]) { + field56552: [Object10727] + field56553: String + field56554: Boolean +} + +type Object10746 @Directive21(argument61 : "stringValue44488") @Directive44(argument97 : ["stringValue44487"]) { + field56555: [Enum2618] +} + +type Object10747 @Directive21(argument61 : "stringValue44491") @Directive44(argument97 : ["stringValue44490"]) { + field56556: Enum2605 + field56557: Boolean + field56558: Boolean @deprecated +} + +type Object10748 @Directive21(argument61 : "stringValue44493") @Directive44(argument97 : ["stringValue44492"]) { + field56559: Enum2605 + field56560: Enum2619 @deprecated + field56561: Enum2619 +} + +type Object10749 @Directive21(argument61 : "stringValue44496") @Directive44(argument97 : ["stringValue44495"]) { + field56562: [Enum2620] +} + +type Object1075 @Directive22(argument62 : "stringValue5575") @Directive31 @Directive44(argument97 : ["stringValue5576", "stringValue5577"]) { + field6105: String + field6106: String + field6107: String + field6108: String + field6109: Int +} + +type Object10750 @Directive21(argument61 : "stringValue44499") @Directive44(argument97 : ["stringValue44498"]) { + field56563: Enum2605 +} + +type Object10751 @Directive21(argument61 : "stringValue44501") @Directive44(argument97 : ["stringValue44500"]) { + field56564: Enum2621 +} + +type Object10752 @Directive21(argument61 : "stringValue44504") @Directive44(argument97 : ["stringValue44503"]) { + field56565: Enum2622 +} + +type Object10753 @Directive21(argument61 : "stringValue44507") @Directive44(argument97 : ["stringValue44506"]) { + field56566: Enum2623 + field56567: Object10730 @deprecated + field56568: Object10754 +} + +type Object10754 @Directive21(argument61 : "stringValue44510") @Directive44(argument97 : ["stringValue44509"]) { + field56569: Enum2624 + field56570: Object10755 +} + +type Object10755 @Directive21(argument61 : "stringValue44513") @Directive44(argument97 : ["stringValue44512"]) { + field56571: Scalar2! + field56572: String! + field56573: Enum2625! +} + +type Object10756 @Directive21(argument61 : "stringValue44516") @Directive44(argument97 : ["stringValue44515"]) { + field56574: Int +} + +type Object10757 @Directive21(argument61 : "stringValue44518") @Directive44(argument97 : ["stringValue44517"]) { + field56575: Enum2605 +} + +type Object10758 @Directive21(argument61 : "stringValue44520") @Directive44(argument97 : ["stringValue44519"]) { + field56576: String + field56577: [Enum2626] +} + +type Object10759 @Directive21(argument61 : "stringValue44523") @Directive44(argument97 : ["stringValue44522"]) { + field56578: Object10730 @deprecated + field56579: Int + field56580: Enum2627 + field56581: Object10754 +} + +type Object1076 implements Interface76 @Directive21(argument61 : "stringValue5582") @Directive22(argument62 : "stringValue5581") @Directive31 @Directive44(argument97 : ["stringValue5583", "stringValue5584", "stringValue5585"]) @Directive45(argument98 : ["stringValue5586"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union137] + field5221: Boolean + field6111: [Object1077] +} + +type Object10760 @Directive21(argument61 : "stringValue44526") @Directive44(argument97 : ["stringValue44525"]) { + field56582: Object10730 + field56583: Int + field56584: Boolean + field56585: Object10730 +} + +type Object10761 @Directive21(argument61 : "stringValue44528") @Directive44(argument97 : ["stringValue44527"]) { + field56586: Enum2605 + field56587: Enum2628 + field56588: [Enum2629] +} + +type Object10762 @Directive21(argument61 : "stringValue44532") @Directive44(argument97 : ["stringValue44531"]) { + field56589: Enum2624 @deprecated + field56590: Object10754 +} + +type Object10763 @Directive21(argument61 : "stringValue44534") @Directive44(argument97 : ["stringValue44533"]) { + field56591: [Object10727] + field56592: Boolean +} + +type Object10764 @Directive21(argument61 : "stringValue44536") @Directive44(argument97 : ["stringValue44535"]) { + field56593: Enum2605 +} + +type Object10765 @Directive21(argument61 : "stringValue44538") @Directive44(argument97 : ["stringValue44537"]) { + field56594: [Object10727] + field56595: Object10730 + field56596: String +} + +type Object10766 @Directive21(argument61 : "stringValue44540") @Directive44(argument97 : ["stringValue44539"]) { + field56597: [Enum2630] @deprecated + field56598: Enum2630 +} + +type Object10767 @Directive21(argument61 : "stringValue44543") @Directive44(argument97 : ["stringValue44542"]) { + field56599: String + field56600: Boolean + field56601: [Enum2631] +} + +type Object10768 @Directive21(argument61 : "stringValue44546") @Directive44(argument97 : ["stringValue44545"]) { + field56602: String + field56603: Enum2632 +} + +type Object10769 @Directive21(argument61 : "stringValue44549") @Directive44(argument97 : ["stringValue44548"]) { + field56604: String + field56605: Enum2633 + field56606: Enum2634 + field56607: [Enum2634] +} + +type Object1077 @Directive20(argument58 : "stringValue5588", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5587") @Directive31 @Directive44(argument97 : ["stringValue5589", "stringValue5590"]) { + field6112: Object921 + field6113: String + field6114: String + field6115: String + field6116: Object398 + field6117: [Object1078] + field6134: String + field6135: Object923 + field6136: Object923 + field6137: Object923 + field6138: [Object923] + field6139: [Object923] + field6140: [Object923] + field6141: String + field6142: String + field6143: String + field6144: Scalar2 +} + +type Object10770 @Directive21(argument61 : "stringValue44553") @Directive44(argument97 : ["stringValue44552"]) { + field56608: Int + field56609: Enum2635 + field56610: [Enum2636] +} + +type Object10771 @Directive21(argument61 : "stringValue44557") @Directive44(argument97 : ["stringValue44556"]) { + field56611: Object10730 + field56612: Enum2637 + field56613: String + field56614: Int +} + +type Object10772 @Directive21(argument61 : "stringValue44560") @Directive44(argument97 : ["stringValue44559"]) { + field56615: [Enum2638] +} + +type Object10773 @Directive21(argument61 : "stringValue44563") @Directive44(argument97 : ["stringValue44562"]) { + field56617: Scalar2 + field56618: Scalar4 + field56619: Scalar4 + field56620: Scalar2 + field56621: String + field56622: Enum2596 + field56623: Enum2639 + field56624: String + field56625: Boolean +} + +type Object10774 @Directive21(argument61 : "stringValue44566") @Directive44(argument97 : ["stringValue44565"]) { + field56627: Scalar2 + field56628: Scalar4 + field56629: Scalar4 + field56630: Scalar2 + field56631: Scalar2 + field56632: Enum2640 + field56633: Enum2641 +} + +type Object10775 @Directive21(argument61 : "stringValue44570") @Directive44(argument97 : ["stringValue44569"]) { + field56635: Scalar2 + field56636: Scalar4 + field56637: Scalar4 + field56638: Scalar2 + field56639: String + field56640: String + field56641: String + field56642: String +} + +type Object10776 @Directive21(argument61 : "stringValue44572") @Directive44(argument97 : ["stringValue44571"]) { + field56644: Scalar2 + field56645: Scalar4 + field56646: Scalar4 + field56647: Scalar2 + field56648: Enum2574 + field56649: Int + field56650: Enum2642 + field56651: Enum2643 + field56652: Int + field56653: Boolean + field56654: Boolean + field56655: [Object10777] + field56665: [Object10778] + field56673: Union348 +} + +type Object10777 @Directive21(argument61 : "stringValue44576") @Directive44(argument97 : ["stringValue44575"]) { + field56656: Scalar2 + field56657: Scalar4 + field56658: Scalar4 + field56659: Scalar2 + field56660: Enum2644 + field56661: Enum2602 + field56662: Int + field56663: Boolean + field56664: Union347 +} + +type Object10778 @Directive21(argument61 : "stringValue44579") @Directive44(argument97 : ["stringValue44578"]) { + field56666: Scalar2 + field56667: Scalar4 + field56668: Scalar4 + field56669: Scalar2 + field56670: String + field56671: Enum2596 + field56672: [String] +} + +type Object10779 @Directive21(argument61 : "stringValue44582") @Directive44(argument97 : ["stringValue44581"]) { + field56674: String + field56675: [Object10727] + field56676: String + field56677: Object10730 + field56678: Boolean + field56679: Boolean +} + +type Object1078 @Directive20(argument58 : "stringValue5592", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5591") @Directive31 @Directive44(argument97 : ["stringValue5593", "stringValue5594"]) { + field6118: String + field6119: String + field6120: String + field6121: [String] + field6122: String + field6123: String + field6124: [Object1079] + field6132: Boolean + field6133: Boolean +} + +type Object10780 @Directive21(argument61 : "stringValue44584") @Directive44(argument97 : ["stringValue44583"]) { + field56680: String + field56681: [Object10727] + field56682: Boolean +} + +type Object10781 @Directive21(argument61 : "stringValue44586") @Directive44(argument97 : ["stringValue44585"]) { + field56683: String + field56684: [Object10727] + field56685: Boolean + field56686: Boolean + field56687: [Enum2645] + field56688: Boolean +} + +type Object10782 @Directive21(argument61 : "stringValue44589") @Directive44(argument97 : ["stringValue44588"]) { + field56689: String + field56690: [Object10727] + field56691: Enum2646 + field56692: Enum2647 + field56693: Enum2648 +} + +type Object10783 @Directive21(argument61 : "stringValue44594") @Directive44(argument97 : ["stringValue44593"]) { + field56694: String + field56695: [Object10727] + field56696: Boolean + field56697: Int + field56698: Boolean + field56699: Boolean + field56700: Boolean +} + +type Object10784 @Directive21(argument61 : "stringValue44596") @Directive44(argument97 : ["stringValue44595"]) { + field56701: String + field56702: [Object10727] + field56703: Enum2646 + field56704: Enum2649 + field56705: Enum2647 + field56706: [Enum2650] +} + +type Object10785 @Directive21(argument61 : "stringValue44600") @Directive44(argument97 : ["stringValue44599"]) { + field56707: String + field56708: [Object10727] + field56709: [Enum2651] + field56710: String + field56711: Object10730 + field56712: Object10730 + field56713: Object10730 +} + +type Object10786 @Directive21(argument61 : "stringValue44603") @Directive44(argument97 : ["stringValue44602"]) { + field56714: String + field56715: [Object10727] + field56716: Boolean + field56717: Boolean + field56718: Boolean + field56719: Int +} + +type Object10787 @Directive21(argument61 : "stringValue44605") @Directive44(argument97 : ["stringValue44604"]) { + field56721: Scalar2 + field56722: Scalar4 + field56723: Scalar4 + field56724: Scalar2 + field56725: String + field56726: String + field56727: String + field56728: String + field56729: String + field56730: String + field56731: String + field56732: Int + field56733: Boolean + field56734: Object10788 + field56750: [String] + field56751: Int + field56752: Int + field56753: Int + field56754: Int + field56755: Boolean +} + +type Object10788 @Directive21(argument61 : "stringValue44607") @Directive44(argument97 : ["stringValue44606"]) { + field56735: String + field56736: String + field56737: String + field56738: String + field56739: String + field56740: String + field56741: String + field56742: String + field56743: String + field56744: String + field56745: String + field56746: String + field56747: String + field56748: String + field56749: String +} + +type Object10789 @Directive21(argument61 : "stringValue44610") @Directive44(argument97 : ["stringValue44609"]) { + field56757: Scalar2 + field56758: Scalar2 + field56759: Scalar1 + field56760: Enum2652 + field56761: [Object10727] + field56762: Object10730 + field56763: Int +} + +type Object1079 @Directive20(argument58 : "stringValue5596", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5595") @Directive31 @Directive44(argument97 : ["stringValue5597", "stringValue5598"]) { + field6125: String + field6126: String + field6127: String + field6128: String + field6129: String + field6130: Enum292 + field6131: String +} + +type Object10790 @Directive21(argument61 : "stringValue44613") @Directive44(argument97 : ["stringValue44612"]) { + field56764: Scalar2 + field56765: Scalar2 + field56766: Scalar1 +} + +type Object10791 @Directive21(argument61 : "stringValue44615") @Directive44(argument97 : ["stringValue44614"]) { + field56767: Scalar2 + field56768: Scalar2 + field56769: Scalar1 + field56770: [Enum2653] + field56771: [Object10727] + field56772: Object10730 + field56773: Int +} + +type Object10792 @Directive21(argument61 : "stringValue44620") @Directive44(argument97 : ["stringValue44619"]) { + field56778: Enum2656 + field56779: Boolean + field56780: Union350 + field56786: Scalar4 + field56787: Scalar4 + field56788: Scalar3 + field56789: Scalar2 +} + +type Object10793 @Directive21(argument61 : "stringValue44624") @Directive44(argument97 : ["stringValue44623"]) { + field56781: Boolean +} + +type Object10794 @Directive21(argument61 : "stringValue44626") @Directive44(argument97 : ["stringValue44625"]) { + field56782: Enum2657 + field56783: Boolean +} + +type Object10795 @Directive21(argument61 : "stringValue44629") @Directive44(argument97 : ["stringValue44628"]) { + field56784: Boolean +} + +type Object10796 @Directive21(argument61 : "stringValue44631") @Directive44(argument97 : ["stringValue44630"]) { + field56785: Scalar2 +} + +type Object10797 @Directive21(argument61 : "stringValue44633") @Directive44(argument97 : ["stringValue44632"]) { + field56791: Scalar2 + field56792: Object10798 + field56824: Object10799 + field56828: Object10800 + field56832: Scalar1 + field56833: [Object10801] + field56842: Object10802 + field56847: [Object10803] + field56851: [Object10804] + field56866: Scalar2 + field56867: Object10807 +} + +type Object10798 @Directive21(argument61 : "stringValue44635") @Directive44(argument97 : ["stringValue44634"]) { + field56793: Scalar2 + field56794: Enum2658 + field56795: Scalar2 + field56796: Enum2658 + field56797: Scalar2 + field56798: Enum2659 + field56799: Scalar2 + field56800: Scalar2 + field56801: Int + field56802: String + field56803: String + field56804: String + field56805: Boolean + field56806: Scalar1 + field56807: Boolean + field56808: Scalar4 + field56809: Scalar4 + field56810: Scalar4 + field56811: Scalar4 + field56812: Scalar4 + field56813: Scalar4 + field56814: [Enum2660] + field56815: Boolean + field56816: Boolean + field56817: Boolean + field56818: Boolean + field56819: Boolean + field56820: Boolean + field56821: Boolean + field56822: Boolean + field56823: [Enum2661] +} + +type Object10799 @Directive21(argument61 : "stringValue44641") @Directive44(argument97 : ["stringValue44640"]) { + field56825: String + field56826: Scalar4 + field56827: Scalar4 +} + +type Object108 @Directive21(argument61 : "stringValue409") @Directive44(argument97 : ["stringValue408"]) { + field723: String! + field724: String + field725: Enum62! +} + +type Object1080 implements Interface76 @Directive21(argument61 : "stringValue5607") @Directive22(argument62 : "stringValue5606") @Directive31 @Directive44(argument97 : ["stringValue5608", "stringValue5609", "stringValue5610"]) @Directive45(argument98 : ["stringValue5611"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union138] + field5221: Boolean + field6149: [Object1081] +} + +type Object10800 @Directive21(argument61 : "stringValue44643") @Directive44(argument97 : ["stringValue44642"]) { + field56829: Enum2662 + field56830: String + field56831: Scalar2 +} + +type Object10801 @Directive21(argument61 : "stringValue44646") @Directive44(argument97 : ["stringValue44645"]) { + field56834: Scalar2 + field56835: Scalar2 + field56836: Int + field56837: Int + field56838: Scalar4 + field56839: Scalar4 + field56840: Enum2663 + field56841: Enum2664 +} + +type Object10802 @Directive21(argument61 : "stringValue44650") @Directive44(argument97 : ["stringValue44649"]) { + field56843: String + field56844: Boolean + field56845: Boolean + field56846: Boolean +} + +type Object10803 @Directive21(argument61 : "stringValue44652") @Directive44(argument97 : ["stringValue44651"]) { + field56848: Scalar2 + field56849: Enum2665 + field56850: Boolean +} + +type Object10804 @Directive21(argument61 : "stringValue44655") @Directive44(argument97 : ["stringValue44654"]) { + field56852: Scalar2 + field56853: Object10803 + field56854: Object10800 + field56855: Union351 +} + +type Object10805 @Directive21(argument61 : "stringValue44658") @Directive44(argument97 : ["stringValue44657"]) { + field56856: String + field56857: String + field56858: String + field56859: String + field56860: String + field56861: Scalar2 +} + +type Object10806 @Directive21(argument61 : "stringValue44660") @Directive44(argument97 : ["stringValue44659"]) { + field56862: String + field56863: String + field56864: String + field56865: Scalar2 +} + +type Object10807 @Directive21(argument61 : "stringValue44662") @Directive44(argument97 : ["stringValue44661"]) { + field56868: Enum2666! + field56869: Int! + field56870: Int! +} + +type Object10808 @Directive21(argument61 : "stringValue44665") @Directive44(argument97 : ["stringValue44664"]) { + field56872: String! + field56873: Scalar2! + field56874: Object10809! + field57186: Int! + field57187: Scalar2 + field57188: Object10814 @deprecated + field57189: [Object10809] + field57190: String + field57191: [Object10809] + field57192: Scalar4 + field57193: String + field57194: Scalar2 +} + +type Object10809 @Directive21(argument61 : "stringValue44667") @Directive44(argument97 : ["stringValue44666"]) { + field56875: String! + field56876: String! + field56877: Int + field56878: Enum2667! + field56879: Enum2668 + field56880: Enum2669! + field56881: [Object10810] + field57170: Object10861 + field57182: Int + field57183: String + field57184: Scalar4 + field57185: Boolean +} + +type Object1081 @Directive20(argument58 : "stringValue5616", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5615") @Directive31 @Directive44(argument97 : ["stringValue5617", "stringValue5618"]) { + field6145: String + field6146: String + field6147: String + field6148: Object398 +} + +type Object10810 @Directive21(argument61 : "stringValue44672") @Directive44(argument97 : ["stringValue44671"]) { + field56882: String! + field56883: String! + field56884: Enum2670! + field56885: String + field56886: Enum2671! + field56887: String + field56888: [Object10811] + field56904: String + field56905: Scalar4 + field56906: Scalar4 + field56907: Object10814 + field56922: Object10815 + field57042: Object10841 + field57046: Object10842 + field57149: Object10855 +} + +type Object10811 @Directive21(argument61 : "stringValue44676") @Directive44(argument97 : ["stringValue44675"]) { + field56889: String! + field56890: String! + field56891: Enum2672! + field56892: Int! + field56893: [Object10812] + field56900: Scalar2 + field56901: Object10813 +} + +type Object10812 @Directive21(argument61 : "stringValue44679") @Directive44(argument97 : ["stringValue44678"]) { + field56894: String! + field56895: String! + field56896: Enum2673! + field56897: Object5785! + field56898: Object5785! + field56899: Object5785 +} + +type Object10813 @Directive21(argument61 : "stringValue44682") @Directive44(argument97 : ["stringValue44681"]) { + field56902: Scalar3 + field56903: Scalar2 +} + +type Object10814 @Directive21(argument61 : "stringValue44684") @Directive44(argument97 : ["stringValue44683"]) { + field56908: String! + field56909: String! + field56910: Float! + field56911: Float! + field56912: Float! + field56913: Float! + field56914: Float + field56915: String + field56916: Float + field56917: Float + field56918: Float + field56919: Float + field56920: Float + field56921: Scalar2 +} + +type Object10815 @Directive21(argument61 : "stringValue44686") @Directive44(argument97 : ["stringValue44685"]) { + field56923: String! + field56924: Enum2671! + field56925: Object10816 + field56939: String + field56940: [Object10817]! + field56977: String + field56978: String + field56979: Object10828 +} + +type Object10816 @Directive21(argument61 : "stringValue44688") @Directive44(argument97 : ["stringValue44687"]) { + field56926: String + field56927: Float + field56928: Float + field56929: Float + field56930: String + field56931: Float + field56932: Float + field56933: String + field56934: Float + field56935: Float + field56936: Float + field56937: Float + field56938: Float +} + +type Object10817 @Directive21(argument61 : "stringValue44690") @Directive44(argument97 : ["stringValue44689"]) { + field56941: String! + field56942: Enum2672! + field56943: Object10818 + field56948: [Object10820]! + field56976: Int! +} + +type Object10818 @Directive21(argument61 : "stringValue44692") @Directive44(argument97 : ["stringValue44691"]) { + field56944: Object10819 +} + +type Object10819 @Directive21(argument61 : "stringValue44694") @Directive44(argument97 : ["stringValue44693"]) { + field56945: Int + field56946: Scalar3 + field56947: Int +} + +type Object1082 implements Interface76 @Directive21(argument61 : "stringValue5620") @Directive22(argument62 : "stringValue5619") @Directive31 @Directive44(argument97 : ["stringValue5621", "stringValue5622", "stringValue5623"]) @Directive45(argument98 : ["stringValue5624"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field6150: Object1083 +} + +type Object10820 @Directive21(argument61 : "stringValue44696") @Directive44(argument97 : ["stringValue44695"]) { + field56949: String! + field56950: Enum2673! + field56951: Object5785! + field56952: Object5785! + field56953: Object5785 + field56954: Object10821 + field56975: String +} + +type Object10821 @Directive21(argument61 : "stringValue44698") @Directive44(argument97 : ["stringValue44697"]) { + field56955: Object10822 + field56960: Object10823 + field56967: String + field56968: Object10825 +} + +type Object10822 @Directive21(argument61 : "stringValue44700") @Directive44(argument97 : ["stringValue44699"]) { + field56956: String + field56957: Scalar3 + field56958: Int + field56959: Enum2674 +} + +type Object10823 @Directive21(argument61 : "stringValue44703") @Directive44(argument97 : ["stringValue44702"]) { + field56961: [Object10824] +} + +type Object10824 @Directive21(argument61 : "stringValue44705") @Directive44(argument97 : ["stringValue44704"]) { + field56962: Enum2673 + field56963: Object5785! + field56964: Object5785! + field56965: Object5785 + field56966: String +} + +type Object10825 @Directive21(argument61 : "stringValue44707") @Directive44(argument97 : ["stringValue44706"]) { + field56969: Enum2675 + field56970: Object10826 + field56972: Scalar2 @deprecated + field56973: Object10827 +} + +type Object10826 @Directive21(argument61 : "stringValue44710") @Directive44(argument97 : ["stringValue44709"]) { + field56971: Int +} + +type Object10827 @Directive21(argument61 : "stringValue44712") @Directive44(argument97 : ["stringValue44711"]) { + field56974: Int +} + +type Object10828 @Directive21(argument61 : "stringValue44714") @Directive44(argument97 : ["stringValue44713"]) { + field56980: Object10829! + field56991: [Object10829]! + field56992: Object10831 + field57029: Object10829 + field57030: Object10837 + field57040: Object10840 +} + +type Object10829 @Directive21(argument61 : "stringValue44716") @Directive44(argument97 : ["stringValue44715"]) { + field56981: String! + field56982: Object10830! + field56986: String + field56987: String + field56988: String + field56989: [Object10829]! + field56990: String +} + +type Object1083 @Directive20(argument58 : "stringValue5626", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5625") @Directive31 @Directive44(argument97 : ["stringValue5627", "stringValue5628"]) { + field6151: String + field6152: String + field6153: String + field6154: String +} + +type Object10830 @Directive21(argument61 : "stringValue44718") @Directive44(argument97 : ["stringValue44717"]) { + field56983: String! + field56984: Scalar2! + field56985: String! +} + +type Object10831 @Directive21(argument61 : "stringValue44720") @Directive44(argument97 : ["stringValue44719"]) { + field56993: Object10832 + field57020: Object10836 +} + +type Object10832 @Directive21(argument61 : "stringValue44722") @Directive44(argument97 : ["stringValue44721"]) { + field56994: Object10833 + field57000: Object10833 + field57001: Object10833 + field57002: Float + field57003: Object10833 + field57004: Object10835 + field57018: Object10833 + field57019: Object10833 +} + +type Object10833 @Directive21(argument61 : "stringValue44724") @Directive44(argument97 : ["stringValue44723"]) { + field56995: Object10834! + field56999: String +} + +type Object10834 @Directive21(argument61 : "stringValue44726") @Directive44(argument97 : ["stringValue44725"]) { + field56996: Float! + field56997: String! + field56998: Scalar2 +} + +type Object10835 @Directive21(argument61 : "stringValue44728") @Directive44(argument97 : ["stringValue44727"]) { + field57005: Enum2676 + field57006: String + field57007: Boolean + field57008: Boolean + field57009: Int + field57010: String + field57011: Scalar2 + field57012: String + field57013: Int + field57014: String + field57015: Float + field57016: Int + field57017: Enum2677 +} + +type Object10836 @Directive21(argument61 : "stringValue44732") @Directive44(argument97 : ["stringValue44731"]) { + field57021: [Object10835] + field57022: Object10833 + field57023: Object10833 + field57024: Object10833 + field57025: Object10833 + field57026: Object10833 + field57027: Object10833 + field57028: String +} + +type Object10837 @Directive21(argument61 : "stringValue44734") @Directive44(argument97 : ["stringValue44733"]) { + field57031: Object10838 + field57039: [Object10829] +} + +type Object10838 @Directive21(argument61 : "stringValue44736") @Directive44(argument97 : ["stringValue44735"]) { + field57032: String! + field57033: String + field57034: [Object10839]! +} + +type Object10839 @Directive21(argument61 : "stringValue44738") @Directive44(argument97 : ["stringValue44737"]) { + field57035: String! + field57036: String! + field57037: String! + field57038: String +} + +type Object1084 implements Interface76 @Directive21(argument61 : "stringValue5630") @Directive22(argument62 : "stringValue5629") @Directive31 @Directive44(argument97 : ["stringValue5631", "stringValue5632", "stringValue5633"]) @Directive45(argument98 : ["stringValue5634"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union139] + field5221: Boolean + field6189: [Object1085] +} + +type Object10840 @Directive21(argument61 : "stringValue44740") @Directive44(argument97 : ["stringValue44739"]) { + field57041: Boolean +} + +type Object10841 @Directive21(argument61 : "stringValue44742") @Directive44(argument97 : ["stringValue44741"]) { + field57043: String! + field57044: String + field57045: Scalar2 +} + +type Object10842 @Directive21(argument61 : "stringValue44744") @Directive44(argument97 : ["stringValue44743"]) { + field57047: Object10843 + field57142: Boolean + field57143: String + field57144: Scalar4 + field57145: String + field57146: String + field57147: String + field57148: Scalar4 +} + +type Object10843 @Directive21(argument61 : "stringValue44746") @Directive44(argument97 : ["stringValue44745"]) { + field57048: Boolean! + field57049: Scalar4 + field57050: [Object10844] +} + +type Object10844 @Directive21(argument61 : "stringValue44748") @Directive44(argument97 : ["stringValue44747"]) { + field57051: Union352! + field57052: Enum2678! + field57053: Union353 + field57141: Enum2684 +} + +type Object10845 @Directive21(argument61 : "stringValue44753") @Directive44(argument97 : ["stringValue44752"]) { + field57054: Scalar3! + field57055: Scalar3! + field57056: Int! + field57057: Int! + field57058: String! + field57059: [Object10846] + field57074: Int! + field57075: Boolean! + field57076: String + field57077: Boolean! + field57078: Object10848! + field57085: Boolean! +} + +type Object10846 @Directive21(argument61 : "stringValue44755") @Directive44(argument97 : ["stringValue44754"]) { + field57060: String! + field57061: String + field57062: String + field57063: String + field57064: String + field57065: Object10847 + field57072: String + field57073: String +} + +type Object10847 @Directive21(argument61 : "stringValue44757") @Directive44(argument97 : ["stringValue44756"]) { + field57066: String + field57067: String + field57068: String + field57069: String + field57070: String + field57071: String +} + +type Object10848 @Directive21(argument61 : "stringValue44759") @Directive44(argument97 : ["stringValue44758"]) { + field57079: String! + field57080: String + field57081: String + field57082: Object10847 + field57083: String + field57084: String +} + +type Object10849 @Directive21(argument61 : "stringValue44761") @Directive44(argument97 : ["stringValue44760"]) { + field57086: Scalar2! + field57087: Union352 + field57088: Union352 + field57089: Enum2679! + field57090: String! + field57091: Enum2680 + field57092: String + field57093: Scalar2 + field57094: String + field57095: Scalar2 + field57096: String +} + +type Object1085 @Directive20(argument58 : "stringValue5639", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5638") @Directive31 @Directive44(argument97 : ["stringValue5640", "stringValue5641"]) { + field6155: Object921 + field6156: String + field6157: String + field6158: String + field6159: String @deprecated + field6160: String + field6161: Object1086 + field6168: Object923 @deprecated + field6169: Object900 + field6170: String + field6171: String @deprecated + field6172: Object1086 + field6173: Object914 + field6174: Object398 + field6175: Object1086 + field6176: String + field6177: Scalar2 + field6178: String + field6179: String + field6180: String + field6181: String + field6182: [Object992] + field6183: Object914 + field6184: Boolean + field6185: [Object1087] +} + +type Object10850 @Directive21(argument61 : "stringValue44765") @Directive44(argument97 : ["stringValue44764"]) { + field57097: Scalar2! + field57098: Scalar2! + field57099: Scalar2! + field57100: Int! + field57101: Object10851! + field57104: Object10851! + field57105: Scalar4 + field57106: Scalar4 + field57107: Object10851 + field57108: Object10851 + field57109: Object10851 + field57110: Object10851 +} + +type Object10851 @Directive21(argument61 : "stringValue44767") @Directive44(argument97 : ["stringValue44766"]) { + field57102: Scalar2! + field57103: String! +} + +type Object10852 @Directive21(argument61 : "stringValue44769") @Directive44(argument97 : ["stringValue44768"]) { + field57111: Object10851 + field57112: Object10844 + field57113: Scalar4 +} + +type Object10853 @Directive21(argument61 : "stringValue44771") @Directive44(argument97 : ["stringValue44770"]) { + field57114: Scalar2! + field57115: Scalar2! + field57116: Scalar2! + field57117: Scalar3! + field57118: Int! + field57119: Int! + field57120: Object10851 + field57121: Object10851 + field57122: Object10851 + field57123: Object10851 + field57124: Object10851 + field57125: Scalar4 + field57126: String + field57127: String + field57128: String + field57129: Object10851 + field57130: Object10851 + field57131: Enum2681 + field57132: Enum2682 +} + +type Object10854 @Directive21(argument61 : "stringValue44775") @Directive44(argument97 : ["stringValue44774"]) { + field57133: Enum2683! + field57134: Scalar2! + field57135: Scalar2! + field57136: Scalar2! + field57137: Object10851 + field57138: Object10844 + field57139: Scalar4 + field57140: String +} + +type Object10855 @Directive21(argument61 : "stringValue44779") @Directive44(argument97 : ["stringValue44778"]) { + field57150: String! + field57151: String! + field57152: Enum2685! + field57153: Object10856 + field57164: String! + field57165: [Object10860]! +} + +type Object10856 @Directive21(argument61 : "stringValue44782") @Directive44(argument97 : ["stringValue44781"]) { + field57154: Object10857 + field57159: Object10858 + field57162: Object10859 +} + +type Object10857 @Directive21(argument61 : "stringValue44784") @Directive44(argument97 : ["stringValue44783"]) { + field57155: Int + field57156: Enum2686 + field57157: Int + field57158: Scalar1 +} + +type Object10858 @Directive21(argument61 : "stringValue44787") @Directive44(argument97 : ["stringValue44786"]) { + field57160: Int + field57161: Enum2687 +} + +type Object10859 @Directive21(argument61 : "stringValue44790") @Directive44(argument97 : ["stringValue44789"]) { + field57163: Int +} + +type Object1086 @Directive20(argument58 : "stringValue5643", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5642") @Directive31 @Directive44(argument97 : ["stringValue5644", "stringValue5645"]) { + field6162: String + field6163: Scalar2 + field6164: String + field6165: String + field6166: String + field6167: Float +} + +type Object10860 @Directive21(argument61 : "stringValue44792") @Directive44(argument97 : ["stringValue44791"]) { + field57166: String! + field57167: String! + field57168: Scalar2! + field57169: Scalar4! +} + +type Object10861 @Directive21(argument61 : "stringValue44794") @Directive44(argument97 : ["stringValue44793"]) { + field57171: String! + field57172: String! + field57173: Enum2685! + field57174: Object10856 + field57175: String! + field57176: [Object10862]! +} + +type Object10862 @Directive21(argument61 : "stringValue44796") @Directive44(argument97 : ["stringValue44795"]) { + field57177: String! + field57178: String! + field57179: Scalar2! + field57180: Scalar4! + field57181: Boolean! +} + +type Object10863 @Directive21(argument61 : "stringValue44798") @Directive44(argument97 : ["stringValue44797"]) { + field57196: String + field57197: Object5785 + field57198: Object5785 + field57199: String + field57200: String + field57201: String + field57202: String + field57203: String + field57204: String + field57205: String + field57206: String + field57207: String +} + +type Object10864 @Directive21(argument61 : "stringValue44800") @Directive44(argument97 : ["stringValue44799"]) { + field57209: String + field57210: String +} + +type Object10865 @Directive21(argument61 : "stringValue44802") @Directive44(argument97 : ["stringValue44801"]) { + field57212: Boolean + field57213: [String!] + field57214: String + field57215: Boolean + field57216: Boolean + field57217: String + field57218: Object5741 +} + +type Object10866 @Directive21(argument61 : "stringValue44804") @Directive44(argument97 : ["stringValue44803"]) { + field57220: String + field57221: String +} + +type Object10867 @Directive21(argument61 : "stringValue44806") @Directive44(argument97 : ["stringValue44805"]) { + field57224: Scalar2 + field57225: String + field57226: Int + field57227: String + field57228: [Object10868] +} + +type Object10868 @Directive21(argument61 : "stringValue44808") @Directive44(argument97 : ["stringValue44807"]) { + field57229: String + field57230: Int +} + +type Object10869 @Directive21(argument61 : "stringValue44810") @Directive44(argument97 : ["stringValue44809"]) { + field57233: String + field57234: String + field57235: String + field57236: String + field57237: String + field57238: String +} + +type Object1087 @Directive20(argument58 : "stringValue5647", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5646") @Directive31 @Directive44(argument97 : ["stringValue5648", "stringValue5649"]) { + field6186: String + field6187: String + field6188: String +} + +type Object10870 @Directive21(argument61 : "stringValue44812") @Directive44(argument97 : ["stringValue44811"]) { + field57240: Scalar2 + field57241: String + field57242: String + field57243: String + field57244: String + field57245: String + field57246: String + field57247: Float + field57248: Float + field57249: [String] + field57250: String +} + +type Object10871 @Directive21(argument61 : "stringValue44820") @Directive44(argument97 : ["stringValue44819"]) { + field57258: [Object10698!]! +} + +type Object10872 @Directive21(argument61 : "stringValue44826") @Directive44(argument97 : ["stringValue44825"]) { + field57260: [Object10698!]! +} + +type Object10873 @Directive21(argument61 : "stringValue44832") @Directive44(argument97 : ["stringValue44831"]) { + field57262: [Object10698] @deprecated + field57263: [Object10874!]! +} + +type Object10874 @Directive21(argument61 : "stringValue44834") @Directive44(argument97 : ["stringValue44833"]) { + field57264: Scalar2 + field57265: String + field57266: String + field57267: String + field57268: String + field57269: String + field57270: String @deprecated + field57271: Int + field57272: String + field57273: String + field57274: String + field57275: Enum2573 + field57276: String +} + +type Object10875 @Directive21(argument61 : "stringValue44839") @Directive44(argument97 : ["stringValue44838"]) { + field57278: Object5740 + field57279: Object5778 +} + +type Object10876 @Directive21(argument61 : "stringValue44844") @Directive44(argument97 : ["stringValue44843"]) { + field57281: Enum2690! +} + +type Object10877 @Directive21(argument61 : "stringValue44851") @Directive44(argument97 : ["stringValue44850"]) { + field57283: Object5740 + field57284: Boolean + field57285: Boolean +} + +type Object10878 @Directive21(argument61 : "stringValue44857") @Directive44(argument97 : ["stringValue44856"]) { + field57287: String +} + +type Object10879 @Directive21(argument61 : "stringValue44863") @Directive44(argument97 : ["stringValue44862"]) { + field57289: [Object5740!]! +} + +type Object1088 implements Interface76 @Directive21(argument61 : "stringValue5651") @Directive22(argument62 : "stringValue5650") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue5652", "stringValue5653", "stringValue5654"]) @Directive45(argument98 : ["stringValue5655"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union140] + field5221: Boolean + field5281: Object909 + field5421: String @deprecated + field6190: Object421 + field6191: [Object746] +} + +type Object10880 @Directive21(argument61 : "stringValue44869") @Directive44(argument97 : ["stringValue44868"]) { + field57291: [Object5740!]! +} + +type Object10881 @Directive21(argument61 : "stringValue44875") @Directive44(argument97 : ["stringValue44874"]) { + field57293: Scalar1! +} + +type Object10882 @Directive21(argument61 : "stringValue44881") @Directive44(argument97 : ["stringValue44880"]) { + field57295: Int! + field57296: Int! + field57297: Int! +} + +type Object10883 @Directive21(argument61 : "stringValue44887") @Directive44(argument97 : ["stringValue44886"]) { + field57299: Object10884! +} + +type Object10884 @Directive21(argument61 : "stringValue44889") @Directive44(argument97 : ["stringValue44888"]) { + field57300: Int! + field57301: Int! + field57302: Int! +} + +type Object10885 @Directive21(argument61 : "stringValue44895") @Directive44(argument97 : ["stringValue44894"]) { + field57304: Int! + field57305: Int! + field57306: Int! + field57307: Int! +} + +type Object10886 @Directive21(argument61 : "stringValue44905") @Directive44(argument97 : ["stringValue44904"]) { + field57310: Object5778 + field57311: [Object5788!]! +} + +type Object10887 @Directive21(argument61 : "stringValue44911") @Directive44(argument97 : ["stringValue44910"]) { + field57313: [Object10888!]! +} + +type Object10888 @Directive21(argument61 : "stringValue44913") @Directive44(argument97 : ["stringValue44912"]) { + field57314: Scalar2 + field57315: Scalar2 + field57316: String + field57317: Boolean + field57318: Int @deprecated + field57319: Scalar4 + field57320: Scalar4 + field57321: Scalar4 + field57322: Scalar4 +} + +type Object10889 @Directive21(argument61 : "stringValue44919") @Directive44(argument97 : ["stringValue44918"]) { + field57324: [Object5795!]! + field57325: [Object5790!]! +} + +type Object1089 implements Interface76 @Directive21(argument61 : "stringValue5660") @Directive22(argument62 : "stringValue5659") @Directive31 @Directive44(argument97 : ["stringValue5661", "stringValue5662", "stringValue5663"]) @Directive45(argument98 : ["stringValue5664"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union141] + field5221: Boolean + field5421: String @deprecated + field6232: [Object1090] +} + +type Object10890 @Directive21(argument61 : "stringValue44925") @Directive44(argument97 : ["stringValue44924"]) { + field57327: [Object10891!]! +} + +type Object10891 @Directive21(argument61 : "stringValue44927") @Directive44(argument97 : ["stringValue44926"]) { + field57328: Enum1452! + field57329: String! + field57330: String + field57331: String + field57332: Scalar4 + field57333: [Object5742!]! +} + +type Object10892 @Directive21(argument61 : "stringValue44933") @Directive44(argument97 : ["stringValue44932"]) { + field57335: Enum1464 + field57336: String + field57337: String + field57338: Boolean + field57339: Boolean +} + +type Object10893 @Directive21(argument61 : "stringValue44938") @Directive44(argument97 : ["stringValue44937"]) { + field57341: Boolean! +} + +type Object10894 @Directive21(argument61 : "stringValue44944") @Directive44(argument97 : ["stringValue44943"]) { + field57343: Boolean! +} + +type Object10895 @Directive21(argument61 : "stringValue44950") @Directive44(argument97 : ["stringValue44949"]) { + field57345: Object10896 +} + +type Object10896 @Directive21(argument61 : "stringValue44952") @Directive44(argument97 : ["stringValue44951"]) { + field57346: Scalar2 + field57347: Object5740 + field57348: String + field57349: String + field57350: [Object5742] + field57351: Int +} + +type Object10897 @Directive21(argument61 : "stringValue44958") @Directive44(argument97 : ["stringValue44957"]) { + field57353: String + field57354: Object10898 +} + +type Object10898 @Directive21(argument61 : "stringValue44960") @Directive44(argument97 : ["stringValue44959"]) { + field57355: String! + field57356: String! + field57357: String! + field57358: String! +} + +type Object10899 @Directive21(argument61 : "stringValue44966") @Directive44(argument97 : ["stringValue44965"]) { + field57360: [Object10699!]! +} + +type Object109 @Directive21(argument61 : "stringValue412") @Directive44(argument97 : ["stringValue411"]) { + field730: String! + field731: String! + field732: String! +} + +type Object1090 @Directive20(argument58 : "stringValue5669", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5668") @Directive31 @Directive44(argument97 : ["stringValue5670", "stringValue5671"]) { + field6192: Object780 + field6193: Float + field6194: Int + field6195: Object1091 + field6225: Scalar2! + field6226: Object750 + field6227: Object1094 + field6231: String +} + +type Object10900 @Directive21(argument61 : "stringValue44972") @Directive44(argument97 : ["stringValue44971"]) { + field57362: [Object10901!]! +} + +type Object10901 @Directive21(argument61 : "stringValue44974") @Directive44(argument97 : ["stringValue44973"]) { + field57363: Scalar2! + field57364: Object5740! + field57365: Object5837 + field57366: String! +} + +type Object10902 @Directive21(argument61 : "stringValue44980") @Directive44(argument97 : ["stringValue44979"]) { + field57368: Object10903 + field57372: Object5741 + field57373: Object5778 + field57374: Boolean + field57375: Object5817 +} + +type Object10903 @Directive21(argument61 : "stringValue44982") @Directive44(argument97 : ["stringValue44981"]) { + field57369: String + field57370: String + field57371: String +} + +type Object10904 @Directive21(argument61 : "stringValue44988") @Directive44(argument97 : ["stringValue44987"]) { + field57377: Scalar1! +} + +type Object10905 @Directive21(argument61 : "stringValue44993") @Directive44(argument97 : ["stringValue44992"]) { + field57379: Boolean! +} + +type Object10906 @Directive21(argument61 : "stringValue44998") @Directive44(argument97 : ["stringValue44997"]) { + field57381: Boolean! +} + +type Object10907 @Directive21(argument61 : "stringValue45004") @Directive44(argument97 : ["stringValue45003"]) { + field57383: Boolean! + field57384: String + field57385: String +} + +type Object10908 @Directive21(argument61 : "stringValue45009") @Directive44(argument97 : ["stringValue45008"]) { + field57387: Boolean! +} + +type Object10909 @Directive21(argument61 : "stringValue45015") @Directive44(argument97 : ["stringValue45014"]) { + field57389: Object10910! + field57392: Object10911! + field57396: String +} + +type Object1091 @Directive20(argument58 : "stringValue5673", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5672") @Directive31 @Directive44(argument97 : ["stringValue5674", "stringValue5675"]) { + field6196: Object1092 + field6205: Object1093 + field6223: Object1092 + field6224: Object1093 +} + +type Object10910 @Directive21(argument61 : "stringValue45017") @Directive44(argument97 : ["stringValue45016"]) { + field57390: Boolean! + field57391: String +} + +type Object10911 @Directive21(argument61 : "stringValue45019") @Directive44(argument97 : ["stringValue45018"]) { + field57393: Boolean! + field57394: Scalar4 + field57395: Scalar4 +} + +type Object10912 @Directive21(argument61 : "stringValue45025") @Directive44(argument97 : ["stringValue45024"]) { + field57398: Boolean! + field57399: [Enum2691]! +} + +type Object10913 @Directive21(argument61 : "stringValue45032") @Directive44(argument97 : ["stringValue45031"]) { + field57401: Boolean! + field57402: Boolean! + field57403: Boolean! + field57404: Object10914 + field57409: String + field57410: [Object10916] +} + +type Object10914 @Directive21(argument61 : "stringValue45034") @Directive44(argument97 : ["stringValue45033"]) { + field57405: Object5785! + field57406: [Object10915!]! +} + +type Object10915 @Directive21(argument61 : "stringValue45036") @Directive44(argument97 : ["stringValue45035"]) { + field57407: Enum1477! + field57408: Scalar4! +} + +type Object10916 @Directive21(argument61 : "stringValue45038") @Directive44(argument97 : ["stringValue45037"]) { + field57411: Object10917 + field57727: Object10954 + field57848: Object10980 + field57853: Boolean + field57854: Object10981 + field57863: Object10982 + field57910: Object10988 +} + +type Object10917 @Directive21(argument61 : "stringValue45040") @Directive44(argument97 : ["stringValue45039"]) { + field57412: [String] + field57413: String + field57414: Float + field57415: String + field57416: String + field57417: Int + field57418: Int + field57419: String + field57420: Object10918 + field57423: String + field57424: [String] + field57425: String + field57426: String + field57427: Scalar2 + field57428: Boolean + field57429: Boolean + field57430: Boolean + field57431: Boolean + field57432: Boolean + field57433: Boolean + field57434: Object10919 + field57452: Float + field57453: Float + field57454: String + field57455: String + field57456: Object10922 + field57461: String + field57462: String + field57463: Int + field57464: Int + field57465: String + field57466: [String] + field57467: Object10923 + field57477: String + field57478: String + field57479: Scalar2 + field57480: Int + field57481: String + field57482: String + field57483: String + field57484: String + field57485: Boolean + field57486: String + field57487: Float + field57488: Int + field57489: Object10924 + field57498: Object10919 + field57499: String + field57500: String + field57501: String + field57502: String + field57503: [Object10925] + field57510: String + field57511: String + field57512: String + field57513: String + field57514: [Int] + field57515: [String] + field57516: [Object10926] + field57526: [String] + field57527: String + field57528: [String] + field57529: [Object10927] + field57553: Float + field57554: Object10930 + field57579: Enum2694 + field57580: [Object10934] + field57588: String + field57589: Boolean + field57590: String + field57591: Int + field57592: Int + field57593: Object10935 + field57595: [Object10936] + field57606: Object10937 + field57609: Object10938 + field57615: Enum2697 + field57616: [Object10921] + field57617: Object10931 + field57618: Enum2698 + field57619: String + field57620: String + field57621: [Object10939] + field57632: [Scalar2] + field57633: String + field57634: [Object10940] + field57681: [Object10940] + field57682: Enum2584 + field57683: [Enum2705] + field57684: Object10946 + field57687: [Object10947] + field57698: Object10951 + field57702: [Object10922] + field57703: Boolean + field57704: String + field57705: Int + field57706: String + field57707: Scalar2 + field57708: Boolean + field57709: Float + field57710: [String] + field57711: String + field57712: String + field57713: String + field57714: Object10952 + field57719: Object10953 + field57723: Object10921 + field57724: Enum2575 + field57725: Scalar2 + field57726: String +} + +type Object10918 @Directive21(argument61 : "stringValue45042") @Directive44(argument97 : ["stringValue45041"]) { + field57421: String + field57422: Float +} + +type Object10919 @Directive21(argument61 : "stringValue45044") @Directive44(argument97 : ["stringValue45043"]) { + field57435: Object10920 + field57439: [String] + field57440: String + field57441: [Object10921] +} + +type Object1092 @Directive20(argument58 : "stringValue5677", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5676") @Directive31 @Directive44(argument97 : ["stringValue5678", "stringValue5679"]) { + field6197: String + field6198: Scalar2 + field6199: String + field6200: String + field6201: String + field6202: String + field6203: Boolean + field6204: Boolean +} + +type Object10920 @Directive21(argument61 : "stringValue45046") @Directive44(argument97 : ["stringValue45045"]) { + field57436: String + field57437: String + field57438: String +} + +type Object10921 @Directive21(argument61 : "stringValue45048") @Directive44(argument97 : ["stringValue45047"]) { + field57442: String + field57443: String + field57444: String + field57445: String + field57446: String + field57447: String + field57448: String + field57449: String + field57450: String + field57451: Enum2692 +} + +type Object10922 @Directive21(argument61 : "stringValue45051") @Directive44(argument97 : ["stringValue45050"]) { + field57457: String + field57458: String + field57459: String + field57460: String +} + +type Object10923 @Directive21(argument61 : "stringValue45053") @Directive44(argument97 : ["stringValue45052"]) { + field57468: Scalar2 + field57469: String + field57470: String + field57471: String + field57472: String + field57473: String + field57474: String + field57475: String + field57476: String +} + +type Object10924 @Directive21(argument61 : "stringValue45055") @Directive44(argument97 : ["stringValue45054"]) { + field57490: String + field57491: Boolean + field57492: Scalar2 + field57493: Boolean + field57494: String + field57495: String + field57496: String + field57497: Scalar4 +} + +type Object10925 @Directive21(argument61 : "stringValue45057") @Directive44(argument97 : ["stringValue45056"]) { + field57504: String + field57505: String + field57506: Boolean + field57507: String + field57508: String + field57509: String +} + +type Object10926 @Directive21(argument61 : "stringValue45059") @Directive44(argument97 : ["stringValue45058"]) { + field57517: String + field57518: String + field57519: Boolean + field57520: String + field57521: String + field57522: String + field57523: String + field57524: [String] + field57525: Scalar2 +} + +type Object10927 @Directive21(argument61 : "stringValue45061") @Directive44(argument97 : ["stringValue45060"]) { + field57530: String + field57531: String + field57532: Object3489 + field57533: String + field57534: String + field57535: String + field57536: String + field57537: String + field57538: [Object10928] @deprecated + field57549: String + field57550: String + field57551: String + field57552: Enum2693 +} + +type Object10928 @Directive21(argument61 : "stringValue45063") @Directive44(argument97 : ["stringValue45062"]) { + field57539: String + field57540: String + field57541: String + field57542: String + field57543: String + field57544: String + field57545: Object10929 +} + +type Object10929 @Directive21(argument61 : "stringValue45065") @Directive44(argument97 : ["stringValue45064"]) { + field57546: String + field57547: String + field57548: String +} + +type Object1093 @Directive20(argument58 : "stringValue5681", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5680") @Directive31 @Directive44(argument97 : ["stringValue5682", "stringValue5683"]) { + field6206: String + field6207: String + field6208: String + field6209: Scalar2 + field6210: String + field6211: String + field6212: String + field6213: String + field6214: String + field6215: String + field6216: String + field6217: String + field6218: String + field6219: String + field6220: String + field6221: String + field6222: Boolean +} + +type Object10930 @Directive21(argument61 : "stringValue45068") @Directive44(argument97 : ["stringValue45067"]) { + field57555: [Object10931] + field57578: String +} + +type Object10931 @Directive21(argument61 : "stringValue45070") @Directive44(argument97 : ["stringValue45069"]) { + field57556: String + field57557: Float + field57558: String + field57559: Scalar2 + field57560: [Object10932] + field57569: String + field57570: Scalar2 + field57571: [Object10933] + field57574: String + field57575: Float + field57576: Float + field57577: String +} + +type Object10932 @Directive21(argument61 : "stringValue45072") @Directive44(argument97 : ["stringValue45071"]) { + field57561: String + field57562: Scalar2 + field57563: String + field57564: String + field57565: String + field57566: String + field57567: String + field57568: String +} + +type Object10933 @Directive21(argument61 : "stringValue45074") @Directive44(argument97 : ["stringValue45073"]) { + field57572: Scalar2 + field57573: String +} + +type Object10934 @Directive21(argument61 : "stringValue45077") @Directive44(argument97 : ["stringValue45076"]) { + field57581: String + field57582: String + field57583: String + field57584: String + field57585: Enum2692 + field57586: String + field57587: Enum2695 +} + +type Object10935 @Directive21(argument61 : "stringValue45080") @Directive44(argument97 : ["stringValue45079"]) { + field57594: String +} + +type Object10936 @Directive21(argument61 : "stringValue45082") @Directive44(argument97 : ["stringValue45081"]) { + field57596: Scalar2 + field57597: String + field57598: String + field57599: String + field57600: String + field57601: String + field57602: String + field57603: String + field57604: String + field57605: Object10919 +} + +type Object10937 @Directive21(argument61 : "stringValue45084") @Directive44(argument97 : ["stringValue45083"]) { + field57607: String + field57608: String +} + +type Object10938 @Directive21(argument61 : "stringValue45086") @Directive44(argument97 : ["stringValue45085"]) { + field57610: String + field57611: String + field57612: String + field57613: String + field57614: Enum2696 +} + +type Object10939 @Directive21(argument61 : "stringValue45091") @Directive44(argument97 : ["stringValue45090"]) { + field57622: String + field57623: String + field57624: String + field57625: String + field57626: String + field57627: String + field57628: Object3489 + field57629: String + field57630: String + field57631: Object10929 +} + +type Object1094 @Directive20(argument58 : "stringValue5685", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5684") @Directive31 @Directive44(argument97 : ["stringValue5686", "stringValue5687"]) { + field6228: Float + field6229: Float + field6230: String +} + +type Object10940 @Directive21(argument61 : "stringValue45093") @Directive44(argument97 : ["stringValue45092"]) { + field57635: String + field57636: String + field57637: Enum694 + field57638: String + field57639: Object3515 @deprecated + field57640: Object3487 @deprecated + field57641: String + field57642: Union354 @deprecated + field57645: String + field57646: String + field57647: Object10942 + field57675: Interface139 + field57676: Interface141 + field57677: Object10943 + field57678: Object10944 + field57679: Object10944 + field57680: Object10944 +} + +type Object10941 @Directive21(argument61 : "stringValue45096") @Directive44(argument97 : ["stringValue45095"]) { + field57643: String! + field57644: String +} + +type Object10942 @Directive21(argument61 : "stringValue45098") @Directive44(argument97 : ["stringValue45097"]) { + field57648: String + field57649: Int + field57650: Object10943 + field57661: Boolean + field57662: Object10944 + field57674: Int +} + +type Object10943 @Directive21(argument61 : "stringValue45100") @Directive44(argument97 : ["stringValue45099"]) { + field57651: String + field57652: Enum694 + field57653: Enum2699 + field57654: String + field57655: String + field57656: Enum2700 + field57657: Object3487 @deprecated + field57658: Union354 @deprecated + field57659: Object3500 @deprecated + field57660: Interface139 +} + +type Object10944 @Directive21(argument61 : "stringValue45104") @Directive44(argument97 : ["stringValue45103"]) { + field57663: Object3497 + field57664: Object10945 + field57672: Scalar5 + field57673: Enum2704 +} + +type Object10945 @Directive21(argument61 : "stringValue45106") @Directive44(argument97 : ["stringValue45105"]) { + field57665: Enum2701 + field57666: Enum2702 + field57667: Enum2703 + field57668: Scalar5 + field57669: Scalar5 + field57670: Float + field57671: Float +} + +type Object10946 @Directive21(argument61 : "stringValue45113") @Directive44(argument97 : ["stringValue45112"]) { + field57685: Float + field57686: Float +} + +type Object10947 @Directive21(argument61 : "stringValue45115") @Directive44(argument97 : ["stringValue45114"]) { + field57688: String + field57689: Enum2706 + field57690: Union355 +} + +type Object10948 @Directive21(argument61 : "stringValue45119") @Directive44(argument97 : ["stringValue45118"]) { + field57691: [Object10940] +} + +type Object10949 @Directive21(argument61 : "stringValue45121") @Directive44(argument97 : ["stringValue45120"]) { + field57692: String + field57693: String + field57694: Enum694 +} + +type Object1095 implements Interface76 @Directive21(argument61 : "stringValue5689") @Directive22(argument62 : "stringValue5688") @Directive31 @Directive44(argument97 : ["stringValue5690", "stringValue5691", "stringValue5692"]) @Directive45(argument98 : ["stringValue5693"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union142] + field5221: Boolean + field6245: [Object1096] +} + +type Object10950 @Directive21(argument61 : "stringValue45123") @Directive44(argument97 : ["stringValue45122"]) { + field57695: String + field57696: String + field57697: [Enum694] +} + +type Object10951 @Directive21(argument61 : "stringValue45125") @Directive44(argument97 : ["stringValue45124"]) { + field57699: String + field57700: Float + field57701: String +} + +type Object10952 @Directive21(argument61 : "stringValue45127") @Directive44(argument97 : ["stringValue45126"]) { + field57715: Boolean + field57716: Boolean + field57717: String + field57718: String +} + +type Object10953 @Directive21(argument61 : "stringValue45129") @Directive44(argument97 : ["stringValue45128"]) { + field57720: String + field57721: String + field57722: String +} + +type Object10954 @Directive21(argument61 : "stringValue45131") @Directive44(argument97 : ["stringValue45130"]) { + field57728: Boolean + field57729: Float + field57730: Object10955 + field57740: String + field57741: Object10956 + field57742: String + field57743: Object10956 + field57744: Float + field57745: Boolean + field57746: Object10956 + field57747: [Object10835] + field57748: Object10956 + field57749: String + field57750: String + field57751: Object10956 + field57752: String + field57753: String + field57754: [Object10957] + field57762: [Enum2708] + field57763: Object3497 + field57764: Object10958 + field57847: Boolean +} + +type Object10955 @Directive21(argument61 : "stringValue45133") @Directive44(argument97 : ["stringValue45132"]) { + field57731: String + field57732: [Object10955] + field57733: Object10956 + field57738: Int + field57739: String +} + +type Object10956 @Directive21(argument61 : "stringValue45135") @Directive44(argument97 : ["stringValue45134"]) { + field57734: Float + field57735: String + field57736: String + field57737: Boolean +} + +type Object10957 @Directive21(argument61 : "stringValue45137") @Directive44(argument97 : ["stringValue45136"]) { + field57755: String + field57756: String + field57757: String + field57758: String + field57759: String + field57760: Enum2707 + field57761: String +} + +type Object10958 @Directive21(argument61 : "stringValue45141") @Directive44(argument97 : ["stringValue45140"]) { + field57765: Union356 + field57804: Union356 + field57805: Object10968 +} + +type Object10959 @Directive21(argument61 : "stringValue45144") @Directive44(argument97 : ["stringValue45143"]) { + field57766: String! + field57767: String + field57768: Enum2709 +} + +type Object1096 @Directive20(argument58 : "stringValue5698", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5697") @Directive31 @Directive44(argument97 : ["stringValue5699", "stringValue5700"]) { + field6233: String + field6234: String + field6235: String + field6236: String + field6237: String + field6238: String + field6239: String + field6240: Int + field6241: String! + field6242: Object923 + field6243: String + field6244: String +} + +type Object10960 @Directive21(argument61 : "stringValue45147") @Directive44(argument97 : ["stringValue45146"]) { + field57769: String + field57770: Object3497 + field57771: Enum694 + field57772: Enum2709 +} + +type Object10961 @Directive21(argument61 : "stringValue45149") @Directive44(argument97 : ["stringValue45148"]) { + field57773: String + field57774: String! + field57775: String! + field57776: String + field57777: Object10962 + field57789: Object10965 +} + +type Object10962 @Directive21(argument61 : "stringValue45151") @Directive44(argument97 : ["stringValue45150"]) { + field57778: [Union357] + field57786: String + field57787: String + field57788: String +} + +type Object10963 @Directive21(argument61 : "stringValue45154") @Directive44(argument97 : ["stringValue45153"]) { + field57779: String! + field57780: Boolean! + field57781: Boolean! + field57782: String! +} + +type Object10964 @Directive21(argument61 : "stringValue45156") @Directive44(argument97 : ["stringValue45155"]) { + field57783: String! + field57784: String + field57785: Enum2710! +} + +type Object10965 @Directive21(argument61 : "stringValue45159") @Directive44(argument97 : ["stringValue45158"]) { + field57790: String! + field57791: String! + field57792: String! +} + +type Object10966 @Directive21(argument61 : "stringValue45161") @Directive44(argument97 : ["stringValue45160"]) { + field57793: String! + field57794: String! + field57795: String! + field57796: String + field57797: Boolean + field57798: Enum2709 +} + +type Object10967 @Directive21(argument61 : "stringValue45163") @Directive44(argument97 : ["stringValue45162"]) { + field57799: String! + field57800: String! + field57801: String + field57802: Boolean + field57803: Enum2709 +} + +type Object10968 @Directive21(argument61 : "stringValue45165") @Directive44(argument97 : ["stringValue45164"]) { + field57806: [Union358] + field57846: String +} + +type Object10969 @Directive21(argument61 : "stringValue45168") @Directive44(argument97 : ["stringValue45167"]) { + field57807: String! + field57808: Enum2709 +} + +type Object1097 implements Interface76 @Directive21(argument61 : "stringValue5702") @Directive22(argument62 : "stringValue5701") @Directive31 @Directive44(argument97 : ["stringValue5703", "stringValue5704", "stringValue5705"]) @Directive45(argument98 : ["stringValue5706"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union143] + field5281: Object909 + field5553: Object953 + field6248: [Object1098] +} + +type Object10970 @Directive21(argument61 : "stringValue45170") @Directive44(argument97 : ["stringValue45169"]) { + field57809: [Union359] + field57829: Boolean @deprecated + field57830: Boolean + field57831: Boolean + field57832: String + field57833: Enum2709 +} + +type Object10971 @Directive21(argument61 : "stringValue45173") @Directive44(argument97 : ["stringValue45172"]) { + field57810: String! + field57811: String! + field57812: Object10968 +} + +type Object10972 @Directive21(argument61 : "stringValue45175") @Directive44(argument97 : ["stringValue45174"]) { + field57813: String! + field57814: String! + field57815: Object10968 + field57816: String +} + +type Object10973 @Directive21(argument61 : "stringValue45177") @Directive44(argument97 : ["stringValue45176"]) { + field57817: String! + field57818: String! + field57819: Object10968 + field57820: Enum2709 +} + +type Object10974 @Directive21(argument61 : "stringValue45179") @Directive44(argument97 : ["stringValue45178"]) { + field57821: String! + field57822: String! + field57823: Object10968 + field57824: Enum2709 +} + +type Object10975 @Directive21(argument61 : "stringValue45181") @Directive44(argument97 : ["stringValue45180"]) { + field57825: String! + field57826: String! + field57827: Object10968 + field57828: Enum2709 +} + +type Object10976 @Directive21(argument61 : "stringValue45183") @Directive44(argument97 : ["stringValue45182"]) { + field57834: String! + field57835: String! + field57836: Enum2709 +} + +type Object10977 @Directive21(argument61 : "stringValue45185") @Directive44(argument97 : ["stringValue45184"]) { + field57837: String! + field57838: Enum2709 +} + +type Object10978 @Directive21(argument61 : "stringValue45187") @Directive44(argument97 : ["stringValue45186"]) { + field57839: String! + field57840: Enum2709 +} + +type Object10979 @Directive21(argument61 : "stringValue45189") @Directive44(argument97 : ["stringValue45188"]) { + field57841: Enum2711 + field57842: Enum2712 + field57843: Int @deprecated + field57844: Int @deprecated + field57845: Object3497 +} + +type Object1098 @Directive20(argument58 : "stringValue5711", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5710") @Directive31 @Directive44(argument97 : ["stringValue5712", "stringValue5713"]) { + field6246: Object954 + field6247: Object909 +} + +type Object10980 @Directive21(argument61 : "stringValue45193") @Directive44(argument97 : ["stringValue45192"]) { + field57849: Boolean + field57850: String + field57851: String + field57852: String +} + +type Object10981 @Directive21(argument61 : "stringValue45195") @Directive44(argument97 : ["stringValue45194"]) { + field57855: Int + field57856: Int + field57857: Int + field57858: String + field57859: String + field57860: Scalar2 + field57861: [String] + field57862: String +} + +type Object10982 @Directive21(argument61 : "stringValue45197") @Directive44(argument97 : ["stringValue45196"]) { + field57864: Boolean + field57865: String + field57866: String + field57867: String + field57868: String + field57869: Object10983 + field57899: Object10984 + field57900: String + field57901: [Object10986] + field57908: Boolean + field57909: Boolean +} + +type Object10983 @Directive21(argument61 : "stringValue45199") @Directive44(argument97 : ["stringValue45198"]) { + field57870: Object10984 + field57879: Object10985 + field57897: Object10984 + field57898: Object10985 +} + +type Object10984 @Directive21(argument61 : "stringValue45201") @Directive44(argument97 : ["stringValue45200"]) { + field57871: String + field57872: Scalar2 + field57873: String + field57874: Boolean + field57875: Boolean + field57876: String + field57877: String + field57878: String +} + +type Object10985 @Directive21(argument61 : "stringValue45203") @Directive44(argument97 : ["stringValue45202"]) { + field57880: String + field57881: String + field57882: String + field57883: String + field57884: String + field57885: String + field57886: String + field57887: String + field57888: String + field57889: Boolean + field57890: String + field57891: String + field57892: String + field57893: String + field57894: String + field57895: String + field57896: Scalar2 +} + +type Object10986 @Directive21(argument61 : "stringValue45205") @Directive44(argument97 : ["stringValue45204"]) { + field57902: String + field57903: String + field57904: [Object10987] +} + +type Object10987 @Directive21(argument61 : "stringValue45207") @Directive44(argument97 : ["stringValue45206"]) { + field57905: String + field57906: String + field57907: String +} + +type Object10988 @Directive21(argument61 : "stringValue45209") @Directive44(argument97 : ["stringValue45208"]) { + field57911: String + field57912: [Object10943] + field57913: Boolean +} + +type Object10989 @Directive21(argument61 : "stringValue45215") @Directive44(argument97 : ["stringValue45214"]) { + field57915: Boolean + field57916: [Object5839!]! +} + +type Object1099 implements Interface76 @Directive21(argument61 : "stringValue5715") @Directive22(argument62 : "stringValue5714") @Directive31 @Directive44(argument97 : ["stringValue5716", "stringValue5717", "stringValue5718"]) @Directive45(argument98 : ["stringValue5719"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union144] + field5281: Object909 + field5553: Object953 + field6261: [Object1100] +} + +type Object10990 @Directive21(argument61 : "stringValue45221") @Directive44(argument97 : ["stringValue45220"]) { + field57918: [Object5797]! +} + +type Object10991 @Directive21(argument61 : "stringValue45227") @Directive44(argument97 : ["stringValue45226"]) { + field57920: [Object5752!]! +} + +type Object10992 @Directive21(argument61 : "stringValue45233") @Directive44(argument97 : ["stringValue45232"]) { + field57922: [Object10993!]! +} + +type Object10993 @Directive21(argument61 : "stringValue45235") @Directive44(argument97 : ["stringValue45234"]) { + field57923: String! + field57924: String! + field57925: Scalar2! + field57926: Scalar2! + field57927: String! + field57928: Scalar2! + field57929: String! +} + +type Object10994 @Directive21(argument61 : "stringValue45241") @Directive44(argument97 : ["stringValue45240"]) { + field57931: [Object5820!]! + field57932: Scalar2 + field57933: [Object5837!]! +} + +type Object10995 @Directive21(argument61 : "stringValue45247") @Directive44(argument97 : ["stringValue45246"]) { + field57935: String! + field57936: Boolean! + field57937: [Enum2713!] + field57938: Boolean! + field57939: Enum2714! +} + +type Object10996 @Directive21(argument61 : "stringValue45255") @Directive44(argument97 : ["stringValue45254"]) { + field57941: Boolean! + field57942: Boolean! + field57943: Boolean! + field57944: Enum1457! + field57945: String +} + +type Object10997 @Directive21(argument61 : "stringValue45261") @Directive44(argument97 : ["stringValue45260"]) { + field57947: Scalar1! +} + +type Object10998 @Directive21(argument61 : "stringValue45267") @Directive44(argument97 : ["stringValue45266"]) { + field57949: Scalar2! + field57950: Float! + field57951: Float! + field57952: Scalar2! + field57953: String! +} + +type Object10999 @Directive21(argument61 : "stringValue45273") @Directive44(argument97 : ["stringValue45272"]) { + field57955: String +} + +type Object11 @Directive20(argument58 : "stringValue91", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue94") @Directive31 @Directive44(argument97 : ["stringValue92", "stringValue93"]) { + field100: Enum8 + field92: String + field93: Float + field94: Float + field95: Float + field96: Float + field97: [Object12!] +} + +type Object110 @Directive21(argument61 : "stringValue414") @Directive44(argument97 : ["stringValue413"]) { + field733: String! + field734: String! + field735: String! + field736: String + field737: Boolean + field738: Enum61 +} + +type Object1100 @Directive20(argument58 : "stringValue5724", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5723") @Directive31 @Directive44(argument97 : ["stringValue5725", "stringValue5726"]) { + field6249: Object1101 + field6259: Object1101 + field6260: Object1101 +} + +type Object11000 @Directive21(argument61 : "stringValue45279") @Directive44(argument97 : ["stringValue45278"]) { + field57957: String! + field57958: String! + field57959: String + field57960: Boolean! +} + +type Object11001 @Directive21(argument61 : "stringValue45285") @Directive44(argument97 : ["stringValue45284"]) { + field57962: Object10865 +} + +type Object11002 @Directive21(argument61 : "stringValue45291") @Directive44(argument97 : ["stringValue45290"]) { + field57964: [Object10699!]! +} + +type Object11003 @Directive21(argument61 : "stringValue45297") @Directive44(argument97 : ["stringValue45296"]) { + field57966: [Object11004!]! +} + +type Object11004 @Directive21(argument61 : "stringValue45299") @Directive44(argument97 : ["stringValue45298"]) { + field57967: Scalar2 + field57968: String + field57969: String + field57970: String + field57971: String + field57972: Boolean + field57973: Boolean +} + +type Object11005 @Directive21(argument61 : "stringValue45305") @Directive44(argument97 : ["stringValue45304"]) { + field57975: Boolean! + field57976: Boolean! + field57977: Boolean! + field57978: Boolean! + field57979: Boolean! + field57980: Boolean! + field57981: Boolean! + field57982: Enum2715! + field57983: Boolean! +} + +type Object11006 @Directive21(argument61 : "stringValue45311") @Directive44(argument97 : ["stringValue45310"]) { + field57985: Boolean! + field57986: Boolean! + field57987: Boolean! + field57988: Boolean! +} + +type Object11007 @Directive21(argument61 : "stringValue45317") @Directive44(argument97 : ["stringValue45316"]) { + field57990: [Object5740!]! +} + +type Object11008 @Directive21(argument61 : "stringValue45323") @Directive44(argument97 : ["stringValue45322"]) { + field57992: Enum2716! +} + +type Object11009 @Directive21(argument61 : "stringValue45330") @Directive44(argument97 : ["stringValue45329"]) { + field57994: Enum2717! + field57995: String + field57996: String + field57997: String + field57998: String +} + +type Object1101 @Directive20(argument58 : "stringValue5728", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5727") @Directive31 @Directive44(argument97 : ["stringValue5729", "stringValue5730"]) { + field6250: Object576 + field6251: Object596 + field6252: Object596 + field6253: Object596 + field6254: Object959 + field6255: Interface77 + field6256: Object598 + field6257: Object576 + field6258: Object597 +} + +type Object11010 @Directive21(argument61 : "stringValue45337") @Directive44(argument97 : ["stringValue45336"]) { + field58000: Boolean! +} + +type Object11011 @Directive21(argument61 : "stringValue45343") @Directive44(argument97 : ["stringValue45342"]) { + field58002: Scalar2 + field58003: Boolean +} + +type Object11012 @Directive21(argument61 : "stringValue45349") @Directive44(argument97 : ["stringValue45348"]) { + field58005: [Object11013!]! + field58011: [Object11014!]! +} + +type Object11013 @Directive21(argument61 : "stringValue45351") @Directive44(argument97 : ["stringValue45350"]) { + field58006: Scalar2! + field58007: String! + field58008: String + field58009: String + field58010: String +} + +type Object11014 @Directive21(argument61 : "stringValue45353") @Directive44(argument97 : ["stringValue45352"]) { + field58012: Scalar2! + field58013: String! + field58014: String + field58015: String + field58016: String +} + +type Object11015 @Directive21(argument61 : "stringValue45359") @Directive44(argument97 : ["stringValue45358"]) { + field58018: [Object11013!]! +} + +type Object11016 @Directive21(argument61 : "stringValue45365") @Directive44(argument97 : ["stringValue45364"]) { + field58020: [Object11017!]! +} + +type Object11017 @Directive21(argument61 : "stringValue45367") @Directive44(argument97 : ["stringValue45366"]) { + field58021: Scalar2! + field58022: String! + field58023: String! + field58024: String + field58025: Scalar2 + field58026: String +} + +type Object11018 @Directive21(argument61 : "stringValue45373") @Directive44(argument97 : ["stringValue45372"]) { + field58028: [Object10865!]! +} + +type Object11019 @Directive21(argument61 : "stringValue45379") @Directive44(argument97 : ["stringValue45378"]) { + field58030: Boolean! + field58031: String +} + +type Object1102 implements Interface76 @Directive21(argument61 : "stringValue5732") @Directive22(argument62 : "stringValue5731") @Directive31 @Directive44(argument97 : ["stringValue5733", "stringValue5734", "stringValue5735"]) @Directive45(argument98 : ["stringValue5736"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field6262: [Object1103] +} + +type Object11020 @Directive21(argument61 : "stringValue45385") @Directive44(argument97 : ["stringValue45384"]) { + field58033: Boolean! +} + +type Object11021 @Directive21(argument61 : "stringValue45391") @Directive44(argument97 : ["stringValue45390"]) { + field58035: Boolean! + field58036: String + field58037: String + field58038: String + field58039: Object5741 +} + +type Object11022 @Directive44(argument97 : ["stringValue45392"]) { + field58041(argument2511: InputObject2131!): Object11023 @Directive35(argument89 : "stringValue45394", argument90 : false, argument91 : "stringValue45393", argument92 : 1027, argument93 : "stringValue45395", argument94 : false) + field58046(argument2512: InputObject2132!): Object11025 @Directive35(argument89 : "stringValue45403", argument90 : false, argument91 : "stringValue45402", argument92 : 1028, argument93 : "stringValue45404", argument94 : true) + field58628(argument2513: InputObject2133!): Object11112 @Directive35(argument89 : "stringValue45617", argument90 : false, argument91 : "stringValue45616", argument92 : 1029, argument93 : "stringValue45618", argument94 : false) +} + +type Object11023 @Directive21(argument61 : "stringValue45399") @Directive44(argument97 : ["stringValue45398"]) { + field58042: [Object11024] +} + +type Object11024 @Directive21(argument61 : "stringValue45401") @Directive44(argument97 : ["stringValue45400"]) { + field58043: String! + field58044: String + field58045: String +} + +type Object11025 @Directive21(argument61 : "stringValue45407") @Directive44(argument97 : ["stringValue45406"]) { + field58047: Object11026 + field58069: [Object11031] + field58072: Object11032 + field58084: Object11035 + field58099: Object11036 +} + +type Object11026 @Directive21(argument61 : "stringValue45409") @Directive44(argument97 : ["stringValue45408"]) { + field58048: String! + field58049: String @deprecated + field58050: String @deprecated + field58051: [Object11027] + field58055: Object11028 + field58061: Object11029 + field58067: String + field58068: String +} + +type Object11027 @Directive21(argument61 : "stringValue45411") @Directive44(argument97 : ["stringValue45410"]) { + field58052: String + field58053: String + field58054: String +} + +type Object11028 @Directive21(argument61 : "stringValue45413") @Directive44(argument97 : ["stringValue45412"]) { + field58056: String @deprecated + field58057: String + field58058: String + field58059: String + field58060: String +} + +type Object11029 @Directive21(argument61 : "stringValue45415") @Directive44(argument97 : ["stringValue45414"]) { + field58062: String + field58063: String + field58064: [Object11030] +} + +type Object1103 @Directive20(argument58 : "stringValue5738", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5737") @Directive31 @Directive44(argument97 : ["stringValue5739", "stringValue5740"]) { + field6263: Object1104 + field6268: Object1104 + field6269: Object1104 +} + +type Object11030 @Directive21(argument61 : "stringValue45417") @Directive44(argument97 : ["stringValue45416"]) { + field58065: String + field58066: String +} + +type Object11031 @Directive21(argument61 : "stringValue45419") @Directive44(argument97 : ["stringValue45418"]) { + field58070: String! + field58071: String! +} + +type Object11032 @Directive21(argument61 : "stringValue45421") @Directive44(argument97 : ["stringValue45420"]) { + field58073: [Object11033]! + field58083: String! +} + +type Object11033 @Directive21(argument61 : "stringValue45423") @Directive44(argument97 : ["stringValue45422"]) { + field58074: String! + field58075: Enum2719! + field58076: String + field58077: String + field58078: String @deprecated + field58079: [Object11034] +} + +type Object11034 @Directive21(argument61 : "stringValue45426") @Directive44(argument97 : ["stringValue45425"]) { + field58080: String! + field58081: String! + field58082: String +} + +type Object11035 @Directive21(argument61 : "stringValue45428") @Directive44(argument97 : ["stringValue45427"]) { + field58085: String + field58086: String + field58087: String @deprecated + field58088: String + field58089: String + field58090: String + field58091: String + field58092: String + field58093: String + field58094: String + field58095: String + field58096: String + field58097: String + field58098: String @deprecated +} + +type Object11036 @Directive21(argument61 : "stringValue45430") @Directive44(argument97 : ["stringValue45429"]) { + field58100: String! + field58101: String! + field58102: [Object11037]! + field58615: String @deprecated + field58616: String @deprecated + field58617: String + field58618: [Object11110] + field58622: Object11111 + field58627: String +} + +type Object11037 @Directive21(argument61 : "stringValue45432") @Directive44(argument97 : ["stringValue45431"]) { + field58103: Object11038! + field58611: String + field58612: String! + field58613: String + field58614: [String] +} + +type Object11038 @Directive21(argument61 : "stringValue45434") @Directive44(argument97 : ["stringValue45433"]) { + field58104: Object11039 + field58250: Object11067 + field58571: Object11104 + field58576: Boolean + field58577: Object11105 + field58597: Enum2748 + field58598: Object11109 +} + +type Object11039 @Directive21(argument61 : "stringValue45436") @Directive44(argument97 : ["stringValue45435"]) { + field58105: Boolean + field58106: Boolean + field58107: Scalar3 + field58108: Scalar3 + field58109: Int + field58110: Object11040 + field58116: Float + field58117: Object11041 + field58127: String + field58128: Object11042 + field58129: String + field58130: Object11042 + field58131: Float + field58132: Boolean + field58133: Object11042 + field58134: [Object11043] + field58148: Object11042 + field58149: String + field58150: String + field58151: Object11042 + field58152: String + field58153: Object11042 + field58154: String + field58155: [Object11044] + field58163: [Enum2723] + field58164: Object11045 + field58247: Object11042 + field58248: Object3739 + field58249: Object11042 +} + +type Object1104 @Directive20(argument58 : "stringValue5742", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5741") @Directive31 @Directive44(argument97 : ["stringValue5743", "stringValue5744"]) { + field6264: Object596 + field6265: Interface77 + field6266: String + field6267: Object576 +} + +type Object11040 @Directive21(argument61 : "stringValue45438") @Directive44(argument97 : ["stringValue45437"]) { + field58111: Int + field58112: Int + field58113: Int + field58114: Int + field58115: String +} + +type Object11041 @Directive21(argument61 : "stringValue45440") @Directive44(argument97 : ["stringValue45439"]) { + field58118: String + field58119: [Object11041] + field58120: Object11042 + field58125: Int + field58126: String +} + +type Object11042 @Directive21(argument61 : "stringValue45442") @Directive44(argument97 : ["stringValue45441"]) { + field58121: Float + field58122: String + field58123: String + field58124: Boolean +} + +type Object11043 @Directive21(argument61 : "stringValue45444") @Directive44(argument97 : ["stringValue45443"]) { + field58135: Enum2720 + field58136: String + field58137: Boolean + field58138: Boolean + field58139: Int + field58140: String + field58141: Scalar2 + field58142: String + field58143: Int + field58144: String + field58145: Float + field58146: Int + field58147: Enum2721 +} + +type Object11044 @Directive21(argument61 : "stringValue45448") @Directive44(argument97 : ["stringValue45447"]) { + field58156: String + field58157: String + field58158: String + field58159: String + field58160: String + field58161: Enum2722 + field58162: String +} + +type Object11045 @Directive21(argument61 : "stringValue45452") @Directive44(argument97 : ["stringValue45451"]) { + field58165: Union360 + field58204: Union360 + field58205: Object11055 +} + +type Object11046 @Directive21(argument61 : "stringValue45455") @Directive44(argument97 : ["stringValue45454"]) { + field58166: String! + field58167: String + field58168: Enum2724 +} + +type Object11047 @Directive21(argument61 : "stringValue45458") @Directive44(argument97 : ["stringValue45457"]) { + field58169: String + field58170: Object3739 + field58171: Enum763 + field58172: Enum2724 +} + +type Object11048 @Directive21(argument61 : "stringValue45460") @Directive44(argument97 : ["stringValue45459"]) { + field58173: String + field58174: String! + field58175: String! + field58176: String + field58177: Object11049 + field58189: Object11052 +} + +type Object11049 @Directive21(argument61 : "stringValue45462") @Directive44(argument97 : ["stringValue45461"]) { + field58178: [Union361] + field58186: String + field58187: String + field58188: String +} + +type Object1105 implements Interface76 @Directive21(argument61 : "stringValue5746") @Directive22(argument62 : "stringValue5745") @Directive31 @Directive44(argument97 : ["stringValue5747", "stringValue5748", "stringValue5749"]) @Directive45(argument98 : ["stringValue5750"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5220: [Union146] + field6270: [Object1106] +} + +type Object11050 @Directive21(argument61 : "stringValue45465") @Directive44(argument97 : ["stringValue45464"]) { + field58179: String! + field58180: Boolean! + field58181: Boolean! + field58182: String! +} + +type Object11051 @Directive21(argument61 : "stringValue45467") @Directive44(argument97 : ["stringValue45466"]) { + field58183: String! + field58184: String + field58185: Enum2725! +} + +type Object11052 @Directive21(argument61 : "stringValue45470") @Directive44(argument97 : ["stringValue45469"]) { + field58190: String! + field58191: String! + field58192: String! +} + +type Object11053 @Directive21(argument61 : "stringValue45472") @Directive44(argument97 : ["stringValue45471"]) { + field58193: String! + field58194: String! + field58195: String! + field58196: String + field58197: Boolean + field58198: Enum2724 +} + +type Object11054 @Directive21(argument61 : "stringValue45474") @Directive44(argument97 : ["stringValue45473"]) { + field58199: String! + field58200: String! + field58201: String + field58202: Boolean + field58203: Enum2724 +} + +type Object11055 @Directive21(argument61 : "stringValue45476") @Directive44(argument97 : ["stringValue45475"]) { + field58206: [Union362] + field58246: String +} + +type Object11056 @Directive21(argument61 : "stringValue45479") @Directive44(argument97 : ["stringValue45478"]) { + field58207: String! + field58208: Enum2724 +} + +type Object11057 @Directive21(argument61 : "stringValue45481") @Directive44(argument97 : ["stringValue45480"]) { + field58209: [Union363] + field58229: Boolean @deprecated + field58230: Boolean + field58231: Boolean + field58232: String + field58233: Enum2724 +} + +type Object11058 @Directive21(argument61 : "stringValue45484") @Directive44(argument97 : ["stringValue45483"]) { + field58210: String! + field58211: String! + field58212: Object11055 +} + +type Object11059 @Directive21(argument61 : "stringValue45486") @Directive44(argument97 : ["stringValue45485"]) { + field58213: String! + field58214: String! + field58215: Object11055 + field58216: String +} + +type Object1106 @Directive20(argument58 : "stringValue5752", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5751") @Directive31 @Directive44(argument97 : ["stringValue5753", "stringValue5754"]) { + field6271: String + field6272: String + field6273: String + field6274: String + field6275: Object1107 + field6286: String + field6287: String + field6288: String + field6289: Object398 + field6290: String + field6291: String + field6292: String + field6293: [String] + field6294: [String] + field6295: String + field6296: Enum10 +} + +type Object11060 @Directive21(argument61 : "stringValue45488") @Directive44(argument97 : ["stringValue45487"]) { + field58217: String! + field58218: String! + field58219: Object11055 + field58220: Enum2724 +} + +type Object11061 @Directive21(argument61 : "stringValue45490") @Directive44(argument97 : ["stringValue45489"]) { + field58221: String! + field58222: String! + field58223: Object11055 + field58224: Enum2724 +} + +type Object11062 @Directive21(argument61 : "stringValue45492") @Directive44(argument97 : ["stringValue45491"]) { + field58225: String! + field58226: String! + field58227: Object11055 + field58228: Enum2724 +} + +type Object11063 @Directive21(argument61 : "stringValue45494") @Directive44(argument97 : ["stringValue45493"]) { + field58234: String! + field58235: String! + field58236: Enum2724 +} + +type Object11064 @Directive21(argument61 : "stringValue45496") @Directive44(argument97 : ["stringValue45495"]) { + field58237: String! + field58238: Enum2724 +} + +type Object11065 @Directive21(argument61 : "stringValue45498") @Directive44(argument97 : ["stringValue45497"]) { + field58239: String! + field58240: Enum2724 +} + +type Object11066 @Directive21(argument61 : "stringValue45500") @Directive44(argument97 : ["stringValue45499"]) { + field58241: Enum2726 + field58242: Enum2727 + field58243: Int @deprecated + field58244: Int @deprecated + field58245: Object3739 +} + +type Object11067 @Directive21(argument61 : "stringValue45504") @Directive44(argument97 : ["stringValue45503"]) { + field58251: [String] + field58252: String + field58253: Float + field58254: String + field58255: String + field58256: Int + field58257: Int + field58258: String + field58259: String + field58260: Object11068 + field58263: String + field58264: String + field58265: String + field58266: Scalar2 + field58267: Boolean + field58268: Boolean + field58269: Boolean + field58270: Boolean + field58271: Boolean + field58272: Object11069 + field58290: Float + field58291: Float + field58292: String + field58293: Object11072 + field58298: String + field58299: String + field58300: String + field58301: Int + field58302: Object11073 + field58313: Int + field58314: String + field58315: [String] + field58316: String + field58317: String + field58318: String + field58319: Scalar2 + field58320: String + field58321: Int + field58322: String + field58323: String + field58324: String + field58325: String + field58326: [Object11074] + field58336: String + field58337: String + field58338: String + field58339: Boolean + field58340: String + field58341: String + field58342: Float + field58343: String + field58344: String + field58345: String + field58346: Int + field58347: Scalar2 + field58348: Object11075 + field58358: Object11069 + field58359: [Int] + field58360: [String] + field58361: [Scalar2] + field58362: Object11075 + field58363: String + field58364: String + field58365: [String] + field58366: Boolean + field58367: String + field58368: [Object11076] + field58378: [String] + field58379: String + field58380: Boolean @deprecated + field58381: Boolean @deprecated + field58382: Scalar3 + field58383: Scalar3 + field58384: Int + field58385: Int + field58386: Int + field58387: Int + field58388: [Object11077] + field58420: Int + field58421: Float + field58422: Object11082 + field58431: Enum2733 + field58432: Boolean + field58433: [Object11084] + field58441: String + field58442: Boolean + field58443: [Object11073] + field58444: String + field58445: Int + field58446: Int + field58447: Boolean + field58448: Object11085 + field58450: Object11086 + field58453: String + field58454: String + field58455: Boolean + field58456: [String] + field58457: String + field58458: Object11087 + field58464: Enum2736 + field58465: [Object11071] + field58466: Object11083 + field58467: Enum2737 + field58468: String + field58469: String + field58470: [Scalar2] + field58471: String + field58472: [Object11088] + field58519: [Object11088] + field58520: Enum2744 + field58521: [Enum2745] + field58522: [Object11094] + field58533: Object11098 + field58537: Object11099 + field58543: [Object11072] + field58544: Boolean + field58545: String + field58546: Int + field58547: Scalar2 + field58548: Boolean + field58549: Float + field58550: [String] + field58551: String + field58552: [Object11101] + field58555: Boolean + field58556: String + field58557: String + field58558: Object11102 + field58563: Object11103 + field58567: Object11071 + field58568: Enum2747 + field58569: Scalar2 + field58570: String +} + +type Object11068 @Directive21(argument61 : "stringValue45506") @Directive44(argument97 : ["stringValue45505"]) { + field58261: String + field58262: Float +} + +type Object11069 @Directive21(argument61 : "stringValue45508") @Directive44(argument97 : ["stringValue45507"]) { + field58273: Object11070 + field58277: [String] + field58278: String + field58279: [Object11071] +} + +type Object1107 @Directive20(argument58 : "stringValue5756", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5755") @Directive31 @Directive44(argument97 : ["stringValue5757", "stringValue5758"]) { + field6276: Union145 + field6285: Enum293 +} + +type Object11070 @Directive21(argument61 : "stringValue45510") @Directive44(argument97 : ["stringValue45509"]) { + field58274: String + field58275: String + field58276: String +} + +type Object11071 @Directive21(argument61 : "stringValue45512") @Directive44(argument97 : ["stringValue45511"]) { + field58280: String + field58281: String + field58282: String + field58283: String + field58284: String + field58285: String + field58286: String + field58287: String + field58288: String + field58289: Enum2728 +} + +type Object11072 @Directive21(argument61 : "stringValue45515") @Directive44(argument97 : ["stringValue45514"]) { + field58294: String + field58295: String + field58296: String + field58297: String +} + +type Object11073 @Directive21(argument61 : "stringValue45517") @Directive44(argument97 : ["stringValue45516"]) { + field58303: Scalar2 + field58304: String + field58305: String + field58306: String + field58307: String + field58308: String + field58309: String + field58310: String + field58311: String + field58312: Object11069 +} + +type Object11074 @Directive21(argument61 : "stringValue45519") @Directive44(argument97 : ["stringValue45518"]) { + field58327: String + field58328: String + field58329: Boolean + field58330: Scalar2 + field58331: String + field58332: String + field58333: String + field58334: String + field58335: [String] +} + +type Object11075 @Directive21(argument61 : "stringValue45521") @Directive44(argument97 : ["stringValue45520"]) { + field58349: String + field58350: Boolean + field58351: Scalar2 + field58352: Boolean + field58353: String + field58354: String + field58355: String + field58356: Scalar4 + field58357: String +} + +type Object11076 @Directive21(argument61 : "stringValue45523") @Directive44(argument97 : ["stringValue45522"]) { + field58369: String + field58370: String + field58371: Boolean + field58372: String + field58373: String + field58374: String + field58375: String + field58376: [String] + field58377: Scalar2 +} + +type Object11077 @Directive21(argument61 : "stringValue45525") @Directive44(argument97 : ["stringValue45524"]) { + field58389: String + field58390: Enum2729 + field58391: String + field58392: Object11078 + field58400: String + field58401: String + field58402: Enum2730 + field58403: String + field58404: String + field58405: String + field58406: [Object11080] + field58417: String + field58418: String + field58419: Enum2731 +} + +type Object11078 @Directive21(argument61 : "stringValue45528") @Directive44(argument97 : ["stringValue45527"]) { + field58393: [Object11079] + field58398: String + field58399: String +} + +type Object11079 @Directive21(argument61 : "stringValue45530") @Directive44(argument97 : ["stringValue45529"]) { + field58394: String + field58395: String + field58396: Boolean + field58397: Union183 +} + +type Object1108 @Directive20(argument58 : "stringValue5763", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5762") @Directive31 @Directive44(argument97 : ["stringValue5764", "stringValue5765"]) { + field6277: [Object1109] + field6282: String + field6283: String + field6284: String +} + +type Object11080 @Directive21(argument61 : "stringValue45533") @Directive44(argument97 : ["stringValue45532"]) { + field58407: String + field58408: String + field58409: String + field58410: String + field58411: String + field58412: String + field58413: Object11081 +} + +type Object11081 @Directive21(argument61 : "stringValue45535") @Directive44(argument97 : ["stringValue45534"]) { + field58414: String + field58415: String + field58416: String +} + +type Object11082 @Directive21(argument61 : "stringValue45538") @Directive44(argument97 : ["stringValue45537"]) { + field58423: [Object11083] + field58427: String + field58428: String + field58429: Float + field58430: Enum2732 +} + +type Object11083 @Directive21(argument61 : "stringValue45540") @Directive44(argument97 : ["stringValue45539"]) { + field58424: String + field58425: Float + field58426: String +} + +type Object11084 @Directive21(argument61 : "stringValue45544") @Directive44(argument97 : ["stringValue45543"]) { + field58434: String + field58435: String + field58436: String + field58437: String + field58438: Enum2728 + field58439: String + field58440: Enum2734 +} + +type Object11085 @Directive21(argument61 : "stringValue45547") @Directive44(argument97 : ["stringValue45546"]) { + field58449: String +} + +type Object11086 @Directive21(argument61 : "stringValue45549") @Directive44(argument97 : ["stringValue45548"]) { + field58451: String + field58452: String +} + +type Object11087 @Directive21(argument61 : "stringValue45551") @Directive44(argument97 : ["stringValue45550"]) { + field58459: String + field58460: String + field58461: String + field58462: String + field58463: Enum2735 +} + +type Object11088 @Directive21(argument61 : "stringValue45556") @Directive44(argument97 : ["stringValue45555"]) { + field58473: String + field58474: String + field58475: Enum763 + field58476: String + field58477: Object3757 @deprecated + field58478: Object3734 @deprecated + field58479: String + field58480: Union364 @deprecated + field58483: String + field58484: String + field58485: Object11090 + field58513: Interface149 + field58514: Interface151 + field58515: Object11091 + field58516: Object11092 + field58517: Object11092 + field58518: Object11092 +} + +type Object11089 @Directive21(argument61 : "stringValue45559") @Directive44(argument97 : ["stringValue45558"]) { + field58481: String! + field58482: String +} + +type Object1109 @Directive20(argument58 : "stringValue5767", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5766") @Directive31 @Directive44(argument97 : ["stringValue5768", "stringValue5769"]) { + field6278: String + field6279: String + field6280: String + field6281: String +} + +type Object11090 @Directive21(argument61 : "stringValue45561") @Directive44(argument97 : ["stringValue45560"]) { + field58486: String + field58487: Int + field58488: Object11091 + field58499: Boolean + field58500: Object11092 + field58512: Int +} + +type Object11091 @Directive21(argument61 : "stringValue45563") @Directive44(argument97 : ["stringValue45562"]) { + field58489: String + field58490: Enum763 + field58491: Enum2738 + field58492: String + field58493: String + field58494: Enum2739 + field58495: Object3734 @deprecated + field58496: Union364 @deprecated + field58497: Object3742 @deprecated + field58498: Interface149 +} + +type Object11092 @Directive21(argument61 : "stringValue45567") @Directive44(argument97 : ["stringValue45566"]) { + field58501: Object3739 + field58502: Object11093 + field58510: Scalar5 + field58511: Enum2743 +} + +type Object11093 @Directive21(argument61 : "stringValue45569") @Directive44(argument97 : ["stringValue45568"]) { + field58503: Enum2740 + field58504: Enum2741 + field58505: Enum2742 + field58506: Scalar5 + field58507: Scalar5 + field58508: Float + field58509: Float +} + +type Object11094 @Directive21(argument61 : "stringValue45577") @Directive44(argument97 : ["stringValue45576"]) { + field58523: String + field58524: Enum2746 + field58525: Union365 +} + +type Object11095 @Directive21(argument61 : "stringValue45581") @Directive44(argument97 : ["stringValue45580"]) { + field58526: [Object11088] +} + +type Object11096 @Directive21(argument61 : "stringValue45583") @Directive44(argument97 : ["stringValue45582"]) { + field58527: String + field58528: String + field58529: Enum763 +} + +type Object11097 @Directive21(argument61 : "stringValue45585") @Directive44(argument97 : ["stringValue45584"]) { + field58530: String + field58531: String + field58532: [Enum763] +} + +type Object11098 @Directive21(argument61 : "stringValue45587") @Directive44(argument97 : ["stringValue45586"]) { + field58534: String + field58535: Float + field58536: String +} + +type Object11099 @Directive21(argument61 : "stringValue45589") @Directive44(argument97 : ["stringValue45588"]) { + field58538: [Object11100] + field58541: String + field58542: [String] +} + +type Object111 @Directive21(argument61 : "stringValue416") @Directive44(argument97 : ["stringValue415"]) { + field739: String! + field740: String! + field741: String + field742: Boolean + field743: Enum61 +} + +type Object1110 implements Interface76 @Directive21(argument61 : "stringValue5777") @Directive22(argument62 : "stringValue5776") @Directive31 @Directive44(argument97 : ["stringValue5778", "stringValue5779", "stringValue5780"]) @Directive45(argument98 : ["stringValue5781"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union147] + field5221: Boolean + field6312: [Object1111] +} + +type Object11100 @Directive21(argument61 : "stringValue45591") @Directive44(argument97 : ["stringValue45590"]) { + field58539: Scalar3 + field58540: Scalar3 +} + +type Object11101 @Directive21(argument61 : "stringValue45593") @Directive44(argument97 : ["stringValue45592"]) { + field58553: String + field58554: String +} + +type Object11102 @Directive21(argument61 : "stringValue45595") @Directive44(argument97 : ["stringValue45594"]) { + field58559: Boolean + field58560: Boolean + field58561: String + field58562: String +} + +type Object11103 @Directive21(argument61 : "stringValue45597") @Directive44(argument97 : ["stringValue45596"]) { + field58564: String + field58565: String + field58566: String +} + +type Object11104 @Directive21(argument61 : "stringValue45600") @Directive44(argument97 : ["stringValue45599"]) { + field58572: String + field58573: String + field58574: Boolean + field58575: String +} + +type Object11105 @Directive21(argument61 : "stringValue45602") @Directive44(argument97 : ["stringValue45601"]) { + field58578: Boolean + field58579: String + field58580: String + field58581: String + field58582: String + field58583: Object11106 + field58590: Object11107 + field58591: String + field58592: [Object11108] + field58595: Boolean + field58596: Boolean +} + +type Object11106 @Directive21(argument61 : "stringValue45604") @Directive44(argument97 : ["stringValue45603"]) { + field58584: Object11107 + field58589: Object11107 +} + +type Object11107 @Directive21(argument61 : "stringValue45606") @Directive44(argument97 : ["stringValue45605"]) { + field58585: Scalar2! + field58586: String + field58587: String + field58588: String +} + +type Object11108 @Directive21(argument61 : "stringValue45608") @Directive44(argument97 : ["stringValue45607"]) { + field58593: String + field58594: String +} + +type Object11109 @Directive21(argument61 : "stringValue45611") @Directive44(argument97 : ["stringValue45610"]) { + field58599: String + field58600: String + field58601: String + field58602: String + field58603: String + field58604: String + field58605: String + field58606: String + field58607: String + field58608: String + field58609: String + field58610: String +} + +type Object1111 @Directive20(argument58 : "stringValue5786", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5785") @Directive31 @Directive44(argument97 : ["stringValue5787", "stringValue5788"]) { + field6297: Object1112 + field6300: Object1113 + field6311: Object778 +} + +type Object11110 @Directive21(argument61 : "stringValue45613") @Directive44(argument97 : ["stringValue45612"]) { + field58619: Scalar2 + field58620: String + field58621: String +} + +type Object11111 @Directive21(argument61 : "stringValue45615") @Directive44(argument97 : ["stringValue45614"]) { + field58623: String + field58624: String + field58625: String + field58626: String +} + +type Object11112 @Directive21(argument61 : "stringValue45621") @Directive44(argument97 : ["stringValue45620"]) { + field58629: String + field58630: String +} + +type Object11113 @Directive44(argument97 : ["stringValue45622"]) { + field58632(argument2514: InputObject2134!): Object5871 @Directive35(argument89 : "stringValue45624", argument90 : true, argument91 : "stringValue45623", argument92 : 1030, argument93 : "stringValue45625", argument94 : false) + field58633(argument2515: InputObject2135!): Object11114 @Directive35(argument89 : "stringValue45628", argument90 : true, argument91 : "stringValue45627", argument92 : 1031, argument93 : "stringValue45629", argument94 : false) + field58637(argument2516: InputObject2134!): Object5871 @Directive35(argument89 : "stringValue45636", argument90 : true, argument91 : "stringValue45635", argument92 : 1032, argument93 : "stringValue45637", argument94 : false) + field58638(argument2517: InputObject2135!): Object11116 @Directive35(argument89 : "stringValue45639", argument90 : true, argument91 : "stringValue45638", argument92 : 1033, argument93 : "stringValue45640", argument94 : false) + field58649(argument2518: InputObject2136!): Object11118 @Directive35(argument89 : "stringValue45646", argument90 : true, argument91 : "stringValue45645", argument92 : 1034, argument93 : "stringValue45647", argument94 : false) + field58664(argument2519: InputObject2137!): Object5901 @Directive35(argument89 : "stringValue45660", argument90 : true, argument91 : "stringValue45659", argument92 : 1035, argument93 : "stringValue45661", argument94 : false) + field58665(argument2520: InputObject2137!): Object5901 @Directive35(argument89 : "stringValue45664", argument90 : true, argument91 : "stringValue45663", argument92 : 1036, argument93 : "stringValue45665", argument94 : false) + field58666(argument2521: InputObject2137!): Object11123 @Directive35(argument89 : "stringValue45667", argument90 : false, argument91 : "stringValue45666", argument92 : 1037, argument93 : "stringValue45668", argument94 : false) + field58671(argument2522: InputObject2138!): Object11124 @Directive35(argument89 : "stringValue45672", argument90 : true, argument91 : "stringValue45671", argument92 : 1038, argument93 : "stringValue45673", argument94 : false) + field58674(argument2523: InputObject2139!): Object11125 @Directive35(argument89 : "stringValue45678", argument90 : true, argument91 : "stringValue45677", argument92 : 1039, argument93 : "stringValue45679", argument94 : false) + field58676(argument2524: InputObject2140!): Object5900 @Directive35(argument89 : "stringValue45684", argument90 : true, argument91 : "stringValue45683", argument92 : 1040, argument93 : "stringValue45685", argument94 : false) + field58677(argument2525: InputObject2141!): Object11126 @Directive35(argument89 : "stringValue45688", argument90 : true, argument91 : "stringValue45687", argument92 : 1041, argument93 : "stringValue45689", argument94 : false) + field58679(argument2526: InputObject2142!): Object11127 @Directive35(argument89 : "stringValue45694", argument90 : true, argument91 : "stringValue45693", argument92 : 1042, argument93 : "stringValue45695", argument94 : false) + field58681(argument2527: InputObject2143!): Object11128 @Directive35(argument89 : "stringValue45700", argument90 : false, argument91 : "stringValue45699", argument92 : 1043, argument93 : "stringValue45701", argument94 : false) + field58692(argument2528: InputObject2144!): Object11130 @Directive35(argument89 : "stringValue45708", argument90 : true, argument91 : "stringValue45707", argument92 : 1044, argument93 : "stringValue45709", argument94 : false) + field58694(argument2529: InputObject2145!): Object11131 @Directive35(argument89 : "stringValue45714", argument90 : true, argument91 : "stringValue45713", argument92 : 1045, argument93 : "stringValue45715", argument94 : false) + field58696(argument2530: InputObject2146!): Object11132 @Directive35(argument89 : "stringValue45720", argument90 : true, argument91 : "stringValue45719", argument92 : 1046, argument93 : "stringValue45721", argument94 : false) + field58700(argument2531: InputObject2147!): Object11133 @Directive35(argument89 : "stringValue45727", argument90 : true, argument91 : "stringValue45726", argument92 : 1047, argument93 : "stringValue45728", argument94 : false) + field58704(argument2532: InputObject2148!): Object5897 @Directive35(argument89 : "stringValue45733", argument90 : true, argument91 : "stringValue45732", argument92 : 1048, argument93 : "stringValue45734", argument94 : false) + field58705(argument2533: InputObject2148!): Object5897 @Directive35(argument89 : "stringValue45737", argument90 : true, argument91 : "stringValue45736", argument92 : 1049, argument93 : "stringValue45738", argument94 : false) + field58706(argument2534: InputObject2149!): Object11134 @Directive35(argument89 : "stringValue45740", argument90 : true, argument91 : "stringValue45739", argument92 : 1050, argument93 : "stringValue45741", argument94 : false) + field58708(argument2535: InputObject2149!): Object11134 @Directive35(argument89 : "stringValue45746", argument90 : true, argument91 : "stringValue45745", argument92 : 1051, argument93 : "stringValue45747", argument94 : false) + field58709(argument2536: InputObject2150!): Object11135 @Directive35(argument89 : "stringValue45749", argument90 : true, argument91 : "stringValue45748", argument92 : 1052, argument93 : "stringValue45750", argument94 : false) + field58713(argument2537: InputObject2136!): Object11118 @Directive35(argument89 : "stringValue45755", argument90 : true, argument91 : "stringValue45754", argument92 : 1053, argument93 : "stringValue45756", argument94 : false) + field58714(argument2538: InputObject2135!): Object11136 @Directive35(argument89 : "stringValue45758", argument90 : true, argument91 : "stringValue45757", argument92 : 1054, argument93 : "stringValue45759", argument94 : false) + field58723(argument2539: InputObject2151!): Object11140 @Directive35(argument89 : "stringValue45769", argument90 : true, argument91 : "stringValue45768", argument92 : 1055, argument93 : "stringValue45770", argument94 : false) + field58751(argument2540: InputObject2140!): Object5900 @Directive35(argument89 : "stringValue45779", argument90 : true, argument91 : "stringValue45778", argument92 : 1056, argument93 : "stringValue45780", argument94 : false) + field58752(argument2541: InputObject2152!): Object11143 @Directive35(argument89 : "stringValue45782", argument90 : true, argument91 : "stringValue45781", argument92 : 1057, argument93 : "stringValue45783", argument94 : false) + field58754(argument2542: InputObject2153!): Object11144 @Directive35(argument89 : "stringValue45788", argument90 : true, argument91 : "stringValue45787", argument92 : 1058, argument93 : "stringValue45789", argument94 : false) + field58800(argument2543: InputObject2154!): Object11148 @Directive35(argument89 : "stringValue45803", argument90 : true, argument91 : "stringValue45802", argument92 : 1059, argument93 : "stringValue45804", argument94 : false) + field58802(argument2544: InputObject2155!): Object5917 @Directive35(argument89 : "stringValue45809", argument90 : true, argument91 : "stringValue45808", argument92 : 1060, argument93 : "stringValue45810", argument94 : false) + field58803(argument2545: InputObject2155!): Object5917 @Directive35(argument89 : "stringValue45813", argument90 : true, argument91 : "stringValue45812", argument92 : 1061, argument93 : "stringValue45814", argument94 : false) + field58804(argument2546: InputObject2156!): Object11149 @Directive35(argument89 : "stringValue45816", argument90 : true, argument91 : "stringValue45815", argument92 : 1062, argument93 : "stringValue45817", argument94 : false) + field58807(argument2547: InputObject2157!): Object11150 @Directive35(argument89 : "stringValue45822", argument90 : true, argument91 : "stringValue45821", argument93 : "stringValue45823", argument94 : false) + field58812(argument2548: InputObject2158!): Object11151 @Directive35(argument89 : "stringValue45828", argument90 : true, argument91 : "stringValue45827", argument92 : 1063, argument93 : "stringValue45829", argument94 : false) + field58815(argument2549: InputObject2159!): Object11126 @Directive35(argument89 : "stringValue45836", argument90 : true, argument91 : "stringValue45835", argument92 : 1064, argument93 : "stringValue45837", argument94 : false) + field58816(argument2550: InputObject2160!): Object11153 @Directive35(argument89 : "stringValue45840", argument90 : true, argument91 : "stringValue45839", argument92 : 1065, argument93 : "stringValue45841", argument94 : false) + field58831(argument2551: InputObject2161!): Object11157 @Directive35(argument89 : "stringValue45852", argument90 : true, argument91 : "stringValue45851", argument92 : 1066, argument93 : "stringValue45853", argument94 : false) + field58833(argument2552: InputObject2162!): Object11158 @Directive35(argument89 : "stringValue45858", argument90 : true, argument91 : "stringValue45857", argument92 : 1067, argument93 : "stringValue45859", argument94 : false) + field58835(argument2553: InputObject2163!): Object11159 @Directive35(argument89 : "stringValue45864", argument90 : true, argument91 : "stringValue45863", argument92 : 1068, argument93 : "stringValue45865", argument94 : false) + field58839(argument2554: InputObject2164!): Object11161 @Directive35(argument89 : "stringValue45872", argument90 : true, argument91 : "stringValue45871", argument92 : 1069, argument93 : "stringValue45873", argument94 : false) + field58843(argument2555: InputObject2165!): Object11162 @Directive35(argument89 : "stringValue45878", argument90 : true, argument91 : "stringValue45877", argument92 : 1070, argument93 : "stringValue45879", argument94 : false) + field58851(argument2556: InputObject2166!): Object11165 @Directive35(argument89 : "stringValue45888", argument90 : true, argument91 : "stringValue45887", argument93 : "stringValue45889", argument94 : false) + field58853(argument2557: InputObject2167!): Object11166 @Directive35(argument89 : "stringValue45894", argument90 : true, argument91 : "stringValue45893", argument92 : 1071, argument93 : "stringValue45895", argument94 : false) +} + +type Object11114 @Directive21(argument61 : "stringValue45632") @Directive44(argument97 : ["stringValue45631"]) { + field58634: [Object11115] +} + +type Object11115 @Directive21(argument61 : "stringValue45634") @Directive44(argument97 : ["stringValue45633"]) { + field58635: String + field58636: Scalar5 +} + +type Object11116 @Directive21(argument61 : "stringValue45642") @Directive44(argument97 : ["stringValue45641"]) { + field58639: Boolean + field58640: Object11117 + field58647: Object5902 + field58648: Object5864 +} + +type Object11117 @Directive21(argument61 : "stringValue45644") @Directive44(argument97 : ["stringValue45643"]) { + field58641: String + field58642: String + field58643: String + field58644: Scalar2 + field58645: String + field58646: String +} + +type Object11118 @Directive21(argument61 : "stringValue45650") @Directive44(argument97 : ["stringValue45649"]) { + field58650: [Object11119] +} + +type Object11119 @Directive21(argument61 : "stringValue45652") @Directive44(argument97 : ["stringValue45651"]) { + field58651: [Object11120]! + field58658: [Object11122]! +} + +type Object1112 @Directive20(argument58 : "stringValue5790", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5789") @Directive31 @Directive44(argument97 : ["stringValue5791", "stringValue5792"]) { + field6298: Float + field6299: Scalar2 +} + +type Object11120 @Directive21(argument61 : "stringValue45654") @Directive44(argument97 : ["stringValue45653"]) { + field58652: String! + field58653: String! + field58654: Scalar2! + field58655: [Object11121]! +} + +type Object11121 @Directive21(argument61 : "stringValue45656") @Directive44(argument97 : ["stringValue45655"]) { + field58656: Scalar2! + field58657: [Scalar2]! +} + +type Object11122 @Directive21(argument61 : "stringValue45658") @Directive44(argument97 : ["stringValue45657"]) { + field58659: Scalar2! + field58660: String! + field58661: String! + field58662: String + field58663: String +} + +type Object11123 @Directive21(argument61 : "stringValue45670") @Directive44(argument97 : ["stringValue45669"]) { + field58667: String + field58668: String + field58669: Scalar2 + field58670: Boolean +} + +type Object11124 @Directive21(argument61 : "stringValue45676") @Directive44(argument97 : ["stringValue45675"]) { + field58672: Object5861 + field58673: [Object5857] +} + +type Object11125 @Directive21(argument61 : "stringValue45682") @Directive44(argument97 : ["stringValue45681"]) { + field58675: [Object5861] +} + +type Object11126 @Directive21(argument61 : "stringValue45692") @Directive44(argument97 : ["stringValue45691"]) { + field58678: [Object5900] +} + +type Object11127 @Directive21(argument61 : "stringValue45698") @Directive44(argument97 : ["stringValue45697"]) { + field58680: Scalar1! +} + +type Object11128 @Directive21(argument61 : "stringValue45704") @Directive44(argument97 : ["stringValue45703"]) { + field58682: Object11129 +} + +type Object11129 @Directive21(argument61 : "stringValue45706") @Directive44(argument97 : ["stringValue45705"]) { + field58683: Scalar2 + field58684: String! + field58685: String! + field58686: String! + field58687: String + field58688: String + field58689: String + field58690: String + field58691: String +} + +type Object1113 @Directive20(argument58 : "stringValue5794", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5793") @Directive31 @Directive44(argument97 : ["stringValue5795", "stringValue5796"]) { + field6301: Int + field6302: Float + field6303: Int + field6304: String + field6305: String + field6306: Scalar2 + field6307: String + field6308: String + field6309: Int + field6310: Boolean +} + +type Object11130 @Directive21(argument61 : "stringValue45712") @Directive44(argument97 : ["stringValue45711"]) { + field58693: Scalar1 +} + +type Object11131 @Directive21(argument61 : "stringValue45718") @Directive44(argument97 : ["stringValue45717"]) { + field58695: Object5868! +} + +type Object11132 @Directive21(argument61 : "stringValue45724") @Directive44(argument97 : ["stringValue45723"]) { + field58697: Enum2749 + field58698: Enum2749 + field58699: Enum2749 +} + +type Object11133 @Directive21(argument61 : "stringValue45731") @Directive44(argument97 : ["stringValue45730"]) { + field58701: Boolean! + field58702: Boolean! + field58703: String +} + +type Object11134 @Directive21(argument61 : "stringValue45744") @Directive44(argument97 : ["stringValue45743"]) { + field58707: [Object5898] +} + +type Object11135 @Directive21(argument61 : "stringValue45753") @Directive44(argument97 : ["stringValue45752"]) { + field58710: [Object5911]! + field58711: [Object5893]! + field58712: [Object5863]! +} + +type Object11136 @Directive21(argument61 : "stringValue45761") @Directive44(argument97 : ["stringValue45760"]) { + field58715: [Object11137] + field58720: [Object11139] +} + +type Object11137 @Directive21(argument61 : "stringValue45763") @Directive44(argument97 : ["stringValue45762"]) { + field58716: Object11138 + field58719: [Object11138] +} + +type Object11138 @Directive21(argument61 : "stringValue45765") @Directive44(argument97 : ["stringValue45764"]) { + field58717: String + field58718: Scalar2 +} + +type Object11139 @Directive21(argument61 : "stringValue45767") @Directive44(argument97 : ["stringValue45766"]) { + field58721: String + field58722: String +} + +type Object1114 implements Interface76 @Directive21(argument61 : "stringValue5798") @Directive22(argument62 : "stringValue5797") @Directive31 @Directive44(argument97 : ["stringValue5799", "stringValue5800", "stringValue5801"]) @Directive45(argument98 : ["stringValue5802"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union148] + field5221: Boolean + field5281: Object909 + field6329: [Object1115] +} + +type Object11140 @Directive21(argument61 : "stringValue45773") @Directive44(argument97 : ["stringValue45772"]) { + field58724: [Object11141] + field58747: Object11142 +} + +type Object11141 @Directive21(argument61 : "stringValue45775") @Directive44(argument97 : ["stringValue45774"]) { + field58725: Scalar2 + field58726: Scalar2 + field58727: String + field58728: String + field58729: Scalar2 + field58730: String + field58731: String + field58732: String + field58733: String + field58734: String + field58735: String + field58736: Scalar2 + field58737: Object5861 + field58738: Scalar2 + field58739: Scalar2 + field58740: Scalar2 + field58741: Scalar2 + field58742: Scalar2 + field58743: Float + field58744: Float + field58745: Scalar2 + field58746: Scalar2 +} + +type Object11142 @Directive21(argument61 : "stringValue45777") @Directive44(argument97 : ["stringValue45776"]) { + field58748: Int + field58749: Scalar2 + field58750: String +} + +type Object11143 @Directive21(argument61 : "stringValue45786") @Directive44(argument97 : ["stringValue45785"]) { + field58753: [Object5857] +} + +type Object11144 @Directive21(argument61 : "stringValue45795") @Directive44(argument97 : ["stringValue45794"]) { + field58755: [Object11145] + field58794: Object11147 +} + +type Object11145 @Directive21(argument61 : "stringValue45797") @Directive44(argument97 : ["stringValue45796"]) { + field58756: Scalar2 + field58757: Float + field58758: Int + field58759: Int + field58760: String + field58761: String + field58762: String + field58763: Scalar2 + field58764: Boolean + field58765: String + field58766: Scalar2 + field58767: String + field58768: String + field58769: String + field58770: Object11146 + field58777: String + field58778: Scalar2 + field58779: String + field58780: String + field58781: String + field58782: String + field58783: String + field58784: String + field58785: Scalar2 + field58786: String + field58787: Scalar2 + field58788: Boolean + field58789: Boolean + field58790: Boolean + field58791: Float + field58792: Float + field58793: String +} + +type Object11146 @Directive21(argument61 : "stringValue45799") @Directive44(argument97 : ["stringValue45798"]) { + field58771: Scalar2 + field58772: String + field58773: String + field58774: String + field58775: String + field58776: String +} + +type Object11147 @Directive21(argument61 : "stringValue45801") @Directive44(argument97 : ["stringValue45800"]) { + field58795: Int + field58796: Scalar2 + field58797: String + field58798: Int + field58799: Scalar2 +} + +type Object11148 @Directive21(argument61 : "stringValue45807") @Directive44(argument97 : ["stringValue45806"]) { + field58801: [Object5893]! +} + +type Object11149 @Directive21(argument61 : "stringValue45820") @Directive44(argument97 : ["stringValue45819"]) { + field58805: [Object5864] + field58806: Scalar2 +} + +type Object1115 @Directive20(argument58 : "stringValue5807", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5806") @Directive31 @Directive44(argument97 : ["stringValue5808", "stringValue5809"]) { + field6313: [Object1116] + field6327: Object891 + field6328: String +} + +type Object11150 @Directive21(argument61 : "stringValue45826") @Directive44(argument97 : ["stringValue45825"]) { + field58808: Boolean! + field58809: Boolean! + field58810: Boolean! + field58811: Boolean +} + +type Object11151 @Directive21(argument61 : "stringValue45832") @Directive44(argument97 : ["stringValue45831"]) { + field58813: [Object11152] +} + +type Object11152 @Directive21(argument61 : "stringValue45834") @Directive44(argument97 : ["stringValue45833"]) { + field58814: String +} + +type Object11153 @Directive21(argument61 : "stringValue45844") @Directive44(argument97 : ["stringValue45843"]) { + field58817: [Object11154]! + field58822: Scalar2 + field58823: Enum1499 + field58824: Enum1500 + field58825: [Object11155]! + field58828: [Object11156]! +} + +type Object11154 @Directive21(argument61 : "stringValue45846") @Directive44(argument97 : ["stringValue45845"]) { + field58818: Scalar2! + field58819: String! + field58820: String! + field58821: [Enum1499]! +} + +type Object11155 @Directive21(argument61 : "stringValue45848") @Directive44(argument97 : ["stringValue45847"]) { + field58826: Scalar2! + field58827: String! +} + +type Object11156 @Directive21(argument61 : "stringValue45850") @Directive44(argument97 : ["stringValue45849"]) { + field58829: Scalar2! + field58830: String! +} + +type Object11157 @Directive21(argument61 : "stringValue45856") @Directive44(argument97 : ["stringValue45855"]) { + field58832: [String] +} + +type Object11158 @Directive21(argument61 : "stringValue45862") @Directive44(argument97 : ["stringValue45861"]) { + field58834: [Object5903]! +} + +type Object11159 @Directive21(argument61 : "stringValue45868") @Directive44(argument97 : ["stringValue45867"]) { + field58836: [Object11160]! +} + +type Object1116 @Directive20(argument58 : "stringValue5811", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5810") @Directive31 @Directive44(argument97 : ["stringValue5812", "stringValue5813"]) { + field6314: String + field6315: Object898 + field6316: String + field6317: Object923 + field6318: Object899 + field6319: Object398 + field6320: String + field6321: String + field6322: String + field6323: String + field6324: [Enum270] + field6325: [Object399] + field6326: Interface3 +} + +type Object11160 @Directive21(argument61 : "stringValue45870") @Directive44(argument97 : ["stringValue45869"]) { + field58837: String! + field58838: Enum1495 +} + +type Object11161 @Directive21(argument61 : "stringValue45876") @Directive44(argument97 : ["stringValue45875"]) { + field58840: [Object5904]! + field58841: String! + field58842: Enum1495! +} + +type Object11162 @Directive21(argument61 : "stringValue45882") @Directive44(argument97 : ["stringValue45881"]) { + field58844: [Object5905]! + field58845: Object11163! +} + +type Object11163 @Directive21(argument61 : "stringValue45884") @Directive44(argument97 : ["stringValue45883"]) { + field58846: Scalar2 + field58847: Object11164 +} + +type Object11164 @Directive21(argument61 : "stringValue45886") @Directive44(argument97 : ["stringValue45885"]) { + field58848: String! + field58849: String! + field58850: Enum1495! +} + +type Object11165 @Directive21(argument61 : "stringValue45892") @Directive44(argument97 : ["stringValue45891"]) { + field58852: [Object5864]! +} + +type Object11166 @Directive21(argument61 : "stringValue45898") @Directive44(argument97 : ["stringValue45897"]) { + field58854: [Object11167]! + field58867: Scalar2! +} + +type Object11167 @Directive21(argument61 : "stringValue45900") @Directive44(argument97 : ["stringValue45899"]) { + field58855: Object11168! + field58858: Object5893! + field58859: String! + field58860: Object11169 +} + +type Object11168 @Directive21(argument61 : "stringValue45902") @Directive44(argument97 : ["stringValue45901"]) { + field58856: Object5864 + field58857: Object5868 +} + +type Object11169 @Directive21(argument61 : "stringValue45904") @Directive44(argument97 : ["stringValue45903"]) { + field58861: Object11170 + field58865: Object11171 +} + +type Object1117 implements Interface76 @Directive21(argument61 : "stringValue5815") @Directive22(argument62 : "stringValue5814") @Directive31 @Directive44(argument97 : ["stringValue5816", "stringValue5817", "stringValue5818"]) @Directive45(argument98 : ["stringValue5819"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union149] + field5281: Object909 + field5547: Object951 + field5624: Object965 + field6330: [Object1116] @Directive14(argument51 : "stringValue5823") +} + +type Object11170 @Directive21(argument61 : "stringValue45906") @Directive44(argument97 : ["stringValue45905"]) { + field58862: Enum2749 + field58863: Enum2749 + field58864: Enum2749 +} + +type Object11171 @Directive21(argument61 : "stringValue45908") @Directive44(argument97 : ["stringValue45907"]) { + field58866: Scalar1! +} + +type Object11172 @Directive44(argument97 : ["stringValue45909"]) { + field58869(argument2558: InputObject2168!): Object11173 @Directive35(argument89 : "stringValue45911", argument90 : false, argument91 : "stringValue45910", argument92 : 1072, argument93 : "stringValue45912", argument94 : true) + field58976(argument2559: InputObject2169!): Object11187 @Directive35(argument89 : "stringValue45944", argument90 : false, argument91 : "stringValue45943", argument92 : 1073, argument93 : "stringValue45945", argument94 : true) +} + +type Object11173 @Directive21(argument61 : "stringValue45915") @Directive44(argument97 : ["stringValue45914"]) { + field58870: Object11174 +} + +type Object11174 @Directive21(argument61 : "stringValue45917") @Directive44(argument97 : ["stringValue45916"]) { + field58871: Scalar2 + field58872: String + field58873: Scalar4 + field58874: String + field58875: String + field58876: String + field58877: String + field58878: Boolean + field58879: Boolean + field58880: [Object11175!] + field58888: String + field58889: Boolean + field58890: [String!] + field58891: [Object11176!] + field58900: [Object5921!] + field58901: Boolean! + field58902: Boolean @deprecated + field58903: [Object11177!] + field58928: [String!] + field58929: Int! + field58930: Object11179 + field58937: [Object11180!] + field58958: Int + field58959: [Object11180!] + field58960: Int + field58961: [String!] + field58962: Boolean! + field58963: [Object5921!] + field58964: Boolean @deprecated + field58965: Scalar2! + field58966: Object11184 +} + +type Object11175 @Directive21(argument61 : "stringValue45919") @Directive44(argument97 : ["stringValue45918"]) { + field58881: String! + field58882: String! + field58883: String + field58884: String! + field58885: String + field58886: String + field58887: String +} + +type Object11176 @Directive21(argument61 : "stringValue45921") @Directive44(argument97 : ["stringValue45920"]) { + field58892: Scalar2 + field58893: Float + field58894: Int + field58895: Scalar2 + field58896: Float + field58897: String + field58898: String + field58899: String +} + +type Object11177 @Directive21(argument61 : "stringValue45923") @Directive44(argument97 : ["stringValue45922"]) { + field58904: Scalar2! + field58905: String + field58906: String + field58907: String + field58908: Boolean + field58909: Scalar2 + field58910: String + field58911: String + field58912: String + field58913: Boolean + field58914: Boolean + field58915: Scalar2 + field58916: Float + field58917: String + field58918: String + field58919: Float + field58920: Int + field58921: Int + field58922: Object11178 + field58926: Boolean + field58927: Boolean +} + +type Object11178 @Directive21(argument61 : "stringValue45925") @Directive44(argument97 : ["stringValue45924"]) { + field58923: Float! + field58924: String! + field58925: Scalar2 +} + +type Object11179 @Directive21(argument61 : "stringValue45927") @Directive44(argument97 : ["stringValue45926"]) { + field58931: Scalar4! + field58932: Scalar2! + field58933: Scalar2! + field58934: String! + field58935: String + field58936: Boolean! +} + +type Object1118 implements Interface76 @Directive21(argument61 : "stringValue5825") @Directive22(argument62 : "stringValue5824") @Directive31 @Directive44(argument97 : ["stringValue5826", "stringValue5827", "stringValue5828"]) @Directive45(argument98 : ["stringValue5829"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union150] + field5221: Boolean + field6334: [Object1119] +} + +type Object11180 @Directive21(argument61 : "stringValue45929") @Directive44(argument97 : ["stringValue45928"]) { + field58938: Scalar2! + field58939: Object11181 + field58946: Object11181 + field58947: Scalar4! + field58948: String! + field58949: String + field58950: Object11182 + field58954: Object11183 +} + +type Object11181 @Directive21(argument61 : "stringValue45931") @Directive44(argument97 : ["stringValue45930"]) { + field58940: Scalar2! + field58941: String + field58942: Scalar4 + field58943: String + field58944: String + field58945: Boolean +} + +type Object11182 @Directive21(argument61 : "stringValue45933") @Directive44(argument97 : ["stringValue45932"]) { + field58951: Scalar2! + field58952: String + field58953: String +} + +type Object11183 @Directive21(argument61 : "stringValue45935") @Directive44(argument97 : ["stringValue45934"]) { + field58955: String! + field58956: String! + field58957: String! +} + +type Object11184 @Directive21(argument61 : "stringValue45937") @Directive44(argument97 : ["stringValue45936"]) { + field58967: String! + field58968: [Object11185!]! +} + +type Object11185 @Directive21(argument61 : "stringValue45939") @Directive44(argument97 : ["stringValue45938"]) { + field58969: Enum2753! + field58970: String! + field58971: String + field58972: Object11186 + field58975: String! +} + +type Object11186 @Directive21(argument61 : "stringValue45942") @Directive44(argument97 : ["stringValue45941"]) { + field58973: String! + field58974: String! +} + +type Object11187 @Directive21(argument61 : "stringValue45949") @Directive44(argument97 : ["stringValue45948"]) { + field58977: [Object11180!]! +} + +type Object11188 @Directive44(argument97 : ["stringValue45950"]) { + field58979(argument2560: InputObject2170!): Object11189 @Directive35(argument89 : "stringValue45952", argument90 : false, argument91 : "stringValue45951", argument92 : 1074, argument93 : "stringValue45953", argument94 : false) +} + +type Object11189 @Directive21(argument61 : "stringValue45956") @Directive44(argument97 : ["stringValue45955"]) { + field58980: Object11190 +} + +type Object1119 @Directive20(argument58 : "stringValue5834", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5833") @Directive31 @Directive44(argument97 : ["stringValue5835", "stringValue5836"]) { + field6331: String + field6332: String + field6333: String +} + +type Object11190 @Directive21(argument61 : "stringValue45958") @Directive44(argument97 : ["stringValue45957"]) { + field58981: Scalar2 + field58982: [Object11191] + field58985: [Object11192] + field58988: [Object11193] +} + +type Object11191 @Directive21(argument61 : "stringValue45960") @Directive44(argument97 : ["stringValue45959"]) { + field58983: String + field58984: String +} + +type Object11192 @Directive21(argument61 : "stringValue45962") @Directive44(argument97 : ["stringValue45961"]) { + field58986: String + field58987: [Object11191] +} + +type Object11193 @Directive21(argument61 : "stringValue45964") @Directive44(argument97 : ["stringValue45963"]) { + field58989: String + field58990: String +} + +type Object11194 @Directive44(argument97 : ["stringValue45965"]) { + field58992(argument2561: InputObject2171!): Object11195 @Directive35(argument89 : "stringValue45967", argument90 : true, argument91 : "stringValue45966", argument93 : "stringValue45968", argument94 : false) + field58994(argument2562: InputObject2172!): Object11196 @Directive35(argument89 : "stringValue45973", argument90 : true, argument91 : "stringValue45972", argument93 : "stringValue45974", argument94 : false) + field58997(argument2563: InputObject2173!): Object11197 @Directive35(argument89 : "stringValue45979", argument90 : true, argument91 : "stringValue45978", argument93 : "stringValue45980", argument94 : false) + field59000(argument2564: InputObject2174!): Object11198 @Directive35(argument89 : "stringValue45985", argument90 : true, argument91 : "stringValue45984", argument93 : "stringValue45986", argument94 : false) + field59005(argument2565: InputObject2175!): Object11199 @Directive35(argument89 : "stringValue45991", argument90 : true, argument91 : "stringValue45990", argument93 : "stringValue45992", argument94 : false) + field59008: Object11200 @Directive35(argument89 : "stringValue45997", argument90 : true, argument91 : "stringValue45996", argument93 : "stringValue45998", argument94 : false) + field59013: Object11201 @Directive35(argument89 : "stringValue46002", argument90 : true, argument91 : "stringValue46001", argument93 : "stringValue46003", argument94 : false) +} + +type Object11195 @Directive21(argument61 : "stringValue45971") @Directive44(argument97 : ["stringValue45970"]) { + field58993: Boolean! +} + +type Object11196 @Directive21(argument61 : "stringValue45977") @Directive44(argument97 : ["stringValue45976"]) { + field58995: Boolean! + field58996: Boolean! +} + +type Object11197 @Directive21(argument61 : "stringValue45983") @Directive44(argument97 : ["stringValue45982"]) { + field58998: String + field58999: String +} + +type Object11198 @Directive21(argument61 : "stringValue45989") @Directive44(argument97 : ["stringValue45988"]) { + field59001: Boolean! + field59002: Boolean! + field59003: Boolean! + field59004: Boolean! +} + +type Object11199 @Directive21(argument61 : "stringValue45995") @Directive44(argument97 : ["stringValue45994"]) { + field59006: Float + field59007: Scalar1 +} + +type Object112 @Directive21(argument61 : "stringValue418") @Directive44(argument97 : ["stringValue417"]) { + field746: [Union13] + field786: String +} + +type Object1120 @Directive22(argument62 : "stringValue5837") @Directive31 @Directive44(argument97 : ["stringValue5838", "stringValue5839"]) { + field6335: String + field6336: Int + field6337: Int + field6338: Int + field6339: Scalar2 + field6340: String +} + +type Object11200 @Directive21(argument61 : "stringValue46000") @Directive44(argument97 : ["stringValue45999"]) { + field59009: [Object5927!] + field59010: Object5934 + field59011: String + field59012: Int! +} + +type Object11201 @Directive21(argument61 : "stringValue46005") @Directive44(argument97 : ["stringValue46004"]) { + field59014: Object5926! + field59015: String @deprecated +} + +type Object11202 @Directive44(argument97 : ["stringValue46006"]) { + field59017(argument2566: InputObject2176!): Object11203 @Directive35(argument89 : "stringValue46008", argument90 : true, argument91 : "stringValue46007", argument92 : 1075, argument93 : "stringValue46009", argument94 : false) + field59055: Object11215 @Directive35(argument89 : "stringValue46038", argument90 : true, argument91 : "stringValue46037", argument92 : 1076, argument93 : "stringValue46039", argument94 : false) + field59064(argument2567: InputObject2178!): Object11218 @Directive35(argument89 : "stringValue46047", argument90 : false, argument91 : "stringValue46046", argument92 : 1077, argument93 : "stringValue46048", argument94 : false) + field59070(argument2568: InputObject2179!): Object11219 @Directive35(argument89 : "stringValue46053", argument90 : true, argument91 : "stringValue46052", argument92 : 1078, argument93 : "stringValue46054", argument94 : false) + field59072(argument2569: InputObject2180!): Object11220 @Directive35(argument89 : "stringValue46059", argument90 : true, argument91 : "stringValue46058", argument92 : 1079, argument93 : "stringValue46060", argument94 : false) + field59092(argument2570: InputObject2181!): Object11226 @Directive35(argument89 : "stringValue46075", argument90 : true, argument91 : "stringValue46074", argument92 : 1080, argument93 : "stringValue46076", argument94 : false) + field59127(argument2571: InputObject2182!): Object11236 @Directive35(argument89 : "stringValue46102", argument90 : true, argument91 : "stringValue46101", argument92 : 1081, argument93 : "stringValue46103", argument94 : false) + field59165: Object11248 @Directive35(argument89 : "stringValue46132", argument90 : true, argument91 : "stringValue46131", argument92 : 1082, argument93 : "stringValue46133", argument94 : false) + field59175(argument2572: InputObject2183!): Object11251 @Directive35(argument89 : "stringValue46141", argument90 : true, argument91 : "stringValue46140", argument92 : 1083, argument93 : "stringValue46142", argument94 : false) +} + +type Object11203 @Directive21(argument61 : "stringValue46013") @Directive44(argument97 : ["stringValue46012"]) { + field59018: Object11204 + field59021: Object11205 + field59040: Union366 + field59054: Object5941 +} + +type Object11204 @Directive21(argument61 : "stringValue46015") @Directive44(argument97 : ["stringValue46014"]) { + field59019: String! + field59020: String +} + +type Object11205 @Directive21(argument61 : "stringValue46017") @Directive44(argument97 : ["stringValue46016"]) { + field59022: Object11206 + field59027: Object11208 +} + +type Object11206 @Directive21(argument61 : "stringValue46019") @Directive44(argument97 : ["stringValue46018"]) { + field59023: String! + field59024: [Object11207]! +} + +type Object11207 @Directive21(argument61 : "stringValue46021") @Directive44(argument97 : ["stringValue46020"]) { + field59025: String! + field59026: Object5942! +} + +type Object11208 @Directive21(argument61 : "stringValue46023") @Directive44(argument97 : ["stringValue46022"]) { + field59028: String! + field59029: [Object11209]! + field59032: [Object11210]! + field59039: String! +} + +type Object11209 @Directive21(argument61 : "stringValue46025") @Directive44(argument97 : ["stringValue46024"]) { + field59030: String! + field59031: String! +} + +type Object1121 @Directive22(argument62 : "stringValue5840") @Directive31 @Directive44(argument97 : ["stringValue5841", "stringValue5842"]) { + field6341: String + field6342: Object1074 +} + +type Object11210 @Directive21(argument61 : "stringValue46027") @Directive44(argument97 : ["stringValue46026"]) { + field59033: Scalar2! + field59034: String! + field59035: Object5942! + field59036: Scalar1! + field59037: Boolean! + field59038: Boolean! +} + +type Object11211 @Directive21(argument61 : "stringValue46030") @Directive44(argument97 : ["stringValue46029"]) { + field59041: String + field59042: String! +} + +type Object11212 @Directive21(argument61 : "stringValue46032") @Directive44(argument97 : ["stringValue46031"]) { + field59043: String! + field59044: String + field59045: [Object11213]! +} + +type Object11213 @Directive21(argument61 : "stringValue46034") @Directive44(argument97 : ["stringValue46033"]) { + field59046: String + field59047: String + field59048: [Object11214]! +} + +type Object11214 @Directive21(argument61 : "stringValue46036") @Directive44(argument97 : ["stringValue46035"]) { + field59049: Scalar2! + field59050: String! + field59051: String + field59052: Object5942! + field59053: Boolean! +} + +type Object11215 @Directive21(argument61 : "stringValue46041") @Directive44(argument97 : ["stringValue46040"]) { + field59056: [Object11216!]! +} + +type Object11216 @Directive21(argument61 : "stringValue46043") @Directive44(argument97 : ["stringValue46042"]) { + field59057: Scalar2! + field59058: Int! + field59059: Object11217! +} + +type Object11217 @Directive21(argument61 : "stringValue46045") @Directive44(argument97 : ["stringValue46044"]) { + field59060: String + field59061: String + field59062: String + field59063: String +} + +type Object11218 @Directive21(argument61 : "stringValue46051") @Directive44(argument97 : ["stringValue46050"]) { + field59065: String! + field59066: String! + field59067: String! + field59068: Boolean! + field59069: Boolean! +} + +type Object11219 @Directive21(argument61 : "stringValue46057") @Directive44(argument97 : ["stringValue46056"]) { + field59071: Boolean +} + +type Object1122 implements Interface76 @Directive21(argument61 : "stringValue5844") @Directive22(argument62 : "stringValue5843") @Directive31 @Directive44(argument97 : ["stringValue5845", "stringValue5846", "stringValue5847"]) @Directive45(argument98 : ["stringValue5848"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union151] + field5221: Boolean + field6349: [Object1123] +} + +type Object11220 @Directive21(argument61 : "stringValue46063") @Directive44(argument97 : ["stringValue46062"]) { + field59073: Object5941 + field59074: Object11221 + field59077: Object11222 + field59082: Object11223 + field59086: [Object11224!] + field59089: Object11225 +} + +type Object11221 @Directive21(argument61 : "stringValue46065") @Directive44(argument97 : ["stringValue46064"]) { + field59075: Scalar2! + field59076: String +} + +type Object11222 @Directive21(argument61 : "stringValue46067") @Directive44(argument97 : ["stringValue46066"]) { + field59078: Scalar2! + field59079: String + field59080: String + field59081: String! +} + +type Object11223 @Directive21(argument61 : "stringValue46069") @Directive44(argument97 : ["stringValue46068"]) { + field59083: Scalar4! + field59084: Scalar4! + field59085: Scalar2! +} + +type Object11224 @Directive21(argument61 : "stringValue46071") @Directive44(argument97 : ["stringValue46070"]) { + field59087: Scalar4! + field59088: Scalar4! +} + +type Object11225 @Directive21(argument61 : "stringValue46073") @Directive44(argument97 : ["stringValue46072"]) { + field59090: String + field59091: String +} + +type Object11226 @Directive21(argument61 : "stringValue46079") @Directive44(argument97 : ["stringValue46078"]) { + field59093: Object5941 + field59094: Union367 + field59096: Union368 + field59113: Union369 +} + +type Object11227 @Directive21(argument61 : "stringValue46082") @Directive44(argument97 : ["stringValue46081"]) { + field59095: [Interface148!]! +} + +type Object11228 @Directive21(argument61 : "stringValue46085") @Directive44(argument97 : ["stringValue46084"]) { + field59097: Object11229! + field59105: Object11230 +} + +type Object11229 @Directive21(argument61 : "stringValue46087") @Directive44(argument97 : ["stringValue46086"]) { + field59098: Scalar2! + field59099: String + field59100: String + field59101: String + field59102: Float + field59103: Object5944 + field59104: Object5944 +} + +type Object1123 @Directive20(argument58 : "stringValue5853", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5852") @Directive31 @Directive44(argument97 : ["stringValue5854", "stringValue5855"]) { + field6343: String + field6344: String + field6345: Object398 + field6346: String + field6347: String + field6348: Boolean +} + +type Object11230 @Directive21(argument61 : "stringValue46089") @Directive44(argument97 : ["stringValue46088"]) { + field59106: String + field59107: Object11231 + field59110: Object11231 + field59111: String + field59112: Object5944 +} + +type Object11231 @Directive21(argument61 : "stringValue46091") @Directive44(argument97 : ["stringValue46090"]) { + field59108: String + field59109: [Object11229] +} + +type Object11232 @Directive21(argument61 : "stringValue46094") @Directive44(argument97 : ["stringValue46093"]) { + field59114: Object11233! + field59119: Object11234! +} + +type Object11233 @Directive21(argument61 : "stringValue46096") @Directive44(argument97 : ["stringValue46095"]) { + field59115: String! + field59116: String! + field59117: String! + field59118: Object5944 +} + +type Object11234 @Directive21(argument61 : "stringValue46098") @Directive44(argument97 : ["stringValue46097"]) { + field59120: String! + field59121: [Object11235!]! + field59126: Object5944 +} + +type Object11235 @Directive21(argument61 : "stringValue46100") @Directive44(argument97 : ["stringValue46099"]) { + field59122: String! + field59123: String! + field59124: Boolean! + field59125: Boolean! +} + +type Object11236 @Directive21(argument61 : "stringValue46106") @Directive44(argument97 : ["stringValue46105"]) { + field59128: Object11237 + field59136: Object11240 + field59152: Union370 + field59160: Object11246 + field59164: Object11230 +} + +type Object11237 @Directive21(argument61 : "stringValue46108") @Directive44(argument97 : ["stringValue46107"]) { + field59129: Object11238 +} + +type Object11238 @Directive21(argument61 : "stringValue46110") @Directive44(argument97 : ["stringValue46109"]) { + field59130: String + field59131: String + field59132: String + field59133: String + field59134: Object11239 +} + +type Object11239 @Directive21(argument61 : "stringValue46112") @Directive44(argument97 : ["stringValue46111"]) { + field59135: Object5944 +} + +type Object1124 implements Interface76 @Directive21(argument61 : "stringValue5857") @Directive22(argument62 : "stringValue5856") @Directive31 @Directive44(argument97 : ["stringValue5858", "stringValue5859", "stringValue5860"]) @Directive45(argument98 : ["stringValue5861"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5220: [Union152] + field5421: String + field6350: [Object1125] +} + +type Object11240 @Directive21(argument61 : "stringValue46114") @Directive44(argument97 : ["stringValue46113"]) { + field59137: String + field59138: String + field59139: Object11241 + field59151: Object11241 +} + +type Object11241 @Directive21(argument61 : "stringValue46116") @Directive44(argument97 : ["stringValue46115"]) { + field59140: String + field59141: [Object11242] +} + +type Object11242 @Directive21(argument61 : "stringValue46118") @Directive44(argument97 : ["stringValue46117"]) { + field59142: String! + field59143: Boolean! + field59144: Object11243 + field59149: Enum2755 + field59150: Boolean +} + +type Object11243 @Directive21(argument61 : "stringValue46120") @Directive44(argument97 : ["stringValue46119"]) { + field59145: String + field59146: String + field59147: String + field59148: Object11239 +} + +type Object11244 @Directive21(argument61 : "stringValue46124") @Directive44(argument97 : ["stringValue46123"]) { + field59153: String! + field59154: Object11245 + field59159: String +} + +type Object11245 @Directive21(argument61 : "stringValue46126") @Directive44(argument97 : ["stringValue46125"]) { + field59155: String + field59156: String + field59157: Object11243 + field59158: String +} + +type Object11246 @Directive21(argument61 : "stringValue46128") @Directive44(argument97 : ["stringValue46127"]) { + field59161: Object11247 +} + +type Object11247 @Directive21(argument61 : "stringValue46130") @Directive44(argument97 : ["stringValue46129"]) { + field59162: String + field59163: String +} + +type Object11248 @Directive21(argument61 : "stringValue46135") @Directive44(argument97 : ["stringValue46134"]) { + field59166: Object11249 +} + +type Object11249 @Directive21(argument61 : "stringValue46137") @Directive44(argument97 : ["stringValue46136"]) { + field59167: String + field59168: String + field59169: String + field59170: Object11250 +} + +type Object1125 @Directive22(argument62 : "stringValue5862") @Directive31 @Directive44(argument97 : ["stringValue5863", "stringValue5864"]) { + field6351: Scalar2! + field6352: String + field6353: String + field6354: [Object768] + field6355: [Object769!] + field6356: String + field6357: String + field6358: Object754 + field6359: String + field6360: String + field6361: String + field6362: String + field6363: String + field6364: String + field6365: String +} + +type Object11250 @Directive21(argument61 : "stringValue46139") @Directive44(argument97 : ["stringValue46138"]) { + field59171: String + field59172: String + field59173: String + field59174: String +} + +type Object11251 @Directive21(argument61 : "stringValue46145") @Directive44(argument97 : ["stringValue46144"]) { + field59176: String! + field59177: Enum2756 +} + +type Object11252 @Directive44(argument97 : ["stringValue46147"]) { + field59179: Object11253 @Directive35(argument89 : "stringValue46149", argument90 : true, argument91 : "stringValue46148", argument92 : 1084, argument93 : "stringValue46150", argument94 : false) + field59181(argument2573: InputObject2184!): Object11254 @Directive35(argument89 : "stringValue46154", argument90 : true, argument91 : "stringValue46153", argument92 : 1085, argument93 : "stringValue46155", argument94 : false) + field59183(argument2574: InputObject2185!): Object11255 @Directive35(argument89 : "stringValue46160", argument90 : true, argument91 : "stringValue46159", argument92 : 1086, argument93 : "stringValue46161", argument94 : false) + field59188(argument2575: InputObject2186!): Object11257 @Directive35(argument89 : "stringValue46168", argument90 : true, argument91 : "stringValue46167", argument92 : 1087, argument93 : "stringValue46169", argument94 : false) + field59191(argument2576: InputObject2187!): Object11258 @Directive35(argument89 : "stringValue46174", argument90 : true, argument91 : "stringValue46173", argument92 : 1088, argument93 : "stringValue46175", argument94 : false) + field59374(argument2577: InputObject2189!): Object11297 @Directive35(argument89 : "stringValue46264", argument90 : true, argument91 : "stringValue46263", argument92 : 1089, argument93 : "stringValue46265", argument94 : false) +} + +type Object11253 @Directive21(argument61 : "stringValue46152") @Directive44(argument97 : ["stringValue46151"]) { + field59180: Boolean! +} + +type Object11254 @Directive21(argument61 : "stringValue46158") @Directive44(argument97 : ["stringValue46157"]) { + field59182: Scalar2! +} + +type Object11255 @Directive21(argument61 : "stringValue46164") @Directive44(argument97 : ["stringValue46163"]) { + field59184: [Object5963]! + field59185: [Object11256]! +} + +type Object11256 @Directive21(argument61 : "stringValue46166") @Directive44(argument97 : ["stringValue46165"]) { + field59186: String! + field59187: String! +} + +type Object11257 @Directive21(argument61 : "stringValue46172") @Directive44(argument97 : ["stringValue46171"]) { + field59189: Object5955! + field59190: Scalar2 +} + +type Object11258 @Directive21(argument61 : "stringValue46181") @Directive44(argument97 : ["stringValue46180"]) { + field59192: Object11259! +} + +type Object11259 @Directive21(argument61 : "stringValue46183") @Directive44(argument97 : ["stringValue46182"]) { + field59193: Object11260! + field59218: Scalar1 + field59219: Object11262 +} + +type Object1126 implements Interface76 @Directive21(argument61 : "stringValue5869") @Directive22(argument62 : "stringValue5868") @Directive31 @Directive44(argument97 : ["stringValue5870", "stringValue5871", "stringValue5872"]) @Directive45(argument98 : ["stringValue5873"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union153] + field5221: Boolean + field5421: String @deprecated + field6369: [Object1127] +} + +type Object11260 @Directive21(argument61 : "stringValue46185") @Directive44(argument97 : ["stringValue46184"]) { + field59194: String! + field59195: String! + field59196: [Object5955]! + field59197: [Object11261]! + field59207: [Object5955] + field59208: [Object5955] + field59209: Scalar2 + field59210: Scalar2 + field59211: [Object5953] + field59212: Boolean! + field59213: Boolean! + field59214: String! + field59215: Scalar2 + field59216: String + field59217: String +} + +type Object11261 @Directive21(argument61 : "stringValue46187") @Directive44(argument97 : ["stringValue46186"]) { + field59198: Scalar2! + field59199: String! + field59200: String + field59201: String + field59202: Boolean + field59203: String + field59204: Int + field59205: Boolean + field59206: Int +} + +type Object11262 @Directive21(argument61 : "stringValue46189") @Directive44(argument97 : ["stringValue46188"]) { + field59220: Object11263 + field59276: Object11275 + field59289: Object11278 + field59318: Object11282 + field59323: Object11283 + field59330: Object11285 + field59350: Object11289 @deprecated + field59357: Object11290 + field59364: Object11293 + field59372: Object11296 +} + +type Object11263 @Directive21(argument61 : "stringValue46191") @Directive44(argument97 : ["stringValue46190"]) { + field59221: String @deprecated + field59222: String @deprecated + field59223: String @deprecated + field59224: Object11264 + field59238: Object11268 + field59251: Object11269 + field59254: [Object11270] + field59260: Object11271 +} + +type Object11264 @Directive21(argument61 : "stringValue46193") @Directive44(argument97 : ["stringValue46192"]) { + field59225: String + field59226: String + field59227: Object11265 +} + +type Object11265 @Directive21(argument61 : "stringValue46195") @Directive44(argument97 : ["stringValue46194"]) { + field59228: String! + field59229: Object11266! + field59237: String! +} + +type Object11266 @Directive21(argument61 : "stringValue46197") @Directive44(argument97 : ["stringValue46196"]) { + field59230: String! + field59231: Scalar1! + field59232: String! + field59233: Object11267 +} + +type Object11267 @Directive21(argument61 : "stringValue46199") @Directive44(argument97 : ["stringValue46198"]) { + field59234: String! + field59235: String + field59236: Scalar1 +} + +type Object11268 @Directive21(argument61 : "stringValue46201") @Directive44(argument97 : ["stringValue46200"]) { + field59239: String + field59240: String + field59241: String + field59242: String + field59243: String + field59244: String + field59245: String + field59246: String + field59247: Object11266 + field59248: Object11266 + field59249: String + field59250: Object5960 +} + +type Object11269 @Directive21(argument61 : "stringValue46203") @Directive44(argument97 : ["stringValue46202"]) { + field59252: String! + field59253: Object11266! +} + +type Object1127 @Directive20(argument58 : "stringValue5878", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5877") @Directive31 @Directive44(argument97 : ["stringValue5879", "stringValue5880"]) { + field6366: Object398 + field6367: String + field6368: String +} + +type Object11270 @Directive21(argument61 : "stringValue46205") @Directive44(argument97 : ["stringValue46204"]) { + field59255: String! + field59256: String! + field59257: String + field59258: String! + field59259: Object11266 +} + +type Object11271 @Directive21(argument61 : "stringValue46207") @Directive44(argument97 : ["stringValue46206"]) { + field59261: [Union371] +} + +type Object11272 @Directive21(argument61 : "stringValue46210") @Directive44(argument97 : ["stringValue46209"]) { + field59262: String! + field59263: String + field59264: String! + field59265: Object11273! + field59269: String + field59270: Object11274 + field59275: String +} + +type Object11273 @Directive21(argument61 : "stringValue46212") @Directive44(argument97 : ["stringValue46211"]) { + field59266: String! + field59267: Scalar1! + field59268: String! +} + +type Object11274 @Directive21(argument61 : "stringValue46214") @Directive44(argument97 : ["stringValue46213"]) { + field59271: String! + field59272: String! + field59273: [String]! + field59274: Enum2759! +} + +type Object11275 @Directive21(argument61 : "stringValue46217") @Directive44(argument97 : ["stringValue46216"]) { + field59277: Object11276! + field59281: Object11276 + field59282: Object11276 + field59283: Object11276 + field59284: Scalar2 + field59285: [Scalar1] + field59286: [Object11277] +} + +type Object11276 @Directive21(argument61 : "stringValue46219") @Directive44(argument97 : ["stringValue46218"]) { + field59278: String + field59279: String + field59280: String +} + +type Object11277 @Directive21(argument61 : "stringValue46221") @Directive44(argument97 : ["stringValue46220"]) { + field59287: String + field59288: String +} + +type Object11278 @Directive21(argument61 : "stringValue46223") @Directive44(argument97 : ["stringValue46222"]) { + field59290: Object11279 + field59311: [Object11281] +} + +type Object11279 @Directive21(argument61 : "stringValue46225") @Directive44(argument97 : ["stringValue46224"]) { + field59291: String! + field59292: String + field59293: [Object11280]! + field59299: Boolean! + field59300: String + field59301: Boolean + field59302: String + field59303: String + field59304: String + field59305: String + field59306: String + field59307: String + field59308: Boolean + field59309: String + field59310: String +} + +type Object1128 implements Interface76 @Directive21(argument61 : "stringValue5882") @Directive22(argument62 : "stringValue5881") @Directive31 @Directive44(argument97 : ["stringValue5883", "stringValue5884", "stringValue5885"]) @Directive45(argument98 : ["stringValue5886"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union154] + field5221: Boolean + field5421: String @deprecated +} + +type Object11280 @Directive21(argument61 : "stringValue46227") @Directive44(argument97 : ["stringValue46226"]) { + field59294: String! + field59295: String! + field59296: String + field59297: String + field59298: String! +} + +type Object11281 @Directive21(argument61 : "stringValue46229") @Directive44(argument97 : ["stringValue46228"]) { + field59312: String! + field59313: String! + field59314: String! + field59315: String + field59316: Boolean! + field59317: Int +} + +type Object11282 @Directive21(argument61 : "stringValue46231") @Directive44(argument97 : ["stringValue46230"]) { + field59319: Object11279 + field59320: [Object11281]! + field59321: Boolean! + field59322: Int +} + +type Object11283 @Directive21(argument61 : "stringValue46233") @Directive44(argument97 : ["stringValue46232"]) { + field59324: Object5957 + field59325: Boolean + field59326: Object11284 +} + +type Object11284 @Directive21(argument61 : "stringValue46235") @Directive44(argument97 : ["stringValue46234"]) { + field59327: Scalar2! + field59328: Scalar2! + field59329: Scalar2! +} + +type Object11285 @Directive21(argument61 : "stringValue46237") @Directive44(argument97 : ["stringValue46236"]) { + field59331: Object11286 + field59345: Object11288 +} + +type Object11286 @Directive21(argument61 : "stringValue46239") @Directive44(argument97 : ["stringValue46238"]) { + field59332: Boolean @deprecated + field59333: Boolean + field59334: Boolean + field59335: Boolean + field59336: Boolean + field59337: [Object11287] + field59343: [[Object11287]] + field59344: Boolean +} + +type Object11287 @Directive21(argument61 : "stringValue46241") @Directive44(argument97 : ["stringValue46240"]) { + field59338: Enum2760! + field59339: String! + field59340: String! + field59341: Boolean! + field59342: Object11266! +} + +type Object11288 @Directive21(argument61 : "stringValue46244") @Directive44(argument97 : ["stringValue46243"]) { + field59346: Boolean + field59347: Boolean + field59348: Boolean + field59349: Boolean +} + +type Object11289 @Directive21(argument61 : "stringValue46246") @Directive44(argument97 : ["stringValue46245"]) { + field59351: Boolean + field59352: String + field59353: String + field59354: String + field59355: String + field59356: String +} + +type Object1129 @Directive20(argument58 : "stringValue5891", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5890") @Directive31 @Directive44(argument97 : ["stringValue5892", "stringValue5893"]) { + field6370: String + field6371: [String] + field6372: Object771 + field6373: String + field6374: String + field6375: Scalar2! + field6376: String + field6377: Float + field6378: Float + field6379: String + field6380: [Object1050] + field6381: Object771 + field6382: [Object771] + field6383: Scalar2 + field6384: Scalar2 + field6385: Scalar1 + field6386: String + field6387: String + field6388: String + field6389: String + field6390: String +} + +type Object11290 @Directive21(argument61 : "stringValue46248") @Directive44(argument97 : ["stringValue46247"]) { + field59358: Enum2761 + field59359: Union372 + field59363: Scalar1 +} + +type Object11291 @Directive21(argument61 : "stringValue46252") @Directive44(argument97 : ["stringValue46251"]) { + field59360: String +} + +type Object11292 @Directive21(argument61 : "stringValue46254") @Directive44(argument97 : ["stringValue46253"]) { + field59361: Scalar2 + field59362: String +} + +type Object11293 @Directive21(argument61 : "stringValue46256") @Directive44(argument97 : ["stringValue46255"]) { + field59365: Object11294 + field59368: Object11295 +} + +type Object11294 @Directive21(argument61 : "stringValue46258") @Directive44(argument97 : ["stringValue46257"]) { + field59366: String! + field59367: String +} + +type Object11295 @Directive21(argument61 : "stringValue46260") @Directive44(argument97 : ["stringValue46259"]) { + field59369: String! + field59370: String + field59371: String! +} + +type Object11296 @Directive21(argument61 : "stringValue46262") @Directive44(argument97 : ["stringValue46261"]) { + field59373: Scalar2 +} + +type Object11297 @Directive21(argument61 : "stringValue46268") @Directive44(argument97 : ["stringValue46267"]) { + field59375: [Object5953]! +} + +type Object11298 @Directive44(argument97 : ["stringValue46269"]) { + field59377(argument2578: InputObject2190!): Object11299 @Directive35(argument89 : "stringValue46271", argument90 : false, argument91 : "stringValue46270", argument92 : 1090, argument93 : "stringValue46272", argument94 : false) + field62195(argument2579: InputObject2190!): Object11299 @Directive35(argument89 : "stringValue47209", argument90 : true, argument91 : "stringValue47208", argument93 : "stringValue47210", argument94 : false) +} + +type Object11299 @Directive21(argument61 : "stringValue46275") @Directive44(argument97 : ["stringValue46274"]) { + field59378: Object11300 + field59577: Scalar1 + field59578: Object11329 + field62130: [Object11702] + field62133: Object11703 + field62183: Object11708 +} + +type Object113 @Directive21(argument61 : "stringValue421") @Directive44(argument97 : ["stringValue420"]) { + field747: String! + field748: Enum61 +} + +type Object1130 implements Interface76 @Directive21(argument61 : "stringValue5895") @Directive22(argument62 : "stringValue5894") @Directive31 @Directive44(argument97 : ["stringValue5896", "stringValue5897", "stringValue5898"]) @Directive45(argument98 : ["stringValue5899"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union155] + field5221: Boolean + field6396: [Object1131] +} + +type Object11300 @Directive21(argument61 : "stringValue46277") @Directive44(argument97 : ["stringValue46276"]) { + field59379: String + field59380: String + field59381: String + field59382: String + field59383: String + field59384: String + field59385: String + field59386: String + field59387: String + field59388: String + field59389: String + field59390: String + field59391: String + field59392: String + field59393: String + field59394: String + field59395: String + field59396: String + field59397: String + field59398: String + field59399: String + field59400: String + field59401: String + field59402: String + field59403: String + field59404: String + field59405: String + field59406: String + field59407: String + field59408: String + field59409: String + field59410: String + field59411: String + field59412: String + field59413: String + field59414: String + field59415: String + field59416: [String] + field59417: [String] + field59418: [String] + field59419: [String] + field59420: [String] + field59421: [String] + field59422: [Object11301] + field59446: [Object11301] + field59447: Int + field59448: Scalar2 + field59449: Scalar2 + field59450: Scalar2 + field59451: Scalar2 + field59452: [Object11305] + field59463: [Object11305] + field59464: [Object11306] + field59488: [Object11305] + field59489: [Object11308] + field59493: Boolean + field59494: Boolean + field59495: Scalar4 + field59496: Object11309 + field59501: [Object11311] + field59507: [Object11312] + field59512: Object11313 + field59544: Object11321 + field59549: String + field59550: String + field59551: String + field59552: Float + field59553: Float + field59554: Float + field59555: Scalar2 + field59556: Object11323 + field59563: String + field59564: String + field59565: Object11326 + field59570: String + field59571: Object11328 +} + +type Object11301 @Directive21(argument61 : "stringValue46279") @Directive44(argument97 : ["stringValue46278"]) { + field59423: Scalar2 + field59424: Scalar2 + field59425: String + field59426: [Object11302] + field59429: Object11303 + field59438: String + field59439: Scalar4 + field59440: Boolean + field59441: [Object11304] + field59445: Scalar2 +} + +type Object11302 @Directive21(argument61 : "stringValue46281") @Directive44(argument97 : ["stringValue46280"]) { + field59427: String + field59428: String +} + +type Object11303 @Directive21(argument61 : "stringValue46283") @Directive44(argument97 : ["stringValue46282"]) { + field59430: Scalar2 + field59431: String + field59432: String + field59433: String + field59434: String + field59435: String + field59436: String + field59437: String +} + +type Object11304 @Directive21(argument61 : "stringValue46285") @Directive44(argument97 : ["stringValue46284"]) { + field59442: Enum2762 + field59443: Scalar2 + field59444: Boolean +} + +type Object11305 @Directive21(argument61 : "stringValue46288") @Directive44(argument97 : ["stringValue46287"]) { + field59453: String + field59454: String + field59455: String + field59456: String + field59457: String + field59458: String + field59459: String + field59460: String + field59461: String + field59462: String +} + +type Object11306 @Directive21(argument61 : "stringValue46290") @Directive44(argument97 : ["stringValue46289"]) { + field59465: Scalar2 + field59466: String + field59467: String + field59468: String + field59469: String + field59470: String + field59471: String + field59472: String + field59473: String + field59474: String + field59475: String + field59476: String + field59477: Object11307 + field59484: String + field59485: String + field59486: String + field59487: Int +} + +type Object11307 @Directive21(argument61 : "stringValue46292") @Directive44(argument97 : ["stringValue46291"]) { + field59478: Scalar2 + field59479: String + field59480: String + field59481: String + field59482: String + field59483: String +} + +type Object11308 @Directive21(argument61 : "stringValue46294") @Directive44(argument97 : ["stringValue46293"]) { + field59490: Int + field59491: String + field59492: String +} + +type Object11309 @Directive21(argument61 : "stringValue46296") @Directive44(argument97 : ["stringValue46295"]) { + field59497: [Object11310] + field59500: String +} + +type Object1131 @Directive20(argument58 : "stringValue5904", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5903") @Directive31 @Directive44(argument97 : ["stringValue5905", "stringValue5906"]) { + field6391: [Int] @deprecated + field6392: String + field6393: Object398 + field6394: String + field6395: Boolean +} + +type Object11310 @Directive21(argument61 : "stringValue46298") @Directive44(argument97 : ["stringValue46297"]) { + field59498: String + field59499: String +} + +type Object11311 @Directive21(argument61 : "stringValue46300") @Directive44(argument97 : ["stringValue46299"]) { + field59502: String + field59503: String + field59504: String + field59505: String + field59506: String +} + +type Object11312 @Directive21(argument61 : "stringValue46302") @Directive44(argument97 : ["stringValue46301"]) { + field59508: String + field59509: Int + field59510: String + field59511: String +} + +type Object11313 @Directive21(argument61 : "stringValue46304") @Directive44(argument97 : ["stringValue46303"]) { + field59513: [Object11314] + field59520: [Object11316] + field59526: [String] + field59527: String + field59528: [Object11317] + field59533: Object11318 +} + +type Object11314 @Directive21(argument61 : "stringValue46306") @Directive44(argument97 : ["stringValue46305"]) { + field59514: [Object11315] + field59517: String + field59518: String + field59519: String +} + +type Object11315 @Directive21(argument61 : "stringValue46308") @Directive44(argument97 : ["stringValue46307"]) { + field59515: String + field59516: String +} + +type Object11316 @Directive21(argument61 : "stringValue46310") @Directive44(argument97 : ["stringValue46309"]) { + field59521: String + field59522: String + field59523: String + field59524: String + field59525: String +} + +type Object11317 @Directive21(argument61 : "stringValue46312") @Directive44(argument97 : ["stringValue46311"]) { + field59529: String + field59530: String + field59531: String + field59532: String +} + +type Object11318 @Directive21(argument61 : "stringValue46314") @Directive44(argument97 : ["stringValue46313"]) { + field59534: Object11319 + field59539: [Object11320] +} + +type Object11319 @Directive21(argument61 : "stringValue46316") @Directive44(argument97 : ["stringValue46315"]) { + field59535: String + field59536: String + field59537: String + field59538: String +} + +type Object1132 implements Interface76 @Directive21(argument61 : "stringValue5911") @Directive22(argument62 : "stringValue5907") @Directive31 @Directive44(argument97 : ["stringValue5908", "stringValue5909", "stringValue5910"]) @Directive45(argument98 : ["stringValue5912"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union156] + field5221: Boolean + field5421: String @deprecated + field5777: Object1 + field6397: [Object1133!] + field6413: [Object1133] +} + +type Object11320 @Directive21(argument61 : "stringValue46318") @Directive44(argument97 : ["stringValue46317"]) { + field59540: String + field59541: String + field59542: [Object11320] + field59543: String +} + +type Object11321 @Directive21(argument61 : "stringValue46320") @Directive44(argument97 : ["stringValue46319"]) { + field59545: Object11316 + field59546: [Object11322] +} + +type Object11322 @Directive21(argument61 : "stringValue46322") @Directive44(argument97 : ["stringValue46321"]) { + field59547: String + field59548: String +} + +type Object11323 @Directive21(argument61 : "stringValue46324") @Directive44(argument97 : ["stringValue46323"]) { + field59557: String + field59558: String + field59559: [Object11324] +} + +type Object11324 @Directive21(argument61 : "stringValue46326") @Directive44(argument97 : ["stringValue46325"]) { + field59560: [Object11325] +} + +type Object11325 @Directive21(argument61 : "stringValue46328") @Directive44(argument97 : ["stringValue46327"]) { + field59561: Float + field59562: Float +} + +type Object11326 @Directive21(argument61 : "stringValue46330") @Directive44(argument97 : ["stringValue46329"]) { + field59566: [Object11327] + field59568: [Object11327] + field59569: [Object11327] +} + +type Object11327 @Directive21(argument61 : "stringValue46332") @Directive44(argument97 : ["stringValue46331"]) { + field59567: String +} + +type Object11328 @Directive21(argument61 : "stringValue46334") @Directive44(argument97 : ["stringValue46333"]) { + field59572: Scalar2 + field59573: String + field59574: Scalar2 + field59575: String + field59576: String +} + +type Object11329 @Directive21(argument61 : "stringValue46336") @Directive44(argument97 : ["stringValue46335"]) { + field59579: [Object11330]! + field62053: Object11693! +} + +type Object1133 @Directive22(argument62 : "stringValue5913") @Directive31 @Directive44(argument97 : ["stringValue5914", "stringValue5915"]) { + field6398: String + field6399: String + field6400: Object13 @deprecated + field6401: Object13 @Directive14(argument51 : "stringValue5916") + field6402: Object398 + field6403: String + field6404: String + field6405: Int + field6406: Object923 + field6407: Enum294 + field6408: String + field6409: Boolean + field6410: Boolean + field6411: String + field6412: String +} + +type Object11330 @Directive21(argument61 : "stringValue46338") @Directive44(argument97 : ["stringValue46337"]) { + field59580: String + field59581: String! + field59582: [Object11331] + field59589: String! + field59590: String + field59591: String + field59592: String + field59593: String + field59594: String + field59595: Object11333 + field59609: Boolean + field59610: String + field59611: [Object11334] + field59629: [Object11336] + field59786: [Object11363] + field59796: [Object11365] + field59823: [Object11369] + field59877: [Object11376] + field59900: String + field59901: [Object11371] + field59902: [Object11378] + field59936: [Object11381] + field59952: [Object11385] + field59960: [Object11386] + field59966: [Object11387] + field59988: [Object11389] + field60431: [Object11453] + field60472: [Object11458] + field60476: [Object11459] + field60492: [Object11462] + field60592: [Object11473] + field60622: Object11477 + field60627: Object11478 + field60632: [Object11479] + field60641: Object11480 + field60646: [Object11481] + field60651: String + field60652: String + field60653: [Object11482] + field60656: Object11483 + field60686: String + field60687: [Object11487] + field60700: Object11488 + field60726: [Object11490] + field60752: [Object11491] + field60756: String + field60757: Object11492 + field60760: [Object11493] + field60856: [Object11507] + field60863: [Object11508] + field60872: [Object11509] + field60879: [Object11510] + field60888: [Object11511] + field60922: [Object11514] + field60950: [Object11516] + field60985: [Object11518] + field60995: [Object11519] + field61010: [Object11521] + field61026: [Object11524] + field61044: [Object11527] + field61050: [Object11528] + field61071: [Object11530] + field61095: [Object11532] + field61097: [Object11533] + field61100: [Object11534] + field61150: [Object11538] + field61172: Object11539 + field61176: [Object11540] + field61283: Enum2835 + field61284: [Object11549] + field61311: [Object11551] + field61327: [Object11552] + field61341: Object11553 + field61357: [Object11556] + field61364: [Object11558] + field61369: [Object11559] + field61379: Object11560 + field61384: Enum2839 + field61385: [Object11561] + field61392: [Object11562] + field61410: [Object11564] + field61427: [Object11565] + field61436: [Object11567] + field61444: [Object11568] + field61450: [Object11569] + field61455: [Object11570] + field61465: [Object11571] + field61484: Boolean + field61485: [Object11573] + field61491: [Object11574] + field61508: [Object11576] + field61530: [Object11580] + field61533: [Object11581] + field61636: [Object11613] + field61653: Scalar2 + field61654: [Object11617] + field61668: [Object11575] + field61669: Object11618 + field61680: Object11540 @deprecated + field61681: [Object11622] + field61720: [Object11627] + field61741: [Object11632] + field61746: [Object11633] + field61778: [Object11639] @deprecated + field61785: Object11640 @deprecated + field61793: Object11641 + field61795: [Object11642] + field61804: [Object11643] + field61811: Enum2854 + field61812: [Interface146] + field61813: [Object11644] + field61827: [Object11645] + field61835: Object11646 + field61839: [Object11557] + field61840: String + field61841: [Object11647] + field61844: Object11648 + field61846: [Object11649] + field61854: Object11650 + field61856: [Object11651] + field61931: Object11667 + field61939: String + field61940: String + field61941: Object11669 + field61945: Object11670 + field61951: [Object11672] + field61970: [Object11677] + field61984: [Object11680] + field61992: Boolean + field61993: String + field61994: Object11682 + field62000: Int + field62001: Boolean + field62002: [Object11684] +} + +type Object11331 @Directive21(argument61 : "stringValue46340") @Directive44(argument97 : ["stringValue46339"]) { + field59583: String + field59584: String + field59585: [Object11332] +} + +type Object11332 @Directive21(argument61 : "stringValue46342") @Directive44(argument97 : ["stringValue46341"]) { + field59586: String + field59587: String + field59588: String +} + +type Object11333 @Directive21(argument61 : "stringValue46344") @Directive44(argument97 : ["stringValue46343"]) { + field59596: Scalar1 + field59597: Object3581 + field59598: String + field59599: String + field59600: Scalar1 + field59601: Scalar2 + field59602: String @deprecated + field59603: Enum2763 + field59604: Boolean + field59605: String + field59606: String + field59607: Enum2764 + field59608: [Enum2765] +} + +type Object11334 @Directive21(argument61 : "stringValue46349") @Directive44(argument97 : ["stringValue46348"]) { + field59612: Int + field59613: Object11335 + field59618: Object3581 + field59619: String + field59620: String + field59621: Enum2766 + field59622: String + field59623: String + field59624: Boolean + field59625: Boolean + field59626: String + field59627: String + field59628: String +} + +type Object11335 @Directive21(argument61 : "stringValue46351") @Directive44(argument97 : ["stringValue46350"]) { + field59614: Scalar2 + field59615: String + field59616: String + field59617: String +} + +type Object11336 @Directive21(argument61 : "stringValue46354") @Directive44(argument97 : ["stringValue46353"]) { + field59630: String + field59631: String + field59632: String + field59633: String + field59634: String + field59635: Object3581 + field59636: Object11335 + field59637: Object11335 + field59638: Object11335 + field59639: Object11337 + field59663: Object11337 + field59664: String + field59665: String + field59666: String + field59667: Object11339 + field59726: Object11354 + field59729: String + field59730: Object11355 + field59737: String + field59738: Enum2763 + field59739: [Object11357] + field59743: [Object11357] + field59744: String + field59745: String + field59746: String + field59747: Object11358 + field59755: String + field59756: String + field59757: Object11359 + field59764: String + field59765: Enum2775 + field59766: [Object11360] + field59775: Object11361 +} + +type Object11337 @Directive21(argument61 : "stringValue46356") @Directive44(argument97 : ["stringValue46355"]) { + field59640: String + field59641: String + field59642: String + field59643: String + field59644: String + field59645: String + field59646: String + field59647: String + field59648: String + field59649: String + field59650: String + field59651: String + field59652: String + field59653: String + field59654: String + field59655: String + field59656: String + field59657: String + field59658: [Object11338] + field59662: Scalar2 +} + +type Object11338 @Directive21(argument61 : "stringValue46358") @Directive44(argument97 : ["stringValue46357"]) { + field59659: String + field59660: String + field59661: String +} + +type Object11339 @Directive21(argument61 : "stringValue46360") @Directive44(argument97 : ["stringValue46359"]) { + field59668: Object11340 + field59723: Object11340 + field59724: Object11340 + field59725: Object11340 +} + +type Object1134 @Directive22(argument62 : "stringValue5923") @Directive31 @Directive44(argument97 : ["stringValue5924", "stringValue5925"]) { + field6414: [Scalar2!] + field6415: String + field6416: String + field6417: String + field6418: String +} + +type Object11340 @Directive21(argument61 : "stringValue46362") @Directive44(argument97 : ["stringValue46361"]) { + field59669: String + field59670: String + field59671: String + field59672: String + field59673: String + field59674: String + field59675: String + field59676: String + field59677: Object11341 + field59722: Object11341 +} + +type Object11341 @Directive21(argument61 : "stringValue46364") @Directive44(argument97 : ["stringValue46363"]) { + field59678: Object11342 + field59692: Object11345 + field59701: Object11348 + field59712: Object11352 + field59721: Object11352 +} + +type Object11342 @Directive21(argument61 : "stringValue46366") @Directive44(argument97 : ["stringValue46365"]) { + field59679: String + field59680: Object11343 +} + +type Object11343 @Directive21(argument61 : "stringValue46368") @Directive44(argument97 : ["stringValue46367"]) { + field59681: Object3589 + field59682: Object11344 + field59690: Scalar5 + field59691: Enum2770 +} + +type Object11344 @Directive21(argument61 : "stringValue46370") @Directive44(argument97 : ["stringValue46369"]) { + field59683: Enum2767 + field59684: Enum2768 + field59685: Enum2769 + field59686: Scalar5 + field59687: Scalar5 + field59688: Float + field59689: Float +} + +type Object11345 @Directive21(argument61 : "stringValue46376") @Directive44(argument97 : ["stringValue46375"]) { + field59693: Object3589 + field59694: Object11346 +} + +type Object11346 @Directive21(argument61 : "stringValue46378") @Directive44(argument97 : ["stringValue46377"]) { + field59695: Object11347 + field59698: Object11347 + field59699: Object11347 + field59700: Object11347 +} + +type Object11347 @Directive21(argument61 : "stringValue46380") @Directive44(argument97 : ["stringValue46379"]) { + field59696: Enum2771 + field59697: Float +} + +type Object11348 @Directive21(argument61 : "stringValue46383") @Directive44(argument97 : ["stringValue46382"]) { + field59702: Object11349 + field59705: Object11350 + field59708: Object11346 + field59709: Object11351 +} + +type Object11349 @Directive21(argument61 : "stringValue46385") @Directive44(argument97 : ["stringValue46384"]) { + field59703: Int + field59704: Int +} + +type Object1135 implements Interface76 @Directive21(argument61 : "stringValue5927") @Directive22(argument62 : "stringValue5926") @Directive31 @Directive44(argument97 : ["stringValue5928", "stringValue5929", "stringValue5930"]) @Directive45(argument98 : ["stringValue5931"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union157] + field5221: Boolean + field6427: [Object1136] +} + +type Object11350 @Directive21(argument61 : "stringValue46387") @Directive44(argument97 : ["stringValue46386"]) { + field59706: Enum2770 + field59707: Enum2772 +} + +type Object11351 @Directive21(argument61 : "stringValue46390") @Directive44(argument97 : ["stringValue46389"]) { + field59710: Object11347 + field59711: Object11347 +} + +type Object11352 @Directive21(argument61 : "stringValue46392") @Directive44(argument97 : ["stringValue46391"]) { + field59713: String + field59714: Object3589 + field59715: Object11353 +} + +type Object11353 @Directive21(argument61 : "stringValue46394") @Directive44(argument97 : ["stringValue46393"]) { + field59716: Object11349 + field59717: Object11350 + field59718: Object11346 + field59719: Object11351 + field59720: Enum2773 +} + +type Object11354 @Directive21(argument61 : "stringValue46397") @Directive44(argument97 : ["stringValue46396"]) { + field59727: Int + field59728: Int +} + +type Object11355 @Directive21(argument61 : "stringValue46399") @Directive44(argument97 : ["stringValue46398"]) { + field59731: String + field59732: String + field59733: [Object11356] +} + +type Object11356 @Directive21(argument61 : "stringValue46401") @Directive44(argument97 : ["stringValue46400"]) { + field59734: Scalar3 + field59735: Float + field59736: String +} + +type Object11357 @Directive21(argument61 : "stringValue46403") @Directive44(argument97 : ["stringValue46402"]) { + field59740: Enum2774 + field59741: String + field59742: String +} + +type Object11358 @Directive21(argument61 : "stringValue46406") @Directive44(argument97 : ["stringValue46405"]) { + field59748: Scalar2 + field59749: String + field59750: String + field59751: String + field59752: String + field59753: String + field59754: String +} + +type Object11359 @Directive21(argument61 : "stringValue46408") @Directive44(argument97 : ["stringValue46407"]) { + field59758: String + field59759: Scalar2 + field59760: String + field59761: String + field59762: Scalar2 + field59763: String +} + +type Object1136 @Directive20(argument58 : "stringValue5936", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5935") @Directive31 @Directive44(argument97 : ["stringValue5937", "stringValue5938"]) { + field6419: String + field6420: String + field6421: String + field6422: Scalar2 + field6423: String + field6424: String + field6425: String + field6426: String +} + +type Object11360 @Directive21(argument61 : "stringValue46411") @Directive44(argument97 : ["stringValue46410"]) { + field59767: String + field59768: String + field59769: String + field59770: String + field59771: Object3581 + field59772: Enum2776 + field59773: Enum2763 + field59774: Enum2777 +} + +type Object11361 @Directive21(argument61 : "stringValue46415") @Directive44(argument97 : ["stringValue46414"]) { + field59776: String + field59777: String + field59778: Object3581 + field59779: Object11362 + field59785: Boolean +} + +type Object11362 @Directive21(argument61 : "stringValue46417") @Directive44(argument97 : ["stringValue46416"]) { + field59780: String + field59781: String + field59782: String + field59783: String + field59784: Int +} + +type Object11363 @Directive21(argument61 : "stringValue46419") @Directive44(argument97 : ["stringValue46418"]) { + field59787: String + field59788: String + field59789: Object11364 + field59793: Object3581 + field59794: String + field59795: String +} + +type Object11364 @Directive21(argument61 : "stringValue46421") @Directive44(argument97 : ["stringValue46420"]) { + field59790: Scalar2 + field59791: String + field59792: String +} + +type Object11365 @Directive21(argument61 : "stringValue46423") @Directive44(argument97 : ["stringValue46422"]) { + field59797: String + field59798: String + field59799: String + field59800: String + field59801: Object3581 + field59802: String + field59803: String + field59804: String + field59805: String + field59806: String + field59807: String + field59808: Object11366 + field59819: [String] + field59820: [String] + field59821: String + field59822: Enum711 +} + +type Object11366 @Directive21(argument61 : "stringValue46425") @Directive44(argument97 : ["stringValue46424"]) { + field59809: Union373 + field59818: Enum2778 +} + +type Object11367 @Directive21(argument61 : "stringValue46428") @Directive44(argument97 : ["stringValue46427"]) { + field59810: String + field59811: String + field59812: String + field59813: [Object11368] +} + +type Object11368 @Directive21(argument61 : "stringValue46430") @Directive44(argument97 : ["stringValue46429"]) { + field59814: String + field59815: String + field59816: String + field59817: String +} + +type Object11369 @Directive21(argument61 : "stringValue46433") @Directive44(argument97 : ["stringValue46432"]) { + field59824: Object11370 + field59831: Object11370 + field59832: Object11370 + field59833: String + field59834: String + field59835: String + field59836: String @deprecated + field59837: String + field59838: String + field59839: String + field59840: Boolean + field59841: String + field59842: Object11339 + field59843: Object11337 + field59844: Object11337 + field59845: String + field59846: Scalar2 + field59847: String + field59848: Object11335 @deprecated + field59849: String @deprecated + field59850: Object3581 + field59851: String + field59852: [Object11371] + field59863: Object11372 + field59873: [Object11375] +} + +type Object1137 implements Interface76 @Directive22(argument62 : "stringValue5939") @Directive31 @Directive44(argument97 : ["stringValue5940", "stringValue5941", "stringValue5942"]) @Directive45(argument98 : ["stringValue5943"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String @deprecated + field5186: String @deprecated + field5187: [Interface77] @deprecated + field5189: Object891 @deprecated + field5203: Object892 + field5207: Object893 + field5212: Enum154 + field6428: Boolean @deprecated + field6429: Boolean @deprecated + field6430: [Object474] @deprecated + field6431: Object474 +} + +type Object11370 @Directive21(argument61 : "stringValue46435") @Directive44(argument97 : ["stringValue46434"]) { + field59825: Scalar2 + field59826: String + field59827: String + field59828: String + field59829: String + field59830: Float +} + +type Object11371 @Directive21(argument61 : "stringValue46437") @Directive44(argument97 : ["stringValue46436"]) { + field59853: String + field59854: String + field59855: String + field59856: String + field59857: String + field59858: String + field59859: String + field59860: String + field59861: String + field59862: String +} + +type Object11372 @Directive21(argument61 : "stringValue46439") @Directive44(argument97 : ["stringValue46438"]) { + field59864: Object11373 + field59871: Object11373 + field59872: Object11373 +} + +type Object11373 @Directive21(argument61 : "stringValue46441") @Directive44(argument97 : ["stringValue46440"]) { + field59865: String + field59866: String + field59867: String + field59868: Object11374 +} + +type Object11374 @Directive21(argument61 : "stringValue46443") @Directive44(argument97 : ["stringValue46442"]) { + field59869: Int + field59870: Float +} + +type Object11375 @Directive21(argument61 : "stringValue46445") @Directive44(argument97 : ["stringValue46444"]) { + field59874: String + field59875: String + field59876: String +} + +type Object11376 @Directive21(argument61 : "stringValue46447") @Directive44(argument97 : ["stringValue46446"]) { + field59878: Object11377 + field59885: String + field59886: String + field59887: String + field59888: String + field59889: String + field59890: Object3581 + field59891: String + field59892: String + field59893: Int + field59894: String + field59895: String + field59896: String + field59897: Object11337 + field59898: String + field59899: String +} + +type Object11377 @Directive21(argument61 : "stringValue46449") @Directive44(argument97 : ["stringValue46448"]) { + field59879: Scalar2 + field59880: String + field59881: String + field59882: String + field59883: String + field59884: String +} + +type Object11378 @Directive21(argument61 : "stringValue46451") @Directive44(argument97 : ["stringValue46450"]) { + field59903: Object11379 + field59913: Object11379 + field59914: String + field59915: Scalar1 + field59916: String + field59917: String + field59918: String + field59919: Scalar2! + field59920: Float + field59921: Float + field59922: String + field59923: String + field59924: [String] + field59925: [Object11379] + field59926: [Object11380] + field59930: Scalar2 + field59931: String + field59932: String + field59933: String + field59934: Scalar2 + field59935: String +} + +type Object11379 @Directive21(argument61 : "stringValue46453") @Directive44(argument97 : ["stringValue46452"]) { + field59904: Scalar2 + field59905: String + field59906: String + field59907: String + field59908: String + field59909: String + field59910: String + field59911: String + field59912: String +} + +type Object1138 implements Interface76 @Directive21(argument61 : "stringValue5945") @Directive22(argument62 : "stringValue5944") @Directive31 @Directive44(argument97 : ["stringValue5946", "stringValue5947", "stringValue5948"]) @Directive45(argument98 : ["stringValue5949"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union158] + field5221: Boolean + field6434: [Object1139] +} + +type Object11380 @Directive21(argument61 : "stringValue46455") @Directive44(argument97 : ["stringValue46454"]) { + field59927: Int + field59928: String + field59929: String +} + +type Object11381 @Directive21(argument61 : "stringValue46457") @Directive44(argument97 : ["stringValue46456"]) { + field59937: String + field59938: String + field59939: [String] + field59940: Boolean + field59941: Object11333 + field59942: String + field59943: Object11382 + field59949: Object11384 +} + +type Object11382 @Directive21(argument61 : "stringValue46459") @Directive44(argument97 : ["stringValue46458"]) { + field59944: [Object11383] + field59947: String + field59948: String +} + +type Object11383 @Directive21(argument61 : "stringValue46461") @Directive44(argument97 : ["stringValue46460"]) { + field59945: String + field59946: String +} + +type Object11384 @Directive21(argument61 : "stringValue46463") @Directive44(argument97 : ["stringValue46462"]) { + field59950: String + field59951: String +} + +type Object11385 @Directive21(argument61 : "stringValue46465") @Directive44(argument97 : ["stringValue46464"]) { + field59953: String + field59954: String! + field59955: String + field59956: String + field59957: String + field59958: String + field59959: String +} + +type Object11386 @Directive21(argument61 : "stringValue46467") @Directive44(argument97 : ["stringValue46466"]) { + field59961: String + field59962: String! + field59963: String + field59964: String + field59965: String +} + +type Object11387 @Directive21(argument61 : "stringValue46469") @Directive44(argument97 : ["stringValue46468"]) { + field59967: String + field59968: Object11388 + field59972: Scalar2 + field59973: String + field59974: String + field59975: String + field59976: Int + field59977: Float + field59978: String + field59979: Scalar2! + field59980: String + field59981: String + field59982: Scalar2 + field59983: String + field59984: String + field59985: String + field59986: Boolean + field59987: String +} + +type Object11388 @Directive21(argument61 : "stringValue46471") @Directive44(argument97 : ["stringValue46470"]) { + field59969: Scalar2 + field59970: String + field59971: String +} + +type Object11389 @Directive21(argument61 : "stringValue46473") @Directive44(argument97 : ["stringValue46472"]) { + field59989: Object11337 + field59990: Object11337 + field59991: Object11390 + field59995: Object11390 + field59996: Object11391 + field60292: Object11425 + field60426: Object11452 +} + +type Object1139 @Directive20(argument58 : "stringValue5954", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5953") @Directive31 @Directive44(argument97 : ["stringValue5955", "stringValue5956"]) { + field6432: Object398 + field6433: String +} + +type Object11390 @Directive21(argument61 : "stringValue46475") @Directive44(argument97 : ["stringValue46474"]) { + field59992: Float + field59993: String + field59994: String +} + +type Object11391 @Directive21(argument61 : "stringValue46477") @Directive44(argument97 : ["stringValue46476"]) { + field59997: [String] + field59998: String + field59999: Float + field60000: String + field60001: String + field60002: Int + field60003: Int + field60004: String + field60005: Object11392 + field60008: String + field60009: [String] + field60010: String + field60011: String + field60012: Scalar2 + field60013: Boolean + field60014: Boolean + field60015: Boolean + field60016: Boolean + field60017: Boolean + field60018: Boolean + field60019: Object11393 + field60037: Float + field60038: Float + field60039: String + field60040: String + field60041: Object11396 + field60046: String + field60047: String + field60048: Int + field60049: Int + field60050: String + field60051: [String] + field60052: Object11379 + field60053: String + field60054: String + field60055: Scalar2 + field60056: Int + field60057: String + field60058: String + field60059: String + field60060: String + field60061: Boolean + field60062: String + field60063: Float + field60064: Int + field60065: Object11397 + field60074: Object11393 + field60075: String + field60076: String + field60077: String + field60078: String + field60079: [Object11398] + field60086: String + field60087: String + field60088: String + field60089: String + field60090: [Int] + field60091: [String] + field60092: [Object11399] + field60102: [String] + field60103: String + field60104: [String] + field60105: [Object11400] + field60129: Float + field60130: Object11403 + field60155: Enum2781 + field60156: [Object11407] + field60164: String + field60165: Boolean + field60166: String + field60167: Int + field60168: Int + field60169: Object11408 + field60171: [Object11409] + field60182: Object11410 + field60185: Object11411 + field60191: Enum2784 + field60192: [Object11395] + field60193: Object11404 + field60194: Enum2785 + field60195: String + field60196: String + field60197: [Object11412] + field60208: [Scalar2] + field60209: String + field60210: [Object11413] + field60246: [Object11413] + field60247: Enum2788 + field60248: [Enum2789] + field60249: Object11417 + field60252: [Object11418] + field60263: Object11422 + field60267: [Object11396] + field60268: Boolean + field60269: String + field60270: Int + field60271: String + field60272: Scalar2 + field60273: Boolean + field60274: Float + field60275: [String] + field60276: String + field60277: String + field60278: String + field60279: Object11423 + field60284: Object11424 + field60288: Object11395 + field60289: Enum2791 + field60290: Scalar2 + field60291: String +} + +type Object11392 @Directive21(argument61 : "stringValue46479") @Directive44(argument97 : ["stringValue46478"]) { + field60006: String + field60007: Float +} + +type Object11393 @Directive21(argument61 : "stringValue46481") @Directive44(argument97 : ["stringValue46480"]) { + field60020: Object11394 + field60024: [String] + field60025: String + field60026: [Object11395] +} + +type Object11394 @Directive21(argument61 : "stringValue46483") @Directive44(argument97 : ["stringValue46482"]) { + field60021: String + field60022: String + field60023: String +} + +type Object11395 @Directive21(argument61 : "stringValue46485") @Directive44(argument97 : ["stringValue46484"]) { + field60027: String + field60028: String + field60029: String + field60030: String + field60031: String + field60032: String + field60033: String + field60034: String + field60035: String + field60036: Enum2779 +} + +type Object11396 @Directive21(argument61 : "stringValue46488") @Directive44(argument97 : ["stringValue46487"]) { + field60042: String + field60043: String + field60044: String + field60045: String +} + +type Object11397 @Directive21(argument61 : "stringValue46490") @Directive44(argument97 : ["stringValue46489"]) { + field60066: String + field60067: Boolean + field60068: Scalar2 + field60069: Boolean + field60070: String + field60071: String + field60072: String + field60073: Scalar4 +} + +type Object11398 @Directive21(argument61 : "stringValue46492") @Directive44(argument97 : ["stringValue46491"]) { + field60080: String + field60081: String + field60082: Boolean + field60083: String + field60084: String + field60085: String +} + +type Object11399 @Directive21(argument61 : "stringValue46494") @Directive44(argument97 : ["stringValue46493"]) { + field60093: String + field60094: String + field60095: Boolean + field60096: String + field60097: String + field60098: String + field60099: String + field60100: [String] + field60101: Scalar2 +} + +type Object114 @Directive21(argument61 : "stringValue423") @Directive44(argument97 : ["stringValue422"]) { + field749: [Union14] + field769: Boolean @deprecated + field770: Boolean + field771: Boolean + field772: String + field773: Enum61 +} + +type Object1140 implements Interface76 @Directive21(argument61 : "stringValue5958") @Directive22(argument62 : "stringValue5957") @Directive31 @Directive44(argument97 : ["stringValue5959", "stringValue5960", "stringValue5961"]) @Directive45(argument98 : ["stringValue5962"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union159] + field5221: Boolean + field6441: [Object1141] +} + +type Object11400 @Directive21(argument61 : "stringValue46496") @Directive44(argument97 : ["stringValue46495"]) { + field60106: String + field60107: String + field60108: Object3581 + field60109: String + field60110: String + field60111: String + field60112: String + field60113: String + field60114: [Object11401] @deprecated + field60125: String + field60126: String + field60127: String + field60128: Enum2780 +} + +type Object11401 @Directive21(argument61 : "stringValue46498") @Directive44(argument97 : ["stringValue46497"]) { + field60115: String + field60116: String + field60117: String + field60118: String + field60119: String + field60120: String + field60121: Object11402 +} + +type Object11402 @Directive21(argument61 : "stringValue46500") @Directive44(argument97 : ["stringValue46499"]) { + field60122: String + field60123: String + field60124: String +} + +type Object11403 @Directive21(argument61 : "stringValue46503") @Directive44(argument97 : ["stringValue46502"]) { + field60131: [Object11404] + field60154: String +} + +type Object11404 @Directive21(argument61 : "stringValue46505") @Directive44(argument97 : ["stringValue46504"]) { + field60132: String + field60133: Float + field60134: String + field60135: Scalar2 + field60136: [Object11405] + field60145: String + field60146: Scalar2 + field60147: [Object11406] + field60150: String + field60151: Float + field60152: Float + field60153: String +} + +type Object11405 @Directive21(argument61 : "stringValue46507") @Directive44(argument97 : ["stringValue46506"]) { + field60137: String + field60138: Scalar2 + field60139: String + field60140: String + field60141: String + field60142: String + field60143: String + field60144: String +} + +type Object11406 @Directive21(argument61 : "stringValue46509") @Directive44(argument97 : ["stringValue46508"]) { + field60148: Scalar2 + field60149: String +} + +type Object11407 @Directive21(argument61 : "stringValue46512") @Directive44(argument97 : ["stringValue46511"]) { + field60157: String + field60158: String + field60159: String + field60160: String + field60161: Enum2779 + field60162: String + field60163: Enum2782 +} + +type Object11408 @Directive21(argument61 : "stringValue46515") @Directive44(argument97 : ["stringValue46514"]) { + field60170: String +} + +type Object11409 @Directive21(argument61 : "stringValue46517") @Directive44(argument97 : ["stringValue46516"]) { + field60172: Scalar2 + field60173: String + field60174: String + field60175: String + field60176: String + field60177: String + field60178: String + field60179: String + field60180: String + field60181: Object11393 +} + +type Object1141 @Directive20(argument58 : "stringValue5967", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5966") @Directive31 @Directive44(argument97 : ["stringValue5968", "stringValue5969"]) { + field6435: String + field6436: String + field6437: Object923 + field6438: Object398 + field6439: String + field6440: String +} + +type Object11410 @Directive21(argument61 : "stringValue46519") @Directive44(argument97 : ["stringValue46518"]) { + field60183: String + field60184: String +} + +type Object11411 @Directive21(argument61 : "stringValue46521") @Directive44(argument97 : ["stringValue46520"]) { + field60186: String + field60187: String + field60188: String + field60189: String + field60190: Enum2783 +} + +type Object11412 @Directive21(argument61 : "stringValue46526") @Directive44(argument97 : ["stringValue46525"]) { + field60198: String + field60199: String + field60200: String + field60201: String + field60202: String + field60203: String + field60204: Object3581 + field60205: String + field60206: String + field60207: Object11402 +} + +type Object11413 @Directive21(argument61 : "stringValue46528") @Directive44(argument97 : ["stringValue46527"]) { + field60211: String + field60212: String + field60213: Enum711 + field60214: String + field60215: Object3609 @deprecated + field60216: Object3579 @deprecated + field60217: String + field60218: Union374 @deprecated + field60221: String + field60222: String + field60223: Object11415 + field60240: Interface144 + field60241: Interface147 + field60242: Object11416 + field60243: Object11343 + field60244: Object11343 + field60245: Object11343 +} + +type Object11414 @Directive21(argument61 : "stringValue46531") @Directive44(argument97 : ["stringValue46530"]) { + field60219: String! + field60220: String +} + +type Object11415 @Directive21(argument61 : "stringValue46533") @Directive44(argument97 : ["stringValue46532"]) { + field60224: String + field60225: Int + field60226: Object11416 + field60237: Boolean + field60238: Object11343 + field60239: Int +} + +type Object11416 @Directive21(argument61 : "stringValue46535") @Directive44(argument97 : ["stringValue46534"]) { + field60227: String + field60228: Enum711 + field60229: Enum2786 + field60230: String + field60231: String + field60232: Enum2787 + field60233: Object3579 @deprecated + field60234: Union374 @deprecated + field60235: Object3592 @deprecated + field60236: Interface144 +} + +type Object11417 @Directive21(argument61 : "stringValue46541") @Directive44(argument97 : ["stringValue46540"]) { + field60250: Float + field60251: Float +} + +type Object11418 @Directive21(argument61 : "stringValue46543") @Directive44(argument97 : ["stringValue46542"]) { + field60253: String + field60254: Enum2790 + field60255: Union375 +} + +type Object11419 @Directive21(argument61 : "stringValue46547") @Directive44(argument97 : ["stringValue46546"]) { + field60256: [Object11413] +} + +type Object1142 implements Interface76 @Directive21(argument61 : "stringValue5971") @Directive22(argument62 : "stringValue5970") @Directive31 @Directive44(argument97 : ["stringValue5972", "stringValue5973", "stringValue5974"]) @Directive45(argument98 : ["stringValue5975"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union160] + field5221: Boolean + field6449: [Object1143] +} + +type Object11420 @Directive21(argument61 : "stringValue46549") @Directive44(argument97 : ["stringValue46548"]) { + field60257: String + field60258: String + field60259: Enum711 +} + +type Object11421 @Directive21(argument61 : "stringValue46551") @Directive44(argument97 : ["stringValue46550"]) { + field60260: String + field60261: String + field60262: [Enum711] +} + +type Object11422 @Directive21(argument61 : "stringValue46553") @Directive44(argument97 : ["stringValue46552"]) { + field60264: String + field60265: Float + field60266: String +} + +type Object11423 @Directive21(argument61 : "stringValue46555") @Directive44(argument97 : ["stringValue46554"]) { + field60280: Boolean + field60281: Boolean + field60282: String + field60283: String +} + +type Object11424 @Directive21(argument61 : "stringValue46557") @Directive44(argument97 : ["stringValue46556"]) { + field60285: String + field60286: String + field60287: String +} + +type Object11425 @Directive21(argument61 : "stringValue46560") @Directive44(argument97 : ["stringValue46559"]) { + field60293: Boolean + field60294: Float + field60295: Object11426 + field60305: String + field60306: Object11427 + field60307: String + field60308: Object11427 + field60309: Float + field60310: Boolean + field60311: Object11427 + field60312: [Object11428] + field60326: Object11427 + field60327: String + field60328: String + field60329: Object11427 + field60330: String + field60331: String + field60332: [Object11429] + field60340: [Enum2795] + field60341: Object3589 + field60342: Object11430 + field60425: Boolean +} + +type Object11426 @Directive21(argument61 : "stringValue46562") @Directive44(argument97 : ["stringValue46561"]) { + field60296: String + field60297: [Object11426] + field60298: Object11427 + field60303: Int + field60304: String +} + +type Object11427 @Directive21(argument61 : "stringValue46564") @Directive44(argument97 : ["stringValue46563"]) { + field60299: Float + field60300: String + field60301: String + field60302: Boolean +} + +type Object11428 @Directive21(argument61 : "stringValue46566") @Directive44(argument97 : ["stringValue46565"]) { + field60313: Enum2792 + field60314: String + field60315: Boolean + field60316: Boolean + field60317: Int + field60318: String + field60319: Scalar2 + field60320: String + field60321: Int + field60322: String + field60323: Float + field60324: Int + field60325: Enum2793 +} + +type Object11429 @Directive21(argument61 : "stringValue46570") @Directive44(argument97 : ["stringValue46569"]) { + field60333: String + field60334: String + field60335: String + field60336: String + field60337: String + field60338: Enum2794 + field60339: String +} + +type Object1143 @Directive20(argument58 : "stringValue5980", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5979") @Directive31 @Directive44(argument97 : ["stringValue5981", "stringValue5982"]) { + field6442: String + field6443: String + field6444: String! + field6445: String + field6446: String + field6447: String + field6448: String +} + +type Object11430 @Directive21(argument61 : "stringValue46574") @Directive44(argument97 : ["stringValue46573"]) { + field60343: Union376 + field60382: Union376 + field60383: Object11440 +} + +type Object11431 @Directive21(argument61 : "stringValue46577") @Directive44(argument97 : ["stringValue46576"]) { + field60344: String! + field60345: String + field60346: Enum2796 +} + +type Object11432 @Directive21(argument61 : "stringValue46580") @Directive44(argument97 : ["stringValue46579"]) { + field60347: String + field60348: Object3589 + field60349: Enum711 + field60350: Enum2796 +} + +type Object11433 @Directive21(argument61 : "stringValue46582") @Directive44(argument97 : ["stringValue46581"]) { + field60351: String + field60352: String! + field60353: String! + field60354: String + field60355: Object11434 + field60367: Object11437 +} + +type Object11434 @Directive21(argument61 : "stringValue46584") @Directive44(argument97 : ["stringValue46583"]) { + field60356: [Union377] + field60364: String + field60365: String + field60366: String +} + +type Object11435 @Directive21(argument61 : "stringValue46587") @Directive44(argument97 : ["stringValue46586"]) { + field60357: String! + field60358: Boolean! + field60359: Boolean! + field60360: String! +} + +type Object11436 @Directive21(argument61 : "stringValue46589") @Directive44(argument97 : ["stringValue46588"]) { + field60361: String! + field60362: String + field60363: Enum2797! +} + +type Object11437 @Directive21(argument61 : "stringValue46592") @Directive44(argument97 : ["stringValue46591"]) { + field60368: String! + field60369: String! + field60370: String! +} + +type Object11438 @Directive21(argument61 : "stringValue46594") @Directive44(argument97 : ["stringValue46593"]) { + field60371: String! + field60372: String! + field60373: String! + field60374: String + field60375: Boolean + field60376: Enum2796 +} + +type Object11439 @Directive21(argument61 : "stringValue46596") @Directive44(argument97 : ["stringValue46595"]) { + field60377: String! + field60378: String! + field60379: String + field60380: Boolean + field60381: Enum2796 +} + +type Object1144 implements Interface76 @Directive21(argument61 : "stringValue5984") @Directive22(argument62 : "stringValue5983") @Directive31 @Directive44(argument97 : ["stringValue5985", "stringValue5986", "stringValue5987"]) @Directive45(argument98 : ["stringValue5988"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union161] + field5221: Boolean + field6471: [Object1145] +} + +type Object11440 @Directive21(argument61 : "stringValue46598") @Directive44(argument97 : ["stringValue46597"]) { + field60384: [Union378] + field60424: String +} + +type Object11441 @Directive21(argument61 : "stringValue46601") @Directive44(argument97 : ["stringValue46600"]) { + field60385: String! + field60386: Enum2796 +} + +type Object11442 @Directive21(argument61 : "stringValue46603") @Directive44(argument97 : ["stringValue46602"]) { + field60387: [Union379] + field60407: Boolean @deprecated + field60408: Boolean + field60409: Boolean + field60410: String + field60411: Enum2796 +} + +type Object11443 @Directive21(argument61 : "stringValue46606") @Directive44(argument97 : ["stringValue46605"]) { + field60388: String! + field60389: String! + field60390: Object11440 +} + +type Object11444 @Directive21(argument61 : "stringValue46608") @Directive44(argument97 : ["stringValue46607"]) { + field60391: String! + field60392: String! + field60393: Object11440 + field60394: String +} + +type Object11445 @Directive21(argument61 : "stringValue46610") @Directive44(argument97 : ["stringValue46609"]) { + field60395: String! + field60396: String! + field60397: Object11440 + field60398: Enum2796 +} + +type Object11446 @Directive21(argument61 : "stringValue46612") @Directive44(argument97 : ["stringValue46611"]) { + field60399: String! + field60400: String! + field60401: Object11440 + field60402: Enum2796 +} + +type Object11447 @Directive21(argument61 : "stringValue46614") @Directive44(argument97 : ["stringValue46613"]) { + field60403: String! + field60404: String! + field60405: Object11440 + field60406: Enum2796 +} + +type Object11448 @Directive21(argument61 : "stringValue46616") @Directive44(argument97 : ["stringValue46615"]) { + field60412: String! + field60413: String! + field60414: Enum2796 +} + +type Object11449 @Directive21(argument61 : "stringValue46618") @Directive44(argument97 : ["stringValue46617"]) { + field60415: String! + field60416: Enum2796 +} + +type Object1145 @Directive20(argument58 : "stringValue5993", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5992") @Directive31 @Directive44(argument97 : ["stringValue5994", "stringValue5995"]) { + field6450: String + field6451: String + field6452: Scalar2 + field6453: String + field6454: String + field6455: Object1146 + field6459: Int + field6460: String + field6461: Float + field6462: String + field6463: Scalar2! + field6464: Scalar2 + field6465: String + field6466: String + field6467: String + field6468: String + field6469: String + field6470: Boolean +} + +type Object11450 @Directive21(argument61 : "stringValue46620") @Directive44(argument97 : ["stringValue46619"]) { + field60417: String! + field60418: Enum2796 +} + +type Object11451 @Directive21(argument61 : "stringValue46622") @Directive44(argument97 : ["stringValue46621"]) { + field60419: Enum2798 + field60420: Enum2799 + field60421: Int @deprecated + field60422: Int @deprecated + field60423: Object3589 +} + +type Object11452 @Directive21(argument61 : "stringValue46626") @Directive44(argument97 : ["stringValue46625"]) { + field60427: Boolean + field60428: String + field60429: String + field60430: String +} + +type Object11453 @Directive21(argument61 : "stringValue46628") @Directive44(argument97 : ["stringValue46627"]) { + field60432: Scalar2! + field60433: Float + field60434: Object11427 + field60435: Int + field60436: Object11454 + field60466: Object11457 + field60470: String + field60471: Object11393 +} + +type Object11454 @Directive21(argument61 : "stringValue46630") @Directive44(argument97 : ["stringValue46629"]) { + field60437: Object11455 + field60446: Object11456 + field60464: Object11455 + field60465: Object11456 +} + +type Object11455 @Directive21(argument61 : "stringValue46632") @Directive44(argument97 : ["stringValue46631"]) { + field60438: String + field60439: Scalar2 + field60440: String + field60441: Boolean + field60442: Boolean + field60443: String + field60444: String + field60445: String +} + +type Object11456 @Directive21(argument61 : "stringValue46634") @Directive44(argument97 : ["stringValue46633"]) { + field60447: String + field60448: String + field60449: String + field60450: String + field60451: String + field60452: String + field60453: String + field60454: String + field60455: String + field60456: Boolean + field60457: String + field60458: String + field60459: String + field60460: String + field60461: String + field60462: String + field60463: Scalar2 +} + +type Object11457 @Directive21(argument61 : "stringValue46636") @Directive44(argument97 : ["stringValue46635"]) { + field60467: Float + field60468: Float + field60469: String +} + +type Object11458 @Directive21(argument61 : "stringValue46638") @Directive44(argument97 : ["stringValue46637"]) { + field60473: String + field60474: String + field60475: Object3581 +} + +type Object11459 @Directive21(argument61 : "stringValue46640") @Directive44(argument97 : ["stringValue46639"]) { + field60477: Object11397 + field60478: Object11460 + field60488: String + field60489: String + field60490: String + field60491: Scalar2 +} + +type Object1146 @Directive20(argument58 : "stringValue5997", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5996") @Directive31 @Directive44(argument97 : ["stringValue5998", "stringValue5999"]) { + field6456: String + field6457: Scalar2 + field6458: String +} + +type Object11460 @Directive21(argument61 : "stringValue46642") @Directive44(argument97 : ["stringValue46641"]) { + field60479: Object11461 +} + +type Object11461 @Directive21(argument61 : "stringValue46644") @Directive44(argument97 : ["stringValue46643"]) { + field60480: Scalar2 + field60481: String + field60482: String + field60483: String + field60484: String + field60485: String + field60486: String + field60487: String +} + +type Object11462 @Directive21(argument61 : "stringValue46646") @Directive44(argument97 : ["stringValue46645"]) { + field60493: String + field60494: Float + field60495: String + field60496: Object11463 + field60499: String + field60500: String + field60501: Scalar2! + field60502: Boolean + field60503: Object11464 + field60507: String + field60508: Float + field60509: Float + field60510: String + field60511: Object11379 + field60512: [Object11465] + field60525: Int + field60526: Int + field60527: Scalar2 + field60528: Int + field60529: Float + field60530: Int + field60531: String + field60532: [Object11466] + field60540: String + field60541: Float + field60542: [Object11467] + field60545: [Object11468] + field60549: Enum2800 + field60550: Object11397 + field60551: String + field60552: String + field60553: Enum2801 + field60554: [String] + field60555: String + field60556: String + field60557: String + field60558: Object11465 + field60559: String + field60560: String + field60561: String + field60562: Boolean + field60563: String + field60564: Object11469 + field60568: Enum2802 + field60569: [String] + field60570: Object11470 + field60572: Float + field60573: String + field60574: Enum2803 + field60575: [String] + field60576: String + field60577: Float + field60578: String + field60579: String + field60580: Object11399 + field60581: String + field60582: Object11471 + field60586: Object11472 + field60590: String + field60591: Boolean +} + +type Object11463 @Directive21(argument61 : "stringValue46648") @Directive44(argument97 : ["stringValue46647"]) { + field60497: String + field60498: Boolean +} + +type Object11464 @Directive21(argument61 : "stringValue46650") @Directive44(argument97 : ["stringValue46649"]) { + field60504: String + field60505: String + field60506: String +} + +type Object11465 @Directive21(argument61 : "stringValue46652") @Directive44(argument97 : ["stringValue46651"]) { + field60513: Scalar2 + field60514: String + field60515: String + field60516: String + field60517: String + field60518: String + field60519: String + field60520: String + field60521: String + field60522: String + field60523: String + field60524: Int +} + +type Object11466 @Directive21(argument61 : "stringValue46654") @Directive44(argument97 : ["stringValue46653"]) { + field60533: Scalar4 + field60534: Scalar4 + field60535: Int + field60536: Scalar2 + field60537: Boolean + field60538: String + field60539: String +} + +type Object11467 @Directive21(argument61 : "stringValue46656") @Directive44(argument97 : ["stringValue46655"]) { + field60543: Object11465 + field60544: Object11337 +} + +type Object11468 @Directive21(argument61 : "stringValue46658") @Directive44(argument97 : ["stringValue46657"]) { + field60546: String + field60547: String + field60548: String +} + +type Object11469 @Directive21(argument61 : "stringValue46662") @Directive44(argument97 : ["stringValue46661"]) { + field60565: String + field60566: String + field60567: String +} + +type Object1147 @Directive22(argument62 : "stringValue6000") @Directive31 @Directive44(argument97 : ["stringValue6001", "stringValue6002"]) { + field6472: String + field6473: [Object1148] +} + +type Object11470 @Directive21(argument61 : "stringValue46665") @Directive44(argument97 : ["stringValue46664"]) { + field60571: [Object11465] +} + +type Object11471 @Directive21(argument61 : "stringValue46668") @Directive44(argument97 : ["stringValue46667"]) { + field60583: [String] + field60584: [String] + field60585: [String] +} + +type Object11472 @Directive21(argument61 : "stringValue46670") @Directive44(argument97 : ["stringValue46669"]) { + field60587: Enum2804 + field60588: Enum2804 + field60589: Enum2804 +} + +type Object11473 @Directive21(argument61 : "stringValue46673") @Directive44(argument97 : ["stringValue46672"]) { + field60593: Object11391 + field60594: Object11425 + field60595: Object11452 + field60596: Boolean + field60597: Object11474 + field60606: Object11475 + field60618: Object11476 +} + +type Object11474 @Directive21(argument61 : "stringValue46675") @Directive44(argument97 : ["stringValue46674"]) { + field60598: Int + field60599: Int + field60600: Int + field60601: String + field60602: String + field60603: Scalar2 + field60604: [String] + field60605: String +} + +type Object11475 @Directive21(argument61 : "stringValue46677") @Directive44(argument97 : ["stringValue46676"]) { + field60607: Boolean + field60608: String + field60609: String + field60610: String + field60611: String + field60612: Object11454 + field60613: Object11455 + field60614: String + field60615: [Object11331] + field60616: Boolean + field60617: Boolean +} + +type Object11476 @Directive21(argument61 : "stringValue46679") @Directive44(argument97 : ["stringValue46678"]) { + field60619: String + field60620: [Object11416] + field60621: Boolean +} + +type Object11477 @Directive21(argument61 : "stringValue46681") @Directive44(argument97 : ["stringValue46680"]) { + field60623: String! + field60624: String + field60625: String + field60626: String +} + +type Object11478 @Directive21(argument61 : "stringValue46683") @Directive44(argument97 : ["stringValue46682"]) { + field60628: String + field60629: String + field60630: String + field60631: String +} + +type Object11479 @Directive21(argument61 : "stringValue46685") @Directive44(argument97 : ["stringValue46684"]) { + field60633: String + field60634: String + field60635: String + field60636: Scalar2 + field60637: String + field60638: String + field60639: String + field60640: String +} + +type Object1148 @Directive22(argument62 : "stringValue6003") @Directive31 @Directive44(argument97 : ["stringValue6004", "stringValue6005"]) { + field6474: String + field6475: [Union115] +} + +type Object11480 @Directive21(argument61 : "stringValue46687") @Directive44(argument97 : ["stringValue46686"]) { + field60642: Float + field60643: String @deprecated + field60644: String @deprecated + field60645: String +} + +type Object11481 @Directive21(argument61 : "stringValue46689") @Directive44(argument97 : ["stringValue46688"]) { + field60647: String + field60648: String + field60649: Object3581 + field60650: String +} + +type Object11482 @Directive21(argument61 : "stringValue46691") @Directive44(argument97 : ["stringValue46690"]) { + field60654: Object3581 + field60655: String +} + +type Object11483 @Directive21(argument61 : "stringValue46693") @Directive44(argument97 : ["stringValue46692"]) { + field60657: [Object11484] + field60680: Enum2807 + field60681: Boolean + field60682: Int + field60683: Float + field60684: Float + field60685: String +} + +type Object11484 @Directive21(argument61 : "stringValue46695") @Directive44(argument97 : ["stringValue46694"]) { + field60658: Float + field60659: Float + field60660: Enum2805 + field60661: String + field60662: String + field60663: String + field60664: [Object11485] + field60667: Boolean + field60668: [Object11486] + field60676: String + field60677: Float + field60678: Int + field60679: Int +} + +type Object11485 @Directive21(argument61 : "stringValue46698") @Directive44(argument97 : ["stringValue46697"]) { + field60665: String + field60666: Enum2806 +} + +type Object11486 @Directive21(argument61 : "stringValue46701") @Directive44(argument97 : ["stringValue46700"]) { + field60669: String + field60670: Union181 + field60671: Boolean @deprecated + field60672: Boolean @deprecated + field60673: String + field60674: String + field60675: Boolean +} + +type Object11487 @Directive21(argument61 : "stringValue46704") @Directive44(argument97 : ["stringValue46703"]) { + field60688: String + field60689: String + field60690: String + field60691: String + field60692: String + field60693: String + field60694: String + field60695: Scalar5 + field60696: Object11335 + field60697: String! + field60698: String + field60699: String +} + +type Object11488 @Directive21(argument61 : "stringValue46706") @Directive44(argument97 : ["stringValue46705"]) { + field60701: Enum2808 + field60702: Boolean + field60703: String + field60704: String + field60705: String + field60706: Enum2809 + field60707: Int + field60708: Enum2810 + field60709: String + field60710: Boolean + field60711: String + field60712: Boolean + field60713: Enum2811 + field60714: Boolean + field60715: Object11489 + field60719: String + field60720: Object3650 + field60721: String + field60722: Boolean + field60723: String + field60724: Boolean + field60725: String +} + +type Object11489 @Directive21(argument61 : "stringValue46712") @Directive44(argument97 : ["stringValue46711"]) { + field60716: String + field60717: String + field60718: Int +} + +type Object1149 implements Interface76 @Directive21(argument61 : "stringValue6007") @Directive22(argument62 : "stringValue6006") @Directive31 @Directive44(argument97 : ["stringValue6008", "stringValue6009", "stringValue6010"]) @Directive45(argument98 : ["stringValue6011"]) { + field5122: Object886 + field5149: String @deprecated + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union162] @deprecated + field5221: Boolean + field5281: Object909 + field5624: Object965 + field6476: Object1150 + field6478: [Object992] +} + +type Object11490 @Directive21(argument61 : "stringValue46714") @Directive44(argument97 : ["stringValue46713"]) { + field60727: String + field60728: String + field60729: [Object11405] + field60730: Scalar2! + field60731: Float + field60732: Float + field60733: String + field60734: [Object11380] + field60735: Scalar2 + field60736: Scalar2 + field60737: String + field60738: Scalar2 + field60739: String + field60740: String + field60741: String + field60742: String + field60743: [Object11406] + field60744: String + field60745: String + field60746: Scalar2 + field60747: String + field60748: [Object11462] + field60749: Object11333 + field60750: String + field60751: [String] +} + +type Object11491 @Directive21(argument61 : "stringValue46716") @Directive44(argument97 : ["stringValue46715"]) { + field60753: String + field60754: String + field60755: String +} + +type Object11492 @Directive21(argument61 : "stringValue46718") @Directive44(argument97 : ["stringValue46717"]) { + field60758: Float + field60759: Float +} + +type Object11493 @Directive21(argument61 : "stringValue46720") @Directive44(argument97 : ["stringValue46719"]) { + field60761: String + field60762: String + field60763: String + field60764: String + field60765: Object11335 + field60766: Object11335 + field60767: Object11335 + field60768: Object11339 + field60769: String + field60770: Object11337 + field60771: Object11337 + field60772: String + field60773: String + field60774: Object11494 + field60808: String + field60809: [Object11335] + field60810: [Object11335] + field60811: [Object11335] + field60812: Object11360 + field60813: String + field60814: String + field60815: [Object11360] + field60816: String + field60817: Object11335 + field60818: String + field60819: String + field60820: String + field60821: String + field60822: String + field60823: Float + field60824: Object11499 + field60851: Object3581 + field60852: String + field60853: Boolean + field60854: String + field60855: Enum2824 +} + +type Object11494 @Directive21(argument61 : "stringValue46722") @Directive44(argument97 : ["stringValue46721"]) { + field60775: Object11495 + field60805: Object11495 + field60806: Object11495 + field60807: Object11495 +} + +type Object11495 @Directive21(argument61 : "stringValue46724") @Directive44(argument97 : ["stringValue46723"]) { + field60776: Object11496 + field60782: Object11496 + field60783: Object11497 + field60788: Object11498 +} + +type Object11496 @Directive21(argument61 : "stringValue46726") @Directive44(argument97 : ["stringValue46725"]) { + field60777: Enum2812 + field60778: Enum2813 + field60779: Enum2814 + field60780: String + field60781: Enum2815 +} + +type Object11497 @Directive21(argument61 : "stringValue46732") @Directive44(argument97 : ["stringValue46731"]) { + field60784: Boolean + field60785: Boolean + field60786: Int + field60787: Boolean +} + +type Object11498 @Directive21(argument61 : "stringValue46734") @Directive44(argument97 : ["stringValue46733"]) { + field60789: String + field60790: String + field60791: String + field60792: String + field60793: Enum2816 + field60794: Enum2817 + field60795: String + field60796: String + field60797: Enum2818 + field60798: Enum2819 + field60799: String + field60800: String + field60801: String + field60802: String + field60803: String + field60804: Object11344 +} + +type Object11499 @Directive21(argument61 : "stringValue46740") @Directive44(argument97 : ["stringValue46739"]) { + field60825: Enum2820 + field60826: [Union380] + field60841: Scalar1 + field60842: Enum2823 + field60843: Scalar1 + field60844: Enum2823 + field60845: Scalar1 + field60846: Enum2823 + field60847: String + field60848: String + field60849: Scalar1 + field60850: Enum2823 +} + +type Object115 @Directive21(argument61 : "stringValue426") @Directive44(argument97 : ["stringValue425"]) { + field750: String! + field751: String! + field752: Object112 +} + +type Object1150 @Directive20(argument58 : "stringValue6013", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6012") @Directive31 @Directive44(argument97 : ["stringValue6014", "stringValue6015"]) { + field6477: Enum295 +} + +type Object11500 @Directive21(argument61 : "stringValue46744") @Directive44(argument97 : ["stringValue46743"]) { + field60827: Boolean + field60828: Boolean + field60829: Boolean +} + +type Object11501 @Directive21(argument61 : "stringValue46746") @Directive44(argument97 : ["stringValue46745"]) { + field60830: String + field60831: Object11502 +} + +type Object11502 @Directive21(argument61 : "stringValue46748") @Directive44(argument97 : ["stringValue46747"]) { + field60832: String + field60833: String + field60834: String +} + +type Object11503 @Directive21(argument61 : "stringValue46750") @Directive44(argument97 : ["stringValue46749"]) { + field60835: Scalar2 +} + +type Object11504 @Directive21(argument61 : "stringValue46752") @Directive44(argument97 : ["stringValue46751"]) { + field60836: Boolean + field60837: String +} + +type Object11505 @Directive21(argument61 : "stringValue46754") @Directive44(argument97 : ["stringValue46753"]) { + field60838: Enum2821 + field60839: Enum2822 +} + +type Object11506 @Directive21(argument61 : "stringValue46758") @Directive44(argument97 : ["stringValue46757"]) { + field60840: Scalar2 +} + +type Object11507 @Directive21(argument61 : "stringValue46762") @Directive44(argument97 : ["stringValue46761"]) { + field60857: String + field60858: Boolean + field60859: Object3581 + field60860: String + field60861: String + field60862: String +} + +type Object11508 @Directive21(argument61 : "stringValue46764") @Directive44(argument97 : ["stringValue46763"]) { + field60864: String! + field60865: String + field60866: String + field60867: String + field60868: Scalar2 + field60869: Object11335 + field60870: Object11397 + field60871: String +} + +type Object11509 @Directive21(argument61 : "stringValue46766") @Directive44(argument97 : ["stringValue46765"]) { + field60873: String + field60874: String + field60875: String + field60876: String + field60877: Object11335 + field60878: Object3581 +} + +type Object1151 implements Interface76 @Directive21(argument61 : "stringValue6024") @Directive22(argument62 : "stringValue6023") @Directive31 @Directive44(argument97 : ["stringValue6025", "stringValue6026", "stringValue6027"]) @Directive45(argument98 : ["stringValue6028"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union163] + field5221: Boolean + field6494: [Object1152] +} + +type Object11510 @Directive21(argument61 : "stringValue46768") @Directive44(argument97 : ["stringValue46767"]) { + field60880: String + field60881: String! + field60882: String + field60883: String + field60884: String + field60885: String + field60886: String + field60887: String +} + +type Object11511 @Directive21(argument61 : "stringValue46770") @Directive44(argument97 : ["stringValue46769"]) { + field60889: String + field60890: String + field60891: String + field60892: String + field60893: Object11335 + field60894: Object11335 + field60895: Object11335 + field60896: Object11339 + field60897: String + field60898: String + field60899: String + field60900: Object3581 + field60901: [Object11512] + field60918: Scalar2 + field60919: [Object11335] + field60920: [Object11335] + field60921: [Object11335] +} + +type Object11512 @Directive21(argument61 : "stringValue46772") @Directive44(argument97 : ["stringValue46771"]) { + field60902: String + field60903: String + field60904: String + field60905: String + field60906: Boolean + field60907: Boolean + field60908: [String] + field60909: String + field60910: [Object11513] +} + +type Object11513 @Directive21(argument61 : "stringValue46774") @Directive44(argument97 : ["stringValue46773"]) { + field60911: String + field60912: Enum2825 + field60913: String + field60914: String + field60915: String + field60916: String + field60917: String +} + +type Object11514 @Directive21(argument61 : "stringValue46777") @Directive44(argument97 : ["stringValue46776"]) { + field60923: Scalar2! + field60924: Enum2826 + field60925: String + field60926: String + field60927: String + field60928: String + field60929: String + field60930: String + field60931: [String] + field60932: String + field60933: Scalar2 + field60934: String + field60935: String + field60936: String + field60937: String + field60938: String + field60939: [Object11515] + field60945: String + field60946: String + field60947: String + field60948: [Object11380] + field60949: Int +} + +type Object11515 @Directive21(argument61 : "stringValue46780") @Directive44(argument97 : ["stringValue46779"]) { + field60940: Enum2827! + field60941: Scalar2! + field60942: Boolean! + field60943: String + field60944: Enum2828 +} + +type Object11516 @Directive21(argument61 : "stringValue46784") @Directive44(argument97 : ["stringValue46783"]) { + field60951: String + field60952: String + field60953: String + field60954: String + field60955: String + field60956: String + field60957: String + field60958: String + field60959: Object11335 + field60960: Object11335 + field60961: Object11335 + field60962: Object11339 + field60963: String + field60964: String + field60965: Object3581 + field60966: Object3581 + field60967: String + field60968: String + field60969: String + field60970: [Object11517] + field60974: Boolean + field60975: String + field60976: String + field60977: String + field60978: Int + field60979: String + field60980: String + field60981: String + field60982: String + field60983: String + field60984: String +} + +type Object11517 @Directive21(argument61 : "stringValue46786") @Directive44(argument97 : ["stringValue46785"]) { + field60971: String + field60972: Int + field60973: Int +} + +type Object11518 @Directive21(argument61 : "stringValue46788") @Directive44(argument97 : ["stringValue46787"]) { + field60986: Scalar2! + field60987: String + field60988: String + field60989: String + field60990: String + field60991: Object11397 + field60992: String + field60993: String + field60994: String +} + +type Object11519 @Directive21(argument61 : "stringValue46790") @Directive44(argument97 : ["stringValue46789"]) { + field60996: String + field60997: String + field60998: String + field60999: String + field61000: [Object11520] + field61008: String + field61009: String +} + +type Object1152 @Directive20(argument58 : "stringValue6033", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6032") @Directive31 @Directive44(argument97 : ["stringValue6034", "stringValue6035"]) { + field6479: String + field6480: String + field6481: String + field6482: String + field6483: String + field6484: String + field6485: Scalar2 + field6486: Int + field6487: Object899 + field6488: String + field6489: Float + field6490: String + field6491: Int + field6492: String + field6493: String +} + +type Object11520 @Directive21(argument61 : "stringValue46792") @Directive44(argument97 : ["stringValue46791"]) { + field61001: [Object11486] + field61002: Enum2829 + field61003: Enum2830 + field61004: String + field61005: String + field61006: String + field61007: String +} + +type Object11521 @Directive21(argument61 : "stringValue46796") @Directive44(argument97 : ["stringValue46795"]) { + field61011: Object11522 + field61022: Object11523 + field61025: Object11425 +} + +type Object11522 @Directive21(argument61 : "stringValue46798") @Directive44(argument97 : ["stringValue46797"]) { + field61012: Scalar2 + field61013: String + field61014: Float + field61015: Int + field61016: Int + field61017: String + field61018: String + field61019: String + field61020: Boolean + field61021: Int +} + +type Object11523 @Directive21(argument61 : "stringValue46800") @Directive44(argument97 : ["stringValue46799"]) { + field61023: Scalar2 + field61024: Float +} + +type Object11524 @Directive21(argument61 : "stringValue46802") @Directive44(argument97 : ["stringValue46801"]) { + field61027: String + field61028: String + field61029: [Object11525] + field61042: String + field61043: Boolean +} + +type Object11525 @Directive21(argument61 : "stringValue46804") @Directive44(argument97 : ["stringValue46803"]) { + field61030: String + field61031: String + field61032: String + field61033: [Object3582] + field61034: Object11526 + field61039: String + field61040: String + field61041: String +} + +type Object11526 @Directive21(argument61 : "stringValue46806") @Directive44(argument97 : ["stringValue46805"]) { + field61035: String + field61036: String + field61037: String + field61038: String +} + +type Object11527 @Directive21(argument61 : "stringValue46808") @Directive44(argument97 : ["stringValue46807"]) { + field61045: String + field61046: String + field61047: String + field61048: String + field61049: String +} + +type Object11528 @Directive21(argument61 : "stringValue46810") @Directive44(argument97 : ["stringValue46809"]) { + field61051: String + field61052: String + field61053: String + field61054: String + field61055: Object11335 + field61056: Object11335 + field61057: Object11335 + field61058: Object11335 + field61059: String + field61060: Object11529 + field61065: String + field61066: String + field61067: Object3581 + field61068: String + field61069: String + field61070: String +} + +type Object11529 @Directive21(argument61 : "stringValue46812") @Directive44(argument97 : ["stringValue46811"]) { + field61061: Int + field61062: Int + field61063: Int + field61064: Int +} + +type Object1153 @Directive22(argument62 : "stringValue6036") @Directive31 @Directive44(argument97 : ["stringValue6037", "stringValue6038"]) { + field6495: String + field6496: String + field6497: String + field6498: [Object480!] +} + +type Object11530 @Directive21(argument61 : "stringValue46814") @Directive44(argument97 : ["stringValue46813"]) { + field61072: String + field61073: String + field61074: String + field61075: [Object11531] + field61091: String + field61092: Object11333 + field61093: Object11335 + field61094: Object11335 +} + +type Object11531 @Directive21(argument61 : "stringValue46816") @Directive44(argument97 : ["stringValue46815"]) { + field61076: String + field61077: String + field61078: Object11465 + field61079: Object11337 + field61080: Scalar2 + field61081: String + field61082: Float + field61083: Scalar2 + field61084: Float + field61085: Object11397 + field61086: String + field61087: String + field61088: Object11465 + field61089: Boolean + field61090: Int +} + +type Object11532 @Directive21(argument61 : "stringValue46818") @Directive44(argument97 : ["stringValue46817"]) { + field61096: String +} + +type Object11533 @Directive21(argument61 : "stringValue46820") @Directive44(argument97 : ["stringValue46819"]) { + field61098: String + field61099: Object3581 +} + +type Object11534 @Directive21(argument61 : "stringValue46822") @Directive44(argument97 : ["stringValue46821"]) { + field61101: String + field61102: String + field61103: String + field61104: String + field61105: Boolean + field61106: String + field61107: String @deprecated + field61108: Object3581 + field61109: [Object11535] + field61121: Object11337 + field61122: Object11535 + field61123: Object11535 + field61124: String + field61125: String + field61126: String + field61127: String + field61128: Enum2831 + field61129: Enum2831 + field61130: Enum2831 + field61131: Enum2831 + field61132: Float + field61133: Object11535 + field61134: String @deprecated + field61135: Enum2777 + field61136: String + field61137: Object11535 @deprecated + field61138: Object11536 + field61142: Object11372 + field61143: Object11537 + field61146: String + field61147: String + field61148: String + field61149: String +} + +type Object11535 @Directive21(argument61 : "stringValue46824") @Directive44(argument97 : ["stringValue46823"]) { + field61110: Scalar2 + field61111: String + field61112: String + field61113: String + field61114: String + field61115: String + field61116: String + field61117: String + field61118: String + field61119: String + field61120: String +} + +type Object11536 @Directive21(argument61 : "stringValue46827") @Directive44(argument97 : ["stringValue46826"]) { + field61139: String + field61140: String + field61141: String +} + +type Object11537 @Directive21(argument61 : "stringValue46829") @Directive44(argument97 : ["stringValue46828"]) { + field61144: String + field61145: String +} + +type Object11538 @Directive21(argument61 : "stringValue46831") @Directive44(argument97 : ["stringValue46830"]) { + field61151: String + field61152: String + field61153: Object11535 + field61154: String + field61155: Boolean + field61156: String + field61157: String @deprecated + field61158: Object3581 + field61159: String + field61160: String + field61161: Enum2831 + field61162: Enum2831 + field61163: Float + field61164: Object11535 + field61165: Object11535 + field61166: Object11535 + field61167: String + field61168: Object11536 + field61169: Object11372 + field61170: String + field61171: String +} + +type Object11539 @Directive21(argument61 : "stringValue46833") @Directive44(argument97 : ["stringValue46832"]) { + field61173: Enum2832 + field61174: String + field61175: Enum2833 +} + +type Object1154 @Directive22(argument62 : "stringValue6039") @Directive31 @Directive44(argument97 : ["stringValue6040", "stringValue6041"]) { + field6499: [Object1155] + field6508: [Object1156] + field6512: [Object421] + field6513: Boolean + field6514: Object890 + field6515: [Object1157] + field6521: Object1158 +} + +type Object11540 @Directive21(argument61 : "stringValue46837") @Directive44(argument97 : ["stringValue46836"]) { + field61177: [Object11541] + field61241: Boolean + field61242: String + field61243: String + field61244: String! + field61245: String + field61246: String + field61247: [Object11541] + field61248: String + field61249: String + field61250: String + field61251: String + field61252: String + field61253: [Object11546] + field61267: [Object11331] + field61268: String + field61269: [String] + field61270: String + field61271: Int + field61272: String + field61273: String + field61274: Enum2834 + field61275: String + field61276: Object11547 + field61279: Object11548 + field61282: Interface144 +} + +type Object11541 @Directive21(argument61 : "stringValue46839") @Directive44(argument97 : ["stringValue46838"]) { + field61178: Boolean + field61179: String + field61180: String + field61181: String + field61182: [Object11486] + field61183: Object11542 + field61203: String + field61204: String + field61205: String + field61206: String + field61207: String + field61208: String + field61209: String + field61210: String + field61211: [Object11540] + field61212: [String] + field61213: String + field61214: Int + field61215: Boolean + field61216: Boolean + field61217: String + field61218: String + field61219: String + field61220: Int + field61221: String + field61222: [String] + field61223: String + field61224: String + field61225: Enum2829 + field61226: Boolean + field61227: String + field61228: Object11544 + field61238: Object3581 + field61239: String + field61240: Interface144 +} + +type Object11542 @Directive21(argument61 : "stringValue46841") @Directive44(argument97 : ["stringValue46840"]) { + field61184: [Int] + field61185: Int + field61186: Int + field61187: Int + field61188: [Object11543] + field61192: String + field61193: String + field61194: Int + field61195: Boolean + field61196: Boolean + field61197: [Int] + field61198: [String] + field61199: [String] + field61200: Int + field61201: [String] + field61202: [String] +} + +type Object11543 @Directive21(argument61 : "stringValue46843") @Directive44(argument97 : ["stringValue46842"]) { + field61189: String + field61190: String + field61191: Boolean +} + +type Object11544 @Directive21(argument61 : "stringValue46845") @Directive44(argument97 : ["stringValue46844"]) { + field61229: Object11545 +} + +type Object11545 @Directive21(argument61 : "stringValue46847") @Directive44(argument97 : ["stringValue46846"]) { + field61230: Int + field61231: Int + field61232: Int + field61233: Int + field61234: String + field61235: Int + field61236: Int + field61237: [Object11486] +} + +type Object11546 @Directive21(argument61 : "stringValue46849") @Directive44(argument97 : ["stringValue46848"]) { + field61254: [Object11541] + field61255: Boolean + field61256: String + field61257: String + field61258: String + field61259: String + field61260: String + field61261: [Object11541] + field61262: String + field61263: String + field61264: String + field61265: String + field61266: String +} + +type Object11547 @Directive21(argument61 : "stringValue46852") @Directive44(argument97 : ["stringValue46851"]) { + field61277: Int + field61278: [String] +} + +type Object11548 @Directive21(argument61 : "stringValue46854") @Directive44(argument97 : ["stringValue46853"]) { + field61280: Int + field61281: Boolean +} + +type Object11549 @Directive21(argument61 : "stringValue46857") @Directive44(argument97 : ["stringValue46856"]) { + field61285: String + field61286: String + field61287: String + field61288: String + field61289: String + field61290: Object3581 + field61291: String + field61292: Object11550 + field61301: String + field61302: String + field61303: String + field61304: String + field61305: String + field61306: Int + field61307: Int + field61308: Scalar1 + field61309: Scalar2 + field61310: Enum2836 +} + +type Object1155 @Directive22(argument62 : "stringValue6042") @Directive31 @Directive44(argument97 : ["stringValue6043", "stringValue6044"]) { + field6500: String + field6501: Enum132 + field6502: Int + field6503: Boolean + field6504: Interface3 + field6505: String + field6506: Object371 @deprecated + field6507: Object453 @deprecated +} + +type Object11550 @Directive21(argument61 : "stringValue46859") @Directive44(argument97 : ["stringValue46858"]) { + field61293: String + field61294: String + field61295: String + field61296: String + field61297: Scalar2 + field61298: Scalar2 + field61299: Scalar2 + field61300: Scalar2 +} + +type Object11551 @Directive21(argument61 : "stringValue46862") @Directive44(argument97 : ["stringValue46861"]) { + field61312: String + field61313: String + field61314: Object11535 + field61315: String + field61316: String + field61317: Float + field61318: Int + field61319: String + field61320: String + field61321: String + field61322: String + field61323: Scalar2 + field61324: Int + field61325: String + field61326: String +} + +type Object11552 @Directive21(argument61 : "stringValue46864") @Directive44(argument97 : ["stringValue46863"]) { + field61328: String + field61329: String + field61330: String + field61331: Object11535 + field61332: [Object11538] + field61333: Boolean + field61334: Boolean + field61335: String + field61336: Object11535 + field61337: Object11535 + field61338: Object11535 + field61339: String + field61340: Int +} + +type Object11553 @Directive21(argument61 : "stringValue46866") @Directive44(argument97 : ["stringValue46865"]) { + field61342: String + field61343: String + field61344: String + field61345: Enum2837 + field61346: Object11554 + field61349: Object11555 + field61351: String + field61352: Object11535 + field61353: Object11535 + field61354: Object11535 + field61355: Object11535 + field61356: Object11472 +} + +type Object11554 @Directive21(argument61 : "stringValue46869") @Directive44(argument97 : ["stringValue46868"]) { + field61347: String + field61348: String +} + +type Object11555 @Directive21(argument61 : "stringValue46871") @Directive44(argument97 : ["stringValue46870"]) { + field61350: String +} + +type Object11556 @Directive21(argument61 : "stringValue46873") @Directive44(argument97 : ["stringValue46872"]) { + field61358: Enum2838 + field61359: [Object11557] +} + +type Object11557 @Directive21(argument61 : "stringValue46876") @Directive44(argument97 : ["stringValue46875"]) { + field61360: String + field61361: String + field61362: [Object11462] + field61363: Object11333 +} + +type Object11558 @Directive21(argument61 : "stringValue46878") @Directive44(argument97 : ["stringValue46877"]) { + field61365: String + field61366: String + field61367: String + field61368: String +} + +type Object11559 @Directive21(argument61 : "stringValue46880") @Directive44(argument97 : ["stringValue46879"]) { + field61370: Int + field61371: String + field61372: Int + field61373: String + field61374: String + field61375: String + field61376: String + field61377: String + field61378: String +} + +type Object1156 @Directive22(argument62 : "stringValue6045") @Directive31 @Directive44(argument97 : ["stringValue6046", "stringValue6047"]) { + field6509: String + field6510: Object398 + field6511: Enum296 +} + +type Object11560 @Directive21(argument61 : "stringValue46882") @Directive44(argument97 : ["stringValue46881"]) { + field61380: String + field61381: String + field61382: String + field61383: String +} + +type Object11561 @Directive21(argument61 : "stringValue46885") @Directive44(argument97 : ["stringValue46884"]) { + field61386: Scalar2! + field61387: String + field61388: String + field61389: String + field61390: [Object11515] + field61391: String +} + +type Object11562 @Directive21(argument61 : "stringValue46887") @Directive44(argument97 : ["stringValue46886"]) { + field61393: [Object11563] + field61404: String + field61405: String + field61406: String! + field61407: String + field61408: String + field61409: Enum2841 +} + +type Object11563 @Directive21(argument61 : "stringValue46889") @Directive44(argument97 : ["stringValue46888"]) { + field61394: Boolean + field61395: String + field61396: String + field61397: String + field61398: [Object11486] + field61399: String + field61400: Int + field61401: String + field61402: String + field61403: Enum2840 +} + +type Object11564 @Directive21(argument61 : "stringValue46893") @Directive44(argument97 : ["stringValue46892"]) { + field61411: String + field61412: String + field61413: String + field61414: String + field61415: Object11335 + field61416: Object11335 + field61417: Object11335 + field61418: Object11335 + field61419: String + field61420: Object11529 + field61421: String + field61422: String + field61423: Object3581 + field61424: String + field61425: String + field61426: String +} + +type Object11565 @Directive21(argument61 : "stringValue46895") @Directive44(argument97 : ["stringValue46894"]) { + field61428: Enum2842 + field61429: Object11473 + field61430: Object11566 + field61434: String + field61435: String +} + +type Object11566 @Directive21(argument61 : "stringValue46898") @Directive44(argument97 : ["stringValue46897"]) { + field61431: String + field61432: String + field61433: String +} + +type Object11567 @Directive21(argument61 : "stringValue46900") @Directive44(argument97 : ["stringValue46899"]) { + field61437: String + field61438: String + field61439: String + field61440: String + field61441: String + field61442: String + field61443: String +} + +type Object11568 @Directive21(argument61 : "stringValue46902") @Directive44(argument97 : ["stringValue46901"]) { + field61445: String + field61446: String + field61447: String + field61448: Object3581 + field61449: Object11535 +} + +type Object11569 @Directive21(argument61 : "stringValue46904") @Directive44(argument97 : ["stringValue46903"]) { + field61451: String + field61452: String + field61453: Object3581 + field61454: String +} + +type Object1157 @Directive22(argument62 : "stringValue6051") @Directive31 @Directive44(argument97 : ["stringValue6052", "stringValue6053"]) { + field6516: Object421 + field6517: Enum297 + field6518: String + field6519: Interface3 + field6520: Boolean +} + +type Object11570 @Directive21(argument61 : "stringValue46906") @Directive44(argument97 : ["stringValue46905"]) { + field61456: String + field61457: String + field61458: String + field61459: String + field61460: String + field61461: String + field61462: Object11465 + field61463: Object11462 + field61464: Object3581 +} + +type Object11571 @Directive21(argument61 : "stringValue46908") @Directive44(argument97 : ["stringValue46907"]) { + field61466: String + field61467: String + field61468: String + field61469: String + field61470: Object11335 + field61471: [Object11335] + field61472: String + field61473: String + field61474: String + field61475: String + field61476: String + field61477: String + field61478: [Object11572] + field61483: String +} + +type Object11572 @Directive21(argument61 : "stringValue46910") @Directive44(argument97 : ["stringValue46909"]) { + field61479: Scalar2 + field61480: Enum2843 + field61481: String + field61482: [Object11407] +} + +type Object11573 @Directive21(argument61 : "stringValue46913") @Directive44(argument97 : ["stringValue46912"]) { + field61486: String + field61487: [Int] @deprecated + field61488: Object3581 + field61489: Boolean + field61490: String +} + +type Object11574 @Directive21(argument61 : "stringValue46915") @Directive44(argument97 : ["stringValue46914"]) { + field61492: String + field61493: [Object11575] + field61507: Object11333 +} + +type Object11575 @Directive21(argument61 : "stringValue46917") @Directive44(argument97 : ["stringValue46916"]) { + field61494: String + field61495: String + field61496: Object3581 + field61497: Object11335 + field61498: String + field61499: Object11535 + field61500: String + field61501: Object11536 + field61502: String + field61503: String + field61504: [Enum2776] + field61505: [Object3582] + field61506: Interface144 +} + +type Object11576 @Directive21(argument61 : "stringValue46919") @Directive44(argument97 : ["stringValue46918"]) { + field61509: String + field61510: [Object11577] + field61520: [Object11578] +} + +type Object11577 @Directive21(argument61 : "stringValue46921") @Directive44(argument97 : ["stringValue46920"]) { + field61511: String + field61512: String + field61513: String + field61514: String + field61515: String + field61516: String + field61517: String + field61518: String + field61519: [Object3582] +} + +type Object11578 @Directive21(argument61 : "stringValue46923") @Directive44(argument97 : ["stringValue46922"]) { + field61521: String + field61522: String + field61523: Enum2844 + field61524: [Object11579] +} + +type Object11579 @Directive21(argument61 : "stringValue46926") @Directive44(argument97 : ["stringValue46925"]) { + field61525: String + field61526: String + field61527: String + field61528: String + field61529: Object3581 +} + +type Object1158 @Directive22(argument62 : "stringValue6058") @Directive31 @Directive44(argument97 : ["stringValue6059", "stringValue6060"]) { + field6522: Object371 @deprecated + field6523: Interface3 + field6524: Int + field6525: String + field6526: Enum298 + field6527: Boolean +} + +type Object11580 @Directive21(argument61 : "stringValue46928") @Directive44(argument97 : ["stringValue46927"]) { + field61531: String + field61532: [Object11371] +} + +type Object11581 @Directive21(argument61 : "stringValue46930") @Directive44(argument97 : ["stringValue46929"]) { + field61534: String! @deprecated + field61535: Object11582 + field61558: Object11591 + field61571: String! + field61572: Object11594 + field61626: Object11611 +} + +type Object11582 @Directive21(argument61 : "stringValue46932") @Directive44(argument97 : ["stringValue46931"]) { + field61536: [Object11583] + field61541: Object11584 + field61548: Object11584 + field61549: String + field61550: Object11587 +} + +type Object11583 @Directive21(argument61 : "stringValue46934") @Directive44(argument97 : ["stringValue46933"]) { + field61537: String + field61538: String + field61539: String + field61540: String +} + +type Object11584 @Directive21(argument61 : "stringValue46936") @Directive44(argument97 : ["stringValue46935"]) { + field61542: Object11585 + field61546: Object11586 +} + +type Object11585 @Directive21(argument61 : "stringValue46938") @Directive44(argument97 : ["stringValue46937"]) { + field61543: String + field61544: String + field61545: Boolean +} + +type Object11586 @Directive21(argument61 : "stringValue46940") @Directive44(argument97 : ["stringValue46939"]) { + field61547: String +} + +type Object11587 @Directive21(argument61 : "stringValue46942") @Directive44(argument97 : ["stringValue46941"]) { + field61551: String + field61552: Enum2845 + field61553: Union381 +} + +type Object11588 @Directive21(argument61 : "stringValue46946") @Directive44(argument97 : ["stringValue46945"]) { + field61554: [Object11486] +} + +type Object11589 @Directive21(argument61 : "stringValue46948") @Directive44(argument97 : ["stringValue46947"]) { + field61555: [Object3582] @deprecated + field61556: Object3581 +} + +type Object1159 @Directive22(argument62 : "stringValue6065") @Directive31 @Directive44(argument97 : ["stringValue6066", "stringValue6067"]) { + field6528: Object452 + field6529: Object452 + field6530: Boolean + field6531: [String] + field6532: String +} + +type Object11590 @Directive21(argument61 : "stringValue46950") @Directive44(argument97 : ["stringValue46949"]) { + field61557: String +} + +type Object11591 @Directive21(argument61 : "stringValue46952") @Directive44(argument97 : ["stringValue46951"]) { + field61559: [Object11583] + field61560: Object11584 + field61561: Object11584 + field61562: Object11584 + field61563: Object11584 + field61564: Object11587 + field61565: Object11592 +} + +type Object11592 @Directive21(argument61 : "stringValue46954") @Directive44(argument97 : ["stringValue46953"]) { + field61566: Object11584 + field61567: Object11584 + field61568: [Object11593] +} + +type Object11593 @Directive21(argument61 : "stringValue46956") @Directive44(argument97 : ["stringValue46955"]) { + field61569: String + field61570: Enum2846 +} + +type Object11594 @Directive21(argument61 : "stringValue46959") @Directive44(argument97 : ["stringValue46958"]) { + field61573: Object11583 + field61574: Object11595 + field61581: Object11595 + field61582: Object11595 + field61583: Object11598 + field61588: [Object11600] + field61592: Object11601 + field61625: Union381 +} + +type Object11595 @Directive21(argument61 : "stringValue46961") @Directive44(argument97 : ["stringValue46960"]) { + field61575: Object11596 + field61578: Object11597 + field61580: String +} + +type Object11596 @Directive21(argument61 : "stringValue46963") @Directive44(argument97 : ["stringValue46962"]) { + field61576: String + field61577: String +} + +type Object11597 @Directive21(argument61 : "stringValue46965") @Directive44(argument97 : ["stringValue46964"]) { + field61579: String +} + +type Object11598 @Directive21(argument61 : "stringValue46967") @Directive44(argument97 : ["stringValue46966"]) { + field61584: [Object11599] +} + +type Object11599 @Directive21(argument61 : "stringValue46969") @Directive44(argument97 : ["stringValue46968"]) { + field61585: String + field61586: String + field61587: Scalar5 +} + +type Object116 @Directive21(argument61 : "stringValue428") @Directive44(argument97 : ["stringValue427"]) { + field753: String! + field754: String! + field755: Object112 + field756: String +} + +type Object1160 @Directive22(argument62 : "stringValue6070") @Directive31 @Directive44(argument97 : ["stringValue6068", "stringValue6069"]) { + field6533: Object1158 + field6534: Enum299 +} + +type Object11600 @Directive21(argument61 : "stringValue46971") @Directive44(argument97 : ["stringValue46970"]) { + field61589: String + field61590: String + field61591: String +} + +type Object11601 @Directive21(argument61 : "stringValue46973") @Directive44(argument97 : ["stringValue46972"]) { + field61593: [Union382] + field61619: Object11610 +} + +type Object11602 @Directive21(argument61 : "stringValue46976") @Directive44(argument97 : ["stringValue46975"]) { + field61594: Object11583 + field61595: Object11603 + field61600: Object11595 + field61601: Object11595 + field61602: String + field61603: Object11595 + field61604: Object11595 + field61605: Object11605 + field61608: Object11606 +} + +type Object11603 @Directive21(argument61 : "stringValue46978") @Directive44(argument97 : ["stringValue46977"]) { + field61596: Object11604 + field61599: String +} + +type Object11604 @Directive21(argument61 : "stringValue46980") @Directive44(argument97 : ["stringValue46979"]) { + field61597: String + field61598: String +} + +type Object11605 @Directive21(argument61 : "stringValue46982") @Directive44(argument97 : ["stringValue46981"]) { + field61606: String + field61607: String +} + +type Object11606 @Directive21(argument61 : "stringValue46984") @Directive44(argument97 : ["stringValue46983"]) { + field61609: [String] + field61610: String + field61611: Object11607 +} + +type Object11607 @Directive21(argument61 : "stringValue46986") @Directive44(argument97 : ["stringValue46985"]) { + field61612: String + field61613: [String] + field61614: [Object11608] +} + +type Object11608 @Directive21(argument61 : "stringValue46988") @Directive44(argument97 : ["stringValue46987"]) { + field61615: String + field61616: String +} + +type Object11609 @Directive21(argument61 : "stringValue46990") @Directive44(argument97 : ["stringValue46989"]) { + field61617: String + field61618: Object11604 +} + +type Object1161 implements Interface78 @Directive22(argument62 : "stringValue6080") @Directive31 @Directive44(argument97 : ["stringValue6081", "stringValue6082"]) { + field6535: String + field6536: String + field6537: [Object1162] +} + +type Object11610 @Directive21(argument61 : "stringValue46992") @Directive44(argument97 : ["stringValue46991"]) { + field61620: Object11595 + field61621: String + field61622: [Object11600] + field61623: [Object11600] + field61624: Object11587 +} + +type Object11611 @Directive21(argument61 : "stringValue46994") @Directive44(argument97 : ["stringValue46993"]) { + field61627: Object11583 + field61628: Object11595 + field61629: Object11595 + field61630: Object11604 + field61631: [Object11600] + field61632: Object11612 + field61635: Union381 +} + +type Object11612 @Directive21(argument61 : "stringValue46996") @Directive44(argument97 : ["stringValue46995"]) { + field61633: [Object11600] + field61634: Object11587 +} + +type Object11613 @Directive21(argument61 : "stringValue46998") @Directive44(argument97 : ["stringValue46997"]) { + field61637: String! @deprecated + field61638: Object11614 + field61643: Object11616 + field61652: String! +} + +type Object11614 @Directive21(argument61 : "stringValue47000") @Directive44(argument97 : ["stringValue46999"]) { + field61639: String + field61640: String + field61641: [Object11615] +} + +type Object11615 @Directive21(argument61 : "stringValue47002") @Directive44(argument97 : ["stringValue47001"]) { + field61642: String +} + +type Object11616 @Directive21(argument61 : "stringValue47004") @Directive44(argument97 : ["stringValue47003"]) { + field61644: [Object11583] + field61645: String + field61646: String + field61647: Object11584 + field61648: Object11584 + field61649: Object11584 + field61650: Object11592 + field61651: Union381 +} + +type Object11617 @Directive21(argument61 : "stringValue47006") @Directive44(argument97 : ["stringValue47005"]) { + field61655: String + field61656: String + field61657: Object3581 + field61658: Object11535 + field61659: Object11535 + field61660: Object11535 + field61661: Object11535 + field61662: Object11337 + field61663: Float + field61664: Object11536 + field61665: Object11372 + field61666: String + field61667: String +} + +type Object11618 @Directive21(argument61 : "stringValue47008") @Directive44(argument97 : ["stringValue47007"]) { + field61670: [Object11619] + field61676: Object11621 +} + +type Object11619 @Directive21(argument61 : "stringValue47010") @Directive44(argument97 : ["stringValue47009"]) { + field61671: [Object11620] + field61675: Enum2847 +} + +type Object1162 implements Interface79 @Directive22(argument62 : "stringValue6083") @Directive31 @Directive44(argument97 : ["stringValue6084", "stringValue6085"]) { + field6538: String + field6539: String + field6540: Object1 + field6541: Boolean +} + +type Object11620 @Directive21(argument61 : "stringValue47012") @Directive44(argument97 : ["stringValue47011"]) { + field61672: String + field61673: [Object11486] + field61674: [String] +} + +type Object11621 @Directive21(argument61 : "stringValue47015") @Directive44(argument97 : ["stringValue47014"]) { + field61677: String + field61678: String + field61679: String +} + +type Object11622 @Directive21(argument61 : "stringValue47017") @Directive44(argument97 : ["stringValue47016"]) { + field61682: Enum2848 + field61683: Boolean + field61684: Object11623 + field61698: String + field61699: String + field61700: String + field61701: String + field61702: String + field61703: String + field61704: Object11624 + field61718: Object3589 + field61719: Boolean +} + +type Object11623 @Directive21(argument61 : "stringValue47020") @Directive44(argument97 : ["stringValue47019"]) { + field61685: String + field61686: String + field61687: String + field61688: String + field61689: Enum2848 + field61690: String + field61691: String + field61692: Boolean + field61693: Boolean + field61694: Int + field61695: Int + field61696: Int + field61697: [Object11486] +} + +type Object11624 @Directive21(argument61 : "stringValue47022") @Directive44(argument97 : ["stringValue47021"]) { + field61705: String + field61706: String + field61707: String + field61708: String + field61709: Object11625 +} + +type Object11625 @Directive21(argument61 : "stringValue47024") @Directive44(argument97 : ["stringValue47023"]) { + field61710: String + field61711: Object11626 + field61716: Object11626 + field61717: Object11626 +} + +type Object11626 @Directive21(argument61 : "stringValue47026") @Directive44(argument97 : ["stringValue47025"]) { + field61712: String + field61713: String + field61714: Int + field61715: Int +} + +type Object11627 @Directive21(argument61 : "stringValue47028") @Directive44(argument97 : ["stringValue47027"]) { + field61721: String! + field61722: Object11473 + field61723: Object11628 + field61725: String! + field61726: Object11629 + field61737: Object11631 +} + +type Object11628 @Directive21(argument61 : "stringValue47030") @Directive44(argument97 : ["stringValue47029"]) { + field61724: String +} + +type Object11629 @Directive21(argument61 : "stringValue47032") @Directive44(argument97 : ["stringValue47031"]) { + field61727: String + field61728: Object11630 + field61733: [Object11473] + field61734: Object3581 + field61735: String + field61736: String +} + +type Object1163 implements Interface78 @Directive22(argument62 : "stringValue6086") @Directive31 @Directive44(argument97 : ["stringValue6087", "stringValue6088"]) { + field6535: String + field6536: String + field6537: [Object1164] + field6544: String + field6545: String + field6546: Boolean +} + +type Object11630 @Directive21(argument61 : "stringValue47034") @Directive44(argument97 : ["stringValue47033"]) { + field61729: String + field61730: String + field61731: String + field61732: String +} + +type Object11631 @Directive21(argument61 : "stringValue47036") @Directive44(argument97 : ["stringValue47035"]) { + field61738: String + field61739: Object11630 + field61740: [Object11334] +} + +type Object11632 @Directive21(argument61 : "stringValue47038") @Directive44(argument97 : ["stringValue47037"]) { + field61742: String + field61743: String + field61744: String + field61745: String +} + +type Object11633 @Directive21(argument61 : "stringValue47040") @Directive44(argument97 : ["stringValue47039"]) { + field61747: String + field61748: String + field61749: Object11536 + field61750: Object11372 + field61751: [Object11535] + field61752: [Object11535] + field61753: [Object11535] + field61754: [Object11535] + field61755: Enum2849 + field61756: [Object11634] +} + +type Object11634 @Directive21(argument61 : "stringValue47043") @Directive44(argument97 : ["stringValue47042"]) { + field61757: String + field61758: String + field61759: Object11635 +} + +type Object11635 @Directive21(argument61 : "stringValue47045") @Directive44(argument97 : ["stringValue47044"]) { + field61760: Enum2850 + field61761: Object3581 + field61762: Enum2851 + field61763: Union383 + field61777: String +} + +type Object11636 @Directive21(argument61 : "stringValue47050") @Directive44(argument97 : ["stringValue47049"]) { + field61764: String + field61765: String + field61766: String + field61767: Object11637 + field61770: Scalar4 + field61771: Scalar4 + field61772: String +} + +type Object11637 @Directive21(argument61 : "stringValue47052") @Directive44(argument97 : ["stringValue47051"]) { + field61768: Enum2852 + field61769: String +} + +type Object11638 @Directive21(argument61 : "stringValue47055") @Directive44(argument97 : ["stringValue47054"]) { + field61773: String + field61774: String + field61775: String + field61776: [Object11637] +} + +type Object11639 @Directive21(argument61 : "stringValue47057") @Directive44(argument97 : ["stringValue47056"]) { + field61779: String + field61780: String + field61781: String + field61782: Object11335 + field61783: Object11335 + field61784: Object11335 +} + +type Object1164 implements Interface79 @Directive22(argument62 : "stringValue6089") @Directive31 @Directive44(argument97 : ["stringValue6090", "stringValue6091"]) { + field6538: String + field6539: String + field6540: Object1 + field6541: Boolean + field6542: String + field6543: String +} + +type Object11640 @Directive21(argument61 : "stringValue47059") @Directive44(argument97 : ["stringValue47058"]) { + field61786: Scalar2 + field61787: String + field61788: String + field61789: String + field61790: String + field61791: Enum2839 + field61792: String +} + +type Object11641 @Directive21(argument61 : "stringValue47061") @Directive44(argument97 : ["stringValue47060"]) { + field61794: Enum2853 +} + +type Object11642 @Directive21(argument61 : "stringValue47064") @Directive44(argument97 : ["stringValue47063"]) { + field61796: Object11337 + field61797: Object11337 + field61798: Object11335 + field61799: Object11335 + field61800: Object11335 + field61801: [Object11371] + field61802: String + field61803: Object3581 +} + +type Object11643 @Directive21(argument61 : "stringValue47066") @Directive44(argument97 : ["stringValue47065"]) { + field61805: String + field61806: String + field61807: String + field61808: Object11335 + field61809: Object11335 + field61810: Object11335 +} + +type Object11644 @Directive21(argument61 : "stringValue47069") @Directive44(argument97 : ["stringValue47068"]) { + field61814: Scalar2 + field61815: String + field61816: Enum2803 + field61817: String + field61818: String + field61819: String + field61820: String + field61821: [Object11467] + field61822: String + field61823: String + field61824: Enum2777 + field61825: String + field61826: [Object11465] +} + +type Object11645 @Directive21(argument61 : "stringValue47071") @Directive44(argument97 : ["stringValue47070"]) { + field61828: String + field61829: String + field61830: String + field61831: Object3581 + field61832: Object11335 + field61833: Object11335 + field61834: Object11335 +} + +type Object11646 @Directive21(argument61 : "stringValue47073") @Directive44(argument97 : ["stringValue47072"]) { + field61836: String + field61837: Int + field61838: Int +} + +type Object11647 @Directive21(argument61 : "stringValue47075") @Directive44(argument97 : ["stringValue47074"]) { + field61842: Object11534 + field61843: Object11553 +} + +type Object11648 @Directive21(argument61 : "stringValue47077") @Directive44(argument97 : ["stringValue47076"]) { + field61845: Object3581 +} + +type Object11649 @Directive21(argument61 : "stringValue47079") @Directive44(argument97 : ["stringValue47078"]) { + field61847: String + field61848: String + field61849: String + field61850: Object11417 + field61851: Object11535 + field61852: Int + field61853: Object3581 +} + +type Object1165 @Directive20(argument58 : "stringValue6093", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6092") @Directive31 @Directive44(argument97 : ["stringValue6094", "stringValue6095"]) { + field6547: String + field6548: String + field6549: Object1166 + field6553: String + field6554: String + field6555: String + field6556: String + field6557: Boolean + field6558: String + field6559: String + field6560: String + field6561: String +} + +type Object11650 @Directive21(argument61 : "stringValue47081") @Directive44(argument97 : ["stringValue47080"]) { + field61855: String +} + +type Object11651 @Directive21(argument61 : "stringValue47083") @Directive44(argument97 : ["stringValue47082"]) { + field61857: Object11652 + field61929: Object11652 + field61930: Object11652 +} + +type Object11652 @Directive21(argument61 : "stringValue47085") @Directive44(argument97 : ["stringValue47084"]) { + field61858: Object11653 + field61915: Object11341 + field61916: Object11341 + field61917: Object11341 + field61918: Object11665 + field61925: Interface146 + field61926: Object11348 + field61927: Object11653 + field61928: Object11345 +} + +type Object11653 @Directive21(argument61 : "stringValue47087") @Directive44(argument97 : ["stringValue47086"]) { + field61859: Enum2855 + field61860: Object11654 + field61866: Object11655 + field61872: Object11352 + field61873: Object11656 + field61876: Object11657 + field61879: Object3589 + field61880: Object11658 +} + +type Object11654 @Directive21(argument61 : "stringValue47090") @Directive44(argument97 : ["stringValue47089"]) { + field61861: String + field61862: String + field61863: String + field61864: Object11353 + field61865: String +} + +type Object11655 @Directive21(argument61 : "stringValue47092") @Directive44(argument97 : ["stringValue47091"]) { + field61867: String + field61868: String + field61869: String + field61870: Object11353 + field61871: String +} + +type Object11656 @Directive21(argument61 : "stringValue47094") @Directive44(argument97 : ["stringValue47093"]) { + field61874: String + field61875: Object3589 +} + +type Object11657 @Directive21(argument61 : "stringValue47096") @Directive44(argument97 : ["stringValue47095"]) { + field61877: [Object11654] + field61878: Object11353 +} + +type Object11658 @Directive21(argument61 : "stringValue47098") @Directive44(argument97 : ["stringValue47097"]) { + field61881: Object11659 + field61914: Object11353 +} + +type Object11659 implements Interface147 @Directive21(argument61 : "stringValue47100") @Directive44(argument97 : ["stringValue47099"]) { + field16410: String! + field16411: Enum710 + field16412: Float + field16413: String + field16414: Interface145 + field16415: Interface144 + field61882: Object3609 + field61883: String + field61884: String + field61885: Boolean + field61886: String + field61887: [Object11660!] + field61893: String + field61894: String + field61895: String + field61896: String + field61897: String + field61898: String + field61899: String + field61900: String + field61901: String + field61902: String + field61903: String + field61904: String + field61905: String + field61906: String + field61907: String + field61908: Object11662 +} + +type Object1166 @Directive22(argument62 : "stringValue6096") @Directive31 @Directive44(argument97 : ["stringValue6097", "stringValue6098"]) { + field6550: String + field6551: String + field6552: String +} + +type Object11660 @Directive21(argument61 : "stringValue47102") @Directive44(argument97 : ["stringValue47101"]) { + field61888: String + field61889: [Object11661!] + field61892: Object11661 +} + +type Object11661 @Directive21(argument61 : "stringValue47104") @Directive44(argument97 : ["stringValue47103"]) { + field61890: String + field61891: String +} + +type Object11662 @Directive21(argument61 : "stringValue47106") @Directive44(argument97 : ["stringValue47105"]) { + field61909: Object11663 + field61912: Object11664 +} + +type Object11663 @Directive21(argument61 : "stringValue47108") @Directive44(argument97 : ["stringValue47107"]) { + field61910: String! + field61911: [Object11660!] +} + +type Object11664 @Directive21(argument61 : "stringValue47110") @Directive44(argument97 : ["stringValue47109"]) { + field61913: String! +} + +type Object11665 @Directive21(argument61 : "stringValue47112") @Directive44(argument97 : ["stringValue47111"]) { + field61919: Enum2856 + field61920: Object11342 + field61921: Object11666 + field61924: Object11348 +} + +type Object11666 @Directive21(argument61 : "stringValue47115") @Directive44(argument97 : ["stringValue47114"]) { + field61922: Object11345 + field61923: Object11345 +} + +type Object11667 @Directive21(argument61 : "stringValue47117") @Directive44(argument97 : ["stringValue47116"]) { + field61932: Object11668 + field61936: String + field61937: String + field61938: String +} + +type Object11668 @Directive21(argument61 : "stringValue47119") @Directive44(argument97 : ["stringValue47118"]) { + field61933: String + field61934: String + field61935: String +} + +type Object11669 @Directive21(argument61 : "stringValue47121") @Directive44(argument97 : ["stringValue47120"]) { + field61942: Object11346 + field61943: Object11346 + field61944: Object11346 +} + +type Object1167 @Directive20(argument58 : "stringValue6100", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6099") @Directive31 @Directive44(argument97 : ["stringValue6101", "stringValue6102"]) { + field6562: String + field6563: [Object1168!] +} + +type Object11670 @Directive21(argument61 : "stringValue47123") @Directive44(argument97 : ["stringValue47122"]) { + field61946: Object11671 + field61949: Object11671 + field61950: Object11671 +} + +type Object11671 @Directive21(argument61 : "stringValue47125") @Directive44(argument97 : ["stringValue47124"]) { + field61947: Object11341 + field61948: Object11341 +} + +type Object11672 @Directive21(argument61 : "stringValue47127") @Directive44(argument97 : ["stringValue47126"]) { + field61952: Object11673 + field61968: String + field61969: Interface144 +} + +type Object11673 @Directive21(argument61 : "stringValue47129") @Directive44(argument97 : ["stringValue47128"]) { + field61953: Object11674 + field61966: Object11674 + field61967: Object11674 +} + +type Object11674 @Directive21(argument61 : "stringValue47131") @Directive44(argument97 : ["stringValue47130"]) { + field61954: Object11341 + field61955: Object11341 + field61956: Object11341 + field61957: Object11341 + field61958: Object11665 + field61959: Object11345 + field61960: Object11653 + field61961: Object11654 + field61962: Object11675 +} + +type Object11675 @Directive21(argument61 : "stringValue47133") @Directive44(argument97 : ["stringValue47132"]) { + field61963: Object11665 + field61964: Object11676 +} + +type Object11676 @Directive21(argument61 : "stringValue47135") @Directive44(argument97 : ["stringValue47134"]) { + field61965: [Object11341] +} + +type Object11677 @Directive21(argument61 : "stringValue47137") @Directive44(argument97 : ["stringValue47136"]) { + field61971: Object11678 + field61982: String + field61983: Interface144 +} + +type Object11678 @Directive21(argument61 : "stringValue47139") @Directive44(argument97 : ["stringValue47138"]) { + field61972: Object11679 + field61979: Object11679 + field61980: Object11679 + field61981: Object11679 +} + +type Object11679 @Directive21(argument61 : "stringValue47141") @Directive44(argument97 : ["stringValue47140"]) { + field61973: Object11341 + field61974: Object11341 + field61975: Object11341 + field61976: Object11345 + field61977: Object11653 + field61978: Object11654 +} + +type Object1168 @Directive20(argument58 : "stringValue6104", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6103") @Directive31 @Directive44(argument97 : ["stringValue6105", "stringValue6106"]) { + field6564: Scalar2 + field6565: String + field6566: Scalar2 +} + +type Object11680 @Directive21(argument61 : "stringValue47143") @Directive44(argument97 : ["stringValue47142"]) { + field61985: Object11681 + field61990: Object11681 + field61991: Object11681 +} + +type Object11681 @Directive21(argument61 : "stringValue47145") @Directive44(argument97 : ["stringValue47144"]) { + field61986: Object11341 + field61987: Interface146 + field61988: String + field61989: Object11653 +} + +type Object11682 @Directive21(argument61 : "stringValue47147") @Directive44(argument97 : ["stringValue47146"]) { + field61995: Object11683 + field61998: Object11683 + field61999: Object11683 +} + +type Object11683 @Directive21(argument61 : "stringValue47149") @Directive44(argument97 : ["stringValue47148"]) { + field61996: Float + field61997: Float +} + +type Object11684 @Directive21(argument61 : "stringValue47151") @Directive44(argument97 : ["stringValue47150"]) { + field62003: Object11685! + field62043: Enum2859! + field62044: Object11691! + field62047: Object11692 +} + +type Object11685 @Directive21(argument61 : "stringValue47153") @Directive44(argument97 : ["stringValue47152"]) { + field62004: Object11686 + field62026: Object11689 +} + +type Object11686 @Directive21(argument61 : "stringValue47155") @Directive44(argument97 : ["stringValue47154"]) { + field62005: Object11687 + field62018: String + field62019: String! + field62020: String + field62021: String! + field62022: Enum2858! + field62023: Object11359 + field62024: String + field62025: String +} + +type Object11687 @Directive21(argument61 : "stringValue47157") @Directive44(argument97 : ["stringValue47156"]) { + field62006: String + field62007: String + field62008: String + field62009: Enum2857 + field62010: Boolean + field62011: [Object11688] + field62014: String + field62015: String + field62016: String + field62017: [Object11688] +} + +type Object11688 @Directive21(argument61 : "stringValue47160") @Directive44(argument97 : ["stringValue47159"]) { + field62012: String! + field62013: String +} + +type Object11689 @Directive21(argument61 : "stringValue47163") @Directive44(argument97 : ["stringValue47162"]) { + field62027: Object11687 + field62028: String + field62029: String! + field62030: String + field62031: String! + field62032: Enum2858! + field62033: Object11359 + field62034: String + field62035: String + field62036: Object11690 +} + +type Object1169 @Directive22(argument62 : "stringValue6107") @Directive31 @Directive44(argument97 : ["stringValue6108", "stringValue6109"]) { + field6567: Object452 + field6568: Object452 + field6569: Object452 + field6570: [String] + field6571: [String] + field6572: Interface3 + field6573: Object398 + field6574: String +} + +type Object11690 @Directive21(argument61 : "stringValue47165") @Directive44(argument97 : ["stringValue47164"]) { + field62037: String + field62038: String + field62039: String + field62040: String + field62041: String + field62042: String +} + +type Object11691 @Directive21(argument61 : "stringValue47168") @Directive44(argument97 : ["stringValue47167"]) { + field62045: String + field62046: [String] +} + +type Object11692 @Directive21(argument61 : "stringValue47170") @Directive44(argument97 : ["stringValue47169"]) { + field62048: Enum2860! + field62049: Object3581 + field62050: String + field62051: [String] @deprecated + field62052: [String] +} + +type Object11693 @Directive21(argument61 : "stringValue47173") @Directive44(argument97 : ["stringValue47172"]) { + field62054: String + field62055: String + field62056: Boolean + field62057: Int + field62058: Int + field62059: Object11694 + field62109: Object11701 +} + +type Object11694 @Directive21(argument61 : "stringValue47175") @Directive44(argument97 : ["stringValue47174"]) { + field62060: Scalar2 + field62061: Scalar2 + field62062: Object11695 +} + +type Object11695 @Directive21(argument61 : "stringValue47177") @Directive44(argument97 : ["stringValue47176"]) { + field62063: Int + field62064: String + field62065: String + field62066: String + field62067: Float + field62068: Float + field62069: String + field62070: String + field62071: String + field62072: String + field62073: String + field62074: String + field62075: String + field62076: String + field62077: String + field62078: String + field62079: String + field62080: String + field62081: String + field62082: String + field62083: String + field62084: String + field62085: String + field62086: String + field62087: String + field62088: String + field62089: String + field62090: String + field62091: String + field62092: Object11696 + field62107: Boolean + field62108: Boolean +} + +type Object11696 @Directive21(argument61 : "stringValue47179") @Directive44(argument97 : ["stringValue47178"]) { + field62093: String + field62094: String + field62095: [Object11697] + field62099: Float + field62100: Float + field62101: Float + field62102: Object11699 +} + +type Object11697 @Directive21(argument61 : "stringValue47181") @Directive44(argument97 : ["stringValue47180"]) { + field62096: [Object11698] +} + +type Object11698 @Directive21(argument61 : "stringValue47183") @Directive44(argument97 : ["stringValue47182"]) { + field62097: String + field62098: String +} + +type Object11699 @Directive21(argument61 : "stringValue47185") @Directive44(argument97 : ["stringValue47184"]) { + field62103: Object11700 + field62106: Object11700 +} + +type Object117 @Directive21(argument61 : "stringValue430") @Directive44(argument97 : ["stringValue429"]) { + field757: String! + field758: String! + field759: Object112 + field760: Enum61 +} + +type Object1170 @Directive22(argument62 : "stringValue6110") @Directive31 @Directive44(argument97 : ["stringValue6111", "stringValue6112"]) { + field6575: Object452! + field6576: [String!]! + field6577: Enum300! + field6578: Enum301 +} + +type Object11700 @Directive21(argument61 : "stringValue47187") @Directive44(argument97 : ["stringValue47186"]) { + field62104: Float + field62105: Float +} + +type Object11701 @Directive21(argument61 : "stringValue47189") @Directive44(argument97 : ["stringValue47188"]) { + field62110: Scalar2 + field62111: String + field62112: String + field62113: String + field62114: String + field62115: Scalar2 + field62116: String + field62117: Scalar4 + field62118: Scalar4 + field62119: String + field62120: String + field62121: String + field62122: Scalar2 + field62123: String + field62124: String + field62125: Boolean + field62126: Enum2813 + field62127: Boolean + field62128: String + field62129: Scalar2 +} + +type Object11702 @Directive21(argument61 : "stringValue47191") @Directive44(argument97 : ["stringValue47190"]) { + field62131: String + field62132: String +} + +type Object11703 @Directive21(argument61 : "stringValue47193") @Directive44(argument97 : ["stringValue47192"]) { + field62134: Enum2861 + field62135: [Object11704] +} + +type Object11704 @Directive21(argument61 : "stringValue47196") @Directive44(argument97 : ["stringValue47195"]) { + field62136: Scalar2 + field62137: Enum2862 + field62138: Scalar2 + field62139: Float + field62140: Float + field62141: Boolean + field62142: Boolean + field62143: Boolean + field62144: Float + field62145: Scalar2 + field62146: [Object11705] + field62152: Float + field62153: String + field62154: String + field62155: String + field62156: String + field62157: String + field62158: String + field62159: String + field62160: String + field62161: [Object11706] + field62165: String + field62166: String + field62167: String + field62168: Object11425 + field62169: Int + field62170: Object11393 + field62171: String + field62172: String + field62173: Boolean + field62174: Boolean + field62175: [Object11407] + field62176: [Object11409] + field62177: Boolean + field62178: [Enum2789] + field62179: Enum2809 + field62180: String + field62181: String + field62182: [Object11413] +} + +type Object11705 @Directive21(argument61 : "stringValue47199") @Directive44(argument97 : ["stringValue47198"]) { + field62147: String + field62148: String + field62149: String + field62150: String + field62151: Scalar2 +} + +type Object11706 @Directive21(argument61 : "stringValue47201") @Directive44(argument97 : ["stringValue47200"]) { + field62162: [Object11707] +} + +type Object11707 @Directive21(argument61 : "stringValue47203") @Directive44(argument97 : ["stringValue47202"]) { + field62163: Float + field62164: Float +} + +type Object11708 @Directive21(argument61 : "stringValue47205") @Directive44(argument97 : ["stringValue47204"]) { + field62184: String + field62185: [Object11709] + field62194: String +} + +type Object11709 @Directive21(argument61 : "stringValue47207") @Directive44(argument97 : ["stringValue47206"]) { + field62186: Scalar2! + field62187: String + field62188: [Object11405] + field62189: String + field62190: String + field62191: String + field62192: String + field62193: String +} + +type Object1171 @Directive22(argument62 : "stringValue6119") @Directive31 @Directive44(argument97 : ["stringValue6120", "stringValue6121"]) { + field6579: Boolean @deprecated +} + +type Object11710 @Directive44(argument97 : ["stringValue47211"]) { + field62197(argument2580: InputObject2191!): Object11711 @Directive35(argument89 : "stringValue47213", argument90 : true, argument91 : "stringValue47212", argument93 : "stringValue47214", argument94 : false) + field62269: Object11728 @Directive35(argument89 : "stringValue47257", argument90 : true, argument91 : "stringValue47256", argument92 : 1091, argument93 : "stringValue47258", argument94 : false) + field62283(argument2581: InputObject2192!): Object11732 @Directive35(argument89 : "stringValue47268", argument90 : true, argument91 : "stringValue47267", argument93 : "stringValue47269", argument94 : false) + field62298(argument2582: InputObject2193!): Object11735 @Directive35(argument89 : "stringValue47279", argument90 : true, argument91 : "stringValue47278", argument93 : "stringValue47280", argument94 : false) + field62314: Object11739 @Directive35(argument89 : "stringValue47291", argument90 : true, argument91 : "stringValue47290", argument93 : "stringValue47292", argument94 : false) + field62319(argument2583: InputObject2194!): Object11740 @Directive35(argument89 : "stringValue47296", argument90 : true, argument91 : "stringValue47295", argument93 : "stringValue47297", argument94 : false) +} + +type Object11711 @Directive21(argument61 : "stringValue47217") @Directive44(argument97 : ["stringValue47216"]) { + field62198: Object11712! + field62223: Object11718! + field62252: Object11723! + field62260: Object11725! +} + +type Object11712 @Directive21(argument61 : "stringValue47219") @Directive44(argument97 : ["stringValue47218"]) { + field62199: String! + field62200: [String!]! + field62201: Object11713 @deprecated + field62205: Object11714 +} + +type Object11713 @Directive21(argument61 : "stringValue47221") @Directive44(argument97 : ["stringValue47220"]) { + field62202: String! + field62203: String! + field62204: String +} + +type Object11714 @Directive21(argument61 : "stringValue47223") @Directive44(argument97 : ["stringValue47222"]) { + field62206: Enum2863! + field62207: Object11715 + field62222: Int +} + +type Object11715 @Directive21(argument61 : "stringValue47226") @Directive44(argument97 : ["stringValue47225"]) { + field62208: String + field62209: Enum2864 + field62210: Enum2865 + field62211: Enum2866 + field62212: Object11716 +} + +type Object11716 @Directive21(argument61 : "stringValue47231") @Directive44(argument97 : ["stringValue47230"]) { + field62213: String + field62214: Float + field62215: Float + field62216: Float + field62217: Float + field62218: [Object11717] + field62221: Enum2867 +} + +type Object11717 @Directive21(argument61 : "stringValue47233") @Directive44(argument97 : ["stringValue47232"]) { + field62219: String + field62220: Float +} + +type Object11718 @Directive21(argument61 : "stringValue47236") @Directive44(argument97 : ["stringValue47235"]) { + field62224: String! + field62225: Object11719! + field62232: [String!]! + field62233: Object11713 @deprecated + field62234: [Object11720!]! + field62251: String! +} + +type Object11719 @Directive21(argument61 : "stringValue47238") @Directive44(argument97 : ["stringValue47237"]) { + field62226: [String!]! + field62227: [Scalar3]! + field62228: Scalar3! + field62229: String! + field62230: String! + field62231: String! +} + +type Object1172 @Directive20(argument58 : "stringValue6123", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6122") @Directive31 @Directive44(argument97 : ["stringValue6124", "stringValue6125"]) { + field6580: Object452 + field6581: Enum10 + field6582: String @deprecated + field6583: Interface6 + field6584: String + field6585: Object450 + field6586: String + field6587: Object450 + field6588: Object449 + field6589: Object742 +} + +type Object11720 @Directive21(argument61 : "stringValue47240") @Directive44(argument97 : ["stringValue47239"]) { + field62235: String! + field62236: String! + field62237: String! + field62238: Object11721! + field62241: Object11715! + field62242: Object11715! + field62243: Object11722! + field62248: Object11714 + field62249: String! + field62250: Enum2868! +} + +type Object11721 @Directive21(argument61 : "stringValue47242") @Directive44(argument97 : ["stringValue47241"]) { + field62239: String! + field62240: Object11714! +} + +type Object11722 @Directive21(argument61 : "stringValue47244") @Directive44(argument97 : ["stringValue47243"]) { + field62244: String! + field62245: [String!]! + field62246: Object11713 @deprecated + field62247: String +} + +type Object11723 @Directive21(argument61 : "stringValue47247") @Directive44(argument97 : ["stringValue47246"]) { + field62253: String! + field62254: [Object11724!]! + field62259: String! +} + +type Object11724 @Directive21(argument61 : "stringValue47249") @Directive44(argument97 : ["stringValue47248"]) { + field62255: String! + field62256: String! + field62257: Object11713 + field62258: Object11714! +} + +type Object11725 @Directive21(argument61 : "stringValue47251") @Directive44(argument97 : ["stringValue47250"]) { + field62261: String! + field62262: [Object11726!]! + field62268: String! +} + +type Object11726 @Directive21(argument61 : "stringValue47253") @Directive44(argument97 : ["stringValue47252"]) { + field62263: String! + field62264: Object11727! + field62267: String! +} + +type Object11727 @Directive21(argument61 : "stringValue47255") @Directive44(argument97 : ["stringValue47254"]) { + field62265: String! + field62266: String +} + +type Object11728 @Directive21(argument61 : "stringValue47260") @Directive44(argument97 : ["stringValue47259"]) { + field62270: [Object11729] +} + +type Object11729 @Directive21(argument61 : "stringValue47262") @Directive44(argument97 : ["stringValue47261"]) { + field62271: Scalar2! + field62272: String! + field62273: Scalar2 + field62274: String + field62275: Scalar4 + field62276: Scalar4 + field62277: Object11730 +} + +type Object1173 @Directive21(argument61 : "stringValue6127") @Directive22(argument62 : "stringValue6126") @Directive31 @Directive44(argument97 : ["stringValue6128", "stringValue6129"]) { + field6590: [Object480!] + field6591: Enum206 @deprecated + field6592: String @deprecated + field6593: Interface6 @deprecated + field6594: String + field6595: String + field6596: Object450 + field6597: Object450 + field6598: Boolean + field6599: String @deprecated + field6600: Object452 @deprecated + field6601: Enum228 + field6602: Object742 + field6603: Object508 + field6604: [Interface6!] + field6605: String +} + +type Object11730 @Directive21(argument61 : "stringValue47264") @Directive44(argument97 : ["stringValue47263"]) { + field62278: [Object11731] + field62282: String +} + +type Object11731 @Directive21(argument61 : "stringValue47266") @Directive44(argument97 : ["stringValue47265"]) { + field62279: String + field62280: Boolean! + field62281: String +} + +type Object11732 @Directive21(argument61 : "stringValue47272") @Directive44(argument97 : ["stringValue47271"]) { + field62284: [Object11733] + field62297: [Object11733] +} + +type Object11733 @Directive21(argument61 : "stringValue47274") @Directive44(argument97 : ["stringValue47273"]) { + field62285: String + field62286: String! + field62287: String! + field62288: String! + field62289: Boolean + field62290: Int! + field62291: [Object11734] + field62295: String + field62296: Enum2869! +} + +type Object11734 @Directive21(argument61 : "stringValue47276") @Directive44(argument97 : ["stringValue47275"]) { + field62292: String + field62293: String + field62294: String +} + +type Object11735 @Directive21(argument61 : "stringValue47283") @Directive44(argument97 : ["stringValue47282"]) { + field62299: Object11736 +} + +type Object11736 @Directive21(argument61 : "stringValue47285") @Directive44(argument97 : ["stringValue47284"]) { + field62300: [Object11733] + field62301: [Object11733] + field62302: String + field62303: String + field62304: String + field62305: Object11737 + field62313: Boolean +} + +type Object11737 @Directive21(argument61 : "stringValue47287") @Directive44(argument97 : ["stringValue47286"]) { + field62306: Boolean! + field62307: [Scalar3] + field62308: Scalar3 + field62309: Object11738 + field62312: Boolean +} + +type Object11738 @Directive21(argument61 : "stringValue47289") @Directive44(argument97 : ["stringValue47288"]) { + field62310: Scalar3! + field62311: Scalar3! +} + +type Object11739 @Directive21(argument61 : "stringValue47294") @Directive44(argument97 : ["stringValue47293"]) { + field62315: [String] + field62316: [Object11729] + field62317: Boolean + field62318: String! +} + +type Object1174 @Directive20(argument58 : "stringValue6131", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6130") @Directive31 @Directive44(argument97 : ["stringValue6132", "stringValue6133"]) { + field6606: String + field6607: String + field6608: String + field6609: Int + field6610: Int + field6611: Object478 + field6612: Object480 + field6613: Object480 + field6614: Object480 + field6615: Object480 + field6616: Object480 + field6617: Object452 + field6618: Object452 + field6619: Object1175 + field6621: Object1176 +} + +type Object11740 @Directive21(argument61 : "stringValue47300") @Directive44(argument97 : ["stringValue47299"]) { + field62320: Scalar1! +} + +type Object11741 @Directive44(argument97 : ["stringValue47301"]) { + field62322(argument2584: InputObject2195!): Object11742 @Directive35(argument89 : "stringValue47303", argument90 : true, argument91 : "stringValue47302", argument92 : 1092, argument93 : "stringValue47304", argument94 : false) + field62427: Object11751 @Directive35(argument89 : "stringValue47355", argument90 : false, argument91 : "stringValue47354", argument92 : 1093, argument93 : "stringValue47356", argument94 : false) + field62433(argument2585: InputObject2204!): Object11754 @Directive35(argument89 : "stringValue47364", argument90 : true, argument91 : "stringValue47363", argument93 : "stringValue47365", argument94 : false) + field62531: Object11774 @Directive35(argument89 : "stringValue47413", argument90 : true, argument91 : "stringValue47412", argument92 : 1094, argument93 : "stringValue47414", argument94 : false) + field62556(argument2586: InputObject2205!): Object11761 @Directive35(argument89 : "stringValue47423", argument90 : true, argument91 : "stringValue47422", argument93 : "stringValue47424", argument94 : false) + field62557(argument2587: InputObject2206!): Object11777 @Directive35(argument89 : "stringValue47428", argument90 : true, argument91 : "stringValue47427", argument92 : 1095, argument93 : "stringValue47429", argument94 : false) + field62562(argument2588: InputObject2207!): Object11778 @Directive35(argument89 : "stringValue47434", argument90 : true, argument91 : "stringValue47433", argument92 : 1096, argument93 : "stringValue47435", argument94 : false) + field62567(argument2589: InputObject2208!): Object11779 @Directive35(argument89 : "stringValue47440", argument90 : true, argument91 : "stringValue47439", argument93 : "stringValue47441", argument94 : false) + field62571(argument2590: InputObject2209!): Object11780 @Directive35(argument89 : "stringValue47446", argument90 : true, argument91 : "stringValue47445", argument93 : "stringValue47447", argument94 : false) + field62597: Object11784 @Directive35(argument89 : "stringValue47458", argument90 : true, argument91 : "stringValue47457", argument92 : 1097, argument93 : "stringValue47459", argument94 : false) + field62610(argument2591: InputObject2210!): Object11788 @Directive35(argument89 : "stringValue47469", argument90 : true, argument91 : "stringValue47468", argument93 : "stringValue47470", argument94 : false) + field62613(argument2592: InputObject2211!): Object11789 @Directive35(argument89 : "stringValue47475", argument90 : true, argument91 : "stringValue47474", argument92 : 1098, argument93 : "stringValue47476", argument94 : false) + field62616(argument2593: InputObject2208!): Object11779 @Directive35(argument89 : "stringValue47481", argument90 : true, argument91 : "stringValue47480", argument93 : "stringValue47482", argument94 : false) + field62617(argument2594: InputObject2212!): Object11790 @Directive35(argument89 : "stringValue47484", argument90 : true, argument91 : "stringValue47483", argument92 : 1099, argument93 : "stringValue47485", argument94 : false) + field62619(argument2595: InputObject2213!): Object11791 @Directive35(argument89 : "stringValue47490", argument90 : true, argument91 : "stringValue47489", argument92 : 1100, argument93 : "stringValue47491", argument94 : false) + field62626(argument2596: InputObject2214!): Object11791 @Directive35(argument89 : "stringValue47498", argument90 : true, argument91 : "stringValue47497", argument92 : 1101, argument93 : "stringValue47499", argument94 : false) + field62627(argument2597: InputObject2215!): Object11793 @Directive35(argument89 : "stringValue47502", argument90 : true, argument91 : "stringValue47501", argument92 : 1102, argument93 : "stringValue47503", argument94 : false) + field62695(argument2598: InputObject2216!): Object11804 @Directive35(argument89 : "stringValue47530", argument90 : true, argument91 : "stringValue47529", argument92 : 1103, argument93 : "stringValue47531", argument94 : false) + field62699: Object11805 @Directive35(argument89 : "stringValue47536", argument90 : true, argument91 : "stringValue47535", argument92 : 1104, argument93 : "stringValue47537", argument94 : false) + field62721(argument2599: InputObject2217!): Object11808 @Directive35(argument89 : "stringValue47545", argument90 : true, argument91 : "stringValue47544", argument92 : 1105, argument93 : "stringValue47546", argument94 : false) + field62724(argument2600: InputObject2218!): Object11809 @Directive35(argument89 : "stringValue47551", argument90 : true, argument91 : "stringValue47550", argument92 : 1106, argument93 : "stringValue47552", argument94 : false) + field62728: Object11810 @Directive35(argument89 : "stringValue47557", argument90 : true, argument91 : "stringValue47556", argument92 : 1107, argument93 : "stringValue47558", argument94 : false) + field62734(argument2601: InputObject2219!): Object11812 @Directive35(argument89 : "stringValue47564", argument90 : true, argument91 : "stringValue47563", argument92 : 1108, argument93 : "stringValue47565", argument94 : false) + field62736(argument2602: InputObject2220!): Object11813 @Directive35(argument89 : "stringValue47570", argument90 : true, argument91 : "stringValue47569", argument92 : 1109, argument93 : "stringValue47571", argument94 : false) + field62741: Object11814 @Directive35(argument89 : "stringValue47576", argument90 : true, argument91 : "stringValue47575", argument92 : 1110, argument93 : "stringValue47577", argument94 : false) + field62743(argument2603: InputObject2221!): Object11815 @Directive35(argument89 : "stringValue47582", argument90 : true, argument91 : "stringValue47581", argument92 : 1111, argument93 : "stringValue47583", argument94 : false) + field62789(argument2604: InputObject2222!): Object11822 @Directive35(argument89 : "stringValue47602", argument90 : true, argument91 : "stringValue47601", argument92 : 1112, argument93 : "stringValue47603", argument94 : false) + field62803(argument2605: InputObject2223!): Object11826 @Directive35(argument89 : "stringValue47617", argument90 : true, argument91 : "stringValue47616", argument92 : 1113, argument93 : "stringValue47618", argument94 : false) + field62805(argument2606: InputObject2225!): Object11827 @Directive35(argument89 : "stringValue47624", argument90 : true, argument91 : "stringValue47623", argument92 : 1114, argument93 : "stringValue47625", argument94 : false) +} + +type Object11742 @Directive21(argument61 : "stringValue47335") @Directive44(argument97 : ["stringValue47334"]) { + field62323: [Object11743] + field62375: [Object11743] + field62376: [Object11743] + field62377: [Object11747] + field62416: Object11748 + field62420: [Object11749] +} + +type Object11743 @Directive21(argument61 : "stringValue47337") @Directive44(argument97 : ["stringValue47336"]) { + field62324: Scalar2! + field62325: [Object11744] +} + +type Object11744 @Directive21(argument61 : "stringValue47339") @Directive44(argument97 : ["stringValue47338"]) { + field62326: Scalar2 + field62327: Enum2870 + field62328: String + field62329: String + field62330: Boolean + field62331: Scalar4 + field62332: Scalar4 + field62333: Scalar4 + field62334: Scalar4 + field62335: Scalar4 + field62336: Scalar4 + field62337: Scalar4 + field62338: String + field62339: [String] + field62340: Scalar2 + field62341: Int + field62342: Scalar1 + field62343: Scalar2 + field62344: Scalar2 + field62345: Scalar1 + field62346: Boolean + field62347: String + field62348: String + field62349: String + field62350: Object5973 + field62351: String + field62352: [String] + field62353: [Object11745] + field62359: String + field62360: String + field62361: Object11746 + field62365: Enum2891 + field62366: Scalar2 + field62367: String + field62368: Enum1513 + field62369: Scalar1 + field62370: String + field62371: Boolean + field62372: Boolean + field62373: Scalar1 + field62374: String +} + +type Object11745 @Directive21(argument61 : "stringValue47341") @Directive44(argument97 : ["stringValue47340"]) { + field62354: Enum2890 + field62355: String + field62356: Boolean + field62357: Float + field62358: String +} + +type Object11746 @Directive21(argument61 : "stringValue47344") @Directive44(argument97 : ["stringValue47343"]) { + field62362: Scalar2 + field62363: Scalar2 + field62364: Scalar2 +} + +type Object11747 @Directive21(argument61 : "stringValue47347") @Directive44(argument97 : ["stringValue47346"]) { + field62378: Scalar2! + field62379: Scalar2 + field62380: String + field62381: String + field62382: Int + field62383: Int + field62384: String + field62385: Float + field62386: Int + field62387: Int + field62388: String + field62389: String + field62390: String + field62391: String + field62392: String + field62393: String + field62394: String + field62395: String + field62396: Boolean + field62397: String + field62398: String + field62399: Int + field62400: Int + field62401: [Int] + field62402: Scalar4 + field62403: Scalar4 + field62404: [String] + field62405: Enum2879 + field62406: Float + field62407: Float + field62408: Enum2884 + field62409: [String] + field62410: Enum2885 + field62411: Enum2886 + field62412: Enum2887 + field62413: String + field62414: String + field62415: String +} + +type Object11748 @Directive21(argument61 : "stringValue47349") @Directive44(argument97 : ["stringValue47348"]) { + field62417: Int + field62418: Int + field62419: Int +} + +type Object11749 @Directive21(argument61 : "stringValue47351") @Directive44(argument97 : ["stringValue47350"]) { + field62421: [Object11745] + field62422: [Object11750] + field62426: Enum1513 +} + +type Object1175 implements Interface6 @Directive20(argument58 : "stringValue6135", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6134") @Directive31 @Directive44(argument97 : ["stringValue6136", "stringValue6137"]) { + field109: Interface3 + field6620: Enum302 + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +type Object11750 @Directive21(argument61 : "stringValue47353") @Directive44(argument97 : ["stringValue47352"]) { + field62423: [Object11745] + field62424: Float + field62425: Float +} + +type Object11751 @Directive21(argument61 : "stringValue47358") @Directive44(argument97 : ["stringValue47357"]) { + field62428: [Object11752] +} + +type Object11752 @Directive21(argument61 : "stringValue47360") @Directive44(argument97 : ["stringValue47359"]) { + field62429: String! + field62430: String! + field62431: [Object11753]! +} + +type Object11753 @Directive21(argument61 : "stringValue47362") @Directive44(argument97 : ["stringValue47361"]) { + field62432: Scalar2! +} + +type Object11754 @Directive21(argument61 : "stringValue47369") @Directive44(argument97 : ["stringValue47368"]) { + field62434: Object11755! + field62471: [Object11761]! +} + +type Object11755 @Directive21(argument61 : "stringValue47371") @Directive44(argument97 : ["stringValue47370"]) { + field62435: String! + field62436: String! + field62437: String + field62438: String + field62439: String + field62440: [Object11756] @deprecated + field62470: Enum2892 +} + +type Object11756 @Directive21(argument61 : "stringValue47373") @Directive44(argument97 : ["stringValue47372"]) { + field62441: String! + field62442: String! + field62443: String + field62444: String + field62445: String + field62446: Object11757! + field62449: Object11757! + field62450: Enum2893! + field62451: Union384 + field62466: Scalar2 @deprecated + field62467: Scalar2 @deprecated + field62468: Enum2892 + field62469: String +} + +type Object11757 @Directive21(argument61 : "stringValue47375") @Directive44(argument97 : ["stringValue47374"]) { + field62447: Scalar4 + field62448: Scalar4 +} + +type Object11758 @Directive21(argument61 : "stringValue47379") @Directive44(argument97 : ["stringValue47378"]) { + field62452: [Object11759]! + field62455: String! + field62456: String! + field62457: String! + field62458: [Object11760]! + field62461: String! + field62462: String! + field62463: String! + field62464: Object11757 + field62465: Object11757 +} + +type Object11759 @Directive21(argument61 : "stringValue47381") @Directive44(argument97 : ["stringValue47380"]) { + field62453: String! + field62454: String +} + +type Object1176 @Directive20(argument58 : "stringValue6143", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6142") @Directive31 @Directive44(argument97 : ["stringValue6144", "stringValue6145"]) { + field6622: [Object478!] + field6623: Object1 + field6624: Object1 + field6625: String +} + +type Object11760 @Directive21(argument61 : "stringValue47383") @Directive44(argument97 : ["stringValue47382"]) { + field62459: String! + field62460: String! +} + +type Object11761 @Directive21(argument61 : "stringValue47385") @Directive44(argument97 : ["stringValue47384"]) { + field62472: Object11756! + field62473: Object11762! + field62477: Scalar1 + field62478: [Object11763]! + field62528: Object11748! + field62529: Object11773 +} + +type Object11762 @Directive21(argument61 : "stringValue47387") @Directive44(argument97 : ["stringValue47386"]) { + field62474: Scalar2! + field62475: Scalar2! + field62476: Scalar2! +} + +type Object11763 @Directive21(argument61 : "stringValue47389") @Directive44(argument97 : ["stringValue47388"]) { + field62479: Object11764! + field62484: Object11765 + field62497: Object11766 @deprecated + field62505: [Object11767]! + field62514: Boolean! + field62515: Object11769 + field62523: Object11771 +} + +type Object11764 @Directive21(argument61 : "stringValue47391") @Directive44(argument97 : ["stringValue47390"]) { + field62480: String + field62481: String + field62482: String + field62483: String +} + +type Object11765 @Directive21(argument61 : "stringValue47393") @Directive44(argument97 : ["stringValue47392"]) { + field62485: Scalar2 + field62486: Scalar2 + field62487: Scalar4 + field62488: Scalar4 + field62489: String + field62490: String + field62491: Scalar2 + field62492: Scalar3 + field62493: Scalar3 + field62494: Boolean + field62495: Scalar4 + field62496: Scalar4 +} + +type Object11766 @Directive21(argument61 : "stringValue47395") @Directive44(argument97 : ["stringValue47394"]) { + field62498: Int! + field62499: Scalar2! + field62500: Scalar2! + field62501: Scalar2! + field62502: String! + field62503: String! + field62504: String! +} + +type Object11767 @Directive21(argument61 : "stringValue47397") @Directive44(argument97 : ["stringValue47396"]) { + field62506: String! + field62507: [String] + field62508: [Object11768] + field62511: Boolean + field62512: String! + field62513: Boolean! +} + +type Object11768 @Directive21(argument61 : "stringValue47399") @Directive44(argument97 : ["stringValue47398"]) { + field62509: String! + field62510: String! +} + +type Object11769 @Directive21(argument61 : "stringValue47401") @Directive44(argument97 : ["stringValue47400"]) { + field62516: String + field62517: [Object11770] +} + +type Object1177 @Directive20(argument58 : "stringValue6147", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6146") @Directive31 @Directive44(argument97 : ["stringValue6148", "stringValue6149"]) { + field6626: Object452 +} + +type Object11770 @Directive21(argument61 : "stringValue47403") @Directive44(argument97 : ["stringValue47402"]) { + field62518: String! + field62519: String! + field62520: Enum2894! + field62521: String + field62522: String +} + +type Object11771 @Directive21(argument61 : "stringValue47406") @Directive44(argument97 : ["stringValue47405"]) { + field62524: Enum2895! + field62525: Object11772 +} + +type Object11772 @Directive21(argument61 : "stringValue47409") @Directive44(argument97 : ["stringValue47408"]) { + field62526: String + field62527: String +} + +type Object11773 @Directive21(argument61 : "stringValue47411") @Directive44(argument97 : ["stringValue47410"]) { + field62530: Boolean +} + +type Object11774 @Directive21(argument61 : "stringValue47416") @Directive44(argument97 : ["stringValue47415"]) { + field62532: [Object11775] + field62549: Object11776 +} + +type Object11775 @Directive21(argument61 : "stringValue47418") @Directive44(argument97 : ["stringValue47417"]) { + field62533: String! + field62534: String! + field62535: [Object11744]! + field62536: Scalar2! + field62537: Boolean + field62538: Enum2891 + field62539: Scalar4 + field62540: Scalar4 + field62541: Scalar2 + field62542: String + field62543: String + field62544: String + field62545: Scalar2 + field62546: Enum2896 + field62547: Object11744 + field62548: String +} + +type Object11776 @Directive21(argument61 : "stringValue47421") @Directive44(argument97 : ["stringValue47420"]) { + field62550: String + field62551: String + field62552: String + field62553: String + field62554: String + field62555: String +} + +type Object11777 @Directive21(argument61 : "stringValue47432") @Directive44(argument97 : ["stringValue47431"]) { + field62558: Object11755! + field62559: Scalar2! + field62560: [Object11763]! + field62561: Object11748 +} + +type Object11778 @Directive21(argument61 : "stringValue47438") @Directive44(argument97 : ["stringValue47437"]) { + field62563: Object11775 + field62564: Scalar1 + field62565: Scalar1 + field62566: Scalar1 +} + +type Object11779 @Directive21(argument61 : "stringValue47444") @Directive44(argument97 : ["stringValue47443"]) { + field62568: [Object11755]! + field62569: Scalar2 @deprecated + field62570: Object11748 +} + +type Object1178 @Directive22(argument62 : "stringValue6150") @Directive31 @Directive44(argument97 : ["stringValue6151", "stringValue6152"]) { + field6627: String +} + +type Object11780 @Directive21(argument61 : "stringValue47450") @Directive44(argument97 : ["stringValue47449"]) { + field62572: String! + field62573: String! + field62574: Object11781 +} + +type Object11781 @Directive21(argument61 : "stringValue47452") @Directive44(argument97 : ["stringValue47451"]) { + field62575: String + field62576: String + field62577: [Object11782]! + field62594: Boolean + field62595: Boolean + field62596: Scalar2 +} + +type Object11782 @Directive21(argument61 : "stringValue47454") @Directive44(argument97 : ["stringValue47453"]) { + field62578: String + field62579: String + field62580: [Object11783]! + field62590: Scalar2 + field62591: Boolean + field62592: Boolean + field62593: Scalar2 +} + +type Object11783 @Directive21(argument61 : "stringValue47456") @Directive44(argument97 : ["stringValue47455"]) { + field62581: String! + field62582: Scalar1 + field62583: String + field62584: String + field62585: String + field62586: String + field62587: Boolean! + field62588: String + field62589: Boolean +} + +type Object11784 @Directive21(argument61 : "stringValue47461") @Directive44(argument97 : ["stringValue47460"]) { + field62598: [Object11785]! +} + +type Object11785 @Directive21(argument61 : "stringValue47463") @Directive44(argument97 : ["stringValue47462"]) { + field62599: Scalar2! + field62600: String! + field62601: String! + field62602: [Object11786]! +} + +type Object11786 @Directive21(argument61 : "stringValue47465") @Directive44(argument97 : ["stringValue47464"]) { + field62603: Enum1522! + field62604: Object5975 + field62605: Object5975 + field62606: Object11787 + field62609: Object11787 +} + +type Object11787 @Directive21(argument61 : "stringValue47467") @Directive44(argument97 : ["stringValue47466"]) { + field62607: Object5975 + field62608: Object5975 +} + +type Object11788 @Directive21(argument61 : "stringValue47473") @Directive44(argument97 : ["stringValue47472"]) { + field62611: [Object11763]! + field62612: Object11748! +} + +type Object11789 @Directive21(argument61 : "stringValue47479") @Directive44(argument97 : ["stringValue47478"]) { + field62614: Scalar1 + field62615: Scalar1 +} + +type Object1179 implements Interface80 @Directive22(argument62 : "stringValue6156") @Directive31 @Directive44(argument97 : ["stringValue6157", "stringValue6158"]) { + field6628: String @Directive1 @deprecated + field6629: [Object449] @Directive40 + field6630: [Object449] @Directive40 + field6631: Enum10 @Directive40 + field6632: Interface6 @Directive40 + field6633: Object452 @Directive40 + field76: String @Directive40 +} + +type Object11790 @Directive21(argument61 : "stringValue47488") @Directive44(argument97 : ["stringValue47487"]) { + field62618: Scalar1 +} + +type Object11791 @Directive21(argument61 : "stringValue47494") @Directive44(argument97 : ["stringValue47493"]) { + field62620: [Object11792] + field62625: Object11748 +} + +type Object11792 @Directive21(argument61 : "stringValue47496") @Directive44(argument97 : ["stringValue47495"]) { + field62621: String! + field62622: String + field62623: String + field62624: Scalar1 +} + +type Object11793 @Directive21(argument61 : "stringValue47506") @Directive44(argument97 : ["stringValue47505"]) { + field62628: Object11748 + field62629: Object11744 + field62630: [Object11794] +} + +type Object11794 @Directive21(argument61 : "stringValue47508") @Directive44(argument97 : ["stringValue47507"]) { + field62631: String! + field62632: Enum2898! + field62633: String + field62634: String + field62635: String + field62636: Boolean + field62637: Float + field62638: Scalar1 + field62639: [Object11795] + field62642: Object11796 + field62651: [Object11798] + field62655: Object11799 + field62662: Object11800 + field62685: Object5979 + field62686: Object11802 + field62694: Object11771 +} + +type Object11795 @Directive21(argument61 : "stringValue47511") @Directive44(argument97 : ["stringValue47510"]) { + field62640: String! + field62641: String +} + +type Object11796 @Directive21(argument61 : "stringValue47513") @Directive44(argument97 : ["stringValue47512"]) { + field62643: [Object11797] + field62646: Boolean + field62647: String + field62648: Scalar4 + field62649: Scalar4 + field62650: Scalar4 +} + +type Object11797 @Directive21(argument61 : "stringValue47515") @Directive44(argument97 : ["stringValue47514"]) { + field62644: Enum1520 + field62645: Float +} + +type Object11798 @Directive21(argument61 : "stringValue47517") @Directive44(argument97 : ["stringValue47516"]) { + field62652: Scalar2 + field62653: Int! + field62654: Int! +} + +type Object11799 @Directive21(argument61 : "stringValue47519") @Directive44(argument97 : ["stringValue47518"]) { + field62656: String + field62657: String + field62658: Int + field62659: Float + field62660: Int + field62661: [Enum2899] +} + +type Object118 @Directive21(argument61 : "stringValue432") @Directive44(argument97 : ["stringValue431"]) { + field761: String! + field762: String! + field763: Object112 + field764: Enum61 +} + +type Object1180 implements Interface80 @Directive22(argument62 : "stringValue6159") @Directive31 @Directive44(argument97 : ["stringValue6160", "stringValue6161"]) { + field6628: String @Directive1 @deprecated + field6634: [Object1179] @Directive40 + field76: String @Directive41 +} + +type Object11800 @Directive21(argument61 : "stringValue47522") @Directive44(argument97 : ["stringValue47521"]) { + field62663: Scalar2! + field62664: Scalar2! + field62665: Float! + field62666: Scalar2! + field62667: Scalar2 + field62668: Float + field62669: String! + field62670: Scalar3! + field62671: Scalar3! + field62672: Scalar2! + field62673: Scalar2! + field62674: Float! + field62675: Float! + field62676: Object11801 +} + +type Object11801 @Directive21(argument61 : "stringValue47524") @Directive44(argument97 : ["stringValue47523"]) { + field62677: Scalar2 + field62678: Scalar2 + field62679: Scalar2 + field62680: Scalar2 + field62681: Scalar2 + field62682: Scalar2 + field62683: Scalar2 + field62684: Scalar2 +} + +type Object11802 @Directive21(argument61 : "stringValue47526") @Directive44(argument97 : ["stringValue47525"]) { + field62687: [Object11803]! + field62691: String + field62692: Scalar4 + field62693: Boolean! +} + +type Object11803 @Directive21(argument61 : "stringValue47528") @Directive44(argument97 : ["stringValue47527"]) { + field62688: String! + field62689: String! + field62690: Boolean! +} + +type Object11804 @Directive21(argument61 : "stringValue47534") @Directive44(argument97 : ["stringValue47533"]) { + field62696: [Object11794] + field62697: Object11744 + field62698: Object11748 +} + +type Object11805 @Directive21(argument61 : "stringValue47539") @Directive44(argument97 : ["stringValue47538"]) { + field62700: [Object11806] + field62708: [Object11807] +} + +type Object11806 @Directive21(argument61 : "stringValue47541") @Directive44(argument97 : ["stringValue47540"]) { + field62701: String! + field62702: String + field62703: String + field62704: String + field62705: String + field62706: String! + field62707: Boolean +} + +type Object11807 @Directive21(argument61 : "stringValue47543") @Directive44(argument97 : ["stringValue47542"]) { + field62709: String + field62710: String + field62711: String! + field62712: String + field62713: String + field62714: String + field62715: String + field62716: String + field62717: String + field62718: String + field62719: String! + field62720: String +} + +type Object11808 @Directive21(argument61 : "stringValue47549") @Directive44(argument97 : ["stringValue47548"]) { + field62722: Object11744! + field62723: [Object11794]! +} + +type Object11809 @Directive21(argument61 : "stringValue47555") @Directive44(argument97 : ["stringValue47554"]) { + field62725: [Object11775] + field62726: Object11776 + field62727: Object11748 +} + +type Object1181 implements Interface81 @Directive22(argument62 : "stringValue6177") @Directive31 @Directive44(argument97 : ["stringValue6178", "stringValue6179"]) { + field6635(argument104: InputObject1): Object1182 @Directive30(argument80 : true) @Directive40 + field6640: Interface82 @Directive40 + field6642: String @Directive41 +} + +type Object11810 @Directive21(argument61 : "stringValue47560") @Directive44(argument97 : ["stringValue47559"]) { + field62729: Object11811 + field62732: Object11776 + field62733: Scalar2 +} + +type Object11811 @Directive21(argument61 : "stringValue47562") @Directive44(argument97 : ["stringValue47561"]) { + field62730: [Object11775] + field62731: [Object11806] +} + +type Object11812 @Directive21(argument61 : "stringValue47568") @Directive44(argument97 : ["stringValue47567"]) { + field62735: Object11775 +} + +type Object11813 @Directive21(argument61 : "stringValue47574") @Directive44(argument97 : ["stringValue47573"]) { + field62737: Scalar1 + field62738: Scalar1 + field62739: Scalar1 + field62740: Scalar1 +} + +type Object11814 @Directive21(argument61 : "stringValue47579") @Directive44(argument97 : ["stringValue47578"]) { + field62742: [Enum2900] +} + +type Object11815 @Directive21(argument61 : "stringValue47586") @Directive44(argument97 : ["stringValue47585"]) { + field62744: Object11748 + field62745: [Object11792] + field62746: String + field62747: String + field62748: Int + field62749: Int + field62750: [Object11816] +} + +type Object11816 @Directive21(argument61 : "stringValue47588") @Directive44(argument97 : ["stringValue47587"]) { + field62751: Scalar2 + field62752: Object11817 + field62756: Scalar2 + field62757: Boolean + field62758: Object11818 + field62766: Object11819 + field62771: Object11820 + field62787: Object11820 + field62788: Object11820 +} + +type Object11817 @Directive21(argument61 : "stringValue47590") @Directive44(argument97 : ["stringValue47589"]) { + field62753: String + field62754: String + field62755: Scalar2 +} + +type Object11818 @Directive21(argument61 : "stringValue47592") @Directive44(argument97 : ["stringValue47591"]) { + field62759: String + field62760: String + field62761: Scalar2 + field62762: Scalar2 + field62763: Scalar2 + field62764: Scalar1 + field62765: Scalar1 +} + +type Object11819 @Directive21(argument61 : "stringValue47594") @Directive44(argument97 : ["stringValue47593"]) { + field62767: String + field62768: String + field62769: String + field62770: Scalar1 +} + +type Object1182 @Directive22(argument62 : "stringValue6168") @Directive31 @Directive44(argument97 : ["stringValue6169", "stringValue6170"]) { + field6636: Object753! + field6637: [Object1183] +} + +type Object11820 @Directive21(argument61 : "stringValue47596") @Directive44(argument97 : ["stringValue47595"]) { + field62772: String + field62773: String + field62774: Int + field62775: [Object11821] + field62786: Int +} + +type Object11821 @Directive21(argument61 : "stringValue47598") @Directive44(argument97 : ["stringValue47597"]) { + field62776: Int + field62777: Int + field62778: Int + field62779: Enum2901! + field62780: Enum2902! + field62781: Float! + field62782: Scalar4 + field62783: Scalar4 + field62784: Scalar2 + field62785: Scalar2 +} + +type Object11822 @Directive21(argument61 : "stringValue47606") @Directive44(argument97 : ["stringValue47605"]) { + field62790: [Object11823]! + field62802: Object11748 +} + +type Object11823 @Directive21(argument61 : "stringValue47608") @Directive44(argument97 : ["stringValue47607"]) { + field62791: Object11824! + field62794: Scalar2! + field62795: String + field62796: Enum2904! + field62797: Union385! +} + +type Object11824 @Directive21(argument61 : "stringValue47610") @Directive44(argument97 : ["stringValue47609"]) { + field62792: Enum2903! + field62793: String +} + +type Object11825 @Directive21(argument61 : "stringValue47615") @Directive44(argument97 : ["stringValue47614"]) { + field62798: String! + field62799: String + field62800: String + field62801: [Object11770]! +} + +type Object11826 @Directive21(argument61 : "stringValue47622") @Directive44(argument97 : ["stringValue47621"]) { + field62804: [String] +} + +type Object11827 @Directive21(argument61 : "stringValue47628") @Directive44(argument97 : ["stringValue47627"]) { + field62806: Scalar1 +} + +type Object11828 @Directive44(argument97 : ["stringValue47629"]) { + field62808(argument2607: InputObject2226!): Object11829 @Directive35(argument89 : "stringValue47631", argument90 : true, argument91 : "stringValue47630", argument92 : 1115, argument93 : "stringValue47632", argument94 : true) + field62812(argument2608: InputObject2227!): Object11830 @Directive35(argument89 : "stringValue47637", argument90 : true, argument91 : "stringValue47636", argument92 : 1116, argument93 : "stringValue47638", argument94 : true) + field62814: Object11831 @Directive35(argument89 : "stringValue47647", argument90 : true, argument91 : "stringValue47646", argument92 : 1117, argument93 : "stringValue47648", argument94 : true) + field62841: Object11835 @Directive35(argument89 : "stringValue47658", argument90 : false, argument91 : "stringValue47657", argument92 : 1118, argument93 : "stringValue47659", argument94 : true) + field62853(argument2609: InputObject2229!): Object11838 @Directive35(argument89 : "stringValue47667", argument90 : false, argument91 : "stringValue47666", argument92 : 1119, argument93 : "stringValue47668", argument94 : true) + field62867(argument2610: InputObject2230!): Object11840 @Directive35(argument89 : "stringValue47679", argument90 : false, argument91 : "stringValue47678", argument92 : 1120, argument93 : "stringValue47680", argument94 : true) + field62878(argument2611: InputObject2231!): Object11843 @Directive35(argument89 : "stringValue47689", argument90 : false, argument91 : "stringValue47688", argument92 : 1121, argument93 : "stringValue47690", argument94 : true) + field62937(argument2612: InputObject2232!): Object11851 @Directive35(argument89 : "stringValue47710", argument90 : false, argument91 : "stringValue47709", argument92 : 1122, argument93 : "stringValue47711", argument94 : true) + field62939(argument2613: InputObject2233!): Object11852 @Directive35(argument89 : "stringValue47716", argument90 : false, argument91 : "stringValue47715", argument92 : 1123, argument93 : "stringValue47717", argument94 : true) + field62956(argument2614: InputObject2234!): Object11854 @Directive35(argument89 : "stringValue47724", argument90 : false, argument91 : "stringValue47723", argument92 : 1124, argument93 : "stringValue47725", argument94 : true) @deprecated + field62976(argument2615: InputObject2236!): Object11857 @Directive35(argument89 : "stringValue47735", argument90 : false, argument91 : "stringValue47734", argument92 : 1125, argument93 : "stringValue47736", argument94 : true) @deprecated + field62987(argument2616: InputObject2237!): Object11859 @Directive35(argument89 : "stringValue47743", argument90 : true, argument91 : "stringValue47742", argument92 : 1126, argument93 : "stringValue47744", argument94 : true) + field62990(argument2617: InputObject2238!): Object11860 @Directive35(argument89 : "stringValue47750", argument90 : false, argument91 : "stringValue47749", argument92 : 1127, argument93 : "stringValue47751", argument94 : true) + field63029(argument2618: InputObject2241!): Object11864 @Directive35(argument89 : "stringValue47765", argument90 : false, argument91 : "stringValue47764", argument92 : 1128, argument93 : "stringValue47766", argument94 : true) + field63032(argument2619: InputObject2243!): Object11865 @Directive35(argument89 : "stringValue47772", argument90 : false, argument91 : "stringValue47771", argument92 : 1129, argument93 : "stringValue47773", argument94 : true) @deprecated + field63040(argument2620: InputObject2245!): Object11867 @Directive35(argument89 : "stringValue47781", argument90 : false, argument91 : "stringValue47780", argument92 : 1130, argument93 : "stringValue47782", argument94 : true) + field63058(argument2621: InputObject2247!): Object11869 @Directive35(argument89 : "stringValue47790", argument90 : false, argument91 : "stringValue47789", argument92 : 1131, argument93 : "stringValue47791", argument94 : true) + field63062(argument2622: InputObject2248!): Object11870 @Directive35(argument89 : "stringValue47796", argument90 : false, argument91 : "stringValue47795", argument92 : 1132, argument93 : "stringValue47797", argument94 : true) + field63069(argument2623: InputObject2249!): Object11871 @Directive35(argument89 : "stringValue47803", argument90 : true, argument91 : "stringValue47802", argument92 : 1133, argument93 : "stringValue47804", argument94 : true) + field63107(argument2624: InputObject2250!): Object11878 @Directive35(argument89 : "stringValue47821", argument90 : false, argument91 : "stringValue47820", argument92 : 1134, argument93 : "stringValue47822", argument94 : true) + field63153(argument2625: InputObject2251!): Object11887 @Directive35(argument89 : "stringValue47845", argument90 : false, argument91 : "stringValue47844", argument92 : 1135, argument93 : "stringValue47846", argument94 : true) + field63158(argument2626: InputObject2252!): Object11888 @Directive35(argument89 : "stringValue47851", argument90 : false, argument91 : "stringValue47850", argument92 : 1136, argument93 : "stringValue47852", argument94 : true) + field63198(argument2627: InputObject2253!): Object11893 @Directive35(argument89 : "stringValue47865", argument90 : false, argument91 : "stringValue47864", argument92 : 1137, argument93 : "stringValue47866", argument94 : true) + field63200(argument2628: InputObject2254!): Object11894 @Directive35(argument89 : "stringValue47871", argument90 : true, argument91 : "stringValue47870", argument92 : 1138, argument93 : "stringValue47872", argument94 : true) +} + +type Object11829 @Directive21(argument61 : "stringValue47635") @Directive44(argument97 : ["stringValue47634"]) { + field62809: String + field62810: Boolean + field62811: String +} + +type Object1183 @Directive22(argument62 : "stringValue6171") @Directive31 @Directive44(argument97 : ["stringValue6172", "stringValue6173"]) { + field6638: String + field6639: Interface80 +} + +type Object11830 @Directive21(argument61 : "stringValue47645") @Directive44(argument97 : ["stringValue47644"]) { + field62813: String +} + +type Object11831 @Directive21(argument61 : "stringValue47650") @Directive44(argument97 : ["stringValue47649"]) { + field62815: [Object11832]! + field62832: [Object11834]! +} + +type Object11832 @Directive21(argument61 : "stringValue47652") @Directive44(argument97 : ["stringValue47651"]) { + field62816: Enum1526! + field62817: String + field62818: String + field62819: Object11833 + field62831: String +} + +type Object11833 @Directive21(argument61 : "stringValue47654") @Directive44(argument97 : ["stringValue47653"]) { + field62820: Boolean + field62821: Scalar2 + field62822: Int + field62823: Boolean + field62824: Boolean + field62825: Boolean + field62826: String + field62827: String + field62828: String + field62829: Boolean + field62830: Scalar2 +} + +type Object11834 @Directive21(argument61 : "stringValue47656") @Directive44(argument97 : ["stringValue47655"]) { + field62833: String! + field62834: String! + field62835: String! + field62836: Scalar2! + field62837: String! + field62838: Scalar4! + field62839: Scalar4 + field62840: String +} + +type Object11835 @Directive21(argument61 : "stringValue47661") @Directive44(argument97 : ["stringValue47660"]) { + field62842: [Object11836] +} + +type Object11836 @Directive21(argument61 : "stringValue47663") @Directive44(argument97 : ["stringValue47662"]) { + field62843: Scalar2 + field62844: String + field62845: [Scalar2] + field62846: String + field62847: [Object11837] +} + +type Object11837 @Directive21(argument61 : "stringValue47665") @Directive44(argument97 : ["stringValue47664"]) { + field62848: Scalar2! + field62849: Scalar2 + field62850: String + field62851: String + field62852: Scalar7 +} + +type Object11838 @Directive21(argument61 : "stringValue47671") @Directive44(argument97 : ["stringValue47670"]) { + field62854: [Object11839] +} + +type Object11839 @Directive21(argument61 : "stringValue47673") @Directive44(argument97 : ["stringValue47672"]) { + field62855: String + field62856: String + field62857: String + field62858: String + field62859: String + field62860: String + field62861: [Enum2908] + field62862: [Enum2909] + field62863: Enum2910 + field62864: Enum2911 + field62865: Enum2911 + field62866: [Enum1523] +} + +type Object1184 @Directive22(argument62 : "stringValue6180") @Directive31 @Directive44(argument97 : ["stringValue6181", "stringValue6182"]) { + field6643: Object721 + field6644: String + field6645: Object450 + field6646: Interface3 +} + +type Object11840 @Directive21(argument61 : "stringValue47683") @Directive44(argument97 : ["stringValue47682"]) { + field62868: Object11841 + field62873: Object11841 + field62874: Object11841 + field62875: Object11841 + field62876: Object11841 + field62877: Object11841 +} + +type Object11841 @Directive21(argument61 : "stringValue47685") @Directive44(argument97 : ["stringValue47684"]) { + field62869: Scalar1 + field62870: [Object11842] +} + +type Object11842 @Directive21(argument61 : "stringValue47687") @Directive44(argument97 : ["stringValue47686"]) { + field62871: Scalar3 + field62872: Scalar1 +} + +type Object11843 @Directive21(argument61 : "stringValue47693") @Directive44(argument97 : ["stringValue47692"]) { + field62879: Object11844 + field62911: Object11849 + field62927: String @deprecated + field62928: Object11850 +} + +type Object11844 @Directive21(argument61 : "stringValue47695") @Directive44(argument97 : ["stringValue47694"]) { + field62880: Scalar2! + field62881: Scalar2 + field62882: String + field62883: String + field62884: String + field62885: String + field62886: Enum2906 + field62887: String + field62888: Scalar4 + field62889: Object11845 + field62894: Object11846 + field62898: String + field62899: String + field62900: Boolean + field62901: String + field62902: String + field62903: Boolean + field62904: Object11847 + field62908: Scalar2 + field62909: String + field62910: [String] +} + +type Object11845 @Directive21(argument61 : "stringValue47697") @Directive44(argument97 : ["stringValue47696"]) { + field62890: String + field62891: String + field62892: String + field62893: Scalar4 +} + +type Object11846 @Directive21(argument61 : "stringValue47699") @Directive44(argument97 : ["stringValue47698"]) { + field62895: String + field62896: Enum2912 + field62897: Scalar4 +} + +type Object11847 @Directive21(argument61 : "stringValue47702") @Directive44(argument97 : ["stringValue47701"]) { + field62905: Object11848 + field62907: Scalar4 +} + +type Object11848 @Directive21(argument61 : "stringValue47704") @Directive44(argument97 : ["stringValue47703"]) { + field62906: String +} + +type Object11849 @Directive21(argument61 : "stringValue47706") @Directive44(argument97 : ["stringValue47705"]) { + field62912: Scalar2 + field62913: String + field62914: String + field62915: String + field62916: String + field62917: String + field62918: Int + field62919: Float + field62920: String + field62921: String + field62922: String + field62923: Int + field62924: [String] + field62925: Scalar4 + field62926: Boolean +} + +type Object1185 @Directive22(argument62 : "stringValue6183") @Directive31 @Directive44(argument97 : ["stringValue6184", "stringValue6185"]) { + field6647: [Object474!]! + field6648: [Object505!]! +} + +type Object11850 @Directive21(argument61 : "stringValue47708") @Directive44(argument97 : ["stringValue47707"]) { + field62929: Scalar4 + field62930: String + field62931: String + field62932: Scalar4 + field62933: String + field62934: Scalar2 + field62935: Scalar2 + field62936: Scalar4 +} + +type Object11851 @Directive21(argument61 : "stringValue47714") @Directive44(argument97 : ["stringValue47713"]) { + field62938: Object11850 +} + +type Object11852 @Directive21(argument61 : "stringValue47720") @Directive44(argument97 : ["stringValue47719"]) { + field62940: Object11853 +} + +type Object11853 @Directive21(argument61 : "stringValue47722") @Directive44(argument97 : ["stringValue47721"]) { + field62941: String + field62942: String + field62943: String + field62944: String + field62945: String + field62946: String + field62947: String + field62948: String + field62949: String + field62950: String + field62951: String + field62952: String + field62953: String + field62954: String + field62955: String +} + +type Object11854 @Directive21(argument61 : "stringValue47729") @Directive44(argument97 : ["stringValue47728"]) { + field62957: [Object11855] + field62971: Object11856 +} + +type Object11855 @Directive21(argument61 : "stringValue47731") @Directive44(argument97 : ["stringValue47730"]) { + field62958: String + field62959: Scalar4 + field62960: String + field62961: String + field62962: String + field62963: String + field62964: String + field62965: String + field62966: String + field62967: String + field62968: String + field62969: String + field62970: String +} + +type Object11856 @Directive21(argument61 : "stringValue47733") @Directive44(argument97 : ["stringValue47732"]) { + field62972: Int + field62973: Int + field62974: Int + field62975: Int +} + +type Object11857 @Directive21(argument61 : "stringValue47739") @Directive44(argument97 : ["stringValue47738"]) { + field62977: [Object11858]! + field62986: Object11856 +} + +type Object11858 @Directive21(argument61 : "stringValue47741") @Directive44(argument97 : ["stringValue47740"]) { + field62978: String + field62979: Scalar2 + field62980: Scalar2 + field62981: String + field62982: String + field62983: String + field62984: Scalar4! + field62985: String +} + +type Object11859 @Directive21(argument61 : "stringValue47748") @Directive44(argument97 : ["stringValue47747"]) { + field62988: [Object11844] + field62989: Object11856 +} + +type Object1186 @Directive22(argument62 : "stringValue6186") @Directive31 @Directive44(argument97 : ["stringValue6187", "stringValue6188"]) { + field6649: String + field6650: String + field6651: Object1187 + field6655: [Object1188!] + field6660: [Object1189!] + field6667: String + field6668: String +} + +type Object11860 @Directive21(argument61 : "stringValue47757") @Directive44(argument97 : ["stringValue47756"]) { + field62991: Scalar2 + field62992: [Object11861] + field63028: Object11856 +} + +type Object11861 @Directive21(argument61 : "stringValue47759") @Directive44(argument97 : ["stringValue47758"]) { + field62993: Scalar4 + field62994: Scalar4 + field62995: String + field62996: Enum2914 + field62997: Scalar2 + field62998: Scalar2 + field62999: String + field63000: String + field63001: Scalar3 + field63002: Int + field63003: [Object11862] + field63016: Scalar2 + field63017: Int + field63018: Int + field63019: Int + field63020: Int + field63021: Int + field63022: Scalar4 + field63023: Scalar4 + field63024: Scalar4 + field63025: Int + field63026: String + field63027: String +} + +type Object11862 @Directive21(argument61 : "stringValue47761") @Directive44(argument97 : ["stringValue47760"]) { + field63004: Scalar2! + field63005: String + field63006: Scalar4 + field63007: [Object11863] +} + +type Object11863 @Directive21(argument61 : "stringValue47763") @Directive44(argument97 : ["stringValue47762"]) { + field63008: Scalar2! + field63009: Scalar4 + field63010: String + field63011: String + field63012: String + field63013: String + field63014: String + field63015: String +} + +type Object11864 @Directive21(argument61 : "stringValue47770") @Directive44(argument97 : ["stringValue47769"]) { + field63030: [Object11849] + field63031: Object11856 +} + +type Object11865 @Directive21(argument61 : "stringValue47777") @Directive44(argument97 : ["stringValue47776"]) { + field63033: [Object11866] + field63039: Object11856 +} + +type Object11866 @Directive21(argument61 : "stringValue47779") @Directive44(argument97 : ["stringValue47778"]) { + field63034: String + field63035: String + field63036: Scalar4 + field63037: String + field63038: String +} + +type Object11867 @Directive21(argument61 : "stringValue47786") @Directive44(argument97 : ["stringValue47785"]) { + field63041: [Object11868] + field63057: Object11856 +} + +type Object11868 @Directive21(argument61 : "stringValue47788") @Directive44(argument97 : ["stringValue47787"]) { + field63042: String + field63043: String + field63044: String + field63045: String + field63046: String + field63047: String + field63048: String + field63049: String + field63050: String + field63051: String + field63052: String + field63053: String + field63054: String + field63055: String + field63056: String +} + +type Object11869 @Directive21(argument61 : "stringValue47794") @Directive44(argument97 : ["stringValue47793"]) { + field63059: [Object5991] + field63060: String + field63061: String +} + +type Object1187 @Directive22(argument62 : "stringValue6189") @Directive31 @Directive44(argument97 : ["stringValue6190", "stringValue6191"]) { + field6652: String + field6653: String + field6654: String +} + +type Object11870 @Directive21(argument61 : "stringValue47800") @Directive44(argument97 : ["stringValue47799"]) { + field63063: Boolean + field63064: Scalar2 + field63065: [Enum2915] + field63066: String + field63067: Boolean + field63068: Boolean +} + +type Object11871 @Directive21(argument61 : "stringValue47807") @Directive44(argument97 : ["stringValue47806"]) { + field63070: Object11872 +} + +type Object11872 @Directive21(argument61 : "stringValue47809") @Directive44(argument97 : ["stringValue47808"]) { + field63071: Object11873 + field63087: Object11874 + field63092: Object11875 + field63099: Object11876 + field63105: String + field63106: Boolean +} + +type Object11873 @Directive21(argument61 : "stringValue47811") @Directive44(argument97 : ["stringValue47810"]) { + field63072: String + field63073: Boolean + field63074: String + field63075: String + field63076: [String] + field63077: String + field63078: String + field63079: Boolean + field63080: String + field63081: String + field63082: Boolean + field63083: Boolean + field63084: String + field63085: Boolean + field63086: String +} + +type Object11874 @Directive21(argument61 : "stringValue47813") @Directive44(argument97 : ["stringValue47812"]) { + field63088: String + field63089: Scalar2 + field63090: String + field63091: Boolean +} + +type Object11875 @Directive21(argument61 : "stringValue47815") @Directive44(argument97 : ["stringValue47814"]) { + field63093: [String] + field63094: [String] + field63095: [String] + field63096: [String] + field63097: String + field63098: Boolean +} + +type Object11876 @Directive21(argument61 : "stringValue47817") @Directive44(argument97 : ["stringValue47816"]) { + field63100: [Object11877] + field63104: Object11877 +} + +type Object11877 @Directive21(argument61 : "stringValue47819") @Directive44(argument97 : ["stringValue47818"]) { + field63101: Scalar2 + field63102: String + field63103: Boolean +} + +type Object11878 @Directive21(argument61 : "stringValue47825") @Directive44(argument97 : ["stringValue47824"]) { + field63108: Enum2910 + field63109: Object11879 + field63121: [Object11880] + field63122: [Object11880] + field63123: [Object11880] + field63124: [Object11880] + field63125: Object11881 + field63128: Object11881 + field63129: String + field63130: String + field63131: Object11882 + field63137: Object11883 +} + +type Object11879 @Directive21(argument61 : "stringValue47827") @Directive44(argument97 : ["stringValue47826"]) { + field63110: Int + field63111: Int + field63112: Int + field63113: Float + field63114: Enum2916 + field63115: [Object11880] +} + +type Object1188 @Directive22(argument62 : "stringValue6192") @Directive31 @Directive44(argument97 : ["stringValue6193", "stringValue6194"]) { + field6656: String! + field6657: String + field6658: Int + field6659: Int +} + +type Object11880 @Directive21(argument61 : "stringValue47830") @Directive44(argument97 : ["stringValue47829"]) { + field63116: String + field63117: String + field63118: String + field63119: Enum2916 + field63120: [Scalar3] +} + +type Object11881 @Directive21(argument61 : "stringValue47832") @Directive44(argument97 : ["stringValue47831"]) { + field63126: Scalar3 + field63127: Scalar3 +} + +type Object11882 @Directive21(argument61 : "stringValue47834") @Directive44(argument97 : ["stringValue47833"]) { + field63132: [Object11880] + field63133: Int + field63134: Int + field63135: Int + field63136: Boolean +} + +type Object11883 @Directive21(argument61 : "stringValue47836") @Directive44(argument97 : ["stringValue47835"]) { + field63138: Int + field63139: Int + field63140: Int + field63141: Enum2916 + field63142: [Object11884] +} + +type Object11884 @Directive21(argument61 : "stringValue47838") @Directive44(argument97 : ["stringValue47837"]) { + field63143: Enum2917 + field63144: Int + field63145: Enum2916 + field63146: [Object11885] +} + +type Object11885 @Directive21(argument61 : "stringValue47841") @Directive44(argument97 : ["stringValue47840"]) { + field63147: Enum1523 + field63148: Enum2916 + field63149: [Object11886] +} + +type Object11886 @Directive21(argument61 : "stringValue47843") @Directive44(argument97 : ["stringValue47842"]) { + field63150: Enum1524 + field63151: Enum2916 + field63152: Boolean +} + +type Object11887 @Directive21(argument61 : "stringValue47849") @Directive44(argument97 : ["stringValue47848"]) { + field63154: Object11861 + field63155: Object11849 + field63156: Object11844 + field63157: Object11849 +} + +type Object11888 @Directive21(argument61 : "stringValue47855") @Directive44(argument97 : ["stringValue47854"]) { + field63159: Object11889 + field63165: Object11890 + field63169: Object11891 + field63191: Object11892 + field63196: Scalar2 + field63197: Scalar4 +} + +type Object11889 @Directive21(argument61 : "stringValue47857") @Directive44(argument97 : ["stringValue47856"]) { + field63160: String + field63161: String + field63162: String + field63163: Scalar2 + field63164: Boolean +} + +type Object1189 @Directive22(argument62 : "stringValue6195") @Directive31 @Directive44(argument97 : ["stringValue6196", "stringValue6197"]) { + field6661: String! + field6662: String + field6663: String + field6664: String + field6665: String + field6666: String +} + +type Object11890 @Directive21(argument61 : "stringValue47859") @Directive44(argument97 : ["stringValue47858"]) { + field63166: Scalar2 + field63167: Scalar2 + field63168: Scalar2 +} + +type Object11891 @Directive21(argument61 : "stringValue47861") @Directive44(argument97 : ["stringValue47860"]) { + field63170: Scalar2 + field63171: Scalar2 + field63172: Scalar2 + field63173: Scalar1 + field63174: Scalar1 + field63175: Scalar1 + field63176: Scalar1 + field63177: Scalar1 + field63178: Scalar1 + field63179: Scalar1 + field63180: Scalar1 + field63181: Scalar1 + field63182: Scalar2 + field63183: Boolean + field63184: Boolean + field63185: Scalar1 + field63186: Boolean + field63187: Boolean + field63188: Scalar1 + field63189: Scalar1 + field63190: Scalar1 +} + +type Object11892 @Directive21(argument61 : "stringValue47863") @Directive44(argument97 : ["stringValue47862"]) { + field63192: Scalar2 + field63193: Boolean + field63194: String + field63195: String +} + +type Object11893 @Directive21(argument61 : "stringValue47869") @Directive44(argument97 : ["stringValue47868"]) { + field63199: [Object11853] +} + +type Object11894 @Directive21(argument61 : "stringValue47875") @Directive44(argument97 : ["stringValue47874"]) { + field63201: String + field63202: Enum2918 + field63203: Object11895 + field63209: Object11896 +} + +type Object11895 @Directive21(argument61 : "stringValue47878") @Directive44(argument97 : ["stringValue47877"]) { + field63204: String + field63205: String + field63206: String + field63207: String + field63208: String +} + +type Object11896 @Directive21(argument61 : "stringValue47880") @Directive44(argument97 : ["stringValue47879"]) { + field63210: String + field63211: String + field63212: String +} + +type Object11897 @Directive44(argument97 : ["stringValue47881"]) { + field63214: Object11898 @Directive35(argument89 : "stringValue47883", argument90 : false, argument91 : "stringValue47882", argument93 : "stringValue47884", argument94 : true) + field63216(argument2629: InputObject2255!): Object11899 @Directive35(argument89 : "stringValue47888", argument90 : false, argument91 : "stringValue47887", argument92 : 1139, argument93 : "stringValue47889", argument94 : true) + field63229(argument2630: InputObject2256!): Object11901 @Directive35(argument89 : "stringValue47896", argument90 : true, argument91 : "stringValue47895", argument93 : "stringValue47897", argument94 : true) + field63234: Object11902 @Directive35(argument89 : "stringValue47902", argument90 : true, argument91 : "stringValue47901", argument93 : "stringValue47903", argument94 : true) + field63243: Object11905 @Directive35(argument89 : "stringValue47911", argument90 : true, argument91 : "stringValue47910", argument93 : "stringValue47912", argument94 : true) + field63245(argument2631: InputObject2257!): Object11906 @Directive35(argument89 : "stringValue47916", argument90 : false, argument91 : "stringValue47915", argument92 : 1140, argument93 : "stringValue47917", argument94 : true) + field63271(argument2632: InputObject2258!): Object11909 @Directive35(argument89 : "stringValue47929", argument90 : true, argument91 : "stringValue47928", argument92 : 1141, argument93 : "stringValue47930", argument94 : true) + field63298(argument2633: InputObject2260!): Object11913 @Directive35(argument89 : "stringValue47943", argument90 : true, argument91 : "stringValue47942", argument93 : "stringValue47944", argument94 : true) + field63307(argument2634: InputObject2261!): Object11915 @Directive35(argument89 : "stringValue47951", argument90 : true, argument91 : "stringValue47950", argument93 : "stringValue47952", argument94 : true) + field63402: Object11923 @Directive35(argument89 : "stringValue47975", argument90 : true, argument91 : "stringValue47974", argument93 : "stringValue47976", argument94 : true) + field63404(argument2635: InputObject2262!): Object11924 @Directive35(argument89 : "stringValue47980", argument90 : true, argument91 : "stringValue47979", argument92 : 1142, argument93 : "stringValue47981", argument94 : true) + field63409(argument2636: InputObject2263!): Object11925 @Directive35(argument89 : "stringValue47986", argument90 : false, argument91 : "stringValue47985", argument93 : "stringValue47987", argument94 : true) + field63412(argument2637: InputObject2264!): Object11926 @Directive35(argument89 : "stringValue47992", argument90 : true, argument91 : "stringValue47991", argument92 : 1143, argument93 : "stringValue47993", argument94 : true) + field63431(argument2638: InputObject2265!): Object11930 @Directive35(argument89 : "stringValue48004", argument90 : true, argument91 : "stringValue48003", argument92 : 1144, argument93 : "stringValue48005", argument94 : true) +} + +type Object11898 @Directive21(argument61 : "stringValue47886") @Directive44(argument97 : ["stringValue47885"]) { + field63215: Boolean +} + +type Object11899 @Directive21(argument61 : "stringValue47892") @Directive44(argument97 : ["stringValue47891"]) { + field63217: Boolean + field63218: Object11900 +} + +type Object119 @Directive21(argument61 : "stringValue434") @Directive44(argument97 : ["stringValue433"]) { + field765: String! + field766: String! + field767: Object112 + field768: Enum61 +} + +type Object1190 @Directive22(argument62 : "stringValue6198") @Directive31 @Directive44(argument97 : ["stringValue6199", "stringValue6200"]) { + field6669: String + field6670: String + field6671: String + field6672: String + field6673: Interface3 + field6674: [Object1188!] + field6675: [Object1189!] +} + +type Object11900 @Directive21(argument61 : "stringValue47894") @Directive44(argument97 : ["stringValue47893"]) { + field63219: Scalar2 + field63220: String + field63221: Scalar2 + field63222: Boolean + field63223: String + field63224: String + field63225: String + field63226: Boolean + field63227: String + field63228: Boolean +} + +type Object11901 @Directive21(argument61 : "stringValue47900") @Directive44(argument97 : ["stringValue47899"]) { + field63230: String + field63231: String + field63232: String + field63233: Scalar1 +} + +type Object11902 @Directive21(argument61 : "stringValue47905") @Directive44(argument97 : ["stringValue47904"]) { + field63235: Object11903 +} + +type Object11903 @Directive21(argument61 : "stringValue47907") @Directive44(argument97 : ["stringValue47906"]) { + field63236: String + field63237: Int + field63238: Scalar2 + field63239: Scalar2 + field63240: Object11904 +} + +type Object11904 @Directive21(argument61 : "stringValue47909") @Directive44(argument97 : ["stringValue47908"]) { + field63241: String + field63242: Scalar2 +} + +type Object11905 @Directive21(argument61 : "stringValue47914") @Directive44(argument97 : ["stringValue47913"]) { + field63244: Boolean +} + +type Object11906 @Directive21(argument61 : "stringValue47920") @Directive44(argument97 : ["stringValue47919"]) { + field63246: Scalar2 + field63247: Object6004 + field63248: Object11907 + field63258: Object11908 + field63268: Scalar2 + field63269: Object11900 + field63270: Enum1529 +} + +type Object11907 @Directive21(argument61 : "stringValue47922") @Directive44(argument97 : ["stringValue47921"]) { + field63249: String + field63250: Enum2919 + field63251: String + field63252: String + field63253: Boolean + field63254: String + field63255: Scalar2 + field63256: Int + field63257: Int +} + +type Object11908 @Directive21(argument61 : "stringValue47925") @Directive44(argument97 : ["stringValue47924"]) { + field63259: Scalar2 + field63260: String + field63261: Boolean + field63262: Scalar2 + field63263: Boolean + field63264: String + field63265: String + field63266: Enum2920 + field63267: Enum2921 +} + +type Object11909 @Directive21(argument61 : "stringValue47934") @Directive44(argument97 : ["stringValue47933"]) { + field63272: [Object11910] + field63294: Object11912 + field63297: Int +} + +type Object1191 @Directive20(argument58 : "stringValue6202", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6201") @Directive31 @Directive44(argument97 : ["stringValue6203", "stringValue6204"]) { + field6676: String + field6677: String + field6678: String + field6679: Int + field6680: Boolean + field6681: Boolean + field6682: String + field6683: String + field6684: String + field6685: Boolean + field6686: Boolean + field6687: Boolean + field6688: Object1192 + field6692: Int + field6693: Int + field6694: Int +} + +type Object11910 @Directive21(argument61 : "stringValue47936") @Directive44(argument97 : ["stringValue47935"]) { + field63273: Scalar2 + field63274: Scalar2 + field63275: Scalar2 + field63276: Scalar2 + field63277: Scalar3 + field63278: Scalar3 + field63279: Int + field63280: Int + field63281: Float + field63282: Int + field63283: String + field63284: Float + field63285: Object11907 + field63286: Object11908 + field63287: Object11911 + field63293: Enum2922 +} + +type Object11911 @Directive21(argument61 : "stringValue47938") @Directive44(argument97 : ["stringValue47937"]) { + field63288: Float + field63289: Scalar2 + field63290: String + field63291: Boolean + field63292: String +} + +type Object11912 @Directive21(argument61 : "stringValue47941") @Directive44(argument97 : ["stringValue47940"]) { + field63295: Int + field63296: Int +} + +type Object11913 @Directive21(argument61 : "stringValue47947") @Directive44(argument97 : ["stringValue47946"]) { + field63299: Object11914 +} + +type Object11914 @Directive21(argument61 : "stringValue47949") @Directive44(argument97 : ["stringValue47948"]) { + field63300: String + field63301: String + field63302: Scalar2 + field63303: Scalar2 + field63304: Int + field63305: String + field63306: String +} + +type Object11915 @Directive21(argument61 : "stringValue47955") @Directive44(argument97 : ["stringValue47954"]) { + field63308: [Object11916] + field63401: Object11912 +} + +type Object11916 @Directive21(argument61 : "stringValue47957") @Directive44(argument97 : ["stringValue47956"]) { + field63309: Scalar2 + field63310: Scalar4 + field63311: Scalar4 + field63312: Scalar4 + field63313: Scalar4 + field63314: Scalar4 + field63315: Scalar4 + field63316: Scalar4 + field63317: String + field63318: String + field63319: Enum2923 + field63320: Enum2924 + field63321: Scalar2 + field63322: Object11917 + field63330: Scalar2 + field63331: Object11919 + field63365: Enum2925 + field63366: String + field63367: Object11921 + field63388: Scalar2 + field63389: Scalar2 + field63390: Scalar2 + field63391: Scalar2 + field63392: Scalar2 + field63393: Scalar2 + field63394: String + field63395: Scalar2 + field63396: String + field63397: Enum2926 + field63398: Enum2926 + field63399: Enum2926 + field63400: Enum2926 +} + +type Object11917 @Directive21(argument61 : "stringValue47961") @Directive44(argument97 : ["stringValue47960"]) { + field63323: Scalar2 + field63324: String + field63325: String + field63326: [Enum2924] + field63327: Object11918 +} + +type Object11918 @Directive21(argument61 : "stringValue47963") @Directive44(argument97 : ["stringValue47962"]) { + field63328: String + field63329: String +} + +type Object11919 @Directive21(argument61 : "stringValue47965") @Directive44(argument97 : ["stringValue47964"]) { + field63332: Scalar2 + field63333: String + field63334: Float + field63335: Float + field63336: String + field63337: Float + field63338: Int + field63339: Int + field63340: Int + field63341: String + field63342: String + field63343: String + field63344: String + field63345: String + field63346: [String] + field63347: String + field63348: String + field63349: String + field63350: String + field63351: String + field63352: String + field63353: Scalar2 + field63354: Int + field63355: Int + field63356: Int + field63357: String + field63358: String + field63359: String + field63360: [Object11920] + field63363: String + field63364: String +} + +type Object1192 @Directive22(argument62 : "stringValue6205") @Directive31 @Directive44(argument97 : ["stringValue6206", "stringValue6207"]) { + field6689: String + field6690: String + field6691: String +} + +type Object11920 @Directive21(argument61 : "stringValue47967") @Directive44(argument97 : ["stringValue47966"]) { + field63361: String + field63362: String +} + +type Object11921 @Directive21(argument61 : "stringValue47970") @Directive44(argument97 : ["stringValue47969"]) { + field63368: Scalar2 + field63369: Int + field63370: String + field63371: Enum2922 + field63372: Scalar4 + field63373: Scalar4 + field63374: Int + field63375: Int + field63376: Int + field63377: Scalar2 + field63378: Object11922 + field63387: String +} + +type Object11922 @Directive21(argument61 : "stringValue47972") @Directive44(argument97 : ["stringValue47971"]) { + field63379: String + field63380: String + field63381: String + field63382: String + field63383: String + field63384: String + field63385: String + field63386: Scalar2 +} + +type Object11923 @Directive21(argument61 : "stringValue47978") @Directive44(argument97 : ["stringValue47977"]) { + field63403: [Object11907] +} + +type Object11924 @Directive21(argument61 : "stringValue47984") @Directive44(argument97 : ["stringValue47983"]) { + field63405: [Object11907] + field63406: Object11903 + field63407: [Object11910] + field63408: [Object11916] +} + +type Object11925 @Directive21(argument61 : "stringValue47990") @Directive44(argument97 : ["stringValue47989"]) { + field63410: Object11908 + field63411: Object11900 +} + +type Object11926 @Directive21(argument61 : "stringValue47996") @Directive44(argument97 : ["stringValue47995"]) { + field63413: [Object11927] + field63430: [Object11907] +} + +type Object11927 @Directive21(argument61 : "stringValue47998") @Directive44(argument97 : ["stringValue47997"]) { + field63414: Scalar2 + field63415: String + field63416: Boolean + field63417: String + field63418: String + field63419: Object11928 + field63421: Float + field63422: Scalar2 + field63423: Scalar2 + field63424: String + field63425: Scalar2 + field63426: Scalar4 + field63427: Object11929 +} + +type Object11928 @Directive21(argument61 : "stringValue48000") @Directive44(argument97 : ["stringValue47999"]) { + field63420: String +} + +type Object11929 @Directive21(argument61 : "stringValue48002") @Directive44(argument97 : ["stringValue48001"]) { + field63428: String + field63429: String +} + +type Object1193 @Directive22(argument62 : "stringValue6208") @Directive31 @Directive44(argument97 : ["stringValue6209", "stringValue6210"]) { + field6695: String + field6696: String + field6697: String + field6698: Union92 +} + +type Object11930 @Directive21(argument61 : "stringValue48008") @Directive44(argument97 : ["stringValue48007"]) { + field63432: Boolean! +} + +type Object11931 @Directive44(argument97 : ["stringValue48009"]) { + field63434: Object11932 @Directive35(argument89 : "stringValue48011", argument90 : false, argument91 : "stringValue48010", argument92 : 1145, argument93 : "stringValue48012", argument94 : false) + field63436(argument2639: InputObject2266!): Object11933 @Directive35(argument89 : "stringValue48016", argument90 : false, argument91 : "stringValue48015", argument92 : 1146, argument93 : "stringValue48017", argument94 : false) +} + +type Object11932 @Directive21(argument61 : "stringValue48014") @Directive44(argument97 : ["stringValue48013"]) { + field63435: Scalar1 +} + +type Object11933 @Directive21(argument61 : "stringValue48029") @Directive44(argument97 : ["stringValue48028"]) { + field63437: [Object11934] + field65911: Object12297 + field66044: Object12312 + field66060: [Object12315] + field66063: Boolean + field66064: [Object12316] + field66823: Object12394 + field66826: Object12395 +} + +type Object11934 @Directive21(argument61 : "stringValue48031") @Directive44(argument97 : ["stringValue48030"]) { + field63438: String + field63439: String! + field63440: [Object11935] + field63447: String! + field63448: String + field63449: String + field63450: String + field63451: String + field63452: String + field63453: Object11937 + field63467: Boolean + field63468: String + field63469: [Object11938] + field63487: [Object11940] + field63644: [Object11967] + field63654: [Object11969] + field63681: [Object11973] + field63735: [Object11980] + field63758: String + field63759: [Object11975] + field63760: [Object11982] + field63794: [Object11985] + field63810: [Object11989] + field63818: [Object11990] + field63824: [Object11991] + field63846: [Object11993] + field64289: [Object12057] + field64330: [Object12062] + field64334: [Object12063] + field64350: [Object12066] + field64450: [Object12077] + field64480: Object12081 + field64485: Object12082 + field64490: [Object12083] + field64499: Object12084 + field64504: [Object12085] + field64509: String + field64510: String + field64511: [Object12086] + field64514: Object12087 + field64544: String + field64545: [Object12091] + field64558: Object12092 + field64584: [Object12094] + field64610: [Object12095] + field64614: String + field64615: Object12096 + field64618: [Object12097] + field64714: [Object12111] + field64721: [Object12112] + field64730: [Object12113] + field64737: [Object12114] + field64746: [Object12115] + field64780: [Object12118] + field64808: [Object12120] + field64843: [Object12122] + field64853: [Object12123] + field64868: [Object12125] + field64884: [Object12128] + field64902: [Object12131] + field64908: [Object12132] + field64929: [Object12134] + field64953: [Object12136] + field64955: [Object12137] + field64958: [Object12138] + field65008: [Object12142] + field65030: Object12143 + field65034: [Object12144] + field65141: Enum3003 + field65142: [Object12153] + field65169: [Object12155] + field65185: [Object12156] + field65199: Object12157 + field65215: [Object12160] + field65222: [Object12162] + field65227: [Object12163] + field65237: Object12164 + field65242: Enum3007 + field65243: [Object12165] + field65250: [Object12166] + field65268: [Object12168] + field65285: [Object12169] + field65294: [Object12171] + field65302: [Object12172] + field65308: [Object12173] + field65313: [Object12174] + field65323: [Object12175] + field65342: Boolean + field65343: [Object12177] + field65349: [Object12178] + field65366: [Object12180] + field65388: [Object12184] + field65391: [Object12185] + field65494: [Object12217] + field65511: Scalar2 + field65512: [Object12221] + field65526: [Object12179] + field65527: Object12222 + field65538: Object12144 @deprecated + field65539: [Object12226] + field65578: [Object12231] + field65599: [Object12236] + field65604: [Object12237] + field65636: [Object12243] @deprecated + field65643: Object12244 @deprecated + field65651: Object12245 + field65653: [Object12246] + field65662: [Object12247] + field65669: Enum2930 + field65670: [Interface154] + field65671: [Object12248] + field65685: [Object12249] + field65693: Object12250 + field65697: [Object12161] + field65698: String + field65699: [Object12251] + field65702: Object12252 + field65704: [Object12253] + field65712: Object12254 + field65714: [Object12255] + field65789: Object12271 + field65797: String + field65798: String + field65799: Object12273 + field65803: Object12274 + field65809: [Object12276] + field65828: [Object12281] + field65842: [Object12284] + field65850: Boolean + field65851: String + field65852: Object12286 + field65858: Int + field65859: Boolean + field65860: [Object12288] +} + +type Object11935 @Directive21(argument61 : "stringValue48033") @Directive44(argument97 : ["stringValue48032"]) { + field63441: String + field63442: String + field63443: [Object11936] +} + +type Object11936 @Directive21(argument61 : "stringValue48035") @Directive44(argument97 : ["stringValue48034"]) { + field63444: String + field63445: String + field63446: String +} + +type Object11937 @Directive21(argument61 : "stringValue48037") @Directive44(argument97 : ["stringValue48036"]) { + field63454: Scalar1 + field63455: Object3832 + field63456: String + field63457: String + field63458: Scalar1 + field63459: Scalar2 + field63460: String @deprecated + field63461: Enum2931 + field63462: Boolean + field63463: String + field63464: String + field63465: Enum2932 + field63466: [Enum2933] +} + +type Object11938 @Directive21(argument61 : "stringValue48042") @Directive44(argument97 : ["stringValue48041"]) { + field63470: Int + field63471: Object11939 + field63476: Object3832 + field63477: String + field63478: String + field63479: Enum2934 + field63480: String + field63481: String + field63482: Boolean + field63483: Boolean + field63484: String + field63485: String + field63486: String +} + +type Object11939 @Directive21(argument61 : "stringValue48044") @Directive44(argument97 : ["stringValue48043"]) { + field63472: Scalar2 + field63473: String + field63474: String + field63475: String +} + +type Object1194 @Directive22(argument62 : "stringValue6211") @Directive31 @Directive44(argument97 : ["stringValue6212", "stringValue6213"]) { + field6699: Object1195 @Directive37(argument95 : "stringValue6214") + field6717: [Object1199] @Directive37(argument95 : "stringValue6247") + field6720: [Object1200] @Directive37(argument95 : "stringValue6256") + field6723: [Object1201] @Directive37(argument95 : "stringValue6265") + field6726: Enum304 @Directive37(argument95 : "stringValue6274") + field6727: Enum305 @Directive37(argument95 : "stringValue6275") + field6728: Enum306 @Directive37(argument95 : "stringValue6276") +} + +type Object11940 @Directive21(argument61 : "stringValue48047") @Directive44(argument97 : ["stringValue48046"]) { + field63488: String + field63489: String + field63490: String + field63491: String + field63492: String + field63493: Object3832 + field63494: Object11939 + field63495: Object11939 + field63496: Object11939 + field63497: Object11941 + field63521: Object11941 + field63522: String + field63523: String + field63524: String + field63525: Object11943 + field63584: Object11958 + field63587: String + field63588: Object11959 + field63595: String + field63596: Enum2931 + field63597: [Object11961] + field63601: [Object11961] + field63602: String + field63603: String + field63604: String + field63605: Object11962 + field63613: String + field63614: String + field63615: Object11963 + field63622: String + field63623: Enum2943 + field63624: [Object11964] + field63633: Object11965 +} + +type Object11941 @Directive21(argument61 : "stringValue48049") @Directive44(argument97 : ["stringValue48048"]) { + field63498: String + field63499: String + field63500: String + field63501: String + field63502: String + field63503: String + field63504: String + field63505: String + field63506: String + field63507: String + field63508: String + field63509: String + field63510: String + field63511: String + field63512: String + field63513: String + field63514: String + field63515: String + field63516: [Object11942] + field63520: Scalar2 +} + +type Object11942 @Directive21(argument61 : "stringValue48051") @Directive44(argument97 : ["stringValue48050"]) { + field63517: String + field63518: String + field63519: String +} + +type Object11943 @Directive21(argument61 : "stringValue48053") @Directive44(argument97 : ["stringValue48052"]) { + field63526: Object11944 + field63581: Object11944 + field63582: Object11944 + field63583: Object11944 +} + +type Object11944 @Directive21(argument61 : "stringValue48055") @Directive44(argument97 : ["stringValue48054"]) { + field63527: String + field63528: String + field63529: String + field63530: String + field63531: String + field63532: String + field63533: String + field63534: String + field63535: Object11945 + field63580: Object11945 +} + +type Object11945 @Directive21(argument61 : "stringValue48057") @Directive44(argument97 : ["stringValue48056"]) { + field63536: Object11946 + field63550: Object11949 + field63559: Object11952 + field63570: Object11956 + field63579: Object11956 +} + +type Object11946 @Directive21(argument61 : "stringValue48059") @Directive44(argument97 : ["stringValue48058"]) { + field63537: String + field63538: Object11947 +} + +type Object11947 @Directive21(argument61 : "stringValue48061") @Directive44(argument97 : ["stringValue48060"]) { + field63539: Object3840 + field63540: Object11948 + field63548: Scalar5 + field63549: Enum2938 +} + +type Object11948 @Directive21(argument61 : "stringValue48063") @Directive44(argument97 : ["stringValue48062"]) { + field63541: Enum2935 + field63542: Enum2936 + field63543: Enum2937 + field63544: Scalar5 + field63545: Scalar5 + field63546: Float + field63547: Float +} + +type Object11949 @Directive21(argument61 : "stringValue48069") @Directive44(argument97 : ["stringValue48068"]) { + field63551: Object3840 + field63552: Object11950 +} + +type Object1195 @Directive22(argument62 : "stringValue6215") @Directive31 @Directive44(argument97 : ["stringValue6216", "stringValue6217"]) { + field6700: [Object1196] @Directive37(argument95 : "stringValue6218") + field6708: Float @Directive37(argument95 : "stringValue6235") + field6709: Float @Directive37(argument95 : "stringValue6236") + field6710: [Object1198] @Directive37(argument95 : "stringValue6237") + field6713: Float @Directive37(argument95 : "stringValue6243") + field6714: Float @Directive37(argument95 : "stringValue6244") + field6715: [Object1198] @Directive37(argument95 : "stringValue6245") + field6716: String @Directive37(argument95 : "stringValue6246") +} + +type Object11950 @Directive21(argument61 : "stringValue48071") @Directive44(argument97 : ["stringValue48070"]) { + field63553: Object11951 + field63556: Object11951 + field63557: Object11951 + field63558: Object11951 +} + +type Object11951 @Directive21(argument61 : "stringValue48073") @Directive44(argument97 : ["stringValue48072"]) { + field63554: Enum2939 + field63555: Float +} + +type Object11952 @Directive21(argument61 : "stringValue48076") @Directive44(argument97 : ["stringValue48075"]) { + field63560: Object11953 + field63563: Object11954 + field63566: Object11950 + field63567: Object11955 +} + +type Object11953 @Directive21(argument61 : "stringValue48078") @Directive44(argument97 : ["stringValue48077"]) { + field63561: Int + field63562: Int +} + +type Object11954 @Directive21(argument61 : "stringValue48080") @Directive44(argument97 : ["stringValue48079"]) { + field63564: Enum2938 + field63565: Enum2940 +} + +type Object11955 @Directive21(argument61 : "stringValue48083") @Directive44(argument97 : ["stringValue48082"]) { + field63568: Object11951 + field63569: Object11951 +} + +type Object11956 @Directive21(argument61 : "stringValue48085") @Directive44(argument97 : ["stringValue48084"]) { + field63571: String + field63572: Object3840 + field63573: Object11957 +} + +type Object11957 @Directive21(argument61 : "stringValue48087") @Directive44(argument97 : ["stringValue48086"]) { + field63574: Object11953 + field63575: Object11954 + field63576: Object11950 + field63577: Object11955 + field63578: Enum2941 +} + +type Object11958 @Directive21(argument61 : "stringValue48090") @Directive44(argument97 : ["stringValue48089"]) { + field63585: Int + field63586: Int +} + +type Object11959 @Directive21(argument61 : "stringValue48092") @Directive44(argument97 : ["stringValue48091"]) { + field63589: String + field63590: String + field63591: [Object11960] +} + +type Object1196 @Directive22(argument62 : "stringValue6219") @Directive31 @Directive44(argument97 : ["stringValue6220", "stringValue6221"]) { + field6701: [Object1197] @Directive37(argument95 : "stringValue6222") + field6705: String @Directive37(argument95 : "stringValue6229") + field6706: Object10 @Directive37(argument95 : "stringValue6230") + field6707: Enum303 @Directive37(argument95 : "stringValue6231") +} + +type Object11960 @Directive21(argument61 : "stringValue48094") @Directive44(argument97 : ["stringValue48093"]) { + field63592: Scalar3 + field63593: Float + field63594: String +} + +type Object11961 @Directive21(argument61 : "stringValue48096") @Directive44(argument97 : ["stringValue48095"]) { + field63598: Enum2942 + field63599: String + field63600: String +} + +type Object11962 @Directive21(argument61 : "stringValue48099") @Directive44(argument97 : ["stringValue48098"]) { + field63606: Scalar2 + field63607: String + field63608: String + field63609: String + field63610: String + field63611: String + field63612: String +} + +type Object11963 @Directive21(argument61 : "stringValue48101") @Directive44(argument97 : ["stringValue48100"]) { + field63616: String + field63617: Scalar2 + field63618: String + field63619: String + field63620: Scalar2 + field63621: String +} + +type Object11964 @Directive21(argument61 : "stringValue48104") @Directive44(argument97 : ["stringValue48103"]) { + field63625: String + field63626: String + field63627: String + field63628: String + field63629: Object3832 + field63630: Enum2944 + field63631: Enum2931 + field63632: Enum2945 +} + +type Object11965 @Directive21(argument61 : "stringValue48108") @Directive44(argument97 : ["stringValue48107"]) { + field63634: String + field63635: String + field63636: Object3832 + field63637: Object11966 + field63643: Boolean +} + +type Object11966 @Directive21(argument61 : "stringValue48110") @Directive44(argument97 : ["stringValue48109"]) { + field63638: String + field63639: String + field63640: String + field63641: String + field63642: Int +} + +type Object11967 @Directive21(argument61 : "stringValue48112") @Directive44(argument97 : ["stringValue48111"]) { + field63645: String + field63646: String + field63647: Object11968 + field63651: Object3832 + field63652: String + field63653: String +} + +type Object11968 @Directive21(argument61 : "stringValue48114") @Directive44(argument97 : ["stringValue48113"]) { + field63648: Scalar2 + field63649: String + field63650: String +} + +type Object11969 @Directive21(argument61 : "stringValue48116") @Directive44(argument97 : ["stringValue48115"]) { + field63655: String + field63656: String + field63657: String + field63658: String + field63659: Object3832 + field63660: String + field63661: String + field63662: String + field63663: String + field63664: String + field63665: String + field63666: Object11970 + field63677: [String] + field63678: [String] + field63679: String + field63680: Enum781 +} + +type Object1197 @Directive22(argument62 : "stringValue6223") @Directive31 @Directive44(argument97 : ["stringValue6224", "stringValue6225"]) { + field6702: Float @Directive37(argument95 : "stringValue6226") + field6703: Float @Directive37(argument95 : "stringValue6227") + field6704: String @Directive37(argument95 : "stringValue6228") +} + +type Object11970 @Directive21(argument61 : "stringValue48118") @Directive44(argument97 : ["stringValue48117"]) { + field63667: Union386 + field63676: Enum2946 +} + +type Object11971 @Directive21(argument61 : "stringValue48121") @Directive44(argument97 : ["stringValue48120"]) { + field63668: String + field63669: String + field63670: String + field63671: [Object11972] +} + +type Object11972 @Directive21(argument61 : "stringValue48123") @Directive44(argument97 : ["stringValue48122"]) { + field63672: String + field63673: String + field63674: String + field63675: String +} + +type Object11973 @Directive21(argument61 : "stringValue48126") @Directive44(argument97 : ["stringValue48125"]) { + field63682: Object11974 + field63689: Object11974 + field63690: Object11974 + field63691: String + field63692: String + field63693: String + field63694: String @deprecated + field63695: String + field63696: String + field63697: String + field63698: Boolean + field63699: String + field63700: Object11943 + field63701: Object11941 + field63702: Object11941 + field63703: String + field63704: Scalar2 + field63705: String + field63706: Object11939 @deprecated + field63707: String @deprecated + field63708: Object3832 + field63709: String + field63710: [Object11975] + field63721: Object11976 + field63731: [Object11979] +} + +type Object11974 @Directive21(argument61 : "stringValue48128") @Directive44(argument97 : ["stringValue48127"]) { + field63683: Scalar2 + field63684: String + field63685: String + field63686: String + field63687: String + field63688: Float +} + +type Object11975 @Directive21(argument61 : "stringValue48130") @Directive44(argument97 : ["stringValue48129"]) { + field63711: String + field63712: String + field63713: String + field63714: String + field63715: String + field63716: String + field63717: String + field63718: String + field63719: String + field63720: String +} + +type Object11976 @Directive21(argument61 : "stringValue48132") @Directive44(argument97 : ["stringValue48131"]) { + field63722: Object11977 + field63729: Object11977 + field63730: Object11977 +} + +type Object11977 @Directive21(argument61 : "stringValue48134") @Directive44(argument97 : ["stringValue48133"]) { + field63723: String + field63724: String + field63725: String + field63726: Object11978 +} + +type Object11978 @Directive21(argument61 : "stringValue48136") @Directive44(argument97 : ["stringValue48135"]) { + field63727: Int + field63728: Float +} + +type Object11979 @Directive21(argument61 : "stringValue48138") @Directive44(argument97 : ["stringValue48137"]) { + field63732: String + field63733: String + field63734: String +} + +type Object1198 @Directive22(argument62 : "stringValue6238") @Directive31 @Directive44(argument97 : ["stringValue6239", "stringValue6240"]) { + field6711: Float @Directive37(argument95 : "stringValue6241") + field6712: String @Directive37(argument95 : "stringValue6242") +} + +type Object11980 @Directive21(argument61 : "stringValue48140") @Directive44(argument97 : ["stringValue48139"]) { + field63736: Object11981 + field63743: String + field63744: String + field63745: String + field63746: String + field63747: String + field63748: Object3832 + field63749: String + field63750: String + field63751: Int + field63752: String + field63753: String + field63754: String + field63755: Object11941 + field63756: String + field63757: String +} + +type Object11981 @Directive21(argument61 : "stringValue48142") @Directive44(argument97 : ["stringValue48141"]) { + field63737: Scalar2 + field63738: String + field63739: String + field63740: String + field63741: String + field63742: String +} + +type Object11982 @Directive21(argument61 : "stringValue48144") @Directive44(argument97 : ["stringValue48143"]) { + field63761: Object11983 + field63771: Object11983 + field63772: String + field63773: Scalar1 + field63774: String + field63775: String + field63776: String + field63777: Scalar2! + field63778: Float + field63779: Float + field63780: String + field63781: String + field63782: [String] + field63783: [Object11983] + field63784: [Object11984] + field63788: Scalar2 + field63789: String + field63790: String + field63791: String + field63792: Scalar2 + field63793: String +} + +type Object11983 @Directive21(argument61 : "stringValue48146") @Directive44(argument97 : ["stringValue48145"]) { + field63762: Scalar2 + field63763: String + field63764: String + field63765: String + field63766: String + field63767: String + field63768: String + field63769: String + field63770: String +} + +type Object11984 @Directive21(argument61 : "stringValue48148") @Directive44(argument97 : ["stringValue48147"]) { + field63785: Int + field63786: String + field63787: String +} + +type Object11985 @Directive21(argument61 : "stringValue48150") @Directive44(argument97 : ["stringValue48149"]) { + field63795: String + field63796: String + field63797: [String] + field63798: Boolean + field63799: Object11937 + field63800: String + field63801: Object11986 + field63807: Object11988 +} + +type Object11986 @Directive21(argument61 : "stringValue48152") @Directive44(argument97 : ["stringValue48151"]) { + field63802: [Object11987] + field63805: String + field63806: String +} + +type Object11987 @Directive21(argument61 : "stringValue48154") @Directive44(argument97 : ["stringValue48153"]) { + field63803: String + field63804: String +} + +type Object11988 @Directive21(argument61 : "stringValue48156") @Directive44(argument97 : ["stringValue48155"]) { + field63808: String + field63809: String +} + +type Object11989 @Directive21(argument61 : "stringValue48158") @Directive44(argument97 : ["stringValue48157"]) { + field63811: String + field63812: String! + field63813: String + field63814: String + field63815: String + field63816: String + field63817: String +} + +type Object1199 @Directive22(argument62 : "stringValue6248") @Directive31 @Directive44(argument97 : ["stringValue6249", "stringValue6250"]) { + field6718: String @Directive37(argument95 : "stringValue6251") + field6719: Enum304 @Directive37(argument95 : "stringValue6252") +} + +type Object11990 @Directive21(argument61 : "stringValue48160") @Directive44(argument97 : ["stringValue48159"]) { + field63819: String + field63820: String! + field63821: String + field63822: String + field63823: String +} + +type Object11991 @Directive21(argument61 : "stringValue48162") @Directive44(argument97 : ["stringValue48161"]) { + field63825: String + field63826: Object11992 + field63830: Scalar2 + field63831: String + field63832: String + field63833: String + field63834: Int + field63835: Float + field63836: String + field63837: Scalar2! + field63838: String + field63839: String + field63840: Scalar2 + field63841: String + field63842: String + field63843: String + field63844: Boolean + field63845: String +} + +type Object11992 @Directive21(argument61 : "stringValue48164") @Directive44(argument97 : ["stringValue48163"]) { + field63827: Scalar2 + field63828: String + field63829: String +} + +type Object11993 @Directive21(argument61 : "stringValue48166") @Directive44(argument97 : ["stringValue48165"]) { + field63847: Object11941 + field63848: Object11941 + field63849: Object11994 + field63853: Object11994 + field63854: Object11995 + field64150: Object12029 + field64284: Object12056 +} + +type Object11994 @Directive21(argument61 : "stringValue48168") @Directive44(argument97 : ["stringValue48167"]) { + field63850: Float + field63851: String + field63852: String +} + +type Object11995 @Directive21(argument61 : "stringValue48170") @Directive44(argument97 : ["stringValue48169"]) { + field63855: [String] + field63856: String + field63857: Float + field63858: String + field63859: String + field63860: Int + field63861: Int + field63862: String + field63863: Object11996 + field63866: String + field63867: [String] + field63868: String + field63869: String + field63870: Scalar2 + field63871: Boolean + field63872: Boolean + field63873: Boolean + field63874: Boolean + field63875: Boolean + field63876: Boolean + field63877: Object11997 + field63895: Float + field63896: Float + field63897: String + field63898: String + field63899: Object12000 + field63904: String + field63905: String + field63906: Int + field63907: Int + field63908: String + field63909: [String] + field63910: Object11983 + field63911: String + field63912: String + field63913: Scalar2 + field63914: Int + field63915: String + field63916: String + field63917: String + field63918: String + field63919: Boolean + field63920: String + field63921: Float + field63922: Int + field63923: Object12001 + field63932: Object11997 + field63933: String + field63934: String + field63935: String + field63936: String + field63937: [Object12002] + field63944: String + field63945: String + field63946: String + field63947: String + field63948: [Int] + field63949: [String] + field63950: [Object12003] + field63960: [String] + field63961: String + field63962: [String] + field63963: [Object12004] + field63987: Float + field63988: Object12007 + field64013: Enum2949 + field64014: [Object12011] + field64022: String + field64023: Boolean + field64024: String + field64025: Int + field64026: Int + field64027: Object12012 + field64029: [Object12013] + field64040: Object12014 + field64043: Object12015 + field64049: Enum2952 + field64050: [Object11999] + field64051: Object12008 + field64052: Enum2953 + field64053: String + field64054: String + field64055: [Object12016] + field64066: [Scalar2] + field64067: String + field64068: [Object12017] + field64104: [Object12017] + field64105: Enum2956 + field64106: [Enum2957] + field64107: Object12021 + field64110: [Object12022] + field64121: Object12026 + field64125: [Object12000] + field64126: Boolean + field64127: String + field64128: Int + field64129: String + field64130: Scalar2 + field64131: Boolean + field64132: Float + field64133: [String] + field64134: String + field64135: String + field64136: String + field64137: Object12027 + field64142: Object12028 + field64146: Object11999 + field64147: Enum2959 + field64148: Scalar2 + field64149: String +} + +type Object11996 @Directive21(argument61 : "stringValue48172") @Directive44(argument97 : ["stringValue48171"]) { + field63864: String + field63865: Float +} + +type Object11997 @Directive21(argument61 : "stringValue48174") @Directive44(argument97 : ["stringValue48173"]) { + field63878: Object11998 + field63882: [String] + field63883: String + field63884: [Object11999] +} + +type Object11998 @Directive21(argument61 : "stringValue48176") @Directive44(argument97 : ["stringValue48175"]) { + field63879: String + field63880: String + field63881: String +} + +type Object11999 @Directive21(argument61 : "stringValue48178") @Directive44(argument97 : ["stringValue48177"]) { + field63885: String + field63886: String + field63887: String + field63888: String + field63889: String + field63890: String + field63891: String + field63892: String + field63893: String + field63894: Enum2947 +} + +type Object12 @Directive20(argument58 : "stringValue95", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue98") @Directive31 @Directive44(argument97 : ["stringValue96", "stringValue97"]) { + field98: String + field99: Float +} + +type Object120 @Directive21(argument61 : "stringValue436") @Directive44(argument97 : ["stringValue435"]) { + field774: String! + field775: String! + field776: Enum61 +} + +type Object1200 @Directive22(argument62 : "stringValue6257") @Directive31 @Directive44(argument97 : ["stringValue6258", "stringValue6259"]) { + field6721: String @Directive37(argument95 : "stringValue6260") + field6722: Enum305 @Directive37(argument95 : "stringValue6261") +} + +type Object12000 @Directive21(argument61 : "stringValue48181") @Directive44(argument97 : ["stringValue48180"]) { + field63900: String + field63901: String + field63902: String + field63903: String +} + +type Object12001 @Directive21(argument61 : "stringValue48183") @Directive44(argument97 : ["stringValue48182"]) { + field63924: String + field63925: Boolean + field63926: Scalar2 + field63927: Boolean + field63928: String + field63929: String + field63930: String + field63931: Scalar4 +} + +type Object12002 @Directive21(argument61 : "stringValue48185") @Directive44(argument97 : ["stringValue48184"]) { + field63938: String + field63939: String + field63940: Boolean + field63941: String + field63942: String + field63943: String +} + +type Object12003 @Directive21(argument61 : "stringValue48187") @Directive44(argument97 : ["stringValue48186"]) { + field63951: String + field63952: String + field63953: Boolean + field63954: String + field63955: String + field63956: String + field63957: String + field63958: [String] + field63959: Scalar2 +} + +type Object12004 @Directive21(argument61 : "stringValue48189") @Directive44(argument97 : ["stringValue48188"]) { + field63964: String + field63965: String + field63966: Object3832 + field63967: String + field63968: String + field63969: String + field63970: String + field63971: String + field63972: [Object12005] @deprecated + field63983: String + field63984: String + field63985: String + field63986: Enum2948 +} + +type Object12005 @Directive21(argument61 : "stringValue48191") @Directive44(argument97 : ["stringValue48190"]) { + field63973: String + field63974: String + field63975: String + field63976: String + field63977: String + field63978: String + field63979: Object12006 +} + +type Object12006 @Directive21(argument61 : "stringValue48193") @Directive44(argument97 : ["stringValue48192"]) { + field63980: String + field63981: String + field63982: String +} + +type Object12007 @Directive21(argument61 : "stringValue48196") @Directive44(argument97 : ["stringValue48195"]) { + field63989: [Object12008] + field64012: String +} + +type Object12008 @Directive21(argument61 : "stringValue48198") @Directive44(argument97 : ["stringValue48197"]) { + field63990: String + field63991: Float + field63992: String + field63993: Scalar2 + field63994: [Object12009] + field64003: String + field64004: Scalar2 + field64005: [Object12010] + field64008: String + field64009: Float + field64010: Float + field64011: String +} + +type Object12009 @Directive21(argument61 : "stringValue48200") @Directive44(argument97 : ["stringValue48199"]) { + field63995: String + field63996: Scalar2 + field63997: String + field63998: String + field63999: String + field64000: String + field64001: String + field64002: String +} + +type Object1201 @Directive22(argument62 : "stringValue6266") @Directive31 @Directive44(argument97 : ["stringValue6267", "stringValue6268"]) { + field6724: String @Directive37(argument95 : "stringValue6269") + field6725: Enum306 @Directive37(argument95 : "stringValue6270") +} + +type Object12010 @Directive21(argument61 : "stringValue48202") @Directive44(argument97 : ["stringValue48201"]) { + field64006: Scalar2 + field64007: String +} + +type Object12011 @Directive21(argument61 : "stringValue48205") @Directive44(argument97 : ["stringValue48204"]) { + field64015: String + field64016: String + field64017: String + field64018: String + field64019: Enum2947 + field64020: String + field64021: Enum2950 +} + +type Object12012 @Directive21(argument61 : "stringValue48208") @Directive44(argument97 : ["stringValue48207"]) { + field64028: String +} + +type Object12013 @Directive21(argument61 : "stringValue48210") @Directive44(argument97 : ["stringValue48209"]) { + field64030: Scalar2 + field64031: String + field64032: String + field64033: String + field64034: String + field64035: String + field64036: String + field64037: String + field64038: String + field64039: Object11997 +} + +type Object12014 @Directive21(argument61 : "stringValue48212") @Directive44(argument97 : ["stringValue48211"]) { + field64041: String + field64042: String +} + +type Object12015 @Directive21(argument61 : "stringValue48214") @Directive44(argument97 : ["stringValue48213"]) { + field64044: String + field64045: String + field64046: String + field64047: String + field64048: Enum2951 +} + +type Object12016 @Directive21(argument61 : "stringValue48219") @Directive44(argument97 : ["stringValue48218"]) { + field64056: String + field64057: String + field64058: String + field64059: String + field64060: String + field64061: String + field64062: Object3832 + field64063: String + field64064: String + field64065: Object12006 +} + +type Object12017 @Directive21(argument61 : "stringValue48221") @Directive44(argument97 : ["stringValue48220"]) { + field64069: String + field64070: String + field64071: Enum781 + field64072: String + field64073: Object3860 @deprecated + field64074: Object3830 @deprecated + field64075: String + field64076: Union387 @deprecated + field64079: String + field64080: String + field64081: Object12019 + field64098: Interface152 + field64099: Interface155 + field64100: Object12020 + field64101: Object11947 + field64102: Object11947 + field64103: Object11947 +} + +type Object12018 @Directive21(argument61 : "stringValue48224") @Directive44(argument97 : ["stringValue48223"]) { + field64077: String! + field64078: String +} + +type Object12019 @Directive21(argument61 : "stringValue48226") @Directive44(argument97 : ["stringValue48225"]) { + field64082: String + field64083: Int + field64084: Object12020 + field64095: Boolean + field64096: Object11947 + field64097: Int +} + +type Object1202 @Directive22(argument62 : "stringValue6277") @Directive31 @Directive44(argument97 : ["stringValue6278", "stringValue6279"]) { + field6729: Object1195 @Directive37(argument95 : "stringValue6280") + field6730: String @Directive37(argument95 : "stringValue6281") + field6731: Float @Directive37(argument95 : "stringValue6282") +} + +type Object12020 @Directive21(argument61 : "stringValue48228") @Directive44(argument97 : ["stringValue48227"]) { + field64085: String + field64086: Enum781 + field64087: Enum2954 + field64088: String + field64089: String + field64090: Enum2955 + field64091: Object3830 @deprecated + field64092: Union387 @deprecated + field64093: Object3843 @deprecated + field64094: Interface152 +} + +type Object12021 @Directive21(argument61 : "stringValue48234") @Directive44(argument97 : ["stringValue48233"]) { + field64108: Float + field64109: Float +} + +type Object12022 @Directive21(argument61 : "stringValue48236") @Directive44(argument97 : ["stringValue48235"]) { + field64111: String + field64112: Enum2958 + field64113: Union388 +} + +type Object12023 @Directive21(argument61 : "stringValue48240") @Directive44(argument97 : ["stringValue48239"]) { + field64114: [Object12017] +} + +type Object12024 @Directive21(argument61 : "stringValue48242") @Directive44(argument97 : ["stringValue48241"]) { + field64115: String + field64116: String + field64117: Enum781 +} + +type Object12025 @Directive21(argument61 : "stringValue48244") @Directive44(argument97 : ["stringValue48243"]) { + field64118: String + field64119: String + field64120: [Enum781] +} + +type Object12026 @Directive21(argument61 : "stringValue48246") @Directive44(argument97 : ["stringValue48245"]) { + field64122: String + field64123: Float + field64124: String +} + +type Object12027 @Directive21(argument61 : "stringValue48248") @Directive44(argument97 : ["stringValue48247"]) { + field64138: Boolean + field64139: Boolean + field64140: String + field64141: String +} + +type Object12028 @Directive21(argument61 : "stringValue48250") @Directive44(argument97 : ["stringValue48249"]) { + field64143: String + field64144: String + field64145: String +} + +type Object12029 @Directive21(argument61 : "stringValue48253") @Directive44(argument97 : ["stringValue48252"]) { + field64151: Boolean + field64152: Float + field64153: Object12030 + field64163: String + field64164: Object12031 + field64165: String + field64166: Object12031 + field64167: Float + field64168: Boolean + field64169: Object12031 + field64170: [Object12032] + field64184: Object12031 + field64185: String + field64186: String + field64187: Object12031 + field64188: String + field64189: String + field64190: [Object12033] + field64198: [Enum2963] + field64199: Object3840 + field64200: Object12034 + field64283: Boolean +} + +type Object1203 @Directive22(argument62 : "stringValue6283") @Directive31 @Directive44(argument97 : ["stringValue6284", "stringValue6285"]) { + field6732: [Object1204] @Directive37(argument95 : "stringValue6286") +} + +type Object12030 @Directive21(argument61 : "stringValue48255") @Directive44(argument97 : ["stringValue48254"]) { + field64154: String + field64155: [Object12030] + field64156: Object12031 + field64161: Int + field64162: String +} + +type Object12031 @Directive21(argument61 : "stringValue48257") @Directive44(argument97 : ["stringValue48256"]) { + field64157: Float + field64158: String + field64159: String + field64160: Boolean +} + +type Object12032 @Directive21(argument61 : "stringValue48259") @Directive44(argument97 : ["stringValue48258"]) { + field64171: Enum2960 + field64172: String + field64173: Boolean + field64174: Boolean + field64175: Int + field64176: String + field64177: Scalar2 + field64178: String + field64179: Int + field64180: String + field64181: Float + field64182: Int + field64183: Enum2961 +} + +type Object12033 @Directive21(argument61 : "stringValue48263") @Directive44(argument97 : ["stringValue48262"]) { + field64191: String + field64192: String + field64193: String + field64194: String + field64195: String + field64196: Enum2962 + field64197: String +} + +type Object12034 @Directive21(argument61 : "stringValue48267") @Directive44(argument97 : ["stringValue48266"]) { + field64201: Union389 + field64240: Union389 + field64241: Object12044 +} + +type Object12035 @Directive21(argument61 : "stringValue48270") @Directive44(argument97 : ["stringValue48269"]) { + field64202: String! + field64203: String + field64204: Enum2964 +} + +type Object12036 @Directive21(argument61 : "stringValue48273") @Directive44(argument97 : ["stringValue48272"]) { + field64205: String + field64206: Object3840 + field64207: Enum781 + field64208: Enum2964 +} + +type Object12037 @Directive21(argument61 : "stringValue48275") @Directive44(argument97 : ["stringValue48274"]) { + field64209: String + field64210: String! + field64211: String! + field64212: String + field64213: Object12038 + field64225: Object12041 +} + +type Object12038 @Directive21(argument61 : "stringValue48277") @Directive44(argument97 : ["stringValue48276"]) { + field64214: [Union390] + field64222: String + field64223: String + field64224: String +} + +type Object12039 @Directive21(argument61 : "stringValue48280") @Directive44(argument97 : ["stringValue48279"]) { + field64215: String! + field64216: Boolean! + field64217: Boolean! + field64218: String! +} + +type Object1204 implements Interface5 @Directive22(argument62 : "stringValue6287") @Directive31 @Directive44(argument97 : ["stringValue6288", "stringValue6289"]) { + field5096: Enum10 @Directive37(argument95 : "stringValue6294") + field6733: [String] @Directive37(argument95 : "stringValue6293") + field6734: Object10 @Directive37(argument95 : "stringValue6295") + field76: String @Directive37(argument95 : "stringValue6290") + field77: String @Directive37(argument95 : "stringValue6291") + field78: String @Directive37(argument95 : "stringValue6292") +} + +type Object12040 @Directive21(argument61 : "stringValue48282") @Directive44(argument97 : ["stringValue48281"]) { + field64219: String! + field64220: String + field64221: Enum2965! +} + +type Object12041 @Directive21(argument61 : "stringValue48285") @Directive44(argument97 : ["stringValue48284"]) { + field64226: String! + field64227: String! + field64228: String! +} + +type Object12042 @Directive21(argument61 : "stringValue48287") @Directive44(argument97 : ["stringValue48286"]) { + field64229: String! + field64230: String! + field64231: String! + field64232: String + field64233: Boolean + field64234: Enum2964 +} + +type Object12043 @Directive21(argument61 : "stringValue48289") @Directive44(argument97 : ["stringValue48288"]) { + field64235: String! + field64236: String! + field64237: String + field64238: Boolean + field64239: Enum2964 +} + +type Object12044 @Directive21(argument61 : "stringValue48291") @Directive44(argument97 : ["stringValue48290"]) { + field64242: [Union391] + field64282: String +} + +type Object12045 @Directive21(argument61 : "stringValue48294") @Directive44(argument97 : ["stringValue48293"]) { + field64243: String! + field64244: Enum2964 +} + +type Object12046 @Directive21(argument61 : "stringValue48296") @Directive44(argument97 : ["stringValue48295"]) { + field64245: [Union392] + field64265: Boolean @deprecated + field64266: Boolean + field64267: Boolean + field64268: String + field64269: Enum2964 +} + +type Object12047 @Directive21(argument61 : "stringValue48299") @Directive44(argument97 : ["stringValue48298"]) { + field64246: String! + field64247: String! + field64248: Object12044 +} + +type Object12048 @Directive21(argument61 : "stringValue48301") @Directive44(argument97 : ["stringValue48300"]) { + field64249: String! + field64250: String! + field64251: Object12044 + field64252: String +} + +type Object12049 @Directive21(argument61 : "stringValue48303") @Directive44(argument97 : ["stringValue48302"]) { + field64253: String! + field64254: String! + field64255: Object12044 + field64256: Enum2964 +} + +type Object1205 @Directive22(argument62 : "stringValue6296") @Directive31 @Directive44(argument97 : ["stringValue6297", "stringValue6298"]) { + field6735: [Object1206!] @deprecated + field6741: Boolean + field6742: Enum307 + field6743: [Object474] + field6744: [Object502] +} + +type Object12050 @Directive21(argument61 : "stringValue48305") @Directive44(argument97 : ["stringValue48304"]) { + field64257: String! + field64258: String! + field64259: Object12044 + field64260: Enum2964 +} + +type Object12051 @Directive21(argument61 : "stringValue48307") @Directive44(argument97 : ["stringValue48306"]) { + field64261: String! + field64262: String! + field64263: Object12044 + field64264: Enum2964 +} + +type Object12052 @Directive21(argument61 : "stringValue48309") @Directive44(argument97 : ["stringValue48308"]) { + field64270: String! + field64271: String! + field64272: Enum2964 +} + +type Object12053 @Directive21(argument61 : "stringValue48311") @Directive44(argument97 : ["stringValue48310"]) { + field64273: String! + field64274: Enum2964 +} + +type Object12054 @Directive21(argument61 : "stringValue48313") @Directive44(argument97 : ["stringValue48312"]) { + field64275: String! + field64276: Enum2964 +} + +type Object12055 @Directive21(argument61 : "stringValue48315") @Directive44(argument97 : ["stringValue48314"]) { + field64277: Enum2966 + field64278: Enum2967 + field64279: Int @deprecated + field64280: Int @deprecated + field64281: Object3840 +} + +type Object12056 @Directive21(argument61 : "stringValue48319") @Directive44(argument97 : ["stringValue48318"]) { + field64285: Boolean + field64286: String + field64287: String + field64288: String +} + +type Object12057 @Directive21(argument61 : "stringValue48321") @Directive44(argument97 : ["stringValue48320"]) { + field64290: Scalar2! + field64291: Float + field64292: Object12031 + field64293: Int + field64294: Object12058 + field64324: Object12061 + field64328: String + field64329: Object11997 +} + +type Object12058 @Directive21(argument61 : "stringValue48323") @Directive44(argument97 : ["stringValue48322"]) { + field64295: Object12059 + field64304: Object12060 + field64322: Object12059 + field64323: Object12060 +} + +type Object12059 @Directive21(argument61 : "stringValue48325") @Directive44(argument97 : ["stringValue48324"]) { + field64296: String + field64297: Scalar2 + field64298: String + field64299: Boolean + field64300: Boolean + field64301: String + field64302: String + field64303: String +} + +type Object1206 @Directive20(argument58 : "stringValue6300", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6299") @Directive31 @Directive44(argument97 : ["stringValue6301", "stringValue6302"]) { + field6736: Int + field6737: ID! + field6738: Object1 + field6739: String + field6740: String +} + +type Object12060 @Directive21(argument61 : "stringValue48327") @Directive44(argument97 : ["stringValue48326"]) { + field64305: String + field64306: String + field64307: String + field64308: String + field64309: String + field64310: String + field64311: String + field64312: String + field64313: String + field64314: Boolean + field64315: String + field64316: String + field64317: String + field64318: String + field64319: String + field64320: String + field64321: Scalar2 +} + +type Object12061 @Directive21(argument61 : "stringValue48329") @Directive44(argument97 : ["stringValue48328"]) { + field64325: Float + field64326: Float + field64327: String +} + +type Object12062 @Directive21(argument61 : "stringValue48331") @Directive44(argument97 : ["stringValue48330"]) { + field64331: String + field64332: String + field64333: Object3832 +} + +type Object12063 @Directive21(argument61 : "stringValue48333") @Directive44(argument97 : ["stringValue48332"]) { + field64335: Object12001 + field64336: Object12064 + field64346: String + field64347: String + field64348: String + field64349: Scalar2 +} + +type Object12064 @Directive21(argument61 : "stringValue48335") @Directive44(argument97 : ["stringValue48334"]) { + field64337: Object12065 +} + +type Object12065 @Directive21(argument61 : "stringValue48337") @Directive44(argument97 : ["stringValue48336"]) { + field64338: Scalar2 + field64339: String + field64340: String + field64341: String + field64342: String + field64343: String + field64344: String + field64345: String +} + +type Object12066 @Directive21(argument61 : "stringValue48339") @Directive44(argument97 : ["stringValue48338"]) { + field64351: String + field64352: Float + field64353: String + field64354: Object12067 + field64357: String + field64358: String + field64359: Scalar2! + field64360: Boolean + field64361: Object12068 + field64365: String + field64366: Float + field64367: Float + field64368: String + field64369: Object11983 + field64370: [Object12069] + field64383: Int + field64384: Int + field64385: Scalar2 + field64386: Int + field64387: Float + field64388: Int + field64389: String + field64390: [Object12070] + field64398: String + field64399: Float + field64400: [Object12071] + field64403: [Object12072] + field64407: Enum2968 + field64408: Object12001 + field64409: String + field64410: String + field64411: Enum2969 + field64412: [String] + field64413: String + field64414: String + field64415: String + field64416: Object12069 + field64417: String + field64418: String + field64419: String + field64420: Boolean + field64421: String + field64422: Object12073 + field64426: Enum2970 + field64427: [String] + field64428: Object12074 + field64430: Float + field64431: String + field64432: Enum2971 + field64433: [String] + field64434: String + field64435: Float + field64436: String + field64437: String + field64438: Object12003 + field64439: String + field64440: Object12075 + field64444: Object12076 + field64448: String + field64449: Boolean +} + +type Object12067 @Directive21(argument61 : "stringValue48341") @Directive44(argument97 : ["stringValue48340"]) { + field64355: String + field64356: Boolean +} + +type Object12068 @Directive21(argument61 : "stringValue48343") @Directive44(argument97 : ["stringValue48342"]) { + field64362: String + field64363: String + field64364: String +} + +type Object12069 @Directive21(argument61 : "stringValue48345") @Directive44(argument97 : ["stringValue48344"]) { + field64371: Scalar2 + field64372: String + field64373: String + field64374: String + field64375: String + field64376: String + field64377: String + field64378: String + field64379: String + field64380: String + field64381: String + field64382: Int +} + +type Object1207 @Directive22(argument62 : "stringValue6307") @Directive31 @Directive44(argument97 : ["stringValue6308", "stringValue6309"]) { + field6745: Object1208 +} + +type Object12070 @Directive21(argument61 : "stringValue48347") @Directive44(argument97 : ["stringValue48346"]) { + field64391: Scalar4 + field64392: Scalar4 + field64393: Int + field64394: Scalar2 + field64395: Boolean + field64396: String + field64397: String +} + +type Object12071 @Directive21(argument61 : "stringValue48349") @Directive44(argument97 : ["stringValue48348"]) { + field64401: Object12069 + field64402: Object11941 +} + +type Object12072 @Directive21(argument61 : "stringValue48351") @Directive44(argument97 : ["stringValue48350"]) { + field64404: String + field64405: String + field64406: String +} + +type Object12073 @Directive21(argument61 : "stringValue48355") @Directive44(argument97 : ["stringValue48354"]) { + field64423: String + field64424: String + field64425: String +} + +type Object12074 @Directive21(argument61 : "stringValue48358") @Directive44(argument97 : ["stringValue48357"]) { + field64429: [Object12069] +} + +type Object12075 @Directive21(argument61 : "stringValue48361") @Directive44(argument97 : ["stringValue48360"]) { + field64441: [String] + field64442: [String] + field64443: [String] +} + +type Object12076 @Directive21(argument61 : "stringValue48363") @Directive44(argument97 : ["stringValue48362"]) { + field64445: Enum2972 + field64446: Enum2972 + field64447: Enum2972 +} + +type Object12077 @Directive21(argument61 : "stringValue48366") @Directive44(argument97 : ["stringValue48365"]) { + field64451: Object11995 + field64452: Object12029 + field64453: Object12056 + field64454: Boolean + field64455: Object12078 + field64464: Object12079 + field64476: Object12080 +} + +type Object12078 @Directive21(argument61 : "stringValue48368") @Directive44(argument97 : ["stringValue48367"]) { + field64456: Int + field64457: Int + field64458: Int + field64459: String + field64460: String + field64461: Scalar2 + field64462: [String] + field64463: String +} + +type Object12079 @Directive21(argument61 : "stringValue48370") @Directive44(argument97 : ["stringValue48369"]) { + field64465: Boolean + field64466: String + field64467: String + field64468: String + field64469: String + field64470: Object12058 + field64471: Object12059 + field64472: String + field64473: [Object11935] + field64474: Boolean + field64475: Boolean +} + +type Object1208 @Directive2 @Directive22(argument62 : "stringValue6310") @Directive31 @Directive44(argument97 : ["stringValue6311", "stringValue6312", "stringValue6313"]) @Directive45(argument98 : ["stringValue6314"]) { + field6746(argument105: Boolean, argument106: Enum308): Object1209 @Directive14(argument51 : "stringValue6315") + field6759(argument107: Boolean, argument108: Boolean, argument109: Boolean): [Object1209] @Directive14(argument51 : "stringValue6334") + field6760: Object6137 +} + +type Object12080 @Directive21(argument61 : "stringValue48372") @Directive44(argument97 : ["stringValue48371"]) { + field64477: String + field64478: [Object12020] + field64479: Boolean +} + +type Object12081 @Directive21(argument61 : "stringValue48374") @Directive44(argument97 : ["stringValue48373"]) { + field64481: String! + field64482: String + field64483: String + field64484: String +} + +type Object12082 @Directive21(argument61 : "stringValue48376") @Directive44(argument97 : ["stringValue48375"]) { + field64486: String + field64487: String + field64488: String + field64489: String +} + +type Object12083 @Directive21(argument61 : "stringValue48378") @Directive44(argument97 : ["stringValue48377"]) { + field64491: String + field64492: String + field64493: String + field64494: Scalar2 + field64495: String + field64496: String + field64497: String + field64498: String +} + +type Object12084 @Directive21(argument61 : "stringValue48380") @Directive44(argument97 : ["stringValue48379"]) { + field64500: Float + field64501: String @deprecated + field64502: String @deprecated + field64503: String +} + +type Object12085 @Directive21(argument61 : "stringValue48382") @Directive44(argument97 : ["stringValue48381"]) { + field64505: String + field64506: String + field64507: Object3832 + field64508: String +} + +type Object12086 @Directive21(argument61 : "stringValue48384") @Directive44(argument97 : ["stringValue48383"]) { + field64512: Object3832 + field64513: String +} + +type Object12087 @Directive21(argument61 : "stringValue48386") @Directive44(argument97 : ["stringValue48385"]) { + field64515: [Object12088] + field64538: Enum2975 + field64539: Boolean + field64540: Int + field64541: Float + field64542: Float + field64543: String +} + +type Object12088 @Directive21(argument61 : "stringValue48388") @Directive44(argument97 : ["stringValue48387"]) { + field64516: Float + field64517: Float + field64518: Enum2973 + field64519: String + field64520: String + field64521: String + field64522: [Object12089] + field64525: Boolean + field64526: [Object12090] + field64534: String + field64535: Float + field64536: Int + field64537: Int +} + +type Object12089 @Directive21(argument61 : "stringValue48391") @Directive44(argument97 : ["stringValue48390"]) { + field64523: String + field64524: Enum2974 +} + +type Object1209 @Directive22(argument62 : "stringValue6319") @Directive31 @Directive44(argument97 : ["stringValue6320", "stringValue6321"]) { + field6747: ID! + field6748: Enum309 + field6749: [Object1210] +} + +type Object12090 @Directive21(argument61 : "stringValue48394") @Directive44(argument97 : ["stringValue48393"]) { + field64527: String + field64528: Union184 + field64529: Boolean @deprecated + field64530: Boolean @deprecated + field64531: String + field64532: String + field64533: Boolean +} + +type Object12091 @Directive21(argument61 : "stringValue48397") @Directive44(argument97 : ["stringValue48396"]) { + field64546: String + field64547: String + field64548: String + field64549: String + field64550: String + field64551: String + field64552: String + field64553: Scalar5 + field64554: Object11939 + field64555: String! + field64556: String + field64557: String +} + +type Object12092 @Directive21(argument61 : "stringValue48399") @Directive44(argument97 : ["stringValue48398"]) { + field64559: Enum2976 + field64560: Boolean + field64561: String + field64562: String + field64563: String + field64564: Enum2977 + field64565: Int + field64566: Enum2978 + field64567: String + field64568: Boolean + field64569: String + field64570: Boolean + field64571: Enum2979 + field64572: Boolean + field64573: Object12093 + field64577: String + field64578: Object3901 + field64579: String + field64580: Boolean + field64581: String + field64582: Boolean + field64583: String +} + +type Object12093 @Directive21(argument61 : "stringValue48405") @Directive44(argument97 : ["stringValue48404"]) { + field64574: String + field64575: String + field64576: Int +} + +type Object12094 @Directive21(argument61 : "stringValue48407") @Directive44(argument97 : ["stringValue48406"]) { + field64585: String + field64586: String + field64587: [Object12009] + field64588: Scalar2! + field64589: Float + field64590: Float + field64591: String + field64592: [Object11984] + field64593: Scalar2 + field64594: Scalar2 + field64595: String + field64596: Scalar2 + field64597: String + field64598: String + field64599: String + field64600: String + field64601: [Object12010] + field64602: String + field64603: String + field64604: Scalar2 + field64605: String + field64606: [Object12066] + field64607: Object11937 + field64608: String + field64609: [String] +} + +type Object12095 @Directive21(argument61 : "stringValue48409") @Directive44(argument97 : ["stringValue48408"]) { + field64611: String + field64612: String + field64613: String +} + +type Object12096 @Directive21(argument61 : "stringValue48411") @Directive44(argument97 : ["stringValue48410"]) { + field64616: Float + field64617: Float +} + +type Object12097 @Directive21(argument61 : "stringValue48413") @Directive44(argument97 : ["stringValue48412"]) { + field64619: String + field64620: String + field64621: String + field64622: String + field64623: Object11939 + field64624: Object11939 + field64625: Object11939 + field64626: Object11943 + field64627: String + field64628: Object11941 + field64629: Object11941 + field64630: String + field64631: String + field64632: Object12098 + field64666: String + field64667: [Object11939] + field64668: [Object11939] + field64669: [Object11939] + field64670: Object11964 + field64671: String + field64672: String + field64673: [Object11964] + field64674: String + field64675: Object11939 + field64676: String + field64677: String + field64678: String + field64679: String + field64680: String + field64681: Float + field64682: Object12103 + field64709: Object3832 + field64710: String + field64711: Boolean + field64712: String + field64713: Enum2992 +} + +type Object12098 @Directive21(argument61 : "stringValue48415") @Directive44(argument97 : ["stringValue48414"]) { + field64633: Object12099 + field64663: Object12099 + field64664: Object12099 + field64665: Object12099 +} + +type Object12099 @Directive21(argument61 : "stringValue48417") @Directive44(argument97 : ["stringValue48416"]) { + field64634: Object12100 + field64640: Object12100 + field64641: Object12101 + field64646: Object12102 +} + +type Object121 @Directive21(argument61 : "stringValue438") @Directive44(argument97 : ["stringValue437"]) { + field777: String! + field778: Enum61 +} + +type Object1210 @Directive22(argument62 : "stringValue6325") @Directive31 @Directive44(argument97 : ["stringValue6326", "stringValue6327"]) { + field6750: ID! + field6751: Enum310 + field6752: Enum311 + field6753: Boolean + field6754: String + field6755: String + field6756: Boolean + field6757: String + field6758: String +} + +type Object12100 @Directive21(argument61 : "stringValue48419") @Directive44(argument97 : ["stringValue48418"]) { + field64635: Enum2980 + field64636: Enum2981 + field64637: Enum2982 + field64638: String + field64639: Enum2983 +} + +type Object12101 @Directive21(argument61 : "stringValue48425") @Directive44(argument97 : ["stringValue48424"]) { + field64642: Boolean + field64643: Boolean + field64644: Int + field64645: Boolean +} + +type Object12102 @Directive21(argument61 : "stringValue48427") @Directive44(argument97 : ["stringValue48426"]) { + field64647: String + field64648: String + field64649: String + field64650: String + field64651: Enum2984 + field64652: Enum2985 + field64653: String + field64654: String + field64655: Enum2986 + field64656: Enum2987 + field64657: String + field64658: String + field64659: String + field64660: String + field64661: String + field64662: Object11948 +} + +type Object12103 @Directive21(argument61 : "stringValue48433") @Directive44(argument97 : ["stringValue48432"]) { + field64683: Enum2988 + field64684: [Union393] + field64699: Scalar1 + field64700: Enum2991 + field64701: Scalar1 + field64702: Enum2991 + field64703: Scalar1 + field64704: Enum2991 + field64705: String + field64706: String + field64707: Scalar1 + field64708: Enum2991 +} + +type Object12104 @Directive21(argument61 : "stringValue48437") @Directive44(argument97 : ["stringValue48436"]) { + field64685: Boolean + field64686: Boolean + field64687: Boolean +} + +type Object12105 @Directive21(argument61 : "stringValue48439") @Directive44(argument97 : ["stringValue48438"]) { + field64688: String + field64689: Object12106 +} + +type Object12106 @Directive21(argument61 : "stringValue48441") @Directive44(argument97 : ["stringValue48440"]) { + field64690: String + field64691: String + field64692: String +} + +type Object12107 @Directive21(argument61 : "stringValue48443") @Directive44(argument97 : ["stringValue48442"]) { + field64693: Scalar2 +} + +type Object12108 @Directive21(argument61 : "stringValue48445") @Directive44(argument97 : ["stringValue48444"]) { + field64694: Boolean + field64695: String +} + +type Object12109 @Directive21(argument61 : "stringValue48447") @Directive44(argument97 : ["stringValue48446"]) { + field64696: Enum2989 + field64697: Enum2990 +} + +type Object1211 @Directive22(argument62 : "stringValue6335") @Directive31 @Directive44(argument97 : ["stringValue6336", "stringValue6337"]) { + field6761: Object878 + field6762: Object10 + field6763: String +} + +type Object12110 @Directive21(argument61 : "stringValue48451") @Directive44(argument97 : ["stringValue48450"]) { + field64698: Scalar2 +} + +type Object12111 @Directive21(argument61 : "stringValue48455") @Directive44(argument97 : ["stringValue48454"]) { + field64715: String + field64716: Boolean + field64717: Object3832 + field64718: String + field64719: String + field64720: String +} + +type Object12112 @Directive21(argument61 : "stringValue48457") @Directive44(argument97 : ["stringValue48456"]) { + field64722: String! + field64723: String + field64724: String + field64725: String + field64726: Scalar2 + field64727: Object11939 + field64728: Object12001 + field64729: String +} + +type Object12113 @Directive21(argument61 : "stringValue48459") @Directive44(argument97 : ["stringValue48458"]) { + field64731: String + field64732: String + field64733: String + field64734: String + field64735: Object11939 + field64736: Object3832 +} + +type Object12114 @Directive21(argument61 : "stringValue48461") @Directive44(argument97 : ["stringValue48460"]) { + field64738: String + field64739: String! + field64740: String + field64741: String + field64742: String + field64743: String + field64744: String + field64745: String +} + +type Object12115 @Directive21(argument61 : "stringValue48463") @Directive44(argument97 : ["stringValue48462"]) { + field64747: String + field64748: String + field64749: String + field64750: String + field64751: Object11939 + field64752: Object11939 + field64753: Object11939 + field64754: Object11943 + field64755: String + field64756: String + field64757: String + field64758: Object3832 + field64759: [Object12116] + field64776: Scalar2 + field64777: [Object11939] + field64778: [Object11939] + field64779: [Object11939] +} + +type Object12116 @Directive21(argument61 : "stringValue48465") @Directive44(argument97 : ["stringValue48464"]) { + field64760: String + field64761: String + field64762: String + field64763: String + field64764: Boolean + field64765: Boolean + field64766: [String] + field64767: String + field64768: [Object12117] +} + +type Object12117 @Directive21(argument61 : "stringValue48467") @Directive44(argument97 : ["stringValue48466"]) { + field64769: String + field64770: Enum2993 + field64771: String + field64772: String + field64773: String + field64774: String + field64775: String +} + +type Object12118 @Directive21(argument61 : "stringValue48470") @Directive44(argument97 : ["stringValue48469"]) { + field64781: Scalar2! + field64782: Enum2994 + field64783: String + field64784: String + field64785: String + field64786: String + field64787: String + field64788: String + field64789: [String] + field64790: String + field64791: Scalar2 + field64792: String + field64793: String + field64794: String + field64795: String + field64796: String + field64797: [Object12119] + field64803: String + field64804: String + field64805: String + field64806: [Object11984] + field64807: Int +} + +type Object12119 @Directive21(argument61 : "stringValue48473") @Directive44(argument97 : ["stringValue48472"]) { + field64798: Enum2995! + field64799: Scalar2! + field64800: Boolean! + field64801: String + field64802: Enum2996 +} + +type Object1212 @Directive22(argument62 : "stringValue6338") @Directive31 @Directive44(argument97 : ["stringValue6339", "stringValue6340"]) { + field6764: Object595 + field6765: Enum312 + field6766: Boolean +} + +type Object12120 @Directive21(argument61 : "stringValue48477") @Directive44(argument97 : ["stringValue48476"]) { + field64809: String + field64810: String + field64811: String + field64812: String + field64813: String + field64814: String + field64815: String + field64816: String + field64817: Object11939 + field64818: Object11939 + field64819: Object11939 + field64820: Object11943 + field64821: String + field64822: String + field64823: Object3832 + field64824: Object3832 + field64825: String + field64826: String + field64827: String + field64828: [Object12121] + field64832: Boolean + field64833: String + field64834: String + field64835: String + field64836: Int + field64837: String + field64838: String + field64839: String + field64840: String + field64841: String + field64842: String +} + +type Object12121 @Directive21(argument61 : "stringValue48479") @Directive44(argument97 : ["stringValue48478"]) { + field64829: String + field64830: Int + field64831: Int +} + +type Object12122 @Directive21(argument61 : "stringValue48481") @Directive44(argument97 : ["stringValue48480"]) { + field64844: Scalar2! + field64845: String + field64846: String + field64847: String + field64848: String + field64849: Object12001 + field64850: String + field64851: String + field64852: String +} + +type Object12123 @Directive21(argument61 : "stringValue48483") @Directive44(argument97 : ["stringValue48482"]) { + field64854: String + field64855: String + field64856: String + field64857: String + field64858: [Object12124] + field64866: String + field64867: String +} + +type Object12124 @Directive21(argument61 : "stringValue48485") @Directive44(argument97 : ["stringValue48484"]) { + field64859: [Object12090] + field64860: Enum2997 + field64861: Enum2998 + field64862: String + field64863: String + field64864: String + field64865: String +} + +type Object12125 @Directive21(argument61 : "stringValue48489") @Directive44(argument97 : ["stringValue48488"]) { + field64869: Object12126 + field64880: Object12127 + field64883: Object12029 +} + +type Object12126 @Directive21(argument61 : "stringValue48491") @Directive44(argument97 : ["stringValue48490"]) { + field64870: Scalar2 + field64871: String + field64872: Float + field64873: Int + field64874: Int + field64875: String + field64876: String + field64877: String + field64878: Boolean + field64879: Int +} + +type Object12127 @Directive21(argument61 : "stringValue48493") @Directive44(argument97 : ["stringValue48492"]) { + field64881: Scalar2 + field64882: Float +} + +type Object12128 @Directive21(argument61 : "stringValue48495") @Directive44(argument97 : ["stringValue48494"]) { + field64885: String + field64886: String + field64887: [Object12129] + field64900: String + field64901: Boolean +} + +type Object12129 @Directive21(argument61 : "stringValue48497") @Directive44(argument97 : ["stringValue48496"]) { + field64888: String + field64889: String + field64890: String + field64891: [Object3833] + field64892: Object12130 + field64897: String + field64898: String + field64899: String +} + +type Object1213 @Directive22(argument62 : "stringValue6344") @Directive31 @Directive44(argument97 : ["stringValue6345", "stringValue6346"]) { + field6767: String + field6768: String + field6769: [Object830!] + field6770: String +} + +type Object12130 @Directive21(argument61 : "stringValue48499") @Directive44(argument97 : ["stringValue48498"]) { + field64893: String + field64894: String + field64895: String + field64896: String +} + +type Object12131 @Directive21(argument61 : "stringValue48501") @Directive44(argument97 : ["stringValue48500"]) { + field64903: String + field64904: String + field64905: String + field64906: String + field64907: String +} + +type Object12132 @Directive21(argument61 : "stringValue48503") @Directive44(argument97 : ["stringValue48502"]) { + field64909: String + field64910: String + field64911: String + field64912: String + field64913: Object11939 + field64914: Object11939 + field64915: Object11939 + field64916: Object11939 + field64917: String + field64918: Object12133 + field64923: String + field64924: String + field64925: Object3832 + field64926: String + field64927: String + field64928: String +} + +type Object12133 @Directive21(argument61 : "stringValue48505") @Directive44(argument97 : ["stringValue48504"]) { + field64919: Int + field64920: Int + field64921: Int + field64922: Int +} + +type Object12134 @Directive21(argument61 : "stringValue48507") @Directive44(argument97 : ["stringValue48506"]) { + field64930: String + field64931: String + field64932: String + field64933: [Object12135] + field64949: String + field64950: Object11937 + field64951: Object11939 + field64952: Object11939 +} + +type Object12135 @Directive21(argument61 : "stringValue48509") @Directive44(argument97 : ["stringValue48508"]) { + field64934: String + field64935: String + field64936: Object12069 + field64937: Object11941 + field64938: Scalar2 + field64939: String + field64940: Float + field64941: Scalar2 + field64942: Float + field64943: Object12001 + field64944: String + field64945: String + field64946: Object12069 + field64947: Boolean + field64948: Int +} + +type Object12136 @Directive21(argument61 : "stringValue48511") @Directive44(argument97 : ["stringValue48510"]) { + field64954: String +} + +type Object12137 @Directive21(argument61 : "stringValue48513") @Directive44(argument97 : ["stringValue48512"]) { + field64956: String + field64957: Object3832 +} + +type Object12138 @Directive21(argument61 : "stringValue48515") @Directive44(argument97 : ["stringValue48514"]) { + field64959: String + field64960: String + field64961: String + field64962: String + field64963: Boolean + field64964: String + field64965: String @deprecated + field64966: Object3832 + field64967: [Object12139] + field64979: Object11941 + field64980: Object12139 + field64981: Object12139 + field64982: String + field64983: String + field64984: String + field64985: String + field64986: Enum2999 + field64987: Enum2999 + field64988: Enum2999 + field64989: Enum2999 + field64990: Float + field64991: Object12139 + field64992: String @deprecated + field64993: Enum2945 + field64994: String + field64995: Object12139 @deprecated + field64996: Object12140 + field65000: Object11976 + field65001: Object12141 + field65004: String + field65005: String + field65006: String + field65007: String +} + +type Object12139 @Directive21(argument61 : "stringValue48517") @Directive44(argument97 : ["stringValue48516"]) { + field64968: Scalar2 + field64969: String + field64970: String + field64971: String + field64972: String + field64973: String + field64974: String + field64975: String + field64976: String + field64977: String + field64978: String +} + +type Object1214 @Directive22(argument62 : "stringValue6347") @Directive31 @Directive44(argument97 : ["stringValue6348", "stringValue6349"]) { + field6771: Enum10 + field6772: Object10 + field6773: Object449 + field6774: Object10 + field6775: Object1 +} + +type Object12140 @Directive21(argument61 : "stringValue48520") @Directive44(argument97 : ["stringValue48519"]) { + field64997: String + field64998: String + field64999: String +} + +type Object12141 @Directive21(argument61 : "stringValue48522") @Directive44(argument97 : ["stringValue48521"]) { + field65002: String + field65003: String +} + +type Object12142 @Directive21(argument61 : "stringValue48524") @Directive44(argument97 : ["stringValue48523"]) { + field65009: String + field65010: String + field65011: Object12139 + field65012: String + field65013: Boolean + field65014: String + field65015: String @deprecated + field65016: Object3832 + field65017: String + field65018: String + field65019: Enum2999 + field65020: Enum2999 + field65021: Float + field65022: Object12139 + field65023: Object12139 + field65024: Object12139 + field65025: String + field65026: Object12140 + field65027: Object11976 + field65028: String + field65029: String +} + +type Object12143 @Directive21(argument61 : "stringValue48526") @Directive44(argument97 : ["stringValue48525"]) { + field65031: Enum3000 + field65032: String + field65033: Enum3001 +} + +type Object12144 @Directive21(argument61 : "stringValue48530") @Directive44(argument97 : ["stringValue48529"]) { + field65035: [Object12145] + field65099: Boolean + field65100: String + field65101: String + field65102: String! + field65103: String + field65104: String + field65105: [Object12145] + field65106: String + field65107: String + field65108: String + field65109: String + field65110: String + field65111: [Object12150] + field65125: [Object11935] + field65126: String + field65127: [String] + field65128: String + field65129: Int + field65130: String + field65131: String + field65132: Enum3002 + field65133: String + field65134: Object12151 + field65137: Object12152 + field65140: Interface152 +} + +type Object12145 @Directive21(argument61 : "stringValue48532") @Directive44(argument97 : ["stringValue48531"]) { + field65036: Boolean + field65037: String + field65038: String + field65039: String + field65040: [Object12090] + field65041: Object12146 + field65061: String + field65062: String + field65063: String + field65064: String + field65065: String + field65066: String + field65067: String + field65068: String + field65069: [Object12144] + field65070: [String] + field65071: String + field65072: Int + field65073: Boolean + field65074: Boolean + field65075: String + field65076: String + field65077: String + field65078: Int + field65079: String + field65080: [String] + field65081: String + field65082: String + field65083: Enum2997 + field65084: Boolean + field65085: String + field65086: Object12148 + field65096: Object3832 + field65097: String + field65098: Interface152 +} + +type Object12146 @Directive21(argument61 : "stringValue48534") @Directive44(argument97 : ["stringValue48533"]) { + field65042: [Int] + field65043: Int + field65044: Int + field65045: Int + field65046: [Object12147] + field65050: String + field65051: String + field65052: Int + field65053: Boolean + field65054: Boolean + field65055: [Int] + field65056: [String] + field65057: [String] + field65058: Int + field65059: [String] + field65060: [String] +} + +type Object12147 @Directive21(argument61 : "stringValue48536") @Directive44(argument97 : ["stringValue48535"]) { + field65047: String + field65048: String + field65049: Boolean +} + +type Object12148 @Directive21(argument61 : "stringValue48538") @Directive44(argument97 : ["stringValue48537"]) { + field65087: Object12149 +} + +type Object12149 @Directive21(argument61 : "stringValue48540") @Directive44(argument97 : ["stringValue48539"]) { + field65088: Int + field65089: Int + field65090: Int + field65091: Int + field65092: String + field65093: Int + field65094: Int + field65095: [Object12090] +} + +type Object1215 @Directive22(argument62 : "stringValue6350") @Directive31 @Directive44(argument97 : ["stringValue6351", "stringValue6352"]) { + field6776: String + field6777: Object450 + field6778: String + field6779: Object450 + field6780: [Object1216] +} + +type Object12150 @Directive21(argument61 : "stringValue48542") @Directive44(argument97 : ["stringValue48541"]) { + field65112: [Object12145] + field65113: Boolean + field65114: String + field65115: String + field65116: String + field65117: String + field65118: String + field65119: [Object12145] + field65120: String + field65121: String + field65122: String + field65123: String + field65124: String +} + +type Object12151 @Directive21(argument61 : "stringValue48545") @Directive44(argument97 : ["stringValue48544"]) { + field65135: Int + field65136: [String] +} + +type Object12152 @Directive21(argument61 : "stringValue48547") @Directive44(argument97 : ["stringValue48546"]) { + field65138: Int + field65139: Boolean +} + +type Object12153 @Directive21(argument61 : "stringValue48550") @Directive44(argument97 : ["stringValue48549"]) { + field65143: String + field65144: String + field65145: String + field65146: String + field65147: String + field65148: Object3832 + field65149: String + field65150: Object12154 + field65159: String + field65160: String + field65161: String + field65162: String + field65163: String + field65164: Int + field65165: Int + field65166: Scalar1 + field65167: Scalar2 + field65168: Enum3004 +} + +type Object12154 @Directive21(argument61 : "stringValue48552") @Directive44(argument97 : ["stringValue48551"]) { + field65151: String + field65152: String + field65153: String + field65154: String + field65155: Scalar2 + field65156: Scalar2 + field65157: Scalar2 + field65158: Scalar2 +} + +type Object12155 @Directive21(argument61 : "stringValue48555") @Directive44(argument97 : ["stringValue48554"]) { + field65170: String + field65171: String + field65172: Object12139 + field65173: String + field65174: String + field65175: Float + field65176: Int + field65177: String + field65178: String + field65179: String + field65180: String + field65181: Scalar2 + field65182: Int + field65183: String + field65184: String +} + +type Object12156 @Directive21(argument61 : "stringValue48557") @Directive44(argument97 : ["stringValue48556"]) { + field65186: String + field65187: String + field65188: String + field65189: Object12139 + field65190: [Object12142] + field65191: Boolean + field65192: Boolean + field65193: String + field65194: Object12139 + field65195: Object12139 + field65196: Object12139 + field65197: String + field65198: Int +} + +type Object12157 @Directive21(argument61 : "stringValue48559") @Directive44(argument97 : ["stringValue48558"]) { + field65200: String + field65201: String + field65202: String + field65203: Enum3005 + field65204: Object12158 + field65207: Object12159 + field65209: String + field65210: Object12139 + field65211: Object12139 + field65212: Object12139 + field65213: Object12139 + field65214: Object12076 +} + +type Object12158 @Directive21(argument61 : "stringValue48562") @Directive44(argument97 : ["stringValue48561"]) { + field65205: String + field65206: String +} + +type Object12159 @Directive21(argument61 : "stringValue48564") @Directive44(argument97 : ["stringValue48563"]) { + field65208: String +} + +type Object1216 @Directive22(argument62 : "stringValue6353") @Directive31 @Directive44(argument97 : ["stringValue6354", "stringValue6355"]) { + field6781: Object480 + field6782: Object480 + field6783: [Object480] + field6784: Object1 +} + +type Object12160 @Directive21(argument61 : "stringValue48566") @Directive44(argument97 : ["stringValue48565"]) { + field65216: Enum3006 + field65217: [Object12161] +} + +type Object12161 @Directive21(argument61 : "stringValue48569") @Directive44(argument97 : ["stringValue48568"]) { + field65218: String + field65219: String + field65220: [Object12066] + field65221: Object11937 +} + +type Object12162 @Directive21(argument61 : "stringValue48571") @Directive44(argument97 : ["stringValue48570"]) { + field65223: String + field65224: String + field65225: String + field65226: String +} + +type Object12163 @Directive21(argument61 : "stringValue48573") @Directive44(argument97 : ["stringValue48572"]) { + field65228: Int + field65229: String + field65230: Int + field65231: String + field65232: String + field65233: String + field65234: String + field65235: String + field65236: String +} + +type Object12164 @Directive21(argument61 : "stringValue48575") @Directive44(argument97 : ["stringValue48574"]) { + field65238: String + field65239: String + field65240: String + field65241: String +} + +type Object12165 @Directive21(argument61 : "stringValue48578") @Directive44(argument97 : ["stringValue48577"]) { + field65244: Scalar2! + field65245: String + field65246: String + field65247: String + field65248: [Object12119] + field65249: String +} + +type Object12166 @Directive21(argument61 : "stringValue48580") @Directive44(argument97 : ["stringValue48579"]) { + field65251: [Object12167] + field65262: String + field65263: String + field65264: String! + field65265: String + field65266: String + field65267: Enum3009 +} + +type Object12167 @Directive21(argument61 : "stringValue48582") @Directive44(argument97 : ["stringValue48581"]) { + field65252: Boolean + field65253: String + field65254: String + field65255: String + field65256: [Object12090] + field65257: String + field65258: Int + field65259: String + field65260: String + field65261: Enum3008 +} + +type Object12168 @Directive21(argument61 : "stringValue48586") @Directive44(argument97 : ["stringValue48585"]) { + field65269: String + field65270: String + field65271: String + field65272: String + field65273: Object11939 + field65274: Object11939 + field65275: Object11939 + field65276: Object11939 + field65277: String + field65278: Object12133 + field65279: String + field65280: String + field65281: Object3832 + field65282: String + field65283: String + field65284: String +} + +type Object12169 @Directive21(argument61 : "stringValue48588") @Directive44(argument97 : ["stringValue48587"]) { + field65286: Enum3010 + field65287: Object12077 + field65288: Object12170 + field65292: String + field65293: String +} + +type Object1217 @Directive22(argument62 : "stringValue6356") @Directive31 @Directive44(argument97 : ["stringValue6357", "stringValue6358"]) { + field6785: [Object830!] + field6786: String + field6787: String + field6788: String + field6789: Interface3 + field6790: String + field6791: String +} + +type Object12170 @Directive21(argument61 : "stringValue48591") @Directive44(argument97 : ["stringValue48590"]) { + field65289: String + field65290: String + field65291: String +} + +type Object12171 @Directive21(argument61 : "stringValue48593") @Directive44(argument97 : ["stringValue48592"]) { + field65295: String + field65296: String + field65297: String + field65298: String + field65299: String + field65300: String + field65301: String +} + +type Object12172 @Directive21(argument61 : "stringValue48595") @Directive44(argument97 : ["stringValue48594"]) { + field65303: String + field65304: String + field65305: String + field65306: Object3832 + field65307: Object12139 +} + +type Object12173 @Directive21(argument61 : "stringValue48597") @Directive44(argument97 : ["stringValue48596"]) { + field65309: String + field65310: String + field65311: Object3832 + field65312: String +} + +type Object12174 @Directive21(argument61 : "stringValue48599") @Directive44(argument97 : ["stringValue48598"]) { + field65314: String + field65315: String + field65316: String + field65317: String + field65318: String + field65319: String + field65320: Object12069 + field65321: Object12066 + field65322: Object3832 +} + +type Object12175 @Directive21(argument61 : "stringValue48601") @Directive44(argument97 : ["stringValue48600"]) { + field65324: String + field65325: String + field65326: String + field65327: String + field65328: Object11939 + field65329: [Object11939] + field65330: String + field65331: String + field65332: String + field65333: String + field65334: String + field65335: String + field65336: [Object12176] + field65341: String +} + +type Object12176 @Directive21(argument61 : "stringValue48603") @Directive44(argument97 : ["stringValue48602"]) { + field65337: Scalar2 + field65338: Enum3011 + field65339: String + field65340: [Object12011] +} + +type Object12177 @Directive21(argument61 : "stringValue48606") @Directive44(argument97 : ["stringValue48605"]) { + field65344: String + field65345: [Int] @deprecated + field65346: Object3832 + field65347: Boolean + field65348: String +} + +type Object12178 @Directive21(argument61 : "stringValue48608") @Directive44(argument97 : ["stringValue48607"]) { + field65350: String + field65351: [Object12179] + field65365: Object11937 +} + +type Object12179 @Directive21(argument61 : "stringValue48610") @Directive44(argument97 : ["stringValue48609"]) { + field65352: String + field65353: String + field65354: Object3832 + field65355: Object11939 + field65356: String + field65357: Object12139 + field65358: String + field65359: Object12140 + field65360: String + field65361: String + field65362: [Enum2944] + field65363: [Object3833] + field65364: Interface152 +} + +type Object1218 @Directive22(argument62 : "stringValue6359") @Directive31 @Directive44(argument97 : ["stringValue6360", "stringValue6361"]) { + field6792: Object371 + field6793: String + field6794: Int + field6795: Boolean + field6796: Interface3 + field6797: String + field6798: String + field6799: Object452 + field6800: String + field6801: Boolean + field6802: Boolean + field6803: String + field6804: Int + field6805: String + field6806: String + field6807: String + field6808: String +} + +type Object12180 @Directive21(argument61 : "stringValue48612") @Directive44(argument97 : ["stringValue48611"]) { + field65367: String + field65368: [Object12181] + field65378: [Object12182] +} + +type Object12181 @Directive21(argument61 : "stringValue48614") @Directive44(argument97 : ["stringValue48613"]) { + field65369: String + field65370: String + field65371: String + field65372: String + field65373: String + field65374: String + field65375: String + field65376: String + field65377: [Object3833] +} + +type Object12182 @Directive21(argument61 : "stringValue48616") @Directive44(argument97 : ["stringValue48615"]) { + field65379: String + field65380: String + field65381: Enum3012 + field65382: [Object12183] +} + +type Object12183 @Directive21(argument61 : "stringValue48619") @Directive44(argument97 : ["stringValue48618"]) { + field65383: String + field65384: String + field65385: String + field65386: String + field65387: Object3832 +} + +type Object12184 @Directive21(argument61 : "stringValue48621") @Directive44(argument97 : ["stringValue48620"]) { + field65389: String + field65390: [Object11975] +} + +type Object12185 @Directive21(argument61 : "stringValue48623") @Directive44(argument97 : ["stringValue48622"]) { + field65392: String! @deprecated + field65393: Object12186 + field65416: Object12195 + field65429: String! + field65430: Object12198 + field65484: Object12215 +} + +type Object12186 @Directive21(argument61 : "stringValue48625") @Directive44(argument97 : ["stringValue48624"]) { + field65394: [Object12187] + field65399: Object12188 + field65406: Object12188 + field65407: String + field65408: Object12191 +} + +type Object12187 @Directive21(argument61 : "stringValue48627") @Directive44(argument97 : ["stringValue48626"]) { + field65395: String + field65396: String + field65397: String + field65398: String +} + +type Object12188 @Directive21(argument61 : "stringValue48629") @Directive44(argument97 : ["stringValue48628"]) { + field65400: Object12189 + field65404: Object12190 +} + +type Object12189 @Directive21(argument61 : "stringValue48631") @Directive44(argument97 : ["stringValue48630"]) { + field65401: String + field65402: String + field65403: Boolean +} + +type Object1219 @Directive22(argument62 : "stringValue6362") @Directive31 @Directive44(argument97 : ["stringValue6363", "stringValue6364"]) { + field6809: Scalar3 + field6810: Scalar3 + field6811: Int + field6812: String + field6813: String + field6814: ID +} + +type Object12190 @Directive21(argument61 : "stringValue48633") @Directive44(argument97 : ["stringValue48632"]) { + field65405: String +} + +type Object12191 @Directive21(argument61 : "stringValue48635") @Directive44(argument97 : ["stringValue48634"]) { + field65409: String + field65410: Enum3013 + field65411: Union394 +} + +type Object12192 @Directive21(argument61 : "stringValue48639") @Directive44(argument97 : ["stringValue48638"]) { + field65412: [Object12090] +} + +type Object12193 @Directive21(argument61 : "stringValue48641") @Directive44(argument97 : ["stringValue48640"]) { + field65413: [Object3833] @deprecated + field65414: Object3832 +} + +type Object12194 @Directive21(argument61 : "stringValue48643") @Directive44(argument97 : ["stringValue48642"]) { + field65415: String +} + +type Object12195 @Directive21(argument61 : "stringValue48645") @Directive44(argument97 : ["stringValue48644"]) { + field65417: [Object12187] + field65418: Object12188 + field65419: Object12188 + field65420: Object12188 + field65421: Object12188 + field65422: Object12191 + field65423: Object12196 +} + +type Object12196 @Directive21(argument61 : "stringValue48647") @Directive44(argument97 : ["stringValue48646"]) { + field65424: Object12188 + field65425: Object12188 + field65426: [Object12197] +} + +type Object12197 @Directive21(argument61 : "stringValue48649") @Directive44(argument97 : ["stringValue48648"]) { + field65427: String + field65428: Enum3014 +} + +type Object12198 @Directive21(argument61 : "stringValue48652") @Directive44(argument97 : ["stringValue48651"]) { + field65431: Object12187 + field65432: Object12199 + field65439: Object12199 + field65440: Object12199 + field65441: Object12202 + field65446: [Object12204] + field65450: Object12205 + field65483: Union394 +} + +type Object12199 @Directive21(argument61 : "stringValue48654") @Directive44(argument97 : ["stringValue48653"]) { + field65433: Object12200 + field65436: Object12201 + field65438: String +} + +type Object122 @Directive21(argument61 : "stringValue440") @Directive44(argument97 : ["stringValue439"]) { + field779: String! + field780: Enum61 +} + +type Object1220 @Directive22(argument62 : "stringValue6365") @Directive31 @Directive44(argument97 : ["stringValue6366", "stringValue6367"]) { + field6815: String + field6816: Int + field6817: Object1221 + field6849: [Object1224] + field6859: Object1226 + field6861: Boolean + field6862: Enum10 +} + +type Object12200 @Directive21(argument61 : "stringValue48656") @Directive44(argument97 : ["stringValue48655"]) { + field65434: String + field65435: String +} + +type Object12201 @Directive21(argument61 : "stringValue48658") @Directive44(argument97 : ["stringValue48657"]) { + field65437: String +} + +type Object12202 @Directive21(argument61 : "stringValue48660") @Directive44(argument97 : ["stringValue48659"]) { + field65442: [Object12203] +} + +type Object12203 @Directive21(argument61 : "stringValue48662") @Directive44(argument97 : ["stringValue48661"]) { + field65443: String + field65444: String + field65445: Scalar5 +} + +type Object12204 @Directive21(argument61 : "stringValue48664") @Directive44(argument97 : ["stringValue48663"]) { + field65447: String + field65448: String + field65449: String +} + +type Object12205 @Directive21(argument61 : "stringValue48666") @Directive44(argument97 : ["stringValue48665"]) { + field65451: [Union395] + field65477: Object12214 +} + +type Object12206 @Directive21(argument61 : "stringValue48669") @Directive44(argument97 : ["stringValue48668"]) { + field65452: Object12187 + field65453: Object12207 + field65458: Object12199 + field65459: Object12199 + field65460: String + field65461: Object12199 + field65462: Object12199 + field65463: Object12209 + field65466: Object12210 +} + +type Object12207 @Directive21(argument61 : "stringValue48671") @Directive44(argument97 : ["stringValue48670"]) { + field65454: Object12208 + field65457: String +} + +type Object12208 @Directive21(argument61 : "stringValue48673") @Directive44(argument97 : ["stringValue48672"]) { + field65455: String + field65456: String +} + +type Object12209 @Directive21(argument61 : "stringValue48675") @Directive44(argument97 : ["stringValue48674"]) { + field65464: String + field65465: String +} + +type Object1221 @Directive22(argument62 : "stringValue6368") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue6369", "stringValue6370"]) { + field6818: ID @Directive30(argument80 : true) @Directive40 + field6819: String @Directive30(argument80 : true) @Directive40 + field6820: String @Directive30(argument80 : true) @Directive40 + field6821: String @Directive30(argument80 : true) @Directive40 + field6822: Boolean @Directive30(argument80 : true) @Directive40 + field6823: ID @Directive30(argument80 : true) @Directive40 + field6824: Scalar4 @Directive30(argument80 : true) @Directive41 + field6825: Boolean @Directive30(argument80 : true) @Directive41 + field6826: String @Directive30(argument80 : true) @Directive40 + field6827: Boolean @Directive30(argument80 : true) @Directive40 + field6828: Boolean @Directive30(argument80 : true) @Directive40 + field6829: Boolean @Directive30(argument80 : true) @Directive40 + field6830: Int @Directive30(argument80 : true) @Directive40 + field6831: String @Directive30(argument80 : true) @Directive40 + field6832: String @Directive30(argument80 : true) @Directive40 + field6833: Scalar4 @Directive30(argument80 : true) @Directive41 + field6834: Scalar4 @Directive30(argument80 : true) @Directive41 + field6835: Enum313 @Directive30(argument80 : true) @Directive41 + field6836: Boolean @Directive30(argument80 : true) @Directive41 + field6837: String @Directive30(argument80 : true) @Directive41 + field6838: Int @Directive30(argument80 : true) @Directive41 + field6839: String @Directive30(argument80 : true) @Directive41 + field6840: String @Directive30(argument80 : true) @Directive41 + field6841: Int @Directive30(argument80 : true) @Directive41 + field6842: Int @Directive30(argument80 : true) @Directive41 + field6843: Object1222 @Directive30(argument80 : true) @Directive41 +} + +type Object12210 @Directive21(argument61 : "stringValue48677") @Directive44(argument97 : ["stringValue48676"]) { + field65467: [String] + field65468: String + field65469: Object12211 +} + +type Object12211 @Directive21(argument61 : "stringValue48679") @Directive44(argument97 : ["stringValue48678"]) { + field65470: String + field65471: [String] + field65472: [Object12212] +} + +type Object12212 @Directive21(argument61 : "stringValue48681") @Directive44(argument97 : ["stringValue48680"]) { + field65473: String + field65474: String +} + +type Object12213 @Directive21(argument61 : "stringValue48683") @Directive44(argument97 : ["stringValue48682"]) { + field65475: String + field65476: Object12208 +} + +type Object12214 @Directive21(argument61 : "stringValue48685") @Directive44(argument97 : ["stringValue48684"]) { + field65478: Object12199 + field65479: String + field65480: [Object12204] + field65481: [Object12204] + field65482: Object12191 +} + +type Object12215 @Directive21(argument61 : "stringValue48687") @Directive44(argument97 : ["stringValue48686"]) { + field65485: Object12187 + field65486: Object12199 + field65487: Object12199 + field65488: Object12208 + field65489: [Object12204] + field65490: Object12216 + field65493: Union394 +} + +type Object12216 @Directive21(argument61 : "stringValue48689") @Directive44(argument97 : ["stringValue48688"]) { + field65491: [Object12204] + field65492: Object12191 +} + +type Object12217 @Directive21(argument61 : "stringValue48691") @Directive44(argument97 : ["stringValue48690"]) { + field65495: String! @deprecated + field65496: Object12218 + field65501: Object12220 + field65510: String! +} + +type Object12218 @Directive21(argument61 : "stringValue48693") @Directive44(argument97 : ["stringValue48692"]) { + field65497: String + field65498: String + field65499: [Object12219] +} + +type Object12219 @Directive21(argument61 : "stringValue48695") @Directive44(argument97 : ["stringValue48694"]) { + field65500: String +} + +type Object1222 @Directive22(argument62 : "stringValue6375") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue6376", "stringValue6377"]) { + field6844: Int @Directive30(argument80 : true) @Directive40 + field6845: Object1223 @Directive30(argument80 : true) @Directive40 + field6848: Int @Directive30(argument80 : true) @Directive40 +} + +type Object12220 @Directive21(argument61 : "stringValue48697") @Directive44(argument97 : ["stringValue48696"]) { + field65502: [Object12187] + field65503: String + field65504: String + field65505: Object12188 + field65506: Object12188 + field65507: Object12188 + field65508: Object12196 + field65509: Union394 +} + +type Object12221 @Directive21(argument61 : "stringValue48699") @Directive44(argument97 : ["stringValue48698"]) { + field65513: String + field65514: String + field65515: Object3832 + field65516: Object12139 + field65517: Object12139 + field65518: Object12139 + field65519: Object12139 + field65520: Object11941 + field65521: Float + field65522: Object12140 + field65523: Object11976 + field65524: String + field65525: String +} + +type Object12222 @Directive21(argument61 : "stringValue48701") @Directive44(argument97 : ["stringValue48700"]) { + field65528: [Object12223] + field65534: Object12225 +} + +type Object12223 @Directive21(argument61 : "stringValue48703") @Directive44(argument97 : ["stringValue48702"]) { + field65529: [Object12224] + field65533: Enum3015 +} + +type Object12224 @Directive21(argument61 : "stringValue48705") @Directive44(argument97 : ["stringValue48704"]) { + field65530: String + field65531: [Object12090] + field65532: [String] +} + +type Object12225 @Directive21(argument61 : "stringValue48708") @Directive44(argument97 : ["stringValue48707"]) { + field65535: String + field65536: String + field65537: String +} + +type Object12226 @Directive21(argument61 : "stringValue48710") @Directive44(argument97 : ["stringValue48709"]) { + field65540: Enum3016 + field65541: Boolean + field65542: Object12227 + field65556: String + field65557: String + field65558: String + field65559: String + field65560: String + field65561: String + field65562: Object12228 + field65576: Object3840 + field65577: Boolean +} + +type Object12227 @Directive21(argument61 : "stringValue48713") @Directive44(argument97 : ["stringValue48712"]) { + field65543: String + field65544: String + field65545: String + field65546: String + field65547: Enum3016 + field65548: String + field65549: String + field65550: Boolean + field65551: Boolean + field65552: Int + field65553: Int + field65554: Int + field65555: [Object12090] +} + +type Object12228 @Directive21(argument61 : "stringValue48715") @Directive44(argument97 : ["stringValue48714"]) { + field65563: String + field65564: String + field65565: String + field65566: String + field65567: Object12229 +} + +type Object12229 @Directive21(argument61 : "stringValue48717") @Directive44(argument97 : ["stringValue48716"]) { + field65568: String + field65569: Object12230 + field65574: Object12230 + field65575: Object12230 +} + +type Object1223 @Directive22(argument62 : "stringValue6378") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue6379", "stringValue6380"]) { + field6846: Int @Directive30(argument80 : true) @Directive40 + field6847: Boolean @Directive30(argument80 : true) @Directive40 +} + +type Object12230 @Directive21(argument61 : "stringValue48719") @Directive44(argument97 : ["stringValue48718"]) { + field65570: String + field65571: String + field65572: Int + field65573: Int +} + +type Object12231 @Directive21(argument61 : "stringValue48721") @Directive44(argument97 : ["stringValue48720"]) { + field65579: String! + field65580: Object12077 + field65581: Object12232 + field65583: String! + field65584: Object12233 + field65595: Object12235 +} + +type Object12232 @Directive21(argument61 : "stringValue48723") @Directive44(argument97 : ["stringValue48722"]) { + field65582: String +} + +type Object12233 @Directive21(argument61 : "stringValue48725") @Directive44(argument97 : ["stringValue48724"]) { + field65585: String + field65586: Object12234 + field65591: [Object12077] + field65592: Object3832 + field65593: String + field65594: String +} + +type Object12234 @Directive21(argument61 : "stringValue48727") @Directive44(argument97 : ["stringValue48726"]) { + field65587: String + field65588: String + field65589: String + field65590: String +} + +type Object12235 @Directive21(argument61 : "stringValue48729") @Directive44(argument97 : ["stringValue48728"]) { + field65596: String + field65597: Object12234 + field65598: [Object11938] +} + +type Object12236 @Directive21(argument61 : "stringValue48731") @Directive44(argument97 : ["stringValue48730"]) { + field65600: String + field65601: String + field65602: String + field65603: String +} + +type Object12237 @Directive21(argument61 : "stringValue48733") @Directive44(argument97 : ["stringValue48732"]) { + field65605: String + field65606: String + field65607: Object12140 + field65608: Object11976 + field65609: [Object12139] + field65610: [Object12139] + field65611: [Object12139] + field65612: [Object12139] + field65613: Enum3017 + field65614: [Object12238] +} + +type Object12238 @Directive21(argument61 : "stringValue48736") @Directive44(argument97 : ["stringValue48735"]) { + field65615: String + field65616: String + field65617: Object12239 +} + +type Object12239 @Directive21(argument61 : "stringValue48738") @Directive44(argument97 : ["stringValue48737"]) { + field65618: Enum3018 + field65619: Object3832 + field65620: Enum3019 + field65621: Union396 + field65635: String +} + +type Object1224 @Directive22(argument62 : "stringValue6381") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue6382", "stringValue6383"]) { + field6850: Scalar3 @Directive30(argument80 : true) @Directive41 + field6851: Object1225 @Directive30(argument80 : true) @Directive41 + field6858: String @Directive30(argument80 : true) @Directive41 +} + +type Object12240 @Directive21(argument61 : "stringValue48743") @Directive44(argument97 : ["stringValue48742"]) { + field65622: String + field65623: String + field65624: String + field65625: Object12241 + field65628: Scalar4 + field65629: Scalar4 + field65630: String +} + +type Object12241 @Directive21(argument61 : "stringValue48745") @Directive44(argument97 : ["stringValue48744"]) { + field65626: Enum3020 + field65627: String +} + +type Object12242 @Directive21(argument61 : "stringValue48748") @Directive44(argument97 : ["stringValue48747"]) { + field65631: String + field65632: String + field65633: String + field65634: [Object12241] +} + +type Object12243 @Directive21(argument61 : "stringValue48750") @Directive44(argument97 : ["stringValue48749"]) { + field65637: String + field65638: String + field65639: String + field65640: Object11939 + field65641: Object11939 + field65642: Object11939 +} + +type Object12244 @Directive21(argument61 : "stringValue48752") @Directive44(argument97 : ["stringValue48751"]) { + field65644: Scalar2 + field65645: String + field65646: String + field65647: String + field65648: String + field65649: Enum3007 + field65650: String +} + +type Object12245 @Directive21(argument61 : "stringValue48754") @Directive44(argument97 : ["stringValue48753"]) { + field65652: Enum3021 +} + +type Object12246 @Directive21(argument61 : "stringValue48757") @Directive44(argument97 : ["stringValue48756"]) { + field65654: Object11941 + field65655: Object11941 + field65656: Object11939 + field65657: Object11939 + field65658: Object11939 + field65659: [Object11975] + field65660: String + field65661: Object3832 +} + +type Object12247 @Directive21(argument61 : "stringValue48759") @Directive44(argument97 : ["stringValue48758"]) { + field65663: String + field65664: String + field65665: String + field65666: Object11939 + field65667: Object11939 + field65668: Object11939 +} + +type Object12248 @Directive21(argument61 : "stringValue48761") @Directive44(argument97 : ["stringValue48760"]) { + field65672: Scalar2 + field65673: String + field65674: Enum2971 + field65675: String + field65676: String + field65677: String + field65678: String + field65679: [Object12071] + field65680: String + field65681: String + field65682: Enum2945 + field65683: String + field65684: [Object12069] +} + +type Object12249 @Directive21(argument61 : "stringValue48763") @Directive44(argument97 : ["stringValue48762"]) { + field65686: String + field65687: String + field65688: String + field65689: Object3832 + field65690: Object11939 + field65691: Object11939 + field65692: Object11939 +} + +type Object1225 @Directive22(argument62 : "stringValue6384") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue6385", "stringValue6386"]) { + field6852: Float @Directive30(argument80 : true) @Directive41 + field6853: Float @Directive30(argument80 : true) @Directive41 + field6854: Float @Directive30(argument80 : true) @Directive41 + field6855: Float @Directive30(argument80 : true) @Directive41 + field6856: Float @Directive30(argument80 : true) @Directive41 + field6857: Float @Directive30(argument80 : true) @Directive41 +} + +type Object12250 @Directive21(argument61 : "stringValue48765") @Directive44(argument97 : ["stringValue48764"]) { + field65694: String + field65695: Int + field65696: Int +} + +type Object12251 @Directive21(argument61 : "stringValue48767") @Directive44(argument97 : ["stringValue48766"]) { + field65700: Object12138 + field65701: Object12157 +} + +type Object12252 @Directive21(argument61 : "stringValue48769") @Directive44(argument97 : ["stringValue48768"]) { + field65703: Object3832 +} + +type Object12253 @Directive21(argument61 : "stringValue48771") @Directive44(argument97 : ["stringValue48770"]) { + field65705: String + field65706: String + field65707: String + field65708: Object12021 + field65709: Object12139 + field65710: Int + field65711: Object3832 +} + +type Object12254 @Directive21(argument61 : "stringValue48773") @Directive44(argument97 : ["stringValue48772"]) { + field65713: String +} + +type Object12255 @Directive21(argument61 : "stringValue48775") @Directive44(argument97 : ["stringValue48774"]) { + field65715: Object12256 + field65787: Object12256 + field65788: Object12256 +} + +type Object12256 @Directive21(argument61 : "stringValue48777") @Directive44(argument97 : ["stringValue48776"]) { + field65716: Object12257 + field65773: Object11945 + field65774: Object11945 + field65775: Object11945 + field65776: Object12269 + field65783: Interface154 + field65784: Object11952 + field65785: Object12257 + field65786: Object11949 +} + +type Object12257 @Directive21(argument61 : "stringValue48779") @Directive44(argument97 : ["stringValue48778"]) { + field65717: Enum3022 + field65718: Object12258 + field65724: Object12259 + field65730: Object11956 + field65731: Object12260 + field65734: Object12261 + field65737: Object3840 + field65738: Object12262 +} + +type Object12258 @Directive21(argument61 : "stringValue48782") @Directive44(argument97 : ["stringValue48781"]) { + field65719: String + field65720: String + field65721: String + field65722: Object11957 + field65723: String +} + +type Object12259 @Directive21(argument61 : "stringValue48784") @Directive44(argument97 : ["stringValue48783"]) { + field65725: String + field65726: String + field65727: String + field65728: Object11957 + field65729: String +} + +type Object1226 @Directive22(argument62 : "stringValue6387") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue6388", "stringValue6389"]) { + field6860: Scalar3 @Directive30(argument80 : true) @Directive40 +} + +type Object12260 @Directive21(argument61 : "stringValue48786") @Directive44(argument97 : ["stringValue48785"]) { + field65732: String + field65733: Object3840 +} + +type Object12261 @Directive21(argument61 : "stringValue48788") @Directive44(argument97 : ["stringValue48787"]) { + field65735: [Object12258] + field65736: Object11957 +} + +type Object12262 @Directive21(argument61 : "stringValue48790") @Directive44(argument97 : ["stringValue48789"]) { + field65739: Object12263 + field65772: Object11957 +} + +type Object12263 implements Interface155 @Directive21(argument61 : "stringValue48792") @Directive44(argument97 : ["stringValue48791"]) { + field17035: String! + field17036: Enum780 + field17037: Float + field17038: String + field17039: Interface153 + field17040: Interface152 + field65740: Object3860 + field65741: String + field65742: String + field65743: Boolean + field65744: String + field65745: [Object12264!] + field65751: String + field65752: String + field65753: String + field65754: String + field65755: String + field65756: String + field65757: String + field65758: String + field65759: String + field65760: String + field65761: String + field65762: String + field65763: String + field65764: String + field65765: String + field65766: Object12266 +} + +type Object12264 @Directive21(argument61 : "stringValue48794") @Directive44(argument97 : ["stringValue48793"]) { + field65746: String + field65747: [Object12265!] + field65750: Object12265 +} + +type Object12265 @Directive21(argument61 : "stringValue48796") @Directive44(argument97 : ["stringValue48795"]) { + field65748: String + field65749: String +} + +type Object12266 @Directive21(argument61 : "stringValue48798") @Directive44(argument97 : ["stringValue48797"]) { + field65767: Object12267 + field65770: Object12268 +} + +type Object12267 @Directive21(argument61 : "stringValue48800") @Directive44(argument97 : ["stringValue48799"]) { + field65768: String! + field65769: [Object12264!] +} + +type Object12268 @Directive21(argument61 : "stringValue48802") @Directive44(argument97 : ["stringValue48801"]) { + field65771: String! +} + +type Object12269 @Directive21(argument61 : "stringValue48804") @Directive44(argument97 : ["stringValue48803"]) { + field65777: Enum3023 + field65778: Object11946 + field65779: Object12270 + field65782: Object11952 +} + +type Object1227 @Directive22(argument62 : "stringValue6390") @Directive31 @Directive44(argument97 : ["stringValue6391", "stringValue6392"]) { + field6863: Int + field6864: String + field6865: String + field6866: Object452 + field6867: String + field6868: String + field6869: String +} + +type Object12270 @Directive21(argument61 : "stringValue48807") @Directive44(argument97 : ["stringValue48806"]) { + field65780: Object11949 + field65781: Object11949 +} + +type Object12271 @Directive21(argument61 : "stringValue48809") @Directive44(argument97 : ["stringValue48808"]) { + field65790: Object12272 + field65794: String + field65795: String + field65796: String +} + +type Object12272 @Directive21(argument61 : "stringValue48811") @Directive44(argument97 : ["stringValue48810"]) { + field65791: String + field65792: String + field65793: String +} + +type Object12273 @Directive21(argument61 : "stringValue48813") @Directive44(argument97 : ["stringValue48812"]) { + field65800: Object11950 + field65801: Object11950 + field65802: Object11950 +} + +type Object12274 @Directive21(argument61 : "stringValue48815") @Directive44(argument97 : ["stringValue48814"]) { + field65804: Object12275 + field65807: Object12275 + field65808: Object12275 +} + +type Object12275 @Directive21(argument61 : "stringValue48817") @Directive44(argument97 : ["stringValue48816"]) { + field65805: Object11945 + field65806: Object11945 +} + +type Object12276 @Directive21(argument61 : "stringValue48819") @Directive44(argument97 : ["stringValue48818"]) { + field65810: Object12277 + field65826: String + field65827: Interface152 +} + +type Object12277 @Directive21(argument61 : "stringValue48821") @Directive44(argument97 : ["stringValue48820"]) { + field65811: Object12278 + field65824: Object12278 + field65825: Object12278 +} + +type Object12278 @Directive21(argument61 : "stringValue48823") @Directive44(argument97 : ["stringValue48822"]) { + field65812: Object11945 + field65813: Object11945 + field65814: Object11945 + field65815: Object11945 + field65816: Object12269 + field65817: Object11949 + field65818: Object12257 + field65819: Object12258 + field65820: Object12279 +} + +type Object12279 @Directive21(argument61 : "stringValue48825") @Directive44(argument97 : ["stringValue48824"]) { + field65821: Object12269 + field65822: Object12280 +} + +type Object1228 @Directive22(argument62 : "stringValue6393") @Directive31 @Directive44(argument97 : ["stringValue6394", "stringValue6395"]) { + field6870: Scalar3 + field6871: Scalar3 + field6872: ID + field6873: Boolean +} + +type Object12280 @Directive21(argument61 : "stringValue48827") @Directive44(argument97 : ["stringValue48826"]) { + field65823: [Object11945] +} + +type Object12281 @Directive21(argument61 : "stringValue48829") @Directive44(argument97 : ["stringValue48828"]) { + field65829: Object12282 + field65840: String + field65841: Interface152 +} + +type Object12282 @Directive21(argument61 : "stringValue48831") @Directive44(argument97 : ["stringValue48830"]) { + field65830: Object12283 + field65837: Object12283 + field65838: Object12283 + field65839: Object12283 +} + +type Object12283 @Directive21(argument61 : "stringValue48833") @Directive44(argument97 : ["stringValue48832"]) { + field65831: Object11945 + field65832: Object11945 + field65833: Object11945 + field65834: Object11949 + field65835: Object12257 + field65836: Object12258 +} + +type Object12284 @Directive21(argument61 : "stringValue48835") @Directive44(argument97 : ["stringValue48834"]) { + field65843: Object12285 + field65848: Object12285 + field65849: Object12285 +} + +type Object12285 @Directive21(argument61 : "stringValue48837") @Directive44(argument97 : ["stringValue48836"]) { + field65844: Object11945 + field65845: Interface154 + field65846: String + field65847: Object12257 +} + +type Object12286 @Directive21(argument61 : "stringValue48839") @Directive44(argument97 : ["stringValue48838"]) { + field65853: Object12287 + field65856: Object12287 + field65857: Object12287 +} + +type Object12287 @Directive21(argument61 : "stringValue48841") @Directive44(argument97 : ["stringValue48840"]) { + field65854: Float + field65855: Float +} + +type Object12288 @Directive21(argument61 : "stringValue48843") @Directive44(argument97 : ["stringValue48842"]) { + field65861: Object12289! + field65901: Enum3026! + field65902: Object12295! + field65905: Object12296 +} + +type Object12289 @Directive21(argument61 : "stringValue48845") @Directive44(argument97 : ["stringValue48844"]) { + field65862: Object12290 + field65884: Object12293 +} + +type Object1229 @Directive22(argument62 : "stringValue6396") @Directive31 @Directive44(argument97 : ["stringValue6397", "stringValue6398"]) { + field6874: Boolean + field6875: Object1230 + field6881: Object1230 + field6882: [Object480!] + field6883: Object1230 + field6884: String + field6885: String + field6886: Boolean +} + +type Object12290 @Directive21(argument61 : "stringValue48847") @Directive44(argument97 : ["stringValue48846"]) { + field65863: Object12291 + field65876: String + field65877: String! + field65878: String + field65879: String! + field65880: Enum3025! + field65881: Object11963 + field65882: String + field65883: String +} + +type Object12291 @Directive21(argument61 : "stringValue48849") @Directive44(argument97 : ["stringValue48848"]) { + field65864: String + field65865: String + field65866: String + field65867: Enum3024 + field65868: Boolean + field65869: [Object12292] + field65872: String + field65873: String + field65874: String + field65875: [Object12292] +} + +type Object12292 @Directive21(argument61 : "stringValue48852") @Directive44(argument97 : ["stringValue48851"]) { + field65870: String! + field65871: String +} + +type Object12293 @Directive21(argument61 : "stringValue48855") @Directive44(argument97 : ["stringValue48854"]) { + field65885: Object12291 + field65886: String + field65887: String! + field65888: String + field65889: String! + field65890: Enum3025! + field65891: Object11963 + field65892: String + field65893: String + field65894: Object12294 +} + +type Object12294 @Directive21(argument61 : "stringValue48857") @Directive44(argument97 : ["stringValue48856"]) { + field65895: String + field65896: String + field65897: String + field65898: String + field65899: String + field65900: String +} + +type Object12295 @Directive21(argument61 : "stringValue48860") @Directive44(argument97 : ["stringValue48859"]) { + field65903: String + field65904: [String] +} + +type Object12296 @Directive21(argument61 : "stringValue48862") @Directive44(argument97 : ["stringValue48861"]) { + field65906: Enum3027! + field65907: Object3832 + field65908: String + field65909: [String] @deprecated + field65910: [String] +} + +type Object12297 @Directive21(argument61 : "stringValue48865") @Directive44(argument97 : ["stringValue48864"]) { + field65912: String + field65913: String + field65914: String + field65915: Object12298 + field65936: Object12299 + field65948: Object12301 + field66017: Object12309 + field66023: Object12310 +} + +type Object12298 @Directive21(argument61 : "stringValue48867") @Directive44(argument97 : ["stringValue48866"]) { + field65916: Scalar2 + field65917: String + field65918: String + field65919: String + field65920: String + field65921: Scalar2 + field65922: String + field65923: Scalar4 + field65924: Scalar4 + field65925: String + field65926: String + field65927: String + field65928: Scalar2 + field65929: String + field65930: String + field65931: Boolean + field65932: Enum2981 + field65933: Boolean + field65934: String + field65935: Scalar2 +} + +type Object12299 @Directive21(argument61 : "stringValue48869") @Directive44(argument97 : ["stringValue48868"]) { + field65937: String + field65938: String + field65939: String + field65940: String + field65941: String + field65942: String + field65943: Object12300 + field65947: Object12300 +} + +type Object123 @Directive21(argument61 : "stringValue442") @Directive44(argument97 : ["stringValue441"]) { + field781: Enum63 + field782: Enum64 + field783: Int @deprecated + field784: Int @deprecated + field785: Object77 +} + +type Object1230 @Directive22(argument62 : "stringValue6399") @Directive31 @Directive44(argument97 : ["stringValue6400", "stringValue6401"]) { + field6876: Enum10 + field6877: String + field6878: String + field6879: Object452 + field6880: Object508 +} + +type Object12300 @Directive21(argument61 : "stringValue48871") @Directive44(argument97 : ["stringValue48870"]) { + field65944: String + field65945: String + field65946: String +} + +type Object12301 @Directive21(argument61 : "stringValue48873") @Directive44(argument97 : ["stringValue48872"]) { + field65949: String + field65950: String + field65951: String + field65952: Boolean + field65953: Boolean + field65954: Boolean + field65955: Boolean + field65956: Enum3028 + field65957: Enum3029 + field65958: Object11939 + field65959: Object12302 + field66014: String + field66015: String + field66016: Object12244 +} + +type Object12302 @Directive21(argument61 : "stringValue48877") @Directive44(argument97 : ["stringValue48876"]) { + field65960: Boolean + field65961: String + field65962: Int + field65963: Enum3030 + field65964: String + field65965: Int + field65966: Enum3030 + field65967: String + field65968: Float + field65969: Float + field65970: Object12303 + field65975: String + field65976: String + field65977: String + field65978: String + field65979: String + field65980: String + field65981: String + field65982: String + field65983: String + field65984: String + field65985: String + field65986: String + field65987: String + field65988: String + field65989: String + field65990: String + field65991: String + field65992: String + field65993: [String] + field65994: Boolean + field65995: String + field65996: Union397 + field66001: Object12306 + field66012: String + field66013: Boolean +} + +type Object12303 @Directive21(argument61 : "stringValue48880") @Directive44(argument97 : ["stringValue48879"]) { + field65971: Object12304 + field65974: Object12304 +} + +type Object12304 @Directive21(argument61 : "stringValue48882") @Directive44(argument97 : ["stringValue48881"]) { + field65972: Float + field65973: Float +} + +type Object12305 @Directive21(argument61 : "stringValue48885") @Directive44(argument97 : ["stringValue48884"]) { + field65997: String + field65998: String + field65999: String + field66000: String +} + +type Object12306 @Directive21(argument61 : "stringValue48887") @Directive44(argument97 : ["stringValue48886"]) { + field66002: String + field66003: String + field66004: [Object12307] + field66008: Float + field66009: Float + field66010: Float + field66011: Object12303 +} + +type Object12307 @Directive21(argument61 : "stringValue48889") @Directive44(argument97 : ["stringValue48888"]) { + field66005: [Object12308] +} + +type Object12308 @Directive21(argument61 : "stringValue48891") @Directive44(argument97 : ["stringValue48890"]) { + field66006: String + field66007: String +} + +type Object12309 @Directive21(argument61 : "stringValue48893") @Directive44(argument97 : ["stringValue48892"]) { + field66018: String + field66019: Scalar2 + field66020: String + field66021: String + field66022: String +} + +type Object1231 @Directive22(argument62 : "stringValue6402") @Directive31 @Directive44(argument97 : ["stringValue6403", "stringValue6404"]) { + field6887: Boolean + field6888: String +} + +type Object12310 @Directive21(argument61 : "stringValue48895") @Directive44(argument97 : ["stringValue48894"]) { + field66024: Enum2930 + field66025: Object12311 + field66043: Scalar2 +} + +type Object12311 @Directive21(argument61 : "stringValue48897") @Directive44(argument97 : ["stringValue48896"]) { + field66026: String + field66027: Enum2930 + field66028: [Enum3031] + field66029: Enum3032 + field66030: Float + field66031: Int + field66032: Int + field66033: Int + field66034: Int + field66035: Int + field66036: Enum3033 + field66037: String + field66038: String + field66039: String + field66040: String + field66041: String + field66042: String +} + +type Object12312 @Directive21(argument61 : "stringValue48902") @Directive44(argument97 : ["stringValue48901"]) { + field66045: [Object12313] + field66059: [String] +} + +type Object12313 @Directive21(argument61 : "stringValue48904") @Directive44(argument97 : ["stringValue48903"]) { + field66046: String + field66047: Scalar2 + field66048: Scalar2 + field66049: Int + field66050: [Int] + field66051: [Int] + field66052: String + field66053: Boolean + field66054: Enum3034 + field66055: Scalar2 + field66056: Object12314 +} + +type Object12314 @Directive21(argument61 : "stringValue48907") @Directive44(argument97 : ["stringValue48906"]) { + field66057: Enum3035 + field66058: Scalar2 +} + +type Object12315 @Directive21(argument61 : "stringValue48910") @Directive44(argument97 : ["stringValue48909"]) { + field66061: Scalar2 + field66062: [Object11934] +} + +type Object12316 @Directive21(argument61 : "stringValue48912") @Directive44(argument97 : ["stringValue48911"]) { + field66065: Scalar2 + field66066: Object12317 + field66069: [Object12316] + field66070: [Object12318] + field66108: String + field66109: [Object12321] + field66821: Float + field66822: String +} + +type Object12317 @Directive21(argument61 : "stringValue48914") @Directive44(argument97 : ["stringValue48913"]) { + field66067: Scalar1 + field66068: Enum3036 +} + +type Object12318 @Directive21(argument61 : "stringValue48917") @Directive44(argument97 : ["stringValue48916"]) { + field66071: Scalar2 + field66072: String + field66073: [Object12319] @deprecated + field66086: Object12320 + field66095: Boolean + field66096: Enum3042 + field66097: [Object12318] + field66098: Scalar2 + field66099: String + field66100: Enum3043 + field66101: Enum3044 + field66102: Scalar4 + field66103: Scalar4 + field66104: Scalar4 + field66105: Boolean + field66106: [Object12319] + field66107: Enum3045 +} + +type Object12319 @Directive21(argument61 : "stringValue48919") @Directive44(argument97 : ["stringValue48918"]) { + field66074: Scalar2 + field66075: String + field66076: String + field66077: Enum3037 + field66078: Enum3038 + field66079: Scalar2 + field66080: Enum3039 + field66081: Scalar4 + field66082: Scalar4 + field66083: String + field66084: Boolean + field66085: String +} + +type Object1232 @Directive22(argument62 : "stringValue6405") @Directive31 @Directive44(argument97 : ["stringValue6406", "stringValue6407"]) { + field6889: String + field6890: String + field6891: String + field6892: [Object1233] +} + +type Object12320 @Directive21(argument61 : "stringValue48924") @Directive44(argument97 : ["stringValue48923"]) { + field66087: Enum3040 + field66088: String + field66089: String + field66090: String + field66091: String + field66092: Enum3041 + field66093: Boolean + field66094: Scalar2 +} + +type Object12321 @Directive21(argument61 : "stringValue48932") @Directive44(argument97 : ["stringValue48931"]) { + field66110: Scalar2 + field66111: String + field66112: String + field66113: Enum3046 + field66114: Enum3047 + field66115: [Union398] + field66627: Object12366 + field66662: Object12325 + field66663: Object12326 + field66664: Object12327 + field66665: Object12330 + field66666: Object12369 + field66669: Object12370 + field66672: Object12371 + field66674: [String] + field66675: [Object12372] + field66681: Object12320 + field66682: String + field66683: Float + field66684: [Object12321] + field66685: String + field66686: Object12373 + field66695: Object12375 + field66698: Object12376 + field66713: String + field66714: Enum3007 + field66715: Object12379 + field66791: [Object12390] + field66795: String + field66796: Object12391 + field66801: Boolean + field66802: [String] + field66803: Boolean + field66804: [Object12318] + field66805: Enum3100 + field66806: String + field66807: Scalar2 + field66808: Object12392 +} + +type Object12322 @Directive21(argument61 : "stringValue48937") @Directive44(argument97 : ["stringValue48936"]) { + field66116: Int + field66117: Boolean + field66118: Boolean + field66119: Int + field66120: String + field66121: Scalar2 + field66122: String + field66123: [Object12323] + field66132: Enum3046 + field66133: [String] + field66134: String + field66135: Boolean + field66136: Int + field66137: Boolean + field66138: Int + field66139: String + field66140: String + field66141: Boolean + field66142: Int +} + +type Object12323 @Directive21(argument61 : "stringValue48939") @Directive44(argument97 : ["stringValue48938"]) { + field66124: Scalar2 + field66125: Int + field66126: Scalar4 + field66127: Scalar4 + field66128: Boolean + field66129: String + field66130: String + field66131: String +} + +type Object12324 @Directive21(argument61 : "stringValue48941") @Directive44(argument97 : ["stringValue48940"]) { + field66143: Scalar2 + field66144: Enum3048 + field66145: Enum3049 + field66146: String + field66147: String + field66148: String + field66149: String + field66150: String + field66151: String + field66152: String + field66153: String + field66154: String + field66155: Int + field66156: Object12325 +} + +type Object12325 @Directive21(argument61 : "stringValue48945") @Directive44(argument97 : ["stringValue48944"]) { + field66157: Enum3050 + field66158: String + field66159: String + field66160: Object12326 + field66179: Scalar2 + field66180: Boolean + field66181: Object12327 + field66232: String + field66233: [Enum2933] + field66234: String + field66235: Object12330 + field66260: String + field66261: Object12331 + field66273: Enum778 + field66274: String + field66275: Enum2932 + field66276: Boolean + field66277: String + field66278: Enum771 + field66279: String +} + +type Object12326 @Directive21(argument61 : "stringValue48948") @Directive44(argument97 : ["stringValue48947"]) { + field66161: String + field66162: String + field66163: Enum3051 + field66164: String + field66165: Int + field66166: Object12303 + field66167: String + field66168: [String] + field66169: [[String]] + field66170: Scalar2 + field66171: Object12302 + field66172: Scalar2 + field66173: Scalar2 + field66174: Object12304 + field66175: Int + field66176: Int + field66177: [String] + field66178: [String] +} + +type Object12327 @Directive21(argument61 : "stringValue48951") @Directive44(argument97 : ["stringValue48950"]) { + field66182: Enum3052 + field66183: Int + field66184: Int + field66185: [String] + field66186: Boolean + field66187: Int + field66188: Int + field66189: Int + field66190: Boolean + field66191: Boolean + field66192: Int + field66193: Int + field66194: Float + field66195: [Int] + field66196: [String] @deprecated + field66197: [Int] @deprecated + field66198: [Int] + field66199: [Int] + field66200: [Int] + field66201: [Int] + field66202: [Int] + field66203: [Int] + field66204: String + field66205: String + field66206: Scalar2 + field66207: [Int] + field66208: [Int] + field66209: Boolean + field66210: Scalar2 + field66211: Enum3053 + field66212: Int + field66213: Int + field66214: [String] + field66215: Float + field66216: Float + field66217: Float + field66218: Boolean + field66219: [Scalar2] + field66220: Object12328 +} + +type Object12328 @Directive21(argument61 : "stringValue48955") @Directive44(argument97 : ["stringValue48954"]) { + field66221: Int + field66222: Int + field66223: Int + field66224: Int + field66225: Int + field66226: Int + field66227: [Object12329] + field66230: [Enum3054] + field66231: [Enum3055] +} + +type Object12329 @Directive21(argument61 : "stringValue48957") @Directive44(argument97 : ["stringValue48956"]) { + field66228: Scalar3 + field66229: Scalar3 +} + +type Object1233 @Directive22(argument62 : "stringValue6408") @Directive31 @Directive44(argument97 : ["stringValue6409", "stringValue6410"]) { + field6893: String! + field6894: [String!] +} + +type Object12330 @Directive21(argument61 : "stringValue48961") @Directive44(argument97 : ["stringValue48960"]) { + field66236: [String] + field66237: [Enum3056] + field66238: Boolean + field66239: Enum3057 + field66240: Enum3058 + field66241: Scalar2 + field66242: Object12304 + field66243: [String] + field66244: Boolean + field66245: [Scalar2] + field66246: Boolean + field66247: [String] + field66248: [Enum3059] + field66249: Enum3060 + field66250: Scalar2 + field66251: Scalar2 + field66252: [String] + field66253: [Int] + field66254: Boolean + field66255: Scalar2 + field66256: [Enum3061] + field66257: Boolean + field66258: Boolean + field66259: Boolean +} + +type Object12331 @Directive21(argument61 : "stringValue48969") @Directive44(argument97 : ["stringValue48968"]) { + field66262: Enum3023 + field66263: Enum2938 + field66264: Enum2940 + field66265: Object11953 + field66266: Object11951 + field66267: Object11951 + field66268: Object3840 + field66269: Object11948 + field66270: Scalar5 + field66271: Object3840 + field66272: Object3840 +} + +type Object12332 @Directive21(argument61 : "stringValue48971") @Directive44(argument97 : ["stringValue48970"]) { + field66280: Scalar2 + field66281: Enum3050 + field66282: String + field66283: String + field66284: String +} + +type Object12333 @Directive21(argument61 : "stringValue48973") @Directive44(argument97 : ["stringValue48972"]) { + field66285: String @deprecated + field66286: String @deprecated + field66287: String @deprecated + field66288: String + field66289: String + field66290: String + field66291: String + field66292: String + field66293: String + field66294: String + field66295: Object12325 + field66296: Object12325 + field66297: String + field66298: String + field66299: String + field66300: Enum3062 + field66301: Enum2981 + field66302: String + field66303: String + field66304: String + field66305: Object12334 + field66331: String + field66332: String + field66333: String + field66334: Boolean + field66335: Float + field66336: Object12339 + field66351: Scalar2 + field66352: Enum3064 + field66353: [Object12325] + field66354: Scalar2 + field66355: Enum3065 + field66356: String + field66357: Enum3066 + field66358: String @deprecated + field66359: Enum3067 + field66360: Enum3067 + field66361: Enum3067 + field66362: Enum3067 + field66363: String @deprecated + field66364: String @deprecated + field66365: String @deprecated + field66366: String + field66367: String + field66368: String + field66369: Object12103 + field66370: Boolean + field66371: String + field66372: Enum2992 + field66373: Enum3046 + field66374: Object3840 + field66375: Scalar2 + field66376: String + field66377: String + field66378: Enum3068 + field66379: Enum3069 + field66380: Boolean + field66381: Enum3070 + field66382: Enum3049 + field66383: Object12341 + field66399: Object12341 + field66400: Object12343 + field66418: Object12341 + field66419: String + field66420: Object12341 + field66421: Object12341 + field66422: String + field66423: Object12343 + field66424: Object12343 + field66425: Object12346 + field66430: Object12347 + field66440: Object12349 +} + +type Object12334 @Directive21(argument61 : "stringValue48976") @Directive44(argument97 : ["stringValue48975"]) { + field66306: Scalar2 + field66307: Object12335 + field66328: Object12335 + field66329: Object12335 + field66330: Object12335 +} + +type Object12335 @Directive21(argument61 : "stringValue48978") @Directive44(argument97 : ["stringValue48977"]) { + field66308: Scalar2 + field66309: Object12336 + field66316: Object12336 + field66317: Object12337 + field66323: Object12338 + field66327: Object12102 +} + +type Object12336 @Directive21(argument61 : "stringValue48980") @Directive44(argument97 : ["stringValue48979"]) { + field66310: Scalar2 + field66311: Enum2980 + field66312: Enum2981 + field66313: Enum2982 + field66314: String + field66315: Enum2983 +} + +type Object12337 @Directive21(argument61 : "stringValue48982") @Directive44(argument97 : ["stringValue48981"]) { + field66318: Scalar2 + field66319: Boolean + field66320: Boolean + field66321: Int + field66322: Boolean +} + +type Object12338 @Directive21(argument61 : "stringValue48984") @Directive44(argument97 : ["stringValue48983"]) { + field66324: Scalar2 + field66325: Enum3063 + field66326: Int +} + +type Object12339 @Directive21(argument61 : "stringValue48987") @Directive44(argument97 : ["stringValue48986"]) { + field66337: Object12340 + field66348: Object12340 + field66349: Object12340 + field66350: Object12340 +} + +type Object1234 @Directive22(argument62 : "stringValue6411") @Directive31 @Directive44(argument97 : ["stringValue6412", "stringValue6413"]) { + field6895: String + field6896: String + field6897: String + field6898: Boolean +} + +type Object12340 @Directive21(argument61 : "stringValue48989") @Directive44(argument97 : ["stringValue48988"]) { + field66338: String + field66339: String + field66340: String + field66341: String + field66342: String + field66343: String + field66344: String + field66345: String + field66346: Int + field66347: Float +} + +type Object12341 @Directive21(argument61 : "stringValue48998") @Directive44(argument97 : ["stringValue48997"]) { + field66384: Object12342 + field66395: Object12342 + field66396: Object12342 + field66397: Object12342 + field66398: Object12342 +} + +type Object12342 @Directive21(argument61 : "stringValue49000") @Directive44(argument97 : ["stringValue48999"]) { + field66385: String + field66386: Object3840 + field66387: Object11948 + field66388: Scalar5 + field66389: Object3840 + field66390: Enum2938 + field66391: Enum2940 + field66392: Object11953 + field66393: Object11951 + field66394: Object11951 +} + +type Object12343 @Directive21(argument61 : "stringValue49002") @Directive44(argument97 : ["stringValue49001"]) { + field66401: Object12344 + field66415: Object12344 + field66416: Object12344 + field66417: Object12344 +} + +type Object12344 @Directive21(argument61 : "stringValue49004") @Directive44(argument97 : ["stringValue49003"]) { + field66402: Enum3022 + field66403: String + field66404: Object11953 + field66405: Object11951 + field66406: Object11951 + field66407: String + field66408: Object12345 + field66412: Scalar1 + field66413: String + field66414: Scalar1 +} + +type Object12345 @Directive21(argument61 : "stringValue49006") @Directive44(argument97 : ["stringValue49005"]) { + field66409: String + field66410: String + field66411: String +} + +type Object12346 @Directive21(argument61 : "stringValue49008") @Directive44(argument97 : ["stringValue49007"]) { + field66426: Object12325 + field66427: Object12325 + field66428: Object12325 + field66429: Object12325 +} + +type Object12347 @Directive21(argument61 : "stringValue49010") @Directive44(argument97 : ["stringValue49009"]) { + field66431: Object12348 + field66437: Object12348 + field66438: Object12348 + field66439: Object12348 +} + +type Object12348 @Directive21(argument61 : "stringValue49012") @Directive44(argument97 : ["stringValue49011"]) { + field66432: Object11953 + field66433: Enum2938 + field66434: Enum2940 + field66435: Object11951 + field66436: Object11951 +} + +type Object12349 @Directive21(argument61 : "stringValue49014") @Directive44(argument97 : ["stringValue49013"]) { + field66441: Object12350 + field66444: Object12350 + field66445: Object12350 + field66446: Object12350 +} + +type Object1235 @Directive22(argument62 : "stringValue6414") @Directive31 @Directive44(argument97 : ["stringValue6415", "stringValue6416"]) { + field6899: String + field6900: String + field6901: Enum314 +} + +type Object12350 @Directive21(argument61 : "stringValue49016") @Directive44(argument97 : ["stringValue49015"]) { + field66442: Object3840 + field66443: Object11950 +} + +type Object12351 @Directive21(argument61 : "stringValue49018") @Directive44(argument97 : ["stringValue49017"]) { + field66447: String + field66448: String + field66449: String + field66450: String + field66451: String + field66452: String + field66453: String + field66454: Object12325 + field66455: String + field66456: String + field66457: String + field66458: String + field66459: String + field66460: String + field66461: String + field66462: String + field66463: String + field66464: Scalar2 + field66465: Float + field66466: Scalar1 + field66467: String + field66468: String + field66469: String + field66470: String + field66471: String + field66472: String + field66473: String + field66474: String + field66475: String + field66476: String + field66477: String +} + +type Object12352 @Directive21(argument61 : "stringValue49020") @Directive44(argument97 : ["stringValue49019"]) { + field66478: String + field66479: String + field66480: String + field66481: String + field66482: String + field66483: Scalar2 +} + +type Object12353 @Directive21(argument61 : "stringValue49022") @Directive44(argument97 : ["stringValue49021"]) { + field66484: Enum3046 +} + +type Object12354 @Directive21(argument61 : "stringValue49024") @Directive44(argument97 : ["stringValue49023"]) { + field66485: Enum3046 + field66486: String + field66487: Object12341 + field66488: Object12341 + field66489: Object12341 + field66490: Object12346 + field66491: Object12343 + field66492: Object12347 + field66493: Enum3069 + field66494: Object12343 + field66495: Object12349 +} + +type Object12355 @Directive21(argument61 : "stringValue49026") @Directive44(argument97 : ["stringValue49025"]) { + field66496: Scalar2 + field66497: Enum3071 + field66498: Enum3072 + field66499: String + field66500: String + field66501: String + field66502: Object12325 + field66503: String + field66504: String + field66505: String + field66506: String + field66507: String + field66508: String + field66509: Enum3073 + field66510: String + field66511: String + field66512: Object12356 + field66516: Object12339 + field66517: String + field66518: Enum2943 + field66519: Object11965 +} + +type Object12356 @Directive21(argument61 : "stringValue49031") @Directive44(argument97 : ["stringValue49030"]) { + field66513: Int + field66514: Int + field66515: Scalar2 +} + +type Object12357 @Directive21(argument61 : "stringValue49033") @Directive44(argument97 : ["stringValue49032"]) { + field66520: Scalar2 + field66521: Enum3074 + field66522: Enum3075 + field66523: String + field66524: String + field66525: String + field66526: Object12325 + field66527: String + field66528: String + field66529: String + field66530: String + field66531: Object12339 + field66532: [Object12358] + field66542: String +} + +type Object12358 @Directive21(argument61 : "stringValue49037") @Directive44(argument97 : ["stringValue49036"]) { + field66533: Scalar2 + field66534: Boolean + field66535: Boolean + field66536: Enum3076 + field66537: [String] + field66538: String + field66539: String + field66540: String + field66541: [Object12117] +} + +type Object12359 @Directive21(argument61 : "stringValue49040") @Directive44(argument97 : ["stringValue49039"]) { + field66543: Enum3046 + field66544: Scalar2 + field66545: String + field66546: Float +} + +type Object1236 @Directive22(argument62 : "stringValue6420") @Directive31 @Directive44(argument97 : ["stringValue6421", "stringValue6422"]) { + field6902: Boolean +} + +type Object12360 @Directive21(argument61 : "stringValue49042") @Directive44(argument97 : ["stringValue49041"]) { + field66547: Scalar2 + field66548: Enum3046 + field66549: Enum3077 + field66550: Enum3078 + field66551: String + field66552: String + field66553: String + field66554: String + field66555: String + field66556: Scalar5 + field66557: String + field66558: String +} + +type Object12361 @Directive21(argument61 : "stringValue49046") @Directive44(argument97 : ["stringValue49045"]) { + field66559: Scalar2 + field66560: Enum3079 + field66561: Enum3068 + field66562: Enum3069 + field66563: String + field66564: String + field66565: String + field66566: String + field66567: String + field66568: String + field66569: String + field66570: String + field66571: String + field66572: String + field66573: String + field66574: Object12325 + field66575: Object12339 + field66576: String + field66577: String + field66578: Boolean + field66579: String + field66580: String + field66581: String + field66582: String + field66583: String + field66584: Float + field66585: [Object11979] +} + +type Object12362 @Directive21(argument61 : "stringValue49049") @Directive44(argument97 : ["stringValue49048"]) { + field66586: Scalar2 + field66587: Enum3080 + field66588: Enum3081 + field66589: String + field66590: String + field66591: String + field66592: Object12325 + field66593: String +} + +type Object12363 @Directive21(argument61 : "stringValue49053") @Directive44(argument97 : ["stringValue49052"]) { + field66594: String + field66595: String + field66596: Object3832 + field66597: Enum3046 + field66598: Scalar2 + field66599: String + field66600: Enum3046 + field66601: String + field66602: String + field66603: String + field66604: String + field66605: String + field66606: String + field66607: Enum3050 + field66608: Object12325 +} + +type Object12364 @Directive21(argument61 : "stringValue49055") @Directive44(argument97 : ["stringValue49054"]) { + field66609: Scalar2 + field66610: Float + field66611: Enum3082 + field66612: Enum3083 + field66613: String + field66614: String + field66615: String + field66616: String + field66617: Object12325 +} + +type Object12365 @Directive21(argument61 : "stringValue49059") @Directive44(argument97 : ["stringValue49058"]) { + field66618: Scalar2 + field66619: Enum3070 + field66620: String + field66621: String + field66622: String + field66623: Object12325 + field66624: String + field66625: String + field66626: Scalar1 +} + +type Object12366 @Directive21(argument61 : "stringValue49061") @Directive44(argument97 : ["stringValue49060"]) { + field66628: Enum3084 + field66629: Boolean + field66630: Boolean + field66631: Boolean + field66632: String + field66633: String + field66634: Int + field66635: Boolean + field66636: Enum3000 + field66637: Object12367 + field66645: Int + field66646: Int + field66647: Boolean + field66648: String + field66649: Enum3085 + field66650: Boolean + field66651: Enum3001 + field66652: String + field66653: Enum3086 + field66654: String + field66655: String + field66656: Enum3005 + field66657: Enum3021 + field66658: Scalar2 + field66659: Scalar2 + field66660: Boolean + field66661: Boolean +} + +type Object12367 @Directive21(argument61 : "stringValue49064") @Directive44(argument97 : ["stringValue49063"]) { + field66638: String + field66639: [Object12368] + field66644: String +} + +type Object12368 @Directive21(argument61 : "stringValue49066") @Directive44(argument97 : ["stringValue49065"]) { + field66640: String + field66641: String + field66642: String + field66643: String +} + +type Object12369 @Directive21(argument61 : "stringValue49070") @Directive44(argument97 : ["stringValue49069"]) { + field66667: [String] + field66668: [Enum3087] +} + +type Object1237 @Directive22(argument62 : "stringValue6423") @Directive31 @Directive44(argument97 : ["stringValue6424", "stringValue6425"]) { + field6903: Boolean +} + +type Object12370 @Directive21(argument61 : "stringValue49073") @Directive44(argument97 : ["stringValue49072"]) { + field66670: String + field66671: String +} + +type Object12371 @Directive21(argument61 : "stringValue49075") @Directive44(argument97 : ["stringValue49074"]) { + field66673: [String] +} + +type Object12372 @Directive21(argument61 : "stringValue49077") @Directive44(argument97 : ["stringValue49076"]) { + field66676: Enum3047 + field66677: Int + field66678: Int + field66679: String + field66680: Boolean +} + +type Object12373 @Directive21(argument61 : "stringValue49079") @Directive44(argument97 : ["stringValue49078"]) { + field66687: Enum3088 + field66688: [Object12374] + field66694: String +} + +type Object12374 @Directive21(argument61 : "stringValue49082") @Directive44(argument97 : ["stringValue49081"]) { + field66689: String + field66690: Object12325 + field66691: Object12326 + field66692: Object12327 + field66693: Object12330 +} + +type Object12375 @Directive21(argument61 : "stringValue49084") @Directive44(argument97 : ["stringValue49083"]) { + field66696: Scalar2 + field66697: Object12320 +} + +type Object12376 @Directive21(argument61 : "stringValue49086") @Directive44(argument97 : ["stringValue49085"]) { + field66699: String + field66700: String + field66701: String + field66702: String + field66703: String + field66704: String + field66705: String + field66706: String + field66707: String + field66708: Object12377 + field66712: Scalar2 +} + +type Object12377 @Directive21(argument61 : "stringValue49088") @Directive44(argument97 : ["stringValue49087"]) { + field66709: Object12378 +} + +type Object12378 @Directive21(argument61 : "stringValue49090") @Directive44(argument97 : ["stringValue49089"]) { + field66710: String + field66711: String +} + +type Object12379 @Directive21(argument61 : "stringValue49092") @Directive44(argument97 : ["stringValue49091"]) { + field66716: Enum3053 + field66717: Scalar2 + field66718: Enum3089 + field66719: Enum3090 + field66720: Enum3091 + field66721: [Union399] + field66768: String + field66769: Scalar2 + field66770: Enum3096 + field66771: Object12381 + field66772: Object12384 + field66773: Object12388 + field66776: [Object12389] + field66779: Scalar5 + field66780: Scalar5 + field66781: Scalar5 + field66782: Scalar2 + field66783: Scalar2 + field66784: Enum3097 + field66785: Enum3098 + field66786: Float + field66787: Scalar2 + field66788: Scalar2 + field66789: Scalar2 + field66790: Enum3099 +} + +type Object1238 implements Interface81 @Directive22(argument62 : "stringValue6426") @Directive31 @Directive44(argument97 : ["stringValue6427", "stringValue6428"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object12380 @Directive21(argument61 : "stringValue49098") @Directive44(argument97 : ["stringValue49097"]) { + field66722: Enum3053 + field66723: Scalar2 + field66724: Enum3089 + field66725: Enum3090 + field66726: Scalar5 + field66727: Scalar5 + field66728: Scalar5 +} + +type Object12381 @Directive21(argument61 : "stringValue49100") @Directive44(argument97 : ["stringValue49099"]) { + field66729: String + field66730: String + field66731: Float + field66732: String + field66733: [Object12382] +} + +type Object12382 @Directive21(argument61 : "stringValue49102") @Directive44(argument97 : ["stringValue49101"]) { + field66734: String! + field66735: Enum3092! + field66736: [String]! + field66737: [String] + field66738: [Enum2989]! + field66739: [Object12383]! + field66746: [String]! + field66747: Enum3095 +} + +type Object12383 @Directive21(argument61 : "stringValue49105") @Directive44(argument97 : ["stringValue49104"]) { + field66740: Enum3093! + field66741: Enum3094! + field66742: Scalar2! + field66743: Scalar2! + field66744: [Enum2989] + field66745: [Enum2989] +} + +type Object12384 @Directive21(argument61 : "stringValue49110") @Directive44(argument97 : ["stringValue49109"]) { + field66748: Boolean + field66749: Enum2932 + field66750: String + field66751: String + field66752: String + field66753: Int + field66754: Int + field66755: Object12385 + field66760: Object12386 + field66763: Object12387 +} + +type Object12385 @Directive21(argument61 : "stringValue49112") @Directive44(argument97 : ["stringValue49111"]) { + field66756: Object11950 + field66757: Object11950 + field66758: Object11950 + field66759: Object11950 +} + +type Object12386 @Directive21(argument61 : "stringValue49114") @Directive44(argument97 : ["stringValue49113"]) { + field66761: Object12341 + field66762: Object12341 +} + +type Object12387 @Directive21(argument61 : "stringValue49116") @Directive44(argument97 : ["stringValue49115"]) { + field66764: Object12287 + field66765: Object12287 + field66766: Object12287 + field66767: Object12287 +} + +type Object12388 @Directive21(argument61 : "stringValue49119") @Directive44(argument97 : ["stringValue49118"]) { + field66774: String + field66775: String +} + +type Object12389 @Directive21(argument61 : "stringValue49121") @Directive44(argument97 : ["stringValue49120"]) { + field66777: Scalar2 + field66778: Scalar1 +} + +type Object1239 @Directive20(argument58 : "stringValue6430", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6429") @Directive31 @Directive44(argument97 : ["stringValue6431", "stringValue6432"]) { + field6904: [Object1240!] + field6908: String + field6909: Object480 + field6910: String + field6911: Object480 @deprecated + field6912: Object1241 + field6915: Object721 + field6916: [Object480!] + field6917: Object478 + field6918: [Object480!] + field6919: [Object1242!] + field6926: Object1243 + field6927: [Object480!] + field6928: String + field6929: String + field6930: String + field6931: String! + field6932: Object480 + field6933: Enum315 +} + +type Object12390 @Directive21(argument61 : "stringValue49126") @Directive44(argument97 : ["stringValue49125"]) { + field66792: Scalar2 + field66793: Union398 + field66794: Object12318 +} + +type Object12391 @Directive21(argument61 : "stringValue49128") @Directive44(argument97 : ["stringValue49127"]) { + field66797: Object12326 + field66798: Scalar2 + field66799: Scalar2 + field66800: Scalar2 +} + +type Object12392 @Directive21(argument61 : "stringValue49131") @Directive44(argument97 : ["stringValue49130"]) { + field66809: String + field66810: String + field66811: Object12393 + field66819: Scalar4 + field66820: Scalar4 +} + +type Object12393 @Directive21(argument61 : "stringValue49133") @Directive44(argument97 : ["stringValue49132"]) { + field66812: Float + field66813: Scalar2 + field66814: Float + field66815: Scalar2 + field66816: Float + field66817: Float + field66818: Scalar2 +} + +type Object12394 @Directive21(argument61 : "stringValue49135") @Directive44(argument97 : ["stringValue49134"]) { + field66824: Object12320 + field66825: Boolean +} + +type Object12395 @Directive21(argument61 : "stringValue49137") @Directive44(argument97 : ["stringValue49136"]) { + field66827: Enum3101 + field66828: Boolean +} + +type Object12396 @Directive44(argument97 : ["stringValue49139"]) { + field66830(argument2640: InputObject2272!): Object12397 @Directive35(argument89 : "stringValue49141", argument90 : true, argument91 : "stringValue49140", argument92 : 1147, argument93 : "stringValue49142", argument94 : false) + field66832(argument2641: InputObject2272!): Object12397 @Directive35(argument89 : "stringValue49147", argument90 : true, argument91 : "stringValue49146", argument92 : 1148, argument93 : "stringValue49148", argument94 : false) + field66833(argument2642: InputObject2273!): Object12398 @Directive35(argument89 : "stringValue49150", argument90 : true, argument91 : "stringValue49149", argument93 : "stringValue49151", argument94 : false) + field66835(argument2643: InputObject2275!): Object12399 @Directive35(argument89 : "stringValue49159", argument90 : true, argument91 : "stringValue49158", argument92 : 1149, argument93 : "stringValue49160", argument94 : false) + field66837(argument2644: InputObject2276!): Object12400 @Directive35(argument89 : "stringValue49165", argument90 : true, argument91 : "stringValue49164", argument92 : 1150, argument93 : "stringValue49166", argument94 : false) + field66849: Object12402 @Directive35(argument89 : "stringValue49173", argument90 : true, argument91 : "stringValue49172", argument92 : 1151, argument93 : "stringValue49174", argument94 : false) + field66857: Object12404 @Directive35(argument89 : "stringValue49180", argument90 : true, argument91 : "stringValue49179", argument92 : 1152, argument93 : "stringValue49181", argument94 : false) + field66863(argument2645: InputObject2277!): Object12406 @Directive35(argument89 : "stringValue49187", argument90 : true, argument91 : "stringValue49186", argument92 : 1153, argument93 : "stringValue49188", argument94 : false) + field66865(argument2646: InputObject2277!): Object12406 @Directive35(argument89 : "stringValue49193", argument90 : true, argument91 : "stringValue49192", argument92 : 1154, argument93 : "stringValue49194", argument94 : false) + field66866(argument2647: InputObject2278!): Object12407 @Directive35(argument89 : "stringValue49196", argument90 : true, argument91 : "stringValue49195", argument92 : 1155, argument93 : "stringValue49197", argument94 : false) + field66868(argument2648: InputObject2278!): Object12407 @Directive35(argument89 : "stringValue49202", argument90 : true, argument91 : "stringValue49201", argument92 : 1156, argument93 : "stringValue49203", argument94 : false) + field66869(argument2649: InputObject2279!): Object12408 @Directive35(argument89 : "stringValue49205", argument90 : true, argument91 : "stringValue49204", argument92 : 1157, argument93 : "stringValue49206", argument94 : false) + field66900(argument2650: InputObject2280!): Object12414 @Directive35(argument89 : "stringValue49221", argument90 : true, argument91 : "stringValue49220", argument92 : 1158, argument93 : "stringValue49222", argument94 : false) + field66907(argument2651: InputObject2281!): Object12417 @Directive35(argument89 : "stringValue49231", argument90 : true, argument91 : "stringValue49230", argument92 : 1159, argument93 : "stringValue49232", argument94 : false) + field66909(argument2652: InputObject2282!): Object12418 @Directive35(argument89 : "stringValue49237", argument90 : true, argument91 : "stringValue49236", argument92 : 1160, argument93 : "stringValue49238", argument94 : false) + field66911: Object12419 @Directive35(argument89 : "stringValue49243", argument90 : true, argument91 : "stringValue49242", argument92 : 1161, argument93 : "stringValue49244", argument94 : false) + field66917(argument2653: InputObject2283!): Object12420 @Directive35(argument89 : "stringValue49248", argument90 : true, argument91 : "stringValue49247", argument92 : 1162, argument93 : "stringValue49249", argument94 : false) + field66941(argument2654: InputObject2284!): Object12423 @Directive35(argument89 : "stringValue49258", argument90 : true, argument91 : "stringValue49257", argument92 : 1163, argument93 : "stringValue49259", argument94 : false) + field66958(argument2655: InputObject2285!): Object12423 @Directive35(argument89 : "stringValue49266", argument90 : true, argument91 : "stringValue49265", argument92 : 1164, argument93 : "stringValue49267", argument94 : false) + field66959(argument2656: InputObject2286!): Object12425 @Directive35(argument89 : "stringValue49270", argument90 : true, argument91 : "stringValue49269", argument92 : 1165, argument93 : "stringValue49271", argument94 : false) + field66965(argument2657: InputObject2287!): Object12427 @Directive35(argument89 : "stringValue49278", argument90 : true, argument91 : "stringValue49277", argument93 : "stringValue49279", argument94 : false) + field66967(argument2658: InputObject2288!): Object12428 @Directive35(argument89 : "stringValue49284", argument90 : true, argument91 : "stringValue49283", argument92 : 1166, argument93 : "stringValue49285", argument94 : false) + field67052: Object12442 @Directive35(argument89 : "stringValue49317", argument90 : true, argument91 : "stringValue49316", argument92 : 1167, argument93 : "stringValue49318", argument94 : false) + field67055: Object12443 @Directive35(argument89 : "stringValue49322", argument90 : true, argument91 : "stringValue49321", argument92 : 1168, argument93 : "stringValue49323", argument94 : false) + field67063(argument2659: InputObject2289!): Object12444 @Directive35(argument89 : "stringValue49327", argument90 : true, argument91 : "stringValue49326", argument92 : 1169, argument93 : "stringValue49328", argument94 : false) + field67065(argument2660: InputObject2289!): Object12444 @Directive35(argument89 : "stringValue49333", argument90 : true, argument91 : "stringValue49332", argument93 : "stringValue49334", argument94 : false) + field67066(argument2661: InputObject2290!): Object12445 @Directive35(argument89 : "stringValue49336", argument90 : true, argument91 : "stringValue49335", argument92 : 1170, argument93 : "stringValue49337", argument94 : false) + field67073(argument2662: InputObject2291!): Object12448 @Directive35(argument89 : "stringValue49347", argument90 : true, argument91 : "stringValue49346", argument92 : 1171, argument93 : "stringValue49348", argument94 : false) + field67083(argument2663: InputObject2292!): Object12452 @Directive35(argument89 : "stringValue49359", argument90 : true, argument91 : "stringValue49358", argument92 : 1172, argument93 : "stringValue49360", argument94 : false) + field67335: Object12460 @Directive35(argument89 : "stringValue49384", argument90 : true, argument91 : "stringValue49383", argument92 : 1173, argument93 : "stringValue49385", argument94 : false) + field67345(argument2664: InputObject2293!): Object12463 @Directive35(argument89 : "stringValue49393", argument90 : true, argument91 : "stringValue49392", argument93 : "stringValue49394", argument94 : false) + field67921(argument2665: InputObject2294!): Object12517 @Directive35(argument89 : "stringValue49558", argument90 : true, argument91 : "stringValue49557", argument92 : 1174, argument93 : "stringValue49559", argument94 : false) + field67923(argument2666: InputObject2294!): Object12517 @Directive35(argument89 : "stringValue49564", argument90 : true, argument91 : "stringValue49563", argument93 : "stringValue49565", argument94 : false) + field67924(argument2667: InputObject2295!): Object12406 @Directive35(argument89 : "stringValue49567", argument90 : true, argument91 : "stringValue49566", argument92 : 1175, argument93 : "stringValue49568", argument94 : false) + field67925(argument2668: InputObject2296!): Object12518 @Directive35(argument89 : "stringValue49571", argument90 : true, argument91 : "stringValue49570", argument92 : 1176, argument93 : "stringValue49572", argument94 : false) + field67927(argument2669: InputObject2300!): Object12519 @Directive35(argument89 : "stringValue49588", argument90 : true, argument91 : "stringValue49587", argument92 : 1177, argument93 : "stringValue49589", argument94 : false) + field67929(argument2670: InputObject2300!): Object12519 @Directive35(argument89 : "stringValue49594", argument90 : true, argument91 : "stringValue49593", argument92 : 1178, argument93 : "stringValue49595", argument94 : false) + field67930(argument2671: InputObject2301!): Object12520 @Directive35(argument89 : "stringValue49597", argument90 : true, argument91 : "stringValue49596", argument93 : "stringValue49598", argument94 : false) + field67932(argument2672: InputObject2302!): Object12521 @Directive35(argument89 : "stringValue49603", argument90 : true, argument91 : "stringValue49602", argument92 : 1179, argument93 : "stringValue49604", argument94 : false) +} + +type Object12397 @Directive21(argument61 : "stringValue49145") @Directive44(argument97 : ["stringValue49144"]) { + field66831: Object6015! +} + +type Object12398 @Directive21(argument61 : "stringValue49157") @Directive44(argument97 : ["stringValue49156"]) { + field66834: Object6015! +} + +type Object12399 @Directive21(argument61 : "stringValue49163") @Directive44(argument97 : ["stringValue49162"]) { + field66836: Object6015! +} + +type Object124 @Directive21(argument61 : "stringValue446") @Directive44(argument97 : ["stringValue445"]) { + field789: Boolean + field790: String + field791: String + field792: String +} + +type Object1240 @Directive22(argument62 : "stringValue6433") @Directive31 @Directive44(argument97 : ["stringValue6434", "stringValue6435"]) { + field6905: Object721 + field6906: ID + field6907: String +} + +type Object12400 @Directive21(argument61 : "stringValue49169") @Directive44(argument97 : ["stringValue49168"]) { + field66838: [Object12401!]! + field66848: [String!]! +} + +type Object12401 @Directive21(argument61 : "stringValue49171") @Directive44(argument97 : ["stringValue49170"]) { + field66839: Scalar2! + field66840: String! + field66841: String! + field66842: String! + field66843: String! + field66844: Scalar1! + field66845: [Object6013!]! + field66846: Int + field66847: [String!] +} + +type Object12402 @Directive21(argument61 : "stringValue49176") @Directive44(argument97 : ["stringValue49175"]) { + field66850: [Object12403!]! +} + +type Object12403 @Directive21(argument61 : "stringValue49178") @Directive44(argument97 : ["stringValue49177"]) { + field66851: Scalar2! + field66852: String! + field66853: String! + field66854: String! + field66855: String! + field66856: Enum1534! +} + +type Object12404 @Directive21(argument61 : "stringValue49183") @Directive44(argument97 : ["stringValue49182"]) { + field66858: [Object12405!]! +} + +type Object12405 @Directive21(argument61 : "stringValue49185") @Directive44(argument97 : ["stringValue49184"]) { + field66859: Scalar2! + field66860: String! + field66861: Scalar4! + field66862: Scalar4! +} + +type Object12406 @Directive21(argument61 : "stringValue49191") @Directive44(argument97 : ["stringValue49190"]) { + field66864: [Object6015]! +} + +type Object12407 @Directive21(argument61 : "stringValue49200") @Directive44(argument97 : ["stringValue49199"]) { + field66867: [Object6015]! +} + +type Object12408 @Directive21(argument61 : "stringValue49209") @Directive44(argument97 : ["stringValue49208"]) { + field66870: [Object12409!] + field66886: String + field66887: [Object12411!] + field66899: Object6023 +} + +type Object12409 @Directive21(argument61 : "stringValue49211") @Directive44(argument97 : ["stringValue49210"]) { + field66871: Scalar2! + field66872: Scalar2! + field66873: Scalar2 + field66874: [Object6025!] + field66875: Scalar4 + field66876: Object12410 +} + +type Object1241 @Directive20(argument58 : "stringValue6437", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6436") @Directive31 @Directive44(argument97 : ["stringValue6438", "stringValue6439"]) { + field6913: Object480 + field6914: Object480 +} + +type Object12410 @Directive21(argument61 : "stringValue49213") @Directive44(argument97 : ["stringValue49212"]) { + field66877: Scalar2 + field66878: Scalar2 + field66879: Scalar2 + field66880: Scalar2 + field66881: Scalar2 + field66882: Scalar2 + field66883: String + field66884: String + field66885: Object6027 +} + +type Object12411 @Directive21(argument61 : "stringValue49215") @Directive44(argument97 : ["stringValue49214"]) { + field66888: Object12409! + field66889: Object12412! + field66891: Object12410 + field66892: Object12413 + field66898: [Object6028] +} + +type Object12412 @Directive21(argument61 : "stringValue49217") @Directive44(argument97 : ["stringValue49216"]) { + field66890: Scalar2! +} + +type Object12413 @Directive21(argument61 : "stringValue49219") @Directive44(argument97 : ["stringValue49218"]) { + field66893: Scalar2! + field66894: Scalar4 + field66895: Scalar4 + field66896: String + field66897: String +} + +type Object12414 @Directive21(argument61 : "stringValue49225") @Directive44(argument97 : ["stringValue49224"]) { + field66901: [Object12415!]! +} + +type Object12415 @Directive21(argument61 : "stringValue49227") @Directive44(argument97 : ["stringValue49226"]) { + field66902: [Object12416!]! + field66905: Scalar2 + field66906: String +} + +type Object12416 @Directive21(argument61 : "stringValue49229") @Directive44(argument97 : ["stringValue49228"]) { + field66903: Object6013! + field66904: Object6012 +} + +type Object12417 @Directive21(argument61 : "stringValue49235") @Directive44(argument97 : ["stringValue49234"]) { + field66908: Scalar2! +} + +type Object12418 @Directive21(argument61 : "stringValue49241") @Directive44(argument97 : ["stringValue49240"]) { + field66910: String! +} + +type Object12419 @Directive21(argument61 : "stringValue49246") @Directive44(argument97 : ["stringValue49245"]) { + field66912: Scalar1! + field66913: Scalar1! + field66914: Scalar1! + field66915: Scalar1! + field66916: Scalar1! +} + +type Object1242 @Directive20(argument58 : "stringValue6442", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6440") @Directive42(argument96 : ["stringValue6441"]) @Directive44(argument97 : ["stringValue6443", "stringValue6444"]) { + field6920: Object1243 @Directive40 + field6925: String @Directive40 +} + +type Object12420 @Directive21(argument61 : "stringValue49252") @Directive44(argument97 : ["stringValue49251"]) { + field66918: Object12421 +} + +type Object12421 @Directive21(argument61 : "stringValue49254") @Directive44(argument97 : ["stringValue49253"]) { + field66919: Scalar2! + field66920: String! + field66921: String! + field66922: String! + field66923: String! + field66924: [Object12422!]! + field66928: Enum1534! + field66929: String + field66930: String! + field66931: String + field66932: String! + field66933: String! + field66934: String! + field66935: String! + field66936: Float! + field66937: Float! + field66938: Scalar4! + field66939: Scalar4! + field66940: Enum1535! +} + +type Object12422 @Directive21(argument61 : "stringValue49256") @Directive44(argument97 : ["stringValue49255"]) { + field66925: Scalar2! + field66926: Enum1532! + field66927: Scalar2! +} + +type Object12423 @Directive21(argument61 : "stringValue49262") @Directive44(argument97 : ["stringValue49261"]) { + field66942: [Object12424]! +} + +type Object12424 @Directive21(argument61 : "stringValue49264") @Directive44(argument97 : ["stringValue49263"]) { + field66943: Scalar2! + field66944: Scalar2! + field66945: [Object12422]! + field66946: Enum1534! + field66947: String! + field66948: String + field66949: String! + field66950: String! + field66951: String! + field66952: String! + field66953: Float! + field66954: Float! + field66955: Scalar4! + field66956: Scalar4! + field66957: Enum1535! +} + +type Object12425 @Directive21(argument61 : "stringValue49274") @Directive44(argument97 : ["stringValue49273"]) { + field66960: [Object12426] +} + +type Object12426 @Directive21(argument61 : "stringValue49276") @Directive44(argument97 : ["stringValue49275"]) { + field66961: Scalar2 + field66962: Scalar2! + field66963: Scalar2! + field66964: String! +} + +type Object12427 @Directive21(argument61 : "stringValue49282") @Directive44(argument97 : ["stringValue49281"]) { + field66966: Scalar1! +} + +type Object12428 @Directive21(argument61 : "stringValue49288") @Directive44(argument97 : ["stringValue49287"]) { + field66968: [Object12429] +} + +type Object12429 @Directive21(argument61 : "stringValue49290") @Directive44(argument97 : ["stringValue49289"]) { + field66969: Object12430 + field66979: [Object12431] + field66989: [Object12432] + field66996: [Object12433] + field67006: Object12434 + field67021: Object12437 +} + +type Object1243 @Directive20(argument58 : "stringValue6447", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6445") @Directive42(argument96 : ["stringValue6446"]) @Directive44(argument97 : ["stringValue6448", "stringValue6449"]) { + field6921: String @Directive40 + field6922: Object480 @Directive41 + field6923: String @Directive41 @deprecated + field6924: Int @Directive41 +} + +type Object12430 @Directive21(argument61 : "stringValue49292") @Directive44(argument97 : ["stringValue49291"]) { + field66970: String! + field66971: String! + field66972: String + field66973: String + field66974: String + field66975: Scalar4 + field66976: String + field66977: Scalar4 + field66978: String +} + +type Object12431 @Directive21(argument61 : "stringValue49294") @Directive44(argument97 : ["stringValue49293"]) { + field66980: String! + field66981: String! + field66982: String + field66983: String + field66984: Enum3104 + field66985: Scalar4 + field66986: String + field66987: Scalar4 + field66988: String +} + +type Object12432 @Directive21(argument61 : "stringValue49297") @Directive44(argument97 : ["stringValue49296"]) { + field66990: String + field66991: String + field66992: String + field66993: Scalar4 + field66994: Scalar4 + field66995: Scalar4 +} + +type Object12433 @Directive21(argument61 : "stringValue49299") @Directive44(argument97 : ["stringValue49298"]) { + field66997: String + field66998: String + field66999: String + field67000: String + field67001: String + field67002: String + field67003: Scalar4 + field67004: Scalar4 + field67005: Scalar4 +} + +type Object12434 @Directive21(argument61 : "stringValue49301") @Directive44(argument97 : ["stringValue49300"]) { + field67007: Object12435 + field67014: [Object12436] +} + +type Object12435 @Directive21(argument61 : "stringValue49303") @Directive44(argument97 : ["stringValue49302"]) { + field67008: Scalar2 + field67009: String! + field67010: String! + field67011: String! + field67012: String! + field67013: Scalar4! +} + +type Object12436 @Directive21(argument61 : "stringValue49305") @Directive44(argument97 : ["stringValue49304"]) { + field67015: Scalar2 + field67016: String! + field67017: String! + field67018: String! + field67019: String! + field67020: Scalar2 +} + +type Object12437 @Directive21(argument61 : "stringValue49307") @Directive44(argument97 : ["stringValue49306"]) { + field67022: String + field67023: String + field67024: Int + field67025: String + field67026: [Object12438] + field67029: [Object12439] + field67043: [Object12441] + field67049: [Object12436] + field67050: String + field67051: String +} + +type Object12438 @Directive21(argument61 : "stringValue49309") @Directive44(argument97 : ["stringValue49308"]) { + field67027: String + field67028: String +} + +type Object12439 @Directive21(argument61 : "stringValue49311") @Directive44(argument97 : ["stringValue49310"]) { + field67030: String + field67031: String + field67032: String + field67033: String + field67034: String + field67035: String + field67036: String + field67037: [Object12440] + field67042: [Object12440] +} + +type Object1244 @Directive22(argument62 : "stringValue6454") @Directive31 @Directive44(argument97 : ["stringValue6455", "stringValue6456"]) { + field6934: String @Directive37(argument95 : "stringValue6457") + field6935: Object1195 @Directive37(argument95 : "stringValue6458") + field6936: [Object728] @Directive37(argument95 : "stringValue6459") + field6937: [Object729] @Directive37(argument95 : "stringValue6460") + field6938: Enum208 @Directive37(argument95 : "stringValue6461") + field6939: Enum209 @Directive37(argument95 : "stringValue6462") +} + +type Object12440 @Directive21(argument61 : "stringValue49313") @Directive44(argument97 : ["stringValue49312"]) { + field67038: String + field67039: String + field67040: String + field67041: String +} + +type Object12441 @Directive21(argument61 : "stringValue49315") @Directive44(argument97 : ["stringValue49314"]) { + field67044: String + field67045: String + field67046: String + field67047: String + field67048: String +} + +type Object12442 @Directive21(argument61 : "stringValue49320") @Directive44(argument97 : ["stringValue49319"]) { + field67053: Scalar2! + field67054: Boolean! +} + +type Object12443 @Directive21(argument61 : "stringValue49325") @Directive44(argument97 : ["stringValue49324"]) { + field67056: Scalar1! + field67057: Scalar1! + field67058: Scalar1! + field67059: Scalar1! + field67060: Scalar1! + field67061: Scalar1! + field67062: Scalar1! +} + +type Object12444 @Directive21(argument61 : "stringValue49331") @Directive44(argument97 : ["stringValue49330"]) { + field67064: Object6015! +} + +type Object12445 @Directive21(argument61 : "stringValue49340") @Directive44(argument97 : ["stringValue49339"]) { + field67067: [Object12446]! + field67072: Scalar2 +} + +type Object12446 @Directive21(argument61 : "stringValue49342") @Directive44(argument97 : ["stringValue49341"]) { + field67068: String! + field67069: [Object12447] +} + +type Object12447 @Directive21(argument61 : "stringValue49344") @Directive44(argument97 : ["stringValue49343"]) { + field67070: String! + field67071: Enum3105! +} + +type Object12448 @Directive21(argument61 : "stringValue49351") @Directive44(argument97 : ["stringValue49350"]) { + field67074: Object12449! + field67076: Object12450! + field67079: Object12451! + field67081: Scalar1! + field67082: [String]! +} + +type Object12449 @Directive21(argument61 : "stringValue49353") @Directive44(argument97 : ["stringValue49352"]) { + field67075: Scalar1! +} + +type Object1245 @Directive20(argument58 : "stringValue6464", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6463") @Directive31 @Directive44(argument97 : ["stringValue6465", "stringValue6466"]) { + field6940: String + field6941: Float + field6942: Float + field6943: Object480 + field6944: Object1246 +} + +type Object12450 @Directive21(argument61 : "stringValue49355") @Directive44(argument97 : ["stringValue49354"]) { + field67077: Scalar2! + field67078: Scalar1! +} + +type Object12451 @Directive21(argument61 : "stringValue49357") @Directive44(argument97 : ["stringValue49356"]) { + field67080: Scalar1! +} + +type Object12452 @Directive21(argument61 : "stringValue49363") @Directive44(argument97 : ["stringValue49362"]) { + field67084: Scalar2! + field67085: String! + field67086: String! + field67087: Scalar1! + field67088: Object12453 + field67297: Object12459 +} + +type Object12453 @Directive21(argument61 : "stringValue49365") @Directive44(argument97 : ["stringValue49364"]) { + field67089: Scalar2 + field67090: String + field67091: String + field67092: String + field67093: String + field67094: String + field67095: Scalar3 + field67096: Scalar4 + field67097: String + field67098: String + field67099: String + field67100: Int + field67101: Float + field67102: Int + field67103: Int + field67104: String + field67105: Boolean + field67106: Boolean + field67107: String + field67108: String + field67109: Scalar4 + field67110: String + field67111: Int + field67112: Scalar2 + field67113: String + field67114: Scalar4 + field67115: Boolean + field67116: Int + field67117: Boolean + field67118: Int + field67119: Int + field67120: Scalar4 + field67121: Boolean + field67122: Boolean + field67123: Boolean + field67124: Int + field67125: Int + field67126: Int + field67127: String + field67128: String + field67129: String + field67130: Int + field67131: String + field67132: String + field67133: Scalar2 + field67134: String + field67135: String + field67136: Int + field67137: Scalar4 + field67138: Int + field67139: Int + field67140: String + field67141: Boolean + field67142: Scalar4 + field67143: Scalar4 + field67144: Boolean + field67145: Int + field67146: Boolean + field67147: Scalar2 + field67148: Int + field67149: Int + field67150: Scalar4 + field67151: [Object12454] + field67163: String + field67164: Int + field67165: String + field67166: String + field67167: Boolean + field67168: String + field67169: String + field67170: String + field67171: Int + field67172: Int + field67173: String + field67174: Int + field67175: Int + field67176: String + field67177: Int + field67178: String + field67179: String + field67180: Int + field67181: String + field67182: Int + field67183: String + field67184: Int + field67185: Boolean + field67186: Boolean + field67187: Boolean + field67188: Boolean + field67189: Boolean + field67190: Int + field67191: Boolean + field67192: Boolean + field67193: Int + field67194: Int + field67195: Int + field67196: Boolean + field67197: Int + field67198: String + field67199: Boolean + field67200: Boolean + field67201: Boolean + field67202: Boolean + field67203: Boolean + field67204: Boolean + field67205: String + field67206: String + field67207: [String] + field67208: String + field67209: Boolean + field67210: String + field67211: String + field67212: String + field67213: String + field67214: String + field67215: String + field67216: String + field67217: String + field67218: String + field67219: Boolean + field67220: Boolean + field67221: [String] + field67222: String + field67223: String + field67224: String + field67225: String + field67226: Object12455 + field67246: Boolean + field67247: Boolean + field67248: Boolean @deprecated + field67249: Scalar2 + field67250: Enum3107 + field67251: Boolean + field67252: [Object12456] + field67263: [Object12457] + field67284: [Object12458] + field67295: String + field67296: Enum3109 +} + +type Object12454 @Directive21(argument61 : "stringValue49367") @Directive44(argument97 : ["stringValue49366"]) { + field67152: Scalar2 + field67153: Scalar4 + field67154: Scalar4 + field67155: String + field67156: Enum3106 + field67157: Scalar2 + field67158: String + field67159: String + field67160: Scalar3 + field67161: String + field67162: Scalar2 +} + +type Object12455 @Directive21(argument61 : "stringValue49370") @Directive44(argument97 : ["stringValue49369"]) { + field67227: Scalar2 + field67228: Scalar2 + field67229: String + field67230: String + field67231: String + field67232: String + field67233: String + field67234: String + field67235: String + field67236: String + field67237: Scalar4 + field67238: Scalar4 + field67239: Scalar4 + field67240: Scalar4 + field67241: Boolean + field67242: Boolean + field67243: Boolean + field67244: Float + field67245: Float +} + +type Object12456 @Directive21(argument61 : "stringValue49373") @Directive44(argument97 : ["stringValue49372"]) { + field67253: Scalar2 + field67254: Scalar2 + field67255: String + field67256: String + field67257: String + field67258: String + field67259: Scalar4 + field67260: Scalar4 + field67261: String + field67262: String +} + +type Object12457 @Directive21(argument61 : "stringValue49375") @Directive44(argument97 : ["stringValue49374"]) { + field67264: Scalar2 + field67265: Scalar2 + field67266: String + field67267: String + field67268: String + field67269: String + field67270: String + field67271: String + field67272: String + field67273: String + field67274: String + field67275: String + field67276: Boolean + field67277: Float + field67278: Float + field67279: String + field67280: String + field67281: String + field67282: Scalar4 + field67283: Scalar4 +} + +type Object12458 @Directive21(argument61 : "stringValue49377") @Directive44(argument97 : ["stringValue49376"]) { + field67285: Scalar2 + field67286: Scalar2 + field67287: Enum3108 + field67288: Int + field67289: Scalar4 + field67290: String + field67291: String + field67292: String + field67293: Scalar4 + field67294: Scalar4 +} + +type Object12459 @Directive21(argument61 : "stringValue49381") @Directive44(argument97 : ["stringValue49380"]) { + field67298: String + field67299: Scalar2 + field67300: String + field67301: Scalar2 + field67302: Scalar4 + field67303: Scalar4 + field67304: Enum3110 + field67305: Scalar4 @deprecated + field67306: Scalar4 @deprecated + field67307: Scalar4 @deprecated + field67308: Scalar4 @deprecated + field67309: String + field67310: Float + field67311: Scalar4 + field67312: Scalar4 + field67313: Scalar4 + field67314: String + field67315: Scalar4 + field67316: Scalar4 + field67317: Scalar4 + field67318: Scalar4 + field67319: Scalar4 + field67320: Scalar4 + field67321: Scalar4 + field67322: Scalar4 + field67323: Scalar4 + field67324: Scalar4 + field67325: Scalar4 + field67326: Scalar4 + field67327: Scalar4 + field67328: String + field67329: String + field67330: Scalar4 + field67331: Scalar4 + field67332: String + field67333: String + field67334: String +} + +type Object1246 @Directive20(argument58 : "stringValue6468", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6467") @Directive31 @Directive44(argument97 : ["stringValue6469", "stringValue6470"]) { + field6945: Enum10 + field6946: String + field6947: String + field6948: Enum316 + field6949: Object1 + field6950: Interface6 + field6951: String +} + +type Object12460 @Directive21(argument61 : "stringValue49387") @Directive44(argument97 : ["stringValue49386"]) { + field67336: Object12461! + field67340: Boolean! + field67341: [Object12462]! + field67344: Boolean! +} + +type Object12461 @Directive21(argument61 : "stringValue49389") @Directive44(argument97 : ["stringValue49388"]) { + field67337: String! + field67338: String! + field67339: String +} + +type Object12462 @Directive21(argument61 : "stringValue49391") @Directive44(argument97 : ["stringValue49390"]) { + field67342: Enum1592! + field67343: String! +} + +type Object12463 @Directive21(argument61 : "stringValue49397") @Directive44(argument97 : ["stringValue49396"]) { + field67346: Object12464! + field67884: Object12453! + field67885: Object12512 + field67897: Object12513 + field67920: Object6064 +} + +type Object12464 @Directive21(argument61 : "stringValue49399") @Directive44(argument97 : ["stringValue49398"]) { + field67347: Scalar2 + field67348: Scalar4 + field67349: Scalar4 + field67350: Scalar4 + field67351: Scalar2 + field67352: Enum1554 + field67353: Enum3111 + field67354: Scalar2 + field67355: Enum3112 + field67356: Boolean + field67357: Scalar4 + field67358: Boolean + field67359: Scalar4 + field67360: Scalar4 + field67361: Int + field67362: Boolean + field67363: Boolean + field67364: Boolean + field67365: Scalar2 + field67366: String + field67367: Scalar4 + field67368: Boolean + field67369: Boolean + field67370: Boolean + field67371: Enum3113 + field67372: Boolean + field67373: Boolean + field67374: Enum1545 + field67375: Enum3114 + field67376: Enum3115 + field67377: String + field67378: Enum3116 + field67379: Enum3117 + field67380: Int + field67381: Float + field67382: Int + field67383: Int + field67384: Int + field67385: Int + field67386: String + field67387: String + field67388: String + field67389: Boolean + field67390: Enum3118 + field67391: Int + field67392: Int + field67393: Int + field67394: Int + field67395: Int + field67396: Float + field67397: Float + field67398: String + field67399: String + field67400: String + field67401: String + field67402: String + field67403: String + field67404: String + field67405: String + field67406: String + field67407: String + field67408: String + field67409: String + field67410: String + field67411: String + field67412: String + field67413: Boolean + field67414: Boolean + field67415: Boolean + field67416: String + field67417: String + field67418: Float + field67419: Int + field67420: String + field67421: String + field67422: String + field67423: String + field67424: String + field67425: String + field67426: String + field67427: String + field67428: String + field67429: String + field67430: String + field67431: String + field67432: String + field67433: String + field67434: String + field67435: Enum3119 + field67436: String + field67437: String + field67438: String + field67439: String + field67440: String + field67441: String + field67442: String + field67443: String + field67444: String + field67445: String + field67446: String + field67447: String + field67448: Boolean + field67449: String + field67450: String + field67451: Enum3120 + field67452: Int + field67453: Int + field67454: Int + field67455: Int + field67456: Int + field67457: Boolean + field67458: Boolean + field67459: Boolean + field67460: Enum3121 + field67461: Int + field67462: String + field67463: String + field67464: Boolean + field67465: Boolean + field67466: Boolean + field67467: Boolean + field67468: Boolean + field67469: Boolean + field67470: Boolean + field67471: Boolean + field67472: String + field67473: String + field67474: String + field67475: Boolean + field67476: Int + field67477: String + field67478: Int + field67479: Scalar4 + field67480: String + field67481: Scalar4 + field67482: Boolean + field67483: String + field67484: Scalar4 + field67485: Scalar2 + field67486: Scalar2 + field67487: String + field67488: Boolean + field67489: Boolean + field67490: Int + field67491: String + field67492: Int + field67493: Boolean + field67494: Boolean + field67495: String + field67496: String + field67497: String + field67498: String + field67499: Boolean + field67500: Boolean + field67501: Boolean + field67502: Boolean + field67503: Boolean + field67504: Boolean + field67505: Boolean + field67506: Boolean + field67507: Int + field67508: Boolean + field67509: Boolean + field67510: Boolean + field67511: String + field67512: Int + field67513: Boolean + field67514: Int + field67515: Scalar4 + field67516: Boolean + field67517: Float + field67518: Float + field67519: Int + field67520: Int + field67521: Int + field67522: Enum3122 + field67523: Enum3123 + field67524: Enum3124 + field67525: Boolean + field67526: Boolean + field67527: Boolean + field67528: Boolean + field67529: Boolean + field67530: Boolean + field67531: Boolean + field67532: Boolean + field67533: Boolean + field67534: Scalar4 + field67535: Boolean + field67536: Enum3125 + field67537: Scalar3 + field67538: Enum3126 + field67539: Int + field67540: String + field67541: String + field67542: String + field67543: String + field67544: String + field67545: String + field67546: String + field67547: String + field67548: String + field67549: String + field67550: String + field67551: String + field67552: Boolean + field67553: Float + field67554: Scalar2 + field67555: Boolean + field67556: Scalar2 + field67557: Boolean + field67558: Boolean + field67559: Boolean + field67560: String + field67561: String + field67562: Enum3127 + field67563: Boolean + field67564: Enum3128 + field67565: String + field67566: String + field67567: String + field67568: String + field67569: String + field67570: String + field67571: String + field67572: String + field67573: Boolean + field67574: Enum3129 + field67575: Scalar2 + field67576: Boolean + field67577: Boolean + field67578: Boolean + field67579: Int + field67580: Scalar4 + field67581: Scalar4 + field67582: [Scalar2] + field67583: Object12465 + field67592: Object12466 + field67599: Object12468 + field67610: Object12469 + field67621: Object12470 + field67672: [Scalar2] + field67673: [Scalar2] + field67674: [Enum1555] + field67675: [Enum3137] + field67676: [String] + field67677: [String] + field67678: [String] + field67679: [Object12486] + field67699: [Object12487] + field67710: [Object12488] + field67720: [Object12489] + field67728: [Object12490] + field67737: [Object12491] + field67814: [Object12502] + field67850: [Union401] + field67868: [Enum3152] + field67869: Enum3153 + field67870: Scalar4 + field67871: [Object12507] +} + +type Object12465 @Directive21(argument61 : "stringValue49420") @Directive44(argument97 : ["stringValue49419"]) { + field67584: Boolean + field67585: Boolean + field67586: Int + field67587: Int + field67588: Int + field67589: [Int] + field67590: [Enum3130] + field67591: [Enum3130] +} + +type Object12466 @Directive21(argument61 : "stringValue49423") @Directive44(argument97 : ["stringValue49422"]) { + field67593: Scalar2 + field67594: Object12467 + field67598: [Enum3131] +} + +type Object12467 @Directive21(argument61 : "stringValue49425") @Directive44(argument97 : ["stringValue49424"]) { + field67595: Scalar2 + field67596: [Object12467] + field67597: Object12464 +} + +type Object12468 @Directive21(argument61 : "stringValue49428") @Directive44(argument97 : ["stringValue49427"]) { + field67600: String + field67601: String + field67602: String + field67603: String + field67604: String + field67605: String + field67606: String + field67607: String + field67608: String + field67609: String +} + +type Object12469 @Directive21(argument61 : "stringValue49430") @Directive44(argument97 : ["stringValue49429"]) { + field67611: Enum1591 + field67612: Enum1591 + field67613: Enum1591 + field67614: Enum1591 + field67615: Enum1591 + field67616: Enum1591 + field67617: Enum1591 + field67618: Enum1591 + field67619: Enum1591 + field67620: Enum1591 +} + +type Object1247 @Directive20(argument58 : "stringValue6476", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6475") @Directive31 @Directive44(argument97 : ["stringValue6477", "stringValue6478"]) { + field6952: String + field6953: Object1243 @deprecated + field6954: Object480 + field6955: String + field6956: String + field6957: Object721 + field6958: [Object480!] + field6959: [Object480!] + field6960: String + field6961: [Object1248!] + field6965: [Object1242!] + field6966: Object480 + field6967: String + field6968: [Object1242] + field6969: Object1243 +} + +type Object12470 @Directive21(argument61 : "stringValue49432") @Directive44(argument97 : ["stringValue49431"]) { + field67622: Scalar2 + field67623: Scalar4 + field67624: Scalar4 + field67625: Scalar2 + field67626: Object12471 +} + +type Object12471 @Directive21(argument61 : "stringValue49434") @Directive44(argument97 : ["stringValue49433"]) { + field67627: Int + field67628: Object12472 + field67654: Object12480 + field67659: Object12482 + field67670: [Enum3136] + field67671: Boolean +} + +type Object12472 @Directive21(argument61 : "stringValue49436") @Directive44(argument97 : ["stringValue49435"]) { + field67629: Object12473 + field67653: Object12473 +} + +type Object12473 @Directive21(argument61 : "stringValue49438") @Directive44(argument97 : ["stringValue49437"]) { + field67630: Enum3132 + field67631: Object12474 + field67651: String + field67652: String +} + +type Object12474 @Directive21(argument61 : "stringValue49441") @Directive44(argument97 : ["stringValue49440"]) { + field67632: Object12475 + field67635: Object12476 + field67638: Object12477 + field67643: Object12478 + field67647: Object12479 +} + +type Object12475 @Directive21(argument61 : "stringValue49443") @Directive44(argument97 : ["stringValue49442"]) { + field67633: String + field67634: String +} + +type Object12476 @Directive21(argument61 : "stringValue49445") @Directive44(argument97 : ["stringValue49444"]) { + field67636: String + field67637: Boolean +} + +type Object12477 @Directive21(argument61 : "stringValue49447") @Directive44(argument97 : ["stringValue49446"]) { + field67639: String + field67640: String + field67641: Boolean + field67642: String +} + +type Object12478 @Directive21(argument61 : "stringValue49449") @Directive44(argument97 : ["stringValue49448"]) { + field67644: String + field67645: Boolean + field67646: String +} + +type Object12479 @Directive21(argument61 : "stringValue49451") @Directive44(argument97 : ["stringValue49450"]) { + field67648: String + field67649: Boolean + field67650: String +} + +type Object1248 @Directive20(argument58 : "stringValue6480", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6479") @Directive31 @Directive44(argument97 : ["stringValue6481", "stringValue6482"]) { + field6962: String + field6963: Object721 + field6964: String +} + +type Object12480 @Directive21(argument61 : "stringValue49453") @Directive44(argument97 : ["stringValue49452"]) { + field67655: [Object12481] + field67658: Boolean +} + +type Object12481 @Directive21(argument61 : "stringValue49455") @Directive44(argument97 : ["stringValue49454"]) { + field67656: String + field67657: String +} + +type Object12482 @Directive21(argument61 : "stringValue49457") @Directive44(argument97 : ["stringValue49456"]) { + field67660: Object12483 +} + +type Object12483 @Directive21(argument61 : "stringValue49459") @Directive44(argument97 : ["stringValue49458"]) { + field67661: Boolean + field67662: [Enum3133] + field67663: Int + field67664: Object12484 + field67667: Object12485 +} + +type Object12484 @Directive21(argument61 : "stringValue49462") @Directive44(argument97 : ["stringValue49461"]) { + field67665: Enum3134 + field67666: Float +} + +type Object12485 @Directive21(argument61 : "stringValue49465") @Directive44(argument97 : ["stringValue49464"]) { + field67668: Int + field67669: Enum3135 +} + +type Object12486 @Directive21(argument61 : "stringValue49470") @Directive44(argument97 : ["stringValue49469"]) { + field67680: Scalar2 + field67681: Scalar4 + field67682: Scalar4 + field67683: Scalar2 + field67684: Enum1554 + field67685: String + field67686: Enum1591 + field67687: Boolean + field67688: String + field67689: String + field67690: String + field67691: String + field67692: String + field67693: String + field67694: String + field67695: String + field67696: String + field67697: String + field67698: Boolean +} + +type Object12487 @Directive21(argument61 : "stringValue49472") @Directive44(argument97 : ["stringValue49471"]) { + field67700: Scalar2 + field67701: Scalar4 + field67702: Scalar4 + field67703: Scalar2 + field67704: Int + field67705: Enum1555 + field67706: Boolean + field67707: String + field67708: Int + field67709: Union219 +} + +type Object12488 @Directive21(argument61 : "stringValue49474") @Directive44(argument97 : ["stringValue49473"]) { + field67711: Scalar2 + field67712: Scalar4 + field67713: Scalar4 + field67714: Scalar2 + field67715: String + field67716: Enum1591 + field67717: Enum3138 + field67718: String + field67719: Boolean +} + +type Object12489 @Directive21(argument61 : "stringValue49477") @Directive44(argument97 : ["stringValue49476"]) { + field67721: Scalar2 + field67722: Scalar4 + field67723: Scalar4 + field67724: Scalar2 + field67725: Scalar2 + field67726: Enum3139 + field67727: Enum3140 +} + +type Object1249 @Directive20(argument58 : "stringValue6484", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6483") @Directive31 @Directive44(argument97 : ["stringValue6485", "stringValue6486"]) { + field6970: String + field6971: String + field6972: String + field6973: String +} + +type Object12490 @Directive21(argument61 : "stringValue49481") @Directive44(argument97 : ["stringValue49480"]) { + field67729: Scalar2 + field67730: Scalar4 + field67731: Scalar4 + field67732: Scalar2 + field67733: String + field67734: String + field67735: String + field67736: String +} + +type Object12491 @Directive21(argument61 : "stringValue49483") @Directive44(argument97 : ["stringValue49482"]) { + field67738: Scalar2 + field67739: Scalar4 + field67740: Scalar4 + field67741: Scalar2 + field67742: Enum1554 + field67743: Int + field67744: Enum1546 + field67745: Enum3141 + field67746: Int + field67747: Boolean + field67748: Boolean + field67749: [Object12492] + field67759: [Object12493] + field67767: Union400 +} + +type Object12492 @Directive21(argument61 : "stringValue49486") @Directive44(argument97 : ["stringValue49485"]) { + field67750: Scalar2 + field67751: Scalar4 + field67752: Scalar4 + field67753: Scalar2 + field67754: Enum3142 + field67755: Enum1555 + field67756: Int + field67757: Boolean + field67758: Union219 +} + +type Object12493 @Directive21(argument61 : "stringValue49489") @Directive44(argument97 : ["stringValue49488"]) { + field67760: Scalar2 + field67761: Scalar4 + field67762: Scalar4 + field67763: Scalar2 + field67764: String + field67765: Enum1591 + field67766: [String] +} + +type Object12494 @Directive21(argument61 : "stringValue49492") @Directive44(argument97 : ["stringValue49491"]) { + field67768: String + field67769: [Object6071] + field67770: String + field67771: Object6074 + field67772: Boolean + field67773: Boolean +} + +type Object12495 @Directive21(argument61 : "stringValue49494") @Directive44(argument97 : ["stringValue49493"]) { + field67774: String + field67775: [Object6071] + field67776: Boolean +} + +type Object12496 @Directive21(argument61 : "stringValue49496") @Directive44(argument97 : ["stringValue49495"]) { + field67777: String + field67778: [Object6071] + field67779: Boolean + field67780: Boolean + field67781: [Enum3143] + field67782: Boolean +} + +type Object12497 @Directive21(argument61 : "stringValue49499") @Directive44(argument97 : ["stringValue49498"]) { + field67783: String + field67784: [Object6071] + field67785: Enum3144 + field67786: Enum3145 + field67787: Enum3146 +} + +type Object12498 @Directive21(argument61 : "stringValue49504") @Directive44(argument97 : ["stringValue49503"]) { + field67788: String + field67789: [Object6071] + field67790: Boolean + field67791: Int + field67792: Boolean + field67793: Boolean + field67794: Boolean +} + +type Object12499 @Directive21(argument61 : "stringValue49506") @Directive44(argument97 : ["stringValue49505"]) { + field67795: String + field67796: [Object6071] + field67797: Enum3144 + field67798: Enum3147 + field67799: Enum3145 + field67800: [Enum3148] +} + +type Object125 @Directive21(argument61 : "stringValue448") @Directive44(argument97 : ["stringValue447"]) { + field795: Int + field796: Int + field797: Int + field798: String + field799: String + field800: Scalar2 + field801: [String] + field802: String +} + +type Object1250 @Directive22(argument62 : "stringValue6487") @Directive31 @Directive44(argument97 : ["stringValue6488", "stringValue6489"]) { + field6974: String + field6975: String + field6976: String +} + +type Object12500 @Directive21(argument61 : "stringValue49510") @Directive44(argument97 : ["stringValue49509"]) { + field67801: String + field67802: [Object6071] + field67803: [Enum3149] + field67804: String + field67805: Object6074 + field67806: Object6074 + field67807: Object6074 +} + +type Object12501 @Directive21(argument61 : "stringValue49513") @Directive44(argument97 : ["stringValue49512"]) { + field67808: String + field67809: [Object6071] + field67810: Boolean + field67811: Boolean + field67812: Boolean + field67813: Int +} + +type Object12502 @Directive21(argument61 : "stringValue49515") @Directive44(argument97 : ["stringValue49514"]) { + field67815: Scalar2 + field67816: Scalar4 + field67817: Scalar4 + field67818: Scalar2 + field67819: String + field67820: String + field67821: String + field67822: String + field67823: String + field67824: String + field67825: String + field67826: Int + field67827: Boolean + field67828: Object12503 + field67844: [String] + field67845: Int + field67846: Int + field67847: Int + field67848: Int + field67849: Boolean +} + +type Object12503 @Directive21(argument61 : "stringValue49517") @Directive44(argument97 : ["stringValue49516"]) { + field67829: String + field67830: String + field67831: String + field67832: String + field67833: String + field67834: String + field67835: String + field67836: String + field67837: String + field67838: String + field67839: String + field67840: String + field67841: String + field67842: String + field67843: String +} + +type Object12504 @Directive21(argument61 : "stringValue49520") @Directive44(argument97 : ["stringValue49519"]) { + field67851: Scalar2 + field67852: Scalar2 + field67853: Scalar1 + field67854: Enum3150 + field67855: [Object6071] + field67856: Object6074 + field67857: Int +} + +type Object12505 @Directive21(argument61 : "stringValue49523") @Directive44(argument97 : ["stringValue49522"]) { + field67858: Scalar2 + field67859: Scalar2 + field67860: Scalar1 +} + +type Object12506 @Directive21(argument61 : "stringValue49525") @Directive44(argument97 : ["stringValue49524"]) { + field67861: Scalar2 + field67862: Scalar2 + field67863: Scalar1 + field67864: [Enum3151] + field67865: [Object6071] + field67866: Object6074 + field67867: Int +} + +type Object12507 @Directive21(argument61 : "stringValue49530") @Directive44(argument97 : ["stringValue49529"]) { + field67872: Enum3154 + field67873: Boolean + field67874: Union402 + field67880: Scalar4 + field67881: Scalar4 + field67882: Scalar3 + field67883: Scalar2 +} + +type Object12508 @Directive21(argument61 : "stringValue49534") @Directive44(argument97 : ["stringValue49533"]) { + field67875: Boolean +} + +type Object12509 @Directive21(argument61 : "stringValue49536") @Directive44(argument97 : ["stringValue49535"]) { + field67876: Enum3155 + field67877: Boolean +} + +type Object1251 @Directive20(argument58 : "stringValue6491", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6490") @Directive31 @Directive44(argument97 : ["stringValue6492", "stringValue6493"]) { + field6977: String + field6978: String + field6979: [Object1252!] + field6996: String + field6997: Object480 + field6998: String + field6999: Object480 + field7000: [Object1254!] + field7015: String + field7016: Object538 + field7017: Boolean +} + +type Object12510 @Directive21(argument61 : "stringValue49539") @Directive44(argument97 : ["stringValue49538"]) { + field67878: Boolean +} + +type Object12511 @Directive21(argument61 : "stringValue49541") @Directive44(argument97 : ["stringValue49540"]) { + field67879: Scalar2 +} + +type Object12512 @Directive21(argument61 : "stringValue49543") @Directive44(argument97 : ["stringValue49542"]) { + field67886: Int + field67887: Float + field67888: Float + field67889: Float + field67890: Float + field67891: Int + field67892: Int + field67893: Float + field67894: Float + field67895: Int + field67896: String +} + +type Object12513 @Directive21(argument61 : "stringValue49545") @Directive44(argument97 : ["stringValue49544"]) { + field67898: Boolean! + field67899: [Object12514] + field67919: Boolean +} + +type Object12514 @Directive21(argument61 : "stringValue49547") @Directive44(argument97 : ["stringValue49546"]) { + field67900: Enum3156! + field67901: Boolean + field67902: Object12515 + field67905: Object12515 + field67906: [Object12516] + field67918: Boolean +} + +type Object12515 @Directive21(argument61 : "stringValue49550") @Directive44(argument97 : ["stringValue49549"]) { + field67903: String! + field67904: String +} + +type Object12516 @Directive21(argument61 : "stringValue49552") @Directive44(argument97 : ["stringValue49551"]) { + field67907: Scalar2! + field67908: Scalar2! + field67909: Enum3157 + field67910: Enum3158 + field67911: String + field67912: Scalar4 + field67913: Scalar4 + field67914: Enum3159 + field67915: String + field67916: Enum3160 + field67917: String +} + +type Object12517 @Directive21(argument61 : "stringValue49562") @Directive44(argument97 : ["stringValue49561"]) { + field67922: Object6015! +} + +type Object12518 @Directive21(argument61 : "stringValue49586") @Directive44(argument97 : ["stringValue49585"]) { + field67926: Scalar2 +} + +type Object12519 @Directive21(argument61 : "stringValue49592") @Directive44(argument97 : ["stringValue49591"]) { + field67928: Object6015! +} + +type Object1252 @Directive20(argument58 : "stringValue6495", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6494") @Directive31 @Directive44(argument97 : ["stringValue6496", "stringValue6497"]) { + field6980: String + field6981: [Object480!] + field6982: [Enum10!] + field6983: [Object478!] + field6984: String + field6985: String + field6986: String + field6987: [Object491] + field6988: Object480 + field6989: [Object480!] + field6990: [Object1253!] + field6995: Object1 +} + +type Object12520 @Directive21(argument61 : "stringValue49601") @Directive44(argument97 : ["stringValue49600"]) { + field67931: Object12410 +} + +type Object12521 @Directive21(argument61 : "stringValue49607") @Directive44(argument97 : ["stringValue49606"]) { + field67933: [Object12522] +} + +type Object12522 @Directive21(argument61 : "stringValue49609") @Directive44(argument97 : ["stringValue49608"]) { + field67934: String! +} + +type Object12523 @Directive44(argument97 : ["stringValue49610"]) { + field67936(argument2673: InputObject2303!): Object12524 @Directive35(argument89 : "stringValue49612", argument90 : false, argument91 : "stringValue49611", argument92 : 1180, argument93 : "stringValue49613", argument94 : false) + field67943(argument2674: InputObject2304!): Object12526 @Directive35(argument89 : "stringValue49620", argument90 : true, argument91 : "stringValue49619", argument92 : 1181, argument93 : "stringValue49621", argument94 : false) + field67945(argument2675: InputObject2305!): Object12527 @Directive35(argument89 : "stringValue49626", argument90 : true, argument91 : "stringValue49625", argument92 : 1182, argument93 : "stringValue49627", argument94 : false) + field67947(argument2676: InputObject2306!): Object12528 @Directive35(argument89 : "stringValue49632", argument90 : false, argument91 : "stringValue49631", argument92 : 1183, argument93 : "stringValue49633", argument94 : false) + field67950(argument2677: InputObject2307!): Object12529 @Directive35(argument89 : "stringValue49638", argument90 : true, argument91 : "stringValue49637", argument92 : 1184, argument93 : "stringValue49639", argument94 : false) + field67968(argument2678: InputObject2309!): Object12533 @Directive35(argument89 : "stringValue49653", argument90 : true, argument91 : "stringValue49652", argument92 : 1185, argument93 : "stringValue49654", argument94 : false) + field67982(argument2679: InputObject2310!): Object12535 @Directive35(argument89 : "stringValue49662", argument90 : true, argument91 : "stringValue49661", argument92 : 1186, argument93 : "stringValue49663", argument94 : false) + field68016(argument2680: InputObject2311!): Object12544 @Directive35(argument89 : "stringValue49684", argument90 : false, argument91 : "stringValue49683", argument92 : 1187, argument93 : "stringValue49685", argument94 : false) + field68024(argument2681: InputObject2312!): Object12545 @Directive35(argument89 : "stringValue49690", argument90 : true, argument91 : "stringValue49689", argument92 : 1188, argument93 : "stringValue49691", argument94 : false) + field68027(argument2682: InputObject2313!): Object12546 @Directive35(argument89 : "stringValue49696", argument90 : false, argument91 : "stringValue49695", argument92 : 1189, argument93 : "stringValue49697", argument94 : false) + field68536(argument2683: InputObject2314!): Object12619 @Directive35(argument89 : "stringValue49881", argument90 : false, argument91 : "stringValue49880", argument92 : 1190, argument93 : "stringValue49882", argument94 : false) + field68543: Object12621 @Directive35(argument89 : "stringValue49889", argument90 : true, argument91 : "stringValue49888", argument92 : 1191, argument93 : "stringValue49890", argument94 : false) @deprecated + field68572(argument2684: InputObject2315!): Object12621 @Directive35(argument89 : "stringValue49900", argument90 : true, argument91 : "stringValue49899", argument92 : 1192, argument93 : "stringValue49901", argument94 : false) + field68573(argument2685: InputObject2316!): Object12625 @Directive35(argument89 : "stringValue49904", argument90 : false, argument91 : "stringValue49903", argument92 : 1193, argument93 : "stringValue49905", argument94 : false) + field68597(argument2686: InputObject2319!): Object12631 @Directive35(argument89 : "stringValue49923", argument90 : false, argument91 : "stringValue49922", argument92 : 1194, argument93 : "stringValue49924", argument94 : false) + field68599(argument2687: InputObject2320!): Object12632 @Directive35(argument89 : "stringValue49929", argument90 : false, argument91 : "stringValue49928", argument92 : 1195, argument93 : "stringValue49930", argument94 : false) + field68602(argument2688: InputObject2321!): Object12633 @Directive35(argument89 : "stringValue49935", argument90 : false, argument91 : "stringValue49934", argument92 : 1196, argument93 : "stringValue49936", argument94 : false) + field68625(argument2689: InputObject2322!): Object12635 @Directive35(argument89 : "stringValue49943", argument90 : false, argument91 : "stringValue49942", argument92 : 1197, argument93 : "stringValue49944", argument94 : false) + field68627: Object12636 @Directive35(argument89 : "stringValue49949", argument90 : false, argument91 : "stringValue49948", argument92 : 1198, argument93 : "stringValue49950", argument94 : false) + field68639(argument2690: InputObject2323!): Object12638 @Directive35(argument89 : "stringValue49956", argument90 : true, argument91 : "stringValue49955", argument92 : 1199, argument93 : "stringValue49957", argument94 : false) + field68641(argument2691: InputObject2324!): Object12639 @Directive35(argument89 : "stringValue49963", argument90 : false, argument91 : "stringValue49962", argument92 : 1200, argument93 : "stringValue49964", argument94 : false) + field68644(argument2692: InputObject2325!): Object12640 @Directive35(argument89 : "stringValue49969", argument90 : true, argument91 : "stringValue49968", argument92 : 1201, argument93 : "stringValue49970", argument94 : false) +} + +type Object12524 @Directive21(argument61 : "stringValue49616") @Directive44(argument97 : ["stringValue49615"]) { + field67937: [Object12525] +} + +type Object12525 @Directive21(argument61 : "stringValue49618") @Directive44(argument97 : ["stringValue49617"]) { + field67938: String! + field67939: String + field67940: Boolean + field67941: [Object6130] + field67942: [Object6127] +} + +type Object12526 @Directive21(argument61 : "stringValue49624") @Directive44(argument97 : ["stringValue49623"]) { + field67944: Boolean +} + +type Object12527 @Directive21(argument61 : "stringValue49630") @Directive44(argument97 : ["stringValue49629"]) { + field67946: Enum1594 +} + +type Object12528 @Directive21(argument61 : "stringValue49636") @Directive44(argument97 : ["stringValue49635"]) { + field67948: Boolean + field67949: [Object6130] +} + +type Object12529 @Directive21(argument61 : "stringValue49644") @Directive44(argument97 : ["stringValue49643"]) { + field67951: [Object12530]! + field67967: Object6133 +} + +type Object1253 @Directive20(argument58 : "stringValue6499", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6498") @Directive31 @Directive44(argument97 : ["stringValue6500", "stringValue6501"]) { + field6991: String + field6992: String + field6993: [Enum10!] + field6994: [Object478!] +} + +type Object12530 @Directive21(argument61 : "stringValue49646") @Directive44(argument97 : ["stringValue49645"]) { + field67952: String + field67953: Object12531 + field67956: Scalar4 + field67957: Scalar4 + field67958: [Object12532] + field67962: String + field67963: String + field67964: String + field67965: String + field67966: Object12531 +} + +type Object12531 @Directive21(argument61 : "stringValue49648") @Directive44(argument97 : ["stringValue49647"]) { + field67954: String! + field67955: Scalar2! +} + +type Object12532 @Directive21(argument61 : "stringValue49650") @Directive44(argument97 : ["stringValue49649"]) { + field67959: Enum3170! + field67960: Object12531! + field67961: Scalar4 +} + +type Object12533 @Directive21(argument61 : "stringValue49657") @Directive44(argument97 : ["stringValue49656"]) { + field67969: Object12531 + field67970: Object12531 + field67971: [Object12530] + field67972: [Object12534] + field67981: String +} + +type Object12534 @Directive21(argument61 : "stringValue49659") @Directive44(argument97 : ["stringValue49658"]) { + field67973: String + field67974: Object12531 + field67975: Enum3171 + field67976: String + field67977: String + field67978: String + field67979: String + field67980: String +} + +type Object12535 @Directive21(argument61 : "stringValue49666") @Directive44(argument97 : ["stringValue49665"]) { + field67983: Object12536 + field67992: Object12539 +} + +type Object12536 @Directive21(argument61 : "stringValue49668") @Directive44(argument97 : ["stringValue49667"]) { + field67984: Object12537! + field67987: Object12537! + field67988: [Object12538]! + field67991: [Object12538]! +} + +type Object12537 @Directive21(argument61 : "stringValue49670") @Directive44(argument97 : ["stringValue49669"]) { + field67985: Int + field67986: Object12531 +} + +type Object12538 @Directive21(argument61 : "stringValue49672") @Directive44(argument97 : ["stringValue49671"]) { + field67989: Enum3169 + field67990: Object12537 +} + +type Object12539 @Directive21(argument61 : "stringValue49674") @Directive44(argument97 : ["stringValue49673"]) { + field67993: String! + field67994: String! + field67995: Object12531! + field67996: String! + field67997: Object12540! + field68001: String! + field68002: [Object12541]! + field68009: Object12542! +} + +type Object1254 @Directive20(argument58 : "stringValue6503", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6502") @Directive31 @Directive44(argument97 : ["stringValue6504", "stringValue6505"]) { + field7001: Enum317 + field7002: String + field7003: String + field7004: [Object1255!] + field7014: Object480 +} + +type Object12540 @Directive21(argument61 : "stringValue49676") @Directive44(argument97 : ["stringValue49675"]) { + field67998: String! + field67999: String! + field68000: String! +} + +type Object12541 @Directive21(argument61 : "stringValue49678") @Directive44(argument97 : ["stringValue49677"]) { + field68003: String! + field68004: String! + field68005: String! + field68006: String! + field68007: Object12540! + field68008: Object12540! +} + +type Object12542 @Directive21(argument61 : "stringValue49680") @Directive44(argument97 : ["stringValue49679"]) { + field68010: String! + field68011: [String]! + field68012: String! + field68013: [Object12543]! +} + +type Object12543 @Directive21(argument61 : "stringValue49682") @Directive44(argument97 : ["stringValue49681"]) { + field68014: String! + field68015: [String]! +} + +type Object12544 @Directive21(argument61 : "stringValue49688") @Directive44(argument97 : ["stringValue49687"]) { + field68017: Boolean! + field68018: String + field68019: String + field68020: String + field68021: String + field68022: String + field68023: String +} + +type Object12545 @Directive21(argument61 : "stringValue49694") @Directive44(argument97 : ["stringValue49693"]) { + field68025: Object6127 + field68026: Object6133 +} + +type Object12546 @Directive21(argument61 : "stringValue49700") @Directive44(argument97 : ["stringValue49699"]) { + field68028: [Object12547] +} + +type Object12547 @Directive21(argument61 : "stringValue49702") @Directive44(argument97 : ["stringValue49701"]) { + field68029: Object12548 + field68175: Object12576 + field68496: Object12613 + field68501: Boolean + field68502: Object12614 + field68522: Enum3200 + field68523: Object12618 +} + +type Object12548 @Directive21(argument61 : "stringValue49704") @Directive44(argument97 : ["stringValue49703"]) { + field68030: Boolean + field68031: Boolean + field68032: Scalar3 + field68033: Scalar3 + field68034: Int + field68035: Object12549 + field68041: Float + field68042: Object12550 + field68052: String + field68053: Object12551 + field68054: String + field68055: Object12551 + field68056: Float + field68057: Boolean + field68058: Object12551 + field68059: [Object12552] + field68073: Object12551 + field68074: String + field68075: String + field68076: Object12551 + field68077: String + field68078: Object12551 + field68079: String + field68080: [Object12553] + field68088: [Enum3175] + field68089: Object12554 + field68172: Object12551 + field68173: Object3914 + field68174: Object12551 +} + +type Object12549 @Directive21(argument61 : "stringValue49706") @Directive44(argument97 : ["stringValue49705"]) { + field68036: Int + field68037: Int + field68038: Int + field68039: Int + field68040: String +} + +type Object1255 @Directive20(argument58 : "stringValue6511", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6510") @Directive31 @Directive44(argument97 : ["stringValue6512", "stringValue6513"]) { + field7005: String + field7006: [Object1256!] + field7012: String + field7013: Object480 +} + +type Object12550 @Directive21(argument61 : "stringValue49708") @Directive44(argument97 : ["stringValue49707"]) { + field68043: String + field68044: [Object12550] + field68045: Object12551 + field68050: Int + field68051: String +} + +type Object12551 @Directive21(argument61 : "stringValue49710") @Directive44(argument97 : ["stringValue49709"]) { + field68046: Float + field68047: String + field68048: String + field68049: Boolean +} + +type Object12552 @Directive21(argument61 : "stringValue49712") @Directive44(argument97 : ["stringValue49711"]) { + field68060: Enum3172 + field68061: String + field68062: Boolean + field68063: Boolean + field68064: Int + field68065: String + field68066: Scalar2 + field68067: String + field68068: Int + field68069: String + field68070: Float + field68071: Int + field68072: Enum3173 +} + +type Object12553 @Directive21(argument61 : "stringValue49716") @Directive44(argument97 : ["stringValue49715"]) { + field68081: String + field68082: String + field68083: String + field68084: String + field68085: String + field68086: Enum3174 + field68087: String +} + +type Object12554 @Directive21(argument61 : "stringValue49720") @Directive44(argument97 : ["stringValue49719"]) { + field68090: Union403 + field68129: Union403 + field68130: Object12564 +} + +type Object12555 @Directive21(argument61 : "stringValue49723") @Directive44(argument97 : ["stringValue49722"]) { + field68091: String! + field68092: String + field68093: Enum3176 +} + +type Object12556 @Directive21(argument61 : "stringValue49726") @Directive44(argument97 : ["stringValue49725"]) { + field68094: String + field68095: Object3914 + field68096: Enum795 + field68097: Enum3176 +} + +type Object12557 @Directive21(argument61 : "stringValue49728") @Directive44(argument97 : ["stringValue49727"]) { + field68098: String + field68099: String! + field68100: String! + field68101: String + field68102: Object12558 + field68114: Object12561 +} + +type Object12558 @Directive21(argument61 : "stringValue49730") @Directive44(argument97 : ["stringValue49729"]) { + field68103: [Union404] + field68111: String + field68112: String + field68113: String +} + +type Object12559 @Directive21(argument61 : "stringValue49733") @Directive44(argument97 : ["stringValue49732"]) { + field68104: String! + field68105: Boolean! + field68106: Boolean! + field68107: String! +} + +type Object1256 @Directive20(argument58 : "stringValue6515", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6514") @Directive31 @Directive44(argument97 : ["stringValue6516", "stringValue6517"]) { + field7007: [Object480!] + field7008: Object514 + field7009: Object521 + field7010: String + field7011: Object548 +} + +type Object12560 @Directive21(argument61 : "stringValue49735") @Directive44(argument97 : ["stringValue49734"]) { + field68108: String! + field68109: String + field68110: Enum3177! +} + +type Object12561 @Directive21(argument61 : "stringValue49738") @Directive44(argument97 : ["stringValue49737"]) { + field68115: String! + field68116: String! + field68117: String! +} + +type Object12562 @Directive21(argument61 : "stringValue49740") @Directive44(argument97 : ["stringValue49739"]) { + field68118: String! + field68119: String! + field68120: String! + field68121: String + field68122: Boolean + field68123: Enum3176 +} + +type Object12563 @Directive21(argument61 : "stringValue49742") @Directive44(argument97 : ["stringValue49741"]) { + field68124: String! + field68125: String! + field68126: String + field68127: Boolean + field68128: Enum3176 +} + +type Object12564 @Directive21(argument61 : "stringValue49744") @Directive44(argument97 : ["stringValue49743"]) { + field68131: [Union405] + field68171: String +} + +type Object12565 @Directive21(argument61 : "stringValue49747") @Directive44(argument97 : ["stringValue49746"]) { + field68132: String! + field68133: Enum3176 +} + +type Object12566 @Directive21(argument61 : "stringValue49749") @Directive44(argument97 : ["stringValue49748"]) { + field68134: [Union406] + field68154: Boolean @deprecated + field68155: Boolean + field68156: Boolean + field68157: String + field68158: Enum3176 +} + +type Object12567 @Directive21(argument61 : "stringValue49752") @Directive44(argument97 : ["stringValue49751"]) { + field68135: String! + field68136: String! + field68137: Object12564 +} + +type Object12568 @Directive21(argument61 : "stringValue49754") @Directive44(argument97 : ["stringValue49753"]) { + field68138: String! + field68139: String! + field68140: Object12564 + field68141: String +} + +type Object12569 @Directive21(argument61 : "stringValue49756") @Directive44(argument97 : ["stringValue49755"]) { + field68142: String! + field68143: String! + field68144: Object12564 + field68145: Enum3176 +} + +type Object1257 @Directive20(argument58 : "stringValue6519", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6518") @Directive31 @Directive44(argument97 : ["stringValue6520", "stringValue6521"]) { + field7018: String + field7019: [Object1253!] + field7020: String + field7021: Object1252 +} + +type Object12570 @Directive21(argument61 : "stringValue49758") @Directive44(argument97 : ["stringValue49757"]) { + field68146: String! + field68147: String! + field68148: Object12564 + field68149: Enum3176 +} + +type Object12571 @Directive21(argument61 : "stringValue49760") @Directive44(argument97 : ["stringValue49759"]) { + field68150: String! + field68151: String! + field68152: Object12564 + field68153: Enum3176 +} + +type Object12572 @Directive21(argument61 : "stringValue49762") @Directive44(argument97 : ["stringValue49761"]) { + field68159: String! + field68160: String! + field68161: Enum3176 +} + +type Object12573 @Directive21(argument61 : "stringValue49764") @Directive44(argument97 : ["stringValue49763"]) { + field68162: String! + field68163: Enum3176 +} + +type Object12574 @Directive21(argument61 : "stringValue49766") @Directive44(argument97 : ["stringValue49765"]) { + field68164: String! + field68165: Enum3176 +} + +type Object12575 @Directive21(argument61 : "stringValue49768") @Directive44(argument97 : ["stringValue49767"]) { + field68166: Enum3178 + field68167: Enum3179 + field68168: Int @deprecated + field68169: Int @deprecated + field68170: Object3914 +} + +type Object12576 @Directive21(argument61 : "stringValue49772") @Directive44(argument97 : ["stringValue49771"]) { + field68176: [String] + field68177: String + field68178: Float + field68179: String + field68180: String + field68181: Int + field68182: Int + field68183: String + field68184: String + field68185: Object12577 + field68188: String + field68189: String + field68190: String + field68191: Scalar2 + field68192: Boolean + field68193: Boolean + field68194: Boolean + field68195: Boolean + field68196: Boolean + field68197: Object12578 + field68215: Float + field68216: Float + field68217: String + field68218: Object12581 + field68223: String + field68224: String + field68225: String + field68226: Int + field68227: Object12582 + field68238: Int + field68239: String + field68240: [String] + field68241: String + field68242: String + field68243: String + field68244: Scalar2 + field68245: String + field68246: Int + field68247: String + field68248: String + field68249: String + field68250: String + field68251: [Object12583] + field68261: String + field68262: String + field68263: String + field68264: Boolean + field68265: String + field68266: String + field68267: Float + field68268: String + field68269: String + field68270: String + field68271: Int + field68272: Scalar2 + field68273: Object12584 + field68283: Object12578 + field68284: [Int] + field68285: [String] + field68286: [Scalar2] + field68287: Object12584 + field68288: String + field68289: String + field68290: [String] + field68291: Boolean + field68292: String + field68293: [Object12585] + field68303: [String] + field68304: String + field68305: Boolean @deprecated + field68306: Boolean @deprecated + field68307: Scalar3 + field68308: Scalar3 + field68309: Int + field68310: Int + field68311: Int + field68312: Int + field68313: [Object12586] + field68345: Int + field68346: Float + field68347: Object12591 + field68356: Enum3185 + field68357: Boolean + field68358: [Object12593] + field68366: String + field68367: Boolean + field68368: [Object12582] + field68369: String + field68370: Int + field68371: Int + field68372: Boolean + field68373: Object12594 + field68375: Object12595 + field68378: String + field68379: String + field68380: Boolean + field68381: [String] + field68382: String + field68383: Object12596 + field68389: Enum3188 + field68390: [Object12580] + field68391: Object12592 + field68392: Enum3189 + field68393: String + field68394: String + field68395: [Scalar2] + field68396: String + field68397: [Object12597] + field68444: [Object12597] + field68445: Enum3196 + field68446: [Enum3197] + field68447: [Object12603] + field68458: Object12607 + field68462: Object12608 + field68468: [Object12581] + field68469: Boolean + field68470: String + field68471: Int + field68472: Scalar2 + field68473: Boolean + field68474: Float + field68475: [String] + field68476: String + field68477: [Object12610] + field68480: Boolean + field68481: String + field68482: String + field68483: Object12611 + field68488: Object12612 + field68492: Object12580 + field68493: Enum3199 + field68494: Scalar2 + field68495: String +} + +type Object12577 @Directive21(argument61 : "stringValue49774") @Directive44(argument97 : ["stringValue49773"]) { + field68186: String + field68187: Float +} + +type Object12578 @Directive21(argument61 : "stringValue49776") @Directive44(argument97 : ["stringValue49775"]) { + field68198: Object12579 + field68202: [String] + field68203: String + field68204: [Object12580] +} + +type Object12579 @Directive21(argument61 : "stringValue49778") @Directive44(argument97 : ["stringValue49777"]) { + field68199: String + field68200: String + field68201: String +} + +type Object1258 @Directive20(argument58 : "stringValue6523", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6522") @Directive31 @Directive44(argument97 : ["stringValue6524", "stringValue6525"]) { + field7022: String + field7023: String + field7024: Object1259 + field7051: String +} + +type Object12580 @Directive21(argument61 : "stringValue49780") @Directive44(argument97 : ["stringValue49779"]) { + field68205: String + field68206: String + field68207: String + field68208: String + field68209: String + field68210: String + field68211: String + field68212: String + field68213: String + field68214: Enum3180 +} + +type Object12581 @Directive21(argument61 : "stringValue49783") @Directive44(argument97 : ["stringValue49782"]) { + field68219: String + field68220: String + field68221: String + field68222: String +} + +type Object12582 @Directive21(argument61 : "stringValue49785") @Directive44(argument97 : ["stringValue49784"]) { + field68228: Scalar2 + field68229: String + field68230: String + field68231: String + field68232: String + field68233: String + field68234: String + field68235: String + field68236: String + field68237: Object12578 +} + +type Object12583 @Directive21(argument61 : "stringValue49787") @Directive44(argument97 : ["stringValue49786"]) { + field68252: String + field68253: String + field68254: Boolean + field68255: Scalar2 + field68256: String + field68257: String + field68258: String + field68259: String + field68260: [String] +} + +type Object12584 @Directive21(argument61 : "stringValue49789") @Directive44(argument97 : ["stringValue49788"]) { + field68274: String + field68275: Boolean + field68276: Scalar2 + field68277: Boolean + field68278: String + field68279: String + field68280: String + field68281: Scalar4 + field68282: String +} + +type Object12585 @Directive21(argument61 : "stringValue49791") @Directive44(argument97 : ["stringValue49790"]) { + field68294: String + field68295: String + field68296: Boolean + field68297: String + field68298: String + field68299: String + field68300: String + field68301: [String] + field68302: Scalar2 +} + +type Object12586 @Directive21(argument61 : "stringValue49793") @Directive44(argument97 : ["stringValue49792"]) { + field68314: String + field68315: Enum3181 + field68316: String + field68317: Object12587 + field68325: String + field68326: String + field68327: Enum3182 + field68328: String + field68329: String + field68330: String + field68331: [Object12589] + field68342: String + field68343: String + field68344: Enum3183 +} + +type Object12587 @Directive21(argument61 : "stringValue49796") @Directive44(argument97 : ["stringValue49795"]) { + field68318: [Object12588] + field68323: String + field68324: String +} + +type Object12588 @Directive21(argument61 : "stringValue49798") @Directive44(argument97 : ["stringValue49797"]) { + field68319: String + field68320: String + field68321: Boolean + field68322: Union185 +} + +type Object12589 @Directive21(argument61 : "stringValue49801") @Directive44(argument97 : ["stringValue49800"]) { + field68332: String + field68333: String + field68334: String + field68335: String + field68336: String + field68337: String + field68338: Object12590 +} + +type Object1259 @Directive22(argument62 : "stringValue6526") @Directive31 @Directive44(argument97 : ["stringValue6527", "stringValue6528"]) { + field7025: String + field7026: Object1260 + field7049: [Object694] + field7050: String +} + +type Object12590 @Directive21(argument61 : "stringValue49803") @Directive44(argument97 : ["stringValue49802"]) { + field68339: String + field68340: String + field68341: String +} + +type Object12591 @Directive21(argument61 : "stringValue49806") @Directive44(argument97 : ["stringValue49805"]) { + field68348: [Object12592] + field68352: String + field68353: String + field68354: Float + field68355: Enum3184 +} + +type Object12592 @Directive21(argument61 : "stringValue49808") @Directive44(argument97 : ["stringValue49807"]) { + field68349: String + field68350: Float + field68351: String +} + +type Object12593 @Directive21(argument61 : "stringValue49812") @Directive44(argument97 : ["stringValue49811"]) { + field68359: String + field68360: String + field68361: String + field68362: String + field68363: Enum3180 + field68364: String + field68365: Enum3186 +} + +type Object12594 @Directive21(argument61 : "stringValue49815") @Directive44(argument97 : ["stringValue49814"]) { + field68374: String +} + +type Object12595 @Directive21(argument61 : "stringValue49817") @Directive44(argument97 : ["stringValue49816"]) { + field68376: String + field68377: String +} + +type Object12596 @Directive21(argument61 : "stringValue49819") @Directive44(argument97 : ["stringValue49818"]) { + field68384: String + field68385: String + field68386: String + field68387: String + field68388: Enum3187 +} + +type Object12597 @Directive21(argument61 : "stringValue49824") @Directive44(argument97 : ["stringValue49823"]) { + field68398: String + field68399: String + field68400: Enum795 + field68401: String + field68402: Object3932 @deprecated + field68403: Object3909 @deprecated + field68404: String + field68405: Union407 @deprecated + field68408: String + field68409: String + field68410: Object12599 + field68438: Interface156 + field68439: Interface158 + field68440: Object12600 + field68441: Object12601 + field68442: Object12601 + field68443: Object12601 +} + +type Object12598 @Directive21(argument61 : "stringValue49827") @Directive44(argument97 : ["stringValue49826"]) { + field68406: String! + field68407: String +} + +type Object12599 @Directive21(argument61 : "stringValue49829") @Directive44(argument97 : ["stringValue49828"]) { + field68411: String + field68412: Int + field68413: Object12600 + field68424: Boolean + field68425: Object12601 + field68437: Int +} + +type Object126 @Directive21(argument61 : "stringValue450") @Directive44(argument97 : ["stringValue449"]) { + field804: Boolean + field805: String + field806: String + field807: String + field808: String + field809: Object127 + field839: Object128 + field840: String + field841: [Object130] + field848: Boolean + field849: Boolean +} + +type Object1260 @Directive22(argument62 : "stringValue6529") @Directive31 @Directive44(argument97 : ["stringValue6530", "stringValue6531"]) { + field7027: [Object1261] + field7036: [Object1261] + field7037: Scalar2 + field7038: [Object1261] + field7039: [Object1261] + field7040: [Object1261] + field7041: [Object1261] + field7042: [String] + field7043: [Object1261] + field7044: [Object1261] + field7045: Boolean + field7046: Boolean + field7047: Boolean + field7048: Boolean +} + +type Object12600 @Directive21(argument61 : "stringValue49831") @Directive44(argument97 : ["stringValue49830"]) { + field68414: String + field68415: Enum795 + field68416: Enum3190 + field68417: String + field68418: String + field68419: Enum3191 + field68420: Object3909 @deprecated + field68421: Union407 @deprecated + field68422: Object3917 @deprecated + field68423: Interface156 +} + +type Object12601 @Directive21(argument61 : "stringValue49835") @Directive44(argument97 : ["stringValue49834"]) { + field68426: Object3914 + field68427: Object12602 + field68435: Scalar5 + field68436: Enum3195 +} + +type Object12602 @Directive21(argument61 : "stringValue49837") @Directive44(argument97 : ["stringValue49836"]) { + field68428: Enum3192 + field68429: Enum3193 + field68430: Enum3194 + field68431: Scalar5 + field68432: Scalar5 + field68433: Float + field68434: Float +} + +type Object12603 @Directive21(argument61 : "stringValue49845") @Directive44(argument97 : ["stringValue49844"]) { + field68448: String + field68449: Enum3198 + field68450: Union408 +} + +type Object12604 @Directive21(argument61 : "stringValue49849") @Directive44(argument97 : ["stringValue49848"]) { + field68451: [Object12597] +} + +type Object12605 @Directive21(argument61 : "stringValue49851") @Directive44(argument97 : ["stringValue49850"]) { + field68452: String + field68453: String + field68454: Enum795 +} + +type Object12606 @Directive21(argument61 : "stringValue49853") @Directive44(argument97 : ["stringValue49852"]) { + field68455: String + field68456: String + field68457: [Enum795] +} + +type Object12607 @Directive21(argument61 : "stringValue49855") @Directive44(argument97 : ["stringValue49854"]) { + field68459: String + field68460: Float + field68461: String +} + +type Object12608 @Directive21(argument61 : "stringValue49857") @Directive44(argument97 : ["stringValue49856"]) { + field68463: [Object12609] + field68466: String + field68467: [String] +} + +type Object12609 @Directive21(argument61 : "stringValue49859") @Directive44(argument97 : ["stringValue49858"]) { + field68464: Scalar3 + field68465: Scalar3 +} + +type Object1261 @Directive22(argument62 : "stringValue6532") @Directive31 @Directive44(argument97 : ["stringValue6533", "stringValue6534"]) { + field7028: String + field7029: Int + field7030: String + field7031: String + field7032: String + field7033: String + field7034: String + field7035: String +} + +type Object12610 @Directive21(argument61 : "stringValue49861") @Directive44(argument97 : ["stringValue49860"]) { + field68478: String + field68479: String +} + +type Object12611 @Directive21(argument61 : "stringValue49863") @Directive44(argument97 : ["stringValue49862"]) { + field68484: Boolean + field68485: Boolean + field68486: String + field68487: String +} + +type Object12612 @Directive21(argument61 : "stringValue49865") @Directive44(argument97 : ["stringValue49864"]) { + field68489: String + field68490: String + field68491: String +} + +type Object12613 @Directive21(argument61 : "stringValue49868") @Directive44(argument97 : ["stringValue49867"]) { + field68497: String + field68498: String + field68499: Boolean + field68500: String +} + +type Object12614 @Directive21(argument61 : "stringValue49870") @Directive44(argument97 : ["stringValue49869"]) { + field68503: Boolean + field68504: String + field68505: String + field68506: String + field68507: String + field68508: Object12615 + field68515: Object12616 + field68516: String + field68517: [Object12617] + field68520: Boolean + field68521: Boolean +} + +type Object12615 @Directive21(argument61 : "stringValue49872") @Directive44(argument97 : ["stringValue49871"]) { + field68509: Object12616 + field68514: Object12616 +} + +type Object12616 @Directive21(argument61 : "stringValue49874") @Directive44(argument97 : ["stringValue49873"]) { + field68510: Scalar2! + field68511: String + field68512: String + field68513: String +} + +type Object12617 @Directive21(argument61 : "stringValue49876") @Directive44(argument97 : ["stringValue49875"]) { + field68518: String + field68519: String +} + +type Object12618 @Directive21(argument61 : "stringValue49879") @Directive44(argument97 : ["stringValue49878"]) { + field68524: String + field68525: String + field68526: String + field68527: String + field68528: String + field68529: String + field68530: String + field68531: String + field68532: String + field68533: String + field68534: String + field68535: String +} + +type Object12619 @Directive21(argument61 : "stringValue49885") @Directive44(argument97 : ["stringValue49884"]) { + field68537: [Object12620] +} + +type Object1262 implements Interface81 @Directive22(argument62 : "stringValue6535") @Directive31 @Directive44(argument97 : ["stringValue6536", "stringValue6537"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object12620 @Directive21(argument61 : "stringValue49887") @Directive44(argument97 : ["stringValue49886"]) { + field68538: String + field68539: String + field68540: String + field68541: String + field68542: String +} + +type Object12621 @Directive21(argument61 : "stringValue49892") @Directive44(argument97 : ["stringValue49891"]) { + field68544: Object12531 + field68545: Object12531 + field68546: [Object12622] + field68556: [Object12622] + field68557: Object12623 + field68569: Object12623 + field68570: Object6133 + field68571: Object6133 +} + +type Object12622 @Directive21(argument61 : "stringValue49894") @Directive44(argument97 : ["stringValue49893"]) { + field68547: String + field68548: String + field68549: Enum3170 + field68550: Object12531 + field68551: Scalar4 + field68552: Scalar4 + field68553: String + field68554: String + field68555: String +} + +type Object12623 @Directive21(argument61 : "stringValue49896") @Directive44(argument97 : ["stringValue49895"]) { + field68558: String + field68559: String + field68560: String + field68561: String + field68562: String + field68563: String + field68564: String + field68565: Object12624 +} + +type Object12624 @Directive21(argument61 : "stringValue49898") @Directive44(argument97 : ["stringValue49897"]) { + field68566: Scalar2 + field68567: String + field68568: String +} + +type Object12625 @Directive21(argument61 : "stringValue49911") @Directive44(argument97 : ["stringValue49910"]) { + field68574: Object6127 + field68575: Object12626 + field68593: Object12630 +} + +type Object12626 @Directive21(argument61 : "stringValue49913") @Directive44(argument97 : ["stringValue49912"]) { + field68576: Scalar1 + field68577: String + field68578: [Object12627] + field68591: Object12629 +} + +type Object12627 @Directive21(argument61 : "stringValue49915") @Directive44(argument97 : ["stringValue49914"]) { + field68579: String + field68580: String + field68581: String + field68582: Scalar1 + field68583: [Object12628] + field68587: [Object12628] + field68588: [Object12628] + field68589: [Object12627] + field68590: String +} + +type Object12628 @Directive21(argument61 : "stringValue49917") @Directive44(argument97 : ["stringValue49916"]) { + field68584: String + field68585: Scalar1 + field68586: String +} + +type Object12629 @Directive21(argument61 : "stringValue49919") @Directive44(argument97 : ["stringValue49918"]) { + field68592: String +} + +type Object1263 @Directive22(argument62 : "stringValue6538") @Directive31 @Directive44(argument97 : ["stringValue6539", "stringValue6540"]) { + field7052: String + field7053: [Object480!] + field7054: String + field7055: Union92 +} + +type Object12630 @Directive21(argument61 : "stringValue49921") @Directive44(argument97 : ["stringValue49920"]) { + field68594: String + field68595: String + field68596: String +} + +type Object12631 @Directive21(argument61 : "stringValue49927") @Directive44(argument97 : ["stringValue49926"]) { + field68598: String +} + +type Object12632 @Directive21(argument61 : "stringValue49933") @Directive44(argument97 : ["stringValue49932"]) { + field68600: Object6127 + field68601: Object6133 +} + +type Object12633 @Directive21(argument61 : "stringValue49939") @Directive44(argument97 : ["stringValue49938"]) { + field68603: [String] + field68604: Int + field68605: Boolean + field68606: String + field68607: String + field68608: String + field68609: Float + field68610: String + field68611: Object12634 + field68615: Object12634 + field68616: Float + field68617: Boolean + field68618: Boolean + field68619: String + field68620: Scalar2 + field68621: Scalar2 + field68622: String + field68623: Scalar2 + field68624: Scalar2 +} + +type Object12634 @Directive21(argument61 : "stringValue49941") @Directive44(argument97 : ["stringValue49940"]) { + field68612: Int + field68613: Scalar2 + field68614: Scalar2 +} + +type Object12635 @Directive21(argument61 : "stringValue49947") @Directive44(argument97 : ["stringValue49946"]) { + field68626: String +} + +type Object12636 @Directive21(argument61 : "stringValue49952") @Directive44(argument97 : ["stringValue49951"]) { + field68628: [Object12637]! + field68637: String! + field68638: String +} + +type Object12637 @Directive21(argument61 : "stringValue49954") @Directive44(argument97 : ["stringValue49953"]) { + field68629: String! + field68630: String! + field68631: String! + field68632: String! + field68633: String! + field68634: String! + field68635: String! + field68636: String! +} + +type Object12638 @Directive21(argument61 : "stringValue49961") @Directive44(argument97 : ["stringValue49960"]) { + field68640: Boolean +} + +type Object12639 @Directive21(argument61 : "stringValue49967") @Directive44(argument97 : ["stringValue49966"]) { + field68642: Boolean + field68643: Object12623 +} + +type Object1264 @Directive22(argument62 : "stringValue6541") @Directive31 @Directive44(argument97 : ["stringValue6542", "stringValue6543"]) { + field7056: String + field7057: String + field7058: String +} + +type Object12640 @Directive21(argument61 : "stringValue49973") @Directive44(argument97 : ["stringValue49972"]) { + field68645: [Object6127] + field68646: [Object6127] +} + +type Object12641 @Directive44(argument97 : ["stringValue49974"]) { + field68648(argument2693: InputObject2326!): Object12642 @Directive35(argument89 : "stringValue49976", argument90 : true, argument91 : "stringValue49975", argument92 : 1202, argument93 : "stringValue49977", argument94 : false) + field68691(argument2694: InputObject2327!): Object12649 @Directive35(argument89 : "stringValue49996", argument90 : true, argument91 : "stringValue49995", argument92 : 1203, argument93 : "stringValue49997", argument94 : false) + field68705(argument2695: InputObject2328!): Object12654 @Directive35(argument89 : "stringValue50014", argument90 : true, argument91 : "stringValue50013", argument92 : 1204, argument93 : "stringValue50015", argument94 : false) + field68707(argument2696: InputObject2329!): Object12655 @Directive35(argument89 : "stringValue50020", argument90 : true, argument91 : "stringValue50019", argument92 : 1205, argument93 : "stringValue50021", argument94 : false) + field68726(argument2697: InputObject2330!): Object12657 @Directive35(argument89 : "stringValue50028", argument90 : true, argument91 : "stringValue50027", argument92 : 1206, argument93 : "stringValue50029", argument94 : false) +} + +type Object12642 @Directive21(argument61 : "stringValue49981") @Directive44(argument97 : ["stringValue49980"]) { + field68649: Object12643 +} + +type Object12643 @Directive21(argument61 : "stringValue49983") @Directive44(argument97 : ["stringValue49982"]) { + field68650: Scalar2! + field68651: [Object12644] + field68665: Boolean + field68666: String + field68667: Boolean + field68668: String + field68669: String + field68670: String + field68671: Object12646 + field68677: [Object12647] + field68690: String! +} + +type Object12644 @Directive21(argument61 : "stringValue49985") @Directive44(argument97 : ["stringValue49984"]) { + field68652: String! + field68653: String! + field68654: String + field68655: String + field68656: String + field68657: String + field68658: Boolean! + field68659: Enum3204 + field68660: [Object12645] + field68664: String +} + +type Object12645 @Directive21(argument61 : "stringValue49988") @Directive44(argument97 : ["stringValue49987"]) { + field68661: String! + field68662: String + field68663: String +} + +type Object12646 @Directive21(argument61 : "stringValue49990") @Directive44(argument97 : ["stringValue49989"]) { + field68672: String + field68673: String + field68674: String + field68675: String + field68676: Boolean +} + +type Object12647 @Directive21(argument61 : "stringValue49992") @Directive44(argument97 : ["stringValue49991"]) { + field68678: String + field68679: String! + field68680: Boolean! + field68681: String + field68682: [Object12648] + field68688: String + field68689: String +} + +type Object12648 @Directive21(argument61 : "stringValue49994") @Directive44(argument97 : ["stringValue49993"]) { + field68683: String + field68684: String + field68685: String + field68686: String + field68687: String +} + +type Object12649 @Directive21(argument61 : "stringValue50000") @Directive44(argument97 : ["stringValue49999"]) { + field68692: Scalar2! + field68693: Object12650 + field68699: Object12652 + field68703: String! + field68704: String +} + +type Object1265 @Directive22(argument62 : "stringValue6544") @Directive31 @Directive44(argument97 : ["stringValue6545", "stringValue6546"]) { + field7059: String + field7060: String + field7061: Boolean + field7062: String + field7063: String +} + +type Object12650 @Directive21(argument61 : "stringValue50002") @Directive44(argument97 : ["stringValue50001"]) { + field68694: [Object12651] +} + +type Object12651 @Directive21(argument61 : "stringValue50004") @Directive44(argument97 : ["stringValue50003"]) { + field68695: String! + field68696: String + field68697: Enum3205 + field68698: Enum3206 +} + +type Object12652 @Directive21(argument61 : "stringValue50008") @Directive44(argument97 : ["stringValue50007"]) { + field68700: [Union409] +} + +type Object12653 @Directive21(argument61 : "stringValue50011") @Directive44(argument97 : ["stringValue50010"]) { + field68701: [Object12651]! + field68702: Enum3207 +} + +type Object12654 @Directive21(argument61 : "stringValue50018") @Directive44(argument97 : ["stringValue50017"]) { + field68706: String +} + +type Object12655 @Directive21(argument61 : "stringValue50024") @Directive44(argument97 : ["stringValue50023"]) { + field68708: Scalar2! + field68709: String! + field68710: [Object12656] + field68721: String + field68722: String + field68723: String + field68724: String + field68725: String! +} + +type Object12656 @Directive21(argument61 : "stringValue50026") @Directive44(argument97 : ["stringValue50025"]) { + field68711: String! + field68712: String + field68713: String + field68714: String + field68715: String + field68716: String + field68717: String + field68718: String! + field68719: String! + field68720: String +} + +type Object12657 @Directive21(argument61 : "stringValue50032") @Directive44(argument97 : ["stringValue50031"]) { + field68727: Object12655 +} + +type Object12658 @Directive44(argument97 : ["stringValue50033"]) { + field68729(argument2698: InputObject2331!): Object12659 @Directive35(argument89 : "stringValue50035", argument90 : false, argument91 : "stringValue50034", argument93 : "stringValue50036", argument94 : false) + field68920(argument2699: InputObject2332!): Object12711 @Directive35(argument89 : "stringValue50152", argument90 : false, argument91 : "stringValue50151", argument93 : "stringValue50153", argument94 : false) +} + +type Object12659 @Directive21(argument61 : "stringValue50041") @Directive44(argument97 : ["stringValue50040"]) { + field68730: Object12660 + field68917: String + field68918: String + field68919: Boolean +} + +type Object1266 @Directive20(argument58 : "stringValue6548", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6547") @Directive31 @Directive44(argument97 : ["stringValue6549", "stringValue6550"]) { + field7064: String + field7065: String + field7066: Object480 + field7067: Enum206 + field7068: String +} + +type Object12660 @Directive21(argument61 : "stringValue50043") @Directive44(argument97 : ["stringValue50042"]) { + field68731: [Object12661] + field68898: Enum3215 + field68899: Object12707 + field68910: Object12709 + field68915: [Object12710] +} + +type Object12661 @Directive21(argument61 : "stringValue50045") @Directive44(argument97 : ["stringValue50044"]) { + field68732: Scalar2 + field68733: Enum3210 + field68734: Union410 + field68897: String +} + +type Object12662 @Directive21(argument61 : "stringValue50049") @Directive44(argument97 : ["stringValue50048"]) { + field68735: String + field68736: String + field68737: String + field68738: String + field68739: String + field68740: Scalar1 +} + +type Object12663 @Directive21(argument61 : "stringValue50051") @Directive44(argument97 : ["stringValue50050"]) { + field68741: String + field68742: [Object12664] +} + +type Object12664 @Directive21(argument61 : "stringValue50053") @Directive44(argument97 : ["stringValue50052"]) { + field68743: String + field68744: Object12665 +} + +type Object12665 @Directive21(argument61 : "stringValue50055") @Directive44(argument97 : ["stringValue50054"]) { + field68745: Object12666 + field68755: String + field68756: String +} + +type Object12666 @Directive21(argument61 : "stringValue50057") @Directive44(argument97 : ["stringValue50056"]) { + field68746: String + field68747: Int + field68748: Int + field68749: String + field68750: String + field68751: Scalar1 + field68752: String + field68753: Object12666 + field68754: Object12666 +} + +type Object12667 @Directive21(argument61 : "stringValue50059") @Directive44(argument97 : ["stringValue50058"]) { + field68757: [Object12661] + field68758: String +} + +type Object12668 @Directive21(argument61 : "stringValue50061") @Directive44(argument97 : ["stringValue50060"]) { + field68759: [Object12664] +} + +type Object12669 @Directive21(argument61 : "stringValue50063") @Directive44(argument97 : ["stringValue50062"]) { + field68760: Object12670 + field68767: Object12670 + field68768: Object12670 + field68769: Object12670 +} + +type Object1267 @Directive22(argument62 : "stringValue6551") @Directive31 @Directive44(argument97 : ["stringValue6552", "stringValue6553"]) { + field7069: String + field7070: String + field7071: Enum10 + field7072: Enum145 + field7073: Enum109 + field7074: Interface3 + field7075: String + field7076: Object1268 +} + +type Object12670 @Directive21(argument61 : "stringValue50065") @Directive44(argument97 : ["stringValue50064"]) { + field68761: String + field68762: String + field68763: Enum3211 + field68764: [Object12671] +} + +type Object12671 @Directive21(argument61 : "stringValue50068") @Directive44(argument97 : ["stringValue50067"]) { + field68765: String + field68766: String +} + +type Object12672 @Directive21(argument61 : "stringValue50070") @Directive44(argument97 : ["stringValue50069"]) { + field68770: Object12666 + field68771: String +} + +type Object12673 @Directive21(argument61 : "stringValue50072") @Directive44(argument97 : ["stringValue50071"]) { + field68772: [Object12674] + field68781: String + field68782: String + field68783: Object12666 + field68784: Enum3213 +} + +type Object12674 @Directive21(argument61 : "stringValue50074") @Directive44(argument97 : ["stringValue50073"]) { + field68773: String + field68774: String + field68775: [Object12675] +} + +type Object12675 @Directive21(argument61 : "stringValue50076") @Directive44(argument97 : ["stringValue50075"]) { + field68776: String + field68777: String + field68778: Enum3212 + field68779: String + field68780: String +} + +type Object12676 @Directive21(argument61 : "stringValue50080") @Directive44(argument97 : ["stringValue50079"]) { + field68785: [Object12661] + field68786: String +} + +type Object12677 @Directive21(argument61 : "stringValue50082") @Directive44(argument97 : ["stringValue50081"]) { + field68787: Object12678 + field68792: [Object12680] + field68795: [Object12681] +} + +type Object12678 @Directive21(argument61 : "stringValue50084") @Directive44(argument97 : ["stringValue50083"]) { + field68788: String + field68789: String + field68790: Object12679 +} + +type Object12679 @Directive21(argument61 : "stringValue50086") @Directive44(argument97 : ["stringValue50085"]) { + field68791: String +} + +type Object1268 @Directive22(argument62 : "stringValue6554") @Directive31 @Directive44(argument97 : ["stringValue6555", "stringValue6556"]) { + field7077: String + field7078: String + field7079: Object449 + field7080: Enum10 + field7081: [Object480] + field7082: Object452 +} + +type Object12680 @Directive21(argument61 : "stringValue50088") @Directive44(argument97 : ["stringValue50087"]) { + field68793: String + field68794: String +} + +type Object12681 @Directive21(argument61 : "stringValue50090") @Directive44(argument97 : ["stringValue50089"]) { + field68796: String + field68797: [Object12682] +} + +type Object12682 @Directive21(argument61 : "stringValue50092") @Directive44(argument97 : ["stringValue50091"]) { + field68798: String + field68799: Object12666 + field68800: Object12683 + field68805: String +} + +type Object12683 @Directive21(argument61 : "stringValue50094") @Directive44(argument97 : ["stringValue50093"]) { + field68801: Enum3208 + field68802: String + field68803: String + field68804: String +} + +type Object12684 @Directive21(argument61 : "stringValue50096") @Directive44(argument97 : ["stringValue50095"]) { + field68806: [Object12666] + field68807: String + field68808: String + field68809: Boolean + field68810: Int + field68811: String + field68812: Boolean + field68813: Scalar1 +} + +type Object12685 @Directive21(argument61 : "stringValue50098") @Directive44(argument97 : ["stringValue50097"]) { + field68814: [Object12661] + field68815: String +} + +type Object12686 @Directive21(argument61 : "stringValue50100") @Directive44(argument97 : ["stringValue50099"]) { + field68816: Scalar1 + field68817: String + field68818: Object12666 + field68819: Boolean + field68820: Scalar1 +} + +type Object12687 @Directive21(argument61 : "stringValue50102") @Directive44(argument97 : ["stringValue50101"]) { + field68821: [Object12688] +} + +type Object12688 @Directive21(argument61 : "stringValue50104") @Directive44(argument97 : ["stringValue50103"]) { + field68822: String + field68823: String + field68824: String + field68825: Int + field68826: String + field68827: String +} + +type Object12689 @Directive21(argument61 : "stringValue50106") @Directive44(argument97 : ["stringValue50105"]) { + field68828: String + field68829: String + field68830: String + field68831: String + field68832: Object12690 + field68842: Int + field68843: Enum3214 +} + +type Object1269 @Directive22(argument62 : "stringValue6557") @Directive31 @Directive44(argument97 : ["stringValue6558", "stringValue6559"]) { + field7083: String + field7084: ID + field7085: String + field7086: String + field7087: String + field7088: Scalar4 + field7089: Scalar4 + field7090: Object1173 + field7091: Object452 + field7092: Object1267 + field7093: Object1267 +} + +type Object12690 @Directive21(argument61 : "stringValue50108") @Directive44(argument97 : ["stringValue50107"]) { + field68833: String @deprecated + field68834: [Object12691] + field68839: [String] + field68840: String + field68841: String +} + +type Object12691 @Directive21(argument61 : "stringValue50110") @Directive44(argument97 : ["stringValue50109"]) { + field68835: String + field68836: String + field68837: Int + field68838: Int +} + +type Object12692 @Directive21(argument61 : "stringValue50113") @Directive44(argument97 : ["stringValue50112"]) { + field68844: String + field68845: String + field68846: String + field68847: String + field68848: Object12693 +} + +type Object12693 @Directive21(argument61 : "stringValue50115") @Directive44(argument97 : ["stringValue50114"]) { + field68849: [Object12694] + field68854: String + field68855: String + field68856: String +} + +type Object12694 @Directive21(argument61 : "stringValue50117") @Directive44(argument97 : ["stringValue50116"]) { + field68850: String + field68851: String + field68852: String + field68853: String +} + +type Object12695 @Directive21(argument61 : "stringValue50119") @Directive44(argument97 : ["stringValue50118"]) { + field68857: [Object12696] + field68860: String + field68861: String + field68862: Object12666 + field68863: Scalar1 +} + +type Object12696 @Directive21(argument61 : "stringValue50121") @Directive44(argument97 : ["stringValue50120"]) { + field68858: String + field68859: Object12666 +} + +type Object12697 @Directive21(argument61 : "stringValue50123") @Directive44(argument97 : ["stringValue50122"]) { + field68864: Object12666 + field68865: [Object12683] +} + +type Object12698 @Directive21(argument61 : "stringValue50125") @Directive44(argument97 : ["stringValue50124"]) { + field68866: String + field68867: String + field68868: String + field68869: Object12666 + field68870: [Object12675] +} + +type Object12699 @Directive21(argument61 : "stringValue50127") @Directive44(argument97 : ["stringValue50126"]) { + field68871: String + field68872: String + field68873: String + field68874: Scalar1 +} + +type Object127 @Directive21(argument61 : "stringValue452") @Directive44(argument97 : ["stringValue451"]) { + field810: Object128 + field819: Object129 + field837: Object128 + field838: Object129 +} + +type Object1270 @Directive22(argument62 : "stringValue6560") @Directive31 @Directive44(argument97 : ["stringValue6561", "stringValue6562"]) { + field7094: String + field7095: String + field7096: String + field7097: ID + field7098: String + field7099: Object452 + field7100: Object452 + field7101: Object1172 + field7102: Object1172 + field7103: String +} + +type Object12700 @Directive21(argument61 : "stringValue50129") @Directive44(argument97 : ["stringValue50128"]) { + field68875: [Object12701] +} + +type Object12701 @Directive21(argument61 : "stringValue50131") @Directive44(argument97 : ["stringValue50130"]) { + field68876: String + field68877: [Object12702] +} + +type Object12702 @Directive21(argument61 : "stringValue50133") @Directive44(argument97 : ["stringValue50132"]) { + field68878: String + field68879: Object12703 + field68883: String + field68884: String +} + +type Object12703 @Directive21(argument61 : "stringValue50135") @Directive44(argument97 : ["stringValue50134"]) { + field68880: Object12666 + field68881: String + field68882: String +} + +type Object12704 @Directive21(argument61 : "stringValue50137") @Directive44(argument97 : ["stringValue50136"]) { + field68885: Object12678 + field68886: Object12666 + field68887: String + field68888: String + field68889: String +} + +type Object12705 @Directive21(argument61 : "stringValue50139") @Directive44(argument97 : ["stringValue50138"]) { + field68890: [String] + field68891: Scalar1 +} + +type Object12706 @Directive21(argument61 : "stringValue50141") @Directive44(argument97 : ["stringValue50140"]) { + field68892: Object12666 + field68893: Scalar1 + field68894: String + field68895: Boolean + field68896: Scalar1 +} + +type Object12707 @Directive21(argument61 : "stringValue50144") @Directive44(argument97 : ["stringValue50143"]) { + field68900: String + field68901: String + field68902: String + field68903: String + field68904: Object12708 +} + +type Object12708 @Directive21(argument61 : "stringValue50146") @Directive44(argument97 : ["stringValue50145"]) { + field68905: String + field68906: String + field68907: String + field68908: String + field68909: String +} + +type Object12709 @Directive21(argument61 : "stringValue50148") @Directive44(argument97 : ["stringValue50147"]) { + field68911: String + field68912: String + field68913: String + field68914: String +} + +type Object1271 @Directive22(argument62 : "stringValue6563") @Directive31 @Directive44(argument97 : ["stringValue6564", "stringValue6565"]) { + field7104: String + field7105: String + field7106: [Object1272] +} + +type Object12710 @Directive21(argument61 : "stringValue50150") @Directive44(argument97 : ["stringValue50149"]) { + field68916: String +} + +type Object12711 @Directive21(argument61 : "stringValue50157") @Directive44(argument97 : ["stringValue50156"]) { + field68921: Object12660 + field68922: Scalar2 + field68923: Enum3208 + field68924: Enum3216 + field68925: String +} + +type Object12712 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue50300") @Directive30(argument84 : "stringValue50303", argument85 : "stringValue50302", argument86 : "stringValue50301") @Directive44(argument97 : ["stringValue50304", "stringValue50305"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field30146: ID! @Directive14(argument51 : "stringValue50332") @Directive30(argument80 : true) @Directive41 + field69068: Object12713! @Directive30(argument80 : true) @Directive4(argument5 : "stringValue50306") @Directive41 + field69069: String @Directive30(argument80 : true) @Directive41 + field69097: String @Directive30(argument80 : true) @Directive41 + field69098: String @Directive30(argument80 : true) @Directive41 + field69099: String @Directive30(argument80 : true) @Directive41 + field69100: String @Directive30(argument80 : true) @Directive41 + field69101: Float @Directive30(argument80 : true) @Directive41 + field69102: String @Directive30(argument80 : true) @Directive41 +} + +type Object12713 implements Interface36 @Directive22(argument62 : "stringValue50307") @Directive30(argument84 : "stringValue50315", argument85 : "stringValue50314", argument86 : "stringValue50313") @Directive44(argument97 : ["stringValue50316", "stringValue50317"]) @Directive45(argument98 : ["stringValue50318"]) @Directive7(argument12 : "stringValue50311", argument13 : "stringValue50310", argument14 : "stringValue50309", argument16 : "stringValue50312", argument17 : "stringValue50308", argument18 : true) { + field10476: Scalar2 @Directive30(argument80 : true) @Directive41 + field18010: Object6137 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field30145: String @Directive30(argument80 : true) @Directive41 + field30146: ID! @Directive14(argument51 : "stringValue50319") @Directive30(argument80 : true) @Directive41 + field69069: String @Directive30(argument80 : true) @Directive41 + field69070: String @Directive30(argument80 : true) @Directive41 + field69071: String @Directive30(argument80 : true) @Directive41 + field69072: String @Directive30(argument80 : true) @Directive41 + field69073: Scalar2 @Directive30(argument80 : true) @Directive41 + field69074: String @Directive30(argument80 : true) @Directive41 + field69075: Scalar4 @Directive30(argument80 : true) @Directive41 + field69076: Scalar4 @Directive30(argument80 : true) @Directive41 + field69077: Scalar3 @Directive30(argument80 : true) @Directive41 + field69078: Scalar3 @Directive30(argument80 : true) @Directive41 + field69079: Scalar2 @Directive30(argument80 : true) @Directive41 + field69080: Boolean @Directive30(argument80 : true) @Directive41 + field69081: Scalar2 @Directive30(argument80 : true) @Directive41 + field69082: Scalar2 @Directive30(argument80 : true) @Directive41 + field69083: Scalar2 @Directive30(argument80 : true) @Directive41 + field69084: Scalar2 @Directive30(argument80 : true) @Directive41 + field69085: Scalar2 @Directive30(argument80 : true) @Directive41 + field69086: Scalar2 @Directive30(argument80 : true) @Directive41 + field69087: Scalar2 @Directive30(argument80 : true) @Directive41 + field69088: Scalar2 @Directive30(argument80 : true) @Directive41 + field69089: Scalar2 @Directive30(argument80 : true) @Directive41 + field69090: Scalar2 @Directive30(argument80 : true) @Directive41 + field69091: Boolean @Directive30(argument80 : true) @Directive41 + field69092: Boolean @Directive30(argument80 : true) @Directive41 + field69093: Boolean @Directive30(argument80 : true) @Directive41 + field69094: String @Directive30(argument80 : true) @Directive41 + field69095: Object12714 @Directive30(argument80 : true) @Directive41 + field69096(argument2700: String!): Object6143 @Directive14(argument51 : "stringValue50331") @Directive30(argument80 : true) @Directive41 + field9030: String! @Directive30(argument80 : true) @Directive41 +} + +type Object12714 implements Interface92 @Directive22(argument62 : "stringValue50325") @Directive44(argument97 : ["stringValue50326", "stringValue50327"]) @Directive8(argument21 : "stringValue50321", argument23 : "stringValue50323", argument24 : "stringValue50320", argument25 : "stringValue50322", argument27 : "stringValue50324") { + field8384: Object753! + field8385: [Object12715] +} + +type Object12715 implements Interface93 @Directive22(argument62 : "stringValue50328") @Directive44(argument97 : ["stringValue50329", "stringValue50330"]) { + field8386: String! + field8999: Object12712 +} + +type Object12716 implements Interface176 & Interface99 @Directive22(argument62 : "stringValue50439") @Directive31 @Directive44(argument97 : ["stringValue50440", "stringValue50441"]) @Directive45(argument98 : ["stringValue50442"]) { + field69203: Object12717 @Directive14(argument51 : "stringValue50443") + field8997: Object2151 +} + +type Object12717 @Directive22(argument62 : "stringValue50436") @Directive31 @Directive44(argument97 : ["stringValue50437", "stringValue50438"]) { + field69204: String! + field69205: String + field69206: String! + field69207: Object754 +} + +type Object1272 @Directive22(argument62 : "stringValue6566") @Directive31 @Directive44(argument97 : ["stringValue6567", "stringValue6568"]) { + field7107: String + field7108: String + field7109: String + field7110: Object1273 +} + +type Object1273 @Directive22(argument62 : "stringValue6569") @Directive31 @Directive44(argument97 : ["stringValue6570", "stringValue6571"]) { + field7111: String + field7112: String + field7113: [Object1172] + field7114: Object1274 + field7117: Object1173 +} + +type Object1274 @Directive22(argument62 : "stringValue6572") @Directive31 @Directive44(argument97 : ["stringValue6573", "stringValue6574"]) { + field7115: Object1173 + field7116: Object1173 +} + +type Object1275 @Directive22(argument62 : "stringValue6575") @Directive31 @Directive44(argument97 : ["stringValue6576", "stringValue6577"]) { + field7118: [Union164] + field7132: Object1285 + field7141: Object1287 +} + +type Object1276 @Directive22(argument62 : "stringValue6581") @Directive31 @Directive44(argument97 : ["stringValue6582", "stringValue6583"]) { + field7119: [Object746] +} + +type Object1277 @Directive22(argument62 : "stringValue6584") @Directive31 @Directive44(argument97 : ["stringValue6585", "stringValue6586"]) { + field7120: [Object1278] + field7123: [Object746] +} + +type Object1278 @Directive20(argument58 : "stringValue6588", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6587") @Directive31 @Directive44(argument97 : ["stringValue6589", "stringValue6590"]) { + field7121: Scalar2 + field7122: Object754 +} + +type Object1279 @Directive22(argument62 : "stringValue6591") @Directive31 @Directive44(argument97 : ["stringValue6592", "stringValue6593"]) { + field7124: [Object787] +} + +type Object128 @Directive21(argument61 : "stringValue454") @Directive44(argument97 : ["stringValue453"]) { + field811: String + field812: Scalar2 + field813: String + field814: Boolean + field815: Boolean + field816: String + field817: String + field818: String +} + +type Object1280 @Directive22(argument62 : "stringValue6594") @Directive31 @Directive44(argument97 : ["stringValue6595", "stringValue6596"]) { + field7125: [Object1125] +} + +type Object1281 @Directive22(argument62 : "stringValue6597") @Directive31 @Directive44(argument97 : ["stringValue6598", "stringValue6599"]) { + field7126: [Object949] +} + +type Object1282 @Directive22(argument62 : "stringValue6600") @Directive31 @Directive44(argument97 : ["stringValue6601", "stringValue6602"]) { + field7127: [Object949] +} + +type Object1283 @Directive22(argument62 : "stringValue6603") @Directive31 @Directive44(argument97 : ["stringValue6604", "stringValue6605"]) { + field7128: Object1284 +} + +type Object1284 @Directive22(argument62 : "stringValue6606") @Directive31 @Directive44(argument97 : ["stringValue6607", "stringValue6608"]) { + field7129: String + field7130: String + field7131: String +} + +type Object1285 @Directive22(argument62 : "stringValue6609") @Directive31 @Directive44(argument97 : ["stringValue6610", "stringValue6611"]) { + field7133: Enum318 + field7134: Object754 + field7135: String + field7136: Boolean + field7137: Object1286 + field7140: Boolean +} + +type Object1286 @Directive22(argument62 : "stringValue6616") @Directive31 @Directive44(argument97 : ["stringValue6617", "stringValue6618"]) { + field7138: String + field7139: Object754 +} + +type Object1287 @Directive22(argument62 : "stringValue6619") @Directive31 @Directive44(argument97 : ["stringValue6620", "stringValue6621"]) { + field7142: String + field7143: Object1288 +} + +type Object1288 @Directive22(argument62 : "stringValue6622") @Directive31 @Directive44(argument97 : ["stringValue6623", "stringValue6624"]) { + field7144: String + field7145: Int + field7146: Interface3 +} + +type Object1289 @Directive22(argument62 : "stringValue6625") @Directive31 @Directive44(argument97 : ["stringValue6626", "stringValue6627"]) { + field7147: String + field7148: String + field7149: Object866 + field7150: String + field7151: String + field7152: [Interface83!] @deprecated + field7154: [Interface84!] + field7159: Object450 + field7160: Object450 +} + +type Object129 @Directive21(argument61 : "stringValue456") @Directive44(argument97 : ["stringValue455"]) { + field820: String + field821: String + field822: String + field823: String + field824: String + field825: String + field826: String + field827: String + field828: String + field829: Boolean + field830: String + field831: String + field832: String + field833: String + field834: String + field835: String + field836: Scalar2 +} + +type Object1290 implements Interface23 @Directive22(argument62 : "stringValue6640") @Directive31 @Directive44(argument97 : ["stringValue6641", "stringValue6642"]) { + field2241: String + field2242: Enum123! + field7158: String +} + +type Object1291 @Directive20(argument58 : "stringValue6644", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6643") @Directive31 @Directive44(argument97 : ["stringValue6645", "stringValue6646"]) { + field7161: String + field7162: Enum320 +} + +type Object1292 @Directive22(argument62 : "stringValue6651") @Directive31 @Directive44(argument97 : ["stringValue6652", "stringValue6653"]) { + field7163: String + field7164: String + field7165: String + field7166: [Object1293!] + field7173: String + field7174: String +} + +type Object1293 @Directive22(argument62 : "stringValue6654") @Directive31 @Directive44(argument97 : ["stringValue6655", "stringValue6656"]) { + field7167: [Object837] + field7168: Enum10 + field7169: String + field7170: String + field7171: Boolean + field7172: Boolean +} + +type Object1294 @Directive20(argument58 : "stringValue6658", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6657") @Directive31 @Directive44(argument97 : ["stringValue6659", "stringValue6660"]) { + field7175: String + field7176: [Object1295!] + field7227: Object1 +} + +type Object1295 @Directive20(argument58 : "stringValue6662", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6661") @Directive31 @Directive44(argument97 : ["stringValue6663", "stringValue6664"]) { + field7177: ID! + field7178: String + field7179: String + field7180: String + field7181: Object478 @deprecated + field7182: [Interface6!] + field7183: [Object1296!] + field7223: [Object1296!] + field7224: [Object480!] + field7225: Object480 + field7226: Object480 +} + +type Object1296 @Directive20(argument58 : "stringValue6666", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6665") @Directive31 @Directive44(argument97 : ["stringValue6667", "stringValue6668"]) { + field7184: Enum321 + field7185: Enum322! + field7186: Union165 +} + +type Object1297 @Directive20(argument58 : "stringValue6681", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6680") @Directive31 @Directive44(argument97 : ["stringValue6682", "stringValue6683"]) { + field7187: String + field7188: String + field7189: String +} + +type Object1298 @Directive20(argument58 : "stringValue6685", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6684") @Directive31 @Directive44(argument97 : ["stringValue6686", "stringValue6687"]) { + field7190: String +} + +type Object1299 @Directive20(argument58 : "stringValue6689", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6688") @Directive31 @Directive44(argument97 : ["stringValue6690", "stringValue6691"]) { + field7191: String + field7192: String +} + +type Object13 @Directive20(argument58 : "stringValue108", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue107") @Directive31 @Directive44(argument97 : ["stringValue109", "stringValue110"]) { + field107: String + field108: String +} + +type Object130 @Directive21(argument61 : "stringValue458") @Directive44(argument97 : ["stringValue457"]) { + field842: String + field843: String + field844: [Object131] +} + +type Object1300 @Directive20(argument58 : "stringValue6693", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6692") @Directive31 @Directive44(argument97 : ["stringValue6694", "stringValue6695"]) { + field7193: String + field7194: String + field7195: String +} + +type Object1301 @Directive20(argument58 : "stringValue6697", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6696") @Directive31 @Directive44(argument97 : ["stringValue6698", "stringValue6699"]) { + field7196: String +} + +type Object1302 @Directive20(argument58 : "stringValue6701", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6700") @Directive31 @Directive44(argument97 : ["stringValue6702", "stringValue6703"]) { + field7197: String + field7198: String +} + +type Object1303 @Directive20(argument58 : "stringValue6705", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6704") @Directive31 @Directive44(argument97 : ["stringValue6706", "stringValue6707"]) { + field7199: String + field7200: String + field7201: String +} + +type Object1304 @Directive20(argument58 : "stringValue6709", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6708") @Directive31 @Directive44(argument97 : ["stringValue6710", "stringValue6711"]) { + field7202: String + field7203: String + field7204: String + field7205: String +} + +type Object1305 @Directive20(argument58 : "stringValue6713", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6712") @Directive31 @Directive44(argument97 : ["stringValue6714", "stringValue6715"]) { + field7206: String +} + +type Object1306 @Directive20(argument58 : "stringValue6717", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6716") @Directive31 @Directive44(argument97 : ["stringValue6718", "stringValue6719"]) { + field7207: String + field7208: String +} + +type Object1307 @Directive20(argument58 : "stringValue6721", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6720") @Directive31 @Directive44(argument97 : ["stringValue6722", "stringValue6723"]) { + field7209: String + field7210: String +} + +type Object1308 @Directive20(argument58 : "stringValue6725", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6724") @Directive31 @Directive44(argument97 : ["stringValue6726", "stringValue6727"]) { + field7211: String + field7212: String + field7213: String +} + +type Object1309 @Directive20(argument58 : "stringValue6729", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6728") @Directive31 @Directive44(argument97 : ["stringValue6730", "stringValue6731"]) { + field7214: String + field7215: String + field7216: String +} + +type Object131 @Directive21(argument61 : "stringValue460") @Directive44(argument97 : ["stringValue459"]) { + field845: String + field846: String + field847: String +} + +type Object1310 @Directive20(argument58 : "stringValue6733", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6732") @Directive31 @Directive44(argument97 : ["stringValue6734", "stringValue6735"]) { + field7217: String + field7218: String + field7219: String +} + +type Object1311 @Directive20(argument58 : "stringValue6737", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6736") @Directive31 @Directive44(argument97 : ["stringValue6738", "stringValue6739"]) { + field7220: String + field7221: String + field7222: String +} + +type Object1312 @Directive22(argument62 : "stringValue6742") @Directive31 @Directive44(argument97 : ["stringValue6740", "stringValue6741"]) { + field7228: [Object842] +} + +type Object1313 @Directive22(argument62 : "stringValue6743") @Directive31 @Directive44(argument97 : ["stringValue6744", "stringValue6745"]) { + field7229: Interface6 + field7230: Object449 + field7231: Object452 +} + +type Object1314 @Directive20(argument58 : "stringValue6747", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6746") @Directive31 @Directive44(argument97 : ["stringValue6748", "stringValue6749"]) { + field7232: String + field7233: String + field7234: Boolean + field7235: Scalar2 + field7236: String! + field7237: String + field7238: Float + field7239: Float + field7240: String + field7241: Boolean + field7242: Float + field7243: [Object1315!] + field7249: Int + field7250: Int + field7251: String + field7252: String + field7253: Int + field7254: Int + field7255: Int + field7256: Int + field7257: Union92 + field7258: String + field7259: Boolean + field7260: Boolean + field7261: Boolean + field7262: Boolean + field7263: String + field7264: Float + field7265: Float +} + +type Object1315 @Directive20(argument58 : "stringValue6751", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6750") @Directive31 @Directive44(argument97 : ["stringValue6752", "stringValue6753"]) { + field7244: String + field7245: Int + field7246: Float + field7247: String + field7248: [Object792!] +} + +type Object1316 @Directive22(argument62 : "stringValue6754") @Directive31 @Directive44(argument97 : ["stringValue6755", "stringValue6756"]) { + field7266: String + field7267: String +} + +type Object1317 @Directive22(argument62 : "stringValue6757") @Directive31 @Directive44(argument97 : ["stringValue6758", "stringValue6759"]) { + field7268: Object1195 @Directive37(argument95 : "stringValue6760") +} + +type Object1318 @Directive22(argument62 : "stringValue6761") @Directive31 @Directive44(argument97 : ["stringValue6762", "stringValue6763"]) { + field7269: String + field7270: Enum142 + field7271: Enum143 + field7272: Object878 +} + +type Object1319 @Directive22(argument62 : "stringValue6764") @Directive31 @Directive44(argument97 : ["stringValue6765", "stringValue6766"]) { + field7273: Object595 + field7274: Interface3 +} + +type Object132 @Directive21(argument61 : "stringValue462") @Directive44(argument97 : ["stringValue461"]) { + field851: String + field852: [Object86] + field853: Boolean +} + +type Object1320 implements Interface86 @Directive20(argument58 : "stringValue6771", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6770") @Directive31 @Directive44(argument97 : ["stringValue6772", "stringValue6773"]) { + field7275: [Interface5!] + field7276: String + field7277: Object450 +} + +type Object1321 @Directive22(argument62 : "stringValue6774") @Directive31 @Directive44(argument97 : ["stringValue6775", "stringValue6776"]) { + field7278: Object596 + field7279: Object596 + field7280: Object596 + field7281: Object478 + field7282: [Object596] + field7283: [Interface87] + field7285: Interface3 +} + +type Object1322 implements Interface81 @Directive22(argument62 : "stringValue6780") @Directive31 @Directive44(argument97 : ["stringValue6781", "stringValue6782"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object1323 @Directive22(argument62 : "stringValue6783") @Directive31 @Directive44(argument97 : ["stringValue6784", "stringValue6785"]) { + field7286: [Object1324] + field7295: String + field7296: String + field7297: Enum323 + field7298: String + field7299: Object1158 + field7300: Enum324 + field7301: Object1154 + field7302: Enum299 +} + +type Object1324 @Directive22(argument62 : "stringValue6786") @Directive31 @Directive44(argument97 : ["stringValue6787", "stringValue6788"]) { + field7287: String + field7288: String + field7289: String + field7290: String + field7291: String + field7292: Object1325 @deprecated + field7294: Interface3 +} + +type Object1325 implements Interface3 @Directive22(argument62 : "stringValue6789") @Directive31 @Directive44(argument97 : ["stringValue6790", "stringValue6791"]) { + field4: Object1 + field7293: String! + field74: String + field75: Scalar1 +} + +type Object1326 @Directive22(argument62 : "stringValue6799") @Directive31 @Directive44(argument97 : ["stringValue6800", "stringValue6801"]) { + field7303: Object480 @deprecated + field7304: String + field7305: String + field7306: Object1325 +} + +type Object1327 @Directive20(argument58 : "stringValue6803", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6802") @Directive31 @Directive44(argument97 : ["stringValue6804", "stringValue6805"]) { + field7307: String + field7308: String + field7309: Enum10 + field7310: Object480 + field7311: Float + field7312: Float + field7313: String + field7314: [Object480!] + field7315: Enum325 + field7316: String + field7317: [Object1328!] + field7328: Object480 + field7329: String + field7330: [Object1328!] + field7331: String + field7332: String + field7333: Object480 + field7334: Int + field7335: Object1331 + field7339: Object1331 + field7340: Object1 + field7341: Boolean + field7342: [Object1328!] +} + +type Object1328 @Directive20(argument58 : "stringValue6811", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6810") @Directive31 @Directive44(argument97 : ["stringValue6812", "stringValue6813"]) { + field7318: ID! + field7319: Object1243 + field7320: Enum326 + field7321: [Object480] + field7322: String + field7323: Object1329 +} + +type Object1329 @Directive20(argument58 : "stringValue6819", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6818") @Directive31 @Directive44(argument97 : ["stringValue6820", "stringValue6821"]) { + field7324: [Object1330!] +} + +type Object133 @Directive21(argument61 : "stringValue464") @Directive44(argument97 : ["stringValue463"]) { + field855: String + field856: String + field857: String +} + +type Object1330 @Directive20(argument58 : "stringValue6823", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6822") @Directive31 @Directive44(argument97 : ["stringValue6824", "stringValue6825"]) { + field7325: String + field7326: String + field7327: Int +} + +type Object1331 @Directive20(argument58 : "stringValue6827", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6826") @Directive31 @Directive44(argument97 : ["stringValue6828", "stringValue6829"]) { + field7336: Object1 + field7337: Object1 + field7338: Object1 +} + +type Object1332 @Directive20(argument58 : "stringValue6831", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6830") @Directive31 @Directive44(argument97 : ["stringValue6832", "stringValue6833"]) { + field7343: String +} + +type Object1333 @Directive20(argument58 : "stringValue6835", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue6834") @Directive31 @Directive44(argument97 : ["stringValue6836", "stringValue6837"]) { + field7344: String + field7345: String + field7346: String @deprecated + field7347: String + field7348: String + field7349: String + field7350: String + field7351: String + field7352: String + field7353: String + field7354: String +} + +type Object1334 @Directive20(argument58 : "stringValue6839", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6838") @Directive31 @Directive44(argument97 : ["stringValue6840", "stringValue6841"]) { + field7355: String +} + +type Object1335 @Directive20(argument58 : "stringValue6843", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6842") @Directive31 @Directive44(argument97 : ["stringValue6844", "stringValue6845"]) { + field7356: Enum10 + field7357: String + field7358: Object733 + field7359: [Object480!] +} + +type Object1336 @Directive20(argument58 : "stringValue6847", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6846") @Directive31 @Directive44(argument97 : ["stringValue6848", "stringValue6849"]) { + field7360: Object1243 + field7361: Object1246 + field7362: Enum10 + field7363: Object480 + field7364: String + field7365: String +} + +type Object1337 @Directive20(argument58 : "stringValue6851", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6850") @Directive31 @Directive44(argument97 : ["stringValue6852", "stringValue6853"]) { + field7366: String + field7367: Enum206 + field7368: Object733 + field7369: [Object478!] + field7370: Object1 + field7371: [Object480!] + field7372: Object480 + field7373: Object480 + field7374: Object480 + field7375: Object480 +} + +type Object1338 @Directive20(argument58 : "stringValue6855", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6854") @Directive31 @Directive44(argument97 : ["stringValue6856", "stringValue6857"]) { + field7376: String + field7377: String + field7378: Object480 + field7379: Enum10 + field7380: Object480 + field7381: String + field7382: String +} + +type Object1339 @Directive22(argument62 : "stringValue6858") @Directive31 @Directive44(argument97 : ["stringValue6859", "stringValue6860"]) { + field7383: Object741 + field7384: Object596 + field7385: Object596 + field7386: Object596 + field7387: [Object452!] + field7388: Object452 +} + +type Object134 @Directive21(argument61 : "stringValue467") @Directive44(argument97 : ["stringValue466"]) { + field860: String + field861: String + field862: String + field863: String + field864: String + field865: String + field866: String + field867: String + field868: Object135 + field873: Object135 + field874: Object135 + field875: Object136 + field923: String + field924: String + field925: Object35 + field926: Object35 + field927: String + field928: String + field929: String + field930: [Object149] + field934: Boolean + field935: String + field936: String + field937: String + field938: Int + field939: String + field940: String + field941: String + field942: String + field943: String + field944: String +} + +type Object1340 @Directive20(argument58 : "stringValue6862", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6861") @Directive31 @Directive44(argument97 : ["stringValue6863", "stringValue6864"]) { + field7389: Object514 + field7390: Object538 + field7391: String + field7392: Enum327 + field7393: String + field7394: Object548 +} + +type Object1341 @Directive22(argument62 : "stringValue6869") @Directive31 @Directive44(argument97 : ["stringValue6870", "stringValue6871"]) { + field7395: Object452 + field7396: Object478 +} + +type Object1342 @Directive22(argument62 : "stringValue6872") @Directive31 @Directive44(argument97 : ["stringValue6873", "stringValue6874"]) { + field7397: Object452 + field7398: [Interface83!] +} + +type Object1343 @Directive22(argument62 : "stringValue6875") @Directive31 @Directive44(argument97 : ["stringValue6876", "stringValue6877"]) { + field7399: Object452 + field7400: Int + field7401: Int + field7402: Interface3 +} + +type Object1344 @Directive22(argument62 : "stringValue6878") @Directive31 @Directive44(argument97 : ["stringValue6879", "stringValue6880"]) { + field7403: [Object1345!] +} + +type Object1345 @Directive22(argument62 : "stringValue6881") @Directive31 @Directive44(argument97 : ["stringValue6882", "stringValue6883"]) { + field7404: String + field7405: Object450 + field7406: String + field7407: Object450 + field7408: String! + field7409: Boolean +} + +type Object1346 @Directive22(argument62 : "stringValue6884") @Directive31 @Directive44(argument97 : ["stringValue6885", "stringValue6886"]) { + field7410: String + field7411: Object450 + field7412: String + field7413: Object450 + field7414: String! + field7415: Boolean + field7416: [Interface83!] +} + +type Object1347 @Directive22(argument62 : "stringValue6887") @Directive31 @Directive44(argument97 : ["stringValue6888", "stringValue6889"]) { + field7417: [Object1348!] + field7425: [Interface83!] + field7426: [Interface83!] +} + +type Object1348 @Directive22(argument62 : "stringValue6890") @Directive31 @Directive44(argument97 : ["stringValue6891", "stringValue6892"]) { + field7418: String + field7419: Object450 + field7420: String + field7421: Object450 + field7422: String + field7423: Object452 + field7424: [Interface83!] +} + +type Object1349 @Directive22(argument62 : "stringValue6893") @Directive31 @Directive44(argument97 : ["stringValue6894", "stringValue6895"]) { + field7427: String + field7428: String + field7429: Object450 + field7430: [Interface83!] + field7431: String + field7432: Object450 + field7433: Int! + field7434: [Interface3!] + field7435: String +} + +type Object135 @Directive21(argument61 : "stringValue469") @Directive44(argument97 : ["stringValue468"]) { + field869: Scalar2 + field870: String + field871: String + field872: String +} + +type Object1350 @Directive22(argument62 : "stringValue6896") @Directive31 @Directive44(argument97 : ["stringValue6897", "stringValue6898"]) { + field7436: String + field7437: Object450 + field7438: String + field7439: Object450 + field7440: Interface6 + field7441: [Object742!] + field7442: String! + field7443: Interface3 + field7444: [Interface83!] + field7445: [Interface83!] +} + +type Object1351 @Directive22(argument62 : "stringValue6899") @Directive31 @Directive44(argument97 : ["stringValue6900", "stringValue6901"]) { + field7446: String + field7447: Object450 + field7448: String + field7449: Object450 + field7450: Float + field7451: Boolean + field7452: Object452 + field7453: String! +} + +type Object1352 implements Interface5 @Directive22(argument62 : "stringValue6902") @Directive31 @Directive44(argument97 : ["stringValue6903", "stringValue6904"]) { + field6633: Object452 + field7454: Object450 + field7455: Object450 + field7456: String! + field7457: Object450 + field7458: Object506 + field7459: String + field7460: String + field7461: String + field7462: String + field76: String + field77: String + field78: String +} + +type Object1353 @Directive22(argument62 : "stringValue6905") @Directive31 @Directive44(argument97 : ["stringValue6906", "stringValue6907"]) { + field7463: [Interface6!] + field7464: String + field7465: Object480 +} + +type Object1354 @Directive22(argument62 : "stringValue6908") @Directive31 @Directive44(argument97 : ["stringValue6909", "stringValue6910"]) { + field7466: [Object724] +} + +type Object1355 @Directive20(argument58 : "stringValue6912", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6911") @Directive31 @Directive44(argument97 : ["stringValue6913", "stringValue6914"]) { + field7467: String + field7468: [Object1356!] +} + +type Object1356 @Directive20(argument58 : "stringValue6916", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6915") @Directive31 @Directive44(argument97 : ["stringValue6917", "stringValue6918"]) { + field7469: Object478 + field7470: String + field7471: [Object480!] + field7472: String +} + +type Object1357 @Directive20(argument58 : "stringValue6920", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6919") @Directive31 @Directive44(argument97 : ["stringValue6921", "stringValue6922"]) { + field7473: String + field7474: String + field7475: Object480 + field7476: Object10 + field7477: Enum10 +} + +type Object1358 @Directive22(argument62 : "stringValue6923") @Directive31 @Directive44(argument97 : ["stringValue6924", "stringValue6925"]) { + field7478: Object595 + field7479: Object452 + field7480: String + field7481: Object452 + field7482: Object452 + field7483: [Interface88!] +} + +type Object1359 implements Interface81 @Directive22(argument62 : "stringValue6929") @Directive31 @Directive44(argument97 : ["stringValue6930", "stringValue6931"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object136 @Directive21(argument61 : "stringValue471") @Directive44(argument97 : ["stringValue470"]) { + field876: Object137 + field920: Object137 + field921: Object137 + field922: Object137 +} + +type Object1360 implements Interface5 @Directive20(argument58 : "stringValue6933", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6932") @Directive31 @Directive44(argument97 : ["stringValue6934", "stringValue6935"]) { + field2511: Float + field7454: Object450 + field7455: Object450 + field76: String + field77: String + field78: String +} + +type Object1361 @Directive20(argument58 : "stringValue6937", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6936") @Directive31 @Directive44(argument97 : ["stringValue6938", "stringValue6939"]) { + field7485: [Object478!] + field7486: [Interface6!] + field7487: [Object1296!] + field7488: Int + field7489: Object480 + field7490: String + field7491: Object1 +} + +type Object1362 @Directive20(argument58 : "stringValue6941", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6940") @Directive31 @Directive44(argument97 : ["stringValue6942", "stringValue6943"]) { + field7492: Object480 @deprecated + field7493: Object480 @deprecated + field7494: Object480 @deprecated + field7495: Object1363 + field7499: Object569 +} + +type Object1363 @Directive20(argument58 : "stringValue6946", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6944") @Directive42(argument96 : ["stringValue6945"]) @Directive44(argument97 : ["stringValue6947", "stringValue6948"]) { + field7496: String @Directive41 + field7497: String @Directive41 + field7498: String @Directive41 +} + +type Object1364 @Directive20(argument58 : "stringValue6950", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6949") @Directive31 @Directive44(argument97 : ["stringValue6951", "stringValue6952"]) { + field7500: Enum206 + field7501: Interface6 + field7502: [Object1206!] + field7503: Object480 @deprecated + field7504: Object480 @deprecated + field7505: Object480 @deprecated + field7506: Object569 +} + +type Object1365 @Directive22(argument62 : "stringValue6953") @Directive31 @Directive44(argument97 : ["stringValue6954", "stringValue6955"]) { + field7507: Object1366 +} + +type Object1366 @Directive22(argument62 : "stringValue6956") @Directive31 @Directive44(argument97 : ["stringValue6957", "stringValue6958"]) { + field7508: String + field7509: String + field7510: Object10 + field7511: Object10 + field7512: Int + field7513: Enum299 +} + +type Object1367 implements Interface86 @Directive22(argument62 : "stringValue6959") @Directive31 @Directive44(argument97 : ["stringValue6960", "stringValue6961"]) { + field7275: [Interface5!] + field7276: String + field7514: Interface3 +} + +type Object1368 implements Interface80 @Directive22(argument62 : "stringValue6962") @Directive31 @Directive44(argument97 : ["stringValue6963", "stringValue6964"]) { + field4776: Interface3 + field6628: String @Directive1 @deprecated + field7515: Interface6 + field76: Object596 + field77: Object596 + field78: String +} + +type Object1369 @Directive22(argument62 : "stringValue6965") @Directive31 @Directive44(argument97 : ["stringValue6966", "stringValue6967"]) { + field7516: Interface6 + field7517: Object595 + field7518: Object595 + field7519: Object452 + field7520: Object452 +} + +type Object137 @Directive21(argument61 : "stringValue473") @Directive44(argument97 : ["stringValue472"]) { + field877: String + field878: String + field879: String + field880: String + field881: String + field882: String + field883: String + field884: String + field885: Object138 + field919: Object138 +} + +type Object1370 @Directive20(argument58 : "stringValue6969", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6968") @Directive31 @Directive44(argument97 : ["stringValue6970", "stringValue6971"]) { + field7521: String @Directive41 + field7522: String @Directive41 + field7523: String @Directive41 + field7524: String @Directive41 + field7525: String @Directive41 +} + +type Object1371 @Directive20(argument58 : "stringValue6973", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6972") @Directive31 @Directive44(argument97 : ["stringValue6974", "stringValue6975"]) { + field7526: [Object1372!]! @Directive41 + field7529: Object1373! @Directive41 +} + +type Object1372 @Directive20(argument58 : "stringValue6977", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6976") @Directive31 @Directive44(argument97 : ["stringValue6978", "stringValue6979"]) { + field7527: String! @Directive41 + field7528: String! @Directive41 +} + +type Object1373 @Directive20(argument58 : "stringValue6981", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6980") @Directive31 @Directive44(argument97 : ["stringValue6982", "stringValue6983"]) { + field7530: String @Directive40 + field7531: String @Directive41 + field7532: Object1374 @Directive39 + field7541: Object1375 @Directive39 + field7552: String @Directive41 + field7553: String @Directive41 + field7554: String @Directive41 + field7555: String @Directive41 + field7556: Boolean @Directive41 + field7557: Boolean @Directive41 + field7558: Boolean @Directive41 + field7559: Boolean @Directive41 +} + +type Object1374 @Directive20(argument58 : "stringValue6985", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6984") @Directive31 @Directive44(argument97 : ["stringValue6986", "stringValue6987"]) { + field7533: String! @Directive39 + field7534: String @Directive39 + field7535: String! @Directive41 + field7536: Boolean! @Directive41 + field7537: Boolean! @Directive41 + field7538: Boolean! @Directive41 + field7539: Boolean @Directive41 + field7540: String @Directive41 +} + +type Object1375 @Directive20(argument58 : "stringValue6989", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6988") @Directive31 @Directive44(argument97 : ["stringValue6990", "stringValue6991"]) { + field7542: String @Directive40 @deprecated + field7543: String @Directive39 + field7544: String @Directive39 + field7545: [String!] @Directive41 + field7546: String @Directive39 + field7547: String @Directive39 + field7548: String @Directive39 + field7549: Boolean @Directive41 + field7550: Boolean @Directive41 + field7551: String @Directive40 +} + +type Object1376 implements Interface81 @Directive22(argument62 : "stringValue6992") @Directive31 @Directive44(argument97 : ["stringValue6993", "stringValue6994"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 + field7560: Object1377 +} + +type Object1377 @Directive20(argument58 : "stringValue6996", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue6995") @Directive31 @Directive44(argument97 : ["stringValue6997", "stringValue6998"]) { + field7561: String + field7562: String + field7563: [Object1378!] + field7570: String + field7571: Float + field7572: String + field7573: Object480 + field7574: Object1 + field7575: Object1 + field7576: Object1 + field7577: Object1 + field7578: Object1 + field7579: [Object480!] + field7580: String + field7581: Int + field7582: [Object1378!] + field7583: [Object1378!] + field7584: Object480 + field7585: Object480 + field7586: Object480 +} + +type Object1378 @Directive20(argument58 : "stringValue7000", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue6999") @Directive31 @Directive44(argument97 : ["stringValue7001", "stringValue7002"]) { + field7564: String + field7565: String + field7566: String + field7567: Float + field7568: Scalar2 + field7569: Enum328 +} + +type Object1379 implements Interface81 @Directive22(argument62 : "stringValue7007") @Directive31 @Directive44(argument97 : ["stringValue7008", "stringValue7009"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object138 @Directive21(argument61 : "stringValue475") @Directive44(argument97 : ["stringValue474"]) { + field886: Object139 + field889: Object140 + field898: Object143 + field909: Object147 + field918: Object147 +} + +type Object1380 @Directive22(argument62 : "stringValue7010") @Directive31 @Directive44(argument97 : ["stringValue7011", "stringValue7012"]) { + field7587: Scalar2 + field7588: String +} + +type Object1381 @Directive22(argument62 : "stringValue7013") @Directive31 @Directive44(argument97 : ["stringValue7014", "stringValue7015"]) { + field7589: String +} + +type Object1382 @Directive22(argument62 : "stringValue7016") @Directive31 @Directive44(argument97 : ["stringValue7017", "stringValue7018"]) { + field7590: String +} + +type Object1383 @Directive22(argument62 : "stringValue7019") @Directive31 @Directive44(argument97 : ["stringValue7020", "stringValue7021"]) { + field7591: String + field7592: Boolean +} + +type Object1384 @Directive22(argument62 : "stringValue7022") @Directive31 @Directive44(argument97 : ["stringValue7023", "stringValue7024"]) { + field7593: String +} + +type Object1385 @Directive22(argument62 : "stringValue7025") @Directive31 @Directive44(argument97 : ["stringValue7026", "stringValue7027"]) { + field7594: String +} + +type Object1386 @Directive22(argument62 : "stringValue7028") @Directive31 @Directive44(argument97 : ["stringValue7029", "stringValue7030"]) { + field7595: String +} + +type Object1387 @Directive22(argument62 : "stringValue7031") @Directive31 @Directive44(argument97 : ["stringValue7032", "stringValue7033"]) { + field7596: String +} + +type Object1388 @Directive22(argument62 : "stringValue7034") @Directive31 @Directive44(argument97 : ["stringValue7035", "stringValue7036"]) { + field7597: String + field7598: Boolean + field7599: String + field7600: Interface3 + field7601: Interface3 +} + +type Object1389 @Directive20(argument58 : "stringValue7038", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7037") @Directive31 @Directive44(argument97 : ["stringValue7039", "stringValue7040"]) { + field7602: String + field7603: Object480 + field7604: String + field7605: String + field7606: Object1390 + field7609: Object1243 + field7610: Object480 + field7611: Object1246 + field7612: String @deprecated + field7613: Object1391 + field7625: Object449 + field7626: Boolean +} + +type Object139 @Directive21(argument61 : "stringValue477") @Directive44(argument97 : ["stringValue476"]) { + field887: String + field888: Object87 +} + +type Object1390 @Directive20(argument58 : "stringValue7042", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7041") @Directive31 @Directive44(argument97 : ["stringValue7043", "stringValue7044"]) { + field7607: Object1243 + field7608: String +} + +type Object1391 @Directive20(argument58 : "stringValue7046", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7045") @Directive31 @Directive44(argument97 : ["stringValue7047", "stringValue7048"]) { + field7614: String + field7615: String + field7616: String + field7617: String + field7618: String + field7619: String + field7620: String + field7621: String + field7622: String + field7623: Object1 + field7624: String +} + +type Object1392 @Directive20(argument58 : "stringValue7050", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7049") @Directive31 @Directive44(argument97 : ["stringValue7051", "stringValue7052"]) { + field7627: [Interface6!] + field7628: [Object1296!] + field7629: Int + field7630: Object480 @deprecated + field7631: Object480 + field7632: Object480 @deprecated + field7633: Object480 @deprecated + field7634: Object1 + field7635: Object1 + field7636: Object569 + field7637: [Object478!] @deprecated + field7638: Boolean +} + +type Object1393 @Directive20(argument58 : "stringValue7054", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue7053") @Directive31 @Directive44(argument97 : ["stringValue7055", "stringValue7056"]) { + field7639: [Object480!] @deprecated + field7640: [Object1394!] + field7647: String + field7648: String +} + +type Object1394 @Directive20(argument58 : "stringValue7058", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7057") @Directive31 @Directive44(argument97 : ["stringValue7059", "stringValue7060"]) { + field7641: String + field7642: String + field7643: Enum10 + field7644: String + field7645: String + field7646: Object480 +} + +type Object1395 @Directive20(argument58 : "stringValue7062", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7061") @Directive31 @Directive44(argument97 : ["stringValue7063", "stringValue7064"]) { + field7649: Object1396 + field7652: [Object480!] @deprecated + field7653: [Object480!] + field7654: Object1397 + field7659: Object721 + field7660: String + field7661: Object480 + field7662: String + field7663: String + field7664: String + field7665: String + field7666: Object451 + field7667: Object451 + field7668: Enum315 +} + +type Object1396 @Directive20(argument58 : "stringValue7066", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7065") @Directive31 @Directive44(argument97 : ["stringValue7067", "stringValue7068"]) { + field7650: [Object480] + field7651: String +} + +type Object1397 @Directive20(argument58 : "stringValue7070", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7069") @Directive31 @Directive44(argument97 : ["stringValue7071", "stringValue7072"]) { + field7655: String + field7656: Object480 + field7657: String + field7658: String +} + +type Object1398 @Directive20(argument58 : "stringValue7074", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7073") @Directive31 @Directive44(argument97 : ["stringValue7075", "stringValue7076"]) { + field7669: [Object480!] + field7670: Int + field7671: Float + field7672: [Object1378!] + field7673: String + field7674: Object480 + field7675: String @deprecated + field7676: String + field7677: String + field7678: String + field7679: [Object1399!] + field7710: Object1 + field7711: Object1 + field7712: Object1 + field7713: Object480 + field7714: Enum142 +} + +type Object1399 @Directive20(argument58 : "stringValue7078", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7077") @Directive31 @Directive44(argument97 : ["stringValue7079", "stringValue7080"]) { + field7680: ID! + field7681: String + field7682: String + field7683: String + field7684: String + field7685: Object1400 + field7695: Object1400 + field7696: String + field7697: Object1401 + field7703: Int + field7704: String + field7705: Object1402 + field7707: Object480 + field7708: String @deprecated + field7709: [Object480!] +} + +type Object14 @Directive21(argument61 : "stringValue150") @Directive44(argument97 : ["stringValue149"]) { + field127: String + field128: String @deprecated + field129: String @deprecated + field130: [Object15] + field141: Enum14 @deprecated + field142: Scalar1 + field143: String +} + +type Object140 @Directive21(argument61 : "stringValue479") @Directive44(argument97 : ["stringValue478"]) { + field890: Object77 + field891: Object141 +} + +type Object1400 @Directive20(argument58 : "stringValue7082", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7081") @Directive31 @Directive44(argument97 : ["stringValue7083", "stringValue7084"]) { + field7686: ID! + field7687: Boolean + field7688: String + field7689: String + field7690: String + field7691: String + field7692: Boolean + field7693: [Interface6!] + field7694: Interface6 +} + +type Object1401 @Directive20(argument58 : "stringValue7086", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7085") @Directive31 @Directive44(argument97 : ["stringValue7087", "stringValue7088"]) { + field7698: String + field7699: String + field7700: String + field7701: Boolean + field7702: String +} + +type Object1402 @Directive20(argument58 : "stringValue7090", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7089") @Directive31 @Directive44(argument97 : ["stringValue7091", "stringValue7092"]) { + field7706: String +} + +type Object1403 @Directive20(argument58 : "stringValue7094", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7093") @Directive31 @Directive44(argument97 : ["stringValue7095", "stringValue7096"]) { + field7715: Enum206 + field7716: Object1404 + field7719: [Object480!] + field7720: Object480 @deprecated + field7721: Object480 @deprecated + field7722: String + field7723: String + field7724: Object480 @deprecated + field7725: String + field7726: Object569 + field7727: Object480 + field7728: Enum10 + field7729: [Object480!] + field7730: Object480 +} + +type Object1404 implements Interface6 @Directive20(argument58 : "stringValue7098", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7097") @Directive31 @Directive44(argument97 : ["stringValue7099", "stringValue7100"]) { + field109: Interface3 + field7717: Enum206 + field7718: Object478 + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +type Object1405 @Directive20(argument58 : "stringValue7102", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7101") @Directive31 @Directive44(argument97 : ["stringValue7103", "stringValue7104"]) { + field7731: String + field7732: String + field7733: String + field7734: Object1406 + field7739: String +} + +type Object1406 @Directive20(argument58 : "stringValue7106", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7105") @Directive31 @Directive44(argument97 : ["stringValue7107", "stringValue7108"]) { + field7735: String + field7736: String + field7737: String + field7738: String +} + +type Object1407 @Directive20(argument58 : "stringValue7110", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7109") @Directive31 @Directive44(argument97 : ["stringValue7111", "stringValue7112"]) { + field7740: String @Directive40 + field7741: Boolean @Directive41 + field7742: String @Directive41 +} + +type Object1408 @Directive20(argument58 : "stringValue7115", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7113") @Directive42(argument96 : ["stringValue7114"]) @Directive44(argument97 : ["stringValue7116", "stringValue7117"]) { + field7743: [Object1409!] @Directive41 +} + +type Object1409 @Directive20(argument58 : "stringValue7120", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7118") @Directive42(argument96 : ["stringValue7119"]) @Directive44(argument97 : ["stringValue7121", "stringValue7122"]) { + field7744: String @Directive41 + field7745: String @Directive41 +} + +type Object141 @Directive21(argument61 : "stringValue481") @Directive44(argument97 : ["stringValue480"]) { + field892: Object142 + field895: Object142 + field896: Object142 + field897: Object142 +} + +type Object1410 @Directive20(argument58 : "stringValue7124", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7123") @Directive31 @Directive44(argument97 : ["stringValue7125", "stringValue7126"]) { + field7746: String + field7747: [Interface6!] + field7748: Object480 + field7749: Object480 @deprecated + field7750: Object480 @deprecated + field7751: Object480 @deprecated + field7752: Object1 @deprecated + field7753: Object1 + field7754: Object1 + field7755: Object569 + field7756: Object480 + field7757: [Object1411] +} + +type Object1411 @Directive20(argument58 : "stringValue7128", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7127") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7129", "stringValue7130"]) { + field7758: Enum329 @Directive30(argument80 : true) @Directive41 + field7759: [Object1412] @Directive30(argument80 : true) @Directive40 +} + +type Object1412 @Directive20(argument58 : "stringValue7136", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7135") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7137", "stringValue7138"]) { + field7760: String @Directive30(argument80 : true) @Directive41 + field7761: [Object480] @Directive30(argument80 : true) @Directive41 + field7762: [Object1296] @Directive30(argument80 : true) @Directive40 + field7763: [String] @Directive30(argument80 : true) @Directive40 +} + +type Object1413 @Directive20(argument58 : "stringValue7140", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7139") @Directive31 @Directive44(argument97 : ["stringValue7141", "stringValue7142"]) { + field7764: String + field7765: String + field7766: [Object480!] + field7767: String + field7768: String + field7769: String + field7770: String + field7771: [Object480] + field7772: String + field7773: String + field7774: [Object532] + field7775: String + field7776: Object480 + field7777: Object480 + field7778: Object480 + field7779: String + field7780: String + field7781: [Object702] + field7782: Object480 + field7783: [Object702] + field7784: Object1414 + field7790: Object532 + field7791: Object521 + field7792: Object480 + field7793: Object480 + field7794: String + field7795: Boolean + field7796: [Object703] +} + +type Object1414 @Directive20(argument58 : "stringValue7144", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7143") @Directive31 @Directive44(argument97 : ["stringValue7145", "stringValue7146"]) { + field7785: Enum10 + field7786: String + field7787: String + field7788: [Object480!] + field7789: Object480 +} + +type Object1415 @Directive22(argument62 : "stringValue7147") @Directive31 @Directive44(argument97 : ["stringValue7148", "stringValue7149"]) { + field7797: String +} + +type Object1416 @Directive22(argument62 : "stringValue7150") @Directive31 @Directive44(argument97 : ["stringValue7151", "stringValue7152"]) { + field7798: String +} + +type Object1417 @Directive22(argument62 : "stringValue7153") @Directive31 @Directive44(argument97 : ["stringValue7154", "stringValue7155"]) { + field7799: String + field7800: String + field7801: Enum10 + field7802: Object866 + field7803: Object452 +} + +type Object1418 @Directive20(argument58 : "stringValue7157", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7156") @Directive31 @Directive44(argument97 : ["stringValue7158", "stringValue7159"]) { + field7804: String + field7805: String + field7806: String +} + +type Object1419 @Directive22(argument62 : "stringValue7160") @Directive31 @Directive44(argument97 : ["stringValue7161", "stringValue7162"]) { + field7807: Float +} + +type Object142 @Directive21(argument61 : "stringValue483") @Directive44(argument97 : ["stringValue482"]) { + field893: Enum65 + field894: Float +} + +type Object1420 @Directive22(argument62 : "stringValue7163") @Directive31 @Directive44(argument97 : ["stringValue7164", "stringValue7165"]) { + field7808: Object837 +} + +type Object1421 @Directive22(argument62 : "stringValue7166") @Directive31 @Directive44(argument97 : ["stringValue7167", "stringValue7168"]) { + field7809: String + field7810: String + field7811: Object452 +} + +type Object1422 @Directive22(argument62 : "stringValue7169") @Directive31 @Directive44(argument97 : ["stringValue7170", "stringValue7171"]) { + field7812: String + field7813: [Object1423!] @deprecated + field7826: [Object1425!] +} + +type Object1423 @Directive22(argument62 : "stringValue7172") @Directive31 @Directive44(argument97 : ["stringValue7173", "stringValue7174"]) { + field7814: String + field7815: String + field7816: String + field7817: String + field7818: Boolean + field7819: Boolean + field7820: String + field7821: Object452 + field7822: [Object1424] + field7825: [Interface83!] +} + +type Object1424 @Directive22(argument62 : "stringValue7175") @Directive31 @Directive44(argument97 : ["stringValue7176", "stringValue7177"]) { + field7823: String + field7824: String +} + +type Object1425 @Directive22(argument62 : "stringValue7178") @Directive31 @Directive44(argument97 : ["stringValue7179", "stringValue7180"]) { + field7827: String + field7828: [Object1423!] +} + +type Object1426 @Directive22(argument62 : "stringValue7181") @Directive31 @Directive44(argument97 : ["stringValue7182", "stringValue7183"]) { + field7829: String + field7830: [Object1427!] +} + +type Object1427 @Directive22(argument62 : "stringValue7184") @Directive31 @Directive44(argument97 : ["stringValue7185", "stringValue7186"]) { + field7831: String + field7832: String + field7833: Boolean +} + +type Object1428 @Directive22(argument62 : "stringValue7187") @Directive31 @Directive44(argument97 : ["stringValue7188", "stringValue7189"]) { + field7834: String + field7835: String + field7836: Object452 + field7837: Object452 +} + +type Object1429 @Directive22(argument62 : "stringValue7190") @Directive31 @Directive44(argument97 : ["stringValue7191", "stringValue7192"]) { + field7838: String + field7839: [Object1430] + field7848: Object1430 + field7849: Boolean + field7850: Object452 + field7851: Object452 +} + +type Object143 @Directive21(argument61 : "stringValue486") @Directive44(argument97 : ["stringValue485"]) { + field899: Object144 + field902: Object145 + field905: Object141 + field906: Object146 +} + +type Object1430 @Directive22(argument62 : "stringValue7193") @Directive31 @Directive44(argument97 : ["stringValue7194", "stringValue7195"]) { + field7840: String + field7841: String + field7842: Object1431 + field7846: String + field7847: String +} + +type Object1431 @Directive20(argument58 : "stringValue7197", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7196") @Directive31 @Directive44(argument97 : ["stringValue7198", "stringValue7199"]) { + field7843: String + field7844: Scalar2 + field7845: String +} + +type Object1432 @Directive22(argument62 : "stringValue7200") @Directive31 @Directive44(argument97 : ["stringValue7201", "stringValue7202"]) { + field7852: String + field7853: [Object1430] + field7854: Object1430 +} + +type Object1433 @Directive22(argument62 : "stringValue7203") @Directive31 @Directive44(argument97 : ["stringValue7204", "stringValue7205"]) { + field7855: String + field7856: Object1434 + field7864: [String] +} + +type Object1434 @Directive22(argument62 : "stringValue7206") @Directive31 @Directive44(argument97 : ["stringValue7207", "stringValue7208"]) { + field7857: String + field7858: String + field7859: [Object1435] +} + +type Object1435 @Directive22(argument62 : "stringValue7209") @Directive31 @Directive44(argument97 : ["stringValue7210", "stringValue7211"]) { + field7860: String + field7861: String + field7862: String + field7863: String +} + +type Object1436 @Directive22(argument62 : "stringValue7212") @Directive31 @Directive44(argument97 : ["stringValue7213", "stringValue7214"]) { + field7865: String + field7866: String + field7867: Boolean +} + +type Object1437 @Directive22(argument62 : "stringValue7215") @Directive31 @Directive44(argument97 : ["stringValue7216", "stringValue7217"]) { + field7868: String + field7869: String + field7870: [Object1438!] + field7877: Object452 +} + +type Object1438 @Directive22(argument62 : "stringValue7218") @Directive31 @Directive44(argument97 : ["stringValue7219", "stringValue7220"]) { + field7871: String + field7872: String + field7873: [Object1439!] +} + +type Object1439 @Directive22(argument62 : "stringValue7221") @Directive31 @Directive44(argument97 : ["stringValue7222", "stringValue7223"]) { + field7874: String + field7875: Boolean! + field7876: Object452 +} + +type Object144 @Directive21(argument61 : "stringValue488") @Directive44(argument97 : ["stringValue487"]) { + field900: Int + field901: Int +} + +type Object1440 @Directive22(argument62 : "stringValue7224") @Directive31 @Directive44(argument97 : ["stringValue7225", "stringValue7226"]) { + field7878: String + field7879: String + field7880: [Object1438!] +} + +type Object1441 @Directive22(argument62 : "stringValue7227") @Directive31 @Directive44(argument97 : ["stringValue7228", "stringValue7229"]) { + field7881: Object1442 + field7942: Object1454 + field7948: Object452 +} + +type Object1442 @Directive22(argument62 : "stringValue7230") @Directive31 @Directive44(argument97 : ["stringValue7231", "stringValue7232"]) { + field7882: [Object1443] + field7884: Object1444 + field7887: String + field7888: [String] + field7889: Object1445 + field7937: Scalar2 + field7938: String + field7939: Object1453 +} + +type Object1443 @Directive22(argument62 : "stringValue7233") @Directive31 @Directive44(argument97 : ["stringValue7234", "stringValue7235"]) { + field7883: String +} + +type Object1444 @Directive22(argument62 : "stringValue7236") @Directive31 @Directive44(argument97 : ["stringValue7237", "stringValue7238"]) { + field7885: Object1431 + field7886: Boolean +} + +type Object1445 @Directive22(argument62 : "stringValue7239") @Directive31 @Directive44(argument97 : ["stringValue7240", "stringValue7241"]) { + field7890: Object1446 + field7898: Scalar2 + field7899: Object1448 + field7910: String + field7911: String + field7912: Scalar2 + field7913: String + field7914: Enum330 + field7915: Boolean + field7916: Boolean + field7917: Boolean + field7918: Boolean + field7919: Boolean + field7920: Boolean + field7921: String + field7922: Object1450 + field7926: Object1451 + field7927: Object1452 +} + +type Object1446 @Directive22(argument62 : "stringValue7242") @Directive31 @Directive44(argument97 : ["stringValue7243", "stringValue7244"]) { + field7891: String + field7892: Boolean + field7893: [Object1447] +} + +type Object1447 @Directive22(argument62 : "stringValue7245") @Directive31 @Directive44(argument97 : ["stringValue7246", "stringValue7247"]) { + field7894: Object1430 + field7895: Object1430 + field7896: Int + field7897: String +} + +type Object1448 @Directive22(argument62 : "stringValue7248") @Directive31 @Directive44(argument97 : ["stringValue7249", "stringValue7250"]) { + field7900: String + field7901: String + field7902: Boolean + field7903: String + field7904: Object1449 + field7909: String +} + +type Object1449 @Directive22(argument62 : "stringValue7251") @Directive31 @Directive44(argument97 : ["stringValue7252", "stringValue7253"]) { + field7905: String + field7906: String + field7907: Boolean + field7908: String +} + +type Object145 @Directive21(argument61 : "stringValue490") @Directive44(argument97 : ["stringValue489"]) { + field903: Enum52 + field904: Enum66 +} + +type Object1450 @Directive22(argument62 : "stringValue7258") @Directive31 @Directive44(argument97 : ["stringValue7259", "stringValue7260"]) { + field7923: [Object1451] +} + +type Object1451 @Directive22(argument62 : "stringValue7261") @Directive31 @Directive44(argument97 : ["stringValue7262", "stringValue7263"]) { + field7924: String + field7925: String +} + +type Object1452 @Directive22(argument62 : "stringValue7264") @Directive31 @Directive44(argument97 : ["stringValue7265", "stringValue7266"]) { + field7928: String + field7929: String + field7930: String + field7931: String + field7932: String + field7933: String + field7934: String + field7935: String + field7936: String +} + +type Object1453 @Directive22(argument62 : "stringValue7267") @Directive31 @Directive44(argument97 : ["stringValue7268", "stringValue7269"]) { + field7940: String + field7941: String +} + +type Object1454 @Directive22(argument62 : "stringValue7270") @Directive31 @Directive44(argument97 : ["stringValue7271", "stringValue7272"]) { + field7943: String + field7944: String + field7945: String + field7946: [String] + field7947: String +} + +type Object1455 @Directive20(argument58 : "stringValue7274", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7273") @Directive31 @Directive44(argument97 : ["stringValue7275", "stringValue7276"]) { + field7949: String + field7950: Object480 + field7951: Enum331 + field7952: String +} + +type Object1456 implements Interface81 @Directive22(argument62 : "stringValue7281") @Directive31 @Directive44(argument97 : ["stringValue7282", "stringValue7283"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object1457 implements Interface86 @Directive22(argument62 : "stringValue7284") @Directive31 @Directive44(argument97 : ["stringValue7285", "stringValue7286"]) { + field7275: [Interface5!] + field7276: Object596 + field7514: Interface3 + field7953: Object959 + field7954: Object596 + field7955: Object1458 + field7959: Object1458 +} + +type Object1458 @Directive22(argument62 : "stringValue7287") @Directive31 @Directive44(argument97 : ["stringValue7288", "stringValue7289"]) { + field7956: Object596 + field7957: Object596 + field7958: Object596 +} + +type Object1459 @Directive22(argument62 : "stringValue7290") @Directive31 @Directive44(argument97 : ["stringValue7291", "stringValue7292"]) { + field7960: Object1377 + field7961: [Object1460!] +} + +type Object146 @Directive21(argument61 : "stringValue493") @Directive44(argument97 : ["stringValue492"]) { + field907: Object142 + field908: Object142 +} + +type Object1460 implements Interface80 @Directive20(argument58 : "stringValue7294", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue7293") @Directive31 @Directive44(argument97 : ["stringValue7295", "stringValue7296"]) { + field6628: String @Directive1 @deprecated + field7962: Scalar2 + field7963: String + field7964: String + field7965: String + field7966: String + field7967: Object1400 + field7968: Object1400 + field7969: String + field7970: String + field7971: Int + field7972: Object1401 + field7973: [Object1461!] + field7976: String + field7977: String + field7978: Object1 + field7979: Object480 + field7980: String + field7981: Object480 + field7982: Int + field7983: Enum332 + field7984: [Object480!] + field7985: [Interface6!] +} + +type Object1461 @Directive20(argument58 : "stringValue7298", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7297") @Directive31 @Directive44(argument97 : ["stringValue7299", "stringValue7300"]) { + field7974: String + field7975: Boolean +} + +type Object1462 @Directive20(argument58 : "stringValue7306", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7305") @Directive31 @Directive44(argument97 : ["stringValue7307", "stringValue7308"]) { + field7986: String + field7987: [Object480!] +} + +type Object1463 @Directive22(argument62 : "stringValue7309") @Directive31 @Directive44(argument97 : ["stringValue7310", "stringValue7311"]) { + field7988: String + field7989: String + field7990: Object1 + field7991: [Object1464] +} + +type Object1464 @Directive22(argument62 : "stringValue7312") @Directive31 @Directive44(argument97 : ["stringValue7313", "stringValue7314"]) { + field7992: String + field7993: String + field7994: String + field7995: String + field7996: String + field7997: String + field7998: Boolean + field7999: Boolean +} + +type Object1465 @Directive22(argument62 : "stringValue7315") @Directive31 @Directive44(argument97 : ["stringValue7316", "stringValue7317"]) { + field8000: String + field8001: [Object1242] + field8002: Object721 +} + +type Object1466 @Directive22(argument62 : "stringValue7318") @Directive31 @Directive44(argument97 : ["stringValue7319", "stringValue7320"]) { + field8003: String + field8004: String +} + +type Object1467 @Directive22(argument62 : "stringValue7321") @Directive31 @Directive44(argument97 : ["stringValue7322", "stringValue7323"]) { + field8005: String + field8006: String + field8007: String +} + +type Object1468 @Directive22(argument62 : "stringValue7324") @Directive31 @Directive44(argument97 : ["stringValue7325", "stringValue7326"]) { + field8008: Object480 + field8009: Object480 +} + +type Object1469 implements Interface73 & Interface74 & Interface75 @Directive22(argument62 : "stringValue7327") @Directive31 @Directive44(argument97 : ["stringValue7328", "stringValue7329"]) { + field4831: String + field4832: String + field4833: Boolean + field4834: Enum240 + field4835: Boolean + field4836: Object450 + field4837: Object450 + field8010: Object452 + field8011: Interface3 + field8012: Interface3 + field8013: Object742 +} + +type Object147 @Directive21(argument61 : "stringValue495") @Directive44(argument97 : ["stringValue494"]) { + field910: String + field911: Object77 + field912: Object148 +} + +type Object1470 @Directive22(argument62 : "stringValue7330") @Directive31 @Directive44(argument97 : ["stringValue7331", "stringValue7332"]) { + field8014: Object595 + field8015: [Object595] + field8016: Object508 + field8017: Interface3 + field8018: Object1471 + field8021: Object1472 +} + +type Object1471 @Directive22(argument62 : "stringValue7333") @Directive31 @Directive44(argument97 : ["stringValue7334", "stringValue7335"]) { + field8019: String + field8020: Object452 +} + +type Object1472 @Directive22(argument62 : "stringValue7336") @Directive31 @Directive44(argument97 : ["stringValue7337", "stringValue7338"]) { + field8022: Enum10 + field8023: Object10 + field8024: String + field8025: Object1473 + field8028: Object10 @deprecated +} + +type Object1473 @Directive22(argument62 : "stringValue7339") @Directive31 @Directive44(argument97 : ["stringValue7340", "stringValue7341"]) { + field8026: Float + field8027: Object10 +} + +type Object1474 @Directive22(argument62 : "stringValue7342") @Directive31 @Directive44(argument97 : ["stringValue7343", "stringValue7344"]) { + field8029: Object595 + field8030: [Object595!] + field8031: [Object1470!] +} + +type Object1475 @Directive22(argument62 : "stringValue7345") @Directive31 @Directive44(argument97 : ["stringValue7346", "stringValue7347"]) { + field8032: String + field8033: Object909 +} + +type Object1476 @Directive22(argument62 : "stringValue7348") @Directive31 @Directive44(argument97 : ["stringValue7349", "stringValue7350"]) { + field8034: String + field8035: Enum10 + field8036: Interface3 + field8037: Object1366 + field8038: Enum299 +} + +type Object1477 implements Interface86 @Directive22(argument62 : "stringValue7351") @Directive31 @Directive44(argument97 : ["stringValue7352", "stringValue7353"]) { + field7275: [Interface5!] + field7276: String + field8039: [Object729] + field8040: Enum209 +} + +type Object1478 @Directive22(argument62 : "stringValue7354") @Directive31 @Directive44(argument97 : ["stringValue7355", "stringValue7356"]) { + field8041: String +} + +type Object1479 @Directive22(argument62 : "stringValue7357") @Directive31 @Directive44(argument97 : ["stringValue7358", "stringValue7359"]) { + field8042: Int + field8043: String + field8044: String + field8045: String + field8046: String + field8047: Interface3 +} + +type Object148 @Directive21(argument61 : "stringValue497") @Directive44(argument97 : ["stringValue496"]) { + field913: Object144 + field914: Object145 + field915: Object141 + field916: Object146 + field917: Enum67 +} + +type Object1480 @Directive22(argument62 : "stringValue7360") @Directive31 @Directive44(argument97 : ["stringValue7361", "stringValue7362"]) { + field8048: [Object1481!]! + field8059: [Object1483!] + field8064: String + field8065: String + field8066: String + field8067: Object452 @deprecated + field8068: Object452 @deprecated + field8069: [String] @deprecated + field8070: [String] @deprecated + field8071: [String] @deprecated + field8072: [String] @deprecated +} + +type Object1481 @Directive22(argument62 : "stringValue7363") @Directive31 @Directive44(argument97 : ["stringValue7364", "stringValue7365"]) { + field8049: String! + field8050: String + field8051: String + field8052: Interface3 + field8053: Object1482 + field8056: Interface3 + field8057: Object1482 + field8058: Interface3 +} + +type Object1482 @Directive20(argument58 : "stringValue7367", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7366") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue7368", "stringValue7369"]) { + field8054: String + field8055: Enum333! +} + +type Object1483 @Directive22(argument62 : "stringValue7374") @Directive31 @Directive44(argument97 : ["stringValue7375", "stringValue7376"]) { + field8060: String + field8061: String + field8062: Object452 + field8063: Object1482 +} + +type Object1484 @Directive20(argument58 : "stringValue7378", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7377") @Directive31 @Directive44(argument97 : ["stringValue7379", "stringValue7380"]) { + field8073: String + field8074: Object1485 + field8079: String + field8080: String + field8081: String +} + +type Object1485 @Directive20(argument58 : "stringValue7382", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7381") @Directive31 @Directive44(argument97 : ["stringValue7383", "stringValue7384"]) { + field8075: String + field8076: String + field8077: String + field8078: String +} + +type Object1486 @Directive22(argument62 : "stringValue7385") @Directive31 @Directive44(argument97 : ["stringValue7386", "stringValue7387"]) { + field8082: String + field8083: String + field8084: [Object845] + field8085: String + field8086: String +} + +type Object1487 @Directive20(argument58 : "stringValue7389", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7388") @Directive31 @Directive44(argument97 : ["stringValue7390", "stringValue7391"]) { + field8087: String + field8088: String + field8089: [Object480!] + field8090: [Object480!] +} + +type Object1488 @Directive20(argument58 : "stringValue7393", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7392") @Directive31 @Directive44(argument97 : ["stringValue7394", "stringValue7395"]) { + field8091: String + field8092: String + field8093: [Object480!] + field8094: String + field8095: Object480 +} + +type Object1489 implements Interface49 & Interface89 @Directive22(argument62 : "stringValue7399") @Directive31 @Directive44(argument97 : ["stringValue7400", "stringValue7401"]) { + field3300: Object602! + field8096: [Interface84!] + field8097: Interface3! + field8098: Interface3 +} + +type Object149 @Directive21(argument61 : "stringValue500") @Directive44(argument97 : ["stringValue499"]) { + field931: String + field932: Int + field933: Int +} + +type Object1490 @Directive20(argument58 : "stringValue7404", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7402") @Directive42(argument96 : ["stringValue7403"]) @Directive44(argument97 : ["stringValue7405", "stringValue7406"]) { + field8099: ID @Directive41 + field8100: String @Directive41 + field8101: String @Directive41 +} + +type Object1491 @Directive20(argument58 : "stringValue7408", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7407") @Directive31 @Directive44(argument97 : ["stringValue7409", "stringValue7410"]) { + field8102: String + field8103: [Object1253!] + field8104: Object1 +} + +type Object1492 @Directive22(argument62 : "stringValue7411") @Directive31 @Directive44(argument97 : ["stringValue7412", "stringValue7413"]) { + field8105: Object1175 + field8106: Int + field8107: Enum228 + field8108: String + field8109: Object452 +} + +type Object1493 @Directive20(argument58 : "stringValue7415", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7414") @Directive31 @Directive44(argument97 : ["stringValue7416", "stringValue7417"]) { + field8110: String + field8111: String + field8112: Boolean + field8113: String + field8114: Boolean + field8115: Boolean + field8116: String + field8117: Union92 @deprecated + field8118: Object1 + field8119: Object1 @deprecated + field8120: Interface3 + field8121: Interface3 + field8122: Interface3 +} + +type Object1494 @Directive22(argument62 : "stringValue7418") @Directive31 @Directive44(argument97 : ["stringValue7419", "stringValue7420"]) { + field8123: String + field8124: String + field8125: String +} + +type Object1495 @Directive22(argument62 : "stringValue7421") @Directive31 @Directive44(argument97 : ["stringValue7422", "stringValue7423"]) { + field8126: Object1496 + field8127: [Object1497] +} + +type Object1496 implements Interface86 @Directive22(argument62 : "stringValue7424") @Directive31 @Directive44(argument97 : ["stringValue7425", "stringValue7426"]) { + field7275: [Interface5!] +} + +type Object1497 implements Interface86 @Directive22(argument62 : "stringValue7427") @Directive31 @Directive44(argument97 : ["stringValue7428", "stringValue7429"]) { + field7275: [Interface5!] + field7514: Interface3 +} + +type Object1498 @Directive22(argument62 : "stringValue7430") @Directive31 @Directive44(argument97 : ["stringValue7431", "stringValue7432"]) { + field8128: Boolean + field8129: String + field8130: String + field8131: String + field8132: Boolean + field8133: Boolean + field8134: Union92 + field8135: Object1 +} + +type Object1499 @Directive22(argument62 : "stringValue7433") @Directive31 @Directive44(argument97 : ["stringValue7434", "stringValue7435"]) { + field8136: Object609 + field8137: Object1500 + field8142: Object1259 + field8143: Object1501 + field8146: [Object646!] + field8147: String + field8148: Object692 + field8149: Object536 +} + +type Object15 @Directive21(argument61 : "stringValue152") @Directive44(argument97 : ["stringValue151"]) { + field131: String + field132: String + field133: Enum13 + field134: String + field135: String + field136: String + field137: String + field138: String + field139: String + field140: [String!] +} + +type Object150 @Directive21(argument61 : "stringValue503") @Directive44(argument97 : ["stringValue502"]) { + field945: Object151 + field952: String + field953: String + field954: String + field955: String + field956: String + field957: Object35 + field958: String + field959: String + field960: Int + field961: String + field962: String + field963: String + field964: Object44 + field965: String + field966: String +} + +type Object1500 @Directive22(argument62 : "stringValue7436") @Directive31 @Directive44(argument97 : ["stringValue7437", "stringValue7438"]) { + field8138: String + field8139: String + field8140: String + field8141: String +} + +type Object1501 @Directive22(argument62 : "stringValue7439") @Directive31 @Directive44(argument97 : ["stringValue7440", "stringValue7441"]) { + field8144: [Object693] + field8145: String +} + +type Object1502 @Directive22(argument62 : "stringValue7442") @Directive31 @Directive44(argument97 : ["stringValue7443", "stringValue7444"]) { + field8150: [Object596] +} + +type Object1503 @Directive20(argument58 : "stringValue7446", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7445") @Directive31 @Directive44(argument97 : ["stringValue7447", "stringValue7448"]) { + field8151: Object866 + field8152: String + field8153: Object450 +} + +type Object1504 @Directive22(argument62 : "stringValue7449") @Directive31 @Directive44(argument97 : ["stringValue7450", "stringValue7451"]) { + field8154: [Object1263!] + field8155: String + field8156: String +} + +type Object1505 @Directive20(argument58 : "stringValue7454", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7452") @Directive42(argument96 : ["stringValue7453"]) @Directive44(argument97 : ["stringValue7455", "stringValue7456"]) { + field8157: [Object1506!] @Directive41 +} + +type Object1506 @Directive20(argument58 : "stringValue7459", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7457") @Directive42(argument96 : ["stringValue7458"]) @Directive44(argument97 : ["stringValue7460", "stringValue7461"]) { + field8158: String @Directive41 + field8159: String @Directive41 + field8160: String @Directive41 +} + +type Object1507 @Directive22(argument62 : "stringValue7462") @Directive31 @Directive44(argument97 : ["stringValue7463", "stringValue7464"]) { + field8161: Int + field8162: String + field8163: String + field8164: String + field8165: String + field8166: [Object1508!] + field8176: String +} + +type Object1508 @Directive20(argument58 : "stringValue7466", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7465") @Directive31 @Directive44(argument97 : ["stringValue7467", "stringValue7468"]) { + field8167: Object609 + field8168: String + field8169: Int + field8170: String + field8171: String + field8172: String + field8173: String + field8174: String + field8175: Object536 +} + +type Object1509 @Directive20(argument58 : "stringValue7470", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7469") @Directive31 @Directive44(argument97 : ["stringValue7471", "stringValue7472"]) { + field8177: String + field8178: String + field8179: Enum142 + field8180: Enum143 +} + +type Object151 @Directive21(argument61 : "stringValue505") @Directive44(argument97 : ["stringValue504"]) { + field946: Scalar2 + field947: String + field948: String + field949: String + field950: String + field951: String +} + +type Object1510 @Directive22(argument62 : "stringValue7473") @Directive31 @Directive44(argument97 : ["stringValue7474", "stringValue7475"]) { + field8181: Object596 + field8182: [Object595!] @deprecated + field8183: [Object596!] + field8184: Object596 + field8185: Interface3 + field8186: Object585 +} + +type Object1511 @Directive22(argument62 : "stringValue7476") @Directive31 @Directive44(argument97 : ["stringValue7477", "stringValue7478"]) { + field8187: Object596 + field8188: Object596 + field8189: Object596 + field8190: Object596 + field8191: [Interface6] + field8192: Int + field8193: Interface3 + field8194: [Object452] + field8195: String +} + +type Object1512 @Directive22(argument62 : "stringValue7479") @Directive31 @Directive44(argument97 : ["stringValue7480", "stringValue7481"]) { + field8196: Object596 @deprecated + field8197: [Object474!] + field8198: Object452 + field8199: Object596 +} + +type Object1513 @Directive22(argument62 : "stringValue7482") @Directive31 @Directive44(argument97 : ["stringValue7483", "stringValue7484"]) { + field8200: String @deprecated + field8201: Object450 @deprecated + field8202: String @deprecated + field8203: Object450 @deprecated + field8204: String @deprecated + field8205: Object450 @deprecated + field8206: Object596 + field8207: Object596 + field8208: Object742 @deprecated + field8209: [Union93!] @deprecated + field8210: [Object474!] + field8211: Object452 + field8212: Object909 @deprecated + field8213: Object576 + field8214: Object723 + field8215: Object1173 + field8216: String +} + +type Object1514 implements Interface55 & Interface56 & Interface57 @Directive22(argument62 : "stringValue7485") @Directive31 @Directive44(argument97 : ["stringValue7486", "stringValue7487"]) { + field4777: String + field4778: String + field4779: Boolean + field4780: Enum230 + field4781: Interface6 + field4782: Interface3 + field8217: Object450 + field8218: Object450 + field8219: String + field8220: Object450 + field8221: String + field8222: Object450 +} + +type Object1515 implements Interface81 @Directive22(argument62 : "stringValue7488") @Directive31 @Directive44(argument97 : ["stringValue7489", "stringValue7490"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 + field8223: Object596 + field8224: [Object474!] + field8225: Object452 +} + +type Object1516 @Directive22(argument62 : "stringValue7491") @Directive31 @Directive44(argument97 : ["stringValue7492", "stringValue7493"]) { + field8226: String @deprecated + field8227: String @deprecated + field8228: Object596 + field8229: Object596 + field8230: String + field8231: String + field8232: String + field8233: Boolean + field8234: Boolean + field8235: Boolean + field8236: Object1 + field8237: Interface3 + field8238: Interface3 +} + +type Object1517 @Directive20(argument58 : "stringValue7497", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7494") @Directive31 @Directive44(argument97 : ["stringValue7495", "stringValue7496"]) { + field8239: Object508 + field8240: Object508 + field8241: String + field8242: Object450 + field8243: String +} + +type Object1518 @Directive20(argument58 : "stringValue7499", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7498") @Directive31 @Directive44(argument97 : ["stringValue7500", "stringValue7501"]) { + field8244: [Object478!] + field8245: Object480 +} + +type Object1519 @Directive20(argument58 : "stringValue7503", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7502") @Directive31 @Directive44(argument97 : ["stringValue7504", "stringValue7505"]) { + field8246: [Object614!] + field8247: String + field8248: String + field8249: String + field8250: Object615 + field8251: String + field8252: [Object1293!] + field8253: String + field8254: Int + field8255: String + field8256: String + field8257: Boolean + field8258: Boolean + field8259: Boolean +} + +type Object152 @Directive21(argument61 : "stringValue508") @Directive44(argument97 : ["stringValue507"]) { + field1014: String + field1015: [Object135] + field1016: [Object135] + field1017: [Object135] + field1018: Object158 + field1027: String + field1028: String + field1029: [Object158] + field1030: String + field1031: Object135 + field1032: String + field1033: String + field1034: String + field1035: String + field1036: String + field1037: Float + field1038: Object159 + field1065: Object35 + field1066: String + field1067: Boolean + field1068: String + field1069: Enum83 + field967: String + field968: String + field969: String + field970: String + field971: Object135 + field972: Object135 + field973: Object135 + field974: Object136 + field975: String + field976: Object44 + field977: Object44 + field978: String + field979: String + field980: Object153 +} + +type Object1520 implements Interface81 @Directive22(argument62 : "stringValue7506") @Directive31 @Directive44(argument97 : ["stringValue7507", "stringValue7508"]) { + field6635(argument104: InputObject1): Object1182 + field6640: Interface82 +} + +type Object1521 @Directive20(argument58 : "stringValue7510", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue7509") @Directive31 @Directive44(argument97 : ["stringValue7511", "stringValue7512"]) { + field8260: String @Directive41 + field8261: String @Directive41 + field8262: String @Directive41 + field8263: String @Directive41 + field8264: String @Directive41 + field8265: Boolean @Directive41 + field8266: String @Directive40 +} + +type Object1522 implements Interface49 @Directive22(argument62 : "stringValue7513") @Directive31 @Directive44(argument97 : ["stringValue7514", "stringValue7515"]) { + field3300: Object1523! +} + +type Object1523 implements Interface50 @Directive22(argument62 : "stringValue7516") @Directive31 @Directive44(argument97 : ["stringValue7517", "stringValue7518"]) { + field3301: Boolean + field8267: Object603 + field8268: Object603 + field8269: Object963 + field8270: Object963 +} + +type Object1524 @Directive20(argument58 : "stringValue7520", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7519") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7521", "stringValue7522"]) { + field8271: Object1246 @Directive30(argument80 : true) @Directive41 +} + +type Object1525 @Directive20(argument58 : "stringValue7524", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue7523") @Directive31 @Directive44(argument97 : ["stringValue7525", "stringValue7526"]) { + field8272: String + field8273: Float + field8274: Object448 @deprecated + field8275: Object449 + field8276: Object452 +} + +type Object1526 @Directive22(argument62 : "stringValue7527") @Directive31 @Directive44(argument97 : ["stringValue7528", "stringValue7529"]) { + field8277: [Object1527] +} + +type Object1527 @Directive22(argument62 : "stringValue7530") @Directive31 @Directive44(argument97 : ["stringValue7531", "stringValue7532"]) { + field8278: String + field8279: String + field8280: String + field8281: String + field8282: Object398 + field8283: Interface3 + field8284: String +} + +type Object1528 @Directive20(argument58 : "stringValue7534", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7533") @Directive31 @Directive44(argument97 : ["stringValue7535", "stringValue7536"]) { + field8285: String + field8286: String + field8287: String + field8288: Int + field8289: String + field8290: String + field8291: String + field8292: Enum334 + field8293: String + field8294: String + field8295: String + field8296: String +} + +type Object1529 @Directive20(argument58 : "stringValue7542", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7541") @Directive31 @Directive44(argument97 : ["stringValue7543", "stringValue7544"]) { + field8297: String + field8298: String + field8299: Object1259 +} + +type Object153 @Directive21(argument61 : "stringValue510") @Directive44(argument97 : ["stringValue509"]) { + field1011: Object154 + field1012: Object154 + field1013: Object154 + field981: Object154 +} + +type Object1530 @Directive22(argument62 : "stringValue7545") @Directive31 @Directive44(argument97 : ["stringValue7546", "stringValue7547"]) { + field8300: String +} + +type Object1531 @Directive22(argument62 : "stringValue7551") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7552", "stringValue7553"]) { + field8312: String! @Directive30(argument80 : true) @Directive41 + field8313: String! @Directive30(argument80 : true) @Directive41 +} + +type Object1532 @Directive20(argument58 : "stringValue7555", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7554") @Directive31 @Directive44(argument97 : ["stringValue7556", "stringValue7557"]) { + field8315: ID! + field8316: String + field8317: [Object502]! @deprecated + field8318: Object1533 + field8323: Object1534 + field8327: Object1535 +} + +type Object1533 @Directive20(argument58 : "stringValue7559", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7558") @Directive31 @Directive44(argument97 : ["stringValue7560", "stringValue7561"]) { + field8319: Enum336 + field8320: Enum337 + field8321: String + field8322: Boolean +} + +type Object1534 @Directive20(argument58 : "stringValue7571", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7570") @Directive31 @Directive44(argument97 : ["stringValue7572", "stringValue7573"]) { + field8324: Interface90 + field8326: Interface90 +} + +type Object1535 @Directive20(argument58 : "stringValue7578", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7577") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7579", "stringValue7580"]) { + field8328: [Object1531] @Directive30(argument80 : true) @Directive41 +} + +type Object1536 @Directive22(argument62 : "stringValue7584") @Directive31 @Directive44(argument97 : ["stringValue7585", "stringValue7586"]) { + field8333: ID! + field8334: String + field8335: [String] + field8336: String +} + +type Object1537 implements Interface91 @Directive22(argument62 : "stringValue7591") @Directive31 @Directive44(argument97 : ["stringValue7592", "stringValue7593"]) { + field8331: [String] +} + +type Object1538 @Directive20(argument58 : "stringValue7595", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7594") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue7596", "stringValue7597"]) { + field8340: [String] + field8341: String +} + +type Object1539 @Directive20(argument58 : "stringValue7599", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7598") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue7600", "stringValue7601"]) { + field8342: [String] + field8343: String + field8344: String + field8345: [String] + field8346: [String] + field8347: String + field8348: [String] +} + +type Object154 @Directive21(argument61 : "stringValue512") @Directive44(argument97 : ["stringValue511"]) { + field982: Object155 + field988: Object155 + field989: Object156 + field994: Object157 +} + +type Object1540 implements Interface3 @Directive20(argument58 : "stringValue7602", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7603") @Directive31 @Directive44(argument97 : ["stringValue7604", "stringValue7605"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8349: String +} + +type Object1541 implements Interface3 @Directive22(argument62 : "stringValue7606") @Directive31 @Directive44(argument97 : ["stringValue7607", "stringValue7608"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object1542 implements Interface3 @Directive20(argument58 : "stringValue7610", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7609") @Directive31 @Directive44(argument97 : ["stringValue7611", "stringValue7612"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object1543 implements Interface13 @Directive22(argument62 : "stringValue7613") @Directive31 @Directive44(argument97 : ["stringValue7614", "stringValue7615"]) { + field121: Enum12! @Directive37(argument95 : "stringValue7616") + field122: Object1 @Directive37(argument95 : "stringValue7617") +} + +type Object1544 @Directive22(argument62 : "stringValue7618") @Directive31 @Directive44(argument97 : ["stringValue7619", "stringValue7620"]) { + field8350: String + field8351: String + field8352: [Object474] + field8353: [Object502] +} + +type Object1545 @Directive20(argument58 : "stringValue7622", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7621") @Directive31 @Directive44(argument97 : ["stringValue7623", "stringValue7624"]) { + field8354: Object603 + field8355: Object603 + field8356: Object603 + field8357: Object1546 +} + +type Object1546 @Directive20(argument58 : "stringValue7626", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7625") @Directive31 @Directive44(argument97 : ["stringValue7627", "stringValue7628"]) { + field8358: Int + field8359: Int + field8360: Int + field8361: Object10 + field8362: Interface6 +} + +type Object1547 implements Interface3 @Directive22(argument62 : "stringValue7629") @Directive31 @Directive44(argument97 : ["stringValue7630", "stringValue7631"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8363: String +} + +type Object1548 implements Interface11 @Directive22(argument62 : "stringValue7632") @Directive31 @Directive44(argument97 : ["stringValue7633", "stringValue7634"]) { + field119: String + field8364: String +} + +type Object1549 @Directive20(argument58 : "stringValue7636", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue7635") @Directive31 @Directive44(argument97 : ["stringValue7637", "stringValue7638"]) { + field8365: Scalar2 + field8366: String + field8367: Scalar2 + field8368: String + field8369: Scalar2 + field8370: Int + field8371: String +} + +type Object155 @Directive21(argument61 : "stringValue514") @Directive44(argument97 : ["stringValue513"]) { + field983: Enum68 + field984: Enum69 + field985: Enum70 + field986: String + field987: Enum71 +} + +type Object1550 implements Interface36 @Directive22(argument62 : "stringValue7639") @Directive30(argument83 : ["stringValue7640"]) @Directive44(argument97 : ["stringValue7641", "stringValue7642"]) @Directive7(argument13 : "stringValue7645", argument14 : "stringValue7644", argument16 : "stringValue7646", argument17 : "stringValue7643", argument18 : true) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8372: String @Directive30(argument80 : true) @Directive41 + field8373: String @Directive30(argument80 : true) @Directive41 + field8374: Object1551 @Directive3(argument3 : "stringValue7647") @Directive30(argument80 : true) @Directive41 +} + +type Object1551 @Directive21(argument61 : "stringValue7651") @Directive22(argument62 : "stringValue7648") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7649", "stringValue7650"]) { + field8375: String @Directive30(argument80 : true) @Directive41 + field8376: String @Directive30(argument80 : true) @Directive41 + field8377: String @Directive30(argument80 : true) @Directive41 + field8378: [String] @Directive30(argument80 : true) @Directive41 + field8379: [String] @Directive30(argument80 : true) @Directive41 + field8380: Int @Directive30(argument80 : true) @Directive41 + field8381: [Enum338] @Directive30(argument80 : true) @Directive41 + field8382: Object1552 @Directive30(argument80 : true) @Directive41 +} + +type Object1552 @Directive22(argument62 : "stringValue7655") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7656", "stringValue7657"]) { + field8383(argument110: Int, argument111: Int, argument112: String, argument113: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7658") + field8387(argument114: Int, argument115: Int, argument116: String, argument117: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7674") + field8388(argument118: Int, argument119: Int, argument120: String, argument121: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7675") + field8389(argument122: Int, argument123: Int, argument124: String, argument125: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7676") + field8390(argument126: Int, argument127: Int, argument128: String, argument129: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7677") + field8391(argument130: Int, argument131: Int, argument132: String, argument133: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7678") + field8392(argument134: Int, argument135: Int, argument136: String, argument137: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7679") + field8393(argument138: Int, argument139: Int, argument140: String, argument141: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7680") + field8394: Object6841 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue7681") @Directive41 + field8395(argument142: Int, argument143: Int, argument144: String, argument145: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7682") + field8396: Object6841 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue7683") @Directive41 + field8397(argument146: Int, argument147: Int, argument148: String, argument149: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue7684") +} + +type Object1553 implements Interface92 @Directive22(argument62 : "stringValue7671") @Directive44(argument97 : ["stringValue7672", "stringValue7673"]) { + field8384: Object753! + field8385: [Object6840] +} + +type Object1554 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue7685") @Directive31 @Directive44(argument97 : ["stringValue7686", "stringValue7687"]) { + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8398: String + field8399: String +} + +type Object1555 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue7688") @Directive31 @Directive44(argument97 : ["stringValue7689", "stringValue7690"]) { + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8400: String + field8401: String +} + +type Object1556 implements Interface38 @Directive22(argument62 : "stringValue7691") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7692", "stringValue7693"]) { + field2436: String @Directive30(argument80 : true) @Directive41 + field2437: Enum133 @Directive30(argument80 : true) @Directive41 + field2438: Object438 @Directive30(argument80 : true) @Directive41 + field2441: [Object439] @Directive30(argument80 : true) @Directive41 +} + +type Object1557 implements Interface3 @Directive22(argument62 : "stringValue7694") @Directive31 @Directive44(argument97 : ["stringValue7695", "stringValue7696"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8402: String + field8403: ID +} + +type Object1558 implements Interface94 @Directive21(argument61 : "stringValue7701") @Directive44(argument97 : ["stringValue7700"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8407: Enum341 + field8408: Boolean +} + +type Object1559 implements Interface94 @Directive21(argument61 : "stringValue7704") @Directive44(argument97 : ["stringValue7703"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8409: String + field8410: String + field8411: String +} + +type Object156 @Directive21(argument61 : "stringValue520") @Directive44(argument97 : ["stringValue519"]) { + field990: Boolean + field991: Boolean + field992: Int + field993: Boolean +} + +type Object1560 implements Interface94 @Directive21(argument61 : "stringValue7706") @Directive44(argument97 : ["stringValue7705"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8412: Enum342 + field8413: Object1561 + field8416: Boolean + field8417: [Object1561] + field8418: String + field8419: Boolean +} + +type Object1561 @Directive21(argument61 : "stringValue7709") @Directive44(argument97 : ["stringValue7708"]) { + field8414: Union4 + field8415: String +} + +type Object1562 implements Interface94 @Directive21(argument61 : "stringValue7711") @Directive44(argument97 : ["stringValue7710"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8420: [Interface94] +} + +type Object1563 implements Interface94 @Directive21(argument61 : "stringValue7713") @Directive44(argument97 : ["stringValue7712"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8420: [Interface94] +} + +type Object1564 implements Interface94 @Directive21(argument61 : "stringValue7715") @Directive44(argument97 : ["stringValue7714"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8412: Enum342 + field8413: Union4 + field8416: Boolean + field8418: String + field8419: Boolean + field8421: String + field8422: Boolean +} + +type Object1565 implements Interface94 @Directive21(argument61 : "stringValue7717") @Directive44(argument97 : ["stringValue7716"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8412: Enum342 + field8413: Union4 + field8416: Boolean + field8418: String + field8419: Boolean + field8421: String + field8423: Scalar3 + field8424: Scalar3 +} + +type Object1566 implements Interface94 @Directive21(argument61 : "stringValue7719") @Directive44(argument97 : ["stringValue7718"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8412: Enum342 + field8413: Object1561 + field8416: Boolean + field8417: [Object1561] + field8418: String + field8419: Boolean +} + +type Object1567 implements Interface94 @Directive21(argument61 : "stringValue7721") @Directive44(argument97 : ["stringValue7720"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8412: Enum342 + field8413: Union4 + field8418: String + field8419: Boolean + field8421: String +} + +type Object1568 implements Interface94 @Directive21(argument61 : "stringValue7723") @Directive44(argument97 : ["stringValue7722"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8420: [Interface94] +} + +type Object1569 implements Interface94 @Directive21(argument61 : "stringValue7725") @Directive44(argument97 : ["stringValue7724"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8425: String +} + +type Object157 @Directive21(argument61 : "stringValue522") @Directive44(argument97 : ["stringValue521"]) { + field1000: Enum73 + field1001: String + field1002: String + field1003: Enum74 + field1004: Enum75 + field1005: String + field1006: String + field1007: String + field1008: String + field1009: String + field1010: Object88 + field995: String + field996: String + field997: String + field998: String + field999: Enum72 +} + +type Object1570 implements Interface94 @Directive21(argument61 : "stringValue7727") @Directive44(argument97 : ["stringValue7726"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8426: String + field8427: String + field8428: String + field8429: String + field8430: Boolean + field8431: Boolean +} + +type Object1571 implements Interface94 @Directive21(argument61 : "stringValue7729") @Directive44(argument97 : ["stringValue7728"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8412: Enum342 + field8413: Union4 + field8416: Boolean + field8418: String + field8419: Boolean + field8421: String + field8422: Boolean +} + +type Object1572 implements Interface94 @Directive21(argument61 : "stringValue7731") @Directive44(argument97 : ["stringValue7730"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8409: String + field8410: String + field8432: String + field8433: Enum339 +} + +type Object1573 implements Interface94 @Directive21(argument61 : "stringValue7733") @Directive44(argument97 : ["stringValue7732"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8434: Boolean + field8435: String +} + +type Object1574 implements Interface94 @Directive21(argument61 : "stringValue7735") @Directive44(argument97 : ["stringValue7734"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8420: [Object1573] + field8435: String +} + +type Object1575 implements Interface94 @Directive21(argument61 : "stringValue7737") @Directive44(argument97 : ["stringValue7736"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8418: String + field8419: Boolean + field8436: String + field8437: Boolean +} + +type Object1576 implements Interface94 @Directive21(argument61 : "stringValue7739") @Directive44(argument97 : ["stringValue7738"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8435: String + field8438: Enum343 +} + +type Object1577 implements Interface94 @Directive21(argument61 : "stringValue7742") @Directive44(argument97 : ["stringValue7741"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8438: Enum343 + field8439: Boolean +} + +type Object1578 implements Interface94 @Directive21(argument61 : "stringValue7744") @Directive44(argument97 : ["stringValue7743"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8440: [Object1577] + field8441: [[Object1576]] +} + +type Object1579 implements Interface94 @Directive21(argument61 : "stringValue7746") @Directive44(argument97 : ["stringValue7745"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8408: Boolean + field8413: String + field8416: Boolean + field8418: String + field8419: Boolean +} + +type Object158 @Directive21(argument61 : "stringValue528") @Directive44(argument97 : ["stringValue527"]) { + field1019: String + field1020: String + field1021: String + field1022: String + field1023: Object35 + field1024: Enum76 + field1025: Enum77 + field1026: Enum78 +} + +type Object1580 implements Interface94 @Directive21(argument61 : "stringValue7748") @Directive44(argument97 : ["stringValue7747"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8436: String + field8442: Enum344 + field8443: Enum344 +} + +type Object1581 implements Interface94 @Directive21(argument61 : "stringValue7751") @Directive44(argument97 : ["stringValue7750"]) { + field8404: Enum339 + field8405: String + field8406: Enum340 + field8436: String + field8442: Enum344 + field8443: Enum344 +} + +type Object1582 implements Interface38 @Directive22(argument62 : "stringValue7752") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue7753", "stringValue7754"]) { + field2436: String @Directive30(argument80 : true) @Directive41 + field2437: Enum133 @Directive30(argument80 : true) @Directive41 + field2438: Object438 @Directive30(argument80 : true) @Directive41 + field8444: Int @Directive30(argument80 : true) @Directive41 +} + +type Object1583 implements Interface3 @Directive22(argument62 : "stringValue7755") @Directive31 @Directive44(argument97 : ["stringValue7756", "stringValue7757"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object1584 implements Interface3 @Directive22(argument62 : "stringValue7758") @Directive31 @Directive44(argument97 : ["stringValue7759", "stringValue7760"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object1585 implements Interface3 @Directive22(argument62 : "stringValue7761") @Directive31 @Directive44(argument97 : ["stringValue7762", "stringValue7763"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object1586 implements Interface61 & Interface62 & Interface63 @Directive22(argument62 : "stringValue7764") @Directive31 @Directive44(argument97 : ["stringValue7765", "stringValue7766"]) { + field4792: String + field4793: String + field4794: Boolean + field4795: Enum10 + field4796: Enum232 + field4797: Enum233 +} + +type Object1587 implements Interface64 & Interface65 & Interface66 @Directive22(argument62 : "stringValue7767") @Directive31 @Directive44(argument97 : ["stringValue7768", "stringValue7769"]) { + field4799: String + field4800: String + field4801: String + field4802: String + field4803: Boolean + field4804: Enum10 + field4805: Enum234 + field4806: Enum235 +} + +type Object1588 implements Interface10 & Interface8 & Interface9 @Directive22(argument62 : "stringValue7770") @Directive31 @Directive44(argument97 : ["stringValue7771", "stringValue7772"]) { + field111: String + field112: String + field113: Enum10 + field114: String + field115: Enum11 + field116: Int + field117: Int + field118: String +} + +type Object1589 implements Interface67 & Interface68 & Interface69 @Directive22(argument62 : "stringValue7773") @Directive31 @Directive44(argument97 : ["stringValue7774", "stringValue7775"]) { + field4811: String + field4812: String + field4813: Enum10 + field4814: Enum237 + field4815: Enum238 +} + +type Object159 @Directive21(argument61 : "stringValue533") @Directive44(argument97 : ["stringValue532"]) { + field1039: Enum79 + field1040: [Union18] + field1055: Scalar1 + field1056: Enum82 + field1057: Scalar1 + field1058: Enum82 + field1059: Scalar1 + field1060: Enum82 + field1061: String + field1062: String + field1063: Scalar1 + field1064: Enum82 +} + +type Object1590 implements Interface21 @Directive21(argument61 : "stringValue7777") @Directive44(argument97 : ["stringValue7776"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8445: Object35 + field8446: String + field8447: String + field8448: String + field8449: String + field8450: Int + field8451: Boolean +} + +type Object1591 implements Interface20 @Directive21(argument61 : "stringValue7779") @Directive44(argument97 : ["stringValue7778"]) { + field514: Enum38 + field515: Enum39 + field516: Object77 + field531: Float + field532: String + field533: String + field534: Object77 + field535: Object80 + field8452: Int +} + +type Object1592 implements Interface21 @Directive21(argument61 : "stringValue7781") @Directive44(argument97 : ["stringValue7780"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8453: String +} + +type Object1593 implements Interface21 @Directive21(argument61 : "stringValue7783") @Directive44(argument97 : ["stringValue7782"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +type Object1594 @Directive21(argument61 : "stringValue7785") @Directive44(argument97 : ["stringValue7784"]) { + field8454: Scalar2 + field8455: String + field8456: Scalar2 + field8457: String + field8458: Scalar2 + field8459: Scalar2 + field8460: String +} + +type Object1595 implements Interface22 @Directive21(argument61 : "stringValue7787") @Directive44(argument97 : ["stringValue7786"]) { + field1828: Enum106 + field8461: Enum345 +} + +type Object1596 implements Interface95 @Directive21(argument61 : "stringValue7816") @Directive44(argument97 : ["stringValue7815"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union5!] + field8572: [Object34] +} + +type Object1597 @Directive21(argument61 : "stringValue7791") @Directive44(argument97 : ["stringValue7790"]) { + field8463: String + field8464: String + field8465: String + field8466: String + field8467: String + field8468: String + field8469: Object1598 + field8485: Object1599 + field8523: String + field8524: Int + field8525: Boolean +} + +type Object1598 @Directive21(argument61 : "stringValue7793") @Directive44(argument97 : ["stringValue7792"]) { + field8470: Scalar2 + field8471: String + field8472: String + field8473: Int + field8474: Int + field8475: Int + field8476: Int + field8477: Boolean + field8478: Boolean + field8479: [String] + field8480: [String] + field8481: String + field8482: Int + field8483: Scalar1 + field8484: [String] +} + +type Object1599 @Directive21(argument61 : "stringValue7795") @Directive44(argument97 : ["stringValue7794"]) { + field8486: String + field8487: String + field8488: String + field8489: String + field8490: String + field8491: String + field8492: [String] + field8493: Object1600 + field8496: [Object1601] + field8499: Object1602 + field8506: Int + field8507: Int + field8508: String + field8509: String + field8510: Int + field8511: Int + field8512: Int + field8513: Boolean + field8514: String + field8515: String + field8516: String + field8517: String + field8518: String + field8519: String + field8520: String + field8521: String + field8522: String +} + +type Object16 @Directive21(argument61 : "stringValue161") @Directive44(argument97 : ["stringValue160"]) { + field154: String + field155: Enum18 + field156: Enum19 + field157: Enum20 + field158: Object17 +} + +type Object160 @Directive21(argument61 : "stringValue537") @Directive44(argument97 : ["stringValue536"]) { + field1041: Boolean + field1042: Boolean + field1043: Boolean +} + +type Object1600 @Directive21(argument61 : "stringValue7797") @Directive44(argument97 : ["stringValue7796"]) { + field8494: String + field8495: String +} + +type Object1601 @Directive21(argument61 : "stringValue7799") @Directive44(argument97 : ["stringValue7798"]) { + field8497: String + field8498: String +} + +type Object1602 @Directive21(argument61 : "stringValue7801") @Directive44(argument97 : ["stringValue7800"]) { + field8500: String + field8501: [Object1603] +} + +type Object1603 @Directive21(argument61 : "stringValue7803") @Directive44(argument97 : ["stringValue7802"]) { + field8502: String + field8503: String + field8504: [Int] + field8505: Int +} + +type Object1604 @Directive21(argument61 : "stringValue7805") @Directive44(argument97 : ["stringValue7804"]) { + field8532: Enum346 + field8533: Boolean + field8534: String + field8535: String + field8536: String + field8537: Enum347 + field8538: Int + field8539: Enum348 + field8540: String + field8541: Boolean + field8542: String + field8543: Boolean + field8544: Enum349 + field8545: Boolean + field8546: Object1605 + field8550: String + field8551: Object1606 + field8561: String + field8562: Boolean + field8563: String + field8564: Boolean + field8565: String +} + +type Object1605 @Directive21(argument61 : "stringValue7811") @Directive44(argument97 : ["stringValue7810"]) { + field8547: String + field8548: String + field8549: Int +} + +type Object1606 @Directive21(argument61 : "stringValue7813") @Directive44(argument97 : ["stringValue7812"]) { + field8552: String + field8553: [Object36] + field8554: String + field8555: Scalar2 + field8556: Scalar2 + field8557: String + field8558: String + field8559: String + field8560: String +} + +type Object1607 implements Interface95 @Directive21(argument61 : "stringValue7818") @Directive44(argument97 : ["stringValue7817"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Object1608!] +} + +type Object1608 @Directive21(argument61 : "stringValue7820") @Directive44(argument97 : ["stringValue7819"]) { + field8573: String + field8574: String + field8575: Object46 + field8576: Object47 + field8577: [Object43] + field8578: [Object43] + field8579: [Object43] + field8580: [Object43] + field8581: Enum351 + field8582: [Object1609] +} + +type Object1609 @Directive21(argument61 : "stringValue7823") @Directive44(argument97 : ["stringValue7822"]) { + field8583: String + field8584: String + field8585: Object1610 +} + +type Object161 @Directive21(argument61 : "stringValue539") @Directive44(argument97 : ["stringValue538"]) { + field1044: String + field1045: Object162 +} + +type Object1610 @Directive21(argument61 : "stringValue7825") @Directive44(argument97 : ["stringValue7824"]) { + field8586: Enum352 + field8587: Object35 + field8588: Enum353 + field8589: Union166 + field8603: String +} + +type Object1611 @Directive21(argument61 : "stringValue7830") @Directive44(argument97 : ["stringValue7829"]) { + field8590: String + field8591: String + field8592: String + field8593: Object1612 + field8596: Scalar4 + field8597: Scalar4 + field8598: String +} + +type Object1612 @Directive21(argument61 : "stringValue7832") @Directive44(argument97 : ["stringValue7831"]) { + field8594: Enum354 + field8595: String +} + +type Object1613 @Directive21(argument61 : "stringValue7835") @Directive44(argument97 : ["stringValue7834"]) { + field8599: String + field8600: String + field8601: String + field8602: [Object1612] +} + +type Object1614 implements Interface95 @Directive21(argument61 : "stringValue7837") @Directive44(argument97 : ["stringValue7836"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union7!] + field8604: Object270 + field8605: [Object42] +} + +type Object1615 implements Interface95 @Directive21(argument61 : "stringValue7839") @Directive44(argument97 : ["stringValue7838"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union8!] + field8606: [Object50] +} + +type Object1616 implements Interface95 @Directive21(argument61 : "stringValue7841") @Directive44(argument97 : ["stringValue7840"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union15!] + field8607: [Object134] +} + +type Object1617 implements Interface95 @Directive21(argument61 : "stringValue7843") @Directive44(argument97 : ["stringValue7842"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union16!] + field8608: String @deprecated + field8609: [Object150!] +} + +type Object1618 implements Interface95 @Directive21(argument61 : "stringValue7845") @Directive44(argument97 : ["stringValue7844"]) { + field8462: Object1597 + field8526: String + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8610: Object1619 +} + +type Object1619 @Directive21(argument61 : "stringValue7847") @Directive44(argument97 : ["stringValue7846"]) { + field8611: String! + field8612: String + field8613: String + field8614: String +} + +type Object162 @Directive21(argument61 : "stringValue541") @Directive44(argument97 : ["stringValue540"]) { + field1046: String + field1047: String + field1048: String +} + +type Object1620 implements Interface95 @Directive21(argument61 : "stringValue7849") @Directive44(argument97 : ["stringValue7848"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union17!] + field8615: [Object152] + field8616: Object1621 + field8620: Object1622 +} + +type Object1621 @Directive21(argument61 : "stringValue7851") @Directive44(argument97 : ["stringValue7850"]) { + field8617: Object141 + field8618: Object141 + field8619: Object141 +} + +type Object1622 @Directive21(argument61 : "stringValue7853") @Directive44(argument97 : ["stringValue7852"]) { + field8621: Object1623 + field8624: Object1623 + field8625: Object1623 +} + +type Object1623 @Directive21(argument61 : "stringValue7855") @Directive44(argument97 : ["stringValue7854"]) { + field8622: Object138 + field8623: Object138 +} + +type Object1624 implements Interface95 @Directive21(argument61 : "stringValue7857") @Directive44(argument97 : ["stringValue7856"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union19!] + field8626: [Object167] +} + +type Object1625 implements Interface95 @Directive21(argument61 : "stringValue7859") @Directive44(argument97 : ["stringValue7858"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union20!] + field8627: [Object168] +} + +type Object1626 implements Interface95 @Directive21(argument61 : "stringValue7861") @Directive44(argument97 : ["stringValue7860"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union21!] + field8604: Object270 + field8608: String @deprecated + field8616: Object1621 + field8620: Object1622 + field8628: Object1627 + field8632: [Object170] + field8633: [Object1628] + field8652: Object1633 +} + +type Object1627 @Directive21(argument61 : "stringValue7863") @Directive44(argument97 : ["stringValue7862"]) { + field8629: Enum355 + field8630: String + field8631: Enum356 +} + +type Object1628 @Directive21(argument61 : "stringValue7867") @Directive44(argument97 : ["stringValue7866"]) { + field8634: Object1629 + field8650: String + field8651: Interface21 +} + +type Object1629 @Directive21(argument61 : "stringValue7869") @Directive44(argument97 : ["stringValue7868"]) { + field8635: Object1630 + field8648: Object1630 + field8649: Object1630 +} + +type Object163 @Directive21(argument61 : "stringValue543") @Directive44(argument97 : ["stringValue542"]) { + field1049: Scalar2 +} + +type Object1630 @Directive21(argument61 : "stringValue7871") @Directive44(argument97 : ["stringValue7870"]) { + field8636: Object138 + field8637: Object138 + field8638: Object138 + field8639: Object138 + field8640: Object287 + field8641: Object140 + field8642: Object275 + field8643: Object276 + field8644: Object1631 +} + +type Object1631 @Directive21(argument61 : "stringValue7873") @Directive44(argument97 : ["stringValue7872"]) { + field8645: Object287 + field8646: Object1632 +} + +type Object1632 @Directive21(argument61 : "stringValue7875") @Directive44(argument97 : ["stringValue7874"]) { + field8647: [Object138] +} + +type Object1633 @Directive21(argument61 : "stringValue7877") @Directive44(argument97 : ["stringValue7876"]) { + field8653: Object1634 + field8656: Object1634 + field8657: Object1634 +} + +type Object1634 @Directive21(argument61 : "stringValue7879") @Directive44(argument97 : ["stringValue7878"]) { + field8654: Float + field8655: Float +} + +type Object1635 implements Interface95 @Directive21(argument61 : "stringValue7881") @Directive44(argument97 : ["stringValue7880"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union22!] + field8604: Object270 + field8608: String @deprecated + field8616: Object1621 + field8620: Object1622 + field8628: Object1627 + field8652: Object1633 + field8658: [Object172!] + field8659: [Object1636] +} + +type Object1636 @Directive21(argument61 : "stringValue7883") @Directive44(argument97 : ["stringValue7882"]) { + field8660: Object1637 + field8671: String + field8672: Interface21 +} + +type Object1637 @Directive21(argument61 : "stringValue7885") @Directive44(argument97 : ["stringValue7884"]) { + field8661: Object1638 + field8668: Object1638 + field8669: Object1638 + field8670: Object1638 +} + +type Object1638 @Directive21(argument61 : "stringValue7887") @Directive44(argument97 : ["stringValue7886"]) { + field8662: Object138 + field8663: Object138 + field8664: Object138 + field8665: Object140 + field8666: Object275 + field8667: Object276 +} + +type Object1639 implements Interface95 @Directive21(argument61 : "stringValue7889") @Directive44(argument97 : ["stringValue7888"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union23!] + field8673: [Object173] +} + +type Object164 @Directive21(argument61 : "stringValue545") @Directive44(argument97 : ["stringValue544"]) { + field1050: Boolean + field1051: String +} + +type Object1640 implements Interface95 @Directive21(argument61 : "stringValue7891") @Directive44(argument97 : ["stringValue7890"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union24!] + field8674: [Object174] +} + +type Object1641 implements Interface95 @Directive21(argument61 : "stringValue7893") @Directive44(argument97 : ["stringValue7892"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union25!] + field8675: [Object177!] +} + +type Object1642 implements Interface95 @Directive21(argument61 : "stringValue7895") @Directive44(argument97 : ["stringValue7894"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union26!] + field8676: [Object187!] +} + +type Object1643 implements Interface95 @Directive21(argument61 : "stringValue7897") @Directive44(argument97 : ["stringValue7896"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union27!] + field8677: [Object188] +} + +type Object1644 implements Interface95 @Directive21(argument61 : "stringValue7899") @Directive44(argument97 : ["stringValue7898"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union28!] + field8678: [Object189] +} + +type Object1645 implements Interface95 @Directive21(argument61 : "stringValue7901") @Directive44(argument97 : ["stringValue7900"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union29!] + field8679: [Object192] +} + +type Object1646 implements Interface95 @Directive21(argument61 : "stringValue7903") @Directive44(argument97 : ["stringValue7902"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union30!] + field8680: [Object194] +} + +type Object1647 implements Interface95 @Directive21(argument61 : "stringValue7905") @Directive44(argument97 : ["stringValue7904"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union31!] + field8681: [Object196!] +} + +type Object1648 implements Interface95 @Directive21(argument61 : "stringValue7907") @Directive44(argument97 : ["stringValue7906"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union32!] + field8604: Object270 + field8682: [Object193] +} + +type Object1649 implements Interface95 @Directive21(argument61 : "stringValue7909") @Directive44(argument97 : ["stringValue7908"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union33!] + field8604: Object270 + field8608: String @deprecated + field8683: String + field8684: Object1650 + field8695: String + field8696: Object1654 + field8698: [Object178!] + field8699: Boolean +} + +type Object165 @Directive21(argument61 : "stringValue547") @Directive44(argument97 : ["stringValue546"]) { + field1052: Enum80 + field1053: Enum81 +} + +type Object1650 @Directive21(argument61 : "stringValue7911") @Directive44(argument97 : ["stringValue7910"]) { + field8685: [Object1651] + field8691: Object1653 +} + +type Object1651 @Directive21(argument61 : "stringValue7913") @Directive44(argument97 : ["stringValue7912"]) { + field8686: [Object1652] + field8690: Enum357 +} + +type Object1652 @Directive21(argument61 : "stringValue7915") @Directive44(argument97 : ["stringValue7914"]) { + field8687: String + field8688: [Object199] + field8689: [String] +} + +type Object1653 @Directive21(argument61 : "stringValue7918") @Directive44(argument97 : ["stringValue7917"]) { + field8692: String + field8693: String + field8694: String +} + +type Object1654 @Directive21(argument61 : "stringValue7920") @Directive44(argument97 : ["stringValue7919"]) { + field8697: Object35 +} + +type Object1655 implements Interface95 @Directive21(argument61 : "stringValue7922") @Directive44(argument97 : ["stringValue7921"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union34!] + field8700: [Object197] +} + +type Object1656 implements Interface95 @Directive21(argument61 : "stringValue7924") @Directive44(argument97 : ["stringValue7923"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union35!] + field8701: [Object200] +} + +type Object1657 implements Interface95 @Directive21(argument61 : "stringValue7926") @Directive44(argument97 : ["stringValue7925"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8570: Boolean + field8571: [Union37!] + field8702: [Union37] +} + +type Object1658 implements Interface95 @Directive21(argument61 : "stringValue7928") @Directive44(argument97 : ["stringValue7927"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union39!] + field8703: [Object236] +} + +type Object1659 implements Interface95 @Directive21(argument61 : "stringValue7930") @Directive44(argument97 : ["stringValue7929"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union40!] + field8704: [Object238] +} + +type Object166 @Directive21(argument61 : "stringValue551") @Directive44(argument97 : ["stringValue550"]) { + field1054: Scalar2 +} + +type Object1660 implements Interface95 @Directive21(argument61 : "stringValue7932") @Directive44(argument97 : ["stringValue7931"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union41!] + field8705: [Object239] +} + +type Object1661 implements Interface95 @Directive21(argument61 : "stringValue7934") @Directive44(argument97 : ["stringValue7933"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union42!] + field8706: [Object241] +} + +type Object1662 implements Interface95 @Directive21(argument61 : "stringValue7936") @Directive44(argument97 : ["stringValue7935"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union43!] + field8707: [Object243] +} + +type Object1663 implements Interface95 @Directive21(argument61 : "stringValue7938") @Directive44(argument97 : ["stringValue7937"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union44!] + field8708: [Object244] +} + +type Object1664 implements Interface95 @Directive21(argument61 : "stringValue7940") @Directive44(argument97 : ["stringValue7939"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union45!] + field8709: Object1665 + field8714: [Object248] +} + +type Object1665 @Directive21(argument61 : "stringValue7942") @Directive44(argument97 : ["stringValue7941"]) { + field8710: String + field8711: String + field8712: String + field8713: String +} + +type Object1666 implements Interface95 @Directive21(argument61 : "stringValue7944") @Directive44(argument97 : ["stringValue7943"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union46!] + field8715: [Object249] +} + +type Object1667 implements Interface95 @Directive21(argument61 : "stringValue7946") @Directive44(argument97 : ["stringValue7945"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union47!] + field8608: String @deprecated + field8716: [Object250] +} + +type Object1668 implements Interface95 @Directive21(argument61 : "stringValue7948") @Directive44(argument97 : ["stringValue7947"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union48!] + field8717: [Object259] +} + +type Object1669 implements Interface95 @Directive21(argument61 : "stringValue7950") @Directive44(argument97 : ["stringValue7949"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union49!] + field8718: [Object262] +} + +type Object167 @Directive21(argument61 : "stringValue556") @Directive44(argument97 : ["stringValue555"]) { + field1070: String + field1071: String + field1072: String + field1073: Object89 + field1074: Object43 + field1075: Int + field1076: Object35 +} + +type Object1670 implements Interface95 @Directive21(argument61 : "stringValue7952") @Directive44(argument97 : ["stringValue7951"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8719: Object1671 +} + +type Object1671 @Directive21(argument61 : "stringValue7954") @Directive44(argument97 : ["stringValue7953"]) { + field8720: String + field8721: String + field8722: String + field8723: String +} + +type Object1672 implements Interface95 @Directive21(argument61 : "stringValue7956") @Directive44(argument97 : ["stringValue7955"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union50!] + field8724: [Object263!] +} + +type Object1673 implements Interface95 @Directive21(argument61 : "stringValue7958") @Directive44(argument97 : ["stringValue7957"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union51!] + field8604: Object270 + field8608: String @deprecated + field8725: Object1674 @deprecated + field8832: [Object51] +} + +type Object1674 @Directive21(argument61 : "stringValue7960") @Directive44(argument97 : ["stringValue7959"]) { + field8726: [Object1675] + field8790: Boolean + field8791: String + field8792: String + field8793: String! + field8794: String + field8795: String + field8796: [Object1675] + field8797: String + field8798: String + field8799: String + field8800: String + field8801: String + field8802: [Object1680] + field8816: [Object130] + field8817: String + field8818: [String] + field8819: String + field8820: Int + field8821: String + field8822: String + field8823: Enum358 + field8824: String + field8825: Object1681 + field8828: Object1682 + field8831: Interface21 +} + +type Object1675 @Directive21(argument61 : "stringValue7962") @Directive44(argument97 : ["stringValue7961"]) { + field8727: Boolean + field8728: String + field8729: String + field8730: String + field8731: [Object199] + field8732: Object1676 + field8752: String + field8753: String + field8754: String + field8755: String + field8756: String + field8757: String + field8758: String + field8759: String + field8760: [Object1674] + field8761: [String] + field8762: String + field8763: Int + field8764: Boolean + field8765: Boolean + field8766: String + field8767: String + field8768: String + field8769: Int + field8770: String + field8771: [String] + field8772: String + field8773: String + field8774: Enum93 + field8775: Boolean + field8776: String + field8777: Object1678 + field8787: Object35 + field8788: String + field8789: Interface21 +} + +type Object1676 @Directive21(argument61 : "stringValue7964") @Directive44(argument97 : ["stringValue7963"]) { + field8733: [Int] + field8734: Int + field8735: Int + field8736: Int + field8737: [Object1677] + field8741: String + field8742: String + field8743: Int + field8744: Boolean + field8745: Boolean + field8746: [Int] + field8747: [String] + field8748: [String] + field8749: Int + field8750: [String] + field8751: [String] +} + +type Object1677 @Directive21(argument61 : "stringValue7966") @Directive44(argument97 : ["stringValue7965"]) { + field8738: String + field8739: String + field8740: Boolean +} + +type Object1678 @Directive21(argument61 : "stringValue7968") @Directive44(argument97 : ["stringValue7967"]) { + field8778: Object1679 +} + +type Object1679 @Directive21(argument61 : "stringValue7970") @Directive44(argument97 : ["stringValue7969"]) { + field8779: Int + field8780: Int + field8781: Int + field8782: Int + field8783: String + field8784: Int + field8785: Int + field8786: [Object199] +} + +type Object168 @Directive21(argument61 : "stringValue559") @Directive44(argument97 : ["stringValue558"]) { + field1077: String + field1078: String + field1079: Object169 + field1083: Object35 + field1084: String + field1085: String +} + +type Object1680 @Directive21(argument61 : "stringValue7972") @Directive44(argument97 : ["stringValue7971"]) { + field8803: [Object1675] + field8804: Boolean + field8805: String + field8806: String + field8807: String + field8808: String + field8809: String + field8810: [Object1675] + field8811: String + field8812: String + field8813: String + field8814: String + field8815: String +} + +type Object1681 @Directive21(argument61 : "stringValue7975") @Directive44(argument97 : ["stringValue7974"]) { + field8826: Int + field8827: [String] +} + +type Object1682 @Directive21(argument61 : "stringValue7977") @Directive44(argument97 : ["stringValue7976"]) { + field8829: Int + field8830: Boolean +} + +type Object1683 implements Interface95 @Directive21(argument61 : "stringValue7979") @Directive44(argument97 : ["stringValue7978"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union52!] + field8608: String @deprecated + field8833: [Object266] +} + +type Object1684 implements Interface95 @Directive21(argument61 : "stringValue7981") @Directive44(argument97 : ["stringValue7980"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union53!] + field8834: [Object268] +} + +type Object1685 implements Interface95 @Directive21(argument61 : "stringValue7983") @Directive44(argument97 : ["stringValue7982"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union54!] + field8604: Object270 + field8628: Object1627 + field8835: [Object269] +} + +type Object1686 implements Interface95 @Directive21(argument61 : "stringValue7985") @Directive44(argument97 : ["stringValue7984"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union55!] + field8616: Object1621 + field8620: Object1622 + field8836: [Object273] +} + +type Object1687 implements Interface95 @Directive21(argument61 : "stringValue7987") @Directive44(argument97 : ["stringValue7986"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String @deprecated + field8568: [Interface22] + field8837: [Object1688] +} + +type Object1688 @Directive21(argument61 : "stringValue7989") @Directive44(argument97 : ["stringValue7988"]) { + field8838: Object1689 + field8843: Object1689 + field8844: Object1689 +} + +type Object1689 @Directive21(argument61 : "stringValue7991") @Directive44(argument97 : ["stringValue7990"]) { + field8839: Object138 + field8840: Interface22 + field8841: String + field8842: Object275 +} + +type Object169 @Directive21(argument61 : "stringValue561") @Directive44(argument97 : ["stringValue560"]) { + field1080: Scalar2 + field1081: String + field1082: String +} + +type Object1690 implements Interface95 @Directive21(argument61 : "stringValue7993") @Directive44(argument97 : ["stringValue7992"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union56!] + field8845: [Object289] +} + +type Object1691 implements Interface95 @Directive21(argument61 : "stringValue7995") @Directive44(argument97 : ["stringValue7994"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union58!] + field8846: [Object293] +} + +type Object1692 implements Interface95 @Directive21(argument61 : "stringValue7997") @Directive44(argument97 : ["stringValue7996"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union59!] + field8604: Object270 + field8616: Object1621 + field8620: Object1622 + field8847: [Object296] +} + +type Object1693 implements Interface95 @Directive21(argument61 : "stringValue7999") @Directive44(argument97 : ["stringValue7998"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8571: [Union60!] + field8604: Object270 + field8616: Object1621 + field8620: Object1622 + field8848: [Object297] +} + +type Object1694 implements Interface95 @Directive21(argument61 : "stringValue8001") @Directive44(argument97 : ["stringValue8000"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union61!] + field8849: [Object298] +} + +type Object1695 implements Interface95 @Directive21(argument61 : "stringValue8003") @Directive44(argument97 : ["stringValue8002"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union62!] + field8850: [Object299] +} + +type Object1696 implements Interface95 @Directive21(argument61 : "stringValue8005") @Directive44(argument97 : ["stringValue8004"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union63!] + field8608: String @deprecated + field8851: [Object300] +} + +type Object1697 implements Interface95 @Directive21(argument61 : "stringValue8007") @Directive44(argument97 : ["stringValue8006"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union64!] + field8608: String @deprecated + field8852: [Object301] +} + +type Object1698 implements Interface95 @Directive21(argument61 : "stringValue8009") @Directive44(argument97 : ["stringValue8008"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union65!] + field8608: String @deprecated + field8853: [Object302] +} + +type Object1699 implements Interface95 @Directive21(argument61 : "stringValue8011") @Directive44(argument97 : ["stringValue8010"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union66!] + field8854: [Object303] +} + +type Object17 @Directive21(argument61 : "stringValue166") @Directive44(argument97 : ["stringValue165"]) { + field159: String + field160: Float + field161: Float + field162: Float + field163: Float + field164: [Object18] + field167: Enum21 +} + +type Object170 @Directive21(argument61 : "stringValue564") @Directive44(argument97 : ["stringValue563"]) { + field1086: String + field1087: String + field1088: String + field1089: String + field1090: Boolean + field1091: String + field1092: String @deprecated + field1093: Object35 + field1094: [Object43] + field1095: Object44 + field1096: Object43 + field1097: Object43 + field1098: String + field1099: String + field1100: String + field1101: String + field1102: Enum84 + field1103: Enum84 + field1104: Enum84 + field1105: Enum84 + field1106: Float + field1107: Object43 + field1108: String @deprecated + field1109: Enum78 + field1110: String + field1111: Object43 @deprecated + field1112: Object46 + field1113: Object47 + field1114: Object171 + field1117: String + field1118: String + field1119: String + field1120: String +} + +type Object1700 implements Interface95 @Directive21(argument61 : "stringValue8013") @Directive44(argument97 : ["stringValue8012"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union67!] + field8608: String @deprecated + field8855: [Object304] +} + +type Object1701 implements Interface95 @Directive21(argument61 : "stringValue8015") @Directive44(argument97 : ["stringValue8014"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union68!] + field8856: [Object305] +} + +type Object1702 implements Interface95 @Directive21(argument61 : "stringValue8017") @Directive44(argument97 : ["stringValue8016"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String @deprecated + field8568: [Interface22] + field8857: String + field8858: [Object1703] +} + +type Object1703 @Directive21(argument61 : "stringValue8019") @Directive44(argument97 : ["stringValue8018"]) { + field8859: String + field8860: String + field8861: String + field8862: String + field8863: String + field8864: Object35 +} + +type Object1704 implements Interface95 @Directive21(argument61 : "stringValue8021") @Directive44(argument97 : ["stringValue8020"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String @deprecated + field8568: [Interface22] + field8865: Object257 +} + +type Object1705 implements Interface95 @Directive21(argument61 : "stringValue8023") @Directive44(argument97 : ["stringValue8022"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union69!] + field8866: [Object306] +} + +type Object1706 implements Interface95 @Directive21(argument61 : "stringValue8025") @Directive44(argument97 : ["stringValue8024"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union70!] + field8867: [Object307] +} + +type Object1707 implements Interface95 @Directive21(argument61 : "stringValue8027") @Directive44(argument97 : ["stringValue8026"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union71!] + field8868: [Object308] +} + +type Object1708 implements Interface95 @Directive21(argument61 : "stringValue8029") @Directive44(argument97 : ["stringValue8028"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union72!] + field8869: [Object309] +} + +type Object1709 implements Interface95 @Directive21(argument61 : "stringValue8031") @Directive44(argument97 : ["stringValue8030"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union73!] + field8604: Object270 + field8616: Object1621 + field8870: Object1710 + field8872: [Object195] +} + +type Object171 @Directive21(argument61 : "stringValue567") @Directive44(argument97 : ["stringValue566"]) { + field1115: String + field1116: String +} + +type Object1710 @Directive21(argument61 : "stringValue8033") @Directive44(argument97 : ["stringValue8032"]) { + field8871: Enum359 +} + +type Object1711 implements Interface95 @Directive21(argument61 : "stringValue8036") @Directive44(argument97 : ["stringValue8035"]) { + field8462: Object1597 + field8526: String @deprecated + field8527: [Object130] + field8528: String + field8529: String + field8530: Object191 + field8531: Object1604 + field8566: Enum350 + field8567: String + field8568: [Interface22] + field8569: String + field8570: Boolean + field8571: [Union74!] + field8873: [Object311] +} + +type Object1712 implements Interface22 @Directive21(argument61 : "stringValue8038") @Directive44(argument97 : ["stringValue8037"]) { + field1828: Enum106 + field8874: String +} + +type Object1713 implements Interface21 @Directive21(argument61 : "stringValue8040") @Directive44(argument97 : ["stringValue8039"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +type Object1714 implements Interface21 @Directive21(argument61 : "stringValue8042") @Directive44(argument97 : ["stringValue8041"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +type Object1715 implements Interface21 @Directive21(argument61 : "stringValue8044") @Directive44(argument97 : ["stringValue8043"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +type Object1716 @Directive21(argument61 : "stringValue8046") @Directive44(argument97 : ["stringValue8045"]) { + field8875: String + field8876: String + field8877: String + field8878: Float + field8879: Scalar2 + field8880: String +} + +type Object1717 implements Interface21 @Directive21(argument61 : "stringValue8048") @Directive44(argument97 : ["stringValue8047"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8881: String! + field8882: String + field8883: Interface21 +} + +type Object1718 implements Interface21 @Directive21(argument61 : "stringValue8050") @Directive44(argument97 : ["stringValue8049"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8884: Boolean + field8885: [String] + field8886: Boolean +} + +type Object1719 @Directive21(argument61 : "stringValue8052") @Directive44(argument97 : ["stringValue8051"]) { + field8887: String! + field8888: Boolean! + field8889: String + field8890: String +} + +type Object172 @Directive21(argument61 : "stringValue570") @Directive44(argument97 : ["stringValue569"]) { + field1121: String + field1122: String + field1123: Object43 + field1124: String + field1125: Boolean + field1126: String + field1127: String @deprecated + field1128: Object35 + field1129: String + field1130: String + field1131: Enum84 + field1132: Enum84 + field1133: Float + field1134: Object43 + field1135: Object43 + field1136: Object43 + field1137: String + field1138: Object46 + field1139: Object47 + field1140: String + field1141: String +} + +type Object1720 implements Interface21 @Directive21(argument61 : "stringValue8054") @Directive44(argument97 : ["stringValue8053"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8891: String! +} + +type Object1721 implements Interface19 @Directive21(argument61 : "stringValue8056") @Directive44(argument97 : ["stringValue8055"]) { + field509: String! + field510: Enum37 + field511: Float + field512: String + field513: Interface20 + field538: Interface21 + field8892: Enum36 + field8893: Int +} + +type Object1722 implements Interface22 @Directive21(argument61 : "stringValue8058") @Directive44(argument97 : ["stringValue8057"]) { + field1828: Enum106 + field8874: String +} + +type Object1723 implements Interface19 @Directive21(argument61 : "stringValue8060") @Directive44(argument97 : ["stringValue8059"]) { + field509: String! + field510: Enum37 + field511: Float + field512: String + field513: Interface20 + field538: Interface21 + field8894: Enum360 + field8895: Object76 +} + +type Object1724 @Directive21(argument61 : "stringValue8063") @Directive44(argument97 : ["stringValue8062"]) { + field8896: Float + field8897: Float + field8898: String + field8899: String + field8900: Int + field8901: Boolean +} + +type Object1725 implements Interface21 @Directive21(argument61 : "stringValue8065") @Directive44(argument97 : ["stringValue8064"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String +} + +type Object1726 implements Interface21 @Directive21(argument61 : "stringValue8067") @Directive44(argument97 : ["stringValue8066"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8904: String +} + +type Object1727 implements Interface21 @Directive21(argument61 : "stringValue8069") @Directive44(argument97 : ["stringValue8068"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String + field8905: String + field8906: String + field8907: String +} + +type Object1728 implements Interface21 @Directive21(argument61 : "stringValue8071") @Directive44(argument97 : ["stringValue8070"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String +} + +type Object1729 implements Interface21 @Directive21(argument61 : "stringValue8073") @Directive44(argument97 : ["stringValue8072"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String +} + +type Object173 @Directive21(argument61 : "stringValue573") @Directive44(argument97 : ["stringValue572"]) { + field1142: String + field1143: String! + field1144: String + field1145: String + field1146: String + field1147: String + field1148: String + field1149: String +} + +type Object1730 implements Interface21 @Directive21(argument61 : "stringValue8075") @Directive44(argument97 : ["stringValue8074"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8908: String +} + +type Object1731 implements Interface21 @Directive21(argument61 : "stringValue8077") @Directive44(argument97 : ["stringValue8076"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8909: String +} + +type Object1732 implements Interface21 @Directive21(argument61 : "stringValue8079") @Directive44(argument97 : ["stringValue8078"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8909: String +} + +type Object1733 implements Interface21 @Directive21(argument61 : "stringValue8081") @Directive44(argument97 : ["stringValue8080"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8905: String +} + +type Object1734 implements Interface21 @Directive21(argument61 : "stringValue8083") @Directive44(argument97 : ["stringValue8082"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8910: String + field8911: Object1724! +} + +type Object1735 implements Interface21 @Directive21(argument61 : "stringValue8085") @Directive44(argument97 : ["stringValue8084"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8906: String! +} + +type Object1736 implements Interface21 @Directive21(argument61 : "stringValue8087") @Directive44(argument97 : ["stringValue8086"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String +} + +type Object1737 implements Interface21 @Directive21(argument61 : "stringValue8089") @Directive44(argument97 : ["stringValue8088"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8912: Object1738! +} + +type Object1738 @Directive21(argument61 : "stringValue8091") @Directive44(argument97 : ["stringValue8090"]) { + field8913: String + field8914: [Object1716!] + field8915: Object81 + field8916: Object81 + field8917: Object81 + field8918: Object81 + field8919: Object81 +} + +type Object1739 implements Interface21 @Directive21(argument61 : "stringValue8093") @Directive44(argument97 : ["stringValue8092"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String +} + +type Object174 @Directive21(argument61 : "stringValue576") @Directive44(argument97 : ["stringValue575"]) { + field1150: Scalar2 + field1151: String + field1152: Enum85 + field1153: String + field1154: String + field1155: String + field1156: String + field1157: [Object175] + field1172: String + field1173: String + field1174: Enum78 + field1175: String + field1176: [Object176] +} + +type Object1740 implements Interface21 @Directive21(argument61 : "stringValue8095") @Directive44(argument97 : ["stringValue8094"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8910: String! + field8920: String +} + +type Object1741 implements Interface21 @Directive21(argument61 : "stringValue8097") @Directive44(argument97 : ["stringValue8096"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8445: Object35 +} + +type Object1742 implements Interface21 @Directive21(argument61 : "stringValue8099") @Directive44(argument97 : ["stringValue8098"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8905: String + field8921: String + field8922: String + field8923: Int + field8924: Int + field8925: Int +} + +type Object1743 implements Interface21 @Directive21(argument61 : "stringValue8101") @Directive44(argument97 : ["stringValue8100"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8926: String +} + +type Object1744 implements Interface21 @Directive21(argument61 : "stringValue8103") @Directive44(argument97 : ["stringValue8102"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8927: String +} + +type Object1745 implements Interface21 @Directive21(argument61 : "stringValue8105") @Directive44(argument97 : ["stringValue8104"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String + field8905: String! + field8928: String + field8929: String! + field8930: String! + field8931: String! + field8932: Boolean! + field8933: String + field8934: Int! +} + +type Object1746 implements Interface21 @Directive21(argument61 : "stringValue8107") @Directive44(argument97 : ["stringValue8106"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8921: Scalar3 + field8922: Scalar3 + field8935: Scalar3 +} + +type Object1747 implements Interface21 @Directive21(argument61 : "stringValue8109") @Directive44(argument97 : ["stringValue8108"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8929: String! + field8930: String! + field8931: String! + field8936: String! +} + +type Object1748 implements Interface21 @Directive21(argument61 : "stringValue8111") @Directive44(argument97 : ["stringValue8110"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8902: String @deprecated + field8903: String + field8905: String! + field8906: String + field8929: String! + field8930: String! + field8931: String! + field8937: String! + field8938: String +} + +type Object1749 implements Interface21 @Directive21(argument61 : "stringValue8113") @Directive44(argument97 : ["stringValue8112"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8891: String! + field8905: String! + field8906: String! + field8929: String! + field8930: String! + field8931: String! + field8932: Boolean! + field8933: String + field8934: Int! + field8939: String + field8940: Int! + field8941: String! + field8942: String! + field8943: String + field8944: String + field8945: Int + field8946: String! + field8947: Int! + field8948: String! + field8949: Boolean! +} + +type Object175 @Directive21(argument61 : "stringValue579") @Directive44(argument97 : ["stringValue578"]) { + field1158: Object176 + field1171: Object44 +} + +type Object1750 implements Interface21 @Directive21(argument61 : "stringValue8115") @Directive44(argument97 : ["stringValue8114"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8905: String + field8931: String! + field8942: String! + field8950: String! + field8951: Boolean! + field8952: Boolean! + field8953: Int +} + +type Object1751 implements Interface21 @Directive21(argument61 : "stringValue8117") @Directive44(argument97 : ["stringValue8116"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8940: Int! + field8954: Boolean! + field8955: String! + field8956: [Object1719] +} + +type Object1752 implements Interface21 @Directive21(argument61 : "stringValue8119") @Directive44(argument97 : ["stringValue8118"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8942: String! +} + +type Object1753 implements Interface21 @Directive21(argument61 : "stringValue8121") @Directive44(argument97 : ["stringValue8120"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8942: String! +} + +type Object1754 implements Interface21 @Directive21(argument61 : "stringValue8123") @Directive44(argument97 : ["stringValue8122"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8905: String! + field8906: String! + field8929: String! + field8930: String! + field8931: String! + field8934: Int! + field8940: Int! + field8957: Boolean! + field8958: Boolean! + field8959: Boolean! + field8960: String +} + +type Object1755 implements Interface21 @Directive21(argument61 : "stringValue8125") @Directive44(argument97 : ["stringValue8124"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8905: String + field8906: String! + field8929: String! + field8930: String! + field8931: String! + field8932: Boolean! + field8933: String + field8934: Int! + field8940: Int! + field8942: String! + field8946: String! + field8947: Int! + field8948: String! +} + +type Object1756 implements Interface21 @Directive21(argument61 : "stringValue8127") @Directive44(argument97 : ["stringValue8126"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +type Object1757 implements Interface21 @Directive21(argument61 : "stringValue8129") @Directive44(argument97 : ["stringValue8128"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8891: String! + field8906: String! + field8929: String! + field8930: String! + field8931: String! + field8933: String + field8945: Int + field8949: Boolean! + field8961: String +} + +type Object1758 implements Interface21 @Directive21(argument61 : "stringValue8131") @Directive44(argument97 : ["stringValue8130"]) { + field539: Object81 + field557: String + field558: Scalar1 +} + +type Object1759 implements Interface21 @Directive21(argument61 : "stringValue8133") @Directive44(argument97 : ["stringValue8132"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8962: String! +} + +type Object176 @Directive21(argument61 : "stringValue581") @Directive44(argument97 : ["stringValue580"]) { + field1159: Scalar2 + field1160: String + field1161: String + field1162: String + field1163: String + field1164: String + field1165: String + field1166: String + field1167: String + field1168: String + field1169: String + field1170: Int +} + +type Object1760 implements Interface22 @Directive21(argument61 : "stringValue8135") @Directive44(argument97 : ["stringValue8134"]) { + field1828: Enum106 + field8963: Object35 +} + +type Object1761 implements Interface22 @Directive21(argument61 : "stringValue8137") @Directive44(argument97 : ["stringValue8136"]) { + field1828: Enum106 +} + +type Object1762 implements Interface22 @Directive21(argument61 : "stringValue8139") @Directive44(argument97 : ["stringValue8138"]) { + field1828: Enum106 + field8964: Object1606 +} + +type Object1763 implements Interface21 @Directive21(argument61 : "stringValue8141") @Directive44(argument97 : ["stringValue8140"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8965: String +} + +type Object1764 implements Interface20 @Directive21(argument61 : "stringValue8143") @Directive44(argument97 : ["stringValue8142"]) { + field514: Enum38 + field515: Enum39 + field516: Object77 + field531: Float + field532: String + field533: String + field534: Object77 + field535: Object80 +} + +type Object1765 implements Interface21 @Directive21(argument61 : "stringValue8145") @Directive44(argument97 : ["stringValue8144"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8966: Object1594 +} + +type Object1766 implements Interface19 @Directive21(argument61 : "stringValue8147") @Directive44(argument97 : ["stringValue8146"]) { + field509: String! + field510: Enum37 + field511: Float + field512: String + field513: Interface20 + field538: Interface21 + field8967: Enum361 +} + +type Object1767 implements Interface21 @Directive21(argument61 : "stringValue8150") @Directive44(argument97 : ["stringValue8149"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8968: String +} + +type Object1768 implements Interface21 @Directive21(argument61 : "stringValue8152") @Directive44(argument97 : ["stringValue8151"]) { + field539: Object81 + field557: String + field558: Scalar1 + field8921: Scalar3 + field8922: Scalar3 +} + +type Object1769 @Directive22(argument62 : "stringValue8153") @Directive31 @Directive44(argument97 : ["stringValue8154", "stringValue8155"]) { + field8969: Enum362! + field8970: Int @deprecated + field8971: Float +} + +type Object177 @Directive21(argument61 : "stringValue584") @Directive44(argument97 : ["stringValue583"]) { + field1177: String + field1178: String + field1179: String + field1180: String + field1181: String + field1182: String + field1183: Object176 + field1184: Object178 + field1270: Object35 +} + +type Object1770 implements Interface12 @Directive22(argument62 : "stringValue8159") @Directive31 @Directive44(argument97 : ["stringValue8160", "stringValue8161"]) { + field120: String! @Directive37(argument95 : "stringValue8163") + field8972: Boolean @Directive37(argument95 : "stringValue8162") +} + +type Object1771 @Directive20(argument58 : "stringValue8165", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8164") @Directive31 @Directive44(argument97 : ["stringValue8166", "stringValue8167"]) { + field8973: Enum363 + field8974: Object1769 + field8975: Object1769 + field8976: Object1769 +} + +type Object1772 implements Interface51 @Directive22(argument62 : "stringValue8171") @Directive31 @Directive44(argument97 : ["stringValue8172", "stringValue8173"]) { + field4117: Interface3 + field4118: Object1 + field4119: String! + field8977: [Object724] +} + +type Object1773 @Directive22(argument62 : "stringValue8174") @Directive31 @Directive44(argument97 : ["stringValue8175", "stringValue8176"]) { + field8978: Object576 + field8979: Object576 + field8980: Object576 +} + +type Object1774 @Directive22(argument62 : "stringValue8177") @Directive31 @Directive44(argument97 : ["stringValue8178", "stringValue8179"]) { + field8981: Object450 + field8982: Object450 + field8983: Object450 +} + +type Object1775 @Directive20(argument58 : "stringValue8181", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8180") @Directive31 @Directive44(argument97 : ["stringValue8182"]) { + field8984: [Object1776!] +} + +type Object1776 @Directive20(argument58 : "stringValue8184", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8183") @Directive31 @Directive44(argument97 : ["stringValue8185"]) { + field8985: String + field8986: String + field8987: Enum364 +} + +type Object1777 implements Interface36 & Interface96 @Directive22(argument62 : "stringValue8191") @Directive42(argument96 : ["stringValue8192", "stringValue8193"]) @Directive44(argument97 : ["stringValue8198"]) @Directive7(argument11 : "stringValue8197", argument14 : "stringValue8195", argument16 : "stringValue8196", argument17 : "stringValue8194") { + field2312: ID! + field8988: Scalar4 @Directive3(argument3 : "stringValue8199") + field8989: Scalar4 @Directive3(argument3 : "stringValue8200") + field8990: Scalar3 @Directive1 + field8991: Scalar3 @Directive1 + field8992: Int + field8993: Object1778 @Directive4(argument5 : "stringValue8201") +} + +type Object1778 implements Interface36 & Interface97 & Interface98 @Directive22(argument62 : "stringValue8209") @Directive42(argument96 : ["stringValue8210", "stringValue8211"]) @Directive44(argument97 : ["stringValue8216", "stringValue8217"]) @Directive45(argument98 : ["stringValue8218"]) @Directive45(argument98 : ["stringValue8219"]) @Directive7(argument11 : "stringValue8215", argument14 : "stringValue8213", argument16 : "stringValue8214", argument17 : "stringValue8212") { + field10275(argument206: String, argument207: String, argument208: Int, argument209: Int, argument210: Int, argument211: Int, argument212: [Enum405!], argument213: Boolean): Object1989 + field10276(argument214: String, argument215: String, argument216: Int, argument217: Int, argument218: Int, argument219: Int, argument220: [Enum405!], argument221: Boolean, argument222: String, argument223: Int, argument224: String, argument225: Int): Object1991 + field10277(argument226: String, argument227: String, argument228: Int, argument229: Int, argument230: Int, argument231: Int): Object1992 @Directive4(argument5 : "stringValue9389") + field10283(argument232: Scalar3, argument233: Scalar3, argument234: Int, argument235: Int, argument236: Int, argument237: Int): Object1837 @Directive14(argument51 : "stringValue9399") @deprecated + field10284: Enum406 @Directive14(argument51 : "stringValue9400") + field10285: [Object6143] @Directive14(argument51 : "stringValue9403") + field10286(argument238: String, argument239: String, argument240: Int, argument241: String, argument242: Int): Object1993 + field10297(argument243: String, argument244: Int, argument245: String, argument246: Int): Object1779 + field10298(argument247: String, argument248: Int, argument249: String, argument250: Int): Object1997 + field10299(argument251: String, argument252: Int, argument253: String, argument254: Int): Object1999 + field10304: Boolean @Directive14(argument51 : "stringValue9460") + field10305: Object2005 @Directive14(argument51 : "stringValue9461") + field10313: Int @Directive3(argument3 : "stringValue9477") + field10314(argument259: String, argument260: Int, argument261: String, argument262: Int, argument263: Boolean = false, argument264: Boolean = false): Object2007 @Directive17 @deprecated + field10315(argument265: String, argument266: Int, argument267: String, argument268: Int): Object2009 + field10331: Object2013 @Directive14(argument51 : "stringValue9505") @Directive30(argument80 : true) @Directive40 + field10367: Object2021 @Directive14(argument51 : "stringValue9552") @Directive30(argument80 : true) @Directive41 + field2312: ID! + field8994: String @Directive3(argument3 : "stringValue8220") + field8995: [Object792!]! @Directive14(argument51 : "stringValue8604") @deprecated + field8996: Object1856 + field8998(argument150: String, argument151: Int, argument152: String, argument153: Int): Object1779 @deprecated + field9025: Object1832 @Directive14(argument51 : "stringValue8530") + field9026: String @Directive3(argument3 : "stringValue8603") + field9029: Int + field9088: String + field9089: String + field9090: [Object1805!] @Directive14(argument51 : "stringValue8368") + field9093: String + field9094: String + field9095: String + field9096: Float + field9097: String + field9098: String + field9099: [Object791!]! + field9100: [Object791!]! + field9101: String @Directive3(argument3 : "stringValue8373") + field9102: Object1806 + field9113: [Object792!]! + field9114: [Object792!]! + field9115: String + field9116: Object1810 + field9133: Object1816 @Directive14(argument51 : "stringValue8414") + field9138: Boolean + field9139: String + field9140(argument170: String, argument171: Int, argument172: String, argument173: Int, argument174: Int, argument175: Int): Object1817 + field9169(argument183: Int, argument184: Int, argument185: Enum370, argument186: Enum371): Object1825 + field9170(argument187: String, argument188: Int, argument189: String, argument190: Int, argument191: String): Object1827 + field9176: [Object1830!]! @Directive3(argument3 : "stringValue8519") + field9184: Float + field9185: String + field9186: String + field9187: Object1831 + field9204: [Object791!]! + field9205: Float + field9206: Object2258 @Directive4(argument5 : "stringValue8535") + field9207: Boolean @Directive14(argument51 : "stringValue8536") + field9208: Boolean @Directive13(argument49 : "stringValue8537") + field9209: [Object1833!]! @Directive3(argument3 : "stringValue8538") + field9279: [String!]! + field9280: Boolean + field9281: Boolean @Directive3(argument3 : "stringValue8586") + field9282: Boolean @Directive3(argument3 : "stringValue8587") + field9283: Boolean + field9284: Boolean + field9285: Boolean + field9286: Boolean + field9287: Boolean + field9288: Boolean + field9289: Boolean + field9290: Boolean + field9291: Boolean + field9292: Boolean + field9293: Boolean + field9294: Boolean @Directive14(argument51 : "stringValue8588") + field9295: Boolean @Directive14(argument51 : "stringValue8589") + field9296: Boolean @Directive14(argument51 : "stringValue8590") + field9297: Boolean @Directive14(argument51 : "stringValue8591") + field9298: Boolean @Directive14(argument51 : "stringValue8592") + field9299: Boolean @Directive14(argument51 : "stringValue8593") + field9300: Object1830 + field9301: Float + field9302: Float + field9303: Object1842 + field9316: Int + field9317: Int + field9318: Int + field9319: Int + field9320: Int + field9321: Object1843 + field9325: Boolean + field9326: String + field9327: [String!]! + field9328: Float + field9329: Int + field9330: Object792 + field9331: [Object792!]! + field9332: [Object792!] + field9333: Object1844 + field9337: [Object1844!]! + field9338: Int + field9339: Object1845 + field9349: Int + field9350: [Int!]! + field9351: Scalar2 + field9352: [Object1844!]! + field9353: String + field9354: String + field9355: Float + field9356: String + field9357: Object1848 + field9375: Object1851 + field9401: [Object791!]! + field9402: [Object791!]! + field9403: Object1855 + field9405: Enum373 @Directive14(argument51 : "stringValue8653") + field9406: Int @Directive14(argument51 : "stringValue8656") + field9407: Object1837 @Directive14(argument51 : "stringValue8657") +} + +type Object1779 implements Interface92 @Directive42(argument96 : ["stringValue8221"]) @Directive44(argument97 : ["stringValue8228"]) @Directive8(argument20 : "stringValue8227", argument21 : "stringValue8223", argument23 : "stringValue8226", argument24 : "stringValue8222", argument25 : "stringValue8224", argument27 : "stringValue8225") { + field8384: Object753! + field8385: [Object1780] +} + +type Object178 @Directive21(argument61 : "stringValue586") @Directive44(argument97 : ["stringValue585"]) { + field1185: String + field1186: Float + field1187: String + field1188: Object179 + field1191: String + field1192: String + field1193: Scalar2! + field1194: Boolean + field1195: Object180 + field1199: String + field1200: Float + field1201: Float + field1202: String + field1203: Object58 + field1204: [Object176] + field1205: Int + field1206: Int + field1207: Scalar2 + field1208: Int + field1209: Float + field1210: Int + field1211: String + field1212: [Object181] + field1220: String + field1221: Float + field1222: [Object175] + field1223: [Object182] + field1227: Enum86 + field1228: Object59 + field1229: String + field1230: String + field1231: Enum87 + field1232: [String] + field1233: String + field1234: String + field1235: String + field1236: Object176 + field1237: String + field1238: String + field1239: String + field1240: Boolean + field1241: String + field1242: Object183 + field1246: Enum88 + field1247: [String] + field1248: Object184 + field1250: Float + field1251: String + field1252: Enum85 + field1253: [String] + field1254: String + field1255: Float + field1256: String + field1257: String + field1258: Object61 + field1259: String + field1260: Object185 + field1264: Object186 + field1268: String + field1269: Boolean +} + +type Object1780 implements Interface93 @Directive42(argument96 : ["stringValue8229"]) @Directive44(argument97 : ["stringValue8230"]) { + field8386: String! + field8999: Object1781 +} + +type Object1781 implements Interface36 & Interface96 @Directive22(argument62 : "stringValue8231") @Directive42(argument96 : ["stringValue8232", "stringValue8233"]) @Directive44(argument97 : ["stringValue8238"]) @Directive7(argument11 : "stringValue8237", argument14 : "stringValue8235", argument16 : "stringValue8236", argument17 : "stringValue8234") { + field2312: ID! + field8988: Scalar4 + field8989: Scalar4 + field8993: Object1778 @Directive4(argument5 : "stringValue8239") + field9000: Boolean @Directive3(argument3 : "stringValue8240") + field9001: Boolean @Directive3(argument3 : "stringValue8241") + field9002: Boolean @Directive3(argument3 : "stringValue8242") + field9003: Int + field9004(argument154: String, argument155: Int, argument156: String, argument157: Int): Object1782 @Directive5(argument7 : "stringValue8243") + field9009(argument158: String, argument159: Int, argument160: String, argument161: Int): Object1785 @Directive5(argument7 : "stringValue8254") + field9019: String @Directive3(argument3 : "stringValue8267") + field9020: String @Directive3(argument3 : "stringValue8268") + field9021: String @Directive3(argument3 : "stringValue8269") + field9022: Object1788 @Directive4(argument5 : "stringValue8270") + field9085: String + field9086: String + field9087: Scalar4 +} + +type Object1782 implements Interface92 @Directive42(argument96 : ["stringValue8244"]) @Directive44(argument97 : ["stringValue8245"]) { + field8384: Object753! + field8385: [Object1783] +} + +type Object1783 implements Interface93 @Directive42(argument96 : ["stringValue8246"]) @Directive44(argument97 : ["stringValue8247"]) { + field8386: String! + field8999: Object1784 +} + +type Object1784 @Directive12 @Directive42(argument96 : ["stringValue8248", "stringValue8249", "stringValue8250"]) @Directive44(argument97 : ["stringValue8251"]) { + field9005: String + field9006: Scalar2 @Directive3(argument3 : "stringValue8252") + field9007: Object2258 @Directive4(argument5 : "stringValue8253") + field9008: Scalar2 +} + +type Object1785 implements Interface92 @Directive42(argument96 : ["stringValue8255"]) @Directive44(argument97 : ["stringValue8256"]) { + field8384: Object753! + field8385: [Object1786] +} + +type Object1786 implements Interface93 @Directive42(argument96 : ["stringValue8257"]) @Directive44(argument97 : ["stringValue8258"]) { + field8386: String! + field8999: Object1787 +} + +type Object1787 @Directive12 @Directive42(argument96 : ["stringValue8259", "stringValue8260", "stringValue8261"]) @Directive44(argument97 : ["stringValue8262"]) { + field9010: ID! + field9011: Scalar2 @Directive3(argument3 : "stringValue8263") + field9012: Object1781 @Directive3(argument3 : "stringValue8264") + field9013: Object1781 @deprecated + field9014: Scalar2 @Directive3(argument3 : "stringValue8265") + field9015: Object2258 @Directive4(argument5 : "stringValue8266") + field9016: Boolean + field9017: String + field9018: String +} + +type Object1788 implements Interface36 & Interface98 @Directive22(argument62 : "stringValue8279") @Directive42(argument96 : ["stringValue8271", "stringValue8272"]) @Directive44(argument97 : ["stringValue8280", "stringValue8281"]) @Directive45(argument98 : ["stringValue8282"]) @Directive7(argument11 : "stringValue8278", argument12 : "stringValue8277", argument13 : "stringValue8276", argument14 : "stringValue8274", argument16 : "stringValue8275", argument17 : "stringValue8273") { + field2312: ID! @Directive40 + field8988: Scalar4 @Directive39 + field8989: Scalar4 @Directive39 + field8996: Object1796 @Directive39 + field9004: [Object2258] @Directive1 @Directive39 + field9023: String @Directive3(argument3 : "stringValue8283") @Directive39 + field9024: String @Directive39 + field9025: String @Directive39 + field9026: String @Directive3(argument3 : "stringValue8284") @Directive39 + field9027: Object1789 @Directive39 + field9028(argument162: String, argument163: Int, argument164: String, argument165: Int): Object1791 @Directive39 + field9039(argument166: String!, argument167: String!): Boolean @Directive1 @deprecated + field9040(argument168: String!, argument169: String!): String @Directive13(argument49 : "stringValue8318") @Directive39 + field9044: Object1798 @Directive39 + field9083: String @deprecated + field9084: String @Directive3(argument3 : "stringValue8367") @deprecated +} + +type Object1789 implements Interface92 @Directive42(argument96 : ["stringValue8285"]) @Directive44(argument97 : ["stringValue8286"]) { + field8384: Object753! + field8385: [Object1790] +} + +type Object179 @Directive21(argument61 : "stringValue588") @Directive44(argument97 : ["stringValue587"]) { + field1189: String + field1190: Boolean +} + +type Object1790 implements Interface93 @Directive42(argument96 : ["stringValue8287"]) @Directive44(argument97 : ["stringValue8288"]) { + field8386: String! + field8999: Interface96 +} + +type Object1791 implements Interface92 @Directive22(argument62 : "stringValue8295") @Directive44(argument97 : ["stringValue8296"]) @Directive8(argument20 : "stringValue8294", argument21 : "stringValue8290", argument23 : "stringValue8293", argument24 : "stringValue8289", argument25 : "stringValue8291", argument27 : "stringValue8292") { + field8384: Object753! + field8385: [Object1792] +} + +type Object1792 implements Interface93 @Directive22(argument62 : "stringValue8297") @Directive44(argument97 : ["stringValue8298"]) { + field8386: String! + field8999: Object1793 +} + +type Object1793 implements Interface36 & Interface98 @Directive12 @Directive22(argument62 : "stringValue8301") @Directive42(argument96 : ["stringValue8299", "stringValue8300"]) @Directive44(argument97 : ["stringValue8302"]) { + field2312: ID! + field8993: Interface97 @Directive13(argument49 : "stringValue8304") + field8996: Object1794 + field9029: String + field9030: String + field9031: Object2258 @Directive4(argument5 : "stringValue8303") + field9032: Boolean +} + +type Object1794 implements Interface100 & Interface99 @Directive22(argument62 : "stringValue8311") @Directive31 @Directive44(argument97 : ["stringValue8312", "stringValue8313", "stringValue8314"]) @Directive45(argument98 : ["stringValue8315", "stringValue8316"]) { + field8997: Object1793 + field9033: Object1795 @Directive13(argument49 : "stringValue8317") +} + +type Object1795 @Directive22(argument62 : "stringValue8308") @Directive31 @Directive44(argument97 : ["stringValue8309", "stringValue8310"]) { + field9034: String! + field9035: String + field9036: String + field9037: String + field9038: String! +} + +type Object1796 implements Interface99 @Directive22(argument62 : "stringValue8319") @Directive31 @Directive44(argument97 : ["stringValue8320", "stringValue8321"]) @Directive45(argument98 : ["stringValue8322"]) { + field8997: Object1788 + field9041: Object1797 @Directive13(argument49 : "stringValue8323") +} + +type Object1797 @Directive22(argument62 : "stringValue8324") @Directive31 @Directive44(argument97 : ["stringValue8325", "stringValue8326"]) { + field9042: String + field9043: String +} + +type Object1798 implements Interface92 @Directive22(argument62 : "stringValue8328") @Directive44(argument97 : ["stringValue8327"]) @Directive8(argument21 : "stringValue8330", argument23 : "stringValue8333", argument24 : "stringValue8329", argument25 : "stringValue8331", argument27 : "stringValue8332") { + field8384: Object753! + field8385: [Object1799] +} + +type Object1799 implements Interface93 @Directive22(argument62 : "stringValue8334") @Directive44(argument97 : ["stringValue8335"]) { + field8386: String! + field8999: Object1800 +} + +type Object18 @Directive21(argument61 : "stringValue168") @Directive44(argument97 : ["stringValue167"]) { + field165: String + field166: Float +} + +type Object180 @Directive21(argument61 : "stringValue590") @Directive44(argument97 : ["stringValue589"]) { + field1196: String + field1197: String + field1198: String +} + +type Object1800 @Directive22(argument62 : "stringValue8337") @Directive30(argument79 : "stringValue8338") @Directive44(argument97 : ["stringValue8336"]) { + field9045: String! @Directive30(argument80 : true) @Directive39 + field9046: String! @Directive30(argument80 : true) @Directive39 + field9047: String! @Directive30(argument80 : true) @Directive39 + field9048: String @Directive30(argument80 : true) @Directive40 + field9049: String @Directive30(argument80 : true) @Directive39 + field9050: Scalar4 @Directive30(argument80 : true) @Directive39 + field9051: Scalar4 @Directive30(argument80 : true) @Directive39 + field9052: String @Directive30(argument80 : true) @Directive41 + field9053: String @Directive30(argument80 : true) @Directive41 + field9054: String @Directive30(argument80 : true) @Directive41 + field9055: Boolean @Directive30(argument80 : true) @Directive41 + field9056: String @Directive30(argument80 : true) @Directive41 + field9057: String @Directive30(argument80 : true) @Directive40 + field9058: Interface97 @Directive14(argument51 : "stringValue8339") @Directive30(argument80 : true) @Directive41 + field9059: Object6143 @Directive14(argument51 : "stringValue8340") @Directive30(argument80 : true) @Directive39 + field9060: Object4016 @Directive14(argument51 : "stringValue8341") @Directive30(argument80 : true) @Directive39 + field9061: Object2258 @Directive14(argument51 : "stringValue8342") @Directive30(argument80 : true) @Directive39 + field9062: Object1801 @Directive14(argument51 : "stringValue8343") @Directive30(argument80 : true) @Directive39 + field9082: Boolean @Directive14(argument51 : "stringValue8366") @Directive30(argument80 : true) @Directive41 +} + +type Object1801 implements Interface36 @Directive22(argument62 : "stringValue8344") @Directive30(argument85 : "stringValue8346", argument86 : "stringValue8345") @Directive44(argument97 : ["stringValue8352", "stringValue8353"]) @Directive7(argument11 : "stringValue8351", argument12 : "stringValue8350", argument13 : "stringValue8349", argument14 : "stringValue8348", argument17 : "stringValue8347", argument18 : false) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9063: Object1802 @Directive30(argument80 : true) @Directive40 +} + +type Object1802 @Directive22(argument62 : "stringValue8354") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue8355"]) { + field9064: Scalar2! @Directive30(argument80 : true) @Directive41 + field9065: Scalar2! @Directive30(argument80 : true) @Directive40 + field9066: String @Directive30(argument80 : true) @Directive41 + field9067: [Object1803] @Directive30(argument80 : true) @Directive41 + field9072: String @Directive30(argument80 : true) @Directive41 + field9073: Enum365 @Directive30(argument80 : true) @Directive41 + field9074: Object1804 @Directive30(argument80 : true) @Directive41 + field9081: String @Directive30(argument80 : true) @Directive41 +} + +type Object1803 @Directive22(argument62 : "stringValue8356") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue8357"]) { + field9068: Scalar2! @Directive30(argument80 : true) @Directive41 + field9069: String @Directive30(argument80 : true) @Directive39 + field9070: String @Directive30(argument80 : true) @Directive39 + field9071: String @Directive30(argument80 : true) @Directive39 +} + +type Object1804 @Directive22(argument62 : "stringValue8361") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue8362"]) { + field9075: String! @Directive30(argument80 : true) @Directive41 + field9076: String! @Directive30(argument80 : true) @Directive41 + field9077: String! @Directive30(argument80 : true) @Directive40 + field9078: Enum366 @Directive30(argument80 : true) @Directive41 + field9079: String @Directive30(argument80 : true) @Directive41 + field9080: String @Directive30(argument80 : true) @Directive41 +} + +type Object1805 @Directive22(argument62 : "stringValue8369") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue8370"]) { + field9091: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue8371") + field9092: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue8372") +} + +type Object1806 @Directive42(argument96 : ["stringValue8374", "stringValue8375", "stringValue8376"]) @Directive44(argument97 : ["stringValue8377"]) { + field9103: String + field9104: [Object1807!]! @Directive18 + field9107: [Object1808!]! @Directive18 + field9110: [Object1809!]! @Directive18 +} + +type Object1807 @Directive42(argument96 : ["stringValue8378", "stringValue8379", "stringValue8380"]) @Directive44(argument97 : ["stringValue8381"]) { + field9105: Int + field9106: String +} + +type Object1808 @Directive42(argument96 : ["stringValue8382", "stringValue8383", "stringValue8384"]) @Directive44(argument97 : ["stringValue8385"]) { + field9108: Int + field9109: Int +} + +type Object1809 @Directive42(argument96 : ["stringValue8386", "stringValue8387", "stringValue8388"]) @Directive44(argument97 : ["stringValue8389"]) { + field9111: Int + field9112: Boolean +} + +type Object181 @Directive21(argument61 : "stringValue592") @Directive44(argument97 : ["stringValue591"]) { + field1213: Scalar4 + field1214: Scalar4 + field1215: Int + field1216: Scalar2 + field1217: Boolean + field1218: String + field1219: String +} + +type Object1810 @Directive42(argument96 : ["stringValue8390", "stringValue8391", "stringValue8392"]) @Directive44(argument97 : ["stringValue8393"]) { + field9117: Object1811 + field9122: Object1812 + field9125: Object1813 + field9129: Object1815 +} + +type Object1811 @Directive42(argument96 : ["stringValue8394", "stringValue8395", "stringValue8396"]) @Directive44(argument97 : ["stringValue8397"]) { + field9118: Scalar2 + field9119: Scalar2 + field9120: Scalar2 + field9121: Scalar2 +} + +type Object1812 @Directive42(argument96 : ["stringValue8398", "stringValue8399", "stringValue8400"]) @Directive44(argument97 : ["stringValue8401"]) { + field9123: Int + field9124: Int +} + +type Object1813 @Directive42(argument96 : ["stringValue8402", "stringValue8403", "stringValue8404"]) @Directive44(argument97 : ["stringValue8405"]) { + field9126: [Object1814!]! +} + +type Object1814 @Directive42(argument96 : ["stringValue8406", "stringValue8407", "stringValue8408"]) @Directive44(argument97 : ["stringValue8409"]) { + field9127: Int + field9128: Int +} + +type Object1815 @Directive42(argument96 : ["stringValue8410", "stringValue8411", "stringValue8412"]) @Directive44(argument97 : ["stringValue8413"]) { + field9130: Int + field9131: Boolean + field9132: String +} + +type Object1816 @Directive42(argument96 : ["stringValue8415", "stringValue8416", "stringValue8417"]) @Directive44(argument97 : ["stringValue8418"]) { + field9134: String + field9135: String + field9136: String + field9137: String +} + +type Object1817 implements Interface92 @Directive42(argument96 : ["stringValue8419"]) @Directive44(argument97 : ["stringValue8427"]) @Directive8(argument19 : "stringValue8425", argument20 : "stringValue8426", argument21 : "stringValue8421", argument23 : "stringValue8424", argument24 : "stringValue8420", argument25 : "stringValue8422", argument27 : "stringValue8423") { + field8384: Object753! + field8385: [Object1818] +} + +type Object1818 implements Interface93 @Directive42(argument96 : ["stringValue8428"]) @Directive44(argument97 : ["stringValue8429"]) { + field8386: String! + field8999: Object1819 +} + +type Object1819 implements Interface101 & Interface36 @Directive22(argument62 : "stringValue8432") @Directive30(argument85 : "stringValue8441", argument86 : "stringValue8440") @Directive42(argument96 : ["stringValue8433"]) @Directive44(argument97 : ["stringValue8442"]) @Directive7(argument11 : "stringValue8439", argument12 : "stringValue8436", argument13 : "stringValue8435", argument14 : "stringValue8437", argument16 : "stringValue8438", argument17 : "stringValue8434") { + field2312: ID! @Directive30(argument80 : true) + field9087: Scalar4 @Directive3(argument3 : "stringValue8445") @Directive30(argument80 : true) + field9141: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue8443") + field9142: Scalar4 @Directive3(argument3 : "stringValue8446") @Directive30(argument80 : true) + field9143: Scalar4 @Directive3(argument3 : "stringValue8447") @Directive30(argument80 : true) + field9144: Scalar4 @Directive3(argument3 : "stringValue8448") @Directive30(argument80 : true) + field9145: Scalar4 @Directive3(argument3 : "stringValue8449") @Directive30(argument80 : true) + field9146: Int @Directive3(argument3 : "stringValue8450") @Directive30(argument85 : "stringValue8452", argument86 : "stringValue8451") + field9147: String @Directive3(argument3 : "stringValue8453") @Directive30(argument80 : true) + field9148: String @Directive3(argument3 : "stringValue8454") @Directive30(argument80 : true) + field9149: Boolean @Directive3(argument3 : "stringValue8460") @Directive30(argument80 : true) + field9150: String @Directive3(argument3 : "stringValue8461") @Directive30(argument80 : true) + field9151: Boolean @Directive3(argument3 : "stringValue8462") @Directive30(argument80 : true) + field9152: Boolean @Directive3(argument3 : "stringValue8463") @Directive30(argument85 : "stringValue8465", argument86 : "stringValue8464") + field9153: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue8444") + field9154: Object1820 @Directive13(argument49 : "stringValue8455") @Directive30(argument80 : true) + field9158: String @Directive3(argument3 : "stringValue8466") @Directive30(argument85 : "stringValue8468", argument86 : "stringValue8467") + field9159: ID @Directive3(argument3 : "stringValue8469") @Directive30(argument80 : true) + field9160: [Object1821!] @Directive30(argument80 : true) + field9164(argument179: String, argument180: Int, argument181: String, argument182: Int): Object1822 @Directive30(argument85 : "stringValue8478", argument86 : "stringValue8477") @Directive5(argument7 : "stringValue8476") +} + +type Object182 @Directive21(argument61 : "stringValue594") @Directive44(argument97 : ["stringValue593"]) { + field1224: String + field1225: String + field1226: String +} + +type Object1820 @Directive22(argument62 : "stringValue8457") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue8456"]) @Directive44(argument97 : ["stringValue8458", "stringValue8459"]) { + field9155(argument176: String): String @Directive30(argument80 : true) + field9156(argument177: String): String @Directive30(argument80 : true) + field9157(argument178: String): String! @Directive30(argument80 : true) +} + +type Object1821 @Directive42(argument96 : ["stringValue8470", "stringValue8471", "stringValue8472"]) @Directive44(argument97 : ["stringValue8473"]) { + field9161: ID + field9162: Enum367 + field9163: Boolean +} + +type Object1822 implements Interface92 @Directive42(argument96 : ["stringValue8479"]) @Directive44(argument97 : ["stringValue8480"]) { + field8384: Object753! + field8385: [Object1823] +} + +type Object1823 implements Interface93 @Directive42(argument96 : ["stringValue8481"]) @Directive44(argument97 : ["stringValue8482"]) { + field8386: String! + field8999: Object1824 +} + +type Object1824 @Directive12 @Directive42(argument96 : ["stringValue8483", "stringValue8484", "stringValue8485"]) @Directive44(argument97 : ["stringValue8486"]) { + field9165: String + field9166: String + field9167: Enum368 + field9168: Enum369 +} + +type Object1825 implements Interface92 @Directive22(argument62 : "stringValue8498") @Directive44(argument97 : ["stringValue8507"]) @Directive8(argument19 : "stringValue8505", argument20 : "stringValue8506", argument21 : "stringValue8500", argument23 : "stringValue8503", argument24 : "stringValue8499", argument25 : "stringValue8501", argument26 : "stringValue8504", argument27 : "stringValue8502", argument28 : true) { + field8384: Object753! + field8385: [Object1826] +} + +type Object1826 implements Interface93 @Directive22(argument62 : "stringValue8508") @Directive44(argument97 : ["stringValue8509"]) { + field8386: String! + field8999: Object1819 +} + +type Object1827 implements Interface92 @Directive22(argument62 : "stringValue8510") @Directive44(argument97 : ["stringValue8511"]) { + field8384: Object753! + field8385: [Object1828] +} + +type Object1828 implements Interface93 @Directive22(argument62 : "stringValue8512") @Directive44(argument97 : ["stringValue8513"]) { + field8386: String! + field8999: Object1829 +} + +type Object1829 @Directive12 @Directive22(argument62 : "stringValue8514") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue8515"]) { + field9171: Object1819 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue8516") @Directive40 + field9172: String @Directive30(argument80 : true) @Directive40 + field9173: String @Directive30(argument80 : true) @Directive40 + field9174: String @Directive14(argument51 : "stringValue8517") @Directive30(argument80 : true) @Directive40 + field9175: String @Directive14(argument51 : "stringValue8518") @Directive30(argument80 : true) @Directive40 +} + +type Object183 @Directive21(argument61 : "stringValue598") @Directive44(argument97 : ["stringValue597"]) { + field1243: String + field1244: String + field1245: String +} + +type Object1830 @Directive12 @Directive42(argument96 : ["stringValue8520", "stringValue8521", "stringValue8522"]) @Directive44(argument97 : ["stringValue8523"]) { + field9177: ID! + field9178: String! @Directive3(argument3 : "stringValue8524") @deprecated + field9179: String + field9180: Boolean + field9181: Boolean + field9182: Scalar2 + field9183: Object2258 @Directive4(argument5 : "stringValue8525") +} + +type Object1831 @Directive42(argument96 : ["stringValue8526", "stringValue8527", "stringValue8528"]) @Directive44(argument97 : ["stringValue8529"]) { + field9188: String + field9189: String + field9190: String + field9191: String + field9192: String + field9193: String + field9194: Int + field9195: String + field9196: String + field9197: String + field9198: String + field9199: String + field9200: String + field9201: String +} + +type Object1832 @Directive42(argument96 : ["stringValue8531", "stringValue8532", "stringValue8533"]) @Directive44(argument97 : ["stringValue8534"]) { + field9202: Object1820 + field9203: Object1820 +} + +type Object1833 @Directive12 @Directive42(argument96 : ["stringValue8539", "stringValue8540", "stringValue8541"]) @Directive44(argument97 : ["stringValue8542"]) { + field9210: ID! + field9211: String! @Directive3(argument3 : "stringValue8543") @deprecated + field9212: [Object1834!]! + field9230: [Object1834!]! + field9231: String + field9232: String + field9233: String + field9234: String + field9235: [Object792!]! + field9236: Int + field9237: Int + field9238: Object1838 + field9255: Object1840 @Directive14(argument51 : "stringValue8576") + field9259: Int + field9260: Float + field9261: Object2258 @Directive4(argument5 : "stringValue8581") + field9262: [Object792!]! + field9263: Float + field9264: Float + field9265: String + field9266: Object1841 + field9277: String + field9278: String +} + +type Object1834 @Directive12 @Directive42(argument96 : ["stringValue8544", "stringValue8545", "stringValue8546"]) @Directive44(argument97 : ["stringValue8547"]) { + field9213: ID! + field9214: String! @Directive3(argument3 : "stringValue8548") @deprecated + field9215: String + field9216: Scalar2 + field9217: String + field9218: String + field9219: [Object1835!]! + field9224: Object792 + field9225: Int @deprecated + field9226: Object1836 @Directive14(argument51 : "stringValue8554") +} + +type Object1835 @Directive12 @Directive42(argument96 : ["stringValue8549", "stringValue8550", "stringValue8551"]) @Directive44(argument97 : ["stringValue8552"]) { + field9220: ID! + field9221: String! @Directive3(argument3 : "stringValue8553") @deprecated + field9222: Scalar2 + field9223: Int +} + +type Object1836 @Directive42(argument96 : ["stringValue8555", "stringValue8556", "stringValue8557"]) @Directive44(argument97 : ["stringValue8558"]) { + field9227: Enum372 + field9228: Object1837 +} + +type Object1837 @Directive42(argument96 : ["stringValue8561", "stringValue8562", "stringValue8563"]) @Directive44(argument97 : ["stringValue8564", "stringValue8565", "stringValue8566"]) { + field9229: String! @Directive17 +} + +type Object1838 @Directive42(argument96 : ["stringValue8567", "stringValue8568", "stringValue8569"]) @Directive44(argument97 : ["stringValue8570"]) { + field9239: String + field9240: String + field9241: String + field9242: String + field9243: String + field9244: [Object1839!]! + field9250: String + field9251: String + field9252: String + field9253: String + field9254: String +} + +type Object1839 @Directive12 @Directive42(argument96 : ["stringValue8571", "stringValue8572", "stringValue8573"]) @Directive44(argument97 : ["stringValue8574"]) { + field9245: ID! + field9246: String! @Directive3(argument3 : "stringValue8575") @deprecated + field9247: Scalar2 + field9248: String + field9249: String +} + +type Object184 @Directive21(argument61 : "stringValue601") @Directive44(argument97 : ["stringValue600"]) { + field1249: [Object176] +} + +type Object1840 @Directive42(argument96 : ["stringValue8577", "stringValue8578", "stringValue8579"]) @Directive44(argument97 : ["stringValue8580"]) { + field9256: Object1820 + field9257: Object1820 + field9258: Object1820 +} + +type Object1841 @Directive42(argument96 : ["stringValue8582", "stringValue8583", "stringValue8584"]) @Directive44(argument97 : ["stringValue8585"]) { + field9267: String + field9268: Int + field9269: String + field9270: String + field9271: Int + field9272: String + field9273: String + field9274: Int + field9275: String + field9276: String +} + +type Object1842 @Directive12 @Directive42(argument96 : ["stringValue8594", "stringValue8595", "stringValue8596"]) @Directive44(argument97 : ["stringValue8597"]) { + field9304: ID! + field9305: String! @Directive3(argument3 : "stringValue8598") @deprecated + field9306: String + field9307: String + field9308: Float + field9309: Float + field9310: String + field9311: String + field9312: String + field9313: String + field9314: String + field9315: Scalar2 +} + +type Object1843 @Directive42(argument96 : ["stringValue8599", "stringValue8600", "stringValue8601"]) @Directive44(argument97 : ["stringValue8602"]) { + field9322: Boolean + field9323: Int + field9324: Int @deprecated +} + +type Object1844 @Directive22(argument62 : "stringValue8607") @Directive42(argument96 : ["stringValue8605", "stringValue8606"]) @Directive44(argument97 : ["stringValue8608"]) { + field9334: ID! + field9335: String + field9336: String +} + +type Object1845 @Directive42(argument96 : ["stringValue8609", "stringValue8610", "stringValue8611"]) @Directive44(argument97 : ["stringValue8612"]) { + field9340: Object1846 + field9344: Object1847 +} + +type Object1846 @Directive42(argument96 : ["stringValue8613", "stringValue8614", "stringValue8615"]) @Directive44(argument97 : ["stringValue8616"]) { + field9341: Float + field9342: Float + field9343: Float +} + +type Object1847 @Directive42(argument96 : ["stringValue8617", "stringValue8618", "stringValue8619"]) @Directive44(argument97 : ["stringValue8620"]) { + field9345: Float + field9346: Float + field9347: Float + field9348: Float +} + +type Object1848 @Directive42(argument96 : ["stringValue8621", "stringValue8622", "stringValue8623"]) @Directive44(argument97 : ["stringValue8624"]) { + field9358: [Object1849!]! + field9362: [Object1849!]! + field9363: [Object1849!]! + field9364: [Object1849!]! + field9365: [Object1849!]! + field9366: [Object1849!]! + field9367: [Object1849!]! @deprecated + field9368: [Object1849!]! + field9369: [Object1849!]! + field9370: [Object1849!]! + field9371: [Object1849!]! + field9372: [Object1849!]! + field9373: [Object1849!]! + field9374: [Object1849!]! +} + +type Object1849 @Directive42(argument96 : ["stringValue8625", "stringValue8626", "stringValue8627"]) @Directive44(argument97 : ["stringValue8628"]) { + field9359: [Object1850!]! +} + +type Object185 @Directive21(argument61 : "stringValue603") @Directive44(argument97 : ["stringValue602"]) { + field1261: [String] + field1262: [String] + field1263: [String] +} + +type Object1850 @Directive42(argument96 : ["stringValue8629", "stringValue8630", "stringValue8631"]) @Directive44(argument97 : ["stringValue8632"]) { + field9360: String + field9361: String +} + +type Object1851 @Directive42(argument96 : ["stringValue8633", "stringValue8634", "stringValue8635"]) @Directive44(argument97 : ["stringValue8636"]) { + field9376: Float + field9377: Float + field9378: Float + field9379: Boolean + field9380: Boolean + field9381: Boolean + field9382: Boolean + field9383: Boolean + field9384: String + field9385: Int + field9386: Int + field9387: Int + field9388: Int + field9389: Int + field9390: Int + field9391: Int + field9392: Float + field9393: [Object1852!]! @Directive18 + field9396: [Object1853!]! @Directive18 +} + +type Object1852 @Directive42(argument96 : ["stringValue8637", "stringValue8638", "stringValue8639"]) @Directive44(argument97 : ["stringValue8640"]) { + field9394: String + field9395: Float +} + +type Object1853 @Directive42(argument96 : ["stringValue8641", "stringValue8642", "stringValue8643"]) @Directive44(argument97 : ["stringValue8644"]) { + field9397: String + field9398: [Object1854!]! @Directive17 +} + +type Object1854 @Directive42(argument96 : ["stringValue8645", "stringValue8646", "stringValue8647"]) @Directive44(argument97 : ["stringValue8648"]) { + field9399: String + field9400: Int +} + +type Object1855 @Directive42(argument96 : ["stringValue8649", "stringValue8650", "stringValue8651"]) @Directive44(argument97 : ["stringValue8652"]) { + field9404: String +} + +type Object1856 implements Interface99 @Directive22(argument62 : "stringValue8658") @Directive31 @Directive44(argument97 : ["stringValue8659", "stringValue8660", "stringValue8661"]) @Directive45(argument98 : ["stringValue8662", "stringValue8663"]) { + field8997: Object1778 @deprecated + field9408: Object1857 @Directive18 + field9628(argument195: ID @Directive25(argument65 : "stringValue8830")): Object1888 @Directive18 +} + +type Object1857 implements Interface99 @Directive22(argument62 : "stringValue8664") @Directive31 @Directive44(argument97 : ["stringValue8665", "stringValue8666", "stringValue8667"]) @Directive45(argument98 : ["stringValue8668", "stringValue8669"]) { + field8997: Object1778 @deprecated + field9409(argument192: InputObject2): Object1858 @Directive14(argument51 : "stringValue8670") + field9626: Object474 @Directive14(argument51 : "stringValue8828") + field9627(argument193: InputObject2, argument194: ID): Object1858 @Directive49(argument102 : "stringValue8829") +} + +type Object1858 implements Interface46 @Directive22(argument62 : "stringValue8678") @Directive31 @Directive44(argument97 : ["stringValue8679", "stringValue8680"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object1859 + field8330: Object1887 + field8332: [Object1536] + field8337: [Object502] @deprecated + field9410: ID! +} + +type Object1859 implements Interface102 & Interface45 @Directive20(argument58 : "stringValue8818", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue8817") @Directive31 @Directive44(argument97 : ["stringValue8819", "stringValue8820"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object1886 + field2614: String + field2615: String + field9411: Enum185 + field9412: Object570 + field9413: Object1860 + field9459: Object1866 @deprecated + field9484: Object1868 + field9621: Enum316 + field9622: Enum219 + field9623: Enum379 +} + +type Object186 @Directive21(argument61 : "stringValue605") @Directive44(argument97 : ["stringValue604"]) { + field1265: Enum89 + field1266: Enum89 + field1267: Enum89 +} + +type Object1860 @Directive20(argument58 : "stringValue8686", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8684") @Directive42(argument96 : ["stringValue8685"]) @Directive44(argument97 : ["stringValue8687", "stringValue8688"]) { + field9414: [Object1861] @Directive41 + field9418: String! @Directive40 + field9419: String! @Directive40 + field9420: String @Directive41 + field9421: String! @Directive40 + field9422: Boolean @Directive41 + field9423: String! @Directive40 + field9424: String! @Directive40 + field9425: String! @Directive40 + field9426: [Object1363] @Directive40 + field9427: [Object1862] @Directive40 + field9431: [Object1363] @Directive40 + field9432: Object1863! @Directive40 + field9445: [Object1864] @Directive41 + field9449: String @Directive40 + field9450: String! @Directive40 + field9451: [String] @Directive41 + field9452: Object1865! @Directive40 + field9458: Boolean @Directive41 +} + +type Object1861 @Directive20(argument58 : "stringValue8691", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8689") @Directive42(argument96 : ["stringValue8690"]) @Directive44(argument97 : ["stringValue8692", "stringValue8693"]) { + field9415: String @Directive41 + field9416: String @Directive41 + field9417: String @Directive41 +} + +type Object1862 @Directive20(argument58 : "stringValue8696", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8694") @Directive42(argument96 : ["stringValue8695"]) @Directive44(argument97 : ["stringValue8697", "stringValue8698"]) { + field9428: String! @Directive40 + field9429: String! @Directive40 + field9430: Boolean! @Directive41 +} + +type Object1863 @Directive42(argument96 : ["stringValue8699", "stringValue8700", "stringValue8701"]) @Directive44(argument97 : ["stringValue8702", "stringValue8703"]) { + field9433: String + field9434: String + field9435: String + field9436: String + field9437: String + field9438: String + field9439: String + field9440: String + field9441: String + field9442: String + field9443: String + field9444: String +} + +type Object1864 @Directive20(argument58 : "stringValue8706", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8704") @Directive42(argument96 : ["stringValue8705"]) @Directive44(argument97 : ["stringValue8707", "stringValue8708"]) { + field9446: ID! @Directive41 + field9447: String! @Directive41 + field9448: String! @Directive41 +} + +type Object1865 @Directive42(argument96 : ["stringValue8709", "stringValue8710", "stringValue8711"]) @Directive44(argument97 : ["stringValue8712", "stringValue8713"]) { + field9453: String + field9454: String + field9455: String + field9456: String + field9457: String +} + +type Object1866 @Directive20(argument58 : "stringValue8715", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8714") @Directive31 @Directive44(argument97 : ["stringValue8716", "stringValue8717"]) { + field9460: Object1867 + field9483: [Int!] @deprecated +} + +type Object1867 @Directive20(argument58 : "stringValue8719", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8718") @Directive31 @Directive44(argument97 : ["stringValue8720", "stringValue8721"]) { + field9461: Scalar2 + field9462: String + field9463: Int + field9464: Float + field9465: Float + field9466: Int + field9467: String + field9468: String + field9469: Int + field9470: String + field9471: Boolean + field9472: Int + field9473: Int + field9474: [Int] + field9475: Float + field9476: Float + field9477: Float + field9478: Float + field9479: Float + field9480: Float + field9481: Float + field9482: Scalar2 +} + +type Object1868 @Directive20(argument58 : "stringValue8723", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue8722") @Directive31 @Directive44(argument97 : ["stringValue8724", "stringValue8725"]) { + field9485: Int + field9486: Int + field9487: String + field9488: String + field9489: Boolean + field9490: Boolean + field9491: Boolean + field9492: String + field9493: Scalar2 + field9494: String + field9495: String + field9496: Boolean + field9497: Boolean + field9498: Object642 + field9499: Boolean + field9500: String + field9501: Object539 + field9502: [Object1869] + field9509: Object538 + field9510: [Object1870] + field9555: Object1874 + field9575: Object514 + field9576: Object541 + field9577: String + field9578: Object1870 + field9579: [Object1254] + field9580: Object1880 + field9591: Object548 + field9592: Object631 + field9593: Union98 + field9594: Object1 + field9595: Object639 +} + +type Object1869 @Directive20(argument58 : "stringValue8727", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8726") @Directive31 @Directive44(argument97 : ["stringValue8728", "stringValue8729"]) { + field9503: Enum375 + field9504: String + field9505: String + field9506: Boolean + field9507: Boolean + field9508: Boolean +} + +type Object187 @Directive21(argument61 : "stringValue609") @Directive44(argument97 : ["stringValue608"]) { + field1271: String + field1272: String + field1273: String + field1274: String + field1275: String + field1276: String + field1277: String +} + +type Object1870 @Directive20(argument58 : "stringValue8735", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8734") @Directive31 @Directive44(argument97 : ["stringValue8736", "stringValue8737"]) { + field9511: String + field9512: String + field9513: String + field9514: String + field9515: String + field9516: String! + field9517: String! + field9518: String + field9519: String + field9520: String + field9521: [String] + field9522: [Object1871] + field9527: String! + field9528: [Object533] + field9529: String + field9530: String + field9531: String + field9532: String! + field9533: String! + field9534: Enum178 + field9535: Float + field9536: Int + field9537: String + field9538: String + field9539: Object1872 + field9548: [Enum377] + field9549: [Object1873] + field9554: Object536 +} + +type Object1871 @Directive20(argument58 : "stringValue8739", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8738") @Directive31 @Directive44(argument97 : ["stringValue8740", "stringValue8741"]) { + field9523: String + field9524: String + field9525: String + field9526: Enum376 +} + +type Object1872 @Directive20(argument58 : "stringValue8747", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8746") @Directive31 @Directive44(argument97 : ["stringValue8748", "stringValue8749"]) { + field9540: String + field9541: String + field9542: String + field9543: String + field9544: String + field9545: String + field9546: String + field9547: Enum10 +} + +type Object1873 @Directive20(argument58 : "stringValue8755", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8754") @Directive31 @Directive44(argument97 : ["stringValue8756", "stringValue8757"]) { + field9550: String + field9551: Enum179 + field9552: Object534 + field9553: Object534 +} + +type Object1874 @Directive20(argument58 : "stringValue8759", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8758") @Directive31 @Directive44(argument97 : ["stringValue8760", "stringValue8761"]) { + field9556: Object1875 + field9564: Object1877 + field9572: Object1879 +} + +type Object1875 @Directive20(argument58 : "stringValue8763", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8762") @Directive31 @Directive44(argument97 : ["stringValue8764", "stringValue8765"]) { + field9557: String + field9558: String + field9559: [Object1876] +} + +type Object1876 @Directive20(argument58 : "stringValue8767", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8766") @Directive31 @Directive44(argument97 : ["stringValue8768", "stringValue8769"]) { + field9560: String + field9561: String + field9562: Object541 + field9563: String +} + +type Object1877 @Directive20(argument58 : "stringValue8771", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8770") @Directive31 @Directive44(argument97 : ["stringValue8772", "stringValue8773"]) { + field9565: String + field9566: String + field9567: String + field9568: [Object1878] + field9571: String +} + +type Object1878 @Directive20(argument58 : "stringValue8775", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8774") @Directive31 @Directive44(argument97 : ["stringValue8776", "stringValue8777"]) { + field9569: String + field9570: String +} + +type Object1879 @Directive20(argument58 : "stringValue8779", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8778") @Directive31 @Directive44(argument97 : ["stringValue8780", "stringValue8781"]) { + field9573: String + field9574: String +} + +type Object188 @Directive21(argument61 : "stringValue612") @Directive44(argument97 : ["stringValue611"]) { + field1278: String + field1279: String + field1280: String + field1281: Object43 + field1282: [Object172] + field1283: Boolean + field1284: Boolean + field1285: String + field1286: Object43 + field1287: Object43 + field1288: Object43 + field1289: String + field1290: Int +} + +type Object1880 @Directive20(argument58 : "stringValue8783", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8782") @Directive31 @Directive44(argument97 : ["stringValue8784", "stringValue8785"]) { + field9581: String + field9582: Object1872 + field9583: Object1881 +} + +type Object1881 @Directive20(argument58 : "stringValue8787", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8786") @Directive31 @Directive44(argument97 : ["stringValue8788", "stringValue8789"]) { + field9584: Int + field9585: Object1882 + field9588: String + field9589: String + field9590: Object1 +} + +type Object1882 @Directive20(argument58 : "stringValue8791", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8790") @Directive31 @Directive44(argument97 : ["stringValue8792", "stringValue8793"]) { + field9586: Scalar3 + field9587: Scalar3 +} + +type Object1883 @Directive20(argument58 : "stringValue8798", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8797") @Directive31 @Directive44(argument97 : ["stringValue8799", "stringValue8800"]) { + field9599: [Enum378!] +} + +type Object1884 @Directive20(argument58 : "stringValue8806", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8805") @Directive31 @Directive44(argument97 : ["stringValue8807", "stringValue8808"]) { + field9605: String + field9606: String + field9607: String + field9608: Object1883 + field9609: Scalar2 + field9610: Scalar2 + field9611: Scalar2 +} + +type Object1885 @Directive20(argument58 : "stringValue8810", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8809") @Directive31 @Directive44(argument97 : ["stringValue8811", "stringValue8812"]) { + field9613: String + field9614: String + field9615: Int + field9616: String + field9617: Scalar2 + field9618: Scalar2 + field9619: Scalar2 + field9620: [Scalar2!] +} + +type Object1886 implements Interface103 @Directive20(argument58 : "stringValue8822", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue8821") @Directive31 @Directive44(argument97 : ["stringValue8823", "stringValue8824"]) { + field9596: Enum185 + field9597: String + field9598: Object1883 + field9600: String + field9601: [Scalar2] + field9602: Float + field9603: Int + field9604: Object1884 + field9612: Object1885 + field9624: String + field9625: String +} + +type Object1887 implements Interface91 @Directive22(argument62 : "stringValue8825") @Directive31 @Directive44(argument97 : ["stringValue8826", "stringValue8827"]) { + field8331: [String] +} + +type Object1888 implements Interface99 @Directive22(argument62 : "stringValue8831") @Directive31 @Directive44(argument97 : ["stringValue8832", "stringValue8833", "stringValue8834"]) @Directive45(argument98 : ["stringValue8835", "stringValue8836"]) @Directive45(argument98 : ["stringValue8837", "stringValue8838"]) { + field10265: [Object474] @Directive14(argument51 : "stringValue9360") + field10266: Object474 @Directive14(argument51 : "stringValue9361") + field10267: Object474 @Directive14(argument51 : "stringValue9362") + field10268: Object474 @Directive14(argument51 : "stringValue9363") + field10269: Object474 @Directive14(argument51 : "stringValue9364") + field10270: Object474 @Directive14(argument51 : "stringValue9365") + field10271: Object474 @Directive14(argument51 : "stringValue9366") + field10272: Object474 @Directive14(argument51 : "stringValue9367") + field10273: Object474 @Directive14(argument51 : "stringValue9368") + field10274: Object474 @Directive14(argument51 : "stringValue9369") + field8997: Object1778 @deprecated + field9409(argument196: InputObject3): Object1889 @Directive14(argument51 : "stringValue8839") + field9659: Object474 @Directive14(argument51 : "stringValue8874") + field9660(argument197: Int, argument198: [InputObject4]): Object474 @Directive14(argument51 : "stringValue8875") @deprecated + field9661(argument199: [InputObject4]): Object474 @Directive14(argument51 : "stringValue8879") @deprecated + field9662: Object474 @Directive14(argument51 : "stringValue8880") + field9663: Object474 @Directive14(argument51 : "stringValue8881") + field9664: Object474 @Directive14(argument51 : "stringValue8882") + field9665(argument200: String, argument201: String, argument202: Scalar2, argument203: Scalar2, argument204: Scalar2, argument205: Boolean): [Object474] @Directive14(argument51 : "stringValue8883") + field9666: Object474 @Directive14(argument51 : "stringValue8884") + field9667: Object474 @Directive14(argument51 : "stringValue8885") + field9668: Object474 @Directive14(argument51 : "stringValue8886") + field9669: Object474 @Directive14(argument51 : "stringValue8887") + field9670: Object474 @Directive14(argument51 : "stringValue8888") + field9671: Object6137 @deprecated + field9672: [Enum158] + field9673: Enum383 + field9674: String + field9675: Object1896 + field9818: [Object1918] + field9822: [Object474] @Directive14(argument51 : "stringValue9029") + field9823: [Object474] @Directive14(argument51 : "stringValue9030") + field9824: [Object474] @Directive14(argument51 : "stringValue9031") + field9825: [Object474] @Directive14(argument51 : "stringValue9032") + field9826: [Object474] @Directive14(argument51 : "stringValue9033") + field9827: [Object474] @Directive14(argument51 : "stringValue9034") + field9828: [Object474] @deprecated + field9829: Object1919 +} + +type Object1889 implements Interface46 @Directive22(argument62 : "stringValue8843") @Directive31 @Directive44(argument97 : ["stringValue8844", "stringValue8845"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object1890! + field8330: Object1891 + field8332: [Object1536] + field8337: [Object502] @deprecated + field9649: Object1894 +} + +type Object189 @Directive21(argument61 : "stringValue615") @Directive44(argument97 : ["stringValue614"]) { + field1291: String + field1292: String + field1293: String + field1294: [Object190] + field1310: String + field1311: Object191 + field1325: Object135 + field1326: Object135 +} + +type Object1890 implements Interface45 @Directive22(argument62 : "stringValue8846") @Directive31 @Directive44(argument97 : ["stringValue8847", "stringValue8848"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object461 + field2614: String + field9629: String + field9630: String + field9631: Enum380 +} + +type Object1891 implements Interface91 @Directive22(argument62 : "stringValue8852") @Directive31 @Directive44(argument97 : ["stringValue8853", "stringValue8854"]) { + field8331: [String] + field9632: ID! + field9633: Boolean + field9634: Boolean + field9635: [Object1892] + field9642: [Object1892] @deprecated + field9643: Int + field9644: Int + field9645: Int + field9646: Int + field9647: Object1893 +} + +type Object1892 @Directive22(argument62 : "stringValue8855") @Directive31 @Directive44(argument97 : ["stringValue8856", "stringValue8857"]) { + field9636: String + field9637: String + field9638: String + field9639: Int + field9640: Boolean + field9641: Boolean +} + +type Object1893 @Directive22(argument62 : "stringValue8858") @Directive31 @Directive44(argument97 : ["stringValue8859", "stringValue8860"]) { + field9648: String +} + +type Object1894 @Directive22(argument62 : "stringValue8861") @Directive31 @Directive44(argument97 : ["stringValue8862", "stringValue8863"]) @Directive45(argument98 : ["stringValue8864"]) { + field9650: Object1895 + field9655: String @deprecated + field9656: Scalar1 + field9657: [Enum381!] + field9658: Enum382 +} + +type Object1895 @Directive22(argument62 : "stringValue8865") @Directive31 @Directive44(argument97 : ["stringValue8866", "stringValue8867"]) { + field9651: String + field9652: String + field9653: ID + field9654: Boolean +} + +type Object1896 implements Interface36 @Directive22(argument62 : "stringValue8893") @Directive30(argument79 : "stringValue8900") @Directive42(argument96 : ["stringValue8894"]) @Directive44(argument97 : ["stringValue8901"]) @Directive7(argument12 : "stringValue8899", argument13 : "stringValue8897", argument14 : "stringValue8896", argument16 : "stringValue8898", argument17 : "stringValue8895", argument18 : false) { + field2312: ID! @Directive30(argument80 : true) + field9676: String @Directive3(argument3 : "stringValue8902") @Directive30(argument80 : true) + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue8903") + field9678: String @Directive3(argument3 : "stringValue8904") @Directive30(argument80 : true) + field9679: Scalar2 @Directive3(argument3 : "stringValue8905") @Directive30(argument80 : true) + field9680: [Object1897] @Directive3(argument3 : "stringValue8906") @Directive30(argument80 : true) + field9733: Object1915 @Directive3(argument3 : "stringValue9012") @Directive30(argument80 : true) + field9796: Scalar4 @Directive3(argument3 : "stringValue9011") @Directive30(argument80 : true) + field9817: Boolean @Directive3(argument3 : "stringValue9026") @Directive30(argument80 : true) +} + +type Object1897 @Directive42(argument96 : ["stringValue8907", "stringValue8908", "stringValue8909"]) @Directive44(argument97 : ["stringValue8910"]) { + field9681: String + field9682: Enum384 + field9683: Object1898 + field9748: Object1906 + field9762: String + field9763: [Object1907] + field9794: String + field9795: String +} + +type Object1898 @Directive42(argument96 : ["stringValue8914", "stringValue8915", "stringValue8916"]) @Directive44(argument97 : ["stringValue8917"]) { + field9684: Object1899 @Directive18 +} + +type Object1899 @Directive42(argument96 : ["stringValue8918", "stringValue8919", "stringValue8920"]) @Directive44(argument97 : ["stringValue8921"]) { + field9685: Object1900 +} + +type Object19 @Directive21(argument61 : "stringValue171") @Directive44(argument97 : ["stringValue170"]) { + field173: String + field174: String +} + +type Object190 @Directive21(argument61 : "stringValue617") @Directive44(argument97 : ["stringValue616"]) { + field1295: String + field1296: String + field1297: Object176 + field1298: Object44 + field1299: Scalar2 + field1300: String + field1301: Float + field1302: Scalar2 + field1303: Float + field1304: Object59 + field1305: String + field1306: String + field1307: Object176 + field1308: Boolean + field1309: Int +} + +type Object1900 @Directive12 @Directive42(argument96 : ["stringValue8922", "stringValue8923", "stringValue8924"]) @Directive44(argument97 : ["stringValue8925"]) { + field9686: Int + field9687: Scalar2 + field9688: Scalar2 + field9689: Scalar4 + field9690: String + field9691: String + field9692: Object1901 + field9694: Object1778 @Directive4(argument5 : "stringValue8930") + field9695: Object1902 @Directive4(argument5 : "stringValue8931") + field9738: Object1904 + field9743: Boolean + field9744: Boolean + field9745: Object1905 +} + +type Object1901 @Directive42(argument96 : ["stringValue8926", "stringValue8927", "stringValue8928"]) @Directive44(argument97 : ["stringValue8929"]) { + field9693: String +} + +type Object1902 implements Interface36 & Interface97 @Directive12 @Directive22(argument62 : "stringValue8932") @Directive42(argument96 : ["stringValue8933", "stringValue8934"]) @Directive44(argument97 : ["stringValue8939"]) @Directive7(argument11 : "stringValue8938", argument14 : "stringValue8936", argument16 : "stringValue8937", argument17 : "stringValue8935") { + field2312: ID! + field8988: String + field8990: String + field8991: String + field8994: String @Directive3(argument3 : "stringValue8943") + field8995: [Object792!]! @Directive14(argument51 : "stringValue8944") @deprecated + field9003: Int + field9097: String + field9139: String @Directive3(argument3 : "stringValue8946") + field9316: Int + field9317: Int + field9328: Float + field9331: [Object792!]! @Directive3(argument3 : "stringValue8945") + field9696: String @Directive3(argument3 : "stringValue8940") + field9697: Scalar2 @Directive3(argument3 : "stringValue8941") + field9698: Object1778 @Directive4(argument5 : "stringValue8942") + field9699: Boolean + field9700: Boolean + field9701: Boolean + field9702: String + field9703: String + field9704: String + field9705: String + field9706: String + field9707: [String!]! + field9708: Int + field9709: Int + field9710: Int + field9711: Float + field9712: Int + field9713: String + field9714: Object1810 + field9715: Float + field9716: Float + field9717: String + field9718: Int @Directive3(argument3 : "stringValue8947") + field9719: Int @Directive14(argument51 : "stringValue8948") + field9720: Int + field9721: [Object1903!]! + field9732: String + field9733: Object548 @Directive14(argument51 : "stringValue8953") + field9734: Object1837 @Directive14(argument51 : "stringValue8954") + field9735: String @Directive14(argument51 : "stringValue8955") + field9736: Object1837 @Directive14(argument51 : "stringValue8956") + field9737: String @Directive14(argument51 : "stringValue8957") +} + +type Object1903 @Directive42(argument96 : ["stringValue8949", "stringValue8950", "stringValue8951"]) @Directive44(argument97 : ["stringValue8952"]) { + field9722: String + field9723: String + field9724: Object1833 + field9725: Scalar2 + field9726: String + field9727: String + field9728: String + field9729: String + field9730: String + field9731: String +} + +type Object1904 @Directive42(argument96 : ["stringValue8958", "stringValue8959", "stringValue8960"]) @Directive44(argument97 : ["stringValue8961", "stringValue8962"]) { + field9739: Int + field9740: Int + field9741: Int + field9742: Object1837 @Directive13(argument49 : "stringValue8963") +} + +type Object1905 @Directive22(argument62 : "stringValue8964") @Directive31 @Directive44(argument97 : ["stringValue8965"]) { + field9746: Enum383 + field9747: String +} + +type Object1906 @Directive42(argument96 : ["stringValue8966", "stringValue8967", "stringValue8968"]) @Directive44(argument97 : ["stringValue8969"]) { + field9749: String + field9750: Float + field9751: Float + field9752: Float + field9753: String + field9754: Float + field9755: Float + field9756: String + field9757: Float + field9758: Float + field9759: Float + field9760: Float + field9761: Float +} + +type Object1907 @Directive42(argument96 : ["stringValue8970", "stringValue8971", "stringValue8972"]) @Directive44(argument97 : ["stringValue8973"]) { + field9764: String + field9765: Enum385 + field9766: Enum385 @deprecated + field9767: Object1908 + field9772: [Object1910] + field9793: Int +} + +type Object1908 @Directive42(argument96 : ["stringValue8977", "stringValue8978", "stringValue8979"]) @Directive44(argument97 : ["stringValue8980"]) { + field9768: Object1909 +} + +type Object1909 @Directive42(argument96 : ["stringValue8981", "stringValue8982", "stringValue8983"]) @Directive44(argument97 : ["stringValue8984"]) { + field9769: Int + field9770: Scalar3 + field9771: Int +} + +type Object191 @Directive21(argument61 : "stringValue619") @Directive44(argument97 : ["stringValue618"]) { + field1312: Scalar1 + field1313: Object35 + field1314: String + field1315: String + field1316: Scalar1 + field1317: Scalar2 + field1318: String @deprecated + field1319: Enum77 + field1320: Boolean + field1321: String + field1322: String + field1323: Enum90 + field1324: [Enum91] +} + +type Object1910 @Directive42(argument96 : ["stringValue8985", "stringValue8986", "stringValue8987"]) @Directive44(argument97 : ["stringValue8988"]) { + field9773: String + field9774: Enum386 + field9775: Enum386 @deprecated + field9776: Object438 + field9777: Object438 + field9778: Object438 + field9779: Object1911 + field9792: String +} + +type Object1911 @Directive42(argument96 : ["stringValue8992", "stringValue8993", "stringValue8994"]) @Directive44(argument97 : ["stringValue8995"]) { + field9780: Object1912 + field9785: Object1913 +} + +type Object1912 @Directive42(argument96 : ["stringValue8996", "stringValue8997", "stringValue8998"]) @Directive44(argument97 : ["stringValue8999"]) { + field9781: String + field9782: Scalar3 + field9783: Int + field9784: Enum387 +} + +type Object1913 @Directive42(argument96 : ["stringValue9003", "stringValue9004", "stringValue9005"]) @Directive44(argument97 : ["stringValue9006"]) { + field9786: [Object1914] +} + +type Object1914 @Directive42(argument96 : ["stringValue9007", "stringValue9008", "stringValue9009"]) @Directive44(argument97 : ["stringValue9010"]) { + field9787: Enum386 + field9788: Object438 + field9789: Object438 + field9790: Object438 + field9791: String +} + +type Object1915 @Directive42(argument96 : ["stringValue9013", "stringValue9014", "stringValue9015"]) @Directive44(argument97 : ["stringValue9016"]) { + field9797: [Object545]! + field9798: Object521 + field9799: Object545 + field9800: [Object545] + field9801: Object545! + field9802: Enum181 + field9803: Boolean + field9804: Object1916 + field9808: Boolean + field9809: Object1917 +} + +type Object1916 @Directive42(argument96 : ["stringValue9017", "stringValue9018", "stringValue9019"]) @Directive44(argument97 : ["stringValue9020"]) { + field9805: String + field9806: Enum388 + field9807: Object523 +} + +type Object1917 @Directive22(argument62 : "stringValue9024") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9025"]) { + field9810: Boolean @Directive30(argument80 : true) @Directive41 + field9811: Boolean @Directive30(argument80 : true) @Directive41 + field9812: Boolean @Directive30(argument80 : true) @Directive41 + field9813: Boolean @Directive30(argument80 : true) @Directive41 + field9814: Boolean @Directive30(argument80 : true) @Directive41 + field9815: Boolean @Directive30(argument80 : true) @Directive41 + field9816: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object1918 @Directive22(argument62 : "stringValue9027") @Directive31 @Directive44(argument97 : ["stringValue9028"]) { + field9819: String + field9820: String + field9821: String +} + +type Object1919 implements Interface36 @Directive22(argument62 : "stringValue9035") @Directive42(argument96 : ["stringValue9036", "stringValue9037"]) @Directive44(argument97 : ["stringValue9042"]) @Directive7(argument12 : "stringValue9041", argument13 : "stringValue9040", argument14 : "stringValue9039", argument17 : "stringValue9038", argument18 : false) { + field10260: [String!] @Directive3(argument3 : "stringValue9355") + field10261: Scalar1 @Directive3(argument3 : "stringValue9356") @deprecated + field10262: Scalar1 @Directive3(argument3 : "stringValue9357") @deprecated + field10263: Enum382 @Directive3(argument3 : "stringValue9358") + field10264: Object1925 @Directive3(argument3 : "stringValue9359") + field2312: ID! + field9830: String @Directive3(argument3 : "stringValue9043") + field9831: Object1920 @Directive3(argument3 : "stringValue9044") @Directive40 +} + +type Object192 @Directive21(argument61 : "stringValue624") @Directive44(argument97 : ["stringValue623"]) { + field1327: Enum92 + field1328: [Object193] +} + +type Object1920 @Directive42(argument96 : ["stringValue9045", "stringValue9046", "stringValue9047"]) @Directive44(argument97 : ["stringValue9048"]) { + field10234: Object1981 + field10238: Object1982 + field10240: Object1983 + field9832: String + field9833: Object1921 + field9856: Object1924 + field9917: Object1935 + field9919: Object1936 + field9963: Object1948 +} + +type Object1921 @Directive42(argument96 : ["stringValue9049", "stringValue9050", "stringValue9051"]) @Directive44(argument97 : ["stringValue9052"]) { + field9834: Boolean + field9835: [Object1922] + field9853: Boolean + field9854: Object1431 + field9855: Object1431 +} + +type Object1922 @Directive42(argument96 : ["stringValue9053", "stringValue9054", "stringValue9055"]) @Directive44(argument97 : ["stringValue9056"]) { + field9836: Boolean + field9837: String + field9838: Object1431 + field9839: Object1431 + field9840: Object1431 + field9841: String + field9842: String + field9843: String + field9844: Boolean + field9845: [Object1923] + field9848: String + field9849: Enum330 + field9850: Object1431 + field9851: String + field9852: Object1431 +} + +type Object1923 @Directive42(argument96 : ["stringValue9057", "stringValue9058", "stringValue9059"]) @Directive44(argument97 : ["stringValue9060"]) { + field9846: String + field9847: String +} + +type Object1924 @Directive42(argument96 : ["stringValue9061", "stringValue9062", "stringValue9063"]) @Directive44(argument97 : ["stringValue9064"]) { + field9857: Object1925 + field9909: Object1934 + field9914: String + field9915: Boolean + field9916: [Object1925] +} + +type Object1925 @Directive42(argument96 : ["stringValue9065", "stringValue9066", "stringValue9067"]) @Directive44(argument97 : ["stringValue9068"]) { + field9858: Scalar2 + field9859: String + field9860: String + field9861: Enum330 + field9862: String + field9863: Scalar2 + field9864: Object1926 + field9875: Boolean + field9876: Boolean + field9877: Boolean + field9878: Boolean + field9879: String + field9880: Object1928 + field9887: Object1929 + field9895: Boolean + field9896: Boolean + field9897: Object1931 + field9901: Object1933 +} + +type Object1926 @Directive42(argument96 : ["stringValue9069", "stringValue9070", "stringValue9071"]) @Directive44(argument97 : ["stringValue9072"]) { + field9865: String + field9866: String + field9867: String + field9868: Object1927 + field9873: String + field9874: Boolean +} + +type Object1927 @Directive42(argument96 : ["stringValue9073", "stringValue9074", "stringValue9075"]) @Directive44(argument97 : ["stringValue9076"]) { + field9869: Boolean + field9870: Enum389 + field9871: String + field9872: Enum390 +} + +type Object1928 @Directive42(argument96 : ["stringValue9082", "stringValue9083", "stringValue9084"]) @Directive44(argument97 : ["stringValue9085"]) { + field9881: String + field9882: String + field9883: String + field9884: String + field9885: String + field9886: String +} + +type Object1929 @Directive42(argument96 : ["stringValue9086", "stringValue9087", "stringValue9088"]) @Directive44(argument97 : ["stringValue9089"]) { + field9888: String + field9889: Boolean + field9890: [Object1930] +} + +type Object193 @Directive21(argument61 : "stringValue627") @Directive44(argument97 : ["stringValue626"]) { + field1329: String + field1330: String + field1331: [Object178] + field1332: Object191 +} + +type Object1930 @Directive42(argument96 : ["stringValue9090", "stringValue9091", "stringValue9092"]) @Directive44(argument97 : ["stringValue9093"]) { + field9891: Object1430 + field9892: Object1430 + field9893: Int + field9894: String +} + +type Object1931 @Directive42(argument96 : ["stringValue9094", "stringValue9095", "stringValue9096"]) @Directive44(argument97 : ["stringValue9097"]) { + field9898: [Object1932] +} + +type Object1932 @Directive42(argument96 : ["stringValue9098", "stringValue9099", "stringValue9100"]) @Directive44(argument97 : ["stringValue9101"]) { + field9899: String + field9900: String +} + +type Object1933 @Directive42(argument96 : ["stringValue9102", "stringValue9103", "stringValue9104"]) @Directive44(argument97 : ["stringValue9105"]) { + field9902: String + field9903: String + field9904: String + field9905: Enum391 + field9906: String + field9907: String + field9908: String +} + +type Object1934 @Directive42(argument96 : ["stringValue9109", "stringValue9110", "stringValue9111"]) @Directive44(argument97 : ["stringValue9112"]) { + field9910: Boolean + field9911: Boolean + field9912: Boolean + field9913: Boolean +} + +type Object1935 @Directive42(argument96 : ["stringValue9113", "stringValue9114", "stringValue9115"]) @Directive44(argument97 : ["stringValue9116"]) { + field9918: Boolean +} + +type Object1936 @Directive42(argument96 : ["stringValue9117", "stringValue9118", "stringValue9119"]) @Directive44(argument97 : ["stringValue9120"]) { + field9920: Object1937 + field9934: [Object1941] +} + +type Object1937 @Directive42(argument96 : ["stringValue9121", "stringValue9122", "stringValue9123"]) @Directive44(argument97 : ["stringValue9124"]) { + field9921: Enum382 + field9922: String + field9923: Object1938 + field9927: Object1939 + field9930: Object1940 + field9933: [String] +} + +type Object1938 @Directive42(argument96 : ["stringValue9125", "stringValue9126", "stringValue9127"]) @Directive44(argument97 : ["stringValue9128"]) { + field9924: Int + field9925: Int + field9926: Scalar1 +} + +type Object1939 @Directive42(argument96 : ["stringValue9129", "stringValue9130", "stringValue9131"]) @Directive44(argument97 : ["stringValue9132"]) { + field9928: Int + field9929: Enum392 +} + +type Object194 @Directive21(argument61 : "stringValue630") @Directive44(argument97 : ["stringValue629"]) { + field1333: String + field1334: [Object195] +} + +type Object1940 @Directive42(argument96 : ["stringValue9136", "stringValue9137", "stringValue9138"]) @Directive44(argument97 : ["stringValue9139"]) { + field9931: Int + field9932: Int +} + +type Object1941 @Directive42(argument96 : ["stringValue9140", "stringValue9141", "stringValue9142"]) @Directive44(argument97 : ["stringValue9143"]) { + field9935: Enum382 + field9936: String + field9937: String + field9938: String + field9939: String + field9940: Object1942 + field9943: Object1943 + field9948: Object1944 + field9959: Object1937 + field9960: Object1947 +} + +type Object1942 @Directive42(argument96 : ["stringValue9144", "stringValue9145", "stringValue9146"]) @Directive44(argument97 : ["stringValue9147"]) { + field9941: String + field9942: String +} + +type Object1943 @Directive42(argument96 : ["stringValue9148", "stringValue9149", "stringValue9150"]) @Directive44(argument97 : ["stringValue9151"]) { + field9944: String + field9945: Scalar2 + field9946: Scalar2 + field9947: Scalar2 +} + +type Object1944 @Directive42(argument96 : ["stringValue9152", "stringValue9153", "stringValue9154"]) @Directive44(argument97 : ["stringValue9155"]) { + field9949: String + field9950: Object1945 +} + +type Object1945 @Directive42(argument96 : ["stringValue9156", "stringValue9157", "stringValue9158"]) @Directive44(argument97 : ["stringValue9159"]) { + field9951: String + field9952: String + field9953: String + field9954: [Object1946] + field9958: String +} + +type Object1946 @Directive42(argument96 : ["stringValue9160", "stringValue9161", "stringValue9162"]) @Directive44(argument97 : ["stringValue9163"]) { + field9955: String + field9956: String + field9957: String +} + +type Object1947 @Directive42(argument96 : ["stringValue9164", "stringValue9165", "stringValue9166"]) @Directive44(argument97 : ["stringValue9167"]) { + field9961: String + field9962: String +} + +type Object1948 @Directive42(argument96 : ["stringValue9168", "stringValue9169", "stringValue9170"]) @Directive44(argument97 : ["stringValue9171"]) { + field10230: String + field10231: String + field10232: [String] + field10233: Enum403 + field9964: String + field9965: String + field9966: String + field9967: String + field9968: Scalar2 + field9969: Object438 + field9970: Boolean + field9971: Scalar2 + field9972: Scalar4 + field9973: Object1949 +} + +type Object1949 @Directive42(argument96 : ["stringValue9172", "stringValue9173", "stringValue9174"]) @Directive44(argument97 : ["stringValue9175"]) { + field10077: Object1961 + field10110: Object1966 + field10130: Object1969 + field10157: Object1972 + field10180: Object1974 + field10188: Object1975 + field10210: Object1979 + field10222: Object1980 + field9974: Enum384 + field9975: Object1950 +} + +type Object195 @Directive21(argument61 : "stringValue632") @Directive44(argument97 : ["stringValue631"]) { + field1335: String + field1336: String + field1337: String + field1338: String + field1339: String + field1340: String + field1341: String + field1342: String + field1343: String + field1344: String +} + +type Object1950 @Directive42(argument96 : ["stringValue9176", "stringValue9177", "stringValue9178"]) @Directive44(argument97 : ["stringValue9179"]) { + field10000: String + field10001: String + field10002: String + field10003: String + field10004: Object1953 + field10017: String + field10018: Scalar4 + field10019: String + field10020: Boolean + field10021: Scalar4 + field10022: Boolean + field10023: Boolean + field10024: Boolean + field10025: Boolean + field10026: Float + field10027: Int + field10028: Float + field10029: Boolean + field10030: Scalar1 + field10031: Object1954 + field10049: String + field10050: Int + field10051: Enum396 + field10052: Scalar3 + field10053: Scalar2 + field10054: Scalar2 + field10055: Object1955 + field10057: Int + field10058: Float + field10059: Object1956 + field10061: Object1957 + field10064: Scalar2 + field10065: Boolean + field10066: Object1958 + field10068: Object1959 + field10070: Object1960 + field10072: Boolean + field10073: String + field10074: Boolean + field10075: Boolean + field10076: Scalar2 + field9976: String + field9977: Scalar2 + field9978: Scalar3 + field9979: Scalar3 + field9980: Scalar2 + field9981: Int + field9982: Boolean + field9983: [String] + field9984: String + field9985: Object1951 + field9990: [String] + field9991: Float + field9992: String + field9993: Int @deprecated + field9994: Int + field9995: Enum395 + field9996: Float + field9997: Float + field9998: Float + field9999: Float +} + +type Object1951 @Directive42(argument96 : ["stringValue9180", "stringValue9181", "stringValue9182"]) @Directive44(argument97 : ["stringValue9183"]) { + field9986: Enum393 + field9987: Object1952 +} + +type Object1952 @Directive42(argument96 : ["stringValue9186", "stringValue9187", "stringValue9188"]) @Directive44(argument97 : ["stringValue9189"]) { + field9988: Enum394 + field9989: Float +} + +type Object1953 @Directive42(argument96 : ["stringValue9194", "stringValue9195", "stringValue9196"]) @Directive44(argument97 : ["stringValue9197"]) { + field10005: Float + field10006: Scalar2 + field10007: Float + field10008: Scalar2 + field10009: String + field10010: Scalar2 + field10011: Scalar2 + field10012: Scalar2 + field10013: Scalar2 + field10014: Scalar2 + field10015: Scalar2 + field10016: Scalar2 +} + +type Object1954 @Directive42(argument96 : ["stringValue9198", "stringValue9199", "stringValue9200"]) @Directive44(argument97 : ["stringValue9201"]) { + field10032: String + field10033: String + field10034: Scalar4 + field10035: Scalar4 + field10036: Int + field10037: Boolean + field10038: Int + field10039: Boolean + field10040: Boolean + field10041: String + field10042: Scalar2 + field10043: Boolean + field10044: Object438 + field10045: Boolean + field10046: Object438 + field10047: String + field10048: Object438 +} + +type Object1955 @Directive42(argument96 : ["stringValue9204", "stringValue9205", "stringValue9206"]) @Directive44(argument97 : ["stringValue9207"]) { + field10056: String +} + +type Object1956 @Directive42(argument96 : ["stringValue9208", "stringValue9209", "stringValue9210"]) @Directive44(argument97 : ["stringValue9211"]) { + field10060: String +} + +type Object1957 @Directive42(argument96 : ["stringValue9212", "stringValue9213", "stringValue9214"]) @Directive44(argument97 : ["stringValue9215"]) { + field10062: Enum397 + field10063: Boolean +} + +type Object1958 @Directive42(argument96 : ["stringValue9218", "stringValue9219", "stringValue9220"]) @Directive44(argument97 : ["stringValue9221"]) { + field10067: Object438 +} + +type Object1959 @Directive42(argument96 : ["stringValue9222", "stringValue9223", "stringValue9224"]) @Directive44(argument97 : ["stringValue9225"]) { + field10069: Boolean +} + +type Object196 @Directive21(argument61 : "stringValue635") @Directive44(argument97 : ["stringValue634"]) { + field1345: String + field1346: String + field1347: String + field1348: Object35 + field1349: Object43 +} + +type Object1960 @Directive42(argument96 : ["stringValue9226", "stringValue9227", "stringValue9228"]) @Directive44(argument97 : ["stringValue9229"]) { + field10071: Boolean +} + +type Object1961 @Directive42(argument96 : ["stringValue9230", "stringValue9231", "stringValue9232"]) @Directive44(argument97 : ["stringValue9233"]) { + field10078: Scalar2 + field10079: Scalar2 + field10080: Int + field10081: Scalar4 + field10082: Scalar4 + field10083: String + field10084: Int + field10085: String + field10086: String + field10087: Object1962 + field10096: Scalar2 + field10097: Object1963 + field10100: Boolean + field10101: String + field10102: Int + field10103: Enum383 + field10104: Object1964 + field10106: Object1965 +} + +type Object1962 @Directive42(argument96 : ["stringValue9234", "stringValue9235", "stringValue9236"]) @Directive44(argument97 : ["stringValue9237"]) { + field10088: Scalar2 + field10089: Scalar2 + field10090: String + field10091: String + field10092: Scalar2 + field10093: String + field10094: String + field10095: Boolean +} + +type Object1963 @Directive42(argument96 : ["stringValue9238", "stringValue9239", "stringValue9240"]) @Directive44(argument97 : ["stringValue9241"]) { + field10098: Enum398 + field10099: String +} + +type Object1964 @Directive42(argument96 : ["stringValue9244", "stringValue9245", "stringValue9246"]) @Directive44(argument97 : ["stringValue9247"]) { + field10105: String +} + +type Object1965 @Directive42(argument96 : ["stringValue9248", "stringValue9249", "stringValue9250"]) @Directive44(argument97 : ["stringValue9251"]) { + field10107: Int + field10108: Int + field10109: Int +} + +type Object1966 @Directive42(argument96 : ["stringValue9252", "stringValue9253", "stringValue9254"]) @Directive44(argument97 : ["stringValue9255"]) { + field10111: [Object1967] + field10124: String + field10125: String + field10126: Enum400 + field10127: String + field10128: String + field10129: String +} + +type Object1967 @Directive42(argument96 : ["stringValue9256", "stringValue9257", "stringValue9258"]) @Directive44(argument97 : ["stringValue9259"]) { + field10112: String + field10113: Object438 + field10114: String + field10115: Enum399 + field10116: String + field10117: Scalar2 + field10118: Object1968 +} + +type Object1968 @Directive42(argument96 : ["stringValue9262", "stringValue9263", "stringValue9264"]) @Directive44(argument97 : ["stringValue9265"]) { + field10119: String + field10120: String + field10121: String + field10122: Scalar3 + field10123: Scalar3 +} + +type Object1969 @Directive42(argument96 : ["stringValue9269", "stringValue9270", "stringValue9271"]) @Directive44(argument97 : ["stringValue9272"]) { + field10131: Scalar2 + field10132: String + field10133: Enum401 + field10134: Scalar2 + field10135: Scalar2 + field10136: String + field10137: [Object1970] + field10140: Enum402 + field10141: String + field10142: String + field10143: Scalar4 + field10144: Scalar4 + field10145: String + field10146: String + field10147: String + field10148: Boolean + field10149: Object1971 + field10151: Scalar2 + field10152: String + field10153: Boolean + field10154: String + field10155: Object1950 + field10156: Boolean +} + +type Object197 @Directive21(argument61 : "stringValue640") @Directive44(argument97 : ["stringValue639"]) { + field1350: String + field1351: String + field1352: String + field1353: String + field1354: [Object198] + field1369: String + field1370: String +} + +type Object1970 @Directive42(argument96 : ["stringValue9277", "stringValue9278", "stringValue9279"]) @Directive44(argument97 : ["stringValue9280"]) { + field10138: String + field10139: Object438 +} + +type Object1971 @Directive42(argument96 : ["stringValue9283", "stringValue9284", "stringValue9285"]) @Directive44(argument97 : ["stringValue9286"]) { + field10150: Enum398 +} + +type Object1972 @Directive42(argument96 : ["stringValue9287", "stringValue9288", "stringValue9289"]) @Directive44(argument97 : ["stringValue9290"]) { + field10158: Scalar2 + field10159: Scalar2 + field10160: String + field10161: String + field10162: String + field10163: Enum384 + field10164: Object438 + field10165: Object1973 + field10178: String + field10179: String +} + +type Object1973 @Directive42(argument96 : ["stringValue9291", "stringValue9292", "stringValue9293"]) @Directive44(argument97 : ["stringValue9294"]) { + field10166: Scalar2 + field10167: String + field10168: String + field10169: String + field10170: Scalar4 + field10171: Int + field10172: Scalar2 + field10173: Scalar2 + field10174: Scalar2 + field10175: Scalar2 + field10176: String + field10177: Scalar2 +} + +type Object1974 @Directive42(argument96 : ["stringValue9295", "stringValue9296", "stringValue9297"]) @Directive44(argument97 : ["stringValue9298"]) { + field10181: [Object1967] + field10182: String + field10183: String + field10184: Enum400 + field10185: Scalar2 + field10186: String + field10187: String +} + +type Object1975 @Directive42(argument96 : ["stringValue9299", "stringValue9300", "stringValue9301"]) @Directive44(argument97 : ["stringValue9302"]) { + field10189: Scalar2 + field10190: Scalar2 + field10191: String + field10192: String + field10193: String + field10194: Int + field10195: Enum401 + field10196: Scalar1 + field10197: [Object1970] + field10198: String + field10199: Scalar4 + field10200: Object1976 + field10203: String + field10204: String + field10205: Boolean + field10206: Object1977 +} + +type Object1976 @Directive42(argument96 : ["stringValue9303", "stringValue9304", "stringValue9305"]) @Directive44(argument97 : ["stringValue9306"]) { + field10201: Enum398 + field10202: String +} + +type Object1977 @Directive42(argument96 : ["stringValue9307", "stringValue9308", "stringValue9309"]) @Directive44(argument97 : ["stringValue9310"]) { + field10207: Object1978 + field10209: String +} + +type Object1978 @Directive42(argument96 : ["stringValue9311", "stringValue9312", "stringValue9313"]) @Directive44(argument97 : ["stringValue9314"]) { + field10208: String +} + +type Object1979 @Directive42(argument96 : ["stringValue9315", "stringValue9316", "stringValue9317"]) @Directive44(argument97 : ["stringValue9318"]) { + field10211: Enum384 + field10212: String + field10213: Int + field10214: Scalar2 + field10215: Scalar2 + field10216: String + field10217: String + field10218: [Object1970] + field10219: Scalar1 + field10220: String + field10221: Scalar4 +} + +type Object198 @Directive21(argument61 : "stringValue642") @Directive44(argument97 : ["stringValue641"]) { + field1355: [Object199] + field1363: Enum93 + field1364: Enum94 + field1365: String + field1366: String + field1367: String + field1368: String +} + +type Object1980 @Directive42(argument96 : ["stringValue9319", "stringValue9320", "stringValue9321"]) @Directive44(argument97 : ["stringValue9322"]) { + field10223: String + field10224: String + field10225: String + field10226: [Object1970] + field10227: Int + field10228: Scalar2 + field10229: Scalar4 +} + +type Object1981 @Directive42(argument96 : ["stringValue9325", "stringValue9326", "stringValue9327"]) @Directive44(argument97 : ["stringValue9328"]) { + field10235: String + field10236: String + field10237: Scalar2 +} + +type Object1982 @Directive42(argument96 : ["stringValue9329", "stringValue9330", "stringValue9331"]) @Directive44(argument97 : ["stringValue9332"]) { + field10239: String +} + +type Object1983 @Directive42(argument96 : ["stringValue9333", "stringValue9334", "stringValue9335"]) @Directive44(argument97 : ["stringValue9336"]) { + field10241: Object1984 + field10250: Object1987 +} + +type Object1984 @Directive42(argument96 : ["stringValue9337", "stringValue9338", "stringValue9339"]) @Directive44(argument97 : ["stringValue9340"]) { + field10242: Object1985 + field10245: String + field10246: Object1986 +} + +type Object1985 @Directive42(argument96 : ["stringValue9341", "stringValue9342", "stringValue9343"]) @Directive44(argument97 : ["stringValue9344"]) { + field10243: Enum404 + field10244: String +} + +type Object1986 @Directive42(argument96 : ["stringValue9347", "stringValue9348", "stringValue9349"]) @Directive44(argument97 : ["stringValue9350"]) { + field10247: [Object1430!] + field10248: Object1430 + field10249: Boolean +} + +type Object1987 @Directive22(argument62 : "stringValue9351") @Directive31 @Directive44(argument97 : ["stringValue9352"]) { + field10251: [Object1988!] +} + +type Object1988 @Directive22(argument62 : "stringValue9353") @Directive31 @Directive44(argument97 : ["stringValue9354"]) { + field10252: String + field10253: String + field10254: Boolean + field10255: Boolean + field10256: String + field10257: String + field10258: String + field10259: String +} + +type Object1989 implements Interface92 @Directive42(argument96 : ["stringValue9373"]) @Directive44(argument97 : ["stringValue9379"]) @Directive8(argument20 : "stringValue9378", argument21 : "stringValue9375", argument23 : "stringValue9377", argument24 : "stringValue9374", argument25 : "stringValue9376") { + field8384: Object753! + field8385: [Object1990] +} + +type Object199 @Directive21(argument61 : "stringValue644") @Directive44(argument97 : ["stringValue643"]) { + field1356: String + field1357: Union6 + field1358: Boolean @deprecated + field1359: Boolean @deprecated + field1360: String + field1361: String + field1362: Boolean +} + +type Object1990 implements Interface93 @Directive42(argument96 : ["stringValue9380"]) @Directive44(argument97 : ["stringValue9381"]) { + field8386: String! + field8999: Object1902 +} + +type Object1991 implements Interface92 @Directive42(argument96 : ["stringValue9382"]) @Directive44(argument97 : ["stringValue9388"]) @Directive8(argument20 : "stringValue9387", argument21 : "stringValue9384", argument23 : "stringValue9386", argument24 : "stringValue9383", argument25 : "stringValue9385") { + field8384: Object753! + field8385: [Object1990] +} + +type Object1992 implements Interface36 @Directive22(argument62 : "stringValue9390") @Directive42(argument96 : ["stringValue9391", "stringValue9392"]) @Directive44(argument97 : ["stringValue9398"]) @Directive7(argument11 : "stringValue9397", argument13 : "stringValue9395", argument14 : "stringValue9394", argument16 : "stringValue9396", argument17 : "stringValue9393", argument18 : false) { + field10277: Float + field10278: String + field10279: Float + field10280: String + field10281: Float + field10282: String + field2312: ID! +} + +type Object1993 implements Interface92 @Directive42(argument96 : ["stringValue9404"]) @Directive44(argument97 : ["stringValue9410"]) @Directive8(argument20 : "stringValue9409", argument21 : "stringValue9406", argument23 : "stringValue9408", argument24 : "stringValue9405", argument25 : null, argument27 : "stringValue9407") { + field8384: Object753! + field8385: [Object1994] +} + +type Object1994 implements Interface93 @Directive42(argument96 : ["stringValue9411"]) @Directive44(argument97 : ["stringValue9412"]) { + field8386: String! + field8999: Object1995 +} + +type Object1995 @Directive12 @Directive42(argument96 : ["stringValue9413", "stringValue9414", "stringValue9415"]) @Directive44(argument97 : ["stringValue9416"]) { + field10287: String @Directive3(argument3 : "stringValue9417") + field10288: Scalar4 @Directive3(argument3 : "stringValue9418") + field10289: String @Directive3(argument3 : "stringValue9419") + field10290: Scalar4 @Directive3(argument3 : "stringValue9420") + field10291: String @Directive3(argument3 : "stringValue9421") + field10292: String @Directive3(argument3 : "stringValue9422") + field10293: Boolean + field10294: Object1996 +} + +type Object1996 @Directive42(argument96 : ["stringValue9423", "stringValue9424", "stringValue9425"]) @Directive44(argument97 : ["stringValue9426"]) { + field10295: String + field10296: String +} + +type Object1997 implements Interface92 @Directive42(argument96 : ["stringValue9427"]) @Directive44(argument97 : ["stringValue9434"]) @Directive8(argument20 : "stringValue9433", argument21 : "stringValue9429", argument23 : "stringValue9432", argument24 : "stringValue9428", argument25 : "stringValue9430", argument27 : "stringValue9431") { + field8384: Object753! + field8385: [Object1998] +} + +type Object1998 implements Interface93 @Directive42(argument96 : ["stringValue9435"]) @Directive44(argument97 : ["stringValue9436"]) { + field8386: String! + field8999: Object1787 +} + +type Object1999 implements Interface92 @Directive42(argument96 : ["stringValue9437"]) @Directive44(argument97 : ["stringValue9443"]) @Directive8(argument21 : "stringValue9439", argument23 : "stringValue9442", argument24 : "stringValue9438", argument25 : "stringValue9440", argument27 : "stringValue9441") { + field8384: Object753! + field8385: [Object2000] +} + +type Object2 @Directive20(argument58 : "stringValue18", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue16") @Directive34 @Directive42(argument96 : ["stringValue17"]) @Directive44(argument97 : ["stringValue19", "stringValue20"]) { + field10: String @Directive41 + field11: String @Directive41 + field12: String @Directive41 + field13: String @Directive41 + field14: String @Directive41 + field15: String @Directive41 + field16: [String!] @Directive41 + field7: String @Directive41 + field8: String @Directive41 + field9: Enum1 @Directive41 +} + +type Object20 @Directive21(argument61 : "stringValue180") @Directive44(argument97 : ["stringValue179"]) { + field178: [String] +} + +type Object200 @Directive21(argument61 : "stringValue649") @Directive44(argument97 : ["stringValue648"]) { + field1371: String! @deprecated + field1372: Object201 + field1377: Object203 + field1405: String! +} + +type Object2000 implements Interface93 @Directive42(argument96 : ["stringValue9444"]) @Directive44(argument97 : ["stringValue9445"]) { + field8386: String! + field8999: Object2001 +} + +type Object2001 @Directive12 @Directive42(argument96 : ["stringValue9446", "stringValue9447", "stringValue9448"]) @Directive44(argument97 : ["stringValue9449"]) { + field10300: String + field10301: String + field10302(argument255: String, argument256: Int, argument257: String, argument258: Int): Object2002 @Directive5(argument7 : "stringValue9450") +} + +type Object2002 implements Interface92 @Directive42(argument96 : ["stringValue9451"]) @Directive44(argument97 : ["stringValue9452"]) { + field8384: Object753! + field8385: [Object2003] +} + +type Object2003 implements Interface93 @Directive42(argument96 : ["stringValue9453"]) @Directive44(argument97 : ["stringValue9454"]) { + field8386: String! + field8999: Object2004 +} + +type Object2004 @Directive12 @Directive42(argument96 : ["stringValue9455", "stringValue9456", "stringValue9457"]) @Directive44(argument97 : ["stringValue9458"]) { + field10303: Object1778 @Directive4(argument5 : "stringValue9459") +} + +type Object2005 implements Interface36 @Directive22(argument62 : "stringValue9462") @Directive30(argument79 : "stringValue9465") @Directive44(argument97 : ["stringValue9463", "stringValue9464"]) @Directive7(argument14 : "stringValue9467", argument17 : "stringValue9466", argument18 : false) { + field10306: Object2006 @Directive3(argument3 : "stringValue9468") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2006 @Directive20(argument58 : "stringValue9472", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue9469") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9470", "stringValue9471"]) { + field10307: Boolean! @Directive30(argument80 : true) @Directive41 + field10308: Boolean! @Directive30(argument80 : true) @Directive41 + field10309: Enum407 @Directive30(argument80 : true) @Directive41 + field10310: String @Directive30(argument80 : true) @Directive41 + field10311: Int @Directive30(argument80 : true) @Directive41 + field10312: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object2007 implements Interface92 @Directive42(argument96 : ["stringValue9478"]) @Directive44(argument97 : ["stringValue9479"]) { + field8384: Object753! + field8385: [Object2008] +} + +type Object2008 implements Interface93 @Directive42(argument96 : ["stringValue9480"]) @Directive44(argument97 : ["stringValue9481"]) { + field8386: String! + field8999: Object1788 +} + +type Object2009 implements Interface92 @Directive22(argument62 : "stringValue9488") @Directive44(argument97 : ["stringValue9489"]) @Directive8(argument20 : "stringValue9487", argument21 : "stringValue9483", argument23 : "stringValue9486", argument24 : "stringValue9482", argument25 : "stringValue9484", argument27 : "stringValue9485") { + field8384: Object753! + field8385: [Object2010] +} + +type Object201 @Directive21(argument61 : "stringValue651") @Directive44(argument97 : ["stringValue650"]) { + field1373: String + field1374: String + field1375: [Object202] +} + +type Object2010 implements Interface93 @Directive22(argument62 : "stringValue9490") @Directive44(argument97 : ["stringValue9491"]) { + field8386: String! + field8999: Object2011 +} + +type Object2011 implements Interface36 @Directive22(argument62 : "stringValue9492") @Directive42(argument96 : ["stringValue9493", "stringValue9494"]) @Directive44(argument97 : ["stringValue9500"]) @Directive7(argument12 : "stringValue9498", argument13 : "stringValue9497", argument14 : "stringValue9496", argument16 : "stringValue9499", argument17 : "stringValue9495", argument18 : false) { + field10316: String @Directive40 + field10317: String @Directive41 + field10318: String @Directive40 + field10319: String @Directive40 + field10320: String @Directive41 + field10321: String @Directive40 + field10322: Int @Directive41 + field10323: Scalar4 @Directive41 + field10324: Int + field10325: [Object2012] @Directive40 + field2312: ID! @Directive40 + field8994: String @Directive41 + field9087: Scalar4 @Directive41 + field9142: Scalar4 @Directive41 +} + +type Object2012 @Directive42(argument96 : ["stringValue9501", "stringValue9502", "stringValue9503"]) @Directive44(argument97 : ["stringValue9504"]) { + field10326: Int + field10327: Int + field10328: String + field10329: String + field10330: String +} + +type Object2013 implements Interface92 @Directive22(argument62 : "stringValue9506") @Directive44(argument97 : ["stringValue9507"]) { + field8384: Object753! + field8385: [Object2014] +} + +type Object2014 implements Interface93 @Directive22(argument62 : "stringValue9508") @Directive44(argument97 : ["stringValue9509"]) { + field8386: String! + field8999: Object2015 +} + +type Object2015 @Directive42(argument96 : ["stringValue9510", "stringValue9511", "stringValue9512"]) @Directive44(argument97 : ["stringValue9513"]) { + field10332: Enum408 + field10333: Object1837 + field10334: Object1837 + field10335: String @deprecated + field10336: String @deprecated + field10337: Object1837 + field10338: String + field10339: Object1837 + field10340: Enum409 + field10341: String + field10342: String + field10343: Enum410 @deprecated + field10344: String + field10345: Enum241 + field10346: Object2016 + field10357: Enum364 + field10358: Object2019 + field10366: Enum10 +} + +type Object2016 @Directive20(argument58 : "stringValue9524", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue9523") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue9525", "stringValue9526"]) { + field10347: Union167 + field10356: Enum411 +} + +type Object2017 @Directive20(argument58 : "stringValue9531", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue9530") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue9532", "stringValue9533"]) { + field10348: [Object2018] + field10353: String + field10354: String + field10355: String +} + +type Object2018 @Directive20(argument58 : "stringValue9535", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue9534") @Directive31 @Directive44(argument97 : ["stringValue9536", "stringValue9537"]) { + field10349: String + field10350: String + field10351: String + field10352: String +} + +type Object2019 @Directive42(argument96 : ["stringValue9542", "stringValue9543", "stringValue9544"]) @Directive44(argument97 : ["stringValue9545", "stringValue9546"]) @Directive45(argument98 : ["stringValue9547"]) { + field10359: Object2020 + field10362: Enum408 + field10363: Object1837 + field10364: Int + field10365: String @deprecated +} + +type Object202 @Directive21(argument61 : "stringValue653") @Directive44(argument97 : ["stringValue652"]) { + field1376: String +} + +type Object2020 @Directive42(argument96 : ["stringValue9548", "stringValue9549", "stringValue9550"]) @Directive44(argument97 : ["stringValue9551"]) { + field10360: Scalar3 + field10361: Scalar3 +} + +type Object2021 @Directive22(argument62 : "stringValue9553") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9554", "stringValue9555"]) { + field10368: Boolean! @Directive30(argument80 : true) @Directive41 + field10369: Boolean @Directive30(argument80 : true) @Directive41 + field10370: Union168! @Directive30(argument80 : true) @Directive41 + field10375: String @Directive30(argument80 : true) @Directive41 + field10376: Enum408! @Directive30(argument80 : true) @Directive41 + field10377: String @Directive30(argument80 : true) @Directive41 + field10378: [Object2023!] @Directive30(argument80 : true) @Directive41 + field10381: [Object2024!] @Directive30(argument80 : true) @Directive41 + field10386: [Enum412!] @Directive30(argument80 : true) @Directive41 +} + +type Object2022 @Directive22(argument62 : "stringValue9558") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9559"]) { + field10371: String @Directive30(argument80 : true) @Directive41 + field10372: String @Directive30(argument80 : true) @Directive41 + field10373: String @Directive30(argument80 : true) @Directive41 + field10374: String @Directive30(argument80 : true) @Directive41 +} + +type Object2023 @Directive22(argument62 : "stringValue9560") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9561"]) { + field10379: String @Directive30(argument80 : true) @Directive41 + field10380: String @Directive30(argument80 : true) @Directive41 +} + +type Object2024 @Directive22(argument62 : "stringValue9562") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9563"]) { + field10382: String @Directive30(argument80 : true) @Directive41 + field10383: Object2025 @Directive30(argument80 : true) @Directive41 +} + +type Object2025 @Directive22(argument62 : "stringValue9564") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9565"]) { + field10384: Float @Directive30(argument80 : true) @Directive41 + field10385: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2026 implements Interface36 @Directive22(argument62 : "stringValue9569") @Directive30(argument79 : "stringValue9568") @Directive44(argument97 : ["stringValue9574", "stringValue9575"]) @Directive7(argument13 : "stringValue9571", argument14 : "stringValue9572", argument16 : "stringValue9573", argument17 : "stringValue9570") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10388: Scalar2 @Directive30(argument80 : true) @Directive41 + field10389: Scalar2 @Directive30(argument80 : true) @Directive41 + field10390: String @Directive30(argument80 : true) @Directive41 + field10391: String @Directive30(argument80 : true) @Directive41 + field10392: Object2027 @Directive18 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2027 implements Interface36 @Directive22(argument62 : "stringValue9577") @Directive30(argument79 : "stringValue9576") @Directive44(argument97 : ["stringValue9582", "stringValue9583"]) @Directive7(argument13 : "stringValue9579", argument14 : "stringValue9580", argument16 : "stringValue9581", argument17 : "stringValue9578") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10389: Scalar2 @Directive30(argument80 : true) @Directive41 + field10391: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10394: Scalar2 @Directive30(argument80 : true) @Directive41 + field10395: Scalar2 @Directive30(argument80 : true) @Directive41 + field10396: Scalar2 @Directive30(argument80 : true) @Directive41 + field10397: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10399: String @Directive30(argument80 : true) @Directive41 + field10400: String @Directive30(argument80 : true) @Directive41 + field10401: String @Directive30(argument80 : true) @Directive41 + field10402: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field10509: Boolean @Directive30(argument80 : true) @Directive41 + field10845: String @Directive30(argument80 : true) @Directive41 + field11317: [Object2026] @Directive18 @Directive30(argument80 : true) @Directive41 + field11318: Object2026 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2028 implements Interface36 @Directive22(argument62 : "stringValue9585") @Directive30(argument79 : "stringValue9584") @Directive44(argument97 : ["stringValue9590", "stringValue9591"]) @Directive45(argument98 : ["stringValue9592", "stringValue9593"]) @Directive45(argument98 : ["stringValue9594"]) @Directive7(argument13 : "stringValue9587", argument14 : "stringValue9588", argument16 : "stringValue9589", argument17 : "stringValue9586") { + field10277(argument226: String, argument227: String, argument228: Int, argument229: Int, argument230: Int, argument231: Int): Object1992 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue10172") @Directive41 + field10398: Object2089 @Directive18(argument56 : "stringValue10106") @Directive30(argument80 : true) @Directive41 + field10403: [Object2029] @Directive30(argument80 : true) @Directive41 + field10436: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field10521: String @Directive30(argument80 : true) @Directive41 + field10522: [Object2029] @Directive30(argument80 : true) @Directive41 + field10578: [Object2035] @Directive18 @Directive30(argument80 : true) @Directive41 + field10820: Scalar2 @Directive30(argument80 : true) @Directive41 + field10822: Int @Directive30(argument80 : true) @Directive41 + field10841: [Object2065] @Directive18 @Directive30(argument80 : true) @Directive41 + field10845: String @Directive30(argument80 : true) @Directive41 + field10883: [Object2029] @Directive30(argument80 : true) @Directive41 + field11072: String @Directive30(argument80 : true) @Directive41 + field11073: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field11074: Object2063 @Directive18 @Directive30(argument80 : true) @Directive41 + field11075: Object2087 @Directive3(argument3 : "stringValue9990") @Directive30(argument80 : true) @Directive41 + field11181: Boolean @Directive30(argument80 : true) @Directive41 + field11182: Boolean @Directive30(argument80 : true) @Directive41 + field11183: Int @Directive30(argument80 : true) @Directive41 + field11184: Boolean @Directive30(argument80 : true) @Directive41 + field11185: String @Directive30(argument80 : true) @Directive41 + field11193: Int @Directive30(argument80 : true) @Directive41 + field11194: String @Directive30(argument80 : true) @Directive41 + field11195: [Object2029] @Directive30(argument80 : true) @Directive41 + field11206: [Object2088] @Directive30(argument80 : true) @Directive41 + field11239: [Object2088] @Directive30(argument80 : true) @Directive41 + field11240: Int @Directive30(argument80 : true) @Directive41 + field11241: String @Directive14(argument51 : "stringValue10119", argument52 : "stringValue10120") @Directive30(argument80 : true) @Directive41 + field11242: Int @Directive30(argument80 : true) @Directive41 + field11243: String @Directive30(argument80 : true) @Directive41 + field11244: String @Directive30(argument80 : true) @Directive41 + field11245: Scalar2 @Directive30(argument80 : true) @Directive41 + field11263: Object1837 @Directive14(argument51 : "stringValue10124", argument52 : "stringValue10125") @Directive30(argument80 : true) @Directive41 + field11264: Object2094 @Directive30(argument80 : true) @Directive41 + field11272: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field11273: Object2030 @Directive18 @Directive30(argument80 : true) @Directive41 + field11274: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue10134") @Directive41 + field11275(argument277: Int): Object2096 @Directive14(argument51 : "stringValue10135") @Directive30(argument80 : true) @Directive41 + field11305(argument280: [InputObject5]): Object2103 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9029: Int @Directive30(argument80 : true) @Directive41 + field9088: String @Directive30(argument80 : true) @Directive41 + field9089: String @Directive30(argument80 : true) @Directive41 + field9094: String @Directive30(argument80 : true) @Directive41 + field9096: Float @Directive30(argument80 : true) @Directive41 + field9097: String @Directive30(argument80 : true) @Directive41 + field9099: [Object2083] @Directive30(argument80 : true) @Directive41 + field9116: Object2053 @Directive30(argument80 : true) @Directive41 + field9138: Boolean @Directive30(argument80 : true) @Directive41 + field9140(argument174: Int, argument175: Int, argument278: Enum370, argument279: Enum371): Object1825 @Directive30(argument80 : true) @Directive41 + field9187: Object2038 @Directive30(argument80 : true) @Directive41 + field9205: Float @Directive30(argument80 : true) @Directive41 + field9280: Boolean @Directive30(argument80 : true) @Directive41 + field9282: Boolean @Directive18(argument56 : "stringValue10099") @Directive30(argument80 : true) @Directive41 + field9283: Boolean @Directive30(argument80 : true) @Directive41 + field9287: Boolean @Directive30(argument80 : true) @Directive41 + field9291: Boolean @Directive30(argument80 : true) @Directive41 + field9293: Boolean @Directive30(argument80 : true) @Directive41 + field9301: Float @Directive14(argument51 : "stringValue10100", argument52 : "stringValue10101") @Directive30(argument80 : true) @Directive41 + field9302: Float @Directive30(argument80 : true) @Directive41 + field9303: Object2064 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue10102") @Directive41 + field9316: Int @Directive30(argument80 : true) @Directive41 + field9317: Int @Directive30(argument80 : true) @Directive41 + field9320: Int @Directive30(argument80 : true) @Directive41 + field9325: Boolean @Directive30(argument80 : true) @Directive41 + field9326: String @Directive30(argument80 : true) @Directive41 + field9327: [String!]! @Directive30(argument80 : true) @Directive41 + field9328: Float @Directive30(argument80 : true) @Directive41 + field9330: Object2029 @Directive30(argument80 : true) @Directive41 + field9331: [Object2029] @Directive30(argument80 : true) @Directive41 + field9337: [Object2088] @Directive30(argument80 : true) @Directive41 + field9351: Scalar2 @Directive30(argument80 : true) @Directive41 + field9355: Float @Directive30(argument80 : true) @Directive41 + field9357: Object2090 @Directive30(argument80 : true) @Directive41 + field9375: Object2093 @Directive30(argument80 : true) @Directive41 + field9403: Object2066 @Directive14(argument51 : "stringValue10132", argument52 : "stringValue10133") @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2029 @Directive22(argument62 : "stringValue9595") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9596", "stringValue9597"]) { + field10404: ID! @Directive30(argument80 : true) @Directive41 + field10405: String @Directive30(argument80 : true) @Directive41 + field10406: String @Directive30(argument80 : true) @Directive41 + field10407: String @Directive30(argument80 : true) @Directive41 + field10408: String @Directive30(argument80 : true) @Directive41 + field10409: String @Directive30(argument80 : true) @Directive41 + field10410: String @Directive30(argument80 : true) @Directive41 + field10411: String @Directive30(argument80 : true) @Directive41 + field10412: String @Directive30(argument80 : true) @Directive41 + field10413: Int @Directive30(argument80 : true) @Directive41 + field10414: [Int] @Directive30(argument80 : true) @Directive41 + field10415: Int @Directive30(argument80 : true) @Directive41 + field10416: String @Directive30(argument80 : true) @Directive41 + field10417: String @Directive30(argument80 : true) @Directive41 + field10418: Int @Directive30(argument80 : true) @Directive41 + field10419: String @Directive30(argument80 : true) @Directive41 + field10420: String @Directive30(argument80 : true) @Directive41 + field10421: String @Directive30(argument80 : true) @Directive41 + field10422: Int @Directive30(argument80 : true) @Directive41 + field10423: Int @Directive30(argument80 : true) @Directive41 + field10424: Int @Directive30(argument80 : true) @Directive41 + field10425: String @Directive30(argument80 : true) @Directive41 + field10426: String @Directive30(argument80 : true) @Directive41 + field10427: String @Directive30(argument80 : true) @Directive41 + field10428: String @Directive30(argument80 : true) @Directive41 + field10429: String @Directive30(argument80 : true) @Directive41 + field10430: String @Directive30(argument80 : true) @Directive41 + field10431: Boolean @Directive30(argument80 : true) @Directive41 + field10432: String @Directive30(argument80 : true) @Directive41 + field10433: String @Directive30(argument80 : true) @Directive41 + field10434: String @Directive30(argument80 : true) @Directive41 + field10435: String @Directive30(argument80 : true) @Directive41 +} + +type Object203 @Directive21(argument61 : "stringValue655") @Directive44(argument97 : ["stringValue654"]) { + field1378: [Object204] + field1383: String + field1384: String + field1385: Object205 + field1392: Object205 + field1393: Object205 + field1394: Object208 + field1400: Union36 +} + +type Object2030 implements Interface36 @Directive22(argument62 : "stringValue9599") @Directive30(argument79 : "stringValue9598") @Directive44(argument97 : ["stringValue9604", "stringValue9605"]) @Directive45(argument98 : ["stringValue9606"]) @Directive7(argument13 : "stringValue9601", argument14 : "stringValue9602", argument16 : "stringValue9603", argument17 : "stringValue9600") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10389: Scalar2 @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10438: Scalar2 @Directive30(argument80 : true) @Directive41 + field10439: Scalar2 @Directive30(argument80 : true) @Directive41 + field10440: Object2031 @Directive18(argument56 : "stringValue9609") @Directive30(argument80 : true) @Directive41 + field10446: [String] @Directive30(argument80 : true) @Directive41 + field10447: [String] @Directive30(argument80 : true) @Directive41 + field10448: Object2032 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue9618") @Directive41 + field10498: [Object2036] @Directive18(argument56 : "stringValue9961") @Directive30(argument80 : true) @Directive41 + field10989: Boolean @Directive30(argument80 : true) @Directive41 + field10990: Boolean @Directive30(argument80 : true) @Directive41 + field10991: Boolean @Directive30(argument80 : true) @Directive41 + field10992: Boolean @Directive30(argument80 : true) @Directive41 + field10993: Boolean @Directive30(argument80 : true) @Directive41 + field10994: Object2080 @Directive18(argument56 : "stringValue9949") @Directive30(argument80 : true) @Directive41 + field10998: Scalar2 @Directive30(argument80 : true) @Directive41 + field10999: String @Directive30(argument80 : true) @Directive41 + field11000: Boolean @Directive30(argument80 : true) @Directive41 + field11001: Boolean @Directive30(argument80 : true) @Directive41 + field11002: String @Directive30(argument80 : true) @Directive41 + field11003: Object2081 @Directive30(argument80 : true) @Directive41 + field11018: [String] @Directive30(argument80 : true) @Directive41 + field11019: [Scalar2] @Directive30(argument80 : true) @Directive41 + field11020: [Scalar2] @Directive30(argument80 : true) @Directive41 + field11021: Boolean @Directive30(argument80 : true) @Directive41 + field11022: [Object2035] @Directive18(argument56 : "stringValue9962") @Directive30(argument80 : true) @Directive41 + field11023: [Object2035] @Directive18(argument56 : "stringValue9963") @Directive30(argument80 : true) @Directive41 + field11024: [Scalar2] @Directive30(argument80 : true) @Directive41 + field11025: Boolean @Directive30(argument80 : true) @Directive41 + field11026: Object2082 @Directive18(argument56 : "stringValue9964") @Directive30(argument80 : true) @Directive41 + field11029: [Object2082] @Directive18(argument56 : "stringValue9973") @Directive30(argument80 : true) @Directive41 + field11030: String @Directive30(argument80 : true) @Directive41 + field11031: Scalar2 @Directive30(argument80 : true) @Directive41 + field11032: [Object2080] @Directive18(argument56 : "stringValue9974") @Directive30(argument80 : true) @Directive41 + field11033: [Object2080] @Directive30(argument80 : true) @Directive41 + field11034: Boolean @Directive14(argument51 : "stringValue9975", argument52 : "stringValue9976") @Directive30(argument80 : true) @Directive41 + field11035: Boolean @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue9977") @Directive41 + field9698: Object2028 @Directive18(argument56 : "stringValue9607") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue9608") @Directive41 +} + +type Object2031 implements Interface36 @Directive22(argument62 : "stringValue9611") @Directive30(argument79 : "stringValue9610") @Directive44(argument97 : ["stringValue9616", "stringValue9617"]) @Directive7(argument13 : "stringValue9613", argument14 : "stringValue9614", argument16 : "stringValue9615", argument17 : "stringValue9612") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10441: Scalar2 @Directive30(argument80 : true) @Directive41 + field10442: String @Directive30(argument80 : true) @Directive41 + field10443: String @Directive30(argument80 : true) @Directive41 + field10444: String @Directive30(argument80 : true) @Directive41 + field10445: Object2030 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9796: String @Directive30(argument80 : true) @Directive41 +} + +type Object2032 implements Interface36 @Directive22(argument62 : "stringValue9620") @Directive30(argument79 : "stringValue9619") @Directive44(argument97 : ["stringValue9625", "stringValue9626"]) @Directive45(argument98 : ["stringValue9627"]) @Directive7(argument13 : "stringValue9622", argument14 : "stringValue9623", argument16 : "stringValue9624", argument17 : "stringValue9621") { + field10436: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field10449: Boolean @Directive30(argument80 : true) @Directive41 + field10450: Boolean @Directive30(argument80 : true) @Directive41 + field10451: Boolean @Directive30(argument80 : true) @Directive41 + field10452: Boolean @Directive30(argument80 : true) @Directive41 + field10453: Boolean @Directive30(argument80 : true) @Directive41 + field10454: Boolean @Directive30(argument80 : true) @Directive41 + field10455: Boolean @Directive30(argument80 : true) @Directive41 + field10456: Boolean @Directive30(argument80 : true) @Directive41 + field10457: Boolean @Directive30(argument80 : true) @Directive41 + field10458: Boolean @Directive30(argument80 : true) @Directive41 + field10459: Boolean @Directive30(argument80 : true) @Directive41 + field10460: Boolean @Directive30(argument80 : true) @Directive41 + field10461: Boolean @Directive30(argument80 : true) @Directive41 + field10462: Boolean @Directive30(argument80 : true) @Directive41 + field10463: Boolean @Directive30(argument80 : true) @Directive41 + field10464: Boolean @Directive30(argument80 : true) @Directive41 + field10465: Boolean @Directive30(argument80 : true) @Directive41 + field10466: Boolean @Directive30(argument80 : true) @Directive41 + field10467: Boolean @Directive30(argument80 : true) @Directive41 + field10468: Boolean @Directive30(argument80 : true) @Directive41 + field10469: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10470: Int @Directive30(argument80 : true) @Directive41 + field10471: Boolean @Directive30(argument80 : true) @Directive41 + field10472: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10473: Boolean @Directive30(argument80 : true) @Directive41 + field10474: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10489: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10525: [Object2034] @Directive18 @Directive30(argument80 : true) @Directive41 + field10805: Boolean @Directive30(argument80 : true) @Directive41 + field10806: Boolean @Directive30(argument80 : true) @Directive41 + field10807: Boolean @Directive30(argument80 : true) @Directive41 + field10808: Boolean @Directive30(argument80 : true) @Directive41 + field10809: Boolean @Directive30(argument80 : true) @Directive41 + field10810: Object2062 @Directive30(argument80 : true) @Directive41 + field10957: [String] @Directive30(argument80 : true) @Directive41 + field10958: Boolean @Directive30(argument80 : true) @Directive41 + field10959: String @Directive30(argument80 : true) @Directive41 + field10960: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10961: Object2039 @Directive18 @Directive30(argument80 : true) @Directive41 + field10962: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10963: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10964: [Object2034] @Directive18 @Directive30(argument80 : true) @Directive41 + field10965: Object2075 @Directive18 @Directive30(argument80 : true) @Directive41 + field10968: Boolean @Directive30(argument80 : true) @Directive41 + field10969: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10970: Object2039 @Directive18 @Directive30(argument80 : true) @Directive41 + field10971: Boolean @Directive30(argument80 : true) @Directive41 + field10972: Boolean @Directive30(argument80 : true) @Directive41 + field10973: Boolean @Directive30(argument80 : true) @Directive41 + field10974: Boolean @Directive30(argument80 : true) @Directive41 + field10975: [Object2076] @Directive30(argument80 : true) @Directive41 + field10985: Boolean @Directive30(argument80 : true) @Directive41 + field10986(argument269: String, argument270: Int, argument271: String, argument272: Int): Object2077 @Directive30(argument80 : true) @Directive41 + field10988(argument273: String, argument274: Int, argument275: String, argument276: Int): Object2424 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue9948") @Directive41 +} + +type Object2033 implements Interface36 @Directive22(argument62 : "stringValue9629") @Directive30(argument79 : "stringValue9628") @Directive44(argument97 : ["stringValue9634", "stringValue9635"]) @Directive7(argument13 : "stringValue9631", argument14 : "stringValue9632", argument16 : "stringValue9633", argument17 : "stringValue9630") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10389: Int @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10442: String @Directive30(argument80 : true) @Directive41 + field10444: String @Directive30(argument80 : true) @Directive41 + field10447: Scalar2 @Directive30(argument80 : true) @Directive41 + field10475: Scalar2 @Directive30(argument80 : true) @Directive41 + field10476: Scalar2 @Directive30(argument80 : true) @Directive41 + field10477: Scalar2 @Directive30(argument80 : true) @Directive41 + field10478: String @Directive30(argument80 : true) @Directive41 + field10479: String @Directive30(argument80 : true) @Directive41 + field10528: Scalar2 @Directive30(argument80 : true) @Directive41 + field10554: String @Directive30(argument80 : true) @Directive41 + field10605: Object2051 @Directive18 @Directive30(argument80 : true) @Directive41 + field10724: Scalar2 @Directive30(argument80 : true) @Directive41 + field10795: Boolean @Directive30(argument80 : true) @Directive41 + field10796: Scalar2 @Directive30(argument80 : true) @Directive41 + field10797: Int @Directive30(argument80 : true) @Directive41 + field10798: String @Directive30(argument80 : true) @Directive41 + field10799: String @Directive30(argument80 : true) @Directive41 + field10800: String @Directive30(argument80 : true) @Directive41 + field10801: Boolean @Directive30(argument80 : true) @Directive41 + field10802: Boolean @Directive30(argument80 : true) @Directive41 + field10803: Boolean @Directive30(argument80 : true) @Directive41 + field10804: Boolean @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8988: String @Directive30(argument80 : true) @Directive41 + field8989: String @Directive30(argument80 : true) @Directive41 + field9022: Object2034 @Directive18 @Directive30(argument80 : true) @Directive41 + field9026: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2034 implements Interface104 & Interface36 @Directive22(argument62 : "stringValue9640") @Directive30(argument79 : "stringValue9639") @Directive44(argument97 : ["stringValue9645", "stringValue9646"]) @Directive45(argument98 : ["stringValue9647", "stringValue9648"]) @Directive7(argument13 : "stringValue9642", argument14 : "stringValue9643", argument16 : "stringValue9644", argument17 : "stringValue9641") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: Int @Directive30(argument80 : true) @Directive41 + field10439: Scalar2 @Directive30(argument80 : true) @Directive41 + field10447: [String] @Directive30(argument80 : true) @Directive41 + field10480: Scalar2 @Directive30(argument80 : true) @Directive41 + field10481: Scalar2 @Directive30(argument80 : true) @Directive41 + field10482: Scalar2 @Directive30(argument80 : true) @Directive41 + field10483: String @Directive30(argument80 : true) @Directive41 + field10484: String @Directive30(argument80 : true) @Directive41 + field10485: String @Directive30(argument80 : true) @Directive41 + field10486: String @Directive30(argument80 : true) @Directive41 + field10487: Float @Directive30(argument80 : true) @Directive41 + field10488: String @Directive30(argument80 : true) @Directive41 + field10489: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10490: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10528: Scalar2 @Directive30(argument80 : true) @Directive41 + field10569: String @Directive30(argument80 : true) @Directive41 + field10589: Object2050 @Directive18 @Directive30(argument80 : true) @Directive41 + field10617: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10624: [Object2052] @Directive18 @Directive30(argument80 : true) @Directive41 + field10637: Boolean @Directive30(argument80 : true) @Directive41 + field10658: String @Directive30(argument80 : true) @Directive41 + field10672: Boolean @Directive30(argument80 : true) @Directive41 + field10673: Boolean @Directive30(argument80 : true) @Directive41 + field10674: Boolean @Directive30(argument80 : true) @Directive41 + field10675: Boolean @Directive30(argument80 : true) @Directive41 + field10676: Boolean @Directive30(argument80 : true) @Directive41 + field10677: Boolean @Directive30(argument80 : true) @Directive41 + field10678: Boolean @Directive30(argument80 : true) @Directive41 + field10679: Boolean @Directive30(argument80 : true) @Directive41 + field10680: Boolean @Directive30(argument80 : true) @Directive41 + field10681: Boolean @Directive30(argument80 : true) @Directive41 + field10682: String @Directive30(argument80 : true) @Directive41 + field10683: Boolean @Directive30(argument80 : true) @Directive41 + field10684: String @Directive30(argument80 : true) @Directive41 + field10685: String @Directive30(argument80 : true) @Directive41 + field10686: String @Directive30(argument80 : true) @Directive41 + field10687: Object2029 @Directive30(argument80 : true) @Directive41 + field10688: String @Directive30(argument80 : true) @Directive41 + field10689: String @Directive30(argument80 : true) @Directive41 + field10690: String @Directive30(argument80 : true) @Directive41 + field10691: String @Directive30(argument80 : true) @Directive41 + field10692: String @Directive30(argument80 : true) @Directive41 + field10693: Scalar2 @Directive30(argument80 : true) @Directive41 + field10694: String @Directive30(argument80 : true) @Directive41 + field10695: Scalar2 @Directive30(argument80 : true) @Directive41 + field10696: Int @Directive30(argument80 : true) @Directive41 + field10697: Scalar2 @Directive30(argument80 : true) @Directive41 + field10698: Scalar2 @Directive30(argument80 : true) @Directive41 + field10699: Boolean @Directive30(argument80 : true) @Directive41 + field10700: Boolean @Directive30(argument80 : true) @Directive41 + field10701: Boolean @Directive30(argument80 : true) @Directive41 + field10702: Boolean @Directive30(argument80 : true) @Directive41 + field10703: Boolean @Directive30(argument80 : true) @Directive41 + field10704: String @Directive30(argument80 : true) @Directive41 + field10705: Object2032 @Directive18 @Directive30(argument80 : true) @Directive41 + field10706: Boolean @Directive30(argument80 : true) @Directive41 + field10707: Boolean @Directive30(argument80 : true) @Directive41 + field10708: Int @Directive30(argument80 : true) @Directive41 + field10709: String @Directive30(argument80 : true) @Directive41 + field10710: String @Directive30(argument80 : true) @Directive41 + field10711: String @Directive30(argument80 : true) @Directive41 + field10712: String @Directive30(argument80 : true) @Directive41 + field10713: [String] @Directive30(argument80 : true) @Directive41 + field10714: Boolean @Directive30(argument80 : true) @Directive41 + field10715: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10716: Boolean @Directive30(argument80 : true) @Directive41 + field10717: Boolean @Directive30(argument80 : true) @Directive41 + field10718: Boolean @Directive30(argument80 : true) @Directive41 + field10719: Boolean @Directive30(argument80 : true) @Directive41 + field10720: Boolean @Directive30(argument80 : true) @Directive41 + field10721: Int @Directive30(argument80 : true) @Directive41 + field10722: Boolean @Directive30(argument80 : true) @Directive41 + field10723: Boolean @Directive30(argument80 : true) @Directive41 + field10724: Scalar2 @Directive30(argument80 : true) @Directive41 + field10725: Boolean @Directive30(argument80 : true) @Directive41 + field10726: Boolean @Directive30(argument80 : true) @Directive41 + field10727: String @Directive30(argument80 : true) @Directive41 + field10728: String @Directive30(argument80 : true) @Directive41 + field10729: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10730: String @Directive30(argument80 : true) @Directive41 + field10731: Float @Directive30(argument80 : true) @Directive41 + field10732: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10733: Scalar2 @Directive30(argument80 : true) @Directive41 + field10734: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10735: String @Directive30(argument80 : true) @Directive41 + field10736: Object2033 @Directive18 @Directive30(argument80 : true) @Directive41 + field10737: String @Directive30(argument80 : true) @Directive41 + field10738: Object2058 @Directive30(argument80 : true) @Directive41 + field10742: Int @Directive30(argument80 : true) @Directive41 + field10743: String @Directive30(argument80 : true) @Directive41 + field10744: Int @Directive30(argument80 : true) @Directive41 + field10745: Object2059 @Directive30(argument80 : true) @Directive41 + field10774: String @Directive30(argument80 : true) @Directive41 + field10775: Boolean @Directive30(argument80 : true) @Directive41 + field10776: Boolean @Directive30(argument80 : true) @Directive41 + field10777: Boolean @Directive30(argument80 : true) @Directive41 + field10778: [Object2050] @Directive18 @Directive30(argument80 : true) @Directive41 + field10779: Boolean @Directive30(argument80 : true) @Directive41 + field10780: String @Directive30(argument80 : true) @Directive41 + field10781: Object2059 @Directive30(argument80 : true) @Directive41 + field10782: String @Directive30(argument80 : true) @Directive41 + field10783: Boolean @Directive30(argument80 : true) @Directive41 + field10784: Int @Directive30(argument80 : true) @Directive41 + field10785: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10786: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10787: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10788: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field10789: String @Directive30(argument80 : true) @Directive41 + field10790: String @Directive30(argument80 : true) @Directive41 + field10791: Boolean @Directive30(argument80 : true) @Directive41 + field10792: Object2028 @Directive18(argument56 : "stringValue9816") @Directive30(argument80 : true) @Directive41 + field10793: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10794: [Object2033] @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8988: String @Directive30(argument80 : true) @Directive41 + field8989: String @Directive30(argument80 : true) @Directive41 + field9003: Int @Directive30(argument80 : true) @Directive41 + field9021: String @Directive30(argument80 : true) @Directive41 + field9085: String @Directive30(argument80 : true) @Directive41 + field9086: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9282: Boolean @Directive30(argument80 : true) @Directive41 + field9329: Int @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field9706: String @Directive30(argument80 : true) @Directive41 + field9732: String @Directive30(argument80 : true) @Directive41 + field9796: String @Directive30(argument80 : true) @Directive41 +} + +type Object2035 implements Interface104 & Interface36 @Directive22(argument62 : "stringValue9650") @Directive30(argument79 : "stringValue9649") @Directive44(argument97 : ["stringValue9655", "stringValue9656"]) @Directive7(argument13 : "stringValue9652", argument14 : "stringValue9653", argument16 : "stringValue9654", argument17 : "stringValue9651") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10436: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field10447: Scalar2 @Directive30(argument80 : true) @Directive41 + field10478: String @Directive30(argument80 : true) @Directive41 + field10491: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10492: Boolean @Directive30(argument80 : true) @Directive41 + field10493: Boolean @Directive30(argument80 : true) @Directive41 + field10494: String @Directive30(argument80 : true) @Directive41 + field10495: Boolean @Directive30(argument80 : true) @Directive41 + field10496: Int @Directive30(argument80 : true) @Directive41 + field10497: Boolean @Directive30(argument80 : true) @Directive41 + field10498: [Object2036] @Directive18 @Directive30(argument80 : true) @Directive41 + field10499: Boolean @Directive30(argument80 : true) @Directive41 + field10500: Scalar2 @Directive30(argument80 : true) @Directive41 + field10501: Object2037 @Directive18 @Directive30(argument80 : true) @Directive41 + field10521: String @Directive30(argument80 : true) @Directive41 + field10523: Object2029 @Directive30(argument80 : true) @Directive41 + field10524: [Object2034] @Directive18 @Directive30(argument80 : true) @Directive41 + field10525: [Object2034] @Directive18 @Directive30(argument80 : true) @Directive41 + field10526: Boolean @Directive30(argument80 : true) @Directive41 + field10527: Scalar2 @Directive30(argument80 : true) @Directive41 + field10528: Scalar2 @Directive30(argument80 : true) @Directive41 + field10529: Float @Directive30(argument80 : true) @Directive41 + field10530: String @Directive30(argument80 : true) @Directive41 + field10531: Scalar2 @Directive30(argument80 : true) @Directive41 + field10532: Float @Directive30(argument80 : true) @Directive41 + field10533: String @Directive30(argument80 : true) @Directive41 + field10534: [Object2041] @Directive18 @Directive30(argument80 : true) @Directive41 + field10563: Object2048 @Directive18 @Directive30(argument80 : true) @Directive41 + field10566: Int @Directive30(argument80 : true) @Directive41 + field10567: Int @Directive30(argument80 : true) @Directive41 + field10579: Boolean @Directive30(argument80 : true) @Directive41 + field10580: Boolean @Directive30(argument80 : true) @Directive41 + field10581: Int @Directive30(argument80 : true) @Directive41 + field10582: Object2049 @Directive18 @Directive30(argument80 : true) @Directive41 + field10587: Boolean @Directive30(argument80 : true) @Directive41 + field10588: String @Directive30(argument80 : true) @Directive41 + field10589: Object2050 @Directive18 @Directive30(argument80 : true) @Directive41 + field10600: Int @Directive30(argument80 : true) @Directive41 + field10601: Boolean @Directive30(argument80 : true) @Directive41 + field10602: Boolean @Directive30(argument80 : true) @Directive41 + field10603: String @Directive30(argument80 : true) @Directive41 + field10604: String @Directive30(argument80 : true) @Directive41 + field10605: Object2051 @Directive18 @Directive30(argument80 : true) @Directive41 + field10624: [Object2052] @Directive18 @Directive30(argument80 : true) @Directive41 + field10625: Int @Directive30(argument80 : true) @Directive41 + field10626: Int @Directive30(argument80 : true) @Directive41 + field10627: Int @Directive30(argument80 : true) @Directive41 + field10628: Int @Directive30(argument80 : true) @Directive41 + field10629: Int @Directive30(argument80 : true) @Directive41 + field10630: String @Directive30(argument80 : true) @Directive41 + field10631: Boolean @Directive30(argument80 : true) @Directive41 + field10632: Boolean @Directive30(argument80 : true) @Directive41 + field10633: Boolean @Directive30(argument80 : true) @Directive41 + field10634: Boolean @Directive30(argument80 : true) @Directive41 + field10635: [Object2034] @Directive18 @Directive30(argument80 : true) @Directive41 + field10636: [Object2034] @Directive18 @Directive30(argument80 : true) @Directive41 + field10637: Boolean @Directive30(argument80 : true) @Directive41 + field10638: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10639: Scalar2 @Directive30(argument80 : true) @Directive41 + field10640: Object2053 @Directive30(argument80 : true) @Directive41 + field10653: Float @Directive30(argument80 : true) @Directive41 + field10654: Float @Directive30(argument80 : true) @Directive41 + field10655: Object2057 @Directive18 @Directive30(argument80 : true) @Directive41 + field10658: String @Directive30(argument80 : true) @Directive41 + field10659: String @Directive30(argument80 : true) @Directive41 + field10660: String @Directive30(argument80 : true) @Directive41 + field10661: Boolean @Directive30(argument80 : true) @Directive41 + field10662: Int @Directive30(argument80 : true) @Directive41 + field10663: String @Directive30(argument80 : true) @Directive41 + field10664: Int @Directive30(argument80 : true) @Directive41 + field10665: Boolean @Directive30(argument80 : true) @Directive41 + field10666: Boolean @Directive30(argument80 : true) @Directive41 + field10667: String @Directive30(argument80 : true) @Directive41 + field10668: Scalar2 @Directive30(argument80 : true) @Directive41 + field10669: Boolean @Directive30(argument80 : true) @Directive41 + field10670: Int @Directive30(argument80 : true) @Directive41 + field10671: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8988: String @Directive30(argument80 : true) @Directive41 + field8989: String @Directive30(argument80 : true) @Directive41 + field8990: String @Directive30(argument80 : true) @Directive41 + field8991: String @Directive30(argument80 : true) @Directive41 + field9000: Boolean @Directive30(argument80 : true) @Directive41 + field9003: Int @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9097: String @Directive30(argument80 : true) @Directive41 + field9139: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9316: Int @Directive30(argument80 : true) @Directive41 + field9317: Int @Directive30(argument80 : true) @Directive41 + field9328: Float @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field9699: Boolean @Directive30(argument80 : true) @Directive41 + field9700: Boolean @Directive30(argument80 : true) @Directive41 + field9701: Boolean @Directive30(argument80 : true) @Directive41 + field9702: String @Directive30(argument80 : true) @Directive41 + field9703: String @Directive30(argument80 : true) @Directive41 + field9704: String @Directive30(argument80 : true) @Directive41 + field9705: String @Directive30(argument80 : true) @Directive41 + field9706: String @Directive30(argument80 : true) @Directive41 + field9707: [String] @Directive30(argument80 : true) @Directive41 + field9708: Int @Directive30(argument80 : true) @Directive41 + field9709: Int @Directive30(argument80 : true) @Directive41 + field9710: Int @Directive30(argument80 : true) @Directive41 + field9711: Float @Directive30(argument80 : true) @Directive41 + field9712: Int @Directive30(argument80 : true) @Directive41 + field9713: String @Directive30(argument80 : true) @Directive41 + field9714: Object2053 @Directive30(argument80 : true) @Directive41 + field9715: Float @Directive30(argument80 : true) @Directive41 + field9716: Float @Directive30(argument80 : true) @Directive41 + field9717: String @Directive30(argument80 : true) @Directive41 + field9719: Int @Directive30(argument80 : true) @Directive41 + field9720: Int @Directive30(argument80 : true) @Directive41 + field9732: String @Directive30(argument80 : true) @Directive41 +} + +type Object2036 implements Interface36 @Directive22(argument62 : "stringValue9658") @Directive30(argument79 : "stringValue9657") @Directive44(argument97 : ["stringValue9663", "stringValue9664"]) @Directive7(argument13 : "stringValue9660", argument14 : "stringValue9661", argument16 : "stringValue9662", argument17 : "stringValue9659") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10445: Object2030 @Directive18 @Directive30(argument80 : true) @Directive41 + field10482: Scalar2 @Directive30(argument80 : true) @Directive41 + field10490: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2037 implements Interface36 @Directive22(argument62 : "stringValue9666") @Directive30(argument79 : "stringValue9665") @Directive44(argument97 : ["stringValue9671", "stringValue9672"]) @Directive7(argument13 : "stringValue9668", argument14 : "stringValue9669", argument16 : "stringValue9670", argument17 : "stringValue9667") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10389: Int @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10502: [Object2038] @Directive18 @Directive30(argument80 : true) @Directive41 + field10509: Boolean @Directive30(argument80 : true) @Directive41 + field10520: Object2038 @Directive18 @Directive30(argument80 : true) @Directive41 + field10521: String @Directive30(argument80 : true) @Directive41 + field10522: [Object2029] @Directive30(argument80 : true) @Directive41 + field10523: Object2029 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9187: Object2038 @Directive18 @Directive30(argument80 : true) @Directive41 + field9331: [Object2029] @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2038 implements Interface36 @Directive22(argument62 : "stringValue9674") @Directive30(argument79 : "stringValue9673") @Directive44(argument97 : ["stringValue9679", "stringValue9680"]) @Directive7(argument13 : "stringValue9676", argument14 : "stringValue9677", argument16 : "stringValue9678", argument17 : "stringValue9675") { + field10390: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: Int @Directive30(argument80 : true) @Directive41 + field10500: Scalar2 @Directive30(argument80 : true) @Directive41 + field10503: String @Directive30(argument80 : true) @Directive41 + field10504: String @Directive30(argument80 : true) @Directive41 + field10505: String @Directive30(argument80 : true) @Directive41 + field10506: String @Directive30(argument80 : true) @Directive41 + field10507: String @Directive30(argument80 : true) @Directive41 + field10508: String @Directive30(argument80 : true) @Directive41 + field10509: Boolean @Directive30(argument80 : true) @Directive41 + field10510: String @Directive30(argument80 : true) @Directive41 + field10511: String @Directive30(argument80 : true) @Directive41 + field10512: [Object2039] @Directive18 @Directive30(argument80 : true) @Directive41 + field10516: [Object2040] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9088: String @Directive30(argument80 : true) @Directive41 + field9089: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9356: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2039 implements Interface36 @Directive22(argument62 : "stringValue9682") @Directive30(argument79 : "stringValue9681") @Directive44(argument97 : ["stringValue9687", "stringValue9688"]) @Directive7(argument13 : "stringValue9684", argument14 : "stringValue9685", argument16 : "stringValue9686", argument17 : "stringValue9683") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10513: Scalar2 @Directive30(argument80 : true) @Directive41 + field10514: Scalar2 @Directive30(argument80 : true) @Directive41 + field10515: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object204 @Directive21(argument61 : "stringValue657") @Directive44(argument97 : ["stringValue656"]) { + field1379: String + field1380: String + field1381: String + field1382: String +} + +type Object2040 @Directive22(argument62 : "stringValue9689") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9690", "stringValue9691"]) { + field10517: Int @Directive30(argument80 : true) @Directive41 + field10518: String @Directive30(argument80 : true) @Directive41 + field10519: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2041 implements Interface36 @Directive22(argument62 : "stringValue9693") @Directive30(argument79 : "stringValue9692") @Directive44(argument97 : ["stringValue9698", "stringValue9699"]) @Directive7(argument13 : "stringValue9695", argument14 : "stringValue9696", argument16 : "stringValue9697", argument17 : "stringValue9694") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10535: String @Directive30(argument80 : true) @Directive41 + field10536: Scalar2 @Directive30(argument80 : true) @Directive41 + field10537: String @Directive30(argument80 : true) @Directive41 + field10538: [Object2042] @Directive18 @Directive30(argument80 : true) @Directive41 + field10544: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field10545: Object1812 @Directive30(argument80 : true) @Directive41 + field10546: Object1813 @Directive30(argument80 : true) @Directive41 + field10547: Object2043 @Directive30(argument80 : true) @Directive41 + field10553: [Object2044] @Directive18 @Directive30(argument80 : true) @Directive41 + field10556: [Object2045] @Directive18 @Directive30(argument80 : true) @Directive41 + field10557: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10558: Object2046 @Directive30(argument80 : true) @Directive41 + field10560: [Object2047] @Directive18 @Directive30(argument80 : true) @Directive41 + field10562: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 +} + +type Object2042 implements Interface36 @Directive22(argument62 : "stringValue9701") @Directive30(argument79 : "stringValue9700") @Directive44(argument97 : ["stringValue9706", "stringValue9707"]) @Directive7(argument13 : "stringValue9703", argument14 : "stringValue9704", argument16 : "stringValue9705", argument17 : "stringValue9702") { + field10539: Scalar2 @Directive30(argument80 : true) @Directive41 + field10540: Int @Directive30(argument80 : true) @Directive41 + field10541: Int @Directive30(argument80 : true) @Directive41 + field10542: Object2041 @Directive18 @Directive30(argument80 : true) @Directive41 + field10543: Object2042 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2043 @Directive22(argument62 : "stringValue9708") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9709", "stringValue9710"]) { + field10548: Int @Directive30(argument80 : true) @Directive41 + field10549: Boolean @Directive30(argument80 : true) @Directive41 + field10550: String @Directive30(argument80 : true) @Directive41 + field10551: String @Directive30(argument80 : true) @Directive41 + field10552: String @Directive30(argument80 : true) @Directive41 +} + +type Object2044 implements Interface36 @Directive22(argument62 : "stringValue9712") @Directive30(argument79 : "stringValue9711") @Directive44(argument97 : ["stringValue9717", "stringValue9718"]) @Directive7(argument13 : "stringValue9714", argument14 : "stringValue9715", argument16 : "stringValue9716", argument17 : "stringValue9713") { + field10539: Scalar2 @Directive30(argument80 : true) @Directive41 + field10542: Object2041 @Directive18 @Directive30(argument80 : true) @Directive41 + field10554: String @Directive30(argument80 : true) @Directive41 + field10555: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2045 implements Interface36 @Directive22(argument62 : "stringValue9720") @Directive30(argument79 : "stringValue9719") @Directive44(argument97 : ["stringValue9725", "stringValue9726"]) @Directive7(argument13 : "stringValue9722", argument14 : "stringValue9723", argument16 : "stringValue9724", argument17 : "stringValue9721") { + field10539: Scalar2 @Directive30(argument80 : true) @Directive41 + field10541: Int @Directive30(argument80 : true) @Directive41 + field10542: Object2041 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8988: String @Directive30(argument80 : true) @Directive41 + field9796: String @Directive30(argument80 : true) @Directive41 +} + +type Object2046 @Directive22(argument62 : "stringValue9727") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9728", "stringValue9729"]) { + field10559: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object2047 implements Interface36 @Directive22(argument62 : "stringValue9731") @Directive30(argument79 : "stringValue9730") @Directive44(argument97 : ["stringValue9736", "stringValue9737"]) @Directive7(argument13 : "stringValue9733", argument14 : "stringValue9734", argument16 : "stringValue9735", argument17 : "stringValue9732") { + field10539: Scalar2 @Directive30(argument80 : true) @Directive41 + field10542: Object2041 @Directive18 @Directive30(argument80 : true) @Directive41 + field10561: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2048 implements Interface36 @Directive22(argument62 : "stringValue9739") @Directive30(argument79 : "stringValue9738") @Directive44(argument97 : ["stringValue9744", "stringValue9745"]) @Directive7(argument13 : "stringValue9741", argument14 : "stringValue9742", argument16 : "stringValue9743", argument17 : "stringValue9740") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10447: Int @Directive30(argument80 : true) @Directive41 + field10492: Boolean @Directive30(argument80 : true) @Directive41 + field10564: String @Directive30(argument80 : true) @Directive41 + field10565: String @Directive30(argument80 : true) @Directive41 + field10566: Int @Directive30(argument80 : true) @Directive41 + field10567: Int @Directive30(argument80 : true) @Directive41 + field10568: String @Directive30(argument80 : true) @Directive41 + field10569: String @Directive30(argument80 : true) @Directive41 + field10570: String @Directive30(argument80 : true) @Directive41 + field10571: String @Directive30(argument80 : true) @Directive41 + field10572: Int @Directive30(argument80 : true) @Directive41 + field10573: Int @Directive30(argument80 : true) @Directive41 + field10574: [String] @Directive30(argument80 : true) @Directive41 + field10575: [Int] @Directive30(argument80 : true) @Directive41 + field10576: [Object2035] @Directive18 @Directive30(argument80 : true) @Directive41 + field10577: Int @Directive30(argument80 : true) @Directive41 + field10578: [Object2035] @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2049 implements Interface36 @Directive22(argument62 : "stringValue9747") @Directive30(argument79 : "stringValue9746") @Directive44(argument97 : ["stringValue9752", "stringValue9753"]) @Directive7(argument13 : "stringValue9749", argument14 : "stringValue9750", argument16 : "stringValue9751", argument17 : "stringValue9748") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10583: Scalar2 @Directive30(argument80 : true) @Directive41 + field10584: String @Directive30(argument80 : true) @Directive41 + field10585: String @Directive30(argument80 : true) @Directive41 + field10586: Float @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object205 @Directive21(argument61 : "stringValue659") @Directive44(argument97 : ["stringValue658"]) { + field1386: Object206 + field1390: Object207 +} + +type Object2050 implements Interface104 & Interface36 @Directive22(argument62 : "stringValue9755") @Directive30(argument79 : "stringValue9754") @Directive44(argument97 : ["stringValue9760", "stringValue9761"]) @Directive7(argument13 : "stringValue9757", argument14 : "stringValue9758", argument16 : "stringValue9759", argument17 : "stringValue9756") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10389: Int @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10439: Int @Directive30(argument80 : true) @Directive41 + field10475: Scalar2 @Directive30(argument80 : true) @Directive41 + field10476: Scalar2 @Directive30(argument80 : true) @Directive41 + field10482: Scalar2 @Directive30(argument80 : true) @Directive41 + field10528: Scalar2 @Directive30(argument80 : true) @Directive41 + field10590: Int @Directive30(argument80 : true) @Directive41 + field10591: Scalar2 @Directive30(argument80 : true) @Directive41 + field10592: String @Directive30(argument80 : true) @Directive41 + field10593: Int @Directive30(argument80 : true) @Directive41 + field10594: Int @Directive30(argument80 : true) @Directive41 + field10595: Int @Directive30(argument80 : true) @Directive41 + field10596: Boolean @Directive30(argument80 : true) @Directive41 + field10597: String @Directive30(argument80 : true) @Directive41 + field10598: String @Directive30(argument80 : true) @Directive41 + field10599: Boolean @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field9796: String @Directive30(argument80 : true) @Directive41 +} + +type Object2051 implements Interface36 @Directive22(argument62 : "stringValue9763") @Directive30(argument79 : "stringValue9762") @Directive44(argument97 : ["stringValue9768", "stringValue9769"]) @Directive45(argument98 : ["stringValue9770"]) @Directive7(argument13 : "stringValue9765", argument14 : "stringValue9766", argument16 : "stringValue9767", argument17 : "stringValue9764") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10476: Scalar2 @Directive30(argument80 : true) @Directive41 + field10528: Scalar2 @Directive30(argument80 : true) @Directive41 + field10606: String @Directive30(argument80 : true) @Directive41 + field10607: Scalar2 @Directive30(argument80 : true) @Directive41 + field10608: [Object2052] @Directive18 @Directive30(argument80 : true) @Directive41 + field10612: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field10613: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10614: String @Directive30(argument80 : true) @Directive41 + field10615: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10616: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10617: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10618: Int @Directive30(argument80 : true) @Directive41 + field10619: String @Directive30(argument80 : true) @Directive41 + field10620: [Object2052] @Directive18(argument56 : "stringValue9779") @Directive30(argument80 : true) @Directive41 + field10621: Object2052 @Directive18(argument56 : "stringValue9780") @Directive30(argument80 : true) @Directive41 + field10622: Interface104 @Directive14(argument51 : "stringValue9781", argument52 : "stringValue9782") @Directive30(argument80 : true) @Directive41 + field10623: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue9783") @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2052 implements Interface36 @Directive22(argument62 : "stringValue9772") @Directive30(argument79 : "stringValue9771") @Directive44(argument97 : ["stringValue9777", "stringValue9778"]) @Directive7(argument13 : "stringValue9774", argument14 : "stringValue9775", argument16 : "stringValue9776", argument17 : "stringValue9773") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10490: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10528: Scalar2 @Directive30(argument80 : true) @Directive41 + field10589: Object2050 @Directive18 @Directive30(argument80 : true) @Directive41 + field10605: Object2051 @Directive18 @Directive30(argument80 : true) @Directive41 + field10609: Scalar2 @Directive30(argument80 : true) @Directive41 + field10610: String @Directive30(argument80 : true) @Directive41 + field10611: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9022: Object2034 @Directive18 @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2053 @Directive22(argument62 : "stringValue9784") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9785", "stringValue9786"]) { + field10641: Object2054 @Directive30(argument80 : true) @Directive41 + field10646: Object2046 @Directive30(argument80 : true) @Directive41 + field10647: Object2043 @Directive30(argument80 : true) @Directive41 + field10648: Object2055 @Directive30(argument80 : true) @Directive41 + field10651: Object2056 @Directive30(argument80 : true) @Directive41 +} + +type Object2054 @Directive22(argument62 : "stringValue9787") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9788", "stringValue9789"]) { + field10642: Scalar2 @Directive30(argument80 : true) @Directive41 + field10643: Scalar2 @Directive30(argument80 : true) @Directive41 + field10644: Scalar2 @Directive30(argument80 : true) @Directive41 + field10645: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object2055 @Directive22(argument62 : "stringValue9790") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9791", "stringValue9792"]) { + field10649: Int @Directive30(argument80 : true) @Directive41 + field10650: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2056 @Directive22(argument62 : "stringValue9793") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9794", "stringValue9795"]) { + field10652: [Object2042] @Directive30(argument80 : true) @Directive41 +} + +type Object2057 implements Interface36 @Directive22(argument62 : "stringValue9797") @Directive30(argument79 : "stringValue9796") @Directive44(argument97 : ["stringValue9802", "stringValue9803"]) @Directive7(argument13 : "stringValue9799", argument14 : "stringValue9800", argument16 : "stringValue9801", argument17 : "stringValue9798") { + field10482: Scalar2 @Directive30(argument80 : true) @Directive41 + field10490: Object2035 @Directive18 @Directive30(argument80 : true) @Directive41 + field10656: String @Directive30(argument80 : true) @Directive41 + field10657: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2058 @Directive22(argument62 : "stringValue9804") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9805", "stringValue9806"]) { + field10739: Float @Directive30(argument80 : true) @Directive41 + field10740: String @Directive30(argument80 : true) @Directive41 + field10741: String @Directive30(argument80 : true) @Directive41 +} + +type Object2059 @Directive22(argument62 : "stringValue9807") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9808", "stringValue9809"]) { + field10746: Object2060 @Directive30(argument80 : true) @Directive41 + field10750: Object2060 @Directive30(argument80 : true) @Directive41 + field10751: Object2060 @Directive30(argument80 : true) @Directive41 + field10752: Object2060 @Directive30(argument80 : true) @Directive41 + field10753: Object2060 @Directive30(argument80 : true) @Directive41 + field10754: Object2060 @Directive30(argument80 : true) @Directive41 + field10755: Object2060 @Directive30(argument80 : true) @Directive41 + field10756: Object2060 @Directive30(argument80 : true) @Directive41 + field10757: String @Directive30(argument80 : true) @Directive41 + field10758: String @Directive30(argument80 : true) @Directive41 + field10759: Float @Directive30(argument80 : true) @Directive41 + field10760: String @Directive30(argument80 : true) @Directive41 + field10761: Float @Directive30(argument80 : true) @Directive41 + field10762: Float @Directive30(argument80 : true) @Directive41 + field10763: Object2060 @Directive30(argument80 : true) @Directive41 + field10764: Object2060 @Directive30(argument80 : true) @Directive41 + field10765: Object2060 @Directive30(argument80 : true) @Directive41 + field10766: Object2060 @Directive30(argument80 : true) @Directive41 + field10767: Object2060 @Directive30(argument80 : true) @Directive41 + field10768: Object2060 @Directive30(argument80 : true) @Directive41 + field10769: Object2060 @Directive30(argument80 : true) @Directive41 + field10770: Object2061 @Directive30(argument80 : true) @Directive41 +} + +type Object206 @Directive21(argument61 : "stringValue661") @Directive44(argument97 : ["stringValue660"]) { + field1387: String + field1388: String + field1389: Boolean +} + +type Object2060 @Directive22(argument62 : "stringValue9810") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9811", "stringValue9812"]) { + field10747: Scalar2 @Directive30(argument80 : true) @Directive41 + field10748: Scalar2 @Directive30(argument80 : true) @Directive41 + field10749: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object2061 @Directive22(argument62 : "stringValue9813") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9814", "stringValue9815"]) { + field10771: Int @Directive30(argument80 : true) @Directive41 + field10772: Int @Directive30(argument80 : true) @Directive41 + field10773: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2062 @Directive22(argument62 : "stringValue9817") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9818", "stringValue9819"]) { + field10811: [Object2063] @Directive30(argument80 : true) @Directive41 + field10953: Int @Directive30(argument80 : true) @Directive41 + field10954: Int @Directive30(argument80 : true) @Directive41 + field10955: Int @Directive30(argument80 : true) @Directive41 + field10956: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2063 implements Interface36 @Directive22(argument62 : "stringValue9821") @Directive30(argument79 : "stringValue9820") @Directive44(argument97 : ["stringValue9826", "stringValue9827"]) @Directive7(argument13 : "stringValue9823", argument14 : "stringValue9824", argument16 : "stringValue9825", argument17 : "stringValue9822") { + field10321: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: Int @Directive30(argument80 : true) @Directive41 + field10812: String @Directive30(argument80 : true) @Directive41 + field10813: String @Directive30(argument80 : true) @Directive41 + field10814: String @Directive30(argument80 : true) @Directive41 + field10815: String @Directive30(argument80 : true) @Directive41 + field10816: String @Directive30(argument80 : true) @Directive41 + field10817: Scalar2 @Directive30(argument80 : true) @Directive41 + field10818: String @Directive30(argument80 : true) @Directive41 + field10819: Int @Directive30(argument80 : true) @Directive41 + field10820: Scalar2 @Directive30(argument80 : true) @Directive41 + field10821: String @Directive30(argument80 : true) @Directive41 + field10822: Int @Directive30(argument80 : true) @Directive41 + field10823: String @Directive30(argument80 : true) @Directive41 + field10824: Float @Directive30(argument80 : true) @Directive41 + field10825: Int @Directive30(argument80 : true) @Directive41 + field10826: Int @Directive30(argument80 : true) @Directive41 + field10827: Float @Directive30(argument80 : true) @Directive41 + field10828: Float @Directive30(argument80 : true) @Directive41 + field10829: Float @Directive30(argument80 : true) @Directive41 + field10830: Float @Directive30(argument80 : true) @Directive41 + field10831: Int @Directive30(argument80 : true) @Directive41 + field10832: Int @Directive30(argument80 : true) @Directive41 + field10833: Int @Directive30(argument80 : true) @Directive41 + field10834: Int @Directive30(argument80 : true) @Directive41 + field10835: Scalar2 @Directive30(argument80 : true) @Directive41 + field10836: Boolean @Directive30(argument80 : true) @Directive41 + field10837: [Scalar2] @Directive30(argument80 : true) @Directive41 + field10935: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10936: String @Directive30(argument80 : true) @Directive41 + field10937: [Object2074] @Directive18 @Directive30(argument80 : true) @Directive41 + field10942: Scalar2 @Directive30(argument80 : true) @Directive41 + field10943: Scalar2 @Directive30(argument80 : true) @Directive41 + field10944: [Int] @Directive30(argument80 : true) @Directive41 + field10945: [Int] @Directive30(argument80 : true) @Directive41 + field10946: String @Directive30(argument80 : true) @Directive41 + field10947: String @Directive30(argument80 : true) @Directive41 + field10948: String @Directive30(argument80 : true) @Directive41 + field10949: Int @Directive30(argument80 : true) @Directive41 + field10950: Int @Directive30(argument80 : true) @Directive41 + field10951: Int @Directive30(argument80 : true) @Directive41 + field10952: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9303: Object2064 @Directive18 @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2064 implements Interface36 @Directive22(argument62 : "stringValue9829") @Directive30(argument79 : "stringValue9828") @Directive44(argument97 : ["stringValue9834", "stringValue9835"]) @Directive7(argument13 : "stringValue9831", argument14 : "stringValue9832", argument16 : "stringValue9833", argument17 : "stringValue9830") { + field10398: Int @Directive30(argument80 : true) @Directive41 + field10569: String @Directive30(argument80 : true) @Directive41 + field10838: String @Directive30(argument80 : true) @Directive41 + field10839: Int @Directive30(argument80 : true) @Directive41 + field10840: String @Directive30(argument80 : true) @Directive41 + field10841: [Object2065] @Directive18 @Directive30(argument80 : true) @Directive41 + field10913: [Object2066] @Directive18 @Directive30(argument80 : true) @Directive41 + field10914: [Object2028] @Directive18 @Directive30(argument80 : true) @Directive41 + field10915: [Object2072] @Directive18 @Directive30(argument80 : true) @Directive41 + field10921: Scalar2 @Directive30(argument80 : true) @Directive41 + field10922: String @Directive30(argument80 : true) @Directive41 + field10923: String @Directive30(argument80 : true) @Directive41 + field10924: String @Directive30(argument80 : true) @Directive41 + field10925: Boolean @Directive30(argument80 : true) @Directive41 + field10926: String @Directive30(argument80 : true) @Directive41 + field10927: Int @Directive30(argument80 : true) @Directive41 + field10928: Int @Directive30(argument80 : true) @Directive41 + field10929: String @Directive30(argument80 : true) @Directive41 + field10930: [Object2029] @Directive30(argument80 : true) @Directive41 + field10931: String @Directive30(argument80 : true) @Directive41 + field10932: Boolean @Directive30(argument80 : true) @Directive41 + field10933: String @Directive30(argument80 : true) @Directive41 + field10934: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9301: Float @Directive30(argument80 : true) @Directive41 + field9302: Float @Directive30(argument80 : true) @Directive41 + field9678: String @Directive30(argument80 : true) @Directive41 + field9831: String @Directive30(argument80 : true) @Directive41 +} + +type Object2065 implements Interface36 @Directive22(argument62 : "stringValue9837") @Directive30(argument79 : "stringValue9836") @Directive44(argument97 : ["stringValue9842", "stringValue9843"]) @Directive7(argument13 : "stringValue9839", argument14 : "stringValue9840", argument16 : "stringValue9841", argument17 : "stringValue9838") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10478: [String] @Directive30(argument80 : true) @Directive41 + field10502: [Object2068] @Directive18 @Directive30(argument80 : true) @Directive41 + field10520: Object2068 @Directive18 @Directive30(argument80 : true) @Directive41 + field10523: Object2029 @Directive30(argument80 : true) @Directive41 + field10566: Int @Directive30(argument80 : true) @Directive41 + field10567: Int @Directive30(argument80 : true) @Directive41 + field10820: Scalar2 @Directive30(argument80 : true) @Directive41 + field10842: String @Directive30(argument80 : true) @Directive41 + field10843: Scalar2 @Directive30(argument80 : true) @Directive41 + field10844: Scalar2 @Directive30(argument80 : true) @Directive41 + field10845: String @Directive30(argument80 : true) @Directive41 + field10846: Int @Directive30(argument80 : true) @Directive41 + field10847: Float @Directive30(argument80 : true) @Directive41 + field10848: Float @Directive30(argument80 : true) @Directive41 + field10849: Int @Directive30(argument80 : true) @Directive41 + field10850: Int @Directive30(argument80 : true) @Directive41 + field10851: Scalar2 @Directive30(argument80 : true) @Directive41 + field10852: Scalar2 @Directive30(argument80 : true) @Directive41 + field10853: Object2066 @Directive18 @Directive30(argument80 : true) @Directive41 + field10857: String @Directive30(argument80 : true) @Directive41 + field10866: String @Directive30(argument80 : true) @Directive41 + field10873: [String] @Directive30(argument80 : true) @Directive41 + field10874: [Object2069] @Directive18 @Directive30(argument80 : true) @Directive41 + field10880: [Object2069] @Directive18 @Directive30(argument80 : true) @Directive41 + field10881: [Object2069] @Directive18 @Directive30(argument80 : true) @Directive41 + field10882: [Object2069] @Directive18 @Directive30(argument80 : true) @Directive41 + field10883: [Object2029] @Directive30(argument80 : true) @Directive41 + field10884: [Object2029] @Directive30(argument80 : true) @Directive41 + field10885: Float @Directive30(argument80 : true) @Directive41 + field10886: String @Directive30(argument80 : true) @Directive41 + field10887: String @Directive30(argument80 : true) @Directive41 + field10888: String @Directive30(argument80 : true) @Directive41 + field10889: [Object2029] @Directive30(argument80 : true) @Directive41 + field10890: Boolean @Directive30(argument80 : true) @Directive41 + field10891: String @Directive30(argument80 : true) @Directive41 + field10892: [Object2069] @Directive18 @Directive30(argument80 : true) @Directive41 + field10893: String @Directive30(argument80 : true) @Directive41 + field10894: [Object2071] @Directive18 @Directive30(argument80 : true) @Directive41 + field10904: [Object2071] @Directive18 @Directive30(argument80 : true) @Directive41 + field10905: [Object2071] @Directive18 @Directive30(argument80 : true) @Directive41 + field10906: Object2071 @Directive18 @Directive30(argument80 : true) @Directive41 + field10907: Object2071 @Directive18 @Directive30(argument80 : true) @Directive41 + field10908: Scalar2 @Directive30(argument80 : true) @Directive41 + field10909: Object2071 @Directive18 @Directive30(argument80 : true) @Directive41 + field10910: Int @Directive30(argument80 : true) @Directive41 + field10911: [Object2068] @Directive18 @Directive30(argument80 : true) @Directive41 + field10912: [Object2069] @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9000: Boolean @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9115: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9185: String @Directive30(argument80 : true) @Directive41 + field9187: Object2068 @Directive18 @Directive30(argument80 : true) @Directive41 + field9301: Float @Directive30(argument80 : true) @Directive41 + field9302: Float @Directive30(argument80 : true) @Directive41 + field9303: Object2064 @Directive18 @Directive30(argument80 : true) @Directive41 + field9350: [Int] @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2066 implements Interface36 @Directive22(argument62 : "stringValue9845") @Directive30(argument79 : "stringValue9844") @Directive44(argument97 : ["stringValue9850", "stringValue9851"]) @Directive7(argument13 : "stringValue9847", argument14 : "stringValue9848", argument16 : "stringValue9849", argument17 : "stringValue9846") { + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10502: [Object2067] @Directive18 @Directive30(argument80 : true) @Directive41 + field10820: Scalar2 @Directive30(argument80 : true) @Directive41 + field10838: String @Directive30(argument80 : true) @Directive41 + field10854: String @Directive30(argument80 : true) @Directive41 + field10855: String @Directive30(argument80 : true) @Directive41 + field10856: String @Directive30(argument80 : true) @Directive41 + field10857: String @Directive30(argument80 : true) @Directive41 + field10858: String @Directive30(argument80 : true) @Directive41 + field10859: String @Directive30(argument80 : true) @Directive41 + field10860: String @Directive30(argument80 : true) @Directive41 + field10862: String @Directive30(argument80 : true) @Directive41 + field10863: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9115: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9185: String @Directive30(argument80 : true) @Directive41 + field9187: Object2067 @Directive14(argument51 : "stringValue9860", argument52 : "stringValue9861") @Directive18 @Directive30(argument80 : true) @Directive41 + field9301: Float @Directive30(argument80 : true) @Directive41 + field9302: Float @Directive30(argument80 : true) @Directive41 + field9303: Object2064 @Directive18 @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 + field9831: String @Directive30(argument80 : true) @Directive41 +} + +type Object2067 implements Interface36 @Directive22(argument62 : "stringValue9853") @Directive30(argument79 : "stringValue9852") @Directive44(argument97 : ["stringValue9858", "stringValue9859"]) @Directive7(argument13 : "stringValue9855", argument14 : "stringValue9856", argument16 : "stringValue9857", argument17 : "stringValue9854") { + field10390: String @Directive30(argument80 : true) @Directive41 + field10852: Scalar2 @Directive30(argument80 : true) @Directive41 + field10853: Object2066 @Directive18 @Directive30(argument80 : true) @Directive41 + field10861: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2068 implements Interface36 @Directive22(argument62 : "stringValue9863") @Directive30(argument79 : "stringValue9862") @Directive44(argument97 : ["stringValue9868", "stringValue9869"]) @Directive7(argument13 : "stringValue9865", argument14 : "stringValue9866", argument16 : "stringValue9867", argument17 : "stringValue9864") { + field10390: String @Directive30(argument80 : true) @Directive41 + field10478: [String] @Directive30(argument80 : true) @Directive41 + field10500: Scalar2 @Directive30(argument80 : true) @Directive41 + field10505: String @Directive30(argument80 : true) @Directive41 + field10510: String @Directive30(argument80 : true) @Directive41 + field10864: Scalar2 @Directive30(argument80 : true) @Directive41 + field10865: String @Directive30(argument80 : true) @Directive41 + field10866: String @Directive30(argument80 : true) @Directive41 + field10867: String @Directive30(argument80 : true) @Directive41 + field10868: String @Directive30(argument80 : true) @Directive41 + field10869: String @Directive30(argument80 : true) @Directive41 + field10870: String @Directive30(argument80 : true) @Directive41 + field10871: Object2065 @Directive18 @Directive30(argument80 : true) @Directive41 + field10872: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2069 implements Interface36 @Directive22(argument62 : "stringValue9871") @Directive30(argument79 : "stringValue9870") @Directive44(argument97 : ["stringValue9876", "stringValue9877"]) @Directive7(argument13 : "stringValue9873", argument14 : "stringValue9874", argument16 : "stringValue9875", argument17 : "stringValue9872") { + field10390: String @Directive30(argument80 : true) @Directive41 + field10864: Scalar2 @Directive30(argument80 : true) @Directive41 + field10871: Object2065 @Directive18 @Directive30(argument80 : true) @Directive41 + field10875: [Object2070] @Directive18 @Directive30(argument80 : true) @Directive41 + field10879: [Object2029] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9025: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9101: Int @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object207 @Directive21(argument61 : "stringValue663") @Directive44(argument97 : ["stringValue662"]) { + field1391: String +} + +type Object2070 implements Interface36 @Directive22(argument62 : "stringValue9879") @Directive30(argument79 : "stringValue9878") @Directive44(argument97 : ["stringValue9884", "stringValue9885"]) @Directive7(argument13 : "stringValue9881", argument14 : "stringValue9882", argument16 : "stringValue9883", argument17 : "stringValue9880") { + field10876: Scalar2 @Directive30(argument80 : true) @Directive41 + field10877: Int @Directive30(argument80 : true) @Directive41 + field10878: Object2069 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2071 implements Interface36 @Directive22(argument62 : "stringValue9887") @Directive30(argument79 : "stringValue9886") @Directive44(argument97 : ["stringValue9892", "stringValue9893"]) @Directive7(argument13 : "stringValue9889", argument14 : "stringValue9890", argument16 : "stringValue9891", argument17 : "stringValue9888") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10390: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10864: Scalar2 @Directive30(argument80 : true) @Directive41 + field10871: Object2065 @Directive18 @Directive30(argument80 : true) @Directive41 + field10884: [Object2029] @Directive30(argument80 : true) @Directive41 + field10889: [Object2029] @Directive30(argument80 : true) @Directive41 + field10895: Int @Directive30(argument80 : true) @Directive41 + field10896: Int @Directive30(argument80 : true) @Directive41 + field10897: Int @Directive30(argument80 : true) @Directive41 + field10898: Int @Directive30(argument80 : true) @Directive41 + field10899: Int @Directive30(argument80 : true) @Directive41 + field10900: Int @Directive30(argument80 : true) @Directive41 + field10901: Int @Directive30(argument80 : true) @Directive41 + field10902: String @Directive30(argument80 : true) @Directive41 + field10903: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9025: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2072 implements Interface36 @Directive22(argument62 : "stringValue9895") @Directive30(argument79 : "stringValue9894") @Directive44(argument97 : ["stringValue9900", "stringValue9901"]) @Directive7(argument13 : "stringValue9897", argument14 : "stringValue9898", argument16 : "stringValue9899", argument17 : "stringValue9896") { + field10820: Scalar2 @Directive30(argument80 : true) @Directive41 + field10916: Scalar2 @Directive30(argument80 : true) @Directive41 + field10917: Scalar2 @Directive30(argument80 : true) @Directive41 + field10918: String @Directive30(argument80 : true) @Directive41 + field10919: Object2073 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9303: Object2064 @Directive18 @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2073 implements Interface36 @Directive22(argument62 : "stringValue9903") @Directive30(argument79 : "stringValue9902") @Directive44(argument97 : ["stringValue9908", "stringValue9909"]) @Directive7(argument13 : "stringValue9905", argument14 : "stringValue9906", argument16 : "stringValue9907", argument17 : "stringValue9904") { + field10915: [Object2072] @Directive18 @Directive30(argument80 : true) @Directive41 + field10920: Boolean @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9025: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9101: Int @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2074 implements Interface36 @Directive22(argument62 : "stringValue9911") @Directive30(argument79 : "stringValue9910") @Directive44(argument97 : ["stringValue9916", "stringValue9917"]) @Directive7(argument13 : "stringValue9913", argument14 : "stringValue9914", argument16 : "stringValue9915", argument17 : "stringValue9912") { + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field10817: Scalar2 @Directive30(argument80 : true) @Directive41 + field10938: Int @Directive30(argument80 : true) @Directive41 + field10939: Int @Directive30(argument80 : true) @Directive41 + field10940: Int @Directive30(argument80 : true) @Directive41 + field10941: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2075 implements Interface36 @Directive22(argument62 : "stringValue9919") @Directive30(argument79 : "stringValue9918") @Directive44(argument97 : ["stringValue9924", "stringValue9925"]) @Directive7(argument13 : "stringValue9921", argument14 : "stringValue9922", argument16 : "stringValue9923", argument17 : "stringValue9920") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10539: Scalar2 @Directive30(argument80 : true) @Directive41 + field10966: Scalar2 @Directive30(argument80 : true) @Directive41 + field10967: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2076 @Directive22(argument62 : "stringValue9926") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9927", "stringValue9928"]) { + field10976: ID! @Directive30(argument80 : true) @Directive41 + field10977: Scalar2 @Directive30(argument80 : true) @Directive41 + field10978: Scalar2 @Directive30(argument80 : true) @Directive41 + field10979: String @Directive30(argument80 : true) @Directive41 + field10980: String @Directive30(argument80 : true) @Directive41 + field10981: String @Directive30(argument80 : true) @Directive41 + field10982: String @Directive30(argument80 : true) @Directive41 + field10983: String @Directive30(argument80 : true) @Directive41 + field10984: String @Directive30(argument80 : true) @Directive41 +} + +type Object2077 implements Interface92 @Directive22(argument62 : "stringValue9929") @Directive44(argument97 : ["stringValue9935", "stringValue9936"]) @Directive8(argument20 : "stringValue9934", argument21 : "stringValue9931", argument23 : "stringValue9933", argument24 : "stringValue9930", argument25 : "stringValue9932") { + field8384: Object753! + field8385: [Object2078] +} + +type Object2078 implements Interface93 @Directive22(argument62 : "stringValue9937") @Directive44(argument97 : ["stringValue9938", "stringValue9939"]) { + field8386: String! + field8999: Object2079 +} + +type Object2079 implements Interface36 @Directive22(argument62 : "stringValue9941") @Directive30(argument79 : "stringValue9940") @Directive44(argument97 : ["stringValue9946", "stringValue9947"]) @Directive7(argument13 : "stringValue9943", argument14 : "stringValue9944", argument16 : "stringValue9945", argument17 : "stringValue9942") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10389: Scalar2 @Directive30(argument80 : true) @Directive41 + field10398: String @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10439: Scalar2 @Directive30(argument80 : true) @Directive41 + field10447: [String] @Directive30(argument80 : true) @Directive41 + field10448: Object2032 @Directive18 @Directive30(argument80 : true) @Directive41 + field10656: String @Directive30(argument80 : true) @Directive41 + field10987: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object208 @Directive21(argument61 : "stringValue665") @Directive44(argument97 : ["stringValue664"]) { + field1395: Object205 + field1396: Object205 + field1397: [Object209] +} + +type Object2080 implements Interface36 @Directive22(argument62 : "stringValue9951") @Directive30(argument79 : "stringValue9950") @Directive44(argument97 : ["stringValue9956", "stringValue9957"]) @Directive7(argument13 : "stringValue9953", argument14 : "stringValue9954", argument16 : "stringValue9955", argument17 : "stringValue9952") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10398: Int @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field10441: Scalar2 @Directive30(argument80 : true) @Directive41 + field10445: Object2030 @Directive18 @Directive30(argument80 : true) @Directive41 + field10995: String @Directive30(argument80 : true) @Directive41 + field10996: String @Directive30(argument80 : true) @Directive41 + field10997: Int @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2081 @Directive22(argument62 : "stringValue9958") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9959", "stringValue9960"]) { + field11004: Boolean @Directive30(argument80 : true) @Directive41 + field11005: Boolean @Directive30(argument80 : true) @Directive41 + field11006: Int @Directive30(argument80 : true) @Directive41 + field11007: Int @Directive30(argument80 : true) @Directive41 + field11008: Int @Directive30(argument80 : true) @Directive41 + field11009: Int @Directive30(argument80 : true) @Directive41 + field11010: Int @Directive30(argument80 : true) @Directive41 + field11011: Int @Directive30(argument80 : true) @Directive41 + field11012: Boolean @Directive30(argument80 : true) @Directive41 + field11013: Boolean @Directive30(argument80 : true) @Directive41 + field11014: Boolean @Directive30(argument80 : true) @Directive41 + field11015: Boolean @Directive30(argument80 : true) @Directive41 + field11016: Boolean @Directive30(argument80 : true) @Directive41 + field11017: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2082 implements Interface36 @Directive22(argument62 : "stringValue9966") @Directive30(argument79 : "stringValue9965") @Directive44(argument97 : ["stringValue9971", "stringValue9972"]) @Directive7(argument13 : "stringValue9968", argument14 : "stringValue9969", argument16 : "stringValue9970", argument17 : "stringValue9967") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10436: [Object2030] @Directive18 @Directive30(argument80 : true) @Directive41 + field10437: Scalar2 @Directive30(argument80 : true) @Directive41 + field11027: String @Directive30(argument80 : true) @Directive41 + field11028: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9796: String @Directive30(argument80 : true) @Directive41 +} + +type Object2083 @Directive22(argument62 : "stringValue9978") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9979", "stringValue9980"]) { + field11036: ID! @Directive30(argument80 : true) @Directive41 + field11037: Object2029 @Directive30(argument80 : true) @Directive41 + field11038: Object2084 @Directive30(argument80 : true) @Directive41 +} + +type Object2084 @Directive22(argument62 : "stringValue9981") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9982", "stringValue9983"]) { + field11039: ID! @Directive30(argument80 : true) @Directive41 + field11040: String @Directive30(argument80 : true) @Directive41 + field11041: String @Directive30(argument80 : true) @Directive41 + field11042: String @Directive30(argument80 : true) @Directive41 + field11043: Boolean @Directive30(argument80 : true) @Directive41 + field11044: String @Directive30(argument80 : true) @Directive41 + field11045: String @Directive30(argument80 : true) @Directive41 + field11046: String @Directive30(argument80 : true) @Directive41 + field11047: String @Directive30(argument80 : true) @Directive41 + field11048: String @Directive30(argument80 : true) @Directive41 + field11049: String @Directive30(argument80 : true) @Directive41 + field11050: String @Directive30(argument80 : true) @Directive41 + field11051: String @Directive30(argument80 : true) @Directive41 + field11052: String @Directive30(argument80 : true) @Directive41 + field11053: String @Directive30(argument80 : true) @Directive41 + field11054: String @Directive30(argument80 : true) @Directive41 + field11055: String @Directive30(argument80 : true) @Directive41 + field11056: String @Directive30(argument80 : true) @Directive41 + field11057: String @Directive30(argument80 : true) @Directive41 + field11058: String @Directive30(argument80 : true) @Directive41 + field11059: [Object2085] @Directive30(argument80 : true) @Directive41 + field11069: [Object2085] @Directive30(argument80 : true) @Directive41 + field11070: String @Directive30(argument80 : true) @Directive41 + field11071: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2085 @Directive22(argument62 : "stringValue9984") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9985", "stringValue9986"]) { + field11060: String @Directive30(argument80 : true) @Directive41 + field11061: [Object2086] @Directive30(argument80 : true) @Directive41 + field11068: Object2086 @Directive30(argument80 : true) @Directive41 +} + +type Object2086 @Directive22(argument62 : "stringValue9987") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9988", "stringValue9989"]) { + field11062: String @Directive30(argument80 : true) @Directive41 + field11063: Scalar2 @Directive30(argument80 : true) @Directive41 + field11064: String @Directive30(argument80 : true) @Directive41 + field11065: String @Directive30(argument80 : true) @Directive41 + field11066: String @Directive30(argument80 : true) @Directive41 + field11067: String @Directive30(argument80 : true) @Directive41 +} + +type Object2087 @Directive22(argument62 : "stringValue9991") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue9992", "stringValue9993"]) { + field11076: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue9994") + field11077: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue9995") + field11078: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue9996") + field11079: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue9997") + field11080: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue9998") + field11081: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue9999") + field11082: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10000") + field11083: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10001") + field11084: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10002") + field11085: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10003") + field11086: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10004") + field11087: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10005") + field11088: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10006") + field11089: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10007") + field11090: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10008") + field11091: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10009") + field11092: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10010") + field11093: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10011") + field11094: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10012") + field11095: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10013") + field11096: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10014") + field11097: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10015") + field11098: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10016") + field11099: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10017") + field11100: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10018") + field11101: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10019") + field11102: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10020") + field11103: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10021") + field11104: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10022") + field11105: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10023") + field11106: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10024") + field11107: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10025") + field11108: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10026") + field11109: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10027") + field11110: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10028") + field11111: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10029") + field11112: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10030") + field11113: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10031") + field11114: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10032") + field11115: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10033") + field11116: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10034") + field11117: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10035") + field11118: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10036") + field11119: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10037") + field11120: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10038") + field11121: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10039") + field11122: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10040") + field11123: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10041") + field11124: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10042") + field11125: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10043") + field11126: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10044") + field11127: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10045") + field11128: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10046") + field11129: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10047") + field11130: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10048") + field11131: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10049") + field11132: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10050") + field11133: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10051") + field11134: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10052") + field11135: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10053") + field11136: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10054") + field11137: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10055") + field11138: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10056") + field11139: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10057") + field11140: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10058") + field11141: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10059") + field11142: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10060") + field11143: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10061") + field11144: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10062") + field11145: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10063") + field11146: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10064") + field11147: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10065") + field11148: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10066") + field11149: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10067") + field11150: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10068") + field11151: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10069") + field11152: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10070") + field11153: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10071") + field11154: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10072") + field11155: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10073") + field11156: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10074") + field11157: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10075") + field11158: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10076") + field11159: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10077") + field11160: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10078") + field11161: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10079") + field11162: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10080") + field11163: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10081") + field11164: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10082") + field11165: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10083") + field11166: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10084") + field11167: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10085") + field11168: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10086") + field11169: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10087") + field11170: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10088") + field11171: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10089") + field11172: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10090") + field11173: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10091") + field11174: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10092") + field11175: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10093") + field11176: Int @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10094") + field11177: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10095") + field11178: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10096") + field11179: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10097") + field11180: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue10098") +} + +type Object2088 @Directive22(argument62 : "stringValue10103") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10104", "stringValue10105"]) { + field11186: ID! @Directive30(argument80 : true) @Directive41 + field11187: String @Directive30(argument80 : true) @Directive41 + field11188: Scalar2 @Directive30(argument80 : true) @Directive41 + field11189: String @Directive30(argument80 : true) @Directive41 + field11190: String @Directive30(argument80 : true) @Directive41 + field11191: Float @Directive30(argument80 : true) @Directive41 + field11192: String @Directive30(argument80 : true) @Directive41 +} + +type Object2089 @Directive22(argument62 : "stringValue10107") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10108", "stringValue10109"]) { + field11196: Boolean! @Directive30(argument80 : true) @Directive41 + field11197: Boolean! @Directive30(argument80 : true) @Directive41 + field11198: Boolean! @Directive30(argument80 : true) @Directive41 + field11199: Boolean! @Directive30(argument80 : true) @Directive41 + field11200: Boolean! @Directive30(argument80 : true) @Directive41 + field11201: Boolean! @Directive30(argument80 : true) @Directive41 + field11202: Boolean! @Directive30(argument80 : true) @Directive41 + field11203: Boolean! @Directive30(argument80 : true) @Directive41 + field11204: Boolean! @Directive30(argument80 : true) @Directive41 + field11205: Boolean! @Directive30(argument80 : true) @Directive41 +} + +type Object209 @Directive21(argument61 : "stringValue667") @Directive44(argument97 : ["stringValue666"]) { + field1398: String + field1399: Enum95 +} + +type Object2090 @Directive22(argument62 : "stringValue10110") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10111", "stringValue10112"]) { + field11207: [Object2091] @Directive30(argument80 : true) @Directive41 + field11211: [Object2091] @Directive30(argument80 : true) @Directive41 + field11212: [Object2091] @Directive30(argument80 : true) @Directive41 + field11213: [Object2091] @Directive30(argument80 : true) @Directive41 + field11214: [Object2091] @Directive30(argument80 : true) @Directive41 + field11215: [Object2091] @Directive30(argument80 : true) @Directive41 + field11216: [Object2091] @Directive30(argument80 : true) @Directive41 + field11217: [Object2091] @Directive30(argument80 : true) @Directive41 + field11218: [Object2091] @Directive30(argument80 : true) @Directive41 + field11219: [Object2091] @Directive30(argument80 : true) @Directive41 + field11220: [Object2091] @Directive30(argument80 : true) @Directive41 + field11221: [Object2091] @Directive30(argument80 : true) @Directive41 + field11222: [Object2091] @Directive30(argument80 : true) @Directive41 + field11223: [Object2091] @Directive30(argument80 : true) @Directive41 + field11224: [Object2091] @Directive30(argument80 : true) @Directive41 + field11225: [Object2091] @Directive30(argument80 : true) @Directive41 + field11226: [Object2091] @Directive30(argument80 : true) @Directive41 + field11227: [Object2091] @Directive30(argument80 : true) @Directive41 + field11228: [Object2091] @Directive30(argument80 : true) @Directive41 + field11229: [Object2091] @Directive30(argument80 : true) @Directive41 + field11230: [Object2091] @Directive30(argument80 : true) @Directive41 + field11231: [Object2091] @Directive30(argument80 : true) @Directive41 + field11232: [Object2091] @Directive30(argument80 : true) @Directive41 + field11233: [Object2091] @Directive30(argument80 : true) @Directive41 + field11234: [Object2091] @Directive30(argument80 : true) @Directive41 + field11235: [Object2091] @Directive30(argument80 : true) @Directive41 + field11236: [Object2091] @Directive30(argument80 : true) @Directive41 + field11237: [Object2091] @Directive30(argument80 : true) @Directive41 + field11238: [Object2091] @Directive30(argument80 : true) @Directive41 +} + +type Object2091 @Directive22(argument62 : "stringValue10113") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10114", "stringValue10115"]) { + field11208: [Object2092] @Directive30(argument80 : true) @Directive41 +} + +type Object2092 @Directive22(argument62 : "stringValue10116") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10117", "stringValue10118"]) { + field11209: String @Directive30(argument80 : true) @Directive41 + field11210: String @Directive30(argument80 : true) @Directive41 +} + +type Object2093 @Directive22(argument62 : "stringValue10121") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10122", "stringValue10123"]) { + field11246: Boolean @Directive30(argument80 : true) @Directive41 + field11247: Int @Directive30(argument80 : true) @Directive41 + field11248: Float @Directive30(argument80 : true) @Directive41 + field11249: Boolean @Directive30(argument80 : true) @Directive41 + field11250: Int @Directive30(argument80 : true) @Directive41 + field11251: Int @Directive30(argument80 : true) @Directive41 + field11252: Int @Directive30(argument80 : true) @Directive41 + field11253: Boolean @Directive30(argument80 : true) @Directive41 + field11254: Boolean @Directive30(argument80 : true) @Directive41 + field11255: Float @Directive30(argument80 : true) @Directive41 + field11256: Float @Directive30(argument80 : true) @Directive41 + field11257: Float @Directive30(argument80 : true) @Directive41 + field11258: Float @Directive30(argument80 : true) @Directive41 + field11259: Boolean @Directive30(argument80 : true) @Directive41 + field11260: Float @Directive30(argument80 : true) @Directive41 + field11261: Float @Directive30(argument80 : true) @Directive41 + field11262: String @Directive30(argument80 : true) @Directive41 +} + +type Object2094 @Directive22(argument62 : "stringValue10126") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10127", "stringValue10128"]) { + field11265: Object2095 @Directive30(argument80 : true) @Directive41 +} + +type Object2095 @Directive22(argument62 : "stringValue10129") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10130", "stringValue10131"]) { + field11266: Int @Directive30(argument80 : true) @Directive41 + field11267: Int @Directive30(argument80 : true) @Directive41 + field11268: Boolean @Directive30(argument80 : true) @Directive41 + field11269: String @Directive30(argument80 : true) @Directive41 + field11270: String @Directive30(argument80 : true) @Directive41 + field11271: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2096 @Directive22(argument62 : "stringValue10136") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10137"]) { + field11276: Object2097 @Directive30(argument80 : true) @Directive41 + field11297: Object2101 @Directive30(argument80 : true) @Directive41 + field11301: Object2102 @Directive30(argument80 : true) @Directive41 +} + +type Object2097 @Directive22(argument62 : "stringValue10138") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10139"]) { + field11277: Float @Directive30(argument80 : true) @Directive41 + field11278: Float @Directive30(argument80 : true) @Directive41 + field11279: Scalar2 @Directive30(argument80 : true) @Directive41 + field11280: Scalar2 @Directive30(argument80 : true) @Directive41 + field11281: Object2098 @Directive30(argument80 : true) @Directive41 + field11289: Object2098 @Directive30(argument80 : true) @Directive41 + field11290: Object2098 @Directive30(argument80 : true) @Directive41 + field11291: [Object2100] @Directive30(argument80 : true) @Directive41 + field11295: [Object2100] @Directive30(argument80 : true) @Directive41 + field11296: [Object2100] @Directive30(argument80 : true) @Directive41 +} + +type Object2098 @Directive22(argument62 : "stringValue10140") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10141"]) { + field11282: String @Directive30(argument80 : true) @Directive41 + field11283: Float @Directive30(argument80 : true) @Directive41 + field11284: [Float] @Directive30(argument80 : true) @Directive41 + field11285: [Object2099] @Directive30(argument80 : true) @Directive41 +} + +type Object2099 @Directive22(argument62 : "stringValue10142") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10143"]) { + field11286: String @Directive30(argument80 : true) @Directive41 + field11287: Int @Directive30(argument80 : true) @Directive41 + field11288: Float @Directive30(argument80 : true) @Directive41 +} + +type Object21 @Directive21(argument61 : "stringValue183") @Directive44(argument97 : ["stringValue182"]) { + field179: Scalar2 +} + +type Object210 @Directive21(argument61 : "stringValue671") @Directive44(argument97 : ["stringValue670"]) { + field1401: [Object199] +} + +type Object2100 @Directive22(argument62 : "stringValue10144") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10145"]) { + field11292: String @Directive30(argument80 : true) @Directive41 + field11293: Int @Directive30(argument80 : true) @Directive41 + field11294: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2101 @Directive22(argument62 : "stringValue10146") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10147"]) { + field11298: Object2098 @Directive30(argument80 : true) @Directive41 + field11299: Object2098 @Directive30(argument80 : true) @Directive41 + field11300: Object2098 @Directive30(argument80 : true) @Directive41 +} + +type Object2102 @Directive22(argument62 : "stringValue10148") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10149"]) { + field11302: Float @Directive30(argument80 : true) @Directive41 + field11303: Float @Directive30(argument80 : true) @Directive41 + field11304: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2103 implements Interface92 @Directive22(argument62 : "stringValue10157") @Directive44(argument97 : ["stringValue10165"]) @Directive8(argument19 : "stringValue10163", argument20 : "stringValue10164", argument21 : "stringValue10159", argument23 : "stringValue10160", argument24 : "stringValue10158", argument26 : "stringValue10162", argument27 : "stringValue10161", argument28 : false) { + field8384: Object753! + field8385: [Object2104] +} + +type Object2104 implements Interface93 @Directive22(argument62 : "stringValue10166") @Directive44(argument97 : ["stringValue10167"]) { + field8386: String! + field8999: Object2105 +} + +type Object2105 @Directive12 @Directive22(argument62 : "stringValue10168") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10169"]) { + field11306: Enum413 @Directive3(argument3 : "stringValue10170") @Directive30(argument80 : true) @Directive41 + field11307: Scalar3 @Directive30(argument80 : true) @Directive41 + field11308: Scalar3 @Directive30(argument80 : true) @Directive41 + field11309: ID @Directive30(argument80 : true) @Directive41 + field11310: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field11311: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field11312: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field11313: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field11314: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field11315: String @Directive30(argument80 : true) @Directive41 + field11316: Enum414 @Directive3(argument3 : "stringValue10171") @Directive30(argument80 : true) @Directive41 +} + +type Object2106 @Directive22(argument62 : "stringValue10173") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10174", "stringValue10175"]) { + field11319: ID! @Directive30(argument80 : true) @Directive41 + field11320: String @Directive30(argument80 : true) @Directive41 + field11321: String @Directive30(argument80 : true) @Directive41 + field11322: String @Directive30(argument80 : true) @Directive41 + field11323: String @Directive30(argument80 : true) @Directive41 +} + +type Object2107 @Directive22(argument62 : "stringValue10176") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10177", "stringValue10178"]) { + field11324: Scalar2 @Directive30(argument80 : true) @Directive41 + field11325: Scalar2 @Directive30(argument80 : true) @Directive41 + field11326: String @Directive30(argument80 : true) @Directive41 +} + +type Object2108 implements Interface36 @Directive22(argument62 : "stringValue10180") @Directive30(argument79 : "stringValue10179") @Directive44(argument97 : ["stringValue10185", "stringValue10186"]) @Directive7(argument13 : "stringValue10182", argument14 : "stringValue10183", argument16 : "stringValue10184", argument17 : "stringValue10181") { + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field11327: Scalar2 @Directive30(argument80 : true) @Directive41 + field11328: Int @Directive30(argument80 : true) @Directive41 + field11329: Boolean @Directive30(argument80 : true) @Directive41 + field11330: Int @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2109 implements Interface36 @Directive22(argument62 : "stringValue10188") @Directive30(argument79 : "stringValue10187") @Directive44(argument97 : ["stringValue10193", "stringValue10194"]) @Directive7(argument13 : "stringValue10190", argument14 : "stringValue10191", argument16 : "stringValue10192", argument17 : "stringValue10189") { + field10390: String @Directive30(argument80 : true) @Directive41 + field10393: Scalar2 @Directive30(argument80 : true) @Directive41 + field11327: Scalar2 @Directive30(argument80 : true) @Directive41 + field11328: Int @Directive30(argument80 : true) @Directive41 + field11331: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object211 @Directive21(argument61 : "stringValue673") @Directive44(argument97 : ["stringValue672"]) { + field1402: [Object36] @deprecated + field1403: Object35 +} + +type Object2110 @Directive22(argument62 : "stringValue10195") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10196", "stringValue10197"]) { + field11332: Int @Directive30(argument80 : true) @Directive41 + field11333: [String] @Directive30(argument80 : true) @Directive41 + field11334: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2111 @Directive22(argument62 : "stringValue10198") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10199", "stringValue10200"]) { + field11335: String @Directive30(argument80 : true) @Directive41 + field11336: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2112 implements Interface47 @Directive20(argument58 : "stringValue10202", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10201") @Directive31 @Directive44(argument97 : ["stringValue10203", "stringValue10204"]) { + field11337: String + field11338: String + field11339: Float + field11340: Int + field11341: [Object792!] + field11342: [Object791!] + field11343: [Object1315!] + field3160: ID! +} + +type Object2113 @Directive22(argument62 : "stringValue10205") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10206", "stringValue10207"]) { + field11344: Scalar2 @Directive30(argument80 : true) @Directive41 + field11345: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object2114 @Directive22(argument62 : "stringValue10209") @Directive30(argument79 : "stringValue10208") @Directive44(argument97 : ["stringValue10210", "stringValue10211"]) { + field11346: ID! @Directive30(argument80 : true) @Directive41 + field11347: Boolean @Directive30(argument80 : true) @Directive41 + field11348: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2115 @Directive22(argument62 : "stringValue10212") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10213", "stringValue10214"]) { + field11349: String @Directive30(argument80 : true) @Directive41 + field11350: String @Directive30(argument80 : true) @Directive41 + field11351: String @Directive30(argument80 : true) @Directive41 + field11352: String @Directive30(argument80 : true) @Directive41 + field11353: String @Directive30(argument80 : true) @Directive41 + field11354: String @Directive30(argument80 : true) @Directive41 + field11355: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2116 @Directive22(argument62 : "stringValue10215") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10216", "stringValue10217"]) { + field11356: Int @Directive30(argument80 : true) @Directive41 + field11357: [String] @Directive30(argument80 : true) @Directive41 + field11358: String @Directive30(argument80 : true) @Directive41 + field11359: String @Directive30(argument80 : true) @Directive41 + field11360: String @Directive30(argument80 : true) @Directive41 + field11361: String @Directive30(argument80 : true) @Directive41 + field11362: String @Directive30(argument80 : true) @Directive41 +} + +type Object2117 implements Interface36 @Directive22(argument62 : "stringValue10219") @Directive30(argument79 : "stringValue10218") @Directive44(argument97 : ["stringValue10224", "stringValue10225"]) @Directive7(argument13 : "stringValue10221", argument14 : "stringValue10222", argument16 : "stringValue10223", argument17 : "stringValue10220") { + field11363: Int @Directive30(argument80 : true) @Directive41 + field11364: [Object2118] @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2118 implements Interface36 @Directive22(argument62 : "stringValue10227") @Directive30(argument79 : "stringValue10226") @Directive44(argument97 : ["stringValue10232", "stringValue10233"]) @Directive7(argument13 : "stringValue10229", argument14 : "stringValue10230", argument16 : "stringValue10231", argument17 : "stringValue10228") { + field11365: Scalar2 @Directive30(argument80 : true) @Directive41 + field11366: String @Directive30(argument80 : true) @Directive41 + field11367: Scalar2 @Directive30(argument80 : true) @Directive41 + field11368: Object2117 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 + field9698: Object2028 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2119 @Directive22(argument62 : "stringValue10236") @Directive31 @Directive44(argument97 : ["stringValue10234", "stringValue10235"]) { + field11369: Scalar3 + field11370: Scalar3 +} + +type Object212 @Directive21(argument61 : "stringValue675") @Directive44(argument97 : ["stringValue674"]) { + field1404: String +} + +type Object2120 @Directive22(argument62 : "stringValue10237") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10238", "stringValue10239"]) { + field11371: Float @Directive30(argument80 : true) @Directive41 + field11372: Float @Directive30(argument80 : true) @Directive41 + field11373: Float @Directive30(argument80 : true) @Directive41 + field11374: Float @Directive30(argument80 : true) @Directive41 + field11375: Float @Directive30(argument80 : true) @Directive41 + field11376: Float @Directive30(argument80 : true) @Directive41 + field11377: Float @Directive30(argument80 : true) @Directive41 + field11378: Float @Directive30(argument80 : true) @Directive41 + field11379: Float @Directive30(argument80 : true) @Directive41 + field11380: Float @Directive30(argument80 : true) @Directive41 + field11381: Float @Directive30(argument80 : true) @Directive41 + field11382: Float @Directive30(argument80 : true) @Directive41 + field11383: Float @Directive30(argument80 : true) @Directive41 + field11384: Float @Directive30(argument80 : true) @Directive41 + field11385: Float @Directive30(argument80 : true) @Directive41 + field11386: Float @Directive30(argument80 : true) @Directive41 + field11387: Float @Directive30(argument80 : true) @Directive41 + field11388: Float @Directive30(argument80 : true) @Directive41 + field11389: Float @Directive30(argument80 : true) @Directive41 + field11390: Float @Directive30(argument80 : true) @Directive41 + field11391: Float @Directive30(argument80 : true) @Directive41 + field11392: Float @Directive30(argument80 : true) @Directive41 + field11393: Float @Directive30(argument80 : true) @Directive41 + field11394: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2121 @Directive22(argument62 : "stringValue10240") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10241", "stringValue10242"]) { + field11395: Float @Directive30(argument80 : true) @Directive41 + field11396: Float @Directive30(argument80 : true) @Directive41 + field11397: Float @Directive30(argument80 : true) @Directive41 + field11398: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2122 @Directive22(argument62 : "stringValue10243") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10244", "stringValue10245"]) { + field11399: Float @Directive30(argument80 : true) @Directive41 + field11400: Float @Directive30(argument80 : true) @Directive41 + field11401: Float @Directive30(argument80 : true) @Directive41 + field11402: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2123 @Directive22(argument62 : "stringValue10246") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10247", "stringValue10248"]) { + field11403: Scalar2 @Directive30(argument80 : true) @Directive41 + field11404: Scalar2 @Directive30(argument80 : true) @Directive41 + field11405: Scalar2 @Directive30(argument80 : true) @Directive41 + field11406: Scalar2 @Directive30(argument80 : true) @Directive41 + field11407: Scalar2 @Directive30(argument80 : true) @Directive41 + field11408: String @Directive30(argument80 : true) @Directive41 + field11409: String @Directive30(argument80 : true) @Directive41 + field11410: Object2120 @Directive30(argument80 : true) @Directive41 + field11411: Object2122 @Directive30(argument80 : true) @Directive41 + field11412: Object2121 @Directive30(argument80 : true) @Directive41 + field11413: Object2121 @Directive30(argument80 : true) @Directive41 + field11414: Object2121 @Directive30(argument80 : true) @Directive41 +} + +type Object2124 implements Interface36 @Directive22(argument62 : "stringValue10250") @Directive30(argument79 : "stringValue10249") @Directive44(argument97 : ["stringValue10255", "stringValue10256"]) @Directive7(argument13 : "stringValue10252", argument14 : "stringValue10253", argument16 : "stringValue10254", argument17 : "stringValue10251") { + field10387: String @Directive30(argument80 : true) @Directive41 + field10390: String @Directive30(argument80 : true) @Directive41 + field10398: Int @Directive30(argument80 : true) @Directive41 + field10817: Scalar2 @Directive30(argument80 : true) @Directive41 + field10864: Scalar2 @Directive30(argument80 : true) @Directive41 + field11328: Int @Directive30(argument80 : true) @Directive41 + field11415: Int @Directive30(argument80 : true) @Directive41 + field11416: String @Directive30(argument80 : true) @Directive41 + field11417: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: String @Directive30(argument80 : true) @Directive41 + field9142: String @Directive30(argument80 : true) @Directive41 +} + +type Object2125 @Directive22(argument62 : "stringValue10257") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10258", "stringValue10259"]) { + field11418: String @Directive30(argument80 : true) @Directive41 + field11419: String @Directive30(argument80 : true) @Directive41 + field11420: String @Directive30(argument80 : true) @Directive41 +} + +type Object2126 implements Interface45 @Directive22(argument62 : "stringValue10260") @Directive31 @Directive44(argument97 : ["stringValue10261", "stringValue10262"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object2127 @Directive20(argument58 : "stringValue10264", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10263") @Directive31 @Directive44(argument97 : ["stringValue10265", "stringValue10266"]) { + field11421: String + field11422: Object763 + field11423: String + field11424: String + field11425: String + field11426: String + field11427: String +} + +type Object2128 implements Interface77 @Directive20(argument58 : "stringValue10268", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10267") @Directive31 @Directive44(argument97 : ["stringValue10269", "stringValue10270"]) { + field11428: Enum415 + field5188: Enum251 +} + +type Object2129 implements Interface77 @Directive20(argument58 : "stringValue10276", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10275") @Directive31 @Directive44(argument97 : ["stringValue10277", "stringValue10278"]) { + field11429: String + field5188: Enum251 +} + +type Object213 @Directive21(argument61 : "stringValue678") @Directive44(argument97 : ["stringValue677"]) { + field1406: String! @deprecated + field1407: Object214 + field1416: Object216 + field1424: String! + field1425: Object217 + field1479: Object234 +} + +type Object2130 implements Interface77 @Directive20(argument58 : "stringValue10280", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10279") @Directive31 @Directive44(argument97 : ["stringValue10281", "stringValue10282"]) { + field11429: String + field5188: Enum251 +} + +type Object2131 implements Interface77 @Directive20(argument58 : "stringValue10284", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10283") @Directive31 @Directive44(argument97 : ["stringValue10285", "stringValue10286"]) { + field11430: Object398 + field5188: Enum251 +} + +type Object2132 implements Interface76 @Directive21(argument61 : "stringValue10288") @Directive22(argument62 : "stringValue10287") @Directive31 @Directive44(argument97 : ["stringValue10289", "stringValue10290", "stringValue10291"]) @Directive45(argument98 : ["stringValue10292"]) { + field11431: Object2133 + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] +} + +type Object2133 @Directive20(argument58 : "stringValue10294", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10293") @Directive31 @Directive44(argument97 : ["stringValue10295", "stringValue10296"]) { + field11432: String + field11433: String + field11434: Object398 + field11435: Object1075 + field11436: Boolean +} + +type Object2134 implements Interface77 @Directive20(argument58 : "stringValue10298", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10297") @Directive31 @Directive44(argument97 : ["stringValue10299", "stringValue10300"]) { + field5188: Enum251 +} + +type Object2135 implements Interface77 @Directive20(argument58 : "stringValue10302", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10301") @Directive31 @Directive44(argument97 : ["stringValue10303", "stringValue10304"]) { + field11437: Object890 + field5188: Enum251 +} + +type Object2136 @Directive22(argument62 : "stringValue10305") @Directive31 @Directive44(argument97 : ["stringValue10306", "stringValue10307"]) { + field11438: String + field11439: String + field11440: String + field11441: Object478 +} + +type Object2137 implements Interface3 @Directive20(argument58 : "stringValue10311", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10308") @Directive31 @Directive44(argument97 : ["stringValue10309", "stringValue10310"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2138 implements Interface36 @Directive22(argument62 : "stringValue10313") @Directive28(argument77 : "stringValue10312") @Directive30(argument86 : "stringValue10314") @Directive44(argument97 : ["stringValue10319", "stringValue10320"]) @Directive7(argument13 : "stringValue10316", argument14 : "stringValue10317", argument16 : "stringValue10318", argument17 : "stringValue10315") { + field11442: Int @Directive30(argument80 : true) @Directive41 + field11443: String @Directive30(argument80 : true) @Directive41 + field11444: String @Directive30(argument80 : true) @Directive41 + field11445: String @Directive30(argument80 : true) @Directive41 + field11446: Scalar3 @Directive30(argument80 : true) @Directive41 + field11447(argument281: Int, argument282: Int, argument283: String, argument284: String): Object2139 @Directive30(argument80 : true) @Directive41 + field11453: [String] @Directive3(argument3 : "stringValue10350") @Directive30(argument80 : true) @Directive41 + field11454(argument289: Int, argument290: Int, argument291: String, argument292: String): Object2144 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue10351") + field11460: [String] @Directive3(argument3 : "stringValue10380") @Directive30(argument80 : true) @Directive41 + field11461: [String] @Directive3(argument3 : "stringValue10381") @Directive30(argument80 : true) @Directive41 + field11462: [String] @Directive3(argument3 : "stringValue10382") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9024: String @Directive30(argument80 : true) @Directive41 +} + +type Object2139 implements Interface92 @Directive22(argument62 : "stringValue10326") @Directive28(argument77 : "stringValue10325") @Directive44(argument97 : ["stringValue10327", "stringValue10328"]) @Directive8(argument21 : "stringValue10322", argument23 : "stringValue10324", argument24 : "stringValue10321", argument25 : "stringValue10323") { + field8384: Object753! + field8385: [Object2140] +} + +type Object214 @Directive21(argument61 : "stringValue680") @Directive44(argument97 : ["stringValue679"]) { + field1408: [Object204] + field1409: Object205 + field1410: Object205 + field1411: String + field1412: Object215 +} + +type Object2140 implements Interface93 @Directive22(argument62 : "stringValue10330") @Directive28(argument77 : "stringValue10329") @Directive44(argument97 : ["stringValue10331", "stringValue10332"]) { + field8386: String! + field8999: Object2141 +} + +type Object2141 @Directive12 @Directive22(argument62 : "stringValue10334") @Directive28(argument77 : "stringValue10333") @Directive30(argument86 : "stringValue10335") @Directive44(argument97 : ["stringValue10336", "stringValue10337"]) { + field11448: ID! @Directive30(argument80 : true) @Directive41 + field11449: String @Directive30(argument80 : true) @Directive41 + field11450: String @Directive30(argument80 : true) @Directive41 + field11451: String @Directive30(argument80 : true) @Directive41 + field11452(argument285: Int, argument286: Int, argument287: String, argument288: String): Object2142 @Directive30(argument80 : true) @Directive41 +} + +type Object2142 implements Interface92 @Directive22(argument62 : "stringValue10343") @Directive28(argument77 : "stringValue10342") @Directive44(argument97 : ["stringValue10344", "stringValue10345"]) @Directive8(argument21 : "stringValue10339", argument23 : "stringValue10341", argument24 : "stringValue10338", argument25 : "stringValue10340") { + field8384: Object753! + field8385: [Object2143] +} + +type Object2143 implements Interface93 @Directive22(argument62 : "stringValue10347") @Directive28(argument77 : "stringValue10346") @Directive44(argument97 : ["stringValue10348", "stringValue10349"]) { + field8386: String! + field8999: Object2138 +} + +type Object2144 implements Interface92 @Directive22(argument62 : "stringValue10353") @Directive28(argument77 : "stringValue10352") @Directive44(argument97 : ["stringValue10354", "stringValue10355"]) { + field8384: Object753! + field8385: [Object2145] +} + +type Object2145 implements Interface93 @Directive22(argument62 : "stringValue10357") @Directive28(argument77 : "stringValue10356") @Directive44(argument97 : ["stringValue10358", "stringValue10359"]) { + field8386: String! + field8999: Object2146 +} + +type Object2146 implements Interface36 @Directive22(argument62 : "stringValue10361") @Directive28(argument77 : "stringValue10360") @Directive30(argument86 : "stringValue10362") @Directive44(argument97 : ["stringValue10367", "stringValue10368"]) @Directive7(argument13 : "stringValue10364", argument14 : "stringValue10365", argument16 : "stringValue10366", argument17 : "stringValue10363") { + field11455: Int @Directive3(argument3 : "stringValue10369") @Directive30(argument80 : true) @Directive41 + field11456: Int @Directive3(argument3 : "stringValue10370") @Directive30(argument80 : true) @Directive41 + field11457: String @Directive30(argument80 : true) @Directive41 + field11458: String @Directive30(argument80 : true) @Directive41 + field11459(argument293: Int, argument294: Int, argument295: String, argument296: String): Object2147 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue10371") + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 +} + +type Object2147 implements Interface92 @Directive22(argument62 : "stringValue10373") @Directive28(argument77 : "stringValue10372") @Directive44(argument97 : ["stringValue10374", "stringValue10375"]) { + field8384: Object753! + field8385: [Object2148] +} + +type Object2148 implements Interface93 @Directive22(argument62 : "stringValue10377") @Directive28(argument77 : "stringValue10376") @Directive44(argument97 : ["stringValue10378", "stringValue10379"]) { + field8386: String! + field8999: Object2138 +} + +type Object2149 implements Interface3 @Directive22(argument62 : "stringValue10383") @Directive31 @Directive44(argument97 : ["stringValue10384", "stringValue10385"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object215 @Directive21(argument61 : "stringValue682") @Directive44(argument97 : ["stringValue681"]) { + field1413: String + field1414: Enum96 + field1415: Union36 +} + +type Object2150 implements Interface36 & Interface96 @Directive22(argument62 : "stringValue10386") @Directive42(argument96 : ["stringValue10387", "stringValue10388"]) @Directive44(argument97 : ["stringValue10392", "stringValue10393"]) @Directive45(argument98 : ["stringValue10394"]) @Directive7(argument14 : "stringValue10390", argument16 : "stringValue10391", argument17 : "stringValue10389") { + field10478: String + field11463: Object2151 @Directive4(argument5 : "stringValue10397") + field11488: Enum416 + field11489: String @deprecated + field11490: Int @Directive3(argument3 : "stringValue10451") @deprecated + field11491: Int @Directive3(argument3 : "stringValue10452") @deprecated + field11492: String @deprecated + field2312: ID! + field8988: Scalar4 @Directive13(argument49 : "stringValue10395") + field8989: Scalar4 @Directive13(argument49 : "stringValue10396") + field9024: String +} + +type Object2151 implements Interface36 & Interface97 & Interface98 @Directive22(argument62 : "stringValue10398") @Directive42(argument96 : ["stringValue10399", "stringValue10400"]) @Directive44(argument97 : ["stringValue10407", "stringValue10408"]) @Directive45(argument98 : ["stringValue10409"]) @Directive7(argument11 : "stringValue10406", argument12 : "stringValue10403", argument13 : "stringValue10402", argument14 : "stringValue10404", argument16 : "stringValue10405", argument17 : "stringValue10401") { + field10863: String @Directive3(argument3 : "stringValue10440") + field10926: String @Directive3(argument3 : "stringValue10412") + field11193: String @Directive3(argument3 : "stringValue10432") + field11241: String @Directive3(argument3 : "stringValue10418") + field11464: String @Directive3(argument3 : "stringValue10414") + field11465: String @Directive3(argument3 : "stringValue10415") + field11466: String @Directive3(argument3 : "stringValue10416") + field11467: String @Directive3(argument3 : "stringValue10417") + field11468: String @Directive3(argument3 : "stringValue10421") + field11469: String @Directive3(argument3 : "stringValue10422") + field11470: Object2152 @Directive3(argument3 : "stringValue10423") + field11473: String @Directive3(argument3 : "stringValue10428") + field11474: String @Directive3(argument3 : "stringValue10429") + field11475: String @Directive3(argument3 : "stringValue10430") + field11476: String @Directive3(argument3 : "stringValue10431") + field11477: [Object2153!]! @Directive3(argument3 : "stringValue10433") @deprecated + field11484: String @Directive3(argument3 : "stringValue10439") + field11485: [Object2154] @Directive3(argument3 : "stringValue10441") + field2312: ID! + field8994: String @Directive3(argument3 : "stringValue10410") + field8995: [Object792!]! @Directive13(argument49 : "stringValue10420") + field8996: Object12716 + field9025: String @Directive3(argument3 : "stringValue10411") + field9026: String @Directive3(argument3 : "stringValue10419") + field9093: String @Directive3(argument3 : "stringValue10438") + field9101: String @Directive3(argument3 : "stringValue10413") +} + +type Object2152 @Directive22(argument62 : "stringValue10426") @Directive42(argument96 : ["stringValue10424", "stringValue10425"]) @Directive44(argument97 : ["stringValue10427"]) { + field11471: ID! + field11472: String +} + +type Object2153 @Directive22(argument62 : "stringValue10436") @Directive42(argument96 : ["stringValue10434", "stringValue10435"]) @Directive44(argument97 : ["stringValue10437"]) { + field11478: ID! + field11479: String + field11480: String + field11481: String + field11482: String + field11483: String +} + +type Object2154 @Directive12 @Directive22(argument62 : "stringValue10444") @Directive42(argument96 : ["stringValue10442", "stringValue10443"]) @Directive44(argument97 : ["stringValue10445"]) { + field11486: String @Directive3(argument3 : "stringValue10446") + field11487: String @Directive3(argument3 : "stringValue10447") +} + +type Object2155 implements Interface3 @Directive20(argument58 : "stringValue10454", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10453") @Directive31 @Directive44(argument97 : ["stringValue10455", "stringValue10456"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2156 implements Interface3 @Directive20(argument58 : "stringValue10458", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10457") @Directive31 @Directive44(argument97 : ["stringValue10459", "stringValue10460"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2157 implements Interface3 @Directive22(argument62 : "stringValue10461") @Directive31 @Directive44(argument97 : ["stringValue10462", "stringValue10463"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2158 implements Interface105 @Directive21(argument61 : "stringValue10472") @Directive44(argument97 : ["stringValue10471"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11513: Object2161 + field11535: String + field11536: String + field11537: String + field11538: String + field11539: Int + field11540: Boolean +} + +type Object2159 @Directive21(argument61 : "stringValue10466") @Directive44(argument97 : ["stringValue10465"]) { + field11494: String + field11495: String @deprecated + field11496: String @deprecated + field11497: [Object2160] + field11508: Enum418 @deprecated + field11509: Scalar1 + field11510: String +} + +type Object216 @Directive21(argument61 : "stringValue685") @Directive44(argument97 : ["stringValue684"]) { + field1417: [Object204] + field1418: Object205 + field1419: Object205 + field1420: Object205 + field1421: Object205 + field1422: Object215 + field1423: Object208 +} + +type Object2160 @Directive21(argument61 : "stringValue10468") @Directive44(argument97 : ["stringValue10467"]) { + field11498: String + field11499: String + field11500: Enum417 + field11501: String + field11502: String + field11503: String + field11504: String + field11505: String + field11506: String + field11507: [String!] +} + +type Object2161 @Directive21(argument61 : "stringValue10474") @Directive44(argument97 : ["stringValue10473"]) { + field11514: [Object2162] + field11526: String + field11527: String + field11528: [String] + field11529: String @deprecated + field11530: String + field11531: Boolean + field11532: [String] + field11533: String + field11534: Enum419 +} + +type Object2162 @Directive21(argument61 : "stringValue10476") @Directive44(argument97 : ["stringValue10475"]) { + field11515: String + field11516: String + field11517: Boolean + field11518: Union169 + field11524: Boolean @deprecated + field11525: Boolean +} + +type Object2163 @Directive21(argument61 : "stringValue10479") @Directive44(argument97 : ["stringValue10478"]) { + field11519: Boolean +} + +type Object2164 @Directive21(argument61 : "stringValue10481") @Directive44(argument97 : ["stringValue10480"]) { + field11520: Float +} + +type Object2165 @Directive21(argument61 : "stringValue10483") @Directive44(argument97 : ["stringValue10482"]) { + field11521: Int +} + +type Object2166 @Directive21(argument61 : "stringValue10485") @Directive44(argument97 : ["stringValue10484"]) { + field11522: Scalar2 +} + +type Object2167 @Directive21(argument61 : "stringValue10487") @Directive44(argument97 : ["stringValue10486"]) { + field11523: String +} + +type Object2168 implements Interface106 @Directive21(argument61 : "stringValue10505") @Directive44(argument97 : ["stringValue10504"]) { + field11541: Enum420 + field11542: Enum421 + field11543: Object2169 + field11558: Float + field11559: String + field11560: String + field11561: Object2169 + field11562: Object2172 + field11565: Int +} + +type Object2169 @Directive21(argument61 : "stringValue10493") @Directive44(argument97 : ["stringValue10492"]) { + field11544: String + field11545: Enum422 + field11546: Enum423 + field11547: Enum424 + field11548: Object2170 +} + +type Object217 @Directive21(argument61 : "stringValue687") @Directive44(argument97 : ["stringValue686"]) { + field1426: Object204 + field1427: Object218 + field1434: Object218 + field1435: Object218 + field1436: Object221 + field1441: [Object223] + field1445: Object224 + field1478: Union36 +} + +type Object2170 @Directive21(argument61 : "stringValue10498") @Directive44(argument97 : ["stringValue10497"]) { + field11549: String + field11550: Float + field11551: Float + field11552: Float + field11553: Float + field11554: [Object2171] + field11557: Enum425 +} + +type Object2171 @Directive21(argument61 : "stringValue10500") @Directive44(argument97 : ["stringValue10499"]) { + field11555: String + field11556: Float +} + +type Object2172 @Directive21(argument61 : "stringValue10503") @Directive44(argument97 : ["stringValue10502"]) { + field11563: String + field11564: String +} + +type Object2173 implements Interface105 @Directive21(argument61 : "stringValue10507") @Directive44(argument97 : ["stringValue10506"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11566: String +} + +type Object2174 implements Interface105 @Directive21(argument61 : "stringValue10509") @Directive44(argument97 : ["stringValue10508"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +type Object2175 @Directive21(argument61 : "stringValue10511") @Directive44(argument97 : ["stringValue10510"]) { + field11567: Scalar2 + field11568: String + field11569: Scalar2 + field11570: String + field11571: Scalar2 + field11572: Scalar2 + field11573: String +} + +type Object2176 implements Interface107 @Directive21(argument61 : "stringValue10515") @Directive44(argument97 : ["stringValue10514"]) { + field11574: Enum426 + field11575: Enum427 +} + +type Object2177 implements Interface107 @Directive21(argument61 : "stringValue10518") @Directive44(argument97 : ["stringValue10517"]) { + field11574: Enum426 + field11576: String +} + +type Object2178 implements Interface105 @Directive21(argument61 : "stringValue10520") @Directive44(argument97 : ["stringValue10519"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +type Object2179 implements Interface105 @Directive21(argument61 : "stringValue10522") @Directive44(argument97 : ["stringValue10521"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +type Object218 @Directive21(argument61 : "stringValue689") @Directive44(argument97 : ["stringValue688"]) { + field1428: Object219 + field1431: Object220 + field1433: String +} + +type Object2180 implements Interface105 @Directive21(argument61 : "stringValue10524") @Directive44(argument97 : ["stringValue10523"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +type Object2181 @Directive21(argument61 : "stringValue10526") @Directive44(argument97 : ["stringValue10525"]) { + field11577: String + field11578: String + field11579: String + field11580: Float + field11581: Scalar2 + field11582: String +} + +type Object2182 implements Interface105 @Directive21(argument61 : "stringValue10528") @Directive44(argument97 : ["stringValue10527"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11583: String! + field11584: String + field11585: Interface105 +} + +type Object2183 implements Interface105 @Directive21(argument61 : "stringValue10530") @Directive44(argument97 : ["stringValue10529"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11586: Boolean + field11587: [String] + field11588: Boolean +} + +type Object2184 @Directive21(argument61 : "stringValue10532") @Directive44(argument97 : ["stringValue10531"]) { + field11589: String! + field11590: Boolean! + field11591: String + field11592: String +} + +type Object2185 implements Interface105 @Directive21(argument61 : "stringValue10534") @Directive44(argument97 : ["stringValue10533"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11593: String! +} + +type Object2186 implements Interface108 @Directive21(argument61 : "stringValue10538") @Directive44(argument97 : ["stringValue10537"]) { + field11594: String! + field11595: Enum428 + field11596: Float + field11597: String + field11598: Interface106 + field11599: Interface105 + field11600: Enum429 + field11601: Int +} + +type Object2187 implements Interface107 @Directive21(argument61 : "stringValue10541") @Directive44(argument97 : ["stringValue10540"]) { + field11574: Enum426 + field11576: String +} + +type Object2188 implements Interface108 @Directive21(argument61 : "stringValue10543") @Directive44(argument97 : ["stringValue10542"]) { + field11594: String! + field11595: Enum428 + field11596: Float + field11597: String + field11598: Interface106 + field11599: Interface105 + field11602: Enum430 + field11603: Object2189 +} + +type Object2189 implements Interface108 @Directive21(argument61 : "stringValue10546") @Directive44(argument97 : ["stringValue10545"]) { + field11594: String! + field11595: Enum428 + field11596: Float + field11597: String + field11598: Interface106 + field11599: Interface105 + field11604: String + field11605: String + field11606: Float @deprecated + field11607: Object2190 + field11611: Object2159 +} + +type Object219 @Directive21(argument61 : "stringValue691") @Directive44(argument97 : ["stringValue690"]) { + field1429: String + field1430: String +} + +type Object2190 @Directive21(argument61 : "stringValue10548") @Directive44(argument97 : ["stringValue10547"]) { + field11608: Enum431 + field11609: String + field11610: Boolean +} + +type Object2191 @Directive21(argument61 : "stringValue10551") @Directive44(argument97 : ["stringValue10550"]) { + field11612: Float + field11613: Float + field11614: String + field11615: String + field11616: Int + field11617: Boolean +} + +type Object2192 implements Interface105 @Directive21(argument61 : "stringValue10553") @Directive44(argument97 : ["stringValue10552"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String +} + +type Object2193 implements Interface105 @Directive21(argument61 : "stringValue10555") @Directive44(argument97 : ["stringValue10554"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11620: String +} + +type Object2194 implements Interface105 @Directive21(argument61 : "stringValue10557") @Directive44(argument97 : ["stringValue10556"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String + field11621: String + field11622: String + field11623: String +} + +type Object2195 implements Interface105 @Directive21(argument61 : "stringValue10559") @Directive44(argument97 : ["stringValue10558"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String +} + +type Object2196 implements Interface105 @Directive21(argument61 : "stringValue10561") @Directive44(argument97 : ["stringValue10560"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String +} + +type Object2197 implements Interface105 @Directive21(argument61 : "stringValue10563") @Directive44(argument97 : ["stringValue10562"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11624: String +} + +type Object2198 implements Interface105 @Directive21(argument61 : "stringValue10565") @Directive44(argument97 : ["stringValue10564"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11625: String +} + +type Object2199 implements Interface105 @Directive21(argument61 : "stringValue10567") @Directive44(argument97 : ["stringValue10566"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11625: String +} + +type Object22 @Directive21(argument61 : "stringValue185") @Directive44(argument97 : ["stringValue184"]) { + field180: String +} + +type Object220 @Directive21(argument61 : "stringValue693") @Directive44(argument97 : ["stringValue692"]) { + field1432: String +} + +type Object2200 implements Interface105 @Directive21(argument61 : "stringValue10569") @Directive44(argument97 : ["stringValue10568"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11621: String +} + +type Object2201 implements Interface105 @Directive21(argument61 : "stringValue10571") @Directive44(argument97 : ["stringValue10570"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11626: String + field11627: Object2191! +} + +type Object2202 implements Interface105 @Directive21(argument61 : "stringValue10573") @Directive44(argument97 : ["stringValue10572"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11622: String! +} + +type Object2203 implements Interface105 @Directive21(argument61 : "stringValue10575") @Directive44(argument97 : ["stringValue10574"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String +} + +type Object2204 implements Interface105 @Directive21(argument61 : "stringValue10577") @Directive44(argument97 : ["stringValue10576"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11628: Object2205! +} + +type Object2205 @Directive21(argument61 : "stringValue10579") @Directive44(argument97 : ["stringValue10578"]) { + field11629: String + field11630: [Object2181!] + field11631: Object2159 + field11632: Object2159 + field11633: Object2159 + field11634: Object2159 + field11635: Object2159 +} + +type Object2206 implements Interface105 @Directive21(argument61 : "stringValue10581") @Directive44(argument97 : ["stringValue10580"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String +} + +type Object2207 implements Interface105 @Directive21(argument61 : "stringValue10583") @Directive44(argument97 : ["stringValue10582"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11626: String! + field11636: String +} + +type Object2208 implements Interface105 @Directive21(argument61 : "stringValue10585") @Directive44(argument97 : ["stringValue10584"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11513: Object2161 +} + +type Object2209 implements Interface105 @Directive21(argument61 : "stringValue10587") @Directive44(argument97 : ["stringValue10586"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11621: String + field11637: String + field11638: String + field11639: Int + field11640: Int + field11641: Int +} + +type Object221 @Directive21(argument61 : "stringValue695") @Directive44(argument97 : ["stringValue694"]) { + field1437: [Object222] +} + +type Object2210 implements Interface105 @Directive21(argument61 : "stringValue10589") @Directive44(argument97 : ["stringValue10588"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11642: String +} + +type Object2211 implements Interface105 @Directive21(argument61 : "stringValue10591") @Directive44(argument97 : ["stringValue10590"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11643: String +} + +type Object2212 implements Interface105 @Directive21(argument61 : "stringValue10593") @Directive44(argument97 : ["stringValue10592"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String + field11621: String! + field11644: String + field11645: String! + field11646: String! + field11647: String! + field11648: Boolean! + field11649: String + field11650: Int! +} + +type Object2213 implements Interface105 @Directive21(argument61 : "stringValue10595") @Directive44(argument97 : ["stringValue10594"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11637: Scalar3 + field11638: Scalar3 + field11651: Scalar3 +} + +type Object2214 implements Interface105 @Directive21(argument61 : "stringValue10597") @Directive44(argument97 : ["stringValue10596"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11645: String! + field11646: String! + field11647: String! + field11652: String! +} + +type Object2215 implements Interface105 @Directive21(argument61 : "stringValue10599") @Directive44(argument97 : ["stringValue10598"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11618: String @deprecated + field11619: String + field11621: String! + field11622: String + field11645: String! + field11646: String! + field11647: String! + field11653: String! + field11654: String +} + +type Object2216 implements Interface105 @Directive21(argument61 : "stringValue10601") @Directive44(argument97 : ["stringValue10600"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11593: String! + field11621: String! + field11622: String! + field11645: String! + field11646: String! + field11647: String! + field11648: Boolean! + field11649: String + field11650: Int! + field11655: String + field11656: Int! + field11657: String! + field11658: String! + field11659: String + field11660: String + field11661: Int + field11662: String! + field11663: Int! + field11664: String! + field11665: Boolean! +} + +type Object2217 implements Interface105 @Directive21(argument61 : "stringValue10603") @Directive44(argument97 : ["stringValue10602"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11621: String + field11647: String! + field11658: String! + field11666: String! + field11667: Boolean! + field11668: Boolean! + field11669: Int +} + +type Object2218 implements Interface105 @Directive21(argument61 : "stringValue10605") @Directive44(argument97 : ["stringValue10604"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11656: Int! + field11670: Boolean! + field11671: String! + field11672: [Object2184] +} + +type Object2219 implements Interface105 @Directive21(argument61 : "stringValue10607") @Directive44(argument97 : ["stringValue10606"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11658: String! +} + +type Object222 @Directive21(argument61 : "stringValue697") @Directive44(argument97 : ["stringValue696"]) { + field1438: String + field1439: String + field1440: Scalar5 +} + +type Object2220 implements Interface105 @Directive21(argument61 : "stringValue10609") @Directive44(argument97 : ["stringValue10608"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11658: String! +} + +type Object2221 implements Interface105 @Directive21(argument61 : "stringValue10611") @Directive44(argument97 : ["stringValue10610"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11621: String! + field11622: String! + field11645: String! + field11646: String! + field11647: String! + field11650: Int! + field11656: Int! + field11673: Boolean! + field11674: Boolean! + field11675: Boolean! + field11676: String +} + +type Object2222 implements Interface105 @Directive21(argument61 : "stringValue10613") @Directive44(argument97 : ["stringValue10612"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11621: String + field11622: String! + field11645: String! + field11646: String! + field11647: String! + field11648: Boolean! + field11649: String + field11650: Int! + field11656: Int! + field11658: String! + field11662: String! + field11663: Int! + field11664: String! +} + +type Object2223 implements Interface105 @Directive21(argument61 : "stringValue10615") @Directive44(argument97 : ["stringValue10614"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +type Object2224 implements Interface105 @Directive21(argument61 : "stringValue10617") @Directive44(argument97 : ["stringValue10616"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11593: String! + field11622: String! + field11645: String! + field11646: String! + field11647: String! + field11649: String + field11661: Int + field11665: Boolean! + field11677: String +} + +type Object2225 implements Interface105 @Directive21(argument61 : "stringValue10619") @Directive44(argument97 : ["stringValue10618"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 +} + +type Object2226 implements Interface105 @Directive21(argument61 : "stringValue10621") @Directive44(argument97 : ["stringValue10620"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11678: String! +} + +type Object2227 implements Interface107 @Directive21(argument61 : "stringValue10623") @Directive44(argument97 : ["stringValue10622"]) { + field11574: Enum426 + field11679: Object2161 +} + +type Object2228 implements Interface107 @Directive21(argument61 : "stringValue10625") @Directive44(argument97 : ["stringValue10624"]) { + field11574: Enum426 +} + +type Object2229 implements Interface107 @Directive21(argument61 : "stringValue10627") @Directive44(argument97 : ["stringValue10626"]) { + field11574: Enum426 + field11680: Object2230 +} + +type Object223 @Directive21(argument61 : "stringValue699") @Directive44(argument97 : ["stringValue698"]) { + field1442: String + field1443: String + field1444: String +} + +type Object2230 @Directive21(argument61 : "stringValue10629") @Directive44(argument97 : ["stringValue10628"]) { + field11681: String + field11682: [Object2162] + field11683: String + field11684: Scalar2 + field11685: Scalar2 + field11686: String + field11687: String + field11688: String + field11689: String +} + +type Object2231 implements Interface105 @Directive21(argument61 : "stringValue10631") @Directive44(argument97 : ["stringValue10630"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11690: String +} + +type Object2232 implements Interface106 @Directive21(argument61 : "stringValue10633") @Directive44(argument97 : ["stringValue10632"]) { + field11541: Enum420 + field11542: Enum421 + field11543: Object2169 + field11558: Float + field11559: String + field11560: String + field11561: Object2169 + field11562: Object2172 +} + +type Object2233 implements Interface105 @Directive21(argument61 : "stringValue10635") @Directive44(argument97 : ["stringValue10634"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11691: Object2175 +} + +type Object2234 implements Interface108 @Directive21(argument61 : "stringValue10637") @Directive44(argument97 : ["stringValue10636"]) { + field11594: String! + field11595: Enum428 + field11596: Float + field11597: String + field11598: Interface106 + field11599: Interface105 + field11692: Enum432 +} + +type Object2235 implements Interface105 @Directive21(argument61 : "stringValue10640") @Directive44(argument97 : ["stringValue10639"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11693: String +} + +type Object2236 implements Interface105 @Directive21(argument61 : "stringValue10642") @Directive44(argument97 : ["stringValue10641"]) { + field11493: Object2159 + field11511: String + field11512: Scalar1 + field11637: Scalar3 + field11638: Scalar3 +} + +type Object2237 implements Interface92 @Directive22(argument62 : "stringValue10643") @Directive44(argument97 : ["stringValue10650"]) @Directive8(argument19 : "stringValue10649", argument21 : "stringValue10645", argument23 : "stringValue10648", argument24 : "stringValue10644", argument25 : "stringValue10646", argument27 : "stringValue10647", argument28 : true) { + field8384: Object753! + field8385: [Object2238] +} + +type Object2238 implements Interface93 @Directive22(argument62 : "stringValue10651") @Directive44(argument97 : ["stringValue10652"]) { + field8386: String! + field8999: Object2239 +} + +type Object2239 @Directive12 @Directive22(argument62 : "stringValue10653") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10654"]) { + field11694: Object1915 @Directive30(argument80 : true) @Directive40 + field11695: Object528 @Directive30(argument80 : true) @Directive40 +} + +type Object224 @Directive21(argument61 : "stringValue701") @Directive44(argument97 : ["stringValue700"]) { + field1446: [Union38] + field1472: Object233 +} + +type Object2240 implements Interface92 @Directive42(argument96 : ["stringValue10655"]) @Directive44(argument97 : ["stringValue10662"]) @Directive8(argument19 : "stringValue10661", argument21 : "stringValue10657", argument23 : "stringValue10660", argument24 : "stringValue10656", argument25 : "stringValue10658", argument27 : "stringValue10659", argument28 : true) { + field8384: Object753! + field8385: [Object2238] +} + +type Object2241 implements Interface36 @Directive22(argument62 : "stringValue10663") @Directive42(argument96 : ["stringValue10664", "stringValue10665"]) @Directive44(argument97 : ["stringValue10673"]) @Directive7(argument10 : "stringValue10671", argument11 : "stringValue10672", argument12 : "stringValue10669", argument13 : "stringValue10668", argument14 : "stringValue10667", argument16 : "stringValue10670", argument17 : "stringValue10666", argument18 : false) { + field11696: Object528 + field2312: ID! + field9733: Object1915 +} + +type Object2242 implements Interface3 @Directive20(argument58 : "stringValue10675", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10674") @Directive31 @Directive44(argument97 : ["stringValue10676", "stringValue10677"]) { + field11697: Boolean + field11698: [String!] + field11699: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2243 @Directive20(argument58 : "stringValue10679", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10678") @Directive31 @Directive44(argument97 : ["stringValue10680", "stringValue10681"]) { + field11700: ID! + field11701: String + field11702: String + field11703: Boolean! +} + +type Object2244 implements Interface45 @Directive22(argument62 : "stringValue10682") @Directive31 @Directive44(argument97 : ["stringValue10683", "stringValue10684"]) { + field11704: String + field11705: Int + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object2245 @Directive20(argument58 : "stringValue10686", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10685") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10687", "stringValue10688"]) { + field11706: String @Directive30(argument80 : true) @Directive41 + field11707: [Union75] @Directive30(argument80 : true) @Directive41 + field11708: Object2246 @Directive30(argument80 : true) @Directive41 +} + +type Object2246 @Directive20(argument58 : "stringValue10690", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10689") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10691", "stringValue10692"]) { + field11709: String @Directive30(argument80 : true) @Directive41 + field11710: Scalar1 @Directive30(argument80 : true) @Directive41 +} + +type Object2247 implements Interface36 @Directive22(argument62 : "stringValue10693") @Directive30(argument85 : "stringValue10695", argument86 : "stringValue10694") @Directive44(argument97 : ["stringValue10699", "stringValue10700"]) @Directive7(argument13 : "stringValue10698", argument14 : "stringValue10697", argument17 : "stringValue10696", argument18 : false) { + field11711: Object2248 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2248 @Directive20(argument58 : "stringValue10702", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10701") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10703", "stringValue10704"]) { + field11712: String @Directive30(argument80 : true) @Directive41 + field11713: String @Directive30(argument80 : true) @Directive41 + field11714: [Object2245] @Directive30(argument80 : true) @Directive41 +} + +type Object2249 @Directive22(argument62 : "stringValue10705") @Directive31 @Directive44(argument97 : ["stringValue10706", "stringValue10707"]) { + field11715: String + field11716: String + field11717: [Object448] + field11718: Object2250 + field11721: Object742 +} + +type Object225 @Directive21(argument61 : "stringValue704") @Directive44(argument97 : ["stringValue703"]) { + field1447: Object204 + field1448: Object226 + field1453: Object218 + field1454: Object218 + field1455: String + field1456: Object218 + field1457: Object218 + field1458: Object228 + field1461: Object229 +} + +type Object2250 @Directive22(argument62 : "stringValue10708") @Directive31 @Directive44(argument97 : ["stringValue10709", "stringValue10710"]) { + field11719: Object478 + field11720: Interface3 +} + +type Object2251 implements Interface3 @Directive20(argument58 : "stringValue10712", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue10711") @Directive31 @Directive44(argument97 : ["stringValue10713", "stringValue10714"]) { + field11722: ID! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2252 implements Interface93 @Directive22(argument62 : "stringValue10715") @Directive44(argument97 : ["stringValue10716", "stringValue10717"]) { + field8386: String! + field8999: Object2253 +} + +type Object2253 @Directive12 @Directive22(argument62 : "stringValue10718") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10719", "stringValue10720"]) { + field11723: String @Directive3(argument3 : "stringValue10721") @Directive30(argument80 : true) @Directive41 + field11724: Scalar2 @Directive30(argument80 : true) @Directive40 + field11725: String @Directive3(argument3 : "stringValue10722") @Directive30(argument80 : true) @Directive41 + field11726: Float @Directive14(argument51 : "stringValue10723") @Directive30(argument80 : true) @Directive41 + field11727: Enum433 @Directive14(argument51 : "stringValue10724") @Directive30(argument80 : true) @Directive41 + field11728: [Enum137!] @Directive3(argument3 : "stringValue10728") @Directive30(argument80 : true) @Directive41 + field11729: Scalar4 @Directive3(argument3 : "stringValue10729") @Directive30(argument80 : true) @Directive41 + field11730: String @Directive3(argument3 : "stringValue10730") @Directive30(argument80 : true) @Directive38 + field11731: String @Directive3(argument3 : "stringValue10731") @Directive30(argument80 : true) @Directive38 + field11732: Scalar2 @Directive3(argument3 : "stringValue10732") @Directive30(argument80 : true) @Directive41 + field11733: Scalar2 @Directive3(argument3 : "stringValue10733") @Directive30(argument80 : true) @Directive41 + field11734: Scalar2 @Directive3(argument3 : "stringValue10734") @Directive30(argument80 : true) @Directive41 + field11735: Object2254 @Directive3(argument3 : "stringValue10735") @Directive30(argument80 : true) @Directive41 + field11741: Enum435 @Directive3(argument3 : "stringValue10749") @Directive30(argument80 : true) @Directive41 +} + +type Object2254 @Directive22(argument62 : "stringValue10736") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10737", "stringValue10738"]) { + field11736: Object2255 @Directive30(argument80 : true) @Directive41 + field11738: Object2256 @Directive30(argument80 : true) @Directive41 +} + +type Object2255 @Directive22(argument62 : "stringValue10739") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10740", "stringValue10741"]) { + field11737: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2256 @Directive22(argument62 : "stringValue10742") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10743", "stringValue10744"]) { + field11739: [Enum434!] @Directive30(argument80 : true) @Directive41 + field11740: Float @Directive30(argument80 : true) @Directive41 +} + +type Object2257 implements Interface36 @Directive22(argument62 : "stringValue10755") @Directive30(argument79 : "stringValue10756") @Directive44(argument97 : ["stringValue10754"]) @Directive7(argument11 : "stringValue10760", argument13 : "stringValue10759", argument14 : "stringValue10758", argument16 : "stringValue10761", argument17 : "stringValue10757", argument18 : false) { + field11742: String @Directive30(argument80 : true) @Directive41 + field11743: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue10762") @Directive40 + field12629: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue12399") @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2258 implements Interface109 & Interface36 & Interface98 @Directive22(argument62 : "stringValue10772") @Directive30(argument84 : "stringValue10774", argument86 : "stringValue10773") @Directive42(argument96 : ["stringValue10765", "stringValue10766"]) @Directive44(argument97 : ["stringValue10775", "stringValue10776", "stringValue10777"]) @Directive45(argument98 : ["stringValue10778", "stringValue10779"]) @Directive45(argument98 : ["stringValue10780"]) @Directive45(argument98 : ["stringValue10781"]) @Directive7(argument11 : "stringValue10771", argument14 : "stringValue10768", argument15 : "stringValue10770", argument16 : "stringValue10769", argument17 : "stringValue10767") { + field10387: Scalar4 @Directive30(argument80 : true) @Directive39 + field10446: Int @Directive30(argument81 : "stringValue10823", argument84 : "stringValue10822", argument85 : "stringValue10821", argument86 : "stringValue10820") @Directive39 + field10569: String @Directive14(argument51 : "stringValue10856", argument52 : "stringValue10857") @Directive30(argument80 : true) @Directive40 + field10798: String @Directive30(argument81 : "stringValue10789", argument84 : "stringValue10788", argument85 : "stringValue10787", argument86 : "stringValue10786") @Directive39 + field10799: String @Directive30(argument80 : true) @Directive40 + field10800: String @Directive30(argument81 : "stringValue10785", argument84 : "stringValue10784", argument85 : "stringValue10783", argument86 : "stringValue10782") @Directive39 + field10807: Boolean @Directive14(argument51 : "stringValue10913", argument52 : "stringValue10914") @Directive30(argument80 : true) @Directive40 + field10853: Object2261 @Directive14(argument51 : "stringValue10851", argument52 : "stringValue10852") @Directive30(argument80 : true) @Directive40 + field10985: Boolean @Directive14(argument51 : "stringValue10917", argument52 : "stringValue10918") @Directive30(argument80 : true) @Directive40 + field10988(argument273: String, argument274: Int, argument275: String, argument276: Int): Object2424 @Directive22(argument62 : "stringValue11980") + field11241: String @Directive30(argument80 : true) @Directive40 + field11744: String @Directive30(argument80 : true) @Directive39 + field11745: Int @Directive3(argument3 : "stringValue10790") @Directive30(argument80 : true) @Directive39 + field11746: String @Directive30(argument80 : true) @Directive40 + field11747: [String!] @Directive30(argument80 : true) @Directive40 + field11748: String @Directive30(argument80 : true) @Directive39 + field11749: String @Directive30(argument81 : "stringValue10794", argument84 : "stringValue10793", argument85 : "stringValue10792", argument86 : "stringValue10791") @Directive39 @deprecated + field11750: Enum436 @Directive30(argument81 : "stringValue10798", argument84 : "stringValue10797", argument85 : "stringValue10796", argument86 : "stringValue10795") @Directive39 + field11751: Scalar3 @Directive30(argument81 : "stringValue10805", argument84 : "stringValue10804", argument85 : "stringValue10803", argument86 : "stringValue10802") @Directive39 + field11752: String @Directive30(argument81 : "stringValue10809", argument84 : "stringValue10808", argument85 : "stringValue10807", argument86 : "stringValue10806") @Directive39 + field11753: Int @Directive30(argument80 : true) @Directive39 + field11754: Int @Directive30(argument80 : true) @Directive39 + field11755: Boolean @Directive30(argument80 : true) @Directive41 + field11756: Enum437 @Directive14(argument51 : "stringValue10810", argument52 : "stringValue10811") @Directive30(argument80 : true) @Directive40 + field11757: Boolean @Directive3(argument3 : "stringValue10815") @Directive30(argument80 : true) @Directive41 + field11758: Boolean @Directive30(argument81 : "stringValue10819", argument84 : "stringValue10818", argument85 : "stringValue10817", argument86 : "stringValue10816") @Directive39 + field11759: Boolean @Directive30(argument80 : true) @Directive41 + field11760: Scalar2 @Directive30(argument81 : "stringValue10827", argument84 : "stringValue10826", argument85 : "stringValue10825", argument86 : "stringValue10824") @Directive39 + field11761: Boolean @Directive30(argument80 : true) @Directive39 + field11762: String @Directive30(argument81 : "stringValue10831", argument84 : "stringValue10830", argument85 : "stringValue10829", argument86 : "stringValue10828") @Directive39 + field11763: String @Directive30(argument80 : true) @Directive39 + field11764: Scalar2 @Directive30(argument81 : "stringValue10835", argument84 : "stringValue10834", argument85 : "stringValue10833", argument86 : "stringValue10832") @Directive39 + field11765: Scalar2 @Directive30(argument80 : true) @Directive41 + field11766: Int @Directive30(argument80 : true) @Directive41 + field11767: Object2259 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue10836") + field11775: String @Directive30(argument80 : true) @Directive40 + field11776: String @Directive30(argument80 : true) @Directive40 + field11777: String @Directive30(argument80 : true) @Directive40 + field11778: String @Directive30(argument80 : true) @Directive40 + field11779: String @Directive30(argument80 : true) @Directive40 + field11780: String @Directive30(argument80 : true) @Directive40 + field11781: String @Directive30(argument80 : true) @Directive40 + field11782: Object2262 @Directive14(argument51 : "stringValue10858", argument52 : "stringValue10859") @Directive30(argument80 : true) @Directive38 + field11799: String @Directive3(argument2 : "stringValue10864", argument3 : "stringValue10863") @Directive30(argument80 : true) @Directive40 + field11800: Boolean @Directive3(argument2 : "stringValue10866", argument3 : "stringValue10865") @Directive30(argument80 : true) @Directive40 + field11801: String @Directive3(argument2 : "stringValue10868", argument3 : "stringValue10867") @Directive30(argument80 : true) @Directive40 + field11802: String @Directive3(argument2 : "stringValue10870", argument3 : "stringValue10869") @Directive30(argument80 : true) @Directive40 + field11803: String @Directive3(argument2 : "stringValue10872", argument3 : "stringValue10871") @Directive30(argument80 : true) @Directive40 + field11804(argument297: String!, argument298: [String!], argument299: [Enum438!]): [Scalar2] @Directive14(argument51 : "stringValue10873", argument52 : "stringValue10874") @Directive30(argument80 : true) @Directive39 + field11805: Boolean @Directive30(argument80 : true) @Directive40 + field11806: Boolean @Directive30(argument81 : "stringValue10881", argument84 : "stringValue10880", argument85 : "stringValue10879", argument86 : "stringValue10878") @Directive39 + field11807: Object2263 @Directive30(argument80 : true) @Directive38 @Directive4(argument5 : "stringValue10882") + field11830: Boolean @Directive30(argument80 : true) @Directive40 + field11831: Boolean @Directive14(argument51 : "stringValue10911", argument52 : "stringValue10912") @Directive30(argument80 : true) @Directive40 + field11832: Boolean @Directive14(argument51 : "stringValue10915", argument52 : "stringValue10916") @Directive30(argument80 : true) @Directive40 + field11833: Boolean @Directive14(argument51 : "stringValue10919", argument52 : "stringValue10920") @Directive30(argument80 : true) @Directive40 + field11834: Boolean @Directive14(argument51 : "stringValue10921", argument52 : "stringValue10922") @Directive30(argument80 : true) @Directive40 + field11835: Int @Directive14(argument51 : "stringValue10923", argument52 : "stringValue10924") @Directive30(argument80 : true) @Directive40 + field11836: String @Directive30(argument80 : true) @Directive39 + field11837: Boolean @Directive30(argument80 : true) @Directive40 + field11838: Int @Directive30(argument80 : true) @Directive39 + field11839: Scalar4 @Directive30(argument80 : true) @Directive41 + field11840: Object2269 @Directive30(argument80 : true) @Directive38 @Directive4(argument5 : "stringValue10925") + field11849: Object2272 + field11853(argument300: [Enum441!]): Object2275 @Directive30(argument80 : true) @Directive38 @Directive4(argument5 : "stringValue11000") + field11876: Object2278 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue11052") + field11887: Object2281 @Directive14(argument51 : "stringValue11068", argument52 : "stringValue11069") @Directive30(argument80 : true) @Directive39 + field11893: [Scalar2!] @Directive17 @Directive30(argument80 : true) @Directive40 @deprecated + field11894: Object2282 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11076") @Directive40 @deprecated + field11895: Object2283 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11083") @Directive40 @deprecated + field11896: Object2284 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11090") @Directive40 @deprecated + field11897(argument301: Boolean, argument302: Boolean, argument303: Boolean, argument304: [Scalar2!]): Int @Directive14(argument51 : "stringValue11097", argument52 : "stringValue11098") @Directive30(argument80 : true) @Directive40 @deprecated + field11898: Int @Directive3(argument2 : "stringValue11100", argument3 : "stringValue11099") @Directive30(argument80 : true) @Directive40 @deprecated + field11899(argument305: [String!]!, argument306: [String!]!): [Object2285!] @Directive17 @Directive30(argument80 : true) @Directive39 @deprecated + field11902: Object2286 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue11104") @deprecated + field11908: Object2287 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11111") @Directive40 @deprecated + field11909(argument307: String!, argument308: [String!], argument309: [Enum438!]): [Scalar2] @Directive17 @Directive30(argument80 : true) @Directive39 @deprecated + field11910: String @Directive17 @Directive30(argument80 : true) @Directive40 @deprecated + field11911: String @Directive3(argument3 : "stringValue11118") @Directive30(argument80 : true) @Directive40 @deprecated + field11912: String @Directive3(argument2 : "stringValue11120", argument3 : "stringValue11119") @Directive30(argument80 : true) @Directive40 @deprecated + field11913: String @Directive3(argument2 : "stringValue11122", argument3 : "stringValue11121") @Directive30(argument80 : true) @Directive40 @deprecated + field11914: String @Directive3(argument2 : "stringValue11124", argument3 : "stringValue11123") @Directive30(argument80 : true) @Directive40 @deprecated + field11915: String @Directive3(argument2 : "stringValue11126", argument3 : "stringValue11125") @Directive30(argument80 : true) @Directive40 @deprecated + field11916: String @Directive3(argument2 : "stringValue11128", argument3 : "stringValue11127") @Directive30(argument80 : true) @Directive40 @deprecated + field11917: String @Directive3(argument2 : "stringValue11130", argument3 : "stringValue11129") @Directive30(argument80 : true) @Directive38 @deprecated + field11918: String @Directive3(argument2 : "stringValue11132", argument3 : "stringValue11131") @Directive30(argument80 : true) @Directive39 @deprecated + field11919: String @Directive3(argument2 : "stringValue11134", argument3 : "stringValue11133") @Directive30(argument80 : true) @Directive39 @deprecated + field11920: String @Directive3(argument2 : "stringValue11136", argument3 : "stringValue11135") @Directive30(argument80 : true) @Directive39 @deprecated + field11921: String @Directive3(argument2 : "stringValue11138", argument3 : "stringValue11137") @Directive30(argument80 : true) @Directive40 @deprecated + field11922: String @Directive3(argument2 : "stringValue11140", argument3 : "stringValue11139") @Directive30(argument80 : true) @Directive39 @deprecated + field11923: String @Directive3(argument2 : "stringValue11142", argument3 : "stringValue11141") @Directive30(argument80 : true) @Directive39 @deprecated + field11924: String @Directive3(argument2 : "stringValue11144", argument3 : "stringValue11143") @Directive30(argument80 : true) @Directive39 @deprecated + field11925: String @Directive3(argument2 : "stringValue11146", argument3 : "stringValue11145") @Directive30(argument80 : true) @Directive38 @deprecated + field11926: String @Directive3(argument2 : "stringValue11148", argument3 : "stringValue11147") @Directive30(argument80 : true) @Directive38 @deprecated + field11927: String @Directive3(argument2 : "stringValue11150", argument3 : "stringValue11149") @Directive30(argument80 : true) @Directive38 @deprecated + field11929: Object2289 @Directive18 + field11937: Object2011 @Directive18 + field11938: Boolean @Directive18 + field11939(argument310: Boolean, argument311: Boolean, argument312: Boolean): Object2290 @Directive18 + field11942(argument313: Enum445): Object2291 @Directive18 @Directive22(argument62 : "stringValue11169") + field11944(argument314: Enum193): Object2292 @Directive22(argument62 : "stringValue11177") @Directive4(argument5 : "stringValue11178") + field12091(argument315: String, argument316: Int, argument317: String, argument318: Int): Object2337 @Directive4(argument5 : "stringValue11359") + field12098: Int @Directive18 + field12099: Int @Directive18 + field12100: Int @Directive18 + field12101: Int @Directive18 + field12102: Object2340 @Directive18 + field12105: Boolean @Directive18 @deprecated + field12106: Object2341 @Directive18 + field12111(argument322: Int, argument323: Int): Object2343 @Directive22(argument62 : "stringValue11381") @Directive4(argument5 : "stringValue11382") + field12122: Object2346 @Directive18 @Directive22(argument62 : "stringValue11401") @Directive30(argument80 : true) + field12125: String @Directive18 + field12126(argument324: String, argument325: Int, argument326: String, argument327: Int): Object2347 + field12137(argument328: String, argument329: Int, argument330: String, argument331: Int): Object2351 + field12143(argument332: [Enum459], argument333: Boolean, argument334: String, argument335: Int, argument336: String, argument337: Int): Object2355 + field12150(argument338: Enum460, argument339: Boolean): Object2358 @Directive22(argument62 : "stringValue11498") + field12212(argument343: Int, argument344: Enum464, argument345: InputObject6): Object2376 + field12242(argument390: String): Object2387 @Directive22(argument62 : "stringValue11690") + field12253(argument391: [String], argument392: [String]): Object2392 @Directive22(argument62 : "stringValue11710") @Directive4(argument5 : "stringValue11711") + field12261(argument393: String, argument394: String, argument395: String): Object2397 @Directive22(argument62 : "stringValue11733") @Directive4(argument5 : "stringValue11734") + field12288(argument396: InputObject9, argument397: Int, argument398: [InputObject12!]): Object2405 @Directive22(argument62 : "stringValue11778") + field12289(argument399: InputObject13, argument400: Int, argument401: [InputObject14!]): Object2407 @Directive22(argument62 : "stringValue11805") + field12323: String @Directive14(argument51 : "stringValue11903") @Directive22(argument62 : "stringValue11902") @Directive30(argument80 : true) @Directive40 + field12324: String @Directive14(argument51 : "stringValue11905") @Directive22(argument62 : "stringValue11904") @Directive30(argument80 : true) @Directive40 + field12325(argument404: Boolean, argument405: Boolean, argument406: Boolean): Object2416 @Directive4(argument5 : "stringValue11906") @Directive40 + field12334: Object2419 @Directive22(argument62 : "stringValue11928") @Directive4(argument5 : "stringValue11929") @Directive40 + field12341(argument407: Enum485!): Object2421 @Directive22(argument62 : "stringValue11946") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11947") @Directive40 + field12344(argument408: Enum487): Object2423 @Directive22(argument62 : "stringValue11966") @Directive4(argument5 : "stringValue11967") + field12345: Object2426 @Directive22(argument62 : "stringValue11987") @Directive4(argument5 : "stringValue11988") + field12348: Object2032 @Directive22(argument62 : "stringValue12001") @Directive4(argument5 : "stringValue12002") + field12349: Object2428 @Directive22(argument62 : "stringValue12003") @Directive4(argument5 : "stringValue12004") + field12350: Boolean @Directive18 @Directive22(argument62 : "stringValue12014") + field12351: Boolean @Directive18 @Directive22(argument62 : "stringValue12015") + field12352: Object2429 @Directive22(argument62 : "stringValue12016") @Directive4(argument5 : "stringValue12017") + field12353: Object2430 @Directive22(argument62 : "stringValue12027") @Directive4(argument5 : "stringValue12028") + field12355(argument409: String, argument410: Int, argument411: String, argument412: Int, argument413: Boolean, argument414: Boolean, argument415: String, argument416: Int): Object2431 + field12358(argument417: String, argument418: Int, argument419: String, argument420: Int): Object2434 + field12361: Object2437 @Directive22(argument62 : "stringValue12073") @Directive4(argument5 : "stringValue12074") + field12363: Object2438 @Directive22(argument62 : "stringValue12083") @Directive4(argument5 : "stringValue12084") + field12365(argument421: InputObject18): Object2439 @deprecated + field12366(argument422: InputObject22): Object2440 @deprecated + field12367: Object2441 @Directive22(argument62 : "stringValue12114") @Directive4(argument5 : "stringValue12115") + field12373: Object2443 @Directive22(argument62 : "stringValue12132") @Directive4(argument5 : "stringValue12133") + field12376: Object2446 @Directive22(argument62 : "stringValue12145") @Directive24(argument64 : "stringValue12146") @Directive4(argument5 : "stringValue12147") + field12377(argument423: String, argument424: Int, argument425: String, argument426: Int, argument427: String, argument428: String, argument429: Int, argument430: Int): Object2447 @Directive22(argument62 : "stringValue12157") + field12612(argument456: [Enum496]): Object2478 @Directive22(argument62 : "stringValue12348") + field12623(argument457: Int, argument458: Int, argument459: [Enum498!], argument460: [InputObject23]): Object2482 + field12624: Object2484 @Directive22(argument62 : "stringValue12389") @Directive4(argument5 : "stringValue12390") + field12628: Boolean @Directive18 @Directive22(argument62 : "stringValue12398") + field2312: ID! @Directive30(argument80 : true) @Directive40 + field8996: Object2288 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive39 + field9185: String @Directive30(argument80 : true) @Directive39 + field9303: String @Directive30(argument80 : true) @Directive39 +} + +type Object2259 implements Interface36 @Directive22(argument62 : "stringValue10837") @Directive30(argument81 : "stringValue10840", argument84 : "stringValue10839", argument86 : "stringValue10838") @Directive44(argument97 : ["stringValue10846", "stringValue10847"]) @Directive7(argument12 : "stringValue10844", argument13 : "stringValue10843", argument14 : "stringValue10842", argument16 : "stringValue10845", argument17 : "stringValue10841") { + field11768: String @Directive30(argument80 : true) @Directive39 + field11769: Scalar2 @Directive30(argument80 : true) @Directive41 + field11770: Object2260 @Directive30(argument80 : true) @Directive39 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object226 @Directive21(argument61 : "stringValue706") @Directive44(argument97 : ["stringValue705"]) { + field1449: Object227 + field1452: String +} + +type Object2260 @Directive22(argument62 : "stringValue10848") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10849", "stringValue10850"]) { + field11771: String @Directive30(argument80 : true) @Directive39 + field11772: String @Directive30(argument80 : true) @Directive39 +} + +type Object2261 @Directive22(argument62 : "stringValue10853") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10854", "stringValue10855"]) { + field11773: String @Directive30(argument80 : true) @Directive40 + field11774: String @Directive30(argument80 : true) @Directive40 +} + +type Object2262 @Directive22(argument62 : "stringValue10860") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10861", "stringValue10862"]) { + field11783: String @Directive30(argument80 : true) @Directive40 + field11784: String @Directive30(argument80 : true) @Directive40 + field11785: String @Directive30(argument80 : true) @Directive40 + field11786: String @Directive30(argument80 : true) @Directive40 + field11787: String @Directive30(argument80 : true) @Directive40 + field11788: String @Directive30(argument80 : true) @Directive38 + field11789: String @Directive30(argument80 : true) @Directive39 + field11790: Boolean @Directive30(argument80 : true) @Directive39 + field11791: Scalar4 @Directive30(argument80 : true) @Directive39 + field11792: Scalar4 @Directive30(argument80 : true) @Directive40 + field11793: Scalar4 @Directive30(argument80 : true) @Directive39 + field11794: Scalar4 @Directive30(argument80 : true) @Directive39 + field11795: Boolean @Directive30(argument80 : true) @Directive39 + field11796: Float @Directive30(argument80 : true) @Directive38 + field11797: Float @Directive30(argument80 : true) @Directive38 + field11798: String @Directive30(argument80 : true) @Directive38 +} + +type Object2263 implements Interface36 @Directive22(argument62 : "stringValue10889") @Directive30(argument81 : "stringValue10893", argument84 : "stringValue10892", argument85 : "stringValue10891", argument86 : "stringValue10890") @Directive44(argument97 : ["stringValue10894", "stringValue10895"]) @Directive7(argument11 : "stringValue10888", argument12 : "stringValue10886", argument13 : "stringValue10885", argument14 : "stringValue10884", argument16 : "stringValue10887", argument17 : "stringValue10883", argument18 : true) { + field11808: [Object2264] @Directive30(argument80 : true) @Directive39 + field11813: [Object2265] @Directive30(argument80 : true) @Directive39 + field11821: [Object2266] @Directive30(argument80 : true) @Directive39 + field11824: [Object2267] @Directive30(argument80 : true) @Directive38 + field11827: [Object2268] @Directive30(argument80 : true) @Directive39 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2264 @Directive22(argument62 : "stringValue10896") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10897", "stringValue10898"]) { + field11809: String @Directive30(argument80 : true) @Directive40 + field11810: String @Directive30(argument80 : true) @Directive39 + field11811: String @Directive30(argument80 : true) @Directive39 + field11812: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object2265 @Directive22(argument62 : "stringValue10899") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10900", "stringValue10901"]) { + field11814: String @Directive30(argument80 : true) @Directive39 + field11815: String @Directive30(argument80 : true) @Directive39 + field11816: String @Directive30(argument80 : true) @Directive40 + field11817: String @Directive30(argument80 : true) @Directive40 + field11818: String @Directive30(argument80 : true) @Directive39 + field11819: String @Directive30(argument80 : true) @Directive40 + field11820: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object2266 @Directive22(argument62 : "stringValue10902") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10903", "stringValue10904"]) { + field11822: String @Directive30(argument80 : true) @Directive39 + field11823: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object2267 @Directive22(argument62 : "stringValue10905") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10906", "stringValue10907"]) { + field11825: String @Directive30(argument80 : true) @Directive38 + field11826: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object2268 @Directive22(argument62 : "stringValue10908") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10909", "stringValue10910"]) { + field11828: Scalar3 @Directive30(argument80 : true) @Directive39 + field11829: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object2269 implements Interface92 @Directive22(argument62 : "stringValue10932") @Directive44(argument97 : ["stringValue10933", "stringValue10934"]) @Directive8(argument20 : "stringValue10931", argument21 : "stringValue10927", argument23 : "stringValue10930", argument24 : "stringValue10926", argument25 : "stringValue10928", argument26 : "stringValue10929", argument28 : true) { + field8384: Object753! + field8385: [Object2270] +} + +type Object227 @Directive21(argument61 : "stringValue708") @Directive44(argument97 : ["stringValue707"]) { + field1450: String + field1451: String +} + +type Object2270 implements Interface93 @Directive22(argument62 : "stringValue10935") @Directive44(argument97 : ["stringValue10936", "stringValue10937"]) { + field8386: String! + field8999: Object2271 +} + +type Object2271 @Directive22(argument62 : "stringValue10938") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue10939", "stringValue10940"]) { + field11841: Enum439 @Directive30(argument80 : true) @Directive39 + field11842: Int @Directive30(argument80 : true) @Directive39 + field11843: String @Directive30(argument80 : true) @Directive39 + field11844: String @Directive30(argument80 : true) @Directive39 + field11845: String @Directive30(argument80 : true) @Directive39 + field11846: String @Directive30(argument80 : true) @Directive39 + field11847: Scalar4 @Directive30(argument80 : true) @Directive39 + field11848: Scalar4 @Directive30(argument80 : true) @Directive39 +} + +type Object2272 implements Interface92 @Directive22(argument62 : "stringValue10950") @Directive44(argument97 : ["stringValue10951", "stringValue10952"]) @Directive8(argument20 : "stringValue10949", argument21 : "stringValue10945", argument23 : "stringValue10948", argument24 : "stringValue10944", argument25 : "stringValue10946", argument26 : "stringValue10947", argument28 : true) { + field8384: Object753! + field8385: [Object2273] +} + +type Object2273 implements Interface93 @Directive22(argument62 : "stringValue10953") @Directive44(argument97 : ["stringValue10954", "stringValue10955"]) { + field8386: String! + field8999: Object2274 +} + +type Object2274 implements Interface109 & Interface36 @Directive22(argument62 : "stringValue10961") @Directive30(argument81 : "stringValue10964", argument84 : "stringValue10963", argument86 : "stringValue10962") @Directive44(argument97 : ["stringValue10965", "stringValue10966", "stringValue10967"]) @Directive45(argument98 : ["stringValue10968"]) @Directive7(argument11 : "stringValue10960", argument14 : "stringValue10957", argument15 : "stringValue10959", argument16 : "stringValue10958", argument17 : "stringValue10956") { + field10798: String @Directive3(argument2 : "stringValue10978", argument3 : "stringValue10977") @Directive30(argument81 : "stringValue10982", argument84 : "stringValue10981", argument85 : "stringValue10980", argument86 : "stringValue10979") @Directive39 + field10799: String @Directive3(argument2 : "stringValue10970", argument3 : "stringValue10969") @Directive30(argument80 : true) @Directive40 + field10800: String @Directive3(argument2 : "stringValue10972", argument3 : "stringValue10971") @Directive30(argument81 : "stringValue10976", argument84 : "stringValue10975", argument85 : "stringValue10974", argument86 : "stringValue10973") @Directive39 + field11760: Scalar2 @Directive3(argument2 : "stringValue10989", argument3 : "stringValue10988") @Directive30(argument81 : "stringValue10993", argument84 : "stringValue10992", argument85 : "stringValue10991", argument86 : "stringValue10990") @Directive39 + field11850: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue10983") @Directive40 + field11851: Enum440 @Directive3(argument2 : "stringValue10995", argument3 : "stringValue10994") @Directive30(argument80 : true) @Directive40 + field11852: Boolean @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 + field9087: Scalar4 @Directive3(argument2 : "stringValue10985", argument3 : "stringValue10984") @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive3(argument2 : "stringValue10987", argument3 : "stringValue10986") @Directive30(argument80 : true) @Directive41 +} + +type Object2275 implements Interface92 @Directive22(argument62 : "stringValue11009") @Directive44(argument97 : ["stringValue11010", "stringValue11011", "stringValue11012"]) @Directive8(argument20 : "stringValue11008", argument21 : "stringValue11005", argument23 : "stringValue11007", argument24 : "stringValue11004", argument25 : "stringValue11006") { + field8384: Object753! + field8385: [Object2276] +} + +type Object2276 implements Interface93 @Directive22(argument62 : "stringValue11013") @Directive44(argument97 : ["stringValue11014", "stringValue11015", "stringValue11016"]) { + field8386: String! + field8999: Object2277 +} + +type Object2277 @Directive12 @Directive22(argument62 : "stringValue11017") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11018", "stringValue11019", "stringValue11020"]) @Directive45(argument98 : ["stringValue11021"]) { + field11854: ID! @Directive30(argument80 : true) @Directive39 + field11855: String @Directive30(argument81 : "stringValue11025", argument84 : "stringValue11024", argument85 : "stringValue11023", argument86 : "stringValue11022") @Directive39 + field11856: String @Directive30(argument80 : true) @Directive39 + field11857: String @Directive30(argument81 : "stringValue11029", argument84 : "stringValue11028", argument85 : "stringValue11027", argument86 : "stringValue11026") @Directive38 + field11858: Scalar4 @Directive30(argument80 : true) @Directive39 + field11859: Int @Directive30(argument80 : true) @Directive39 + field11860: Enum442 @Directive14(argument51 : "stringValue11030", argument52 : "stringValue11031") @Directive30(argument80 : true) @Directive39 + field11861: Boolean @Directive30(argument80 : true) @Directive39 + field11862: Scalar4 @Directive30(argument80 : true) @Directive39 + field11863: Scalar4 @Directive30(argument80 : true) @Directive39 + field11864: Scalar4 @Directive30(argument80 : true) @Directive39 + field11865: String @Directive30(argument80 : true) @Directive39 + field11866: String @Directive30(argument81 : "stringValue11038", argument84 : "stringValue11037", argument85 : "stringValue11036", argument86 : "stringValue11035") @Directive39 + field11867: String @Directive30(argument81 : "stringValue11042", argument84 : "stringValue11041", argument85 : "stringValue11040", argument86 : "stringValue11039") @Directive39 + field11868: Scalar2 @Directive30(argument80 : true) @Directive39 + field11869: Scalar2 @Directive30(argument80 : true) @Directive39 + field11870: Enum443 @Directive14(argument51 : "stringValue11043", argument52 : "stringValue11044") @Directive30(argument80 : true) @Directive39 + field11871: Boolean @Directive30(argument80 : true) @Directive39 + field11872: String @Directive30(argument80 : true) @Directive39 + field11873: ID! @Directive30(argument80 : true) @Directive39 + field11874: String @Directive3(argument2 : "stringValue11049", argument3 : "stringValue11048") @Directive30(argument80 : true) @Directive39 + field11875: String @Directive3(argument2 : "stringValue11051", argument3 : "stringValue11050") @Directive30(argument80 : true) @Directive39 +} + +type Object2278 implements Interface92 @Directive22(argument62 : "stringValue11059") @Directive44(argument97 : ["stringValue11060", "stringValue11061"]) @Directive8(argument20 : "stringValue11058", argument21 : "stringValue11054", argument23 : "stringValue11057", argument24 : "stringValue11053", argument25 : "stringValue11055", argument26 : "stringValue11056", argument28 : true) { + field8384: Object753! + field8385: [Object2279] +} + +type Object2279 implements Interface93 @Directive22(argument62 : "stringValue11062") @Directive44(argument97 : ["stringValue11063", "stringValue11064"]) { + field8386: String! + field8999: Object2280 +} + +type Object228 @Directive21(argument61 : "stringValue710") @Directive44(argument97 : ["stringValue709"]) { + field1459: String + field1460: String +} + +type Object2280 @Directive22(argument62 : "stringValue11065") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11066", "stringValue11067"]) { + field11877: Scalar2 @Directive30(argument80 : true) @Directive40 + field11878: Scalar2 @Directive30(argument80 : true) @Directive40 + field11879: String @Directive30(argument80 : true) @Directive39 + field11880: String @Directive30(argument80 : true) @Directive39 + field11881: String @Directive30(argument80 : true) @Directive39 + field11882: String @Directive30(argument80 : true) @Directive40 + field11883: Scalar4 @Directive30(argument80 : true) @Directive41 + field11884: Scalar4 @Directive30(argument80 : true) @Directive41 + field11885: String @Directive30(argument80 : true) @Directive41 + field11886: String @Directive30(argument80 : true) @Directive40 +} + +type Object2281 @Directive22(argument62 : "stringValue11070") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11071", "stringValue11072"]) { + field11888: String @Directive30(argument80 : true) @Directive39 + field11889: String @Directive30(argument80 : true) @Directive39 + field11890: String @Directive30(argument80 : true) @Directive39 + field11891: Boolean @Directive30(argument80 : true) @Directive41 + field11892: Enum444 @Directive30(argument80 : true) @Directive41 +} + +type Object2282 implements Interface36 @Directive22(argument62 : "stringValue11077") @Directive30(argument81 : "stringValue11080", argument84 : "stringValue11079", argument86 : "stringValue11078") @Directive44(argument97 : ["stringValue11081", "stringValue11082"]) { + field11834: Boolean @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2283 implements Interface36 @Directive22(argument62 : "stringValue11084") @Directive30(argument81 : "stringValue11087", argument84 : "stringValue11086", argument86 : "stringValue11085") @Directive44(argument97 : ["stringValue11088", "stringValue11089"]) { + field10985: Boolean @Directive30(argument80 : true) @Directive40 + field11832: Boolean @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2284 implements Interface36 @Directive22(argument62 : "stringValue11091") @Directive30(argument81 : "stringValue11094", argument84 : "stringValue11093", argument86 : "stringValue11092") @Directive44(argument97 : ["stringValue11095", "stringValue11096"]) { + field11831: Boolean @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2285 @Directive22(argument62 : "stringValue11101") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11102", "stringValue11103"]) { + field11900: Boolean @Directive30(argument80 : true) @Directive40 + field11901: String @Directive30(argument80 : true) @Directive39 +} + +type Object2286 implements Interface36 @Directive22(argument62 : "stringValue11105") @Directive30(argument81 : "stringValue11108", argument84 : "stringValue11107", argument86 : "stringValue11106") @Directive44(argument97 : ["stringValue11109", "stringValue11110"]) { + field11903: String @Directive30(argument80 : true) @Directive39 + field11904: String @Directive30(argument80 : true) @Directive39 + field11905: String @Directive30(argument80 : true) @Directive39 + field11906: Boolean @Directive30(argument80 : true) @Directive41 + field11907: Enum444 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2287 implements Interface36 @Directive22(argument62 : "stringValue11112") @Directive30(argument81 : "stringValue11115", argument84 : "stringValue11114", argument86 : "stringValue11113") @Directive44(argument97 : ["stringValue11116", "stringValue11117"]) { + field11833: Boolean @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2288 implements Interface99 @Directive42(argument96 : ["stringValue11151", "stringValue11152", "stringValue11153"]) @Directive44(argument97 : ["stringValue11154", "stringValue11155", "stringValue11156"]) @Directive45(argument98 : ["stringValue11157", "stringValue11158"]) { + field11928: Object721 @Directive13(argument49 : "stringValue11159") + field8997: Object2258 +} + +type Object2289 @Directive22(argument62 : "stringValue11162") @Directive42(argument96 : ["stringValue11160", "stringValue11161"]) @Directive44(argument97 : ["stringValue11163", "stringValue11164"]) { + field11930: String + field11931: String + field11932: String + field11933: String + field11934: String + field11935: String + field11936: Boolean +} + +type Object229 @Directive21(argument61 : "stringValue712") @Directive44(argument97 : ["stringValue711"]) { + field1462: [String] + field1463: String + field1464: Object230 +} + +type Object2290 @Directive22(argument62 : "stringValue11167") @Directive42(argument96 : ["stringValue11165", "stringValue11166"]) @Directive44(argument97 : ["stringValue11168"]) { + field11940: Boolean + field11941: Boolean +} + +type Object2291 @Directive42(argument96 : ["stringValue11173", "stringValue11174", "stringValue11175"]) @Directive44(argument97 : ["stringValue11176"]) { + field11943: Int +} + +type Object2292 implements Interface92 @Directive22(argument62 : "stringValue11179") @Directive44(argument97 : ["stringValue11185"]) @Directive8(argument19 : "stringValue11184", argument21 : "stringValue11181", argument23 : "stringValue11183", argument24 : "stringValue11180", argument25 : "stringValue11182", argument27 : null) { + field8384: Object753! + field8385: [Object2293] +} + +type Object2293 implements Interface93 @Directive22(argument62 : "stringValue11186") @Directive44(argument97 : ["stringValue11187"]) { + field8386: String! + field8999: Object2294 +} + +type Object2294 @Directive22(argument62 : "stringValue11188") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11189"]) { + field11945: String @Directive30(argument80 : true) @Directive40 + field11946: Enum194! @Directive30(argument80 : true) @Directive41 + field11947: Object2295 @Directive30(argument80 : true) @Directive40 + field11951: Enum447 @Directive30(argument80 : true) @Directive41 + field11952: Enum448 @Directive30(argument80 : true) @Directive41 + field11953: Scalar4 @Directive30(argument80 : true) @Directive41 + field11954: Object2296 @Directive30(argument80 : true) @Directive39 + field11967: Union170 @Directive30(argument80 : true) @Directive39 + field12045: Boolean @Directive30(argument80 : true) @Directive41 + field12046: Object6143 @Directive14(argument51 : "stringValue11297") @Directive30(argument80 : true) @Directive39 + field12047: Object4016 @Directive14(argument51 : "stringValue11298") @Directive30(argument80 : true) @Directive41 + field12048: Object1778 @Directive14(argument51 : "stringValue11299") @Directive30(argument80 : true) @Directive41 + field12049: Object1781 @Directive14(argument51 : "stringValue11300") @Directive30(argument80 : true) @Directive39 + field12050: Object2324 @Directive30(argument80 : true) @Directive40 + field12073: Object2334 @Directive30(argument80 : true) @Directive39 + field12089: String @Directive30(argument80 : true) @Directive40 + field12090: Enum455 @Directive30(argument80 : true) @Directive41 +} + +type Object2295 @Directive22(argument62 : "stringValue11191") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11190"]) @Directive44(argument97 : ["stringValue11192", "stringValue11193"]) { + field11948: Enum446 @Directive30(argument80 : true) + field11949: Scalar2 @Directive30(argument80 : true) + field11950: String @Directive30(argument80 : true) +} + +type Object2296 @Directive22(argument62 : "stringValue11205") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11204"]) @Directive44(argument97 : ["stringValue11206"]) { + field11955: Object2297 @Directive30(argument80 : true) + field11958: Object2298 @Directive30(argument80 : true) + field11963: Object2299 @Directive30(argument80 : true) + field11965: Object2300 @Directive30(argument80 : true) +} + +type Object2297 @Directive22(argument62 : "stringValue11208") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11207"]) @Directive44(argument97 : ["stringValue11209"]) { + field11956: Scalar2 @Directive30(argument80 : true) + field11957: [Scalar2] @Directive30(argument80 : true) +} + +type Object2298 @Directive22(argument62 : "stringValue11211") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11210"]) @Directive44(argument97 : ["stringValue11212"]) { + field11959: Scalar2 @Directive30(argument80 : true) + field11960: String @Directive30(argument80 : true) + field11961: [Scalar2] @Directive30(argument80 : true) + field11962: [String] @Directive30(argument80 : true) +} + +type Object2299 @Directive22(argument62 : "stringValue11214") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11213"]) @Directive44(argument97 : ["stringValue11215"]) { + field11964: [Scalar2] @Directive30(argument80 : true) +} + +type Object23 @Directive21(argument61 : "stringValue188") @Directive44(argument97 : ["stringValue187"]) { + field181: String + field182: String + field183: String +} + +type Object230 @Directive21(argument61 : "stringValue714") @Directive44(argument97 : ["stringValue713"]) { + field1465: String + field1466: [String] + field1467: [Object231] +} + +type Object2300 @Directive22(argument62 : "stringValue11217") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11216"]) @Directive44(argument97 : ["stringValue11218"]) { + field11966: [Scalar2] @Directive30(argument80 : true) +} + +type Object2301 @Directive21(argument61 : "stringValue11221") @Directive22(argument62 : "stringValue11222") @Directive31 @Directive44(argument97 : ["stringValue11223"]) { + field11968: String + field11969: Float +} + +type Object2302 @Directive21(argument61 : "stringValue11224") @Directive22(argument62 : "stringValue11225") @Directive31 @Directive44(argument97 : ["stringValue11226"]) { + field11970: String + field11971: String + field11972: String +} + +type Object2303 @Directive21(argument61 : "stringValue11227") @Directive22(argument62 : "stringValue11228") @Directive31 @Directive44(argument97 : ["stringValue11229"]) { + field11973: Scalar2 +} + +type Object2304 @Directive21(argument61 : "stringValue11230") @Directive22(argument62 : "stringValue11231") @Directive31 @Directive44(argument97 : ["stringValue11232"]) { + field11974: String + field11975: [Object2305] + field11978: Enum449 +} + +type Object2305 @Directive20(argument58 : "stringValue11235", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11233") @Directive42(argument96 : ["stringValue11234"]) @Directive44(argument97 : ["stringValue11236", "stringValue11237"]) { + field11976: Enum401 @Directive41 + field11977: String @Directive41 +} + +type Object2306 @Directive21(argument61 : "stringValue11242") @Directive22(argument62 : "stringValue11241") @Directive31 @Directive44(argument97 : ["stringValue11243"]) { + field11979: String + field11980: String + field11981: String + field11982: Object2305 + field11983: Enum449 +} + +type Object2307 @Directive20(argument58 : "stringValue11245", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11244") @Directive31 @Directive44(argument97 : ["stringValue11246"]) { + field11984: String + field11985: String + field11986: String + field11987: String +} + +type Object2308 @Directive20(argument58 : "stringValue11248", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11247") @Directive31 @Directive44(argument97 : ["stringValue11249"]) { + field11988: String + field11989: String + field11990: String + field11991: Object2309 + field11995: String +} + +type Object2309 @Directive22(argument62 : "stringValue11250") @Directive31 @Directive44(argument97 : ["stringValue11251"]) { + field11992: String + field11993: String + field11994: String +} + +type Object231 @Directive21(argument61 : "stringValue716") @Directive44(argument97 : ["stringValue715"]) { + field1468: String + field1469: String +} + +type Object2310 @Directive20(argument58 : "stringValue11253", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11252") @Directive31 @Directive44(argument97 : ["stringValue11254"]) { + field11996: String + field11997: String + field11998: String + field11999: String + field12000: String + field12001: String +} + +type Object2311 @Directive20(argument58 : "stringValue11256", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11255") @Directive31 @Directive44(argument97 : ["stringValue11257"]) { + field12002: Scalar2 +} + +type Object2312 @Directive20(argument58 : "stringValue11259", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11258") @Directive31 @Directive44(argument97 : ["stringValue11260"]) { + field12003: Int +} + +type Object2313 @Directive20(argument58 : "stringValue11262", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11261") @Directive31 @Directive44(argument97 : ["stringValue11263"]) { + field12004: Int + field12005: String +} + +type Object2314 @Directive20(argument58 : "stringValue11265", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11264") @Directive31 @Directive44(argument97 : ["stringValue11266"]) { + field12006: Boolean + field12007: Scalar3 + field12008: Float + field12009: Float + field12010: String + field12011: String + field12012: [String] +} + +type Object2315 @Directive20(argument58 : "stringValue11268", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11267") @Directive31 @Directive44(argument97 : ["stringValue11269"]) { + field12013: Scalar3 +} + +type Object2316 @Directive20(argument58 : "stringValue11271", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11270") @Directive31 @Directive44(argument97 : ["stringValue11272"]) { + field12014: [Object2317] + field12018: Scalar4 + field12019: Int +} + +type Object2317 @Directive20(argument58 : "stringValue11274", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11273") @Directive31 @Directive44(argument97 : ["stringValue11275"]) { + field12015: Int + field12016: String + field12017: Scalar4 +} + +type Object2318 @Directive20(argument58 : "stringValue11277", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11276") @Directive31 @Directive44(argument97 : ["stringValue11278"]) { + field12020: [Object2319] +} + +type Object2319 @Directive20(argument58 : "stringValue11280", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11279") @Directive31 @Directive44(argument97 : ["stringValue11281"]) { + field12021: Int + field12022: String +} + +type Object232 @Directive21(argument61 : "stringValue718") @Directive44(argument97 : ["stringValue717"]) { + field1470: String + field1471: Object227 +} + +type Object2320 @Directive20(argument58 : "stringValue11283", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11282") @Directive31 @Directive44(argument97 : ["stringValue11284"]) { + field12023: String @Directive41 + field12024: String @Directive41 + field12025: String @Directive41 + field12026: String @Directive41 + field12027: String @Directive41 + field12028: String @Directive41 + field12029: String @Directive41 + field12030: Object2321 @Directive41 + field12036: Object2321 @Directive41 + field12037: String @Directive41 + field12038: Enum450 @Directive41 +} + +type Object2321 @Directive20(argument58 : "stringValue11286", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11285") @Directive31 @Directive44(argument97 : ["stringValue11287"]) { + field12031: String @Directive41 + field12032: String @Directive41 + field12033: String @Directive40 + field12034: String @Directive41 + field12035: String @Directive40 +} + +type Object2322 @Directive20(argument58 : "stringValue11292", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11291") @Directive31 @Directive44(argument97 : ["stringValue11293"]) { + field12039: String @Directive40 + field12040: String @Directive41 + field12041: String @Directive41 +} + +type Object2323 @Directive20(argument58 : "stringValue11295", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11294") @Directive31 @Directive44(argument97 : ["stringValue11296"]) { + field12042: String @Directive41 + field12043: String @Directive41 + field12044: String @Directive41 +} + +type Object2324 @Directive20(argument58 : "stringValue11302", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11301") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11303"]) { + field12051: Object2325 @Directive30(argument80 : true) @Directive40 + field12056: Object2327 @Directive30(argument80 : true) @Directive40 + field12059: Object2328 @Directive30(argument80 : true) @Directive40 + field12062: Object2326 @Directive30(argument80 : true) @Directive40 + field12063: Object2329 @Directive30(argument80 : true) @Directive41 + field12070: Object2333 @Directive30(argument80 : true) @Directive40 +} + +type Object2325 @Directive20(argument58 : "stringValue11305", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11304") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11306"]) { + field12052: Scalar2 @Directive30(argument80 : true) @Directive40 + field12053: Object2326 @Directive30(argument80 : true) @Directive40 +} + +type Object2326 @Directive20(argument58 : "stringValue11308", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11307") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11309"]) { + field12054: Scalar2 @Directive30(argument80 : true) @Directive40 + field12055: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2327 @Directive20(argument58 : "stringValue11311", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11310") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11312"]) { + field12057: Scalar2 @Directive30(argument80 : true) @Directive40 + field12058: Object2326 @Directive30(argument80 : true) @Directive40 +} + +type Object2328 @Directive20(argument58 : "stringValue11314", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11313") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11315"]) { + field12060: Scalar2 @Directive30(argument80 : true) @Directive40 + field12061: Enum451 @Directive30(argument80 : true) @Directive41 +} + +type Object2329 @Directive20(argument58 : "stringValue11320", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11319") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11321"]) { + field12064: Scalar2 @Directive30(argument80 : true) @Directive40 + field12065: Union171 @Directive30(argument80 : true) @Directive41 + field12069: Enum450 @Directive30(argument80 : true) @Directive41 +} + +type Object233 @Directive21(argument61 : "stringValue720") @Directive44(argument97 : ["stringValue719"]) { + field1473: Object218 + field1474: String + field1475: [Object223] + field1476: [Object223] + field1477: Object215 +} + +type Object2330 @Directive21(argument61 : "stringValue11325") @Directive22(argument62 : "stringValue11324") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11326"]) { + field12066: Enum452 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2331 @Directive21(argument61 : "stringValue11331") @Directive22(argument62 : "stringValue11330") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11332"]) { + field12067: Enum453 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2332 @Directive21(argument61 : "stringValue11337") @Directive22(argument62 : "stringValue11336") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11338"]) { + field12068: Enum454 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object2333 @Directive20(argument58 : "stringValue11345", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11344") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11346"]) { + field12071: String @Directive30(argument80 : true) @Directive40 + field12072: String @Directive30(argument80 : true) @Directive40 +} + +type Object2334 @Directive22(argument62 : "stringValue11347") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11348", "stringValue11349"]) { + field12074: String @Directive30(argument80 : true) @Directive41 + field12075: String @Directive30(argument80 : true) @Directive41 + field12076: String @Directive30(argument80 : true) @Directive39 + field12077: String @Directive30(argument80 : true) @Directive39 + field12078: String @Directive30(argument80 : true) @Directive39 + field12079: String @Directive30(argument80 : true) @Directive39 + field12080: String @Directive30(argument80 : true) @Directive39 + field12081: String @Directive30(argument80 : true) @Directive39 + field12082: String @Directive30(argument80 : true) @Directive39 + field12083: Object2335 @Directive30(argument80 : true) @Directive41 +} + +type Object2335 @Directive20(argument58 : "stringValue11351", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11350") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11352"]) { + field12084: Object2336 @Directive30(argument80 : true) @Directive41 +} + +type Object2336 @Directive20(argument58 : "stringValue11354", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11353") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11355"]) { + field12085: String @Directive30(argument80 : true) @Directive40 + field12086: String @Directive30(argument80 : true) @Directive41 + field12087: String @Directive30(argument80 : true) @Directive41 + field12088: String @Directive30(argument80 : true) @Directive41 +} + +type Object2337 implements Interface92 @Directive42(argument96 : ["stringValue11360"]) @Directive44(argument97 : ["stringValue11361"]) { + field8384: Object753! + field8385: [Object2338] +} + +type Object2338 implements Interface93 @Directive42(argument96 : ["stringValue11362"]) @Directive44(argument97 : ["stringValue11363"]) { + field8386: String! + field8999: Object2339 +} + +type Object2339 @Directive12 @Directive42(argument96 : ["stringValue11364", "stringValue11365", "stringValue11366"]) @Directive44(argument97 : ["stringValue11367"]) { + field12092: ID! + field12093: Scalar2 + field12094: Enum456 + field12095: Scalar4 + field12096: Scalar4 + field12097: Scalar4 +} + +type Object234 @Directive21(argument61 : "stringValue722") @Directive44(argument97 : ["stringValue721"]) { + field1480: Object204 + field1481: Object218 + field1482: Object218 + field1483: Object227 + field1484: [Object223] + field1485: Object235 + field1488: Union36 +} + +type Object2340 @Directive42(argument96 : ["stringValue11370", "stringValue11371", "stringValue11372"]) @Directive44(argument97 : ["stringValue11373"]) { + field12103: Float + field12104: Float +} + +type Object2341 @Directive22(argument62 : "stringValue11375") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11374"]) { + field12107(argument319: Enum457): Boolean @Directive18 @Directive30(argument80 : true) @Directive40 + field12108(argument320: [String], argument321: Enum457): [Object2342] @Directive18 @Directive30(argument80 : true) @Directive40 +} + +type Object2342 @Directive22(argument62 : "stringValue11380") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11379"]) { + field12109: String! @Directive30(argument80 : true) @Directive40 + field12110: [String!] @Directive30(argument80 : true) @Directive40 +} + +type Object2343 implements Interface36 @Directive22(argument62 : "stringValue11384") @Directive30(argument79 : "stringValue11385") @Directive44(argument97 : ["stringValue11383"]) @Directive7(argument12 : "stringValue11389", argument13 : "stringValue11388", argument14 : "stringValue11387", argument17 : "stringValue11386", argument18 : false) { + field10398: Enum458 @Directive30(argument80 : true) @Directive41 + field10528: String @Directive3(argument3 : "stringValue11391") @Directive30(argument80 : true) @Directive41 + field12112: Boolean @Directive3(argument3 : "stringValue11390") @Directive30(argument80 : true) @Directive41 + field12113: String @Directive3(argument3 : "stringValue11392") @Directive30(argument80 : true) @Directive41 + field12114: Object2344 @Directive3(argument3 : "stringValue11393") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2344 @Directive22(argument62 : "stringValue11395") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11394"]) { + field12115: Object2345 @Directive30(argument80 : true) @Directive40 +} + +type Object2345 @Directive22(argument62 : "stringValue11397") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11396"]) { + field12116: String @Directive30(argument80 : true) @Directive40 + field12117: String @Directive30(argument80 : true) @Directive40 + field12118: String @Directive30(argument80 : true) @Directive40 + field12119: String @Directive30(argument80 : true) @Directive40 + field12120: ID @Directive30(argument80 : true) @Directive40 + field12121: String @Directive30(argument80 : true) @Directive40 +} + +type Object2346 @Directive22(argument62 : "stringValue11402") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11403"]) { + field12123: Float @Directive30(argument80 : true) @Directive40 + field12124: Int @Directive30(argument80 : true) @Directive40 +} + +type Object2347 implements Interface92 @Directive22(argument62 : "stringValue11404") @Directive44(argument97 : ["stringValue11410"]) @Directive8(argument21 : "stringValue11406", argument23 : "stringValue11408", argument24 : "stringValue11405", argument25 : "stringValue11407", argument26 : "stringValue11409") { + field8384: Object753! + field8385: [Object2348] +} + +type Object2348 implements Interface93 @Directive22(argument62 : "stringValue11411") @Directive44(argument97 : ["stringValue11412"]) { + field8386: String! + field8999: Object2349 +} + +type Object2349 @Directive12 @Directive22(argument62 : "stringValue11414") @Directive42(argument96 : ["stringValue11413"]) @Directive44(argument97 : ["stringValue11415", "stringValue11416"]) @Directive45(argument98 : ["stringValue11417"]) { + field12127: ID! @Directive40 + field12128: String @Directive39 + field12129: Object2350 @Directive4(argument5 : "stringValue11418") @Directive40 + field12131: Boolean @Directive3(argument3 : "stringValue11427") @Directive40 + field12132: Boolean @Directive3(argument3 : "stringValue11428") @Directive40 + field12133: Boolean @Directive3(argument3 : "stringValue11429") @Directive40 + field12134: Boolean @Directive3(argument3 : "stringValue11430") @Directive40 + field12135: Boolean @Directive3(argument3 : "stringValue11431") @Directive40 + field12136: Int @Directive40 +} + +type Object235 @Directive21(argument61 : "stringValue724") @Directive44(argument97 : ["stringValue723"]) { + field1486: [Object223] + field1487: Object215 +} + +type Object2350 implements Interface36 @Directive22(argument62 : "stringValue11420") @Directive42(argument96 : ["stringValue11419"]) @Directive44(argument97 : ["stringValue11426"]) @Directive7(argument12 : "stringValue11423", argument13 : "stringValue11422", argument14 : "stringValue11424", argument16 : "stringValue11425", argument17 : "stringValue11421") { + field12130: String @Directive40 + field2312: ID! @Directive40 +} + +type Object2351 implements Interface92 @Directive42(argument96 : ["stringValue11432"]) @Directive44(argument97 : ["stringValue11438"]) @Directive8(argument21 : "stringValue11434", argument23 : "stringValue11437", argument24 : "stringValue11433", argument25 : "stringValue11435", argument27 : "stringValue11436") { + field8384: Object753! + field8385: [Object2352] +} + +type Object2352 implements Interface93 @Directive42(argument96 : ["stringValue11439"]) @Directive44(argument97 : ["stringValue11440"]) { + field8386: String! + field8999: Object2353 +} + +type Object2353 @Directive12 @Directive42(argument96 : ["stringValue11441", "stringValue11442", "stringValue11443"]) @Directive44(argument97 : ["stringValue11444"]) { + field12138: ID! + field12139: String + field12140: Object2354 @Directive4(argument5 : "stringValue11445") + field12142: Int @deprecated +} + +type Object2354 implements Interface36 @Directive22(argument62 : "stringValue11446") @Directive42(argument96 : ["stringValue11447"]) @Directive44(argument97 : ["stringValue11452"]) @Directive7(argument13 : "stringValue11450", argument14 : "stringValue11449", argument16 : "stringValue11451", argument17 : "stringValue11448", argument18 : false) { + field12141: String @Directive41 + field2312: ID! @Directive41 + field8994: String @Directive41 +} + +type Object2355 implements Interface92 @Directive42(argument96 : ["stringValue11456"]) @Directive44(argument97 : ["stringValue11464"]) @Directive8(argument19 : "stringValue11462", argument20 : "stringValue11463", argument21 : "stringValue11458", argument23 : "stringValue11461", argument24 : "stringValue11457", argument25 : "stringValue11459", argument27 : "stringValue11460") { + field8384: Object753! + field8385: [Object2356] +} + +type Object2356 implements Interface93 @Directive42(argument96 : ["stringValue11465"]) @Directive44(argument97 : ["stringValue11466"]) { + field8386: String! + field8999: Object2357 +} + +type Object2357 implements Interface101 & Interface36 @Directive22(argument62 : "stringValue11467") @Directive42(argument96 : ["stringValue11468", "stringValue11469"]) @Directive44(argument97 : ["stringValue11476"]) @Directive7(argument11 : "stringValue11475", argument12 : "stringValue11472", argument13 : "stringValue11471", argument14 : "stringValue11473", argument16 : "stringValue11474", argument17 : "stringValue11470") { + field12144: Enum459 @Directive3(argument3 : "stringValue11484") + field12145: Enum459 @Directive3(argument3 : "stringValue11485") + field12146: Boolean @Directive3(argument3 : "stringValue11492") + field12147: Boolean @Directive3(argument3 : "stringValue11493") + field12148: String @Directive3(argument3 : "stringValue11495") + field12149: Boolean @Directive3(argument3 : "stringValue11497") + field2312: ID! + field9087: Scalar4 @Directive3(argument3 : "stringValue11479") + field9141: Object2258 @Directive4(argument5 : "stringValue11477") + field9142: Scalar4 @Directive3(argument3 : "stringValue11480") + field9143: Scalar4 @Directive3(argument3 : "stringValue11481") + field9144: Scalar4 @Directive3(argument3 : "stringValue11482") + field9145: Scalar4 @Directive3(argument3 : "stringValue11483") + field9146: Int @Directive3(argument3 : "stringValue11486") + field9147: String @Directive3(argument3 : "stringValue11487") + field9148: String @Directive3(argument3 : "stringValue11488") + field9149: Boolean @Directive3(argument3 : "stringValue11489") + field9150: String @Directive3(argument3 : "stringValue11490") + field9151: Boolean @Directive3(argument3 : "stringValue11491") + field9152: Boolean @Directive3(argument3 : "stringValue11496") + field9153: Object2258 @Directive4(argument5 : "stringValue11478") + field9158: String @Directive3(argument3 : "stringValue11494") +} + +type Object2358 implements Interface92 @Directive22(argument62 : "stringValue11508") @Directive44(argument97 : ["stringValue11509"]) @Directive8(argument21 : "stringValue11504", argument23 : "stringValue11507", argument24 : "stringValue11503", argument25 : "stringValue11505", argument27 : "stringValue11506") { + field8384: Object753! + field8385: [Object2359] +} + +type Object2359 implements Interface93 @Directive22(argument62 : "stringValue11510") @Directive44(argument97 : ["stringValue11511"]) { + field8386: String! + field8999: Object2360 +} + +type Object236 @Directive21(argument61 : "stringValue727") @Directive44(argument97 : ["stringValue726"]) { + field1489: Scalar2! + field1490: String + field1491: String + field1492: String + field1493: [Object237] + field1499: String +} + +type Object2360 implements Interface36 & Interface98 @Directive22(argument62 : "stringValue11521") @Directive26(argument66 : 1, argument67 : "stringValue11519", argument71 : "stringValue11518", argument72 : "stringValue11520") @Directive30(argument79 : "stringValue11517") @Directive44(argument97 : ["stringValue11522", "stringValue11523", "stringValue11524"]) @Directive45(argument98 : ["stringValue11525"]) @Directive45(argument98 : ["stringValue11526"]) @Directive7(argument12 : "stringValue11515", argument13 : "stringValue11514", argument14 : "stringValue11513", argument16 : "stringValue11516", argument17 : "stringValue11512", argument18 : false) { + field12151: String @Directive30(argument80 : true) @Directive40 + field12195: Int @Directive14(argument51 : "stringValue11577") @Directive30(argument80 : true) @Directive41 + field12196(argument341: Scalar3, argument342: Scalar3): Int @Directive14(argument51 : "stringValue11578") @Directive30(argument80 : true) @Directive41 + field12197: String @Directive30(argument80 : true) @Directive41 + field12198: Object2370 @Directive30(argument80 : true) @Directive41 + field12208: Object2374 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11592") @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 + field8988: Scalar4 @Directive30(argument80 : true) @Directive41 + field8993: Object4016 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11609") @Directive40 + field8996: Object2361 @Directive30(argument80 : true) @Directive41 + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11608") @Directive40 + field9831: Enum463 @Directive30(argument80 : true) @Directive40 +} + +type Object2361 implements Interface99 @Directive22(argument62 : "stringValue11529") @Directive26(argument67 : "stringValue11528", argument71 : "stringValue11527") @Directive31 @Directive44(argument97 : ["stringValue11530", "stringValue11531", "stringValue11532"]) @Directive45(argument98 : ["stringValue11533", "stringValue11534"]) { + field12152: Object2362 @Directive14(argument51 : "stringValue11535") + field12194(argument340: Enum462): Interface110 @Directive14(argument51 : "stringValue11572") + field8997: Object2360 +} + +type Object2362 @Directive22(argument62 : "stringValue11536") @Directive31 @Directive44(argument97 : ["stringValue11537", "stringValue11538"]) { + field12153: ID! + field12154: String + field12155: Object2363 + field12160: Object1837 + field12161: Object1837 + field12162: Object2364 +} + +type Object2363 @Directive22(argument62 : "stringValue11539") @Directive31 @Directive44(argument97 : ["stringValue11540", "stringValue11541"]) { + field12156: Object1837 + field12157: Enum6 + field12158: Enum10 + field12159: Enum461 +} + +type Object2364 @Directive22(argument62 : "stringValue11545") @Directive31 @Directive44(argument97 : ["stringValue11546", "stringValue11547"]) { + field12163: Object1837 + field12164: Union172 + field12168: Enum109 + field12169: Union173 +} + +type Object2365 @Directive22(argument62 : "stringValue11553") @Directive31 @Directive44(argument97 : ["stringValue11551", "stringValue11552"]) { + field12165: String + field12166: String + field12167: String +} + +type Object2366 implements Interface110 @Directive22(argument62 : "stringValue11560") @Directive31 @Directive44(argument97 : ["stringValue11561", "stringValue11562"]) { + field12170: ID! + field12171: String + field12172: Object2363 + field12173: Object1837 + field12174: Object1837 + field12175: Object1837 + field12176: Object1837 + field12177: Object1837 + field12178: Object1837 + field12179: Object2364 + field12180: [Object2363] + field12181: [Object2367] + field12186: Object1837 + field12187: Object2368 +} + +type Object2367 @Directive22(argument62 : "stringValue11563") @Directive31 @Directive44(argument97 : ["stringValue11564", "stringValue11565"]) { + field12182: Object1837 + field12183: String + field12184: Boolean + field12185: Boolean +} + +type Object2368 @Directive22(argument62 : "stringValue11566") @Directive31 @Directive44(argument97 : ["stringValue11567", "stringValue11568"]) { + field12188: Int + field12189: Int + field12190: Object1837 + field12191: Object1837 + field12192: Enum6 +} + +type Object2369 @Directive22(argument62 : "stringValue11569") @Directive31 @Directive44(argument97 : ["stringValue11570", "stringValue11571"]) { + field12193: ID! +} + +type Object237 @Directive21(argument61 : "stringValue729") @Directive44(argument97 : ["stringValue728"]) { + field1494: Enum97! + field1495: Scalar2! + field1496: Boolean! + field1497: String + field1498: Enum98 +} + +type Object2370 @Directive22(argument62 : "stringValue11582") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11583"]) { + field12199: Object2371 @Directive30(argument80 : true) @Directive41 + field12203: Object2372 @Directive30(argument80 : true) @Directive41 + field12206: Object2373 @Directive30(argument80 : true) @Directive41 +} + +type Object2371 @Directive20(argument58 : "stringValue11584", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11585") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11586"]) { + field12200: Scalar3 @Directive30(argument80 : true) @Directive41 + field12201: Scalar3 @Directive30(argument80 : true) @Directive41 + field12202: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2372 @Directive20(argument58 : "stringValue11587", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11588") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11589"]) { + field12204: Int @Directive30(argument80 : true) @Directive41 + field12205: String @Directive30(argument80 : true) @Directive41 +} + +type Object2373 @Directive22(argument62 : "stringValue11590") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11591"]) { + field12207: Scalar3 @Directive30(argument80 : true) @Directive41 +} + +type Object2374 implements Interface36 @Directive22(argument62 : "stringValue11601") @Directive26(argument66 : 2, argument67 : "stringValue11599", argument71 : "stringValue11598", argument72 : "stringValue11600") @Directive30(argument79 : "stringValue11602") @Directive44(argument97 : ["stringValue11603"]) @Directive7(argument12 : "stringValue11596", argument13 : "stringValue11595", argument14 : "stringValue11594", argument16 : "stringValue11597", argument17 : "stringValue11593", argument18 : true) { + field12209: Object2375 @Directive3(argument3 : "stringValue11604") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive1 @Directive30(argument80 : true) @Directive40 + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11607") @Directive40 +} + +type Object2375 @Directive22(argument62 : "stringValue11605") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11606"]) { + field12210: Int @Directive30(argument80 : true) @Directive41 + field12211: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2376 implements Interface92 @Directive22(argument62 : "stringValue11628") @Directive44(argument97 : ["stringValue11629", "stringValue11630"]) @Directive8(argument21 : "stringValue11624", argument23 : "stringValue11627", argument24 : "stringValue11623", argument25 : "stringValue11625", argument27 : "stringValue11626") { + field8384: Object753! + field8385: [Object2377] +} + +type Object2377 implements Interface93 @Directive22(argument62 : "stringValue11631") @Directive44(argument97 : ["stringValue11632", "stringValue11633"]) { + field8386: String! + field8999: Object2378 +} + +type Object2378 @Directive12 @Directive22(argument62 : "stringValue11634") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11635", "stringValue11636"]) { + field12213: Object2379 @Directive30(argument80 : true) @Directive40 + field12214: Object2380 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue11641") @Directive40 +} + +type Object2379 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue11637") @Directive30(argument86 : "stringValue11638") @Directive44(argument97 : ["stringValue11639", "stringValue11640"]) { + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object238 @Directive21(argument61 : "stringValue734") @Directive44(argument97 : ["stringValue733"]) { + field1500: Scalar2! + field1501: String + field1502: String + field1503: String + field1504: String + field1505: Object59 + field1506: String + field1507: String + field1508: String +} + +type Object2380 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue11642") @Directive42(argument96 : ["stringValue11643"]) @Directive44(argument97 : ["stringValue11644", "stringValue11645"]) { + field12215(argument346: Enum465, argument347: InputObject8, argument348: Enum468, argument349: Int, argument350: Int, argument351: String, argument352: String): Object2381 @Directive14(argument51 : "stringValue11646") @Directive40 + field12227(argument353: Enum468, argument354: Int, argument355: Int, argument356: String, argument357: String): Object2385 @Directive40 + field12228(argument358: Enum468, argument359: InputObject8): Object2383 @Directive14(argument51 : "stringValue11676") @Directive40 + field12229(argument360: Enum468, argument361: InputObject8, argument362: Enum465): Object2383 @Directive14(argument51 : "stringValue11677") @Directive40 + field12230(argument363: Enum468, argument364: InputObject8): Object2383 @Directive14(argument51 : "stringValue11678") @Directive40 + field12231(argument365: Enum468, argument366: InputObject8): Object2383 @Directive14(argument51 : "stringValue11679") @Directive40 + field12232(argument367: Enum468, argument368: InputObject8): Object2383 @Directive14(argument51 : "stringValue11680") @Directive40 + field12233(argument369: Enum468, argument370: InputObject8, argument371: Enum465): Object2383 @Directive14(argument51 : "stringValue11681") @Directive40 + field12234(argument372: Enum468, argument373: InputObject8, argument374: Enum465): Object2383 @Directive14(argument51 : "stringValue11682") @Directive40 + field12235(argument375: Enum468, argument376: InputObject8): Object2383 @Directive14(argument51 : "stringValue11683") @Directive40 + field12236(argument377: Enum468, argument378: InputObject8): Object2383 @Directive14(argument51 : "stringValue11684") @Directive40 + field12237(argument379: Enum468, argument380: InputObject8): Object2383 @Directive14(argument51 : "stringValue11685") @Directive40 + field12238(argument381: Enum468, argument382: InputObject8): Object2383 @Directive14(argument51 : "stringValue11686") @Directive40 + field12239(argument383: Enum468, argument384: InputObject8, argument385: Enum465): Object2383 @Directive14(argument51 : "stringValue11687") @Directive40 + field12240(argument386: Enum468, argument387: InputObject8): Object2383 @Directive14(argument51 : "stringValue11688") @Directive40 + field12241(argument388: Enum468, argument389: InputObject8): Object2383 @Directive14(argument51 : "stringValue11689") @Directive40 + field2312: ID! @Directive40 +} + +type Object2381 implements Interface92 @Directive22(argument62 : "stringValue11657") @Directive44(argument97 : ["stringValue11658"]) { + field8384: Object753! + field8385: [Object2382] +} + +type Object2382 implements Interface93 @Directive22(argument62 : "stringValue11659") @Directive44(argument97 : ["stringValue11660"]) { + field8386: String! + field8999: Object2383 +} + +type Object2383 @Directive22(argument62 : "stringValue11661") @Directive42(argument96 : ["stringValue11662"]) @Directive44(argument97 : ["stringValue11663"]) { + field12216: Object452 @Directive40 + field12217: String @Directive41 + field12218: Int @Directive41 + field12219: String @Directive41 + field12220: String @Directive41 + field12221: Enum469 @Directive41 + field12222: Object2384 @Directive30(argument80 : true) @Directive41 +} + +type Object2384 @Directive22(argument62 : "stringValue11666") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11667"]) { + field12223: String! @Directive30(argument80 : true) @Directive41 + field12224: String! @Directive30(argument80 : true) @Directive41 + field12225: [String!] @Directive30(argument80 : true) @Directive41 + field12226: Enum470! @Directive30(argument80 : true) @Directive41 +} + +type Object2385 implements Interface92 @Directive22(argument62 : "stringValue11670") @Directive44(argument97 : ["stringValue11671"]) { + field8384: Object753! + field8385: [Object2386] +} + +type Object2386 implements Interface93 @Directive22(argument62 : "stringValue11672") @Directive44(argument97 : ["stringValue11673"]) { + field8386: String! + field8999: Interface111 +} + +type Object2387 implements Interface92 @Directive22(argument62 : "stringValue11696") @Directive44(argument97 : ["stringValue11697"]) @Directive8(argument21 : "stringValue11692", argument23 : "stringValue11695", argument24 : "stringValue11691", argument25 : "stringValue11693", argument27 : "stringValue11694") { + field8384: Object753! + field8385: [Object2388] +} + +type Object2388 implements Interface93 @Directive22(argument62 : "stringValue11698") @Directive44(argument97 : ["stringValue11699"]) { + field8386: String! + field8999: Object2389 +} + +type Object2389 @Directive22(argument62 : "stringValue11700") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11701", "stringValue11702"]) { + field12243: String @Directive30(argument80 : true) @Directive41 + field12244: String @Directive30(argument80 : true) @Directive41 + field12245: String @Directive30(argument80 : true) @Directive41 + field12246: Object2390 @Directive30(argument80 : true) @Directive41 +} + +type Object239 @Directive21(argument61 : "stringValue737") @Directive44(argument97 : ["stringValue736"]) { + field1509: Scalar2! + field1510: Enum99 + field1511: String + field1512: String + field1513: String + field1514: String + field1515: String + field1516: String + field1517: [String] + field1518: String + field1519: Scalar2 + field1520: String + field1521: String + field1522: String + field1523: String + field1524: String + field1525: [Object237] + field1526: String + field1527: String + field1528: String + field1529: [Object240] + field1533: Int +} + +type Object2390 @Directive22(argument62 : "stringValue11703") @Directive31 @Directive44(argument97 : ["stringValue11704", "stringValue11705"]) { + field12247: Object2391 + field12252: [Object2391!] +} + +type Object2391 @Directive22(argument62 : "stringValue11706") @Directive31 @Directive44(argument97 : ["stringValue11707", "stringValue11708"]) { + field12248: String + field12249: String + field12250: String + field12251: Object1837 @Directive14(argument51 : "stringValue11709") +} + +type Object2392 implements Interface36 @Directive22(argument62 : "stringValue11716") @Directive30(argument84 : "stringValue11718", argument86 : "stringValue11717") @Directive44(argument97 : ["stringValue11719", "stringValue11720"]) @Directive7(argument12 : "stringValue11715", argument13 : "stringValue11714", argument14 : "stringValue11713", argument17 : "stringValue11712", argument18 : false) { + field11899: [Object2393] @Directive30(argument80 : true) @Directive41 + field12260: [Object2393] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2393 @Directive22(argument62 : "stringValue11721") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11722", "stringValue11723"]) { + field12254: Object2394 @Directive30(argument80 : true) @Directive41 + field12258: Object2396 @Directive30(argument80 : true) @Directive41 +} + +type Object2394 @Directive22(argument62 : "stringValue11724") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11725", "stringValue11726"]) { + field12255: Object2395 @Directive30(argument80 : true) @Directive41 +} + +type Object2395 @Directive22(argument62 : "stringValue11727") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11728", "stringValue11729"]) { + field12256: String @Directive30(argument80 : true) @Directive41 + field12257: Int @Directive30(argument80 : true) @Directive41 +} + +type Object2396 @Directive22(argument62 : "stringValue11730") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11731", "stringValue11732"]) { + field12259: Object487 @Directive30(argument80 : true) @Directive41 +} + +type Object2397 implements Interface36 @Directive22(argument62 : "stringValue11740") @Directive30(argument84 : "stringValue11742", argument86 : "stringValue11741") @Directive44(argument97 : ["stringValue11743", "stringValue11744"]) @Directive7(argument10 : "stringValue11739", argument12 : "stringValue11738", argument13 : "stringValue11737", argument14 : "stringValue11736", argument17 : "stringValue11735", argument18 : false) { + field12262: [Object2398] @Directive30(argument80 : true) @Directive41 + field12287: [Object2404] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2398 @Directive22(argument62 : "stringValue11745") @Directive31 @Directive44(argument97 : ["stringValue11746", "stringValue11747"]) { + field12263: Object2399 + field12283: String + field12284: Int + field12285: [Object2391] + field12286: String +} + +type Object2399 @Directive22(argument62 : "stringValue11748") @Directive31 @Directive44(argument97 : ["stringValue11749", "stringValue11750"]) { + field12264: Enum471 + field12265: Object2400 + field12268: [Object2401] + field12275: Boolean + field12276: Boolean + field12277: Object2404 +} + +type Object24 @Directive21(argument61 : "stringValue191") @Directive44(argument97 : ["stringValue190"]) { + field184: Boolean +} + +type Object240 @Directive21(argument61 : "stringValue740") @Directive44(argument97 : ["stringValue739"]) { + field1530: Int + field1531: String + field1532: String +} + +type Object2400 @Directive22(argument62 : "stringValue11755") @Directive31 @Directive44(argument97 : ["stringValue11756", "stringValue11757"]) { + field12266: Enum472 + field12267: String +} + +type Object2401 @Directive22(argument62 : "stringValue11762") @Directive31 @Directive44(argument97 : ["stringValue11763", "stringValue11764"]) { + field12269: Enum473 + field12270: Object2402 +} + +type Object2402 @Directive22(argument62 : "stringValue11769") @Directive31 @Directive44(argument97 : ["stringValue11770", "stringValue11771"]) { + field12271: Object2403 + field12274: String +} + +type Object2403 @Directive22(argument62 : "stringValue11772") @Directive31 @Directive44(argument97 : ["stringValue11773", "stringValue11774"]) { + field12272: Int + field12273: Int +} + +type Object2404 @Directive22(argument62 : "stringValue11775") @Directive31 @Directive44(argument97 : ["stringValue11776", "stringValue11777"]) { + field12278: Object2391 + field12279: Object2391 + field12280: Object2391 + field12281: Object2391 + field12282: String +} + +type Object2405 implements Interface92 @Directive22(argument62 : "stringValue11801") @Directive44(argument97 : ["stringValue11802"]) { + field8384: Object753! + field8385: [Object2406] +} + +type Object2406 implements Interface93 @Directive22(argument62 : "stringValue11803") @Directive44(argument97 : ["stringValue11804"]) { + field8386: String! + field8999: Object6143 +} + +type Object2407 implements Interface92 @Directive22(argument62 : "stringValue11819") @Directive44(argument97 : ["stringValue11820"]) { + field8384: Object753! + field8385: [Object2408] +} + +type Object2408 implements Interface93 @Directive22(argument62 : "stringValue11821") @Directive44(argument97 : ["stringValue11822"]) { + field8386: String! + field8999: Object2409 +} + +type Object2409 implements Interface111 & Interface36 @Directive22(argument62 : "stringValue11823") @Directive42(argument96 : ["stringValue11824", "stringValue11825"]) @Directive44(argument97 : ["stringValue11831", "stringValue11832", "stringValue11833"]) @Directive45(argument98 : ["stringValue11834"]) @Directive7(argument11 : "stringValue11830", argument13 : "stringValue11829", argument14 : "stringValue11827", argument16 : "stringValue11828", argument17 : "stringValue11826") { + field10398: String @deprecated + field10623: Object2258 @Directive4(argument5 : "stringValue11836") + field12290: Scalar4 + field12291: Int + field12292: String @deprecated + field12293: Int @deprecated + field12294: Boolean + field12295: Int + field12296(argument403: InputObject15!): Object2410 @Directive13(argument49 : "stringValue11837") + field12300: Object2412 @Directive14(argument51 : "stringValue11860") + field12305: Object1904 @Directive13(argument49 : "stringValue11867") + field12306: Scalar4 @Directive13(argument49 : "stringValue11868") + field12307: String @Directive13(argument49 : "stringValue11869") + field12308: Boolean @Directive13(argument49 : "stringValue11870") + field12309: Int @deprecated + field12310: Int @deprecated + field12311: Int @deprecated + field12312: Object2354 @Directive4(argument5 : "stringValue11871") + field12313: Object2413 @Directive4(argument5 : "stringValue11872") + field12318: Object2414 @Directive18 + field12321: Object2415 @Directive14(argument51 : "stringValue11885") @deprecated + field2312: ID! + field8990: Scalar3 + field8991: Scalar3 + field8993(argument402: String): Object4016 @Directive4(argument5 : "stringValue11835") + field9087: Scalar4 + field9142: Scalar4 +} + +type Object241 @Directive21(argument61 : "stringValue743") @Directive44(argument97 : ["stringValue742"]) { + field1534: Object44 + field1535: Object44 + field1536: Object242 + field1540: Object242 + field1541: Object52 + field1542: Object97 + field1543: Object124 +} + +type Object2410 implements Interface36 @Directive42(argument96 : ["stringValue11852", "stringValue11853", "stringValue11854"]) @Directive44(argument97 : ["stringValue11855"]) { + field12297: Object2411 + field2312: ID! +} + +type Object2411 @Directive42(argument96 : ["stringValue11856", "stringValue11857", "stringValue11858"]) @Directive44(argument97 : ["stringValue11859"]) { + field12298: Object1915 + field12299: Object528 +} + +type Object2412 @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue11861", "stringValue11862"]) @Directive44(argument97 : ["stringValue11863"]) { + field12301: Enum482 @Directive30(argument80 : true) + field12302: Enum482 @Directive30(argument80 : true) + field12303: Enum482 @Directive30(argument80 : true) + field12304: Enum482 @Directive30(argument80 : true) +} + +type Object2413 implements Interface36 @Directive22(argument62 : "stringValue11873") @Directive42(argument96 : ["stringValue11874"]) @Directive44(argument97 : ["stringValue11879"]) @Directive7(argument13 : "stringValue11877", argument14 : "stringValue11876", argument16 : "stringValue11878", argument17 : "stringValue11875", argument18 : false) { + field12314: String @Directive41 + field12315: Enum483 @Directive41 + field12316: Scalar4 @Directive41 + field12317: String @Directive41 + field2312: ID! @Directive41 + field8994: String @Directive41 + field9025: String @Directive41 + field9087: Scalar4 @Directive41 + field9142: Scalar4 @Directive41 +} + +type Object2414 @Directive22(argument62 : "stringValue11883") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11884"]) { + field12319: Scalar2 @Directive30(argument80 : true) @Directive41 + field12320: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object2415 implements Interface36 @Directive22(argument62 : "stringValue11886") @Directive42(argument96 : ["stringValue11887", "stringValue11888"]) @Directive44(argument97 : ["stringValue11896", "stringValue11897"]) @Directive45(argument98 : ["stringValue11898"]) @Directive7(argument10 : "stringValue11894", argument11 : "stringValue11895", argument12 : "stringValue11892", argument13 : "stringValue11891", argument14 : "stringValue11890", argument16 : "stringValue11893", argument17 : "stringValue11889") { + field12322: Enum484 + field2312: ID! +} + +type Object2416 implements Interface36 @Directive22(argument62 : "stringValue11907") @Directive30(argument85 : "stringValue11909", argument86 : "stringValue11908") @Directive44(argument97 : ["stringValue11916"]) @Directive7(argument10 : "stringValue11914", argument11 : "stringValue11915", argument13 : "stringValue11912", argument14 : "stringValue11911", argument16 : "stringValue11913", argument17 : "stringValue11910", argument18 : true) { + field12326: Object2417 @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2417 @Directive20(argument58 : "stringValue11919", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue11917") @Directive42(argument96 : ["stringValue11918"]) @Directive44(argument97 : ["stringValue11920"]) @Directive45(argument98 : ["stringValue11921"]) { + field12327: Scalar2! @Directive40 + field12328: Float! @Directive40 + field12329: [Object2418] @Directive17 @Directive40 + field12332: String @Directive14(argument51 : "stringValue11926") @Directive40 @deprecated + field12333: Float @Directive14(argument51 : "stringValue11927") @Directive40 @deprecated +} + +type Object2418 @Directive42(argument96 : ["stringValue11922", "stringValue11923", "stringValue11924"]) @Directive44(argument97 : ["stringValue11925"]) { + field12330: Int + field12331: Scalar2 +} + +type Object2419 implements Interface36 @Directive22(argument62 : "stringValue11934") @Directive30(argument84 : "stringValue11936", argument86 : "stringValue11935") @Directive44(argument97 : ["stringValue11937", "stringValue11938"]) @Directive7(argument12 : "stringValue11933", argument13 : "stringValue11932", argument14 : "stringValue11931", argument17 : "stringValue11930", argument18 : false) { + field12335: Object2420 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue11939") + field12340: Boolean @Directive3(argument3 : "stringValue11945") @Directive30(argument80 : true) @Directive39 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object242 @Directive21(argument61 : "stringValue745") @Directive44(argument97 : ["stringValue744"]) { + field1537: Float + field1538: String + field1539: String +} + +type Object2420 implements Interface36 @Directive22(argument62 : "stringValue11940") @Directive30(argument84 : "stringValue11942", argument86 : "stringValue11941") @Directive44(argument97 : ["stringValue11943", "stringValue11944"]) { + field12336: String @Directive30(argument80 : true) @Directive40 + field12337: String @Directive30(argument80 : true) @Directive39 + field12338: String @Directive30(argument80 : true) @Directive39 + field12339: String @Directive30(argument80 : true) @Directive39 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2421 implements Interface36 @Directive22(argument62 : "stringValue11951") @Directive30(argument79 : "stringValue11952") @Directive44(argument97 : ["stringValue11960"]) @Directive7(argument10 : "stringValue11957", argument11 : "stringValue11956", argument12 : "stringValue11958", argument13 : "stringValue11955", argument14 : "stringValue11954", argument16 : "stringValue11959", argument17 : "stringValue11953") { + field12342: Object2422! @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2422 @Directive22(argument62 : "stringValue11961") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue11962"]) { + field12343: Enum486! @Directive30(argument80 : true) @Directive40 +} + +type Object2423 implements Interface36 @Directive22(argument62 : "stringValue11976") @Directive30(argument79 : "stringValue11977") @Directive44(argument97 : ["stringValue11978", "stringValue11979"]) @Directive7(argument10 : "stringValue11975", argument12 : "stringValue11974", argument13 : "stringValue11973", argument14 : "stringValue11972", argument17 : "stringValue11971", argument18 : false) { + field12344: String @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2424 implements Interface92 @Directive22(argument62 : "stringValue11981") @Directive44(argument97 : ["stringValue11982", "stringValue11983"]) { + field8384: Object753! + field8385: [Object2425] +} + +type Object2425 implements Interface93 @Directive22(argument62 : "stringValue11984") @Directive44(argument97 : ["stringValue11985", "stringValue11986"]) { + field8386: String! + field8999: Object2028 +} + +type Object2426 implements Interface36 @Directive22(argument62 : "stringValue11989") @Directive30(argument79 : "stringValue11991") @Directive44(argument97 : ["stringValue11990"]) @Directive7(argument12 : "stringValue11997", argument13 : "stringValue11994", argument14 : "stringValue11993", argument15 : "stringValue11995", argument16 : "stringValue11996", argument17 : "stringValue11992", argument18 : true) { + field12346: Object2427 @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive3(argument3 : "stringValue11998") @Directive30(argument80 : true) @Directive40 +} + +type Object2427 @Directive22(argument62 : "stringValue11999") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12000"]) { + field12347: Scalar2 @Directive30(argument80 : true) @Directive40 +} + +type Object2428 implements Interface36 @Directive22(argument62 : "stringValue12009") @Directive30(argument79 : "stringValue12010") @Directive44(argument97 : ["stringValue12011", "stringValue12012"]) @Directive7(argument12 : "stringValue12008", argument13 : "stringValue12007", argument14 : "stringValue12006", argument17 : "stringValue12005", argument18 : false) { + field12112: Boolean @Directive3(argument3 : "stringValue12013") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2429 implements Interface36 @Directive22(argument62 : "stringValue12023") @Directive30(argument79 : "stringValue12026") @Directive44(argument97 : ["stringValue12024", "stringValue12025"]) @Directive7(argument12 : "stringValue12022", argument13 : "stringValue12020", argument14 : "stringValue12019", argument16 : "stringValue12021", argument17 : "stringValue12018") { + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object243 @Directive21(argument61 : "stringValue748") @Directive44(argument97 : ["stringValue747"]) { + field1544: String! + field1545: String + field1546: String + field1547: String + field1548: Scalar2 + field1549: Object135 + field1550: Object59 + field1551: String +} + +type Object2430 implements Interface36 @Directive22(argument62 : "stringValue12035") @Directive42(argument96 : ["stringValue12029", "stringValue12030"]) @Directive44(argument97 : ["stringValue12036", "stringValue12037"]) @Directive7(argument12 : "stringValue12034", argument13 : "stringValue12033", argument14 : "stringValue12032", argument17 : "stringValue12031", argument18 : false) { + field12354: Boolean @Directive41 + field2312: ID! +} + +type Object2431 implements Interface92 @Directive42(argument96 : ["stringValue12038"]) @Directive44(argument97 : ["stringValue12046", "stringValue12047"]) @Directive8(argument19 : "stringValue12045", argument20 : "stringValue12044", argument21 : "stringValue12040", argument23 : "stringValue12042", argument24 : "stringValue12039", argument25 : "stringValue12041", argument26 : "stringValue12043", argument28 : true) { + field8384: Object753! + field8385: [Object2432] +} + +type Object2432 implements Interface93 @Directive42(argument96 : ["stringValue12048"]) @Directive44(argument97 : ["stringValue12049", "stringValue12050"]) { + field8386: String! + field8999: Object2433 +} + +type Object2433 @Directive12 @Directive42(argument96 : ["stringValue12051", "stringValue12052", "stringValue12053"]) @Directive44(argument97 : ["stringValue12054"]) { + field12356: ID! + field12357: Object4016 @Directive4(argument5 : "stringValue12055") +} + +type Object2434 implements Interface92 @Directive42(argument96 : ["stringValue12056"]) @Directive44(argument97 : ["stringValue12063", "stringValue12064"]) @Directive8(argument20 : "stringValue12062", argument21 : "stringValue12058", argument23 : "stringValue12060", argument24 : "stringValue12057", argument25 : "stringValue12059", argument26 : "stringValue12061", argument28 : true) { + field8384: Object753! + field8385: [Object2435] +} + +type Object2435 implements Interface93 @Directive42(argument96 : ["stringValue12065"]) @Directive44(argument97 : ["stringValue12066", "stringValue12067"]) { + field8386: String! + field8999: Object2436 +} + +type Object2436 @Directive12 @Directive42(argument96 : ["stringValue12068", "stringValue12069", "stringValue12070"]) @Directive44(argument97 : ["stringValue12071"]) { + field12359: ID! + field12360: Object1778 @Directive4(argument5 : "stringValue12072") +} + +type Object2437 implements Interface36 @Directive22(argument62 : "stringValue12079") @Directive30(argument79 : "stringValue12080") @Directive44(argument97 : ["stringValue12081"]) @Directive7(argument12 : "stringValue12078", argument13 : "stringValue12077", argument14 : "stringValue12076", argument17 : "stringValue12075", argument18 : false) { + field12362: Boolean @Directive3(argument3 : "stringValue12082") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2438 implements Interface36 @Directive22(argument62 : "stringValue12085") @Directive30(argument79 : "stringValue12087") @Directive44(argument97 : ["stringValue12086"]) @Directive7(argument12 : "stringValue12091", argument13 : "stringValue12090", argument14 : "stringValue12089", argument17 : "stringValue12088", argument18 : false) { + field12364: Enum488 @Directive3(argument3 : "stringValue12092") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2439 implements Interface92 @Directive22(argument62 : "stringValue12108") @Directive44(argument97 : ["stringValue12109"]) { + field8384: Object753! + field8385: [Object2406] +} + +type Object244 @Directive21(argument61 : "stringValue751") @Directive44(argument97 : ["stringValue750"]) { + field1552: String + field1553: String + field1554: [String] + field1555: Boolean + field1556: Object191 + field1557: String + field1558: Object245 + field1564: Object247 +} + +type Object2440 implements Interface92 @Directive22(argument62 : "stringValue12112") @Directive44(argument97 : ["stringValue12113"]) { + field8384: Object753! + field8385: [Object2406] +} + +type Object2441 implements Interface36 @Directive22(argument62 : "stringValue12121") @Directive30(argument79 : "stringValue12122") @Directive44(argument97 : ["stringValue12123"]) @Directive7(argument11 : "stringValue12120", argument12 : "stringValue12119", argument13 : "stringValue12118", argument14 : "stringValue12117", argument17 : "stringValue12116", argument18 : false) { + field12368: Object2442 @Directive30(argument80 : true) @Directive40 + field12372: [Enum492] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2442 @Directive22(argument62 : "stringValue12124") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12125"]) { + field12369: ID! @Directive30(argument80 : true) @Directive40 + field12370: ID @Directive30(argument80 : true) @Directive40 + field12371: Enum491 @Directive30(argument80 : true) @Directive41 +} + +type Object2443 implements Interface92 @Directive22(argument62 : "stringValue12134") @Directive44(argument97 : ["stringValue12135"]) @Directive8(argument21 : "stringValue12137", argument23 : "stringValue12139", argument24 : "stringValue12136", argument25 : "stringValue12138") { + field8384: Object753! + field8385: [Object2444] +} + +type Object2444 implements Interface93 @Directive22(argument62 : "stringValue12140") @Directive44(argument97 : ["stringValue12141"]) { + field8386: String! + field8999: Object2445 +} + +type Object2445 @Directive22(argument62 : "stringValue12142") @Directive30(argument79 : "stringValue12144") @Directive44(argument97 : ["stringValue12143"]) { + field12374: ID! @Directive30(argument80 : true) @Directive40 + field12375: Int @Directive30(argument80 : true) @Directive40 +} + +type Object2446 implements Interface36 @Directive22(argument62 : "stringValue12152") @Directive30(argument84 : "stringValue12154", argument86 : "stringValue12153") @Directive44(argument97 : ["stringValue12155"]) @Directive7(argument12 : "stringValue12151", argument13 : "stringValue12150", argument14 : "stringValue12149", argument17 : "stringValue12148", argument18 : false) { + field12112: Boolean @Directive3(argument3 : "stringValue12156") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2447 implements Interface92 @Directive22(argument62 : "stringValue12163") @Directive44(argument97 : ["stringValue12164"]) @Directive8(argument21 : "stringValue12159", argument23 : "stringValue12162", argument24 : "stringValue12158", argument25 : "stringValue12160", argument27 : "stringValue12161") { + field8384: Object753! + field8385: [Object2448] +} + +type Object2448 implements Interface93 @Directive22(argument62 : "stringValue12165") @Directive44(argument97 : ["stringValue12166"]) { + field8386: String! + field8999: Object2449 +} + +type Object2449 implements Interface112 & Interface36 & Interface98 @Directive22(argument62 : "stringValue12175") @Directive30(argument79 : "stringValue12176") @Directive42(argument96 : ["stringValue12169"]) @Directive44(argument97 : ["stringValue12177", "stringValue12178", "stringValue12179"]) @Directive45(argument98 : ["stringValue12180"]) @Directive7(argument12 : "stringValue12173", argument13 : "stringValue12172", argument14 : "stringValue12171", argument16 : "stringValue12174", argument17 : "stringValue12170") { + field10437: String @Directive30(argument80 : true) @Directive40 + field10442: String @Directive30(argument80 : true) @Directive39 @deprecated + field10496: Int @Directive30(argument80 : true) @Directive39 @deprecated + field10520: String @Directive3(argument3 : "stringValue12186") @Directive30(argument80 : true) @Directive39 + field12309: Int @Directive30(argument80 : true) @Directive39 @deprecated + field12310: Int @Directive30(argument80 : true) @Directive39 @deprecated + field12311: Int @Directive30(argument80 : true) @Directive39 @deprecated + field12378: Scalar3 @Directive3(argument3 : "stringValue12181") @Directive30(argument80 : true) @Directive39 + field12379: Scalar3 @Directive3(argument3 : "stringValue12182") @Directive30(argument80 : true) @Directive39 + field12380: [String] @Directive3(argument3 : "stringValue12183") @Directive30(argument80 : true) @Directive39 + field12381: Boolean @Directive3(argument3 : "stringValue12184") @Directive30(argument80 : true) @Directive41 + field12382: String @Directive3(argument3 : "stringValue12185") @Directive30(argument80 : true) @Directive39 + field12383: String @Directive3(argument3 : "stringValue12187") @Directive30(argument80 : true) @Directive39 + field12384: String @Directive3(argument3 : "stringValue12188") @Directive30(argument80 : true) @Directive39 + field12385: Int @Directive3(argument3 : "stringValue12189") @Directive30(argument80 : true) @Directive39 + field12386: String @Directive3(argument3 : "stringValue12190") @Directive30(argument80 : true) @Directive39 + field12387: String @Directive3(argument3 : "stringValue12191") @Directive30(argument80 : true) @Directive39 + field12388: String @Directive3(argument3 : "stringValue12192") @Directive30(argument80 : true) @Directive39 + field12389: String @Directive3(argument3 : "stringValue12193") @Directive30(argument80 : true) @Directive39 + field12390: String @Directive3(argument3 : "stringValue12194") @Directive30(argument80 : true) @Directive39 + field12391: String @Directive3(argument3 : "stringValue12195") @Directive30(argument80 : true) @Directive39 + field12392: Enum493 @Directive3(argument3 : "stringValue12196") @Directive30(argument80 : true) @Directive41 + field12393: Enum494! @Directive14(argument51 : "stringValue12201") @Directive30(argument80 : true) + field12394: String @Directive14(argument51 : "stringValue12207") @Directive30(argument80 : true) + field12395: String @Directive3(argument3 : "stringValue12208") @Directive30(argument80 : true) @Directive39 + field12396: String @Directive14(argument51 : "stringValue12211") @Directive30(argument80 : true) + field12397: String @Directive14(argument51 : "stringValue12212") @Directive30(argument80 : true) + field12398: String @Directive14(argument51 : "stringValue12213") @Directive30(argument80 : true) + field12399: String @Directive14(argument51 : "stringValue12214") @Directive30(argument80 : true) + field12400: [String!]! @Directive14(argument51 : "stringValue12215") @Directive30(argument80 : true) + field12401(argument432: Enum22, argument433: String, argument434: Int, argument435: String, argument436: Int): [Object792!]! @Directive14(argument51 : "stringValue12216") @Directive30(argument80 : true) + field12402: Boolean! @Directive3(argument3 : "stringValue12217") @Directive30(argument80 : true) @Directive41 + field12403: Boolean @Directive3(argument3 : "stringValue12218") @Directive30(argument80 : true) @Directive39 + field12404: Scalar4 @Directive3(argument3 : "stringValue12219") @Directive30(argument80 : true) @Directive39 + field12405: Boolean @Directive3(argument3 : "stringValue12220") @Directive30(argument80 : true) @Directive39 @deprecated + field12406: Int @Directive30(argument80 : true) @Directive39 + field12407: Object1904 @Directive14(argument51 : "stringValue12222") @Directive30(argument80 : true) + field12408: Object2450 @Directive14(argument51 : "stringValue12223") @Directive30(argument80 : true) + field12415: Int @Directive14(argument51 : "stringValue12228") @Directive30(argument80 : true) + field12416: Object2452 @Directive14(argument51 : "stringValue12229") @Directive30(argument80 : true) + field12423: Object2453 @Directive14(argument51 : "stringValue12234") @Directive30(argument80 : true) + field12430(argument437: Enum22, argument438: String, argument439: Int, argument440: String, argument441: Int): Object2454 @Directive30(argument80 : true) + field12431(argument442: Enum22, argument443: String, argument444: Int, argument445: String, argument446: Int): Object2454 @Directive30(argument80 : true) @deprecated + field12432: Object2456 @Directive30(argument80 : true) + field12604: Int @Directive30(argument80 : true) @Directive41 @deprecated + field12605: [Object2415!] @Directive14(argument51 : "stringValue12331") @Directive30(argument80 : true) @deprecated + field12606: [Object2477] @Directive14(argument51 : "stringValue12332") @Directive30(argument80 : true) @deprecated + field12610: [ID] @Directive14(argument51 : "stringValue12346") @Directive30(argument80 : true) @deprecated + field12611(argument448: String, argument449: String, argument450: Int, argument451: Int, argument452: Int, argument453: Int, argument454: [Enum405!], argument455: Boolean): [ID] @Directive14(argument51 : "stringValue12347") @Directive30(argument80 : true) @deprecated + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994(argument431: Boolean): String @Directive14(argument51 : "stringValue12209") @Directive30(argument80 : true) + field8996: Object2458 @Directive18 @Directive30(argument80 : true) + field9003: Int @Directive14(argument51 : "stringValue12205") @Directive30(argument80 : true) + field9025: String @Directive14(argument51 : "stringValue12210") @Directive30(argument80 : true) + field9026: String @Directive14(argument51 : "stringValue12206") @Directive30(argument80 : true) + field9677: Object2258 @Directive14(argument51 : "stringValue12221") @Directive30(argument80 : true) @Directive40 +} + +type Object245 @Directive21(argument61 : "stringValue753") @Directive44(argument97 : ["stringValue752"]) { + field1559: [Object246] + field1562: String + field1563: String +} + +type Object2450 @Directive22(argument62 : "stringValue12224") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12225"]) { + field12409: Object2451 @Directive30(argument80 : true) @Directive41 + field12413: Object2451 @Directive30(argument80 : true) @Directive41 + field12414: Object2451 @Directive30(argument80 : true) @Directive41 +} + +type Object2451 @Directive22(argument62 : "stringValue12226") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12227"]) { + field12410: Object1837 @Directive30(argument80 : true) @Directive41 + field12411: Object1837 @Directive30(argument80 : true) @Directive41 + field12412: Object1837 @Directive30(argument80 : true) @Directive41 +} + +type Object2452 @Directive22(argument62 : "stringValue12231") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue12230"]) @Directive44(argument97 : ["stringValue12232", "stringValue12233"]) { + field12417: Int @Directive30(argument80 : true) + field12418: Int @Directive30(argument80 : true) + field12419: Int @Directive30(argument80 : true) + field12420: Int @Directive30(argument80 : true) + field12421: Int @Directive30(argument80 : true) + field12422: Int @Directive30(argument80 : true) +} + +type Object2453 @Directive22(argument62 : "stringValue12236") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue12235"]) @Directive44(argument97 : ["stringValue12237", "stringValue12238"]) { + field12424: [ID!]! @Directive30(argument80 : true) + field12425: [ID!]! @Directive30(argument80 : true) + field12426: [ID!]! @Directive30(argument80 : true) + field12427: [ID!]! @Directive30(argument80 : true) + field12428: [ID!]! @Directive30(argument80 : true) + field12429: [ID!]! @Directive30(argument80 : true) +} + +type Object2454 implements Interface92 @Directive22(argument62 : "stringValue12239") @Directive44(argument97 : ["stringValue12240"]) { + field8384: Object753! + field8385: [Object2455] +} + +type Object2455 implements Interface93 @Directive22(argument62 : "stringValue12241") @Directive44(argument97 : ["stringValue12242"]) { + field8386: String! + field8999: Interface97 +} + +type Object2456 implements Interface92 @Directive22(argument62 : "stringValue12243") @Directive44(argument97 : ["stringValue12249"]) @Directive8(argument21 : "stringValue12245", argument23 : "stringValue12248", argument24 : "stringValue12244", argument25 : "stringValue12246", argument27 : "stringValue12247", argument28 : true) { + field8384: Object753! + field8385: [Object2457] +} + +type Object2457 implements Interface93 @Directive22(argument62 : "stringValue12250") @Directive44(argument97 : ["stringValue12251"]) { + field8386: String! + field8999: Object2258 +} + +type Object2458 implements Interface99 @Directive22(argument62 : "stringValue12252") @Directive31 @Directive44(argument97 : ["stringValue12253", "stringValue12254", "stringValue12255"]) @Directive45(argument98 : ["stringValue12256"]) @Directive45(argument98 : ["stringValue12257", "stringValue12258"]) { + field12433: Object2459 @Directive14(argument51 : "stringValue12259") + field12471(argument447: String): Object2465 @Directive14(argument51 : "stringValue12281") + field12479: String @Directive18 @deprecated + field12480: Object2470 @Directive14(argument51 : "stringValue12297") @deprecated + field12482: [Object2471!]! @Directive14(argument51 : "stringValue12307") @deprecated + field8997: Object2449 @Directive18 @deprecated +} + +type Object2459 @Directive22(argument62 : "stringValue12260") @Directive31 @Directive44(argument97 : ["stringValue12261", "stringValue12262"]) { + field12434: String! + field12435: Boolean! + field12436: String + field12437: String + field12438: Boolean + field12439: String + field12440: Scalar3 + field12441: Scalar3 + field12442: String + field12443: Int + field12444: Int + field12445: Int + field12446: Boolean! + field12447: [Union174]! + field12452: String + field12453: Object2461 + field12460: String + field12461: Object887 + field12462: Boolean! + field12463: Object2463 + field12467: Object2464 + field12470: Boolean +} + +type Object246 @Directive21(argument61 : "stringValue755") @Directive44(argument97 : ["stringValue754"]) { + field1560: String + field1561: String +} + +type Object2460 @Directive22(argument62 : "stringValue12266") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue12267", "stringValue12268"]) { + field12448: Object721! @Directive30(argument80 : true) + field12449: String! @Directive30(argument80 : true) + field12450: String @Directive30(argument80 : true) + field12451: Boolean! @Directive30(argument80 : true) +} + +type Object2461 @Directive22(argument62 : "stringValue12269") @Directive31 @Directive44(argument97 : ["stringValue12270", "stringValue12271"]) { + field12454: String + field12455: [Object2462!] + field12458: Int + field12459: Object426 +} + +type Object2462 @Directive22(argument62 : "stringValue12272") @Directive31 @Directive44(argument97 : ["stringValue12273", "stringValue12274"]) { + field12456: String + field12457: Int +} + +type Object2463 @Directive22(argument62 : "stringValue12275") @Directive31 @Directive44(argument97 : ["stringValue12276", "stringValue12277"]) { + field12464: String + field12465: String + field12466: String +} + +type Object2464 @Directive22(argument62 : "stringValue12278") @Directive31 @Directive44(argument97 : ["stringValue12279", "stringValue12280"]) { + field12468: String + field12469: String +} + +type Object2465 implements Interface46 @Directive22(argument62 : "stringValue12282") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue12283", "stringValue12284"]) { + field12472: Object2468 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object2466! + field8330: Object2467 + field8332: [Object1536] + field8337: [Object502] +} + +type Object2466 implements Interface45 @Directive22(argument62 : "stringValue12285") @Directive31 @Directive44(argument97 : ["stringValue12286", "stringValue12287"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object2467 implements Interface91 @Directive22(argument62 : "stringValue12288") @Directive31 @Directive44(argument97 : ["stringValue12289", "stringValue12290"]) { + field8331: [String] +} + +type Object2468 @Directive22(argument62 : "stringValue12291") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12292", "stringValue12293"]) { + field12473: Object2469 @Directive30(argument80 : true) @Directive41 +} + +type Object2469 @Directive22(argument62 : "stringValue12294") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue12295", "stringValue12296"]) { + field12474: String @Directive30(argument80 : true) @Directive41 + field12475: Boolean @Directive30(argument80 : true) @Directive41 + field12476: Int @Directive30(argument80 : true) @Directive41 + field12477: Int @Directive30(argument80 : true) @Directive41 + field12478: Int @Directive30(argument80 : true) @Directive41 +} + +type Object247 @Directive21(argument61 : "stringValue757") @Directive44(argument97 : ["stringValue756"]) { + field1565: String + field1566: String +} + +type Object2470 implements Interface36 @Directive22(argument62 : "stringValue12299") @Directive30(argument79 : "stringValue12300") @Directive44(argument97 : ["stringValue12298"]) @Directive7(argument11 : "stringValue12305", argument12 : "stringValue12303", argument14 : "stringValue12302", argument16 : "stringValue12304", argument17 : "stringValue12301", argument18 : false) { + field12481: [Object787!]! @Directive3(argument3 : "stringValue12306") @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2471 implements Interface36 @Directive22(argument62 : "stringValue12316") @Directive30(argument85 : "stringValue12315", argument86 : "stringValue12314") @Directive44(argument97 : ["stringValue12317"]) @Directive7(argument10 : "stringValue12312", argument11 : "stringValue12313", argument13 : "stringValue12311", argument14 : "stringValue12309", argument16 : "stringValue12310", argument17 : "stringValue12308") { + field11761: Object783 @Directive30(argument80 : true) @Directive40 + field12483: Object785 @Directive30(argument80 : true) @Directive40 + field12484: Object2472 @Directive30(argument80 : true) @Directive40 + field12514: Boolean @Directive30(argument80 : true) @Directive41 + field12603: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8993: Object2474 @Directive30(argument80 : true) @Directive39 +} + +type Object2472 @Directive22(argument62 : "stringValue12318") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12319"]) { + field12485: Boolean @Directive30(argument80 : true) @Directive41 + field12486: Boolean @Directive30(argument80 : true) @Directive41 + field12487: Scalar3 @Directive30(argument80 : true) @Directive41 + field12488: Scalar3 @Directive30(argument80 : true) @Directive41 + field12489: Int @Directive30(argument80 : true) @Directive41 + field12490: Object2473 @Directive30(argument80 : true) @Directive41 + field12496: Float @Directive30(argument80 : true) @Directive41 + field12497: Object779 @Directive30(argument80 : true) @Directive40 + field12498: String @Directive30(argument80 : true) @Directive40 + field12499: Object780 @Directive30(argument80 : true) @Directive41 + field12500: String @Directive30(argument80 : true) @Directive41 + field12501: Object780 @Directive30(argument80 : true) @Directive41 + field12502: Float @Directive30(argument80 : true) @Directive41 + field12503: Boolean @Directive30(argument80 : true) @Directive41 + field12504: Object780 @Directive30(argument80 : true) @Directive41 + field12505: [Object781] @Directive30(argument80 : true) @Directive41 + field12506: Object780 @Directive30(argument80 : true) @Directive41 + field12507: String @Directive30(argument80 : true) @Directive40 + field12508: String @Directive30(argument80 : true) @Directive41 + field12509: Object780 @Directive30(argument80 : true) @Directive41 + field12510: String @Directive30(argument80 : true) @Directive41 + field12511: Object780 @Directive30(argument80 : true) @Directive41 + field12512: String @Directive30(argument80 : true) @Directive41 + field12513: Object548 @Directive30(argument80 : true) @Directive40 +} + +type Object2473 @Directive22(argument62 : "stringValue12320") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12321"]) { + field12491: Int @Directive30(argument80 : true) @Directive41 + field12492: Int @Directive30(argument80 : true) @Directive41 + field12493: Int @Directive30(argument80 : true) @Directive41 + field12494: Int @Directive30(argument80 : true) @Directive41 + field12495: String @Directive30(argument80 : true) @Directive41 +} + +type Object2474 @Directive22(argument62 : "stringValue12322") @Directive31 @Directive44(argument97 : ["stringValue12323"]) { + field12515: [String] + field12516: String + field12517: Float + field12518: String + field12519: String + field12520: Int + field12521: Int + field12522: String + field12523: String + field12524: [Object749] + field12525: Object755 + field12526: [Object765] + field12527: String + field12528: [Object480] + field12529: [String] + field12530: String + field12531: String + field12532: String + field12533: String + field12534: Scalar2 + field12535: Boolean + field12536: Boolean + field12537: Boolean + field12538: Boolean + field12539: Boolean + field12540: Boolean + field12541: Object750 + field12542: Float + field12543: Float + field12544: String + field12545: String + field12546: String + field12547: Object770 + field12548: [Object770] + field12549: String + field12550: String + field12551: [Object480] + field12552: Enum218 + field12553: Enum219 + field12554: Int + field12555: Int + field12556: String + field12557: [String] + field12558: Object749 + field12559: String + field12560: String + field12561: Int + field12562: Int + field12563: String + field12564: String + field12565: String + field12566: String + field12567: Object767 + field12568: Boolean + field12569: Boolean + field12570: String + field12571: Float + field12572: Int + field12573: Object776 + field12574: Object750 + field12575: String + field12576: String + field12577: String + field12578: String + field12579: [Object774] + field12580: String + field12581: String + field12582: String + field12583: String + field12584: [Int] + field12585: [String] + field12586: [Object773] + field12587: [String] + field12588: String + field12589: [String] + field12590: [Object772] + field12591: Float + field12592: Object766 + field12593: Object2475 + field12599: [Enum495] + field12600: Object777 + field12601: Object752 + field12602: [Object752] +} + +type Object2475 @Directive22(argument62 : "stringValue12324") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12325"]) { + field12594: [Object2476] @Directive30(argument80 : true) @Directive41 + field12597: String @Directive30(argument80 : true) @Directive41 + field12598: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object2476 @Directive22(argument62 : "stringValue12326") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12327"]) { + field12595: Scalar3 @Directive30(argument80 : true) @Directive41 + field12596: Scalar3 @Directive30(argument80 : true) @Directive41 +} + +type Object2477 implements Interface36 @Directive22(argument62 : "stringValue12333") @Directive42(argument96 : ["stringValue12334", "stringValue12335"]) @Directive44(argument97 : ["stringValue12343"]) @Directive7(argument10 : "stringValue12341", argument11 : "stringValue12342", argument12 : "stringValue12340", argument13 : "stringValue12338", argument14 : "stringValue12337", argument16 : "stringValue12339", argument17 : "stringValue12336") { + field12484: Object778 @Directive30(argument80 : true) + field12607: Object770 @Directive3(argument3 : "stringValue12344") @Directive30(argument80 : true) + field12608: Object784 @Directive30(argument80 : true) + field12609: [Object770] @Directive3(argument3 : "stringValue12345") @Directive30(argument80 : true) + field2312: ID! @Directive30(argument80 : true) +} + +type Object2478 implements Interface92 @Directive22(argument62 : "stringValue12352") @Directive44(argument97 : ["stringValue12353"]) @Directive8(argument19 : "stringValue12359", argument21 : "stringValue12355", argument23 : "stringValue12358", argument24 : "stringValue12354", argument25 : "stringValue12356", argument27 : "stringValue12357") { + field8384: Object753! + field8385: [Object2479] +} + +type Object2479 implements Interface93 @Directive22(argument62 : "stringValue12360") @Directive44(argument97 : ["stringValue12361"]) { + field8386: String! + field8999: Object2480 +} + +type Object248 @Directive21(argument61 : "stringValue760") @Directive44(argument97 : ["stringValue759"]) { + field1567: Int + field1568: String + field1569: Int + field1570: String + field1571: String + field1572: String + field1573: String + field1574: String + field1575: String +} + +type Object2480 @Directive22(argument62 : "stringValue12362") @Directive30(argument79 : "stringValue12365") @Directive44(argument97 : ["stringValue12363", "stringValue12364"]) @Directive45(argument98 : ["stringValue12366"]) { + field12613: Enum496 @Directive30(argument80 : true) @Directive40 + field12614: Union175 @Directive30(argument80 : true) @Directive40 + field12622: Boolean @Directive3(argument3 : "stringValue12375") @Directive30(argument80 : true) @Directive40 +} + +type Object2481 @Directive21(argument61 : "stringValue12371") @Directive22(argument62 : "stringValue12369") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12370"]) { + field12615: Scalar3 @Directive30(argument80 : true) @Directive40 + field12616: Scalar3 @Directive30(argument80 : true) @Directive41 + field12617: Int @Directive30(argument80 : true) @Directive40 + field12618: Int @Directive30(argument80 : true) @Directive40 + field12619: Enum497 @Directive30(argument80 : true) @Directive40 + field12620: Int @Directive30(argument80 : true) @Directive40 + field12621: Float @Directive30(argument80 : true) @Directive40 +} + +type Object2482 implements Interface92 @Directive22(argument62 : "stringValue12385") @Directive44(argument97 : ["stringValue12386"]) { + field8384: Object753! + field8385: [Object2483] +} + +type Object2483 implements Interface93 @Directive22(argument62 : "stringValue12387") @Directive44(argument97 : ["stringValue12388"]) { + field8386: String! + field8999: Object6143 +} + +type Object2484 implements Interface36 @Directive22(argument62 : "stringValue12391") @Directive30(argument84 : "stringValue12396", argument86 : "stringValue12395") @Directive44(argument97 : ["stringValue12397"]) @Directive7(argument13 : "stringValue12393", argument14 : "stringValue12394", argument17 : "stringValue12392", argument18 : false) { + field12625: Boolean! @Directive30(argument80 : true) @Directive41 + field12626: Boolean! @Directive30(argument80 : true) @Directive41 + field12627: Boolean! @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2485 implements Interface113 @Directive22(argument62 : "stringValue12409") @Directive30(argument83 : ["stringValue12410", "stringValue12411", "stringValue12412", "stringValue12413"]) @Directive44(argument97 : ["stringValue12414", "stringValue12415"]) { + field12630: [Object2486] @Directive30(argument80 : true) @Directive41 + field12633: Interface115! @Directive30(argument80 : true) @Directive41 +} + +type Object2486 implements Interface114 @Directive22(argument62 : "stringValue12416") @Directive30(argument83 : ["stringValue12417", "stringValue12418", "stringValue12419", "stringValue12420"]) @Directive44(argument97 : ["stringValue12421", "stringValue12422"]) { + field12631: String! @Directive30(argument80 : true) @Directive41 + field12632: Object2487 @Directive30(argument80 : true) @Directive41 +} + +type Object2487 implements Interface36 @Directive22(argument62 : "stringValue12423") @Directive30(argument83 : ["stringValue12424", "stringValue12425", "stringValue12426", "stringValue12427"]) @Directive44(argument97 : ["stringValue12428", "stringValue12429"]) @Directive7(argument12 : "stringValue12434", argument13 : "stringValue12432", argument14 : "stringValue12431", argument16 : "stringValue12433", argument17 : "stringValue12430") { + field10390: String @Directive30(argument80 : true) @Directive41 + field11028: String @Directive30(argument80 : true) @Directive41 + field12641: Object4490 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue12435") @Directive41 + field12642: String @Directive3(argument3 : "stringValue12436") @Directive30(argument80 : true) @Directive41 + field12643: String @Directive30(argument80 : true) @Directive41 + field12644: Scalar4 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9677: Object2258 @Directive3(argument3 : "stringValue12437") @Directive30(argument80 : true) @Directive41 +} + +type Object2488 implements Interface5 @Directive22(argument62 : "stringValue12438") @Directive31 @Directive44(argument97 : ["stringValue12439", "stringValue12440"]) { + field12645: Object742 + field12646: String + field12647: Interface3 + field12648: Float + field12649: String + field12650: Enum500 + field5096: Enum10 + field76: String + field77: String + field78: String +} + +type Object2489 implements Interface2 @Directive22(argument62 : "stringValue12444") @Directive31 @Directive44(argument97 : ["stringValue12445", "stringValue12446"]) { + field12651: Object450 + field12652: Object478 + field2: String + field3: Interface3 +} + +type Object249 @Directive21(argument61 : "stringValue763") @Directive44(argument97 : ["stringValue762"]) { + field1576: String + field1577: String! + field1578: String + field1579: String + field1580: String +} + +type Object2490 implements Interface2 @Directive22(argument62 : "stringValue12447") @Directive31 @Directive44(argument97 : ["stringValue12448", "stringValue12449"]) { + field12651: Object450 + field12653: [Object478] + field2: String + field3: Interface3 +} + +type Object2491 implements Interface110 @Directive22(argument62 : "stringValue12450") @Directive31 @Directive44(argument97 : ["stringValue12451", "stringValue12452"]) { + field12170: ID! + field12171: String + field12172: Object2363 + field12173: Object1837 + field12174: Object1837 + field12181: [Object2367] + field12187: Object2368 + field12654: Object1837 + field12655: Object2492 +} + +type Object2492 @Directive22(argument62 : "stringValue12453") @Directive31 @Directive44(argument97 : ["stringValue12454", "stringValue12455"]) { + field12656: Object1837 + field12657: Object1837 + field12658: [Object2493] +} + +type Object2493 @Directive22(argument62 : "stringValue12456") @Directive31 @Directive44(argument97 : ["stringValue12457", "stringValue12458"]) { + field12659: Enum10 + field12660: Object1837 + field12661: Object1837 + field12662: Scalar2 + field12663: Object2494 + field12671: Union176 +} + +type Object2494 @Directive22(argument62 : "stringValue12459") @Directive31 @Directive44(argument97 : ["stringValue12460", "stringValue12461"]) { + field12664: String + field12665: String @deprecated + field12666: Enum501 + field12667: String @deprecated + field12668: Enum502 + field12669: String + field12670: Int +} + +type Object2495 @Directive22(argument62 : "stringValue12473") @Directive31 @Directive44(argument97 : ["stringValue12474", "stringValue12475"]) { + field12672: Object2363 + field12673: Object1837 + field12674: Object1837 + field12675: Object1837 + field12676: Object2496 +} + +type Object2496 @Directive22(argument62 : "stringValue12476") @Directive31 @Directive44(argument97 : ["stringValue12477", "stringValue12478"]) { + field12677: Object1837 + field12678: Enum109 + field12679: Object2497 +} + +type Object2497 @Directive22(argument62 : "stringValue12479") @Directive31 @Directive44(argument97 : ["stringValue12480", "stringValue12481"]) { + field12680: Scalar2 + field12681: String @deprecated + field12682: Enum503 + field12683: Scalar1 @deprecated + field12684: Object2498 @deprecated + field12691: [Object2498] + field12692: Object2499 +} + +type Object2498 @Directive22(argument62 : "stringValue12486") @Directive31 @Directive44(argument97 : ["stringValue12487", "stringValue12488"]) { + field12685: String @deprecated + field12686: Enum504 + field12687: String + field12688: Boolean + field12689: Int + field12690: Object403 +} + +type Object2499 @Directive22(argument62 : "stringValue12493") @Directive31 @Directive44(argument97 : ["stringValue12494", "stringValue12495"]) { + field12693: Object1837 + field12694: Object1837 + field12695: Object1837 + field12696: Object1837 +} + +type Object25 @Directive21(argument61 : "stringValue193") @Directive44(argument97 : ["stringValue192"]) { + field185: Scalar3 +} + +type Object250 @Directive21(argument61 : "stringValue766") @Directive44(argument97 : ["stringValue765"]) { + field1581: String + field1582: String + field1583: String + field1584: String + field1585: String + field1586: Object35 + field1587: Object135 + field1588: Object135 + field1589: Object135 + field1590: Object44 + field1591: Object44 + field1592: String + field1593: String + field1594: String + field1595: Object136 + field1596: Object251 + field1599: String + field1600: Object252 + field1607: String + field1608: Enum77 + field1609: [Object254] + field1613: [Object254] + field1614: String + field1615: String + field1616: String + field1617: Object255 + field1625: String + field1626: String + field1627: Object256 + field1634: String + field1635: Enum101 + field1636: [Object158] + field1637: Object257 +} + +type Object2500 @Directive22(argument62 : "stringValue12496") @Directive31 @Directive44(argument97 : ["stringValue12497", "stringValue12498"]) { + field12697: String @deprecated + field12698: String @deprecated + field12699: String +} + +type Object2501 implements Interface82 @Directive22(argument62 : "stringValue12499") @Directive31 @Directive44(argument97 : ["stringValue12500", "stringValue12501"]) { + field12700: Interface3 + field6641: Int +} + +type Object2502 implements Interface3 @Directive22(argument62 : "stringValue12502") @Directive31 @Directive44(argument97 : ["stringValue12503", "stringValue12504"]) { + field12701: Object2503 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2503 implements Interface88 @Directive22(argument62 : "stringValue12505") @Directive31 @Directive44(argument97 : ["stringValue12506", "stringValue12507"]) { + field12702: ID + field7484: String +} + +type Object2504 @Directive22(argument62 : "stringValue12508") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12509", "stringValue12510"]) { + field12703: String @Directive30(argument80 : true) @Directive41 + field12704: String @Directive30(argument80 : true) @Directive41 + field12705: String @Directive30(argument80 : true) @Directive41 + field12706: String @Directive30(argument80 : true) @Directive41 + field12707: Enum505 @Directive30(argument80 : true) @Directive41 + field12708: Enum462 @Directive30(argument80 : true) @Directive41 + field12709: Enum10 @Directive30(argument80 : true) @Directive41 + field12710: [Object2505] @Directive30(argument80 : true) @Directive41 + field12760: [Object2505] @Directive30(argument80 : true) @Directive41 + field12761: String @Directive30(argument80 : true) @Directive41 +} + +type Object2505 @Directive22(argument62 : "stringValue12515") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12516", "stringValue12517"]) { + field12711: ID! @Directive30(argument80 : true) @Directive40 + field12712: Enum501 @Directive30(argument80 : true) @Directive41 + field12713: Enum502 @Directive30(argument80 : true) @Directive41 + field12714: Enum10 @Directive30(argument80 : true) @Directive41 + field12715: Enum506 @Directive30(argument80 : true) @Directive41 + field12716: Enum507 @Directive30(argument80 : true) @Directive41 + field12717: Enum503 @Directive30(argument80 : true) @Directive41 + field12718: String @Directive30(argument80 : true) @Directive40 + field12719: Int @Directive30(argument80 : true) @Directive41 + field12720: ID @Directive30(argument80 : true) @Directive40 + field12721: Object2506 @Directive30(argument80 : true) @Directive41 + field12742: [Object2508] @Directive30(argument80 : true) @Directive41 + field12745: [Object2509] @Directive30(argument80 : true) @Directive41 + field12759: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2506 @Directive22(argument62 : "stringValue12524") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12525"]) { + field12722: Object2507 @Directive30(argument80 : true) @Directive41 + field12727: Object2507 @Directive30(argument80 : true) @Directive41 + field12728: Object2507 @Directive30(argument80 : true) @Directive41 + field12729: Object2507 @Directive30(argument80 : true) @Directive40 + field12730: Object2507 @Directive30(argument80 : true) @Directive41 + field12731: Object2507 @Directive30(argument80 : true) @Directive41 + field12732: Object2507 @Directive30(argument80 : true) @Directive41 + field12733: Object2507 @Directive30(argument80 : true) @Directive41 + field12734: Object2507 @Directive30(argument80 : true) @Directive41 + field12735: Object2507 @Directive30(argument80 : true) @Directive40 + field12736: Object2507 @Directive30(argument80 : true) @Directive41 + field12737: Object2507 @Directive30(argument80 : true) @Directive41 + field12738: Object2507 @Directive30(argument80 : true) @Directive41 + field12739: Object2507 @Directive30(argument80 : true) @Directive41 + field12740: Object2507 @Directive30(argument80 : true) @Directive41 + field12741: Object2507 @Directive30(argument80 : true) @Directive40 +} + +type Object2507 @Directive22(argument62 : "stringValue12526") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12527"]) { + field12723: Int @Directive30(argument80 : true) @Directive41 + field12724: String @Directive30(argument80 : true) @Directive41 + field12725: Object403 @Directive30(argument80 : true) @Directive41 + field12726: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object2508 @Directive22(argument62 : "stringValue12528") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12529", "stringValue12530"]) { + field12743: Enum508! @Directive30(argument80 : true) @Directive41 + field12744: String @Directive30(argument80 : true) @Directive41 +} + +type Object2509 @Directive22(argument62 : "stringValue12534") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12535", "stringValue12536"]) { + field12746: Enum504 @Directive30(argument80 : true) @Directive41 + field12747: Enum509 @Directive30(argument80 : true) @Directive41 + field12748: String @Directive30(argument80 : true) @Directive41 + field12749: String @Directive30(argument80 : true) @Directive41 + field12750: Boolean @Directive30(argument80 : true) @Directive41 + field12751: Boolean @Directive30(argument80 : true) @Directive41 + field12752: Int @Directive30(argument80 : true) @Directive41 + field12753: Int @Directive30(argument80 : true) @Directive41 + field12754: Object403 @Directive30(argument80 : true) @Directive41 + field12755: Object403 @Directive30(argument80 : true) @Directive41 + field12756: [Object2510] @Directive30(argument80 : true) @Directive41 +} + +type Object251 @Directive21(argument61 : "stringValue768") @Directive44(argument97 : ["stringValue767"]) { + field1597: Int + field1598: Int +} + +type Object2510 @Directive20(argument58 : "stringValue12540", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue12541") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12542", "stringValue12543"]) { + field12757: Scalar3 @Directive30(argument80 : true) @Directive41 + field12758: Enum510 @Directive30(argument80 : true) @Directive41 +} + +type Object2511 implements Interface5 @Directive22(argument62 : "stringValue12548") @Directive31 @Directive44(argument97 : ["stringValue12549", "stringValue12550"]) { + field12645: Object742 + field12646: String + field12647: Interface3 + field12762: Enum511 + field5096: Enum10 + field76: String + field77: String + field78: String +} + +type Object2512 @Directive21(argument61 : "stringValue12555") @Directive44(argument97 : ["stringValue12554"]) { + field12763: [Object2513] +} + +type Object2513 @Directive21(argument61 : "stringValue12557") @Directive44(argument97 : ["stringValue12556"]) { + field12764: Scalar2 + field12765: String + field12766: String + field12767: String + field12768: String + field12769: String + field12770: String + field12771: String + field12772: String + field12773: String + field12774: String + field12775: Int +} + +type Object2514 @Directive21(argument61 : "stringValue12559") @Directive44(argument97 : ["stringValue12558"]) { + field12776: Enum512 + field12777: String + field12778: Boolean + field12779: Boolean + field12780: Int + field12781: String + field12782: Scalar2 + field12783: String + field12784: Int + field12785: String + field12786: Float + field12787: Int + field12788: Enum513 +} + +type Object2515 implements Interface15 @Directive21(argument61 : "stringValue12563") @Directive44(argument97 : ["stringValue12562"]) { + field126: Object14 + field12789: Object2516 + field12806: String + field12807: String + field12808: String + field12809: String + field12810: Int + field12811: Boolean + field144: String + field145: Scalar1 +} + +type Object2516 @Directive21(argument61 : "stringValue12565") @Directive44(argument97 : ["stringValue12564"]) { + field12790: [Object2517] + field12797: String + field12798: String + field12799: [String] + field12800: String @deprecated + field12801: String + field12802: Boolean + field12803: [String] + field12804: String + field12805: Enum514 +} + +type Object2517 @Directive21(argument61 : "stringValue12567") @Directive44(argument97 : ["stringValue12566"]) { + field12791: String + field12792: String + field12793: Boolean + field12794: Union83 + field12795: Boolean @deprecated + field12796: Boolean +} + +type Object2518 @Directive21(argument61 : "stringValue12570") @Directive44(argument97 : ["stringValue12569"]) { + field12812: Scalar4 + field12813: Scalar4 + field12814: Int + field12815: Scalar2 + field12816: Boolean + field12817: String + field12818: String +} + +type Object2519 @Directive21(argument61 : "stringValue12572") @Directive44(argument97 : ["stringValue12571"]) { + field12819: String + field12820: String + field12821: [Object2520] +} + +type Object252 @Directive21(argument61 : "stringValue770") @Directive44(argument97 : ["stringValue769"]) { + field1601: String + field1602: String + field1603: [Object253] +} + +type Object2520 @Directive21(argument61 : "stringValue12574") @Directive44(argument97 : ["stringValue12573"]) { + field12822: String + field12823: String + field12824: String +} + +type Object2521 implements Interface116 @Directive21(argument61 : "stringValue12580") @Directive44(argument97 : ["stringValue12579"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12830: Enum516! +} + +type Object2522 @Directive21(argument61 : "stringValue12578") @Directive44(argument97 : ["stringValue12577"]) { + field12827: String +} + +type Object2523 implements Interface17 @Directive21(argument61 : "stringValue12583") @Directive44(argument97 : ["stringValue12582"]) { + field12831: Int + field151: Enum16 + field152: Enum17 + field153: Object16 + field168: Float + field169: String + field170: String + field171: Object16 + field172: Object19 +} + +type Object2524 @Directive21(argument61 : "stringValue12585") @Directive44(argument97 : ["stringValue12584"]) { + field12832: String! + field12833: String! +} + +type Object2525 implements Interface116 @Directive21(argument61 : "stringValue12587") @Directive44(argument97 : ["stringValue12586"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2524!]! +} + +type Object2526 @Directive21(argument61 : "stringValue12589") @Directive44(argument97 : ["stringValue12588"]) { + field12835: String + field12836: [Object348] + field12837: Boolean +} + +type Object2527 @Directive21(argument61 : "stringValue12591") @Directive44(argument97 : ["stringValue12590"]) { + field12838: String! + field12839: String! + field12840: String! + field12841: Object2528! +} + +type Object2528 @Directive21(argument61 : "stringValue12593") @Directive44(argument97 : ["stringValue12592"]) { + field12842: String + field12843: Object2516 +} + +type Object2529 implements Interface116 @Directive21(argument61 : "stringValue12595") @Directive44(argument97 : ["stringValue12594"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2527!]! +} + +type Object253 @Directive21(argument61 : "stringValue772") @Directive44(argument97 : ["stringValue771"]) { + field1604: Scalar3 + field1605: Float + field1606: String +} + +type Object2530 implements Interface116 @Directive21(argument61 : "stringValue12597") @Directive44(argument97 : ["stringValue12596"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12844: [Object2531!]! +} + +type Object2531 @Directive21(argument61 : "stringValue12599") @Directive44(argument97 : ["stringValue12598"]) { + field12845: String + field12846: String + field12847: String! + field12848: String! +} + +type Object2532 @Directive21(argument61 : "stringValue12601") @Directive44(argument97 : ["stringValue12600"]) { + field12849: String + field12850: String + field12851: String + field12852: String + field12853: String + field12854: Enum517 + field12855: String +} + +type Object2533 @Directive21(argument61 : "stringValue12604") @Directive44(argument97 : ["stringValue12603"]) { + field12856: String + field12857: String + field12858: String + field12859: String + field12860: String + field12861: String + field12862: Object2534 +} + +type Object2534 @Directive21(argument61 : "stringValue12606") @Directive44(argument97 : ["stringValue12605"]) { + field12863: String + field12864: String + field12865: String +} + +type Object2535 implements Interface15 @Directive21(argument61 : "stringValue12608") @Directive44(argument97 : ["stringValue12607"]) { + field126: Object14 + field12866: String + field144: String + field145: Scalar1 +} + +type Object2536 implements Interface15 @Directive21(argument61 : "stringValue12610") @Directive44(argument97 : ["stringValue12609"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +type Object2537 @Directive21(argument61 : "stringValue12612") @Directive44(argument97 : ["stringValue12611"]) { + field12867: String + field12868: String +} + +type Object2538 @Directive21(argument61 : "stringValue12614") @Directive44(argument97 : ["stringValue12613"]) { + field12869: Float + field12870: Float +} + +type Object2539 @Directive21(argument61 : "stringValue12616") @Directive44(argument97 : ["stringValue12615"]) { + field12871: Scalar2 + field12872: String + field12873: Scalar2 + field12874: String + field12875: Scalar2 + field12876: Scalar2 + field12877: String +} + +type Object254 @Directive21(argument61 : "stringValue774") @Directive44(argument97 : ["stringValue773"]) { + field1610: Enum100 + field1611: String + field1612: String +} + +type Object2540 implements Interface116 @Directive21(argument61 : "stringValue12618") @Directive44(argument97 : ["stringValue12617"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12878: [Object2541!]! +} + +type Object2541 @Directive21(argument61 : "stringValue12620") @Directive44(argument97 : ["stringValue12619"]) { + field12879: String + field12880: String + field12881: String + field12882: String +} + +type Object2542 @Directive21(argument61 : "stringValue12622") @Directive44(argument97 : ["stringValue12621"]) { + field12883: Float + field12884: String + field12885: String + field12886: Boolean +} + +type Object2543 implements Interface116 @Directive21(argument61 : "stringValue12624") @Directive44(argument97 : ["stringValue12623"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12887: [Object2544!] + field12894: Object2528 + field12895: Object2545 +} + +type Object2544 @Directive21(argument61 : "stringValue12626") @Directive44(argument97 : ["stringValue12625"]) { + field12888: Scalar2 + field12889: String + field12890: String + field12891: String + field12892: String + field12893: String +} + +type Object2545 implements Interface116 @Directive21(argument61 : "stringValue12628") @Directive44(argument97 : ["stringValue12627"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2546!]! + field12894: Object2528 +} + +type Object2546 @Directive21(argument61 : "stringValue12630") @Directive44(argument97 : ["stringValue12629"]) { + field12896: Object2516 + field12897: String + field12898: String + field12899: String + field12900: String + field12901: Object2547 + field12905: String +} + +type Object2547 @Directive21(argument61 : "stringValue12632") @Directive44(argument97 : ["stringValue12631"]) { + field12902: Scalar2 + field12903: String + field12904: String +} + +type Object2548 implements Interface116 @Directive21(argument61 : "stringValue12634") @Directive44(argument97 : ["stringValue12633"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12906: [Object2546!]! +} + +type Object2549 implements Interface116 @Directive21(argument61 : "stringValue12636") @Directive44(argument97 : ["stringValue12635"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2550!]! + field12916: Enum520 +} + +type Object255 @Directive21(argument61 : "stringValue777") @Directive44(argument97 : ["stringValue776"]) { + field1618: Scalar2 + field1619: String + field1620: String + field1621: String + field1622: String + field1623: String + field1624: String +} + +type Object2550 @Directive21(argument61 : "stringValue12638") @Directive44(argument97 : ["stringValue12637"]) { + field12907: Enum518! + field12908: String + field12909: Object2551 @deprecated + field12912: String + field12913: Enum519 + field12914: Enum519 + field12915: [Object2550] +} + +type Object2551 @Directive21(argument61 : "stringValue12641") @Directive44(argument97 : ["stringValue12640"]) { + field12910: String + field12911: String +} + +type Object2552 implements Interface116 @Directive21(argument61 : "stringValue12645") @Directive44(argument97 : ["stringValue12644"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12917: [Object2546!]! + field12918: [Object2541] +} + +type Object2553 @Directive21(argument61 : "stringValue12647") @Directive44(argument97 : ["stringValue12646"]) { + field12919: String! + field12920: String + field12921: [Object2544!]! + field12922: String +} + +type Object2554 implements Interface116 @Directive21(argument61 : "stringValue12649") @Directive44(argument97 : ["stringValue12648"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12887: [Object2553!] + field12895: Object2545 + field12923: Object2547 +} + +type Object2555 @Directive21(argument61 : "stringValue12651") @Directive44(argument97 : ["stringValue12650"]) { + field12924: String + field12925: Float +} + +type Object2556 implements Interface116 @Directive21(argument61 : "stringValue12653") @Directive44(argument97 : ["stringValue12652"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12926: String! +} + +type Object2557 @Directive21(argument61 : "stringValue12655") @Directive44(argument97 : ["stringValue12654"]) { + field12927: String + field12928: Boolean +} + +type Object2558 @Directive21(argument61 : "stringValue12657") @Directive44(argument97 : ["stringValue12656"]) { + field12929: String + field12930: String + field12931: String +} + +type Object2559 implements Interface116 @Directive21(argument61 : "stringValue12659") @Directive44(argument97 : ["stringValue12658"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12932: Object2560! + field12936: Union80! + field12937: Object2562! + field12940: Enum522 +} + +type Object256 @Directive21(argument61 : "stringValue779") @Directive44(argument97 : ["stringValue778"]) { + field1628: String + field1629: Scalar2 + field1630: String + field1631: String + field1632: Scalar2 + field1633: String +} + +type Object2560 @Directive21(argument61 : "stringValue12661") @Directive44(argument97 : ["stringValue12660"]) { + field12933: [Object2561!]! +} + +type Object2561 @Directive21(argument61 : "stringValue12663") @Directive44(argument97 : ["stringValue12662"]) { + field12934: String! + field12935: Enum521! +} + +type Object2562 @Directive21(argument61 : "stringValue12666") @Directive44(argument97 : ["stringValue12665"]) { + field12938: String! + field12939: String! +} + +type Object2563 @Directive21(argument61 : "stringValue12669") @Directive44(argument97 : ["stringValue12668"]) { + field12941: String + field12942: String + field12943: String + field12944: String + field12945: Enum523 +} + +type Object2564 @Directive21(argument61 : "stringValue12672") @Directive44(argument97 : ["stringValue12671"]) { + field12946: String + field12947: Enum524 + field12948: Union81 +} + +type Object2565 @Directive21(argument61 : "stringValue12675") @Directive44(argument97 : ["stringValue12674"]) { + field12949: String + field12950: String + field12951: String +} + +type Object2566 @Directive21(argument61 : "stringValue12677") @Directive44(argument97 : ["stringValue12676"]) { + field12952: String + field12953: Float + field12954: String + field12955: Object2557 + field12956: String + field12957: String + field12958: Scalar2! + field12959: Boolean + field12960: Object2567 + field12964: String + field12965: Float + field12966: Float + field12967: String + field12968: Object2568 + field12978: [Object2513] + field12979: Int + field12980: Int + field12981: Scalar2 + field12982: Int + field12983: Float + field12984: Int + field12985: String + field12986: [Object2518] + field12987: String + field12988: Float + field12989: [Object2569] + field13012: [Object2565] + field13013: Enum525 + field13014: Object2571 + field13023: String + field13024: String + field13025: Enum526 + field13026: [String] + field13027: String + field13028: String + field13029: String + field13030: Object2513 + field13031: String + field13032: String + field13033: String + field13034: Boolean + field13035: String + field13036: Object2572 + field13040: Enum527 + field13041: [String] + field13042: Object2512 + field13043: Float + field13044: String + field13045: Enum528 + field13046: [String] + field13047: String + field13048: Float + field13049: String + field13050: String + field13051: Object2573 + field13061: String + field13062: Object2574 + field13066: Object2575 + field13070: String + field13071: Boolean +} + +type Object2567 @Directive21(argument61 : "stringValue12679") @Directive44(argument97 : ["stringValue12678"]) { + field12961: String + field12962: String + field12963: String +} + +type Object2568 @Directive21(argument61 : "stringValue12681") @Directive44(argument97 : ["stringValue12680"]) { + field12969: Scalar2 + field12970: String + field12971: String + field12972: String + field12973: String + field12974: String + field12975: String + field12976: String + field12977: String +} + +type Object2569 @Directive21(argument61 : "stringValue12683") @Directive44(argument97 : ["stringValue12682"]) { + field12990: Object2513 + field12991: Object2570 +} + +type Object257 @Directive21(argument61 : "stringValue782") @Directive44(argument97 : ["stringValue781"]) { + field1638: String + field1639: String + field1640: Object35 + field1641: Object258 + field1647: Boolean +} + +type Object2570 @Directive21(argument61 : "stringValue12685") @Directive44(argument97 : ["stringValue12684"]) { + field12992: String + field12993: String + field12994: String + field12995: String + field12996: String + field12997: String + field12998: String + field12999: String + field13000: String + field13001: String + field13002: String + field13003: String + field13004: String + field13005: String + field13006: String + field13007: String + field13008: String + field13009: String + field13010: [Object2558] + field13011: Scalar2 +} + +type Object2571 @Directive21(argument61 : "stringValue12688") @Directive44(argument97 : ["stringValue12687"]) { + field13015: String + field13016: Boolean + field13017: Scalar2 + field13018: Boolean + field13019: String + field13020: String + field13021: String + field13022: Scalar4 +} + +type Object2572 @Directive21(argument61 : "stringValue12691") @Directive44(argument97 : ["stringValue12690"]) { + field13037: String + field13038: String + field13039: String +} + +type Object2573 @Directive21(argument61 : "stringValue12695") @Directive44(argument97 : ["stringValue12694"]) { + field13052: String + field13053: String + field13054: Boolean + field13055: String + field13056: String + field13057: String + field13058: String + field13059: [String] + field13060: Scalar2 +} + +type Object2574 @Directive21(argument61 : "stringValue12697") @Directive44(argument97 : ["stringValue12696"]) { + field13063: [String] + field13064: [String] + field13065: [String] +} + +type Object2575 @Directive21(argument61 : "stringValue12699") @Directive44(argument97 : ["stringValue12698"]) { + field13067: Enum529 + field13068: Enum529 + field13069: Enum529 +} + +type Object2576 implements Interface116 @Directive21(argument61 : "stringValue12702") @Directive44(argument97 : ["stringValue12701"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2566]! + field12894: Object2528 +} + +type Object2577 @Directive21(argument61 : "stringValue12704") @Directive44(argument97 : ["stringValue12703"]) { + field13072: String + field13073: String + field13074: String + field13075: String + field13076: String + field13077: String + field13078: Object2516 + field13079: String + field13080: String + field13081: Object2534 +} + +type Object2578 @Directive21(argument61 : "stringValue12706") @Directive44(argument97 : ["stringValue12705"]) { + field13082: String + field13083: String +} + +type Object2579 implements Interface116 @Directive21(argument61 : "stringValue12708") @Directive44(argument97 : ["stringValue12707"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13084: [Object2578!]! +} + +type Object258 @Directive21(argument61 : "stringValue784") @Directive44(argument97 : ["stringValue783"]) { + field1642: String + field1643: String + field1644: String + field1645: String + field1646: Int +} + +type Object2580 @Directive21(argument61 : "stringValue12710") @Directive44(argument97 : ["stringValue12709"]) { + field13085: Scalar2 + field13086: String + field13087: String + field13088: Float + field13089: Scalar2 + field13090: String + field13091: String +} + +type Object2581 implements Interface116 @Directive21(argument61 : "stringValue12712") @Directive44(argument97 : ["stringValue12711"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13092: [Object2580!]! +} + +type Object2582 implements Interface15 @Directive21(argument61 : "stringValue12714") @Directive44(argument97 : ["stringValue12713"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +type Object2583 @Directive21(argument61 : "stringValue12716") @Directive44(argument97 : ["stringValue12715"]) { + field13093: String + field13094: Float + field13095: String +} + +type Object2584 implements Interface116 @Directive21(argument61 : "stringValue12718") @Directive44(argument97 : ["stringValue12717"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String +} + +type Object2585 @Directive21(argument61 : "stringValue12720") @Directive44(argument97 : ["stringValue12719"]) { + field13096: String + field13097: String + field13098: String + field13099: String + field13100: Enum530 + field13101: String + field13102: Enum531 +} + +type Object2586 implements Interface15 @Directive21(argument61 : "stringValue12724") @Directive44(argument97 : ["stringValue12723"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +type Object2587 implements Interface15 @Directive21(argument61 : "stringValue12726") @Directive44(argument97 : ["stringValue12725"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +type Object2588 @Directive21(argument61 : "stringValue12728") @Directive44(argument97 : ["stringValue12727"]) { + field13103: String + field13104: String + field13105: String + field13106: Float + field13107: Scalar2 + field13108: String +} + +type Object2589 implements Interface15 @Directive21(argument61 : "stringValue12730") @Directive44(argument97 : ["stringValue12729"]) { + field126: Object14 + field13109: String! + field13110: String + field13111: Interface15 + field144: String + field145: Scalar1 +} + +type Object259 @Directive21(argument61 : "stringValue787") @Directive44(argument97 : ["stringValue786"]) { + field1648: String + field1649: String + field1650: String + field1651: String + field1652: Object135 + field1653: Object135 + field1654: Object135 + field1655: Object136 + field1656: String + field1657: String + field1658: String + field1659: Object35 + field1660: [Object260] + field1677: Scalar2 + field1678: [Object135] + field1679: [Object135] + field1680: [Object135] +} + +type Object2590 @Directive21(argument61 : "stringValue12732") @Directive44(argument97 : ["stringValue12731"]) { + field13112: String! +} + +type Object2591 implements Interface15 @Directive21(argument61 : "stringValue12734") @Directive44(argument97 : ["stringValue12733"]) { + field126: Object14 + field13113: Boolean + field13114: [String] + field13115: Boolean + field144: String + field145: Scalar1 +} + +type Object2592 @Directive21(argument61 : "stringValue12736") @Directive44(argument97 : ["stringValue12735"]) { + field13116: String! + field13117: Boolean! + field13118: String + field13119: String +} + +type Object2593 implements Interface116 @Directive21(argument61 : "stringValue12738") @Directive44(argument97 : ["stringValue12737"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13120: [Object2562!]! + field13121: String! +} + +type Object2594 @Directive21(argument61 : "stringValue12740") @Directive44(argument97 : ["stringValue12739"]) { + field13122: String + field13123: String + field13124: String +} + +type Object2595 implements Interface116 @Directive21(argument61 : "stringValue12742") @Directive44(argument97 : ["stringValue12741"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13125: Object2594! +} + +type Object2596 implements Interface15 @Directive21(argument61 : "stringValue12744") @Directive44(argument97 : ["stringValue12743"]) { + field126: Object14 + field13126: String! + field144: String + field145: Scalar1 +} + +type Object2597 implements Interface16 @Directive21(argument61 : "stringValue12746") @Directive44(argument97 : ["stringValue12745"]) { + field13127: Enum114 + field13128: Int + field146: String! + field147: Enum15 + field148: Float + field149: String + field150: Interface17 + field175: Interface15 +} + +type Object2598 @Directive21(argument61 : "stringValue12748") @Directive44(argument97 : ["stringValue12747"]) { + field13129: Object2599 + field13133: [String] + field13134: String + field13135: [Object2600] +} + +type Object2599 @Directive21(argument61 : "stringValue12750") @Directive44(argument97 : ["stringValue12749"]) { + field13130: String + field13131: String + field13132: String +} + +type Object26 @Directive21(argument61 : "stringValue195") @Directive44(argument97 : ["stringValue194"]) { + field186: Enum23 +} + +type Object260 @Directive21(argument61 : "stringValue789") @Directive44(argument97 : ["stringValue788"]) { + field1661: String + field1662: String + field1663: String + field1664: String + field1665: Boolean + field1666: Boolean + field1667: [String] + field1668: String + field1669: [Object261] +} + +type Object2600 @Directive21(argument61 : "stringValue12752") @Directive44(argument97 : ["stringValue12751"]) { + field13136: String + field13137: String + field13138: String + field13139: String + field13140: String + field13141: String + field13142: String + field13143: String + field13144: String + field13145: Enum530 +} + +type Object2601 @Directive21(argument61 : "stringValue12754") @Directive44(argument97 : ["stringValue12753"]) { + field13146: String + field13147: String + field13148: String + field13149: String +} + +type Object2602 implements Interface116 @Directive21(argument61 : "stringValue12756") @Directive44(argument97 : ["stringValue12755"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13120: [Object2562!]! + field13150: Enum532! +} + +type Object2603 @Directive21(argument61 : "stringValue12759") @Directive44(argument97 : ["stringValue12758"]) { + field13151: [String] + field13152: String + field13153: Float + field13154: String + field13155: String + field13156: Int + field13157: Int + field13158: String + field13159: Object2555 + field13160: String + field13161: [String] + field13162: String + field13163: String + field13164: Scalar2 + field13165: Boolean + field13166: Boolean + field13167: Boolean + field13168: Boolean + field13169: Boolean + field13170: Boolean + field13171: Object2598 + field13172: Float + field13173: Float + field13174: String + field13175: String + field13176: Object2604 + field13181: String + field13182: String + field13183: Int + field13184: Int + field13185: String + field13186: [String] + field13187: Object2568 + field13188: String + field13189: String + field13190: Scalar2 + field13191: Int + field13192: String + field13193: String + field13194: String + field13195: String + field13196: Boolean + field13197: String + field13198: Float + field13199: Int + field13200: Object2571 + field13201: Object2598 + field13202: String + field13203: String + field13204: String + field13205: String + field13206: [Object2605] + field13213: String + field13214: String + field13215: String + field13216: String + field13217: [Int] + field13218: [String] + field13219: [Object2573] + field13220: [String] + field13221: String + field13222: [String] + field13223: [Object2606] + field13237: Float + field13238: Object2607 + field13263: Enum534 + field13264: [Object2585] + field13265: String + field13266: Boolean + field13267: String + field13268: Int + field13269: Int + field13270: Object2611 + field13272: [Object2612] + field13283: Object2537 + field13284: Object2563 + field13285: Enum535 + field13286: [Object2600] + field13287: Object2608 + field13288: Enum536 + field13289: String + field13290: String + field13291: [Object2577] + field13292: [Scalar2] + field13293: String + field13294: [Object343] + field13295: [Object343] + field13296: Enum537 + field13297: [Enum538] + field13298: Object2538 + field13299: [Object2564] + field13300: Object2583 + field13301: [Object2604] + field13302: Boolean + field13303: String + field13304: Int + field13305: String + field13306: Scalar2 + field13307: Boolean + field13308: Float + field13309: [String] + field13310: String + field13311: String + field13312: String + field13313: Object2613 + field13318: Object2614 + field13322: Object2600 + field13323: Enum539 + field13324: Scalar2 + field13325: String +} + +type Object2604 @Directive21(argument61 : "stringValue12761") @Directive44(argument97 : ["stringValue12760"]) { + field13177: String + field13178: String + field13179: String + field13180: String +} + +type Object2605 @Directive21(argument61 : "stringValue12763") @Directive44(argument97 : ["stringValue12762"]) { + field13207: String + field13208: String + field13209: Boolean + field13210: String + field13211: String + field13212: String +} + +type Object2606 @Directive21(argument61 : "stringValue12765") @Directive44(argument97 : ["stringValue12764"]) { + field13224: String + field13225: String + field13226: Object2516 + field13227: String + field13228: String + field13229: String + field13230: String + field13231: String + field13232: [Object2533] @deprecated + field13233: String + field13234: String + field13235: String + field13236: Enum533 +} + +type Object2607 @Directive21(argument61 : "stringValue12768") @Directive44(argument97 : ["stringValue12767"]) { + field13239: [Object2608] + field13262: String +} + +type Object2608 @Directive21(argument61 : "stringValue12770") @Directive44(argument97 : ["stringValue12769"]) { + field13240: String + field13241: Float + field13242: String + field13243: Scalar2 + field13244: [Object2609] + field13253: String + field13254: Scalar2 + field13255: [Object2610] + field13258: String + field13259: Float + field13260: Float + field13261: String +} + +type Object2609 @Directive21(argument61 : "stringValue12772") @Directive44(argument97 : ["stringValue12771"]) { + field13245: String + field13246: Scalar2 + field13247: String + field13248: String + field13249: String + field13250: String + field13251: String + field13252: String +} + +type Object261 @Directive21(argument61 : "stringValue791") @Directive44(argument97 : ["stringValue790"]) { + field1670: String + field1671: Enum102 + field1672: String + field1673: String + field1674: String + field1675: String + field1676: String +} + +type Object2610 @Directive21(argument61 : "stringValue12774") @Directive44(argument97 : ["stringValue12773"]) { + field13256: Scalar2 + field13257: String +} + +type Object2611 @Directive21(argument61 : "stringValue12777") @Directive44(argument97 : ["stringValue12776"]) { + field13271: String +} + +type Object2612 @Directive21(argument61 : "stringValue12779") @Directive44(argument97 : ["stringValue12778"]) { + field13273: Scalar2 + field13274: String + field13275: String + field13276: String + field13277: String + field13278: String + field13279: String + field13280: String + field13281: String + field13282: Object2598 +} + +type Object2613 @Directive21(argument61 : "stringValue12785") @Directive44(argument97 : ["stringValue12784"]) { + field13314: Boolean + field13315: Boolean + field13316: String + field13317: String +} + +type Object2614 @Directive21(argument61 : "stringValue12787") @Directive44(argument97 : ["stringValue12786"]) { + field13319: String + field13320: String + field13321: String +} + +type Object2615 @Directive21(argument61 : "stringValue12790") @Directive44(argument97 : ["stringValue12789"]) { + field13326: Object2603 + field13327: Object2616 + field13358: Object2619 + field13363: Boolean + field13364: Object2620 + field13373: Object2621 + field13414: Object2526 +} + +type Object2616 @Directive21(argument61 : "stringValue12792") @Directive44(argument97 : ["stringValue12791"]) { + field13328: Boolean + field13329: Float + field13330: Object2617 + field13336: String + field13337: Object2542 + field13338: String + field13339: Object2542 + field13340: Float + field13341: Boolean + field13342: Object2542 + field13343: [Object2514] + field13344: Object2542 + field13345: String + field13346: String + field13347: Object2542 + field13348: String + field13349: String + field13350: [Object2532] + field13351: [Enum540] + field13352: Object16 + field13353: Object2618 + field13357: Boolean +} + +type Object2617 @Directive21(argument61 : "stringValue12794") @Directive44(argument97 : ["stringValue12793"]) { + field13331: String + field13332: [Object2617] + field13333: Object2542 + field13334: Int + field13335: String +} + +type Object2618 @Directive21(argument61 : "stringValue12797") @Directive44(argument97 : ["stringValue12796"]) { + field13354: Union79 + field13355: Union79 + field13356: Object325 +} + +type Object2619 @Directive21(argument61 : "stringValue12799") @Directive44(argument97 : ["stringValue12798"]) { + field13359: Boolean + field13360: String + field13361: String + field13362: String +} + +type Object262 @Directive21(argument61 : "stringValue795") @Directive44(argument97 : ["stringValue794"]) { + field1681: String + field1682: String + field1683: Object35 + field1684: String +} + +type Object2620 @Directive21(argument61 : "stringValue12801") @Directive44(argument97 : ["stringValue12800"]) { + field13365: Int + field13366: Int + field13367: Int + field13368: String + field13369: String + field13370: Scalar2 + field13371: [String] + field13372: String +} + +type Object2621 @Directive21(argument61 : "stringValue12803") @Directive44(argument97 : ["stringValue12802"]) { + field13374: Boolean + field13375: String + field13376: String + field13377: String + field13378: String + field13379: Object2622 + field13409: Object2623 + field13410: String + field13411: [Object2519] + field13412: Boolean + field13413: Boolean +} + +type Object2622 @Directive21(argument61 : "stringValue12805") @Directive44(argument97 : ["stringValue12804"]) { + field13380: Object2623 + field13389: Object2624 + field13407: Object2623 + field13408: Object2624 +} + +type Object2623 @Directive21(argument61 : "stringValue12807") @Directive44(argument97 : ["stringValue12806"]) { + field13381: String + field13382: Scalar2 + field13383: String + field13384: Boolean + field13385: Boolean + field13386: String + field13387: String + field13388: String +} + +type Object2624 @Directive21(argument61 : "stringValue12809") @Directive44(argument97 : ["stringValue12808"]) { + field13390: String + field13391: String + field13392: String + field13393: String + field13394: String + field13395: String + field13396: String + field13397: String + field13398: String + field13399: Boolean + field13400: String + field13401: String + field13402: String + field13403: String + field13404: String + field13405: String + field13406: Scalar2 +} + +type Object2625 implements Interface116 @Directive21(argument61 : "stringValue12811") @Directive44(argument97 : ["stringValue12810"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2615]! + field12894: Object2528 + field13150: Enum541 + field13415: Boolean +} + +type Object2626 implements Interface16 @Directive21(argument61 : "stringValue12814") @Directive44(argument97 : ["stringValue12813"]) { + field13416: Enum542 + field13417: Object344 + field146: String! + field147: Enum15 + field148: Float + field149: String + field150: Interface17 + field175: Interface15 +} + +type Object2627 @Directive21(argument61 : "stringValue12817") @Directive44(argument97 : ["stringValue12816"]) { + field13418: String! + field13419: [Object2628!] +} + +type Object2628 @Directive21(argument61 : "stringValue12819") @Directive44(argument97 : ["stringValue12818"]) { + field13420: String + field13421: [Object2629!] + field13424: Object2629 +} + +type Object2629 @Directive21(argument61 : "stringValue12821") @Directive44(argument97 : ["stringValue12820"]) { + field13422: String + field13423: String +} + +type Object263 @Directive21(argument61 : "stringValue798") @Directive44(argument97 : ["stringValue797"]) { + field1685: Object264 + field1692: Object264 + field1693: Object264 + field1694: String + field1695: String + field1696: String + field1697: String @deprecated + field1698: String + field1699: String + field1700: String + field1701: Boolean + field1702: String + field1703: Object136 + field1704: Object44 + field1705: Object44 + field1706: String + field1707: Scalar2 + field1708: String + field1709: Object135 @deprecated + field1710: String @deprecated + field1711: Object35 + field1712: String + field1713: [Object195] + field1714: Object47 + field1715: [Object265] +} + +type Object2630 @Directive21(argument61 : "stringValue12823") @Directive44(argument97 : ["stringValue12822"]) { + field13425: Float + field13426: Float + field13427: String + field13428: String + field13429: Int + field13430: Boolean +} + +type Object2631 implements Interface116 @Directive21(argument61 : "stringValue12825") @Directive44(argument97 : ["stringValue12824"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12894: Object2528 + field13121: String + field13431: Object2601 +} + +type Object2632 implements Interface15 @Directive21(argument61 : "stringValue12827") @Directive44(argument97 : ["stringValue12826"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field144: String + field145: Scalar1 +} + +type Object2633 implements Interface15 @Directive21(argument61 : "stringValue12829") @Directive44(argument97 : ["stringValue12828"]) { + field126: Object14 + field13434: String + field144: String + field145: Scalar1 +} + +type Object2634 implements Interface15 @Directive21(argument61 : "stringValue12831") @Directive44(argument97 : ["stringValue12830"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field13435: String + field13436: String + field13437: String + field144: String + field145: Scalar1 +} + +type Object2635 implements Interface15 @Directive21(argument61 : "stringValue12833") @Directive44(argument97 : ["stringValue12832"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field144: String + field145: Scalar1 +} + +type Object2636 implements Interface15 @Directive21(argument61 : "stringValue12835") @Directive44(argument97 : ["stringValue12834"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field144: String + field145: Scalar1 +} + +type Object2637 implements Interface15 @Directive21(argument61 : "stringValue12837") @Directive44(argument97 : ["stringValue12836"]) { + field126: Object14 + field13438: String + field144: String + field145: Scalar1 +} + +type Object2638 implements Interface15 @Directive21(argument61 : "stringValue12839") @Directive44(argument97 : ["stringValue12838"]) { + field126: Object14 + field13439: String + field144: String + field145: Scalar1 +} + +type Object2639 implements Interface15 @Directive21(argument61 : "stringValue12841") @Directive44(argument97 : ["stringValue12840"]) { + field126: Object14 + field13439: String + field144: String + field145: Scalar1 +} + +type Object264 @Directive21(argument61 : "stringValue800") @Directive44(argument97 : ["stringValue799"]) { + field1686: Scalar2 + field1687: String + field1688: String + field1689: String + field1690: String + field1691: Float +} + +type Object2640 implements Interface15 @Directive21(argument61 : "stringValue12843") @Directive44(argument97 : ["stringValue12842"]) { + field126: Object14 + field13435: String + field144: String + field145: Scalar1 +} + +type Object2641 implements Interface15 @Directive21(argument61 : "stringValue12845") @Directive44(argument97 : ["stringValue12844"]) { + field126: Object14 + field13440: String + field13441: Object2630! + field144: String + field145: Scalar1 +} + +type Object2642 implements Interface15 @Directive21(argument61 : "stringValue12847") @Directive44(argument97 : ["stringValue12846"]) { + field126: Object14 + field13436: String! + field144: String + field145: Scalar1 +} + +type Object2643 implements Interface15 @Directive21(argument61 : "stringValue12849") @Directive44(argument97 : ["stringValue12848"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field144: String + field145: Scalar1 +} + +type Object2644 implements Interface15 @Directive21(argument61 : "stringValue12851") @Directive44(argument97 : ["stringValue12850"]) { + field126: Object14 + field13442: Object2645! + field144: String + field145: Scalar1 +} + +type Object2645 @Directive21(argument61 : "stringValue12853") @Directive44(argument97 : ["stringValue12852"]) { + field13443: String + field13444: [Object2588!] + field13445: Object14 + field13446: Object14 + field13447: Object14 + field13448: Object14 + field13449: Object14 +} + +type Object2646 implements Interface15 @Directive21(argument61 : "stringValue12855") @Directive44(argument97 : ["stringValue12854"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field144: String + field145: Scalar1 +} + +type Object2647 implements Interface15 @Directive21(argument61 : "stringValue12857") @Directive44(argument97 : ["stringValue12856"]) { + field126: Object14 + field13440: String! + field13450: String + field144: String + field145: Scalar1 +} + +type Object2648 implements Interface15 @Directive21(argument61 : "stringValue12859") @Directive44(argument97 : ["stringValue12858"]) { + field126: Object14 + field12789: Object2516 + field144: String + field145: Scalar1 +} + +type Object2649 implements Interface15 @Directive21(argument61 : "stringValue12861") @Directive44(argument97 : ["stringValue12860"]) { + field126: Object14 + field13435: String + field13451: String + field13452: String + field13453: Int + field13454: Int + field13455: Int + field144: String + field145: Scalar1 +} + +type Object265 @Directive21(argument61 : "stringValue802") @Directive44(argument97 : ["stringValue801"]) { + field1716: String + field1717: String + field1718: String +} + +type Object2650 implements Interface15 @Directive21(argument61 : "stringValue12863") @Directive44(argument97 : ["stringValue12862"]) { + field126: Object14 + field13456: String + field144: String + field145: Scalar1 +} + +type Object2651 implements Interface15 @Directive21(argument61 : "stringValue12865") @Directive44(argument97 : ["stringValue12864"]) { + field126: Object14 + field13457: String + field144: String + field145: Scalar1 +} + +type Object2652 implements Interface15 @Directive21(argument61 : "stringValue12867") @Directive44(argument97 : ["stringValue12866"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field13435: String! + field13458: String + field13459: String! + field13460: String! + field13461: String! + field13462: Boolean! + field13463: String + field13464: Int! + field144: String + field145: Scalar1 +} + +type Object2653 implements Interface15 @Directive21(argument61 : "stringValue12869") @Directive44(argument97 : ["stringValue12868"]) { + field126: Object14 + field13451: Scalar3 + field13452: Scalar3 + field13465: Scalar3 + field144: String + field145: Scalar1 +} + +type Object2654 implements Interface15 @Directive21(argument61 : "stringValue12871") @Directive44(argument97 : ["stringValue12870"]) { + field126: Object14 + field13459: String! + field13460: String! + field13461: String! + field13466: String! + field144: String + field145: Scalar1 +} + +type Object2655 implements Interface15 @Directive21(argument61 : "stringValue12873") @Directive44(argument97 : ["stringValue12872"]) { + field126: Object14 + field13432: String @deprecated + field13433: String + field13435: String! + field13436: String + field13459: String! + field13460: String! + field13461: String! + field13467: String! + field13468: String + field144: String + field145: Scalar1 +} + +type Object2656 implements Interface15 @Directive21(argument61 : "stringValue12875") @Directive44(argument97 : ["stringValue12874"]) { + field126: Object14 + field13126: String! + field13435: String! + field13436: String! + field13459: String! + field13460: String! + field13461: String! + field13462: Boolean! + field13463: String + field13464: Int! + field13469: String + field13470: Int! + field13471: String! + field13472: String! + field13473: String + field13474: String + field13475: Int + field13476: String! + field13477: Int! + field13478: String! + field13479: Boolean! + field144: String + field145: Scalar1 +} + +type Object2657 implements Interface15 @Directive21(argument61 : "stringValue12877") @Directive44(argument97 : ["stringValue12876"]) { + field126: Object14 + field13435: String + field13461: String! + field13472: String! + field13480: String! + field13481: Boolean! + field13482: Boolean! + field13483: Int + field144: String + field145: Scalar1 +} + +type Object2658 implements Interface15 @Directive21(argument61 : "stringValue12879") @Directive44(argument97 : ["stringValue12878"]) { + field126: Object14 + field13470: Int! + field13484: Boolean! + field13485: String! + field13486: [Object2592] + field144: String + field145: Scalar1 +} + +type Object2659 implements Interface15 @Directive21(argument61 : "stringValue12881") @Directive44(argument97 : ["stringValue12880"]) { + field126: Object14 + field13472: String! + field144: String + field145: Scalar1 +} + +type Object266 @Directive21(argument61 : "stringValue806") @Directive44(argument97 : ["stringValue805"]) { + field1719: Scalar2! + field1720: Float + field1721: Object99 + field1722: Int + field1723: Object127 + field1724: Object267 + field1728: String + field1729: Object54 +} + +type Object2660 implements Interface15 @Directive21(argument61 : "stringValue12883") @Directive44(argument97 : ["stringValue12882"]) { + field126: Object14 + field13472: String! + field144: String + field145: Scalar1 +} + +type Object2661 implements Interface15 @Directive21(argument61 : "stringValue12885") @Directive44(argument97 : ["stringValue12884"]) { + field126: Object14 + field13435: String! + field13436: String! + field13459: String! + field13460: String! + field13461: String! + field13464: Int! + field13470: Int! + field13487: Boolean! + field13488: Boolean! + field13489: Boolean! + field13490: String + field144: String + field145: Scalar1 +} + +type Object2662 implements Interface15 @Directive21(argument61 : "stringValue12887") @Directive44(argument97 : ["stringValue12886"]) { + field126: Object14 + field13435: String + field13436: String! + field13459: String! + field13460: String! + field13461: String! + field13462: Boolean! + field13463: String + field13464: Int! + field13470: Int! + field13472: String! + field13476: String! + field13477: Int! + field13478: String! + field144: String + field145: Scalar1 +} + +type Object2663 implements Interface15 @Directive21(argument61 : "stringValue12889") @Directive44(argument97 : ["stringValue12888"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +type Object2664 implements Interface15 @Directive21(argument61 : "stringValue12891") @Directive44(argument97 : ["stringValue12890"]) { + field126: Object14 + field13126: String! + field13436: String! + field13459: String! + field13460: String! + field13461: String! + field13463: String + field13475: Int + field13479: Boolean! + field13491: String + field144: String + field145: Scalar1 +} + +type Object2665 implements Interface116 @Directive21(argument61 : "stringValue12893") @Directive44(argument97 : ["stringValue12892"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13492: Object2666! +} + +type Object2666 @Directive21(argument61 : "stringValue12895") @Directive44(argument97 : ["stringValue12894"]) { + field13493: Scalar2! + field13494: String! + field13495: Object2547 + field13496: Object2544 + field13497: String + field13498: Object2562 +} + +type Object2667 implements Interface15 @Directive21(argument61 : "stringValue12897") @Directive44(argument97 : ["stringValue12896"]) { + field126: Object14 + field144: String + field145: Scalar1 +} + +type Object2668 @Directive21(argument61 : "stringValue12899") @Directive44(argument97 : ["stringValue12898"]) { + field13499: String + field13500: String + field13501: String + field13502: Scalar2 + field13503: String + field13504: String + field13505: String + field13506: Float + field13507: Scalar2 +} + +type Object2669 implements Interface116 @Directive21(argument61 : "stringValue12901") @Directive44(argument97 : ["stringValue12900"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2668!]! + field12894: Object2528 +} + +type Object267 @Directive21(argument61 : "stringValue808") @Directive44(argument97 : ["stringValue807"]) { + field1725: Float + field1726: Float + field1727: String +} + +type Object2670 implements Interface15 @Directive21(argument61 : "stringValue12903") @Directive44(argument97 : ["stringValue12902"]) { + field126: Object14 + field13508: String! + field144: String + field145: Scalar1 +} + +type Object2671 implements Interface15 @Directive21(argument61 : "stringValue12905") @Directive44(argument97 : ["stringValue12904"]) { + field126: Object14 + field13509: String + field144: String + field145: Scalar1 +} + +type Object2672 implements Interface17 @Directive21(argument61 : "stringValue12907") @Directive44(argument97 : ["stringValue12906"]) { + field151: Enum16 + field152: Enum17 + field153: Object16 + field168: Float + field169: String + field170: String + field171: Object16 + field172: Object19 +} + +type Object2673 implements Interface116 @Directive21(argument61 : "stringValue12909") @Directive44(argument97 : ["stringValue12908"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13510: [Object2546!]! +} + +type Object2674 implements Interface15 @Directive21(argument61 : "stringValue12911") @Directive44(argument97 : ["stringValue12910"]) { + field126: Object14 + field13511: Object2539 + field144: String + field145: Scalar1 +} + +type Object2675 implements Interface16 @Directive21(argument61 : "stringValue12913") @Directive44(argument97 : ["stringValue12912"]) { + field13512: Enum543 + field146: String! + field147: Enum15 + field148: Float + field149: String + field150: Interface17 + field175: Interface15 +} + +type Object2676 implements Interface116 @Directive21(argument61 : "stringValue12916") @Directive44(argument97 : ["stringValue12915"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13513: [Object2562!]! + field13514: Scalar2! +} + +type Object2677 implements Interface116 @Directive21(argument61 : "stringValue12918") @Directive44(argument97 : ["stringValue12917"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field12834: [Object2615!]! +} + +type Object2678 implements Interface15 @Directive21(argument61 : "stringValue12920") @Directive44(argument97 : ["stringValue12919"]) { + field126: Object14 + field13515: String + field144: String + field145: Scalar1 +} + +type Object2679 implements Interface15 @Directive21(argument61 : "stringValue12922") @Directive44(argument97 : ["stringValue12921"]) { + field126: Object14 + field13451: Scalar3 + field13452: Scalar3 + field144: String + field145: Scalar1 +} + +type Object268 @Directive21(argument61 : "stringValue811") @Directive44(argument97 : ["stringValue810"]) { + field1730: String + field1731: String + field1732: String + field1733: String + field1734: String + field1735: String + field1736: String + field1737: Scalar5 + field1738: Object135 + field1739: String! + field1740: String + field1741: String +} + +type Object2680 implements Interface116 @Directive21(argument61 : "stringValue12924") @Directive44(argument97 : ["stringValue12923"]) { + field12825: Enum515! + field12826: Object2522 + field12828: String + field12829: String + field13516: [Object2550!]! +} + +type Object2681 implements Interface16 @Directive21(argument61 : "stringValue12926") @Directive44(argument97 : ["stringValue12925"]) { + field13517: Object344 + field13518: String + field13519: String + field13520: Boolean + field13521: String + field13522: [Object2628!] + field13523: String + field13524: String + field13525: String + field13526: String + field13527: String + field13528: String + field13529: String + field13530: String + field13531: String + field13532: String + field13533: String + field13534: String + field13535: String + field13536: String + field13537: String + field13538: Object2682 + field146: String! + field147: Enum15 + field148: Float + field149: String + field150: Interface17 + field175: Interface15 +} + +type Object2682 @Directive21(argument61 : "stringValue12928") @Directive44(argument97 : ["stringValue12927"]) { + field13539: Object2627 + field13540: Object2590 +} + +type Object2683 implements Interface3 @Directive22(argument62 : "stringValue12929") @Directive31 @Directive44(argument97 : ["stringValue12930", "stringValue12931"]) { + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2684 implements Interface3 @Directive22(argument62 : "stringValue12932") @Directive31 @Directive44(argument97 : ["stringValue12933", "stringValue12934"]) { + field13541: String + field13542: String + field13543: String + field2252: String! + field2253: ID + field2254: Interface3 + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object2685 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue12935") @Directive31 @Directive44(argument97 : ["stringValue12936", "stringValue12937"]) { + field13544: Int + field13545: Int + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8399: String +} + +type Object2686 @Directive22(argument62 : "stringValue12938") @Directive31 @Directive44(argument97 : ["stringValue12939", "stringValue12940"]) { + field13546: String + field13547: [Object2687] + field13551: Int + field13552: String + field13553: Object753 + field13554: String +} + +type Object2687 @Directive22(argument62 : "stringValue12941") @Directive31 @Directive44(argument97 : ["stringValue12942", "stringValue12943"]) { + field13548: Interface6 + field13549: String + field13550: Interface3 +} + +type Object2688 @Directive22(argument62 : "stringValue12944") @Directive31 @Directive44(argument97 : ["stringValue12945", "stringValue12946"]) { + field13555: String + field13556: String + field13557: [Object2686] +} + +type Object2689 implements Interface3 @Directive22(argument62 : "stringValue12947") @Directive31 @Directive44(argument97 : ["stringValue12948", "stringValue12949"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object269 @Directive21(argument61 : "stringValue814") @Directive44(argument97 : ["stringValue813"]) { + field1742: Object170 + field1743: Object270 +} + +type Object2690 implements Interface117 @Directive22(argument62 : "stringValue12953") @Directive31 @Directive44(argument97 : ["stringValue12954", "stringValue12955"]) { + field13558: [Interface85] + field13559: [Object2691] +} + +type Object2691 @Directive22(argument62 : "stringValue12956") @Directive31 @Directive44(argument97 : ["stringValue12957", "stringValue12958"]) { + field13560: String + field13561: String + field13562: String + field13563: [Object2692] + field13569: [String] +} + +type Object2692 @Directive22(argument62 : "stringValue12959") @Directive31 @Directive44(argument97 : ["stringValue12960", "stringValue12961"]) { + field13564: String + field13565: String + field13566: String + field13567: Interface6 + field13568: Interface6 +} + +type Object2693 implements Interface36 @Directive22(argument62 : "stringValue12963") @Directive30(argument79 : "stringValue12962") @Directive44(argument97 : ["stringValue12969"]) @Directive7(argument12 : "stringValue12967", argument13 : "stringValue12966", argument14 : "stringValue12965", argument16 : "stringValue12968", argument17 : "stringValue12964", argument18 : false) { + field13570: Object2694 @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive1 @Directive30(argument80 : true) @Directive40 +} + +type Object2694 @Directive22(argument62 : "stringValue12970") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue12971"]) { + field13571: Scalar2 @Directive30(argument80 : true) @Directive40 + field13572: Float @Directive30(argument80 : true) @Directive40 + field13573: [Scalar2] @Directive30(argument80 : true) @Directive40 + field13574: Scalar2 @Directive30(argument80 : true) @Directive40 + field13575: Scalar2 @Directive30(argument80 : true) @Directive40 + field13576: String @Directive30(argument80 : true) @Directive40 +} + +type Object2695 implements Interface3 @Directive22(argument62 : "stringValue12972") @Directive31 @Directive44(argument97 : ["stringValue12973", "stringValue12974"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2696 implements Interface24 @Directive22(argument62 : "stringValue12975") @Directive31 @Directive44(argument97 : ["stringValue12976", "stringValue12977"]) { + field2244: String + field2245: String + field2246: String + field2247: String +} + +type Object2697 implements Interface3 @Directive22(argument62 : "stringValue12978") @Directive31 @Directive44(argument97 : ["stringValue12979", "stringValue12980"]) { + field13577: Object2698 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2698 @Directive22(argument62 : "stringValue12981") @Directive31 @Directive44(argument97 : ["stringValue12982", "stringValue12983"]) { + field13578: ID + field13579: String + field13580: String + field13581: [String] + field13582: String + field13583: Boolean @deprecated + field13584: String + field13585: Object2699 +} + +type Object2699 @Directive22(argument62 : "stringValue12984") @Directive31 @Directive44(argument97 : ["stringValue12985", "stringValue12986"]) { + field13586: Boolean +} + +type Object27 @Directive21(argument61 : "stringValue198") @Directive44(argument97 : ["stringValue197"]) { + field187: Float +} + +type Object270 @Directive21(argument61 : "stringValue816") @Directive44(argument97 : ["stringValue815"]) { + field1744: String + field1745: String + field1746: String + field1747: Enum103 + field1748: Object271 + field1751: Object272 + field1753: String + field1754: Object43 + field1755: Object43 + field1756: Object43 + field1757: Object43 + field1758: Object186 +} + +type Object2700 @Directive22(argument62 : "stringValue12987") @Directive31 @Directive44(argument97 : ["stringValue12988"]) { + field13587: Int + field13588: String + field13589: String +} + +type Object2701 implements Interface117 @Directive22(argument62 : "stringValue12989") @Directive31 @Directive44(argument97 : ["stringValue12990", "stringValue12991"]) { + field13558: [Interface85] + field13590: Object2691 + field13591: Object1503 +} + +type Object2702 implements Interface3 @Directive22(argument62 : "stringValue12992") @Directive31 @Directive44(argument97 : ["stringValue12993", "stringValue12994"]) { + field13592: Boolean + field13593: Enum544 + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object2703 implements Interface118 @Directive22(argument62 : "stringValue13001") @Directive31 @Directive44(argument97 : ["stringValue13002", "stringValue13003"]) { + field13594: String + field13595: Interface3 + field13596: String + field13597: Object478 +} + +type Object2704 implements Interface117 @Directive22(argument62 : "stringValue13004") @Directive31 @Directive44(argument97 : ["stringValue13005", "stringValue13006"]) { + field13558: [Interface85] + field13598: [Object2705] + field13612: Object2706 +} + +type Object2705 @Directive22(argument62 : "stringValue13007") @Directive31 @Directive44(argument97 : ["stringValue13008", "stringValue13009"]) { + field13599: String + field13600: String + field13601: Float + field13602: Float + field13603: Float + field13604: Float + field13605: Enum545 @deprecated + field13606: String + field13607: String + field13608: String + field13609: String + field13610: String + field13611: String +} + +type Object2706 implements Interface24 @Directive22(argument62 : "stringValue13013") @Directive31 @Directive44(argument97 : ["stringValue13014", "stringValue13015"]) { + field2244: String + field2245: String + field2246: String + field2247: String + field2248: [Object2707] +} + +type Object2707 @Directive22(argument62 : "stringValue13016") @Directive31 @Directive44(argument97 : ["stringValue13017", "stringValue13018"]) { + field13613: String + field13614: String +} + +type Object2708 implements Interface36 @Directive22(argument62 : "stringValue13020") @Directive30(argument79 : "stringValue13019") @Directive44(argument97 : ["stringValue13027"]) @Directive7(argument12 : "stringValue13025", argument13 : "stringValue13022", argument14 : "stringValue13023", argument15 : "stringValue13024", argument16 : "stringValue13026", argument17 : "stringValue13021", argument18 : false) { + field13615: [[String]] @Directive30(argument80 : true) @Directive41 + field13616: [Object2700] @Directive30(argument80 : true) @Directive41 + field13617: Object2709 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2709 @Directive22(argument62 : "stringValue13028") @Directive31 @Directive44(argument97 : ["stringValue13029"]) { + field13618: [Object2710] + field13625: [Object2711] + field13632: [Object2712] +} + +type Object271 @Directive21(argument61 : "stringValue819") @Directive44(argument97 : ["stringValue818"]) { + field1749: String + field1750: String +} + +type Object2710 @Directive22(argument62 : "stringValue13030") @Directive31 @Directive44(argument97 : ["stringValue13031"]) { + field13619: String + field13620: String + field13621: String + field13622: [String] + field13623: [String] + field13624: [String] +} + +type Object2711 @Directive22(argument62 : "stringValue13032") @Directive31 @Directive44(argument97 : ["stringValue13033"]) { + field13626: String + field13627: String + field13628: String + field13629: String + field13630: [String] + field13631: [String] +} + +type Object2712 @Directive22(argument62 : "stringValue13034") @Directive31 @Directive44(argument97 : ["stringValue13035"]) { + field13633: String + field13634: String + field13635: String + field13636: String +} + +type Object2713 implements Interface119 @Directive22(argument62 : "stringValue13039") @Directive31 @Directive44(argument97 : ["stringValue13040", "stringValue13041"]) { + field13637: String + field13638: String + field13639: String + field13640: String +} + +type Object2714 implements Interface117 @Directive22(argument62 : "stringValue13042") @Directive31 @Directive44(argument97 : ["stringValue13043", "stringValue13044"]) { + field13558: [Interface85] + field13641: Object2715 +} + +type Object2715 @Directive22(argument62 : "stringValue13045") @Directive31 @Directive44(argument97 : ["stringValue13046", "stringValue13047"]) { + field13642: String + field13643: String +} + +type Object2716 implements Interface117 @Directive22(argument62 : "stringValue13048") @Directive31 @Directive44(argument97 : ["stringValue13049", "stringValue13050"]) { + field13558: [Interface85] + field13644: [Object2686] + field13645: Object2688 +} + +type Object2717 implements Interface117 @Directive22(argument62 : "stringValue13051") @Directive31 @Directive44(argument97 : ["stringValue13052", "stringValue13053"]) { + field13558: [Interface85] + field13646: [Object2718] + field13656: String @deprecated +} + +type Object2718 @Directive22(argument62 : "stringValue13054") @Directive31 @Directive44(argument97 : ["stringValue13055", "stringValue13056"]) { + field13647: String + field13648: String + field13649: Object2719 + field13655: [Interface24] +} + +type Object2719 @Directive22(argument62 : "stringValue13057") @Directive31 @Directive44(argument97 : ["stringValue13058", "stringValue13059"]) { + field13650: String + field13651: String + field13652: String + field13653: String + field13654: String +} + +type Object272 @Directive21(argument61 : "stringValue821") @Directive44(argument97 : ["stringValue820"]) { + field1752: String +} + +type Object2720 @Directive22(argument62 : "stringValue13060") @Directive31 @Directive44(argument97 : ["stringValue13061", "stringValue13062"]) { + field13657: String + field13658: String +} + +type Object2721 @Directive22(argument62 : "stringValue13063") @Directive31 @Directive44(argument97 : ["stringValue13064", "stringValue13065"]) { + field13659: ID + field13660: String + field13661: String + field13662: String + field13663: String + field13664: Scalar4 + field13665: ID + field13666: Boolean + field13667: Int + field13668: String + field13669: String + field13670: String + field13671: ID + field13672: String +} + +type Object2722 implements Interface117 @Directive22(argument62 : "stringValue13066") @Directive31 @Directive44(argument97 : ["stringValue13067", "stringValue13068"]) { + field13558: [Interface85] + field13673: Object2723 + field13681: Object2723 + field13682: Object754 + field13683: String + field13684: String + field13685: Object2724 + field13688: String + field13689: Object452 + field13690: String + field13691: String + field13692: String + field13693: String @deprecated + field13694: String + field13695: Object452 + field13696: [String] + field13697: Object2725 + field13701: String + field13702: Interface6 + field13703: String @deprecated + field13704: String +} + +type Object2723 @Directive22(argument62 : "stringValue13069") @Directive31 @Directive44(argument97 : ["stringValue13070", "stringValue13071"]) { + field13674: String + field13675: String + field13676: String + field13677: String + field13678: String + field13679: String + field13680: String +} + +type Object2724 @Directive22(argument62 : "stringValue13072") @Directive31 @Directive44(argument97 : ["stringValue13073", "stringValue13074"]) { + field13686: Object754 + field13687: Int +} + +type Object2725 @Directive22(argument62 : "stringValue13075") @Directive31 @Directive44(argument97 : ["stringValue13076", "stringValue13077"]) { + field13698: String + field13699: [Object2726] +} + +type Object2726 @Directive22(argument62 : "stringValue13078") @Directive31 @Directive44(argument97 : ["stringValue13079", "stringValue13080"]) { + field13700: [Interface24] +} + +type Object2727 @Directive22(argument62 : "stringValue13081") @Directive31 @Directive44(argument97 : ["stringValue13082"]) { + field13705: Boolean @Directive41 +} + +type Object2728 implements Interface3 @Directive22(argument62 : "stringValue13083") @Directive31 @Directive44(argument97 : ["stringValue13084", "stringValue13085"]) { + field13593: Enum544 + field13706: Enum546 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2729 implements Interface36 @Directive22(argument62 : "stringValue13089") @Directive30(argument79 : "stringValue13090") @Directive44(argument97 : ["stringValue13095"]) @Directive7(argument12 : "stringValue13094", argument13 : "stringValue13093", argument14 : "stringValue13092", argument17 : "stringValue13091", argument18 : false) { + field13707: Object2727 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive1 @Directive30(argument80 : true) @Directive40 +} + +type Object273 @Directive21(argument61 : "stringValue824") @Directive44(argument97 : ["stringValue823"]) { + field1759: Object274 + field1832: Object274 + field1833: Object274 +} + +type Object2730 @Directive22(argument62 : "stringValue13096") @Directive31 @Directive44(argument97 : ["stringValue13097", "stringValue13098"]) { + field13708: Object2696 + field13709: Object2719 + field13710: Int +} + +type Object2731 implements Interface3 @Directive22(argument62 : "stringValue13099") @Directive31 @Directive44(argument97 : ["stringValue13100", "stringValue13101"]) { + field13711: Object2688 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2732 implements Interface3 @Directive22(argument62 : "stringValue13102") @Directive31 @Directive44(argument97 : ["stringValue13103", "stringValue13104"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object2733 implements Interface3 @Directive22(argument62 : "stringValue13105") @Directive31 @Directive44(argument97 : ["stringValue13106", "stringValue13107"]) { + field13712: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2734 implements Interface117 @Directive22(argument62 : "stringValue13108") @Directive31 @Directive44(argument97 : ["stringValue13109", "stringValue13110"]) { + field13558: [Interface85] + field13713: Enum547 + field13714: Object2735 + field13723: Object2737 + field13728: Object2739 + field13735: Object2740 +} + +type Object2735 @Directive22(argument62 : "stringValue13114") @Directive31 @Directive44(argument97 : ["stringValue13115", "stringValue13116"]) { + field13715: String + field13716: [Object452] + field13717: Object2736 +} + +type Object2736 @Directive22(argument62 : "stringValue13117") @Directive31 @Directive44(argument97 : ["stringValue13118", "stringValue13119"]) { + field13718: Enum10 + field13719: String + field13720: String + field13721: String + field13722: String +} + +type Object2737 @Directive22(argument62 : "stringValue13120") @Directive31 @Directive44(argument97 : ["stringValue13121", "stringValue13122"]) { + field13724: String + field13725: Object2738 +} + +type Object2738 implements Interface6 @Directive22(argument62 : "stringValue13123") @Directive31 @Directive44(argument97 : ["stringValue13124", "stringValue13125"]) { + field109: Interface3 + field13726: String + field13727: String + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +type Object2739 @Directive22(argument62 : "stringValue13126") @Directive31 @Directive44(argument97 : ["stringValue13127", "stringValue13128"]) { + field13729: String + field13730: String + field13731: String + field13732: Object452 + field13733: String + field13734: [Object2721] +} + +type Object274 @Directive21(argument61 : "stringValue826") @Directive44(argument97 : ["stringValue825"]) { + field1760: Object275 + field1817: Object138 + field1818: Object138 + field1819: Object138 + field1820: Object287 + field1827: Interface22 + field1829: Object143 + field1830: Object275 + field1831: Object140 +} + +type Object2740 @Directive22(argument62 : "stringValue13129") @Directive31 @Directive44(argument97 : ["stringValue13130", "stringValue13131"]) { + field13736: Object2741 +} + +type Object2741 @Directive22(argument62 : "stringValue13132") @Directive31 @Directive44(argument97 : ["stringValue13133", "stringValue13134"]) { + field13737: String + field13738: String +} + +type Object2742 implements Interface3 @Directive22(argument62 : "stringValue13135") @Directive31 @Directive44(argument97 : ["stringValue13136", "stringValue13137"]) { + field13739: String + field13740: Int + field13741: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2743 implements Interface117 @Directive22(argument62 : "stringValue13138") @Directive31 @Directive44(argument97 : ["stringValue13139", "stringValue13140"]) { + field13558: [Interface85] + field13742: [Object478] + field13743: String + field13744: Object478 + field13745: String + field13746: String @deprecated + field13747: [String!] + field13748: String + field13749: String + field13750: [Object480] + field13751: String + field13752: String + field13753: String @deprecated + field13754: String + field13755: Object2744 +} + +type Object2744 implements Interface67 & Interface68 & Interface69 @Directive22(argument62 : "stringValue13141") @Directive31 @Directive44(argument97 : ["stringValue13142", "stringValue13143"]) { + field4811: String + field4812: String + field4813: Enum10 + field4814: Enum237 + field4815: Enum238 +} + +type Object2745 implements Interface117 @Directive22(argument62 : "stringValue13144") @Directive31 @Directive44(argument97 : ["stringValue13145", "stringValue13146"]) { + field13558: [Interface85] + field13756: String + field13757: Object2705 + field13758: [Object2746] + field13763: Object2719 + field13764: String + field13765: Object2747 +} + +type Object2746 @Directive22(argument62 : "stringValue13147") @Directive31 @Directive44(argument97 : ["stringValue13148", "stringValue13149"]) { + field13759: Float + field13760: Float + field13761: String + field13762: Boolean +} + +type Object2747 @Directive22(argument62 : "stringValue13150") @Directive31 @Directive44(argument97 : ["stringValue13151", "stringValue13152"]) { + field13766: Object2730 +} + +type Object2748 implements Interface117 @Directive22(argument62 : "stringValue13153") @Directive31 @Directive44(argument97 : ["stringValue13154", "stringValue13155"]) { + field13558: [Interface85] + field13767: Object2749 +} + +type Object2749 @Directive22(argument62 : "stringValue13156") @Directive31 @Directive44(argument97 : ["stringValue13157", "stringValue13158"]) { + field13768: [Object2692] + field13769: String +} + +type Object275 @Directive21(argument61 : "stringValue828") @Directive44(argument97 : ["stringValue827"]) { + field1761: Enum104 + field1762: Object276 + field1768: Object277 + field1774: Object147 + field1775: Object278 + field1778: Object279 + field1781: Object77 + field1782: Object280 +} + +type Object2750 implements Interface117 @Directive22(argument62 : "stringValue13159") @Directive31 @Directive44(argument97 : ["stringValue13160", "stringValue13161"]) { + field13558: [Interface85] + field13767: Object2749 +} + +type Object2751 implements Interface117 @Directive22(argument62 : "stringValue13162") @Directive31 @Directive44(argument97 : ["stringValue13163", "stringValue13164"]) { + field13558: [Interface85] + field13767: Object2749 +} + +type Object2752 implements Interface117 @Directive22(argument62 : "stringValue13165") @Directive31 @Directive44(argument97 : ["stringValue13166", "stringValue13167"]) { + field13558: [Interface85] + field13641: Object2715 + field13770: Interface6 + field13771: Interface6 +} + +type Object2753 implements Interface118 @Directive22(argument62 : "stringValue13168") @Directive31 @Directive44(argument97 : ["stringValue13169", "stringValue13170"]) { + field13594: String + field13595: Interface3 + field13596: String + field13772: Interface6 + field13773: Interface6 +} + +type Object2754 implements Interface3 @Directive22(argument62 : "stringValue13171") @Directive31 @Directive44(argument97 : ["stringValue13172", "stringValue13173"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID! +} + +type Object2755 implements Interface3 @Directive22(argument62 : "stringValue13174") @Directive31 @Directive44(argument97 : ["stringValue13175", "stringValue13176"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2756 implements Interface36 @Directive22(argument62 : "stringValue13178") @Directive30(argument79 : "stringValue13177") @Directive44(argument97 : ["stringValue13183"]) @Directive7(argument12 : "stringValue13182", argument13 : "stringValue13181", argument14 : "stringValue13180", argument17 : "stringValue13179", argument18 : false) { + field13774: [Scalar2] @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object2757 implements Interface117 @Directive22(argument62 : "stringValue13184") @Directive31 @Directive44(argument97 : ["stringValue13185", "stringValue13186"]) { + field13558: [Interface85] + field13591: Object1503 + field13764: String +} + +type Object2758 implements Interface119 @Directive22(argument62 : "stringValue13187") @Directive31 @Directive44(argument97 : ["stringValue13188", "stringValue13189"]) { + field13637: String + field13638: String + field13775: Object589 + field13776: Object589 + field13777: String + field13778: Object452 + field13779: Object478 +} + +type Object2759 implements Interface80 @Directive22(argument62 : "stringValue13190") @Directive31 @Directive44(argument97 : ["stringValue13191", "stringValue13192"]) { + field13780: Object474 + field13781: Object505 + field6628: String @Directive1 @deprecated +} + +type Object276 @Directive21(argument61 : "stringValue831") @Directive44(argument97 : ["stringValue830"]) { + field1763: String + field1764: String + field1765: String + field1766: Object148 + field1767: String +} + +type Object2760 implements Interface87 @Directive22(argument62 : "stringValue13193") @Directive31 @Directive44(argument97 : ["stringValue13194", "stringValue13195"]) { + field13782: Object596 + field13783: Object596 + field13784: Interface3 + field7284: String +} + +type Object2761 @Directive42(argument96 : ["stringValue13196", "stringValue13197", "stringValue13198"]) @Directive44(argument97 : ["stringValue13199", "stringValue13200"]) { + field13785: ID + field13786: Float + field13787: Float + field13788: Boolean + field13789: Boolean + field13790: Scalar4 +} + +type Object2762 @Directive22(argument62 : "stringValue13201") @Directive31 @Directive44(argument97 : ["stringValue13202", "stringValue13203"]) { + field13791: String! + field13792: String + field13793: String + field13794: ID +} + +type Object2763 implements Interface36 @Directive22(argument62 : "stringValue13204") @Directive30(argument85 : "stringValue13206", argument86 : "stringValue13205") @Directive44(argument97 : ["stringValue13207", "stringValue13208"]) { + field13795(argument461: String, argument462: Int, argument463: String, argument464: Int): Object2764 @Directive26(argument67 : "stringValue13210", argument68 : "stringValue13211", argument69 : "stringValue13212", argument70 : "stringValue13213", argument71 : "stringValue13209") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2764 implements Interface92 @Directive22(argument62 : "stringValue13214") @Directive44(argument97 : ["stringValue13220", "stringValue13221"]) @Directive8(argument21 : "stringValue13216", argument23 : "stringValue13218", argument24 : "stringValue13215", argument25 : "stringValue13217", argument27 : "stringValue13219", argument28 : true) { + field8384: Object753! + field8385: [Object2252] +} + +type Object2765 implements Interface82 @Directive22(argument62 : "stringValue13222") @Directive31 @Directive44(argument97 : ["stringValue13223", "stringValue13224"]) { + field13796: Object452 + field6641: Int +} + +type Object2766 implements Interface3 @Directive22(argument62 : "stringValue13225") @Directive31 @Directive44(argument97 : ["stringValue13226", "stringValue13227"]) { + field13797: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2767 implements Interface36 @Directive22(argument62 : "stringValue13228") @Directive30(argument79 : "stringValue13229") @Directive44(argument97 : ["stringValue13230", "stringValue13231", "stringValue13232"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object2768 implements Interface80 @Directive22(argument62 : "stringValue13233") @Directive31 @Directive44(argument97 : ["stringValue13234", "stringValue13235", "stringValue13236"]) { + field13798: String! + field13799: String! + field13800: String! + field13801: Scalar4 + field13802: Scalar4 + field13803: Boolean + field13804: String + field13805: String + field13806: String + field13807: String + field13808: String + field13809: String + field6628: String @Directive1 @deprecated +} + +type Object2769 implements Interface3 @Directive22(argument62 : "stringValue13237") @Directive31 @Directive44(argument97 : ["stringValue13238", "stringValue13239"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object277 @Directive21(argument61 : "stringValue833") @Directive44(argument97 : ["stringValue832"]) { + field1769: String + field1770: String + field1771: String + field1772: Object148 + field1773: String +} + +type Object2770 @Directive22(argument62 : "stringValue13240") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue13241", "stringValue13242"]) { + field13810: Enum548 @Directive30(argument80 : true) @Directive41 + field13811: String @Directive30(argument80 : true) @Directive41 +} + +type Object2771 implements Interface5 @Directive22(argument62 : "stringValue13246") @Directive31 @Directive44(argument97 : ["stringValue13247", "stringValue13248"]) { + field13812: String + field4776: Interface3 + field76: String + field77: String + field78: String +} + +type Object2772 @Directive20(argument58 : "stringValue13252", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue13249") @Directive31 @Directive44(argument97 : ["stringValue13250", "stringValue13251"]) { + field13813: Float + field13814: Float + field13815: String + field13816: String + field13817: Int + field13818: Boolean +} + +type Object2773 implements Interface120 @Directive21(argument61 : "stringValue13261") @Directive44(argument97 : ["stringValue13260"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13839: Object2776 + field13856: String + field13857: String + field13858: String + field13859: String + field13860: Int + field13861: Boolean +} + +type Object2774 @Directive21(argument61 : "stringValue13255") @Directive44(argument97 : ["stringValue13254"]) { + field13820: String + field13821: String @deprecated + field13822: String @deprecated + field13823: [Object2775] + field13834: Enum550 @deprecated + field13835: Scalar1 + field13836: String +} + +type Object2775 @Directive21(argument61 : "stringValue13257") @Directive44(argument97 : ["stringValue13256"]) { + field13824: String + field13825: String + field13826: Enum549 + field13827: String + field13828: String + field13829: String + field13830: String + field13831: String + field13832: String + field13833: [String!] +} + +type Object2776 @Directive21(argument61 : "stringValue13263") @Directive44(argument97 : ["stringValue13262"]) { + field13840: [Object2777] + field13847: String + field13848: String + field13849: [String] + field13850: String @deprecated + field13851: String + field13852: Boolean + field13853: [String] + field13854: String + field13855: Enum551 +} + +type Object2777 @Directive21(argument61 : "stringValue13265") @Directive44(argument97 : ["stringValue13264"]) { + field13841: String + field13842: String + field13843: Boolean + field13844: Union84 + field13845: Boolean @deprecated + field13846: Boolean +} + +type Object2778 implements Interface121 @Directive21(argument61 : "stringValue13283") @Directive44(argument97 : ["stringValue13282"]) { + field13862: Enum552 + field13863: Enum553 + field13864: Object2779 + field13879: Float + field13880: String + field13881: String + field13882: Object2779 + field13883: Object2782 + field13886: Int +} + +type Object2779 @Directive21(argument61 : "stringValue13271") @Directive44(argument97 : ["stringValue13270"]) { + field13865: String + field13866: Enum554 + field13867: Enum555 + field13868: Enum556 + field13869: Object2780 +} + +type Object278 @Directive21(argument61 : "stringValue835") @Directive44(argument97 : ["stringValue834"]) { + field1776: String + field1777: Object77 +} + +type Object2780 @Directive21(argument61 : "stringValue13276") @Directive44(argument97 : ["stringValue13275"]) { + field13870: String + field13871: Float + field13872: Float + field13873: Float + field13874: Float + field13875: [Object2781] + field13878: Enum557 +} + +type Object2781 @Directive21(argument61 : "stringValue13278") @Directive44(argument97 : ["stringValue13277"]) { + field13876: String + field13877: Float +} + +type Object2782 @Directive21(argument61 : "stringValue13281") @Directive44(argument97 : ["stringValue13280"]) { + field13884: String + field13885: String +} + +type Object2783 implements Interface120 @Directive21(argument61 : "stringValue13285") @Directive44(argument97 : ["stringValue13284"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13887: String +} + +type Object2784 implements Interface120 @Directive21(argument61 : "stringValue13287") @Directive44(argument97 : ["stringValue13286"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +type Object2785 @Directive21(argument61 : "stringValue13289") @Directive44(argument97 : ["stringValue13288"]) { + field13888: Scalar2 + field13889: String + field13890: Scalar2 + field13891: String + field13892: Scalar2 + field13893: Scalar2 + field13894: String +} + +type Object2786 implements Interface120 @Directive21(argument61 : "stringValue13291") @Directive44(argument97 : ["stringValue13290"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +type Object2787 implements Interface120 @Directive21(argument61 : "stringValue13293") @Directive44(argument97 : ["stringValue13292"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +type Object2788 implements Interface120 @Directive21(argument61 : "stringValue13295") @Directive44(argument97 : ["stringValue13294"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +type Object2789 @Directive21(argument61 : "stringValue13297") @Directive44(argument97 : ["stringValue13296"]) { + field13895: String + field13896: String + field13897: String + field13898: Float + field13899: Scalar2 + field13900: String +} + +type Object279 @Directive21(argument61 : "stringValue837") @Directive44(argument97 : ["stringValue836"]) { + field1779: [Object276] + field1780: Object148 +} + +type Object2790 implements Interface120 @Directive21(argument61 : "stringValue13299") @Directive44(argument97 : ["stringValue13298"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13901: String! + field13902: String + field13903: Interface120 +} + +type Object2791 @Directive21(argument61 : "stringValue13301") @Directive44(argument97 : ["stringValue13300"]) { + field13904: String! +} + +type Object2792 implements Interface120 @Directive21(argument61 : "stringValue13303") @Directive44(argument97 : ["stringValue13302"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13905: Boolean + field13906: [String] + field13907: Boolean +} + +type Object2793 @Directive21(argument61 : "stringValue13305") @Directive44(argument97 : ["stringValue13304"]) { + field13908: String! + field13909: Boolean! + field13910: String + field13911: String +} + +type Object2794 implements Interface120 @Directive21(argument61 : "stringValue13307") @Directive44(argument97 : ["stringValue13306"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13912: String! +} + +type Object2795 implements Interface122 @Directive21(argument61 : "stringValue13311") @Directive44(argument97 : ["stringValue13310"]) { + field13913: String! + field13914: Enum558 + field13915: Float + field13916: String + field13917: Interface121 + field13918: Interface120 + field13919: Enum559 + field13920: Int +} + +type Object2796 implements Interface122 @Directive21(argument61 : "stringValue13314") @Directive44(argument97 : ["stringValue13313"]) { + field13913: String! + field13914: Enum558 + field13915: Float + field13916: String + field13917: Interface121 + field13918: Interface120 + field13921: Enum560 + field13922: Object2797 +} + +type Object2797 implements Interface122 @Directive21(argument61 : "stringValue13317") @Directive44(argument97 : ["stringValue13316"]) { + field13913: String! + field13914: Enum558 + field13915: Float + field13916: String + field13917: Interface121 + field13918: Interface120 + field13923: String + field13924: String + field13925: Float @deprecated + field13926: Object2798 + field13930: Object2774 +} + +type Object2798 @Directive21(argument61 : "stringValue13319") @Directive44(argument97 : ["stringValue13318"]) { + field13927: Enum561 + field13928: String + field13929: Boolean +} + +type Object2799 @Directive21(argument61 : "stringValue13322") @Directive44(argument97 : ["stringValue13321"]) { + field13931: String! + field13932: [Object2800!] +} + +type Object28 @Directive21(argument61 : "stringValue200") @Directive44(argument97 : ["stringValue199"]) { + field188: Enum24 +} + +type Object280 @Directive21(argument61 : "stringValue839") @Directive44(argument97 : ["stringValue838"]) { + field1783: Object281 + field1816: Object148 +} + +type Object2800 @Directive21(argument61 : "stringValue13324") @Directive44(argument97 : ["stringValue13323"]) { + field13933: String + field13934: [Object2801!] + field13937: Object2801 +} + +type Object2801 @Directive21(argument61 : "stringValue13326") @Directive44(argument97 : ["stringValue13325"]) { + field13935: String + field13936: String +} + +type Object2802 @Directive21(argument61 : "stringValue13328") @Directive44(argument97 : ["stringValue13327"]) { + field13938: Float + field13939: Float + field13940: String + field13941: String + field13942: Int + field13943: Boolean +} + +type Object2803 implements Interface120 @Directive21(argument61 : "stringValue13330") @Directive44(argument97 : ["stringValue13329"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String +} + +type Object2804 implements Interface120 @Directive21(argument61 : "stringValue13332") @Directive44(argument97 : ["stringValue13331"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13946: String +} + +type Object2805 implements Interface120 @Directive21(argument61 : "stringValue13334") @Directive44(argument97 : ["stringValue13333"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String + field13947: String + field13948: String + field13949: String +} + +type Object2806 implements Interface120 @Directive21(argument61 : "stringValue13336") @Directive44(argument97 : ["stringValue13335"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String +} + +type Object2807 implements Interface120 @Directive21(argument61 : "stringValue13338") @Directive44(argument97 : ["stringValue13337"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String +} + +type Object2808 implements Interface120 @Directive21(argument61 : "stringValue13340") @Directive44(argument97 : ["stringValue13339"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13950: String +} + +type Object2809 implements Interface120 @Directive21(argument61 : "stringValue13342") @Directive44(argument97 : ["stringValue13341"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13951: String +} + +type Object281 implements Interface19 @Directive21(argument61 : "stringValue841") @Directive44(argument97 : ["stringValue840"]) { + field1784: Object76 + field1785: String + field1786: String + field1787: Boolean + field1788: String + field1789: [Object282!] + field1795: String + field1796: String + field1797: String + field1798: String + field1799: String + field1800: String + field1801: String + field1802: String + field1803: String + field1804: String + field1805: String + field1806: String + field1807: String + field1808: String + field1809: String + field1810: Object284 + field509: String! + field510: Enum37 + field511: Float + field512: String + field513: Interface20 + field538: Interface21 +} + +type Object2810 implements Interface120 @Directive21(argument61 : "stringValue13344") @Directive44(argument97 : ["stringValue13343"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13951: String +} + +type Object2811 implements Interface120 @Directive21(argument61 : "stringValue13346") @Directive44(argument97 : ["stringValue13345"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13947: String +} + +type Object2812 implements Interface120 @Directive21(argument61 : "stringValue13348") @Directive44(argument97 : ["stringValue13347"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13952: String + field13953: Object2802! +} + +type Object2813 implements Interface120 @Directive21(argument61 : "stringValue13350") @Directive44(argument97 : ["stringValue13349"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13948: String! +} + +type Object2814 implements Interface120 @Directive21(argument61 : "stringValue13352") @Directive44(argument97 : ["stringValue13351"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String +} + +type Object2815 implements Interface120 @Directive21(argument61 : "stringValue13354") @Directive44(argument97 : ["stringValue13353"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13954: Object2816! +} + +type Object2816 @Directive21(argument61 : "stringValue13356") @Directive44(argument97 : ["stringValue13355"]) { + field13955: String + field13956: [Object2789!] + field13957: Object2774 + field13958: Object2774 + field13959: Object2774 + field13960: Object2774 + field13961: Object2774 +} + +type Object2817 implements Interface120 @Directive21(argument61 : "stringValue13358") @Directive44(argument97 : ["stringValue13357"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String +} + +type Object2818 implements Interface120 @Directive21(argument61 : "stringValue13360") @Directive44(argument97 : ["stringValue13359"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13952: String! + field13962: String +} + +type Object2819 implements Interface120 @Directive21(argument61 : "stringValue13362") @Directive44(argument97 : ["stringValue13361"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13839: Object2776 +} + +type Object282 @Directive21(argument61 : "stringValue843") @Directive44(argument97 : ["stringValue842"]) { + field1790: String + field1791: [Object283!] + field1794: Object283 +} + +type Object2820 implements Interface120 @Directive21(argument61 : "stringValue13364") @Directive44(argument97 : ["stringValue13363"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13947: String + field13963: String + field13964: String + field13965: Int + field13966: Int + field13967: Int +} + +type Object2821 implements Interface120 @Directive21(argument61 : "stringValue13366") @Directive44(argument97 : ["stringValue13365"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13968: String +} + +type Object2822 implements Interface120 @Directive21(argument61 : "stringValue13368") @Directive44(argument97 : ["stringValue13367"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13969: String +} + +type Object2823 implements Interface120 @Directive21(argument61 : "stringValue13370") @Directive44(argument97 : ["stringValue13369"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String + field13947: String! + field13970: String + field13971: String! + field13972: String! + field13973: String! + field13974: Boolean! + field13975: String + field13976: Int! +} + +type Object2824 implements Interface120 @Directive21(argument61 : "stringValue13372") @Directive44(argument97 : ["stringValue13371"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13963: Scalar3 + field13964: Scalar3 + field13977: Scalar3 +} + +type Object2825 implements Interface120 @Directive21(argument61 : "stringValue13374") @Directive44(argument97 : ["stringValue13373"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13971: String! + field13972: String! + field13973: String! + field13978: String! +} + +type Object2826 implements Interface120 @Directive21(argument61 : "stringValue13376") @Directive44(argument97 : ["stringValue13375"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13944: String @deprecated + field13945: String + field13947: String! + field13948: String + field13971: String! + field13972: String! + field13973: String! + field13979: String! + field13980: String +} + +type Object2827 implements Interface120 @Directive21(argument61 : "stringValue13378") @Directive44(argument97 : ["stringValue13377"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13912: String! + field13947: String! + field13948: String! + field13971: String! + field13972: String! + field13973: String! + field13974: Boolean! + field13975: String + field13976: Int! + field13981: String + field13982: Int! + field13983: String! + field13984: String! + field13985: String + field13986: String + field13987: Int + field13988: String! + field13989: Int! + field13990: String! + field13991: Boolean! +} + +type Object2828 implements Interface120 @Directive21(argument61 : "stringValue13380") @Directive44(argument97 : ["stringValue13379"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13947: String + field13973: String! + field13984: String! + field13992: String! + field13993: Boolean! + field13994: Boolean! + field13995: Int +} + +type Object2829 implements Interface120 @Directive21(argument61 : "stringValue13382") @Directive44(argument97 : ["stringValue13381"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13982: Int! + field13996: Boolean! + field13997: String! + field13998: [Object2793] +} + +type Object283 @Directive21(argument61 : "stringValue845") @Directive44(argument97 : ["stringValue844"]) { + field1792: String + field1793: String +} + +type Object2830 implements Interface120 @Directive21(argument61 : "stringValue13384") @Directive44(argument97 : ["stringValue13383"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13984: String! +} + +type Object2831 implements Interface120 @Directive21(argument61 : "stringValue13386") @Directive44(argument97 : ["stringValue13385"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13984: String! +} + +type Object2832 implements Interface120 @Directive21(argument61 : "stringValue13388") @Directive44(argument97 : ["stringValue13387"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13947: String! + field13948: String! + field13971: String! + field13972: String! + field13973: String! + field13976: Int! + field13982: Int! + field13999: Boolean! + field14000: Boolean! + field14001: Boolean! + field14002: String +} + +type Object2833 implements Interface120 @Directive21(argument61 : "stringValue13390") @Directive44(argument97 : ["stringValue13389"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13947: String + field13948: String! + field13971: String! + field13972: String! + field13973: String! + field13974: Boolean! + field13975: String + field13976: Int! + field13982: Int! + field13984: String! + field13988: String! + field13989: Int! + field13990: String! +} + +type Object2834 implements Interface120 @Directive21(argument61 : "stringValue13392") @Directive44(argument97 : ["stringValue13391"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +type Object2835 implements Interface120 @Directive21(argument61 : "stringValue13394") @Directive44(argument97 : ["stringValue13393"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13912: String! + field13948: String! + field13971: String! + field13972: String! + field13973: String! + field13975: String + field13987: Int + field13991: Boolean! + field14003: String +} + +type Object2836 implements Interface120 @Directive21(argument61 : "stringValue13396") @Directive44(argument97 : ["stringValue13395"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 +} + +type Object2837 implements Interface120 @Directive21(argument61 : "stringValue13398") @Directive44(argument97 : ["stringValue13397"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field14004: String! +} + +type Object2838 implements Interface120 @Directive21(argument61 : "stringValue13400") @Directive44(argument97 : ["stringValue13399"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field14005: String +} + +type Object2839 implements Interface121 @Directive21(argument61 : "stringValue13402") @Directive44(argument97 : ["stringValue13401"]) { + field13862: Enum552 + field13863: Enum553 + field13864: Object2779 + field13879: Float + field13880: String + field13881: String + field13882: Object2779 + field13883: Object2782 +} + +type Object284 @Directive21(argument61 : "stringValue847") @Directive44(argument97 : ["stringValue846"]) { + field1811: Object285 + field1814: Object286 +} + +type Object2840 implements Interface120 @Directive21(argument61 : "stringValue13404") @Directive44(argument97 : ["stringValue13403"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field14006: Object2785 +} + +type Object2841 implements Interface122 @Directive21(argument61 : "stringValue13406") @Directive44(argument97 : ["stringValue13405"]) { + field13913: String! + field13914: Enum558 + field13915: Float + field13916: String + field13917: Interface121 + field13918: Interface120 + field14007: Enum562 +} + +type Object2842 implements Interface120 @Directive21(argument61 : "stringValue13409") @Directive44(argument97 : ["stringValue13408"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field14008: String +} + +type Object2843 implements Interface120 @Directive21(argument61 : "stringValue13411") @Directive44(argument97 : ["stringValue13410"]) { + field13819: Object2774 + field13837: String + field13838: Scalar1 + field13963: Scalar3 + field13964: Scalar3 +} + +type Object2844 implements Interface122 @Directive21(argument61 : "stringValue13413") @Directive44(argument97 : ["stringValue13412"]) { + field13913: String! + field13914: Enum558 + field13915: Float + field13916: String + field13917: Interface121 + field13918: Interface120 + field14009: Object2797 + field14010: String + field14011: String + field14012: Boolean + field14013: String + field14014: [Object2800!] + field14015: String + field14016: String + field14017: String + field14018: String + field14019: String + field14020: String + field14021: String + field14022: String + field14023: String + field14024: String + field14025: String + field14026: String + field14027: String + field14028: String + field14029: String + field14030: Object2845 +} + +type Object2845 @Directive21(argument61 : "stringValue13415") @Directive44(argument97 : ["stringValue13414"]) { + field14031: Object2799 + field14032: Object2791 +} + +type Object2846 implements Interface123 @Directive21(argument61 : "stringValue13424") @Directive44(argument97 : ["stringValue13423"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14053: Object2849 + field14070: String + field14071: String + field14072: String + field14073: String + field14074: Int + field14075: Boolean +} + +type Object2847 @Directive21(argument61 : "stringValue13418") @Directive44(argument97 : ["stringValue13417"]) { + field14034: String + field14035: String @deprecated + field14036: String @deprecated + field14037: [Object2848] + field14048: Enum564 @deprecated + field14049: Scalar1 + field14050: String +} + +type Object2848 @Directive21(argument61 : "stringValue13420") @Directive44(argument97 : ["stringValue13419"]) { + field14038: String + field14039: String + field14040: Enum563 + field14041: String + field14042: String + field14043: String + field14044: String + field14045: String + field14046: String + field14047: [String!] +} + +type Object2849 @Directive21(argument61 : "stringValue13426") @Directive44(argument97 : ["stringValue13425"]) { + field14054: [Object2850] + field14061: String + field14062: String + field14063: [String] + field14064: String @deprecated + field14065: String + field14066: Boolean + field14067: [String] + field14068: String + field14069: Enum565 +} + +type Object285 @Directive21(argument61 : "stringValue849") @Directive44(argument97 : ["stringValue848"]) { + field1812: String! + field1813: [Object282!] +} + +type Object2850 @Directive21(argument61 : "stringValue13428") @Directive44(argument97 : ["stringValue13427"]) { + field14055: String + field14056: String + field14057: Boolean + field14058: Union85 + field14059: Boolean @deprecated + field14060: Boolean +} + +type Object2851 implements Interface124 @Directive21(argument61 : "stringValue13446") @Directive44(argument97 : ["stringValue13445"]) { + field14076: Enum566 + field14077: Enum567 + field14078: Object2852 + field14093: Float + field14094: String + field14095: String + field14096: Object2852 + field14097: Object2855 + field14100: Int +} + +type Object2852 @Directive21(argument61 : "stringValue13434") @Directive44(argument97 : ["stringValue13433"]) { + field14079: String + field14080: Enum568 + field14081: Enum569 + field14082: Enum570 + field14083: Object2853 +} + +type Object2853 @Directive21(argument61 : "stringValue13439") @Directive44(argument97 : ["stringValue13438"]) { + field14084: String + field14085: Float + field14086: Float + field14087: Float + field14088: Float + field14089: [Object2854] + field14092: Enum571 +} + +type Object2854 @Directive21(argument61 : "stringValue13441") @Directive44(argument97 : ["stringValue13440"]) { + field14090: String + field14091: Float +} + +type Object2855 @Directive21(argument61 : "stringValue13444") @Directive44(argument97 : ["stringValue13443"]) { + field14098: String + field14099: String +} + +type Object2856 implements Interface123 @Directive21(argument61 : "stringValue13448") @Directive44(argument97 : ["stringValue13447"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14101: String +} + +type Object2857 implements Interface123 @Directive21(argument61 : "stringValue13450") @Directive44(argument97 : ["stringValue13449"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +type Object2858 @Directive21(argument61 : "stringValue13452") @Directive44(argument97 : ["stringValue13451"]) { + field14102: Object2859 + field14140: Object2859 + field14141: Object2859 + field14142: Object2864 +} + +type Object2859 @Directive21(argument61 : "stringValue13454") @Directive44(argument97 : ["stringValue13453"]) { + field14103: [Object2860!] + field14130: Object2863 + field14139: Enum576 +} + +type Object286 @Directive21(argument61 : "stringValue851") @Directive44(argument97 : ["stringValue850"]) { + field1815: String! +} + +type Object2860 @Directive21(argument61 : "stringValue13456") @Directive44(argument97 : ["stringValue13455"]) { + field14104: String! + field14105: Object2861 + field14111: Object2862 + field14123: Int + field14124: Object2852 + field14125: Enum575 + field14126: Int + field14127: Int + field14128: Int + field14129: Int +} + +type Object2861 @Directive21(argument61 : "stringValue13458") @Directive44(argument97 : ["stringValue13457"]) { + field14106: Enum572 + field14107: Enum573 + field14108: Int @deprecated + field14109: Int @deprecated + field14110: Object2852 +} + +type Object2862 @Directive21(argument61 : "stringValue13462") @Directive44(argument97 : ["stringValue13461"]) { + field14112: Enum572 + field14113: Enum568 + field14114: Int + field14115: Boolean + field14116: Boolean + field14117: Enum574 + field14118: Enum568 + field14119: Boolean + field14120: Boolean + field14121: Boolean + field14122: Int +} + +type Object2863 @Directive21(argument61 : "stringValue13466") @Directive44(argument97 : ["stringValue13465"]) { + field14131: Int + field14132: Int + field14133: Object2862 + field14134: Int + field14135: Object2852 + field14136: Int + field14137: Int + field14138: Int +} + +type Object2864 @Directive21(argument61 : "stringValue13469") @Directive44(argument97 : ["stringValue13468"]) { + field14143: Int + field14144: Int + field14145: Int + field14146: Object2852 + field14147: Interface125 +} + +type Object2865 @Directive21(argument61 : "stringValue13473") @Directive44(argument97 : ["stringValue13472"]) { + field14154: Scalar2 + field14155: String + field14156: Scalar2 + field14157: String + field14158: Scalar2 + field14159: Scalar2 + field14160: String +} + +type Object2866 @Directive21(argument61 : "stringValue13475") @Directive44(argument97 : ["stringValue13474"]) { + field14161: Enum578 + field14162: Float +} + +type Object2867 @Directive21(argument61 : "stringValue13478") @Directive44(argument97 : ["stringValue13477"]) { + field14163: Enum579 + field14164: Object2866 + field14165: Object2866 + field14166: Object2866 +} + +type Object2868 implements Interface123 @Directive21(argument61 : "stringValue13481") @Directive44(argument97 : ["stringValue13480"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +type Object2869 implements Interface123 @Directive21(argument61 : "stringValue13483") @Directive44(argument97 : ["stringValue13482"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +type Object287 @Directive21(argument61 : "stringValue853") @Directive44(argument97 : ["stringValue852"]) { + field1821: Enum105 + field1822: Object139 + field1823: Object288 + field1826: Object143 +} + +type Object2870 implements Interface123 @Directive21(argument61 : "stringValue13485") @Directive44(argument97 : ["stringValue13484"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +type Object2871 @Directive21(argument61 : "stringValue13487") @Directive44(argument97 : ["stringValue13486"]) { + field14167: String + field14168: String + field14169: String + field14170: Float + field14171: Scalar2 + field14172: String +} + +type Object2872 implements Interface123 @Directive21(argument61 : "stringValue13489") @Directive44(argument97 : ["stringValue13488"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14173: String! + field14174: String + field14175: Interface123 +} + +type Object2873 @Directive21(argument61 : "stringValue13491") @Directive44(argument97 : ["stringValue13490"]) { + field14176: String! +} + +type Object2874 implements Interface123 @Directive21(argument61 : "stringValue13493") @Directive44(argument97 : ["stringValue13492"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14177: Boolean + field14178: [String] + field14179: Boolean +} + +type Object2875 @Directive21(argument61 : "stringValue13495") @Directive44(argument97 : ["stringValue13494"]) { + field14180: String! + field14181: Boolean! + field14182: String + field14183: String +} + +type Object2876 implements Interface123 @Directive21(argument61 : "stringValue13497") @Directive44(argument97 : ["stringValue13496"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14184: String! +} + +type Object2877 implements Interface125 @Directive21(argument61 : "stringValue13499") @Directive44(argument97 : ["stringValue13498"]) { + field14148: String! + field14149: Enum577 + field14150: Float + field14151: String + field14152: Interface124 + field14153: Interface123 + field14185: Enum580 + field14186: Int +} + +type Object2878 implements Interface125 @Directive21(argument61 : "stringValue13502") @Directive44(argument97 : ["stringValue13501"]) { + field14148: String! + field14149: Enum577 + field14150: Float + field14151: String + field14152: Interface124 + field14153: Interface123 + field14187: Enum581 + field14188: Object2879 +} + +type Object2879 implements Interface125 @Directive21(argument61 : "stringValue13505") @Directive44(argument97 : ["stringValue13504"]) { + field14148: String! + field14149: Enum577 + field14150: Float + field14151: String + field14152: Interface124 + field14153: Interface123 + field14189: String + field14190: String + field14191: Float @deprecated + field14192: Object2880 + field14196: Object2847 +} + +type Object288 @Directive21(argument61 : "stringValue856") @Directive44(argument97 : ["stringValue855"]) { + field1824: Object140 + field1825: Object140 +} + +type Object2880 @Directive21(argument61 : "stringValue13507") @Directive44(argument97 : ["stringValue13506"]) { + field14193: Enum582 + field14194: String + field14195: Boolean +} + +type Object2881 @Directive21(argument61 : "stringValue13510") @Directive44(argument97 : ["stringValue13509"]) { + field14197: String! + field14198: [Object2882!] +} + +type Object2882 @Directive21(argument61 : "stringValue13512") @Directive44(argument97 : ["stringValue13511"]) { + field14199: String + field14200: [Object2883!] + field14203: Object2883 +} + +type Object2883 @Directive21(argument61 : "stringValue13514") @Directive44(argument97 : ["stringValue13513"]) { + field14201: String + field14202: String +} + +type Object2884 @Directive21(argument61 : "stringValue13516") @Directive44(argument97 : ["stringValue13515"]) { + field14204: Float + field14205: Float + field14206: String + field14207: String + field14208: Int + field14209: Boolean +} + +type Object2885 implements Interface126 @Directive21(argument61 : "stringValue13519") @Directive44(argument97 : ["stringValue13518"]) { + field14210: Boolean @deprecated + field14211: [Object2858] +} + +type Object2886 implements Interface123 @Directive21(argument61 : "stringValue13521") @Directive44(argument97 : ["stringValue13520"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String +} + +type Object2887 implements Interface123 @Directive21(argument61 : "stringValue13523") @Directive44(argument97 : ["stringValue13522"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14214: String +} + +type Object2888 implements Interface123 @Directive21(argument61 : "stringValue13525") @Directive44(argument97 : ["stringValue13524"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String + field14215: String + field14216: String + field14217: String +} + +type Object2889 implements Interface123 @Directive21(argument61 : "stringValue13527") @Directive44(argument97 : ["stringValue13526"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String +} + +type Object289 @Directive21(argument61 : "stringValue861") @Directive44(argument97 : ["stringValue860"]) { + field1834: String + field1835: String + field1836: String + field1837: String + field1838: Object35 + field1839: String + field1840: String + field1841: String + field1842: String + field1843: String + field1844: String + field1845: Object290 + field1856: [String] + field1857: [String] + field1858: String + field1859: Enum36 +} + +type Object2890 implements Interface123 @Directive21(argument61 : "stringValue13529") @Directive44(argument97 : ["stringValue13528"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String +} + +type Object2891 implements Interface123 @Directive21(argument61 : "stringValue13531") @Directive44(argument97 : ["stringValue13530"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14218: String +} + +type Object2892 implements Interface123 @Directive21(argument61 : "stringValue13533") @Directive44(argument97 : ["stringValue13532"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14219: String +} + +type Object2893 implements Interface123 @Directive21(argument61 : "stringValue13535") @Directive44(argument97 : ["stringValue13534"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14219: String +} + +type Object2894 implements Interface123 @Directive21(argument61 : "stringValue13537") @Directive44(argument97 : ["stringValue13536"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14215: String +} + +type Object2895 implements Interface123 @Directive21(argument61 : "stringValue13539") @Directive44(argument97 : ["stringValue13538"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14220: String + field14221: Object2884! +} + +type Object2896 implements Interface123 @Directive21(argument61 : "stringValue13541") @Directive44(argument97 : ["stringValue13540"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14216: String! +} + +type Object2897 implements Interface123 @Directive21(argument61 : "stringValue13543") @Directive44(argument97 : ["stringValue13542"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String +} + +type Object2898 implements Interface123 @Directive21(argument61 : "stringValue13545") @Directive44(argument97 : ["stringValue13544"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14222: Object2899! +} + +type Object2899 @Directive21(argument61 : "stringValue13547") @Directive44(argument97 : ["stringValue13546"]) { + field14223: String + field14224: [Object2871!] + field14225: Object2847 + field14226: Object2847 + field14227: Object2847 + field14228: Object2847 + field14229: Object2847 +} + +type Object29 @Directive21(argument61 : "stringValue203") @Directive44(argument97 : ["stringValue202"]) { + field189: Int +} + +type Object290 @Directive21(argument61 : "stringValue863") @Directive44(argument97 : ["stringValue862"]) { + field1846: Union57 + field1855: Enum107 +} + +type Object2900 implements Interface123 @Directive21(argument61 : "stringValue13549") @Directive44(argument97 : ["stringValue13548"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String +} + +type Object2901 implements Interface123 @Directive21(argument61 : "stringValue13551") @Directive44(argument97 : ["stringValue13550"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14220: String! + field14230: String +} + +type Object2902 implements Interface123 @Directive21(argument61 : "stringValue13553") @Directive44(argument97 : ["stringValue13552"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14053: Object2849 +} + +type Object2903 implements Interface123 @Directive21(argument61 : "stringValue13555") @Directive44(argument97 : ["stringValue13554"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14215: String + field14231: String + field14232: String + field14233: Int + field14234: Int + field14235: Int +} + +type Object2904 implements Interface123 @Directive21(argument61 : "stringValue13557") @Directive44(argument97 : ["stringValue13556"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14236: String +} + +type Object2905 implements Interface123 @Directive21(argument61 : "stringValue13559") @Directive44(argument97 : ["stringValue13558"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14237: String +} + +type Object2906 @Directive21(argument61 : "stringValue13561") @Directive44(argument97 : ["stringValue13560"]) { + field14238: String + field14239: [String!] + field14240: Object2863 +} + +type Object2907 implements Interface123 @Directive21(argument61 : "stringValue13563") @Directive44(argument97 : ["stringValue13562"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String + field14215: String! + field14241: String + field14242: String! + field14243: String! + field14244: String! + field14245: Boolean! + field14246: String + field14247: Int! +} + +type Object2908 implements Interface123 @Directive21(argument61 : "stringValue13565") @Directive44(argument97 : ["stringValue13564"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14231: Scalar3 + field14232: Scalar3 + field14248: Scalar3 +} + +type Object2909 implements Interface123 @Directive21(argument61 : "stringValue13567") @Directive44(argument97 : ["stringValue13566"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14242: String! + field14243: String! + field14244: String! + field14249: String! +} + +type Object291 @Directive21(argument61 : "stringValue866") @Directive44(argument97 : ["stringValue865"]) { + field1847: String + field1848: String + field1849: String + field1850: [Object292] +} + +type Object2910 implements Interface123 @Directive21(argument61 : "stringValue13569") @Directive44(argument97 : ["stringValue13568"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14212: String @deprecated + field14213: String + field14215: String! + field14216: String + field14242: String! + field14243: String! + field14244: String! + field14250: String! + field14251: String +} + +type Object2911 implements Interface123 @Directive21(argument61 : "stringValue13571") @Directive44(argument97 : ["stringValue13570"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14184: String! + field14215: String! + field14216: String! + field14242: String! + field14243: String! + field14244: String! + field14245: Boolean! + field14246: String + field14247: Int! + field14252: String + field14253: Int! + field14254: String! + field14255: String! + field14256: String + field14257: String + field14258: Int + field14259: String! + field14260: Int! + field14261: String! + field14262: Boolean! +} + +type Object2912 implements Interface123 @Directive21(argument61 : "stringValue13573") @Directive44(argument97 : ["stringValue13572"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14215: String + field14244: String! + field14255: String! + field14263: String! + field14264: Boolean! + field14265: Boolean! + field14266: Int +} + +type Object2913 implements Interface123 @Directive21(argument61 : "stringValue13575") @Directive44(argument97 : ["stringValue13574"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14253: Int! + field14267: Boolean! + field14268: String! + field14269: [Object2875] +} + +type Object2914 implements Interface123 @Directive21(argument61 : "stringValue13577") @Directive44(argument97 : ["stringValue13576"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14255: String! +} + +type Object2915 implements Interface123 @Directive21(argument61 : "stringValue13579") @Directive44(argument97 : ["stringValue13578"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14255: String! +} + +type Object2916 implements Interface123 @Directive21(argument61 : "stringValue13581") @Directive44(argument97 : ["stringValue13580"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14215: String! + field14216: String! + field14242: String! + field14243: String! + field14244: String! + field14247: Int! + field14253: Int! + field14270: Boolean! + field14271: Boolean! + field14272: Boolean! + field14273: String +} + +type Object2917 implements Interface123 @Directive21(argument61 : "stringValue13583") @Directive44(argument97 : ["stringValue13582"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14215: String + field14216: String! + field14242: String! + field14243: String! + field14244: String! + field14245: Boolean! + field14246: String + field14247: Int! + field14253: Int! + field14255: String! + field14259: String! + field14260: Int! + field14261: String! +} + +type Object2918 implements Interface123 @Directive21(argument61 : "stringValue13585") @Directive44(argument97 : ["stringValue13584"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +type Object2919 implements Interface123 @Directive21(argument61 : "stringValue13587") @Directive44(argument97 : ["stringValue13586"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14184: String! + field14216: String! + field14242: String! + field14243: String! + field14244: String! + field14246: String + field14258: Int + field14262: Boolean! + field14274: String +} + +type Object292 @Directive21(argument61 : "stringValue868") @Directive44(argument97 : ["stringValue867"]) { + field1851: String + field1852: String + field1853: String + field1854: String +} + +type Object2920 implements Interface123 @Directive21(argument61 : "stringValue13589") @Directive44(argument97 : ["stringValue13588"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 +} + +type Object2921 implements Interface123 @Directive21(argument61 : "stringValue13591") @Directive44(argument97 : ["stringValue13590"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14275: String! +} + +type Object2922 implements Interface123 @Directive21(argument61 : "stringValue13593") @Directive44(argument97 : ["stringValue13592"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14276: String +} + +type Object2923 implements Interface126 @Directive21(argument61 : "stringValue13595") @Directive44(argument97 : ["stringValue13594"]) { + field14210: Boolean @deprecated + field14277: Object2859 + field14278: Object2924 + field14282: Object2859 + field14283: Object2859 + field14284: Object2859 + field14285: Object2859 + field14286: Object2867 +} + +type Object2924 @Directive21(argument61 : "stringValue13597") @Directive44(argument97 : ["stringValue13596"]) { + field14279: Object2860 + field14280: Object2863 + field14281: Enum576 +} + +type Object2925 implements Interface126 @Directive21(argument61 : "stringValue13599") @Directive44(argument97 : ["stringValue13598"]) { + field14210: Boolean @deprecated + field14277: Object2859 + field14282: Object2859 + field14284: Object2859 + field14285: Object2859 +} + +type Object2926 implements Interface126 @Directive21(argument61 : "stringValue13601") @Directive44(argument97 : ["stringValue13600"]) { + field14210: Boolean @deprecated + field14282: Object2859 + field14284: Object2859 + field14285: Object2859 + field14287: Object2906 +} + +type Object2927 implements Interface126 @Directive21(argument61 : "stringValue13603") @Directive44(argument97 : ["stringValue13602"]) { + field14210: Boolean @deprecated + field14277: Object2924 + field14282: Object2859 + field14284: Object2859 + field14285: Object2859 +} + +type Object2928 implements Interface126 @Directive21(argument61 : "stringValue13605") @Directive44(argument97 : ["stringValue13604"]) { + field14210: Boolean @deprecated + field14277: Object2924 + field14278: Object2924 + field14282: Object2859 + field14283: Object2859 + field14284: Object2859 + field14285: Object2859 + field14286: Object2867 +} + +type Object2929 implements Interface124 @Directive21(argument61 : "stringValue13607") @Directive44(argument97 : ["stringValue13606"]) { + field14076: Enum566 + field14077: Enum567 + field14078: Object2852 + field14093: Float + field14094: String + field14095: String + field14096: Object2852 + field14097: Object2855 +} + +type Object293 @Directive21(argument61 : "stringValue872") @Directive44(argument97 : ["stringValue871"]) { + field1860: Object294 + field1871: Object295 + field1874: Object97 +} + +type Object2930 implements Interface123 @Directive21(argument61 : "stringValue13609") @Directive44(argument97 : ["stringValue13608"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14288: Object2865 +} + +type Object2931 implements Interface125 @Directive21(argument61 : "stringValue13611") @Directive44(argument97 : ["stringValue13610"]) { + field14148: String! + field14149: Enum577 + field14150: Float + field14151: String + field14152: Interface124 + field14153: Interface123 + field14289: Enum583 +} + +type Object2932 implements Interface123 @Directive21(argument61 : "stringValue13614") @Directive44(argument97 : ["stringValue13613"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14290: String +} + +type Object2933 implements Interface123 @Directive21(argument61 : "stringValue13616") @Directive44(argument97 : ["stringValue13615"]) { + field14033: Object2847 + field14051: String + field14052: Scalar1 + field14231: Scalar3 + field14232: Scalar3 +} + +type Object2934 implements Interface125 @Directive21(argument61 : "stringValue13618") @Directive44(argument97 : ["stringValue13617"]) { + field14148: String! + field14149: Enum577 + field14150: Float + field14151: String + field14152: Interface124 + field14153: Interface123 + field14291: Object2879 + field14292: String + field14293: String + field14294: Boolean + field14295: String + field14296: [Object2882!] + field14297: String + field14298: String + field14299: String + field14300: String + field14301: String + field14302: String + field14303: String + field14304: String + field14305: String + field14306: String + field14307: String + field14308: String + field14309: String + field14310: String + field14311: String + field14312: Object2935 +} + +type Object2935 @Directive21(argument61 : "stringValue13620") @Directive44(argument97 : ["stringValue13619"]) { + field14313: Object2881 + field14314: Object2873 +} + +type Object2936 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue13621") @Directive31 @Directive44(argument97 : ["stringValue13622", "stringValue13623"]) { + field14315: String + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8399: String +} + +type Object2937 implements Interface83 @Directive22(argument62 : "stringValue13624") @Directive31 @Directive44(argument97 : ["stringValue13625", "stringValue13626"]) { + field14316: String + field7153: String +} + +type Object2938 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue13627") @Directive31 @Directive44(argument97 : ["stringValue13628", "stringValue13629"]) { + field13545: Int + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8399: String +} + +type Object2939 @Directive22(argument62 : "stringValue13630") @Directive31 @Directive44(argument97 : ["stringValue13631", "stringValue13632"]) { + field14317: Interface6 +} + +type Object294 @Directive21(argument61 : "stringValue874") @Directive44(argument97 : ["stringValue873"]) { + field1861: Scalar2 + field1862: String + field1863: Float + field1864: Int + field1865: Int + field1866: String + field1867: String + field1868: String + field1869: Boolean + field1870: Int +} + +type Object2940 @Directive22(argument62 : "stringValue13633") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue13634", "stringValue13635"]) { + field14318: String! @Directive30(argument80 : true) @Directive39 + field14319: String! @Directive30(argument80 : true) @Directive39 +} + +type Object2941 implements Interface83 @Directive22(argument62 : "stringValue13636") @Directive31 @Directive44(argument97 : ["stringValue13637", "stringValue13638"]) { + field14320: String! + field14321: Float + field14322: Float + field7153: String +} + +type Object2942 implements Interface83 @Directive22(argument62 : "stringValue13639") @Directive31 @Directive44(argument97 : ["stringValue13640", "stringValue13641"]) { + field14320: String! + field14321: Scalar2 + field14322: Scalar2 + field7153: String +} + +type Object2943 implements Interface3 @Directive22(argument62 : "stringValue13642") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue13643", "stringValue13644"]) { + field14323: [Object2944] @Directive30(argument80 : true) @Directive39 + field2252: String! @Directive30(argument80 : true) @Directive39 + field2253: ID @Directive30(argument80 : true) @Directive39 + field2254: Interface3 @Directive30(argument80 : true) @Directive39 + field4: Object1 @Directive30(argument80 : true) @Directive39 + field74: String @Directive30(argument80 : true) @Directive39 + field75: Scalar1 @Directive30(argument80 : true) @Directive39 +} + +type Object2944 @Directive22(argument62 : "stringValue13645") @Directive31 @Directive44(argument97 : ["stringValue13646", "stringValue13647"]) { + field14324: String! + field14325: String + field14326: Object2945! +} + +type Object2945 @Directive22(argument62 : "stringValue13648") @Directive31 @Directive44(argument97 : ["stringValue13649", "stringValue13650"]) { + field14327: Enum333! + field14328: Boolean + field14329: String + field14330: Float + field14331: ID +} + +type Object2946 implements Interface5 @Directive22(argument62 : "stringValue13651") @Directive31 @Directive44(argument97 : ["stringValue13652", "stringValue13653"]) { + field7454: Object450 + field7455: Object450 + field7458: Object506 + field76: String + field77: String + field78: String +} + +type Object2947 implements Interface3 @Directive22(argument62 : "stringValue13654") @Directive31 @Directive44(argument97 : ["stringValue13655", "stringValue13656"]) { + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object2948 implements Interface127 @Directive21(argument61 : "stringValue13665") @Directive44(argument97 : ["stringValue13664"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14352: Object2951 + field14374: String + field14375: String + field14376: String + field14377: String + field14378: Int + field14379: Boolean +} + +type Object2949 @Directive21(argument61 : "stringValue13659") @Directive44(argument97 : ["stringValue13658"]) { + field14333: String + field14334: String @deprecated + field14335: String @deprecated + field14336: [Object2950] + field14347: Enum585 @deprecated + field14348: Scalar1 + field14349: String +} + +type Object295 @Directive21(argument61 : "stringValue876") @Directive44(argument97 : ["stringValue875"]) { + field1872: Scalar2 + field1873: Float +} + +type Object2950 @Directive21(argument61 : "stringValue13661") @Directive44(argument97 : ["stringValue13660"]) { + field14337: String + field14338: String + field14339: Enum584 + field14340: String + field14341: String + field14342: String + field14343: String + field14344: String + field14345: String + field14346: [String!] +} + +type Object2951 @Directive21(argument61 : "stringValue13667") @Directive44(argument97 : ["stringValue13666"]) { + field14353: [Object2952] + field14365: String + field14366: String + field14367: [String] + field14368: String @deprecated + field14369: String + field14370: Boolean + field14371: [String] + field14372: String + field14373: Enum586 +} + +type Object2952 @Directive21(argument61 : "stringValue13669") @Directive44(argument97 : ["stringValue13668"]) { + field14354: String + field14355: String + field14356: Boolean + field14357: Union177 + field14363: Boolean @deprecated + field14364: Boolean +} + +type Object2953 @Directive21(argument61 : "stringValue13672") @Directive44(argument97 : ["stringValue13671"]) { + field14358: Boolean +} + +type Object2954 @Directive21(argument61 : "stringValue13674") @Directive44(argument97 : ["stringValue13673"]) { + field14359: Float +} + +type Object2955 @Directive21(argument61 : "stringValue13676") @Directive44(argument97 : ["stringValue13675"]) { + field14360: Int +} + +type Object2956 @Directive21(argument61 : "stringValue13678") @Directive44(argument97 : ["stringValue13677"]) { + field14361: Scalar2 +} + +type Object2957 @Directive21(argument61 : "stringValue13680") @Directive44(argument97 : ["stringValue13679"]) { + field14362: String +} + +type Object2958 implements Interface128 @Directive21(argument61 : "stringValue13698") @Directive44(argument97 : ["stringValue13697"]) { + field14380: Enum587 + field14381: Enum588 + field14382: Object2959 + field14397: Float + field14398: String + field14399: String + field14400: Object2959 + field14401: Object2962 + field14404: Int +} + +type Object2959 @Directive21(argument61 : "stringValue13686") @Directive44(argument97 : ["stringValue13685"]) { + field14383: String + field14384: Enum589 + field14385: Enum590 + field14386: Enum591 + field14387: Object2960 +} + +type Object296 @Directive21(argument61 : "stringValue879") @Directive44(argument97 : ["stringValue878"]) { + field1875: String + field1876: [Object297] + field1890: Object191 +} + +type Object2960 @Directive21(argument61 : "stringValue13691") @Directive44(argument97 : ["stringValue13690"]) { + field14388: String + field14389: Float + field14390: Float + field14391: Float + field14392: Float + field14393: [Object2961] + field14396: Enum592 +} + +type Object2961 @Directive21(argument61 : "stringValue13693") @Directive44(argument97 : ["stringValue13692"]) { + field14394: String + field14395: Float +} + +type Object2962 @Directive21(argument61 : "stringValue13696") @Directive44(argument97 : ["stringValue13695"]) { + field14402: String + field14403: String +} + +type Object2963 implements Interface127 @Directive21(argument61 : "stringValue13700") @Directive44(argument97 : ["stringValue13699"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14405: String +} + +type Object2964 implements Interface127 @Directive21(argument61 : "stringValue13702") @Directive44(argument97 : ["stringValue13701"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +type Object2965 @Directive21(argument61 : "stringValue13704") @Directive44(argument97 : ["stringValue13703"]) { + field14406: Object2966 +} + +type Object2966 implements Interface129 @Directive21(argument61 : "stringValue13708") @Directive44(argument97 : ["stringValue13707"]) { + field14407: String! + field14408: Enum593 + field14409: Float + field14410: String + field14411: Interface128 + field14412: Interface127 + field14413: Object2967 + field14422: String + field14423: String + field14424: Boolean + field14425: String + field14426: [Object2969!] + field14432: String + field14433: String + field14434: String + field14435: String + field14436: String + field14437: String + field14438: String + field14439: String + field14440: String + field14441: String + field14442: String + field14443: String + field14444: String + field14445: String + field14446: String + field14447: Object2971 +} + +type Object2967 implements Interface129 @Directive21(argument61 : "stringValue13710") @Directive44(argument97 : ["stringValue13709"]) { + field14407: String! + field14408: Enum593 + field14409: Float + field14410: String + field14411: Interface128 + field14412: Interface127 + field14414: String + field14415: String + field14416: Float @deprecated + field14417: Object2968 + field14421: Object2949 +} + +type Object2968 @Directive21(argument61 : "stringValue13712") @Directive44(argument97 : ["stringValue13711"]) { + field14418: Enum594 + field14419: String + field14420: Boolean +} + +type Object2969 @Directive21(argument61 : "stringValue13715") @Directive44(argument97 : ["stringValue13714"]) { + field14427: String + field14428: [Object2970!] + field14431: Object2970 +} + +type Object297 @Directive21(argument61 : "stringValue881") @Directive44(argument97 : ["stringValue880"]) { + field1877: String + field1878: String + field1879: Object35 + field1880: Object135 + field1881: String + field1882: Object43 + field1883: String + field1884: Object46 + field1885: String + field1886: String + field1887: [Enum76] + field1888: [Object36] + field1889: Interface21 +} + +type Object2970 @Directive21(argument61 : "stringValue13717") @Directive44(argument97 : ["stringValue13716"]) { + field14429: String + field14430: String +} + +type Object2971 @Directive21(argument61 : "stringValue13719") @Directive44(argument97 : ["stringValue13718"]) { + field14448: Object2972 + field14451: Object2973 +} + +type Object2972 @Directive21(argument61 : "stringValue13721") @Directive44(argument97 : ["stringValue13720"]) { + field14449: String! + field14450: [Object2969!] +} + +type Object2973 @Directive21(argument61 : "stringValue13723") @Directive44(argument97 : ["stringValue13722"]) { + field14452: String! +} + +type Object2974 @Directive21(argument61 : "stringValue13725") @Directive44(argument97 : ["stringValue13724"]) { + field14453: Object2975 + field14491: Object2975 + field14492: Object2975 + field14493: Object2980 +} + +type Object2975 @Directive21(argument61 : "stringValue13727") @Directive44(argument97 : ["stringValue13726"]) { + field14454: [Object2976!] + field14481: Object2979 + field14490: Enum599 +} + +type Object2976 @Directive21(argument61 : "stringValue13729") @Directive44(argument97 : ["stringValue13728"]) { + field14455: String! + field14456: Object2977 + field14462: Object2978 + field14474: Int + field14475: Object2959 + field14476: Enum598 + field14477: Int + field14478: Int + field14479: Int + field14480: Int +} + +type Object2977 @Directive21(argument61 : "stringValue13731") @Directive44(argument97 : ["stringValue13730"]) { + field14457: Enum595 + field14458: Enum596 + field14459: Int @deprecated + field14460: Int @deprecated + field14461: Object2959 +} + +type Object2978 @Directive21(argument61 : "stringValue13735") @Directive44(argument97 : ["stringValue13734"]) { + field14463: Enum595 + field14464: Enum589 + field14465: Int + field14466: Boolean + field14467: Boolean + field14468: Enum597 + field14469: Enum589 + field14470: Boolean + field14471: Boolean + field14472: Boolean + field14473: Int +} + +type Object2979 @Directive21(argument61 : "stringValue13739") @Directive44(argument97 : ["stringValue13738"]) { + field14482: Int + field14483: Int + field14484: Object2978 + field14485: Int + field14486: Object2959 + field14487: Int + field14488: Int + field14489: Int +} + +type Object298 @Directive21(argument61 : "stringValue885") @Directive44(argument97 : ["stringValue884"]) { + field1891: String + field1892: String + field1893: String +} + +type Object2980 @Directive21(argument61 : "stringValue13742") @Directive44(argument97 : ["stringValue13741"]) { + field14494: Int + field14495: Int + field14496: Int + field14497: Object2959 + field14498: Interface129 +} + +type Object2981 @Directive21(argument61 : "stringValue13744") @Directive44(argument97 : ["stringValue13743"]) { + field14499: Scalar2 + field14500: String + field14501: Scalar2 + field14502: String + field14503: Scalar2 + field14504: Scalar2 + field14505: String +} + +type Object2982 @Directive21(argument61 : "stringValue13746") @Directive44(argument97 : ["stringValue13745"]) { + field14506: Enum600 + field14507: Float +} + +type Object2983 @Directive21(argument61 : "stringValue13749") @Directive44(argument97 : ["stringValue13748"]) { + field14508: Enum601 + field14509: Object2982 + field14510: Object2982 + field14511: Object2982 +} + +type Object2984 implements Interface130 @Directive21(argument61 : "stringValue13753") @Directive44(argument97 : ["stringValue13752"]) { + field14512: String! + field14513: String + field14514: String + field14515: Float + field14516: Scalar2 + field14517: [Object2985] + field14521: [Object2965] + field14522: [Object2986] +} + +type Object2985 @Directive21(argument61 : "stringValue13755") @Directive44(argument97 : ["stringValue13754"]) { + field14518: String! + field14519: String + field14520: String +} + +type Object2986 @Directive21(argument61 : "stringValue13757") @Directive44(argument97 : ["stringValue13756"]) { + field14523: String + field14524: Int + field14525: Float + field14526: [Object2985] + field14527: String +} + +type Object2987 implements Interface127 @Directive21(argument61 : "stringValue13759") @Directive44(argument97 : ["stringValue13758"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +type Object2988 implements Interface127 @Directive21(argument61 : "stringValue13761") @Directive44(argument97 : ["stringValue13760"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +type Object2989 implements Interface127 @Directive21(argument61 : "stringValue13763") @Directive44(argument97 : ["stringValue13762"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +type Object299 @Directive21(argument61 : "stringValue888") @Directive44(argument97 : ["stringValue887"]) { + field1894: String + field1895: Boolean + field1896: Object35 + field1897: String + field1898: String + field1899: String +} + +type Object2990 @Directive21(argument61 : "stringValue13765") @Directive44(argument97 : ["stringValue13764"]) { + field14528: String + field14529: String + field14530: String + field14531: Float + field14532: Scalar2 + field14533: String +} + +type Object2991 implements Interface127 @Directive21(argument61 : "stringValue13767") @Directive44(argument97 : ["stringValue13766"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14534: String! + field14535: String + field14536: Interface127 +} + +type Object2992 implements Interface127 @Directive21(argument61 : "stringValue13769") @Directive44(argument97 : ["stringValue13768"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14537: Boolean + field14538: [String] + field14539: Boolean +} + +type Object2993 @Directive21(argument61 : "stringValue13771") @Directive44(argument97 : ["stringValue13770"]) { + field14540: String! + field14541: Boolean! + field14542: String + field14543: String +} + +type Object2994 implements Interface127 @Directive21(argument61 : "stringValue13773") @Directive44(argument97 : ["stringValue13772"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14544: String! +} + +type Object2995 implements Interface129 @Directive21(argument61 : "stringValue13775") @Directive44(argument97 : ["stringValue13774"]) { + field14407: String! + field14408: Enum593 + field14409: Float + field14410: String + field14411: Interface128 + field14412: Interface127 + field14545: Enum602 + field14546: Int +} + +type Object2996 @Directive21(argument61 : "stringValue13778") @Directive44(argument97 : ["stringValue13777"]) { + field14547: Float + field14548: Float + field14549: String + field14550: String + field14551: Int + field14552: Boolean +} + +type Object2997 implements Interface131 @Directive21(argument61 : "stringValue13781") @Directive44(argument97 : ["stringValue13780"]) { + field14553: Boolean @deprecated + field14554: [Object2974] +} + +type Object2998 implements Interface127 @Directive21(argument61 : "stringValue13783") @Directive44(argument97 : ["stringValue13782"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String +} + +type Object2999 implements Interface127 @Directive21(argument61 : "stringValue13785") @Directive44(argument97 : ["stringValue13784"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14557: String +} + +type Object3 @Directive20(argument58 : "stringValue30", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue29") @Directive31 @Directive44(argument97 : ["stringValue31"]) { + field23: [Object4] + field36: Object5 +} + +type Object30 @Directive21(argument61 : "stringValue205") @Directive44(argument97 : ["stringValue204"]) { + field190: Enum25 +} + +type Object300 @Directive21(argument61 : "stringValue891") @Directive44(argument97 : ["stringValue890"]) { + field1900: String + field1901: String + field1902: [Object67] + field1903: Scalar2! + field1904: Float + field1905: Float + field1906: String + field1907: [Object240] + field1908: Scalar2 + field1909: Scalar2 + field1910: String + field1911: Scalar2 + field1912: String + field1913: String + field1914: String + field1915: String + field1916: [Object68] + field1917: String + field1918: String + field1919: Scalar2 + field1920: String + field1921: [Object178] + field1922: Object191 + field1923: String + field1924: [String] +} + +type Object3000 implements Interface127 @Directive21(argument61 : "stringValue13787") @Directive44(argument97 : ["stringValue13786"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String + field14558: String + field14559: String + field14560: String +} + +type Object3001 implements Interface127 @Directive21(argument61 : "stringValue13789") @Directive44(argument97 : ["stringValue13788"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String +} + +type Object3002 implements Interface127 @Directive21(argument61 : "stringValue13791") @Directive44(argument97 : ["stringValue13790"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String +} + +type Object3003 implements Interface127 @Directive21(argument61 : "stringValue13793") @Directive44(argument97 : ["stringValue13792"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14561: String +} + +type Object3004 implements Interface127 @Directive21(argument61 : "stringValue13795") @Directive44(argument97 : ["stringValue13794"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14562: String +} + +type Object3005 implements Interface127 @Directive21(argument61 : "stringValue13797") @Directive44(argument97 : ["stringValue13796"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14562: String +} + +type Object3006 implements Interface127 @Directive21(argument61 : "stringValue13799") @Directive44(argument97 : ["stringValue13798"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14558: String +} + +type Object3007 implements Interface127 @Directive21(argument61 : "stringValue13801") @Directive44(argument97 : ["stringValue13800"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14563: String + field14564: Object2996! +} + +type Object3008 implements Interface127 @Directive21(argument61 : "stringValue13803") @Directive44(argument97 : ["stringValue13802"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14559: String! +} + +type Object3009 implements Interface127 @Directive21(argument61 : "stringValue13805") @Directive44(argument97 : ["stringValue13804"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String +} + +type Object301 @Directive21(argument61 : "stringValue894") @Directive44(argument97 : ["stringValue893"]) { + field1925: String + field1926: String + field1927: Object35 +} + +type Object3010 implements Interface127 @Directive21(argument61 : "stringValue13807") @Directive44(argument97 : ["stringValue13806"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14565: Object3011! +} + +type Object3011 @Directive21(argument61 : "stringValue13809") @Directive44(argument97 : ["stringValue13808"]) { + field14566: String + field14567: [Object2990!] + field14568: Object2949 + field14569: Object2949 + field14570: Object2949 + field14571: Object2949 + field14572: Object2949 +} + +type Object3012 implements Interface127 @Directive21(argument61 : "stringValue13811") @Directive44(argument97 : ["stringValue13810"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String +} + +type Object3013 implements Interface127 @Directive21(argument61 : "stringValue13813") @Directive44(argument97 : ["stringValue13812"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14563: String! + field14573: String +} + +type Object3014 implements Interface127 @Directive21(argument61 : "stringValue13815") @Directive44(argument97 : ["stringValue13814"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14352: Object2951 +} + +type Object3015 implements Interface127 @Directive21(argument61 : "stringValue13817") @Directive44(argument97 : ["stringValue13816"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14558: String + field14574: String + field14575: String + field14576: Int + field14577: Int + field14578: Int +} + +type Object3016 implements Interface127 @Directive21(argument61 : "stringValue13819") @Directive44(argument97 : ["stringValue13818"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14579: String +} + +type Object3017 implements Interface127 @Directive21(argument61 : "stringValue13821") @Directive44(argument97 : ["stringValue13820"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14580: String +} + +type Object3018 @Directive21(argument61 : "stringValue13823") @Directive44(argument97 : ["stringValue13822"]) { + field14581: String + field14582: [String!] + field14583: Object2979 +} + +type Object3019 implements Interface127 @Directive21(argument61 : "stringValue13825") @Directive44(argument97 : ["stringValue13824"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String + field14558: String! + field14584: String + field14585: String! + field14586: String! + field14587: String! + field14588: Boolean! + field14589: String + field14590: Int! +} + +type Object302 @Directive21(argument61 : "stringValue897") @Directive44(argument97 : ["stringValue896"]) { + field1928: Object58 + field1929: Object58 + field1930: String + field1931: Scalar1 + field1932: String + field1933: String + field1934: String + field1935: Scalar2! + field1936: Float + field1937: Float + field1938: String + field1939: String + field1940: [String] + field1941: [Object58] + field1942: [Object240] + field1943: Scalar2 + field1944: String + field1945: String + field1946: String + field1947: Scalar2 + field1948: String +} + +type Object3020 implements Interface127 @Directive21(argument61 : "stringValue13827") @Directive44(argument97 : ["stringValue13826"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14574: Scalar3 + field14575: Scalar3 + field14591: Scalar3 +} + +type Object3021 implements Interface127 @Directive21(argument61 : "stringValue13829") @Directive44(argument97 : ["stringValue13828"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14585: String! + field14586: String! + field14587: String! + field14592: String! +} + +type Object3022 implements Interface127 @Directive21(argument61 : "stringValue13831") @Directive44(argument97 : ["stringValue13830"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14555: String @deprecated + field14556: String + field14558: String! + field14559: String + field14585: String! + field14586: String! + field14587: String! + field14593: String! + field14594: String +} + +type Object3023 implements Interface127 @Directive21(argument61 : "stringValue13833") @Directive44(argument97 : ["stringValue13832"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14544: String! + field14558: String! + field14559: String! + field14585: String! + field14586: String! + field14587: String! + field14588: Boolean! + field14589: String + field14590: Int! + field14595: String + field14596: Int! + field14597: String! + field14598: String! + field14599: String + field14600: String + field14601: Int + field14602: String! + field14603: Int! + field14604: String! + field14605: Boolean! +} + +type Object3024 implements Interface127 @Directive21(argument61 : "stringValue13835") @Directive44(argument97 : ["stringValue13834"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14558: String + field14587: String! + field14598: String! + field14606: String! + field14607: Boolean! + field14608: Boolean! + field14609: Int +} + +type Object3025 implements Interface127 @Directive21(argument61 : "stringValue13837") @Directive44(argument97 : ["stringValue13836"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14596: Int! + field14610: Boolean! + field14611: String! + field14612: [Object2993] +} + +type Object3026 implements Interface127 @Directive21(argument61 : "stringValue13839") @Directive44(argument97 : ["stringValue13838"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14598: String! +} + +type Object3027 implements Interface127 @Directive21(argument61 : "stringValue13841") @Directive44(argument97 : ["stringValue13840"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14598: String! +} + +type Object3028 implements Interface127 @Directive21(argument61 : "stringValue13843") @Directive44(argument97 : ["stringValue13842"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14558: String! + field14559: String! + field14585: String! + field14586: String! + field14587: String! + field14590: Int! + field14596: Int! + field14613: Boolean! + field14614: Boolean! + field14615: Boolean! + field14616: String +} + +type Object3029 implements Interface127 @Directive21(argument61 : "stringValue13845") @Directive44(argument97 : ["stringValue13844"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14558: String + field14559: String! + field14585: String! + field14586: String! + field14587: String! + field14588: Boolean! + field14589: String + field14590: Int! + field14596: Int! + field14598: String! + field14602: String! + field14603: Int! + field14604: String! +} + +type Object303 @Directive21(argument61 : "stringValue900") @Directive44(argument97 : ["stringValue899"]) { + field1949: String + field1950: [Int] @deprecated + field1951: Object35 + field1952: Boolean + field1953: String +} + +type Object3030 implements Interface127 @Directive21(argument61 : "stringValue13847") @Directive44(argument97 : ["stringValue13846"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +type Object3031 implements Interface127 @Directive21(argument61 : "stringValue13849") @Directive44(argument97 : ["stringValue13848"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14544: String! + field14559: String! + field14585: String! + field14586: String! + field14587: String! + field14589: String + field14601: Int + field14605: Boolean! + field14617: String +} + +type Object3032 implements Interface127 @Directive21(argument61 : "stringValue13851") @Directive44(argument97 : ["stringValue13850"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 +} + +type Object3033 implements Interface127 @Directive21(argument61 : "stringValue13853") @Directive44(argument97 : ["stringValue13852"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14618: String! +} + +type Object3034 implements Interface127 @Directive21(argument61 : "stringValue13855") @Directive44(argument97 : ["stringValue13854"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14619: String +} + +type Object3035 implements Interface131 @Directive21(argument61 : "stringValue13857") @Directive44(argument97 : ["stringValue13856"]) { + field14553: Boolean @deprecated + field14620: Object2975 + field14621: Object3036 + field14625: Object2975 + field14626: Object2975 + field14627: Object2975 + field14628: Object2975 + field14629: Object2983 +} + +type Object3036 @Directive21(argument61 : "stringValue13859") @Directive44(argument97 : ["stringValue13858"]) { + field14622: Object2976 + field14623: Object2979 + field14624: Enum599 +} + +type Object3037 implements Interface131 @Directive21(argument61 : "stringValue13861") @Directive44(argument97 : ["stringValue13860"]) { + field14553: Boolean @deprecated + field14620: Object2975 + field14625: Object2975 + field14627: Object2975 + field14628: Object2975 +} + +type Object3038 implements Interface131 @Directive21(argument61 : "stringValue13863") @Directive44(argument97 : ["stringValue13862"]) { + field14553: Boolean @deprecated + field14625: Object2975 + field14627: Object2975 + field14628: Object2975 + field14630: Object3018 +} + +type Object3039 implements Interface131 @Directive21(argument61 : "stringValue13865") @Directive44(argument97 : ["stringValue13864"]) { + field14553: Boolean @deprecated + field14620: Object3036 + field14625: Object2975 + field14627: Object2975 + field14628: Object2975 +} + +type Object304 @Directive21(argument61 : "stringValue903") @Directive44(argument97 : ["stringValue902"]) { + field1954: Int + field1955: Object135 + field1956: Object35 + field1957: String + field1958: String + field1959: Enum108 + field1960: String + field1961: String + field1962: Boolean + field1963: Boolean + field1964: String + field1965: String + field1966: String +} + +type Object3040 implements Interface131 @Directive21(argument61 : "stringValue13867") @Directive44(argument97 : ["stringValue13866"]) { + field14553: Boolean @deprecated + field14620: Object3036 + field14621: Object3036 + field14625: Object2975 + field14626: Object2975 + field14627: Object2975 + field14628: Object2975 + field14629: Object2983 +} + +type Object3041 implements Interface128 @Directive21(argument61 : "stringValue13869") @Directive44(argument97 : ["stringValue13868"]) { + field14380: Enum587 + field14381: Enum588 + field14382: Object2959 + field14397: Float + field14398: String + field14399: String + field14400: Object2959 + field14401: Object2962 +} + +type Object3042 implements Interface130 @Directive21(argument61 : "stringValue13871") @Directive44(argument97 : ["stringValue13870"]) { + field14512: String! + field14515: Float + field14516: Scalar2 + field14631: String + field14632: String + field14633: Int + field14634: String + field14635: String +} + +type Object3043 implements Interface127 @Directive21(argument61 : "stringValue13873") @Directive44(argument97 : ["stringValue13872"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14636: Object2981 +} + +type Object3044 implements Interface127 @Directive21(argument61 : "stringValue13875") @Directive44(argument97 : ["stringValue13874"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14637: String +} + +type Object3045 implements Interface127 @Directive21(argument61 : "stringValue13877") @Directive44(argument97 : ["stringValue13876"]) { + field14332: Object2949 + field14350: String + field14351: Scalar1 + field14574: Scalar3 + field14575: Scalar3 +} + +type Object3046 implements Interface88 @Directive22(argument62 : "stringValue13878") @Directive31 @Directive44(argument97 : ["stringValue13879", "stringValue13880"]) { + field7484: String +} + +type Object3047 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue13881") @Directive31 @Directive44(argument97 : ["stringValue13882", "stringValue13883"]) { + field14638: Int + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8399: String +} + +type Object3048 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue13884") @Directive31 @Directive44(argument97 : ["stringValue13885", "stringValue13886"]) { + field13544: Int + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8399: String +} + +type Object3049 implements Interface84 & Interface85 @Directive22(argument62 : "stringValue13887") @Directive31 @Directive44(argument97 : ["stringValue13888", "stringValue13889"]) { + field14639: Int + field14640: Int + field7155: [Object1290] + field7156: [Enum319!] + field7157: [Enum319!] + field8399: String +} + +type Object305 @Directive21(argument61 : "stringValue907") @Directive44(argument97 : ["stringValue906"]) { + field1967: String + field1968: String + field1969: String + field1970: Scalar2 + field1971: String + field1972: String + field1973: String + field1974: String +} + +type Object3050 implements Interface83 @Directive22(argument62 : "stringValue13890") @Directive31 @Directive44(argument97 : ["stringValue13891", "stringValue13892"]) { + field14320: String + field14321: Int + field14322: Int + field7153: String +} + +type Object3051 implements Interface132 @Directive21(argument61 : "stringValue13899") @Directive44(argument97 : ["stringValue13898"]) { + field14641: String! + field14642: String! + field14643: [String] + field14644: Scalar1 + field14645: String + field14646: Scalar1 + field14647: String + field14648: Object3052 + field14653: [Object3053] + field14656: String + field14657: String + field14658: Scalar2 + field14659: String +} + +type Object3052 @Directive21(argument61 : "stringValue13895") @Directive44(argument97 : ["stringValue13894"]) { + field14649: String + field14650: Boolean + field14651: Scalar1 + field14652: String +} + +type Object3053 @Directive21(argument61 : "stringValue13897") @Directive44(argument97 : ["stringValue13896"]) { + field14654: String! + field14655: String! +} + +type Object3054 implements Interface133 @Directive21(argument61 : "stringValue13902") @Directive44(argument97 : ["stringValue13901"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field14669: Object3055 + field14674: String +} + +type Object3055 @Directive21(argument61 : "stringValue13904") @Directive44(argument97 : ["stringValue13903"]) { + field14670: Boolean + field14671: Boolean + field14672: String + field14673: String +} + +type Object3056 implements Interface134 @Directive21(argument61 : "stringValue13907") @Directive44(argument97 : ["stringValue13906"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 + field15097: Object3146 +} + +type Object3057 @Directive21(argument61 : "stringValue13909") @Directive44(argument97 : ["stringValue13908"]) { + field14685: Scalar2! + field14686: Object3058 + field14946: Object3124 + field15011: Object3133 + field15018: Object3135 + field15022: Object3136 + field15087: Int + field15088: Object3143 +} + +type Object3058 @Directive21(argument61 : "stringValue13911") @Directive44(argument97 : ["stringValue13910"]) { + field14687: String + field14688: String + field14689: [Object3059] + field14704: Object3059 + field14705: [Object3060] + field14715: Object3061 + field14737: String + field14738: [Object3062] + field14860: String + field14861: String + field14862: String + field14863: Int! + field14864: Int + field14865: Int + field14866: Float + field14867: String + field14868: [String] + field14869: String + field14870: String + field14871: [Object3114] + field14874: String + field14875: [Object3115] + field14883: String! + field14884: String + field14885: Boolean + field14886: [String] + field14887: String + field14888: String + field14889: Object3116 + field14894: Int + field14895: [Object3117] + field14906: String + field14907: String + field14908: [Object3120] + field14926: [Object3121] + field14938: String + field14939: [Object3123] + field14944: [Enum638] + field14945: Enum639 +} + +type Object3059 @Directive21(argument61 : "stringValue13913") @Directive44(argument97 : ["stringValue13912"]) { + field14690: String + field14691: String + field14692: String + field14693: String + field14694: String + field14695: String + field14696: String + field14697: String + field14698: String + field14699: String + field14700: String + field14701: String + field14702: String + field14703: String +} + +type Object306 @Directive21(argument61 : "stringValue910") @Directive44(argument97 : ["stringValue909"]) { + field1975: String + field1976: Object35 +} + +type Object3060 @Directive21(argument61 : "stringValue13915") @Directive44(argument97 : ["stringValue13914"]) { + field14706: String + field14707: Boolean + field14708: String + field14709: String + field14710: String + field14711: String + field14712: String + field14713: String + field14714: String +} + +type Object3061 @Directive21(argument61 : "stringValue13917") @Directive44(argument97 : ["stringValue13916"]) { + field14716: String + field14717: String + field14718: String + field14719: String + field14720: String + field14721: String + field14722: String + field14723: Float! + field14724: Float! + field14725: String + field14726: String + field14727: String + field14728: String + field14729: String + field14730: String + field14731: String + field14732: Boolean + field14733: Boolean + field14734: String + field14735: Float + field14736: Float +} + +type Object3062 @Directive21(argument61 : "stringValue13919") @Directive44(argument97 : ["stringValue13918"]) { + field14739: Scalar2 + field14740: String! + field14741: String + field14742: String + field14743: String + field14744: String + field14745: Boolean + field14746: String + field14747: [String] + field14748: Boolean + field14749: Object3063 + field14859: String +} + +type Object3063 @Directive21(argument61 : "stringValue13921") @Directive44(argument97 : ["stringValue13920"]) { + field14750: String + field14751: Union178 + field14856: [Object3113] +} + +type Object3064 @Directive21(argument61 : "stringValue13924") @Directive44(argument97 : ["stringValue13923"]) { + field14752: [Enum603] +} + +type Object3065 @Directive21(argument61 : "stringValue13927") @Directive44(argument97 : ["stringValue13926"]) { + field14753: Enum604 +} + +type Object3066 @Directive21(argument61 : "stringValue13930") @Directive44(argument97 : ["stringValue13929"]) { + field14754: [Object3067] + field14762: Object3070 +} + +type Object3067 @Directive21(argument61 : "stringValue13932") @Directive44(argument97 : ["stringValue13931"]) { + field14755: [Object3068] + field14758: [Int] + field14759: [Object3069] +} + +type Object3068 @Directive21(argument61 : "stringValue13934") @Directive44(argument97 : ["stringValue13933"]) { + field14756: String + field14757: String +} + +type Object3069 @Directive21(argument61 : "stringValue13936") @Directive44(argument97 : ["stringValue13935"]) { + field14760: String + field14761: String +} + +type Object307 @Directive21(argument61 : "stringValue913") @Directive44(argument97 : ["stringValue912"]) { + field1977: String + field1978: String + field1979: String + field1980: String + field1981: Object135 + field1982: Object35 +} + +type Object3070 @Directive21(argument61 : "stringValue13938") @Directive44(argument97 : ["stringValue13937"]) { + field14763: Scalar2 + field14764: String + field14765: Enum605 + field14766: Enum606 +} + +type Object3071 @Directive21(argument61 : "stringValue13942") @Directive44(argument97 : ["stringValue13941"]) { + field14767: Enum607 @deprecated + field14768: [Enum607] +} + +type Object3072 @Directive21(argument61 : "stringValue13945") @Directive44(argument97 : ["stringValue13944"]) { + field14769: Enum604 + field14770: Boolean +} + +type Object3073 @Directive21(argument61 : "stringValue13947") @Directive44(argument97 : ["stringValue13946"]) { + field14771: String + field14772: Enum608 +} + +type Object3074 @Directive21(argument61 : "stringValue13950") @Directive44(argument97 : ["stringValue13949"]) { + field14773: String + field14774: Boolean + field14775: Boolean + field14776: String + field14777: Boolean +} + +type Object3075 @Directive21(argument61 : "stringValue13952") @Directive44(argument97 : ["stringValue13951"]) { + field14778: [Enum609] +} + +type Object3076 @Directive21(argument61 : "stringValue13955") @Directive44(argument97 : ["stringValue13954"]) { + field14779: [Object3067] + field14780: Object3070 + field14781: Enum610 +} + +type Object3077 @Directive21(argument61 : "stringValue13958") @Directive44(argument97 : ["stringValue13957"]) { + field14782: Boolean +} + +type Object3078 @Directive21(argument61 : "stringValue13960") @Directive44(argument97 : ["stringValue13959"]) { + field14783: [Enum611] +} + +type Object3079 @Directive21(argument61 : "stringValue13963") @Directive44(argument97 : ["stringValue13962"]) { + field14784: [Enum612] +} + +type Object308 @Directive21(argument61 : "stringValue916") @Directive44(argument97 : ["stringValue915"]) { + field1983: String + field1984: String! + field1985: String + field1986: String + field1987: String + field1988: String + field1989: String +} + +type Object3080 @Directive21(argument61 : "stringValue13966") @Directive44(argument97 : ["stringValue13965"]) { + field14785: Boolean + field14786: Enum613 +} + +type Object3081 @Directive21(argument61 : "stringValue13969") @Directive44(argument97 : ["stringValue13968"]) { + field14787: String +} + +type Object3082 @Directive21(argument61 : "stringValue13971") @Directive44(argument97 : ["stringValue13970"]) { + field14788: [Enum614] +} + +type Object3083 @Directive21(argument61 : "stringValue13974") @Directive44(argument97 : ["stringValue13973"]) { + field14789: [Enum615] +} + +type Object3084 @Directive21(argument61 : "stringValue13977") @Directive44(argument97 : ["stringValue13976"]) { + field14790: Enum616 + field14791: String +} + +type Object3085 @Directive21(argument61 : "stringValue13980") @Directive44(argument97 : ["stringValue13979"]) { + field14792: [Object3067] + field14793: String + field14794: Boolean +} + +type Object3086 @Directive21(argument61 : "stringValue13982") @Directive44(argument97 : ["stringValue13981"]) { + field14795: [Enum617] +} + +type Object3087 @Directive21(argument61 : "stringValue13985") @Directive44(argument97 : ["stringValue13984"]) { + field14796: Enum604 + field14797: Boolean + field14798: Boolean @deprecated +} + +type Object3088 @Directive21(argument61 : "stringValue13987") @Directive44(argument97 : ["stringValue13986"]) { + field14799: Enum604 + field14800: Enum618 @deprecated + field14801: Enum618 +} + +type Object3089 @Directive21(argument61 : "stringValue13990") @Directive44(argument97 : ["stringValue13989"]) { + field14802: [Enum619] +} + +type Object309 @Directive21(argument61 : "stringValue919") @Directive44(argument97 : ["stringValue918"]) { + field1990: String + field1991: Object310 + field1995: Scalar2 + field1996: String + field1997: String + field1998: String + field1999: Int + field2000: Float + field2001: String + field2002: Scalar2! + field2003: String + field2004: String + field2005: Scalar2 + field2006: String + field2007: String + field2008: String + field2009: Boolean + field2010: String +} + +type Object3090 @Directive21(argument61 : "stringValue13993") @Directive44(argument97 : ["stringValue13992"]) { + field14803: Enum604 +} + +type Object3091 @Directive21(argument61 : "stringValue13995") @Directive44(argument97 : ["stringValue13994"]) { + field14804: Enum620 +} + +type Object3092 @Directive21(argument61 : "stringValue13998") @Directive44(argument97 : ["stringValue13997"]) { + field14805: Enum621 +} + +type Object3093 @Directive21(argument61 : "stringValue14001") @Directive44(argument97 : ["stringValue14000"]) { + field14806: Enum622 + field14807: Object3070 @deprecated + field14808: Object3094 +} + +type Object3094 @Directive21(argument61 : "stringValue14004") @Directive44(argument97 : ["stringValue14003"]) { + field14809: Enum623 + field14810: Object3095 +} + +type Object3095 @Directive21(argument61 : "stringValue14007") @Directive44(argument97 : ["stringValue14006"]) { + field14811: Scalar2! + field14812: String! + field14813: Enum624! +} + +type Object3096 @Directive21(argument61 : "stringValue14010") @Directive44(argument97 : ["stringValue14009"]) { + field14814: Int +} + +type Object3097 @Directive21(argument61 : "stringValue14012") @Directive44(argument97 : ["stringValue14011"]) { + field14815: Enum604 +} + +type Object3098 @Directive21(argument61 : "stringValue14014") @Directive44(argument97 : ["stringValue14013"]) { + field14816: String + field14817: [Enum625] +} + +type Object3099 @Directive21(argument61 : "stringValue14017") @Directive44(argument97 : ["stringValue14016"]) { + field14818: Object3070 @deprecated + field14819: Int + field14820: Enum626 + field14821: Object3094 +} + +type Object31 @Directive21(argument61 : "stringValue208") @Directive44(argument97 : ["stringValue207"]) { + field191: Scalar2 +} + +type Object310 @Directive21(argument61 : "stringValue921") @Directive44(argument97 : ["stringValue920"]) { + field1992: Scalar2 + field1993: String + field1994: String +} + +type Object3100 @Directive21(argument61 : "stringValue14020") @Directive44(argument97 : ["stringValue14019"]) { + field14822: Object3070 + field14823: Int + field14824: Boolean + field14825: Object3070 +} + +type Object3101 @Directive21(argument61 : "stringValue14022") @Directive44(argument97 : ["stringValue14021"]) { + field14826: Enum604 + field14827: Enum627 + field14828: [Enum628] +} + +type Object3102 @Directive21(argument61 : "stringValue14026") @Directive44(argument97 : ["stringValue14025"]) { + field14829: Enum623 @deprecated + field14830: Object3094 +} + +type Object3103 @Directive21(argument61 : "stringValue14028") @Directive44(argument97 : ["stringValue14027"]) { + field14831: [Object3067] + field14832: Boolean +} + +type Object3104 @Directive21(argument61 : "stringValue14030") @Directive44(argument97 : ["stringValue14029"]) { + field14833: Enum604 +} + +type Object3105 @Directive21(argument61 : "stringValue14032") @Directive44(argument97 : ["stringValue14031"]) { + field14834: [Object3067] + field14835: Object3070 + field14836: String +} + +type Object3106 @Directive21(argument61 : "stringValue14034") @Directive44(argument97 : ["stringValue14033"]) { + field14837: [Enum629] @deprecated + field14838: Enum629 +} + +type Object3107 @Directive21(argument61 : "stringValue14037") @Directive44(argument97 : ["stringValue14036"]) { + field14839: String + field14840: Boolean + field14841: [Enum630] +} + +type Object3108 @Directive21(argument61 : "stringValue14040") @Directive44(argument97 : ["stringValue14039"]) { + field14842: String + field14843: Enum631 +} + +type Object3109 @Directive21(argument61 : "stringValue14043") @Directive44(argument97 : ["stringValue14042"]) { + field14844: String + field14845: Enum632 + field14846: Enum633 + field14847: [Enum633] +} + +type Object311 @Directive21(argument61 : "stringValue925") @Directive44(argument97 : ["stringValue924"]) { + field2011: String + field2012: String + field2013: Object43 + field2014: String + field2015: String + field2016: Float + field2017: Int + field2018: String + field2019: String + field2020: String + field2021: String + field2022: Scalar2 + field2023: Int + field2024: String + field2025: String +} + +type Object3110 @Directive21(argument61 : "stringValue14047") @Directive44(argument97 : ["stringValue14046"]) { + field14848: Int + field14849: Enum634 + field14850: [Enum635] +} + +type Object3111 @Directive21(argument61 : "stringValue14051") @Directive44(argument97 : ["stringValue14050"]) { + field14851: Object3070 + field14852: Enum636 + field14853: String + field14854: Int +} + +type Object3112 @Directive21(argument61 : "stringValue14054") @Directive44(argument97 : ["stringValue14053"]) { + field14855: [Enum637] +} + +type Object3113 @Directive21(argument61 : "stringValue14057") @Directive44(argument97 : ["stringValue14056"]) { + field14857: String + field14858: String +} + +type Object3114 @Directive21(argument61 : "stringValue14059") @Directive44(argument97 : ["stringValue14058"]) { + field14872: String + field14873: String +} + +type Object3115 @Directive21(argument61 : "stringValue14061") @Directive44(argument97 : ["stringValue14060"]) { + field14876: Scalar2 + field14877: Scalar2 + field14878: String + field14879: String + field14880: String + field14881: String + field14882: String +} + +type Object3116 @Directive21(argument61 : "stringValue14063") @Directive44(argument97 : ["stringValue14062"]) { + field14890: String + field14891: Boolean + field14892: Scalar2 + field14893: Int +} + +type Object3117 @Directive21(argument61 : "stringValue14065") @Directive44(argument97 : ["stringValue14064"]) { + field14896: Int + field14897: Scalar2 + field14898: [Object3118] + field14902: [Object3119] +} + +type Object3118 @Directive21(argument61 : "stringValue14067") @Directive44(argument97 : ["stringValue14066"]) { + field14899: String + field14900: Int + field14901: String +} + +type Object3119 @Directive21(argument61 : "stringValue14069") @Directive44(argument97 : ["stringValue14068"]) { + field14903: String + field14904: Int + field14905: String +} + +type Object312 @Directive21(argument61 : "stringValue930") @Directive22(argument62 : "stringValue929") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue931", "stringValue932"]) { + field2026: [Object313] @Directive30(argument80 : true) @Directive41 +} + +type Object3120 @Directive21(argument61 : "stringValue14071") @Directive44(argument97 : ["stringValue14070"]) { + field14909: Scalar2 + field14910: String + field14911: String + field14912: String + field14913: String + field14914: Scalar4 + field14915: Scalar2 + field14916: Boolean + field14917: Int + field14918: String + field14919: String + field14920: String + field14921: String + field14922: String + field14923: Scalar2 + field14924: Scalar2 + field14925: String +} + +type Object3121 @Directive21(argument61 : "stringValue14073") @Directive44(argument97 : ["stringValue14072"]) { + field14927: [Object3122] + field14931: String + field14932: String + field14933: String + field14934: Int + field14935: Scalar2 + field14936: String + field14937: String +} + +type Object3122 @Directive21(argument61 : "stringValue14075") @Directive44(argument97 : ["stringValue14074"]) { + field14928: String + field14929: String + field14930: Int +} + +type Object3123 @Directive21(argument61 : "stringValue14077") @Directive44(argument97 : ["stringValue14076"]) { + field14940: Scalar2 + field14941: String! + field14942: Boolean + field14943: Object3063 +} + +type Object3124 @Directive21(argument61 : "stringValue14081") @Directive44(argument97 : ["stringValue14080"]) { + field14947: Boolean! + field14948: [String] @deprecated + field14949: String + field14950: String + field14951: String + field14952: Int + field14953: Int + field14954: Boolean + field14955: String + field14956: Boolean + field14957: Object3125 + field14970: String + field14971: String + field14972: Object3128 + field14984: [String] + field14985: Boolean + field14986: String + field14987: String + field14988: [Object3131] + field14995: Enum640 + field14996: Float + field14997: String + field14998: Scalar3 + field14999: Scalar3 + field15000: Object3132 +} + +type Object3125 @Directive21(argument61 : "stringValue14083") @Directive44(argument97 : ["stringValue14082"]) { + field14958: Int + field14959: Boolean + field14960: Int + field14961: Float + field14962: Object3126 +} + +type Object3126 @Directive21(argument61 : "stringValue14085") @Directive44(argument97 : ["stringValue14084"]) { + field14963: Float + field14964: [Object3127] + field14969: [Object3127] +} + +type Object3127 @Directive21(argument61 : "stringValue14087") @Directive44(argument97 : ["stringValue14086"]) { + field14965: String! + field14966: String + field14967: String + field14968: Float +} + +type Object3128 @Directive21(argument61 : "stringValue14089") @Directive44(argument97 : ["stringValue14088"]) { + field14973: Int + field14974: Scalar2 + field14975: String + field14976: Scalar2 + field14977: Object3129 +} + +type Object3129 @Directive21(argument61 : "stringValue14091") @Directive44(argument97 : ["stringValue14090"]) { + field14978: String + field14979: String + field14980: [Object3067] + field14981: Object3130 +} + +type Object313 @Directive20(argument58 : "stringValue934", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue933") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue935", "stringValue936"]) { + field2027: String @Directive30(argument80 : true) @Directive41 + field2028: String @Directive30(argument80 : true) @Directive41 + field2029: String @Directive30(argument80 : true) @Directive41 + field2030: String @Directive30(argument80 : true) @Directive41 + field2031: Enum109 @Directive30(argument80 : true) @Directive41 +} + +type Object3130 @Directive21(argument61 : "stringValue14093") @Directive44(argument97 : ["stringValue14092"]) { + field14982: String! + field14983: String! +} + +type Object3131 @Directive21(argument61 : "stringValue14095") @Directive44(argument97 : ["stringValue14094"]) { + field14989: Int! + field14990: Scalar4! + field14991: Scalar4! + field14992: String! + field14993: String! + field14994: Boolean! +} + +type Object3132 @Directive21(argument61 : "stringValue14098") @Directive44(argument97 : ["stringValue14097"]) { + field15001: Boolean + field15002: Boolean + field15003: Boolean + field15004: Boolean + field15005: Boolean + field15006: String + field15007: Scalar2 + field15008: [String] + field15009: Int + field15010: Int +} + +type Object3133 @Directive21(argument61 : "stringValue14100") @Directive44(argument97 : ["stringValue14099"]) { + field15012: Boolean + field15013: String! + field15014: Object3134 + field15017: Boolean! +} + +type Object3134 @Directive21(argument61 : "stringValue14102") @Directive44(argument97 : ["stringValue14101"]) { + field15015: String + field15016: String +} + +type Object3135 @Directive21(argument61 : "stringValue14104") @Directive44(argument97 : ["stringValue14103"]) { + field15019: Int + field15020: Int + field15021: Boolean +} + +type Object3136 @Directive21(argument61 : "stringValue14106") @Directive44(argument97 : ["stringValue14105"]) { + field15023: Object3059 + field15024: String + field15025: [Object3137] + field15066: [Object3138] + field15067: [Object3138] + field15068: Object3140 + field15071: Object3141 +} + +type Object3137 @Directive21(argument61 : "stringValue14108") @Directive44(argument97 : ["stringValue14107"]) { + field15026: Int + field15027: Scalar2 + field15028: Int + field15029: [Int] + field15030: [String] + field15031: [Object3118] + field15032: Boolean + field15033: Boolean + field15034: Boolean + field15035: Boolean + field15036: Int + field15037: String @deprecated + field15038: [Object3138] + field15059: Scalar2 + field15060: String + field15061: [Object3139] + field15065: Int +} + +type Object3138 @Directive21(argument61 : "stringValue14110") @Directive44(argument97 : ["stringValue14109"]) { + field15039: String + field15040: String + field15041: String + field15042: String + field15043: String + field15044: String + field15045: String + field15046: Int + field15047: Scalar2 + field15048: String + field15049: String + field15050: String + field15051: Scalar2 + field15052: String + field15053: String + field15054: String + field15055: Boolean + field15056: Scalar2 + field15057: String + field15058: Boolean +} + +type Object3139 @Directive21(argument61 : "stringValue14112") @Directive44(argument97 : ["stringValue14111"]) { + field15062: Scalar2 + field15063: String + field15064: Int +} + +type Object314 @Directive21(argument61 : "stringValue942") @Directive22(argument62 : "stringValue941") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue943", "stringValue944"]) { + field2032: String @Directive30(argument80 : true) @Directive41 + field2033: String @Directive30(argument80 : true) @Directive41 + field2034: [Object313] @Directive30(argument80 : true) @Directive41 + field2035: Object315 @Directive30(argument80 : true) @Directive41 +} + +type Object3140 @Directive21(argument61 : "stringValue14114") @Directive44(argument97 : ["stringValue14113"]) { + field15069: [Object3138] + field15070: [Object3138] +} + +type Object3141 @Directive21(argument61 : "stringValue14116") @Directive44(argument97 : ["stringValue14115"]) { + field15072: Boolean + field15073: Scalar4 + field15074: Int @deprecated + field15075: String + field15076: Scalar4 + field15077: Object3142 + field15082: Boolean + field15083: Int + field15084: Int + field15085: String + field15086: Boolean +} + +type Object3142 @Directive21(argument61 : "stringValue14118") @Directive44(argument97 : ["stringValue14117"]) { + field15078: String + field15079: String + field15080: String + field15081: String +} + +type Object3143 @Directive21(argument61 : "stringValue14120") @Directive44(argument97 : ["stringValue14119"]) { + field15089: [Object3144] +} + +type Object3144 @Directive21(argument61 : "stringValue14122") @Directive44(argument97 : ["stringValue14121"]) { + field15090: String + field15091: Boolean + field15092: Int + field15093: Int + field15094: [Object3145] +} + +type Object3145 @Directive21(argument61 : "stringValue14124") @Directive44(argument97 : ["stringValue14123"]) { + field15095: String + field15096: Boolean +} + +type Object3146 @Directive21(argument61 : "stringValue14126") @Directive44(argument97 : ["stringValue14125"]) { + field15098: Object3147 + field15105: Object3149 + field15107: Object3150 + field15134: Object3156 + field15140: Object3158 + field15155: Object3161 + field15175: Object3166 + field15197: Object3169 + field15200: Object3170 + field15202: Object3171 + field15205: Object3172 + field15223: Object3175 @deprecated + field15240: Object3150 +} + +type Object3147 @Directive21(argument61 : "stringValue14128") @Directive44(argument97 : ["stringValue14127"]) { + field15099: Boolean + field15100: Boolean + field15101: Scalar2 + field15102: Object3148 +} + +type Object3148 @Directive21(argument61 : "stringValue14130") @Directive44(argument97 : ["stringValue14129"]) { + field15103: Float + field15104: Float +} + +type Object3149 @Directive21(argument61 : "stringValue14132") @Directive44(argument97 : ["stringValue14131"]) { + field15106: Boolean +} + +type Object315 @Directive20(argument58 : "stringValue946", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue945") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue947", "stringValue948"]) { + field2036: String @Directive30(argument80 : true) @Directive41 + field2037: String @Directive30(argument80 : true) @Directive41 + field2038: String @Directive30(argument80 : true) @Directive41 +} + +type Object3150 @Directive21(argument61 : "stringValue14134") @Directive44(argument97 : ["stringValue14133"]) { + field15108: [Object3151] @deprecated + field15117: [Object3153] + field15131: Object3155 @deprecated +} + +type Object3151 @Directive21(argument61 : "stringValue14136") @Directive44(argument97 : ["stringValue14135"]) { + field15109: String + field15110: String + field15111: [Object3152] + field15116: [Object3151] +} + +type Object3152 @Directive21(argument61 : "stringValue14138") @Directive44(argument97 : ["stringValue14137"]) { + field15112: String + field15113: String + field15114: String + field15115: [Object3152] +} + +type Object3153 @Directive21(argument61 : "stringValue14140") @Directive44(argument97 : ["stringValue14139"]) { + field15118: String + field15119: String! + field15120: String + field15121: [Object3154] + field15130: String +} + +type Object3154 @Directive21(argument61 : "stringValue14142") @Directive44(argument97 : ["stringValue14141"]) { + field15122: Scalar2 + field15123: String! + field15124: String + field15125: String + field15126: String + field15127: String + field15128: Enum641 + field15129: [String] +} + +type Object3155 @Directive21(argument61 : "stringValue14145") @Directive44(argument97 : ["stringValue14144"]) { + field15132: [Int] + field15133: [Int] +} + +type Object3156 @Directive21(argument61 : "stringValue14147") @Directive44(argument97 : ["stringValue14146"]) { + field15135: [Object3157] + field15138: [Object3157] + field15139: [Object3157] +} + +type Object3157 @Directive21(argument61 : "stringValue14149") @Directive44(argument97 : ["stringValue14148"]) { + field15136: String + field15137: String +} + +type Object3158 @Directive21(argument61 : "stringValue14151") @Directive44(argument97 : ["stringValue14150"]) { + field15141: [Object3159] + field15147: Boolean + field15148: [Object3131] + field15149: [Int] + field15150: Object3160 +} + +type Object3159 @Directive21(argument61 : "stringValue14153") @Directive44(argument97 : ["stringValue14152"]) { + field15142: Int! + field15143: String! + field15144: String! + field15145: String + field15146: Object3125 +} + +type Object316 @Directive21(argument61 : "stringValue950") @Directive22(argument62 : "stringValue949") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue951", "stringValue952"]) { + field2039: String @Directive30(argument80 : true) @Directive41 + field2040: String @Directive30(argument80 : true) @Directive41 + field2041: String @Directive30(argument80 : true) @Directive41 + field2042: String @Directive30(argument80 : true) @Directive41 + field2043: String @Directive30(argument80 : true) @Directive41 + field2044: String @Directive30(argument80 : true) @Directive41 + field2045: String @Directive30(argument80 : true) @Directive41 +} + +type Object3160 @Directive21(argument61 : "stringValue14155") @Directive44(argument97 : ["stringValue14154"]) { + field15151: Int! + field15152: String! + field15153: String! + field15154: String! +} + +type Object3161 @Directive21(argument61 : "stringValue14157") @Directive44(argument97 : ["stringValue14156"]) { + field15156: Object3162 +} + +type Object3162 @Directive21(argument61 : "stringValue14159") @Directive44(argument97 : ["stringValue14158"]) { + field15157: [Object3163] + field15163: [Object3164] + field15170: [Object3165] +} + +type Object3163 @Directive21(argument61 : "stringValue14161") @Directive44(argument97 : ["stringValue14160"]) { + field15158: String + field15159: String + field15160: String + field15161: [String] + field15162: [String] +} + +type Object3164 @Directive21(argument61 : "stringValue14163") @Directive44(argument97 : ["stringValue14162"]) { + field15164: String + field15165: String + field15166: String + field15167: String + field15168: [String] + field15169: [String] +} + +type Object3165 @Directive21(argument61 : "stringValue14165") @Directive44(argument97 : ["stringValue14164"]) { + field15171: String + field15172: String + field15173: String + field15174: String +} + +type Object3166 @Directive21(argument61 : "stringValue14167") @Directive44(argument97 : ["stringValue14166"]) { + field15176: Int + field15177: Object3167 +} + +type Object3167 @Directive21(argument61 : "stringValue14169") @Directive44(argument97 : ["stringValue14168"]) { + field15178: String + field15179: String + field15180: String + field15181: String + field15182: String + field15183: String + field15184: Boolean + field15185: Scalar2 + field15186: String + field15187: String + field15188: String + field15189: Scalar2 + field15190: Scalar2 + field15191: [Object3168] + field15193: String + field15194: String + field15195: String + field15196: Boolean +} + +type Object3168 @Directive21(argument61 : "stringValue14171") @Directive44(argument97 : ["stringValue14170"]) { + field15192: String +} + +type Object3169 @Directive21(argument61 : "stringValue14173") @Directive44(argument97 : ["stringValue14172"]) { + field15198: Boolean + field15199: Boolean +} + +type Object317 @Directive21(argument61 : "stringValue954") @Directive22(argument62 : "stringValue953") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue955", "stringValue956"]) { + field2046: String @Directive30(argument80 : true) @Directive41 + field2047: String @Directive30(argument80 : true) @Directive41 + field2048: String @Directive30(argument80 : true) @Directive41 + field2049: String @Directive30(argument80 : true) @Directive41 + field2050: String @Directive30(argument80 : true) @Directive41 + field2051: String @Directive30(argument80 : true) @Directive41 + field2052: [Object318] @Directive30(argument80 : true) @Directive41 +} + +type Object3170 @Directive21(argument61 : "stringValue14175") @Directive44(argument97 : ["stringValue14174"]) { + field15201: String! +} + +type Object3171 @Directive21(argument61 : "stringValue14177") @Directive44(argument97 : ["stringValue14176"]) { + field15203: Boolean + field15204: Boolean +} + +type Object3172 @Directive21(argument61 : "stringValue14179") @Directive44(argument97 : ["stringValue14178"]) { + field15206: [Object3173] + field15212: [Object3173] + field15213: Scalar3 + field15214: String + field15215: Boolean + field15216: String + field15217: Boolean + field15218: Boolean + field15219: Boolean + field15220: Object3174 +} + +type Object3173 @Directive21(argument61 : "stringValue14181") @Directive44(argument97 : ["stringValue14180"]) { + field15207: String! + field15208: String! + field15209: String + field15210: String + field15211: String +} + +type Object3174 @Directive21(argument61 : "stringValue14183") @Directive44(argument97 : ["stringValue14182"]) { + field15221: Boolean + field15222: [Enum642] +} + +type Object3175 @Directive21(argument61 : "stringValue14186") @Directive44(argument97 : ["stringValue14185"]) { + field15224: Union179 + field15234: Boolean + field15235: [String!]! + field15236: Object3179 + field15239: Enum645 +} + +type Object3176 @Directive21(argument61 : "stringValue14189") @Directive44(argument97 : ["stringValue14188"]) { + field15225: Boolean + field15226: [Enum643] + field15227: Scalar3 + field15228: Enum644 + field15229: Int + field15230: Scalar3 +} + +type Object3177 @Directive21(argument61 : "stringValue14193") @Directive44(argument97 : ["stringValue14192"]) { + field15231: Int + field15232: Scalar3 +} + +type Object3178 @Directive21(argument61 : "stringValue14195") @Directive44(argument97 : ["stringValue14194"]) { + field15233: Boolean +} + +type Object3179 @Directive21(argument61 : "stringValue14197") @Directive44(argument97 : ["stringValue14196"]) { + field15237: String! + field15238: String! +} + +type Object318 @Directive20(argument58 : "stringValue958", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue957") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue959", "stringValue960"]) { + field2053: [String] @Directive30(argument80 : true) @Directive41 + field2054: [String] @Directive30(argument80 : true) @Directive41 + field2055: String @Directive30(argument80 : true) @Directive41 + field2056: String @Directive30(argument80 : true) @Directive41 + field2057: String @Directive30(argument80 : true) @Directive41 + field2058: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object3180 implements Interface134 @Directive21(argument61 : "stringValue14200") @Directive44(argument97 : ["stringValue14199"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 + field15241: Object3181 +} + +type Object3181 @Directive21(argument61 : "stringValue14202") @Directive44(argument97 : ["stringValue14201"]) { + field15242: String + field15243: String + field15244: Boolean + field15245: String + field15246: String +} + +type Object3182 implements Interface135 @Directive21(argument61 : "stringValue14205") @Directive44(argument97 : ["stringValue14204"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! + field15252: String + field15253: Object3183 + field15256: Boolean + field15257: Object3052 + field15258: String + field15259: String +} + +type Object3183 @Directive21(argument61 : "stringValue14207") @Directive44(argument97 : ["stringValue14206"]) { + field15254: String! + field15255: Int +} + +type Object3184 @Directive21(argument61 : "stringValue14209") @Directive44(argument97 : ["stringValue14208"]) { + field15260: String + field15261: String + field15262: String + field15263: String + field15264: String +} + +type Object3185 implements Interface132 @Directive21(argument61 : "stringValue14211") @Directive44(argument97 : ["stringValue14210"]) { + field14641: String! + field14642: String! + field14643: [String] + field14644: Scalar1 + field14645: String + field14646: Scalar1 + field14647: String + field14648: Object3052 + field14653: [Object3053] + field14656: String + field14657: String +} + +type Object3186 implements Interface135 @Directive21(argument61 : "stringValue14213") @Directive44(argument97 : ["stringValue14212"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! +} + +type Object3187 implements Interface133 @Directive21(argument61 : "stringValue14215") @Directive44(argument97 : ["stringValue14214"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! +} + +type Object3188 @Directive21(argument61 : "stringValue14217") @Directive44(argument97 : ["stringValue14216"]) { + field15266: Boolean! + field15267: String! + field15268: String + field15269: String! + field15270: String + field15271: Scalar1! + field15272: String + field15273: Scalar1 +} + +type Object3189 implements Interface133 @Directive21(argument61 : "stringValue14219") @Directive44(argument97 : ["stringValue14218"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! +} + +type Object319 @Directive21(argument61 : "stringValue962") @Directive22(argument62 : "stringValue961") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue963", "stringValue964"]) { + field2059: String @Directive30(argument80 : true) @Directive41 + field2060: String @Directive30(argument80 : true) @Directive41 + field2061: String @Directive30(argument80 : true) @Directive41 +} + +type Object3190 @Directive21(argument61 : "stringValue14221") @Directive44(argument97 : ["stringValue14220"]) { + field15274: String + field15275: String + field15276: Boolean! + field15277: String +} + +type Object3191 @Directive21(argument61 : "stringValue14223") @Directive44(argument97 : ["stringValue14222"]) { + field15278: String + field15279: Boolean +} + +type Object3192 @Directive21(argument61 : "stringValue14225") @Directive44(argument97 : ["stringValue14224"]) { + field15280: String + field15281: [Object3191] + field15282: String +} + +type Object3193 @Directive21(argument61 : "stringValue14227") @Directive44(argument97 : ["stringValue14226"]) { + field15283: String + field15284: Enum646 + field15285: Enum647 + field15286: String +} + +type Object3194 implements Interface133 @Directive21(argument61 : "stringValue14231") @Directive44(argument97 : ["stringValue14230"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15287: Object3193! +} + +type Object3195 @Directive21(argument61 : "stringValue14233") @Directive44(argument97 : ["stringValue14232"]) { + field15288: String + field15289: String + field15290: Boolean +} + +type Object3196 implements Interface135 @Directive21(argument61 : "stringValue14235") @Directive44(argument97 : ["stringValue14234"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! +} + +type Object3197 @Directive21(argument61 : "stringValue14237") @Directive44(argument97 : ["stringValue14236"]) { + field15291: String + field15292: [String] +} + +type Object3198 implements Interface134 @Directive21(argument61 : "stringValue14239") @Directive44(argument97 : ["stringValue14238"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field15293: Object3199 +} + +type Object3199 @Directive21(argument61 : "stringValue14241") @Directive44(argument97 : ["stringValue14240"]) { + field15294: [String] @deprecated + field15295: String +} + +type Object32 @Directive21(argument61 : "stringValue210") @Directive44(argument97 : ["stringValue209"]) { + field192: Enum26 +} + +type Object320 @Directive21(argument61 : "stringValue967") @Directive44(argument97 : ["stringValue966"]) { + field2062: String! + field2063: Boolean! + field2064: Boolean! + field2065: String! +} + +type Object3200 @Directive21(argument61 : "stringValue14243") @Directive44(argument97 : ["stringValue14242"]) { + field15296: Enum648 + field15297: String + field15298: String + field15299: String +} + +type Object3201 @Directive21(argument61 : "stringValue14246") @Directive44(argument97 : ["stringValue14245"]) { + field15300: Int + field15301: Int + field15302: String + field15303: String +} + +type Object3202 implements Interface133 @Directive21(argument61 : "stringValue14248") @Directive44(argument97 : ["stringValue14247"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15304: Object3201! +} + +type Object3203 @Directive21(argument61 : "stringValue14250") @Directive44(argument97 : ["stringValue14249"]) { + field15305: String +} + +type Object3204 implements Interface133 @Directive21(argument61 : "stringValue14252") @Directive44(argument97 : ["stringValue14251"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15306: Object3203! +} + +type Object3205 implements Interface135 @Directive21(argument61 : "stringValue14254") @Directive44(argument97 : ["stringValue14253"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! + field15307: Boolean + field15308: Boolean + field15309: Boolean + field15310: String + field15311: Boolean + field15312: Boolean + field15313: String +} + +type Object3206 @Directive21(argument61 : "stringValue14256") @Directive44(argument97 : ["stringValue14255"]) { + field15314: Enum649 + field15315: Boolean +} + +type Object3207 implements Interface133 @Directive21(argument61 : "stringValue14259") @Directive44(argument97 : ["stringValue14258"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15316: Object3206! +} + +type Object3208 implements Interface132 @Directive21(argument61 : "stringValue14261") @Directive44(argument97 : ["stringValue14260"]) { + field14641: String! + field14642: String! + field14643: [String] + field14644: Scalar1 + field14645: String + field14646: Scalar1 + field14647: String + field14648: Object3052 + field14653: [Object3053] + field14656: String + field14657: String + field15317: String + field15318: Enum650 + field15319: Object3057 +} + +type Object3209 implements Interface133 @Directive21(argument61 : "stringValue14264") @Directive44(argument97 : ["stringValue14263"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15320: Boolean +} + +type Object321 @Directive21(argument61 : "stringValue969") @Directive44(argument97 : ["stringValue968"]) { + field2066: String! + field2067: String + field2068: Enum110! +} + +type Object3210 @Directive21(argument61 : "stringValue14266") @Directive44(argument97 : ["stringValue14265"]) { + field15321: Int +} + +type Object3211 implements Interface133 @Directive21(argument61 : "stringValue14268") @Directive44(argument97 : ["stringValue14267"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15322: Object3210! +} + +type Object3212 implements Interface134 @Directive21(argument61 : "stringValue14270") @Directive44(argument97 : ["stringValue14269"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 +} + +type Object3213 implements Interface134 @Directive21(argument61 : "stringValue14272") @Directive44(argument97 : ["stringValue14271"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 + field15241: Object3181 +} + +type Object3214 implements Interface133 @Directive21(argument61 : "stringValue14274") @Directive44(argument97 : ["stringValue14273"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15323: String + field15324: String + field15325: Boolean + field15326: Boolean + field15327: [Enum651] + field15328: Int +} + +type Object3215 implements Interface133 @Directive21(argument61 : "stringValue14277") @Directive44(argument97 : ["stringValue14276"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15323: String + field15324: String + field15325: Boolean + field15329: Boolean + field15330: Boolean + field15331: Boolean +} + +type Object3216 implements Interface133 @Directive21(argument61 : "stringValue14279") @Directive44(argument97 : ["stringValue14278"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field14674: String + field15332: Object3190 + field15333: Object3052 + field15334: Object3052 +} + +type Object3217 implements Interface133 @Directive21(argument61 : "stringValue14281") @Directive44(argument97 : ["stringValue14280"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15323: String + field15335: String + field15336: String + field15337: String +} + +type Object3218 implements Interface133 @Directive21(argument61 : "stringValue14283") @Directive44(argument97 : ["stringValue14282"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15323: String + field15338: [String] + field15339: [String] +} + +type Object3219 implements Interface133 @Directive21(argument61 : "stringValue14285") @Directive44(argument97 : ["stringValue14284"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15325: Boolean + field15328: Int + field15340: String! + field15341: String + field15342: Int + field15343: String + field15344: Boolean + field15345: Int + field15346: Int + field15347: Boolean + field15348: [Object3220] + field15351: Boolean + field15352: Boolean + field15353: Boolean +} + +type Object322 @Directive21(argument61 : "stringValue973") @Directive44(argument97 : ["stringValue972"]) { + field2069: String! + field2070: Enum111 +} + +type Object3220 @Directive21(argument61 : "stringValue14287") @Directive44(argument97 : ["stringValue14286"]) { + field15349: String + field15350: Union86 +} + +type Object3221 implements Interface133 @Directive21(argument61 : "stringValue14289") @Directive44(argument97 : ["stringValue14288"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15323: String + field15324: String + field15325: Boolean + field15345: Int + field15348: [Object3220] + field15351: Boolean + field15352: Boolean + field15354: Boolean +} + +type Object3222 implements Interface133 @Directive21(argument61 : "stringValue14291") @Directive44(argument97 : ["stringValue14290"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15323: String + field15324: String + field15325: Boolean + field15326: Boolean + field15355: Enum652 + field15356: Boolean +} + +type Object3223 implements Interface133 @Directive21(argument61 : "stringValue14294") @Directive44(argument97 : ["stringValue14293"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15357: Object3224 +} + +type Object3224 @Directive21(argument61 : "stringValue14296") @Directive44(argument97 : ["stringValue14295"]) { + field15358: String + field15359: Boolean + field15360: Boolean + field15361: Boolean + field15362: String + field15363: String + field15364: String + field15365: String + field15366: Boolean + field15367: Boolean + field15368: Boolean + field15369: Boolean +} + +type Object3225 implements Interface133 @Directive21(argument61 : "stringValue14298") @Directive44(argument97 : ["stringValue14297"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15370: Object3195 + field15371: Boolean! +} + +type Object3226 implements Interface133 @Directive21(argument61 : "stringValue14300") @Directive44(argument97 : ["stringValue14299"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15373: Boolean +} + +type Object3227 implements Interface133 @Directive21(argument61 : "stringValue14302") @Directive44(argument97 : ["stringValue14301"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15325: Boolean + field15372: Object3181 + field15374: Object3150 + field15375: Enum653 + field15376: Boolean + field15377: Boolean + field15378: Boolean + field15379: Boolean +} + +type Object3228 implements Interface133 @Directive21(argument61 : "stringValue14305") @Directive44(argument97 : ["stringValue14304"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15370: Object3195 + field15380: [Object3173] + field15381: Boolean +} + +type Object3229 implements Interface133 @Directive21(argument61 : "stringValue14307") @Directive44(argument97 : ["stringValue14306"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15382: Boolean + field15383: Boolean + field15384: Boolean + field15385: String +} + +type Object323 @Directive21(argument61 : "stringValue976") @Directive44(argument97 : ["stringValue975"]) { + field2071: [Union78] + field2093: Boolean @deprecated + field2094: Boolean + field2095: Boolean + field2096: String + field2097: Enum111 +} + +type Object3230 implements Interface133 @Directive21(argument61 : "stringValue14309") @Directive44(argument97 : ["stringValue14308"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15386: Object3184 +} + +type Object3231 implements Interface133 @Directive21(argument61 : "stringValue14311") @Directive44(argument97 : ["stringValue14310"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15387: Boolean! +} + +type Object3232 implements Interface133 @Directive21(argument61 : "stringValue14313") @Directive44(argument97 : ["stringValue14312"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15387: Boolean! +} + +type Object3233 implements Interface133 @Directive21(argument61 : "stringValue14315") @Directive44(argument97 : ["stringValue14314"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15388: Boolean + field15389: Boolean + field15390: Boolean + field15391: String + field15392: String + field15393: String +} + +type Object3234 implements Interface133 @Directive21(argument61 : "stringValue14317") @Directive44(argument97 : ["stringValue14316"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15394: Enum654 +} + +type Object3235 implements Interface133 @Directive21(argument61 : "stringValue14320") @Directive44(argument97 : ["stringValue14319"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15370: Object3195 + field15395: String +} + +type Object3236 implements Interface133 @Directive21(argument61 : "stringValue14322") @Directive44(argument97 : ["stringValue14321"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15370: Object3195 + field15385: String +} + +type Object3237 @Directive21(argument61 : "stringValue14324") @Directive44(argument97 : ["stringValue14323"]) { + field15396: [String] +} + +type Object3238 implements Interface133 @Directive21(argument61 : "stringValue14326") @Directive44(argument97 : ["stringValue14325"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15370: Object3195 +} + +type Object3239 implements Interface133 @Directive21(argument61 : "stringValue14328") @Directive44(argument97 : ["stringValue14327"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15397: Boolean! +} + +type Object324 @Directive21(argument61 : "stringValue979") @Directive44(argument97 : ["stringValue978"]) { + field2072: String! + field2073: String! + field2074: Object325 +} + +type Object3240 implements Interface133 @Directive21(argument61 : "stringValue14330") @Directive44(argument97 : ["stringValue14329"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15398: Object3197 +} + +type Object3241 implements Interface133 @Directive21(argument61 : "stringValue14332") @Directive44(argument97 : ["stringValue14331"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15399: Object3199 + field15400: Object3237 + field15401: String + field15402: Boolean + field15403: Boolean + field15404: Boolean +} + +type Object3242 implements Interface133 @Directive21(argument61 : "stringValue14334") @Directive44(argument97 : ["stringValue14333"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15405: Boolean +} + +type Object3243 implements Interface133 @Directive21(argument61 : "stringValue14336") @Directive44(argument97 : ["stringValue14335"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15406: Boolean + field15407: Boolean + field15408: Boolean + field15409: Boolean + field15410: Boolean + field15411: Boolean + field15412: Boolean + field15413: Boolean +} + +type Object3244 implements Interface133 @Directive21(argument61 : "stringValue14338") @Directive44(argument97 : ["stringValue14337"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15414: Object3200 +} + +type Object3245 implements Interface133 @Directive21(argument61 : "stringValue14340") @Directive44(argument97 : ["stringValue14339"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15415: Boolean +} + +type Object3246 implements Interface133 @Directive21(argument61 : "stringValue14342") @Directive44(argument97 : ["stringValue14341"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15329: Boolean + field15330: Boolean + field15370: Object3195 + field15416: Object3195 + field15417: Object3195 + field15418: Boolean + field15419: Object3195 + field15420: Boolean +} + +type Object3247 implements Interface133 @Directive21(argument61 : "stringValue14344") @Directive44(argument97 : ["stringValue14343"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15372: Object3181 + field15397: Boolean! +} + +type Object3248 implements Interface133 @Directive21(argument61 : "stringValue14346") @Directive44(argument97 : ["stringValue14345"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field14674: String + field15333: Object3052 + field15334: Object3052 + field15421: Object3249 + field15432: String +} + +type Object3249 @Directive21(argument61 : "stringValue14348") @Directive44(argument97 : ["stringValue14347"]) { + field15422: String + field15423: String + field15424: Boolean! + field15425: String + field15426: Boolean + field15427: Boolean + field15428: String + field15429: String + field15430: Boolean + field15431: Object3192 +} + +type Object325 @Directive21(argument61 : "stringValue981") @Directive44(argument97 : ["stringValue980"]) { + field2075: [Union77] + field2076: String +} + +type Object3250 implements Interface133 @Directive21(argument61 : "stringValue14350") @Directive44(argument97 : ["stringValue14349"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15433: String! +} + +type Object3251 implements Interface133 @Directive21(argument61 : "stringValue14352") @Directive44(argument97 : ["stringValue14351"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15333: Object3052 + field15334: Object3052 + field15434: Object3252 +} + +type Object3252 @Directive21(argument61 : "stringValue14354") @Directive44(argument97 : ["stringValue14353"]) { + field15435: String + field15436: String + field15437: Boolean! + field15438: String + field15439: Int + field15440: Int +} + +type Object3253 implements Interface133 @Directive21(argument61 : "stringValue14356") @Directive44(argument97 : ["stringValue14355"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field14674: String + field15333: Object3052 + field15372: Object3181 +} + +type Object3254 implements Interface133 @Directive21(argument61 : "stringValue14358") @Directive44(argument97 : ["stringValue14357"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field14674: String + field15333: Object3052 + field15334: Object3052 + field15441: Object3255 +} + +type Object3255 @Directive21(argument61 : "stringValue14360") @Directive44(argument97 : ["stringValue14359"]) { + field15442: String + field15443: String + field15444: Boolean! + field15445: String + field15446: String + field15447: [Enum655] + field15448: String @deprecated + field15449: String @deprecated + field15450: String + field15451: String +} + +type Object3256 implements Interface133 @Directive21(argument61 : "stringValue14363") @Directive44(argument97 : ["stringValue14362"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15333: Object3052 + field15334: Object3052 + field15452: Object3257 +} + +type Object3257 @Directive21(argument61 : "stringValue14365") @Directive44(argument97 : ["stringValue14364"]) { + field15453: String + field15454: String + field15455: Boolean! + field15456: String + field15457: [Enum656] + field15458: String + field15459: String @deprecated + field15460: String @deprecated + field15461: String + field15462: String +} + +type Object3258 implements Interface135 @Directive21(argument61 : "stringValue14368") @Directive44(argument97 : ["stringValue14367"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! + field15463: Boolean + field15464: Boolean +} + +type Object3259 implements Interface134 @Directive21(argument61 : "stringValue14370") @Directive44(argument97 : ["stringValue14369"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 + field15097: Object3146 +} + +type Object326 @Directive21(argument61 : "stringValue983") @Directive44(argument97 : ["stringValue982"]) { + field2077: String! + field2078: String! + field2079: Object325 + field2080: String +} + +type Object3260 @Directive21(argument61 : "stringValue14372") @Directive44(argument97 : ["stringValue14371"]) { + field15465: Enum657! + field15466: Boolean + field15467: Boolean + field15468: Boolean + field15469: Boolean + field15470: Boolean + field15471: Boolean + field15472: Boolean + field15473: Boolean + field15474: Boolean +} + +type Object3261 implements Interface133 @Directive21(argument61 : "stringValue14375") @Directive44(argument97 : ["stringValue14374"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15475: Object3260! +} + +type Object3262 implements Interface135 @Directive21(argument61 : "stringValue14377") @Directive44(argument97 : ["stringValue14376"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! + field15476: String +} + +type Object3263 implements Interface135 @Directive21(argument61 : "stringValue14379") @Directive44(argument97 : ["stringValue14378"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! + field15252: String + field15258: String + field15259: String + field15476: String + field15477: Boolean + field15478: String + field15479: Int +} + +type Object3264 implements Interface135 @Directive21(argument61 : "stringValue14381") @Directive44(argument97 : ["stringValue14380"]) { + field15247: String! + field15248: [String] + field15249: Scalar1 + field15250: String + field15251: String! + field15480: String + field15481: Boolean +} + +type Object3265 @Directive21(argument61 : "stringValue14383") @Directive44(argument97 : ["stringValue14382"]) { + field15482: Boolean! + field15483: [Object3266]! + field15492: Int + field15493: Boolean @deprecated + field15494: Boolean @deprecated + field15495: Boolean + field15496: String +} + +type Object3266 @Directive21(argument61 : "stringValue14385") @Directive44(argument97 : ["stringValue14384"]) { + field15484: String! + field15485: String! + field15486: String! + field15487: String + field15488: String + field15489: String + field15490: String + field15491: Boolean +} + +type Object3267 implements Interface133 @Directive21(argument61 : "stringValue14387") @Directive44(argument97 : ["stringValue14386"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15497: Object3265! +} + +type Object3268 implements Interface133 @Directive21(argument61 : "stringValue14389") @Directive44(argument97 : ["stringValue14388"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! +} + +type Object3269 @Directive21(argument61 : "stringValue14391") @Directive44(argument97 : ["stringValue14390"]) { + field15498: Int! + field15499: Int! +} + +type Object327 @Directive21(argument61 : "stringValue985") @Directive44(argument97 : ["stringValue984"]) { + field2081: String! + field2082: String! + field2083: Object325 + field2084: Enum111 +} + +type Object3270 implements Interface133 @Directive21(argument61 : "stringValue14393") @Directive44(argument97 : ["stringValue14392"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15500: Object3269! +} + +type Object3271 @Directive21(argument61 : "stringValue14395") @Directive44(argument97 : ["stringValue14394"]) { + field15501: String! + field15502: Boolean + field15503: Boolean + field15504: Boolean + field15505: Boolean + field15506: Boolean + field15507: Scalar1 + field15508: Boolean + field15509: String +} + +type Object3272 implements Interface133 @Directive21(argument61 : "stringValue14397") @Directive44(argument97 : ["stringValue14396"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15510: Object3271! +} + +type Object3273 @Directive21(argument61 : "stringValue14399") @Directive44(argument97 : ["stringValue14398"]) { + field15511: [Object3266] +} + +type Object3274 implements Interface133 @Directive21(argument61 : "stringValue14401") @Directive44(argument97 : ["stringValue14400"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15512: Object3273! +} + +type Object3275 implements Interface133 @Directive21(argument61 : "stringValue14403") @Directive44(argument97 : ["stringValue14402"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] +} + +type Object3276 @Directive21(argument61 : "stringValue14405") @Directive44(argument97 : ["stringValue14404"]) { + field15513: Int! + field15514: Int! +} + +type Object3277 implements Interface133 @Directive21(argument61 : "stringValue14407") @Directive44(argument97 : ["stringValue14406"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15515: Object3276! +} + +type Object3278 @Directive21(argument61 : "stringValue14409") @Directive44(argument97 : ["stringValue14408"]) { + field15516: Int + field15517: Boolean + field15518: Boolean + field15519: Boolean + field15520: String +} + +type Object3279 implements Interface133 @Directive21(argument61 : "stringValue14411") @Directive44(argument97 : ["stringValue14410"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15521: Object3278! +} + +type Object328 @Directive21(argument61 : "stringValue987") @Directive44(argument97 : ["stringValue986"]) { + field2085: String! + field2086: String! + field2087: Object325 + field2088: Enum111 +} + +type Object3280 @Directive21(argument61 : "stringValue14413") @Directive44(argument97 : ["stringValue14412"]) { + field15522: String + field15523: Int +} + +type Object3281 implements Interface133 @Directive21(argument61 : "stringValue14415") @Directive44(argument97 : ["stringValue14414"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15524: Object3280! +} + +type Object3282 @Directive21(argument61 : "stringValue14417") @Directive44(argument97 : ["stringValue14416"]) { + field15525: String + field15526: String + field15527: String + field15528: Boolean + field15529: Boolean + field15530: Boolean + field15531: Boolean + field15532: Boolean + field15533: Boolean + field15534: Boolean +} + +type Object3283 implements Interface133 @Directive21(argument61 : "stringValue14419") @Directive44(argument97 : ["stringValue14418"]) { + field14660: String! + field14661: [String] + field14662: Scalar1 + field14663: String + field14664: String! + field14665: Scalar1 + field14666: String + field14667: Object3052 + field14668: [Object3053] + field15265: Object3188! + field15535: Object3282! +} + +type Object3284 implements Interface134 @Directive21(argument61 : "stringValue14421") @Directive44(argument97 : ["stringValue14420"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 +} + +type Object3285 implements Interface134 @Directive21(argument61 : "stringValue14423") @Directive44(argument97 : ["stringValue14422"]) { + field14675: String! + field14676: [String] + field14677: Scalar1 + field14678: String + field14679: String! + field14680: Scalar1 + field14681: String + field14682: Object3052 + field14683: [Object3053] + field14684: Object3057 + field15241: Object3181 +} + +type Object3286 implements Interface136 @Directive21(argument61 : "stringValue14430") @Directive44(argument97 : ["stringValue14429"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] +} + +type Object3287 @Directive21(argument61 : "stringValue14426") @Directive44(argument97 : ["stringValue14425"]) { + field15544: String + field15545: Boolean + field15546: Scalar1 + field15547: String +} + +type Object3288 @Directive21(argument61 : "stringValue14428") @Directive44(argument97 : ["stringValue14427"]) { + field15549: String! + field15550: String! +} + +type Object3289 implements Interface136 @Directive21(argument61 : "stringValue14432") @Directive44(argument97 : ["stringValue14431"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15551: String + field15552: String +} + +type Object329 @Directive21(argument61 : "stringValue989") @Directive44(argument97 : ["stringValue988"]) { + field2089: String! + field2090: String! + field2091: Object325 + field2092: Enum111 +} + +type Object3290 implements Interface136 @Directive21(argument61 : "stringValue14434") @Directive44(argument97 : ["stringValue14433"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15553: String + field15554: String + field15555: String + field15556: String + field15557: String +} + +type Object3291 implements Interface136 @Directive21(argument61 : "stringValue14436") @Directive44(argument97 : ["stringValue14435"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15558: String + field15559: Boolean + field15560: Scalar1 +} + +type Object3292 implements Interface136 @Directive21(argument61 : "stringValue14438") @Directive44(argument97 : ["stringValue14437"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15553: String + field15561: String + field15562: String + field15563: String +} + +type Object3293 implements Interface136 @Directive21(argument61 : "stringValue14440") @Directive44(argument97 : ["stringValue14439"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15553: String + field15564: String + field15565: String + field15566: String +} + +type Object3294 implements Interface136 @Directive21(argument61 : "stringValue14442") @Directive44(argument97 : ["stringValue14441"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15567: Scalar1 +} + +type Object3295 implements Interface136 @Directive21(argument61 : "stringValue14444") @Directive44(argument97 : ["stringValue14443"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15563: String + field15568: String + field15569: String + field15570: [String] + field15571: String + field15572: Scalar1 + field15573: String +} + +type Object3296 implements Interface136 @Directive21(argument61 : "stringValue14446") @Directive44(argument97 : ["stringValue14445"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15563: String + field15566: String +} + +type Object3297 implements Interface136 @Directive21(argument61 : "stringValue14448") @Directive44(argument97 : ["stringValue14447"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15574: String + field15575: String +} + +type Object3298 @Directive21(argument61 : "stringValue14450") @Directive44(argument97 : ["stringValue14449"]) { + field15576: Int + field15577: Int +} + +type Object3299 implements Interface136 @Directive21(argument61 : "stringValue14452") @Directive44(argument97 : ["stringValue14451"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15556: String + field15560: Scalar1 + field15566: String + field15578: String + field15579: String + field15580: Object3298 + field15581: String +} + +type Object33 @Directive21(argument61 : "stringValue213") @Directive44(argument97 : ["stringValue212"]) { + field193: String +} + +type Object330 @Directive21(argument61 : "stringValue991") @Directive44(argument97 : ["stringValue990"]) { + field2098: String! + field2099: String! + field2100: Enum111 +} + +type Object3300 implements Interface136 @Directive21(argument61 : "stringValue14454") @Directive44(argument97 : ["stringValue14453"]) { + field15536: String! + field15537: [String] + field15538: Scalar1 + field15539: String + field15540: String! + field15541: Scalar1 + field15542: String + field15543: Object3287 + field15548: [Object3288] + field15553: String + field15567: Scalar1 + field15582: Object3301 + field15591: Enum658 +} + +type Object3301 @Directive21(argument61 : "stringValue14456") @Directive44(argument97 : ["stringValue14455"]) { + field15583: String + field15584: String + field15585: Scalar1 @deprecated + field15586: String + field15587: String + field15588: Int + field15589: Scalar1 + field15590: Int +} + +type Object3302 implements Interface90 @Directive20(argument58 : "stringValue14459", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue14458") @Directive31 @Directive44(argument97 : ["stringValue14460", "stringValue14461"]) { + field15592: [Object1545!]! + field8325: Boolean @deprecated +} + +type Object3303 implements Interface3 @Directive20(argument58 : "stringValue14463", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14462") @Directive31 @Directive44(argument97 : ["stringValue14464", "stringValue14465"]) { + field2252: String! + field2253: ID + field2254: Interface3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3304 implements Interface3 @Directive20(argument58 : "stringValue14467", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14466") @Directive31 @Directive44(argument97 : ["stringValue14468", "stringValue14469"]) { + field15593: String @deprecated + field15594: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3305 implements Interface3 @Directive22(argument62 : "stringValue14470") @Directive31 @Directive44(argument97 : ["stringValue14471", "stringValue14472"]) { + field15595: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3306 implements Interface3 @Directive22(argument62 : "stringValue14473") @Directive31 @Directive44(argument97 : ["stringValue14474", "stringValue14475"]) { + field15596: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3307 implements Interface3 @Directive22(argument62 : "stringValue14476") @Directive31 @Directive44(argument97 : ["stringValue14477", "stringValue14478"]) { + field15597: Object396! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3308 implements Interface3 @Directive20(argument58 : "stringValue14480", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14479") @Directive31 @Directive44(argument97 : ["stringValue14481", "stringValue14482"]) { + field15598: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3309 implements Interface3 @Directive22(argument62 : "stringValue14483") @Directive31 @Directive44(argument97 : ["stringValue14484", "stringValue14485"]) { + field15599: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object331 @Directive21(argument61 : "stringValue993") @Directive44(argument97 : ["stringValue992"]) { + field2101: String! + field2102: Enum111 +} + +type Object3310 implements Interface3 @Directive20(argument58 : "stringValue14487", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14486") @Directive31 @Directive44(argument97 : ["stringValue14488", "stringValue14489"]) { + field13712: ID + field15593: String @deprecated + field15594: ID + field15600: String + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object3311 implements Interface3 @Directive22(argument62 : "stringValue14490") @Directive31 @Directive44(argument97 : ["stringValue14491", "stringValue14492"]) { + field15599: String + field15601: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3312 implements Interface3 @Directive20(argument58 : "stringValue14494", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14493") @Directive31 @Directive44(argument97 : ["stringValue14495", "stringValue14496"]) { + field15593: String @deprecated + field15594: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3313 implements Interface3 @Directive20(argument58 : "stringValue14498", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14497") @Directive31 @Directive44(argument97 : ["stringValue14499", "stringValue14500"]) { + field15593: String @deprecated + field15594: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3314 implements Interface3 @Directive22(argument62 : "stringValue14501") @Directive31 @Directive44(argument97 : ["stringValue14502", "stringValue14503"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8403: String +} + +type Object3315 implements Interface3 @Directive22(argument62 : "stringValue14504") @Directive31 @Directive44(argument97 : ["stringValue14505", "stringValue14506"]) { + field15593: String + field15602: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3316 implements Interface3 @Directive20(argument58 : "stringValue14508", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14507") @Directive31 @Directive44(argument97 : ["stringValue14509", "stringValue14510"]) { + field15603: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3317 implements Interface3 @Directive22(argument62 : "stringValue14511") @Directive31 @Directive44(argument97 : ["stringValue14512", "stringValue14513"]) { + field15604: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3318 implements Interface3 @Directive22(argument62 : "stringValue14514") @Directive31 @Directive44(argument97 : ["stringValue14515", "stringValue14516"]) { + field15605: Float + field15606: Float + field15607: String + field15608: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3319 implements Interface3 @Directive22(argument62 : "stringValue14517") @Directive31 @Directive44(argument97 : ["stringValue14518", "stringValue14519"]) { + field15609: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object332 @Directive21(argument61 : "stringValue995") @Directive44(argument97 : ["stringValue994"]) { + field2103: String! + field2104: Enum111 +} + +type Object3320 implements Interface3 @Directive20(argument58 : "stringValue14521", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14520") @Directive31 @Directive44(argument97 : ["stringValue14522", "stringValue14523"]) { + field15610: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3321 implements Interface3 @Directive22(argument62 : "stringValue14524") @Directive31 @Directive44(argument97 : ["stringValue14525", "stringValue14526"]) { + field15611: String + field15612: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3322 implements Interface3 @Directive22(argument62 : "stringValue14527") @Directive31 @Directive44(argument97 : ["stringValue14528", "stringValue14529"]) { + field15613: Enum659 + field2223: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3323 implements Interface3 @Directive22(argument62 : "stringValue14533") @Directive31 @Directive44(argument97 : ["stringValue14534", "stringValue14535"]) { + field15613: Enum659 + field15614: Enum660 + field2223: String + field4: Object1 + field7293: String + field74: String + field75: Scalar1 +} + +type Object3324 implements Interface3 @Directive20(argument58 : "stringValue14540", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14539") @Directive31 @Directive44(argument97 : ["stringValue14541", "stringValue14542"]) { + field15610: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3325 implements Interface3 @Directive22(argument62 : "stringValue14543") @Directive31 @Directive44(argument97 : ["stringValue14544", "stringValue14545"]) { + field15615: String + field4: Object1 + field74: String + field75: Scalar1 + field8403: String +} + +type Object3326 implements Interface3 @Directive22(argument62 : "stringValue14546") @Directive31 @Directive44(argument97 : ["stringValue14547", "stringValue14548"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3327 implements Interface3 @Directive22(argument62 : "stringValue14549") @Directive31 @Directive44(argument97 : ["stringValue14550", "stringValue14551"]) { + field15616: String + field15617: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3328 implements Interface3 @Directive22(argument62 : "stringValue14552") @Directive31 @Directive44(argument97 : ["stringValue14553", "stringValue14554"]) { + field15599: String + field15618: Boolean + field15619: Boolean + field15620: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3329 implements Interface3 @Directive22(argument62 : "stringValue14555") @Directive31 @Directive44(argument97 : ["stringValue14556", "stringValue14557"]) { + field15607: String + field15621: Object754 + field15622: String + field15623: String + field4: Object1 + field74: String + field75: Scalar1 + field8403: Scalar2 @deprecated +} + +type Object333 @Directive21(argument61 : "stringValue997") @Directive44(argument97 : ["stringValue996"]) { + field2105: Enum112 + field2106: Enum113 + field2107: Int @deprecated + field2108: Int @deprecated + field2109: Object16 +} + +type Object3330 implements Interface3 @Directive22(argument62 : "stringValue14558") @Directive31 @Directive44(argument97 : ["stringValue14559", "stringValue14560"]) { + field15624: Object2505 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3331 implements Interface3 @Directive22(argument62 : "stringValue14561") @Directive31 @Directive44(argument97 : ["stringValue14562", "stringValue14563"]) { + field15625: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3332 implements Interface3 @Directive22(argument62 : "stringValue14564") @Directive31 @Directive44(argument97 : ["stringValue14565", "stringValue14566"]) { + field15610: Scalar2 @deprecated + field15626: Enum661 + field15627: Int + field15628: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3333 implements Interface3 @Directive20(argument58 : "stringValue14571", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14570") @Directive31 @Directive44(argument97 : ["stringValue14572", "stringValue14573"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object3334 implements Interface3 @Directive22(argument62 : "stringValue14574") @Directive31 @Directive44(argument97 : ["stringValue14575", "stringValue14576"]) { + field15629: [Object2762] + field15630: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3335 implements Interface3 @Directive22(argument62 : "stringValue14577") @Directive31 @Directive44(argument97 : ["stringValue14578", "stringValue14579"]) @Directive45(argument98 : ["stringValue14580"]) { + field15631: String + field15632: Enum662 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3336 implements Interface3 @Directive20(argument58 : "stringValue14586", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14583") @Directive31 @Directive44(argument97 : ["stringValue14584", "stringValue14585"]) { + field15633: Object2772! + field2223: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3337 implements Interface3 @Directive22(argument62 : "stringValue14587") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue14588", "stringValue14589"]) { + field15634: String! @Directive30(argument80 : true) @Directive39 + field15635: Scalar2! @Directive30(argument80 : true) @Directive39 + field2254: Interface3 @Directive30(argument80 : true) @Directive39 + field4: Object1 @Directive30(argument80 : true) @Directive39 + field74: String @Directive30(argument80 : true) @Directive39 + field75: Scalar1 @Directive30(argument80 : true) @Directive39 +} + +type Object3338 implements Interface3 @Directive22(argument62 : "stringValue14590") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue14591", "stringValue14592"]) { + field15636: String + field15637: ID + field15638: Enum663 + field15639: [Object2940] + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3339 implements Interface3 @Directive20(argument58 : "stringValue14597", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14596") @Directive31 @Directive44(argument97 : ["stringValue14598", "stringValue14599"]) { + field13712: ID! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object334 @Directive21(argument61 : "stringValue1002") @Directive44(argument97 : ["stringValue1001"]) { + field2110: String! + field2111: String + field2112: Enum111 +} + +type Object3340 implements Interface3 @Directive22(argument62 : "stringValue14600") @Directive31 @Directive44(argument97 : ["stringValue14601", "stringValue14602"]) { + field15640: String + field15641: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3341 implements Interface3 @Directive22(argument62 : "stringValue14603") @Directive31 @Directive44(argument97 : ["stringValue14604", "stringValue14605"]) { + field15640: Scalar2 + field15641: Enum664 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3342 implements Interface3 @Directive22(argument62 : "stringValue14609") @Directive31 @Directive44(argument97 : ["stringValue14610", "stringValue14611"]) { + field15641: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3343 implements Interface3 @Directive22(argument62 : "stringValue14612") @Directive31 @Directive44(argument97 : ["stringValue14613", "stringValue14614"]) { + field15642: [Object2505] + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3344 implements Interface3 @Directive20(argument58 : "stringValue14616", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14615") @Directive31 @Directive44(argument97 : ["stringValue14617", "stringValue14618"]) { + field15593: String @deprecated + field15594: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3345 implements Interface3 @Directive22(argument62 : "stringValue14619") @Directive31 @Directive44(argument97 : ["stringValue14620", "stringValue14621"]) { + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3346 implements Interface3 @Directive22(argument62 : "stringValue14622") @Directive31 @Directive44(argument97 : ["stringValue14623", "stringValue14624"]) { + field15643: [Interface14!]! @Directive37(argument95 : "stringValue14626") + field15644: [Object1543!]! @Directive37(argument95 : "stringValue14627") + field4: Object1 @Directive37(argument95 : "stringValue14628") + field74: String @Directive37(argument95 : "stringValue14625") + field75: Scalar1 @Directive37(argument95 : "stringValue14629") +} + +type Object3347 implements Interface3 @Directive22(argument62 : "stringValue14630") @Directive31 @Directive44(argument97 : ["stringValue14631", "stringValue14632"]) @Directive45(argument98 : ["stringValue14633"]) { + field15631: String + field15632: Enum662 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3348 implements Interface3 @Directive22(argument62 : "stringValue14634") @Directive31 @Directive44(argument97 : ["stringValue14635", "stringValue14636"]) { + field15645: String + field15646: String + field15647: String + field15648: Enum401 + field15649: Int + field15650: Int + field15651: Int + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3349 implements Interface3 @Directive22(argument62 : "stringValue14637") @Directive31 @Directive44(argument97 : ["stringValue14638", "stringValue14639"]) { + field15645: String + field15646: String + field15647: String + field15648: Enum401 + field15649: Int + field15650: Int + field15651: Int + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object335 @Directive21(argument61 : "stringValue1004") @Directive44(argument97 : ["stringValue1003"]) { + field2113: String + field2114: Object16 + field2115: Enum114 + field2116: Enum111 +} + +type Object3350 implements Interface3 @Directive22(argument62 : "stringValue14640") @Directive31 @Directive44(argument97 : ["stringValue14641", "stringValue14642"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3351 implements Interface3 @Directive22(argument62 : "stringValue14643") @Directive31 @Directive44(argument97 : ["stringValue14644", "stringValue14645"]) { + field4: Object1 + field74: String + field75: Scalar1 + field8402: String + field8403: ID +} + +type Object3352 implements Interface3 @Directive22(argument62 : "stringValue14646") @Directive31 @Directive44(argument97 : ["stringValue14647", "stringValue14648"]) { + field15652: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3353 implements Interface3 @Directive22(argument62 : "stringValue14649") @Directive31 @Directive44(argument97 : ["stringValue14650", "stringValue14651"]) { + field15653: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3354 implements Interface3 @Directive22(argument62 : "stringValue14652") @Directive31 @Directive44(argument97 : ["stringValue14653", "stringValue14654"]) { + field15632: String + field15654: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3355 implements Interface3 @Directive20(argument58 : "stringValue14658", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14655") @Directive31 @Directive44(argument97 : ["stringValue14656", "stringValue14657"]) { + field15655: Object3356! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3356 @Directive20(argument58 : "stringValue14662", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14659") @Directive31 @Directive44(argument97 : ["stringValue14660", "stringValue14661"]) { + field15656: String + field15657: [Object1378!] + field15658: Object1 + field15659: Object1 + field15660: Object1 + field15661: Object1 + field15662: Object1 +} + +type Object3357 implements Interface3 @Directive20(argument58 : "stringValue14664", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14663") @Directive31 @Directive44(argument97 : ["stringValue14665", "stringValue14666"]) { + field15593: String @deprecated + field15594: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3358 implements Interface3 @Directive20(argument58 : "stringValue14668", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14667") @Directive31 @Directive44(argument97 : ["stringValue14669", "stringValue14670"]) { + field2265: Object398 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3359 implements Interface3 @Directive22(argument62 : "stringValue14671") @Directive31 @Directive44(argument97 : ["stringValue14672", "stringValue14673"]) { + field11722: Scalar2 + field15645: String + field15646: String + field15647: String + field15649: Int + field15650: Int + field15651: Int + field15663: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object336 @Directive21(argument61 : "stringValue1007") @Directive44(argument97 : ["stringValue1006"]) { + field2117: String + field2118: String! + field2119: String! + field2120: String + field2121: Object337 + field2126: Object338 +} + +type Object3360 implements Interface3 @Directive20(argument58 : "stringValue14677", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14674") @Directive31 @Directive44(argument97 : ["stringValue14675", "stringValue14676"]) { + field15645: String + field15646: String + field15649: Int + field15650: Int + field15651: Int + field4: Object1 + field74: String + field75: Scalar1 + field8403: String +} + +type Object3361 implements Interface3 @Directive22(argument62 : "stringValue14678") @Directive31 @Directive44(argument97 : ["stringValue14679", "stringValue14680"]) { + field15623: String + field15664: String + field4: Object1 + field74: String + field75: Scalar1 + field8403: Scalar2 @deprecated +} + +type Object3362 implements Interface3 @Directive22(argument62 : "stringValue14681") @Directive31 @Directive44(argument97 : ["stringValue14682", "stringValue14683"]) { + field15665: Object2504 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3363 implements Interface3 @Directive22(argument62 : "stringValue14684") @Directive31 @Directive44(argument97 : ["stringValue14685", "stringValue14686"]) { + field15666: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3364 implements Interface3 @Directive22(argument62 : "stringValue14687") @Directive31 @Directive44(argument97 : ["stringValue14688", "stringValue14689"]) { + field15593: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3365 implements Interface3 @Directive20(argument58 : "stringValue14690", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14691") @Directive31 @Directive44(argument97 : ["stringValue14692", "stringValue14693"]) { + field15667: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3366 implements Interface3 @Directive22(argument62 : "stringValue14694") @Directive31 @Directive44(argument97 : ["stringValue14695", "stringValue14696"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3367 implements Interface3 @Directive22(argument62 : "stringValue14697") @Directive31 @Directive44(argument97 : ["stringValue14698", "stringValue14699"]) { + field15668: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3368 implements Interface3 @Directive22(argument62 : "stringValue14700") @Directive31 @Directive44(argument97 : ["stringValue14701", "stringValue14702"]) { + field15669: String + field15670: String + field15671: String + field15672: Scalar2 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3369 @Directive20(argument58 : "stringValue14704", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14703") @Directive31 @Directive44(argument97 : ["stringValue14705", "stringValue14706"]) { + field15673: Object503 + field15674: String + field15675: [String!] +} + +type Object337 @Directive21(argument61 : "stringValue1009") @Directive44(argument97 : ["stringValue1008"]) { + field2122: [Union76] + field2123: String + field2124: String + field2125: String +} + +type Object3370 implements Interface83 @Directive22(argument62 : "stringValue14707") @Directive31 @Directive44(argument97 : ["stringValue14708", "stringValue14709"]) { + field14320: String + field15676: String + field7153: String +} + +type Object3371 implements Interface3 @Directive22(argument62 : "stringValue14710") @Directive31 @Directive44(argument97 : ["stringValue14711", "stringValue14712"]) { + field2252: String! + field2253: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3372 implements Interface51 @Directive22(argument62 : "stringValue14713") @Directive31 @Directive44(argument97 : ["stringValue14714", "stringValue14715"]) { + field15677: Object450 + field15678: Object450 + field15679: String + field4117: Interface3 + field4118: Object1 + field4119: String! + field4123: Interface6 + field4126: String +} + +type Object3373 implements Interface3 @Directive20(argument58 : "stringValue14717", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14716") @Directive31 @Directive44(argument97 : ["stringValue14718", "stringValue14719"]) { + field15593: String @deprecated + field15594: ID + field15680: String! + field15681: String! + field15682: String + field15683: String! + field15684: String + field15685: Boolean! + field15686: Int! + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID! +} + +type Object3374 implements Interface3 @Directive20(argument58 : "stringValue14721", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14720") @Directive31 @Directive44(argument97 : ["stringValue14722", "stringValue14723"]) { + field15645: Scalar3 + field15646: Scalar3 + field15687: Scalar3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3375 implements Interface3 @Directive22(argument62 : "stringValue14724") @Directive31 @Directive44(argument97 : ["stringValue14725", "stringValue14726"]) { + field15680: Scalar3 + field15681: Scalar3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3376 implements Interface3 @Directive20(argument58 : "stringValue14728", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14727") @Directive31 @Directive44(argument97 : ["stringValue14729", "stringValue14730"]) { + field15680: String! + field15681: String! + field15683: String! + field15688: ID! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3377 implements Interface3 @Directive20(argument58 : "stringValue14732", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14731") @Directive31 @Directive44(argument97 : ["stringValue14733", "stringValue14734"]) { + field13712: ID + field15593: String @deprecated + field15594: ID + field15680: String! + field15681: String! + field15683: String! + field15689: ID! + field15690: String + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID! +} + +type Object3378 implements Interface3 @Directive22(argument62 : "stringValue14735") @Directive31 @Directive44(argument97 : ["stringValue14736", "stringValue14737"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3379 implements Interface3 @Directive20(argument58 : "stringValue14739", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14738") @Directive31 @Directive44(argument97 : ["stringValue14740", "stringValue14741"]) { + field11722: ID! + field13712: ID! + field15680: String! + field15681: String! + field15683: String! + field15684: String + field15685: Boolean! + field15686: Int! + field15691: Int! + field15692: String! + field15693: String + field15694: ID! + field15695: ID + field15696: ID + field15697: Int + field15698: String! + field15699: Int! + field15700: ID! + field15701: Boolean! + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID! +} + +type Object338 @Directive21(argument61 : "stringValue1011") @Directive44(argument97 : ["stringValue1010"]) { + field2127: String! + field2128: String! + field2129: String! +} + +type Object3380 implements Interface3 @Directive20(argument58 : "stringValue14743", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14742") @Directive31 @Directive44(argument97 : ["stringValue14744", "stringValue14745"]) { + field15683: String! + field15694: ID! + field15702: String! + field15703: Boolean! + field15704: Boolean! + field15705: Int + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object3381 implements Interface3 @Directive20(argument58 : "stringValue14747", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14746") @Directive31 @Directive44(argument97 : ["stringValue14748", "stringValue14749"]) { + field15691: Int! + field15706: Boolean! + field15707: String! + field15708: [Object2243]! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3382 @Directive22(argument62 : "stringValue14750") @Directive31 @Directive44(argument97 : ["stringValue14751", "stringValue14752"]) { + field15709: ID! + field15710: String + field15711: [Enum164] + field15712: String + field15713: [String] +} + +type Object3383 implements Interface3 @Directive22(argument62 : "stringValue14753") @Directive31 @Directive44(argument97 : ["stringValue14754", "stringValue14755"]) { + field15714: Object474 + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3384 implements Interface3 @Directive22(argument62 : "stringValue14756") @Directive31 @Directive44(argument97 : ["stringValue14757", "stringValue14758"]) { + field15714: Object474 + field15715: Object600 + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3385 implements Interface3 @Directive22(argument62 : "stringValue14759") @Directive31 @Directive44(argument97 : ["stringValue14760", "stringValue14761"]) { + field15716: Object452 + field15717: Object452 + field2287: String + field2288: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3386 implements Interface3 @Directive20(argument58 : "stringValue14763", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14762") @Directive31 @Directive44(argument97 : ["stringValue14764", "stringValue14765"]) { + field15694: ID! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3387 implements Interface3 @Directive22(argument62 : "stringValue14766") @Directive31 @Directive44(argument97 : ["stringValue14767", "stringValue14768"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3388 implements Interface3 @Directive20(argument58 : "stringValue14770", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14769") @Directive31 @Directive44(argument97 : ["stringValue14771", "stringValue14772"]) { + field15694: ID! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3389 implements Interface3 @Directive20(argument58 : "stringValue14774", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14773") @Directive31 @Directive44(argument97 : ["stringValue14775", "stringValue14776"]) { + field13712: ID! + field15680: String! + field15681: String! + field15683: String! + field15686: Int! + field15691: Int! + field15718: Boolean! + field15719: Boolean! + field15720: Boolean! + field15721: String + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID! +} + +type Object339 @Directive21(argument61 : "stringValue1013") @Directive44(argument97 : ["stringValue1012"]) { + field2130: String! + field2131: String! + field2132: String! + field2133: String + field2134: Boolean + field2135: Enum111 +} + +type Object3390 implements Interface3 @Directive20(argument58 : "stringValue14778", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14777") @Directive31 @Directive44(argument97 : ["stringValue14779", "stringValue14780"]) { + field13712: ID! + field15680: String! + field15681: String! + field15683: String! + field15684: String + field15685: Boolean! + field15686: Int! + field15691: Int! + field15694: ID! + field15698: String! + field15699: Int! + field15700: ID! + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object3391 implements Interface3 @Directive20(argument58 : "stringValue14782", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14781") @Directive31 @Directive44(argument97 : ["stringValue14783", "stringValue14784"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3392 implements Interface3 @Directive20(argument58 : "stringValue14786", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14785") @Directive31 @Directive44(argument97 : ["stringValue14787", "stringValue14788"]) { + field11722: ID! + field13712: ID! + field15680: String! + field15681: String! + field15683: String! + field15684: String + field15697: Int + field15701: Boolean! + field15722: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3393 implements Interface3 @Directive22(argument62 : "stringValue14789") @Directive31 @Directive44(argument97 : ["stringValue14790", "stringValue14791"]) { + field15723: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3394 implements Interface3 @Directive22(argument62 : "stringValue14792") @Directive31 @Directive44(argument97 : ["stringValue14793", "stringValue14794"]) { + field15724: Int + field15725: String + field15726: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3395 implements Interface3 @Directive22(argument62 : "stringValue14795") @Directive31 @Directive44(argument97 : ["stringValue14796", "stringValue14797"]) { + field15726: String + field15727: Int + field15728: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3396 implements Interface80 @Directive22(argument62 : "stringValue14798") @Directive31 @Directive44(argument97 : ["stringValue14799", "stringValue14800"]) { + field4775: [Object595!] + field4776: Interface3 + field6628: String @Directive1 @deprecated + field76: Object595 + field77: Object595 + field78: String +} + +type Object3397 implements Interface80 @Directive22(argument62 : "stringValue14801") @Directive31 @Directive44(argument97 : ["stringValue14802", "stringValue14803"]) { + field13780: Object474 + field15729: Object3398 + field6628: String @Directive1 @deprecated +} + +type Object3398 @Directive22(argument62 : "stringValue14804") @Directive31 @Directive44(argument97 : ["stringValue14805", "stringValue14806"]) { + field15730: Object506 + field15731: Object504 + field15732: Int + field15733: Int + field15734: Int + field15735: Int + field15736: Object10 + field15737: Enum166 + field15738: Int +} + +type Object3399 implements Interface12 @Directive22(argument62 : "stringValue14807") @Directive31 @Directive44(argument97 : ["stringValue14808", "stringValue14809"]) { + field120: String! @Directive37(argument95 : "stringValue14814") + field15739: Enum665! + field15740: Boolean @Directive37(argument95 : "stringValue14813") +} + +type Object34 @Directive21(argument61 : "stringValue216") @Directive44(argument97 : ["stringValue215"]) { + field194: String + field195: String + field196: Object35 + field218: String +} + +type Object340 @Directive21(argument61 : "stringValue1015") @Directive44(argument97 : ["stringValue1014"]) { + field2136: String! + field2137: String! + field2138: String + field2139: Boolean + field2140: Enum111 +} + +type Object3400 implements Interface90 @Directive22(argument62 : "stringValue14815") @Directive31 @Directive44(argument97 : ["stringValue14816", "stringValue14817"]) { + field15741: [Object3399!]! @Directive37(argument95 : "stringValue14818") + field15742: Object1770 @Directive37(argument95 : "stringValue14819") + field8325: Boolean +} + +type Object3401 implements Interface3 @Directive22(argument62 : "stringValue14820") @Directive31 @Directive44(argument97 : ["stringValue14821", "stringValue14822"]) { + field15743: String + field15744: [Object3402!] + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3402 @Directive22(argument62 : "stringValue14823") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue14824", "stringValue14825"]) { + field15745: String! @Directive30(argument80 : true) @Directive41 + field15746: String @Directive30(argument80 : true) @Directive41 + field15747: Enum666! @Directive30(argument80 : true) @Directive41 + field15748: Object3403 @Directive30(argument80 : true) @Directive39 + field15756: [Object3402!] @Directive30(argument80 : true) @Directive41 +} + +type Object3403 @Directive22(argument62 : "stringValue14829") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue14830", "stringValue14831"]) { + field15749: Enum333! @Directive30(argument80 : true) @Directive41 + field15750: Boolean @Directive30(argument80 : true) @Directive41 + field15751: String @Directive30(argument80 : true) @Directive39 + field15752: Float @Directive30(argument80 : true) @Directive41 + field15753: ID @Directive30(argument80 : true) @Directive41 + field15754: Scalar3 @Directive30(argument80 : true) @Directive41 + field15755: [String] @Directive30(argument80 : true) @Directive39 +} + +type Object3404 implements Interface38 @Directive22(argument62 : "stringValue14832") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue14833", "stringValue14834"]) { + field15757: Int @Directive30(argument80 : true) @Directive41 + field2436: String @Directive30(argument80 : true) @Directive41 + field2437: Enum133 @Directive30(argument80 : true) @Directive41 + field2438: Object438 @Directive30(argument80 : true) @Directive41 +} + +type Object3405 implements Interface38 @Directive22(argument62 : "stringValue14835") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue14836", "stringValue14837"]) { + field2436: String @Directive30(argument80 : true) @Directive41 +} + +type Object3406 implements Interface137 @Directive22(argument62 : "stringValue14844") @Directive31 @Directive44(argument97 : ["stringValue14845", "stringValue14846"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15765: Scalar2 + field15766: String + field15767: String + field15768: String + field15769: Object829 + field15770: [Object830] @deprecated + field15771: Object829 + field15772: [Object830] @deprecated + field15773: Int + field15774: Int +} + +type Object3407 @Directive22(argument62 : "stringValue14847") @Directive31 @Directive44(argument97 : ["stringValue14848", "stringValue14849"]) { + field15775: Int + field15776: Int + field15777: String +} + +type Object3408 implements Interface137 @Directive22(argument62 : "stringValue14850") @Directive31 @Directive44(argument97 : ["stringValue14851", "stringValue14852"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15765: Scalar2 + field15778: Object524 + field15779: Enum175 + field15780: Int + field15781: Int + field15782: String + field15783: String + field15784: [Object3409] @deprecated + field15795: [Object3410] + field15802: Object571 + field15803: Object452 +} + +type Object3409 @Directive22(argument62 : "stringValue14853") @Directive42(argument96 : ["stringValue14854", "stringValue14855"]) @Directive44(argument97 : ["stringValue14856", "stringValue14857", "stringValue14858"]) { + field15785: Int + field15786: Int + field15787: Int + field15788: Enum668! + field15789: Enum669! + field15790: Float! + field15791: Scalar4 + field15792: Scalar4 + field15793: Int + field15794: Int +} + +type Object341 @Directive21(argument61 : "stringValue1018") @Directive44(argument97 : ["stringValue1017"]) { + field2141: String! + field2142: String! + field2143: String! +} + +type Object3410 @Directive22(argument62 : "stringValue14869") @Directive31 @Directive44(argument97 : ["stringValue14870", "stringValue14871"]) { + field15796: String + field15797: String + field15798: Float + field15799: Int + field15800: Int + field15801: Int +} + +type Object3411 @Directive22(argument62 : "stringValue14872") @Directive31 @Directive44(argument97 : ["stringValue14873", "stringValue14874"]) { + field15804: Int + field15805: Int +} + +type Object3412 implements Interface137 @Directive22(argument62 : "stringValue14875") @Directive31 @Directive44(argument97 : ["stringValue14876", "stringValue14877"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15765: Scalar2 + field15806: Int + field15807: String @deprecated + field15808: String + field15809: String + field15810: Object3411 + field15811: Boolean + field15812: Boolean +} + +type Object3413 implements Interface137 @Directive22(argument62 : "stringValue14878") @Directive31 @Directive44(argument97 : ["stringValue14879", "stringValue14880"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15778: Object524 + field15783: String + field15802: Object571 + field15813: Object3407 +} + +type Object3414 implements Interface137 @Directive22(argument62 : "stringValue14881") @Directive31 @Directive44(argument97 : ["stringValue14882", "stringValue14883"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15765: Scalar2 + field15814: Scalar3 + field15815: Scalar3 + field15816: [Scalar3] +} + +type Object3415 implements Interface137 @Directive22(argument62 : "stringValue14884") @Directive31 @Directive44(argument97 : ["stringValue14885", "stringValue14886"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15765: Scalar2 + field15806: Int @deprecated + field15807: String @deprecated + field15808: String + field15809: String + field15810: Object3411 @deprecated + field15811: Boolean + field15812: Boolean + field15817: Enum670 + field15818: Int + field15819: Object3411 +} + +type Object3416 implements Interface137 @Directive22(argument62 : "stringValue14890") @Directive31 @Directive44(argument97 : ["stringValue14891", "stringValue14892"]) { + field15758: Enum667 + field15759: String + field15760: String + field15761: String + field15762: Object452 + field15763: Object452 + field15764: Object1 + field15778: Object524 + field15783: String + field15802: Object571 + field15820: Object3407 +} + +type Object3417 implements Interface3 @Directive22(argument62 : "stringValue14893") @Directive31 @Directive44(argument97 : ["stringValue14894", "stringValue14895"]) { + field15744: [Object3402!] + field2252: String! + field2253: ID + field2254: Interface3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3418 implements Interface3 @Directive22(argument62 : "stringValue14896") @Directive31 @Directive44(argument97 : ["stringValue14897", "stringValue14898"]) { + field15680: Scalar3 + field15681: Scalar3 + field4: Object1 + field74: String + field75: Scalar1 + field8403: ID +} + +type Object3419 @Directive42(argument96 : ["stringValue14899", "stringValue14900", "stringValue14901"]) @Directive44(argument97 : ["stringValue14902", "stringValue14903"]) { + field15821: Object3420 + field15887: Object2761 +} + +type Object342 @Directive21(argument61 : "stringValue1021") @Directive44(argument97 : ["stringValue1020"]) { + field2144: [Object343] +} + +type Object3420 implements Interface36 @Directive22(argument62 : "stringValue14904") @Directive42(argument96 : ["stringValue14905", "stringValue14906"]) @Directive44(argument97 : ["stringValue14913", "stringValue14914"]) @Directive7(argument11 : "stringValue14912", argument13 : "stringValue14908", argument14 : "stringValue14909", argument15 : "stringValue14911", argument16 : "stringValue14910", argument17 : "stringValue14907") { + field15822: String @Directive3(argument2 : "stringValue14916", argument3 : "stringValue14915") + field15823: Int @Directive3(argument2 : "stringValue14918", argument3 : "stringValue14917") + field15824: Object3421 @Directive3(argument2 : "stringValue14920", argument3 : "stringValue14919") + field15828: Object3421 @Directive3(argument2 : "stringValue14927", argument3 : "stringValue14926") + field15829: Object3421 @Directive3(argument2 : "stringValue14929", argument3 : "stringValue14928") + field15830: Object3421 @Directive3(argument2 : "stringValue14931", argument3 : "stringValue14930") + field15831: Object3421 @Directive3(argument2 : "stringValue14933", argument3 : "stringValue14932") + field15832: Float @Directive3(argument2 : "stringValue14935", argument3 : "stringValue14934") + field15833: Float @Directive3(argument2 : "stringValue14937", argument3 : "stringValue14936") + field15834: Int @Directive3(argument2 : "stringValue14939", argument3 : "stringValue14938") + field15835: Object3421 @Directive3(argument2 : "stringValue14941", argument3 : "stringValue14940") + field15836: Object3421 @Directive3(argument2 : "stringValue14943", argument3 : "stringValue14942") + field15837: Boolean @Directive3(argument2 : "stringValue14945", argument3 : "stringValue14944") + field15838: Boolean @Directive3(argument2 : "stringValue14947", argument3 : "stringValue14946") + field15839: Int @Directive3(argument2 : "stringValue14949", argument3 : "stringValue14948") + field15840: [Int] @Directive3(argument2 : "stringValue14951", argument3 : "stringValue14950") + field15841: Object3421 @Directive3(argument2 : "stringValue14953", argument3 : "stringValue14952") + field15842: Scalar4 @Directive3(argument2 : "stringValue14955", argument3 : "stringValue14954") + field15843: Scalar4 @Directive3(argument2 : "stringValue14957", argument3 : "stringValue14956") + field15844: Int @Directive3(argument2 : "stringValue14959", argument3 : "stringValue14958") + field15845: Int @Directive3(argument2 : "stringValue14961", argument3 : "stringValue14960") + field15846: Int @Directive3(argument2 : "stringValue14963", argument3 : "stringValue14962") + field15847: Scalar4 @Directive3(argument2 : "stringValue14965", argument3 : "stringValue14964") + field15848: Scalar4 @Directive3(argument2 : "stringValue14967", argument3 : "stringValue14966") + field15849: Object3422 @Directive3(argument2 : "stringValue14969", argument3 : "stringValue14968") + field15882: Object3435 @Directive3(argument2 : "stringValue15063", argument3 : "stringValue15062") + field15884: Object3436 @Directive3(argument2 : "stringValue15074", argument3 : "stringValue15073") + field2312: ID! @Directive1 +} + +type Object3421 @Directive42(argument96 : ["stringValue14921", "stringValue14922", "stringValue14923"]) @Directive44(argument97 : ["stringValue14924", "stringValue14925"]) { + field15825: Float + field15826: String! + field15827: Scalar2 +} + +type Object3422 @Directive42(argument96 : ["stringValue14970", "stringValue14971", "stringValue14972"]) @Directive44(argument97 : ["stringValue14973", "stringValue14974"]) { + field15850: [Object3423] + field15881: Scalar4 +} + +type Object3423 @Directive42(argument96 : ["stringValue14975", "stringValue14976", "stringValue14977"]) @Directive44(argument97 : ["stringValue14978", "stringValue14979", "stringValue14980"]) { + field15851: Enum671 + field15852: Enum672 + field15853: Object3424 + field15878: Enum674 + field15879: Enum675 + field15880: Boolean +} + +type Object3424 @Directive42(argument96 : ["stringValue14991", "stringValue14992", "stringValue14993"]) @Directive44(argument97 : ["stringValue14994", "stringValue14995", "stringValue14996"]) { + field15854: Scalar2 @Directive18 + field15855: Float @Directive18 + field15856: Object3425 @Directive18 + field15863: Object3428 @Directive18 + field15868: Object3431 @Directive18 + field15873: Object3433 @Directive18 + field15875: Object3434 @Directive18 +} + +type Object3425 @Directive20(argument58 : "stringValue14997", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue14998") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue14999", "stringValue15000", "stringValue15001"]) { + field15857: [Object3426!]! @Directive30(argument80 : true) @Directive41 +} + +type Object3426 @Directive20(argument58 : "stringValue15002", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15003") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15004", "stringValue15005", "stringValue15006"]) { + field15858: Object3427 @Directive30(argument80 : true) @Directive41 + field15862: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object3427 @Directive20(argument58 : "stringValue15007", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15008") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15009", "stringValue15010", "stringValue15011"]) { + field15859: Int! @Directive30(argument80 : true) @Directive41 + field15860: Int! @Directive30(argument80 : true) @Directive41 + field15861: Enum673! @Directive30(argument80 : true) @Directive41 +} + +type Object3428 @Directive20(argument58 : "stringValue15017", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15018") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15019", "stringValue15020", "stringValue15021"]) { + field15864: [Object3429!]! @Directive30(argument80 : true) @Directive41 +} + +type Object3429 @Directive20(argument58 : "stringValue15022", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15023") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15024", "stringValue15025", "stringValue15026"]) { + field15865: Object3430 @Directive30(argument80 : true) @Directive41 + field15867: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object343 @Directive21(argument61 : "stringValue1023") @Directive44(argument97 : ["stringValue1022"]) { + field2145: String + field2146: String + field2147: Enum114 + field2148: String + field2149: Object344 @deprecated + field2158: Object14 @deprecated + field2159: String + field2160: Union82 @deprecated + field2163: String + field2164: String + field2165: Object347 + field2193: Interface15 + field2194: Interface16 + field2195: Object348 + field2196: Object349 + field2197: Object349 + field2198: Object349 +} + +type Object3430 @Directive20(argument58 : "stringValue15027", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15028") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15029", "stringValue15030", "stringValue15031"]) { + field15866: Int! @Directive30(argument80 : true) @Directive41 +} + +type Object3431 @Directive20(argument58 : "stringValue15032", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15033") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15034", "stringValue15035", "stringValue15036"]) { + field15869: [Object3432!]! @Directive30(argument80 : true) @Directive41 +} + +type Object3432 @Directive20(argument58 : "stringValue15037", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15038") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15039", "stringValue15040", "stringValue15041"]) { + field15870: Object3427! @Directive30(argument80 : true) @Directive41 + field15871: Object3430! @Directive30(argument80 : true) @Directive41 + field15872: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object3433 @Directive20(argument58 : "stringValue15042", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15043") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15044", "stringValue15045", "stringValue15046"]) { + field15874: Int! @Directive30(argument80 : true) @Directive41 +} + +type Object3434 @Directive20(argument58 : "stringValue15047", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15048") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15049", "stringValue15050", "stringValue15051"]) { + field15876: Float! @Directive30(argument80 : true) @Directive41 + field15877: Int! @Directive30(argument80 : true) @Directive41 +} + +type Object3435 @Directive42(argument96 : ["stringValue15064", "stringValue15065", "stringValue15066"]) @Directive44(argument97 : ["stringValue15067", "stringValue15068"]) { + field15883: Enum676 +} + +type Object3436 @Directive22(argument62 : "stringValue15075") @Directive42(argument96 : ["stringValue15076", "stringValue15077"]) @Directive44(argument97 : ["stringValue15078", "stringValue15079"]) { + field15885: [Object3409] + field15886: Scalar4 +} + +type Object3437 implements Interface3 @Directive20(argument58 : "stringValue15081", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15080") @Directive31 @Directive44(argument97 : ["stringValue15082", "stringValue15083"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3438 implements Interface5 @Directive22(argument62 : "stringValue15084") @Directive31 @Directive44(argument97 : ["stringValue15085", "stringValue15086"]) { + field12647: Interface3 + field12648: Float + field12649: String + field76: String + field77: String + field78: String +} + +type Object3439 @Directive22(argument62 : "stringValue15087") @Directive31 @Directive44(argument97 : ["stringValue15088", "stringValue15089"]) { + field15888: String + field15889: String + field15890: Object452 +} + +type Object344 implements Interface16 @Directive21(argument61 : "stringValue1025") @Directive44(argument97 : ["stringValue1024"]) { + field146: String! + field147: Enum15 + field148: Float + field149: String + field150: Interface17 + field175: Interface15 + field2150: String + field2151: String + field2152: Float @deprecated + field2153: Object345 + field2157: Object14 +} + +type Object3440 @Directive22(argument62 : "stringValue15090") @Directive31 @Directive44(argument97 : ["stringValue15091", "stringValue15092"]) { + field15891: String + field15892: String +} + +type Object3441 @Directive22(argument62 : "stringValue15093") @Directive31 @Directive44(argument97 : ["stringValue15094", "stringValue15095"]) { + field15893: String + field15894: String + field15895: String + field15896: String + field15897: String +} + +type Object3442 @Directive22(argument62 : "stringValue15096") @Directive31 @Directive44(argument97 : ["stringValue15097", "stringValue15098"]) { + field15898: String + field15899: Object3441 + field15900: Boolean + field15901: Boolean + field15902: String +} + +type Object3443 @Directive22(argument62 : "stringValue15099") @Directive31 @Directive44(argument97 : ["stringValue15100", "stringValue15101"]) { + field15903: String + field15904: String + field15905: String + field15906: [Object3440!] +} + +type Object3444 @Directive22(argument62 : "stringValue15102") @Directive31 @Directive44(argument97 : ["stringValue15103", "stringValue15104"]) { + field15907: [Object452!] +} + +type Object3445 @Directive42(argument96 : ["stringValue15105", "stringValue15106", "stringValue15107"]) @Directive44(argument97 : ["stringValue15108"]) { + field15908: Object1985 + field15909: [Object1925] + field15910: Object1925 +} + +type Object3446 @Directive22(argument62 : "stringValue15109") @Directive31 @Directive44(argument97 : ["stringValue15110", "stringValue15111"]) { + field15911: String + field15912: String + field15913: String + field15914: String +} + +type Object3447 @Directive22(argument62 : "stringValue15112") @Directive31 @Directive44(argument97 : ["stringValue15113", "stringValue15114"]) { + field15915: String + field15916: String + field15917: String + field15918: Enum10 +} + +type Object3448 @Directive22(argument62 : "stringValue15115") @Directive31 @Directive44(argument97 : ["stringValue15116", "stringValue15117"]) { + field15919: String +} + +type Object3449 implements Interface80 @Directive22(argument62 : "stringValue15118") @Directive31 @Directive44(argument97 : ["stringValue15119", "stringValue15120"]) { + field15920: Object480 + field6628: String @Directive1 @deprecated + field6633: Object452 + field76: Object595 + field77: Object595 +} + +type Object345 @Directive21(argument61 : "stringValue1027") @Directive44(argument97 : ["stringValue1026"]) { + field2154: Enum115 + field2155: String + field2156: Boolean +} + +type Object3450 implements Interface5 & Interface70 & Interface71 & Interface72 @Directive22(argument62 : "stringValue15121") @Directive31 @Directive44(argument97 : ["stringValue15122", "stringValue15123"]) { + field2508: Boolean + field2510: String + field2511: Boolean + field4820: Enum239 + field76: String + field77: String + field78: String +} + +type Object3451 implements Interface138 @Directive22(argument62 : "stringValue15126") @Directive31 @Directive44(argument97 : ["stringValue15127"]) { + field15921: String! + field15922: String + field15923: String + field15924: String + field15925: [Object1464!] +} + +type Object3452 implements Interface138 @Directive22(argument62 : "stringValue15128") @Directive31 @Directive44(argument97 : ["stringValue15129"]) { + field15921: String! + field15922: String + field15923: String +} + +type Object3453 implements Interface138 @Directive22(argument62 : "stringValue15130") @Directive31 @Directive44(argument97 : ["stringValue15131"]) { + field15921: String! + field15922: String + field15926: [String!] +} + +type Object3454 implements Interface138 @Directive22(argument62 : "stringValue15132") @Directive31 @Directive44(argument97 : ["stringValue15133"]) { + field15921: String! + field15922: String + field15923: String + field15927: String +} + +type Object3455 @Directive22(argument62 : "stringValue15134") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15135", "stringValue15136"]) { + field15928: Int @Directive30(argument80 : true) @Directive41 + field15929: Int @Directive30(argument80 : true) @Directive41 + field15930: Int @Directive30(argument80 : true) @Directive41 + field15931: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3456 @Directive22(argument62 : "stringValue15140") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15141", "stringValue15142"]) { + field15932: Int @Directive30(argument80 : true) @Directive41 + field15933: Enum678 @Directive30(argument80 : true) @Directive41 +} + +type Object3457 @Directive22(argument62 : "stringValue15146") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15147", "stringValue15148"]) { + field15934: [Object3458!] @Directive30(argument80 : true) @Directive41 + field16010: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3458 @Directive22(argument62 : "stringValue15149") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15150", "stringValue15151"]) { + field15935: Object3459 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue15152") @Directive41 + field16009: Enum683 @Directive30(argument80 : true) @Directive41 +} + +type Object3459 implements Interface36 @Directive22(argument62 : "stringValue15155") @Directive30(argument85 : "stringValue15154", argument86 : "stringValue15153") @Directive44(argument97 : ["stringValue15159", "stringValue15160"]) @Directive7(argument14 : "stringValue15157", argument16 : "stringValue15158", argument17 : "stringValue15156") { + field10391: Object3464 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue15185") @Directive41 + field15936: Object3460 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue15161") @Directive41 + field15943: String @Directive30(argument80 : true) @Directive41 + field16006: Enum683 @Directive30(argument80 : true) @Directive41 + field16007: String @Directive3(argument3 : "stringValue15247") @Directive30(argument80 : true) @Directive41 + field16008: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue15248") @Directive41 + field9696: String @Directive3(argument3 : "stringValue15246") @Directive30(argument80 : true) @Directive41 +} + +type Object346 @Directive21(argument61 : "stringValue1031") @Directive44(argument97 : ["stringValue1030"]) { + field2161: String! + field2162: String +} + +type Object3460 implements Interface36 @Directive22(argument62 : "stringValue15162") @Directive30(argument85 : "stringValue15167", argument86 : "stringValue15166") @Directive44(argument97 : ["stringValue15168", "stringValue15169"]) @Directive7(argument14 : "stringValue15164", argument16 : "stringValue15165", argument17 : "stringValue15163") { + field10275: Object3461 @Directive3(argument3 : "stringValue15170") @Directive30(argument80 : true) @Directive41 + field15943: String @Directive30(argument80 : true) @Directive41 + field15944: Object3462 @Directive3(argument3 : "stringValue15174") @Directive30(argument80 : true) @Directive41 + field15949: Object3463 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9831: Enum679 @Directive30(argument80 : true) @Directive41 +} + +type Object3461 @Directive22(argument62 : "stringValue15171") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15172", "stringValue15173"]) { + field15937: Int @Directive30(argument80 : true) @Directive41 + field15938: Int @Directive30(argument80 : true) @Directive41 + field15939: Int @Directive30(argument80 : true) @Directive41 + field15940: Int @Directive30(argument80 : true) @Directive41 + field15941: Int @Directive30(argument80 : true) @Directive41 + field15942: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3462 @Directive22(argument62 : "stringValue15175") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15176", "stringValue15177"]) { + field15945: [Object3423!] @Directive30(argument80 : true) @Directive38 + field15946: Float @Directive3(argument3 : "stringValue15178") @Directive30(argument80 : true) @Directive38 @deprecated + field15947: Float @Directive30(argument80 : true) @Directive38 + field15948: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3463 @Directive22(argument62 : "stringValue15182") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15183", "stringValue15184"]) { + field15950: Boolean @Directive30(argument80 : true) @Directive41 + field15951: Int @Directive30(argument80 : true) @Directive41 + field15952: Int @Directive30(argument80 : true) @Directive41 + field15953: Int @Directive30(argument80 : true) @Directive41 + field15954: Int @Directive30(argument80 : true) @Directive41 + field15955: Int @Directive30(argument80 : true) @Directive41 + field15956: Int @Directive30(argument80 : true) @Directive41 + field15957: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3464 implements Interface36 @Directive22(argument62 : "stringValue15188") @Directive30(argument85 : "stringValue15187", argument86 : "stringValue15186") @Directive44(argument97 : ["stringValue15192", "stringValue15193"]) @Directive7(argument14 : "stringValue15190", argument16 : "stringValue15191", argument17 : "stringValue15189") { + field10623: Object3468 @Directive3(argument3 : "stringValue15211") @Directive30(argument80 : true) @Directive41 + field10878: Object3465 @Directive3(argument3 : "stringValue15194") @Directive30(argument80 : true) @Directive41 + field15943: String @Directive30(argument80 : true) @Directive41 + field15975: Object3469 @Directive30(argument80 : true) @Directive41 + field15982: Object3470 @Directive3(argument3 : "stringValue15220") @Directive30(argument80 : true) @Directive41 + field15994: Object3472 @Directive3(argument3 : "stringValue15232") @Directive30(argument80 : true) @Directive41 + field16000: Object3473 @Directive3(argument3 : "stringValue15236") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9025: Object3466 @Directive3(argument3 : "stringValue15198") @Directive30(argument80 : true) @Directive41 + field9831: Enum679 @Directive30(argument80 : true) @Directive41 +} + +type Object3465 @Directive22(argument62 : "stringValue15195") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15196", "stringValue15197"]) { + field15958: [Enum454!] @Directive30(argument80 : true) @Directive41 + field15959: Enum677 @Directive30(argument80 : true) @Directive41 + field15960: [String!] @Directive30(argument80 : true) @Directive41 +} + +type Object3466 @Directive22(argument62 : "stringValue15199") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15200", "stringValue15201"]) { + field15961: Object3467 @Directive30(argument80 : true) @Directive41 + field15964: Enum681 @Directive30(argument80 : true) @Directive41 + field15965: String @Directive30(argument80 : true) @Directive41 + field15966: String @Directive30(argument80 : true) @Directive41 + field15967: Enum677 @Directive30(argument80 : true) @Directive41 + field15968: String @Directive30(argument80 : true) @Directive41 +} + +type Object3467 @Directive22(argument62 : "stringValue15202") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15203", "stringValue15204"]) { + field15962: Enum680 @Directive30(argument80 : true) @Directive41 + field15963: String @Directive30(argument80 : true) @Directive41 +} + +type Object3468 @Directive22(argument62 : "stringValue15212") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15213", "stringValue15214"]) { + field15969: String @Directive3(argument3 : "stringValue15215") @Directive30(argument80 : true) @Directive38 @deprecated + field15970: Enum677 @Directive30(argument80 : true) @Directive41 + field15971: String @Directive30(argument80 : true) @Directive41 + field15972: String @Directive30(argument80 : true) @Directive38 + field15973: String @Directive3(argument3 : "stringValue15216") @Directive30(argument80 : true) @Directive41 @deprecated + field15974: String @Directive30(argument80 : true) @Directive41 +} + +type Object3469 @Directive22(argument62 : "stringValue15217") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15218", "stringValue15219"]) { + field15976: String @Directive30(argument80 : true) @Directive41 @deprecated + field15977: Boolean @Directive30(argument80 : true) @Directive41 @deprecated + field15978: Boolean @Directive30(argument80 : true) @Directive41 + field15979: Boolean @Directive30(argument80 : true) @Directive41 + field15980: Boolean @Directive30(argument80 : true) @Directive41 + field15981: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object347 @Directive21(argument61 : "stringValue1033") @Directive44(argument97 : ["stringValue1032"]) { + field2166: String + field2167: Int + field2168: Object348 + field2179: Boolean + field2180: Object349 + field2192: Int +} + +type Object3470 @Directive22(argument62 : "stringValue15221") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15222", "stringValue15223"]) { + field15983: String @Directive30(argument80 : true) @Directive41 + field15984: Boolean @Directive30(argument80 : true) @Directive41 + field15985: Boolean @Directive30(argument80 : true) @Directive41 + field15986: Boolean @Directive30(argument80 : true) @Directive41 + field15987: Boolean @Directive30(argument80 : true) @Directive41 + field15988: String @Directive30(argument80 : true) @Directive41 + field15989: Boolean @Directive30(argument80 : true) @Directive41 + field15990: [Object3471!] @Directive30(argument80 : true) @Directive41 + field15993: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3471 @Directive22(argument62 : "stringValue15224") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15225", "stringValue15226"]) { + field15991: String @Directive30(argument80 : true) @Directive41 + field15992: Enum682! @Directive30(argument80 : true) @Directive41 +} + +type Object3472 @Directive22(argument62 : "stringValue15233") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15234", "stringValue15235"]) { + field15995: Enum212 @Directive30(argument80 : true) @Directive41 + field15996: Int @Directive30(argument80 : true) @Directive41 + field15997: Int @Directive30(argument80 : true) @Directive41 + field15998: Int @Directive30(argument80 : true) @Directive41 + field15999: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3473 @Directive22(argument62 : "stringValue15237") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15238", "stringValue15239"]) { + field16001: [Object3474!] @Directive30(argument80 : true) @Directive41 + field16004: Enum678 @Directive30(argument80 : true) @Directive41 + field16005: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3474 @Directive22(argument62 : "stringValue15240") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15241", "stringValue15242"]) { + field16002: Int @Directive30(argument80 : true) @Directive41 + field16003: Enum678 @Directive30(argument80 : true) @Directive41 +} + +type Object3475 @Directive22(argument62 : "stringValue15249") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15250", "stringValue15251"]) { + field16011: Enum680 @Directive30(argument80 : true) @Directive41 + field16012: String @Directive30(argument80 : true) @Directive41 +} + +type Object3476 @Directive22(argument62 : "stringValue15252") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15253", "stringValue15254"]) { + field16013: String @Directive3(argument3 : "stringValue15255") @Directive30(argument80 : true) @Directive38 @deprecated + field16014: Enum677 @Directive30(argument80 : true) @Directive41 + field16015: String @Directive30(argument80 : true) @Directive41 + field16016: String @Directive30(argument80 : true) @Directive38 + field16017: String @Directive3(argument3 : "stringValue15256") @Directive30(argument80 : true) @Directive41 @deprecated + field16018: String @Directive30(argument80 : true) @Directive41 +} + +type Object3477 @Directive22(argument62 : "stringValue15257") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15258", "stringValue15259"]) { + field16019: Boolean @Directive30(argument80 : true) @Directive41 + field16020: Boolean @Directive30(argument80 : true) @Directive41 + field16021: Boolean @Directive30(argument80 : true) @Directive41 + field16022: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3478 @Directive22(argument62 : "stringValue15260") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15261", "stringValue15262"]) { + field16023: String @Directive30(argument80 : true) @Directive41 + field16024: Boolean @Directive30(argument80 : true) @Directive41 + field16025: Boolean @Directive30(argument80 : true) @Directive41 + field16026: Boolean @Directive30(argument80 : true) @Directive41 + field16027: Boolean @Directive30(argument80 : true) @Directive41 + field16028: String @Directive30(argument80 : true) @Directive41 + field16029: Boolean @Directive30(argument80 : true) @Directive41 + field16030: [Object3471!] @Directive30(argument80 : true) @Directive41 + field16031: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3479 @Directive22(argument62 : "stringValue15263") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15264", "stringValue15265"]) { + field16032: Enum212 @Directive30(argument80 : true) @Directive41 + field16033: Int @Directive30(argument80 : true) @Directive41 + field16034: Int @Directive30(argument80 : true) @Directive41 + field16035: Int @Directive30(argument80 : true) @Directive41 + field16036: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object348 @Directive21(argument61 : "stringValue1035") @Directive44(argument97 : ["stringValue1034"]) { + field2169: String + field2170: Enum114 + field2171: Enum116 + field2172: String + field2173: String + field2174: Enum117 + field2175: Object14 @deprecated + field2176: Union82 @deprecated + field2177: Object19 @deprecated + field2178: Interface15 +} + +type Object3480 @Directive22(argument62 : "stringValue15266") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15267", "stringValue15268"]) { + field16037: Enum212 @Directive30(argument80 : true) @Directive41 + field16038: Int @Directive30(argument80 : true) @Directive41 + field16039: Int @Directive30(argument80 : true) @Directive41 + field16040: Int @Directive30(argument80 : true) @Directive41 + field16041: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object3481 implements Interface3 @Directive22(argument62 : "stringValue15269") @Directive31 @Directive44(argument97 : ["stringValue15270", "stringValue15271"]) { + field15652: String + field16042: String + field16043: String + field16044: String + field16045: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3482 implements Interface83 @Directive22(argument62 : "stringValue15272") @Directive31 @Directive44(argument97 : ["stringValue15273", "stringValue15274"]) { + field14320: String + field15676: String + field16046: Object2945! + field7153: String +} + +type Object3483 implements Interface5 @Directive22(argument62 : "stringValue15275") @Directive31 @Directive44(argument97 : ["stringValue15276", "stringValue15277"]) { + field16047: Object596! + field16048: Object1458 + field16049: Object1774 + field16050: Object1774 + field4776: Interface3! + field7454: Object450 + field7455: Object450 + field76: String + field77: String! + field78: String +} + +type Object3484 implements Interface5 @Directive22(argument62 : "stringValue15278") @Directive31 @Directive44(argument97 : ["stringValue15279", "stringValue15280"]) { + field16047: Object596 + field16051: Object576 + field16052: Object1773 + field4776: Interface3 + field5096: Object585 + field7454: Object450 + field76: String + field77: String + field78: String +} + +type Object3485 implements Interface5 @Directive22(argument62 : "stringValue15281") @Directive31 @Directive44(argument97 : ["stringValue15282", "stringValue15283"]) { + field16047: Object596! + field16051: Object576 + field16052: Object1773 + field4776: Interface3! + field7454: Object450 + field76: String! + field77: String + field78: String +} + +type Object3486 implements Interface139 @Directive21(argument61 : "stringValue15292") @Directive44(argument97 : ["stringValue15291"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16073: Object3489 + field16095: String + field16096: String + field16097: String + field16098: String + field16099: Int + field16100: Boolean +} + +type Object3487 @Directive21(argument61 : "stringValue15286") @Directive44(argument97 : ["stringValue15285"]) { + field16054: String + field16055: String @deprecated + field16056: String @deprecated + field16057: [Object3488] + field16068: Enum685 @deprecated + field16069: Scalar1 + field16070: String +} + +type Object3488 @Directive21(argument61 : "stringValue15288") @Directive44(argument97 : ["stringValue15287"]) { + field16058: String + field16059: String + field16060: Enum684 + field16061: String + field16062: String + field16063: String + field16064: String + field16065: String + field16066: String + field16067: [String!] +} + +type Object3489 @Directive21(argument61 : "stringValue15294") @Directive44(argument97 : ["stringValue15293"]) { + field16074: [Object3490] + field16086: String + field16087: String + field16088: [String] + field16089: String @deprecated + field16090: String + field16091: Boolean + field16092: [String] + field16093: String + field16094: Enum686 +} + +type Object349 @Directive21(argument61 : "stringValue1039") @Directive44(argument97 : ["stringValue1038"]) { + field2181: Object16 + field2182: Object350 + field2190: Scalar5 + field2191: Enum121 +} + +type Object3490 @Directive21(argument61 : "stringValue15296") @Directive44(argument97 : ["stringValue15295"]) { + field16075: String + field16076: String + field16077: Boolean + field16078: Union180 + field16084: Boolean @deprecated + field16085: Boolean +} + +type Object3491 @Directive21(argument61 : "stringValue15299") @Directive44(argument97 : ["stringValue15298"]) { + field16079: Boolean +} + +type Object3492 @Directive21(argument61 : "stringValue15301") @Directive44(argument97 : ["stringValue15300"]) { + field16080: Float +} + +type Object3493 @Directive21(argument61 : "stringValue15303") @Directive44(argument97 : ["stringValue15302"]) { + field16081: Int +} + +type Object3494 @Directive21(argument61 : "stringValue15305") @Directive44(argument97 : ["stringValue15304"]) { + field16082: Scalar2 +} + +type Object3495 @Directive21(argument61 : "stringValue15307") @Directive44(argument97 : ["stringValue15306"]) { + field16083: String +} + +type Object3496 implements Interface140 @Directive21(argument61 : "stringValue15325") @Directive44(argument97 : ["stringValue15324"]) { + field16101: Enum687 + field16102: Enum688 + field16103: Object3497 + field16118: Float + field16119: String + field16120: String + field16121: Object3497 + field16122: Object3500 + field16125: Int +} + +type Object3497 @Directive21(argument61 : "stringValue15313") @Directive44(argument97 : ["stringValue15312"]) { + field16104: String + field16105: Enum689 + field16106: Enum690 + field16107: Enum691 + field16108: Object3498 +} + +type Object3498 @Directive21(argument61 : "stringValue15318") @Directive44(argument97 : ["stringValue15317"]) { + field16109: String + field16110: Float + field16111: Float + field16112: Float + field16113: Float + field16114: [Object3499] + field16117: Enum692 +} + +type Object3499 @Directive21(argument61 : "stringValue15320") @Directive44(argument97 : ["stringValue15319"]) { + field16115: String + field16116: Float +} + +type Object35 @Directive21(argument61 : "stringValue218") @Directive44(argument97 : ["stringValue217"]) { + field197: [Object36] + field209: String + field210: String + field211: [String] + field212: String @deprecated + field213: String + field214: Boolean + field215: [String] + field216: String + field217: Enum27 +} + +type Object350 @Directive21(argument61 : "stringValue1041") @Directive44(argument97 : ["stringValue1040"]) { + field2183: Enum118 + field2184: Enum119 + field2185: Enum120 + field2186: Scalar5 + field2187: Scalar5 + field2188: Float + field2189: Float +} + +type Object3500 @Directive21(argument61 : "stringValue15323") @Directive44(argument97 : ["stringValue15322"]) { + field16123: String + field16124: String +} + +type Object3501 implements Interface139 @Directive21(argument61 : "stringValue15327") @Directive44(argument97 : ["stringValue15326"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16126: String +} + +type Object3502 implements Interface139 @Directive21(argument61 : "stringValue15329") @Directive44(argument97 : ["stringValue15328"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +type Object3503 @Directive21(argument61 : "stringValue15331") @Directive44(argument97 : ["stringValue15330"]) { + field16127: Scalar2 + field16128: String + field16129: Scalar2 + field16130: String + field16131: Scalar2 + field16132: Scalar2 + field16133: String +} + +type Object3504 implements Interface139 @Directive21(argument61 : "stringValue15333") @Directive44(argument97 : ["stringValue15332"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +type Object3505 implements Interface139 @Directive21(argument61 : "stringValue15335") @Directive44(argument97 : ["stringValue15334"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +type Object3506 implements Interface139 @Directive21(argument61 : "stringValue15337") @Directive44(argument97 : ["stringValue15336"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +type Object3507 @Directive21(argument61 : "stringValue15339") @Directive44(argument97 : ["stringValue15338"]) { + field16134: String + field16135: String + field16136: String + field16137: Float + field16138: Scalar2 + field16139: String +} + +type Object3508 implements Interface139 @Directive21(argument61 : "stringValue15341") @Directive44(argument97 : ["stringValue15340"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16140: String! + field16141: String + field16142: Interface139 +} + +type Object3509 @Directive21(argument61 : "stringValue15343") @Directive44(argument97 : ["stringValue15342"]) { + field16143: String! +} + +type Object351 @Directive21(argument61 : "stringValue1047") @Directive44(argument97 : ["stringValue1046"]) { + field2199: String + field2200: String + field2201: Enum114 +} + +type Object3510 implements Interface139 @Directive21(argument61 : "stringValue15345") @Directive44(argument97 : ["stringValue15344"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16144: Boolean + field16145: [String] + field16146: Boolean +} + +type Object3511 @Directive21(argument61 : "stringValue15347") @Directive44(argument97 : ["stringValue15346"]) { + field16147: String! + field16148: Boolean! + field16149: String + field16150: String +} + +type Object3512 implements Interface139 @Directive21(argument61 : "stringValue15349") @Directive44(argument97 : ["stringValue15348"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16151: String! +} + +type Object3513 implements Interface141 @Directive21(argument61 : "stringValue15353") @Directive44(argument97 : ["stringValue15352"]) { + field16152: String! + field16153: Enum693 + field16154: Float + field16155: String + field16156: Interface140 + field16157: Interface139 + field16158: Enum694 + field16159: Int +} + +type Object3514 implements Interface141 @Directive21(argument61 : "stringValue15356") @Directive44(argument97 : ["stringValue15355"]) { + field16152: String! + field16153: Enum693 + field16154: Float + field16155: String + field16156: Interface140 + field16157: Interface139 + field16160: Enum695 + field16161: Object3515 +} + +type Object3515 implements Interface141 @Directive21(argument61 : "stringValue15359") @Directive44(argument97 : ["stringValue15358"]) { + field16152: String! + field16153: Enum693 + field16154: Float + field16155: String + field16156: Interface140 + field16157: Interface139 + field16162: String + field16163: String + field16164: Float @deprecated + field16165: Object3516 + field16169: Object3487 +} + +type Object3516 @Directive21(argument61 : "stringValue15361") @Directive44(argument97 : ["stringValue15360"]) { + field16166: Enum696 + field16167: String + field16168: Boolean +} + +type Object3517 @Directive21(argument61 : "stringValue15364") @Directive44(argument97 : ["stringValue15363"]) { + field16170: String! + field16171: [Object3518!] +} + +type Object3518 @Directive21(argument61 : "stringValue15366") @Directive44(argument97 : ["stringValue15365"]) { + field16172: String + field16173: [Object3519!] + field16176: Object3519 +} + +type Object3519 @Directive21(argument61 : "stringValue15368") @Directive44(argument97 : ["stringValue15367"]) { + field16174: String + field16175: String +} + +type Object352 @Directive21(argument61 : "stringValue1049") @Directive44(argument97 : ["stringValue1048"]) { + field2202: String + field2203: String + field2204: [Enum114] +} + +type Object3520 @Directive21(argument61 : "stringValue15370") @Directive44(argument97 : ["stringValue15369"]) { + field16177: Float + field16178: Float + field16179: String + field16180: String + field16181: Int + field16182: Boolean +} + +type Object3521 implements Interface139 @Directive21(argument61 : "stringValue15372") @Directive44(argument97 : ["stringValue15371"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String +} + +type Object3522 implements Interface139 @Directive21(argument61 : "stringValue15374") @Directive44(argument97 : ["stringValue15373"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16185: String +} + +type Object3523 implements Interface139 @Directive21(argument61 : "stringValue15376") @Directive44(argument97 : ["stringValue15375"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String + field16186: String + field16187: String + field16188: String +} + +type Object3524 implements Interface139 @Directive21(argument61 : "stringValue15378") @Directive44(argument97 : ["stringValue15377"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String +} + +type Object3525 implements Interface139 @Directive21(argument61 : "stringValue15380") @Directive44(argument97 : ["stringValue15379"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String +} + +type Object3526 implements Interface139 @Directive21(argument61 : "stringValue15382") @Directive44(argument97 : ["stringValue15381"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16189: String +} + +type Object3527 implements Interface139 @Directive21(argument61 : "stringValue15384") @Directive44(argument97 : ["stringValue15383"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16190: String +} + +type Object3528 implements Interface139 @Directive21(argument61 : "stringValue15386") @Directive44(argument97 : ["stringValue15385"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16190: String +} + +type Object3529 implements Interface139 @Directive21(argument61 : "stringValue15388") @Directive44(argument97 : ["stringValue15387"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16186: String +} + +type Object353 @Directive21(argument61 : "stringValue1052") @Directive44(argument97 : ["stringValue1051"]) { + field2205: Boolean +} + +type Object3530 implements Interface139 @Directive21(argument61 : "stringValue15390") @Directive44(argument97 : ["stringValue15389"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16191: String + field16192: Object3520! +} + +type Object3531 implements Interface139 @Directive21(argument61 : "stringValue15392") @Directive44(argument97 : ["stringValue15391"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16187: String! +} + +type Object3532 implements Interface139 @Directive21(argument61 : "stringValue15394") @Directive44(argument97 : ["stringValue15393"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String +} + +type Object3533 implements Interface139 @Directive21(argument61 : "stringValue15396") @Directive44(argument97 : ["stringValue15395"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16193: Object3534! +} + +type Object3534 @Directive21(argument61 : "stringValue15398") @Directive44(argument97 : ["stringValue15397"]) { + field16194: String + field16195: [Object3507!] + field16196: Object3487 + field16197: Object3487 + field16198: Object3487 + field16199: Object3487 + field16200: Object3487 +} + +type Object3535 implements Interface139 @Directive21(argument61 : "stringValue15400") @Directive44(argument97 : ["stringValue15399"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String +} + +type Object3536 implements Interface139 @Directive21(argument61 : "stringValue15402") @Directive44(argument97 : ["stringValue15401"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16191: String! + field16201: String +} + +type Object3537 implements Interface139 @Directive21(argument61 : "stringValue15404") @Directive44(argument97 : ["stringValue15403"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16073: Object3489 +} + +type Object3538 implements Interface139 @Directive21(argument61 : "stringValue15406") @Directive44(argument97 : ["stringValue15405"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16186: String + field16202: String + field16203: String + field16204: Int + field16205: Int + field16206: Int +} + +type Object3539 implements Interface139 @Directive21(argument61 : "stringValue15408") @Directive44(argument97 : ["stringValue15407"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16207: String +} + +type Object354 @Directive21(argument61 : "stringValue1054") @Directive44(argument97 : ["stringValue1053"]) { + field2206: Float +} + +type Object3540 implements Interface139 @Directive21(argument61 : "stringValue15410") @Directive44(argument97 : ["stringValue15409"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16208: String +} + +type Object3541 implements Interface139 @Directive21(argument61 : "stringValue15412") @Directive44(argument97 : ["stringValue15411"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String + field16186: String! + field16209: String + field16210: String! + field16211: String! + field16212: String! + field16213: Boolean! + field16214: String + field16215: Int! +} + +type Object3542 implements Interface139 @Directive21(argument61 : "stringValue15414") @Directive44(argument97 : ["stringValue15413"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16202: Scalar3 + field16203: Scalar3 + field16216: Scalar3 +} + +type Object3543 implements Interface139 @Directive21(argument61 : "stringValue15416") @Directive44(argument97 : ["stringValue15415"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16210: String! + field16211: String! + field16212: String! + field16217: String! +} + +type Object3544 implements Interface139 @Directive21(argument61 : "stringValue15418") @Directive44(argument97 : ["stringValue15417"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16183: String @deprecated + field16184: String + field16186: String! + field16187: String + field16210: String! + field16211: String! + field16212: String! + field16218: String! + field16219: String +} + +type Object3545 implements Interface139 @Directive21(argument61 : "stringValue15420") @Directive44(argument97 : ["stringValue15419"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16151: String! + field16186: String! + field16187: String! + field16210: String! + field16211: String! + field16212: String! + field16213: Boolean! + field16214: String + field16215: Int! + field16220: String + field16221: Int! + field16222: String! + field16223: String! + field16224: String + field16225: String + field16226: Int + field16227: String! + field16228: Int! + field16229: String! + field16230: Boolean! +} + +type Object3546 implements Interface139 @Directive21(argument61 : "stringValue15422") @Directive44(argument97 : ["stringValue15421"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16186: String + field16212: String! + field16223: String! + field16231: String! + field16232: Boolean! + field16233: Boolean! + field16234: Int +} + +type Object3547 implements Interface139 @Directive21(argument61 : "stringValue15424") @Directive44(argument97 : ["stringValue15423"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16221: Int! + field16235: Boolean! + field16236: String! + field16237: [Object3511] +} + +type Object3548 implements Interface139 @Directive21(argument61 : "stringValue15426") @Directive44(argument97 : ["stringValue15425"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16223: String! +} + +type Object3549 implements Interface139 @Directive21(argument61 : "stringValue15428") @Directive44(argument97 : ["stringValue15427"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16223: String! +} + +type Object355 @Directive21(argument61 : "stringValue1056") @Directive44(argument97 : ["stringValue1055"]) { + field2207: Int +} + +type Object3550 implements Interface139 @Directive21(argument61 : "stringValue15430") @Directive44(argument97 : ["stringValue15429"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16186: String! + field16187: String! + field16210: String! + field16211: String! + field16212: String! + field16215: Int! + field16221: Int! + field16238: Boolean! + field16239: Boolean! + field16240: Boolean! + field16241: String +} + +type Object3551 implements Interface139 @Directive21(argument61 : "stringValue15432") @Directive44(argument97 : ["stringValue15431"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16186: String + field16187: String! + field16210: String! + field16211: String! + field16212: String! + field16213: Boolean! + field16214: String + field16215: Int! + field16221: Int! + field16223: String! + field16227: String! + field16228: Int! + field16229: String! +} + +type Object3552 implements Interface139 @Directive21(argument61 : "stringValue15434") @Directive44(argument97 : ["stringValue15433"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +type Object3553 implements Interface139 @Directive21(argument61 : "stringValue15436") @Directive44(argument97 : ["stringValue15435"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16151: String! + field16187: String! + field16210: String! + field16211: String! + field16212: String! + field16214: String + field16226: Int + field16230: Boolean! + field16242: String +} + +type Object3554 implements Interface139 @Directive21(argument61 : "stringValue15438") @Directive44(argument97 : ["stringValue15437"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 +} + +type Object3555 implements Interface139 @Directive21(argument61 : "stringValue15440") @Directive44(argument97 : ["stringValue15439"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16243: String! +} + +type Object3556 implements Interface139 @Directive21(argument61 : "stringValue15442") @Directive44(argument97 : ["stringValue15441"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16244: String +} + +type Object3557 implements Interface140 @Directive21(argument61 : "stringValue15444") @Directive44(argument97 : ["stringValue15443"]) { + field16101: Enum687 + field16102: Enum688 + field16103: Object3497 + field16118: Float + field16119: String + field16120: String + field16121: Object3497 + field16122: Object3500 +} + +type Object3558 implements Interface139 @Directive21(argument61 : "stringValue15446") @Directive44(argument97 : ["stringValue15445"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16245: Object3503 +} + +type Object3559 implements Interface141 @Directive21(argument61 : "stringValue15448") @Directive44(argument97 : ["stringValue15447"]) { + field16152: String! + field16153: Enum693 + field16154: Float + field16155: String + field16156: Interface140 + field16157: Interface139 + field16246: Enum697 +} + +type Object356 @Directive21(argument61 : "stringValue1058") @Directive44(argument97 : ["stringValue1057"]) { + field2208: Scalar2 +} + +type Object3560 implements Interface139 @Directive21(argument61 : "stringValue15451") @Directive44(argument97 : ["stringValue15450"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16247: String +} + +type Object3561 implements Interface139 @Directive21(argument61 : "stringValue15453") @Directive44(argument97 : ["stringValue15452"]) { + field16053: Object3487 + field16071: String + field16072: Scalar1 + field16202: Scalar3 + field16203: Scalar3 +} + +type Object3562 implements Interface141 @Directive21(argument61 : "stringValue15455") @Directive44(argument97 : ["stringValue15454"]) { + field16152: String! + field16153: Enum693 + field16154: Float + field16155: String + field16156: Interface140 + field16157: Interface139 + field16248: Object3515 + field16249: String + field16250: String + field16251: Boolean + field16252: String + field16253: [Object3518!] + field16254: String + field16255: String + field16256: String + field16257: String + field16258: String + field16259: String + field16260: String + field16261: String + field16262: String + field16263: String + field16264: String + field16265: String + field16266: String + field16267: String + field16268: String + field16269: Object3563 +} + +type Object3563 @Directive21(argument61 : "stringValue15457") @Directive44(argument97 : ["stringValue15456"]) { + field16270: Object3517 + field16271: Object3509 +} + +type Object3564 implements Interface3 @Directive22(argument62 : "stringValue15458") @Directive31 @Directive44(argument97 : ["stringValue15459", "stringValue15460"]) { + field15726: String + field16272: Enum510 + field16273: Boolean + field16274: Object1482 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3565 implements Interface3 @Directive22(argument62 : "stringValue15461") @Directive31 @Directive44(argument97 : ["stringValue15462", "stringValue15463"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3566 implements Interface3 @Directive22(argument62 : "stringValue15464") @Directive31 @Directive44(argument97 : ["stringValue15465", "stringValue15466"]) { + field16275: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3567 implements Interface3 @Directive20(argument58 : "stringValue15468", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15467") @Directive31 @Directive44(argument97 : ["stringValue15469", "stringValue15470"]) { + field15726: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3568 implements Interface83 @Directive22(argument62 : "stringValue15471") @Directive31 @Directive44(argument97 : ["stringValue15472", "stringValue15473"]) { + field16276: Object3482! + field16277: Object3370! + field7153: String +} + +type Object3569 implements Interface142 @Directive22(argument62 : "stringValue15480") @Directive31 @Directive44(argument97 : ["stringValue15481", "stringValue15482"]) { + field16278: Enum698 + field16279: String + field16280: String + field16281: Enum1 + field16282: Enum159 + field16283: String + field16284: Object505 +} + +type Object357 @Directive21(argument61 : "stringValue1060") @Directive44(argument97 : ["stringValue1059"]) { + field2209: String +} + +type Object3570 implements Interface143 @Directive22(argument62 : "stringValue15486") @Directive31 @Directive44(argument97 : ["stringValue15487", "stringValue15488"]) { + field16285: String + field16286: Object474 +} + +type Object3571 implements Interface3 @Directive22(argument62 : "stringValue15489") @Directive31 @Directive44(argument97 : ["stringValue15490", "stringValue15491"]) { + field16272: Enum510 + field16287: Int + field16288: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3572 implements Interface3 @Directive22(argument62 : "stringValue15492") @Directive31 @Directive44(argument97 : ["stringValue15493", "stringValue15494"]) { + field16289: ID! + field16290: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3573 implements Interface3 @Directive22(argument62 : "stringValue15497") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue15495", "stringValue15496"]) @Directive44(argument97 : ["stringValue15498", "stringValue15499"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3574 implements Interface3 @Directive22(argument62 : "stringValue15500") @Directive31 @Directive44(argument97 : ["stringValue15501", "stringValue15502"]) { + field16291: Enum159 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3575 implements Interface3 @Directive22(argument62 : "stringValue15503") @Directive31 @Directive44(argument97 : ["stringValue15504", "stringValue15505"]) { + field16292: Int + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3576 implements Interface3 @Directive22(argument62 : "stringValue15506") @Directive31 @Directive44(argument97 : ["stringValue15507", "stringValue15508"]) { + field16293: String + field16294: String + field16295: Int + field16296: [String] + field16297: Scalar1 + field16298: String + field16299: String + field16300: String + field16301: String + field16302: Int + field16303: String + field16304: String + field16305: Object3577 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3577 @Directive22(argument62 : "stringValue15509") @Directive31 @Directive44(argument97 : ["stringValue15510", "stringValue15511"]) { + field16306: String + field16307: Boolean + field16308: Boolean +} + +type Object3578 implements Interface144 @Directive21(argument61 : "stringValue15520") @Directive44(argument97 : ["stringValue15519"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16329: Object3581 + field16351: String + field16352: String + field16353: String + field16354: String + field16355: Int + field16356: Boolean +} + +type Object3579 @Directive21(argument61 : "stringValue15514") @Directive44(argument97 : ["stringValue15513"]) { + field16310: String + field16311: String @deprecated + field16312: String @deprecated + field16313: [Object3580] + field16324: Enum700 @deprecated + field16325: Scalar1 + field16326: String +} + +type Object358 @Directive21(argument61 : "stringValue1063") @Directive44(argument97 : ["stringValue1062"]) { + field2210: Boolean +} + +type Object3580 @Directive21(argument61 : "stringValue15516") @Directive44(argument97 : ["stringValue15515"]) { + field16314: String + field16315: String + field16316: Enum699 + field16317: String + field16318: String + field16319: String + field16320: String + field16321: String + field16322: String + field16323: [String!] +} + +type Object3581 @Directive21(argument61 : "stringValue15522") @Directive44(argument97 : ["stringValue15521"]) { + field16330: [Object3582] + field16342: String + field16343: String + field16344: [String] + field16345: String @deprecated + field16346: String + field16347: Boolean + field16348: [String] + field16349: String + field16350: Enum701 +} + +type Object3582 @Directive21(argument61 : "stringValue15524") @Directive44(argument97 : ["stringValue15523"]) { + field16331: String + field16332: String + field16333: Boolean + field16334: Union181 + field16340: Boolean @deprecated + field16341: Boolean +} + +type Object3583 @Directive21(argument61 : "stringValue15527") @Directive44(argument97 : ["stringValue15526"]) { + field16335: Boolean +} + +type Object3584 @Directive21(argument61 : "stringValue15529") @Directive44(argument97 : ["stringValue15528"]) { + field16336: Float +} + +type Object3585 @Directive21(argument61 : "stringValue15531") @Directive44(argument97 : ["stringValue15530"]) { + field16337: Int +} + +type Object3586 @Directive21(argument61 : "stringValue15533") @Directive44(argument97 : ["stringValue15532"]) { + field16338: Scalar2 +} + +type Object3587 @Directive21(argument61 : "stringValue15535") @Directive44(argument97 : ["stringValue15534"]) { + field16339: String +} + +type Object3588 implements Interface145 @Directive21(argument61 : "stringValue15553") @Directive44(argument97 : ["stringValue15552"]) { + field16357: Enum702 + field16358: Enum703 + field16359: Object3589 + field16374: Float + field16375: String + field16376: String + field16377: Object3589 + field16378: Object3592 + field16381: Int +} + +type Object3589 @Directive21(argument61 : "stringValue15541") @Directive44(argument97 : ["stringValue15540"]) { + field16360: String + field16361: Enum704 + field16362: Enum705 + field16363: Enum706 + field16364: Object3590 +} + +type Object359 @Directive21(argument61 : "stringValue1065") @Directive44(argument97 : ["stringValue1064"]) { + field2211: Float +} + +type Object3590 @Directive21(argument61 : "stringValue15546") @Directive44(argument97 : ["stringValue15545"]) { + field16365: String + field16366: Float + field16367: Float + field16368: Float + field16369: Float + field16370: [Object3591] + field16373: Enum707 +} + +type Object3591 @Directive21(argument61 : "stringValue15548") @Directive44(argument97 : ["stringValue15547"]) { + field16371: String + field16372: Float +} + +type Object3592 @Directive21(argument61 : "stringValue15551") @Directive44(argument97 : ["stringValue15550"]) { + field16379: String + field16380: String +} + +type Object3593 implements Interface144 @Directive21(argument61 : "stringValue15555") @Directive44(argument97 : ["stringValue15554"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16382: String +} + +type Object3594 implements Interface144 @Directive21(argument61 : "stringValue15557") @Directive44(argument97 : ["stringValue15556"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +type Object3595 @Directive21(argument61 : "stringValue15559") @Directive44(argument97 : ["stringValue15558"]) { + field16383: Scalar2 + field16384: String + field16385: Scalar2 + field16386: String + field16387: Scalar2 + field16388: Scalar2 + field16389: String +} + +type Object3596 implements Interface146 @Directive21(argument61 : "stringValue15563") @Directive44(argument97 : ["stringValue15562"]) { + field16390: Enum708 + field16391: Enum709 +} + +type Object3597 implements Interface146 @Directive21(argument61 : "stringValue15566") @Directive44(argument97 : ["stringValue15565"]) { + field16390: Enum708 + field16392: String +} + +type Object3598 implements Interface144 @Directive21(argument61 : "stringValue15568") @Directive44(argument97 : ["stringValue15567"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +type Object3599 implements Interface144 @Directive21(argument61 : "stringValue15570") @Directive44(argument97 : ["stringValue15569"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +type Object36 @Directive21(argument61 : "stringValue220") @Directive44(argument97 : ["stringValue219"]) { + field198: String + field199: String + field200: Boolean + field201: Union6 + field207: Boolean @deprecated + field208: Boolean +} + +type Object360 @Directive21(argument61 : "stringValue1067") @Directive44(argument97 : ["stringValue1066"]) { + field2212: Int +} + +type Object3600 implements Interface144 @Directive21(argument61 : "stringValue15572") @Directive44(argument97 : ["stringValue15571"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +type Object3601 @Directive21(argument61 : "stringValue15574") @Directive44(argument97 : ["stringValue15573"]) { + field16393: String + field16394: String + field16395: String + field16396: Float + field16397: Scalar2 + field16398: String +} + +type Object3602 implements Interface144 @Directive21(argument61 : "stringValue15576") @Directive44(argument97 : ["stringValue15575"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16399: String! + field16400: String + field16401: Interface144 +} + +type Object3603 implements Interface144 @Directive21(argument61 : "stringValue15578") @Directive44(argument97 : ["stringValue15577"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16402: Boolean + field16403: [String] + field16404: Boolean +} + +type Object3604 @Directive21(argument61 : "stringValue15580") @Directive44(argument97 : ["stringValue15579"]) { + field16405: String! + field16406: Boolean! + field16407: String + field16408: String +} + +type Object3605 implements Interface144 @Directive21(argument61 : "stringValue15582") @Directive44(argument97 : ["stringValue15581"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16409: String! +} + +type Object3606 implements Interface147 @Directive21(argument61 : "stringValue15586") @Directive44(argument97 : ["stringValue15585"]) { + field16410: String! + field16411: Enum710 + field16412: Float + field16413: String + field16414: Interface145 + field16415: Interface144 + field16416: Enum711 + field16417: Int +} + +type Object3607 implements Interface146 @Directive21(argument61 : "stringValue15589") @Directive44(argument97 : ["stringValue15588"]) { + field16390: Enum708 + field16392: String +} + +type Object3608 implements Interface147 @Directive21(argument61 : "stringValue15591") @Directive44(argument97 : ["stringValue15590"]) { + field16410: String! + field16411: Enum710 + field16412: Float + field16413: String + field16414: Interface145 + field16415: Interface144 + field16418: Enum712 + field16419: Object3609 +} + +type Object3609 implements Interface147 @Directive21(argument61 : "stringValue15594") @Directive44(argument97 : ["stringValue15593"]) { + field16410: String! + field16411: Enum710 + field16412: Float + field16413: String + field16414: Interface145 + field16415: Interface144 + field16420: String + field16421: String + field16422: Float @deprecated + field16423: Object3610 + field16427: Object3579 +} + +type Object361 @Directive21(argument61 : "stringValue1069") @Directive44(argument97 : ["stringValue1068"]) { + field2213: Scalar2 +} + +type Object3610 @Directive21(argument61 : "stringValue15596") @Directive44(argument97 : ["stringValue15595"]) { + field16424: Enum713 + field16425: String + field16426: Boolean +} + +type Object3611 @Directive21(argument61 : "stringValue15599") @Directive44(argument97 : ["stringValue15598"]) { + field16428: Float + field16429: Float + field16430: String + field16431: String + field16432: Int + field16433: Boolean +} + +type Object3612 implements Interface144 @Directive21(argument61 : "stringValue15601") @Directive44(argument97 : ["stringValue15600"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String +} + +type Object3613 implements Interface144 @Directive21(argument61 : "stringValue15603") @Directive44(argument97 : ["stringValue15602"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16436: String +} + +type Object3614 implements Interface144 @Directive21(argument61 : "stringValue15605") @Directive44(argument97 : ["stringValue15604"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String + field16437: String + field16438: String + field16439: String +} + +type Object3615 implements Interface144 @Directive21(argument61 : "stringValue15607") @Directive44(argument97 : ["stringValue15606"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String +} + +type Object3616 implements Interface144 @Directive21(argument61 : "stringValue15609") @Directive44(argument97 : ["stringValue15608"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String +} + +type Object3617 implements Interface144 @Directive21(argument61 : "stringValue15611") @Directive44(argument97 : ["stringValue15610"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16440: String +} + +type Object3618 implements Interface144 @Directive21(argument61 : "stringValue15613") @Directive44(argument97 : ["stringValue15612"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16441: String +} + +type Object3619 implements Interface144 @Directive21(argument61 : "stringValue15615") @Directive44(argument97 : ["stringValue15614"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16441: String +} + +type Object362 @Directive21(argument61 : "stringValue1071") @Directive44(argument97 : ["stringValue1070"]) { + field2214: String +} + +type Object3620 implements Interface144 @Directive21(argument61 : "stringValue15617") @Directive44(argument97 : ["stringValue15616"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16437: String +} + +type Object3621 implements Interface144 @Directive21(argument61 : "stringValue15619") @Directive44(argument97 : ["stringValue15618"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16442: String + field16443: Object3611! +} + +type Object3622 implements Interface144 @Directive21(argument61 : "stringValue15621") @Directive44(argument97 : ["stringValue15620"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16438: String! +} + +type Object3623 implements Interface144 @Directive21(argument61 : "stringValue15623") @Directive44(argument97 : ["stringValue15622"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String +} + +type Object3624 implements Interface144 @Directive21(argument61 : "stringValue15625") @Directive44(argument97 : ["stringValue15624"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16444: Object3625! +} + +type Object3625 @Directive21(argument61 : "stringValue15627") @Directive44(argument97 : ["stringValue15626"]) { + field16445: String + field16446: [Object3601!] + field16447: Object3579 + field16448: Object3579 + field16449: Object3579 + field16450: Object3579 + field16451: Object3579 +} + +type Object3626 implements Interface144 @Directive21(argument61 : "stringValue15629") @Directive44(argument97 : ["stringValue15628"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String +} + +type Object3627 implements Interface144 @Directive21(argument61 : "stringValue15631") @Directive44(argument97 : ["stringValue15630"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16442: String! + field16452: String +} + +type Object3628 implements Interface144 @Directive21(argument61 : "stringValue15633") @Directive44(argument97 : ["stringValue15632"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16329: Object3581 +} + +type Object3629 implements Interface144 @Directive21(argument61 : "stringValue15635") @Directive44(argument97 : ["stringValue15634"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16437: String + field16453: String + field16454: String + field16455: Int + field16456: Int + field16457: Int +} + +type Object363 @Directive21(argument61 : "stringValue1074") @Directive44(argument97 : ["stringValue1073"]) { + field2215: Boolean +} + +type Object3630 implements Interface144 @Directive21(argument61 : "stringValue15637") @Directive44(argument97 : ["stringValue15636"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16458: String +} + +type Object3631 implements Interface144 @Directive21(argument61 : "stringValue15639") @Directive44(argument97 : ["stringValue15638"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16459: String +} + +type Object3632 implements Interface144 @Directive21(argument61 : "stringValue15641") @Directive44(argument97 : ["stringValue15640"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String + field16437: String! + field16460: String + field16461: String! + field16462: String! + field16463: String! + field16464: Boolean! + field16465: String + field16466: Int! +} + +type Object3633 implements Interface144 @Directive21(argument61 : "stringValue15643") @Directive44(argument97 : ["stringValue15642"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16453: Scalar3 + field16454: Scalar3 + field16467: Scalar3 +} + +type Object3634 implements Interface144 @Directive21(argument61 : "stringValue15645") @Directive44(argument97 : ["stringValue15644"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16461: String! + field16462: String! + field16463: String! + field16468: String! +} + +type Object3635 implements Interface144 @Directive21(argument61 : "stringValue15647") @Directive44(argument97 : ["stringValue15646"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16434: String @deprecated + field16435: String + field16437: String! + field16438: String + field16461: String! + field16462: String! + field16463: String! + field16469: String! + field16470: String +} + +type Object3636 implements Interface144 @Directive21(argument61 : "stringValue15649") @Directive44(argument97 : ["stringValue15648"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16409: String! + field16437: String! + field16438: String! + field16461: String! + field16462: String! + field16463: String! + field16464: Boolean! + field16465: String + field16466: Int! + field16471: String + field16472: Int! + field16473: String! + field16474: String! + field16475: String + field16476: String + field16477: Int + field16478: String! + field16479: Int! + field16480: String! + field16481: Boolean! +} + +type Object3637 implements Interface144 @Directive21(argument61 : "stringValue15651") @Directive44(argument97 : ["stringValue15650"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16437: String + field16463: String! + field16474: String! + field16482: String! + field16483: Boolean! + field16484: Boolean! + field16485: Int +} + +type Object3638 implements Interface144 @Directive21(argument61 : "stringValue15653") @Directive44(argument97 : ["stringValue15652"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16472: Int! + field16486: Boolean! + field16487: String! + field16488: [Object3604] +} + +type Object3639 implements Interface144 @Directive21(argument61 : "stringValue15655") @Directive44(argument97 : ["stringValue15654"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16474: String! +} + +type Object364 @Directive21(argument61 : "stringValue1076") @Directive44(argument97 : ["stringValue1075"]) { + field2216: Float +} + +type Object3640 implements Interface144 @Directive21(argument61 : "stringValue15657") @Directive44(argument97 : ["stringValue15656"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16474: String! +} + +type Object3641 implements Interface144 @Directive21(argument61 : "stringValue15659") @Directive44(argument97 : ["stringValue15658"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16437: String! + field16438: String! + field16461: String! + field16462: String! + field16463: String! + field16466: Int! + field16472: Int! + field16489: Boolean! + field16490: Boolean! + field16491: Boolean! + field16492: String +} + +type Object3642 implements Interface144 @Directive21(argument61 : "stringValue15661") @Directive44(argument97 : ["stringValue15660"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16437: String + field16438: String! + field16461: String! + field16462: String! + field16463: String! + field16464: Boolean! + field16465: String + field16466: Int! + field16472: Int! + field16474: String! + field16478: String! + field16479: Int! + field16480: String! +} + +type Object3643 implements Interface144 @Directive21(argument61 : "stringValue15663") @Directive44(argument97 : ["stringValue15662"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +type Object3644 implements Interface144 @Directive21(argument61 : "stringValue15665") @Directive44(argument97 : ["stringValue15664"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16409: String! + field16438: String! + field16461: String! + field16462: String! + field16463: String! + field16465: String + field16477: Int + field16481: Boolean! + field16493: String +} + +type Object3645 implements Interface144 @Directive21(argument61 : "stringValue15667") @Directive44(argument97 : ["stringValue15666"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 +} + +type Object3646 implements Interface144 @Directive21(argument61 : "stringValue15669") @Directive44(argument97 : ["stringValue15668"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16494: String! +} + +type Object3647 implements Interface146 @Directive21(argument61 : "stringValue15671") @Directive44(argument97 : ["stringValue15670"]) { + field16390: Enum708 + field16495: Object3581 +} + +type Object3648 implements Interface146 @Directive21(argument61 : "stringValue15673") @Directive44(argument97 : ["stringValue15672"]) { + field16390: Enum708 +} + +type Object3649 implements Interface146 @Directive21(argument61 : "stringValue15675") @Directive44(argument97 : ["stringValue15674"]) { + field16390: Enum708 + field16496: Object3650 +} + +type Object365 @Directive21(argument61 : "stringValue1078") @Directive44(argument97 : ["stringValue1077"]) { + field2217: Int +} + +type Object3650 @Directive21(argument61 : "stringValue15677") @Directive44(argument97 : ["stringValue15676"]) { + field16497: String + field16498: [Object3582] + field16499: String + field16500: Scalar2 + field16501: Scalar2 + field16502: String + field16503: String + field16504: String + field16505: String +} + +type Object3651 implements Interface144 @Directive21(argument61 : "stringValue15679") @Directive44(argument97 : ["stringValue15678"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16506: String +} + +type Object3652 implements Interface145 @Directive21(argument61 : "stringValue15681") @Directive44(argument97 : ["stringValue15680"]) { + field16357: Enum702 + field16358: Enum703 + field16359: Object3589 + field16374: Float + field16375: String + field16376: String + field16377: Object3589 + field16378: Object3592 +} + +type Object3653 implements Interface144 @Directive21(argument61 : "stringValue15683") @Directive44(argument97 : ["stringValue15682"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16507: Object3595 +} + +type Object3654 implements Interface147 @Directive21(argument61 : "stringValue15685") @Directive44(argument97 : ["stringValue15684"]) { + field16410: String! + field16411: Enum710 + field16412: Float + field16413: String + field16414: Interface145 + field16415: Interface144 + field16508: Enum714 +} + +type Object3655 implements Interface144 @Directive21(argument61 : "stringValue15688") @Directive44(argument97 : ["stringValue15687"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16509: String +} + +type Object3656 implements Interface144 @Directive21(argument61 : "stringValue15690") @Directive44(argument97 : ["stringValue15689"]) { + field16309: Object3579 + field16327: String + field16328: Scalar1 + field16453: Scalar3 + field16454: Scalar3 +} + +type Object3657 implements Interface3 @Directive22(argument62 : "stringValue15691") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15692", "stringValue15693"]) { + field14323: [Object2944] @Directive30(argument80 : true) @Directive39 + field16510: String @Directive30(argument80 : true) @Directive39 + field16511: Object452 @Directive30(argument80 : true) @Directive39 + field16512: Object452 @Directive30(argument80 : true) @Directive39 + field2287: String @Directive30(argument80 : true) @Directive39 + field4: Object1 @Directive30(argument80 : true) @Directive39 + field74: String @Directive30(argument80 : true) @Directive39 + field75: Scalar1 @Directive30(argument80 : true) @Directive39 +} + +type Object3658 implements Interface3 @Directive22(argument62 : "stringValue15694") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15695", "stringValue15696"]) { + field16513: String @Directive30(argument80 : true) @Directive39 + field16514: String @Directive30(argument80 : true) @Directive39 + field16515: Object452 @Directive30(argument80 : true) @Directive39 + field4: Object1 @Directive30(argument80 : true) @Directive39 + field74: String @Directive30(argument80 : true) @Directive39 + field75: Scalar1 @Directive30(argument80 : true) @Directive39 +} + +type Object3659 implements Interface3 @Directive22(argument62 : "stringValue15697") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15698", "stringValue15699"]) { + field16516: String! @Directive30(argument80 : true) @Directive41 + field16517: Scalar2 @Directive30(argument80 : true) @Directive41 + field16518: Int @Directive30(argument80 : true) @Directive41 + field16519: String! @Directive30(argument80 : true) @Directive41 + field16520: [Object2940!] @Directive30(argument80 : true) @Directive41 + field16521: String @Directive30(argument80 : true) @Directive41 + field2254: Interface3 @Directive30(argument80 : true) @Directive41 + field4: Object1 @Directive30(argument80 : true) @Directive41 + field74: String @Directive30(argument80 : true) @Directive41 + field75: Scalar1 @Directive30(argument80 : true) @Directive41 +} + +type Object366 @Directive21(argument61 : "stringValue1080") @Directive44(argument97 : ["stringValue1079"]) { + field2218: Scalar2 +} + +type Object3660 implements Interface3 @Directive20(argument58 : "stringValue15703", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15700") @Directive31 @Directive44(argument97 : ["stringValue15701", "stringValue15702"]) { + field16522: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3661 implements Interface90 @Directive22(argument62 : "stringValue15704") @Directive31 @Directive44(argument97 : ["stringValue15705", "stringValue15706"]) { + field16523: Object603 + field16524: Object603 + field16525: Object603 + field16526: Object603 + field16527: Object603 + field16528: Object3662 + field8325: Boolean +} + +type Object3662 @Directive22(argument62 : "stringValue15707") @Directive31 @Directive44(argument97 : ["stringValue15708", "stringValue15709"]) { + field16529: Enum166 + field16530: Int + field16531: Enum715 + field16532: Enum716 +} + +type Object3663 implements Interface90 @Directive20(argument58 : "stringValue15718", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue15717") @Directive31 @Directive44(argument97 : ["stringValue15719", "stringValue15720"]) { + field16523: Object603 + field16525: Object603 + field16533: Object603 + field16534: Object3664 + field16538: Object603 + field16539: Object603 + field16540: Object1771 + field8325: Boolean @deprecated +} + +type Object3664 @Directive20(argument58 : "stringValue15722", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15721") @Directive31 @Directive44(argument97 : ["stringValue15723", "stringValue15724"]) { + field16535: Object503 + field16536: Enum164 + field16537: Object505 +} + +type Object3665 implements Interface90 @Directive20(argument58 : "stringValue15726", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue15725") @Directive31 @Directive44(argument97 : ["stringValue15727", "stringValue15728"]) { + field16523: Object603 + field16525: Object603 + field16533: Object603 + field16539: Object603 + field8325: Boolean @deprecated +} + +type Object3666 implements Interface90 @Directive20(argument58 : "stringValue15730", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue15729") @Directive31 @Directive44(argument97 : ["stringValue15731", "stringValue15732"]) { + field16523: Object603 + field16525: Object603 + field16539: Object603 + field16541: Object3369 + field8325: Boolean @deprecated +} + +type Object3667 implements Interface90 @Directive20(argument58 : "stringValue15734", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue15733") @Directive31 @Directive44(argument97 : ["stringValue15735", "stringValue15736"]) { + field16523: Object603 + field16525: Object603 + field16533: Object3664 + field16539: Object603 + field8325: Boolean @deprecated +} + +type Object3668 implements Interface90 @Directive20(argument58 : "stringValue15738", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue15737") @Directive31 @Directive44(argument97 : ["stringValue15739", "stringValue15740"]) { + field16523: Object603 + field16525: Object603 + field16533: Object3664 + field16534: Object3664 + field16538: Object603 + field16539: Object603 + field16540: Object1771 + field8325: Boolean @deprecated +} + +type Object3669 implements Interface90 @Directive22(argument62 : "stringValue15741") @Directive31 @Directive44(argument97 : ["stringValue15742", "stringValue15743"]) { + field16523: Object603 + field16524: Object603 + field16525: Object603 + field16526: Object3664 + field16527: Object603 + field16528: Object3662 + field16542: Object603 + field8325: Boolean +} + +type Object367 @Directive21(argument61 : "stringValue1082") @Directive44(argument97 : ["stringValue1081"]) { + field2219: String +} + +type Object3670 implements Interface148 @Directive21(argument61 : "stringValue15746") @Directive44(argument97 : ["stringValue15745"]) { + field16543: String! + field16544: String! +} + +type Object3671 implements Interface7 @Directive20(argument58 : "stringValue15748", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15747") @Directive31 @Directive44(argument97 : ["stringValue15749", "stringValue15750"]) { + field102: Float + field103: String + field104: String + field105: Object10 + field106: Object13 + field85: Enum4 + field86: Enum5 + field87: Object10 +} + +type Object3672 @Directive22(argument62 : "stringValue15751") @Directive31 @Directive44(argument97 : ["stringValue15752", "stringValue15753"]) { + field16545: String + field16546: Object10 + field16547: Enum10 +} + +type Object3673 implements Interface5 @Directive22(argument62 : "stringValue15754") @Directive31 @Directive44(argument97 : ["stringValue15755", "stringValue15756"]) { + field16548: Object3672 + field16549: Object3672 + field16550: [Object452] + field76: String + field77: String + field78: String +} + +type Object3674 @Directive22(argument62 : "stringValue15757") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15758"]) { + field16551: String @Directive30(argument80 : true) @Directive41 + field16552: Object3675 @Directive30(argument80 : true) @Directive41 + field16555: [Scalar2] @Directive30(argument80 : true) @Directive41 +} + +type Object3675 @Directive22(argument62 : "stringValue15759") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15760"]) { + field16553: String @Directive30(argument80 : true) @Directive41 + field16554: String @Directive30(argument80 : true) @Directive41 +} + +type Object3676 implements Interface36 @Directive22(argument62 : "stringValue15761") @Directive30(argument79 : "stringValue15762") @Directive44(argument97 : ["stringValue15767"]) @Directive7(argument12 : "stringValue15766", argument13 : "stringValue15765", argument14 : "stringValue15764", argument17 : "stringValue15763", argument18 : false) { + field10843: [Object3674] @Directive30(argument80 : true) @Directive41 + field10880: [Object3677] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object3677 @Directive22(argument62 : "stringValue15768") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15769"]) { + field16556: Scalar2 @Directive30(argument80 : true) @Directive41 + field16557: Object3675 @Directive30(argument80 : true) @Directive41 + field16558: String @Directive30(argument80 : true) @Directive41 + field16559: Enum10 @Directive30(argument80 : true) @Directive41 +} + +type Object3678 implements Interface47 @Directive20(argument58 : "stringValue15771", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue15770") @Directive31 @Directive44(argument97 : ["stringValue15772", "stringValue15773"]) { + field11339: Float + field11340: Int + field16560: String + field16561: String + field16562: Int + field16563: String + field16564: String + field3160: ID! +} + +type Object3679 implements Interface36 @Directive22(argument62 : "stringValue15776") @Directive42(argument96 : ["stringValue15774", "stringValue15775"]) @Directive44(argument97 : ["stringValue15777"]) { + field10387: Scalar4 + field10857: String + field16565: Int + field16566: String + field2312: ID! + field8994: String + field9025: String + field9087: Scalar4 + field9142: Scalar4 +} + +type Object368 @Directive21(argument61 : "stringValue1085") @Directive44(argument97 : ["stringValue1084"]) { + field2220: Boolean +} + +type Object3680 @Directive22(argument62 : "stringValue15780") @Directive42(argument96 : ["stringValue15778", "stringValue15779"]) @Directive44(argument97 : ["stringValue15781"]) { + field16567: Object3681 + field16679: String +} + +type Object3681 @Directive12 @Directive22(argument62 : "stringValue15784") @Directive42(argument96 : ["stringValue15782", "stringValue15783"]) @Directive44(argument97 : ["stringValue15785", "stringValue15786"]) @Directive45(argument98 : ["stringValue15787"]) { + field16568: Scalar4 + field16569: Scalar4 + field16570: Int + field16571: Boolean + field16572: Object3682 @Directive14(argument51 : "stringValue15788") + field16575: Enum454 @Directive3(argument3 : "stringValue15794") + field16576: Union182 + field16678: Enum752 +} + +type Object3682 @Directive22(argument62 : "stringValue15791") @Directive42(argument96 : ["stringValue15789", "stringValue15790"]) @Directive44(argument97 : ["stringValue15792"]) { + field16573: Enum454 + field16574: Object1837 @Directive14(argument51 : "stringValue15793") +} + +type Object3683 @Directive20(argument58 : "stringValue15801", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15798") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15799", "stringValue15800"]) { + field16577: [Enum717] @Directive30(argument80 : true) @Directive41 +} + +type Object3684 @Directive20(argument58 : "stringValue15808", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15807") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15809", "stringValue15810"]) { + field16578: Enum718 @Directive30(argument80 : true) @Directive41 +} + +type Object3685 @Directive20(argument58 : "stringValue15816", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15817") @Directive42(argument96 : ["stringValue15815"]) @Directive44(argument97 : ["stringValue15818", "stringValue15819"]) { + field16579: [Object3686] @Directive41 + field16587: Object3689 @Directive41 +} + +type Object3686 @Directive20(argument58 : "stringValue15821", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15822") @Directive42(argument96 : ["stringValue15820"]) @Directive44(argument97 : ["stringValue15823", "stringValue15824"]) { + field16580: [Object3687] @Directive41 + field16583: [Int] @Directive41 + field16584: [Object3688] @Directive41 +} + +type Object3687 @Directive20(argument58 : "stringValue15826", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15827") @Directive42(argument96 : ["stringValue15825"]) @Directive44(argument97 : ["stringValue15828", "stringValue15829"]) { + field16581: String @Directive41 + field16582: String @Directive41 +} + +type Object3688 @Directive20(argument58 : "stringValue15831", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15832") @Directive42(argument96 : ["stringValue15830"]) @Directive44(argument97 : ["stringValue15833", "stringValue15834"]) { + field16585: String @Directive41 + field16586: String @Directive41 +} + +type Object3689 @Directive20(argument58 : "stringValue15836", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15837") @Directive42(argument96 : ["stringValue15835"]) @Directive44(argument97 : ["stringValue15838", "stringValue15839"]) { + field16588: Scalar2 @Directive41 + field16589: String @Directive41 + field16590: Enum719 @Directive41 + field16591: Enum720 @Directive41 +} + +type Object369 @Directive21(argument61 : "stringValue1087") @Directive44(argument97 : ["stringValue1086"]) { + field2221: Int +} + +type Object3690 @Directive20(argument58 : "stringValue15849", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15848") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15850", "stringValue15851"]) { + field16592: Enum721 @Directive30(argument80 : true) @Directive41 @deprecated + field16593: [Enum721] @Directive30(argument80 : true) @Directive41 +} + +type Object3691 @Directive20(argument58 : "stringValue15858", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15857") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15859", "stringValue15860"]) { + field16594: Enum718 @Directive30(argument80 : true) @Directive41 + field16595: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object3692 @Directive20(argument58 : "stringValue15864", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15861") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15862", "stringValue15863"]) { + field16596: String @Directive30(argument80 : true) @Directive41 + field16597: Enum722 @Directive30(argument80 : true) @Directive41 +} + +type Object3693 @Directive20(argument58 : "stringValue15871", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15872") @Directive42(argument96 : ["stringValue15870"]) @Directive44(argument97 : ["stringValue15873", "stringValue15874"]) { + field16598: String @Directive41 + field16599: Boolean @Directive41 + field16600: Boolean @Directive41 + field16601: String @Directive41 + field16602: Boolean @Directive41 +} + +type Object3694 @Directive20(argument58 : "stringValue15876", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15875") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15877", "stringValue15878"]) { + field16603: [Enum723] @Directive30(argument80 : true) @Directive41 +} + +type Object3695 @Directive20(argument58 : "stringValue15884", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15885") @Directive42(argument96 : ["stringValue15883"]) @Directive44(argument97 : ["stringValue15886", "stringValue15887"]) { + field16604: [Object3686] @Directive41 + field16605: Object3689 @Directive41 + field16606: Enum724 @Directive41 +} + +type Object3696 @Directive20(argument58 : "stringValue15893", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15894") @Directive42(argument96 : ["stringValue15892"]) @Directive44(argument97 : ["stringValue15895", "stringValue15896"]) { + field16607: Boolean @Directive40 +} + +type Object3697 @Directive20(argument58 : "stringValue15898", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15897") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15899", "stringValue15900"]) { + field16608: [Enum725] @Directive30(argument80 : true) @Directive41 +} + +type Object3698 @Directive20(argument58 : "stringValue15906", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15907") @Directive42(argument96 : ["stringValue15905"]) @Directive44(argument97 : ["stringValue15908", "stringValue15909"]) { + field16609: Boolean @Directive41 + field16610: Enum726 @Directive41 +} + +type Object3699 @Directive20(argument58 : "stringValue15915", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15914") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15916", "stringValue15917"]) { + field16611: [Enum727] @Directive30(argument80 : true) @Directive41 +} + +type Object37 @Directive21(argument61 : "stringValue223") @Directive44(argument97 : ["stringValue222"]) { + field202: Boolean +} + +type Object370 @Directive21(argument61 : "stringValue1089") @Directive44(argument97 : ["stringValue1088"]) { + field2222: String +} + +type Object3700 @Directive20(argument58 : "stringValue15923", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15924") @Directive42(argument96 : ["stringValue15922"]) @Directive44(argument97 : ["stringValue15925", "stringValue15926"]) { + field16612: String @Directive41 +} + +type Object3701 @Directive20(argument58 : "stringValue15928", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15927") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15929", "stringValue15930"]) { + field16613: [Enum728] @Directive30(argument80 : true) @Directive41 +} + +type Object3702 @Directive20(argument58 : "stringValue15936", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15935") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15937", "stringValue15938"]) { + field16614: [Enum729] @Directive30(argument80 : true) @Directive41 +} + +type Object3703 @Directive20(argument58 : "stringValue15944", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15945") @Directive42(argument96 : ["stringValue15943"]) @Directive44(argument97 : ["stringValue15946", "stringValue15947"]) { + field16615: Enum730 @Directive41 + field16616: String @Directive41 +} + +type Object3704 @Directive20(argument58 : "stringValue15953", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15954") @Directive42(argument96 : ["stringValue15952"]) @Directive44(argument97 : ["stringValue15955", "stringValue15956"]) { + field16617: [Object3686] @Directive41 + field16618: String @Directive41 + field16619: Boolean @Directive41 +} + +type Object3705 @Directive20(argument58 : "stringValue15958", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15957") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15959", "stringValue15960"]) { + field16620: [Enum731] @Directive30(argument80 : true) @Directive41 +} + +type Object3706 @Directive20(argument58 : "stringValue15966", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15965") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15967", "stringValue15968"]) { + field16621: Enum718 @Directive30(argument80 : true) @Directive41 + field16622: Boolean @Directive30(argument80 : true) @Directive41 + field16623: Boolean @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object3707 @Directive20(argument58 : "stringValue15970", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15969") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15971", "stringValue15972"]) { + field16624: Enum718 @Directive30(argument80 : true) @Directive41 + field16625: Enum732 @Directive30(argument80 : true) @Directive41 +} + +type Object3708 @Directive20(argument58 : "stringValue15980", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15977") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15978", "stringValue15979"]) { + field16626: [Enum733] @Directive30(argument80 : true) @Directive41 +} + +type Object3709 @Directive20(argument58 : "stringValue15987", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15986") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue15988", "stringValue15989"]) { + field16627: Enum718 @Directive30(argument80 : true) @Directive41 +} + +type Object371 implements Interface3 @Directive20(argument58 : "stringValue1094", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1093") @Directive31 @Directive44(argument97 : ["stringValue1095", "stringValue1096"]) { + field2223: String! + field2224: String + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3710 @Directive20(argument58 : "stringValue15991", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue15992") @Directive42(argument96 : ["stringValue15990"]) @Directive44(argument97 : ["stringValue15993", "stringValue15994"]) { + field16628: Enum734 @Directive41 +} + +type Object3711 @Directive20(argument58 : "stringValue16000", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16001") @Directive42(argument96 : ["stringValue15999"]) @Directive44(argument97 : ["stringValue16002", "stringValue16003"]) { + field16629: Enum735 @Directive41 +} + +type Object3712 @Directive20(argument58 : "stringValue16012", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16008") @Directive24(argument64 : "stringValue16009") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16010", "stringValue16011"]) { + field16630: Enum736 @Directive30(argument80 : true) @Directive41 + field16631: Object3713 @Directive30(argument80 : true) @Directive41 +} + +type Object3713 @Directive20(argument58 : "stringValue16020", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16018") @Directive24(argument64 : "stringValue16019") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16021", "stringValue16022"]) { + field16632: Enum737 @Directive30(argument80 : true) @Directive41 + field16633: Object3714 @Directive30(argument80 : true) @Directive41 +} + +type Object3714 @Directive20(argument58 : "stringValue16030", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16028") @Directive24(argument64 : "stringValue16029") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16031", "stringValue16032"]) { + field16634: Scalar2 @Directive30(argument80 : true) @Directive41 + field16635: String @Directive30(argument80 : true) @Directive41 + field16636: Enum738 @Directive30(argument80 : true) @Directive41 +} + +type Object3715 @Directive20(argument58 : "stringValue16039", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16040") @Directive42(argument96 : ["stringValue16038"]) @Directive44(argument97 : ["stringValue16041", "stringValue16042"]) { + field16637: Int @Directive41 +} + +type Object3716 @Directive20(argument58 : "stringValue16043", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16044") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16045", "stringValue16046"]) { + field16638: Enum718 @Directive30(argument80 : true) @Directive41 +} + +type Object3717 @Directive20(argument58 : "stringValue16050", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16047") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16048", "stringValue16049"]) { + field16639: String @Directive30(argument80 : true) @Directive41 + field16640: [Enum739] @Directive30(argument80 : true) @Directive41 +} + +type Object3718 @Directive20(argument58 : "stringValue16059", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16056") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16057", "stringValue16058"]) { + field16641: Int @Directive30(argument80 : true) @Directive41 + field16642: Enum740 @Directive30(argument80 : true) @Directive41 + field16643: Object3713 @Directive30(argument80 : true) @Directive41 +} + +type Object3719 @Directive20(argument58 : "stringValue16066", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16067") @Directive42(argument96 : ["stringValue16065"]) @Directive44(argument97 : ["stringValue16068", "stringValue16069"]) { + field16644: Object3689 @Directive41 + field16645: Int @Directive41 + field16646: Boolean @Directive41 + field16647: Object3689 @Directive41 +} + +type Object372 implements Interface3 @Directive22(argument62 : "stringValue1097") @Directive31 @Directive44(argument97 : ["stringValue1098", "stringValue1099"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3720 @Directive20(argument58 : "stringValue16071", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16070") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16072", "stringValue16073"]) { + field16648: Enum718 @Directive30(argument80 : true) @Directive41 + field16649: Enum741 @Directive30(argument80 : true) @Directive41 + field16650: [Enum742] @Directive30(argument80 : true) @Directive41 +} + +type Object3721 @Directive20(argument58 : "stringValue16083", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16082") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16084", "stringValue16085"]) { + field16651: Enum737 @Directive30(argument80 : true) @Directive41 @deprecated + field16652: Object3713 @Directive30(argument80 : true) @Directive41 +} + +type Object3722 @Directive20(argument58 : "stringValue16087", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16088") @Directive42(argument96 : ["stringValue16086"]) @Directive44(argument97 : ["stringValue16089", "stringValue16090"]) { + field16653: [Object3686] @Directive41 + field16654: Boolean @Directive41 +} + +type Object3723 @Directive20(argument58 : "stringValue16092", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16091") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16093", "stringValue16094"]) { + field16655: Enum718 @Directive30(argument80 : true) @Directive41 +} + +type Object3724 @Directive20(argument58 : "stringValue16096", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16097") @Directive42(argument96 : ["stringValue16095"]) @Directive44(argument97 : ["stringValue16098", "stringValue16099"]) { + field16656: [Object3686] @Directive41 + field16657: Object3689 @Directive41 + field16658: String @Directive41 +} + +type Object3725 @Directive20(argument58 : "stringValue16101", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16100") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16102", "stringValue16103"]) { + field16659: [Enum743] @Directive30(argument80 : true) @Directive41 @deprecated + field16660: Enum743 @Directive30(argument80 : true) @Directive41 +} + +type Object3726 @Directive20(argument58 : "stringValue16111", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16108") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16109", "stringValue16110"]) { + field16661: String @Directive30(argument80 : true) @Directive41 + field16662: Boolean @Directive30(argument80 : true) @Directive41 + field16663: [Enum744] @Directive30(argument80 : true) @Directive41 +} + +type Object3727 @Directive20(argument58 : "stringValue16118", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16119") @Directive42(argument96 : ["stringValue16117"]) @Directive44(argument97 : ["stringValue16120", "stringValue16121"]) { + field16664: String @Directive41 + field16665: Enum745 @Directive41 +} + +type Object3728 @Directive20(argument58 : "stringValue16129", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16126") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16127", "stringValue16128"]) { + field16666: String @Directive30(argument80 : true) @Directive41 + field16667: Enum746 @Directive30(argument80 : true) @Directive41 + field16668: Enum747 @Directive30(argument80 : true) @Directive41 + field16669: [Enum747] @Directive30(argument80 : true) @Directive41 +} + +type Object3729 @Directive20(argument58 : "stringValue16141", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16142") @Directive42(argument96 : ["stringValue16140"]) @Directive44(argument97 : ["stringValue16143", "stringValue16144"]) { + field16670: Int @Directive41 + field16671: Enum748 @Directive41 + field16672: [Enum749] @Directive41 +} + +type Object373 @Directive21(argument61 : "stringValue1102") @Directive44(argument97 : ["stringValue1101"]) { + field2225: Boolean +} + +type Object3730 @Directive20(argument58 : "stringValue16154", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16155") @Directive42(argument96 : ["stringValue16153"]) @Directive44(argument97 : ["stringValue16156", "stringValue16157"]) { + field16673: Object3689 @Directive41 + field16674: Enum750 @Directive41 + field16675: String @Directive41 + field16676: Int @Directive41 +} + +type Object3731 @Directive20(argument58 : "stringValue16163", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue16162") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16164", "stringValue16165"]) { + field16677: [Enum751] @Directive30(argument80 : true) @Directive41 +} + +type Object3732 implements Interface36 @Directive42(argument96 : ["stringValue16173", "stringValue16174", "stringValue16175"]) @Directive44(argument97 : ["stringValue16176"]) { + field2312: ID! +} + +type Object3733 implements Interface149 @Directive21(argument61 : "stringValue16185") @Directive44(argument97 : ["stringValue16184"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16700: Object3736 + field16717: String + field16718: String + field16719: String + field16720: String + field16721: Int + field16722: Boolean +} + +type Object3734 @Directive21(argument61 : "stringValue16179") @Directive44(argument97 : ["stringValue16178"]) { + field16681: String + field16682: String @deprecated + field16683: String @deprecated + field16684: [Object3735] + field16695: Enum754 @deprecated + field16696: Scalar1 + field16697: String +} + +type Object3735 @Directive21(argument61 : "stringValue16181") @Directive44(argument97 : ["stringValue16180"]) { + field16685: String + field16686: String + field16687: Enum753 + field16688: String + field16689: String + field16690: String + field16691: String + field16692: String + field16693: String + field16694: [String!] +} + +type Object3736 @Directive21(argument61 : "stringValue16187") @Directive44(argument97 : ["stringValue16186"]) { + field16701: [Object3737] + field16708: String + field16709: String + field16710: [String] + field16711: String @deprecated + field16712: String + field16713: Boolean + field16714: [String] + field16715: String + field16716: Enum755 +} + +type Object3737 @Directive21(argument61 : "stringValue16189") @Directive44(argument97 : ["stringValue16188"]) { + field16702: String + field16703: String + field16704: Boolean + field16705: Union183 + field16706: Boolean @deprecated + field16707: Boolean +} + +type Object3738 implements Interface150 @Directive21(argument61 : "stringValue16208") @Directive44(argument97 : ["stringValue16207"]) { + field16723: Enum756 + field16724: Enum757 + field16725: Object3739 + field16740: Float + field16741: String + field16742: String + field16743: Object3739 + field16744: Object3742 + field16747: Int +} + +type Object3739 @Directive21(argument61 : "stringValue16196") @Directive44(argument97 : ["stringValue16195"]) { + field16726: String + field16727: Enum758 + field16728: Enum759 + field16729: Enum760 + field16730: Object3740 +} + +type Object374 @Directive21(argument61 : "stringValue1104") @Directive44(argument97 : ["stringValue1103"]) { + field2226: Float +} + +type Object3740 @Directive21(argument61 : "stringValue16201") @Directive44(argument97 : ["stringValue16200"]) { + field16731: String + field16732: Float + field16733: Float + field16734: Float + field16735: Float + field16736: [Object3741] + field16739: Enum761 +} + +type Object3741 @Directive21(argument61 : "stringValue16203") @Directive44(argument97 : ["stringValue16202"]) { + field16737: String + field16738: Float +} + +type Object3742 @Directive21(argument61 : "stringValue16206") @Directive44(argument97 : ["stringValue16205"]) { + field16745: String + field16746: String +} + +type Object3743 implements Interface149 @Directive21(argument61 : "stringValue16210") @Directive44(argument97 : ["stringValue16209"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16748: String +} + +type Object3744 implements Interface149 @Directive21(argument61 : "stringValue16212") @Directive44(argument97 : ["stringValue16211"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +type Object3745 @Directive21(argument61 : "stringValue16214") @Directive44(argument97 : ["stringValue16213"]) { + field16749: Scalar2 + field16750: String + field16751: Scalar2 + field16752: String + field16753: Scalar2 + field16754: Scalar2 + field16755: String +} + +type Object3746 implements Interface149 @Directive21(argument61 : "stringValue16216") @Directive44(argument97 : ["stringValue16215"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +type Object3747 implements Interface149 @Directive21(argument61 : "stringValue16218") @Directive44(argument97 : ["stringValue16217"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +type Object3748 implements Interface149 @Directive21(argument61 : "stringValue16220") @Directive44(argument97 : ["stringValue16219"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +type Object3749 @Directive21(argument61 : "stringValue16222") @Directive44(argument97 : ["stringValue16221"]) { + field16756: String + field16757: String + field16758: String + field16759: Float + field16760: Scalar2 + field16761: String +} + +type Object375 @Directive21(argument61 : "stringValue1106") @Directive44(argument97 : ["stringValue1105"]) { + field2227: Int +} + +type Object3750 implements Interface149 @Directive21(argument61 : "stringValue16224") @Directive44(argument97 : ["stringValue16223"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16762: String! + field16763: String + field16764: Interface149 +} + +type Object3751 @Directive21(argument61 : "stringValue16226") @Directive44(argument97 : ["stringValue16225"]) { + field16765: String! +} + +type Object3752 implements Interface149 @Directive21(argument61 : "stringValue16228") @Directive44(argument97 : ["stringValue16227"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16766: Boolean + field16767: [String] + field16768: Boolean +} + +type Object3753 @Directive21(argument61 : "stringValue16230") @Directive44(argument97 : ["stringValue16229"]) { + field16769: String! + field16770: Boolean! + field16771: String + field16772: String +} + +type Object3754 implements Interface149 @Directive21(argument61 : "stringValue16232") @Directive44(argument97 : ["stringValue16231"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16773: String! +} + +type Object3755 implements Interface151 @Directive21(argument61 : "stringValue16236") @Directive44(argument97 : ["stringValue16235"]) { + field16774: String! + field16775: Enum762 + field16776: Float + field16777: String + field16778: Interface150 + field16779: Interface149 + field16780: Enum763 + field16781: Int +} + +type Object3756 implements Interface151 @Directive21(argument61 : "stringValue16239") @Directive44(argument97 : ["stringValue16238"]) { + field16774: String! + field16775: Enum762 + field16776: Float + field16777: String + field16778: Interface150 + field16779: Interface149 + field16782: Enum764 + field16783: Object3757 +} + +type Object3757 implements Interface151 @Directive21(argument61 : "stringValue16242") @Directive44(argument97 : ["stringValue16241"]) { + field16774: String! + field16775: Enum762 + field16776: Float + field16777: String + field16778: Interface150 + field16779: Interface149 + field16784: String + field16785: String + field16786: Float @deprecated + field16787: Object3758 + field16791: Object3734 +} + +type Object3758 @Directive21(argument61 : "stringValue16244") @Directive44(argument97 : ["stringValue16243"]) { + field16788: Enum765 + field16789: String + field16790: Boolean +} + +type Object3759 @Directive21(argument61 : "stringValue16247") @Directive44(argument97 : ["stringValue16246"]) { + field16792: String! + field16793: [Object3760!] +} + +type Object376 @Directive21(argument61 : "stringValue1108") @Directive44(argument97 : ["stringValue1107"]) { + field2228: Scalar2 +} + +type Object3760 @Directive21(argument61 : "stringValue16249") @Directive44(argument97 : ["stringValue16248"]) { + field16794: String + field16795: [Object3761!] + field16798: Object3761 +} + +type Object3761 @Directive21(argument61 : "stringValue16251") @Directive44(argument97 : ["stringValue16250"]) { + field16796: String + field16797: String +} + +type Object3762 @Directive21(argument61 : "stringValue16253") @Directive44(argument97 : ["stringValue16252"]) { + field16799: Float + field16800: Float + field16801: String + field16802: String + field16803: Int + field16804: Boolean +} + +type Object3763 implements Interface149 @Directive21(argument61 : "stringValue16255") @Directive44(argument97 : ["stringValue16254"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String +} + +type Object3764 implements Interface149 @Directive21(argument61 : "stringValue16257") @Directive44(argument97 : ["stringValue16256"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16807: String +} + +type Object3765 implements Interface149 @Directive21(argument61 : "stringValue16259") @Directive44(argument97 : ["stringValue16258"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String + field16808: String + field16809: String + field16810: String +} + +type Object3766 implements Interface149 @Directive21(argument61 : "stringValue16261") @Directive44(argument97 : ["stringValue16260"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String +} + +type Object3767 implements Interface149 @Directive21(argument61 : "stringValue16263") @Directive44(argument97 : ["stringValue16262"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String +} + +type Object3768 implements Interface149 @Directive21(argument61 : "stringValue16265") @Directive44(argument97 : ["stringValue16264"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16811: String +} + +type Object3769 implements Interface149 @Directive21(argument61 : "stringValue16267") @Directive44(argument97 : ["stringValue16266"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16812: String +} + +type Object377 @Directive21(argument61 : "stringValue1110") @Directive44(argument97 : ["stringValue1109"]) { + field2229: String +} + +type Object3770 implements Interface149 @Directive21(argument61 : "stringValue16269") @Directive44(argument97 : ["stringValue16268"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16812: String +} + +type Object3771 implements Interface149 @Directive21(argument61 : "stringValue16271") @Directive44(argument97 : ["stringValue16270"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16808: String +} + +type Object3772 implements Interface149 @Directive21(argument61 : "stringValue16273") @Directive44(argument97 : ["stringValue16272"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16813: String + field16814: Object3762! +} + +type Object3773 implements Interface149 @Directive21(argument61 : "stringValue16275") @Directive44(argument97 : ["stringValue16274"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16809: String! +} + +type Object3774 implements Interface149 @Directive21(argument61 : "stringValue16277") @Directive44(argument97 : ["stringValue16276"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String +} + +type Object3775 implements Interface149 @Directive21(argument61 : "stringValue16279") @Directive44(argument97 : ["stringValue16278"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16815: Object3776! +} + +type Object3776 @Directive21(argument61 : "stringValue16281") @Directive44(argument97 : ["stringValue16280"]) { + field16816: String + field16817: [Object3749!] + field16818: Object3734 + field16819: Object3734 + field16820: Object3734 + field16821: Object3734 + field16822: Object3734 +} + +type Object3777 implements Interface149 @Directive21(argument61 : "stringValue16283") @Directive44(argument97 : ["stringValue16282"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String +} + +type Object3778 implements Interface149 @Directive21(argument61 : "stringValue16285") @Directive44(argument97 : ["stringValue16284"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16813: String! + field16823: String +} + +type Object3779 implements Interface149 @Directive21(argument61 : "stringValue16287") @Directive44(argument97 : ["stringValue16286"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16700: Object3736 +} + +type Object378 @Directive21(argument61 : "stringValue1113") @Directive44(argument97 : ["stringValue1112"]) { + field2230: Boolean +} + +type Object3780 implements Interface149 @Directive21(argument61 : "stringValue16289") @Directive44(argument97 : ["stringValue16288"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16808: String + field16824: String + field16825: String + field16826: Int + field16827: Int + field16828: Int +} + +type Object3781 implements Interface149 @Directive21(argument61 : "stringValue16291") @Directive44(argument97 : ["stringValue16290"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16829: String +} + +type Object3782 implements Interface149 @Directive21(argument61 : "stringValue16293") @Directive44(argument97 : ["stringValue16292"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16830: String +} + +type Object3783 implements Interface149 @Directive21(argument61 : "stringValue16295") @Directive44(argument97 : ["stringValue16294"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String + field16808: String! + field16831: String + field16832: String! + field16833: String! + field16834: String! + field16835: Boolean! + field16836: String + field16837: Int! +} + +type Object3784 implements Interface149 @Directive21(argument61 : "stringValue16297") @Directive44(argument97 : ["stringValue16296"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16824: Scalar3 + field16825: Scalar3 + field16838: Scalar3 +} + +type Object3785 implements Interface149 @Directive21(argument61 : "stringValue16299") @Directive44(argument97 : ["stringValue16298"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16832: String! + field16833: String! + field16834: String! + field16839: String! +} + +type Object3786 implements Interface149 @Directive21(argument61 : "stringValue16301") @Directive44(argument97 : ["stringValue16300"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16805: String @deprecated + field16806: String + field16808: String! + field16809: String + field16832: String! + field16833: String! + field16834: String! + field16840: String! + field16841: String +} + +type Object3787 implements Interface149 @Directive21(argument61 : "stringValue16303") @Directive44(argument97 : ["stringValue16302"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16773: String! + field16808: String! + field16809: String! + field16832: String! + field16833: String! + field16834: String! + field16835: Boolean! + field16836: String + field16837: Int! + field16842: String + field16843: Int! + field16844: String! + field16845: String! + field16846: String + field16847: String + field16848: Int + field16849: String! + field16850: Int! + field16851: String! + field16852: Boolean! +} + +type Object3788 implements Interface149 @Directive21(argument61 : "stringValue16305") @Directive44(argument97 : ["stringValue16304"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16808: String + field16834: String! + field16845: String! + field16853: String! + field16854: Boolean! + field16855: Boolean! + field16856: Int +} + +type Object3789 implements Interface149 @Directive21(argument61 : "stringValue16307") @Directive44(argument97 : ["stringValue16306"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16843: Int! + field16857: Boolean! + field16858: String! + field16859: [Object3753] +} + +type Object379 @Directive21(argument61 : "stringValue1115") @Directive44(argument97 : ["stringValue1114"]) { + field2231: Float +} + +type Object3790 implements Interface149 @Directive21(argument61 : "stringValue16309") @Directive44(argument97 : ["stringValue16308"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16845: String! +} + +type Object3791 implements Interface149 @Directive21(argument61 : "stringValue16311") @Directive44(argument97 : ["stringValue16310"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16845: String! +} + +type Object3792 implements Interface149 @Directive21(argument61 : "stringValue16313") @Directive44(argument97 : ["stringValue16312"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16808: String! + field16809: String! + field16832: String! + field16833: String! + field16834: String! + field16837: Int! + field16843: Int! + field16860: Boolean! + field16861: Boolean! + field16862: Boolean! + field16863: String +} + +type Object3793 implements Interface149 @Directive21(argument61 : "stringValue16315") @Directive44(argument97 : ["stringValue16314"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16808: String + field16809: String! + field16832: String! + field16833: String! + field16834: String! + field16835: Boolean! + field16836: String + field16837: Int! + field16843: Int! + field16845: String! + field16849: String! + field16850: Int! + field16851: String! +} + +type Object3794 implements Interface149 @Directive21(argument61 : "stringValue16317") @Directive44(argument97 : ["stringValue16316"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +type Object3795 implements Interface149 @Directive21(argument61 : "stringValue16319") @Directive44(argument97 : ["stringValue16318"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16773: String! + field16809: String! + field16832: String! + field16833: String! + field16834: String! + field16836: String + field16848: Int + field16852: Boolean! + field16864: String +} + +type Object3796 implements Interface149 @Directive21(argument61 : "stringValue16321") @Directive44(argument97 : ["stringValue16320"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 +} + +type Object3797 implements Interface149 @Directive21(argument61 : "stringValue16323") @Directive44(argument97 : ["stringValue16322"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16865: String! +} + +type Object3798 implements Interface149 @Directive21(argument61 : "stringValue16325") @Directive44(argument97 : ["stringValue16324"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16866: String +} + +type Object3799 implements Interface150 @Directive21(argument61 : "stringValue16327") @Directive44(argument97 : ["stringValue16326"]) { + field16723: Enum756 + field16724: Enum757 + field16725: Object3739 + field16740: Float + field16741: String + field16742: String + field16743: Object3739 + field16744: Object3742 +} + +type Object38 @Directive21(argument61 : "stringValue225") @Directive44(argument97 : ["stringValue224"]) { + field203: Float +} + +type Object380 @Directive21(argument61 : "stringValue1117") @Directive44(argument97 : ["stringValue1116"]) { + field2232: Int +} + +type Object3800 implements Interface149 @Directive21(argument61 : "stringValue16329") @Directive44(argument97 : ["stringValue16328"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16867: Object3745 +} + +type Object3801 implements Interface151 @Directive21(argument61 : "stringValue16331") @Directive44(argument97 : ["stringValue16330"]) { + field16774: String! + field16775: Enum762 + field16776: Float + field16777: String + field16778: Interface150 + field16779: Interface149 + field16868: Enum766 +} + +type Object3802 implements Interface149 @Directive21(argument61 : "stringValue16334") @Directive44(argument97 : ["stringValue16333"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16869: String +} + +type Object3803 implements Interface149 @Directive21(argument61 : "stringValue16336") @Directive44(argument97 : ["stringValue16335"]) { + field16680: Object3734 + field16698: String + field16699: Scalar1 + field16824: Scalar3 + field16825: Scalar3 +} + +type Object3804 implements Interface151 @Directive21(argument61 : "stringValue16338") @Directive44(argument97 : ["stringValue16337"]) { + field16774: String! + field16775: Enum762 + field16776: Float + field16777: String + field16778: Interface150 + field16779: Interface149 + field16870: Object3757 + field16871: String + field16872: String + field16873: Boolean + field16874: String + field16875: [Object3760!] + field16876: String + field16877: String + field16878: String + field16879: String + field16880: String + field16881: String + field16882: String + field16883: String + field16884: String + field16885: String + field16886: String + field16887: String + field16888: String + field16889: String + field16890: String + field16891: Object3805 +} + +type Object3805 @Directive21(argument61 : "stringValue16340") @Directive44(argument97 : ["stringValue16339"]) { + field16892: Object3759 + field16893: Object3751 +} + +type Object3806 implements Interface3 @Directive20(argument58 : "stringValue16342", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue16341") @Directive31 @Directive44(argument97 : ["stringValue16343", "stringValue16344"]) { + field16894: Object1549 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3807 implements Interface36 @Directive22(argument62 : "stringValue16345") @Directive30(argument79 : "stringValue16346") @Directive44(argument97 : ["stringValue16351", "stringValue16352", "stringValue16353"]) @Directive7(argument12 : "stringValue16350", argument13 : "stringValue16349", argument14 : "stringValue16348", argument17 : "stringValue16347", argument18 : false) { + field16895: Object3808 @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object3808 @Directive22(argument62 : "stringValue16354") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16355", "stringValue16356", "stringValue16357"]) { + field16896: String! @Directive30(argument80 : true) @Directive39 + field16897: String @Directive30(argument80 : true) @Directive40 + field16898: Boolean @Directive30(argument80 : true) @Directive41 + field16899: Enum767 @Directive30(argument80 : true) @Directive41 + field16900: String @Directive30(argument80 : true) @Directive40 + field16901: [Object3809] @Directive30(argument80 : true) @Directive39 +} + +type Object3809 @Directive22(argument62 : "stringValue16363") @Directive30(argument79 : "stringValue16364") @Directive44(argument97 : ["stringValue16365", "stringValue16366", "stringValue16367"]) { + field16902: String! @Directive30(argument80 : true) @Directive39 + field16903: String @Directive30(argument80 : true) @Directive40 + field16904: String! @Directive30(argument80 : true) @Directive39 + field16905: Int @Directive30(argument80 : true) @Directive41 + field16906: String @Directive30(argument80 : true) @Directive41 + field16907: String @Directive30(argument80 : true) @Directive41 + field16908: String @Directive30(argument80 : true) @Directive41 + field16909: String @Directive30(argument80 : true) @Directive41 +} + +type Object381 @Directive21(argument61 : "stringValue1119") @Directive44(argument97 : ["stringValue1118"]) { + field2233: Scalar2 +} + +type Object3810 implements Interface5 @Directive22(argument62 : "stringValue16368") @Directive31 @Directive44(argument97 : ["stringValue16369", "stringValue16370"]) { + field4776: Interface3 + field7454: Object450 + field7455: Object450 + field76: String + field77: String + field78: String +} + +type Object3811 implements Interface5 @Directive22(argument62 : "stringValue16371") @Directive31 @Directive44(argument97 : ["stringValue16372", "stringValue16373"]) { + field7454: Object450 + field7455: Object450 + field76: String + field77: String + field78: String +} + +type Object3812 implements Interface36 @Directive42(argument96 : ["stringValue16374", "stringValue16375", "stringValue16376"]) @Directive44(argument97 : ["stringValue16382", "stringValue16383"]) @Directive7(argument12 : "stringValue16380", argument13 : "stringValue16379", argument14 : "stringValue16378", argument16 : "stringValue16381", argument17 : "stringValue16377", argument18 : true) { + field16910: Boolean @Directive3(argument3 : "stringValue16384") @Directive41 + field2312: ID! +} + +type Object3813 @Directive22(argument62 : "stringValue16385") @Directive31 @Directive44(argument97 : ["stringValue16386", "stringValue16387"]) { + field16911: Object448 + field16912: [Object448] + field16913: Object448 + field16914: Object742 +} + +type Object3814 implements Interface2 @Directive22(argument62 : "stringValue16388") @Directive31 @Directive44(argument97 : ["stringValue16389", "stringValue16390"]) { + field12651: Object450 + field2: String + field3: Interface3 +} + +type Object3815 implements Interface3 @Directive22(argument62 : "stringValue16391") @Directive31 @Directive44(argument97 : ["stringValue16392", "stringValue16393"]) { + field2252: String! + field2253: ID + field2254: Interface3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3816 implements Interface3 @Directive22(argument62 : "stringValue16394") @Directive31 @Directive44(argument97 : ["stringValue16395", "stringValue16396"]) { + field16915: Object3382! + field16916: [String!] + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3817 implements Interface3 @Directive22(argument62 : "stringValue16397") @Directive31 @Directive44(argument97 : ["stringValue16398", "stringValue16399"]) { + field4: Object1 + field5098: String + field74: String + field75: Scalar1 +} + +type Object3818 implements Interface3 @Directive22(argument62 : "stringValue16400") @Directive31 @Directive44(argument97 : ["stringValue16401", "stringValue16402"]) { + field2223: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3819 implements Interface3 @Directive22(argument62 : "stringValue16403") @Directive31 @Directive44(argument97 : ["stringValue16404", "stringValue16405"]) { + field16917: [String] @deprecated + field16918: Boolean @deprecated + field16919: [String] + field16920: [String] + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object382 @Directive21(argument61 : "stringValue1121") @Directive44(argument97 : ["stringValue1120"]) { + field2234: String +} + +type Object3820 implements Interface3 @Directive22(argument62 : "stringValue16406") @Directive31 @Directive44(argument97 : ["stringValue16407", "stringValue16408"]) { + field2223: String! + field2224: String + field2252: String! + field2253: ID + field2254: Interface3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3821 implements Interface4 & Interface5 & Interface80 @Directive22(argument62 : "stringValue16409") @Directive31 @Directive44(argument97 : ["stringValue16410", "stringValue16411"]) @Directive45(argument98 : ["stringValue16412", "stringValue16413"]) { + field110: [Interface2] @deprecated + field12645: Object742 @deprecated + field16921: String + field16922: Object450 + field16923: [Object2136] @deprecated + field16924: [Object474] + field4776: Interface3 + field6628: String @Directive1 @deprecated + field7454: Object450 + field7455: Object450 + field76: String + field77: String + field78: String + field79: [Interface6] +} + +type Object3822 implements Interface80 @Directive22(argument62 : "stringValue16414") @Directive31 @Directive44(argument97 : ["stringValue16415", "stringValue16416"]) { + field16924: [Object474] @deprecated + field16925: Object474 + field16926: [Object3821]! + field16927: Object474 + field6628: String @Directive1 @deprecated +} + +type Object3823 implements Interface3 @Directive20(argument58 : "stringValue16417", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue16418") @Directive31 @Directive44(argument97 : ["stringValue16419", "stringValue16420"]) { + field16928: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3824 implements Interface3 @Directive22(argument62 : "stringValue16421") @Directive31 @Directive44(argument97 : ["stringValue16422", "stringValue16423"]) { + field16929: [String] + field2223: String + field2255: [String] + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3825 implements Interface3 @Directive20(argument58 : "stringValue16425", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue16424") @Directive31 @Directive44(argument97 : ["stringValue16426", "stringValue16427"]) { + field15645: Scalar3 + field15646: Scalar3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3826 implements Interface3 @Directive22(argument62 : "stringValue16428") @Directive31 @Directive44(argument97 : ["stringValue16429", "stringValue16430"]) { + field16930: ID! + field16931: Boolean + field2252: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3827 implements Interface3 @Directive22(argument62 : "stringValue16431") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16432", "stringValue16433"]) { + field15634: String! @Directive30(argument80 : true) @Directive39 + field16932: String @Directive30(argument80 : true) @Directive39 + field16933: Enum768! @Directive30(argument80 : true) @Directive39 + field4: Object1 @Directive30(argument80 : true) @Directive39 + field74: String @Directive30(argument80 : true) @Directive39 + field75: Scalar1 @Directive30(argument80 : true) @Directive39 +} + +type Object3828 implements Interface3 @Directive22(argument62 : "stringValue16437") @Directive31 @Directive44(argument97 : ["stringValue16438", "stringValue16439"]) { + field16290: String! + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3829 implements Interface152 @Directive21(argument61 : "stringValue16448") @Directive44(argument97 : ["stringValue16447"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field16954: Object3832 + field16976: String + field16977: String + field16978: String + field16979: String + field16980: Int + field16981: Boolean +} + +type Object383 @Directive21(argument61 : "stringValue1124") @Directive44(argument97 : ["stringValue1123"]) { + field2235: [Object384] + field2238: Float + field2239: Enum122 + field2240: String +} + +type Object3830 @Directive21(argument61 : "stringValue16442") @Directive44(argument97 : ["stringValue16441"]) { + field16935: String + field16936: String @deprecated + field16937: String @deprecated + field16938: [Object3831] + field16949: Enum770 @deprecated + field16950: Scalar1 + field16951: String +} + +type Object3831 @Directive21(argument61 : "stringValue16444") @Directive44(argument97 : ["stringValue16443"]) { + field16939: String + field16940: String + field16941: Enum769 + field16942: String + field16943: String + field16944: String + field16945: String + field16946: String + field16947: String + field16948: [String!] +} + +type Object3832 @Directive21(argument61 : "stringValue16450") @Directive44(argument97 : ["stringValue16449"]) { + field16955: [Object3833] + field16967: String + field16968: String + field16969: [String] + field16970: String @deprecated + field16971: String + field16972: Boolean + field16973: [String] + field16974: String + field16975: Enum771 +} + +type Object3833 @Directive21(argument61 : "stringValue16452") @Directive44(argument97 : ["stringValue16451"]) { + field16956: String + field16957: String + field16958: Boolean + field16959: Union184 + field16965: Boolean @deprecated + field16966: Boolean +} + +type Object3834 @Directive21(argument61 : "stringValue16455") @Directive44(argument97 : ["stringValue16454"]) { + field16960: Boolean +} + +type Object3835 @Directive21(argument61 : "stringValue16457") @Directive44(argument97 : ["stringValue16456"]) { + field16961: Float +} + +type Object3836 @Directive21(argument61 : "stringValue16459") @Directive44(argument97 : ["stringValue16458"]) { + field16962: Int +} + +type Object3837 @Directive21(argument61 : "stringValue16461") @Directive44(argument97 : ["stringValue16460"]) { + field16963: Scalar2 +} + +type Object3838 @Directive21(argument61 : "stringValue16463") @Directive44(argument97 : ["stringValue16462"]) { + field16964: String +} + +type Object3839 implements Interface153 @Directive21(argument61 : "stringValue16481") @Directive44(argument97 : ["stringValue16480"]) { + field16982: Enum772 + field16983: Enum773 + field16984: Object3840 + field16999: Float + field17000: String + field17001: String + field17002: Object3840 + field17003: Object3843 + field17006: Int +} + +type Object384 @Directive21(argument61 : "stringValue1126") @Directive44(argument97 : ["stringValue1125"]) { + field2236: String + field2237: Float +} + +type Object3840 @Directive21(argument61 : "stringValue16469") @Directive44(argument97 : ["stringValue16468"]) { + field16985: String + field16986: Enum774 + field16987: Enum775 + field16988: Enum776 + field16989: Object3841 +} + +type Object3841 @Directive21(argument61 : "stringValue16474") @Directive44(argument97 : ["stringValue16473"]) { + field16990: String + field16991: Float + field16992: Float + field16993: Float + field16994: Float + field16995: [Object3842] + field16998: Enum777 +} + +type Object3842 @Directive21(argument61 : "stringValue16476") @Directive44(argument97 : ["stringValue16475"]) { + field16996: String + field16997: Float +} + +type Object3843 @Directive21(argument61 : "stringValue16479") @Directive44(argument97 : ["stringValue16478"]) { + field17004: String + field17005: String +} + +type Object3844 implements Interface152 @Directive21(argument61 : "stringValue16483") @Directive44(argument97 : ["stringValue16482"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17007: String +} + +type Object3845 implements Interface152 @Directive21(argument61 : "stringValue16485") @Directive44(argument97 : ["stringValue16484"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +type Object3846 @Directive21(argument61 : "stringValue16487") @Directive44(argument97 : ["stringValue16486"]) { + field17008: Scalar2 + field17009: String + field17010: Scalar2 + field17011: String + field17012: Scalar2 + field17013: Scalar2 + field17014: String +} + +type Object3847 implements Interface154 @Directive21(argument61 : "stringValue16491") @Directive44(argument97 : ["stringValue16490"]) { + field17015: Enum778 + field17016: Enum779 +} + +type Object3848 implements Interface154 @Directive21(argument61 : "stringValue16494") @Directive44(argument97 : ["stringValue16493"]) { + field17015: Enum778 + field17017: String +} + +type Object3849 implements Interface152 @Directive21(argument61 : "stringValue16496") @Directive44(argument97 : ["stringValue16495"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +type Object385 implements Interface3 @Directive22(argument62 : "stringValue1128") @Directive31 @Directive44(argument97 : ["stringValue1129", "stringValue1130"]) { + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3850 implements Interface152 @Directive21(argument61 : "stringValue16498") @Directive44(argument97 : ["stringValue16497"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +type Object3851 implements Interface152 @Directive21(argument61 : "stringValue16500") @Directive44(argument97 : ["stringValue16499"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +type Object3852 @Directive21(argument61 : "stringValue16502") @Directive44(argument97 : ["stringValue16501"]) { + field17018: String + field17019: String + field17020: String + field17021: Float + field17022: Scalar2 + field17023: String +} + +type Object3853 implements Interface152 @Directive21(argument61 : "stringValue16504") @Directive44(argument97 : ["stringValue16503"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17024: String! + field17025: String + field17026: Interface152 +} + +type Object3854 implements Interface152 @Directive21(argument61 : "stringValue16506") @Directive44(argument97 : ["stringValue16505"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17027: Boolean + field17028: [String] + field17029: Boolean +} + +type Object3855 @Directive21(argument61 : "stringValue16508") @Directive44(argument97 : ["stringValue16507"]) { + field17030: String! + field17031: Boolean! + field17032: String + field17033: String +} + +type Object3856 implements Interface152 @Directive21(argument61 : "stringValue16510") @Directive44(argument97 : ["stringValue16509"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17034: String! +} + +type Object3857 implements Interface155 @Directive21(argument61 : "stringValue16514") @Directive44(argument97 : ["stringValue16513"]) { + field17035: String! + field17036: Enum780 + field17037: Float + field17038: String + field17039: Interface153 + field17040: Interface152 + field17041: Enum781 + field17042: Int +} + +type Object3858 implements Interface154 @Directive21(argument61 : "stringValue16517") @Directive44(argument97 : ["stringValue16516"]) { + field17015: Enum778 + field17017: String +} + +type Object3859 implements Interface155 @Directive21(argument61 : "stringValue16519") @Directive44(argument97 : ["stringValue16518"]) { + field17035: String! + field17036: Enum780 + field17037: Float + field17038: String + field17039: Interface153 + field17040: Interface152 + field17043: Enum782 + field17044: Object3860 +} + +type Object386 implements Interface23 @Directive22(argument62 : "stringValue1137") @Directive31 @Directive44(argument97 : ["stringValue1138", "stringValue1139"]) { + field2241: String + field2242: Enum123 + field2243: String +} + +type Object3860 implements Interface155 @Directive21(argument61 : "stringValue16522") @Directive44(argument97 : ["stringValue16521"]) { + field17035: String! + field17036: Enum780 + field17037: Float + field17038: String + field17039: Interface153 + field17040: Interface152 + field17045: String + field17046: String + field17047: Float @deprecated + field17048: Object3861 + field17052: Object3830 +} + +type Object3861 @Directive21(argument61 : "stringValue16524") @Directive44(argument97 : ["stringValue16523"]) { + field17049: Enum783 + field17050: String + field17051: Boolean +} + +type Object3862 @Directive21(argument61 : "stringValue16527") @Directive44(argument97 : ["stringValue16526"]) { + field17053: Float + field17054: Float + field17055: String + field17056: String + field17057: Int + field17058: Boolean +} + +type Object3863 implements Interface152 @Directive21(argument61 : "stringValue16529") @Directive44(argument97 : ["stringValue16528"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String +} + +type Object3864 implements Interface152 @Directive21(argument61 : "stringValue16531") @Directive44(argument97 : ["stringValue16530"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17061: String +} + +type Object3865 implements Interface152 @Directive21(argument61 : "stringValue16533") @Directive44(argument97 : ["stringValue16532"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String + field17062: String + field17063: String + field17064: String +} + +type Object3866 implements Interface152 @Directive21(argument61 : "stringValue16535") @Directive44(argument97 : ["stringValue16534"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String +} + +type Object3867 implements Interface152 @Directive21(argument61 : "stringValue16537") @Directive44(argument97 : ["stringValue16536"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String +} + +type Object3868 implements Interface152 @Directive21(argument61 : "stringValue16539") @Directive44(argument97 : ["stringValue16538"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17065: String +} + +type Object3869 implements Interface152 @Directive21(argument61 : "stringValue16541") @Directive44(argument97 : ["stringValue16540"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17066: String +} + +type Object387 implements Interface24 @Directive22(argument62 : "stringValue1143") @Directive31 @Directive44(argument97 : ["stringValue1144", "stringValue1145"]) { + field2244: String + field2245: String + field2246: String + field2247: String + field2248: [Interface11] +} + +type Object3870 implements Interface152 @Directive21(argument61 : "stringValue16543") @Directive44(argument97 : ["stringValue16542"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17066: String +} + +type Object3871 implements Interface152 @Directive21(argument61 : "stringValue16545") @Directive44(argument97 : ["stringValue16544"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17062: String +} + +type Object3872 implements Interface152 @Directive21(argument61 : "stringValue16547") @Directive44(argument97 : ["stringValue16546"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17067: String + field17068: Object3862! +} + +type Object3873 implements Interface152 @Directive21(argument61 : "stringValue16549") @Directive44(argument97 : ["stringValue16548"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17063: String! +} + +type Object3874 implements Interface152 @Directive21(argument61 : "stringValue16551") @Directive44(argument97 : ["stringValue16550"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String +} + +type Object3875 implements Interface152 @Directive21(argument61 : "stringValue16553") @Directive44(argument97 : ["stringValue16552"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17069: Object3876! +} + +type Object3876 @Directive21(argument61 : "stringValue16555") @Directive44(argument97 : ["stringValue16554"]) { + field17070: String + field17071: [Object3852!] + field17072: Object3830 + field17073: Object3830 + field17074: Object3830 + field17075: Object3830 + field17076: Object3830 +} + +type Object3877 implements Interface152 @Directive21(argument61 : "stringValue16557") @Directive44(argument97 : ["stringValue16556"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String +} + +type Object3878 implements Interface152 @Directive21(argument61 : "stringValue16559") @Directive44(argument97 : ["stringValue16558"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17067: String! + field17077: String +} + +type Object3879 implements Interface152 @Directive21(argument61 : "stringValue16561") @Directive44(argument97 : ["stringValue16560"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field16954: Object3832 +} + +type Object388 implements Interface24 @Directive22(argument62 : "stringValue1146") @Directive31 @Directive44(argument97 : ["stringValue1147", "stringValue1148"]) { + field2244: String + field2245: String + field2246: String + field2247: String +} + +type Object3880 implements Interface152 @Directive21(argument61 : "stringValue16563") @Directive44(argument97 : ["stringValue16562"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17062: String + field17078: String + field17079: String + field17080: Int + field17081: Int + field17082: Int +} + +type Object3881 implements Interface152 @Directive21(argument61 : "stringValue16565") @Directive44(argument97 : ["stringValue16564"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17083: String +} + +type Object3882 implements Interface152 @Directive21(argument61 : "stringValue16567") @Directive44(argument97 : ["stringValue16566"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17084: String +} + +type Object3883 implements Interface152 @Directive21(argument61 : "stringValue16569") @Directive44(argument97 : ["stringValue16568"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String + field17062: String! + field17085: String + field17086: String! + field17087: String! + field17088: String! + field17089: Boolean! + field17090: String + field17091: Int! +} + +type Object3884 implements Interface152 @Directive21(argument61 : "stringValue16571") @Directive44(argument97 : ["stringValue16570"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17078: Scalar3 + field17079: Scalar3 + field17092: Scalar3 +} + +type Object3885 implements Interface152 @Directive21(argument61 : "stringValue16573") @Directive44(argument97 : ["stringValue16572"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17086: String! + field17087: String! + field17088: String! + field17093: String! +} + +type Object3886 implements Interface152 @Directive21(argument61 : "stringValue16575") @Directive44(argument97 : ["stringValue16574"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17059: String @deprecated + field17060: String + field17062: String! + field17063: String + field17086: String! + field17087: String! + field17088: String! + field17094: String! + field17095: String +} + +type Object3887 implements Interface152 @Directive21(argument61 : "stringValue16577") @Directive44(argument97 : ["stringValue16576"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17034: String! + field17062: String! + field17063: String! + field17086: String! + field17087: String! + field17088: String! + field17089: Boolean! + field17090: String + field17091: Int! + field17096: String + field17097: Int! + field17098: String! + field17099: String! + field17100: String + field17101: String + field17102: Int + field17103: String! + field17104: Int! + field17105: String! + field17106: Boolean! +} + +type Object3888 implements Interface152 @Directive21(argument61 : "stringValue16579") @Directive44(argument97 : ["stringValue16578"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17062: String + field17088: String! + field17099: String! + field17107: String! + field17108: Boolean! + field17109: Boolean! + field17110: Int +} + +type Object3889 implements Interface152 @Directive21(argument61 : "stringValue16581") @Directive44(argument97 : ["stringValue16580"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17097: Int! + field17111: Boolean! + field17112: String! + field17113: [Object3855] +} + +type Object389 implements Interface3 @Directive22(argument62 : "stringValue1149") @Directive31 @Directive44(argument97 : ["stringValue1150", "stringValue1151"]) { + field2249: Int + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3890 implements Interface152 @Directive21(argument61 : "stringValue16583") @Directive44(argument97 : ["stringValue16582"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17099: String! +} + +type Object3891 implements Interface152 @Directive21(argument61 : "stringValue16585") @Directive44(argument97 : ["stringValue16584"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17099: String! +} + +type Object3892 implements Interface152 @Directive21(argument61 : "stringValue16587") @Directive44(argument97 : ["stringValue16586"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17062: String! + field17063: String! + field17086: String! + field17087: String! + field17088: String! + field17091: Int! + field17097: Int! + field17114: Boolean! + field17115: Boolean! + field17116: Boolean! + field17117: String +} + +type Object3893 implements Interface152 @Directive21(argument61 : "stringValue16589") @Directive44(argument97 : ["stringValue16588"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17062: String + field17063: String! + field17086: String! + field17087: String! + field17088: String! + field17089: Boolean! + field17090: String + field17091: Int! + field17097: Int! + field17099: String! + field17103: String! + field17104: Int! + field17105: String! +} + +type Object3894 implements Interface152 @Directive21(argument61 : "stringValue16591") @Directive44(argument97 : ["stringValue16590"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +type Object3895 implements Interface152 @Directive21(argument61 : "stringValue16593") @Directive44(argument97 : ["stringValue16592"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17034: String! + field17063: String! + field17086: String! + field17087: String! + field17088: String! + field17090: String + field17102: Int + field17106: Boolean! + field17118: String +} + +type Object3896 implements Interface152 @Directive21(argument61 : "stringValue16595") @Directive44(argument97 : ["stringValue16594"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 +} + +type Object3897 implements Interface152 @Directive21(argument61 : "stringValue16597") @Directive44(argument97 : ["stringValue16596"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17119: String! +} + +type Object3898 implements Interface154 @Directive21(argument61 : "stringValue16599") @Directive44(argument97 : ["stringValue16598"]) { + field17015: Enum778 + field17120: Object3832 +} + +type Object3899 implements Interface154 @Directive21(argument61 : "stringValue16601") @Directive44(argument97 : ["stringValue16600"]) { + field17015: Enum778 +} + +type Object39 @Directive21(argument61 : "stringValue227") @Directive44(argument97 : ["stringValue226"]) { + field204: Int +} + +type Object390 implements Interface25 & Interface26 & Interface27 & Interface28 & Interface29 & Interface30 & Interface31 & Interface32 @Directive20(argument58 : "stringValue1177", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1176") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1178", "stringValue1179"]) { + field2250: String @Directive30(argument80 : true) @Directive41 +} + +type Object3900 implements Interface154 @Directive21(argument61 : "stringValue16603") @Directive44(argument97 : ["stringValue16602"]) { + field17015: Enum778 + field17121: Object3901 +} + +type Object3901 @Directive21(argument61 : "stringValue16605") @Directive44(argument97 : ["stringValue16604"]) { + field17122: String + field17123: [Object3833] + field17124: String + field17125: Scalar2 + field17126: Scalar2 + field17127: String + field17128: String + field17129: String + field17130: String +} + +type Object3902 implements Interface152 @Directive21(argument61 : "stringValue16607") @Directive44(argument97 : ["stringValue16606"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17131: String +} + +type Object3903 implements Interface153 @Directive21(argument61 : "stringValue16609") @Directive44(argument97 : ["stringValue16608"]) { + field16982: Enum772 + field16983: Enum773 + field16984: Object3840 + field16999: Float + field17000: String + field17001: String + field17002: Object3840 + field17003: Object3843 +} + +type Object3904 implements Interface152 @Directive21(argument61 : "stringValue16611") @Directive44(argument97 : ["stringValue16610"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17132: Object3846 +} + +type Object3905 implements Interface155 @Directive21(argument61 : "stringValue16613") @Directive44(argument97 : ["stringValue16612"]) { + field17035: String! + field17036: Enum780 + field17037: Float + field17038: String + field17039: Interface153 + field17040: Interface152 + field17133: Enum784 +} + +type Object3906 implements Interface152 @Directive21(argument61 : "stringValue16616") @Directive44(argument97 : ["stringValue16615"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17134: String +} + +type Object3907 implements Interface152 @Directive21(argument61 : "stringValue16618") @Directive44(argument97 : ["stringValue16617"]) { + field16934: Object3830 + field16952: String + field16953: Scalar1 + field17078: Scalar3 + field17079: Scalar3 +} + +type Object3908 implements Interface156 @Directive21(argument61 : "stringValue16627") @Directive44(argument97 : ["stringValue16626"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17155: Object3911 + field17172: String + field17173: String + field17174: String + field17175: String + field17176: Int + field17177: Boolean +} + +type Object3909 @Directive21(argument61 : "stringValue16621") @Directive44(argument97 : ["stringValue16620"]) { + field17136: String + field17137: String @deprecated + field17138: String @deprecated + field17139: [Object3910] + field17150: Enum786 @deprecated + field17151: Scalar1 + field17152: String +} + +type Object391 implements Interface33 @Directive22(argument62 : "stringValue1183") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1184", "stringValue1185"]) { + field2251: String @Directive30(argument80 : true) @Directive41 +} + +type Object3910 @Directive21(argument61 : "stringValue16623") @Directive44(argument97 : ["stringValue16622"]) { + field17140: String + field17141: String + field17142: Enum785 + field17143: String + field17144: String + field17145: String + field17146: String + field17147: String + field17148: String + field17149: [String!] +} + +type Object3911 @Directive21(argument61 : "stringValue16629") @Directive44(argument97 : ["stringValue16628"]) { + field17156: [Object3912] + field17163: String + field17164: String + field17165: [String] + field17166: String @deprecated + field17167: String + field17168: Boolean + field17169: [String] + field17170: String + field17171: Enum787 +} + +type Object3912 @Directive21(argument61 : "stringValue16631") @Directive44(argument97 : ["stringValue16630"]) { + field17157: String + field17158: String + field17159: Boolean + field17160: Union185 + field17161: Boolean @deprecated + field17162: Boolean +} + +type Object3913 implements Interface157 @Directive21(argument61 : "stringValue16650") @Directive44(argument97 : ["stringValue16649"]) { + field17178: Enum788 + field17179: Enum789 + field17180: Object3914 + field17195: Float + field17196: String + field17197: String + field17198: Object3914 + field17199: Object3917 + field17202: Int +} + +type Object3914 @Directive21(argument61 : "stringValue16638") @Directive44(argument97 : ["stringValue16637"]) { + field17181: String + field17182: Enum790 + field17183: Enum791 + field17184: Enum792 + field17185: Object3915 +} + +type Object3915 @Directive21(argument61 : "stringValue16643") @Directive44(argument97 : ["stringValue16642"]) { + field17186: String + field17187: Float + field17188: Float + field17189: Float + field17190: Float + field17191: [Object3916] + field17194: Enum793 +} + +type Object3916 @Directive21(argument61 : "stringValue16645") @Directive44(argument97 : ["stringValue16644"]) { + field17192: String + field17193: Float +} + +type Object3917 @Directive21(argument61 : "stringValue16648") @Directive44(argument97 : ["stringValue16647"]) { + field17200: String + field17201: String +} + +type Object3918 implements Interface156 @Directive21(argument61 : "stringValue16652") @Directive44(argument97 : ["stringValue16651"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17203: String +} + +type Object3919 implements Interface156 @Directive21(argument61 : "stringValue16654") @Directive44(argument97 : ["stringValue16653"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +type Object392 implements Interface33 @Directive22(argument62 : "stringValue1186") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1187", "stringValue1188"]) { + field2251: String @Directive30(argument80 : true) @Directive41 +} + +type Object3920 @Directive21(argument61 : "stringValue16656") @Directive44(argument97 : ["stringValue16655"]) { + field17204: Scalar2 + field17205: String + field17206: Scalar2 + field17207: String + field17208: Scalar2 + field17209: Scalar2 + field17210: String +} + +type Object3921 implements Interface156 @Directive21(argument61 : "stringValue16658") @Directive44(argument97 : ["stringValue16657"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +type Object3922 implements Interface156 @Directive21(argument61 : "stringValue16660") @Directive44(argument97 : ["stringValue16659"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +type Object3923 implements Interface156 @Directive21(argument61 : "stringValue16662") @Directive44(argument97 : ["stringValue16661"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +type Object3924 @Directive21(argument61 : "stringValue16664") @Directive44(argument97 : ["stringValue16663"]) { + field17211: String + field17212: String + field17213: String + field17214: Float + field17215: Scalar2 + field17216: String +} + +type Object3925 implements Interface156 @Directive21(argument61 : "stringValue16666") @Directive44(argument97 : ["stringValue16665"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17217: String! + field17218: String + field17219: Interface156 +} + +type Object3926 @Directive21(argument61 : "stringValue16668") @Directive44(argument97 : ["stringValue16667"]) { + field17220: String! +} + +type Object3927 implements Interface156 @Directive21(argument61 : "stringValue16670") @Directive44(argument97 : ["stringValue16669"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17221: Boolean + field17222: [String] + field17223: Boolean +} + +type Object3928 @Directive21(argument61 : "stringValue16672") @Directive44(argument97 : ["stringValue16671"]) { + field17224: String! + field17225: Boolean! + field17226: String + field17227: String +} + +type Object3929 implements Interface156 @Directive21(argument61 : "stringValue16674") @Directive44(argument97 : ["stringValue16673"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17228: String! +} + +type Object393 implements Interface3 @Directive22(argument62 : "stringValue1189") @Directive31 @Directive44(argument97 : ["stringValue1190", "stringValue1191"]) { + field2223: String! + field2224: String + field2252: String! + field2253: ID + field2254: Interface3 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3930 implements Interface158 @Directive21(argument61 : "stringValue16678") @Directive44(argument97 : ["stringValue16677"]) { + field17229: String! + field17230: Enum794 + field17231: Float + field17232: String + field17233: Interface157 + field17234: Interface156 + field17235: Enum795 + field17236: Int +} + +type Object3931 implements Interface158 @Directive21(argument61 : "stringValue16681") @Directive44(argument97 : ["stringValue16680"]) { + field17229: String! + field17230: Enum794 + field17231: Float + field17232: String + field17233: Interface157 + field17234: Interface156 + field17237: Enum796 + field17238: Object3932 +} + +type Object3932 implements Interface158 @Directive21(argument61 : "stringValue16684") @Directive44(argument97 : ["stringValue16683"]) { + field17229: String! + field17230: Enum794 + field17231: Float + field17232: String + field17233: Interface157 + field17234: Interface156 + field17239: String + field17240: String + field17241: Float @deprecated + field17242: Object3933 + field17246: Object3909 +} + +type Object3933 @Directive21(argument61 : "stringValue16686") @Directive44(argument97 : ["stringValue16685"]) { + field17243: Enum797 + field17244: String + field17245: Boolean +} + +type Object3934 @Directive21(argument61 : "stringValue16689") @Directive44(argument97 : ["stringValue16688"]) { + field17247: String! + field17248: [Object3935!] +} + +type Object3935 @Directive21(argument61 : "stringValue16691") @Directive44(argument97 : ["stringValue16690"]) { + field17249: String + field17250: [Object3936!] + field17253: Object3936 +} + +type Object3936 @Directive21(argument61 : "stringValue16693") @Directive44(argument97 : ["stringValue16692"]) { + field17251: String + field17252: String +} + +type Object3937 @Directive21(argument61 : "stringValue16695") @Directive44(argument97 : ["stringValue16694"]) { + field17254: Float + field17255: Float + field17256: String + field17257: String + field17258: Int + field17259: Boolean +} + +type Object3938 implements Interface156 @Directive21(argument61 : "stringValue16697") @Directive44(argument97 : ["stringValue16696"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String +} + +type Object3939 implements Interface156 @Directive21(argument61 : "stringValue16699") @Directive44(argument97 : ["stringValue16698"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17262: String +} + +type Object394 implements Interface3 @Directive22(argument62 : "stringValue1192") @Directive31 @Directive44(argument97 : ["stringValue1193", "stringValue1194"]) { + field2255: [String] + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3940 implements Interface156 @Directive21(argument61 : "stringValue16701") @Directive44(argument97 : ["stringValue16700"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String + field17263: String + field17264: String + field17265: String +} + +type Object3941 implements Interface156 @Directive21(argument61 : "stringValue16703") @Directive44(argument97 : ["stringValue16702"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String +} + +type Object3942 implements Interface156 @Directive21(argument61 : "stringValue16705") @Directive44(argument97 : ["stringValue16704"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String +} + +type Object3943 implements Interface156 @Directive21(argument61 : "stringValue16707") @Directive44(argument97 : ["stringValue16706"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17266: String +} + +type Object3944 implements Interface156 @Directive21(argument61 : "stringValue16709") @Directive44(argument97 : ["stringValue16708"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17267: String +} + +type Object3945 implements Interface156 @Directive21(argument61 : "stringValue16711") @Directive44(argument97 : ["stringValue16710"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17267: String +} + +type Object3946 implements Interface156 @Directive21(argument61 : "stringValue16713") @Directive44(argument97 : ["stringValue16712"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17263: String +} + +type Object3947 implements Interface156 @Directive21(argument61 : "stringValue16715") @Directive44(argument97 : ["stringValue16714"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17268: String + field17269: Object3937! +} + +type Object3948 implements Interface156 @Directive21(argument61 : "stringValue16717") @Directive44(argument97 : ["stringValue16716"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17264: String! +} + +type Object3949 implements Interface156 @Directive21(argument61 : "stringValue16719") @Directive44(argument97 : ["stringValue16718"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String +} + +type Object395 @Directive22(argument62 : "stringValue1195") @Directive31 @Directive44(argument97 : ["stringValue1196", "stringValue1197", "stringValue1198"]) { + field2256: String + field2257: String + field2258: String! +} + +type Object3950 implements Interface156 @Directive21(argument61 : "stringValue16721") @Directive44(argument97 : ["stringValue16720"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17270: Object3951! +} + +type Object3951 @Directive21(argument61 : "stringValue16723") @Directive44(argument97 : ["stringValue16722"]) { + field17271: String + field17272: [Object3924!] + field17273: Object3909 + field17274: Object3909 + field17275: Object3909 + field17276: Object3909 + field17277: Object3909 +} + +type Object3952 implements Interface156 @Directive21(argument61 : "stringValue16725") @Directive44(argument97 : ["stringValue16724"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String +} + +type Object3953 implements Interface156 @Directive21(argument61 : "stringValue16727") @Directive44(argument97 : ["stringValue16726"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17268: String! + field17278: String +} + +type Object3954 implements Interface156 @Directive21(argument61 : "stringValue16729") @Directive44(argument97 : ["stringValue16728"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17155: Object3911 +} + +type Object3955 implements Interface156 @Directive21(argument61 : "stringValue16731") @Directive44(argument97 : ["stringValue16730"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17263: String + field17279: String + field17280: String + field17281: Int + field17282: Int + field17283: Int +} + +type Object3956 implements Interface156 @Directive21(argument61 : "stringValue16733") @Directive44(argument97 : ["stringValue16732"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17284: String +} + +type Object3957 implements Interface156 @Directive21(argument61 : "stringValue16735") @Directive44(argument97 : ["stringValue16734"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17285: String +} + +type Object3958 implements Interface156 @Directive21(argument61 : "stringValue16737") @Directive44(argument97 : ["stringValue16736"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String + field17263: String! + field17286: String + field17287: String! + field17288: String! + field17289: String! + field17290: Boolean! + field17291: String + field17292: Int! +} + +type Object3959 implements Interface156 @Directive21(argument61 : "stringValue16739") @Directive44(argument97 : ["stringValue16738"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17279: Scalar3 + field17280: Scalar3 + field17293: Scalar3 +} + +type Object396 @Directive22(argument62 : "stringValue1199") @Directive31 @Directive44(argument97 : ["stringValue1200", "stringValue1201", "stringValue1202"]) { + field2259: String + field2260: [Object395!] + field2261: String + field2262: String + field2263: String + field2264: Interface3 +} + +type Object3960 implements Interface156 @Directive21(argument61 : "stringValue16741") @Directive44(argument97 : ["stringValue16740"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17287: String! + field17288: String! + field17289: String! + field17294: String! +} + +type Object3961 implements Interface156 @Directive21(argument61 : "stringValue16743") @Directive44(argument97 : ["stringValue16742"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17260: String @deprecated + field17261: String + field17263: String! + field17264: String + field17287: String! + field17288: String! + field17289: String! + field17295: String! + field17296: String +} + +type Object3962 implements Interface156 @Directive21(argument61 : "stringValue16745") @Directive44(argument97 : ["stringValue16744"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17228: String! + field17263: String! + field17264: String! + field17287: String! + field17288: String! + field17289: String! + field17290: Boolean! + field17291: String + field17292: Int! + field17297: String + field17298: Int! + field17299: String! + field17300: String! + field17301: String + field17302: String + field17303: Int + field17304: String! + field17305: Int! + field17306: String! + field17307: Boolean! +} + +type Object3963 implements Interface156 @Directive21(argument61 : "stringValue16747") @Directive44(argument97 : ["stringValue16746"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17263: String + field17289: String! + field17300: String! + field17308: String! + field17309: Boolean! + field17310: Boolean! + field17311: Int +} + +type Object3964 implements Interface156 @Directive21(argument61 : "stringValue16749") @Directive44(argument97 : ["stringValue16748"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17298: Int! + field17312: Boolean! + field17313: String! + field17314: [Object3928] +} + +type Object3965 implements Interface156 @Directive21(argument61 : "stringValue16751") @Directive44(argument97 : ["stringValue16750"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17300: String! +} + +type Object3966 implements Interface156 @Directive21(argument61 : "stringValue16753") @Directive44(argument97 : ["stringValue16752"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17300: String! +} + +type Object3967 implements Interface156 @Directive21(argument61 : "stringValue16755") @Directive44(argument97 : ["stringValue16754"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17263: String! + field17264: String! + field17287: String! + field17288: String! + field17289: String! + field17292: Int! + field17298: Int! + field17315: Boolean! + field17316: Boolean! + field17317: Boolean! + field17318: String +} + +type Object3968 implements Interface156 @Directive21(argument61 : "stringValue16757") @Directive44(argument97 : ["stringValue16756"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17263: String + field17264: String! + field17287: String! + field17288: String! + field17289: String! + field17290: Boolean! + field17291: String + field17292: Int! + field17298: Int! + field17300: String! + field17304: String! + field17305: Int! + field17306: String! +} + +type Object3969 implements Interface156 @Directive21(argument61 : "stringValue16759") @Directive44(argument97 : ["stringValue16758"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +type Object397 implements Interface3 @Directive22(argument62 : "stringValue1203") @Directive31 @Directive44(argument97 : ["stringValue1204", "stringValue1205"]) { + field2265: Object398 + field2287: String + field2288: String + field2289: String + field2290: String + field2291: Int + field2292: Boolean + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object3970 implements Interface156 @Directive21(argument61 : "stringValue16761") @Directive44(argument97 : ["stringValue16760"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17228: String! + field17264: String! + field17287: String! + field17288: String! + field17289: String! + field17291: String + field17303: Int + field17307: Boolean! + field17319: String +} + +type Object3971 implements Interface156 @Directive21(argument61 : "stringValue16763") @Directive44(argument97 : ["stringValue16762"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 +} + +type Object3972 implements Interface156 @Directive21(argument61 : "stringValue16765") @Directive44(argument97 : ["stringValue16764"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17320: String! +} + +type Object3973 implements Interface156 @Directive21(argument61 : "stringValue16767") @Directive44(argument97 : ["stringValue16766"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17321: String +} + +type Object3974 implements Interface157 @Directive21(argument61 : "stringValue16769") @Directive44(argument97 : ["stringValue16768"]) { + field17178: Enum788 + field17179: Enum789 + field17180: Object3914 + field17195: Float + field17196: String + field17197: String + field17198: Object3914 + field17199: Object3917 +} + +type Object3975 implements Interface156 @Directive21(argument61 : "stringValue16771") @Directive44(argument97 : ["stringValue16770"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17322: Object3920 +} + +type Object3976 implements Interface158 @Directive21(argument61 : "stringValue16773") @Directive44(argument97 : ["stringValue16772"]) { + field17229: String! + field17230: Enum794 + field17231: Float + field17232: String + field17233: Interface157 + field17234: Interface156 + field17323: Enum798 +} + +type Object3977 implements Interface156 @Directive21(argument61 : "stringValue16776") @Directive44(argument97 : ["stringValue16775"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17324: String +} + +type Object3978 implements Interface156 @Directive21(argument61 : "stringValue16778") @Directive44(argument97 : ["stringValue16777"]) { + field17135: Object3909 + field17153: String + field17154: Scalar1 + field17279: Scalar3 + field17280: Scalar3 +} + +type Object3979 implements Interface158 @Directive21(argument61 : "stringValue16780") @Directive44(argument97 : ["stringValue16779"]) { + field17229: String! + field17230: Enum794 + field17231: Float + field17232: String + field17233: Interface157 + field17234: Interface156 + field17325: Object3932 + field17326: String + field17327: String + field17328: Boolean + field17329: String + field17330: [Object3935!] + field17331: String + field17332: String + field17333: String + field17334: String + field17335: String + field17336: String + field17337: String + field17338: String + field17339: String + field17340: String + field17341: String + field17342: String + field17343: String + field17344: String + field17345: String + field17346: Object3980 +} + +type Object398 @Directive20(argument58 : "stringValue1207", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1206") @Directive31 @Directive44(argument97 : ["stringValue1208", "stringValue1209"]) { + field2266: [Object399!] + field2278: String + field2279: String + field2280: [String!] + field2281: String + field2282: String + field2283: Boolean + field2284: [String!] + field2285: String + field2286: Enum124 +} + +type Object3980 @Directive21(argument61 : "stringValue16782") @Directive44(argument97 : ["stringValue16781"]) { + field17347: Object3934 + field17348: Object3926 +} + +type Object3981 @Directive22(argument62 : "stringValue16783") @Directive26(argument66 : 3, argument67 : "stringValue16785", argument68 : "stringValue16787", argument69 : "stringValue16788", argument70 : "stringValue16789", argument71 : "stringValue16784", argument72 : "stringValue16786") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue16790", "stringValue16791"]) { + field17349: String @Directive27(argument76 : "stringValue16792") @Directive30(argument80 : true) @Directive41 +} + +type Object3982 @Directive42(argument96 : ["stringValue16938", "stringValue16939", "stringValue16940"]) @Directive44(argument97 : ["stringValue16941"]) @Directive45(argument98 : ["stringValue16942", "stringValue16943"]) @Directive45(argument98 : ["stringValue16944", "stringValue16945"]) @Directive45(argument98 : ["stringValue16946", "stringValue16947"]) @Directive45(argument98 : ["stringValue16948", "stringValue16949"]) @Directive45(argument98 : ["stringValue16950"]) @Directive45(argument98 : ["stringValue16951", "stringValue16952"]) @Directive45(argument98 : ["stringValue16953", "stringValue16954"]) @Directive45(argument98 : ["stringValue16955", "stringValue16956"]) @Directive45(argument98 : ["stringValue16957"]) @Directive45(argument98 : ["stringValue16958", "stringValue16959"]) @Directive45(argument98 : ["stringValue16960", "stringValue16961"]) @Directive45(argument98 : ["stringValue16962", "stringValue16963"]) @Directive45(argument98 : ["stringValue16964"]) @Directive45(argument98 : ["stringValue16965", "stringValue16966"]) @Directive45(argument98 : ["stringValue16967", "stringValue16968"]) @Directive45(argument98 : ["stringValue16969", "stringValue16970"]) @Directive45(argument98 : ["stringValue16971", "stringValue16972"]) @Directive45(argument98 : ["stringValue16973", "stringValue16974"]) @Directive45(argument98 : ["stringValue16975", "stringValue16976"]) @Directive45(argument98 : ["stringValue16977", "stringValue16978"]) @Directive45(argument98 : ["stringValue16979", "stringValue16980"]) @Directive45(argument98 : ["stringValue16981", "stringValue16982"]) @Directive45(argument98 : ["stringValue16983", "stringValue16984"]) @Directive45(argument98 : ["stringValue16985", "stringValue16986"]) @Directive45(argument98 : ["stringValue16987", "stringValue16988"]) @Directive45(argument98 : ["stringValue16989", "stringValue16990"]) @Directive45(argument98 : ["stringValue16991", "stringValue16992"]) @Directive45(argument98 : ["stringValue16993", "stringValue16994", "stringValue16995"]) @Directive45(argument98 : ["stringValue16996", "stringValue16997"]) @Directive45(argument98 : ["stringValue16998"]) @Directive45(argument98 : ["stringValue16999", "stringValue17000"]) @Directive45(argument98 : ["stringValue17001", "stringValue17002"]) @Directive45(argument98 : ["stringValue17003", "stringValue17004"]) @Directive45(argument98 : ["stringValue17005", "stringValue17006"]) @Directive45(argument98 : ["stringValue17007", "stringValue17008"]) @Directive45(argument98 : ["stringValue17009", "stringValue17010"]) @Directive45(argument98 : ["stringValue17011", "stringValue17012"]) @Directive45(argument98 : ["stringValue17013", "stringValue17014"]) @Directive45(argument98 : ["stringValue17015", "stringValue17016"]) @Directive45(argument98 : ["stringValue17017", "stringValue17018"]) @Directive45(argument98 : ["stringValue17019", "stringValue17020"]) @Directive45(argument98 : ["stringValue17021", "stringValue17022"]) @Directive45(argument98 : ["stringValue17023", "stringValue17024"]) @Directive45(argument98 : ["stringValue17025", "stringValue17026"]) @Directive45(argument98 : ["stringValue17027", "stringValue17028"]) @Directive45(argument98 : ["stringValue17029", "stringValue17030"]) @Directive45(argument98 : ["stringValue17031", "stringValue17032"]) @Directive45(argument98 : ["stringValue17033", "stringValue17034"]) @Directive45(argument98 : ["stringValue17035"]) @Directive45(argument98 : ["stringValue17036", "stringValue17037"]) @Directive45(argument98 : ["stringValue17038", "stringValue17039"]) @Directive45(argument98 : ["stringValue17040", "stringValue17041"]) @Directive45(argument98 : ["stringValue17042", "stringValue17043"]) @Directive45(argument98 : ["stringValue17044", "stringValue17045"]) @Directive45(argument98 : ["stringValue17046"]) @Directive45(argument98 : ["stringValue17047", "stringValue17048"]) @Directive45(argument98 : ["stringValue17049", "stringValue17050"]) @Directive45(argument98 : ["stringValue17051", "stringValue17052"]) @Directive45(argument98 : ["stringValue17053", "stringValue17054"]) @Directive45(argument98 : ["stringValue17055", "stringValue17056", "stringValue17057"]) @Directive45(argument98 : ["stringValue17058", "stringValue17059", "stringValue17060"]) @Directive45(argument98 : ["stringValue17061", "stringValue17062", "stringValue17063"]) @Directive45(argument98 : ["stringValue17064", "stringValue17065", "stringValue17066"]) @Directive45(argument98 : ["stringValue17067", "stringValue17068"]) @Directive45(argument98 : ["stringValue17069", "stringValue17070"]) @Directive45(argument98 : ["stringValue17071", "stringValue17072"]) @Directive45(argument98 : ["stringValue17073", "stringValue17074"]) @Directive45(argument98 : ["stringValue17075", "stringValue17076"]) @Directive45(argument98 : ["stringValue17077", "stringValue17078"]) @Directive45(argument98 : ["stringValue17079", "stringValue17080", "stringValue17081"]) @Directive45(argument98 : ["stringValue17082", "stringValue17083", "stringValue17084"]) @Directive45(argument98 : ["stringValue17085", "stringValue17086", "stringValue17087"]) @Directive45(argument98 : ["stringValue17088", "stringValue17089", "stringValue17090"]) @Directive45(argument98 : ["stringValue17091", "stringValue17092", "stringValue17093"]) @Directive45(argument98 : ["stringValue17094"]) @Directive45(argument98 : ["stringValue17095"]) @Directive45(argument98 : ["stringValue17096"]) @Directive45(argument98 : ["stringValue17097"]) @Directive45(argument98 : ["stringValue17098"]) @Directive45(argument98 : ["stringValue17099"]) @Directive45(argument98 : ["stringValue17100"]) @Directive45(argument98 : ["stringValue17101", "stringValue17102"]) @Directive45(argument98 : ["stringValue17103", "stringValue17104"]) @Directive45(argument98 : ["stringValue17105", "stringValue17106"]) @Directive45(argument98 : ["stringValue17107"]) @Directive45(argument98 : ["stringValue17108"]) @Directive45(argument98 : ["stringValue17109"]) @Directive45(argument98 : ["stringValue17110"]) @Directive45(argument98 : ["stringValue17111"]) @Directive45(argument98 : ["stringValue17112"]) @Directive45(argument98 : ["stringValue17113"]) @Directive45(argument98 : ["stringValue17114", "stringValue17115"]) @Directive45(argument98 : ["stringValue17116"]) @Directive45(argument98 : ["stringValue17117"]) @Directive45(argument98 : ["stringValue17118"]) @Directive45(argument98 : ["stringValue17119"]) @Directive45(argument98 : ["stringValue17120", "stringValue17121"]) @Directive45(argument98 : ["stringValue17122", "stringValue17123"]) @Directive45(argument98 : ["stringValue17124", "stringValue17125"]) @Directive45(argument98 : ["stringValue17126"]) @Directive45(argument98 : ["stringValue17127"]) @Directive45(argument98 : ["stringValue17128"]) @Directive45(argument98 : ["stringValue17129"]) @Directive45(argument98 : ["stringValue17130"]) @Directive45(argument98 : ["stringValue17131"]) @Directive45(argument98 : ["stringValue17132"]) @Directive45(argument98 : ["stringValue17133"]) @Directive45(argument98 : ["stringValue17134"]) @Directive45(argument98 : ["stringValue17135", "stringValue17136"]) @Directive45(argument98 : ["stringValue17137"]) @Directive45(argument98 : ["stringValue17138"]) @Directive45(argument98 : ["stringValue17139"]) @Directive45(argument98 : ["stringValue17140"]) @Directive45(argument98 : ["stringValue17141"]) @Directive45(argument98 : ["stringValue17142"]) @Directive45(argument98 : ["stringValue17143"]) @Directive45(argument98 : ["stringValue17144"]) @Directive45(argument98 : ["stringValue17145"]) @Directive45(argument98 : ["stringValue17146"]) @Directive45(argument98 : ["stringValue17147"]) @Directive45(argument98 : ["stringValue17148"]) @Directive45(argument98 : ["stringValue17149"]) @Directive45(argument98 : ["stringValue17150"]) @Directive45(argument98 : ["stringValue17151"]) @Directive45(argument98 : ["stringValue17152"]) @Directive45(argument98 : ["stringValue17153"]) @Directive45(argument98 : ["stringValue17154"]) @Directive45(argument98 : ["stringValue17155"]) @Directive45(argument98 : ["stringValue17156"]) @Directive45(argument98 : ["stringValue17157"]) @Directive45(argument98 : ["stringValue17158"]) @Directive45(argument98 : ["stringValue17159"]) @Directive45(argument98 : ["stringValue17160"]) @Directive45(argument98 : ["stringValue17161"]) @Directive45(argument98 : ["stringValue17162"]) @Directive45(argument98 : ["stringValue17163"]) @Directive45(argument98 : ["stringValue17164"]) @Directive45(argument98 : ["stringValue17165"]) @Directive45(argument98 : ["stringValue17166"]) @Directive45(argument98 : ["stringValue17167"]) @Directive45(argument98 : ["stringValue17168"]) @Directive45(argument98 : ["stringValue17169"]) @Directive45(argument98 : ["stringValue17170"]) @Directive45(argument98 : ["stringValue17171"]) @Directive45(argument98 : ["stringValue17172"]) @Directive45(argument98 : ["stringValue17173"]) @Directive45(argument98 : ["stringValue17174"]) @Directive45(argument98 : ["stringValue17175"]) @Directive45(argument98 : ["stringValue17176"]) @Directive45(argument98 : ["stringValue17177"]) @Directive45(argument98 : ["stringValue17178"]) @Directive45(argument98 : ["stringValue17179"]) @Directive45(argument98 : ["stringValue17180"]) @Directive45(argument98 : ["stringValue17181"]) @Directive45(argument98 : ["stringValue17182"]) @Directive45(argument98 : ["stringValue17183"]) @Directive45(argument98 : ["stringValue17184"]) @Directive45(argument98 : ["stringValue17185"]) @Directive45(argument98 : ["stringValue17186"]) @Directive45(argument98 : ["stringValue17187"]) @Directive45(argument98 : ["stringValue17188"]) @Directive45(argument98 : ["stringValue17189"]) @Directive45(argument98 : ["stringValue17190"]) @Directive45(argument98 : ["stringValue17191"]) @Directive45(argument98 : ["stringValue17192"]) @Directive45(argument98 : ["stringValue17193"]) { + field17350: String @Directive1 @deprecated + field17351(argument465: InputObject42): Object3983 @Directive16(argument54 : "stringValue17194") + field17355(argument466: InputObject43): Object3984 @Directive16(argument54 : "stringValue17213") + field17359(argument467: InputObject44): Object3985 @Directive16(argument54 : "stringValue17224") + field17368(argument468: InputObject45!): Interface159 @Directive16(argument54 : "stringValue17237") + field17370(argument469: InputObject48!, argument470: ID): String @Directive16(argument54 : "stringValue17250") + field17371(argument471: InputObject49!): String @Directive16(argument54 : "stringValue17253") + field17372(argument472: InputObject45!): Object3987 @Directive49(argument102 : "stringValue17256") + field17377(argument475: InputObject45!, argument476: [Scalar3], argument477: Boolean, argument478: Scalar2): Object3991 @Directive49(argument102 : "stringValue17278") + field17379(argument479: InputObject45!): Object3995 @Directive26(argument66 : 4, argument67 : "stringValue17293", argument68 : "stringValue17295", argument69 : "stringValue17296", argument70 : "stringValue17297", argument71 : "stringValue17292", argument72 : "stringValue17294", argument73 : "stringValue17298", argument74 : "stringValue17299", argument75 : "stringValue17300") @Directive49(argument102 : "stringValue17291") + field17380(argument480: InputObject45!, argument481: InputObject51): Object3997 @Directive49(argument102 : "stringValue17308") + field17394(argument482: InputObject52): Object4004 @Directive16(argument54 : "stringValue17333") + field17397(argument483: InputObject45!): Interface3 @Directive16(argument54 : "stringValue17339") @Directive22(argument62 : "stringValue17338") + field17398(argument484: InputObject45!): Interface159 @Directive16(argument54 : "stringValue17341") @Directive22(argument62 : "stringValue17340") + field17399(argument485: InputObject53): Object4005 @Directive16(argument54 : "stringValue17342") + field17404(argument486: InputObject53, argument487: [String], argument488: ID!): Object4005 @Directive16(argument54 : "stringValue17367") + field17405(argument489: InputObject59): Object1896 @Directive16(argument54 : "stringValue17368") + field17406(argument490: InputObject60): Object4006 @Directive16(argument54 : "stringValue17372") + field17408(argument491: InputObject61): Object4007 @Directive16(argument54 : "stringValue17379") + field18740(argument767: InputObject45!): Object4278 @Directive49(argument102 : "stringValue19518") + field18741(argument768: InputObject45!): Object4279 @Directive49(argument102 : "stringValue19522") + field18743: String! @Directive49(argument102 : "stringValue19535") + field18744(argument769: InputObject45!): Object4279 @Directive49(argument102 : "stringValue19536") + field18745(argument770: InputObject85!): Object4283 @Directive49(argument102 : "stringValue19537") + field18902(argument771: InputObject88): Object4313 @Directive16(argument54 : "stringValue19646") + field18910(argument772: InputObject90): Object2419 @Directive16(argument54 : "stringValue19671") + field18911(argument773: InputObject45): Object4315 @Directive49(argument102 : "stringValue19675") + field18912(argument774: InputObject91!): Object4319! @Directive16(argument54 : "stringValue19676") + field18915(argument775: InputObject91!): Object4320! @Directive16(argument54 : "stringValue19683") + field18918(argument776: InputObject92): Object4321 @Directive16(argument54 : "stringValue19687") + field18933(argument781: InputObject45!): Object4328 + field18938(argument782: Enum544, argument783: ID, argument784: InputObject94): Object4332 @Directive49(argument102 : "stringValue19747") + field18981(argument785: ID!, argument786: InputObject110): Object4345 @Directive49(argument102 : "stringValue19841") + field18986(argument787: Enum544, argument788: ID, argument789: Int): Object4346 @Directive49(argument102 : "stringValue19848") + field18995(argument790: InputObject111!): Object4349! @Directive16(argument54 : "stringValue19858") + field18998(argument791: InputObject45!): Object4350 @Directive49(argument102 : "stringValue19865") + field18999(argument792: InputObject112!): Object4351 @Directive9(argument30 : "stringValue19871", argument33 : "stringValue19870", argument34 : "stringValue19869") + field19007: String @Directive16(argument54 : "stringValue19894") + field19008(argument793: InputObject113): Object4352 @Directive16(argument54 : "stringValue19895") + field19010(argument794: InputObject114!): Object4353 @Directive16(argument54 : "stringValue19900") + field19120(argument795: InputObject115!): Object4386 @Directive16(argument54 : "stringValue20093") + field19123(argument796: InputObject116!): Object4387 @Directive16(argument54 : "stringValue20101") + field19126(argument797: InputObject117!): Object4388 @Directive16(argument54 : "stringValue20109") + field19129(argument798: InputObject118!): Object4389 @Directive16(argument54 : "stringValue20117") + field19132(argument799: InputObject119!): Object4390 @Directive16(argument54 : "stringValue20125") + field19135(argument800: InputObject120!): Object4391 @Directive16(argument54 : "stringValue20133") + field19138(argument801: InputObject121!): Object4392 @Directive16(argument54 : "stringValue20141") + field19141(argument802: InputObject122): Object4393 @Directive16(argument54 : "stringValue20150") + field19146(argument803: InputObject127): Object4395 @Directive9(argument30 : "stringValue20174", argument32 : "stringValue20175", argument33 : "stringValue20173", argument34 : "stringValue20172") + field19214(argument816: InputObject129): Object4413 @Directive9(argument30 : "stringValue20316", argument33 : "stringValue20315", argument34 : "stringValue20314") + field19215(argument817: InputObject130): Object4413 @Directive9(argument30 : "stringValue20325", argument33 : "stringValue20324", argument34 : "stringValue20323") + field19216(argument818: InputObject131): Object3459! @Directive10(argument37 : "stringValue20332", argument39 : "stringValue20331", argument40 : "stringValue20330", argument42 : "stringValue20329") + field19217(argument819: InputObject132): Object3459! @Directive9(argument30 : "stringValue20338", argument33 : "stringValue20337", argument34 : "stringValue20336") + field19218(argument820: InputObject133): Object4416 @Directive16(argument54 : "stringValue20342") + field19220(argument821: InputObject134): Object4417 @Directive16(argument54 : "stringValue20349") + field19317(argument838: InputObject161): Object4417 @Directive16(argument54 : "stringValue20592") + field19318(argument839: InputObject164): Object4417 @Directive16(argument54 : "stringValue20602") + field19319(argument840: InputObject169): Object4417 @Directive16(argument54 : "stringValue20618") + field19320(argument841: InputObject181): Object4417 @Directive16(argument54 : "stringValue20655") + field19321(argument842: InputObject190!): Union196 @Directive22(argument62 : "stringValue20683") @Directive9(argument29 : "stringValue20687", argument30 : "stringValue20686", argument33 : "stringValue20685", argument34 : "stringValue20684") + field19322(argument843: InputObject194): Object3459 @Directive9(argument30 : "stringValue20705", argument33 : "stringValue20704", argument34 : "stringValue20703") + field19323(argument844: InputObject195): [Object4397] @Directive9(argument31 : "stringValue20711", argument33 : "stringValue20710", argument34 : "stringValue20709") + field19324(argument845: InputObject196): [Object4399] @Directive9(argument31 : "stringValue20717", argument33 : "stringValue20716", argument34 : "stringValue20715") + field19325(argument846: InputObject197): [Object4420] @Directive9(argument31 : "stringValue20723", argument33 : "stringValue20722", argument34 : "stringValue20721") + field19326(argument847: InputObject198): [Object4433] @Directive9(argument31 : "stringValue20729", argument33 : "stringValue20728", argument34 : "stringValue20727") + field19327(argument848: InputObject199): Object4446 @Directive16(argument54 : "stringValue20733") + field19331(argument849: InputObject200!): Object4447! @Directive10(argument37 : "stringValue20746", argument39 : "stringValue20745", argument40 : "stringValue20744", argument42 : "stringValue20743") + field19335(argument850: InputObject201!): Boolean! @Directive11(argument47 : "stringValue20772", argument48 : "stringValue20771") + field19336(argument851: InputObject202!): Object4448! @Directive10(argument37 : "stringValue20780", argument39 : "stringValue20779", argument40 : "stringValue20778", argument42 : "stringValue20777") + field19356(argument856: InputObject203!): Boolean! @Directive11(argument47 : "stringValue20855", argument48 : "stringValue20854") + field19357(argument857: InputObject204!): Object4449! @Directive10(argument37 : "stringValue20863", argument39 : "stringValue20862", argument40 : "stringValue20861", argument42 : "stringValue20860") + field19358(argument858: InputObject206!): Boolean! @Directive11(argument47 : "stringValue20873", argument48 : "stringValue20872") + field19359(argument859: InputObject207): Object2253 @Directive16(argument54 : "stringValue20881") @Directive26(argument67 : "stringValue20883", argument68 : "stringValue20884", argument69 : "stringValue20885", argument70 : "stringValue20886", argument71 : "stringValue20882") @Directive30(argument85 : "stringValue20879", argument86 : "stringValue20878", argument87 : "stringValue20880") + field19360(argument860: InputObject208): Object2253 @Directive16(argument54 : "stringValue20897") @Directive26(argument67 : "stringValue20899", argument68 : "stringValue20900", argument69 : "stringValue20901", argument70 : "stringValue20902", argument71 : "stringValue20898") @Directive30(argument85 : "stringValue20895", argument86 : "stringValue20894", argument87 : "stringValue20896") + field19361(argument861: InputObject209): Object4453 @Directive16(argument54 : "stringValue20909") @Directive26(argument67 : "stringValue20911", argument68 : "stringValue20912", argument69 : "stringValue20913", argument70 : "stringValue20914", argument71 : "stringValue20910") @Directive30(argument85 : "stringValue20907", argument86 : "stringValue20906", argument87 : "stringValue20908") + field19363(argument862: InputObject210!): Object2360! @Directive26(argument67 : "stringValue20926", argument71 : "stringValue20925") @Directive9(argument30 : "stringValue20923", argument32 : "stringValue20924", argument33 : "stringValue20922", argument34 : "stringValue20921") + field19364(argument863: InputObject211!): Object4454! @Directive16(argument54 : "stringValue20930") @Directive26(argument67 : "stringValue20932", argument71 : "stringValue20931") + field19366(argument864: InputObject212!): Interface36! @Directive10(argument37 : "stringValue20942", argument39 : "stringValue20941", argument40 : "stringValue20940", argument42 : "stringValue20939") + field19367(argument865: InputObject213!): Boolean! @Directive11(argument44 : "stringValue20947", argument47 : "stringValue20946", argument48 : "stringValue20945") + field19368(argument866: InputObject214!): Object4455! @Directive16(argument54 : "stringValue20950") + field19371(argument867: InputObject216!): Object4456! @Directive16(argument54 : "stringValue20961") + field19374(argument868: InputObject219!): Object4457! @Directive16(argument54 : "stringValue20975") + field19377(argument869: InputObject220!): Object4458 @Directive16(argument54 : "stringValue20982", argument55 : "stringValue20983") + field19380(argument870: InputObject222!): Object4458 @Directive16(argument54 : "stringValue20993", argument55 : "stringValue20994") + field19381(argument871: InputObject223!): Object4458 @Directive16(argument54 : "stringValue20998", argument55 : "stringValue20999") + field19382(argument872: InputObject224!): Object4459 @Directive16(argument54 : "stringValue21003", argument55 : "stringValue21004") + field19398(argument873: InputObject228!): Object4464 @Directive16(argument54 : "stringValue21039", argument55 : "stringValue21040") + field19403(argument874: InputObject229!): Object4465 @Directive16(argument54 : "stringValue21048", argument55 : "stringValue21049") + field19408(argument875: InputObject85!): Object4466! @Directive16(argument54 : "stringValue21060") + field19447(argument876: InputObject231!): Interface36 @Directive16(argument54 : "stringValue21093") + field19448(argument877: InputObject232): Object1819 @Directive16(argument54 : "stringValue21096") + field19449(argument878: InputObject233!): Object4474! @Directive16(argument54 : "stringValue21100") + field19452(argument879: InputObject234!): String @Directive16(argument54 : "stringValue21107") + field19453(argument880: InputObject235!): String @Directive16(argument54 : "stringValue21111") + field19454(argument881: InputObject236!): Object4475! @Directive10(argument37 : "stringValue21122", argument39 : "stringValue21121", argument40 : "stringValue21120", argument42 : "stringValue21119") + field19470(argument882: InputObject237!): Object4475! @Directive9(argument30 : "stringValue21185", argument33 : "stringValue21184", argument34 : "stringValue21183") + field19471(argument883: InputObject237!): Object4475! @Directive9(argument30 : "stringValue21192", argument33 : "stringValue21191", argument34 : "stringValue21190") + field19472(argument884: InputObject238!): Boolean! @Directive11(argument44 : "stringValue21195", argument47 : "stringValue21194", argument48 : "stringValue21193") + field19473(argument885: InputObject239): Interface36 @Directive9(argument30 : "stringValue21202", argument33 : "stringValue21201", argument34 : "stringValue21200") + field19474(argument886: InputObject246): Object4483 @Directive16(argument54 : "stringValue21224") + field19502(argument896: InputObject246): Object4483 @Directive16(argument54 : "stringValue21356") + field19503(argument897: InputObject246): Object4483 @Directive16(argument54 : "stringValue21357") + field19504(argument898: InputObject246): Object4483 @Directive16(argument54 : "stringValue21358") + field19505(argument899: InputObject249!): Object4494 @Directive16(argument54 : "stringValue21359") + field19527(argument900: InputObject251!): Object4490 @Directive10(argument37 : "stringValue21387", argument39 : "stringValue21386", argument40 : "stringValue21385", argument42 : "stringValue21384") + field19528(argument901: InputObject252!): Object4490 @Directive9(argument30 : "stringValue21393", argument33 : "stringValue21392", argument34 : "stringValue21391") + field19529(argument902: InputObject253): Object4487 @Directive10(argument37 : "stringValue21400", argument39 : "stringValue21399", argument40 : "stringValue21398", argument42 : "stringValue21397") + field19530(argument903: InputObject254): Object4487 @Directive9(argument30 : "stringValue21406", argument33 : "stringValue21405", argument34 : "stringValue21404") + field19531(argument904: InputObject246): Object4497 @Directive16(argument54 : "stringValue21410") + field19541(argument905: InputObject246): Object4497 @Directive16(argument54 : "stringValue21427") + field19542(argument906: InputObject246): Object4497 @Directive16(argument54 : "stringValue21428") + field19543(argument907: InputObject246): Object4497 @Directive16(argument54 : "stringValue21429") + field19544(argument908: InputObject255!): Object4499! @Directive16(argument54 : "stringValue21430") + field19580(argument909: InputObject256!): Object4499! @Directive16(argument54 : "stringValue21528") + field19581(argument910: InputObject261!): Object4499! @Directive16(argument54 : "stringValue21549") + field19582(argument911: InputObject262!): Object4499! @Directive16(argument54 : "stringValue21554") + field19583(argument912: InputObject265!): Boolean! @Directive11(argument44 : "stringValue21569", argument47 : "stringValue21568", argument48 : "stringValue21567") + field19584(argument913: InputObject266!): Object4508 @Directive16(argument54 : "stringValue21574") + field19593(argument914: InputObject267): Object4511 @Directive16(argument54 : "stringValue21583") + field19597(argument915: InputObject268): Object4512 @Directive16(argument54 : "stringValue21588") + field19600(argument916: InputObject269): Object4513 @Directive16(argument54 : "stringValue21593") + field19602(argument917: InputObject270!): Object4514 @Directive16(argument54 : "stringValue21598") + field19605(argument918: InputObject272): Object4515 @Directive16(argument54 : "stringValue21605") + field19609(argument919: InputObject273!): Object2343! @Directive10(argument37 : "stringValue21613", argument39 : "stringValue21612", argument40 : "stringValue21611", argument42 : "stringValue21610") + field19610(argument920: InputObject274!): Object2028! @Directive10(argument37 : "stringValue21619", argument39 : "stringValue21618", argument40 : "stringValue21617", argument42 : "stringValue21616") + field19611(argument921: InputObject275!): Object4516 @Directive16(argument54 : "stringValue21623") + field19615(argument922: InputObject276!): Object4517! @Directive16(argument54 : "stringValue21634", argument55 : "stringValue21635") + field19617(argument923: InputObject277!): Object4517! @Directive16(argument54 : "stringValue21646", argument55 : "stringValue21647") + field19618(argument924: InputObject279!): Object4517! @Directive11(argument43 : "stringValue21657", argument44 : "stringValue21656", argument47 : "stringValue21655", argument48 : "stringValue21654") + field19619(argument925: InputObject280!): Object4518 @Directive16(argument54 : "stringValue21661") + field19623(argument926: InputObject281!): Object4519 @Directive16(argument54 : "stringValue21666") + field19631(argument927: InputObject283!): Object4522 @Directive16(argument54 : "stringValue21677") + field19635(argument928: InputObject284!): Object4523 @Directive16(argument54 : "stringValue21682") + field19639(argument929: InputObject286!): Object4524 @Directive16(argument54 : "stringValue21689") + field19662(argument930: InputObject287!): Object4527 @Directive16(argument54 : "stringValue21701") @Directive30(argument85 : "stringValue21699", argument86 : "stringValue21698", argument87 : "stringValue21700") + field19670(argument931: InputObject339!): Object4529 @Directive16(argument54 : "stringValue21915") + field19675(argument932: InputObject340!): Object4530! @Directive16(argument54 : "stringValue21922", argument55 : "stringValue21923") + field19677(argument933: InputObject341!): Object4530! @Directive16(argument54 : "stringValue21930", argument55 : "stringValue21931") + field19678(argument934: InputObject343!): Object4530! @Directive11(argument43 : "stringValue21941", argument44 : "stringValue21940", argument47 : "stringValue21939", argument48 : "stringValue21938") + field19679(argument935: InputObject344!): Object4531 @Directive16(argument54 : "stringValue21945") + field19684(argument936: InputObject345!): Object4533 @Directive16(argument54 : "stringValue21954") + field19688(argument937: InputObject346!): Object4534 @Directive16(argument54 : "stringValue21959") + field19691(argument938: InputObject348!): Object4535 @Directive16(argument54 : "stringValue21966") + field19694(argument939: InputObject349!): Object4536 @Directive16(argument54 : "stringValue21971", argument55 : "stringValue21972") + field19701(argument940: InputObject358!): Object4538 @Directive16(argument54 : "stringValue22014", argument55 : "stringValue22015") + field19705(argument941: InputObject359!): Object4539 @Directive16(argument54 : "stringValue22022", argument55 : "stringValue22023") + field19709(argument942: InputObject366!): Object4540 @Directive16(argument54 : "stringValue22048", argument55 : "stringValue22049") + field19721(argument943: [InputObject375!]): Object4544 @Directive16(argument54 : "stringValue22093", argument55 : "stringValue22094") + field19768(argument944: [InputObject375!]): Object4553 @Directive16(argument54 : "stringValue22153", argument55 : "stringValue22154") + field19773(argument945: [InputObject378!]): Object4554 @Directive16(argument54 : "stringValue22158", argument55 : "stringValue22159") + field19777(argument946: Scalar2!, argument947: InputObject379!): Object4555 @Directive16(argument54 : "stringValue22166", argument55 : "stringValue22167") + field19781(argument948: Scalar2!, argument949: InputObject379!): Object4555 @Directive16(argument54 : "stringValue22174", argument55 : "stringValue22175") + field19782(argument950: InputObject380): Object4556 @Directive16(argument54 : "stringValue22176", argument55 : "stringValue22177") + field19786(argument951: InputObject390!): Object4557! @Directive16(argument54 : "stringValue22222") + field19789: Object4558! @Directive36 + field19818: Object4562! @Directive36 + field19905: Object4582! @Directive36 + field19908: Object4584! @Directive36 + field20114: Object4608! @Directive36 + field20220: Object4635! @Directive36 + field20243: Object4642! @Directive36 + field22277: Object4765! @Directive36 + field22320: Object4774! @Directive36 + field22684: Object4833! @Directive36 + field23855: Object4973! @Directive36 + field23883: Object4978! @Directive36 + field23891: Object4983! @Directive36 + field23921: Object4990! @Directive36 + field24214: Object5051! @Directive36 + field24330: Object5070! @Directive36 + field24362: Object5081! @Directive36 + field24368: Object5083! @Directive36 + field24372: Object5085! @Directive36 + field24410: Object5096! @Directive36 + field24671: Object5149! @Directive36 + field24693: Object5156! @Directive36 + field24700: Object5159! @Directive36 + field24709: Object5164! @Directive36 + field24716: Object5167! @Directive36 + field24761: Object5183! @Directive36 + field24770: Object5187! @Directive36 + field24799: Object5194! @Directive36 + field24804: Object5196! @Directive36 + field24849: Object5202! @Directive36 + field24856: Object5205! @Directive36 + field24861: Object5208! @Directive36 + field24907: Object5217! @Directive36 + field24945: Object5226! @Directive36 + field24948: Object5228! @Directive36 + field24962: Object5234! @Directive36 + field25037: Object5249! @Directive36 + field25040: Object5251! @Directive36 + field25140: Object5282! @Directive36 + field25149: Object5285! @Directive36 + field25165: Object5291! @Directive36 + field25210: Object5301! @Directive36 + field25608: Object5389! @Directive36 + field26441: Object5550! @Directive36 + field26628: Object5577! @Directive36 + field26631: Object5579! @Directive36 + field26634: Object5581! @Directive36 + field26637: Object5583! @Directive36 + field26740: Object5613! @Directive36 + field26754: Object5617! @Directive36 + field26760: Object5619! @Directive36 + field26769: Object5623! @Directive36 + field26788: Object5628! @Directive36 + field27014: Object5668! @Directive36 + field27031: Object5675! @Directive36 + field27443: Object5736! @Directive36 + field27447: Object5738! @Directive36 + field28142: Object5852! @Directive36 + field28644: Object5919! @Directive36 + field28658: Object5922! @Directive36 + field28731: Object5939! @Directive36 + field28756: Object5949! @Directive36 + field28822: Object5970! @Directive36 + field28919: Object5989! @Directive36 + field28967: Object6000! @Directive36 + field28989: Object6006! @Directive36 + field29450: Object6124! @Directive36 +} + +type Object3983 @Directive22(argument62 : "stringValue17210") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17211", "stringValue17212"]) { + field17352: Boolean! @Directive30(argument80 : true) @Directive41 + field17353: String @Directive30(argument80 : true) @Directive41 + field17354: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object3984 @Directive22(argument62 : "stringValue17221") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17222", "stringValue17223"]) { + field17356: Boolean! @Directive30(argument80 : true) @Directive41 + field17357: String @Directive30(argument80 : true) @Directive41 + field17358: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object3985 @Directive22(argument62 : "stringValue17228") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17229", "stringValue17230"]) { + field17360: Boolean! @Directive30(argument80 : true) @Directive41 + field17361: String @Directive30(argument80 : true) @Directive41 + field17362: Boolean @Directive30(argument80 : true) @Directive41 + field17363: Object3986 @Directive30(argument80 : true) @Directive41 +} + +type Object3986 implements Interface99 @Directive22(argument62 : "stringValue17231") @Directive31 @Directive44(argument97 : ["stringValue17232", "stringValue17233", "stringValue17234"]) @Directive45(argument98 : ["stringValue17235", "stringValue17236"]) { + field17364: String @Directive30(argument80 : true) @Directive41 + field17365: Object1837 @Directive30(argument80 : true) @Directive41 + field17366: Object1837 @Directive30(argument80 : true) @Directive41 + field17367: Boolean @Directive30(argument80 : true) @Directive41 + field8997: Interface36 @deprecated +} + +type Object3987 implements Interface160 & Interface46 @Directive22(argument62 : "stringValue17269") @Directive31 @Directive44(argument97 : ["stringValue17270", "stringValue17271"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object3989 + field8330: Object3990 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object3988 @Directive22(argument62 : "stringValue17263") @Directive31 @Directive44(argument97 : ["stringValue17264", "stringValue17265"]) { + field17375(argument473: InputObject50): [Interface142] + field17376(argument474: InputObject50): [Interface143] +} + +type Object3989 implements Interface45 @Directive22(argument62 : "stringValue17272") @Directive31 @Directive44(argument97 : ["stringValue17273", "stringValue17274"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object399 @Directive22(argument62 : "stringValue1210") @Directive31 @Directive44(argument97 : ["stringValue1211", "stringValue1212", "stringValue1213"]) @Directive45(argument98 : ["stringValue1214"]) { + field2267: String + field2268: String + field2269: Boolean + field2270: Union91 + field2275: Boolean + field2276: Boolean + field2277: Boolean @Directive18 +} + +type Object3990 implements Interface91 @Directive22(argument62 : "stringValue17275") @Directive31 @Directive44(argument97 : ["stringValue17276", "stringValue17277"]) { + field8331: [String] +} + +type Object3991 implements Interface46 @Directive22(argument62 : "stringValue17279") @Directive31 @Directive44(argument97 : ["stringValue17280", "stringValue17281"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object3992 + field8330: Object3994 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object3992 implements Interface45 @Directive22(argument62 : "stringValue17282") @Directive31 @Directive44(argument97 : ["stringValue17283", "stringValue17284"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object3993 +} + +type Object3993 @Directive22(argument62 : "stringValue17285") @Directive31 @Directive44(argument97 : ["stringValue17286", "stringValue17287"]) { + field17378: Scalar2 +} + +type Object3994 implements Interface91 @Directive22(argument62 : "stringValue17288") @Directive31 @Directive44(argument97 : ["stringValue17289", "stringValue17290"]) { + field8331: [String] +} + +type Object3995 implements Interface46 @Directive22(argument62 : "stringValue17301") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17302", "stringValue17303", "stringValue17304"]) { + field2616: [Object474]! @Directive30(argument80 : true) @Directive41 + field8314: [Object1532] @Directive30(argument80 : true) @Directive41 + field8329: Object3996 @Directive30(argument80 : true) @Directive41 + field8330: Interface91 @Directive30(argument80 : true) @Directive41 + field8332: [Object1536] @Directive30(argument80 : true) @Directive41 + field8337: [Object502] @Directive1 @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object3996 implements Interface45 @Directive22(argument62 : "stringValue17305") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue17306", "stringValue17307"]) { + field2515: String @Directive30(argument80 : true) @Directive41 + field2516: Enum147 @Directive30(argument80 : true) @Directive41 + field2517: Object459 @Directive30(argument80 : true) @Directive41 +} + +type Object3997 implements Interface160 & Interface46 @Directive22(argument62 : "stringValue17314") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17312", "stringValue17313"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object3998 + field8330: Object4003 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object3998 implements Interface45 @Directive22(argument62 : "stringValue17317") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17315", "stringValue17316"]) { + field17382: [Object4000] + field17385: [Object3402] + field17386: Object4001 + field17390: Object4002 + field17392: [String] + field17393: [Interface3!] + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object3999 +} + +type Object3999 @Directive22(argument62 : "stringValue17320") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17318", "stringValue17319"]) { + field17381: String +} + +type Object4 @Directive20(argument58 : "stringValue33", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue32") @Directive31 @Directive44(argument97 : ["stringValue34"]) { + field24: Scalar2 + field25: String + field26: String + field27: String + field28: String + field29: String + field30: String + field31: String + field32: String + field33: String + field34: String + field35: String +} + +type Object40 @Directive21(argument61 : "stringValue229") @Directive44(argument97 : ["stringValue228"]) { + field205: Scalar2 +} + +type Object400 @Directive22(argument62 : "stringValue1219") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue1218"]) @Directive44(argument97 : ["stringValue1220", "stringValue1221"]) { + field2271: String @Directive30(argument80 : true) +} + +type Object4000 @Directive22(argument62 : "stringValue17323") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17321", "stringValue17322"]) { + field17383: String + field17384: [String] +} + +type Object4001 @Directive22(argument62 : "stringValue17326") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17324", "stringValue17325"]) { + field17387: Boolean + field17388: Boolean + field17389: String +} + +type Object4002 @Directive22(argument62 : "stringValue17329") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17327", "stringValue17328"]) { + field17391: [Object741!] +} + +type Object4003 implements Interface91 @Directive22(argument62 : "stringValue17332") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue17330", "stringValue17331"]) { + field8331: [String] +} + +type Object4004 @Directive22(argument62 : "stringValue17336") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17337"]) { + field17395: Boolean @Directive30(argument80 : true) @Directive41 + field17396: String @Directive30(argument80 : true) @Directive40 +} + +type Object4005 @Directive22(argument62 : "stringValue17364") @Directive42(argument96 : ["stringValue17362", "stringValue17363"]) @Directive44(argument97 : ["stringValue17365", "stringValue17366"]) { + field17400: ID + field17401: ID + field17402: ID + field17403: Object1888 +} + +type Object4006 @Directive22(argument62 : "stringValue17376") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17377", "stringValue17378"]) { + field17407: String @Directive30(argument80 : true) @Directive41 +} + +type Object4007 @Directive22(argument62 : "stringValue17407") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17408", "stringValue17409"]) { + field17409: Object4008 @Directive30(argument80 : true) @Directive41 +} + +type Object4008 implements Interface99 @Directive22(argument62 : "stringValue17410") @Directive31 @Directive44(argument97 : ["stringValue17411", "stringValue17412", "stringValue17413"]) @Directive45(argument98 : ["stringValue17414", "stringValue17415"]) @Directive45(argument98 : ["stringValue17416", "stringValue17417"]) { + field8997: Object4016 @Directive18 @deprecated + field9409: Object4009 + field9671: Object6137 @deprecated + field9672: [Enum158] + field9674: String + field9675: Object1896 + field9818: [Object4015] +} + +type Object4009 implements Interface46 @Directive22(argument62 : "stringValue17418") @Directive31 @Directive44(argument97 : ["stringValue17419", "stringValue17420"]) { + field17430: Object4013 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4010! + field8330: Object4011 + field8332: [Object1536] + field8337: [Object502] @deprecated + field9649: Object1894 +} + +type Object401 @Directive22(argument62 : "stringValue1223") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue1222"]) @Directive44(argument97 : ["stringValue1224", "stringValue1225"]) { + field2272: Boolean @Directive30(argument80 : true) +} + +type Object4010 implements Interface45 @Directive22(argument62 : "stringValue17421") @Directive31 @Directive44(argument97 : ["stringValue17422", "stringValue17423"]) { + field17410: String + field17411: Int + field17412: Boolean + field2515: String + field2516: Enum147 + field2517: Object459 + field2524: String + field2525: Object461 + field2613: String + field2614: String + field2615: String + field9630: String + field9631: Enum380 +} + +type Object4011 implements Interface91 @Directive22(argument62 : "stringValue17424") @Directive31 @Directive44(argument97 : ["stringValue17425", "stringValue17426"]) @Directive45(argument98 : ["stringValue17427"]) { + field17413: Boolean + field17414: String + field17415: String + field17416: [Object4012!] + field17425: String + field17426: String + field17427: Int + field17428: Boolean + field17429: Boolean + field8331: [String] + field9643: Int + field9644: Int + field9645: Int + field9647: Object1893 +} + +type Object4012 @Directive20(argument58 : "stringValue17429", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17428") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue17430", "stringValue17431"]) { + field17417: Scalar2 @Directive30(argument80 : true) @Directive40 + field17418: String @Directive30(argument80 : true) @Directive40 + field17419: String @Directive30(argument80 : true) @Directive38 + field17420: String @Directive30(argument80 : true) @Directive38 + field17421: String @Directive30(argument80 : true) @Directive38 + field17422: String @Directive30(argument80 : true) @Directive40 + field17423: String @Directive30(argument80 : true) @Directive39 + field17424: String @Directive30(argument80 : true) @Directive39 +} + +type Object4013 @Directive20(argument58 : "stringValue17433", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17432") @Directive31 @Directive44(argument97 : ["stringValue17434", "stringValue17435"]) { + field17431: String + field17432: [Object4012!] + field17433: Boolean + field17434: [Object4014!] +} + +type Object4014 @Directive20(argument58 : "stringValue17437", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17436") @Directive31 @Directive44(argument97 : ["stringValue17438", "stringValue17439"]) { + field17435: String + field17436: Boolean + field17437: String +} + +type Object4015 @Directive22(argument62 : "stringValue17440") @Directive31 @Directive44(argument97 : ["stringValue17441"]) { + field17438: String + field17439: String + field17440: String +} + +type Object4016 implements Interface36 & Interface97 & Interface98 @Directive22(argument62 : "stringValue17450") @Directive28(argument77 : "stringValue17449") @Directive30(argument86 : "stringValue17451") @Directive44(argument97 : ["stringValue17452", "stringValue17453", "stringValue17454"]) @Directive45(argument98 : ["stringValue17455"]) @Directive45(argument98 : ["stringValue17456"]) @Directive45(argument98 : ["stringValue17457"]) @Directive45(argument98 : ["stringValue17458"]) @Directive45(argument98 : ["stringValue17459"]) @Directive45(argument98 : ["stringValue17460"]) @Directive45(argument98 : ["stringValue17461"]) @Directive45(argument98 : ["stringValue17462"]) @Directive7(argument10 : "stringValue17447", argument11 : "stringValue17448", argument13 : "stringValue17443", argument14 : "stringValue17444", argument15 : "stringValue17446", argument16 : "stringValue17445", argument17 : "stringValue17442") { + field10275(argument622: InputObject58!, argument623: Scalar3, argument624: Scalar3, argument625: ID, argument626: Enum912): Object2415 @Directive30(argument85 : "stringValue18471", argument86 : "stringValue18470") @Directive4(argument5 : "stringValue18469") @Directive40 + field10297(argument710: String, argument711: Int = 6, argument712: Int = 7): Object4214 @Directive30(argument80 : true) @Directive40 + field10387: Scalar4 @Directive30(argument85 : "stringValue18393", argument86 : "stringValue18392") @Directive41 @deprecated + field10569: String @Directive30(argument85 : "stringValue18387", argument86 : "stringValue18386") @Directive40 @deprecated + field10857: String @Directive30(argument85 : "stringValue18343", argument86 : "stringValue18342") @Directive39 @deprecated + field10926: String @Directive30(argument85 : "stringValue18397", argument86 : "stringValue18396") @Directive39 @deprecated + field11181: Boolean @Directive30(argument85 : "stringValue18661", argument86 : "stringValue18660") @Directive40 @deprecated + field11241: String @Directive30(argument85 : "stringValue18391", argument86 : "stringValue18390") @Directive40 @deprecated + field11305(argument280: [InputObject5]): Object4248 @Directive30(argument86 : "stringValue19348") @Directive40 + field11804: [Scalar2] @Directive30(argument80 : true) @Directive40 + field11944(argument314: Enum193, argument730: String, argument731: Int, argument732: String, argument733: Int): Object4255 @Directive30(argument86 : "stringValue19387") @Directive39 + field12401(argument433: String, argument434: Int, argument435: String, argument436: Int, argument601: Boolean): Object4111 @Directive14(argument51 : "stringValue18398") @Directive30(argument85 : "stringValue18400", argument86 : "stringValue18399") @Directive40 @deprecated + field15982: String @Directive30(argument85 : "stringValue18357", argument86 : "stringValue18356") @Directive40 @deprecated + field16565: Scalar2 @Directive30(argument85 : "stringValue17469", argument86 : "stringValue17468") @Directive40 + field16566: Enum886 @Directive30(argument80 : true) @Directive40 @deprecated + field17441: Enum874 @Directive18(argument56 : "stringValue17472") @Directive3(argument1 : "stringValue17471", argument3 : "stringValue17470") @Directive30(argument80 : true) @Directive41 + field17442: Enum875 @Directive18(argument56 : "stringValue17478") @Directive3(argument1 : "stringValue17477", argument3 : "stringValue17476") @Directive30(argument80 : true) @Directive41 + field17443: Enum876 @Directive18(argument56 : "stringValue17484") @Directive3(argument1 : "stringValue17483", argument3 : "stringValue17482") @Directive30(argument80 : true) @Directive41 + field17444: Boolean @Directive18(argument56 : "stringValue17490") @Directive3(argument1 : "stringValue17489", argument3 : "stringValue17488") @Directive30(argument80 : true) @Directive41 + field17445: Object4017 @Directive18 @Directive3(argument1 : "stringValue17492", argument3 : "stringValue17491") @Directive30(argument80 : true) @Directive40 + field17446: String @Directive30(argument85 : "stringValue18339", argument86 : "stringValue18338") @Directive40 @deprecated + field17508: Enum881 @Directive30(argument85 : "stringValue18406", argument86 : "stringValue18405") @Directive40 @deprecated + field17513: Boolean @Directive3(argument2 : "stringValue18767", argument3 : "stringValue18768") @Directive30(argument85 : "stringValue18770", argument86 : "stringValue18769") @Directive41 + field17514: Enum885 @Directive3(argument3 : "stringValue18771") @Directive30(argument85 : "stringValue18773", argument86 : "stringValue18772") @Directive41 + field17667: Enum891 @Directive3(argument3 : "stringValue18243") @Directive30(argument80 : true) @Directive40 @deprecated + field17802(argument551: Int, argument552: String, argument553: Int, argument554: String): Object4077 @Directive18 @Directive3(argument1 : "stringValue17931", argument3 : "stringValue17930") @Directive30(argument80 : true) @Directive40 + field17809: Int @Directive30(argument85 : "stringValue18368", argument86 : "stringValue18367") @Directive40 @deprecated + field17979: Enum886 @Directive3(argument3 : "stringValue18242") @Directive30(argument80 : true) @Directive40 @deprecated + field17980: Enum220 @Directive3(argument3 : "stringValue18244") @Directive30(argument80 : true) @Directive40 @deprecated + field17981: Object4106 @Directive3(argument3 : "stringValue18245") @Directive30(argument80 : true) @Directive40 @deprecated + field17985: Object4108 @Directive30(argument85 : "stringValue18257", argument86 : "stringValue18256") @Directive4(argument5 : "stringValue18255") @Directive40 + field17987(argument577: ID, argument578: InputObject58, argument579: String, argument580: String, argument581: String, argument582: Scalar3, argument583: Scalar3, argument584: String, argument585: Int, argument586: String, argument587: Int): Object4109 @Directive14(argument51 : "stringValue18265") @Directive26(argument67 : "stringValue18263", argument69 : "stringValue18264", argument71 : "stringValue18262") @Directive30(argument80 : true) @Directive40 + field17988: Object2021 @Directive14(argument51 : "stringValue18270") @Directive30(argument80 : true) @Directive41 + field17989: Object2021 @Directive14(argument51 : "stringValue18271") @Directive30(argument80 : true) @Directive41 + field17990: Object2021 @Directive14(argument51 : "stringValue18272") @Directive30(argument80 : true) @Directive41 + field17991(argument588: Scalar3, argument589: Scalar3): Object2021 @Directive14(argument51 : "stringValue18273") @Directive30(argument80 : true) @Directive41 + field17992: Object2021 @Directive14(argument51 : "stringValue18274") @Directive30(argument80 : true) @Directive41 + field17993(argument590: Scalar3, argument591: Scalar3): Object2021 @Directive14(argument51 : "stringValue18275") @Directive30(argument80 : true) @Directive41 + field17994: Object2021 @Directive14(argument51 : "stringValue18276") @Directive30(argument80 : true) @Directive41 + field17995: Object2021 @Directive14(argument51 : "stringValue18277") @Directive30(argument80 : true) @Directive41 + field17996: Object2021 @Directive14(argument51 : "stringValue18278") @Directive30(argument80 : true) @Directive41 + field17997: Object2021 @Directive14(argument51 : "stringValue18279") @Directive30(argument80 : true) @Directive41 + field17998: Object2021 @Directive14(argument51 : "stringValue18280") @Directive30(argument80 : true) @Directive41 + field17999(argument592: InputObject58): Object2021 @Directive14(argument51 : "stringValue18281") @Directive30(argument80 : true) @Directive41 + field18000: Object2021 @Directive14(argument51 : "stringValue18282") @Directive30(argument80 : true) @Directive41 + field18001: Object2021 @Directive14(argument51 : "stringValue18283") @Directive30(argument80 : true) @Directive41 + field18002: Object2021 @Directive14(argument51 : "stringValue18284") @Directive30(argument80 : true) @Directive41 + field18003(argument593: Scalar3, argument594: Scalar3): Object2021 @Directive14(argument51 : "stringValue18285") @Directive30(argument80 : true) @Directive41 + field18004: Object2021 @Directive14(argument51 : "stringValue18286") @Directive30(argument80 : true) @Directive41 + field18005: Object2021 @Directive14(argument51 : "stringValue18287") @Directive30(argument80 : true) @Directive41 + field18006: Object2021 @Directive14(argument51 : "stringValue18288") @Directive30(argument80 : true) @Directive41 + field18007(argument595: InputObject67, argument596: InputObject71): Object548 @Directive14(argument51 : "stringValue18289") @Directive22(argument62 : "stringValue18290") @Directive30(argument85 : "stringValue18292", argument86 : "stringValue18291") @Directive40 + field18008(argument597: InputObject67, argument598: InputObject71, argument599: String, argument600: Boolean): Object548 @Directive14(argument51 : "stringValue18317") @Directive30(argument80 : true) @Directive40 @deprecated + field18009: Boolean @Directive3(argument3 : "stringValue18318") @Directive30(argument85 : "stringValue18320", argument86 : "stringValue18319") @Directive41 + field18010: Object6137 @Directive18 @Directive30(argument80 : true) @Directive41 @deprecated + field18011: Int @Directive30(argument85 : "stringValue18337", argument86 : "stringValue18336") @Directive40 @deprecated + field18012: String @Directive14(argument51 : "stringValue18348") @Directive30(argument85 : "stringValue18350", argument86 : "stringValue18349") @Directive39 @deprecated + field18013: String @Directive14(argument51 : "stringValue18351") @Directive30(argument85 : "stringValue18353", argument86 : "stringValue18352") @Directive40 @deprecated + field18014: Int @Directive30(argument85 : "stringValue18359", argument86 : "stringValue18358") @Directive40 @deprecated + field18015: Int @Directive30(argument85 : "stringValue18361", argument86 : "stringValue18360") @Directive40 @deprecated + field18016: Boolean @Directive30(argument85 : "stringValue18363", argument86 : "stringValue18362") @Directive40 @deprecated + field18017: Enum906 @Directive30(argument85 : "stringValue18365", argument86 : "stringValue18364") @Directive40 @deprecated + field18018: Int @Directive30(argument86 : "stringValue18366") @Directive40 @deprecated + field18019: Enum891 @Directive3(argument3 : "stringValue18369") @Directive30(argument85 : "stringValue18371", argument86 : "stringValue18370") @Directive40 @deprecated + field18020: Enum220 @Directive30(argument80 : true) @Directive40 @deprecated + field18021: Int @Directive30(argument85 : "stringValue18373", argument86 : "stringValue18372") @Directive40 @deprecated + field18022: Int @Directive30(argument85 : "stringValue18375", argument86 : "stringValue18374") @Directive40 @deprecated + field18023: Int @Directive30(argument85 : "stringValue18377", argument86 : "stringValue18376") @Directive40 @deprecated + field18024: Int @Directive30(argument85 : "stringValue18379", argument86 : "stringValue18378") @Directive40 @deprecated + field18025: Int @Directive14(argument51 : "stringValue18383") @Directive30(argument85 : "stringValue18385", argument86 : "stringValue18384") @Directive40 @deprecated + field18026: Boolean @Directive30(argument85 : "stringValue18395", argument86 : "stringValue18394") @Directive40 @deprecated + field18027: Boolean @Directive3(argument3 : "stringValue18410") @Directive30(argument80 : true) @Directive40 @deprecated + field18028: Object4106 @Directive30(argument80 : true) @Directive40 @deprecated + field18029: Enum212 @Directive30(argument85 : "stringValue18412", argument86 : "stringValue18411") @Directive40 @deprecated + field18030: Object2258 @Directive26(argument67 : "stringValue18415", argument69 : "stringValue18416", argument71 : "stringValue18414") @Directive30(argument85 : "stringValue18418", argument86 : "stringValue18417") @Directive4(argument5 : "stringValue18413") @Directive40 @deprecated + field18031(argument602: String, argument603: Int, argument604: String, argument605: Int): Object4113 @Directive30(argument85 : "stringValue18421", argument86 : "stringValue18420") @Directive40 @Directive5(argument7 : "stringValue18419") @deprecated + field18046: String @Directive3(argument3 : "stringValue18448") @Directive30(argument80 : true) @Directive40 @deprecated + field18047: String @Directive3(argument3 : "stringValue18449") @Directive30(argument80 : true) @Directive39 @deprecated + field18048(argument618: String, argument619: Int, argument620: String, argument621: Int): Object4121 @Directive30(argument80 : true) @Directive40 + field18054: Object3420 @Directive30(argument85 : "stringValue18468", argument86 : "stringValue18467") @Directive4(argument5 : "stringValue18466") @Directive40 + field18055(argument627: Scalar3!, argument628: Scalar3!, argument629: String, argument630: Int, argument631: String, argument632: Int): Object4124 @Directive30(argument85 : "stringValue18475", argument86 : "stringValue18474") @Directive40 + field18056(argument633: Int!, argument634: Scalar3, argument635: Scalar3, argument636: String, argument637: Int, argument638: Scalar2, argument639: Scalar2, argument640: String, argument641: Float, argument642: InputObject58, argument643: Boolean, argument644: ID, argument645: [Scalar2], argument646: InputObject15): Object2410 @Directive30(argument85 : "stringValue18482", argument86 : "stringValue18481") @Directive4(argument5 : "stringValue18480") @Directive40 + field18057(argument647: String, argument648: String, argument649: InputObject68, argument650: InputObject70): Object4126 @Directive18 @Directive30(argument85 : "stringValue18484", argument86 : "stringValue18483") @Directive40 + field18086: Object4135 @Directive13(argument49 : "stringValue18512") @Directive30(argument85 : "stringValue18514", argument86 : "stringValue18513") @Directive40 @deprecated + field18099: Object2258 @Directive14(argument51 : "stringValue18519") @Directive30(argument85 : "stringValue18521", argument86 : "stringValue18520") @Directive40 + field18100: Object4136 @Directive13(argument49 : "stringValue18522") @Directive30(argument85 : "stringValue18524", argument86 : "stringValue18523") @Directive40 + field18104: Object4138 @Directive30(argument85 : "stringValue18535", argument86 : "stringValue18534") @Directive4(argument5 : "stringValue18533") @Directive40 @deprecated + field18110(argument652: [InputObject72], argument653: Boolean, argument654: Enum913): Object4140 @Directive30(argument85 : "stringValue18550", argument86 : "stringValue18549") @Directive4(argument5 : "stringValue18548") @Directive40 + field18188(argument659: [InputObject72], argument660: Boolean, argument661: String): Object4154 @Directive30(argument85 : "stringValue18633", argument86 : "stringValue18632") @Directive4(argument5 : "stringValue18631") @Directive40 + field18200(argument662: Enum917!): Object4156 @Directive30(argument85 : "stringValue18648", argument86 : "stringValue18647") @Directive4(argument5 : "stringValue18646") @Directive40 + field18202: Object4157 @Directive18 @Directive30(argument85 : "stringValue18663", argument86 : "stringValue18662") @Directive40 + field18206: [String!] @Directive18 @Directive30(argument85 : "stringValue18669", argument86 : "stringValue18668") @Directive40 + field18207: [Object4158!]! @Directive14(argument51 : "stringValue18670") @Directive30(argument85 : "stringValue18672", argument86 : "stringValue18671") @Directive40 @deprecated + field18228(argument663: String, argument664: Int, argument665: String, argument666: Int): Object4160 @Directive30(argument85 : "stringValue18683", argument86 : "stringValue18682") @Directive40 @deprecated + field18229(argument667: String, argument668: Enum918, argument669: [String]): Object4162 @Directive30(argument85 : "stringValue18690", argument86 : "stringValue18689") @Directive4(argument5 : "stringValue18688") @Directive40 @deprecated + field18247: Object4164 @Directive13(argument49 : "stringValue18713") @Directive30(argument80 : true) @Directive40 @deprecated + field18251: Object754 @Directive14(argument51 : "stringValue18724") @Directive30(argument85 : "stringValue18726", argument86 : "stringValue18725") @Directive38 @deprecated + field18252(argument670: Boolean, argument671: Boolean, argument672: Boolean): Object4166 @Directive13(argument49 : "stringValue18727") @Directive30(argument85 : "stringValue18729", argument86 : "stringValue18728") @Directive40 + field18260: Boolean @Directive30(argument85 : "stringValue18748", argument86 : "stringValue18747") @Directive40 @deprecated + field18261: String @Directive30(argument85 : "stringValue18750", argument86 : "stringValue18749") @Directive40 @deprecated + field18262: Boolean @Directive30(argument85 : "stringValue18752", argument86 : "stringValue18751") @Directive40 @deprecated + field18263: Boolean @Directive30(argument85 : "stringValue18754", argument86 : "stringValue18753") @Directive40 @deprecated + field18264: Boolean @Directive30(argument85 : "stringValue18756", argument86 : "stringValue18755") @Directive40 @deprecated + field18265: Boolean @Directive30(argument85 : "stringValue18758", argument86 : "stringValue18757") @Directive40 @deprecated + field18266: Boolean @Directive30(argument85 : "stringValue18760", argument86 : "stringValue18759") @Directive40 @deprecated + field18267: Enum905 @Directive30(argument80 : true) @Directive40 @deprecated + field18268: Boolean @Directive30(argument80 : true) @Directive40 @deprecated + field18269: Boolean @Directive30(argument80 : true) @Directive40 @deprecated + field18270: Boolean @Directive3(argument3 : "stringValue18763") @Directive30(argument85 : "stringValue18762", argument86 : "stringValue18761") @Directive41 @deprecated + field18271: Scalar4 @Directive3(argument3 : "stringValue18766") @Directive30(argument85 : "stringValue18765", argument86 : "stringValue18764") @Directive41 @deprecated + field18272: Object4169 @Directive30(argument85 : "stringValue18775", argument86 : "stringValue18774") @Directive37(argument95 : "stringValue18776") + field18293: Object4181 @Directive30(argument85 : "stringValue18895", argument86 : "stringValue18894") @Directive40 + field18302: [Object4184] @Directive18 @Directive30(argument85 : "stringValue18903", argument86 : "stringValue18902") @Directive40 + field18337: Int @Directive18 @Directive30(argument85 : "stringValue18911", argument86 : "stringValue18910") @Directive40 + field18338: Object4186 @Directive18 @Directive30(argument85 : "stringValue18913", argument86 : "stringValue18912") @Directive40 + field18341(argument674: String, argument675: Int, argument676: String, argument677: Int): Object4187 @Directive30(argument85 : "stringValue18918", argument86 : "stringValue18917") @Directive40 @Directive5(argument7 : "stringValue18916") @deprecated + field18354(argument678: String, argument679: Int, argument680: String, argument681: Int): Object4190 @Directive30(argument85 : "stringValue18939", argument86 : "stringValue18938") @Directive40 @Directive5(argument7 : "stringValue18937") @deprecated + field18363: Boolean @Directive14(argument51 : "stringValue18951") @Directive30(argument85 : "stringValue18953", argument86 : "stringValue18952") @Directive40 @deprecated + field18364(argument682: Scalar3!, argument683: Scalar3!): [Object4193!] @Directive18 @Directive30(argument85 : "stringValue18955", argument86 : "stringValue18954") @Directive40 + field18373: [Object4201] @Directive30(argument80 : true) @Directive40 @deprecated + field18380(argument687: Enum462!, argument688: Scalar3, argument689: Scalar3, argument690: Boolean, argument691: Boolean, argument692: String, argument693: Int, argument694: String, argument695: Int): Object4202 @Directive30(argument85 : "stringValue19013", argument86 : "stringValue19012") @Directive40 + field18381(argument696: Enum926, argument697: String, argument698: Int, argument699: Boolean): Object4204 @Directive30(argument85 : "stringValue19022", argument86 : "stringValue19021") @Directive4(argument5 : "stringValue19020") @Directive40 + field18416(argument700: Enum926, argument701: String, argument702: Int, argument703: Boolean, argument704: Boolean, argument705: Boolean): Object4211 @Directive30(argument85 : "stringValue19069", argument86 : "stringValue19068") @Directive4(argument5 : "stringValue19067") @Directive40 + field18417(argument706: String, argument707: Int, argument708: String, argument709: Int): Object4212 @Directive30(argument80 : true) @Directive40 + field18418: Object2414 @Directive18 @Directive30(argument80 : true) @Directive40 + field18419: Object4216 @Directive18 @Directive30(argument80 : true) @Directive40 + field18423(argument713: [Enum928], argument714: Boolean, argument715: Scalar3, argument716: Scalar3): Object4217 @Directive30(argument86 : "stringValue19122") @Directive4(argument5 : "stringValue19121") @Directive40 + field18539(argument717: [Enum931], argument718: Scalar3, argument719: Scalar3): Object4235 @Directive30(argument86 : "stringValue19215") @Directive4(argument5 : "stringValue19214") @Directive40 + field18546(argument720: [Enum932], argument721: Scalar3, argument722: Scalar3, argument723: [Enum933], argument724: [InputObject79]): Object4237 @Directive30(argument86 : "stringValue19232") @Directive4(argument5 : "stringValue19231") @Directive40 + field18577: Object4240 @Directive30(argument86 : "stringValue19271") @Directive4(argument5 : "stringValue19270") @Directive40 + field18579(argument725: [Enum932], argument726: Scalar3, argument727: Scalar3, argument728: [Enum933], argument729: [InputObject79]): Object4241 @Directive30(argument86 : "stringValue19280") @Directive4(argument5 : "stringValue19279") @Directive40 + field18580: Object4242 @Directive30(argument86 : "stringValue19291") @Directive4(argument5 : "stringValue19290") @Directive40 + field18587: Object4244 @Directive30(argument86 : "stringValue19303") @Directive4(argument5 : "stringValue19302") @Directive40 + field18626: [Scalar2] @Directive18 @Directive30(argument86 : "stringValue19366") @Directive40 + field18627: [Object4251] @Directive18 @Directive30(argument80 : true) @Directive40 + field18632: Object4252 @Directive30(argument85 : "stringValue19376", argument86 : "stringValue19375") @Directive40 + field18635: Boolean @Directive18 @Directive30(argument86 : "stringValue19397") @Directive40 @deprecated + field18636(argument734: String, argument735: String, argument736: String, argument737: String, argument738: Boolean, argument739: Int, argument740: Int, argument741: Int, argument742: Int, argument743: Float, argument744: Float, argument745: Int, argument746: Int, argument747: [Int], argument748: String, argument749: String, argument750: Int, argument751: Int, argument752: [Float], argument753: String): Object4257 @Directive30(argument85 : "stringValue19400", argument86 : "stringValue19399") @Directive4(argument5 : "stringValue19398") @Directive40 @deprecated + field18637: Object4259 @Directive18 @Directive30(argument80 : true) @Directive40 @deprecated + field18647: Object4260 @Directive13(argument49 : "stringValue19417") @Directive30(argument80 : true) @Directive40 + field18652: Scalar2 @Directive14(argument51 : "stringValue19426") @Directive30(argument85 : "stringValue19428", argument86 : "stringValue19427") @Directive40 @deprecated + field18653(argument754: [Enum491]): Object4261 @Directive30(argument85 : "stringValue19430", argument86 : "stringValue19429") @Directive40 + field18654(argument755: String!, argument756: Enum941, argument757: Int, argument758: Int, argument759: Int, argument760: Int, argument761: String, argument762: Int, argument763: String, argument764: String, argument765: InputObject81): Object2471 @Directive30(argument85 : "stringValue19437", argument86 : "stringValue19436") @Directive4(argument5 : "stringValue19435") @Directive40 @deprecated + field18655(argument766: Int): Object4263 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue19449") @Directive40 @deprecated + field2312: ID! @Directive26(argument67 : "stringValue17464", argument68 : "stringValue17465", argument69 : "stringValue17466", argument70 : "stringValue17467", argument71 : "stringValue17463") @Directive30(argument80 : true) @Directive40 + field8994: String @Directive26(argument67 : "stringValue18324", argument68 : "stringValue18325", argument69 : "stringValue18326", argument70 : "stringValue18327", argument71 : "stringValue18323") @Directive30(argument85 : "stringValue18322", argument86 : "stringValue18321") @Directive40 @deprecated + field8995: [Object792!]! @Directive14(argument51 : "stringValue18328") @Directive26(argument67 : "stringValue18332", argument68 : "stringValue18333", argument69 : "stringValue18334", argument70 : "stringValue18335", argument71 : "stringValue18331") @Directive30(argument85 : "stringValue18330", argument86 : "stringValue18329") @Directive40 @deprecated + field8996: Object4194 @Directive30(argument86 : "stringValue18958") @Directive40 + field9000: Boolean @Directive3(argument3 : "stringValue18407") @Directive30(argument85 : "stringValue18409", argument86 : "stringValue18408") @Directive40 @deprecated + field9025: String @Directive30(argument85 : "stringValue18341", argument86 : "stringValue18340") @Directive40 @deprecated + field9026: String @Directive30(argument85 : "stringValue18389", argument86 : "stringValue18388") @Directive40 @deprecated + field9140(argument170: String, argument171: Int, argument172: String, argument173: Int, argument673: InputObject73): Object4172 @Directive30(argument85 : "stringValue18786", argument86 : "stringValue18785") @Directive40 + field9170(argument187: String, argument188: Int, argument189: String, argument190: Int, argument191: String): Object4178 @Directive30(argument85 : "stringValue18884", argument86 : "stringValue18883") @Directive40 + field9185: String @Directive30(argument85 : "stringValue18347", argument86 : "stringValue18346") @Directive39 @deprecated + field9301: Float @Directive30(argument85 : "stringValue19423", argument86 : "stringValue19422") @Directive38 @deprecated + field9302: Float @Directive30(argument85 : "stringValue19425", argument86 : "stringValue19424") @Directive38 @deprecated + field9303: String @Directive30(argument85 : "stringValue18355", argument86 : "stringValue18354") @Directive39 @deprecated + field9355: Float @Directive14(argument51 : "stringValue18380") @Directive30(argument85 : "stringValue18382", argument86 : "stringValue18381") @Directive40 @deprecated + field9831: String @Directive30(argument85 : "stringValue18345", argument86 : "stringValue18344") @Directive39 @deprecated +} + +type Object4017 implements Interface36 @Directive22(argument62 : "stringValue17494") @Directive30(argument86 : "stringValue17501") @Directive42(argument96 : ["stringValue17493"]) @Directive44(argument97 : ["stringValue17502", "stringValue17503"]) @Directive45(argument98 : ["stringValue17504", "stringValue17505"]) @Directive7(argument11 : "stringValue17500", argument13 : "stringValue17496", argument14 : "stringValue17497", argument15 : "stringValue17499", argument16 : "stringValue17498", argument17 : "stringValue17495") { + field10387: Scalar4 @Directive30(argument80 : true) + field10520: Object4029 @Directive14(argument51 : "stringValue17659", argument52 : "stringValue17660") @Directive30(argument85 : "stringValue17658", argument86 : "stringValue17657") @Directive40 + field10853: Object4020 @Directive18(argument56 : "stringValue17543") @Directive3(argument1 : "stringValue17542", argument3 : "stringValue17541") @Directive30(argument80 : true) + field10861: Object4019 @Directive18(argument56 : "stringValue17531") @Directive3(argument1 : "stringValue17530", argument3 : "stringValue17529") @Directive30(argument85 : "stringValue17533", argument86 : "stringValue17532") + field10880(argument508: Int, argument509: String, argument510: Int, argument511: String, argument512: Boolean): Object4038 @Directive13(argument49 : "stringValue17709", argument50 : "stringValue17710") @Directive30(argument80 : true) + field11765: Object4018 @Directive13(argument49 : "stringValue17506", argument50 : "stringValue17507") @Directive30(argument80 : true) + field12401(argument433: String, argument434: Int, argument435: String, argument436: Int, argument542: String, argument543: [String!]): Object4055 @Directive13(argument49 : "stringValue17792", argument50 : "stringValue17793") @Directive30(argument80 : true) + field17446: String @Directive30(argument80 : true) + field17450: Enum877 @Directive30(argument80 : true) + field17451: Enum878 @Directive30(argument80 : true) + field17452: Object4019 @Directive18(argument56 : "stringValue17521") @Directive3(argument1 : "stringValue17520", argument3 : "stringValue17519") @Directive30(argument80 : true) + field17458: Enum880 @Directive14(argument51 : "stringValue17534", argument52 : "stringValue17535") @Directive30(argument80 : true) + field17459: Int @Directive30(argument80 : true) + field17460: Int @Directive30(argument80 : true) + field17461: Int @Directive30(argument80 : true) + field17462: Int @Directive30(argument80 : true) + field17463: Int @Directive30(argument80 : true) + field17464: Int @Directive30(argument80 : true) + field17465: Boolean @Directive3(argument1 : "stringValue17540", argument3 : "stringValue17539") @Directive30(argument80 : true) + field17466: String @Directive30(argument80 : true) + field17496: Object4023 @Directive18(argument56 : "stringValue17579") @Directive3(argument1 : "stringValue17578", argument3 : "stringValue17577") @Directive30(argument80 : true) + field17503: Object4025 @Directive18(argument56 : "stringValue17602") @Directive3(argument1 : "stringValue17601", argument3 : "stringValue17600") @Directive30(argument80 : true) + field17508: Enum881 @Directive18(argument56 : "stringValue17609") @Directive3(argument1 : "stringValue17608", argument3 : "stringValue17607") @Directive30(argument80 : true) + field17509: Object4026 @Directive14(argument51 : "stringValue17614", argument52 : "stringValue17615") @Directive30(argument80 : true) + field17513: Boolean @Directive3(argument1 : "stringValue17631", argument2 : "stringValue17629", argument3 : "stringValue17630") @Directive30(argument85 : "stringValue17633", argument86 : "stringValue17632") @Directive41 + field17514: Enum885 @Directive3(argument1 : "stringValue17635", argument3 : "stringValue17634") @Directive30(argument85 : "stringValue17637", argument86 : "stringValue17636") @Directive41 + field17515: Object4027 @Directive14(argument51 : "stringValue17644", argument52 : "stringValue17645") @Directive30(argument85 : "stringValue17643", argument86 : "stringValue17642") @Directive40 + field17521: Object4028 @Directive18(argument56 : "stringValue17651") @Directive3(argument1 : "stringValue17650", argument3 : "stringValue17649") @Directive30(argument85 : "stringValue17653", argument86 : "stringValue17652") @Directive41 + field17537(argument492: String!): Object4029 @Directive14(argument51 : "stringValue17670", argument52 : "stringValue17671") @Directive30(argument85 : "stringValue17669", argument86 : "stringValue17668") @Directive40 @deprecated + field17538: Object4030 @Directive1 @Directive30(argument80 : true) + field17548(argument493: String): Object4031 @Directive14(argument51 : "stringValue17677", argument52 : "stringValue17678") @Directive30(argument85 : "stringValue17676", argument86 : "stringValue17675") @Directive40 + field17584(argument494: Int, argument495: String, argument496: Int, argument497: String, argument498: String, argument499: Boolean): Object4033 @Directive14(argument51 : "stringValue17685", argument52 : "stringValue17686") @Directive30(argument80 : true) @Directive40 + field17590(argument500: Int, argument501: String, argument502: Int, argument503: String): Object4033 @Directive14(argument51 : "stringValue17697", argument52 : "stringValue17698") @Directive30(argument80 : true) @Directive40 + field17591(argument504: Int, argument505: String, argument506: Int, argument507: String): Object4036 @Directive14(argument51 : "stringValue17701", argument52 : "stringValue17702") @Directive30(argument85 : "stringValue17700", argument86 : "stringValue17699") + field17601(argument517: Int, argument518: String, argument519: Int, argument520: String): Object4043 @Directive18 @Directive3(argument1 : "stringValue17729", argument3 : "stringValue17728") @Directive30(argument80 : true) + field17632: Int @Directive30(argument80 : true) + field17633: Object4056 @Directive14(argument51 : "stringValue17797", argument52 : "stringValue17798") @Directive30(argument80 : true) + field17640: Object4057 @Directive14(argument51 : "stringValue17807", argument52 : "stringValue17808") @Directive30(argument80 : true) + field17645: Object4058 @Directive14(argument51 : "stringValue17813", argument52 : "stringValue17814") @Directive30(argument80 : true) + field17651: Object4059 @Directive18(argument56 : "stringValue17821") @Directive30(argument85 : "stringValue17820", argument86 : "stringValue17819") @Directive40 + field17663: Scalar2 @Directive3(argument3 : "stringValue17832") @Directive30(argument80 : true) @deprecated + field17664: String @Directive3(argument3 : "stringValue17833") @Directive30(argument80 : true) @deprecated + field17665: Scalar4 @Directive3(argument3 : "stringValue17834") @Directive30(argument80 : true) @deprecated + field17666: String @Directive3(argument3 : "stringValue17835") @Directive30(argument80 : true) @deprecated + field17667: Enum891 @Directive3(argument3 : "stringValue17836") @Directive30(argument80 : true) @deprecated + field17668: Boolean @Directive3(argument3 : "stringValue17842") @Directive30(argument80 : true) @deprecated + field17669: Boolean @Directive3(argument3 : "stringValue17843") @Directive30(argument80 : true) @deprecated + field17670: Boolean @Directive3(argument3 : "stringValue17844") @Directive30(argument80 : true) @deprecated + field17671: Boolean @Directive3(argument3 : "stringValue17845") @Directive30(argument80 : true) @deprecated + field17672: Boolean @Directive3(argument3 : "stringValue17846") @Directive30(argument80 : true) @deprecated + field17673: String @Directive3(argument3 : "stringValue17847") @Directive30(argument80 : true) @deprecated + field17674: [Object4061] @Directive3(argument3 : "stringValue17848") @Directive30(argument80 : true) @deprecated + field17680: [Object4062] @Directive3(argument3 : "stringValue17860") @Directive30(argument80 : true) @deprecated + field17696: [Object4063] @Directive3(argument3 : "stringValue17864") @Directive30(argument80 : true) @deprecated + field17704: [Object4064] @Directive3(argument3 : "stringValue17869") @Directive30(argument80 : true) @deprecated + field17712: [Object4065] @Directive3(argument3 : "stringValue17873") @Directive30(argument80 : true) @deprecated + field17736: [Object4068] @Directive3(argument3 : "stringValue17883") @Directive30(argument80 : true) @deprecated + field17749: [Object4070] @Directive3(argument3 : "stringValue17892") @Directive30(argument80 : true) @deprecated + field17785: [Object4072] @Directive3(argument3 : "stringValue17899") @Directive30(argument80 : true) @deprecated + field17798: Enum220 @Directive3(argument3 : "stringValue17927") @Directive30(argument80 : true) @deprecated + field17799: Boolean @Directive3(argument3 : "stringValue17928") @Directive30(argument80 : true) @deprecated + field17800: Object4053 @Directive1 @Directive30(argument80 : true) @deprecated + field17801(argument544: [String!], argument545: String, argument546: Boolean, argument547: Boolean, argument548: String, argument549: [String!], argument550: Int): Object4017 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue17929") @deprecated + field2312: ID! @Directive30(argument80 : true) + field9087: Scalar4 @Directive30(argument80 : true) + field9142: Scalar4 @Directive30(argument80 : true) +} + +type Object4018 @Directive22(argument62 : "stringValue17508") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17509", "stringValue17510"]) { + field17447: Scalar2 @Directive30(argument80 : true) @Directive40 + field17448: String @Directive30(argument80 : true) @Directive40 + field17449: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4019 @Directive22(argument62 : "stringValue17522") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17523", "stringValue17524"]) { + field17453: Scalar4 @Directive30(argument80 : true) @Directive41 + field17454: Scalar4 @Directive30(argument80 : true) @Directive41 + field17455: String @Directive30(argument80 : true) @Directive40 + field17456: Enum879 @Directive30(argument80 : true) @Directive40 + field17457: String @Directive30(argument80 : true) @Directive40 +} + +type Object402 @Directive22(argument62 : "stringValue1227") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue1226"]) @Directive44(argument97 : ["stringValue1228", "stringValue1229"]) { + field2273: Scalar2 @Directive30(argument80 : true) +} + +type Object4020 @Directive22(argument62 : "stringValue17545") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17544"]) @Directive44(argument97 : ["stringValue17546", "stringValue17547"]) { + field17467: ID! @Directive30(argument80 : true) + field17468: Boolean @Directive30(argument80 : true) + field17469: Boolean @Directive30(argument80 : true) + field17470: Boolean @Directive30(argument80 : true) + field17471: String @Directive30(argument80 : true) + field17472: Object4021 @Directive30(argument80 : true) + field17492: Object4021 @Directive30(argument80 : true) + field17493: Object4021 @Directive30(argument80 : true) + field17494: Object754 @Directive30(argument84 : "stringValue17573", argument85 : "stringValue17572", argument86 : "stringValue17571") + field17495: String @Directive30(argument84 : "stringValue17576", argument85 : "stringValue17575", argument86 : "stringValue17574") +} + +type Object4021 @Directive22(argument62 : "stringValue17549") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17548"]) @Directive44(argument97 : ["stringValue17550", "stringValue17551"]) { + field17473: ID! @Directive30(argument80 : true) + field17474: String @Directive30(argument84 : "stringValue17554", argument85 : "stringValue17553", argument86 : "stringValue17552") + field17475: String @Directive30(argument84 : "stringValue17557", argument85 : "stringValue17556", argument86 : "stringValue17555") + field17476: String @Directive30(argument80 : true) + field17477: String @Directive30(argument80 : true) + field17478: String @Directive30(argument80 : true) + field17479: String @Directive30(argument80 : true) + field17480: String @Directive30(argument84 : "stringValue17560", argument85 : "stringValue17559", argument86 : "stringValue17558") + field17481: String @Directive30(argument84 : "stringValue17563", argument85 : "stringValue17562", argument86 : "stringValue17561") + field17482: String @Directive30(argument80 : true) + field17483: String @Directive30(argument80 : true) + field17484: String @Directive30(argument80 : true) + field17485: String @Directive30(argument80 : true) + field17486: Object4022 @Directive30(argument80 : true) +} + +type Object4022 @Directive22(argument62 : "stringValue17565") @Directive30(argument84 : "stringValue17568", argument85 : "stringValue17567", argument86 : "stringValue17566") @Directive42(argument96 : ["stringValue17564"]) @Directive44(argument97 : ["stringValue17569", "stringValue17570"]) { + field17487: ID! @Directive30(argument80 : true) + field17488: String @Directive30(argument80 : true) + field17489: String @Directive30(argument80 : true) + field17490: String @Directive30(argument80 : true) + field17491: String @Directive30(argument80 : true) +} + +type Object4023 @Directive22(argument62 : "stringValue17581") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17580"]) @Directive44(argument97 : ["stringValue17582", "stringValue17583"]) { + field17497: ID! @Directive30(argument80 : true) + field17498: Object4024 @Directive30(argument84 : "stringValue17586", argument85 : "stringValue17585", argument86 : "stringValue17584") + field17502: String @Directive30(argument84 : "stringValue17599", argument85 : "stringValue17598", argument86 : "stringValue17597") +} + +type Object4024 @Directive22(argument62 : "stringValue17588") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17587"]) @Directive44(argument97 : ["stringValue17589", "stringValue17590"]) { + field17499: ID! @Directive30(argument80 : true) + field17500: String @Directive30(argument84 : "stringValue17593", argument85 : "stringValue17592", argument86 : "stringValue17591") + field17501: String @Directive30(argument84 : "stringValue17596", argument85 : "stringValue17595", argument86 : "stringValue17594") +} + +type Object4025 @Directive22(argument62 : "stringValue17604") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17603"]) @Directive44(argument97 : ["stringValue17605", "stringValue17606"]) { + field17504: Int @Directive30(argument80 : true) + field17505: Int @Directive30(argument80 : true) + field17506: Int @Directive30(argument80 : true) + field17507: Int @Directive30(argument80 : true) +} + +type Object4026 @Directive22(argument62 : "stringValue17617") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17616"]) @Directive44(argument97 : ["stringValue17618", "stringValue17619"]) { + field17510: Enum882 @Directive30(argument80 : true) + field17511: Enum883 @Directive30(argument80 : true) + field17512: Enum884 @Directive30(argument80 : true) +} + +type Object4027 @Directive22(argument62 : "stringValue17646") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17647", "stringValue17648"]) { + field17516: Scalar4 @Directive30(argument80 : true) @Directive41 + field17517: Scalar4 @Directive30(argument80 : true) @Directive41 + field17518: String @Directive30(argument80 : true) @Directive40 + field17519: String @Directive30(argument80 : true) @Directive40 + field17520: String @Directive30(argument80 : true) @Directive38 +} + +type Object4028 @Directive22(argument62 : "stringValue17654") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17655", "stringValue17656"]) { + field17522: String @Directive30(argument80 : true) @Directive40 + field17523: String @Directive30(argument80 : true) @Directive40 + field17524: String @Directive30(argument80 : true) @Directive40 +} + +type Object4029 @Directive22(argument62 : "stringValue17661") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17662", "stringValue17663"]) { + field17525: Enum886 @Directive30(argument80 : true) @Directive40 + field17526: String @Directive30(argument80 : true) @Directive40 + field17527: String @Directive30(argument80 : true) @Directive40 + field17528: String @Directive30(argument80 : true) @Directive40 + field17529: String @Directive30(argument80 : true) @Directive40 + field17530: String @Directive30(argument80 : true) @Directive40 + field17531: String @Directive30(argument80 : true) @Directive40 + field17532: String @Directive30(argument80 : true) @Directive40 + field17533: String @Directive30(argument80 : true) @Directive40 + field17534: String @Directive30(argument80 : true) @Directive40 + field17535: String @Directive30(argument80 : true) @Directive40 + field17536: String @Directive30(argument80 : true) @Directive40 +} + +type Object403 @Directive22(argument62 : "stringValue1231") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue1230"]) @Directive44(argument97 : ["stringValue1232", "stringValue1233"]) { + field2274: Float @Directive30(argument80 : true) +} + +type Object4030 @Directive22(argument62 : "stringValue17672") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17673", "stringValue17674"]) { + field17539: Object1820 @Directive30(argument80 : true) @Directive40 + field17540: Object1820 @Directive30(argument80 : true) @Directive40 + field17541: Object1820 @Directive30(argument80 : true) @Directive40 + field17542: Object1820 @Directive30(argument80 : true) @Directive40 + field17543: Object1820 @Directive30(argument80 : true) @Directive40 + field17544: Object1820 @Directive30(argument80 : true) @Directive40 + field17545: Object1820 @Directive30(argument80 : true) @Directive40 + field17546: Object1820 @Directive30(argument80 : true) @Directive40 + field17547: Object1820 @Directive30(argument80 : true) @Directive40 +} + +type Object4031 @Directive22(argument62 : "stringValue17679") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17680", "stringValue17681"]) { + field17549: ID! @Directive30(argument80 : true) @Directive40 + field17550: Scalar4 @Directive30(argument80 : true) @Directive41 + field17551: Scalar4 @Directive30(argument80 : true) @Directive41 + field17552: Scalar2 @Directive30(argument80 : true) @Directive40 + field17553: Scalar2 @Directive30(argument80 : true) @Directive40 + field17554: Scalar2 @Directive30(argument80 : true) @Directive40 + field17555: String @Directive30(argument80 : true) @Directive40 + field17556: String @Directive30(argument80 : true) @Directive40 + field17557: String @Directive30(argument80 : true) @Directive40 + field17558: String @Directive30(argument80 : true) @Directive40 + field17559: String @Directive30(argument80 : true) @Directive40 + field17560: String @Directive30(argument80 : true) @Directive40 + field17561: String @Directive30(argument80 : true) @Directive40 + field17562: Int @Directive30(argument80 : true) @Directive40 + field17563: Int @Directive30(argument80 : true) @Directive40 + field17564: Int @Directive30(argument80 : true) @Directive40 + field17565: Boolean @Directive30(argument80 : true) @Directive40 + field17566: Boolean @Directive30(argument80 : true) @Directive40 + field17567: [String] @Directive30(argument80 : true) @Directive40 + field17568: Object4032 @Directive30(argument80 : true) @Directive40 +} + +type Object4032 @Directive22(argument62 : "stringValue17682") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17683", "stringValue17684"]) { + field17569: String @Directive30(argument80 : true) @Directive40 + field17570: String @Directive30(argument80 : true) @Directive40 + field17571: String @Directive30(argument80 : true) @Directive40 + field17572: String @Directive30(argument80 : true) @Directive40 + field17573: String @Directive30(argument80 : true) @Directive40 + field17574: String @Directive30(argument80 : true) @Directive40 + field17575: String @Directive30(argument80 : true) @Directive40 + field17576: String @Directive30(argument80 : true) @Directive40 + field17577: String @Directive30(argument80 : true) @Directive40 + field17578: String @Directive30(argument80 : true) @Directive40 + field17579: String @Directive30(argument80 : true) @Directive40 + field17580: String @Directive30(argument80 : true) @Directive40 + field17581: String @Directive30(argument80 : true) @Directive40 + field17582: String @Directive30(argument80 : true) @Directive40 + field17583: String @Directive30(argument80 : true) @Directive40 +} + +type Object4033 implements Interface92 @Directive22(argument62 : "stringValue17687") @Directive44(argument97 : ["stringValue17688", "stringValue17689"]) { + field8384: Object753! + field8385: [Object4034] +} + +type Object4034 implements Interface93 @Directive22(argument62 : "stringValue17690") @Directive44(argument97 : ["stringValue17691", "stringValue17692"]) { + field8386: String + field8999: Object4035 +} + +type Object4035 @Directive22(argument62 : "stringValue17694") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17693"]) @Directive44(argument97 : ["stringValue17695", "stringValue17696"]) { + field17585: Scalar4 @Directive30(argument80 : true) + field17586: Scalar4 @Directive30(argument80 : true) + field17587: Enum682 @Directive30(argument80 : true) + field17588: Object4019 @Directive30(argument80 : true) + field17589: Boolean @Directive30(argument80 : true) +} + +type Object4036 implements Interface92 @Directive22(argument62 : "stringValue17703") @Directive44(argument97 : ["stringValue17704", "stringValue17705"]) { + field8384: Object753! + field8385: [Object4037] +} + +type Object4037 implements Interface93 @Directive22(argument62 : "stringValue17706") @Directive44(argument97 : ["stringValue17707", "stringValue17708"]) { + field8386: String + field8999: Object4029 +} + +type Object4038 implements Interface92 @Directive22(argument62 : "stringValue17711") @Directive44(argument97 : ["stringValue17712", "stringValue17713"]) { + field8384: Object753! + field8385: [Object4039] +} + +type Object4039 implements Interface93 @Directive22(argument62 : "stringValue17714") @Directive44(argument97 : ["stringValue17715", "stringValue17716"]) { + field8386: String + field8999: Object4040 +} + +type Object404 implements Interface34 @Directive21(argument61 : "stringValue1242") @Directive44(argument97 : ["stringValue1241"]) { + field2293: Object405! + field2296: Enum125! +} + +type Object4040 @Directive22(argument62 : "stringValue17717") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17718", "stringValue17719", "stringValue17720"]) { + field17592: Scalar4 @Directive30(argument80 : true) @Directive41 + field17593: Scalar4 @Directive30(argument80 : true) @Directive41 + field17594: Enum454 @Directive30(argument80 : true) @Directive40 + field17595: Int @Directive30(argument80 : true) @Directive40 + field17596: String @Directive30(argument80 : true) @Directive40 + field17597: Boolean @Directive30(argument80 : true) @Directive40 + field17598: Boolean @Directive30(argument80 : true) @Directive40 + field17599: Union182 @Directive30(argument80 : true) @Directive40 + field17600(argument513: Int, argument514: String, argument515: Int, argument516: String): Object4041 @Directive18(argument56 : "stringValue17721") @Directive30(argument80 : true) @Directive40 +} + +type Object4041 implements Interface92 @Directive22(argument62 : "stringValue17722") @Directive44(argument97 : ["stringValue17723", "stringValue17724"]) { + field8384: Object753! + field8385: [Object4042] +} + +type Object4042 implements Interface93 @Directive22(argument62 : "stringValue17725") @Directive44(argument97 : ["stringValue17726", "stringValue17727"]) { + field8386: String + field8999: Object4031 +} + +type Object4043 implements Interface92 @Directive22(argument62 : "stringValue17730") @Directive44(argument97 : ["stringValue17731", "stringValue17732"]) { + field8384: Object753! + field8385: [Object4044] +} + +type Object4044 implements Interface93 @Directive22(argument62 : "stringValue17733") @Directive44(argument97 : ["stringValue17734", "stringValue17735"]) { + field8386: String + field8999: Object4045 +} + +type Object4045 @Directive22(argument62 : "stringValue17736") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17737", "stringValue17738", "stringValue17739"]) { + field17602: Scalar2 @Directive18(argument56 : "stringValue17740") @Directive30(argument80 : true) @Directive40 + field17603: Scalar4 @Directive30(argument80 : true) @Directive41 + field17604: Scalar4 @Directive30(argument80 : true) @Directive41 + field17605: Enum886 @Directive30(argument80 : true) @Directive40 + field17606: Int @Directive18(argument56 : "stringValue17741") @Directive30(argument80 : true) @Directive40 + field17607: Int @Directive30(argument80 : true) @Directive40 + field17608: Enum202 @Directive18(argument56 : "stringValue17742") @Directive30(argument80 : true) @Directive40 + field17609: Enum887 @Directive30(argument80 : true) @Directive40 + field17610: Boolean @Directive18(argument56 : "stringValue17747") @Directive30(argument80 : true) @Directive40 + field17611: Boolean @Directive18(argument56 : "stringValue17748") @Directive30(argument80 : true) @Directive40 + field17612(argument521: Int, argument522: String, argument523: Int, argument524: String): Object4046 @Directive18 @Directive30(argument80 : true) @Directive40 + field17613(argument525: Int, argument526: String, argument527: Int, argument528: String): Object4047 @Directive18 @Directive30(argument80 : true) @Directive40 + field17618(argument529: Int, argument530: String, argument531: Int, argument532: String): Object4050 @Directive18 @Directive30(argument80 : true) @Directive40 + field17619(argument533: Int, argument534: String, argument535: Int, argument536: String): Object4052 @Directive1 @Directive30(argument80 : true) @Directive40 + field17620(argument537: Int, argument538: String, argument539: Int, argument540: String, argument541: String): Object4052 @Directive14(argument51 : "stringValue17774", argument52 : "stringValue17775") @Directive30(argument80 : true) @Directive40 + field17621: Object4053 @Directive14(argument51 : "stringValue17776", argument52 : "stringValue17777") @Directive30(argument80 : true) @Directive40 @deprecated +} + +type Object4046 implements Interface92 @Directive22(argument62 : "stringValue17749") @Directive44(argument97 : ["stringValue17750", "stringValue17751"]) { + field8384: Object753! + field8385: [Object4039] +} + +type Object4047 implements Interface92 @Directive22(argument62 : "stringValue17752") @Directive44(argument97 : ["stringValue17753", "stringValue17754"]) { + field8384: Object753! + field8385: [Object4048] +} + +type Object4048 implements Interface93 @Directive22(argument62 : "stringValue17755") @Directive44(argument97 : ["stringValue17756", "stringValue17757"]) { + field8386: String + field8999: Object4049 +} + +type Object4049 @Directive22(argument62 : "stringValue17758") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17759", "stringValue17760"]) { + field17614: Enum888 @Directive30(argument80 : true) @Directive40 + field17615: Int @Directive30(argument80 : true) @Directive40 + field17616: Scalar4 @Directive30(argument80 : true) @Directive41 + field17617: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object405 @Directive21(argument61 : "stringValue1240") @Directive44(argument97 : ["stringValue1239"]) { + field2294: [Scalar2] + field2295: Scalar2 +} + +type Object4050 implements Interface92 @Directive22(argument62 : "stringValue17765") @Directive44(argument97 : ["stringValue17766", "stringValue17767"]) { + field8384: Object753! + field8385: [Object4051] +} + +type Object4051 implements Interface93 @Directive22(argument62 : "stringValue17768") @Directive44(argument97 : ["stringValue17769", "stringValue17770"]) { + field8386: String + field8999: Object4019 +} + +type Object4052 implements Interface92 @Directive22(argument62 : "stringValue17771") @Directive44(argument97 : ["stringValue17772", "stringValue17773"]) { + field8384: Object753! + field8385: [Object4042] +} + +type Object4053 implements Interface36 @Directive22(argument62 : "stringValue17783") @Directive28(argument77 : "stringValue17782") @Directive30(argument79 : "stringValue17784") @Directive44(argument97 : ["stringValue17785", "stringValue17786", "stringValue17787"]) @Directive7(argument13 : "stringValue17779", argument14 : "stringValue17780", argument16 : "stringValue17781", argument17 : "stringValue17778") { + field12401: [Object4054!]! @Directive30(argument80 : true) @Directive38 + field17630: Int @Directive30(argument80 : true) @Directive41 + field17631: Int @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4054 @Directive22(argument62 : "stringValue17788") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17789", "stringValue17790", "stringValue17791"]) { + field17622: ID! @Directive30(argument80 : true) @Directive41 + field17623: Scalar4! @Directive30(argument80 : true) @Directive41 + field17624: Scalar4! @Directive30(argument80 : true) @Directive41 + field17625: ID! @Directive30(argument80 : true) @Directive41 + field17626: Int! @Directive30(argument80 : true) @Directive41 + field17627: String! @Directive30(argument80 : true) @Directive39 + field17628: Scalar1! @Directive30(argument80 : true) @Directive38 + field17629: Int! @Directive30(argument80 : true) @Directive41 +} + +type Object4055 implements Interface92 @Directive22(argument62 : "stringValue17794") @Directive44(argument97 : ["stringValue17795", "stringValue17796"]) { + field8384: Object753! + field8385: [Object4042] +} + +type Object4056 @Directive22(argument62 : "stringValue17800") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17799"]) @Directive44(argument97 : ["stringValue17801", "stringValue17802"]) { + field17634: Boolean @Directive30(argument80 : true) + field17635: Scalar4 @Directive30(argument80 : true) + field17636: Scalar4 @Directive30(argument80 : true) + field17637: Scalar4 @Directive30(argument80 : true) + field17638: Enum889 @Directive30(argument80 : true) + field17639: Boolean @Directive30(argument80 : true) +} + +type Object4057 @Directive22(argument62 : "stringValue17810") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17809"]) @Directive44(argument97 : ["stringValue17811", "stringValue17812"]) { + field17641: Boolean @Directive30(argument80 : true) + field17642: Scalar4 @Directive30(argument80 : true) + field17643: Scalar4 @Directive30(argument80 : true) + field17644: Scalar4 @Directive30(argument80 : true) +} + +type Object4058 @Directive22(argument62 : "stringValue17816") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17815"]) @Directive44(argument97 : ["stringValue17817", "stringValue17818"]) { + field17646: Boolean @Directive30(argument80 : true) + field17647: Scalar4 @Directive30(argument80 : true) + field17648: Scalar4 @Directive30(argument80 : true) + field17649: Scalar4 @Directive30(argument80 : true) + field17650: Scalar2 @Directive30(argument80 : true) +} + +type Object4059 @Directive22(argument62 : "stringValue17822") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17823", "stringValue17824"]) { + field17652: Scalar2! @Directive30(argument80 : true) @Directive41 + field17653: Scalar2! @Directive30(argument80 : true) @Directive40 + field17654: String @Directive30(argument80 : true) @Directive41 + field17655: [Object4060] @Directive30(argument80 : true) @Directive41 + field17660: String @Directive30(argument80 : true) @Directive41 + field17661: Enum890 @Directive30(argument80 : true) @Directive41 + field17662: String @Directive30(argument80 : true) @Directive41 +} + +type Object406 implements Interface34 @Directive21(argument61 : "stringValue1245") @Directive44(argument97 : ["stringValue1244"]) { + field2293: Object405! + field2297: Enum126! + field2298: Enum127! +} + +type Object4060 @Directive22(argument62 : "stringValue17825") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17826", "stringValue17827"]) { + field17656: Scalar2! @Directive30(argument80 : true) @Directive41 + field17657: String @Directive30(argument80 : true) @Directive39 + field17658: String @Directive30(argument80 : true) @Directive39 + field17659: String @Directive30(argument80 : true) @Directive39 +} + +type Object4061 @Directive22(argument62 : "stringValue17849") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17850", "stringValue17851"]) { + field17675: Scalar4 @Directive30(argument80 : true) @Directive41 + field17676: Scalar4 @Directive30(argument80 : true) @Directive41 + field17677: Scalar2 @Directive30(argument80 : true) @Directive40 + field17678: Enum892 @Directive30(argument80 : true) @Directive40 + field17679: Enum893 @Directive30(argument80 : true) @Directive40 +} + +type Object4062 @Directive22(argument62 : "stringValue17861") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17862", "stringValue17863"]) { + field17681: Scalar4 @Directive30(argument80 : true) @Directive41 + field17682: Scalar4 @Directive30(argument80 : true) @Directive41 + field17683: Enum886 @Directive30(argument80 : true) @Directive40 + field17684: String @Directive30(argument80 : true) @Directive40 + field17685: Enum879 @Directive30(argument80 : true) @Directive40 + field17686: String @Directive30(argument80 : true) @Directive40 + field17687: String @Directive30(argument80 : true) @Directive40 + field17688: String @Directive30(argument80 : true) @Directive40 + field17689: String @Directive30(argument80 : true) @Directive40 + field17690: String @Directive30(argument80 : true) @Directive40 + field17691: String @Directive30(argument80 : true) @Directive40 + field17692: String @Directive30(argument80 : true) @Directive40 + field17693: String @Directive30(argument80 : true) @Directive40 + field17694: String @Directive30(argument80 : true) @Directive40 + field17695: String @Directive30(argument80 : true) @Directive40 +} + +type Object4063 @Directive22(argument62 : "stringValue17866") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue17865"]) @Directive44(argument97 : ["stringValue17867", "stringValue17868"]) { + field17697: Scalar4 @Directive30(argument80 : true) + field17698: Scalar4 @Directive30(argument80 : true) + field17699: String @Directive30(argument80 : true) + field17700: Enum879 @Directive30(argument80 : true) + field17701: Enum682 @Directive30(argument80 : true) + field17702: String @Directive30(argument80 : true) + field17703: Boolean @Directive30(argument80 : true) +} + +type Object4064 @Directive22(argument62 : "stringValue17870") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17871", "stringValue17872"]) { + field17705: Scalar4 @Directive30(argument80 : true) @Directive41 + field17706: Scalar4 @Directive30(argument80 : true) @Directive41 + field17707: Enum454 @Directive30(argument80 : true) @Directive40 + field17708: Int @Directive30(argument80 : true) @Directive40 + field17709: String @Directive30(argument80 : true) @Directive40 + field17710: Boolean @Directive30(argument80 : true) @Directive40 + field17711: Union182 @Directive30(argument80 : true) @Directive40 +} + +type Object4065 @Directive22(argument62 : "stringValue17874") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17875", "stringValue17876"]) { + field17713: Scalar2 @Directive30(argument80 : true) @Directive40 + field17714: Scalar4 @Directive30(argument80 : true) @Directive41 + field17715: Scalar4 @Directive30(argument80 : true) @Directive41 + field17716: Enum886 @Directive30(argument80 : true) @Directive40 + field17717: Int @Directive30(argument80 : true) @Directive40 + field17718: Int @Directive30(argument80 : true) @Directive40 + field17719: Enum202 @Directive30(argument80 : true) @Directive40 + field17720: Enum887 @Directive30(argument80 : true) @Directive40 + field17721: Boolean @Directive30(argument80 : true) @Directive40 + field17722: Boolean @Directive30(argument80 : true) @Directive40 + field17723: [Object4066] @Directive30(argument80 : true) @Directive40 + field17730: [Object4067] @Directive30(argument80 : true) @Directive40 +} + +type Object4066 @Directive22(argument62 : "stringValue17877") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17878", "stringValue17879"]) { + field17724: Scalar4 @Directive30(argument80 : true) @Directive41 + field17725: Scalar4 @Directive30(argument80 : true) @Directive41 + field17726: Enum454 @Directive30(argument80 : true) @Directive40 + field17727: Int @Directive30(argument80 : true) @Directive40 + field17728: Boolean @Directive30(argument80 : true) @Directive40 + field17729: Union182 @Directive30(argument80 : true) @Directive40 +} + +type Object4067 @Directive22(argument62 : "stringValue17880") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17881", "stringValue17882"]) { + field17731: Scalar4 @Directive30(argument80 : true) @Directive41 + field17732: Scalar4 @Directive30(argument80 : true) @Directive41 + field17733: String @Directive30(argument80 : true) @Directive40 + field17734: Enum879 @Directive30(argument80 : true) @Directive40 + field17735: [String] @Directive30(argument80 : true) @Directive40 +} + +type Object4068 @Directive22(argument62 : "stringValue17884") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17885", "stringValue17886"]) { + field17737: Scalar4 @Directive30(argument80 : true) @Directive41 + field17738: Scalar4 @Directive30(argument80 : true) @Directive41 + field17739: Scalar2 @Directive30(argument80 : true) @Directive40 + field17740: String @Directive30(argument80 : true) @Directive40 + field17741: String @Directive30(argument80 : true) @Directive40 + field17742: String @Directive30(argument80 : true) @Directive40 + field17743: String @Directive30(argument80 : true) @Directive40 + field17744: Object4069 @Directive14(argument51 : "stringValue17887", argument52 : "stringValue17888") @Directive30(argument80 : true) @Directive40 @deprecated +} + +type Object4069 @Directive22(argument62 : "stringValue17889") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17890", "stringValue17891"]) { + field17745: Scalar2 @Directive30(argument80 : true) @Directive40 + field17746: String @Directive30(argument80 : true) @Directive40 + field17747: String @Directive30(argument80 : true) @Directive40 + field17748: String @Directive17 @Directive30(argument80 : true) @Directive38 +} + +type Object407 implements Interface34 @Directive21(argument61 : "stringValue1249") @Directive44(argument97 : ["stringValue1248"]) { + field2293: Object405! +} + +type Object4070 @Directive22(argument62 : "stringValue17893") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17894", "stringValue17895"]) { + field17750: Scalar2! @Directive30(argument80 : true) @Directive40 + field17751: Scalar4 @Directive30(argument80 : true) @Directive41 + field17752: Scalar4 @Directive30(argument80 : true) @Directive41 + field17753: Scalar2 @Directive30(argument80 : true) @Directive40 + field17754: Scalar2 @Directive30(argument80 : true) @Directive40 + field17755: Scalar2 @Directive30(argument80 : true) @Directive40 + field17756: String @Directive30(argument80 : true) @Directive40 + field17757: String @Directive30(argument80 : true) @Directive40 + field17758: String @Directive30(argument80 : true) @Directive40 + field17759: String @Directive30(argument80 : true) @Directive40 + field17760: String @Directive30(argument80 : true) @Directive40 + field17761: String @Directive30(argument80 : true) @Directive40 + field17762: String @Directive30(argument80 : true) @Directive40 + field17763: Int @Directive30(argument80 : true) @Directive40 + field17764: Int @Directive30(argument80 : true) @Directive40 + field17765: Int @Directive30(argument80 : true) @Directive40 + field17766: Boolean @Directive30(argument80 : true) @Directive40 + field17767: Boolean @Directive30(argument80 : true) @Directive40 + field17768: [String] @Directive30(argument80 : true) @Directive40 + field17769: Object4071 @Directive30(argument80 : true) @Directive40 +} + +type Object4071 @Directive22(argument62 : "stringValue17896") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17897", "stringValue17898"]) { + field17770: String @Directive30(argument80 : true) @Directive40 + field17771: String @Directive30(argument80 : true) @Directive40 + field17772: String @Directive30(argument80 : true) @Directive40 + field17773: String @Directive30(argument80 : true) @Directive40 + field17774: String @Directive30(argument80 : true) @Directive40 + field17775: String @Directive30(argument80 : true) @Directive40 + field17776: String @Directive30(argument80 : true) @Directive40 + field17777: String @Directive30(argument80 : true) @Directive40 + field17778: String @Directive30(argument80 : true) @Directive40 + field17779: String @Directive30(argument80 : true) @Directive40 + field17780: String @Directive30(argument80 : true) @Directive40 + field17781: String @Directive30(argument80 : true) @Directive40 + field17782: String @Directive30(argument80 : true) @Directive40 + field17783: String @Directive30(argument80 : true) @Directive40 + field17784: String @Directive30(argument80 : true) @Directive40 +} + +type Object4072 @Directive20(argument58 : "stringValue17901", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17900") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17902", "stringValue17903"]) { + field17786: ID @Directive30(argument80 : true) @Directive40 + field17787: Enum894 @Directive30(argument80 : true) @Directive40 + field17788: Boolean @Directive30(argument80 : true) @Directive40 + field17789: Union186 @Directive30(argument80 : true) @Directive40 + field17795: Scalar4 @Directive30(argument80 : true) @Directive40 + field17796: Scalar4 @Directive30(argument80 : true) @Directive40 + field17797: Scalar4 @Directive30(argument80 : true) @Directive40 +} + +type Object4073 @Directive20(argument58 : "stringValue17912", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17911") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17913", "stringValue17914"]) { + field17790: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4074 @Directive20(argument58 : "stringValue17916", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17915") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17917", "stringValue17918"]) { + field17791: Enum889 @Directive30(argument80 : true) @Directive41 + field17792: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4075 @Directive20(argument58 : "stringValue17920", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17919") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17921", "stringValue17922"]) { + field17793: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4076 @Directive20(argument58 : "stringValue17924", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue17923") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue17925", "stringValue17926"]) { + field17794: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object4077 implements Interface92 @Directive22(argument62 : "stringValue17932") @Directive44(argument97 : ["stringValue17933", "stringValue17934"]) { + field8384: Object753! + field8385: [Object4078] +} + +type Object4078 implements Interface93 @Directive22(argument62 : "stringValue17935") @Directive44(argument97 : ["stringValue17936", "stringValue17937"]) { + field8386: String + field8999: Object4079 +} + +type Object4079 implements Interface36 @Directive22(argument62 : "stringValue17939") @Directive30(argument86 : "stringValue17946") @Directive42(argument96 : ["stringValue17938"]) @Directive44(argument97 : ["stringValue17947", "stringValue17948"]) @Directive45(argument98 : ["stringValue17949", "stringValue17950"]) @Directive7(argument11 : "stringValue17945", argument13 : "stringValue17941", argument14 : "stringValue17942", argument15 : "stringValue17944", argument16 : "stringValue17943", argument17 : "stringValue17940") { + field10387: Scalar4 @Directive30(argument80 : true) + field10520: Object4029 @Directive14(argument51 : "stringValue17994", argument52 : "stringValue17995") @Directive30(argument85 : "stringValue17993", argument86 : "stringValue17992") + field10874(argument555: Int, argument556: String, argument557: Int, argument558: String): Object4086 @Directive13(argument49 : "stringValue18063", argument50 : "stringValue18064") @Directive30(argument80 : true) + field10880(argument508: Int, argument509: String, argument510: Int, argument511: String, argument512: Boolean): Object4086 @Directive13(argument49 : "stringValue18058", argument50 : "stringValue18059") @Directive30(argument80 : true) + field11765: Object4018 @Directive13(argument49 : "stringValue17953", argument50 : "stringValue17954") @Directive30(argument85 : "stringValue17952", argument86 : "stringValue17951") + field12401(argument433: String, argument434: Int, argument435: String, argument436: Int, argument542: String, argument543: [String!]): Object4088 @Directive13(argument49 : "stringValue18070", argument50 : "stringValue18071") @Directive30(argument80 : true) + field15982: Object4080 @Directive13(argument49 : "stringValue18000", argument50 : "stringValue18001") @Directive30(argument80 : true) + field16566: Enum886 @Directive30(argument80 : true) + field17446: String @Directive30(argument80 : true) + field17537(argument492: String!): Object4029 @Directive14(argument51 : "stringValue17998", argument52 : "stringValue17999") @Directive30(argument85 : "stringValue17997", argument86 : "stringValue17996") @deprecated + field17538: Object4030 @Directive1 @Directive30(argument80 : true) + field17548(argument493: String): Object4031 @Directive14(argument51 : "stringValue18049", argument52 : "stringValue18050") @Directive30(argument85 : "stringValue18048", argument86 : "stringValue18047") @Directive40 + field17591(argument504: Int, argument505: String, argument506: Int, argument507: String): Object4085 @Directive14(argument51 : "stringValue18053", argument52 : "stringValue18054") @Directive30(argument85 : "stringValue18052", argument86 : "stringValue18051") + field17632: Int @Directive30(argument80 : true) + field17663: Scalar2 @Directive3(argument3 : "stringValue18194") @Directive30(argument80 : true) @deprecated + field17664: String @Directive3(argument3 : "stringValue18195") @Directive30(argument80 : true) @deprecated + field17665: Scalar4 @Directive3(argument3 : "stringValue18196") @Directive30(argument80 : true) @deprecated + field17666: String @Directive3(argument3 : "stringValue18227") @Directive30(argument80 : true) @deprecated + field17668: Boolean @Directive3(argument3 : "stringValue18197") @Directive30(argument80 : true) @deprecated + field17669: Boolean @Directive3(argument3 : "stringValue18198") @Directive30(argument80 : true) @deprecated + field17670: Boolean @Directive3(argument3 : "stringValue18199") @Directive30(argument80 : true) @deprecated + field17671: Boolean @Directive3(argument3 : "stringValue18200") @Directive30(argument80 : true) @deprecated + field17672: Boolean @Directive3(argument3 : "stringValue18201") @Directive30(argument80 : true) @deprecated + field17673: String @Directive3(argument3 : "stringValue18202") @Directive30(argument80 : true) @deprecated + field17674: [Object4061] @Directive3(argument3 : "stringValue18233") @Directive30(argument80 : true) @deprecated + field17680: [Object4062] @Directive3(argument3 : "stringValue18234") @Directive30(argument80 : true) @deprecated + field17704: [Object4064] @Directive3(argument3 : "stringValue18235") @Directive30(argument80 : true) @deprecated + field17712: [Object4065] @Directive3(argument3 : "stringValue18236") @Directive30(argument80 : true) @deprecated + field17749: [Object4070] @Directive3(argument3 : "stringValue18237") @Directive30(argument80 : true) @deprecated + field17800: Object4053 @Directive1 @Directive30(argument80 : true) @deprecated + field17801: Object4017 @Directive3(argument3 : "stringValue18238") @Directive30(argument80 : true) @deprecated + field17803: Enum891 @Directive3(argument1 : "stringValue17956", argument3 : "stringValue17955") @Directive30(argument80 : true) + field17804: Enum895 @Directive30(argument80 : true) + field17805: Enum896 @Directive30(argument80 : true) + field17806: [Enum897] @Directive3(argument1 : "stringValue17967", argument2 : "stringValue17965", argument3 : "stringValue17966") @Directive30(argument80 : true) + field17807: Enum898 @Directive30(argument80 : true) + field17808: Enum899 @Directive30(argument80 : true) + field17809: Int @Directive30(argument80 : true) + field17810: Int @Directive3(argument1 : "stringValue17981", argument3 : "stringValue17980") @Directive30(argument80 : true) + field17811: Int @Directive3(argument1 : "stringValue17983", argument3 : "stringValue17982") @Directive30(argument80 : true) + field17812: Float @Directive3(argument1 : "stringValue17985", argument3 : "stringValue17984") @Directive30(argument80 : true) + field17813: String @Directive30(argument85 : "stringValue17987", argument86 : "stringValue17986") + field17814: Boolean @Directive30(argument80 : true) + field17815: Boolean @Directive30(argument80 : true) + field17816: Boolean @Directive30(argument80 : true) + field17817: Boolean @Directive30(argument80 : true) + field17818: [Enum900] @Directive30(argument80 : true) + field17825: Object4081 @Directive13(argument49 : "stringValue18006", argument50 : "stringValue18007") @Directive30(argument80 : true) + field17834: Object4082 @Directive18(argument56 : "stringValue18018") @Directive3(argument1 : "stringValue18017", argument3 : "stringValue18016") @Directive30(argument80 : true) + field17855: Object4083 @Directive13(argument49 : "stringValue18023", argument50 : "stringValue18024") @Directive30(argument80 : true) + field17863: Object4084 @Directive13(argument49 : "stringValue18033", argument50 : "stringValue18034") @Directive30(argument80 : true) + field17881(argument559: Int, argument560: String, argument561: Int, argument562: String): Object4087 @Directive18 @Directive3(argument1 : "stringValue18066", argument3 : "stringValue18065") @Directive30(argument80 : true) + field17882(argument563: Int, argument564: String, argument565: Int, argument566: String, argument567: String): Object4088 @Directive14(argument51 : "stringValue18075", argument52 : "stringValue18076") @Directive30(argument80 : true) @Directive40 + field17883(argument568: Int, argument569: String, argument570: Int, argument571: String): Object4089 @Directive18 @Directive3(argument1 : "stringValue18078", argument3 : "stringValue18077") @Directive30(argument80 : true) + field17946: Scalar2 @Directive3(argument3 : "stringValue18203") @Directive30(argument80 : true) @deprecated + field17947: Enum902 @Directive3(argument3 : "stringValue18204") @Directive30(argument80 : true) @deprecated + field17948: Int @Directive3(argument3 : "stringValue18205") @Directive30(argument80 : true) @deprecated + field17949: Boolean @Directive3(argument3 : "stringValue18206") @Directive30(argument80 : true) @deprecated + field17950: Boolean @Directive3(argument3 : "stringValue18207") @Directive30(argument80 : true) @deprecated + field17951: Boolean @Directive3(argument3 : "stringValue18208") @Directive30(argument80 : true) @deprecated + field17952: Boolean @Directive3(argument3 : "stringValue18209") @Directive30(argument80 : true) @deprecated + field17953: Boolean @Directive3(argument3 : "stringValue18210") @Directive30(argument80 : true) @deprecated + field17954: Enum903 @Directive3(argument3 : "stringValue18211") @Directive30(argument80 : true) @deprecated + field17955: String @Directive3(argument3 : "stringValue18212") @Directive30(argument80 : true) @deprecated + field17956: String @Directive3(argument3 : "stringValue18213") @Directive30(argument80 : true) @deprecated + field17957: Boolean @Directive3(argument3 : "stringValue18214") @Directive30(argument80 : true) @deprecated + field17958: String @Directive3(argument3 : "stringValue18215") @Directive30(argument80 : true) @deprecated + field17959: String @Directive3(argument3 : "stringValue18216") @Directive30(argument80 : true) @deprecated + field17960: String @Directive3(argument3 : "stringValue18217") @Directive30(argument80 : true) @deprecated + field17961: String @Directive3(argument3 : "stringValue18218") @Directive30(argument80 : true) @deprecated + field17962: String @Directive3(argument3 : "stringValue18219") @Directive30(argument80 : true) @deprecated + field17963: String @Directive3(argument3 : "stringValue18220") @Directive30(argument80 : true) @deprecated + field17964: String @Directive3(argument3 : "stringValue18221") @Directive30(argument80 : true) @deprecated + field17965: String @Directive3(argument3 : "stringValue18222") @Directive30(argument80 : true) @deprecated + field17966: Enum904 @Directive3(argument3 : "stringValue18223") @Directive30(argument80 : true) @deprecated + field17967: Scalar2 @Directive3(argument3 : "stringValue18224") @Directive30(argument80 : true) @deprecated + field17968: Boolean @Directive3(argument3 : "stringValue18225") @Directive30(argument80 : true) @deprecated + field17969: Scalar2 @Directive3(argument3 : "stringValue18226") @Directive30(argument80 : true) @deprecated + field17970: Object4105 @Directive3(argument3 : "stringValue18228") @Directive30(argument80 : true) @deprecated + field17977: Object4053 @Directive14(argument51 : "stringValue18239", argument52 : "stringValue18240") @Directive30(argument80 : true) @deprecated + field17978(argument572: [String!], argument573: Boolean, argument574: String, argument575: [String!], argument576: Int): Object4079 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue18241") @deprecated + field2312: ID! @Directive30(argument80 : true) + field9087: Scalar4 @Directive30(argument80 : true) + field9142: Scalar4 @Directive30(argument80 : true) +} + +type Object408 implements Interface34 @Directive21(argument61 : "stringValue1251") @Directive44(argument97 : ["stringValue1250"]) { + field2293: Object405! + field2299: Enum128! + field2300: String! +} + +type Object4080 @Directive22(argument62 : "stringValue18003") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18002"]) @Directive44(argument97 : ["stringValue18004", "stringValue18005"]) { + field17819: Boolean @Directive30(argument80 : true) + field17820: Boolean @Directive30(argument80 : true) + field17821: Boolean @Directive30(argument80 : true) + field17822: Boolean @Directive30(argument80 : true) + field17823: Boolean @Directive30(argument80 : true) + field17824: String @Directive30(argument80 : true) +} + +type Object4081 @Directive22(argument62 : "stringValue18009") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18008"]) @Directive44(argument97 : ["stringValue18010", "stringValue18011"]) { + field17826: Int @Directive30(argument80 : true) + field17827: Int @Directive30(argument80 : true) + field17828: Boolean @Directive30(argument80 : true) + field17829: Boolean @Directive30(argument80 : true) + field17830: Boolean @Directive30(argument80 : true) + field17831: Boolean @Directive30(argument80 : true) + field17832: [Enum901] @Directive30(argument80 : true) + field17833: [Enum901] @Directive30(argument80 : true) +} + +type Object4082 @Directive22(argument62 : "stringValue18020") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18019"]) @Directive44(argument97 : ["stringValue18021", "stringValue18022"]) { + field17835: Int @Directive30(argument80 : true) + field17836: Boolean @Directive30(argument80 : true) + field17837: Scalar4 @Directive30(argument80 : true) + field17838: Scalar2 @Directive30(argument80 : true) + field17839: Boolean @Directive30(argument80 : true) + field17840: Boolean @Directive30(argument80 : true) + field17841: Int @Directive30(argument80 : true) + field17842: Boolean @Directive30(argument80 : true) + field17843: Boolean @Directive30(argument80 : true) + field17844: Boolean @Directive30(argument80 : true) + field17845: Boolean @Directive30(argument80 : true) + field17846: Boolean @Directive30(argument80 : true) + field17847: Boolean @Directive30(argument80 : true) + field17848: String @Directive30(argument80 : true) + field17849: Int @Directive30(argument80 : true) + field17850: Int @Directive30(argument80 : true) + field17851: Boolean @Directive30(argument80 : true) + field17852: Int @Directive30(argument80 : true) + field17853: Boolean @Directive30(argument80 : true) + field17854: Boolean @Directive30(argument80 : true) +} + +type Object4083 @Directive22(argument62 : "stringValue18026") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18025"]) @Directive44(argument97 : ["stringValue18027", "stringValue18028"]) { + field17856: Scalar2 @Directive30(argument80 : true) + field17857: Enum902 @Directive30(argument80 : true) + field17858: Int @Directive30(argument80 : true) + field17859: Boolean @Directive30(argument80 : true) + field17860: Boolean @Directive30(argument80 : true) + field17861: Boolean @Directive30(argument80 : true) + field17862: Boolean @Directive30(argument80 : true) +} + +type Object4084 @Directive22(argument62 : "stringValue18036") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18035"]) @Directive44(argument97 : ["stringValue18037", "stringValue18038"]) { + field17864: Boolean @Directive30(argument80 : true) + field17865: Enum903 @Directive30(argument80 : true) + field17866: String @Directive30(argument80 : true) + field17867: String @Directive30(argument80 : true) + field17868: Boolean @Directive30(argument80 : true) + field17869: String @Directive30(argument80 : true) + field17870: String @Directive30(argument80 : true) + field17871: String @Directive30(argument80 : true) + field17872: String @Directive30(argument80 : true) + field17873: String @Directive30(argument80 : true) + field17874: String @Directive30(argument80 : true) + field17875: String @Directive30(argument80 : true) + field17876: String @Directive30(argument80 : true) + field17877: Enum904 @Directive30(argument80 : true) + field17878: Scalar2 @Directive30(argument80 : true) + field17879: Boolean @Directive30(argument80 : true) + field17880: Scalar2 @Directive30(argument80 : true) +} + +type Object4085 implements Interface92 @Directive22(argument62 : "stringValue18055") @Directive44(argument97 : ["stringValue18056", "stringValue18057"]) { + field8384: Object753! + field8385: [Object4037] +} + +type Object4086 implements Interface92 @Directive22(argument62 : "stringValue18060") @Directive44(argument97 : ["stringValue18061", "stringValue18062"]) { + field8384: Object753! + field8385: [Object4039] +} + +type Object4087 implements Interface92 @Directive22(argument62 : "stringValue18067") @Directive44(argument97 : ["stringValue18068", "stringValue18069"]) { + field8384: Object753! + field8385: [Object4044] +} + +type Object4088 implements Interface92 @Directive22(argument62 : "stringValue18072") @Directive44(argument97 : ["stringValue18073", "stringValue18074"]) { + field8384: Object753! + field8385: [Object4042] +} + +type Object4089 implements Interface92 @Directive22(argument62 : "stringValue18079") @Directive44(argument97 : ["stringValue18080", "stringValue18081"]) { + field8384: Object753! + field8385: [Object4090] +} + +type Object409 implements Interface34 @Directive21(argument61 : "stringValue1254") @Directive44(argument97 : ["stringValue1253"]) { + field2293: Object405! +} + +type Object4090 implements Interface93 @Directive22(argument62 : "stringValue18082") @Directive44(argument97 : ["stringValue18083", "stringValue18084"]) { + field8386: String + field8999: Object4091 +} + +type Object4091 implements Interface36 @Directive22(argument62 : "stringValue18086") @Directive30(argument86 : "stringValue18093") @Directive42(argument96 : ["stringValue18085"]) @Directive44(argument97 : ["stringValue18094", "stringValue18095"]) @Directive45(argument98 : ["stringValue18096", "stringValue18097"]) @Directive7(argument11 : "stringValue18092", argument13 : "stringValue18088", argument14 : "stringValue18089", argument15 : "stringValue18091", argument16 : "stringValue18090", argument17 : "stringValue18087") { + field10387: Scalar4 @Directive30(argument80 : true) + field10398: Enum907 @Directive18(argument56 : "stringValue18133") @Directive3(argument1 : "stringValue18132", argument3 : "stringValue18131") @Directive30(argument80 : true) + field11765: Object4018 @Directive13(argument49 : "stringValue18098", argument50 : "stringValue18099") @Directive30(argument80 : true) + field17446: String @Directive30(argument80 : true) + field17515: Object4027 @Directive14(argument51 : "stringValue18129", argument52 : "stringValue18130") @Directive30(argument85 : "stringValue18128", argument86 : "stringValue18127") + field17663: Scalar2 @Directive3(argument3 : "stringValue18179") @Directive30(argument80 : true) @deprecated + field17664: String @Directive3(argument3 : "stringValue18180") @Directive30(argument80 : true) @deprecated + field17665: Scalar4 @Directive3(argument3 : "stringValue18181") @Directive30(argument80 : true) @deprecated + field17704: [Object4064] @Directive3(argument3 : "stringValue18193") @Directive30(argument80 : true) @deprecated + field17736: [Object4068] @Directive3(argument3 : "stringValue18185") @Directive30(argument80 : true) @deprecated + field17884: Object4092 @Directive18(argument56 : "stringValue18102") @Directive3(argument1 : "stringValue18101", argument3 : "stringValue18100") @Directive30(argument80 : true) + field17899: Object4093 @Directive18(argument56 : "stringValue18117") @Directive3(argument1 : "stringValue18116", argument3 : "stringValue18115") @Directive30(argument80 : true) + field17906: Object4094 @Directive18(argument56 : "stringValue18139") @Directive3(argument1 : "stringValue18138", argument3 : "stringValue18137") @Directive30(argument80 : true) + field17910: Object4059 @Directive18(argument56 : "stringValue18146") @Directive30(argument85 : "stringValue18145", argument86 : "stringValue18144") @Directive40 + field17911: Object4095 @Directive14(argument51 : "stringValue18149", argument52 : "stringValue18150") @Directive30(argument85 : "stringValue18148", argument86 : "stringValue18147") + field17936: Boolean @Directive3(argument3 : "stringValue18182") @Directive30(argument80 : true) @deprecated + field17937: Scalar2 @Directive3(argument3 : "stringValue18183") @Directive30(argument80 : true) @deprecated + field17938: [Scalar2] @Directive3(argument3 : "stringValue18184") @Directive30(argument80 : true) @deprecated + field17939: Object4103 @Directive3(argument3 : "stringValue18186") @Directive30(argument80 : true) @deprecated + field2312: ID! @Directive30(argument80 : true) + field9087: Scalar4 @Directive30(argument80 : true) + field9142: Scalar4 @Directive30(argument80 : true) +} + +type Object4092 @Directive22(argument62 : "stringValue18104") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18103"]) @Directive44(argument97 : ["stringValue18105", "stringValue18106"]) @Directive45(argument98 : ["stringValue18107", "stringValue18108"]) { + field17885: Int @Directive30(argument80 : true) + field17886: Int @Directive30(argument80 : true) + field17887: Boolean @Directive30(argument80 : true) + field17888: Boolean @Directive30(argument80 : true) + field17889: Boolean @Directive30(argument80 : true) + field17890: Boolean @Directive30(argument80 : true) + field17891: Enum212 @Directive30(argument80 : true) + field17892: Boolean @Directive30(argument80 : true) + field17893: Enum905 @Directive30(argument80 : true) + field17894: Boolean @Directive30(argument80 : true) + field17895: Boolean @Directive13(argument49 : "stringValue18113", argument50 : "stringValue18114") @Directive30(argument80 : true) + field17896: Scalar2 @Directive30(argument80 : true) + field17897: [Scalar2] @Directive30(argument80 : true) + field17898: Object4091 @Directive30(argument80 : true) @deprecated +} + +type Object4093 @Directive22(argument62 : "stringValue18119") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18118"]) @Directive44(argument97 : ["stringValue18120", "stringValue18121"]) { + field17900: Boolean @Directive30(argument80 : true) + field17901: Int @Directive30(argument80 : true) + field17902: String @Directive30(argument80 : true) + field17903: Boolean @Directive30(argument80 : true) + field17904: Boolean @Directive30(argument80 : true) + field17905: Enum906 @Directive30(argument80 : true) +} + +type Object4094 @Directive22(argument62 : "stringValue18141") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18140"]) @Directive44(argument97 : ["stringValue18142", "stringValue18143"]) { + field17907: Scalar4 @Directive30(argument80 : true) + field17908: Scalar4 @Directive30(argument80 : true) + field17909: Scalar4 @Directive30(argument80 : true) +} + +type Object4095 @Directive22(argument62 : "stringValue18151") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18152", "stringValue18153"]) { + field17912: Object4096 @Directive30(argument80 : true) @Directive39 + field17935: Object4096 @Directive30(argument80 : true) @Directive39 +} + +type Object4096 @Directive22(argument62 : "stringValue18154") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18155", "stringValue18156"]) { + field17913: Enum908 @Directive30(argument80 : true) @Directive41 + field17914: Object4097 @Directive30(argument80 : true) @Directive39 + field17934: String @Directive30(argument80 : true) @Directive39 +} + +type Object4097 @Directive22(argument62 : "stringValue18161") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18162", "stringValue18163"]) { + field17915: Object4098 @Directive30(argument80 : true) @Directive39 + field17918: Object4099 @Directive30(argument80 : true) @Directive39 + field17921: Object4100 @Directive30(argument80 : true) @Directive39 + field17926: Object4101 @Directive30(argument80 : true) @Directive39 + field17930: Object4102 @Directive30(argument80 : true) @Directive40 +} + +type Object4098 @Directive22(argument62 : "stringValue18164") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18165", "stringValue18166"]) { + field17916: String @Directive30(argument80 : true) @Directive41 + field17917: String @Directive30(argument80 : true) @Directive41 +} + +type Object4099 @Directive22(argument62 : "stringValue18167") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18168", "stringValue18169"]) { + field17919: String @Directive30(argument80 : true) @Directive41 + field17920: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object41 @Directive21(argument61 : "stringValue231") @Directive44(argument97 : ["stringValue230"]) { + field206: String +} + +type Object410 implements Interface34 @Directive21(argument61 : "stringValue1256") @Directive44(argument97 : ["stringValue1255"]) { + field2293: Object405! +} + +type Object4100 @Directive22(argument62 : "stringValue18170") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18171", "stringValue18172"]) { + field17922: String @Directive30(argument80 : true) @Directive41 + field17923: String @Directive30(argument80 : true) @Directive39 + field17924: Boolean @Directive30(argument80 : true) @Directive39 + field17925: String @Directive30(argument80 : true) @Directive39 +} + +type Object4101 @Directive22(argument62 : "stringValue18173") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18174", "stringValue18175"]) { + field17927: String @Directive30(argument80 : true) @Directive39 + field17928: Boolean @Directive30(argument80 : true) @Directive39 + field17929: String @Directive30(argument80 : true) @Directive39 +} + +type Object4102 @Directive22(argument62 : "stringValue18176") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18177", "stringValue18178"]) { + field17931: String @Directive30(argument80 : true) @Directive39 + field17932: Boolean @Directive30(argument80 : true) @Directive39 + field17933: String @Directive30(argument80 : true) @Directive39 +} + +type Object4103 @Directive22(argument62 : "stringValue18187") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18188", "stringValue18189"]) { + field17940: Int @Directive30(argument80 : true) @Directive40 + field17941: String @Directive30(argument80 : true) @Directive40 + field17942: String @Directive30(argument80 : true) @Directive40 + field17943: Int @Directive30(argument80 : true) @Directive40 + field17944: Object4104 @Directive30(argument80 : true) @Directive40 +} + +type Object4104 @Directive22(argument62 : "stringValue18190") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18191", "stringValue18192"]) { + field17945: Object4095 @Directive30(argument80 : true) @Directive40 +} + +type Object4105 @Directive22(argument62 : "stringValue18230") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18229"]) @Directive44(argument97 : ["stringValue18231", "stringValue18232"]) { + field17971: Boolean @Directive30(argument80 : true) + field17972: Boolean @Directive30(argument80 : true) + field17973: Int @Directive30(argument80 : true) + field17974: Int @Directive30(argument80 : true) + field17975: [Enum901] @Directive30(argument80 : true) + field17976: [Enum901] @Directive30(argument80 : true) +} + +type Object4106 @Directive22(argument62 : "stringValue18247") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue18246"]) @Directive44(argument97 : ["stringValue18248", "stringValue18249"]) { + field17982: Object4107 @Directive30(argument80 : true) +} + +type Object4107 @Directive20(argument58 : "stringValue18251", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18252") @Directive42(argument96 : ["stringValue18250"]) @Directive44(argument97 : ["stringValue18253", "stringValue18254"]) { + field17983: ID! @Directive40 + field17984: [Object4107!] @Directive40 +} + +type Object4108 implements Interface36 @Directive22(argument62 : "stringValue18258") @Directive30(argument86 : "stringValue18259") @Directive44(argument97 : ["stringValue18260", "stringValue18261"]) { + field17986: Int @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object4109 implements Interface92 @Directive42(argument96 : ["stringValue18266"]) @Directive44(argument97 : ["stringValue18267"]) { + field8384: Object753! + field8385: [Object4110] +} + +type Object411 implements Interface34 @Directive21(argument61 : "stringValue1258") @Directive44(argument97 : ["stringValue1257"]) { + field2293: Object405! + field2301: Scalar2! +} + +type Object4110 implements Interface93 @Directive42(argument96 : ["stringValue18268"]) @Directive44(argument97 : ["stringValue18269"]) { + field8386: String! + field8999: Object2015 +} + +type Object4111 implements Interface92 @Directive22(argument62 : "stringValue18401") @Directive44(argument97 : ["stringValue18402"]) { + field8384: Object753! + field8385: [Object4112] +} + +type Object4112 implements Interface93 @Directive22(argument62 : "stringValue18403") @Directive44(argument97 : ["stringValue18404"]) { + field8386: String + field8999: Object792 +} + +type Object4113 implements Interface92 @Directive22(argument62 : "stringValue18422") @Directive44(argument97 : ["stringValue18423"]) { + field8384: Object753! + field8385: [Object4114] +} + +type Object4114 implements Interface93 @Directive22(argument62 : "stringValue18424") @Directive44(argument97 : ["stringValue18425"]) { + field8386: String + field8999: Object4115 +} + +type Object4115 @Directive12 @Directive22(argument62 : "stringValue18428") @Directive42(argument96 : ["stringValue18426", "stringValue18427"]) @Directive44(argument97 : ["stringValue18429", "stringValue18430"]) @Directive45(argument98 : ["stringValue18431"]) { + field18032: Scalar4 + field18033: Scalar4 + field18034: Object4016 @Directive4(argument5 : "stringValue18432") + field18035(argument606: String, argument607: Int, argument608: String, argument609: Int): Object4116 @Directive14(argument51 : "stringValue18433") + field18036: Int + field18037: Enum202 @Directive14(argument51 : "stringValue18438") + field18038: Enum887 + field18039: Int + field18040: Boolean + field18041: Boolean + field18042(argument610: String, argument611: Int, argument612: String, argument613: Int): Object4118 @Directive14(argument51 : "stringValue18439") + field18043(argument614: String, argument615: Int, argument616: String, argument617: Int): Object4120 @Directive5(argument7 : "stringValue18444") + field18044: Scalar2 + field18045: Enum202 @Directive3(argument3 : "stringValue18447") +} + +type Object4116 implements Interface92 @Directive22(argument62 : "stringValue18434") @Directive44(argument97 : ["stringValue18435"]) { + field8384: Object753! + field8385: [Object4117] +} + +type Object4117 implements Interface93 @Directive22(argument62 : "stringValue18436") @Directive44(argument97 : ["stringValue18437"]) { + field8386: String + field8999: Object792 +} + +type Object4118 implements Interface92 @Directive22(argument62 : "stringValue18440") @Directive44(argument97 : ["stringValue18441"]) { + field8384: Object753! + field8385: [Object4119] +} + +type Object4119 implements Interface93 @Directive22(argument62 : "stringValue18442") @Directive44(argument97 : ["stringValue18443"]) { + field8386: String + field8999: Object3681 +} + +type Object412 implements Interface34 @Directive21(argument61 : "stringValue1260") @Directive44(argument97 : ["stringValue1259"]) { + field2293: Object405! + field2302: [Enum129]! +} + +type Object4120 implements Interface92 @Directive22(argument62 : "stringValue18445") @Directive44(argument97 : ["stringValue18446"]) { + field8384: Object753! + field8385: [Object4119] +} + +type Object4121 implements Interface92 @Directive22(argument62 : "stringValue18455") @Directive44(argument97 : ["stringValue18456"]) @Directive8(argument21 : "stringValue18451", argument23 : "stringValue18454", argument24 : "stringValue18450", argument25 : "stringValue18452", argument27 : "stringValue18453") { + field8384: Object753! + field8385: [Object4122] +} + +type Object4122 implements Interface93 @Directive22(argument62 : "stringValue18457") @Directive44(argument97 : ["stringValue18458"]) { + field8386: String! + field8999: Object4123 +} + +type Object4123 @Directive12 @Directive42(argument96 : ["stringValue18459", "stringValue18460", "stringValue18461"]) @Directive44(argument97 : ["stringValue18462"]) { + field18049: Object2258 @Directive4(argument5 : "stringValue18463") + field18050: Enum911 + field18051: Boolean + field18052: Boolean + field18053: Scalar4 +} + +type Object4124 implements Interface92 @Directive22(argument62 : "stringValue18476") @Directive44(argument97 : ["stringValue18477"]) { + field8384: Object753! + field8385: [Object4125] +} + +type Object4125 implements Interface93 @Directive22(argument62 : "stringValue18478") @Directive44(argument97 : ["stringValue18479"]) { + field8386: String! + field8999: Scalar3 +} + +type Object4126 @Directive22(argument62 : "stringValue18485") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18486", "stringValue18487"]) { + field18058: ID! @Directive30(argument80 : true) @Directive41 + field18059: Object4127 @Directive30(argument80 : true) @Directive41 + field18083: Object4134 @Directive30(argument80 : true) @Directive41 + field18085: String @Directive30(argument80 : true) @Directive41 +} + +type Object4127 implements Interface92 @Directive22(argument62 : "stringValue18488") @Directive44(argument97 : ["stringValue18489", "stringValue18490"]) { + field8384: Object753! + field8385: [Object4128] +} + +type Object4128 implements Interface93 @Directive22(argument62 : "stringValue18491") @Directive44(argument97 : ["stringValue18492", "stringValue18493"]) { + field8386: String! + field8999: Object4129 +} + +type Object4129 @Directive22(argument62 : "stringValue18494") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18495", "stringValue18496"]) { + field18060: ID! @Directive30(argument80 : true) @Directive41 + field18061: String @Directive30(argument80 : true) @Directive41 + field18062: [Interface41] @Directive30(argument80 : true) @Directive41 + field18063(argument651: InputObject70): Object4130 @Directive30(argument80 : true) @Directive41 + field18074: Object4132 @Directive30(argument80 : true) @Directive41 +} + +type Object413 implements Interface34 @Directive21(argument61 : "stringValue1263") @Directive44(argument97 : ["stringValue1262"]) { + field2293: Object405! +} + +type Object4130 @Directive22(argument62 : "stringValue18497") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18498", "stringValue18499"]) { + field18064: Object4131 @Directive30(argument80 : true) @Directive41 + field18070: [Object4131] @Directive30(argument80 : true) @Directive41 + field18071: Object4131 @Directive30(argument80 : true) @Directive41 + field18072: [Object4131] @Directive30(argument80 : true) @Directive41 + field18073: [Object4131] @Directive30(argument80 : true) @Directive41 +} + +type Object4131 @Directive22(argument62 : "stringValue18500") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18501", "stringValue18502"]) { + field18065: Enum133 @Directive30(argument80 : true) @Directive41 + field18066: Object438 @Directive30(argument80 : true) @Directive41 + field18067: Object438 @Directive30(argument80 : true) @Directive41 + field18068: Interface38 @Directive30(argument80 : true) @Directive41 + field18069: Interface38 @Directive30(argument80 : true) @Directive41 +} + +type Object4132 @Directive22(argument62 : "stringValue18503") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18504", "stringValue18505"]) { + field18075: String! @Directive30(argument80 : true) @Directive41 + field18076: String @Directive30(argument80 : true) @Directive41 + field18077: String @Directive30(argument80 : true) @Directive41 + field18078: [Object4133] @Directive30(argument80 : true) @Directive41 +} + +type Object4133 @Directive22(argument62 : "stringValue18506") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18507", "stringValue18508"]) { + field18079: String! @Directive30(argument80 : true) @Directive41 + field18080: String @Directive30(argument80 : true) @Directive41 + field18081: String @Directive30(argument80 : true) @Directive41 + field18082: String @Directive30(argument80 : true) @Directive41 +} + +type Object4134 @Directive22(argument62 : "stringValue18509") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18510", "stringValue18511"]) { + field18084: Float @Directive30(argument80 : true) @Directive41 +} + +type Object4135 @Directive12 @Directive22(argument62 : "stringValue18517") @Directive42(argument96 : ["stringValue18515", "stringValue18516"]) @Directive44(argument97 : ["stringValue18518"]) { + field18087: Object1820 + field18088: Object1820 + field18089: Object1820 + field18090: Object1820 + field18091: Object1820 + field18092: Object1820 + field18093: Object1820 + field18094: Object1820 + field18095: Object1820 + field18096: Object1820 + field18097: Object1820 + field18098: Object1837 +} + +type Object4136 @Directive22(argument62 : "stringValue18527") @Directive42(argument96 : ["stringValue18525", "stringValue18526"]) @Directive44(argument97 : ["stringValue18528"]) { + field18101: Object4137 +} + +type Object4137 @Directive22(argument62 : "stringValue18531") @Directive42(argument96 : ["stringValue18529", "stringValue18530"]) @Directive44(argument97 : ["stringValue18532"]) { + field18102: Int + field18103: String +} + +type Object4138 implements Interface36 @Directive22(argument62 : "stringValue18536") @Directive42(argument96 : ["stringValue18537", "stringValue18538"]) @Directive44(argument97 : ["stringValue18543"]) @Directive7(argument13 : "stringValue18541", argument14 : "stringValue18540", argument16 : "stringValue18542", argument17 : "stringValue18539") { + field18105: [Object4139] @Directive41 @deprecated + field2312: ID! +} + +type Object4139 @Directive42(argument96 : ["stringValue18544", "stringValue18545", "stringValue18546"]) @Directive44(argument97 : ["stringValue18547"]) { + field18106: Float @deprecated + field18107: String @deprecated + field18108: String @deprecated + field18109: Int @deprecated +} + +type Object414 implements Interface34 @Directive21(argument61 : "stringValue1265") @Directive44(argument97 : ["stringValue1264"]) { + field2293: Object405! + field2303: Enum130! +} + +type Object4140 implements Interface36 @Directive22(argument62 : "stringValue18557") @Directive42(argument96 : ["stringValue18558", "stringValue18559"]) @Directive44(argument97 : ["stringValue18564", "stringValue18565"]) @Directive7(argument13 : "stringValue18562", argument14 : "stringValue18561", argument16 : "stringValue18563", argument17 : "stringValue18560") { + field18111: ID! @Directive40 + field18112: [Object4141] @Directive41 + field18122: Object4142 @Directive41 + field18144(argument655: String, argument656: Int, argument657: String, argument658: Int): Object4147 @Directive5(argument7 : "stringValue18596") + field18157: [Union187] @Directive14(argument51 : "stringValue18615") + field18186: Enum916 @Directive41 + field18187: Object4142 @Directive41 + field2312: ID! + field9101: String @Directive41 +} + +type Object4141 @Directive42(argument96 : ["stringValue18566", "stringValue18567", "stringValue18568"]) @Directive44(argument97 : ["stringValue18569", "stringValue18570"]) { + field18113: Object524 + field18114: Object524 + field18115: Object524 + field18116: String + field18117: String + field18118: Int + field18119: Int + field18120: String + field18121: Float +} + +type Object4142 @Directive42(argument96 : ["stringValue18571", "stringValue18572", "stringValue18573"]) @Directive44(argument97 : ["stringValue18574", "stringValue18575"]) { + field18123: ID! + field18124: Object4143 + field18135: Object4144 + field18140: Object4146 +} + +type Object4143 @Directive42(argument96 : ["stringValue18576", "stringValue18577", "stringValue18578"]) @Directive44(argument97 : ["stringValue18579", "stringValue18580"]) { + field18125: String + field18126: Int + field18127: Object524 + field18128: Object524 + field18129: Object524 + field18130: Object524 + field18131: Object524 + field18132: Float + field18133: Float + field18134: String +} + +type Object4144 @Directive42(argument96 : ["stringValue18581", "stringValue18582", "stringValue18583"]) @Directive44(argument97 : ["stringValue18584", "stringValue18585"]) { + field18136: [Object4145] + field18139: String +} + +type Object4145 @Directive42(argument96 : ["stringValue18586", "stringValue18587", "stringValue18588"]) @Directive44(argument97 : ["stringValue18589", "stringValue18590"]) { + field18137: Object524! + field18138: String! +} + +type Object4146 @Directive42(argument96 : ["stringValue18591", "stringValue18592", "stringValue18593"]) @Directive44(argument97 : ["stringValue18594", "stringValue18595"]) { + field18141: [Object4145] + field18142: [Object4145] + field18143: String +} + +type Object4147 implements Interface92 @Directive22(argument62 : "stringValue18597") @Directive44(argument97 : ["stringValue18598", "stringValue18599"]) { + field8384: Object753! + field8385: [Object4148] +} + +type Object4148 implements Interface93 @Directive22(argument62 : "stringValue18600") @Directive44(argument97 : ["stringValue18601", "stringValue18602"]) { + field8386: String! + field8999: Object4149 +} + +type Object4149 @Directive12 @Directive22(argument62 : "stringValue18603") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18604", "stringValue18605"]) { + field18145: Enum914 @Directive30(argument80 : true) @Directive41 + field18146: Boolean @Directive30(argument80 : true) @Directive41 + field18147: Object4150 @Directive30(argument80 : true) @Directive41 + field18153: Object4150 @Directive30(argument80 : true) @Directive41 + field18154: Object4150 @Directive30(argument80 : true) @Directive41 + field18155: Int @Directive30(argument80 : true) @Directive41 + field18156: Int @Directive30(argument80 : true) @Directive41 +} + +type Object415 implements Interface35 @Directive21(argument61 : "stringValue1269") @Directive44(argument97 : ["stringValue1268"]) { + field2304: Scalar2! + field2305: String + field2306: Object416 +} + +type Object4150 @Directive22(argument62 : "stringValue18609") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18610", "stringValue18611"]) { + field18148: Enum548 @Directive30(argument80 : true) @Directive41 + field18149: String @Directive30(argument80 : true) @Directive41 + field18150: Float @Directive30(argument80 : true) @Directive41 + field18151: Enum915 @Directive30(argument80 : true) @Directive41 + field18152: String @Directive30(argument80 : true) @Directive41 +} + +type Object4151 @Directive22(argument62 : "stringValue18619") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18620", "stringValue18621"]) { + field18158: Enum914 @Directive30(argument80 : true) @Directive41 + field18159: String @Directive30(argument80 : true) @Directive41 + field18160: String @Directive30(argument80 : true) @Directive41 + field18161: Boolean @Directive30(argument80 : true) @Directive41 + field18162: String @Directive30(argument80 : true) @Directive41 + field18163: Object4150 @Directive30(argument80 : true) @Directive41 + field18164: Object4150 @Directive30(argument80 : true) @Directive41 + field18165: Object4150 @Directive30(argument80 : true) @Directive41 + field18166: Int @Directive30(argument80 : true) @Directive41 + field18167: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4152 @Directive22(argument62 : "stringValue18622") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18623", "stringValue18624"]) { + field18168: Enum914 @Directive30(argument80 : true) @Directive41 + field18169: String @Directive30(argument80 : true) @Directive41 + field18170: String @Directive30(argument80 : true) @Directive41 + field18171: Boolean @Directive30(argument80 : true) @Directive41 + field18172: String @Directive30(argument80 : true) @Directive41 + field18173: Object4150 @Directive30(argument80 : true) @Directive41 + field18174: Object4150 @Directive30(argument80 : true) @Directive41 + field18175: Object4150 @Directive30(argument80 : true) @Directive41 + field18176: Int @Directive30(argument80 : true) @Directive41 + field18177: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4153 @Directive22(argument62 : "stringValue18625") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18626", "stringValue18627"]) { + field18178: Enum914 @Directive30(argument80 : true) @Directive41 + field18179: String @Directive30(argument80 : true) @Directive41 + field18180: String @Directive30(argument80 : true) @Directive41 + field18181: Boolean @Directive30(argument80 : true) @Directive41 + field18182: String @Directive30(argument80 : true) @Directive41 + field18183: Object4150 @Directive30(argument80 : true) @Directive41 + field18184: Object4150 @Directive30(argument80 : true) @Directive41 + field18185: Object4150 @Directive30(argument80 : true) @Directive41 +} + +type Object4154 implements Interface36 @Directive22(argument62 : "stringValue18634") @Directive42(argument96 : ["stringValue18635", "stringValue18636"]) @Directive44(argument97 : ["stringValue18641"]) @Directive7(argument13 : "stringValue18639", argument14 : "stringValue18638", argument16 : "stringValue18640", argument17 : "stringValue18637") { + field18111: ID! @Directive40 + field18112: [Object4141] @Directive41 + field18189: [Object4155] @Directive41 + field18198: Object4142 @Directive41 + field18199: Object4142 @Directive41 + field2312: ID! + field9101: String @Directive41 +} + +type Object4155 @Directive42(argument96 : ["stringValue18642", "stringValue18643", "stringValue18644"]) @Directive44(argument97 : ["stringValue18645"]) { + field18190: Object524 + field18191: Object524 + field18192: Object524 + field18193: Object524 + field18194: String + field18195: String + field18196: Int + field18197: Int +} + +type Object4156 implements Interface36 @Directive22(argument62 : "stringValue18651") @Directive42(argument96 : ["stringValue18652", "stringValue18653"]) @Directive44(argument97 : ["stringValue18659"]) @Directive7(argument11 : "stringValue18658", argument12 : "stringValue18657", argument13 : "stringValue18656", argument14 : "stringValue18655", argument17 : "stringValue18654", argument18 : false) { + field18201: Boolean + field2312: ID! +} + +type Object4157 @Directive42(argument96 : ["stringValue18664", "stringValue18665", "stringValue18666"]) @Directive44(argument97 : ["stringValue18667"]) { + field18203: String + field18204: String + field18205: Object754 +} + +type Object4158 @Directive22(argument62 : "stringValue18675") @Directive42(argument96 : ["stringValue18673", "stringValue18674"]) @Directive44(argument97 : ["stringValue18676"]) { + field18208: ID + field18209: String + field18210: Int + field18211: Object4159 + field18218: String + field18219: String + field18220: String + field18221: Int + field18222: Int + field18223: Int + field18224: String + field18225: Boolean + field18226: Float @Directive14(argument51 : "stringValue18681") + field18227: Scalar4 +} + +type Object4159 @Directive22(argument62 : "stringValue18679") @Directive42(argument96 : ["stringValue18677", "stringValue18678"]) @Directive44(argument97 : ["stringValue18680"]) { + field18212: String + field18213: String + field18214: String + field18215: String + field18216: String + field18217: String +} + +type Object416 @Directive21(argument61 : "stringValue1271") @Directive44(argument97 : ["stringValue1270"]) { + field2307: String +} + +type Object4160 implements Interface92 @Directive22(argument62 : "stringValue18684") @Directive44(argument97 : ["stringValue18685"]) { + field8384: Object753! + field8385: [Object4161] +} + +type Object4161 implements Interface93 @Directive22(argument62 : "stringValue18686") @Directive44(argument97 : ["stringValue18687"]) { + field8386: String + field8999: Object4158 +} + +type Object4162 implements Interface36 @Directive22(argument62 : "stringValue18703") @Directive42(argument96 : ["stringValue18694", "stringValue18695"]) @Directive44(argument97 : ["stringValue18704"]) @Directive7(argument10 : "stringValue18701", argument11 : "stringValue18702", argument13 : "stringValue18697", argument14 : "stringValue18698", argument15 : "stringValue18700", argument16 : "stringValue18699", argument17 : "stringValue18696") { + field10502: [Object4163] @Directive3(argument3 : "stringValue18705") + field2312: ID! +} + +type Object4163 @Directive12 @Directive22(argument62 : "stringValue18708") @Directive42(argument96 : ["stringValue18706", "stringValue18707"]) @Directive44(argument97 : ["stringValue18709"]) { + field18230: String + field18231: String + field18232: String + field18233: String + field18234: String + field18235: String + field18236: String + field18237: String + field18238: String + field18239: Boolean + field18240: Scalar4 + field18241: Scalar4 + field18242: Enum886 + field18243: String + field18244: Enum919 + field18245: Boolean + field18246: String +} + +type Object4164 @Directive22(argument62 : "stringValue18716") @Directive42(argument96 : ["stringValue18714", "stringValue18715"]) @Directive44(argument97 : ["stringValue18717"]) { + field18248: [Object4165] +} + +type Object4165 @Directive12 @Directive22(argument62 : "stringValue18720") @Directive42(argument96 : ["stringValue18718", "stringValue18719"]) @Directive44(argument97 : ["stringValue18721"]) { + field18249: String @Directive3(argument3 : "stringValue18722") + field18250: String @Directive3(argument3 : "stringValue18723") +} + +type Object4166 implements Interface36 @Directive22(argument62 : "stringValue18730") @Directive42(argument96 : ["stringValue18731", "stringValue18732"]) @Directive44(argument97 : ["stringValue18738"]) @Directive7(argument12 : "stringValue18736", argument13 : "stringValue18735", argument14 : "stringValue18734", argument16 : "stringValue18737", argument17 : "stringValue18733", argument18 : true) { + field18253: Object2417 @Directive40 + field18254: Object4167 @Directive40 + field18257: [Object4168] @Directive18 @Directive40 + field2312: ID! +} + +type Object4167 @Directive20(argument58 : "stringValue18741", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18739") @Directive42(argument96 : ["stringValue18740"]) @Directive44(argument97 : ["stringValue18742"]) { + field18255: Scalar2! @Directive40 + field18256: Scalar2! @Directive40 +} + +type Object4168 @Directive42(argument96 : ["stringValue18743", "stringValue18744", "stringValue18745"]) @Directive44(argument97 : ["stringValue18746"]) { + field18258: Enum368 + field18259: Object2417 +} + +type Object4169 implements Interface92 @Directive22(argument62 : "stringValue18777") @Directive44(argument97 : ["stringValue18778"]) { + field8384: Object753! + field8385: [Object4170] +} + +type Object417 implements Interface35 @Directive21(argument61 : "stringValue1273") @Directive44(argument97 : ["stringValue1272"]) { + field2304: Scalar2! + field2305: String + field2308: Object418 + field2311: Union2 +} + +type Object4170 implements Interface93 @Directive22(argument62 : "stringValue18779") @Directive44(argument97 : ["stringValue18780"]) { + field8386: String! + field8999: Object4171 +} + +type Object4171 @Directive12 @Directive22(argument62 : "stringValue18781") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18782"]) { + field18273: Enum369 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue18783") + field18274: Scalar2 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue18784") +} + +type Object4172 implements Interface92 @Directive22(argument62 : "stringValue18802") @Directive44(argument97 : ["stringValue18803"]) { + field8384: Object753! + field8385: [Object4173] +} + +type Object4173 implements Interface93 @Directive22(argument62 : "stringValue18804") @Directive44(argument97 : ["stringValue18805"]) { + field8386: String! + field8999: Object4174 +} + +type Object4174 implements Interface101 & Interface36 @Directive22(argument62 : "stringValue18806") @Directive30(argument85 : "stringValue18815", argument86 : "stringValue18814") @Directive42(argument96 : ["stringValue18807"]) @Directive44(argument97 : ["stringValue18816"]) @Directive7(argument11 : "stringValue18813", argument12 : "stringValue18810", argument13 : "stringValue18809", argument14 : "stringValue18811", argument16 : "stringValue18812", argument17 : "stringValue18808") { + field12144: Enum459 @Directive3(argument3 : "stringValue18824") @Directive30(argument80 : true) + field12145: Enum459 @Directive3(argument3 : "stringValue18825") @Directive30(argument80 : true) + field12146: Boolean @Directive3(argument3 : "stringValue18836") @Directive30(argument85 : "stringValue18838", argument86 : "stringValue18837") + field12147: Boolean @Directive3(argument3 : "stringValue18839") @Directive30(argument85 : "stringValue18841", argument86 : "stringValue18840") + field12148: String @Directive3(argument3 : "stringValue18845") @Directive30(argument85 : "stringValue18847", argument86 : "stringValue18846") + field12149: Boolean @Directive3(argument3 : "stringValue18851") @Directive30(argument85 : "stringValue18853", argument86 : "stringValue18852") + field18275: Object1820 @Directive14(argument51 : "stringValue18834") @Directive30(argument80 : true) + field18276: Object4175 @Directive22(argument62 : "stringValue18855") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue18854") + field18280: [Object4177!] @Directive18 @Directive30(argument85 : "stringValue18871", argument86 : "stringValue18870") + field18283: Enum332 @Directive14(argument51 : "stringValue18874") @Directive30(argument80 : true) + field18284: String @Directive14(argument51 : "stringValue18876") @Directive22(argument62 : "stringValue18875") @Directive30(argument80 : true) + field18285: String @Directive14(argument51 : "stringValue18878") @Directive22(argument62 : "stringValue18877") @Directive30(argument80 : true) + field18286: String @Directive14(argument51 : "stringValue18880") @Directive22(argument62 : "stringValue18879") @Directive30(argument80 : true) + field18287: String @Directive14(argument51 : "stringValue18882") @Directive22(argument62 : "stringValue18881") @Directive30(argument80 : true) + field2312: ID! @Directive30(argument80 : true) + field9087: Scalar4 @Directive3(argument3 : "stringValue18819") @Directive30(argument80 : true) + field9141: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue18817") + field9142: Scalar4 @Directive3(argument3 : "stringValue18820") @Directive30(argument80 : true) + field9143: Scalar4 @Directive3(argument3 : "stringValue18821") @Directive30(argument80 : true) + field9144: Scalar4 @Directive3(argument3 : "stringValue18822") @Directive30(argument80 : true) + field9145: Scalar4 @Directive3(argument3 : "stringValue18823") @Directive30(argument80 : true) + field9146: Int @Directive3(argument3 : "stringValue18826") @Directive30(argument85 : "stringValue18828", argument86 : "stringValue18827") + field9147: String @Directive3(argument3 : "stringValue18829") @Directive30(argument80 : true) + field9148: String @Directive3(argument3 : "stringValue18830") @Directive30(argument80 : true) + field9149: Boolean @Directive3(argument3 : "stringValue18831") @Directive30(argument80 : true) + field9150: String @Directive3(argument3 : "stringValue18833") @Directive30(argument80 : true) + field9151: Boolean @Directive3(argument3 : "stringValue18835") @Directive30(argument80 : true) + field9152: Boolean @Directive3(argument3 : "stringValue18848") @Directive30(argument85 : "stringValue18850", argument86 : "stringValue18849") + field9153: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue18818") + field9154: Object1820 @Directive14(argument51 : "stringValue18832") @Directive30(argument80 : true) + field9158: String @Directive3(argument3 : "stringValue18842") @Directive30(argument85 : "stringValue18844", argument86 : "stringValue18843") +} + +type Object4175 implements Interface36 @Directive22(argument62 : "stringValue18856") @Directive30(argument79 : "stringValue18864") @Directive44(argument97 : ["stringValue18863"]) @Directive7(argument11 : "stringValue18862", argument12 : "stringValue18861", argument13 : "stringValue18860", argument14 : "stringValue18858", argument16 : "stringValue18859", argument17 : "stringValue18857") { + field18277: [Object4176!] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4176 @Directive22(argument62 : "stringValue18865") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18866"]) { + field18278: Scalar2! @Directive30(argument80 : true) @Directive41 + field18279: Enum922 @Directive30(argument80 : true) @Directive41 +} + +type Object4177 @Directive22(argument62 : "stringValue18872") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18873"]) { + field18281: String @Directive30(argument80 : true) @Directive40 + field18282: String @Directive30(argument80 : true) @Directive40 +} + +type Object4178 implements Interface92 @Directive22(argument62 : "stringValue18885") @Directive44(argument97 : ["stringValue18886"]) { + field8384: Object753! + field8385: [Object4179] +} + +type Object4179 implements Interface93 @Directive22(argument62 : "stringValue18887") @Directive44(argument97 : ["stringValue18888"]) { + field8386: String! + field8999: Object4180 +} + +type Object418 @Directive21(argument61 : "stringValue1275") @Directive44(argument97 : ["stringValue1274"]) { + field2309: Int + field2310: Int +} + +type Object4180 @Directive12 @Directive22(argument62 : "stringValue18889") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18890"]) { + field18288: Object4174 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue18891") @Directive40 + field18289: String @Directive30(argument80 : true) @Directive40 + field18290: String @Directive30(argument80 : true) @Directive40 + field18291: String @Directive14(argument51 : "stringValue18892") @Directive30(argument80 : true) @Directive40 + field18292: String @Directive14(argument51 : "stringValue18893") @Directive30(argument80 : true) @Directive40 +} + +type Object4181 implements Interface92 @Directive22(argument62 : "stringValue18896") @Directive44(argument97 : ["stringValue18897"]) { + field8384: Object753! + field8385: [Object4182] +} + +type Object4182 implements Interface93 @Directive22(argument62 : "stringValue18898") @Directive44(argument97 : ["stringValue18899"]) { + field8386: String! + field8999: Object4183 +} + +type Object4183 @Directive12 @Directive22(argument62 : "stringValue18900") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18901"]) { + field18294: Scalar2 @Directive30(argument80 : true) @Directive40 + field18295: Scalar2 @Directive30(argument80 : true) @Directive40 + field18296: String @Directive30(argument80 : true) @Directive40 + field18297: String @Directive30(argument80 : true) @Directive40 + field18298: String @Directive30(argument80 : true) @Directive40 + field18299: Scalar2 @Directive30(argument80 : true) @Directive40 + field18300: Scalar2 @Directive30(argument80 : true) @Directive40 + field18301: Scalar2 @Directive30(argument80 : true) @Directive40 +} + +type Object4184 @Directive22(argument62 : "stringValue18904") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18905"]) { + field18303: Enum923! @Directive30(argument80 : true) @Directive41 + field18304: Object4185 @Directive30(argument80 : true) @Directive40 +} + +type Object4185 @Directive22(argument62 : "stringValue18908") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18909"]) { + field18305: String @Directive30(argument80 : true) @Directive41 + field18306: Scalar2 @Directive30(argument80 : true) @Directive40 + field18307: Scalar2 @Directive30(argument80 : true) @Directive40 + field18308: Scalar2 @Directive30(argument80 : true) @Directive40 + field18309: Scalar2 @Directive30(argument80 : true) @Directive40 + field18310: Scalar2 @Directive30(argument80 : true) @Directive40 + field18311: Scalar2 @Directive30(argument80 : true) @Directive40 + field18312: Scalar2 @Directive30(argument80 : true) @Directive40 + field18313: Scalar2 @Directive30(argument80 : true) @Directive40 + field18314: Scalar2 @Directive30(argument80 : true) @Directive40 + field18315: Scalar2 @Directive30(argument80 : true) @Directive40 + field18316: Scalar2 @Directive30(argument80 : true) @Directive40 + field18317: Scalar2 @Directive30(argument80 : true) @Directive40 + field18318: Scalar2 @Directive30(argument80 : true) @Directive40 + field18319: Scalar2 @Directive30(argument80 : true) @Directive40 + field18320: Scalar2 @Directive30(argument80 : true) @Directive40 + field18321: Float @Directive30(argument80 : true) @Directive40 + field18322: Float @Directive30(argument80 : true) @Directive40 + field18323: Float @Directive30(argument80 : true) @Directive40 + field18324: Float @Directive30(argument80 : true) @Directive40 + field18325: Float @Directive30(argument80 : true) @Directive40 + field18326: Float @Directive30(argument80 : true) @Directive40 + field18327: Float @Directive30(argument80 : true) @Directive40 + field18328: Scalar2 @Directive30(argument80 : true) @Directive40 + field18329: Scalar2 @Directive30(argument80 : true) @Directive40 + field18330: Scalar2 @Directive30(argument80 : true) @Directive40 + field18331: Scalar2 @Directive30(argument80 : true) @Directive40 + field18332: Scalar2 @Directive30(argument80 : true) @Directive40 + field18333: Scalar2 @Directive30(argument80 : true) @Directive40 + field18334: Scalar2 @Directive30(argument80 : true) @Directive40 + field18335: Scalar2 @Directive30(argument80 : true) @Directive40 + field18336: Scalar2 @Directive30(argument80 : true) @Directive40 +} + +type Object4186 @Directive22(argument62 : "stringValue18914") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18915"]) { + field18339: String @Directive30(argument80 : true) @Directive41 + field18340: String @Directive30(argument80 : true) @Directive41 +} + +type Object4187 @Directive22(argument62 : "stringValue18921") @Directive42(argument96 : ["stringValue18919", "stringValue18920"]) @Directive44(argument97 : ["stringValue18922"]) { + field18342: Object753! + field18343: [Object4188] +} + +type Object4188 @Directive22(argument62 : "stringValue18925") @Directive42(argument96 : ["stringValue18923", "stringValue18924"]) @Directive44(argument97 : ["stringValue18926"]) { + field18344: Object4189 + field18353: String +} + +type Object4189 @Directive12 @Directive22(argument62 : "stringValue18929") @Directive42(argument96 : ["stringValue18927", "stringValue18928"]) @Directive44(argument97 : ["stringValue18930", "stringValue18931", "stringValue18932"]) @Directive45(argument98 : ["stringValue18933"]) @Directive45(argument98 : ["stringValue18934"]) { + field18345: Scalar4 + field18346: Scalar4 + field18347: Boolean @Directive3(argument3 : "stringValue18935") + field18348: Enum682 + field18349: String + field18350: String + field18351: Enum879 + field18352: Object1820 @Directive14(argument51 : "stringValue18936") +} + +type Object419 implements Interface36 @Directive22(argument62 : "stringValue1287") @Directive30(argument79 : "stringValue1286") @Directive44(argument97 : ["stringValue1293"]) @Directive7(argument13 : "stringValue1289", argument14 : "stringValue1290", argument15 : "stringValue1292", argument16 : "stringValue1291", argument17 : "stringValue1288", argument18 : true) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field2313: Boolean @Directive30(argument80 : true) @Directive41 + field2314: Float @Directive30(argument80 : true) @Directive41 + field2315: Float @Directive30(argument80 : true) @Directive41 + field2316: Float @Directive30(argument80 : true) @Directive41 + field2317: Float @Directive30(argument80 : true) @Directive41 + field2318: Float @Directive30(argument80 : true) @Directive41 +} + +type Object4190 implements Interface92 @Directive22(argument62 : "stringValue18940") @Directive44(argument97 : ["stringValue18941"]) { + field8384: Object753! + field8385: [Object4191] +} + +type Object4191 implements Interface93 @Directive22(argument62 : "stringValue18942") @Directive44(argument97 : ["stringValue18943"]) { + field8386: String + field8999: Object4192 +} + +type Object4192 @Directive12 @Directive22(argument62 : "stringValue18946") @Directive42(argument96 : ["stringValue18944", "stringValue18945"]) @Directive44(argument97 : ["stringValue18947"]) { + field18355: Scalar4 + field18356: Scalar4 + field18357: Boolean @Directive3(argument3 : "stringValue18948") + field18358: Enum454 @Directive3(argument3 : "stringValue18949") + field18359: Object3682 @Directive14(argument51 : "stringValue18950") + field18360: String + field18361: Int + field18362: Union182 +} + +type Object4193 @Directive22(argument62 : "stringValue18956") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue18957"]) { + field18365: Scalar3 @Directive30(argument80 : true) @Directive41 + field18366: Scalar2 @Directive30(argument80 : true) @Directive40 + field18367: Scalar2 @Directive30(argument80 : true) @Directive40 +} + +type Object4194 implements Interface99 @Directive22(argument62 : "stringValue18959") @Directive31 @Directive44(argument97 : ["stringValue18960", "stringValue18961", "stringValue18962"]) @Directive45(argument98 : ["stringValue18963", "stringValue18964"]) { + field18371: Object4200 @Directive18 + field8997: Object4016 @deprecated + field9408: Object4195 @Directive18 +} + +type Object4195 @Directive22(argument62 : "stringValue18965") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue18966", "stringValue18967", "stringValue18968"]) @Directive45(argument98 : ["stringValue18969"]) { + field18368(argument684: InputObject76): Object4196 @Directive18 + field18369(argument685: InputObject76, argument686: ID): Object4196 @Directive49(argument102 : "stringValue18997") + field18370: Object4016 @Directive18 @deprecated +} + +type Object4196 implements Interface46 @Directive22(argument62 : "stringValue18983") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue18984", "stringValue18985"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4197 + field8330: Object4199 + field8332: [Object1536] + field8337: [Object502] @deprecated + field9410: ID! +} + +type Object4197 implements Interface102 & Interface45 @Directive20(argument58 : "stringValue18987", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue18986") @Directive31 @Directive44(argument97 : ["stringValue18988", "stringValue18989"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4198 + field2614: String + field2615: String + field9411: Enum185 + field9412: Object570 + field9413: Object1860 + field9459: Object1866 @deprecated + field9484: Object1868 + field9621: Enum316 + field9622: Enum219 + field9623: Enum379 +} + +type Object4198 implements Interface103 @Directive20(argument58 : "stringValue18991", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18990") @Directive31 @Directive44(argument97 : ["stringValue18992", "stringValue18993"]) { + field9596: Enum185 + field9597: String + field9598: Object1883 + field9600: String + field9601: [Scalar2] + field9602: Float + field9603: Int + field9604: Object1884 + field9612: Object1885 + field9624: String + field9625: String +} + +type Object4199 implements Interface91 @Directive22(argument62 : "stringValue18994") @Directive31 @Directive44(argument97 : ["stringValue18995", "stringValue18996"]) { + field8331: [String] +} + +type Object42 @Directive21(argument61 : "stringValue235") @Directive44(argument97 : ["stringValue234"]) { + field219: String + field220: String + field221: Object35 + field222: Object43 + field234: Object43 + field235: Object43 + field236: Object43 + field237: Object44 + field261: Float + field262: Object46 + field266: Object47 + field276: String + field277: String +} + +type Object420 implements Interface1 @Directive22(argument62 : "stringValue1294") @Directive31 @Directive44(argument97 : ["stringValue1295", "stringValue1296"]) { + field1: String + field2319: String + field2320: String + field2321: String + field2322: String + field2323: [Object421] + field2422: Enum132 +} + +type Object4200 implements Interface99 @Directive22(argument62 : "stringValue18998") @Directive31 @Directive44(argument97 : ["stringValue18999", "stringValue19000", "stringValue19001"]) @Directive45(argument98 : ["stringValue19002", "stringValue19003"]) { + field18372: [Object474] @Directive13(argument49 : "stringValue19004") + field8997: Object4016 @deprecated +} + +type Object4201 @Directive22(argument62 : "stringValue19007") @Directive42(argument96 : ["stringValue19005", "stringValue19006"]) @Directive44(argument97 : ["stringValue19008"]) { + field18374: Enum925 + field18375: Boolean + field18376: Scalar4 + field18377: Scalar4 + field18378: Scalar4 + field18379: ID! +} + +type Object4202 implements Interface92 @Directive22(argument62 : "stringValue19014") @Directive44(argument97 : ["stringValue19015", "stringValue19016"]) { + field8384: Object753! + field8385: [Object4203] +} + +type Object4203 implements Interface93 @Directive22(argument62 : "stringValue19017") @Directive44(argument97 : ["stringValue19018", "stringValue19019"]) { + field8386: String! + field8999: Object2505 +} + +type Object4204 implements Interface161 & Interface36 @Directive22(argument62 : "stringValue19040") @Directive26(argument66 : 5, argument67 : "stringValue19042", argument69 : "stringValue19043", argument71 : "stringValue19041") @Directive30(argument84 : "stringValue19051", argument85 : "stringValue19050", argument86 : "stringValue19049") @Directive44(argument97 : ["stringValue19052"]) @Directive7(argument12 : "stringValue19047", argument13 : "stringValue19046", argument14 : "stringValue19045", argument16 : "stringValue19048", argument17 : "stringValue19044") { + field18111: ID! @Directive18 @Directive3(argument3 : "stringValue19053") @Directive30(argument80 : true) @Directive41 + field18382: Object4205 @Directive3(argument3 : "stringValue19054") @Directive30(argument80 : true) @Directive41 + field18401: Object4207 @Directive3(argument3 : "stringValue19055") @Directive30(argument80 : true) @Directive41 + field18405: Object4208 @Directive3(argument3 : "stringValue19056") @Directive30(argument80 : true) @Directive41 + field18411: Object4209 @Directive3(argument3 : "stringValue19061") @Directive30(argument80 : true) @Directive41 + field18414: Object4210 @Directive3(argument3 : "stringValue19064") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4205 @Directive12 @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue19028", "stringValue19029"]) @Directive44(argument97 : ["stringValue19030"]) { + field18383: Enum212 @Directive3(argument3 : "stringValue19031") @Directive30(argument80 : true) + field18384: Int @Directive30(argument80 : true) + field18385: Float @Directive30(argument80 : true) + field18386: Float @Directive30(argument80 : true) + field18387: Float @Directive30(argument80 : true) + field18388: Float @Directive30(argument80 : true) + field18389: Float @Directive30(argument80 : true) + field18390: Float @Directive30(argument80 : true) + field18391: Boolean @Directive30(argument80 : true) + field18392: Float @Directive30(argument80 : true) + field18393: Float @Directive30(argument80 : true) + field18394: Float @Directive30(argument80 : true) + field18395: Object4206 @Directive30(argument80 : true) + field18399: String @Directive30(argument80 : true) + field18400: String @Directive30(argument80 : true) +} + +type Object4206 @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue19032", "stringValue19033"]) @Directive44(argument97 : ["stringValue19034"]) { + field18396: Int @Directive30(argument80 : true) + field18397: Int @Directive30(argument80 : true) + field18398: Float @Directive30(argument80 : true) +} + +type Object4207 @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue19035", "stringValue19036"]) @Directive44(argument97 : ["stringValue19037"]) { + field18402: Enum927 @Directive30(argument80 : true) + field18403: Int @Directive30(argument80 : true) + field18404: Int @Directive30(argument80 : true) +} + +type Object4208 @Directive42(argument96 : ["stringValue19057", "stringValue19058", "stringValue19059"]) @Directive44(argument97 : ["stringValue19060"]) { + field18406: Enum212 + field18407: Enum927 + field18408: String + field18409: String + field18410: String +} + +type Object4209 @Directive22(argument62 : "stringValue19062") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19063"]) { + field18412: Boolean @Directive30(argument80 : true) @Directive41 + field18413: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object421 @Directive22(argument62 : "stringValue1297") @Directive31 @Directive44(argument97 : ["stringValue1298", "stringValue1299"]) { + field2324: String + field2325: [String] + field2326: String + field2327: Int + field2328: String + field2329: String + field2330: [Object422] + field2337: String + field2338: String! + field2339: [Object424] + field2409: String + field2410: String + field2411: [Object421] @deprecated + field2412: String + field2413: String + field2414: Boolean + field2415: Object430 + field2418: Object431 + field2421: Interface3 +} + +type Object4210 @Directive22(argument62 : "stringValue19065") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19066"]) { + field18415: Float! @Directive30(argument80 : true) @Directive41 +} + +type Object4211 implements Interface36 @Directive22(argument62 : "stringValue19070") @Directive30(argument85 : "stringValue19076", argument86 : "stringValue19075") @Directive44(argument97 : ["stringValue19077"]) @Directive7(argument13 : "stringValue19073", argument14 : "stringValue19072", argument16 : "stringValue19074", argument17 : "stringValue19071", argument18 : true) { + field18416: [Object4204!] @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4212 implements Interface92 @Directive22(argument62 : "stringValue19084") @Directive44(argument97 : ["stringValue19085"]) @Directive8(argument20 : "stringValue19083", argument21 : "stringValue19079", argument23 : "stringValue19082", argument24 : "stringValue19078", argument25 : "stringValue19080", argument27 : "stringValue19081") { + field8384: Object753! + field8385: [Object4213] +} + +type Object4213 implements Interface93 @Directive22(argument62 : "stringValue19086") @Directive44(argument97 : ["stringValue19087"]) { + field8386: String! + field8999: Object2409 +} + +type Object4214 implements Interface92 @Directive22(argument62 : "stringValue19095") @Directive44(argument97 : ["stringValue19096"]) @Directive8(argument19 : "stringValue19093", argument20 : "stringValue19094", argument21 : "stringValue19089", argument23 : "stringValue19092", argument24 : "stringValue19088", argument25 : "stringValue19090", argument27 : "stringValue19091") { + field8384: Object753! + field8385: [Object4215] +} + +type Object4215 implements Interface93 @Directive22(argument62 : "stringValue19097") @Directive44(argument97 : ["stringValue19098"]) { + field8386: String! + field8999: Object6143 +} + +type Object4216 implements Interface36 @Directive22(argument62 : "stringValue19105") @Directive30(argument79 : "stringValue19106") @Directive44(argument97 : ["stringValue19107", "stringValue19108"]) @Directive7(argument10 : "stringValue19103", argument11 : "stringValue19104", argument13 : "stringValue19100", argument14 : "stringValue19101", argument16 : "stringValue19102", argument17 : "stringValue19099") { + field18420: Object2258 @Directive26(argument67 : "stringValue19111", argument69 : "stringValue19112", argument71 : "stringValue19110") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue19109") @Directive40 + field18421: Object2258 @Directive26(argument67 : "stringValue19115", argument69 : "stringValue19116", argument71 : "stringValue19114") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue19113") @Directive40 + field18422: Object2380 @Directive26(argument67 : "stringValue19119", argument69 : "stringValue19120", argument71 : "stringValue19118") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue19117") @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object4217 implements Interface36 @Directive22(argument62 : "stringValue19127") @Directive30(argument86 : "stringValue19128") @Directive44(argument97 : ["stringValue19134", "stringValue19135"]) @Directive7(argument12 : "stringValue19133", argument13 : "stringValue19131", argument14 : "stringValue19130", argument16 : "stringValue19132", argument17 : "stringValue19129") { + field18111: ID @Directive30(argument80 : true) @Directive40 + field18424: [Object4218] @Directive30(argument80 : true) @Directive39 + field18538: Object1221 @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 + field8990: Scalar3 @Directive30(argument80 : true) @Directive41 + field8991: Scalar3 @Directive30(argument80 : true) @Directive41 +} + +type Object4218 @Directive20(argument58 : "stringValue19137", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19136") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19138", "stringValue19139"]) { + field18425: Scalar3 @Directive30(argument80 : true) @Directive41 + field18426: ID @Directive30(argument80 : true) @Directive40 + field18427: Boolean @Directive30(argument80 : true) @Directive40 + field18428: String @Directive30(argument80 : true) @Directive39 + field18429: Object4219 @Directive30(argument80 : true) @Directive39 + field18479: Object4225 @Directive30(argument80 : true) @Directive40 + field18498: Object4226 @Directive30(argument80 : true) @Directive41 + field18503: Object4227 @Directive30(argument80 : true) @Directive41 + field18508: [Object4228] @Directive30(argument80 : true) @Directive40 + field18521: Object4229 @Directive30(argument80 : true) @Directive41 + field18525: [Object4230] @Directive30(argument80 : true) @Directive40 + field18527: Object4231 @Directive30(argument80 : true) @Directive41 + field18530: Boolean @Directive30(argument80 : true) @Directive40 + field18531: [Union188] @Directive30(argument80 : true) @Directive41 + field18533: Object4233 @Directive30(argument80 : true) @Directive41 + field18537: [String] @Directive30(argument80 : true) @Directive40 +} + +type Object4219 @Directive20(argument58 : "stringValue19141", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19140") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19142", "stringValue19143"]) { + field18430: Object4220 @Directive30(argument80 : true) @Directive39 + field18457: Object4222 @Directive30(argument80 : true) @Directive39 + field18461: Boolean @Directive30(argument80 : true) @Directive40 + field18462: String @Directive30(argument80 : true) @Directive40 + field18463: Object4223 @Directive30(argument80 : true) @Directive40 + field18475: String @Directive30(argument80 : true) @Directive39 + field18476: Object4220 @Directive30(argument80 : true) @Directive39 + field18477: Enum929 @Directive30(argument80 : true) @Directive40 + field18478: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object422 @Directive20(argument58 : "stringValue1301", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1300") @Directive31 @Directive44(argument97 : ["stringValue1302", "stringValue1303"]) { + field2331: String + field2332: [Object423] + field2336: String +} + +type Object4220 @Directive20(argument58 : "stringValue19145", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19144") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19146", "stringValue19147"]) { + field18431: ID @Directive30(argument80 : true) @Directive40 + field18432: Int @Directive30(argument80 : true) @Directive40 + field18433: String @Directive30(argument80 : true) @Directive40 + field18434: Scalar3 @Directive30(argument80 : true) @Directive39 + field18435: Int @Directive30(argument80 : true) @Directive39 + field18436: Int @Directive30(argument80 : true) @Directive39 + field18437: Int @Directive30(argument80 : true) @Directive39 + field18438: Int @Directive30(argument80 : true) @Directive39 + field18439: Int @Directive30(argument80 : true) @Directive39 + field18440: String @Directive30(argument80 : true) @Directive40 + field18441: ID @Directive30(argument80 : true) @Directive40 + field18442: Int @Directive30(argument80 : true) @Directive39 + field18443: Scalar3 @Directive30(argument80 : true) @Directive39 + field18444: Int @Directive30(argument80 : true) @Directive41 + field18445: Object4221 @Directive30(argument80 : true) @Directive39 + field18452: String @Directive30(argument80 : true) @Directive41 + field18453: String @Directive30(argument80 : true) @Directive41 + field18454: Int @Directive30(argument80 : true) @Directive41 + field18455: Boolean @Directive30(argument80 : true) @Directive41 + field18456: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4221 @Directive20(argument58 : "stringValue19149", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19148") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19150", "stringValue19151"]) { + field18446: ID @Directive30(argument80 : true) @Directive40 + field18447: String @Directive30(argument80 : true) @Directive40 + field18448: String @Directive30(argument80 : true) @Directive39 + field18449: String @Directive30(argument80 : true) @Directive40 + field18450: String @Directive30(argument80 : true) @Directive40 + field18451: String @Directive30(argument80 : true) @Directive39 +} + +type Object4222 @Directive20(argument58 : "stringValue19153", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19152") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19154", "stringValue19155"]) { + field18458: String @Directive30(argument80 : true) @Directive40 + field18459: String @Directive30(argument80 : true) @Directive39 + field18460: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4223 @Directive20(argument58 : "stringValue19157", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19156") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19158", "stringValue19159"]) { + field18464: Object4224 @Directive30(argument80 : true) @Directive40 + field18469: ID @Directive30(argument80 : true) @Directive40 + field18470: String @Directive30(argument80 : true) @Directive40 + field18471: String @Directive30(argument80 : true) @Directive41 + field18472: Boolean @Directive30(argument80 : true) @Directive41 + field18473: Boolean @Directive30(argument80 : true) @Directive41 + field18474: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4224 @Directive20(argument58 : "stringValue19161", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19160") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19162", "stringValue19163"]) { + field18465: ID @Directive30(argument80 : true) @Directive40 + field18466: String @Directive30(argument80 : true) @Directive40 + field18467: String @Directive30(argument80 : true) @Directive40 + field18468: String @Directive30(argument80 : true) @Directive40 +} + +type Object4225 @Directive20(argument58 : "stringValue19169", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19168") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19170", "stringValue19171"]) { + field18480: Scalar3 @Directive30(argument80 : true) @Directive41 + field18481: String @Directive30(argument80 : true) @Directive41 + field18482: Int @Directive30(argument80 : true) @Directive41 + field18483: Int @Directive30(argument80 : true) @Directive41 + field18484: String @Directive30(argument80 : true) @Directive40 + field18485: Int @Directive30(argument80 : true) @Directive41 + field18486: [String] @Directive30(argument80 : true) @Directive41 + field18487: Boolean @Directive30(argument80 : true) @Directive41 + field18488: Boolean @Directive30(argument80 : true) @Directive41 @deprecated + field18489: Int @Directive30(argument80 : true) @Directive41 + field18490: Boolean @Directive30(argument80 : true) @Directive41 + field18491: Boolean @Directive30(argument80 : true) @Directive41 + field18492: Int @Directive30(argument80 : true) @Directive41 + field18493: Int @Directive30(argument80 : true) @Directive41 + field18494: Boolean @Directive30(argument80 : true) @Directive41 + field18495: Boolean @Directive30(argument80 : true) @Directive41 + field18496: Boolean @Directive30(argument80 : true) @Directive41 + field18497: String @Directive30(argument80 : true) @Directive40 +} + +type Object4226 @Directive20(argument58 : "stringValue19173", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19172") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19174", "stringValue19175"]) { + field18499: Boolean @Directive30(argument80 : true) @Directive41 @deprecated + field18500: Int @Directive30(argument80 : true) @Directive41 @deprecated + field18501: Int @Directive30(argument80 : true) @Directive41 + field18502: [Int] @Directive30(argument80 : true) @Directive41 +} + +type Object4227 @Directive20(argument58 : "stringValue19177", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19176") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19178", "stringValue19179"]) { + field18504: Boolean @Directive30(argument80 : true) @Directive41 + field18505: String @Directive30(argument80 : true) @Directive41 + field18506: String @Directive30(argument80 : true) @Directive41 + field18507: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4228 @Directive20(argument58 : "stringValue19181", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19180") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19182", "stringValue19183"]) { + field18509: String @Directive30(argument80 : true) @Directive41 + field18510: String @Directive30(argument80 : true) @Directive41 + field18511: ID @Directive30(argument80 : true) @Directive40 + field18512: Scalar3 @Directive30(argument80 : true) @Directive41 + field18513: Scalar3 @Directive30(argument80 : true) @Directive41 + field18514: Scalar4 @Directive30(argument80 : true) @Directive41 + field18515: Float @Directive30(argument80 : true) @Directive41 + field18516: Scalar4 @Directive30(argument80 : true) @Directive41 + field18517: Int @Directive30(argument80 : true) @Directive41 + field18518: Scalar3 @Directive30(argument80 : true) @Directive41 + field18519: Int @Directive30(argument80 : true) @Directive41 + field18520: String @Directive30(argument80 : true) @Directive41 +} + +type Object4229 @Directive20(argument58 : "stringValue19185", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19184") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19186", "stringValue19187"]) { + field18522: String @Directive30(argument80 : true) @Directive41 + field18523: Scalar3 @Directive30(argument80 : true) @Directive41 + field18524: Scalar3 @Directive30(argument80 : true) @Directive41 +} + +type Object423 @Directive20(argument58 : "stringValue1305", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1304") @Directive31 @Directive44(argument97 : ["stringValue1306", "stringValue1307"]) { + field2333: String + field2334: String + field2335: String +} + +type Object4230 @Directive22(argument62 : "stringValue19188") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19189", "stringValue19190"]) { + field18526: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4231 @Directive20(argument58 : "stringValue19192", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19191") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19193", "stringValue19194"]) { + field18528: String @Directive30(argument80 : true) @Directive41 + field18529: String @Directive30(argument80 : true) @Directive41 +} + +type Object4232 @Directive20(argument58 : "stringValue19199", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19198") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19200", "stringValue19201"]) { + field18532: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4233 @Directive20(argument58 : "stringValue19203", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19202") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19204", "stringValue19205"]) { + field18534: Object4234 @Directive30(argument80 : true) @Directive41 +} + +type Object4234 @Directive20(argument58 : "stringValue19207", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19206") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19208", "stringValue19209"]) { + field18535: Int @Directive30(argument80 : true) @Directive41 + field18536: Enum930 @Directive30(argument80 : true) @Directive41 +} + +type Object4235 implements Interface36 @Directive22(argument62 : "stringValue19219") @Directive30(argument86 : "stringValue19220") @Directive44(argument97 : ["stringValue19226", "stringValue19227"]) @Directive7(argument12 : "stringValue19225", argument13 : "stringValue19223", argument14 : "stringValue19222", argument16 : "stringValue19224", argument17 : "stringValue19221") { + field18111: Scalar2 @Directive30(argument80 : true) @Directive40 + field18538: Object1221 @Directive30(argument80 : true) @Directive40 + field18540: [Object4236] @Directive30(argument80 : true) @Directive40 + field18544: [Object1224] @Directive30(argument80 : true) @Directive40 + field18545: Object1226 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object4236 @Directive22(argument62 : "stringValue19228") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19229", "stringValue19230"]) { + field18541: Scalar3 @Directive30(argument80 : true) @Directive41 + field18542: Float @Directive30(argument80 : true) @Directive41 + field18543: String @Directive30(argument80 : true) @Directive41 +} + +type Object4237 implements Interface36 @Directive22(argument62 : "stringValue19250") @Directive30(argument86 : "stringValue19251") @Directive44(argument97 : ["stringValue19257", "stringValue19258"]) @Directive7(argument12 : "stringValue19256", argument13 : "stringValue19254", argument14 : "stringValue19253", argument16 : "stringValue19255", argument17 : "stringValue19252") { + field18111: ID @Directive30(argument80 : true) @Directive40 + field18547: [Object4238] @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object4238 @Directive22(argument62 : "stringValue19259") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19260", "stringValue19261"]) { + field18548: ID! @Directive30(argument80 : true) @Directive41 + field18549: String @Directive30(argument80 : true) @Directive41 + field18550: String @Directive30(argument80 : true) @Directive41 + field18551: Boolean @Directive30(argument80 : true) @Directive41 + field18552: String @Directive30(argument80 : true) @Directive41 + field18553: String @Directive30(argument80 : true) @Directive41 + field18554: String @Directive30(argument80 : true) @Directive41 + field18555: String @Directive30(argument80 : true) @Directive41 + field18556: String @Directive30(argument80 : true) @Directive41 + field18557: String @Directive30(argument80 : true) @Directive41 + field18558: Object4239 @Directive30(argument80 : true) @Directive41 +} + +type Object4239 @Directive22(argument62 : "stringValue19262") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19263", "stringValue19264"]) { + field18559: String @Directive30(argument80 : true) @Directive41 + field18560: Enum932 @Directive30(argument80 : true) @Directive41 + field18561: Scalar3 @Directive30(argument80 : true) @Directive41 + field18562: Scalar3 @Directive30(argument80 : true) @Directive41 + field18563: Scalar3 @Directive30(argument80 : true) @Directive41 + field18564: Scalar3 @Directive30(argument80 : true) @Directive41 + field18565: Scalar3 @Directive30(argument80 : true) @Directive41 + field18566: Scalar3 @Directive30(argument80 : true) @Directive41 + field18567: Scalar2 @Directive30(argument80 : true) @Directive41 + field18568: Scalar2 @Directive30(argument80 : true) @Directive41 + field18569: Float @Directive30(argument80 : true) @Directive41 + field18570: Boolean @Directive30(argument80 : true) @Directive41 + field18571: Enum936 @Directive30(argument80 : true) @Directive41 + field18572: Scalar2 @Directive30(argument80 : true) @Directive41 + field18573: Scalar2 @Directive30(argument80 : true) @Directive41 + field18574: String @Directive30(argument80 : true) @Directive41 + field18575: String @Directive30(argument80 : true) @Directive41 + field18576: String @Directive30(argument80 : true) @Directive41 +} + +type Object424 @Directive20(argument58 : "stringValue1309", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1308") @Directive31 @Directive44(argument97 : ["stringValue1310", "stringValue1311"]) { + field2340: String + field2341: String + field2342: String + field2343: Object425 + field2359: String + field2360: String + field2361: String + field2362: Object428 + field2382: Interface3 + field2383: [Object427] + field2384: Object398 + field2385: Boolean + field2386: [String] + field2387: [Object421] + field2388: String + field2389: String + field2390: String + field2391: String + field2392: String + field2393: String + field2394: String + field2395: String + field2396: Int + field2397: String + field2398: String + field2399: String @deprecated + field2400: String @deprecated + field2401: Enum131 @deprecated + field2402: Int @deprecated + field2403: Boolean @deprecated + field2404: [String] @deprecated + field2405: Boolean @deprecated + field2406: String @deprecated + field2407: Boolean @deprecated + field2408: String @deprecated +} + +type Object4240 implements Interface36 @Directive22(argument62 : "stringValue19272") @Directive30(argument86 : "stringValue19273") @Directive44(argument97 : ["stringValue19278"]) @Directive7(argument12 : "stringValue19277", argument13 : "stringValue19276", argument14 : "stringValue19275", argument17 : "stringValue19274", argument18 : false) { + field18578: Boolean @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive1 @Directive30(argument80 : true) @Directive40 +} + +type Object4241 implements Interface36 @Directive22(argument62 : "stringValue19281") @Directive30(argument86 : "stringValue19282") @Directive44(argument97 : ["stringValue19288", "stringValue19289"]) @Directive7(argument12 : "stringValue19287", argument13 : "stringValue19285", argument14 : "stringValue19284", argument16 : "stringValue19286", argument17 : "stringValue19283") { + field18111: ID @Directive30(argument80 : true) @Directive40 + field18547: [Object4238] @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object4242 implements Interface36 @Directive22(argument62 : "stringValue19296") @Directive30(argument86 : "stringValue19297") @Directive44(argument97 : ["stringValue19298"]) @Directive7(argument12 : "stringValue19295", argument13 : "stringValue19294", argument14 : "stringValue19293", argument17 : "stringValue19292", argument18 : false) { + field18581: Object4243 @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive3(argument3 : "stringValue19299") @Directive30(argument80 : true) @Directive41 +} + +type Object4243 @Directive22(argument62 : "stringValue19300") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19301"]) { + field18582: Int @Directive30(argument80 : true) @Directive41 + field18583: String @Directive30(argument80 : true) @Directive41 + field18584: Int @Directive30(argument80 : true) @Directive41 + field18585: Float @Directive30(argument80 : true) @Directive41 + field18586: Float @Directive30(argument80 : true) @Directive41 +} + +type Object4244 implements Interface36 @Directive22(argument62 : "stringValue19304") @Directive42(argument96 : ["stringValue19305", "stringValue19306"]) @Directive44(argument97 : ["stringValue19313", "stringValue19314"]) @Directive7(argument11 : "stringValue19312", argument13 : "stringValue19308", argument14 : "stringValue19309", argument15 : "stringValue19311", argument16 : "stringValue19310", argument17 : "stringValue19307") { + field18588: Int @Directive3(argument2 : "stringValue19316", argument3 : "stringValue19315") + field18589: Int @Directive3(argument2 : "stringValue19318", argument3 : "stringValue19317") + field18590: Int @Directive3(argument2 : "stringValue19320", argument3 : "stringValue19319") + field18591: Boolean @Directive3(argument2 : "stringValue19322", argument3 : "stringValue19321") + field18592: Scalar2 @Directive3(argument2 : "stringValue19324", argument3 : "stringValue19323") + field18593: Object4245 @Directive3(argument2 : "stringValue19326", argument3 : "stringValue19325") + field18596: [Object4246] @Directive3(argument2 : "stringValue19331", argument3 : "stringValue19330") + field18599: [Object4247] @Directive3(argument2 : "stringValue19338", argument3 : "stringValue19337") + field18602: [Object4247] @Directive3(argument2 : "stringValue19345", argument3 : "stringValue19344") + field18603: Boolean @Directive3(argument2 : "stringValue19347", argument3 : "stringValue19346") + field2312: ID! @Directive1 +} + +type Object4245 @Directive22(argument62 : "stringValue19327") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19328", "stringValue19329"]) { + field18594: Int @Directive30(argument80 : true) @Directive40 + field18595: Boolean @Directive30(argument80 : true) @Directive40 +} + +type Object4246 @Directive42(argument96 : ["stringValue19332", "stringValue19333", "stringValue19334"]) @Directive44(argument97 : ["stringValue19335", "stringValue19336"]) { + field18597: Enum177 + field18598: Int +} + +type Object4247 @Directive42(argument96 : ["stringValue19339", "stringValue19340", "stringValue19341"]) @Directive44(argument97 : ["stringValue19342", "stringValue19343"]) { + field18600: Enum177 + field18601: Boolean +} + +type Object4248 implements Interface92 @Directive22(argument62 : "stringValue19349") @Directive44(argument97 : ["stringValue19357"]) @Directive8(argument19 : "stringValue19355", argument20 : "stringValue19356", argument21 : "stringValue19351", argument23 : "stringValue19352", argument24 : "stringValue19350", argument26 : "stringValue19354", argument27 : "stringValue19353", argument28 : true) { + field8384: Object753! + field8385: [Object4249] +} + +type Object4249 implements Interface93 @Directive22(argument62 : "stringValue19358") @Directive44(argument97 : ["stringValue19359"]) { + field8386: String! + field8999: Object4250 +} + +type Object425 @Directive20(argument58 : "stringValue1313", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1312") @Directive31 @Directive44(argument97 : ["stringValue1314", "stringValue1315"]) { + field2344: Object426 +} + +type Object4250 @Directive12 @Directive22(argument62 : "stringValue19360") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19361"]) { + field18604: Enum413 @Directive3(argument3 : "stringValue19362") @Directive30(argument80 : true) @Directive41 + field18605: Scalar3 @Directive30(argument80 : true) @Directive41 + field18606: Scalar3 @Directive30(argument80 : true) @Directive41 + field18607: ID @Directive30(argument80 : true) @Directive41 + field18608: Enum937 @Directive3(argument3 : "stringValue19363") @Directive30(argument80 : true) @Directive41 + field18609: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18610: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18611: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18612: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18613: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18614: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18615: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18616: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18617: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18618: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18619: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18620: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18621: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18622: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18623: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field18624: Float @Directive18 @Directive30(argument80 : true) @Directive41 + field18625: Float @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object4251 @Directive22(argument62 : "stringValue19367") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19368"]) { + field18628: String! @Directive30(argument80 : true) @Directive40 + field18629: Enum938 @Directive30(argument80 : true) @Directive41 + field18630: Enum939 @Directive30(argument80 : true) @Directive41 + field18631: Enum940 @Directive30(argument80 : true) @Directive41 +} + +type Object4252 implements Interface92 @Directive22(argument62 : "stringValue19377") @Directive44(argument97 : ["stringValue19382"]) @Directive8(argument21 : "stringValue19379", argument23 : "stringValue19381", argument24 : "stringValue19378", argument25 : "stringValue19380") { + field8384: Object753! + field8385: [Object4253] +} + +type Object4253 implements Interface93 @Directive22(argument62 : "stringValue19383") @Directive44(argument97 : ["stringValue19384"]) { + field8386: String! + field8999: Object4254 +} + +type Object4254 @Directive22(argument62 : "stringValue19385") @Directive31 @Directive44(argument97 : ["stringValue19386"]) { + field18633: String! + field18634: String +} + +type Object4255 implements Interface92 @Directive22(argument62 : "stringValue19388") @Directive44(argument97 : ["stringValue19394"]) @Directive8(argument20 : "stringValue19393", argument21 : "stringValue19390", argument23 : "stringValue19392", argument24 : "stringValue19389", argument25 : "stringValue19391", argument27 : null, argument28 : true) { + field8384: Object753! + field8385: [Object4256] +} + +type Object4256 implements Interface93 @Directive22(argument62 : "stringValue19395") @Directive44(argument97 : ["stringValue19396"]) { + field8386: String! + field8999: Object2294 +} + +type Object4257 implements Interface92 @Directive42(argument96 : ["stringValue19401"]) @Directive44(argument97 : ["stringValue19408"]) @Directive8(argument21 : "stringValue19403", argument23 : "stringValue19407", argument24 : "stringValue19402", argument25 : "stringValue19404", argument26 : "stringValue19406", argument27 : "stringValue19405", argument28 : true) { + field8384: Object753! + field8385: [Object4258] +} + +type Object4258 implements Interface93 @Directive42(argument96 : ["stringValue19409"]) @Directive44(argument97 : ["stringValue19410"]) { + field8386: String! + field8999: Object746 +} + +type Object4259 @Directive42(argument96 : ["stringValue19411", "stringValue19412", "stringValue19413"]) @Directive44(argument97 : ["stringValue19414", "stringValue19415"]) @Directive45(argument98 : ["stringValue19416"]) { + field18638: Scalar2 + field18639: [Scalar2] + field18640: [Scalar2] + field18641: [Scalar2] + field18642: [Scalar2] + field18643: [Scalar2] + field18644: [Scalar2] + field18645: [Scalar2] + field18646: String +} + +type Object426 @Directive20(argument58 : "stringValue1317", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1316") @Directive31 @Directive44(argument97 : ["stringValue1318", "stringValue1319"]) { + field2345: Int + field2346: Int + field2347: Int + field2348: Int + field2349: String + field2350: Int + field2351: Int + field2352: [Object427] +} + +type Object4260 @Directive20(argument58 : "stringValue19419", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19420") @Directive42(argument96 : ["stringValue19418"]) @Directive44(argument97 : ["stringValue19421"]) { + field18648: ID! @Directive40 + field18649: Enum220 @Directive40 + field18650: Enum891 @Directive40 + field18651: Object4107 @Directive40 +} + +type Object4261 implements Interface92 @Directive22(argument62 : "stringValue19431") @Directive44(argument97 : ["stringValue19432"]) { + field8384: Object753! + field8385: [Object4262] +} + +type Object4262 implements Interface93 @Directive22(argument62 : "stringValue19433") @Directive44(argument97 : ["stringValue19434"]) { + field8386: String! + field8999: Object2442 +} + +type Object4263 implements Interface36 @Directive22(argument62 : "stringValue19456") @Directive30(argument86 : "stringValue19457") @Directive44(argument97 : ["stringValue19458", "stringValue19459"]) @Directive7(argument10 : "stringValue19454", argument11 : "stringValue19455", argument12 : "stringValue19453", argument13 : "stringValue19452", argument14 : "stringValue19451", argument17 : "stringValue19450", argument18 : false) { + field18711: Object4271 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive3(argument3 : "stringValue19460") @Directive30(argument80 : true) @Directive41 + field8993: Object4264 @Directive30(argument80 : true) @Directive40 +} + +type Object4264 @Directive22(argument62 : "stringValue19461") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19462", "stringValue19463"]) { + field18656: Int @Directive30(argument80 : true) @Directive40 + field18657: Object4265 @Directive30(argument80 : true) @Directive40 +} + +type Object4265 @Directive22(argument62 : "stringValue19464") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19465", "stringValue19466"]) { + field18658: [Object4266] @Directive30(argument80 : true) @Directive40 + field18676: [Object4269] @Directive30(argument80 : true) @Directive40 + field18681: Object4270 @Directive30(argument80 : true) @Directive40 + field18703: String @Directive30(argument80 : true) @Directive40 + field18704: String @Directive30(argument80 : true) @Directive40 + field18705: String @Directive30(argument80 : true) @Directive40 + field18706: Int @Directive30(argument80 : true) @Directive40 + field18707: Int @Directive30(argument80 : true) @Directive40 + field18708: Int @Directive30(argument80 : true) @Directive40 + field18709: Float @Directive30(argument80 : true) @Directive40 + field18710: [Enum897] @Directive30(argument80 : true) @Directive40 +} + +type Object4266 @Directive20(argument58 : "stringValue19467", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19468") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19469", "stringValue19470"]) { + field18659: Scalar2 @Directive30(argument80 : true) @Directive41 + field18660: String @Directive30(argument80 : true) @Directive41 + field18661: String @Directive30(argument80 : true) @Directive41 + field18662: String @Directive30(argument80 : true) @Directive41 + field18663: String @Directive30(argument80 : true) @Directive41 + field18664: String @Directive30(argument80 : true) @Directive41 + field18665: Boolean @Directive30(argument80 : true) @Directive40 + field18666: String @Directive30(argument80 : true) @Directive40 + field18667: [String] @Directive30(argument80 : true) @Directive41 + field18668: Boolean @Directive30(argument80 : true) @Directive41 + field18669: String @Directive30(argument80 : true) @Directive41 + field18670: Object4267 @Directive30(argument80 : true) @Directive41 +} + +type Object4267 @Directive20(argument58 : "stringValue19471", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19472") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19473", "stringValue19474"]) { + field18671: String @Directive30(argument80 : true) @Directive41 + field18672: Union182 @Directive30(argument80 : true) @Directive41 + field18673: [Object4268] @Directive30(argument80 : true) @Directive41 +} + +type Object4268 @Directive20(argument58 : "stringValue19475", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19476") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19477", "stringValue19478"]) { + field18674: String @Directive30(argument80 : true) @Directive41 + field18675: String @Directive30(argument80 : true) @Directive41 +} + +type Object4269 @Directive20(argument58 : "stringValue19479", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19480") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19481", "stringValue19482"]) { + field18677: Scalar2 @Directive30(argument80 : true) @Directive41 + field18678: String @Directive30(argument80 : true) @Directive41 + field18679: Boolean @Directive30(argument80 : true) @Directive41 + field18680: Object4267 @Directive30(argument80 : true) @Directive41 +} + +type Object427 @Directive20(argument58 : "stringValue1321", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue1320") @Directive31 @Directive44(argument97 : ["stringValue1322", "stringValue1323", "stringValue1324"]) @Directive45(argument98 : ["stringValue1325"]) { + field2353: String + field2354: String + field2355: Union91 + field2356: String + field2357: Boolean + field2358: Boolean @Directive18 @deprecated +} + +type Object4270 @Directive20(argument58 : "stringValue19483", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19484") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19485", "stringValue19486"]) { + field18682: String @Directive30(argument80 : true) @Directive39 + field18683: String @Directive30(argument80 : true) @Directive40 + field18684: String @Directive30(argument80 : true) @Directive40 + field18685: String @Directive30(argument80 : true) @Directive40 + field18686: String @Directive30(argument80 : true) @Directive40 + field18687: String @Directive30(argument80 : true) @Directive39 + field18688: String @Directive30(argument80 : true) @Directive39 + field18689: Float @Directive30(argument80 : true) @Directive39 + field18690: Float @Directive30(argument80 : true) @Directive39 + field18691: String @Directive30(argument80 : true) @Directive40 + field18692: String @Directive30(argument80 : true) @Directive40 + field18693: String @Directive30(argument80 : true) @Directive39 + field18694: String @Directive30(argument80 : true) @Directive39 + field18695: String @Directive30(argument80 : true) @Directive39 + field18696: String @Directive30(argument80 : true) @Directive40 + field18697: String @Directive30(argument80 : true) @Directive40 + field18698: Boolean @Directive30(argument80 : true) @Directive40 + field18699: Boolean @Directive30(argument80 : true) @Directive40 + field18700: String @Directive30(argument80 : true) @Directive40 + field18701: Float @Directive30(argument80 : true) @Directive39 + field18702: Float @Directive30(argument80 : true) @Directive39 +} + +type Object4271 @Directive22(argument62 : "stringValue19487") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19488", "stringValue19489"]) { + field18712: Object4272 @Directive30(argument80 : true) @Directive40 + field18739: Object4272 @Directive30(argument80 : true) @Directive40 +} + +type Object4272 @Directive20(argument58 : "stringValue19490", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19491") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19492", "stringValue19493"]) { + field18713: [Object4273] @Directive30(argument80 : true) @Directive41 + field18722: [Object4275] @Directive30(argument80 : true) @Directive41 + field18736: Object4277 @Directive30(argument80 : true) @Directive41 +} + +type Object4273 @Directive20(argument58 : "stringValue19494", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19495") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19496", "stringValue19497"]) { + field18714: String @Directive30(argument80 : true) @Directive41 + field18715: String @Directive30(argument80 : true) @Directive41 + field18716: [Object4274] @Directive30(argument80 : true) @Directive41 + field18721: [Object4273] @Directive30(argument80 : true) @Directive41 +} + +type Object4274 @Directive20(argument58 : "stringValue19498", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19499") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19500", "stringValue19501"]) { + field18717: String @Directive30(argument80 : true) @Directive41 + field18718: String @Directive30(argument80 : true) @Directive41 + field18719: String @Directive30(argument80 : true) @Directive41 + field18720: [Object4274] @Directive30(argument80 : true) @Directive41 +} + +type Object4275 @Directive20(argument58 : "stringValue19502", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19503") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19504", "stringValue19505"]) { + field18723: String @Directive30(argument80 : true) @Directive41 + field18724: String @Directive30(argument80 : true) @Directive41 + field18725: String @Directive30(argument80 : true) @Directive41 + field18726: [Object4276] @Directive30(argument80 : true) @Directive41 + field18735: String @Directive30(argument80 : true) @Directive41 +} + +type Object4276 @Directive20(argument58 : "stringValue19506", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19507") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19508", "stringValue19509"]) { + field18727: Scalar2 @Directive30(argument80 : true) @Directive41 + field18728: String @Directive30(argument80 : true) @Directive41 + field18729: String @Directive30(argument80 : true) @Directive41 + field18730: String @Directive30(argument80 : true) @Directive41 + field18731: String @Directive30(argument80 : true) @Directive41 + field18732: String @Directive30(argument80 : true) @Directive41 + field18733: Enum942 @Directive30(argument80 : true) @Directive41 + field18734: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object4277 @Directive20(argument58 : "stringValue19514", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19515") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19516", "stringValue19517"]) { + field18737: [Int] @Directive30(argument80 : true) @Directive41 + field18738: [Int] @Directive30(argument80 : true) @Directive41 +} + +type Object4278 implements Interface160 & Interface46 @Directive22(argument62 : "stringValue19519") @Directive31 @Directive44(argument97 : ["stringValue19520", "stringValue19521"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Interface45 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object4279 implements Interface46 @Directive22(argument62 : "stringValue19523") @Directive31 @Directive44(argument97 : ["stringValue19524", "stringValue19525"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4280 + field8330: Object4282 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object428 @Directive20(argument58 : "stringValue1327", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1326") @Directive31 @Directive44(argument97 : ["stringValue1328", "stringValue1329"]) { + field2363: Int + field2364: [Object429] + field2368: String + field2369: String + field2370: [String] + field2371: [String] + field2372: Int + field2373: [Int] + field2374: Int + field2375: Int + field2376: [Int] + field2377: Boolean + field2378: Boolean + field2379: Int + field2380: [String] + field2381: [String] +} + +type Object4280 implements Interface45 @Directive22(argument62 : "stringValue19526") @Directive31 @Directive44(argument97 : ["stringValue19527", "stringValue19528"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4281 +} + +type Object4281 @Directive22(argument62 : "stringValue19529") @Directive31 @Directive44(argument97 : ["stringValue19530", "stringValue19531"]) { + field18742: ID +} + +type Object4282 implements Interface91 @Directive22(argument62 : "stringValue19532") @Directive31 @Directive44(argument97 : ["stringValue19533", "stringValue19534"]) { + field8331: [String] +} + +type Object4283 @Directive22(argument62 : "stringValue19547") @Directive31 @Directive44(argument97 : ["stringValue19548", "stringValue19549"]) { + field18746: Object4284 + field18881: Object4310 + field18888: Object4311 + field18898: String + field18899: Object4312 +} + +type Object4284 @Directive22(argument62 : "stringValue19550") @Directive31 @Directive44(argument97 : ["stringValue19551", "stringValue19552"]) { + field18747: Object4285 + field18750: Object4286 + field18756: Object4288 + field18765: Object4289 + field18804: Object4297 + field18815: Object4300 + field18824: Object4300 + field18825: Object4300 + field18826: Object4302 + field18829: Object4303 + field18833: Object4304 + field18841: Object4305 + field18845: Object4306 + field18861: Object4308 + field18873: Object4309 +} + +type Object4285 @Directive22(argument62 : "stringValue19553") @Directive31 @Directive44(argument97 : ["stringValue19554", "stringValue19555"]) { + field18748: String + field18749: String +} + +type Object4286 @Directive22(argument62 : "stringValue19556") @Directive31 @Directive44(argument97 : ["stringValue19557", "stringValue19558"]) { + field18751: String + field18752: Object4287 +} + +type Object4287 @Directive22(argument62 : "stringValue19559") @Directive31 @Directive44(argument97 : ["stringValue19560", "stringValue19561"]) { + field18753: String + field18754: Boolean + field18755: String +} + +type Object4288 @Directive22(argument62 : "stringValue19562") @Directive31 @Directive44(argument97 : ["stringValue19563", "stringValue19564"]) { + field18757: String + field18758: String @deprecated + field18759: String + field18760: String + field18761: String + field18762: String + field18763: Object4287 + field18764: Object4287 +} + +type Object4289 @Directive22(argument62 : "stringValue19565") @Directive31 @Directive44(argument97 : ["stringValue19566", "stringValue19567"]) { + field18766: String + field18767: Object4290 + field18776: Object4292 + field18786: Object4294 +} + +type Object429 @Directive20(argument58 : "stringValue1331", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1330") @Directive31 @Directive44(argument97 : ["stringValue1332", "stringValue1333"]) { + field2365: String + field2366: String + field2367: Boolean +} + +type Object4290 @Directive22(argument62 : "stringValue19568") @Directive31 @Directive44(argument97 : ["stringValue19569", "stringValue19570"]) { + field18768: String + field18769: String + field18770: String + field18771: Object4291 + field18774: Object4291 + field18775: Object4287 +} + +type Object4291 @Directive22(argument62 : "stringValue19571") @Directive31 @Directive44(argument97 : ["stringValue19572", "stringValue19573"]) { + field18772: String + field18773: String +} + +type Object4292 @Directive22(argument62 : "stringValue19574") @Directive31 @Directive44(argument97 : ["stringValue19575", "stringValue19576"]) { + field18777: String + field18778: String + field18779: String + field18780: Boolean + field18781: Object4293 + field18785: Object4287 +} + +type Object4293 @Directive22(argument62 : "stringValue19577") @Directive31 @Directive44(argument97 : ["stringValue19578", "stringValue19579"]) { + field18782: String + field18783: String + field18784: Object449 +} + +type Object4294 @Directive22(argument62 : "stringValue19580") @Directive31 @Directive44(argument97 : ["stringValue19581", "stringValue19582"]) { + field18787: String + field18788: String + field18789: String + field18790: [Object4295!] + field18794: String + field18795: String + field18796: String + field18797: String + field18798: Object4296 @deprecated +} + +type Object4295 @Directive22(argument62 : "stringValue19583") @Directive31 @Directive44(argument97 : ["stringValue19584", "stringValue19585"]) { + field18791: String + field18792: Boolean + field18793: Int +} + +type Object4296 @Directive22(argument62 : "stringValue19586") @Directive31 @Directive44(argument97 : ["stringValue19587", "stringValue19588"]) { + field18799: String + field18800: String + field18801: String + field18802: String + field18803: String +} + +type Object4297 @Directive22(argument62 : "stringValue19589") @Directive31 @Directive44(argument97 : ["stringValue19590", "stringValue19591"]) { + field18805: String + field18806: Object4298 + field18812: Object4299 +} + +type Object4298 @Directive22(argument62 : "stringValue19592") @Directive31 @Directive44(argument97 : ["stringValue19593", "stringValue19594"]) { + field18807: String + field18808: String + field18809: String + field18810: Object4287 + field18811: Object4287 +} + +type Object4299 @Directive22(argument62 : "stringValue19595") @Directive31 @Directive44(argument97 : ["stringValue19596", "stringValue19597"]) { + field18813: String + field18814: String +} + +type Object43 @Directive21(argument61 : "stringValue237") @Directive44(argument97 : ["stringValue236"]) { + field223: Scalar2 + field224: String + field225: String + field226: String + field227: String + field228: String + field229: String + field230: String + field231: String + field232: String + field233: String +} + +type Object430 @Directive20(argument58 : "stringValue1338", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1341") @Directive31 @Directive44(argument97 : ["stringValue1339", "stringValue1340"]) { + field2416: Int + field2417: [String] +} + +type Object4300 @Directive22(argument62 : "stringValue19598") @Directive31 @Directive44(argument97 : ["stringValue19599", "stringValue19600"]) { + field18816: String + field18817: [Object4301!] + field18823: Object4287 +} + +type Object4301 @Directive22(argument62 : "stringValue19601") @Directive31 @Directive44(argument97 : ["stringValue19602", "stringValue19603"]) { + field18818: String + field18819: String + field18820: Boolean + field18821: Boolean + field18822: [Object4301!] +} + +type Object4302 @Directive22(argument62 : "stringValue19604") @Directive31 @Directive44(argument97 : ["stringValue19605", "stringValue19606"]) { + field18827: String + field18828: String +} + +type Object4303 @Directive22(argument62 : "stringValue19607") @Directive31 @Directive44(argument97 : ["stringValue19608", "stringValue19609"]) { + field18830: Object4287 + field18831: Object4287 + field18832: Object4287 +} + +type Object4304 @Directive22(argument62 : "stringValue19610") @Directive31 @Directive44(argument97 : ["stringValue19611", "stringValue19612"]) { + field18834: Object4287 + field18835: Object4287 + field18836: Object4287 + field18837: Object4287 + field18838: Object4287 + field18839: Object4287 + field18840: Object4287 +} + +type Object4305 @Directive22(argument62 : "stringValue19613") @Directive31 @Directive44(argument97 : ["stringValue19614", "stringValue19615"]) { + field18842: String + field18843: Object4287 + field18844: Object4287 +} + +type Object4306 @Directive22(argument62 : "stringValue19616") @Directive31 @Directive44(argument97 : ["stringValue19617", "stringValue19618"]) { + field18846: String + field18847: String + field18848: Int + field18849: [Object4307!] + field18858: Object4287 + field18859: Object4287 + field18860: Object4287 +} + +type Object4307 @Directive22(argument62 : "stringValue19619") @Directive31 @Directive44(argument97 : ["stringValue19620", "stringValue19621"]) { + field18850: String + field18851: String + field18852: Int + field18853: Int + field18854: Int + field18855: Enum943 + field18856: String + field18857: String +} + +type Object4308 @Directive22(argument62 : "stringValue19625") @Directive31 @Directive44(argument97 : ["stringValue19626", "stringValue19627"]) { + field18862: String + field18863: String + field18864: String + field18865: String + field18866: String + field18867: String + field18868: String + field18869: Object4287 + field18870: Object4287 @deprecated + field18871: Object4287 + field18872: String +} + +type Object4309 @Directive22(argument62 : "stringValue19628") @Directive31 @Directive44(argument97 : ["stringValue19629", "stringValue19630"]) { + field18874: String + field18875: String + field18876: Boolean + field18877: Object4291 + field18878: Object4291 + field18879: Object4287 + field18880: Object4287 +} + +type Object431 @Directive20(argument58 : "stringValue1342", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1345") @Directive31 @Directive44(argument97 : ["stringValue1343", "stringValue1344"]) { + field2419: Int + field2420: Boolean +} + +type Object4310 @Directive22(argument62 : "stringValue19631") @Directive31 @Directive44(argument97 : ["stringValue19632", "stringValue19633"]) { + field18882: Scalar2 + field18883: Scalar2 + field18884: String + field18885: Scalar2 + field18886: Enum944 + field18887: Boolean +} + +type Object4311 @Directive22(argument62 : "stringValue19637") @Directive31 @Directive44(argument97 : ["stringValue19638", "stringValue19639"]) { + field18889: String + field18890: String + field18891: String + field18892: Int + field18893: Int + field18894: Int + field18895: Scalar2 + field18896: String + field18897: Int +} + +type Object4312 @Directive22(argument62 : "stringValue19640") @Directive31 @Directive44(argument97 : ["stringValue19641", "stringValue19642"]) { + field18900: String + field18901: Enum945 +} + +type Object4313 @Directive22(argument62 : "stringValue19653") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19654", "stringValue19655"]) { + field18903: String @Directive30(argument80 : true) @Directive41 + field18904: Object4314 @Directive30(argument80 : true) @Directive41 + field18908: Object4315 @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object4314 @Directive22(argument62 : "stringValue19656") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19657", "stringValue19658"]) { + field18905: String @Directive30(argument80 : true) @Directive41 + field18906: String @Directive30(argument80 : true) @Directive41 + field18907: String @Directive30(argument80 : true) @Directive41 +} + +type Object4315 implements Interface46 @Directive22(argument62 : "stringValue19659") @Directive31 @Directive44(argument97 : ["stringValue19660", "stringValue19661"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4316 + field8330: Object4318 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object4316 implements Interface45 @Directive22(argument62 : "stringValue19662") @Directive31 @Directive44(argument97 : ["stringValue19663", "stringValue19664"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4317 +} + +type Object4317 @Directive22(argument62 : "stringValue19665") @Directive31 @Directive44(argument97 : ["stringValue19666", "stringValue19667"]) { + field18909: ID +} + +type Object4318 implements Interface91 @Directive22(argument62 : "stringValue19668") @Directive31 @Directive44(argument97 : ["stringValue19669", "stringValue19670"]) { + field8331: [String] +} + +type Object4319 @Directive22(argument62 : "stringValue19680") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19681", "stringValue19682"]) { + field18913: Boolean @Directive30(argument80 : true) @Directive41 + field18914: String @Directive30(argument80 : true) @Directive41 +} + +type Object432 implements Interface37 @Directive22(argument62 : "stringValue1352") @Directive31 @Directive44(argument97 : ["stringValue1353", "stringValue1354"]) { + field2423: String! + field2424: String + field2425: [Interface1] + field2426: String + field2427: String + field2428: String + field2429: Boolean +} + +type Object4320 @Directive22(argument62 : "stringValue19684") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19685", "stringValue19686"]) { + field18916: Boolean @Directive30(argument80 : true) @Directive41 + field18917: String @Directive30(argument80 : true) @Directive41 +} + +type Object4321 @Directive22(argument62 : "stringValue19693") @Directive42(argument96 : ["stringValue19691", "stringValue19692"]) @Directive44(argument97 : ["stringValue19694", "stringValue19695"]) { + field18919: Scalar2 + field18920: Object4322 + field18928: Object4327 +} + +type Object4322 implements Interface99 @Directive42(argument96 : ["stringValue19696", "stringValue19697", "stringValue19698"]) @Directive44(argument97 : ["stringValue19699", "stringValue19700", "stringValue19701"]) @Directive45(argument98 : ["stringValue19702"]) @Directive45(argument98 : ["stringValue19703", "stringValue19704"]) { + field18924: Object474 @Directive14(argument51 : "stringValue19723") + field18925(argument778: InputObject93): Object474 @Directive14(argument51 : "stringValue19724") + field18926(argument779: InputObject93): Object474 @Directive14(argument51 : "stringValue19725") + field18927(argument780: InputObject93): Object474 @Directive14(argument51 : "stringValue19726") + field8997: Object4016 @Directive18 @deprecated + field9409(argument777: InputObject93): Object4323 @Directive14(argument51 : "stringValue19705") + field9671: Object6137 @Directive18 @deprecated +} + +type Object4323 implements Interface46 @Directive22(argument62 : "stringValue19709") @Directive31 @Directive44(argument97 : ["stringValue19710", "stringValue19711"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4324 + field8330: Object4326 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object4324 implements Interface45 @Directive22(argument62 : "stringValue19712") @Directive31 @Directive44(argument97 : ["stringValue19713", "stringValue19714"]) { + field18923: Object1535 + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4325 +} + +type Object4325 @Directive22(argument62 : "stringValue19715") @Directive31 @Directive44(argument97 : ["stringValue19716", "stringValue19717"]) { + field18921: Enum185 + field18922: String +} + +type Object4326 implements Interface91 @Directive42(argument96 : ["stringValue19718", "stringValue19719", "stringValue19720"]) @Directive44(argument97 : ["stringValue19721", "stringValue19722"]) { + field8331: [String] +} + +type Object4327 @Directive22(argument62 : "stringValue19728") @Directive42(argument96 : ["stringValue19727"]) @Directive44(argument97 : ["stringValue19729", "stringValue19730"]) { + field18929: Enum946 @Directive41 + field18930: String @Directive41 + field18931: String @Directive41 + field18932: String @Directive41 +} + +type Object4328 implements Interface160 & Interface46 @Directive22(argument62 : "stringValue19734") @Directive31 @Directive44(argument97 : ["stringValue19735", "stringValue19736"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4329 + field8330: Object4331 + field8332: [Object1536] + field8337: [Object502] @Directive37(argument95 : "stringValue19746") @deprecated +} + +type Object4329 implements Interface45 @Directive22(argument62 : "stringValue19737") @Directive31 @Directive44(argument97 : ["stringValue19738", "stringValue19739"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4330 +} + +type Object433 implements Interface37 @Directive22(argument62 : "stringValue1355") @Directive31 @Directive44(argument97 : ["stringValue1356", "stringValue1357"]) { + field2423: String! + field2424: String + field2430: String + field2431: String +} + +type Object4330 @Directive22(argument62 : "stringValue19740") @Directive31 @Directive44(argument97 : ["stringValue19741", "stringValue19742"]) { + field18934: String + field18935: String + field18936: String! + field18937: String! +} + +type Object4331 implements Interface91 @Directive22(argument62 : "stringValue19743") @Directive31 @Directive44(argument97 : ["stringValue19744", "stringValue19745"]) { + field8331: [String] +} + +type Object4332 @Directive22(argument62 : "stringValue19799") @Directive31 @Directive44(argument97 : ["stringValue19800", "stringValue19801"]) { + field18939: ID + field18940: Object4333 + field18973: Object4333 + field18974: String + field18975: Object4341 + field18976: Object4342 +} + +type Object4333 @Directive22(argument62 : "stringValue19802") @Directive31 @Directive44(argument97 : ["stringValue19803", "stringValue19804"]) { + field18941: Enum544 + field18942: [Enum544] @deprecated + field18943: Interface119 + field18944: Interface117 + field18945: Object4334 + field18950: Object4335 + field18959: Object4338 +} + +type Object4334 @Directive22(argument62 : "stringValue19805") @Directive31 @Directive44(argument97 : ["stringValue19806", "stringValue19807"]) { + field18946: Float + field18947: Object452 + field18948: Object452 + field18949: String +} + +type Object4335 @Directive22(argument62 : "stringValue19808") @Directive31 @Directive44(argument97 : ["stringValue19809", "stringValue19810"]) { + field18951: Object4336 + field18955: Object4337 +} + +type Object4336 @Directive22(argument62 : "stringValue19811") @Directive31 @Directive44(argument97 : ["stringValue19812", "stringValue19813"]) { + field18952: String + field18953: String + field18954: Boolean +} + +type Object4337 @Directive22(argument62 : "stringValue19814") @Directive31 @Directive44(argument97 : ["stringValue19815", "stringValue19816"]) { + field18956: Int + field18957: String + field18958: Object1 +} + +type Object4338 implements Interface45 @Directive22(argument62 : "stringValue19817") @Directive31 @Directive44(argument97 : ["stringValue19818", "stringValue19819"]) { + field18965: [Enum544!] + field18966: Interface3 + field18967: [Object4341] + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4339 +} + +type Object4339 @Directive22(argument62 : "stringValue19820") @Directive31 @Directive44(argument97 : ["stringValue19821", "stringValue19822"]) { + field18960: String + field18961: Object4340 + field18964: ID +} + +type Object434 implements Interface1 @Directive22(argument62 : "stringValue1358") @Directive31 @Directive44(argument97 : ["stringValue1359", "stringValue1360"]) { + field1: String + field2432: String + field2433: String + field2434: Boolean +} + +type Object4340 @Directive22(argument62 : "stringValue19823") @Directive31 @Directive44(argument97 : ["stringValue19824", "stringValue19825"]) { + field18962: Scalar2 + field18963: String +} + +type Object4341 @Directive22(argument62 : "stringValue19826") @Directive31 @Directive44(argument97 : ["stringValue19827", "stringValue19828"]) { + field18968: Enum948 + field18969: String + field18970: String + field18971: Object452 + field18972: Object452 +} + +type Object4342 @Directive22(argument62 : "stringValue19832") @Directive31 @Directive44(argument97 : ["stringValue19833", "stringValue19834"]) { + field18977: Object4343 +} + +type Object4343 @Directive22(argument62 : "stringValue19835") @Directive31 @Directive44(argument97 : ["stringValue19836", "stringValue19837"]) { + field18978: [Object4344] +} + +type Object4344 @Directive22(argument62 : "stringValue19838") @Directive31 @Directive44(argument97 : ["stringValue19839", "stringValue19840"]) { + field18979: String + field18980: ID +} + +type Object4345 @Directive22(argument62 : "stringValue19845") @Directive31 @Directive44(argument97 : ["stringValue19846", "stringValue19847"]) { + field18982: ID + field18983: Object2723 + field18984: Object754 + field18985: String +} + +type Object4346 @Directive22(argument62 : "stringValue19849") @Directive31 @Directive44(argument97 : ["stringValue19850", "stringValue19851"]) { + field18987: String + field18988: Object478 + field18989: String + field18990: Object4347 + field18994: Object2698 +} + +type Object4347 @Directive22(argument62 : "stringValue19852") @Directive31 @Directive44(argument97 : ["stringValue19853", "stringValue19854"]) { + field18991: [Object4348] +} + +type Object4348 @Directive22(argument62 : "stringValue19855") @Directive31 @Directive44(argument97 : ["stringValue19856", "stringValue19857"]) { + field18992: String + field18993: [Interface118] +} + +type Object4349 @Directive22(argument62 : "stringValue19862") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19863", "stringValue19864"]) { + field18996: Boolean @Directive30(argument80 : true) @Directive41 + field18997: String @Directive30(argument80 : true) @Directive41 +} + +type Object435 implements Interface1 @Directive22(argument62 : "stringValue1361") @Directive31 @Directive44(argument97 : ["stringValue1362", "stringValue1363"]) { + field1: String + field2323: [Object421] + field2422: Enum132 + field2432: String + field2433: String +} + +type Object4350 implements Interface46 @Directive22(argument62 : "stringValue19866") @Directive31 @Directive44(argument97 : ["stringValue19867", "stringValue19868"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Interface45 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object4351 implements Interface36 @Directive22(argument62 : "stringValue19880") @Directive30(argument82 : true) @Directive44(argument97 : ["stringValue19881", "stringValue19882", "stringValue19883"]) @Directive7(argument12 : "stringValue19888", argument13 : "stringValue19886", argument14 : "stringValue19885", argument15 : "stringValue19889", argument16 : "stringValue19887", argument17 : "stringValue19884", argument18 : true) { + field19000: String @Directive30(argument80 : true) @Directive41 + field19001: String @Directive30(argument80 : true) @Directive41 + field19002: String @Directive30(argument80 : true) @Directive41 + field19003: String @Directive30(argument80 : true) @Directive41 + field19004: String @Directive30(argument80 : true) @Directive41 + field19005: Enum950 @Directive30(argument80 : true) @Directive41 + field19006: Boolean @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4352 @Directive22(argument62 : "stringValue19898") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19899"]) { + field19009: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4353 @Directive20(argument58 : "stringValue19905", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19904") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19906", "stringValue19907"]) { + field19011: Object4354 @Directive30(argument80 : true) @Directive39 + field19119: [Interface25!] @Directive30(argument80 : true) @Directive41 +} + +type Object4354 implements Interface162 & Interface36 @Directive22(argument62 : "stringValue19915") @Directive30(argument79 : "stringValue19918") @Directive44(argument97 : ["stringValue19916", "stringValue19917"]) @Directive45(argument98 : ["stringValue19919"]) { + field19012: String @Directive30(argument80 : true) @Directive41 + field19013: String @Directive30(argument80 : true) @Directive41 + field19014: Enum951 @Directive30(argument80 : true) @Directive41 + field19015: String @Directive30(argument80 : true) @Directive41 @deprecated + field19016: Union189 @Directive30(argument80 : true) @Directive39 + field19083: Boolean @Directive30(argument80 : true) @Directive41 @deprecated + field19084: String @Directive30(argument80 : true) @Directive41 @deprecated + field19085: Boolean @Directive30(argument80 : true) @Directive41 + field19086: [Object4381!] @Directive30(argument80 : true) @Directive41 + field19089: [Object4382!] @Directive30(argument80 : true) @Directive41 + field19092: String @Directive30(argument80 : true) @Directive39 + field19093: Object4383 @Directive30(argument80 : true) @Directive41 + field19096: Object4384 @Directive30(argument80 : true) @Directive39 @deprecated + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4355 @Directive20(argument58 : "stringValue19924", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19923") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19925", "stringValue19926"]) { + field19017: Enum952! @Directive30(argument80 : true) @Directive41 + field19018: Union190 @Directive30(argument80 : true) @Directive39 + field19045: Union191 @Directive30(argument80 : true) @Directive41 +} + +type Object4356 @Directive20(argument58 : "stringValue19935", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19934") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19936", "stringValue19937"]) { + field19019: String @Directive30(argument80 : true) @Directive41 + field19020: String @Directive30(argument80 : true) @Directive41 +} + +type Object4357 @Directive20(argument58 : "stringValue19939", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19938") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19940", "stringValue19941"]) { + field19021: [Object4358!]! @Directive30(argument80 : true) @Directive41 + field19027: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4358 @Directive20(argument58 : "stringValue19943", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19942") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19944", "stringValue19945"]) { + field19022: Scalar2! @Directive30(argument80 : true) @Directive40 + field19023: String! @Directive30(argument80 : true) @Directive41 + field19024: String! @Directive30(argument80 : true) @Directive41 + field19025: Enum953 @Directive30(argument80 : true) @Directive41 + field19026: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4359 @Directive20(argument58 : "stringValue19951", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19950") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19952", "stringValue19953"]) { + field19028: [Object4358!]! @Directive30(argument80 : true) @Directive41 + field19029: Int @Directive30(argument80 : true) @Directive41 +} + +type Object436 implements Interface7 @Directive20(argument58 : "stringValue1365", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1364") @Directive31 @Directive44(argument97 : ["stringValue1366", "stringValue1367"]) { + field102: Float + field103: String + field104: String + field105: Object10 + field106: Object13 + field2435: Int + field85: Enum4 + field86: Enum5 + field87: Object10 +} + +type Object4360 @Directive21(argument61 : "stringValue19956") @Directive22(argument62 : "stringValue19955") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue19954"]) @Directive44(argument97 : ["stringValue19957", "stringValue19958"]) { + field19030: String! @Directive30(argument80 : true) + field19031: Int @Directive30(argument80 : true) +} + +type Object4361 @Directive20(argument58 : "stringValue19960", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19959") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19961", "stringValue19962"]) { + field19032: Scalar2 @Directive30(argument80 : true) @Directive41 + field19033: Scalar2 @Directive30(argument80 : true) @Directive41 + field19034: String @Directive30(argument80 : true) @Directive41 + field19035: String @Directive30(argument80 : true) @Directive41 +} + +type Object4362 @Directive20(argument58 : "stringValue19964", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19963") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19965", "stringValue19966"]) { + field19036: Object4363 @Directive30(argument80 : true) @Directive41 +} + +type Object4363 @Directive20(argument58 : "stringValue19968", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19967") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19969", "stringValue19970"]) { + field19037: String @Directive30(argument80 : true) @Directive41 + field19038: Object403 @Directive30(argument80 : true) @Directive41 + field19039: String @Directive30(argument80 : true) @Directive41 + field19040: String @Directive30(argument80 : true) @Directive41 +} + +type Object4364 @Directive20(argument58 : "stringValue19972", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19971") @Directive31 @Directive44(argument97 : ["stringValue19973", "stringValue19974"]) { + field19041: [Object4365!] +} + +type Object4365 @Directive20(argument58 : "stringValue19976", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19975") @Directive31 @Directive44(argument97 : ["stringValue19977", "stringValue19978"]) { + field19042: Enum954 + field19043: String + field19044: String +} + +type Object4366 @Directive20(argument58 : "stringValue19987", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19986") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19988", "stringValue19989"]) { + field19046: Object4367 @Directive30(argument80 : true) @Directive41 +} + +type Object4367 @Directive20(argument58 : "stringValue19991", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19990") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19992", "stringValue19993"]) { + field19047: String! @Directive30(argument80 : true) @Directive41 + field19048: Union192! @Directive30(argument80 : true) @Directive41 +} + +type Object4368 @Directive20(argument58 : "stringValue19998", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue19997") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue19999", "stringValue20000"]) { + field19049: Enum952! @Directive30(argument80 : true) @Directive41 +} + +type Object4369 @Directive20(argument58 : "stringValue20002", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20001") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20003", "stringValue20004"]) { + field19050: Enum955! @Directive30(argument80 : true) @Directive41 +} + +type Object437 implements Interface38 @Directive22(argument62 : "stringValue1371") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1372", "stringValue1373"]) { + field2436: String @Directive30(argument80 : true) @Directive41 + field2437: Enum133 @Directive30(argument80 : true) @Directive41 + field2438: Object438 @Directive30(argument80 : true) @Directive41 + field2441: [Object439] @Directive30(argument80 : true) @Directive41 +} + +type Object4370 @Directive20(argument58 : "stringValue20010", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20009") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20011", "stringValue20012"]) { + field19051: Object4367 @Directive30(argument80 : true) @Directive41 +} + +type Object4371 @Directive20(argument58 : "stringValue20014", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20013") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20015", "stringValue20016"]) { + field19052: Object4367 @Directive30(argument80 : true) @Directive41 +} + +type Object4372 @Directive20(argument58 : "stringValue20018", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20017") @Directive31 @Directive44(argument97 : ["stringValue20019", "stringValue20020"]) { + field19053: Enum956 @Directive30(argument80 : true) + field19054: String @Directive30(argument80 : true) + field19055: String @Directive30(argument80 : true) + field19056: String @Directive30(argument80 : true) + field19057: Object4373 @Directive30(argument80 : true) + field19061: Object4373 @Directive30(argument80 : true) +} + +type Object4373 @Directive20(argument58 : "stringValue20026", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20025") @Directive31 @Directive44(argument97 : ["stringValue20027", "stringValue20028"]) { + field19058: Enum957 @Directive30(argument80 : true) + field19059: String @Directive30(argument80 : true) + field19060: String @Directive30(argument80 : true) +} + +type Object4374 @Directive20(argument58 : "stringValue20034", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20033") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20035", "stringValue20036"]) { + field19062: Enum955! @Directive30(argument80 : true) @Directive41 + field19063: Union193 @Directive30(argument80 : true) @Directive41 +} + +type Object4375 @Directive20(argument58 : "stringValue20041", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20040") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20042", "stringValue20043"]) { + field19064: [Object4376!]! @Directive30(argument80 : true) @Directive41 @deprecated + field19067: Scalar2 @Directive30(argument80 : true) @Directive41 + field19068: Object4367 @Directive30(argument80 : true) @Directive41 + field19069: [Object4377!]! @Directive30(argument80 : true) @Directive41 + field19072: String @Directive30(argument80 : true) @Directive41 + field19073: String @Directive30(argument80 : true) @Directive41 + field19074: [Object4378!] @Directive30(argument80 : true) @Directive41 +} + +type Object4376 @Directive20(argument58 : "stringValue20045", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20044") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20046", "stringValue20047"]) { + field19065: String! @Directive30(argument80 : true) @Directive41 + field19066: Union192! @Directive30(argument80 : true) @Directive41 +} + +type Object4377 @Directive20(argument58 : "stringValue20049", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20048") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20050", "stringValue20051"]) { + field19070: String! @Directive30(argument80 : true) @Directive41 + field19071: Union192! @Directive30(argument80 : true) @Directive41 +} + +type Object4378 @Directive20(argument58 : "stringValue20053", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20052") @Directive31 @Directive44(argument97 : ["stringValue20054", "stringValue20055"]) { + field19075: [Union194!]! @Directive41 +} + +type Object4379 @Directive20(argument58 : "stringValue20060", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20059") @Directive31 @Directive44(argument97 : ["stringValue20061", "stringValue20062"]) { + field19076: String! @Directive41 + field19077: Boolean @Directive41 + field19078: Boolean @Directive41 + field19079: Boolean @Directive41 +} + +type Object438 @Directive22(argument62 : "stringValue1377") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1378", "stringValue1379", "stringValue1380"]) { + field2439: String @Directive30(argument80 : true) @Directive41 + field2440: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object4380 @Directive20(argument58 : "stringValue20064", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20063") @Directive31 @Directive44(argument97 : ["stringValue20065", "stringValue20066"]) { + field19080: String! @Directive41 + field19081: String! @Directive41 + field19082: Boolean @Directive41 +} + +type Object4381 @Directive20(argument58 : "stringValue20068", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20067") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20069", "stringValue20070"]) { + field19087: Enum952! @Directive30(argument80 : true) @Directive41 + field19088: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object4382 @Directive20(argument58 : "stringValue20072", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20071") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20073", "stringValue20074"]) { + field19090: Enum955! @Directive30(argument80 : true) @Directive41 + field19091: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object4383 @Directive20(argument58 : "stringValue20078", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20075") @Directive31 @Directive44(argument97 : ["stringValue20076", "stringValue20077"]) { + field19094: Enum958! + field19095: Enum959! +} + +type Object4384 @Directive20(argument58 : "stringValue20088", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20087") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20089"]) { + field19097: String @Directive30(argument80 : true) @Directive41 + field19098: String @Directive30(argument80 : true) @Directive41 + field19099: String @Directive30(argument80 : true) @Directive41 + field19100: Boolean @Directive30(argument80 : true) @Directive41 + field19101: String @Directive30(argument80 : true) @Directive41 + field19102: String @Directive30(argument80 : true) @Directive41 + field19103: [Object4385] @Directive30(argument80 : true) @Directive41 + field19109: String @Directive30(argument80 : true) @Directive41 + field19110: Scalar2 @Directive30(argument80 : true) @Directive41 + field19111: Boolean @Directive30(argument80 : true) @Directive41 + field19112: Boolean @Directive30(argument80 : true) @Directive41 + field19113: Int @Directive30(argument80 : true) @Directive41 + field19114: Boolean @Directive30(argument80 : true) @Directive40 + field19115: Scalar2 @Directive30(argument80 : true) @Directive41 + field19116: String @Directive30(argument80 : true) @Directive41 + field19117: String @Directive30(argument80 : true) @Directive41 + field19118: String @Directive30(argument80 : true) @Directive41 +} + +type Object4385 @Directive20(argument58 : "stringValue20091", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20090") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20092"]) { + field19104: Union190 @Directive30(argument80 : true) @Directive41 + field19105: String @Directive30(argument80 : true) @Directive41 + field19106: Int @Directive30(argument80 : true) @Directive41 + field19107: String @Directive30(argument80 : true) @Directive41 + field19108: String @Directive30(argument80 : true) @Directive41 +} + +type Object4386 @Directive20(argument58 : "stringValue20098", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20097") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20099", "stringValue20100"]) { + field19121: Object4354 @Directive30(argument80 : true) @Directive39 + field19122: [Interface26!] @Directive30(argument80 : true) @Directive41 +} + +type Object4387 @Directive20(argument58 : "stringValue20106", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20105") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20107", "stringValue20108"]) { + field19124: Object4354 @Directive30(argument80 : true) @Directive39 + field19125: [Interface27!] @Directive30(argument80 : true) @Directive41 +} + +type Object4388 @Directive20(argument58 : "stringValue20114", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20113") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20115", "stringValue20116"]) { + field19127: Object4354 @Directive30(argument80 : true) @Directive39 + field19128: [Interface28!] @Directive30(argument80 : true) @Directive41 +} + +type Object4389 @Directive20(argument58 : "stringValue20122", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20121") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20123", "stringValue20124"]) { + field19130: Object4354 @Directive30(argument80 : true) @Directive39 + field19131: [Interface29!] @Directive30(argument80 : true) @Directive41 +} + +type Object439 @Directive22(argument62 : "stringValue1381") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1382", "stringValue1383"]) { + field2442: Enum134 @Directive30(argument80 : true) @Directive41 + field2443: Object440 @Directive30(argument80 : true) @Directive41 + field2448: String @Directive30(argument80 : true) @Directive41 + field2449: Object441 @Directive30(argument80 : true) @Directive41 + field2455: Object442 @Directive30(argument80 : true) @Directive41 + field2458: String @Directive30(argument80 : true) @Directive39 + field2459: Enum137 @Directive30(argument80 : true) @Directive41 + field2460: [Object444] @Directive30(argument80 : true) @Directive41 +} + +type Object4390 @Directive20(argument58 : "stringValue20130", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20129") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20131", "stringValue20132"]) { + field19133: Object4354 @Directive30(argument80 : true) @Directive39 + field19134: [Interface30!] @Directive30(argument80 : true) @Directive41 +} + +type Object4391 @Directive20(argument58 : "stringValue20138", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20137") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20139", "stringValue20140"]) { + field19136: Object4354 @Directive30(argument80 : true) @Directive39 + field19137: [Interface31!] @Directive30(argument80 : true) @Directive41 +} + +type Object4392 @Directive20(argument58 : "stringValue20147", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20146") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20148", "stringValue20149"]) { + field19139: Object4354 @Directive30(argument80 : true) @Directive39 + field19140: [Interface32!] @Directive30(argument80 : true) @Directive41 +} + +type Object4393 @Directive22(argument62 : "stringValue20166") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20167", "stringValue20168"]) { + field19142: Boolean @Directive30(argument80 : true) @Directive41 + field19143: [Object4394] @Directive30(argument80 : true) @Directive41 +} + +type Object4394 @Directive22(argument62 : "stringValue20169") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20170", "stringValue20171"]) { + field19144: String @Directive30(argument80 : true) @Directive41 + field19145: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object4395 implements Interface36 @Directive22(argument62 : "stringValue20182") @Directive30(argument85 : "stringValue20184", argument86 : "stringValue20183") @Directive44(argument97 : ["stringValue20188", "stringValue20189"]) @Directive7(argument14 : "stringValue20186", argument16 : "stringValue20187", argument17 : "stringValue20185") { + field10995: String @Directive30(argument80 : true) @Directive41 + field17445: Object4418 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20277") @Directive41 + field19147: Float @Directive30(argument80 : true) @Directive41 + field19148: Object4396 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20190") @Directive41 + field19194: Boolean @Directive30(argument80 : true) @Directive41 + field19195: Scalar3 @Directive30(argument80 : true) @Directive41 + field19196(argument812: String, argument813: Int, argument814: String, argument815: Int): Object4411 @Directive30(argument80 : true) @Directive41 @Directive5(argument7 : "stringValue20278") + field19207: Object4415 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9696: String @Directive3(argument3 : "stringValue20276") @Directive30(argument80 : true) @Directive41 +} + +type Object4396 implements Interface36 @Directive22(argument62 : "stringValue20193") @Directive30(argument85 : "stringValue20192", argument86 : "stringValue20191") @Directive44(argument97 : ["stringValue20197", "stringValue20198"]) @Directive7(argument14 : "stringValue20195", argument16 : "stringValue20196", argument17 : "stringValue20194") { + field10391: Object4399 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20214") @Directive41 + field10995: String @Directive30(argument80 : true) @Directive41 + field15936: Object4397 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20202") @Directive41 + field17445: Object4418 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20275") @Directive41 + field19149: Enum960 @Directive30(argument80 : true) @Directive41 + field19150: Float @Directive30(argument80 : true) @Directive41 + field19151: Int @Directive30(argument80 : true) @Directive41 + field19152: Enum679 @Directive30(argument80 : true) @Directive41 + field19155: Enum679 @Directive30(argument80 : true) @Directive41 + field19193: Int @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9696: String @Directive3(argument3 : "stringValue20274") @Directive30(argument80 : true) @Directive41 +} + +type Object4397 implements Interface36 @Directive22(argument62 : "stringValue20203") @Directive30(argument85 : "stringValue20205", argument86 : "stringValue20204") @Directive44(argument97 : ["stringValue20209", "stringValue20210"]) @Directive7(argument14 : "stringValue20207", argument16 : "stringValue20208", argument17 : "stringValue20206") { + field15943: String @Directive30(argument80 : true) @Directive41 + field15944: Object4398 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9831: Enum679 @Directive30(argument80 : true) @Directive41 +} + +type Object4398 @Directive22(argument62 : "stringValue20211") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20212", "stringValue20213"]) { + field19153: [Object3423!] @Directive30(argument80 : true) @Directive38 + field19154: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4399 implements Interface36 @Directive22(argument62 : "stringValue20217") @Directive30(argument85 : "stringValue20216", argument86 : "stringValue20215") @Directive44(argument97 : ["stringValue20221", "stringValue20222"]) @Directive7(argument14 : "stringValue20219", argument16 : "stringValue20220", argument17 : "stringValue20218") { + field10878: Object4400 @Directive30(argument80 : true) @Directive41 + field15943: String @Directive30(argument80 : true) @Directive41 + field16000: Object4410 @Directive30(argument80 : true) @Directive41 + field19165: String @Directive3(argument3 : "stringValue20229") @Directive30(argument80 : true) @Directive41 @deprecated + field19166: Object4402 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9025: Object4401 @Directive30(argument80 : true) @Directive41 + field9831: Enum679 @Directive30(argument80 : true) @Directive41 +} + +type Object44 @Directive21(argument61 : "stringValue239") @Directive44(argument97 : ["stringValue238"]) { + field238: String + field239: String + field240: String + field241: String + field242: String + field243: String + field244: String + field245: String + field246: String + field247: String + field248: String + field249: String + field250: String + field251: String + field252: String + field253: String + field254: String + field255: String + field256: [Object45] + field260: Scalar2 +} + +type Object440 @Directive22(argument62 : "stringValue1388") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1389", "stringValue1390"]) { + field2444: String! @Directive30(argument80 : true) @Directive41 + field2445: Enum135 @Directive30(argument80 : true) @Directive41 + field2446: Enum136 @Directive30(argument80 : true) @Directive41 + field2447: String @Directive30(argument80 : true) @Directive41 +} + +type Object4400 @Directive22(argument62 : "stringValue20223") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20224", "stringValue20225"]) { + field19156: [Enum454!] @Directive30(argument80 : true) @Directive41 + field19157: Enum677 @Directive30(argument80 : true) @Directive41 + field19158: [String!] @Directive30(argument80 : true) @Directive41 +} + +type Object4401 @Directive22(argument62 : "stringValue20226") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20227", "stringValue20228"]) { + field19159: String @Directive30(argument80 : true) @Directive41 + field19160: String @Directive30(argument80 : true) @Directive41 + field19161: String @Directive30(argument80 : true) @Directive41 + field19162: String @Directive30(argument80 : true) @Directive41 + field19163: Enum677 @Directive30(argument80 : true) @Directive41 + field19164: String @Directive30(argument80 : true) @Directive41 +} + +type Object4402 @Directive22(argument62 : "stringValue20230") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20231", "stringValue20232"]) { + field19167: String @Directive30(argument80 : true) @Directive41 + field19168: Object4403 @Directive18 @Directive30(argument80 : true) @Directive41 + field19182(argument808: String, argument809: Int, argument810: String, argument811: Int): Object4408 @Directive18 @Directive30(argument80 : true) @Directive41 + field19183: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4403 implements Interface36 @Directive22(argument62 : "stringValue20235") @Directive30(argument85 : "stringValue20234", argument86 : "stringValue20233") @Directive44(argument97 : ["stringValue20240", "stringValue20241"]) @Directive7(argument11 : "stringValue20239", argument14 : "stringValue20237", argument16 : "stringValue20238", argument17 : "stringValue20236") { + field19169: Enum961 @Directive30(argument80 : true) @Directive41 + field19170(argument804: String, argument805: Int, argument806: String, argument807: Int): Object4404 @Directive30(argument80 : true) @Directive41 @Directive5(argument7 : "stringValue20245") + field19181: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4404 implements Interface92 @Directive22(argument62 : "stringValue20246") @Directive44(argument97 : ["stringValue20247", "stringValue20248"]) { + field8384: Object753! + field8385: [Object4405] +} + +type Object4405 implements Interface93 @Directive22(argument62 : "stringValue20249") @Directive44(argument97 : ["stringValue20250", "stringValue20251"]) { + field8386: String! + field8999: Object4406 +} + +type Object4406 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20254") @Directive30(argument85 : "stringValue20253", argument86 : "stringValue20252") @Directive44(argument97 : ["stringValue20255", "stringValue20256"]) { + field19171: String @Directive30(argument80 : true) @Directive41 + field19172: Object4407 @Directive18 @Directive30(argument80 : true) @Directive41 + field19179: Int @Directive30(argument80 : true) @Directive41 + field19180: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4407 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20259") @Directive30(argument85 : "stringValue20258", argument86 : "stringValue20257") @Directive44(argument97 : ["stringValue20260", "stringValue20261"]) { + field10673: Boolean @Directive30(argument80 : true) @Directive41 + field19173: String @Directive3(argument3 : "stringValue20262") @Directive30(argument80 : true) @Directive41 + field19174: String @Directive30(argument80 : true) @Directive41 + field19175: String @Directive30(argument80 : true) @Directive41 + field19176: Boolean @Directive30(argument80 : true) @Directive41 + field19177: Boolean @Directive30(argument80 : true) @Directive41 + field19178: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4408 implements Interface92 @Directive22(argument62 : "stringValue20263") @Directive44(argument97 : ["stringValue20264", "stringValue20265"]) { + field8384: Object753! + field8385: [Object4409] +} + +type Object4409 implements Interface93 @Directive22(argument62 : "stringValue20266") @Directive44(argument97 : ["stringValue20267", "stringValue20268"]) { + field8386: String! + field8999: Object4407 +} + +type Object441 @Directive20(argument58 : "stringValue1402", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1401") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1403", "stringValue1404"]) { + field2450: String! @Directive30(argument80 : true) @Directive40 + field2451: Scalar2! @Directive30(argument80 : true) @Directive41 + field2452: Scalar2! @Directive30(argument80 : true) @Directive41 + field2453: Scalar2! @Directive30(argument80 : true) @Directive41 + field2454: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object4410 @Directive22(argument62 : "stringValue20269") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20270", "stringValue20271"]) { + field19184: Float @Directive3(argument3 : "stringValue20272") @Directive30(argument80 : true) @Directive41 @deprecated + field19185: String @Directive30(argument80 : true) @Directive41 + field19186: Int @Directive3(argument3 : "stringValue20273") @Directive30(argument80 : true) @Directive41 @deprecated + field19187: Int @Directive30(argument80 : true) @Directive41 + field19188: Float @Directive30(argument80 : true) @Directive41 + field19189: Int @Directive30(argument80 : true) @Directive41 + field19190: Int @Directive30(argument80 : true) @Directive41 + field19191: Int @Directive30(argument80 : true) @Directive41 + field19192: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4411 implements Interface92 @Directive22(argument62 : "stringValue20279") @Directive44(argument97 : ["stringValue20280", "stringValue20281"]) { + field8384: Object753! + field8385: [Object4412] +} + +type Object4412 implements Interface93 @Directive22(argument62 : "stringValue20282") @Directive44(argument97 : ["stringValue20283", "stringValue20284"]) { + field8386: String! + field8999: Object4413 +} + +type Object4413 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20285") @Directive30(argument85 : "stringValue20287", argument86 : "stringValue20286") @Directive44(argument97 : ["stringValue20288", "stringValue20289"]) { + field19197: Object4395 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20290") @Directive41 + field19198: String @Directive3(argument3 : "stringValue20291") @Directive30(argument80 : true) @Directive41 + field19199: String @Directive3(argument3 : "stringValue20292") @Directive30(argument80 : true) @Directive41 + field19200: Object3459 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20293") @Directive41 + field19201: Enum962 @Directive3(argument3 : "stringValue20295") @Directive30(argument80 : true) @Directive41 + field19202: Object4414 @Directive3(argument3 : "stringValue20299") @Directive30(argument80 : true) @Directive41 + field19205: Object4414 @Directive3(argument3 : "stringValue20306") @Directive30(argument80 : true) @Directive41 + field19206: Enum964 @Directive3(argument3 : "stringValue20307") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8993: Object4016 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20294") @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4414 @Directive22(argument62 : "stringValue20300") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20301", "stringValue20302"]) { + field19203: [Enum963] @Directive30(argument80 : true) @Directive41 + field19204: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object4415 @Directive22(argument62 : "stringValue20311") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20312", "stringValue20313"]) { + field19208: Int @Directive30(argument80 : true) @Directive41 + field19209: Scalar3 @Directive30(argument80 : true) @Directive41 + field19210: Int @Directive30(argument80 : true) @Directive41 + field19211: Int @Directive30(argument80 : true) @Directive41 + field19212: Int @Directive30(argument80 : true) @Directive41 + field19213: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4416 @Directive22(argument62 : "stringValue20346") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20347", "stringValue20348"]) { + field19219: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object4417 @Directive22(argument62 : "stringValue20441") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20442", "stringValue20443"]) { + field19221: Union195 @Directive30(argument80 : true) @Directive41 + field19316: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object4418 implements Interface36 @Directive22(argument62 : "stringValue20449") @Directive30(argument85 : "stringValue20448", argument86 : "stringValue20447") @Directive44(argument97 : ["stringValue20453", "stringValue20454"]) @Directive7(argument14 : "stringValue20451", argument16 : "stringValue20452", argument17 : "stringValue20450") { + field10391: Object4433 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20517") @Directive41 + field10854: Object4419 @Directive3(argument3 : "stringValue20455") @Directive30(argument80 : true) @Directive39 + field10995: String @Directive30(argument80 : true) @Directive41 + field15936: Object4420 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20459") @Directive41 + field19149: Enum960 @Directive30(argument80 : true) @Directive41 + field19152: Enum679 @Directive30(argument80 : true) @Directive41 + field19155: Enum679 @Directive30(argument80 : true) @Directive41 + field19313: Enum971 @Directive30(argument80 : true) @Directive41 + field19314(argument830: String, argument831: Int, argument832: String, argument833: Int): Object4442 @Directive30(argument80 : true) @Directive41 + field19315(argument834: String, argument835: Int, argument836: String, argument837: Int): Object4444 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9696: String @Directive3(argument3 : "stringValue20580") @Directive30(argument80 : true) @Directive41 +} + +type Object4419 @Directive22(argument62 : "stringValue20456") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20457", "stringValue20458"]) { + field19222: String @Directive30(argument80 : true) @Directive39 + field19223: String @Directive30(argument80 : true) @Directive39 + field19224: Float @Directive30(argument80 : true) @Directive39 + field19225: Float @Directive30(argument80 : true) @Directive39 + field19226: String @Directive30(argument80 : true) @Directive39 + field19227: String @Directive30(argument80 : true) @Directive39 @deprecated + field19228: String @Directive30(argument80 : true) @Directive39 + field19229: String @Directive30(argument80 : true) @Directive39 @deprecated + field19230: String @Directive30(argument80 : true) @Directive39 +} + +type Object442 @Directive22(argument62 : "stringValue1405") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1406", "stringValue1407"]) { + field2456: Object443 @Directive30(argument80 : true) @Directive41 +} + +type Object4420 implements Interface36 @Directive22(argument62 : "stringValue20462") @Directive30(argument85 : "stringValue20461", argument86 : "stringValue20460") @Directive44(argument97 : ["stringValue20467", "stringValue20468"]) @Directive7(argument14 : "stringValue20464", argument15 : "stringValue20466", argument16 : "stringValue20465", argument17 : "stringValue20463") { + field10275: Object4421 @Directive30(argument80 : true) @Directive41 + field15943: String @Directive30(argument80 : true) @Directive41 + field15944: Object4426 @Directive30(argument80 : true) @Directive41 + field15949: Object3463 @Directive30(argument80 : true) @Directive41 + field19237: Object4422 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9831: Enum679 @Directive30(argument80 : true) @Directive41 +} + +type Object4421 @Directive22(argument62 : "stringValue20469") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20470", "stringValue20471"]) { + field19231: Int @Directive30(argument80 : true) @Directive41 + field19232: Int @Directive30(argument80 : true) @Directive41 + field19233: Int @Directive30(argument80 : true) @Directive41 + field19234: Int @Directive30(argument80 : true) @Directive41 + field19235: Int @Directive30(argument80 : true) @Directive41 + field19236: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4422 @Directive22(argument62 : "stringValue20472") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20473", "stringValue20474"]) { + field19238: [Object4423!] @Directive30(argument80 : true) @Directive41 @deprecated + field19241(argument822: String, argument823: Int, argument824: String, argument825: Int): Object4424 @Directive18 @Directive30(argument80 : true) @Directive41 + field19242: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4423 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20477") @Directive30(argument85 : "stringValue20476", argument86 : "stringValue20475") @Directive44(argument97 : ["stringValue20478", "stringValue20479"]) { + field12392: Enum683 @Directive30(argument80 : true) @Directive41 + field19239: String @Directive30(argument80 : true) @Directive41 + field19240: Object3459 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue20480") @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4424 implements Interface92 @Directive22(argument62 : "stringValue20481") @Directive44(argument97 : ["stringValue20482", "stringValue20483"]) { + field8384: Object753! + field8385: [Object4425] +} + +type Object4425 implements Interface93 @Directive22(argument62 : "stringValue20484") @Directive44(argument97 : ["stringValue20485", "stringValue20486"]) { + field8386: String! + field8999: Object4423 +} + +type Object4426 @Directive22(argument62 : "stringValue20487") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20488", "stringValue20489"]) { + field19243: [Object3423!] @Directive30(argument80 : true) @Directive38 + field19244: Float @Directive30(argument80 : true) @Directive38 + field19245: [Object4427!] @Directive30(argument80 : true) @Directive38 + field19253: Object4428 @Directive30(argument80 : true) @Directive41 + field19267: Float @Directive30(argument80 : true) @Directive38 + field19268: Enum677 @Directive30(argument80 : true) @Directive41 + field19269: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4427 @Directive22(argument62 : "stringValue20490") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20491", "stringValue20492"]) { + field19246: Float @Directive30(argument80 : true) @Directive38 + field19247: String @Directive30(argument80 : true) @Directive38 + field19248: Boolean @Directive30(argument80 : true) @Directive38 + field19249: String @Directive30(argument80 : true) @Directive38 + field19250: Int @Directive30(argument80 : true) @Directive38 + field19251: String @Directive30(argument80 : true) @Directive38 + field19252: String @Directive30(argument80 : true) @Directive38 +} + +type Object4428 @Directive22(argument62 : "stringValue20493") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20494", "stringValue20495"]) { + field19254: Object4429 @Directive30(argument80 : true) @Directive41 + field19262: Boolean @Directive30(argument80 : true) @Directive41 + field19263: Object4432 @Directive30(argument80 : true) @Directive41 +} + +type Object4429 @Directive22(argument62 : "stringValue20496") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20497", "stringValue20498"]) { + field19255: Object4430 @Directive30(argument80 : true) @Directive41 + field19259: Object4431 @Directive30(argument80 : true) @Directive41 +} + +type Object443 @Directive22(argument62 : "stringValue1408") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1409", "stringValue1410"]) { + field2457: Int! @Directive30(argument80 : true) @Directive41 +} + +type Object4430 @Directive22(argument62 : "stringValue20499") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20500", "stringValue20501"]) { + field19256: Scalar2 @Directive30(argument80 : true) @Directive41 + field19257: Enum966 @Directive30(argument80 : true) @Directive41 + field19258: Float @Directive30(argument80 : true) @Directive41 +} + +type Object4431 @Directive22(argument62 : "stringValue20505") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20506", "stringValue20507"]) { + field19260: Scalar2 @Directive30(argument80 : true) @Directive41 + field19261: Enum967 @Directive30(argument80 : true) @Directive41 +} + +type Object4432 @Directive22(argument62 : "stringValue20511") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20512", "stringValue20513"]) { + field19264: Enum968 @Directive30(argument80 : true) @Directive41 + field19265: String @Directive30(argument80 : true) @Directive41 + field19266: String @Directive30(argument80 : true) @Directive41 +} + +type Object4433 implements Interface36 @Directive22(argument62 : "stringValue20520") @Directive30(argument85 : "stringValue20519", argument86 : "stringValue20518") @Directive44(argument97 : ["stringValue20525", "stringValue20526"]) @Directive7(argument14 : "stringValue20522", argument15 : "stringValue20524", argument16 : "stringValue20523", argument17 : "stringValue20521") { + field10623: Object4437 @Directive30(argument80 : true) @Directive41 + field10878: Object4434 @Directive30(argument80 : true) @Directive41 + field15943: String @Directive30(argument80 : true) @Directive41 + field15975: Object4438 @Directive30(argument80 : true) @Directive41 + field15982: Object4439 @Directive30(argument80 : true) @Directive41 + field19166: Object4440 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9025: Object4435 @Directive30(argument80 : true) @Directive41 + field9831: Enum679 @Directive30(argument80 : true) @Directive41 +} + +type Object4434 @Directive22(argument62 : "stringValue20527") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20528", "stringValue20529"]) { + field19270: [Enum454!] @Directive30(argument80 : true) @Directive41 + field19271: Enum677 @Directive30(argument80 : true) @Directive41 + field19272: [String!] @Directive30(argument80 : true) @Directive41 +} + +type Object4435 @Directive22(argument62 : "stringValue20530") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20531", "stringValue20532"]) { + field19273: String @Directive30(argument80 : true) @Directive41 + field19274: Object4419 @Directive30(argument80 : true) @Directive41 + field19275: Object4436 @Directive30(argument80 : true) @Directive41 + field19278: String @Directive30(argument80 : true) @Directive41 + field19279: String @Directive30(argument80 : true) @Directive41 + field19280: String @Directive30(argument80 : true) @Directive41 + field19281: String @Directive30(argument80 : true) @Directive41 + field19282: String @Directive30(argument80 : true) @Directive41 + field19283: String @Directive30(argument80 : true) @Directive41 + field19284: Enum969 @Directive30(argument80 : true) @Directive41 + field19285: Enum970 @Directive30(argument80 : true) @Directive41 + field19286: String @Directive30(argument80 : true) @Directive41 + field19287: Enum677 @Directive30(argument80 : true) @Directive41 + field19288: String @Directive30(argument80 : true) @Directive41 + field19289: String @Directive30(argument80 : true) @Directive41 +} + +type Object4436 @Directive22(argument62 : "stringValue20533") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20534", "stringValue20535"]) { + field19276: Enum680 @Directive30(argument80 : true) @Directive41 + field19277: String @Directive30(argument80 : true) @Directive41 +} + +type Object4437 @Directive22(argument62 : "stringValue20542") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20543", "stringValue20544"]) { + field19290: String @Directive3(argument3 : "stringValue20545") @Directive30(argument80 : true) @Directive38 @deprecated + field19291: Enum677 @Directive30(argument80 : true) @Directive41 + field19292: String @Directive30(argument80 : true) @Directive41 + field19293: String @Directive30(argument80 : true) @Directive38 + field19294: String @Directive3(argument3 : "stringValue20546") @Directive30(argument80 : true) @Directive41 @deprecated + field19295: String @Directive30(argument80 : true) @Directive41 +} + +type Object4438 @Directive22(argument62 : "stringValue20547") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20548", "stringValue20549"]) { + field19296: Boolean @Directive30(argument80 : true) @Directive41 + field19297: Boolean @Directive30(argument80 : true) @Directive41 + field19298: Boolean @Directive30(argument80 : true) @Directive41 + field19299: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4439 @Directive22(argument62 : "stringValue20550") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20551", "stringValue20552"]) { + field19300: String @Directive30(argument80 : true) @Directive41 + field19301: Boolean @Directive30(argument80 : true) @Directive41 + field19302: Boolean @Directive30(argument80 : true) @Directive41 + field19303: Boolean @Directive30(argument80 : true) @Directive41 + field19304: Boolean @Directive30(argument80 : true) @Directive41 + field19305: String @Directive30(argument80 : true) @Directive41 + field19306: Boolean @Directive30(argument80 : true) @Directive41 + field19307: [Object3471!] @Directive30(argument80 : true) @Directive41 + field19308: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object444 @Directive22(argument62 : "stringValue1416") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1417", "stringValue1418"]) { + field2461: Enum138 @Directive30(argument80 : true) @Directive41 + field2462: Object445 @Directive30(argument80 : true) @Directive41 +} + +type Object4440 @Directive22(argument62 : "stringValue20553") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20554", "stringValue20555"]) { + field19309: String @Directive30(argument80 : true) @Directive41 + field19310: Object4441 @Directive18 @Directive30(argument80 : true) @Directive41 + field19311(argument826: String, argument827: Int, argument828: String, argument829: Int): Object4408 @Directive18 @Directive30(argument80 : true) @Directive41 + field19312: Enum677 @Directive30(argument80 : true) @Directive41 +} + +type Object4441 implements Interface36 @Directive22(argument62 : "stringValue20558") @Directive30(argument85 : "stringValue20557", argument86 : "stringValue20556") @Directive44(argument97 : ["stringValue20563", "stringValue20564"]) @Directive7(argument11 : "stringValue20562", argument14 : "stringValue20560", argument16 : "stringValue20561", argument17 : "stringValue20559") { + field19169: Enum961 @Directive30(argument80 : true) @Directive41 + field19170(argument804: String, argument805: Int, argument806: String, argument807: Int): Object4404 @Directive30(argument80 : true) @Directive41 @Directive5(argument7 : "stringValue20565") + field19181: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4442 implements Interface92 @Directive22(argument62 : "stringValue20569") @Directive44(argument97 : ["stringValue20575", "stringValue20576"]) @Directive8(argument21 : "stringValue20571", argument23 : "stringValue20574", argument24 : "stringValue20570", argument25 : "stringValue20572", argument27 : "stringValue20573") { + field8384: Object753! + field8385: [Object4443] +} + +type Object4443 implements Interface93 @Directive22(argument62 : "stringValue20577") @Directive44(argument97 : ["stringValue20578", "stringValue20579"]) { + field8386: String! + field8999: Object4396 +} + +type Object4444 implements Interface92 @Directive22(argument62 : "stringValue20581") @Directive44(argument97 : ["stringValue20587", "stringValue20588"]) @Directive8(argument21 : "stringValue20583", argument23 : "stringValue20586", argument24 : "stringValue20582", argument25 : "stringValue20584", argument27 : "stringValue20585") { + field8384: Object753! + field8385: [Object4445] +} + +type Object4445 implements Interface93 @Directive22(argument62 : "stringValue20589") @Directive44(argument97 : ["stringValue20590", "stringValue20591"]) { + field8386: String! + field8999: Object4395 +} + +type Object4446 @Directive22(argument62 : "stringValue20740") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20741", "stringValue20742"]) { + field19328: Union195 @Directive30(argument80 : true) @Directive41 + field19329: String! @Directive30(argument80 : true) @Directive41 + field19330: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object4447 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20760") @Directive30(argument83 : ["stringValue20761"]) @Directive44(argument97 : ["stringValue20762", "stringValue20763", "stringValue20764"]) @Directive7(argument13 : "stringValue20758", argument14 : "stringValue20757", argument16 : "stringValue20759", argument17 : "stringValue20756", argument18 : false) { + field19332: String @Directive3(argument3 : "stringValue20767") @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20768") + field19333: Scalar2 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20769") + field19334: Enum973 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20770") + field2312: ID! @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20765") + field9087: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20766") +} + +type Object4448 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20794") @Directive30(argument83 : ["stringValue20795"]) @Directive44(argument97 : ["stringValue20796", "stringValue20797", "stringValue20798"]) @Directive7(argument13 : "stringValue20792", argument14 : "stringValue20791", argument16 : "stringValue20793", argument17 : "stringValue20790", argument18 : false) { + field10387: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20850") + field19337: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20801") + field19338: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20802") + field19339: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20803") + field19340: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20804") + field19341: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20805") + field19342: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20806") + field19343: Scalar2 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20807") + field19344: [Object4449] @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20808") + field19352: [Object4449] @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20848") + field19353: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20851") + field19354: Enum974 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20852") + field19355: Enum135 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20853") + field2312: ID! @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20799") + field8994: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20800") + field9087: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20849") +} + +type Object4449 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue20814") @Directive30(argument83 : ["stringValue20813"]) @Directive44(argument97 : ["stringValue20815", "stringValue20816", "stringValue20817"]) @Directive7(argument13 : "stringValue20811", argument14 : "stringValue20810", argument16 : "stringValue20812", argument17 : "stringValue20809", argument18 : false) { + field10387: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20832") + field19337: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20820") + field19338: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20821") + field19345: Object4450 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20822") + field19350: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20833") + field19351(argument852: String, argument853: Int, argument854: String, argument855: Int): Object4451 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20834") + field2312: ID! @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20818") + field8994: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20819") + field9087: Scalar4 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20831") +} + +type Object445 @Directive22(argument62 : "stringValue1423") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1424", "stringValue1425"]) { + field2463: Enum139! @Directive30(argument80 : true) @Directive41 + field2464: Object446 @Directive30(argument80 : true) @Directive41 + field2467: Object446! @Directive30(argument80 : true) @Directive41 + field2468: Enum140! @Directive30(argument80 : true) @Directive41 + field2469: String @Directive30(argument80 : true) @Directive41 +} + +type Object4450 @Directive22(argument62 : "stringValue20823") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20824", "stringValue20825", "stringValue20826"]) { + field19346: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20827") + field19347: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20828") + field19348: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20829") + field19349: [String] @Directive30(argument80 : true) @Directive37(argument95 : "stringValue20830") +} + +type Object4451 implements Interface92 @Directive22(argument62 : "stringValue20835") @Directive44(argument97 : ["stringValue20841", "stringValue20842", "stringValue20843"]) @Directive8(argument21 : "stringValue20837", argument23 : "stringValue20839", argument24 : "stringValue20836", argument25 : "stringValue20838", argument27 : "stringValue20840") { + field8384: Object753! + field8385: [Object4452] +} + +type Object4452 implements Interface93 @Directive22(argument62 : "stringValue20844") @Directive44(argument97 : ["stringValue20845", "stringValue20846", "stringValue20847"]) { + field8386: String! + field8999: Object4447 +} + +type Object4453 @Directive22(argument62 : "stringValue20918") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20919", "stringValue20920"]) { + field19362: Boolean! @Directive30(argument80 : true) @Directive41 +} + +type Object4454 @Directive22(argument62 : "stringValue20936") @Directive31 @Directive44(argument97 : ["stringValue20937", "stringValue20938"]) { + field19365: [Object2360] +} + +type Object4455 @Directive22(argument62 : "stringValue20957") @Directive30(argument79 : "stringValue20958") @Directive44(argument97 : ["stringValue20959", "stringValue20960"]) { + field19369: Boolean! @Directive30(argument80 : true) @Directive41 + field19370: Object3808 @Directive30(argument80 : true) @Directive39 +} + +type Object4456 @Directive22(argument62 : "stringValue20971") @Directive30(argument79 : "stringValue20972") @Directive44(argument97 : ["stringValue20973", "stringValue20974"]) { + field19372: Boolean! @Directive30(argument80 : true) @Directive41 + field19373: Object3808 @Directive30(argument80 : true) @Directive39 +} + +type Object4457 @Directive22(argument62 : "stringValue20979") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20980", "stringValue20981"]) { + field19375: Boolean! @Directive30(argument80 : true) @Directive41 + field19376: String @Directive30(argument80 : true) @Directive39 +} + +type Object4458 @Directive22(argument62 : "stringValue20990") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue20991", "stringValue20992"]) { + field19378: ID! @Directive30(argument80 : true) @Directive39 + field19379: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4459 @Directive22(argument62 : "stringValue21017") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21018", "stringValue21019"]) { + field19383: ID @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21020") + field19384: Object2258 @Directive30(argument80 : true) @Directive38 + field19385: Object4460 @Directive30(argument80 : true) @Directive41 +} + +type Object446 @Directive22(argument62 : "stringValue1430") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1431", "stringValue1432"]) { + field2465: String @Directive30(argument80 : true) @Directive41 + field2466: String! @Directive30(argument80 : true) @Directive41 +} + +type Object4460 @Directive22(argument62 : "stringValue21021") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21022", "stringValue21023"]) { + field19386: [String] @Directive30(argument80 : true) @Directive41 + field19387: [Object4461] @Directive30(argument80 : true) @Directive41 +} + +type Object4461 @Directive22(argument62 : "stringValue21024") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21025", "stringValue21026"]) { + field19388: String @Directive30(argument80 : true) @Directive41 + field19389: Enum976! @Directive30(argument80 : true) @Directive41 + field19390: Object4462 @Directive30(argument80 : true) @Directive41 + field19394: Object4463 @Directive30(argument80 : true) @Directive41 +} + +type Object4462 @Directive22(argument62 : "stringValue21030") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21031", "stringValue21032"]) { + field19391: String @Directive30(argument80 : true) @Directive41 + field19392: String @Directive30(argument80 : true) @Directive41 + field19393: Enum977 @Directive30(argument80 : true) @Directive41 +} + +type Object4463 @Directive22(argument62 : "stringValue21036") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21037", "stringValue21038"]) { + field19395: String @Directive30(argument80 : true) @Directive41 + field19396: String @Directive30(argument80 : true) @Directive41 + field19397: String @Directive30(argument80 : true) @Directive41 +} + +type Object4464 @Directive22(argument62 : "stringValue21044") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21045", "stringValue21046"]) { + field19399: ID @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21047") + field19400: Object2258 @Directive30(argument80 : true) @Directive38 + field19401: Object4460 @Directive30(argument80 : true) @Directive41 + field19402: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4465 @Directive22(argument62 : "stringValue21056") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21057", "stringValue21058"]) { + field19404: ID @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21059") + field19405: Object2274 @Directive30(argument80 : true) @Directive38 + field19406: Object4460 @Directive30(argument80 : true) @Directive41 + field19407: Boolean! @Directive30(argument80 : true) @Directive41 +} + +type Object4466 @Directive22(argument62 : "stringValue21061") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21062", "stringValue21063"]) { + field19409: Object4467 @Directive30(argument80 : true) @Directive40 + field19422: Union197 @Directive30(argument80 : true) @Directive40 + field19445: Boolean @Directive30(argument80 : true) @Directive41 + field19446: String @Directive30(argument80 : true) @Directive40 +} + +type Object4467 @Directive22(argument62 : "stringValue21064") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21065", "stringValue21066"]) { + field19410: String! @Directive30(argument80 : true) @Directive40 + field19411: Scalar2! @Directive30(argument80 : true) @Directive41 @deprecated + field19412: Scalar3 @Directive30(argument80 : true) @Directive40 + field19413: Scalar3 @Directive30(argument80 : true) @Directive40 + field19414: Object4468 @Directive30(argument80 : true) @Directive40 + field19418: Object4469 @Directive30(argument80 : true) @Directive40 + field19421: Scalar2! @Directive30(argument80 : true) @Directive41 +} + +type Object4468 @Directive20(argument58 : "stringValue21068", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue21067") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21069", "stringValue21070"]) { + field19415: Int @Directive30(argument80 : true) @Directive40 + field19416: Int @Directive30(argument80 : true) @Directive40 + field19417: Int @Directive30(argument80 : true) @Directive40 +} + +type Object4469 @Directive22(argument62 : "stringValue21071") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21072", "stringValue21073"]) { + field19419: Scalar2 @Directive30(argument80 : true) @Directive40 + field19420: Scalar2 @Directive30(argument80 : true) @Directive40 +} + +type Object447 @Directive22(argument62 : "stringValue1437") @Directive31 @Directive44(argument97 : ["stringValue1438", "stringValue1439"]) { + field2470: Object448 + field2503: [Object448] + field2504: [Object452] + field2505: Object448 +} + +type Object4470 @Directive22(argument62 : "stringValue21077") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21078", "stringValue21079"]) { + field19423: Boolean @Directive30(argument80 : true) @Directive39 + field19424: Object4471 @Directive30(argument80 : true) @Directive39 + field19430: Object4471 @Directive30(argument80 : true) @Directive39 + field19431: [Object4472] @Directive30(argument80 : true) @Directive39 + field19437: Object4472 @Directive30(argument80 : true) @Directive39 + field19438: Object4471 @Directive30(argument80 : true) @Directive39 +} + +type Object4471 @Directive42(argument96 : ["stringValue21080", "stringValue21081", "stringValue21082"]) @Directive44(argument97 : ["stringValue21083"]) { + field19425: Float + field19426: Scalar2 + field19427: String + field19428: Boolean + field19429: String +} + +type Object4472 @Directive22(argument62 : "stringValue21084") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21085", "stringValue21086"]) { + field19432: Object4471 @Directive30(argument80 : true) @Directive39 + field19433: Boolean @Directive30(argument80 : true) @Directive39 + field19434: [Object4472] @Directive30(argument80 : true) @Directive39 + field19435: Enum978 @Directive30(argument80 : true) @Directive39 + field19436: Scalar4 @Directive30(argument80 : true) @Directive39 +} + +type Object4473 @Directive22(argument62 : "stringValue21090") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21091", "stringValue21092"]) { + field19439: Object4471 @Directive30(argument80 : true) @Directive39 + field19440: Object4471 @Directive30(argument80 : true) @Directive39 + field19441: Object4471 @Directive30(argument80 : true) @Directive39 + field19442: Object4471 @Directive30(argument80 : true) @Directive39 + field19443: Object4472 @Directive30(argument80 : true) @Directive39 + field19444: Object4471 @Directive30(argument80 : true) @Directive39 +} + +type Object4474 @Directive22(argument62 : "stringValue21104") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21105", "stringValue21106"]) { + field19450: Boolean @Directive30(argument80 : true) @Directive41 + field19451: String @Directive30(argument80 : true) @Directive41 +} + +type Object4475 implements Interface36 @Directive22(argument62 : "stringValue21127") @Directive30(argument82 : true) @Directive44(argument97 : ["stringValue21128", "stringValue21129", "stringValue21130"]) @Directive7(argument12 : "stringValue21134", argument13 : "stringValue21133", argument14 : "stringValue21132", argument17 : "stringValue21131", argument18 : false) { + field19455: [Object4476!] @Directive3(argument3 : "stringValue21139") @Directive30(argument80 : true) @Directive41 + field19461: Object4478 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9831: Enum980 @Directive30(argument80 : true) @Directive41 +} + +type Object4476 @Directive22(argument62 : "stringValue21140") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21141", "stringValue21142", "stringValue21143"]) { + field19456: ID! @Directive30(argument80 : true) @Directive41 + field19457: String! @Directive30(argument80 : true) @Directive41 + field19458: [Object4477] @Directive30(argument80 : true) @Directive41 +} + +type Object4477 @Directive22(argument62 : "stringValue21144") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21145", "stringValue21146", "stringValue21147"]) { + field19459: Enum981 @Directive30(argument80 : true) @Directive41 + field19460: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4478 implements Interface92 @Directive22(argument62 : "stringValue21157") @Directive44(argument97 : ["stringValue21158", "stringValue21159", "stringValue21160"]) @Directive8(argument21 : "stringValue21153", argument23 : "stringValue21155", argument24 : "stringValue21152", argument25 : "stringValue21154", argument27 : "stringValue21156") { + field8384: Object753! + field8385: [Object4479] +} + +type Object4479 implements Interface93 @Directive22(argument62 : "stringValue21161") @Directive44(argument97 : ["stringValue21162", "stringValue21163", "stringValue21164"]) { + field8386: String! + field8999: Object4480 +} + +type Object448 @Directive22(argument62 : "stringValue1440") @Directive31 @Directive44(argument97 : ["stringValue1441", "stringValue1442"]) { + field2471: Object449 + field2501: Enum10 + field2502: Boolean +} + +type Object4480 implements Interface36 @Directive22(argument62 : "stringValue21165") @Directive30(argument82 : true) @Directive44(argument97 : ["stringValue21166", "stringValue21167", "stringValue21168"]) @Directive7(argument12 : "stringValue21172", argument13 : "stringValue21171", argument14 : "stringValue21170", argument17 : "stringValue21169", argument18 : false) { + field19462: [Object4481] @Directive3(argument3 : "stringValue21174") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field8994: String! @Directive3(argument3 : "stringValue21173") @Directive30(argument80 : true) @Directive41 +} + +type Object4481 @Directive22(argument62 : "stringValue21175") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21176", "stringValue21177", "stringValue21178"]) { + field19463: String @Directive30(argument80 : true) @Directive41 + field19464: Enum981 @Directive30(argument80 : true) @Directive41 + field19465: Int @Directive30(argument80 : true) @Directive41 + field19466: Int @Directive30(argument80 : true) @Directive41 + field19467: [Object4482] @Directive30(argument80 : true) @Directive41 +} + +type Object4482 @Directive22(argument62 : "stringValue21179") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21180", "stringValue21181", "stringValue21182"]) { + field19468: String @Directive30(argument80 : true) @Directive41 + field19469: String @Directive30(argument80 : true) @Directive41 +} + +type Object4483 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue21228") @Directive30(argument83 : ["stringValue21229", "stringValue21230", "stringValue21231", "stringValue21232"]) @Directive44(argument97 : ["stringValue21233", "stringValue21234"]) { + field10398: Enum983 @Directive30(argument80 : true) @Directive41 + field19475: Scalar2 @Directive30(argument80 : true) @Directive41 + field19476: [String!] @Directive30(argument80 : true) @Directive41 + field19477: Scalar2 @Directive30(argument80 : true) @Directive41 + field19478: Scalar2 @Directive30(argument80 : true) @Directive41 + field19479: [Scalar2!] @Directive30(argument80 : true) @Directive41 + field19480: [String!] @Directive30(argument80 : true) @Directive41 + field19481: Scalar4 @Directive3(argument3 : "stringValue21235") @Directive30(argument80 : true) @Directive41 + field19482: Enum982 @Directive30(argument80 : true) @Directive41 + field19483: Object4484 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21244") @Directive41 + field19489: Object4487 @Directive18 @Directive30(argument80 : true) @Directive41 + field19501: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21355") @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4484 implements Interface36 @Directive22(argument62 : "stringValue21250") @Directive30(argument83 : ["stringValue21251", "stringValue21252", "stringValue21253", "stringValue21254"]) @Directive44(argument97 : ["stringValue21255", "stringValue21256"]) @Directive7(argument12 : "stringValue21249", argument13 : "stringValue21247", argument14 : "stringValue21246", argument16 : "stringValue21248", argument17 : "stringValue21245") { + field10391(argument889: InputObject247, argument890: InputObject247, argument891: Boolean, argument892: Int, argument893: Int, argument894: InputObject248, argument895: InputObject247): Object4488 @Directive18 @Directive30(argument80 : true) @Directive41 + field19475: Int @Directive30(argument80 : true) @Directive41 + field19483: String @Directive30(argument80 : true) @Directive41 + field19484: Enum984 @Directive30(argument80 : true) @Directive41 + field19485: Enum985 @Directive30(argument80 : true) @Directive41 + field19486: Int @Directive30(argument80 : true) @Directive41 + field19487: Boolean @Directive30(argument80 : true) @Directive41 + field19488(argument887: Int, argument888: Int): Object4485 @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4485 implements Interface113 @Directive22(argument62 : "stringValue21265") @Directive30(argument83 : ["stringValue21266", "stringValue21267", "stringValue21268", "stringValue21269"]) @Directive44(argument97 : ["stringValue21270", "stringValue21271"]) { + field12630: [Object4486] @Directive30(argument80 : true) @Directive41 + field12633: Object4493! @Directive30(argument80 : true) @Directive41 +} + +type Object4486 implements Interface114 @Directive22(argument62 : "stringValue21272") @Directive30(argument83 : ["stringValue21273", "stringValue21274", "stringValue21275", "stringValue21276"]) @Directive44(argument97 : ["stringValue21277", "stringValue21278"]) { + field12631: String! @Directive30(argument80 : true) @Directive41 + field12632: Object4487 @Directive30(argument80 : true) @Directive41 +} + +type Object4487 implements Interface36 @Directive22(argument62 : "stringValue21284") @Directive30(argument83 : ["stringValue21285", "stringValue21286", "stringValue21287", "stringValue21288"]) @Directive44(argument97 : ["stringValue21289", "stringValue21290"]) @Directive7(argument12 : "stringValue21283", argument13 : "stringValue21281", argument14 : "stringValue21280", argument16 : "stringValue21282", argument17 : "stringValue21279") { + field10391(argument889: InputObject247, argument890: InputObject247, argument891: Boolean, argument892: Int, argument893: Int, argument894: InputObject248): Object4488 @Directive18 @Directive30(argument80 : true) @Directive41 + field19475: Int @Directive30(argument80 : true) @Directive41 + field19476: [String] @Directive30(argument80 : true) @Directive41 + field19483: Object4484 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21291") @Directive41 + field19484: Enum984 @Directive30(argument80 : true) @Directive41 + field19485: Enum985 @Directive30(argument80 : true) @Directive41 + field19489: String @Directive30(argument80 : true) @Directive41 + field19490: Boolean @Directive30(argument80 : true) @Directive41 + field19491: String @Directive3(argument3 : "stringValue21292") @Directive30(argument80 : true) @Directive41 + field19492: String @Directive30(argument80 : true) @Directive41 + field19493: Enum986 @Directive30(argument80 : true) @Directive41 + field19494: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21297") @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9025: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9144: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4488 implements Interface113 @Directive22(argument62 : "stringValue21308") @Directive30(argument83 : ["stringValue21309", "stringValue21310", "stringValue21311", "stringValue21312"]) @Directive44(argument97 : ["stringValue21313", "stringValue21314"]) { + field12630: [Object4489] @Directive30(argument80 : true) @Directive41 + field12633: Object4493! @Directive30(argument80 : true) @Directive41 +} + +type Object4489 implements Interface114 @Directive22(argument62 : "stringValue21315") @Directive30(argument83 : ["stringValue21316", "stringValue21317", "stringValue21318", "stringValue21319"]) @Directive44(argument97 : ["stringValue21320", "stringValue21321"]) { + field12631: String! @Directive30(argument80 : true) @Directive41 + field12632: Object4490 @Directive30(argument80 : true) @Directive41 +} + +type Object449 @Directive20(argument58 : "stringValue1444", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1443") @Directive31 @Directive44(argument97 : ["stringValue1445", "stringValue1446"]) { + field2472: String + field2473: Object450 + field2485: Object452 + field2498: Int + field2499: Boolean + field2500: Int +} + +type Object4490 implements Interface36 @Directive22(argument62 : "stringValue21327") @Directive30(argument83 : ["stringValue21328", "stringValue21329", "stringValue21330", "stringValue21331"]) @Directive44(argument97 : ["stringValue21332", "stringValue21333"]) @Directive7(argument12 : "stringValue21325", argument13 : "stringValue21324", argument14 : "stringValue21323", argument16 : "stringValue21326", argument17 : "stringValue21322") { + field10398: Object4491 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21335") @Directive41 + field10492: Boolean @Directive30(argument80 : true) @Directive41 + field11028: String @Directive30(argument80 : true) @Directive41 + field12141: String @Directive30(argument80 : true) @Directive41 + field12642: String @Directive3(argument3 : "stringValue21334") @Directive30(argument80 : true) @Directive41 + field19483: Object4484 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21351") @Directive41 + field19489: Object4487 @Directive18 @Directive30(argument80 : true) @Directive41 + field19494: Object2258 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9025: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4491 implements Interface36 @Directive22(argument62 : "stringValue21341") @Directive30(argument83 : ["stringValue21342", "stringValue21343", "stringValue21344", "stringValue21345"]) @Directive44(argument97 : ["stringValue21346", "stringValue21347"]) @Directive7(argument12 : "stringValue21340", argument13 : "stringValue21338", argument14 : "stringValue21337", argument16 : "stringValue21339", argument17 : "stringValue21336") { + field19495: [Object4492] @Directive18 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object4492 @Directive22(argument62 : "stringValue21348") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21349", "stringValue21350"]) { + field19496: String @Directive30(argument80 : true) @Directive41 + field19497: Enum983 @Directive30(argument80 : true) @Directive41 + field19498: Scalar4 @Directive30(argument80 : true) @Directive41 + field19499: Scalar4 @Directive30(argument80 : true) @Directive41 + field19500: Object2487 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object4493 implements Interface115 @Directive22(argument62 : "stringValue21352") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21353", "stringValue21354"]) { + field12634: Boolean! @Directive30(argument80 : true) @Directive41 + field12635: Boolean! @Directive30(argument80 : true) @Directive41 + field12636: Int! @Directive30(argument80 : true) @Directive41 + field12637: Int! @Directive30(argument80 : true) @Directive41 + field12638: Int! @Directive30(argument80 : true) @Directive41 + field12639: Int @Directive30(argument80 : true) @Directive41 + field12640: Int @Directive30(argument80 : true) @Directive41 +} + +type Object4494 @Directive22(argument62 : "stringValue21371") @Directive42(argument96 : ["stringValue21369", "stringValue21370"]) @Directive44(argument97 : ["stringValue21372", "stringValue21373"]) { + field19506: [Object4495] + field19516: [Object4496] +} + +type Object4495 @Directive22(argument62 : "stringValue21376") @Directive42(argument96 : ["stringValue21374", "stringValue21375"]) @Directive44(argument97 : ["stringValue21377", "stringValue21378"]) { + field19507: String + field19508: String + field19509: Scalar4 + field19510: Scalar4 + field19511: String + field19512: String + field19513: String + field19514: Int + field19515: String +} + +type Object4496 @Directive22(argument62 : "stringValue21381") @Directive42(argument96 : ["stringValue21379", "stringValue21380"]) @Directive44(argument97 : ["stringValue21382", "stringValue21383"]) { + field19517: String + field19518: String + field19519: String + field19520: String + field19521: String + field19522: String + field19523: Scalar4 + field19524: Boolean + field19525: Int + field19526: Scalar4 +} + +type Object4497 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue21411") @Directive30(argument83 : ["stringValue21412", "stringValue21413", "stringValue21414", "stringValue21415"]) @Directive44(argument97 : ["stringValue21416", "stringValue21417"]) { + field10398: Enum983 @Directive30(argument80 : true) @Directive41 + field19475: Scalar2 @Directive30(argument80 : true) @Directive41 + field19476: [String!] @Directive30(argument80 : true) @Directive41 + field19477: Scalar2 @Directive30(argument80 : true) @Directive41 + field19478: Scalar2 @Directive30(argument80 : true) @Directive41 + field19479: [Scalar2!] @Directive30(argument80 : true) @Directive41 + field19480: [String!] @Directive30(argument80 : true) @Directive41 + field19481: Scalar4 @Directive3(argument3 : "stringValue21418") @Directive30(argument80 : true) @Directive41 + field19482: Enum982 @Directive30(argument80 : true) @Directive41 + field19501: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue21419") @Directive41 + field19532: String @Directive30(argument80 : true) @Directive41 + field19533: String @Directive30(argument80 : true) @Directive41 + field19534: Object4498 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object4498 @Directive22(argument62 : "stringValue21420") @Directive30(argument83 : ["stringValue21421", "stringValue21422", "stringValue21423", "stringValue21424"]) @Directive44(argument97 : ["stringValue21425", "stringValue21426"]) { + field19535: String @Directive30(argument80 : true) @Directive41 + field19536: String @Directive30(argument80 : true) @Directive41 + field19537: String @Directive30(argument80 : true) @Directive41 + field19538: String @Directive30(argument80 : true) @Directive41 + field19539: Scalar2 @Directive30(argument80 : true) @Directive41 + field19540: String @Directive30(argument80 : true) @Directive41 +} + +type Object4499 implements Interface36 @Directive22(argument62 : "stringValue21439") @Directive30(argument83 : ["stringValue21440", "stringValue21441"]) @Directive44(argument97 : ["stringValue21442", "stringValue21443", "stringValue21444"]) { + field10398: Enum990 @Directive30(argument80 : true) @Directive41 + field19545: String @Directive30(argument80 : true) @Directive41 + field19546: Object4500 @Directive30(argument80 : true) @Directive41 + field19551: Union198 @Directive30(argument80 : true) @Directive41 + field19570: Union199 @Directive30(argument80 : true) @Directive41 + field19574: Object4506 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 +} + +type Object45 @Directive21(argument61 : "stringValue241") @Directive44(argument97 : ["stringValue240"]) { + field257: String + field258: String + field259: String +} + +type Object450 @Directive20(argument58 : "stringValue1448", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1447") @Directive31 @Directive44(argument97 : ["stringValue1449", "stringValue1450"]) { + field2474: Object10 + field2475: Object451 + field2483: Int + field2484: Enum144 +} + +type Object4500 @Directive22(argument62 : "stringValue21449") @Directive30(argument83 : ["stringValue21450", "stringValue21451"]) @Directive44(argument97 : ["stringValue21452", "stringValue21453", "stringValue21454"]) { + field19547: Scalar2 @Directive30(argument80 : true) @Directive41 + field19548: String @Directive30(argument80 : true) @Directive41 + field19549: Scalar2 @Directive30(argument80 : true) @Directive41 + field19550: String @Directive30(argument80 : true) @Directive41 +} + +type Object4501 @Directive22(argument62 : "stringValue21459") @Directive30(argument83 : ["stringValue21460", "stringValue21461"]) @Directive44(argument97 : ["stringValue21462", "stringValue21463", "stringValue21464"]) { + field19552: Object4502 @Directive30(argument80 : true) @Directive41 + field19560: Object4503 @Directive30(argument80 : true) @Directive41 + field19564: Object4504 @Directive30(argument80 : true) @Directive41 +} + +type Object4502 @Directive22(argument62 : "stringValue21465") @Directive30(argument83 : ["stringValue21466", "stringValue21467"]) @Directive44(argument97 : ["stringValue21468", "stringValue21469", "stringValue21470"]) { + field19553: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21471") + field19554: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21472") + field19555: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21473") + field19556: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21474") + field19557: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21475") + field19558: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21476") + field19559: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue21477") +} + +type Object4503 @Directive22(argument62 : "stringValue21478") @Directive30(argument83 : ["stringValue21479", "stringValue21480"]) @Directive44(argument97 : ["stringValue21481", "stringValue21482", "stringValue21483"]) { + field19561: Boolean @Directive30(argument80 : true) @Directive41 + field19562: String @Directive30(argument80 : true) @Directive41 + field19563: String @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object4504 @Directive22(argument62 : "stringValue21484") @Directive30(argument83 : ["stringValue21485", "stringValue21486"]) @Directive44(argument97 : ["stringValue21487", "stringValue21488", "stringValue21489"]) { + field19565: Boolean @Directive30(argument80 : true) @Directive41 + field19566: String @Directive30(argument80 : true) @Directive41 + field19567: Enum991 @Directive30(argument80 : true) @Directive41 + field19568: String @Directive30(argument80 : true) @Directive41 @deprecated + field19569: String @Directive30(argument80 : true) @Directive41 +} + +type Object4505 @Directive22(argument62 : "stringValue21498") @Directive30(argument83 : ["stringValue21499", "stringValue21500"]) @Directive44(argument97 : ["stringValue21501", "stringValue21502", "stringValue21503"]) { + field19571: Enum992 @Directive30(argument80 : true) @Directive41 + field19572: Enum992 @Directive30(argument80 : true) @Directive41 + field19573: Enum992 @Directive30(argument80 : true) @Directive41 +} + +type Object4506 @Directive22(argument62 : "stringValue21508") @Directive30(argument83 : ["stringValue21509", "stringValue21510"]) @Directive44(argument97 : ["stringValue21511", "stringValue21512", "stringValue21513"]) { + field19575: [Object4507]! @Directive30(argument80 : true) @Directive41 + field19579: String @Directive30(argument80 : true) @Directive41 +} + +type Object4507 @Directive22(argument62 : "stringValue21514") @Directive30(argument83 : ["stringValue21515", "stringValue21516"]) @Directive44(argument97 : ["stringValue21517", "stringValue21518", "stringValue21519"]) { + field19576: Enum993! @Directive30(argument80 : true) @Directive41 + field19577: Enum994! @Directive30(argument80 : true) @Directive41 + field19578: String @Directive30(argument80 : true) @Directive41 +} + +type Object4508 @Directive22(argument62 : "stringValue21577") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21578"]) { + field19585: Boolean @Directive30(argument80 : true) @Directive41 + field19586: Object4509 @Directive30(argument80 : true) @Directive40 + field19591: Object4510 @Directive30(argument80 : true) @Directive40 +} + +type Object4509 @Directive22(argument62 : "stringValue21579") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21580"]) { + field19587: ID @Directive30(argument80 : true) @Directive41 + field19588: Int @Directive30(argument80 : true) @Directive41 + field19589: String @Directive30(argument80 : true) @Directive41 + field19590: String @Directive30(argument80 : true) @Directive41 +} + +type Object451 @Directive20(argument58 : "stringValue1452", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1451") @Directive31 @Directive44(argument97 : ["stringValue1453", "stringValue1454"]) { + field2476: Enum141 + field2477: Enum142 + field2478: Enum143 + field2479: Int + field2480: Int + field2481: Float + field2482: Float +} + +type Object4510 @Directive22(argument62 : "stringValue21581") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21582"]) { + field19592: Object4509 @Directive30(argument80 : true) @Directive40 +} + +type Object4511 @Directive22(argument62 : "stringValue21586") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21587"]) { + field19594: Object4264 @Directive30(argument80 : true) @Directive41 + field19595: Boolean @Directive30(argument80 : true) @Directive41 + field19596: String @Directive30(argument80 : true) @Directive40 +} + +type Object4512 @Directive22(argument62 : "stringValue21591") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21592"]) { + field19598: String @Directive30(argument80 : true) @Directive40 + field19599: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4513 @Directive22(argument62 : "stringValue21596") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21597"]) { + field19601: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object4514 @Directive22(argument62 : "stringValue21603") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21604"]) { + field19603: Boolean @Directive30(argument80 : true) @Directive41 + field19604: Object4509 @Directive30(argument80 : true) @Directive40 +} + +type Object4515 @Directive22(argument62 : "stringValue21608") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21609"]) { + field19606: String @Directive30(argument80 : true) @Directive40 + field19607: Boolean @Directive30(argument80 : true) @Directive40 + field19608: Boolean @Directive30(argument80 : true) @Directive40 +} + +type Object4516 @Directive22(argument62 : "stringValue21631") @Directive30(argument79 : "stringValue21630") @Directive44(argument97 : ["stringValue21632", "stringValue21633"]) { + field19612: Object2028 @Directive30(argument80 : true) @Directive41 + field19613: Boolean! @Directive30(argument80 : true) @Directive41 + field19614: String @Directive30(argument80 : true) @Directive41 +} + +type Object4517 @Directive22(argument62 : "stringValue21643") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21644", "stringValue21645"]) { + field19616: Object4059 @Directive30(argument80 : true) @Directive40 +} + +type Object4518 @Directive22(argument62 : "stringValue21664") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21665"]) { + field19620: Object4264 @Directive30(argument80 : true) @Directive41 + field19621: Boolean @Directive30(argument80 : true) @Directive41 + field19622: String @Directive30(argument80 : true) @Directive40 +} + +type Object4519 @Directive22(argument62 : "stringValue21671") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21672"]) { + field19624: Boolean @Directive30(argument80 : true) @Directive41 + field19625: Object4520 @Directive30(argument80 : true) @Directive40 + field19630: String @Directive30(argument80 : true) @Directive40 +} + +type Object452 implements Interface39 & Interface40 @Directive20(argument58 : "stringValue1480", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1479") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue1481", "stringValue1482"]) { + field2486: String + field2487: Enum10 + field2488: Enum145 + field2489: Enum109 + field2490: String + field2491: Interface3 + field2492: String + field2493: Object1 @deprecated + field2494: Union92 @deprecated + field2497: Object13 @deprecated +} + +type Object4520 @Directive22(argument62 : "stringValue21673") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21674"]) { + field19626: [Object4521] @Directive30(argument80 : true) @Directive40 +} + +type Object4521 @Directive22(argument62 : "stringValue21675") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21676"]) { + field19627: String @Directive30(argument80 : true) @Directive40 + field19628: Boolean @Directive30(argument80 : true) @Directive40 + field19629: String @Directive30(argument80 : true) @Directive41 +} + +type Object4522 @Directive22(argument62 : "stringValue21680") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21681"]) { + field19632: Boolean @Directive30(argument80 : true) @Directive41 + field19633: Object4243 @Directive30(argument80 : true) @Directive41 + field19634: String @Directive30(argument80 : true) @Directive40 +} + +type Object4523 @Directive22(argument62 : "stringValue21687") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21688"]) { + field19636: Object4264 @Directive30(argument80 : true) @Directive41 + field19637: Boolean @Directive30(argument80 : true) @Directive41 + field19638: String @Directive30(argument80 : true) @Directive40 +} + +type Object4524 @Directive22(argument62 : "stringValue21692") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21693"]) { + field19640: Boolean @Directive30(argument80 : true) @Directive41 + field19641: [Object4525] @Directive30(argument80 : true) @Directive40 + field19659: [Object4526] @Directive30(argument80 : true) @Directive41 +} + +type Object4525 @Directive22(argument62 : "stringValue21694") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21695"]) { + field19642: Scalar2 @Directive30(argument80 : true) @Directive40 + field19643: String @Directive30(argument80 : true) @Directive40 + field19644: String @Directive30(argument80 : true) @Directive40 + field19645: String @Directive30(argument80 : true) @Directive40 + field19646: String @Directive30(argument80 : true) @Directive40 + field19647: String @Directive30(argument80 : true) @Directive40 + field19648: ID @Directive30(argument80 : true) @Directive40 + field19649: Boolean @Directive30(argument80 : true) @Directive40 + field19650: Int @Directive30(argument80 : true) @Directive40 + field19651: String @Directive30(argument80 : true) @Directive40 + field19652: String @Directive30(argument80 : true) @Directive40 + field19653: String @Directive30(argument80 : true) @Directive40 + field19654: String @Directive30(argument80 : true) @Directive40 + field19655: String @Directive30(argument80 : true) @Directive40 + field19656: ID @Directive30(argument80 : true) @Directive40 + field19657: Scalar2 @Directive30(argument80 : true) @Directive40 + field19658: String @Directive30(argument80 : true) @Directive40 +} + +type Object4526 @Directive22(argument62 : "stringValue21696") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21697"]) { + field19660: String @Directive30(argument80 : true) @Directive41 + field19661: String @Directive30(argument80 : true) @Directive41 +} + +type Object4527 @Directive22(argument62 : "stringValue21906") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21907"]) { + field19663: Object4264 @Directive30(argument80 : true) @Directive41 + field19664: Object4271 @Directive30(argument80 : true) @Directive41 + field19665: Boolean @Directive30(argument80 : true) @Directive41 + field19666: [Object4528!] @Directive30(argument80 : true) @Directive41 +} + +type Object4528 @Directive22(argument62 : "stringValue21908") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21909", "stringValue21910"]) { + field19667: String @Directive30(argument80 : true) @Directive41 + field19668: String @Directive30(argument80 : true) @Directive41 + field19669: Enum997! @Directive30(argument80 : true) @Directive41 +} + +type Object4529 @Directive22(argument62 : "stringValue21920") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21921"]) { + field19671: Boolean @Directive30(argument80 : true) @Directive41 + field19672: String @Directive30(argument80 : true) @Directive40 + field19673: String @Directive30(argument80 : true) @Directive40 + field19674: String @Directive30(argument80 : true) @Directive40 +} + +type Object453 @Directive20(argument58 : "stringValue1487", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1486") @Directive31 @Directive44(argument97 : ["stringValue1488", "stringValue1489"]) { + field2495: String! + field2496: String +} + +type Object4530 @Directive22(argument62 : "stringValue21927") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21928", "stringValue21929"]) { + field19676: Object4059 @Directive30(argument80 : true) @Directive40 +} + +type Object4531 @Directive22(argument62 : "stringValue21950") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21951"]) { + field19680: Boolean @Directive30(argument80 : true) @Directive41 + field19681: [Object4532] @Directive30(argument80 : true) @Directive41 +} + +type Object4532 @Directive22(argument62 : "stringValue21952") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21953"]) { + field19682: String @Directive30(argument80 : true) @Directive41 + field19683: String @Directive30(argument80 : true) @Directive41 +} + +type Object4533 @Directive22(argument62 : "stringValue21957") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21958"]) { + field19685: Object4264 @Directive30(argument80 : true) @Directive41 + field19686: Boolean @Directive30(argument80 : true) @Directive41 + field19687: String @Directive30(argument80 : true) @Directive40 +} + +type Object4534 @Directive22(argument62 : "stringValue21964") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21965"]) { + field19689: Boolean @Directive30(argument80 : true) @Directive41 + field19690: [Object4525] @Directive30(argument80 : true) @Directive40 +} + +type Object4535 @Directive22(argument62 : "stringValue21969") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue21970"]) { + field19692: Boolean @Directive30(argument80 : true) @Directive41 + field19693: [Object4525] @Directive30(argument80 : true) @Directive40 +} + +type Object4536 @Directive22(argument62 : "stringValue22004") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22005", "stringValue22006"]) { + field19695: Object4017 @Directive30(argument80 : true) @Directive40 + field19696: Boolean @Directive30(argument80 : true) @Directive41 + field19697: [Object4537!] @Directive30(argument80 : true) @Directive41 +} + +type Object4537 @Directive22(argument62 : "stringValue22007") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22008", "stringValue22009"]) { + field19698: String @Directive30(argument80 : true) @Directive41 + field19699: String @Directive30(argument80 : true) @Directive41 + field19700: Enum1001! @Directive30(argument80 : true) @Directive41 +} + +type Object4538 @Directive22(argument62 : "stringValue22019") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22020", "stringValue22021"]) { + field19702: Object4079 @Directive30(argument80 : true) @Directive40 + field19703: Boolean @Directive30(argument80 : true) @Directive41 + field19704: [Object4528!] @Directive30(argument80 : true) @Directive41 +} + +type Object4539 @Directive22(argument62 : "stringValue22045") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22046", "stringValue22047"]) { + field19706: Object4091 @Directive30(argument80 : true) @Directive40 + field19707: Boolean @Directive30(argument80 : true) @Directive41 + field19708: [Object4528!] @Directive30(argument80 : true) @Directive41 +} + +type Object454 implements Interface3 @Directive22(argument62 : "stringValue1490") @Directive31 @Directive44(argument97 : ["stringValue1491", "stringValue1492"]) { + field2252: String! + field2254: Interface3 + field2506: ID + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object4540 @Directive22(argument62 : "stringValue22081") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22082", "stringValue22083"]) { + field19710: Boolean! @Directive30(argument80 : true) @Directive41 + field19711: [Object4541] @Directive30(argument80 : true) @Directive41 +} + +type Object4541 @Directive22(argument62 : "stringValue22084") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22085", "stringValue22086"]) { + field19712: String @Directive30(argument80 : true) @Directive41 + field19713: String @Directive30(argument80 : true) @Directive41 + field19714: String @Directive30(argument80 : true) @Directive41 + field19715: Object4542 @Directive30(argument80 : true) @Directive41 +} + +type Object4542 @Directive22(argument62 : "stringValue22087") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22088", "stringValue22089"]) { + field19716: Scalar2 @Directive30(argument80 : true) @Directive41 + field19717: Scalar2 @Directive30(argument80 : true) @Directive41 + field19718: Object4543 @Directive30(argument80 : true) @Directive41 +} + +type Object4543 @Directive22(argument62 : "stringValue22090") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22091", "stringValue22092"]) { + field19719: Scalar3! @Directive30(argument80 : true) @Directive41 + field19720: Scalar3! @Directive30(argument80 : true) @Directive41 +} + +type Object4544 @Directive22(argument62 : "stringValue22111") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22112", "stringValue22113"]) { + field19722: Boolean! @Directive30(argument80 : true) @Directive41 + field19723: [Object4545] @Directive30(argument80 : true) @Directive41 + field19763: [Object4541] @Directive30(argument80 : true) @Directive41 + field19764: [Object4552] @Directive30(argument80 : true) @Directive41 +} + +type Object4545 implements Interface36 @Directive42(argument96 : ["stringValue22114", "stringValue22115", "stringValue22116"]) @Directive44(argument97 : ["stringValue22117", "stringValue22118"]) { + field19724: Scalar2! + field19725: Scalar2 + field19726: Scalar2 + field19727: [Scalar2] + field19728: [Enum1004] + field19729: Object4546 + field19742: Object4548 + field19754: Object4550 + field19760: Enum1006 + field19761: String + field19762: String + field2312: ID! + field8994: String +} + +type Object4546 @Directive42(argument96 : ["stringValue22119", "stringValue22120", "stringValue22121"]) @Directive44(argument97 : ["stringValue22122", "stringValue22123"]) { + field19730: Int + field19731: Int + field19732: Int + field19733: Int + field19734: [Object4547] + field19738: [Object4246] + field19739: [Object4247] + field19740: [Object4247] + field19741: Enum1005 +} + +type Object4547 @Directive22(argument62 : "stringValue22124") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22125", "stringValue22126"]) { + field19735: Int @Directive30(argument80 : true) @Directive40 + field19736: Enum177 @Directive30(argument80 : true) @Directive40 + field19737: Object4543 @Directive30(argument80 : true) @Directive40 +} + +type Object4548 @Directive42(argument96 : ["stringValue22131", "stringValue22132", "stringValue22133"]) @Directive44(argument97 : ["stringValue22134", "stringValue22135"]) { + field19743: Enum212 + field19744: Scalar2 + field19745: Object4549 + field19748: Object4549 + field19749: Int + field19750: Enum906 + field19751: Int + field19752: Boolean + field19753: Boolean +} + +type Object4549 @Directive42(argument96 : ["stringValue22136", "stringValue22137", "stringValue22138"]) @Directive44(argument97 : ["stringValue22139", "stringValue22140"]) { + field19746: Int + field19747: Int +} + +type Object455 implements Interface41 @Directive22(argument62 : "stringValue1496") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue1497", "stringValue1498"]) { + field2507: ID @Directive30(argument80 : true) @Directive41 +} + +type Object4550 @Directive22(argument62 : "stringValue22141") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22142", "stringValue22143"]) { + field19755: Scalar2 @Directive30(argument80 : true) @Directive40 + field19756: Object4551 @Directive30(argument80 : true) @Directive40 +} + +type Object4551 @Directive22(argument62 : "stringValue22144") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22145", "stringValue22146"]) { + field19757: Enum1003! @Directive30(argument80 : true) @Directive40 + field19758: Float @Directive30(argument80 : true) @Directive40 + field19759: Scalar2 @Directive30(argument80 : true) @Directive40 +} + +type Object4552 @Directive22(argument62 : "stringValue22150") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22151", "stringValue22152"]) { + field19765: String @Directive30(argument80 : true) @Directive41 + field19766: String @Directive30(argument80 : true) @Directive41 + field19767: Object4542 @Directive30(argument80 : true) @Directive41 +} + +type Object4553 @Directive22(argument62 : "stringValue22155") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22156", "stringValue22157"]) { + field19769: Boolean! @Directive30(argument80 : true) @Directive41 + field19770: [Object4545] @Directive30(argument80 : true) @Directive41 + field19771: [Object4541] @Directive30(argument80 : true) @Directive41 + field19772: [Object4552] @Directive30(argument80 : true) @Directive41 +} + +type Object4554 @Directive22(argument62 : "stringValue22163") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22164", "stringValue22165"]) { + field19774: Boolean! @Directive30(argument80 : true) @Directive41 + field19775: [Object4541] @Directive30(argument80 : true) @Directive41 + field19776: [Object4552] @Directive30(argument80 : true) @Directive41 +} + +type Object4555 @Directive22(argument62 : "stringValue22171") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22172", "stringValue22173"]) { + field19778: Boolean! @Directive30(argument80 : true) @Directive41 + field19779: [Object4541] @Directive30(argument80 : true) @Directive41 + field19780: [Object4552] @Directive30(argument80 : true) @Directive41 +} + +type Object4556 @Directive22(argument62 : "stringValue22219") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22220", "stringValue22221"]) { + field19783: Boolean! @Directive30(argument80 : true) @Directive41 + field19784: [Object4541] @Directive30(argument80 : true) @Directive41 + field19785: [Object4552] @Directive30(argument80 : true) @Directive41 +} + +type Object4557 @Directive22(argument62 : "stringValue22232") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue22233", "stringValue22234"]) { + field19787: Boolean @Directive30(argument80 : true) @Directive37(argument95 : "stringValue22235") + field19788: String @Directive30(argument80 : true) @Directive37(argument95 : "stringValue22236") +} + +type Object4558 @Directive44(argument97 : ["stringValue22237"]) { + field19790(argument952: InputObject392!): Object4559 @Directive35(argument89 : "stringValue22239", argument90 : true, argument91 : "stringValue22238", argument92 : 8, argument93 : "stringValue22240", argument94 : false) + field19809(argument953: InputObject394!): Object4559 @Directive35(argument89 : "stringValue22250", argument90 : true, argument91 : "stringValue22249", argument92 : 9, argument93 : "stringValue22251", argument94 : false) + field19810(argument954: InputObject395!): Object4559 @Directive35(argument89 : "stringValue22254", argument90 : true, argument91 : "stringValue22253", argument92 : 10, argument93 : "stringValue22255", argument94 : false) + field19811(argument955: InputObject396!): Object4559 @Directive35(argument89 : "stringValue22258", argument90 : true, argument91 : "stringValue22257", argument92 : 11, argument93 : "stringValue22259", argument94 : false) + field19812(argument956: InputObject397!): Object4559 @Directive35(argument89 : "stringValue22262", argument90 : true, argument91 : "stringValue22261", argument92 : 12, argument93 : "stringValue22263", argument94 : false) + field19813(argument957: InputObject398!): Object4559 @Directive35(argument89 : "stringValue22266", argument90 : true, argument91 : "stringValue22265", argument92 : 13, argument93 : "stringValue22267", argument94 : false) + field19814(argument958: InputObject399!): Object4559 @Directive35(argument89 : "stringValue22270", argument90 : true, argument91 : "stringValue22269", argument92 : 14, argument93 : "stringValue22271", argument94 : false) + field19815(argument959: InputObject400!): Object4559 @Directive35(argument89 : "stringValue22274", argument90 : true, argument91 : "stringValue22273", argument92 : 15, argument93 : "stringValue22275", argument94 : false) + field19816(argument960: InputObject401!): Object4559 @Directive35(argument89 : "stringValue22278", argument90 : true, argument91 : "stringValue22277", argument92 : 16, argument93 : "stringValue22279", argument94 : false) + field19817(argument961: InputObject402!): Object4559 @Directive35(argument89 : "stringValue22282", argument90 : true, argument91 : "stringValue22281", argument92 : 17, argument93 : "stringValue22283", argument94 : false) +} + +type Object4559 @Directive21(argument61 : "stringValue22244") @Directive44(argument97 : ["stringValue22243"]) { + field19791: Object4560! + field19807: [String] + field19808: Boolean +} + +type Object456 implements Interface42 & Interface43 & Interface44 & Interface5 @Directive22(argument62 : "stringValue1511") @Directive31 @Directive44(argument97 : ["stringValue1512", "stringValue1513"]) { + field2508: Boolean + field2509: Enum146 + field2510: String + field2511: Boolean + field76: String + field77: String + field78: String +} + +type Object4560 @Directive21(argument61 : "stringValue22246") @Directive44(argument97 : ["stringValue22245"]) { + field19792: Scalar2 + field19793: Interface34 + field19794: Object4561 +} + +type Object4561 @Directive21(argument61 : "stringValue22248") @Directive44(argument97 : ["stringValue22247"]) { + field19795: Scalar2 + field19796: String + field19797: [Scalar2] + field19798: [Scalar2] + field19799: [Scalar2] + field19800: String + field19801: Scalar4 + field19802: Scalar4 + field19803: Scalar4 + field19804: Scalar4 + field19805: Scalar4 + field19806: String +} + +type Object4562 @Directive44(argument97 : ["stringValue22285"]) { + field19819(argument962: InputObject403!): Object4563 @Directive35(argument89 : "stringValue22287", argument90 : true, argument91 : "stringValue22286", argument92 : 18, argument93 : "stringValue22288", argument94 : false) + field19822(argument963: InputObject405!): Object4564 @Directive35(argument89 : "stringValue22294", argument90 : true, argument91 : "stringValue22293", argument92 : 19, argument93 : "stringValue22295", argument94 : false) + field19845(argument964: InputObject406!): Object4569 @Directive35(argument89 : "stringValue22310", argument90 : true, argument91 : "stringValue22309", argument92 : 20, argument93 : "stringValue22311", argument94 : false) + field19888(argument965: InputObject407!): Object4575 @Directive35(argument89 : "stringValue22330", argument90 : true, argument91 : "stringValue22329", argument92 : 21, argument93 : "stringValue22331", argument94 : false) + field19891(argument966: InputObject408!): Object4576 @Directive35(argument89 : "stringValue22336", argument90 : true, argument91 : "stringValue22335", argument92 : 22, argument93 : "stringValue22337", argument94 : false) + field19894: Object4577 @Directive35(argument89 : "stringValue22342", argument90 : true, argument91 : "stringValue22341", argument92 : 23, argument93 : "stringValue22343", argument94 : false) + field19896(argument967: InputObject409!): Object4578 @Directive35(argument89 : "stringValue22347", argument90 : true, argument91 : "stringValue22346", argument92 : 24, argument93 : "stringValue22348", argument94 : false) + field19898(argument968: InputObject410!): Object4579 @Directive35(argument89 : "stringValue22353", argument90 : true, argument91 : "stringValue22352", argument92 : 25, argument93 : "stringValue22354", argument94 : false) + field19900(argument969: InputObject411!): Object4580 @Directive35(argument89 : "stringValue22359", argument90 : true, argument91 : "stringValue22358", argument92 : 26, argument93 : "stringValue22360", argument94 : false) + field19902(argument970: InputObject412!): Object4581 @Directive35(argument89 : "stringValue22365", argument90 : true, argument91 : "stringValue22364", argument92 : 27, argument93 : "stringValue22366", argument94 : false) +} + +type Object4563 @Directive21(argument61 : "stringValue22292") @Directive44(argument97 : ["stringValue22291"]) { + field19820: [String]! + field19821: Scalar1! +} + +type Object4564 @Directive21(argument61 : "stringValue22299") @Directive44(argument97 : ["stringValue22298"]) { + field19823: Object4565 + field19842: [Object4568!]! +} + +type Object4565 @Directive21(argument61 : "stringValue22301") @Directive44(argument97 : ["stringValue22300"]) { + field19824: Scalar2! + field19825: Object4566! + field19840: Object4570! + field19841: Enum1011! +} + +type Object4566 @Directive21(argument61 : "stringValue22303") @Directive44(argument97 : ["stringValue22302"]) { + field19826: Scalar2! + field19827: String + field19828: String + field19829: String! + field19830: String + field19831: Boolean! + field19832: Boolean! + field19833: [Object4565!]! + field19834: Boolean! + field19835: Enum1012! + field19836: String! + field19837: [Object4567!]! +} + +type Object4567 @Directive21(argument61 : "stringValue22306") @Directive44(argument97 : ["stringValue22305"]) { + field19838: String! + field19839: Enum1011! +} + +type Object4568 @Directive21(argument61 : "stringValue22308") @Directive44(argument97 : ["stringValue22307"]) { + field19843: String! + field19844: String! +} + +type Object4569 @Directive21(argument61 : "stringValue22315") @Directive44(argument97 : ["stringValue22314"]) { + field19846: Object4570 + field19887: [Object4568!]! +} + +type Object457 @Directive22(argument62 : "stringValue1514") @Directive31 @Directive44(argument97 : ["stringValue1515"]) { + field2512: String + field2513: String + field2514: String +} + +type Object4570 @Directive21(argument61 : "stringValue22317") @Directive44(argument97 : ["stringValue22316"]) { + field19847: Scalar2! + field19848: String! + field19849: String! + field19850: String + field19851: String + field19852: [Enum1014!]! + field19853: [Object4571] + field19861: [Object4565!]! + field19862: [Object4572!]! + field19871: [Object4572!]! + field19872: [Object4574!]! + field19879: String! + field19880: Float + field19881: Scalar2 + field19882: String + field19883: Enum1013! + field19884: String + field19885: Int + field19886: Object4571 +} + +type Object4571 @Directive21(argument61 : "stringValue22320") @Directive44(argument97 : ["stringValue22319"]) { + field19854: Scalar2! + field19855: String + field19856: String + field19857: String + field19858: String + field19859: String + field19860: Enum1011! +} + +type Object4572 @Directive21(argument61 : "stringValue22322") @Directive44(argument97 : ["stringValue22321"]) { + field19863: String! + field19864: Enum1015! + field19865: [Object4573] +} + +type Object4573 @Directive21(argument61 : "stringValue22325") @Directive44(argument97 : ["stringValue22324"]) { + field19866: String! + field19867: String! + field19868: String! + field19869: Float! + field19870: Enum1016! +} + +type Object4574 @Directive21(argument61 : "stringValue22328") @Directive44(argument97 : ["stringValue22327"]) { + field19873: Scalar2! + field19874: String! + field19875: String! + field19876: String! + field19877: String! + field19878: Object4570 +} + +type Object4575 @Directive21(argument61 : "stringValue22334") @Directive44(argument97 : ["stringValue22333"]) { + field19889: String + field19890: [Object4568!]! +} + +type Object4576 @Directive21(argument61 : "stringValue22340") @Directive44(argument97 : ["stringValue22339"]) { + field19892: Object4574 + field19893: [Object4568!]! +} + +type Object4577 @Directive21(argument61 : "stringValue22345") @Directive44(argument97 : ["stringValue22344"]) { + field19895: Boolean! +} + +type Object4578 @Directive21(argument61 : "stringValue22351") @Directive44(argument97 : ["stringValue22350"]) { + field19897: Boolean! +} + +type Object4579 @Directive21(argument61 : "stringValue22357") @Directive44(argument97 : ["stringValue22356"]) { + field19899: Boolean! +} + +type Object458 implements Interface45 @Directive22(argument62 : "stringValue1535") @Directive31 @Directive44(argument97 : ["stringValue1536", "stringValue1537"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2524: String + field2525: Object461 + field2613: String + field2614: String + field2615: String +} + +type Object4580 @Directive21(argument61 : "stringValue22363") @Directive44(argument97 : ["stringValue22362"]) { + field19901: Boolean! +} + +type Object4581 @Directive21(argument61 : "stringValue22370") @Directive44(argument97 : ["stringValue22369"]) { + field19903: Object4570 + field19904: [Object4568!]! +} + +type Object4582 @Directive44(argument97 : ["stringValue22371"]) { + field19906(argument971: InputObject414!): Object4583 @Directive35(argument89 : "stringValue22373", argument90 : true, argument91 : "stringValue22372", argument93 : "stringValue22374", argument94 : false) +} + +type Object4583 @Directive21(argument61 : "stringValue22377") @Directive44(argument97 : ["stringValue22376"]) { + field19907: Boolean! +} + +type Object4584 @Directive44(argument97 : ["stringValue22378"]) { + field19909(argument972: InputObject415!): Object4585 @Directive35(argument89 : "stringValue22380", argument90 : true, argument91 : "stringValue22379", argument92 : 28, argument93 : "stringValue22381", argument94 : false) + field20005(argument973: InputObject416!): Object4585 @Directive35(argument89 : "stringValue22405", argument90 : true, argument91 : "stringValue22404", argument92 : 29, argument93 : "stringValue22406", argument94 : false) + field20006(argument974: InputObject424!): Object4593 @Directive35(argument89 : "stringValue22416", argument90 : false, argument91 : "stringValue22415", argument92 : 30, argument93 : "stringValue22417", argument94 : false) + field20029(argument975: InputObject427!): Object4596 @Directive35(argument89 : "stringValue22430", argument90 : true, argument91 : "stringValue22429", argument92 : 31, argument93 : "stringValue22431", argument94 : false) + field20042(argument976: InputObject429!): Object4598 @Directive35(argument89 : "stringValue22441", argument90 : false, argument91 : "stringValue22440", argument92 : 32, argument93 : "stringValue22442", argument94 : false) + field20065(argument977: InputObject432!): Object4601 @Directive35(argument89 : "stringValue22456", argument90 : true, argument91 : "stringValue22455", argument92 : 33, argument93 : "stringValue22457", argument94 : false) + field20068(argument978: InputObject433!): Object4602 @Directive35(argument89 : "stringValue22462", argument90 : true, argument91 : "stringValue22461", argument92 : 34, argument93 : "stringValue22463", argument94 : false) + field20072(argument979: InputObject434!): Object4596 @Directive35(argument89 : "stringValue22468", argument90 : true, argument91 : "stringValue22467", argument92 : 35, argument93 : "stringValue22469", argument94 : false) + field20073(argument980: InputObject435!): Object4601 @Directive35(argument89 : "stringValue22472", argument90 : false, argument91 : "stringValue22471", argument92 : 36, argument93 : "stringValue22473", argument94 : false) + field20074(argument981: InputObject436!): Object4585 @Directive35(argument89 : "stringValue22476", argument90 : true, argument91 : "stringValue22475", argument92 : 37, argument93 : "stringValue22477", argument94 : false) + field20075(argument982: InputObject437!): Object4585 @Directive35(argument89 : "stringValue22480", argument90 : true, argument91 : "stringValue22479", argument92 : 38, argument93 : "stringValue22481", argument94 : false) + field20076(argument983: InputObject438!): Object4585 @Directive35(argument89 : "stringValue22484", argument90 : true, argument91 : "stringValue22483", argument92 : 39, argument93 : "stringValue22485", argument94 : false) + field20077(argument984: InputObject439!): Object4603 @Directive35(argument89 : "stringValue22488", argument90 : true, argument91 : "stringValue22487", argument92 : 40, argument93 : "stringValue22489", argument94 : false) + field20081(argument985: InputObject440!): Object4593 @Directive35(argument89 : "stringValue22494", argument90 : false, argument91 : "stringValue22493", argument92 : 41, argument93 : "stringValue22495", argument94 : false) + field20082(argument986: InputObject441!): Object4604 @Directive35(argument89 : "stringValue22499", argument90 : true, argument91 : "stringValue22498", argument92 : 42, argument93 : "stringValue22500", argument94 : false) + field20093(argument987: InputObject443!): Object4596 @Directive35(argument89 : "stringValue22508", argument90 : true, argument91 : "stringValue22507", argument92 : 43, argument93 : "stringValue22509", argument94 : false) + field20094(argument988: InputObject444!): Object4585 @Directive35(argument89 : "stringValue22512", argument90 : true, argument91 : "stringValue22511", argument92 : 44, argument93 : "stringValue22513", argument94 : false) + field20095(argument989: InputObject445!): Object4598 @Directive35(argument89 : "stringValue22517", argument90 : false, argument91 : "stringValue22516", argument92 : 45, argument93 : "stringValue22518", argument94 : false) + field20096(argument990: InputObject446!): Object4598 @Directive35(argument89 : "stringValue22521", argument90 : true, argument91 : "stringValue22520", argument92 : 46, argument93 : "stringValue22522", argument94 : false) + field20097(argument991: InputObject447!): Object4598 @Directive35(argument89 : "stringValue22525", argument90 : false, argument91 : "stringValue22524", argument92 : 47, argument93 : "stringValue22526", argument94 : false) + field20098(argument992: InputObject448!): Object4606 @Directive35(argument89 : "stringValue22529", argument90 : true, argument91 : "stringValue22528", argument92 : 48, argument93 : "stringValue22530", argument94 : false) +} + +type Object4585 @Directive21(argument61 : "stringValue22384") @Directive44(argument97 : ["stringValue22383"]) { + field19910: Object4586 + field20003: Boolean + field20004: String +} + +type Object4586 @Directive21(argument61 : "stringValue22386") @Directive44(argument97 : ["stringValue22385"]) { + field19911: Scalar2 + field19912: Scalar4 + field19913: Scalar4 + field19914: Scalar4 + field19915: Scalar4 + field19916: Scalar4 + field19917: Scalar4 + field19918: Scalar4 + field19919: String + field19920: String + field19921: Enum1017 + field19922: Enum1018 + field19923: Scalar2 + field19924: Object4587 + field19932: Scalar2 + field19933: Object4589 + field19967: Enum1019 + field19968: String + field19969: Object4591 + field19990: Scalar2 + field19991: Scalar2 + field19992: Scalar2 + field19993: Scalar2 + field19994: Scalar2 + field19995: Scalar2 + field19996: String + field19997: Scalar2 + field19998: String + field19999: Enum1021 + field20000: Enum1021 + field20001: Enum1021 + field20002: Enum1021 +} + +type Object4587 @Directive21(argument61 : "stringValue22390") @Directive44(argument97 : ["stringValue22389"]) { + field19925: Scalar2 + field19926: String + field19927: String + field19928: [Enum1018] + field19929: Object4588 +} + +type Object4588 @Directive21(argument61 : "stringValue22392") @Directive44(argument97 : ["stringValue22391"]) { + field19930: String + field19931: String +} + +type Object4589 @Directive21(argument61 : "stringValue22394") @Directive44(argument97 : ["stringValue22393"]) { + field19934: Scalar2 + field19935: String + field19936: Float + field19937: Float + field19938: String + field19939: Float + field19940: Int + field19941: Int + field19942: Int + field19943: String + field19944: String + field19945: String + field19946: String + field19947: String + field19948: [String] + field19949: String + field19950: String + field19951: String + field19952: String + field19953: String + field19954: String + field19955: Scalar2 + field19956: Int + field19957: Int + field19958: Int + field19959: String + field19960: String + field19961: String + field19962: [Object4590] + field19965: String + field19966: String +} + +type Object459 @Directive20(argument58 : "stringValue1524", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1523") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue1525", "stringValue1526"]) { + field2518: Object460 + field2521: String + field2522: String + field2523: Enum148 +} + +type Object4590 @Directive21(argument61 : "stringValue22396") @Directive44(argument97 : ["stringValue22395"]) { + field19963: String + field19964: String +} + +type Object4591 @Directive21(argument61 : "stringValue22399") @Directive44(argument97 : ["stringValue22398"]) { + field19970: Scalar2 + field19971: Int + field19972: String + field19973: Enum1020 + field19974: Scalar4 + field19975: Scalar4 + field19976: Int + field19977: Int + field19978: Int + field19979: Scalar2 + field19980: Object4592 + field19989: String +} + +type Object4592 @Directive21(argument61 : "stringValue22402") @Directive44(argument97 : ["stringValue22401"]) { + field19981: String + field19982: String + field19983: String + field19984: String + field19985: String + field19986: String + field19987: String + field19988: Scalar2 +} + +type Object4593 @Directive21(argument61 : "stringValue22424") @Directive44(argument97 : ["stringValue22423"]) { + field20007: Object4594 + field20027: Boolean + field20028: String +} + +type Object4594 @Directive21(argument61 : "stringValue22426") @Directive44(argument97 : ["stringValue22425"]) { + field20008: Scalar2 + field20009: Scalar4 + field20010: Scalar4 + field20011: Scalar2! + field20012: Object4586 + field20013: String + field20014: Enum1022 + field20015: Enum1023 + field20016: [Object4595] + field20024: Scalar2 + field20025: Scalar2 + field20026: Object4587 +} + +type Object4595 @Directive21(argument61 : "stringValue22428") @Directive44(argument97 : ["stringValue22427"]) { + field20017: Int! + field20018: Scalar4! + field20019: Scalar4! + field20020: String! + field20021: String! + field20022: String! + field20023: String! +} + +type Object4596 @Directive21(argument61 : "stringValue22437") @Directive44(argument97 : ["stringValue22436"]) { + field20030: Object4597 + field20040: Boolean + field20041: String +} + +type Object4597 @Directive21(argument61 : "stringValue22439") @Directive44(argument97 : ["stringValue22438"]) { + field20031: Scalar2 + field20032: Scalar4 + field20033: Scalar4 + field20034: Scalar4 + field20035: String + field20036: String + field20037: Scalar2! + field20038: Enum1024! + field20039: Enum1025 +} + +type Object4598 @Directive21(argument61 : "stringValue22450") @Directive44(argument97 : ["stringValue22449"]) { + field20043: Object4599 + field20063: Boolean + field20064: String +} + +type Object4599 @Directive21(argument61 : "stringValue22452") @Directive44(argument97 : ["stringValue22451"]) { + field20044: Scalar2 + field20045: Enum1018! + field20046: String! + field20047: Scalar2 + field20048: [Scalar2] + field20049: Object4600 + field20055: String + field20056: Boolean + field20057: Scalar2 + field20058: Object4587 + field20059: Scalar2 + field20060: String + field20061: Scalar2 + field20062: String +} + +type Object46 @Directive21(argument61 : "stringValue243") @Directive44(argument97 : ["stringValue242"]) { + field263: String + field264: String + field265: String +} + +type Object460 @Directive20(argument58 : "stringValue1528", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue1527") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue1529", "stringValue1530"]) { + field2519: String + field2520: String +} + +type Object4600 @Directive21(argument61 : "stringValue22454") @Directive44(argument97 : ["stringValue22453"]) { + field20050: Scalar2 + field20051: Enum1026 + field20052: Enum1027 + field20053: Enum1028 + field20054: Scalar2 +} + +type Object4601 @Directive21(argument61 : "stringValue22460") @Directive44(argument97 : ["stringValue22459"]) { + field20066: Boolean + field20067: String +} + +type Object4602 @Directive21(argument61 : "stringValue22466") @Directive44(argument97 : ["stringValue22465"]) { + field20069: [Object4586] + field20070: Boolean + field20071: String +} + +type Object4603 @Directive21(argument61 : "stringValue22492") @Directive44(argument97 : ["stringValue22491"]) { + field20078: [Enum1018] + field20079: Boolean + field20080: String +} + +type Object4604 @Directive21(argument61 : "stringValue22504") @Directive44(argument97 : ["stringValue22503"]) { + field20083: Object4605 + field20091: Boolean + field20092: String +} + +type Object4605 @Directive21(argument61 : "stringValue22506") @Directive44(argument97 : ["stringValue22505"]) { + field20084: Scalar2 + field20085: Scalar4 + field20086: Scalar4 + field20087: Scalar4 + field20088: Scalar2! + field20089: Scalar2! + field20090: String +} + +type Object4606 @Directive21(argument61 : "stringValue22535") @Directive44(argument97 : ["stringValue22534"]) { + field20099: Object4607 + field20112: Boolean + field20113: String +} + +type Object4607 @Directive21(argument61 : "stringValue22537") @Directive44(argument97 : ["stringValue22536"]) { + field20100: Scalar2 + field20101: Scalar4 + field20102: Scalar4 + field20103: Scalar2 + field20104: Object4591 + field20105: Scalar2 + field20106: Object4589 + field20107: String + field20108: Scalar4 + field20109: Scalar4 + field20110: Enum1031 + field20111: String! +} + +type Object4608 @Directive44(argument97 : ["stringValue22538"]) { + field20115(argument993: InputObject450!): Object4609 @Directive35(argument89 : "stringValue22540", argument90 : true, argument91 : "stringValue22539", argument92 : 49, argument93 : "stringValue22541", argument94 : false) + field20214(argument994: InputObject453!): Object4633 @Directive35(argument89 : "stringValue22602", argument90 : true, argument91 : "stringValue22601", argument92 : 50, argument93 : "stringValue22603", argument94 : false) + field20218(argument995: InputObject454!): Object4634 @Directive35(argument89 : "stringValue22609", argument90 : true, argument91 : "stringValue22608", argument92 : 51, argument93 : "stringValue22610", argument94 : false) +} + +type Object4609 @Directive21(argument61 : "stringValue22547") @Directive44(argument97 : ["stringValue22546"]) { + field20116: Boolean + field20117: Object4610 + field20207: Object4632 + field20212: Object4616 + field20213: String +} + +type Object461 @Directive22(argument62 : "stringValue1538") @Directive31 @Directive44(argument97 : ["stringValue1539", "stringValue1540"]) { + field2526: Int + field2527: String + field2528: String + field2529: String + field2530: ID + field2531: ID + field2532: String + field2533: Int + field2534: String + field2535: String + field2536: Object462 + field2546: Object463 + field2557: Object464 + field2605: String @deprecated + field2606: String @deprecated + field2607: Int @deprecated + field2608: Int @deprecated + field2609: Boolean @deprecated + field2610: Int @deprecated + field2611: Int @deprecated + field2612: Int @deprecated +} + +type Object4610 @Directive21(argument61 : "stringValue22549") @Directive44(argument97 : ["stringValue22548"]) { + field20118: String + field20119: Enum1033 + field20120: Union200 +} + +type Object4611 @Directive21(argument61 : "stringValue22553") @Directive44(argument97 : ["stringValue22552"]) { + field20121: String + field20122: String + field20123: String + field20124: Object4612 + field20147: Object4617 + field20162: Boolean +} + +type Object4612 @Directive21(argument61 : "stringValue22555") @Directive44(argument97 : ["stringValue22554"]) { + field20125: [Object4613] + field20146: String +} + +type Object4613 @Directive21(argument61 : "stringValue22557") @Directive44(argument97 : ["stringValue22556"]) { + field20126: String + field20127: Object4614 + field20136: Object4616 +} + +type Object4614 @Directive21(argument61 : "stringValue22559") @Directive44(argument97 : ["stringValue22558"]) { + field20128: String + field20129: String + field20130: [Object4615] + field20133: String + field20134: Enum1034 + field20135: Scalar2 +} + +type Object4615 @Directive21(argument61 : "stringValue22561") @Directive44(argument97 : ["stringValue22560"]) { + field20131: String + field20132: Float +} + +type Object4616 @Directive21(argument61 : "stringValue22564") @Directive44(argument97 : ["stringValue22563"]) { + field20137: String + field20138: String + field20139: String + field20140: String + field20141: String + field20142: String + field20143: String + field20144: Boolean + field20145: Boolean +} + +type Object4617 @Directive21(argument61 : "stringValue22566") @Directive44(argument97 : ["stringValue22565"]) { + field20148: Enum1032 + field20149: Enum1035 + field20150: Object4614 + field20151: Object4618 + field20157: Boolean + field20158: String + field20159: String + field20160: Object4619 +} + +type Object4618 @Directive21(argument61 : "stringValue22569") @Directive44(argument97 : ["stringValue22568"]) { + field20152: Object4616 + field20153: String + field20154: String + field20155: String + field20156: String +} + +type Object4619 @Directive21(argument61 : "stringValue22571") @Directive44(argument97 : ["stringValue22570"]) { + field20161: String +} + +type Object462 @Directive22(argument62 : "stringValue1541") @Directive31 @Directive44(argument97 : ["stringValue1542", "stringValue1543"]) { + field2537: Int + field2538: String + field2539: String + field2540: Int + field2541: Boolean + field2542: Int + field2543: Int + field2544: Int + field2545: Enum149 +} + +type Object4620 @Directive21(argument61 : "stringValue22573") @Directive44(argument97 : ["stringValue22572"]) { + field20163: Object4621 + field20167: Object4617 + field20168: Object4622 +} + +type Object4621 @Directive21(argument61 : "stringValue22575") @Directive44(argument97 : ["stringValue22574"]) { + field20164: Object4619 + field20165: String + field20166: String +} + +type Object4622 @Directive21(argument61 : "stringValue22577") @Directive44(argument97 : ["stringValue22576"]) { + field20169: Enum1036 + field20170: String + field20171: Scalar2 + field20172: Scalar2 + field20173: [String] + field20174: String +} + +type Object4623 @Directive21(argument61 : "stringValue22580") @Directive44(argument97 : ["stringValue22579"]) { + field20175: Object4616 + field20176: Object4614 +} + +type Object4624 @Directive21(argument61 : "stringValue22582") @Directive44(argument97 : ["stringValue22581"]) { + field20177: [Object4625] + field20182: Int +} + +type Object4625 @Directive21(argument61 : "stringValue22584") @Directive44(argument97 : ["stringValue22583"]) { + field20178: String + field20179: String + field20180: String + field20181: Object4617 +} + +type Object4626 @Directive21(argument61 : "stringValue22586") @Directive44(argument97 : ["stringValue22585"]) { + field20183: [Object4627] +} + +type Object4627 @Directive21(argument61 : "stringValue22588") @Directive44(argument97 : ["stringValue22587"]) { + field20184: String + field20185: Enum1037 + field20186: [Object4610] + field20187: Object4614 + field20188: Object4614 + field20189: String +} + +type Object4628 @Directive21(argument61 : "stringValue22591") @Directive44(argument97 : ["stringValue22590"]) { + field20190: [Object4612] + field20191: Enum1038 +} + +type Object4629 @Directive21(argument61 : "stringValue22594") @Directive44(argument97 : ["stringValue22593"]) { + field20192: Object4619 + field20193: String + field20194: Object4614 +} + +type Object463 @Directive22(argument62 : "stringValue1547") @Directive31 @Directive44(argument97 : ["stringValue1548", "stringValue1549"]) { + field2547: String + field2548: Int + field2549: Boolean + field2550: Int + field2551: Int + field2552: Int + field2553: String + field2554: String + field2555: String + field2556: String +} + +type Object4630 @Directive21(argument61 : "stringValue22596") @Directive44(argument97 : ["stringValue22595"]) { + field20195: Scalar2 + field20196: String + field20197: Object4616 + field20198: Object4619 + field20199: String + field20200: Object4631 +} + +type Object4631 @Directive21(argument61 : "stringValue22598") @Directive44(argument97 : ["stringValue22597"]) { + field20201: Float! + field20202: String + field20203: String + field20204: Float + field20205: Object4612 + field20206: Boolean +} + +type Object4632 @Directive21(argument61 : "stringValue22600") @Directive44(argument97 : ["stringValue22599"]) { + field20208: String + field20209: Object4619 + field20210: String + field20211: Object4617 +} + +type Object4633 @Directive21(argument61 : "stringValue22606") @Directive44(argument97 : ["stringValue22605"]) { + field20215: Enum1039! + field20216: String + field20217: Object4616 +} + +type Object4634 @Directive21(argument61 : "stringValue22613") @Directive44(argument97 : ["stringValue22612"]) { + field20219: Boolean! +} + +type Object4635 @Directive44(argument97 : ["stringValue22614"]) { + field20221(argument996: InputObject455!): Object4636 @Directive35(argument89 : "stringValue22616", argument90 : true, argument91 : "stringValue22615", argument92 : 52, argument93 : "stringValue22617", argument94 : false) + field20232(argument997: InputObject457!): Object4639 @Directive35(argument89 : "stringValue22627", argument90 : true, argument91 : "stringValue22626", argument92 : 53, argument93 : "stringValue22628", argument94 : false) + field20242(argument998: InputObject460!): Object4636 @Directive35(argument89 : "stringValue22640", argument90 : true, argument91 : "stringValue22639", argument92 : 54, argument93 : "stringValue22641", argument94 : false) +} + +type Object4636 @Directive21(argument61 : "stringValue22621") @Directive44(argument97 : ["stringValue22620"]) { + field20222: Object4637! +} + +type Object4637 @Directive21(argument61 : "stringValue22623") @Directive44(argument97 : ["stringValue22622"]) { + field20223: Scalar2! + field20224: Scalar2! + field20225: Object4638! + field20229: String + field20230: String + field20231: String +} + +type Object4638 @Directive21(argument61 : "stringValue22625") @Directive44(argument97 : ["stringValue22624"]) { + field20226: String! + field20227: Scalar2! + field20228: String! +} + +type Object4639 @Directive21(argument61 : "stringValue22633") @Directive44(argument97 : ["stringValue22632"]) { + field20233: Object4640 +} + +type Object464 @Directive22(argument62 : "stringValue1550") @Directive31 @Directive44(argument97 : ["stringValue1551", "stringValue1552"]) { + field2558: Enum150! + field2559: String! + field2560: String! + field2561: Object465 + field2589: Object472 + field2603: Boolean + field2604: String +} + +type Object4640 @Directive21(argument61 : "stringValue22635") @Directive44(argument97 : ["stringValue22634"]) { + field20234: Boolean + field20235: [Object4641] + field20238: Enum1040 + field20239: Float + field20240: Scalar2 + field20241: Boolean +} + +type Object4641 @Directive21(argument61 : "stringValue22637") @Directive44(argument97 : ["stringValue22636"]) { + field20236: Float + field20237: Scalar2 +} + +type Object4642 @Directive44(argument97 : ["stringValue22643"]) { + field20244(argument999: InputObject461!): Object4643 @Directive35(argument89 : "stringValue22645", argument90 : true, argument91 : "stringValue22644", argument92 : 55, argument93 : "stringValue22646", argument94 : false) + field20277(argument1000: InputObject462!): Object4645 @Directive35(argument89 : "stringValue22657", argument90 : false, argument91 : "stringValue22656", argument92 : 56, argument93 : "stringValue22658", argument94 : false) + field20288(argument1001: InputObject464!): Object4648 @Directive35(argument89 : "stringValue22670", argument90 : false, argument91 : "stringValue22669", argument92 : 57, argument93 : "stringValue22671", argument94 : false) + field20307(argument1002: InputObject466!): Object4645 @Directive35(argument89 : "stringValue22680", argument90 : false, argument91 : "stringValue22679", argument92 : 58, argument93 : "stringValue22681", argument94 : false) + field20308(argument1003: InputObject467!): Object4648 @Directive35(argument89 : "stringValue22684", argument90 : false, argument91 : "stringValue22683", argument92 : 59, argument93 : "stringValue22685", argument94 : false) + field20309(argument1004: InputObject468!): Object4650 @Directive35(argument89 : "stringValue22688", argument90 : true, argument91 : "stringValue22687", argument92 : 60, argument93 : "stringValue22689", argument94 : false) + field20312(argument1005: InputObject469!): Object4651 @Directive35(argument89 : "stringValue22694", argument90 : false, argument91 : "stringValue22693", argument92 : 61, argument93 : "stringValue22695", argument94 : false) + field20316(argument1006: InputObject470!): Object4652 @Directive35(argument89 : "stringValue22700", argument90 : false, argument91 : "stringValue22699", argument92 : 62, argument93 : "stringValue22701", argument94 : false) + field20319(argument1007: InputObject471!): Object4653 @Directive35(argument89 : "stringValue22706", argument90 : false, argument91 : "stringValue22705", argument92 : 63, argument93 : "stringValue22707", argument94 : false) + field20363(argument1008: InputObject472!): Object4657 @Directive35(argument89 : "stringValue22718", argument90 : true, argument91 : "stringValue22717", argument92 : 64, argument93 : "stringValue22719", argument94 : false) + field20365(argument1009: InputObject473!): Object4658 @Directive35(argument89 : "stringValue22724", argument90 : true, argument91 : "stringValue22723", argument92 : 65, argument93 : "stringValue22725", argument94 : false) + field20370(argument1010: InputObject475!): Object4659 @Directive35(argument89 : "stringValue22731", argument90 : true, argument91 : "stringValue22730", argument92 : 66, argument93 : "stringValue22732", argument94 : false) + field20385(argument1011: InputObject477!): Object4661 @Directive35(argument89 : "stringValue22740", argument90 : true, argument91 : "stringValue22739", argument92 : 67, argument93 : "stringValue22741", argument94 : false) + field20387(argument1012: InputObject478!): Object4648 @Directive35(argument89 : "stringValue22746", argument90 : true, argument91 : "stringValue22745", argument92 : 68, argument93 : "stringValue22747", argument94 : false) + field20388(argument1013: InputObject479!): Object4658 @Directive35(argument89 : "stringValue22750", argument90 : false, argument91 : "stringValue22749", argument92 : 69, argument93 : "stringValue22751", argument94 : false) + field20389(argument1014: InputObject481!): Object4662 @Directive35(argument89 : "stringValue22757", argument90 : true, argument91 : "stringValue22756", argument92 : 70, argument93 : "stringValue22758", argument94 : false) +} + +type Object4643 @Directive21(argument61 : "stringValue22649") @Directive44(argument97 : ["stringValue22648"]) { + field20245: [Object4644] +} + +type Object4644 @Directive21(argument61 : "stringValue22651") @Directive44(argument97 : ["stringValue22650"]) { + field20246: Scalar2 + field20247: Enum1041 + field20248: Scalar2 + field20249: Enum1041 + field20250: Scalar2 + field20251: Enum1042 + field20252: Scalar2 + field20253: Scalar2 + field20254: Int + field20255: String + field20256: String + field20257: String + field20258: Boolean + field20259: Scalar1 + field20260: Boolean + field20261: Scalar4 + field20262: Scalar4 + field20263: Scalar4 + field20264: Scalar4 + field20265: Scalar4 + field20266: Scalar4 + field20267: [Enum1043] + field20268: Boolean + field20269: Boolean + field20270: Boolean + field20271: Boolean + field20272: Boolean + field20273: Boolean + field20274: Boolean + field20275: Boolean + field20276: [Enum1044] +} + +type Object4645 @Directive21(argument61 : "stringValue22664") @Directive44(argument97 : ["stringValue22663"]) { + field20278: Object4646! +} + +type Object4646 @Directive21(argument61 : "stringValue22666") @Directive44(argument97 : ["stringValue22665"]) { + field20279: Scalar2 + field20280: String + field20281: Object4647 + field20283: Boolean + field20284: Enum1046 + field20285: Enum1045 + field20286: Scalar2 + field20287: Object4647 +} + +type Object4647 @Directive21(argument61 : "stringValue22668") @Directive44(argument97 : ["stringValue22667"]) { + field20282: String! +} + +type Object4648 @Directive21(argument61 : "stringValue22676") @Directive44(argument97 : ["stringValue22675"]) { + field20289: Object4649 +} + +type Object4649 @Directive21(argument61 : "stringValue22678") @Directive44(argument97 : ["stringValue22677"]) { + field20290: Scalar2 + field20291: String + field20292: String + field20293: String + field20294: Int + field20295: Scalar2 + field20296: Int + field20297: Int + field20298: String + field20299: [Int] + field20300: String + field20301: Int + field20302: Int + field20303: Int + field20304: String + field20305: Enum1047 + field20306: String +} + +type Object465 @Directive22(argument62 : "stringValue1556") @Directive31 @Directive44(argument97 : ["stringValue1557", "stringValue1558"]) { + field2562: String! + field2563: Object466 + field2574: Object468 + field2576: Object469 + field2580: String + field2581: Enum151 + field2582: Object470 + field2585: Object471 + field2587: Scalar2 + field2588: [Object470] +} + +type Object4650 @Directive21(argument61 : "stringValue22692") @Directive44(argument97 : ["stringValue22691"]) { + field20310: Scalar2 @deprecated + field20311: Boolean @deprecated +} + +type Object4651 @Directive21(argument61 : "stringValue22698") @Directive44(argument97 : ["stringValue22697"]) { + field20313: String + field20314: String + field20315: String +} + +type Object4652 @Directive21(argument61 : "stringValue22704") @Directive44(argument97 : ["stringValue22703"]) { + field20317: String + field20318: String +} + +type Object4653 @Directive21(argument61 : "stringValue22710") @Directive44(argument97 : ["stringValue22709"]) { + field20320: Object4654 + field20322: [Object4655] +} + +type Object4654 @Directive21(argument61 : "stringValue22712") @Directive44(argument97 : ["stringValue22711"]) { + field20321: Scalar2 +} + +type Object4655 @Directive21(argument61 : "stringValue22714") @Directive44(argument97 : ["stringValue22713"]) { + field20323: Object4656 +} + +type Object4656 @Directive21(argument61 : "stringValue22716") @Directive44(argument97 : ["stringValue22715"]) { + field20324: Scalar2 + field20325: String + field20326: String + field20327: String + field20328: Scalar2 + field20329: Scalar2 + field20330: String + field20331: String + field20332: Boolean + field20333: String + field20334: String + field20335: String + field20336: Float + field20337: Float + field20338: Float + field20339: Float + field20340: String + field20341: Int + field20342: Boolean + field20343: Scalar2 + field20344: String + field20345: Int + field20346: String + field20347: Scalar2 + field20348: String + field20349: String + field20350: String + field20351: String + field20352: String + field20353: String + field20354: String + field20355: String + field20356: Boolean + field20357: Int + field20358: Scalar2 + field20359: Int + field20360: Boolean + field20361: String + field20362: Boolean +} + +type Object4657 @Directive21(argument61 : "stringValue22722") @Directive44(argument97 : ["stringValue22721"]) { + field20364: [Object4649] +} + +type Object4658 @Directive21(argument61 : "stringValue22729") @Directive44(argument97 : ["stringValue22728"]) { + field20366: Boolean! + field20367: Scalar2 + field20368: Scalar1 + field20369: [String] +} + +type Object4659 @Directive21(argument61 : "stringValue22736") @Directive44(argument97 : ["stringValue22735"]) { + field20371: Scalar2 + field20372: Int + field20373: Int + field20374: [Int] + field20375: [Object4660] +} + +type Object466 @Directive22(argument62 : "stringValue1559") @Directive31 @Directive44(argument97 : ["stringValue1560", "stringValue1561"]) { + field2564: Boolean! + field2565: [Object467!]! +} + +type Object4660 @Directive21(argument61 : "stringValue22738") @Directive44(argument97 : ["stringValue22737"]) { + field20376: Int + field20377: [String] @deprecated + field20378: String + field20379: String @deprecated + field20380: String + field20381: String @deprecated + field20382: String + field20383: Boolean + field20384: Boolean +} + +type Object4661 @Directive21(argument61 : "stringValue22744") @Directive44(argument97 : ["stringValue22743"]) { + field20386: Scalar2! +} + +type Object4662 @Directive21(argument61 : "stringValue22761") @Directive44(argument97 : ["stringValue22760"]) { + field20390: Object4663! +} + +type Object4663 @Directive21(argument61 : "stringValue22763") @Directive44(argument97 : ["stringValue22762"]) { + field20391: Scalar2! + field20392: Scalar4 + field20393: String! + field20394: Object4664! + field21031: Object4697! + field22273: Object4698! + field22274: String + field22275: Int + field22276: String +} + +type Object4664 @Directive21(argument61 : "stringValue22765") @Directive44(argument97 : ["stringValue22764"]) { + field20395: Scalar2 + field20396: String + field20397: String + field20398: String + field20399: Scalar2 + field20400: Scalar2 + field20401: Scalar2 + field20402: String + field20403: String + field20404: String + field20405: String + field20406: String + field20407: Object4665 + field20449: Scalar2 + field20450: Object4670 + field21000: [Object4696] + field21010: Scalar2 + field21011: Scalar2 + field21012: Scalar2 + field21013: Boolean + field21014: Scalar2 + field21015: String + field21016: Scalar2 + field21017: Object4697 + field21018: String + field21019: String + field21020: Int + field21021: String + field21022: String + field21023: String + field21024: Boolean + field21025: Boolean + field21026: Boolean + field21027: Object4665 + field21028: Boolean + field21029: String + field21030: Scalar2 +} + +type Object4665 @Directive21(argument61 : "stringValue22767") @Directive44(argument97 : ["stringValue22766"]) { + field20408: Scalar2 + field20409: String + field20410: String + field20411: [String] + field20412: String + field20413: String + field20414: String + field20415: String + field20416: String + field20417: [String] + field20418: String + field20419: Object4666 + field20426: String + field20427: Object4668 + field20431: Boolean + field20432: String + field20433: String + field20434: Boolean + field20435: String + field20436: String + field20437: String + field20438: Int + field20439: String + field20440: String + field20441: String + field20442: Object4669 + field20445: String + field20446: Boolean + field20447: String + field20448: Boolean +} + +type Object4666 @Directive21(argument61 : "stringValue22769") @Directive44(argument97 : ["stringValue22768"]) { + field20420: Scalar2 + field20421: [Object4667] +} + +type Object4667 @Directive21(argument61 : "stringValue22771") @Directive44(argument97 : ["stringValue22770"]) { + field20422: Scalar2 + field20423: Scalar2 + field20424: String + field20425: Scalar2 +} + +type Object4668 @Directive21(argument61 : "stringValue22773") @Directive44(argument97 : ["stringValue22772"]) { + field20428: Scalar2 + field20429: Boolean + field20430: Boolean +} + +type Object4669 @Directive21(argument61 : "stringValue22775") @Directive44(argument97 : ["stringValue22774"]) { + field20443: String + field20444: String +} + +type Object467 @Directive22(argument62 : "stringValue1562") @Directive31 @Directive44(argument97 : ["stringValue1563", "stringValue1564"]) { + field2566: Boolean + field2567: String + field2568: String + field2569: String + field2570: Scalar2 + field2571: Scalar2 + field2572: Boolean + field2573: Boolean +} + +type Object4670 @Directive21(argument61 : "stringValue22777") @Directive44(argument97 : ["stringValue22776"]) { + field20451: Scalar2 + field20452: String + field20453: String + field20454: String + field20455: Scalar2 + field20456: Int + field20457: Int + field20458: Scalar2 + field20459: Scalar2 + field20460: Scalar2 + field20461: String + field20462: String + field20463: String + field20464: String + field20465: String + field20466: Float + field20467: Int + field20468: String + field20469: String + field20470: [Object4664] + field20471: Object4698 + field20472: Boolean + field20473: Boolean + field20474: Object4697 + field20475: Boolean + field20476: Boolean + field20477: Boolean + field20478: Boolean + field20479: Boolean + field20480: Boolean + field20481: Boolean + field20482: Boolean + field20483: Boolean + field20484: String + field20485: Boolean + field20486: String + field20487: String + field20488: String + field20489: String + field20490: Object4665 + field20491: [Object4671] + field20805: String + field20806: String + field20807: String + field20808: [Object4672] + field20809: Object4679 + field20810: String + field20811: String + field20812: Boolean + field20813: String + field20814: String + field20815: String + field20816: String + field20817: Scalar2 + field20818: String + field20819: Scalar2 + field20820: Int + field20821: Scalar2 + field20822: [Scalar2] + field20823: Scalar2 + field20824: Boolean + field20825: [Object4665] + field20826: [Object4665] + field20827: [Object4665] + field20828: Boolean + field20829: Boolean + field20830: Boolean @deprecated + field20831: Boolean + field20832: String + field20833: Object4702 + field20834: Boolean + field20835: Boolean + field20836: Int + field20837: String + field20838: String + field20839: [Object4671] + field20840: String + field20841: String + field20842: [String] + field20843: [Object4665] + field20844: Boolean + field20845: [Object4664] + field20846: Object4688 + field20858: Boolean + field20859: Boolean @deprecated + field20860: Boolean @deprecated + field20861: Boolean @deprecated + field20862: Boolean @deprecated + field20863: Int + field20864: Boolean + field20865: Boolean + field20866: Scalar1 + field20867: Scalar2 + field20868: Scalar2 + field20869: Int + field20870: Boolean + field20871: Boolean + field20872: String + field20873: String + field20874: [Object4671] + field20875: [Object4664] + field20876: [Object4665] + field20877: String + field20878: Float + field20879: Object4689 + field20905: [Scalar2] + field20906: [Object4671] + field20907: [Object4690] + field20940: Scalar2 + field20941: Object4698 + field20942: String + field20943: Object4664 + field20944: String + field20945: String + field20946: Object4692 + field20950: Int + field20951: Scalar2 + field20952: [String] + field20953: String + field20954: Object4693 + field20983: Boolean + field20984: [Object4689] + field20985: String + field20986: Object4693 + field20987: String + field20988: Boolean + field20989: Int + field20990: [Object4664] + field20991: [Object4664] + field20992: [Object4664] + field20993: String + field20994: String + field20995: String + field20996: String + field20997: Boolean + field20998: String + field20999: String +} + +type Object4671 @Directive21(argument61 : "stringValue22779") @Directive44(argument97 : ["stringValue22778"]) { + field20492: Scalar2 + field20493: String + field20494: String + field20495: String + field20496: Scalar2 + field20497: Scalar2 + field20498: String + field20499: String + field20500: String + field20501: Int + field20502: Scalar2 + field20503: Object4672 + field20794: String + field20795: Object4670 + field20796: String + field20797: String + field20798: String + field20799: Int + field20800: Boolean + field20801: Boolean + field20802: Boolean + field20803: Boolean + field20804: Boolean +} + +type Object4672 @Directive21(argument61 : "stringValue22781") @Directive44(argument97 : ["stringValue22780"]) { + field20504: Scalar2 + field20505: String + field20506: String + field20507: String + field20508: Int @deprecated + field20509: String + field20510: String + field20511: Int @deprecated + field20512: Scalar2 + field20513: Scalar2 + field20514: Scalar2 + field20515: Object4673 + field20777: Object4698 + field20778: Object4675 + field20779: String + field20780: String + field20781: String + field20782: String + field20783: String + field20784: String + field20785: String + field20786: String + field20787: Object4675 + field20788: String + field20789: String + field20790: String + field20791: String + field20792: Int + field20793: Int +} + +type Object4673 @Directive21(argument61 : "stringValue22783") @Directive44(argument97 : ["stringValue22782"]) { + field20516: Scalar2 + field20517: String + field20518: String + field20519: String + field20520: String + field20521: Scalar2 + field20522: Scalar2 + field20523: String + field20524: Int + field20525: Float + field20526: Float + field20527: Int + field20528: Int + field20529: Scalar2 @deprecated + field20530: Scalar2 + field20531: Scalar2 + field20532: Scalar2 + field20533: Object4674 + field20647: Object4675 + field20648: Object4697 + field20649: Boolean + field20650: String + field20651: String + field20652: [Object4680] + field20679: [Object4681] + field20680: String + field20681: [String] + field20682: [String] + field20683: Object4680 + field20684: [Object4682] + field20702: [Object4682] + field20703: [Object4682] + field20704: [Object4682] + field20705: Float + field20706: Float + field20707: Object4684 + field20717: [Object4679] + field20718: [Object4679] + field20719: Float + field20720: String + field20721: String + field20722: String + field20723: String + field20724: [Object4681] + field20725: [Object4681] + field20726: [Int] + field20727: [Object4679] + field20728: Object4679 + field20729: Boolean + field20730: String + field20731: Object4680 + field20732: [Object4686] + field20742: [Object4682] + field20743: String + field20744: [Object4687] @deprecated + field20766: [Object4687] @deprecated + field20767: [Object4687] @deprecated + field20768: Object4687 + field20769: Object4687 + field20770: Scalar2 + field20771: Object4687 + field20772: Int + field20773: Int + field20774: Int + field20775: String + field20776: [Object4682] @deprecated +} + +type Object4674 @Directive21(argument61 : "stringValue22785") @Directive44(argument97 : ["stringValue22784"]) { + field20534: Scalar2 + field20535: String + field20536: String + field20537: String + field20538: String + field20539: Float + field20540: Float + field20541: Int + field20542: String + field20543: Int + field20544: String + field20545: String + field20546: [Object4673] + field20547: [Object4675] + field20580: [Object4697] + field20581: [Object4677] + field20600: Scalar2 + field20601: String + field20602: String + field20603: String + field20604: String + field20605: Boolean + field20606: String + field20607: Int + field20608: Int + field20609: String + field20610: [Object4679] + field20643: String + field20644: Boolean + field20645: String + field20646: String +} + +type Object4675 @Directive21(argument61 : "stringValue22787") @Directive44(argument97 : ["stringValue22786"]) { + field20548: Scalar2 + field20549: String + field20550: String + field20551: String + field20552: Float + field20553: Float + field20554: String + field20555: String + field20556: String + field20557: String + field20558: String + field20559: String + field20560: String + field20561: String + field20562: String + field20563: String + field20564: Scalar2 + field20565: [Object4676] + field20574: Object4674 + field20575: String + field20576: String + field20577: String + field20578: Scalar2 + field20579: Object4697 +} + +type Object4676 @Directive21(argument61 : "stringValue22789") @Directive44(argument97 : ["stringValue22788"]) { + field20566: Scalar2 + field20567: String + field20568: String + field20569: String + field20570: String + field20571: String + field20572: Scalar2 + field20573: Object4675 +} + +type Object4677 @Directive21(argument61 : "stringValue22791") @Directive44(argument97 : ["stringValue22790"]) { + field20582: Scalar2 + field20583: String + field20584: String + field20585: Scalar2 + field20586: Scalar2 + field20587: String + field20588: Scalar2 + field20589: Object4678 + field20598: Object4697 + field20599: Object4674 +} + +type Object4678 @Directive21(argument61 : "stringValue22793") @Directive44(argument97 : ["stringValue22792"]) { + field20590: Scalar2 + field20591: String + field20592: String + field20593: String + field20594: String + field20595: Int + field20596: Boolean + field20597: [Object4677] +} + +type Object4679 @Directive21(argument61 : "stringValue22795") @Directive44(argument97 : ["stringValue22794"]) { + field20611: Scalar2 + field20612: String + field20613: String + field20614: String + field20615: String + field20616: String + field20617: String + field20618: String + field20619: String + field20620: Int + field20621: [Int] + field20622: Int + field20623: String + field20624: String + field20625: Int + field20626: String + field20627: String + field20628: String + field20629: Int + field20630: Int + field20631: Int + field20632: String + field20633: String + field20634: String + field20635: String + field20636: String + field20637: String + field20638: Boolean + field20639: String + field20640: String + field20641: String + field20642: String +} + +type Object468 @Directive22(argument62 : "stringValue1565") @Directive31 @Directive44(argument97 : ["stringValue1566", "stringValue1567"]) { + field2575: Boolean! +} + +type Object4680 @Directive21(argument61 : "stringValue22797") @Directive44(argument97 : ["stringValue22796"]) { + field20653: Scalar2 + field20654: String + field20655: String + field20656: Scalar2 + field20657: String + field20658: String + field20659: String + field20660: String + field20661: String + field20662: String + field20663: String + field20664: String + field20665: String + field20666: String + field20667: Object4673 + field20668: [String] + field20669: [Object4681] + field20676: String + field20677: Scalar2 + field20678: [String] +} + +type Object4681 @Directive21(argument61 : "stringValue22799") @Directive44(argument97 : ["stringValue22798"]) { + field20670: Scalar2 + field20671: String + field20672: String + field20673: Scalar2 + field20674: String + field20675: String +} + +type Object4682 @Directive21(argument61 : "stringValue22801") @Directive44(argument97 : ["stringValue22800"]) { + field20685: Scalar2 + field20686: String + field20687: String + field20688: Scalar2 + field20689: String + field20690: Int + field20691: String + field20692: String + field20693: Object4673 + field20694: [Object4683] + field20701: [Object4679] +} + +type Object4683 @Directive21(argument61 : "stringValue22803") @Directive44(argument97 : ["stringValue22802"]) { + field20695: Scalar2 + field20696: String + field20697: String + field20698: Scalar2 + field20699: Int + field20700: Object4682 +} + +type Object4684 @Directive21(argument61 : "stringValue22805") @Directive44(argument97 : ["stringValue22804"]) { + field20708: Scalar2 + field20709: String + field20710: String + field20711: Int + field20712: Scalar2 + field20713: Object4665 + field20714: Object4685 +} + +type Object4685 @Directive21(argument61 : "stringValue22807") @Directive44(argument97 : ["stringValue22806"]) { + field20715: Scalar2 + field20716: Scalar2 +} + +type Object4686 @Directive21(argument61 : "stringValue22809") @Directive44(argument97 : ["stringValue22808"]) { + field20733: Scalar2 + field20734: Scalar2 + field20735: Scalar2 + field20736: String + field20737: String + field20738: String + field20739: String + field20740: String + field20741: String +} + +type Object4687 @Directive21(argument61 : "stringValue22811") @Directive44(argument97 : ["stringValue22810"]) { + field20745: Scalar2 + field20746: String + field20747: String + field20748: String + field20749: Scalar2 + field20750: String + field20751: Int + field20752: Int + field20753: Int + field20754: Int + field20755: Int + field20756: Int + field20757: Int + field20758: String + field20759: String + field20760: String + field20761: Object4673 @deprecated + field20762: Scalar2 + field20763: Object4697 + field20764: [Object4679] + field20765: [Object4679] +} + +type Object4688 @Directive21(argument61 : "stringValue22813") @Directive44(argument97 : ["stringValue22812"]) { + field20847: String + field20848: Object4697 + field20849: Object4670 + field20850: Boolean + field20851: Int + field20852: String + field20853: String + field20854: Int + field20855: Boolean + field20856: Boolean + field20857: Boolean +} + +type Object4689 @Directive21(argument61 : "stringValue22815") @Directive44(argument97 : ["stringValue22814"]) { + field20880: Scalar2 + field20881: String + field20882: String + field20883: String + field20884: Scalar2 + field20885: Scalar2 + field20886: Int + field20887: Int + field20888: Int + field20889: Scalar2 + field20890: Scalar2 + field20891: Scalar2 + field20892: String + field20893: Int + field20894: Int + field20895: Int + field20896: Boolean + field20897: String + field20898: Object4697 + field20899: Object4665 + field20900: String + field20901: String + field20902: Scalar2 + field20903: Boolean + field20904: String +} + +type Object469 @Directive22(argument62 : "stringValue1568") @Directive31 @Directive44(argument97 : ["stringValue1569", "stringValue1570"]) { + field2577: Boolean + field2578: Boolean + field2579: Boolean +} + +type Object4690 @Directive21(argument61 : "stringValue22817") @Directive44(argument97 : ["stringValue22816"]) { + field20908: Scalar2 + field20909: Scalar2 + field20910: Object4698 + field20911: Object4670 + field20912: Scalar2 + field20913: String + field20914: Object4689 + field20915: String + field20916: String + field20917: String + field20918: Scalar2 + field20919: Object4691 +} + +type Object4691 @Directive21(argument61 : "stringValue22819") @Directive44(argument97 : ["stringValue22818"]) { + field20920: Scalar2 + field20921: String + field20922: String + field20923: String + field20924: Scalar2 + field20925: String + field20926: Scalar2 + field20927: Scalar2 + field20928: [Object4690] + field20929: Object4665 + field20930: Object4697 + field20931: Object4698 + field20932: String + field20933: [Scalar2] + field20934: [Scalar2] + field20935: [Scalar2] + field20936: Int + field20937: String + field20938: Object4697 + field20939: Object4690 +} + +type Object4692 @Directive21(argument61 : "stringValue22821") @Directive44(argument97 : ["stringValue22820"]) { + field20947: Float + field20948: String + field20949: String +} + +type Object4693 @Directive21(argument61 : "stringValue22823") @Directive44(argument97 : ["stringValue22822"]) { + field20955: Object4694 + field20959: Object4694 + field20960: Object4694 + field20961: Object4694 + field20962: Object4694 + field20963: Object4694 + field20964: Object4694 + field20965: Object4694 + field20966: String + field20967: String + field20968: Float + field20969: String + field20970: Float + field20971: Float + field20972: Object4694 + field20973: Object4694 + field20974: Object4694 + field20975: Object4694 + field20976: Object4694 + field20977: Object4694 + field20978: Object4694 + field20979: Object4695 +} + +type Object4694 @Directive21(argument61 : "stringValue22825") @Directive44(argument97 : ["stringValue22824"]) { + field20956: Scalar2 + field20957: Scalar2 + field20958: Scalar2 +} + +type Object4695 @Directive21(argument61 : "stringValue22827") @Directive44(argument97 : ["stringValue22826"]) { + field20980: Int + field20981: Int + field20982: Int +} + +type Object4696 @Directive21(argument61 : "stringValue22829") @Directive44(argument97 : ["stringValue22828"]) { + field21001: Scalar2 + field21002: Scalar2 + field21003: Int + field21004: Boolean + field21005: Boolean + field21006: Scalar2 + field21007: Scalar2 + field21008: String + field21009: String +} + +type Object4697 @Directive21(argument61 : "stringValue22831") @Directive44(argument97 : ["stringValue22830"]) { + field21032: Scalar2 + field21033: String + field21034: String + field21035: String + field21036: String + field21037: Int + field21038: Int + field21039: Int + field21040: Int @deprecated + field21041: Scalar2 @deprecated + field21042: Scalar2 + field21043: Scalar2 + field21044: String + field21045: Int + field21046: Int + field21047: Int + field21048: String + field21049: Float + field21050: Int + field21051: String + field21052: String + field21053: Int + field21054: String + field21055: String + field21056: Int + field21057: Int + field21058: String + field21059: Int + field21060: [Object4698] + field21567: [Object7225] + field21568: [Object4673] + field21569: Object4674 + field21570: Object4728 + field21581: Object4684 + field21582: [Object4729] + field21621: Int + field21622: [Object4729] + field21623: [Object4679] + field21624: [Object4679] + field21625: [Object4729] + field21626: [Object4679] + field21627: [Object4679] + field21628: Scalar2 + field21629: Scalar2 @deprecated + field21630: Object4733 + field21633: Float + field21634: Float + field21635: String + field21636: Boolean + field21637: String + field21638: String + field21639: String + field21640: String + field21641: Boolean + field21642: String + field21643: String + field21644: String @deprecated + field21645: String + field21646: String @deprecated + field21647: String @deprecated + field21648: String @deprecated + field21649: String + field21650: Boolean + field21651: Scalar2 + field21652: String + field21653: Float + field21654: String + field21655: String + field21656: Boolean + field21657: [Object4677] + field21658: [String] + field21659: [String] + field21660: [Int] + field21661: [Int] @deprecated + field21662: Float + field21663: String + field21664: Object7225 + field21665: Boolean + field21666: Boolean + field21667: Boolean + field21668: Object4734 + field21676: Int + field21677: String + field21678: String + field21679: Float + field21680: [Object4700] + field21681: Object4735 @deprecated + field21688: [Object4736] + field21695: [Object4679] + field21696: [Object4679] + field21697: Object4700 + field21698: [String] + field21699: [Object4718] + field21700: [Object4737] @deprecated + field21706: Boolean + field21707: Boolean + field21708: [Object4700] + field21709: Boolean + field21710: [Object4691] + field21711: [Object4738] @deprecated + field21719: [Object4714] @deprecated + field21720: Boolean + field21721: Float + field21722: Boolean + field21723: Boolean + field21724: Boolean @deprecated + field21725: Boolean + field21726: Boolean + field21727: Scalar2 + field21728: Int + field21729: Int + field21730: Boolean + field21731: [Object4679] + field21732: [Object4679] + field21733: [Object4679] + field21734: [Object4679] + field21735: Object4665 @deprecated + field21736: Object4705 + field21737: [Object4729] + field21738: [Object4729] + field21739: [Object4729] + field21740: [Object4729] + field21741: Boolean + field21742: Boolean + field21743: Int + field21744: [Object4660] + field21745: Boolean + field21746: Boolean + field21747: [Object4673] + field21748: Boolean + field21749: Boolean + field21750: String + field21751: Object4668 + field21752: [Object4735] + field21753: String + field21754: Object4739 + field21787: Boolean + field21788: Boolean + field21789: [Object4707] + field21790: Int + field21791: Int + field21792: [Object4742] + field21796: Float + field21797: Float + field21798: Object4679 + field21799: Boolean + field21800: [Object4719] + field21801: Object4719 + field21802: [Object4710] + field21803: [Object4743] + field21807: Boolean + field21808: Float + field21809: String + field21810: Object7225 + field21811: [Object4744] + field21876: Int + field21877: String + field21878: Boolean + field21879: [Object4729] + field21880: [Object4729] + field21881: String + field21882: Boolean + field21883: String + field21884: Scalar2 + field21885: String + field21886: String + field21887: Boolean + field21888: Boolean + field21889: Boolean + field21890: Object4744 + field21891: [Object4679] + field21892: [Object4679] + field21893: [Object4729] + field21894: Float + field21895: String + field21896: Boolean + field21897: String + field21898: Object4679 + field21899: Object4679 + field21900: [Object4679] + field21901: [Object4679] + field21902: [Object4679] + field21903: [Object4679] + field21904: [Object4670] + field21905: [Object4670] + field21906: Boolean + field21907: Object4747 + field22014: [Object4679] + field22015: Object4675 + field22016: Boolean + field22017: String + field22018: Boolean + field22019: String @deprecated + field22020: Object4688 + field22021: Boolean + field22022: Boolean + field22023: Int + field22024: Int + field22025: Scalar1 + field22026: Scalar1 + field22027: Object4679 + field22028: [Object4729] + field22029: [Object4729] + field22030: [Object4679] + field22031: [Object4729] + field22032: [Object4679] + field22033: [Object4729] + field22034: [Object4679] + field22035: [Object4729] + field22036: Object7225 + field22037: Boolean + field22038: Float + field22039: [Object4738] @deprecated + field22040: Boolean + field22041: Boolean + field22042: [Object4698] + field22043: Boolean + field22044: Object4738 @deprecated + field22045: [Object4738] @deprecated + field22046: String @deprecated + field22047: String + field22048: Boolean + field22049: [Object4738] @deprecated + field22050: Boolean + field22051: Float + field22052: String + field22053: Int + field22054: Object4748 + field22058: Object4749 + field22078: [Object4677] + field22079: [Object4707] + field22080: [Object4707] + field22081: Int + field22082: Object4698 + field22083: [Object4673] + field22084: [Object4707] + field22085: [Object4698] + field22086: String + field22087: [Object4750] + field22125: Float + field22126: Object4720 + field22127: Object4755 + field22172: [Object4718] + field22173: String + field22174: [Object4759] + field22181: Scalar2 + field22182: Boolean + field22183: Boolean + field22184: String + field22185: [Object4682] + field22186: Int + field22187: Boolean + field22188: String + field22189: [Object4729] + field22190: [Object4729] + field22191: [Object4729] + field22192: [Object4729] + field22193: [Object4729] + field22194: [Object4729] + field22195: [Object4707] + field22196: [Object4760] + field22239: [Object4760] + field22240: Float + field22241: String + field22242: String + field22243: String + field22244: Scalar2 + field22245: Object4665 + field22246: Int + field22247: Boolean + field22248: Boolean + field22249: Object4763 + field22257: Boolean + field22258: Boolean + field22259: [String] + field22260: Boolean + field22261: [Object4738] + field22262: [Scalar2] + field22263: Boolean + field22264: [Object4717] + field22265: Boolean + field22266: Int + field22267: String + field22268: Boolean + field22269: [Object4729] + field22270: Boolean + field22271: Boolean + field22272: String +} + +type Object4698 @Directive21(argument61 : "stringValue22833") @Directive44(argument97 : ["stringValue22832"]) { + field21061: Scalar2 + field21062: String + field21063: String + field21064: String + field21065: String + field21066: String + field21067: Scalar2 + field21068: Int + field21069: Int + field21070: [Scalar2] + field21071: Float + field21072: Int + field21073: Object4697 + field21074: [Object4672] + field21075: Scalar2 + field21076: Boolean + field21077: Boolean + field21078: Boolean + field21079: [Object4665] + field21080: String + field21081: Boolean + field21082: Int + field21083: String + field21084: Boolean + field21085: Int + field21086: Int + field21087: String + field21088: Int + field21089: String + field21090: String + field21091: Boolean + field21092: [Object4699] + field21403: Boolean + field21404: Scalar2 + field21405: Object4717 + field21422: Float + field21423: String + field21424: [Object4670] + field21425: [Object4670] + field21426: String + field21427: String + field21428: Boolean + field21429: Scalar2 + field21430: String + field21431: Scalar2 + field21432: Float + field21433: String + field21434: Boolean + field21435: [Object4665] + field21436: Scalar2 + field21437: Float + field21438: String + field21439: Object4718 + field21463: Boolean + field21464: Boolean + field21465: Boolean + field21466: Float + field21467: Int + field21468: Object4719 + field21478: Boolean + field21479: [Object4672] + field21480: String + field21481: Object4689 + field21482: Int + field21483: Boolean + field21484: Boolean + field21485: [String] + field21486: String + field21487: Object4691 + field21488: [Object4690] + field21489: String + field21490: String + field21491: String + field21492: Float + field21493: String + field21494: Int + field21495: Int + field21496: Int + field21497: Int + field21498: Int + field21499: String + field21500: String + field21501: Boolean + field21502: Boolean + field21503: Boolean + field21504: Boolean + field21505: [Object4670] + field21506: [Object4670] + field21507: Boolean + field21508: [Object4700] + field21509: [Scalar2] + field21510: Scalar2 + field21511: Object4665 + field21512: Object4720 + field21533: Float + field21534: Int + field21535: Int + field21536: Float + field21537: Object4720 + field21538: Object4727 + field21546: String + field21547: String + field21548: String + field21549: Boolean + field21550: Int + field21551: Int + field21552: String + field21553: Int + field21554: Boolean + field21555: Boolean + field21556: String + field21557: Object4679 + field21558: String + field21559: Scalar2 + field21560: Object4665 + field21561: Boolean + field21562: Int + field21563: Boolean + field21564: String + field21565: Int + field21566: Int +} + +type Object4699 @Directive21(argument61 : "stringValue22835") @Directive44(argument97 : ["stringValue22834"]) { + field21093: Scalar2 + field21094: String + field21095: String + field21096: String + field21097: Scalar2 + field21098: Scalar2 + field21099: Scalar2 + field21100: Object4665 + field21101: Object4697 + field21102: Object4698 + field21103: Object4700 +} + +type Object47 @Directive21(argument61 : "stringValue245") @Directive44(argument97 : ["stringValue244"]) { + field267: Object48 + field274: Object48 + field275: Object48 +} + +type Object470 @Directive22(argument62 : "stringValue1574") @Directive31 @Directive44(argument97 : ["stringValue1575", "stringValue1576"]) { + field2583: String + field2584: Enum152 +} + +type Object4700 @Directive21(argument61 : "stringValue22837") @Directive44(argument97 : ["stringValue22836"]) { + field21104: Scalar2 + field21105: Scalar2 + field21106: Scalar2 + field21107: Scalar2 + field21108: Scalar2 + field21109: Scalar2 + field21110: String + field21111: String + field21112: String + field21113: Object4697 + field21114: Object4701 + field21125: Object4665 + field21126: [String] + field21127: [String] + field21128: String + field21129: Object4702 + field21339: Object4684 + field21340: Boolean + field21341: Boolean + field21342: Boolean + field21343: Boolean + field21344: Boolean + field21345: [Object4714] + field21358: Object4714 + field21359: Scalar2 + field21360: String + field21361: Boolean + field21362: Boolean + field21363: String + field21364: Object4715 + field21380: [String] + field21381: [Scalar2] + field21382: [Scalar2] + field21383: Boolean + field21384: [Object4699] + field21385: [Object4698] + field21386: [Object4698] + field21387: [Scalar2] + field21388: Boolean + field21389: Object4716 + field21398: [Object4716] + field21399: Scalar2 + field21400: [Object4714] + field21401: Boolean + field21402: Boolean +} + +type Object4701 @Directive21(argument61 : "stringValue22839") @Directive44(argument97 : ["stringValue22838"]) { + field21115: Scalar2 + field21116: Scalar2 + field21117: String + field21118: String + field21119: String + field21120: String + field21121: String + field21122: String + field21123: String + field21124: Object4700 +} + +type Object4702 @Directive21(argument61 : "stringValue22841") @Directive44(argument97 : ["stringValue22840"]) { + field21130: Scalar2 + field21131: Boolean + field21132: Boolean + field21133: Object4703 + field21144: Boolean + field21145: Boolean + field21146: Boolean + field21147: Boolean + field21148: Object4665 + field21149: Boolean + field21150: Boolean + field21151: Boolean + field21152: Boolean + field21153: Boolean + field21154: Boolean + field21155: Boolean + field21156: Boolean + field21157: Boolean + field21158: Boolean + field21159: Boolean + field21160: Boolean + field21161: Boolean + field21162: Boolean + field21163: [Object4697] + field21164: Int + field21165: Boolean + field21166: [Object4697] + field21167: Boolean + field21168: [Object4664] + field21169: Boolean + field21170: Boolean + field21171: Boolean + field21172: Boolean + field21173: Boolean + field21174: [Object4700] + field21175: Object4704 + field21279: [String] + field21280: Boolean + field21281: String + field21282: [Object4697] + field21283: Object4710 + field21293: [Object4697] + field21294: [Object4697] + field21295: [Object4711] + field21309: [Object4664] + field21310: [Object4670] + field21311: [Object4670] + field21312: Object4712 + field21321: Boolean + field21322: [Object4697] + field21323: Object4710 + field21324: Boolean + field21325: Boolean + field21326: Boolean + field21327: Boolean + field21328: [Object4713] + field21338: Boolean +} + +type Object4703 @Directive21(argument61 : "stringValue22843") @Directive44(argument97 : ["stringValue22842"]) { + field21134: Scalar2 + field21135: Scalar2 + field21136: Scalar2 + field21137: Scalar2 + field21138: Int + field21139: String + field21140: String + field21141: String + field21142: Boolean + field21143: Boolean +} + +type Object4704 @Directive21(argument61 : "stringValue22845") @Directive44(argument97 : ["stringValue22844"]) { + field21176: [Object4705] + field21275: Int + field21276: Int + field21277: Int + field21278: Int +} + +type Object4705 @Directive21(argument61 : "stringValue22847") @Directive44(argument97 : ["stringValue22846"]) { + field21177: Scalar2 + field21178: String + field21179: String + field21180: Scalar2 + field21181: Int + field21182: String + field21183: String + field21184: String + field21185: String + field21186: String + field21187: String + field21188: Scalar2 + field21189: String + field21190: Int + field21191: Scalar2 + field21192: String + field21193: Int @deprecated + field21194: String + field21195: Float + field21196: Int + field21197: Int + field21198: Float + field21199: Float + field21200: Float + field21201: Float + field21202: Int + field21203: Int + field21204: Int + field21205: Int + field21206: Scalar2 + field21207: Boolean + field21208: [Scalar2] + field21209: Object4697 + field21210: Object4665 + field21211: Object4674 + field21212: Object4665 + field21213: [Object4706] + field21220: [Object4697] + field21221: String + field21222: [Object4707] + field21234: Scalar2 + field21235: Scalar2 + field21236: [Int] + field21237: [Int] + field21238: String + field21239: String + field21240: [Object4708] + field21263: [Object4708] + field21264: [Object4709] + field21265: String + field21266: [Object4708] + field21267: [Object4708] + field21268: Int + field21269: Int + field21270: Int + field21271: Object4665 + field21272: Scalar2 + field21273: Scalar2 + field21274: [Object4660] +} + +type Object4706 @Directive21(argument61 : "stringValue22849") @Directive44(argument97 : ["stringValue22848"]) { + field21214: Scalar2 + field21215: String + field21216: String + field21217: Scalar2 + field21218: String + field21219: String +} + +type Object4707 @Directive21(argument61 : "stringValue22851") @Directive44(argument97 : ["stringValue22850"]) { + field21223: Scalar2 + field21224: String + field21225: String + field21226: Scalar2 + field21227: Int + field21228: Int + field21229: Int + field21230: Scalar2 + field21231: String + field21232: Object4665 + field21233: Object4697 +} + +type Object4708 @Directive21(argument61 : "stringValue22853") @Directive44(argument97 : ["stringValue22852"]) { + field21241: Scalar2 + field21242: String + field21243: String + field21244: Scalar2 + field21245: Scalar2 + field21246: Scalar2 + field21247: String + field21248: String + field21249: String + field21250: String + field21251: Boolean + field21252: Object4705 + field21253: Object4709 + field21262: Object4665 +} + +type Object4709 @Directive21(argument61 : "stringValue22855") @Directive44(argument97 : ["stringValue22854"]) { + field21254: Scalar2 + field21255: String + field21256: String + field21257: Int + field21258: String + field21259: String + field21260: String + field21261: String +} + +type Object471 @Directive22(argument62 : "stringValue1580") @Directive31 @Directive44(argument97 : ["stringValue1581", "stringValue1582"]) { + field2586: Enum153 +} + +type Object4710 @Directive21(argument61 : "stringValue22857") @Directive44(argument97 : ["stringValue22856"]) { + field21284: Scalar2 + field21285: String + field21286: String + field21287: String + field21288: Scalar2 + field21289: Scalar2 + field21290: Scalar2 + field21291: String + field21292: Object4665 +} + +type Object4711 @Directive21(argument61 : "stringValue22859") @Directive44(argument97 : ["stringValue22858"]) { + field21296: Scalar2 + field21297: Scalar2 + field21298: String + field21299: String + field21300: Scalar2 + field21301: Scalar2 + field21302: String + field21303: String + field21304: String + field21305: [String] + field21306: String + field21307: Object4665 + field21308: Object4702 +} + +type Object4712 @Directive21(argument61 : "stringValue22861") @Directive44(argument97 : ["stringValue22860"]) { + field21313: Scalar2 + field21314: Scalar2 + field21315: Scalar2 + field21316: Scalar2 + field21317: String + field21318: String + field21319: String + field21320: [Object4700] +} + +type Object4713 @Directive21(argument61 : "stringValue22863") @Directive44(argument97 : ["stringValue22862"]) { + field21329: Scalar2 + field21330: Scalar2 + field21331: Scalar2 + field21332: String + field21333: String + field21334: String + field21335: String + field21336: String + field21337: String +} + +type Object4714 @Directive21(argument61 : "stringValue22865") @Directive44(argument97 : ["stringValue22864"]) { + field21346: Scalar2 + field21347: String + field21348: String + field21349: String + field21350: String + field21351: Scalar2 + field21352: Object4700 + field21353: String @deprecated + field21354: Int + field21355: Int + field21356: Scalar2 + field21357: [Object4700] +} + +type Object4715 @Directive21(argument61 : "stringValue22867") @Directive44(argument97 : ["stringValue22866"]) { + field21365: Boolean + field21366: Boolean + field21367: Int + field21368: Int + field21369: Int + field21370: Int + field21371: Int + field21372: Int + field21373: Boolean + field21374: Boolean + field21375: Boolean + field21376: Boolean + field21377: Boolean + field21378: Boolean + field21379: Int +} + +type Object4716 @Directive21(argument61 : "stringValue22869") @Directive44(argument97 : ["stringValue22868"]) { + field21390: Scalar2 + field21391: Scalar2 + field21392: String + field21393: String + field21394: String + field21395: String + field21396: String + field21397: String +} + +type Object4717 @Directive21(argument61 : "stringValue22871") @Directive44(argument97 : ["stringValue22870"]) { + field21406: Scalar2 + field21407: Scalar2 + field21408: Int + field21409: String + field21410: String + field21411: String + field21412: String + field21413: Object4697 + field21414: [Object7225] + field21415: Object7225 + field21416: Object7225 + field21417: String + field21418: [Object4679] + field21419: [Object4679] + field21420: Boolean + field21421: Object4679 +} + +type Object4718 @Directive21(argument61 : "stringValue22873") @Directive44(argument97 : ["stringValue22872"]) { + field21440: Scalar2 + field21441: String + field21442: String + field21443: String + field21444: Scalar2 + field21445: String + field21446: String + field21447: Int + field21448: Int + field21449: Int + field21450: String + field21451: String + field21452: String + field21453: Boolean + field21454: String + field21455: Int + field21456: Int + field21457: [String] + field21458: [Int] + field21459: [Object4698] + field21460: Int + field21461: [Object4698] + field21462: Object4697 +} + +type Object4719 @Directive21(argument61 : "stringValue22875") @Directive44(argument97 : ["stringValue22874"]) { + field21469: Scalar2 + field21470: String + field21471: String + field21472: String + field21473: Scalar2 + field21474: String + field21475: String + field21476: Float + field21477: String +} + +type Object472 @Directive22(argument62 : "stringValue1586") @Directive31 @Directive44(argument97 : ["stringValue1587", "stringValue1588"]) { + field2590: Object466 + field2591: Scalar2 + field2592: String! + field2593: Enum151 + field2594: String + field2595: String + field2596: Object470 + field2597: String + field2598: [Object470] + field2599: Object471 + field2600: Boolean! + field2601: Boolean! + field2602: Int +} + +type Object4720 @Directive21(argument61 : "stringValue22877") @Directive44(argument97 : ["stringValue22876"]) { + field21513: Object4721 + field21518: Object4722 + field21520: Object4723 + field21526: Object4724 + field21529: Object4725 +} + +type Object4721 @Directive21(argument61 : "stringValue22879") @Directive44(argument97 : ["stringValue22878"]) { + field21514: Scalar2 + field21515: Scalar2 + field21516: Scalar2 + field21517: Scalar2 +} + +type Object4722 @Directive21(argument61 : "stringValue22881") @Directive44(argument97 : ["stringValue22880"]) { + field21519: Scalar2 +} + +type Object4723 @Directive21(argument61 : "stringValue22883") @Directive44(argument97 : ["stringValue22882"]) { + field21521: Int + field21522: Boolean + field21523: String + field21524: String + field21525: String +} + +type Object4724 @Directive21(argument61 : "stringValue22885") @Directive44(argument97 : ["stringValue22884"]) { + field21527: Int + field21528: Int +} + +type Object4725 @Directive21(argument61 : "stringValue22887") @Directive44(argument97 : ["stringValue22886"]) { + field21530: [Object4726] +} + +type Object4726 @Directive21(argument61 : "stringValue22889") @Directive44(argument97 : ["stringValue22888"]) { + field21531: Int + field21532: Int +} + +type Object4727 @Directive21(argument61 : "stringValue22891") @Directive44(argument97 : ["stringValue22890"]) { + field21539: Scalar2 + field21540: String + field21541: String + field21542: Scalar2 + field21543: String + field21544: String + field21545: Object4698 +} + +type Object4728 @Directive21(argument61 : "stringValue22893") @Directive44(argument97 : ["stringValue22892"]) { + field21571: Scalar2 + field21572: String + field21573: String + field21574: String + field21575: Float + field21576: Int + field21577: Scalar2 + field21578: Object4697 + field21579: Float + field21580: Float +} + +type Object4729 @Directive21(argument61 : "stringValue22895") @Directive44(argument97 : ["stringValue22894"]) { + field21583: Scalar2 + field21584: Object4679 + field21585: Object4730 +} + +type Object473 implements Interface46 @Directive22(argument62 : "stringValue7587") @Directive31 @Directive44(argument97 : ["stringValue7588", "stringValue7589"]) @Directive45(argument98 : ["stringValue7590"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object458! + field8330: Object1537 + field8332: [Object1536] + field8337: [Object502] @deprecated + field8338: String + field8339: Object457 +} + +type Object4730 @Directive21(argument61 : "stringValue22897") @Directive44(argument97 : ["stringValue22896"]) { + field21586: Scalar2 + field21587: String + field21588: String + field21589: String + field21590: Boolean + field21591: String + field21592: String + field21593: String + field21594: String + field21595: String + field21596: String + field21597: String + field21598: String + field21599: String + field21600: String + field21601: String + field21602: String + field21603: String + field21604: String + field21605: String + field21606: Scalar1 + field21607: Scalar1 + field21608: [Object4731] + field21618: [Object4731] + field21619: String + field21620: Float +} + +type Object4731 @Directive21(argument61 : "stringValue22899") @Directive44(argument97 : ["stringValue22898"]) { + field21609: String + field21610: [Object4732] + field21617: Object4732 +} + +type Object4732 @Directive21(argument61 : "stringValue22901") @Directive44(argument97 : ["stringValue22900"]) { + field21611: String + field21612: Scalar2 + field21613: String + field21614: String + field21615: String + field21616: String +} + +type Object4733 @Directive21(argument61 : "stringValue22903") @Directive44(argument97 : ["stringValue22902"]) { + field21631: String + field21632: Boolean +} + +type Object4734 @Directive21(argument61 : "stringValue22905") @Directive44(argument97 : ["stringValue22904"]) { + field21669: String + field21670: String + field21671: String + field21672: String + field21673: String + field21674: String + field21675: Int +} + +type Object4735 @Directive21(argument61 : "stringValue22907") @Directive44(argument97 : ["stringValue22906"]) { + field21682: Scalar2 + field21683: Scalar2 + field21684: Scalar1 + field21685: String + field21686: Scalar1 + field21687: Scalar1 +} + +type Object4736 @Directive21(argument61 : "stringValue22909") @Directive44(argument97 : ["stringValue22908"]) { + field21689: Scalar2 + field21690: Scalar2 + field21691: Scalar2 + field21692: Int + field21693: String + field21694: String +} + +type Object4737 @Directive21(argument61 : "stringValue22911") @Directive44(argument97 : ["stringValue22910"]) { + field21701: Scalar2 + field21702: String + field21703: String + field21704: String + field21705: String +} + +type Object4738 @Directive21(argument61 : "stringValue22913") @Directive44(argument97 : ["stringValue22912"]) { + field21712: Scalar2 + field21713: String + field21714: Scalar2 + field21715: String + field21716: String + field21717: Float + field21718: String +} + +type Object4739 @Directive21(argument61 : "stringValue22915") @Directive44(argument97 : ["stringValue22914"]) { + field21755: [Object4740] + field21759: [Object4740] + field21760: [Object4740] + field21761: [Object4740] + field21762: [Object4740] + field21763: [Object4740] + field21764: [Object4740] + field21765: [Object4740] + field21766: [Object4740] + field21767: [Object4740] @deprecated + field21768: [Object4740] + field21769: [Object4740] + field21770: [Object4740] + field21771: [Object4740] + field21772: [Object4740] + field21773: [Object4740] + field21774: [Object4740] + field21775: [Object4740] + field21776: [Object4740] + field21777: [Object4740] + field21778: [Object4740] + field21779: [Object4740] + field21780: [Object4740] + field21781: [Object4740] + field21782: [Object4740] + field21783: [Object4740] + field21784: [Object4740] + field21785: [Object4740] + field21786: [Object4740] +} + +type Object474 @Directive22(argument62 : "stringValue1592") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue1593", "stringValue1594"]) { + field2617: ID! + field2618: Enum154 + field2619: String + field2620: Enum155 + field2621: Union93 + field8301: [Enum335] + field8302: [Enum335] @deprecated + field8303: [Enum335] + field8304: [Enum335] @deprecated + field8305: [Enum335] + field8306: Object1 + field8307: String @deprecated + field8308: String @deprecated + field8309: [Object460] + field8310: Object1482 + field8311: Object1531 +} + +type Object4740 @Directive21(argument61 : "stringValue22917") @Directive44(argument97 : ["stringValue22916"]) { + field21756: [Object4741] +} + +type Object4741 @Directive21(argument61 : "stringValue22919") @Directive44(argument97 : ["stringValue22918"]) { + field21757: String + field21758: String +} + +type Object4742 @Directive21(argument61 : "stringValue22921") @Directive44(argument97 : ["stringValue22920"]) { + field21793: Int + field21794: [String] + field21795: Boolean +} + +type Object4743 @Directive21(argument61 : "stringValue22923") @Directive44(argument97 : ["stringValue22922"]) { + field21804: Int + field21805: String + field21806: Boolean +} + +type Object4744 @Directive21(argument61 : "stringValue22925") @Directive44(argument97 : ["stringValue22924"]) { + field21812: Scalar2 + field21813: String + field21814: String + field21815: Scalar2 + field21816: Scalar2 + field21817: Scalar2 + field21818: Scalar2 + field21819: Object4697 + field21820: Object4665 + field21821: Object4665 + field21822: Object4674 + field21823: Int + field21824: String + field21825: String + field21826: String + field21827: String + field21828: String + field21829: String + field21830: String + field21831: Int + field21832: String + field21833: String + field21834: Boolean + field21835: String + field21836: String + field21837: String + field21838: Object4745 + field21857: [Object4746] + field21872: [Object4686] + field21873: String + field21874: Boolean + field21875: Boolean +} + +type Object4745 @Directive21(argument61 : "stringValue22927") @Directive44(argument97 : ["stringValue22926"]) { + field21839: Scalar2 + field21840: Scalar2 + field21841: Scalar2 + field21842: String + field21843: String + field21844: String + field21845: String + field21846: String + field21847: String + field21848: String + field21849: String + field21850: String + field21851: String + field21852: String + field21853: String + field21854: String + field21855: String + field21856: String +} + +type Object4746 @Directive21(argument61 : "stringValue22929") @Directive44(argument97 : ["stringValue22928"]) { + field21858: Scalar2 + field21859: Scalar2 + field21860: Scalar2 + field21861: String + field21862: String + field21863: String + field21864: String + field21865: String + field21866: String + field21867: String + field21868: String + field21869: String + field21870: String + field21871: String +} + +type Object4747 @Directive21(argument61 : "stringValue22931") @Directive44(argument97 : ["stringValue22930"]) { + field21908: Boolean @deprecated + field21909: Boolean @deprecated + field21910: Boolean + field21911: Boolean @deprecated + field21912: Boolean + field21913: Boolean + field21914: Boolean + field21915: Boolean + field21916: Boolean @deprecated + field21917: Boolean @deprecated + field21918: Boolean @deprecated + field21919: Boolean @deprecated + field21920: Boolean @deprecated + field21921: Boolean @deprecated + field21922: Boolean @deprecated + field21923: Boolean + field21924: Boolean @deprecated + field21925: Boolean @deprecated + field21926: Boolean + field21927: Boolean + field21928: Boolean + field21929: Int + field21930: Int @deprecated + field21931: Int + field21932: Int + field21933: Int @deprecated + field21934: Int @deprecated + field21935: Int @deprecated + field21936: Boolean @deprecated + field21937: Boolean @deprecated + field21938: Int @deprecated + field21939: Boolean @deprecated + field21940: Boolean @deprecated + field21941: Boolean @deprecated + field21942: Int + field21943: Int @deprecated + field21944: Boolean @deprecated + field21945: Int + field21946: Boolean + field21947: Boolean @deprecated + field21948: Int + field21949: Int + field21950: Int + field21951: Int + field21952: Int + field21953: Int + field21954: Int + field21955: Boolean + field21956: Boolean + field21957: Boolean + field21958: Boolean + field21959: Boolean + field21960: Boolean + field21961: Boolean + field21962: Boolean + field21963: Boolean + field21964: Boolean + field21965: Int + field21966: Int @deprecated + field21967: Int + field21968: Int + field21969: Boolean + field21970: Boolean @deprecated + field21971: Int @deprecated + field21972: Int @deprecated + field21973: Int + field21974: Boolean + field21975: Int + field21976: Int + field21977: Int + field21978: Int + field21979: Int + field21980: Int + field21981: Int + field21982: Int + field21983: Int + field21984: Int + field21985: Boolean + field21986: Boolean + field21987: Boolean + field21988: Boolean + field21989: Boolean + field21990: Boolean + field21991: Boolean + field21992: Boolean + field21993: Boolean + field21994: Boolean + field21995: Boolean + field21996: Boolean + field21997: Boolean + field21998: Boolean + field21999: Boolean + field22000: Boolean + field22001: Boolean + field22002: Boolean + field22003: Int + field22004: Boolean + field22005: Boolean + field22006: Boolean + field22007: Boolean + field22008: Int + field22009: Boolean + field22010: Boolean + field22011: Boolean + field22012: Boolean + field22013: Int +} + +type Object4748 @Directive21(argument61 : "stringValue22933") @Directive44(argument97 : ["stringValue22932"]) { + field22055: String + field22056: String + field22057: String +} + +type Object4749 @Directive21(argument61 : "stringValue22935") @Directive44(argument97 : ["stringValue22934"]) { + field22059: Boolean + field22060: Int + field22061: Float + field22062: Boolean + field22063: Int + field22064: Int + field22065: Int + field22066: Boolean + field22067: Boolean + field22068: Float + field22069: Float + field22070: Float + field22071: Float + field22072: Boolean + field22073: Scalar1 + field22074: Scalar1 + field22075: Float + field22076: Float + field22077: String +} + +type Object475 @Directive20(argument58 : "stringValue2415", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2414") @Directive31 @Directive44(argument97 : ["stringValue2416", "stringValue2417"]) { + field2622: String + field2623: String + field2624: [Object476!] + field2644: [Object476!] + field2645: String + field2646: Object480 +} + +type Object4750 @Directive21(argument61 : "stringValue22937") @Directive44(argument97 : ["stringValue22936"]) { + field22088: Scalar2 + field22089: String + field22090: Scalar2 + field22091: String + field22092: String + field22093: String + field22094: [Object4751] + field22101: Object4697 + field22102: Object4724 + field22103: Object4725 + field22104: Object4723 + field22105: [Object4752] + field22111: [Object4753] + field22118: Object4698 + field22119: Object4722 + field22120: [Object4754] +} + +type Object4751 @Directive21(argument61 : "stringValue22939") @Directive44(argument97 : ["stringValue22938"]) { + field22095: Scalar2 + field22096: Scalar2 + field22097: Int + field22098: Int + field22099: Object4750 + field22100: Object4726 +} + +type Object4752 @Directive21(argument61 : "stringValue22941") @Directive44(argument97 : ["stringValue22940"]) { + field22106: Scalar2 + field22107: Scalar2 + field22108: String + field22109: Scalar2 + field22110: Object4750 +} + +type Object4753 @Directive21(argument61 : "stringValue22943") @Directive44(argument97 : ["stringValue22942"]) { + field22112: Scalar2 + field22113: Scalar2 + field22114: Int + field22115: String + field22116: String + field22117: Object4750 +} + +type Object4754 @Directive21(argument61 : "stringValue22945") @Directive44(argument97 : ["stringValue22944"]) { + field22121: Scalar2 + field22122: Scalar2 + field22123: Scalar2 + field22124: Object4750 +} + +type Object4755 @Directive21(argument61 : "stringValue22947") @Directive44(argument97 : ["stringValue22946"]) { + field22128: Scalar2 + field22129: Scalar2 + field22130: Scalar2 + field22131: Scalar2 + field22132: Scalar2 + field22133: String + field22134: String + field22135: Object4756 + field22160: Object4757 + field22165: Object4758 + field22170: Object4758 + field22171: Object4758 +} + +type Object4756 @Directive21(argument61 : "stringValue22949") @Directive44(argument97 : ["stringValue22948"]) { + field22136: Float + field22137: Float + field22138: Float + field22139: Float + field22140: Float + field22141: Float + field22142: Float + field22143: Float + field22144: Float + field22145: Float + field22146: Float + field22147: Float + field22148: Float + field22149: Float + field22150: Float + field22151: Float + field22152: Float + field22153: Float + field22154: Float + field22155: Float + field22156: Float + field22157: Float + field22158: Float + field22159: Float +} + +type Object4757 @Directive21(argument61 : "stringValue22951") @Directive44(argument97 : ["stringValue22950"]) { + field22161: Float + field22162: Float + field22163: Float + field22164: Float +} + +type Object4758 @Directive21(argument61 : "stringValue22953") @Directive44(argument97 : ["stringValue22952"]) { + field22166: Float + field22167: Float + field22168: Float + field22169: Float +} + +type Object4759 @Directive21(argument61 : "stringValue22955") @Directive44(argument97 : ["stringValue22954"]) { + field22175: Scalar2 + field22176: Scalar2 + field22177: Scalar2 + field22178: Int + field22179: Boolean + field22180: Int +} + +type Object476 @Directive20(argument58 : "stringValue2419", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2418") @Directive31 @Directive44(argument97 : ["stringValue2420", "stringValue2421"]) { + field2625: String + field2626: String + field2627: String + field2628: [Object477!] +} + +type Object4760 @Directive21(argument61 : "stringValue22957") @Directive44(argument97 : ["stringValue22956"]) { + field22197: Scalar2 + field22198: String + field22199: String + field22200: String + field22201: Scalar2 + field22202: Scalar2 + field22203: Scalar2 + field22204: Scalar2 + field22205: Scalar2 + field22206: Scalar2 + field22207: String + field22208: String + field22209: String + field22210: String + field22211: String + field22212: String + field22213: Object4697 + field22214: Boolean + field22215: [Object4761] + field22225: [Object4762] + field22236: String + field22237: Object4762 + field22238: Scalar1 +} + +type Object4761 @Directive21(argument61 : "stringValue22959") @Directive44(argument97 : ["stringValue22958"]) { + field22216: Scalar2 + field22217: String + field22218: String + field22219: String + field22220: String + field22221: String + field22222: String + field22223: String + field22224: String +} + +type Object4762 @Directive21(argument61 : "stringValue22961") @Directive44(argument97 : ["stringValue22960"]) { + field22226: Scalar2 + field22227: String + field22228: String + field22229: String + field22230: Scalar2 + field22231: Scalar2 + field22232: String + field22233: String + field22234: Object4760 + field22235: String +} + +type Object4763 @Directive21(argument61 : "stringValue22963") @Directive44(argument97 : ["stringValue22962"]) { + field22250: Object4764 +} + +type Object4764 @Directive21(argument61 : "stringValue22965") @Directive44(argument97 : ["stringValue22964"]) { + field22251: Int + field22252: Int + field22253: Boolean + field22254: String + field22255: String + field22256: Int +} + +type Object4765 @Directive44(argument97 : ["stringValue22966"]) { + field22278(argument1015: InputObject482!): Object4766 @Directive35(argument89 : "stringValue22968", argument90 : true, argument91 : "stringValue22967", argument92 : 71, argument93 : "stringValue22969", argument94 : false) + field22294(argument1016: InputObject483!): Object4769 @Directive35(argument89 : "stringValue22979", argument90 : true, argument91 : "stringValue22978", argument92 : 72, argument93 : "stringValue22980", argument94 : false) + field22296(argument1017: InputObject484!): Object4770 @Directive35(argument89 : "stringValue22985", argument90 : true, argument91 : "stringValue22984", argument92 : 73, argument93 : "stringValue22986", argument94 : false) + field22300(argument1018: InputObject489!): Object4772 @Directive35(argument89 : "stringValue22998", argument90 : true, argument91 : "stringValue22997", argument92 : 74, argument93 : "stringValue22999", argument94 : false) +} + +type Object4766 @Directive21(argument61 : "stringValue22972") @Directive44(argument97 : ["stringValue22971"]) { + field22279: Object4767 + field22290: String + field22291: Enum1050! + field22292: Scalar2 + field22293: Scalar2 +} + +type Object4767 @Directive21(argument61 : "stringValue22974") @Directive44(argument97 : ["stringValue22973"]) { + field22280: Object4768 +} + +type Object4768 @Directive21(argument61 : "stringValue22976") @Directive44(argument97 : ["stringValue22975"]) { + field22281: Scalar2! + field22282: String! + field22283: String + field22284: String + field22285: String + field22286: String + field22287: String + field22288: String + field22289: String +} + +type Object4769 @Directive21(argument61 : "stringValue22983") @Directive44(argument97 : ["stringValue22982"]) { + field22295: Boolean +} + +type Object477 @Directive20(argument58 : "stringValue2423", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2422") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2424", "stringValue2425"]) { + field2629: String + field2630: String + field2631: String + field2632: Enum10 + field2633: Object478 + field2642: Boolean + field2643: [Object478!] +} + +type Object4770 @Directive21(argument61 : "stringValue22994") @Directive44(argument97 : ["stringValue22993"]) { + field22297: Object4771 +} + +type Object4771 @Directive21(argument61 : "stringValue22996") @Directive44(argument97 : ["stringValue22995"]) { + field22298: Scalar2 + field22299: String +} + +type Object4772 @Directive21(argument61 : "stringValue23003") @Directive44(argument97 : ["stringValue23002"]) { + field22301: Object4773 +} + +type Object4773 @Directive21(argument61 : "stringValue23005") @Directive44(argument97 : ["stringValue23004"]) { + field22302: Scalar2 + field22303: Scalar2 + field22304: Enum1052 + field22305: Enum1053 + field22306: Int + field22307: String + field22308: String + field22309: String + field22310: String + field22311: String + field22312: String + field22313: String + field22314: Int + field22315: String + field22316: String + field22317: Scalar4 + field22318: String + field22319: Int +} + +type Object4774 @Directive44(argument97 : ["stringValue23007"]) { + field22321(argument1019: InputObject490!): Object4775 @Directive35(argument89 : "stringValue23009", argument90 : false, argument91 : "stringValue23008", argument92 : 75, argument93 : "stringValue23010", argument94 : false) + field22325(argument1020: InputObject490!): Object4776 @Directive35(argument89 : "stringValue23015", argument90 : true, argument91 : "stringValue23014", argument92 : 76, argument93 : "stringValue23016", argument94 : false) + field22645(argument1021: InputObject491!): Object4775 @Directive35(argument89 : "stringValue23114", argument90 : false, argument91 : "stringValue23113", argument92 : 77, argument93 : "stringValue23115", argument94 : false) + field22646(argument1022: InputObject491!): Object4820 @Directive35(argument89 : "stringValue23118", argument90 : true, argument91 : "stringValue23117", argument92 : 78, argument93 : "stringValue23119", argument94 : false) + field22648(argument1023: InputObject492!): Object4821 @Directive35(argument89 : "stringValue23123", argument90 : false, argument91 : "stringValue23122", argument92 : 79, argument93 : "stringValue23124", argument94 : false) + field22650(argument1024: InputObject492!): Object4822 @Directive35(argument89 : "stringValue23129", argument90 : true, argument91 : "stringValue23128", argument92 : 80, argument93 : "stringValue23130", argument94 : false) + field22652(argument1025: InputObject493!): Object4821 @Directive35(argument89 : "stringValue23134", argument90 : false, argument91 : "stringValue23133", argument92 : 81, argument93 : "stringValue23135", argument94 : false) + field22653(argument1026: InputObject493!): Object4823 @Directive35(argument89 : "stringValue23138", argument90 : false, argument91 : "stringValue23137", argument92 : 82, argument93 : "stringValue23139", argument94 : false) + field22655(argument1027: InputObject494!): Object4824 @Directive35(argument89 : "stringValue23143", argument90 : false, argument91 : "stringValue23142", argument92 : 83, argument93 : "stringValue23144", argument94 : false) + field22660(argument1028: InputObject495!): Object4825 @Directive35(argument89 : "stringValue23150", argument90 : true, argument91 : "stringValue23149", argument92 : 84, argument93 : "stringValue23151", argument94 : false) + field22662(argument1029: InputObject496!): Object4825 @Directive35(argument89 : "stringValue23156", argument90 : true, argument91 : "stringValue23155", argument92 : 85, argument93 : "stringValue23157", argument94 : false) + field22663(argument1030: InputObject497!): Object4825 @Directive35(argument89 : "stringValue23160", argument90 : true, argument91 : "stringValue23159", argument92 : 86, argument93 : "stringValue23161", argument94 : false) + field22664(argument1031: InputObject498!): Object4825 @Directive35(argument89 : "stringValue23164", argument90 : true, argument91 : "stringValue23163", argument92 : 87, argument93 : "stringValue23165", argument94 : false) + field22665(argument1032: InputObject499!): Object4826 @Directive35(argument89 : "stringValue23168", argument90 : true, argument91 : "stringValue23167", argument92 : 88, argument93 : "stringValue23169", argument94 : false) + field22667(argument1033: InputObject499!): Object4827 @Directive35(argument89 : "stringValue23174", argument90 : true, argument91 : "stringValue23173", argument92 : 89, argument93 : "stringValue23175", argument94 : false) + field22669(argument1034: InputObject500!): Object4826 @Directive35(argument89 : "stringValue23179", argument90 : false, argument91 : "stringValue23178", argument92 : 90, argument93 : "stringValue23180", argument94 : false) + field22670(argument1035: InputObject500!): Object4828 @Directive35(argument89 : "stringValue23183", argument90 : true, argument91 : "stringValue23182", argument92 : 91, argument93 : "stringValue23184", argument94 : false) + field22672(argument1036: InputObject501!): Object4826 @Directive35(argument89 : "stringValue23188", argument90 : false, argument91 : "stringValue23187", argument92 : 92, argument93 : "stringValue23189", argument94 : false) + field22673(argument1037: InputObject501!): Object4829 @Directive35(argument89 : "stringValue23192", argument90 : true, argument91 : "stringValue23191", argument92 : 93, argument93 : "stringValue23193", argument94 : false) + field22675(argument1038: InputObject502!): Object4826 @Directive35(argument89 : "stringValue23197", argument90 : true, argument91 : "stringValue23196", argument92 : 94, argument93 : "stringValue23198", argument94 : false) + field22676(argument1039: InputObject503!): Object4830 @Directive35(argument89 : "stringValue23201", argument90 : true, argument91 : "stringValue23200", argument92 : 95, argument93 : "stringValue23202", argument94 : false) + field22678(argument1040: InputObject502!): Object4831 @Directive35(argument89 : "stringValue23208", argument90 : true, argument91 : "stringValue23207", argument92 : 96, argument93 : "stringValue23209", argument94 : false) + field22680(argument1041: InputObject505!): Object4832 @Directive35(argument89 : "stringValue23213", argument90 : false, argument91 : "stringValue23212", argument92 : 97, argument93 : "stringValue23214", argument94 : false) +} + +type Object4775 @Directive21(argument61 : "stringValue23013") @Directive44(argument97 : ["stringValue23012"]) { + field22322: String + field22323: String + field22324: String +} + +type Object4776 @Directive21(argument61 : "stringValue23018") @Directive44(argument97 : ["stringValue23017"]) { + field22326: Object4777! + field22633: Object4819! +} + +type Object4777 @Directive21(argument61 : "stringValue23020") @Directive44(argument97 : ["stringValue23019"]) { + field22327: String! + field22328: String + field22329: Object4778 + field22341: Object4780 + field22625: Object4818 + field22632: Scalar2 +} + +type Object4778 @Directive21(argument61 : "stringValue23022") @Directive44(argument97 : ["stringValue23021"]) { + field22330: String! + field22331: String + field22332: String + field22333: String + field22334: [Object4779] + field22340: String +} + +type Object4779 @Directive21(argument61 : "stringValue23024") @Directive44(argument97 : ["stringValue23023"]) { + field22335: Enum1054! + field22336: Scalar2! + field22337: Boolean! + field22338: String + field22339: Enum1055 +} + +type Object478 implements Interface6 @Directive20(argument58 : "stringValue2427", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2426") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2428", "stringValue2429"]) { + field109: Interface3 + field2634: String + field2635: Float @deprecated + field2636: Object479 + field2640: String + field2641: Object1 + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +type Object4780 @Directive21(argument61 : "stringValue23028") @Directive44(argument97 : ["stringValue23027"]) { + field22342: String! + field22343: String + field22344: String + field22345: [Object4781] + field22622: Scalar2 + field22623: Enum1061 + field22624: String +} + +type Object4781 @Directive21(argument61 : "stringValue23030") @Directive44(argument97 : ["stringValue23029"]) { + field22346: String! + field22347: String! + field22348: String! + field22349: String + field22350: Object4782 + field22353: Object4783 + field22601: String + field22602: String + field22603: Scalar4 + field22604: Scalar4 + field22605: [Object4779] + field22606: [Object4815] + field22619: String + field22620: Int @deprecated + field22621: Scalar2 +} + +type Object4782 @Directive21(argument61 : "stringValue23032") @Directive44(argument97 : ["stringValue23031"]) { + field22351: String! + field22352: String +} + +type Object4783 @Directive21(argument61 : "stringValue23034") @Directive44(argument97 : ["stringValue23033"]) { + field22354: Scalar2! + field22355: Enum1056 + field22356: Scalar4 + field22357: Scalar4 + field22358: Scalar2 + field22359: Scalar2 + field22360: Scalar2 + field22361: Enum1057 + field22362: String + field22363: String + field22364: Enum1058 + field22365: Object4784 + field22429: Object4789 + field22449: Object4791 + field22596: Scalar2 + field22597: Scalar2 + field22598: Scalar2 + field22599: String + field22600: [Scalar2] +} + +type Object4784 @Directive21(argument61 : "stringValue23039") @Directive44(argument97 : ["stringValue23038"]) { + field22366: String + field22367: Float + field22368: Scalar2 + field22369: String + field22370: String + field22371: String + field22372: String + field22373: String + field22374: String + field22375: Scalar2 + field22376: Scalar2 + field22377: String + field22378: String + field22379: String + field22380: [String] + field22381: Object4785 + field22405: Object4785 + field22406: [Object4785] + field22407: Boolean + field22408: Boolean + field22409: [Object4787] + field22414: String + field22415: String + field22416: String + field22417: Scalar2 + field22418: String + field22419: [Object4788] + field22424: Scalar2 + field22425: String + field22426: String + field22427: String + field22428: String +} + +type Object4785 @Directive21(argument61 : "stringValue23041") @Directive44(argument97 : ["stringValue23040"]) { + field22382: Scalar2 + field22383: String + field22384: String + field22385: String + field22386: String + field22387: String + field22388: String + field22389: String + field22390: String + field22391: String + field22392: String + field22393: String + field22394: Object4786 + field22401: String + field22402: String + field22403: String + field22404: Int +} + +type Object4786 @Directive21(argument61 : "stringValue23043") @Directive44(argument97 : ["stringValue23042"]) { + field22395: Scalar2 + field22396: String + field22397: String + field22398: String + field22399: String + field22400: String +} + +type Object4787 @Directive21(argument61 : "stringValue23045") @Directive44(argument97 : ["stringValue23044"]) { + field22410: Scalar3 + field22411: Scalar3 + field22412: Int + field22413: [Scalar3] +} + +type Object4788 @Directive21(argument61 : "stringValue23047") @Directive44(argument97 : ["stringValue23046"]) { + field22420: String + field22421: String + field22422: String + field22423: String +} + +type Object4789 @Directive21(argument61 : "stringValue23049") @Directive44(argument97 : ["stringValue23048"]) { + field22430: String + field22431: String + field22432: String + field22433: String + field22434: String + field22435: String + field22436: String + field22437: String + field22438: String + field22439: [Object4790] + field22443: String + field22444: String + field22445: String + field22446: String + field22447: String + field22448: String +} + +type Object479 @Directive20(argument58 : "stringValue2431", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2430") @Directive31 @Directive44(argument97 : ["stringValue2432", "stringValue2433"]) { + field2637: String + field2638: Enum156 + field2639: Boolean +} + +type Object4790 @Directive21(argument61 : "stringValue23051") @Directive44(argument97 : ["stringValue23050"]) { + field22440: Int + field22441: String + field22442: String +} + +type Object4791 @Directive21(argument61 : "stringValue23053") @Directive44(argument97 : ["stringValue23052"]) { + field22450: String + field22451: String + field22452: String + field22453: [Object4790] + field22454: String + field22455: [Object4785] + field22456: Scalar2 + field22457: String + field22458: String + field22459: [Object4792] + field22483: [Object4792] + field22484: String + field22485: [Object4792] + field22486: Scalar2 + field22487: String + field22488: String + field22489: Float + field22490: Scalar2 + field22491: Boolean + field22492: String + field22493: String + field22494: String + field22495: String + field22496: String + field22497: String + field22498: String + field22499: String + field22500: String + field22501: String + field22502: String + field22503: String + field22504: String + field22505: [String] + field22506: [String] + field22507: [String] + field22508: [String] + field22509: [String] + field22510: Int + field22511: Boolean + field22512: String + field22513: String + field22514: String + field22515: Scalar4 + field22516: String + field22517: [Object4796] + field22522: Object4797 + field22527: String + field22528: Object4799 + field22560: [Object4807] + field22566: Object4808 + field22571: String + field22572: [Object4785] + field22573: [Object4785] + field22574: Object4810 + field22581: String + field22582: String + field22583: [Object4813] + field22585: [Object4813] + field22586: [Object4813] + field22587: Scalar2 + field22588: String + field22589: [Scalar2] + field22590: Object4814 +} + +type Object4792 @Directive21(argument61 : "stringValue23055") @Directive44(argument97 : ["stringValue23054"]) { + field22460: Scalar2 + field22461: Scalar2 + field22462: String + field22463: [Object4793] + field22466: Object4794 + field22475: String + field22476: Scalar4 + field22477: Boolean + field22478: [Object4795] + field22482: Scalar2 +} + +type Object4793 @Directive21(argument61 : "stringValue23057") @Directive44(argument97 : ["stringValue23056"]) { + field22464: String + field22465: String +} + +type Object4794 @Directive21(argument61 : "stringValue23059") @Directive44(argument97 : ["stringValue23058"]) { + field22467: Scalar2 + field22468: String + field22469: String + field22470: String + field22471: String + field22472: String + field22473: String + field22474: String +} + +type Object4795 @Directive21(argument61 : "stringValue23061") @Directive44(argument97 : ["stringValue23060"]) { + field22479: Enum1059 + field22480: Scalar2 + field22481: Boolean +} + +type Object4796 @Directive21(argument61 : "stringValue23064") @Directive44(argument97 : ["stringValue23063"]) { + field22518: String + field22519: Int + field22520: String + field22521: String +} + +type Object4797 @Directive21(argument61 : "stringValue23066") @Directive44(argument97 : ["stringValue23065"]) { + field22523: [Object4798] + field22526: String +} + +type Object4798 @Directive21(argument61 : "stringValue23068") @Directive44(argument97 : ["stringValue23067"]) { + field22524: String + field22525: String +} + +type Object4799 @Directive21(argument61 : "stringValue23070") @Directive44(argument97 : ["stringValue23069"]) { + field22529: [Object4800] + field22536: [Object4802] + field22542: [String] + field22543: String + field22544: [Object4803] + field22549: Object4804 +} + +type Object48 @Directive21(argument61 : "stringValue247") @Directive44(argument97 : ["stringValue246"]) { + field268: String + field269: String + field270: String + field271: Object49 +} + +type Object480 @Directive20(argument58 : "stringValue2439", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2438") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2440", "stringValue2441"]) { + field2647: String + field2648: String + field2649: Enum10 + field2650: Object478 @deprecated + field2651: String + field2652: String + field2653: Object450 + field2654: Object450 + field2655: Object1 @deprecated + field2656: Union92 @deprecated + field2657: String + field2658: String + field2659: Object450 + field2660: Object449 + field2661: Interface3 + field2662: Interface6 + field2663: Object452 +} + +type Object4800 @Directive21(argument61 : "stringValue23072") @Directive44(argument97 : ["stringValue23071"]) { + field22530: [Object4801] + field22533: String + field22534: String + field22535: String +} + +type Object4801 @Directive21(argument61 : "stringValue23074") @Directive44(argument97 : ["stringValue23073"]) { + field22531: String + field22532: String +} + +type Object4802 @Directive21(argument61 : "stringValue23076") @Directive44(argument97 : ["stringValue23075"]) { + field22537: String + field22538: String + field22539: String + field22540: String + field22541: String +} + +type Object4803 @Directive21(argument61 : "stringValue23078") @Directive44(argument97 : ["stringValue23077"]) { + field22545: String + field22546: String + field22547: String + field22548: String +} + +type Object4804 @Directive21(argument61 : "stringValue23080") @Directive44(argument97 : ["stringValue23079"]) { + field22550: Object4805 + field22555: [Object4806] +} + +type Object4805 @Directive21(argument61 : "stringValue23082") @Directive44(argument97 : ["stringValue23081"]) { + field22551: String + field22552: String + field22553: String + field22554: String +} + +type Object4806 @Directive21(argument61 : "stringValue23084") @Directive44(argument97 : ["stringValue23083"]) { + field22556: String + field22557: String + field22558: [Object4806] + field22559: String +} + +type Object4807 @Directive21(argument61 : "stringValue23086") @Directive44(argument97 : ["stringValue23085"]) { + field22561: String + field22562: String + field22563: String + field22564: String + field22565: String +} + +type Object4808 @Directive21(argument61 : "stringValue23088") @Directive44(argument97 : ["stringValue23087"]) { + field22567: Object4802 + field22568: [Object4809] +} + +type Object4809 @Directive21(argument61 : "stringValue23090") @Directive44(argument97 : ["stringValue23089"]) { + field22569: String + field22570: String +} + +type Object481 @Directive20(argument58 : "stringValue2443", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2442") @Directive31 @Directive44(argument97 : ["stringValue2444", "stringValue2445"]) { + field2664: String + field2665: String @deprecated + field2666: [Object480!] + field2667: String + field2668: Union92 @deprecated + field2669: Interface3 +} + +type Object4810 @Directive21(argument61 : "stringValue23092") @Directive44(argument97 : ["stringValue23091"]) { + field22575: String + field22576: String + field22577: [Object4811] +} + +type Object4811 @Directive21(argument61 : "stringValue23094") @Directive44(argument97 : ["stringValue23093"]) { + field22578: [Object4812] +} + +type Object4812 @Directive21(argument61 : "stringValue23096") @Directive44(argument97 : ["stringValue23095"]) { + field22579: Float + field22580: Float +} + +type Object4813 @Directive21(argument61 : "stringValue23098") @Directive44(argument97 : ["stringValue23097"]) { + field22584: String +} + +type Object4814 @Directive21(argument61 : "stringValue23100") @Directive44(argument97 : ["stringValue23099"]) { + field22591: Scalar2 + field22592: String + field22593: Scalar2 + field22594: String + field22595: String +} + +type Object4815 @Directive21(argument61 : "stringValue23102") @Directive44(argument97 : ["stringValue23101"]) { + field22607: Enum1060! + field22608: String! + field22609: Object4816! +} + +type Object4816 @Directive21(argument61 : "stringValue23105") @Directive44(argument97 : ["stringValue23104"]) { + field22610: Scalar2 + field22611: String + field22612: Scalar1 + field22613: String + field22614: String + field22615: String + field22616: Object4817 + field22618: String +} + +type Object4817 @Directive21(argument61 : "stringValue23107") @Directive44(argument97 : ["stringValue23106"]) { + field22617: String +} + +type Object4818 @Directive21(argument61 : "stringValue23110") @Directive44(argument97 : ["stringValue23109"]) { + field22626: String! + field22627: String + field22628: [Object4782] + field22629: String + field22630: String + field22631: String +} + +type Object4819 @Directive21(argument61 : "stringValue23112") @Directive44(argument97 : ["stringValue23111"]) { + field22634: String! + field22635: String + field22636: String + field22637: String + field22638: Boolean + field22639: [Object4777] + field22640: Object4782 + field22641: String + field22642: [String] + field22643: String + field22644: String +} + +type Object482 @Directive22(argument62 : "stringValue2446") @Directive31 @Directive44(argument97 : ["stringValue2447", "stringValue2448"]) { + field2670: String + field2671: Object450 + field2672: String + field2673: Object450 + field2674: Scalar4 + field2675: Scalar4 + field2676: Scalar2 @deprecated + field2677: Scalar2 @deprecated + field2678: Interface3 + field2679: Interface6 + field2680: [Object452] +} + +type Object4820 @Directive21(argument61 : "stringValue23121") @Directive44(argument97 : ["stringValue23120"]) { + field22647: Object4777! +} + +type Object4821 @Directive21(argument61 : "stringValue23127") @Directive44(argument97 : ["stringValue23126"]) { + field22649: String! +} + +type Object4822 @Directive21(argument61 : "stringValue23132") @Directive44(argument97 : ["stringValue23131"]) { + field22651: Object4781! +} + +type Object4823 @Directive21(argument61 : "stringValue23141") @Directive44(argument97 : ["stringValue23140"]) { + field22654: Object4819! +} + +type Object4824 @Directive21(argument61 : "stringValue23148") @Directive44(argument97 : ["stringValue23147"]) { + field22656: Enum1062! + field22657: String! + field22658: String! + field22659: String! +} + +type Object4825 @Directive21(argument61 : "stringValue23154") @Directive44(argument97 : ["stringValue23153"]) { + field22661: Boolean! +} + +type Object4826 @Directive21(argument61 : "stringValue23172") @Directive44(argument97 : ["stringValue23171"]) { + field22666: Boolean! +} + +type Object4827 @Directive21(argument61 : "stringValue23177") @Directive44(argument97 : ["stringValue23176"]) { + field22668: Object4778! +} + +type Object4828 @Directive21(argument61 : "stringValue23186") @Directive44(argument97 : ["stringValue23185"]) { + field22671: Object4780! +} + +type Object4829 @Directive21(argument61 : "stringValue23195") @Directive44(argument97 : ["stringValue23194"]) { + field22674: Object4781! +} + +type Object483 @Directive20(argument58 : "stringValue2450", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2449") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2451", "stringValue2452"]) { + field2681: String @Directive30(argument80 : true) @Directive41 + field2682: String @Directive30(argument80 : true) @Directive41 + field2683: Object480 @Directive30(argument80 : true) @Directive41 + field2684: [Object477!] @Directive30(argument80 : true) @Directive40 +} + +type Object4830 @Directive21(argument61 : "stringValue23206") @Directive44(argument97 : ["stringValue23205"]) { + field22677: Object4819! +} + +type Object4831 @Directive21(argument61 : "stringValue23211") @Directive44(argument97 : ["stringValue23210"]) { + field22679: Object4819! +} + +type Object4832 @Directive21(argument61 : "stringValue23219") @Directive44(argument97 : ["stringValue23218"]) { + field22681: Enum1062 + field22682: String + field22683: [Object4815] +} + +type Object4833 @Directive44(argument97 : ["stringValue23220", "stringValue23221"]) { + field22685(argument1042: InputObject508!): Object4834 @Directive35(argument89 : "stringValue23223", argument90 : false, argument91 : "stringValue23222", argument92 : 98, argument93 : "stringValue23224", argument94 : false) + field23827(argument1043: InputObject509!): Object4836 @Directive35(argument89 : "stringValue23905", argument90 : false, argument91 : "stringValue23904", argument92 : 99, argument93 : "stringValue23906", argument94 : false) + field23828(argument1044: InputObject510!): Object4836 @Directive35(argument89 : "stringValue23910", argument90 : false, argument91 : "stringValue23909", argument92 : 100, argument93 : "stringValue23911", argument94 : false) + field23829(argument1045: InputObject511!): Object4971 @Directive35(argument89 : "stringValue23915", argument90 : false, argument91 : "stringValue23914", argument92 : 101, argument93 : "stringValue23916", argument94 : false) + field23853(argument1046: InputObject512!): Object4972 @Directive35(argument89 : "stringValue23938", argument90 : false, argument91 : "stringValue23937", argument92 : 102, argument93 : "stringValue23939", argument94 : false) + field23854(argument1047: InputObject513!): Object4836 @Directive35(argument89 : "stringValue23941", argument90 : false, argument91 : "stringValue23940", argument92 : 103, argument93 : "stringValue23942", argument94 : false) +} + +type Object4834 @Directive21(argument61 : "stringValue23229") @Directive44(argument97 : ["stringValue23227", "stringValue23228"]) { + field22686: Object4835 +} + +type Object4835 @Directive21(argument61 : "stringValue23232") @Directive44(argument97 : ["stringValue23230", "stringValue23231"]) { + field22687: Scalar2 + field22688: String! + field22689: String + field22690: String + field22691: String + field22692: Scalar2! + field22693: Boolean + field22694: Enum1063! @deprecated + field22695: String @deprecated + field22696: String @deprecated + field22697: [Object4836] + field23826: String +} + +type Object4836 @Directive21(argument61 : "stringValue23237") @Directive44(argument97 : ["stringValue23235", "stringValue23236"]) { + field22698: Scalar2 + field22699: Scalar2 + field22700: String + field22701: Enum1064 + field22702: Enum1063 + field22703: Float + field22704: String + field22705: String + field22706: String + field22707: [Object4837] + field22745: [Object4840] + field23625: Union206 + field23737: [Object4960] + field23745: Scalar1 + field23746: Object4961 + field23780: Boolean + field23781: Enum1184 + field23782: Scalar2 + field23783: String + field23784: String + field23785: String + field23786: [String] + field23787: [Object4968] + field23798: Enum1064 + field23799: String + field23800: Boolean + field23801: [Scalar2] + field23802: [Object4970] + field23813: String + field23814: String + field23815: Scalar2 + field23816: String + field23817: Boolean + field23818: String + field23819: String + field23820: String + field23821: String + field23822: Boolean + field23823: Enum1187 + field23824: Enum1188 + field23825: Enum1189 +} + +type Object4837 @Directive21(argument61 : "stringValue23242") @Directive44(argument97 : ["stringValue23240", "stringValue23241"]) { + field22708: Scalar2 + field22709: String + field22710: [Object4838] @deprecated + field22723: Object4839 + field22732: Boolean + field22733: Enum1070 + field22734: [Object4837] + field22735: Scalar2 + field22736: String + field22737: Enum1071 + field22738: Enum1072 + field22739: Scalar4 + field22740: Scalar4 + field22741: Scalar4 + field22742: Boolean + field22743: [Object4838] + field22744: Enum1073 +} + +type Object4838 @Directive21(argument61 : "stringValue23245") @Directive44(argument97 : ["stringValue23243", "stringValue23244"]) { + field22711: Scalar2 + field22712: String + field22713: String + field22714: Enum1065 + field22715: Enum1066 + field22716: Scalar2 + field22717: Enum1067 + field22718: Scalar4 + field22719: Scalar4 + field22720: String + field22721: Boolean + field22722: String +} + +type Object4839 @Directive21(argument61 : "stringValue23254") @Directive44(argument97 : ["stringValue23252", "stringValue23253"]) { + field22724: Enum1068 + field22725: String + field22726: String + field22727: String + field22728: String + field22729: Enum1069 + field22730: Boolean + field22731: Scalar2 +} + +type Object484 @Directive22(argument62 : "stringValue2453") @Directive31 @Directive44(argument97 : ["stringValue2454", "stringValue2455"]) { + field2685: String + field2686: String + field2687: String +} + +type Object4840 @Directive21(argument61 : "stringValue23269") @Directive44(argument97 : ["stringValue23267", "stringValue23268"]) { + field22746: Scalar2 + field22747: String + field22748: String + field22749: Enum1074 + field22750: Enum1075 + field22751: [Union201] + field23429: Object4919 + field23464: Object4844 + field23465: Object4845 + field23466: Object4853 + field23467: Object4856 + field23468: Object4922 + field23471: Object4923 + field23474: Object4924 + field23476: [String] + field23477: [Object4925] + field23483: Object4839 + field23484: String + field23485: Float + field23486: [Object4840] + field23487: String + field23488: Object4926 + field23497: Object4928 + field23500: Object4929 + field23515: String + field23516: Enum1153 + field23517: Object4932 + field23595: [Object4944] + field23599: String + field23600: Object4945 + field23605: Boolean + field23606: [String] + field23607: Boolean + field23608: [Object4837] + field23609: Enum1165 + field23610: String + field23611: Scalar2 + field23612: Object4946 +} + +type Object4841 @Directive21(argument61 : "stringValue23278") @Directive44(argument97 : ["stringValue23276", "stringValue23277"]) { + field22752: Int + field22753: Boolean + field22754: Boolean + field22755: Int + field22756: String + field22757: Scalar2 + field22758: String + field22759: [Object4842] + field22768: Enum1074 + field22769: [String] + field22770: String + field22771: Boolean + field22772: Int + field22773: Boolean + field22774: Int + field22775: String + field22776: String + field22777: Boolean + field22778: Int +} + +type Object4842 @Directive21(argument61 : "stringValue23281") @Directive44(argument97 : ["stringValue23279", "stringValue23280"]) { + field22760: Scalar2 + field22761: Int + field22762: Scalar4 + field22763: Scalar4 + field22764: Boolean + field22765: String + field22766: String + field22767: String +} + +type Object4843 @Directive21(argument61 : "stringValue23284") @Directive44(argument97 : ["stringValue23282", "stringValue23283"]) { + field22779: Scalar2 + field22780: Enum1076 + field22781: Enum1077 + field22782: String + field22783: String + field22784: String + field22785: String + field22786: String + field22787: String + field22788: String + field22789: String + field22790: String + field22791: Int + field22792: Object4844 +} + +type Object4844 @Directive21(argument61 : "stringValue23291") @Directive44(argument97 : ["stringValue23289", "stringValue23290"]) { + field22793: Enum1078 + field22794: String + field22795: String + field22796: Object4845 + field22869: Scalar2 + field22870: Boolean + field22871: Object4853 + field22922: String + field22923: [Enum1085] + field22924: String + field22925: Object4856 + field22950: String + field22951: Object4857 + field22988: Enum1103 + field22989: String + field22990: Enum1104 + field22991: Boolean + field22992: String + field22993: Enum1105 + field22994: String +} + +type Object4845 @Directive21(argument61 : "stringValue23296") @Directive44(argument97 : ["stringValue23294", "stringValue23295"]) { + field22797: String + field22798: String + field22799: Enum1079 + field22800: String + field22801: Int + field22802: Object4846 + field22807: String + field22808: [String] + field22809: [[String]] + field22810: Scalar2 + field22811: Object4848 + field22862: Scalar2 + field22863: Scalar2 + field22864: Object4847 + field22865: Int + field22866: Int + field22867: [String] + field22868: [String] +} + +type Object4846 @Directive21(argument61 : "stringValue23301") @Directive44(argument97 : ["stringValue23299", "stringValue23300"]) { + field22803: Object4847 + field22806: Object4847 +} + +type Object4847 @Directive21(argument61 : "stringValue23304") @Directive44(argument97 : ["stringValue23302", "stringValue23303"]) { + field22804: Float + field22805: Float +} + +type Object4848 @Directive21(argument61 : "stringValue23307") @Directive44(argument97 : ["stringValue23305", "stringValue23306"]) { + field22812: Boolean + field22813: String + field22814: Int + field22815: Enum1080 + field22816: String + field22817: Int + field22818: Enum1080 + field22819: String + field22820: Float + field22821: Float + field22822: Object4846 + field22823: String + field22824: String + field22825: String + field22826: String + field22827: String + field22828: String + field22829: String + field22830: String + field22831: String + field22832: String + field22833: String + field22834: String + field22835: String + field22836: String + field22837: String + field22838: String + field22839: String + field22840: String + field22841: [String] + field22842: Boolean + field22843: String + field22844: Union202 + field22849: Object4850 + field22860: String + field22861: Boolean +} + +type Object4849 @Directive21(argument61 : "stringValue23314") @Directive44(argument97 : ["stringValue23312", "stringValue23313"]) { + field22845: String + field22846: String + field22847: String + field22848: String +} + +type Object485 @Directive22(argument62 : "stringValue2456") @Directive31 @Directive44(argument97 : ["stringValue2457", "stringValue2458"]) { + field2688: [Object486] +} + +type Object4850 @Directive21(argument61 : "stringValue23317") @Directive44(argument97 : ["stringValue23315", "stringValue23316"]) { + field22850: String + field22851: String + field22852: [Object4851] + field22856: Float + field22857: Float + field22858: Float + field22859: Object4846 +} + +type Object4851 @Directive21(argument61 : "stringValue23320") @Directive44(argument97 : ["stringValue23318", "stringValue23319"]) { + field22853: [Object4852] +} + +type Object4852 @Directive21(argument61 : "stringValue23323") @Directive44(argument97 : ["stringValue23321", "stringValue23322"]) { + field22854: String + field22855: String +} + +type Object4853 @Directive21(argument61 : "stringValue23326") @Directive44(argument97 : ["stringValue23324", "stringValue23325"]) { + field22872: Enum1081 + field22873: Int + field22874: Int + field22875: [String] + field22876: Boolean + field22877: Int + field22878: Int + field22879: Int + field22880: Boolean + field22881: Boolean + field22882: Int + field22883: Int + field22884: Float + field22885: [Int] + field22886: [String] @deprecated + field22887: [Int] @deprecated + field22888: [Int] + field22889: [Int] + field22890: [Int] + field22891: [Int] + field22892: [Int] + field22893: [Int] + field22894: String + field22895: String + field22896: Scalar2 + field22897: [Int] + field22898: [Int] + field22899: Boolean + field22900: Scalar2 + field22901: Enum1082 + field22902: Int + field22903: Int + field22904: [String] + field22905: Float + field22906: Float + field22907: Float + field22908: Boolean + field22909: [Scalar2] + field22910: Object4854 +} + +type Object4854 @Directive21(argument61 : "stringValue23333") @Directive44(argument97 : ["stringValue23331", "stringValue23332"]) { + field22911: Int + field22912: Int + field22913: Int + field22914: Int + field22915: Int + field22916: Int + field22917: [Object4855] + field22920: [Enum1083] + field22921: [Enum1084] +} + +type Object4855 @Directive21(argument61 : "stringValue23336") @Directive44(argument97 : ["stringValue23334", "stringValue23335"]) { + field22918: Scalar3 + field22919: Scalar3 +} + +type Object4856 @Directive21(argument61 : "stringValue23345") @Directive44(argument97 : ["stringValue23343", "stringValue23344"]) { + field22926: [String] + field22927: [Enum1086] + field22928: Boolean + field22929: Enum1087 + field22930: Enum1088 + field22931: Scalar2 + field22932: Object4847 + field22933: [String] + field22934: Boolean + field22935: [Scalar2] + field22936: Boolean + field22937: [String] + field22938: [Enum1089] + field22939: Enum1090 + field22940: Scalar2 + field22941: Scalar2 + field22942: [String] + field22943: [Int] + field22944: Boolean + field22945: Scalar2 + field22946: [Enum1091] + field22947: Boolean + field22948: Boolean + field22949: Boolean +} + +type Object4857 @Directive21(argument61 : "stringValue23360") @Directive44(argument97 : ["stringValue23358", "stringValue23359"]) { + field22952: Enum1092 + field22953: Enum1093 + field22954: Enum1094 + field22955: Object4858 + field22958: Object4859 + field22961: Object4859 + field22962: Object4860 + field22977: Object4863 + field22985: Scalar5 + field22986: Object4860 + field22987: Object4860 +} + +type Object4858 @Directive21(argument61 : "stringValue23369") @Directive44(argument97 : ["stringValue23367", "stringValue23368"]) { + field22956: Int + field22957: Int +} + +type Object4859 @Directive21(argument61 : "stringValue23372") @Directive44(argument97 : ["stringValue23370", "stringValue23371"]) { + field22959: Enum1095 + field22960: Float +} + +type Object486 @Directive22(argument62 : "stringValue2459") @Directive31 @Directive44(argument97 : ["stringValue2460", "stringValue2461"]) { + field2689: String + field2690: String + field2691: Boolean + field2692: Interface3 + field2693: Object487 +} + +type Object4860 @Directive21(argument61 : "stringValue23377") @Directive44(argument97 : ["stringValue23375", "stringValue23376"]) { + field22963: String + field22964: Enum1096 + field22965: Enum1097 + field22966: Enum1098 + field22967: Object4861 +} + +type Object4861 @Directive21(argument61 : "stringValue23386") @Directive44(argument97 : ["stringValue23384", "stringValue23385"]) { + field22968: String + field22969: Float + field22970: Float + field22971: Float + field22972: Float + field22973: [Object4862] + field22976: Enum1099 +} + +type Object4862 @Directive21(argument61 : "stringValue23389") @Directive44(argument97 : ["stringValue23387", "stringValue23388"]) { + field22974: String + field22975: Float +} + +type Object4863 @Directive21(argument61 : "stringValue23394") @Directive44(argument97 : ["stringValue23392", "stringValue23393"]) { + field22978: Enum1100 + field22979: Enum1101 + field22980: Enum1102 + field22981: Scalar5 + field22982: Scalar5 + field22983: Float + field22984: Float +} + +type Object4864 @Directive21(argument61 : "stringValue23409") @Directive44(argument97 : ["stringValue23407", "stringValue23408"]) { + field22995: Scalar2 + field22996: Enum1078 + field22997: String + field22998: String + field22999: String +} + +type Object4865 @Directive21(argument61 : "stringValue23412") @Directive44(argument97 : ["stringValue23410", "stringValue23411"]) { + field23000: String @deprecated + field23001: String @deprecated + field23002: String @deprecated + field23003: String + field23004: String + field23005: String + field23006: String + field23007: String + field23008: String + field23009: String + field23010: Object4844 + field23011: Object4844 + field23012: String + field23013: String + field23014: String + field23015: Enum1106 + field23016: Enum1107 + field23017: String + field23018: String + field23019: String + field23020: Object4866 + field23062: String + field23063: String + field23064: String + field23065: Boolean + field23066: Float + field23067: Object4872 + field23082: Scalar2 + field23083: Enum1116 + field23084: [Object4844] + field23085: Scalar2 + field23086: Enum1117 + field23087: String + field23088: Enum1118 + field23089: String @deprecated + field23090: Enum1119 + field23091: Enum1119 + field23092: Enum1119 + field23093: Enum1119 + field23094: String @deprecated + field23095: String @deprecated + field23096: String @deprecated + field23097: String + field23098: String + field23099: String + field23100: Object4874 + field23127: Boolean + field23128: String + field23129: Enum1124 + field23130: Enum1074 + field23131: Object4860 + field23132: Scalar2 + field23133: String + field23134: String + field23135: Enum1125 + field23136: Enum1126 + field23137: Boolean + field23138: Enum1127 + field23139: Enum1077 + field23140: Object4882 + field23156: Object4882 + field23157: Object4884 + field23175: Object4882 + field23176: String + field23177: Object4882 + field23178: Object4882 + field23179: String + field23180: Object4884 + field23181: Object4884 + field23182: Object4887 + field23187: Object4888 + field23197: Object4890 +} + +type Object4866 @Directive21(argument61 : "stringValue23419") @Directive44(argument97 : ["stringValue23417", "stringValue23418"]) { + field23021: Scalar2 + field23022: Object4867 + field23059: Object4867 + field23060: Object4867 + field23061: Object4867 +} + +type Object4867 @Directive21(argument61 : "stringValue23422") @Directive44(argument97 : ["stringValue23420", "stringValue23421"]) { + field23023: Scalar2 + field23024: Object4868 + field23031: Object4868 + field23032: Object4869 + field23038: Object4870 + field23042: Object4871 +} + +type Object4868 @Directive21(argument61 : "stringValue23425") @Directive44(argument97 : ["stringValue23423", "stringValue23424"]) { + field23025: Scalar2 + field23026: Enum1108 + field23027: Enum1107 + field23028: Enum1109 + field23029: String + field23030: Enum1110 +} + +type Object4869 @Directive21(argument61 : "stringValue23434") @Directive44(argument97 : ["stringValue23432", "stringValue23433"]) { + field23033: Scalar2 + field23034: Boolean + field23035: Boolean + field23036: Int + field23037: Boolean +} + +type Object487 @Directive22(argument62 : "stringValue2462") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2463", "stringValue2464"]) { + field2694: String @Directive30(argument80 : true) @Directive41 + field2695: String @Directive30(argument80 : true) @Directive41 + field2696: String @Directive30(argument80 : true) @Directive41 + field2697: String @Directive30(argument80 : true) @Directive41 + field2698: String @Directive30(argument80 : true) @Directive41 + field2699: String @Directive30(argument80 : true) @Directive41 + field2700: Object488 @Directive30(argument80 : true) @Directive41 +} + +type Object4870 @Directive21(argument61 : "stringValue23437") @Directive44(argument97 : ["stringValue23435", "stringValue23436"]) { + field23039: Scalar2 + field23040: Enum1111 + field23041: Int +} + +type Object4871 @Directive21(argument61 : "stringValue23442") @Directive44(argument97 : ["stringValue23440", "stringValue23441"]) { + field23043: String + field23044: String + field23045: String + field23046: String + field23047: Enum1112 + field23048: Enum1113 + field23049: String + field23050: String + field23051: Enum1114 + field23052: Enum1115 + field23053: String + field23054: String + field23055: String + field23056: String + field23057: String + field23058: Object4863 +} + +type Object4872 @Directive21(argument61 : "stringValue23453") @Directive44(argument97 : ["stringValue23451", "stringValue23452"]) { + field23068: Object4873 + field23079: Object4873 + field23080: Object4873 + field23081: Object4873 +} + +type Object4873 @Directive21(argument61 : "stringValue23456") @Directive44(argument97 : ["stringValue23454", "stringValue23455"]) { + field23069: String + field23070: String + field23071: String + field23072: String + field23073: String + field23074: String + field23075: String + field23076: String + field23077: Int + field23078: Float +} + +type Object4874 @Directive21(argument61 : "stringValue23467") @Directive44(argument97 : ["stringValue23465", "stringValue23466"]) { + field23101: Enum1120 + field23102: [Union203] + field23117: Scalar1 + field23118: Enum1123 + field23119: Scalar1 + field23120: Enum1123 + field23121: Scalar1 + field23122: Enum1123 + field23123: String + field23124: String + field23125: Scalar1 + field23126: Enum1123 +} + +type Object4875 @Directive21(argument61 : "stringValue23474") @Directive44(argument97 : ["stringValue23472", "stringValue23473"]) { + field23103: Boolean + field23104: Boolean + field23105: Boolean +} + +type Object4876 @Directive21(argument61 : "stringValue23477") @Directive44(argument97 : ["stringValue23475", "stringValue23476"]) { + field23106: String + field23107: Object4877 +} + +type Object4877 @Directive21(argument61 : "stringValue23480") @Directive44(argument97 : ["stringValue23478", "stringValue23479"]) { + field23108: String + field23109: String + field23110: String +} + +type Object4878 @Directive21(argument61 : "stringValue23483") @Directive44(argument97 : ["stringValue23481", "stringValue23482"]) { + field23111: Scalar2 +} + +type Object4879 @Directive21(argument61 : "stringValue23486") @Directive44(argument97 : ["stringValue23484", "stringValue23485"]) { + field23112: Boolean + field23113: String +} + +type Object488 @Directive22(argument62 : "stringValue2465") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2466", "stringValue2467"]) { + field2701: String @Directive30(argument80 : true) @Directive41 + field2702: String @Directive30(argument80 : true) @Directive41 +} + +type Object4880 @Directive21(argument61 : "stringValue23489") @Directive44(argument97 : ["stringValue23487", "stringValue23488"]) { + field23114: Enum1121 + field23115: Enum1122 +} + +type Object4881 @Directive21(argument61 : "stringValue23496") @Directive44(argument97 : ["stringValue23494", "stringValue23495"]) { + field23116: Scalar2 +} + +type Object4882 @Directive21(argument61 : "stringValue23509") @Directive44(argument97 : ["stringValue23507", "stringValue23508"]) { + field23141: Object4883 + field23152: Object4883 + field23153: Object4883 + field23154: Object4883 + field23155: Object4883 +} + +type Object4883 @Directive21(argument61 : "stringValue23512") @Directive44(argument97 : ["stringValue23510", "stringValue23511"]) { + field23142: String + field23143: Object4860 + field23144: Object4863 + field23145: Scalar5 + field23146: Object4860 + field23147: Enum1093 + field23148: Enum1094 + field23149: Object4858 + field23150: Object4859 + field23151: Object4859 +} + +type Object4884 @Directive21(argument61 : "stringValue23515") @Directive44(argument97 : ["stringValue23513", "stringValue23514"]) { + field23158: Object4885 + field23172: Object4885 + field23173: Object4885 + field23174: Object4885 +} + +type Object4885 @Directive21(argument61 : "stringValue23518") @Directive44(argument97 : ["stringValue23516", "stringValue23517"]) { + field23159: Enum1128 + field23160: String + field23161: Object4858 + field23162: Object4859 + field23163: Object4859 + field23164: String + field23165: Object4886 + field23169: Scalar1 + field23170: String + field23171: Scalar1 +} + +type Object4886 @Directive21(argument61 : "stringValue23523") @Directive44(argument97 : ["stringValue23521", "stringValue23522"]) { + field23166: String + field23167: String + field23168: String +} + +type Object4887 @Directive21(argument61 : "stringValue23526") @Directive44(argument97 : ["stringValue23524", "stringValue23525"]) { + field23183: Object4844 + field23184: Object4844 + field23185: Object4844 + field23186: Object4844 +} + +type Object4888 @Directive21(argument61 : "stringValue23529") @Directive44(argument97 : ["stringValue23527", "stringValue23528"]) { + field23188: Object4889 + field23194: Object4889 + field23195: Object4889 + field23196: Object4889 +} + +type Object4889 @Directive21(argument61 : "stringValue23532") @Directive44(argument97 : ["stringValue23530", "stringValue23531"]) { + field23189: Object4858 + field23190: Enum1093 + field23191: Enum1094 + field23192: Object4859 + field23193: Object4859 +} + +type Object489 @Directive20(argument58 : "stringValue2469", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2468") @Directive31 @Directive44(argument97 : ["stringValue2470", "stringValue2471"]) { + field2703: String + field2704: String + field2705: Object480 +} + +type Object4890 @Directive21(argument61 : "stringValue23535") @Directive44(argument97 : ["stringValue23533", "stringValue23534"]) { + field23198: Object4891 + field23205: Object4891 + field23206: Object4891 + field23207: Object4891 +} + +type Object4891 @Directive21(argument61 : "stringValue23538") @Directive44(argument97 : ["stringValue23536", "stringValue23537"]) { + field23199: Object4860 + field23200: Object4892 +} + +type Object4892 @Directive21(argument61 : "stringValue23541") @Directive44(argument97 : ["stringValue23539", "stringValue23540"]) { + field23201: Object4859 + field23202: Object4859 + field23203: Object4859 + field23204: Object4859 +} + +type Object4893 @Directive21(argument61 : "stringValue23544") @Directive44(argument97 : ["stringValue23542", "stringValue23543"]) { + field23208: String + field23209: String + field23210: String + field23211: String + field23212: String + field23213: String + field23214: String + field23215: Object4844 + field23216: String + field23217: String + field23218: String + field23219: String + field23220: String + field23221: String + field23222: String + field23223: String + field23224: String + field23225: Scalar2 + field23226: Float + field23227: Scalar1 + field23228: String + field23229: String + field23230: String + field23231: String + field23232: String + field23233: String + field23234: String + field23235: String + field23236: String + field23237: String + field23238: String +} + +type Object4894 @Directive21(argument61 : "stringValue23547") @Directive44(argument97 : ["stringValue23545", "stringValue23546"]) { + field23239: String + field23240: String + field23241: String + field23242: String + field23243: String + field23244: Scalar2 +} + +type Object4895 @Directive21(argument61 : "stringValue23550") @Directive44(argument97 : ["stringValue23548", "stringValue23549"]) { + field23245: Enum1074 +} + +type Object4896 @Directive21(argument61 : "stringValue23553") @Directive44(argument97 : ["stringValue23551", "stringValue23552"]) { + field23246: Enum1074 + field23247: String + field23248: Object4882 + field23249: Object4882 + field23250: Object4882 + field23251: Object4887 + field23252: Object4884 + field23253: Object4888 + field23254: Enum1126 + field23255: Object4884 + field23256: Object4890 +} + +type Object4897 @Directive21(argument61 : "stringValue23556") @Directive44(argument97 : ["stringValue23554", "stringValue23555"]) { + field23257: Scalar2 + field23258: Enum1129 + field23259: Enum1130 + field23260: String + field23261: String + field23262: String + field23263: Object4844 + field23264: String + field23265: String + field23266: String + field23267: String + field23268: String + field23269: String + field23270: Enum1131 + field23271: String + field23272: String + field23273: Object4898 + field23277: Object4872 + field23278: String + field23279: Enum1132 + field23280: Object4899 +} + +type Object4898 @Directive21(argument61 : "stringValue23565") @Directive44(argument97 : ["stringValue23563", "stringValue23564"]) { + field23274: Int + field23275: Int + field23276: Scalar2 +} + +type Object4899 @Directive21(argument61 : "stringValue23570") @Directive44(argument97 : ["stringValue23568", "stringValue23569"]) { + field23281: String + field23282: String + field23283: Object4900 + field23305: Object4907 + field23311: Boolean +} + +type Object49 @Directive21(argument61 : "stringValue249") @Directive44(argument97 : ["stringValue248"]) { + field272: Int + field273: Float +} + +type Object490 @Directive20(argument58 : "stringValue2473", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2472") @Directive31 @Directive44(argument97 : ["stringValue2474", "stringValue2475"]) { + field2706: String + field2707: String + field2708: [Object491!] + field2713: [Object491!] + field2714: String + field2715: Object480 +} + +type Object4900 @Directive21(argument61 : "stringValue23573") @Directive44(argument97 : ["stringValue23571", "stringValue23572"]) { + field23284: [Object4901] + field23296: String + field23297: String + field23298: [String] + field23299: String @deprecated + field23300: String + field23301: Boolean + field23302: [String] + field23303: String + field23304: Enum1105 +} + +type Object4901 @Directive21(argument61 : "stringValue23576") @Directive44(argument97 : ["stringValue23574", "stringValue23575"]) { + field23285: String + field23286: String + field23287: Boolean + field23288: Union204 + field23294: Boolean @deprecated + field23295: Boolean +} + +type Object4902 @Directive21(argument61 : "stringValue23581") @Directive44(argument97 : ["stringValue23579", "stringValue23580"]) { + field23289: Boolean +} + +type Object4903 @Directive21(argument61 : "stringValue23584") @Directive44(argument97 : ["stringValue23582", "stringValue23583"]) { + field23290: Float +} + +type Object4904 @Directive21(argument61 : "stringValue23587") @Directive44(argument97 : ["stringValue23585", "stringValue23586"]) { + field23291: Int +} + +type Object4905 @Directive21(argument61 : "stringValue23590") @Directive44(argument97 : ["stringValue23588", "stringValue23589"]) { + field23292: Scalar2 +} + +type Object4906 @Directive21(argument61 : "stringValue23593") @Directive44(argument97 : ["stringValue23591", "stringValue23592"]) { + field23293: String +} + +type Object4907 @Directive21(argument61 : "stringValue23596") @Directive44(argument97 : ["stringValue23594", "stringValue23595"]) { + field23306: String + field23307: String + field23308: String + field23309: String + field23310: Int +} + +type Object4908 @Directive21(argument61 : "stringValue23599") @Directive44(argument97 : ["stringValue23597", "stringValue23598"]) { + field23312: Scalar2 + field23313: Enum1133 + field23314: Enum1134 + field23315: String + field23316: String + field23317: String + field23318: Object4844 + field23319: String + field23320: String + field23321: String + field23322: String + field23323: Object4872 + field23324: [Object4909] + field23341: String +} + +type Object4909 @Directive21(argument61 : "stringValue23606") @Directive44(argument97 : ["stringValue23604", "stringValue23605"]) { + field23325: Scalar2 + field23326: Boolean + field23327: Boolean + field23328: Enum1135 + field23329: [String] + field23330: String + field23331: String + field23332: String + field23333: [Object4910] +} + +type Object491 @Directive20(argument58 : "stringValue2477", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2476") @Directive31 @Directive44(argument97 : ["stringValue2478", "stringValue2479"]) { + field2709: String + field2710: String + field2711: String + field2712: [Object477!] +} + +type Object4910 @Directive21(argument61 : "stringValue23611") @Directive44(argument97 : ["stringValue23609", "stringValue23610"]) { + field23334: String + field23335: Enum1136 + field23336: String + field23337: String + field23338: String + field23339: String + field23340: String +} + +type Object4911 @Directive21(argument61 : "stringValue23616") @Directive44(argument97 : ["stringValue23614", "stringValue23615"]) { + field23342: Enum1074 + field23343: Scalar2 + field23344: String + field23345: Float +} + +type Object4912 @Directive21(argument61 : "stringValue23619") @Directive44(argument97 : ["stringValue23617", "stringValue23618"]) { + field23346: Scalar2 + field23347: Enum1074 + field23348: Enum1137 + field23349: Enum1138 + field23350: String + field23351: String + field23352: String + field23353: String + field23354: String + field23355: Scalar5 + field23356: String + field23357: String +} + +type Object4913 @Directive21(argument61 : "stringValue23626") @Directive44(argument97 : ["stringValue23624", "stringValue23625"]) { + field23358: Scalar2 + field23359: Enum1139 + field23360: Enum1125 + field23361: Enum1126 + field23362: String + field23363: String + field23364: String + field23365: String + field23366: String + field23367: String + field23368: String + field23369: String + field23370: String + field23371: String + field23372: String + field23373: Object4844 + field23374: Object4872 + field23375: String + field23376: String + field23377: Boolean + field23378: String + field23379: String + field23380: String + field23381: String + field23382: String + field23383: Float + field23384: [Object4914] +} + +type Object4914 @Directive21(argument61 : "stringValue23631") @Directive44(argument97 : ["stringValue23629", "stringValue23630"]) { + field23385: String + field23386: String + field23387: String +} + +type Object4915 @Directive21(argument61 : "stringValue23634") @Directive44(argument97 : ["stringValue23632", "stringValue23633"]) { + field23388: Scalar2 + field23389: Enum1140 + field23390: Enum1141 + field23391: String + field23392: String + field23393: String + field23394: Object4844 + field23395: String +} + +type Object4916 @Directive21(argument61 : "stringValue23641") @Directive44(argument97 : ["stringValue23639", "stringValue23640"]) { + field23396: String + field23397: String + field23398: Object4900 + field23399: Enum1074 + field23400: Scalar2 + field23401: String + field23402: Enum1074 + field23403: String + field23404: String + field23405: String + field23406: String + field23407: String + field23408: String + field23409: Enum1078 + field23410: Object4844 +} + +type Object4917 @Directive21(argument61 : "stringValue23644") @Directive44(argument97 : ["stringValue23642", "stringValue23643"]) { + field23411: Scalar2 + field23412: Float + field23413: Enum1142 + field23414: Enum1143 + field23415: String + field23416: String + field23417: String + field23418: String + field23419: Object4844 +} + +type Object4918 @Directive21(argument61 : "stringValue23651") @Directive44(argument97 : ["stringValue23649", "stringValue23650"]) { + field23420: Scalar2 + field23421: Enum1127 + field23422: String + field23423: String + field23424: String + field23425: Object4844 + field23426: String + field23427: String + field23428: Scalar1 +} + +type Object4919 @Directive21(argument61 : "stringValue23654") @Directive44(argument97 : ["stringValue23652", "stringValue23653"]) { + field23430: Enum1144 + field23431: Boolean + field23432: Boolean + field23433: Boolean + field23434: String + field23435: String + field23436: Int + field23437: Boolean + field23438: Enum1145 + field23439: Object4920 + field23447: Int + field23448: Int + field23449: Boolean + field23450: String + field23451: Enum1146 + field23452: Boolean + field23453: Enum1147 + field23454: String + field23455: Enum1148 + field23456: String + field23457: String + field23458: Enum1149 + field23459: Enum1150 + field23460: Scalar2 + field23461: Scalar2 + field23462: Boolean + field23463: Boolean +} + +type Object492 @Directive20(argument58 : "stringValue2481", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2480") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2482", "stringValue2483"]) { + field2716: String @Directive30(argument80 : true) @Directive41 + field2717: String @Directive30(argument80 : true) @Directive41 + field2718: Object480 @Directive30(argument80 : true) @Directive41 + field2719: Object480 @Directive30(argument80 : true) @Directive41 + field2720: [Object480!] @Directive30(argument80 : true) @Directive41 +} + +type Object4920 @Directive21(argument61 : "stringValue23661") @Directive44(argument97 : ["stringValue23659", "stringValue23660"]) { + field23440: String + field23441: [Object4921] + field23446: String +} + +type Object4921 @Directive21(argument61 : "stringValue23664") @Directive44(argument97 : ["stringValue23662", "stringValue23663"]) { + field23442: String + field23443: String + field23444: String + field23445: String +} + +type Object4922 @Directive21(argument61 : "stringValue23677") @Directive44(argument97 : ["stringValue23675", "stringValue23676"]) { + field23469: [String] + field23470: [Enum1151] +} + +type Object4923 @Directive21(argument61 : "stringValue23682") @Directive44(argument97 : ["stringValue23680", "stringValue23681"]) { + field23472: String + field23473: String +} + +type Object4924 @Directive21(argument61 : "stringValue23685") @Directive44(argument97 : ["stringValue23683", "stringValue23684"]) { + field23475: [String] +} + +type Object4925 @Directive21(argument61 : "stringValue23688") @Directive44(argument97 : ["stringValue23686", "stringValue23687"]) { + field23478: Enum1075 + field23479: Int + field23480: Int + field23481: String + field23482: Boolean +} + +type Object4926 @Directive21(argument61 : "stringValue23691") @Directive44(argument97 : ["stringValue23689", "stringValue23690"]) { + field23489: Enum1152 + field23490: [Object4927] + field23496: String +} + +type Object4927 @Directive21(argument61 : "stringValue23696") @Directive44(argument97 : ["stringValue23694", "stringValue23695"]) { + field23491: String + field23492: Object4844 + field23493: Object4845 + field23494: Object4853 + field23495: Object4856 +} + +type Object4928 @Directive21(argument61 : "stringValue23699") @Directive44(argument97 : ["stringValue23697", "stringValue23698"]) { + field23498: Scalar2 + field23499: Object4839 +} + +type Object4929 @Directive21(argument61 : "stringValue23702") @Directive44(argument97 : ["stringValue23700", "stringValue23701"]) { + field23501: String + field23502: String + field23503: String + field23504: String + field23505: String + field23506: String + field23507: String + field23508: String + field23509: String + field23510: Object4930 + field23514: Scalar2 +} + +type Object493 @Directive20(argument58 : "stringValue2485", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2484") @Directive31 @Directive44(argument97 : ["stringValue2486", "stringValue2487"]) { + field2721: String + field2722: String + field2723: [Object480!] + field2724: String + field2725: String + field2726: String + field2727: Object478 + field2728: Int + field2729: Object494 + field2746: Object494 + field2747: Scalar2 + field2748: String + field2749: String + field2750: Object495 + field2773: String +} + +type Object4930 @Directive21(argument61 : "stringValue23705") @Directive44(argument97 : ["stringValue23703", "stringValue23704"]) { + field23511: Object4931 +} + +type Object4931 @Directive21(argument61 : "stringValue23708") @Directive44(argument97 : ["stringValue23706", "stringValue23707"]) { + field23512: String + field23513: String +} + +type Object4932 @Directive21(argument61 : "stringValue23713") @Directive44(argument97 : ["stringValue23711", "stringValue23712"]) { + field23518: Enum1082 + field23519: Scalar2 + field23520: Enum1154 + field23521: Enum1155 + field23522: Enum1156 + field23523: [Union205] + field23572: String + field23573: Scalar2 + field23574: Enum1161 + field23575: Object4934 + field23576: Object4937 + field23577: Object4942 + field23580: [Object4943] + field23583: Scalar5 + field23584: Scalar5 + field23585: Scalar5 + field23586: Scalar2 + field23587: Scalar2 + field23588: Enum1162 + field23589: Enum1163 + field23590: Float + field23591: Scalar2 + field23592: Scalar2 + field23593: Scalar2 + field23594: Enum1164 +} + +type Object4933 @Directive21(argument61 : "stringValue23724") @Directive44(argument97 : ["stringValue23722", "stringValue23723"]) { + field23524: Enum1082 + field23525: Scalar2 + field23526: Enum1154 + field23527: Enum1155 + field23528: Scalar5 + field23529: Scalar5 + field23530: Scalar5 +} + +type Object4934 @Directive21(argument61 : "stringValue23727") @Directive44(argument97 : ["stringValue23725", "stringValue23726"]) { + field23531: String + field23532: String + field23533: Float + field23534: String + field23535: [Object4935] +} + +type Object4935 @Directive21(argument61 : "stringValue23730") @Directive44(argument97 : ["stringValue23728", "stringValue23729"]) { + field23536: String! + field23537: Enum1157! + field23538: [String]! + field23539: [String] + field23540: [Enum1121]! + field23541: [Object4936]! + field23548: [String]! + field23549: Enum1160 +} + +type Object4936 @Directive21(argument61 : "stringValue23735") @Directive44(argument97 : ["stringValue23733", "stringValue23734"]) { + field23542: Enum1158! + field23543: Enum1159! + field23544: Scalar2! + field23545: Scalar2! + field23546: [Enum1121] + field23547: [Enum1121] +} + +type Object4937 @Directive21(argument61 : "stringValue23744") @Directive44(argument97 : ["stringValue23742", "stringValue23743"]) { + field23550: Boolean + field23551: Enum1104 + field23552: String + field23553: String + field23554: String + field23555: Int + field23556: Int + field23557: Object4938 + field23562: Object4939 + field23565: Object4940 +} + +type Object4938 @Directive21(argument61 : "stringValue23747") @Directive44(argument97 : ["stringValue23745", "stringValue23746"]) { + field23558: Object4892 + field23559: Object4892 + field23560: Object4892 + field23561: Object4892 +} + +type Object4939 @Directive21(argument61 : "stringValue23750") @Directive44(argument97 : ["stringValue23748", "stringValue23749"]) { + field23563: Object4882 + field23564: Object4882 +} + +type Object494 @Directive20(argument58 : "stringValue2489", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2488") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2490", "stringValue2491"]) { + field2730: Object1 + field2731: Object1 + field2732: Object1 + field2733: Object480 + field2734: Object1 + field2735: Object1 + field2736: Object1 + field2737: Object1 + field2738: Object480 + field2739: Object1 + field2740: Object1 + field2741: Object1 + field2742: Object1 + field2743: Object1 + field2744: Object1 + field2745: Object1 +} + +type Object4940 @Directive21(argument61 : "stringValue23753") @Directive44(argument97 : ["stringValue23751", "stringValue23752"]) { + field23566: Object4941 + field23569: Object4941 + field23570: Object4941 + field23571: Object4941 +} + +type Object4941 @Directive21(argument61 : "stringValue23756") @Directive44(argument97 : ["stringValue23754", "stringValue23755"]) { + field23567: Float + field23568: Float +} + +type Object4942 @Directive21(argument61 : "stringValue23761") @Directive44(argument97 : ["stringValue23759", "stringValue23760"]) { + field23578: String + field23579: String +} + +type Object4943 @Directive21(argument61 : "stringValue23764") @Directive44(argument97 : ["stringValue23762", "stringValue23763"]) { + field23581: Scalar2 + field23582: Scalar1 +} + +type Object4944 @Directive21(argument61 : "stringValue23773") @Directive44(argument97 : ["stringValue23771", "stringValue23772"]) { + field23596: Scalar2 + field23597: Union201 + field23598: Object4837 +} + +type Object4945 @Directive21(argument61 : "stringValue23776") @Directive44(argument97 : ["stringValue23774", "stringValue23775"]) { + field23601: Object4845 + field23602: Scalar2 + field23603: Scalar2 + field23604: Scalar2 +} + +type Object4946 @Directive21(argument61 : "stringValue23781") @Directive44(argument97 : ["stringValue23779", "stringValue23780"]) { + field23613: String + field23614: String + field23615: Object4947 + field23623: Scalar4 + field23624: Scalar4 +} + +type Object4947 @Directive21(argument61 : "stringValue23784") @Directive44(argument97 : ["stringValue23782", "stringValue23783"]) { + field23616: Float + field23617: Scalar2 + field23618: Float + field23619: Scalar2 + field23620: Float + field23621: Float + field23622: Scalar2 +} + +type Object4948 @Directive21(argument61 : "stringValue23789") @Directive44(argument97 : ["stringValue23787", "stringValue23788"]) { + field23626: String + field23627: String + field23628: String + field23629: Boolean + field23630: Boolean + field23631: Boolean + field23632: Boolean + field23633: Enum1166 + field23634: Enum1167 + field23635: String + field23636: String + field23637: Object4949 + field23651: Object4950 + field23664: [Object4951] + field23668: Scalar2 + field23669: Boolean +} + +type Object4949 @Directive21(argument61 : "stringValue23796") @Directive44(argument97 : ["stringValue23794", "stringValue23795"]) { + field23638: Scalar2 + field23639: String + field23640: String + field23641: Enum1168 + field23642: Scalar2 + field23643: Enum1169 + field23644: Boolean + field23645: Boolean + field23646: String + field23647: String + field23648: Scalar4 + field23649: Scalar4 + field23650: Scalar4 +} + +type Object495 @Directive20(argument58 : "stringValue2493", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2492") @Directive31 @Directive44(argument97 : ["stringValue2494", "stringValue2495"]) { + field2751: String @deprecated + field2752: Object496 + field2771: Boolean + field2772: Boolean +} + +type Object4950 @Directive21(argument61 : "stringValue23803") @Directive44(argument97 : ["stringValue23801", "stringValue23802"]) { + field23652: Scalar2! + field23653: Boolean! + field23654: String + field23655: String + field23656: Int + field23657: Int + field23658: String + field23659: String + field23660: String + field23661: String + field23662: String + field23663: String +} + +type Object4951 @Directive21(argument61 : "stringValue23806") @Directive44(argument97 : ["stringValue23804", "stringValue23805"]) { + field23665: Scalar2! + field23666: String! + field23667: String! +} + +type Object4952 @Directive21(argument61 : "stringValue23809") @Directive44(argument97 : ["stringValue23807", "stringValue23808"]) { + field23670: Scalar2 + field23671: String + field23672: String + field23673: String + field23674: String + field23675: String + field23676: Enum1107 + field23677: Boolean + field23678: String +} + +type Object4953 @Directive21(argument61 : "stringValue23812") @Directive44(argument97 : ["stringValue23810", "stringValue23811"]) { + field23679: Scalar2 + field23680: Enum1064 +} + +type Object4954 @Directive21(argument61 : "stringValue23815") @Directive44(argument97 : ["stringValue23813", "stringValue23814"]) { + field23681: Scalar2 + field23682: Enum1064 + field23683: Enum1170 + field23684: Enum1171 + field23685: String +} + +type Object4955 @Directive21(argument61 : "stringValue23822") @Directive44(argument97 : ["stringValue23820", "stringValue23821"]) { + field23686: Scalar2 + field23687: Enum1064 + field23688: Scalar2 + field23689: Scalar2 + field23690: [Int] + field23691: [Int] + field23692: String + field23693: Boolean + field23694: Enum1172 + field23695: Scalar2 + field23696: Enum1173 + field23697: Scalar2 +} + +type Object4956 @Directive21(argument61 : "stringValue23829") @Directive44(argument97 : ["stringValue23827", "stringValue23828"]) { + field23698: Scalar2 + field23699: String + field23700: String + field23701: String + field23702: Int + field23703: Scalar2 + field23704: Enum1174 + field23705: String + field23706: Enum1126 + field23707: String + field23708: String + field23709: [Enum1169] + field23710: [String] + field23711: Object4949 + field23712: Boolean + field23713: String +} + +type Object4957 @Directive21(argument61 : "stringValue23834") @Directive44(argument97 : ["stringValue23832", "stringValue23833"]) { + field23714: Enum1175 + field23715: Object4958 + field23733: Scalar2 +} + +type Object4958 @Directive21(argument61 : "stringValue23839") @Directive44(argument97 : ["stringValue23837", "stringValue23838"]) { + field23716: String + field23717: Enum1175 + field23718: [Enum1176] + field23719: Enum1177 + field23720: Float + field23721: Int + field23722: Int + field23723: Int + field23724: Int + field23725: Int + field23726: Enum1178 + field23727: String + field23728: String + field23729: String + field23730: String + field23731: String + field23732: String +} + +type Object4959 @Directive21(argument61 : "stringValue23848") @Directive44(argument97 : ["stringValue23846", "stringValue23847"]) { + field23734: Enum1179 + field23735: Scalar2 + field23736: String +} + +type Object496 @Directive20(argument58 : "stringValue2497", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2496") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2498", "stringValue2499"]) { + field2753: String + field2754: Object497 + field2763: Object498 +} + +type Object4960 @Directive21(argument61 : "stringValue23853") @Directive44(argument97 : ["stringValue23851", "stringValue23852"]) { + field23738: String + field23739: Enum1075 + field23740: String + field23741: Enum1129 + field23742: String + field23743: Enum1074 + field23744: Scalar2 +} + +type Object4961 @Directive21(argument61 : "stringValue23856") @Directive44(argument97 : ["stringValue23854", "stringValue23855"]) { + field23747: Scalar2 + field23748: Enum1180 + field23749: [Object4962] + field23763: [Object4962] + field23764: Object4965 + field23775: [Object4967] +} + +type Object4962 @Directive21(argument61 : "stringValue23861") @Directive44(argument97 : ["stringValue23859", "stringValue23860"]) { + field23750: Scalar2 + field23751: String + field23752: Object4963 + field23762: [String] +} + +type Object4963 @Directive21(argument61 : "stringValue23864") @Directive44(argument97 : ["stringValue23862", "stringValue23863"]) { + field23753: Scalar2 + field23754: Enum1181 + field23755: [Object4964] + field23761: [Object4963] +} + +type Object4964 @Directive21(argument61 : "stringValue23869") @Directive44(argument97 : ["stringValue23867", "stringValue23868"]) { + field23756: Scalar2 + field23757: Enum1182 + field23758: String + field23759: String + field23760: Boolean +} + +type Object4965 @Directive21(argument61 : "stringValue23874") @Directive44(argument97 : ["stringValue23872", "stringValue23873"]) { + field23765: String + field23766: Scalar2 + field23767: String + field23768: String + field23769: Boolean + field23770: Object4966 + field23773: String + field23774: Scalar2 +} + +type Object4966 @Directive21(argument61 : "stringValue23877") @Directive44(argument97 : ["stringValue23875", "stringValue23876"]) { + field23771: String + field23772: String +} + +type Object4967 @Directive21(argument61 : "stringValue23880") @Directive44(argument97 : ["stringValue23878", "stringValue23879"]) { + field23776: Scalar2 + field23777: Enum1183 + field23778: Scalar2 + field23779: [Scalar2] +} + +type Object4968 @Directive21(argument61 : "stringValue23887") @Directive44(argument97 : ["stringValue23885", "stringValue23886"]) { + field23788: Scalar2 + field23789: Object4969 + field23792: [Object4968] + field23793: [Object4837] + field23794: String + field23795: [Object4840] + field23796: Float + field23797: String +} + +type Object4969 @Directive21(argument61 : "stringValue23890") @Directive44(argument97 : ["stringValue23888", "stringValue23889"]) { + field23790: Scalar1 + field23791: Enum1185 +} + +type Object497 @Directive20(argument58 : "stringValue2501", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2500") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2502", "stringValue2503"]) { + field2755: String + field2756: String + field2757: String + field2758: String + field2759: String + field2760: String + field2761: String + field2762: Enum10 +} + +type Object4970 @Directive21(argument61 : "stringValue23895") @Directive44(argument97 : ["stringValue23893", "stringValue23894"]) { + field23803: Scalar2 + field23804: String + field23805: String + field23806: Enum1186 + field23807: Scalar2 + field23808: Scalar2 + field23809: [Object4970] + field23810: [Object4960] + field23811: [Object4840] + field23812: [Object4968] +} + +type Object4971 @Directive21(argument61 : "stringValue23933") @Directive44(argument97 : ["stringValue23931", "stringValue23932"]) { + field23830: Scalar2 + field23831: Scalar2 + field23832: Enum1190 + field23833: Enum1191 + field23834: String + field23835: [Object4972] + field23849: Enum1194 + field23850: String + field23851: Enum1193 + field23852: Scalar2 +} + +type Object4972 @Directive21(argument61 : "stringValue23936") @Directive44(argument97 : ["stringValue23934", "stringValue23935"]) { + field23836: Scalar2 + field23837: Scalar2 + field23838: Scalar2 + field23839: Scalar2 + field23840: Enum1191 + field23841: Enum1190 + field23842: Enum1192 + field23843: String + field23844: Scalar4 + field23845: Scalar4 + field23846: String + field23847: Enum1193 + field23848: Scalar2 +} + +type Object4973 @Directive44(argument97 : ["stringValue24137"]) { + field23856(argument1048: InputObject610!): Object4974 @Directive35(argument89 : "stringValue24139", argument90 : true, argument91 : "stringValue24138", argument92 : 104, argument93 : "stringValue24140", argument94 : false) + field23861(argument1049: InputObject611!): Object4975 @Directive35(argument89 : "stringValue24146", argument90 : true, argument91 : "stringValue24145", argument92 : 105, argument93 : "stringValue24147", argument94 : false) + field23863(argument1050: InputObject612!): Object4976 @Directive35(argument89 : "stringValue24152", argument90 : true, argument91 : "stringValue24151", argument92 : 106, argument93 : "stringValue24153", argument94 : false) +} + +type Object4974 @Directive21(argument61 : "stringValue24143") @Directive44(argument97 : ["stringValue24142"]) { + field23857: Boolean + field23858: Enum1195 + field23859: String + field23860: Scalar2 +} + +type Object4975 @Directive21(argument61 : "stringValue24150") @Directive44(argument97 : ["stringValue24149"]) { + field23862: Boolean! +} + +type Object4976 @Directive21(argument61 : "stringValue24157") @Directive44(argument97 : ["stringValue24156"]) { + field23864: Object4977 +} + +type Object4977 @Directive21(argument61 : "stringValue24159") @Directive44(argument97 : ["stringValue24158"]) { + field23865: Scalar2 + field23866: Scalar2 + field23867: Enum1196 + field23868: Enum1197 + field23869: Int + field23870: String + field23871: String + field23872: String + field23873: String + field23874: String + field23875: String + field23876: String + field23877: Int + field23878: String + field23879: String + field23880: Scalar4 + field23881: String + field23882: Int +} + +type Object4978 @Directive44(argument97 : ["stringValue24161"]) { + field23884(argument1051: InputObject613!): Object4979 @Directive35(argument89 : "stringValue24163", argument90 : true, argument91 : "stringValue24162", argument93 : "stringValue24164", argument94 : false) + field23889: Object4979 @Directive35(argument89 : "stringValue24178", argument90 : true, argument91 : "stringValue24177", argument93 : "stringValue24179", argument94 : false) + field23890: Object4979 @Directive35(argument89 : "stringValue24181", argument90 : true, argument91 : "stringValue24180", argument93 : "stringValue24182", argument94 : false) +} + +type Object4979 @Directive21(argument61 : "stringValue24168") @Directive44(argument97 : ["stringValue24167"]) { + field23885: Union207 +} + +type Object498 @Directive20(argument58 : "stringValue2505", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2504") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2506", "stringValue2507"]) { + field2764: String + field2765: String + field2766: Object499 + field2769: Scalar2 + field2770: Object1 +} + +type Object4980 @Directive21(argument61 : "stringValue24171") @Directive44(argument97 : ["stringValue24170"]) { + field23886: Enum1198 +} + +type Object4981 @Directive21(argument61 : "stringValue24174") @Directive44(argument97 : ["stringValue24173"]) { + field23887: Scalar1 +} + +type Object4982 @Directive21(argument61 : "stringValue24176") @Directive44(argument97 : ["stringValue24175"]) { + field23888: String +} + +type Object4983 @Directive44(argument97 : ["stringValue24183"]) { + field23892(argument1052: InputObject615!): Object4984 @Directive35(argument89 : "stringValue24185", argument90 : true, argument91 : "stringValue24184", argument92 : 107, argument93 : "stringValue24186", argument94 : true) @deprecated + field23897(argument1053: InputObject616!): Object4985 @Directive35(argument89 : "stringValue24191", argument90 : true, argument91 : "stringValue24190", argument92 : 108, argument93 : "stringValue24192", argument94 : true) @deprecated + field23910(argument1054: InputObject635!): Object4988 @Directive35(argument89 : "stringValue24235", argument90 : true, argument91 : "stringValue24234", argument92 : 109, argument93 : "stringValue24236", argument94 : true) +} + +type Object4984 @Directive21(argument61 : "stringValue24189") @Directive44(argument97 : ["stringValue24188"]) { + field23893: Boolean + field23894: Int + field23895: Int + field23896: Int +} + +type Object4985 @Directive21(argument61 : "stringValue24228") @Directive44(argument97 : ["stringValue24227"]) { + field23898: [Object4986] +} + +type Object4986 @Directive21(argument61 : "stringValue24230") @Directive44(argument97 : ["stringValue24229"]) { + field23899: [Object4987] + field23905: Int + field23906: Int + field23907: Int + field23908: String + field23909: Enum1199 +} + +type Object4987 @Directive21(argument61 : "stringValue24232") @Directive44(argument97 : ["stringValue24231"]) { + field23900: Scalar2 + field23901: [Enum1199] + field23902: Boolean + field23903: Enum1214 + field23904: String +} + +type Object4988 @Directive21(argument61 : "stringValue24239") @Directive44(argument97 : ["stringValue24238"]) { + field23911: Boolean + field23912: Int + field23913: Int + field23914: Int + field23915: [Object4989] + field23920: String +} + +type Object4989 @Directive21(argument61 : "stringValue24241") @Directive44(argument97 : ["stringValue24240"]) { + field23916: Scalar2 + field23917: [Enum1199] + field23918: [Object4987] + field23919: Boolean +} + +type Object499 @Directive20(argument58 : "stringValue2509", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2508") @Directive31 @Directive44(argument97 : ["stringValue2510", "stringValue2511"]) { + field2767: String + field2768: String +} + +type Object4990 @Directive44(argument97 : ["stringValue24242"]) { + field23922(argument1055: InputObject636!): Object4991 @Directive35(argument89 : "stringValue24244", argument90 : true, argument91 : "stringValue24243", argument92 : 110, argument93 : "stringValue24245", argument94 : false) + field23925(argument1056: InputObject637!): Object4992 @Directive35(argument89 : "stringValue24250", argument90 : true, argument91 : "stringValue24249", argument92 : 111, argument93 : "stringValue24251", argument94 : false) + field23928(argument1057: InputObject638!): Object4993 @Directive35(argument89 : "stringValue24256", argument90 : true, argument91 : "stringValue24255", argument92 : 112, argument93 : "stringValue24257", argument94 : false) + field23931(argument1058: InputObject639!): Object4991 @Directive35(argument89 : "stringValue24262", argument90 : true, argument91 : "stringValue24261", argument92 : 113, argument93 : "stringValue24263", argument94 : false) + field23932(argument1059: InputObject641!): Object4994 @Directive35(argument89 : "stringValue24268", argument90 : true, argument91 : "stringValue24267", argument92 : 114, argument93 : "stringValue24269", argument94 : false) + field24188(argument1060: InputObject642!): Object4991 @Directive35(argument89 : "stringValue24383", argument90 : true, argument91 : "stringValue24382", argument92 : 115, argument93 : "stringValue24384", argument94 : false) + field24189(argument1061: InputObject643!): Object5046 @Directive35(argument89 : "stringValue24388", argument90 : true, argument91 : "stringValue24387", argument92 : 116, argument93 : "stringValue24389", argument94 : false) + field24195(argument1062: InputObject638!): Object5048 @Directive35(argument89 : "stringValue24396", argument90 : true, argument91 : "stringValue24395", argument92 : 117, argument93 : "stringValue24397", argument94 : false) + field24198(argument1063: InputObject644!): Object5048 @Directive35(argument89 : "stringValue24401", argument90 : true, argument91 : "stringValue24400", argument92 : 118, argument93 : "stringValue24402", argument94 : false) + field24199(argument1064: InputObject646!): Object5048 @Directive35(argument89 : "stringValue24406", argument90 : true, argument91 : "stringValue24405", argument92 : 119, argument93 : "stringValue24407", argument94 : false) + field24200(argument1065: InputObject648!): Object4991 @Directive35(argument89 : "stringValue24411", argument90 : true, argument91 : "stringValue24410", argument92 : 120, argument93 : "stringValue24412", argument94 : false) + field24201(argument1066: InputObject649!): Object4992 @Directive35(argument89 : "stringValue24416", argument90 : true, argument91 : "stringValue24415", argument92 : 121, argument93 : "stringValue24417", argument94 : false) + field24202(argument1067: InputObject644!): Object4993 @Directive35(argument89 : "stringValue24421", argument90 : true, argument91 : "stringValue24420", argument92 : 122, argument93 : "stringValue24422", argument94 : false) + field24203(argument1068: InputObject651!): Object4991 @Directive35(argument89 : "stringValue24424", argument90 : true, argument91 : "stringValue24423", argument92 : 123, argument93 : "stringValue24425", argument94 : false) + field24204(argument1069: InputObject652!): Object5049 @Directive35(argument89 : "stringValue24428", argument90 : true, argument91 : "stringValue24427", argument92 : 124, argument93 : "stringValue24429", argument94 : false) + field24208(argument1070: InputObject653!): Object4991 @Directive35(argument89 : "stringValue24437", argument90 : true, argument91 : "stringValue24436", argument92 : 125, argument93 : "stringValue24438", argument94 : false) + field24209(argument1071: InputObject654!): Object4992 @Directive35(argument89 : "stringValue24441", argument90 : true, argument91 : "stringValue24440", argument92 : 126, argument93 : "stringValue24442", argument94 : false) + field24210(argument1072: InputObject656!): Object4993 @Directive35(argument89 : "stringValue24446", argument90 : true, argument91 : "stringValue24445", argument92 : 127, argument93 : "stringValue24447", argument94 : false) + field24211(argument1073: InputObject658!): Object4991 @Directive35(argument89 : "stringValue24451", argument90 : true, argument91 : "stringValue24450", argument92 : 128, argument93 : "stringValue24452", argument94 : false) + field24212(argument1074: InputObject659!): Object4992 @Directive35(argument89 : "stringValue24455", argument90 : true, argument91 : "stringValue24454", argument92 : 129, argument93 : "stringValue24456", argument94 : false) + field24213(argument1075: InputObject660!): Object4993 @Directive35(argument89 : "stringValue24459", argument90 : true, argument91 : "stringValue24458", argument92 : 130, argument93 : "stringValue24460", argument94 : false) +} + +type Object4991 @Directive21(argument61 : "stringValue24248") @Directive44(argument97 : ["stringValue24247"]) { + field23923: Boolean! + field23924: String +} + +type Object4992 @Directive21(argument61 : "stringValue24254") @Directive44(argument97 : ["stringValue24253"]) { + field23926: Boolean! + field23927: String +} + +type Object4993 @Directive21(argument61 : "stringValue24260") @Directive44(argument97 : ["stringValue24259"]) { + field23929: Boolean! + field23930: String +} + +type Object4994 @Directive21(argument61 : "stringValue24273") @Directive44(argument97 : ["stringValue24272"]) { + field23933: Object4995 + field24187: String +} + +type Object4995 @Directive21(argument61 : "stringValue24275") @Directive44(argument97 : ["stringValue24274"]) { + field23934: String + field23935: String + field23936: Object4996 + field23940: Union208 + field24181: String + field24182: String + field24183: String + field24184: [Object4996] + field24185: String + field24186: String +} + +type Object4996 @Directive21(argument61 : "stringValue24277") @Directive44(argument97 : ["stringValue24276"]) { + field23937: String + field23938: String + field23939: Boolean +} + +type Object4997 @Directive21(argument61 : "stringValue24280") @Directive44(argument97 : ["stringValue24279"]) { + field23941: [Object4998] + field23949: Object5000 + field23956: Object5001 + field23977: Object5005 + field23984: Object5007 + field23992: [Object4998] + field23993: [Object4998] + field23994: Object5009 + field24032: Object5014 +} + +type Object4998 @Directive21(argument61 : "stringValue24282") @Directive44(argument97 : ["stringValue24281"]) { + field23942: String + field23943: Boolean + field23944: [Object4999] + field23948: [String] +} + +type Object4999 @Directive21(argument61 : "stringValue24284") @Directive44(argument97 : ["stringValue24283"]) { + field23945: String + field23946: String + field23947: String +} + +type Object5 @Directive20(argument58 : "stringValue36", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue35") @Directive31 @Directive44(argument97 : ["stringValue37", "stringValue38"]) { + field37: String + field38: String + field39: String + field40: String + field41: String + field42: String + field43: [String] + field44: Object6 + field47: [Object7] + field50: Object8 + field57: Int + field58: Int + field59: String + field60: String + field61: Int + field62: Int + field63: Int + field64: Boolean + field65: String + field66: String + field67: String + field68: String + field69: String + field70: String + field71: String + field72: String + field73: String +} + +type Object50 @Directive21(argument61 : "stringValue252") @Directive44(argument97 : ["stringValue251"]) { + field278: Enum28 + field279: Object51 + field854: Object133 + field858: String + field859: String +} + +type Object500 @Directive20(argument58 : "stringValue2513", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2512") @Directive31 @Directive44(argument97 : ["stringValue2514", "stringValue2515"]) { + field2774: Enum10 + field2775: String + field2776: String + field2777: String + field2778: String + field2779: String @deprecated + field2780: String @deprecated + field2781: [Object452] + field2782: Boolean + field2783: Interface3 + field2784: Object449 + field2785: String @deprecated + field2786: Object450 + field2787: String +} + +type Object5000 @Directive21(argument61 : "stringValue24286") @Directive44(argument97 : ["stringValue24285"]) { + field23950: String + field23951: String + field23952: String + field23953: String + field23954: String + field23955: String +} + +type Object5001 @Directive21(argument61 : "stringValue24288") @Directive44(argument97 : ["stringValue24287"]) { + field23957: String + field23958: [Object5002] + field23973: [Object5002] + field23974: [Object5002] + field23975: [Object5002] + field23976: Scalar5 +} + +type Object5002 @Directive21(argument61 : "stringValue24290") @Directive44(argument97 : ["stringValue24289"]) { + field23959: Object5003 + field23968: String + field23969: Boolean + field23970: Boolean + field23971: Boolean + field23972: Enum1217 +} + +type Object5003 @Directive21(argument61 : "stringValue24292") @Directive44(argument97 : ["stringValue24291"]) { + field23960: String + field23961: String! + field23962: Object5004! + field23966: String + field23967: String +} + +type Object5004 @Directive21(argument61 : "stringValue24294") @Directive44(argument97 : ["stringValue24293"]) { + field23963: String! + field23964: Scalar2! + field23965: String! +} + +type Object5005 @Directive21(argument61 : "stringValue24297") @Directive44(argument97 : ["stringValue24296"]) { + field23978: String + field23979: [Object5006] +} + +type Object5006 @Directive21(argument61 : "stringValue24299") @Directive44(argument97 : ["stringValue24298"]) { + field23980: String + field23981: Object4998 + field23982: String + field23983: String +} + +type Object5007 @Directive21(argument61 : "stringValue24301") @Directive44(argument97 : ["stringValue24300"]) { + field23985: String + field23986: [Object5008] +} + +type Object5008 @Directive21(argument61 : "stringValue24303") @Directive44(argument97 : ["stringValue24302"]) { + field23987: Enum1218 + field23988: String + field23989: Object4998 + field23990: Object4998 + field23991: Boolean +} + +type Object5009 @Directive21(argument61 : "stringValue24306") @Directive44(argument97 : ["stringValue24305"]) { + field23995: String + field23996: String + field23997: String + field23998: String + field23999: String + field24000: [Object5010] + field24014: String + field24015: String + field24016: String + field24017: String + field24018: [String] + field24019: String + field24020: String + field24021: Object5012 +} + +type Object501 @Directive22(argument62 : "stringValue2516") @Directive31 @Directive44(argument97 : ["stringValue2517", "stringValue2518"]) { + field2788: Enum157 + field2789: [Object502] + field2839: [Object474] + field2840: Enum167 +} + +type Object5010 @Directive21(argument61 : "stringValue24308") @Directive44(argument97 : ["stringValue24307"]) { + field24001: [String] + field24002: [String] + field24003: String + field24004: String + field24005: Float + field24006: Float + field24007: Boolean + field24008: Boolean + field24009: Scalar4 + field24010: [Object5011] + field24013: [Object5011] +} + +type Object5011 @Directive21(argument61 : "stringValue24310") @Directive44(argument97 : ["stringValue24309"]) { + field24011: String + field24012: String +} + +type Object5012 @Directive21(argument61 : "stringValue24312") @Directive44(argument97 : ["stringValue24311"]) { + field24022: String + field24023: String + field24024: [Object5013] + field24030: String + field24031: String +} + +type Object5013 @Directive21(argument61 : "stringValue24314") @Directive44(argument97 : ["stringValue24313"]) { + field24025: String + field24026: [String] + field24027: String + field24028: Scalar4 + field24029: String +} + +type Object5014 @Directive21(argument61 : "stringValue24316") @Directive44(argument97 : ["stringValue24315"]) { + field24033: String + field24034: String + field24035: String + field24036: String + field24037: String + field24038: String + field24039: String + field24040: Object5002 + field24041: Object5002 + field24042: Object5002 + field24043: String + field24044: String + field24045: String + field24046: String +} + +type Object5015 @Directive21(argument61 : "stringValue24318") @Directive44(argument97 : ["stringValue24317"]) { + field24047: String + field24048: [Object5016] + field24064: Object5018 + field24068: Object5019 +} + +type Object5016 @Directive21(argument61 : "stringValue24320") @Directive44(argument97 : ["stringValue24319"]) { + field24049: String + field24050: String + field24051: String + field24052: String + field24053: String + field24054: [Object5017] + field24058: Boolean + field24059: Boolean + field24060: String + field24061: Boolean + field24062: Object5014 + field24063: String +} + +type Object5017 @Directive21(argument61 : "stringValue24322") @Directive44(argument97 : ["stringValue24321"]) { + field24055: Object4998 + field24056: String + field24057: String +} + +type Object5018 @Directive21(argument61 : "stringValue24324") @Directive44(argument97 : ["stringValue24323"]) { + field24065: String + field24066: String + field24067: String +} + +type Object5019 @Directive21(argument61 : "stringValue24326") @Directive44(argument97 : ["stringValue24325"]) { + field24069: String + field24070: String +} + +type Object502 @Directive20(argument58 : "stringValue2523", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2522") @Directive31 @Directive44(argument97 : ["stringValue2524", "stringValue2525"]) { + field2790: Enum1! + field2791: Enum158! + field2792: Enum159! + field2793: Object503 + field2818: Enum164 + field2819: [Object505!]! +} + +type Object5020 @Directive21(argument61 : "stringValue24328") @Directive44(argument97 : ["stringValue24327"]) { + field24071: String + field24072: [Object4998] + field24073: String +} + +type Object5021 @Directive21(argument61 : "stringValue24330") @Directive44(argument97 : ["stringValue24329"]) { + field24074: String + field24075: [Object4998] + field24076: String +} + +type Object5022 @Directive21(argument61 : "stringValue24332") @Directive44(argument97 : ["stringValue24331"]) { + field24077: [Object5023] +} + +type Object5023 @Directive21(argument61 : "stringValue24334") @Directive44(argument97 : ["stringValue24333"]) { + field24078: String + field24079: [Object4998] + field24080: String + field24081: String + field24082: Boolean +} + +type Object5024 @Directive21(argument61 : "stringValue24336") @Directive44(argument97 : ["stringValue24335"]) { + field24083: [Object5025] + field24086: [Object5026] + field24089: Object5027 +} + +type Object5025 @Directive21(argument61 : "stringValue24338") @Directive44(argument97 : ["stringValue24337"]) { + field24084: String! + field24085: String! +} + +type Object5026 @Directive21(argument61 : "stringValue24340") @Directive44(argument97 : ["stringValue24339"]) { + field24087: String + field24088: Object4995 +} + +type Object5027 @Directive21(argument61 : "stringValue24342") @Directive44(argument97 : ["stringValue24341"]) { + field24090: [Object5028] @deprecated + field24094: Object5029 @deprecated + field24104: Object5029 + field24105: Object5029 + field24106: Object5030 + field24118: Object5031 + field24124: Object5029 + field24125: Object5029 +} + +type Object5028 @Directive21(argument61 : "stringValue24344") @Directive44(argument97 : ["stringValue24343"]) { + field24091: Int + field24092: Enum1219 @deprecated + field24093: String +} + +type Object5029 @Directive21(argument61 : "stringValue24347") @Directive44(argument97 : ["stringValue24346"]) { + field24095: String + field24096: String + field24097: [Object5028] + field24098: Boolean + field24099: String + field24100: [String] + field24101: String + field24102: String + field24103: Object5028 +} + +type Object503 @Directive20(argument58 : "stringValue2535", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue2534") @Directive31 @Directive44(argument97 : ["stringValue2536", "stringValue2537"]) { + field2794: Int + field2795: Int + field2796: Int + field2797: Int + field2798: Object504 + field2811: Int + field2812: Int + field2813: Object10 + field2814: Enum163 @deprecated + field2815: Enum162 @deprecated + field2816: Enum162 @deprecated + field2817: Boolean @deprecated +} + +type Object5030 @Directive21(argument61 : "stringValue24349") @Directive44(argument97 : ["stringValue24348"]) { + field24107: String + field24108: String + field24109: Object5029 @deprecated + field24110: Object5029 @deprecated + field24111: Object5029 @deprecated + field24112: [Object5028] + field24113: Boolean + field24114: String + field24115: [String] + field24116: String + field24117: Object5028 +} + +type Object5031 @Directive21(argument61 : "stringValue24351") @Directive44(argument97 : ["stringValue24350"]) { + field24119: String + field24120: String + field24121: String + field24122: String + field24123: Enum1220 +} + +type Object5032 @Directive21(argument61 : "stringValue24354") @Directive44(argument97 : ["stringValue24353"]) { + field24126: String + field24127: String + field24128: String + field24129: String +} + +type Object5033 @Directive21(argument61 : "stringValue24356") @Directive44(argument97 : ["stringValue24355"]) { + field24130: String + field24131: Object4998 + field24132: Scalar5 + field24133: Object4998 + field24134: Scalar5 + field24135: Enum1221 + field24136: [Object4998] +} + +type Object5034 @Directive21(argument61 : "stringValue24359") @Directive44(argument97 : ["stringValue24358"]) { + field24137: [Object4998] +} + +type Object5035 @Directive21(argument61 : "stringValue24361") @Directive44(argument97 : ["stringValue24360"]) { + field24138: [Object5002] + field24139: Object5003 +} + +type Object5036 @Directive21(argument61 : "stringValue24363") @Directive44(argument97 : ["stringValue24362"]) { + field24140: [Object5002] + field24141: Object5003 +} + +type Object5037 @Directive21(argument61 : "stringValue24365") @Directive44(argument97 : ["stringValue24364"]) { + field24142: Object5038 + field24146: Object5039 + field24149: Object4998 +} + +type Object5038 @Directive21(argument61 : "stringValue24367") @Directive44(argument97 : ["stringValue24366"]) { + field24143: String + field24144: Object5003 + field24145: Object5003 +} + +type Object5039 @Directive21(argument61 : "stringValue24369") @Directive44(argument97 : ["stringValue24368"]) { + field24147: String + field24148: String +} + +type Object504 @Directive20(argument58 : "stringValue2539", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue2538") @Directive31 @Directive44(argument97 : ["stringValue2540", "stringValue2541"]) { + field2799: Enum160 + field2800: Enum161 + field2801: Enum6 + field2802: Enum6 + field2803: Int + field2804: Boolean + field2805: Boolean + field2806: Boolean + field2807: Boolean + field2808: Boolean + field2809: Enum162 @deprecated + field2810: Int +} + +type Object5040 @Directive21(argument61 : "stringValue24371") @Directive44(argument97 : ["stringValue24370"]) { + field24150: Object4998 + field24151: Object5003 + field24152: String + field24153: String + field24154: Object5003 + field24155: [Object5041] + field24161: Object5042 + field24173: Object4998 + field24174: [Object5002] +} + +type Object5041 @Directive21(argument61 : "stringValue24373") @Directive44(argument97 : ["stringValue24372"]) { + field24156: String + field24157: String + field24158: Boolean + field24159: Float + field24160: Scalar2 +} + +type Object5042 @Directive21(argument61 : "stringValue24375") @Directive44(argument97 : ["stringValue24374"]) { + field24162: String + field24163: String + field24164: String + field24165: Float + field24166: Float + field24167: String + field24168: String + field24169: String + field24170: String + field24171: String + field24172: String +} + +type Object5043 @Directive21(argument61 : "stringValue24377") @Directive44(argument97 : ["stringValue24376"]) { + field24175: [Object4998] +} + +type Object5044 @Directive21(argument61 : "stringValue24379") @Directive44(argument97 : ["stringValue24378"]) { + field24176: [Object5023] +} + +type Object5045 @Directive21(argument61 : "stringValue24381") @Directive44(argument97 : ["stringValue24380"]) { + field24177: [Object4998] + field24178: String + field24179: String + field24180: Boolean +} + +type Object5046 @Directive21(argument61 : "stringValue24392") @Directive44(argument97 : ["stringValue24391"]) { + field24190: Object5047! +} + +type Object5047 @Directive21(argument61 : "stringValue24394") @Directive44(argument97 : ["stringValue24393"]) { + field24191: Enum1215 + field24192: String + field24193: String + field24194: String +} + +type Object5048 @Directive21(argument61 : "stringValue24399") @Directive44(argument97 : ["stringValue24398"]) { + field24196: Object4995 + field24197: Scalar2 +} + +type Object5049 @Directive21(argument61 : "stringValue24433") @Directive44(argument97 : ["stringValue24432"]) { + field24205: Object5050! +} + +type Object505 @Directive20(argument58 : "stringValue2561", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue2560") @Directive31 @Directive44(argument97 : ["stringValue2562", "stringValue2563"]) { + field2820: String! + field2821: Object506 + field2829: Object504 + field2830: Int + field2831: Int + field2832: Int + field2833: Int + field2834: Object10 + field2835: Enum166 + field2836: Int + field2837: Enum163 @deprecated + field2838: Enum162 @deprecated +} + +type Object5050 @Directive21(argument61 : "stringValue24435") @Directive44(argument97 : ["stringValue24434"]) { + field24206: String! + field24207: String! +} + +type Object5051 @Directive44(argument97 : ["stringValue24462"]) { + field24215(argument1076: InputObject661!): Object5052 @Directive35(argument89 : "stringValue24464", argument90 : true, argument91 : "stringValue24463", argument93 : "stringValue24465", argument94 : true) + field24251(argument1077: InputObject664!): Object5055 @Directive35(argument89 : "stringValue24479", argument90 : true, argument91 : "stringValue24478", argument93 : "stringValue24480", argument94 : true) + field24293(argument1078: InputObject666!): Object5060 @Directive35(argument89 : "stringValue24496", argument90 : true, argument91 : "stringValue24495", argument93 : "stringValue24497", argument94 : true) + field24295(argument1079: InputObject667!): Object5061 @Directive35(argument89 : "stringValue24502", argument90 : false, argument91 : "stringValue24501", argument93 : "stringValue24503", argument94 : true) @deprecated + field24297(argument1080: InputObject668!): Object5060 @Directive35(argument89 : "stringValue24508", argument90 : true, argument91 : "stringValue24507", argument93 : "stringValue24509", argument94 : true) + field24298(argument1081: InputObject669!): Object5062 @Directive35(argument89 : "stringValue24512", argument90 : true, argument91 : "stringValue24511", argument93 : "stringValue24513", argument94 : true) + field24301(argument1082: InputObject670!): Object5063 @Directive35(argument89 : "stringValue24518", argument90 : true, argument91 : "stringValue24517", argument93 : "stringValue24519", argument94 : true) + field24314(argument1083: InputObject672!): Object5065 @Directive35(argument89 : "stringValue24527", argument90 : true, argument91 : "stringValue24526", argument93 : "stringValue24528", argument94 : true) + field24316(argument1084: InputObject673!): Object5066 @Directive35(argument89 : "stringValue24533", argument90 : true, argument91 : "stringValue24532", argument92 : 131, argument93 : "stringValue24534", argument94 : true) + field24319(argument1085: InputObject674!): Object5067 @Directive35(argument89 : "stringValue24539", argument90 : true, argument91 : "stringValue24538", argument92 : 132, argument93 : "stringValue24540", argument94 : true) + field24324(argument1086: InputObject675!): Object5068 @Directive35(argument89 : "stringValue24545", argument90 : true, argument91 : "stringValue24544", argument93 : "stringValue24546", argument94 : true) + field24326(argument1087: InputObject677!): Object5067 @Directive35(argument89 : "stringValue24552", argument90 : true, argument91 : "stringValue24551", argument92 : 133, argument93 : "stringValue24553", argument94 : true) + field24327(argument1088: InputObject679!): Object5069 @Directive35(argument89 : "stringValue24558", argument90 : true, argument91 : "stringValue24557", argument93 : "stringValue24559", argument94 : true) +} + +type Object5052 @Directive21(argument61 : "stringValue24473") @Directive44(argument97 : ["stringValue24472"]) { + field24216: Object5053 +} + +type Object5053 @Directive21(argument61 : "stringValue24475") @Directive44(argument97 : ["stringValue24474"]) { + field24217: Scalar2! + field24218: String + field24219: [String] + field24220: String + field24221: String + field24222: String + field24223: String + field24224: String + field24225: Scalar4 + field24226: Scalar4 + field24227: Scalar2 + field24228: Enum1225 + field24229: Scalar2 + field24230: Scalar3 + field24231: String + field24232: Scalar2 + field24233: String + field24234: String + field24235: Enum1226 + field24236: Scalar2 + field24237: Enum1227 + field24238: String + field24239: Object5054 + field24247: Scalar2 + field24248: String + field24249: [String] + field24250: Int +} + +type Object5054 @Directive21(argument61 : "stringValue24477") @Directive44(argument97 : ["stringValue24476"]) { + field24240: Scalar2 + field24241: Boolean + field24242: Boolean + field24243: Scalar4 + field24244: Scalar4 + field24245: Scalar4 + field24246: Scalar4 +} + +type Object5055 @Directive21(argument61 : "stringValue24484") @Directive44(argument97 : ["stringValue24483"]) { + field24252: Object5056! + field24275: [Object5058]! +} + +type Object5056 @Directive21(argument61 : "stringValue24486") @Directive44(argument97 : ["stringValue24485"]) { + field24253: Scalar2! + field24254: String + field24255: String + field24256: Scalar2 + field24257: String + field24258: Scalar4 + field24259: Scalar4 + field24260: Scalar4 + field24261: Scalar1 + field24262: Boolean + field24263: Boolean + field24264: Object5057 + field24270: Scalar1 + field24271: String + field24272: String + field24273: Scalar2 + field24274: Float +} + +type Object5057 @Directive21(argument61 : "stringValue24488") @Directive44(argument97 : ["stringValue24487"]) { + field24265: Scalar2! + field24266: String + field24267: String + field24268: Boolean + field24269: Scalar2 +} + +type Object5058 @Directive21(argument61 : "stringValue24490") @Directive44(argument97 : ["stringValue24489"]) { + field24276: Scalar2 + field24277: Scalar2! + field24278: Scalar2! + field24279: Scalar2 + field24280: String + field24281: Enum1228 + field24282: String + field24283: Enum1229 + field24284: [Object5059] + field24292: Boolean +} + +type Object5059 @Directive21(argument61 : "stringValue24494") @Directive44(argument97 : ["stringValue24493"]) { + field24285: Scalar2 + field24286: Scalar2 + field24287: String + field24288: String + field24289: Scalar2 + field24290: Scalar4 + field24291: Scalar4 +} + +type Object506 @Directive20(argument58 : "stringValue2565", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue2564") @Directive31 @Directive44(argument97 : ["stringValue2566", "stringValue2567"]) { + field2822: Enum160 + field2823: Enum165 + field2824: Object10 + field2825: Int @deprecated + field2826: Int @deprecated + field2827: Enum162 @deprecated + field2828: Enum162 @deprecated +} + +type Object5060 @Directive21(argument61 : "stringValue24500") @Directive44(argument97 : ["stringValue24499"]) { + field24294: [Object5056] +} + +type Object5061 @Directive21(argument61 : "stringValue24506") @Directive44(argument97 : ["stringValue24505"]) { + field24296: String +} + +type Object5062 @Directive21(argument61 : "stringValue24516") @Directive44(argument97 : ["stringValue24515"]) { + field24299: Scalar2! + field24300: Scalar1! +} + +type Object5063 @Directive21(argument61 : "stringValue24523") @Directive44(argument97 : ["stringValue24522"]) { + field24302: Object5064 +} + +type Object5064 @Directive21(argument61 : "stringValue24525") @Directive44(argument97 : ["stringValue24524"]) { + field24303: Scalar2! + field24304: Scalar2 + field24305: Scalar2 + field24306: Boolean + field24307: Boolean + field24308: Scalar2 + field24309: Scalar2 + field24310: Scalar2 + field24311: Scalar2 + field24312: Scalar4 + field24313: Scalar4 +} + +type Object5065 @Directive21(argument61 : "stringValue24531") @Directive44(argument97 : ["stringValue24530"]) { + field24315: Boolean +} + +type Object5066 @Directive21(argument61 : "stringValue24537") @Directive44(argument97 : ["stringValue24536"]) { + field24317: Scalar2! + field24318: Scalar1! +} + +type Object5067 @Directive21(argument61 : "stringValue24543") @Directive44(argument97 : ["stringValue24542"]) { + field24320: [Object5053] + field24321: Scalar2 + field24322: [Scalar2] + field24323: Object5057 +} + +type Object5068 @Directive21(argument61 : "stringValue24550") @Directive44(argument97 : ["stringValue24549"]) { + field24325: Object5056 +} + +type Object5069 @Directive21(argument61 : "stringValue24563") @Directive44(argument97 : ["stringValue24562"]) { + field24328: String + field24329: [Object5058] +} + +type Object507 @Directive22(argument62 : "stringValue2579") @Directive31 @Directive44(argument97 : ["stringValue2580", "stringValue2581"]) { + field2841: Object508 + field2845: Object508 +} + +type Object5070 @Directive44(argument97 : ["stringValue24564"]) { + field24331(argument1089: InputObject680!): Object5071 @Directive35(argument89 : "stringValue24566", argument90 : true, argument91 : "stringValue24565", argument93 : "stringValue24567", argument94 : false) + field24334(argument1090: InputObject681!): Object5072 @Directive35(argument89 : "stringValue24573", argument90 : true, argument91 : "stringValue24572", argument93 : "stringValue24574", argument94 : false) + field24346(argument1091: InputObject682!): Object5074 @Directive35(argument89 : "stringValue24581", argument90 : true, argument91 : "stringValue24580", argument92 : 134, argument93 : "stringValue24582", argument94 : false) + field24348(argument1092: InputObject683!): Object5075 @Directive35(argument89 : "stringValue24587", argument90 : true, argument91 : "stringValue24586", argument93 : "stringValue24588", argument94 : false) + field24350(argument1093: InputObject684!): Object5076 @Directive35(argument89 : "stringValue24593", argument90 : true, argument91 : "stringValue24592", argument93 : "stringValue24594", argument94 : false) + field24355(argument1094: InputObject685!): Object5078 @Directive35(argument89 : "stringValue24602", argument90 : true, argument91 : "stringValue24601", argument93 : "stringValue24603", argument94 : false) + field24357(argument1095: InputObject686!): Object5079 @Directive35(argument89 : "stringValue24608", argument90 : true, argument91 : "stringValue24607", argument93 : "stringValue24609", argument94 : false) +} + +type Object5071 @Directive21(argument61 : "stringValue24571") @Directive44(argument97 : ["stringValue24570"]) { + field24332: Scalar2! + field24333: Enum1232! +} + +type Object5072 @Directive21(argument61 : "stringValue24577") @Directive44(argument97 : ["stringValue24576"]) { + field24335: [Object5073!]! +} + +type Object5073 @Directive21(argument61 : "stringValue24579") @Directive44(argument97 : ["stringValue24578"]) { + field24336: Scalar2! + field24337: Scalar2! + field24338: Scalar2! + field24339: Scalar2! + field24340: Scalar2 + field24341: Scalar2 + field24342: Scalar2 + field24343: Scalar2 + field24344: Scalar4 + field24345: Scalar4 +} + +type Object5074 @Directive21(argument61 : "stringValue24585") @Directive44(argument97 : ["stringValue24584"]) { + field24347: Scalar2! +} + +type Object5075 @Directive21(argument61 : "stringValue24591") @Directive44(argument97 : ["stringValue24590"]) { + field24349: Scalar2! +} + +type Object5076 @Directive21(argument61 : "stringValue24598") @Directive44(argument97 : ["stringValue24597"]) { + field24351: Object5077 +} + +type Object5077 @Directive21(argument61 : "stringValue24600") @Directive44(argument97 : ["stringValue24599"]) { + field24352: Scalar2! + field24353: Scalar2! + field24354: Enum1233! +} + +type Object5078 @Directive21(argument61 : "stringValue24606") @Directive44(argument97 : ["stringValue24605"]) { + field24356: [Object5073!]! +} + +type Object5079 @Directive21(argument61 : "stringValue24613") @Directive44(argument97 : ["stringValue24612"]) { + field24358: [Object5080!]! +} + +type Object508 @Directive20(argument58 : "stringValue2583", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2582") @Directive31 @Directive44(argument97 : ["stringValue2584", "stringValue2585"]) { + field2842: String + field2843: [Object452] + field2844: Boolean +} + +type Object5080 @Directive21(argument61 : "stringValue24615") @Directive44(argument97 : ["stringValue24614"]) { + field24359: Scalar2! + field24360: Boolean! + field24361: String +} + +type Object5081 @Directive44(argument97 : ["stringValue24616"]) { + field24363(argument1096: InputObject687!): Object5082 @Directive35(argument89 : "stringValue24618", argument90 : true, argument91 : "stringValue24617", argument92 : 135, argument93 : "stringValue24619", argument94 : false) + field24366(argument1097: InputObject688!): Object5082 @Directive35(argument89 : "stringValue24624", argument90 : true, argument91 : "stringValue24623", argument92 : 136, argument93 : "stringValue24625", argument94 : false) + field24367(argument1098: InputObject689!): Object5082 @Directive35(argument89 : "stringValue24628", argument90 : true, argument91 : "stringValue24627", argument92 : 137, argument93 : "stringValue24629", argument94 : false) +} + +type Object5082 @Directive21(argument61 : "stringValue24622") @Directive44(argument97 : ["stringValue24621"]) { + field24364: Boolean + field24365: String +} + +type Object5083 @Directive44(argument97 : ["stringValue24631"]) { + field24369(argument1099: InputObject690!): Object5084 @Directive35(argument89 : "stringValue24633", argument90 : true, argument91 : "stringValue24632", argument92 : 138, argument93 : "stringValue24634", argument94 : false) +} + +type Object5084 @Directive21(argument61 : "stringValue24638") @Directive44(argument97 : ["stringValue24637"]) { + field24370: String + field24371: String +} + +type Object5085 @Directive44(argument97 : ["stringValue24639"]) { + field24373(argument1100: InputObject691!): Object5086 @Directive35(argument89 : "stringValue24641", argument90 : true, argument91 : "stringValue24640", argument92 : 139, argument93 : "stringValue24642", argument94 : false) + field24390(argument1101: InputObject692!): Object5090 @Directive35(argument89 : "stringValue24655", argument90 : true, argument91 : "stringValue24654", argument92 : 140, argument93 : "stringValue24656", argument94 : false) + field24392(argument1102: InputObject691!): Object5086 @Directive35(argument89 : "stringValue24661", argument90 : true, argument91 : "stringValue24660", argument92 : 141, argument93 : "stringValue24662", argument94 : false) + field24393(argument1103: InputObject693!): Object5091 @Directive35(argument89 : "stringValue24664", argument90 : true, argument91 : "stringValue24663", argument92 : 142, argument93 : "stringValue24665", argument94 : false) +} + +type Object5086 @Directive21(argument61 : "stringValue24647") @Directive44(argument97 : ["stringValue24646"]) { + field24374: Object5087! +} + +type Object5087 @Directive21(argument61 : "stringValue24649") @Directive44(argument97 : ["stringValue24648"]) { + field24375: Scalar2! + field24376: Object5088! + field24381: Object5088! + field24382: Object5089 + field24385: Object5089 + field24386: Object5089! + field24387: String + field24388: Boolean + field24389: String +} + +type Object5088 @Directive21(argument61 : "stringValue24651") @Directive44(argument97 : ["stringValue24650"]) { + field24377: Scalar2! + field24378: String! + field24379: String + field24380: String +} + +type Object5089 @Directive21(argument61 : "stringValue24653") @Directive44(argument97 : ["stringValue24652"]) { + field24383: String! + field24384: String +} + +type Object509 @Directive22(argument62 : "stringValue2586") @Directive31 @Directive44(argument97 : ["stringValue2587", "stringValue2588"]) { + field2846: String + field2847: Object452 + field2848: Object452 +} + +type Object5090 @Directive21(argument61 : "stringValue24659") @Directive44(argument97 : ["stringValue24658"]) { + field24391: Boolean +} + +type Object5091 @Directive21(argument61 : "stringValue24668") @Directive44(argument97 : ["stringValue24667"]) { + field24394: Object5092! +} + +type Object5092 @Directive21(argument61 : "stringValue24670") @Directive44(argument97 : ["stringValue24669"]) { + field24395: Scalar2! + field24396: [Object5093!]! + field24408: Enum1238! + field24409: Scalar2! +} + +type Object5093 @Directive21(argument61 : "stringValue24672") @Directive44(argument97 : ["stringValue24671"]) { + field24397: String! + field24398: [String!]! + field24399: String! + field24400: Object5094! + field24404: Object5094! + field24405: Object5095 +} + +type Object5094 @Directive21(argument61 : "stringValue24674") @Directive44(argument97 : ["stringValue24673"]) { + field24401: String! + field24402: String! + field24403: String +} + +type Object5095 @Directive21(argument61 : "stringValue24676") @Directive44(argument97 : ["stringValue24675"]) { + field24406: String! + field24407: String! +} + +type Object5096 @Directive44(argument97 : ["stringValue24678"]) { + field24411(argument1104: InputObject694!): Object5097 @Directive35(argument89 : "stringValue24680", argument90 : true, argument91 : "stringValue24679", argument92 : 143, argument93 : "stringValue24681", argument94 : false) + field24413(argument1105: InputObject695!): Object5098 @Directive35(argument89 : "stringValue24686", argument90 : true, argument91 : "stringValue24685", argument92 : 144, argument93 : "stringValue24687", argument94 : false) + field24415(argument1106: InputObject696!): Object5099 @Directive35(argument89 : "stringValue24692", argument90 : true, argument91 : "stringValue24691", argument92 : 145, argument93 : "stringValue24693", argument94 : false) + field24417(argument1107: InputObject697!): Object5100 @Directive35(argument89 : "stringValue24698", argument90 : true, argument91 : "stringValue24697", argument92 : 146, argument93 : "stringValue24699", argument94 : false) + field24419(argument1108: InputObject698!): Object5101 @Directive35(argument89 : "stringValue24704", argument90 : true, argument91 : "stringValue24703", argument92 : 147, argument93 : "stringValue24705", argument94 : false) + field24421(argument1109: InputObject699!): Object5102 @Directive35(argument89 : "stringValue24711", argument90 : true, argument91 : "stringValue24710", argument92 : 148, argument93 : "stringValue24712", argument94 : false) + field24601(argument1110: InputObject701!): Object5103 @Directive35(argument89 : "stringValue24791", argument90 : true, argument91 : "stringValue24790", argument92 : 149, argument93 : "stringValue24792", argument94 : false) + field24602(argument1111: InputObject702!): Object5104 @Directive35(argument89 : "stringValue24795", argument90 : true, argument91 : "stringValue24794", argument92 : 150, argument93 : "stringValue24796", argument94 : false) + field24603(argument1112: InputObject703!): Object5127 @Directive35(argument89 : "stringValue24799", argument90 : true, argument91 : "stringValue24798", argument92 : 151, argument93 : "stringValue24800", argument94 : false) + field24607(argument1113: InputObject704!): Object5128 @Directive35(argument89 : "stringValue24805", argument90 : false, argument91 : "stringValue24804", argument92 : 152, argument93 : "stringValue24806", argument94 : false) + field24609(argument1114: InputObject706!): Object5121 @Directive35(argument89 : "stringValue24815", argument90 : true, argument91 : "stringValue24814", argument93 : "stringValue24816", argument94 : false) + field24610(argument1115: InputObject707!): Object5117 @Directive35(argument89 : "stringValue24819", argument90 : true, argument91 : "stringValue24818", argument93 : "stringValue24820", argument94 : false) + field24611(argument1116: InputObject708!): Object5118 @Directive35(argument89 : "stringValue24823", argument90 : true, argument91 : "stringValue24822", argument93 : "stringValue24824", argument94 : false) + field24612(argument1117: InputObject709!): Object5122 @Directive35(argument89 : "stringValue24827", argument90 : true, argument91 : "stringValue24826", argument93 : "stringValue24828", argument94 : false) + field24613(argument1118: InputObject710!): Object5120 @Directive35(argument89 : "stringValue24831", argument90 : true, argument91 : "stringValue24830", argument93 : "stringValue24832", argument94 : false) + field24614(argument1119: InputObject711!): Object5119 @Directive35(argument89 : "stringValue24835", argument90 : true, argument91 : "stringValue24834", argument93 : "stringValue24836", argument94 : false) + field24615(argument1120: InputObject712!): Object5129 @Directive35(argument89 : "stringValue24839", argument90 : true, argument91 : "stringValue24838", argument92 : 153, argument93 : "stringValue24840", argument94 : false) + field24617(argument1121: InputObject713!): Object5130 @Directive35(argument89 : "stringValue24845", argument90 : true, argument91 : "stringValue24844", argument92 : 154, argument93 : "stringValue24846", argument94 : false) + field24619(argument1122: InputObject714!): Object5103 @Directive35(argument89 : "stringValue24851", argument90 : true, argument91 : "stringValue24850", argument93 : "stringValue24852", argument94 : false) + field24620(argument1123: InputObject715!): Object5131 @Directive35(argument89 : "stringValue24855", argument90 : true, argument91 : "stringValue24854", argument92 : 155, argument93 : "stringValue24856", argument94 : false) + field24622(argument1124: InputObject716!): Object5102 @Directive35(argument89 : "stringValue24861", argument90 : true, argument91 : "stringValue24860", argument93 : "stringValue24862", argument94 : false) + field24623(argument1125: InputObject717!): Object5102 @Directive35(argument89 : "stringValue24865", argument90 : true, argument91 : "stringValue24864", argument93 : "stringValue24866", argument94 : false) + field24624(argument1126: InputObject718!): Object5121 @Directive35(argument89 : "stringValue24869", argument90 : true, argument91 : "stringValue24868", argument93 : "stringValue24870", argument94 : false) + field24625(argument1127: InputObject719!): Object5102 @Directive35(argument89 : "stringValue24873", argument90 : true, argument91 : "stringValue24872", argument93 : "stringValue24874", argument94 : false) + field24626(argument1128: InputObject720!): Object5102 @Directive35(argument89 : "stringValue24877", argument90 : true, argument91 : "stringValue24876", argument93 : "stringValue24878", argument94 : false) + field24627(argument1129: InputObject721!): Object5132 @Directive35(argument89 : "stringValue24881", argument90 : true, argument91 : "stringValue24880", argument92 : 156, argument93 : "stringValue24882", argument94 : false) + field24629(argument1130: InputObject722!): Object5102 @Directive35(argument89 : "stringValue24887", argument90 : true, argument91 : "stringValue24886", argument93 : "stringValue24888", argument94 : false) + field24630(argument1131: InputObject723!): Object5133 @Directive35(argument89 : "stringValue24891", argument90 : true, argument91 : "stringValue24890", argument92 : 157, argument93 : "stringValue24892", argument94 : false) + field24640(argument1132: InputObject726!): Object5137 @Directive35(argument89 : "stringValue24906", argument90 : true, argument91 : "stringValue24905", argument92 : 158, argument93 : "stringValue24907", argument94 : false) + field24642(argument1133: InputObject730!): Object5138 @Directive35(argument89 : "stringValue24915", argument90 : true, argument91 : "stringValue24914", argument92 : 159, argument93 : "stringValue24916", argument94 : false) + field24644(argument1134: InputObject731!): Object5139 @Directive35(argument89 : "stringValue24921", argument90 : true, argument91 : "stringValue24920", argument92 : 160, argument93 : "stringValue24922", argument94 : false) + field24646(argument1135: InputObject732!): Object5140 @Directive35(argument89 : "stringValue24928", argument90 : true, argument91 : "stringValue24927", argument92 : 161, argument93 : "stringValue24929", argument94 : false) + field24649(argument1136: InputObject736!): Object5141 @Directive35(argument89 : "stringValue24938", argument90 : true, argument91 : "stringValue24937", argument92 : 162, argument93 : "stringValue24939", argument94 : false) + field24651(argument1137: InputObject737!): Object5121 @Directive35(argument89 : "stringValue24944", argument90 : true, argument91 : "stringValue24943", argument93 : "stringValue24945", argument94 : false) + field24652(argument1138: InputObject739!): Object5142 @Directive35(argument89 : "stringValue24949", argument90 : true, argument91 : "stringValue24948", argument92 : 163, argument93 : "stringValue24950", argument94 : false) + field24655(argument1139: InputObject740!): Object5118 @Directive35(argument89 : "stringValue24956", argument90 : true, argument91 : "stringValue24955", argument92 : 164, argument93 : "stringValue24957", argument94 : false) + field24656(argument1140: InputObject741!): Object5143 @Directive35(argument89 : "stringValue24960", argument90 : true, argument91 : "stringValue24959", argument92 : 165, argument93 : "stringValue24961", argument94 : false) + field24658(argument1141: InputObject742!): Object5144 @Directive35(argument89 : "stringValue24966", argument90 : true, argument91 : "stringValue24965", argument92 : 166, argument93 : "stringValue24967", argument94 : false) + field24660(argument1142: InputObject743!): Object5145 @Directive35(argument89 : "stringValue24972", argument90 : true, argument91 : "stringValue24971", argument92 : 167, argument93 : "stringValue24973", argument94 : false) + field24663(argument1143: InputObject744!): Object5146 @Directive35(argument89 : "stringValue24978", argument90 : true, argument91 : "stringValue24977", argument92 : 168, argument93 : "stringValue24979", argument94 : false) + field24666(argument1144: InputObject745!): Object5102 @Directive35(argument89 : "stringValue24984", argument90 : true, argument91 : "stringValue24983", argument93 : "stringValue24985", argument94 : false) + field24667(argument1145: InputObject746!): Object5147 @Directive35(argument89 : "stringValue24988", argument90 : true, argument91 : "stringValue24987", argument92 : 169, argument93 : "stringValue24989", argument94 : false) + field24669(argument1146: InputObject747!): Object5148 @Directive35(argument89 : "stringValue24994", argument90 : true, argument91 : "stringValue24993", argument93 : "stringValue24995", argument94 : false) +} + +type Object5097 @Directive21(argument61 : "stringValue24684") @Directive44(argument97 : ["stringValue24683"]) { + field24412: Boolean +} + +type Object5098 @Directive21(argument61 : "stringValue24690") @Directive44(argument97 : ["stringValue24689"]) { + field24414: Boolean +} + +type Object5099 @Directive21(argument61 : "stringValue24696") @Directive44(argument97 : ["stringValue24695"]) { + field24416: Boolean +} + +type Object51 @Directive21(argument61 : "stringValue255") @Directive44(argument97 : ["stringValue254"]) { + field280: Object52 + field654: Object97 + field788: Object124 + field793: Boolean + field794: Object125 + field803: Object126 + field850: Object132 +} + +type Object510 @Directive22(argument62 : "stringValue2589") @Directive31 @Directive44(argument97 : ["stringValue2590", "stringValue2591"]) { + field2849: [Interface37!] + field2850: Enum168 +} + +type Object5100 @Directive21(argument61 : "stringValue24702") @Directive44(argument97 : ["stringValue24701"]) { + field24418: Boolean +} + +type Object5101 @Directive21(argument61 : "stringValue24709") @Directive44(argument97 : ["stringValue24708"]) { + field24420: Boolean +} + +type Object5102 @Directive21(argument61 : "stringValue24720") @Directive44(argument97 : ["stringValue24719"]) { + field24422: Scalar2 + field24423: Scalar4 + field24424: Scalar4 + field24425: Enum1240 + field24426: Scalar2 + field24427: Enum1244 + field24428: Scalar2 + field24429: Scalar2 + field24430: String + field24431: Enum1241 + field24432: Scalar2 + field24433: Scalar4 + field24434: Scalar4 + field24435: Scalar4 + field24436: Enum1245 + field24437: String + field24438: String + field24439: [Object5103] + field24501: [Object5117] + field24509: [Object5118] + field24523: [Object5119] + field24530: Object5120 + field24539: Object5121 + field24560: Enum1242 + field24561: String + field24562: Union209 + field24592: Enum1263 + field24593: Object5111 + field24594: Object5115 @deprecated + field24595: Object5114 + field24596: Object5114 + field24597: Scalar4 + field24598: Object5114 + field24599: Scalar2 + field24600: String +} + +type Object5103 @Directive21(argument61 : "stringValue24724") @Directive44(argument97 : ["stringValue24723"]) { + field24440: Scalar2 + field24441: Scalar4 + field24442: Scalar4 + field24443: Enum1246 + field24444: String + field24445: Scalar2 + field24446: [Object5104] + field24458: [Object5105] + field24483: Object5111 + field24489: Object5114 + field24500: Enum1252 +} + +type Object5104 @Directive21(argument61 : "stringValue24727") @Directive44(argument97 : ["stringValue24726"]) { + field24447: Scalar2 + field24448: Scalar2! + field24449: Scalar2 + field24450: Enum1247 + field24451: Scalar2 + field24452: String + field24453: Float + field24454: Scalar4 + field24455: Scalar4 + field24456: Float + field24457: Float +} + +type Object5105 @Directive21(argument61 : "stringValue24730") @Directive44(argument97 : ["stringValue24729"]) { + field24459: Scalar2! + field24460: Object5106! + field24474: Enum1248! + field24475: String! + field24476: String + field24477: [Enum1249] + field24478: String! + field24479: Enum1250! + field24480: Scalar4! + field24481: Scalar4! + field24482: Scalar2 +} + +type Object5106 @Directive21(argument61 : "stringValue24732") @Directive44(argument97 : ["stringValue24731"]) { + field24461: Object5107 + field24465: Object5108 + field24470: Object5109 + field24472: Object5110 +} + +type Object5107 @Directive21(argument61 : "stringValue24734") @Directive44(argument97 : ["stringValue24733"]) { + field24462: String + field24463: String + field24464: String +} + +type Object5108 @Directive21(argument61 : "stringValue24736") @Directive44(argument97 : ["stringValue24735"]) { + field24466: String! + field24467: String! + field24468: Int + field24469: String! +} + +type Object5109 @Directive21(argument61 : "stringValue24738") @Directive44(argument97 : ["stringValue24737"]) { + field24471: String +} + +type Object511 @Directive22(argument62 : "stringValue2595") @Directive31 @Directive44(argument97 : ["stringValue2596", "stringValue2597"]) { + field2851: Object480 +} + +type Object5110 @Directive21(argument61 : "stringValue24740") @Directive44(argument97 : ["stringValue24739"]) { + field24473: String +} + +type Object5111 @Directive21(argument61 : "stringValue24745") @Directive44(argument97 : ["stringValue24744"]) { + field24484: [Object5112] +} + +type Object5112 @Directive21(argument61 : "stringValue24747") @Directive44(argument97 : ["stringValue24746"]) { + field24485: String + field24486: [Object5113] +} + +type Object5113 @Directive21(argument61 : "stringValue24749") @Directive44(argument97 : ["stringValue24748"]) { + field24487: String + field24488: String +} + +type Object5114 @Directive21(argument61 : "stringValue24751") @Directive44(argument97 : ["stringValue24750"]) { + field24490: Object5115 + field24497: Object5115 + field24498: Object5115 + field24499: Object5115! +} + +type Object5115 @Directive21(argument61 : "stringValue24753") @Directive44(argument97 : ["stringValue24752"]) { + field24491: String! + field24492: Float! + field24493: String! + field24494: Object5116 +} + +type Object5116 @Directive21(argument61 : "stringValue24755") @Directive44(argument97 : ["stringValue24754"]) { + field24495: Enum1251! + field24496: String +} + +type Object5117 @Directive21(argument61 : "stringValue24759") @Directive44(argument97 : ["stringValue24758"]) { + field24502: Scalar2 + field24503: Scalar2 + field24504: Scalar4 + field24505: Scalar2 + field24506: Enum1253 + field24507: Scalar2 + field24508: Enum1254 +} + +type Object5118 @Directive21(argument61 : "stringValue24763") @Directive44(argument97 : ["stringValue24762"]) { + field24510: Scalar2 + field24511: Scalar2 + field24512: Scalar4 + field24513: Scalar2 + field24514: Enum1255 + field24515: Float + field24516: String + field24517: Scalar2 + field24518: String + field24519: Enum1256 + field24520: Enum1257 + field24521: Scalar2 + field24522: Enum1258 +} + +type Object5119 @Directive21(argument61 : "stringValue24769") @Directive44(argument97 : ["stringValue24768"]) { + field24524: Scalar2 + field24525: Scalar2 + field24526: Scalar4 + field24527: Scalar2 + field24528: Scalar2 + field24529: Enum1259 +} + +type Object512 @Directive20(argument58 : "stringValue2599", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2598") @Directive31 @Directive44(argument97 : ["stringValue2600", "stringValue2601"]) { + field2852: String + field2853: String + field2854: Enum169 + field2855: Boolean + field2856: Object1 + field2857: Object1 + field2858: Scalar2 + field2859: String + field2860: String + field2861: Object513 + field2864: String + field2865: String + field2866: [Object480!] + field2867: String + field2868: Int + field2869: Object494 + field2870: Object480 + field2871: Object514 + field2899: Object521 + field2964: [Object532!] + field3004: Object538 + field3012: Boolean + field3013: Boolean + field3014: Object539 + field3062: String + field3063: String + field3064: String + field3065: Boolean + field3066: String + field3067: Object532 + field3068: Boolean + field3069: Object548 + field3147: Object480 + field3148: Object569 + field3175: Object480 + field3176: Enum187 + field3177: Union98 + field3189: String +} + +type Object5120 @Directive21(argument61 : "stringValue24772") @Directive44(argument97 : ["stringValue24771"]) { + field24531: Scalar2 + field24532: Scalar2 + field24533: String @deprecated + field24534: Scalar4 + field24535: Scalar4 + field24536: Enum1260 + field24537: Scalar4 + field24538: Scalar4 +} + +type Object5121 @Directive21(argument61 : "stringValue24775") @Directive44(argument97 : ["stringValue24774"]) { + field24540: Scalar2 + field24541: Enum1261 + field24542: Scalar2 + field24543: String + field24544: String + field24545: String + field24546: String + field24547: String + field24548: String + field24549: String + field24550: Scalar4 + field24551: Scalar4 + field24552: [Object5122] + field24557: Scalar2 + field24558: String + field24559: String +} + +type Object5122 @Directive21(argument61 : "stringValue24778") @Directive44(argument97 : ["stringValue24777"]) { + field24553: Scalar2 + field24554: Scalar2 + field24555: Enum1262 + field24556: String +} + +type Object5123 @Directive21(argument61 : "stringValue24782") @Directive44(argument97 : ["stringValue24781"]) { + field24563: Scalar2! + field24564: String! + field24565: Object5124 + field24572: Object5124 + field24573: Object5125 + field24578: Scalar4 + field24579: Scalar4 + field24580: Scalar2 + field24581: Scalar2 + field24582: Scalar2 + field24583: String + field24584: String + field24585: Int + field24586: String + field24587: Int + field24588: String +} + +type Object5124 @Directive21(argument61 : "stringValue24784") @Directive44(argument97 : ["stringValue24783"]) { + field24566: Scalar2! + field24567: String! + field24568: String + field24569: String + field24570: String + field24571: String +} + +type Object5125 @Directive21(argument61 : "stringValue24786") @Directive44(argument97 : ["stringValue24785"]) { + field24574: Scalar2! + field24575: String + field24576: String + field24577: String +} + +type Object5126 @Directive21(argument61 : "stringValue24788") @Directive44(argument97 : ["stringValue24787"]) { + field24589: Scalar2! + field24590: String + field24591: Object5124 +} + +type Object5127 @Directive21(argument61 : "stringValue24803") @Directive44(argument97 : ["stringValue24802"]) { + field24604: String + field24605: Scalar2 + field24606: String +} + +type Object5128 @Directive21(argument61 : "stringValue24813") @Directive44(argument97 : ["stringValue24812"]) { + field24608: String! +} + +type Object5129 @Directive21(argument61 : "stringValue24843") @Directive44(argument97 : ["stringValue24842"]) { + field24616: Boolean +} + +type Object513 @Directive20(argument58 : "stringValue2607", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2606") @Directive31 @Directive44(argument97 : ["stringValue2608", "stringValue2609"]) { + field2862: String + field2863: Enum170 +} + +type Object5130 @Directive21(argument61 : "stringValue24849") @Directive44(argument97 : ["stringValue24848"]) { + field24618: Boolean +} + +type Object5131 @Directive21(argument61 : "stringValue24859") @Directive44(argument97 : ["stringValue24858"]) { + field24621: Boolean +} + +type Object5132 @Directive21(argument61 : "stringValue24885") @Directive44(argument97 : ["stringValue24884"]) { + field24628: Boolean +} + +type Object5133 @Directive21(argument61 : "stringValue24898") @Directive44(argument97 : ["stringValue24897"]) { + field24631: [Object5134] +} + +type Object5134 @Directive21(argument61 : "stringValue24900") @Directive44(argument97 : ["stringValue24899"]) { + field24632: Enum1267 + field24633: Scalar2 + field24634: Boolean + field24635: [Object5135] + field24638: Object5136 +} + +type Object5135 @Directive21(argument61 : "stringValue24902") @Directive44(argument97 : ["stringValue24901"]) { + field24636: String + field24637: String +} + +type Object5136 @Directive21(argument61 : "stringValue24904") @Directive44(argument97 : ["stringValue24903"]) { + field24639: String +} + +type Object5137 @Directive21(argument61 : "stringValue24913") @Directive44(argument97 : ["stringValue24912"]) { + field24641: Boolean +} + +type Object5138 @Directive21(argument61 : "stringValue24919") @Directive44(argument97 : ["stringValue24918"]) { + field24643: Boolean +} + +type Object5139 @Directive21(argument61 : "stringValue24926") @Directive44(argument97 : ["stringValue24925"]) { + field24645: Boolean +} + +type Object514 @Directive20(argument58 : "stringValue2616", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2614") @Directive42(argument96 : ["stringValue2615"]) @Directive44(argument97 : ["stringValue2617", "stringValue2618"]) { + field2872: String @Directive41 + field2873: [Object515] @Directive41 + field2877: Object516 @Directive41 +} + +type Object5140 @Directive21(argument61 : "stringValue24936") @Directive44(argument97 : ["stringValue24935"]) { + field24647: Boolean + field24648: [Object5134] +} + +type Object5141 @Directive21(argument61 : "stringValue24942") @Directive44(argument97 : ["stringValue24941"]) { + field24650: [Object5134] +} + +type Object5142 @Directive21(argument61 : "stringValue24954") @Directive44(argument97 : ["stringValue24953"]) { + field24653: Scalar2 + field24654: [Enum1258] +} + +type Object5143 @Directive21(argument61 : "stringValue24964") @Directive44(argument97 : ["stringValue24963"]) { + field24657: Boolean +} + +type Object5144 @Directive21(argument61 : "stringValue24970") @Directive44(argument97 : ["stringValue24969"]) { + field24659: Boolean +} + +type Object5145 @Directive21(argument61 : "stringValue24976") @Directive44(argument97 : ["stringValue24975"]) { + field24661: Boolean + field24662: String +} + +type Object5146 @Directive21(argument61 : "stringValue24982") @Directive44(argument97 : ["stringValue24981"]) { + field24664: Enum1263 + field24665: Object5133 +} + +type Object5147 @Directive21(argument61 : "stringValue24992") @Directive44(argument97 : ["stringValue24991"]) { + field24668: Boolean +} + +type Object5148 @Directive21(argument61 : "stringValue24998") @Directive44(argument97 : ["stringValue24997"]) { + field24670: Boolean +} + +type Object5149 @Directive44(argument97 : ["stringValue24999"]) { + field24672(argument1147: InputObject748!): Object5150 @Directive35(argument89 : "stringValue25001", argument90 : false, argument91 : "stringValue25000", argument92 : 170, argument93 : "stringValue25002", argument94 : false) + field24678(argument1148: InputObject749!): Object5152 @Directive35(argument89 : "stringValue25009", argument90 : false, argument91 : "stringValue25008", argument92 : 171, argument93 : "stringValue25010", argument94 : false) +} + +type Object515 @Directive20(argument58 : "stringValue2621", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2619") @Directive42(argument96 : ["stringValue2620"]) @Directive44(argument97 : ["stringValue2622", "stringValue2623"]) { + field2874: Enum171 @Directive41 + field2875: String @Directive41 + field2876: Enum172 @Directive41 +} + +type Object5150 @Directive21(argument61 : "stringValue25005") @Directive44(argument97 : ["stringValue25004"]) { + field24673: [Object5151] +} + +type Object5151 @Directive21(argument61 : "stringValue25007") @Directive44(argument97 : ["stringValue25006"]) { + field24674: String + field24675: Float + field24676: [String] + field24677: String +} + +type Object5152 @Directive21(argument61 : "stringValue25017") @Directive44(argument97 : ["stringValue25016"]) { + field24679: Object5153 +} + +type Object5153 @Directive21(argument61 : "stringValue25019") @Directive44(argument97 : ["stringValue25018"]) { + field24680: Object5154 + field24684: Scalar2 + field24685: String + field24686: Object5155 +} + +type Object5154 @Directive21(argument61 : "stringValue25021") @Directive44(argument97 : ["stringValue25020"]) { + field24681: Enum1271 + field24682: String + field24683: String +} + +type Object5155 @Directive21(argument61 : "stringValue25023") @Directive44(argument97 : ["stringValue25022"]) { + field24687: String + field24688: String + field24689: String + field24690: Enum1272 + field24691: Int + field24692: Scalar2 +} + +type Object5156 @Directive44(argument97 : ["stringValue25024"]) { + field24694(argument1149: InputObject752!): Object5157 @Directive35(argument89 : "stringValue25026", argument90 : true, argument91 : "stringValue25025", argument92 : 172, argument93 : "stringValue25027", argument94 : false) +} + +type Object5157 @Directive21(argument61 : "stringValue25036") @Directive44(argument97 : ["stringValue25035"]) { + field24695: Boolean + field24696: Object5158 +} + +type Object5158 @Directive21(argument61 : "stringValue25038") @Directive44(argument97 : ["stringValue25037"]) { + field24697: String! + field24698: Boolean + field24699: Enum1276 +} + +type Object5159 @Directive44(argument97 : ["stringValue25040"]) { + field24701(argument1150: InputObject756!): Object5160 @Directive35(argument89 : "stringValue25042", argument90 : true, argument91 : "stringValue25041", argument92 : 173, argument93 : "stringValue25043", argument94 : false) @deprecated + field24703(argument1151: InputObject757!): Object5161 @Directive35(argument89 : "stringValue25048", argument90 : false, argument91 : "stringValue25047", argument92 : 174, argument93 : "stringValue25049", argument94 : false) + field24705(argument1152: InputObject759!): Object5162 @Directive35(argument89 : "stringValue25057", argument90 : true, argument91 : "stringValue25056", argument92 : 175, argument93 : "stringValue25058", argument94 : false) @deprecated + field24707(argument1153: InputObject760!): Object5163 @Directive35(argument89 : "stringValue25063", argument90 : true, argument91 : "stringValue25062", argument93 : "stringValue25064", argument94 : false) +} + +type Object516 @Directive20(argument58 : "stringValue2633", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2631") @Directive42(argument96 : ["stringValue2632"]) @Directive44(argument97 : ["stringValue2634", "stringValue2635"]) { + field2878: String @Directive41 + field2879: String @Directive41 + field2880: [Object517] @Directive41 + field2897: Object519 @Directive41 + field2898: String @Directive41 +} + +type Object5160 @Directive21(argument61 : "stringValue25046") @Directive44(argument97 : ["stringValue25045"]) { + field24702: Scalar2 +} + +type Object5161 @Directive21(argument61 : "stringValue25055") @Directive44(argument97 : ["stringValue25054"]) { + field24704: Scalar2! +} + +type Object5162 @Directive21(argument61 : "stringValue25061") @Directive44(argument97 : ["stringValue25060"]) { + field24706: Scalar2 +} + +type Object5163 @Directive21(argument61 : "stringValue25067") @Directive44(argument97 : ["stringValue25066"]) { + field24708: Enum1279! +} + +type Object5164 @Directive44(argument97 : ["stringValue25069"]) { + field24710(argument1154: InputObject761!): Object5165 @Directive35(argument89 : "stringValue25071", argument90 : true, argument91 : "stringValue25070", argument92 : 176, argument93 : "stringValue25072", argument94 : false) + field24713(argument1155: InputObject762!): Object5166 @Directive35(argument89 : "stringValue25077", argument90 : true, argument91 : "stringValue25076", argument92 : 177, argument93 : "stringValue25078", argument94 : false) +} + +type Object5165 @Directive21(argument61 : "stringValue25075") @Directive44(argument97 : ["stringValue25074"]) { + field24711: String + field24712: Scalar2 +} + +type Object5166 @Directive21(argument61 : "stringValue25082") @Directive44(argument97 : ["stringValue25081"]) { + field24714: String + field24715: Scalar2 +} + +type Object5167 @Directive44(argument97 : ["stringValue25083"]) { + field24717(argument1156: InputObject763!): Object5168 @Directive35(argument89 : "stringValue25085", argument90 : true, argument91 : "stringValue25084", argument92 : 178, argument93 : "stringValue25086", argument94 : false) + field24731(argument1157: InputObject766!): Object5172 @Directive35(argument89 : "stringValue25100", argument90 : true, argument91 : "stringValue25099", argument92 : 179, argument93 : "stringValue25101", argument94 : false) + field24734(argument1158: InputObject767!): Object5173 @Directive35(argument89 : "stringValue25106", argument90 : true, argument91 : "stringValue25105", argument92 : 180, argument93 : "stringValue25107", argument94 : false) + field24741(argument1159: InputObject768!): Object5176 @Directive35(argument89 : "stringValue25118", argument90 : true, argument91 : "stringValue25117", argument92 : 181, argument93 : "stringValue25119", argument94 : false) + field24743(argument1160: InputObject769!): Object5177 @Directive35(argument89 : "stringValue25124", argument90 : true, argument91 : "stringValue25123", argument92 : 182, argument93 : "stringValue25125", argument94 : false) + field24745(argument1161: InputObject770!): Object5178 @Directive35(argument89 : "stringValue25130", argument90 : true, argument91 : "stringValue25129", argument92 : 183, argument93 : "stringValue25131", argument94 : false) + field24747(argument1162: InputObject771!): Object5179 @Directive35(argument89 : "stringValue25136", argument90 : true, argument91 : "stringValue25135", argument92 : 184, argument93 : "stringValue25137", argument94 : false) + field24754(argument1163: InputObject773!): Object5181 @Directive35(argument89 : "stringValue25147", argument90 : true, argument91 : "stringValue25146", argument92 : 185, argument93 : "stringValue25148", argument94 : false) +} + +type Object5168 @Directive21(argument61 : "stringValue25092") @Directive44(argument97 : ["stringValue25091"]) { + field24718: Scalar2! + field24719: String + field24720: Object5169 +} + +type Object5169 @Directive21(argument61 : "stringValue25094") @Directive44(argument97 : ["stringValue25093"]) { + field24721: Scalar2 + field24722: Enum1281 + field24723: Object5170 + field24730: String +} + +type Object517 @Directive20(argument58 : "stringValue2638", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2636") @Directive42(argument96 : ["stringValue2637"]) @Directive44(argument97 : ["stringValue2639", "stringValue2640"]) { + field2881: [Object518] @Directive41 + field2886: Enum174 @Directive41 + field2887: String @Directive41 + field2888: Object519 @Directive41 +} + +type Object5170 @Directive21(argument61 : "stringValue25096") @Directive44(argument97 : ["stringValue25095"]) { + field24724: Scalar2 + field24725: Object5171 + field24729: String +} + +type Object5171 @Directive21(argument61 : "stringValue25098") @Directive44(argument97 : ["stringValue25097"]) { + field24726: String + field24727: String + field24728: String +} + +type Object5172 @Directive21(argument61 : "stringValue25104") @Directive44(argument97 : ["stringValue25103"]) { + field24732: String! + field24733: String! +} + +type Object5173 @Directive21(argument61 : "stringValue25110") @Directive44(argument97 : ["stringValue25109"]) { + field24735: Scalar2 + field24736: Object5174 +} + +type Object5174 @Directive21(argument61 : "stringValue25112") @Directive44(argument97 : ["stringValue25111"]) { + field24737: Enum1282 + field24738: [Object5175] +} + +type Object5175 @Directive21(argument61 : "stringValue25115") @Directive44(argument97 : ["stringValue25114"]) { + field24739: Enum1283! + field24740: String +} + +type Object5176 @Directive21(argument61 : "stringValue25122") @Directive44(argument97 : ["stringValue25121"]) { + field24742: Scalar2 +} + +type Object5177 @Directive21(argument61 : "stringValue25128") @Directive44(argument97 : ["stringValue25127"]) { + field24744: Scalar2! +} + +type Object5178 @Directive21(argument61 : "stringValue25134") @Directive44(argument97 : ["stringValue25133"]) { + field24746: Scalar2! +} + +type Object5179 @Directive21(argument61 : "stringValue25143") @Directive44(argument97 : ["stringValue25142"]) { + field24748: Object5180! +} + +type Object518 @Directive20(argument58 : "stringValue2643", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2641") @Directive42(argument96 : ["stringValue2642"]) @Directive44(argument97 : ["stringValue2644", "stringValue2645"]) { + field2882: String @Directive41 + field2883: Object516 @Directive41 + field2884: String @Directive41 + field2885: Enum173 @Directive41 +} + +type Object5180 @Directive21(argument61 : "stringValue25145") @Directive44(argument97 : ["stringValue25144"]) { + field24749: Scalar2! + field24750: Scalar2! + field24751: Enum1284! + field24752: String + field24753: Enum1285 +} + +type Object5181 @Directive21(argument61 : "stringValue25151") @Directive44(argument97 : ["stringValue25150"]) { + field24755: Scalar2 + field24756: Scalar2 + field24757: Object5182 +} + +type Object5182 @Directive21(argument61 : "stringValue25153") @Directive44(argument97 : ["stringValue25152"]) { + field24758: String + field24759: String + field24760: Object8102 +} + +type Object5183 @Directive44(argument97 : ["stringValue25154"]) { + field24762(argument1164: InputObject774!): Object5184 @Directive35(argument89 : "stringValue25156", argument90 : true, argument91 : "stringValue25155", argument92 : 186, argument93 : "stringValue25157", argument94 : false) + field24764(argument1165: InputObject777!): Object5185 @Directive35(argument89 : "stringValue25167", argument90 : true, argument91 : "stringValue25166", argument92 : 187, argument93 : "stringValue25168", argument94 : false) + field24767(argument1166: InputObject778!): Object5186 @Directive35(argument89 : "stringValue25173", argument90 : true, argument91 : "stringValue25172", argument92 : 188, argument93 : "stringValue25174", argument94 : false) +} + +type Object5184 @Directive21(argument61 : "stringValue25165") @Directive44(argument97 : ["stringValue25164"]) { + field24763: Boolean! +} + +type Object5185 @Directive21(argument61 : "stringValue25171") @Directive44(argument97 : ["stringValue25170"]) { + field24765: Boolean! + field24766: [Scalar2]! +} + +type Object5186 @Directive21(argument61 : "stringValue25179") @Directive44(argument97 : ["stringValue25178"]) { + field24768: Boolean! + field24769: String +} + +type Object5187 @Directive44(argument97 : ["stringValue25180"]) { + field24771(argument1167: InputObject779!): Object5188 @Directive35(argument89 : "stringValue25182", argument90 : true, argument91 : "stringValue25181", argument93 : "stringValue25183", argument94 : false) + field24783(argument1168: InputObject780!): Object5190 @Directive35(argument89 : "stringValue25192", argument90 : true, argument91 : "stringValue25191", argument93 : "stringValue25193", argument94 : false) + field24795(argument1169: InputObject781!): Object5192 @Directive35(argument89 : "stringValue25202", argument90 : true, argument91 : "stringValue25201", argument93 : "stringValue25203", argument94 : false) + field24797(argument1170: InputObject782!): Object5193 @Directive35(argument89 : "stringValue25208", argument90 : true, argument91 : "stringValue25207", argument93 : "stringValue25209", argument94 : false) +} + +type Object5188 @Directive21(argument61 : "stringValue25188") @Directive44(argument97 : ["stringValue25187"]) { + field24772: Object5189 +} + +type Object5189 @Directive21(argument61 : "stringValue25190") @Directive44(argument97 : ["stringValue25189"]) { + field24773: Scalar2! + field24774: Enum1292! + field24775: String + field24776: String + field24777: String + field24778: String + field24779: String + field24780: String + field24781: String + field24782: Boolean +} + +type Object519 @Directive20(argument58 : "stringValue2656", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2654") @Directive42(argument96 : ["stringValue2655"]) @Directive44(argument97 : ["stringValue2657", "stringValue2658"]) { + field2889: String @Directive41 + field2890: String @Directive41 + field2891: [Object520!] @Directive41 + field2896: String @Directive41 +} + +type Object5190 @Directive21(argument61 : "stringValue25198") @Directive44(argument97 : ["stringValue25197"]) { + field24784: Object5191 +} + +type Object5191 @Directive21(argument61 : "stringValue25200") @Directive44(argument97 : ["stringValue25199"]) { + field24785: Scalar2! + field24786: Enum1293! + field24787: String! + field24788: String + field24789: String + field24790: String + field24791: String + field24792: String + field24793: Boolean + field24794: Enum1294 +} + +type Object5192 @Directive21(argument61 : "stringValue25206") @Directive44(argument97 : ["stringValue25205"]) { + field24796: Object5189 +} + +type Object5193 @Directive21(argument61 : "stringValue25212") @Directive44(argument97 : ["stringValue25211"]) { + field24798: Object5191 +} + +type Object5194 @Directive44(argument97 : ["stringValue25213"]) { + field24800(argument1171: InputObject783!): Object5195 @Directive35(argument89 : "stringValue25215", argument90 : false, argument91 : "stringValue25214", argument92 : 189, argument93 : "stringValue25216", argument94 : false) +} + +type Object5195 @Directive21(argument61 : "stringValue25220") @Directive44(argument97 : ["stringValue25219"]) { + field24801: String + field24802: String + field24803: String +} + +type Object5196 @Directive44(argument97 : ["stringValue25221"]) { + field24805(argument1172: InputObject784!): Object5197 @Directive35(argument89 : "stringValue25223", argument90 : false, argument91 : "stringValue25222", argument92 : 190, argument93 : "stringValue25224", argument94 : false) + field24825(argument1173: InputObject784!): Object5197 @Directive35(argument89 : "stringValue25258", argument90 : false, argument91 : "stringValue25257", argument92 : 191, argument93 : "stringValue25259", argument94 : false) + field24826(argument1174: InputObject803!): Object5199 @Directive35(argument89 : "stringValue25261", argument90 : true, argument91 : "stringValue25260", argument92 : 192, argument93 : "stringValue25262", argument94 : false) + field24828(argument1175: InputObject784!): Object5200 @Directive35(argument89 : "stringValue25267", argument90 : false, argument91 : "stringValue25266", argument92 : 193, argument93 : "stringValue25268", argument94 : false) +} + +type Object5197 @Directive21(argument61 : "stringValue25252") @Directive44(argument97 : ["stringValue25251"]) { + field24806: Enum1303! + field24807: String + field24808: Object5198 + field24824: Boolean +} + +type Object5198 @Directive21(argument61 : "stringValue25255") @Directive44(argument97 : ["stringValue25254"]) { + field24809: Enum1304 + field24810: String + field24811: String + field24812: String + field24813: Scalar3 + field24814: String + field24815: Boolean + field24816: Boolean + field24817: Scalar2 + field24818: String + field24819: String + field24820: String + field24821: String + field24822: String + field24823: String +} + +type Object5199 @Directive21(argument61 : "stringValue25265") @Directive44(argument97 : ["stringValue25264"]) { + field24827: Boolean! +} + +type Object52 @Directive21(argument61 : "stringValue257") @Directive44(argument97 : ["stringValue256"]) { + field281: [String] + field282: String + field283: Float + field284: String + field285: String + field286: Int + field287: Int + field288: String + field289: Object53 + field292: String + field293: [String] + field294: String + field295: String + field296: Scalar2 + field297: Boolean + field298: Boolean + field299: Boolean + field300: Boolean + field301: Boolean + field302: Boolean + field303: Object54 + field321: Float + field322: Float + field323: String + field324: String + field325: Object57 + field330: String + field331: String + field332: Int + field333: Int + field334: String + field335: [String] + field336: Object58 + field346: String + field347: String + field348: Scalar2 + field349: Int + field350: String + field351: String + field352: String + field353: String + field354: Boolean + field355: String + field356: Float + field357: Int + field358: Object59 + field367: Object54 + field368: String + field369: String + field370: String + field371: String + field372: [Object60] + field379: String + field380: String + field381: String + field382: String + field383: [Int] + field384: [String] + field385: [Object61] + field395: [String] + field396: String + field397: [String] + field398: [Object62] + field422: Float + field423: Object65 + field448: Enum31 + field449: [Object69] + field457: String + field458: Boolean + field459: String + field460: Int + field461: Int + field462: Object70 + field464: [Object71] + field475: Object72 + field478: Object73 + field484: Enum34 + field485: [Object56] + field486: Object66 + field487: Enum35 + field488: String + field489: String + field490: [Object74] + field501: [Scalar2] + field502: String + field503: [Object75] + field608: [Object75] + field609: Enum53 + field610: [Enum54] + field611: Object89 + field614: [Object90] + field625: Object94 + field629: [Object57] + field630: Boolean + field631: String + field632: Int + field633: String + field634: Scalar2 + field635: Boolean + field636: Float + field637: [String] + field638: String + field639: String + field640: String + field641: Object95 + field646: Object96 + field650: Object56 + field651: Enum56 + field652: Scalar2 + field653: String +} + +type Object520 @Directive20(argument58 : "stringValue2661", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2659") @Directive42(argument96 : ["stringValue2660"]) @Directive44(argument97 : ["stringValue2662", "stringValue2663"]) { + field2892: String @Directive41 + field2893: String @Directive41 + field2894: String @Directive41 + field2895: String @Directive41 +} + +type Object5200 @Directive21(argument61 : "stringValue25270") @Directive44(argument97 : ["stringValue25269"]) { + field24829: String + field24830: Boolean + field24831: String + field24832: Boolean + field24833: Boolean + field24834: Boolean + field24835: Boolean + field24836: Boolean + field24837: Object5201 + field24846: String + field24847: String + field24848: Boolean +} + +type Object5201 @Directive21(argument61 : "stringValue25272") @Directive44(argument97 : ["stringValue25271"]) { + field24838: String + field24839: Boolean + field24840: Boolean + field24841: Boolean + field24842: Boolean + field24843: String + field24844: String + field24845: Boolean +} + +type Object5202 @Directive44(argument97 : ["stringValue25273"]) { + field24850(argument1176: InputObject804!): Object5203 @Directive35(argument89 : "stringValue25275", argument90 : true, argument91 : "stringValue25274", argument92 : 194, argument93 : "stringValue25276", argument94 : false) + field24853(argument1177: InputObject805!): Object5204 @Directive35(argument89 : "stringValue25282", argument90 : true, argument91 : "stringValue25281", argument92 : 195, argument93 : "stringValue25283", argument94 : false) +} + +type Object5203 @Directive21(argument61 : "stringValue25279") @Directive44(argument97 : ["stringValue25278"]) { + field24851: Scalar2! + field24852: Enum1305! +} + +type Object5204 @Directive21(argument61 : "stringValue25286") @Directive44(argument97 : ["stringValue25285"]) { + field24854: Scalar2! + field24855: Enum1305! +} + +type Object5205 @Directive44(argument97 : ["stringValue25287"]) { + field24857(argument1178: InputObject806!): Object5206 @Directive35(argument89 : "stringValue25289", argument90 : true, argument91 : "stringValue25288", argument92 : 196, argument93 : "stringValue25290", argument94 : false) + field24859(argument1179: InputObject807!): Object5207 @Directive35(argument89 : "stringValue25296", argument90 : true, argument91 : "stringValue25295", argument92 : 197, argument93 : "stringValue25297", argument94 : false) +} + +type Object5206 @Directive21(argument61 : "stringValue25294") @Directive44(argument97 : ["stringValue25293"]) { + field24858: Boolean +} + +type Object5207 @Directive21(argument61 : "stringValue25304") @Directive44(argument97 : ["stringValue25303"]) { + field24860: Boolean +} + +type Object5208 @Directive44(argument97 : ["stringValue25305"]) { + field24862: Object5209 @Directive35(argument89 : "stringValue25307", argument90 : true, argument91 : "stringValue25306", argument92 : 198, argument93 : "stringValue25308", argument94 : true) + field24864(argument1180: InputObject811!): Object5210 @Directive35(argument89 : "stringValue25312", argument90 : true, argument91 : "stringValue25311", argument92 : 199, argument93 : "stringValue25313", argument94 : true) + field24866(argument1181: InputObject812!): Object5211 @Directive35(argument89 : "stringValue25318", argument90 : false, argument91 : "stringValue25317", argument92 : 200, argument93 : "stringValue25319", argument94 : true) + field24868(argument1182: InputObject813!): Object5212 @Directive35(argument89 : "stringValue25324", argument90 : false, argument91 : "stringValue25323", argument92 : 201, argument93 : "stringValue25325", argument94 : true) +} + +type Object5209 @Directive21(argument61 : "stringValue25310") @Directive44(argument97 : ["stringValue25309"]) { + field24863: Boolean! +} + +type Object521 @Directive20(argument58 : "stringValue2666", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2664") @Directive34 @Directive42(argument96 : ["stringValue2665"]) @Directive44(argument97 : ["stringValue2667", "stringValue2668"]) { + field2900: Object522 @Directive41 + field2927: Object526 @Directive41 + field2936: Object527 @Directive40 + field2948: Object530 @Directive41 +} + +type Object5210 @Directive21(argument61 : "stringValue25316") @Directive44(argument97 : ["stringValue25315"]) { + field24865: Boolean! +} + +type Object5211 @Directive21(argument61 : "stringValue25322") @Directive44(argument97 : ["stringValue25321"]) { + field24867: Boolean! +} + +type Object5212 @Directive21(argument61 : "stringValue25328") @Directive44(argument97 : ["stringValue25327"]) { + field24869: Boolean! + field24870: Enum1308 + field24871: String + field24872: Int + field24873: String + field24874: String + field24875: String + field24876: Int + field24877: String + field24878: Boolean + field24879: String + field24880: String + field24881: String + field24882: String + field24883: Boolean + field24884: Int + field24885: String + field24886: String + field24887: [Enum1309] + field24888: [Object5213] + field24906: Boolean +} + +type Object5213 @Directive21(argument61 : "stringValue25332") @Directive44(argument97 : ["stringValue25331"]) { + field24889: Object5214 + field24895: Object5215 +} + +type Object5214 @Directive21(argument61 : "stringValue25334") @Directive44(argument97 : ["stringValue25333"]) { + field24890: String! + field24891: String + field24892: Int + field24893: Int + field24894: Enum1310! +} + +type Object5215 @Directive21(argument61 : "stringValue25337") @Directive44(argument97 : ["stringValue25336"]) { + field24896: Enum1311! + field24897: Int + field24898: Object5216 + field24902: [Enum1312] + field24903: Enum1313 + field24904: Scalar3 + field24905: String +} + +type Object5216 @Directive21(argument61 : "stringValue25340") @Directive44(argument97 : ["stringValue25339"]) { + field24899: Scalar2 + field24900: String + field24901: String +} + +type Object5217 @Directive44(argument97 : ["stringValue25343"]) { + field24908: Object5218 @Directive35(argument89 : "stringValue25345", argument90 : true, argument91 : "stringValue25344", argument93 : "stringValue25346", argument94 : false) + field24910(argument1183: InputObject814!): Object5219 @Directive35(argument89 : "stringValue25350", argument90 : true, argument91 : "stringValue25349", argument93 : "stringValue25351", argument94 : false) + field24912(argument1184: InputObject815!): Object5220 @Directive35(argument89 : "stringValue25356", argument90 : true, argument91 : "stringValue25355", argument93 : "stringValue25357", argument94 : false) + field24914(argument1185: InputObject816!): Object5221 @Directive35(argument89 : "stringValue25362", argument90 : true, argument91 : "stringValue25361", argument93 : "stringValue25363", argument94 : false) +} + +type Object5218 @Directive21(argument61 : "stringValue25348") @Directive44(argument97 : ["stringValue25347"]) { + field24909: Boolean! +} + +type Object5219 @Directive21(argument61 : "stringValue25354") @Directive44(argument97 : ["stringValue25353"]) { + field24911: Boolean! +} + +type Object522 @Directive20(argument58 : "stringValue2671", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2669") @Directive34 @Directive42(argument96 : ["stringValue2670"]) @Directive44(argument97 : ["stringValue2672", "stringValue2673"]) { + field2901: Object523 @Directive41 + field2907: Object523 @Directive41 + field2908: Object523 @Directive41 + field2909: Float @Directive41 + field2910: Object523 @Directive41 + field2911: Object525 @Directive41 + field2925: Object523 @Directive41 + field2926: Object523 @Directive41 +} + +type Object5220 @Directive21(argument61 : "stringValue25360") @Directive44(argument97 : ["stringValue25359"]) { + field24913: Boolean! +} + +type Object5221 @Directive21(argument61 : "stringValue25366") @Directive44(argument97 : ["stringValue25365"]) { + field24915: Boolean! + field24916: Object5222 + field24920: Int + field24921: Object5222 + field24922: Boolean + field24923: Scalar4 + field24924: Scalar4 + field24925: Boolean + field24926: Boolean + field24927: Boolean + field24928: Scalar2 + field24929: [Object5223] + field24944: Boolean +} + +type Object5222 @Directive21(argument61 : "stringValue25368") @Directive44(argument97 : ["stringValue25367"]) { + field24917: Scalar2 + field24918: String + field24919: String +} + +type Object5223 @Directive21(argument61 : "stringValue25370") @Directive44(argument97 : ["stringValue25369"]) { + field24930: Object5224 + field24936: Object5225 +} + +type Object5224 @Directive21(argument61 : "stringValue25372") @Directive44(argument97 : ["stringValue25371"]) { + field24931: String! + field24932: String + field24933: Int + field24934: Int + field24935: Enum1314! +} + +type Object5225 @Directive21(argument61 : "stringValue25375") @Directive44(argument97 : ["stringValue25374"]) { + field24937: Enum1315! + field24938: Int + field24939: Object5222 + field24940: [Enum1316] + field24941: Enum1317 + field24942: Scalar3 + field24943: String +} + +type Object5226 @Directive44(argument97 : ["stringValue25379"]) { + field24946(argument1186: InputObject817!): Object5227 @Directive35(argument89 : "stringValue25381", argument90 : true, argument91 : "stringValue25380", argument92 : 202, argument93 : "stringValue25382", argument94 : false) +} + +type Object5227 @Directive21(argument61 : "stringValue25387") @Directive44(argument97 : ["stringValue25386"]) { + field24947: Boolean +} + +type Object5228 @Directive44(argument97 : ["stringValue25388"]) { + field24949(argument1187: InputObject819!): Object5229 @Directive35(argument89 : "stringValue25390", argument90 : true, argument91 : "stringValue25389", argument92 : 203, argument93 : "stringValue25391", argument94 : false) + field24951(argument1188: InputObject821!): Object5230 @Directive35(argument89 : "stringValue25397", argument90 : true, argument91 : "stringValue25396", argument92 : 204, argument93 : "stringValue25398", argument94 : false) + field24953(argument1189: InputObject822!): Object5231 @Directive35(argument89 : "stringValue25403", argument90 : true, argument91 : "stringValue25402", argument92 : 205, argument93 : "stringValue25404", argument94 : false) + field24956(argument1190: InputObject826!): Object5232 @Directive35(argument89 : "stringValue25412", argument90 : true, argument91 : "stringValue25411", argument92 : 206, argument93 : "stringValue25413", argument94 : false) + field24959(argument1191: InputObject827!): Object5233 @Directive35(argument89 : "stringValue25418", argument90 : true, argument91 : "stringValue25417", argument92 : 207, argument93 : "stringValue25419", argument94 : false) +} + +type Object5229 @Directive21(argument61 : "stringValue25395") @Directive44(argument97 : ["stringValue25394"]) { + field24950: Boolean! +} + +type Object523 @Directive20(argument58 : "stringValue2676", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2674") @Directive34 @Directive42(argument96 : ["stringValue2675"]) @Directive44(argument97 : ["stringValue2677", "stringValue2678", "stringValue2679"]) { + field2902: Object524! @Directive41 + field2906: String @Directive41 +} + +type Object5230 @Directive21(argument61 : "stringValue25401") @Directive44(argument97 : ["stringValue25400"]) { + field24952: String +} + +type Object5231 @Directive21(argument61 : "stringValue25410") @Directive44(argument97 : ["stringValue25409"]) { + field24954: [String] + field24955: Boolean! +} + +type Object5232 @Directive21(argument61 : "stringValue25416") @Directive44(argument97 : ["stringValue25415"]) { + field24957: [String] + field24958: Boolean! +} + +type Object5233 @Directive21(argument61 : "stringValue25422") @Directive44(argument97 : ["stringValue25421"]) { + field24960: [String]! + field24961: [String]! +} + +type Object5234 @Directive44(argument97 : ["stringValue25423"]) { + field24963(argument1192: InputObject828!): Object5235 @Directive35(argument89 : "stringValue25425", argument90 : true, argument91 : "stringValue25424", argument93 : "stringValue25426", argument94 : false) + field25018(argument1193: InputObject829!): Object5243 @Directive35(argument89 : "stringValue25449", argument90 : true, argument91 : "stringValue25448", argument92 : 208, argument93 : "stringValue25450", argument94 : false) + field25025(argument1194: InputObject830!): Object5245 @Directive35(argument89 : "stringValue25457", argument90 : true, argument91 : "stringValue25456", argument93 : "stringValue25458", argument94 : false) + field25027(argument1195: InputObject832!): Object5245 @Directive35(argument89 : "stringValue25464", argument90 : true, argument91 : "stringValue25463", argument92 : 209, argument93 : "stringValue25465", argument94 : false) + field25028(argument1196: InputObject833!): Object5246 @Directive35(argument89 : "stringValue25468", argument90 : true, argument91 : "stringValue25467", argument92 : 210, argument93 : "stringValue25469", argument94 : false) + field25033(argument1197: InputObject839!): Object5247 @Directive35(argument89 : "stringValue25479", argument90 : true, argument91 : "stringValue25478", argument92 : 211, argument93 : "stringValue25480", argument94 : false) +} + +type Object5235 @Directive21(argument61 : "stringValue25429") @Directive44(argument97 : ["stringValue25428"]) { + field24964: Object5236 +} + +type Object5236 @Directive21(argument61 : "stringValue25431") @Directive44(argument97 : ["stringValue25430"]) { + field24965: Scalar2 + field24966: String + field24967: Object5237 + field24970: Object5238 +} + +type Object5237 @Directive21(argument61 : "stringValue25433") @Directive44(argument97 : ["stringValue25432"]) { + field24968: Float + field24969: Float +} + +type Object5238 @Directive21(argument61 : "stringValue25435") @Directive44(argument97 : ["stringValue25434"]) { + field24971: Int + field24972: String + field24973: String + field24974: String + field24975: Boolean + field24976: Enum1319 + field24977: String + field24978: Boolean + field24979: [String] + field24980: [Object5239] + field24987: [Object5239] + field24988: Int + field24989: Int + field24990: Int + field24991: Int + field24992: [Object5238] + field24993: String + field24994: Float + field24995: [Object5239] + field24996: String + field24997: Object5240 + field25005: Enum1320 + field25006: Enum1321 + field25007: Object5241 + field25013: String + field25014: Enum1322 + field25015: String + field25016: String + field25017: Scalar2 +} + +type Object5239 @Directive21(argument61 : "stringValue25438") @Directive44(argument97 : ["stringValue25437"]) { + field24981: String + field24982: String + field24983: String + field24984: Boolean + field24985: String + field24986: Scalar2 +} + +type Object524 @Directive20(argument58 : "stringValue2682", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2680") @Directive42(argument96 : ["stringValue2681"]) @Directive44(argument97 : ["stringValue2683", "stringValue2684", "stringValue2685"]) { + field2903: Float! @Directive41 + field2904: String @Directive41 + field2905: String! @Directive41 +} + +type Object5240 @Directive21(argument61 : "stringValue25440") @Directive44(argument97 : ["stringValue25439"]) { + field24998: String + field24999: String + field25000: String + field25001: String + field25002: String + field25003: String + field25004: String +} + +type Object5241 @Directive21(argument61 : "stringValue25444") @Directive44(argument97 : ["stringValue25443"]) { + field25008: Int + field25009: [Object5242] + field25012: [Int] +} + +type Object5242 @Directive21(argument61 : "stringValue25446") @Directive44(argument97 : ["stringValue25445"]) { + field25010: Int + field25011: String +} + +type Object5243 @Directive21(argument61 : "stringValue25453") @Directive44(argument97 : ["stringValue25452"]) { + field25019: Object5244! +} + +type Object5244 @Directive21(argument61 : "stringValue25455") @Directive44(argument97 : ["stringValue25454"]) { + field25020: String! + field25021: Scalar2! + field25022: String! + field25023: String! + field25024: Object5236 +} + +type Object5245 @Directive21(argument61 : "stringValue25462") @Directive44(argument97 : ["stringValue25461"]) { + field25026: Object5236 +} + +type Object5246 @Directive21(argument61 : "stringValue25477") @Directive44(argument97 : ["stringValue25476"]) { + field25029: Scalar2 + field25030: Object5238 + field25031: Boolean + field25032: String +} + +type Object5247 @Directive21(argument61 : "stringValue25483") @Directive44(argument97 : ["stringValue25482"]) { + field25034: Object5248! +} + +type Object5248 @Directive21(argument61 : "stringValue25485") @Directive44(argument97 : ["stringValue25484"]) { + field25035: String! + field25036: String! +} + +type Object5249 @Directive44(argument97 : ["stringValue25486"]) { + field25038(argument1198: InputObject840!): Object5250 @Directive35(argument89 : "stringValue25488", argument90 : true, argument91 : "stringValue25487", argument92 : 212, argument93 : "stringValue25489", argument94 : false) +} + +type Object525 @Directive20(argument58 : "stringValue2688", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2686") @Directive34 @Directive42(argument96 : ["stringValue2687"]) @Directive44(argument97 : ["stringValue2689", "stringValue2690"]) { + field2912: Enum175 @Directive41 + field2913: String @Directive41 + field2914: Boolean @Directive41 + field2915: Boolean @Directive41 + field2916: Int @Directive41 + field2917: String @Directive41 + field2918: Int @Directive41 + field2919: String @Directive41 + field2920: Int @Directive41 + field2921: String @Directive41 + field2922: Float @Directive41 + field2923: Int @Directive41 + field2924: Enum176 @Directive41 +} + +type Object5250 @Directive21(argument61 : "stringValue25492") @Directive44(argument97 : ["stringValue25491"]) { + field25039: Scalar2! +} + +type Object5251 @Directive44(argument97 : ["stringValue25493"]) { + field25041(argument1199: InputObject841!): Object5252 @Directive35(argument89 : "stringValue25495", argument90 : true, argument91 : "stringValue25494", argument92 : 213, argument93 : "stringValue25496", argument94 : false) + field25043(argument1200: InputObject842!): Object5253 @Directive35(argument89 : "stringValue25503", argument90 : true, argument91 : "stringValue25502", argument92 : 214, argument93 : "stringValue25504", argument94 : false) + field25046(argument1201: InputObject843!): Object5254 @Directive35(argument89 : "stringValue25509", argument90 : true, argument91 : "stringValue25508", argument92 : 215, argument93 : "stringValue25510", argument94 : false) + field25048(argument1202: InputObject844!): Object5255 @Directive35(argument89 : "stringValue25515", argument90 : true, argument91 : "stringValue25514", argument92 : 216, argument93 : "stringValue25516", argument94 : false) + field25050(argument1203: InputObject845!): Object5256 @Directive35(argument89 : "stringValue25521", argument90 : false, argument91 : "stringValue25520", argument92 : 217, argument93 : "stringValue25522", argument94 : false) + field25052(argument1204: InputObject846!): Object5257 @Directive35(argument89 : "stringValue25528", argument90 : true, argument91 : "stringValue25527", argument92 : 218, argument93 : "stringValue25529", argument94 : false) + field25061(argument1205: InputObject841!): Object5252 @Directive35(argument89 : "stringValue25541", argument90 : true, argument91 : "stringValue25540", argument92 : 219, argument93 : "stringValue25542", argument94 : false) + field25062(argument1206: InputObject848!): Object5260 @Directive35(argument89 : "stringValue25544", argument90 : true, argument91 : "stringValue25543", argument92 : 220, argument93 : "stringValue25545", argument94 : false) + field25064(argument1207: InputObject849!): Object5261 @Directive35(argument89 : "stringValue25550", argument90 : false, argument91 : "stringValue25549", argument92 : 221, argument93 : "stringValue25551", argument94 : false) + field25066(argument1208: InputObject850!): Object5262 @Directive35(argument89 : "stringValue25556", argument90 : true, argument91 : "stringValue25555", argument92 : 222, argument93 : "stringValue25557", argument94 : false) + field25088(argument1209: InputObject851!): Object5268 @Directive35(argument89 : "stringValue25575", argument90 : true, argument91 : "stringValue25574", argument92 : 223, argument93 : "stringValue25576", argument94 : false) + field25105(argument1210: InputObject853!): Object5270 @Directive35(argument89 : "stringValue25587", argument90 : false, argument91 : "stringValue25586", argument92 : 224, argument93 : "stringValue25588", argument94 : false) + field25107(argument1211: InputObject854!): Object5271 @Directive35(argument89 : "stringValue25593", argument90 : false, argument91 : "stringValue25592", argument92 : 225, argument93 : "stringValue25594", argument94 : false) + field25109(argument1212: InputObject856!): Object5272 @Directive35(argument89 : "stringValue25600", argument90 : true, argument91 : "stringValue25599", argument92 : 226, argument93 : "stringValue25601", argument94 : false) + field25116(argument1213: InputObject841!): Object5252 @Directive35(argument89 : "stringValue25608", argument90 : true, argument91 : "stringValue25607", argument92 : 227, argument93 : "stringValue25609", argument94 : false) + field25117(argument1214: InputObject857!): Object5274 @Directive35(argument89 : "stringValue25611", argument90 : true, argument91 : "stringValue25610", argument92 : 228, argument93 : "stringValue25612", argument94 : false) + field25119(argument1215: InputObject858!): Object5275 @Directive35(argument89 : "stringValue25617", argument90 : true, argument91 : "stringValue25616", argument92 : 229, argument93 : "stringValue25618", argument94 : false) + field25126(argument1216: InputObject859!): Object5277 @Directive35(argument89 : "stringValue25625", argument90 : true, argument91 : "stringValue25624", argument92 : 230, argument93 : "stringValue25626", argument94 : false) + field25131(argument1217: InputObject860!): Object5278 @Directive35(argument89 : "stringValue25631", argument90 : true, argument91 : "stringValue25630", argument92 : 231, argument93 : "stringValue25632", argument94 : false) + field25133(argument1218: InputObject861!): Object5279 @Directive35(argument89 : "stringValue25638", argument90 : true, argument91 : "stringValue25637", argument92 : 232, argument93 : "stringValue25639", argument94 : false) + field25135(argument1219: InputObject862!): Object5280 @Directive35(argument89 : "stringValue25644", argument90 : true, argument91 : "stringValue25643", argument92 : 233, argument93 : "stringValue25645", argument94 : false) + field25137(argument1220: InputObject863!): Object5281 @Directive35(argument89 : "stringValue25650", argument90 : true, argument91 : "stringValue25649", argument92 : 234, argument93 : "stringValue25651", argument94 : false) +} + +type Object5252 @Directive21(argument61 : "stringValue25501") @Directive44(argument97 : ["stringValue25500"]) { + field25042: Boolean +} + +type Object5253 @Directive21(argument61 : "stringValue25507") @Directive44(argument97 : ["stringValue25506"]) { + field25044: [Scalar2]! + field25045: [Scalar2]! +} + +type Object5254 @Directive21(argument61 : "stringValue25513") @Directive44(argument97 : ["stringValue25512"]) { + field25047: Boolean +} + +type Object5255 @Directive21(argument61 : "stringValue25519") @Directive44(argument97 : ["stringValue25518"]) { + field25049: Boolean +} + +type Object5256 @Directive21(argument61 : "stringValue25526") @Directive44(argument97 : ["stringValue25525"]) { + field25051: Boolean +} + +type Object5257 @Directive21(argument61 : "stringValue25535") @Directive44(argument97 : ["stringValue25534"]) { + field25053: Object5258 + field25058: Object5259 +} + +type Object5258 @Directive21(argument61 : "stringValue25537") @Directive44(argument97 : ["stringValue25536"]) { + field25054: Scalar2 + field25055: String + field25056: String + field25057: Scalar2 +} + +type Object5259 @Directive21(argument61 : "stringValue25539") @Directive44(argument97 : ["stringValue25538"]) { + field25059: String + field25060: String +} + +type Object526 @Directive20(argument58 : "stringValue2701", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2699") @Directive34 @Directive42(argument96 : ["stringValue2700"]) @Directive44(argument97 : ["stringValue2702", "stringValue2703"]) { + field2928: [Object525] @Directive41 + field2929: Object523 @Directive41 + field2930: Object523 @Directive41 + field2931: Object523 @Directive41 + field2932: Object523 @Directive41 + field2933: Object523 @Directive41 + field2934: Object523 @Directive41 + field2935: String @Directive41 +} + +type Object5260 @Directive21(argument61 : "stringValue25548") @Directive44(argument97 : ["stringValue25547"]) { + field25063: Boolean! +} + +type Object5261 @Directive21(argument61 : "stringValue25554") @Directive44(argument97 : ["stringValue25553"]) { + field25065: Boolean +} + +type Object5262 @Directive21(argument61 : "stringValue25562") @Directive44(argument97 : ["stringValue25561"]) { + field25067: [Object5263] +} + +type Object5263 @Directive21(argument61 : "stringValue25564") @Directive44(argument97 : ["stringValue25563"]) { + field25068: Enum1328! + field25069: [Object5264] +} + +type Object5264 @Directive21(argument61 : "stringValue25566") @Directive44(argument97 : ["stringValue25565"]) { + field25070: Enum1329! + field25071: Enum1328! + field25072: Enum1330! + field25073: Boolean! + field25074: Object5265 + field25087: Int! +} + +type Object5265 @Directive21(argument61 : "stringValue25569") @Directive44(argument97 : ["stringValue25568"]) { + field25075: [Object5266] + field25081: [Object5267] +} + +type Object5266 @Directive21(argument61 : "stringValue25571") @Directive44(argument97 : ["stringValue25570"]) { + field25076: String + field25077: [String] + field25078: String + field25079: String + field25080: String +} + +type Object5267 @Directive21(argument61 : "stringValue25573") @Directive44(argument97 : ["stringValue25572"]) { + field25082: String + field25083: [String] + field25084: String + field25085: String + field25086: String +} + +type Object5268 @Directive21(argument61 : "stringValue25582") @Directive44(argument97 : ["stringValue25581"]) { + field25089: Object5269 +} + +type Object5269 @Directive21(argument61 : "stringValue25584") @Directive44(argument97 : ["stringValue25583"]) { + field25090: Scalar2 + field25091: Scalar2 + field25092: String + field25093: String + field25094: Scalar4 + field25095: [Enum1332] + field25096: Enum1333 + field25097: String + field25098: String + field25099: String + field25100: String + field25101: String + field25102: Scalar2 + field25103: Scalar2 + field25104: Boolean +} + +type Object527 @Directive20(argument58 : "stringValue2706", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2704") @Directive34 @Directive42(argument96 : ["stringValue2705"]) @Directive44(argument97 : ["stringValue2707", "stringValue2708"]) { + field2937: Object523 @Directive41 + field2938: Object523 @Directive41 + field2939: Object523 @Directive41 + field2940: Object528 @Directive40 + field2943: Object523 @Directive41 + field2944: Object529 @Directive41 +} + +type Object5270 @Directive21(argument61 : "stringValue25591") @Directive44(argument97 : ["stringValue25590"]) { + field25106: Object5269 +} + +type Object5271 @Directive21(argument61 : "stringValue25598") @Directive44(argument97 : ["stringValue25597"]) { + field25108: [Object5269] +} + +type Object5272 @Directive21(argument61 : "stringValue25604") @Directive44(argument97 : ["stringValue25603"]) { + field25110: [Object5273] +} + +type Object5273 @Directive21(argument61 : "stringValue25606") @Directive44(argument97 : ["stringValue25605"]) { + field25111: Scalar2! + field25112: String + field25113: Scalar1 + field25114: Scalar4 + field25115: String +} + +type Object5274 @Directive21(argument61 : "stringValue25615") @Directive44(argument97 : ["stringValue25614"]) { + field25118: Boolean +} + +type Object5275 @Directive21(argument61 : "stringValue25621") @Directive44(argument97 : ["stringValue25620"]) { + field25120: Scalar2 + field25121: [Scalar2] + field25122: [Scalar2] + field25123: Boolean! + field25124: Object5276 +} + +type Object5276 @Directive21(argument61 : "stringValue25623") @Directive44(argument97 : ["stringValue25622"]) { + field25125: String +} + +type Object5277 @Directive21(argument61 : "stringValue25629") @Directive44(argument97 : ["stringValue25628"]) { + field25127: String + field25128: String + field25129: String + field25130: Scalar2 +} + +type Object5278 @Directive21(argument61 : "stringValue25636") @Directive44(argument97 : ["stringValue25635"]) { + field25132: Boolean +} + +type Object5279 @Directive21(argument61 : "stringValue25642") @Directive44(argument97 : ["stringValue25641"]) { + field25134: Boolean +} + +type Object528 @Directive20(argument58 : "stringValue2711", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2709") @Directive34 @Directive42(argument96 : ["stringValue2710"]) @Directive44(argument97 : ["stringValue2712", "stringValue2713"]) { + field2941: String @Directive40 + field2942: String @Directive41 +} + +type Object5280 @Directive21(argument61 : "stringValue25648") @Directive44(argument97 : ["stringValue25647"]) { + field25136: Boolean +} + +type Object5281 @Directive21(argument61 : "stringValue25654") @Directive44(argument97 : ["stringValue25653"]) { + field25138: Object5258 + field25139: Object5259 +} + +type Object5282 @Directive44(argument97 : ["stringValue25655"]) { + field25141(argument1221: InputObject864!): Object5283 @Directive35(argument89 : "stringValue25657", argument90 : true, argument91 : "stringValue25656", argument92 : 235, argument93 : "stringValue25658", argument94 : false) + field25145(argument1222: InputObject865!): Object5284 @Directive35(argument89 : "stringValue25663", argument90 : true, argument91 : "stringValue25662", argument92 : 236, argument93 : "stringValue25664", argument94 : false) +} + +type Object5283 @Directive21(argument61 : "stringValue25661") @Directive44(argument97 : ["stringValue25660"]) { + field25142: String + field25143: String + field25144: Boolean +} + +type Object5284 @Directive21(argument61 : "stringValue25667") @Directive44(argument97 : ["stringValue25666"]) { + field25146: String + field25147: String + field25148: Boolean +} + +type Object5285 @Directive44(argument97 : ["stringValue25668"]) { + field25150(argument1223: InputObject866!): Object5286 @Directive35(argument89 : "stringValue25670", argument90 : true, argument91 : "stringValue25669", argument92 : 237, argument93 : "stringValue25671", argument94 : false) + field25156(argument1224: InputObject867!): Object5288 @Directive35(argument89 : "stringValue25679", argument90 : true, argument91 : "stringValue25678", argument92 : 238, argument93 : "stringValue25680", argument94 : false) + field25159(argument1225: InputObject870!): Object5289 @Directive35(argument89 : "stringValue25687", argument90 : true, argument91 : "stringValue25686", argument92 : 239, argument93 : "stringValue25688", argument94 : false) + field25162(argument1226: InputObject871!): Object5290 @Directive35(argument89 : "stringValue25693", argument90 : true, argument91 : "stringValue25692", argument92 : 240, argument93 : "stringValue25694", argument94 : false) +} + +type Object5286 @Directive21(argument61 : "stringValue25674") @Directive44(argument97 : ["stringValue25673"]) { + field25151: Boolean + field25152: Object5287 +} + +type Object5287 @Directive21(argument61 : "stringValue25676") @Directive44(argument97 : ["stringValue25675"]) { + field25153: String! + field25154: Boolean + field25155: Enum1335! +} + +type Object5288 @Directive21(argument61 : "stringValue25685") @Directive44(argument97 : ["stringValue25684"]) { + field25157: Boolean + field25158: Object5287 +} + +type Object5289 @Directive21(argument61 : "stringValue25691") @Directive44(argument97 : ["stringValue25690"]) { + field25160: Boolean + field25161: Object5287 +} + +type Object529 @Directive20(argument58 : "stringValue2715", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2714") @Directive31 @Directive44(argument97 : ["stringValue2716", "stringValue2717"]) { + field2945: Int + field2946: Int + field2947: Scalar2 +} + +type Object5290 @Directive21(argument61 : "stringValue25697") @Directive44(argument97 : ["stringValue25696"]) { + field25163: Boolean + field25164: Object5287 +} + +type Object5291 @Directive44(argument97 : ["stringValue25698"]) { + field25166(argument1227: InputObject872!): Object5292 @Directive35(argument89 : "stringValue25700", argument90 : true, argument91 : "stringValue25699", argument92 : 241, argument93 : "stringValue25701", argument94 : false) + field25206(argument1228: InputObject879!): Object5292 @Directive35(argument89 : "stringValue25732", argument90 : true, argument91 : "stringValue25731", argument92 : 242, argument93 : "stringValue25733", argument94 : false) + field25207(argument1229: InputObject880!): Object5300 @Directive35(argument89 : "stringValue25736", argument90 : true, argument91 : "stringValue25735", argument92 : 243, argument93 : "stringValue25737", argument94 : false) +} + +type Object5292 @Directive21(argument61 : "stringValue25716") @Directive44(argument97 : ["stringValue25715"]) { + field25167: Boolean! + field25168: Object5293 +} + +type Object5293 @Directive21(argument61 : "stringValue25718") @Directive44(argument97 : ["stringValue25717"]) { + field25169: Scalar2! + field25170: Scalar2! + field25171: Object5294! + field25205: Enum1341! +} + +type Object5294 @Directive21(argument61 : "stringValue25720") @Directive44(argument97 : ["stringValue25719"]) { + field25172: Enum1336! + field25173: Object5295! + field25177: String! + field25178: String + field25179: Float + field25180: Float + field25181: Scalar4 + field25182: Scalar4 + field25183: [Object5296]! + field25193: [Scalar2]! + field25194: Object5298 + field25204: Scalar2 +} + +type Object5295 @Directive21(argument61 : "stringValue25722") @Directive44(argument97 : ["stringValue25721"]) { + field25174: Enum1337! + field25175: Float + field25176: Float +} + +type Object5296 @Directive21(argument61 : "stringValue25724") @Directive44(argument97 : ["stringValue25723"]) { + field25184: Scalar3 + field25185: Scalar3 + field25186: [Enum1338] + field25187: Object5297 + field25190: Object5297 + field25191: [Enum1340] + field25192: [Enum1338] +} + +type Object5297 @Directive21(argument61 : "stringValue25726") @Directive44(argument97 : ["stringValue25725"]) { + field25188: Enum1339! + field25189: Scalar2! +} + +type Object5298 @Directive21(argument61 : "stringValue25728") @Directive44(argument97 : ["stringValue25727"]) { + field25195: Float + field25196: Scalar4 + field25197: Scalar4 + field25198: Object5299 + field25200: Scalar2 + field25201: Scalar2 + field25202: Scalar2 + field25203: String +} + +type Object5299 @Directive21(argument61 : "stringValue25730") @Directive44(argument97 : ["stringValue25729"]) { + field25199: [String] +} + +type Object53 @Directive21(argument61 : "stringValue259") @Directive44(argument97 : ["stringValue258"]) { + field290: String + field291: Float +} + +type Object530 @Directive20(argument58 : "stringValue2720", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2718") @Directive34 @Directive42(argument96 : ["stringValue2719"]) @Directive44(argument97 : ["stringValue2721", "stringValue2722"]) { + field2949: [Object531] @Directive41 +} + +type Object5300 @Directive21(argument61 : "stringValue25740") @Directive44(argument97 : ["stringValue25739"]) { + field25208: Scalar1! + field25209: Scalar1! +} + +type Object5301 @Directive44(argument97 : ["stringValue25741"]) { + field25211(argument1230: InputObject881!): Object5302 @Directive35(argument89 : "stringValue25743", argument90 : false, argument91 : "stringValue25742", argument92 : 244, argument93 : "stringValue25744", argument94 : true) + field25274(argument1231: InputObject896!): Object5313 @Directive35(argument89 : "stringValue25790", argument90 : false, argument91 : "stringValue25789", argument92 : 245, argument93 : "stringValue25791", argument94 : true) + field25278(argument1232: InputObject897!): Object5314 @Directive35(argument89 : "stringValue25797", argument90 : false, argument91 : "stringValue25796", argument92 : 246, argument93 : "stringValue25798", argument94 : true) + field25292(argument1233: InputObject898!): Object5316 @Directive35(argument89 : "stringValue25805", argument90 : false, argument91 : "stringValue25804", argument92 : 247, argument93 : "stringValue25806", argument94 : true) + field25297(argument1234: InputObject899!): Object5317 @Directive35(argument89 : "stringValue25811", argument90 : true, argument91 : "stringValue25810", argument92 : 248, argument93 : "stringValue25812", argument94 : true) + field25310(argument1235: InputObject900!): Object5314 @Directive35(argument89 : "stringValue25820", argument90 : false, argument91 : "stringValue25819", argument92 : 249, argument93 : "stringValue25821", argument94 : true) + field25311(argument1236: InputObject901!): Object5319 @Directive35(argument89 : "stringValue25824", argument90 : false, argument91 : "stringValue25823", argument92 : 250, argument93 : "stringValue25825", argument94 : true) + field25313(argument1237: InputObject902!): Object5320 @Directive35(argument89 : "stringValue25830", argument90 : true, argument91 : "stringValue25829", argument92 : 251, argument93 : "stringValue25831", argument94 : true) + field25316(argument1238: InputObject903!): Object5321 @Directive35(argument89 : "stringValue25836", argument90 : false, argument91 : "stringValue25835", argument92 : 252, argument93 : "stringValue25837", argument94 : true) + field25320(argument1239: InputObject904!): Object5322 @Directive35(argument89 : "stringValue25844", argument90 : false, argument91 : "stringValue25843", argument92 : 253, argument93 : "stringValue25845", argument94 : true) + field25323(argument1240: InputObject907!): Object5314 @Directive35(argument89 : "stringValue25852", argument90 : true, argument91 : "stringValue25851", argument92 : 254, argument93 : "stringValue25853", argument94 : true) + field25324(argument1241: InputObject908!): Object5323 @Directive35(argument89 : "stringValue25856", argument90 : true, argument91 : "stringValue25855", argument92 : 255, argument93 : "stringValue25857", argument94 : true) + field25334(argument1242: InputObject913!): Object5328 @Directive35(argument89 : "stringValue25874", argument90 : false, argument91 : "stringValue25873", argument92 : 256, argument93 : "stringValue25875", argument94 : true) + field25360(argument1243: InputObject915!): Object5314 @Directive35(argument89 : "stringValue25889", argument90 : false, argument91 : "stringValue25888", argument92 : 257, argument93 : "stringValue25890", argument94 : true) + field25361(argument1244: InputObject916!): Object5333 @Directive35(argument89 : "stringValue25893", argument90 : false, argument91 : "stringValue25892", argument92 : 258, argument93 : "stringValue25894", argument94 : true) + field25365(argument1245: InputObject966!): Object5334 @Directive35(argument89 : "stringValue25949", argument90 : false, argument91 : "stringValue25948", argument92 : 259, argument93 : "stringValue25950", argument94 : true) + field25367(argument1246: InputObject968!): Object5335 @Directive35(argument89 : "stringValue25956", argument90 : false, argument91 : "stringValue25955", argument92 : 260, argument93 : "stringValue25957", argument94 : true) + field25372(argument1247: InputObject974!): Object5337 @Directive35(argument89 : "stringValue25969", argument90 : false, argument91 : "stringValue25968", argument92 : 261, argument93 : "stringValue25970", argument94 : true) + field25400(argument1248: InputObject978!): Object5342 @Directive35(argument89 : "stringValue25987", argument90 : true, argument91 : "stringValue25986", argument92 : 262, argument93 : "stringValue25988", argument94 : true) + field25405(argument1249: InputObject979!): Object5344 @Directive35(argument89 : "stringValue25995", argument90 : false, argument91 : "stringValue25994", argument92 : 263, argument93 : "stringValue25996", argument94 : true) + field25407(argument1250: InputObject981!): Object5345 @Directive35(argument89 : "stringValue26002", argument90 : false, argument91 : "stringValue26001", argument92 : 264, argument93 : "stringValue26003", argument94 : true) + field25481(argument1251: InputObject988!): Object5361 @Directive35(argument89 : "stringValue26046", argument90 : false, argument91 : "stringValue26045", argument92 : 265, argument93 : "stringValue26047", argument94 : true) + field25484(argument1252: InputObject991!): Object5362 @Directive35(argument89 : "stringValue26054", argument90 : false, argument91 : "stringValue26053", argument92 : 266, argument93 : "stringValue26055", argument94 : true) + field25486(argument1253: InputObject993!): Object5363 @Directive35(argument89 : "stringValue26061", argument90 : false, argument91 : "stringValue26060", argument92 : 267, argument93 : "stringValue26062", argument94 : true) + field25489(argument1254: InputObject994!): Object5364 @Directive35(argument89 : "stringValue26067", argument90 : false, argument91 : "stringValue26066", argument92 : 268, argument93 : "stringValue26068", argument94 : true) + field25494(argument1255: InputObject996!): Object5366 @Directive35(argument89 : "stringValue26077", argument90 : false, argument91 : "stringValue26076", argument92 : 269, argument93 : "stringValue26078", argument94 : true) + field25499(argument1256: InputObject997!): Object5367 @Directive35(argument89 : "stringValue26083", argument90 : false, argument91 : "stringValue26082", argument92 : 270, argument93 : "stringValue26084", argument94 : true) + field25502(argument1257: InputObject999!): Object5368 @Directive35(argument89 : "stringValue26090", argument90 : false, argument91 : "stringValue26089", argument92 : 271, argument93 : "stringValue26091", argument94 : true) + field25521(argument1258: InputObject1004!): Object5372 @Directive35(argument89 : "stringValue26106", argument90 : false, argument91 : "stringValue26105", argument92 : 272, argument93 : "stringValue26107", argument94 : true) + field25541(argument1259: InputObject1005!): Object5374 @Directive35(argument89 : "stringValue26114", argument90 : false, argument91 : "stringValue26113", argument92 : 273, argument93 : "stringValue26115", argument94 : true) + field25552(argument1260: InputObject1008!): Object5376 @Directive35(argument89 : "stringValue26124", argument90 : true, argument91 : "stringValue26123", argument92 : 274, argument93 : "stringValue26125", argument94 : true) + field25557(argument1261: InputObject1009!): Object5378 @Directive35(argument89 : "stringValue26132", argument90 : true, argument91 : "stringValue26131", argument92 : 275, argument93 : "stringValue26133", argument94 : true) + field25559(argument1262: InputObject1010!): Object5379 @Directive35(argument89 : "stringValue26138", argument90 : false, argument91 : "stringValue26137", argument92 : 276, argument93 : "stringValue26139", argument94 : true) + field25562(argument1263: InputObject1018!): Object5380 @Directive35(argument89 : "stringValue26151", argument90 : true, argument91 : "stringValue26150", argument92 : 277, argument93 : "stringValue26152", argument94 : true) + field25565(argument1264: InputObject1021!): Object5381 @Directive35(argument89 : "stringValue26159", argument90 : false, argument91 : "stringValue26158", argument92 : 278, argument93 : "stringValue26160", argument94 : true) + field25605(argument1265: InputObject1024!): Object5388 @Directive35(argument89 : "stringValue26179", argument90 : true, argument91 : "stringValue26178", argument92 : 279, argument93 : "stringValue26180", argument94 : true) +} + +type Object5302 @Directive21(argument61 : "stringValue25768") @Directive44(argument97 : ["stringValue25767"]) { + field25212: Object5303 +} + +type Object5303 @Directive21(argument61 : "stringValue25770") @Directive44(argument97 : ["stringValue25769"]) { + field25213: Scalar2 + field25214: Scalar2 + field25215: Enum651 + field25216: String + field25217: String + field25218: [Scalar2] + field25219: Object5304 +} + +type Object5304 @Directive21(argument61 : "stringValue25772") @Directive44(argument97 : ["stringValue25771"]) { + field25220: Object5305 + field25228: Object5306 + field25235: Object5307 + field25242: Object5308 + field25248: Object5309 + field25255: Object5310 + field25259: Object5311 + field25266: Object5312 +} + +type Object5305 @Directive21(argument61 : "stringValue25774") @Directive44(argument97 : ["stringValue25773"]) { + field25221: String + field25222: [Object3067] + field25223: [Enum1342] + field25224: String + field25225: Object3070 + field25226: Object3070 + field25227: Object3070 +} + +type Object5306 @Directive21(argument61 : "stringValue25776") @Directive44(argument97 : ["stringValue25775"]) { + field25229: String + field25230: [Object3067] + field25231: String + field25232: Object3070 + field25233: Boolean + field25234: Boolean +} + +type Object5307 @Directive21(argument61 : "stringValue25778") @Directive44(argument97 : ["stringValue25777"]) { + field25236: String + field25237: [Object3067] + field25238: Enum1343 + field25239: Enum1344 + field25240: Enum1345 + field25241: [Enum1346] +} + +type Object5308 @Directive21(argument61 : "stringValue25780") @Directive44(argument97 : ["stringValue25779"]) { + field25243: String + field25244: [Object3067] + field25245: Enum1343 + field25246: Enum1345 + field25247: Enum1347 +} + +type Object5309 @Directive21(argument61 : "stringValue25782") @Directive44(argument97 : ["stringValue25781"]) { + field25249: String + field25250: [Object3067] + field25251: Boolean + field25252: Boolean + field25253: [Enum1348] + field25254: Boolean +} + +type Object531 @Directive20(argument58 : "stringValue2725", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2723") @Directive34 @Directive42(argument96 : ["stringValue2724"]) @Directive44(argument97 : ["stringValue2726", "stringValue2727"]) { + field2950: Enum175 @Directive41 + field2951: Float @Directive41 + field2952: Int @Directive41 + field2953: String @Directive41 + field2954: Scalar3 @Directive41 + field2955: Scalar3 @Directive41 + field2956: Scalar4 @Directive41 + field2957: Scalar2 @Directive41 + field2958: String @Directive41 + field2959: String @Directive41 + field2960: Int @Directive41 + field2961: Int @Directive41 + field2962: Enum176 @Directive41 + field2963: [Enum177] @Directive41 +} + +type Object5310 @Directive21(argument61 : "stringValue25784") @Directive44(argument97 : ["stringValue25783"]) { + field25256: String + field25257: [Object3067] + field25258: Boolean +} + +type Object5311 @Directive21(argument61 : "stringValue25786") @Directive44(argument97 : ["stringValue25785"]) { + field25260: String + field25261: [Object3067] + field25262: Boolean + field25263: Boolean + field25264: Boolean + field25265: Int +} + +type Object5312 @Directive21(argument61 : "stringValue25788") @Directive44(argument97 : ["stringValue25787"]) { + field25267: String + field25268: [Object3067] + field25269: Boolean + field25270: Int + field25271: Boolean + field25272: Boolean + field25273: Boolean +} + +type Object5313 @Directive21(argument61 : "stringValue25795") @Directive44(argument97 : ["stringValue25794"]) { + field25275: String! + field25276: String! + field25277: Scalar4! +} + +type Object5314 @Directive21(argument61 : "stringValue25801") @Directive44(argument97 : ["stringValue25800"]) { + field25279: [Object5315]! +} + +type Object5315 @Directive21(argument61 : "stringValue25803") @Directive44(argument97 : ["stringValue25802"]) { + field25280: Scalar2! + field25281: String + field25282: String + field25283: String + field25284: String + field25285: String + field25286: String + field25287: String + field25288: String + field25289: Scalar4 + field25290: Int! + field25291: Scalar2 +} + +type Object5316 @Directive21(argument61 : "stringValue25809") @Directive44(argument97 : ["stringValue25808"]) { + field25293: Scalar2 + field25294: String + field25295: Scalar2 + field25296: Object3057 +} + +type Object5317 @Directive21(argument61 : "stringValue25816") @Directive44(argument97 : ["stringValue25815"]) { + field25298: Object5318! +} + +type Object5318 @Directive21(argument61 : "stringValue25818") @Directive44(argument97 : ["stringValue25817"]) { + field25299: Scalar2! + field25300: Scalar2! + field25301: String! + field25302: String! + field25303: String! + field25304: Enum1350! + field25305: Float! + field25306: Boolean! + field25307: Scalar4 + field25308: Scalar4! + field25309: Int! +} + +type Object5319 @Directive21(argument61 : "stringValue25828") @Directive44(argument97 : ["stringValue25827"]) { + field25312: Scalar2! +} + +type Object532 @Directive20(argument58 : "stringValue2732", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2731") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2733", "stringValue2734"]) { + field2965: Int @Directive18 + field2966: String + field2967: String + field2968: [Object533] + field2982: Object480 + field2983: [String!] + field2984: Enum178 + field2985: [Object535!] + field2990: String + field2991: String + field2992: Float + field2993: Object536 +} + +type Object5320 @Directive21(argument61 : "stringValue25834") @Directive44(argument97 : ["stringValue25833"]) { + field25314: Scalar2 + field25315: Object3057 +} + +type Object5321 @Directive21(argument61 : "stringValue25842") @Directive44(argument97 : ["stringValue25841"]) { + field25317: String! + field25318: String! + field25319: Scalar4! +} + +type Object5322 @Directive21(argument61 : "stringValue25850") @Directive44(argument97 : ["stringValue25849"]) { + field25321: Scalar2 + field25322: Scalar1 +} + +type Object5323 @Directive21(argument61 : "stringValue25864") @Directive44(argument97 : ["stringValue25863"]) { + field25325: Scalar2! + field25326: Object5324 +} + +type Object5324 @Directive21(argument61 : "stringValue25866") @Directive44(argument97 : ["stringValue25865"]) { + field25327: Object5325 + field25332: Object5327 +} + +type Object5325 @Directive21(argument61 : "stringValue25868") @Directive44(argument97 : ["stringValue25867"]) { + field25328: Float! + field25329: Object5326 +} + +type Object5326 @Directive21(argument61 : "stringValue25870") @Directive44(argument97 : ["stringValue25869"]) { + field25330: String! + field25331: Scalar2! +} + +type Object5327 @Directive21(argument61 : "stringValue25872") @Directive44(argument97 : ["stringValue25871"]) { + field25333: Boolean +} + +type Object5328 @Directive21(argument61 : "stringValue25879") @Directive44(argument97 : ["stringValue25878"]) { + field25335: [Object5329]! + field25343: [Object5330]! +} + +type Object5329 @Directive21(argument61 : "stringValue25881") @Directive44(argument97 : ["stringValue25880"]) { + field25336: String + field25337: String + field25338: [String]! + field25339: Scalar2! @deprecated + field25340: Int! + field25341: [Object5315]! + field25342: Int! +} + +type Object533 @Directive20(argument58 : "stringValue2737", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2735") @Directive34 @Directive42(argument96 : ["stringValue2736"]) @Directive44(argument97 : ["stringValue2738", "stringValue2739"]) { + field2969: [String] @Directive41 + field2970: [String] @Directive41 + field2971: String @Directive41 + field2972: String @Directive41 + field2973: Float @Directive41 + field2974: Float @Directive41 + field2975: Boolean @Directive41 + field2976: Boolean @Directive41 + field2977: Scalar4 @Directive41 + field2978: [Object534] @Directive41 + field2981: [Object534] @Directive41 +} + +type Object5330 @Directive21(argument61 : "stringValue25883") @Directive44(argument97 : ["stringValue25882"]) { + field25344: String + field25345: String + field25346: [Object5331]! + field25358: String! + field25359: Scalar2 +} + +type Object5331 @Directive21(argument61 : "stringValue25885") @Directive44(argument97 : ["stringValue25884"]) { + field25347: Scalar2 + field25348: Boolean + field25349: [Object5315]! + field25350: Int + field25351: Int! + field25352: String! + field25353: Object5332 +} + +type Object5332 @Directive21(argument61 : "stringValue25887") @Directive44(argument97 : ["stringValue25886"]) { + field25354: Scalar3 + field25355: String + field25356: [Object5315]! + field25357: Scalar2 +} + +type Object5333 @Directive21(argument61 : "stringValue25947") @Directive44(argument97 : ["stringValue25946"]) { + field25362: [String] @deprecated + field25363: Object3057 + field25364: Object3146 +} + +type Object5334 @Directive21(argument61 : "stringValue25954") @Directive44(argument97 : ["stringValue25953"]) { + field25366: Object3057 +} + +type Object5335 @Directive21(argument61 : "stringValue25965") @Directive44(argument97 : ["stringValue25964"]) { + field25368: Object5336 @deprecated + field25371: Object3057 +} + +type Object5336 @Directive21(argument61 : "stringValue25967") @Directive44(argument97 : ["stringValue25966"]) { + field25369: Boolean + field25370: String +} + +type Object5337 @Directive21(argument61 : "stringValue25977") @Directive44(argument97 : ["stringValue25976"]) { + field25373: Object5338 +} + +type Object5338 @Directive21(argument61 : "stringValue25979") @Directive44(argument97 : ["stringValue25978"]) { + field25374: [String] + field25375: String + field25376: Scalar2 + field25377: Boolean + field25378: [Object5339] + field25381: [Object5340] + field25395: [Object5339] + field25396: [Object5341] + field25399: String +} + +type Object5339 @Directive21(argument61 : "stringValue25981") @Directive44(argument97 : ["stringValue25980"]) { + field25379: String + field25380: Scalar2 +} + +type Object534 @Directive20(argument58 : "stringValue2742", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2740") @Directive34 @Directive42(argument96 : ["stringValue2741"]) @Directive44(argument97 : ["stringValue2743", "stringValue2744"]) { + field2979: String @Directive41 + field2980: String @Directive41 +} + +type Object5340 @Directive21(argument61 : "stringValue25983") @Directive44(argument97 : ["stringValue25982"]) { + field25382: [Object3119] + field25383: String + field25384: [Object3119] + field25385: [Scalar2] + field25386: String + field25387: Scalar2 + field25388: String + field25389: Scalar2 + field25390: String + field25391: [Scalar2] + field25392: Scalar2 + field25393: Object5304 + field25394: String +} + +type Object5341 @Directive21(argument61 : "stringValue25985") @Directive44(argument97 : ["stringValue25984"]) { + field25397: String + field25398: String +} + +type Object5342 @Directive21(argument61 : "stringValue25991") @Directive44(argument97 : ["stringValue25990"]) { + field25401: Boolean! + field25402: [Object5343] +} + +type Object5343 @Directive21(argument61 : "stringValue25993") @Directive44(argument97 : ["stringValue25992"]) { + field25403: String + field25404: String +} + +type Object5344 @Directive21(argument61 : "stringValue26000") @Directive44(argument97 : ["stringValue25999"]) { + field25406: Object3057 +} + +type Object5345 @Directive21(argument61 : "stringValue26012") @Directive44(argument97 : ["stringValue26011"]) { + field25408: [Object5346] @deprecated + field25480: Object3057 +} + +type Object5346 @Directive21(argument61 : "stringValue26014") @Directive44(argument97 : ["stringValue26013"]) { + field25409: Enum1355 + field25410: Union210 +} + +type Object5347 @Directive21(argument61 : "stringValue26018") @Directive44(argument97 : ["stringValue26017"]) { + field25411: [Object3062] + field25412: [Object3153] + field25413: Object3057 + field25414: [Object3151] +} + +type Object5348 @Directive21(argument61 : "stringValue26020") @Directive44(argument97 : ["stringValue26019"]) { + field25415: String + field25416: [Object3159] + field25417: Object3057 +} + +type Object5349 @Directive21(argument61 : "stringValue26022") @Directive44(argument97 : ["stringValue26021"]) { + field25418: String + field25419: String + field25420: Int + field25421: [Object3157] + field25422: [Object3157] + field25423: [Object3157] + field25424: Object3057 +} + +type Object535 @Directive20(argument58 : "stringValue2751", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2749") @Directive34 @Directive42(argument96 : ["stringValue2750"]) @Directive44(argument97 : ["stringValue2752", "stringValue2753"]) { + field2986: Enum179 @Directive41 + field2987: String @Directive41 + field2988: String @Directive41 + field2989: String @Directive41 +} + +type Object5350 @Directive21(argument61 : "stringValue26024") @Directive44(argument97 : ["stringValue26023"]) { + field25425: Object3059 + field25426: Object3057 +} + +type Object5351 @Directive21(argument61 : "stringValue26026") @Directive44(argument97 : ["stringValue26025"]) { + field25427: String + field25428: Object3057 +} + +type Object5352 @Directive21(argument61 : "stringValue26028") @Directive44(argument97 : ["stringValue26027"]) { + field25429: [Object3060] + field25430: Object3057 +} + +type Object5353 @Directive21(argument61 : "stringValue26030") @Directive44(argument97 : ["stringValue26029"]) { + field25431: Boolean + field25432: String + field25433: String + field25434: Object3057 +} + +type Object5354 @Directive21(argument61 : "stringValue26032") @Directive44(argument97 : ["stringValue26031"]) { + field25435: String + field25436: Object3057 +} + +type Object5355 @Directive21(argument61 : "stringValue26034") @Directive44(argument97 : ["stringValue26033"]) { + field25437: String + field25438: Object3057 +} + +type Object5356 @Directive21(argument61 : "stringValue26036") @Directive44(argument97 : ["stringValue26035"]) { + field25439: String + field25440: String + field25441: Object3134 + field25442: Object3057 +} + +type Object5357 @Directive21(argument61 : "stringValue26038") @Directive44(argument97 : ["stringValue26037"]) { + field25443: String + field25444: String + field25445: String + field25446: String + field25447: String + field25448: String + field25449: String + field25450: String + field25451: String + field25452: String + field25453: String + field25454: Float + field25455: Float + field25456: Object3147 + field25457: String + field25458: String + field25459: Object3057 +} + +type Object5358 @Directive21(argument61 : "stringValue26040") @Directive44(argument97 : ["stringValue26039"]) { + field25460: String + field25461: String + field25462: String + field25463: Int + field25464: Int + field25465: Int + field25466: Float + field25467: String + field25468: [String] + field25469: String + field25470: String + field25471: [Object3114] + field25472: Object3162 + field25473: Object3057 +} + +type Object5359 @Directive21(argument61 : "stringValue26042") @Directive44(argument97 : ["stringValue26041"]) { + field25474: String + field25475: String + field25476: Object3057 +} + +type Object536 @Directive20(argument58 : "stringValue2759", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2758") @Directive30(argument80 : true) @Directive34 @Directive44(argument97 : ["stringValue2760", "stringValue2761"]) { + field2994: String @Directive30(argument80 : true) @Directive41 + field2995: String @Directive30(argument80 : true) @Directive41 + field2996: [Object537] @Directive30(argument80 : true) @Directive41 + field3002: String @Directive30(argument80 : true) @Directive41 + field3003: String @Directive30(argument80 : true) @Directive41 +} + +type Object5360 @Directive21(argument61 : "stringValue26044") @Directive44(argument97 : ["stringValue26043"]) { + field25477: Int + field25478: Int + field25479: Object3057 +} + +type Object5361 @Directive21(argument61 : "stringValue26052") @Directive44(argument97 : ["stringValue26051"]) { + field25482: [Object3059] @deprecated + field25483: Object3057 +} + +type Object5362 @Directive21(argument61 : "stringValue26059") @Directive44(argument97 : ["stringValue26058"]) { + field25485: Object5303 +} + +type Object5363 @Directive21(argument61 : "stringValue26065") @Directive44(argument97 : ["stringValue26064"]) { + field25487: [Object3120] + field25488: Scalar1 +} + +type Object5364 @Directive21(argument61 : "stringValue26073") @Directive44(argument97 : ["stringValue26072"]) { + field25490: Boolean! + field25491: [Object5365] +} + +type Object5365 @Directive21(argument61 : "stringValue26075") @Directive44(argument97 : ["stringValue26074"]) { + field25492: String + field25493: String +} + +type Object5366 @Directive21(argument61 : "stringValue26081") @Directive44(argument97 : ["stringValue26080"]) { + field25495: Scalar2 + field25496: String + field25497: Scalar2 + field25498: Object3057 +} + +type Object5367 @Directive21(argument61 : "stringValue26088") @Directive44(argument97 : ["stringValue26087"]) { + field25500: Object3061 @deprecated + field25501: Object3057 +} + +type Object5368 @Directive21(argument61 : "stringValue26098") @Directive44(argument97 : ["stringValue26097"]) { + field25503: Scalar2 + field25504: [Object5369] + field25511: [Object5370] + field25516: [Object5371] + field25519: Scalar2 + field25520: Boolean +} + +type Object5369 @Directive21(argument61 : "stringValue26100") @Directive44(argument97 : ["stringValue26099"]) { + field25505: String + field25506: String + field25507: Float + field25508: Int + field25509: Int + field25510: Int +} + +type Object537 @Directive20(argument58 : "stringValue2763", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2762") @Directive30(argument80 : true) @Directive34 @Directive44(argument97 : ["stringValue2764", "stringValue2765"]) { + field2997: String @Directive30(argument80 : true) @Directive41 + field2998: [String] @Directive30(argument80 : true) @Directive41 + field2999: String @Directive30(argument80 : true) @Directive41 + field3000: Scalar4 @Directive30(argument80 : true) @Directive41 + field3001: String @Directive30(argument80 : true) @Directive41 +} + +type Object5370 @Directive21(argument61 : "stringValue26102") @Directive44(argument97 : ["stringValue26101"]) { + field25512: String + field25513: String + field25514: Int + field25515: Int +} + +type Object5371 @Directive21(argument61 : "stringValue26104") @Directive44(argument97 : ["stringValue26103"]) { + field25517: Scalar2 + field25518: Scalar2 +} + +type Object5372 @Directive21(argument61 : "stringValue26110") @Directive44(argument97 : ["stringValue26109"]) { + field25522: Object5373 +} + +type Object5373 @Directive21(argument61 : "stringValue26112") @Directive44(argument97 : ["stringValue26111"]) { + field25523: Scalar2 + field25524: String + field25525: String + field25526: Scalar2 + field25527: Scalar2 + field25528: Boolean + field25529: Boolean + field25530: String + field25531: String + field25532: Scalar2 + field25533: Boolean + field25534: Scalar2 + field25535: String + field25536: String + field25537: Boolean + field25538: Scalar2 + field25539: Scalar2 + field25540: Boolean +} + +type Object5374 @Directive21(argument61 : "stringValue26120") @Directive44(argument97 : ["stringValue26119"]) { + field25542: Scalar2 + field25543: Float + field25544: String + field25545: [Object5375] + field25550: Boolean + field25551: Boolean +} + +type Object5375 @Directive21(argument61 : "stringValue26122") @Directive44(argument97 : ["stringValue26121"]) { + field25546: Scalar2 + field25547: Scalar2 + field25548: Scalar2 + field25549: String +} + +type Object5376 @Directive21(argument61 : "stringValue26128") @Directive44(argument97 : ["stringValue26127"]) { + field25553: [Object3057] + field25554: [Object5377] +} + +type Object5377 @Directive21(argument61 : "stringValue26130") @Directive44(argument97 : ["stringValue26129"]) { + field25555: String + field25556: String +} + +type Object5378 @Directive21(argument61 : "stringValue26136") @Directive44(argument97 : ["stringValue26135"]) { + field25558: Object5318! +} + +type Object5379 @Directive21(argument61 : "stringValue26149") @Directive44(argument97 : ["stringValue26148"]) { + field25560: Object3057 + field25561: Object3137 +} + +type Object538 @Directive20(argument58 : "stringValue2767", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2766") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2768", "stringValue2769"]) { + field3005: String + field3006: Object480 + field3007: Object480 + field3008: Object480 + field3009: Object480 + field3010: Object480 + field3011: Object480 +} + +type Object5380 @Directive21(argument61 : "stringValue26157") @Directive44(argument97 : ["stringValue26156"]) { + field25563: [Object3138] + field25564: Object3140 +} + +type Object5381 @Directive21(argument61 : "stringValue26165") @Directive44(argument97 : ["stringValue26164"]) { + field25566: Object5382 +} + +type Object5382 @Directive21(argument61 : "stringValue26167") @Directive44(argument97 : ["stringValue26166"]) { + field25567: [Object5383] + field25595: [Object5383] + field25596: [Object5383] + field25597: Object5386 +} + +type Object5383 @Directive21(argument61 : "stringValue26169") @Directive44(argument97 : ["stringValue26168"]) { + field25568: String! + field25569: String! + field25570: String + field25571: Boolean + field25572: Boolean + field25573: String + field25574: String + field25575: String + field25576: Object5384 + field25581: [Object5385] + field25594: Boolean +} + +type Object5384 @Directive21(argument61 : "stringValue26171") @Directive44(argument97 : ["stringValue26170"]) { + field25577: String + field25578: String + field25579: String + field25580: String +} + +type Object5385 @Directive21(argument61 : "stringValue26173") @Directive44(argument97 : ["stringValue26172"]) { + field25582: String! + field25583: String! + field25584: String! + field25585: String + field25586: [String] + field25587: String + field25588: String + field25589: Boolean + field25590: Boolean + field25591: String + field25592: String + field25593: String +} + +type Object5386 @Directive21(argument61 : "stringValue26175") @Directive44(argument97 : ["stringValue26174"]) { + field25598: String + field25599: String + field25600: String + field25601: Object5387 +} + +type Object5387 @Directive21(argument61 : "stringValue26177") @Directive44(argument97 : ["stringValue26176"]) { + field25602: String + field25603: String + field25604: String +} + +type Object5388 @Directive21(argument61 : "stringValue26184") @Directive44(argument97 : ["stringValue26183"]) { + field25606: [Object3115] + field25607: Object3057 +} + +type Object5389 @Directive44(argument97 : ["stringValue26185"]) { + field25609(argument1266: InputObject1026!): Object5390 @Directive35(argument89 : "stringValue26187", argument90 : true, argument91 : "stringValue26186", argument92 : 280, argument93 : "stringValue26188", argument94 : false) + field25614(argument1267: InputObject1027!): Object5391 @Directive35(argument89 : "stringValue26193", argument90 : true, argument91 : "stringValue26192", argument92 : 281, argument93 : "stringValue26194", argument94 : false) + field25616(argument1268: InputObject1028!): Object5392 @Directive35(argument89 : "stringValue26199", argument90 : false, argument91 : "stringValue26198", argument92 : 282, argument93 : "stringValue26200", argument94 : false) + field26439(argument1269: InputObject1028!): Object5392 @Directive35(argument89 : "stringValue26555", argument90 : false, argument91 : "stringValue26554", argument92 : 283, argument93 : "stringValue26556", argument94 : false) + field26440(argument1270: InputObject1028!): Object5392 @Directive35(argument89 : "stringValue26558", argument90 : false, argument91 : "stringValue26557", argument92 : 284, argument93 : "stringValue26559", argument94 : false) +} + +type Object539 @Directive20(argument58 : "stringValue2771", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2770") @Directive31 @Directive44(argument97 : ["stringValue2772", "stringValue2773"]) { + field3015: [Object540]! + field3027: Object541! + field3028: String! + field3029: String + field3030: String + field3031: String + field3032: Object521 + field3033: Object542 + field3052: Object545 + field3053: [Object546] +} + +type Object5390 @Directive21(argument61 : "stringValue26191") @Directive44(argument97 : ["stringValue26190"]) { + field25610: Scalar2 @deprecated + field25611: Scalar2 + field25612: String + field25613: String +} + +type Object5391 @Directive21(argument61 : "stringValue26197") @Directive44(argument97 : ["stringValue26196"]) { + field25615: Scalar2 +} + +type Object5392 @Directive21(argument61 : "stringValue26205") @Directive44(argument97 : ["stringValue26204"]) { + field25617: String + field25618: Object5393 + field25674: String + field25675: Object5401 + field25678: Object5402 + field25684: String + field25685: String + field25686: Object5403 + field25701: Object5405 + field25715: Object5408 + field25723: Object5408 + field25724: String + field25725: Object5409 + field25847: Object5421 + field25853: Boolean + field25854: [Object5422] + field25857: Object5423 + field25985: String + field25986: String + field25987: Object5443 + field26009: Object5445 + field26020: Object5446 + field26088: String + field26089: Scalar1 + field26090: Object5428 + field26091: Object5456 + field26097: Scalar2 + field26098: [Object5457] @deprecated + field26110: Object5459 + field26128: String + field26129: Object5462 + field26137: Object5463 + field26142: Enum1366 + field26143: Object5466 + field26421: String + field26422: Scalar1 @deprecated + field26423: [Object5445] + field26424: String + field26425: String + field26426: String + field26427: Boolean + field26428: String + field26429: String + field26430: Object5547 + field26435: Object5549 +} + +type Object5393 @Directive21(argument61 : "stringValue26207") @Directive44(argument97 : ["stringValue26206"]) { + field25619: Scalar2 + field25620: Boolean + field25621: Boolean + field25622: Object5394 + field25632: String + field25633: Boolean + field25634: Boolean + field25635: Boolean + field25636: [Object5395] + field25639: Boolean + field25640: Boolean + field25641: Object5396 + field25645: Boolean + field25646: String + field25647: Boolean + field25648: String + field25649: Boolean + field25650: Boolean + field25651: Object5397 +} + +type Object5394 @Directive21(argument61 : "stringValue26209") @Directive44(argument97 : ["stringValue26208"]) { + field25623: Boolean + field25624: Boolean + field25625: String + field25626: String + field25627: [String] + field25628: String + field25629: Boolean + field25630: Scalar2 + field25631: String +} + +type Object5395 @Directive21(argument61 : "stringValue26211") @Directive44(argument97 : ["stringValue26210"]) { + field25637: String + field25638: String +} + +type Object5396 @Directive21(argument61 : "stringValue26213") @Directive44(argument97 : ["stringValue26212"]) { + field25642: Scalar2 + field25643: Scalar2 + field25644: Scalar2 +} + +type Object5397 @Directive21(argument61 : "stringValue26215") @Directive44(argument97 : ["stringValue26214"]) { + field25652: String + field25653: String @deprecated + field25654: String @deprecated + field25655: String @deprecated + field25656: Object5398 + field25661: Boolean + field25662: Boolean + field25663: Object5399 + field25667: [Object5400] + field25672: Boolean + field25673: String +} + +type Object5398 @Directive21(argument61 : "stringValue26217") @Directive44(argument97 : ["stringValue26216"]) { + field25657: String + field25658: Enum1359 + field25659: String + field25660: String +} + +type Object5399 @Directive21(argument61 : "stringValue26220") @Directive44(argument97 : ["stringValue26219"]) { + field25664: String + field25665: String + field25666: String +} + +type Object54 @Directive21(argument61 : "stringValue261") @Directive44(argument97 : ["stringValue260"]) { + field304: Object55 + field308: [String] + field309: String + field310: [Object56] +} + +type Object540 @Directive20(argument58 : "stringValue2775", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2774") @Directive31 @Directive44(argument97 : ["stringValue2776", "stringValue2777"]) { + field3016: String! + field3017: Object541! + field3023: String + field3024: String + field3025: String + field3026: String +} + +type Object5400 @Directive21(argument61 : "stringValue26222") @Directive44(argument97 : ["stringValue26221"]) { + field25668: String + field25669: String + field25670: String + field25671: String +} + +type Object5401 @Directive21(argument61 : "stringValue26224") @Directive44(argument97 : ["stringValue26223"]) { + field25676: Scalar2 + field25677: String +} + +type Object5402 @Directive21(argument61 : "stringValue26226") @Directive44(argument97 : ["stringValue26225"]) { + field25679: String + field25680: String + field25681: String + field25682: String + field25683: String +} + +type Object5403 @Directive21(argument61 : "stringValue26228") @Directive44(argument97 : ["stringValue26227"]) { + field25687: Scalar2! + field25688: String + field25689: Boolean + field25690: String + field25691: Boolean + field25692: String + field25693: String + field25694: Object5404 + field25697: Boolean + field25698: String + field25699: String + field25700: Int +} + +type Object5404 @Directive21(argument61 : "stringValue26230") @Directive44(argument97 : ["stringValue26229"]) { + field25695: Boolean + field25696: Scalar2 +} + +type Object5405 @Directive21(argument61 : "stringValue26232") @Directive44(argument97 : ["stringValue26231"]) { + field25702: [Object5406] + field25705: [Object5407] + field25714: [Object5407] +} + +type Object5406 @Directive21(argument61 : "stringValue26234") @Directive44(argument97 : ["stringValue26233"]) { + field25703: String + field25704: String +} + +type Object5407 @Directive21(argument61 : "stringValue26236") @Directive44(argument97 : ["stringValue26235"]) { + field25706: Scalar2 + field25707: String + field25708: String + field25709: String + field25710: String + field25711: String + field25712: String + field25713: String +} + +type Object5408 @Directive21(argument61 : "stringValue26238") @Directive44(argument97 : ["stringValue26237"]) { + field25716: String + field25717: Scalar2! + field25718: String + field25719: String + field25720: Boolean + field25721: String + field25722: Int +} + +type Object5409 @Directive21(argument61 : "stringValue26240") @Directive44(argument97 : ["stringValue26239"]) { + field25726: String + field25727: [String] @deprecated + field25728: Boolean + field25729: [String] @deprecated + field25730: [Object5410] + field25738: Object5412 + field25761: String + field25762: String + field25763: String + field25764: [Object5414] + field25775: String + field25776: [String] @deprecated + field25777: [String] @deprecated + field25778: String + field25779: String + field25780: String + field25781: [Object5414] + field25782: String + field25783: String + field25784: Int + field25785: Scalar2! + field25786: String + field25787: String + field25788: Int + field25789: String + field25790: Float + field25791: Int + field25792: Int + field25793: Float + field25794: Int + field25795: [Int] + field25796: String + field25797: String + field25798: String + field25799: String + field25800: String + field25801: String + field25802: String + field25803: String + field25804: Int + field25805: Int + field25806: Object5415 + field25810: Scalar2 + field25811: Scalar2 + field25812: String + field25813: [Object5416] + field25821: [Object5414] + field25822: [Object5417] + field25825: Enum1360 + field25826: Object5418 + field25834: Object5419 + field25841: Object5420 +} + +type Object541 @Directive20(argument58 : "stringValue2779", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2778") @Directive31 @Directive44(argument97 : ["stringValue2780", "stringValue2781"]) { + field3018: Float! + field3019: Float + field3020: String! + field3021: Boolean! + field3022: String! +} + +type Object5410 @Directive21(argument61 : "stringValue26242") @Directive44(argument97 : ["stringValue26241"]) { + field25731: String + field25732: Scalar2 + field25733: Boolean + field25734: String + field25735: Object5411 + field25737: Object5411 +} + +type Object5411 @Directive21(argument61 : "stringValue26244") @Directive44(argument97 : ["stringValue26243"]) { + field25736: String +} + +type Object5412 @Directive21(argument61 : "stringValue26246") @Directive44(argument97 : ["stringValue26245"]) { + field25739: Scalar2 + field25740: [Object5413] + field25749: [Object5413] + field25750: [Object5413] + field25751: [Object5413] + field25752: [Object5413] + field25753: [Object5413] + field25754: [Object5413] + field25755: [Object5413] + field25756: Boolean + field25757: Boolean + field25758: Boolean + field25759: [String] + field25760: Boolean +} + +type Object5413 @Directive21(argument61 : "stringValue26248") @Directive44(argument97 : ["stringValue26247"]) { + field25741: String + field25742: String + field25743: String + field25744: String + field25745: String + field25746: String + field25747: Int + field25748: String +} + +type Object5414 @Directive21(argument61 : "stringValue26250") @Directive44(argument97 : ["stringValue26249"]) { + field25765: String + field25766: Boolean + field25767: String + field25768: String + field25769: String + field25770: String + field25771: String + field25772: String + field25773: String + field25774: String +} + +type Object5415 @Directive21(argument61 : "stringValue26252") @Directive44(argument97 : ["stringValue26251"]) { + field25807: String + field25808: String + field25809: String +} + +type Object5416 @Directive21(argument61 : "stringValue26254") @Directive44(argument97 : ["stringValue26253"]) { + field25814: String + field25815: String + field25816: String + field25817: String + field25818: String + field25819: String + field25820: Int +} + +type Object5417 @Directive21(argument61 : "stringValue26256") @Directive44(argument97 : ["stringValue26255"]) { + field25823: String + field25824: String +} + +type Object5418 @Directive21(argument61 : "stringValue26259") @Directive44(argument97 : ["stringValue26258"]) { + field25827: Scalar2 + field25828: String + field25829: String + field25830: String + field25831: String + field25832: String + field25833: String +} + +type Object5419 @Directive21(argument61 : "stringValue26261") @Directive44(argument97 : ["stringValue26260"]) { + field25835: String + field25836: [Object5417] + field25837: String + field25838: String + field25839: String + field25840: String +} + +type Object542 @Directive20(argument58 : "stringValue2784", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2782") @Directive42(argument96 : ["stringValue2783"]) @Directive44(argument97 : ["stringValue2785", "stringValue2786"]) { + field3034: Object543 @Directive41 + field3042: [Object545] @Directive41 +} + +type Object5420 @Directive21(argument61 : "stringValue26263") @Directive44(argument97 : ["stringValue26262"]) { + field25842: [Object5416] + field25843: String + field25844: [Object5414] + field25845: String + field25846: String +} + +type Object5421 @Directive21(argument61 : "stringValue26265") @Directive44(argument97 : ["stringValue26264"]) { + field25848: Boolean + field25849: String + field25850: String + field25851: String + field25852: Enum1361 +} + +type Object5422 @Directive21(argument61 : "stringValue26268") @Directive44(argument97 : ["stringValue26267"]) { + field25855: String + field25856: [String] +} + +type Object5423 @Directive21(argument61 : "stringValue26270") @Directive44(argument97 : ["stringValue26269"]) { + field25858: Object5424 + field25879: Int + field25880: Scalar3 + field25881: Scalar3 + field25882: String! + field25883: String + field25884: Object5428 + field25921: Object5436 + field25931: [Object5438] + field25945: Boolean + field25946: Object5440 + field25951: Boolean + field25952: Scalar2 + field25953: Boolean + field25954: Boolean + field25955: Boolean + field25956: Boolean + field25957: Boolean + field25958: Scalar2 + field25959: String + field25960: Int + field25961: Int + field25962: Object5437 + field25963: Scalar2 + field25964: Boolean + field25965: Boolean + field25966: Boolean + field25967: String + field25968: Object5396 + field25969: Boolean + field25970: Scalar2 + field25971: Scalar2 + field25972: Boolean + field25973: Boolean + field25974: [Object5441] +} + +type Object5424 @Directive21(argument61 : "stringValue26272") @Directive44(argument97 : ["stringValue26271"]) { + field25859: [Object5425] + field25863: [Object5425] + field25864: Object5426 + field25867: Object5426 + field25868: String + field25869: Boolean + field25870: Boolean + field25871: Int + field25872: Int + field25873: Int + field25874: Boolean + field25875: Boolean + field25876: Object5427 +} + +type Object5425 @Directive21(argument61 : "stringValue26274") @Directive44(argument97 : ["stringValue26273"]) { + field25860: String + field25861: String + field25862: Boolean +} + +type Object5426 @Directive21(argument61 : "stringValue26276") @Directive44(argument97 : ["stringValue26275"]) { + field25865: String + field25866: String +} + +type Object5427 @Directive21(argument61 : "stringValue26278") @Directive44(argument97 : ["stringValue26277"]) { + field25877: Int! + field25878: Int! +} + +type Object5428 @Directive21(argument61 : "stringValue26280") @Directive44(argument97 : ["stringValue26279"]) { + field25885: [Object5429] @deprecated + field25888: Scalar1 + field25889: [String!] + field25890: String + field25891: [Object5430!] + field25894: String + field25895: [[String!]!] @deprecated + field25896: [Object5431!] + field25898: [Object5432] +} + +type Object5429 @Directive21(argument61 : "stringValue26282") @Directive44(argument97 : ["stringValue26281"]) { + field25886: String + field25887: String +} + +type Object543 @Directive20(argument58 : "stringValue2789", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2787") @Directive42(argument96 : ["stringValue2788"]) @Directive44(argument97 : ["stringValue2790", "stringValue2791"]) { + field3035: String! @Directive41 + field3036: String @Directive41 + field3037: Object544! @Directive41 +} + +type Object5430 @Directive21(argument61 : "stringValue26284") @Directive44(argument97 : ["stringValue26283"]) { + field25892: String + field25893: String +} + +type Object5431 @Directive21(argument61 : "stringValue26286") @Directive44(argument97 : ["stringValue26285"]) { + field25897: [String!] +} + +type Object5432 @Directive21(argument61 : "stringValue26288") @Directive44(argument97 : ["stringValue26287"]) { + field25899: String + field25900: Object5433 +} + +type Object5433 @Directive21(argument61 : "stringValue26290") @Directive44(argument97 : ["stringValue26289"]) { + field25901: Boolean + field25902: [String] + field25903: [String] + field25904: String + field25905: Object5434 + field25912: String + field25913: String + field25914: String + field25915: [Object5435] +} + +type Object5434 @Directive21(argument61 : "stringValue26292") @Directive44(argument97 : ["stringValue26291"]) { + field25906: String + field25907: String + field25908: String + field25909: String + field25910: String + field25911: String +} + +type Object5435 @Directive21(argument61 : "stringValue26294") @Directive44(argument97 : ["stringValue26293"]) { + field25916: String + field25917: String + field25918: String + field25919: String + field25920: [Object5435] +} + +type Object5436 @Directive21(argument61 : "stringValue26296") @Directive44(argument97 : ["stringValue26295"]) { + field25922: Object5437 + field25928: Object5437 + field25929: String + field25930: Object5437 +} + +type Object5437 @Directive21(argument61 : "stringValue26298") @Directive44(argument97 : ["stringValue26297"]) { + field25923: String + field25924: String + field25925: String + field25926: Boolean + field25927: String +} + +type Object5438 @Directive21(argument61 : "stringValue26300") @Directive44(argument97 : ["stringValue26299"]) { + field25932: String + field25933: Scalar2 + field25934: String + field25935: Object5439 +} + +type Object5439 @Directive21(argument61 : "stringValue26302") @Directive44(argument97 : ["stringValue26301"]) { + field25936: String + field25937: Boolean + field25938: Scalar2 + field25939: String + field25940: String + field25941: String + field25942: String + field25943: Boolean + field25944: Boolean +} + +type Object544 @Directive20(argument58 : "stringValue2794", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2792") @Directive42(argument96 : ["stringValue2793"]) @Directive44(argument97 : ["stringValue2795", "stringValue2796"]) { + field3038: Enum180! @Directive41 + field3039: String! @Directive41 + field3040: String! @Directive41 + field3041: String @Directive41 +} + +type Object5440 @Directive21(argument61 : "stringValue26304") @Directive44(argument97 : ["stringValue26303"]) { + field25947: String + field25948: Object5437 + field25949: Int + field25950: Int +} + +type Object5441 @Directive21(argument61 : "stringValue26306") @Directive44(argument97 : ["stringValue26305"]) { + field25975: String + field25976: String + field25977: String + field25978: String + field25979: Enum1362 + field25980: [Object5442] +} + +type Object5442 @Directive21(argument61 : "stringValue26309") @Directive44(argument97 : ["stringValue26308"]) { + field25981: String + field25982: String + field25983: String + field25984: String +} + +type Object5443 @Directive21(argument61 : "stringValue26311") @Directive44(argument97 : ["stringValue26310"]) { + field25988: Scalar2 + field25989: Object5437 @deprecated + field25990: Object5444 + field25994: String + field25995: String + field25996: String + field25997: Scalar4 + field25998: String + field25999: String + field26000: String @deprecated + field26001: String + field26002: String + field26003: String + field26004: String + field26005: String + field26006: String + field26007: String + field26008: String +} + +type Object5444 @Directive21(argument61 : "stringValue26313") @Directive44(argument97 : ["stringValue26312"]) { + field25991: Float! + field25992: String! + field25993: Scalar2 +} + +type Object5445 @Directive21(argument61 : "stringValue26315") @Directive44(argument97 : ["stringValue26314"]) { + field26010: Boolean + field26011: String + field26012: String + field26013: String + field26014: String + field26015: String + field26016: String + field26017: String + field26018: String + field26019: Enum580 +} + +type Object5446 @Directive21(argument61 : "stringValue26317") @Directive44(argument97 : ["stringValue26316"]) { + field26021: Object5447 + field26030: Object5448 + field26041: Object5449 + field26063: [Object5452] + field26075: Object5453 + field26082: Int + field26083: Object5455 +} + +type Object5447 @Directive21(argument61 : "stringValue26319") @Directive44(argument97 : ["stringValue26318"]) { + field26022: String + field26023: String + field26024: String + field26025: String + field26026: String + field26027: String + field26028: [Object5400] + field26029: String +} + +type Object5448 @Directive21(argument61 : "stringValue26321") @Directive44(argument97 : ["stringValue26320"]) { + field26031: String @deprecated + field26032: String + field26033: String + field26034: String + field26035: String + field26036: Boolean + field26037: String + field26038: String + field26039: String + field26040: String +} + +type Object5449 @Directive21(argument61 : "stringValue26323") @Directive44(argument97 : ["stringValue26322"]) { + field26042: String + field26043: [String] + field26044: String + field26045: [Object5450] + field26059: String + field26060: String + field26061: String + field26062: [Enum1363] +} + +type Object545 @Directive20(argument58 : "stringValue2804", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue2801") @Directive42(argument96 : ["stringValue2802", "stringValue2803"]) @Directive44(argument97 : ["stringValue2805", "stringValue2806"]) @Directive45(argument98 : ["stringValue2807"]) { + field3043: Enum180! @Directive41 + field3044: Object523! @Directive41 + field3045: String @Directive41 + field3046: String @Directive41 + field3047: String @Directive41 + field3048: [Object545]! @Directive41 + field3049: String @Directive41 + field3050: String @Directive41 + field3051: Enum181 @deprecated +} + +type Object5450 @Directive21(argument61 : "stringValue26325") @Directive44(argument97 : ["stringValue26324"]) { + field26046: [String] + field26047: [String] + field26048: String + field26049: String + field26050: Float + field26051: Float + field26052: Boolean + field26053: Boolean + field26054: Scalar4 + field26055: [Object5451] + field26058: [Object5451] +} + +type Object5451 @Directive21(argument61 : "stringValue26327") @Directive44(argument97 : ["stringValue26326"]) { + field26056: String + field26057: String +} + +type Object5452 @Directive21(argument61 : "stringValue26330") @Directive44(argument97 : ["stringValue26329"]) { + field26064: Int + field26065: String + field26066: String + field26067: [String] + field26068: [Object5450] + field26069: String + field26070: String + field26071: String + field26072: String + field26073: Enum1364 + field26074: Float +} + +type Object5453 @Directive21(argument61 : "stringValue26333") @Directive44(argument97 : ["stringValue26332"]) { + field26076: Object5454 + field26079: Object5454 + field26080: Object5454 + field26081: Float +} + +type Object5454 @Directive21(argument61 : "stringValue26335") @Directive44(argument97 : ["stringValue26334"]) { + field26077: Object5444! + field26078: String +} + +type Object5455 @Directive21(argument61 : "stringValue26337") @Directive44(argument97 : ["stringValue26336"]) { + field26084: String + field26085: String + field26086: String + field26087: String +} + +type Object5456 @Directive21(argument61 : "stringValue26339") @Directive44(argument97 : ["stringValue26338"]) { + field26092: Boolean + field26093: String + field26094: Boolean + field26095: Boolean + field26096: String +} + +type Object5457 @Directive21(argument61 : "stringValue26341") @Directive44(argument97 : ["stringValue26340"]) { + field26099: Scalar2! + field26100: Scalar2! + field26101: String! + field26102: Enum1365! + field26103: Object5458! +} + +type Object5458 @Directive21(argument61 : "stringValue26344") @Directive44(argument97 : ["stringValue26343"]) { + field26104: String + field26105: String + field26106: String + field26107: String + field26108: String + field26109: String +} + +type Object5459 @Directive21(argument61 : "stringValue26346") @Directive44(argument97 : ["stringValue26345"]) { + field26111: Object5460 + field26119: [Object5461] +} + +type Object546 @Directive20(argument58 : "stringValue2812", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2811") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2813", "stringValue2814"]) { + field3054: Enum182 + field3055: [Object547] + field3058: Boolean + field3059: Boolean + field3060: Boolean + field3061: Boolean +} + +type Object5460 @Directive21(argument61 : "stringValue26348") @Directive44(argument97 : ["stringValue26347"]) { + field26112: String + field26113: String + field26114: String + field26115: Boolean + field26116: String + field26117: String + field26118: Boolean +} + +type Object5461 @Directive21(argument61 : "stringValue26350") @Directive44(argument97 : ["stringValue26349"]) { + field26120: String + field26121: String + field26122: String + field26123: String + field26124: String + field26125: String + field26126: Boolean + field26127: Boolean +} + +type Object5462 @Directive21(argument61 : "stringValue26352") @Directive44(argument97 : ["stringValue26351"]) { + field26130: String + field26131: String + field26132: String + field26133: String + field26134: String + field26135: String + field26136: [Object5400] +} + +type Object5463 @Directive21(argument61 : "stringValue26354") @Directive44(argument97 : ["stringValue26353"]) { + field26138: Object5464 +} + +type Object5464 @Directive21(argument61 : "stringValue26356") @Directive44(argument97 : ["stringValue26355"]) { + field26139: Object5465 +} + +type Object5465 @Directive21(argument61 : "stringValue26358") @Directive44(argument97 : ["stringValue26357"]) { + field26140: Boolean + field26141: Boolean +} + +type Object5466 @Directive21(argument61 : "stringValue26361") @Directive44(argument97 : ["stringValue26360"]) { + field26144: Object5467 + field26197: String + field26198: Object5502 + field26420: Scalar1 +} + +type Object5467 @Directive21(argument61 : "stringValue26363") @Directive44(argument97 : ["stringValue26362"]) { + field26145: Enum1367! + field26146: [Union211] + field26176: [Union212] + field26194: [Object5427] + field26195: [String] + field26196: Scalar1 +} + +type Object5468 @Directive21(argument61 : "stringValue26367") @Directive44(argument97 : ["stringValue26366"]) { + field26147: Int! + field26148: String! +} + +type Object5469 @Directive21(argument61 : "stringValue26369") @Directive44(argument97 : ["stringValue26368"]) { + field26149: Boolean! +} + +type Object547 @Directive20(argument58 : "stringValue2820", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2819") @Directive31 @Directive44(argument97 : ["stringValue2821", "stringValue2822"]) { + field3056: String! + field3057: String! +} + +type Object5470 @Directive21(argument61 : "stringValue26371") @Directive44(argument97 : ["stringValue26370"]) { + field26150: Scalar3! + field26151: Scalar3! + field26152: Int + field26153: Boolean + field26154: Boolean + field26155: Int +} + +type Object5471 @Directive21(argument61 : "stringValue26373") @Directive44(argument97 : ["stringValue26372"]) { + field26156: Int! +} + +type Object5472 @Directive21(argument61 : "stringValue26375") @Directive44(argument97 : ["stringValue26374"]) { + field26157: Int! +} + +type Object5473 @Directive21(argument61 : "stringValue26377") @Directive44(argument97 : ["stringValue26376"]) { + field26158: [Enum1368]! +} + +type Object5474 @Directive21(argument61 : "stringValue26380") @Directive44(argument97 : ["stringValue26379"]) { + field26159: [[String]]! +} + +type Object5475 @Directive21(argument61 : "stringValue26382") @Directive44(argument97 : ["stringValue26381"]) { + field26160: Boolean! +} + +type Object5476 @Directive21(argument61 : "stringValue26384") @Directive44(argument97 : ["stringValue26383"]) { + field26161: Enum1369! + field26162: Int! +} + +type Object5477 @Directive21(argument61 : "stringValue26387") @Directive44(argument97 : ["stringValue26386"]) { + field26163: String +} + +type Object5478 @Directive21(argument61 : "stringValue26389") @Directive44(argument97 : ["stringValue26388"]) { + field26164: Int! +} + +type Object5479 @Directive21(argument61 : "stringValue26391") @Directive44(argument97 : ["stringValue26390"]) { + field26165: Int! +} + +type Object548 @Directive20(argument58 : "stringValue2825", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2823") @Directive34 @Directive42(argument96 : ["stringValue2824"]) @Directive44(argument97 : ["stringValue2826", "stringValue2827"]) { + field3070: Union94 @Directive41 + field3109: Union94 @Directive41 + field3110: Object558 @Directive41 +} + +type Object5480 @Directive21(argument61 : "stringValue26393") @Directive44(argument97 : ["stringValue26392"]) { + field26166: [Int]! +} + +type Object5481 @Directive21(argument61 : "stringValue26395") @Directive44(argument97 : ["stringValue26394"]) { + field26167: [Scalar3] +} + +type Object5482 @Directive21(argument61 : "stringValue26397") @Directive44(argument97 : ["stringValue26396"]) { + field26168: Enum1370! +} + +type Object5483 @Directive21(argument61 : "stringValue26400") @Directive44(argument97 : ["stringValue26399"]) { + field26169: Int! +} + +type Object5484 @Directive21(argument61 : "stringValue26402") @Directive44(argument97 : ["stringValue26401"]) { + field26170: [Scalar2]! +} + +type Object5485 @Directive21(argument61 : "stringValue26404") @Directive44(argument97 : ["stringValue26403"]) { + field26171: [Scalar2]! +} + +type Object5486 @Directive21(argument61 : "stringValue26406") @Directive44(argument97 : ["stringValue26405"]) { + field26172: String! +} + +type Object5487 @Directive21(argument61 : "stringValue26408") @Directive44(argument97 : ["stringValue26407"]) { + field26173: [String] +} + +type Object5488 @Directive21(argument61 : "stringValue26410") @Directive44(argument97 : ["stringValue26409"]) { + field26174: Enum1368! +} + +type Object5489 @Directive21(argument61 : "stringValue26412") @Directive44(argument97 : ["stringValue26411"]) { + field26175: Int! +} + +type Object549 @Directive20(argument58 : "stringValue2833", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2831") @Directive42(argument96 : ["stringValue2832"]) @Directive44(argument97 : ["stringValue2834", "stringValue2835"]) { + field3071: String! @Directive41 + field3072: String @Directive41 + field3073: Enum183 @Directive41 +} + +type Object5490 @Directive21(argument61 : "stringValue26415") @Directive44(argument97 : ["stringValue26414"]) { + field26177: Boolean + field26178: Boolean +} + +type Object5491 @Directive21(argument61 : "stringValue26417") @Directive44(argument97 : ["stringValue26416"]) { + field26179: Boolean! + field26180: Boolean! +} + +type Object5492 @Directive21(argument61 : "stringValue26419") @Directive44(argument97 : ["stringValue26418"]) { + field26181: Int + field26182: Int +} + +type Object5493 @Directive21(argument61 : "stringValue26421") @Directive44(argument97 : ["stringValue26420"]) { + field26183: Object5494! +} + +type Object5494 @Directive21(argument61 : "stringValue26423") @Directive44(argument97 : ["stringValue26422"]) { + field26184: Scalar3 + field26185: Scalar3 +} + +type Object5495 @Directive21(argument61 : "stringValue26425") @Directive44(argument97 : ["stringValue26424"]) { + field26186: Enum1371 +} + +type Object5496 @Directive21(argument61 : "stringValue26428") @Directive44(argument97 : ["stringValue26427"]) { + field26187: Enum1371 +} + +type Object5497 @Directive21(argument61 : "stringValue26430") @Directive44(argument97 : ["stringValue26429"]) { + field26188: Enum1371 +} + +type Object5498 @Directive21(argument61 : "stringValue26432") @Directive44(argument97 : ["stringValue26431"]) { + field26189: Enum1371 +} + +type Object5499 @Directive21(argument61 : "stringValue26434") @Directive44(argument97 : ["stringValue26433"]) { + field26190: Int +} + +type Object55 @Directive21(argument61 : "stringValue263") @Directive44(argument97 : ["stringValue262"]) { + field305: String + field306: String + field307: String +} + +type Object550 @Directive20(argument58 : "stringValue2841", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2839") @Directive42(argument96 : ["stringValue2840"]) @Directive44(argument97 : ["stringValue2842", "stringValue2843"]) { + field3074: String! @Directive41 + field3075: String! @Directive41 + field3076: String @Directive41 + field3077: Boolean @Directive41 + field3078: Enum183 @Directive41 +} + +type Object5500 @Directive21(argument61 : "stringValue26436") @Directive44(argument97 : ["stringValue26435"]) { + field26191: Int +} + +type Object5501 @Directive21(argument61 : "stringValue26438") @Directive44(argument97 : ["stringValue26437"]) { + field26192: Int + field26193: Boolean +} + +type Object5502 @Directive21(argument61 : "stringValue26440") @Directive44(argument97 : ["stringValue26439"]) { + field26199: Scalar2! + field26200: Object5503 + field26212: Object5504 + field26217: Object5506 + field26221: Object5507 + field26237: Object5508 + field26254: [Object5511] + field26316: Object5516 + field26329: Object5518 + field26333: Object5519 @deprecated + field26341: Scalar1 + field26342: Object5520 + field26346: Object5521 + field26348: Object5522 + field26355: [Object5524] @deprecated + field26364: Object5525 + field26366: Object5526 + field26369: [Object5527] + field26396: Object5539 + field26399: Object5540 + field26402: Object5541 + field26416: Object5545 + field26418: Object5546 +} + +type Object5503 @Directive21(argument61 : "stringValue26442") @Directive44(argument97 : ["stringValue26441"]) { + field26201: String + field26202: Int + field26203: Object5444 + field26204: Object5444 + field26205: Object5444 + field26206: Object5444 + field26207: Object5444 + field26208: Float + field26209: Float + field26210: Scalar4 + field26211: Object5444 +} + +type Object5504 @Directive21(argument61 : "stringValue26444") @Directive44(argument97 : ["stringValue26443"]) { + field26213: [Object5505] + field26216: Scalar4 +} + +type Object5505 @Directive21(argument61 : "stringValue26446") @Directive44(argument97 : ["stringValue26445"]) { + field26214: Object5444! + field26215: Scalar3! +} + +type Object5506 @Directive21(argument61 : "stringValue26448") @Directive44(argument97 : ["stringValue26447"]) { + field26218: [Object5505] + field26219: [Object5505] + field26220: Scalar4 +} + +type Object5507 @Directive21(argument61 : "stringValue26450") @Directive44(argument97 : ["stringValue26449"]) { + field26222: Object5444 + field26223: Object5444 + field26224: Boolean + field26225: Boolean + field26226: Int + field26227: [Int] + field26228: Scalar4 + field26229: Scalar2 + field26230: Object5444 + field26231: Scalar4 + field26232: Scalar4 + field26233: Int + field26234: Int + field26235: Int + field26236: Scalar4 +} + +type Object5508 @Directive21(argument61 : "stringValue26452") @Directive44(argument97 : ["stringValue26451"]) { + field26238: [Object5444] + field26239: Scalar3 + field26240: Object5509 + field26243: Scalar3 + field26244: Object5510 + field26246: [Scalar3] + field26247: [Scalar3] + field26248: Scalar4 + field26249: Scalar2 + field26250: Scalar4 + field26251: Scalar3 + field26252: Scalar3 + field26253: [Object5444] +} + +type Object5509 @Directive21(argument61 : "stringValue26454") @Directive44(argument97 : ["stringValue26453"]) { + field26241: String + field26242: Int +} + +type Object551 @Directive20(argument58 : "stringValue2846", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2844") @Directive42(argument96 : ["stringValue2845"]) @Directive44(argument97 : ["stringValue2847", "stringValue2848"]) { + field3079: String! @Directive41 + field3080: String! @Directive41 + field3081: String! @Directive41 + field3082: String @Directive41 + field3083: Boolean @Directive41 + field3084: Enum183 @Directive41 +} + +type Object5510 @Directive21(argument61 : "stringValue26456") @Directive44(argument97 : ["stringValue26455"]) { + field26245: [Int] +} + +type Object5511 @Directive21(argument61 : "stringValue26458") @Directive44(argument97 : ["stringValue26457"]) { + field26255: String! + field26256: Enum1372! + field26257: Scalar2 + field26258: Scalar2! + field26259: Scalar3 + field26260: Scalar3 + field26261: Scalar4 + field26262: Float + field26263: Scalar4 + field26264: Scalar2 + field26265: Scalar2 + field26266: Scalar3 + field26267: Float + field26268: String + field26269: Boolean + field26270: Scalar2 + field26271: Scalar2 + field26272: Scalar4 + field26273: Scalar2 + field26274: Scalar2 + field26275: Enum1373 + field26276: [Object5505] + field26277: Object5512 + field26313: Enum1379 + field26314: Object5515 +} + +type Object5512 @Directive21(argument61 : "stringValue26462") @Directive44(argument97 : ["stringValue26461"]) { + field26278: String + field26279: String + field26280: String + field26281: Boolean + field26282: Enum1374 + field26283: Scalar4 + field26284: Scalar4 + field26285: Scalar4 + field26286: Scalar4 + field26287: Float + field26288: Scalar1 + field26289: Scalar2 + field26290: Object5513 + field26299: Scalar2 + field26300: Boolean + field26301: [Object5514] + field26305: Enum1372 + field26306: Enum1378 + field26307: Scalar4 + field26308: Scalar4 + field26309: Scalar4 + field26310: String + field26311: String + field26312: String +} + +type Object5513 @Directive21(argument61 : "stringValue26465") @Directive44(argument97 : ["stringValue26464"]) { + field26291: String! + field26292: String + field26293: String + field26294: Enum1375 + field26295: Boolean + field26296: Scalar2 + field26297: Boolean + field26298: [Object5512] +} + +type Object5514 @Directive21(argument61 : "stringValue26468") @Directive44(argument97 : ["stringValue26467"]) { + field26302: Enum1376! + field26303: [String] + field26304: Enum1377 +} + +type Object5515 @Directive21(argument61 : "stringValue26474") @Directive44(argument97 : ["stringValue26473"]) { + field26315: Scalar1! +} + +type Object5516 @Directive21(argument61 : "stringValue26476") @Directive44(argument97 : ["stringValue26475"]) { + field26317: [Object5517] + field26328: Scalar4 +} + +type Object5517 @Directive21(argument61 : "stringValue26478") @Directive44(argument97 : ["stringValue26477"]) { + field26318: Int + field26319: Int + field26320: Int + field26321: Enum1380! + field26322: Enum1381! + field26323: Float! + field26324: Scalar4 + field26325: Scalar4 + field26326: Scalar2 + field26327: Scalar2 +} + +type Object5518 @Directive21(argument61 : "stringValue26482") @Directive44(argument97 : ["stringValue26481"]) { + field26330: Scalar1 + field26331: Scalar4 + field26332: [Scalar3] +} + +type Object5519 @Directive21(argument61 : "stringValue26484") @Directive44(argument97 : ["stringValue26483"]) { + field26334: Scalar2 + field26335: Float + field26336: Float + field26337: Boolean + field26338: Boolean + field26339: Scalar4 + field26340: String +} + +type Object552 @Directive20(argument58 : "stringValue2851", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2849") @Directive42(argument96 : ["stringValue2850"]) @Directive44(argument97 : ["stringValue2852", "stringValue2853"]) { + field3085: String @Directive41 + field3086: Object10 @Directive41 + field3087: Enum10 @Directive41 + field3088: Enum183 @Directive41 +} + +type Object5520 @Directive21(argument61 : "stringValue26486") @Directive44(argument97 : ["stringValue26485"]) { + field26343: Scalar1 + field26344: Scalar4 + field26345: Scalar1 +} + +type Object5521 @Directive21(argument61 : "stringValue26488") @Directive44(argument97 : ["stringValue26487"]) { + field26347: Scalar1 +} + +type Object5522 @Directive21(argument61 : "stringValue26490") @Directive44(argument97 : ["stringValue26489"]) { + field26349: Float + field26350: [Object5523] +} + +type Object5523 @Directive21(argument61 : "stringValue26492") @Directive44(argument97 : ["stringValue26491"]) { + field26351: Scalar2 + field26352: Scalar2 + field26353: String + field26354: Scalar2 +} + +type Object5524 @Directive21(argument61 : "stringValue26494") @Directive44(argument97 : ["stringValue26493"]) { + field26356: Scalar2 + field26357: String + field26358: Float + field26359: String + field26360: Scalar4 + field26361: Scalar4 + field26362: String + field26363: Scalar4 +} + +type Object5525 @Directive21(argument61 : "stringValue26496") @Directive44(argument97 : ["stringValue26495"]) { + field26365: Enum1382 +} + +type Object5526 @Directive21(argument61 : "stringValue26499") @Directive44(argument97 : ["stringValue26498"]) { + field26367: Object5444 + field26368: Scalar4 +} + +type Object5527 @Directive21(argument61 : "stringValue26501") @Directive44(argument97 : ["stringValue26500"]) { + field26370: Enum1383! + field26371: Enum1384! + field26372: Union213! + field26392: Enum1387! + field26393: Enum1388! + field26394: Boolean! + field26395: Scalar4 +} + +type Object5528 @Directive21(argument61 : "stringValue26506") @Directive44(argument97 : ["stringValue26505"]) { + field26373: [Object5529]! +} + +type Object5529 @Directive21(argument61 : "stringValue26508") @Directive44(argument97 : ["stringValue26507"]) { + field26374: Object5530! + field26376: Scalar2! +} + +type Object553 @Directive20(argument58 : "stringValue2855", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2854") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2856", "stringValue2857"]) { + field3089: String @Directive30(argument80 : true) @Directive41 + field3090: String! @Directive30(argument80 : true) @Directive41 + field3091: String! @Directive30(argument80 : true) @Directive41 + field3092: String @Directive30(argument80 : true) @Directive41 + field3093: Object554 @Directive30(argument80 : true) @Directive41 + field3105: Object557 @Directive30(argument80 : true) @Directive41 +} + +type Object5530 @Directive21(argument61 : "stringValue26510") @Directive44(argument97 : ["stringValue26509"]) { + field26375: Int +} + +type Object5531 @Directive21(argument61 : "stringValue26512") @Directive44(argument97 : ["stringValue26511"]) { + field26377: Int! +} + +type Object5532 @Directive21(argument61 : "stringValue26514") @Directive44(argument97 : ["stringValue26513"]) { + field26378: Float! + field26379: Int +} + +type Object5533 @Directive21(argument61 : "stringValue26516") @Directive44(argument97 : ["stringValue26515"]) { + field26380: [Object5534]! +} + +type Object5534 @Directive21(argument61 : "stringValue26518") @Directive44(argument97 : ["stringValue26517"]) { + field26381: Object5535! + field26385: Object5530! + field26386: Scalar2! +} + +type Object5535 @Directive21(argument61 : "stringValue26520") @Directive44(argument97 : ["stringValue26519"]) { + field26382: Int! + field26383: Int! + field26384: Enum1385! +} + +type Object5536 @Directive21(argument61 : "stringValue26523") @Directive44(argument97 : ["stringValue26522"]) { + field26387: [Object5537]! +} + +type Object5537 @Directive21(argument61 : "stringValue26525") @Directive44(argument97 : ["stringValue26524"]) { + field26388: Object5535! + field26389: Scalar2! +} + +type Object5538 @Directive21(argument61 : "stringValue26527") @Directive44(argument97 : ["stringValue26526"]) { + field26390: Enum1386! + field26391: Scalar2! +} + +type Object5539 @Directive21(argument61 : "stringValue26532") @Directive44(argument97 : ["stringValue26531"]) { + field26397: [Object5527] + field26398: Scalar4 +} + +type Object554 @Directive20(argument58 : "stringValue2859", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2858") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2860", "stringValue2861"]) { + field3094: [Union95] @Directive30(argument80 : true) @Directive41 + field3102: String @Directive30(argument80 : true) @Directive41 + field3103: String @Directive30(argument80 : true) @Directive41 + field3104: String @Directive30(argument80 : true) @Directive41 +} + +type Object5540 @Directive21(argument61 : "stringValue26534") @Directive44(argument97 : ["stringValue26533"]) { + field26400: Object5504 + field26401: Scalar4 +} + +type Object5541 @Directive21(argument61 : "stringValue26536") @Directive44(argument97 : ["stringValue26535"]) { + field26403: Scalar2! + field26404: [Object5542] +} + +type Object5542 @Directive21(argument61 : "stringValue26538") @Directive44(argument97 : ["stringValue26537"]) { + field26405: Scalar2! + field26406: [Object5543] + field26409: Boolean! + field26410: Object5544 + field26415: String @deprecated +} + +type Object5543 @Directive21(argument61 : "stringValue26540") @Directive44(argument97 : ["stringValue26539"]) { + field26407: Object5444! + field26408: Scalar3! +} + +type Object5544 @Directive21(argument61 : "stringValue26542") @Directive44(argument97 : ["stringValue26541"]) { + field26411: Scalar2! + field26412: String + field26413: [Enum1389] + field26414: Scalar2 +} + +type Object5545 @Directive21(argument61 : "stringValue26545") @Directive44(argument97 : ["stringValue26544"]) { + field26417: Scalar1 +} + +type Object5546 @Directive21(argument61 : "stringValue26547") @Directive44(argument97 : ["stringValue26546"]) { + field26419: [Object5505] +} + +type Object5547 @Directive21(argument61 : "stringValue26549") @Directive44(argument97 : ["stringValue26548"]) { + field26431: Object5548 +} + +type Object5548 @Directive21(argument61 : "stringValue26551") @Directive44(argument97 : ["stringValue26550"]) { + field26432: String + field26433: String + field26434: String +} + +type Object5549 @Directive21(argument61 : "stringValue26553") @Directive44(argument97 : ["stringValue26552"]) { + field26436: Int! + field26437: String + field26438: String +} + +type Object555 @Directive20(argument58 : "stringValue2866", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2865") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2867", "stringValue2868"]) { + field3095: String! @Directive30(argument80 : true) @Directive41 + field3096: Boolean! @Directive30(argument80 : true) @Directive41 + field3097: Boolean! @Directive30(argument80 : true) @Directive41 + field3098: String! @Directive30(argument80 : true) @Directive41 +} + +type Object5550 @Directive44(argument97 : ["stringValue26560"]) { + field26442(argument1271: InputObject1029!): Object5551 @Directive35(argument89 : "stringValue26562", argument90 : true, argument91 : "stringValue26561", argument92 : 285, argument93 : "stringValue26563", argument94 : true) + field26458(argument1272: InputObject1030!): Object5553 @Directive35(argument89 : "stringValue26570", argument90 : true, argument91 : "stringValue26569", argument92 : 286, argument93 : "stringValue26571", argument94 : true) + field26579(argument1273: InputObject1032!): Object5561 @Directive35(argument89 : "stringValue26591", argument90 : true, argument91 : "stringValue26590", argument93 : "stringValue26592", argument94 : true) + field26582(argument1274: InputObject1033!): Object5562 @Directive35(argument89 : "stringValue26597", argument90 : true, argument91 : "stringValue26596", argument92 : 287, argument93 : "stringValue26598", argument94 : true) + field26586(argument1275: InputObject1034!): Object5564 @Directive35(argument89 : "stringValue26605", argument90 : true, argument91 : "stringValue26604", argument92 : 288, argument93 : "stringValue26606", argument94 : true) + field26588(argument1276: InputObject1035!): Object5565 @Directive35(argument89 : "stringValue26611", argument90 : true, argument91 : "stringValue26610", argument92 : 289, argument93 : "stringValue26612", argument94 : true) + field26590(argument1277: InputObject1037!): Object5566 @Directive35(argument89 : "stringValue26618", argument90 : true, argument91 : "stringValue26617", argument92 : 290, argument93 : "stringValue26619", argument94 : true) + field26593(argument1278: InputObject1038!): Object5567 @Directive35(argument89 : "stringValue26624", argument90 : true, argument91 : "stringValue26623", argument93 : "stringValue26625", argument94 : true) + field26600(argument1279: InputObject1040!): Object5569 @Directive35(argument89 : "stringValue26634", argument90 : true, argument91 : "stringValue26633", argument93 : "stringValue26635", argument94 : true) + field26619(argument1280: InputObject1041!): Object5574 @Directive35(argument89 : "stringValue26648", argument90 : true, argument91 : "stringValue26647", argument92 : 291, argument93 : "stringValue26649", argument94 : true) + field26626(argument1281: InputObject1043!): Object5576 @Directive35(argument89 : "stringValue26659", argument90 : true, argument91 : "stringValue26658", argument92 : 292, argument93 : "stringValue26660", argument94 : true) +} + +type Object5551 @Directive21(argument61 : "stringValue26566") @Directive44(argument97 : ["stringValue26565"]) { + field26443: [Object5552] +} + +type Object5552 @Directive21(argument61 : "stringValue26568") @Directive44(argument97 : ["stringValue26567"]) { + field26444: Scalar2 + field26445: String + field26446: String + field26447: String + field26448: String + field26449: Scalar4 + field26450: Scalar2 + field26451: Boolean + field26452: Int + field26453: String + field26454: String + field26455: String + field26456: Scalar2 + field26457: String +} + +type Object5553 @Directive21(argument61 : "stringValue26575") @Directive44(argument97 : ["stringValue26574"]) { + field26459: Object5554 +} + +type Object5554 @Directive21(argument61 : "stringValue26577") @Directive44(argument97 : ["stringValue26576"]) { + field26460: [Object5555] + field26463: String + field26464: Boolean + field26465: Int @deprecated + field26466: String + field26467: Int + field26468: Int + field26469: String + field26470: String + field26471: String @deprecated + field26472: String + field26473: String + field26474: String + field26475: String + field26476: String + field26477: String @deprecated + field26478: String + field26479: Boolean + field26480: Boolean + field26481: Float + field26482: Float + field26483: String + field26484: String + field26485: Int + field26486: String + field26487: Int + field26488: Int + field26489: Int + field26490: Int + field26491: String + field26492: Int @deprecated + field26493: Boolean + field26494: String + field26495: String + field26496: String + field26497: Int + field26498: String + field26499: String + field26500: String + field26501: String + field26502: String + field26503: Object5556 + field26516: Boolean + field26517: Scalar2 + field26518: String + field26519: Scalar2 + field26520: Int + field26521: Int + field26522: Int + field26523: String + field26524: Int + field26525: Int + field26526: Object5557 + field26536: [String] + field26537: [Int] + field26538: [Object5555] + field26539: String + field26540: String + field26541: String + field26542: Int + field26543: [Object5558] + field26553: Int + field26554: Int + field26555: String + field26556: [Object5559] + field26560: Float + field26561: Object5560 + field26563: String + field26564: String + field26565: String + field26566: Boolean + field26567: String + field26568: Boolean + field26569: Boolean + field26570: String + field26571: String + field26572: String + field26573: String + field26574: String + field26575: String + field26576: String + field26577: String + field26578: Boolean +} + +type Object5555 @Directive21(argument61 : "stringValue26579") @Directive44(argument97 : ["stringValue26578"]) { + field26461: String + field26462: String +} + +type Object5556 @Directive21(argument61 : "stringValue26581") @Directive44(argument97 : ["stringValue26580"]) { + field26504: String + field26505: String + field26506: Boolean + field26507: Boolean + field26508: Boolean + field26509: Boolean + field26510: [Boolean] + field26511: Scalar2 + field26512: Boolean + field26513: Boolean + field26514: Boolean + field26515: [String] +} + +type Object5557 @Directive21(argument61 : "stringValue26583") @Directive44(argument97 : ["stringValue26582"]) { + field26527: Float @deprecated + field26528: Float @deprecated + field26529: Float @deprecated + field26530: String + field26531: Float + field26532: Float + field26533: Int + field26534: Int + field26535: Int +} + +type Object5558 @Directive21(argument61 : "stringValue26585") @Directive44(argument97 : ["stringValue26584"]) { + field26544: String + field26545: Boolean + field26546: String + field26547: String + field26548: String + field26549: String + field26550: String + field26551: String + field26552: String +} + +type Object5559 @Directive21(argument61 : "stringValue26587") @Directive44(argument97 : ["stringValue26586"]) { + field26557: Int + field26558: Int + field26559: Scalar2 +} + +type Object556 @Directive20(argument58 : "stringValue2870", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2869") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2871", "stringValue2872"]) { + field3099: String! @Directive30(argument80 : true) @Directive41 + field3100: String @Directive30(argument80 : true) @Directive41 + field3101: Enum184 @Directive30(argument80 : true) @Directive41 +} + +type Object5560 @Directive21(argument61 : "stringValue26589") @Directive44(argument97 : ["stringValue26588"]) { + field26562: [String] +} + +type Object5561 @Directive21(argument61 : "stringValue26595") @Directive44(argument97 : ["stringValue26594"]) { + field26580: Scalar2 @deprecated + field26581: Object5559 +} + +type Object5562 @Directive21(argument61 : "stringValue26601") @Directive44(argument97 : ["stringValue26600"]) { + field26583: Object5554 + field26584: Object5563 +} + +type Object5563 @Directive21(argument61 : "stringValue26603") @Directive44(argument97 : ["stringValue26602"]) { + field26585: Object5554 +} + +type Object5564 @Directive21(argument61 : "stringValue26609") @Directive44(argument97 : ["stringValue26608"]) { + field26587: [String] +} + +type Object5565 @Directive21(argument61 : "stringValue26616") @Directive44(argument97 : ["stringValue26615"]) { + field26589: Object5554 +} + +type Object5566 @Directive21(argument61 : "stringValue26622") @Directive44(argument97 : ["stringValue26621"]) { + field26591: Scalar2 @deprecated + field26592: Object5559 +} + +type Object5567 @Directive21(argument61 : "stringValue26630") @Directive44(argument97 : ["stringValue26629"]) { + field26594: [Object5568] +} + +type Object5568 @Directive21(argument61 : "stringValue26632") @Directive44(argument97 : ["stringValue26631"]) { + field26595: Enum1390 + field26596: Boolean + field26597: Boolean + field26598: Scalar4 + field26599: Scalar4 +} + +type Object5569 @Directive21(argument61 : "stringValue26638") @Directive44(argument97 : ["stringValue26637"]) { + field26601: Object5570 +} + +type Object557 @Directive20(argument58 : "stringValue2877", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2876") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2878", "stringValue2879"]) { + field3106: String! @Directive30(argument80 : true) @Directive41 + field3107: String! @Directive30(argument80 : true) @Directive41 + field3108: String! @Directive30(argument80 : true) @Directive41 +} + +type Object5570 @Directive21(argument61 : "stringValue26640") @Directive44(argument97 : ["stringValue26639"]) { + field26602: Scalar2 + field26603: Boolean + field26604: Object5571 +} + +type Object5571 @Directive21(argument61 : "stringValue26642") @Directive44(argument97 : ["stringValue26641"]) { + field26605: String + field26606: String + field26607: String + field26608: String + field26609: [Object5572] + field26613: Object5573 +} + +type Object5572 @Directive21(argument61 : "stringValue26644") @Directive44(argument97 : ["stringValue26643"]) { + field26610: String + field26611: String + field26612: String +} + +type Object5573 @Directive21(argument61 : "stringValue26646") @Directive44(argument97 : ["stringValue26645"]) { + field26614: Float + field26615: Scalar2 + field26616: Scalar2 + field26617: Scalar2 + field26618: String +} + +type Object5574 @Directive21(argument61 : "stringValue26655") @Directive44(argument97 : ["stringValue26654"]) { + field26620: Scalar2 + field26621: Enum1391 + field26622: [Object5575] +} + +type Object5575 @Directive21(argument61 : "stringValue26657") @Directive44(argument97 : ["stringValue26656"]) { + field26623: Enum1392 + field26624: Boolean + field26625: String +} + +type Object5576 @Directive21(argument61 : "stringValue26663") @Directive44(argument97 : ["stringValue26662"]) { + field26627: Scalar2 +} + +type Object5577 @Directive44(argument97 : ["stringValue26664"]) { + field26629(argument1282: InputObject1044!): Object5578 @Directive35(argument89 : "stringValue26666", argument90 : false, argument91 : "stringValue26665", argument92 : 293, argument93 : "stringValue26667", argument94 : false) +} + +type Object5578 @Directive21(argument61 : "stringValue26670") @Directive44(argument97 : ["stringValue26669"]) { + field26630: Boolean +} + +type Object5579 @Directive44(argument97 : ["stringValue26671"]) { + field26632(argument1283: InputObject1045!): Object5580 @Directive35(argument89 : "stringValue26673", argument90 : true, argument91 : "stringValue26672", argument92 : 294, argument93 : "stringValue26674", argument94 : false) +} + +type Object558 @Directive20(argument58 : "stringValue2882", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2880") @Directive42(argument96 : ["stringValue2881"]) @Directive44(argument97 : ["stringValue2883", "stringValue2884"]) { + field3111: [Union96] @Directive41 + field3146: String @Directive41 +} + +type Object5580 @Directive21(argument61 : "stringValue26677") @Directive44(argument97 : ["stringValue26676"]) { + field26633: Scalar2 +} + +type Object5581 @Directive44(argument97 : ["stringValue26678"]) { + field26635(argument1284: InputObject1046!): Object5582 @Directive35(argument89 : "stringValue26680", argument90 : true, argument91 : "stringValue26679", argument93 : "stringValue26681", argument94 : false) +} + +type Object5582 @Directive21(argument61 : "stringValue26689") @Directive44(argument97 : ["stringValue26688"]) { + field26636: Boolean +} + +type Object5583 @Directive44(argument97 : ["stringValue26690"]) { + field26638(argument1285: InputObject1049!): Object5584 @Directive35(argument89 : "stringValue26692", argument90 : true, argument91 : "stringValue26691", argument92 : 295, argument93 : "stringValue26693", argument94 : false) + field26665(argument1286: InputObject1056!): Object5591 @Directive35(argument89 : "stringValue26720", argument90 : true, argument91 : "stringValue26719", argument92 : 296, argument93 : "stringValue26721", argument94 : false) + field26667(argument1287: InputObject1057!): Object5592 @Directive35(argument89 : "stringValue26726", argument90 : true, argument91 : "stringValue26725", argument92 : 297, argument93 : "stringValue26727", argument94 : false) + field26669(argument1288: InputObject1058!): Object5593 @Directive35(argument89 : "stringValue26733", argument90 : true, argument91 : "stringValue26732", argument92 : 298, argument93 : "stringValue26734", argument94 : false) + field26738(argument1289: InputObject1060!): Object5612 @Directive35(argument89 : "stringValue26779", argument90 : true, argument91 : "stringValue26778", argument92 : 299, argument93 : "stringValue26780", argument94 : false) +} + +type Object5584 @Directive21(argument61 : "stringValue26706") @Directive44(argument97 : ["stringValue26705"]) { + field26639: Object5585 +} + +type Object5585 @Directive21(argument61 : "stringValue26708") @Directive44(argument97 : ["stringValue26707"]) { + field26640: Scalar2! + field26641: Scalar4 + field26642: String + field26643: Object5586 + field26653: String + field26654: Scalar2 + field26655: [Object5588] + field26662: [Object5590] +} + +type Object5586 @Directive21(argument61 : "stringValue26710") @Directive44(argument97 : ["stringValue26709"]) { + field26644: Boolean + field26645: Enum1396 + field26646: String + field26647: Object5587 + field26650: String + field26651: String + field26652: Scalar2 +} + +type Object5587 @Directive21(argument61 : "stringValue26712") @Directive44(argument97 : ["stringValue26711"]) { + field26648: Int! + field26649: Int! +} + +type Object5588 @Directive21(argument61 : "stringValue26714") @Directive44(argument97 : ["stringValue26713"]) { + field26656: String! + field26657: Boolean! + field26658: [Object5589]! +} + +type Object5589 @Directive21(argument61 : "stringValue26716") @Directive44(argument97 : ["stringValue26715"]) { + field26659: String + field26660: Enum1397 + field26661: String +} + +type Object559 @Directive20(argument58 : "stringValue2890", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2888") @Directive42(argument96 : ["stringValue2889"]) @Directive44(argument97 : ["stringValue2891", "stringValue2892"]) { + field3112: String @Directive41 + field3113: Enum183 @Directive41 +} + +type Object5590 @Directive21(argument61 : "stringValue26718") @Directive44(argument97 : ["stringValue26717"]) { + field26663: Enum1398! + field26664: Scalar2! +} + +type Object5591 @Directive21(argument61 : "stringValue26724") @Directive44(argument97 : ["stringValue26723"]) { + field26666: Boolean +} + +type Object5592 @Directive21(argument61 : "stringValue26731") @Directive44(argument97 : ["stringValue26730"]) { + field26668: Object5585 +} + +type Object5593 @Directive21(argument61 : "stringValue26738") @Directive44(argument97 : ["stringValue26737"]) { + field26670: Object5594 +} + +type Object5594 @Directive21(argument61 : "stringValue26740") @Directive44(argument97 : ["stringValue26739"]) { + field26671: Scalar2! + field26672: String + field26673: String + field26674: Boolean + field26675: Scalar4 + field26676: Scalar4 + field26677: Scalar4 + field26678: String + field26679: String + field26680: String + field26681: Enum1401 + field26682: Scalar2 + field26683: [Object5595] @deprecated + field26686: Enum1402 + field26687: Object5596 + field26699: Object5600 +} + +type Object5595 @Directive21(argument61 : "stringValue26743") @Directive44(argument97 : ["stringValue26742"]) { + field26684: String! + field26685: String +} + +type Object5596 @Directive21(argument61 : "stringValue26746") @Directive44(argument97 : ["stringValue26745"]) { + field26688: Object5597 + field26691: [Object5598] +} + +type Object5597 @Directive21(argument61 : "stringValue26748") @Directive44(argument97 : ["stringValue26747"]) { + field26689: String + field26690: String +} + +type Object5598 @Directive21(argument61 : "stringValue26750") @Directive44(argument97 : ["stringValue26749"]) { + field26692: Object5599 + field26698: String +} + +type Object5599 @Directive21(argument61 : "stringValue26752") @Directive44(argument97 : ["stringValue26751"]) { + field26693: Enum1397 + field26694: String + field26695: String + field26696: String + field26697: String +} + +type Object56 @Directive21(argument61 : "stringValue265") @Directive44(argument97 : ["stringValue264"]) { + field311: String + field312: String + field313: String + field314: String + field315: String + field316: String + field317: String + field318: String + field319: String + field320: Enum29 +} + +type Object560 @Directive20(argument58 : "stringValue2895", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2893") @Directive42(argument96 : ["stringValue2894"]) @Directive44(argument97 : ["stringValue2896", "stringValue2897"]) { + field3114: String @Directive41 + field3115: Enum183 @Directive41 +} + +type Object5600 @Directive21(argument61 : "stringValue26754") @Directive44(argument97 : ["stringValue26753"]) { + field26700: [Union214] + field26727: Object5610 + field26732: Object5611 +} + +type Object5601 @Directive21(argument61 : "stringValue26757") @Directive44(argument97 : ["stringValue26756"]) { + field26701: String! + field26702: String +} + +type Object5602 @Directive21(argument61 : "stringValue26759") @Directive44(argument97 : ["stringValue26758"]) { + field26703: [Object5603] +} + +type Object5603 @Directive21(argument61 : "stringValue26761") @Directive44(argument97 : ["stringValue26760"]) { + field26704: String! + field26705: String + field26706: String + field26707: Scalar2 + field26708: [Object5604] + field26715: String + field26716: Object5605 +} + +type Object5604 @Directive21(argument61 : "stringValue26763") @Directive44(argument97 : ["stringValue26762"]) { + field26709: String! + field26710: String! + field26711: String + field26712: String + field26713: Object5605 +} + +type Object5605 @Directive21(argument61 : "stringValue26765") @Directive44(argument97 : ["stringValue26764"]) { + field26714: String +} + +type Object5606 @Directive21(argument61 : "stringValue26767") @Directive44(argument97 : ["stringValue26766"]) { + field26717: String! + field26718: String! +} + +type Object5607 @Directive21(argument61 : "stringValue26769") @Directive44(argument97 : ["stringValue26768"]) { + field26719: String! + field26720: String + field26721: Object5605 +} + +type Object5608 @Directive21(argument61 : "stringValue26771") @Directive44(argument97 : ["stringValue26770"]) { + field26722: [Object5609] +} + +type Object5609 @Directive21(argument61 : "stringValue26773") @Directive44(argument97 : ["stringValue26772"]) { + field26723: String! + field26724: String + field26725: String + field26726: Object5605 +} + +type Object561 @Directive20(argument58 : "stringValue2900", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2898") @Directive42(argument96 : ["stringValue2899"]) @Directive44(argument97 : ["stringValue2901", "stringValue2902"]) { + field3116: String @Directive41 + field3117: Enum183 @Directive41 +} + +type Object5610 @Directive21(argument61 : "stringValue26775") @Directive44(argument97 : ["stringValue26774"]) { + field26728: String + field26729: String + field26730: Object5605 + field26731: Object5605 +} + +type Object5611 @Directive21(argument61 : "stringValue26777") @Directive44(argument97 : ["stringValue26776"]) { + field26733: String + field26734: String + field26735: String + field26736: Object5605 + field26737: Object5605 +} + +type Object5612 @Directive21(argument61 : "stringValue26783") @Directive44(argument97 : ["stringValue26782"]) { + field26739: Object5600 +} + +type Object5613 @Directive44(argument97 : ["stringValue26784"]) { + field26741(argument1290: InputObject1061!): Object5614 @Directive35(argument89 : "stringValue26786", argument90 : true, argument91 : "stringValue26785", argument93 : "stringValue26787", argument94 : false) +} + +type Object5614 @Directive21(argument61 : "stringValue26795") @Directive44(argument97 : ["stringValue26794"]) { + field26742: Scalar2 + field26743: Boolean! + field26744: Enum1403 + field26745: [Object5615] +} + +type Object5615 @Directive21(argument61 : "stringValue26797") @Directive44(argument97 : ["stringValue26796"]) { + field26746: Enum1404 + field26747: String + field26748: Boolean + field26749: Scalar2 + field26750: Float + field26751: [Object5616] +} + +type Object5616 @Directive21(argument61 : "stringValue26799") @Directive44(argument97 : ["stringValue26798"]) { + field26752: Scalar3! + field26753: Enum1405! +} + +type Object5617 @Directive44(argument97 : ["stringValue26800"]) { + field26755(argument1291: InputObject1064!): Object5618 @Directive35(argument89 : "stringValue26802", argument90 : false, argument91 : "stringValue26801", argument92 : 300, argument93 : "stringValue26803", argument94 : false) @deprecated +} + +type Object5618 @Directive21(argument61 : "stringValue26806") @Directive44(argument97 : ["stringValue26805"]) { + field26756: String! + field26757: Scalar2! + field26758: Scalar2 + field26759: Enum1406 +} + +type Object5619 @Directive44(argument97 : ["stringValue26808"]) { + field26761(argument1292: InputObject1065!): Object5620 @Directive35(argument89 : "stringValue26810", argument90 : true, argument91 : "stringValue26809", argument92 : 301, argument93 : "stringValue26811", argument94 : true) + field26767(argument1293: InputObject1070!): Object5622 @Directive35(argument89 : "stringValue26823", argument90 : true, argument91 : "stringValue26822", argument92 : 302, argument93 : "stringValue26824", argument94 : true) +} + +type Object562 @Directive20(argument58 : "stringValue2905", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2903") @Directive42(argument96 : ["stringValue2904"]) @Directive44(argument97 : ["stringValue2906", "stringValue2907"]) { + field3118: String @Directive41 + field3119: String @Directive41 + field3120: Enum183 @Directive41 +} + +type Object5620 @Directive21(argument61 : "stringValue26819") @Directive44(argument97 : ["stringValue26818"]) { + field26762: String + field26763: Object5621! +} + +type Object5621 @Directive21(argument61 : "stringValue26821") @Directive44(argument97 : ["stringValue26820"]) { + field26764: String + field26765: String + field26766: String +} + +type Object5622 @Directive21(argument61 : "stringValue26831") @Directive44(argument97 : ["stringValue26830"]) { + field26768: Boolean +} + +type Object5623 @Directive44(argument97 : ["stringValue26832"]) { + field26770(argument1294: InputObject1071!): Object5624 @Directive35(argument89 : "stringValue26834", argument90 : true, argument91 : "stringValue26833", argument92 : 303, argument93 : "stringValue26835", argument94 : false) + field26773(argument1295: InputObject1072!): Object5625 @Directive35(argument89 : "stringValue26840", argument90 : true, argument91 : "stringValue26839", argument92 : 304, argument93 : "stringValue26841", argument94 : false) +} + +type Object5624 @Directive21(argument61 : "stringValue26838") @Directive44(argument97 : ["stringValue26837"]) { + field26771: Scalar2! + field26772: Boolean! +} + +type Object5625 @Directive21(argument61 : "stringValue26845") @Directive44(argument97 : ["stringValue26844"]) { + field26774: Object5626 +} + +type Object5626 @Directive21(argument61 : "stringValue26847") @Directive44(argument97 : ["stringValue26846"]) { + field26775: Scalar2! + field26776: Scalar2! + field26777: String! + field26778: Scalar2 + field26779: [Object5627]! + field26783: String + field26784: Scalar2 + field26785: Scalar2 + field26786: String + field26787: Boolean +} + +type Object5627 @Directive21(argument61 : "stringValue26849") @Directive44(argument97 : ["stringValue26848"]) { + field26780: Scalar2 + field26781: Scalar2 + field26782: String +} + +type Object5628 @Directive44(argument97 : ["stringValue26850"]) { + field26789(argument1296: InputObject1073!): Object5629 @Directive35(argument89 : "stringValue26852", argument90 : true, argument91 : "stringValue26851", argument92 : 305, argument93 : "stringValue26853", argument94 : false) + field26791(argument1297: InputObject1074!): Object5630 @Directive35(argument89 : "stringValue26858", argument90 : true, argument91 : "stringValue26857", argument92 : 306, argument93 : "stringValue26859", argument94 : false) + field26803(argument1298: InputObject1075!): Object5633 @Directive35(argument89 : "stringValue26872", argument90 : true, argument91 : "stringValue26871", argument92 : 307, argument93 : "stringValue26873", argument94 : false) + field26805(argument1299: InputObject1076!): Object5634 @Directive35(argument89 : "stringValue26878", argument90 : true, argument91 : "stringValue26877", argument92 : 308, argument93 : "stringValue26879", argument94 : false) + field26807(argument1300: InputObject1077!): Object5635 @Directive35(argument89 : "stringValue26884", argument90 : true, argument91 : "stringValue26883", argument92 : 309, argument93 : "stringValue26885", argument94 : false) + field26809(argument1301: InputObject1081!): Object5636 @Directive35(argument89 : "stringValue26894", argument90 : true, argument91 : "stringValue26893", argument92 : 310, argument93 : "stringValue26895", argument94 : false) + field26811(argument1302: InputObject1082!): Object5637 @Directive35(argument89 : "stringValue26900", argument90 : true, argument91 : "stringValue26899", argument92 : 311, argument93 : "stringValue26901", argument94 : false) + field27012(argument1303: InputObject1083!): Object5667 @Directive35(argument89 : "stringValue26974", argument90 : true, argument91 : "stringValue26973", argument92 : 312, argument93 : "stringValue26975", argument94 : false) +} + +type Object5629 @Directive21(argument61 : "stringValue26856") @Directive44(argument97 : ["stringValue26855"]) { + field26790: Boolean +} + +type Object563 @Directive20(argument58 : "stringValue2910", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2908") @Directive42(argument96 : ["stringValue2909"]) @Directive44(argument97 : ["stringValue2911", "stringValue2912"]) { + field3121: [Union97] @Directive41 + field3141: Boolean @Directive41 + field3142: Boolean @Directive41 + field3143: Boolean @Directive41 + field3144: String @Directive41 + field3145: Enum183 @Directive41 +} + +type Object5630 @Directive21(argument61 : "stringValue26864") @Directive44(argument97 : ["stringValue26863"]) { + field26792: Enum1415! + field26793: String! + field26794: Scalar2 + field26795: Object5631 + field26802: String! +} + +type Object5631 @Directive21(argument61 : "stringValue26867") @Directive44(argument97 : ["stringValue26866"]) { + field26796: String! + field26797: Float! + field26798: String! + field26799: Object5632 +} + +type Object5632 @Directive21(argument61 : "stringValue26869") @Directive44(argument97 : ["stringValue26868"]) { + field26800: Enum1416! + field26801: String +} + +type Object5633 @Directive21(argument61 : "stringValue26876") @Directive44(argument97 : ["stringValue26875"]) { + field26804: Boolean +} + +type Object5634 @Directive21(argument61 : "stringValue26882") @Directive44(argument97 : ["stringValue26881"]) { + field26806: Boolean +} + +type Object5635 @Directive21(argument61 : "stringValue26892") @Directive44(argument97 : ["stringValue26891"]) { + field26808: Boolean +} + +type Object5636 @Directive21(argument61 : "stringValue26898") @Directive44(argument97 : ["stringValue26897"]) { + field26810: Boolean +} + +type Object5637 @Directive21(argument61 : "stringValue26905") @Directive44(argument97 : ["stringValue26904"]) { + field26812: Scalar2! + field26813: [Enum1417]! + field26814: Object5638 +} + +type Object5638 @Directive21(argument61 : "stringValue26907") @Directive44(argument97 : ["stringValue26906"]) { + field26815: Object5639 + field26856: Object5647 + field27011: Enum1419 +} + +type Object5639 @Directive21(argument61 : "stringValue26909") @Directive44(argument97 : ["stringValue26908"]) { + field26816: Scalar2 + field26817: Scalar2 + field26818: String + field26819: String + field26820: String + field26821: Int + field26822: Enum1419! + field26823: Scalar1 + field26824: [Object5640] + field26829: String + field26830: Scalar4 + field26831: Object5642 + field26834: String + field26835: String + field26836: Boolean + field26837: Object5643 + field26841: Object5645 + field26855: String +} + +type Object564 @Directive20(argument58 : "stringValue2918", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2916") @Directive42(argument96 : ["stringValue2917"]) @Directive44(argument97 : ["stringValue2919", "stringValue2920"]) { + field3122: String @Directive41 + field3123: String @Directive41 + field3124: Object558 @Directive41 + field3125: Enum183 @Directive41 +} + +type Object5640 @Directive21(argument61 : "stringValue26912") @Directive44(argument97 : ["stringValue26911"]) { + field26825: String! + field26826: Object5641! +} + +type Object5641 @Directive21(argument61 : "stringValue26914") @Directive44(argument97 : ["stringValue26913"]) { + field26827: String! + field26828: Scalar2! +} + +type Object5642 @Directive21(argument61 : "stringValue26916") @Directive44(argument97 : ["stringValue26915"]) { + field26832: Enum1420 + field26833: String +} + +type Object5643 @Directive21(argument61 : "stringValue26919") @Directive44(argument97 : ["stringValue26918"]) { + field26838: Object5644 + field26840: String +} + +type Object5644 @Directive21(argument61 : "stringValue26921") @Directive44(argument97 : ["stringValue26920"]) { + field26839: String +} + +type Object5645 @Directive21(argument61 : "stringValue26923") @Directive44(argument97 : ["stringValue26922"]) { + field26842: Object5646 +} + +type Object5646 @Directive21(argument61 : "stringValue26925") @Directive44(argument97 : ["stringValue26924"]) { + field26843: String + field26844: String + field26845: Scalar4 + field26846: Float + field26847: Float + field26848: String + field26849: Float + field26850: Float + field26851: String + field26852: String + field26853: String + field26854: Scalar4 +} + +type Object5647 @Directive21(argument61 : "stringValue26927") @Directive44(argument97 : ["stringValue26926"]) { + field26857: Scalar2! + field26858: String! + field26859: Enum1419! + field26860: Scalar2 + field26861: Scalar2 + field26862: String + field26863: [Object5640] + field26864: Enum1421! + field26865: String + field26866: String + field26867: Scalar4 + field26868: Scalar4 + field26869: String + field26870: String + field26871: String + field26872: Boolean + field26873: Object5648 + field26875: Scalar2! + field26876: String + field26877: Boolean + field26878: String + field26879: Object5649 + field27006: Boolean + field27007: Object5665 +} + +type Object5648 @Directive21(argument61 : "stringValue26930") @Directive44(argument97 : ["stringValue26929"]) { + field26874: Enum1420 +} + +type Object5649 @Directive21(argument61 : "stringValue26932") @Directive44(argument97 : ["stringValue26931"]) { + field26880: String + field26881: Scalar2 + field26882: Scalar3 + field26883: Scalar3 + field26884: Scalar2 + field26885: Int + field26886: Boolean + field26887: [String] + field26888: String + field26889: Object5650 + field26894: [String] + field26895: Float + field26896: String + field26897: Int @deprecated + field26898: Int + field26899: Enum1424 + field26900: Float + field26901: Float + field26902: Float + field26903: Float + field26904: String + field26905: String + field26906: String + field26907: String + field26908: Object5652 + field26921: String + field26922: Scalar4 + field26923: String + field26924: Boolean + field26925: Scalar4 + field26926: Boolean + field26927: Boolean + field26928: Boolean + field26929: Boolean + field26930: Float + field26931: Int + field26932: Float + field26933: Boolean + field26934: Object5653 + field26955: String + field26956: Int + field26957: Enum1425 + field26958: Scalar3 + field26959: Scalar2 + field26960: Scalar2 + field26961: Object5654 + field26963: Int + field26964: Float + field26965: Object5655 + field26967: Object5656 + field26970: Scalar2 + field26971: Boolean + field26972: Object5657 + field26975: Object5658 + field26977: Object5659 + field26979: Boolean @deprecated + field26980: String + field26981: Boolean @deprecated + field26982: Boolean + field26983: Scalar2 + field26984: Scalar3 + field26985: Object5660 + field26993: String @deprecated + field26994: Object5662 + field26999: Union215 +} + +type Object565 @Directive20(argument58 : "stringValue2923", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2921") @Directive42(argument96 : ["stringValue2922"]) @Directive44(argument97 : ["stringValue2924", "stringValue2925"]) { + field3126: String @Directive41 + field3127: String @Directive41 + field3128: Object558 @Directive41 + field3129: Enum183 @Directive41 +} + +type Object5650 @Directive21(argument61 : "stringValue26934") @Directive44(argument97 : ["stringValue26933"]) { + field26890: Enum1422 + field26891: Object5651 +} + +type Object5651 @Directive21(argument61 : "stringValue26937") @Directive44(argument97 : ["stringValue26936"]) { + field26892: Enum1423 + field26893: Float +} + +type Object5652 @Directive21(argument61 : "stringValue26941") @Directive44(argument97 : ["stringValue26940"]) { + field26909: Float + field26910: Scalar2 + field26911: Float + field26912: Scalar2 + field26913: String + field26914: Scalar2 + field26915: Scalar2 + field26916: Scalar2 + field26917: Scalar2 + field26918: Scalar2 + field26919: Scalar2 + field26920: Scalar2 +} + +type Object5653 @Directive21(argument61 : "stringValue26943") @Directive44(argument97 : ["stringValue26942"]) { + field26935: String + field26936: String + field26937: Scalar4 + field26938: Scalar4 + field26939: Int + field26940: Boolean + field26941: Int + field26942: Boolean + field26943: Boolean + field26944: String + field26945: Scalar2 + field26946: Boolean + field26947: Object5641 + field26948: Boolean + field26949: Object5641 + field26950: String + field26951: Object5641 + field26952: Boolean + field26953: Scalar4 + field26954: String +} + +type Object5654 @Directive21(argument61 : "stringValue26946") @Directive44(argument97 : ["stringValue26945"]) { + field26962: String +} + +type Object5655 @Directive21(argument61 : "stringValue26948") @Directive44(argument97 : ["stringValue26947"]) { + field26966: String +} + +type Object5656 @Directive21(argument61 : "stringValue26950") @Directive44(argument97 : ["stringValue26949"]) { + field26968: Enum1426 + field26969: Boolean +} + +type Object5657 @Directive21(argument61 : "stringValue26953") @Directive44(argument97 : ["stringValue26952"]) { + field26973: Object5641 + field26974: Boolean +} + +type Object5658 @Directive21(argument61 : "stringValue26955") @Directive44(argument97 : ["stringValue26954"]) { + field26976: Boolean +} + +type Object5659 @Directive21(argument61 : "stringValue26957") @Directive44(argument97 : ["stringValue26956"]) { + field26978: Boolean +} + +type Object566 @Directive20(argument58 : "stringValue2928", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2926") @Directive42(argument96 : ["stringValue2927"]) @Directive44(argument97 : ["stringValue2929", "stringValue2930"]) { + field3130: String @Directive41 + field3131: String @Directive41 + field3132: Object558 @Directive41 + field3133: Enum183 @Directive41 +} + +type Object5660 @Directive21(argument61 : "stringValue26959") @Directive44(argument97 : ["stringValue26958"]) { + field26986: String + field26987: Object5661! +} + +type Object5661 @Directive21(argument61 : "stringValue26961") @Directive44(argument97 : ["stringValue26960"]) { + field26988: Scalar4! + field26989: Scalar4 + field26990: Int + field26991: String + field26992: Scalar4 +} + +type Object5662 @Directive21(argument61 : "stringValue26963") @Directive44(argument97 : ["stringValue26962"]) { + field26995: String + field26996: Int + field26997: Scalar4 + field26998: Scalar4 +} + +type Object5663 @Directive21(argument61 : "stringValue26966") @Directive44(argument97 : ["stringValue26965"]) { + field27000: Scalar3 + field27001: Scalar3 + field27002: String + field27003: String +} + +type Object5664 @Directive21(argument61 : "stringValue26968") @Directive44(argument97 : ["stringValue26967"]) { + field27004: String + field27005: Boolean +} + +type Object5665 @Directive21(argument61 : "stringValue26970") @Directive44(argument97 : ["stringValue26969"]) { + field27008: String + field27009: Object5666 +} + +type Object5666 @Directive21(argument61 : "stringValue26972") @Directive44(argument97 : ["stringValue26971"]) { + field27010: Scalar4 +} + +type Object5667 @Directive21(argument61 : "stringValue26978") @Directive44(argument97 : ["stringValue26977"]) { + field27013: Boolean +} + +type Object5668 @Directive44(argument97 : ["stringValue26979"]) { + field27015(argument1304: InputObject1084!): Object5669 @Directive35(argument89 : "stringValue26981", argument90 : true, argument91 : "stringValue26980", argument92 : 313, argument93 : "stringValue26982", argument94 : false) + field27017(argument1305: InputObject1085!): Object5670 @Directive35(argument89 : "stringValue26987", argument90 : true, argument91 : "stringValue26986", argument92 : 314, argument93 : "stringValue26988", argument94 : false) + field27019(argument1306: InputObject1086!): Object5671 @Directive35(argument89 : "stringValue26994", argument90 : true, argument91 : "stringValue26993", argument92 : 315, argument93 : "stringValue26995", argument94 : false) +} + +type Object5669 @Directive21(argument61 : "stringValue26985") @Directive44(argument97 : ["stringValue26984"]) { + field27016: Boolean +} + +type Object567 @Directive20(argument58 : "stringValue2932", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2931") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2933", "stringValue2934"]) { + field3134: String! @Directive30(argument80 : true) @Directive41 + field3135: String! @Directive30(argument80 : true) @Directive41 + field3136: Object558 @Directive30(argument80 : true) @Directive41 +} + +type Object5670 @Directive21(argument61 : "stringValue26992") @Directive44(argument97 : ["stringValue26991"]) { + field27018: Boolean +} + +type Object5671 @Directive21(argument61 : "stringValue27001") @Directive44(argument97 : ["stringValue27000"]) { + field27020: Boolean + field27021: Object5672 +} + +type Object5672 @Directive21(argument61 : "stringValue27003") @Directive44(argument97 : ["stringValue27002"]) { + field27022: Scalar2 + field27023: Enum1427 + field27024: Enum1428 + field27025: Scalar4 + field27026: Scalar4 + field27027: Scalar4 + field27028: Object5673 +} + +type Object5673 @Directive21(argument61 : "stringValue27005") @Directive44(argument97 : ["stringValue27004"]) { + field27029: Object5674 +} + +type Object5674 @Directive21(argument61 : "stringValue27007") @Directive44(argument97 : ["stringValue27006"]) { + field27030: Int +} + +type Object5675 @Directive44(argument97 : ["stringValue27008"]) { + field27032(argument1307: InputObject1089!): Object5676 @Directive35(argument89 : "stringValue27010", argument90 : true, argument91 : "stringValue27009", argument92 : 316, argument93 : "stringValue27011", argument94 : false) + field27037(argument1308: InputObject1107!): Object5678 @Directive35(argument89 : "stringValue27042", argument90 : false, argument91 : "stringValue27041", argument92 : 317, argument93 : "stringValue27043", argument94 : false) + field27060(argument1309: InputObject1110!): Object5682 @Directive35(argument89 : "stringValue27056", argument90 : true, argument91 : "stringValue27055", argument92 : 318, argument93 : "stringValue27057", argument94 : false) + field27063(argument1310: InputObject1111!): Object5678 @Directive35(argument89 : "stringValue27062", argument90 : false, argument91 : "stringValue27061", argument92 : 319, argument93 : "stringValue27063", argument94 : false) + field27064(argument1311: InputObject1112!): Object5683 @Directive35(argument89 : "stringValue27066", argument90 : false, argument91 : "stringValue27065", argument92 : 320, argument93 : "stringValue27067", argument94 : false) + field27318(argument1312: InputObject1115!): Object5710 @Directive35(argument89 : "stringValue27132", argument90 : false, argument91 : "stringValue27131", argument92 : 321, argument93 : "stringValue27133", argument94 : false) + field27408(argument1313: InputObject1116!): Object5727 @Directive35(argument89 : "stringValue27171", argument90 : false, argument91 : "stringValue27170", argument92 : 322, argument93 : "stringValue27172", argument94 : false) + field27410(argument1314: InputObject1117!): Object5728 @Directive35(argument89 : "stringValue27178", argument90 : true, argument91 : "stringValue27177", argument92 : 323, argument93 : "stringValue27179", argument94 : false) + field27413(argument1315: InputObject1118!): Object5729 @Directive35(argument89 : "stringValue27184", argument90 : true, argument91 : "stringValue27183", argument92 : 324, argument93 : "stringValue27185", argument94 : false) + field27439(argument1316: InputObject1125!): Object5678 @Directive35(argument89 : "stringValue27208", argument90 : false, argument91 : "stringValue27207", argument92 : 325, argument93 : "stringValue27209", argument94 : false) + field27440(argument1317: InputObject1126!): Object5735 @Directive35(argument89 : "stringValue27212", argument90 : false, argument91 : "stringValue27211", argument92 : 326, argument93 : "stringValue27213", argument94 : false) +} + +type Object5676 @Directive21(argument61 : "stringValue27038") @Directive44(argument97 : ["stringValue27037"]) { + field27033: Boolean + field27034: [Object5677] +} + +type Object5677 @Directive21(argument61 : "stringValue27040") @Directive44(argument97 : ["stringValue27039"]) { + field27035: String + field27036: [String] +} + +type Object5678 @Directive21(argument61 : "stringValue27048") @Directive44(argument97 : ["stringValue27047"]) { + field27038: Boolean! + field27039: Object5679 + field27059: [Object5677] +} + +type Object5679 @Directive21(argument61 : "stringValue27050") @Directive44(argument97 : ["stringValue27049"]) { + field27040: Scalar2! + field27041: Scalar2! + field27042: Scalar2 @deprecated + field27043: String + field27044: Object5680 + field27049: [Object5681] + field27056: Int + field27057: Boolean + field27058: Boolean +} + +type Object568 @Directive20(argument58 : "stringValue2936", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2935") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2937", "stringValue2938"]) { + field3137: String! @Directive30(argument80 : true) @Directive41 + field3138: String! @Directive30(argument80 : true) @Directive41 + field3139: Object558 @Directive30(argument80 : true) @Directive41 + field3140: String @Directive30(argument80 : true) @Directive41 +} + +type Object5680 @Directive21(argument61 : "stringValue27052") @Directive44(argument97 : ["stringValue27051"]) { + field27045: [Enum1434] + field27046: [Enum1434] + field27047: Scalar1 + field27048: Scalar1 +} + +type Object5681 @Directive21(argument61 : "stringValue27054") @Directive44(argument97 : ["stringValue27053"]) { + field27050: String + field27051: String + field27052: Float + field27053: Int + field27054: Int + field27055: Int +} + +type Object5682 @Directive21(argument61 : "stringValue27060") @Directive44(argument97 : ["stringValue27059"]) { + field27061: Boolean + field27062: [Object5677] +} + +type Object5683 @Directive21(argument61 : "stringValue27075") @Directive44(argument97 : ["stringValue27074"]) { + field27065: Boolean! + field27066: Scalar2! + field27067: [Object5684] + field27317: [Object5677] +} + +type Object5684 @Directive21(argument61 : "stringValue27077") @Directive44(argument97 : ["stringValue27076"]) { + field27068: Scalar3! + field27069: Scalar2! + field27070: Boolean + field27071: String + field27072: Object5685 + field27122: Object5691 + field27141: Object5692 + field27146: Object5693 + field27151: [Object5694] + field27164: Object5695 + field27168: [Object5696] + field27306: Object5706 + field27309: Boolean + field27310: [Union216] + field27312: Object5708 + field27316: [String] +} + +type Object5685 @Directive21(argument61 : "stringValue27079") @Directive44(argument97 : ["stringValue27078"]) { + field27073: Object5686 + field27100: Object5688 + field27104: Boolean + field27105: String + field27106: Object5689 + field27118: String + field27119: Object5686 + field27120: Enum1438 + field27121: Boolean +} + +type Object5686 @Directive21(argument61 : "stringValue27081") @Directive44(argument97 : ["stringValue27080"]) { + field27074: Scalar2 + field27075: Int + field27076: String + field27077: Scalar3 + field27078: Int + field27079: Int + field27080: Int + field27081: Int + field27082: Int + field27083: String + field27084: Scalar2 + field27085: Int + field27086: Scalar3 + field27087: Int + field27088: Object5687 + field27095: String + field27096: String + field27097: Int + field27098: Boolean + field27099: Boolean +} + +type Object5687 @Directive21(argument61 : "stringValue27083") @Directive44(argument97 : ["stringValue27082"]) { + field27089: Scalar2 + field27090: String + field27091: String + field27092: String + field27093: String + field27094: String +} + +type Object5688 @Directive21(argument61 : "stringValue27085") @Directive44(argument97 : ["stringValue27084"]) { + field27101: String + field27102: String + field27103: Boolean +} + +type Object5689 @Directive21(argument61 : "stringValue27087") @Directive44(argument97 : ["stringValue27086"]) { + field27107: Object5690 + field27112: Scalar2 + field27113: String + field27114: String + field27115: Boolean + field27116: Boolean @deprecated + field27117: Boolean +} + +type Object569 @Directive20(argument58 : "stringValue2940", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2939") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2941", "stringValue2942"]) { + field3149: Enum185 @deprecated + field3150: Object570 + field3159: Interface47 + field3161: Object480 + field3162: Object480 + field3163: Object480 + field3164: Scalar2 + field3165: Enum186 + field3166: Object571 + field3172: Object452 + field3173: Scalar2 + field3174: Boolean +} + +type Object5690 @Directive21(argument61 : "stringValue27089") @Directive44(argument97 : ["stringValue27088"]) { + field27108: Scalar2! + field27109: String! + field27110: String + field27111: String +} + +type Object5691 @Directive21(argument61 : "stringValue27091") @Directive44(argument97 : ["stringValue27090"]) { + field27123: Scalar3! + field27124: String + field27125: Float + field27126: Float + field27127: String + field27128: Float + field27129: [String] + field27130: Boolean + field27131: Boolean @deprecated + field27132: Float + field27133: Boolean + field27134: Boolean + field27135: Float + field27136: Float + field27137: Boolean + field27138: Boolean + field27139: Boolean + field27140: String +} + +type Object5692 @Directive21(argument61 : "stringValue27093") @Directive44(argument97 : ["stringValue27092"]) { + field27142: Boolean @deprecated + field27143: Float @deprecated + field27144: Float + field27145: [Float] +} + +type Object5693 @Directive21(argument61 : "stringValue27095") @Directive44(argument97 : ["stringValue27094"]) { + field27147: Boolean! + field27148: String! + field27149: String! + field27150: Float! +} + +type Object5694 @Directive21(argument61 : "stringValue27097") @Directive44(argument97 : ["stringValue27096"]) { + field27152: String! + field27153: String! + field27154: Scalar2! + field27155: Scalar3 + field27156: Scalar3 + field27157: Scalar4 + field27158: Float + field27159: Scalar4 + field27160: Scalar2 + field27161: Scalar3 + field27162: Scalar2 + field27163: String +} + +type Object5695 @Directive21(argument61 : "stringValue27099") @Directive44(argument97 : ["stringValue27098"]) { + field27165: String! + field27166: Scalar3 + field27167: Scalar3 +} + +type Object5696 @Directive21(argument61 : "stringValue27101") @Directive44(argument97 : ["stringValue27100"]) { + field27169: Object5697 + field27242: Object5700 + field27298: Object5705 + field27304: Scalar2 + field27305: Object5704 +} + +type Object5697 @Directive21(argument61 : "stringValue27103") @Directive44(argument97 : ["stringValue27102"]) { + field27170: Scalar2! + field27171: [Object5698] + field27184: Object5699 + field27224: Scalar2 + field27225: Scalar2 + field27226: Scalar2 + field27227: Scalar2 + field27228: Scalar2 + field27229: Scalar5 + field27230: Scalar5! + field27231: String + field27232: String + field27233: String + field27234: String + field27235: String + field27236: String! + field27237: String! + field27238: String + field27239: String + field27240: String + field27241: String +} + +type Object5698 @Directive21(argument61 : "stringValue27105") @Directive44(argument97 : ["stringValue27104"]) { + field27172: Scalar2 + field27173: Scalar2 + field27174: Scalar4 + field27175: Scalar2 + field27176: Int + field27177: Scalar4 + field27178: Scalar4 + field27179: Scalar4 + field27180: Int + field27181: Scalar4 + field27182: String + field27183: Int +} + +type Object5699 @Directive21(argument61 : "stringValue27107") @Directive44(argument97 : ["stringValue27106"]) { + field27185: Scalar2 + field27186: String + field27187: String + field27188: String + field27189: String + field27190: String + field27191: String + field27192: String + field27193: String + field27194: Scalar2 + field27195: Scalar5 + field27196: String + field27197: String + field27198: Int + field27199: Float + field27200: String + field27201: Float + field27202: Float + field27203: Scalar2 + field27204: Float + field27205: Boolean + field27206: Scalar5 + field27207: Scalar5 + field27208: Scalar5 + field27209: Boolean + field27210: Boolean + field27211: Boolean + field27212: Boolean + field27213: Boolean + field27214: String + field27215: Scalar5 + field27216: Scalar5 + field27217: String + field27218: String + field27219: Scalar5 + field27220: Boolean + field27221: String + field27222: Enum1439 + field27223: Scalar2 +} + +type Object57 @Directive21(argument61 : "stringValue268") @Directive44(argument97 : ["stringValue267"]) { + field326: String + field327: String + field328: String + field329: String +} + +type Object570 @Directive20(argument58 : "stringValue2948", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2947") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2949", "stringValue2950"]) { + field3151: String + field3152: String + field3153: String + field3154: Int + field3155: String + field3156: String + field3157: Int + field3158: Float +} + +type Object5700 @Directive21(argument61 : "stringValue27110") @Directive44(argument97 : ["stringValue27109"]) { + field27243: Scalar2 + field27244: String + field27245: String + field27246: String + field27247: String + field27248: String + field27249: Scalar2! + field27250: Scalar2! + field27251: String + field27252: String + field27253: String + field27254: String + field27255: String + field27256: String! + field27257: Scalar5! + field27258: Int + field27259: Object5699 + field27260: Scalar2 + field27261: Object5701 + field27294: Scalar5 + field27295: Scalar2 + field27296: Boolean + field27297: String +} + +type Object5701 @Directive21(argument61 : "stringValue27112") @Directive44(argument97 : ["stringValue27111"]) { + field27262: Object5702 +} + +type Object5702 @Directive21(argument61 : "stringValue27114") @Directive44(argument97 : ["stringValue27113"]) { + field27263: Scalar2! + field27264: Scalar2! + field27265: String! + field27266: String + field27267: String + field27268: String + field27269: String + field27270: String + field27271: String + field27272: String + field27273: String + field27274: String + field27275: String + field27276: String + field27277: Scalar5 + field27278: Object5703 + field27282: Scalar5 + field27283: String + field27284: String + field27285: String + field27286: String + field27287: Object5704 +} + +type Object5703 @Directive21(argument61 : "stringValue27116") @Directive44(argument97 : ["stringValue27115"]) { + field27279: Int + field27280: Int + field27281: Int +} + +type Object5704 @Directive21(argument61 : "stringValue27118") @Directive44(argument97 : ["stringValue27117"]) { + field27288: Scalar2 + field27289: String + field27290: String + field27291: String + field27292: String + field27293: String +} + +type Object5705 @Directive21(argument61 : "stringValue27120") @Directive44(argument97 : ["stringValue27119"]) { + field27299: Scalar2! + field27300: Scalar2! + field27301: String + field27302: String + field27303: Boolean +} + +type Object5706 @Directive21(argument61 : "stringValue27122") @Directive44(argument97 : ["stringValue27121"]) { + field27307: String + field27308: String +} + +type Object5707 @Directive21(argument61 : "stringValue27125") @Directive44(argument97 : ["stringValue27124"]) { + field27311: Scalar2! +} + +type Object5708 @Directive21(argument61 : "stringValue27127") @Directive44(argument97 : ["stringValue27126"]) { + field27313: Object5709 +} + +type Object5709 @Directive21(argument61 : "stringValue27129") @Directive44(argument97 : ["stringValue27128"]) { + field27314: Int! + field27315: Enum1440 +} + +type Object571 @Directive20(argument58 : "stringValue2959", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2958") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue2960", "stringValue2961"]) { + field3167: String + field3168: String + field3169: Enum10 + field3170: Object452 + field3171: Object1 +} + +type Object5710 @Directive21(argument61 : "stringValue27136") @Directive44(argument97 : ["stringValue27135"]) { + field27319: Boolean! + field27320: [Object5677] + field27321: [Object5711] +} + +type Object5711 @Directive21(argument61 : "stringValue27138") @Directive44(argument97 : ["stringValue27137"]) { + field27322: [Object5684]! + field27323: Scalar2! + field27324: Scalar3 + field27325: Scalar3 + field27326: Object5712 + field27405: Object5726 +} + +type Object5712 @Directive21(argument61 : "stringValue27140") @Directive44(argument97 : ["stringValue27139"]) { + field27327: String + field27328: String + field27329: String + field27330: Boolean + field27331: Scalar2 + field27332: Scalar4 + field27333: Boolean + field27334: Scalar2 + field27335: String + field27336: Boolean + field27337: Boolean + field27338: Boolean + field27339: Int + field27340: String + field27341: String + field27342: Object5713 + field27349: Enum1430 + field27350: Scalar4 + field27351: Scalar4 + field27352: Enum1431 + field27353: [Object5716] + field27358: Boolean + field27359: String + field27360: Int + field27361: String + field27362: String + field27363: Int + field27364: Object5717 + field27378: Scalar2 + field27379: Enum1433 + field27380: Object5720 +} + +type Object5713 @Directive21(argument61 : "stringValue27142") @Directive44(argument97 : ["stringValue27141"]) { + field27343: [Object5714] +} + +type Object5714 @Directive21(argument61 : "stringValue27144") @Directive44(argument97 : ["stringValue27143"]) { + field27344: Int + field27345: Enum1429 + field27346: Object5715 +} + +type Object5715 @Directive21(argument61 : "stringValue27146") @Directive44(argument97 : ["stringValue27145"]) { + field27347: Scalar3! + field27348: Scalar3! +} + +type Object5716 @Directive21(argument61 : "stringValue27148") @Directive44(argument97 : ["stringValue27147"]) { + field27354: Scalar2 + field27355: Scalar2 + field27356: String + field27357: Scalar2 +} + +type Object5717 @Directive21(argument61 : "stringValue27150") @Directive44(argument97 : ["stringValue27149"]) { + field27365: Object5718 + field27371: Object5719 +} + +type Object5718 @Directive21(argument61 : "stringValue27152") @Directive44(argument97 : ["stringValue27151"]) { + field27366: Enum1432 + field27367: String! + field27368: String + field27369: String + field27370: String +} + +type Object5719 @Directive21(argument61 : "stringValue27154") @Directive44(argument97 : ["stringValue27153"]) { + field27372: String + field27373: String + field27374: String + field27375: [String] + field27376: String + field27377: String +} + +type Object572 @Directive20(argument58 : "stringValue2970", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2969") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2971", "stringValue2972"]) { + field3178: Object558 @Directive30(argument80 : true) @Directive41 +} + +type Object5720 @Directive21(argument61 : "stringValue27156") @Directive44(argument97 : ["stringValue27155"]) { + field27381: Int @deprecated + field27382: Int + field27383: Int + field27384: Int + field27385: Object5721 + field27388: [Object5722] + field27391: [Object5723] + field27394: [Object5724] + field27397: Int + field27398: Boolean + field27399: Int + field27400: Boolean + field27401: Boolean + field27402: Object5725 +} + +type Object5721 @Directive21(argument61 : "stringValue27158") @Directive44(argument97 : ["stringValue27157"]) { + field27386: Int + field27387: Boolean +} + +type Object5722 @Directive21(argument61 : "stringValue27160") @Directive44(argument97 : ["stringValue27159"]) { + field27389: Int + field27390: Enum1434 +} + +type Object5723 @Directive21(argument61 : "stringValue27162") @Directive44(argument97 : ["stringValue27161"]) { + field27392: Enum1429! + field27393: Boolean! +} + +type Object5724 @Directive21(argument61 : "stringValue27164") @Directive44(argument97 : ["stringValue27163"]) { + field27395: Enum1429! + field27396: Boolean! +} + +type Object5725 @Directive21(argument61 : "stringValue27166") @Directive44(argument97 : ["stringValue27165"]) { + field27403: Enum1435 + field27404: Int +} + +type Object5726 @Directive21(argument61 : "stringValue27168") @Directive44(argument97 : ["stringValue27167"]) { + field27406: [Enum1441] + field27407: Boolean +} + +type Object5727 @Directive21(argument61 : "stringValue27176") @Directive44(argument97 : ["stringValue27175"]) { + field27409: Boolean! +} + +type Object5728 @Directive21(argument61 : "stringValue27182") @Directive44(argument97 : ["stringValue27181"]) { + field27411: Boolean + field27412: [Object5677] +} + +type Object5729 @Directive21(argument61 : "stringValue27196") @Directive44(argument97 : ["stringValue27195"]) { + field27414: Boolean! + field27415: [Object5677] + field27416: [Object5730] +} + +type Object573 @Directive20(argument58 : "stringValue2974", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2973") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2975", "stringValue2976"]) { + field3179: String @Directive30(argument80 : true) @Directive41 + field3180: Enum188 @Directive30(argument80 : true) @Directive41 + field3181: Object558 @Directive30(argument80 : true) @Directive41 + field3182: [Object574]! @Directive30(argument80 : true) @Directive41 +} + +type Object5730 @Directive21(argument61 : "stringValue27198") @Directive44(argument97 : ["stringValue27197"]) { + field27417: Scalar2! + field27418: [Object5731]! + field27424: [Object5732]! + field27438: [Scalar2] +} + +type Object5731 @Directive21(argument61 : "stringValue27200") @Directive44(argument97 : ["stringValue27199"]) { + field27419: Scalar3! + field27420: Scalar2! + field27421: Int + field27422: Int + field27423: Boolean +} + +type Object5732 @Directive21(argument61 : "stringValue27202") @Directive44(argument97 : ["stringValue27201"]) { + field27425: Scalar2 + field27426: [Object5733] +} + +type Object5733 @Directive21(argument61 : "stringValue27204") @Directive44(argument97 : ["stringValue27203"]) { + field27427: Scalar3! + field27428: Scalar2! + field27429: Scalar2! + field27430: [Object5734] + field27433: Int + field27434: Int + field27435: Boolean + field27436: Boolean + field27437: Boolean +} + +type Object5734 @Directive21(argument61 : "stringValue27206") @Directive44(argument97 : ["stringValue27205"]) { + field27431: Int + field27432: Object5691 +} + +type Object5735 @Directive21(argument61 : "stringValue27216") @Directive44(argument97 : ["stringValue27215"]) { + field27441: Boolean + field27442: [Object5677] +} + +type Object5736 @Directive44(argument97 : ["stringValue27217"]) { + field27444(argument1318: InputObject1127!): Object5737 @Directive35(argument89 : "stringValue27219", argument90 : false, argument91 : "stringValue27218", argument92 : 327, argument93 : "stringValue27220", argument94 : false) +} + +type Object5737 @Directive21(argument61 : "stringValue27227") @Directive44(argument97 : ["stringValue27226"]) { + field27445: String + field27446: Scalar2 +} + +type Object5738 @Directive44(argument97 : ["stringValue27228"]) { + field27448(argument1319: InputObject1128!): Object5739 @Directive35(argument89 : "stringValue27230", argument90 : true, argument91 : "stringValue27229", argument92 : 328, argument93 : "stringValue27231", argument94 : false) + field27507(argument1320: InputObject1129!): Object5743 @Directive35(argument89 : "stringValue27246", argument90 : true, argument91 : "stringValue27245", argument92 : 329, argument93 : "stringValue27247", argument94 : false) + field27509(argument1321: InputObject1130!): Object5744 @Directive35(argument89 : "stringValue27252", argument90 : true, argument91 : "stringValue27251", argument92 : 330, argument93 : "stringValue27253", argument94 : false) + field27511(argument1322: InputObject1131!): Object5745 @Directive35(argument89 : "stringValue27258", argument90 : true, argument91 : "stringValue27257", argument92 : 331, argument93 : "stringValue27259", argument94 : false) + field27513(argument1323: InputObject1132!): Object5746 @Directive35(argument89 : "stringValue27264", argument90 : true, argument91 : "stringValue27263", argument92 : 332, argument93 : "stringValue27265", argument94 : false) + field27532(argument1324: InputObject1133!): Object5748 @Directive35(argument89 : "stringValue27273", argument90 : true, argument91 : "stringValue27272", argument92 : 333, argument93 : "stringValue27274", argument94 : false) + field27540(argument1325: InputObject1134!): Object5750 @Directive35(argument89 : "stringValue27281", argument90 : true, argument91 : "stringValue27280", argument92 : 334, argument93 : "stringValue27282", argument94 : false) + field27542(argument1326: InputObject1135!): Object5751 @Directive35(argument89 : "stringValue27287", argument90 : true, argument91 : "stringValue27286", argument93 : "stringValue27288", argument94 : false) + field27559(argument1327: InputObject1136!): Object5753 @Directive35(argument89 : "stringValue27296", argument90 : true, argument91 : "stringValue27295", argument92 : 335, argument93 : "stringValue27297", argument94 : false) + field27561(argument1328: InputObject1137!): Object5754 @Directive35(argument89 : "stringValue27302", argument90 : true, argument91 : "stringValue27301", argument92 : 336, argument93 : "stringValue27303", argument94 : false) + field27563(argument1329: InputObject1138!): Object5755 @Directive35(argument89 : "stringValue27308", argument90 : true, argument91 : "stringValue27307", argument92 : 337, argument93 : "stringValue27309", argument94 : false) + field27570(argument1330: InputObject1140!): Object5756 @Directive35(argument89 : "stringValue27317", argument90 : true, argument91 : "stringValue27316", argument92 : 338, argument93 : "stringValue27318", argument94 : false) + field27572(argument1331: InputObject1141!): Object5757 @Directive35(argument89 : "stringValue27323", argument90 : true, argument91 : "stringValue27322", argument92 : 339, argument93 : "stringValue27324", argument94 : false) + field27574(argument1332: InputObject1142!): Object5758 @Directive35(argument89 : "stringValue27329", argument90 : true, argument91 : "stringValue27328", argument92 : 340, argument93 : "stringValue27330", argument94 : false) + field27744(argument1333: InputObject1143!): Object5763 @Directive35(argument89 : "stringValue27350", argument90 : true, argument91 : "stringValue27349", argument92 : 341, argument93 : "stringValue27351", argument94 : false) + field27746(argument1334: InputObject1144!): Object5764 @Directive35(argument89 : "stringValue27357", argument90 : true, argument91 : "stringValue27356", argument92 : 342, argument93 : "stringValue27358", argument94 : false) + field27748(argument1335: InputObject1145!): Object5765 @Directive35(argument89 : "stringValue27363", argument90 : true, argument91 : "stringValue27362", argument92 : 343, argument93 : "stringValue27364", argument94 : false) + field27763(argument1336: InputObject1146!): Object5767 @Directive35(argument89 : "stringValue27372", argument90 : true, argument91 : "stringValue27371", argument92 : 344, argument93 : "stringValue27373", argument94 : false) + field27771(argument1337: InputObject1147!): Object5769 @Directive35(argument89 : "stringValue27381", argument90 : true, argument91 : "stringValue27380", argument92 : 345, argument93 : "stringValue27382", argument94 : false) + field27773(argument1338: InputObject1148!): Object5770 @Directive35(argument89 : "stringValue27392", argument90 : true, argument91 : "stringValue27391", argument92 : 346, argument93 : "stringValue27393", argument94 : false) + field27776(argument1339: InputObject1149!): Object5771 @Directive35(argument89 : "stringValue27398", argument90 : true, argument91 : "stringValue27397", argument92 : 347, argument93 : "stringValue27399", argument94 : false) + field27779(argument1340: InputObject1150!): Object5772 @Directive35(argument89 : "stringValue27404", argument90 : true, argument91 : "stringValue27403", argument92 : 348, argument93 : "stringValue27405", argument94 : false) + field27781(argument1341: InputObject1151!): Object5773 @Directive35(argument89 : "stringValue27410", argument90 : true, argument91 : "stringValue27409", argument92 : 349, argument93 : "stringValue27411", argument94 : false) + field27858(argument1342: InputObject1157!): Object5779 @Directive35(argument89 : "stringValue27435", argument90 : true, argument91 : "stringValue27434", argument92 : 350, argument93 : "stringValue27436", argument94 : false) + field27873(argument1343: InputObject1158!): Object5781 @Directive35(argument89 : "stringValue27445", argument90 : true, argument91 : "stringValue27444", argument92 : 351, argument93 : "stringValue27446", argument94 : false) + field27901(argument1344: InputObject1160!): Object5787 @Directive35(argument89 : "stringValue27464", argument90 : true, argument91 : "stringValue27463", argument92 : 352, argument93 : "stringValue27465", argument94 : false) + field27921(argument1345: InputObject1161!): Object5789 @Directive35(argument89 : "stringValue27472", argument90 : true, argument91 : "stringValue27471", argument92 : 353, argument93 : "stringValue27473", argument94 : false) + field27930(argument1346: InputObject1162!): Object5791 @Directive35(argument89 : "stringValue27480", argument90 : true, argument91 : "stringValue27479", argument92 : 354, argument93 : "stringValue27481", argument94 : false) + field27932(argument1347: InputObject1163!): Object5792 @Directive35(argument89 : "stringValue27486", argument90 : true, argument91 : "stringValue27485", argument92 : 355, argument93 : "stringValue27487", argument94 : false) + field27934(argument1348: InputObject1164!): Object5793 @Directive35(argument89 : "stringValue27492", argument90 : true, argument91 : "stringValue27491", argument92 : 356, argument93 : "stringValue27493", argument94 : false) + field27936(argument1349: InputObject1165!): Object5794 @Directive35(argument89 : "stringValue27498", argument90 : true, argument91 : "stringValue27497", argument92 : 357, argument93 : "stringValue27499", argument94 : false) + field27953(argument1350: InputObject1166!): Object5796 @Directive35(argument89 : "stringValue27507", argument90 : true, argument91 : "stringValue27506", argument92 : 358, argument93 : "stringValue27508", argument94 : false) + field27961(argument1351: InputObject1167!): Object5798 @Directive35(argument89 : "stringValue27516", argument90 : true, argument91 : "stringValue27515", argument92 : 359, argument93 : "stringValue27517", argument94 : false) + field27964(argument1352: InputObject1168!): Object5799 @Directive35(argument89 : "stringValue27522", argument90 : true, argument91 : "stringValue27521", argument92 : 360, argument93 : "stringValue27523", argument94 : false) + field27966(argument1353: InputObject1169!): Object5800 @Directive35(argument89 : "stringValue27528", argument90 : true, argument91 : "stringValue27527", argument92 : 361, argument93 : "stringValue27529", argument94 : false) + field27968(argument1354: InputObject1170!): Object5801 @Directive35(argument89 : "stringValue27534", argument90 : true, argument91 : "stringValue27533", argument92 : 362, argument93 : "stringValue27535", argument94 : false) + field27970(argument1355: InputObject1171!): Object5802 @Directive35(argument89 : "stringValue27540", argument90 : true, argument91 : "stringValue27539", argument92 : 363, argument93 : "stringValue27541", argument94 : false) + field27972(argument1356: InputObject1172!): Object5803 @Directive35(argument89 : "stringValue27546", argument90 : true, argument91 : "stringValue27545", argument92 : 364, argument93 : "stringValue27547", argument94 : false) + field27974(argument1357: InputObject1173!): Object5804 @Directive35(argument89 : "stringValue27552", argument90 : true, argument91 : "stringValue27551", argument92 : 365, argument93 : "stringValue27553", argument94 : false) + field27976(argument1358: InputObject1174!): Object5805 @Directive35(argument89 : "stringValue27558", argument90 : true, argument91 : "stringValue27557", argument92 : 366, argument93 : "stringValue27559", argument94 : false) + field27978(argument1359: InputObject1175!): Object5806 @Directive35(argument89 : "stringValue27564", argument90 : true, argument91 : "stringValue27563", argument92 : 367, argument93 : "stringValue27565", argument94 : false) + field27980(argument1360: InputObject1176!): Object5807 @Directive35(argument89 : "stringValue27570", argument90 : true, argument91 : "stringValue27569", argument92 : 368, argument93 : "stringValue27571", argument94 : false) + field27982(argument1361: InputObject1177!): Object5808 @Directive35(argument89 : "stringValue27576", argument90 : true, argument91 : "stringValue27575", argument92 : 369, argument93 : "stringValue27577", argument94 : false) + field27984(argument1362: InputObject1178!): Object5809 @Directive35(argument89 : "stringValue27582", argument90 : true, argument91 : "stringValue27581", argument92 : 370, argument93 : "stringValue27583", argument94 : false) + field27987(argument1363: InputObject1179!): Object5810 @Directive35(argument89 : "stringValue27588", argument90 : true, argument91 : "stringValue27587", argument92 : 371, argument93 : "stringValue27589", argument94 : false) + field27989(argument1364: InputObject1180!): Object5811 @Directive35(argument89 : "stringValue27594", argument90 : true, argument91 : "stringValue27593", argument93 : "stringValue27595", argument94 : false) + field27992(argument1365: InputObject1181!): Object5812 @Directive35(argument89 : "stringValue27600", argument90 : true, argument91 : "stringValue27599", argument92 : 372, argument93 : "stringValue27601", argument94 : false) + field27994(argument1366: InputObject1182!): Object5813 @Directive35(argument89 : "stringValue27606", argument90 : true, argument91 : "stringValue27605", argument92 : 373, argument93 : "stringValue27607", argument94 : false) + field27996(argument1367: InputObject1183!): Object5814 @Directive35(argument89 : "stringValue27612", argument90 : true, argument91 : "stringValue27611", argument92 : 374, argument93 : "stringValue27613", argument94 : false) + field27998(argument1368: InputObject1184!): Object5815 @Directive35(argument89 : "stringValue27618", argument90 : true, argument91 : "stringValue27617", argument92 : 375, argument93 : "stringValue27619", argument94 : false) + field28000(argument1369: InputObject1185!): Object5816 @Directive35(argument89 : "stringValue27624", argument90 : false, argument91 : "stringValue27623", argument92 : 376, argument93 : "stringValue27625", argument94 : false) + field28023(argument1370: InputObject1186!): Object5818 @Directive35(argument89 : "stringValue27634", argument90 : false, argument91 : "stringValue27633", argument92 : 377, argument93 : "stringValue27635", argument94 : false) + field28026(argument1371: InputObject1187!): Object5819 @Directive35(argument89 : "stringValue27640", argument90 : true, argument91 : "stringValue27639", argument93 : "stringValue27641", argument94 : false) + field28044(argument1372: InputObject1191!): Object5821 @Directive35(argument89 : "stringValue27651", argument90 : true, argument91 : "stringValue27650", argument92 : 378, argument93 : "stringValue27652", argument94 : false) + field28047(argument1373: InputObject1192!): Object5822 @Directive35(argument89 : "stringValue27657", argument90 : true, argument91 : "stringValue27656", argument92 : 379, argument93 : "stringValue27658", argument94 : false) + field28049(argument1374: InputObject1193!): Object5823 @Directive35(argument89 : "stringValue27663", argument90 : true, argument91 : "stringValue27662", argument92 : 380, argument93 : "stringValue27664", argument94 : false) + field28052(argument1375: InputObject1194!): Object5824 @Directive35(argument89 : "stringValue27669", argument90 : true, argument91 : "stringValue27668", argument92 : 381, argument93 : "stringValue27670", argument94 : false) + field28054(argument1376: InputObject1195!): Object5825 @Directive35(argument89 : "stringValue27675", argument90 : true, argument91 : "stringValue27674", argument92 : 382, argument93 : "stringValue27676", argument94 : false) + field28056(argument1377: InputObject1196!): Object5826 @Directive35(argument89 : "stringValue27681", argument90 : true, argument91 : "stringValue27680", argument92 : 383, argument93 : "stringValue27682", argument94 : false) + field28058(argument1378: InputObject1197!): Object5827 @Directive35(argument89 : "stringValue27688", argument90 : true, argument91 : "stringValue27687", argument92 : 384, argument93 : "stringValue27689", argument94 : false) + field28060(argument1379: InputObject1199!): Object5828 @Directive35(argument89 : "stringValue27695", argument90 : true, argument91 : "stringValue27694", argument92 : 385, argument93 : "stringValue27696", argument94 : false) + field28063(argument1380: InputObject1201!): Object5829 @Directive35(argument89 : "stringValue27702", argument90 : true, argument91 : "stringValue27701", argument92 : 386, argument93 : "stringValue27703", argument94 : false) + field28065(argument1381: InputObject1202!): Object5830 @Directive35(argument89 : "stringValue27710", argument90 : true, argument91 : "stringValue27709", argument92 : 387, argument93 : "stringValue27711", argument94 : false) + field28068(argument1382: InputObject1203!): Object5831 @Directive35(argument89 : "stringValue27716", argument90 : true, argument91 : "stringValue27715", argument92 : 388, argument93 : "stringValue27717", argument94 : false) + field28072(argument1383: InputObject1204!): Object5832 @Directive35(argument89 : "stringValue27722", argument90 : true, argument91 : "stringValue27721", argument92 : 389, argument93 : "stringValue27723", argument94 : false) + field28074(argument1384: InputObject1205!): Object5833 @Directive35(argument89 : "stringValue27728", argument90 : true, argument91 : "stringValue27727", argument92 : 390, argument93 : "stringValue27729", argument94 : false) + field28079(argument1385: InputObject1206!): Object5835 @Directive35(argument89 : "stringValue27736", argument90 : true, argument91 : "stringValue27735", argument92 : 391, argument93 : "stringValue27737", argument94 : false) + field28081(argument1386: InputObject1207!): Object5836 @Directive35(argument89 : "stringValue27742", argument90 : true, argument91 : "stringValue27741", argument92 : 392, argument93 : "stringValue27743", argument94 : false) + field28094(argument1387: InputObject1208!): Object5838 @Directive35(argument89 : "stringValue27750", argument90 : true, argument91 : "stringValue27749", argument92 : 393, argument93 : "stringValue27751", argument94 : false) + field28106(argument1388: InputObject1212!): Object5840 @Directive35(argument89 : "stringValue27762", argument90 : true, argument91 : "stringValue27761", argument92 : 394, argument93 : "stringValue27763", argument94 : false) + field28109(argument1389: InputObject1213!): Object5841 @Directive35(argument89 : "stringValue27768", argument90 : true, argument91 : "stringValue27767", argument92 : 395, argument93 : "stringValue27769", argument94 : false) + field28112(argument1390: InputObject1214!): Object5842 @Directive35(argument89 : "stringValue27774", argument90 : true, argument91 : "stringValue27773", argument92 : 396, argument93 : "stringValue27775", argument94 : false) + field28115(argument1391: InputObject1215!): Object5843 @Directive35(argument89 : "stringValue27780", argument90 : true, argument91 : "stringValue27779", argument92 : 397, argument93 : "stringValue27781", argument94 : false) + field28118(argument1392: InputObject1216!): Object5844 @Directive35(argument89 : "stringValue27786", argument90 : true, argument91 : "stringValue27785", argument92 : 398, argument93 : "stringValue27787", argument94 : false) + field28121(argument1393: InputObject1217!): Object5845 @Directive35(argument89 : "stringValue27792", argument90 : true, argument91 : "stringValue27791", argument92 : 399, argument93 : "stringValue27793", argument94 : false) + field28124(argument1394: InputObject1218!): Object5846 @Directive35(argument89 : "stringValue27798", argument90 : true, argument91 : "stringValue27797", argument92 : 400, argument93 : "stringValue27799", argument94 : false) + field28127(argument1395: InputObject1219!): Object5847 @Directive35(argument89 : "stringValue27804", argument90 : true, argument91 : "stringValue27803", argument92 : 401, argument93 : "stringValue27805", argument94 : false) + field28129(argument1396: InputObject1220!): Object5848 @Directive35(argument89 : "stringValue27810", argument90 : true, argument91 : "stringValue27809", argument92 : 402, argument93 : "stringValue27811", argument94 : false) + field28132(argument1397: InputObject1221!): Object5849 @Directive35(argument89 : "stringValue27816", argument90 : true, argument91 : "stringValue27815", argument92 : 403, argument93 : "stringValue27817", argument94 : false) + field28135(argument1398: InputObject1222!): Object5850 @Directive35(argument89 : "stringValue27822", argument90 : false, argument91 : "stringValue27821", argument92 : 404, argument93 : "stringValue27823", argument94 : false) + field28138(argument1399: InputObject1223!): Object5851 @Directive35(argument89 : "stringValue27828", argument90 : true, argument91 : "stringValue27827", argument92 : 405, argument93 : "stringValue27829", argument94 : false) +} + +type Object5739 @Directive21(argument61 : "stringValue27234") @Directive44(argument97 : ["stringValue27233"]) { + field27449: Boolean! + field27450: Object5740 +} + +type Object574 @Directive20(argument58 : "stringValue2981", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2980") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue2982", "stringValue2983"]) { + field3183: String! @Directive30(argument80 : true) @Directive41 + field3184: String @Directive30(argument80 : true) @Directive41 + field3185: String @Directive30(argument80 : true) @Directive41 + field3186: Boolean! @Directive30(argument80 : true) @Directive41 + field3187: String @Directive30(argument80 : true) @Directive41 + field3188: [Union94] @Directive30(argument80 : true) @Directive41 +} + +type Object5740 @Directive21(argument61 : "stringValue27236") @Directive44(argument97 : ["stringValue27235"]) { + field27451: Scalar2 + field27452: Scalar2 + field27453: String + field27454: Scalar2 + field27455: Boolean + field27456: Scalar2 + field27457: Boolean + field27458: Boolean + field27459: Scalar2 + field27460: Boolean + field27461: Boolean + field27462: Boolean + field27463: Enum1449 + field27464: Enum1450 + field27465: Enum1451 + field27466: Scalar4 + field27467: Scalar2 + field27468: Scalar2 + field27469: Scalar4 + field27470: Scalar4 + field27471: Scalar2 + field27472: Boolean + field27473: Object5741 + field27487: [Object5742] + field27504: Scalar4 + field27505: Scalar4 + field27506: Scalar4 +} + +type Object5741 @Directive21(argument61 : "stringValue27241") @Directive44(argument97 : ["stringValue27240"]) { + field27474: Scalar2 + field27475: Boolean + field27476: Int + field27477: String + field27478: String + field27479: String + field27480: String + field27481: String + field27482: String + field27483: String + field27484: String + field27485: String + field27486: Object5740 +} + +type Object5742 @Directive21(argument61 : "stringValue27243") @Directive44(argument97 : ["stringValue27242"]) { + field27488: Scalar2 + field27489: String + field27490: Enum1452 + field27491: String + field27492: String + field27493: String @deprecated + field27494: Boolean + field27495: Scalar2 + field27496: Scalar2 + field27497: String + field27498: String + field27499: Int + field27500: String + field27501: Scalar4 + field27502: Scalar4 + field27503: Scalar4 +} + +type Object5743 @Directive21(argument61 : "stringValue27250") @Directive44(argument97 : ["stringValue27249"]) { + field27508: Boolean! +} + +type Object5744 @Directive21(argument61 : "stringValue27256") @Directive44(argument97 : ["stringValue27255"]) { + field27510: Boolean! +} + +type Object5745 @Directive21(argument61 : "stringValue27262") @Directive44(argument97 : ["stringValue27261"]) { + field27512: Boolean! +} + +type Object5746 @Directive21(argument61 : "stringValue27268") @Directive44(argument97 : ["stringValue27267"]) { + field27514: Boolean! + field27515: Object5747 + field27528: [Scalar2!] + field27529: [Enum1453!] + field27530: Scalar2 + field27531: Boolean +} + +type Object5747 @Directive21(argument61 : "stringValue27270") @Directive44(argument97 : ["stringValue27269"]) { + field27516: Scalar2 + field27517: Scalar2 + field27518: Scalar2 + field27519: String + field27520: Scalar2 + field27521: Scalar2 + field27522: Scalar2 + field27523: String + field27524: Scalar4 + field27525: Scalar4 + field27526: Scalar4 + field27527: Scalar4 +} + +type Object5748 @Directive21(argument61 : "stringValue27277") @Directive44(argument97 : ["stringValue27276"]) { + field27533: [Object5749!]! +} + +type Object5749 @Directive21(argument61 : "stringValue27279") @Directive44(argument97 : ["stringValue27278"]) { + field27534: Scalar2 + field27535: Scalar2 + field27536: Scalar2 + field27537: Scalar4 + field27538: Scalar4 + field27539: Scalar4 +} + +type Object575 @Directive22(argument62 : "stringValue2984") @Directive31 @Directive44(argument97 : ["stringValue2985", "stringValue2986"]) { + field3190: Object576 @deprecated + field3271: Object576 + field3272: Object576 + field3273: Object10 + field3274: Object595 @deprecated + field3277: Object596 + field3285: Object576 + field3286: Enum10 + field3287: [Object595] @deprecated + field3288: [Object596!] + field3289: Object452 + field3290: Object599 + field3296: Object600 +} + +type Object5750 @Directive21(argument61 : "stringValue27285") @Directive44(argument97 : ["stringValue27284"]) { + field27541: Boolean! +} + +type Object5751 @Directive21(argument61 : "stringValue27291") @Directive44(argument97 : ["stringValue27290"]) { + field27543: Boolean! + field27544: Object5752 +} + +type Object5752 @Directive21(argument61 : "stringValue27293") @Directive44(argument97 : ["stringValue27292"]) { + field27545: Scalar2 + field27546: Scalar2 + field27547: Scalar2 + field27548: Scalar2 + field27549: Enum1454 + field27550: Scalar4 + field27551: Scalar4 + field27552: Scalar2 + field27553: String + field27554: String + field27555: String + field27556: String + field27557: String + field27558: Object5742 +} + +type Object5753 @Directive21(argument61 : "stringValue27300") @Directive44(argument97 : ["stringValue27299"]) { + field27560: [Object5752!]! +} + +type Object5754 @Directive21(argument61 : "stringValue27306") @Directive44(argument97 : ["stringValue27305"]) { + field27562: [Object5740!]! +} + +type Object5755 @Directive21(argument61 : "stringValue27314") @Directive44(argument97 : ["stringValue27313"]) { + field27564: Boolean! @deprecated + field27565: Boolean! + field27566: Boolean! @deprecated + field27567: Enum1456 @deprecated + field27568: String + field27569: String @deprecated +} + +type Object5756 @Directive21(argument61 : "stringValue27321") @Directive44(argument97 : ["stringValue27320"]) { + field27571: Boolean! +} + +type Object5757 @Directive21(argument61 : "stringValue27327") @Directive44(argument97 : ["stringValue27326"]) { + field27573: Boolean! +} + +type Object5758 @Directive21(argument61 : "stringValue27333") @Directive44(argument97 : ["stringValue27332"]) { + field27575: Boolean! + field27576: Object5759 +} + +type Object5759 @Directive21(argument61 : "stringValue27335") @Directive44(argument97 : ["stringValue27334"]) { + field27577: Scalar2 + field27578: Scalar2 + field27579: String + field27580: Scalar2 + field27581: Scalar2 + field27582: String + field27583: Scalar2 + field27584: Scalar4 + field27585: Scalar2 + field27586: Enum1456 + field27587: Enum1457 + field27588: Object5760 + field27600: String + field27601: Object5761 + field27741: Scalar4 + field27742: Scalar4 + field27743: Scalar4 +} + +type Object576 @Directive20(argument58 : "stringValue2988", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2987") @Directive31 @Directive44(argument97 : ["stringValue2989", "stringValue2990"]) { + field3191: Enum189 + field3192: Object577 + field3215: Object584 + field3221: Object585 + field3225: Object586 + field3228: Object587 + field3231: Object10 + field3232: Object588 +} + +type Object5760 @Directive21(argument61 : "stringValue27338") @Directive44(argument97 : ["stringValue27337"]) { + field27589: Boolean! + field27590: Boolean! + field27591: Boolean! + field27592: Boolean! + field27593: Boolean! + field27594: Boolean! + field27595: Boolean! + field27596: Boolean! + field27597: Boolean! + field27598: Boolean! + field27599: Boolean! +} + +type Object5761 @Directive21(argument61 : "stringValue27340") @Directive44(argument97 : ["stringValue27339"]) { + field27602: Scalar2 + field27603: Scalar4 + field27604: Scalar4 + field27605: Scalar4 + field27606: Scalar4 + field27607: Scalar4 + field27608: Scalar4 + field27609: Scalar2 + field27610: Scalar2 + field27611: Scalar2 + field27612: Scalar3 + field27613: Int + field27614: String + field27615: String + field27616: String + field27617: String + field27618: Int + field27619: Int + field27620: String + field27621: Int + field27622: Int + field27623: Int + field27624: Int + field27625: Int + field27626: Int + field27627: Int + field27628: Int + field27629: Int @deprecated + field27630: Int @deprecated + field27631: Boolean + field27632: Int + field27633: Int + field27634: Int + field27635: Int + field27636: String + field27637: Boolean + field27638: Boolean + field27639: Boolean + field27640: Int + field27641: String + field27642: String + field27643: Float + field27644: String + field27645: Float + field27646: Int + field27647: String + field27648: Int + field27649: Int + field27650: String + field27651: Int + field27652: Float + field27653: Int + field27654: String + field27655: Float + field27656: Int + field27657: Int + field27658: String + field27659: Float + field27660: Int + field27661: Int + field27662: Int + field27663: String + field27664: Int + field27665: Int + field27666: Int + field27667: Int + field27668: Int @deprecated + field27669: Int + field27670: Int + field27671: Boolean + field27672: Boolean + field27673: Boolean + field27674: Boolean + field27675: Boolean + field27676: Int @deprecated + field27677: Int + field27678: String + field27679: Int + field27680: Scalar3 + field27681: Scalar2 + field27682: String + field27683: Scalar2 + field27684: Scalar2 + field27685: Scalar2 + field27686: String + field27687: Boolean + field27688: Scalar2 + field27689: Boolean + field27690: Scalar2 + field27691: Scalar2 + field27692: Float + field27693: Scalar2 + field27694: [Scalar2] + field27695: [Scalar2] + field27696: String + field27697: Scalar2 + field27698: Boolean + field27699: Scalar2 + field27700: String + field27701: Scalar2 + field27702: Scalar4 + field27703: Scalar4 + field27704: Boolean + field27705: Scalar2 + field27706: Scalar2 + field27707: Enum1458 + field27708: Enum1459 + field27709: String + field27710: Scalar2 + field27711: String + field27712: Boolean + field27713: String + field27714: Scalar2 + field27715: Boolean + field27716: Scalar4 + field27717: Scalar4 + field27718: Scalar4 + field27719: Scalar4 + field27720: Boolean + field27721: Enum1460 + field27722: Scalar4 + field27723: Scalar4 + field27724: Boolean + field27725: [Enum1461] + field27726: String + field27727: Scalar4 + field27728: [Object5762] + field27740: Scalar2 +} + +type Object5762 @Directive21(argument61 : "stringValue27346") @Directive44(argument97 : ["stringValue27345"]) { + field27729: Enum1462 + field27730: String + field27731: String + field27732: String + field27733: String + field27734: String + field27735: String + field27736: String + field27737: String + field27738: String + field27739: Enum1463 +} + +type Object5763 @Directive21(argument61 : "stringValue27355") @Directive44(argument97 : ["stringValue27354"]) { + field27745: Boolean! +} + +type Object5764 @Directive21(argument61 : "stringValue27361") @Directive44(argument97 : ["stringValue27360"]) { + field27747: Boolean! +} + +type Object5765 @Directive21(argument61 : "stringValue27368") @Directive44(argument97 : ["stringValue27367"]) { + field27749: Boolean! + field27750: Object5766 +} + +type Object5766 @Directive21(argument61 : "stringValue27370") @Directive44(argument97 : ["stringValue27369"]) { + field27751: Scalar2 + field27752: Scalar2 + field27753: String + field27754: Enum1465 + field27755: Scalar2 + field27756: Scalar2 + field27757: Scalar4 + field27758: Scalar4 + field27759: Object5741 + field27760: Object5741 + field27761: Scalar4 + field27762: Scalar4 +} + +type Object5767 @Directive21(argument61 : "stringValue27377") @Directive44(argument97 : ["stringValue27376"]) { + field27764: Boolean! + field27765: Object5768 +} + +type Object5768 @Directive21(argument61 : "stringValue27379") @Directive44(argument97 : ["stringValue27378"]) { + field27766: Scalar2! + field27767: Enum1466! + field27768: Float! + field27769: String! + field27770: String +} + +type Object5769 @Directive21(argument61 : "stringValue27390") @Directive44(argument97 : ["stringValue27389"]) { + field27772: Boolean! +} + +type Object577 @Directive20(argument58 : "stringValue2996", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue2995") @Directive31 @Directive44(argument97 : ["stringValue2997", "stringValue2998"]) { + field3193: String + field3194: String + field3195: String + field3196: Object578 + field3214: String +} + +type Object5770 @Directive21(argument61 : "stringValue27396") @Directive44(argument97 : ["stringValue27395"]) { + field27774: Boolean! + field27775: Object5742 +} + +type Object5771 @Directive21(argument61 : "stringValue27402") @Directive44(argument97 : ["stringValue27401"]) { + field27777: Object5752 + field27778: Boolean! +} + +type Object5772 @Directive21(argument61 : "stringValue27408") @Directive44(argument97 : ["stringValue27407"]) { + field27780: Boolean! +} + +type Object5773 @Directive21(argument61 : "stringValue27423") @Directive44(argument97 : ["stringValue27422"]) { + field27782: Boolean! + field27783: Object5774! +} + +type Object5774 @Directive21(argument61 : "stringValue27425") @Directive44(argument97 : ["stringValue27424"]) { + field27784: Scalar2 + field27785: Scalar2 + field27786: String + field27787: Scalar2 + field27788: Scalar2 + field27789: Scalar2 + field27790: Scalar2 + field27791: Enum1472 + field27792: Enum1473 + field27793: String + field27794: Object5775 + field27805: [Object5776] + field27815: Object5777 + field27826: Object5777 + field27827: Object5777 + field27828: Object5778 + field27855: Scalar4 + field27856: Scalar4 + field27857: Scalar4 +} + +type Object5775 @Directive21(argument61 : "stringValue27427") @Directive44(argument97 : ["stringValue27426"]) { + field27795: Scalar2 + field27796: String + field27797: String + field27798: String + field27799: String + field27800: String + field27801: String + field27802: Scalar4 + field27803: Scalar4 + field27804: Scalar4 +} + +type Object5776 @Directive21(argument61 : "stringValue27429") @Directive44(argument97 : ["stringValue27428"]) { + field27806: Scalar2 + field27807: String + field27808: Enum1474 + field27809: String + field27810: Scalar2 + field27811: Scalar2 + field27812: Scalar4 + field27813: Scalar4 + field27814: Scalar4 +} + +type Object5777 @Directive21(argument61 : "stringValue27431") @Directive44(argument97 : ["stringValue27430"]) { + field27816: Scalar2 + field27817: String + field27818: String + field27819: String + field27820: String + field27821: String + field27822: String + field27823: Scalar4 + field27824: Scalar4 + field27825: Scalar4 +} + +type Object5778 @Directive21(argument61 : "stringValue27433") @Directive44(argument97 : ["stringValue27432"]) { + field27829: Scalar2 + field27830: String + field27831: Boolean + field27832: String + field27833: Enum1475 @deprecated + field27834: Enum1467 + field27835: String + field27836: String + field27837: String + field27838: String + field27839: String + field27840: String + field27841: String + field27842: String + field27843: String @deprecated + field27844: Scalar2 + field27845: String + field27846: String + field27847: String + field27848: Enum1452 + field27849: Boolean + field27850: Enum1468 + field27851: Boolean + field27852: Scalar4 + field27853: Scalar4 + field27854: Scalar4 +} + +type Object5779 @Directive21(argument61 : "stringValue27441") @Directive44(argument97 : ["stringValue27440"]) { + field27859: Object5780! +} + +type Object578 implements Interface48 @Directive20(argument58 : "stringValue3031", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3030") @Directive31 @Directive44(argument97 : ["stringValue3032", "stringValue3033"]) { + field3197: Object579 + field3200: Object580 + field3203: Object581 + field3210: Object583 + field3213: Enum192 +} + +type Object5780 @Directive21(argument61 : "stringValue27443") @Directive44(argument97 : ["stringValue27442"]) { + field27860: Scalar2! + field27861: String! + field27862: String! + field27863: String! + field27864: Enum1476! + field27865: Scalar2! + field27866: String + field27867: Scalar2! + field27868: Enum1477! + field27869: Int + field27870: [String!] + field27871: Scalar2 + field27872: Scalar2 +} + +type Object5781 @Directive21(argument61 : "stringValue27450") @Directive44(argument97 : ["stringValue27449"]) { + field27874: Boolean! + field27875: [Object5782] @deprecated +} + +type Object5782 @Directive21(argument61 : "stringValue27452") @Directive44(argument97 : ["stringValue27451"]) { + field27876: Scalar2! + field27877: String! + field27878: String + field27879: String + field27880: String! + field27881: Scalar2! + field27882: Enum1478! + field27883: Scalar4! + field27884: Object5783 @deprecated + field27900: Scalar2 +} + +type Object5783 @Directive21(argument61 : "stringValue27455") @Directive44(argument97 : ["stringValue27454"]) { + field27885: String! + field27886: Object5784! + field27898: [Object5784]! + field27899: Object5785! +} + +type Object5784 @Directive21(argument61 : "stringValue27457") @Directive44(argument97 : ["stringValue27456"]) { + field27887: String! + field27888: Enum1479! + field27889: Object5785! + field27892: String! + field27893: Object5786 + field27896: Scalar4! + field27897: String! +} + +type Object5785 @Directive21(argument61 : "stringValue27460") @Directive44(argument97 : ["stringValue27459"]) { + field27890: String! + field27891: Scalar2! +} + +type Object5786 @Directive21(argument61 : "stringValue27462") @Directive44(argument97 : ["stringValue27461"]) { + field27894: String! + field27895: String! +} + +type Object5787 @Directive21(argument61 : "stringValue27468") @Directive44(argument97 : ["stringValue27467"]) { + field27902: Boolean! + field27903: Object5788 +} + +type Object5788 @Directive21(argument61 : "stringValue27470") @Directive44(argument97 : ["stringValue27469"]) { + field27904: Scalar2 + field27905: Scalar2 + field27906: String + field27907: String + field27908: String + field27909: String + field27910: String + field27911: String + field27912: String + field27913: String + field27914: Float + field27915: Float + field27916: Scalar2 + field27917: String + field27918: Scalar4 + field27919: Scalar4 + field27920: Scalar4 +} + +type Object5789 @Directive21(argument61 : "stringValue27476") @Directive44(argument97 : ["stringValue27475"]) { + field27922: Boolean! + field27923: Object5790 +} + +type Object579 @Directive20(argument58 : "stringValue3003", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3002") @Directive31 @Directive44(argument97 : ["stringValue3004", "stringValue3005"]) { + field3198: Int + field3199: Int +} + +type Object5790 @Directive21(argument61 : "stringValue27478") @Directive44(argument97 : ["stringValue27477"]) { + field27924: Scalar2 + field27925: Scalar2 + field27926: Scalar2 + field27927: Scalar4 + field27928: Scalar4 + field27929: Scalar4 +} + +type Object5791 @Directive21(argument61 : "stringValue27484") @Directive44(argument97 : ["stringValue27483"]) { + field27931: Boolean! +} + +type Object5792 @Directive21(argument61 : "stringValue27490") @Directive44(argument97 : ["stringValue27489"]) { + field27933: Boolean +} + +type Object5793 @Directive21(argument61 : "stringValue27496") @Directive44(argument97 : ["stringValue27495"]) { + field27935: Boolean! +} + +type Object5794 @Directive21(argument61 : "stringValue27502") @Directive44(argument97 : ["stringValue27501"]) { + field27937: Boolean! + field27938: Object5795 +} + +type Object5795 @Directive21(argument61 : "stringValue27504") @Directive44(argument97 : ["stringValue27503"]) { + field27939: Scalar2 + field27940: Enum1480 + field27941: Scalar2 + field27942: String + field27943: String + field27944: String + field27945: String + field27946: String + field27947: Float + field27948: String + field27949: String @deprecated + field27950: Scalar4 + field27951: Scalar4 + field27952: Scalar4 +} + +type Object5796 @Directive21(argument61 : "stringValue27511") @Directive44(argument97 : ["stringValue27510"]) { + field27954: Boolean! + field27955: Object5797! +} + +type Object5797 @Directive21(argument61 : "stringValue27513") @Directive44(argument97 : ["stringValue27512"]) { + field27956: Scalar2! + field27957: Boolean! + field27958: Boolean! + field27959: String! + field27960: Enum1481! +} + +type Object5798 @Directive21(argument61 : "stringValue27520") @Directive44(argument97 : ["stringValue27519"]) { + field27962: Boolean! + field27963: Object5759 +} + +type Object5799 @Directive21(argument61 : "stringValue27526") @Directive44(argument97 : ["stringValue27525"]) { + field27965: Boolean! +} + +type Object58 @Directive21(argument61 : "stringValue270") @Directive44(argument97 : ["stringValue269"]) { + field337: Scalar2 + field338: String + field339: String + field340: String + field341: String + field342: String + field343: String + field344: String + field345: String +} + +type Object580 @Directive20(argument58 : "stringValue3007", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3006") @Directive31 @Directive44(argument97 : ["stringValue3008", "stringValue3009"]) { + field3201: Enum144 + field3202: Enum190 +} + +type Object5800 @Directive21(argument61 : "stringValue27532") @Directive44(argument97 : ["stringValue27531"]) { + field27967: Boolean! +} + +type Object5801 @Directive21(argument61 : "stringValue27538") @Directive44(argument97 : ["stringValue27537"]) { + field27969: Boolean! +} + +type Object5802 @Directive21(argument61 : "stringValue27544") @Directive44(argument97 : ["stringValue27543"]) { + field27971: Boolean! +} + +type Object5803 @Directive21(argument61 : "stringValue27550") @Directive44(argument97 : ["stringValue27549"]) { + field27973: Boolean! +} + +type Object5804 @Directive21(argument61 : "stringValue27556") @Directive44(argument97 : ["stringValue27555"]) { + field27975: Boolean! +} + +type Object5805 @Directive21(argument61 : "stringValue27562") @Directive44(argument97 : ["stringValue27561"]) { + field27977: Boolean! +} + +type Object5806 @Directive21(argument61 : "stringValue27568") @Directive44(argument97 : ["stringValue27567"]) { + field27979: Boolean! +} + +type Object5807 @Directive21(argument61 : "stringValue27574") @Directive44(argument97 : ["stringValue27573"]) { + field27981: Scalar1! +} + +type Object5808 @Directive21(argument61 : "stringValue27580") @Directive44(argument97 : ["stringValue27579"]) { + field27983: Scalar1! +} + +type Object5809 @Directive21(argument61 : "stringValue27586") @Directive44(argument97 : ["stringValue27585"]) { + field27985: Boolean! + field27986: Object5797! +} + +type Object581 @Directive20(argument58 : "stringValue3015", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3014") @Directive31 @Directive44(argument97 : ["stringValue3016", "stringValue3017"]) { + field3204: Object582 + field3207: Object582 + field3208: Object582 + field3209: Object582 +} + +type Object5810 @Directive21(argument61 : "stringValue27592") @Directive44(argument97 : ["stringValue27591"]) { + field27988: Boolean! +} + +type Object5811 @Directive21(argument61 : "stringValue27598") @Directive44(argument97 : ["stringValue27597"]) { + field27990: Boolean! + field27991: Object5752 +} + +type Object5812 @Directive21(argument61 : "stringValue27604") @Directive44(argument97 : ["stringValue27603"]) { + field27993: [Object5752!]! +} + +type Object5813 @Directive21(argument61 : "stringValue27610") @Directive44(argument97 : ["stringValue27609"]) { + field27995: [Object5740!]! +} + +type Object5814 @Directive21(argument61 : "stringValue27616") @Directive44(argument97 : ["stringValue27615"]) { + field27997: Boolean! +} + +type Object5815 @Directive21(argument61 : "stringValue27622") @Directive44(argument97 : ["stringValue27621"]) { + field27999: String! +} + +type Object5816 @Directive21(argument61 : "stringValue27628") @Directive44(argument97 : ["stringValue27627"]) { + field28001: String! + field28002: Object5778! + field28003: Object5817! +} + +type Object5817 @Directive21(argument61 : "stringValue27630") @Directive44(argument97 : ["stringValue27629"]) { + field28004: Scalar2 + field28005: Scalar2 + field28006: Enum1482 + field28007: Scalar4 + field28008: String + field28009: String + field28010: String + field28011: Scalar2 + field28012: Scalar4 + field28013: String + field28014: String + field28015: Boolean + field28016: Boolean + field28017: String + field28018: String + field28019: Enum1483 + field28020: Scalar4 + field28021: Scalar4 + field28022: Scalar4 +} + +type Object5818 @Directive21(argument61 : "stringValue27638") @Directive44(argument97 : ["stringValue27637"]) { + field28024: String! + field28025: Object5817! +} + +type Object5819 @Directive21(argument61 : "stringValue27647") @Directive44(argument97 : ["stringValue27646"]) { + field28027: Boolean! + field28028: Object5820 +} + +type Object582 @Directive20(argument58 : "stringValue3019", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3018") @Directive31 @Directive44(argument97 : ["stringValue3020", "stringValue3021"]) { + field3205: Enum191 + field3206: Float +} + +type Object5820 @Directive21(argument61 : "stringValue27649") @Directive44(argument97 : ["stringValue27648"]) { + field28029: Scalar2 + field28030: String + field28031: String + field28032: Scalar2 + field28033: Scalar2 + field28034: Scalar4 + field28035: Scalar4 + field28036: Scalar2 @deprecated + field28037: Scalar4 + field28038: Scalar4 + field28039: Scalar2 + field28040: Scalar2 + field28041: Scalar2 + field28042: Scalar4 + field28043: Scalar4 +} + +type Object5821 @Directive21(argument61 : "stringValue27655") @Directive44(argument97 : ["stringValue27654"]) { + field28045: [String]! + field28046: Scalar1 +} + +type Object5822 @Directive21(argument61 : "stringValue27661") @Directive44(argument97 : ["stringValue27660"]) { + field28048: Boolean +} + +type Object5823 @Directive21(argument61 : "stringValue27667") @Directive44(argument97 : ["stringValue27666"]) { + field28050: Boolean! + field28051: Object5817 +} + +type Object5824 @Directive21(argument61 : "stringValue27673") @Directive44(argument97 : ["stringValue27672"]) { + field28053: Boolean! +} + +type Object5825 @Directive21(argument61 : "stringValue27679") @Directive44(argument97 : ["stringValue27678"]) { + field28055: Boolean! +} + +type Object5826 @Directive21(argument61 : "stringValue27686") @Directive44(argument97 : ["stringValue27685"]) { + field28057: Boolean! +} + +type Object5827 @Directive21(argument61 : "stringValue27693") @Directive44(argument97 : ["stringValue27692"]) { + field28059: Boolean! +} + +type Object5828 @Directive21(argument61 : "stringValue27700") @Directive44(argument97 : ["stringValue27699"]) { + field28061: Boolean! + field28062: Object5817 +} + +type Object5829 @Directive21(argument61 : "stringValue27708") @Directive44(argument97 : ["stringValue27707"]) { + field28064: Enum1486 +} + +type Object583 @Directive20(argument58 : "stringValue3027", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3026") @Directive31 @Directive44(argument97 : ["stringValue3028", "stringValue3029"]) { + field3211: Object582 + field3212: Object582 +} + +type Object5830 @Directive21(argument61 : "stringValue27714") @Directive44(argument97 : ["stringValue27713"]) { + field28066: Boolean! + field28067: Object5795 +} + +type Object5831 @Directive21(argument61 : "stringValue27720") @Directive44(argument97 : ["stringValue27719"]) { + field28069: Boolean! + field28070: Object5740 + field28071: Object5778 +} + +type Object5832 @Directive21(argument61 : "stringValue27726") @Directive44(argument97 : ["stringValue27725"]) { + field28073: Object5740 +} + +type Object5833 @Directive21(argument61 : "stringValue27732") @Directive44(argument97 : ["stringValue27731"]) { + field28075: Boolean! + field28076: Object5834 +} + +type Object5834 @Directive21(argument61 : "stringValue27734") @Directive44(argument97 : ["stringValue27733"]) { + field28077: Scalar2! + field28078: Scalar2! +} + +type Object5835 @Directive21(argument61 : "stringValue27740") @Directive44(argument97 : ["stringValue27739"]) { + field28080: Boolean! +} + +type Object5836 @Directive21(argument61 : "stringValue27746") @Directive44(argument97 : ["stringValue27745"]) { + field28082: Boolean! + field28083: Object5837 +} + +type Object5837 @Directive21(argument61 : "stringValue27748") @Directive44(argument97 : ["stringValue27747"]) { + field28084: Scalar2 + field28085: Scalar2 + field28086: Scalar2 + field28087: Scalar4 + field28088: Scalar4 + field28089: Scalar2 + field28090: String + field28091: Scalar4 + field28092: Scalar4 + field28093: Scalar4 +} + +type Object5838 @Directive21(argument61 : "stringValue27758") @Directive44(argument97 : ["stringValue27757"]) { + field28095: Boolean! + field28096: Object5839! +} + +type Object5839 @Directive21(argument61 : "stringValue27760") @Directive44(argument97 : ["stringValue27759"]) { + field28097: Scalar2! + field28098: String! @deprecated + field28099: Enum1487! + field28100: [Enum1453]! + field28101: [Object5768] + field28102: [Object5834] + field28103: Int! + field28104: Int! + field28105: String +} + +type Object584 @Directive20(argument58 : "stringValue3039", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3038") @Directive31 @Directive44(argument97 : ["stringValue3040", "stringValue3041"]) { + field3216: String + field3217: String + field3218: String + field3219: Object578 + field3220: String +} + +type Object5840 @Directive21(argument61 : "stringValue27766") @Directive44(argument97 : ["stringValue27765"]) { + field28107: Boolean! + field28108: Object5768 +} + +type Object5841 @Directive21(argument61 : "stringValue27772") @Directive44(argument97 : ["stringValue27771"]) { + field28110: Boolean! + field28111: Object5778 +} + +type Object5842 @Directive21(argument61 : "stringValue27778") @Directive44(argument97 : ["stringValue27777"]) { + field28113: Boolean! + field28114: Object5742 +} + +type Object5843 @Directive21(argument61 : "stringValue27784") @Directive44(argument97 : ["stringValue27783"]) { + field28116: Boolean! + field28117: Object5778 +} + +type Object5844 @Directive21(argument61 : "stringValue27790") @Directive44(argument97 : ["stringValue27789"]) { + field28119: Boolean! + field28120: Object5774 +} + +type Object5845 @Directive21(argument61 : "stringValue27796") @Directive44(argument97 : ["stringValue27795"]) { + field28122: Boolean! + field28123: Object5780 +} + +type Object5846 @Directive21(argument61 : "stringValue27802") @Directive44(argument97 : ["stringValue27801"]) { + field28125: Boolean! + field28126: Object5782! +} + +type Object5847 @Directive21(argument61 : "stringValue27808") @Directive44(argument97 : ["stringValue27807"]) { + field28128: Boolean! +} + +type Object5848 @Directive21(argument61 : "stringValue27814") @Directive44(argument97 : ["stringValue27813"]) { + field28130: Boolean! + field28131: Object5740 +} + +type Object5849 @Directive21(argument61 : "stringValue27820") @Directive44(argument97 : ["stringValue27819"]) { + field28133: Boolean! + field28134: Object5740 +} + +type Object585 @Directive20(argument58 : "stringValue3043", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3042") @Directive31 @Directive44(argument97 : ["stringValue3044", "stringValue3045"]) { + field3222: String + field3223: Object10 + field3224: Object578 +} + +type Object5850 @Directive21(argument61 : "stringValue27826") @Directive44(argument97 : ["stringValue27825"]) { + field28136: Boolean! + field28137: Boolean! +} + +type Object5851 @Directive21(argument61 : "stringValue27832") @Directive44(argument97 : ["stringValue27831"]) { + field28139: Boolean! + field28140: Enum1484! + field28141: Boolean! +} + +type Object5852 @Directive44(argument97 : ["stringValue27833"]) { + field28143(argument1400: InputObject1224!): Object5853 @Directive35(argument89 : "stringValue27835", argument90 : true, argument91 : "stringValue27834", argument92 : 406, argument93 : "stringValue27836", argument94 : false) + field28145(argument1401: InputObject1225!): Object5854 @Directive35(argument89 : "stringValue27841", argument90 : false, argument91 : "stringValue27840", argument92 : 407, argument93 : "stringValue27842", argument94 : false) + field28147(argument1402: InputObject1226!): Object5855 @Directive35(argument89 : "stringValue27847", argument90 : false, argument91 : "stringValue27846", argument92 : 408, argument93 : "stringValue27848", argument94 : false) + field28149(argument1403: InputObject1227!): Object5856 @Directive35(argument89 : "stringValue27853", argument90 : true, argument91 : "stringValue27852", argument92 : 409, argument93 : "stringValue27854", argument94 : false) + field28273(argument1404: InputObject1228!): Object5867 @Directive35(argument89 : "stringValue27880", argument90 : true, argument91 : "stringValue27879", argument92 : 410, argument93 : "stringValue27881", argument94 : false) + field28299(argument1405: InputObject1230!): Object5871 @Directive35(argument89 : "stringValue27895", argument90 : true, argument91 : "stringValue27894", argument92 : 411, argument93 : "stringValue27896", argument94 : false) + field28337(argument1406: InputObject1233!): Object5877 @Directive35(argument89 : "stringValue27914", argument90 : true, argument91 : "stringValue27913", argument92 : 412, argument93 : "stringValue27915", argument94 : false) + field28339(argument1407: InputObject1235!): Object5878 @Directive35(argument89 : "stringValue27921", argument90 : true, argument91 : "stringValue27920", argument93 : "stringValue27922", argument94 : false) + field28341(argument1408: InputObject1237!): Object5879 @Directive35(argument89 : "stringValue27928", argument90 : false, argument91 : "stringValue27927", argument92 : 413, argument93 : "stringValue27929", argument94 : false) + field28354(argument1409: InputObject1239!): Object5881 @Directive35(argument89 : "stringValue27937", argument90 : true, argument91 : "stringValue27936", argument92 : 414, argument93 : "stringValue27938", argument94 : false) + field28356(argument1410: InputObject1240!): Object5867 @Directive35(argument89 : "stringValue27943", argument90 : true, argument91 : "stringValue27942", argument92 : 415, argument93 : "stringValue27944", argument94 : false) + field28357(argument1411: InputObject1241!): Object5882 @Directive35(argument89 : "stringValue27947", argument90 : true, argument91 : "stringValue27946", argument92 : 416, argument93 : "stringValue27948", argument94 : false) + field28360(argument1412: InputObject1242!): Object5883 @Directive35(argument89 : "stringValue27953", argument90 : true, argument91 : "stringValue27952", argument92 : 417, argument93 : "stringValue27954", argument94 : false) + field28362(argument1413: InputObject1244!): Object5884 @Directive35(argument89 : "stringValue27960", argument90 : true, argument91 : "stringValue27959", argument92 : 418, argument93 : "stringValue27961", argument94 : false) + field28389(argument1414: InputObject1246!): Object5886 @Directive35(argument89 : "stringValue27969", argument90 : true, argument91 : "stringValue27968", argument92 : 419, argument93 : "stringValue27970", argument94 : false) + field28518(argument1415: InputObject1247!): Object5897 @Directive35(argument89 : "stringValue27998", argument90 : true, argument91 : "stringValue27997", argument92 : 420, argument93 : "stringValue27999", argument94 : false) + field28526(argument1416: InputObject1248!): Object5897 @Directive35(argument89 : "stringValue28006", argument90 : true, argument91 : "stringValue28005", argument92 : 421, argument93 : "stringValue28007", argument94 : false) + field28527(argument1417: InputObject1249!): Object5899 @Directive35(argument89 : "stringValue28010", argument90 : true, argument91 : "stringValue28009", argument92 : 422, argument93 : "stringValue28011", argument94 : false) + field28533(argument1418: InputObject1252!): Object5900 @Directive35(argument89 : "stringValue28018", argument90 : true, argument91 : "stringValue28017", argument92 : 423, argument93 : "stringValue28019", argument94 : false) + field28539(argument1419: InputObject1259!): Object5901 @Directive35(argument89 : "stringValue28030", argument90 : true, argument91 : "stringValue28029", argument92 : 424, argument93 : "stringValue28031", argument94 : false) + field28557(argument1420: InputObject1259!): Object5901 @Directive35(argument89 : "stringValue28039", argument90 : true, argument91 : "stringValue28038", argument92 : 425, argument93 : "stringValue28040", argument94 : false) + field28558(argument1421: InputObject1261!): Object5903 @Directive35(argument89 : "stringValue28042", argument90 : true, argument91 : "stringValue28041", argument92 : 426, argument93 : "stringValue28043", argument94 : false) + field28581(argument1422: InputObject1265!): Object5907 @Directive35(argument89 : "stringValue28059", argument90 : true, argument91 : "stringValue28058", argument92 : 427, argument93 : "stringValue28060", argument94 : false) + field28583(argument1423: InputObject1266!): Object5908 @Directive35(argument89 : "stringValue28065", argument90 : true, argument91 : "stringValue28064", argument92 : 428, argument93 : "stringValue28066", argument94 : false) + field28615(argument1424: InputObject1267!): Object5912 @Directive35(argument89 : "stringValue28079", argument90 : true, argument91 : "stringValue28078", argument93 : "stringValue28080", argument94 : false) + field28617(argument1425: InputObject1266!): Object5910 @Directive35(argument89 : "stringValue28085", argument90 : true, argument91 : "stringValue28084", argument92 : 429, argument93 : "stringValue28086", argument94 : false) + field28618(argument1426: InputObject1268!): Object5913 @Directive35(argument89 : "stringValue28088", argument90 : true, argument91 : "stringValue28087", argument92 : 430, argument93 : "stringValue28089", argument94 : false) + field28620(argument1427: InputObject1269!): Object5914 @Directive35(argument89 : "stringValue28094", argument90 : true, argument91 : "stringValue28093", argument92 : 431, argument93 : "stringValue28095", argument94 : false) + field28622(argument1428: InputObject1270!): Object5871 @Directive35(argument89 : "stringValue28100", argument90 : true, argument91 : "stringValue28099", argument92 : 432, argument93 : "stringValue28101", argument94 : false) + field28623(argument1429: InputObject1271!): Object5915 @Directive35(argument89 : "stringValue28104", argument90 : true, argument91 : "stringValue28103", argument92 : 433, argument93 : "stringValue28105", argument94 : false) + field28625(argument1430: InputObject1230!): Object5871 @Directive35(argument89 : "stringValue28110", argument90 : true, argument91 : "stringValue28109", argument92 : 434, argument93 : "stringValue28111", argument94 : false) + field28626(argument1431: InputObject1233!): Object5877 @Directive35(argument89 : "stringValue28113", argument90 : true, argument91 : "stringValue28112", argument92 : 435, argument93 : "stringValue28114", argument94 : false) + field28627(argument1432: InputObject1235!): Object5878 @Directive35(argument89 : "stringValue28116", argument90 : true, argument91 : "stringValue28115", argument92 : 436, argument93 : "stringValue28117", argument94 : false) + field28628(argument1433: InputObject1272!): Object5886 @Directive35(argument89 : "stringValue28119", argument90 : true, argument91 : "stringValue28118", argument92 : 437, argument93 : "stringValue28120", argument94 : false) + field28629(argument1434: InputObject1273!): Object5867 @Directive35(argument89 : "stringValue28123", argument90 : true, argument91 : "stringValue28122", argument92 : 438, argument93 : "stringValue28124", argument94 : false) + field28630(argument1435: InputObject1272!): Object5886 @Directive35(argument89 : "stringValue28128", argument90 : true, argument91 : "stringValue28127", argument92 : 439, argument93 : "stringValue28129", argument94 : false) + field28631(argument1436: InputObject1275!): Object5916 @Directive35(argument89 : "stringValue28131", argument90 : true, argument91 : "stringValue28130", argument92 : 440, argument93 : "stringValue28132", argument94 : false) + field28633(argument1437: InputObject1276!): Object5897 @Directive35(argument89 : "stringValue28137", argument90 : true, argument91 : "stringValue28136", argument92 : 441, argument93 : "stringValue28138", argument94 : false) + field28634(argument1438: InputObject1276!): Object5897 @Directive35(argument89 : "stringValue28141", argument90 : true, argument91 : "stringValue28140", argument92 : 442, argument93 : "stringValue28142", argument94 : false) + field28635(argument1439: InputObject1249!): Object5899 @Directive35(argument89 : "stringValue28144", argument90 : true, argument91 : "stringValue28143", argument92 : 443, argument93 : "stringValue28145", argument94 : false) + field28636(argument1440: InputObject1252!): Object5900 @Directive35(argument89 : "stringValue28147", argument90 : true, argument91 : "stringValue28146", argument92 : 444, argument93 : "stringValue28148", argument94 : false) + field28637(argument1441: InputObject1277!): Object5917 @Directive35(argument89 : "stringValue28150", argument90 : true, argument91 : "stringValue28149", argument92 : 445, argument93 : "stringValue28151", argument94 : false) + field28639(argument1442: InputObject1277!): Object5917 @Directive35(argument89 : "stringValue28157", argument90 : true, argument91 : "stringValue28156", argument92 : 446, argument93 : "stringValue28158", argument94 : false) + field28640(argument1443: InputObject1279!): Object5918 @Directive35(argument89 : "stringValue28160", argument90 : true, argument91 : "stringValue28159", argument92 : 447, argument93 : "stringValue28161", argument94 : false) + field28643(argument1444: InputObject1280!): Object5903 @Directive35(argument89 : "stringValue28168", argument90 : true, argument91 : "stringValue28167", argument92 : 448, argument93 : "stringValue28169", argument94 : false) +} + +type Object5853 @Directive21(argument61 : "stringValue27839") @Directive44(argument97 : ["stringValue27838"]) { + field28144: Boolean +} + +type Object5854 @Directive21(argument61 : "stringValue27845") @Directive44(argument97 : ["stringValue27844"]) { + field28146: Boolean +} + +type Object5855 @Directive21(argument61 : "stringValue27851") @Directive44(argument97 : ["stringValue27850"]) { + field28148: Boolean +} + +type Object5856 @Directive21(argument61 : "stringValue27857") @Directive44(argument97 : ["stringValue27856"]) { + field28150: Boolean! + field28151: [Object5857] + field28174: [Object5858] + field28270: [Object5866] +} + +type Object5857 @Directive21(argument61 : "stringValue27859") @Directive44(argument97 : ["stringValue27858"]) { + field28152: Scalar2 + field28153: Scalar2 + field28154: Scalar2 + field28155: String + field28156: String + field28157: String + field28158: String + field28159: String + field28160: String + field28161: String + field28162: String + field28163: Scalar2 + field28164: Scalar2 + field28165: Scalar2 + field28166: Scalar2 + field28167: Scalar2 + field28168: Scalar2 + field28169: Float + field28170: Float + field28171: Scalar2 + field28172: Scalar2 + field28173: String +} + +type Object5858 @Directive21(argument61 : "stringValue27861") @Directive44(argument97 : ["stringValue27860"]) { + field28175: Object5859 + field28178: Object5860 + field28206: Object5862 + field28266: Object5865 +} + +type Object5859 @Directive21(argument61 : "stringValue27863") @Directive44(argument97 : ["stringValue27862"]) { + field28176: Object5857 + field28177: [Object5857] +} + +type Object586 @Directive20(argument58 : "stringValue3047", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3046") @Directive31 @Directive44(argument97 : ["stringValue3048", "stringValue3049"]) { + field3226: String + field3227: Object10 +} + +type Object5860 @Directive21(argument61 : "stringValue27865") @Directive44(argument97 : ["stringValue27864"]) { + field28179: Object5861 + field28205: [Object5861] +} + +type Object5861 @Directive21(argument61 : "stringValue27867") @Directive44(argument97 : ["stringValue27866"]) { + field28180: Scalar2 + field28181: String + field28182: String + field28183: String + field28184: String + field28185: String + field28186: String + field28187: String + field28188: String + field28189: String + field28190: String + field28191: String + field28192: String + field28193: Scalar2 + field28194: String + field28195: Scalar2 + field28196: Scalar2 + field28197: Scalar2 + field28198: Scalar2 + field28199: String + field28200: String + field28201: Scalar2 + field28202: String + field28203: String + field28204: Scalar2 +} + +type Object5862 @Directive21(argument61 : "stringValue27869") @Directive44(argument97 : ["stringValue27868"]) { + field28207: Object5863 + field28247: Object5864 + field28265: Object5864 +} + +type Object5863 @Directive21(argument61 : "stringValue27871") @Directive44(argument97 : ["stringValue27870"]) { + field28208: Scalar2 + field28209: String + field28210: String + field28211: String + field28212: String + field28213: String + field28214: String + field28215: String + field28216: String + field28217: Scalar2 + field28218: Scalar5 + field28219: String + field28220: String + field28221: Int + field28222: Float + field28223: String + field28224: Float + field28225: Float + field28226: Scalar2 + field28227: Float + field28228: Boolean + field28229: Scalar5 + field28230: Scalar5 + field28231: Scalar5 + field28232: Boolean + field28233: Boolean + field28234: Boolean + field28235: Boolean + field28236: Boolean + field28237: String + field28238: Scalar5 + field28239: Scalar5 + field28240: String + field28241: String + field28242: Scalar5 + field28243: Boolean + field28244: String + field28245: Enum1488 + field28246: Scalar2 +} + +type Object5864 @Directive21(argument61 : "stringValue27874") @Directive44(argument97 : ["stringValue27873"]) { + field28248: Scalar2 + field28249: Scalar2 + field28250: Scalar2 + field28251: Scalar2 + field28252: Boolean + field28253: String + field28254: Boolean + field28255: Boolean + field28256: String + field28257: String + field28258: Scalar2 + field28259: String + field28260: String + field28261: String + field28262: String + field28263: String + field28264: Scalar4 +} + +type Object5865 @Directive21(argument61 : "stringValue27876") @Directive44(argument97 : ["stringValue27875"]) { + field28267: Object5863 + field28268: Object5864 + field28269: Object5861 +} + +type Object5866 @Directive21(argument61 : "stringValue27878") @Directive44(argument97 : ["stringValue27877"]) { + field28271: Scalar2 + field28272: String +} + +type Object5867 @Directive21(argument61 : "stringValue27886") @Directive44(argument97 : ["stringValue27885"]) { + field28274: Object5868 +} + +type Object5868 @Directive21(argument61 : "stringValue27888") @Directive44(argument97 : ["stringValue27887"]) { + field28275: Scalar2! + field28276: Scalar2 + field28277: Scalar2 + field28278: String! + field28279: String! + field28280: Enum1490 + field28281: [Object5869] + field28286: String + field28287: [Object5870] + field28294: String + field28295: String + field28296: String + field28297: String + field28298: String +} + +type Object5869 @Directive21(argument61 : "stringValue27891") @Directive44(argument97 : ["stringValue27890"]) { + field28282: Scalar2 + field28283: Scalar2 + field28284: String + field28285: Scalar2 +} + +type Object587 @Directive20(argument58 : "stringValue3051", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3050") @Directive31 @Directive44(argument97 : ["stringValue3052", "stringValue3053"]) { + field3229: [Object577] + field3230: Object578 +} + +type Object5870 @Directive21(argument61 : "stringValue27893") @Directive44(argument97 : ["stringValue27892"]) { + field28288: Scalar2 + field28289: Scalar2 + field28290: String + field28291: Boolean + field28292: String + field28293: String +} + +type Object5871 @Directive21(argument61 : "stringValue27901") @Directive44(argument97 : ["stringValue27900"]) { + field28300: Object5872 + field28310: String + field28311: Object5873 + field28320: Object5874 + field28327: Object5875 + field28334: Object5876 +} + +type Object5872 @Directive21(argument61 : "stringValue27903") @Directive44(argument97 : ["stringValue27902"]) { + field28301: Scalar2 + field28302: Scalar2 + field28303: String + field28304: String + field28305: Boolean + field28306: Scalar2 + field28307: Scalar2 + field28308: Scalar2 + field28309: Scalar2 +} + +type Object5873 @Directive21(argument61 : "stringValue27905") @Directive44(argument97 : ["stringValue27904"]) { + field28312: String + field28313: String + field28314: String + field28315: Scalar5 + field28316: String + field28317: Scalar2 + field28318: Scalar2 + field28319: Scalar2 +} + +type Object5874 @Directive21(argument61 : "stringValue27907") @Directive44(argument97 : ["stringValue27906"]) { + field28321: String + field28322: String + field28323: String + field28324: Scalar2 + field28325: Scalar2 + field28326: Scalar2 +} + +type Object5875 @Directive21(argument61 : "stringValue27909") @Directive44(argument97 : ["stringValue27908"]) { + field28328: String + field28329: String + field28330: String + field28331: Enum1491 + field28332: Scalar2 + field28333: Scalar2 +} + +type Object5876 @Directive21(argument61 : "stringValue27912") @Directive44(argument97 : ["stringValue27911"]) { + field28335: String + field28336: String +} + +type Object5877 @Directive21(argument61 : "stringValue27919") @Directive44(argument97 : ["stringValue27918"]) { + field28338: Object5873 +} + +type Object5878 @Directive21(argument61 : "stringValue27926") @Directive44(argument97 : ["stringValue27925"]) { + field28340: Object5874 +} + +type Object5879 @Directive21(argument61 : "stringValue27933") @Directive44(argument97 : ["stringValue27932"]) { + field28342: Object5880 +} + +type Object588 @Directive20(argument58 : "stringValue3055", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3054") @Directive31 @Directive44(argument97 : ["stringValue3056", "stringValue3057"]) { + field3233: Object589 + field3270: Object578 +} + +type Object5880 @Directive21(argument61 : "stringValue27935") @Directive44(argument97 : ["stringValue27934"]) { + field28343: Scalar2 + field28344: String + field28345: String + field28346: String + field28347: String + field28348: String + field28349: String + field28350: String + field28351: Scalar5 + field28352: Boolean + field28353: Boolean +} + +type Object5881 @Directive21(argument61 : "stringValue27941") @Directive44(argument97 : ["stringValue27940"]) { + field28355: Scalar2! +} + +type Object5882 @Directive21(argument61 : "stringValue27951") @Directive44(argument97 : ["stringValue27950"]) { + field28358: String + field28359: String +} + +type Object5883 @Directive21(argument61 : "stringValue27958") @Directive44(argument97 : ["stringValue27957"]) { + field28361: Boolean +} + +type Object5884 @Directive21(argument61 : "stringValue27965") @Directive44(argument97 : ["stringValue27964"]) { + field28363: Object5885! + field28388: Scalar5 +} + +type Object5885 @Directive21(argument61 : "stringValue27967") @Directive44(argument97 : ["stringValue27966"]) { + field28364: Scalar2 + field28365: Scalar2 + field28366: Scalar5 + field28367: Scalar5 + field28368: Boolean + field28369: String + field28370: Float + field28371: Float + field28372: String + field28373: String + field28374: String + field28375: String + field28376: String + field28377: String + field28378: String + field28379: String + field28380: String + field28381: Int + field28382: Int + field28383: String + field28384: Scalar5 + field28385: Scalar5 + field28386: String + field28387: Boolean +} + +type Object5886 @Directive21(argument61 : "stringValue27973") @Directive44(argument97 : ["stringValue27972"]) { + field28390: Object5887 + field28424: Object5889 + field28480: Object5894 + field28510: Object5896 + field28516: Object5863 + field28517: [String] +} + +type Object5887 @Directive21(argument61 : "stringValue27975") @Directive44(argument97 : ["stringValue27974"]) { + field28391: Scalar2! + field28392: [Object5888] + field28405: Object5863 + field28406: Scalar2 + field28407: Scalar2 + field28408: Scalar2 + field28409: Scalar2 + field28410: Scalar2 + field28411: Scalar5 + field28412: Scalar5! + field28413: String + field28414: String + field28415: String + field28416: String + field28417: String + field28418: String! + field28419: String! + field28420: String + field28421: String + field28422: String + field28423: String +} + +type Object5888 @Directive21(argument61 : "stringValue27977") @Directive44(argument97 : ["stringValue27976"]) { + field28393: Scalar2 + field28394: Scalar2 + field28395: Scalar4 + field28396: Scalar2 + field28397: Int + field28398: Scalar4 + field28399: Scalar4 + field28400: Scalar4 + field28401: Int + field28402: Scalar4 + field28403: String + field28404: Int +} + +type Object5889 @Directive21(argument61 : "stringValue27979") @Directive44(argument97 : ["stringValue27978"]) { + field28425: Scalar2 + field28426: String + field28427: String + field28428: String + field28429: String + field28430: String + field28431: Scalar2! + field28432: Scalar2! + field28433: String + field28434: String + field28435: String + field28436: String + field28437: String + field28438: String! + field28439: Scalar5! + field28440: Int + field28441: Object5863 + field28442: Scalar2 + field28443: Object5890 + field28476: Scalar5 + field28477: Scalar2 + field28478: Boolean + field28479: String +} + +type Object589 implements Interface6 @Directive12 @Directive20(argument58 : "stringValue3059", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue3058") @Directive31 @Directive44(argument97 : ["stringValue3060", "stringValue3061", "stringValue3062"]) @Directive45(argument98 : ["stringValue3063"]) { + field109: Interface3 + field3234: String! @Directive3(argument3 : "stringValue3064") @deprecated + field3235: Object478 + field3236: String + field3237: Object590 @Directive14(argument51 : "stringValue3065") + field3249: String + field3250: Boolean + field3251: String + field3252: [Object592!] + field3253: String @deprecated + field3254: String @deprecated + field3255: String @deprecated + field3256: String @deprecated + field3257: String @Directive17 + field3258: String @deprecated + field3259: String @deprecated + field3260: String @deprecated + field3261: String @deprecated + field3262: String @deprecated + field3263: String @deprecated + field3264: String @deprecated + field3265: String @deprecated + field3266: String @deprecated + field3267: String @deprecated + field3268: String @Directive3(argument3 : "stringValue3084") @deprecated + field3269: String @Directive3(argument3 : "stringValue3085") @deprecated + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +type Object5890 @Directive21(argument61 : "stringValue27981") @Directive44(argument97 : ["stringValue27980"]) { + field28444: Object5891 +} + +type Object5891 @Directive21(argument61 : "stringValue27983") @Directive44(argument97 : ["stringValue27982"]) { + field28445: Scalar2! + field28446: Scalar2! + field28447: String! + field28448: String + field28449: String + field28450: String + field28451: String + field28452: String + field28453: String + field28454: String + field28455: String + field28456: String + field28457: String + field28458: String + field28459: Scalar5 + field28460: Object5892 + field28464: Scalar5 + field28465: String + field28466: String + field28467: String + field28468: String + field28469: Object5893 +} + +type Object5892 @Directive21(argument61 : "stringValue27985") @Directive44(argument97 : ["stringValue27984"]) { + field28461: Int + field28462: Int + field28463: Int +} + +type Object5893 @Directive21(argument61 : "stringValue27987") @Directive44(argument97 : ["stringValue27986"]) { + field28470: Scalar2 + field28471: String + field28472: String + field28473: String + field28474: String + field28475: String +} + +type Object5894 @Directive21(argument61 : "stringValue27989") @Directive44(argument97 : ["stringValue27988"]) { + field28481: Scalar2! + field28482: Scalar2! + field28483: String + field28484: String! + field28485: String + field28486: String! + field28487: String + field28488: String! + field28489: String + field28490: String! + field28491: String! + field28492: String + field28493: Scalar4 + field28494: Scalar4 + field28495: Enum1492! + field28496: [Object5895] + field28501: Enum1494 + field28502: String + field28503: String + field28504: Object5892 + field28505: String + field28506: Scalar4 + field28507: String + field28508: String + field28509: String +} + +type Object5895 @Directive21(argument61 : "stringValue27992") @Directive44(argument97 : ["stringValue27991"]) { + field28497: Scalar2 + field28498: Scalar2 + field28499: String + field28500: Enum1493 +} + +type Object5896 @Directive21(argument61 : "stringValue27996") @Directive44(argument97 : ["stringValue27995"]) { + field28511: Scalar2! + field28512: Scalar2! + field28513: String + field28514: String + field28515: Boolean +} + +type Object5897 @Directive21(argument61 : "stringValue28002") @Directive44(argument97 : ["stringValue28001"]) { + field28519: Object5898 + field28525: [String] +} + +type Object5898 @Directive21(argument61 : "stringValue28004") @Directive44(argument97 : ["stringValue28003"]) { + field28520: Object5887 + field28521: Object5889 + field28522: Object5896 + field28523: Scalar2 + field28524: Object5893 +} + +type Object5899 @Directive21(argument61 : "stringValue28016") @Directive44(argument97 : ["stringValue28015"]) { + field28528: Object5861 + field28529: Object5857 + field28530: Boolean + field28531: Object5858 + field28532: Object5866 +} + +type Object59 @Directive21(argument61 : "stringValue272") @Directive44(argument97 : ["stringValue271"]) { + field359: String + field360: Boolean + field361: Scalar2 + field362: Boolean + field363: String + field364: String + field365: String + field366: Scalar4 +} + +type Object590 @Directive22(argument62 : "stringValue3066") @Directive31 @Directive44(argument97 : ["stringValue3067", "stringValue3068"]) { + field3238: Object591 + field3247: Object594 +} + +type Object5900 @Directive21(argument61 : "stringValue28028") @Directive44(argument97 : ["stringValue28027"]) { + field28534: Object5863! + field28535: Scalar5 + field28536: Object5889 + field28537: Object5893 + field28538: Object5887 +} + +type Object5901 @Directive21(argument61 : "stringValue28035") @Directive44(argument97 : ["stringValue28034"]) { + field28540: Object5902 +} + +type Object5902 @Directive21(argument61 : "stringValue28037") @Directive44(argument97 : ["stringValue28036"]) { + field28541: Scalar2 + field28542: Scalar2 + field28543: Boolean + field28544: String + field28545: String + field28546: String + field28547: String + field28548: String + field28549: String + field28550: String + field28551: Scalar2 + field28552: String + field28553: String + field28554: String + field28555: Scalar2 + field28556: Scalar2 +} + +type Object5903 @Directive21(argument61 : "stringValue28051") @Directive44(argument97 : ["stringValue28050"]) { + field28559: Scalar2! + field28560: Enum1495! + field28561: Scalar2! + field28562: Object5904! + field28569: [Object5905]! + field28575: String + field28576: [Object5906] + field28579: String! + field28580: String! +} + +type Object5904 @Directive21(argument61 : "stringValue28053") @Directive44(argument97 : ["stringValue28052"]) { + field28563: Scalar2! + field28564: String! + field28565: String! + field28566: Enum1495! + field28567: String! + field28568: String! +} + +type Object5905 @Directive21(argument61 : "stringValue28055") @Directive44(argument97 : ["stringValue28054"]) { + field28570: Scalar2! + field28571: Scalar2! + field28572: String! + field28573: String! + field28574: String! +} + +type Object5906 @Directive21(argument61 : "stringValue28057") @Directive44(argument97 : ["stringValue28056"]) { + field28577: Enum1496! + field28578: String! +} + +type Object5907 @Directive21(argument61 : "stringValue28063") @Directive44(argument97 : ["stringValue28062"]) { + field28582: Boolean +} + +type Object5908 @Directive21(argument61 : "stringValue28069") @Directive44(argument97 : ["stringValue28068"]) { + field28584: Object5893 + field28585: [Object5863] + field28586: [Object5909] + field28602: Object5910 + field28614: Object5910 +} + +type Object5909 @Directive21(argument61 : "stringValue28071") @Directive44(argument97 : ["stringValue28070"]) { + field28587: Scalar2 + field28588: String + field28589: String + field28590: Scalar4 + field28591: [Enum1497] + field28592: Enum1498 + field28593: String + field28594: String + field28595: String + field28596: String + field28597: String + field28598: String + field28599: Scalar2 + field28600: Scalar2 + field28601: Scalar2 +} + +type Object591 @Directive22(argument62 : "stringValue3069") @Directive31 @Directive44(argument97 : ["stringValue3070", "stringValue3071"]) { + field3239: String + field3240: [Object592!] + field3246: [Object592!] +} + +type Object5910 @Directive21(argument61 : "stringValue28075") @Directive44(argument97 : ["stringValue28074"]) { + field28603: [Object5911]! + field28613: Scalar2! +} + +type Object5911 @Directive21(argument61 : "stringValue28077") @Directive44(argument97 : ["stringValue28076"]) { + field28604: String! + field28605: Scalar2 + field28606: String + field28607: Scalar4! + field28608: String + field28609: Scalar2 + field28610: Scalar2 + field28611: String + field28612: String +} + +type Object5912 @Directive21(argument61 : "stringValue28083") @Directive44(argument97 : ["stringValue28082"]) { + field28616: String +} + +type Object5913 @Directive21(argument61 : "stringValue28092") @Directive44(argument97 : ["stringValue28091"]) { + field28619: String +} + +type Object5914 @Directive21(argument61 : "stringValue28098") @Directive44(argument97 : ["stringValue28097"]) { + field28621: Boolean! +} + +type Object5915 @Directive21(argument61 : "stringValue28108") @Directive44(argument97 : ["stringValue28107"]) { + field28624: Scalar1! +} + +type Object5916 @Directive21(argument61 : "stringValue28135") @Directive44(argument97 : ["stringValue28134"]) { + field28632: Object5889 +} + +type Object5917 @Directive21(argument61 : "stringValue28155") @Directive44(argument97 : ["stringValue28154"]) { + field28638: Object5864 +} + +type Object5918 @Directive21(argument61 : "stringValue28166") @Directive44(argument97 : ["stringValue28165"]) { + field28641: Boolean! + field28642: String +} + +type Object5919 @Directive44(argument97 : ["stringValue28171"]) { + field28645(argument1445: InputObject1281!): Object5920 @Directive35(argument89 : "stringValue28173", argument90 : true, argument91 : "stringValue28172", argument92 : 449, argument93 : "stringValue28174", argument94 : true) +} + +type Object592 @Directive20(argument58 : "stringValue3073", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3072") @Directive31 @Directive44(argument97 : ["stringValue3074", "stringValue3075"]) { + field3241: String + field3242: Object593 @Directive13(argument49 : "stringValue3076") + field3245: [Object593!] @deprecated +} + +type Object5920 @Directive21(argument61 : "stringValue28177") @Directive44(argument97 : ["stringValue28176"]) { + field28646: String + field28647: String + field28648: [String]! + field28649: String + field28650: String + field28651: String! + field28652: String! + field28653: [Object5921!] + field28656: String @deprecated + field28657: Boolean @deprecated +} + +type Object5921 @Directive21(argument61 : "stringValue28179") @Directive44(argument97 : ["stringValue28178"]) { + field28654: String! + field28655: String! +} + +type Object5922 @Directive44(argument97 : ["stringValue28180"]) { + field28659(argument1446: InputObject1282!): Object5923 @Directive35(argument89 : "stringValue28182", argument90 : true, argument91 : "stringValue28181", argument92 : 450, argument93 : "stringValue28183", argument94 : false) + field28661(argument1447: InputObject1283!): Object5924 @Directive35(argument89 : "stringValue28188", argument90 : true, argument91 : "stringValue28187", argument92 : 451, argument93 : "stringValue28189", argument94 : false) + field28663(argument1448: InputObject1286!): Object5925 @Directive35(argument89 : "stringValue28198", argument90 : true, argument91 : "stringValue28197", argument92 : 452, argument93 : "stringValue28199", argument94 : false) + field28724(argument1449: InputObject1287!): Object5936 @Directive35(argument89 : "stringValue28232", argument90 : true, argument91 : "stringValue28231", argument93 : "stringValue28233", argument94 : false) + field28727(argument1450: InputObject1287!): Object5937 @Directive35(argument89 : "stringValue28247", argument90 : true, argument91 : "stringValue28246", argument92 : 453, argument93 : "stringValue28248", argument94 : false) + field28729(argument1451: InputObject1297!): Object5938 @Directive35(argument89 : "stringValue28252", argument90 : true, argument91 : "stringValue28251", argument92 : 454, argument93 : "stringValue28253", argument94 : false) +} + +type Object5923 @Directive21(argument61 : "stringValue28186") @Directive44(argument97 : ["stringValue28185"]) { + field28660: Boolean! +} + +type Object5924 @Directive21(argument61 : "stringValue28196") @Directive44(argument97 : ["stringValue28195"]) { + field28662: Boolean! +} + +type Object5925 @Directive21(argument61 : "stringValue28202") @Directive44(argument97 : ["stringValue28201"]) { + field28664: Object5926! +} + +type Object5926 @Directive21(argument61 : "stringValue28204") @Directive44(argument97 : ["stringValue28203"]) { + field28665: Scalar2! + field28666: [Object5927!] + field28700: Object5934 + field28721: Int! + field28722: Enum1509! + field28723: Enum1510 +} + +type Object5927 @Directive21(argument61 : "stringValue28206") @Directive44(argument97 : ["stringValue28205"]) { + field28667: Object5928 + field28670: Object5929! + field28694: [Object5933!]! + field28699: Scalar4 +} + +type Object5928 @Directive21(argument61 : "stringValue28208") @Directive44(argument97 : ["stringValue28207"]) { + field28668: String! + field28669: Int +} + +type Object5929 @Directive21(argument61 : "stringValue28210") @Directive44(argument97 : ["stringValue28209"]) { + field28671: Enum1503! + field28672: String! + field28673: Object5930! + field28678: Scalar3 + field28679: String + field28680: String + field28681: String + field28682: String + field28683: Object5932 + field28691: String @deprecated + field28692: String + field28693: Enum1504 +} + +type Object593 @Directive20(argument58 : "stringValue3078", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3077") @Directive31 @Directive44(argument97 : ["stringValue3079", "stringValue3080"]) { + field3243: String + field3244: String +} + +type Object5930 @Directive21(argument61 : "stringValue28213") @Directive44(argument97 : ["stringValue28212"]) { + field28674: Object5931 + field28677: String +} + +type Object5931 @Directive21(argument61 : "stringValue28215") @Directive44(argument97 : ["stringValue28214"]) { + field28675: String + field28676: String +} + +type Object5932 @Directive21(argument61 : "stringValue28217") @Directive44(argument97 : ["stringValue28216"]) { + field28684: String + field28685: String + field28686: String + field28687: String + field28688: String + field28689: String + field28690: String +} + +type Object5933 @Directive21(argument61 : "stringValue28220") @Directive44(argument97 : ["stringValue28219"]) { + field28695: String + field28696: Enum1505! + field28697: Float + field28698: Scalar4 +} + +type Object5934 @Directive21(argument61 : "stringValue28223") @Directive44(argument97 : ["stringValue28222"]) { + field28701: Object5935! + field28720: Object5928 +} + +type Object5935 @Directive21(argument61 : "stringValue28225") @Directive44(argument97 : ["stringValue28224"]) { + field28702: Enum1506! + field28703: String! + field28704: Enum1507! + field28705: String + field28706: String @deprecated + field28707: String + field28708: Scalar3 + field28709: String + field28710: String + field28711: Object5932 + field28712: Boolean + field28713: Object5932 + field28714: String + field28715: String + field28716: String + field28717: String + field28718: Enum1508 + field28719: Boolean +} + +type Object5936 @Directive21(argument61 : "stringValue28245") @Directive44(argument97 : ["stringValue28244"]) { + field28725: [String!] + field28726: Int! +} + +type Object5937 @Directive21(argument61 : "stringValue28250") @Directive44(argument97 : ["stringValue28249"]) { + field28728: Object5926! +} + +type Object5938 @Directive21(argument61 : "stringValue28256") @Directive44(argument97 : ["stringValue28255"]) { + field28730: Boolean! +} + +type Object5939 @Directive44(argument97 : ["stringValue28257"]) { + field28732(argument1452: InputObject1298!): Object5940 @Directive35(argument89 : "stringValue28259", argument90 : true, argument91 : "stringValue28258", argument92 : 455, argument93 : "stringValue28260", argument94 : false) + field28747(argument1453: InputObject1299!): Object5945 @Directive35(argument89 : "stringValue28273", argument90 : true, argument91 : "stringValue28272", argument92 : 456, argument93 : "stringValue28274", argument94 : false) + field28750(argument1454: InputObject1300!): Object5946 @Directive35(argument89 : "stringValue28280", argument90 : true, argument91 : "stringValue28279", argument92 : 457, argument93 : "stringValue28281", argument94 : false) + field28752(argument1455: InputObject1302!): Object5947 @Directive35(argument89 : "stringValue28287", argument90 : true, argument91 : "stringValue28286", argument92 : 458, argument93 : "stringValue28288", argument94 : false) + field28754(argument1456: InputObject1303!): Object5948 @Directive35(argument89 : "stringValue28294", argument90 : true, argument91 : "stringValue28293", argument92 : 459, argument93 : "stringValue28295", argument94 : false) +} + +type Object594 @Directive22(argument62 : "stringValue3081") @Directive31 @Directive44(argument97 : ["stringValue3082", "stringValue3083"]) { + field3248: String +} + +type Object5940 @Directive21(argument61 : "stringValue28263") @Directive44(argument97 : ["stringValue28262"]) { + field28733: Object5941 + field28746: Scalar2! +} + +type Object5941 @Directive21(argument61 : "stringValue28265") @Directive44(argument97 : ["stringValue28264"]) { + field28734: Object5942 + field28745: String +} + +type Object5942 @Directive21(argument61 : "stringValue28267") @Directive44(argument97 : ["stringValue28266"]) { + field28735: String + field28736: String + field28737: String + field28738: [Object5943] + field28741: Object5944 +} + +type Object5943 @Directive21(argument61 : "stringValue28269") @Directive44(argument97 : ["stringValue28268"]) { + field28739: String! + field28740: String! +} + +type Object5944 @Directive21(argument61 : "stringValue28271") @Directive44(argument97 : ["stringValue28270"]) { + field28742: String! + field28743: String + field28744: String +} + +type Object5945 @Directive21(argument61 : "stringValue28278") @Directive44(argument97 : ["stringValue28277"]) { + field28748: Object5941 + field28749: Scalar2 +} + +type Object5946 @Directive21(argument61 : "stringValue28285") @Directive44(argument97 : ["stringValue28284"]) { + field28751: Boolean +} + +type Object5947 @Directive21(argument61 : "stringValue28292") @Directive44(argument97 : ["stringValue28291"]) { + field28753: Enum1512! +} + +type Object5948 @Directive21(argument61 : "stringValue28298") @Directive44(argument97 : ["stringValue28297"]) { + field28755: Scalar2! +} + +type Object5949 @Directive44(argument97 : ["stringValue28299"]) { + field28757(argument1457: InputObject1304!): Object5950 @Directive35(argument89 : "stringValue28301", argument90 : true, argument91 : "stringValue28300", argument92 : 460, argument93 : "stringValue28302", argument94 : false) + field28761(argument1458: InputObject1306!): Object5952 @Directive35(argument89 : "stringValue28310", argument90 : true, argument91 : "stringValue28309", argument92 : 461, argument93 : "stringValue28311", argument94 : false) + field28768(argument1459: InputObject1307!): Object5954 @Directive35(argument89 : "stringValue28318", argument90 : true, argument91 : "stringValue28317", argument92 : 462, argument93 : "stringValue28319", argument94 : false) + field28805(argument1460: InputObject1308!): Object5962 @Directive35(argument89 : "stringValue28338", argument90 : true, argument91 : "stringValue28337", argument92 : 463, argument93 : "stringValue28339", argument94 : false) + field28810: Object5964 @Directive35(argument89 : "stringValue28346", argument90 : true, argument91 : "stringValue28345", argument92 : 464, argument93 : "stringValue28347", argument94 : false) + field28814(argument1461: InputObject1309!): Object5966 @Directive35(argument89 : "stringValue28353", argument90 : true, argument91 : "stringValue28352", argument92 : 465, argument93 : "stringValue28354", argument94 : false) + field28816(argument1462: InputObject1310!): Object5967 @Directive35(argument89 : "stringValue28359", argument90 : true, argument91 : "stringValue28358", argument92 : 466, argument93 : "stringValue28360", argument94 : false) + field28818(argument1463: InputObject1311!): Object5968 @Directive35(argument89 : "stringValue28365", argument90 : true, argument91 : "stringValue28364", argument92 : 467, argument93 : "stringValue28366", argument94 : false) + field28820(argument1464: InputObject1312!): Object5969 @Directive35(argument89 : "stringValue28371", argument90 : true, argument91 : "stringValue28370", argument92 : 468, argument93 : "stringValue28372", argument94 : false) +} + +type Object595 @Directive20(argument58 : "stringValue3087", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3086") @Directive31 @Directive44(argument97 : ["stringValue3088", "stringValue3089"]) { + field3275: String + field3276: Object450 +} + +type Object5950 @Directive21(argument61 : "stringValue28306") @Directive44(argument97 : ["stringValue28305"]) { + field28758: Object5951! +} + +type Object5951 @Directive21(argument61 : "stringValue28308") @Directive44(argument97 : ["stringValue28307"]) { + field28759: String! + field28760: String! +} + +type Object5952 @Directive21(argument61 : "stringValue28314") @Directive44(argument97 : ["stringValue28313"]) { + field28762: Object5953! +} + +type Object5953 @Directive21(argument61 : "stringValue28316") @Directive44(argument97 : ["stringValue28315"]) { + field28763: String! + field28764: String! + field28765: Scalar2! + field28766: String + field28767: Scalar2 +} + +type Object5954 @Directive21(argument61 : "stringValue28322") @Directive44(argument97 : ["stringValue28321"]) { + field28769: Object5955! +} + +type Object5955 @Directive21(argument61 : "stringValue28324") @Directive44(argument97 : ["stringValue28323"]) { + field28770: String! + field28771: String! + field28772: String! + field28773: String + field28774: Scalar2 + field28775: String! + field28776: Scalar1 + field28777: Scalar2 + field28778: Scalar2 + field28779: Object5956 + field28789: Scalar1 + field28790: Scalar1 + field28791: String + field28792: Scalar2 @deprecated + field28793: Boolean! + field28794: Object5959 + field28798: Scalar2 + field28799: Scalar1 + field28800: Object5960 +} + +type Object5956 @Directive21(argument61 : "stringValue28326") @Directive44(argument97 : ["stringValue28325"]) { + field28780: Object5957 +} + +type Object5957 @Directive21(argument61 : "stringValue28328") @Directive44(argument97 : ["stringValue28327"]) { + field28781: Scalar4 + field28782: Object5958 + field28784: Scalar2 + field28785: Scalar2! + field28786: String + field28787: String + field28788: Boolean +} + +type Object5958 @Directive21(argument61 : "stringValue28330") @Directive44(argument97 : ["stringValue28329"]) { + field28783: Scalar2 +} + +type Object5959 @Directive21(argument61 : "stringValue28332") @Directive44(argument97 : ["stringValue28331"]) { + field28795: String! + field28796: Scalar1! + field28797: Scalar1 +} + +type Object596 @Directive20(argument58 : "stringValue3091", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3090") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue3092", "stringValue3093"]) { + field3278: Object595 @Directive30(argument80 : true) @Directive41 + field3279: Object597 @Directive30(argument80 : true) @Directive41 + field3282: Object598 @Directive30(argument80 : true) @Directive41 + field3283: Object585 @Directive30(argument80 : true) @Directive41 + field3284: Object585 @Directive30(argument80 : true) @Directive41 +} + +type Object5960 @Directive21(argument61 : "stringValue28334") @Directive44(argument97 : ["stringValue28333"]) { + field28801: [Object5961]! + field28804: String! +} + +type Object5961 @Directive21(argument61 : "stringValue28336") @Directive44(argument97 : ["stringValue28335"]) { + field28802: String! + field28803: String +} + +type Object5962 @Directive21(argument61 : "stringValue28342") @Directive44(argument97 : ["stringValue28341"]) { + field28806: Object5963! +} + +type Object5963 @Directive21(argument61 : "stringValue28344") @Directive44(argument97 : ["stringValue28343"]) { + field28807: Scalar2! + field28808: String! + field28809: String! +} + +type Object5964 @Directive21(argument61 : "stringValue28349") @Directive44(argument97 : ["stringValue28348"]) { + field28811: Object5965! +} + +type Object5965 @Directive21(argument61 : "stringValue28351") @Directive44(argument97 : ["stringValue28350"]) { + field28812: String! + field28813: String! +} + +type Object5966 @Directive21(argument61 : "stringValue28357") @Directive44(argument97 : ["stringValue28356"]) { + field28815: String! +} + +type Object5967 @Directive21(argument61 : "stringValue28363") @Directive44(argument97 : ["stringValue28362"]) { + field28817: Object5963 +} + +type Object5968 @Directive21(argument61 : "stringValue28369") @Directive44(argument97 : ["stringValue28368"]) { + field28819: Object5963! +} + +type Object5969 @Directive21(argument61 : "stringValue28375") @Directive44(argument97 : ["stringValue28374"]) { + field28821: Boolean! +} + +type Object597 @Directive20(argument58 : "stringValue3095", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3094") @Directive31 @Directive44(argument97 : ["stringValue3096", "stringValue3097"]) { + field3280: Object10 + field3281: Object581 +} + +type Object5970 @Directive44(argument97 : ["stringValue28376"]) { + field28823(argument1465: InputObject1313!): Object5971 @Directive35(argument89 : "stringValue28378", argument90 : true, argument91 : "stringValue28377", argument92 : 469, argument93 : "stringValue28379", argument94 : false) + field28826(argument1466: InputObject1314!): Object5972 @Directive35(argument89 : "stringValue28384", argument90 : true, argument91 : "stringValue28383", argument92 : 470, argument93 : "stringValue28385", argument94 : false) + field28898(argument1467: InputObject1322!): Object5981 @Directive35(argument89 : "stringValue28421", argument90 : true, argument91 : "stringValue28420", argument92 : 471, argument93 : "stringValue28422", argument94 : false) + field28901(argument1468: InputObject1324!): Object5982 @Directive35(argument89 : "stringValue28429", argument90 : true, argument91 : "stringValue28428", argument92 : 472, argument93 : "stringValue28430", argument94 : false) + field28904(argument1469: InputObject1325!): Object5983 @Directive35(argument89 : "stringValue28435", argument90 : true, argument91 : "stringValue28434", argument92 : 473, argument93 : "stringValue28436", argument94 : false) + field28910(argument1470: InputObject1329!): Object5985 @Directive35(argument89 : "stringValue28447", argument90 : true, argument91 : "stringValue28446", argument92 : 474, argument93 : "stringValue28448", argument94 : false) + field28912(argument1471: InputObject1331!): Object5986 @Directive35(argument89 : "stringValue28454", argument90 : true, argument91 : "stringValue28453", argument92 : 475, argument93 : "stringValue28455", argument94 : false) + field28914(argument1472: InputObject1332!): Object5987 @Directive35(argument89 : "stringValue28460", argument90 : true, argument91 : "stringValue28459", argument92 : 476, argument93 : "stringValue28461", argument94 : false) + field28916(argument1473: InputObject1334!): Object5988 @Directive35(argument89 : "stringValue28467", argument90 : true, argument91 : "stringValue28466", argument92 : 477, argument93 : "stringValue28468", argument94 : false) +} + +type Object5971 @Directive21(argument61 : "stringValue28382") @Directive44(argument97 : ["stringValue28381"]) { + field28824: Boolean @deprecated + field28825: [String] +} + +type Object5972 @Directive21(argument61 : "stringValue28403") @Directive44(argument97 : ["stringValue28402"]) { + field28827: [Object5973]! + field28894: [Object5980] +} + +type Object5973 @Directive21(argument61 : "stringValue28405") @Directive44(argument97 : ["stringValue28404"]) { + field28828: String! + field28829: Enum1513! + field28830: Scalar2 + field28831: Scalar2! + field28832: Scalar3 + field28833: Scalar3 + field28834: Scalar4 + field28835: Float + field28836: Scalar4 + field28837: Scalar2 + field28838: Scalar2 + field28839: Scalar3 + field28840: Float + field28841: String + field28842: Boolean + field28843: Scalar2 + field28844: Scalar2 + field28845: Scalar4 + field28846: Scalar2 + field28847: Scalar2 + field28848: Enum1514 + field28849: [Object5974] + field28855: Object5976 + field28891: Enum1520 + field28892: Object5979 +} + +type Object5974 @Directive21(argument61 : "stringValue28407") @Directive44(argument97 : ["stringValue28406"]) { + field28850: Object5975! + field28854: Scalar3! +} + +type Object5975 @Directive21(argument61 : "stringValue28409") @Directive44(argument97 : ["stringValue28408"]) { + field28851: Float! + field28852: String! + field28853: Scalar2 +} + +type Object5976 @Directive21(argument61 : "stringValue28411") @Directive44(argument97 : ["stringValue28410"]) { + field28856: String + field28857: String + field28858: String + field28859: Boolean + field28860: Enum1515 + field28861: Scalar4 + field28862: Scalar4 + field28863: Scalar4 + field28864: Scalar4 + field28865: Float + field28866: Scalar1 + field28867: Scalar2 + field28868: Object5977 + field28877: Scalar2 + field28878: Boolean + field28879: [Object5978] + field28883: Enum1513 + field28884: Enum1519 + field28885: Scalar4 + field28886: Scalar4 + field28887: Scalar4 + field28888: String + field28889: String + field28890: String +} + +type Object5977 @Directive21(argument61 : "stringValue28413") @Directive44(argument97 : ["stringValue28412"]) { + field28869: String! + field28870: String + field28871: String + field28872: Enum1516 + field28873: Boolean + field28874: Scalar2 + field28875: Boolean + field28876: [Object5976] +} + +type Object5978 @Directive21(argument61 : "stringValue28415") @Directive44(argument97 : ["stringValue28414"]) { + field28880: Enum1517! + field28881: [String] + field28882: Enum1518 +} + +type Object5979 @Directive21(argument61 : "stringValue28417") @Directive44(argument97 : ["stringValue28416"]) { + field28893: Scalar1! +} + +type Object598 implements Interface48 @Directive20(argument58 : "stringValue3099", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3098") @Directive31 @Directive44(argument97 : ["stringValue3100", "stringValue3101"]) { + field3197: Object579 + field3200: Object580 + field3203: Object581 + field3210: Object583 +} + +type Object5980 @Directive21(argument61 : "stringValue28419") @Directive44(argument97 : ["stringValue28418"]) { + field28895: String + field28896: String + field28897: String +} + +type Object5981 @Directive21(argument61 : "stringValue28427") @Directive44(argument97 : ["stringValue28426"]) { + field28899: [Object5973]! + field28900: [Object5980] +} + +type Object5982 @Directive21(argument61 : "stringValue28433") @Directive44(argument97 : ["stringValue28432"]) { + field28902: Boolean + field28903: [String] +} + +type Object5983 @Directive21(argument61 : "stringValue28443") @Directive44(argument97 : ["stringValue28442"]) { + field28905: Boolean! + field28906: [Object5984]! +} + +type Object5984 @Directive21(argument61 : "stringValue28445") @Directive44(argument97 : ["stringValue28444"]) { + field28907: Scalar2! + field28908: Enum1522! + field28909: String +} + +type Object5985 @Directive21(argument61 : "stringValue28452") @Directive44(argument97 : ["stringValue28451"]) { + field28911: Boolean +} + +type Object5986 @Directive21(argument61 : "stringValue28458") @Directive44(argument97 : ["stringValue28457"]) { + field28913: Boolean +} + +type Object5987 @Directive21(argument61 : "stringValue28465") @Directive44(argument97 : ["stringValue28464"]) { + field28915: Scalar1 +} + +type Object5988 @Directive21(argument61 : "stringValue28471") @Directive44(argument97 : ["stringValue28470"]) { + field28917: [Object5973]! + field28918: [Object5980] +} + +type Object5989 @Directive44(argument97 : ["stringValue28472"]) { + field28920(argument1474: InputObject1335!): Object5990 @Directive35(argument89 : "stringValue28474", argument90 : false, argument91 : "stringValue28473", argument92 : 478, argument93 : "stringValue28475", argument94 : true) + field28950(argument1475: InputObject1336!): Object5994 @Directive35(argument89 : "stringValue28488", argument90 : false, argument91 : "stringValue28487", argument92 : 479, argument93 : "stringValue28489", argument94 : true) + field28953(argument1476: InputObject1337!): Object5995 @Directive35(argument89 : "stringValue28494", argument90 : false, argument91 : "stringValue28493", argument92 : 480, argument93 : "stringValue28495", argument94 : true) + field28955(argument1477: InputObject1338!): Object5996 @Directive35(argument89 : "stringValue28500", argument90 : false, argument91 : "stringValue28499", argument92 : 481, argument93 : "stringValue28501", argument94 : true) + field28958(argument1478: InputObject1339!): Object5997 @Directive35(argument89 : "stringValue28507", argument90 : true, argument91 : "stringValue28506", argument92 : 482, argument93 : "stringValue28508", argument94 : true) + field28964(argument1479: InputObject1341!): Object5999 @Directive35(argument89 : "stringValue28518", argument90 : true, argument91 : "stringValue28517", argument92 : 483, argument93 : "stringValue28519", argument94 : true) +} + +type Object599 @Directive22(argument62 : "stringValue3102") @Directive31 @Directive44(argument97 : ["stringValue3103", "stringValue3104"]) { + field3291: Object452 + field3292: String + field3293: Scalar2 + field3294: Scalar2 + field3295: String +} + +type Object5990 @Directive21(argument61 : "stringValue28479") @Directive44(argument97 : ["stringValue28478"]) { + field28921: Object5991 +} + +type Object5991 @Directive21(argument61 : "stringValue28481") @Directive44(argument97 : ["stringValue28480"]) { + field28922: Scalar2 + field28923: Enum1523 + field28924: [Object5992] + field28944: String + field28945: Scalar4 + field28946: Scalar4 + field28947: Scalar4 + field28948: String + field28949: String +} + +type Object5992 @Directive21(argument61 : "stringValue28483") @Directive44(argument97 : ["stringValue28482"]) { + field28925: Scalar2 + field28926: Enum1524 + field28927: String + field28928: Scalar4 + field28929: [Object5993] + field28941: Scalar4 + field28942: Scalar4 + field28943: String +} + +type Object5993 @Directive21(argument61 : "stringValue28486") @Directive44(argument97 : ["stringValue28485"]) { + field28930: Scalar2 + field28931: Enum1524 + field28932: String + field28933: String + field28934: Scalar4 + field28935: String + field28936: Scalar4 + field28937: Scalar4 + field28938: String + field28939: String + field28940: String +} + +type Object5994 @Directive21(argument61 : "stringValue28492") @Directive44(argument97 : ["stringValue28491"]) { + field28951: Boolean! + field28952: String +} + +type Object5995 @Directive21(argument61 : "stringValue28498") @Directive44(argument97 : ["stringValue28497"]) { + field28954: Scalar2 +} + +type Object5996 @Directive21(argument61 : "stringValue28505") @Directive44(argument97 : ["stringValue28504"]) { + field28956: Boolean + field28957: String +} + +type Object5997 @Directive21(argument61 : "stringValue28513") @Directive44(argument97 : ["stringValue28512"]) { + field28959: Scalar2 + field28960: Scalar2 + field28961: Object5998 +} + +type Object5998 @Directive21(argument61 : "stringValue28515") @Directive44(argument97 : ["stringValue28514"]) { + field28962: Enum1527! + field28963: String! +} + +type Object5999 @Directive21(argument61 : "stringValue28529") @Directive44(argument97 : ["stringValue28528"]) { + field28965: Boolean + field28966: String +} + +type Object6 @Directive20(argument58 : "stringValue40", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue39") @Directive31 @Directive44(argument97 : ["stringValue41", "stringValue42"]) { + field45: String + field46: String +} + +type Object60 @Directive21(argument61 : "stringValue274") @Directive44(argument97 : ["stringValue273"]) { + field373: String + field374: String + field375: Boolean + field376: String + field377: String + field378: String +} + +type Object600 @Directive22(argument62 : "stringValue3105") @Directive31 @Directive44(argument97 : ["stringValue3106", "stringValue3107"]) { + field3297: Enum193 + field3298: String + field3299: Enum194! +} + +type Object6000 @Directive44(argument97 : ["stringValue28530"]) { + field28968(argument1480: InputObject1348!): Object6001 @Directive35(argument89 : "stringValue28532", argument90 : true, argument91 : "stringValue28531", argument92 : 484, argument93 : "stringValue28533", argument94 : true) + field28971(argument1481: InputObject1349!): Object6002 @Directive35(argument89 : "stringValue28538", argument90 : true, argument91 : "stringValue28537", argument93 : "stringValue28539", argument94 : true) + field28973(argument1482: InputObject1350!): Object6003 @Directive35(argument89 : "stringValue28544", argument90 : true, argument91 : "stringValue28543", argument92 : 485, argument93 : "stringValue28545", argument94 : true) + field28986(argument1483: InputObject1352!): Object6005 @Directive35(argument89 : "stringValue28555", argument90 : false, argument91 : "stringValue28554", argument92 : 486, argument93 : "stringValue28556", argument94 : true) +} + +type Object6001 @Directive21(argument61 : "stringValue28536") @Directive44(argument97 : ["stringValue28535"]) { + field28969: Scalar2 + field28970: Scalar2 +} + +type Object6002 @Directive21(argument61 : "stringValue28542") @Directive44(argument97 : ["stringValue28541"]) { + field28972: Boolean +} + +type Object6003 @Directive21(argument61 : "stringValue28551") @Directive44(argument97 : ["stringValue28550"]) { + field28974: [Object6004] +} + +type Object6004 @Directive21(argument61 : "stringValue28553") @Directive44(argument97 : ["stringValue28552"]) { + field28975: Scalar2! + field28976: Scalar4 + field28977: Scalar4 + field28978: Scalar4 + field28979: Scalar4 + field28980: Scalar2 + field28981: Boolean + field28982: Scalar2 + field28983: Scalar4 + field28984: Enum1529 + field28985: Scalar4 +} + +type Object6005 @Directive21(argument61 : "stringValue28561") @Directive44(argument97 : ["stringValue28560"]) { + field28987: Scalar2 + field28988: Scalar2 +} + +type Object6006 @Directive44(argument97 : ["stringValue28562"]) { + field28990(argument1484: InputObject1354!): Object6007 @Directive35(argument89 : "stringValue28564", argument90 : true, argument91 : "stringValue28563", argument92 : 487, argument93 : "stringValue28565", argument94 : false) + field28992(argument1485: InputObject1355!): Object6008 @Directive35(argument89 : "stringValue28571", argument90 : true, argument91 : "stringValue28570", argument92 : 488, argument93 : "stringValue28572", argument94 : false) + field28994(argument1486: InputObject1356!): Object6009 @Directive35(argument89 : "stringValue28578", argument90 : true, argument91 : "stringValue28577", argument92 : 489, argument93 : "stringValue28579", argument94 : false) + field28996(argument1487: InputObject1358!): Object6010 @Directive35(argument89 : "stringValue28587", argument90 : true, argument91 : "stringValue28586", argument92 : 490, argument93 : "stringValue28588", argument94 : false) + field28998(argument1488: InputObject1359!): Object6011 @Directive35(argument89 : "stringValue28593", argument90 : true, argument91 : "stringValue28592", argument92 : 491, argument93 : "stringValue28594", argument94 : false) + field29010(argument1489: InputObject1361!): Object6014 @Directive35(argument89 : "stringValue28605", argument90 : true, argument91 : "stringValue28604", argument92 : 492, argument93 : "stringValue28606", argument94 : false) + field29443(argument1490: InputObject1361!): Object6014 @Directive35(argument89 : "stringValue28895", argument90 : true, argument91 : "stringValue28894", argument92 : 493, argument93 : "stringValue28896", argument94 : false) + field29444(argument1491: InputObject1375!): Object6121 @Directive35(argument89 : "stringValue28898", argument90 : true, argument91 : "stringValue28897", argument92 : 494, argument93 : "stringValue28899", argument94 : false) + field29446(argument1492: InputObject1376!): Object6122 @Directive35(argument89 : "stringValue28904", argument90 : true, argument91 : "stringValue28903", argument92 : 495, argument93 : "stringValue28905", argument94 : false) + field29448(argument1493: InputObject1377!): Object6123 @Directive35(argument89 : "stringValue28910", argument90 : true, argument91 : "stringValue28909", argument92 : 496, argument93 : "stringValue28911", argument94 : false) +} + +type Object6007 @Directive21(argument61 : "stringValue28569") @Directive44(argument97 : ["stringValue28568"]) { + field28991: Boolean! +} + +type Object6008 @Directive21(argument61 : "stringValue28576") @Directive44(argument97 : ["stringValue28575"]) { + field28993: Scalar2! +} + +type Object6009 @Directive21(argument61 : "stringValue28585") @Directive44(argument97 : ["stringValue28584"]) { + field28995: Boolean! +} + +type Object601 implements Interface49 @Directive22(argument62 : "stringValue3122") @Directive31 @Directive44(argument97 : ["stringValue3123", "stringValue3124"]) { + field3300: Object602! + field3306: String +} + +type Object6010 @Directive21(argument61 : "stringValue28591") @Directive44(argument97 : ["stringValue28590"]) { + field28997: Boolean! +} + +type Object6011 @Directive21(argument61 : "stringValue28599") @Directive44(argument97 : ["stringValue28598"]) { + field28999: Object6012! +} + +type Object6012 @Directive21(argument61 : "stringValue28601") @Directive44(argument97 : ["stringValue28600"]) { + field29000: Scalar2! + field29001: Scalar2! + field29002: Enum1536! + field29003: [String!]! + field29004: Object6013! + field29007: String + field29008: String + field29009: String +} + +type Object6013 @Directive21(argument61 : "stringValue28603") @Directive44(argument97 : ["stringValue28602"]) { + field29005: Scalar4! + field29006: Scalar4! +} + +type Object6014 @Directive21(argument61 : "stringValue28629") @Directive44(argument97 : ["stringValue28628"]) { + field29011: Object6015! + field29442: Object6015 +} + +type Object6015 @Directive21(argument61 : "stringValue28631") @Directive44(argument97 : ["stringValue28630"]) { + field29012: Scalar2! + field29013: Enum1544! + field29014: Union217! + field29435: Enum1592! + field29436: Scalar2 @deprecated + field29437: Object6120 +} + +type Object6016 @Directive21(argument61 : "stringValue28635") @Directive44(argument97 : ["stringValue28634"]) { + field29015: Scalar2! + field29016: Scalar2! + field29017: Object6017 + field29029: Scalar2 + field29030: Scalar2 + field29031: Object6020 +} + +type Object6017 @Directive21(argument61 : "stringValue28637") @Directive44(argument97 : ["stringValue28636"]) { + field29018: Scalar2 + field29019: String + field29020: String + field29021: [Object6018] + field29025: [Object6019] + field29028: Scalar2 +} + +type Object6018 @Directive21(argument61 : "stringValue28639") @Directive44(argument97 : ["stringValue28638"]) { + field29022: String + field29023: String + field29024: String +} + +type Object6019 @Directive21(argument61 : "stringValue28641") @Directive44(argument97 : ["stringValue28640"]) { + field29026: String + field29027: [String] +} + +type Object602 implements Interface50 @Directive22(argument62 : "stringValue3125") @Directive31 @Directive44(argument97 : ["stringValue3126", "stringValue3127"]) { + field3301: Boolean + field3302: Object603 +} + +type Object6020 @Directive21(argument61 : "stringValue28643") @Directive44(argument97 : ["stringValue28642"]) { + field29032: Scalar2 + field29033: Float + field29034: Int + field29035: Int + field29036: String + field29037: String + field29038: Int + field29039: String + field29040: [Object6018] + field29041: [Object6019] +} + +type Object6021 @Directive21(argument61 : "stringValue28645") @Directive44(argument97 : ["stringValue28644"]) { + field29042: Scalar2! + field29043: Object6022 + field29052: Object6023! + field29066: Object6024! + field29073: Object6026 + field29077: Object6027 + field29080: Object6028 + field29084: Scalar2 + field29085: String +} + +type Object6022 @Directive21(argument61 : "stringValue28647") @Directive44(argument97 : ["stringValue28646"]) { + field29044: Scalar2 + field29045: Float + field29046: Int + field29047: Int + field29048: String + field29049: String + field29050: Int + field29051: String +} + +type Object6023 @Directive21(argument61 : "stringValue28649") @Directive44(argument97 : ["stringValue28648"]) { + field29053: Scalar2! + field29054: String! + field29055: String + field29056: String + field29057: String + field29058: Boolean + field29059: Float + field29060: Int + field29061: Int + field29062: Boolean + field29063: String + field29064: String + field29065: String +} + +type Object6024 @Directive21(argument61 : "stringValue28651") @Directive44(argument97 : ["stringValue28650"]) { + field29067: Scalar2! + field29068: [Object6025!]! + field29072: Scalar4 +} + +type Object6025 @Directive21(argument61 : "stringValue28653") @Directive44(argument97 : ["stringValue28652"]) { + field29069: String! + field29070: String + field29071: String! +} + +type Object6026 @Directive21(argument61 : "stringValue28655") @Directive44(argument97 : ["stringValue28654"]) { + field29074: String + field29075: String + field29076: String +} + +type Object6027 @Directive21(argument61 : "stringValue28657") @Directive44(argument97 : ["stringValue28656"]) { + field29078: String + field29079: Scalar4 +} + +type Object6028 @Directive21(argument61 : "stringValue28659") @Directive44(argument97 : ["stringValue28658"]) { + field29081: Scalar2 + field29082: Scalar4 + field29083: Boolean +} + +type Object6029 @Directive21(argument61 : "stringValue28661") @Directive44(argument97 : ["stringValue28660"]) { + field29086: Scalar2! + field29087: String! +} + +type Object603 @Directive20(argument58 : "stringValue3129", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3128") @Directive31 @Directive44(argument97 : ["stringValue3130", "stringValue3131"]) { + field3303: Object503 + field3304: Enum164 + field3305: [Object505!] +} + +type Object6030 @Directive21(argument61 : "stringValue28663") @Directive44(argument97 : ["stringValue28662"]) { + field29088: Scalar2! + field29089: Object6031! + field29114: Object6035! + field29120: Scalar4! + field29121: Object6036 + field29145: Scalar1 + field29146: Scalar4 + field29147: Enum1551 +} + +type Object6031 @Directive21(argument61 : "stringValue28665") @Directive44(argument97 : ["stringValue28664"]) { + field29090: Scalar2! + field29091: String! + field29092: String + field29093: String + field29094: Int + field29095: [String] + field29096: String + field29097: String + field29098: Enum1545 + field29099: [Object6032] + field29113: Scalar2 +} + +type Object6032 @Directive21(argument61 : "stringValue28668") @Directive44(argument97 : ["stringValue28667"]) { + field29100: Scalar2! + field29101: String! + field29102: Enum1546 + field29103: [Object6033] + field29109: [Object6034] +} + +type Object6033 @Directive21(argument61 : "stringValue28671") @Directive44(argument97 : ["stringValue28670"]) { + field29104: Scalar2! + field29105: String + field29106: String + field29107: Scalar2 + field29108: Enum1547 +} + +type Object6034 @Directive21(argument61 : "stringValue28674") @Directive44(argument97 : ["stringValue28673"]) { + field29110: Scalar2! + field29111: String + field29112: String +} + +type Object6035 @Directive21(argument61 : "stringValue28676") @Directive44(argument97 : ["stringValue28675"]) { + field29115: Scalar2 + field29116: String + field29117: String + field29118: String + field29119: String +} + +type Object6036 @Directive21(argument61 : "stringValue28678") @Directive44(argument97 : ["stringValue28677"]) { + field29122: Scalar2! + field29123: Enum1548! + field29124: Scalar2! + field29125: Scalar4 + field29126: Scalar4! + field29127: Scalar4! + field29128: Enum1549 + field29129: [Object6037] +} + +type Object6037 @Directive21(argument61 : "stringValue28682") @Directive44(argument97 : ["stringValue28681"]) { + field29130: Scalar2! + field29131: Scalar2! + field29132: Enum1550! + field29133: Scalar2! + field29134: Object6038 + field29141: Scalar4 + field29142: Scalar4! + field29143: Scalar4! + field29144: Enum1549 +} + +type Object6038 @Directive21(argument61 : "stringValue28685") @Directive44(argument97 : ["stringValue28684"]) { + field29135: Object6039 + field29139: Object6040 +} + +type Object6039 @Directive21(argument61 : "stringValue28687") @Directive44(argument97 : ["stringValue28686"]) { + field29136: String + field29137: String + field29138: String +} + +type Object604 implements Interface49 @Directive22(argument62 : "stringValue3132") @Directive31 @Directive44(argument97 : ["stringValue3133", "stringValue3134"]) { + field3300: Object602! +} + +type Object6040 @Directive21(argument61 : "stringValue28689") @Directive44(argument97 : ["stringValue28688"]) { + field29140: [Object6034] +} + +type Object6041 @Directive21(argument61 : "stringValue28692") @Directive44(argument97 : ["stringValue28691"]) { + field29148: Scalar2! +} + +type Object6042 @Directive21(argument61 : "stringValue28694") @Directive44(argument97 : ["stringValue28693"]) { + field29149: Scalar2! + field29150: [Object6043]! @deprecated + field29171: [Object6046] + field29199: String + field29200: Object6050 +} + +type Object6043 @Directive21(argument61 : "stringValue28696") @Directive44(argument97 : ["stringValue28695"]) { + field29151: Scalar2! + field29152: Scalar2! + field29153: Scalar2 + field29154: Scalar2 + field29155: [Object6044] + field29164: Enum1552 + field29165: Scalar4 + field29166: Scalar2 + field29167: [Object6045] +} + +type Object6044 @Directive21(argument61 : "stringValue28698") @Directive44(argument97 : ["stringValue28697"]) { + field29156: Scalar2! + field29157: Enum1537 + field29158: Enum1539 + field29159: [String] + field29160: Enum1540 + field29161: Enum1540 + field29162: Enum1538 + field29163: Enum1541 +} + +type Object6045 @Directive21(argument61 : "stringValue28701") @Directive44(argument97 : ["stringValue28700"]) { + field29168: String + field29169: Scalar5 + field29170: [String] +} + +type Object6046 @Directive21(argument61 : "stringValue28703") @Directive44(argument97 : ["stringValue28702"]) { + field29172: Scalar2! + field29173: Object6047 + field29186: Scalar3 + field29187: Scalar3 + field29188: String + field29189: Int + field29190: Int + field29191: String + field29192: Scalar2 + field29193: Scalar2 + field29194: Object6049 +} + +type Object6047 @Directive21(argument61 : "stringValue28705") @Directive44(argument97 : ["stringValue28704"]) { + field29174: Scalar2! + field29175: Int + field29176: String + field29177: String + field29178: String + field29179: Scalar1 + field29180: Scalar4 + field29181: [Object6048] + field29184: [Object6048] + field29185: String +} + +type Object6048 @Directive21(argument61 : "stringValue28707") @Directive44(argument97 : ["stringValue28706"]) { + field29182: String + field29183: String +} + +type Object6049 @Directive21(argument61 : "stringValue28709") @Directive44(argument97 : ["stringValue28708"]) { + field29195: Scalar2 + field29196: String + field29197: String + field29198: String +} + +type Object605 implements Interface49 @Directive22(argument62 : "stringValue3135") @Directive31 @Directive44(argument97 : ["stringValue3136", "stringValue3137"]) { + field3300: Interface50! +} + +type Object6050 @Directive21(argument61 : "stringValue28711") @Directive44(argument97 : ["stringValue28710"]) { + field29201: Scalar2 @deprecated + field29202: Scalar2 + field29203: Scalar5 + field29204: Scalar5 + field29205: Scalar5 + field29206: Scalar5 + field29207: Scalar5 + field29208: Scalar5 + field29209: Scalar5 + field29210: Scalar4 + field29211: Scalar4 + field29212: String + field29213: Scalar5 + field29214: Scalar2 + field29215: String + field29216: String + field29217: Scalar5 + field29218: Scalar2 +} + +type Object6051 @Directive21(argument61 : "stringValue28713") @Directive44(argument97 : ["stringValue28712"]) { + field29219: Object6046! + field29220: [Object6043]! + field29221: Object6052 @deprecated + field29270: Scalar2 + field29271: [String] +} + +type Object6052 @Directive21(argument61 : "stringValue28715") @Directive44(argument97 : ["stringValue28714"]) { + field29222: Object6053 + field29236: Object6059 + field29249: Scalar2 + field29250: Object6061 +} + +type Object6053 @Directive21(argument61 : "stringValue28717") @Directive44(argument97 : ["stringValue28716"]) { + field29223: [Union218] +} + +type Object6054 @Directive21(argument61 : "stringValue28720") @Directive44(argument97 : ["stringValue28719"]) { + field29224: Scalar4 + field29225: Enum1553 + field29226: String +} + +type Object6055 @Directive21(argument61 : "stringValue28723") @Directive44(argument97 : ["stringValue28722"]) { + field29227: Scalar4 + field29228: [Object6056] +} + +type Object6056 @Directive21(argument61 : "stringValue28725") @Directive44(argument97 : ["stringValue28724"]) { + field29229: String +} + +type Object6057 @Directive21(argument61 : "stringValue28727") @Directive44(argument97 : ["stringValue28726"]) { + field29230: Scalar4 + field29231: Scalar2 + field29232: [Object6058] + field29235: Scalar2 +} + +type Object6058 @Directive21(argument61 : "stringValue28729") @Directive44(argument97 : ["stringValue28728"]) { + field29233: Enum1552 + field29234: [Object6044] +} + +type Object6059 @Directive21(argument61 : "stringValue28731") @Directive44(argument97 : ["stringValue28730"]) { + field29237: Scalar2 + field29238: Object6060 + field29247: Object6060 + field29248: Object6060 +} + +type Object606 @Directive42(argument96 : ["stringValue3138", "stringValue3139", "stringValue3140"]) @Directive44(argument97 : ["stringValue3141", "stringValue3142"]) { + field3307: String + field3308: Object478 + field3309: [Object480!] + field3310: [Object480!] + field3311: Object514 + field3312: Object538 + field3313: String + field3314: String + field3315: String + field3316: String + field3317: Object452 + field3318: Object452 + field3319: Int + field3320: Object494 + field3321: Boolean + field3322: Boolean + field3323: Boolean + field3324: Boolean + field3325: String + field3326: String + field3327: Object548 @Directive41 + field3328: Union98 @Directive41 +} + +type Object6060 @Directive21(argument61 : "stringValue28733") @Directive44(argument97 : ["stringValue28732"]) { + field29239: Float + field29240: Scalar2 + field29241: Float + field29242: Float + field29243: Float + field29244: Float + field29245: Float + field29246: Scalar2 +} + +type Object6061 @Directive21(argument61 : "stringValue28735") @Directive44(argument97 : ["stringValue28734"]) { + field29251: Scalar2 + field29252: Object6062 + field29268: Object6062 + field29269: Object6062 +} + +type Object6062 @Directive21(argument61 : "stringValue28737") @Directive44(argument97 : ["stringValue28736"]) { + field29253: Float + field29254: Float + field29255: Float + field29256: Float + field29257: Float + field29258: Float + field29259: Float + field29260: Float + field29261: Float + field29262: Float + field29263: Float + field29264: Float + field29265: Float + field29266: Float + field29267: Float +} + +type Object6063 @Directive21(argument61 : "stringValue28739") @Directive44(argument97 : ["stringValue28738"]) { + field29272: Scalar2! + field29273: Object6064! + field29428: Object6118 + field29431: [Object6119] + field29434: Scalar2 +} + +type Object6064 @Directive21(argument61 : "stringValue28741") @Directive44(argument97 : ["stringValue28740"]) { + field29274: Scalar2! + field29275: String! + field29276: String! + field29277: Scalar2! + field29278: [Object6065]! + field29411: String! + field29412: String! + field29413: String! + field29414: String! + field29415: String! + field29416: Float + field29417: Int + field29418: Int + field29419: String + field29420: Int + field29421: String + field29422: String + field29423: Enum1554 + field29424: String + field29425: Int + field29426: String + field29427: Float +} + +type Object6065 @Directive21(argument61 : "stringValue28743") @Directive44(argument97 : ["stringValue28742"]) { + field29279: String + field29280: [Object6066] + field29283: Scalar2 + field29284: Scalar2 + field29285: Enum1554 + field29286: Int + field29287: Boolean + field29288: Boolean + field29289: [Object6067] + field29403: [Object6117] +} + +type Object6066 @Directive21(argument61 : "stringValue28745") @Directive44(argument97 : ["stringValue28744"]) { + field29281: String + field29282: Int +} + +type Object6067 @Directive21(argument61 : "stringValue28748") @Directive44(argument97 : ["stringValue28747"]) { + field29290: Scalar2 + field29291: Scalar4 + field29292: Scalar4 + field29293: Scalar2 + field29294: String + field29295: Enum1555 + field29296: Int + field29297: Boolean + field29298: Union219 +} + +type Object6068 @Directive21(argument61 : "stringValue28752") @Directive44(argument97 : ["stringValue28751"]) { + field29299: [Enum1556] +} + +type Object6069 @Directive21(argument61 : "stringValue28755") @Directive44(argument97 : ["stringValue28754"]) { + field29300: Enum1557 +} + +type Object607 @Directive20(argument58 : "stringValue3144", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3143") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue3145", "stringValue3146"]) { + field3329: String @Directive30(argument80 : true) @Directive41 + field3330: Object452 @Directive30(argument80 : true) @Directive41 + field3331: Object573 @Directive30(argument80 : true) @Directive41 +} + +type Object6070 @Directive21(argument61 : "stringValue28758") @Directive44(argument97 : ["stringValue28757"]) { + field29301: [Object6071] + field29309: Object6074 +} + +type Object6071 @Directive21(argument61 : "stringValue28760") @Directive44(argument97 : ["stringValue28759"]) { + field29302: [Object6072] + field29305: [Int] + field29306: [Object6073] +} + +type Object6072 @Directive21(argument61 : "stringValue28762") @Directive44(argument97 : ["stringValue28761"]) { + field29303: String + field29304: String +} + +type Object6073 @Directive21(argument61 : "stringValue28764") @Directive44(argument97 : ["stringValue28763"]) { + field29307: String + field29308: String +} + +type Object6074 @Directive21(argument61 : "stringValue28766") @Directive44(argument97 : ["stringValue28765"]) { + field29310: Scalar2 + field29311: String + field29312: Enum1558 + field29313: Enum1559 +} + +type Object6075 @Directive21(argument61 : "stringValue28770") @Directive44(argument97 : ["stringValue28769"]) { + field29314: Enum1560 @deprecated + field29315: [Enum1560] +} + +type Object6076 @Directive21(argument61 : "stringValue28773") @Directive44(argument97 : ["stringValue28772"]) { + field29316: Enum1557 + field29317: Boolean +} + +type Object6077 @Directive21(argument61 : "stringValue28775") @Directive44(argument97 : ["stringValue28774"]) { + field29318: String + field29319: Enum1561 +} + +type Object6078 @Directive21(argument61 : "stringValue28778") @Directive44(argument97 : ["stringValue28777"]) { + field29320: String + field29321: Boolean + field29322: Boolean + field29323: String + field29324: Boolean +} + +type Object6079 @Directive21(argument61 : "stringValue28780") @Directive44(argument97 : ["stringValue28779"]) { + field29325: [Enum1562] +} + +type Object608 @Directive22(argument62 : "stringValue3147") @Directive31 @Directive44(argument97 : ["stringValue3148", "stringValue3149"]) { + field3332: Object609 + field3352: String + field3353: String + field3354: String + field3355: String + field3356: String + field3357: Object536 +} + +type Object6080 @Directive21(argument61 : "stringValue28783") @Directive44(argument97 : ["stringValue28782"]) { + field29326: [Object6071] + field29327: Object6074 + field29328: Enum1563 +} + +type Object6081 @Directive21(argument61 : "stringValue28786") @Directive44(argument97 : ["stringValue28785"]) { + field29329: Boolean +} + +type Object6082 @Directive21(argument61 : "stringValue28788") @Directive44(argument97 : ["stringValue28787"]) { + field29330: [Enum1564] +} + +type Object6083 @Directive21(argument61 : "stringValue28791") @Directive44(argument97 : ["stringValue28790"]) { + field29331: [Enum1565] +} + +type Object6084 @Directive21(argument61 : "stringValue28794") @Directive44(argument97 : ["stringValue28793"]) { + field29332: Boolean + field29333: Enum1566 +} + +type Object6085 @Directive21(argument61 : "stringValue28797") @Directive44(argument97 : ["stringValue28796"]) { + field29334: String +} + +type Object6086 @Directive21(argument61 : "stringValue28799") @Directive44(argument97 : ["stringValue28798"]) { + field29335: [Enum1567] +} + +type Object6087 @Directive21(argument61 : "stringValue28802") @Directive44(argument97 : ["stringValue28801"]) { + field29336: [Enum1568] +} + +type Object6088 @Directive21(argument61 : "stringValue28805") @Directive44(argument97 : ["stringValue28804"]) { + field29337: Enum1569 + field29338: String +} + +type Object6089 @Directive21(argument61 : "stringValue28808") @Directive44(argument97 : ["stringValue28807"]) { + field29339: [Object6071] + field29340: String + field29341: Boolean +} + +type Object609 @Directive20(argument58 : "stringValue3151", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3150") @Directive31 @Directive44(argument97 : ["stringValue3152", "stringValue3153"]) { + field3333: String + field3334: [Object610!] + field3346: String + field3347: String + field3348: String + field3349: String + field3350: [Enum195] + field3351: [String] +} + +type Object6090 @Directive21(argument61 : "stringValue28810") @Directive44(argument97 : ["stringValue28809"]) { + field29342: [Enum1570] +} + +type Object6091 @Directive21(argument61 : "stringValue28813") @Directive44(argument97 : ["stringValue28812"]) { + field29343: Enum1557 + field29344: Boolean + field29345: Boolean @deprecated +} + +type Object6092 @Directive21(argument61 : "stringValue28815") @Directive44(argument97 : ["stringValue28814"]) { + field29346: Enum1557 + field29347: Enum1571 @deprecated + field29348: Enum1571 +} + +type Object6093 @Directive21(argument61 : "stringValue28818") @Directive44(argument97 : ["stringValue28817"]) { + field29349: [Enum1572] +} + +type Object6094 @Directive21(argument61 : "stringValue28821") @Directive44(argument97 : ["stringValue28820"]) { + field29350: Enum1557 +} + +type Object6095 @Directive21(argument61 : "stringValue28823") @Directive44(argument97 : ["stringValue28822"]) { + field29351: Enum1573 +} + +type Object6096 @Directive21(argument61 : "stringValue28826") @Directive44(argument97 : ["stringValue28825"]) { + field29352: Enum1574 +} + +type Object6097 @Directive21(argument61 : "stringValue28829") @Directive44(argument97 : ["stringValue28828"]) { + field29353: Enum1575 + field29354: Object6074 @deprecated + field29355: Object6098 +} + +type Object6098 @Directive21(argument61 : "stringValue28832") @Directive44(argument97 : ["stringValue28831"]) { + field29356: Enum1576 + field29357: Object6099 +} + +type Object6099 @Directive21(argument61 : "stringValue28835") @Directive44(argument97 : ["stringValue28834"]) { + field29358: Scalar2! + field29359: String! + field29360: Enum1577! +} + +type Object61 @Directive21(argument61 : "stringValue276") @Directive44(argument97 : ["stringValue275"]) { + field386: String + field387: String + field388: Boolean + field389: String + field390: String + field391: String + field392: String + field393: [String] + field394: Scalar2 +} + +type Object610 @Directive20(argument58 : "stringValue3155", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3154") @Directive31 @Directive44(argument97 : ["stringValue3156", "stringValue3157"]) { + field3335: String + field3336: [String!] + field3337: Float + field3338: Float + field3339: [String!] + field3340: String + field3341: Boolean + field3342: [Object611] + field3345: [Object611] +} + +type Object6100 @Directive21(argument61 : "stringValue28838") @Directive44(argument97 : ["stringValue28837"]) { + field29361: Int +} + +type Object6101 @Directive21(argument61 : "stringValue28840") @Directive44(argument97 : ["stringValue28839"]) { + field29362: Enum1557 +} + +type Object6102 @Directive21(argument61 : "stringValue28842") @Directive44(argument97 : ["stringValue28841"]) { + field29363: String + field29364: [Enum1578] +} + +type Object6103 @Directive21(argument61 : "stringValue28845") @Directive44(argument97 : ["stringValue28844"]) { + field29365: Object6074 @deprecated + field29366: Int + field29367: Enum1579 + field29368: Object6098 +} + +type Object6104 @Directive21(argument61 : "stringValue28848") @Directive44(argument97 : ["stringValue28847"]) { + field29369: Object6074 + field29370: Int + field29371: Boolean + field29372: Object6074 +} + +type Object6105 @Directive21(argument61 : "stringValue28850") @Directive44(argument97 : ["stringValue28849"]) { + field29373: Enum1557 + field29374: Enum1580 + field29375: [Enum1581] +} + +type Object6106 @Directive21(argument61 : "stringValue28854") @Directive44(argument97 : ["stringValue28853"]) { + field29376: Enum1576 @deprecated + field29377: Object6098 +} + +type Object6107 @Directive21(argument61 : "stringValue28856") @Directive44(argument97 : ["stringValue28855"]) { + field29378: [Object6071] + field29379: Boolean +} + +type Object6108 @Directive21(argument61 : "stringValue28858") @Directive44(argument97 : ["stringValue28857"]) { + field29380: Enum1557 +} + +type Object6109 @Directive21(argument61 : "stringValue28860") @Directive44(argument97 : ["stringValue28859"]) { + field29381: [Object6071] + field29382: Object6074 + field29383: String +} + +type Object611 @Directive20(argument58 : "stringValue3159", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3158") @Directive31 @Directive44(argument97 : ["stringValue3160", "stringValue3161"]) { + field3343: String + field3344: String +} + +type Object6110 @Directive21(argument61 : "stringValue28862") @Directive44(argument97 : ["stringValue28861"]) { + field29384: [Enum1582] @deprecated + field29385: Enum1582 +} + +type Object6111 @Directive21(argument61 : "stringValue28865") @Directive44(argument97 : ["stringValue28864"]) { + field29386: String + field29387: Boolean + field29388: [Enum1583] +} + +type Object6112 @Directive21(argument61 : "stringValue28868") @Directive44(argument97 : ["stringValue28867"]) { + field29389: String + field29390: Enum1584 +} + +type Object6113 @Directive21(argument61 : "stringValue28871") @Directive44(argument97 : ["stringValue28870"]) { + field29391: String + field29392: Enum1585 + field29393: Enum1586 + field29394: [Enum1586] +} + +type Object6114 @Directive21(argument61 : "stringValue28875") @Directive44(argument97 : ["stringValue28874"]) { + field29395: Int + field29396: Enum1587 + field29397: [Enum1588] +} + +type Object6115 @Directive21(argument61 : "stringValue28879") @Directive44(argument97 : ["stringValue28878"]) { + field29398: Object6074 + field29399: Enum1589 + field29400: String + field29401: Int +} + +type Object6116 @Directive21(argument61 : "stringValue28882") @Directive44(argument97 : ["stringValue28881"]) { + field29402: [Enum1590] +} + +type Object6117 @Directive21(argument61 : "stringValue28885") @Directive44(argument97 : ["stringValue28884"]) { + field29404: Scalar2 + field29405: Scalar4 + field29406: Scalar4 + field29407: Scalar2 + field29408: String + field29409: Enum1591 + field29410: [String] +} + +type Object6118 @Directive21(argument61 : "stringValue28888") @Directive44(argument97 : ["stringValue28887"]) { + field29429: Enum1543! + field29430: String +} + +type Object6119 @Directive21(argument61 : "stringValue28890") @Directive44(argument97 : ["stringValue28889"]) { + field29432: Enum1543! + field29433: String +} + +type Object612 @Directive20(argument58 : "stringValue3167", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3166") @Directive31 @Directive44(argument97 : ["stringValue3168", "stringValue3169"]) { + field3358: String + field3359: String + field3360: String + field3361: String +} + +type Object6120 @Directive21(argument61 : "stringValue28893") @Directive44(argument97 : ["stringValue28892"]) { + field29438: Scalar2 + field29439: String + field29440: String + field29441: String +} + +type Object6121 @Directive21(argument61 : "stringValue28902") @Directive44(argument97 : ["stringValue28901"]) { + field29445: Boolean! +} + +type Object6122 @Directive21(argument61 : "stringValue28908") @Directive44(argument97 : ["stringValue28907"]) { + field29447: Object6012! +} + +type Object6123 @Directive21(argument61 : "stringValue28914") @Directive44(argument97 : ["stringValue28913"]) { + field29449: Boolean! +} + +type Object6124 @Directive44(argument97 : ["stringValue28915"]) { + field29451(argument1494: InputObject1378!): Object6125 @Directive35(argument89 : "stringValue28917", argument90 : false, argument91 : "stringValue28916", argument92 : 497, argument93 : "stringValue28918", argument94 : false) + field29456(argument1495: InputObject1379!): Object6126 @Directive35(argument89 : "stringValue28923", argument90 : true, argument91 : "stringValue28922", argument92 : 498, argument93 : "stringValue28924", argument94 : false) + field29506(argument1496: InputObject1380!): Object6132 @Directive35(argument89 : "stringValue28940", argument90 : true, argument91 : "stringValue28939", argument92 : 499, argument93 : "stringValue28941", argument94 : false) + field29518(argument1497: InputObject1382!): Object6135 @Directive35(argument89 : "stringValue28951", argument90 : true, argument91 : "stringValue28950", argument92 : 500, argument93 : "stringValue28952", argument94 : false) + field29523(argument1498: InputObject1383!): Object6136 @Directive35(argument89 : "stringValue28958", argument90 : true, argument91 : "stringValue28957", argument92 : 501, argument93 : "stringValue28959", argument94 : false) +} + +type Object6125 @Directive21(argument61 : "stringValue28921") @Directive44(argument97 : ["stringValue28920"]) { + field29452: Boolean! + field29453: Scalar2! + field29454: Scalar4 + field29455: Scalar4 +} + +type Object6126 @Directive21(argument61 : "stringValue28927") @Directive44(argument97 : ["stringValue28926"]) { + field29457: Object6127 +} + +type Object6127 @Directive21(argument61 : "stringValue28929") @Directive44(argument97 : ["stringValue28928"]) { + field29458: String + field29459: Enum1593 + field29460: Object6128 + field29474: [Object6128] + field29475: String + field29476: Scalar2 + field29477: Scalar2 + field29478: [Object6130] + field29487: Scalar2 + field29488: Scalar2 + field29489: Float + field29490: String + field29491: Object6128 + field29492: Float + field29493: Float + field29494: Scalar3 + field29495: String + field29496: String + field29497: String + field29498: Boolean + field29499: Int + field29500: Object6131 +} + +type Object6128 @Directive21(argument61 : "stringValue28932") @Directive44(argument97 : ["stringValue28931"]) { + field29461: Object6129 + field29466: String + field29467: Scalar2 + field29468: Scalar2 + field29469: Float + field29470: String + field29471: Boolean + field29472: String + field29473: String +} + +type Object6129 @Directive21(argument61 : "stringValue28934") @Directive44(argument97 : ["stringValue28933"]) { + field29462: Scalar2 + field29463: String + field29464: String + field29465: String +} + +type Object613 @Directive22(argument62 : "stringValue3170") @Directive31 @Directive44(argument97 : ["stringValue3171", "stringValue3172"]) { + field3362: String + field3363: String + field3364: String + field3365: [Object614!] + field3370: Object615 + field3373: Object615 + field3374: String + field3375: String + field3376: String + field3377: String + field3378: Boolean +} + +type Object6130 @Directive21(argument61 : "stringValue28936") @Directive44(argument97 : ["stringValue28935"]) { + field29479: Scalar2 + field29480: Scalar2 + field29481: Scalar2 + field29482: String + field29483: Scalar2 + field29484: Scalar2 + field29485: String + field29486: Object6129 +} + +type Object6131 @Directive21(argument61 : "stringValue28938") @Directive44(argument97 : ["stringValue28937"]) { + field29501: String + field29502: String + field29503: String + field29504: String + field29505: String +} + +type Object6132 @Directive21(argument61 : "stringValue28945") @Directive44(argument97 : ["stringValue28944"]) { + field29507: Object6127 + field29508: Object6133 + field29512: Object6134 +} + +type Object6133 @Directive21(argument61 : "stringValue28947") @Directive44(argument97 : ["stringValue28946"]) { + field29509: Scalar2 + field29510: String + field29511: Boolean +} + +type Object6134 @Directive21(argument61 : "stringValue28949") @Directive44(argument97 : ["stringValue28948"]) { + field29513: String! + field29514: String! + field29515: String! + field29516: String + field29517: String +} + +type Object6135 @Directive21(argument61 : "stringValue28955") @Directive44(argument97 : ["stringValue28954"]) { + field29519: Enum1594 + field29520: String + field29521: String + field29522: String +} + +type Object6136 @Directive21(argument61 : "stringValue28962") @Directive44(argument97 : ["stringValue28961"]) { + field29524: Object6127 + field29525: Object6133 +} + +type Object6137 @Directive2 @Directive42(argument96 : ["stringValue28963", "stringValue28964", "stringValue28965"]) @Directive44(argument97 : ["stringValue28966"]) @Directive45(argument98 : ["stringValue28967", "stringValue28968"]) @Directive45(argument98 : ["stringValue28969", "stringValue28970", "stringValue28971", "stringValue28972", "stringValue28973", "stringValue28974", "stringValue28975"]) @Directive45(argument98 : ["stringValue28976", "stringValue28977"]) @Directive45(argument98 : ["stringValue28978", "stringValue28979"]) @Directive45(argument98 : ["stringValue28980", "stringValue28981"]) @Directive45(argument98 : ["stringValue28982", "stringValue28983"]) @Directive45(argument98 : ["stringValue28984", "stringValue28985"]) @Directive45(argument98 : ["stringValue28986", "stringValue28987"]) @Directive45(argument98 : ["stringValue28988", "stringValue28989"]) @Directive45(argument98 : ["stringValue28990"]) @Directive45(argument98 : ["stringValue28991"]) @Directive45(argument98 : ["stringValue28992", "stringValue28993", "stringValue28994"]) @Directive45(argument98 : ["stringValue28995", "stringValue28996", "stringValue28997"]) @Directive45(argument98 : ["stringValue28998", "stringValue28999"]) @Directive45(argument98 : ["stringValue29000", "stringValue29001"]) @Directive45(argument98 : ["stringValue29002", "stringValue29003", "stringValue29004"]) @Directive45(argument98 : ["stringValue29005", "stringValue29006"]) @Directive45(argument98 : ["stringValue29007", "stringValue29008", "stringValue29009"]) @Directive45(argument98 : ["stringValue29010", "stringValue29011"]) @Directive45(argument98 : ["stringValue29012"]) @Directive45(argument98 : ["stringValue29013"]) @Directive45(argument98 : ["stringValue29014"]) @Directive45(argument98 : ["stringValue29015"]) @Directive45(argument98 : ["stringValue29016"]) @Directive45(argument98 : ["stringValue29017"]) @Directive45(argument98 : ["stringValue29018"]) @Directive45(argument98 : ["stringValue29019"]) @Directive45(argument98 : ["stringValue29020"]) @Directive45(argument98 : ["stringValue29021"]) @Directive45(argument98 : ["stringValue29022"]) @Directive45(argument98 : ["stringValue29023", "stringValue29024"]) @Directive45(argument98 : ["stringValue29025"]) @Directive45(argument98 : ["stringValue29026", "stringValue29027"]) @Directive45(argument98 : ["stringValue29028"]) @Directive45(argument98 : ["stringValue29029"]) @Directive45(argument98 : ["stringValue29030"]) @Directive45(argument98 : ["stringValue29031"]) @Directive45(argument98 : ["stringValue29032"]) @Directive45(argument98 : ["stringValue29033"]) @Directive45(argument98 : ["stringValue29034"]) @Directive45(argument98 : ["stringValue29035"]) @Directive45(argument98 : ["stringValue29036"]) @Directive45(argument98 : ["stringValue29037"]) @Directive45(argument98 : ["stringValue29038"]) @Directive45(argument98 : ["stringValue29039"]) @Directive45(argument98 : ["stringValue29040"]) @Directive45(argument98 : ["stringValue29041"]) @Directive45(argument98 : ["stringValue29042"]) @Directive45(argument98 : ["stringValue29043"]) @Directive45(argument98 : ["stringValue29044"]) @Directive45(argument98 : ["stringValue29045"]) @Directive45(argument98 : ["stringValue29046"]) @Directive45(argument98 : ["stringValue29047"]) @Directive45(argument98 : ["stringValue29048"]) @Directive45(argument98 : ["stringValue29049"]) @Directive45(argument98 : ["stringValue29050"]) @Directive45(argument98 : ["stringValue29051"]) @Directive45(argument98 : ["stringValue29052"]) @Directive45(argument98 : ["stringValue29053"]) @Directive45(argument98 : ["stringValue29054"]) @Directive45(argument98 : ["stringValue29055"]) @Directive45(argument98 : ["stringValue29056"]) @Directive45(argument98 : ["stringValue29057"]) @Directive45(argument98 : ["stringValue29058"]) @Directive45(argument98 : ["stringValue29059"]) @Directive45(argument98 : ["stringValue29060"]) @Directive45(argument98 : ["stringValue29061"]) @Directive45(argument98 : ["stringValue29062"]) @Directive45(argument98 : ["stringValue29063"]) @Directive45(argument98 : ["stringValue29064"]) @Directive45(argument98 : ["stringValue29065"]) @Directive45(argument98 : ["stringValue29066"]) @Directive45(argument98 : ["stringValue29067"]) @Directive45(argument98 : ["stringValue29068"]) @Directive45(argument98 : ["stringValue29069"]) @Directive45(argument98 : ["stringValue29070"]) @Directive45(argument98 : ["stringValue29071"]) @Directive45(argument98 : ["stringValue29072"]) @Directive45(argument98 : ["stringValue29073"]) @Directive45(argument98 : ["stringValue29074"]) @Directive45(argument98 : ["stringValue29075"]) @Directive45(argument98 : ["stringValue29076"]) @Directive45(argument98 : ["stringValue29077"]) @Directive45(argument98 : ["stringValue29078"]) @Directive45(argument98 : ["stringValue29079"]) @Directive45(argument98 : ["stringValue29080"]) @Directive45(argument98 : ["stringValue29081"]) @Directive45(argument98 : ["stringValue29082"]) @Directive45(argument98 : ["stringValue29083"]) @Directive45(argument98 : ["stringValue29084"]) @Directive45(argument98 : ["stringValue29085"]) @Directive45(argument98 : ["stringValue29086"]) @Directive45(argument98 : ["stringValue29087"]) @Directive45(argument98 : ["stringValue29088"]) @Directive45(argument98 : ["stringValue29089"]) @Directive45(argument98 : ["stringValue29090"]) @Directive45(argument98 : ["stringValue29091"]) @Directive45(argument98 : ["stringValue29092"]) @Directive45(argument98 : ["stringValue29093"]) @Directive45(argument98 : ["stringValue29094"]) @Directive45(argument98 : ["stringValue29095"]) @Directive45(argument98 : ["stringValue29096"]) @Directive45(argument98 : ["stringValue29097"]) @Directive45(argument98 : ["stringValue29098"]) @Directive45(argument98 : ["stringValue29099"]) @Directive45(argument98 : ["stringValue29100"]) @Directive45(argument98 : ["stringValue29101"]) @Directive45(argument98 : ["stringValue29102"]) @Directive45(argument98 : ["stringValue29103"]) @Directive45(argument98 : ["stringValue29104"]) @Directive45(argument98 : ["stringValue29105"]) @Directive45(argument98 : ["stringValue29106"]) @Directive45(argument98 : ["stringValue29107"]) @Directive45(argument98 : ["stringValue29108"]) @Directive45(argument98 : ["stringValue29109"]) @Directive45(argument98 : ["stringValue29110"]) @Directive45(argument98 : ["stringValue29111"]) @Directive45(argument98 : ["stringValue29112"]) @Directive45(argument98 : ["stringValue29113"]) @Directive45(argument98 : ["stringValue29114"]) @Directive45(argument98 : ["stringValue29115"]) @Directive45(argument98 : ["stringValue29116"]) @Directive45(argument98 : ["stringValue29117"]) @Directive45(argument98 : ["stringValue29118"]) @Directive45(argument98 : ["stringValue29119"]) @Directive45(argument98 : ["stringValue29120"]) @Directive45(argument98 : ["stringValue29121"]) @Directive45(argument98 : ["stringValue29122"]) @Directive45(argument98 : ["stringValue29123"]) @Directive45(argument98 : ["stringValue29124"]) @Directive45(argument98 : ["stringValue29125"]) @Directive45(argument98 : ["stringValue29126"]) @Directive45(argument98 : ["stringValue29127"]) @Directive45(argument98 : ["stringValue29128"]) @Directive45(argument98 : ["stringValue29129"]) @Directive45(argument98 : ["stringValue29130"]) @Directive45(argument98 : ["stringValue29131"]) @Directive45(argument98 : ["stringValue29132"]) @Directive45(argument98 : ["stringValue29133"]) @Directive45(argument98 : ["stringValue29134"]) @Directive45(argument98 : ["stringValue29135"]) @Directive45(argument98 : ["stringValue29136"]) @Directive45(argument98 : ["stringValue29137"]) @Directive45(argument98 : ["stringValue29138"]) @Directive45(argument98 : ["stringValue29139"]) @Directive45(argument98 : ["stringValue29140"]) @Directive45(argument98 : ["stringValue29141"]) @Directive45(argument98 : ["stringValue29142"]) @Directive45(argument98 : ["stringValue29143"]) @Directive45(argument98 : ["stringValue29144"]) @Directive45(argument98 : ["stringValue29145"]) @Directive45(argument98 : ["stringValue29146"]) @Directive45(argument98 : ["stringValue29147"]) @Directive45(argument98 : ["stringValue29148"]) @Directive45(argument98 : ["stringValue29149"]) @Directive45(argument98 : ["stringValue29150"]) @Directive45(argument98 : ["stringValue29151"]) @Directive45(argument98 : ["stringValue29152"]) @Directive45(argument98 : ["stringValue29153"]) @Directive45(argument98 : ["stringValue29154"]) @Directive45(argument98 : ["stringValue29155"]) @Directive45(argument98 : ["stringValue29156"]) @Directive45(argument98 : ["stringValue29157"]) @Directive45(argument98 : ["stringValue29158"]) @Directive45(argument98 : ["stringValue29159"]) @Directive45(argument98 : ["stringValue29160"]) @Directive45(argument98 : ["stringValue29161"]) @Directive45(argument98 : ["stringValue29162"]) @Directive45(argument98 : ["stringValue29163"]) @Directive45(argument98 : ["stringValue29164"]) @Directive45(argument98 : ["stringValue29165"]) @Directive45(argument98 : ["stringValue29166"]) @Directive45(argument98 : ["stringValue29167"]) @Directive45(argument98 : ["stringValue29168"]) @Directive45(argument98 : ["stringValue29169"]) @Directive45(argument98 : ["stringValue29170"]) @Directive45(argument98 : ["stringValue29171"]) @Directive45(argument98 : ["stringValue29172"]) @Directive45(argument98 : ["stringValue29173"]) @Directive45(argument98 : ["stringValue29174"]) @Directive45(argument98 : ["stringValue29175"]) @Directive45(argument98 : ["stringValue29176"]) @Directive45(argument98 : ["stringValue29177"]) @Directive45(argument98 : ["stringValue29178"]) @Directive45(argument98 : ["stringValue29179"]) @Directive45(argument98 : ["stringValue29180"]) @Directive45(argument98 : ["stringValue29181"]) @Directive45(argument98 : ["stringValue29182"]) @Directive45(argument98 : ["stringValue29183"]) @Directive45(argument98 : ["stringValue29184"]) @Directive45(argument98 : ["stringValue29185"]) @Directive45(argument98 : ["stringValue29186"]) @Directive45(argument98 : ["stringValue29187"]) @Directive45(argument98 : ["stringValue29188"]) { + field29526: String @Directive1 @deprecated + field29527: Object6138 @Directive17 + field29529(argument1499: ID! @Directive25(argument65 : "stringValue29192")): Interface36 @Directive17 + field29530(argument1500: [ID!]! @Directive25(argument65 : "stringValue29193")): [Interface36]! @Directive17 + field29531: Object6139 + field31367: Object6661 + field31374: Object6663 + field31429: Object6680 + field31490: Object6704 + field31498: Object6707 + field31545: Object6724 @Directive17 + field31550: Object6728 @Directive17 + field31556: Object6729 @Directive17 + field31706: Object6766 @Directive17 + field31708(argument1848: [ID!], argument1849: [String!]): [Object6143]! @Directive17 + field31709: Object6767 @Directive17 + field31715(argument1856: [ID!], argument1857: [String!]): [Object2034]! @Directive17 + field31716(argument1858: [ID!], argument1859: [String!]): [Object2051]! @Directive17 + field31717: Object6768 @Directive17 + field31720(argument1862: [ID!], argument1863: [ID!], argument1864: [InputObject1469!]): [Object6144]! @Directive17 + field31721: Object6769 + field31790: Object6790 + field31824(argument1874: ID!): Object6798 @Directive17 + field31827: Object6803 @Directive17 + field31830: Object6807 @Directive17 + field31833: Object6811 + field31917: Object6830 + field31919: Object6343 @Directive17 + field31920: Object6831 + field31928: Object6834 @Directive41 + field31930: Object6837 @Directive41 + field32036: Object6873 @Directive41 + field32044: Object6876 @Directive41 + field32062: Object6883 @Directive41 + field32064: Object6884! @Directive36 + field32134: Object6900! @Directive36 + field32186: Object6917! @Directive36 + field32189: Object6919! @Directive36 + field32270: Object6937! @Directive36 + field32655: Object7041! @Directive36 + field32658: Object7043! @Directive36 + field32709: Object7058! @Directive36 + field35639: Object7300! @Directive36 + field35709: Object7317! @Directive36 + field35989: Object7362! @Directive36 + field35993: Object7364! @Directive36 + field36005: Object7369! @Directive36 + field36032: Object7377! @Directive36 + field36035: Object7379! @Directive36 + field36081: Object7391! @Directive36 + field36898: Object7529! @Directive36 + field37431: Object7614! @Directive36 + field37445: Object7620! @Directive36 + field37531: Object7642! @Directive36 + field37844: Object7701! @Directive36 + field38027: Object7746! @Directive36 + field38232: Object7784! @Directive36 + field38419: Object7822! @Directive36 + field38426: Object7826! @Directive36 + field38460: Object7835! @Directive36 + field38517: Object7855! @Directive36 + field38563: Object7864! @Directive36 + field38587: Object7873! @Directive36 + field39793: Object8065! @Directive36 + field39849: Object8085! @Directive36 + field39866: Object8091! @Directive36 + field39961: Object8117! @Directive36 + field40016: Object8130! @Directive36 + field40051: Object8137! @Directive36 + field45165: Object8732! @Directive36 + field45208: Object8740! @Directive36 + field45291: Object8762! @Directive36 + field45322: Object8772! @Directive36 + field45398: Object8792! @Directive36 + field45515: Object8801! @Directive36 + field45587: Object8818! @Directive36 + field45645: Object8836! @Directive36 + field45925: Object8885! @Directive36 + field45955: Object8892! @Directive36 + field46007: Object8911! @Directive36 + field46251: Object8952! @Directive36 + field46610: Object9039! @Directive36 + field46640: Object9047! @Directive36 + field46669: Object9055! @Directive36 + field46862: Object9105! @Directive36 + field47121: Object9161! @Directive36 + field47265: Object9199! @Directive36 + field48109: Object9355! @Directive36 + field48477: Object9425! @Directive36 + field48743: Object9470! @Directive36 + field49537: Object9589! @Directive36 + field53452: Object10136! @Directive36 + field53461: Object10139! @Directive36 + field53765: Object10207! @Directive36 + field53772: Object10211! @Directive36 + field53812: Object10223! @Directive36 + field54181: Object10293! @Directive36 + field55017: Object10449! @Directive36 + field55252: Object10499! @Directive36 + field55367: Object10526! @Directive36 + field55745: Object10604! @Directive36 + field55811: Object10621! @Directive36 + field55962: Object10659! @Directive36 + field58040: Object11022! @Directive36 + field58631: Object11113! @Directive36 + field58868: Object11172! @Directive36 + field58978: Object11188! @Directive36 + field58991: Object11194! @Directive36 + field59016: Object11202! @Directive36 + field59178: Object11252! @Directive36 + field59376: Object11298! @Directive36 + field62196: Object11710! @Directive36 + field62321: Object11741! @Directive36 + field62807: Object11828! @Directive36 + field63213: Object11897! @Directive36 + field63433: Object11931! @Directive36 + field66829: Object12396! @Directive36 + field67935: Object12523! @Directive36 + field68647: Object12641! @Directive36 + field68728: Object12658! @Directive36 + field68926: Object2343 @Directive15(argument53 : "stringValue50158") + field68927: Object4158 @Directive15(argument53 : "stringValue50159") + field68928: Object3682 @Directive15(argument53 : "stringValue50160") + field68929: Object2409 @Directive15(argument53 : "stringValue50161") + field68930: Object2409 @Directive15(argument53 : "stringValue50162") + field68931: Object4192 @Directive15(argument53 : "stringValue50163") + field68932: Object4016 @Directive15(argument53 : "stringValue50164") + field68933: Object4140 @Directive15(argument53 : "stringValue50165") + field68934: Object4189 @Directive15(argument53 : "stringValue50166") + field68935: Object4016 @Directive15(argument53 : "stringValue50167") + field68936: Object4016 @Directive15(argument53 : "stringValue50168") + field68937: Object4016 @Directive15(argument53 : "stringValue50169") + field68938: Object4016 @Directive15(argument53 : "stringValue50170") + field68939: Object4016 @Directive15(argument53 : "stringValue50171") + field68940: Object4016 @Directive15(argument53 : "stringValue50172") + field68941: Object4016 @Directive15(argument53 : "stringValue50173") + field68942: Object3681 @Directive15(argument53 : "stringValue50174") + field68943: Object4115 @Directive15(argument53 : "stringValue50175") + field68944: Object4115 @Directive15(argument53 : "stringValue50176") + field68945: Object4115 @Directive15(argument53 : "stringValue50177") + field68946: Object4016 @Directive15(argument53 : "stringValue50178") + field68947: Object4016 @Directive15(argument53 : "stringValue50179") + field68948: Object6248 @Directive15(argument53 : "stringValue50180") + field68949: Object6248 @Directive15(argument53 : "stringValue50181") + field68950: Object6248 @Directive15(argument53 : "stringValue50182") + field68951: Object4016 @Directive15(argument53 : "stringValue50183") + field68952: Object6519 @Directive15(argument53 : "stringValue50184") + field68953: Object6519 @Directive15(argument53 : "stringValue50185") + field68954: Object6519 @Directive15(argument53 : "stringValue50186") + field68955: Object6519 @Directive15(argument53 : "stringValue50187") + field68956: Object6518 @Directive15(argument53 : "stringValue50188") + field68957: Object6137 @Directive15(argument53 : "stringValue50189") + field68958: Object6137 @Directive15(argument53 : "stringValue50190") + field68959: Object6519 @Directive15(argument53 : "stringValue50191") + field68960: Object6515 @Directive15(argument53 : "stringValue50192") + field68961: Object6519 @Directive15(argument53 : "stringValue50193") + field68962: Object6519 @Directive15(argument53 : "stringValue50194") + field68963: Object6515 @Directive15(argument53 : "stringValue50195") + field68964: Object6515 @Directive15(argument53 : "stringValue50196") + field68965: Object6515 @Directive15(argument53 : "stringValue50197") + field68966: Object589 @Directive15(argument53 : "stringValue50198") + field68967: Object6343 @Directive15(argument53 : "stringValue50199") + field68968: Object6344 @Directive15(argument53 : "stringValue50200") + field68969: Object6343 @Directive15(argument53 : "stringValue50201") + field68970: Object2360 @Directive15(argument53 : "stringValue50202") + field68971: Object2374 @Directive15(argument53 : "stringValue50203") + field68972: Object6639 @Directive15(argument53 : "stringValue50204") + field68973: Object6772 @Directive15(argument53 : "stringValue50205") + field68974: Object6787 @Directive15(argument53 : "stringValue50206") + field68975: Object4216 @Directive15(argument53 : "stringValue50207") + field68976: Object2449 @Directive15(argument53 : "stringValue50208") + field68977: Object1778 @Directive15(argument53 : "stringValue50209") + field68978: Object1778 @Directive15(argument53 : "stringValue50210") + field68979: Object1778 @Directive15(argument53 : "stringValue50211") + field68980: Object1778 @Directive15(argument53 : "stringValue50212") + field68981: Object1778 @Directive15(argument53 : "stringValue50213") + field68982: Object1902 @Directive15(argument53 : "stringValue50214") + field68983: Object1902 @Directive15(argument53 : "stringValue50215") + field68984: Object1902 @Directive15(argument53 : "stringValue50216") + field68985: Object1902 @Directive15(argument53 : "stringValue50217") + field68986: Object1902 @Directive15(argument53 : "stringValue50218") + field68987: Object1902 @Directive15(argument53 : "stringValue50219") + field68988: Object1902 @Directive15(argument53 : "stringValue50220") + field68989: Object1778 @Directive15(argument53 : "stringValue50221") + field68990: Object1778 @Directive15(argument53 : "stringValue50222") + field68991: Object1778 @Directive15(argument53 : "stringValue50223") + field68992: Object1778 @Directive15(argument53 : "stringValue50224") + field68993: Object1778 @Directive15(argument53 : "stringValue50225") + field68994: Object1778 @Directive15(argument53 : "stringValue50226") + field68995: Object1778 @Directive15(argument53 : "stringValue50227") + field68996: Object1778 @Directive15(argument53 : "stringValue50228") + field68997: Object1833 @Directive15(argument53 : "stringValue50229") + field68998: Object1778 @Directive15(argument53 : "stringValue50230") + field68999: Object1778 @Directive15(argument53 : "stringValue50231") + field69000: Object1778 @Directive15(argument53 : "stringValue50232") + field69001: Object1834 @Directive15(argument53 : "stringValue50233") + field69002: Object1778 @Directive15(argument53 : "stringValue50234") + field69003: Object1778 @Directive15(argument53 : "stringValue50235") + field69004: Object1778 @Directive15(argument53 : "stringValue50236") + field69005: Object2028 @Directive15(argument53 : "stringValue50237") + field69006: Object6857 @Directive15(argument53 : "stringValue50238") + field69007: Object6848 @Directive15(argument53 : "stringValue50239") + field69008: Object6855 @Directive15(argument53 : "stringValue50240") + field69009: Object6845 @Directive15(argument53 : "stringValue50241") + field69010: Object2294 @Directive15(argument53 : "stringValue50242") + field69011: Object2294 @Directive15(argument53 : "stringValue50243") + field69012: Object2294 @Directive15(argument53 : "stringValue50244") + field69013: Object2294 @Directive15(argument53 : "stringValue50245") + field69014: Object2360 @Directive15(argument53 : "stringValue50246") + field69015: Object2360 @Directive15(argument53 : "stringValue50247") + field69016: Object6819 @Directive15(argument53 : "stringValue50248") + field69017: Object2429 @Directive15(argument53 : "stringValue50249") + field69018: Object2380 @Directive15(argument53 : "stringValue50250") + field69019: Object2380 @Directive15(argument53 : "stringValue50251") + field69020: Object2380 @Directive15(argument53 : "stringValue50252") + field69021: Object2380 @Directive15(argument53 : "stringValue50253") + field69022: Object2380 @Directive15(argument53 : "stringValue50254") + field69023: Object2380 @Directive15(argument53 : "stringValue50255") + field69024: Object2380 @Directive15(argument53 : "stringValue50256") + field69025: Object2380 @Directive15(argument53 : "stringValue50257") + field69026: Object2380 @Directive15(argument53 : "stringValue50258") + field69027: Object2380 @Directive15(argument53 : "stringValue50259") + field69028: Object2380 @Directive15(argument53 : "stringValue50260") + field69029: Object2380 @Directive15(argument53 : "stringValue50261") + field69030: Object2380 @Directive15(argument53 : "stringValue50262") + field69031: Object2380 @Directive15(argument53 : "stringValue50263") + field69032: Object2380 @Directive15(argument53 : "stringValue50264") + field69033: Object6364 @Directive15(argument53 : "stringValue50265") + field69034: Object6364 @Directive15(argument53 : "stringValue50266") + field69035: Object6364 @Directive15(argument53 : "stringValue50267") + field69036: Object6364 @Directive15(argument53 : "stringValue50268") + field69037: Object6364 @Directive15(argument53 : "stringValue50269") + field69038: Object6364 @Directive15(argument53 : "stringValue50270") + field69039: Object6879 @Directive15(argument53 : "stringValue50271") + field69040: Object1896 @Directive15(argument53 : "stringValue50272") + field69041: Object2391 @Directive15(argument53 : "stringValue50273") + field69042: Object4016 @Directive15(argument53 : "stringValue50274") + field69043: Object4016 @Directive15(argument53 : "stringValue50275") + field69044: Object6685 @Directive15(argument53 : "stringValue50276") + field69045: Object6685 @Directive15(argument53 : "stringValue50277") + field69046: Object6685 @Directive15(argument53 : "stringValue50278") + field69047: Object6685 @Directive15(argument53 : "stringValue50279") + field69048: Object2480 @Directive15(argument53 : "stringValue50280") + field69049: Object6267 @Directive15(argument53 : "stringValue50281") + field69050: Object1829 @Directive15(argument53 : "stringValue50282") + field69051: Object1829 @Directive15(argument53 : "stringValue50283") + field69052: Object2417 @Directive15(argument53 : "stringValue50284") + field69053: Object2417 @Directive15(argument53 : "stringValue50285") + field69054: Object4174 @Directive15(argument53 : "stringValue50286") + field69055: Object4174 @Directive15(argument53 : "stringValue50287") + field69056: Object4174 @Directive15(argument53 : "stringValue50288") + field69057: Object4174 @Directive15(argument53 : "stringValue50289") + field69058: Object4180 @Directive15(argument53 : "stringValue50290") + field69059: Object4180 @Directive15(argument53 : "stringValue50291") + field69060: Object4174 @Directive15(argument53 : "stringValue50292") + field69061: Object4174 @Directive15(argument53 : "stringValue50293") + field69062: Object4174 @Directive15(argument53 : "stringValue50294") + field69063: Object6648 @Directive15(argument53 : "stringValue50295") + field69064: Object2253 @Directive15(argument53 : "stringValue50296") + field69065: Object2253 @Directive15(argument53 : "stringValue50297") + field69066: Object2445 @Directive15(argument53 : "stringValue50298") + field69067: Object12712 @Directive15(argument53 : "stringValue50299") + field69103: Object12713 @Directive15(argument53 : "stringValue50333") + field69104: Object12713 @Directive15(argument53 : "stringValue50334") + field69105: Object1800 @Directive15(argument53 : "stringValue50335") + field69106: Object1800 @Directive15(argument53 : "stringValue50336") + field69107: Object1800 @Directive15(argument53 : "stringValue50337") + field69108: Object1800 @Directive15(argument53 : "stringValue50338") + field69109: Object1800 @Directive15(argument53 : "stringValue50339") + field69110: Object1800 @Directive15(argument53 : "stringValue50340") + field69111: Object6357 @Directive15(argument53 : "stringValue50341") + field69112: Object6357 @Directive15(argument53 : "stringValue50342") + field69113: Object1800 @Directive15(argument53 : "stringValue50343") + field69114: Object6347 @Directive15(argument53 : "stringValue50344") + field69115: Object6357 @Directive15(argument53 : "stringValue50345") + field69116: Object4016 @Directive15(argument53 : "stringValue50346") + field69117: Object4016 @Directive15(argument53 : "stringValue50347") + field69118: Object4016 @Directive15(argument53 : "stringValue50348") + field69119: Object4016 @Directive15(argument53 : "stringValue50349") + field69120: Object1778 @Directive15(argument53 : "stringValue50350") + field69121: Object4016 @Directive15(argument53 : "stringValue50351") + field69122: Object4016 @Directive15(argument53 : "stringValue50352") + field69123: Object1778 @Directive15(argument53 : "stringValue50353") + field69124: Object4016 @Directive15(argument53 : "stringValue50354") + field69125: Object4016 @Directive15(argument53 : "stringValue50355") + field69126: Object4016 @Directive15(argument53 : "stringValue50356") + field69127: Object4016 @Directive15(argument53 : "stringValue50357") + field69128: Object4016 @Directive15(argument53 : "stringValue50358") + field69129: Object4016 @Directive15(argument53 : "stringValue50359") + field69130: Object4016 @Directive15(argument53 : "stringValue50360") + field69131: Object4016 @Directive15(argument53 : "stringValue50361") + field69132: Object4016 @Directive15(argument53 : "stringValue50362") + field69133: Object4016 @Directive15(argument53 : "stringValue50363") + field69134: Object4016 @Directive15(argument53 : "stringValue50364") + field69135: Object4016 @Directive15(argument53 : "stringValue50365") + field69136: Object4016 @Directive15(argument53 : "stringValue50366") + field69137: Object4016 @Directive15(argument53 : "stringValue50367") + field69138: Object2258 @Directive15(argument53 : "stringValue50368") + field69139: Object2258 @Directive15(argument53 : "stringValue50369") + field69140: Object2423 @Directive15(argument53 : "stringValue50370") + field69141: Object2426 @Directive15(argument53 : "stringValue50371") + field69142: Object2428 @Directive15(argument53 : "stringValue50372") + field69143: Object2437 @Directive15(argument53 : "stringValue50373") + field69144: Object2441 @Directive15(argument53 : "stringValue50374") + field69145: Object2449 @Directive15(argument53 : "stringValue50375") + field69146: Object2449 @Directive15(argument53 : "stringValue50376") + field69147: Object2449 @Directive15(argument53 : "stringValue50377") + field69148: Object2449 @Directive15(argument53 : "stringValue50378") + field69149: Object2449 @Directive15(argument53 : "stringValue50379") + field69150: Object2449 @Directive15(argument53 : "stringValue50380") + field69151: Object2449 @Directive15(argument53 : "stringValue50381") + field69152: Object2449 @Directive15(argument53 : "stringValue50382") + field69153: Object2449 @Directive15(argument53 : "stringValue50383") + field69154: Interface112 @Directive15(argument53 : "stringValue50384") + field69155: Object2449 @Directive15(argument53 : "stringValue50385") + field69156: Object2449 @Directive15(argument53 : "stringValue50386") + field69157: Object2449 @Directive15(argument53 : "stringValue50387") + field69158: Object2449 @Directive15(argument53 : "stringValue50388") + field69159: Object2449 @Directive15(argument53 : "stringValue50389") + field69160: Object2449 @Directive15(argument53 : "stringValue50390") + field69161: Object2449 @Directive15(argument53 : "stringValue50391") + field69162: Object2449 @Directive15(argument53 : "stringValue50392") + field69163: Object2449 @Directive15(argument53 : "stringValue50393") + field69164: Object2449 @Directive15(argument53 : "stringValue50394") + field69165: Object2449 @Directive15(argument53 : "stringValue50395") + field69166: Object2449 @Directive15(argument53 : "stringValue50396") + field69167: Object6336 @Directive15(argument53 : "stringValue50397") + field69168: Object6336 @Directive15(argument53 : "stringValue50398") + field69169: Object6140 @Directive15(argument53 : "stringValue50399") + field69170: Object6140 @Directive15(argument53 : "stringValue50400") + field69171: Object6140 @Directive15(argument53 : "stringValue50401") + field69172: Object6140 @Directive15(argument53 : "stringValue50402") + field69173: Object6140 @Directive15(argument53 : "stringValue50403") + field69174: Object6615 @Directive15(argument53 : "stringValue50404") + field69175: Object6615 @Directive15(argument53 : "stringValue50405") + field69176: Object6615 @Directive15(argument53 : "stringValue50406") + field69177: Object1857 @Directive15(argument53 : "stringValue50407") + field69178: Object1857 @Directive15(argument53 : "stringValue50408") + field69179: Object1117 @Directive15(argument53 : "stringValue50409") + field69180: Object1133 @Directive15(argument53 : "stringValue50410") + field69181: Object6306 @Directive15(argument53 : "stringValue50411") + field69182: Object1208 @Directive15(argument53 : "stringValue50412") + field69183: Object1208 @Directive15(argument53 : "stringValue50413") + field69184: Object6430 @Directive15(argument53 : "stringValue50414") + field69185: Object6430 @Directive15(argument53 : "stringValue50415") + field69186: Object6430 @Directive15(argument53 : "stringValue50416") + field69187: Object6430 @Directive15(argument53 : "stringValue50417") + field69188: Object6430 @Directive15(argument53 : "stringValue50418") + field69189: Object6430 @Directive15(argument53 : "stringValue50419") + field69190: Object2361 @Directive15(argument53 : "stringValue50420") + field69191: Object2361 @Directive15(argument53 : "stringValue50421") + field69192: Object6407 @Directive15(argument53 : "stringValue50422") + field69193: Object6137 @Directive15(argument53 : "stringValue50423") + field69194: Object6137 @Directive15(argument53 : "stringValue50424") + field69195: Object6455 @Directive15(argument53 : "stringValue50425") + field69196: Object6455 @Directive15(argument53 : "stringValue50426") + field69197: Object6455 @Directive15(argument53 : "stringValue50427") + field69198: Object6455 @Directive15(argument53 : "stringValue50428") + field69199: Object6388 @Directive15(argument53 : "stringValue50429") + field69200: Object6631 @Directive15(argument53 : "stringValue50430") + field69201: Object6631 @Directive15(argument53 : "stringValue50431") + field69202: Object12716 @Directive15(argument53 : "stringValue50432") + field69208: Object6277 @Directive15(argument53 : "stringValue50444") + field69209: Object6277 @Directive15(argument53 : "stringValue50445") + field69210: Object6277 @Directive15(argument53 : "stringValue50446") + field69211: Object6277 @Directive15(argument53 : "stringValue50447") + field69212: Object6277 @Directive15(argument53 : "stringValue50448") + field69213: Object6277 @Directive15(argument53 : "stringValue50449") + field69214: Object6277 @Directive15(argument53 : "stringValue50450") + field69215: Object6277 @Directive15(argument53 : "stringValue50451") + field69216: Object6277 @Directive15(argument53 : "stringValue50452") + field69217: Object4322 @Directive15(argument53 : "stringValue50453") + field69218: Object6276 @Directive15(argument53 : "stringValue50454") + field69219: Object6276 @Directive15(argument53 : "stringValue50455") + field69220: Object6276 @Directive15(argument53 : "stringValue50456") + field69221: Object6276 @Directive15(argument53 : "stringValue50457") + field69222: Object6276 @Directive15(argument53 : "stringValue50458") + field69223: Object6276 @Directive15(argument53 : "stringValue50459") + field69224: Object6276 @Directive15(argument53 : "stringValue50460") + field69225: Object6276 @Directive15(argument53 : "stringValue50461") + field69226: Object6276 @Directive15(argument53 : "stringValue50462") + field69227: Object6276 @Directive15(argument53 : "stringValue50463") + field69228: Object6276 @Directive15(argument53 : "stringValue50464") + field69229: Interface99 @Directive15(argument53 : "stringValue50465") + field69230: Object6276 @Directive15(argument53 : "stringValue50466") + field69231: Object6276 @Directive15(argument53 : "stringValue50467") + field69232: Object6276 @Directive15(argument53 : "stringValue50468") + field69233: Object6276 @Directive15(argument53 : "stringValue50469") + field69234: Object4322 @Directive15(argument53 : "stringValue50470") + field69235: Object4322 @Directive15(argument53 : "stringValue50471") + field69236: Object4322 @Directive15(argument53 : "stringValue50472") + field69237: Object4322 @Directive15(argument53 : "stringValue50473") + field69238: Object6276 @Directive15(argument53 : "stringValue50474") + field69239: Object6417 @Directive15(argument53 : "stringValue50475") + field69240: Object6390 @Directive15(argument53 : "stringValue50476") + field69241: Object6390 @Directive15(argument53 : "stringValue50477") + field69242: Object6390 @Directive15(argument53 : "stringValue50478") + field69243: Object6390 @Directive15(argument53 : "stringValue50479") + field69244: Object6390 @Directive15(argument53 : "stringValue50480") + field69245: Object6390 @Directive15(argument53 : "stringValue50481") + field69246: Object2458 @Directive15(argument53 : "stringValue50482") + field69247: Object2458 @Directive15(argument53 : "stringValue50483") + field69248: Object2458 @Directive15(argument53 : "stringValue50484") + field69249: Object2458 @Directive15(argument53 : "stringValue50485") + field69250: Object6396 @Directive15(argument53 : "stringValue50486") + field69251: Object6396 @Directive15(argument53 : "stringValue50487") + field69252: Object1888 @Directive15(argument53 : "stringValue50488") + field69253: Object1888 @Directive15(argument53 : "stringValue50489") + field69254: Object1888 @Directive15(argument53 : "stringValue50490") + field69255: Object1888 @Directive15(argument53 : "stringValue50491") + field69256: Object1888 @Directive15(argument53 : "stringValue50492") + field69257: Object1888 @Directive15(argument53 : "stringValue50493") + field69258: Object1888 @Directive15(argument53 : "stringValue50494") + field69259: Object1888 @Directive15(argument53 : "stringValue50495") + field69260: Object1888 @Directive15(argument53 : "stringValue50496") + field69261: Object1888 @Directive15(argument53 : "stringValue50497") + field69262: Object1888 @Directive15(argument53 : "stringValue50498") + field69263: Object1888 @Directive15(argument53 : "stringValue50499") + field69264: Object1888 @Directive15(argument53 : "stringValue50500") + field69265: Object1888 @Directive15(argument53 : "stringValue50501") + field69266: Object1888 @Directive15(argument53 : "stringValue50502") + field69267: Object1888 @Directive15(argument53 : "stringValue50503") + field69268: Object1888 @Directive15(argument53 : "stringValue50504") + field69269: Object1888 @Directive15(argument53 : "stringValue50505") + field69270: Object1888 @Directive15(argument53 : "stringValue50506") + field69271: Object1888 @Directive15(argument53 : "stringValue50507") + field69272: Object1888 @Directive15(argument53 : "stringValue50508") + field69273: Object1888 @Directive15(argument53 : "stringValue50509") + field69274: Object1888 @Directive15(argument53 : "stringValue50510") + field69275: Object1888 @Directive15(argument53 : "stringValue50511") + field69276: Object1888 @Directive15(argument53 : "stringValue50512") + field69277: Object1888 @Directive15(argument53 : "stringValue50513") + field69278: Object1888 @Directive15(argument53 : "stringValue50514") + field69279: Object1888 @Directive15(argument53 : "stringValue50515") + field69280: Object1888 @Directive15(argument53 : "stringValue50516") + field69281: Object6137 @Directive15(argument53 : "stringValue50517") + field69282: Object6440 @Directive15(argument53 : "stringValue50518") + field69283: Object6440 @Directive15(argument53 : "stringValue50519") + field69284: Object6440 @Directive15(argument53 : "stringValue50520") + field69285: Object6440 @Directive15(argument53 : "stringValue50521") + field69286: Object6440 @Directive15(argument53 : "stringValue50522") + field69287: Object6440 @Directive15(argument53 : "stringValue50523") + field69288: Object6440 @Directive15(argument53 : "stringValue50524") + field69289: Object6440 @Directive15(argument53 : "stringValue50525") + field69290: Object6440 @Directive15(argument53 : "stringValue50526") + field69291: Object6440 @Directive15(argument53 : "stringValue50527") + field69292: Object6440 @Directive15(argument53 : "stringValue50528") + field69293: Object6440 @Directive15(argument53 : "stringValue50529") + field69294: Object6440 @Directive15(argument53 : "stringValue50530") + field69295: Object6440 @Directive15(argument53 : "stringValue50531") + field69296: Object6440 @Directive15(argument53 : "stringValue50532") + field69297: Object6440 @Directive15(argument53 : "stringValue50533") + field69298: Object6440 @Directive15(argument53 : "stringValue50534") + field69299: Object6440 @Directive15(argument53 : "stringValue50535") + field69300: Object6137 @Directive15(argument53 : "stringValue50536") + field69301: Object6440 @Directive15(argument53 : "stringValue50537") + field69302: Object6440 @Directive15(argument53 : "stringValue50538") + field69303: Object6440 @Directive15(argument53 : "stringValue50539") + field69304: Object6440 @Directive15(argument53 : "stringValue50540") + field69305: Object6440 @Directive15(argument53 : "stringValue50541") + field69306: Object6137 @Directive15(argument53 : "stringValue50542") + field69307: Object6137 @Directive15(argument53 : "stringValue50543") + field69308: Object6137 @Directive15(argument53 : "stringValue50544") + field69309: Object6440 @Directive15(argument53 : "stringValue50545") + field69310: Object6440 @Directive15(argument53 : "stringValue50546") + field69311: Object6440 @Directive15(argument53 : "stringValue50547") + field69312: Object6440 @Directive15(argument53 : "stringValue50548") + field69313: Object6440 @Directive15(argument53 : "stringValue50549") + field69314: Object6440 @Directive15(argument53 : "stringValue50550") + field69315: Object6440 @Directive15(argument53 : "stringValue50551") + field69316: Object6440 @Directive15(argument53 : "stringValue50552") + field69317: Object6440 @Directive15(argument53 : "stringValue50553") + field69318: Object6440 @Directive15(argument53 : "stringValue50554") + field69319: Object6440 @Directive15(argument53 : "stringValue50555") + field69320: Object6440 @Directive15(argument53 : "stringValue50556") + field69321: Object6440 @Directive15(argument53 : "stringValue50557") + field69322: Object6440 @Directive15(argument53 : "stringValue50558") + field69323: Object6440 @Directive15(argument53 : "stringValue50559") + field69324: Object6440 @Directive15(argument53 : "stringValue50560") + field69325: Object6440 @Directive15(argument53 : "stringValue50561") + field69326: Object6440 @Directive15(argument53 : "stringValue50562") + field69327: Object6440 @Directive15(argument53 : "stringValue50563") + field69328: Object6440 @Directive15(argument53 : "stringValue50564") + field69329: Object6440 @Directive15(argument53 : "stringValue50565") + field69330: Object6440 @Directive15(argument53 : "stringValue50566") + field69331: Object6440 @Directive15(argument53 : "stringValue50567") + field69332: Object6440 @Directive15(argument53 : "stringValue50568") + field69333: Object6440 @Directive15(argument53 : "stringValue50569") + field69334: Object6440 @Directive15(argument53 : "stringValue50570") + field69335: Object6440 @Directive15(argument53 : "stringValue50571") + field69336: Object6440 @Directive15(argument53 : "stringValue50572") + field69337: Object6440 @Directive15(argument53 : "stringValue50573") + field69338: Object6440 @Directive15(argument53 : "stringValue50574") + field69339: Object6440 @Directive15(argument53 : "stringValue50575") + field69340: Object6440 @Directive15(argument53 : "stringValue50576") + field69341: Object6440 @Directive15(argument53 : "stringValue50577") + field69342: Object6440 @Directive15(argument53 : "stringValue50578") + field69343: Object6440 @Directive15(argument53 : "stringValue50579") + field69344: Object6440 @Directive15(argument53 : "stringValue50580") + field69345: Object6440 @Directive15(argument53 : "stringValue50581") + field69346: Object6440 @Directive15(argument53 : "stringValue50582") + field69347: Object6440 @Directive15(argument53 : "stringValue50583") + field69348: Object6440 @Directive15(argument53 : "stringValue50584") + field69349: Object6440 @Directive15(argument53 : "stringValue50585") + field69350: Object6440 @Directive15(argument53 : "stringValue50586") + field69351: Object6440 @Directive15(argument53 : "stringValue50587") + field69352: Object6440 @Directive15(argument53 : "stringValue50588") +} + +type Object6138 @Directive22(argument62 : "stringValue29189") @Directive31 @Directive44(argument97 : ["stringValue29190", "stringValue29191"]) { + field29528: String +} + +type Object6139 @Directive2 @Directive22(argument62 : "stringValue29194") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue29195", "stringValue29196", "stringValue29197"]) @Directive45(argument98 : ["stringValue29198"]) @Directive45(argument98 : ["stringValue29199", "stringValue29200"]) @Directive45(argument98 : ["stringValue29201", "stringValue29202"]) { + field29532(argument1501: String, argument1502: String, argument1503: String): Object6140 @Directive18 @Directive26(argument67 : "stringValue29205", argument71 : "stringValue29203", argument72 : "stringValue29204", argument74 : "stringValue29206", argument75 : "stringValue29207") + field30301(argument1519: ID! @Directive25(argument65 : "stringValue30041"), argument1520: InputObject1384): Object1857 @Directive17 + field30302(argument1521: ID! @Directive25(argument65 : "stringValue30045")): Object4195 @Directive18 + field30303(argument1522: ID! @Directive25(argument65 : "stringValue30046")): Object6276 @Directive18 + field30321(argument1536: ID @Directive25(argument65 : "stringValue30080"), argument1537: ID!): Object6277 @Directive18 + field30351: Object6286 @Directive18 + field30354(argument1542: ID! @Directive25(argument65 : "stringValue30153"), argument1543: ID @Directive25(argument65 : "stringValue30154"), argument1544: Scalar3, argument1545: Scalar3, argument1546: Int, argument1547: Int, argument1548: Int): Object852 @Directive17 + field30355(argument1549: ID @Directive25(argument65 : "stringValue30155"), argument1550: ID @Directive25(argument65 : "stringValue30156"), argument1551: InputObject1384): Object1888 @Directive17 + field30356: Object6290 @Directive18 + field30357: Object6291 @Directive18 + field30358(argument1555: InputObject61): Object4008 @Directive18 + field30359: Object1208 + field30360: Object6293 + field30361: Object6295 @Directive18 + field30371: Object6306 @Directive17 @Directive26(argument66 : 503, argument67 : "stringValue30272", argument69 : "stringValue30273", argument71 : "stringValue30270", argument72 : "stringValue30271", argument74 : "stringValue30274") + field30416: Object6325 @Directive22(argument62 : "stringValue30369") @Directive26(argument66 : 504, argument67 : "stringValue30372", argument69 : "stringValue30373", argument71 : "stringValue30370", argument72 : "stringValue30371", argument74 : "stringValue30374") + field30461: Object6336 @Directive17 @Directive22(argument62 : "stringValue30417") @Directive26(argument66 : 505, argument67 : "stringValue30420", argument68 : "stringValue30421", argument69 : "stringValue30422", argument70 : "stringValue30423", argument71 : "stringValue30418", argument72 : "stringValue30419", argument73 : "stringValue30424", argument74 : "stringValue30425", argument75 : "stringValue30426") + field30591: Object6388 @Directive18 @Directive22(argument62 : "stringValue30722") + field30602(argument1621: ID!): Object2458 @Directive18 @Directive26(argument67 : "stringValue30735", argument71 : "stringValue30733", argument72 : "stringValue30734") + field30603(argument1622: String, argument1623: Int, argument1624: InputObject1402): Object6390 @Directive18 @Directive22(argument62 : "stringValue30736") @Directive26(argument66 : 506, argument67 : "stringValue30739", argument68 : "stringValue30740", argument71 : "stringValue30737", argument72 : "stringValue30738", argument73 : "stringValue30741") + field30641(argument1628: ID, argument1629: String, argument1630: Int, argument1631: Int): Object6396 @Directive18 + field30649(argument1636: ID!, argument1637: InputObject1403): Object6397 @Directive13(argument49 : "stringValue30778") + field30654: Object6401 @Directive18 + field30662: Object6407 @Directive18 + field30709: Object6417 @Directive18 + field30712: Object6418 @Directive17 + field30764: Object6428 @Directive18 + field30772: Object6430 @Directive18 + field30780: Object6433 @Directive18 + field30782: Object6434 @Directive18 + field30785: Object6439 @Directive22(argument62 : "stringValue30978") + field30873(argument1660: String, argument1661: String!, argument1662: ID, argument1663: String, argument1664: [InputObject1407]): Object6447 @Directive18 + field30874(argument1665: InputObject1408): Object6450 @Directive18 + field30885: Object6455 @Directive18 + field30892: Object6457 + field30916: Object6464 + field30918: Object6465 + field30977: Object6478 @Directive18 + field30978: Object6479 + field30979: Object6480 + field30993: Object6482 + field30994: Object6485 + field31023: Object6497 + field31040: Object6506 + field31042: Object6511 + field31044: Object6514 + field31045: Object6515 @Directive18 @Directive26(argument67 : "stringValue31421", argument71 : "stringValue31419", argument72 : "stringValue31420", argument74 : "stringValue31422", argument75 : "stringValue31423") + field31073: Object6526 @Directive18 + field31074: Object6527 + field31076: Object6532 + field31078: Object6537 + field31161: Object6560 + field31167: Object6565 + field31225: Object6575 + field31227: Object6580 + field31231: Object6585 + field31232(argument1731: ID!, argument1732: ID, argument1733: Enum891, argument1734: Enum220): Object6588 @Directive18 + field31234: Object6591 + field31236: Object6596 + field31237: Object6600 + field31239: Object6605 + field31242: Object6606 @Directive17 @Directive22(argument62 : "stringValue31880") @Directive26(argument66 : 509, argument67 : "stringValue31883", argument68 : "stringValue31884", argument69 : "stringValue31885", argument70 : "stringValue31886", argument71 : "stringValue31881", argument72 : "stringValue31882", argument73 : "stringValue31887", argument74 : "stringValue31888", argument75 : "stringValue31889") + field31243: Object6610 + field31244: Object6611 + field31245(argument1745: String): Object6615 @Directive18 + field31251: Object6137 @deprecated + field31252: Object6620 @Directive17 @Directive22(argument62 : "stringValue31955") @deprecated + field31266: Object6630 @Directive18 + field31311: Object6643 + field31366(argument1753: String @deprecated, argument1754: InputObject1448): Object995 @Directive18 +} + +type Object614 @Directive22(argument62 : "stringValue3173") @Directive31 @Directive44(argument97 : ["stringValue3174", "stringValue3175"]) { + field3366: Int + field3367: String + field3368: String + field3369: Boolean +} + +type Object6140 implements Interface99 @Directive22(argument62 : "stringValue29208") @Directive31 @Directive44(argument97 : ["stringValue29209", "stringValue29210"]) @Directive45(argument98 : ["stringValue29211"]) { + field29533(argument1504: String): Scalar4! @Directive49(argument102 : "stringValue29212") + field29534(argument1505: String): [Object6141!]! @Directive49(argument102 : "stringValue29213") + field29538(argument1506: String, argument1507: String): [Object6142]! @Directive49(argument102 : "stringValue29218") + field29546: Object1 @Directive14(argument51 : "stringValue29227") + field30296: String @Directive18 + field30297(argument1518: String): Object4016 @Directive14(argument51 : "stringValue30037") + field30298: Object2258 @Directive14(argument51 : "stringValue30038") + field30299: Object1801 @Directive14(argument51 : "stringValue30039") + field30300: Boolean @Directive14(argument51 : "stringValue30040") @deprecated + field8997: Object6143 @Directive18 +} + +type Object6141 @Directive22(argument62 : "stringValue29214") @Directive31 @Directive44(argument97 : ["stringValue29215", "stringValue29216", "stringValue29217"]) { + field29535: String! + field29536: Scalar4 + field29537: Scalar4 +} + +type Object6142 @Directive22(argument62 : "stringValue29219") @Directive31 @Directive44(argument97 : ["stringValue29220", "stringValue29221", "stringValue29222"]) { + field29539: String + field29540: String + field29541: Enum1595! + field29542: String! + field29543: String! + field29544: String + field29545: Interface3! +} + +type Object6143 implements Interface111 & Interface112 & Interface163 & Interface36 & Interface96 @Directive22(argument62 : "stringValue29736") @Directive30(argument86 : "stringValue29743") @Directive42(argument96 : ["stringValue29737"]) @Directive44(argument97 : ["stringValue29744", "stringValue29745"]) @Directive45(argument98 : ["stringValue29746", "stringValue29747"]) @Directive45(argument98 : ["stringValue29748"]) @Directive7(argument11 : "stringValue29742", argument14 : "stringValue29739", argument15 : "stringValue29741", argument16 : "stringValue29740", argument17 : "stringValue29738") { + field10398: Enum498 @Directive13(argument49 : "stringValue29810") @Directive30(argument80 : true) + field10486: Scalar4 @Directive30(argument80 : true) + field10488: Scalar4 @Directive30(argument80 : true) + field12143(argument1515: [Enum459], argument333: Boolean, argument334: String, argument335: Int, argument336: String, argument337: Int): Object6255 @Directive30(argument80 : true) + field12291: Int @Directive30(argument80 : true) + field12295: Int @Directive30(argument80 : true) + field12300: Object2412 @Directive18 @Directive30(argument80 : true) + field12305: Object1904 @Directive13(argument49 : "stringValue29811") @Directive30(argument80 : true) + field12309: Int @Directive30(argument80 : true) @deprecated + field12310: Int @Directive30(argument80 : true) @deprecated + field12311: Int @Directive30(argument80 : true) @deprecated + field12318: Object2414 @Directive18 @Directive30(argument80 : true) + field18029: Enum212 @Directive13(argument49 : "stringValue29812") @Directive30(argument80 : true) + field18111: Scalar2! @Directive3(argument1 : "stringValue29757", argument3 : "stringValue29756") @Directive30(argument80 : true) + field18381(argument696: Enum926): Object6258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue29939") + field18420: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue29817") + field19237: Object6253 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue29912") + field2312: ID! @Directive30(argument80 : true) + field29547: Object6144 @Directive13(argument49 : "stringValue29881") @Directive30(argument80 : true) + field30146: Scalar2! @Directive3(argument1 : "stringValue29750", argument3 : "stringValue29749") @Directive30(argument80 : true) + field30147: Int @Directive3(argument3 : "stringValue29751") @Directive30(argument80 : true) + field30148: Scalar2! @Directive3(argument1 : "stringValue29753", argument3 : "stringValue29752") @Directive30(argument80 : true) + field30149: Scalar2! @Directive3(argument1 : "stringValue29755", argument3 : "stringValue29754") @Directive30(argument80 : true) + field30150: String @Directive30(argument80 : true) + field30151: Scalar4 @Directive30(argument80 : true) + field30152: Int @Directive30(argument80 : true) + field30153: Int @Directive30(argument80 : true) + field30154: Scalar4 @Directive30(argument80 : true) + field30155: Scalar4 @Directive30(argument80 : true) + field30156: Boolean @Directive30(argument80 : true) + field30157: Int @Directive30(argument80 : true) + field30158: Int @Directive30(argument80 : true) + field30159: Int @Directive30(argument80 : true) + field30160: Int @Directive30(argument80 : true) + field30161: Int @Directive30(argument80 : true) + field30162: String @Directive30(argument80 : true) + field30163: Float @Directive30(argument80 : true) + field30164: Boolean @Directive30(argument80 : true) + field30165: Int @Directive3(argument3 : "stringValue29758") @Directive30(argument80 : true) + field30166: Int @Directive14(argument51 : "stringValue29759", argument52 : "stringValue29760") @Directive30(argument80 : true) + field30167: Int @Directive14(argument51 : "stringValue29761", argument52 : "stringValue29762") @Directive30(argument80 : true) + field30168: String @Directive30(argument80 : true) + field30169: String @Directive3(argument1 : "stringValue29764", argument3 : "stringValue29763") @Directive30(argument80 : true) + field30170: Int @Directive3(argument3 : "stringValue29765") @Directive30(argument80 : true) + field30171: Int @Directive3(argument1 : "stringValue29767", argument3 : "stringValue29766") @Directive30(argument80 : true) + field30172: Int @Directive3(argument1 : "stringValue29769", argument3 : "stringValue29768") @Directive30(argument80 : true) + field30173: Int @Directive3(argument1 : "stringValue29771", argument3 : "stringValue29770") @Directive30(argument80 : true) + field30174: String @Directive30(argument80 : true) @deprecated + field30175: String @Directive30(argument80 : true) @deprecated + field30176: Scalar2 @Directive30(argument80 : true) + field30177: Int @Directive13(argument49 : "stringValue29775") @Directive30(argument80 : true) + field30184: [Enum1624] @Directive30(argument80 : true) + field30185: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue29818") + field30186: Object6246 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue29819") + field30187: Object6247 @Directive17 @Directive30(argument80 : true) + field30191: Object6248 @Directive30(argument80 : true) @Directive4(argument4 : "stringValue29843", argument5 : "stringValue29842") + field30219: Object6251 @Directive13(argument49 : "stringValue29882") @Directive30(argument80 : true) @deprecated + field30220: Object6252 @Directive13(argument49 : "stringValue29902") @Directive30(argument80 : true) + field30226: Object6257 @Directive13(argument49 : "stringValue29934") @Directive30(argument80 : true) + field30233: Boolean @Directive17 @Directive30(argument80 : true) @deprecated + field30234: Object6259 @Directive13(argument49 : "stringValue29951") @Directive30(argument80 : true) + field30240: Object6261 @Directive18 @Directive30(argument80 : true) + field30253: String @Directive17 @Directive30(argument80 : true) @deprecated + field30254: String @Directive17 @Directive30(argument80 : true) @deprecated + field30255: String @Directive17 @Directive30(argument80 : true) @deprecated + field30256: Boolean @Directive17 @Directive30(argument80 : true) @deprecated + field30257: Boolean @Directive17 @Directive30(argument80 : true) @deprecated + field30258: Scalar2 @Directive17 @Directive30(argument80 : true) @deprecated + field30259: Object6264 @Directive17 @Directive30(argument80 : true) @deprecated + field30264: [Object6264] @Directive17 @Directive30(argument80 : true) @deprecated + field30265: [Object6264] @Directive17 @Directive30(argument80 : true) @deprecated + field30266(argument1516: Int, argument1517: [Enum1626]): Object6265 @Directive30(argument80 : true) + field30282: Boolean! @Directive18 @Directive30(argument80 : true) + field30283: Boolean! @Directive18 @Directive30(argument80 : true) + field30284: [Object6262!] @Directive17 @Directive30(argument80 : true) @deprecated + field30285: Object6269 @Directive22(argument62 : "stringValue30007") @Directive30(argument80 : true) @Directive4(argument5 : "stringValue30006") + field30294: Object6273 @Directive22(argument62 : "stringValue30025") @Directive30(argument80 : true) + field8988: Scalar4 @Directive3(argument3 : "stringValue29773") @Directive30(argument80 : true) + field8989: Scalar4 @Directive3(argument3 : "stringValue29774") @Directive30(argument80 : true) + field8990: Scalar3 @Directive30(argument80 : true) + field8991: Scalar3 @Directive30(argument80 : true) + field8992: Int @Directive3(argument3 : "stringValue29772") @Directive30(argument80 : true) @deprecated + field8993(argument402: String): Object4016 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue29816") + field9004(argument1514: [Enum1622]): Object6243 @Directive30(argument80 : true) + field9021: String @Directive30(argument80 : true) + field9023: String @Directive13(argument49 : "stringValue29950") @Directive30(argument80 : true) + field9087: Scalar4 @Directive30(argument80 : true) + field9096: Int @Directive30(argument80 : true) + field9142: Scalar4 @Directive30(argument80 : true) +} + +type Object6144 implements Interface36 @Directive22(argument62 : "stringValue29230") @Directive42(argument96 : ["stringValue29231", "stringValue29232"]) @Directive44(argument97 : ["stringValue29239"]) @Directive7(argument11 : "stringValue29238", argument12 : "stringValue29237", argument13 : "stringValue29235", argument14 : "stringValue29234", argument16 : "stringValue29236", argument17 : "stringValue29233") { + field10437: Scalar2 @Directive3(argument3 : "stringValue29240") + field11765: Int @Directive3(argument3 : "stringValue29242") + field2312: ID! + field29548: String @Directive3(argument3 : "stringValue29243") + field29549: String @Directive3(argument3 : "stringValue29245") + field29550: Object6145 @Directive3(argument3 : "stringValue29246") + field29624: [Object6145] @Directive3(argument3 : "stringValue29312") + field29625: [Object6145] @Directive3(argument3 : "stringValue29313") + field29626(argument1508: String, argument1509: Int, argument1510: String, argument1511: Int, argument1512: String, argument1513: String): Object6158 + field30009: [Object6222] + field30124: Object6240 + field30131: Boolean + field30132: Object6223 + field30133: [Object6241] @Directive17 + field30144: [Object6242] + field30145: String + field9029: Enum384 + field9087: Scalar4 @Directive3(argument3 : "stringValue29244") + field9676: String @Directive3(argument3 : "stringValue29241") +} + +type Object6145 @Directive42(argument96 : ["stringValue29247", "stringValue29248", "stringValue29249"]) @Directive44(argument97 : ["stringValue29250"]) { + field29551: String + field29552: Int + field29553: Enum1596 + field29554: Enum1597 + field29555: Enum1598 + field29556: [Object6146] + field29601: Object6152 + field29621: Int + field29622: String + field29623: Scalar4 +} + +type Object6146 @Directive42(argument96 : ["stringValue29260", "stringValue29261", "stringValue29262"]) @Directive44(argument97 : ["stringValue29263"]) { + field29557: String + field29558: Enum1599 + field29559: String + field29560: Enum384 + field29561: String + field29562: [Object6147] + field29578: String + field29579: Scalar4 + field29580: Scalar4 + field29581: Object6150 + field29596: Object1897 + field29597: Object6151 +} + +type Object6147 @Directive42(argument96 : ["stringValue29267", "stringValue29268", "stringValue29269"]) @Directive44(argument97 : ["stringValue29270"]) { + field29563: String + field29564: String + field29565: Enum385 + field29566: Int + field29567: [Object6148] + field29575: Scalar2 + field29576: Object6149 +} + +type Object6148 @Directive42(argument96 : ["stringValue29271", "stringValue29272", "stringValue29273"]) @Directive44(argument97 : ["stringValue29274"]) { + field29568: String + field29569: String + field29570: Enum386 + field29571: Object438 + field29572: Object438 + field29573: Object438 + field29574: String +} + +type Object6149 @Directive42(argument96 : ["stringValue29275", "stringValue29276", "stringValue29277"]) @Directive44(argument97 : ["stringValue29278"]) { + field29577: Scalar3 +} + +type Object615 @Directive22(argument62 : "stringValue3176") @Directive31 @Directive44(argument97 : ["stringValue3177", "stringValue3178"]) { + field3371: String + field3372: String +} + +type Object6150 @Directive42(argument96 : ["stringValue29279", "stringValue29280", "stringValue29281"]) @Directive44(argument97 : ["stringValue29282"]) { + field29582: String + field29583: String + field29584: Float + field29585: Float + field29586: Float + field29587: Float + field29588: Float + field29589: String + field29590: Float + field29591: Float + field29592: Float + field29593: Float + field29594: Float + field29595: Scalar2 +} + +type Object6151 @Directive42(argument96 : ["stringValue29283", "stringValue29284", "stringValue29285"]) @Directive44(argument97 : ["stringValue29286"]) { + field29598: String + field29599: String + field29600: Scalar2 +} + +type Object6152 @Directive42(argument96 : ["stringValue29287", "stringValue29288", "stringValue29289"]) @Directive44(argument97 : ["stringValue29290"]) { + field29602: String + field29603: String + field29604: Enum382 + field29605: Object6153 + field29613: String + field29614: [Object6157] + field29620: Object6157 @Directive3(argument3 : "stringValue29311") +} + +type Object6153 @Directive42(argument96 : ["stringValue29291", "stringValue29292", "stringValue29293"]) @Directive44(argument97 : ["stringValue29294"]) { + field29606: Object6154 + field29608: Object6155 + field29611: Object6156 +} + +type Object6154 @Directive42(argument96 : ["stringValue29295", "stringValue29296", "stringValue29297"]) @Directive44(argument97 : ["stringValue29298"]) { + field29607: Int +} + +type Object6155 @Directive42(argument96 : ["stringValue29299", "stringValue29300", "stringValue29301"]) @Directive44(argument97 : ["stringValue29302"]) { + field29609: Int + field29610: Enum392 +} + +type Object6156 @Directive42(argument96 : ["stringValue29303", "stringValue29304", "stringValue29305"]) @Directive44(argument97 : ["stringValue29306"]) { + field29612: Int +} + +type Object6157 @Directive42(argument96 : ["stringValue29307", "stringValue29308", "stringValue29309"]) @Directive44(argument97 : ["stringValue29310"]) { + field29615: String + field29616: String + field29617: Int + field29618: Scalar4 + field29619: Boolean +} + +type Object6158 implements Interface92 @Directive42(argument96 : ["stringValue29314"]) @Directive44(argument97 : ["stringValue29320"]) @Directive8(argument21 : "stringValue29316", argument23 : "stringValue29319", argument24 : "stringValue29315", argument25 : "stringValue29317", argument27 : "stringValue29318") { + field8384: Object753! + field8385: [Object6159] +} + +type Object6159 implements Interface93 @Directive42(argument96 : ["stringValue29321"]) @Directive44(argument97 : ["stringValue29322"]) { + field8386: String! + field8999: Object6160 +} + +type Object616 @Directive20(argument58 : "stringValue3180", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3179") @Directive31 @Directive44(argument97 : ["stringValue3181", "stringValue3182"]) { + field3379: [String!] + field3380: String + field3381: String + field3382: String + field3383: String + field3384: String + field3385: String + field3386: String + field3387: String + field3388: Boolean +} + +type Object6160 @Directive12 @Directive42(argument96 : ["stringValue29323", "stringValue29324", "stringValue29325"]) @Directive44(argument97 : ["stringValue29326"]) { + field29627: Object6161 + field29652: String + field29653: Object6164 @Directive4(argument5 : "stringValue29348") +} + +type Object6161 @Directive20(argument58 : "stringValue29329", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue29327") @Directive42(argument96 : ["stringValue29328"]) @Directive44(argument97 : ["stringValue29330"]) { + field29628: String! @Directive40 + field29629: String! @Directive40 + field29630: Object6162 @Directive40 + field29633: String @Directive40 + field29634: Enum1601! @Directive41 + field29635: String! @Directive40 + field29636: Object438! @Directive41 + field29637: String @Directive40 @deprecated + field29638: Enum1602 @Directive41 + field29639: Object6163 @Directive40 + field29649: String! @Directive41 + field29650: Int @Directive41 + field29651: String @Directive40 +} + +type Object6162 @Directive20(argument58 : "stringValue29333", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue29331") @Directive42(argument96 : ["stringValue29332"]) @Directive44(argument97 : ["stringValue29334"]) { + field29631: Enum1600 @Directive41 + field29632: String @Directive40 +} + +type Object6163 @Directive42(argument96 : ["stringValue29344", "stringValue29345", "stringValue29346"]) @Directive44(argument97 : ["stringValue29347"]) { + field29640: String + field29641: String + field29642: String + field29643: String + field29644: String + field29645: String + field29646: String + field29647: String + field29648: Boolean +} + +type Object6164 implements Interface36 @Directive22(argument62 : "stringValue29349") @Directive42(argument96 : ["stringValue29350", "stringValue29351"]) @Directive44(argument97 : ["stringValue29358"]) @Directive7(argument11 : "stringValue29357", argument12 : "stringValue29355", argument13 : "stringValue29354", argument14 : "stringValue29353", argument16 : "stringValue29356", argument17 : "stringValue29352") { + field2312: ID! + field29654: Int @Directive3(argument3 : "stringValue29360") + field29655: String @Directive3(argument3 : "stringValue29361") + field29656: Int @Directive3(argument3 : "stringValue29362") + field29657: Enum1603 @Directive3(argument3 : "stringValue29363") + field29658: String @Directive3(argument3 : "stringValue29367") + field29659: [Object6165] + field9087: Scalar4 @Directive3(argument3 : "stringValue29368") + field9142: Scalar4 @Directive3(argument3 : "stringValue29369") + field9676: String @Directive3(argument3 : "stringValue29359") +} + +type Object6165 @Directive42(argument96 : ["stringValue29370", "stringValue29371", "stringValue29372"]) @Directive44(argument97 : ["stringValue29373"]) { + field29660: Object6166 + field30005: String + field30006: Object6221 +} + +type Object6166 @Directive42(argument96 : ["stringValue29374", "stringValue29375", "stringValue29376"]) @Directive44(argument97 : ["stringValue29377"]) { + field29661: String! + field29662: String! + field29663: String + field29664: String + field29665: Enum1604 + field29666: Object438 + field29667: Enum1602 + field29668: String + field29669: Object6167 + field30004: Scalar4 +} + +type Object6167 @Directive42(argument96 : ["stringValue29381", "stringValue29382", "stringValue29383"]) @Directive44(argument97 : ["stringValue29384"]) { + field29670: Object6168 + field29673: Object6169 + field29676: Object6170 + field29680: Object6171 + field29682: Object6172 + field29686: Object6173 + field29696: Object6174 + field29699: Object6175 + field29703: Object6176 + field29711: Object6177 + field29721: Object6178 + field29724: Object6179 + field29733: Object6180 + field29752: Object6184 + field29765: Object6185 + field29791: Object6190 + field29807: Object6191 + field29808: Object6192 + field29811: Object6193 + field29817: Object6194 + field29827: Object6195 + field29845: Object6196 + field29851: Object6197 + field29857: Object6198 + field29863: Object6199 + field29874: Object6200 + field29885: Object6201 + field29890: Object6202 + field29892: Object6203 + field29894: Object6204 + field29898: Object6205 + field29904: Object6206 + field29907: Object6207 + field29917: Object6208 + field29921: Object6209 + field29924: Object6210 + field29927: Object6211 + field29934: Object6212 + field29938: Object6213 + field29943: Object6215 + field29945: Object6216 + field29956: Object6217 + field29996: Object6218 + field29998: Object6219 + field30001: Object6220 +} + +type Object6168 @Directive42(argument96 : ["stringValue29385", "stringValue29386", "stringValue29387"]) @Directive44(argument97 : ["stringValue29388"]) { + field29671: String + field29672: String +} + +type Object6169 @Directive42(argument96 : ["stringValue29389", "stringValue29390", "stringValue29391"]) @Directive44(argument97 : ["stringValue29392"]) { + field29674: String + field29675: String +} + +type Object617 @Directive20(argument58 : "stringValue3184", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3183") @Directive31 @Directive44(argument97 : ["stringValue3185", "stringValue3186"]) { + field3389: String + field3390: String + field3391: String +} + +type Object6170 @Directive42(argument96 : ["stringValue29393", "stringValue29394", "stringValue29395"]) @Directive44(argument97 : ["stringValue29396"]) { + field29677: String + field29678: String + field29679: String +} + +type Object6171 @Directive42(argument96 : ["stringValue29397", "stringValue29398", "stringValue29399"]) @Directive44(argument97 : ["stringValue29400"]) { + field29681: String +} + +type Object6172 @Directive42(argument96 : ["stringValue29401", "stringValue29402", "stringValue29403"]) @Directive44(argument97 : ["stringValue29404"]) { + field29683: String + field29684: String + field29685: String +} + +type Object6173 @Directive42(argument96 : ["stringValue29405", "stringValue29406", "stringValue29407"]) @Directive44(argument97 : ["stringValue29408"]) { + field29687: Boolean + field29688: String + field29689: String + field29690: String + field29691: String + field29692: Boolean + field29693: String + field29694: String + field29695: String +} + +type Object6174 @Directive42(argument96 : ["stringValue29409", "stringValue29410", "stringValue29411"]) @Directive44(argument97 : ["stringValue29412"]) { + field29697: String + field29698: String +} + +type Object6175 @Directive42(argument96 : ["stringValue29413", "stringValue29414", "stringValue29415"]) @Directive44(argument97 : ["stringValue29416"]) { + field29700: String + field29701: String + field29702: Scalar2 +} + +type Object6176 @Directive42(argument96 : ["stringValue29417", "stringValue29418", "stringValue29419"]) @Directive44(argument97 : ["stringValue29420"]) { + field29704: String + field29705: String + field29706: String + field29707: String + field29708: String + field29709: String + field29710: String +} + +type Object6177 @Directive42(argument96 : ["stringValue29421", "stringValue29422", "stringValue29423"]) @Directive44(argument97 : ["stringValue29424"]) { + field29712: Enum1605 + field29713: String + field29714: String + field29715: String + field29716: String + field29717: String + field29718: String + field29719: Enum1606 + field29720: String +} + +type Object6178 @Directive42(argument96 : ["stringValue29431", "stringValue29432", "stringValue29433"]) @Directive44(argument97 : ["stringValue29434"]) { + field29722: String + field29723: String +} + +type Object6179 @Directive42(argument96 : ["stringValue29435", "stringValue29436", "stringValue29437"]) @Directive44(argument97 : ["stringValue29438"]) { + field29725: String + field29726: String + field29727: String + field29728: String + field29729: Enum1607 + field29730: String + field29731: String + field29732: String +} + +type Object618 @Directive20(argument58 : "stringValue3188", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3187") @Directive31 @Directive44(argument97 : ["stringValue3189", "stringValue3190"]) { + field3392: String + field3393: String + field3394: String + field3395: String + field3396: String + field3397: String + field3398: String + field3399: String + field3400: String + field3401: String + field3402: String + field3403: String + field3404: String + field3405: String + field3406: String +} + +type Object6180 @Directive42(argument96 : ["stringValue29442", "stringValue29443", "stringValue29444"]) @Directive44(argument97 : ["stringValue29445"]) { + field29734: String + field29735: String + field29736: String + field29737: Object6181 + field29748: String + field29749: String + field29750: Enum1608 + field29751: Boolean +} + +type Object6181 @Directive42(argument96 : ["stringValue29446", "stringValue29447", "stringValue29448"]) @Directive44(argument97 : ["stringValue29449"]) { + field29738: String + field29739: String + field29740: String + field29741: String + field29742: String + field29743: String + field29744: Object6182 +} + +type Object6182 @Directive42(argument96 : ["stringValue29450", "stringValue29451", "stringValue29452"]) @Directive44(argument97 : ["stringValue29453"]) { + field29745: Object6183 +} + +type Object6183 @Directive42(argument96 : ["stringValue29454", "stringValue29455", "stringValue29456"]) @Directive44(argument97 : ["stringValue29457"]) { + field29746: String + field29747: String +} + +type Object6184 @Directive42(argument96 : ["stringValue29461", "stringValue29462", "stringValue29463"]) @Directive44(argument97 : ["stringValue29464"]) { + field29753: String + field29754: String + field29755: String + field29756: Boolean + field29757: Boolean + field29758: String + field29759: String + field29760: String + field29761: String + field29762: String + field29763: String + field29764: String +} + +type Object6185 @Directive42(argument96 : ["stringValue29465", "stringValue29466", "stringValue29467"]) @Directive44(argument97 : ["stringValue29468"]) { + field29766: String + field29767: String + field29768: String + field29769: String + field29770: Object6186 + field29775: String + field29776: Object6187 + field29780: Boolean + field29781: String + field29782: String + field29783: Scalar2 + field29784: Object6188 + field29789: Object6189 +} + +type Object6186 @Directive42(argument96 : ["stringValue29469", "stringValue29470", "stringValue29471"]) @Directive44(argument97 : ["stringValue29472"]) { + field29771: String + field29772: String + field29773: String + field29774: String +} + +type Object6187 @Directive42(argument96 : ["stringValue29473", "stringValue29474", "stringValue29475"]) @Directive44(argument97 : ["stringValue29476"]) { + field29777: String + field29778: String + field29779: String +} + +type Object6188 @Directive42(argument96 : ["stringValue29477", "stringValue29478", "stringValue29479"]) @Directive44(argument97 : ["stringValue29480"]) { + field29785: String + field29786: String + field29787: String + field29788: String +} + +type Object6189 @Directive42(argument96 : ["stringValue29481", "stringValue29482", "stringValue29483"]) @Directive44(argument97 : ["stringValue29484"]) { + field29790: Enum1609 +} + +type Object619 @Directive20(argument58 : "stringValue3192", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3191") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3193", "stringValue3194"]) { + field3407: String + field3408: [String] + field3409: [Object620] + field3415: Object621 +} + +type Object6190 @Directive42(argument96 : ["stringValue29488", "stringValue29489", "stringValue29490"]) @Directive44(argument97 : ["stringValue29491"]) { + field29792: String + field29793: String + field29794: String + field29795: String + field29796: String + field29797: String + field29798: String + field29799: String + field29800: String + field29801: String + field29802: String + field29803: Object6191 + field29806: Boolean +} + +type Object6191 @Directive42(argument96 : ["stringValue29492", "stringValue29493", "stringValue29494"]) @Directive44(argument97 : ["stringValue29495"]) { + field29804: String + field29805: String +} + +type Object6192 @Directive42(argument96 : ["stringValue29496", "stringValue29497", "stringValue29498"]) @Directive44(argument97 : ["stringValue29499"]) { + field29809: String + field29810: String +} + +type Object6193 @Directive42(argument96 : ["stringValue29500", "stringValue29501", "stringValue29502"]) @Directive44(argument97 : ["stringValue29503"]) { + field29812: String + field29813: String + field29814: String + field29815: Float + field29816: String +} + +type Object6194 @Directive42(argument96 : ["stringValue29504", "stringValue29505", "stringValue29506"]) @Directive44(argument97 : ["stringValue29507"]) { + field29818: String + field29819: String + field29820: Scalar4 + field29821: String + field29822: String + field29823: Int + field29824: String + field29825: String + field29826: String +} + +type Object6195 @Directive42(argument96 : ["stringValue29508", "stringValue29509", "stringValue29510"]) @Directive44(argument97 : ["stringValue29511"]) { + field29828: String + field29829: Scalar2 + field29830: Int + field29831: String + field29832: String + field29833: String + field29834: String + field29835: Scalar4 + field29836: String + field29837: String + field29838: Enum1610 + field29839: String + field29840: Enum1611 + field29841: String + field29842: Boolean + field29843: String + field29844: String +} + +type Object6196 @Directive42(argument96 : ["stringValue29518", "stringValue29519", "stringValue29520"]) @Directive44(argument97 : ["stringValue29521"]) { + field29846: String + field29847: Scalar2 + field29848: String + field29849: String + field29850: String +} + +type Object6197 @Directive42(argument96 : ["stringValue29522", "stringValue29523", "stringValue29524"]) @Directive44(argument97 : ["stringValue29525"]) { + field29852: Int + field29853: String + field29854: Int + field29855: String + field29856: String +} + +type Object6198 @Directive42(argument96 : ["stringValue29526", "stringValue29527", "stringValue29528"]) @Directive44(argument97 : ["stringValue29529"]) { + field29858: String + field29859: String + field29860: String + field29861: String + field29862: Float +} + +type Object6199 @Directive42(argument96 : ["stringValue29530", "stringValue29531", "stringValue29532"]) @Directive44(argument97 : ["stringValue29533"]) { + field29864: String + field29865: String + field29866: String + field29867: String + field29868: String + field29869: String + field29870: String + field29871: String + field29872: Float + field29873: Float +} + +type Object62 @Directive21(argument61 : "stringValue278") @Directive44(argument97 : ["stringValue277"]) { + field399: String + field400: String + field401: Object35 + field402: String + field403: String + field404: String + field405: String + field406: String + field407: [Object63] @deprecated + field418: String + field419: String + field420: String + field421: Enum30 +} + +type Object620 @Directive20(argument58 : "stringValue3196", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3195") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3197", "stringValue3198"]) { + field3410: String + field3411: String + field3412: String + field3413: Enum10 + field3414: [Object477!] +} + +type Object6200 @Directive42(argument96 : ["stringValue29534", "stringValue29535", "stringValue29536"]) @Directive44(argument97 : ["stringValue29537"]) { + field29875: Scalar2 + field29876: Scalar2 + field29877: String + field29878: String + field29879: String + field29880: String + field29881: String + field29882: String + field29883: String + field29884: [String] +} + +type Object6201 @Directive42(argument96 : ["stringValue29538", "stringValue29539", "stringValue29540"]) @Directive44(argument97 : ["stringValue29541"]) { + field29886: Scalar2 + field29887: Scalar2 + field29888: String + field29889: String +} + +type Object6202 @Directive42(argument96 : ["stringValue29542", "stringValue29543", "stringValue29544"]) @Directive44(argument97 : ["stringValue29545"]) { + field29891: String +} + +type Object6203 @Directive42(argument96 : ["stringValue29546", "stringValue29547", "stringValue29548"]) @Directive44(argument97 : ["stringValue29549"]) { + field29893: String +} + +type Object6204 @Directive42(argument96 : ["stringValue29550", "stringValue29551", "stringValue29552"]) @Directive44(argument97 : ["stringValue29553"]) { + field29895: String + field29896: String + field29897: String +} + +type Object6205 @Directive42(argument96 : ["stringValue29554", "stringValue29555", "stringValue29556"]) @Directive44(argument97 : ["stringValue29557"]) { + field29899: String + field29900: String + field29901: String + field29902: String + field29903: String +} + +type Object6206 @Directive42(argument96 : ["stringValue29558", "stringValue29559", "stringValue29560"]) @Directive44(argument97 : ["stringValue29561"]) { + field29905: String + field29906: String +} + +type Object6207 @Directive42(argument96 : ["stringValue29562", "stringValue29563", "stringValue29564"]) @Directive44(argument97 : ["stringValue29565"]) { + field29908: String + field29909: String + field29910: String + field29911: String + field29912: String + field29913: String + field29914: String + field29915: String + field29916: String +} + +type Object6208 @Directive42(argument96 : ["stringValue29566", "stringValue29567", "stringValue29568"]) @Directive44(argument97 : ["stringValue29569"]) { + field29918: String + field29919: String + field29920: String +} + +type Object6209 @Directive42(argument96 : ["stringValue29570", "stringValue29571", "stringValue29572"]) @Directive44(argument97 : ["stringValue29573"]) { + field29922: String + field29923: Boolean +} + +type Object621 @Directive20(argument58 : "stringValue3200", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3199") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3201", "stringValue3202"]) { + field3416: String + field3417: String + field3418: Enum10 + field3419: String + field3420: Object478 + field3421: Object1 + field3422: String + field3423: Union92 + field3424: String + field3425: String + field3426: [String] +} + +type Object6210 @Directive42(argument96 : ["stringValue29574", "stringValue29575", "stringValue29576"]) @Directive44(argument97 : ["stringValue29577"]) { + field29925: String + field29926: Object6189 +} + +type Object6211 @Directive42(argument96 : ["stringValue29578", "stringValue29579", "stringValue29580"]) @Directive44(argument97 : ["stringValue29581"]) { + field29928: String + field29929: String + field29930: String + field29931: [String] + field29932: String + field29933: String +} + +type Object6212 @Directive42(argument96 : ["stringValue29582", "stringValue29583", "stringValue29584"]) @Directive44(argument97 : ["stringValue29585"]) { + field29935: String + field29936: String + field29937: String +} + +type Object6213 @Directive42(argument96 : ["stringValue29586", "stringValue29587", "stringValue29588"]) @Directive44(argument97 : ["stringValue29589"]) { + field29939: [Object6214] +} + +type Object6214 @Directive42(argument96 : ["stringValue29590", "stringValue29591", "stringValue29592"]) @Directive44(argument97 : ["stringValue29593"]) { + field29940: String + field29941: Scalar2 + field29942: String +} + +type Object6215 @Directive42(argument96 : ["stringValue29594", "stringValue29595", "stringValue29596"]) @Directive44(argument97 : ["stringValue29597"]) { + field29944: String +} + +type Object6216 @Directive42(argument96 : ["stringValue29598", "stringValue29599", "stringValue29600"]) @Directive44(argument97 : ["stringValue29601"]) { + field29946: String + field29947: String + field29948: String + field29949: String + field29950: String + field29951: String + field29952: String + field29953: String + field29954: String + field29955: String +} + +type Object6217 @Directive42(argument96 : ["stringValue29602", "stringValue29603", "stringValue29604"]) @Directive44(argument97 : ["stringValue29605"]) { + field29957: Enum1612 + field29958: String + field29959: String + field29960: String + field29961: String + field29962: Enum1613 + field29963: Enum1614 + field29964: Enum1615 + field29965: String + field29966: String + field29967: String + field29968: String + field29969: String + field29970: String + field29971: String + field29972: String + field29973: String + field29974: String + field29975: String + field29976: String + field29977: String + field29978: String + field29979: String + field29980: String + field29981: String + field29982: String + field29983: String + field29984: String + field29985: String + field29986: String + field29987: String + field29988: String + field29989: String + field29990: String + field29991: String + field29992: String + field29993: String + field29994: String + field29995: String +} + +type Object6218 @Directive42(argument96 : ["stringValue29618", "stringValue29619", "stringValue29620"]) @Directive44(argument97 : ["stringValue29621"]) { + field29997: String +} + +type Object6219 @Directive42(argument96 : ["stringValue29622", "stringValue29623", "stringValue29624"]) @Directive44(argument97 : ["stringValue29625"]) { + field29999: String + field30000: Scalar2 +} + +type Object622 @Directive20(argument58 : "stringValue3204", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3203") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3205", "stringValue3206"]) { + field3427: String + field3428: Int + field3429: [Object480!] + field3430: Object494 + field3431: Object494 + field3432: Boolean + field3433: Boolean +} + +type Object6220 @Directive42(argument96 : ["stringValue29626", "stringValue29627", "stringValue29628"]) @Directive44(argument97 : ["stringValue29629"]) { + field30002: String + field30003: String +} + +type Object6221 @Directive42(argument96 : ["stringValue29630", "stringValue29631", "stringValue29632"]) @Directive44(argument97 : ["stringValue29633"]) { + field30007: String + field30008: String +} + +type Object6222 @Directive42(argument96 : ["stringValue29634", "stringValue29635", "stringValue29636"]) @Directive44(argument97 : ["stringValue29637"]) { + field30010: String! + field30011: Enum1616 + field30012: Scalar2 + field30013: Object438 + field30014: Object438 + field30015: Enum384 + field30016: String + field30017: Boolean + field30018: Scalar4 + field30019: Scalar4 + field30020: Scalar4 + field30021: Scalar4 + field30022: Scalar4 + field30023: Boolean + field30024: Scalar2 + field30025: String + field30026: String + field30027: String + field30028: String + field30029: Scalar2 + field30030: String + field30031: String + field30032: String + field30033: String + field30034: Object438 + field30035: String + field30036: Scalar2 + field30037: Enum400 + field30038: Enum1617 + field30039: Object6223 + field30113: Object6239 + field30123: Object438 +} + +type Object6223 @Directive42(argument96 : ["stringValue29644", "stringValue29645", "stringValue29646"]) @Directive44(argument97 : ["stringValue29647"]) { + field30040: Enum400 + field30041: String + field30042: String + field30043: Boolean + field30044: String + field30045: String + field30046: String + field30047: String + field30048: Scalar2 + field30049: Scalar2 + field30050: Object6224 + field30062: String + field30063: Enum330 + field30064: Boolean + field30065: Boolean + field30066: Enum1618 + field30067: String + field30068: Object6227 + field30070: Object6228 + field30073: Object6229 + field30082: Object6231 + field30085: Object1933 + field30086: Object6232 + field30088: Object6233 + field30091: Object6234 + field30098: Scalar2 + field30099: Scalar2 + field30100: Object6235 + field30105: Object6236 + field30108: Object6237 + field30110: String + field30111: Object6238 +} + +type Object6224 @Directive42(argument96 : ["stringValue29648", "stringValue29649", "stringValue29650"]) @Directive44(argument97 : ["stringValue29651"]) { + field30051: Object6225 +} + +type Object6225 @Directive42(argument96 : ["stringValue29652", "stringValue29653", "stringValue29654"]) @Directive44(argument97 : ["stringValue29655"]) { + field30052: Object6226 + field30060: Scalar2 + field30061: Scalar2 +} + +type Object6226 @Directive42(argument96 : ["stringValue29656", "stringValue29657", "stringValue29658"]) @Directive44(argument97 : ["stringValue29659"]) { + field30053: Scalar2 + field30054: String + field30055: String + field30056: String + field30057: String + field30058: String + field30059: String +} + +type Object6227 @Directive42(argument96 : ["stringValue29663", "stringValue29664", "stringValue29665"]) @Directive44(argument97 : ["stringValue29666"]) { + field30069: String +} + +type Object6228 @Directive42(argument96 : ["stringValue29667", "stringValue29668", "stringValue29669"]) @Directive44(argument97 : ["stringValue29670"]) { + field30071: String + field30072: Boolean +} + +type Object6229 @Directive42(argument96 : ["stringValue29671", "stringValue29672", "stringValue29673"]) @Directive44(argument97 : ["stringValue29674"]) { + field30074: String + field30075: Object6230 + field30080: String + field30081: String +} + +type Object623 @Directive20(argument58 : "stringValue3208", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3207") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3209", "stringValue3210"]) { + field3434: String + field3435: Object624 + field3458: Object626 + field3465: Object480 +} + +type Object6230 @Directive42(argument96 : ["stringValue29675", "stringValue29676", "stringValue29677"]) @Directive44(argument97 : ["stringValue29678"]) { + field30076: String + field30077: String + field30078: String + field30079: String +} + +type Object6231 @Directive42(argument96 : ["stringValue29679", "stringValue29680", "stringValue29681"]) @Directive44(argument97 : ["stringValue29682"]) { + field30083: Scalar2 + field30084: String +} + +type Object6232 @Directive42(argument96 : ["stringValue29683", "stringValue29684", "stringValue29685"]) @Directive44(argument97 : ["stringValue29686"]) { + field30087: String +} + +type Object6233 @Directive42(argument96 : ["stringValue29687", "stringValue29688", "stringValue29689"]) @Directive44(argument97 : ["stringValue29690"]) { + field30089: Enum1619 + field30090: String +} + +type Object6234 @Directive42(argument96 : ["stringValue29694", "stringValue29695", "stringValue29696"]) @Directive44(argument97 : ["stringValue29697"]) { + field30092: Boolean + field30093: Boolean + field30094: Boolean + field30095: Boolean + field30096: Boolean + field30097: Boolean +} + +type Object6235 @Directive42(argument96 : ["stringValue29698", "stringValue29699", "stringValue29700"]) @Directive44(argument97 : ["stringValue29701"]) { + field30101: String + field30102: String + field30103: [String] + field30104: String +} + +type Object6236 @Directive42(argument96 : ["stringValue29702", "stringValue29703", "stringValue29704"]) @Directive44(argument97 : ["stringValue29705"]) { + field30106: Enum389 + field30107: String +} + +type Object6237 @Directive42(argument96 : ["stringValue29706", "stringValue29707", "stringValue29708"]) @Directive44(argument97 : ["stringValue29709"]) { + field30109: Enum1609 +} + +type Object6238 @Directive42(argument96 : ["stringValue29710", "stringValue29711", "stringValue29712"]) @Directive44(argument97 : ["stringValue29713"]) { + field30112: String +} + +type Object6239 @Directive42(argument96 : ["stringValue29714", "stringValue29715", "stringValue29716"]) @Directive44(argument97 : ["stringValue29717"]) { + field30114: Scalar4 + field30115: Scalar4 + field30116: Scalar4 + field30117: Scalar4 + field30118: Scalar4 + field30119: Boolean + field30120: Scalar2 + field30121: Boolean + field30122: Scalar4 +} + +type Object624 @Directive20(argument58 : "stringValue3212", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3211") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3213", "stringValue3214"]) { + field3436: String + field3437: String + field3438: String + field3439: String + field3440: String + field3441: String + field3442: String + field3443: String + field3444: String + field3445: String + field3446: Object478 + field3447: String + field3448: String + field3449: [String] + field3450: Object625 + field3454: [String] + field3455: String + field3456: Enum196 + field3457: [Object546] +} + +type Object6240 @Directive42(argument96 : ["stringValue29718", "stringValue29719", "stringValue29720"]) @Directive44(argument97 : ["stringValue29721"]) { + field30125: Object438 + field30126: Object438 + field30127: Object438 + field30128: Object438 + field30129: Object438 + field30130: Object438 +} + +type Object6241 @Directive42(argument96 : ["stringValue29722", "stringValue29723", "stringValue29724"]) @Directive44(argument97 : ["stringValue29725"]) { + field30134: String! + field30135: Object6242 +} + +type Object6242 @Directive42(argument96 : ["stringValue29726", "stringValue29727", "stringValue29728"]) @Directive44(argument97 : ["stringValue29729"]) { + field30136: String + field30137: Enum1620 + field30138: Enum1621 + field30139: String + field30140: Scalar2 + field30141: Scalar2 + field30142: Scalar4 + field30143: Scalar4 +} + +type Object6243 implements Interface92 @Directive42(argument96 : ["stringValue29779"]) @Directive44(argument97 : ["stringValue29788"]) @Directive8(argument19 : "stringValue29787", argument20 : "stringValue29786", argument21 : "stringValue29781", argument23 : "stringValue29785", argument24 : "stringValue29780", argument25 : "stringValue29782", argument26 : "stringValue29783", argument27 : "stringValue29784", argument28 : true) { + field8384: Object753! + field8385: [Object6244] +} + +type Object6244 implements Interface93 @Directive42(argument96 : ["stringValue29789"]) @Directive44(argument97 : ["stringValue29790"]) { + field8386: String! + field8999: Object6245 +} + +type Object6245 implements Interface36 @Directive22(argument62 : "stringValue29791") @Directive42(argument96 : ["stringValue29792", "stringValue29793"]) @Directive44(argument97 : ["stringValue29798"]) @Directive7(argument11 : "stringValue29797", argument14 : "stringValue29795", argument16 : "stringValue29796", argument17 : "stringValue29794") { + field10398: Enum1623 @Directive13(argument49 : "stringValue29802") + field2312: ID! + field30178: Object6143 @Directive4(argument5 : "stringValue29799") + field30179: Interface109 @Directive13(argument49 : "stringValue29800") + field30180: Enum1622 @Directive13(argument49 : "stringValue29801") + field30181: Int @Directive3(argument3 : "stringValue29806") @deprecated + field30182: String @Directive3(argument3 : "stringValue29807") @deprecated + field30183: Int @Directive3(argument3 : "stringValue29808") @deprecated + field8992: Int @Directive3(argument3 : "stringValue29809") @deprecated + field9087: Scalar4 + field9142: Scalar4 +} + +type Object6246 implements Interface36 @Directive22(argument62 : "stringValue29820") @Directive30(argument86 : "stringValue29821") @Directive44(argument97 : ["stringValue29826"]) @Directive7(argument13 : "stringValue29824", argument14 : "stringValue29823", argument16 : "stringValue29825", argument17 : "stringValue29822", argument18 : false) { + field10398: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive40 +} + +type Object6247 implements Interface36 @Directive22(argument62 : "stringValue29827") @Directive42(argument96 : ["stringValue29828"]) @Directive44(argument97 : ["stringValue29834"]) @Directive7(argument12 : "stringValue29832", argument13 : "stringValue29831", argument14 : "stringValue29830", argument16 : "stringValue29833", argument17 : "stringValue29829") { + field10387: Scalar4 @Directive41 + field12312: Object2354 @Directive4(argument5 : "stringValue29838") @Directive41 + field12313: Object2413 @Directive4(argument5 : "stringValue29839") @Directive41 + field19200: Object2258 @Directive4(argument5 : "stringValue29837") @Directive40 + field19239: Int @Directive40 @deprecated + field2312: ID! @Directive41 + field30178: Object6143 @Directive4(argument5 : "stringValue29835") @Directive40 + field30188: Boolean @Directive3(argument3 : "stringValue29840") @Directive41 + field30189: Int @Directive40 @deprecated + field30190: Int @Directive3(argument3 : "stringValue29841") @Directive40 @deprecated + field8993: Object4016 @Directive4(argument5 : "stringValue29836") @Directive40 + field9087: Scalar4 @Directive41 + field9142: Scalar4 @Directive41 +} + +type Object6248 implements Interface111 & Interface36 @Directive22(argument62 : "stringValue29844") @Directive42(argument96 : ["stringValue29845", "stringValue29846"]) @Directive44(argument97 : ["stringValue29852", "stringValue29853"]) @Directive45(argument98 : ["stringValue29854"]) @Directive7(argument11 : "stringValue29851", argument14 : "stringValue29848", argument15 : "stringValue29850", argument16 : "stringValue29849", argument17 : "stringValue29847") { + field11748: String + field12291: Int + field12296(argument403: InputObject15!): Object2410 @Directive14(argument51 : "stringValue29860") + field12300: Object2412 @Directive14(argument51 : "stringValue29861") + field12305: Object1904 @Directive1 + field12312: Object2354 @Directive4(argument5 : "stringValue29862") + field12313: Object2413 @Directive4(argument5 : "stringValue29863") + field12318: Object2414 @Directive18 + field12321: Object2415 @Directive14(argument51 : "stringValue29880") @deprecated + field2312: ID! + field30147: Int @Directive3(argument3 : "stringValue29857") + field30150: String + field30192: Object2258 @Directive4(argument5 : "stringValue29856") + field30193: Enum1625 + field30194: Scalar3 + field30195: Boolean @deprecated + field30196: Boolean @deprecated + field30197: Object6249 @Directive4(argument5 : "stringValue29864") @deprecated + field8990: Scalar3 + field8993(argument402: String): Object4016 @Directive4(argument5 : "stringValue29855") + field9087: Scalar4 +} + +type Object6249 implements Interface36 @Directive22(argument62 : "stringValue29865") @Directive42(argument96 : ["stringValue29866", "stringValue29867"]) @Directive44(argument97 : ["stringValue29873"]) @Directive7(argument11 : "stringValue29872", argument14 : "stringValue29869", argument15 : "stringValue29871", argument16 : "stringValue29870", argument17 : "stringValue29868") { + field11748: String + field12291: Int + field12295: Int + field12309: Int + field12310: Int + field12311: Int + field2312: ID! + field30150: String + field30152: Int + field30153: Int + field30193: Enum1625 + field30194: Scalar4 + field30195: Boolean + field30196: Boolean + field30198: Int @deprecated + field30199: Scalar2 @Directive3(argument3 : "stringValue29874") + field30200: Int @deprecated + field30201: Scalar2 @Directive3(argument3 : "stringValue29875") + field30202: Int + field30203: Int + field30204: Int + field30205: Object6250 + field30216: String + field30217: String + field30218: Scalar4 + field8990: Scalar3 + field9087: Scalar4 +} + +type Object625 @Directive20(argument58 : "stringValue3216", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3215") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3217", "stringValue3218"]) { + field3451: String + field3452: String + field3453: String +} + +type Object6250 @Directive42(argument96 : ["stringValue29876", "stringValue29877", "stringValue29878"]) @Directive44(argument97 : ["stringValue29879"]) { + field30206: Float + field30207: Float + field30208: String + field30209: Float + field30210: Float + field30211: Float + field30212: Float + field30213: Float + field30214: Float + field30215: Float +} + +type Object6251 implements Interface36 @Directive22(argument62 : "stringValue29883") @Directive42(argument96 : ["stringValue29884", "stringValue29885"]) @Directive44(argument97 : ["stringValue29892"]) @Directive7(argument11 : "stringValue29891", argument12 : "stringValue29890", argument13 : "stringValue29888", argument14 : "stringValue29887", argument16 : "stringValue29889", argument17 : "stringValue29886") { + field10437: Scalar2 @Directive3(argument3 : "stringValue29893") + field11765: Int @Directive3(argument3 : "stringValue29895") + field2312: ID! + field29548: String @Directive3(argument3 : "stringValue29896") + field29549: String @Directive3(argument3 : "stringValue29898") + field29550: Object6145 @Directive18 @Directive3(argument3 : "stringValue29899") + field29624: [Object6145] @Directive3(argument3 : "stringValue29900") + field29625: [Object6145] @Directive3(argument3 : "stringValue29901") + field9087: Scalar4 @Directive3(argument3 : "stringValue29897") + field9676: String @Directive3(argument3 : "stringValue29894") +} + +type Object6252 implements Interface36 @Directive22(argument62 : "stringValue29903") @Directive42(argument96 : ["stringValue29904", "stringValue29905"]) @Directive44(argument97 : ["stringValue29910", "stringValue29911"]) @Directive7(argument13 : "stringValue29908", argument14 : "stringValue29907", argument16 : "stringValue29909", argument17 : "stringValue29906") { + field2312: ID! + field30221: String + field30222: Scalar2 + field30223: Scalar2 + field30224: Int + field30225: Int + field8994: String +} + +type Object6253 implements Interface92 @Directive42(argument96 : ["stringValue29913"]) @Directive44(argument97 : ["stringValue29920"]) @Directive8(argument21 : "stringValue29915", argument23 : "stringValue29919", argument24 : "stringValue29914", argument25 : "stringValue29916", argument26 : "stringValue29918", argument27 : "stringValue29917", argument28 : true) { + field8384: Object753! + field8385: [Object6254] +} + +type Object6254 implements Interface93 @Directive42(argument96 : ["stringValue29921"]) @Directive44(argument97 : ["stringValue29922"]) { + field8386: String! + field8999: Object2350 +} + +type Object6255 implements Interface92 @Directive42(argument96 : ["stringValue29923"]) @Directive44(argument97 : ["stringValue29931"]) @Directive8(argument19 : "stringValue29930", argument20 : "stringValue29929", argument21 : "stringValue29925", argument23 : "stringValue29928", argument24 : "stringValue29924", argument25 : "stringValue29926", argument27 : "stringValue29927") { + field8384: Object753! + field8385: [Object6256] +} + +type Object6256 implements Interface93 @Directive42(argument96 : ["stringValue29932"]) @Directive44(argument97 : ["stringValue29933"]) { + field8386: String! + field8999: Object4174 +} + +type Object6257 @Directive42(argument96 : ["stringValue29935", "stringValue29936", "stringValue29937"]) @Directive44(argument97 : ["stringValue29938"]) { + field30227: Scalar2 + field30228: String + field30229: String + field30230: Float + field30231: Float + field30232: String +} + +type Object6258 implements Interface161 & Interface36 @Directive22(argument62 : "stringValue29940") @Directive42(argument96 : ["stringValue29941", "stringValue29942"]) @Directive44(argument97 : ["stringValue29946"]) @Directive7(argument13 : "stringValue29944", argument14 : "stringValue29945", argument17 : "stringValue29943", argument18 : false) { + field18382: Object4205 @Directive3(argument3 : "stringValue29947") + field18401: Object4207 @Directive3(argument3 : "stringValue29948") + field18405: Object4208 @Directive3(argument3 : "stringValue29949") @Directive41 + field2312: ID! +} + +type Object6259 @Directive42(argument96 : ["stringValue29952", "stringValue29953", "stringValue29954"]) @Directive44(argument97 : ["stringValue29955"]) { + field30235: String + field30236: Object4471 + field30237: [Object6260] +} + +type Object626 @Directive20(argument58 : "stringValue3224", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3223") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3225", "stringValue3226"]) { + field3459: String + field3460: String + field3461: [Object480] + field3462: String + field3463: [Object480] + field3464: String +} + +type Object6260 @Directive42(argument96 : ["stringValue29956", "stringValue29957", "stringValue29958"]) @Directive44(argument97 : ["stringValue29959"]) { + field30238: String + field30239: Object4471 +} + +type Object6261 @Directive22(argument62 : "stringValue29961") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue29960"]) { + field30241: Object4471 @Directive30(argument80 : true) @Directive39 + field30242: [Object6262] @Directive30(argument80 : true) @Directive40 + field30245: Object6263 @Directive30(argument80 : true) @Directive39 + field30251: Object6263 @Directive30(argument80 : true) @Directive39 + field30252: Object4471 @Directive30(argument80 : true) @Directive39 +} + +type Object6262 @Directive42(argument96 : ["stringValue29962", "stringValue29963", "stringValue29964"]) @Directive44(argument97 : ["stringValue29965"]) { + field30243: Scalar2 + field30244: String +} + +type Object6263 @Directive12 @Directive22(argument62 : "stringValue29967") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue29966"]) { + field30246: String @Directive30(argument80 : true) @Directive41 + field30247: String @Directive30(argument80 : true) @Directive41 + field30248: String @Directive30(argument80 : true) @Directive41 + field30249: Object4471 @Directive30(argument80 : true) @Directive41 + field30250: [Object6263] @Directive3(argument3 : "stringValue29968") @Directive30(argument80 : true) @Directive41 +} + +type Object6264 @Directive42(argument96 : ["stringValue29969", "stringValue29970", "stringValue29971"]) @Directive44(argument97 : ["stringValue29972"]) { + field30260: Scalar2 + field30261: Boolean + field30262: String + field30263: Int +} + +type Object6265 implements Interface92 @Directive22(argument62 : "stringValue29977") @Directive44(argument97 : ["stringValue29985", "stringValue29986"]) @Directive8(argument19 : "stringValue29984", argument21 : "stringValue29979", argument23 : "stringValue29981", argument24 : "stringValue29978", argument25 : "stringValue29980", argument26 : "stringValue29982", argument27 : "stringValue29983", argument28 : true) { + field8384: Object753! + field8385: [Object6266] +} + +type Object6266 implements Interface93 @Directive22(argument62 : "stringValue29987") @Directive44(argument97 : ["stringValue29988", "stringValue29989"]) { + field8386: String! + field8999: Object6267 +} + +type Object6267 implements Interface36 @Directive22(argument62 : "stringValue29990") @Directive30(argument84 : "stringValue29992", argument86 : "stringValue29991") @Directive44(argument97 : ["stringValue29998", "stringValue29999"]) @Directive7(argument12 : "stringValue29997", argument13 : "stringValue29995", argument14 : "stringValue29994", argument16 : "stringValue29996", argument17 : "stringValue29993", argument18 : true) { + field2312: ID! @Directive30(argument80 : true) @Directive40 + field30146: ID! @Directive14(argument51 : "stringValue30000") @Directive30(argument80 : true) @Directive40 + field30267: Object6143 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue30001") @Directive40 + field30268: Object6268 @Directive30(argument80 : true) @Directive40 + field30280: Union197 @Directive30(argument80 : true) @Directive40 + field30281: Boolean @Directive30(argument80 : true) @Directive41 + field8993(argument402: String): Object4016 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue30002") @Directive40 +} + +type Object6268 @Directive22(argument62 : "stringValue30003") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30004", "stringValue30005"]) { + field30269: Scalar2! @Directive30(argument80 : true) @Directive40 + field30270: Scalar2! @Directive30(argument80 : true) @Directive40 + field30271: Scalar2! @Directive30(argument80 : true) @Directive40 + field30272: Scalar3 @Directive30(argument80 : true) @Directive41 + field30273: Scalar3 @Directive30(argument80 : true) @Directive41 + field30274: Int @Directive30(argument80 : true) @Directive41 + field30275: Scalar2 @Directive30(argument80 : true) @Directive41 + field30276: Scalar2 @Directive30(argument80 : true) @Directive41 + field30277: String @Directive30(argument80 : true) @Directive41 + field30278: Int @Directive30(argument80 : true) @Directive41 + field30279: String @Directive30(argument80 : true) @Directive41 +} + +type Object6269 implements Interface92 @Directive22(argument62 : "stringValue30008") @Directive44(argument97 : ["stringValue30015"]) @Directive8(argument20 : "stringValue30014", argument21 : "stringValue30010", argument23 : "stringValue30012", argument24 : "stringValue30009", argument25 : "stringValue30011", argument27 : "stringValue30013") { + field8384: Object753! + field8385: [Object6270] +} + +type Object627 @Directive20(argument58 : "stringValue3228", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3227") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3229", "stringValue3230"]) { + field3466: String + field3467: Object628 + field3501: Int + field3502: Int + field3503: String + field3504: Object494 + field3505: Int + field3506: Object514 + field3507: Object521 + field3508: [Object532!] + field3509: Object539 + field3510: Boolean + field3511: Object538 + field3512: Object631 + field3520: [Object2] + field3521: Object548 + field3522: Boolean + field3523: Object632 + field3527: String + field3528: Object541 + field3529: Object532 + field3530: Object546 + field3531: Object633 + field3537: Int + field3538: [Object634] + field3574: Object1 + field3575: Object1 + field3576: Object639 + field3581: Union98 +} + +type Object6270 implements Interface93 @Directive22(argument62 : "stringValue30016") @Directive44(argument97 : ["stringValue30017"]) { + field8386: String! + field8999: Object6271 +} + +type Object6271 @Directive22(argument62 : "stringValue30018") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30019"]) { + field30286: Enum1627 @Directive30(argument80 : true) @Directive41 + field30287: Object6272 @Directive30(argument80 : true) @Directive41 +} + +type Object6272 @Directive22(argument62 : "stringValue30023") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30024"]) { + field30288: String @Directive30(argument80 : true) @Directive41 + field30289: String @Directive30(argument80 : true) @Directive41 + field30290: String @Directive30(argument80 : true) @Directive41 + field30291: Scalar4 @Directive30(argument80 : true) @Directive41 + field30292: Scalar4 @Directive30(argument80 : true) @Directive41 + field30293: String @Directive30(argument80 : true) @Directive40 +} + +type Object6273 implements Interface92 @Directive22(argument62 : "stringValue30031") @Directive44(argument97 : ["stringValue30032"]) @Directive8(argument20 : "stringValue30030", argument21 : "stringValue30027", argument23 : "stringValue30028", argument24 : "stringValue30026", argument26 : "stringValue30029", argument28 : true) { + field8384: Object753! + field8385: [Object6274] +} + +type Object6274 implements Interface93 @Directive22(argument62 : "stringValue30033") @Directive44(argument97 : ["stringValue30034"]) { + field8386: String! + field8999: Object6275 +} + +type Object6275 @Directive12 @Directive22(argument62 : "stringValue30035") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30036"]) { + field30295: String @Directive30(argument80 : true) @Directive40 +} + +type Object6276 implements Interface99 @Directive22(argument62 : "stringValue30056") @Directive26(argument66 : 502, argument67 : "stringValue30049", argument68 : "stringValue30051", argument69 : "stringValue30053", argument70 : "stringValue30055", argument71 : "stringValue30047", argument72 : "stringValue30048", argument73 : "stringValue30050", argument74 : "stringValue30052", argument75 : "stringValue30054") @Directive31 @Directive44(argument97 : ["stringValue30057", "stringValue30058", "stringValue30059"]) @Directive45(argument98 : ["stringValue30060"]) @Directive45(argument98 : ["stringValue30061", "stringValue30062"]) { + field18924(argument1525: InputObject93): Object474 @Directive14(argument51 : "stringValue30065") + field30304(argument1523: InputObject93): Object4196 @Directive18 @deprecated + field30305: Boolean @Directive18 + field30306(argument1524: InputObject93): Object474 @Directive14(argument51 : "stringValue30064") + field30307(argument1526: InputObject93): Object474 @Directive14(argument51 : "stringValue30066") + field30308(argument1527: InputObject93): Object474 @Directive14(argument51 : "stringValue30067") + field30309(argument1528: InputObject93): [Object474] @Directive14(argument51 : "stringValue30068") + field30310(argument1529: InputObject93): Object474 @Directive14(argument51 : "stringValue30069") + field30311(argument1530: InputObject93): Object474 @Directive14(argument51 : "stringValue30070") + field30312: Object474 @Directive14(argument51 : "stringValue30071") + field30313: Object474 @Directive14(argument51 : "stringValue30072") + field30314(argument1531: InputObject93): Object474 @Directive14(argument51 : "stringValue30073") + field30315(argument1532: InputObject93): Object474 @Directive14(argument51 : "stringValue30074") + field30316(argument1533: InputObject93): Object474 @Directive14(argument51 : "stringValue30075") + field30317: Object474 @Directive14(argument51 : "stringValue30076") + field30318(argument1534: InputObject93): Object474 @Directive14(argument51 : "stringValue30077") + field30319: Object474 @Directive14(argument51 : "stringValue30078") + field30320(argument1535: InputObject93): Object474 @Directive14(argument51 : "stringValue30079") + field8997: Object4016 @Directive18 @deprecated + field9409(argument777: InputObject93): Object4323 @Directive14(argument51 : "stringValue30063") + field9671: Object6137 @deprecated +} + +type Object6277 implements Interface99 @Directive22(argument62 : "stringValue30081") @Directive30(argument79 : "stringValue30082") @Directive44(argument97 : ["stringValue30083", "stringValue30084", "stringValue30085"]) @Directive45(argument98 : ["stringValue30086"]) @Directive45(argument98 : ["stringValue30087", "stringValue30088"]) { + field18371: Object6280 @Directive18 @Directive30(argument80 : true) @Directive41 + field30322: [Object474!] @Directive14(argument51 : "stringValue30099") @Directive30(argument80 : true) @Directive40 + field30323: [Object474!] @Directive14(argument51 : "stringValue30100") @Directive30(argument80 : true) @Directive40 + field30324: [Object474!] @Directive14(argument51 : "stringValue30101") @Directive30(argument80 : true) @Directive40 + field30325: [Object474!] @Directive14(argument51 : "stringValue30102") @Directive30(argument80 : true) @Directive40 + field30326: Object474 @Directive14(argument51 : "stringValue30103") @Directive30(argument80 : true) @Directive40 + field30327: Object474 @Directive14(argument51 : "stringValue30104") @Directive30(argument80 : true) @Directive40 + field30328: [Object474!] @Directive14(argument51 : "stringValue30105") @Directive30(argument80 : true) @Directive40 + field30338: Object6282 @Directive18 @Directive30(argument80 : true) @Directive41 + field8997: Object6143 @Directive18 @Directive30(argument80 : true) @Directive41 + field9409(argument1538: InputObject1385): Object6278 @Directive14(argument51 : "stringValue30089") @Directive30(argument80 : true) @Directive40 + field9671: Object6137 @Directive30(argument80 : true) @Directive40 @deprecated +} + +type Object6278 implements Interface46 @Directive22(argument62 : "stringValue30093") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30094", "stringValue30095"]) { + field2616: [Object474]! @Directive30(argument80 : true) @Directive40 + field8314: [Object1532] @Directive30(argument80 : true) @Directive41 + field8329: Object6279 @Directive30(argument80 : true) @Directive41 + field8330: Interface91 @Directive30(argument80 : true) @Directive40 + field8332: [Object1536] @Directive30(argument80 : true) @Directive41 + field8337: [Object502] @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object6279 implements Interface45 @Directive22(argument62 : "stringValue30096") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30097", "stringValue30098"]) { + field2515: String @Directive30(argument80 : true) @Directive41 + field2516: Enum147 @Directive30(argument80 : true) @Directive41 + field2517: Object459 @Directive30(argument80 : true) @Directive41 +} + +type Object628 @Directive20(argument58 : "stringValue3232", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3231") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3233", "stringValue3234"]) { + field3468: Boolean + field3469: Int + field3470: Int + field3471: Int + field3472: [Object629] + field3478: String + field3479: Int + field3480: [Object630] + field3489: Float + field3490: Boolean + field3491: String + field3492: Object480 + field3493: Object1 + field3494: Object1 + field3495: Object1 + field3496: Object1 + field3497: Object1 + field3498: String + field3499: Object1 + field3500: Object1 +} + +type Object6280 @Directive22(argument62 : "stringValue30106") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30107", "stringValue30108", "stringValue30109"]) { + field30329: String @Directive30(argument80 : true) @Directive41 + field30330: Object6281 @Directive30(argument80 : true) @Directive41 + field30337: Object6281 @Directive30(argument80 : true) @Directive41 +} + +type Object6281 @Directive22(argument62 : "stringValue30110") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30111", "stringValue30112", "stringValue30113"]) { + field30331: String @Directive30(argument80 : true) @Directive41 + field30332: String @Directive30(argument80 : true) @Directive41 + field30333: String @Directive30(argument80 : true) @Directive41 + field30334: String @Directive30(argument80 : true) @Directive41 + field30335: [Object480!] @Directive30(argument80 : true) @Directive41 + field30336: String @Directive30(argument80 : true) @Directive41 +} + +type Object6282 @Directive22(argument62 : "stringValue30114") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30115", "stringValue30116", "stringValue30117"]) { + field30339: Object6283 @Directive30(argument80 : true) @Directive41 + field30343: Object6285 @Directive30(argument80 : true) @Directive40 +} + +type Object6283 @Directive22(argument62 : "stringValue30118") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30119", "stringValue30120", "stringValue30121"]) { + field30340: [Object6284!] @Directive30(argument80 : true) @Directive41 +} + +type Object6284 @Directive22(argument62 : "stringValue30122") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30123", "stringValue30124", "stringValue30125"]) { + field30341: String @Directive30(argument80 : true) @Directive41 + field30342: String @Directive30(argument80 : true) @Directive41 +} + +type Object6285 @Directive22(argument62 : "stringValue30126") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30127", "stringValue30128", "stringValue30129"]) { + field30344: Scalar2 @Directive30(argument80 : true) @Directive40 + field30345: String @Directive30(argument80 : true) @Directive40 + field30346: String @Directive30(argument80 : true) @Directive40 + field30347: String @Directive30(argument80 : true) @Directive40 + field30348: String @Directive30(argument80 : true) @Directive40 + field30349: String @Directive30(argument80 : true) @Directive40 + field30350: Int @Directive30(argument80 : true) @Directive40 +} + +type Object6286 implements Interface159 @Directive22(argument62 : "stringValue30135") @Directive26(argument67 : "stringValue30132", argument71 : "stringValue30130", argument72 : "stringValue30131", argument74 : "stringValue30133", argument75 : "stringValue30134") @Directive31 @Directive44(argument97 : ["stringValue30136", "stringValue30137", "stringValue30138"]) @Directive45(argument98 : ["stringValue30139"]) { + field17369(argument1539: InputObject1386, argument1540: InputObject1, argument1541: Boolean): Object6287 @Directive49(argument102 : "stringValue30140") + field30353: [String] @deprecated +} + +type Object6287 implements Interface46 @Directive22(argument62 : "stringValue30144") @Directive31 @Directive44(argument97 : ["stringValue30145", "stringValue30146"]) { + field17373: Enum871 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6288 + field8330: Object6289 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6288 implements Interface45 @Directive22(argument62 : "stringValue30147") @Directive31 @Directive44(argument97 : ["stringValue30148", "stringValue30149"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field30352: Scalar2 +} + +type Object6289 implements Interface91 @Directive22(argument62 : "stringValue30150") @Directive31 @Directive44(argument97 : ["stringValue30151", "stringValue30152"]) { + field8331: [String] +} + +type Object629 @Directive20(argument58 : "stringValue3236", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3235") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3237", "stringValue3238"]) { + field3473: String + field3474: Int + field3475: String + field3476: String + field3477: Float +} + +type Object6290 implements Interface159 @Directive22(argument62 : "stringValue30159") @Directive26(argument67 : "stringValue30158", argument71 : "stringValue30157") @Directive31 @Directive44(argument97 : ["stringValue30160", "stringValue30161"]) { + field17369(argument1552: InputObject1387, argument1553: InputObject50): Object4278 @Directive49(argument102 : "stringValue30162") +} + +type Object6291 implements Interface159 @Directive22(argument62 : "stringValue30168") @Directive26(argument67 : "stringValue30167", argument71 : "stringValue30166") @Directive31 @Directive44(argument97 : ["stringValue30169", "stringValue30170"]) { + field17369(argument1554: InputObject1388): Object6292 @Directive49(argument102 : "stringValue30171") +} + +type Object6292 implements Interface46 @Directive22(argument62 : "stringValue30181") @Directive31 @Directive44(argument97 : ["stringValue30182", "stringValue30183"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Interface45 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6293 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue30184") @Directive31 @Directive44(argument97 : ["stringValue30185", "stringValue30186"]) { + field17369(argument1539: InputObject1386, argument1556: ID @Directive25(argument65 : "stringValue30188")): Object6294 @Directive49(argument102 : "stringValue30187") +} + +type Object6294 implements Interface46 @Directive22(argument62 : "stringValue30189") @Directive31 @Directive44(argument97 : ["stringValue30190", "stringValue30191"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Interface45 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6295 implements Interface99 @Directive22(argument62 : "stringValue30192") @Directive31 @Directive44(argument97 : ["stringValue30193", "stringValue30194", "stringValue30195"]) @Directive45(argument98 : ["stringValue30196"]) @Directive45(argument98 : ["stringValue30197", "stringValue30198"]) { + field30362: Object3987 @Directive49(argument102 : "stringValue30199") + field30363(argument1557: String, argument1558: InputObject1390): Object3987 @Directive49(argument102 : "stringValue30200") + field30364: Object6296 + field30365(argument1559: InputObject1391): Object6297 @Directive13(argument49 : "stringValue30207") + field30366(argument1560: InputObject1392): Object6300 + field30367(argument1561: InputObject1393): Object6303 + field30368(argument1562: ID!): Object4200 @Directive18 + field30369(argument1563: InputObject1394, argument1564: ID): Object3987 @Directive49(argument102 : "stringValue30245") + field30370(argument1565: ID!): Object474 @Directive49(argument102 : "stringValue30269") + field8997: Interface36 @deprecated + field9659: Object474 @Directive13(argument49 : "stringValue30268") + field9671: Object6137 @deprecated +} + +type Object6296 implements Interface159 @Directive22(argument62 : "stringValue30204") @Directive31 @Directive44(argument97 : ["stringValue30205"]) { + field17369: Object3987 @Directive49(argument102 : "stringValue30206") +} + +type Object6297 implements Interface46 @Directive22(argument62 : "stringValue30211") @Directive31 @Directive44(argument97 : ["stringValue30212", "stringValue30213"]) { + field2616: [Object474]! + field8314: [Object1532] @Directive13(argument49 : "stringValue30217") + field8329: Object6298 + field8330: Object6299 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6298 implements Interface45 @Directive22(argument62 : "stringValue30214") @Directive31 @Directive44(argument97 : ["stringValue30215", "stringValue30216"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6299 implements Interface91 @Directive22(argument62 : "stringValue30218") @Directive31 @Directive44(argument97 : ["stringValue30219", "stringValue30220"]) { + field8331: [String] +} + +type Object63 @Directive21(argument61 : "stringValue280") @Directive44(argument97 : ["stringValue279"]) { + field408: String + field409: String + field410: String + field411: String + field412: String + field413: String + field414: Object64 +} + +type Object630 @Directive20(argument58 : "stringValue3240", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3239") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3241", "stringValue3242"]) { + field3481: String! + field3482: Int + field3483: String + field3484: String + field3485: String + field3486: String + field3487: String + field3488: Boolean +} + +type Object6300 implements Interface46 @Directive22(argument62 : "stringValue30224") @Directive31 @Directive44(argument97 : ["stringValue30225", "stringValue30226"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6301 + field8330: Object6302 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6301 implements Interface45 @Directive22(argument62 : "stringValue30227") @Directive31 @Directive44(argument97 : ["stringValue30228", "stringValue30229"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6302 implements Interface91 @Directive22(argument62 : "stringValue30230") @Directive31 @Directive44(argument97 : ["stringValue30231", "stringValue30232"]) { + field8331: [String] +} + +type Object6303 implements Interface46 @Directive22(argument62 : "stringValue30236") @Directive31 @Directive44(argument97 : ["stringValue30237", "stringValue30238"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6304 + field8330: Object6305 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6304 implements Interface45 @Directive22(argument62 : "stringValue30239") @Directive31 @Directive44(argument97 : ["stringValue30240", "stringValue30241"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6305 implements Interface91 @Directive22(argument62 : "stringValue30242") @Directive31 @Directive44(argument97 : ["stringValue30243", "stringValue30244"]) { + field8331: [String] +} + +type Object6306 @Directive22(argument62 : "stringValue30275") @Directive31 @Directive44(argument97 : ["stringValue30276", "stringValue30277", "stringValue30278"]) @Directive45(argument98 : ["stringValue30279"]) @Directive45(argument98 : ["stringValue30280", "stringValue30281"]) { + field30372(argument1566: InputObject1399, argument1567: InputObject50): Object6307 @Directive14(argument51 : "stringValue30282") + field30413: Object6137 + field30414(argument1568: InputObject1399, argument1569: InputObject50): Scalar1 @Directive18 + field30415(argument1570: InputObject1399, argument1571: InputObject50): Object6307 @Directive49(argument102 : "stringValue30368") +} + +type Object6307 implements Interface160 & Interface46 @Directive22(argument62 : "stringValue30290") @Directive31 @Directive44(argument97 : ["stringValue30291", "stringValue30292", "stringValue30293"]) @Directive45(argument98 : ["stringValue30294"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field30412: Int @Directive18 + field8314: [Object1532] + field8329: Object6308 + field8330: Object6312 + field8332: [Object1536] + field8337: [Object502] +} + +type Object6308 implements Interface45 @Directive22(argument62 : "stringValue30295") @Directive31 @Directive44(argument97 : ["stringValue30296", "stringValue30297"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field30373: Object6309 + field9459: Object6310 +} + +type Object6309 @Directive20(argument58 : "stringValue30299", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30298") @Directive31 @Directive44(argument97 : ["stringValue30300", "stringValue30301"]) { + field30374: String + field30375: String + field30376: String + field30377: Boolean + field30378: String + field30379: String + field30380: String + field30381: String + field30382: Object1863 + field30383: Object1865 +} + +type Object631 @Directive20(argument58 : "stringValue3244", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3243") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3245", "stringValue3246"]) { + field3513: String + field3514: String + field3515: String + field3516: Enum197 + field3517: String + field3518: String + field3519: Enum198 +} + +type Object6310 @Directive20(argument58 : "stringValue30303", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30302") @Directive31 @Directive44(argument97 : ["stringValue30304", "stringValue30305"]) { + field30384: String + field30385: String + field30386: Object6311 +} + +type Object6311 @Directive20(argument58 : "stringValue30307", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30306") @Directive31 @Directive44(argument97 : ["stringValue30308", "stringValue30309"]) { + field30387: String + field30388: String + field30389: String + field30390: Scalar1 +} + +type Object6312 implements Interface91 @Directive22(argument62 : "stringValue30310") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30311", "stringValue30312"]) { + field30391: [Object6313] + field8331: [String] +} + +type Object6313 @Directive20(argument58 : "stringValue30314", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30313") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30315", "stringValue30316"]) { + field30392: String + field30393: Boolean + field30394: Union220 + field30411: Enum1631 +} + +type Object6314 @Directive20(argument58 : "stringValue30321", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30320") @Directive31 @Directive44(argument97 : ["stringValue30322", "stringValue30323"]) { + field30395: String @deprecated + field30396: String +} + +type Object6315 @Directive20(argument58 : "stringValue30325", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30324") @Directive31 @Directive44(argument97 : ["stringValue30326", "stringValue30327"]) { + field30397: Boolean @deprecated + field30398: Boolean +} + +type Object6316 @Directive20(argument58 : "stringValue30329", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30328") @Directive31 @Directive44(argument97 : ["stringValue30330", "stringValue30331"]) { + field30399: Int @deprecated + field30400: Int +} + +type Object6317 @Directive20(argument58 : "stringValue30333", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30332") @Directive31 @Directive44(argument97 : ["stringValue30334", "stringValue30335"]) { + field30401: Scalar2 @deprecated + field30402: Scalar2 +} + +type Object6318 @Directive20(argument58 : "stringValue30337", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30336") @Directive31 @Directive44(argument97 : ["stringValue30338", "stringValue30339"]) { + field30403: Float @deprecated + field30404: Float +} + +type Object6319 @Directive20(argument58 : "stringValue30341", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30340") @Directive31 @Directive44(argument97 : ["stringValue30342", "stringValue30343"]) { + field30405: [String] +} + +type Object632 @Directive20(argument58 : "stringValue3256", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3255") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3257", "stringValue3258"]) { + field3524: String + field3525: String + field3526: Int +} + +type Object6320 @Directive20(argument58 : "stringValue30345", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30344") @Directive31 @Directive44(argument97 : ["stringValue30346", "stringValue30347"]) { + field30406: [Boolean] +} + +type Object6321 @Directive20(argument58 : "stringValue30349", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30348") @Directive31 @Directive44(argument97 : ["stringValue30350", "stringValue30351"]) { + field30407: [Int] +} + +type Object6322 @Directive20(argument58 : "stringValue30353", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30352") @Directive31 @Directive44(argument97 : ["stringValue30354", "stringValue30355"]) { + field30408: [Scalar2] +} + +type Object6323 @Directive20(argument58 : "stringValue30357", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30356") @Directive31 @Directive44(argument97 : ["stringValue30358", "stringValue30359"]) { + field30409: [Float] +} + +type Object6324 @Directive20(argument58 : "stringValue30361", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30360") @Directive31 @Directive44(argument97 : ["stringValue30362", "stringValue30363"]) { + field30410: Scalar3 +} + +type Object6325 @Directive2 @Directive22(argument62 : "stringValue30375") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30376", "stringValue30377", "stringValue30378"]) { + field30417(argument1572: InputObject1399, argument1573: InputObject50): Object6326 +} + +type Object6326 implements Interface160 & Interface46 @Directive22(argument62 : "stringValue30379") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30380", "stringValue30381", "stringValue30382"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6327 + field8330: Object6312 + field8332: [Object1536] + field8337: [Object502] +} + +type Object6327 implements Interface45 @Directive22(argument62 : "stringValue30383") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30384", "stringValue30385"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field30373: Object6309 + field30418: Object6328 + field30447: Object6335 + field9459: Object6310 +} + +type Object6328 @Directive22(argument62 : "stringValue30386") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30387", "stringValue30388"]) { + field30419: [Object6329] + field30435: Object6332 + field30439: [Object6330] + field30440: [Object6333] +} + +type Object6329 @Directive22(argument62 : "stringValue30389") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30390", "stringValue30391"]) { + field30420: [Object6330] + field30430: Boolean + field30431: String + field30432: String + field30433: String + field30434: String +} + +type Object633 @Directive20(argument58 : "stringValue3260", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3259") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3261", "stringValue3262"]) { + field3532: String + field3533: String + field3534: String + field3535: Int + field3536: Int +} + +type Object6330 @Directive22(argument62 : "stringValue30392") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30393", "stringValue30394"]) { + field30421: Boolean + field30422: String + field30423: String + field30424: [Object6331] + field30428: String + field30429: [Object6329] +} + +type Object6331 @Directive22(argument62 : "stringValue30395") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30396", "stringValue30397"]) { + field30425: String + field30426: Union91 + field30427: String +} + +type Object6332 @Directive22(argument62 : "stringValue30398") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30399", "stringValue30400"]) { + field30436: String + field30437: Boolean + field30438: String +} + +type Object6333 @Directive20(argument58 : "stringValue30402", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30401") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30403", "stringValue30404"]) { + field30441: String + field30442: Object6334 + field30446: String +} + +type Object6334 @Directive20(argument58 : "stringValue30406", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30405") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30407", "stringValue30408"]) { + field30443: [String] + field30444: [String] + field30445: [String] +} + +type Object6335 @Directive20(argument58 : "stringValue30410", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30409") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30411", "stringValue30412"]) { + field30448: String + field30449: String + field30450: String + field30451: String + field30452: Enum1632 + field30453: String + field30454: String + field30455: Boolean + field30456: Boolean + field30457: Int + field30458: Int + field30459: Int + field30460: [Object6331] +} + +type Object6336 implements Interface99 @Directive22(argument62 : "stringValue30427") @Directive31 @Directive44(argument97 : ["stringValue30428", "stringValue30429", "stringValue30430"]) @Directive45(argument98 : ["stringValue30431", "stringValue30432"]) { + field29538: [Object6338] @Directive14(argument51 : "stringValue30458") + field30462: Object6337 @Directive14(argument51 : "stringValue30433") + field8997: Object6343 @deprecated +} + +type Object6337 @Directive22(argument62 : "stringValue30434") @Directive31 @Directive44(argument97 : ["stringValue30435", "stringValue30436"]) { + field30463: [Object6338] +} + +type Object6338 @Directive22(argument62 : "stringValue30437") @Directive31 @Directive44(argument97 : ["stringValue30438", "stringValue30439"]) { + field30464: String + field30465: String + field30466: String + field30467: String + field30468: String + field30469: Enum1633 + field30470: Union221 + field30487: Object2334 +} + +type Object6339 @Directive22(argument62 : "stringValue30446") @Directive31 @Directive44(argument97 : ["stringValue30447", "stringValue30448"]) { + field30471: String + field30472: String + field30473: Enum401 + field30474: String + field30475: String + field30476: String +} + +type Object634 @Directive20(argument58 : "stringValue3264", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3263") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3265", "stringValue3266"]) { + field3539: Boolean + field3540: Object635 + field3573: Boolean +} + +type Object6340 @Directive22(argument62 : "stringValue30449") @Directive31 @Directive44(argument97 : ["stringValue30450", "stringValue30451"]) { + field30477: String + field30478: String + field30479: String + field30480: Int + field30481: Enum401 +} + +type Object6341 @Directive22(argument62 : "stringValue30452") @Directive31 @Directive44(argument97 : ["stringValue30453", "stringValue30454"]) { + field30482: String + field30483: String + field30484: String + field30485: String +} + +type Object6342 @Directive22(argument62 : "stringValue30455") @Directive31 @Directive44(argument97 : ["stringValue30456", "stringValue30457"]) { + field30486: String +} + +type Object6343 implements Interface36 & Interface98 @Directive22(argument62 : "stringValue30459") @Directive42(argument96 : ["stringValue30460", "stringValue30461"]) @Directive44(argument97 : ["stringValue30467", "stringValue30468", "stringValue30469"]) @Directive45(argument98 : ["stringValue30470", "stringValue30471"]) @Directive45(argument98 : ["stringValue30472"]) @Directive45(argument98 : ["stringValue30473"]) @Directive45(argument98 : ["stringValue30474"]) @Directive7(argument11 : "stringValue30466", argument14 : "stringValue30463", argument15 : "stringValue30465", argument16 : "stringValue30464", argument17 : "stringValue30462") { + field10524(argument1586: String, argument1587: Int, argument1588: String, argument1589: Int, argument1590: Boolean): Object6353 @Directive22(argument62 : "stringValue30518") + field10799: String @Directive14(argument51 : "stringValue30482") @Directive22(argument62 : "stringValue30483") + field10800: String @Directive14(argument51 : "stringValue30484") @Directive22(argument62 : "stringValue30485") + field11929: Object2289 @Directive18 + field11944(argument314: Enum193): Object6371 @Directive22(argument62 : "stringValue30602") + field12377(argument423: String, argument424: Int, argument425: String, argument426: Int, argument427: String, argument428: String, argument429: Int, argument430: Int): Object2447 @Directive22(argument62 : "stringValue30561") + field2312: ID! + field30489: String @Directive13(argument49 : "stringValue30486") @Directive22(argument62 : "stringValue30487") + field30490(argument1574: Int, argument1575: Int, argument1576: String, argument1577: String): Object6345 @Directive22(argument62 : "stringValue30490") @Directive26(argument67 : "stringValue30493", argument71 : "stringValue30491", argument72 : "stringValue30492") + field30505(argument1591: Int, argument1592: Int, argument1593: String, argument1594: String, argument1595: String): Object6355 @Directive22(argument62 : "stringValue30529") @Directive26(argument67 : "stringValue30532", argument71 : "stringValue30530", argument72 : "stringValue30531") + field30510(argument1596: String!, argument1597: String!): Object6358 @Directive22(argument62 : "stringValue30542") + field30511(argument1598: String!, argument1599: String!, argument1600: String, argument1601: String, argument1602: String, argument1603: String, argument1604: Int, argument1605: String, argument1606: Int): Object6360 @Directive22(argument62 : "stringValue30552") + field30512(argument1607: [Enum1637!], argument1608: Enum193): Object6362 @Directive22(argument62 : "stringValue30562") + field30556: Object6373 @Directive4(argument5 : "stringValue30612") + field30558(argument1610: Int, argument1611: Int, argument1612: String, argument1613: [Enum1639!]): Object6374 + field30559: Object6376 @Directive22(argument62 : "stringValue30633") @Directive4(argument5 : "stringValue30634") + field30560: Object6377 @Directive4(argument5 : "stringValue30644") + field30575(argument1614: Boolean): Object6380 @Directive4(argument5 : "stringValue30666") + field30576(argument1615: InputObject1401, argument1616: Int, argument1617: Int, argument1618: String, argument1619: String): Object6381 @Directive1 @Directive22(argument62 : "stringValue30677") @Directive41 + field30577: Object6383 @Directive4(argument5 : "stringValue30687") + field30582: Object6384 @Directive22(argument62 : "stringValue30697") @Directive4(argument5 : "stringValue30698") + field30590(argument1620: [ID!]): Object6386 + field8996: Object6344 + field9044(argument1578: String, argument1579: Int, argument1580: String, argument1581: Int, argument1582: Boolean, argument1583: String, argument1584: String, argument1585: Enum1636!): Object6351 @Directive22(argument62 : "stringValue30511") + field9677: Object2258 @Directive22(argument62 : "stringValue30489") @Directive4(argument5 : "stringValue30488") +} + +type Object6344 implements Interface99 @Directive42(argument96 : ["stringValue30475", "stringValue30476", "stringValue30477"]) @Directive44(argument97 : ["stringValue30478", "stringValue30479"]) @Directive45(argument98 : ["stringValue30480"]) { + field30488: Boolean @Directive14(argument51 : "stringValue30481") @Directive40 + field8997: Interface36 +} + +type Object6345 implements Interface92 @Directive22(argument62 : "stringValue30494") @Directive44(argument97 : ["stringValue30495"]) { + field8384: Object753! + field8385: [Object6346] +} + +type Object6346 implements Interface93 @Directive22(argument62 : "stringValue30496") @Directive44(argument97 : ["stringValue30497"]) { + field8386: String! + field8999: Object6347 +} + +type Object6347 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue30498") @Directive30(argument79 : "stringValue30499") @Directive44(argument97 : ["stringValue30500"]) { + field10398: String @Directive30(argument80 : true) @Directive39 + field10437: String! @Directive30(argument80 : true) @Directive39 + field10569: String! @Directive30(argument80 : true) @Directive39 + field2312: ID! @Directive30(argument80 : true) @Directive40 + field30491: String! @Directive30(argument80 : true) @Directive39 + field30492: [Object6348] @Directive30(argument80 : true) @Directive39 + field30499: [Object6350]! @Directive30(argument80 : true) @Directive39 + field8988: Scalar4 @Directive30(argument80 : true) @Directive39 + field8989: Scalar4 @Directive30(argument80 : true) @Directive39 + field9024: String @Directive30(argument80 : true) @Directive39 + field9044: [Object1800] @Directive30(argument80 : true) @Directive39 + field9142: Scalar4 @Directive30(argument80 : true) @Directive39 +} + +type Object6348 @Directive22(argument62 : "stringValue30501") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30502"]) { + field30493: String @Directive30(argument80 : true) @Directive39 + field30494: Object6349 @Directive30(argument80 : true) @Directive39 +} + +type Object6349 @Directive22(argument62 : "stringValue30503") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30504"]) { + field30495: Scalar2! @Directive30(argument80 : true) @Directive39 + field30496: Scalar2! @Directive30(argument80 : true) @Directive39 + field30497: Scalar2! @Directive30(argument80 : true) @Directive39 + field30498: Scalar2! @Directive30(argument80 : true) @Directive39 +} + +type Object635 @Directive20(argument58 : "stringValue3268", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3267") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3269", "stringValue3270"]) { + field3541: String + field3542: String + field3543: String + field3544: String + field3545: String + field3546: String + field3547: String + field3548: [String] + field3549: [String] + field3550: Enum199 + field3551: String + field3552: [Object636] + field3556: [Object637] + field3559: Object638 + field3567: [String] + field3568: String + field3569: String + field3570: Int + field3571: String + field3572: String +} + +type Object6350 @Directive22(argument62 : "stringValue30505") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30506"]) { + field30500: String! @Directive30(argument80 : true) @Directive40 + field30501: String! @Directive30(argument80 : true) @Directive40 + field30502: Enum1634! @Directive30(argument80 : true) @Directive40 + field30503: Enum1635! @Directive30(argument80 : true) @Directive40 + field30504: String @Directive30(argument80 : true) @Directive39 +} + +type Object6351 implements Interface92 @Directive22(argument62 : "stringValue30514") @Directive44(argument97 : ["stringValue30515"]) { + field8384: Object753! + field8385: [Object6352] +} + +type Object6352 implements Interface93 @Directive22(argument62 : "stringValue30516") @Directive44(argument97 : ["stringValue30517"]) { + field8386: String! + field8999: Object1800 +} + +type Object6353 implements Interface92 @Directive22(argument62 : "stringValue30519") @Directive44(argument97 : ["stringValue30526"]) @Directive8(argument20 : "stringValue30525", argument21 : "stringValue30521", argument23 : "stringValue30524", argument24 : "stringValue30520", argument25 : "stringValue30522", argument27 : "stringValue30523") { + field8384: Object753! + field8385: [Object6354] +} + +type Object6354 implements Interface93 @Directive42(argument96 : ["stringValue30527"]) @Directive44(argument97 : ["stringValue30528"]) { + field8386: String! + field8999: Object1788 +} + +type Object6355 implements Interface92 @Directive22(argument62 : "stringValue30533") @Directive44(argument97 : ["stringValue30534"]) { + field8384: Object753! + field8385: [Object6356] +} + +type Object6356 implements Interface93 @Directive22(argument62 : "stringValue30535") @Directive44(argument97 : ["stringValue30536"]) { + field8386: String! + field8999: Object6357 +} + +type Object6357 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue30538") @Directive30(argument79 : "stringValue30539") @Directive44(argument97 : ["stringValue30537"]) { + field10398: String @Directive30(argument80 : true) @Directive41 + field10437: String! @Directive30(argument80 : true) @Directive40 + field10569: String @Directive30(argument80 : true) @Directive40 + field10796: String! @Directive30(argument80 : true) @Directive40 + field10853: String @Directive30(argument80 : true) @Directive39 + field2312: ID! @Directive30(argument80 : true) @Directive40 + field30267: Object6143 @Directive14(argument51 : "stringValue30541") @Directive30(argument80 : true) @Directive39 + field30506: String! @Directive30(argument80 : true) @Directive41 + field30507: String @Directive30(argument80 : true) @Directive39 + field30508: Interface97 @Directive14(argument51 : "stringValue30540") @Directive30(argument80 : true) @Directive41 + field30509: String @Directive30(argument80 : true) @Directive40 + field8988: Scalar4 @Directive30(argument80 : true) @Directive39 + field8989: Scalar4 @Directive30(argument80 : true) @Directive39 + field9023: String @Directive30(argument80 : true) @Directive39 + field9029: String @Directive30(argument80 : true) @Directive41 + field9030: String @Directive30(argument80 : true) @Directive40 + field9291: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object6358 implements Interface92 @Directive42(argument96 : ["stringValue30543"]) @Directive44(argument97 : ["stringValue30549"]) @Directive8(argument21 : "stringValue30545", argument23 : "stringValue30548", argument24 : "stringValue30544", argument25 : "stringValue30546", argument27 : "stringValue30547") { + field8384: Object753! + field8385: [Object6359] +} + +type Object6359 implements Interface93 @Directive42(argument96 : ["stringValue30550"]) @Directive44(argument97 : ["stringValue30551"]) { + field8386: String! + field8999: Object1788 +} + +type Object636 @Directive20(argument58 : "stringValue3276", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3275") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3277", "stringValue3278"]) { + field3553: String + field3554: [String!] + field3555: Enum200 +} + +type Object6360 implements Interface92 @Directive42(argument96 : ["stringValue30553"]) @Directive44(argument97 : ["stringValue30558"]) @Directive8(argument21 : "stringValue30555", argument23 : "stringValue30557", argument24 : "stringValue30554", argument25 : null, argument27 : "stringValue30556") { + field8384: Object753! + field8385: [Object6361] +} + +type Object6361 implements Interface93 @Directive42(argument96 : ["stringValue30559"]) @Directive44(argument97 : ["stringValue30560"]) { + field8386: String! + field8999: Object1788 +} + +type Object6362 implements Interface92 @Directive22(argument62 : "stringValue30566") @Directive44(argument97 : ["stringValue30571"]) @Directive8(argument21 : "stringValue30568", argument23 : "stringValue30570", argument24 : "stringValue30567", argument25 : "stringValue30569", argument27 : null) { + field8384: Object753! + field8385: [Object6363] +} + +type Object6363 implements Interface93 @Directive22(argument62 : "stringValue30572") @Directive44(argument97 : ["stringValue30573"]) { + field8386: String! + field8999: Object6364 +} + +type Object6364 @Directive12 @Directive22(argument62 : "stringValue30576") @Directive42(argument96 : ["stringValue30574", "stringValue30575"]) @Directive44(argument97 : ["stringValue30577", "stringValue30578"]) @Directive45(argument98 : ["stringValue30579"]) { + field30513: String! + field30514: Enum1638! + field30515: String + field30516: Object2295 + field30517: Scalar4 + field30518: Scalar4 + field30519: String + field30520: String + field30521: String + field30522: Object6365 + field30542: String + field30543: Boolean + field30544: String + field30545: Object2296 + field30546: Union170 + field30547: Object4016 @Directive4(argument5 : "stringValue30595") + field30548: [Object4016] @Directive14(argument51 : "stringValue30596") + field30549: Object6143 @Directive14(argument51 : "stringValue30597") + field30550: [Object6143] @Directive14(argument51 : "stringValue30598") + field30551: [Object1778] @Directive14(argument51 : "stringValue30599") + field30552: [Object1781] @Directive14(argument51 : "stringValue30600") + field30553: Object2334 + field30554: Object6137 + field30555(argument1609: String!): Object6143 @Directive14(argument51 : "stringValue30601") +} + +type Object6365 @Directive22(argument62 : "stringValue30583") @Directive31 @Directive44(argument97 : ["stringValue30584"]) { + field30523: Object6366 + field30529: Object6367 + field30531: Object6368 + field30535: Object6369 + field30539: Object6370 +} + +type Object6366 @Directive22(argument62 : "stringValue30585") @Directive31 @Directive44(argument97 : ["stringValue30586"]) { + field30524: String + field30525: String + field30526: Float + field30527: Float + field30528: Boolean +} + +type Object6367 @Directive22(argument62 : "stringValue30587") @Directive31 @Directive44(argument97 : ["stringValue30588"]) { + field30530: String +} + +type Object6368 @Directive22(argument62 : "stringValue30589") @Directive31 @Directive44(argument97 : ["stringValue30590"]) { + field30532: String + field30533: String + field30534: String +} + +type Object6369 @Directive22(argument62 : "stringValue30591") @Directive31 @Directive44(argument97 : ["stringValue30592"]) { + field30536: String + field30537: String + field30538: Object2309 +} + +type Object637 @Directive20(argument58 : "stringValue3284", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3283") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3285", "stringValue3286"]) { + field3557: String + field3558: String +} + +type Object6370 @Directive22(argument62 : "stringValue30593") @Directive31 @Directive44(argument97 : ["stringValue30594"]) { + field30540: String + field30541: String +} + +type Object6371 implements Interface92 @Directive22(argument62 : "stringValue30603") @Directive44(argument97 : ["stringValue30609"]) @Directive8(argument19 : "stringValue30608", argument21 : "stringValue30605", argument23 : "stringValue30607", argument24 : "stringValue30604", argument25 : "stringValue30606", argument27 : null) { + field8384: Object753! + field8385: [Object6372] +} + +type Object6372 implements Interface93 @Directive22(argument62 : "stringValue30610") @Directive44(argument97 : ["stringValue30611"]) { + field8386: String! + field8999: Object2294 +} + +type Object6373 implements Interface36 @Directive22(argument62 : "stringValue30613") @Directive42(argument96 : ["stringValue30614", "stringValue30615"]) @Directive44(argument97 : ["stringValue30618"]) @Directive7(argument14 : "stringValue30617", argument17 : "stringValue30616", argument18 : false) { + field2312: ID! @Directive30(argument80 : true) + field30557: Boolean @Directive3(argument3 : "stringValue30619") @Directive30(argument80 : true) @Directive39 +} + +type Object6374 implements Interface92 @Directive22(argument62 : "stringValue30624") @Directive44(argument97 : ["stringValue30630"]) @Directive8(argument19 : "stringValue30629", argument20 : "stringValue30628", argument21 : "stringValue30626", argument23 : "stringValue30627", argument24 : "stringValue30625") { + field8384: Object753! + field8385: [Object6375] +} + +type Object6375 implements Interface93 @Directive22(argument62 : "stringValue30631") @Directive44(argument97 : ["stringValue30632"]) { + field8386: String! + field8999: Object4016 +} + +type Object6376 implements Interface36 @Directive22(argument62 : "stringValue30640") @Directive42(argument96 : ["stringValue30635"]) @Directive44(argument97 : ["stringValue30641", "stringValue30642"]) @Directive7(argument12 : "stringValue30639", argument13 : "stringValue30638", argument14 : "stringValue30637", argument17 : "stringValue30636", argument18 : false) { + field12112: Boolean @Directive3(argument3 : "stringValue30643") @Directive41 + field2312: ID! @Directive1 +} + +type Object6377 implements Interface36 @Directive22(argument62 : "stringValue30645") @Directive42(argument96 : ["stringValue30646", "stringValue30647"]) @Directive44(argument97 : ["stringValue30654"]) @Directive7(argument11 : "stringValue30653", argument12 : "stringValue30652", argument13 : "stringValue30650", argument14 : "stringValue30649", argument16 : "stringValue30651", argument17 : "stringValue30648", argument18 : false) { + field18110: [Object6379] + field2312: ID! + field30561: [Object6378] + field30568: Float + field30569: Float +} + +type Object6378 @Directive12 @Directive42(argument96 : ["stringValue30655", "stringValue30656", "stringValue30657"]) @Directive44(argument97 : ["stringValue30658"]) { + field30562: ID! + field30563: String @deprecated + field30564: String @deprecated + field30565: Object4016 @Directive4(argument5 : "stringValue30659") + field30566: Object4142 + field30567: Object4142 +} + +type Object6379 @Directive12 @Directive42(argument96 : ["stringValue30660", "stringValue30661", "stringValue30662"]) @Directive44(argument97 : ["stringValue30663", "stringValue30664"]) { + field30570: ID! + field30571: Object4016 @Directive4(argument5 : "stringValue30665") + field30572: String + field30573: [Object4141] + field30574: Object4142 +} + +type Object638 @Directive20(argument58 : "stringValue3288", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3287") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3289", "stringValue3290"]) { + field3560: String + field3561: String + field3562: String + field3563: String + field3564: String + field3565: String + field3566: String +} + +type Object6380 implements Interface36 @Directive22(argument62 : "stringValue30667") @Directive42(argument96 : ["stringValue30668", "stringValue30669"]) @Directive44(argument97 : ["stringValue30675", "stringValue30676"]) @Directive7(argument12 : "stringValue30674", argument13 : "stringValue30672", argument14 : "stringValue30671", argument16 : "stringValue30673", argument17 : "stringValue30670", argument18 : false) { + field18110: [Object6379] @Directive40 + field2312: ID! +} + +type Object6381 implements Interface92 @Directive22(argument62 : "stringValue30681") @Directive44(argument97 : ["stringValue30682", "stringValue30683"]) { + field8384: Object753! + field8385: [Object6382] +} + +type Object6382 implements Interface93 @Directive22(argument62 : "stringValue30684") @Directive44(argument97 : ["stringValue30685", "stringValue30686"]) { + field8386: String + field8999: Object4140 +} + +type Object6383 implements Interface36 @Directive22(argument62 : "stringValue30688") @Directive42(argument96 : ["stringValue30689", "stringValue30690"]) @Directive44(argument97 : ["stringValue30696"]) @Directive7(argument11 : "stringValue30695", argument13 : "stringValue30693", argument14 : "stringValue30692", argument16 : "stringValue30694", argument17 : "stringValue30691") { + field2312: ID! + field30578: Int + field30579: Int + field30580: Boolean + field30581: Boolean +} + +type Object6384 implements Interface36 @Directive22(argument62 : "stringValue30699") @Directive42(argument96 : ["stringValue30700", "stringValue30701"]) @Directive44(argument97 : ["stringValue30706"]) @Directive7(argument13 : "stringValue30704", argument14 : "stringValue30703", argument16 : "stringValue30705", argument17 : "stringValue30702", argument18 : false) { + field2312: ID! + field30583: Int @Directive41 + field30584: Float @Directive41 + field30585: Float @Directive41 + field30586: Boolean @Directive41 + field30587: Object6385 @Directive41 +} + +type Object6385 @Directive42(argument96 : ["stringValue30707", "stringValue30708", "stringValue30709"]) @Directive44(argument97 : ["stringValue30710"]) { + field30588: Enum1640 + field30589: [ID] +} + +type Object6386 implements Interface92 @Directive22(argument62 : "stringValue30718") @Directive44(argument97 : ["stringValue30719"]) @Directive8(argument20 : "stringValue30717", argument21 : "stringValue30714", argument23 : "stringValue30716", argument24 : "stringValue30713", argument25 : "stringValue30715") { + field8384: Object753! + field8385: [Object6387] +} + +type Object6387 implements Interface93 @Directive22(argument62 : "stringValue30720") @Directive44(argument97 : ["stringValue30721"]) { + field8386: String! + field8999: Object6275 +} + +type Object6388 implements Interface99 @Directive22(argument62 : "stringValue30723") @Directive31 @Directive44(argument97 : ["stringValue30724", "stringValue30725", "stringValue30726"]) @Directive45(argument98 : ["stringValue30727", "stringValue30728"]) { + field30592: [Object6389] @Directive14(argument51 : "stringValue30729") + field8997: Object6343 @Directive18 +} + +type Object6389 @Directive22(argument62 : "stringValue30730") @Directive31 @Directive44(argument97 : ["stringValue30731", "stringValue30732"]) { + field30593: String + field30594: String + field30595: String + field30596: String + field30597: String + field30598: Interface3 + field30599: Enum194 + field30600: Object2295 + field30601: Boolean +} + +type Object639 @Directive20(argument58 : "stringValue3292", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3291") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3293", "stringValue3294"]) { + field3577: String + field3578: [Object640] +} + +type Object6390 @Directive22(argument62 : "stringValue30745") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30746", "stringValue30747", "stringValue30748"]) @Directive45(argument98 : ["stringValue30749"]) { + field30604: Scalar2 @Directive14(argument51 : "stringValue30750") + field30605: Object6391 @Directive14(argument51 : "stringValue30751") + field30607: Object6392 @Directive14(argument51 : "stringValue30755") + field30625(argument1625: String, argument1626: String, argument1627: Int): Object2465 @Directive14(argument51 : "stringValue30762") + field30626: String @Directive18 + field30627: Object2449 @Directive14(argument51 : "stringValue30763") + field30628: [Object2471!]! @Directive14(argument51 : "stringValue30764") + field30629: Object6137 + field30630: Object6394 + field30637: Object6395 @Directive18 +} + +type Object6391 @Directive22(argument62 : "stringValue30752") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30753", "stringValue30754"]) { + field30606: [Object2] +} + +type Object6392 @Directive22(argument62 : "stringValue30756") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue30757", "stringValue30758"]) { + field30608: String! + field30609: String + field30610: Scalar3 + field30611: Scalar3 + field30612: String + field30613: Int + field30614: Int + field30615: Int + field30616: String + field30617: Object887 + field30618: Object6393 + field30621: Object6393 + field30622: String + field30623: [String!] + field30624: [String] +} + +type Object6393 @Directive22(argument62 : "stringValue30759") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30760", "stringValue30761"]) { + field30619: String! @Directive30(argument80 : true) @Directive39 + field30620: String @Directive30(argument80 : true) @Directive39 +} + +type Object6394 @Directive22(argument62 : "stringValue30765") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30766", "stringValue30767"]) { + field30631: String @Directive30(argument80 : true) @Directive41 + field30632: String @Directive30(argument80 : true) @Directive41 + field30633: [String] @Directive30(argument80 : true) @Directive41 + field30634: Int @Directive30(argument80 : true) @Directive41 + field30635: Int @Directive30(argument80 : true) @Directive41 + field30636: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6395 @Directive22(argument62 : "stringValue30768") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30769", "stringValue30770"]) { + field30638: String @Directive30(argument80 : true) @Directive41 + field30639: String @Directive30(argument80 : true) @Directive41 + field30640: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object6396 @Directive22(argument62 : "stringValue30771") @Directive31 @Directive44(argument97 : ["stringValue30772", "stringValue30773", "stringValue30774"]) @Directive45(argument98 : ["stringValue30775"]) { + field30642: [Object2449] @Directive14(argument51 : "stringValue30776") + field30643: Object6137 @deprecated + field30644(argument1632: ID, argument1633: String, argument1634: Int, argument1635: Int): [Object2449] @Directive14(argument51 : "stringValue30777") + field30645: ID + field30646: String + field30647: Int + field30648: Int +} + +type Object6397 implements Interface46 @Directive22(argument62 : "stringValue30786") @Directive31 @Directive44(argument97 : ["stringValue30787", "stringValue30788"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6398 + field8330: Object6400 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6398 implements Interface45 @Directive22(argument62 : "stringValue30789") @Directive31 @Directive44(argument97 : ["stringValue30790", "stringValue30791"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6399 +} + +type Object6399 @Directive22(argument62 : "stringValue30792") @Directive31 @Directive44(argument97 : ["stringValue30793", "stringValue30794"]) { + field30650: String + field30651: String + field30652: Scalar2 + field30653: Scalar2 +} + +type Object64 @Directive21(argument61 : "stringValue282") @Directive44(argument97 : ["stringValue281"]) { + field415: String + field416: String + field417: String +} + +type Object640 @Directive20(argument58 : "stringValue3296", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3295") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3297", "stringValue3298"]) { + field3579: String + field3580: [Union99] +} + +type Object6400 implements Interface91 @Directive22(argument62 : "stringValue30795") @Directive31 @Directive44(argument97 : ["stringValue30796", "stringValue30797"]) { + field8331: [String] +} + +type Object6401 implements Interface159 @Directive22(argument62 : "stringValue30798") @Directive31 @Directive44(argument97 : ["stringValue30799", "stringValue30800", "stringValue30801"]) @Directive45(argument98 : ["stringValue30802"]) { + field17369(argument1539: InputObject1386, argument1556: ID @Directive25(argument65 : "stringValue30188")): Object6402 @Directive13(argument49 : "stringValue30803") + field30659: Object6406 +} + +type Object6402 implements Interface46 @Directive22(argument62 : "stringValue30804") @Directive31 @Directive44(argument97 : ["stringValue30805", "stringValue30806"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6403 + field8330: Object6405 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6403 implements Interface45 @Directive22(argument62 : "stringValue30807") @Directive31 @Directive44(argument97 : ["stringValue30808", "stringValue30809"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6404 +} + +type Object6404 @Directive22(argument62 : "stringValue30810") @Directive31 @Directive44(argument97 : ["stringValue30811", "stringValue30812"]) { + field30655: String + field30656: String + field30657: Scalar2 + field30658: Scalar2 +} + +type Object6405 implements Interface91 @Directive22(argument62 : "stringValue30813") @Directive31 @Directive44(argument97 : ["stringValue30814", "stringValue30815"]) { + field8331: [String] +} + +type Object6406 @Directive22(argument62 : "stringValue30816") @Directive31 @Directive44(argument97 : ["stringValue30817", "stringValue30818"]) { + field30660: [String!] + field30661: String +} + +type Object6407 @Directive22(argument62 : "stringValue30821") @Directive26(argument67 : "stringValue30820", argument71 : "stringValue30819") @Directive31 @Directive44(argument97 : ["stringValue30822", "stringValue30823", "stringValue30824"]) @Directive45(argument98 : ["stringValue30825"]) { + field30663(argument1638: Enum460, argument1639: String): Object6408 @Directive14(argument51 : "stringValue30826") + field30667(argument1640: ID! @Directive25(argument65 : "stringValue30830")): Object2361 @Directive18 + field30668: Object6409 + field30708: Object6137 @deprecated +} + +type Object6408 @Directive22(argument62 : "stringValue30827") @Directive31 @Directive44(argument97 : ["stringValue30828", "stringValue30829"]) { + field30664: Object1837 + field30665: Object1837 + field30666: [Object2362] +} + +type Object6409 @Directive2 @Directive22(argument62 : "stringValue30833") @Directive26(argument67 : "stringValue30832", argument71 : "stringValue30831") @Directive31 @Directive44(argument97 : ["stringValue30834", "stringValue30835", "stringValue30836"]) { + field30669(argument1641: String!): Union222 @Directive49(argument102 : "stringValue30837") + field30688(argument1642: String!): Object6413 @Directive49(argument102 : "stringValue30850") + field30695(argument1643: Enum462): Object6414 +} + +type Object641 @Directive20(argument58 : "stringValue3303", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3302") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3304", "stringValue3305"]) { + field3582: String + field3583: Object1 + field3584: Int + field3585: String + field3586: Int + field3587: Object494 + field3588: Object642 + field3591: Object521 + field3592: [Object532!] + field3593: Object538 + field3594: Boolean + field3595: Object539 + field3596: String + field3597: String + field3598: String + field3599: Boolean + field3600: Object548 + field3601: String + field3602: Object541 + field3603: Object496 + field3604: Object480 + field3605: Object514 + field3606: Union98 +} + +type Object6410 @Directive22(argument62 : "stringValue30841") @Directive31 @Directive44(argument97 : ["stringValue30842", "stringValue30843"]) { + field30670: Object1837 + field30671: Object1837 + field30672: Object1837 + field30673: [Object6411] + field30677: [Object6412] + field30680: Object1837 + field30681: Object1837 + field30682: Object1837 + field30683: Object1837 + field30684: Object1837 + field30685: Object1837 + field30686: String + field30687: Object1837 +} + +type Object6411 @Directive22(argument62 : "stringValue30844") @Directive31 @Directive44(argument97 : ["stringValue30845", "stringValue30846"]) { + field30674: String + field30675: Object1837 + field30676: Object1837 +} + +type Object6412 @Directive22(argument62 : "stringValue30847") @Directive31 @Directive44(argument97 : ["stringValue30848", "stringValue30849"]) { + field30678: Enum10 + field30679: Object1837 +} + +type Object6413 @Directive22(argument62 : "stringValue30851") @Directive31 @Directive44(argument97 : ["stringValue30852", "stringValue30853"]) { + field30689: Object2363 + field30690: Object1837 + field30691: Object1837 + field30692: [Object6412] + field30693: Object2364 + field30694: Object1837 @deprecated +} + +type Object6414 @Directive22(argument62 : "stringValue30854") @Directive31 @Directive44(argument97 : ["stringValue30855", "stringValue30856"]) { + field30696: Object1837 + field30697: Object1837 + field30698: Object2363 + field30699: String + field30700: [Object6415] + field30703: [Object6416] +} + +type Object6415 @Directive22(argument62 : "stringValue30857") @Directive31 @Directive44(argument97 : ["stringValue30858", "stringValue30859"]) { + field30701: Object1837 + field30702: Object1837 +} + +type Object6416 @Directive22(argument62 : "stringValue30860") @Directive31 @Directive44(argument97 : ["stringValue30861", "stringValue30862"]) { + field30704: String + field30705: Object6411 + field30706: Object2368 + field30707: Object2493 +} + +type Object6417 @Directive22(argument62 : "stringValue30863") @Directive31 @Directive44(argument97 : ["stringValue30864", "stringValue30865", "stringValue30866"]) @Directive45(argument98 : ["stringValue30867"]) { + field30710: Boolean @Directive14(argument51 : "stringValue30868") + field30711: Object6343 @Directive18 @deprecated +} + +type Object6418 @Directive20(argument58 : "stringValue30871", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30870") @Directive42(argument96 : ["stringValue30869"]) @Directive44(argument97 : ["stringValue30872", "stringValue30873"]) { + field30713: Object6419 @Directive41 + field30757: Object6427 @Directive41 + field30763: Object878 @Directive41 +} + +type Object6419 @Directive22(argument62 : "stringValue30876") @Directive42(argument96 : ["stringValue30874", "stringValue30875"]) @Directive44(argument97 : ["stringValue30877", "stringValue30878"]) { + field30714: String + field30715: String + field30716: String + field30717: [Object6420] + field30724: String + field30725: String + field30726: Object6421 + field30732: String + field30733: [Object6422] + field30748: Object6426 + field30755: String + field30756: Boolean +} + +type Object642 @Directive20(argument58 : "stringValue3307", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3306") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3308", "stringValue3309"]) { + field3589: String + field3590: String +} + +type Object6420 @Directive22(argument62 : "stringValue30881") @Directive42(argument96 : ["stringValue30879", "stringValue30880"]) @Directive44(argument97 : ["stringValue30882", "stringValue30883"]) { + field30718: String + field30719: String + field30720: String + field30721: String + field30722: String + field30723: String +} + +type Object6421 @Directive42(argument96 : ["stringValue30884", "stringValue30885", "stringValue30886"]) @Directive44(argument97 : ["stringValue30887", "stringValue30888"]) { + field30727: String + field30728: String + field30729: String + field30730: String + field30731: String +} + +type Object6422 @Directive42(argument96 : ["stringValue30889", "stringValue30890", "stringValue30891"]) @Directive44(argument97 : ["stringValue30892", "stringValue30893"]) { + field30734: String + field30735: String + field30736: String + field30737: String + field30738: String + field30739: String + field30740: Union223 + field30745: String + field30746: String + field30747: String +} + +type Object6423 @Directive42(argument96 : ["stringValue30897", "stringValue30898", "stringValue30899"]) @Directive44(argument97 : ["stringValue30900", "stringValue30901"]) { + field30741: [Object6424] +} + +type Object6424 @Directive42(argument96 : ["stringValue30902", "stringValue30903", "stringValue30904"]) @Directive44(argument97 : ["stringValue30905", "stringValue30906"]) { + field30742: String + field30743: String +} + +type Object6425 @Directive42(argument96 : ["stringValue30907", "stringValue30908", "stringValue30909"]) @Directive44(argument97 : ["stringValue30910", "stringValue30911"]) { + field30744: [Object6424] +} + +type Object6426 @Directive42(argument96 : ["stringValue30912", "stringValue30913", "stringValue30914"]) @Directive44(argument97 : ["stringValue30915", "stringValue30916"]) { + field30749: String + field30750: String + field30751: String + field30752: String + field30753: String + field30754: String +} + +type Object6427 @Directive42(argument96 : ["stringValue30917", "stringValue30918", "stringValue30919"]) @Directive44(argument97 : ["stringValue30920", "stringValue30921"]) { + field30758: String + field30759: String + field30760: String @Directive30(argument80 : true) @Directive41 + field30761: String @Directive30(argument80 : true) @Directive41 + field30762: String @Directive30(argument80 : true) @Directive41 +} + +type Object6428 @Directive22(argument62 : "stringValue30922") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30923"]) { + field30765: String @Directive30(argument80 : true) @Directive41 + field30766: Object6429 @Directive30(argument80 : true) @Directive41 +} + +type Object6429 @Directive20(argument58 : "stringValue30925", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30924") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue30926"]) { + field30767: String @Directive30(argument80 : true) @Directive41 + field30768: String @Directive30(argument80 : true) @Directive41 + field30769: String @Directive30(argument80 : true) @Directive41 + field30770: String @Directive30(argument80 : true) @Directive41 + field30771: String @Directive30(argument80 : true) @Directive41 +} + +type Object643 @Directive20(argument58 : "stringValue3311", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3310") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3312", "stringValue3313"]) { + field3607: String + field3608: Object624 +} + +type Object6430 @Directive22(argument62 : "stringValue30927") @Directive31 @Directive44(argument97 : ["stringValue30928", "stringValue30929", "stringValue30930"]) @Directive45(argument98 : ["stringValue30931"]) { + field30773(argument1644: InputObject1405): Object6431 @Directive14(argument51 : "stringValue30932") + field30774: Object6431 @Directive14(argument51 : "stringValue30946") + field30775: Object6431 @Directive14(argument51 : "stringValue30947") + field30776: Object6431 @Directive14(argument51 : "stringValue30948") + field30777: Object6431 @Directive14(argument51 : "stringValue30949") + field30778(argument1645: ID!): Object6431 @Directive14(argument51 : "stringValue30950") + field30779: Object6137 @deprecated +} + +type Object6431 implements Interface46 @Directive22(argument62 : "stringValue30940") @Directive29(argument78 : "stringValue30939") @Directive31 @Directive44(argument97 : ["stringValue30941", "stringValue30942"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6432 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6432 implements Interface45 @Directive22(argument62 : "stringValue30943") @Directive31 @Directive44(argument97 : ["stringValue30944", "stringValue30945"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6433 implements Interface99 @Directive22(argument62 : "stringValue30951") @Directive26(argument67 : "stringValue30953", argument68 : "stringValue30955", argument71 : "stringValue30952", argument72 : "stringValue30954") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue30956", "stringValue30957", "stringValue30958"]) @Directive45(argument98 : ["stringValue30959", "stringValue30960"]) { + field30781(argument1646: [String!] = []): Object3995 @Directive30(argument80 : true) @Directive41 @Directive49(argument102 : "stringValue30961") + field8997: Interface36 @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object6434 implements Interface159 @Directive22(argument62 : "stringValue30962") @Directive31 @Directive44(argument97 : ["stringValue30963", "stringValue30964"]) { + field17369(argument1539: InputObject1386): Object6435 @Directive49(argument102 : "stringValue30965") +} + +type Object6435 implements Interface46 @Directive22(argument62 : "stringValue30966") @Directive31 @Directive44(argument97 : ["stringValue30967", "stringValue30968"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6436 + field8330: Object6438 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6436 implements Interface45 @Directive22(argument62 : "stringValue30969") @Directive31 @Directive44(argument97 : ["stringValue30970", "stringValue30971"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6437 +} + +type Object6437 @Directive22(argument62 : "stringValue30972") @Directive31 @Directive44(argument97 : ["stringValue30973", "stringValue30974"]) { + field30783: Scalar2 + field30784: Scalar2 +} + +type Object6438 implements Interface91 @Directive22(argument62 : "stringValue30975") @Directive31 @Directive44(argument97 : ["stringValue30976", "stringValue30977"]) { + field8331: [String] +} + +type Object6439 implements Interface99 @Directive22(argument62 : "stringValue30979") @Directive31 @Directive44(argument97 : ["stringValue30980", "stringValue30981", "stringValue30982"]) @Directive45(argument98 : ["stringValue30983", "stringValue30984"]) { + field30786(argument1647: String, argument1648: [String!] = [], argument1649: Boolean = false): Object6440 @Directive18 + field30860: Object6443 @Directive18 + field30870: Object6446 @Directive18 + field8997: Interface36 @deprecated +} + +type Object644 @Directive20(argument58 : "stringValue3315", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3314") @Directive31 @Directive44(argument97 : ["stringValue3316", "stringValue3317"]) { + field3609: String + field3610: String + field3611: String + field3612: String + field3613: Boolean +} + +type Object6440 implements Interface46 @Directive22(argument62 : "stringValue30985") @Directive26(argument67 : "stringValue30991", argument68 : "stringValue30992", argument71 : "stringValue30989", argument72 : "stringValue30990") @Directive31 @Directive44(argument97 : ["stringValue30986", "stringValue30987", "stringValue30988"]) @Directive45(argument98 : ["stringValue30993"]) @Directive45(argument98 : ["stringValue30994"]) @Directive45(argument98 : ["stringValue30995"]) @Directive45(argument98 : ["stringValue30996"]) @Directive45(argument98 : ["stringValue30997"]) @Directive45(argument98 : ["stringValue30998"]) @Directive45(argument98 : ["stringValue30999"]) @Directive45(argument98 : ["stringValue31000"]) @Directive45(argument98 : ["stringValue31001"]) @Directive45(argument98 : ["stringValue31002"]) { + field2616(argument1651: String, argument1652: [String!] = [], argument1653: Boolean = false): [Object474]! @Directive14(argument51 : "stringValue31010") + field30789: Object6137 + field30790: [Object724] @Directive14(argument51 : "stringValue31012") + field30791: [Interface51] @Directive14(argument51 : "stringValue31013") + field30792: Boolean @Directive18 @Directive22(argument62 : "stringValue31014") @Directive40 + field30793: Boolean @Directive18 @Directive22(argument62 : "stringValue31015") @Directive40 + field30794: Object474 @Directive14(argument51 : "stringValue31016") @Directive40 + field30795: Object474 @Directive14(argument51 : "stringValue31017") @Directive40 + field30796: Object474 @Directive14(argument51 : "stringValue31018") @Directive40 + field30797: Object474 @Directive14(argument51 : "stringValue31019") @Directive41 + field30798: [[Object725]] @Directive14(argument51 : "stringValue31020") @Directive41 + field30799: [Interface51] @Directive14(argument51 : "stringValue31021") @Directive41 + field30800: [[Object725]] @Directive14(argument51 : "stringValue31022") @Directive41 + field30801: Object725 @Directive14(argument51 : "stringValue31023") @Directive41 + field30802: Object725 @Directive14(argument51 : "stringValue31024") @Directive41 + field30803: Object474 @Directive14(argument51 : "stringValue31025") @Directive41 + field30804: Object474 @Directive14(argument51 : "stringValue31026") @Directive41 + field30805: [Object724] @Directive14(argument51 : "stringValue31027") @Directive41 + field30806: [Interface51] @Directive14(argument51 : "stringValue31028") @Directive41 + field30807: [Interface51] @Directive14(argument51 : "stringValue31029") @Directive41 + field30808: [Interface51] @Directive14(argument51 : "stringValue31030") @Directive41 + field30809: [Object724] @Directive14(argument51 : "stringValue31031") @Directive41 + field30810: [Interface51] @Directive14(argument51 : "stringValue31032") @Directive41 + field30811: [Interface51] @Directive14(argument51 : "stringValue31033") @Directive41 + field30812: Object725 @Directive14(argument51 : "stringValue31034") @Directive41 + field30813: [Object474]! @Directive14(argument51 : "stringValue31035") @Directive41 + field30814: [Object724] @Directive14(argument51 : "stringValue31036") @Directive41 + field30815: [Interface51] @Directive14(argument51 : "stringValue31037") @Directive41 + field30816: [[Object725]] @Directive14(argument51 : "stringValue31038") @Directive41 + field30817: [[Object725]] @Directive14(argument51 : "stringValue31039") @Directive41 + field30818: Object474 @Directive14(argument51 : "stringValue31040") @Directive41 + field30819: Object725 @Directive14(argument51 : "stringValue31041") @Directive41 + field30820: Object725 @Directive14(argument51 : "stringValue31042") @Directive41 + field30821: Object725 @Directive14(argument51 : "stringValue31043") @Directive41 + field30822: Object725 @Directive14(argument51 : "stringValue31044") @Directive41 + field30823: Object725 @Directive14(argument51 : "stringValue31045") @Directive41 + field30824: Object725 @Directive14(argument51 : "stringValue31046") @Directive41 + field30825: Object725 @Directive14(argument51 : "stringValue31047") @Directive41 + field30826: Object725 @Directive14(argument51 : "stringValue31048") @Directive41 + field30827: Object725 @Directive14(argument51 : "stringValue31049") @Directive41 + field30828: Object725 @Directive14(argument51 : "stringValue31050") @Directive41 + field30829: Object725 @Directive14(argument51 : "stringValue31051") @Directive41 + field30830: Object725 @Directive14(argument51 : "stringValue31052") @Directive41 + field30831: Object452 @Directive14(argument51 : "stringValue31053") @Directive41 + field30832: Object725 @Directive14(argument51 : "stringValue31054") @Directive41 + field30833: Object6442 @Directive14(argument51 : "stringValue31055") @Directive41 + field30834: Object6442 @Directive14(argument51 : "stringValue31059") @Directive41 + field30835(argument1657: String): [Object474] @Directive14(argument51 : "stringValue31060") @Directive40 + field30836(argument1658: String): Object474 @Directive14(argument51 : "stringValue31061") @Directive41 + field30837(argument1659: String): Object6441 @Directive14(argument51 : "stringValue31062") @Directive41 + field30838: Object725 @Directive14(argument51 : "stringValue31063") @Directive41 + field30839: Object725 @Directive14(argument51 : "stringValue31064") @Directive41 + field30840: Object725 @Directive14(argument51 : "stringValue31065") @Directive41 + field30841: Object725 @Directive14(argument51 : "stringValue31066") @Directive41 + field30842: Object725 @Directive14(argument51 : "stringValue31067") @Directive41 + field30843: Object725 @Directive14(argument51 : "stringValue31068") @Directive41 + field30844: Object725 @Directive14(argument51 : "stringValue31069") @Directive41 + field30845: Object725 @Directive14(argument51 : "stringValue31070") @Directive41 + field30846: Object6441 @Directive14(argument51 : "stringValue31071") @Directive41 + field30847: Object6441 @Directive14(argument51 : "stringValue31072") @Directive41 + field30848: [Object474]! @Directive14(argument51 : "stringValue31073") @Directive41 + field30849: [[Object725]] @Directive14(argument51 : "stringValue31074") @Directive41 + field30850: [Object725] @Directive14(argument51 : "stringValue31075") @Directive41 + field30851: [[Object725]] @Directive14(argument51 : "stringValue31076") @Directive41 + field30852: Object6441 @Directive14(argument51 : "stringValue31077") @Directive41 + field30853: [Object474]! @Directive14(argument51 : "stringValue31078") @Directive41 + field30854: [Object724] @Directive14(argument51 : "stringValue31079") @Directive41 + field30855: [Interface51] @Directive14(argument51 : "stringValue31080") @Directive41 + field30856: [Interface51] @Directive14(argument51 : "stringValue31081") @Directive41 + field30857: [Interface51] @Directive14(argument51 : "stringValue31082") @Directive41 + field30858: [Interface51] @Directive14(argument51 : "stringValue31083") @Directive41 + field30859: [[Object725]] @Directive14(argument51 : "stringValue31084") @Directive41 + field8314(argument1654: String, argument1655: [String!] = [], argument1656: Boolean = false): [Object1532] @Directive14(argument51 : "stringValue31011") + field8329(argument1650: String): Object6441 @Directive14(argument51 : "stringValue31003") + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6441 implements Interface45 @Directive22(argument62 : "stringValue31004") @Directive31 @Directive44(argument97 : ["stringValue31005", "stringValue31006"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field30787: Interface3 + field30788: Enum1643 +} + +type Object6442 implements Interface51 @Directive22(argument62 : "stringValue31056") @Directive31 @Directive44(argument97 : ["stringValue31057", "stringValue31058"]) { + field4117: Interface3 + field4118: Object1 + field4119: String! +} + +type Object6443 @Directive22(argument62 : "stringValue31085") @Directive26(argument67 : "stringValue31091", argument68 : "stringValue31092", argument71 : "stringValue31089", argument72 : "stringValue31090") @Directive31 @Directive44(argument97 : ["stringValue31086", "stringValue31087", "stringValue31088"]) { + field30861: [Object6444] @Directive14(argument51 : "stringValue31093") +} + +type Object6444 @Directive22(argument62 : "stringValue31094") @Directive31 @Directive44(argument97 : ["stringValue31095", "stringValue31096"]) { + field30862: Object6445 + field30867: String + field30868: String + field30869: String +} + +type Object6445 @Directive22(argument62 : "stringValue31097") @Directive31 @Directive44(argument97 : ["stringValue31098", "stringValue31099"]) { + field30863: String + field30864: String + field30865: String + field30866: String +} + +type Object6446 @Directive22(argument62 : "stringValue31100") @Directive26(argument67 : "stringValue31106", argument68 : "stringValue31107", argument71 : "stringValue31104", argument72 : "stringValue31105") @Directive31 @Directive44(argument97 : ["stringValue31101", "stringValue31102", "stringValue31103"]) { + field30871: Object474 @Directive14(argument51 : "stringValue31108") + field30872: Object600 @Directive14(argument51 : "stringValue31109") +} + +type Object6447 implements Interface159 @Directive22(argument62 : "stringValue31113") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31114", "stringValue31115"]) { + field17369: Object6448 @Directive18 +} + +type Object6448 implements Interface46 @Directive22(argument62 : "stringValue31116") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31117", "stringValue31118"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6449 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6449 implements Interface45 @Directive22(argument62 : "stringValue31119") @Directive31 @Directive44(argument97 : ["stringValue31120", "stringValue31121"]) { + field17385: [Object2944] + field17393: [Interface3!] + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object645 @Directive22(argument62 : "stringValue3318") @Directive31 @Directive44(argument97 : ["stringValue3319", "stringValue3320"]) { + field3614: String + field3615: [Object646!] +} + +type Object6450 @Directive22(argument62 : "stringValue31128") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31129", "stringValue31130", "stringValue31131"]) { + field30875: Object6451 @Directive18 +} + +type Object6451 implements Interface36 @Directive22(argument62 : "stringValue31133") @Directive26(argument67 : "stringValue31135", argument68 : "stringValue31136", argument69 : "stringValue31137", argument70 : "stringValue31138", argument71 : "stringValue31134") @Directive30(argument79 : "stringValue31132") @Directive44(argument97 : ["stringValue31139", "stringValue31140"]) @Directive45(argument98 : ["stringValue31141", "stringValue31142"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field30876: [Object6452] @Directive30(argument80 : true) @Directive41 +} + +type Object6452 @Directive22(argument62 : "stringValue31143") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31144", "stringValue31145"]) { + field30877: Int + field30878: Int + field30879: [Object6453] +} + +type Object6453 @Directive22(argument62 : "stringValue31146") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31147", "stringValue31148"]) { + field30880: Scalar3 + field30881: [Object6454] +} + +type Object6454 @Directive22(argument62 : "stringValue31149") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31150", "stringValue31151"]) { + field30882: String + field30883: String + field30884: String +} + +type Object6455 @Directive22(argument62 : "stringValue31155") @Directive31 @Directive44(argument97 : ["stringValue31152", "stringValue31153", "stringValue31154"]) @Directive45(argument98 : ["stringValue31156"]) { + field30886: Object6456 @Directive14(argument51 : "stringValue31157") + field30888: Object6456 @Directive14(argument51 : "stringValue31161") + field30889: Int @Directive14(argument51 : "stringValue31162") + field30890: Int @Directive14(argument51 : "stringValue31163") + field30891: Object6137 @deprecated +} + +type Object6456 @Directive22(argument62 : "stringValue31160") @Directive31 @Directive44(argument97 : ["stringValue31158", "stringValue31159"]) { + field30887: Boolean +} + +type Object6457 @Directive2 @Directive22(argument62 : "stringValue31164") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31165", "stringValue31166", "stringValue31167"]) { + field30893(argument1666: Scalar2, argument1667: Int, argument1668: Int, argument1669: Int, argument1670: Scalar2): Object6458 +} + +type Object6458 implements Interface92 @Directive22(argument62 : "stringValue31168") @Directive44(argument97 : ["stringValue31176", "stringValue31177"]) @Directive8(argument19 : "stringValue31174", argument20 : "stringValue31175", argument21 : "stringValue31170", argument23 : "stringValue31172", argument24 : "stringValue31169", argument25 : "stringValue31171", argument27 : "stringValue31173") { + field8384: Object753! + field8385: [Object6459] +} + +type Object6459 implements Interface93 @Directive22(argument62 : "stringValue31178") @Directive44(argument97 : ["stringValue31179", "stringValue31180"]) { + field8386: String! + field8999: Object6460 +} + +type Object646 @Directive22(argument62 : "stringValue3321") @Directive31 @Directive44(argument97 : ["stringValue3322", "stringValue3323"]) { + field3616: String + field3617: String + field3618: String + field3619: String + field3620: Boolean +} + +type Object6460 @Directive22(argument62 : "stringValue31181") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue31182", "stringValue31183"]) { + field30894: Int @Directive30(argument80 : true) @Directive41 + field30895: Int @Directive30(argument80 : true) @Directive41 + field30896: [Object6461] @Directive30(argument80 : true) @Directive41 + field30904: Scalar2 @Directive30(argument80 : true) @Directive40 + field30905: [Object6462] @Directive30(argument80 : true) @Directive40 + field30915: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6461 @Directive22(argument62 : "stringValue31184") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue31185", "stringValue31186"]) { + field30897: Scalar3 @Directive30(argument80 : true) @Directive41 + field30898: Boolean @Directive30(argument80 : true) @Directive41 + field30899: Int @Directive30(argument80 : true) @Directive41 + field30900: Int @Directive30(argument80 : true) @Directive41 + field30901: Boolean @Directive30(argument80 : true) @Directive41 + field30902: Boolean @Directive30(argument80 : true) @Directive41 + field30903: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object6462 @Directive22(argument62 : "stringValue31187") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue31188", "stringValue31189"]) { + field30906: Object6463 @Directive30(argument80 : true) @Directive41 + field30913: Scalar3 @Directive30(argument80 : true) @Directive41 + field30914: Scalar3 @Directive30(argument80 : true) @Directive41 +} + +type Object6463 @Directive22(argument62 : "stringValue31190") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue31191", "stringValue31192"]) { + field30907: Boolean @Directive30(argument80 : true) @Directive41 + field30908: Boolean @Directive30(argument80 : true) @Directive41 + field30909: Int @Directive30(argument80 : true) @Directive41 + field30910: Int @Directive30(argument80 : true) @Directive41 + field30911: Int @Directive30(argument80 : true) @Directive41 + field30912: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6464 @Directive2 @Directive22(argument62 : "stringValue31193") @Directive31 @Directive44(argument97 : ["stringValue31194", "stringValue31195"]) { + field30917(argument1671: InputObject1409): Object4283 @Directive49(argument102 : "stringValue31196") +} + +type Object6465 @Directive2 @Directive22(argument62 : "stringValue31200") @Directive31 @Directive44(argument97 : ["stringValue31201", "stringValue31202"]) { + field30919(argument1672: ID! @Directive25(argument65 : "stringValue31204")): Object6466 @Directive49(argument102 : "stringValue31203") +} + +type Object6466 @Directive22(argument62 : "stringValue31205") @Directive29(argument78 : "stringValue31208") @Directive31 @Directive44(argument97 : ["stringValue31206", "stringValue31207"]) { + field30920: Object6467 + field30932: Object6470 + field30943: [Object6473] + field30951: Object6474 + field30971: Object6477 +} + +type Object6467 @Directive22(argument62 : "stringValue31209") @Directive31 @Directive44(argument97 : ["stringValue31210", "stringValue31211"]) { + field30921: Object6468 + field30931: Object6468 +} + +type Object6468 @Directive22(argument62 : "stringValue31212") @Directive31 @Directive44(argument97 : ["stringValue31213", "stringValue31214"]) { + field30922: Enum1645 + field30923: Object1837 + field30924: String + field30925: Enum1646 + field30926: Object6469 +} + +type Object6469 @Directive22(argument62 : "stringValue31221") @Directive31 @Directive44(argument97 : ["stringValue31222", "stringValue31223"]) { + field30927: String + field30928: String + field30929: String + field30930: String +} + +type Object647 @Directive20(argument58 : "stringValue3325", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3324") @Directive31 @Directive44(argument97 : ["stringValue3326", "stringValue3327"]) { + field3621: Boolean +} + +type Object6470 @Directive22(argument62 : "stringValue31224") @Directive31 @Directive44(argument97 : ["stringValue31225", "stringValue31226"]) { + field30933: Object1837 + field30934: Object1837 + field30935: Object6471 +} + +type Object6471 @Directive22(argument62 : "stringValue31227") @Directive31 @Directive44(argument97 : ["stringValue31228", "stringValue31229"]) { + field30936: Object6472 @deprecated + field30940: Object6472 @deprecated + field30941: Object6472 + field30942: Object6472 +} + +type Object6472 @Directive22(argument62 : "stringValue31230") @Directive31 @Directive44(argument97 : ["stringValue31231", "stringValue31232"]) { + field30937: String + field30938: String + field30939: String +} + +type Object6473 @Directive22(argument62 : "stringValue31233") @Directive31 @Directive44(argument97 : ["stringValue31234", "stringValue31235"]) { + field30944: Object1837 + field30945: Object1837 + field30946: Object1837 + field30947: Enum1646 + field30948: Object6468 + field30949: Object6471 + field30950: Object6469 +} + +type Object6474 @Directive22(argument62 : "stringValue31236") @Directive31 @Directive44(argument97 : ["stringValue31237", "stringValue31238"]) { + field30952: Object1837 + field30953: Object1837 + field30954: Object6468 + field30955: Object6471 + field30956: Object6475 + field30970: Object6469 +} + +type Object6475 @Directive22(argument62 : "stringValue31239") @Directive31 @Directive44(argument97 : ["stringValue31240", "stringValue31241"]) { + field30957: [Object6476] + field30968: Object1837 @deprecated + field30969: Object6468 +} + +type Object6476 @Directive22(argument62 : "stringValue31242") @Directive31 @Directive44(argument97 : ["stringValue31243", "stringValue31244"]) { + field30958: String + field30959: Float + field30960: Int + field30961: Object1837 + field30962: Object1837 + field30963: String + field30964: String + field30965: Enum1647 + field30966: Object6469 + field30967: String +} + +type Object6477 @Directive22(argument62 : "stringValue31248") @Directive31 @Directive44(argument97 : ["stringValue31249", "stringValue31250"]) { + field30972: Object1837 + field30973: Object1837 + field30974: Object1837 + field30975: Object1837 + field30976: Object1837 +} + +type Object6478 implements Interface159 @Directive22(argument62 : "stringValue31251") @Directive31 @Directive44(argument97 : ["stringValue31252", "stringValue31253"]) { + field17369(argument1539: InputObject1386, argument1556: ID @Directive25(argument65 : "stringValue30188")): Object3991 @Directive49(argument102 : "stringValue31254") +} + +type Object6479 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31257") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31255", "stringValue31256"]) { + field17369(argument1539: InputObject1386): Object3997 @Directive49(argument102 : "stringValue31258") +} + +type Object648 @Directive20(argument58 : "stringValue3329", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3328") @Directive31 @Directive44(argument97 : ["stringValue3330", "stringValue3331"]) { + field3622: String + field3623: String + field3624: String + field3625: String +} + +type Object6480 @Directive2 @Directive22(argument62 : "stringValue31259") @Directive31 @Directive44(argument97 : ["stringValue31260", "stringValue31261"]) { + field30980(argument1673: ID! @Directive25(argument65 : "stringValue31263"), argument1674: [InputObject72], argument1675: Boolean, argument1676: Enum913): Object6481 @Directive49(argument102 : "stringValue31262") +} + +type Object6481 @Directive22(argument62 : "stringValue31264") @Directive31 @Directive44(argument97 : ["stringValue31265", "stringValue31266"]) { + field30981: ID + field30982: ID + field30983: String + field30984: String + field30985: String + field30986: String + field30987: String + field30988: [Object4141] + field30989: Object4142 + field30990: Object4142 + field30991: [Union187] + field30992: Enum916 +} + +type Object6482 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31267") @Directive31 @Directive44(argument97 : ["stringValue31268", "stringValue31269"]) { + field17369(argument1539: InputObject1386): Object6483 @Directive49(argument102 : "stringValue31270") +} + +type Object6483 implements Interface46 @Directive22(argument62 : "stringValue31271") @Directive31 @Directive44(argument97 : ["stringValue31272", "stringValue31273"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6484 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6484 implements Interface45 @Directive22(argument62 : "stringValue31274") @Directive31 @Directive44(argument97 : ["stringValue31275", "stringValue31276"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6485 @Directive2 @Directive22(argument62 : "stringValue31277") @Directive31 @Directive44(argument97 : ["stringValue31278", "stringValue31279", "stringValue31280"]) { + field30995(argument1677: InputObject1413): Object6486 @Directive49(argument102 : "stringValue31281") +} + +type Object6486 @Directive22(argument62 : "stringValue31291") @Directive31 @Directive44(argument97 : ["stringValue31292", "stringValue31293"]) { + field30996: Object6487 + field30998: Object6488 + field31002: Object6490 + field31007: Object6492 + field31014: Object6494 +} + +type Object6487 @Directive22(argument62 : "stringValue31294") @Directive31 @Directive44(argument97 : ["stringValue31295", "stringValue31296"]) { + field30997: String +} + +type Object6488 @Directive22(argument62 : "stringValue31297") @Directive31 @Directive44(argument97 : ["stringValue31298", "stringValue31299"]) { + field30999: [Object6489] +} + +type Object6489 @Directive22(argument62 : "stringValue31300") @Directive31 @Directive44(argument97 : ["stringValue31301", "stringValue31302"]) { + field31000: Enum1650 + field31001: String +} + +type Object649 @Directive20(argument58 : "stringValue3333", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3332") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3334", "stringValue3335"]) { + field3626: String + field3627: [Object478!] + field3628: String + field3629: Object650 + field3664: [Object654] + field3669: Object655! + field3672: [Object656] + field3682: Object624 + field3683: Object624 + field3684: Object624 + field3685: Object624 + field3686: [Object480!] + field3687: Object657 + field3695: Object480 + field3696: Object480 + field3697: Object480 + field3698: [Object658] + field3703: Object624 + field3704: Object626 + field3705: Object480 + field3706: Object496 + field3707: Object521 + field3708: [Object659] + field3712: Object1 + field3713: Object1 + field3714: Object660 + field3720: Object628 + field3721: Object1 + field3722: Object661 +} + +type Object6490 @Directive22(argument62 : "stringValue31306") @Directive31 @Directive44(argument97 : ["stringValue31307", "stringValue31308"]) { + field31003: String + field31004: [Object6491] +} + +type Object6491 @Directive22(argument62 : "stringValue31309") @Directive31 @Directive44(argument97 : ["stringValue31310", "stringValue31311"]) { + field31005: Enum1648 + field31006: String +} + +type Object6492 @Directive22(argument62 : "stringValue31312") @Directive31 @Directive44(argument97 : ["stringValue31313", "stringValue31314"]) { + field31008: [Object6493] + field31012: String + field31013: String +} + +type Object6493 @Directive22(argument62 : "stringValue31315") @Directive31 @Directive44(argument97 : ["stringValue31316", "stringValue31317"]) { + field31009: Enum1649 + field31010: String + field31011: String +} + +type Object6494 @Directive22(argument62 : "stringValue31318") @Directive31 @Directive44(argument97 : ["stringValue31319", "stringValue31320"]) { + field31015: [Object6495] +} + +type Object6495 @Directive22(argument62 : "stringValue31321") @Directive31 @Directive44(argument97 : ["stringValue31322", "stringValue31323"]) { + field31016: Scalar3 + field31017: String + field31018: [Object6496] + field31022: [Object6496] +} + +type Object6496 @Directive22(argument62 : "stringValue31324") @Directive31 @Directive44(argument97 : ["stringValue31325", "stringValue31326"]) { + field31019: Object585 + field31020: String + field31021: String +} + +type Object6497 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31327") @Directive31 @Directive44(argument97 : ["stringValue31328", "stringValue31329"]) { + field17369(argument1539: InputObject1386): Object6498 + field31024(argument1678: InputObject1414): Object4333 @Directive49(argument102 : "stringValue31336") + field31025(argument1679: ID, argument1680: Enum544!): Object4347 @Directive49(argument102 : "stringValue31343") + field31026(argument1681: ID!, argument1682: [String]!): Object6500 @Directive49(argument102 : "stringValue31344") + field31028(argument1683: ID!, argument1684: String!): Object6501 @Directive49(argument102 : "stringValue31348") + field31032: Object6503 + field31037(argument1688: Enum1652, argument1689: String): Object6505 @Directive49(argument102 : "stringValue31363") +} + +type Object6498 implements Interface46 @Directive22(argument62 : "stringValue31330") @Directive31 @Directive44(argument97 : ["stringValue31331", "stringValue31332"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object4338 + field8330: Object6499 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6499 implements Interface91 @Directive22(argument62 : "stringValue31333") @Directive31 @Directive44(argument97 : ["stringValue31334", "stringValue31335"]) { + field8331: [String] +} + +type Object65 @Directive21(argument61 : "stringValue285") @Directive44(argument97 : ["stringValue284"]) { + field424: [Object66] + field447: String +} + +type Object650 @Directive20(argument58 : "stringValue3337", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3336") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3338", "stringValue3339"]) { + field3630: String + field3631: [Object651] + field3640: String + field3641: Int + field3642: Boolean + field3643: String + field3644: String + field3645: String + field3646: String + field3647: String + field3648: String + field3649: [String] + field3650: Object652 + field3657: Object621 + field3658: String + field3659: Boolean + field3660: String + field3661: Object1 + field3662: Object1 + field3663: Object1 +} + +type Object6500 @Directive22(argument62 : "stringValue31345") @Directive31 @Directive44(argument97 : ["stringValue31346", "stringValue31347"]) { + field31027: String +} + +type Object6501 @Directive22(argument62 : "stringValue31349") @Directive31 @Directive44(argument97 : ["stringValue31350", "stringValue31351"]) { + field31029: [Object6502] + field31031: Object2725 +} + +type Object6502 implements Interface85 @Directive22(argument62 : "stringValue31352") @Directive31 @Directive44(argument97 : ["stringValue31353", "stringValue31354"]) { + field31030: [String] + field7155: [Interface23] + field7156: [Enum319!] + field7157: [Enum319!] +} + +type Object6503 @Directive2 @Directive22(argument62 : "stringValue31355") @Directive31 @Directive44(argument97 : ["stringValue31356", "stringValue31357"]) { + field31033(argument1685: String): Boolean! @Directive14(argument51 : "stringValue31358") + field31034(argument1686: ID!, argument1687: String): Object6504 @Directive14(argument51 : "stringValue31359") +} + +type Object6504 @Directive22(argument62 : "stringValue31360") @Directive31 @Directive44(argument97 : ["stringValue31361", "stringValue31362"]) { + field31035: Boolean + field31036: String +} + +type Object6505 @Directive22(argument62 : "stringValue31367") @Directive31 @Directive44(argument97 : ["stringValue31368", "stringValue31369"]) { + field31038: Object753 + field31039: [Object2687] +} + +type Object6506 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31370") @Directive31 @Directive44(argument97 : ["stringValue31371", "stringValue31372"]) { + field17369(argument1539: InputObject1386, argument1541: Boolean): Object6507 @Directive49(argument102 : "stringValue31373") +} + +type Object6507 implements Interface46 @Directive22(argument62 : "stringValue31374") @Directive31 @Directive44(argument97 : ["stringValue31375", "stringValue31376"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6508 + field8330: Object6510 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6508 implements Interface45 @Directive22(argument62 : "stringValue31377") @Directive31 @Directive44(argument97 : ["stringValue31378", "stringValue31379"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6509 +} + +type Object6509 @Directive22(argument62 : "stringValue31380") @Directive31 @Directive44(argument97 : ["stringValue31381", "stringValue31382"]) { + field31041: String! +} + +type Object651 @Directive20(argument58 : "stringValue3341", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3340") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3342", "stringValue3343"]) { + field3632: Int + field3633: String + field3634: String + field3635: String + field3636: String + field3637: String + field3638: String + field3639: String +} + +type Object6510 implements Interface91 @Directive22(argument62 : "stringValue31383") @Directive31 @Directive44(argument97 : ["stringValue31384", "stringValue31385"]) { + field8331: [String] +} + +type Object6511 implements Interface99 @Directive2 @Directive22(argument62 : "stringValue31386") @Directive31 @Directive44(argument97 : ["stringValue31387", "stringValue31388", "stringValue31389"]) @Directive45(argument98 : ["stringValue31390", "stringValue31391"]) { + field31043(argument1690: InputObject1416): Object6512 @Directive49(argument102 : "stringValue31392") + field8997: Interface36 @deprecated +} + +type Object6512 implements Interface46 @Directive22(argument62 : "stringValue31399") @Directive31 @Directive44(argument97 : ["stringValue31400", "stringValue31401", "stringValue31402"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6513 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @Directive1 @deprecated +} + +type Object6513 implements Interface45 @Directive22(argument62 : "stringValue31403") @Directive31 @Directive44(argument97 : ["stringValue31404", "stringValue31405"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6514 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31415") @Directive26(argument66 : 507, argument67 : "stringValue31408", argument68 : "stringValue31410", argument69 : "stringValue31412", argument70 : "stringValue31414", argument71 : "stringValue31406", argument72 : "stringValue31407", argument73 : "stringValue31409", argument74 : "stringValue31411", argument75 : "stringValue31413") @Directive31 @Directive44(argument97 : ["stringValue31416", "stringValue31417"]) { + field17369(argument1539: InputObject1386): Object4315 @Directive49(argument102 : "stringValue31418") +} + +type Object6515 implements Interface99 @Directive22(argument62 : "stringValue31424") @Directive31 @Directive44(argument97 : ["stringValue31425", "stringValue31426"]) @Directive45(argument98 : ["stringValue31427"]) { + field31046(argument1691: Int, argument1692: String, argument1693: Enum1653): Object6516 @Directive14(argument51 : "stringValue31428") + field31068(argument1696: Int, argument1697: String, argument1698: Enum1653): Object6521 @Directive14(argument51 : "stringValue31460") + field31069(argument1699: Int, argument1700: String, argument1701: Enum1653): Object6523 @Directive14(argument51 : "stringValue31467") + field31070: Object6525 @Directive14(argument51 : "stringValue31474") + field8997: Object6343 @Directive18 +} + +type Object6516 implements Interface92 @Directive22(argument62 : "stringValue31434") @Directive44(argument97 : ["stringValue31432", "stringValue31433"]) { + field8384: Object753! + field8385: [Object6517] +} + +type Object6517 implements Interface93 @Directive22(argument62 : "stringValue31437") @Directive44(argument97 : ["stringValue31435", "stringValue31436"]) { + field8386: String! + field8999: Object6518 +} + +type Object6518 @Directive22(argument62 : "stringValue31441") @Directive31 @Directive44(argument97 : ["stringValue31438", "stringValue31439", "stringValue31440"]) @Directive45(argument98 : ["stringValue31442"]) { + field31047: String! + field31048: [Object6519!]! + field31061: String + field31062: Float + field31063: Float + field31064: String + field31065: String + field31066: Object995 @Directive14(argument51 : "stringValue31458") + field31067(argument1695: String): Object995 @Directive14(argument51 : "stringValue31459") +} + +type Object6519 @Directive22(argument62 : "stringValue31445") @Directive31 @Directive44(argument97 : ["stringValue31443", "stringValue31444"]) @Directive45(argument98 : ["stringValue31446"]) { + field31049: [Object482] @Directive14(argument51 : "stringValue31447") + field31050: Object6520! + field31051: [Object482] + field31052: Scalar4 + field31053: String + field31054(argument1694: String): Boolean @Directive14(argument51 : "stringValue31451") + field31055: Boolean @Directive14(argument51 : "stringValue31452") + field31056: Object6143 @Directive14(argument51 : "stringValue31453") + field31057: Object4016 @Directive14(argument51 : "stringValue31454") + field31058: Object2258 @Directive14(argument51 : "stringValue31455") + field31059: Object1801 @Directive14(argument51 : "stringValue31456") + field31060: Boolean @Directive14(argument51 : "stringValue31457") +} + +type Object652 @Directive20(argument58 : "stringValue3345", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3344") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3346", "stringValue3347"]) { + field3651: String + field3652: String + field3653: [Object653] +} + +type Object6520 implements Interface80 @Directive22(argument62 : "stringValue31448") @Directive31 @Directive44(argument97 : ["stringValue31449", "stringValue31450"]) { + field16921: String + field16922: Object450 + field4776: Interface3 + field6628: String @Directive1 @deprecated + field7454: Object450 + field7455: Object450 + field7515: Interface6 + field76: String + field77: String + field78: String +} + +type Object6521 implements Interface92 @Directive22(argument62 : "stringValue31463") @Directive44(argument97 : ["stringValue31461", "stringValue31462"]) { + field8384: Object753! + field8385: [Object6522] +} + +type Object6522 implements Interface93 @Directive22(argument62 : "stringValue31466") @Directive44(argument97 : ["stringValue31464", "stringValue31465"]) { + field8386: String! + field8999: Object6520 +} + +type Object6523 implements Interface92 @Directive22(argument62 : "stringValue31470") @Directive44(argument97 : ["stringValue31468", "stringValue31469"]) { + field8384: Object753! + field8385: [Object6524] +} + +type Object6524 implements Interface93 @Directive22(argument62 : "stringValue31473") @Directive44(argument97 : ["stringValue31471", "stringValue31472"]) { + field8386: String! + field8999: Object6520 +} + +type Object6525 @Directive22(argument62 : "stringValue31477") @Directive31 @Directive44(argument97 : ["stringValue31475", "stringValue31476"]) { + field31071: String + field31072: Scalar2 +} + +type Object6526 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31478") @Directive31 @Directive44(argument97 : ["stringValue31479", "stringValue31480"]) { + field17369(argument1554: InputObject1388): Object4279 @Directive49(argument102 : "stringValue31481") +} + +type Object6527 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31482") @Directive31 @Directive44(argument97 : ["stringValue31483", "stringValue31484"]) { + field17369(argument1539: InputObject1386): Object6528 @Directive49(argument102 : "stringValue31485") +} + +type Object6528 implements Interface46 @Directive22(argument62 : "stringValue31486") @Directive31 @Directive44(argument97 : ["stringValue31487", "stringValue31488"]) { + field17373: Enum871 + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6529 + field8330: Object6531 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6529 implements Interface45 @Directive22(argument62 : "stringValue31489") @Directive31 @Directive44(argument97 : ["stringValue31490", "stringValue31491"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6530 +} + +type Object653 @Directive20(argument58 : "stringValue3349", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3348") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3350", "stringValue3351"]) { + field3654: String + field3655: String + field3656: String +} + +type Object6530 @Directive22(argument62 : "stringValue31492") @Directive31 @Directive44(argument97 : ["stringValue31493", "stringValue31494"]) { + field31075: String +} + +type Object6531 implements Interface91 @Directive22(argument62 : "stringValue31495") @Directive31 @Directive44(argument97 : ["stringValue31496", "stringValue31497"]) { + field8331: [String] +} + +type Object6532 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31498") @Directive31 @Directive44(argument97 : ["stringValue31499", "stringValue31500"]) { + field17369(argument1539: InputObject1386): Object6533 +} + +type Object6533 implements Interface46 @Directive22(argument62 : "stringValue31501") @Directive31 @Directive44(argument97 : ["stringValue31502", "stringValue31503"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6534 + field8330: Object6536 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6534 implements Interface45 @Directive22(argument62 : "stringValue31504") @Directive31 @Directive44(argument97 : ["stringValue31505", "stringValue31506"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6535 +} + +type Object6535 @Directive22(argument62 : "stringValue31507") @Directive31 @Directive44(argument97 : ["stringValue31508", "stringValue31509"]) { + field31077: ID! +} + +type Object6536 implements Interface91 @Directive22(argument62 : "stringValue31510") @Directive31 @Directive44(argument97 : ["stringValue31511", "stringValue31512"]) { + field8331: [String] +} + +type Object6537 @Directive2 @Directive22(argument62 : "stringValue31513") @Directive31 @Directive44(argument97 : ["stringValue31514", "stringValue31515", "stringValue31516"]) { + field31079: Object6538 @deprecated + field31144(argument1721: InputObject1422): Object6540 @Directive49(argument102 : "stringValue31633") + field31145(argument1722: InputObject1423!): Object6547 @deprecated + field31146(argument1723: InputObject1423!): Object6556 @Directive49(argument102 : "stringValue31634") + field31150(argument1724: String!): Object6557 @Directive49(argument102 : "stringValue31639") + field31157(argument1725: InputObject1427!): Object6553 @Directive49(argument102 : "stringValue31648") + field31158(argument1726: InputObject1428!): Object6559 @Directive49(argument102 : "stringValue31649") +} + +type Object6538 @Directive22(argument62 : "stringValue31517") @Directive31 @Directive44(argument97 : ["stringValue31518", "stringValue31519", "stringValue31520"]) { + field31080: Object6539 + field31095: Object6546 + field31115: Object6552 +} + +type Object6539 @Directive22(argument62 : "stringValue31521") @Directive31 @Directive44(argument97 : ["stringValue31522", "stringValue31523", "stringValue31524"]) { + field31081(argument1702: InputObject1422): Object6540 +} + +type Object654 @Directive20(argument58 : "stringValue3353", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3352") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3354", "stringValue3355"]) { + field3665: String + field3666: String + field3667: String + field3668: String +} + +type Object6540 @Directive22(argument62 : "stringValue31529") @Directive31 @Directive44(argument97 : ["stringValue31530", "stringValue31531", "stringValue31532"]) { + field31082: String + field31083: Object1182 + field31084(argument1703: Int, argument1704: Int, argument1705: String, argument1706: String): Object6541 @deprecated +} + +type Object6541 implements Interface92 @Directive22(argument62 : "stringValue31536") @Directive44(argument97 : ["stringValue31533", "stringValue31534", "stringValue31535"]) { + field8384: Object753! + field8385: [Object6542] +} + +type Object6542 implements Interface93 @Directive22(argument62 : "stringValue31540") @Directive44(argument97 : ["stringValue31537", "stringValue31538", "stringValue31539"]) { + field8386: String + field8999: Object6543 +} + +type Object6543 implements Interface80 @Directive22(argument62 : "stringValue31541") @Directive31 @Directive44(argument97 : ["stringValue31542", "stringValue31543", "stringValue31544"]) { + field31085: String + field31086: Object6544 + field31091: [Object6545] + field6628: String @Directive1 @deprecated +} + +type Object6544 @Directive22(argument62 : "stringValue31545") @Directive31 @Directive44(argument97 : ["stringValue31546", "stringValue31547", "stringValue31548"]) { + field31087: Int + field31088: Int + field31089: String + field31090: Enum1654 +} + +type Object6545 @Directive22(argument62 : "stringValue31553") @Directive31 @Directive44(argument97 : ["stringValue31554", "stringValue31555", "stringValue31556"]) { + field31092: String! + field31093: String! + field31094: String +} + +type Object6546 @Directive22(argument62 : "stringValue31557") @Directive31 @Directive44(argument97 : ["stringValue31558", "stringValue31559", "stringValue31560"]) { + field31096(argument1707: InputObject1423): Object6547 +} + +type Object6547 @Directive22(argument62 : "stringValue31593") @Directive31 @Directive44(argument97 : ["stringValue31594", "stringValue31595", "stringValue31596"]) { + field31097: String + field31098: String + field31099: Object1182 + field31100: Scalar2 @deprecated + field31101: Scalar2 @deprecated + field31102: Scalar2 @deprecated + field31103(argument1708: Int, argument1709: Int, argument1710: String, argument1711: String): Object6548 @deprecated + field31113(argument1712: Int, argument1713: Int, argument1714: String, argument1715: String): Object6548 @deprecated + field31114(argument1716: Int, argument1717: Int, argument1718: String, argument1719: String): Object6548 @deprecated +} + +type Object6548 implements Interface92 @Directive22(argument62 : "stringValue31600") @Directive44(argument97 : ["stringValue31597", "stringValue31598", "stringValue31599"]) { + field8384: Object753! + field8385: [Object6549] +} + +type Object6549 implements Interface93 @Directive22(argument62 : "stringValue31604") @Directive44(argument97 : ["stringValue31601", "stringValue31602", "stringValue31603"]) { + field8386: String + field8999: Object6550 +} + +type Object655 @Directive20(argument58 : "stringValue3357", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3356") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3358", "stringValue3359"]) { + field3670: String + field3671: String +} + +type Object6550 implements Interface80 @Directive22(argument62 : "stringValue31605") @Directive31 @Directive44(argument97 : ["stringValue31606", "stringValue31607", "stringValue31608"]) { + field31091: [Object6545] + field31104: String + field31105: [Scalar2!] + field31106: Enum1655 + field31107: [Object6551] + field31110: Boolean + field31111: Int + field31112: [Enum1655] @deprecated + field6628: String @Directive1 @deprecated +} + +type Object6551 @Directive22(argument62 : "stringValue31609") @Directive31 @Directive44(argument97 : ["stringValue31610", "stringValue31611", "stringValue31612"]) { + field31108: Enum1654 + field31109: Boolean +} + +type Object6552 @Directive1 @Directive22(argument62 : "stringValue31613") @Directive31 @Directive44(argument97 : ["stringValue31614", "stringValue31615", "stringValue31616"]) { + field31116(argument1720: InputObject1427): Object6553 +} + +type Object6553 @Directive22(argument62 : "stringValue31621") @Directive31 @Directive44(argument97 : ["stringValue31622", "stringValue31623", "stringValue31624"]) { + field31117: String! + field31118: String! + field31119: String + field31120: String + field31121: String + field31122: String + field31123: String + field31124: String + field31125: String + field31126: [Object6554] + field31137: [Object6554] + field31138: [Object6555] + field31141: Enum1655 + field31142: String + field31143: [Enum1654] +} + +type Object6554 @Directive22(argument62 : "stringValue31625") @Directive31 @Directive44(argument97 : ["stringValue31626", "stringValue31627", "stringValue31628"]) { + field31127: String + field31128: String + field31129: Scalar4 + field31130: Scalar4 + field31131: String + field31132: [String] + field31133: String + field31134: String + field31135: Scalar2 + field31136: Scalar2 +} + +type Object6555 @Directive22(argument62 : "stringValue31629") @Directive31 @Directive44(argument97 : ["stringValue31630", "stringValue31631", "stringValue31632"]) { + field31139: String + field31140: String +} + +type Object6556 @Directive22(argument62 : "stringValue31635") @Directive31 @Directive44(argument97 : ["stringValue31636", "stringValue31637", "stringValue31638"]) { + field31147: String + field31148: Object1182 + field31149: Int +} + +type Object6557 @Directive22(argument62 : "stringValue31640") @Directive31 @Directive44(argument97 : ["stringValue31641", "stringValue31642", "stringValue31643"]) { + field31151: [Object6544] + field31152: [Object6558] +} + +type Object6558 @Directive22(argument62 : "stringValue31644") @Directive31 @Directive44(argument97 : ["stringValue31645", "stringValue31646", "stringValue31647"]) { + field31153: Int + field31154: Int + field31155: String + field31156: Enum1654 +} + +type Object6559 @Directive22(argument62 : "stringValue31654") @Directive31 @Directive44(argument97 : ["stringValue31655", "stringValue31656", "stringValue31657"]) { + field31159: Object1182 + field31160: Object1182 +} + +type Object656 @Directive20(argument58 : "stringValue3361", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3360") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3362", "stringValue3363"]) { + field3673: String + field3674: Enum201 + field3675: String + field3676: String + field3677: String + field3678: String + field3679: String + field3680: String + field3681: String +} + +type Object6560 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31658") @Directive31 @Directive44(argument97 : ["stringValue31659", "stringValue31660"]) { + field17369(argument1539: InputObject1386): Object6561 @Directive49(argument102 : "stringValue31661") + field31164(argument1727: InputObject1430): Object6561 @Directive49(argument102 : "stringValue31674") + field31165(argument1728: InputObject1429): Object6561 @Directive49(argument102 : "stringValue31678") + field31166(argument1729: InputObject1431): Object6561 @Directive49(argument102 : "stringValue31682") +} + +type Object6561 implements Interface46 @Directive22(argument62 : "stringValue31662") @Directive31 @Directive44(argument97 : ["stringValue31663", "stringValue31664"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6562 + field8330: Object6564 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6562 implements Interface45 @Directive22(argument62 : "stringValue31665") @Directive31 @Directive44(argument97 : ["stringValue31666", "stringValue31667"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6563 +} + +type Object6563 @Directive22(argument62 : "stringValue31668") @Directive31 @Directive44(argument97 : ["stringValue31669", "stringValue31670"]) { + field31162: Scalar2 + field31163: Scalar2 +} + +type Object6564 implements Interface91 @Directive22(argument62 : "stringValue31671") @Directive31 @Directive44(argument97 : ["stringValue31672", "stringValue31673"]) { + field8331: [String] +} + +type Object6565 @Directive2 @Directive22(argument62 : "stringValue31692") @Directive31 @Directive44(argument97 : ["stringValue31693", "stringValue31694"]) { + field31168(argument1730: InputObject1434): Object6566 @Directive49(argument102 : "stringValue31695") +} + +type Object6566 @Directive22(argument62 : "stringValue31699") @Directive31 @Directive44(argument97 : ["stringValue31700", "stringValue31701"]) { + field31169: [Union224] +} + +type Object6567 @Directive22(argument62 : "stringValue31705") @Directive31 @Directive44(argument97 : ["stringValue31706", "stringValue31707"]) { + field31170: String + field31171: String + field31172: Object452 + field31173: String + field31174: [Union225] + field31201: Object452 + field31202: [Interface137] + field31203: Object1 +} + +type Object6568 implements Interface58 & Interface59 & Interface60 @Directive22(argument62 : "stringValue31711") @Directive31 @Directive44(argument97 : ["stringValue31712", "stringValue31713"]) { + field31175: Enum667 + field4783: String + field4784: String + field4785: String + field4786: Boolean + field4787: Enum231 + field4791: Interface3 +} + +type Object6569 implements Interface164 & Interface165 & Interface166 @Directive22(argument62 : "stringValue31726") @Directive31 @Directive44(argument97 : ["stringValue31727", "stringValue31728"]) { + field31176: String + field31177: String + field31178: Boolean + field31179: Enum1659 + field31180: String + field31181: Boolean + field31182: Object571 + field31183: Union226 + field31200: Boolean +} + +type Object657 @Directive20(argument58 : "stringValue3369", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3368") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3370", "stringValue3371"]) { + field3688: String + field3689: String + field3690: String + field3691: String + field3692: Object1 + field3693: String + field3694: String +} + +type Object6570 implements Interface3 @Directive22(argument62 : "stringValue31732") @Directive31 @Directive44(argument97 : ["stringValue31733", "stringValue31734"]) { + field31184: Object6571 + field4: Object1 + field74: String + field75: Scalar1 +} + +type Object6571 @Directive12 @Directive42(argument96 : ["stringValue31735", "stringValue31736", "stringValue31737"]) @Directive44(argument97 : ["stringValue31738", "stringValue31739", "stringValue31740"]) { + field31185: String @Directive3(argument3 : "stringValue31741") + field31186: Scalar2 @Directive3(argument3 : "stringValue31742") + field31187: Enum932 @Directive3(argument3 : "stringValue31743") + field31188: String @Directive3(argument3 : "stringValue31744") + field31189: String @Directive3(argument3 : "stringValue31745") + field31190: Boolean @Directive3(argument3 : "stringValue31746") + field31191: Float @Directive3(argument3 : "stringValue31747") + field31192: Scalar2 @Directive3(argument3 : "stringValue31748") + field31193: Scalar2 @Directive3(argument3 : "stringValue31749") + field31194: String @Directive3(argument3 : "stringValue31750") + field31195: String @Directive3(argument3 : "stringValue31751") + field31196: String @Directive3(argument3 : "stringValue31752") + field31197: Scalar2 @Directive3(argument3 : "stringValue31753") + field31198: String @Directive3(argument3 : "stringValue31754") + field31199: Enum936 @Directive3(argument3 : "stringValue31755") +} + +type Object6572 @Directive22(argument62 : "stringValue31756") @Directive31 @Directive44(argument97 : ["stringValue31757", "stringValue31758"]) { + field31204: String + field31205: String + field31206: String + field31207: Scalar2 + field31208: Object524 + field31209: Object6573 + field31216: Boolean + field31217: Object452 + field31218: Object1 +} + +type Object6573 @Directive22(argument62 : "stringValue31759") @Directive31 @Directive44(argument97 : ["stringValue31760", "stringValue31761"]) { + field31210: String + field31211: String + field31212: String + field31213: Boolean + field31214: Boolean + field31215: Object452 +} + +type Object6574 @Directive22(argument62 : "stringValue31762") @Directive31 @Directive44(argument97 : ["stringValue31763", "stringValue31764"]) { + field31219: String + field31220: String + field31221: String + field31222: [Union225] + field31223: [Interface137] + field31224: Object1 +} + +type Object6575 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31765") @Directive31 @Directive44(argument97 : ["stringValue31766", "stringValue31767"]) { + field17369: Object6576 @Directive49(argument102 : "stringValue31768") +} + +type Object6576 implements Interface46 @Directive22(argument62 : "stringValue31769") @Directive31 @Directive44(argument97 : ["stringValue31770", "stringValue31771"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6577 + field8330: Object6579 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6577 implements Interface45 @Directive22(argument62 : "stringValue31772") @Directive31 @Directive44(argument97 : ["stringValue31773", "stringValue31774"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6578 +} + +type Object6578 @Directive22(argument62 : "stringValue31775") @Directive31 @Directive44(argument97 : ["stringValue31776", "stringValue31777"]) { + field31226: ID +} + +type Object6579 implements Interface91 @Directive22(argument62 : "stringValue31778") @Directive31 @Directive44(argument97 : ["stringValue31779", "stringValue31780"]) { + field8331: [String] +} + +type Object658 @Directive20(argument58 : "stringValue3373", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3372") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3374", "stringValue3375"]) { + field3699: [String]! + field3700: Int! + field3701: String! + field3702: [Enum10]! +} + +type Object6580 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31781") @Directive26(argument66 : 508, argument67 : "stringValue31785", argument69 : "stringValue31787", argument70 : "stringValue31788", argument71 : "stringValue31784", argument72 : "stringValue31786", argument74 : "stringValue31789", argument75 : "stringValue31790") @Directive31 @Directive44(argument97 : ["stringValue31782", "stringValue31783"]) { + field17369(argument1539: InputObject1386): Object6581 @Directive41 @Directive49(argument102 : "stringValue31791") +} + +type Object6581 implements Interface46 @Directive22(argument62 : "stringValue31792") @Directive31 @Directive44(argument97 : ["stringValue31793", "stringValue31794"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6582 + field8330: Object6584 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6582 implements Interface45 @Directive22(argument62 : "stringValue31795") @Directive31 @Directive44(argument97 : ["stringValue31796", "stringValue31797"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6583 +} + +type Object6583 @Directive22(argument62 : "stringValue31798") @Directive31 @Directive44(argument97 : ["stringValue31799", "stringValue31800"]) { + field31228: String + field31229: String + field31230: String +} + +type Object6584 implements Interface91 @Directive22(argument62 : "stringValue31801") @Directive31 @Directive44(argument97 : ["stringValue31802", "stringValue31803"]) { + field8331: [String] +} + +type Object6585 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31804") @Directive31 @Directive44(argument97 : ["stringValue31805", "stringValue31806"]) { + field17369(argument1539: InputObject1386): Object6586 @Directive49(argument102 : "stringValue31807") +} + +type Object6586 implements Interface46 @Directive22(argument62 : "stringValue31808") @Directive31 @Directive44(argument97 : ["stringValue31809", "stringValue31810"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6587 + field8330: Interface91 + field8332: [Object1536] + field8337: [Object502] @Directive1 @deprecated +} + +type Object6587 implements Interface45 @Directive22(argument62 : "stringValue31811") @Directive31 @Directive44(argument97 : ["stringValue31812", "stringValue31813"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6588 implements Interface36 @Directive22(argument62 : "stringValue31814") @Directive30(argument86 : "stringValue31817") @Directive44(argument97 : ["stringValue31815", "stringValue31816"]) { + field2312: ID! @Directive30(argument80 : true) @Directive40 + field31233(argument1735: Int, argument1736: String, argument1737: String, argument1738: Int): Object6589 @Directive18 @Directive30(argument85 : "stringValue31819", argument86 : "stringValue31818") @Directive40 +} + +type Object6589 implements Interface92 @Directive22(argument62 : "stringValue31820") @Directive44(argument97 : ["stringValue31821", "stringValue31822"]) { + field8384: Object753! + field8385: [Object6590] +} + +type Object659 @Directive20(argument58 : "stringValue3377", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3376") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3378", "stringValue3379"]) { + field3709: String + field3710: [String!] + field3711: Enum202 +} + +type Object6590 implements Interface93 @Directive22(argument62 : "stringValue31823") @Directive44(argument97 : ["stringValue31824", "stringValue31825"]) { + field8386: String! + field8999: Object749 +} + +type Object6591 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31826") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31827", "stringValue31828"]) { + field17369(argument1539: InputObject1386): Object6592 @Directive18 +} + +type Object6592 implements Interface46 @Directive22(argument62 : "stringValue31829") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31830", "stringValue31831"]) { + field17374: Object3988 + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6593 + field8330: Object6595 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6593 implements Interface45 @Directive22(argument62 : "stringValue31832") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31833", "stringValue31834"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6594 +} + +type Object6594 @Directive22(argument62 : "stringValue31835") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue31836", "stringValue31837"]) { + field31235: String +} + +type Object6595 implements Interface91 @Directive22(argument62 : "stringValue31838") @Directive31 @Directive44(argument97 : ["stringValue31839", "stringValue31840"]) { + field8331: [String] +} + +type Object6596 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31841") @Directive31 @Directive44(argument97 : ["stringValue31842", "stringValue31843"]) { + field17369(argument1539: InputObject1386, argument1739: String): Object6597 +} + +type Object6597 implements Interface46 @Directive22(argument62 : "stringValue31844") @Directive31 @Directive44(argument97 : ["stringValue31845", "stringValue31846"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6598 + field8330: Object6599 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6598 implements Interface45 @Directive22(argument62 : "stringValue31847") @Directive31 @Directive44(argument97 : ["stringValue31848", "stringValue31849"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6599 implements Interface91 @Directive22(argument62 : "stringValue31850") @Directive31 @Directive44(argument97 : ["stringValue31851", "stringValue31852"]) { + field8331: [String] +} + +type Object66 @Directive21(argument61 : "stringValue287") @Directive44(argument97 : ["stringValue286"]) { + field425: String + field426: Float + field427: String + field428: Scalar2 + field429: [Object67] + field438: String + field439: Scalar2 + field440: [Object68] + field443: String + field444: Float + field445: Float + field446: String +} + +type Object660 @Directive20(argument58 : "stringValue3385", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3384") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3386", "stringValue3387"]) { + field3715: Float + field3716: Int + field3717: [String] + field3718: String + field3719: Int +} + +type Object6600 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31853") @Directive31 @Directive44(argument97 : ["stringValue31854", "stringValue31855"]) { + field17369(argument1540: InputObject1, argument1541: Boolean): Object6601 @Directive49(argument102 : "stringValue31856") +} + +type Object6601 implements Interface46 @Directive22(argument62 : "stringValue31857") @Directive31 @Directive44(argument97 : ["stringValue31858", "stringValue31859"]) { + field2616: [Object474]! @Directive41 + field8314: [Object1532] @Directive41 + field8329: Object6602 @Directive41 + field8330: Object6604 @Directive41 + field8332: [Object1536] @Directive41 + field8337: [Object502] @Directive37(argument95 : "stringValue31869") @deprecated +} + +type Object6602 implements Interface45 @Directive22(argument62 : "stringValue31860") @Directive31 @Directive44(argument97 : ["stringValue31861", "stringValue31862"]) { + field2515: String @Directive41 + field2516: Enum147 @Directive41 + field2517: Object459 @Directive41 + field2525: Object6603 @Directive41 +} + +type Object6603 @Directive22(argument62 : "stringValue31863") @Directive31 @Directive44(argument97 : ["stringValue31864", "stringValue31865"]) { + field31238: String @Directive40 +} + +type Object6604 implements Interface91 @Directive22(argument62 : "stringValue31866") @Directive31 @Directive44(argument97 : ["stringValue31867", "stringValue31868"]) { + field8331: [String] @Directive41 +} + +type Object6605 implements Interface99 @Directive2 @Directive22(argument62 : "stringValue31870") @Directive30(argument80 : true) @Directive31 @Directive44(argument97 : ["stringValue31871", "stringValue31872", "stringValue31873"]) @Directive45(argument98 : ["stringValue31874", "stringValue31875"]) { + field31240(argument1740: InputObject1441, argument1741: InputObject1, argument1742: Boolean): Object4350 @Directive30(argument80 : true) @Directive41 @Directive49(argument102 : "stringValue31876") + field31241: [String] @deprecated + field8997: Interface36 @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object6606 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31890") @Directive31 @Directive44(argument97 : ["stringValue31891", "stringValue31892"]) { + field17369(argument1743: InputObject1442): Object6607 @Directive49(argument102 : "stringValue31893") +} + +type Object6607 implements Interface46 @Directive22(argument62 : "stringValue31900") @Directive31 @Directive44(argument97 : ["stringValue31901", "stringValue31902"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6608 + field8330: Object6609 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6608 implements Interface45 @Directive22(argument62 : "stringValue31903") @Directive31 @Directive44(argument97 : ["stringValue31904", "stringValue31905"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6609 implements Interface91 @Directive22(argument62 : "stringValue31906") @Directive31 @Directive44(argument97 : ["stringValue31907", "stringValue31908"]) { + field8331: [String] +} + +type Object661 @Directive20(argument58 : "stringValue3389", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3388") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3390", "stringValue3391"]) { + field3723: String + field3724: String + field3725: String + field3726: String + field3727: Object480 + field3728: Object480 + field3729: Object480 + field3730: Object662 + field3748: Object480 +} + +type Object6610 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31909") @Directive31 @Directive44(argument97 : ["stringValue31910", "stringValue31911"]) { + field17369(argument1539: InputObject1386, argument1540: InputObject1, argument1744: [String]): Object4328 +} + +type Object6611 implements Interface99 @Directive22(argument62 : "stringValue31912") @Directive31 @Directive44(argument97 : ["stringValue31913", "stringValue31914", "stringValue31915"]) @Directive45(argument98 : ["stringValue31916", "stringValue31917"]) { + field8997: Object4016 @Directive18 @deprecated + field9409: Object6612 +} + +type Object6612 implements Interface46 @Directive22(argument62 : "stringValue31918") @Directive31 @Directive44(argument97 : ["stringValue31919", "stringValue31920"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6613 + field8330: Object6614 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6613 implements Interface45 @Directive22(argument62 : "stringValue31921") @Directive31 @Directive44(argument97 : ["stringValue31922", "stringValue31923"]) { + field18923: Object1535 + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object4325 +} + +type Object6614 implements Interface91 @Directive22(argument62 : "stringValue31924") @Directive31 @Directive44(argument97 : ["stringValue31925", "stringValue31926"]) { + field8331: [String] +} + +type Object6615 implements Interface159 @Directive2 @Directive22(argument62 : "stringValue31932") @Directive26(argument67 : "stringValue31929", argument71 : "stringValue31927", argument72 : "stringValue31928", argument74 : "stringValue31930", argument75 : "stringValue31931") @Directive31 @Directive44(argument97 : ["stringValue31933", "stringValue31934"]) @Directive45(argument98 : ["stringValue31935"]) { + field17369(argument1746: InputObject1446): Object6616 @Directive49(argument102 : "stringValue31936") + field31247: Object6143 @Directive18 + field31248: Object4016 @Directive14(argument51 : "stringValue31952") + field31249: Object2258 @Directive14(argument51 : "stringValue31953") + field31250: Object1820 @Directive14(argument51 : "stringValue31954") @Directive30(argument80 : true) +} + +type Object6616 implements Interface46 @Directive22(argument62 : "stringValue31940") @Directive31 @Directive44(argument97 : ["stringValue31941", "stringValue31942"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6617 + field8330: Object6619 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6617 implements Interface45 @Directive22(argument62 : "stringValue31943") @Directive31 @Directive44(argument97 : ["stringValue31944", "stringValue31945"]) { + field2515: String + field2516: Enum147 + field2517: Object459 + field2525: Object6618 +} + +type Object6618 @Directive22(argument62 : "stringValue31946") @Directive31 @Directive44(argument97 : ["stringValue31947", "stringValue31948"]) { + field31246: String +} + +type Object6619 implements Interface91 @Directive22(argument62 : "stringValue31949") @Directive31 @Directive44(argument97 : ["stringValue31950", "stringValue31951"]) { + field8331: [String] +} + +type Object662 @Directive20(argument58 : "stringValue3393", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3392") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3394", "stringValue3395"]) { + field3731: Object663 + field3743: Object669 +} + +type Object6620 @Directive22(argument62 : "stringValue31958") @Directive31 @Directive44(argument97 : ["stringValue31956", "stringValue31957"]) { + field31253: [Union227] +} + +type Object6621 implements Interface167 & Interface168 & Interface169 @Directive22(argument62 : "stringValue31974") @Directive31 @Directive44(argument97 : ["stringValue31975", "stringValue31976"]) { + field31254: String + field31255: String + field31256: Enum1664 +} + +type Object6622 implements Interface58 & Interface59 & Interface60 @Directive22(argument62 : "stringValue31977") @Directive31 @Directive44(argument97 : ["stringValue31978", "stringValue31979"]) { + field4783: String + field4784: String + field4785: String + field4786: Boolean + field4787: Enum231 +} + +type Object6623 implements Interface170 & Interface171 & Interface172 @Directive22(argument62 : "stringValue31992") @Directive31 @Directive44(argument97 : ["stringValue31993", "stringValue31994"]) { + field31257: String + field31258: String + field31259: String + field31260: String + field31261: Enum1665 +} + +type Object6624 implements Interface55 & Interface56 & Interface57 @Directive22(argument62 : "stringValue31995") @Directive31 @Directive44(argument97 : ["stringValue31996", "stringValue31997"]) { + field4777: String + field4778: String + field4779: Boolean + field4780: Enum230 +} + +type Object6625 implements Interface70 & Interface71 & Interface72 @Directive22(argument62 : "stringValue31998") @Directive31 @Directive44(argument97 : ["stringValue31999", "stringValue32000"]) { + field2508: Boolean + field4820: Enum239 + field76: String + field77: String +} + +type Object6626 implements Interface42 & Interface43 & Interface44 @Directive22(argument62 : "stringValue32001") @Directive31 @Directive44(argument97 : ["stringValue32002", "stringValue32003"]) { + field2508: Boolean + field2509: Enum146 + field76: String + field77: String +} + +type Object6627 implements Interface173 & Interface174 & Interface175 @Directive22(argument62 : "stringValue32016") @Directive31 @Directive44(argument97 : ["stringValue32017", "stringValue32018"]) { + field31262: String + field31263: String + field31264: Boolean + field31265: Enum1666 +} + +type Object6628 implements Interface73 & Interface74 & Interface75 @Directive22(argument62 : "stringValue32019") @Directive31 @Directive44(argument97 : ["stringValue32020", "stringValue32021"]) { + field4831: String + field4832: String + field4833: Boolean + field4834: Enum240 +} + +type Object6629 implements Interface164 & Interface165 & Interface166 @Directive22(argument62 : "stringValue32022") @Directive31 @Directive44(argument97 : ["stringValue32023", "stringValue32024"]) { + field31176: String + field31177: String + field31178: Boolean + field31179: Enum1659 +} + +type Object663 @Directive20(argument58 : "stringValue3397", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3396") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3398", "stringValue3399"]) { + field3732: String + field3733: [Object664] + field3741: [Object664] + field3742: Object480 +} + +type Object6630 @Directive2 @Directive22(argument62 : "stringValue32025") @Directive31 @Directive44(argument97 : ["stringValue32026", "stringValue32027"]) { + field31267(argument1747: String!): Object3986 @Directive18 @Directive30(argument80 : true) @Directive41 + field31268: Object6631 @Directive18 @Directive30(argument80 : true) @Directive40 +} + +type Object6631 implements Interface99 @Directive22(argument62 : "stringValue32028") @Directive31 @Directive44(argument97 : ["stringValue32029", "stringValue32030", "stringValue32031"]) @Directive45(argument98 : ["stringValue32032", "stringValue32033"]) { + field31269: [Object6632!] @Directive14(argument51 : "stringValue32034") @Directive30(argument80 : true) @Directive41 + field31294: [Object6638] @Directive14(argument51 : "stringValue32053") @Directive30(argument80 : true) @Directive41 + field8997: Object6639 @Directive30(argument80 : true) @Directive41 +} + +type Object6632 @Directive22(argument62 : "stringValue32035") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32036", "stringValue32037"]) { + field31270: String @Directive30(argument80 : true) @Directive41 + field31271: [Object6633!] @Directive30(argument80 : true) @Directive41 + field31285: Object6636 @Directive30(argument80 : true) @Directive41 +} + +type Object6633 @Directive22(argument62 : "stringValue32038") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32039", "stringValue32040"]) { + field31272: String @Directive30(argument80 : true) @Directive41 + field31273: String @Directive30(argument80 : true) @Directive41 + field31274: [Object6634] @Directive30(argument80 : true) @Directive41 +} + +type Object6634 @Directive22(argument62 : "stringValue32041") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32042", "stringValue32043"]) { + field31275: String @Directive30(argument80 : true) @Directive41 + field31276: String @Directive30(argument80 : true) @Directive41 + field31277: String @Directive30(argument80 : true) @Directive41 + field31278: Enum867! @Directive30(argument80 : true) @Directive41 + field31279: [Object6635!]! @Directive30(argument80 : true) @Directive41 +} + +type Object6635 @Directive22(argument62 : "stringValue32044") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32045", "stringValue32046"]) { + field31280: String @Directive30(argument80 : true) @Directive41 + field31281: String @Directive30(argument80 : true) @Directive41 + field31282: Boolean @Directive30(argument80 : true) @Directive40 + field31283: Boolean @Directive30(argument80 : true) @Directive41 + field31284: Enum868! @Directive30(argument80 : true) @Directive41 +} + +type Object6636 @Directive22(argument62 : "stringValue32047") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32048", "stringValue32049"]) { + field31286: String @Directive30(argument80 : true) @Directive41 + field31287: String @Directive30(argument80 : true) @Directive41 + field31288: [Object6637!] @Directive30(argument80 : true) @Directive41 +} + +type Object6637 @Directive22(argument62 : "stringValue32050") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32051", "stringValue32052"]) { + field31289: String @Directive30(argument80 : true) @Directive41 + field31290: String @Directive30(argument80 : true) @Directive41 + field31291: String @Directive30(argument80 : true) @Directive41 + field31292: [Object6635!] @Directive30(argument80 : true) @Directive41 + field31293: Enum870 @Directive30(argument80 : true) @Directive41 +} + +type Object6638 @Directive22(argument62 : "stringValue32054") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32055", "stringValue32056"]) { + field31295: String @Directive30(argument80 : true) @Directive41 + field31296: String @Directive30(argument80 : true) @Directive41 + field31297: Boolean @Directive30(argument80 : true) @Directive41 @deprecated + field31298: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object6639 implements Interface36 @Directive22(argument62 : "stringValue32057") @Directive30(argument79 : "stringValue32058") @Directive44(argument97 : ["stringValue32059", "stringValue32060"]) { + field2312: ID! @Directive30(argument80 : true) @Directive40 + field31299: [Object6640!] @Directive30(argument80 : true) @Directive41 + field31308: [Object6642] @Directive30(argument80 : true) @Directive41 + field9677: Object2258 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue32061") @Directive40 +} + +type Object664 @Directive20(argument58 : "stringValue3401", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3400") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3402", "stringValue3403"]) { + field3734: String + field3735: String + field3736: [Union100] +} + +type Object6640 @Directive22(argument62 : "stringValue32062") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32063", "stringValue32064"]) { + field31300: Enum867! @Directive30(argument80 : true) @Directive41 + field31301: Enum1667 @Directive30(argument80 : true) @Directive41 + field31302: Enum1668 @Directive30(argument80 : true) @Directive41 + field31303: Enum1669 @Directive30(argument80 : true) @Directive41 + field31304: [Object6641!] @Directive30(argument80 : true) @Directive41 +} + +type Object6641 @Directive22(argument62 : "stringValue32077") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32078", "stringValue32079"]) { + field31305: Boolean @Directive30(argument80 : true) @Directive40 + field31306: Boolean @Directive30(argument80 : true) @Directive41 + field31307: Enum868! @Directive30(argument80 : true) @Directive41 +} + +type Object6642 @Directive22(argument62 : "stringValue32080") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32081", "stringValue32082"]) { + field31309: [Object6641] @Directive30(argument80 : true) @Directive41 + field31310: Enum870 @Directive30(argument80 : true) @Directive41 +} + +type Object6643 @Directive2 @Directive22(argument62 : "stringValue32083") @Directive31 @Directive44(argument97 : ["stringValue32084", "stringValue32085"]) { + field31312(argument1748: InputObject1447!): [Object6644!] @Directive18 + field31321(argument1749: InputObject1394): Object6646 @Directive18 + field31364(argument1750: String): String @Directive49(argument102 : "stringValue32169") + field31365(argument1751: String, argument1752: String): String @Directive49(argument102 : "stringValue32170") +} + +type Object6644 @Directive22(argument62 : "stringValue32089") @Directive30(argument79 : "stringValue32092") @Directive44(argument97 : ["stringValue32090", "stringValue32091"]) { + field31313: ID! @Directive30(argument80 : true) @Directive41 + field31314: [Object6645!] @Directive30(argument80 : true) @Directive41 +} + +type Object6645 @Directive22(argument62 : "stringValue32093") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32094", "stringValue32095"]) { + field31315: String @Directive30(argument80 : true) @Directive41 + field31316: String @Directive30(argument80 : true) @Directive41 + field31317: String @Directive30(argument80 : true) @Directive41 + field31318: String @Directive30(argument80 : true) @Directive41 + field31319: String @Directive30(argument80 : true) @Directive41 + field31320: String @Directive30(argument80 : true) @Directive41 +} + +type Object6646 implements Interface92 @Directive22(argument62 : "stringValue32098") @Directive44(argument97 : ["stringValue32096", "stringValue32097"]) { + field8384: Object753! + field8385: [Object6647] +} + +type Object6647 implements Interface93 @Directive22(argument62 : "stringValue32101") @Directive44(argument97 : ["stringValue32099", "stringValue32100"]) { + field8386: String! + field8999: Object6648 +} + +type Object6648 implements Interface36 @Directive22(argument62 : "stringValue32102") @Directive30(argument79 : "stringValue32109") @Directive44(argument97 : ["stringValue32110", "stringValue32111"]) @Directive7(argument10 : "stringValue32108", argument12 : "stringValue32106", argument13 : "stringValue32105", argument14 : "stringValue32104", argument16 : "stringValue32107", argument17 : "stringValue32103", argument18 : true) { + field10387: Scalar4 @Directive30(argument80 : true) @Directive41 + field10398: Enum1670 @Directive30(argument80 : true) @Directive41 + field12392: Enum1630 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31322: [Scalar1!] @Directive30(argument80 : true) @Directive41 + field31323: [Scalar1!] @Directive30(argument80 : true) @Directive41 + field31324: [Scalar1!] @Directive30(argument80 : true) @Directive41 + field31325: Object6649 @Directive14(argument51 : "stringValue32116") @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object6649 @Directive22(argument62 : "stringValue32119") @Directive31 @Directive44(argument97 : ["stringValue32117", "stringValue32118"]) { + field31326: [Object6650] +} + +type Object665 @Directive20(argument58 : "stringValue3408", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3407") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3409", "stringValue3410"]) { + field3737: [String] +} + +type Object6650 @Directive22(argument62 : "stringValue32120") @Directive31 @Directive44(argument97 : ["stringValue32121", "stringValue32122"]) { + field31327: ID! + field31328: Enum1671! + field31329: Enum154! + field31330: String + field31331: Union228 +} + +type Object6651 @Directive22(argument62 : "stringValue32130") @Directive31 @Directive44(argument97 : ["stringValue32131", "stringValue32132"]) { + field31332: Object6652 + field31338: Object6652 + field31339: [Object6654] + field31354: Object6655 +} + +type Object6652 @Directive22(argument62 : "stringValue32133") @Directive31 @Directive44(argument97 : ["stringValue32134", "stringValue32135"]) { + field31333: String! + field31334: String + field31335: Object6653 +} + +type Object6653 @Directive22(argument62 : "stringValue32136") @Directive31 @Directive44(argument97 : ["stringValue32137", "stringValue32138"]) { + field31336: Object10 + field31337: Object451 +} + +type Object6654 @Directive22(argument62 : "stringValue32139") @Directive31 @Directive44(argument97 : ["stringValue32140", "stringValue32141"]) { + field31340: Object6652 + field31341: Object6652 + field31342: Object6652 + field31343: Object6655 + field31351: Object6658 +} + +type Object6655 @Directive22(argument62 : "stringValue32142") @Directive31 @Directive44(argument97 : ["stringValue32143", "stringValue32144"]) { + field31344: Object6652 + field31345: Union229 +} + +type Object6656 @Directive22(argument62 : "stringValue32148") @Directive31 @Directive44(argument97 : ["stringValue32149", "stringValue32150"]) { + field31346: String + field31347: String +} + +type Object6657 @Directive22(argument62 : "stringValue32151") @Directive31 @Directive44(argument97 : ["stringValue32152", "stringValue32153"]) { + field31348: String + field31349: String + field31350: [String] +} + +type Object6658 @Directive22(argument62 : "stringValue32154") @Directive31 @Directive44(argument97 : ["stringValue32155", "stringValue32156"]) { + field31352: String! + field31353: String +} + +type Object6659 @Directive22(argument62 : "stringValue32157") @Directive31 @Directive44(argument97 : ["stringValue32158", "stringValue32159"]) { + field31355: Object6652 + field31356: Object6652 + field31357: [Object6660] + field31359: Object6655 + field31360: Scalar1 + field31361: Scalar1 + field31362: Enum1672 + field31363: Enum1673 +} + +type Object666 @Directive20(argument58 : "stringValue3412", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3411") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3413", "stringValue3414"]) { + field3738: [String] +} + +type Object6660 @Directive22(argument62 : "stringValue32160") @Directive31 @Directive44(argument97 : ["stringValue32161", "stringValue32162"]) { + field31358: Scalar2 +} + +type Object6661 @Directive2 @Directive22(argument62 : "stringValue32179") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue32178"]) @Directive44(argument97 : ["stringValue32180", "stringValue32181"]) @Directive45(argument98 : ["stringValue32182"]) { + field31368(argument1755: ID!, argument1756: Enum955!): Object4354 @Directive17 @Directive30(argument80 : true) + field31369(argument1757: ID!, argument1758: Enum952!): Object4354 @Directive17 @Directive30(argument80 : true) + field31370(argument1759: ID!): Object6662 @Directive17 @Directive30(argument80 : true) + field31373(argument1760: ID!, argument1761: Enum1675): Object4354 @Directive17 @Directive30(argument80 : true) +} + +type Object6662 @Directive22(argument62 : "stringValue32183") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32184", "stringValue32185"]) { + field31371: Interface162 @Directive30(argument80 : true) @Directive39 + field31372: Interface33 @Directive30(argument80 : true) @Directive41 +} + +type Object6663 @Directive2 @Directive42(argument96 : ["stringValue32189", "stringValue32190", "stringValue32191"]) @Directive44(argument97 : ["stringValue32192", "stringValue32193"]) { + field31375(argument1762: InputObject1449): Object6664 @Directive17 + field31385(argument1763: InputObject1449, argument1764: InputObject1452): Object6669 @Directive17 + field31411(argument1765: String!, argument1766: String!): Object6675 @Directive17 + field31418(argument1767: [String]!, argument1768: [String], argument1769: String): Object6677 @Directive17 + field31426(argument1770: Scalar2!): Object6679 @Directive17 + field31428(argument1771: String!, argument1772: String, argument1773: String, argument1774: String, argument1775: [String], argument1776: [InputObject1450]): Object6679 @Directive17 +} + +type Object6664 @Directive42(argument96 : ["stringValue32209", "stringValue32210", "stringValue32211"]) @Directive44(argument97 : ["stringValue32212", "stringValue32213"]) { + field31376: [Object6665] +} + +type Object6665 @Directive42(argument96 : ["stringValue32214", "stringValue32215", "stringValue32216"]) @Directive44(argument97 : ["stringValue32217", "stringValue32218"]) { + field31377: [Object6666] + field31380: Object6667 +} + +type Object6666 @Directive42(argument96 : ["stringValue32219", "stringValue32220", "stringValue32221"]) @Directive44(argument97 : ["stringValue32222", "stringValue32223"]) { + field31378: String + field31379: [String] +} + +type Object6667 @Directive42(argument96 : ["stringValue32224", "stringValue32225", "stringValue32226"]) @Directive44(argument97 : ["stringValue32227", "stringValue32228"]) { + field31381: [Scalar2] + field31382: [Object6668] +} + +type Object6668 @Directive42(argument96 : ["stringValue32229", "stringValue32230", "stringValue32231"]) @Directive44(argument97 : ["stringValue32232", "stringValue32233"]) { + field31383: String + field31384: [Float] +} + +type Object6669 @Directive42(argument96 : ["stringValue32234", "stringValue32235", "stringValue32236"]) @Directive44(argument97 : ["stringValue32237", "stringValue32238"]) { + field31386: [Object6670] +} + +type Object667 @Directive20(argument58 : "stringValue3416", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3415") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3417", "stringValue3418"]) { + field3739: [String] +} + +type Object6670 @Directive42(argument96 : ["stringValue32239", "stringValue32240", "stringValue32241"]) @Directive44(argument97 : ["stringValue32242", "stringValue32243"]) { + field31387: [Object6666] + field31388: [Object6671] +} + +type Object6671 @Directive42(argument96 : ["stringValue32244", "stringValue32245", "stringValue32246"]) @Directive44(argument97 : ["stringValue32247", "stringValue32248"]) { + field31389: String + field31390: String + field31391: String! + field31392: String! + field31393: String + field31394: String! + field31395: Object6672! + field31405: [Object6674] + field31408: [Object6666] + field31409: String + field31410: String +} + +type Object6672 @Directive42(argument96 : ["stringValue32249", "stringValue32250", "stringValue32251"]) @Directive44(argument97 : ["stringValue32252", "stringValue32253"]) { + field31396: String! + field31397: [Object6673] + field31403: String + field31404: String +} + +type Object6673 @Directive42(argument96 : ["stringValue32254", "stringValue32255", "stringValue32256"]) @Directive44(argument97 : ["stringValue32257", "stringValue32258"]) { + field31398: String! + field31399: Enum1676 + field31400: String + field31401: [String] + field31402: String +} + +type Object6674 @Directive42(argument96 : ["stringValue32262", "stringValue32263", "stringValue32264"]) @Directive44(argument97 : ["stringValue32265", "stringValue32266"]) { + field31406: String! + field31407: String! +} + +type Object6675 @Directive42(argument96 : ["stringValue32267", "stringValue32268", "stringValue32269"]) @Directive44(argument97 : ["stringValue32270", "stringValue32271"]) { + field31412: [Object6676]! +} + +type Object6676 @Directive42(argument96 : ["stringValue32272", "stringValue32273", "stringValue32274"]) @Directive44(argument97 : ["stringValue32275", "stringValue32276"]) { + field31413: String! + field31414: String! + field31415: String + field31416: String! + field31417: String! +} + +type Object6677 @Directive42(argument96 : ["stringValue32277", "stringValue32278", "stringValue32279"]) @Directive44(argument97 : ["stringValue32280", "stringValue32281"]) { + field31419: [Object6678]! +} + +type Object6678 @Directive42(argument96 : ["stringValue32282", "stringValue32283", "stringValue32284"]) @Directive44(argument97 : ["stringValue32285", "stringValue32286"]) { + field31420: String! + field31421: String! + field31422: [String]! + field31423: Float! + field31424: Scalar2! + field31425: [String]! +} + +type Object6679 @Directive42(argument96 : ["stringValue32287", "stringValue32288", "stringValue32289"]) @Directive44(argument97 : ["stringValue32290", "stringValue32291"]) { + field31427: [Object6671] +} + +type Object668 @Directive20(argument58 : "stringValue3420", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3419") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3421", "stringValue3422"]) { + field3740: [Object480] +} + +type Object6680 @Directive2 @Directive22(argument62 : "stringValue32292") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32293", "stringValue32294"]) { + field31430(argument1777: String, argument1778: Int, argument1779: String, argument1780: Int): Object6681 @Directive30(argument80 : true) @Directive41 + field31431(argument1781: String, argument1782: Int, argument1783: String, argument1784: Int): Object6683 @Directive30(argument80 : true) @Directive41 + field31432(argument1785: [ID!]!): [Object3459!] @Directive18 @Directive30(argument80 : true) @Directive41 + field31433(argument1786: [ID!]!): [Object4396!] @Directive18 @Directive30(argument80 : true) @Directive41 + field31434(argument1787: [ID!]!): [Object4418!] @Directive18 @Directive30(argument80 : true) @Directive41 + field31435(argument1788: [ID!]!): [Union196] @Directive18 @Directive30(argument80 : true) @Directive41 + field31436(argument1789: [String!]!): [Object6685] @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6681 implements Interface92 @Directive22(argument62 : "stringValue32295") @Directive44(argument97 : ["stringValue32300", "stringValue32301"]) @Directive8(argument21 : "stringValue32297", argument23 : "stringValue32299", argument24 : "stringValue32296", argument25 : null, argument27 : "stringValue32298") { + field8384: Object753! + field8385: [Object6682] +} + +type Object6682 implements Interface93 @Directive22(argument62 : "stringValue32302") @Directive44(argument97 : ["stringValue32303", "stringValue32304"]) { + field8386: String! + field8999: Object4418 +} + +type Object6683 implements Interface92 @Directive22(argument62 : "stringValue32305") @Directive44(argument97 : ["stringValue32310", "stringValue32311"]) @Directive8(argument21 : "stringValue32307", argument23 : "stringValue32309", argument24 : "stringValue32306", argument25 : null, argument27 : "stringValue32308") { + field8384: Object753! + field8385: [Object6684] +} + +type Object6684 implements Interface93 @Directive22(argument62 : "stringValue32312") @Directive44(argument97 : ["stringValue32313", "stringValue32314"]) { + field8386: String! + field8999: Object3459 +} + +type Object6685 implements Interface36 @Directive22(argument62 : "stringValue32317") @Directive30(argument85 : "stringValue32316", argument86 : "stringValue32315") @Directive44(argument97 : ["stringValue32321", "stringValue32322"]) @Directive45(argument98 : ["stringValue32323"]) @Directive7(argument13 : "stringValue32320", argument14 : "stringValue32319", argument17 : "stringValue32318", argument18 : false) { + field18122: Object6688 @Directive30(argument80 : true) @Directive41 + field18420: Object6689 @Directive14(argument51 : "stringValue32337") @Directive30(argument80 : true) @Directive40 + field19315(argument834: String, argument835: Int, argument836: String, argument837: Int): Object6686 @Directive30(argument80 : true) @Directive41 @Directive5(argument7 : "stringValue32325") + field2312: ID! @Directive30(argument80 : true) @Directive41 + field30146: String @Directive3(argument3 : "stringValue32324") @Directive30(argument80 : true) @Directive41 + field30240: Object6690 @Directive14(argument51 : "stringValue32341") @Directive30(argument80 : true) @Directive39 + field30267: Object6143 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue32426") @Directive40 + field31454(argument1790: String, argument1791: Int, argument1792: String, argument1793: Int): Object6693 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue32352") + field31479: Object6702 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue32407") @Directive41 + field8990: Scalar3 @Directive14(argument51 : "stringValue32335") @Directive30(argument80 : true) @Directive40 + field8991: Scalar3 @Directive14(argument51 : "stringValue32336") @Directive30(argument80 : true) @Directive40 + field9021: String @Directive30(argument80 : true) @Directive41 +} + +type Object6686 implements Interface92 @Directive22(argument62 : "stringValue32326") @Directive44(argument97 : ["stringValue32327", "stringValue32328"]) { + field8384: Object753! + field8385: [Object6687] +} + +type Object6687 implements Interface93 @Directive22(argument62 : "stringValue32329") @Directive44(argument97 : ["stringValue32330", "stringValue32331"]) { + field8386: String! + field8999: Object4395 +} + +type Object6688 @Directive22(argument62 : "stringValue32332") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32333", "stringValue32334"]) { + field31437: String @Directive30(argument80 : true) @Directive41 + field31438: String @Directive30(argument80 : true) @Directive41 + field31439: String @Directive30(argument80 : true) @Directive41 +} + +type Object6689 @Directive22(argument62 : "stringValue32338") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32339", "stringValue32340"]) { + field31440: ID! @Directive30(argument80 : true) @Directive40 + field31441: String @Directive30(argument80 : true) @Directive40 + field31442: String @Directive30(argument80 : true) @Directive39 +} + +type Object669 @Directive20(argument58 : "stringValue3424", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3423") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3425", "stringValue3426"]) { + field3744: String + field3745: String + field3746: Object480 + field3747: Object480 +} + +type Object6690 @Directive22(argument62 : "stringValue32342") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32343", "stringValue32344"]) { + field31443: Object6691 @Directive30(argument80 : true) @Directive39 +} + +type Object6691 @Directive12 @Directive22(argument62 : "stringValue32347") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32345", "stringValue32346"]) { + field31444: String @Directive30(argument80 : true) @Directive41 + field31445: String @Directive30(argument80 : true) @Directive41 + field31446: String @Directive30(argument80 : true) @Directive41 + field31447: Object6692 @Directive30(argument80 : true) @Directive41 + field31453: [Object6691] @Directive3(argument3 : "stringValue32351") @Directive30(argument80 : true) @Directive41 +} + +type Object6692 @Directive22(argument62 : "stringValue32350") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32348", "stringValue32349"]) { + field31448: Float @Directive30(argument80 : true) @Directive39 + field31449: Scalar2 @Directive30(argument80 : true) @Directive39 + field31450: String @Directive30(argument80 : true) @Directive39 + field31451: Boolean @Directive30(argument80 : true) @Directive39 + field31452: String @Directive30(argument80 : true) @Directive39 +} + +type Object6693 implements Interface92 @Directive22(argument62 : "stringValue32353") @Directive44(argument97 : ["stringValue32358", "stringValue32359"]) @Directive8(argument21 : "stringValue32355", argument23 : "stringValue32357", argument24 : "stringValue32354", argument25 : "stringValue32356") { + field8384: Object753! + field8385: [Object6694] +} + +type Object6694 implements Interface93 @Directive22(argument62 : "stringValue32360") @Directive44(argument97 : ["stringValue32361", "stringValue32362"]) { + field8386: String! + field8999: Object6695 +} + +type Object6695 implements Interface36 @Directive12 @Directive22(argument62 : "stringValue32365") @Directive30(argument85 : "stringValue32364", argument86 : "stringValue32363") @Directive44(argument97 : ["stringValue32366", "stringValue32367"]) { + field10398: Enum1678 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field30146: String @Directive30(argument80 : true) @Directive41 + field31455: Enum1677 @Directive30(argument80 : true) @Directive41 + field31456: Object6696 @Directive30(argument80 : true) @Directive41 + field31457: Object6696 @Directive30(argument80 : true) @Directive41 + field31458: Object6697 @Directive30(argument80 : true) @Directive41 + field31461: Object6698 @Directive30(argument80 : true) @Directive41 + field9021: String @Directive30(argument80 : true) @Directive41 + field9087: Scalar4 @Directive30(argument80 : true) @Directive41 + field9142: Scalar4 @Directive30(argument80 : true) @Directive41 + field9696: String @Directive3(argument3 : "stringValue32368") @Directive30(argument80 : true) @Directive41 +} + +type Object6696 implements Interface36 @Directive22(argument62 : "stringValue32379") @Directive30(argument85 : "stringValue32378", argument86 : "stringValue32377") @Directive44(argument97 : ["stringValue32380", "stringValue32381"]) { + field19313: Enum1679 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive3(argument3 : "stringValue32382") @Directive30(argument80 : true) @Directive41 + field9696: String @Directive3(argument3 : "stringValue32383") @Directive30(argument80 : true) @Directive41 +} + +type Object6697 @Directive22(argument62 : "stringValue32388") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32389", "stringValue32390"]) { + field31459: Object4428 @Directive30(argument80 : true) @Directive41 + field31460: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object6698 @Directive22(argument62 : "stringValue32391") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32392", "stringValue32393"]) { + field31462: Enum1680 @Directive30(argument80 : true) @Directive41 + field31463: Object6699 @Directive30(argument80 : true) @Directive41 + field31475: Int @Directive30(argument80 : true) @Directive41 + field31476: [Object6701] @Directive30(argument80 : true) @Directive41 +} + +type Object6699 @Directive22(argument62 : "stringValue32398") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32399", "stringValue32400"]) { + field31464: String @Directive30(argument80 : true) @Directive41 + field31465: Object6700 @Directive30(argument80 : true) @Directive41 +} + +type Object67 @Directive21(argument61 : "stringValue289") @Directive44(argument97 : ["stringValue288"]) { + field430: String + field431: Scalar2 + field432: String + field433: String + field434: String + field435: String + field436: String + field437: String +} + +type Object670 @Directive20(argument58 : "stringValue3428", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3427") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3429", "stringValue3430"]) { + field3749: String + field3750: [Object478!] + field3751: String + field3752: Object480 + field3753: Object480 + field3754: Object480 + field3755: Object480 + field3756: Boolean + field3757: Object571 + field3758: Object628 + field3759: Object569 + field3760: [Object659] + field3761: Object1 + field3762: Object1 + field3763: Object660 + field3764: Object1 +} + +type Object6700 @Directive22(argument62 : "stringValue32401") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32402", "stringValue32403"]) { + field31466: Scalar4 @Directive30(argument80 : true) @Directive41 + field31467: Int @Directive30(argument80 : true) @Directive41 + field31468: Int @Directive30(argument80 : true) @Directive41 + field31469: Int @Directive30(argument80 : true) @Directive41 + field31470: String @Directive30(argument80 : true) @Directive41 + field31471: String @Directive30(argument80 : true) @Directive41 + field31472: Int @Directive30(argument80 : true) @Directive41 + field31473: Int @Directive30(argument80 : true) @Directive41 + field31474: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object6701 @Directive22(argument62 : "stringValue32404") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32405", "stringValue32406"]) { + field31477: Object3423 @Directive30(argument80 : true) @Directive41 + field31478: Object6691 @Directive30(argument80 : true) @Directive41 +} + +type Object6702 implements Interface36 @Directive22(argument62 : "stringValue32410") @Directive30(argument85 : "stringValue32409", argument86 : "stringValue32408") @Directive44(argument97 : ["stringValue32415", "stringValue32416"]) @Directive7(argument12 : "stringValue32414", argument13 : "stringValue32413", argument14 : "stringValue32412", argument17 : "stringValue32411", argument18 : false) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field30146: String @Directive30(argument80 : true) @Directive41 + field31480: Enum1681 @Directive30(argument80 : true) @Directive41 + field31481: Object6703 @Directive30(argument80 : true) @Directive41 +} + +type Object6703 @Directive22(argument62 : "stringValue32421") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32422", "stringValue32423"]) { + field31482: String @Directive30(argument80 : true) @Directive41 + field31483: String @Directive30(argument80 : true) @Directive41 + field31484: String @Directive30(argument80 : true) @Directive41 + field31485: String @Directive30(argument80 : true) @Directive41 + field31486(argument1794: String, argument1795: Int, argument1796: String, argument1797: Int): Object6693 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue32424") + field31487: String @Directive30(argument80 : true) @Directive41 + field31488: String @Directive30(argument80 : true) @Directive41 + field31489(argument1798: String, argument1799: Int, argument1800: String, argument1801: Int): Object6693 @Directive30(argument80 : true) @Directive39 @Directive4(argument5 : "stringValue32425") +} + +type Object6704 @Directive2 @Directive22(argument62 : "stringValue32427") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32428", "stringValue32429"]) { + field31491(argument1802: ID!): Object6705 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6705 implements Interface36 @Directive22(argument62 : "stringValue32432") @Directive30(argument85 : "stringValue32431", argument86 : "stringValue32430") @Directive44(argument97 : ["stringValue32433", "stringValue32434"]) @Directive7(argument13 : "stringValue32437", argument14 : "stringValue32436", argument16 : "stringValue32438", argument17 : "stringValue32435", argument18 : false) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31492: Object6706 @Directive3(argument3 : "stringValue32439") @Directive30(argument80 : true) @Directive41 + field8994: String @Directive30(argument80 : true) @Directive41 +} + +type Object6706 @Directive22(argument62 : "stringValue32440") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32441", "stringValue32442"]) { + field31493: Int @Directive30(argument80 : true) @Directive41 + field31494: Scalar3 @Directive30(argument80 : true) @Directive41 + field31495: Int @Directive30(argument80 : true) @Directive41 + field31496: Int @Directive30(argument80 : true) @Directive41 + field31497: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6707 @Directive2 @Directive22(argument62 : "stringValue32443") @Directive30(argument83 : ["stringValue32444", "stringValue32445", "stringValue32446", "stringValue32447"]) @Directive44(argument97 : ["stringValue32448", "stringValue32449"]) { + field31499(argument1803: String, argument1804: Int, argument1805: String, argument1806: Int): Object6708 @Directive30(argument80 : true) @Directive41 + field31500(argument1807: InputObject247, argument1808: InputObject247, argument1809: InputObject247, argument1810: InputObject247, argument1811: Boolean, argument1812: Int, argument1813: Int, argument1814: InputObject248): Object4488 @Directive18 @Directive30(argument80 : true) @Directive41 + field31501(argument1815: String!, argument1816: String!): Object4487 @Directive18 @Directive30(argument80 : true) @Directive41 + field31502(argument1817: String!): Object4484 @Directive18 @Directive30(argument80 : true) @Directive41 + field31503: Object6710 @Directive18 @Directive30(argument80 : true) @Directive41 @deprecated + field31511(argument1818: InputObject1454): Object6712 @Directive18 @Directive30(argument80 : true) @Directive41 + field31535: Object6718 @Directive30(argument80 : true) @Directive41 + field31540: Object6721 @Directive30(argument80 : true) @Directive41 +} + +type Object6708 implements Interface92 @Directive22(argument62 : "stringValue32450") @Directive44(argument97 : ["stringValue32451", "stringValue32452"]) @Directive8(argument21 : "stringValue32454", argument23 : "stringValue32456", argument24 : "stringValue32453", argument25 : null, argument27 : "stringValue32455") { + field8384: Object753! + field8385: [Object6709] +} + +type Object6709 implements Interface93 @Directive22(argument62 : "stringValue32457") @Directive44(argument97 : ["stringValue32458", "stringValue32459"]) { + field8386: String! + field8999: Object4484 +} + +type Object671 @Directive20(argument58 : "stringValue3432", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3431") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3433", "stringValue3434"]) { + field3765: String + field3766: [Object672] + field3771: Object673 +} + +type Object6710 @Directive22(argument62 : "stringValue32462") @Directive42(argument96 : ["stringValue32460", "stringValue32461"]) @Directive44(argument97 : ["stringValue32463", "stringValue32464"]) { + field31504: [Object6711] +} + +type Object6711 @Directive22(argument62 : "stringValue32467") @Directive42(argument96 : ["stringValue32465", "stringValue32466"]) @Directive44(argument97 : ["stringValue32468", "stringValue32469"]) { + field31505: String + field31506: Enum1682 + field31507: Enum1683 + field31508: Int + field31509: Int + field31510: Boolean +} + +type Object6712 implements Interface36 @Directive22(argument62 : "stringValue32479") @Directive30(argument83 : ["stringValue32480", "stringValue32481", "stringValue32482", "stringValue32483"]) @Directive44(argument97 : ["stringValue32484", "stringValue32485"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31512: [Object6713!] @Directive30(argument80 : true) @Directive41 +} + +type Object6713 @Directive22(argument62 : "stringValue32486") @Directive30(argument83 : ["stringValue32487", "stringValue32488", "stringValue32489", "stringValue32490"]) @Directive44(argument97 : ["stringValue32491", "stringValue32492"]) { + field31513: Object6714! @Directive30(argument80 : true) @Directive41 + field31517: String! @Directive30(argument80 : true) @Directive41 + field31518: Object6715! @Directive30(argument80 : true) @Directive41 + field31524: String! @Directive30(argument80 : true) @Directive41 + field31525: Object6716 @Directive30(argument80 : true) @Directive41 + field31530: [Object6717!]! @Directive30(argument80 : true) @Directive41 + field31534: Object4498 @Directive30(argument80 : true) @Directive41 +} + +type Object6714 @Directive22(argument62 : "stringValue32493") @Directive30(argument83 : ["stringValue32494", "stringValue32495", "stringValue32496", "stringValue32497"]) @Directive44(argument97 : ["stringValue32498", "stringValue32499"]) { + field31514: String! @Directive30(argument80 : true) @Directive41 + field31515: String! @Directive30(argument80 : true) @Directive41 + field31516: String! @Directive30(argument80 : true) @Directive41 +} + +type Object6715 @Directive22(argument62 : "stringValue32500") @Directive30(argument83 : ["stringValue32501", "stringValue32502", "stringValue32503", "stringValue32504"]) @Directive44(argument97 : ["stringValue32505", "stringValue32506"]) { + field31519: String! @Directive30(argument80 : true) @Directive41 + field31520: String! @Directive30(argument80 : true) @Directive41 + field31521: Scalar2 @Directive30(argument80 : true) @Directive41 + field31522: String @Directive30(argument80 : true) @Directive41 + field31523: [String!] @Directive30(argument80 : true) @Directive41 +} + +type Object6716 @Directive22(argument62 : "stringValue32507") @Directive30(argument83 : ["stringValue32508", "stringValue32509", "stringValue32510", "stringValue32511"]) @Directive44(argument97 : ["stringValue32512", "stringValue32513"]) { + field31526: String @Directive30(argument80 : true) @Directive41 + field31527: String @Directive30(argument80 : true) @Directive41 + field31528: String @Directive30(argument80 : true) @Directive41 + field31529: String @Directive30(argument80 : true) @Directive41 +} + +type Object6717 @Directive22(argument62 : "stringValue32514") @Directive30(argument83 : ["stringValue32515", "stringValue32516", "stringValue32517", "stringValue32518"]) @Directive44(argument97 : ["stringValue32519", "stringValue32520"]) { + field31531: String! @Directive30(argument80 : true) @Directive41 + field31532: String! @Directive30(argument80 : true) @Directive41 + field31533: String @Directive30(argument80 : true) @Directive41 +} + +type Object6718 @Directive22(argument62 : "stringValue32521") @Directive30(argument83 : ["stringValue32522", "stringValue32523", "stringValue32524", "stringValue32525"]) @Directive44(argument97 : ["stringValue32526", "stringValue32527"]) { + field31536: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field31537: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field31538: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field31539(argument1819: Enum983!, argument1820: Enum1684!, argument1821: Enum982): Object6719 @Directive30(argument80 : true) @Directive41 +} + +type Object6719 implements Interface92 @Directive22(argument62 : "stringValue32536") @Directive44(argument97 : ["stringValue32537", "stringValue32538"]) @Directive8(argument21 : "stringValue32533", argument23 : "stringValue32535", argument24 : "stringValue32532", argument25 : null, argument27 : "stringValue32534") { + field8384: Object753! + field8385: [Object6720] +} + +type Object672 @Directive20(argument58 : "stringValue3436", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3435") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3437", "stringValue3438"]) { + field3767: String + field3768: String + field3769: String + field3770: String +} + +type Object6720 implements Interface93 @Directive22(argument62 : "stringValue32539") @Directive44(argument97 : ["stringValue32540", "stringValue32541"]) { + field8386: String! + field8999: Object4483 +} + +type Object6721 @Directive22(argument62 : "stringValue32542") @Directive30(argument83 : ["stringValue32543", "stringValue32544", "stringValue32545", "stringValue32546"]) @Directive44(argument97 : ["stringValue32547", "stringValue32548"]) { + field31541: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field31542: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field31543: Scalar2 @Directive18 @Directive30(argument80 : true) @Directive41 + field31544(argument1822: [Enum983!]!, argument1823: Enum1684!, argument1824: Enum982): Object6722 @Directive30(argument80 : true) @Directive41 +} + +type Object6722 implements Interface92 @Directive22(argument62 : "stringValue32553") @Directive44(argument97 : ["stringValue32554", "stringValue32555"]) @Directive8(argument21 : "stringValue32550", argument23 : "stringValue32552", argument24 : "stringValue32549", argument25 : null, argument27 : "stringValue32551") { + field8384: Object753! + field8385: [Object6723] +} + +type Object6723 implements Interface93 @Directive22(argument62 : "stringValue32556") @Directive44(argument97 : ["stringValue32557", "stringValue32558"]) { + field8386: String! + field8999: Object4497 +} + +type Object6724 @Directive22(argument62 : "stringValue32559") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32560", "stringValue32561"]) { + field31546(argument1825: [ID!]): [Object4016] @Directive17 @Directive30(argument80 : true) @Directive41 + field31547(argument1826: InputObject1455): Object6725 @Directive17 @Directive30(argument80 : true) @Directive41 + field31548(argument1827: InputObject1461): Object6727 @Directive17 @Directive30(argument80 : true) @Directive41 +} + +type Object6725 implements Interface92 @Directive22(argument62 : "stringValue32586") @Directive44(argument97 : ["stringValue32587", "stringValue32588"]) { + field8384: Object753! + field8385: [Object6726] +} + +type Object6726 implements Interface93 @Directive22(argument62 : "stringValue32589") @Directive44(argument97 : ["stringValue32590", "stringValue32591"]) { + field8386: String! + field8999: Object4016 +} + +type Object6727 @Directive22(argument62 : "stringValue32595") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32596", "stringValue32597"]) { + field31549: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object6728 @Directive22(argument62 : "stringValue32598") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32599", "stringValue32600"]) { + field31551(argument1828: [ID!]): [Object2258] @Directive17 @Directive30(argument80 : true) @Directive38 + field31552(argument1829: [ID!]): [Object2258] @Directive17 @Directive30(argument80 : true) @Directive38 + field31553(argument1830: [ID!]): [Object2258] @Directive17 @Directive30(argument80 : true) @Directive38 + field31554(argument1831: [ID!]): [Object2274] @Directive17 @Directive30(argument80 : true) @Directive39 + field31555(argument1832: [ID!]): [Object2274] @Directive17 @Directive30(argument80 : true) @Directive39 +} + +type Object6729 @Directive42(argument96 : ["stringValue32601", "stringValue32602", "stringValue32603"]) @Directive44(argument97 : ["stringValue32604", "stringValue32605"]) { + field31557(argument1833: [ID!]): [Object6730] @Directive17 + field31652(argument1834: [ID], argument1835: [ID], argument1836: Enum1688 = EnumValue30438): [Object6730] @Directive17 + field31653(argument1837: [ID!]): [Object4545] @Directive17 + field31654(argument1838: [ID!]): [Object4545] @Directive17 + field31655(argument1839: [ID!]): [Object4545] @Directive17 + field31656(argument1840: [ID!], argument1841: InputObject69!): [Object6753] @Directive17 + field31704(argument1842: [String!]): [Object4545] @Directive17 + field31705(argument1843: [ID!]): [Object4545] @Directive17 +} + +type Object673 @Directive20(argument58 : "stringValue3440", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3439") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3441", "stringValue3442"]) { + field3772: String +} + +type Object6730 @Directive42(argument96 : ["stringValue32606", "stringValue32607", "stringValue32608"]) @Directive44(argument97 : ["stringValue32609", "stringValue32610"]) { + field31558: Scalar2 + field31559: Scalar2 + field31560: Enum1687 @deprecated + field31561: Object6731 @Directive14(argument51 : "stringValue32614", argument52 : "stringValue32615") + field31565: Object6732 @Directive14(argument51 : "stringValue32621", argument52 : "stringValue32622") + field31576: Object4546 @Directive14(argument51 : "stringValue32633", argument52 : "stringValue32634") + field31577: Object4548 @Directive14(argument51 : "stringValue32635", argument52 : "stringValue32636") + field31578: Object3422 @Directive13(argument49 : "stringValue32637", argument50 : "stringValue32638") + field31579: Object6734 @Directive14(argument51 : "stringValue32639", argument52 : "stringValue32640") + field31604: Object6737 @Directive18 + field31605: Object6739 @Directive14(argument51 : "stringValue32667", argument52 : "stringValue32668") + field31626: Object6745 + field31636: Object3420 @Directive14(argument51 : "stringValue32722", argument52 : "stringValue32723") + field31637: Object4244 @Directive14(argument51 : "stringValue32724", argument52 : "stringValue32725") + field31638: Object6748 @Directive14(argument51 : "stringValue32726", argument52 : "stringValue32727") + field31640: Object6749 @Directive14(argument51 : "stringValue32741", argument52 : "stringValue32742") + field31641: Object6252 @Directive14(argument51 : "stringValue32761", argument52 : "stringValue32762") + field31642: Object6750 @Directive14(argument51 : "stringValue32763", argument52 : "stringValue32764") + field31644: Object6751 @Directive14(argument51 : "stringValue32772", argument52 : "stringValue32773") + field31646: Object6752 @Directive14(argument51 : "stringValue32782", argument52 : "stringValue32783") +} + +type Object6731 @Directive42(argument96 : ["stringValue32616", "stringValue32617", "stringValue32618"]) @Directive44(argument97 : ["stringValue32619", "stringValue32620"]) { + field31562: Boolean + field31563: Boolean + field31564: Enum676 +} + +type Object6732 @Directive42(argument96 : ["stringValue32623", "stringValue32624", "stringValue32625"]) @Directive44(argument97 : ["stringValue32626", "stringValue32627"]) { + field31566: String + field31567: Object3421 + field31568: Object3421 + field31569: Object3421 + field31570: Object3421 + field31571: Float + field31572: Float + field31573: Object6733 +} + +type Object6733 @Directive42(argument96 : ["stringValue32628", "stringValue32629", "stringValue32630"]) @Directive44(argument97 : ["stringValue32631", "stringValue32632"]) { + field31574: Int + field31575: Object3421 +} + +type Object6734 @Directive42(argument96 : ["stringValue32641", "stringValue32642", "stringValue32643"]) @Directive44(argument97 : ["stringValue32644", "stringValue32645"]) { + field31580: Int + field31581: Boolean + field31582: Boolean + field31583: Object3421 + field31584: Object3421 + field31585: Int + field31586: [Int] + field31587: Object3421 + field31588: Scalar4 + field31589: Scalar4 + field31590: Int + field31591: Object6735 + field31595: Float + field31596: Object3421 + field31597: Object3421 + field31598: Object3421 + field31599: Object6736 + field31602: Scalar4 + field31603: Scalar4 +} + +type Object6735 @Directive42(argument96 : ["stringValue32646", "stringValue32647", "stringValue32648"]) @Directive44(argument97 : ["stringValue32649", "stringValue32650"]) { + field31592: Boolean + field31593: Int + field31594: Int +} + +type Object6736 @Directive42(argument96 : ["stringValue32651", "stringValue32652", "stringValue32653"]) @Directive44(argument97 : ["stringValue32654", "stringValue32655"]) { + field31600: Float + field31601: Float +} + +type Object6737 implements Interface92 @Directive42(argument96 : ["stringValue32656"]) @Directive44(argument97 : ["stringValue32662", "stringValue32663"]) @Directive8(argument21 : "stringValue32658", argument23 : "stringValue32661", argument24 : "stringValue32657", argument25 : "stringValue32659", argument27 : "stringValue32660", argument28 : false) { + field8384: Object753! + field8385: [Object6738] +} + +type Object6738 implements Interface93 @Directive42(argument96 : ["stringValue32664"]) @Directive44(argument97 : ["stringValue32665", "stringValue32666"]) { + field8386: String + field8999: Object6571 +} + +type Object6739 @Directive22(argument62 : "stringValue32669") @Directive42(argument96 : ["stringValue32670", "stringValue32671"]) @Directive44(argument97 : ["stringValue32672", "stringValue32673"]) { + field31606: Object6740 + field31613: [Object6741] + field31616: [Object6742] + field31619: [Object6742] + field31620: [Object6743] + field31623: [Object6744] +} + +type Object674 @Directive20(argument58 : "stringValue3444", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3443") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3445", "stringValue3446"]) { + field3773: String + field3774: Object480 + field3775: Object650 + field3776: Object657 + field3777: Object675 + field3787: Object1 + field3788: Object1 +} + +type Object6740 @Directive22(argument62 : "stringValue32674") @Directive42(argument96 : ["stringValue32675", "stringValue32676"]) @Directive44(argument97 : ["stringValue32677", "stringValue32678"]) { + field31607: Int + field31608: Int + field31609: Enum669! + field31610: Float! + field31611: Scalar4 + field31612: Scalar4 +} + +type Object6741 @Directive22(argument62 : "stringValue32679") @Directive42(argument96 : ["stringValue32680", "stringValue32681"]) @Directive44(argument97 : ["stringValue32682", "stringValue32683"]) { + field31614: Object6740! + field31615: Int! +} + +type Object6742 @Directive22(argument62 : "stringValue32684") @Directive42(argument96 : ["stringValue32685", "stringValue32686"]) @Directive44(argument97 : ["stringValue32687", "stringValue32688"]) { + field31617: Object6740! + field31618: Int! +} + +type Object6743 @Directive22(argument62 : "stringValue32689") @Directive42(argument96 : ["stringValue32690", "stringValue32691"]) @Directive44(argument97 : ["stringValue32692", "stringValue32693"]) { + field31621: Object6740! + field31622: Int! +} + +type Object6744 @Directive22(argument62 : "stringValue32694") @Directive42(argument96 : ["stringValue32695", "stringValue32696"]) @Directive44(argument97 : ["stringValue32697", "stringValue32698"]) { + field31624: Object6740! + field31625: Int! +} + +type Object6745 implements Interface92 @Directive22(argument62 : "stringValue32699") @Directive44(argument97 : ["stringValue32705", "stringValue32706"]) @Directive8(argument21 : "stringValue32701", argument23 : "stringValue32703", argument24 : "stringValue32700", argument25 : "stringValue32702", argument26 : "stringValue32704", argument28 : true) { + field8384: Object753! + field8385: [Object6746] +} + +type Object6746 implements Interface93 @Directive22(argument62 : "stringValue32707") @Directive44(argument97 : ["stringValue32708", "stringValue32709"]) { + field8386: String + field8999: Object6747 +} + +type Object6747 @Directive12 @Directive22(argument62 : "stringValue32710") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32711", "stringValue32712"]) { + field31627: Scalar2 @Directive3(argument3 : "stringValue32713") @Directive30(argument80 : true) @Directive41 + field31628: String @Directive3(argument3 : "stringValue32714") @Directive30(argument80 : true) @Directive41 + field31629: Scalar2 @Directive3(argument3 : "stringValue32715") @Directive30(argument80 : true) @Directive41 + field31630: Scalar2 @Directive3(argument3 : "stringValue32716") @Directive30(argument80 : true) @Directive41 + field31631: Int @Directive3(argument3 : "stringValue32717") @Directive30(argument80 : true) @Directive41 + field31632: Boolean! @Directive3(argument3 : "stringValue32718") @Directive30(argument80 : true) @Directive41 + field31633: Boolean @Directive3(argument3 : "stringValue32719") @Directive30(argument80 : true) @Directive41 + field31634: Scalar4 @Directive3(argument3 : "stringValue32720") @Directive30(argument80 : true) @Directive41 + field31635: Scalar4 @Directive3(argument3 : "stringValue32721") @Directive30(argument80 : true) @Directive41 +} + +type Object6748 implements Interface36 @Directive22(argument62 : "stringValue32728") @Directive30(argument85 : "stringValue32730", argument86 : "stringValue32729") @Directive44(argument97 : ["stringValue32737", "stringValue32738"]) @Directive7(argument11 : "stringValue32736", argument13 : "stringValue32732", argument14 : "stringValue32733", argument15 : "stringValue32735", argument16 : "stringValue32734", argument17 : "stringValue32731") { + field2312: ID! @Directive1 @Directive30(argument80 : true) @Directive41 + field31639: Object4547 @Directive3(argument2 : "stringValue32740", argument3 : "stringValue32739") @Directive30(argument80 : true) @Directive40 +} + +type Object6749 implements Interface36 @Directive22(argument62 : "stringValue32743") @Directive42(argument96 : ["stringValue32744", "stringValue32745"]) @Directive44(argument97 : ["stringValue32752", "stringValue32753"]) @Directive7(argument11 : "stringValue32751", argument13 : "stringValue32747", argument14 : "stringValue32748", argument15 : "stringValue32750", argument16 : "stringValue32749", argument17 : "stringValue32746") { + field18014: String @Directive3(argument3 : "stringValue32759") + field18015: Int @Directive3(argument3 : "stringValue32760") + field18017: Enum906 @Directive3(argument3 : "stringValue32757") + field18018: Int @Directive3(argument3 : "stringValue32758") + field18029: Enum212 @Directive3(argument3 : "stringValue32756") + field18260: Boolean @Directive3(argument3 : "stringValue32754") + field18262: Boolean @Directive3(argument3 : "stringValue32755") + field2312: ID! +} + +type Object675 @Directive20(argument58 : "stringValue3448", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3447") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3449", "stringValue3450"]) { + field3778: String + field3779: String + field3780: [Object676] + field3785: Object621 + field3786: Int +} + +type Object6750 implements Interface36 @Directive22(argument62 : "stringValue32765") @Directive42(argument96 : ["stringValue32766"]) @Directive44(argument97 : ["stringValue32770", "stringValue32771"]) @Directive7(argument13 : "stringValue32769", argument14 : "stringValue32768", argument17 : "stringValue32767", argument18 : false) { + field2312: ID! @Directive1 + field31643: Boolean @Directive41 +} + +type Object6751 implements Interface36 @Directive22(argument62 : "stringValue32774") @Directive42(argument96 : ["stringValue32775"]) @Directive44(argument97 : ["stringValue32780", "stringValue32781"]) @Directive7(argument13 : "stringValue32778", argument14 : "stringValue32777", argument16 : "stringValue32779", argument17 : "stringValue32776") { + field2312: ID! @Directive1 + field31645: Float @Directive41 +} + +type Object6752 implements Interface36 @Directive22(argument62 : "stringValue32784") @Directive42(argument96 : ["stringValue32785", "stringValue32786"]) @Directive44(argument97 : ["stringValue32792", "stringValue32793"]) @Directive7(argument13 : "stringValue32788", argument14 : "stringValue32789", argument15 : "stringValue32791", argument16 : "stringValue32790", argument17 : "stringValue32787", argument18 : true) { + field2312: ID! @Directive1 + field31647: Float @Directive3(argument3 : "stringValue32795") + field31648: Float @Directive3(argument3 : "stringValue32796") + field31649: Float @Directive3(argument3 : "stringValue32797") + field31650: Float @Directive3(argument3 : "stringValue32798") + field31651: Float @Directive3(argument3 : "stringValue32799") + field9678: String @Directive3(argument3 : "stringValue32794") @Directive41 +} + +type Object6753 @Directive22(argument62 : "stringValue32803") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32804", "stringValue32805"]) { + field31657: Scalar2! @Directive30(argument80 : true) @Directive40 + field31658: Object4543! @Directive30(argument80 : true) @Directive41 + field31659: [Object6754] @Directive14(argument51 : "stringValue32806", argument52 : "stringValue32807") @Directive30(argument80 : true) @Directive40 + field31671: [Object6757] @Directive14(argument51 : "stringValue32817", argument52 : "stringValue32818") @Directive30(argument80 : true) @Directive40 + field31685: Object6762! @Directive14(argument51 : "stringValue32834", argument52 : "stringValue32835") @Directive30(argument80 : true) @Directive40 +} + +type Object6754 @Directive22(argument62 : "stringValue32808") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32809", "stringValue32810"]) { + field31660: Scalar3! @Directive30(argument80 : true) @Directive41 + field31661: Scalar2! @Directive30(argument80 : true) @Directive40 + field31662: Object6755 @Directive30(argument80 : true) @Directive41 + field31668: Object6756 @Directive30(argument80 : true) @Directive41 +} + +type Object6755 @Directive22(argument62 : "stringValue32811") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32812", "stringValue32813"]) { + field31663: Boolean @Directive30(argument80 : true) @Directive41 + field31664: Int @Directive30(argument80 : true) @Directive41 + field31665: Int @Directive30(argument80 : true) @Directive41 + field31666: Boolean @Directive30(argument80 : true) @Directive41 + field31667: Boolean @Directive30(argument80 : true) @Directive41 +} + +type Object6756 @Directive22(argument62 : "stringValue32814") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32815", "stringValue32816"]) { + field31669: Int @Directive30(argument80 : true) @Directive41 + field31670: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6757 @Directive22(argument62 : "stringValue32819") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32820", "stringValue32821"]) { + field31672: Scalar2! @Directive30(argument80 : true) @Directive40 + field31673: [Object6758] @Directive30(argument80 : true) @Directive40 +} + +type Object6758 @Directive22(argument62 : "stringValue32822") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32823", "stringValue32824"]) { + field31674: Scalar3! @Directive30(argument80 : true) @Directive41 + field31675: Scalar2! @Directive30(argument80 : true) @Directive40 + field31676: Scalar2! @Directive30(argument80 : true) @Directive40 + field31677: Object6755 @Directive30(argument80 : true) @Directive41 + field31678: Object6759 @Directive30(argument80 : true) @Directive41 +} + +type Object6759 @Directive22(argument62 : "stringValue32825") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32826", "stringValue32827"]) { + field31679: Object6760 @Directive30(argument80 : true) @Directive41 +} + +type Object676 @Directive20(argument58 : "stringValue3452", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3451") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3453", "stringValue3454"]) { + field3781: String + field3782: String + field3783: Object655 + field3784: Enum10 +} + +type Object6760 @Directive22(argument62 : "stringValue32828") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32829", "stringValue32830"]) { + field31680: Enum1008! @Directive30(argument80 : true) @Directive41 + field31681: Object3421 @Directive30(argument80 : true) @Directive41 + field31682: [Object6761] @Directive30(argument80 : true) @Directive41 +} + +type Object6761 @Directive22(argument62 : "stringValue32831") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32832", "stringValue32833"]) { + field31683: Int! @Directive30(argument80 : true) @Directive41 + field31684: Object3421! @Directive30(argument80 : true) @Directive41 +} + +type Object6762 implements Interface36 @Directive22(argument62 : "stringValue32836") @Directive30(argument86 : "stringValue32837") @Directive44(argument97 : ["stringValue32843", "stringValue32844"]) @Directive7(argument10 : "stringValue32842", argument13 : "stringValue32841", argument14 : "stringValue32839", argument16 : "stringValue32840", argument17 : "stringValue32838") { + field2312: ID! @Directive30(argument80 : true) @Directive40 + field31686: [Object6763] @Directive30(argument80 : true) @Directive40 + field31692: [Object6764] @Directive18(argument56 : "stringValue32848") @Directive30(argument80 : true) @Directive40 +} + +type Object6763 @Directive22(argument62 : "stringValue32845") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32846", "stringValue32847"]) { + field31687: Scalar3! @Directive30(argument80 : true) @Directive41 + field31688: Scalar2! @Directive30(argument80 : true) @Directive40 + field31689: Int @Directive30(argument80 : true) @Directive41 + field31690: Boolean @Directive30(argument80 : true) @Directive41 + field31691: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6764 @Directive22(argument62 : "stringValue32849") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32850", "stringValue32851"]) { + field31693: Scalar2! @Directive30(argument80 : true) @Directive40 + field31694: [Object6765] @Directive30(argument80 : true) @Directive40 +} + +type Object6765 @Directive22(argument62 : "stringValue32852") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32853", "stringValue32854"]) { + field31695: Scalar3! @Directive30(argument80 : true) @Directive41 + field31696: Scalar2! @Directive30(argument80 : true) @Directive40 + field31697: Scalar2! @Directive30(argument80 : true) @Directive40 + field31698: Int @Directive30(argument80 : true) @Directive41 + field31699: Int @Directive30(argument80 : true) @Directive41 + field31700: Boolean @Directive30(argument80 : true) @Directive41 + field31701: Boolean @Directive30(argument80 : true) @Directive41 + field31702: Boolean @Directive30(argument80 : true) @Directive41 + field31703: [Object6761] @Directive30(argument80 : true) @Directive41 +} + +type Object6766 @Directive22(argument62 : "stringValue32855") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32856", "stringValue32857"]) { + field31707(argument1844: [InputObject68], argument1845: [ID], argument1846: [String], argument1847: InputObject1462): [Object4126] @Directive17 @Directive30(argument80 : true) @Directive41 +} + +type Object6767 @Directive42(argument96 : ["stringValue32862", "stringValue32863", "stringValue32864"]) @Directive44(argument97 : ["stringValue32865", "stringValue32866"]) { + field31710(argument1850: [ID!], argument1851: [String!]): [Object6143]! @Directive17 + field31711(argument1852: InputObject1463!): [Object6143]! @Directive17 + field31712(argument1853: InputObject1466!): [Object6143]! @Directive17 + field31713(argument1854: InputObject1467!): Scalar2! @Directive17 + field31714(argument1855: InputObject1468!): [Object2409]! @Directive17 +} + +type Object6768 @Directive22(argument62 : "stringValue32888") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32889", "stringValue32890"]) { + field31718(argument1860: [ID!]): [Object2028] @Directive17 @Directive30(argument80 : true) @Directive41 + field31719(argument1861: [ID!]): [Object2032] @Directive17 @Directive30(argument80 : true) @Directive40 +} + +type Object6769 @Directive2 @Directive22(argument62 : "stringValue32893") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32894"]) { + field31722(argument1865: Enum1662!, argument1866: ID! @Directive25(argument65 : "stringValue32899")): Object6770 @Directive18 @Directive30(argument80 : true) @Directive41 + field31740(argument1867: Enum1662!, argument1868: InputObject1436!): Object6776 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object677 @Directive20(argument58 : "stringValue3456", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3455") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3457", "stringValue3458"]) { + field3789: String + field3790: Object621 + field3791: Object650 + field3792: Object657 + field3793: Object675 + field3794: Object621 + field3795: [Object678] + field3805: [Object2] + field3806: Object1 + field3807: Object1 +} + +type Object6770 implements Interface92 @Directive22(argument62 : "stringValue32900") @Directive44(argument97 : ["stringValue32901"]) @Directive8(argument19 : "stringValue32907", argument21 : "stringValue32903", argument23 : "stringValue32906", argument24 : "stringValue32902", argument25 : "stringValue32904", argument27 : "stringValue32905") { + field8384: Object753! + field8385: [Object6771] +} + +type Object6771 implements Interface93 @Directive22(argument62 : "stringValue32908") @Directive44(argument97 : ["stringValue32909"]) { + field8386: String! + field8999: Object6772 +} + +type Object6772 @Directive21(argument61 : "stringValue32913") @Directive22(argument62 : "stringValue32910") @Directive30(argument79 : "stringValue32912") @Directive44(argument97 : ["stringValue32911"]) { + field31723: ID! @Directive30(argument80 : true) @Directive41 + field31724: Enum1690 @Directive30(argument80 : true) @Directive41 + field31725: String @Directive30(argument80 : true) @Directive41 + field31726: String @Directive30(argument80 : true) @Directive41 + field31727: Scalar4 @Directive30(argument80 : true) @Directive41 + field31728: Scalar4 @Directive30(argument80 : true) @Directive41 + field31729: Object6773 @Directive30(argument80 : true) @Directive41 + field31738: [String] @Directive30(argument80 : true) @Directive41 + field31739: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6773 @Directive22(argument62 : "stringValue32918") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32917"]) { + field31730: String @Directive30(argument80 : true) @Directive41 + field31731: String @Directive30(argument80 : true) @Directive41 + field31732: [Object6774] @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6774 @Directive22(argument62 : "stringValue32920") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32919"]) { + field31733: Enum1691 @Directive30(argument80 : true) @Directive41 + field31734: Object6775 @Directive30(argument80 : true) @Directive41 +} + +type Object6775 @Directive22(argument62 : "stringValue32925") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32924"]) { + field31735: String @Directive30(argument80 : true) @Directive41 + field31736: String @Directive30(argument80 : true) @Directive41 + field31737: String @Directive30(argument80 : true) @Directive41 +} + +type Object6776 implements Interface36 @Directive22(argument62 : "stringValue32933") @Directive30(argument79 : "stringValue32935") @Directive44(argument97 : ["stringValue32934"]) @Directive7(argument10 : "stringValue32941", argument12 : "stringValue32939", argument13 : "stringValue32938", argument14 : "stringValue32937", argument16 : "stringValue32940", argument17 : "stringValue32936", argument18 : false) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31741: Enum1662 @Directive30(argument80 : true) @Directive41 + field31742: Object6777 @Directive30(argument80 : true) @Directive41 + field31744: String @Directive30(argument80 : true) @Directive41 + field31745: Object6778 @Directive30(argument80 : true) @Directive41 + field31764: [Union231] @Directive30(argument80 : true) @Directive41 + field31785: [Object6789] @Directive30(argument80 : true) @Directive41 + field9024: String @Directive30(argument80 : true) @Directive41 +} + +type Object6777 @Directive22(argument62 : "stringValue32944") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32942", "stringValue32943"]) { + field31743: Enum1661 @Directive30(argument80 : true) @Directive41 +} + +type Object6778 @Directive22(argument62 : "stringValue32946") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32945"]) { + field31746: Enum1692 @Directive30(argument80 : true) @Directive41 + field31747: Union230 @Directive30(argument80 : true) @Directive41 +} + +type Object6779 @Directive21(argument61 : "stringValue32954") @Directive22(argument62 : "stringValue32952") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32953"]) { + field31748: String @Directive30(argument80 : true) @Directive41 + field31749: String @Directive30(argument80 : true) @Directive41 + field31750: Boolean @Directive30(argument80 : true) @Directive41 + field31751: [Object6772] @Directive30(argument80 : true) @Directive41 + field31752: String @Directive30(argument80 : true) @Directive41 + field31753: String @Directive30(argument80 : true) @Directive41 + field31754: Enum1693 @Directive30(argument80 : true) @Directive41 +} + +type Object678 @Directive20(argument58 : "stringValue3460", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3459") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3461", "stringValue3462"]) { + field3796: String + field3797: String + field3798: String + field3799: String + field3800: Object621 + field3801: String + field3802: Object571 + field3803: String + field3804: String +} + +type Object6780 @Directive21(argument61 : "stringValue32959") @Directive22(argument62 : "stringValue32958") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32957"]) { + field31755: ID! @Directive30(argument80 : true) @Directive41 + field31756: String @Directive30(argument80 : true) @Directive41 + field31757: String @Directive30(argument80 : true) @Directive41 + field31758: Scalar4 @Directive30(argument80 : true) @Directive41 + field31759: Object6773 @Directive30(argument80 : true) @Directive41 +} + +type Object6781 @Directive21(argument61 : "stringValue32962") @Directive22(argument62 : "stringValue32961") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32960"]) { + field31760: String @Directive30(argument80 : true) @Directive41 + field31761: String @Directive30(argument80 : true) @Directive41 + field31762: Enum1693 @Directive30(argument80 : true) @Directive41 + field31763: [Object6780] @Directive30(argument80 : true) @Directive41 +} + +type Object6782 @Directive21(argument61 : "stringValue32967") @Directive22(argument62 : "stringValue32966") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32965"]) { + field31765: String @Directive30(argument80 : true) @Directive41 + field31766: [Object6783] @Directive30(argument80 : true) @Directive41 + field31772: Enum1693 @Directive30(argument80 : true) @Directive41 +} + +type Object6783 @Directive21(argument61 : "stringValue32970") @Directive22(argument62 : "stringValue32968") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32969"]) { + field31767: ID! @Directive30(argument80 : true) @Directive41 + field31768: String @Directive30(argument80 : true) @Directive41 + field31769: String @Directive30(argument80 : true) @Directive41 + field31770: Scalar4 @Directive30(argument80 : true) @Directive41 + field31771: Object6770 @Directive30(argument80 : true) @Directive41 +} + +type Object6784 @Directive21(argument61 : "stringValue32973") @Directive22(argument62 : "stringValue32972") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32971"]) { + field31773: String @Directive30(argument80 : true) @Directive41 + field31774: String @Directive30(argument80 : true) @Directive41 + field31775: String @Directive30(argument80 : true) @Directive41 + field31776: String @Directive30(argument80 : true) @Directive41 + field31777(argument1869: String, argument1870: Int, argument1871: String, argument1872: Int): Object6785 @Directive30(argument80 : true) @Directive41 @Directive5(argument7 : "stringValue32974") +} + +type Object6785 implements Interface92 @Directive22(argument62 : "stringValue32976") @Directive44(argument97 : ["stringValue32975"]) { + field8384: Object753! + field8385: [Object6786] +} + +type Object6786 implements Interface93 @Directive22(argument62 : "stringValue32978") @Directive44(argument97 : ["stringValue32977"]) { + field8386: String! + field8999: Object6787 +} + +type Object6787 @Directive12 @Directive22(argument62 : "stringValue32980") @Directive30(argument79 : "stringValue32981") @Directive44(argument97 : ["stringValue32979"]) { + field31778: String @Directive30(argument80 : true) @Directive41 + field31779: String @Directive30(argument80 : true) @Directive41 + field31780: Scalar4 @Directive30(argument80 : true) @Directive41 + field31781: [Object6788] @Directive30(argument80 : true) @Directive41 + field31784: [String] @Directive30(argument80 : true) @Directive41 +} + +type Object6788 @Directive22(argument62 : "stringValue32983") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32982"]) { + field31782: String @Directive30(argument80 : true) @Directive41 + field31783: String @Directive30(argument80 : true) @Directive41 +} + +type Object6789 @Directive22(argument62 : "stringValue32985") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32984"]) { + field31786: String @Directive30(argument80 : true) @Directive41 + field31787: String @Directive30(argument80 : true) @Directive41 + field31788: String @Directive30(argument80 : true) @Directive41 + field31789: String @Directive30(argument80 : true) @Directive41 +} + +type Object679 @Directive20(argument58 : "stringValue3464", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3463") @Directive31 @Directive44(argument97 : ["stringValue3465", "stringValue3466"]) { + field3808: String + field3809: String + field3810: String + field3811: String + field3812: Object680 +} + +type Object6790 @Directive2 @Directive22(argument62 : "stringValue32986") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue32987"]) { + field31791(argument1873: InputObject1470): Object6791 @Directive30(argument80 : true) @Directive41 +} + +type Object6791 implements Interface92 @Directive22(argument62 : "stringValue33071") @Directive44(argument97 : ["stringValue33069", "stringValue33070"]) { + field8384: Object753! + field8385: [Object6792] +} + +type Object6792 implements Interface93 @Directive22(argument62 : "stringValue33074") @Directive44(argument97 : ["stringValue33072", "stringValue33073"]) { + field8386: String! + field8999: Object6793 +} + +type Object6793 @Directive20(argument58 : "stringValue33078", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33075") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33076", "stringValue33077"]) { + field31792: [Object6794] @Directive30(argument80 : true) @Directive41 + field31821: Object6797 @Directive30(argument80 : true) @Directive41 +} + +type Object6794 @Directive20(argument58 : "stringValue33082", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33079") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33080", "stringValue33081"]) { + field31793: Object6795 @Directive30(argument80 : true) @Directive41 +} + +type Object6795 @Directive20(argument58 : "stringValue33086", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33083") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33084", "stringValue33085"]) { + field31794: Int @Directive30(argument80 : true) @Directive41 + field31795: Boolean @Directive30(argument80 : true) @Directive41 + field31796: Boolean @Directive30(argument80 : true) @Directive41 + field31797: Int @Directive30(argument80 : true) @Directive41 + field31798: String @Directive30(argument80 : true) @Directive41 + field31799: Scalar2 @Directive30(argument80 : true) @Directive41 + field31800: String @Directive30(argument80 : true) @Directive41 + field31801: [Object6796] @Directive30(argument80 : true) @Directive41 + field31810: Enum1700 @Directive30(argument80 : true) @Directive41 + field31811: [String] @Directive30(argument80 : true) @Directive41 + field31812: String @Directive30(argument80 : true) @Directive41 + field31813: Boolean @Directive30(argument80 : true) @Directive41 + field31814: Int @Directive30(argument80 : true) @Directive41 + field31815: Boolean @Directive30(argument80 : true) @Directive41 + field31816: Int @Directive30(argument80 : true) @Directive41 + field31817: String @Directive30(argument80 : true) @Directive41 + field31818: String @Directive30(argument80 : true) @Directive41 + field31819: Boolean @Directive30(argument80 : true) @Directive41 + field31820: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6796 @Directive20(argument58 : "stringValue33090", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33087") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33088", "stringValue33089"]) { + field31802: Scalar2 @Directive30(argument80 : true) @Directive41 + field31803: Int @Directive30(argument80 : true) @Directive41 + field31804: Scalar4 @Directive30(argument80 : true) @Directive41 + field31805: Scalar4 @Directive30(argument80 : true) @Directive41 + field31806: Boolean @Directive30(argument80 : true) @Directive41 + field31807: String @Directive30(argument80 : true) @Directive41 + field31808: String @Directive30(argument80 : true) @Directive41 + field31809: String @Directive30(argument80 : true) @Directive41 +} + +type Object6797 @Directive20(argument58 : "stringValue33097", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33094") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33095", "stringValue33096"]) { + field31822: String @Directive30(argument80 : true) @Directive41 + field31823: String @Directive30(argument80 : true) @Directive41 +} + +type Object6798 implements Interface36 & Interface98 @Directive22(argument62 : "stringValue33100") @Directive42(argument96 : ["stringValue33098", "stringValue33099"]) @Directive44(argument97 : ["stringValue33101"]) { + field2312: ID! + field31825: String + field31826: [Interface138!]! + field8996: Object6799 +} + +type Object6799 implements Interface99 @Directive42(argument96 : ["stringValue33102", "stringValue33103", "stringValue33104"]) @Directive44(argument97 : ["stringValue33105", "stringValue33106", "stringValue33107"]) @Directive45(argument98 : ["stringValue33108", "stringValue33109"]) { + field8997: Object6798 @deprecated + field9409: Object6800 @Directive13(argument49 : "stringValue33110") +} + +type Object68 @Directive21(argument61 : "stringValue291") @Directive44(argument97 : ["stringValue290"]) { + field441: Scalar2 + field442: String +} + +type Object680 @Directive20(argument58 : "stringValue3468", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3467") @Directive31 @Directive44(argument97 : ["stringValue3469", "stringValue3470"]) { + field3813: String + field3814: [Object681] +} + +type Object6800 implements Interface46 @Directive42(argument96 : ["stringValue33111", "stringValue33112", "stringValue33113"]) @Directive44(argument97 : ["stringValue33114", "stringValue33115"]) { + field2616: [Object474]! + field8314: [Object1532] + field8329: Object6801 + field8330: Object6802 + field8332: [Object1536] + field8337: [Object502] @deprecated +} + +type Object6801 implements Interface45 @Directive42(argument96 : ["stringValue33116", "stringValue33117", "stringValue33118"]) @Directive44(argument97 : ["stringValue33119", "stringValue33120"]) { + field2515: String + field2516: Enum147 + field2517: Object459 +} + +type Object6802 implements Interface91 @Directive42(argument96 : ["stringValue33121", "stringValue33122", "stringValue33123"]) @Directive44(argument97 : ["stringValue33124", "stringValue33125"]) { + field8331: [String] +} + +type Object6803 @Directive2 @Directive22(argument62 : "stringValue33126") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33127", "stringValue33128", "stringValue33129"]) { + field31828(argument1875: InputObject205): Object6804 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue33130") + field31829(argument1876: String): Object6806 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue33143") +} + +type Object6804 implements Interface92 @Directive22(argument62 : "stringValue33131") @Directive44(argument97 : ["stringValue33136", "stringValue33137", "stringValue33138"]) @Directive8(argument21 : "stringValue33133", argument23 : "stringValue33134", argument24 : "stringValue33132", argument25 : null, argument27 : "stringValue33135") { + field8384: Object753! + field8385: [Object6805] +} + +type Object6805 implements Interface93 @Directive22(argument62 : "stringValue33139") @Directive44(argument97 : ["stringValue33140", "stringValue33141", "stringValue33142"]) { + field8386: String! + field8999: Object4449 +} + +type Object6806 implements Interface92 @Directive22(argument62 : "stringValue33144") @Directive44(argument97 : ["stringValue33149", "stringValue33150", "stringValue33151"]) @Directive8(argument21 : "stringValue33146", argument23 : "stringValue33147", argument24 : "stringValue33145", argument25 : null, argument27 : "stringValue33148") { + field8384: Object753! + field8385: [Object6805] +} + +type Object6807 @Directive2 @Directive22(argument62 : "stringValue33152") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33153", "stringValue33154", "stringValue33155"]) { + field31831(argument1877: String, argument1878: String, argument1879: Scalar2, argument1880: Boolean): Object6808 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue33156") + field31832(argument1881: String): Object6810 @Directive30(argument80 : true) @Directive37(argument95 : "stringValue33169") +} + +type Object6808 implements Interface92 @Directive22(argument62 : "stringValue33157") @Directive44(argument97 : ["stringValue33162", "stringValue33163", "stringValue33164"]) @Directive8(argument21 : "stringValue33159", argument23 : "stringValue33160", argument24 : "stringValue33158", argument25 : null, argument27 : "stringValue33161") { + field8384: Object753! + field8385: [Object6809] +} + +type Object6809 implements Interface93 @Directive22(argument62 : "stringValue33165") @Directive44(argument97 : ["stringValue33166", "stringValue33167", "stringValue33168"]) { + field8386: String! + field8999: Object4448 +} + +type Object681 @Directive20(argument58 : "stringValue3472", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3471") @Directive31 @Directive44(argument97 : ["stringValue3473", "stringValue3474"]) { + field3815: String + field3816: String +} + +type Object6810 implements Interface92 @Directive22(argument62 : "stringValue33170") @Directive44(argument97 : ["stringValue33175", "stringValue33176", "stringValue33177"]) @Directive8(argument21 : "stringValue33172", argument23 : "stringValue33173", argument24 : "stringValue33171", argument25 : null, argument27 : "stringValue33174") { + field8384: Object753! + field8385: [Object6809] +} + +type Object6811 @Directive2 @Directive22(argument62 : "stringValue33178") @Directive30(argument79 : "stringValue33179") @Directive44(argument97 : ["stringValue33180", "stringValue33181", "stringValue33182"]) { + field31834(argument1882: Int, argument1883: Int, argument1884: String, argument1885: String): Object6812 @Directive30(argument80 : true) @Directive41 + field31868(argument1886: ID!, argument1887: Enum1655, argument1888: ID, argument1889: Int, argument1890: Int, argument1891: String, argument1892: String, argument1893: InputObject1424, argument1894: String, argument1895: [Enum1654], argument1896: InputObject1425, argument1897: InputObject1425, argument1898: InputObject1489): Object6817 @Directive30(argument80 : true) @Directive41 +} + +type Object6812 implements Interface92 @Directive22(argument62 : "stringValue33183") @Directive44(argument97 : ["stringValue33184", "stringValue33185", "stringValue33186"]) { + field8384: Object753! + field8385: [Object6813] +} + +type Object6813 implements Interface93 @Directive22(argument62 : "stringValue33190") @Directive44(argument97 : ["stringValue33187", "stringValue33188", "stringValue33189"]) { + field8386: String + field8999: Object6814 +} + +type Object6814 @Directive12 @Directive22(argument62 : "stringValue33195") @Directive30(argument79 : "stringValue33191") @Directive44(argument97 : ["stringValue33192", "stringValue33193", "stringValue33194"]) { + field31835: String @Directive30(argument80 : true) @Directive41 + field31836: String @Directive30(argument80 : true) @Directive41 + field31837: String @Directive30(argument80 : true) @Directive41 + field31838: String @Directive30(argument80 : true) @Directive41 + field31839: Scalar2 @Directive30(argument80 : true) @Directive41 + field31840: String @Directive30(argument80 : true) @Directive41 + field31841: Object6815 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33196") @Directive41 + field31857: Object6816 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33202") @Directive41 +} + +type Object6815 implements Interface36 @Directive22(argument62 : "stringValue33201") @Directive30(argument79 : "stringValue33197") @Directive44(argument97 : ["stringValue33198", "stringValue33199", "stringValue33200"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31842: Int @Directive30(argument80 : true) @Directive41 + field31843: Int @Directive30(argument80 : true) @Directive41 + field31844: Int @Directive30(argument80 : true) @Directive41 + field31845: Int @Directive30(argument80 : true) @Directive41 + field31846: Int @Directive30(argument80 : true) @Directive41 + field31847: Int @Directive30(argument80 : true) @Directive41 + field31848: Int @Directive30(argument80 : true) @Directive41 + field31849: Int @Directive30(argument80 : true) @Directive41 + field31850: Int @Directive30(argument80 : true) @Directive41 + field31851: Int @Directive30(argument80 : true) @Directive41 + field31852: Float @Directive30(argument80 : true) @Directive41 @deprecated + field31853: Float @Directive30(argument80 : true) @Directive41 @deprecated + field31854: Float @Directive30(argument80 : true) @Directive41 @deprecated + field31855: Float @Directive30(argument80 : true) @Directive41 @deprecated + field31856: Float @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object6816 implements Interface36 @Directive22(argument62 : "stringValue33207") @Directive30(argument79 : "stringValue33203") @Directive44(argument97 : ["stringValue33204", "stringValue33205", "stringValue33206"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31858: Int @Directive30(argument80 : true) @Directive41 + field31859: Int @Directive30(argument80 : true) @Directive41 + field31860: Int @Directive30(argument80 : true) @Directive41 + field31861: Int @Directive30(argument80 : true) @Directive41 + field31862: Int @Directive30(argument80 : true) @Directive41 + field31863: Int @Directive30(argument80 : true) @Directive41 + field31864: Int @Directive30(argument80 : true) @Directive41 + field31865: Int @Directive30(argument80 : true) @Directive41 + field31866: Int @Directive30(argument80 : true) @Directive41 + field31867: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6817 implements Interface92 @Directive22(argument62 : "stringValue33212") @Directive44(argument97 : ["stringValue33213", "stringValue33214", "stringValue33215"]) { + field8384: Object753! + field8385: [Object6818] +} + +type Object6818 implements Interface93 @Directive22(argument62 : "stringValue33219") @Directive44(argument97 : ["stringValue33216", "stringValue33217", "stringValue33218"]) { + field8386: String + field8999: Object6819 +} + +type Object6819 @Directive12 @Directive22(argument62 : "stringValue33220") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33221", "stringValue33222", "stringValue33223"]) { + field31869: String @Directive30(argument80 : true) @Directive41 + field31870: String @Directive30(argument80 : true) @Directive41 + field31871: String @Directive30(argument80 : true) @Directive41 + field31872: String @Directive30(argument80 : true) @Directive41 + field31873: String @Directive30(argument80 : true) @Directive41 + field31874: String @Directive30(argument80 : true) @Directive41 + field31875: String @Directive30(argument80 : true) @Directive41 + field31876: String @Directive30(argument80 : true) @Directive41 + field31877: String @Directive30(argument80 : true) @Directive41 + field31878: String @Directive30(argument80 : true) @Directive41 + field31879: String @Directive30(argument80 : true) @Directive41 + field31880: String @Directive30(argument80 : true) @Directive41 + field31881: String @Directive30(argument80 : true) @Directive41 + field31882: String @Directive30(argument80 : true) @Directive41 + field31883: [Enum1654] @Directive30(argument80 : true) @Directive41 + field31884: String @Directive30(argument80 : true) @Directive41 + field31885: [Object6820] @Directive14(argument51 : "stringValue33224") @Directive30(argument80 : true) @Directive41 + field31892: String @Directive30(argument80 : true) @Directive41 + field31893(argument1899: InputObject1489): Object6821 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33230") @Directive41 + field31895(argument1900: InputObject1489): Object6822 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33236") @Directive41 + field31900(argument1901: InputObject1489): Object6823 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33242") @Directive41 + field31902(argument1902: InputObject1489): Object6824 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33248") @Directive41 + field31907: Int @Directive30(argument80 : true) @Directive41 + field31908: Object6827 @Directive30(argument80 : true) @Directive41 @deprecated + field31913: String @Directive30(argument80 : true) @Directive41 @deprecated + field31914(argument1903: [Enum1654]): Object6828 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33267") @Directive41 @deprecated + field31915(argument1904: [Enum1654]): Object6829 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33273") @Directive41 @deprecated +} + +type Object682 @Directive22(argument62 : "stringValue3475") @Directive31 @Directive44(argument97 : ["stringValue3476", "stringValue3477"]) { + field3817: String + field3818: Enum203 + field3819: String + field3820: String +} + +type Object6820 @Directive22(argument62 : "stringValue33229") @Directive30(argument79 : "stringValue33228") @Directive44(argument97 : ["stringValue33225", "stringValue33226", "stringValue33227"]) { + field31886: String @Directive30(argument80 : true) @Directive41 + field31887: String @Directive30(argument80 : true) @Directive41 + field31888: String @Directive30(argument80 : true) @Directive41 + field31889: String @Directive30(argument80 : true) @Directive41 + field31890: String @Directive30(argument80 : true) @Directive41 + field31891: String @Directive30(argument80 : true) @Directive41 +} + +type Object6821 implements Interface36 @Directive22(argument62 : "stringValue33231") @Directive30(argument79 : "stringValue33232") @Directive44(argument97 : ["stringValue33233", "stringValue33234", "stringValue33235"]) { + field17630: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31894: String @Directive30(argument80 : true) @Directive41 +} + +type Object6822 implements Interface36 @Directive22(argument62 : "stringValue33237") @Directive30(argument79 : "stringValue33238") @Directive44(argument97 : ["stringValue33239", "stringValue33240", "stringValue33241"]) { + field17630: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31896: Scalar2 @Directive30(argument80 : true) @Directive41 + field31897: Scalar2 @Directive30(argument80 : true) @Directive41 + field31898: Scalar2 @Directive30(argument80 : true) @Directive41 + field31899: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object6823 implements Interface36 @Directive22(argument62 : "stringValue33243") @Directive30(argument79 : "stringValue33244") @Directive44(argument97 : ["stringValue33245", "stringValue33246", "stringValue33247"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31901: [Scalar2] @Directive30(argument80 : true) @Directive41 +} + +type Object6824 implements Interface92 @Directive22(argument62 : "stringValue33249") @Directive44(argument97 : ["stringValue33250", "stringValue33251", "stringValue33252"]) { + field8384: Object753! + field8385: [Object6825] +} + +type Object6825 implements Interface93 @Directive22(argument62 : "stringValue33256") @Directive44(argument97 : ["stringValue33253", "stringValue33254", "stringValue33255"]) { + field8386: String + field8999: Object6826 +} + +type Object6826 @Directive22(argument62 : "stringValue33261") @Directive30(argument79 : "stringValue33260") @Directive44(argument97 : ["stringValue33257", "stringValue33258", "stringValue33259"]) { + field31903: String @Directive30(argument80 : true) @Directive41 + field31904: Boolean @Directive30(argument80 : true) @Directive41 + field31905: Scalar4 @Directive30(argument80 : true) @Directive41 + field31906: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object6827 implements Interface36 @Directive22(argument62 : "stringValue33262") @Directive30(argument79 : "stringValue33263") @Directive44(argument97 : ["stringValue33264", "stringValue33265", "stringValue33266"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31909: Scalar2 @Directive30(argument80 : true) @Directive41 + field31910: Scalar2 @Directive30(argument80 : true) @Directive41 + field31911: [Scalar2] @Directive30(argument80 : true) @Directive41 + field31912: Scalar2 @Directive30(argument80 : true) @Directive41 @deprecated +} + +type Object6828 implements Interface36 @Directive22(argument62 : "stringValue33268") @Directive30(argument79 : "stringValue33269") @Directive44(argument97 : ["stringValue33270", "stringValue33271", "stringValue33272"]) { + field17630: Scalar2 @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31896: Scalar2 @Directive30(argument80 : true) @Directive41 + field31897: Scalar2 @Directive30(argument80 : true) @Directive41 + field31898: Scalar2 @Directive30(argument80 : true) @Directive41 + field31899: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object6829 implements Interface36 @Directive22(argument62 : "stringValue33274") @Directive30(argument79 : "stringValue33275") @Directive44(argument97 : ["stringValue33276", "stringValue33277", "stringValue33278"]) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31916: [Scalar2] @Directive30(argument80 : true) @Directive41 +} + +type Object683 @Directive20(argument58 : "stringValue3482", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3481") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3483", "stringValue3484"]) { + field3821: String + field3822: [Object480] + field3823: [Object477] + field3824: [Object658] + field3825: Object621 + field3826: Object657 + field3827: Object675 + field3828: [Object684] + field3833: [Object620] + field3834: Object1 + field3835: [Object686] +} + +type Object6830 @Directive2 @Directive22(argument62 : "stringValue33279") @Directive30(argument83 : ["stringValue33280", "stringValue33281"]) @Directive44(argument97 : ["stringValue33282", "stringValue33283", "stringValue33284"]) { + field31918(argument1905: String!): Object4499 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6831 @Directive2 @Directive22(argument62 : "stringValue33285") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33286", "stringValue33287"]) { + field31921(argument1906: InputObject1490!): [Object6832] @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6832 implements Interface36 @Directive22(argument62 : "stringValue33300") @Directive30(argument79 : "stringValue33299") @Directive44(argument97 : ["stringValue33301", "stringValue33302"]) @Directive7(argument13 : "stringValue33297", argument14 : "stringValue33296", argument16 : "stringValue33298", argument17 : "stringValue33295") { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31922: [Object6833] @Directive30(argument80 : true) @Directive41 +} + +type Object6833 @Directive22(argument62 : "stringValue33305") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33303", "stringValue33304"]) { + field31923: String @Directive30(argument80 : true) @Directive41 + field31924: String @Directive30(argument80 : true) @Directive41 + field31925: String @Directive30(argument80 : true) @Directive41 + field31926: String @Directive30(argument80 : true) @Directive41 + field31927: Scalar1 @Directive30(argument80 : true) @Directive41 +} + +type Object6834 @Directive2 @Directive22(argument62 : "stringValue33306") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33307", "stringValue33308", "stringValue33309"]) { + field31929(argument1907: String, argument1908: [String!], argument1909: [Enum950!], argument1910: String, argument1911: Boolean, argument1912: String, argument1913: Int, argument1914: String, argument1915: Int): Object6835 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6835 implements Interface92 @Directive22(argument62 : "stringValue33310") @Directive44(argument97 : ["stringValue33311", "stringValue33312", "stringValue33313"]) { + field8384: Object753! + field8385: [Object6836] +} + +type Object6836 implements Interface93 @Directive22(argument62 : "stringValue33314") @Directive44(argument97 : ["stringValue33315", "stringValue33316", "stringValue33317"]) { + field8386: String! + field8999: Object4351 +} + +type Object6837 @Directive2 @Directive22(argument62 : "stringValue33318") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33319", "stringValue33320"]) { + field31931: Object6838 @Directive30(argument80 : true) @Directive41 +} + +type Object6838 @Directive2 @Directive22(argument62 : "stringValue33321") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33322", "stringValue33323"]) { + field31932(argument1916: String, argument1917: Int, argument1918: Int, argument1919: String, argument1920: String): Object6839 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6839 implements Interface92 @Directive22(argument62 : "stringValue33324") @Directive44(argument97 : ["stringValue33325", "stringValue33326"]) @Directive8(argument21 : "stringValue33328", argument23 : "stringValue33330", argument24 : "stringValue33327", argument25 : "stringValue33329", argument27 : "stringValue33331", argument28 : true) { + field8384: Object753! + field8385: [Object6840] +} + +type Object684 @Directive20(argument58 : "stringValue3486", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3485") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3487", "stringValue3488"]) { + field3829: String + field3830: [Object685] +} + +type Object6840 implements Interface93 @Directive22(argument62 : "stringValue33332") @Directive44(argument97 : ["stringValue33333", "stringValue33334"]) { + field8386: String! + field8999: Object6841 +} + +type Object6841 implements Interface36 @Directive22(argument62 : "stringValue33335") @Directive30(argument83 : ["stringValue33336"]) @Directive44(argument97 : ["stringValue33337", "stringValue33338"]) @Directive7(argument11 : "stringValue33343", argument13 : "stringValue33341", argument14 : "stringValue33340", argument16 : "stringValue33342", argument17 : "stringValue33339", argument18 : true) { + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31933: Union232 @Directive30(argument80 : true) @Directive41 + field8372: String @Directive30(argument80 : true) @Directive41 + field8373: String @Directive30(argument80 : true) @Directive41 +} + +type Object6842 @Directive21(argument61 : "stringValue33350") @Directive22(argument62 : "stringValue33347") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33348", "stringValue33349"]) { + field31934: Enum1702 @Directive30(argument80 : true) @Directive41 +} + +type Object6843 @Directive21(argument61 : "stringValue33357") @Directive22(argument62 : "stringValue33354") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33355", "stringValue33356"]) { + field31935: String @Directive30(argument80 : true) @Directive41 + field31936: Object6844 @Directive30(argument80 : true) @Directive41 + field31938: Object6845 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33362") @Directive41 +} + +type Object6844 @Directive22(argument62 : "stringValue33358") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33359", "stringValue33360"]) { + field31937(argument1921: Int, argument1922: Int, argument1923: String, argument1924: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33361") +} + +type Object6845 implements Interface36 @Directive22(argument62 : "stringValue33363") @Directive30(argument85 : "stringValue33365", argument86 : "stringValue33364") @Directive44(argument97 : ["stringValue33369", "stringValue33370"]) @Directive7(argument14 : "stringValue33367", argument16 : "stringValue33368", argument17 : "stringValue33366") { + field10614: Object1820 @Directive14(argument51 : "stringValue33372") @Directive30(argument80 : true) @Directive41 + field12392: String @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive30(argument80 : true) @Directive41 + field31764: [Object6847!] @Directive30(argument80 : true) @Directive41 + field31939: String @Directive3(argument3 : "stringValue33371") @Directive30(argument80 : true) @Directive41 + field31940: String @Directive30(argument80 : true) @Directive41 + field31941: Boolean @Directive30(argument80 : true) @Directive41 + field31942: Object6846 @Directive30(argument80 : true) @Directive41 + field31990: [Object6855!] @Directive30(argument80 : true) @Directive41 + field9024: String @Directive30(argument80 : true) @Directive41 +} + +type Object6846 @Directive20(argument58 : "stringValue33374", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33373") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33375", "stringValue33376"]) { + field31943: String @Directive30(argument80 : true) @Directive41 + field31944: String @Directive30(argument80 : true) @Directive41 + field31945: Int @Directive30(argument80 : true) @Directive41 +} + +type Object6847 @Directive20(argument58 : "stringValue33378", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue33377") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33379", "stringValue33380"]) { + field31946: Enum1703 @Directive30(argument80 : true) @Directive41 + field31947: Union233 @Directive30(argument80 : true) @Directive41 +} + +type Object6848 @Directive21(argument61 : "stringValue33389") @Directive22(argument62 : "stringValue33388") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33390", "stringValue33391"]) { + field31948: String @Directive30(argument80 : true) @Directive41 + field31949: Object1820 @Directive14(argument51 : "stringValue33392") @Directive30(argument80 : true) @Directive41 +} + +type Object6849 @Directive21(argument61 : "stringValue33394") @Directive22(argument62 : "stringValue33393") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33395", "stringValue33396"]) { + field31950: String @Directive30(argument80 : true) @Directive41 + field31951: String @Directive30(argument80 : true) @Directive41 +} + +type Object685 @Directive20(argument58 : "stringValue3490", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3489") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3491", "stringValue3492"]) { + field3831: String + field3832: Enum204 +} + +type Object6850 @Directive21(argument61 : "stringValue33398") @Directive22(argument62 : "stringValue33397") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33399", "stringValue33400"]) { + field31952: [Object6851] @Directive30(argument80 : true) @Directive41 +} + +type Object6851 @Directive22(argument62 : "stringValue33401") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33402", "stringValue33403"]) { + field31953: String @Directive30(argument80 : true) @Directive41 + field31954: String @Directive30(argument80 : true) @Directive41 + field31955: String @Directive30(argument80 : true) @Directive41 + field31956: Object6852 @Directive30(argument80 : true) @Directive41 +} + +type Object6852 @Directive22(argument62 : "stringValue33404") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33405", "stringValue33406"]) { + field31957: Scalar2 @Directive30(argument80 : true) @Directive41 + field31958: Scalar2 @Directive30(argument80 : true) @Directive41 +} + +type Object6853 @Directive21(argument61 : "stringValue33408") @Directive22(argument62 : "stringValue33407") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33409", "stringValue33410"]) { + field31959: String @Directive30(argument80 : true) @Directive41 +} + +type Object6854 @Directive21(argument61 : "stringValue33412") @Directive22(argument62 : "stringValue33411") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33413", "stringValue33414"]) { + field31960: String @Directive30(argument80 : true) @Directive41 + field31961: String @Directive30(argument80 : true) @Directive41 + field31962: [Object6855!] @Directive30(argument80 : true) @Directive41 + field31972: String @Directive30(argument80 : true) @Directive41 +} + +type Object6855 @Directive22(argument62 : "stringValue33415") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33416", "stringValue33417"]) { + field31963: String @Directive30(argument80 : true) @Directive41 + field31964: String @Directive30(argument80 : true) @Directive41 + field31965: String @Directive30(argument80 : true) @Directive41 + field31966: String @Directive30(argument80 : true) @Directive41 + field31967: String @Directive30(argument80 : true) @Directive41 + field31968: String @Directive30(argument80 : true) @Directive41 + field31969: Object6856 @Directive14(argument51 : "stringValue33418") @Directive30(argument80 : true) @Directive41 +} + +type Object6856 @Directive22(argument62 : "stringValue33419") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33420", "stringValue33421"]) { + field31970: Object1820 @Directive30(argument80 : true) @Directive41 + field31971: Object1820 @Directive30(argument80 : true) @Directive41 +} + +type Object6857 @Directive21(argument61 : "stringValue33423") @Directive22(argument62 : "stringValue33422") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33424", "stringValue33425"]) { + field31973: String @Directive30(argument80 : true) @Directive41 + field31974: Object1820 @Directive14(argument51 : "stringValue33426") @Directive30(argument80 : true) @Directive41 + field31975: Enum1704 @Directive30(argument80 : true) @Directive41 +} + +type Object6858 @Directive21(argument61 : "stringValue33432") @Directive22(argument62 : "stringValue33431") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33433", "stringValue33434"]) { + field31976: String @Directive30(argument80 : true) @Directive41 +} + +type Object6859 @Directive21(argument61 : "stringValue33436") @Directive22(argument62 : "stringValue33435") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33437", "stringValue33438"]) { + field31977: String @Directive30(argument80 : true) @Directive41 +} + +type Object686 @Directive20(argument58 : "stringValue3498", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3497") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3499", "stringValue3500"]) { + field3836: String + field3837: String + field3838: String + field3839: String + field3840: String + field3841: String + field3842: String + field3843: String + field3844: String + field3845: Object1 +} + +type Object6860 @Directive21(argument61 : "stringValue33440") @Directive22(argument62 : "stringValue33439") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33441", "stringValue33442"]) { + field31978: [Object6861!] @Directive30(argument80 : true) @Directive41 + field31981: Enum1705 @Directive30(argument80 : true) @Directive41 + field31982: String @Directive30(argument80 : true) @Directive41 + field31983: String @Directive30(argument80 : true) @Directive41 +} + +type Object6861 @Directive22(argument62 : "stringValue33443") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33444", "stringValue33445"]) { + field31979: String @Directive30(argument80 : true) @Directive41 + field31980: Enum1705 @Directive30(argument80 : true) @Directive41 +} + +type Object6862 @Directive21(argument61 : "stringValue33451") @Directive22(argument62 : "stringValue33450") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33452", "stringValue33453"]) { + field31984: String @Directive30(argument80 : true) @Directive41 + field31985: [Object6863!] @Directive30(argument80 : true) @Directive41 +} + +type Object6863 @Directive22(argument62 : "stringValue33454") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33455", "stringValue33456"]) { + field31986: String @Directive30(argument80 : true) @Directive41 + field31987: String @Directive30(argument80 : true) @Directive41 +} + +type Object6864 @Directive21(argument61 : "stringValue33458") @Directive22(argument62 : "stringValue33457") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33459", "stringValue33460"]) { + field31988: String @Directive30(argument80 : true) @Directive41 + field31989: Enum1706 @Directive30(argument80 : true) @Directive41 +} + +type Object6865 @Directive21(argument61 : "stringValue33468") @Directive22(argument62 : "stringValue33465") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33466", "stringValue33467"]) { + field31991: String @Directive30(argument80 : true) @Directive41 + field31992: String @Directive30(argument80 : true) @Directive41 + field31993: String @Directive30(argument80 : true) @Directive41 + field31994: Int @Directive30(argument80 : true) @Directive41 + field31995: [String] @Directive30(argument80 : true) @Directive41 + field31996: Int @Directive30(argument80 : true) @Directive41 + field31997: [String] @Directive30(argument80 : true) @Directive41 + field31998: [String] @Directive30(argument80 : true) @Directive41 + field31999: String @Directive30(argument80 : true) @Directive41 + field32000: String @Directive30(argument80 : true) @Directive41 + field32001: Object6866 @Directive30(argument80 : true) @Directive41 +} + +type Object6866 @Directive22(argument62 : "stringValue33469") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33470", "stringValue33471"]) { + field32002(argument1925: Int, argument1926: Int, argument1927: String, argument1928: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33472") + field32003(argument1929: Int, argument1930: Int, argument1931: String, argument1932: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33473") + field32004(argument1933: Int, argument1934: Int, argument1935: String, argument1936: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33474") + field32005(argument1937: Int, argument1938: Int, argument1939: String, argument1940: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33475") +} + +type Object6867 @Directive21(argument61 : "stringValue33479") @Directive22(argument62 : "stringValue33476") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33477", "stringValue33478"]) { + field32006: String @Directive30(argument80 : true) @Directive41 + field32007: String @Directive30(argument80 : true) @Directive41 + field32008: Int @Directive30(argument80 : true) @Directive41 + field32009: String @Directive30(argument80 : true) @Directive41 + field32010: Object6868 @Directive30(argument80 : true) @Directive41 +} + +type Object6868 @Directive22(argument62 : "stringValue33480") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33481", "stringValue33482"]) { + field32011(argument1941: Int, argument1942: Int, argument1943: String, argument1944: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33483") + field32012(argument1945: Int, argument1946: Int, argument1947: String, argument1948: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33484") + field32013(argument1949: Int, argument1950: Int, argument1951: String, argument1952: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33485") + field32014(argument1953: Int, argument1954: Int, argument1955: String, argument1956: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33486") + field32015(argument1957: Int, argument1958: Int, argument1959: String, argument1960: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33487") +} + +type Object6869 @Directive21(argument61 : "stringValue33491") @Directive22(argument62 : "stringValue33488") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33489", "stringValue33490"]) { + field32016: Enum1707 @Directive30(argument80 : true) @Directive41 +} + +type Object687 @Directive20(argument58 : "stringValue3502", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3501") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3503", "stringValue3504"]) { + field3846: String + field3847: Boolean + field3848: String + field3849: Object675 + field3850: Float + field3851: Float + field3852: Object480 + field3853: String + field3854: [Object688] + field3873: Object657 + field3874: String + field3875: Object621 + field3876: Object1 + field3877: Object621 + field3878: Boolean + field3879: Object621 + field3880: [Object2] + field3881: Object650 + field3882: Object621 + field3883: Object621 + field3884: Object1 + field3885: Object1 + field3886: Object1 + field3887: Object1 + field3888: Object1 + field3889: Object1 + field3890: Object1 +} + +type Object6870 @Directive21(argument61 : "stringValue33498") @Directive22(argument62 : "stringValue33495") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33496", "stringValue33497"]) { + field32017: String @Directive30(argument80 : true) @Directive41 + field32018: String @Directive30(argument80 : true) @Directive41 + field32019: String @Directive30(argument80 : true) @Directive41 + field32020: String @Directive30(argument80 : true) @Directive41 + field32021: String @Directive30(argument80 : true) @Directive41 + field32022: String @Directive30(argument80 : true) @Directive41 + field32023: String @Directive30(argument80 : true) @Directive41 + field32024: String @Directive30(argument80 : true) @Directive41 + field32025: [String] @Directive30(argument80 : true) @Directive41 + field32026: [String] @Directive30(argument80 : true) @Directive41 + field32027: Boolean @Directive30(argument80 : true) @Directive41 + field32028: Int @Directive30(argument80 : true) @Directive41 + field32029: String @Directive30(argument80 : true) @Directive41 + field32030: Object6871 @Directive30(argument80 : true) @Directive41 +} + +type Object6871 @Directive22(argument62 : "stringValue33499") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33500", "stringValue33501"]) { + field32031(argument1961: Int, argument1962: Int, argument1963: String, argument1964: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33502") + field32032(argument1965: Int, argument1966: Int, argument1967: String, argument1968: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33503") + field32033(argument1969: Int, argument1970: Int, argument1971: String, argument1972: String): Object1553 @Directive30(argument80 : true) @Directive41 @Directive6(argument9 : "stringValue33504") + field32034: Object6841 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33505") @Directive41 +} + +type Object6872 @Directive21(argument61 : "stringValue33509") @Directive22(argument62 : "stringValue33506") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33507", "stringValue33508"]) { + field32035: Enum1708 @Directive30(argument80 : true) @Directive41 +} + +type Object6873 @Directive2 @Directive22(argument62 : "stringValue33513") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33514", "stringValue33515", "stringValue33516"]) { + field32037(argument1973: String, argument1974: Boolean, argument1975: String): [Object6874] @Directive18 @Directive30(argument80 : true) @Directive41 + field32043(argument1976: ID!): Object4475 @Directive18 @Directive30(argument80 : true) @Directive41 +} + +type Object6874 implements Interface36 @Directive22(argument62 : "stringValue33517") @Directive30(argument82 : true) @Directive44(argument97 : ["stringValue33518", "stringValue33519", "stringValue33520"]) @Directive7(argument10 : "stringValue33524", argument12 : "stringValue33526", argument13 : "stringValue33523", argument14 : "stringValue33522", argument16 : "stringValue33525", argument17 : "stringValue33521", argument18 : true) { + field19488: [Object6875] @Directive3(argument3 : "stringValue33529") @Directive30(argument80 : true) @Directive41 + field2312: ID! @Directive3(argument3 : "stringValue33527") @Directive30(argument80 : true) @Directive41 + field8994: String @Directive3(argument3 : "stringValue33528") @Directive30(argument80 : true) @Directive41 +} + +type Object6875 @Directive22(argument62 : "stringValue33530") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33531", "stringValue33532", "stringValue33533"]) { + field32038: String @Directive30(argument80 : true) @Directive41 + field32039: String @Directive30(argument80 : true) @Directive41 + field32040: String @Directive30(argument80 : true) @Directive41 + field32041: String @Directive30(argument80 : true) @Directive41 + field32042: ID @Directive3(argument3 : "stringValue33534") @Directive30(argument80 : true) @Directive41 +} + +type Object6876 @Directive2 @Directive22(argument62 : "stringValue33535") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33536", "stringValue33537"]) { + field32045(argument1977: [Scalar2], argument1978: Scalar4, argument1979: Scalar4, argument1980: [Enum1709], argument1981: [Enum1710], argument1982: InputObject1491, argument1983: Int, argument1984: String, argument1985: String, argument1986: Int): Object6877 @Directive30(argument80 : true) @Directive40 +} + +type Object6877 implements Interface92 @Directive22(argument62 : "stringValue33547") @Directive44(argument97 : ["stringValue33548", "stringValue33549"]) { + field8384: Object753! + field8385: [Object6878] +} + +type Object6878 implements Interface93 @Directive22(argument62 : "stringValue33550") @Directive44(argument97 : ["stringValue33551", "stringValue33552"]) { + field8386: String! + field8999: Object6879 +} + +type Object6879 implements Interface36 @Directive22(argument62 : "stringValue33553") @Directive30(argument79 : "stringValue33554") @Directive44(argument97 : ["stringValue33555", "stringValue33556"]) { + field10398: Enum1709 @Directive30(argument80 : true) @Directive41 + field10437: String @Directive30(argument80 : true) @Directive40 + field2312: ID! @Directive30(argument80 : true) @Directive40 + field29655: String @Directive30(argument80 : true) @Directive40 + field32046: Enum1710 @Directive30(argument80 : true) @Directive41 + field32047: Object438 @Directive30(argument80 : true) @Directive41 + field32048: Object6880 @Directive30(argument80 : true) @Directive41 + field32053: Object2420 @Directive30(argument80 : true) @Directive4(argument5 : "stringValue33560") @Directive40 + field32054: [Object6881] @Directive30(argument80 : true) @Directive41 +} + +type Object688 @Directive20(argument58 : "stringValue3506", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3505") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3507", "stringValue3508"]) { + field3855: Enum205 + field3856: String + field3857: [Object689] + field3869: Object621 + field3870: Int + field3871: String + field3872: Object1 +} + +type Object6880 @Directive22(argument62 : "stringValue33557") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33558", "stringValue33559"]) { + field32049: Scalar4 @Directive30(argument80 : true) @Directive41 + field32050: Scalar4 @Directive30(argument80 : true) @Directive41 + field32051: Scalar4 @Directive30(argument80 : true) @Directive41 + field32052: Scalar4 @Directive30(argument80 : true) @Directive41 +} + +type Object6881 @Directive22(argument62 : "stringValue33561") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33562", "stringValue33563"]) { + field32055: Object6882 @Directive30(argument80 : true) @Directive40 + field32061: Object438 @Directive30(argument80 : true) @Directive41 +} + +type Object6882 @Directive22(argument62 : "stringValue33564") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33565", "stringValue33566"]) @Directive45(argument98 : ["stringValue33567", "stringValue33568"]) { + field32056: ID! @Directive30(argument80 : true) @Directive40 + field32057: String @Directive30(argument80 : true) @Directive40 + field32058: Enum384 @Directive30(argument80 : true) @Directive41 + field32059: String @Directive30(argument80 : true) @Directive40 + field32060: Interface97 @Directive30(argument80 : true) @Directive41 +} + +type Object6883 @Directive2 @Directive22(argument62 : "stringValue33569") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue33570"]) { + field32063(argument1987: [InputObject1492]): [Object548] @Directive18(argument56 : "stringValue33571") @Directive30(argument80 : true) @Directive41 +} + +type Object6884 @Directive44(argument97 : ["stringValue33574"]) { + field32065(argument1988: InputObject1493!): Object6885 @Directive35(argument89 : "stringValue33576", argument90 : true, argument91 : "stringValue33575", argument92 : 510, argument93 : "stringValue33577", argument94 : false) + field32126: Object6896 @Directive35(argument89 : "stringValue33610", argument90 : true, argument91 : "stringValue33609", argument92 : 511, argument93 : "stringValue33611", argument94 : false) + field32128: Object6897 @Directive35(argument89 : "stringValue33615", argument90 : true, argument91 : "stringValue33614", argument92 : 512, argument93 : "stringValue33616", argument94 : false) +} + +type Object6885 @Directive21(argument61 : "stringValue33580") @Directive44(argument97 : ["stringValue33579"]) { + field32066: Object6886 +} + +type Object6886 @Directive21(argument61 : "stringValue33582") @Directive44(argument97 : ["stringValue33581"]) { + field32067: Scalar2! + field32068: [Object6887!] + field32102: Object6894 + field32123: Int! + field32124: Enum1717! + field32125: Enum1718 +} + +type Object6887 @Directive21(argument61 : "stringValue33584") @Directive44(argument97 : ["stringValue33583"]) { + field32069: Object6888 + field32072: Object6889! + field32096: [Object6893!]! + field32101: Scalar4 +} + +type Object6888 @Directive21(argument61 : "stringValue33586") @Directive44(argument97 : ["stringValue33585"]) { + field32070: String! + field32071: Int +} + +type Object6889 @Directive21(argument61 : "stringValue33588") @Directive44(argument97 : ["stringValue33587"]) { + field32073: Enum1711! + field32074: String! + field32075: Object6890! + field32080: Scalar3 + field32081: String + field32082: String + field32083: String + field32084: String + field32085: Object6892 + field32093: String @deprecated + field32094: String + field32095: Enum1712 +} + +type Object689 @Directive20(argument58 : "stringValue3514", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3513") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3515", "stringValue3516"]) { + field3858: String + field3859: String + field3860: Float + field3861: Float + field3862: Int + field3863: [String] + field3864: String + field3865: String + field3866: String + field3867: String + field3868: [String] +} + +type Object6890 @Directive21(argument61 : "stringValue33591") @Directive44(argument97 : ["stringValue33590"]) { + field32076: Object6891 + field32079: String +} + +type Object6891 @Directive21(argument61 : "stringValue33593") @Directive44(argument97 : ["stringValue33592"]) { + field32077: String + field32078: String +} + +type Object6892 @Directive21(argument61 : "stringValue33595") @Directive44(argument97 : ["stringValue33594"]) { + field32086: String + field32087: String + field32088: String + field32089: String + field32090: String + field32091: String + field32092: String +} + +type Object6893 @Directive21(argument61 : "stringValue33598") @Directive44(argument97 : ["stringValue33597"]) { + field32097: String + field32098: Enum1713! + field32099: Float + field32100: Scalar4 +} + +type Object6894 @Directive21(argument61 : "stringValue33601") @Directive44(argument97 : ["stringValue33600"]) { + field32103: Object6895! + field32122: Object6888 +} + +type Object6895 @Directive21(argument61 : "stringValue33603") @Directive44(argument97 : ["stringValue33602"]) { + field32104: Enum1714! + field32105: String! + field32106: Enum1715! + field32107: String + field32108: String @deprecated + field32109: String + field32110: Scalar3 + field32111: String + field32112: String + field32113: Object6892 + field32114: Boolean + field32115: Object6892 + field32116: String + field32117: String + field32118: String + field32119: String + field32120: Enum1716 + field32121: Boolean +} + +type Object6896 @Directive21(argument61 : "stringValue33613") @Directive44(argument97 : ["stringValue33612"]) { + field32127: [Object4560]! +} + +type Object6897 @Directive21(argument61 : "stringValue33618") @Directive44(argument97 : ["stringValue33617"]) { + field32129: [Object6898]! +} + +type Object6898 @Directive21(argument61 : "stringValue33620") @Directive44(argument97 : ["stringValue33619"]) { + field32130: String! + field32131: [Object6899]! +} + +type Object6899 @Directive21(argument61 : "stringValue33622") @Directive44(argument97 : ["stringValue33621"]) { + field32132: String! + field32133: String! +} + +type Object69 @Directive21(argument61 : "stringValue294") @Directive44(argument97 : ["stringValue293"]) { + field450: String + field451: String + field452: String + field453: String + field454: Enum29 + field455: String + field456: Enum32 +} + +type Object690 @Directive20(argument58 : "stringValue3518", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3517") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3519", "stringValue3520"]) { + field3891: String + field3892: Object621 + field3893: [String] + field3894: Float + field3895: Float + field3896: [Object688] + field3897: Object1 + field3898: String + field3899: Object624 +} + +type Object6900 @Directive44(argument97 : ["stringValue33623"]) { + field32135: Object6901 @Directive35(argument89 : "stringValue33625", argument90 : true, argument91 : "stringValue33624", argument92 : 513, argument93 : "stringValue33626", argument94 : false) + field32154: Object6905 @Directive35(argument89 : "stringValue33637", argument90 : true, argument91 : "stringValue33636", argument92 : 514, argument93 : "stringValue33638", argument94 : false) + field32156: Object6906 @Directive35(argument89 : "stringValue33642", argument90 : true, argument91 : "stringValue33641", argument92 : 515, argument93 : "stringValue33643", argument94 : false) + field32158: Object6907 @Directive35(argument89 : "stringValue33647", argument90 : true, argument91 : "stringValue33646", argument92 : 516, argument93 : "stringValue33648", argument94 : false) + field32160: Object6908 @Directive35(argument89 : "stringValue33652", argument90 : false, argument91 : "stringValue33651", argument92 : 517, argument93 : "stringValue33653", argument94 : false) + field32162: Object6909 @Directive35(argument89 : "stringValue33657", argument90 : true, argument91 : "stringValue33656", argument92 : 518, argument93 : "stringValue33658", argument94 : false) + field32164(argument1989: InputObject1494!): Object6910 @Directive35(argument89 : "stringValue33662", argument90 : true, argument91 : "stringValue33661", argument92 : 519, argument93 : "stringValue33663", argument94 : false) + field32166(argument1990: InputObject1495!): Object6911 @Directive35(argument89 : "stringValue33668", argument90 : false, argument91 : "stringValue33667", argument92 : 520, argument93 : "stringValue33669", argument94 : false) + field32168(argument1991: InputObject1496!): Object6912 @Directive35(argument89 : "stringValue33674", argument90 : true, argument91 : "stringValue33673", argument92 : 521, argument93 : "stringValue33675", argument94 : false) + field32170(argument1992: InputObject1497!): Object6913 @Directive35(argument89 : "stringValue33680", argument90 : true, argument91 : "stringValue33679", argument92 : 522, argument93 : "stringValue33681", argument94 : false) + field32172(argument1993: InputObject1498!): Object6914 @Directive35(argument89 : "stringValue33686", argument90 : true, argument91 : "stringValue33685", argument92 : 523, argument93 : "stringValue33687", argument94 : false) +} + +type Object6901 @Directive21(argument61 : "stringValue33628") @Directive44(argument97 : ["stringValue33627"]) { + field32136: [Object6902!]! +} + +type Object6902 @Directive21(argument61 : "stringValue33630") @Directive44(argument97 : ["stringValue33629"]) { + field32137: Scalar2! + field32138: Scalar2! + field32139: String! + field32140: Enum1719! + field32141: Object6903 + field32149: [Object6904!]! +} + +type Object6903 @Directive21(argument61 : "stringValue33633") @Directive44(argument97 : ["stringValue33632"]) { + field32142: Scalar2! + field32143: String + field32144: String + field32145: String + field32146: Boolean! + field32147: Boolean! + field32148: Boolean! +} + +type Object6904 @Directive21(argument61 : "stringValue33635") @Directive44(argument97 : ["stringValue33634"]) { + field32150: String! + field32151: String! + field32152: String + field32153: String +} + +type Object6905 @Directive21(argument61 : "stringValue33640") @Directive44(argument97 : ["stringValue33639"]) { + field32155: [Object4570!]! +} + +type Object6906 @Directive21(argument61 : "stringValue33645") @Directive44(argument97 : ["stringValue33644"]) { + field32157: [Object4566!]! +} + +type Object6907 @Directive21(argument61 : "stringValue33650") @Directive44(argument97 : ["stringValue33649"]) { + field32159: [Object4574!]! +} + +type Object6908 @Directive21(argument61 : "stringValue33655") @Directive44(argument97 : ["stringValue33654"]) { + field32161: Object6903 +} + +type Object6909 @Directive21(argument61 : "stringValue33660") @Directive44(argument97 : ["stringValue33659"]) { + field32163: Object4566 +} + +type Object691 @Directive20(argument58 : "stringValue3522", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3521") @Directive31 @Directive44(argument97 : ["stringValue3523", "stringValue3524"]) { + field3900: String + field3901: String + field3902: String + field3903: String + field3904: String + field3905: Object692 +} + +type Object6910 @Directive21(argument61 : "stringValue33666") @Directive44(argument97 : ["stringValue33665"]) { + field32165: Object4570 +} + +type Object6911 @Directive21(argument61 : "stringValue33672") @Directive44(argument97 : ["stringValue33671"]) { + field32167: Object4566 +} + +type Object6912 @Directive21(argument61 : "stringValue33678") @Directive44(argument97 : ["stringValue33677"]) { + field32169: Object4566 +} + +type Object6913 @Directive21(argument61 : "stringValue33684") @Directive44(argument97 : ["stringValue33683"]) { + field32171: Scalar1! +} + +type Object6914 @Directive21(argument61 : "stringValue33699") @Directive44(argument97 : ["stringValue33698"]) { + field32173: [Object6915!]! +} + +type Object6915 @Directive21(argument61 : "stringValue33701") @Directive44(argument97 : ["stringValue33700"]) { + field32174: Scalar2! + field32175: String + field32176: String + field32177: String + field32178: Enum1724! + field32179: Enum1725! + field32180: String + field32181: String + field32182: String! + field32183: Object6916 +} + +type Object6916 @Directive21(argument61 : "stringValue33704") @Directive44(argument97 : ["stringValue33703"]) { + field32184: String + field32185: [String] +} + +type Object6917 @Directive44(argument97 : ["stringValue33705"]) { + field32187: Object6918 @Directive35(argument89 : "stringValue33707", argument90 : true, argument91 : "stringValue33706", argument93 : "stringValue33708", argument94 : false) +} + +type Object6918 @Directive21(argument61 : "stringValue33710") @Directive44(argument97 : ["stringValue33709"]) { + field32188: Boolean! +} + +type Object6919 @Directive44(argument97 : ["stringValue33711"]) { + field32190(argument1994: InputObject1503!): Object6920 @Directive35(argument89 : "stringValue33713", argument90 : true, argument91 : "stringValue33712", argument92 : 524, argument93 : "stringValue33714", argument94 : false) + field32194(argument1995: InputObject1504!): Object6921 @Directive35(argument89 : "stringValue33720", argument90 : true, argument91 : "stringValue33719", argument92 : 525, argument93 : "stringValue33721", argument94 : false) + field32196(argument1996: InputObject1507!): Object6922 @Directive35(argument89 : "stringValue33729", argument90 : true, argument91 : "stringValue33728", argument92 : 526, argument93 : "stringValue33730", argument94 : false) + field32198(argument1997: InputObject1508!): Object4603 @Directive35(argument89 : "stringValue33735", argument90 : true, argument91 : "stringValue33734", argument92 : 527, argument93 : "stringValue33736", argument94 : false) + field32199(argument1998: InputObject1509!): Object6923 @Directive35(argument89 : "stringValue33739", argument90 : false, argument91 : "stringValue33738", argument92 : 528, argument93 : "stringValue33740", argument94 : false) + field32203(argument1999: InputObject1511!): Object6924 @Directive35(argument89 : "stringValue33746", argument90 : false, argument91 : "stringValue33745", argument92 : 529, argument93 : "stringValue33747", argument94 : false) + field32209(argument2000: InputObject1512!): Object6924 @Directive35(argument89 : "stringValue33752", argument90 : false, argument91 : "stringValue33751", argument92 : 530, argument93 : "stringValue33753", argument94 : false) + field32210(argument2001: InputObject1513!): Object4602 @Directive35(argument89 : "stringValue33756", argument90 : false, argument91 : "stringValue33755", argument92 : 531, argument93 : "stringValue33757", argument94 : false) + field32211(argument2002: InputObject1514!): Object4602 @Directive35(argument89 : "stringValue33760", argument90 : true, argument91 : "stringValue33759", argument92 : 532, argument93 : "stringValue33761", argument94 : false) + field32212(argument2003: InputObject1515!): Object6925 @Directive35(argument89 : "stringValue33764", argument90 : true, argument91 : "stringValue33763", argument92 : 533, argument93 : "stringValue33765", argument94 : false) + field32214(argument2004: InputObject1516!): Object6926 @Directive35(argument89 : "stringValue33771", argument90 : true, argument91 : "stringValue33770", argument92 : 534, argument93 : "stringValue33772", argument94 : false) + field32218(argument2005: InputObject1517!): Object4606 @Directive35(argument89 : "stringValue33777", argument90 : true, argument91 : "stringValue33776", argument92 : 535, argument93 : "stringValue33778", argument94 : false) + field32219(argument2006: InputObject1518!): Object4585 @Directive35(argument89 : "stringValue33781", argument90 : true, argument91 : "stringValue33780", argument92 : 536, argument93 : "stringValue33782", argument94 : false) + field32220: Object6927 @Directive35(argument89 : "stringValue33785", argument90 : true, argument91 : "stringValue33784", argument92 : 537, argument93 : "stringValue33786", argument94 : false) + field32229(argument2007: InputObject1519!): Object6928 @Directive35(argument89 : "stringValue33790", argument90 : false, argument91 : "stringValue33789", argument92 : 538, argument93 : "stringValue33791", argument94 : false) + field32241(argument2008: InputObject1520!): Object6931 @Directive35(argument89 : "stringValue33800", argument90 : false, argument91 : "stringValue33799", argument92 : 539, argument93 : "stringValue33801", argument94 : false) + field32243(argument2009: InputObject1521!): Object6923 @Directive35(argument89 : "stringValue33806", argument90 : true, argument91 : "stringValue33805", argument92 : 540, argument93 : "stringValue33807", argument94 : false) + field32244(argument2010: InputObject1522!): Object6923 @Directive35(argument89 : "stringValue33810", argument90 : true, argument91 : "stringValue33809", argument92 : 541, argument93 : "stringValue33811", argument94 : false) + field32245(argument2011: InputObject1523!): Object4602 @Directive35(argument89 : "stringValue33814", argument90 : true, argument91 : "stringValue33813", argument93 : "stringValue33815", argument94 : false) + field32246(argument2012: InputObject1524!): Object6932 @Directive35(argument89 : "stringValue33818", argument90 : true, argument91 : "stringValue33817", argument92 : 542, argument93 : "stringValue33819", argument94 : false) + field32250(argument2013: InputObject1525!): Object6933 @Directive35(argument89 : "stringValue33824", argument90 : true, argument91 : "stringValue33823", argument92 : 543, argument93 : "stringValue33825", argument94 : false) + field32255(argument2014: InputObject1526!): Object6934 @Directive35(argument89 : "stringValue33830", argument90 : false, argument91 : "stringValue33829", argument92 : 544, argument93 : "stringValue33831", argument94 : false) + field32259(argument2015: InputObject1527!): Object6934 @Directive35(argument89 : "stringValue33836", argument90 : false, argument91 : "stringValue33835", argument92 : 545, argument93 : "stringValue33837", argument94 : false) + field32260(argument2016: InputObject1528!): Object6934 @Directive35(argument89 : "stringValue33840", argument90 : false, argument91 : "stringValue33839", argument92 : 546, argument93 : "stringValue33841", argument94 : false) + field32261(argument2017: InputObject1529!): Object6935 @Directive35(argument89 : "stringValue33844", argument90 : false, argument91 : "stringValue33843", argument92 : 547, argument93 : "stringValue33845", argument94 : false) + field32265(argument2018: InputObject1530!): Object6936 @Directive35(argument89 : "stringValue33850", argument90 : false, argument91 : "stringValue33849", argument92 : 548, argument93 : "stringValue33851", argument94 : false) + field32269(argument2019: InputObject1531!): Object6934 @Directive35(argument89 : "stringValue33856", argument90 : false, argument91 : "stringValue33855", argument92 : 549, argument93 : "stringValue33857", argument94 : false) +} + +type Object692 @Directive20(argument58 : "stringValue3526", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3525") @Directive31 @Directive44(argument97 : ["stringValue3527", "stringValue3528"]) { + field3906: [Object693] + field3914: String + field3915: String + field3916: [Object694] + field3927: String +} + +type Object6920 @Directive21(argument61 : "stringValue33718") @Directive44(argument97 : ["stringValue33717"]) { + field32191: Boolean + field32192: Boolean + field32193: String +} + +type Object6921 @Directive21(argument61 : "stringValue33727") @Directive44(argument97 : ["stringValue33726"]) { + field32195: String +} + +type Object6922 @Directive21(argument61 : "stringValue33733") @Directive44(argument97 : ["stringValue33732"]) { + field32197: String! +} + +type Object6923 @Directive21(argument61 : "stringValue33744") @Directive44(argument97 : ["stringValue33743"]) { + field32200: [Object4594] + field32201: Boolean + field32202: String +} + +type Object6924 @Directive21(argument61 : "stringValue33750") @Directive44(argument97 : ["stringValue33749"]) { + field32204: Scalar1 + field32205: [Object4586] + field32206: Boolean + field32207: String + field32208: Scalar1 +} + +type Object6925 @Directive21(argument61 : "stringValue33769") @Directive44(argument97 : ["stringValue33768"]) { + field32213: Scalar1 +} + +type Object6926 @Directive21(argument61 : "stringValue33775") @Directive44(argument97 : ["stringValue33774"]) { + field32215: [Object4586]! + field32216: Object4586! + field32217: [Object4586]! +} + +type Object6927 @Directive21(argument61 : "stringValue33788") @Directive44(argument97 : ["stringValue33787"]) { + field32221: Boolean! + field32222: Boolean! + field32223: Scalar1! + field32224: Scalar2 + field32225: Boolean! + field32226: Boolean! + field32227: Boolean! + field32228: [Enum1030]! +} + +type Object6928 @Directive21(argument61 : "stringValue33794") @Directive44(argument97 : ["stringValue33793"]) { + field32230: Object6929 + field32239: Boolean + field32240: String +} + +type Object6929 @Directive21(argument61 : "stringValue33796") @Directive44(argument97 : ["stringValue33795"]) { + field32231: Scalar2! + field32232: [Object6930] +} + +type Object693 @Directive22(argument62 : "stringValue3529") @Directive31 @Directive44(argument97 : ["stringValue3530", "stringValue3531"]) { + field3907: String + field3908: String + field3909: String + field3910: Int + field3911: String + field3912: String + field3913: String +} + +type Object6930 @Directive21(argument61 : "stringValue33798") @Directive44(argument97 : ["stringValue33797"]) { + field32233: Scalar2 + field32234: String + field32235: String + field32236: String + field32237: String + field32238: Scalar2 +} + +type Object6931 @Directive21(argument61 : "stringValue33804") @Directive44(argument97 : ["stringValue33803"]) { + field32242: Scalar2 +} + +type Object6932 @Directive21(argument61 : "stringValue33822") @Directive44(argument97 : ["stringValue33821"]) { + field32247: [Object4597] + field32248: Boolean + field32249: String +} + +type Object6933 @Directive21(argument61 : "stringValue33828") @Directive44(argument97 : ["stringValue33827"]) { + field32251: [Object4605] + field32252: [Object4597] + field32253: Boolean + field32254: String +} + +type Object6934 @Directive21(argument61 : "stringValue33834") @Directive44(argument97 : ["stringValue33833"]) { + field32256: [Object4599] + field32257: Boolean + field32258: String +} + +type Object6935 @Directive21(argument61 : "stringValue33848") @Directive44(argument97 : ["stringValue33847"]) { + field32262: [Object4589] + field32263: Boolean + field32264: String +} + +type Object6936 @Directive21(argument61 : "stringValue33854") @Directive44(argument97 : ["stringValue33853"]) { + field32266: [Object4587] + field32267: Boolean + field32268: String +} + +type Object6937 @Directive44(argument97 : ["stringValue33859"]) { + field32271(argument2020: InputObject1532!): Object6938 @Directive35(argument89 : "stringValue33861", argument90 : true, argument91 : "stringValue33860", argument92 : 550, argument93 : "stringValue33862", argument94 : false) + field32284: Object6940 @Directive35(argument89 : "stringValue33869", argument90 : false, argument91 : "stringValue33868", argument92 : 551, argument93 : "stringValue33870", argument94 : false) + field32295(argument2021: InputObject1533!): Object6945 @Directive35(argument89 : "stringValue33882", argument90 : false, argument91 : "stringValue33881", argument92 : 552, argument93 : "stringValue33883", argument94 : false) + field32303(argument2022: InputObject1534!): Object6947 @Directive35(argument89 : "stringValue33890", argument90 : true, argument91 : "stringValue33889", argument92 : 553, argument93 : "stringValue33891", argument94 : false) + field32324(argument2023: InputObject1535!): Object6953 @Directive35(argument89 : "stringValue33908", argument90 : true, argument91 : "stringValue33907", argument92 : 554, argument93 : "stringValue33909", argument94 : false) + field32353(argument2024: InputObject1537!): Object6962 @Directive35(argument89 : "stringValue33934", argument90 : true, argument91 : "stringValue33933", argument92 : 555, argument93 : "stringValue33935", argument94 : false) + field32359(argument2025: InputObject1538!): Object6964 @Directive35(argument89 : "stringValue33942", argument90 : true, argument91 : "stringValue33941", argument92 : 556, argument93 : "stringValue33943", argument94 : false) + field32388: Object6973 @Directive35(argument89 : "stringValue33968", argument90 : false, argument91 : "stringValue33967", argument92 : 557, argument93 : "stringValue33969", argument94 : false) + field32418(argument2026: InputObject1539!): Object6982 @Directive35(argument89 : "stringValue33990", argument90 : true, argument91 : "stringValue33989", argument92 : 558, argument93 : "stringValue33991", argument94 : false) + field32435(argument2027: InputObject1540!): Object6988 @Directive35(argument89 : "stringValue34006", argument90 : true, argument91 : "stringValue34005", argument92 : 559, argument93 : "stringValue34007", argument94 : false) + field32633(argument2028: InputObject1541!): Object7035 @Directive35(argument89 : "stringValue34119", argument90 : true, argument91 : "stringValue34118", argument92 : 560, argument93 : "stringValue34120", argument94 : false) + field32635(argument2029: InputObject1542!): Object7036 @Directive35(argument89 : "stringValue34125", argument90 : false, argument91 : "stringValue34124", argument92 : 561, argument93 : "stringValue34126", argument94 : false) +} + +type Object6938 @Directive21(argument61 : "stringValue33865") @Directive44(argument97 : ["stringValue33864"]) { + field32272: Object6939 +} + +type Object6939 @Directive21(argument61 : "stringValue33867") @Directive44(argument97 : ["stringValue33866"]) { + field32273: String + field32274: String + field32275: String + field32276: Object4612 + field32277: Object4617 + field32278: String + field32279: [String] + field32280: String + field32281: [String] + field32282: Scalar2 + field32283: String +} + +type Object694 @Directive22(argument62 : "stringValue3532") @Directive31 @Directive44(argument97 : ["stringValue3533", "stringValue3534"]) { + field3917: String + field3918: String + field3919: String + field3920: String + field3921: String + field3922: String + field3923: String + field3924: String + field3925: String + field3926: Boolean +} + +type Object6940 @Directive21(argument61 : "stringValue33872") @Directive44(argument97 : ["stringValue33871"]) { + field32285: Object6941 +} + +type Object6941 @Directive21(argument61 : "stringValue33874") @Directive44(argument97 : ["stringValue33873"]) { + field32286: String + field32287: [Object6942] + field32294: String +} + +type Object6942 @Directive21(argument61 : "stringValue33876") @Directive44(argument97 : ["stringValue33875"]) { + field32288: String + field32289: [Object6943] +} + +type Object6943 @Directive21(argument61 : "stringValue33878") @Directive44(argument97 : ["stringValue33877"]) { + field32290: String + field32291: [Object6944] +} + +type Object6944 @Directive21(argument61 : "stringValue33880") @Directive44(argument97 : ["stringValue33879"]) { + field32292: String + field32293: String +} + +type Object6945 @Directive21(argument61 : "stringValue33886") @Directive44(argument97 : ["stringValue33885"]) { + field32296: [Object6946]! + field32302: [String] +} + +type Object6946 @Directive21(argument61 : "stringValue33888") @Directive44(argument97 : ["stringValue33887"]) { + field32297: String + field32298: [Object4610] + field32299: String + field32300: Object4616 + field32301: String +} + +type Object6947 @Directive21(argument61 : "stringValue33894") @Directive44(argument97 : ["stringValue33893"]) { + field32304: Object6948 +} + +type Object6948 @Directive21(argument61 : "stringValue33896") @Directive44(argument97 : ["stringValue33895"]) { + field32305: String + field32306: String + field32307: String + field32308: String + field32309: Object6949 + field32315: [Object6949] + field32316: Union234! + field32321: [String] + field32322: String + field32323: [String] +} + +type Object6949 @Directive21(argument61 : "stringValue33898") @Directive44(argument97 : ["stringValue33897"]) { + field32310: String + field32311: Enum1729 + field32312: Object4616 + field32313: String + field32314: String +} + +type Object695 @Directive20(argument58 : "stringValue3536", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3535") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3537", "stringValue3538"]) { + field3928: [Object696!] + field3935: Object480 + field3936: Object480 + field3937: Object480 + field3938: Enum206 + field3939: Interface6 + field3940: Object571 + field3941: Object569 +} + +type Object6950 @Directive21(argument61 : "stringValue33902") @Directive44(argument97 : ["stringValue33901"]) { + field32317: String! +} + +type Object6951 @Directive21(argument61 : "stringValue33904") @Directive44(argument97 : ["stringValue33903"]) { + field32318: String! +} + +type Object6952 @Directive21(argument61 : "stringValue33906") @Directive44(argument97 : ["stringValue33905"]) { + field32319: String! + field32320: String! +} + +type Object6953 @Directive21(argument61 : "stringValue33913") @Directive44(argument97 : ["stringValue33912"]) { + field32325: [Object6954] + field32349: Object6961 +} + +type Object6954 @Directive21(argument61 : "stringValue33915") @Directive44(argument97 : ["stringValue33914"]) { + field32326: String + field32327: String + field32328: String + field32329: [Object6955] + field32332: Object4616 + field32333: Object6956 + field32337: Union235 + field32348: Union234 +} + +type Object6955 @Directive21(argument61 : "stringValue33917") @Directive44(argument97 : ["stringValue33916"]) { + field32330: String + field32331: Enum1730 +} + +type Object6956 @Directive21(argument61 : "stringValue33920") @Directive44(argument97 : ["stringValue33919"]) { + field32334: String + field32335: String + field32336: Enum1731 +} + +type Object6957 @Directive21(argument61 : "stringValue33924") @Directive44(argument97 : ["stringValue33923"]) { + field32338: String! + field32339: String +} + +type Object6958 @Directive21(argument61 : "stringValue33926") @Directive44(argument97 : ["stringValue33925"]) { + field32340: Object6959! + field32344: String +} + +type Object6959 @Directive21(argument61 : "stringValue33928") @Directive44(argument97 : ["stringValue33927"]) { + field32341: Scalar2 + field32342: String + field32343: String +} + +type Object696 @Directive20(argument58 : "stringValue3540", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3539") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3541", "stringValue3542"]) { + field3929: String + field3930: String + field3931: Int + field3932: Object1 + field3933: String + field3934: String +} + +type Object6960 @Directive21(argument61 : "stringValue33930") @Directive44(argument97 : ["stringValue33929"]) { + field32345: Float! + field32346: String! + field32347: String +} + +type Object6961 @Directive21(argument61 : "stringValue33932") @Directive44(argument97 : ["stringValue33931"]) { + field32350: Scalar2 + field32351: String + field32352: Boolean +} + +type Object6962 @Directive21(argument61 : "stringValue33938") @Directive44(argument97 : ["stringValue33937"]) { + field32354: [Object6963]! + field32358: Object6961 +} + +type Object6963 @Directive21(argument61 : "stringValue33940") @Directive44(argument97 : ["stringValue33939"]) { + field32355: Object4613! + field32356: Object4613! + field32357: Object4613! +} + +type Object6964 @Directive21(argument61 : "stringValue33946") @Directive44(argument97 : ["stringValue33945"]) { + field32360: Object6965 +} + +type Object6965 @Directive21(argument61 : "stringValue33948") @Directive44(argument97 : ["stringValue33947"]) { + field32361: String + field32362: String + field32363: [Object6966] + field32376: Union237 +} + +type Object6966 @Directive21(argument61 : "stringValue33950") @Directive44(argument97 : ["stringValue33949"]) { + field32364: Scalar2! + field32365: Object4617! + field32366: [Object6967]! +} + +type Object6967 @Directive21(argument61 : "stringValue33952") @Directive44(argument97 : ["stringValue33951"]) { + field32367: Object6968 + field32372: String + field32373: String + field32374: Enum1732 + field32375: Union236 +} + +type Object6968 @Directive21(argument61 : "stringValue33954") @Directive44(argument97 : ["stringValue33953"]) { + field32368: String + field32369: String + field32370: String + field32371: String +} + +type Object6969 @Directive21(argument61 : "stringValue33959") @Directive44(argument97 : ["stringValue33958"]) { + field32377: [Scalar2] + field32378: [Object6970] +} + +type Object697 @Directive20(argument58 : "stringValue3548", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3547") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3549", "stringValue3550"]) { + field3942: String + field3943: [Object621] +} + +type Object6970 @Directive21(argument61 : "stringValue33961") @Directive44(argument97 : ["stringValue33960"]) { + field32379: String + field32380: String + field32381: [Union238] + field32386: String + field32387: Object4617 +} + +type Object6971 @Directive21(argument61 : "stringValue33964") @Directive44(argument97 : ["stringValue33963"]) { + field32382: Scalar2! +} + +type Object6972 @Directive21(argument61 : "stringValue33966") @Directive44(argument97 : ["stringValue33965"]) { + field32383: String + field32384: String + field32385: String +} + +type Object6973 @Directive21(argument61 : "stringValue33971") @Directive44(argument97 : ["stringValue33970"]) { + field32389: [Object6974]! +} + +type Object6974 @Directive21(argument61 : "stringValue33973") @Directive44(argument97 : ["stringValue33972"]) { + field32390: String! + field32391: String! + field32392: Union239! + field32415: Object4628 + field32416: Object4617 + field32417: String +} + +type Object6975 @Directive21(argument61 : "stringValue33976") @Directive44(argument97 : ["stringValue33975"]) { + field32393: [Object6976]! +} + +type Object6976 @Directive21(argument61 : "stringValue33978") @Directive44(argument97 : ["stringValue33977"]) { + field32394: Object4619! + field32395: String! + field32396: String! + field32397: String! +} + +type Object6977 @Directive21(argument61 : "stringValue33980") @Directive44(argument97 : ["stringValue33979"]) { + field32398: [Object6978]! +} + +type Object6978 @Directive21(argument61 : "stringValue33982") @Directive44(argument97 : ["stringValue33981"]) { + field32399: Object4619! + field32400: String! + field32401: Scalar2! + field32402: String! + field32403: String! + field32404: Object4616! +} + +type Object6979 @Directive21(argument61 : "stringValue33984") @Directive44(argument97 : ["stringValue33983"]) { + field32405: [Object6980]! +} + +type Object698 @Directive20(argument58 : "stringValue3552", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3551") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3553", "stringValue3554"]) { + field3944: String +} + +type Object6980 @Directive21(argument61 : "stringValue33986") @Directive44(argument97 : ["stringValue33985"]) { + field32406: Object4619! + field32407: String! + field32408: [Object6981]! +} + +type Object6981 @Directive21(argument61 : "stringValue33988") @Directive44(argument97 : ["stringValue33987"]) { + field32409: String + field32410: String + field32411: Object4617 + field32412: Boolean + field32413: String + field32414: Boolean +} + +type Object6982 @Directive21(argument61 : "stringValue33994") @Directive44(argument97 : ["stringValue33993"]) { + field32419: Object6983! +} + +type Object6983 @Directive21(argument61 : "stringValue33996") @Directive44(argument97 : ["stringValue33995"]) { + field32420: String! + field32421: Object6984! + field32424: String! + field32425: String + field32426: Object6985 + field32428: Object6986! + field32431: Object6987 + field32434: String +} + +type Object6984 @Directive21(argument61 : "stringValue33998") @Directive44(argument97 : ["stringValue33997"]) { + field32422: String + field32423: Object4614 +} + +type Object6985 @Directive21(argument61 : "stringValue34000") @Directive44(argument97 : ["stringValue33999"]) { + field32427: [Object4611]! +} + +type Object6986 @Directive21(argument61 : "stringValue34002") @Directive44(argument97 : ["stringValue34001"]) { + field32429: String + field32430: Object4628 +} + +type Object6987 @Directive21(argument61 : "stringValue34004") @Directive44(argument97 : ["stringValue34003"]) { + field32432: String + field32433: Object4617! +} + +type Object6988 @Directive21(argument61 : "stringValue34010") @Directive44(argument97 : ["stringValue34009"]) { + field32436: Object6989 + field32453: Object6994 + field32613: Object7028 +} + +type Object6989 @Directive21(argument61 : "stringValue34012") @Directive44(argument97 : ["stringValue34011"]) { + field32437: [Object6990] +} + +type Object699 @Directive20(argument58 : "stringValue3556", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3555") @Directive31 @Directive44(argument97 : ["stringValue3557", "stringValue3558"]) { + field3945: String + field3946: String + field3947: Int +} + +type Object6990 @Directive21(argument61 : "stringValue34014") @Directive44(argument97 : ["stringValue34013"]) { + field32438: Union240! + field32452: String! +} + +type Object6991 @Directive21(argument61 : "stringValue34017") @Directive44(argument97 : ["stringValue34016"]) { + field32439: Object6992 + field32447: Object6986 + field32448: Object4617 +} + +type Object6992 @Directive21(argument61 : "stringValue34019") @Directive44(argument97 : ["stringValue34018"]) { + field32440: String + field32441: String + field32442: Float + field32443: String + field32444: [String] + field32445: String + field32446: String +} + +type Object6993 @Directive21(argument61 : "stringValue34021") @Directive44(argument97 : ["stringValue34020"]) { + field32449: String + field32450: Object6986 + field32451: Object4617 +} + +type Object6994 @Directive21(argument61 : "stringValue34023") @Directive44(argument97 : ["stringValue34022"]) { + field32454: Object6961! + field32455: [Object6995] +} + +type Object6995 @Directive21(argument61 : "stringValue34025") @Directive44(argument97 : ["stringValue34024"]) { + field32456: Union241! + field32612: String! +} + +type Object6996 @Directive21(argument61 : "stringValue34028") @Directive44(argument97 : ["stringValue34027"]) { + field32457: String + field32458: [Object6997] @deprecated + field32477: [Object7000] + field32540: String + field32541: Object7014 + field32568: Object7017 +} + +type Object6997 @Directive21(argument61 : "stringValue34030") @Directive44(argument97 : ["stringValue34029"]) { + field32459: String + field32460: Boolean + field32461: Object4614 + field32462: Object4617 + field32463: [Object6998] +} + +type Object6998 @Directive21(argument61 : "stringValue34032") @Directive44(argument97 : ["stringValue34031"]) { + field32464: String + field32465: String + field32466: String + field32467: String + field32468: Object6999 + field32472: Object6999 + field32473: Float + field32474: Int + field32475: String + field32476: Object4617 +} + +type Object6999 @Directive21(argument61 : "stringValue34034") @Directive44(argument97 : ["stringValue34033"]) { + field32469: Scalar2 + field32470: String + field32471: String +} + +type Object7 @Directive20(argument58 : "stringValue44", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue43") @Directive31 @Directive44(argument97 : ["stringValue45", "stringValue46"]) { + field48: String + field49: String +} + +type Object70 @Directive21(argument61 : "stringValue297") @Directive44(argument97 : ["stringValue296"]) { + field463: String +} + +type Object700 @Directive20(argument58 : "stringValue3560", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3559") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3561", "stringValue3562"]) { + field3948: String + field3949: Object701 + field3954: Object701 + field3955: Object701 + field3956: Object701 + field3957: Object701 + field3958: Object657 + field3959: Object675 + field3960: Boolean + field3961: Object675 + field3962: Object701 + field3963: Object675 + field3964: [Object702] + field3969: Object701 + field3970: [Object532] + field3971: Object701 + field3972: String + field3973: Boolean + field3974: [Object703] + field3977: Object521 + field3978: Object532 +} + +type Object7000 @Directive21(argument61 : "stringValue34036") @Directive44(argument97 : ["stringValue34035"]) { + field32478: String + field32479: Object7001 + field32485: [Object7002]! + field32535: Object7012 + field32536: Enum1737! + field32537: Enum1738! + field32538: String + field32539: String +} + +type Object7001 @Directive21(argument61 : "stringValue34038") @Directive44(argument97 : ["stringValue34037"]) { + field32480: String + field32481: String + field32482: String + field32483: Enum1733! + field32484: String +} + +type Object7002 @Directive21(argument61 : "stringValue34041") @Directive44(argument97 : ["stringValue34040"]) { + field32486: String + field32487: Object7003 + field32499: Object7009 + field32516: Enum1736! + field32517: [Object7011] @deprecated + field32520: Enum1737 + field32521: Object7001 + field32522: Boolean! + field32523: Object7003 + field32524: Object7012 +} + +type Object7003 @Directive21(argument61 : "stringValue34043") @Directive44(argument97 : ["stringValue34042"]) { + field32488: String + field32489: [Object7004] + field32498: Int +} + +type Object7004 @Directive21(argument61 : "stringValue34045") @Directive44(argument97 : ["stringValue34044"]) { + field32490: String + field32491: Enum1734 + field32492: Boolean + field32493: Union242 +} + +type Object7005 @Directive21(argument61 : "stringValue34049") @Directive44(argument97 : ["stringValue34048"]) { + field32494: Boolean +} + +type Object7006 @Directive21(argument61 : "stringValue34051") @Directive44(argument97 : ["stringValue34050"]) { + field32495: Float +} + +type Object7007 @Directive21(argument61 : "stringValue34053") @Directive44(argument97 : ["stringValue34052"]) { + field32496: Scalar2 +} + +type Object7008 @Directive21(argument61 : "stringValue34055") @Directive44(argument97 : ["stringValue34054"]) { + field32497: String +} + +type Object7009 @Directive21(argument61 : "stringValue34057") @Directive44(argument97 : ["stringValue34056"]) { + field32500: String + field32501: String + field32502: Enum1735 + field32503: Object7010 + field32515: Object7003 +} + +type Object701 @Directive20(argument58 : "stringValue3564", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3563") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3565", "stringValue3566"]) { + field3950: String + field3951: String + field3952: [Object480] + field3953: Object621 +} + +type Object7010 @Directive21(argument61 : "stringValue34060") @Directive44(argument97 : ["stringValue34059"]) { + field32504: Scalar3 + field32505: Scalar3 + field32506: String + field32507: Scalar2 + field32508: String + field32509: String + field32510: String + field32511: String + field32512: String + field32513: String + field32514: [String] +} + +type Object7011 @Directive21(argument61 : "stringValue34063") @Directive44(argument97 : ["stringValue34062"]) { + field32518: String + field32519: Object7003! +} + +type Object7012 @Directive21(argument61 : "stringValue34066") @Directive44(argument97 : ["stringValue34065"]) { + field32525: String + field32526: String + field32527: Object7013 + field32533: String + field32534: Boolean +} + +type Object7013 @Directive21(argument61 : "stringValue34068") @Directive44(argument97 : ["stringValue34067"]) { + field32528: String! + field32529: String! + field32530: String! + field32531: String! + field32532: String! +} + +type Object7014 @Directive21(argument61 : "stringValue34071") @Directive44(argument97 : ["stringValue34070"]) { + field32542: String + field32543: Object7015 + field32552: String + field32553: String + field32554: Enum1739 + field32555: String + field32556: Boolean + field32557: String @deprecated + field32558: String + field32559: Enum1740 + field32560: String + field32561: Int + field32562: Int + field32563: [Object7016] + field32566: String + field32567: Boolean! +} + +type Object7015 @Directive21(argument61 : "stringValue34073") @Directive44(argument97 : ["stringValue34072"]) { + field32544: String + field32545: String + field32546: String + field32547: String + field32548: String + field32549: String + field32550: String + field32551: String @deprecated +} + +type Object7016 @Directive21(argument61 : "stringValue34077") @Directive44(argument97 : ["stringValue34076"]) { + field32564: String + field32565: String +} + +type Object7017 @Directive21(argument61 : "stringValue34079") @Directive44(argument97 : ["stringValue34078"]) { + field32569: Boolean + field32570: Int! + field32571: Enum1737! + field32572: Int + field32573: String + field32574: Boolean! + field32575: Enum1741 @deprecated + field32576: String + field32577: Object7013 + field32578: Enum1738 + field32579: String + field32580: String + field32581: Int + field32582: Enum1742! + field32583: Int + field32584: Int + field32585: String + field32586: Boolean! +} + +type Object7018 @Directive21(argument61 : "stringValue34083") @Directive44(argument97 : ["stringValue34082"]) { + field32587: String + field32588: [Object7019] + field32592: Object4617 +} + +type Object7019 @Directive21(argument61 : "stringValue34085") @Directive44(argument97 : ["stringValue34084"]) { + field32589: Int + field32590: String + field32591: Object4617 +} + +type Object702 @Directive20(argument58 : "stringValue3568", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3567") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3569", "stringValue3570"]) { + field3965: String + field3966: String + field3967: Enum10 + field3968: Object480 +} + +type Object7020 @Directive21(argument61 : "stringValue34087") @Directive44(argument97 : ["stringValue34086"]) { + field32593: String + field32594: [Object4611] @deprecated + field32595: Object4617 + field32596: Object4616 + field32597: Object4626 +} + +type Object7021 @Directive21(argument61 : "stringValue34089") @Directive44(argument97 : ["stringValue34088"]) { + field32598: [Object7022] +} + +type Object7022 @Directive21(argument61 : "stringValue34091") @Directive44(argument97 : ["stringValue34090"]) { + field32599: Object4619 + field32600: String + field32601: Union243 + field32604: Object4617 +} + +type Object7023 @Directive21(argument61 : "stringValue34094") @Directive44(argument97 : ["stringValue34093"]) { + field32602: [String] +} + +type Object7024 @Directive21(argument61 : "stringValue34096") @Directive44(argument97 : ["stringValue34095"]) { + field32603: String +} + +type Object7025 @Directive21(argument61 : "stringValue34098") @Directive44(argument97 : ["stringValue34097"]) { + field32605: String + field32606: [Object7026] + field32610: Object4617 +} + +type Object7026 @Directive21(argument61 : "stringValue34100") @Directive44(argument97 : ["stringValue34099"]) { + field32607: String + field32608: String + field32609: String +} + +type Object7027 @Directive21(argument61 : "stringValue34102") @Directive44(argument97 : ["stringValue34101"]) { + field32611: Object4624 +} + +type Object7028 @Directive21(argument61 : "stringValue34104") @Directive44(argument97 : ["stringValue34103"]) { + field32614: [Object7029] + field32628: [Object4615] @deprecated + field32629: Boolean! + field32630: Int! + field32631: [Object7034] +} + +type Object7029 @Directive21(argument61 : "stringValue34106") @Directive44(argument97 : ["stringValue34105"]) { + field32615: Union244! + field32627: String +} + +type Object703 @Directive20(argument58 : "stringValue3572", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3571") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3573", "stringValue3574"]) { + field3975: String + field3976: [Object478] +} + +type Object7030 @Directive21(argument61 : "stringValue34109") @Directive44(argument97 : ["stringValue34108"]) { + field32616: [Object6992] +} + +type Object7031 @Directive21(argument61 : "stringValue34111") @Directive44(argument97 : ["stringValue34110"]) { + field32617: [Object7032] +} + +type Object7032 @Directive21(argument61 : "stringValue34113") @Directive44(argument97 : ["stringValue34112"]) { + field32618: String + field32619: Object6984 + field32620: [Object4617] + field32621: [Object6981] +} + +type Object7033 @Directive21(argument61 : "stringValue34115") @Directive44(argument97 : ["stringValue34114"]) { + field32622: Object4619 + field32623: String + field32624: String + field32625: Object4617 + field32626: [Object4614] +} + +type Object7034 @Directive21(argument61 : "stringValue34117") @Directive44(argument97 : ["stringValue34116"]) { + field32632: [Object4615]! +} + +type Object7035 @Directive21(argument61 : "stringValue34123") @Directive44(argument97 : ["stringValue34122"]) { + field32634: Boolean +} + +type Object7036 @Directive21(argument61 : "stringValue34130") @Directive44(argument97 : ["stringValue34129"]) { + field32636: [Union245] +} + +type Object7037 @Directive21(argument61 : "stringValue34133") @Directive44(argument97 : ["stringValue34132"]) { + field32637: String! + field32638: Object4617! + field32639: Object4619! + field32640: Object4613! + field32641: Object4613! + field32642: Object6984 +} + +type Object7038 @Directive21(argument61 : "stringValue34135") @Directive44(argument97 : ["stringValue34134"]) { + field32643: String + field32644: String +} + +type Object7039 @Directive21(argument61 : "stringValue34137") @Directive44(argument97 : ["stringValue34136"]) { + field32645: Object4613 + field32646: Object4613 + field32647: Object4613 + field32648: Object7040 + field32653: String + field32654: [Object4615] +} + +type Object704 @Directive20(argument58 : "stringValue3576", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3575") @Directive31 @Directive44(argument97 : ["stringValue3577", "stringValue3578"]) { + field3979: Boolean + field3980: String + field3981: String + field3982: Boolean +} + +type Object7040 @Directive21(argument61 : "stringValue34139") @Directive44(argument97 : ["stringValue34138"]) { + field32649: Object4612 + field32650: String + field32651: String + field32652: Object4616 +} + +type Object7041 @Directive44(argument97 : ["stringValue34140"]) { + field32656(argument2030: InputObject1543!): Object7042 @Directive35(argument89 : "stringValue34142", argument90 : true, argument91 : "stringValue34141", argument93 : "stringValue34143", argument94 : false) +} + +type Object7042 @Directive21(argument61 : "stringValue34146") @Directive44(argument97 : ["stringValue34145"]) { + field32657: [Scalar2] +} + +type Object7043 @Directive44(argument97 : ["stringValue34147"]) { + field32659(argument2031: InputObject1544!): Object7044 @Directive35(argument89 : "stringValue34149", argument90 : true, argument91 : "stringValue34148", argument92 : 562, argument93 : "stringValue34150", argument94 : false) + field32677(argument2032: InputObject1545!): Object7049 @Directive35(argument89 : "stringValue34165", argument90 : true, argument91 : "stringValue34164", argument92 : 563, argument93 : "stringValue34166", argument94 : false) + field32679(argument2033: InputObject1546!): Object7050 @Directive35(argument89 : "stringValue34171", argument90 : true, argument91 : "stringValue34170", argument92 : 564, argument93 : "stringValue34172", argument94 : false) + field32688(argument2034: InputObject1547!): Object7052 @Directive35(argument89 : "stringValue34182", argument90 : true, argument91 : "stringValue34181", argument92 : 565, argument93 : "stringValue34183", argument94 : false) + field32707(argument2035: InputObject1548!): Object7057 @Directive35(argument89 : "stringValue34197", argument90 : true, argument91 : "stringValue34196", argument92 : 566, argument93 : "stringValue34198", argument94 : false) +} + +type Object7044 @Directive21(argument61 : "stringValue34154") @Directive44(argument97 : ["stringValue34153"]) { + field32660: Object7045! + field32669: [Scalar2!]! @deprecated + field32670: Object7047 + field32673: Object7048 +} + +type Object7045 @Directive21(argument61 : "stringValue34156") @Directive44(argument97 : ["stringValue34155"]) { + field32661: Boolean! + field32662: String + field32663: [Object7046!]! + field32666: String! + field32667: String! + field32668: String! +} + +type Object7046 @Directive21(argument61 : "stringValue34158") @Directive44(argument97 : ["stringValue34157"]) { + field32664: Enum1745! + field32665: String +} + +type Object7047 @Directive21(argument61 : "stringValue34161") @Directive44(argument97 : ["stringValue34160"]) { + field32671: [Scalar2!]! + field32672: Boolean! +} + +type Object7048 @Directive21(argument61 : "stringValue34163") @Directive44(argument97 : ["stringValue34162"]) { + field32674: [Object4638!]! + field32675: Object4638! + field32676: Object4638! +} + +type Object7049 @Directive21(argument61 : "stringValue34169") @Directive44(argument97 : ["stringValue34168"]) { + field32678: Object4640 +} + +type Object705 @Directive20(argument58 : "stringValue3580", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3579") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3581", "stringValue3582"]) { + field3983: String + field3984: Object624 + field3985: Object624 + field3986: Boolean + field3987: Object1 + field3988: Object1 + field3989: Object1 + field3990: Boolean + field3991: Object624 + field3992: [Object634] + field3993: Object521 + field3994: [Object2] + field3995: Object1 + field3996: Object639 +} + +type Object7050 @Directive21(argument61 : "stringValue34177") @Directive44(argument97 : ["stringValue34176"]) { + field32680: Enum1746 @deprecated + field32681: Boolean @deprecated + field32682: Boolean! @deprecated + field32683: Enum1748 @deprecated + field32684: [Object7051!]! +} + +type Object7051 @Directive21(argument61 : "stringValue34180") @Directive44(argument97 : ["stringValue34179"]) { + field32685: Enum1744! + field32686: Boolean! + field32687: Enum1748 +} + +type Object7052 @Directive21(argument61 : "stringValue34186") @Directive44(argument97 : ["stringValue34185"]) { + field32689: Object7053 + field32697: Object7055 +} + +type Object7053 @Directive21(argument61 : "stringValue34188") @Directive44(argument97 : ["stringValue34187"]) { + field32690: Scalar2 + field32691: Object7054 + field32695: Object7054 + field32696: Object7054 +} + +type Object7054 @Directive21(argument61 : "stringValue34190") @Directive44(argument97 : ["stringValue34189"]) { + field32692: Float! + field32693: String! + field32694: Scalar2 +} + +type Object7055 @Directive21(argument61 : "stringValue34192") @Directive44(argument97 : ["stringValue34191"]) { + field32698: Scalar2 + field32699: Scalar2 + field32700: Object7054 + field32701: Object7054 + field32702: String + field32703: Scalar2 + field32704: [Object7056] +} + +type Object7056 @Directive21(argument61 : "stringValue34194") @Directive44(argument97 : ["stringValue34193"]) { + field32705: Enum1749 + field32706: Object7054 +} + +type Object7057 @Directive21(argument61 : "stringValue34201") @Directive44(argument97 : ["stringValue34200"]) { + field32708: Boolean! +} + +type Object7058 @Directive44(argument97 : ["stringValue34202"]) { + field32710(argument2036: InputObject1549!): Object7059 @Directive35(argument89 : "stringValue34204", argument90 : true, argument91 : "stringValue34203", argument93 : "stringValue34205", argument94 : false) + field34907(argument2037: InputObject1560!): Object7220 @Directive35(argument89 : "stringValue34550", argument90 : true, argument91 : "stringValue34549", argument93 : "stringValue34551", argument94 : false) + field34909(argument2038: InputObject1562!): Object7221 @Directive35(argument89 : "stringValue34557", argument90 : false, argument91 : "stringValue34556", argument92 : 567, argument93 : "stringValue34558", argument94 : false) + field34915(argument2039: InputObject1563!): Object7223 @Directive35(argument89 : "stringValue34565", argument90 : true, argument91 : "stringValue34564", argument92 : 568, argument93 : "stringValue34566", argument94 : false) + field35284(argument2040: InputObject1564!): Object7234 @Directive35(argument89 : "stringValue34592", argument90 : false, argument91 : "stringValue34591", argument92 : 569, argument93 : "stringValue34593", argument94 : false) + field35361: Object7237 @Directive35(argument89 : "stringValue34602", argument90 : true, argument91 : "stringValue34601", argument92 : 570, argument93 : "stringValue34603", argument94 : false) + field35380(argument2041: InputObject1565!): Object7242 @Directive35(argument89 : "stringValue34617", argument90 : false, argument91 : "stringValue34616", argument92 : 571, argument93 : "stringValue34618", argument94 : false) + field35413(argument2042: InputObject1566!): Object7246 @Directive35(argument89 : "stringValue34630", argument90 : false, argument91 : "stringValue34629", argument92 : 572, argument93 : "stringValue34631", argument94 : false) + field35446(argument2043: InputObject1567!): Object7256 @Directive35(argument89 : "stringValue34661", argument90 : true, argument91 : "stringValue34660", argument92 : 573, argument93 : "stringValue34662", argument94 : false) + field35452(argument2044: InputObject1568!): Object7258 @Directive35(argument89 : "stringValue34669", argument90 : true, argument91 : "stringValue34668", argument92 : 574, argument93 : "stringValue34670", argument94 : false) + field35454(argument2045: InputObject1569!): Object7258 @Directive35(argument89 : "stringValue34675", argument90 : false, argument91 : "stringValue34674", argument92 : 575, argument93 : "stringValue34676", argument94 : false) + field35455(argument2046: InputObject1570!): Object7259 @Directive35(argument89 : "stringValue34679", argument90 : false, argument91 : "stringValue34678", argument92 : 576, argument93 : "stringValue34680", argument94 : false) + field35457(argument2047: InputObject1571!): Object7260 @Directive35(argument89 : "stringValue34685", argument90 : false, argument91 : "stringValue34684", argument92 : 577, argument93 : "stringValue34686", argument94 : false) + field35460(argument2048: InputObject1572!): Object7262 @Directive35(argument89 : "stringValue34693", argument90 : false, argument91 : "stringValue34692", argument92 : 578, argument93 : "stringValue34694", argument94 : false) + field35464: Object7264 @Directive35(argument89 : "stringValue34701", argument90 : false, argument91 : "stringValue34700", argument92 : 579, argument93 : "stringValue34702", argument94 : false) + field35466(argument2049: InputObject1573!): Object7265 @Directive35(argument89 : "stringValue34706", argument90 : true, argument91 : "stringValue34705", argument92 : 580, argument93 : "stringValue34707", argument94 : false) + field35468(argument2050: InputObject470!): Object4652 @Directive35(argument89 : "stringValue34712", argument90 : false, argument91 : "stringValue34711", argument92 : 581, argument93 : "stringValue34713", argument94 : false) + field35469(argument2051: InputObject1574!): Object7266 @Directive35(argument89 : "stringValue34715", argument90 : true, argument91 : "stringValue34714", argument92 : 582, argument93 : "stringValue34716", argument94 : false) + field35488(argument2052: InputObject1575!): Object7269 @Directive35(argument89 : "stringValue34725", argument90 : false, argument91 : "stringValue34724", argument92 : 583, argument93 : "stringValue34726", argument94 : false) + field35577(argument2053: InputObject1576!): Object7290 @Directive35(argument89 : "stringValue34772", argument90 : true, argument91 : "stringValue34771", argument92 : 584, argument93 : "stringValue34773", argument94 : false) + field35581(argument2054: InputObject1577!): Object7292 @Directive35(argument89 : "stringValue34780", argument90 : false, argument91 : "stringValue34779", argument92 : 585, argument93 : "stringValue34781", argument94 : false) + field35586(argument2055: InputObject1578!): Object7294 @Directive35(argument89 : "stringValue34788", argument90 : false, argument91 : "stringValue34787", argument92 : 586, argument93 : "stringValue34789", argument94 : false) + field35635(argument2056: InputObject1579!): Object7223 @Directive35(argument89 : "stringValue34802", argument90 : false, argument91 : "stringValue34801", argument92 : 587, argument93 : "stringValue34803", argument94 : false) + field35636(argument2057: InputObject1580!): Object7299 @Directive35(argument89 : "stringValue34806", argument90 : false, argument91 : "stringValue34805", argument92 : 588, argument93 : "stringValue34807", argument94 : false) +} + +type Object7059 @Directive21(argument61 : "stringValue34218") @Directive44(argument97 : ["stringValue34217"]) { + field32711: [Object7060] +} + +type Object706 @Directive20(argument58 : "stringValue3584", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3583") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3585", "stringValue3586"]) { + field3997: String + field3998: String + field3999: Object621 + field4000: Object662 +} + +type Object7060 @Directive21(argument61 : "stringValue34220") @Directive44(argument97 : ["stringValue34219"]) { + field32712: String! + field32713: String + field32714: String + field32715: Object7061 + field34896: String + field34897: String + field34898: [Object7217] + field34900: Object7218 + field34904: [Object7060] + field34905: Object7219 +} + +type Object7061 @Directive21(argument61 : "stringValue34222") @Directive44(argument97 : ["stringValue34221"]) { + field32716: String! + field32717: String + field32718: String + field32719: Enum1750 + field32720: Union246 + field32727: Union247 + field34872: Object7213 + field34883: Boolean + field34884: String + field34885: [Object7215] + field34892: Object7216 +} + +type Object7062 @Directive21(argument61 : "stringValue34226") @Directive44(argument97 : ["stringValue34225"]) { + field32721: Scalar2 + field32722: Scalar2 +} + +type Object7063 @Directive21(argument61 : "stringValue34228") @Directive44(argument97 : ["stringValue34227"]) { + field32723: Boolean +} + +type Object7064 @Directive21(argument61 : "stringValue34230") @Directive44(argument97 : ["stringValue34229"]) { + field32724: Scalar2 + field32725: Scalar2 +} + +type Object7065 @Directive21(argument61 : "stringValue34232") @Directive44(argument97 : ["stringValue34231"]) { + field32726: [String] +} + +type Object7066 @Directive21(argument61 : "stringValue34235") @Directive44(argument97 : ["stringValue34234"]) { + field32728: String + field32729: String + field32730: String +} + +type Object7067 @Directive21(argument61 : "stringValue34237") @Directive44(argument97 : ["stringValue34236"]) { + field32731: [Object7068] +} + +type Object7068 @Directive21(argument61 : "stringValue34239") @Directive44(argument97 : ["stringValue34238"]) { + field32732: String + field32733: String + field32734: String + field32735: String +} + +type Object7069 @Directive21(argument61 : "stringValue34241") @Directive44(argument97 : ["stringValue34240"]) { + field32736: String + field32737: String +} + +type Object707 @Directive20(argument58 : "stringValue3588", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3587") @Directive31 @Directive44(argument97 : ["stringValue3589", "stringValue3590"]) { + field4001: [Object708] + field4004: [Object709!] + field4013: String + field4014: String + field4015: String + field4016: Boolean + field4017: String + field4018: String + field4019: String + field4020: String + field4021: String + field4022: [Object646] + field4023: String +} + +type Object7070 @Directive21(argument61 : "stringValue34243") @Directive44(argument97 : ["stringValue34242"]) { + field32738: Scalar2 + field32739: String +} + +type Object7071 @Directive21(argument61 : "stringValue34245") @Directive44(argument97 : ["stringValue34244"]) { + field32740: Object7072 + field34804: Scalar2 + field34805: String + field34806: Enum1755 +} + +type Object7072 @Directive21(argument61 : "stringValue34247") @Directive44(argument97 : ["stringValue34246"]) { + field32741: String + field32742: String + field32743: String + field32744: String + field32745: String + field32746: String + field32747: Float + field32748: Float + field32749: [Object7073] + field32753: String + field32754: Scalar2 + field32755: Object7074 +} + +type Object7073 @Directive21(argument61 : "stringValue34249") @Directive44(argument97 : ["stringValue34248"]) { + field32750: String! + field32751: String + field32752: String +} + +type Object7074 @Directive21(argument61 : "stringValue34251") @Directive44(argument97 : ["stringValue34250"]) { + field32756: Boolean + field32757: Boolean + field32758: Boolean + field32759: Boolean + field32760: Boolean + field32761: Boolean + field32762: Boolean + field32763: Boolean + field32764: Boolean + field32765: Boolean + field32766: Boolean + field32767: Boolean + field32768: Boolean + field32769: Boolean + field32770: Boolean + field32771: Boolean + field32772: Boolean + field32773: Object7075 + field32809: Object7088 + field34797: Boolean + field34798: Boolean + field34799: Boolean + field34800: Boolean + field34801: Object7090 + field34802: [Scalar2] + field34803: Object7076 +} + +type Object7075 @Directive21(argument61 : "stringValue34253") @Directive44(argument97 : ["stringValue34252"]) { + field32774: Boolean + field32775: Boolean + field32776: Boolean + field32777: Boolean + field32778: Boolean + field32779: Boolean + field32780: Boolean + field32781: Object7074 + field32782: [Scalar2] + field32783: Object7076 +} + +type Object7076 @Directive21(argument61 : "stringValue34255") @Directive44(argument97 : ["stringValue34254"]) { + field32784: Object7077 + field32787: [Object7078] + field32790: [Object7079] + field32803: [Scalar2] + field32804: Object7087 + field32808: [Object7079] +} + +type Object7077 @Directive21(argument61 : "stringValue34257") @Directive44(argument97 : ["stringValue34256"]) { + field32785: Scalar2 + field32786: Scalar2 +} + +type Object7078 @Directive21(argument61 : "stringValue34259") @Directive44(argument97 : ["stringValue34258"]) { + field32788: String + field32789: Enum1751 +} + +type Object7079 @Directive21(argument61 : "stringValue34262") @Directive44(argument97 : ["stringValue34261"]) { + field32791: String + field32792: Enum1752 + field32793: Union248 + field32801: Enum1754 + field32802: [Object7079] +} + +type Object708 @Directive20(argument58 : "stringValue3592", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3591") @Directive31 @Directive44(argument97 : ["stringValue3593", "stringValue3594"]) { + field4002: String + field4003: String +} + +type Object7080 @Directive21(argument61 : "stringValue34266") @Directive44(argument97 : ["stringValue34265"]) { + field32794: Boolean +} + +type Object7081 @Directive21(argument61 : "stringValue34268") @Directive44(argument97 : ["stringValue34267"]) { + field32795: Float +} + +type Object7082 @Directive21(argument61 : "stringValue34270") @Directive44(argument97 : ["stringValue34269"]) { + field32796: Int +} + +type Object7083 @Directive21(argument61 : "stringValue34272") @Directive44(argument97 : ["stringValue34271"]) { + field32797: Scalar2 +} + +type Object7084 @Directive21(argument61 : "stringValue34274") @Directive44(argument97 : ["stringValue34273"]) { + field32798: Enum1753 +} + +type Object7085 @Directive21(argument61 : "stringValue34277") @Directive44(argument97 : ["stringValue34276"]) { + field32799: String +} + +type Object7086 @Directive21(argument61 : "stringValue34279") @Directive44(argument97 : ["stringValue34278"]) { + field32800: String +} + +type Object7087 @Directive21(argument61 : "stringValue34282") @Directive44(argument97 : ["stringValue34281"]) { + field32805: String + field32806: Scalar2 + field32807: [Scalar2] +} + +type Object7088 @Directive21(argument61 : "stringValue34284") @Directive44(argument97 : ["stringValue34283"]) { + field32810: Boolean + field32811: Boolean + field32812: Boolean + field32813: Boolean + field32814: Boolean + field32815: Boolean + field32816: Boolean + field32817: Boolean + field32818: Boolean + field32819: Boolean + field32820: Boolean + field32821: Boolean + field32822: Object7089 + field34777: Object7074 + field34778: Object7090 + field34779: Object7153 + field34780: Boolean + field34781: Boolean + field34782: Boolean + field34783: Boolean + field34784: Boolean + field34785: Boolean + field34786: Boolean + field34787: Boolean + field34788: Boolean + field34789: Boolean + field34790: Object7107 + field34791: Boolean + field34792: Boolean + field34793: Boolean + field34794: Boolean + field34795: [Scalar2] + field34796: Object7076 +} + +type Object7089 @Directive21(argument61 : "stringValue34286") @Directive44(argument97 : ["stringValue34285"]) { + field32823: Boolean + field32824: Boolean + field32825: Boolean + field32826: Boolean + field32827: Boolean + field32828: Boolean + field32829: Boolean + field32830: Boolean + field32831: Boolean + field32832: Boolean + field32833: Boolean + field32834: Boolean + field32835: Boolean + field32836: Boolean @deprecated + field32837: Boolean + field32838: Boolean + field32839: Boolean + field32840: Object7088 + field32841: Object7074 + field32842: Object7090 + field34678: Boolean + field34679: Boolean + field34680: Boolean + field34681: Object7190 + field34710: Object7191 + field34711: Boolean + field34712: Boolean + field34713: Boolean + field34714: Object7190 + field34715: Object7182 + field34716: Object7182 + field34717: Object7182 + field34718: Object7182 + field34719: Boolean + field34720: Boolean + field34721: Object7128 + field34722: Object7107 + field34723: Object7107 + field34724: Boolean + field34725: Boolean + field34726: Boolean + field34727: Boolean + field34728: Boolean + field34729: Object7191 + field34730: Object7191 + field34731: Boolean + field34732: Object7107 + field34733: Object7107 + field34734: Boolean + field34735: Boolean + field34736: Object7190 + field34737: Object7167 + field34738: Object7182 + field34739: Boolean + field34740: Object7192 @deprecated + field34764: Object7192 @deprecated + field34765: Object7192 @deprecated + field34766: Object7192 + field34767: Object7192 + field34768: Boolean + field34769: Object7192 + field34770: Boolean + field34771: Boolean + field34772: Boolean + field34773: Boolean + field34774: Object7182 @deprecated + field34775: [Scalar2] + field34776: Object7076 +} + +type Object709 @Directive20(argument58 : "stringValue3596", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3595") @Directive31 @Directive44(argument97 : ["stringValue3597", "stringValue3598"]) { + field4005: String + field4006: ID + field4007: String + field4008: String + field4009: String + field4010: String + field4011: String + field4012: String +} + +type Object7090 @Directive21(argument61 : "stringValue34288") @Directive44(argument97 : ["stringValue34287"]) { + field32843: Boolean + field32844: Boolean + field32845: Boolean + field32846: Boolean + field32847: Boolean + field32848: Boolean + field32849: Boolean + field32850: Boolean + field32851: Boolean @deprecated + field32852: Boolean @deprecated + field32853: Boolean + field32854: Boolean + field32855: Boolean + field32856: Boolean + field32857: Boolean + field32858: Boolean + field32859: Boolean + field32860: Boolean + field32861: Boolean + field32862: Boolean + field32863: Boolean + field32864: Boolean + field32865: Boolean + field32866: Boolean + field32867: Boolean + field32868: Boolean + field32869: Boolean + field32870: Boolean + field32871: Object7091 + field33889: Object7134 + field33890: Object7089 + field33891: Object7088 + field33892: Object7147 + field33905: Object7128 + field33906: Object7148 + field33945: Boolean + field33946: Object7148 + field33947: Object7107 + field33948: Object7107 + field33949: Object7148 + field33950: Object7107 + field33951: Object7107 + field33952: Boolean + field33953: Boolean @deprecated + field33954: Object7152 + field33957: Boolean + field33958: Boolean + field33959: Boolean + field33960: Boolean + field33961: Boolean + field33962: Boolean + field33963: Boolean + field33964: Boolean + field33965: Boolean + field33966: Boolean + field33967: Boolean + field33968: Boolean @deprecated + field33969: Boolean + field33970: Boolean @deprecated + field33971: Boolean @deprecated + field33972: Boolean @deprecated + field33973: Boolean + field33974: Boolean + field33975: Boolean + field33976: Boolean + field33977: Boolean + field33978: Boolean + field33979: Boolean + field33980: Boolean + field33981: Object7153 + field34004: Boolean + field34005: Boolean + field34006: Boolean + field34007: Boolean @deprecated + field34008: Boolean + field34009: Boolean + field34010: Object7134 + field34011: Boolean + field34012: Boolean + field34013: Boolean + field34014: Object7155 + field34022: Boolean + field34023: Boolean + field34024: Boolean + field34025: Boolean + field34026: Object7100 + field34027: Object7156 @deprecated + field34034: Object7157 + field34043: Object7107 + field34044: Object7107 + field34045: Object7100 + field34046: Boolean + field34047: Object7137 + field34048: Object7158 @deprecated + field34054: Boolean + field34055: Boolean + field34056: Object7100 + field34057: Boolean + field34058: Object7111 + field34059: Object7159 @deprecated + field34067: Object7130 @deprecated + field34068: Boolean + field34069: Boolean + field34070: Boolean + field34071: Boolean + field34072: Boolean @deprecated + field34073: Boolean + field34074: Boolean + field34075: Boolean + field34076: Boolean + field34077: Boolean + field34078: Boolean + field34079: Object7107 + field34080: Object7107 + field34081: Object7107 + field34082: Object7107 + field34083: Object7094 @deprecated + field34084: Object7118 + field34085: Object7148 + field34086: Object7148 + field34087: Object7148 + field34088: Object7148 + field34089: Boolean + field34090: Boolean + field34091: Boolean + field34092: Object7123 + field34093: Boolean + field34094: Boolean + field34095: Object7089 + field34096: Boolean + field34097: Boolean + field34098: Boolean + field34099: Object7097 + field34100: Object7156 + field34101: Boolean + field34102: Object7160 + field34135: Boolean + field34136: Boolean + field34137: Object7120 + field34138: Boolean + field34139: Boolean + field34140: Object7163 + field34144: Boolean + field34145: Boolean + field34146: Object7107 + field34147: Boolean + field34148: Object7138 + field34149: Object7138 + field34150: Object7124 + field34151: Object7135 + field34152: Boolean + field34153: Boolean + field34154: Boolean + field34155: Object7134 + field34156: Object7164 + field34238: Boolean + field34239: Boolean + field34240: Boolean + field34241: Object7148 + field34242: Object7148 + field34243: Boolean + field34244: Boolean + field34245: Boolean + field34246: Boolean + field34247: Boolean + field34248: Boolean + field34249: Boolean + field34250: Boolean + field34251: Boolean + field34252: Object7164 + field34253: Object7107 + field34254: Object7107 + field34255: Object7148 + field34256: Boolean + field34257: Boolean + field34258: Boolean + field34259: Boolean + field34260: Object7107 + field34261: Object7107 + field34262: Object7107 + field34263: Object7107 + field34264: Object7107 + field34265: Object7107 + field34266: Object7105 + field34267: Object7105 + field34268: Boolean + field34269: Object7168 + field34376: Object7107 + field34377: Object7074 + field34378: Boolean + field34379: Boolean + field34380: Boolean + field34381: Boolean @deprecated + field34382: Object7108 + field34383: Boolean + field34384: Boolean + field34385: Boolean + field34386: Boolean + field34387: Boolean + field34388: Boolean + field34389: Object7107 + field34390: Object7148 + field34391: Object7148 + field34392: Object7107 + field34393: Object7148 + field34394: Object7107 + field34395: Object7148 + field34396: Object7107 + field34397: Object7148 + field34398: Object7134 + field34399: Boolean + field34400: Boolean + field34401: Object7159 @deprecated + field34402: Boolean + field34403: Boolean + field34404: Object7091 + field34405: Boolean + field34406: Object7159 @deprecated + field34407: Object7159 @deprecated + field34408: Boolean @deprecated + field34409: Boolean + field34410: Boolean + field34411: Object7159 @deprecated + field34412: Boolean + field34413: Boolean + field34414: Boolean + field34415: Boolean + field34416: Object7169 + field34420: Object7170 + field34440: Object7153 + field34441: Object7120 + field34442: Object7120 + field34443: Boolean + field34444: Object7091 + field34445: Object7089 + field34446: Object7120 + field34447: Object7091 + field34448: Boolean + field34449: Object7171 + field34497: Boolean + field34498: Object7139 + field34499: Object7176 + field34544: Object7137 + field34545: Object7180 + field34547: Object7181 + field34556: Boolean + field34557: Boolean + field34558: Boolean + field34559: Boolean + field34560: Object7182 + field34582: Boolean + field34583: Boolean + field34584: Boolean + field34585: Object7148 + field34586: Object7148 + field34587: Object7148 + field34588: Object7148 + field34589: Object7148 + field34590: Object7148 + field34591: Object7120 + field34592: Object7184 + field34641: Object7184 + field34642: Boolean + field34643: Boolean + field34644: Boolean + field34645: Boolean + field34646: Boolean + field34647: Object7094 + field34648: Boolean + field34649: Boolean + field34650: Boolean + field34651: Object7187 + field34659: Boolean + field34660: Boolean + field34661: Boolean + field34662: Boolean + field34663: Object7159 + field34664: Object7189 + field34666: Boolean + field34667: Object7133 + field34668: Boolean + field34669: Boolean + field34670: Boolean + field34671: Boolean + field34672: Object7148 + field34673: Boolean + field34674: Boolean + field34675: Boolean + field34676: [Scalar2] + field34677: Object7076 +} + +type Object7091 @Directive21(argument61 : "stringValue34290") @Directive44(argument97 : ["stringValue34289"]) { + field32872: Boolean + field32873: Boolean + field32874: Boolean + field32875: Boolean + field32876: Boolean + field32877: Boolean + field32878: Boolean + field32879: Boolean + field32880: Boolean + field32881: Boolean + field32882: Boolean + field32883: Boolean + field32884: Object7090 + field32885: Object7092 + field32918: Boolean + field32919: Boolean + field32920: Boolean + field32921: Boolean + field32922: Object7094 + field32964: Boolean + field32965: Boolean + field32966: Boolean + field32967: Boolean + field32968: Boolean + field32969: Boolean + field32970: Boolean + field32971: Boolean + field32972: Boolean + field32973: Boolean + field32974: Boolean + field32975: Boolean + field32976: Object7099 + field33686: Boolean + field33687: Boolean + field33688: Object7133 + field33735: Boolean + field33736: Boolean + field33737: Object7105 + field33738: Object7105 + field33739: Boolean + field33740: Boolean + field33741: Boolean + field33742: Boolean + field33743: Boolean + field33744: Boolean + field33745: Boolean + field33746: Boolean + field33747: Object7136 + field33749: Object7094 + field33750: Boolean + field33751: Boolean + field33752: Boolean + field33753: Object7137 + field33779: Boolean + field33780: Boolean + field33781: Boolean + field33782: Boolean + field33783: Boolean + field33784: Object7138 + field33796: Boolean + field33797: Object7092 + field33798: Boolean + field33799: Object7109 + field33800: Boolean + field33801: Boolean + field33802: Boolean + field33803: Boolean + field33804: Boolean + field33805: Object7111 + field33806: Object7110 + field33807: Boolean + field33808: Boolean + field33809: Boolean + field33810: Boolean + field33811: Boolean + field33812: Boolean + field33813: Boolean + field33814: Boolean + field33815: Boolean + field33816: Boolean + field33817: Boolean + field33818: Boolean + field33819: Boolean + field33820: Boolean + field33821: Boolean + field33822: Boolean + field33823: Object7105 + field33824: Object7105 + field33825: Boolean + field33826: Object7100 + field33827: Boolean + field33828: Boolean + field33829: Object7094 + field33830: Object7139 + field33851: Boolean + field33852: Boolean + field33853: Boolean + field33854: Boolean + field33855: Object7139 + field33856: Object7146 + field33866: Boolean + field33867: Boolean + field33868: Boolean + field33869: Boolean + field33870: Boolean + field33871: Boolean + field33872: Boolean + field33873: Boolean + field33874: Boolean + field33875: Boolean + field33876: Boolean + field33877: Object7107 + field33878: Boolean + field33879: Boolean + field33880: Object7094 + field33881: Boolean + field33882: Boolean + field33883: Boolean + field33884: Boolean + field33885: Boolean + field33886: Boolean + field33887: [Scalar2] + field33888: Object7076 +} + +type Object7092 @Directive21(argument61 : "stringValue34292") @Directive44(argument97 : ["stringValue34291"]) { + field32886: Boolean + field32887: Boolean + field32888: Boolean + field32889: Boolean + field32890: Boolean @deprecated + field32891: Boolean + field32892: Boolean + field32893: Boolean @deprecated + field32894: Boolean + field32895: Boolean + field32896: Boolean + field32897: Object7089 + field32898: Object7091 + field32899: Object7074 + field32900: Boolean + field32901: Boolean + field32902: Boolean + field32903: Boolean + field32904: Boolean + field32905: Boolean + field32906: Boolean + field32907: Boolean + field32908: Object7074 + field32909: Object7093 + field32911: Boolean + field32912: Boolean + field32913: Boolean + field32914: Boolean + field32915: Boolean + field32916: [Scalar2] + field32917: Object7076 +} + +type Object7093 @Directive21(argument61 : "stringValue34294") @Directive44(argument97 : ["stringValue34293"]) { + field32910: Boolean +} + +type Object7094 @Directive21(argument61 : "stringValue34296") @Directive44(argument97 : ["stringValue34295"]) { + field32923: Boolean + field32924: Boolean + field32925: Boolean + field32926: Boolean + field32927: Boolean + field32928: Boolean + field32929: Boolean + field32930: Boolean + field32931: Boolean + field32932: Boolean + field32933: Boolean + field32934: Object7095 + field32941: Boolean + field32942: Object7097 + field32946: Boolean + field32947: Boolean + field32948: Boolean + field32949: Boolean + field32950: Boolean + field32951: Boolean + field32952: Boolean + field32953: Boolean + field32954: Boolean + field32955: Boolean + field32956: Boolean + field32957: Object7098 + field32960: Boolean + field32961: Boolean + field32962: Boolean + field32963: Boolean +} + +type Object7095 @Directive21(argument61 : "stringValue34298") @Directive44(argument97 : ["stringValue34297"]) { + field32935: Boolean + field32936: Object7096 +} + +type Object7096 @Directive21(argument61 : "stringValue34300") @Directive44(argument97 : ["stringValue34299"]) { + field32937: Boolean + field32938: Boolean + field32939: Boolean + field32940: Boolean +} + +type Object7097 @Directive21(argument61 : "stringValue34302") @Directive44(argument97 : ["stringValue34301"]) { + field32943: Boolean + field32944: Boolean + field32945: Boolean +} + +type Object7098 @Directive21(argument61 : "stringValue34304") @Directive44(argument97 : ["stringValue34303"]) { + field32958: Boolean + field32959: Boolean +} + +type Object7099 @Directive21(argument61 : "stringValue34306") @Directive44(argument97 : ["stringValue34305"]) { + field32977: Boolean + field32978: Boolean + field32979: Boolean + field32980: Boolean + field32981: Boolean + field32982: Boolean + field32983: Boolean + field32984: Object7094 + field32985: Object7090 + field32986: Object7091 + field32987: Object7100 + field33684: [Scalar2] + field33685: Object7076 +} + +type Object71 @Directive21(argument61 : "stringValue299") @Directive44(argument97 : ["stringValue298"]) { + field465: Scalar2 + field466: String + field467: String + field468: String + field469: String + field470: String + field471: String + field472: String + field473: String + field474: Object54 +} + +type Object710 @Directive20(argument58 : "stringValue3600", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3599") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3601", "stringValue3602"]) { + field4024: String + field4025: Object657 + field4026: Object628 + field4027: Object621 + field4028: Object480 + field4029: [Object2] +} + +type Object7100 @Directive21(argument61 : "stringValue34308") @Directive44(argument97 : ["stringValue34307"]) { + field32988: Boolean + field32989: Boolean + field32990: Boolean + field32991: Boolean + field32992: Boolean + field32993: Boolean + field32994: Boolean + field32995: Boolean + field32996: Boolean + field32997: Object7090 + field32998: Object7101 + field33011: Object7094 + field33012: Boolean + field33013: Boolean + field33014: Boolean + field33015: Object7102 + field33603: Object7128 + field33615: Boolean + field33616: Boolean + field33617: Boolean + field33618: Boolean + field33619: Boolean + field33620: Object7130 + field33635: Object7130 + field33636: Boolean + field33637: Boolean + field33638: Boolean + field33639: Boolean + field33640: Boolean + field33641: Object7131 + field33657: Boolean + field33658: Boolean + field33659: Boolean + field33660: Boolean + field33661: Object7099 + field33662: Object7091 + field33663: Object7091 + field33664: Boolean + field33665: Boolean + field33666: Object7132 + field33677: Object7132 + field33678: Boolean + field33679: Object7130 + field33680: Boolean + field33681: Boolean + field33682: [Scalar2] + field33683: Object7076 +} + +type Object7101 @Directive21(argument61 : "stringValue34310") @Directive44(argument97 : ["stringValue34309"]) { + field32999: Boolean + field33000: Boolean + field33001: Boolean + field33002: Boolean + field33003: Boolean + field33004: Boolean + field33005: Boolean + field33006: Boolean + field33007: Boolean + field33008: Object7100 + field33009: [Scalar2] + field33010: Object7076 +} + +type Object7102 @Directive21(argument61 : "stringValue34312") @Directive44(argument97 : ["stringValue34311"]) { + field33016: Boolean + field33017: Boolean + field33018: Boolean + field33019: Object7103 + field33032: Boolean + field33033: Boolean + field33034: Boolean + field33035: Boolean + field33036: Object7094 + field33037: Boolean + field33038: Boolean + field33039: Boolean + field33040: Boolean + field33041: Boolean + field33042: Boolean + field33043: Boolean + field33044: Boolean + field33045: Boolean + field33046: Boolean + field33047: Boolean + field33048: Boolean + field33049: Boolean + field33050: Boolean + field33051: Object7090 + field33052: Boolean + field33053: Boolean + field33054: Object7090 + field33055: Boolean + field33056: Object7104 + field33406: Boolean + field33407: Boolean + field33408: Boolean + field33409: Boolean + field33410: Boolean + field33411: Object7100 + field33412: Object7117 + field33535: Boolean + field33536: Boolean + field33537: Boolean + field33538: Object7090 + field33539: Object7124 + field33551: Object7090 + field33552: Object7090 + field33553: Object7125 + field33569: Object7104 + field33570: Object7105 + field33571: Object7105 + field33572: Object7126 + field33583: Boolean + field33584: Object7090 + field33585: Object7124 + field33586: Boolean + field33587: Boolean + field33588: Boolean + field33589: Boolean + field33590: Object7127 + field33600: Boolean + field33601: [Scalar2] + field33602: Object7076 +} + +type Object7103 @Directive21(argument61 : "stringValue34314") @Directive44(argument97 : ["stringValue34313"]) { + field33020: Boolean + field33021: Boolean + field33022: Boolean + field33023: Boolean + field33024: Boolean + field33025: Boolean + field33026: Boolean + field33027: Boolean + field33028: Boolean + field33029: Boolean + field33030: [Scalar2] + field33031: Object7076 +} + +type Object7104 @Directive21(argument61 : "stringValue34316") @Directive44(argument97 : ["stringValue34315"]) { + field33057: Boolean + field33058: Boolean + field33059: Boolean + field33060: Boolean + field33061: Boolean + field33062: Boolean + field33063: Boolean + field33064: Boolean + field33065: Boolean + field33066: Boolean + field33067: Boolean + field33068: Boolean + field33069: Object7094 + field33070: Boolean + field33071: Object7105 + field33373: Object7116 + field33383: Boolean + field33384: Boolean + field33385: Boolean + field33386: Boolean + field33387: Boolean + field33388: Boolean + field33389: Boolean + field33390: Object7090 + field33391: Boolean + field33392: Boolean + field33393: Boolean + field33394: Boolean + field33395: Boolean + field33396: Boolean + field33397: Boolean + field33398: Boolean + field33399: Boolean + field33400: Object7094 + field33401: Boolean + field33402: Boolean + field33403: Boolean + field33404: [Scalar2] + field33405: Object7076 +} + +type Object7105 @Directive21(argument61 : "stringValue34318") @Directive44(argument97 : ["stringValue34317"]) { + field33072: Boolean + field33073: Boolean + field33074: Boolean + field33075: Boolean + field33076: Boolean + field33077: Boolean + field33078: Boolean + field33079: Boolean + field33080: Boolean + field33081: Boolean + field33082: Boolean + field33083: Boolean + field33084: Boolean + field33085: Boolean + field33086: Boolean + field33087: Boolean + field33088: Boolean + field33089: Boolean + field33090: Boolean + field33091: Object7104 + field33092: Object7091 + field33093: Boolean + field33094: Boolean + field33095: Object7090 + field33096: Boolean + field33097: Boolean + field33098: Boolean + field33099: Boolean + field33100: Boolean + field33101: Boolean + field33102: Boolean + field33103: Boolean + field33104: Boolean + field33105: Boolean + field33106: Boolean + field33107: Boolean + field33108: Boolean + field33109: Boolean + field33110: Boolean + field33111: Object7094 + field33112: Object7106 + field33138: Boolean + field33139: Boolean + field33140: Boolean + field33141: Object7092 + field33142: Object7107 + field33175: Boolean + field33176: Boolean + field33177: Boolean + field33178: Boolean + field33179: Boolean + field33180: Boolean + field33181: Boolean + field33182: Boolean + field33183: Boolean + field33184: Boolean + field33185: Boolean + field33186: Boolean + field33187: Boolean + field33188: Boolean + field33189: Boolean + field33190: Object7094 + field33191: Object7094 + field33192: Object7094 + field33193: Boolean + field33194: Boolean + field33195: Boolean @deprecated + field33196: Boolean + field33197: Boolean + field33198: Object7102 + field33199: Boolean + field33200: Boolean + field33201: Boolean + field33202: Boolean + field33203: Boolean + field33204: Object7106 + field33205: Boolean + field33206: Boolean + field33207: Boolean + field33208: Object7094 + field33209: Boolean + field33210: Object7104 + field33211: Object7108 + field33223: Boolean + field33224: Boolean @deprecated + field33225: Boolean @deprecated + field33226: Boolean @deprecated + field33227: Boolean @deprecated + field33228: Boolean + field33229: Boolean + field33230: Boolean + field33231: Boolean + field33232: Boolean + field33233: Boolean + field33234: Boolean + field33235: Boolean + field33236: Boolean + field33237: Boolean + field33238: Boolean + field33239: Object7106 + field33240: Object7104 + field33241: Object7094 + field33242: Boolean + field33243: Boolean + field33244: Object7109 + field33272: Boolean + field33273: Object7106 + field33274: Object7110 + field33311: Boolean + field33312: Object7091 + field33313: Boolean + field33314: Object7104 + field33315: Boolean + field33316: Boolean + field33317: Object7112 + field33321: Boolean + field33322: Boolean + field33323: Boolean + field33324: Boolean + field33325: Object7113 + field33354: Boolean + field33355: Object7109 + field33356: Boolean + field33357: Object7113 + field33358: Boolean + field33359: Boolean + field33360: Boolean + field33361: Object7104 + field33362: Object7104 + field33363: Object7104 + field33364: Boolean + field33365: Boolean + field33366: Boolean + field33367: Boolean + field33368: Boolean + field33369: Boolean + field33370: Boolean + field33371: [Scalar2] + field33372: Object7076 +} + +type Object7106 @Directive21(argument61 : "stringValue34320") @Directive44(argument97 : ["stringValue34319"]) { + field33113: Boolean + field33114: Boolean + field33115: Boolean + field33116: Boolean + field33117: Boolean + field33118: Boolean + field33119: Boolean + field33120: Boolean + field33121: Boolean + field33122: Boolean + field33123: Boolean + field33124: Object7092 + field33125: Boolean + field33126: Object7105 + field33127: Boolean + field33128: Boolean + field33129: Boolean + field33130: Boolean + field33131: Boolean + field33132: Boolean + field33133: Boolean + field33134: Boolean + field33135: Boolean + field33136: [Scalar2] + field33137: Object7076 +} + +type Object7107 @Directive21(argument61 : "stringValue34322") @Directive44(argument97 : ["stringValue34321"]) { + field33143: Boolean + field33144: Boolean + field33145: Boolean + field33146: Boolean + field33147: Boolean + field33148: Boolean + field33149: Boolean + field33150: Boolean + field33151: Boolean + field33152: Boolean + field33153: Boolean + field33154: Boolean + field33155: Boolean + field33156: Boolean + field33157: Boolean + field33158: Boolean + field33159: Boolean + field33160: Boolean + field33161: Boolean + field33162: Boolean + field33163: Boolean + field33164: Boolean + field33165: Boolean + field33166: Boolean + field33167: Boolean + field33168: Boolean + field33169: Boolean + field33170: Boolean + field33171: Boolean + field33172: Boolean + field33173: Boolean + field33174: Boolean +} + +type Object7108 @Directive21(argument61 : "stringValue34324") @Directive44(argument97 : ["stringValue34323"]) { + field33212: Boolean + field33213: Object7090 + field33214: Object7105 + field33215: Boolean + field33216: Boolean + field33217: Boolean + field33218: Boolean + field33219: Boolean + field33220: Boolean + field33221: Boolean + field33222: Boolean +} + +type Object7109 @Directive21(argument61 : "stringValue34326") @Directive44(argument97 : ["stringValue34325"]) { + field33245: Boolean + field33246: Boolean + field33247: Boolean + field33248: Boolean + field33249: Boolean + field33250: Boolean + field33251: Boolean + field33252: Boolean + field33253: Boolean + field33254: Boolean + field33255: Boolean + field33256: Boolean + field33257: Boolean + field33258: Boolean + field33259: Boolean + field33260: Boolean + field33261: Boolean + field33262: Boolean + field33263: Object7090 + field33264: Object7094 + field33265: Boolean + field33266: Boolean + field33267: Boolean + field33268: Boolean + field33269: Boolean + field33270: [Scalar2] + field33271: Object7076 +} + +type Object711 @Directive20(argument58 : "stringValue3604", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3603") @Directive31 @Directive44(argument97 : ["stringValue3605", "stringValue3606"]) { + field4030: String + field4031: [String] + field4032: String + field4033: String + field4034: String + field4035: String +} + +type Object7110 @Directive21(argument61 : "stringValue34328") @Directive44(argument97 : ["stringValue34327"]) { + field33275: Boolean + field33276: Boolean + field33277: Object7091 + field33278: Object7105 + field33279: Boolean + field33280: Boolean + field33281: Object7109 + field33282: Boolean + field33283: Boolean + field33284: Boolean + field33285: Boolean + field33286: Object7111 + field33309: [Scalar2] + field33310: Object7076 +} + +type Object7111 @Directive21(argument61 : "stringValue34330") @Directive44(argument97 : ["stringValue34329"]) { + field33287: Boolean + field33288: Boolean + field33289: Boolean + field33290: Boolean + field33291: Boolean + field33292: Boolean + field33293: Boolean + field33294: Boolean + field33295: Object7110 + field33296: Object7094 + field33297: Object7090 + field33298: Object7091 + field33299: Boolean + field33300: Boolean + field33301: Boolean + field33302: Boolean + field33303: Boolean + field33304: Boolean + field33305: Object7090 + field33306: Object7110 + field33307: [Scalar2] + field33308: Object7076 +} + +type Object7112 @Directive21(argument61 : "stringValue34332") @Directive44(argument97 : ["stringValue34331"]) { + field33318: Boolean + field33319: Boolean + field33320: Boolean +} + +type Object7113 @Directive21(argument61 : "stringValue34334") @Directive44(argument97 : ["stringValue34333"]) { + field33326: Object7114 + field33330: Object7114 + field33331: Object7114 + field33332: Object7114 + field33333: Object7114 + field33334: Object7114 + field33335: Object7114 + field33336: Object7114 + field33337: Boolean + field33338: Boolean + field33339: Boolean + field33340: Boolean + field33341: Boolean + field33342: Boolean + field33343: Object7114 + field33344: Object7114 + field33345: Object7114 + field33346: Object7114 + field33347: Object7114 + field33348: Object7114 + field33349: Object7114 + field33350: Object7115 +} + +type Object7114 @Directive21(argument61 : "stringValue34336") @Directive44(argument97 : ["stringValue34335"]) { + field33327: Boolean + field33328: Boolean + field33329: Boolean +} + +type Object7115 @Directive21(argument61 : "stringValue34338") @Directive44(argument97 : ["stringValue34337"]) { + field33351: Boolean + field33352: Boolean + field33353: Boolean +} + +type Object7116 @Directive21(argument61 : "stringValue34340") @Directive44(argument97 : ["stringValue34339"]) { + field33374: Boolean + field33375: Boolean + field33376: Boolean + field33377: Boolean + field33378: Boolean + field33379: Boolean + field33380: Boolean + field33381: Boolean + field33382: Boolean +} + +type Object7117 @Directive21(argument61 : "stringValue34342") @Directive44(argument97 : ["stringValue34341"]) { + field33413: Object7118 + field33531: Boolean + field33532: Boolean + field33533: Boolean + field33534: Boolean +} + +type Object7118 @Directive21(argument61 : "stringValue34344") @Directive44(argument97 : ["stringValue34343"]) { + field33414: Boolean + field33415: Boolean + field33416: Boolean + field33417: Boolean + field33418: Boolean + field33419: Boolean + field33420: Boolean + field33421: Boolean + field33422: Boolean + field33423: Boolean + field33424: Boolean + field33425: Boolean + field33426: Boolean + field33427: Boolean + field33428: Boolean + field33429: Boolean + field33430: Boolean @deprecated + field33431: Boolean + field33432: Boolean + field33433: Boolean + field33434: Boolean + field33435: Boolean + field33436: Boolean + field33437: Boolean + field33438: Boolean + field33439: Boolean + field33440: Boolean + field33441: Boolean + field33442: Boolean + field33443: Boolean + field33444: Boolean + field33445: Boolean + field33446: Object7090 + field33447: Object7094 + field33448: Object7088 + field33449: Object7094 + field33450: Object7119 + field33459: Object7090 + field33460: Boolean + field33461: Object7120 + field33475: Boolean + field33476: Boolean + field33477: Boolean + field33478: Boolean + field33479: Boolean + field33480: Boolean + field33481: Object7121 + field33508: Object7121 + field33509: Object7122 + field33510: Boolean + field33511: Object7121 + field33512: Object7121 + field33513: Boolean + field33514: Boolean + field33515: Boolean + field33516: Object7094 + field33517: Boolean + field33518: Boolean + field33519: Object7123 + field33529: [Scalar2] + field33530: Object7076 +} + +type Object7119 @Directive21(argument61 : "stringValue34346") @Directive44(argument97 : ["stringValue34345"]) { + field33451: Boolean + field33452: Boolean + field33453: Boolean + field33454: Boolean + field33455: Boolean + field33456: Boolean + field33457: [Scalar2] + field33458: Object7076 +} + +type Object712 @Directive20(argument58 : "stringValue3608", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3607") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3609", "stringValue3610"]) { + field4036: String + field4037: String + field4038: String + field4039: Boolean + field4040: String +} + +type Object7120 @Directive21(argument61 : "stringValue34348") @Directive44(argument97 : ["stringValue34347"]) { + field33462: Boolean + field33463: Boolean + field33464: Boolean + field33465: Boolean + field33466: Boolean + field33467: Boolean + field33468: Boolean + field33469: Boolean + field33470: Boolean + field33471: Object7094 + field33472: Object7090 + field33473: [Scalar2] + field33474: Object7076 +} + +type Object7121 @Directive21(argument61 : "stringValue34350") @Directive44(argument97 : ["stringValue34349"]) { + field33482: Boolean + field33483: Boolean + field33484: Boolean + field33485: Boolean + field33486: Boolean + field33487: Boolean + field33488: Boolean + field33489: Boolean + field33490: Boolean + field33491: Boolean + field33492: Boolean + field33493: Object7118 + field33494: Object7122 + field33505: Object7094 + field33506: [Scalar2] + field33507: Object7076 +} + +type Object7122 @Directive21(argument61 : "stringValue34352") @Directive44(argument97 : ["stringValue34351"]) { + field33495: Boolean + field33496: Boolean + field33497: Boolean + field33498: Boolean + field33499: Boolean + field33500: Boolean + field33501: Boolean + field33502: Boolean + field33503: [Scalar2] + field33504: Object7076 +} + +type Object7123 @Directive21(argument61 : "stringValue34354") @Directive44(argument97 : ["stringValue34353"]) { + field33520: Boolean + field33521: Boolean @deprecated + field33522: Boolean + field33523: Boolean @deprecated + field33524: Boolean + field33525: Boolean @deprecated + field33526: Boolean + field33527: Boolean + field33528: Boolean +} + +type Object7124 @Directive21(argument61 : "stringValue34356") @Directive44(argument97 : ["stringValue34355"]) { + field33540: Boolean + field33541: Boolean + field33542: Boolean + field33543: Boolean + field33544: Boolean + field33545: Boolean + field33546: Boolean + field33547: Boolean + field33548: Object7094 + field33549: [Scalar2] + field33550: Object7076 +} + +type Object7125 @Directive21(argument61 : "stringValue34358") @Directive44(argument97 : ["stringValue34357"]) { + field33554: Boolean + field33555: Boolean + field33556: Boolean + field33557: Boolean + field33558: Boolean + field33559: Boolean + field33560: Boolean + field33561: Boolean + field33562: Boolean + field33563: Boolean + field33564: Boolean + field33565: Object7094 + field33566: Object7102 + field33567: [Scalar2] + field33568: Object7076 +} + +type Object7126 @Directive21(argument61 : "stringValue34360") @Directive44(argument97 : ["stringValue34359"]) { + field33573: Boolean + field33574: Boolean + field33575: Boolean + field33576: Boolean + field33577: Boolean + field33578: Boolean + field33579: Boolean + field33580: Object7100 + field33581: [Scalar2] + field33582: Object7076 +} + +type Object7127 @Directive21(argument61 : "stringValue34362") @Directive44(argument97 : ["stringValue34361"]) { + field33591: Boolean + field33592: Boolean + field33593: Boolean + field33594: Boolean + field33595: Boolean + field33596: Boolean + field33597: Boolean + field33598: Boolean + field33599: Boolean +} + +type Object7128 @Directive21(argument61 : "stringValue34364") @Directive44(argument97 : ["stringValue34363"]) { + field33604: Boolean + field33605: Boolean + field33606: Boolean + field33607: Boolean + field33608: Boolean + field33609: Object7094 + field33610: Object7129 + field33613: [Scalar2] + field33614: Object7076 +} + +type Object7129 @Directive21(argument61 : "stringValue34366") @Directive44(argument97 : ["stringValue34365"]) { + field33611: Boolean + field33612: Boolean +} + +type Object713 @Directive20(argument58 : "stringValue3612", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3611") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3613", "stringValue3614"]) { + field4041: String + field4042: Object655 + field4043: [Object480] + field4044: Object480 + field4045: [Object658] + field4046: Object657 + field4047: Object675 + field4048: String + field4049: [Object621] + field4050: [Object686] + field4051: Object1 + field4052: [Object2] + field4053: [Object480] +} + +type Object7130 @Directive21(argument61 : "stringValue34368") @Directive44(argument97 : ["stringValue34367"]) { + field33621: Boolean + field33622: Boolean + field33623: Boolean + field33624: Boolean + field33625: Boolean + field33626: Boolean + field33627: Object7100 + field33628: Boolean @deprecated + field33629: Boolean + field33630: Boolean + field33631: Boolean + field33632: Object7100 + field33633: [Scalar2] + field33634: Object7076 +} + +type Object7131 @Directive21(argument61 : "stringValue34370") @Directive44(argument97 : ["stringValue34369"]) { + field33642: Boolean + field33643: Boolean + field33644: Boolean + field33645: Boolean + field33646: Boolean + field33647: Boolean + field33648: Boolean + field33649: Boolean + field33650: Boolean + field33651: Boolean + field33652: Boolean + field33653: Boolean + field33654: Boolean + field33655: Boolean + field33656: Boolean +} + +type Object7132 @Directive21(argument61 : "stringValue34372") @Directive44(argument97 : ["stringValue34371"]) { + field33667: Boolean + field33668: Boolean + field33669: Boolean + field33670: Boolean + field33671: Boolean + field33672: Boolean + field33673: Boolean + field33674: Boolean + field33675: [Scalar2] + field33676: Object7076 +} + +type Object7133 @Directive21(argument61 : "stringValue34374") @Directive44(argument97 : ["stringValue34373"]) { + field33689: Boolean + field33690: Boolean + field33691: Boolean + field33692: Boolean + field33693: Boolean + field33694: Boolean + field33695: Boolean + field33696: Object7090 + field33697: Object7134 + field33726: Object7134 + field33727: Object7134 + field33728: Boolean + field33729: Object7107 + field33730: Object7107 + field33731: Boolean + field33732: Object7107 + field33733: [Scalar2] + field33734: Object7076 +} + +type Object7134 @Directive21(argument61 : "stringValue34376") @Directive44(argument97 : ["stringValue34375"]) { + field33698: Boolean + field33699: Boolean + field33700: Boolean + field33701: Boolean + field33702: Boolean + field33703: Boolean + field33704: Boolean + field33705: Boolean + field33706: Boolean + field33707: Boolean + field33708: Boolean + field33709: Boolean + field33710: Boolean + field33711: Boolean + field33712: Boolean + field33713: Object7090 + field33714: Boolean + field33715: Boolean + field33716: Boolean + field33717: Boolean + field33718: Object7124 + field33719: Object7135 + field33723: Boolean + field33724: [Scalar2] + field33725: Object7076 +} + +type Object7135 @Directive21(argument61 : "stringValue34378") @Directive44(argument97 : ["stringValue34377"]) { + field33720: Boolean + field33721: Boolean + field33722: Boolean +} + +type Object7136 @Directive21(argument61 : "stringValue34380") @Directive44(argument97 : ["stringValue34379"]) { + field33748: Int +} + +type Object7137 @Directive21(argument61 : "stringValue34382") @Directive44(argument97 : ["stringValue34381"]) { + field33754: Boolean + field33755: Boolean + field33756: Boolean + field33757: Boolean + field33758: Boolean + field33759: Boolean + field33760: Boolean + field33761: Boolean + field33762: Boolean + field33763: Boolean + field33764: Boolean + field33765: Boolean + field33766: Boolean + field33767: Boolean + field33768: Boolean + field33769: Boolean + field33770: Boolean + field33771: Boolean + field33772: Boolean + field33773: Object7091 + field33774: Boolean + field33775: Object7091 + field33776: Object7090 + field33777: [Scalar2] + field33778: Object7076 +} + +type Object7138 @Directive21(argument61 : "stringValue34384") @Directive44(argument97 : ["stringValue34383"]) { + field33785: Boolean + field33786: Boolean + field33787: Boolean + field33788: Boolean + field33789: Boolean + field33790: Boolean + field33791: Boolean + field33792: Boolean + field33793: Boolean + field33794: [Scalar2] + field33795: Object7076 +} + +type Object7139 @Directive21(argument61 : "stringValue34386") @Directive44(argument97 : ["stringValue34385"]) { + field33831: Object7140 + field33836: Object7141 + field33838: Object7142 + field33844: Object7143 + field33847: Object7144 +} + +type Object714 @Directive20(argument58 : "stringValue3616", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3615") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3617", "stringValue3618"]) { + field4054: String + field4055: Object521 + field4056: [Object532!] +} + +type Object7140 @Directive21(argument61 : "stringValue34388") @Directive44(argument97 : ["stringValue34387"]) { + field33832: Boolean + field33833: Boolean + field33834: Boolean + field33835: Boolean +} + +type Object7141 @Directive21(argument61 : "stringValue34390") @Directive44(argument97 : ["stringValue34389"]) { + field33837: Boolean +} + +type Object7142 @Directive21(argument61 : "stringValue34392") @Directive44(argument97 : ["stringValue34391"]) { + field33839: Boolean + field33840: Boolean + field33841: Boolean + field33842: Boolean + field33843: Boolean +} + +type Object7143 @Directive21(argument61 : "stringValue34394") @Directive44(argument97 : ["stringValue34393"]) { + field33845: Boolean + field33846: Boolean +} + +type Object7144 @Directive21(argument61 : "stringValue34396") @Directive44(argument97 : ["stringValue34395"]) { + field33848: Object7145 +} + +type Object7145 @Directive21(argument61 : "stringValue34398") @Directive44(argument97 : ["stringValue34397"]) { + field33849: Boolean + field33850: Boolean +} + +type Object7146 @Directive21(argument61 : "stringValue34400") @Directive44(argument97 : ["stringValue34399"]) { + field33857: Boolean + field33858: Boolean + field33859: Boolean + field33860: Boolean + field33861: Boolean + field33862: Boolean + field33863: Object7091 + field33864: [Scalar2] + field33865: Object7076 +} + +type Object7147 @Directive21(argument61 : "stringValue34402") @Directive44(argument97 : ["stringValue34401"]) { + field33893: Boolean + field33894: Boolean + field33895: Boolean + field33896: Boolean + field33897: Boolean + field33898: Boolean + field33899: Boolean + field33900: Object7090 + field33901: Boolean + field33902: Boolean + field33903: [Scalar2] + field33904: Object7076 +} + +type Object7148 @Directive21(argument61 : "stringValue34404") @Directive44(argument97 : ["stringValue34403"]) { + field33907: Boolean + field33908: Object7107 + field33909: Object7149 +} + +type Object7149 @Directive21(argument61 : "stringValue34406") @Directive44(argument97 : ["stringValue34405"]) { + field33910: Boolean + field33911: Boolean + field33912: Boolean + field33913: Boolean + field33914: Boolean + field33915: Boolean + field33916: Boolean + field33917: Boolean + field33918: Boolean + field33919: Boolean + field33920: Boolean + field33921: Boolean + field33922: Boolean + field33923: Boolean + field33924: Boolean + field33925: Boolean + field33926: Boolean + field33927: Boolean + field33928: Boolean + field33929: Boolean + field33930: Boolean + field33931: Boolean + field33932: Object7150 + field33942: Object7150 + field33943: Boolean + field33944: Boolean +} + +type Object715 @Directive20(argument58 : "stringValue3620", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3619") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3621", "stringValue3622"]) { + field4057: String + field4058: Object655! + field4059: [Object480!] + field4060: [Object656] + field4061: [Object654] + field4062: [Object686] + field4063: Object657 + field4064: Object624 + field4065: Object624 + field4066: Float + field4067: Int + field4068: Int + field4069: Object624 + field4070: Object1 + field4071: Object496 + field4072: Object661 +} + +type Object7150 @Directive21(argument61 : "stringValue34408") @Directive44(argument97 : ["stringValue34407"]) { + field33933: Boolean + field33934: Object7151 + field33941: Object7151 +} + +type Object7151 @Directive21(argument61 : "stringValue34410") @Directive44(argument97 : ["stringValue34409"]) { + field33935: Boolean + field33936: Boolean + field33937: Boolean + field33938: Boolean + field33939: Boolean + field33940: Boolean +} + +type Object7152 @Directive21(argument61 : "stringValue34412") @Directive44(argument97 : ["stringValue34411"]) { + field33955: Boolean + field33956: Boolean +} + +type Object7153 @Directive21(argument61 : "stringValue34414") @Directive44(argument97 : ["stringValue34413"]) { + field33982: Boolean + field33983: Boolean + field33984: Boolean + field33985: Boolean + field33986: Boolean + field33987: Boolean + field33988: Boolean + field33989: Object7154 + field34000: Object7090 + field34001: Object7088 + field34002: [Scalar2] + field34003: Object7076 +} + +type Object7154 @Directive21(argument61 : "stringValue34416") @Directive44(argument97 : ["stringValue34415"]) { + field33990: Boolean + field33991: Boolean + field33992: Boolean + field33993: Boolean + field33994: Boolean + field33995: Boolean + field33996: Boolean + field33997: Object7153 + field33998: [Scalar2] + field33999: Object7076 +} + +type Object7155 @Directive21(argument61 : "stringValue34418") @Directive44(argument97 : ["stringValue34417"]) { + field34015: Boolean + field34016: Boolean + field34017: Boolean + field34018: Boolean + field34019: Boolean + field34020: Boolean + field34021: Boolean +} + +type Object7156 @Directive21(argument61 : "stringValue34420") @Directive44(argument97 : ["stringValue34419"]) { + field34028: Boolean + field34029: Boolean + field34030: Boolean + field34031: Boolean + field34032: Boolean + field34033: Boolean +} + +type Object7157 @Directive21(argument61 : "stringValue34422") @Directive44(argument97 : ["stringValue34421"]) { + field34035: Boolean + field34036: Boolean + field34037: Boolean + field34038: Boolean + field34039: Boolean + field34040: Boolean + field34041: [Scalar2] + field34042: Object7076 +} + +type Object7158 @Directive21(argument61 : "stringValue34424") @Directive44(argument97 : ["stringValue34423"]) { + field34049: Boolean + field34050: Boolean + field34051: Boolean + field34052: Boolean + field34053: Boolean +} + +type Object7159 @Directive21(argument61 : "stringValue34426") @Directive44(argument97 : ["stringValue34425"]) { + field34060: Boolean + field34061: Boolean + field34062: Boolean + field34063: Boolean + field34064: Boolean + field34065: Boolean + field34066: Boolean +} + +type Object716 @Directive22(argument62 : "stringValue3623") @Directive31 @Directive44(argument97 : ["stringValue3624", "stringValue3625"]) { + field4073: String + field4074: [Object646!] +} + +type Object7160 @Directive21(argument61 : "stringValue34428") @Directive44(argument97 : ["stringValue34427"]) { + field34103: Object7161 + field34107: Object7161 + field34108: Object7161 + field34109: Object7161 + field34110: Object7161 + field34111: Object7161 + field34112: Object7161 + field34113: Object7161 + field34114: Object7161 + field34115: Object7161 @deprecated + field34116: Object7161 + field34117: Object7161 + field34118: Object7161 + field34119: Object7161 + field34120: Object7161 + field34121: Object7161 + field34122: Object7161 + field34123: Object7161 + field34124: Object7161 + field34125: Object7161 + field34126: Object7161 + field34127: Object7161 + field34128: Object7161 + field34129: Object7161 + field34130: Object7161 + field34131: Object7161 + field34132: Object7161 + field34133: Object7161 + field34134: Object7161 +} + +type Object7161 @Directive21(argument61 : "stringValue34430") @Directive44(argument97 : ["stringValue34429"]) { + field34104: Object7162 +} + +type Object7162 @Directive21(argument61 : "stringValue34432") @Directive44(argument97 : ["stringValue34431"]) { + field34105: Boolean + field34106: Boolean +} + +type Object7163 @Directive21(argument61 : "stringValue34434") @Directive44(argument97 : ["stringValue34433"]) { + field34141: Boolean + field34142: Boolean + field34143: Boolean +} + +type Object7164 @Directive21(argument61 : "stringValue34436") @Directive44(argument97 : ["stringValue34435"]) { + field34157: Boolean + field34158: Boolean + field34159: Boolean + field34160: Boolean + field34161: Boolean + field34162: Boolean + field34163: Boolean + field34164: Object7090 + field34165: Object7094 + field34166: Object7094 + field34167: Object7088 + field34168: Boolean + field34169: Boolean + field34170: Boolean + field34171: Boolean + field34172: Boolean + field34173: Boolean + field34174: Boolean + field34175: Boolean + field34176: Boolean + field34177: Boolean + field34178: Boolean + field34179: Boolean + field34180: Boolean + field34181: Boolean + field34182: Boolean + field34183: Object7165 + field34204: Object7166 + field34221: Object7167 + field34233: Boolean + field34234: Boolean + field34235: Boolean + field34236: [Scalar2] + field34237: Object7076 +} + +type Object7165 @Directive21(argument61 : "stringValue34438") @Directive44(argument97 : ["stringValue34437"]) { + field34184: Boolean + field34185: Boolean + field34186: Boolean + field34187: Boolean + field34188: Boolean + field34189: Boolean + field34190: Boolean + field34191: Boolean + field34192: Boolean + field34193: Boolean + field34194: Boolean + field34195: Boolean + field34196: Boolean + field34197: Boolean + field34198: Boolean + field34199: Boolean + field34200: Boolean + field34201: Boolean + field34202: [Scalar2] + field34203: Object7076 +} + +type Object7166 @Directive21(argument61 : "stringValue34440") @Directive44(argument97 : ["stringValue34439"]) { + field34205: Boolean + field34206: Boolean + field34207: Boolean + field34208: Boolean + field34209: Boolean + field34210: Boolean + field34211: Boolean + field34212: Boolean + field34213: Boolean + field34214: Boolean + field34215: Boolean + field34216: Boolean + field34217: Boolean + field34218: Boolean + field34219: [Scalar2] + field34220: Object7076 +} + +type Object7167 @Directive21(argument61 : "stringValue34442") @Directive44(argument97 : ["stringValue34441"]) { + field34222: Boolean + field34223: Boolean + field34224: Boolean + field34225: Boolean + field34226: Boolean + field34227: Boolean + field34228: Boolean + field34229: Boolean + field34230: Boolean + field34231: [Scalar2] + field34232: Object7076 +} + +type Object7168 @Directive21(argument61 : "stringValue34444") @Directive44(argument97 : ["stringValue34443"]) { + field34270: Boolean @deprecated + field34271: Boolean @deprecated + field34272: Boolean + field34273: Boolean @deprecated + field34274: Boolean + field34275: Boolean + field34276: Boolean + field34277: Boolean + field34278: Boolean @deprecated + field34279: Boolean @deprecated + field34280: Boolean @deprecated + field34281: Boolean @deprecated + field34282: Boolean @deprecated + field34283: Boolean @deprecated + field34284: Boolean @deprecated + field34285: Boolean + field34286: Boolean @deprecated + field34287: Boolean @deprecated + field34288: Boolean + field34289: Boolean + field34290: Boolean + field34291: Boolean + field34292: Boolean @deprecated + field34293: Boolean + field34294: Boolean + field34295: Boolean @deprecated + field34296: Boolean @deprecated + field34297: Boolean @deprecated + field34298: Boolean @deprecated + field34299: Boolean @deprecated + field34300: Boolean @deprecated + field34301: Boolean @deprecated + field34302: Boolean @deprecated + field34303: Boolean @deprecated + field34304: Boolean + field34305: Boolean @deprecated + field34306: Boolean @deprecated + field34307: Boolean + field34308: Boolean + field34309: Boolean @deprecated + field34310: Boolean + field34311: Boolean + field34312: Boolean + field34313: Boolean + field34314: Boolean + field34315: Boolean + field34316: Boolean + field34317: Boolean + field34318: Boolean + field34319: Boolean + field34320: Boolean + field34321: Boolean + field34322: Boolean + field34323: Boolean + field34324: Boolean + field34325: Boolean + field34326: Boolean + field34327: Boolean + field34328: Boolean @deprecated + field34329: Boolean + field34330: Boolean + field34331: Boolean + field34332: Boolean @deprecated + field34333: Boolean @deprecated + field34334: Boolean @deprecated + field34335: Boolean + field34336: Boolean + field34337: Boolean + field34338: Boolean + field34339: Boolean + field34340: Boolean + field34341: Boolean + field34342: Boolean + field34343: Boolean + field34344: Boolean + field34345: Boolean + field34346: Boolean + field34347: Boolean + field34348: Boolean + field34349: Boolean + field34350: Boolean + field34351: Boolean + field34352: Boolean + field34353: Boolean + field34354: Boolean + field34355: Boolean + field34356: Boolean + field34357: Boolean + field34358: Boolean + field34359: Boolean + field34360: Boolean + field34361: Boolean + field34362: Boolean + field34363: Boolean + field34364: Boolean + field34365: Boolean + field34366: Boolean + field34367: Boolean + field34368: Boolean + field34369: Boolean + field34370: Boolean + field34371: Boolean + field34372: Boolean + field34373: Boolean + field34374: Boolean + field34375: Boolean +} + +type Object7169 @Directive21(argument61 : "stringValue34446") @Directive44(argument97 : ["stringValue34445"]) { + field34417: Boolean + field34418: Boolean + field34419: Boolean +} + +type Object717 @Directive20(argument58 : "stringValue3627", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3626") @Directive31 @Directive44(argument97 : ["stringValue3628", "stringValue3629"]) { + field4075: Enum10 + field4076: String + field4077: String + field4078: Object452 + field4079: Object480 + field4080: Object480 + field4081: Int + field4082: Object452 + field4083: [Object478!] + field4084: Object452 + field4085: String + field4086: Object452 + field4087: String + field4088: [Object452!] + field4089: Object10 +} + +type Object7170 @Directive21(argument61 : "stringValue34448") @Directive44(argument97 : ["stringValue34447"]) { + field34421: Boolean + field34422: Boolean + field34423: Boolean + field34424: Boolean + field34425: Boolean + field34426: Boolean + field34427: Boolean + field34428: Boolean + field34429: Boolean + field34430: Boolean + field34431: Boolean + field34432: Boolean + field34433: Boolean + field34434: Boolean + field34435: Boolean + field34436: Boolean + field34437: Boolean + field34438: Boolean + field34439: Boolean +} + +type Object7171 @Directive21(argument61 : "stringValue34450") @Directive44(argument97 : ["stringValue34449"]) { + field34450: Boolean + field34451: Boolean + field34452: Boolean + field34453: Boolean + field34454: Boolean + field34455: Boolean + field34456: Object7172 + field34465: Object7090 + field34466: Object7143 + field34467: Object7144 + field34468: Object7142 + field34469: Object7173 + field34477: Object7174 + field34486: Object7091 + field34487: Object7141 + field34488: Object7175 + field34495: [Scalar2] + field34496: Object7076 +} + +type Object7172 @Directive21(argument61 : "stringValue34452") @Directive44(argument97 : ["stringValue34451"]) { + field34457: Boolean + field34458: Boolean + field34459: Boolean + field34460: Boolean + field34461: Object7171 + field34462: Object7145 + field34463: [Scalar2] + field34464: Object7076 +} + +type Object7173 @Directive21(argument61 : "stringValue34454") @Directive44(argument97 : ["stringValue34453"]) { + field34470: Boolean + field34471: Boolean + field34472: Boolean + field34473: Boolean + field34474: Object7171 + field34475: [Scalar2] + field34476: Object7076 +} + +type Object7174 @Directive21(argument61 : "stringValue34456") @Directive44(argument97 : ["stringValue34455"]) { + field34478: Boolean + field34479: Boolean + field34480: Boolean + field34481: Boolean + field34482: Boolean + field34483: Object7171 + field34484: [Scalar2] + field34485: Object7076 +} + +type Object7175 @Directive21(argument61 : "stringValue34458") @Directive44(argument97 : ["stringValue34457"]) { + field34489: Boolean + field34490: Boolean + field34491: Boolean + field34492: Object7171 + field34493: [Scalar2] + field34494: Object7076 +} + +type Object7176 @Directive21(argument61 : "stringValue34460") @Directive44(argument97 : ["stringValue34459"]) { + field34500: Boolean + field34501: Boolean + field34502: Boolean + field34503: Boolean + field34504: Boolean + field34505: Boolean + field34506: Boolean + field34507: Object7177 + field34532: Object7178 + field34537: Object7179 + field34542: Object7179 + field34543: Object7179 +} + +type Object7177 @Directive21(argument61 : "stringValue34462") @Directive44(argument97 : ["stringValue34461"]) { + field34508: Boolean + field34509: Boolean + field34510: Boolean + field34511: Boolean + field34512: Boolean + field34513: Boolean + field34514: Boolean + field34515: Boolean + field34516: Boolean + field34517: Boolean + field34518: Boolean + field34519: Boolean + field34520: Boolean + field34521: Boolean + field34522: Boolean + field34523: Boolean + field34524: Boolean + field34525: Boolean + field34526: Boolean + field34527: Boolean + field34528: Boolean + field34529: Boolean + field34530: Boolean + field34531: Boolean +} + +type Object7178 @Directive21(argument61 : "stringValue34464") @Directive44(argument97 : ["stringValue34463"]) { + field34533: Boolean + field34534: Boolean + field34535: Boolean + field34536: Boolean +} + +type Object7179 @Directive21(argument61 : "stringValue34466") @Directive44(argument97 : ["stringValue34465"]) { + field34538: Boolean + field34539: Boolean + field34540: Boolean + field34541: Boolean +} + +type Object718 @Directive20(argument58 : "stringValue3631", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue3630") @Directive31 @Directive44(argument97 : ["stringValue3632", "stringValue3633"]) { + field4090: String + field4091: String + field4092: [Object719] @deprecated + field4097: [Object480] +} + +type Object7180 @Directive21(argument61 : "stringValue34468") @Directive44(argument97 : ["stringValue34467"]) { + field34546: String +} + +type Object7181 @Directive21(argument61 : "stringValue34470") @Directive44(argument97 : ["stringValue34469"]) { + field34548: Boolean + field34549: Boolean + field34550: Boolean + field34551: Boolean + field34552: Boolean + field34553: Boolean + field34554: [Scalar2] + field34555: Object7076 +} + +type Object7182 @Directive21(argument61 : "stringValue34472") @Directive44(argument97 : ["stringValue34471"]) { + field34561: Boolean + field34562: Boolean + field34563: Boolean + field34564: Boolean + field34565: Boolean + field34566: Boolean + field34567: Boolean + field34568: Boolean + field34569: Object7089 + field34570: Object7183 + field34579: Object7107 + field34580: [Scalar2] + field34581: Object7076 +} + +type Object7183 @Directive21(argument61 : "stringValue34474") @Directive44(argument97 : ["stringValue34473"]) { + field34571: Boolean + field34572: Boolean + field34573: Boolean + field34574: Boolean + field34575: Boolean + field34576: Object7182 + field34577: [Scalar2] + field34578: Object7076 +} + +type Object7184 @Directive21(argument61 : "stringValue34476") @Directive44(argument97 : ["stringValue34475"]) { + field34593: Boolean + field34594: Boolean + field34595: Boolean + field34596: Boolean + field34597: Boolean + field34598: Boolean + field34599: Boolean + field34600: Boolean + field34601: Boolean + field34602: Boolean + field34603: Boolean + field34604: Boolean + field34605: Boolean + field34606: Boolean + field34607: Boolean + field34608: Boolean + field34609: Object7090 + field34610: Boolean + field34611: Object7185 + field34623: Object7186 + field34636: Boolean + field34637: Object7186 + field34638: Object7186 + field34639: [Scalar2] + field34640: Object7076 +} + +type Object7185 @Directive21(argument61 : "stringValue34478") @Directive44(argument97 : ["stringValue34477"]) { + field34612: Boolean + field34613: Boolean + field34614: Boolean + field34615: Boolean + field34616: Boolean + field34617: Boolean + field34618: Boolean + field34619: Boolean + field34620: Boolean + field34621: [Scalar2] + field34622: Object7076 +} + +type Object7186 @Directive21(argument61 : "stringValue34480") @Directive44(argument97 : ["stringValue34479"]) { + field34624: Boolean + field34625: Boolean + field34626: Boolean + field34627: Boolean + field34628: Boolean + field34629: Boolean + field34630: Boolean + field34631: Boolean + field34632: Object7184 + field34633: Boolean + field34634: [Scalar2] + field34635: Object7076 +} + +type Object7187 @Directive21(argument61 : "stringValue34482") @Directive44(argument97 : ["stringValue34481"]) { + field34652: Object7188 +} + +type Object7188 @Directive21(argument61 : "stringValue34484") @Directive44(argument97 : ["stringValue34483"]) { + field34653: Boolean + field34654: Boolean + field34655: Boolean + field34656: Boolean + field34657: Boolean + field34658: Boolean +} + +type Object7189 @Directive21(argument61 : "stringValue34486") @Directive44(argument97 : ["stringValue34485"]) { + field34665: String +} + +type Object719 @Directive22(argument62 : "stringValue3634") @Directive31 @Directive44(argument97 : ["stringValue3635", "stringValue3636"]) { + field4093: String + field4094: String + field4095: String + field4096: Interface3 +} + +type Object7190 @Directive21(argument61 : "stringValue34488") @Directive44(argument97 : ["stringValue34487"]) { + field34682: Boolean + field34683: Boolean + field34684: Boolean + field34685: Boolean + field34686: Boolean + field34687: Boolean + field34688: Boolean + field34689: Boolean + field34690: Boolean + field34691: Boolean + field34692: Boolean + field34693: Boolean + field34694: Boolean + field34695: Boolean + field34696: Object7089 + field34697: Boolean + field34698: Object7191 + field34705: Boolean + field34706: Boolean + field34707: Boolean + field34708: [Scalar2] + field34709: Object7076 +} + +type Object7191 @Directive21(argument61 : "stringValue34490") @Directive44(argument97 : ["stringValue34489"]) { + field34699: Boolean + field34700: Boolean + field34701: Boolean + field34702: Boolean + field34703: Boolean + field34704: Boolean +} + +type Object7192 @Directive21(argument61 : "stringValue34492") @Directive44(argument97 : ["stringValue34491"]) { + field34741: Boolean + field34742: Boolean + field34743: Boolean + field34744: Boolean + field34745: Boolean + field34746: Boolean + field34747: Boolean + field34748: Boolean + field34749: Boolean + field34750: Boolean + field34751: Boolean + field34752: Boolean + field34753: Boolean + field34754: Boolean + field34755: Boolean + field34756: Boolean + field34757: Object7089 @deprecated + field34758: Boolean + field34759: Object7090 + field34760: Object7107 + field34761: Object7107 + field34762: [Scalar2] + field34763: Object7076 +} + +type Object7193 @Directive21(argument61 : "stringValue34495") @Directive44(argument97 : ["stringValue34494"]) { + field34807: String + field34808: String + field34809: Float @deprecated + field34810: Float + field34811: String + field34812: Object7194 +} + +type Object7194 @Directive21(argument61 : "stringValue34497") @Directive44(argument97 : ["stringValue34496"]) { + field34813: Scalar2 + field34814: Float + field34815: Int + field34816: [Object7195] + field34822: [String] + field34823: Int + field34824: Int + field34825: [Scalar2] + field34826: Boolean + field34827: String + field34828: Int + field34829: String + field34830: Object7196 + field34847: Scalar2 + field34848: Boolean +} + +type Object7195 @Directive21(argument61 : "stringValue34499") @Directive44(argument97 : ["stringValue34498"]) { + field34817: Scalar2! + field34818: Int + field34819: Int + field34820: Int + field34821: Scalar2 +} + +type Object7196 @Directive21(argument61 : "stringValue34501") @Directive44(argument97 : ["stringValue34500"]) { + field34831: Object7197 + field34833: Object7198 + field34838: Object7200 + field34841: Object7201 + field34845: Object7202 +} + +type Object7197 @Directive21(argument61 : "stringValue34503") @Directive44(argument97 : ["stringValue34502"]) { + field34832: Boolean +} + +type Object7198 @Directive21(argument61 : "stringValue34505") @Directive44(argument97 : ["stringValue34504"]) { + field34834: Boolean + field34835: [Object7199] +} + +type Object7199 @Directive21(argument61 : "stringValue34507") @Directive44(argument97 : ["stringValue34506"]) { + field34836: Int! + field34837: Int! +} + +type Object72 @Directive21(argument61 : "stringValue301") @Directive44(argument97 : ["stringValue300"]) { + field476: String + field477: String +} + +type Object720 @Directive22(argument62 : "stringValue3637") @Directive31 @Directive44(argument97 : ["stringValue3638", "stringValue3639"]) { + field4098: Union101 + field4114: [Object724] + field4128: Int +} + +type Object7200 @Directive21(argument61 : "stringValue34509") @Directive44(argument97 : ["stringValue34508"]) { + field34839: Boolean + field34840: Int +} + +type Object7201 @Directive21(argument61 : "stringValue34511") @Directive44(argument97 : ["stringValue34510"]) { + field34842: Scalar2 + field34843: Scalar2 + field34844: Scalar2 +} + +type Object7202 @Directive21(argument61 : "stringValue34513") @Directive44(argument97 : ["stringValue34512"]) { + field34846: Scalar2 +} + +type Object7203 @Directive21(argument61 : "stringValue34515") @Directive44(argument97 : ["stringValue34514"]) { + field34849: [Object7204] +} + +type Object7204 @Directive21(argument61 : "stringValue34517") @Directive44(argument97 : ["stringValue34516"]) { + field34850: String + field34851: Int + field34852: Boolean +} + +type Object7205 @Directive21(argument61 : "stringValue34519") @Directive44(argument97 : ["stringValue34518"]) { + field34853: [Object7206] +} + +type Object7206 @Directive21(argument61 : "stringValue34521") @Directive44(argument97 : ["stringValue34520"]) { + field34854: String + field34855: String + field34856: Boolean +} + +type Object7207 @Directive21(argument61 : "stringValue34523") @Directive44(argument97 : ["stringValue34522"]) { + field34857: [Object7208] +} + +type Object7208 @Directive21(argument61 : "stringValue34525") @Directive44(argument97 : ["stringValue34524"]) { + field34858: String + field34859: String + field34860: Boolean +} + +type Object7209 @Directive21(argument61 : "stringValue34527") @Directive44(argument97 : ["stringValue34526"]) { + field34861: [Object7210] +} + +type Object721 @Directive20(argument58 : "stringValue3644", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3643") @Directive31 @Directive44(argument97 : ["stringValue3645", "stringValue3646"]) { + field4099: Object478 @Directive40 + field4100: String! @Directive41 + field4101: Enum207 @Directive40 + field4102: String @Directive41 + field4103: String @Directive40 + field4104: Object1 @Directive41 +} + +type Object7210 @Directive21(argument61 : "stringValue34529") @Directive44(argument97 : ["stringValue34528"]) { + field34862: String + field34863: String + field34864: Object7194 + field34865: Boolean + field34866: String + field34867: String + field34868: Boolean +} + +type Object7211 @Directive21(argument61 : "stringValue34531") @Directive44(argument97 : ["stringValue34530"]) { + field34869: Object7194 + field34870: String +} + +type Object7212 @Directive21(argument61 : "stringValue34533") @Directive44(argument97 : ["stringValue34532"]) { + field34871: Boolean +} + +type Object7213 @Directive21(argument61 : "stringValue34535") @Directive44(argument97 : ["stringValue34534"]) { + field34873: String + field34874: Scalar2 + field34875: [Object7214] + field34880: Boolean + field34881: Boolean + field34882: String +} + +type Object7214 @Directive21(argument61 : "stringValue34537") @Directive44(argument97 : ["stringValue34536"]) { + field34876: String + field34877: Int + field34878: Int + field34879: Boolean +} + +type Object7215 @Directive21(argument61 : "stringValue34539") @Directive44(argument97 : ["stringValue34538"]) { + field34886: String + field34887: String + field34888: Enum1750 + field34889: Union246 + field34890: Union247 + field34891: Boolean +} + +type Object7216 @Directive21(argument61 : "stringValue34541") @Directive44(argument97 : ["stringValue34540"]) { + field34893: String + field34894: String + field34895: String +} + +type Object7217 @Directive21(argument61 : "stringValue34543") @Directive44(argument97 : ["stringValue34542"]) { + field34899: String +} + +type Object7218 @Directive21(argument61 : "stringValue34545") @Directive44(argument97 : ["stringValue34544"]) { + field34901: String! + field34902: String + field34903: Enum1756 +} + +type Object7219 @Directive21(argument61 : "stringValue34548") @Directive44(argument97 : ["stringValue34547"]) { + field34906: String +} + +type Object722 implements Interface6 @Directive22(argument62 : "stringValue3651") @Directive31 @Directive44(argument97 : ["stringValue3652", "stringValue3653"]) { + field109: Interface3 + field4105: Enum10 + field4106: Int + field4107: Object10 + field4108: Float + field80: Float + field81: ID! + field82: Enum3 + field83: String + field84: Interface7 +} + +type Object7220 @Directive21(argument61 : "stringValue34555") @Directive44(argument97 : ["stringValue34554"]) { + field34908: [Object7060] +} + +type Object7221 @Directive21(argument61 : "stringValue34561") @Directive44(argument97 : ["stringValue34560"]) { + field34910: [Object7222] + field34914: Scalar1 +} + +type Object7222 @Directive21(argument61 : "stringValue34563") @Directive44(argument97 : ["stringValue34562"]) { + field34911: String + field34912: String + field34913: [Object7222] +} + +type Object7223 @Directive21(argument61 : "stringValue34569") @Directive44(argument97 : ["stringValue34568"]) { + field34916: [Object7224] +} + +type Object7224 @Directive21(argument61 : "stringValue34571") @Directive44(argument97 : ["stringValue34570"]) { + field34917: Scalar2 + field34918: Scalar2 + field34919: Scalar2 + field34920: Scalar4 + field34921: Scalar2 + field34922: String + field34923: String + field34924: [Object7225] + field34948: Boolean @deprecated + field34949: Boolean @deprecated + field34950: Boolean + field34951: Boolean @deprecated + field34952: Boolean + field34953: Boolean + field34954: Boolean + field34955: Boolean + field34956: Boolean @deprecated + field34957: Boolean @deprecated + field34958: Boolean @deprecated + field34959: Boolean @deprecated + field34960: Boolean @deprecated + field34961: Boolean @deprecated + field34962: Boolean @deprecated + field34963: Boolean + field34964: Boolean @deprecated + field34965: Boolean @deprecated + field34966: Boolean + field34967: Boolean + field34968: Boolean + field34969: Scalar2 + field34970: Scalar2 @deprecated + field34971: Scalar2 + field34972: Scalar2 + field34973: Scalar2 + field34974: Boolean + field34975: Boolean @deprecated + field34976: Boolean + field34977: Boolean + field34978: Boolean + field34979: Object4674 + field34980: Scalar2 + field34981: Scalar2 + field34982: [Object4679] + field34983: [Object4660] + field34984: Scalar2 + field34985: Scalar2 + field34986: Scalar2 + field34987: String + field34988: [Object4679] + field34989: [Object4679] + field34990: Scalar2 + field34991: String + field34992: Float + field34993: Scalar2 + field34994: Scalar2 + field34995: Boolean + field34996: Scalar2 + field34997: [Object4679] + field34998: [Object4679] + field34999: Boolean + field35000: [Int] + field35001: [Int] + field35002: String + field35003: Scalar2 + field35004: Boolean + field35005: Object7226 + field35036: Boolean + field35037: Object4705 + field35038: [Object4673] + field35039: Boolean + field35040: Scalar2 + field35041: Boolean + field35042: [String] + field35043: Int + field35044: [Object4742] + field35045: Float + field35046: Object4733 + field35047: Int + field35048: Object7225 + field35049: Float + field35050: Float + field35051: String + field35052: String + field35053: String + field35054: Object4679 + field35055: Int @deprecated + field35056: Int @deprecated + field35057: Int @deprecated + field35058: Boolean @deprecated + field35059: Boolean @deprecated + field35060: Int @deprecated + field35061: Boolean @deprecated + field35062: Boolean @deprecated + field35063: Boolean @deprecated + field35064: Int + field35065: Int @deprecated + field35066: Boolean + field35067: Int + field35068: String + field35069: Boolean + field35070: String + field35071: String + field35072: [Object4679] + field35073: Scalar2 + field35074: String + field35075: Boolean + field35076: Boolean + field35077: Boolean + field35078: [Object4717] + field35079: Object4744 + field35080: Boolean + field35081: Int + field35082: Boolean + field35083: [Object4679] + field35084: Boolean + field35085: String + field35086: Boolean + field35087: String + field35088: Object4679 + field35089: [Object4679] + field35090: [Object4729] + field35091: [Object4729] + field35092: [Object4729] + field35093: [Object4729] + field35094: [Object4729] + field35095: [Object4679] + field35096: [Object4679] + field35097: [Object4679] + field35098: [Object4679] + field35099: [String] + field35100: String + field35101: Float + field35102: [Object4698] + field35103: [Object4679] + field35104: Int + field35105: Boolean + field35106: String + field35107: Int + field35108: Int + field35109: Scalar1 + field35110: Scalar1 + field35111: Boolean + field35112: Boolean @deprecated + field35113: Boolean + field35114: Boolean + field35115: String + field35116: String + field35117: Boolean + field35118: String + field35119: Boolean + field35120: Object4684 + field35121: [Object4729] + field35122: [Object4729] + field35123: [Object4729] + field35124: Boolean + field35125: Float + field35126: String + field35127: Object7225 + field35128: Scalar2 + field35129: [Object7227] + field35149: String + field35150: String + field35151: String + field35152: [Object4700] + field35153: Object4735 @deprecated + field35154: [Object4679] + field35155: [Object4679] + field35156: [String] + field35157: Boolean + field35158: Int + field35159: Scalar2 + field35160: Scalar2 + field35161: Scalar2 + field35162: Scalar2 + field35163: Float + field35164: String + field35165: Scalar2 + field35166: String + field35167: Object4700 + field35168: Int + field35169: Int + field35170: String + field35171: Int + field35172: [Object4743] + field35173: Boolean + field35174: Int + field35175: Int @deprecated + field35176: Int + field35177: Object4720 + field35178: Float + field35179: Boolean + field35180: Boolean + field35181: Boolean + field35182: Boolean + field35183: Boolean + field35184: Boolean + field35185: Boolean + field35186: Boolean + field35187: Boolean + field35188: Boolean + field35189: Int + field35190: [Object4707] + field35191: Boolean + field35192: Boolean + field35193: Boolean + field35194: Boolean @deprecated + field35195: Scalar2 + field35196: Boolean + field35197: String + field35198: Int @deprecated + field35199: Int @deprecated + field35200: Int + field35201: Object4739 + field35202: Float + field35203: String + field35204: String + field35205: String + field35206: String + field35207: String + field35208: Int + field35209: Boolean + field35210: Int + field35211: Int + field35212: Int + field35213: Int + field35214: Int + field35215: Int + field35216: Int + field35217: Int + field35218: Int + field35219: Int + field35220: Object7230 + field35241: Float + field35242: Float + field35243: Boolean + field35244: [Object4735] + field35245: Boolean + field35246: Boolean + field35247: Boolean + field35248: Boolean + field35249: Boolean + field35250: Boolean + field35251: Boolean + field35252: Boolean + field35253: Boolean + field35254: Boolean + field35255: Boolean + field35256: Boolean + field35257: Boolean + field35258: Boolean + field35259: Boolean + field35260: Boolean + field35261: Boolean + field35262: Boolean + field35263: Boolean + field35264: Boolean + field35265: Int + field35266: Boolean + field35267: Boolean + field35268: Boolean + field35269: Boolean + field35270: String + field35271: [Object7233] + field35274: [Object7233] + field35275: Int + field35276: String + field35277: Boolean + field35278: Int + field35279: Boolean + field35280: Boolean + field35281: Boolean + field35282: Boolean + field35283: Int +} + +type Object7225 @Directive21(argument61 : "stringValue34573") @Directive44(argument97 : ["stringValue34572"]) { + field34925: Scalar2 + field34926: String + field34927: String + field34928: String + field34929: Int + field34930: String + field34931: String + field34932: String + field34933: String + field34934: String + field34935: String + field34936: String + field34937: String + field34938: String + field34939: String + field34940: Object4697 + field34941: Scalar2 + field34942: Boolean + field34943: String + field34944: String + field34945: [Object4710] + field34946: [Object4743] + field34947: Scalar2 +} + +type Object7226 @Directive21(argument61 : "stringValue34575") @Directive44(argument97 : ["stringValue34574"]) { + field35006: Scalar2 + field35007: String + field35008: String + field35009: [String] + field35010: String + field35011: String + field35012: String + field35013: String + field35014: String + field35015: [String] + field35016: String + field35017: Object4666 + field35018: String + field35019: Object4668 + field35020: Boolean + field35021: String + field35022: String + field35023: Boolean + field35024: String + field35025: String + field35026: Boolean + field35027: Boolean + field35028: Boolean + field35029: Boolean + field35030: Boolean + field35031: Boolean + field35032: Boolean + field35033: Boolean + field35034: Boolean + field35035: Boolean +} + +type Object7227 @Directive21(argument61 : "stringValue34577") @Directive44(argument97 : ["stringValue34576"]) { + field35130: String + field35131: String! + field35132: String @deprecated + field35133: String + field35134: Int + field35135: String + field35136: String + field35137: String! + field35138: Boolean + field35139: Object7228 + field35144: Boolean + field35145: Object7229 +} + +type Object7228 @Directive21(argument61 : "stringValue34579") @Directive44(argument97 : ["stringValue34578"]) { + field35140: String! + field35141: String + field35142: String! + field35143: String! +} + +type Object7229 @Directive21(argument61 : "stringValue34581") @Directive44(argument97 : ["stringValue34580"]) { + field35146: String! + field35147: String! + field35148: String! +} + +type Object723 @Directive22(argument62 : "stringValue3654") @Directive31 @Directive44(argument97 : ["stringValue3655", "stringValue3656"]) { + field4109: String + field4110: Interface3 + field4111: Interface3 + field4112: Interface6 + field4113: Object10 +} + +type Object7230 @Directive21(argument61 : "stringValue34583") @Directive44(argument97 : ["stringValue34582"]) { + field35221: Object7231 +} + +type Object7231 @Directive21(argument61 : "stringValue34585") @Directive44(argument97 : ["stringValue34584"]) { + field35222: Object4723 + field35223: Enum1757 + field35224: String + field35225: Float + field35226: String + field35227: Float + field35228: String + field35229: String + field35230: String + field35231: String + field35232: String + field35233: Boolean + field35234: Int + field35235: Int + field35236: [Object7232] + field35239: Int + field35240: String +} + +type Object7232 @Directive21(argument61 : "stringValue34588") @Directive44(argument97 : ["stringValue34587"]) { + field35237: String + field35238: [String] +} + +type Object7233 @Directive21(argument61 : "stringValue34590") @Directive44(argument97 : ["stringValue34589"]) { + field35272: Int! + field35273: String! +} + +type Object7234 @Directive21(argument61 : "stringValue34596") @Directive44(argument97 : ["stringValue34595"]) { + field35285: [Object7235] + field35360: String +} + +type Object7235 @Directive21(argument61 : "stringValue34598") @Directive44(argument97 : ["stringValue34597"]) { + field35286: Scalar2 + field35287: Float + field35288: Scalar2 + field35289: Scalar2 + field35290: String + field35291: Float + field35292: Int + field35293: [Object4672] + field35294: Int + field35295: String + field35296: String + field35297: [Object4670] + field35298: Boolean + field35299: Scalar2 + field35300: Float + field35301: Scalar2 + field35302: Object7236 + field35327: Boolean + field35328: Boolean + field35329: Int + field35330: Scalar2 + field35331: String + field35332: [String] + field35333: String + field35334: Int + field35335: Int + field35336: [Scalar2] + field35337: Boolean + field35338: String + field35339: String + field35340: String + field35341: Int + field35342: String + field35343: String + field35344: String + field35345: String + field35346: [Object4670] + field35347: Int + field35348: Scalar2 + field35349: String + field35350: String + field35351: String + field35352: String + field35353: String + field35354: String + field35355: String + field35356: Boolean + field35357: String + field35358: String + field35359: String +} + +type Object7236 @Directive21(argument61 : "stringValue34600") @Directive44(argument97 : ["stringValue34599"]) { + field35303: Scalar2 + field35304: String + field35305: String + field35306: String + field35307: Scalar2 + field35308: String + field35309: String + field35310: Int + field35311: Int + field35312: Int + field35313: String + field35314: String + field35315: String + field35316: Boolean + field35317: String + field35318: Int + field35319: Int + field35320: [String] + field35321: [Int] + field35322: [Object4698] + field35323: Int + field35324: [Object4698] + field35325: [Object4697] + field35326: String +} + +type Object7237 @Directive21(argument61 : "stringValue34605") @Directive44(argument97 : ["stringValue34604"]) { + field35362: [Object7238] +} + +type Object7238 @Directive21(argument61 : "stringValue34607") @Directive44(argument97 : ["stringValue34606"]) { + field35363: Union249 +} + +type Object7239 @Directive21(argument61 : "stringValue34610") @Directive44(argument97 : ["stringValue34609"]) { + field35364: String + field35365: String + field35366: String + field35367: String + field35368: String + field35369: [Object7240] + field35377: String + field35378: String + field35379: String +} + +type Object724 @Directive22(argument62 : "stringValue3657") @Directive31 @Directive44(argument97 : ["stringValue3658", "stringValue3659"]) { + field4115: String + field4116: [Object725] @deprecated + field4127: [Interface51] +} + +type Object7240 @Directive21(argument61 : "stringValue34612") @Directive44(argument97 : ["stringValue34611"]) { + field35370: String + field35371: String + field35372: [Object7241] + field35375: Boolean + field35376: Enum1758 +} + +type Object7241 @Directive21(argument61 : "stringValue34614") @Directive44(argument97 : ["stringValue34613"]) { + field35373: String + field35374: String +} + +type Object7242 @Directive21(argument61 : "stringValue34621") @Directive44(argument97 : ["stringValue34620"]) { + field35381: [Object7243] + field35412: Int! +} + +type Object7243 @Directive21(argument61 : "stringValue34623") @Directive44(argument97 : ["stringValue34622"]) { + field35382: Int + field35383: String + field35384: String + field35385: [String] + field35386: [String] + field35387: Object7244 + field35406: String + field35407: Enum1759 + field35408: String + field35409: String + field35410: Int + field35411: String +} + +type Object7244 @Directive21(argument61 : "stringValue34625") @Directive44(argument97 : ["stringValue34624"]) { + field35388: String + field35389: [Object7245] + field35394: Boolean + field35395: String + field35396: Boolean + field35397: String + field35398: String + field35399: Int + field35400: String + field35401: String + field35402: Scalar2 + field35403: String + field35404: Int + field35405: String +} + +type Object7245 @Directive21(argument61 : "stringValue34627") @Directive44(argument97 : ["stringValue34626"]) { + field35390: String + field35391: String + field35392: String + field35393: String +} + +type Object7246 @Directive21(argument61 : "stringValue34634") @Directive44(argument97 : ["stringValue34633"]) { + field35414: [Object7247] + field35437: [Object7254] + field35443: Object7255 +} + +type Object7247 @Directive21(argument61 : "stringValue34636") @Directive44(argument97 : ["stringValue34635"]) { + field35415: Enum1760! + field35416: Union250! +} + +type Object7248 @Directive21(argument61 : "stringValue34640") @Directive44(argument97 : ["stringValue34639"]) { + field35417: Enum1761! + field35418: String! + field35419: String +} + +type Object7249 @Directive21(argument61 : "stringValue34643") @Directive44(argument97 : ["stringValue34642"]) { + field35420: Boolean + field35421: Enum1759 + field35422: String + field35423: String + field35424: [String] + field35425: Object7250 + field35429: Object7251 +} + +type Object725 implements Interface51 @Directive22(argument62 : "stringValue3663") @Directive31 @Directive44(argument97 : ["stringValue3664", "stringValue3665"]) { + field4117: Interface3 + field4118: Object1 + field4119: String! + field4120: String + field4121: Object722 @deprecated + field4122: Boolean + field4123: Interface6 + field4124: Int + field4125: String + field4126: String +} + +type Object7250 @Directive21(argument61 : "stringValue34645") @Directive44(argument97 : ["stringValue34644"]) { + field35426: Enum1762! + field35427: String! + field35428: String +} + +type Object7251 @Directive21(argument61 : "stringValue34648") @Directive44(argument97 : ["stringValue34647"]) { + field35430: String! + field35431: Enum1763! + field35432: String + field35433: Int! + field35434: Enum1764! +} + +type Object7252 @Directive21(argument61 : "stringValue34652") @Directive44(argument97 : ["stringValue34651"]) { + field35435: String! +} + +type Object7253 @Directive21(argument61 : "stringValue34654") @Directive44(argument97 : ["stringValue34653"]) { + field35436: String! +} + +type Object7254 @Directive21(argument61 : "stringValue34656") @Directive44(argument97 : ["stringValue34655"]) { + field35438: String! + field35439: Boolean! + field35440: [Object7247]! + field35441: String + field35442: Scalar2 +} + +type Object7255 @Directive21(argument61 : "stringValue34658") @Directive44(argument97 : ["stringValue34657"]) { + field35444: Boolean + field35445: Enum1765 +} + +type Object7256 @Directive21(argument61 : "stringValue34665") @Directive44(argument97 : ["stringValue34664"]) { + field35447: [Object7257] +} + +type Object7257 @Directive21(argument61 : "stringValue34667") @Directive44(argument97 : ["stringValue34666"]) { + field35448: Scalar2! + field35449: Scalar2 + field35450: String + field35451: String! +} + +type Object7258 @Directive21(argument61 : "stringValue34673") @Directive44(argument97 : ["stringValue34672"]) { + field35453: [Object4700] +} + +type Object7259 @Directive21(argument61 : "stringValue34683") @Directive44(argument97 : ["stringValue34682"]) { + field35456: [Object4646] +} + +type Object726 @Directive22(argument62 : "stringValue3666") @Directive31 @Directive44(argument97 : ["stringValue3667", "stringValue3668"]) { + field4129: [Object727] + field4133: Float + field4134: Float + field4135: Float + field4136: String + field4137: [Object728] + field4140: [Object729] + field4143: Enum208 + field4144: Enum209 +} + +type Object7260 @Directive21(argument61 : "stringValue34689") @Directive44(argument97 : ["stringValue34688"]) { + field35458: Object7261 +} + +type Object7261 @Directive21(argument61 : "stringValue34691") @Directive44(argument97 : ["stringValue34690"]) { + field35459: String +} + +type Object7262 @Directive21(argument61 : "stringValue34697") @Directive44(argument97 : ["stringValue34696"]) { + field35461: Object7263 +} + +type Object7263 @Directive21(argument61 : "stringValue34699") @Directive44(argument97 : ["stringValue34698"]) { + field35462: String + field35463: Boolean +} + +type Object7264 @Directive21(argument61 : "stringValue34704") @Directive44(argument97 : ["stringValue34703"]) { + field35465: [Object4674] +} + +type Object7265 @Directive21(argument61 : "stringValue34710") @Directive44(argument97 : ["stringValue34709"]) { + field35467: [Object4649] +} + +type Object7266 @Directive21(argument61 : "stringValue34719") @Directive44(argument97 : ["stringValue34718"]) { + field35470: [Object7267] + field35485: String + field35486: String + field35487: Boolean +} + +type Object7267 @Directive21(argument61 : "stringValue34721") @Directive44(argument97 : ["stringValue34720"]) { + field35471: Object4656 + field35472: [Object7268] +} + +type Object7268 @Directive21(argument61 : "stringValue34723") @Directive44(argument97 : ["stringValue34722"]) { + field35473: Scalar2 + field35474: Scalar2 + field35475: String + field35476: Int + field35477: Int + field35478: Scalar2 + field35479: Int + field35480: String + field35481: String + field35482: String + field35483: String + field35484: String +} + +type Object7269 @Directive21(argument61 : "stringValue34729") @Directive44(argument97 : ["stringValue34728"]) { + field35489: Scalar2! + field35490: [Union251!]! + field35562: Object7287 @deprecated + field35568: [Object7288!]! + field35572: Int + field35573: [Object7289!]! + field35576: Scalar2! +} + +type Object727 @Directive22(argument62 : "stringValue3669") @Directive31 @Directive44(argument97 : ["stringValue3670", "stringValue3671"]) { + field4130: String + field4131: Float + field4132: Float +} + +type Object7270 @Directive21(argument61 : "stringValue34732") @Directive44(argument97 : ["stringValue34731"]) { + field35491: [Object7271!]! + field35532: String! + field35533: String! +} + +type Object7271 @Directive21(argument61 : "stringValue34734") @Directive44(argument97 : ["stringValue34733"]) { + field35492: String! + field35493: Int! + field35494: String! + field35495: Boolean + field35496: Object7272! +} + +type Object7272 @Directive21(argument61 : "stringValue34736") @Directive44(argument97 : ["stringValue34735"]) { + field35497: String! + field35498: String! + field35499: String! + field35500: String + field35501: [Object7273!] + field35505: Int + field35506: Object7274 + field35513: [Object7276!] + field35517: Object7277 + field35520: Object7278 + field35525: Object7280 + field35531: String! +} + +type Object7273 @Directive21(argument61 : "stringValue34738") @Directive44(argument97 : ["stringValue34737"]) { + field35502: String! + field35503: String! + field35504: String! +} + +type Object7274 @Directive21(argument61 : "stringValue34740") @Directive44(argument97 : ["stringValue34739"]) { + field35507: Object7275! + field35512: Object7275! +} + +type Object7275 @Directive21(argument61 : "stringValue34742") @Directive44(argument97 : ["stringValue34741"]) { + field35508: String! + field35509: String! + field35510: String! + field35511: String! +} + +type Object7276 @Directive21(argument61 : "stringValue34744") @Directive44(argument97 : ["stringValue34743"]) { + field35514: String! + field35515: String! + field35516: Int! +} + +type Object7277 @Directive21(argument61 : "stringValue34746") @Directive44(argument97 : ["stringValue34745"]) { + field35518: String! + field35519: String! +} + +type Object7278 @Directive21(argument61 : "stringValue34748") @Directive44(argument97 : ["stringValue34747"]) { + field35521: String! + field35522: [Object7279!]! +} + +type Object7279 @Directive21(argument61 : "stringValue34750") @Directive44(argument97 : ["stringValue34749"]) { + field35523: String! + field35524: Int! +} + +type Object728 @Directive22(argument62 : "stringValue3672") @Directive31 @Directive44(argument97 : ["stringValue3673", "stringValue3674"]) { + field4138: String + field4139: Enum208 +} + +type Object7280 @Directive21(argument61 : "stringValue34752") @Directive44(argument97 : ["stringValue34751"]) { + field35526: String! + field35527: [Object7281!]! +} + +type Object7281 @Directive21(argument61 : "stringValue34754") @Directive44(argument97 : ["stringValue34753"]) { + field35528: String! + field35529: String! + field35530: Boolean! +} + +type Object7282 @Directive21(argument61 : "stringValue34756") @Directive44(argument97 : ["stringValue34755"]) { + field35534: [Object7283!]! + field35537: String! + field35538: String! +} + +type Object7283 @Directive21(argument61 : "stringValue34758") @Directive44(argument97 : ["stringValue34757"]) { + field35535: String! + field35536: String! +} + +type Object7284 @Directive21(argument61 : "stringValue34760") @Directive44(argument97 : ["stringValue34759"]) { + field35539: [Object7285!]! + field35548: String! + field35549: String! +} + +type Object7285 @Directive21(argument61 : "stringValue34762") @Directive44(argument97 : ["stringValue34761"]) { + field35540: String! + field35541: String! + field35542: String! + field35543: String! + field35544: [Int!]! + field35545: Object7272! + field35546: String + field35547: Boolean! +} + +type Object7286 @Directive21(argument61 : "stringValue34764") @Directive44(argument97 : ["stringValue34763"]) { + field35550: Scalar2! + field35551: String! + field35552: String + field35553: String! + field35554: String! + field35555: Int! + field35556: String! + field35557: String + field35558: String + field35559: Boolean! + field35560: String! + field35561: String! +} + +type Object7287 @Directive21(argument61 : "stringValue34766") @Directive44(argument97 : ["stringValue34765"]) { + field35563: String! @deprecated + field35564: [String!]! @deprecated + field35565: String! @deprecated + field35566: Object7275! @deprecated + field35567: [Object7275!]! @deprecated +} + +type Object7288 @Directive21(argument61 : "stringValue34768") @Directive44(argument97 : ["stringValue34767"]) { + field35569: Scalar2! + field35570: Boolean! + field35571: String! +} + +type Object7289 @Directive21(argument61 : "stringValue34770") @Directive44(argument97 : ["stringValue34769"]) { + field35574: String! + field35575: Int! +} + +type Object729 @Directive22(argument62 : "stringValue3678") @Directive31 @Directive44(argument97 : ["stringValue3679", "stringValue3680"]) { + field4141: String + field4142: Enum209 +} + +type Object7290 @Directive21(argument61 : "stringValue34776") @Directive44(argument97 : ["stringValue34775"]) { + field35578: Object7291 +} + +type Object7291 @Directive21(argument61 : "stringValue34778") @Directive44(argument97 : ["stringValue34777"]) { + field35579: String! + field35580: Scalar1! +} + +type Object7292 @Directive21(argument61 : "stringValue34784") @Directive44(argument97 : ["stringValue34783"]) { + field35582: [Object4663]! + field35583: Object7293! +} + +type Object7293 @Directive21(argument61 : "stringValue34786") @Directive44(argument97 : ["stringValue34785"]) { + field35584: Int + field35585: Boolean +} + +type Object7294 @Directive21(argument61 : "stringValue34792") @Directive44(argument97 : ["stringValue34791"]) { + field35587: Object7295 +} + +type Object7295 @Directive21(argument61 : "stringValue34794") @Directive44(argument97 : ["stringValue34793"]) { + field35588: Scalar1 + field35589: Scalar1 + field35590: Scalar1 + field35591: Scalar1 + field35592: [Object7296] + field35598: Scalar1 + field35599: Scalar1 + field35600: Scalar1 + field35601: Scalar1 + field35602: [Int] + field35603: Scalar1 + field35604: Scalar1 + field35605: Scalar1 + field35606: [Int] + field35607: Scalar1 + field35608: Scalar1 + field35609: Scalar1 + field35610: [Object7297] + field35613: Scalar1 + field35614: Scalar1 + field35615: Scalar1 + field35616: Scalar1 + field35617: Scalar1 + field35618: [String] @deprecated + field35619: [Float] + field35620: Scalar1 + field35621: Scalar1 + field35622: Scalar1 + field35623: Object7298 + field35632: Scalar1 + field35633: Scalar1 + field35634: [String] +} + +type Object7296 @Directive21(argument61 : "stringValue34796") @Directive44(argument97 : ["stringValue34795"]) { + field35593: String + field35594: String + field35595: String + field35596: Int + field35597: [String] +} + +type Object7297 @Directive21(argument61 : "stringValue34798") @Directive44(argument97 : ["stringValue34797"]) { + field35611: String + field35612: String +} + +type Object7298 @Directive21(argument61 : "stringValue34800") @Directive44(argument97 : ["stringValue34799"]) { + field35624: Scalar1 + field35625: Scalar1 + field35626: Scalar1 + field35627: Scalar1 + field35628: Scalar1 + field35629: [Int] + field35630: [Int] + field35631: [Int] +} + +type Object7299 @Directive21(argument61 : "stringValue34810") @Directive44(argument97 : ["stringValue34809"]) { + field35637: Boolean + field35638: String +} + +type Object73 @Directive21(argument61 : "stringValue303") @Directive44(argument97 : ["stringValue302"]) { + field479: String + field480: String + field481: String + field482: String + field483: Enum33 +} + +type Object730 @Directive20(argument58 : "stringValue3685", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3684") @Directive31 @Directive44(argument97 : ["stringValue3686", "stringValue3687"]) { + field4145: Object731 + field4149: Boolean + field4150: Boolean + field4151: String + field4152: String + field4153: Boolean + field4154: Boolean +} + +type Object7300 @Directive44(argument97 : ["stringValue34811"]) { + field35640(argument2058: InputObject1581!): Object7301 @Directive35(argument89 : "stringValue34813", argument90 : false, argument91 : "stringValue34812", argument93 : "stringValue34814", argument94 : false) + field35650(argument2059: InputObject1582!): Object7302 @Directive35(argument89 : "stringValue34819", argument90 : false, argument91 : "stringValue34818", argument93 : "stringValue34820", argument94 : false) +} + +type Object7301 @Directive21(argument61 : "stringValue34817") @Directive44(argument97 : ["stringValue34816"]) { + field35641: Boolean + field35642: String + field35643: String + field35644: String + field35645: Scalar4 + field35646: Float + field35647: Scalar2 + field35648: String + field35649: String +} + +type Object7302 @Directive21(argument61 : "stringValue34824") @Directive44(argument97 : ["stringValue34823"]) { + field35651: [Object7303] + field35669: Scalar1 + field35670: Object7305 +} + +type Object7303 @Directive21(argument61 : "stringValue34826") @Directive44(argument97 : ["stringValue34825"]) { + field35652: String + field35653: String + field35654: String + field35655: String + field35656: String + field35657: String + field35658: String + field35659: String + field35660: [Object7304] + field35665: Enum1768 + field35666: String + field35667: Scalar1 + field35668: String +} + +type Object7304 @Directive21(argument61 : "stringValue34828") @Directive44(argument97 : ["stringValue34827"]) { + field35661: String + field35662: String + field35663: Enum1767 + field35664: String +} + +type Object7305 @Directive21(argument61 : "stringValue34832") @Directive44(argument97 : ["stringValue34831"]) { + field35671: Object7306 + field35697: Object7315 + field35705: Object7316 +} + +type Object7306 @Directive21(argument61 : "stringValue34834") @Directive44(argument97 : ["stringValue34833"]) { + field35672: Enum1766 + field35673: Int @deprecated + field35674: Object7307 + field35696: Object7307 +} + +type Object7307 @Directive21(argument61 : "stringValue34836") @Directive44(argument97 : ["stringValue34835"]) { + field35675: String + field35676: [Union252] + field35695: String +} + +type Object7308 @Directive21(argument61 : "stringValue34839") @Directive44(argument97 : ["stringValue34838"]) { + field35677: String + field35678: String + field35679: [Enum1769] +} + +type Object7309 @Directive21(argument61 : "stringValue34842") @Directive44(argument97 : ["stringValue34841"]) { + field35680: String + field35681: Enum1770 +} + +type Object731 @Directive22(argument62 : "stringValue3688") @Directive31 @Directive44(argument97 : ["stringValue3689", "stringValue3690"]) { + field4146: String + field4147: Boolean + field4148: String +} + +type Object7310 @Directive21(argument61 : "stringValue34845") @Directive44(argument97 : ["stringValue34844"]) { + field35682: Scalar2 + field35683: String + field35684: String + field35685: [Enum1769] +} + +type Object7311 @Directive21(argument61 : "stringValue34847") @Directive44(argument97 : ["stringValue34846"]) { + field35686: String + field35687: Enum1771 + field35688: [Object7312] + field35694: [Enum1769] +} + +type Object7312 @Directive21(argument61 : "stringValue34850") @Directive44(argument97 : ["stringValue34849"]) { + field35689: String + field35690: Union253 +} + +type Object7313 @Directive21(argument61 : "stringValue34853") @Directive44(argument97 : ["stringValue34852"]) { + field35691: String +} + +type Object7314 @Directive21(argument61 : "stringValue34855") @Directive44(argument97 : ["stringValue34854"]) { + field35692: Scalar2 + field35693: String +} + +type Object7315 @Directive21(argument61 : "stringValue34857") @Directive44(argument97 : ["stringValue34856"]) { + field35698: Scalar2 + field35699: String + field35700: String + field35701: String + field35702: String + field35703: String + field35704: Int +} + +type Object7316 @Directive21(argument61 : "stringValue34859") @Directive44(argument97 : ["stringValue34858"]) { + field35706: Scalar1 + field35707: Scalar1 + field35708: Scalar1 +} + +type Object7317 @Directive44(argument97 : ["stringValue34860"]) { + field35710(argument2060: InputObject1583!): Object7318 @Directive35(argument89 : "stringValue34862", argument90 : false, argument91 : "stringValue34861", argument92 : 589, argument93 : "stringValue34863", argument94 : false) + field35712(argument2061: InputObject1584!): Object7319 @Directive35(argument89 : "stringValue34868", argument90 : true, argument91 : "stringValue34867", argument92 : 590, argument93 : "stringValue34869", argument94 : false) + field35716(argument2062: InputObject1585!): Object7320 @Directive35(argument89 : "stringValue34875", argument90 : false, argument91 : "stringValue34874", argument92 : 591, argument93 : "stringValue34876", argument94 : false) + field35718(argument2063: InputObject1586!): Object7321 @Directive35(argument89 : "stringValue34881", argument90 : true, argument91 : "stringValue34880", argument92 : 592, argument93 : "stringValue34882", argument94 : false) + field35803(argument2064: InputObject1587!): Object7336 @Directive35(argument89 : "stringValue34918", argument90 : true, argument91 : "stringValue34917", argument92 : 593, argument93 : "stringValue34919", argument94 : false) + field35887(argument2065: InputObject1592!): Object7347 @Directive35(argument89 : "stringValue34953", argument90 : true, argument91 : "stringValue34952", argument92 : 594, argument93 : "stringValue34954", argument94 : false) + field35889(argument2066: InputObject1593!): Object7348 @Directive35(argument89 : "stringValue34959", argument90 : true, argument91 : "stringValue34958", argument92 : 595, argument93 : "stringValue34960", argument94 : false) + field35915: Object7350 @Directive35(argument89 : "stringValue34967", argument90 : false, argument91 : "stringValue34966", argument92 : 596, argument93 : "stringValue34968", argument94 : false) + field35977(argument2067: InputObject1594!): Object7358 @Directive35(argument89 : "stringValue34987", argument90 : false, argument91 : "stringValue34986", argument92 : 597, argument93 : "stringValue34988", argument94 : false) + field35986(argument2068: InputObject1595!): Object7360 @Directive35(argument89 : "stringValue34995", argument90 : false, argument91 : "stringValue34994", argument92 : 598, argument93 : "stringValue34996", argument94 : false) +} + +type Object7318 @Directive21(argument61 : "stringValue34866") @Directive44(argument97 : ["stringValue34865"]) { + field35711: Object4767 +} + +type Object7319 @Directive21(argument61 : "stringValue34873") @Directive44(argument97 : ["stringValue34872"]) { + field35713: String! + field35714: String! + field35715: Scalar4! +} + +type Object732 @Directive20(argument58 : "stringValue3692", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3691") @Directive31 @Directive44(argument97 : ["stringValue3693", "stringValue3694"]) { + field4155: String + field4156: String + field4157: Object480 + field4158: Object514 + field4159: Object733 + field4162: [Object480!] + field4163: Object734 + field4168: Object548 +} + +type Object7320 @Directive21(argument61 : "stringValue34879") @Directive44(argument97 : ["stringValue34878"]) { + field35717: Scalar1! +} + +type Object7321 @Directive21(argument61 : "stringValue34885") @Directive44(argument97 : ["stringValue34884"]) { + field35719: Object7322 +} + +type Object7322 @Directive21(argument61 : "stringValue34887") @Directive44(argument97 : ["stringValue34886"]) { + field35720: Enum1773! + field35721: Object7323 + field35732: Object7327 + field35745: Object7331 + field35789: Boolean! + field35790: Object7334! + field35797: Object7335 +} + +type Object7323 @Directive21(argument61 : "stringValue34890") @Directive44(argument97 : ["stringValue34889"]) { + field35722: [Object7324]! + field35731: [Object7324]! +} + +type Object7324 @Directive21(argument61 : "stringValue34892") @Directive44(argument97 : ["stringValue34891"]) { + field35723: String! + field35724: String + field35725: String! + field35726: String! + field35727: Enum1051 + field35728: Object7325 +} + +type Object7325 @Directive21(argument61 : "stringValue34894") @Directive44(argument97 : ["stringValue34893"]) { + field35729: Object7326 +} + +type Object7326 @Directive21(argument61 : "stringValue34896") @Directive44(argument97 : ["stringValue34895"]) { + field35730: Scalar2! +} + +type Object7327 @Directive21(argument61 : "stringValue34898") @Directive44(argument97 : ["stringValue34897"]) { + field35733: [Object7328]! + field35736: String + field35737: String + field35738: Enum1775 + field35739: String + field35740: Enum1051 + field35741: Object7325 + field35742: Object7329 +} + +type Object7328 @Directive21(argument61 : "stringValue34900") @Directive44(argument97 : ["stringValue34899"]) { + field35734: String! + field35735: Enum1774! +} + +type Object7329 @Directive21(argument61 : "stringValue34904") @Directive44(argument97 : ["stringValue34903"]) { + field35743: Object7330 +} + +type Object733 @Directive20(argument58 : "stringValue3696", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3695") @Directive31 @Directive44(argument97 : ["stringValue3697", "stringValue3698"]) { + field4160: Object478 + field4161: Object478 +} + +type Object7330 @Directive21(argument61 : "stringValue34906") @Directive44(argument97 : ["stringValue34905"]) { + field35744: Scalar2! +} + +type Object7331 @Directive21(argument61 : "stringValue34908") @Directive44(argument97 : ["stringValue34907"]) { + field35746: Scalar2! + field35747: Float + field35748: Float + field35749: String + field35750: [Object7332]! + field35786: String! + field35787: String + field35788: Boolean! +} + +type Object7332 @Directive21(argument61 : "stringValue34910") @Directive44(argument97 : ["stringValue34909"]) { + field35751: Scalar2 + field35752: Scalar4 + field35753: Scalar4 + field35754: Scalar2 + field35755: String + field35756: String + field35757: String + field35758: String + field35759: String + field35760: String + field35761: String + field35762: Int + field35763: Boolean + field35764: Object7333 + field35780: [String] + field35781: Int + field35782: Int + field35783: Int + field35784: Int + field35785: Boolean +} + +type Object7333 @Directive21(argument61 : "stringValue34912") @Directive44(argument97 : ["stringValue34911"]) { + field35765: String + field35766: String + field35767: String + field35768: String + field35769: String + field35770: String + field35771: String + field35772: String + field35773: String + field35774: String + field35775: String + field35776: String + field35777: String + field35778: String + field35779: String +} + +type Object7334 @Directive21(argument61 : "stringValue34914") @Directive44(argument97 : ["stringValue34913"]) { + field35791: Scalar2! + field35792: Scalar2! + field35793: String + field35794: String + field35795: String + field35796: String +} + +type Object7335 @Directive21(argument61 : "stringValue34916") @Directive44(argument97 : ["stringValue34915"]) { + field35798: Scalar2 + field35799: Scalar2 + field35800: String + field35801: String + field35802: Boolean +} + +type Object7336 @Directive21(argument61 : "stringValue34931") @Directive44(argument97 : ["stringValue34930"]) { + field35804: Object7337 + field35817: Object7320 + field35818: Object7339 +} + +type Object7337 @Directive21(argument61 : "stringValue34933") @Directive44(argument97 : ["stringValue34932"]) { + field35805: Object7335! + field35806: Object7335! + field35807: String + field35808: String + field35809: [Object7338] + field35811: String + field35812: String + field35813: String + field35814: String + field35815: String + field35816: String +} + +type Object7338 @Directive21(argument61 : "stringValue34935") @Directive44(argument97 : ["stringValue34934"]) { + field35810: String +} + +type Object7339 @Directive21(argument61 : "stringValue34937") @Directive44(argument97 : ["stringValue34936"]) { + field35819: [Object7340] + field35879: Scalar2 + field35880: [Scalar2] + field35881: Object7346 +} + +type Object734 @Directive20(argument58 : "stringValue3700", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue3699") @Directive31 @Directive44(argument97 : ["stringValue3701", "stringValue3702"]) { + field4164: Int! + field4165: Int! + field4166: Int! + field4167: String! +} + +type Object7340 @Directive21(argument61 : "stringValue34939") @Directive44(argument97 : ["stringValue34938"]) { + field35820: Object7341 + field35855: Object7343 +} + +type Object7341 @Directive21(argument61 : "stringValue34941") @Directive44(argument97 : ["stringValue34940"]) { + field35821: Scalar2! + field35822: String + field35823: [String] + field35824: String + field35825: String + field35826: String + field35827: String + field35828: String + field35829: Scalar4 + field35830: Scalar4 + field35831: Scalar2 + field35832: Enum1778 + field35833: Scalar2 + field35834: Scalar3 + field35835: String + field35836: Scalar2 + field35837: String + field35838: String + field35839: Enum1779 + field35840: Scalar2 + field35841: Enum1780 + field35842: String + field35843: Object7342 + field35851: Scalar2 + field35852: String + field35853: [String] + field35854: Int +} + +type Object7342 @Directive21(argument61 : "stringValue34943") @Directive44(argument97 : ["stringValue34942"]) { + field35844: Scalar2 + field35845: Boolean + field35846: Boolean + field35847: Scalar4 + field35848: Scalar4 + field35849: Scalar4 + field35850: Scalar4 +} + +type Object7343 @Directive21(argument61 : "stringValue34945") @Directive44(argument97 : ["stringValue34944"]) { + field35856: Object7335 + field35857: Object7335 + field35858: String + field35859: Int + field35860: String + field35861: Object7344 + field35878: String +} + +type Object7344 @Directive21(argument61 : "stringValue34947") @Directive44(argument97 : ["stringValue34946"]) { + field35862: String + field35863: String + field35864: String + field35865: String + field35866: String! + field35867: String! + field35868: [Object7345] + field35872: Boolean! + field35873: Int + field35874: Int + field35875: Scalar2 + field35876: Int + field35877: String +} + +type Object7345 @Directive21(argument61 : "stringValue34949") @Directive44(argument97 : ["stringValue34948"]) { + field35869: String! + field35870: String! + field35871: Boolean! +} + +type Object7346 @Directive21(argument61 : "stringValue34951") @Directive44(argument97 : ["stringValue34950"]) { + field35882: Scalar2! + field35883: String + field35884: String + field35885: Boolean + field35886: Scalar2 +} + +type Object7347 @Directive21(argument61 : "stringValue34957") @Directive44(argument97 : ["stringValue34956"]) { + field35888: Object7337 +} + +type Object7348 @Directive21(argument61 : "stringValue34963") @Directive44(argument97 : ["stringValue34962"]) { + field35890: [Object7349] +} + +type Object7349 @Directive21(argument61 : "stringValue34965") @Directive44(argument97 : ["stringValue34964"]) { + field35891: Scalar2! + field35892: Scalar2! + field35893: Scalar2 + field35894: String + field35895: String + field35896: String + field35897: String + field35898: Scalar2 + field35899: Scalar2 + field35900: Int + field35901: Int + field35902: String + field35903: Object7335! + field35904: Object7335! + field35905: Object7335! + field35906: Int + field35907: Object7344! + field35908: String + field35909: Boolean + field35910: Boolean + field35911: Boolean + field35912: String + field35913: String + field35914: String +} + +type Object735 @Directive22(argument62 : "stringValue3703") @Directive31 @Directive44(argument97 : ["stringValue3704", "stringValue3705"]) { + field4169: Float + field4170: Float +} + +type Object7350 @Directive21(argument61 : "stringValue34970") @Directive44(argument97 : ["stringValue34969"]) { + field35916: [Object7351]! +} + +type Object7351 @Directive21(argument61 : "stringValue34972") @Directive44(argument97 : ["stringValue34971"]) { + field35917: Object7352! + field35975: String! + field35976: Scalar3! +} + +type Object7352 @Directive21(argument61 : "stringValue34974") @Directive44(argument97 : ["stringValue34973"]) { + field35918: Scalar2! + field35919: String + field35920: [Object7353] + field35958: [Object7354] + field35959: Int + field35960: Int + field35961: String + field35962: [Object7357] + field35970: Float + field35971: String + field35972: Enum1781 + field35973: Scalar2 + field35974: String +} + +type Object7353 @Directive21(argument61 : "stringValue34976") @Directive44(argument97 : ["stringValue34975"]) { + field35921: Object7354 + field35934: Object7355 +} + +type Object7354 @Directive21(argument61 : "stringValue34978") @Directive44(argument97 : ["stringValue34977"]) { + field35922: Scalar2 + field35923: String + field35924: String + field35925: String + field35926: String + field35927: String + field35928: String + field35929: String + field35930: String + field35931: String + field35932: String + field35933: Int +} + +type Object7355 @Directive21(argument61 : "stringValue34980") @Directive44(argument97 : ["stringValue34979"]) { + field35935: String + field35936: String + field35937: String + field35938: String + field35939: String + field35940: String + field35941: String + field35942: String + field35943: String + field35944: String + field35945: String + field35946: String + field35947: String + field35948: String + field35949: String + field35950: String + field35951: String + field35952: String + field35953: [Object7356] + field35957: Scalar2 +} + +type Object7356 @Directive21(argument61 : "stringValue34982") @Directive44(argument97 : ["stringValue34981"]) { + field35954: String + field35955: String + field35956: String +} + +type Object7357 @Directive21(argument61 : "stringValue34984") @Directive44(argument97 : ["stringValue34983"]) { + field35963: Scalar4 + field35964: Scalar4 + field35965: Int + field35966: Scalar2 + field35967: Boolean + field35968: String + field35969: String +} + +type Object7358 @Directive21(argument61 : "stringValue34991") @Directive44(argument97 : ["stringValue34990"]) { + field35978: Boolean! + field35979: Enum1050! + field35980: [Object4767]! + field35981: Object7359 + field35985: Scalar2 +} + +type Object7359 @Directive21(argument61 : "stringValue34993") @Directive44(argument97 : ["stringValue34992"]) { + field35982: Object4767 + field35983: String + field35984: Scalar2 +} + +type Object736 @Directive20(argument58 : "stringValue3707", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue3706") @Directive31 @Directive44(argument97 : ["stringValue3708", "stringValue3709"]) { + field4171: Object448 @deprecated + field4172: Object449 + field4173: Scalar2 +} + +type Object7360 @Directive21(argument61 : "stringValue35000") @Directive44(argument97 : ["stringValue34999"]) { + field35987: Object7361! +} + +type Object7361 @Directive21(argument61 : "stringValue35002") @Directive44(argument97 : ["stringValue35001"]) { + field35988: Boolean +} + +type Object7362 @Directive44(argument97 : ["stringValue35003", "stringValue35004"]) { + field35990(argument2069: InputObject1596!): Object7363 @Directive35(argument89 : "stringValue35006", argument90 : true, argument91 : "stringValue35005", argument92 : 599, argument93 : "stringValue35007", argument94 : false) +} + +type Object7363 @Directive21(argument61 : "stringValue35012") @Directive44(argument97 : ["stringValue35010", "stringValue35011"]) { + field35991: String! + field35992: String! +} + +type Object7364 @Directive44(argument97 : ["stringValue35013"]) { + field35994(argument2070: InputObject1597!): Object7365 @Directive35(argument89 : "stringValue35015", argument90 : false, argument91 : "stringValue35014", argument92 : 600, argument93 : "stringValue35016", argument94 : false) + field35996: Object7366 @Directive35(argument89 : "stringValue35021", argument90 : true, argument91 : "stringValue35020", argument92 : 601, argument93 : "stringValue35022", argument94 : false) + field35998(argument2071: InputObject1598!): Object7367 @Directive35(argument89 : "stringValue35026", argument90 : false, argument91 : "stringValue35025", argument92 : 602, argument93 : "stringValue35027", argument94 : false) + field36000(argument2072: InputObject1599!): Object7366 @Directive35(argument89 : "stringValue35032", argument90 : false, argument91 : "stringValue35031", argument92 : 603, argument93 : "stringValue35033", argument94 : false) + field36001(argument2073: InputObject1600!): Object7368 @Directive35(argument89 : "stringValue35036", argument90 : false, argument91 : "stringValue35035", argument92 : 604, argument93 : "stringValue35037", argument94 : false) +} + +type Object7365 @Directive21(argument61 : "stringValue35019") @Directive44(argument97 : ["stringValue35018"]) { + field35995: [Object4777] +} + +type Object7366 @Directive21(argument61 : "stringValue35024") @Directive44(argument97 : ["stringValue35023"]) { + field35997: [Object4819] +} + +type Object7367 @Directive21(argument61 : "stringValue35030") @Directive44(argument97 : ["stringValue35029"]) { + field35999: Object4819! +} + +type Object7368 @Directive21(argument61 : "stringValue35040") @Directive44(argument97 : ["stringValue35039"]) { + field36002: Enum1062 + field36003: String + field36004: [Object4815] +} + +type Object7369 @Directive44(argument97 : ["stringValue35041", "stringValue35042"]) { + field36006(argument2074: InputObject1601!): Object7370 @Directive35(argument89 : "stringValue35044", argument90 : false, argument91 : "stringValue35043", argument92 : 605, argument93 : "stringValue35045", argument94 : false) + field36008(argument2075: InputObject1602!): Object7371 @Directive35(argument89 : "stringValue35054", argument90 : false, argument91 : "stringValue35053", argument92 : 606, argument93 : "stringValue35055", argument94 : false) + field36010(argument2076: InputObject1603!): Object7372 @Directive35(argument89 : "stringValue35062", argument90 : false, argument91 : "stringValue35061", argument92 : 607, argument93 : "stringValue35063", argument94 : false) + field36012(argument2077: InputObject1604!): Object7373 @Directive35(argument89 : "stringValue35070", argument90 : false, argument91 : "stringValue35069", argument92 : 608, argument93 : "stringValue35071", argument94 : false) + field36014(argument2078: InputObject1605!): Object7374 @Directive35(argument89 : "stringValue35078", argument90 : true, argument91 : "stringValue35077", argument93 : "stringValue35079", argument94 : false) + field36025(argument2079: InputObject1606!): Object7375 @Directive35(argument89 : "stringValue35086", argument90 : false, argument91 : "stringValue35085", argument92 : 609, argument93 : "stringValue35087", argument94 : false) +} + +type Object737 @Directive22(argument62 : "stringValue3710") @Directive31 @Directive44(argument97 : ["stringValue3711", "stringValue3712"]) { + field4174: String + field4175: String + field4176: String +} + +type Object7370 @Directive21(argument61 : "stringValue35052") @Directive44(argument97 : ["stringValue35050", "stringValue35051"]) { + field36007: Scalar1 +} + +type Object7371 @Directive21(argument61 : "stringValue35060") @Directive44(argument97 : ["stringValue35058", "stringValue35059"]) { + field36009: [Object4971] +} + +type Object7372 @Directive21(argument61 : "stringValue35068") @Directive44(argument97 : ["stringValue35066", "stringValue35067"]) { + field36011: [Object4972] +} + +type Object7373 @Directive21(argument61 : "stringValue35076") @Directive44(argument97 : ["stringValue35074", "stringValue35075"]) { + field36013: [Object4836] +} + +type Object7374 @Directive21(argument61 : "stringValue35084") @Directive44(argument97 : ["stringValue35082", "stringValue35083"]) { + field36015: Scalar2 + field36016: String + field36017: Enum1063 + field36018: Enum1168 + field36019: Scalar2 + field36020: String + field36021: Boolean + field36022: Boolean + field36023: String + field36024: String +} + +type Object7375 @Directive21(argument61 : "stringValue35094") @Directive44(argument97 : ["stringValue35092", "stringValue35093"]) { + field36026: [Object7376] +} + +type Object7376 @Directive21(argument61 : "stringValue35097") @Directive44(argument97 : ["stringValue35095", "stringValue35096"]) { + field36027: Object4836 + field36028: Scalar2 + field36029: String + field36030: Boolean + field36031: String +} + +type Object7377 @Directive44(argument97 : ["stringValue35098"]) { + field36033(argument2080: InputObject1607!): Object7378 @Directive35(argument89 : "stringValue35100", argument90 : true, argument91 : "stringValue35099", argument92 : 610, argument93 : "stringValue35101", argument94 : false) +} + +type Object7378 @Directive21(argument61 : "stringValue35104") @Directive44(argument97 : ["stringValue35103"]) { + field36034: Object4977 +} + +type Object7379 @Directive44(argument97 : ["stringValue35105"]) { + field36036(argument2081: InputObject1608!): Object7380 @Directive35(argument89 : "stringValue35107", argument90 : true, argument91 : "stringValue35106", argument93 : "stringValue35108", argument94 : false) + field36056(argument2082: InputObject1610!): Object7383 @Directive35(argument89 : "stringValue35119", argument90 : true, argument91 : "stringValue35118", argument93 : "stringValue35120", argument94 : true) + field36066: Object7383 @Directive35(argument89 : "stringValue35136", argument90 : true, argument91 : "stringValue35135", argument93 : "stringValue35137", argument94 : false) + field36067(argument2083: InputObject1611!): Object7389 @Directive35(argument89 : "stringValue35139", argument90 : true, argument91 : "stringValue35138", argument93 : "stringValue35140", argument94 : false) + field36080(argument2084: InputObject1611!): Object7389 @Directive35(argument89 : "stringValue35148", argument90 : true, argument91 : "stringValue35147", argument93 : "stringValue35149", argument94 : true) +} + +type Object738 @Directive22(argument62 : "stringValue3713") @Directive31 @Directive44(argument97 : ["stringValue3714", "stringValue3715"]) { + field4177: [Object739] + field4186: String + field4187: String + field4188: String + field4189: String +} + +type Object7380 @Directive21(argument61 : "stringValue35112") @Directive44(argument97 : ["stringValue35111"]) { + field36037: String! + field36038: Object7381 + field36042: [Object7382] + field36046: Scalar2 + field36047: [Object7382] + field36048: Scalar4 + field36049: Enum1198 + field36050: Scalar3 + field36051: Scalar1! + field36052: Int + field36053: [Scalar3] + field36054: [Scalar4] + field36055: Enum1785 +} + +type Object7381 @Directive21(argument61 : "stringValue35114") @Directive44(argument97 : ["stringValue35113"]) { + field36039: Float + field36040: Float + field36041: String +} + +type Object7382 @Directive21(argument61 : "stringValue35116") @Directive44(argument97 : ["stringValue35115"]) { + field36043: String + field36044: Int + field36045: Boolean +} + +type Object7383 @Directive21(argument61 : "stringValue35123") @Directive44(argument97 : ["stringValue35122"]) { + field36057: [Union207] + field36058: String + field36059: [Union254] + field36065: [Interface35!] +} + +type Object7384 @Directive21(argument61 : "stringValue35126") @Directive44(argument97 : ["stringValue35125"]) { + field36060: Boolean +} + +type Object7385 @Directive21(argument61 : "stringValue35128") @Directive44(argument97 : ["stringValue35127"]) { + field36061: Scalar7 +} + +type Object7386 @Directive21(argument61 : "stringValue35130") @Directive44(argument97 : ["stringValue35129"]) { + field36062: Float +} + +type Object7387 @Directive21(argument61 : "stringValue35132") @Directive44(argument97 : ["stringValue35131"]) { + field36063: Int +} + +type Object7388 @Directive21(argument61 : "stringValue35134") @Directive44(argument97 : ["stringValue35133"]) { + field36064: Scalar5 +} + +type Object7389 @Directive21(argument61 : "stringValue35143") @Directive44(argument97 : ["stringValue35142"]) { + field36068: Int + field36069: Scalar4 + field36070: Scalar1 @deprecated + field36071: Scalar3 + field36072: [Object7390] + field36077: Scalar1 + field36078: Union255 + field36079: String @deprecated +} + +type Object739 @Directive22(argument62 : "stringValue3716") @Directive31 @Directive44(argument97 : ["stringValue3717", "stringValue3718"]) { + field4178: Boolean! + field4179: String! + field4180: String! + field4181: String + field4182: String! + field4183: String! + field4184: Boolean! + field4185: String +} + +type Object7390 @Directive21(argument61 : "stringValue35145") @Directive44(argument97 : ["stringValue35144"]) { + field36073: String + field36074: Scalar1 + field36075: Scalar1 + field36076: Scalar1 +} + +type Object7391 @Directive44(argument97 : ["stringValue35150"]) { + field36082(argument2085: InputObject1612!): Object7392 @Directive35(argument89 : "stringValue35152", argument90 : true, argument91 : "stringValue35151", argument92 : 611, argument93 : "stringValue35153", argument94 : true) + field36260: Object7428 @Directive35(argument89 : "stringValue35230", argument90 : true, argument91 : "stringValue35229", argument93 : "stringValue35231", argument94 : true) @deprecated + field36278(argument2086: InputObject1613!): Object7431 @Directive35(argument89 : "stringValue35241", argument90 : false, argument91 : "stringValue35240", argument92 : 612, argument93 : "stringValue35242", argument94 : true) + field36778(argument2087: InputObject1620!): Object7515 @Directive35(argument89 : "stringValue35469", argument90 : true, argument91 : "stringValue35468", argument92 : 613, argument93 : "stringValue35470", argument94 : true) +} + +type Object7392 @Directive21(argument61 : "stringValue35157") @Directive44(argument97 : ["stringValue35156"]) { + field36083: [Object7393] +} + +type Object7393 @Directive21(argument61 : "stringValue35159") @Directive44(argument97 : ["stringValue35158"]) { + field36084: String + field36085: [Object7394] + field36259: Enum1787 +} + +type Object7394 @Directive21(argument61 : "stringValue35161") @Directive44(argument97 : ["stringValue35160"]) { + field36086: Enum1786 + field36087: String + field36088: String + field36089: String + field36090: Boolean + field36091: Object7395 + field36258: String +} + +type Object7395 @Directive21(argument61 : "stringValue35163") @Directive44(argument97 : ["stringValue35162"]) { + field36092: Object7396 + field36116: Object7401 + field36129: Object7404 + field36134: Object7405 + field36147: Object7407 + field36190: Object7413 + field36192: Object7414 + field36200: Object7416 + field36211: Object7417 + field36242: Object7424 + field36248: Object7425 +} + +type Object7396 @Directive21(argument61 : "stringValue35165") @Directive44(argument97 : ["stringValue35164"]) { + field36093: [Object7397] + field36099: [Object7398] + field36106: [Object7399] + field36111: [String] + field36112: Boolean + field36113: [Object7400] +} + +type Object7397 @Directive21(argument61 : "stringValue35167") @Directive44(argument97 : ["stringValue35166"]) { + field36094: String + field36095: String + field36096: String + field36097: [String] + field36098: [String] +} + +type Object7398 @Directive21(argument61 : "stringValue35169") @Directive44(argument97 : ["stringValue35168"]) { + field36100: String + field36101: String + field36102: String + field36103: String + field36104: [String] + field36105: [String] +} + +type Object7399 @Directive21(argument61 : "stringValue35171") @Directive44(argument97 : ["stringValue35170"]) { + field36107: String + field36108: String + field36109: String + field36110: String +} + +type Object74 @Directive21(argument61 : "stringValue308") @Directive44(argument97 : ["stringValue307"]) { + field491: String + field492: String + field493: String + field494: String + field495: String + field496: String + field497: Object35 + field498: String + field499: String + field500: Object64 +} + +type Object740 @Directive22(argument62 : "stringValue3719") @Directive31 @Directive44(argument97 : ["stringValue3720", "stringValue3721"]) { + field4190: [Object741!] + field4213: Object596 + field4214: Object596 + field4215: String +} + +type Object7400 @Directive21(argument61 : "stringValue35173") @Directive44(argument97 : ["stringValue35172"]) { + field36114: String + field36115: String +} + +type Object7401 @Directive21(argument61 : "stringValue35175") @Directive44(argument97 : ["stringValue35174"]) { + field36117: [Object7402] + field36126: [String] + field36127: Boolean + field36128: [Object7400] +} + +type Object7402 @Directive21(argument61 : "stringValue35177") @Directive44(argument97 : ["stringValue35176"]) { + field36118: String + field36119: String + field36120: [Object7403] +} + +type Object7403 @Directive21(argument61 : "stringValue35179") @Directive44(argument97 : ["stringValue35178"]) { + field36121: String + field36122: String + field36123: String + field36124: String + field36125: String +} + +type Object7404 @Directive21(argument61 : "stringValue35181") @Directive44(argument97 : ["stringValue35180"]) { + field36130: [Object7402] + field36131: [String] + field36132: Boolean + field36133: [Object7400] +} + +type Object7405 @Directive21(argument61 : "stringValue35183") @Directive44(argument97 : ["stringValue35182"]) { + field36135: String + field36136: Boolean + field36137: Object7406 + field36140: Object7406 + field36141: Object7406 + field36142: Boolean + field36143: Boolean + field36144: [String] + field36145: Boolean + field36146: [Object7400] +} + +type Object7406 @Directive21(argument61 : "stringValue35185") @Directive44(argument97 : ["stringValue35184"]) { + field36138: Scalar2 + field36139: Scalar2 +} + +type Object7407 @Directive21(argument61 : "stringValue35187") @Directive44(argument97 : ["stringValue35186"]) { + field36148: [Object7408] + field36170: Boolean + field36171: Scalar1 + field36172: Boolean + field36173: Boolean + field36174: Object7411 + field36177: [Object7412] +} + +type Object7408 @Directive21(argument61 : "stringValue35189") @Directive44(argument97 : ["stringValue35188"]) { + field36149: Enum1200! + field36150: String + field36151: String + field36152: String + field36153: String + field36154: String + field36155: String + field36156: Enum1200 + field36157: Float + field36158: String + field36159: String + field36160: Boolean + field36161: String + field36162: Object7409 +} + +type Object7409 @Directive21(argument61 : "stringValue35191") @Directive44(argument97 : ["stringValue35190"]) { + field36163: Float + field36164: [Object7410] + field36169: [Object7410] +} + +type Object741 @Directive22(argument62 : "stringValue3722") @Directive31 @Directive44(argument97 : ["stringValue3723", "stringValue3724"]) { + field4191: ID + field4192: Object585 + field4193: Object596 + field4194: Object596 + field4195: String + field4196: Object742 + field4201: [Object452!] + field4202: Object452 + field4203: Object743 + field4211: Object1 + field4212: Object596 +} + +type Object7410 @Directive21(argument61 : "stringValue35193") @Directive44(argument97 : ["stringValue35192"]) { + field36165: String! + field36166: String + field36167: String + field36168: Float +} + +type Object7411 @Directive21(argument61 : "stringValue35195") @Directive44(argument97 : ["stringValue35194"]) { + field36175: String + field36176: String +} + +type Object7412 @Directive21(argument61 : "stringValue35197") @Directive44(argument97 : ["stringValue35196"]) { + field36178: Int + field36179: String + field36180: String + field36181: String + field36182: String + field36183: String + field36184: String + field36185: Int + field36186: Float + field36187: String + field36188: String + field36189: Boolean +} + +type Object7413 @Directive21(argument61 : "stringValue35199") @Directive44(argument97 : ["stringValue35198"]) { + field36191: Boolean +} + +type Object7414 @Directive21(argument61 : "stringValue35201") @Directive44(argument97 : ["stringValue35200"]) { + field36193: [String] + field36194: [Object7415] + field36199: [Object7400] +} + +type Object7415 @Directive21(argument61 : "stringValue35203") @Directive44(argument97 : ["stringValue35202"]) { + field36195: String + field36196: String + field36197: Int + field36198: Boolean +} + +type Object7416 @Directive21(argument61 : "stringValue35205") @Directive44(argument97 : ["stringValue35204"]) { + field36201: [Object7403] + field36202: String + field36203: String + field36204: String + field36205: String + field36206: String + field36207: String + field36208: [String] + field36209: Boolean + field36210: [Object7400] +} + +type Object7417 @Directive21(argument61 : "stringValue35207") @Directive44(argument97 : ["stringValue35206"]) { + field36212: [Object7418] + field36225: Object7421 + field36228: Object7422 + field36239: [String] + field36240: Boolean + field36241: [Object7400] +} + +type Object7418 @Directive21(argument61 : "stringValue35209") @Directive44(argument97 : ["stringValue35208"]) { + field36213: String + field36214: String + field36215: String + field36216: String + field36217: Object7419 + field36221: String + field36222: Object7420 +} + +type Object7419 @Directive21(argument61 : "stringValue35211") @Directive44(argument97 : ["stringValue35210"]) { + field36218: String + field36219: String + field36220: Boolean +} + +type Object742 @Directive20(argument58 : "stringValue3726", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3725") @Directive31 @Directive44(argument97 : ["stringValue3727", "stringValue3728"]) { + field4197: String + field4198: Object10 + field4199: Object10 + field4200: String +} + +type Object7420 @Directive21(argument61 : "stringValue35213") @Directive44(argument97 : ["stringValue35212"]) { + field36223: String + field36224: Boolean +} + +type Object7421 @Directive21(argument61 : "stringValue35215") @Directive44(argument97 : ["stringValue35214"]) { + field36226: String + field36227: String +} + +type Object7422 @Directive21(argument61 : "stringValue35217") @Directive44(argument97 : ["stringValue35216"]) { + field36229: String + field36230: String + field36231: [Object7423] +} + +type Object7423 @Directive21(argument61 : "stringValue35219") @Directive44(argument97 : ["stringValue35218"]) { + field36232: String + field36233: String + field36234: String + field36235: String + field36236: String + field36237: String + field36238: String +} + +type Object7424 @Directive21(argument61 : "stringValue35221") @Directive44(argument97 : ["stringValue35220"]) { + field36243: String + field36244: String + field36245: Boolean + field36246: String + field36247: String +} + +type Object7425 @Directive21(argument61 : "stringValue35223") @Directive44(argument97 : ["stringValue35222"]) { + field36249: Int + field36250: [Object7426] + field36256: Boolean + field36257: [Object7400] +} + +type Object7426 @Directive21(argument61 : "stringValue35225") @Directive44(argument97 : ["stringValue35224"]) { + field36251: String + field36252: [Object7427] +} + +type Object7427 @Directive21(argument61 : "stringValue35227") @Directive44(argument97 : ["stringValue35226"]) { + field36253: String + field36254: String + field36255: String +} + +type Object7428 @Directive21(argument61 : "stringValue35233") @Directive44(argument97 : ["stringValue35232"]) { + field36261: [Object7429!]! + field36277: String +} + +type Object7429 @Directive21(argument61 : "stringValue35235") @Directive44(argument97 : ["stringValue35234"]) { + field36262: Scalar2 + field36263: String + field36264: String + field36265: String + field36266: String + field36267: String + field36268: Enum1788 + field36269: Object7430 + field36276: Boolean +} + +type Object743 implements Interface52 & Interface53 & Interface54 @Directive20(argument58 : "stringValue3747", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3744") @Directive31 @Directive44(argument97 : ["stringValue3745", "stringValue3746"]) { + field4204: String + field4205: String + field4206: String + field4207: String + field4208: Enum10 + field4209: Enum210 + field4210: Enum211 +} + +type Object7430 @Directive21(argument61 : "stringValue35238") @Directive44(argument97 : ["stringValue35237"]) { + field36270: Boolean + field36271: [Enum1789] + field36272: Scalar3 + field36273: Enum1211 + field36274: Int + field36275: Scalar3 +} + +type Object7431 @Directive21(argument61 : "stringValue35271") @Directive44(argument97 : ["stringValue35270"]) { + field36279: [Object7432] + field36736: Object7510 +} + +type Object7432 @Directive21(argument61 : "stringValue35273") @Directive44(argument97 : ["stringValue35272"]) { + field36280: Scalar2! + field36281: Scalar2 + field36282: String + field36283: String + field36284: String + field36285: String + field36286: [Object7433] + field36290: String + field36291: Enum1796 + field36292: Scalar4 + field36293: Boolean + field36294: String + field36295: Boolean + field36296: Scalar2 + field36297: Scalar2 + field36298: String + field36299: String + field36300: Boolean + field36301: String + field36302: String + field36303: String + field36304: Boolean + field36305: Boolean + field36306: Scalar2 + field36307: Boolean + field36308: Boolean + field36309: Boolean + field36310: Boolean + field36311: Boolean + field36312: Boolean + field36313: Boolean + field36314: Boolean + field36315: Scalar4 + field36316: Object7434 + field36337: String + field36338: Object7436 @deprecated + field36344: Scalar2 + field36345: Object7437 + field36350: Boolean + field36351: Object7438 + field36578: Float + field36579: Int + field36580: Int + field36581: Enum1788 + field36582: String + field36583: Boolean + field36584: Boolean + field36585: Boolean + field36586: Object7486 + field36622: Object7489 + field36623: Boolean + field36624: Boolean + field36625: Boolean + field36626: Object7491 + field36636: String + field36637: String + field36638: Boolean + field36639: Boolean + field36640: String + field36641: Boolean + field36642: Object7492 + field36645: Boolean + field36646: Scalar2 + field36647: Float + field36648: Boolean + field36649: String + field36650: String + field36651: String + field36652: String + field36653: Enum1801 + field36654: Boolean + field36655: Boolean + field36656: Object7493 + field36671: Boolean + field36672: Float + field36673: Object7494 + field36681: Boolean + field36682: Object7495 + field36685: [Enum1209] + field36686: Boolean + field36687: Enum1802 + field36688: Object7448 + field36689: [Enum1831] + field36690: Object7496 + field36705: Scalar3 + field36706: Union257 + field36710: Boolean + field36711: String + field36712: Boolean + field36713: Boolean + field36714: Union257 + field36715: Object7507 + field36722: String + field36723: Object7508 + field36726: Enum1834 + field36727: Scalar3 + field36728: String + field36729: [Enum1202] + field36730: Object7509 + field36733: Enum1835 + field36734: Boolean + field36735: String +} + +type Object7433 @Directive21(argument61 : "stringValue35275") @Directive44(argument97 : ["stringValue35274"]) { + field36287: String! + field36288: String! + field36289: String! +} + +type Object7434 @Directive21(argument61 : "stringValue35277") @Directive44(argument97 : ["stringValue35276"]) { + field36317: String + field36318: String + field36319: String + field36320: String + field36321: String + field36322: String + field36323: Boolean + field36324: Scalar2 + field36325: String + field36326: String + field36327: String + field36328: Scalar2 + field36329: Scalar2 + field36330: [Object7435] + field36332: String + field36333: String + field36334: String + field36335: Boolean + field36336: Boolean +} + +type Object7435 @Directive21(argument61 : "stringValue35279") @Directive44(argument97 : ["stringValue35278"]) { + field36331: String +} + +type Object7436 @Directive21(argument61 : "stringValue35281") @Directive44(argument97 : ["stringValue35280"]) { + field36339: Scalar2! + field36340: Boolean! + field36341: String! + field36342: String @deprecated + field36343: [Scalar2]! +} + +type Object7437 @Directive21(argument61 : "stringValue35283") @Directive44(argument97 : ["stringValue35282"]) { + field36346: String + field36347: String + field36348: Scalar4 + field36349: String +} + +type Object7438 @Directive21(argument61 : "stringValue35285") @Directive44(argument97 : ["stringValue35284"]) { + field36352: Scalar2! + field36353: Object7439 + field36368: Object7441 + field36373: Object7443 + field36377: Object7444 + field36393: Object7445 + field36410: [Object7448] + field36472: Object7453 + field36485: Object7455 + field36489: Object7456 @deprecated + field36497: Scalar1 + field36498: Object7457 + field36502: Object7458 + field36504: Object7459 + field36511: [Object7461] @deprecated + field36520: Object7462 + field36522: Object7463 + field36525: [Object7464] + field36554: Object7478 + field36557: Object7479 + field36560: Object7480 + field36574: Object7484 + field36576: Object7485 +} + +type Object7439 @Directive21(argument61 : "stringValue35287") @Directive44(argument97 : ["stringValue35286"]) { + field36354: String + field36355: Int + field36356: Object7440 + field36360: Object7440 + field36361: Object7440 + field36362: Object7440 + field36363: Object7440 + field36364: Float + field36365: Float + field36366: Scalar4 + field36367: Object7440 +} + +type Object744 @Directive20(argument58 : "stringValue3749", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3748") @Directive31 @Directive44(argument97 : ["stringValue3750", "stringValue3751"]) { + field4216: String + field4217: Object1 @deprecated + field4218: Object1 @deprecated + field4219: Object1 @deprecated + field4220: Object1 @deprecated + field4221: Object1 + field4222: Object1 + field4223: Object1 + field4224: Object1 + field4225: Object745 + field4557: Object786 + field4686: Object799 +} + +type Object7440 @Directive21(argument61 : "stringValue35289") @Directive44(argument97 : ["stringValue35288"]) { + field36357: Float! + field36358: String! + field36359: Scalar2 +} + +type Object7441 @Directive21(argument61 : "stringValue35291") @Directive44(argument97 : ["stringValue35290"]) { + field36369: [Object7442] + field36372: Scalar4 +} + +type Object7442 @Directive21(argument61 : "stringValue35293") @Directive44(argument97 : ["stringValue35292"]) { + field36370: Object7440! + field36371: Scalar3! +} + +type Object7443 @Directive21(argument61 : "stringValue35295") @Directive44(argument97 : ["stringValue35294"]) { + field36374: [Object7442] + field36375: [Object7442] + field36376: Scalar4 +} + +type Object7444 @Directive21(argument61 : "stringValue35297") @Directive44(argument97 : ["stringValue35296"]) { + field36378: Object7440 + field36379: Object7440 + field36380: Boolean + field36381: Boolean + field36382: Int + field36383: [Int] + field36384: Scalar4 + field36385: Scalar2 + field36386: Object7440 + field36387: Scalar4 + field36388: Scalar4 + field36389: Int + field36390: Int + field36391: Int + field36392: Scalar4 +} + +type Object7445 @Directive21(argument61 : "stringValue35299") @Directive44(argument97 : ["stringValue35298"]) { + field36394: [Object7440] + field36395: Scalar3 + field36396: Object7446 + field36399: Scalar3 + field36400: Object7447 + field36402: [Scalar3] + field36403: [Scalar3] + field36404: Scalar4 + field36405: Scalar2 + field36406: Scalar4 + field36407: Scalar3 + field36408: Scalar3 + field36409: [Object7440] +} + +type Object7446 @Directive21(argument61 : "stringValue35301") @Directive44(argument97 : ["stringValue35300"]) { + field36397: String + field36398: Int +} + +type Object7447 @Directive21(argument61 : "stringValue35303") @Directive44(argument97 : ["stringValue35302"]) { + field36401: [Int] +} + +type Object7448 @Directive21(argument61 : "stringValue35305") @Directive44(argument97 : ["stringValue35304"]) { + field36411: String! + field36412: Enum1810! + field36413: Scalar2 + field36414: Scalar2! + field36415: Scalar3 + field36416: Scalar3 + field36417: Scalar4 + field36418: Float + field36419: Scalar4 + field36420: Scalar2 + field36421: Scalar2 + field36422: Scalar3 + field36423: Float + field36424: String + field36425: Boolean + field36426: Scalar2 + field36427: Scalar2 + field36428: Scalar4 + field36429: Scalar2 + field36430: Scalar2 + field36431: Enum1811 + field36432: [Object7442] + field36433: Object7449 + field36469: Enum1817 + field36470: Object7452 +} + +type Object7449 @Directive21(argument61 : "stringValue35309") @Directive44(argument97 : ["stringValue35308"]) { + field36434: String + field36435: String + field36436: String + field36437: Boolean + field36438: Enum1812 + field36439: Scalar4 + field36440: Scalar4 + field36441: Scalar4 + field36442: Scalar4 + field36443: Float + field36444: Scalar1 + field36445: Scalar2 + field36446: Object7450 + field36455: Scalar2 + field36456: Boolean + field36457: [Object7451] + field36461: Enum1810 + field36462: Enum1816 + field36463: Scalar4 + field36464: Scalar4 + field36465: Scalar4 + field36466: String + field36467: String + field36468: String +} + +type Object745 @Directive20(argument58 : "stringValue3753", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3752") @Directive31 @Directive44(argument97 : ["stringValue3754", "stringValue3755"]) { + field4226: String + field4227: String + field4228: [Object746] + field4553: Object1 + field4554: Object1 + field4555: Object1 + field4556: Object1 +} + +type Object7450 @Directive21(argument61 : "stringValue35312") @Directive44(argument97 : ["stringValue35311"]) { + field36447: String! + field36448: String + field36449: String + field36450: Enum1813 + field36451: Boolean + field36452: Scalar2 + field36453: Boolean + field36454: [Object7449] +} + +type Object7451 @Directive21(argument61 : "stringValue35315") @Directive44(argument97 : ["stringValue35314"]) { + field36458: Enum1814! + field36459: [String] + field36460: Enum1815 +} + +type Object7452 @Directive21(argument61 : "stringValue35321") @Directive44(argument97 : ["stringValue35320"]) { + field36471: Scalar1! +} + +type Object7453 @Directive21(argument61 : "stringValue35323") @Directive44(argument97 : ["stringValue35322"]) { + field36473: [Object7454] + field36484: Scalar4 +} + +type Object7454 @Directive21(argument61 : "stringValue35325") @Directive44(argument97 : ["stringValue35324"]) { + field36474: Int + field36475: Int + field36476: Int + field36477: Enum1212! + field36478: Enum1207! + field36479: Float! + field36480: Scalar4 + field36481: Scalar4 + field36482: Scalar2 + field36483: Scalar2 +} + +type Object7455 @Directive21(argument61 : "stringValue35327") @Directive44(argument97 : ["stringValue35326"]) { + field36486: Scalar1 + field36487: Scalar4 + field36488: [Scalar3] +} + +type Object7456 @Directive21(argument61 : "stringValue35329") @Directive44(argument97 : ["stringValue35328"]) { + field36490: Scalar2 + field36491: Float + field36492: Float + field36493: Boolean + field36494: Boolean + field36495: Scalar4 + field36496: String +} + +type Object7457 @Directive21(argument61 : "stringValue35331") @Directive44(argument97 : ["stringValue35330"]) { + field36499: Scalar1 + field36500: Scalar4 + field36501: Scalar1 +} + +type Object7458 @Directive21(argument61 : "stringValue35333") @Directive44(argument97 : ["stringValue35332"]) { + field36503: Scalar1 +} + +type Object7459 @Directive21(argument61 : "stringValue35335") @Directive44(argument97 : ["stringValue35334"]) { + field36505: Float + field36506: [Object7460] +} + +type Object746 @Directive20(argument58 : "stringValue3757", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3756") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3758", "stringValue3759"]) { + field4229: Object747 + field4480: Object778 + field4531: Object783 + field4536: Boolean + field4537: Object784 + field4546: Object785 + field4552: Object508 +} + +type Object7460 @Directive21(argument61 : "stringValue35337") @Directive44(argument97 : ["stringValue35336"]) { + field36507: Scalar2 + field36508: Scalar2 + field36509: String + field36510: Scalar2 +} + +type Object7461 @Directive21(argument61 : "stringValue35339") @Directive44(argument97 : ["stringValue35338"]) { + field36512: Scalar2 + field36513: String + field36514: Float + field36515: String + field36516: Scalar4 + field36517: Scalar4 + field36518: String + field36519: Scalar4 +} + +type Object7462 @Directive21(argument61 : "stringValue35341") @Directive44(argument97 : ["stringValue35340"]) { + field36521: Enum1818 +} + +type Object7463 @Directive21(argument61 : "stringValue35344") @Directive44(argument97 : ["stringValue35343"]) { + field36523: Object7440 + field36524: Scalar4 +} + +type Object7464 @Directive21(argument61 : "stringValue35346") @Directive44(argument97 : ["stringValue35345"]) { + field36526: Enum1819! + field36527: Enum1820! + field36528: Union256! + field36550: Enum1823! + field36551: Enum1824! + field36552: Boolean! + field36553: Scalar4 +} + +type Object7465 @Directive21(argument61 : "stringValue35351") @Directive44(argument97 : ["stringValue35350"]) { + field36529: Float +} + +type Object7466 @Directive21(argument61 : "stringValue35353") @Directive44(argument97 : ["stringValue35352"]) { + field36530: [Object7467]! +} + +type Object7467 @Directive21(argument61 : "stringValue35355") @Directive44(argument97 : ["stringValue35354"]) { + field36531: Object7468! + field36533: Scalar2! +} + +type Object7468 @Directive21(argument61 : "stringValue35357") @Directive44(argument97 : ["stringValue35356"]) { + field36532: Int +} + +type Object7469 @Directive21(argument61 : "stringValue35359") @Directive44(argument97 : ["stringValue35358"]) { + field36534: Int! +} + +type Object747 @Directive20(argument58 : "stringValue3761", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3760") @Directive31 @Directive34 @Directive44(argument97 : ["stringValue3762", "stringValue3763"]) { + field4230: [Int] + field4231: Float + field4232: [String] + field4233: String + field4234: Float + field4235: String + field4236: String + field4237: Int + field4238: Int + field4239: String + field4240: Enum212 + field4241: String + field4242: Object748 + field4245: [Object749] + field4273: Object753 + field4278: Object754 + field4281: Object755 + field4284: Object756 + field4290: [Object757] + field4304: [Object762] + field4318: Object764 + field4322: [Object765] + field4330: String + field4331: [Object480] + field4332: [String] + field4333: String + field4334: String + field4335: String + field4336: String + field4337: Scalar2 + field4338: Boolean + field4339: Boolean + field4340: Boolean + field4341: Boolean + field4342: Boolean + field4343: Boolean + field4344: Boolean + field4345: Object750 + field4346: String + field4347: Float + field4348: String + field4349: Float + field4350: String + field4351: String + field4352: String + field4353: String + field4354: Object766 + field4374: String + field4375: Object770 + field4380: [Object770] + field4381: Enum216 + field4382: Int + field4383: Int + field4384: String + field4385: String + field4386: String + field4387: [Object480] + field4388: [Enum217] + field4389: Enum218 + field4390: Enum219 + field4391: Int + field4392: Object771 + field4402: Int + field4403: [Scalar2] + field4404: String + field4405: [String] + field4406: String + field4407: [String] + field4408: String + field4409: [String] + field4410: [Object772] + field4414: String + field4415: Scalar2 + field4416: String + field4417: [String] + field4418: [Object773] + field4428: Int + field4429: [Object752] + field4430: String + field4431: String + field4432: String + field4433: String + field4434: Object767 + field4435: String + field4436: [Object774] + field4443: String + field4444: String + field4445: Boolean + field4446: Boolean + field4447: String + field4448: String + field4449: Float + field4450: String + field4451: String + field4452: [String] + field4453: Int + field4454: String + field4455: Int + field4456: String + field4457: String + field4458: Object775 + field4460: Object776 + field4469: Object750 + field4470: Scalar2 + field4471: Boolean + field4472: Float + field4473: Object777 + field4477: Object752 + field4478: Enum220 + field4479: ID +} + +type Object7470 @Directive21(argument61 : "stringValue35361") @Directive44(argument97 : ["stringValue35360"]) { + field36535: Scalar2 +} + +type Object7471 @Directive21(argument61 : "stringValue35363") @Directive44(argument97 : ["stringValue35362"]) { + field36536: Float! + field36537: Int +} + +type Object7472 @Directive21(argument61 : "stringValue35365") @Directive44(argument97 : ["stringValue35364"]) { + field36538: [Object7473]! +} + +type Object7473 @Directive21(argument61 : "stringValue35367") @Directive44(argument97 : ["stringValue35366"]) { + field36539: Object7474! + field36543: Object7468! + field36544: Scalar2! +} + +type Object7474 @Directive21(argument61 : "stringValue35369") @Directive44(argument97 : ["stringValue35368"]) { + field36540: Int! + field36541: Int! + field36542: Enum1821! +} + +type Object7475 @Directive21(argument61 : "stringValue35372") @Directive44(argument97 : ["stringValue35371"]) { + field36545: [Object7476]! +} + +type Object7476 @Directive21(argument61 : "stringValue35374") @Directive44(argument97 : ["stringValue35373"]) { + field36546: Object7474! + field36547: Scalar2! +} + +type Object7477 @Directive21(argument61 : "stringValue35376") @Directive44(argument97 : ["stringValue35375"]) { + field36548: Enum1822! + field36549: Scalar2! +} + +type Object7478 @Directive21(argument61 : "stringValue35381") @Directive44(argument97 : ["stringValue35380"]) { + field36555: [Object7464] + field36556: Scalar4 +} + +type Object7479 @Directive21(argument61 : "stringValue35383") @Directive44(argument97 : ["stringValue35382"]) { + field36558: Object7441 + field36559: Scalar4 +} + +type Object748 @Directive20(argument58 : "stringValue3771", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3770") @Directive31 @Directive44(argument97 : ["stringValue3772", "stringValue3773"]) { + field4243: String + field4244: String +} + +type Object7480 @Directive21(argument61 : "stringValue35385") @Directive44(argument97 : ["stringValue35384"]) { + field36561: Scalar2! + field36562: [Object7481] +} + +type Object7481 @Directive21(argument61 : "stringValue35387") @Directive44(argument97 : ["stringValue35386"]) { + field36563: Scalar2! + field36564: [Object7482] + field36567: Boolean! + field36568: Object7483 + field36573: String @deprecated +} + +type Object7482 @Directive21(argument61 : "stringValue35389") @Directive44(argument97 : ["stringValue35388"]) { + field36565: Object7440! + field36566: Scalar3! +} + +type Object7483 @Directive21(argument61 : "stringValue35391") @Directive44(argument97 : ["stringValue35390"]) { + field36569: Scalar2! + field36570: String + field36571: [Enum1825] + field36572: Scalar2 +} + +type Object7484 @Directive21(argument61 : "stringValue35394") @Directive44(argument97 : ["stringValue35393"]) { + field36575: Scalar1 +} + +type Object7485 @Directive21(argument61 : "stringValue35396") @Directive44(argument97 : ["stringValue35395"]) { + field36577: [Object7442] +} + +type Object7486 @Directive21(argument61 : "stringValue35398") @Directive44(argument97 : ["stringValue35397"]) { + field36587: Scalar2! + field36588: Scalar2 + field36589: String + field36590: Enum1826 + field36591: Scalar2 + field36592: Object7487 + field36603: Scalar4 + field36604: Scalar2 + field36605: Object7488 + field36608: Object7489 +} + +type Object7487 @Directive21(argument61 : "stringValue35401") @Directive44(argument97 : ["stringValue35400"]) { + field36593: Scalar2! + field36594: Scalar4 + field36595: Scalar4 + field36596: String + field36597: Scalar2 + field36598: String + field36599: String + field36600: String + field36601: String + field36602: Scalar7 +} + +type Object7488 @Directive21(argument61 : "stringValue35403") @Directive44(argument97 : ["stringValue35402"]) { + field36606: Scalar2 + field36607: String +} + +type Object7489 @Directive21(argument61 : "stringValue35405") @Directive44(argument97 : ["stringValue35404"]) { + field36609: Scalar2! + field36610: Enum1827! + field36611: Enum1828 + field36612: [Enum1829] + field36613: String + field36614: Scalar4 + field36615: Scalar2 + field36616: Scalar4 + field36617: [Object7490] +} + +type Object749 @Directive20(argument58 : "stringValue3775", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3774") @Directive31 @Directive44(argument97 : ["stringValue3776", "stringValue3777"]) { + field4246: Scalar2 + field4247: String + field4248: String + field4249: String + field4250: String + field4251: String + field4252: String + field4253: String + field4254: String + field4255: Object750 +} + +type Object7490 @Directive21(argument61 : "stringValue35410") @Directive44(argument97 : ["stringValue35409"]) { + field36618: Enum1799 + field36619: Enum1830 + field36620: String + field36621: String +} + +type Object7491 @Directive21(argument61 : "stringValue35413") @Directive44(argument97 : ["stringValue35412"]) { + field36627: Scalar2 + field36628: Scalar2 + field36629: Scalar2 + field36630: Scalar2 + field36631: Scalar2 + field36632: Scalar2 + field36633: String + field36634: String + field36635: Scalar2 +} + +type Object7492 @Directive21(argument61 : "stringValue35415") @Directive44(argument97 : ["stringValue35414"]) { + field36643: Object7440! + field36644: String +} + +type Object7493 @Directive21(argument61 : "stringValue35417") @Directive44(argument97 : ["stringValue35416"]) { + field36657: Scalar2 + field36658: Scalar2! + field36659: Boolean + field36660: Scalar4 + field36661: Scalar4 + field36662: Scalar4 + field36663: Scalar4 + field36664: Scalar2 + field36665: Scalar2 + field36666: Scalar4 + field36667: Scalar4 + field36668: Scalar4 + field36669: Scalar4 + field36670: Scalar4 +} + +type Object7494 @Directive21(argument61 : "stringValue35419") @Directive44(argument97 : ["stringValue35418"]) { + field36674: Scalar2! + field36675: Scalar2! + field36676: Scalar4! + field36677: Scalar4! + field36678: Scalar4! + field36679: Scalar4! + field36680: Scalar2! +} + +type Object7495 @Directive21(argument61 : "stringValue35421") @Directive44(argument97 : ["stringValue35420"]) { + field36683: Float + field36684: Float +} + +type Object7496 @Directive21(argument61 : "stringValue35424") @Directive44(argument97 : ["stringValue35423"]) { + field36691: Object7497 + field36698: Object7501 +} + +type Object7497 @Directive21(argument61 : "stringValue35426") @Directive44(argument97 : ["stringValue35425"]) { + field36692: Object7498 + field36694: Object7499 + field36696: Object7500 +} + +type Object7498 @Directive21(argument61 : "stringValue35428") @Directive44(argument97 : ["stringValue35427"]) { + field36693: Enum1832! +} + +type Object7499 @Directive21(argument61 : "stringValue35431") @Directive44(argument97 : ["stringValue35430"]) { + field36695: Enum1832! +} + +type Object75 @Directive21(argument61 : "stringValue310") @Directive44(argument97 : ["stringValue309"]) { + field504: String + field505: String + field506: Enum36 + field507: String + field508: Object76 @deprecated + field567: Object81 @deprecated + field568: String + field569: Union9 @deprecated + field572: String + field573: String + field574: Object85 + field602: Interface21 + field603: Interface19 + field604: Object86 + field605: Object87 + field606: Object87 + field607: Object87 +} + +type Object750 @Directive20(argument58 : "stringValue3779", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3778") @Directive31 @Directive44(argument97 : ["stringValue3780", "stringValue3781"]) { + field4256: Object751 + field4260: [String] + field4261: String + field4262: [Object752] +} + +type Object7500 @Directive21(argument61 : "stringValue35433") @Directive44(argument97 : ["stringValue35432"]) { + field36697: Enum1832! +} + +type Object7501 @Directive21(argument61 : "stringValue35435") @Directive44(argument97 : ["stringValue35434"]) { + field36699: Object7502 + field36701: Object7503 + field36703: Object7504 +} + +type Object7502 @Directive21(argument61 : "stringValue35437") @Directive44(argument97 : ["stringValue35436"]) { + field36700: Enum1832! +} + +type Object7503 @Directive21(argument61 : "stringValue35439") @Directive44(argument97 : ["stringValue35438"]) { + field36702: Enum1832! +} + +type Object7504 @Directive21(argument61 : "stringValue35441") @Directive44(argument97 : ["stringValue35440"]) { + field36704: Enum1832! +} + +type Object7505 @Directive21(argument61 : "stringValue35444") @Directive44(argument97 : ["stringValue35443"]) { + field36707: Int + field36708: Scalar3 +} + +type Object7506 @Directive21(argument61 : "stringValue35446") @Directive44(argument97 : ["stringValue35445"]) { + field36709: Boolean +} + +type Object7507 @Directive21(argument61 : "stringValue35448") @Directive44(argument97 : ["stringValue35447"]) { + field36716: Scalar2! + field36717: Boolean @deprecated + field36718: Boolean @deprecated + field36719: Float @deprecated + field36720: Enum1833! + field36721: Float +} + +type Object7508 @Directive21(argument61 : "stringValue35451") @Directive44(argument97 : ["stringValue35450"]) { + field36724: Scalar2! + field36725: Boolean! +} + +type Object7509 @Directive21(argument61 : "stringValue35454") @Directive44(argument97 : ["stringValue35453"]) { + field36731: Int + field36732: Boolean +} + +type Object751 @Directive20(argument58 : "stringValue3783", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3782") @Directive31 @Directive44(argument97 : ["stringValue3784", "stringValue3785"]) { + field4257: String + field4258: String + field4259: String +} + +type Object7510 @Directive21(argument61 : "stringValue35457") @Directive44(argument97 : ["stringValue35456"]) { + field36737: Int + field36738: Int + field36739: Int + field36740: Int + field36741: Enum1790 + field36742: Enum1791 + field36743: [Object7511] @deprecated + field36749: [Object7511] @deprecated + field36750: Enum1802 + field36751: Object7512 + field36764: Scalar1 + field36765: Scalar3 + field36766: [Scalar2] + field36767: [Object7513!] + field36777: Enum1837 @deprecated +} + +type Object7511 @Directive21(argument61 : "stringValue35459") @Directive44(argument97 : ["stringValue35458"]) { + field36744: String! + field36745: String! + field36746: String + field36747: String + field36748: String +} + +type Object7512 @Directive21(argument61 : "stringValue35461") @Directive44(argument97 : ["stringValue35460"]) { + field36752: Scalar3 + field36753: Scalar3 + field36754: Float + field36755: Scalar3 + field36756: Scalar2 + field36757: String + field36758: String + field36759: Float + field36760: Boolean + field36761: Scalar2 + field36762: String + field36763: String +} + +type Object7513 @Directive21(argument61 : "stringValue35463") @Directive44(argument97 : ["stringValue35462"]) { + field36768: Scalar2 + field36769: String + field36770: String + field36771: String + field36772: String + field36773: Object7514 + field36775: String + field36776: Enum1836 +} + +type Object7514 @Directive21(argument61 : "stringValue35465") @Directive44(argument97 : ["stringValue35464"]) { + field36774: String +} + +type Object7515 @Directive21(argument61 : "stringValue35474") @Directive44(argument97 : ["stringValue35473"]) { + field36779: [Object7432] @deprecated + field36780: Object7510 @deprecated + field36781: Boolean + field36782: Boolean + field36783: Boolean + field36784: Object7516 + field36792: String + field36793: Boolean + field36794: Boolean + field36795: Int + field36796: Boolean + field36797: [Object7518] + field36822: Boolean + field36823: Boolean + field36824: Object7524 @deprecated + field36877: Int + field36878: Boolean + field36879: Object7528 + field36887: Boolean + field36888: Int + field36889: Boolean + field36890: Enum1845 + field36891: Boolean + field36892: Int + field36893: [Scalar2] + field36894: Boolean + field36895: Boolean + field36896: Object7496 + field36897: Boolean +} + +type Object7516 @Directive21(argument61 : "stringValue35476") @Directive44(argument97 : ["stringValue35475"]) { + field36785: [[Object7517]] + field36789: [Enum1839] + field36790: [Enum1839] + field36791: Scalar1 +} + +type Object7517 @Directive21(argument61 : "stringValue35478") @Directive44(argument97 : ["stringValue35477"]) { + field36786: String + field36787: String + field36788: Enum1839 +} + +type Object7518 @Directive21(argument61 : "stringValue35481") @Directive44(argument97 : ["stringValue35480"]) { + field36798: String + field36799: String! + field36800: Scalar2! + field36801: [Object7519]! + field36820: Boolean + field36821: Enum1843! +} + +type Object7519 @Directive21(argument61 : "stringValue35483") @Directive44(argument97 : ["stringValue35482"]) { + field36802: String! + field36803: String! + field36804: String! + field36805: Union258! + field36810: Enum1840 + field36811: Enum1841 + field36812: Enum1842 + field36813: Enum1842 + field36814: Scalar2 + field36815: Scalar2 + field36816: Float + field36817: String! + field36818: Boolean + field36819: Enum1842! +} + +type Object752 @Directive20(argument58 : "stringValue3787", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3786") @Directive31 @Directive44(argument97 : ["stringValue3788", "stringValue3789"]) { + field4263: String + field4264: String + field4265: String + field4266: String + field4267: String + field4268: String + field4269: String + field4270: String + field4271: String + field4272: Enum213 +} + +type Object7520 @Directive21(argument61 : "stringValue35486") @Directive44(argument97 : ["stringValue35485"]) { + field36806: Boolean +} + +type Object7521 @Directive21(argument61 : "stringValue35488") @Directive44(argument97 : ["stringValue35487"]) { + field36807: Enum1794 +} + +type Object7522 @Directive21(argument61 : "stringValue35490") @Directive44(argument97 : ["stringValue35489"]) { + field36808: Enum1796 +} + +type Object7523 @Directive21(argument61 : "stringValue35492") @Directive44(argument97 : ["stringValue35491"]) { + field36809: String +} + +type Object7524 @Directive21(argument61 : "stringValue35498") @Directive44(argument97 : ["stringValue35497"]) { + field36825: [Enum1793] + field36826: [Int] + field36827: [Int] + field36828: [String] + field36829: [Enum1794] + field36830: [Enum1795] + field36831: [Int] + field36832: [Scalar2] + field36833: [Int] + field36834: [Int] + field36835: [Int] + field36836: [Int] + field36837: [Float] + field36838: Boolean + field36839: Scalar4 + field36840: Scalar4 + field36841: [String] + field36842: [Enum1796] + field36843: [Scalar2] + field36844: [String] + field36845: Object7525 + field36848: [String] + field36849: [String] + field36850: [String] + field36851: [String] + field36852: [Enum1797] + field36853: [Scalar2] + field36854: [Enum1798] + field36855: Boolean + field36856: [Object7526] + field36860: Boolean + field36861: [Scalar2] + field36862: Boolean + field36863: [Object7527] + field36866: [Enum1799] + field36867: [Enum1800] + field36868: [Enum1801] + field36869: Boolean + field36870: [Enum1802] + field36871: [String] + field36872: [Enum1803] + field36873: [Enum1804] + field36874: [Enum1805] + field36875: Boolean + field36876: [String] +} + +type Object7525 @Directive21(argument61 : "stringValue35500") @Directive44(argument97 : ["stringValue35499"]) { + field36846: [Int] + field36847: [Scalar2] +} + +type Object7526 @Directive21(argument61 : "stringValue35502") @Directive44(argument97 : ["stringValue35501"]) { + field36857: String! + field36858: String! + field36859: Float +} + +type Object7527 @Directive21(argument61 : "stringValue35504") @Directive44(argument97 : ["stringValue35503"]) { + field36864: Scalar2 + field36865: Scalar2 +} + +type Object7528 @Directive21(argument61 : "stringValue35506") @Directive44(argument97 : ["stringValue35505"]) { + field36880: [Scalar2] + field36881: [Scalar2] + field36882: [Scalar2] + field36883: [Scalar2] + field36884: [Enum1844] + field36885: [Scalar2] + field36886: [Scalar2] +} + +type Object7529 @Directive44(argument97 : ["stringValue35509"]) { + field36899(argument2088: InputObject1621!): Object7530 @Directive35(argument89 : "stringValue35511", argument90 : true, argument91 : "stringValue35510", argument92 : 614, argument93 : "stringValue35512", argument94 : false) + field36947(argument2089: InputObject1622!): Object7537 @Directive35(argument89 : "stringValue35529", argument90 : true, argument91 : "stringValue35528", argument92 : 615, argument93 : "stringValue35530", argument94 : false) + field36949(argument2090: InputObject1623!): Object7538 @Directive35(argument89 : "stringValue35535", argument90 : true, argument91 : "stringValue35534", argument92 : 616, argument93 : "stringValue35536", argument94 : false) + field36971(argument2091: InputObject1624!): Object7542 @Directive35(argument89 : "stringValue35547", argument90 : true, argument91 : "stringValue35546", argument92 : 617, argument93 : "stringValue35548", argument94 : false) + field36977(argument2092: InputObject1625!): Object7543 @Directive35(argument89 : "stringValue35553", argument90 : true, argument91 : "stringValue35552", argument92 : 618, argument93 : "stringValue35554", argument94 : false) + field36996(argument2093: InputObject1626!): Object7546 @Directive35(argument89 : "stringValue35564", argument90 : true, argument91 : "stringValue35563", argument92 : 619, argument93 : "stringValue35565", argument94 : false) + field37145(argument2094: InputObject1627!): Object7567 @Directive35(argument89 : "stringValue35617", argument90 : true, argument91 : "stringValue35616", argument92 : 620, argument93 : "stringValue35618", argument94 : false) + field37150(argument2095: InputObject1628!): Object7568 @Directive35(argument89 : "stringValue35623", argument90 : true, argument91 : "stringValue35622", argument92 : 621, argument93 : "stringValue35624", argument94 : false) + field37155(argument2096: InputObject1629!): Object7569 @Directive35(argument89 : "stringValue35629", argument90 : true, argument91 : "stringValue35628", argument92 : 622, argument93 : "stringValue35630", argument94 : false) + field37158(argument2097: InputObject1630!): Object7570 @Directive35(argument89 : "stringValue35635", argument90 : true, argument91 : "stringValue35634", argument92 : 623, argument93 : "stringValue35636", argument94 : false) + field37294(argument2098: InputObject1631!): Object7596 @Directive35(argument89 : "stringValue35694", argument90 : true, argument91 : "stringValue35693", argument92 : 624, argument93 : "stringValue35695", argument94 : false) + field37325(argument2099: InputObject1632!): Object7602 @Directive35(argument89 : "stringValue35711", argument90 : true, argument91 : "stringValue35710", argument92 : 625, argument93 : "stringValue35712", argument94 : false) + field37381(argument2100: InputObject1633!): Object7609 @Directive35(argument89 : "stringValue35730", argument90 : true, argument91 : "stringValue35729", argument92 : 626, argument93 : "stringValue35731", argument94 : false) +} + +type Object753 @Directive20(argument58 : "stringValue3806", argument59 : false, argument60 : false) @Directive42(argument96 : ["stringValue3794", "stringValue3795", "stringValue3796"]) @Directive44(argument97 : ["stringValue3797", "stringValue3798", "stringValue3799", "stringValue3800", "stringValue3801", "stringValue3802", "stringValue3803", "stringValue3804", "stringValue3805"]) { + field4274: Boolean! + field4275: Boolean! + field4276: String + field4277: String +} + +type Object7530 @Directive21(argument61 : "stringValue35515") @Directive44(argument97 : ["stringValue35514"]) { + field36900: Object4995 + field36901: Object7531 +} + +type Object7531 @Directive21(argument61 : "stringValue35517") @Directive44(argument97 : ["stringValue35516"]) { + field36902: Object7532! + field36920: Object7534! + field36935: String! + field36936: Object7535 + field36942: [Object5025] + field36943: Object7536 +} + +type Object7532 @Directive21(argument61 : "stringValue35519") @Directive44(argument97 : ["stringValue35518"]) { + field36903: Int + field36904: String + field36905: Scalar3 + field36906: Scalar3 + field36907: Boolean + field36908: Object7533 + field36912: Boolean + field36913: Int + field36914: Scalar2 + field36915: Scalar2 + field36916: String + field36917: Int + field36918: Int + field36919: Int +} + +type Object7533 @Directive21(argument61 : "stringValue35521") @Directive44(argument97 : ["stringValue35520"]) { + field36909: String + field36910: String + field36911: String +} + +type Object7534 @Directive21(argument61 : "stringValue35523") @Directive44(argument97 : ["stringValue35522"]) { + field36921: String + field36922: Boolean + field36923: String + field36924: String + field36925: Boolean + field36926: Boolean + field36927: String + field36928: Boolean + field36929: Boolean + field36930: Scalar2 + field36931: Boolean + field36932: Boolean + field36933: String + field36934: String +} + +type Object7535 @Directive21(argument61 : "stringValue35525") @Directive44(argument97 : ["stringValue35524"]) { + field36937: Boolean! + field36938: Int + field36939: Int! + field36940: String + field36941: Boolean +} + +type Object7536 @Directive21(argument61 : "stringValue35527") @Directive44(argument97 : ["stringValue35526"]) { + field36944: String + field36945: String + field36946: String +} + +type Object7537 @Directive21(argument61 : "stringValue35533") @Directive44(argument97 : ["stringValue35532"]) { + field36948: Object4995 +} + +type Object7538 @Directive21(argument61 : "stringValue35539") @Directive44(argument97 : ["stringValue35538"]) { + field36950: Object4995 + field36951: Object4995 + field36952: Object4995 + field36953: Object4995 + field36954: Object4995 + field36955: Object7539 + field36963: Object7540 +} + +type Object7539 @Directive21(argument61 : "stringValue35541") @Directive44(argument97 : ["stringValue35540"]) { + field36956: [Object5002] + field36957: Object5003 + field36958: String + field36959: String + field36960: String + field36961: String + field36962: String +} + +type Object754 @Directive22(argument62 : "stringValue3808") @Directive30(argument80 : true) @Directive42(argument96 : ["stringValue3807"]) @Directive44(argument97 : ["stringValue3809", "stringValue3810", "stringValue3811"]) { + field4279: Float! @Directive30(argument80 : true) + field4280: Float! @Directive30(argument80 : true) +} + +type Object7540 @Directive21(argument61 : "stringValue35543") @Directive44(argument97 : ["stringValue35542"]) { + field36964: [Object7541] + field36967: [Object5025] + field36968: Boolean + field36969: Boolean + field36970: String +} + +type Object7541 @Directive21(argument61 : "stringValue35545") @Directive44(argument97 : ["stringValue35544"]) { + field36965: String + field36966: Scalar2 +} + +type Object7542 @Directive21(argument61 : "stringValue35551") @Directive44(argument97 : ["stringValue35550"]) { + field36972: Object4995 + field36973: Object4995 + field36974: Object4995 + field36975: Scalar2 + field36976: Object7540 +} + +type Object7543 @Directive21(argument61 : "stringValue35557") @Directive44(argument97 : ["stringValue35556"]) { + field36978: Object4995 + field36979: [Object7544] + field36984: Object4995 + field36985: Object4995 + field36986: Object7545 + field36993: Object5014 + field36994: [Object5014] + field36995: Object7540 +} + +type Object7544 @Directive21(argument61 : "stringValue35559") @Directive44(argument97 : ["stringValue35558"]) { + field36980: String! + field36981: Enum1846 + field36982: Object4995 + field36983: Enum1221 +} + +type Object7545 @Directive21(argument61 : "stringValue35562") @Directive44(argument97 : ["stringValue35561"]) { + field36987: Object7532 + field36988: Object7534 + field36989: Object5009 + field36990: Object7535 + field36991: String + field36992: String +} + +type Object7546 @Directive21(argument61 : "stringValue35568") @Directive44(argument97 : ["stringValue35567"]) { + field36997: Object5027! + field36998: Object7547! + field37020: Object7549! + field37023: Object5009 + field37024: Object7550 + field37127: Object7563 + field37130: Object7564 + field37135: Object7565 +} + +type Object7547 @Directive21(argument61 : "stringValue35570") @Directive44(argument97 : ["stringValue35569"]) { + field36999: String + field37000: String + field37001: String + field37002: String + field37003: String + field37004: [Object7548] + field37010: String + field37011: Boolean + field37012: String + field37013: String + field37014: String + field37015: String + field37016: Int + field37017: String + field37018: String + field37019: String +} + +type Object7548 @Directive21(argument61 : "stringValue35572") @Directive44(argument97 : ["stringValue35571"]) { + field37005: String + field37006: String + field37007: String + field37008: String + field37009: Scalar2 +} + +type Object7549 @Directive21(argument61 : "stringValue35574") @Directive44(argument97 : ["stringValue35573"]) { + field37021: Scalar2 + field37022: String +} + +type Object755 @Directive20(argument58 : "stringValue3813", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3812") @Directive31 @Directive44(argument97 : ["stringValue3814", "stringValue3815"]) { + field4282: String + field4283: Float +} + +type Object7550 @Directive21(argument61 : "stringValue35576") @Directive44(argument97 : ["stringValue35575"]) { + field37025: Scalar2! + field37026: Object7551! + field37054: Object7555 + field37073: Object7556 + field37090: Object7558 + field37094: Scalar3 + field37095: Object7559 + field37113: Object7561 +} + +type Object7551 @Directive21(argument61 : "stringValue35578") @Directive44(argument97 : ["stringValue35577"]) { + field37027: Scalar2 + field37028: Object7552! + field37048: Object7554! + field37052: Scalar1 + field37053: Boolean +} + +type Object7552 @Directive21(argument61 : "stringValue35580") @Directive44(argument97 : ["stringValue35579"]) { + field37029: Enum1847! + field37030: Scalar5 + field37031: Float + field37032: Float + field37033: Object7553 + field37037: Float + field37038: Float + field37039: Float + field37040: Float + field37041: Boolean + field37042: Float + field37043: Float + field37044: Float + field37045: String + field37046: String + field37047: Float +} + +type Object7553 @Directive21(argument61 : "stringValue35583") @Directive44(argument97 : ["stringValue35582"]) { + field37034: Scalar5 + field37035: Scalar5 + field37036: Float +} + +type Object7554 @Directive21(argument61 : "stringValue35585") @Directive44(argument97 : ["stringValue35584"]) { + field37049: Enum1848! + field37050: Scalar5 + field37051: Scalar2 +} + +type Object7555 @Directive21(argument61 : "stringValue35588") @Directive44(argument97 : ["stringValue35587"]) { + field37055: Boolean! + field37056: Boolean! + field37057: Enum1849! + field37058: Enum1850! + field37059: Scalar4 + field37060: Scalar4 + field37061: Scalar4 + field37062: Scalar4 + field37063: Int + field37064: Float + field37065: Int + field37066: Float + field37067: Float + field37068: Boolean + field37069: Float + field37070: String + field37071: Float + field37072: Enum1851 +} + +type Object7556 @Directive21(argument61 : "stringValue35593") @Directive44(argument97 : ["stringValue35592"]) { + field37074: Enum1847! + field37075: Enum1848! + field37076: String + field37077: String + field37078: String + field37079: Scalar1 + field37080: Scalar1 + field37081: String! + field37082: [Object7557] + field37087: [String] + field37088: [Object5010] + field37089: [Enum1853] +} + +type Object7557 @Directive21(argument61 : "stringValue35595") @Directive44(argument97 : ["stringValue35594"]) { + field37083: Enum1852 + field37084: String + field37085: String + field37086: String +} + +type Object7558 @Directive21(argument61 : "stringValue35599") @Directive44(argument97 : ["stringValue35598"]) { + field37091: Boolean! + field37092: String + field37093: String +} + +type Object7559 @Directive21(argument61 : "stringValue35601") @Directive44(argument97 : ["stringValue35600"]) { + field37096: Enum1847! + field37097: Enum1848! + field37098: String + field37099: String + field37100: String + field37101: Scalar1 + field37102: Scalar1 + field37103: [Object7557] + field37104: [String] + field37105: [Object5010] + field37106: [Enum1853] + field37107: [Object7560] + field37112: Object5012 +} + +type Object756 @Directive20(argument58 : "stringValue3817", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3816") @Directive31 @Directive44(argument97 : ["stringValue3818", "stringValue3819"]) { + field4285: String + field4286: String + field4287: String + field4288: String + field4289: Object756 +} + +type Object7560 @Directive21(argument61 : "stringValue35603") @Directive44(argument97 : ["stringValue35602"]) { + field37108: String + field37109: Enum1852 + field37110: Object5011 + field37111: Object5011 +} + +type Object7561 @Directive21(argument61 : "stringValue35605") @Directive44(argument97 : ["stringValue35604"]) { + field37114: Object7562 +} + +type Object7562 @Directive21(argument61 : "stringValue35607") @Directive44(argument97 : ["stringValue35606"]) { + field37115: Boolean + field37116: Boolean + field37117: Boolean + field37118: Boolean + field37119: Boolean + field37120: Boolean + field37121: Boolean + field37122: Boolean + field37123: Boolean + field37124: Boolean + field37125: Boolean + field37126: Boolean +} + +type Object7563 @Directive21(argument61 : "stringValue35609") @Directive44(argument97 : ["stringValue35608"]) { + field37128: String + field37129: [String] +} + +type Object7564 @Directive21(argument61 : "stringValue35611") @Directive44(argument97 : ["stringValue35610"]) { + field37131: String + field37132: String! + field37133: String! + field37134: String +} + +type Object7565 @Directive21(argument61 : "stringValue35613") @Directive44(argument97 : ["stringValue35612"]) { + field37136: String! + field37137: String + field37138: Object7566 +} + +type Object7566 @Directive21(argument61 : "stringValue35615") @Directive44(argument97 : ["stringValue35614"]) { + field37139: String! + field37140: String! + field37141: String + field37142: String + field37143: String + field37144: String +} + +type Object7567 @Directive21(argument61 : "stringValue35621") @Directive44(argument97 : ["stringValue35620"]) { + field37146: Object5027! + field37147: Object7547! + field37148: Object7549! + field37149: Object5009 +} + +type Object7568 @Directive21(argument61 : "stringValue35627") @Directive44(argument97 : ["stringValue35626"]) { + field37151: Boolean! + field37152: String + field37153: String + field37154: Boolean +} + +type Object7569 @Directive21(argument61 : "stringValue35633") @Directive44(argument97 : ["stringValue35632"]) { + field37156: Object7549! + field37157: Object7547 +} + +type Object757 @Directive20(argument58 : "stringValue3821", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3820") @Directive31 @Directive44(argument97 : ["stringValue3822", "stringValue3823"]) { + field4291: String + field4292: Enum214 + field4293: Object758 +} + +type Object7570 @Directive21(argument61 : "stringValue35639") @Directive44(argument97 : ["stringValue35638"]) { + field37159: Object7571! + field37177: Object7574 + field37182: [Object7575] + field37185: Boolean + field37186: [Object7576] + field37190: Int + field37191: Boolean + field37192: [Object7577] + field37210: [Object7582] + field37221: [Object7584] + field37229: [Object7585] + field37234: Boolean + field37235: [String] + field37236: [Object7586] + field37240: Int + field37241: String + field37242: String + field37243: String + field37244: Boolean + field37245: Object7587 + field37248: String + field37249: String + field37250: Object7588 + field37255: Boolean + field37256: [Object7589] + field37261: Object7590 + field37265: [Object7591] + field37279: Scalar2 + field37280: [Object7593] + field37290: [Object7595] +} + +type Object7571 @Directive21(argument61 : "stringValue35641") @Directive44(argument97 : ["stringValue35640"]) { + field37160: Scalar2 + field37161: String + field37162: Scalar3 + field37163: Scalar3 + field37164: Object7572 + field37168: Object7573 + field37171: Boolean + field37172: Boolean + field37173: Boolean + field37174: Boolean + field37175: Boolean + field37176: Boolean +} + +type Object7572 @Directive21(argument61 : "stringValue35643") @Directive44(argument97 : ["stringValue35642"]) { + field37165: Scalar2 + field37166: String + field37167: String +} + +type Object7573 @Directive21(argument61 : "stringValue35645") @Directive44(argument97 : ["stringValue35644"]) { + field37169: String + field37170: String +} + +type Object7574 @Directive21(argument61 : "stringValue35647") @Directive44(argument97 : ["stringValue35646"]) { + field37178: String + field37179: [String] + field37180: String + field37181: Scalar2 +} + +type Object7575 @Directive21(argument61 : "stringValue35649") @Directive44(argument97 : ["stringValue35648"]) { + field37183: String + field37184: String +} + +type Object7576 @Directive21(argument61 : "stringValue35651") @Directive44(argument97 : ["stringValue35650"]) { + field37187: String + field37188: [String] + field37189: String +} + +type Object7577 @Directive21(argument61 : "stringValue35653") @Directive44(argument97 : ["stringValue35652"]) { + field37193: String + field37194: String + field37195: [String] + field37196: String + field37197: String + field37198: Enum1854 + field37199: Union259 +} + +type Object7578 @Directive21(argument61 : "stringValue35657") @Directive44(argument97 : ["stringValue35656"]) { + field37200: Object7579 + field37207: Object7579 +} + +type Object7579 @Directive21(argument61 : "stringValue35659") @Directive44(argument97 : ["stringValue35658"]) { + field37201: String + field37202: [Object7580] +} + +type Object758 @Directive22(argument62 : "stringValue3827") @Directive31 @Directive44(argument97 : ["stringValue3828", "stringValue3829"]) { + field4294: Object759 + field4298: Object760 + field4302: Object761 +} + +type Object7580 @Directive21(argument61 : "stringValue35661") @Directive44(argument97 : ["stringValue35660"]) { + field37203: String + field37204: String + field37205: String + field37206: [String] +} + +type Object7581 @Directive21(argument61 : "stringValue35663") @Directive44(argument97 : ["stringValue35662"]) { + field37208: String + field37209: Scalar2 +} + +type Object7582 @Directive21(argument61 : "stringValue35665") @Directive44(argument97 : ["stringValue35664"]) { + field37211: String + field37212: Int + field37213: String + field37214: [Object7583] + field37219: String + field37220: Boolean +} + +type Object7583 @Directive21(argument61 : "stringValue35667") @Directive44(argument97 : ["stringValue35666"]) { + field37215: Int + field37216: String + field37217: String + field37218: [String] +} + +type Object7584 @Directive21(argument61 : "stringValue35669") @Directive44(argument97 : ["stringValue35668"]) { + field37222: String + field37223: Int + field37224: String + field37225: [String] + field37226: String + field37227: String + field37228: String +} + +type Object7585 @Directive21(argument61 : "stringValue35671") @Directive44(argument97 : ["stringValue35670"]) { + field37230: String + field37231: String + field37232: [String] + field37233: String +} + +type Object7586 @Directive21(argument61 : "stringValue35673") @Directive44(argument97 : ["stringValue35672"]) { + field37237: String + field37238: String + field37239: String +} + +type Object7587 @Directive21(argument61 : "stringValue35675") @Directive44(argument97 : ["stringValue35674"]) { + field37246: String + field37247: String +} + +type Object7588 @Directive21(argument61 : "stringValue35677") @Directive44(argument97 : ["stringValue35676"]) { + field37251: Int + field37252: Int + field37253: Boolean + field37254: String +} + +type Object7589 @Directive21(argument61 : "stringValue35679") @Directive44(argument97 : ["stringValue35678"]) { + field37257: String + field37258: String + field37259: [String] + field37260: String +} + +type Object759 @Directive22(argument62 : "stringValue3830") @Directive31 @Directive44(argument97 : ["stringValue3831", "stringValue3832"]) { + field4295: String + field4296: String + field4297: [Enum10] +} + +type Object7590 @Directive21(argument61 : "stringValue35681") @Directive44(argument97 : ["stringValue35680"]) { + field37262: String + field37263: [String] + field37264: String +} + +type Object7591 @Directive21(argument61 : "stringValue35683") @Directive44(argument97 : ["stringValue35682"]) { + field37266: Enum1855! + field37267: Int! + field37268: String + field37269: String + field37270: String! + field37271: [String] + field37272: String + field37273: [String] + field37274: [Object7591] + field37275: Object7592 + field37278: Boolean +} + +type Object7592 @Directive21(argument61 : "stringValue35686") @Directive44(argument97 : ["stringValue35685"]) { + field37276: String + field37277: String +} + +type Object7593 @Directive21(argument61 : "stringValue35688") @Directive44(argument97 : ["stringValue35687"]) { + field37281: [String] + field37282: [String] + field37283: Object7592 + field37284: [Object7594] +} + +type Object7594 @Directive21(argument61 : "stringValue35690") @Directive44(argument97 : ["stringValue35689"]) { + field37285: String + field37286: [String] + field37287: Boolean + field37288: String + field37289: String +} + +type Object7595 @Directive21(argument61 : "stringValue35692") @Directive44(argument97 : ["stringValue35691"]) { + field37291: [String] + field37292: [Object7592] + field37293: String +} + +type Object7596 @Directive21(argument61 : "stringValue35698") @Directive44(argument97 : ["stringValue35697"]) { + field37295: Enum1856 + field37296: Object7597 + field37302: [Object7599] + field37306: [Object7599] + field37307: Scalar2 + field37308: Object5028 + field37309: Boolean + field37310: Scalar2 + field37311: String + field37312: String + field37313: Object7600 + field37316: Scalar2 + field37317: Boolean + field37318: Boolean + field37319: Scalar2 + field37320: String + field37321: Object7601 + field37324: Object7565 +} + +type Object7597 @Directive21(argument61 : "stringValue35701") @Directive44(argument97 : ["stringValue35700"]) { + field37297: [Object7598]! +} + +type Object7598 @Directive21(argument61 : "stringValue35703") @Directive44(argument97 : ["stringValue35702"]) { + field37298: String + field37299: String + field37300: Boolean + field37301: String +} + +type Object7599 @Directive21(argument61 : "stringValue35705") @Directive44(argument97 : ["stringValue35704"]) { + field37303: String + field37304: [Object5047] + field37305: Scalar2 +} + +type Object76 implements Interface19 @Directive21(argument61 : "stringValue337") @Directive44(argument97 : ["stringValue336"]) { + field509: String! + field510: Enum37 + field511: Float + field512: String + field513: Interface20 + field538: Interface21 + field559: String + field560: String + field561: Float @deprecated + field562: Object83 + field566: Object81 +} + +type Object760 @Directive22(argument62 : "stringValue3833") @Directive31 @Directive44(argument97 : ["stringValue3834", "stringValue3835"]) { + field4299: String + field4300: String + field4301: Enum10 +} + +type Object7600 @Directive21(argument61 : "stringValue35707") @Directive44(argument97 : ["stringValue35706"]) { + field37314: Scalar2! + field37315: String +} + +type Object7601 @Directive21(argument61 : "stringValue35709") @Directive44(argument97 : ["stringValue35708"]) { + field37322: String + field37323: String +} + +type Object7602 @Directive21(argument61 : "stringValue35715") @Directive44(argument97 : ["stringValue35714"]) { + field37326: Enum1857! + field37327: Object5004 + field37328: Object7597 + field37329: Object7603! + field37341: Object7605 + field37348: Object7600! + field37349: String + field37350: String + field37351: String + field37352: String + field37353: String + field37354: String + field37355: [Object7606]! + field37360: Object7606 + field37361: Scalar2 + field37362: String! + field37363: String + field37364: Object7607! + field37371: Object7608 + field37380: Object5004 +} + +type Object7603 @Directive21(argument61 : "stringValue35718") @Directive44(argument97 : ["stringValue35717"]) { + field37330: Object5003! + field37331: Object5003! + field37332: [Object5003]! + field37333: [Object7604] + field37337: Object5003! + field37338: Object5003! + field37339: Object5003! + field37340: [Object5003] +} + +type Object7604 @Directive21(argument61 : "stringValue35720") @Directive44(argument97 : ["stringValue35719"]) { + field37334: Object5004! + field37335: String! + field37336: Boolean +} + +type Object7605 @Directive21(argument61 : "stringValue35722") @Directive44(argument97 : ["stringValue35721"]) { + field37342: Object5003! + field37343: [Object5003]! + field37344: Object5003! + field37345: Object5003! + field37346: Object5003! + field37347: [Object5003]! +} + +type Object7606 @Directive21(argument61 : "stringValue35724") @Directive44(argument97 : ["stringValue35723"]) { + field37356: Int + field37357: Enum1219 + field37358: String + field37359: Boolean +} + +type Object7607 @Directive21(argument61 : "stringValue35726") @Directive44(argument97 : ["stringValue35725"]) { + field37365: Int! + field37366: Int! + field37367: Int! + field37368: String! + field37369: String! + field37370: String! +} + +type Object7608 @Directive21(argument61 : "stringValue35728") @Directive44(argument97 : ["stringValue35727"]) { + field37372: String! + field37373: String! @deprecated + field37374: Scalar3! + field37375: Int! + field37376: String! + field37377: String! + field37378: Int! + field37379: String! +} + +type Object7609 @Directive21(argument61 : "stringValue35734") @Directive44(argument97 : ["stringValue35733"]) { + field37382: Enum1858! + field37383: Object7597 + field37384: Object7599 + field37385: Object5028 + field37386: Object5004 + field37387: Object7610! + field37399: Object7600! + field37400: String + field37401: String + field37402: String + field37403: [Object7606]! + field37404: Object7606 + field37405: Scalar2 + field37406: String + field37407: Object7612 + field37415: Object7613! + field37422: Scalar2 + field37423: Object5030 + field37424: String + field37425: String + field37426: String + field37427: String + field37428: String! + field37429: Enum1859 + field37430: Object7565 +} + +type Object761 @Directive22(argument62 : "stringValue3836") @Directive31 @Directive44(argument97 : ["stringValue3837", "stringValue3838"]) { + field4303: [Object480] +} + +type Object7610 @Directive21(argument61 : "stringValue35737") @Directive44(argument97 : ["stringValue35736"]) { + field37388: Object5003! + field37389: Object5003 + field37390: [Object5003]! + field37391: [Object7611] + field37395: Object5003 + field37396: Object5003 + field37397: [Object5003] + field37398: Object5003 +} + +type Object7611 @Directive21(argument61 : "stringValue35739") @Directive44(argument97 : ["stringValue35738"]) { + field37392: Object5004! @deprecated + field37393: String! + field37394: Boolean +} + +type Object7612 @Directive21(argument61 : "stringValue35741") @Directive44(argument97 : ["stringValue35740"]) { + field37408: Object5003! + field37409: [Object5003]! + field37410: [Object7611] @deprecated + field37411: Object5003! + field37412: Object5003! + field37413: Object5003! + field37414: [Object5003] +} + +type Object7613 @Directive21(argument61 : "stringValue35743") @Directive44(argument97 : ["stringValue35742"]) { + field37416: Int! + field37417: Int! + field37418: Int! @deprecated + field37419: String! + field37420: String + field37421: String +} + +type Object7614 @Directive44(argument97 : ["stringValue35745"]) { + field37432(argument2101: InputObject1634!): Object7615 @Directive35(argument89 : "stringValue35747", argument90 : true, argument91 : "stringValue35746", argument93 : "stringValue35748", argument94 : true) + field37434: Object7616 @Directive35(argument89 : "stringValue35753", argument90 : true, argument91 : "stringValue35752", argument93 : "stringValue35754", argument94 : true) + field37436(argument2102: InputObject1635!): Object7617 @Directive35(argument89 : "stringValue35758", argument90 : true, argument91 : "stringValue35757", argument93 : "stringValue35759", argument94 : true) + field37438(argument2103: InputObject1636!): Object7618 @Directive35(argument89 : "stringValue35764", argument90 : true, argument91 : "stringValue35763", argument92 : 627, argument93 : "stringValue35765", argument94 : true) + field37440: Object5060 @Directive35(argument89 : "stringValue35770", argument90 : false, argument91 : "stringValue35769", argument92 : 628, argument93 : "stringValue35771", argument94 : true) + field37441(argument2104: InputObject1637!): Object5067 @Directive35(argument89 : "stringValue35773", argument90 : true, argument91 : "stringValue35772", argument92 : 629, argument93 : "stringValue35774", argument94 : true) + field37442(argument2105: InputObject1637!): Object5067 @Directive35(argument89 : "stringValue35783", argument90 : false, argument91 : "stringValue35782", argument92 : 630, argument93 : "stringValue35784", argument94 : true) + field37443(argument2106: InputObject1641!): Object7619 @Directive35(argument89 : "stringValue35786", argument90 : false, argument91 : "stringValue35785", argument93 : "stringValue35787", argument94 : true) +} + +type Object7615 @Directive21(argument61 : "stringValue35751") @Directive44(argument97 : ["stringValue35750"]) { + field37433: Boolean +} + +type Object7616 @Directive21(argument61 : "stringValue35756") @Directive44(argument97 : ["stringValue35755"]) { + field37435: Boolean +} + +type Object7617 @Directive21(argument61 : "stringValue35762") @Directive44(argument97 : ["stringValue35761"]) { + field37437: Object5064 +} + +type Object7618 @Directive21(argument61 : "stringValue35768") @Directive44(argument97 : ["stringValue35767"]) { + field37439: Object5056 +} + +type Object7619 @Directive21(argument61 : "stringValue35790") @Directive44(argument97 : ["stringValue35789"]) { + field37444: Boolean +} + +type Object762 @Directive20(argument58 : "stringValue3840", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3839") @Directive31 @Directive44(argument97 : ["stringValue3841", "stringValue3842"]) { + field4305: String + field4306: String + field4307: String + field4308: String + field4309: String + field4310: String + field4311: Object398 + field4312: String + field4313: String + field4314: Object763 +} + +type Object7620 @Directive44(argument97 : ["stringValue35791"]) { + field37446(argument2107: InputObject1642!): Object7621 @Directive35(argument89 : "stringValue35793", argument90 : true, argument91 : "stringValue35792", argument93 : "stringValue35794", argument94 : false) + field37452(argument2108: InputObject1643!): Object7622 @Directive35(argument89 : "stringValue35799", argument90 : true, argument91 : "stringValue35798", argument93 : "stringValue35800", argument94 : false) + field37457(argument2109: InputObject1644!): Object7624 @Directive35(argument89 : "stringValue35807", argument90 : true, argument91 : "stringValue35806", argument93 : "stringValue35808", argument94 : false) + field37459(argument2110: InputObject1645!): Object7625 @Directive35(argument89 : "stringValue35813", argument90 : true, argument91 : "stringValue35812", argument93 : "stringValue35814", argument94 : false) + field37461(argument2111: InputObject1646!): Object7626 @Directive35(argument89 : "stringValue35819", argument90 : true, argument91 : "stringValue35818", argument93 : "stringValue35820", argument94 : false) + field37464(argument2112: InputObject1647!): Object7627 @Directive35(argument89 : "stringValue35825", argument90 : false, argument91 : "stringValue35824", argument93 : "stringValue35826", argument94 : false) + field37474(argument2113: InputObject1648!): Object7629 @Directive35(argument89 : "stringValue35833", argument90 : true, argument91 : "stringValue35832", argument93 : "stringValue35834", argument94 : false) + field37482(argument2114: InputObject1649!): Object7631 @Directive35(argument89 : "stringValue35841", argument90 : true, argument91 : "stringValue35840", argument93 : "stringValue35842", argument94 : false) + field37486(argument2115: InputObject1650!): Object7633 @Directive35(argument89 : "stringValue35849", argument90 : true, argument91 : "stringValue35848", argument93 : "stringValue35850", argument94 : false) + field37496(argument2116: InputObject1647!): Object7635 @Directive35(argument89 : "stringValue35857", argument90 : false, argument91 : "stringValue35856", argument92 : 631, argument93 : "stringValue35858", argument94 : false) + field37524: Object7640 @Directive35(argument89 : "stringValue35871", argument90 : false, argument91 : "stringValue35870", argument92 : 632, argument93 : "stringValue35872", argument94 : false) +} + +type Object7621 @Directive21(argument61 : "stringValue35797") @Directive44(argument97 : ["stringValue35796"]) { + field37447: Enum1232 + field37448: String + field37449: Enum1232 + field37450: String + field37451: String +} + +type Object7622 @Directive21(argument61 : "stringValue35803") @Directive44(argument97 : ["stringValue35802"]) { + field37453: [Object7623!]! +} + +type Object7623 @Directive21(argument61 : "stringValue35805") @Directive44(argument97 : ["stringValue35804"]) { + field37454: Scalar2! + field37455: Scalar2 + field37456: Boolean! +} + +type Object7624 @Directive21(argument61 : "stringValue35811") @Directive44(argument97 : ["stringValue35810"]) { + field37458: [Object5077!]! +} + +type Object7625 @Directive21(argument61 : "stringValue35817") @Directive44(argument97 : ["stringValue35816"]) { + field37460: [Scalar2]! +} + +type Object7626 @Directive21(argument61 : "stringValue35823") @Directive44(argument97 : ["stringValue35822"]) { + field37462: Scalar1! + field37463: [Object5073!]! +} + +type Object7627 @Directive21(argument61 : "stringValue35829") @Directive44(argument97 : ["stringValue35828"]) { + field37465: [Object7628] +} + +type Object7628 @Directive21(argument61 : "stringValue35831") @Directive44(argument97 : ["stringValue35830"]) { + field37466: Scalar2! + field37467: Boolean + field37468: Scalar2 + field37469: Scalar2 + field37470: Scalar2 + field37471: Boolean! + field37472: String + field37473: String +} + +type Object7629 @Directive21(argument61 : "stringValue35837") @Directive44(argument97 : ["stringValue35836"]) { + field37475: [Object7630!]! +} + +type Object763 @Directive22(argument62 : "stringValue3843") @Directive31 @Directive44(argument97 : ["stringValue3844", "stringValue3845"]) { + field4315: String + field4316: String + field4317: String +} + +type Object7630 @Directive21(argument61 : "stringValue35839") @Directive44(argument97 : ["stringValue35838"]) { + field37476: Scalar2! + field37477: Boolean @deprecated + field37478: Boolean @deprecated + field37479: Float @deprecated + field37480: Enum1234! + field37481: Float +} + +type Object7631 @Directive21(argument61 : "stringValue35845") @Directive44(argument97 : ["stringValue35844"]) { + field37483: [Object7632]! +} + +type Object7632 @Directive21(argument61 : "stringValue35847") @Directive44(argument97 : ["stringValue35846"]) { + field37484: Scalar2! + field37485: Boolean! +} + +type Object7633 @Directive21(argument61 : "stringValue35853") @Directive44(argument97 : ["stringValue35852"]) { + field37487: [Object7634] +} + +type Object7634 @Directive21(argument61 : "stringValue35855") @Directive44(argument97 : ["stringValue35854"]) { + field37488: Scalar2! + field37489: String + field37490: String + field37491: Scalar4 + field37492: Scalar2 + field37493: Scalar2 + field37494: Boolean + field37495: Scalar2 +} + +type Object7635 @Directive21(argument61 : "stringValue35860") @Directive44(argument97 : ["stringValue35859"]) { + field37497: Object7636 + field37514: Scalar3 + field37515: Scalar3 + field37516: Boolean + field37517: [Object7638!]! + field37519: Scalar2! + field37520: [Object7639!]! +} + +type Object7636 @Directive21(argument61 : "stringValue35862") @Directive44(argument97 : ["stringValue35861"]) { + field37498: Scalar2! + field37499: String! + field37500: String! + field37501: String + field37502: String! + field37503: [Object7637!]! + field37513: String +} + +type Object7637 @Directive21(argument61 : "stringValue35864") @Directive44(argument97 : ["stringValue35863"]) { + field37504: Scalar2 + field37505: Scalar2! + field37506: Float + field37507: Float + field37508: Float + field37509: Float + field37510: Boolean + field37511: String + field37512: Enum1863 +} + +type Object7638 @Directive21(argument61 : "stringValue35867") @Directive44(argument97 : ["stringValue35866"]) { + field37518: String! +} + +type Object7639 @Directive21(argument61 : "stringValue35869") @Directive44(argument97 : ["stringValue35868"]) { + field37521: Scalar2! + field37522: String! + field37523: String! +} + +type Object764 @Directive20(argument58 : "stringValue3847", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3846") @Directive31 @Directive44(argument97 : ["stringValue3848", "stringValue3849"]) { + field4319: String + field4320: Float + field4321: String +} + +type Object7640 @Directive21(argument61 : "stringValue35874") @Directive44(argument97 : ["stringValue35873"]) { + field37525: [Object7641]! +} + +type Object7641 @Directive21(argument61 : "stringValue35876") @Directive44(argument97 : ["stringValue35875"]) { + field37526: Scalar2 + field37527: String + field37528: String + field37529: Float + field37530: Float +} + +type Object7642 @Directive44(argument97 : ["stringValue35877"]) { + field37532(argument2117: InputObject1651!): Object7643 @Directive35(argument89 : "stringValue35879", argument90 : true, argument91 : "stringValue35878", argument92 : 633, argument93 : "stringValue35880", argument94 : false) + field37534(argument2118: InputObject1652!): Object7644 @Directive35(argument89 : "stringValue35885", argument90 : false, argument91 : "stringValue35884", argument92 : 634, argument93 : "stringValue35886", argument94 : false) + field37561(argument2119: InputObject1653!): Object7647 @Directive35(argument89 : "stringValue35899", argument90 : false, argument91 : "stringValue35898", argument92 : 635, argument93 : "stringValue35900", argument94 : false) + field37794(argument2120: InputObject1654!): Object7692 @Directive35(argument89 : "stringValue36014", argument90 : false, argument91 : "stringValue36013", argument92 : 636, argument93 : "stringValue36015", argument94 : false) + field37797(argument2121: InputObject1655!): Object7693 @Directive35(argument89 : "stringValue36020", argument90 : false, argument91 : "stringValue36019", argument92 : 637, argument93 : "stringValue36021", argument94 : false) + field37810(argument2122: InputObject1656!): Object7695 @Directive35(argument89 : "stringValue36028", argument90 : true, argument91 : "stringValue36027", argument93 : "stringValue36029", argument94 : false) + field37812(argument2123: InputObject1657!): Object7696 @Directive35(argument89 : "stringValue36034", argument90 : true, argument91 : "stringValue36033", argument92 : 638, argument93 : "stringValue36035", argument94 : false) + field37814(argument2124: InputObject1658!): Object7697 @Directive35(argument89 : "stringValue36040", argument90 : true, argument91 : "stringValue36039", argument92 : 639, argument93 : "stringValue36041", argument94 : false) + field37824(argument2125: InputObject1659!): Object7699 @Directive35(argument89 : "stringValue36048", argument90 : true, argument91 : "stringValue36047", argument92 : 640, argument93 : "stringValue36049", argument94 : false) + field37826(argument2126: InputObject1660!): Object7700 @Directive35(argument89 : "stringValue36054", argument90 : false, argument91 : "stringValue36053", argument92 : 641, argument93 : "stringValue36055", argument94 : false) +} + +type Object7643 @Directive21(argument61 : "stringValue35883") @Directive44(argument97 : ["stringValue35882"]) { + field37533: String +} + +type Object7644 @Directive21(argument61 : "stringValue35889") @Directive44(argument97 : ["stringValue35888"]) { + field37535: [Object7645] +} + +type Object7645 @Directive21(argument61 : "stringValue35891") @Directive44(argument97 : ["stringValue35890"]) { + field37536: String + field37537: String + field37538: Int + field37539: Int + field37540: Int + field37541: String + field37542: Int + field37543: Scalar3! + field37544: Scalar3! + field37545: Int + field37546: Int + field37547: Scalar4 + field37548: Scalar4 + field37549: Scalar2 + field37550: [Enum1864] + field37551: String + field37552: Enum1865 + field37553: String + field37554: Enum1866 + field37555: [Object7646] + field37559: Scalar1 + field37560: Enum1867 +} + +type Object7646 @Directive21(argument61 : "stringValue35896") @Directive44(argument97 : ["stringValue35895"]) { + field37556: Int! + field37557: Int! + field37558: Int! +} + +type Object7647 @Directive21(argument61 : "stringValue35903") @Directive44(argument97 : ["stringValue35902"]) { + field37562: [Object7648] + field37791: Int + field37792: Int + field37793: Int +} + +type Object7648 @Directive21(argument61 : "stringValue35905") @Directive44(argument97 : ["stringValue35904"]) { + field37563: Scalar2! + field37564: String + field37565: String + field37566: Float + field37567: Int + field37568: Int + field37569: String + field37570: Float + field37571: String + field37572: String + field37573: String + field37574: Int + field37575: String + field37576: Boolean + field37577: [String] + field37578: String + field37579: [Object7649] + field37624: [String] + field37625: Object7659 + field37643: Object7662 +} + +type Object7649 @Directive21(argument61 : "stringValue35907") @Directive44(argument97 : ["stringValue35906"]) { + field37580: String + field37581: String + field37582: Object7650 + field37604: String + field37605: String + field37606: String + field37607: String + field37608: String + field37609: [Object7657] @deprecated + field37620: String + field37621: String + field37622: String + field37623: Enum1869 +} + +type Object765 @Directive20(argument58 : "stringValue3851", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3850") @Directive31 @Directive44(argument97 : ["stringValue3852", "stringValue3853"]) { + field4323: String + field4324: String + field4325: String + field4326: String + field4327: Enum213 + field4328: String + field4329: Enum215 +} + +type Object7650 @Directive21(argument61 : "stringValue35909") @Directive44(argument97 : ["stringValue35908"]) { + field37583: [Object7651] + field37595: String + field37596: String + field37597: [String] + field37598: String @deprecated + field37599: String + field37600: Boolean + field37601: [String] + field37602: String + field37603: Enum1868 +} + +type Object7651 @Directive21(argument61 : "stringValue35911") @Directive44(argument97 : ["stringValue35910"]) { + field37584: String + field37585: String + field37586: Boolean + field37587: Union260 + field37593: Boolean @deprecated + field37594: Boolean +} + +type Object7652 @Directive21(argument61 : "stringValue35914") @Directive44(argument97 : ["stringValue35913"]) { + field37588: Boolean +} + +type Object7653 @Directive21(argument61 : "stringValue35916") @Directive44(argument97 : ["stringValue35915"]) { + field37589: Float +} + +type Object7654 @Directive21(argument61 : "stringValue35918") @Directive44(argument97 : ["stringValue35917"]) { + field37590: Int +} + +type Object7655 @Directive21(argument61 : "stringValue35920") @Directive44(argument97 : ["stringValue35919"]) { + field37591: Scalar2 +} + +type Object7656 @Directive21(argument61 : "stringValue35922") @Directive44(argument97 : ["stringValue35921"]) { + field37592: String +} + +type Object7657 @Directive21(argument61 : "stringValue35925") @Directive44(argument97 : ["stringValue35924"]) { + field37610: String + field37611: String + field37612: String + field37613: String + field37614: String + field37615: String + field37616: Object7658 +} + +type Object7658 @Directive21(argument61 : "stringValue35927") @Directive44(argument97 : ["stringValue35926"]) { + field37617: String + field37618: String + field37619: String +} + +type Object7659 @Directive21(argument61 : "stringValue35930") @Directive44(argument97 : ["stringValue35929"]) { + field37626: Object7660 + field37630: [String] + field37631: String + field37632: [Object7661] +} + +type Object766 @Directive20(argument58 : "stringValue3859", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3858") @Directive31 @Directive44(argument97 : ["stringValue3860", "stringValue3861"]) { + field4355: [Object767] + field4373: String +} + +type Object7660 @Directive21(argument61 : "stringValue35932") @Directive44(argument97 : ["stringValue35931"]) { + field37627: String + field37628: String + field37629: String +} + +type Object7661 @Directive21(argument61 : "stringValue35934") @Directive44(argument97 : ["stringValue35933"]) { + field37633: String + field37634: String + field37635: String + field37636: String + field37637: String + field37638: String + field37639: String + field37640: String + field37641: String + field37642: Enum1870 +} + +type Object7662 @Directive21(argument61 : "stringValue35937") @Directive44(argument97 : ["stringValue35936"]) { + field37644: Boolean + field37645: Float + field37646: Object7663 + field37656: String + field37657: Object7664 + field37658: String + field37659: Object7664 + field37660: Float + field37661: Boolean + field37662: Object7664 + field37663: [Object7665] + field37677: Object7664 + field37678: String + field37679: String + field37680: Object7664 + field37681: String + field37682: String + field37683: [Object7666] + field37691: [Enum1874] + field37692: Object7667 + field37707: Object7670 + field37790: Boolean +} + +type Object7663 @Directive21(argument61 : "stringValue35939") @Directive44(argument97 : ["stringValue35938"]) { + field37647: String + field37648: [Object7663] + field37649: Object7664 + field37654: Int + field37655: String +} + +type Object7664 @Directive21(argument61 : "stringValue35941") @Directive44(argument97 : ["stringValue35940"]) { + field37650: Float + field37651: String + field37652: String + field37653: Boolean +} + +type Object7665 @Directive21(argument61 : "stringValue35943") @Directive44(argument97 : ["stringValue35942"]) { + field37664: Enum1871 + field37665: String + field37666: Boolean + field37667: Boolean + field37668: Int + field37669: String + field37670: Scalar2 + field37671: String + field37672: Int + field37673: String + field37674: Float + field37675: Int + field37676: Enum1872 +} + +type Object7666 @Directive21(argument61 : "stringValue35947") @Directive44(argument97 : ["stringValue35946"]) { + field37684: String + field37685: String + field37686: String + field37687: String + field37688: String + field37689: Enum1873 + field37690: String +} + +type Object7667 @Directive21(argument61 : "stringValue35951") @Directive44(argument97 : ["stringValue35950"]) { + field37693: String + field37694: Enum1875 + field37695: Enum1876 + field37696: Enum1877 + field37697: Object7668 +} + +type Object7668 @Directive21(argument61 : "stringValue35956") @Directive44(argument97 : ["stringValue35955"]) { + field37698: String + field37699: Float + field37700: Float + field37701: Float + field37702: Float + field37703: [Object7669] + field37706: Enum1878 +} + +type Object7669 @Directive21(argument61 : "stringValue35958") @Directive44(argument97 : ["stringValue35957"]) { + field37704: String + field37705: Float +} + +type Object767 @Directive20(argument58 : "stringValue3863", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3862") @Directive31 @Directive44(argument97 : ["stringValue3864", "stringValue3865"]) { + field4356: String + field4357: Float + field4358: String + field4359: Scalar2 + field4360: [Object768] + field4364: String + field4365: Scalar2 + field4366: [Object769] + field4369: String + field4370: Float + field4371: Float + field4372: String +} + +type Object7670 @Directive21(argument61 : "stringValue35961") @Directive44(argument97 : ["stringValue35960"]) { + field37708: Union261 + field37747: Union261 + field37748: Object7680 +} + +type Object7671 @Directive21(argument61 : "stringValue35964") @Directive44(argument97 : ["stringValue35963"]) { + field37709: String! + field37710: String + field37711: Enum1879 +} + +type Object7672 @Directive21(argument61 : "stringValue35967") @Directive44(argument97 : ["stringValue35966"]) { + field37712: String + field37713: Object7667 + field37714: Enum1880 + field37715: Enum1879 +} + +type Object7673 @Directive21(argument61 : "stringValue35970") @Directive44(argument97 : ["stringValue35969"]) { + field37716: String + field37717: String! + field37718: String! + field37719: String + field37720: Object7674 + field37732: Object7677 +} + +type Object7674 @Directive21(argument61 : "stringValue35972") @Directive44(argument97 : ["stringValue35971"]) { + field37721: [Union262] + field37729: String + field37730: String + field37731: String +} + +type Object7675 @Directive21(argument61 : "stringValue35975") @Directive44(argument97 : ["stringValue35974"]) { + field37722: String! + field37723: Boolean! + field37724: Boolean! + field37725: String! +} + +type Object7676 @Directive21(argument61 : "stringValue35977") @Directive44(argument97 : ["stringValue35976"]) { + field37726: String! + field37727: String + field37728: Enum1881! +} + +type Object7677 @Directive21(argument61 : "stringValue35980") @Directive44(argument97 : ["stringValue35979"]) { + field37733: String! + field37734: String! + field37735: String! +} + +type Object7678 @Directive21(argument61 : "stringValue35982") @Directive44(argument97 : ["stringValue35981"]) { + field37736: String! + field37737: String! + field37738: String! + field37739: String + field37740: Boolean + field37741: Enum1879 +} + +type Object7679 @Directive21(argument61 : "stringValue35984") @Directive44(argument97 : ["stringValue35983"]) { + field37742: String! + field37743: String! + field37744: String + field37745: Boolean + field37746: Enum1879 +} + +type Object768 @Directive22(argument62 : "stringValue3866") @Directive31 @Directive44(argument97 : ["stringValue3867", "stringValue3868"]) { + field4361: String + field4362: String + field4363: String +} + +type Object7680 @Directive21(argument61 : "stringValue35986") @Directive44(argument97 : ["stringValue35985"]) { + field37749: [Union263] + field37789: String +} + +type Object7681 @Directive21(argument61 : "stringValue35989") @Directive44(argument97 : ["stringValue35988"]) { + field37750: String! + field37751: Enum1879 +} + +type Object7682 @Directive21(argument61 : "stringValue35991") @Directive44(argument97 : ["stringValue35990"]) { + field37752: [Union264] + field37772: Boolean @deprecated + field37773: Boolean + field37774: Boolean + field37775: String + field37776: Enum1879 +} + +type Object7683 @Directive21(argument61 : "stringValue35994") @Directive44(argument97 : ["stringValue35993"]) { + field37753: String! + field37754: String! + field37755: Object7680 +} + +type Object7684 @Directive21(argument61 : "stringValue35996") @Directive44(argument97 : ["stringValue35995"]) { + field37756: String! + field37757: String! + field37758: Object7680 + field37759: String +} + +type Object7685 @Directive21(argument61 : "stringValue35998") @Directive44(argument97 : ["stringValue35997"]) { + field37760: String! + field37761: String! + field37762: Object7680 + field37763: Enum1879 +} + +type Object7686 @Directive21(argument61 : "stringValue36000") @Directive44(argument97 : ["stringValue35999"]) { + field37764: String! + field37765: String! + field37766: Object7680 + field37767: Enum1879 +} + +type Object7687 @Directive21(argument61 : "stringValue36002") @Directive44(argument97 : ["stringValue36001"]) { + field37768: String! + field37769: String! + field37770: Object7680 + field37771: Enum1879 +} + +type Object7688 @Directive21(argument61 : "stringValue36004") @Directive44(argument97 : ["stringValue36003"]) { + field37777: String! + field37778: String! + field37779: Enum1879 +} + +type Object7689 @Directive21(argument61 : "stringValue36006") @Directive44(argument97 : ["stringValue36005"]) { + field37780: String! + field37781: Enum1879 +} + +type Object769 @Directive20(argument58 : "stringValue3870", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3869") @Directive31 @Directive44(argument97 : ["stringValue3871", "stringValue3872"]) { + field4367: Scalar2 + field4368: String +} + +type Object7690 @Directive21(argument61 : "stringValue36008") @Directive44(argument97 : ["stringValue36007"]) { + field37782: String! + field37783: Enum1879 +} + +type Object7691 @Directive21(argument61 : "stringValue36010") @Directive44(argument97 : ["stringValue36009"]) { + field37784: Enum1882 + field37785: Enum1883 + field37786: Int @deprecated + field37787: Int @deprecated + field37788: Object7667 +} + +type Object7692 @Directive21(argument61 : "stringValue36018") @Directive44(argument97 : ["stringValue36017"]) { + field37795: String + field37796: String +} + +type Object7693 @Directive21(argument61 : "stringValue36024") @Directive44(argument97 : ["stringValue36023"]) { + field37798: [Object7694] + field37809: Int +} + +type Object7694 @Directive21(argument61 : "stringValue36026") @Directive44(argument97 : ["stringValue36025"]) { + field37799: Scalar2! + field37800: Scalar2 + field37801: String + field37802: String + field37803: String + field37804: String + field37805: Scalar4 + field37806: String + field37807: Scalar2 + field37808: [String] +} + +type Object7695 @Directive21(argument61 : "stringValue36032") @Directive44(argument97 : ["stringValue36031"]) { + field37811: String +} + +type Object7696 @Directive21(argument61 : "stringValue36038") @Directive44(argument97 : ["stringValue36037"]) { + field37813: String +} + +type Object7697 @Directive21(argument61 : "stringValue36044") @Directive44(argument97 : ["stringValue36043"]) { + field37815: [Object7698] + field37823: Int +} + +type Object7698 @Directive21(argument61 : "stringValue36046") @Directive44(argument97 : ["stringValue36045"]) { + field37816: Scalar2 + field37817: String + field37818: String + field37819: Boolean + field37820: Float + field37821: String + field37822: Int +} + +type Object7699 @Directive21(argument61 : "stringValue36052") @Directive44(argument97 : ["stringValue36051"]) { + field37825: Boolean +} + +type Object77 @Directive21(argument61 : "stringValue318") @Directive44(argument97 : ["stringValue317"]) { + field517: String + field518: Enum40 + field519: Enum41 + field520: Enum42 + field521: Object78 +} + +type Object770 @Directive20(argument58 : "stringValue3874", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3873") @Directive31 @Directive44(argument97 : ["stringValue3875", "stringValue3876"]) { + field4376: String + field4377: String + field4378: String + field4379: String +} + +type Object7700 @Directive21(argument61 : "stringValue36058") @Directive44(argument97 : ["stringValue36057"]) { + field37827: String + field37828: String + field37829: String + field37830: String + field37831: String + field37832: Boolean + field37833: Boolean + field37834: Int + field37835: Int + field37836: Float + field37837: String + field37838: String + field37839: String + field37840: String + field37841: Scalar1 + field37842: [String] + field37843: Enum1884 +} + +type Object7701 @Directive44(argument97 : ["stringValue36060"]) { + field37845: Object7702 @Directive35(argument89 : "stringValue36062", argument90 : true, argument91 : "stringValue36061", argument93 : "stringValue36063", argument94 : false) + field37932(argument2127: InputObject1661!): Object7726 @Directive35(argument89 : "stringValue36120", argument90 : true, argument91 : "stringValue36119", argument92 : 642, argument93 : "stringValue36121", argument94 : false) + field37956(argument2128: InputObject1662!): Object7731 @Directive35(argument89 : "stringValue36134", argument90 : true, argument91 : "stringValue36133", argument92 : 643, argument93 : "stringValue36135", argument94 : false) + field38007(argument2129: InputObject1663!): Object7740 @Directive35(argument89 : "stringValue36161", argument90 : true, argument91 : "stringValue36160", argument93 : "stringValue36162", argument94 : false) +} + +type Object7702 @Directive21(argument61 : "stringValue36065") @Directive44(argument97 : ["stringValue36064"]) { + field37846: String! + field37847: [Object7703]! + field37853: String + field37854: [Object7704] +} + +type Object7703 @Directive21(argument61 : "stringValue36067") @Directive44(argument97 : ["stringValue36066"]) { + field37848: String! + field37849: String! + field37850: Enum1885! + field37851: Boolean! + field37852: Scalar2! +} + +type Object7704 @Directive21(argument61 : "stringValue36070") @Directive44(argument97 : ["stringValue36069"]) { + field37855: String! + field37856: Object7705! + field37862: Object7707 + field37916: String! + field37917: String! + field37918: Object7705! + field37919: Object7705! + field37920: Object7708! + field37921: [Object7707] + field37922: Enum1890 + field37923: String! + field37924: Object7725! +} + +type Object7705 @Directive21(argument61 : "stringValue36072") @Directive44(argument97 : ["stringValue36071"]) { + field37857: [Object7706]! + field37861: String! +} + +type Object7706 @Directive21(argument61 : "stringValue36074") @Directive44(argument97 : ["stringValue36073"]) { + field37858: String! + field37859: String! + field37860: Enum1886 +} + +type Object7707 @Directive21(argument61 : "stringValue36077") @Directive44(argument97 : ["stringValue36076"]) { + field37863: Object7705! + field37864: Object7708! + field37912: Enum1889! + field37913: String! + field37914: String + field37915: Object7705 +} + +type Object7708 @Directive21(argument61 : "stringValue36079") @Directive44(argument97 : ["stringValue36078"]) { + field37865: Enum1887! + field37866: Union265! +} + +type Object7709 @Directive21(argument61 : "stringValue36083") @Directive44(argument97 : ["stringValue36082"]) { + field37867: String! +} + +type Object771 @Directive20(argument58 : "stringValue3892", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3891") @Directive31 @Directive44(argument97 : ["stringValue3893", "stringValue3894"]) { + field4393: Scalar2 + field4394: String + field4395: String + field4396: String + field4397: String + field4398: String + field4399: String + field4400: String + field4401: String +} + +type Object7710 @Directive21(argument61 : "stringValue36085") @Directive44(argument97 : ["stringValue36084"]) { + field37868: [Object7707]! +} + +type Object7711 @Directive21(argument61 : "stringValue36087") @Directive44(argument97 : ["stringValue36086"]) { + field37869: String! + field37870: Scalar2! +} + +type Object7712 @Directive21(argument61 : "stringValue36089") @Directive44(argument97 : ["stringValue36088"]) { + field37871: String! + field37872: String! + field37873: String! + field37874: Float! + field37875: Int! + field37876: String! + field37877: String! + field37878: String! +} + +type Object7713 @Directive21(argument61 : "stringValue36091") @Directive44(argument97 : ["stringValue36090"]) { + field37879: String! + field37880: String! + field37881: String +} + +type Object7714 @Directive21(argument61 : "stringValue36093") @Directive44(argument97 : ["stringValue36092"]) { + field37882: String! + field37883: String! +} + +type Object7715 @Directive21(argument61 : "stringValue36095") @Directive44(argument97 : ["stringValue36094"]) { + field37884: String + field37885: String + field37886: Float + field37887: Float + field37888: Boolean + field37889: Boolean @deprecated +} + +type Object7716 @Directive21(argument61 : "stringValue36097") @Directive44(argument97 : ["stringValue36096"]) { + field37890: String! + field37891: String! +} + +type Object7717 @Directive21(argument61 : "stringValue36099") @Directive44(argument97 : ["stringValue36098"]) { + field37892: String! + field37893: String! +} + +type Object7718 @Directive21(argument61 : "stringValue36101") @Directive44(argument97 : ["stringValue36100"]) { + field37894: String! + field37895: Scalar2! +} + +type Object7719 @Directive21(argument61 : "stringValue36103") @Directive44(argument97 : ["stringValue36102"]) { + field37896: String! + field37897: Scalar2! + field37898: Scalar2! +} + +type Object772 @Directive22(argument62 : "stringValue3895") @Directive31 @Directive44(argument97 : ["stringValue3896", "stringValue3897"]) { + field4411: String + field4412: String + field4413: String +} + +type Object7720 @Directive21(argument61 : "stringValue36105") @Directive44(argument97 : ["stringValue36104"]) { + field37899: Object7721! @deprecated + field37904: String + field37905: [Object7721] +} + +type Object7721 @Directive21(argument61 : "stringValue36107") @Directive44(argument97 : ["stringValue36106"]) { + field37900: String + field37901: Enum1888 + field37902: String @deprecated + field37903: [String] +} + +type Object7722 @Directive21(argument61 : "stringValue36110") @Directive44(argument97 : ["stringValue36109"]) { + field37906: String! + field37907: Scalar2! +} + +type Object7723 @Directive21(argument61 : "stringValue36112") @Directive44(argument97 : ["stringValue36111"]) { + field37908: String! + field37909: Scalar2! +} + +type Object7724 @Directive21(argument61 : "stringValue36114") @Directive44(argument97 : ["stringValue36113"]) { + field37910: String! + field37911: Scalar2! +} + +type Object7725 @Directive21(argument61 : "stringValue36118") @Directive44(argument97 : ["stringValue36117"]) { + field37925: String! + field37926: String! + field37927: String! + field37928: String! + field37929: String! + field37930: Scalar2 + field37931: Scalar2 +} + +type Object7726 @Directive21(argument61 : "stringValue36124") @Directive44(argument97 : ["stringValue36123"]) { + field37933: [Object7727]! + field37953: Object7730 +} + +type Object7727 @Directive21(argument61 : "stringValue36126") @Directive44(argument97 : ["stringValue36125"]) { + field37934: String! + field37935: String! + field37936: String! + field37937: Object7705! + field37938: Object7705! + field37939: Object7705 + field37940: Object7708! + field37941: Object7728 + field37945: [Object7707] + field37946: Object7729 + field37950: String! + field37951: Object7725! + field37952: String +} + +type Object7728 @Directive21(argument61 : "stringValue36128") @Directive44(argument97 : ["stringValue36127"]) { + field37942: Object7705! + field37943: Object7708! + field37944: String! +} + +type Object7729 @Directive21(argument61 : "stringValue36130") @Directive44(argument97 : ["stringValue36129"]) { + field37947: Object7705 + field37948: Boolean + field37949: String! +} + +type Object773 @Directive20(argument58 : "stringValue3899", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3898") @Directive31 @Directive44(argument97 : ["stringValue3900", "stringValue3901"]) { + field4419: String + field4420: String + field4421: Boolean + field4422: String + field4423: String + field4424: String + field4425: String + field4426: [String] + field4427: Scalar2 +} + +type Object7730 @Directive21(argument61 : "stringValue36132") @Directive44(argument97 : ["stringValue36131"]) { + field37954: String + field37955: Boolean +} + +type Object7731 @Directive21(argument61 : "stringValue36139") @Directive44(argument97 : ["stringValue36138"]) { + field37957: Object7732! + field37998: Object7738 +} + +type Object7732 @Directive21(argument61 : "stringValue36141") @Directive44(argument97 : ["stringValue36140"]) { + field37958: String! + field37959: Scalar3! + field37960: Scalar3! + field37961: Enum1892! + field37962: Int! + field37963: Object7733! + field37969: Object7734! + field37973: Object7735! + field37987: Scalar2 + field37988: Scalar2! + field37989: Boolean! + field37990: String + field37991: String + field37992: Object7737 + field37995: Enum1894 + field37996: String + field37997: Scalar2 @deprecated +} + +type Object7733 @Directive21(argument61 : "stringValue36144") @Directive44(argument97 : ["stringValue36143"]) { + field37964: Scalar2! + field37965: String! + field37966: Float + field37967: Float + field37968: String +} + +type Object7734 @Directive21(argument61 : "stringValue36146") @Directive44(argument97 : ["stringValue36145"]) { + field37970: Int! + field37971: Int! + field37972: Int! +} + +type Object7735 @Directive21(argument61 : "stringValue36148") @Directive44(argument97 : ["stringValue36147"]) { + field37974: Scalar2! + field37975: String! + field37976: String! + field37977: String! + field37978: String + field37979: String! + field37980: String! + field37981: String! + field37982: Enum1893 + field37983: Object7736 +} + +type Object7736 @Directive21(argument61 : "stringValue36151") @Directive44(argument97 : ["stringValue36150"]) { + field37984: Scalar2! + field37985: String! + field37986: String! +} + +type Object7737 @Directive21(argument61 : "stringValue36153") @Directive44(argument97 : ["stringValue36152"]) { + field37993: String + field37994: String +} + +type Object7738 @Directive21(argument61 : "stringValue36156") @Directive44(argument97 : ["stringValue36155"]) { + field37999: [Enum1895] + field38000: Object7739 +} + +type Object7739 @Directive21(argument61 : "stringValue36159") @Directive44(argument97 : ["stringValue36158"]) { + field38001: String! + field38002: String! + field38003: String @deprecated + field38004: Scalar2 @deprecated + field38005: Object7708 + field38006: String +} + +type Object774 @Directive20(argument58 : "stringValue3903", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3902") @Directive31 @Directive44(argument97 : ["stringValue3904", "stringValue3905"]) { + field4437: String + field4438: String + field4439: Boolean + field4440: String + field4441: String + field4442: String +} + +type Object7740 @Directive21(argument61 : "stringValue36165") @Directive44(argument97 : ["stringValue36164"]) { + field38008: String! + field38009: [Object7741]! + field38019: Object7744! + field38022: Object7745! +} + +type Object7741 @Directive21(argument61 : "stringValue36167") @Directive44(argument97 : ["stringValue36166"]) { + field38010: String! + field38011: String! + field38012: Enum1896! + field38013: [Object7742]! + field38018: [Object7707]! +} + +type Object7742 @Directive21(argument61 : "stringValue36170") @Directive44(argument97 : ["stringValue36169"]) { + field38014: [Object7743]! +} + +type Object7743 @Directive21(argument61 : "stringValue36172") @Directive44(argument97 : ["stringValue36171"]) { + field38015: String! + field38016: Object7708 + field38017: String +} + +type Object7744 @Directive21(argument61 : "stringValue36174") @Directive44(argument97 : ["stringValue36173"]) { + field38020: String! + field38021: Object7707! +} + +type Object7745 @Directive21(argument61 : "stringValue36176") @Directive44(argument97 : ["stringValue36175"]) { + field38023: String! + field38024: Scalar2! + field38025: Enum1897! + field38026: Scalar2! +} + +type Object7746 @Directive44(argument97 : ["stringValue36178"]) { + field38028(argument2130: InputObject1664!): Object7747 @Directive35(argument89 : "stringValue36180", argument90 : true, argument91 : "stringValue36179", argument92 : 644, argument93 : "stringValue36181", argument94 : false) + field38031(argument2131: InputObject1665!): Object7748 @Directive35(argument89 : "stringValue36186", argument90 : true, argument91 : "stringValue36185", argument92 : 645, argument93 : "stringValue36187", argument94 : false) + field38036(argument2132: InputObject1666!): Object7749 @Directive35(argument89 : "stringValue36192", argument90 : true, argument91 : "stringValue36191", argument92 : 646, argument93 : "stringValue36193", argument94 : false) + field38042: Object7751 @Directive35(argument89 : "stringValue36200", argument90 : true, argument91 : "stringValue36199", argument92 : 647, argument93 : "stringValue36201", argument94 : false) + field38108: Object7758 @Directive35(argument89 : "stringValue36218", argument90 : true, argument91 : "stringValue36217", argument92 : 648, argument93 : "stringValue36219", argument94 : false) @deprecated + field38110: Object7759 @Directive35(argument89 : "stringValue36224", argument90 : true, argument91 : "stringValue36223", argument92 : 649, argument93 : "stringValue36225", argument94 : false) + field38112: Object7760 @Directive35(argument89 : "stringValue36229", argument90 : true, argument91 : "stringValue36228", argument93 : "stringValue36230", argument94 : false) + field38185(argument2133: InputObject1667!): Object7773 @Directive35(argument89 : "stringValue36261", argument90 : true, argument91 : "stringValue36260", argument92 : 650, argument93 : "stringValue36262", argument94 : false) + field38205: Object7776 @Directive35(argument89 : "stringValue36275", argument90 : true, argument91 : "stringValue36274", argument92 : 651, argument93 : "stringValue36276", argument94 : false) + field38208(argument2134: InputObject1668!): Object7777 @Directive35(argument89 : "stringValue36281", argument90 : true, argument91 : "stringValue36280", argument92 : 652, argument93 : "stringValue36282", argument94 : false) + field38210(argument2135: InputObject1669!): Object7778 @Directive35(argument89 : "stringValue36287", argument90 : true, argument91 : "stringValue36286", argument92 : 653, argument93 : "stringValue36288", argument94 : false) + field38225(argument2136: InputObject1670!): Object7781 @Directive35(argument89 : "stringValue36297", argument90 : true, argument91 : "stringValue36296", argument92 : 654, argument93 : "stringValue36298", argument94 : false) + field38227(argument2137: InputObject1671!): Object7782 @Directive35(argument89 : "stringValue36303", argument90 : true, argument91 : "stringValue36302", argument92 : 655, argument93 : "stringValue36304", argument94 : false) + field38229(argument2138: InputObject1672!): Object7783 @Directive35(argument89 : "stringValue36309", argument90 : true, argument91 : "stringValue36308", argument92 : 656, argument93 : "stringValue36310", argument94 : false) +} + +type Object7747 @Directive21(argument61 : "stringValue36184") @Directive44(argument97 : ["stringValue36183"]) { + field38029: [String] @deprecated + field38030: Scalar1! +} + +type Object7748 @Directive21(argument61 : "stringValue36190") @Directive44(argument97 : ["stringValue36189"]) { + field38032: String @deprecated + field38033: Boolean + field38034: String + field38035: Boolean +} + +type Object7749 @Directive21(argument61 : "stringValue36196") @Directive44(argument97 : ["stringValue36195"]) { + field38037: [Object7750]! + field38041: Scalar1! +} + +type Object775 @Directive20(argument58 : "stringValue3907", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3906") @Directive31 @Directive44(argument97 : ["stringValue3908", "stringValue3909"]) { + field4459: String +} + +type Object7750 @Directive21(argument61 : "stringValue36198") @Directive44(argument97 : ["stringValue36197"]) { + field38038: Scalar2! + field38039: String + field38040: Boolean! +} + +type Object7751 @Directive21(argument61 : "stringValue36203") @Directive44(argument97 : ["stringValue36202"]) { + field38043: [Object7752]! + field38067: [Object7753]! + field38085: [Object7754]! + field38107: [Object7754]! +} + +type Object7752 @Directive21(argument61 : "stringValue36205") @Directive44(argument97 : ["stringValue36204"]) { + field38044: String + field38045: Scalar2! + field38046: Scalar2 + field38047: String + field38048: Scalar4 + field38049: String + field38050: String + field38051: String + field38052: String + field38053: String + field38054: String + field38055: Scalar3 + field38056: Scalar3 + field38057: Scalar2! + field38058: String! + field38059: String + field38060: String + field38061: String! + field38062: Scalar2 + field38063: Boolean + field38064: Boolean + field38065: [Enum1898] + field38066: String +} + +type Object7753 @Directive21(argument61 : "stringValue36208") @Directive44(argument97 : ["stringValue36207"]) { + field38068: String + field38069: Scalar2! + field38070: Scalar2 + field38071: String + field38072: Scalar4 + field38073: String + field38074: String + field38075: Scalar2! + field38076: String! + field38077: String + field38078: String + field38079: String! + field38080: Scalar2 + field38081: Boolean + field38082: Boolean + field38083: [Enum1898] + field38084: String +} + +type Object7754 @Directive21(argument61 : "stringValue36210") @Directive44(argument97 : ["stringValue36209"]) { + field38086: Object7755 + field38094: Object7756 + field38101: Object7757 + field38106: Scalar4 +} + +type Object7755 @Directive21(argument61 : "stringValue36212") @Directive44(argument97 : ["stringValue36211"]) { + field38087: Scalar2! + field38088: String + field38089: String + field38090: String + field38091: Boolean @deprecated + field38092: String + field38093: String +} + +type Object7756 @Directive21(argument61 : "stringValue36214") @Directive44(argument97 : ["stringValue36213"]) { + field38095: Scalar2! + field38096: String + field38097: String! + field38098: Scalar2 + field38099: String + field38100: Scalar3 +} + +type Object7757 @Directive21(argument61 : "stringValue36216") @Directive44(argument97 : ["stringValue36215"]) { + field38102: Scalar2 + field38103: String + field38104: String + field38105: Enum1236 +} + +type Object7758 @Directive21(argument61 : "stringValue36221") @Directive44(argument97 : ["stringValue36220"]) { + field38109: Enum1899 +} + +type Object7759 @Directive21(argument61 : "stringValue36227") @Directive44(argument97 : ["stringValue36226"]) { + field38111: Object5092! +} + +type Object776 @Directive20(argument58 : "stringValue3911", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3910") @Directive31 @Directive44(argument97 : ["stringValue3912", "stringValue3913"]) { + field4461: String + field4462: Boolean + field4463: Scalar2 + field4464: Boolean + field4465: String + field4466: String + field4467: String + field4468: Scalar4 +} + +type Object7760 @Directive21(argument61 : "stringValue36232") @Directive44(argument97 : ["stringValue36231"]) { + field38113: Object7761 + field38157: Object7769 + field38163: Object7770 +} + +type Object7761 @Directive21(argument61 : "stringValue36234") @Directive44(argument97 : ["stringValue36233"]) { + field38114: String! + field38115: String + field38116: String + field38117: [Object7762] + field38124: String + field38125: String + field38126: Object7763 + field38132: String! + field38133: [Object7764]! + field38148: Object7768 + field38155: String! + field38156: Boolean! +} + +type Object7762 @Directive21(argument61 : "stringValue36236") @Directive44(argument97 : ["stringValue36235"]) { + field38118: String + field38119: String! + field38120: String + field38121: String + field38122: String + field38123: String +} + +type Object7763 @Directive21(argument61 : "stringValue36238") @Directive44(argument97 : ["stringValue36237"]) { + field38127: String + field38128: String + field38129: String! + field38130: String! + field38131: String! +} + +type Object7764 @Directive21(argument61 : "stringValue36240") @Directive44(argument97 : ["stringValue36239"]) { + field38134: String + field38135: String + field38136: String! + field38137: String + field38138: String + field38139: String + field38140: Union266 + field38145: String + field38146: String! + field38147: String! +} + +type Object7765 @Directive21(argument61 : "stringValue36243") @Directive44(argument97 : ["stringValue36242"]) { + field38141: [Object7766] +} + +type Object7766 @Directive21(argument61 : "stringValue36245") @Directive44(argument97 : ["stringValue36244"]) { + field38142: String! + field38143: String +} + +type Object7767 @Directive21(argument61 : "stringValue36247") @Directive44(argument97 : ["stringValue36246"]) { + field38144: [Object7766] +} + +type Object7768 @Directive21(argument61 : "stringValue36249") @Directive44(argument97 : ["stringValue36248"]) { + field38149: String + field38150: String! + field38151: String + field38152: String + field38153: String! + field38154: String! +} + +type Object7769 @Directive21(argument61 : "stringValue36251") @Directive44(argument97 : ["stringValue36250"]) { + field38158: String! + field38159: String + field38160: String + field38161: String + field38162: String +} + +type Object777 @Directive20(argument58 : "stringValue3915", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3914") @Directive30(argument80 : true) @Directive44(argument97 : ["stringValue3916", "stringValue3917"]) { + field4474: String @Directive30(argument80 : true) @Directive41 + field4475: String @Directive30(argument80 : true) @Directive40 + field4476: String @Directive30(argument80 : true) @Directive40 +} + +type Object7770 @Directive21(argument61 : "stringValue36253") @Directive44(argument97 : ["stringValue36252"]) { + field38164: Object7771 + field38182: String + field38183: Scalar1 + field38184: String +} + +type Object7771 @Directive21(argument61 : "stringValue36255") @Directive44(argument97 : ["stringValue36254"]) { + field38165: String + field38166: String @deprecated + field38167: String @deprecated + field38168: [Object7772] + field38179: Enum1901 @deprecated + field38180: Scalar1 + field38181: String +} + +type Object7772 @Directive21(argument61 : "stringValue36257") @Directive44(argument97 : ["stringValue36256"]) { + field38169: String + field38170: String + field38171: Enum1900 + field38172: String + field38173: String + field38174: String + field38175: String + field38176: String + field38177: String + field38178: [String!] +} + +type Object7773 @Directive21(argument61 : "stringValue36265") @Directive44(argument97 : ["stringValue36264"]) { + field38186: [Object7774!]! + field38203: String + field38204: Int +} + +type Object7774 @Directive21(argument61 : "stringValue36267") @Directive44(argument97 : ["stringValue36266"]) { + field38187: Scalar2 + field38188: String + field38189: String + field38190: String + field38191: String + field38192: String + field38193: Enum1902 + field38194: Object7775 + field38201: Boolean + field38202: Enum1905 +} + +type Object7775 @Directive21(argument61 : "stringValue36270") @Directive44(argument97 : ["stringValue36269"]) { + field38195: Boolean + field38196: [Enum1903] + field38197: Scalar3 + field38198: Enum1904 + field38199: Int + field38200: Scalar3 +} + +type Object7776 @Directive21(argument61 : "stringValue36278") @Directive44(argument97 : ["stringValue36277"]) { + field38206: Enum1899 + field38207: Enum1906 +} + +type Object7777 @Directive21(argument61 : "stringValue36285") @Directive44(argument97 : ["stringValue36284"]) { + field38209: Boolean! +} + +type Object7778 @Directive21(argument61 : "stringValue36291") @Directive44(argument97 : ["stringValue36290"]) { + field38211: Object7779 +} + +type Object7779 @Directive21(argument61 : "stringValue36293") @Directive44(argument97 : ["stringValue36292"]) { + field38212: String + field38213: String + field38214: [String]! + field38215: [Object7780]! + field38224: String +} + +type Object778 @Directive20(argument58 : "stringValue3924", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3923") @Directive31 @Directive44(argument97 : ["stringValue3925", "stringValue3926"]) { + field4481: Boolean + field4482: Float + field4483: Object779 + field4493: String + field4494: Object780 + field4495: String + field4496: Object780 + field4497: Float + field4498: Boolean + field4499: Object780 + field4500: [Object781] + field4513: Object780 + field4514: String + field4515: String + field4516: Object780 + field4517: String + field4518: String + field4519: [Object782] + field4527: [Enum222] + field4528: Object548 + field4529: Object10 + field4530: Boolean +} + +type Object7780 @Directive21(argument61 : "stringValue36295") @Directive44(argument97 : ["stringValue36294"]) { + field38216: String! + field38217: String! + field38218: String! + field38219: Scalar4 + field38220: Scalar4 + field38221: Scalar4 + field38222: String + field38223: String +} + +type Object7781 @Directive21(argument61 : "stringValue36301") @Directive44(argument97 : ["stringValue36300"]) { + field38226: Object7754! +} + +type Object7782 @Directive21(argument61 : "stringValue36307") @Directive44(argument97 : ["stringValue36306"]) { + field38228: [Object5087]! +} + +type Object7783 @Directive21(argument61 : "stringValue36313") @Directive44(argument97 : ["stringValue36312"]) { + field38230: Object7752 + field38231: Object7753 +} + +type Object7784 @Directive44(argument97 : ["stringValue36314"]) { + field38233(argument2139: InputObject1673!): Object7785 @Directive35(argument89 : "stringValue36316", argument90 : true, argument91 : "stringValue36315", argument92 : 657, argument93 : "stringValue36317", argument94 : false) + field38236(argument2140: InputObject1674!): Object7786 @Directive35(argument89 : "stringValue36322", argument90 : true, argument91 : "stringValue36321", argument92 : 658, argument93 : "stringValue36323", argument94 : false) + field38238(argument2141: InputObject1675!): Object7787 @Directive35(argument89 : "stringValue36328", argument90 : true, argument91 : "stringValue36327", argument92 : 659, argument93 : "stringValue36329", argument94 : false) + field38276(argument2142: InputObject1676!): Object5102 @Directive35(argument89 : "stringValue36352", argument90 : true, argument91 : "stringValue36351", argument92 : 660, argument93 : "stringValue36353", argument94 : false) + field38277(argument2143: InputObject1677!): Object5102 @Directive35(argument89 : "stringValue36356", argument90 : true, argument91 : "stringValue36355", argument93 : "stringValue36357", argument94 : false) + field38278(argument2144: InputObject1678!): Object5103 @Directive35(argument89 : "stringValue36360", argument90 : true, argument91 : "stringValue36359", argument92 : 661, argument93 : "stringValue36361", argument94 : false) + field38279(argument2145: InputObject1679!): Object5104 @Directive35(argument89 : "stringValue36364", argument90 : true, argument91 : "stringValue36363", argument93 : "stringValue36365", argument94 : false) + field38280(argument2146: InputObject1680!): Object7794 @Directive35(argument89 : "stringValue36368", argument90 : true, argument91 : "stringValue36367", argument92 : 662, argument93 : "stringValue36369", argument94 : false) + field38293(argument2147: InputObject1681!): Object7799 @Directive35(argument89 : "stringValue36383", argument90 : true, argument91 : "stringValue36382", argument92 : 663, argument93 : "stringValue36384", argument94 : false) + field38295(argument2148: InputObject1687!): Object7800 @Directive35(argument89 : "stringValue36397", argument90 : true, argument91 : "stringValue36396", argument92 : 664, argument93 : "stringValue36398", argument94 : false) + field38298(argument2149: InputObject1688!): Object7801 @Directive35(argument89 : "stringValue36404", argument90 : true, argument91 : "stringValue36403", argument92 : 665, argument93 : "stringValue36405", argument94 : false) + field38307: Object7802 @Directive35(argument89 : "stringValue36413", argument90 : true, argument91 : "stringValue36412", argument92 : 666, argument93 : "stringValue36414", argument94 : false) + field38310(argument2150: InputObject1689!): Object7803 @Directive35(argument89 : "stringValue36420", argument90 : true, argument91 : "stringValue36419", argument92 : 667, argument93 : "stringValue36421", argument94 : false) + field38319(argument2151: InputObject1690!): Object7805 @Directive35(argument89 : "stringValue36430", argument90 : true, argument91 : "stringValue36429", argument92 : 668, argument93 : "stringValue36431", argument94 : false) + field38365(argument2152: InputObject1691!): Object5117 @Directive35(argument89 : "stringValue36440", argument90 : true, argument91 : "stringValue36439", argument93 : "stringValue36441", argument94 : false) + field38366(argument2153: InputObject1692!): Object7808 @Directive35(argument89 : "stringValue36444", argument90 : true, argument91 : "stringValue36443", argument93 : "stringValue36445", argument94 : false) + field38368(argument2154: InputObject1693!): Object7809 @Directive35(argument89 : "stringValue36450", argument90 : true, argument91 : "stringValue36449", argument92 : 669, argument93 : "stringValue36451", argument94 : false) + field38383(argument2155: InputObject1694!): Object5118 @Directive35(argument89 : "stringValue36462", argument90 : true, argument91 : "stringValue36461", argument93 : "stringValue36463", argument94 : false) + field38384(argument2156: InputObject1695!): Object7812 @Directive35(argument89 : "stringValue36466", argument90 : true, argument91 : "stringValue36465", argument93 : "stringValue36467", argument94 : false) + field38386(argument2157: InputObject1696!): Object7813 @Directive35(argument89 : "stringValue36472", argument90 : true, argument91 : "stringValue36471", argument92 : 670, argument93 : "stringValue36473", argument94 : false) + field38392(argument2158: InputObject1697!): Object7816 @Directive35(argument89 : "stringValue36482", argument90 : true, argument91 : "stringValue36481", argument92 : 671, argument93 : "stringValue36483", argument94 : false) + field38401(argument2159: InputObject1698!): Object5119 @Directive35(argument89 : "stringValue36491", argument90 : true, argument91 : "stringValue36490", argument93 : "stringValue36492", argument94 : false) + field38402(argument2160: InputObject1699!): Object7818 @Directive35(argument89 : "stringValue36495", argument90 : true, argument91 : "stringValue36494", argument93 : "stringValue36496", argument94 : false) + field38404(argument2161: InputObject1700!): Object7819 @Directive35(argument89 : "stringValue36501", argument90 : true, argument91 : "stringValue36500", argument92 : 672, argument93 : "stringValue36502", argument94 : false) +} + +type Object7785 @Directive21(argument61 : "stringValue36320") @Directive44(argument97 : ["stringValue36319"]) { + field38234: Boolean! + field38235: String +} + +type Object7786 @Directive21(argument61 : "stringValue36326") @Directive44(argument97 : ["stringValue36325"]) { + field38237: Enum1263 +} + +type Object7787 @Directive21(argument61 : "stringValue36332") @Directive44(argument97 : ["stringValue36331"]) { + field38239: Scalar2 + field38240: Object5102 + field38241: String + field38242: [Object7788] + field38246: Object7789 + field38252: Object7790 + field38255: Union209 + field38256: Enum1909 + field38257: Union209 + field38258: Object7791 + field38264: [Object7792] + field38275: Scalar4 +} + +type Object7788 @Directive21(argument61 : "stringValue36334") @Directive44(argument97 : ["stringValue36333"]) { + field38243: Scalar2! + field38244: Scalar2 + field38245: String +} + +type Object7789 @Directive21(argument61 : "stringValue36336") @Directive44(argument97 : ["stringValue36335"]) { + field38247: Enum1907! + field38248: Float! + field38249: String! + field38250: Scalar4 + field38251: Object5114! +} + +type Object779 @Directive20(argument58 : "stringValue3928", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3927") @Directive31 @Directive44(argument97 : ["stringValue3929", "stringValue3930"]) { + field4484: String + field4485: [Object779] + field4486: Object780 + field4491: Int + field4492: String +} + +type Object7790 @Directive21(argument61 : "stringValue36339") @Directive44(argument97 : ["stringValue36338"]) { + field38253: Enum1908! + field38254: String +} + +type Object7791 @Directive21(argument61 : "stringValue36343") @Directive44(argument97 : ["stringValue36342"]) { + field38259: Enum1910 @deprecated + field38260: Int @deprecated + field38261: Scalar4! + field38262: Boolean! + field38263: Scalar4 +} + +type Object7792 @Directive21(argument61 : "stringValue36346") @Directive44(argument97 : ["stringValue36345"]) { + field38265: Scalar2! + field38266: String! + field38267: Scalar4! + field38268: Enum1911 + field38269: Object7793 + field38273: Scalar2 + field38274: Enum1912 +} + +type Object7793 @Directive21(argument61 : "stringValue36349") @Directive44(argument97 : ["stringValue36348"]) { + field38270: Scalar2! + field38271: String! + field38272: String +} + +type Object7794 @Directive21(argument61 : "stringValue36372") @Directive44(argument97 : ["stringValue36371"]) { + field38281: [Object7795]! +} + +type Object7795 @Directive21(argument61 : "stringValue36374") @Directive44(argument97 : ["stringValue36373"]) { + field38282: Object7796! + field38287: Object7798 + field38290: Enum1913! + field38291: Object7792 + field38292: String! +} + +type Object7796 @Directive21(argument61 : "stringValue36376") @Directive44(argument97 : ["stringValue36375"]) { + field38283: String! + field38284: [Object7797] +} + +type Object7797 @Directive21(argument61 : "stringValue36378") @Directive44(argument97 : ["stringValue36377"]) { + field38285: String! + field38286: String +} + +type Object7798 @Directive21(argument61 : "stringValue36380") @Directive44(argument97 : ["stringValue36379"]) { + field38288: String! + field38289: Scalar4! +} + +type Object7799 @Directive21(argument61 : "stringValue36395") @Directive44(argument97 : ["stringValue36394"]) { + field38294: [Object5102] +} + +type Object78 @Directive21(argument61 : "stringValue323") @Directive44(argument97 : ["stringValue322"]) { + field522: String + field523: Float + field524: Float + field525: Float + field526: Float + field527: [Object79] + field530: Enum43 +} + +type Object780 @Directive20(argument58 : "stringValue3932", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3931") @Directive31 @Directive44(argument97 : ["stringValue3933", "stringValue3934"]) { + field4487: Float + field4488: String + field4489: String + field4490: Boolean +} + +type Object7800 @Directive21(argument61 : "stringValue36402") @Directive44(argument97 : ["stringValue36401"]) { + field38296: Object7799 + field38297: String +} + +type Object7801 @Directive21(argument61 : "stringValue36408") @Directive44(argument97 : ["stringValue36407"]) { + field38299: Enum1918 + field38300: Object7792 + field38301: Object7789 + field38302: Scalar4 + field38303: Scalar4 + field38304: String + field38305: Enum1919 + field38306: Enum1920 +} + +type Object7802 @Directive21(argument61 : "stringValue36416") @Directive44(argument97 : ["stringValue36415"]) { + field38308: [Enum1921]! + field38309: Enum1922 +} + +type Object7803 @Directive21(argument61 : "stringValue36424") @Directive44(argument97 : ["stringValue36423"]) { + field38311: [Object7804]! + field38318: [Object7792]! +} + +type Object7804 @Directive21(argument61 : "stringValue36426") @Directive44(argument97 : ["stringValue36425"]) { + field38312: Scalar2! + field38313: Scalar2! + field38314: Scalar2 + field38315: Enum1923! + field38316: Enum1924 + field38317: Scalar4! +} + +type Object7805 @Directive21(argument61 : "stringValue36434") @Directive44(argument97 : ["stringValue36433"]) { + field38320: String! + field38321: String! + field38322: String + field38323: Enum1919 + field38324: Scalar4 + field38325: Scalar4 + field38326: Scalar4 + field38327: String + field38328: String + field38329: String + field38330: Enum1920 + field38331: Object7806 + field38363: String + field38364: String +} + +type Object7806 @Directive21(argument61 : "stringValue36436") @Directive44(argument97 : ["stringValue36435"]) { + field38332: String + field38333: [Enum1264] + field38334: Enum1240 + field38335: String + field38336: String + field38337: Enum1265 + field38338: String + field38339: String + field38340: String + field38341: String + field38342: String + field38343: String + field38344: String + field38345: String + field38346: String + field38347: Boolean + field38348: Scalar4 + field38349: Object7807 + field38358: [Object7807] + field38359: String + field38360: Scalar2 + field38361: Enum1241 + field38362: Scalar2 +} + +type Object7807 @Directive21(argument61 : "stringValue36438") @Directive44(argument97 : ["stringValue36437"]) { + field38350: String + field38351: String + field38352: String + field38353: String + field38354: String + field38355: String + field38356: Enum1266 + field38357: [Enum1264] +} + +type Object7808 @Directive21(argument61 : "stringValue36448") @Directive44(argument97 : ["stringValue36447"]) { + field38367: [Object5117] +} + +type Object7809 @Directive21(argument61 : "stringValue36454") @Directive44(argument97 : ["stringValue36453"]) { + field38369: Object7810 +} + +type Object781 @Directive22(argument62 : "stringValue3935") @Directive31 @Directive44(argument97 : ["stringValue3936", "stringValue3937"]) { + field4501: Enum221 + field4502: String + field4503: Boolean + field4504: Boolean + field4505: Int + field4506: String + field4507: Scalar2 + field4508: String + field4509: Int + field4510: String + field4511: Float + field4512: Int +} + +type Object7810 @Directive21(argument61 : "stringValue36456") @Directive44(argument97 : ["stringValue36455"]) { + field38370: Scalar2 + field38371: Scalar2 + field38372: Scalar4 + field38373: Scalar4 + field38374: Scalar2 + field38375: Enum1925 + field38376: [Union267] +} + +type Object7811 @Directive21(argument61 : "stringValue36460") @Directive44(argument97 : ["stringValue36459"]) { + field38377: Scalar2 + field38378: Scalar4 + field38379: Scalar2 + field38380: String + field38381: Enum1251 + field38382: String +} + +type Object7812 @Directive21(argument61 : "stringValue36470") @Directive44(argument97 : ["stringValue36469"]) { + field38385: [Object5118] +} + +type Object7813 @Directive21(argument61 : "stringValue36476") @Directive44(argument97 : ["stringValue36475"]) { + field38387: [Object7814] +} + +type Object7814 @Directive21(argument61 : "stringValue36478") @Directive44(argument97 : ["stringValue36477"]) { + field38388: String! + field38389: [Object7815]! +} + +type Object7815 @Directive21(argument61 : "stringValue36480") @Directive44(argument97 : ["stringValue36479"]) { + field38390: Int! + field38391: Int! +} + +type Object7816 @Directive21(argument61 : "stringValue36486") @Directive44(argument97 : ["stringValue36485"]) { + field38393: [Object7817]! +} + +type Object7817 @Directive21(argument61 : "stringValue36488") @Directive44(argument97 : ["stringValue36487"]) { + field38394: Scalar2! + field38395: Scalar2! + field38396: Scalar2! + field38397: Enum1926! + field38398: Scalar4! + field38399: String + field38400: Boolean! +} + +type Object7818 @Directive21(argument61 : "stringValue36499") @Directive44(argument97 : ["stringValue36498"]) { + field38403: [Object5119] +} + +type Object7819 @Directive21(argument61 : "stringValue36505") @Directive44(argument97 : ["stringValue36504"]) { + field38405: [Object7820]! +} + +type Object782 @Directive20(argument58 : "stringValue3943", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3942") @Directive31 @Directive44(argument97 : ["stringValue3944", "stringValue3945"]) { + field4520: String + field4521: String + field4522: String + field4523: String + field4524: String + field4525: Enum182 + field4526: String +} + +type Object7820 @Directive21(argument61 : "stringValue36507") @Directive44(argument97 : ["stringValue36506"]) { + field38406: Scalar2! + field38407: String! + field38408: Enum1240! + field38409: String + field38410: String + field38411: Int + field38412: Object7821! +} + +type Object7821 @Directive21(argument61 : "stringValue36509") @Directive44(argument97 : ["stringValue36508"]) { + field38413: Scalar2! + field38414: String + field38415: String + field38416: String + field38417: Enum1927 + field38418: String +} + +type Object7822 @Directive44(argument97 : ["stringValue36511"]) { + field38420(argument2162: InputObject1701!): Object7823 @Directive35(argument89 : "stringValue36513", argument90 : false, argument91 : "stringValue36512", argument92 : 673, argument93 : "stringValue36514", argument94 : false) + field38422(argument2163: InputObject1702!): Object7824 @Directive35(argument89 : "stringValue36519", argument90 : false, argument91 : "stringValue36518", argument92 : 674, argument93 : "stringValue36520", argument94 : false) +} + +type Object7823 @Directive21(argument61 : "stringValue36517") @Directive44(argument97 : ["stringValue36516"]) { + field38421: [Object5153] +} + +type Object7824 @Directive21(argument61 : "stringValue36523") @Directive44(argument97 : ["stringValue36522"]) { + field38423: Object7825 +} + +type Object7825 @Directive21(argument61 : "stringValue36525") @Directive44(argument97 : ["stringValue36524"]) { + field38424: Enum1928 + field38425: String +} + +type Object7826 @Directive44(argument97 : ["stringValue36527"]) { + field38427(argument2164: InputObject1703!): Object7827 @Directive35(argument89 : "stringValue36529", argument90 : true, argument91 : "stringValue36528", argument92 : 675, argument93 : "stringValue36530", argument94 : false) + field38455: Object7833 @Directive35(argument89 : "stringValue36547", argument90 : true, argument91 : "stringValue36546", argument92 : 676, argument93 : "stringValue36548", argument94 : false) +} + +type Object7827 @Directive21(argument61 : "stringValue36534") @Directive44(argument97 : ["stringValue36533"]) { + field38428: [Object7828] +} + +type Object7828 @Directive21(argument61 : "stringValue36536") @Directive44(argument97 : ["stringValue36535"]) { + field38429: [String]! + field38430: Enum1273! + field38431: Enum1929! + field38432: Scalar4 + field38433: Object7829 + field38435: Object7830 + field38439: Object7831 + field38446: Object7832 +} + +type Object7829 @Directive21(argument61 : "stringValue36538") @Directive44(argument97 : ["stringValue36537"]) { + field38434: String +} + +type Object783 @Directive20(argument58 : "stringValue3951", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3950") @Directive31 @Directive44(argument97 : ["stringValue3952", "stringValue3953"]) { + field4532: Boolean + field4533: String + field4534: String + field4535: String +} + +type Object7830 @Directive21(argument61 : "stringValue36540") @Directive44(argument97 : ["stringValue36539"]) { + field38436: String + field38437: String + field38438: Enum1930 +} + +type Object7831 @Directive21(argument61 : "stringValue36543") @Directive44(argument97 : ["stringValue36542"]) { + field38440: String! + field38441: Enum1930! + field38442: String! + field38443: Int! + field38444: String + field38445: String +} + +type Object7832 @Directive21(argument61 : "stringValue36545") @Directive44(argument97 : ["stringValue36544"]) { + field38447: String! + field38448: Enum1930! + field38449: String! + field38450: Int! + field38451: Boolean + field38452: String + field38453: String + field38454: String +} + +type Object7833 @Directive21(argument61 : "stringValue36550") @Directive44(argument97 : ["stringValue36549"]) { + field38456: [Object7834]! +} + +type Object7834 @Directive21(argument61 : "stringValue36552") @Directive44(argument97 : ["stringValue36551"]) { + field38457: String! + field38458: String + field38459: Scalar1! +} + +type Object7835 @Directive44(argument97 : ["stringValue36553"]) { + field38461(argument2165: InputObject1704!): Object7836 @Directive35(argument89 : "stringValue36555", argument90 : true, argument91 : "stringValue36554", argument92 : 677, argument93 : "stringValue36556", argument94 : false) + field38473: Object7841 @Directive35(argument89 : "stringValue36571", argument90 : true, argument91 : "stringValue36570", argument92 : 678, argument93 : "stringValue36572", argument94 : false) + field38483: Object7844 @Directive35(argument89 : "stringValue36580", argument90 : true, argument91 : "stringValue36579", argument92 : 679, argument93 : "stringValue36581", argument94 : false) + field38495(argument2166: InputObject1705!): Object7846 @Directive35(argument89 : "stringValue36587", argument90 : true, argument91 : "stringValue36586", argument92 : 680, argument93 : "stringValue36588", argument94 : false) + field38504(argument2167: InputObject1706!): Object7849 @Directive35(argument89 : "stringValue36597", argument90 : false, argument91 : "stringValue36596", argument92 : 681, argument93 : "stringValue36598", argument94 : false) + field38509(argument2168: InputObject1707!): Object7851 @Directive35(argument89 : "stringValue36605", argument90 : true, argument91 : "stringValue36604", argument92 : 682, argument93 : "stringValue36606", argument94 : false) + field38511(argument2169: InputObject1708!): Object7852 @Directive35(argument89 : "stringValue36612", argument90 : true, argument91 : "stringValue36611", argument92 : 683, argument93 : "stringValue36613", argument94 : false) + field38513(argument2170: InputObject1709!): Object7853 @Directive35(argument89 : "stringValue36618", argument90 : true, argument91 : "stringValue36617", argument92 : 684, argument93 : "stringValue36619", argument94 : false) + field38515(argument2171: InputObject1710!): Object7854 @Directive35(argument89 : "stringValue36624", argument90 : true, argument91 : "stringValue36623", argument92 : 685, argument93 : "stringValue36625", argument94 : false) +} + +type Object7836 @Directive21(argument61 : "stringValue36559") @Directive44(argument97 : ["stringValue36558"]) { + field38462: [Object7837] +} + +type Object7837 @Directive21(argument61 : "stringValue36561") @Directive44(argument97 : ["stringValue36560"]) { + field38463: Enum1931 + field38464: Union268 +} + +type Object7838 @Directive21(argument61 : "stringValue36565") @Directive44(argument97 : ["stringValue36564"]) { + field38465: String + field38466: String + field38467: String + field38468: Object7839 +} + +type Object7839 @Directive21(argument61 : "stringValue36567") @Directive44(argument97 : ["stringValue36566"]) { + field38469: Boolean! +} + +type Object784 @Directive20(argument58 : "stringValue3955", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3954") @Directive31 @Directive44(argument97 : ["stringValue3956", "stringValue3957"]) { + field4538: Int + field4539: Int + field4540: Int + field4541: String + field4542: String + field4543: Scalar2 + field4544: [String] + field4545: String +} + +type Object7840 @Directive21(argument61 : "stringValue36569") @Directive44(argument97 : ["stringValue36568"]) { + field38470: String + field38471: String + field38472: Object7839 +} + +type Object7841 @Directive21(argument61 : "stringValue36574") @Directive44(argument97 : ["stringValue36573"]) { + field38474: String! + field38475: [Object7842]! +} + +type Object7842 @Directive21(argument61 : "stringValue36576") @Directive44(argument97 : ["stringValue36575"]) { + field38476: String! + field38477: String! + field38478: String! + field38479: String! + field38480: Object7843! +} + +type Object7843 @Directive21(argument61 : "stringValue36578") @Directive44(argument97 : ["stringValue36577"]) { + field38481: String! + field38482: String! +} + +type Object7844 @Directive21(argument61 : "stringValue36583") @Directive44(argument97 : ["stringValue36582"]) { + field38484: [Object7845]! +} + +type Object7845 @Directive21(argument61 : "stringValue36585") @Directive44(argument97 : ["stringValue36584"]) { + field38485: Scalar2! + field38486: String! + field38487: String! + field38488: String + field38489: String + field38490: Scalar2! + field38491: String + field38492: String + field38493: String + field38494: String +} + +type Object7846 @Directive21(argument61 : "stringValue36591") @Directive44(argument97 : ["stringValue36590"]) { + field38496: String! + field38497: [Object7847]! +} + +type Object7847 @Directive21(argument61 : "stringValue36593") @Directive44(argument97 : ["stringValue36592"]) { + field38498: String! + field38499: String! + field38500: String! + field38501: Object7848 +} + +type Object7848 @Directive21(argument61 : "stringValue36595") @Directive44(argument97 : ["stringValue36594"]) { + field38502: String! + field38503: String! +} + +type Object7849 @Directive21(argument61 : "stringValue36601") @Directive44(argument97 : ["stringValue36600"]) { + field38505: String! + field38506: [Object7850] +} + +type Object785 @Directive22(argument62 : "stringValue3958") @Directive31 @Directive44(argument97 : ["stringValue3959", "stringValue3960"]) { + field4547: Boolean + field4548: String + field4549: String + field4550: String + field4551: String +} + +type Object7850 @Directive21(argument61 : "stringValue36603") @Directive44(argument97 : ["stringValue36602"]) { + field38507: String + field38508: String +} + +type Object7851 @Directive21(argument61 : "stringValue36609") @Directive44(argument97 : ["stringValue36608"]) { + field38510: Enum1932! +} + +type Object7852 @Directive21(argument61 : "stringValue36616") @Directive44(argument97 : ["stringValue36615"]) { + field38512: Scalar2 +} + +type Object7853 @Directive21(argument61 : "stringValue36622") @Directive44(argument97 : ["stringValue36621"]) { + field38514: [String]! +} + +type Object7854 @Directive21(argument61 : "stringValue36628") @Directive44(argument97 : ["stringValue36627"]) { + field38516: Enum1933 +} + +type Object7855 @Directive44(argument97 : ["stringValue36630"]) { + field38518(argument2172: InputObject1711!): Object7856 @Directive35(argument89 : "stringValue36632", argument90 : false, argument91 : "stringValue36631", argument93 : "stringValue36633", argument94 : false) + field38520(argument2173: InputObject1713!): Object7857 @Directive35(argument89 : "stringValue36639", argument90 : false, argument91 : "stringValue36638", argument93 : "stringValue36640", argument94 : false) + field38523(argument2174: InputObject1714!): Object7858 @Directive35(argument89 : "stringValue36646", argument90 : true, argument91 : "stringValue36645", argument92 : 686, argument93 : "stringValue36647", argument94 : false) + field38525(argument2175: InputObject1715!): Object7859 @Directive35(argument89 : "stringValue36652", argument90 : false, argument91 : "stringValue36651", argument92 : 687, argument93 : "stringValue36653", argument94 : false) +} + +type Object7856 @Directive21(argument61 : "stringValue36637") @Directive44(argument97 : ["stringValue36636"]) { + field38519: Scalar1! +} + +type Object7857 @Directive21(argument61 : "stringValue36644") @Directive44(argument97 : ["stringValue36643"]) { + field38521: Scalar1! + field38522: Scalar1! +} + +type Object7858 @Directive21(argument61 : "stringValue36650") @Directive44(argument97 : ["stringValue36649"]) { + field38524: Scalar1 +} + +type Object7859 @Directive21(argument61 : "stringValue36656") @Directive44(argument97 : ["stringValue36655"]) { + field38526: String + field38527: Scalar4 + field38528: Object7860 + field38539: Object7861 +} + +type Object786 @Directive20(argument58 : "stringValue3962", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3961") @Directive31 @Directive44(argument97 : ["stringValue3963", "stringValue3964"]) { + field4558: String + field4559: String + field4560: [Object787] +} + +type Object7860 @Directive21(argument61 : "stringValue36658") @Directive44(argument97 : ["stringValue36657"]) { + field38529: String! + field38530: String + field38531: String + field38532: String + field38533: String + field38534: String + field38535: String + field38536: String + field38537: String + field38538: Enum1277 +} + +type Object7861 @Directive21(argument61 : "stringValue36660") @Directive44(argument97 : ["stringValue36659"]) { + field38540: [Enum1935]! + field38541: Object7862 + field38554: Object7863 +} + +type Object7862 @Directive21(argument61 : "stringValue36663") @Directive44(argument97 : ["stringValue36662"]) { + field38542: String + field38543: String + field38544: String + field38545: String + field38546: String + field38547: String + field38548: String + field38549: Scalar2 + field38550: Scalar2 + field38551: Scalar2 + field38552: String + field38553: [String] +} + +type Object7863 @Directive21(argument61 : "stringValue36665") @Directive44(argument97 : ["stringValue36664"]) { + field38555: String + field38556: String + field38557: String + field38558: Boolean + field38559: Boolean + field38560: Boolean + field38561: String + field38562: String +} + +type Object7864 @Directive44(argument97 : ["stringValue36666"]) { + field38564: Object7865 @Directive35(argument89 : "stringValue36668", argument90 : true, argument91 : "stringValue36667", argument92 : 688, argument93 : "stringValue36669", argument94 : false) + field38569(argument2176: InputObject1716!): Object7867 @Directive35(argument89 : "stringValue36676", argument90 : true, argument91 : "stringValue36675", argument92 : 689, argument93 : "stringValue36677", argument94 : false) + field38572(argument2177: InputObject1717!): Object7868 @Directive35(argument89 : "stringValue36682", argument90 : true, argument91 : "stringValue36681", argument92 : 690, argument93 : "stringValue36683", argument94 : false) + field38575: Object7869 @Directive35(argument89 : "stringValue36688", argument90 : true, argument91 : "stringValue36687", argument92 : 691, argument93 : "stringValue36689", argument94 : false) + field38578: Object7870 @Directive35(argument89 : "stringValue36693", argument90 : true, argument91 : "stringValue36692", argument92 : 692, argument93 : "stringValue36694", argument94 : false) + field38581(argument2178: InputObject1718!): Object7871 @Directive35(argument89 : "stringValue36698", argument90 : true, argument91 : "stringValue36697", argument92 : 693, argument93 : "stringValue36699", argument94 : false) + field38584(argument2179: InputObject1719!): Object7872 @Directive35(argument89 : "stringValue36704", argument90 : true, argument91 : "stringValue36703", argument92 : 694, argument93 : "stringValue36705", argument94 : false) +} + +type Object7865 @Directive21(argument61 : "stringValue36671") @Directive44(argument97 : ["stringValue36670"]) { + field38565: [Interface94] + field38566: [Object7866] +} + +type Object7866 @Directive21(argument61 : "stringValue36673") @Directive44(argument97 : ["stringValue36672"]) { + field38567: [Enum339] + field38568: Enum1936 +} + +type Object7867 @Directive21(argument61 : "stringValue36680") @Directive44(argument97 : ["stringValue36679"]) { + field38570: [Interface94] + field38571: [Object7866] +} + +type Object7868 @Directive21(argument61 : "stringValue36686") @Directive44(argument97 : ["stringValue36685"]) { + field38573: [Interface94] + field38574: [Object7866] +} + +type Object7869 @Directive21(argument61 : "stringValue36691") @Directive44(argument97 : ["stringValue36690"]) { + field38576: [Interface94] + field38577: [Object7866] +} + +type Object787 @Directive21(argument61 : "stringValue3966") @Directive22(argument62 : "stringValue3965") @Directive31 @Directive44(argument97 : ["stringValue3967", "stringValue3968"]) { + field4561: String + field4562: String + field4563: Object788 + field4577: [Object790] + field4585: Object789 + field4586: Float + field4587: String + field4588: [Object791] + field4617: String + field4618: String + field4619: Object754 + field4620: String + field4621: Object793 + field4624: String + field4625: String + field4626: Enum223 + field4627: Float + field4628: String + field4629: Float + field4630: String + field4631: Enum224 + field4632: String + field4633: [Object794] + field4637: Object776 + field4638: Scalar2! + field4639: Boolean + field4640: Boolean + field4641: Object795 + field4645: Object796 + field4649: Object797 + field4653: String + field4654: String + field4655: Float + field4656: Float + field4657: [String] + field4658: String + field4659: Enum226 + field4660: String + field4661: String + field4662: Object792 + field4663: [Object792] + field4664: String + field4665: Int + field4666: String + field4667: Int + field4668: [String] + field4669: String + field4670: Scalar2 + field4671: Object773 + field4672: Int + field4673: Boolean + field4674: Enum227 + field4675: Float + field4676: String + field4677: Float + field4678: String + field4679: [String] + field4680: Int + field4681: String + field4682: Object798 +} + +type Object7870 @Directive21(argument61 : "stringValue36696") @Directive44(argument97 : ["stringValue36695"]) { + field38579: [Interface94] + field38580: [Object7866] +} + +type Object7871 @Directive21(argument61 : "stringValue36702") @Directive44(argument97 : ["stringValue36701"]) { + field38582: [Interface94] + field38583: [Object7866] +} + +type Object7872 @Directive21(argument61 : "stringValue36708") @Directive44(argument97 : ["stringValue36707"]) { + field38585: [Interface94] + field38586: [Object7866] +} + +type Object7873 @Directive44(argument97 : ["stringValue36709"]) { + field38588(argument2180: InputObject1720!): Object7874 @Directive35(argument89 : "stringValue36711", argument90 : false, argument91 : "stringValue36710", argument92 : 695, argument93 : "stringValue36712", argument94 : false) + field39686(argument2181: InputObject1720!): Object8049 @Directive35(argument89 : "stringValue37104", argument90 : false, argument91 : "stringValue37103", argument92 : 696, argument93 : "stringValue37105", argument94 : false) + field39769(argument2182: InputObject1720!): Object8049 @Directive35(argument89 : "stringValue37130", argument90 : false, argument91 : "stringValue37129", argument92 : 697, argument93 : "stringValue37131", argument94 : false) + field39770(argument2183: InputObject1720!): Object8049 @Directive35(argument89 : "stringValue37133", argument90 : false, argument91 : "stringValue37132", argument92 : 698, argument93 : "stringValue37134", argument94 : false) + field39771(argument2184: InputObject1721!): Object8060 @Directive35(argument89 : "stringValue37136", argument90 : false, argument91 : "stringValue37135", argument92 : 699, argument93 : "stringValue37137", argument94 : false) + field39790(argument2185: InputObject1720!): Object8064 @Directive35(argument89 : "stringValue37151", argument90 : false, argument91 : "stringValue37150", argument92 : 700, argument93 : "stringValue37152", argument94 : false) +} + +type Object7874 @Directive21(argument61 : "stringValue36715") @Directive44(argument97 : ["stringValue36714"]) { + field38589: [Object7875]! + field39323: Object7983! + field39569: Object8023 + field39578: Object7949 + field39579: Object8025 + field39587: Object8026 + field39674: Object8044 + field39676: Object8045 @deprecated + field39681: Object8047 +} + +type Object7875 @Directive21(argument61 : "stringValue36717") @Directive44(argument97 : ["stringValue36716"]) { + field38590: String! + field38591: String! + field38592: Object7876 + field38600: [Object7877]! + field39082: [Object130] + field39083: Object7935 + field39250: Object7973 + field39256: Object7974 + field39263: Object7976 + field39267: Object7977 + field39296: Object7980 + field39317: Object7981 + field39320: Object7982 +} + +type Object7876 @Directive21(argument61 : "stringValue36719") @Directive44(argument97 : ["stringValue36718"]) { + field38593: Boolean + field38594: Int + field38595: Int + field38596: String + field38597: Boolean + field38598: Int + field38599: Int +} + +type Object7877 @Directive21(argument61 : "stringValue36721") @Directive44(argument97 : ["stringValue36720"]) { + field38601: String + field38602: String! + field38603: [Object130] + field38604: String! + field38605: String + field38606: String + field38607: String + field38608: String + field38609: String + field38610: Object191 + field38611: Boolean + field38612: String + field38613: [Object304] + field38614: [Object250] + field38615: [Object168] + field38616: [Object289] + field38617: [Object263] + field38618: [Object150] + field38619: String + field38620: [Object195] + field38621: [Object302] + field38622: [Object244] + field38623: [Object308] + field38624: [Object249] + field38625: [Object309] + field38626: [Object241] + field38627: [Object266] + field38628: [Object301] + field38629: [Object7878] + field38645: [Object178] + field38646: [Object51] + field38647: Object1619 + field38648: Object1671 + field38649: [Object305] + field38650: Object7881 + field38655: [Object262] + field38656: String + field38657: String + field38658: [Object7882] + field38661: Object7883 + field38684: String + field38685: [Object268] + field38686: Object1604 + field38687: [Object300] + field38688: [Object298] + field38689: String + field38690: Object7886 + field38693: [Object152] + field38694: [Object299] + field38695: [Object243] + field38696: [Object307] + field38697: [Object173] + field38698: [Object259] + field38699: [Object239] + field38700: [Object134] + field38701: [Object238] + field38702: [Object197] + field38703: [Object293] + field38704: [Object7887] + field38722: [Object7890] + field38728: [Object7891] + field38749: [Object189] + field38750: [Object7893] + field38752: [Object306] + field38753: [Object170] + field38754: [Object172] + field38755: Object1627 + field38756: [Object1674] + field38757: Enum1940 + field38758: [Object7894] + field38785: [Object311] + field38786: [Object188] + field38787: Object270 + field38788: [Object192] + field38789: [Object7896] + field38794: [Object248] + field38795: Object1665 + field38796: Enum350 + field38797: [Object236] + field38798: [Object7897] + field38816: [Object7899] + field38833: [Object50] + field38834: [Object187] + field38835: [Object196] + field38836: [Object34] + field38837: [Object177] + field38838: [Object7900] + field38857: Boolean + field38858: [Object303] + field38859: [Object296] + field38860: [Object7902] + field38882: [Object194] + field38883: [Object213] + field38884: [Object200] + field38885: Scalar2 + field38886: [Object42] + field38887: [Object297] + field38888: Object1650 + field38889: Object1674 @deprecated + field38890: [Object7906] + field38929: [Object7911] + field38950: [Object7916] + field38955: [Object1608] + field38956: [Object7917] @deprecated + field38963: Object7918 @deprecated + field38971: Object1710 + field38972: [Object7919] + field38981: [Object7920] + field38988: Enum1947 + field38989: [Interface22] + field38990: [Object174] + field38991: [Object7921] + field38999: Object7922 + field39003: [Object193] + field39004: String + field39005: [Object269] + field39006: Object1654 + field39007: [Object167] + field39008: Object7923 + field39010: [Object273] + field39011: Object7924 + field39019: String + field39020: String + field39021: Object1621 + field39022: Object1622 + field39023: [Object1628] + field39024: [Object1636] + field39025: [Object1688] + field39026: Boolean + field39027: String + field39028: Object1633 + field39029: Int + field39030: Boolean + field39031: [Object7926] +} + +type Object7878 @Directive21(argument61 : "stringValue36723") @Directive44(argument97 : ["stringValue36722"]) { + field38630: Object59 + field38631: Object7879 + field38641: String + field38642: String + field38643: String + field38644: Scalar2 +} + +type Object7879 @Directive21(argument61 : "stringValue36725") @Directive44(argument97 : ["stringValue36724"]) { + field38632: Object7880 +} + +type Object788 @Directive20(argument58 : "stringValue3970", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3969") @Directive31 @Directive44(argument97 : ["stringValue3971", "stringValue3972"]) { + field4564: [Object789] +} + +type Object7880 @Directive21(argument61 : "stringValue36727") @Directive44(argument97 : ["stringValue36726"]) { + field38633: Scalar2 + field38634: String + field38635: String + field38636: String + field38637: String + field38638: String + field38639: String + field38640: String +} + +type Object7881 @Directive21(argument61 : "stringValue36729") @Directive44(argument97 : ["stringValue36728"]) { + field38651: Float + field38652: String @deprecated + field38653: String @deprecated + field38654: String +} + +type Object7882 @Directive21(argument61 : "stringValue36731") @Directive44(argument97 : ["stringValue36730"]) { + field38659: Object35 + field38660: String +} + +type Object7883 @Directive21(argument61 : "stringValue36733") @Directive44(argument97 : ["stringValue36732"]) { + field38662: [Object7884] + field38678: Enum1939 + field38679: Boolean + field38680: Int + field38681: Float + field38682: Float + field38683: String +} + +type Object7884 @Directive21(argument61 : "stringValue36735") @Directive44(argument97 : ["stringValue36734"]) { + field38663: Float + field38664: Float + field38665: Enum1937 + field38666: String + field38667: String + field38668: String + field38669: [Object7885] + field38672: Boolean + field38673: [Object199] + field38674: String + field38675: Float + field38676: Int + field38677: Int +} + +type Object7885 @Directive21(argument61 : "stringValue36738") @Directive44(argument97 : ["stringValue36737"]) { + field38670: String + field38671: Enum1938 +} + +type Object7886 @Directive21(argument61 : "stringValue36742") @Directive44(argument97 : ["stringValue36741"]) { + field38691: Float + field38692: Float +} + +type Object7887 @Directive21(argument61 : "stringValue36744") @Directive44(argument97 : ["stringValue36743"]) { + field38705: String + field38706: String + field38707: [Object7888] + field38720: String + field38721: Boolean +} + +type Object7888 @Directive21(argument61 : "stringValue36746") @Directive44(argument97 : ["stringValue36745"]) { + field38708: String + field38709: String + field38710: String + field38711: [Object36] + field38712: Object7889 + field38717: String + field38718: String + field38719: String +} + +type Object7889 @Directive21(argument61 : "stringValue36748") @Directive44(argument97 : ["stringValue36747"]) { + field38713: String + field38714: String + field38715: String + field38716: String +} + +type Object789 @Directive20(argument58 : "stringValue3974", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3973") @Directive31 @Directive44(argument97 : ["stringValue3975", "stringValue3976"]) { + field4565: String + field4566: String + field4567: Scalar2 + field4568: String + field4569: String + field4570: String + field4571: String + field4572: String + field4573: String + field4574: Int + field4575: String + field4576: String +} + +type Object7890 @Directive21(argument61 : "stringValue36750") @Directive44(argument97 : ["stringValue36749"]) { + field38723: String + field38724: String + field38725: String + field38726: String + field38727: String +} + +type Object7891 @Directive21(argument61 : "stringValue36752") @Directive44(argument97 : ["stringValue36751"]) { + field38729: String + field38730: String + field38731: String + field38732: String + field38733: Object135 + field38734: Object135 + field38735: Object135 + field38736: Object135 + field38737: String + field38738: Object7892 + field38743: String + field38744: String + field38745: Object35 + field38746: String + field38747: String + field38748: String +} + +type Object7892 @Directive21(argument61 : "stringValue36754") @Directive44(argument97 : ["stringValue36753"]) { + field38739: Int + field38740: Int + field38741: Int + field38742: Int +} + +type Object7893 @Directive21(argument61 : "stringValue36756") @Directive44(argument97 : ["stringValue36755"]) { + field38751: String +} + +type Object7894 @Directive21(argument61 : "stringValue36759") @Directive44(argument97 : ["stringValue36758"]) { + field38759: String + field38760: String + field38761: String + field38762: String + field38763: String + field38764: Object35 + field38765: String + field38766: Object7895 + field38775: String + field38776: String + field38777: String + field38778: String + field38779: String + field38780: Int + field38781: Int + field38782: Scalar1 + field38783: Scalar2 + field38784: Enum1941 +} + +type Object7895 @Directive21(argument61 : "stringValue36761") @Directive44(argument97 : ["stringValue36760"]) { + field38767: String + field38768: String + field38769: String + field38770: String + field38771: Scalar2 + field38772: Scalar2 + field38773: Scalar2 + field38774: Scalar2 +} + +type Object7896 @Directive21(argument61 : "stringValue36764") @Directive44(argument97 : ["stringValue36763"]) { + field38790: String + field38791: String + field38792: String + field38793: String +} + +type Object7897 @Directive21(argument61 : "stringValue36766") @Directive44(argument97 : ["stringValue36765"]) { + field38799: [Object7898] + field38810: String + field38811: String + field38812: String! + field38813: String + field38814: String + field38815: Enum1943 +} + +type Object7898 @Directive21(argument61 : "stringValue36768") @Directive44(argument97 : ["stringValue36767"]) { + field38800: Boolean + field38801: String + field38802: String + field38803: String + field38804: [Object199] + field38805: String + field38806: Int + field38807: String + field38808: String + field38809: Enum1942 +} + +type Object7899 @Directive21(argument61 : "stringValue36772") @Directive44(argument97 : ["stringValue36771"]) { + field38817: String + field38818: String + field38819: String + field38820: String + field38821: Object135 + field38822: Object135 + field38823: Object135 + field38824: Object135 + field38825: String + field38826: Object7892 + field38827: String + field38828: String + field38829: Object35 + field38830: String + field38831: String + field38832: String +} + +type Object79 @Directive21(argument61 : "stringValue325") @Directive44(argument97 : ["stringValue324"]) { + field528: String + field529: Float +} + +type Object790 @Directive20(argument58 : "stringValue3978", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3977") @Directive31 @Directive44(argument97 : ["stringValue3979", "stringValue3980"]) { + field4578: Scalar4 + field4579: Int + field4580: Scalar4 + field4581: Scalar2 + field4582: Boolean + field4583: String + field4584: String +} + +type Object7900 @Directive21(argument61 : "stringValue36774") @Directive44(argument97 : ["stringValue36773"]) { + field38839: String + field38840: String + field38841: String + field38842: String + field38843: Object135 + field38844: [Object135] + field38845: String + field38846: String + field38847: String + field38848: String + field38849: String + field38850: String + field38851: [Object7901] + field38856: String +} + +type Object7901 @Directive21(argument61 : "stringValue36776") @Directive44(argument97 : ["stringValue36775"]) { + field38852: Scalar2 + field38853: Enum1944 + field38854: String + field38855: [Object69] +} + +type Object7902 @Directive21(argument61 : "stringValue36779") @Directive44(argument97 : ["stringValue36778"]) { + field38861: String + field38862: [Object7903] + field38872: [Object7904] +} + +type Object7903 @Directive21(argument61 : "stringValue36781") @Directive44(argument97 : ["stringValue36780"]) { + field38863: String + field38864: String + field38865: String + field38866: String + field38867: String + field38868: String + field38869: String + field38870: String + field38871: [Object36] +} + +type Object7904 @Directive21(argument61 : "stringValue36783") @Directive44(argument97 : ["stringValue36782"]) { + field38873: String + field38874: String + field38875: Enum1945 + field38876: [Object7905] +} + +type Object7905 @Directive21(argument61 : "stringValue36786") @Directive44(argument97 : ["stringValue36785"]) { + field38877: String + field38878: String + field38879: String + field38880: String + field38881: Object35 +} + +type Object7906 @Directive21(argument61 : "stringValue36788") @Directive44(argument97 : ["stringValue36787"]) { + field38891: Enum1946 + field38892: Boolean + field38893: Object7907 + field38907: String + field38908: String + field38909: String + field38910: String + field38911: String + field38912: String + field38913: Object7908 + field38927: Object77 + field38928: Boolean +} + +type Object7907 @Directive21(argument61 : "stringValue36791") @Directive44(argument97 : ["stringValue36790"]) { + field38894: String + field38895: String + field38896: String + field38897: String + field38898: Enum1946 + field38899: String + field38900: String + field38901: Boolean + field38902: Boolean + field38903: Int + field38904: Int + field38905: Int + field38906: [Object199] +} + +type Object7908 @Directive21(argument61 : "stringValue36793") @Directive44(argument97 : ["stringValue36792"]) { + field38914: String + field38915: String + field38916: String + field38917: String + field38918: Object7909 +} + +type Object7909 @Directive21(argument61 : "stringValue36795") @Directive44(argument97 : ["stringValue36794"]) { + field38919: String + field38920: Object7910 + field38925: Object7910 + field38926: Object7910 +} + +type Object791 @Directive22(argument62 : "stringValue3983") @Directive42(argument96 : ["stringValue3981", "stringValue3982"]) @Directive44(argument97 : ["stringValue3984", "stringValue3985"]) { + field4589: Object792 + field4616: Object589 +} + +type Object7910 @Directive21(argument61 : "stringValue36797") @Directive44(argument97 : ["stringValue36796"]) { + field38921: String + field38922: String + field38923: Int + field38924: Int +} + +type Object7911 @Directive21(argument61 : "stringValue36799") @Directive44(argument97 : ["stringValue36798"]) { + field38930: String! + field38931: Object51 + field38932: Object7912 + field38934: String! + field38935: Object7913 + field38946: Object7915 +} + +type Object7912 @Directive21(argument61 : "stringValue36801") @Directive44(argument97 : ["stringValue36800"]) { + field38933: String +} + +type Object7913 @Directive21(argument61 : "stringValue36803") @Directive44(argument97 : ["stringValue36802"]) { + field38936: String + field38937: Object7914 + field38942: [Object51] + field38943: Object35 + field38944: String + field38945: String +} + +type Object7914 @Directive21(argument61 : "stringValue36805") @Directive44(argument97 : ["stringValue36804"]) { + field38938: String + field38939: String + field38940: String + field38941: String +} + +type Object7915 @Directive21(argument61 : "stringValue36807") @Directive44(argument97 : ["stringValue36806"]) { + field38947: String + field38948: Object7914 + field38949: [Object304] +} + +type Object7916 @Directive21(argument61 : "stringValue36809") @Directive44(argument97 : ["stringValue36808"]) { + field38951: String + field38952: String + field38953: String + field38954: String +} + +type Object7917 @Directive21(argument61 : "stringValue36811") @Directive44(argument97 : ["stringValue36810"]) { + field38957: String + field38958: String + field38959: String + field38960: Object135 + field38961: Object135 + field38962: Object135 +} + +type Object7918 @Directive21(argument61 : "stringValue36813") @Directive44(argument97 : ["stringValue36812"]) { + field38964: Scalar2 + field38965: String + field38966: String + field38967: String + field38968: String + field38969: Enum350 + field38970: String +} + +type Object7919 @Directive21(argument61 : "stringValue36815") @Directive44(argument97 : ["stringValue36814"]) { + field38973: Object44 + field38974: Object44 + field38975: Object135 + field38976: Object135 + field38977: Object135 + field38978: [Object195] + field38979: String + field38980: Object35 +} + +type Object792 @Directive12 @Directive22(argument62 : "stringValue3988") @Directive42(argument96 : ["stringValue3986", "stringValue3987"]) @Directive44(argument97 : ["stringValue3989", "stringValue3990"]) { + field4590: ID! + field4591: String! @Directive3(argument3 : "stringValue3991") @deprecated + field4592: String + field4593: String + field4594: String + field4595: String + field4596: String + field4597: String + field4598: String + field4599: String + field4600: String + field4601: String + field4602: String + field4603: String + field4604: String + field4605: String + field4606: String + field4607: Int + field4608: String + field4609: String + field4610: String + field4611: Int + field4612: String + field4613: String + field4614: Float + field4615: String +} + +type Object7920 @Directive21(argument61 : "stringValue36817") @Directive44(argument97 : ["stringValue36816"]) { + field38982: String + field38983: String + field38984: String + field38985: Object135 + field38986: Object135 + field38987: Object135 +} + +type Object7921 @Directive21(argument61 : "stringValue36820") @Directive44(argument97 : ["stringValue36819"]) { + field38992: String + field38993: String + field38994: String + field38995: Object35 + field38996: Object135 + field38997: Object135 + field38998: Object135 +} + +type Object7922 @Directive21(argument61 : "stringValue36822") @Directive44(argument97 : ["stringValue36821"]) { + field39000: String + field39001: Int + field39002: Int +} + +type Object7923 @Directive21(argument61 : "stringValue36824") @Directive44(argument97 : ["stringValue36823"]) { + field39009: String +} + +type Object7924 @Directive21(argument61 : "stringValue36826") @Directive44(argument97 : ["stringValue36825"]) { + field39012: Object7925 + field39016: String + field39017: String + field39018: String +} + +type Object7925 @Directive21(argument61 : "stringValue36828") @Directive44(argument97 : ["stringValue36827"]) { + field39013: String + field39014: String + field39015: String +} + +type Object7926 @Directive21(argument61 : "stringValue36830") @Directive44(argument97 : ["stringValue36829"]) { + field39032: Object7927! + field39072: Enum1950! + field39073: Object7933! + field39076: Object7934 +} + +type Object7927 @Directive21(argument61 : "stringValue36832") @Directive44(argument97 : ["stringValue36831"]) { + field39033: Object7928 + field39055: Object7931 +} + +type Object7928 @Directive21(argument61 : "stringValue36834") @Directive44(argument97 : ["stringValue36833"]) { + field39034: Object7929 + field39047: String + field39048: String! + field39049: String + field39050: String! + field39051: Enum1949! + field39052: Object256 + field39053: String + field39054: String +} + +type Object7929 @Directive21(argument61 : "stringValue36836") @Directive44(argument97 : ["stringValue36835"]) { + field39035: String + field39036: String + field39037: String + field39038: Enum1948 + field39039: Boolean + field39040: [Object7930] + field39043: String + field39044: String + field39045: String + field39046: [Object7930] +} + +type Object793 @Directive20(argument58 : "stringValue3993", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue3992") @Directive31 @Directive44(argument97 : ["stringValue3994", "stringValue3995"]) { + field4622: String + field4623: Boolean +} + +type Object7930 @Directive21(argument61 : "stringValue36839") @Directive44(argument97 : ["stringValue36838"]) { + field39041: String! + field39042: String +} + +type Object7931 @Directive21(argument61 : "stringValue36842") @Directive44(argument97 : ["stringValue36841"]) { + field39056: Object7929 + field39057: String + field39058: String! + field39059: String + field39060: String! + field39061: Enum1949! + field39062: Object256 + field39063: String + field39064: String + field39065: Object7932 +} + +type Object7932 @Directive21(argument61 : "stringValue36844") @Directive44(argument97 : ["stringValue36843"]) { + field39066: String + field39067: String + field39068: String + field39069: String + field39070: String + field39071: String +} + +type Object7933 @Directive21(argument61 : "stringValue36847") @Directive44(argument97 : ["stringValue36846"]) { + field39074: String + field39075: [String] +} + +type Object7934 @Directive21(argument61 : "stringValue36849") @Directive44(argument97 : ["stringValue36848"]) { + field39077: Enum1951! + field39078: Object35 + field39079: String + field39080: [String] @deprecated + field39081: [String] +} + +type Object7935 @Directive21(argument61 : "stringValue36852") @Directive44(argument97 : ["stringValue36851"]) { + field39084: Object7936 + field39087: Object7936 + field39088: [String] + field39089: [String] + field39090: Scalar1 + field39091: Scalar1 + field39092: Scalar1 + field39093: [String] + field39094: [Scalar2] + field39095: Object7937 + field39099: [Object7938] + field39103: Object7939 + field39106: Scalar2 + field39107: Object7940 + field39121: Object7942 + field39168: Object7948 + field39171: Object7949 + field39243: Object7971 + field39245: Object7883 + field39246: Object7972 + field39249: [Object1679] +} + +type Object7936 @Directive21(argument61 : "stringValue36854") @Directive44(argument97 : ["stringValue36853"]) { + field39085: String + field39086: Scalar1 +} + +type Object7937 @Directive21(argument61 : "stringValue36856") @Directive44(argument97 : ["stringValue36855"]) { + field39096: String + field39097: String + field39098: Object65 +} + +type Object7938 @Directive21(argument61 : "stringValue36858") @Directive44(argument97 : ["stringValue36857"]) { + field39100: String + field39101: String + field39102: String +} + +type Object7939 @Directive21(argument61 : "stringValue36860") @Directive44(argument97 : ["stringValue36859"]) { + field39104: Int + field39105: Int +} + +type Object794 @Directive20(argument58 : "stringValue4005", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4004") @Directive31 @Directive44(argument97 : ["stringValue4006", "stringValue4007"]) { + field4634: String + field4635: String + field4636: String +} + +type Object7940 @Directive21(argument61 : "stringValue36862") @Directive44(argument97 : ["stringValue36861"]) { + field39108: String + field39109: Int + field39110: Int + field39111: String + field39112: String + field39113: String + field39114: Boolean + field39115: Object7941 + field39118: Scalar2 + field39119: Scalar2 + field39120: Int +} + +type Object7941 @Directive21(argument61 : "stringValue36864") @Directive44(argument97 : ["stringValue36863"]) { + field39116: Scalar1 + field39117: Boolean +} + +type Object7942 @Directive21(argument61 : "stringValue36866") @Directive44(argument97 : ["stringValue36865"]) { + field39122: Int + field39123: String + field39124: String + field39125: String + field39126: Float + field39127: Float + field39128: String + field39129: String + field39130: String + field39131: String + field39132: String + field39133: String + field39134: String + field39135: String + field39136: String + field39137: String + field39138: String + field39139: String + field39140: String + field39141: String + field39142: String + field39143: String + field39144: String + field39145: String + field39146: String + field39147: String + field39148: String + field39149: String + field39150: String + field39151: Object7943 + field39166: Boolean + field39167: Boolean +} + +type Object7943 @Directive21(argument61 : "stringValue36868") @Directive44(argument97 : ["stringValue36867"]) { + field39152: String + field39153: String + field39154: [Object7944] + field39158: Float + field39159: Float + field39160: Float + field39161: Object7946 +} + +type Object7944 @Directive21(argument61 : "stringValue36870") @Directive44(argument97 : ["stringValue36869"]) { + field39155: [Object7945] +} + +type Object7945 @Directive21(argument61 : "stringValue36872") @Directive44(argument97 : ["stringValue36871"]) { + field39156: String + field39157: String +} + +type Object7946 @Directive21(argument61 : "stringValue36874") @Directive44(argument97 : ["stringValue36873"]) { + field39162: Object7947 + field39165: Object7947 +} + +type Object7947 @Directive21(argument61 : "stringValue36876") @Directive44(argument97 : ["stringValue36875"]) { + field39163: Float + field39164: Float +} + +type Object7948 @Directive21(argument61 : "stringValue36878") @Directive44(argument97 : ["stringValue36877"]) { + field39169: Int + field39170: [Int] +} + +type Object7949 @Directive21(argument61 : "stringValue36880") @Directive44(argument97 : ["stringValue36879"]) { + field39172: [Object1674] + field39173: Object7950 + field39177: Object7951 + field39181: Object7951 + field39182: Object7952 + field39186: Object7953 + field39190: Object7951 @deprecated + field39191: Object7953 @deprecated + field39192: Boolean @deprecated + field39193: [Object1675] + field39194: Boolean @deprecated + field39195: [String] @deprecated + field39196: [String] + field39197: Int + field39198: Object7951 + field39199: Object7953 + field39200: [Object7954] + field39221: [Object7966] + field39229: [Object7967] + field39233: Object7968 + field39238: Object7970 +} + +type Object795 @Directive20(argument58 : "stringValue4009", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4008") @Directive31 @Directive44(argument97 : ["stringValue4010", "stringValue4011"]) { + field4642: Enum225 + field4643: Enum225 + field4644: Enum225 +} + +type Object7950 @Directive21(argument61 : "stringValue36882") @Directive44(argument97 : ["stringValue36881"]) { + field39174: String + field39175: Boolean + field39176: String +} + +type Object7951 @Directive21(argument61 : "stringValue36884") @Directive44(argument97 : ["stringValue36883"]) { + field39178: [String] + field39179: [String] + field39180: [String] +} + +type Object7952 @Directive21(argument61 : "stringValue36886") @Directive44(argument97 : ["stringValue36885"]) { + field39183: Int + field39184: Int + field39185: Int +} + +type Object7953 @Directive21(argument61 : "stringValue36888") @Directive44(argument97 : ["stringValue36887"]) { + field39187: [Int] + field39188: [Int] + field39189: [Int] +} + +type Object7954 @Directive21(argument61 : "stringValue36890") @Directive44(argument97 : ["stringValue36889"]) { + field39201: String + field39202: Enum1952 + field39203: Boolean @deprecated + field39204: Union269 +} + +type Object7955 @Directive21(argument61 : "stringValue36894") @Directive44(argument97 : ["stringValue36893"]) { + field39205: Boolean @deprecated + field39206: Boolean +} + +type Object7956 @Directive21(argument61 : "stringValue36896") @Directive44(argument97 : ["stringValue36895"]) { + field39207: [Boolean] +} + +type Object7957 @Directive21(argument61 : "stringValue36898") @Directive44(argument97 : ["stringValue36897"]) { + field39208: Scalar3 +} + +type Object7958 @Directive21(argument61 : "stringValue36900") @Directive44(argument97 : ["stringValue36899"]) { + field39209: Float @deprecated + field39210: Float +} + +type Object7959 @Directive21(argument61 : "stringValue36902") @Directive44(argument97 : ["stringValue36901"]) { + field39211: [Float] +} + +type Object796 @Directive20(argument58 : "stringValue4017", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4016") @Directive31 @Directive44(argument97 : ["stringValue4018", "stringValue4019"]) { + field4646: String + field4647: String + field4648: String +} + +type Object7960 @Directive21(argument61 : "stringValue36904") @Directive44(argument97 : ["stringValue36903"]) { + field39212: Int @deprecated + field39213: Int +} + +type Object7961 @Directive21(argument61 : "stringValue36906") @Directive44(argument97 : ["stringValue36905"]) { + field39214: [Int] +} + +type Object7962 @Directive21(argument61 : "stringValue36908") @Directive44(argument97 : ["stringValue36907"]) { + field39215: Scalar2 @deprecated + field39216: Scalar2 +} + +type Object7963 @Directive21(argument61 : "stringValue36910") @Directive44(argument97 : ["stringValue36909"]) { + field39217: [Scalar2] +} + +type Object7964 @Directive21(argument61 : "stringValue36912") @Directive44(argument97 : ["stringValue36911"]) { + field39218: String @deprecated + field39219: String +} + +type Object7965 @Directive21(argument61 : "stringValue36914") @Directive44(argument97 : ["stringValue36913"]) { + field39220: [String] +} + +type Object7966 @Directive21(argument61 : "stringValue36916") @Directive44(argument97 : ["stringValue36915"]) { + field39222: String + field39223: [String] @deprecated + field39224: String + field39225: String @deprecated + field39226: String + field39227: String + field39228: [String] +} + +type Object7967 @Directive21(argument61 : "stringValue36918") @Directive44(argument97 : ["stringValue36917"]) { + field39230: String + field39231: Object7951 + field39232: String +} + +type Object7968 @Directive21(argument61 : "stringValue36920") @Directive44(argument97 : ["stringValue36919"]) { + field39234: [Object7969!] + field39237: [Object7969!] +} + +type Object7969 @Directive21(argument61 : "stringValue36922") @Directive44(argument97 : ["stringValue36921"]) { + field39235: String + field39236: Enum1953 +} + +type Object797 @Directive20(argument58 : "stringValue4021", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4020") @Directive31 @Directive44(argument97 : ["stringValue4022", "stringValue4023"]) { + field4650: [String] + field4651: [String] + field4652: [String] +} + +type Object7970 @Directive21(argument61 : "stringValue36925") @Directive44(argument97 : ["stringValue36924"]) { + field39239: String + field39240: Enum1954 + field39241: String + field39242: Boolean +} + +type Object7971 @Directive21(argument61 : "stringValue36928") @Directive44(argument97 : ["stringValue36927"]) { + field39244: String +} + +type Object7972 @Directive21(argument61 : "stringValue36930") @Directive44(argument97 : ["stringValue36929"]) { + field39247: String + field39248: String +} + +type Object7973 @Directive21(argument61 : "stringValue36932") @Directive44(argument97 : ["stringValue36931"]) { + field39251: Boolean + field39252: Scalar2 + field39253: Object7949 + field39254: Object7942 + field39255: Object65 +} + +type Object7974 @Directive21(argument61 : "stringValue36934") @Directive44(argument97 : ["stringValue36933"]) { + field39257: Boolean + field39258: [Object7975] + field39262: Object7949 +} + +type Object7975 @Directive21(argument61 : "stringValue36936") @Directive44(argument97 : ["stringValue36935"]) { + field39259: Enum1955 + field39260: Object7947 + field39261: Scalar2 +} + +type Object7976 @Directive21(argument61 : "stringValue36939") @Directive44(argument97 : ["stringValue36938"]) { + field39264: Boolean + field39265: Object7949 + field39266: [Object1679] +} + +type Object7977 @Directive21(argument61 : "stringValue36941") @Directive44(argument97 : ["stringValue36940"]) { + field39268: Scalar2! + field39269: Enum1956! + field39270: String! + field39271: String + field39272: String + field39273: Boolean! + field39274: Boolean! + field39275: Object7978! + field39288: [Object7979] + field39292: String + field39293: Boolean + field39294: String + field39295: Object135 +} + +type Object7978 @Directive21(argument61 : "stringValue36944") @Directive44(argument97 : ["stringValue36943"]) { + field39276: Scalar2! + field39277: Boolean! + field39278: String + field39279: String + field39280: Int + field39281: Int + field39282: String + field39283: String + field39284: String + field39285: String + field39286: String + field39287: String +} + +type Object7979 @Directive21(argument61 : "stringValue36946") @Directive44(argument97 : ["stringValue36945"]) { + field39289: Scalar2! + field39290: String! + field39291: String! +} + +type Object798 @Directive20(argument58 : "stringValue4033", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4032") @Directive31 @Directive44(argument97 : ["stringValue4034", "stringValue4035"]) { + field4683: String + field4684: String + field4685: String +} + +type Object7980 @Directive21(argument61 : "stringValue36948") @Directive44(argument97 : ["stringValue36947"]) { + field39297: Scalar2 + field39298: String + field39299: String + field39300: String + field39301: String + field39302: Scalar2 + field39303: String + field39304: Scalar4 + field39305: Scalar4 + field39306: String + field39307: String + field39308: String + field39309: Scalar2 + field39310: String + field39311: String + field39312: Boolean + field39313: Enum69 + field39314: Boolean + field39315: String + field39316: Scalar2 +} + +type Object7981 @Directive21(argument61 : "stringValue36950") @Directive44(argument97 : ["stringValue36949"]) { + field39318: Scalar2 + field39319: Int +} + +type Object7982 @Directive21(argument61 : "stringValue36952") @Directive44(argument97 : ["stringValue36951"]) { + field39321: Object7949 + field39322: String +} + +type Object7983 @Directive21(argument61 : "stringValue36954") @Directive44(argument97 : ["stringValue36953"]) { + field39324: String + field39325: String + field39326: String + field39327: Scalar2 + field39328: String + field39329: String + field39330: [String] + field39331: String + field39332: String + field39333: [Object7984] + field39339: Boolean + field39340: Boolean + field39341: Enum1957 + field39342: String + field39343: String + field39344: [Object130] + field39345: [Object7985] + field39353: Enum1958 + field39354: Boolean + field39355: Enum1959 + field39356: [Object7986] + field39364: Object7988 + field39372: Object7989 + field39394: Object7883 @deprecated + field39395: Object7992 + field39400: Object7942 + field39401: String + field39402: Object7993 + field39415: Object7994 + field39508: Object8010 + field39526: Object8014 @deprecated + field39530: Object8015 + field39535: Object8016 + field39539: Object7992 + field39540: Object7907 + field39541: Object8017 + field39546: String + field39547: Object8018 + field39552: Boolean + field39553: Object8019 + field39555: Enum1964 + field39556: [Object167] + field39557: String @deprecated + field39558: Object8020 + field39563: Object8022 + field39568: Boolean +} + +type Object7984 @Directive21(argument61 : "stringValue36956") @Directive44(argument97 : ["stringValue36955"]) { + field39334: String + field39335: String + field39336: Object35 + field39337: Boolean + field39338: String +} + +type Object7985 @Directive21(argument61 : "stringValue36959") @Directive44(argument97 : ["stringValue36958"]) { + field39346: String + field39347: String + field39348: Scalar2 + field39349: String + field39350: Object35 + field39351: String + field39352: String +} + +type Object7986 @Directive21(argument61 : "stringValue36963") @Directive44(argument97 : ["stringValue36962"]) { + field39357: String + field39358: [Object7987] + field39363: String +} + +type Object7987 @Directive21(argument61 : "stringValue36965") @Directive44(argument97 : ["stringValue36964"]) { + field39359: String + field39360: Object35 + field39361: Boolean + field39362: Object7907 +} + +type Object7988 @Directive21(argument61 : "stringValue36967") @Directive44(argument97 : ["stringValue36966"]) { + field39365: String + field39366: String + field39367: String + field39368: Int + field39369: String + field39370: String @deprecated + field39371: String +} + +type Object7989 @Directive21(argument61 : "stringValue36969") @Directive44(argument97 : ["stringValue36968"]) { + field39373: String + field39374: String + field39375: String + field39376: Boolean + field39377: String + field39378: String + field39379: String + field39380: String + field39381: Object7990 + field39387: Object7991 + field39393: Object1606 @deprecated +} + +type Object799 @Directive20(argument58 : "stringValue4037", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4036") @Directive31 @Directive44(argument97 : ["stringValue4038", "stringValue4039"]) { + field4687: String + field4688: String + field4689: [Object480] +} + +type Object7990 @Directive21(argument61 : "stringValue36971") @Directive44(argument97 : ["stringValue36970"]) { + field39382: String + field39383: String + field39384: String + field39385: String + field39386: String +} + +type Object7991 @Directive21(argument61 : "stringValue36973") @Directive44(argument97 : ["stringValue36972"]) { + field39388: String + field39389: String + field39390: String + field39391: String + field39392: String +} + +type Object7992 @Directive21(argument61 : "stringValue36975") @Directive44(argument97 : ["stringValue36974"]) { + field39396: String + field39397: [Object7986] + field39398: String + field39399: [Object36] +} + +type Object7993 @Directive21(argument61 : "stringValue36977") @Directive44(argument97 : ["stringValue36976"]) { + field39403: String @deprecated + field39404: String @deprecated + field39405: String @deprecated + field39406: Float + field39407: Float + field39408: String @deprecated + field39409: Object35 + field39410: String @deprecated + field39411: String @deprecated + field39412: Boolean + field39413: Boolean + field39414: Object7907 +} + +type Object7994 @Directive21(argument61 : "stringValue36979") @Directive44(argument97 : ["stringValue36978"]) { + field39416: [Object7995] +} + +type Object7995 @Directive21(argument61 : "stringValue36981") @Directive44(argument97 : ["stringValue36980"]) { + field39417: String + field39418: Object35 + field39419: Enum1960 + field39420: String + field39421: String + field39422: String + field39423: Object7996 + field39430: Object7998 + field39448: [Object8000] + field39460: [Object8001] + field39464: Object8002 + field39473: Object8003 + field39475: [Object8004] + field39478: [Object8005] + field39482: Object8006 + field39485: [Object8007] @deprecated + field39488: [Object8008] + field39496: Object7907 + field39497: String + field39498: Float + field39499: String + field39500: Object8009 + field39503: String + field39504: String + field39505: Object8006 @deprecated + field39506: Enum1960 @deprecated + field39507: String @deprecated +} + +type Object7996 @Directive21(argument61 : "stringValue36984") @Directive44(argument97 : ["stringValue36983"]) { + field39424: Boolean + field39425: String + field39426: Object7997 + field39428: String + field39429: Object7997 @deprecated +} + +type Object7997 @Directive21(argument61 : "stringValue36986") @Directive44(argument97 : ["stringValue36985"]) { + field39427: String +} + +type Object7998 @Directive21(argument61 : "stringValue36988") @Directive44(argument97 : ["stringValue36987"]) { + field39431: Int + field39432: Int + field39433: String + field39434: String + field39435: [String] + field39436: [Object7999] + field39439: String + field39440: String + field39441: String + field39442: String + field39443: String + field39444: String @deprecated + field39445: String @deprecated + field39446: String @deprecated + field39447: String @deprecated +} + +type Object7999 @Directive21(argument61 : "stringValue36990") @Directive44(argument97 : ["stringValue36989"]) { + field39437: Int + field39438: String +} + +type Object8 @Directive20(argument58 : "stringValue48", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue47") @Directive31 @Directive44(argument97 : ["stringValue49", "stringValue50"]) { + field51: String + field52: [Object9] +} + +type Object80 @Directive21(argument61 : "stringValue328") @Directive44(argument97 : ["stringValue327"]) { + field536: String + field537: String +} + +type Object800 @Directive20(argument58 : "stringValue4041", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4040") @Directive31 @Directive44(argument97 : ["stringValue4042", "stringValue4043"]) { + field4690: Object801 + field4724: String + field4725: String +} + +type Object8000 @Directive21(argument61 : "stringValue36992") @Directive44(argument97 : ["stringValue36991"]) { + field39449: Int + field39450: Int + field39451: Scalar2 + field39452: String + field39453: String + field39454: String + field39455: String + field39456: String + field39457: String + field39458: String @deprecated + field39459: String @deprecated +} + +type Object8001 @Directive21(argument61 : "stringValue36994") @Directive44(argument97 : ["stringValue36993"]) { + field39461: String + field39462: Object35 + field39463: Object7998 +} + +type Object8002 @Directive21(argument61 : "stringValue36996") @Directive44(argument97 : ["stringValue36995"]) { + field39465: String @deprecated + field39466: Scalar2 + field39467: String + field39468: Float + field39469: Scalar2 + field39470: Enum34 + field39471: String + field39472: Enum1961 +} + +type Object8003 @Directive21(argument61 : "stringValue36999") @Directive44(argument97 : ["stringValue36998"]) { + field39474: String +} + +type Object8004 @Directive21(argument61 : "stringValue37001") @Directive44(argument97 : ["stringValue37000"]) { + field39476: Int + field39477: Int +} + +type Object8005 @Directive21(argument61 : "stringValue37003") @Directive44(argument97 : ["stringValue37002"]) { + field39479: String + field39480: Object35 + field39481: String +} + +type Object8006 @Directive21(argument61 : "stringValue37005") @Directive44(argument97 : ["stringValue37004"]) { + field39483: Object35 + field39484: String +} + +type Object8007 @Directive21(argument61 : "stringValue37007") @Directive44(argument97 : ["stringValue37006"]) { + field39486: String + field39487: Object35 +} + +type Object8008 @Directive21(argument61 : "stringValue37009") @Directive44(argument97 : ["stringValue37008"]) { + field39489: String + field39490: Object35 + field39491: String + field39492: Object7998 + field39493: Object7907 + field39494: Object8003 + field39495: String +} + +type Object8009 @Directive21(argument61 : "stringValue37011") @Directive44(argument97 : ["stringValue37010"]) { + field39501: Scalar1 + field39502: Scalar1 +} + +type Object801 @Directive20(argument58 : "stringValue4045", argument59 : true, argument60 : true) @Directive22(argument62 : "stringValue4044") @Directive31 @Directive44(argument97 : ["stringValue4046", "stringValue4047"]) { + field4691: [Object802!] + field4693: String + field4694: [Object803!] + field4717: [String!] + field4718: String + field4719: [Object807!] + field4722: String + field4723: [[String!]] @deprecated +} + +type Object8010 @Directive21(argument61 : "stringValue37013") @Directive44(argument97 : ["stringValue37012"]) { + field39509: [Object8011] + field39516: Boolean + field39517: Scalar1 + field39518: Object8012 + field39525: Object8009 +} + +type Object8011 @Directive21(argument61 : "stringValue37015") @Directive44(argument97 : ["stringValue37014"]) { + field39510: Enum1962 + field39511: String + field39512: Int + field39513: [Object7995] + field39514: Enum1963 + field39515: String +} + +type Object8012 @Directive21(argument61 : "stringValue37019") @Directive44(argument97 : ["stringValue37018"]) { + field39519: String + field39520: String + field39521: Object8013 + field39523: [Object8013] + field39524: String +} + +type Object8013 @Directive21(argument61 : "stringValue37021") @Directive44(argument97 : ["stringValue37020"]) { + field39522: String +} + +type Object8014 @Directive21(argument61 : "stringValue37023") @Directive44(argument97 : ["stringValue37022"]) { + field39527: String + field39528: String + field39529: String +} + +type Object8015 @Directive21(argument61 : "stringValue37025") @Directive44(argument97 : ["stringValue37024"]) { + field39531: String + field39532: String + field39533: String + field39534: Boolean +} + +type Object8016 @Directive21(argument61 : "stringValue37027") @Directive44(argument97 : ["stringValue37026"]) { + field39536: String + field39537: String + field39538: String +} + +type Object8017 @Directive21(argument61 : "stringValue37029") @Directive44(argument97 : ["stringValue37028"]) { + field39542: Scalar2 + field39543: Scalar2 + field39544: String + field39545: String +} + +type Object8018 @Directive21(argument61 : "stringValue37031") @Directive44(argument97 : ["stringValue37030"]) { + field39548: String + field39549: String + field39550: String + field39551: Scalar1 +} + +type Object8019 @Directive21(argument61 : "stringValue37033") @Directive44(argument97 : ["stringValue37032"]) { + field39554: [Object7987] +} + +type Object802 @Directive20(argument58 : "stringValue4049", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4048") @Directive31 @Directive44(argument97 : ["stringValue4050", "stringValue4051"]) { + field4692: [String!] +} + +type Object8020 @Directive21(argument61 : "stringValue37036") @Directive44(argument97 : ["stringValue37035"]) { + field39559: [Object8021] + field39562: [Object51] +} + +type Object8021 @Directive21(argument61 : "stringValue37038") @Directive44(argument97 : ["stringValue37037"]) { + field39560: Scalar2 + field39561: Object89 +} + +type Object8022 @Directive21(argument61 : "stringValue37040") @Directive44(argument97 : ["stringValue37039"]) { + field39564: Float + field39565: Float + field39566: Float + field39567: Float +} + +type Object8023 @Directive21(argument61 : "stringValue37042") @Directive44(argument97 : ["stringValue37041"]) { + field39570: Enum1965 + field39571: Object8024 + field39575: Object8024 + field39576: Enum1966 + field39577: Enum1967 +} + +type Object8024 @Directive21(argument61 : "stringValue37045") @Directive44(argument97 : ["stringValue37044"]) { + field39572: Boolean + field39573: Boolean + field39574: Boolean +} + +type Object8025 @Directive21(argument61 : "stringValue37049") @Directive44(argument97 : ["stringValue37048"]) { + field39580: String + field39581: String + field39582: [Object262] + field39583: String + field39584: String + field39585: Object257 + field39586: String +} + +type Object8026 @Directive21(argument61 : "stringValue37051") @Directive44(argument97 : ["stringValue37050"]) { + field39588: [Object8027] + field39638: Enum1957 + field39639: [Object7877] + field39640: Enum1970 + field39641: Enum1970 + field39642: Object8035 + field39664: Object8042 + field39673: String +} + +type Object8027 @Directive21(argument61 : "stringValue37053") @Directive44(argument97 : ["stringValue37052"]) { + field39589: String + field39590: Boolean + field39591: String + field39592: Object8028 @deprecated + field39612: [Object7877] + field39613: Union270 + field39628: Object8034 + field39631: String + field39632: String + field39633: String + field39634: String + field39635: String + field39636: String + field39637: Object35 +} + +type Object8028 @Directive21(argument61 : "stringValue37055") @Directive44(argument97 : ["stringValue37054"]) { + field39593: Object8029 + field39596: String + field39597: String + field39598: [Object8030] +} + +type Object8029 @Directive21(argument61 : "stringValue37057") @Directive44(argument97 : ["stringValue37056"]) { + field39594: Enum1968 + field39595: Enum1968 +} + +type Object803 @Directive20(argument58 : "stringValue4053", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4052") @Directive31 @Directive44(argument97 : ["stringValue4054", "stringValue4055"]) { + field4695: String + field4696: Object804 +} + +type Object8030 @Directive21(argument61 : "stringValue37060") @Directive44(argument97 : ["stringValue37059"]) { + field39599: String + field39600: String + field39601: String + field39602: String + field39603: String + field39604: String + field39605: String + field39606: String + field39607: Enum1969 + field39608: [String] + field39609: [String] + field39610: String + field39611: Boolean +} + +type Object8031 @Directive21(argument61 : "stringValue37064") @Directive44(argument97 : ["stringValue37063"]) { + field39614: Object8029 + field39615: String + field39616: String + field39617: [Object8030] + field39618: Scalar1 +} + +type Object8032 @Directive21(argument61 : "stringValue37066") @Directive44(argument97 : ["stringValue37065"]) { + field39619: Object8029 + field39620: String + field39621: String + field39622: Object7951 + field39623: String + field39624: [Object8033] + field39627: String +} + +type Object8033 @Directive21(argument61 : "stringValue37068") @Directive44(argument97 : ["stringValue37067"]) { + field39625: String + field39626: [Object8030] +} + +type Object8034 @Directive21(argument61 : "stringValue37070") @Directive44(argument97 : ["stringValue37069"]) { + field39629: String + field39630: String +} + +type Object8035 @Directive21(argument61 : "stringValue37073") @Directive44(argument97 : ["stringValue37072"]) { + field39643: String @deprecated + field39644: [Object8036] + field39648: Object8037 + field39658: Object270 + field39659: [Object8041] +} + +type Object8036 @Directive21(argument61 : "stringValue37075") @Directive44(argument97 : ["stringValue37074"]) { + field39645: String + field39646: String + field39647: Boolean +} + +type Object8037 @Directive21(argument61 : "stringValue37077") @Directive44(argument97 : ["stringValue37076"]) { + field39649: Object8038 + field39652: Object8039 + field39655: Object8040 +} + +type Object8038 @Directive21(argument61 : "stringValue37079") @Directive44(argument97 : ["stringValue37078"]) { + field39650: String + field39651: String +} + +type Object8039 @Directive21(argument61 : "stringValue37081") @Directive44(argument97 : ["stringValue37080"]) { + field39653: [Object1703] + field39654: String +} + +type Object804 @Directive20(argument58 : "stringValue4057", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4056") @Directive31 @Directive44(argument97 : ["stringValue4058", "stringValue4059"]) { + field4697: String + field4698: Boolean + field4699: [String] + field4700: [String] + field4701: String + field4702: String + field4703: String + field4704: Object805 + field4711: [Object806!] +} + +type Object8040 @Directive21(argument61 : "stringValue37083") @Directive44(argument97 : ["stringValue37082"]) { + field39656: Int + field39657: String +} + +type Object8041 @Directive21(argument61 : "stringValue37085") @Directive44(argument97 : ["stringValue37084"]) { + field39660: String! + field39661: Enum350! + field39662: String + field39663: Interface95 +} + +type Object8042 @Directive21(argument61 : "stringValue37087") @Directive44(argument97 : ["stringValue37086"]) { + field39665: String + field39666: Object8043 + field39669: Object77 + field39670: Object77 + field39671: Int + field39672: Enum1971 +} + +type Object8043 @Directive21(argument61 : "stringValue37089") @Directive44(argument97 : ["stringValue37088"]) { + field39667: String + field39668: String +} + +type Object8044 @Directive21(argument61 : "stringValue37092") @Directive44(argument97 : ["stringValue37091"]) { + field39675: [Object7877] +} + +type Object8045 @Directive21(argument61 : "stringValue37094") @Directive44(argument97 : ["stringValue37093"]) { + field39677: [Object8046] +} + +type Object8046 @Directive21(argument61 : "stringValue37096") @Directive44(argument97 : ["stringValue37095"]) { + field39678: String + field39679: String + field39680: Enum1972 +} + +type Object8047 @Directive21(argument61 : "stringValue37099") @Directive44(argument97 : ["stringValue37098"]) { + field39682: [Object8048] +} + +type Object8048 @Directive21(argument61 : "stringValue37101") @Directive44(argument97 : ["stringValue37100"]) { + field39683: String + field39684: String + field39685: Enum1973 +} + +type Object8049 @Directive21(argument61 : "stringValue37107") @Directive44(argument97 : ["stringValue37106"]) { + field39687: Object8050! + field39716: [Interface95!]! + field39717: Object8055 + field39728: Object7949 + field39729: Object8056! + field39735: Object8025 + field39736: Object8026 @deprecated + field39737: Object8057 + field39762: Object8023 + field39763: [Object8041!]! + field39764: Object8059 + field39767: Object8045 @deprecated + field39768: Object8047 +} + +type Object805 @Directive20(argument58 : "stringValue4061", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4060") @Directive31 @Directive44(argument97 : ["stringValue4062", "stringValue4063"]) { + field4705: String + field4706: String + field4707: String + field4708: String + field4709: String + field4710: String +} + +type Object8050 @Directive21(argument61 : "stringValue37109") @Directive44(argument97 : ["stringValue37108"]) { + field39688: Object7989 + field39689: Object7876 @deprecated + field39690: Object7942 + field39691: Object8051 + field39695: Enum1959! + field39696: Enum1957 + field39697: Object8052 + field39699: String @deprecated + field39700: Object7937 + field39701: [String] + field39702: Object8053 + field39712: Union271 + field39714: String + field39715: Object7907 +} + +type Object8051 @Directive21(argument61 : "stringValue37111") @Directive44(argument97 : ["stringValue37110"]) { + field39692: String + field39693: String + field39694: Object8018 +} + +type Object8052 @Directive21(argument61 : "stringValue37113") @Directive44(argument97 : ["stringValue37112"]) { + field39698: [Scalar2!] +} + +type Object8053 @Directive21(argument61 : "stringValue37115") @Directive44(argument97 : ["stringValue37114"]) { + field39703: Boolean + field39704: Int + field39705: Int + field39706: String + field39707: Boolean + field39708: Int + field39709: Int + field39710: Int + field39711: Scalar2 +} + +type Object8054 @Directive21(argument61 : "stringValue37118") @Directive44(argument97 : ["stringValue37117"]) { + field39713: String +} + +type Object8055 @Directive21(argument61 : "stringValue37120") @Directive44(argument97 : ["stringValue37119"]) { + field39718: Boolean @deprecated + field39719: Boolean + field39720: Boolean + field39721: Boolean + field39722: Enum1964 + field39723: [Object167] + field39724: String @deprecated + field39725: Object8020 + field39726: Object8022 + field39727: Boolean +} + +type Object8056 @Directive21(argument61 : "stringValue37122") @Directive44(argument97 : ["stringValue37121"]) { + field39730: String + field39731: String + field39732: Boolean + field39733: [Object7984] + field39734: Object8010 +} + +type Object8057 @Directive21(argument61 : "stringValue37124") @Directive44(argument97 : ["stringValue37123"]) { + field39738: [Object8058] + field39754: Enum1957 + field39755: [Interface95] + field39756: Enum1970 + field39757: Enum1970 + field39758: Object8035 + field39759: Object8042 + field39760: [Object8041] + field39761: String +} + +type Object8058 @Directive21(argument61 : "stringValue37126") @Directive44(argument97 : ["stringValue37125"]) { + field39739: String + field39740: Boolean + field39741: String + field39742: Object8028 @deprecated + field39743: [Interface95] + field39744: Union270 + field39745: Object8034 + field39746: String + field39747: String + field39748: String + field39749: String + field39750: String + field39751: [Object8041] + field39752: String + field39753: Object35 +} + +type Object8059 @Directive21(argument61 : "stringValue37128") @Directive44(argument97 : ["stringValue37127"]) { + field39765: [Interface95] + field39766: [Object8041] +} + +type Object806 @Directive20(argument58 : "stringValue4065", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4064") @Directive31 @Directive44(argument97 : ["stringValue4066", "stringValue4067"]) { + field4712: String + field4713: String + field4714: String + field4715: String + field4716: [Object806!] +} + +type Object8060 @Directive21(argument61 : "stringValue37140") @Directive44(argument97 : ["stringValue37139"]) { + field39772: [Object8061] + field39778: [Object8062] +} + +type Object8061 @Directive21(argument61 : "stringValue37142") @Directive44(argument97 : ["stringValue37141"]) { + field39773: String + field39774: String + field39775: [Object8061] + field39776: [Object7987] + field39777: Enum1974 +} + +type Object8062 @Directive21(argument61 : "stringValue37145") @Directive44(argument97 : ["stringValue37144"]) { + field39779: String + field39780: [Object8063] +} + +type Object8063 @Directive21(argument61 : "stringValue37147") @Directive44(argument97 : ["stringValue37146"]) { + field39781: String + field39782: String + field39783: Object7907 + field39784: Object35 + field39785: String + field39786: String + field39787: String + field39788: Enum1975 + field39789: Enum1976 +} + +type Object8064 @Directive21(argument61 : "stringValue37154") @Directive44(argument97 : ["stringValue37153"]) { + field39791: Object8057 + field39792: Object7949 +} + +type Object8065 @Directive44(argument97 : ["stringValue37155"]) { + field39794(argument2186: InputObject1722!): Object8066 @Directive35(argument89 : "stringValue37157", argument90 : true, argument91 : "stringValue37156", argument92 : 701, argument93 : "stringValue37158", argument94 : false) +} + +type Object8066 @Directive21(argument61 : "stringValue37162") @Directive44(argument97 : ["stringValue37161"]) { + field39795: [Object8067!]! + field39833: Object8081! + field39840: Object8084! +} + +type Object8067 @Directive21(argument61 : "stringValue37164") @Directive44(argument97 : ["stringValue37163"]) { + field39796: Enum1978! + field39797: Union272! + field39832: String! +} + +type Object8068 @Directive21(argument61 : "stringValue37168") @Directive44(argument97 : ["stringValue37167"]) { + field39798: Enum1979! +} + +type Object8069 @Directive21(argument61 : "stringValue37171") @Directive44(argument97 : ["stringValue37170"]) { + field39799: String! + field39800: String! +} + +type Object807 @Directive20(argument58 : "stringValue4069", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4068") @Directive31 @Directive44(argument97 : ["stringValue4070", "stringValue4071"]) { + field4720: String + field4721: String +} + +type Object8070 @Directive21(argument61 : "stringValue37173") @Directive44(argument97 : ["stringValue37172"]) { + field39801: String! + field39802: String + field39803: String + field39804: String + field39805: String! + field39806: Union273 +} + +type Object8071 @Directive21(argument61 : "stringValue37176") @Directive44(argument97 : ["stringValue37175"]) { + field39807: String! + field39808: Object8072! +} + +type Object8072 @Directive21(argument61 : "stringValue37178") @Directive44(argument97 : ["stringValue37177"]) { + field39809: String! + field39810: [String!]! +} + +type Object8073 @Directive21(argument61 : "stringValue37180") @Directive44(argument97 : ["stringValue37179"]) { + field39811: String! +} + +type Object8074 @Directive21(argument61 : "stringValue37182") @Directive44(argument97 : ["stringValue37181"]) { + field39812: String! + field39813: Enum1980! +} + +type Object8075 @Directive21(argument61 : "stringValue37185") @Directive44(argument97 : ["stringValue37184"]) { + field39814: String @deprecated + field39815: String @deprecated + field39816: String! + field39817: [Object8076]! +} + +type Object8076 @Directive21(argument61 : "stringValue37187") @Directive44(argument97 : ["stringValue37186"]) { + field39818: String! + field39819: String! +} + +type Object8077 @Directive21(argument61 : "stringValue37189") @Directive44(argument97 : ["stringValue37188"]) { + field39820: String! + field39821: String! + field39822: String + field39823: String! +} + +type Object8078 @Directive21(argument61 : "stringValue37191") @Directive44(argument97 : ["stringValue37190"]) { + field39824: String + field39825: String + field39826: [Union273!] +} + +type Object8079 @Directive21(argument61 : "stringValue37193") @Directive44(argument97 : ["stringValue37192"]) { + field39827: [Object8080!]! +} + +type Object808 @Directive22(argument62 : "stringValue4072") @Directive31 @Directive44(argument97 : ["stringValue4073", "stringValue4074"]) { + field4726: Float + field4727: Object10 + field4728: Interface6 + field4729: Float + field4730: Float + field4731: Float + field4732: Float + field4733: Object10 + field4734: Enum228 + field4735: Int + field4736: [Object474] + field4737: [Object502] + field4738: Enum6 @deprecated + field4739: [Object809] @deprecated +} + +type Object8080 @Directive21(argument61 : "stringValue37195") @Directive44(argument97 : ["stringValue37194"]) { + field39828: String! + field39829: String + field39830: String + field39831: Enum1981! +} + +type Object8081 @Directive21(argument61 : "stringValue37198") @Directive44(argument97 : ["stringValue37197"]) { + field39834: Object8082 + field39837: Object8083 +} + +type Object8082 @Directive21(argument61 : "stringValue37200") @Directive44(argument97 : ["stringValue37199"]) { + field39835: [String!] + field39836: [String!] +} + +type Object8083 @Directive21(argument61 : "stringValue37202") @Directive44(argument97 : ["stringValue37201"]) { + field39838: [String!] + field39839: [String!] +} + +type Object8084 @Directive21(argument61 : "stringValue37204") @Directive44(argument97 : ["stringValue37203"]) { + field39841: String + field39842: String + field39843: String + field39844: String + field39845: String + field39846: String + field39847: String + field39848: Boolean +} + +type Object8085 @Directive44(argument97 : ["stringValue37205"]) { + field39850(argument2187: InputObject1723!): Object8086 @Directive35(argument89 : "stringValue37207", argument90 : true, argument91 : "stringValue37206", argument92 : 702, argument93 : "stringValue37208", argument94 : false) +} + +type Object8086 @Directive21(argument61 : "stringValue37216") @Directive44(argument97 : ["stringValue37215"]) { + field39851: String + field39852: String + field39853: Object8087 +} + +type Object8087 @Directive21(argument61 : "stringValue37218") @Directive44(argument97 : ["stringValue37217"]) { + field39854: String + field39855: [Object8088] + field39860: [Object8090] + field39865: [Object8089] +} + +type Object8088 @Directive21(argument61 : "stringValue37220") @Directive44(argument97 : ["stringValue37219"]) { + field39856: String + field39857: [Object8089] +} + +type Object8089 @Directive21(argument61 : "stringValue37222") @Directive44(argument97 : ["stringValue37221"]) { + field39858: String + field39859: String +} + +type Object809 @Directive22(argument62 : "stringValue4079") @Directive31 @Directive44(argument97 : ["stringValue4080", "stringValue4081"]) { + field4740: Float + field4741: [Object810] +} + +type Object8090 @Directive21(argument61 : "stringValue37224") @Directive44(argument97 : ["stringValue37223"]) { + field39861: String + field39862: String + field39863: String + field39864: [Object8089] +} + +type Object8091 @Directive44(argument97 : ["stringValue37225"]) { + field39867(argument2188: InputObject1726!): Object8092 @Directive35(argument89 : "stringValue37227", argument90 : true, argument91 : "stringValue37226", argument92 : 703, argument93 : "stringValue37228", argument94 : false) + field39893(argument2189: InputObject1727!): Object8098 @Directive35(argument89 : "stringValue37244", argument90 : true, argument91 : "stringValue37243", argument92 : 704, argument93 : "stringValue37245", argument94 : false) +} + +type Object8092 @Directive21(argument61 : "stringValue37231") @Directive44(argument97 : ["stringValue37230"]) { + field39868: [Object8093] +} + +type Object8093 @Directive21(argument61 : "stringValue37233") @Directive44(argument97 : ["stringValue37232"]) { + field39869: Scalar2 + field39870: [Object8094] + field39889: [Object8097] +} + +type Object8094 @Directive21(argument61 : "stringValue37235") @Directive44(argument97 : ["stringValue37234"]) { + field39871: Scalar2 + field39872: Scalar2 + field39873: String + field39874: String + field39875: [Object5169] + field39876: [Object8095] + field39880: Object5180 + field39881: [Object8096] + field39886: Enum1985 + field39887: Object5169 + field39888: String +} + +type Object8095 @Directive21(argument61 : "stringValue37237") @Directive44(argument97 : ["stringValue37236"]) { + field39877: String! + field39878: String + field39879: Enum1285 +} + +type Object8096 @Directive21(argument61 : "stringValue37239") @Directive44(argument97 : ["stringValue37238"]) { + field39882: String + field39883: String + field39884: String + field39885: [Object5169] +} + +type Object8097 @Directive21(argument61 : "stringValue37242") @Directive44(argument97 : ["stringValue37241"]) { + field39890: Scalar2 + field39891: String + field39892: String +} + +type Object8098 @Directive21(argument61 : "stringValue37249") @Directive44(argument97 : ["stringValue37248"]) { + field39894: Union274 + field39955: Object8104 + field39956: Object8116 + field39960: Object8104 +} + +type Object8099 @Directive21(argument61 : "stringValue37252") @Directive44(argument97 : ["stringValue37251"]) { + field39895: Scalar2 + field39896: Object8100 + field39922: [Object8108] + field39932: [Object5169] +} + +type Object81 @Directive21(argument61 : "stringValue331") @Directive44(argument97 : ["stringValue330"]) { + field540: String + field541: String @deprecated + field542: String @deprecated + field543: [Object82] + field554: Enum45 @deprecated + field555: Scalar1 + field556: String +} + +type Object810 @Directive22(argument62 : "stringValue4082") @Directive31 @Directive44(argument97 : ["stringValue4083", "stringValue4084"]) { + field4742: Object10 + field4743: Float +} + +type Object8100 @Directive21(argument61 : "stringValue37254") @Directive44(argument97 : ["stringValue37253"]) { + field39897: String + field39898: String + field39899: Object8101 + field39919: [String] + field39920: Object8102 + field39921: Object8102 +} + +type Object8101 @Directive21(argument61 : "stringValue37256") @Directive44(argument97 : ["stringValue37255"]) { + field39900: String + field39901: String + field39902: String + field39903: Object8102 +} + +type Object8102 @Directive21(argument61 : "stringValue37258") @Directive44(argument97 : ["stringValue37257"]) { + field39904: String + field39905: Object8103 +} + +type Object8103 @Directive21(argument61 : "stringValue37260") @Directive44(argument97 : ["stringValue37259"]) { + field39906: Enum1986! + field39907: Object8104 + field39911: Object8105 + field39914: Object5182 + field39915: Object8106 + field39917: Object8107 +} + +type Object8104 @Directive21(argument61 : "stringValue37263") @Directive44(argument97 : ["stringValue37262"]) { + field39908: String + field39909: String + field39910: Object5174 +} + +type Object8105 @Directive21(argument61 : "stringValue37265") @Directive44(argument97 : ["stringValue37264"]) { + field39912: Scalar2 + field39913: Scalar2 +} + +type Object8106 @Directive21(argument61 : "stringValue37267") @Directive44(argument97 : ["stringValue37266"]) { + field39916: Scalar2 +} + +type Object8107 @Directive21(argument61 : "stringValue37269") @Directive44(argument97 : ["stringValue37268"]) { + field39918: [Object5170] +} + +type Object8108 @Directive21(argument61 : "stringValue37271") @Directive44(argument97 : ["stringValue37270"]) { + field39923: String! + field39924: Enum1281! + field39925: Object8109 + field39928: Union275 +} + +type Object8109 @Directive21(argument61 : "stringValue37273") @Directive44(argument97 : ["stringValue37272"]) { + field39926: Scalar2 + field39927: Scalar2 +} + +type Object811 @Directive22(argument62 : "stringValue4085") @Directive31 @Directive44(argument97 : ["stringValue4086", "stringValue4087"]) { + field4744: String + field4745: String + field4746: Object480 + field4747: Interface6 + field4748: Object10 +} + +type Object8110 @Directive21(argument61 : "stringValue37276") @Directive44(argument97 : ["stringValue37275"]) { + field39929: [Object5170]! + field39930: String + field39931: String +} + +type Object8111 @Directive21(argument61 : "stringValue37278") @Directive44(argument97 : ["stringValue37277"]) { + field39933: Object8112 + field39935: [Object8113] + field39939: [Object8114] + field39951: Object8102 + field39952: Object8101 +} + +type Object8112 @Directive21(argument61 : "stringValue37280") @Directive44(argument97 : ["stringValue37279"]) { + field39934: String +} + +type Object8113 @Directive21(argument61 : "stringValue37282") @Directive44(argument97 : ["stringValue37281"]) { + field39936: String! + field39937: String + field39938: String +} + +type Object8114 @Directive21(argument61 : "stringValue37284") @Directive44(argument97 : ["stringValue37283"]) { + field39940: String + field39941: Scalar2! + field39942: String + field39943: Enum1987 + field39944: String + field39945: Enum1988 + field39946: Object5174 + field39947: String + field39948: String + field39949: Boolean + field39950: String +} + +type Object8115 @Directive21(argument61 : "stringValue37288") @Directive44(argument97 : ["stringValue37287"]) { + field39953: String + field39954: Object8102 +} + +type Object8116 @Directive21(argument61 : "stringValue37290") @Directive44(argument97 : ["stringValue37289"]) { + field39957: Scalar2 + field39958: String + field39959: String +} + +type Object8117 @Directive44(argument97 : ["stringValue37291"]) { + field39962(argument2190: InputObject1729!): Object8118 @Directive35(argument89 : "stringValue37293", argument90 : true, argument91 : "stringValue37292", argument92 : 705, argument93 : "stringValue37294", argument94 : false) + field39965(argument2191: InputObject1730!): Object8119 @Directive35(argument89 : "stringValue37299", argument90 : true, argument91 : "stringValue37298", argument92 : 706, argument93 : "stringValue37300", argument94 : false) + field39986(argument2192: InputObject1731!): Object8123 @Directive35(argument89 : "stringValue37311", argument90 : true, argument91 : "stringValue37310", argument92 : 707, argument93 : "stringValue37312", argument94 : false) + field40002(argument2193: InputObject1732!): Object8127 @Directive35(argument89 : "stringValue37323", argument90 : true, argument91 : "stringValue37322", argument92 : 708, argument93 : "stringValue37324", argument94 : false) + field40007: Object8128 @Directive35(argument89 : "stringValue37331", argument90 : true, argument91 : "stringValue37330", argument92 : 709, argument93 : "stringValue37332", argument94 : false) + field40013(argument2194: InputObject1733!): Object8129 @Directive35(argument89 : "stringValue37336", argument90 : true, argument91 : "stringValue37335", argument92 : 710, argument93 : "stringValue37337", argument94 : false) +} + +type Object8118 @Directive21(argument61 : "stringValue37297") @Directive44(argument97 : ["stringValue37296"]) { + field39963: String + field39964: Boolean! +} + +type Object8119 @Directive21(argument61 : "stringValue37303") @Directive44(argument97 : ["stringValue37302"]) { + field39966: [Object8120]! + field39981: [Object8122] +} + +type Object812 @Directive20(argument58 : "stringValue4089", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4088") @Directive31 @Directive44(argument97 : ["stringValue4090", "stringValue4091"]) { + field4749: String + field4750: String + field4751: String + field4752: Int + field4753: Boolean + field4754: Boolean + field4755: String + field4756: Int +} + +type Object8120 @Directive21(argument61 : "stringValue37305") @Directive44(argument97 : ["stringValue37304"]) { + field39967: Scalar2 + field39968: String + field39969: Int + field39970: Scalar2 + field39971: Scalar2 + field39972: Int + field39973: Int + field39974: Object8121 + field39977: [Scalar2] + field39978: Enum1287 + field39979: Enum1288 + field39980: [Object8120] +} + +type Object8121 @Directive21(argument61 : "stringValue37307") @Directive44(argument97 : ["stringValue37306"]) { + field39975: Enum1286! + field39976: Scalar2! +} + +type Object8122 @Directive21(argument61 : "stringValue37309") @Directive44(argument97 : ["stringValue37308"]) { + field39982: Scalar2 + field39983: String + field39984: String + field39985: String +} + +type Object8123 @Directive21(argument61 : "stringValue37315") @Directive44(argument97 : ["stringValue37314"]) { + field39987: [Object8124]! + field39993: Scalar2 + field39994: Enum1289 + field39995: Enum1290 + field39996: [Object8125]! + field39999: [Object8126]! +} + +type Object8124 @Directive21(argument61 : "stringValue37317") @Directive44(argument97 : ["stringValue37316"]) { + field39988: Scalar2! + field39989: String! + field39990: String! + field39991: [Enum1289]! + field39992: Boolean! +} + +type Object8125 @Directive21(argument61 : "stringValue37319") @Directive44(argument97 : ["stringValue37318"]) { + field39997: Scalar2! + field39998: String! +} + +type Object8126 @Directive21(argument61 : "stringValue37321") @Directive44(argument97 : ["stringValue37320"]) { + field40000: Scalar2! + field40001: String! +} + +type Object8127 @Directive21(argument61 : "stringValue37327") @Directive44(argument97 : ["stringValue37326"]) { + field40003: Enum1989 + field40004: Boolean + field40005: Enum1990 + field40006: Boolean +} + +type Object8128 @Directive21(argument61 : "stringValue37334") @Directive44(argument97 : ["stringValue37333"]) { + field40008: Enum1989 + field40009: Scalar2 + field40010: Boolean + field40011: Enum1990 + field40012: Boolean +} + +type Object8129 @Directive21(argument61 : "stringValue37340") @Directive44(argument97 : ["stringValue37339"]) { + field40014: Int! + field40015: Boolean! +} + +type Object813 @Directive20(argument58 : "stringValue4093", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4092") @Directive31 @Directive44(argument97 : ["stringValue4094", "stringValue4095"]) { + field4757: String + field4758: String + field4759: String + field4760: Boolean + field4761: String + field4762: String + field4763: [String!] + field4764: String + field4765: String +} + +type Object8130 @Directive44(argument97 : ["stringValue37341"]) { + field40017: Object8131 @Directive35(argument89 : "stringValue37343", argument90 : true, argument91 : "stringValue37342", argument93 : "stringValue37344", argument94 : false) + field40019(argument2195: InputObject1734!): Object8132 @Directive35(argument89 : "stringValue37348", argument90 : true, argument91 : "stringValue37347", argument93 : "stringValue37349", argument94 : false) + field40049: Object8136 @Directive35(argument89 : "stringValue37362", argument90 : true, argument91 : "stringValue37361", argument93 : "stringValue37363", argument94 : false) +} + +type Object8131 @Directive21(argument61 : "stringValue37346") @Directive44(argument97 : ["stringValue37345"]) { + field40018: [Object5189] +} + +type Object8132 @Directive21(argument61 : "stringValue37352") @Directive44(argument97 : ["stringValue37351"]) { + field40020: Scalar2 + field40021: Enum1991 + field40022: [Enum866] + field40023: Enum866 + field40024: [Object5191] + field40025: Object5191 + field40026: Object5191 + field40027: [Object5189] + field40028: Object5189 + field40029: Object5189 + field40030: Object8133 + field40037: [Object8135] + field40041: [String] + field40042: Boolean + field40043: Boolean + field40044: Boolean + field40045: Enum1992 + field40046: Boolean + field40047: Boolean + field40048: Boolean +} + +type Object8133 @Directive21(argument61 : "stringValue37355") @Directive44(argument97 : ["stringValue37354"]) { + field40031: String + field40032: String! + field40033: Object8134! +} + +type Object8134 @Directive21(argument61 : "stringValue37357") @Directive44(argument97 : ["stringValue37356"]) { + field40034: String! + field40035: Scalar2! + field40036: String! +} + +type Object8135 @Directive21(argument61 : "stringValue37359") @Directive44(argument97 : ["stringValue37358"]) { + field40038: String + field40039: String + field40040: String +} + +type Object8136 @Directive21(argument61 : "stringValue37365") @Directive44(argument97 : ["stringValue37364"]) { + field40050: [Object5191] +} + +type Object8137 @Directive44(argument97 : ["stringValue37366"]) { + field40052(argument2196: InputObject1735!): Object8138 @Directive35(argument89 : "stringValue37368", argument90 : false, argument91 : "stringValue37367", argument92 : 711, argument93 : "stringValue37369", argument94 : false) + field42047(argument2197: InputObject1736!): Object8250 @Directive35(argument89 : "stringValue37600", argument90 : false, argument91 : "stringValue37599", argument92 : 712, argument93 : "stringValue37601", argument94 : false) + field42052(argument2198: InputObject1737!): Object8251 @Directive35(argument89 : "stringValue37606", argument90 : false, argument91 : "stringValue37605", argument92 : 713, argument93 : "stringValue37607", argument94 : false) + field42155(argument2199: InputObject1738!): Object8260 @Directive35(argument89 : "stringValue37628", argument90 : false, argument91 : "stringValue37627", argument92 : 714, argument93 : "stringValue37629", argument94 : false) + field45014(argument2200: InputObject1739!): Object8709 @Directive35(argument89 : "stringValue38656", argument90 : false, argument91 : "stringValue38655", argument92 : 715, argument93 : "stringValue38657", argument94 : false) + field45018(argument2201: InputObject1740!): Object8710 @Directive35(argument89 : "stringValue38662", argument90 : false, argument91 : "stringValue38661", argument92 : 716, argument93 : "stringValue38663", argument94 : false) + field45033(argument2202: InputObject1741!): Object8713 @Directive35(argument89 : "stringValue38673", argument90 : false, argument91 : "stringValue38672", argument92 : 717, argument93 : "stringValue38674", argument94 : false) + field45036(argument2203: InputObject1742!): Object8714 @Directive35(argument89 : "stringValue38679", argument90 : false, argument91 : "stringValue38678", argument92 : 718, argument93 : "stringValue38680", argument94 : false) + field45041(argument2204: InputObject1743!): Object8716 @Directive35(argument89 : "stringValue38687", argument90 : false, argument91 : "stringValue38686", argument92 : 719, argument93 : "stringValue38688", argument94 : false) + field45043(argument2205: InputObject1744!): Object8138 @Directive35(argument89 : "stringValue38693", argument90 : false, argument91 : "stringValue38692", argument92 : 720, argument93 : "stringValue38694", argument94 : false) + field45044(argument2206: InputObject1745!): Object8717 @Directive35(argument89 : "stringValue38697", argument90 : false, argument91 : "stringValue38696", argument92 : 721, argument93 : "stringValue38698", argument94 : false) + field45158(argument2207: InputObject1746!): Object8729 @Directive35(argument89 : "stringValue38725", argument90 : false, argument91 : "stringValue38724", argument92 : 722, argument93 : "stringValue38726", argument94 : false) +} + +type Object8138 @Directive21(argument61 : "stringValue37372") @Directive44(argument97 : ["stringValue37371"]) { + field40053: [Object8139] +} + +type Object8139 @Directive21(argument61 : "stringValue37374") @Directive44(argument97 : ["stringValue37373"]) { + field40054: Scalar2 + field40055: String + field40056: String + field40057: String + field40058: String + field40059: String + field40060: String + field40061: Int + field40062: String + field40063: Int + field40064: Int + field40065: Float + field40066: Float + field40067: String + field40068: Float + field40069: String + field40070: Float + field40071: String + field40072: String + field40073: Boolean + field40074: Int + field40075: Int + field40076: Scalar2 + field40077: Object8140 + field41987: [Object8243] + field42003: Object8226 + field42004: String + field42005: String + field42006: [Object8244] + field42031: String + field42032: String + field42033: Float + field42034: String + field42035: [Object8248] + field42037: [String] + field42038: String + field42039: [Object8249] + field42044: Int + field42045: String + field42046: Int +} + +type Object814 @Directive22(argument62 : "stringValue4096") @Directive31 @Directive44(argument97 : ["stringValue4097", "stringValue4098"]) { + field4766: Object815 @Directive37(argument95 : "stringValue4099") + field4769: [Object816] @Directive37(argument95 : "stringValue4103") +} + +type Object8140 @Directive21(argument61 : "stringValue37376") @Directive44(argument97 : ["stringValue37375"]) { + field40078: Scalar2 + field40079: String + field40080: String + field40081: String + field40082: String + field40083: Int + field40084: Int + field40085: Int + field40086: Int @deprecated + field40087: Scalar2 @deprecated + field40088: Scalar2 + field40089: Scalar2 + field40090: String + field40091: Int + field40092: Int + field40093: Int + field40094: String + field40095: Float + field40096: Int + field40097: String + field40098: String + field40099: Int + field40100: String + field40101: String + field40102: Int + field40103: Int + field40104: String + field40105: Int + field40106: [Object8141] + field41284: [Object8195] + field41285: [Object8143] + field41286: Object8144 + field41287: Object8207 + field41298: Object8154 + field41299: [Object8208] + field41338: Int + field41339: [Object8208] + field41340: [Object8149] + field41341: [Object8149] + field41342: [Object8208] + field41343: [Object8149] + field41344: [Object8149] + field41345: Scalar2 + field41346: Scalar2 @deprecated + field41347: Object8212 + field41350: Float + field41351: Float + field41352: String + field41353: Boolean + field41354: String + field41355: String + field41356: String + field41357: String + field41358: Boolean + field41359: String + field41360: String + field41361: String @deprecated + field41362: String + field41363: String @deprecated + field41364: String @deprecated + field41365: String @deprecated + field41366: String + field41367: Boolean + field41368: Scalar2 + field41369: String + field41370: Float + field41371: String + field41372: String + field41373: Boolean + field41374: [Object8147] + field41375: [String] + field41376: [String] + field41377: [Int] + field41378: [Int] @deprecated + field41379: Float + field41380: String + field41381: Object8195 + field41382: Boolean + field41383: Boolean + field41384: Boolean + field41385: Object8213 + field41393: Int + field41394: String + field41395: String + field41396: Float + field41397: [Object8164] + field41398: Object8214 @deprecated + field41405: [Object8215] + field41412: [Object8149] + field41413: [Object8149] + field41414: Object8164 + field41415: [String] + field41416: [Object8197] + field41417: [Object8216] @deprecated + field41423: Boolean + field41424: Boolean + field41425: [Object8164] + field41426: Boolean + field41427: [Object8174] + field41428: [Object8217] @deprecated + field41436: [Object8191] @deprecated + field41437: Boolean + field41438: Float + field41439: Boolean + field41440: Boolean + field41441: Boolean @deprecated + field41442: Boolean + field41443: Boolean + field41444: Scalar2 + field41445: Int + field41446: Int + field41447: Boolean + field41448: [Object8149] + field41449: [Object8149] + field41450: [Object8149] + field41451: [Object8149] + field41452: Object8155 @deprecated + field41453: Object8181 + field41454: [Object8208] + field41455: [Object8208] + field41456: [Object8208] + field41457: [Object8208] + field41458: Boolean + field41459: Boolean + field41460: Int + field41461: [Object8186] + field41462: Boolean + field41463: Boolean + field41464: [Object8143] + field41465: Boolean + field41466: Boolean + field41467: String + field41468: Object8158 + field41469: [Object8214] + field41470: String + field41471: Object8218 + field41504: Boolean + field41505: Boolean + field41506: [Object8183] + field41507: Int + field41508: Int + field41509: [Object8221] + field41513: Float + field41514: Float + field41515: Object8149 + field41516: Boolean + field41517: [Object8198] + field41518: Object8198 + field41519: [Object8187] + field41520: [Object8196] + field41521: Boolean + field41522: Float + field41523: String + field41524: Object8195 + field41525: [Object8222] + field41590: Int + field41591: String + field41592: Boolean + field41593: [Object8208] + field41594: [Object8208] + field41595: String + field41596: Boolean + field41597: String + field41598: Scalar2 + field41599: String + field41600: String + field41601: Boolean + field41602: Boolean + field41603: Boolean + field41604: Object8222 + field41605: [Object8149] + field41606: [Object8149] + field41607: [Object8208] + field41608: Float + field41609: String + field41610: Boolean + field41611: String + field41612: Object8149 + field41613: Object8149 + field41614: [Object8149] + field41615: [Object8149] + field41616: [Object8149] + field41617: [Object8149] + field41618: [Object8169] + field41619: [Object8169] + field41620: Boolean + field41621: Object8225 + field41728: [Object8149] + field41729: Object8145 + field41730: Boolean + field41731: String + field41732: Boolean + field41733: String @deprecated + field41734: Object8171 + field41735: Boolean + field41736: Boolean + field41737: Int + field41738: Int + field41739: Scalar1 + field41740: Scalar1 + field41741: Object8149 + field41742: [Object8208] + field41743: [Object8208] + field41744: [Object8149] + field41745: [Object8208] + field41746: [Object8149] + field41747: [Object8208] + field41748: [Object8149] + field41749: [Object8208] + field41750: Object8195 + field41751: Boolean + field41752: Float + field41753: [Object8217] @deprecated + field41754: Boolean + field41755: Boolean + field41756: [Object8141] + field41757: Boolean + field41758: Object8217 @deprecated + field41759: [Object8217] @deprecated + field41760: String @deprecated + field41761: String + field41762: Boolean + field41763: [Object8217] @deprecated + field41764: Boolean + field41765: Float + field41766: String + field41767: Int + field41768: Object8226 + field41772: Object8227 + field41792: [Object8147] + field41793: [Object8183] + field41794: [Object8183] + field41795: Int + field41796: Object8141 + field41797: [Object8143] + field41798: [Object8183] + field41799: [Object8141] + field41800: String + field41801: [Object8228] + field41839: Float + field41840: Object8199 + field41841: Object8233 + field41886: [Object8197] + field41887: String + field41888: [Object8237] + field41895: Scalar2 + field41896: Boolean + field41897: Boolean + field41898: String + field41899: [Object8152] + field41900: Int + field41901: Boolean + field41902: String + field41903: [Object8208] + field41904: [Object8208] + field41905: [Object8208] + field41906: [Object8208] + field41907: [Object8208] + field41908: [Object8208] + field41909: [Object8183] + field41910: [Object8238] + field41953: [Object8238] + field41954: Float + field41955: String + field41956: String + field41957: String + field41958: Scalar2 + field41959: Object8155 + field41960: Int + field41961: Boolean + field41962: Boolean + field41963: Object8241 + field41971: Boolean + field41972: Boolean + field41973: [String] + field41974: Boolean + field41975: [Object8217] + field41976: [Scalar2] + field41977: Boolean + field41978: [Object8194] + field41979: Boolean + field41980: Int + field41981: String + field41982: Boolean + field41983: [Object8208] + field41984: Boolean + field41985: Boolean + field41986: String +} + +type Object8141 @Directive21(argument61 : "stringValue37378") @Directive44(argument97 : ["stringValue37377"]) { + field40107: Scalar2 + field40108: String + field40109: String + field40110: String + field40111: String + field40112: String + field40113: Scalar2 + field40114: Int + field40115: Int + field40116: [Scalar2] + field40117: Float + field40118: Int + field40119: Object8140 + field40120: [Object8142] + field40452: Scalar2 + field40453: Boolean + field40454: Boolean + field40455: Boolean + field40456: [Object8155] + field40457: String + field40458: Boolean + field40459: Int + field40460: String + field40461: Boolean + field40462: Int + field40463: Int + field40464: String + field40465: Int + field40466: String + field40467: String + field40468: Boolean + field40469: [Object8163] + field41094: Boolean + field41095: Scalar2 + field41096: Object8194 + field41139: Float + field41140: String + field41141: [Object8169] + field41142: [Object8169] + field41143: String + field41144: String + field41145: Boolean + field41146: Scalar2 + field41147: String + field41148: Scalar2 + field41149: Float + field41150: String + field41151: Boolean + field41152: [Object8155] + field41153: Scalar2 + field41154: Float + field41155: String + field41156: Object8197 + field41180: Boolean + field41181: Boolean + field41182: Boolean + field41183: Float + field41184: Int + field41185: Object8198 + field41195: Boolean + field41196: [Object8142] + field41197: String + field41198: Object8172 + field41199: Int + field41200: Boolean + field41201: Boolean + field41202: [String] + field41203: String + field41204: Object8174 + field41205: [Object8173] + field41206: String + field41207: String + field41208: String + field41209: Float + field41210: String + field41211: Int + field41212: Int + field41213: Int + field41214: Int + field41215: Int + field41216: String + field41217: String + field41218: Boolean + field41219: Boolean + field41220: Boolean + field41221: Boolean + field41222: [Object8169] + field41223: [Object8169] + field41224: Boolean + field41225: [Object8164] + field41226: [Scalar2] + field41227: Scalar2 + field41228: Object8155 + field41229: Object8199 + field41250: Float + field41251: Int + field41252: Int + field41253: Float + field41254: Object8199 + field41255: Object8206 + field41263: String + field41264: String + field41265: String + field41266: Boolean + field41267: Int + field41268: Int + field41269: String + field41270: Int + field41271: Boolean + field41272: Boolean + field41273: String + field41274: Object8149 + field41275: String + field41276: Scalar2 + field41277: Object8155 + field41278: Boolean + field41279: Int + field41280: Boolean + field41281: String + field41282: Int + field41283: Int +} + +type Object8142 @Directive21(argument61 : "stringValue37380") @Directive44(argument97 : ["stringValue37379"]) { + field40121: Scalar2 + field40122: String + field40123: String + field40124: String + field40125: Int @deprecated + field40126: String + field40127: String + field40128: Int @deprecated + field40129: Scalar2 + field40130: Scalar2 + field40131: Scalar2 + field40132: Object8143 + field40435: Object8141 + field40436: Object8145 + field40437: String + field40438: String + field40439: String + field40440: String + field40441: String + field40442: String + field40443: String + field40444: String + field40445: Object8145 + field40446: String + field40447: String + field40448: String + field40449: String + field40450: Int + field40451: Int +} + +type Object8143 @Directive21(argument61 : "stringValue37382") @Directive44(argument97 : ["stringValue37381"]) { + field40133: Scalar2 + field40134: String + field40135: String + field40136: String + field40137: String + field40138: Scalar2 + field40139: Scalar2 + field40140: String + field40141: Int + field40142: Float + field40143: Float + field40144: Int + field40145: Int + field40146: Scalar2 @deprecated + field40147: Scalar2 + field40148: Scalar2 + field40149: Scalar2 + field40150: Object8144 + field40264: Object8145 + field40265: Object8140 + field40266: Boolean + field40267: String + field40268: String + field40269: [Object8150] + field40296: [Object8151] + field40297: String + field40298: [String] + field40299: [String] + field40300: Object8150 + field40301: [Object8152] + field40319: [Object8152] + field40320: [Object8152] + field40321: [Object8152] + field40322: Float + field40323: Float + field40324: Object8154 + field40375: [Object8149] + field40376: [Object8149] + field40377: Float + field40378: String + field40379: String + field40380: String + field40381: String + field40382: [Object8151] + field40383: [Object8151] + field40384: [Int] + field40385: [Object8149] + field40386: Object8149 + field40387: Boolean + field40388: String + field40389: Object8150 + field40390: [Object8161] + field40400: [Object8152] + field40401: String + field40402: [Object8162] @deprecated + field40424: [Object8162] @deprecated + field40425: [Object8162] @deprecated + field40426: Object8162 + field40427: Object8162 + field40428: Scalar2 + field40429: Object8162 + field40430: Int + field40431: Int + field40432: Int + field40433: String + field40434: [Object8152] @deprecated +} + +type Object8144 @Directive21(argument61 : "stringValue37384") @Directive44(argument97 : ["stringValue37383"]) { + field40151: Scalar2 + field40152: String + field40153: String + field40154: String + field40155: String + field40156: Float + field40157: Float + field40158: Int + field40159: String + field40160: Int + field40161: String + field40162: String + field40163: [Object8143] + field40164: [Object8145] + field40197: [Object8140] + field40198: [Object8147] + field40217: Scalar2 + field40218: String + field40219: String + field40220: String + field40221: String + field40222: Boolean + field40223: String + field40224: Int + field40225: Int + field40226: String + field40227: [Object8149] + field40260: String + field40261: Boolean + field40262: String + field40263: String +} + +type Object8145 @Directive21(argument61 : "stringValue37386") @Directive44(argument97 : ["stringValue37385"]) { + field40165: Scalar2 + field40166: String + field40167: String + field40168: String + field40169: Float + field40170: Float + field40171: String + field40172: String + field40173: String + field40174: String + field40175: String + field40176: String + field40177: String + field40178: String + field40179: String + field40180: String + field40181: Scalar2 + field40182: [Object8146] + field40191: Object8144 + field40192: String + field40193: String + field40194: String + field40195: Scalar2 + field40196: Object8140 +} + +type Object8146 @Directive21(argument61 : "stringValue37388") @Directive44(argument97 : ["stringValue37387"]) { + field40183: Scalar2 + field40184: String + field40185: String + field40186: String + field40187: String + field40188: String + field40189: Scalar2 + field40190: Object8145 +} + +type Object8147 @Directive21(argument61 : "stringValue37390") @Directive44(argument97 : ["stringValue37389"]) { + field40199: Scalar2 + field40200: String + field40201: String + field40202: Scalar2 + field40203: Scalar2 + field40204: String + field40205: Scalar2 + field40206: Object8148 + field40215: Object8140 + field40216: Object8144 +} + +type Object8148 @Directive21(argument61 : "stringValue37392") @Directive44(argument97 : ["stringValue37391"]) { + field40207: Scalar2 + field40208: String + field40209: String + field40210: String + field40211: String + field40212: Int + field40213: Boolean + field40214: [Object8147] +} + +type Object8149 @Directive21(argument61 : "stringValue37394") @Directive44(argument97 : ["stringValue37393"]) { + field40228: Scalar2 + field40229: String + field40230: String + field40231: String + field40232: String + field40233: String + field40234: String + field40235: String + field40236: String + field40237: Int + field40238: [Int] + field40239: Int + field40240: String + field40241: String + field40242: Int + field40243: String + field40244: String + field40245: String + field40246: Int + field40247: Int + field40248: Int + field40249: String + field40250: String + field40251: String + field40252: String + field40253: String + field40254: String + field40255: Boolean + field40256: String + field40257: String + field40258: String + field40259: String +} + +type Object815 @Directive22(argument62 : "stringValue4102") @Directive31 @Directive44(argument97 : ["stringValue4100", "stringValue4101"]) { + field4767: Scalar3 + field4768: Scalar3 +} + +type Object8150 @Directive21(argument61 : "stringValue37396") @Directive44(argument97 : ["stringValue37395"]) { + field40270: Scalar2 + field40271: String + field40272: String + field40273: Scalar2 + field40274: String + field40275: String + field40276: String + field40277: String + field40278: String + field40279: String + field40280: String + field40281: String + field40282: String + field40283: String + field40284: Object8143 + field40285: [String] + field40286: [Object8151] + field40293: String + field40294: Scalar2 + field40295: [String] +} + +type Object8151 @Directive21(argument61 : "stringValue37398") @Directive44(argument97 : ["stringValue37397"]) { + field40287: Scalar2 + field40288: String + field40289: String + field40290: Scalar2 + field40291: String + field40292: String +} + +type Object8152 @Directive21(argument61 : "stringValue37400") @Directive44(argument97 : ["stringValue37399"]) { + field40302: Scalar2 + field40303: String + field40304: String + field40305: Scalar2 + field40306: String + field40307: Int + field40308: String + field40309: String + field40310: Object8143 + field40311: [Object8153] + field40318: [Object8149] +} + +type Object8153 @Directive21(argument61 : "stringValue37402") @Directive44(argument97 : ["stringValue37401"]) { + field40312: Scalar2 + field40313: String + field40314: String + field40315: Scalar2 + field40316: Int + field40317: Object8152 +} + +type Object8154 @Directive21(argument61 : "stringValue37404") @Directive44(argument97 : ["stringValue37403"]) { + field40325: Scalar2 + field40326: String + field40327: String + field40328: Int + field40329: Scalar2 + field40330: Object8155 + field40372: Object8160 +} + +type Object8155 @Directive21(argument61 : "stringValue37406") @Directive44(argument97 : ["stringValue37405"]) { + field40331: Scalar2 + field40332: String + field40333: String + field40334: [String] + field40335: String + field40336: String + field40337: String + field40338: String + field40339: String + field40340: [String] + field40341: String + field40342: Object8156 + field40349: String + field40350: Object8158 + field40354: Boolean + field40355: String + field40356: String + field40357: Boolean + field40358: String + field40359: String + field40360: String + field40361: Int + field40362: String + field40363: String + field40364: String + field40365: Object8159 + field40368: String + field40369: Boolean + field40370: String + field40371: Boolean +} + +type Object8156 @Directive21(argument61 : "stringValue37408") @Directive44(argument97 : ["stringValue37407"]) { + field40343: Scalar2 + field40344: [Object8157] +} + +type Object8157 @Directive21(argument61 : "stringValue37410") @Directive44(argument97 : ["stringValue37409"]) { + field40345: Scalar2 + field40346: Scalar2 + field40347: String + field40348: Scalar2 +} + +type Object8158 @Directive21(argument61 : "stringValue37412") @Directive44(argument97 : ["stringValue37411"]) { + field40351: Scalar2 + field40352: Boolean + field40353: Boolean +} + +type Object8159 @Directive21(argument61 : "stringValue37414") @Directive44(argument97 : ["stringValue37413"]) { + field40366: String + field40367: String +} + +type Object816 @Directive22(argument62 : "stringValue4104") @Directive31 @Directive44(argument97 : ["stringValue4105", "stringValue4106"]) { + field4770: String @Directive37(argument95 : "stringValue4107") + field4771: Enum229 @Directive37(argument95 : "stringValue4108") + field4772: Boolean +} + +type Object8160 @Directive21(argument61 : "stringValue37416") @Directive44(argument97 : ["stringValue37415"]) { + field40373: Scalar2 + field40374: Scalar2 +} + +type Object8161 @Directive21(argument61 : "stringValue37418") @Directive44(argument97 : ["stringValue37417"]) { + field40391: Scalar2 + field40392: Scalar2 + field40393: Scalar2 + field40394: String + field40395: String + field40396: String + field40397: String + field40398: String + field40399: String +} + +type Object8162 @Directive21(argument61 : "stringValue37420") @Directive44(argument97 : ["stringValue37419"]) { + field40403: Scalar2 + field40404: String + field40405: String + field40406: String + field40407: Scalar2 + field40408: String + field40409: Int + field40410: Int + field40411: Int + field40412: Int + field40413: Int + field40414: Int + field40415: Int + field40416: String + field40417: String + field40418: String + field40419: Object8143 @deprecated + field40420: Scalar2 + field40421: Object8140 + field40422: [Object8149] + field40423: [Object8149] +} + +type Object8163 @Directive21(argument61 : "stringValue37422") @Directive44(argument97 : ["stringValue37421"]) { + field40470: Scalar2 + field40471: String + field40472: String + field40473: String + field40474: Scalar2 + field40475: Scalar2 + field40476: Scalar2 + field40477: Object8155 + field40478: Object8140 + field40479: Object8141 + field40480: Object8164 +} + +type Object8164 @Directive21(argument61 : "stringValue37424") @Directive44(argument97 : ["stringValue37423"]) { + field40481: Scalar2 + field40482: Scalar2 + field40483: Scalar2 + field40484: Scalar2 + field40485: Scalar2 + field40486: Scalar2 + field40487: String + field40488: String + field40489: String + field40490: Object8140 + field40491: Object8165 + field40502: Object8155 + field40503: [String] + field40504: [String] + field40505: String + field40506: Object8166 + field41030: Object8154 + field41031: Boolean + field41032: Boolean + field41033: Boolean + field41034: Boolean + field41035: Boolean + field41036: [Object8191] + field41049: Object8191 + field41050: Scalar2 + field41051: String + field41052: Boolean + field41053: Boolean + field41054: String + field41055: Object8192 + field41071: [String] + field41072: [Scalar2] + field41073: [Scalar2] + field41074: Boolean + field41075: [Object8163] + field41076: [Object8141] + field41077: [Object8141] + field41078: [Scalar2] + field41079: Boolean + field41080: Object8193 + field41089: [Object8193] + field41090: Scalar2 + field41091: [Object8191] + field41092: Boolean + field41093: Boolean +} + +type Object8165 @Directive21(argument61 : "stringValue37426") @Directive44(argument97 : ["stringValue37425"]) { + field40492: Scalar2 + field40493: Scalar2 + field40494: String + field40495: String + field40496: String + field40497: String + field40498: String + field40499: String + field40500: String + field40501: Object8164 +} + +type Object8166 @Directive21(argument61 : "stringValue37428") @Directive44(argument97 : ["stringValue37427"]) { + field40507: Scalar2 + field40508: Boolean + field40509: Boolean + field40510: Object8167 + field40521: Boolean + field40522: Boolean + field40523: Boolean + field40524: Boolean + field40525: Object8155 + field40526: Boolean + field40527: Boolean + field40528: Boolean + field40529: Boolean + field40530: Boolean + field40531: Boolean + field40532: Boolean + field40533: Boolean + field40534: Boolean + field40535: Boolean + field40536: Boolean + field40537: Boolean + field40538: Boolean + field40539: Boolean + field40540: [Object8140] + field40541: Int + field40542: Boolean + field40543: [Object8140] + field40544: Boolean + field40545: [Object8168] + field40851: Boolean + field40852: Boolean + field40853: Boolean + field40854: Boolean + field40855: Boolean + field40856: [Object8164] + field40857: Object8180 + field40970: [String] + field40971: Boolean + field40972: String + field40973: [Object8140] + field40974: Object8187 + field40984: [Object8140] + field40985: [Object8140] + field40986: [Object8188] + field41000: [Object8168] + field41001: [Object8169] + field41002: [Object8169] + field41003: Object8189 + field41012: Boolean + field41013: [Object8140] + field41014: Object8187 + field41015: Boolean + field41016: Boolean + field41017: Boolean + field41018: Boolean + field41019: [Object8190] + field41029: Boolean +} + +type Object8167 @Directive21(argument61 : "stringValue37430") @Directive44(argument97 : ["stringValue37429"]) { + field40511: Scalar2 + field40512: Scalar2 + field40513: Scalar2 + field40514: Scalar2 + field40515: Int + field40516: String + field40517: String + field40518: String + field40519: Boolean + field40520: Boolean +} + +type Object8168 @Directive21(argument61 : "stringValue37432") @Directive44(argument97 : ["stringValue37431"]) { + field40546: Scalar2 + field40547: String + field40548: String + field40549: String + field40550: Scalar2 + field40551: Scalar2 + field40552: Scalar2 + field40553: String + field40554: String + field40555: String + field40556: String + field40557: String + field40558: Object8155 + field40559: Scalar2 + field40560: Object8169 + field40820: [Object8179] + field40830: Scalar2 + field40831: Scalar2 + field40832: Scalar2 + field40833: Boolean + field40834: Scalar2 + field40835: String + field40836: Scalar2 + field40837: Object8140 + field40838: String + field40839: String + field40840: Int + field40841: String + field40842: String + field40843: String + field40844: Boolean + field40845: Boolean + field40846: Boolean + field40847: Object8155 + field40848: Boolean + field40849: String + field40850: Scalar2 +} + +type Object8169 @Directive21(argument61 : "stringValue37434") @Directive44(argument97 : ["stringValue37433"]) { + field40561: Scalar2 + field40562: String + field40563: String + field40564: String + field40565: Scalar2 + field40566: Int + field40567: Int + field40568: Scalar2 + field40569: Scalar2 + field40570: Scalar2 + field40571: String + field40572: String + field40573: String + field40574: String + field40575: String + field40576: Float + field40577: Int + field40578: String + field40579: String + field40580: [Object8168] + field40581: Object8141 + field40582: Boolean + field40583: Boolean + field40584: Object8140 + field40585: Boolean + field40586: Boolean + field40587: Boolean + field40588: Boolean + field40589: Boolean + field40590: Boolean + field40591: Boolean + field40592: Boolean + field40593: Boolean + field40594: String + field40595: Boolean + field40596: String + field40597: String + field40598: String + field40599: String + field40600: Object8155 + field40601: [Object8170] + field40625: String + field40626: String + field40627: String + field40628: [Object8142] + field40629: Object8149 + field40630: String + field40631: String + field40632: Boolean + field40633: String + field40634: String + field40635: String + field40636: String + field40637: Scalar2 + field40638: String + field40639: Scalar2 + field40640: Int + field40641: Scalar2 + field40642: [Scalar2] + field40643: Scalar2 + field40644: Boolean + field40645: [Object8155] + field40646: [Object8155] + field40647: [Object8155] + field40648: Boolean + field40649: Boolean + field40650: Boolean @deprecated + field40651: Boolean + field40652: String + field40653: Object8166 + field40654: Boolean + field40655: Boolean + field40656: Int + field40657: String + field40658: String + field40659: [Object8170] + field40660: String + field40661: String + field40662: [String] + field40663: [Object8155] + field40664: Boolean + field40665: [Object8168] + field40666: Object8171 + field40678: Boolean + field40679: Boolean @deprecated + field40680: Boolean @deprecated + field40681: Boolean @deprecated + field40682: Boolean @deprecated + field40683: Int + field40684: Boolean + field40685: Boolean + field40686: Scalar1 + field40687: Scalar2 + field40688: Scalar2 + field40689: Int + field40690: Boolean + field40691: Boolean + field40692: String + field40693: String + field40694: [Object8170] + field40695: [Object8168] + field40696: [Object8155] + field40697: String + field40698: Float + field40699: Object8172 + field40725: [Scalar2] + field40726: [Object8170] + field40727: [Object8173] + field40760: Scalar2 + field40761: Object8141 + field40762: String + field40763: Object8168 + field40764: String + field40765: String + field40766: Object8175 + field40770: Int + field40771: Scalar2 + field40772: [String] + field40773: String + field40774: Object8176 + field40803: Boolean + field40804: [Object8172] + field40805: String + field40806: Object8176 + field40807: String + field40808: Boolean + field40809: Int + field40810: [Object8168] + field40811: [Object8168] + field40812: [Object8168] + field40813: String + field40814: String + field40815: String + field40816: String + field40817: Boolean + field40818: String + field40819: String +} + +type Object817 @Directive22(argument62 : "stringValue4112") @Directive31 @Directive44(argument97 : ["stringValue4113", "stringValue4114"]) { + field4773: String + field4774: String +} + +type Object8170 @Directive21(argument61 : "stringValue37436") @Directive44(argument97 : ["stringValue37435"]) { + field40602: Scalar2 + field40603: String + field40604: String + field40605: String + field40606: Scalar2 + field40607: Scalar2 + field40608: String + field40609: String + field40610: String + field40611: Int + field40612: Scalar2 + field40613: Object8142 + field40614: String + field40615: Object8169 + field40616: String + field40617: String + field40618: String + field40619: Int + field40620: Boolean + field40621: Boolean + field40622: Boolean + field40623: Boolean + field40624: Boolean +} + +type Object8171 @Directive21(argument61 : "stringValue37438") @Directive44(argument97 : ["stringValue37437"]) { + field40667: String + field40668: Object8140 + field40669: Object8169 + field40670: Boolean + field40671: Int + field40672: String + field40673: String + field40674: Int + field40675: Boolean + field40676: Boolean + field40677: Boolean +} + +type Object8172 @Directive21(argument61 : "stringValue37440") @Directive44(argument97 : ["stringValue37439"]) { + field40700: Scalar2 + field40701: String + field40702: String + field40703: String + field40704: Scalar2 + field40705: Scalar2 + field40706: Int + field40707: Int + field40708: Int + field40709: Scalar2 + field40710: Scalar2 + field40711: Scalar2 + field40712: String + field40713: Int + field40714: Int + field40715: Int + field40716: Boolean + field40717: String + field40718: Object8140 + field40719: Object8155 + field40720: String + field40721: String + field40722: Scalar2 + field40723: Boolean + field40724: String +} + +type Object8173 @Directive21(argument61 : "stringValue37442") @Directive44(argument97 : ["stringValue37441"]) { + field40728: Scalar2 + field40729: Scalar2 + field40730: Object8141 + field40731: Object8169 + field40732: Scalar2 + field40733: String + field40734: Object8172 + field40735: String + field40736: String + field40737: String + field40738: Scalar2 + field40739: Object8174 +} + +type Object8174 @Directive21(argument61 : "stringValue37444") @Directive44(argument97 : ["stringValue37443"]) { + field40740: Scalar2 + field40741: String + field40742: String + field40743: String + field40744: Scalar2 + field40745: String + field40746: Scalar2 + field40747: Scalar2 + field40748: [Object8173] + field40749: Object8155 + field40750: Object8140 + field40751: Object8141 + field40752: String + field40753: [Scalar2] + field40754: [Scalar2] + field40755: [Scalar2] + field40756: Int + field40757: String + field40758: Object8140 + field40759: Object8173 +} + +type Object8175 @Directive21(argument61 : "stringValue37446") @Directive44(argument97 : ["stringValue37445"]) { + field40767: Float + field40768: String + field40769: String +} + +type Object8176 @Directive21(argument61 : "stringValue37448") @Directive44(argument97 : ["stringValue37447"]) { + field40775: Object8177 + field40779: Object8177 + field40780: Object8177 + field40781: Object8177 + field40782: Object8177 + field40783: Object8177 + field40784: Object8177 + field40785: Object8177 + field40786: String + field40787: String + field40788: Float + field40789: String + field40790: Float + field40791: Float + field40792: Object8177 + field40793: Object8177 + field40794: Object8177 + field40795: Object8177 + field40796: Object8177 + field40797: Object8177 + field40798: Object8177 + field40799: Object8178 +} + +type Object8177 @Directive21(argument61 : "stringValue37450") @Directive44(argument97 : ["stringValue37449"]) { + field40776: Scalar2 + field40777: Scalar2 + field40778: Scalar2 +} + +type Object8178 @Directive21(argument61 : "stringValue37452") @Directive44(argument97 : ["stringValue37451"]) { + field40800: Int + field40801: Int + field40802: Int +} + +type Object8179 @Directive21(argument61 : "stringValue37454") @Directive44(argument97 : ["stringValue37453"]) { + field40821: Scalar2 + field40822: Scalar2 + field40823: Int + field40824: Boolean + field40825: Boolean + field40826: Scalar2 + field40827: Scalar2 + field40828: String + field40829: String +} + +type Object818 implements Interface5 @Directive22(argument62 : "stringValue4115") @Directive31 @Directive44(argument97 : ["stringValue4116", "stringValue4117"]) { + field4775: [String] + field4776: Interface3 + field76: String + field77: String + field78: String +} + +type Object8180 @Directive21(argument61 : "stringValue37456") @Directive44(argument97 : ["stringValue37455"]) { + field40858: [Object8181] + field40966: Int + field40967: Int + field40968: Int + field40969: Int +} + +type Object8181 @Directive21(argument61 : "stringValue37458") @Directive44(argument97 : ["stringValue37457"]) { + field40859: Scalar2 + field40860: String + field40861: String + field40862: Scalar2 + field40863: Int + field40864: String + field40865: String + field40866: String + field40867: String + field40868: String + field40869: String + field40870: Scalar2 + field40871: String + field40872: Int + field40873: Scalar2 + field40874: String + field40875: Int @deprecated + field40876: String + field40877: Float + field40878: Int + field40879: Int + field40880: Float + field40881: Float + field40882: Float + field40883: Float + field40884: Int + field40885: Int + field40886: Int + field40887: Int + field40888: Scalar2 + field40889: Boolean + field40890: [Scalar2] + field40891: Object8140 + field40892: Object8155 + field40893: Object8144 + field40894: Object8155 + field40895: [Object8182] + field40902: [Object8140] + field40903: String + field40904: [Object8183] + field40916: Scalar2 + field40917: Scalar2 + field40918: [Int] + field40919: [Int] + field40920: String + field40921: String + field40922: [Object8184] + field40945: [Object8184] + field40946: [Object8185] + field40947: String + field40948: [Object8184] + field40949: [Object8184] + field40950: Int + field40951: Int + field40952: Int + field40953: Object8155 + field40954: Scalar2 + field40955: Scalar2 + field40956: [Object8186] +} + +type Object8182 @Directive21(argument61 : "stringValue37460") @Directive44(argument97 : ["stringValue37459"]) { + field40896: Scalar2 + field40897: String + field40898: String + field40899: Scalar2 + field40900: String + field40901: String +} + +type Object8183 @Directive21(argument61 : "stringValue37462") @Directive44(argument97 : ["stringValue37461"]) { + field40905: Scalar2 + field40906: String + field40907: String + field40908: Scalar2 + field40909: Int + field40910: Int + field40911: Int + field40912: Scalar2 + field40913: String + field40914: Object8155 + field40915: Object8140 +} + +type Object8184 @Directive21(argument61 : "stringValue37464") @Directive44(argument97 : ["stringValue37463"]) { + field40923: Scalar2 + field40924: String + field40925: String + field40926: Scalar2 + field40927: Scalar2 + field40928: Scalar2 + field40929: String + field40930: String + field40931: String + field40932: String + field40933: Boolean + field40934: Object8181 + field40935: Object8185 + field40944: Object8155 +} + +type Object8185 @Directive21(argument61 : "stringValue37466") @Directive44(argument97 : ["stringValue37465"]) { + field40936: Scalar2 + field40937: String + field40938: String + field40939: Int + field40940: String + field40941: String + field40942: String + field40943: String +} + +type Object8186 @Directive21(argument61 : "stringValue37468") @Directive44(argument97 : ["stringValue37467"]) { + field40957: Int + field40958: [String] @deprecated + field40959: String + field40960: String @deprecated + field40961: String + field40962: String @deprecated + field40963: String + field40964: Boolean + field40965: Boolean +} + +type Object8187 @Directive21(argument61 : "stringValue37470") @Directive44(argument97 : ["stringValue37469"]) { + field40975: Scalar2 + field40976: String + field40977: String + field40978: String + field40979: Scalar2 + field40980: Scalar2 + field40981: Scalar2 + field40982: String + field40983: Object8155 +} + +type Object8188 @Directive21(argument61 : "stringValue37472") @Directive44(argument97 : ["stringValue37471"]) { + field40987: Scalar2 + field40988: Scalar2 + field40989: String + field40990: String + field40991: Scalar2 + field40992: Scalar2 + field40993: String + field40994: String + field40995: String + field40996: [String] + field40997: String + field40998: Object8155 + field40999: Object8166 +} + +type Object8189 @Directive21(argument61 : "stringValue37474") @Directive44(argument97 : ["stringValue37473"]) { + field41004: Scalar2 + field41005: Scalar2 + field41006: Scalar2 + field41007: Scalar2 + field41008: String + field41009: String + field41010: String + field41011: [Object8164] +} + +type Object819 implements Interface55 & Interface56 & Interface57 @Directive20(argument58 : "stringValue4132", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4131") @Directive31 @Directive44(argument97 : ["stringValue4133", "stringValue4134"]) { + field4777: String + field4778: String + field4779: Boolean + field4780: Enum230 + field4781: Interface6 + field4782: Interface3 +} + +type Object8190 @Directive21(argument61 : "stringValue37476") @Directive44(argument97 : ["stringValue37475"]) { + field41020: Scalar2 + field41021: Scalar2 + field41022: Scalar2 + field41023: String + field41024: String + field41025: String + field41026: String + field41027: String + field41028: String +} + +type Object8191 @Directive21(argument61 : "stringValue37478") @Directive44(argument97 : ["stringValue37477"]) { + field41037: Scalar2 + field41038: String + field41039: String + field41040: String + field41041: String + field41042: Scalar2 + field41043: Object8164 + field41044: String @deprecated + field41045: Int + field41046: Int + field41047: Scalar2 + field41048: [Object8164] +} + +type Object8192 @Directive21(argument61 : "stringValue37480") @Directive44(argument97 : ["stringValue37479"]) { + field41056: Boolean + field41057: Boolean + field41058: Int + field41059: Int + field41060: Int + field41061: Int + field41062: Int + field41063: Int + field41064: Boolean + field41065: Boolean + field41066: Boolean + field41067: Boolean + field41068: Boolean + field41069: Boolean + field41070: Int +} + +type Object8193 @Directive21(argument61 : "stringValue37482") @Directive44(argument97 : ["stringValue37481"]) { + field41081: Scalar2 + field41082: Scalar2 + field41083: String + field41084: String + field41085: String + field41086: String + field41087: String + field41088: String +} + +type Object8194 @Directive21(argument61 : "stringValue37484") @Directive44(argument97 : ["stringValue37483"]) { + field41097: Scalar2 + field41098: Scalar2 + field41099: Int + field41100: String + field41101: String + field41102: String + field41103: String + field41104: Object8140 + field41105: [Object8195] + field41132: Object8195 + field41133: Object8195 + field41134: String + field41135: [Object8149] + field41136: [Object8149] + field41137: Boolean + field41138: Object8149 +} + +type Object8195 @Directive21(argument61 : "stringValue37486") @Directive44(argument97 : ["stringValue37485"]) { + field41106: Scalar2 + field41107: String + field41108: String + field41109: String + field41110: Int + field41111: String + field41112: String + field41113: String + field41114: String + field41115: String + field41116: String + field41117: String + field41118: String + field41119: String + field41120: String + field41121: Object8140 + field41122: Scalar2 + field41123: Boolean + field41124: String + field41125: String + field41126: [Object8187] + field41127: [Object8196] + field41131: Scalar2 +} + +type Object8196 @Directive21(argument61 : "stringValue37488") @Directive44(argument97 : ["stringValue37487"]) { + field41128: Int + field41129: String + field41130: Boolean +} + +type Object8197 @Directive21(argument61 : "stringValue37490") @Directive44(argument97 : ["stringValue37489"]) { + field41157: Scalar2 + field41158: String + field41159: String + field41160: String + field41161: Scalar2 + field41162: String + field41163: String + field41164: Int + field41165: Int + field41166: Int + field41167: String + field41168: String + field41169: String + field41170: Boolean + field41171: String + field41172: Int + field41173: Int + field41174: [String] + field41175: [Int] + field41176: [Object8141] + field41177: Int + field41178: [Object8141] + field41179: Object8140 +} + +type Object8198 @Directive21(argument61 : "stringValue37492") @Directive44(argument97 : ["stringValue37491"]) { + field41186: Scalar2 + field41187: String + field41188: String + field41189: String + field41190: Scalar2 + field41191: String + field41192: String + field41193: Float + field41194: String +} + +type Object8199 @Directive21(argument61 : "stringValue37494") @Directive44(argument97 : ["stringValue37493"]) { + field41230: Object8200 + field41235: Object8201 + field41237: Object8202 + field41243: Object8203 + field41246: Object8204 +} + +type Object82 @Directive21(argument61 : "stringValue333") @Directive44(argument97 : ["stringValue332"]) { + field544: String + field545: String + field546: Enum44 + field547: String + field548: String + field549: String + field550: String + field551: String + field552: String + field553: [String!] +} + +type Object820 implements Interface58 & Interface59 & Interface60 @Directive22(argument62 : "stringValue4147") @Directive31 @Directive44(argument97 : ["stringValue4148", "stringValue4149"]) { + field4783: String + field4784: String + field4785: String + field4786: Boolean + field4787: Enum231 + field4788: Object450 + field4789: Object450 + field4790: Enum10 + field4791: Interface3 +} + +type Object8200 @Directive21(argument61 : "stringValue37496") @Directive44(argument97 : ["stringValue37495"]) { + field41231: Scalar2 + field41232: Scalar2 + field41233: Scalar2 + field41234: Scalar2 +} + +type Object8201 @Directive21(argument61 : "stringValue37498") @Directive44(argument97 : ["stringValue37497"]) { + field41236: Scalar2 +} + +type Object8202 @Directive21(argument61 : "stringValue37500") @Directive44(argument97 : ["stringValue37499"]) { + field41238: Int + field41239: Boolean + field41240: String + field41241: String + field41242: String +} + +type Object8203 @Directive21(argument61 : "stringValue37502") @Directive44(argument97 : ["stringValue37501"]) { + field41244: Int + field41245: Int +} + +type Object8204 @Directive21(argument61 : "stringValue37504") @Directive44(argument97 : ["stringValue37503"]) { + field41247: [Object8205] +} + +type Object8205 @Directive21(argument61 : "stringValue37506") @Directive44(argument97 : ["stringValue37505"]) { + field41248: Int + field41249: Int +} + +type Object8206 @Directive21(argument61 : "stringValue37508") @Directive44(argument97 : ["stringValue37507"]) { + field41256: Scalar2 + field41257: String + field41258: String + field41259: Scalar2 + field41260: String + field41261: String + field41262: Object8141 +} + +type Object8207 @Directive21(argument61 : "stringValue37510") @Directive44(argument97 : ["stringValue37509"]) { + field41288: Scalar2 + field41289: String + field41290: String + field41291: String + field41292: Float + field41293: Int + field41294: Scalar2 + field41295: Object8140 + field41296: Float + field41297: Float +} + +type Object8208 @Directive21(argument61 : "stringValue37512") @Directive44(argument97 : ["stringValue37511"]) { + field41300: Scalar2 + field41301: Object8149 + field41302: Object8209 +} + +type Object8209 @Directive21(argument61 : "stringValue37514") @Directive44(argument97 : ["stringValue37513"]) { + field41303: Scalar2 + field41304: String + field41305: String + field41306: String + field41307: Boolean + field41308: String + field41309: String + field41310: String + field41311: String + field41312: String + field41313: String + field41314: String + field41315: String + field41316: String + field41317: String + field41318: String + field41319: String + field41320: String + field41321: String + field41322: String + field41323: Scalar1 + field41324: Scalar1 + field41325: [Object8210] + field41335: [Object8210] + field41336: String + field41337: Float +} + +type Object821 implements Interface61 & Interface62 & Interface63 @Directive22(argument62 : "stringValue4165") @Directive31 @Directive44(argument97 : ["stringValue4166", "stringValue4167"]) { + field4792: String + field4793: String + field4794: Boolean + field4795: Enum10 + field4796: Enum232 + field4797: Enum233 + field4798: Interface3 +} + +type Object8210 @Directive21(argument61 : "stringValue37516") @Directive44(argument97 : ["stringValue37515"]) { + field41326: String + field41327: [Object8211] + field41334: Object8211 +} + +type Object8211 @Directive21(argument61 : "stringValue37518") @Directive44(argument97 : ["stringValue37517"]) { + field41328: String + field41329: Scalar2 + field41330: String + field41331: String + field41332: String + field41333: String +} + +type Object8212 @Directive21(argument61 : "stringValue37520") @Directive44(argument97 : ["stringValue37519"]) { + field41348: String + field41349: Boolean +} + +type Object8213 @Directive21(argument61 : "stringValue37522") @Directive44(argument97 : ["stringValue37521"]) { + field41386: String + field41387: String + field41388: String + field41389: String + field41390: String + field41391: String + field41392: Int +} + +type Object8214 @Directive21(argument61 : "stringValue37524") @Directive44(argument97 : ["stringValue37523"]) { + field41399: Scalar2 + field41400: Scalar2 + field41401: Scalar1 + field41402: String + field41403: Scalar1 + field41404: Scalar1 +} + +type Object8215 @Directive21(argument61 : "stringValue37526") @Directive44(argument97 : ["stringValue37525"]) { + field41406: Scalar2 + field41407: Scalar2 + field41408: Scalar2 + field41409: Int + field41410: String + field41411: String +} + +type Object8216 @Directive21(argument61 : "stringValue37528") @Directive44(argument97 : ["stringValue37527"]) { + field41418: Scalar2 + field41419: String + field41420: String + field41421: String + field41422: String +} + +type Object8217 @Directive21(argument61 : "stringValue37530") @Directive44(argument97 : ["stringValue37529"]) { + field41429: Scalar2 + field41430: String + field41431: Scalar2 + field41432: String + field41433: String + field41434: Float + field41435: String +} + +type Object8218 @Directive21(argument61 : "stringValue37532") @Directive44(argument97 : ["stringValue37531"]) { + field41472: [Object8219] + field41476: [Object8219] + field41477: [Object8219] + field41478: [Object8219] + field41479: [Object8219] + field41480: [Object8219] + field41481: [Object8219] + field41482: [Object8219] + field41483: [Object8219] + field41484: [Object8219] @deprecated + field41485: [Object8219] + field41486: [Object8219] + field41487: [Object8219] + field41488: [Object8219] + field41489: [Object8219] + field41490: [Object8219] + field41491: [Object8219] + field41492: [Object8219] + field41493: [Object8219] + field41494: [Object8219] + field41495: [Object8219] + field41496: [Object8219] + field41497: [Object8219] + field41498: [Object8219] + field41499: [Object8219] + field41500: [Object8219] + field41501: [Object8219] + field41502: [Object8219] + field41503: [Object8219] +} + +type Object8219 @Directive21(argument61 : "stringValue37534") @Directive44(argument97 : ["stringValue37533"]) { + field41473: [Object8220] +} + +type Object822 implements Interface64 & Interface65 & Interface66 @Directive20(argument58 : "stringValue4186", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4185") @Directive31 @Directive44(argument97 : ["stringValue4187", "stringValue4188"]) { + field4799: String + field4800: String + field4801: String + field4802: String + field4803: Boolean + field4804: Enum10 + field4805: Enum234 + field4806: Enum235 + field4807: Interface3 + field4808: Interface3 + field4809: Enum236 + field4810: Int +} + +type Object8220 @Directive21(argument61 : "stringValue37536") @Directive44(argument97 : ["stringValue37535"]) { + field41474: String + field41475: String +} + +type Object8221 @Directive21(argument61 : "stringValue37538") @Directive44(argument97 : ["stringValue37537"]) { + field41510: Int + field41511: [String] + field41512: Boolean +} + +type Object8222 @Directive21(argument61 : "stringValue37540") @Directive44(argument97 : ["stringValue37539"]) { + field41526: Scalar2 + field41527: String + field41528: String + field41529: Scalar2 + field41530: Scalar2 + field41531: Scalar2 + field41532: Scalar2 + field41533: Object8140 + field41534: Object8155 + field41535: Object8155 + field41536: Object8144 + field41537: Int + field41538: String + field41539: String + field41540: String + field41541: String + field41542: String + field41543: String + field41544: String + field41545: Int + field41546: String + field41547: String + field41548: Boolean + field41549: String + field41550: String + field41551: String + field41552: Object8223 + field41571: [Object8224] + field41586: [Object8161] + field41587: String + field41588: Boolean + field41589: Boolean +} + +type Object8223 @Directive21(argument61 : "stringValue37542") @Directive44(argument97 : ["stringValue37541"]) { + field41553: Scalar2 + field41554: Scalar2 + field41555: Scalar2 + field41556: String + field41557: String + field41558: String + field41559: String + field41560: String + field41561: String + field41562: String + field41563: String + field41564: String + field41565: String + field41566: String + field41567: String + field41568: String + field41569: String + field41570: String +} + +type Object8224 @Directive21(argument61 : "stringValue37544") @Directive44(argument97 : ["stringValue37543"]) { + field41572: Scalar2 + field41573: Scalar2 + field41574: Scalar2 + field41575: String + field41576: String + field41577: String + field41578: String + field41579: String + field41580: String + field41581: String + field41582: String + field41583: String + field41584: String + field41585: String +} + +type Object8225 @Directive21(argument61 : "stringValue37546") @Directive44(argument97 : ["stringValue37545"]) { + field41622: Boolean @deprecated + field41623: Boolean @deprecated + field41624: Boolean + field41625: Boolean @deprecated + field41626: Boolean + field41627: Boolean + field41628: Boolean + field41629: Boolean + field41630: Boolean @deprecated + field41631: Boolean @deprecated + field41632: Boolean @deprecated + field41633: Boolean @deprecated + field41634: Boolean @deprecated + field41635: Boolean @deprecated + field41636: Boolean @deprecated + field41637: Boolean + field41638: Boolean @deprecated + field41639: Boolean @deprecated + field41640: Boolean + field41641: Boolean + field41642: Boolean + field41643: Int + field41644: Int @deprecated + field41645: Int + field41646: Int + field41647: Int @deprecated + field41648: Int @deprecated + field41649: Int @deprecated + field41650: Boolean @deprecated + field41651: Boolean @deprecated + field41652: Int @deprecated + field41653: Boolean @deprecated + field41654: Boolean @deprecated + field41655: Boolean @deprecated + field41656: Int + field41657: Int @deprecated + field41658: Boolean @deprecated + field41659: Int + field41660: Boolean + field41661: Boolean @deprecated + field41662: Int + field41663: Int + field41664: Int + field41665: Int + field41666: Int + field41667: Int + field41668: Int + field41669: Boolean + field41670: Boolean + field41671: Boolean + field41672: Boolean + field41673: Boolean + field41674: Boolean + field41675: Boolean + field41676: Boolean + field41677: Boolean + field41678: Boolean + field41679: Int + field41680: Int @deprecated + field41681: Int + field41682: Int + field41683: Boolean + field41684: Boolean @deprecated + field41685: Int @deprecated + field41686: Int @deprecated + field41687: Int + field41688: Boolean + field41689: Int + field41690: Int + field41691: Int + field41692: Int + field41693: Int + field41694: Int + field41695: Int + field41696: Int + field41697: Int + field41698: Int + field41699: Boolean + field41700: Boolean + field41701: Boolean + field41702: Boolean + field41703: Boolean + field41704: Boolean + field41705: Boolean + field41706: Boolean + field41707: Boolean + field41708: Boolean + field41709: Boolean + field41710: Boolean + field41711: Boolean + field41712: Boolean + field41713: Boolean + field41714: Boolean + field41715: Boolean + field41716: Boolean + field41717: Int + field41718: Boolean + field41719: Boolean + field41720: Boolean + field41721: Boolean + field41722: Int + field41723: Boolean + field41724: Boolean + field41725: Boolean + field41726: Boolean + field41727: Int +} + +type Object8226 @Directive21(argument61 : "stringValue37548") @Directive44(argument97 : ["stringValue37547"]) { + field41769: String + field41770: String + field41771: String +} + +type Object8227 @Directive21(argument61 : "stringValue37550") @Directive44(argument97 : ["stringValue37549"]) { + field41773: Boolean + field41774: Int + field41775: Float + field41776: Boolean + field41777: Int + field41778: Int + field41779: Int + field41780: Boolean + field41781: Boolean + field41782: Float + field41783: Float + field41784: Float + field41785: Float + field41786: Boolean + field41787: Scalar1 + field41788: Scalar1 + field41789: Float + field41790: Float + field41791: String +} + +type Object8228 @Directive21(argument61 : "stringValue37552") @Directive44(argument97 : ["stringValue37551"]) { + field41802: Scalar2 + field41803: String + field41804: Scalar2 + field41805: String + field41806: String + field41807: String + field41808: [Object8229] + field41815: Object8140 + field41816: Object8203 + field41817: Object8204 + field41818: Object8202 + field41819: [Object8230] + field41825: [Object8231] + field41832: Object8141 + field41833: Object8201 + field41834: [Object8232] +} + +type Object8229 @Directive21(argument61 : "stringValue37554") @Directive44(argument97 : ["stringValue37553"]) { + field41809: Scalar2 + field41810: Scalar2 + field41811: Int + field41812: Int + field41813: Object8228 + field41814: Object8205 +} + +type Object823 implements Interface67 & Interface68 & Interface69 @Directive22(argument62 : "stringValue4208") @Directive31 @Directive44(argument97 : ["stringValue4209", "stringValue4210"]) { + field4811: String + field4812: String + field4813: Enum10 + field4814: Enum237 + field4815: Enum238 + field4816: Interface3 + field4817: Enum236 + field4818: Int +} + +type Object8230 @Directive21(argument61 : "stringValue37556") @Directive44(argument97 : ["stringValue37555"]) { + field41820: Scalar2 + field41821: Scalar2 + field41822: String + field41823: Scalar2 + field41824: Object8228 +} + +type Object8231 @Directive21(argument61 : "stringValue37558") @Directive44(argument97 : ["stringValue37557"]) { + field41826: Scalar2 + field41827: Scalar2 + field41828: Int + field41829: String + field41830: String + field41831: Object8228 +} + +type Object8232 @Directive21(argument61 : "stringValue37560") @Directive44(argument97 : ["stringValue37559"]) { + field41835: Scalar2 + field41836: Scalar2 + field41837: Scalar2 + field41838: Object8228 +} + +type Object8233 @Directive21(argument61 : "stringValue37562") @Directive44(argument97 : ["stringValue37561"]) { + field41842: Scalar2 + field41843: Scalar2 + field41844: Scalar2 + field41845: Scalar2 + field41846: Scalar2 + field41847: String + field41848: String + field41849: Object8234 + field41874: Object8235 + field41879: Object8236 + field41884: Object8236 + field41885: Object8236 +} + +type Object8234 @Directive21(argument61 : "stringValue37564") @Directive44(argument97 : ["stringValue37563"]) { + field41850: Float + field41851: Float + field41852: Float + field41853: Float + field41854: Float + field41855: Float + field41856: Float + field41857: Float + field41858: Float + field41859: Float + field41860: Float + field41861: Float + field41862: Float + field41863: Float + field41864: Float + field41865: Float + field41866: Float + field41867: Float + field41868: Float + field41869: Float + field41870: Float + field41871: Float + field41872: Float + field41873: Float +} + +type Object8235 @Directive21(argument61 : "stringValue37566") @Directive44(argument97 : ["stringValue37565"]) { + field41875: Float + field41876: Float + field41877: Float + field41878: Float +} + +type Object8236 @Directive21(argument61 : "stringValue37568") @Directive44(argument97 : ["stringValue37567"]) { + field41880: Float + field41881: Float + field41882: Float + field41883: Float +} + +type Object8237 @Directive21(argument61 : "stringValue37570") @Directive44(argument97 : ["stringValue37569"]) { + field41889: Scalar2 + field41890: Scalar2 + field41891: Scalar2 + field41892: Int + field41893: Boolean + field41894: Int +} + +type Object8238 @Directive21(argument61 : "stringValue37572") @Directive44(argument97 : ["stringValue37571"]) { + field41911: Scalar2 + field41912: String + field41913: String + field41914: String + field41915: Scalar2 + field41916: Scalar2 + field41917: Scalar2 + field41918: Scalar2 + field41919: Scalar2 + field41920: Scalar2 + field41921: String + field41922: String + field41923: String + field41924: String + field41925: String + field41926: String + field41927: Object8140 + field41928: Boolean + field41929: [Object8239] + field41939: [Object8240] + field41950: String + field41951: Object8240 + field41952: Scalar1 +} + +type Object8239 @Directive21(argument61 : "stringValue37574") @Directive44(argument97 : ["stringValue37573"]) { + field41930: Scalar2 + field41931: String + field41932: String + field41933: String + field41934: String + field41935: String + field41936: String + field41937: String + field41938: String +} + +type Object824 @Directive22(argument62 : "stringValue4211") @Directive31 @Directive44(argument97 : ["stringValue4212", "stringValue4213"]) { + field4819: [Object825] +} + +type Object8240 @Directive21(argument61 : "stringValue37576") @Directive44(argument97 : ["stringValue37575"]) { + field41940: Scalar2 + field41941: String + field41942: String + field41943: String + field41944: Scalar2 + field41945: Scalar2 + field41946: String + field41947: String + field41948: Object8238 + field41949: String +} + +type Object8241 @Directive21(argument61 : "stringValue37578") @Directive44(argument97 : ["stringValue37577"]) { + field41964: Object8242 +} + +type Object8242 @Directive21(argument61 : "stringValue37580") @Directive44(argument97 : ["stringValue37579"]) { + field41965: Int + field41966: Int + field41967: Boolean + field41968: String + field41969: String + field41970: Int +} + +type Object8243 @Directive21(argument61 : "stringValue37582") @Directive44(argument97 : ["stringValue37581"]) { + field41988: Scalar2 + field41989: String + field41990: String + field41991: Scalar2 + field41992: Object8143 + field41993: String + field41994: String + field41995: String + field41996: String + field41997: String + field41998: String + field41999: String + field42000: String + field42001: String + field42002: String +} + +type Object8244 @Directive21(argument61 : "stringValue37584") @Directive44(argument97 : ["stringValue37583"]) { + field42007: String + field42008: String + field42009: Object8245 + field42016: String + field42017: [Object8246] + field42021: Object8247 + field42030: String +} + +type Object8245 @Directive21(argument61 : "stringValue37586") @Directive44(argument97 : ["stringValue37585"]) { + field42010: String! + field42011: Enum1993! + field42012: Object2161 + field42013: String + field42014: Enum1994 + field42015: Boolean +} + +type Object8246 @Directive21(argument61 : "stringValue37590") @Directive44(argument97 : ["stringValue37589"]) { + field42018: String + field42019: String + field42020: Enum1995 +} + +type Object8247 @Directive21(argument61 : "stringValue37593") @Directive44(argument97 : ["stringValue37592"]) { + field42022: String! + field42023: String + field42024: String + field42025: Object8245! + field42026: String + field42027: Object8245 + field42028: String + field42029: Scalar2 +} + +type Object8248 @Directive21(argument61 : "stringValue37595") @Directive44(argument97 : ["stringValue37594"]) { + field42036: Enum1996 +} + +type Object8249 @Directive21(argument61 : "stringValue37598") @Directive44(argument97 : ["stringValue37597"]) { + field42040: String + field42041: [String] + field42042: [String] + field42043: String +} + +type Object825 implements Interface70 & Interface71 & Interface72 @Directive22(argument62 : "stringValue4226") @Directive31 @Directive44(argument97 : ["stringValue4227", "stringValue4228"]) { + field2508: Boolean + field2511: String + field4820: Enum239 + field4821: Boolean + field4822: Interface3 + field4823: Object452 + field76: String + field77: String +} + +type Object8250 @Directive21(argument61 : "stringValue37604") @Directive44(argument97 : ["stringValue37603"]) { + field42048: Scalar2! + field42049: Scalar2! + field42050: String! + field42051: String! +} + +type Object8251 @Directive21(argument61 : "stringValue37610") @Directive44(argument97 : ["stringValue37609"]) { + field42053: Object8252 +} + +type Object8252 @Directive21(argument61 : "stringValue37612") @Directive44(argument97 : ["stringValue37611"]) { + field42054: String + field42055: String + field42056: String + field42057: Float + field42058: String + field42059: Scalar2 + field42060: [Object8208] + field42061: [Object8208] + field42062: [Object8208] + field42063: String + field42064: String + field42065: [Object8149] + field42066: [Object8149] + field42067: Object8195 + field42068: Float + field42069: [Object8143] + field42070: Boolean + field42071: Boolean + field42072: Object8144 + field42073: Scalar2 + field42074: [Object8208] + field42075: Scalar2 + field42076: String + field42077: [String] + field42078: Scalar2 + field42079: String + field42080: [Object8149] + field42081: [Object8149] + field42082: Scalar2 + field42083: Boolean + field42084: [Int] + field42085: Scalar2 + field42086: String + field42087: String + field42088: Float + field42089: String + field42090: String + field42091: Object8154 + field42092: Scalar2 + field42093: Scalar2 + field42094: [Int] + field42095: String + field42096: Object8212 + field42097: Int + field42098: Object8253 + field42104: Object8254 + field42112: String + field42113: Object8256 + field42116: [Object8257] + field42120: String + field42121: Object8254 + field42122: Boolean + field42123: [String] + field42124: Int + field42125: String + field42126: String + field42127: String + field42128: Float + field42129: Boolean + field42130: Object8258 + field42133: String + field42134: String + field42135: Boolean + field42136: String + field42137: Int + field42138: Object8149 + field42139: Float + field42140: Float + field42141: Boolean + field42142: Boolean + field42143: Boolean + field42144: Boolean + field42145: String + field42146: Scalar2 + field42147: Boolean + field42148: String + field42149: Int + field42150: Int + field42151: Object8259 + field42154: Boolean +} + +type Object8253 @Directive21(argument61 : "stringValue37614") @Directive44(argument97 : ["stringValue37613"]) { + field42099: String + field42100: String + field42101: String + field42102: String + field42103: String +} + +type Object8254 @Directive21(argument61 : "stringValue37616") @Directive44(argument97 : ["stringValue37615"]) { + field42105: String + field42106: [Object8255] +} + +type Object8255 @Directive21(argument61 : "stringValue37618") @Directive44(argument97 : ["stringValue37617"]) { + field42107: String + field42108: String + field42109: String + field42110: Boolean + field42111: Boolean +} + +type Object8256 @Directive21(argument61 : "stringValue37620") @Directive44(argument97 : ["stringValue37619"]) { + field42114: String + field42115: String +} + +type Object8257 @Directive21(argument61 : "stringValue37622") @Directive44(argument97 : ["stringValue37621"]) { + field42117: String + field42118: String + field42119: String +} + +type Object8258 @Directive21(argument61 : "stringValue37624") @Directive44(argument97 : ["stringValue37623"]) { + field42131: String + field42132: String +} + +type Object8259 @Directive21(argument61 : "stringValue37626") @Directive44(argument97 : ["stringValue37625"]) { + field42152: String + field42153: String +} + +type Object826 @Directive22(argument62 : "stringValue4229") @Directive31 @Directive44(argument97 : ["stringValue4230", "stringValue4231"]) { + field4824: [Object827] +} + +type Object8260 @Directive21(argument61 : "stringValue37632") @Directive44(argument97 : ["stringValue37631"]) { + field42156: [Object8261]! + field44928: Object8698! +} + +type Object8261 @Directive21(argument61 : "stringValue37634") @Directive44(argument97 : ["stringValue37633"]) { + field42157: Enum1997! + field42158: String! + field42159: Enum1998! + field42160: Boolean! + field42161: Union276 + field44926: String + field44927: Enum2106 +} + +type Object8262 @Directive21(argument61 : "stringValue37639") @Directive44(argument97 : ["stringValue37638"]) { + field42162: [Object8263]! + field42174: Enum1999 + field42175: Object8245 + field42176: Object8247 + field42177: Object8265 +} + +type Object8263 @Directive21(argument61 : "stringValue37641") @Directive44(argument97 : ["stringValue37640"]) { + field42163: String! + field42164: String! + field42165: String + field42166: String + field42167: Object8245 + field42168: [Object8264] + field42172: String + field42173: [String] +} + +type Object8264 @Directive21(argument61 : "stringValue37643") @Directive44(argument97 : ["stringValue37642"]) { + field42169: String + field42170: String + field42171: String +} + +type Object8265 @Directive21(argument61 : "stringValue37646") @Directive44(argument97 : ["stringValue37645"]) { + field42178: String! + field42179: String! + field42180: String + field42181: Object8245 + field42182: Object8266 + field42191: String +} + +type Object8266 @Directive21(argument61 : "stringValue37648") @Directive44(argument97 : ["stringValue37647"]) { + field42183: String! + field42184: [Object8267] +} + +type Object8267 @Directive21(argument61 : "stringValue37650") @Directive44(argument97 : ["stringValue37649"]) { + field42185: String! + field42186: [Object8208]! + field42187: Object8245 + field42188: Enum2000 + field42189: [Object8263] + field42190: String +} + +type Object8268 @Directive21(argument61 : "stringValue37653") @Directive44(argument97 : ["stringValue37652"]) { + field42192: Object8269! +} + +type Object8269 @Directive21(argument61 : "stringValue37655") @Directive44(argument97 : ["stringValue37654"]) { + field42193: String + field42194: String! + field42195: [Object8270] + field42202: String! + field42203: String + field42204: String + field42205: String + field42206: String + field42207: String + field42208: Object8272 + field42222: Boolean + field42223: String + field42224: [Object8273] + field42242: [Object8275] + field42399: [Object8302] + field42409: [Object8304] + field42436: [Object8308] + field42490: [Object8315] + field42513: String + field42514: [Object8310] + field42515: [Object8317] + field42549: [Object8320] + field42565: [Object8324] + field42573: [Object8325] + field42579: [Object8326] + field42601: [Object8328] + field43044: [Object8392] + field43085: [Object8397] + field43089: [Object8398] + field43105: [Object8401] + field43205: [Object8412] + field43235: Object8416 + field43240: Object8417 + field43245: [Object8418] + field43254: Object8419 + field43259: [Object8420] + field43264: String + field43265: String + field43266: [Object8421] + field43269: Object8422 + field43299: String + field43300: [Object8426] + field43313: Object8427 + field43339: [Object8429] + field43365: [Object8430] + field43369: String + field43370: Object8431 + field43373: [Object8432] + field43469: [Object8446] + field43476: [Object8447] + field43485: [Object8448] + field43492: [Object8449] + field43501: [Object8450] + field43535: [Object8453] + field43563: [Object8455] + field43598: [Object8457] + field43608: [Object8458] + field43623: [Object8460] + field43639: [Object8463] + field43657: [Object8466] + field43663: [Object8467] + field43684: [Object8469] + field43708: [Object8471] + field43710: [Object8472] + field43713: [Object8473] + field43763: [Object8477] + field43785: Object8478 + field43789: [Object8479] + field43896: Enum2073 + field43897: [Object8488] + field43924: [Object8490] + field43940: [Object8491] + field43954: Object8492 + field43970: [Object8495] + field43977: [Object8497] + field43982: [Object8498] + field43992: Object8499 + field43997: Enum2077 + field43998: [Object8500] + field44005: [Object8501] + field44023: [Object8503] + field44040: [Object8504] + field44049: [Object8506] + field44057: [Object8507] + field44063: [Object8508] + field44068: [Object8509] + field44078: [Object8510] + field44097: Boolean + field44098: [Object8512] + field44104: [Object8513] + field44121: [Object8515] + field44143: [Object8519] + field44146: [Object8520] + field44249: [Object8552] + field44266: Scalar2 + field44267: [Object8556] + field44281: [Object8514] + field44282: Object8557 + field44293: Object8479 @deprecated + field44294: [Object8561] + field44333: [Object8566] + field44354: [Object8571] + field44359: [Object8572] + field44391: [Object8578] @deprecated + field44398: Object8579 @deprecated + field44406: Object8580 + field44408: [Object8581] + field44417: [Object8582] + field44424: Enum2092 + field44425: [Interface107] + field44426: [Object8583] + field44440: [Object8584] + field44448: Object8585 + field44452: [Object8496] + field44453: String + field44454: [Object8586] + field44457: Object8587 + field44459: [Object8588] + field44467: Object8589 + field44469: [Object8590] + field44544: Object8606 + field44552: String + field44553: String + field44554: Object8608 + field44558: Object8609 + field44564: [Object8611] + field44583: [Object8616] + field44597: [Object8619] + field44605: Boolean + field44606: String + field44607: Object8621 + field44613: Int + field44614: Boolean + field44615: [Object8623] +} + +type Object827 @Directive22(argument62 : "stringValue4232") @Directive31 @Directive44(argument97 : ["stringValue4233", "stringValue4234"]) { + field4825: String + field4826: [String] + field4827: Enum10 + field4828: Boolean + field4829: Interface3 + field4830: String +} + +type Object8270 @Directive21(argument61 : "stringValue37657") @Directive44(argument97 : ["stringValue37656"]) { + field42196: String + field42197: String + field42198: [Object8271] +} + +type Object8271 @Directive21(argument61 : "stringValue37659") @Directive44(argument97 : ["stringValue37658"]) { + field42199: String + field42200: String + field42201: String +} + +type Object8272 @Directive21(argument61 : "stringValue37661") @Directive44(argument97 : ["stringValue37660"]) { + field42209: Scalar1 + field42210: Object2161 + field42211: String + field42212: String + field42213: Scalar1 + field42214: Scalar2 + field42215: String @deprecated + field42216: Enum2001 + field42217: Boolean + field42218: String + field42219: String + field42220: Enum2002 + field42221: [Enum2003] +} + +type Object8273 @Directive21(argument61 : "stringValue37666") @Directive44(argument97 : ["stringValue37665"]) { + field42225: Int + field42226: Object8274 + field42231: Object2161 + field42232: String + field42233: String + field42234: Enum2004 + field42235: String + field42236: String + field42237: Boolean + field42238: Boolean + field42239: String + field42240: String + field42241: String +} + +type Object8274 @Directive21(argument61 : "stringValue37668") @Directive44(argument97 : ["stringValue37667"]) { + field42227: Scalar2 + field42228: String + field42229: String + field42230: String +} + +type Object8275 @Directive21(argument61 : "stringValue37671") @Directive44(argument97 : ["stringValue37670"]) { + field42243: String + field42244: String + field42245: String + field42246: String + field42247: String + field42248: Object2161 + field42249: Object8274 + field42250: Object8274 + field42251: Object8274 + field42252: Object8276 + field42276: Object8276 + field42277: String + field42278: String + field42279: String + field42280: Object8278 + field42339: Object8293 + field42342: String + field42343: Object8294 + field42350: String + field42351: Enum2001 + field42352: [Object8296] + field42356: [Object8296] + field42357: String + field42358: String + field42359: String + field42360: Object8297 + field42368: String + field42369: String + field42370: Object8298 + field42377: String + field42378: Enum2013 + field42379: [Object8299] + field42388: Object8300 +} + +type Object8276 @Directive21(argument61 : "stringValue37673") @Directive44(argument97 : ["stringValue37672"]) { + field42253: String + field42254: String + field42255: String + field42256: String + field42257: String + field42258: String + field42259: String + field42260: String + field42261: String + field42262: String + field42263: String + field42264: String + field42265: String + field42266: String + field42267: String + field42268: String + field42269: String + field42270: String + field42271: [Object8277] + field42275: Scalar2 +} + +type Object8277 @Directive21(argument61 : "stringValue37675") @Directive44(argument97 : ["stringValue37674"]) { + field42272: String + field42273: String + field42274: String +} + +type Object8278 @Directive21(argument61 : "stringValue37677") @Directive44(argument97 : ["stringValue37676"]) { + field42281: Object8279 + field42336: Object8279 + field42337: Object8279 + field42338: Object8279 +} + +type Object8279 @Directive21(argument61 : "stringValue37679") @Directive44(argument97 : ["stringValue37678"]) { + field42282: String + field42283: String + field42284: String + field42285: String + field42286: String + field42287: String + field42288: String + field42289: String + field42290: Object8280 + field42335: Object8280 +} + +type Object828 implements Interface73 & Interface74 & Interface75 @Directive22(argument62 : "stringValue4247") @Directive31 @Directive44(argument97 : ["stringValue4248", "stringValue4249"]) { + field4831: String + field4832: String + field4833: Boolean + field4834: Enum240 + field4835: Boolean + field4836: Object450 + field4837: Object450 + field4838: Interface3 + field4839: Interface3 +} + +type Object8280 @Directive21(argument61 : "stringValue37681") @Directive44(argument97 : ["stringValue37680"]) { + field42291: Object8281 + field42305: Object8284 + field42314: Object8287 + field42325: Object8291 + field42334: Object8291 +} + +type Object8281 @Directive21(argument61 : "stringValue37683") @Directive44(argument97 : ["stringValue37682"]) { + field42292: String + field42293: Object8282 +} + +type Object8282 @Directive21(argument61 : "stringValue37685") @Directive44(argument97 : ["stringValue37684"]) { + field42294: Object2169 + field42295: Object8283 + field42303: Scalar5 + field42304: Enum2008 +} + +type Object8283 @Directive21(argument61 : "stringValue37687") @Directive44(argument97 : ["stringValue37686"]) { + field42296: Enum2005 + field42297: Enum2006 + field42298: Enum2007 + field42299: Scalar5 + field42300: Scalar5 + field42301: Float + field42302: Float +} + +type Object8284 @Directive21(argument61 : "stringValue37693") @Directive44(argument97 : ["stringValue37692"]) { + field42306: Object2169 + field42307: Object8285 +} + +type Object8285 @Directive21(argument61 : "stringValue37695") @Directive44(argument97 : ["stringValue37694"]) { + field42308: Object8286 + field42311: Object8286 + field42312: Object8286 + field42313: Object8286 +} + +type Object8286 @Directive21(argument61 : "stringValue37697") @Directive44(argument97 : ["stringValue37696"]) { + field42309: Enum2009 + field42310: Float +} + +type Object8287 @Directive21(argument61 : "stringValue37700") @Directive44(argument97 : ["stringValue37699"]) { + field42315: Object8288 + field42318: Object8289 + field42321: Object8285 + field42322: Object8290 +} + +type Object8288 @Directive21(argument61 : "stringValue37702") @Directive44(argument97 : ["stringValue37701"]) { + field42316: Int + field42317: Int +} + +type Object8289 @Directive21(argument61 : "stringValue37704") @Directive44(argument97 : ["stringValue37703"]) { + field42319: Enum2008 + field42320: Enum2010 +} + +type Object829 @Directive22(argument62 : "stringValue4250") @Directive31 @Directive44(argument97 : ["stringValue4251", "stringValue4252"]) { + field4840: [Object830!] + field4844: String + field4845: String + field4846: String + field4847: Interface3 +} + +type Object8290 @Directive21(argument61 : "stringValue37707") @Directive44(argument97 : ["stringValue37706"]) { + field42323: Object8286 + field42324: Object8286 +} + +type Object8291 @Directive21(argument61 : "stringValue37709") @Directive44(argument97 : ["stringValue37708"]) { + field42326: String + field42327: Object2169 + field42328: Object8292 +} + +type Object8292 @Directive21(argument61 : "stringValue37711") @Directive44(argument97 : ["stringValue37710"]) { + field42329: Object8288 + field42330: Object8289 + field42331: Object8285 + field42332: Object8290 + field42333: Enum2011 +} + +type Object8293 @Directive21(argument61 : "stringValue37714") @Directive44(argument97 : ["stringValue37713"]) { + field42340: Int + field42341: Int +} + +type Object8294 @Directive21(argument61 : "stringValue37716") @Directive44(argument97 : ["stringValue37715"]) { + field42344: String + field42345: String + field42346: [Object8295] +} + +type Object8295 @Directive21(argument61 : "stringValue37718") @Directive44(argument97 : ["stringValue37717"]) { + field42347: Scalar3 + field42348: Float + field42349: String +} + +type Object8296 @Directive21(argument61 : "stringValue37720") @Directive44(argument97 : ["stringValue37719"]) { + field42353: Enum2012 + field42354: String + field42355: String +} + +type Object8297 @Directive21(argument61 : "stringValue37723") @Directive44(argument97 : ["stringValue37722"]) { + field42361: Scalar2 + field42362: String + field42363: String + field42364: String + field42365: String + field42366: String + field42367: String +} + +type Object8298 @Directive21(argument61 : "stringValue37725") @Directive44(argument97 : ["stringValue37724"]) { + field42371: String + field42372: Scalar2 + field42373: String + field42374: String + field42375: Scalar2 + field42376: String +} + +type Object8299 @Directive21(argument61 : "stringValue37728") @Directive44(argument97 : ["stringValue37727"]) { + field42380: String + field42381: String + field42382: String + field42383: String + field42384: Object2161 + field42385: Enum2014 + field42386: Enum2001 + field42387: Enum2015 +} + +type Object83 @Directive21(argument61 : "stringValue339") @Directive44(argument97 : ["stringValue338"]) { + field563: Enum46 + field564: String + field565: Boolean +} + +type Object830 @Directive22(argument62 : "stringValue4253") @Directive31 @Directive44(argument97 : ["stringValue4254", "stringValue4255"]) { + field4841: String + field4842: String + field4843: Interface3 +} + +type Object8300 @Directive21(argument61 : "stringValue37732") @Directive44(argument97 : ["stringValue37731"]) { + field42389: String + field42390: String + field42391: Object2161 + field42392: Object8301 + field42398: Boolean +} + +type Object8301 @Directive21(argument61 : "stringValue37734") @Directive44(argument97 : ["stringValue37733"]) { + field42393: String + field42394: String + field42395: String + field42396: String + field42397: Int +} + +type Object8302 @Directive21(argument61 : "stringValue37736") @Directive44(argument97 : ["stringValue37735"]) { + field42400: String + field42401: String + field42402: Object8303 + field42406: Object2161 + field42407: String + field42408: String +} + +type Object8303 @Directive21(argument61 : "stringValue37738") @Directive44(argument97 : ["stringValue37737"]) { + field42403: Scalar2 + field42404: String + field42405: String +} + +type Object8304 @Directive21(argument61 : "stringValue37740") @Directive44(argument97 : ["stringValue37739"]) { + field42410: String + field42411: String + field42412: String + field42413: String + field42414: Object2161 + field42415: String + field42416: String + field42417: String + field42418: String + field42419: String + field42420: String + field42421: Object8305 + field42432: [String] + field42433: [String] + field42434: String + field42435: Enum429 +} + +type Object8305 @Directive21(argument61 : "stringValue37742") @Directive44(argument97 : ["stringValue37741"]) { + field42422: Union277 + field42431: Enum2016 +} + +type Object8306 @Directive21(argument61 : "stringValue37745") @Directive44(argument97 : ["stringValue37744"]) { + field42423: String + field42424: String + field42425: String + field42426: [Object8307] +} + +type Object8307 @Directive21(argument61 : "stringValue37747") @Directive44(argument97 : ["stringValue37746"]) { + field42427: String + field42428: String + field42429: String + field42430: String +} + +type Object8308 @Directive21(argument61 : "stringValue37750") @Directive44(argument97 : ["stringValue37749"]) { + field42437: Object8309 + field42444: Object8309 + field42445: Object8309 + field42446: String + field42447: String + field42448: String + field42449: String @deprecated + field42450: String + field42451: String + field42452: String + field42453: Boolean + field42454: String + field42455: Object8278 + field42456: Object8276 + field42457: Object8276 + field42458: String + field42459: Scalar2 + field42460: String + field42461: Object8274 @deprecated + field42462: String @deprecated + field42463: Object2161 + field42464: String + field42465: [Object8310] + field42476: Object8311 + field42486: [Object8314] +} + +type Object8309 @Directive21(argument61 : "stringValue37752") @Directive44(argument97 : ["stringValue37751"]) { + field42438: Scalar2 + field42439: String + field42440: String + field42441: String + field42442: String + field42443: Float +} + +type Object831 @Directive20(argument58 : "stringValue4257", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4256") @Directive31 @Directive44(argument97 : ["stringValue4258", "stringValue4259"]) { + field4848: String + field4849: Object832 + field4865: Interface3 +} + +type Object8310 @Directive21(argument61 : "stringValue37754") @Directive44(argument97 : ["stringValue37753"]) { + field42466: String + field42467: String + field42468: String + field42469: String + field42470: String + field42471: String + field42472: String + field42473: String + field42474: String + field42475: String +} + +type Object8311 @Directive21(argument61 : "stringValue37756") @Directive44(argument97 : ["stringValue37755"]) { + field42477: Object8312 + field42484: Object8312 + field42485: Object8312 +} + +type Object8312 @Directive21(argument61 : "stringValue37758") @Directive44(argument97 : ["stringValue37757"]) { + field42478: String + field42479: String + field42480: String + field42481: Object8313 +} + +type Object8313 @Directive21(argument61 : "stringValue37760") @Directive44(argument97 : ["stringValue37759"]) { + field42482: Int + field42483: Float +} + +type Object8314 @Directive21(argument61 : "stringValue37762") @Directive44(argument97 : ["stringValue37761"]) { + field42487: String + field42488: String + field42489: String +} + +type Object8315 @Directive21(argument61 : "stringValue37764") @Directive44(argument97 : ["stringValue37763"]) { + field42491: Object8316 + field42498: String + field42499: String + field42500: String + field42501: String + field42502: String + field42503: Object2161 + field42504: String + field42505: String + field42506: Int + field42507: String + field42508: String + field42509: String + field42510: Object8276 + field42511: String + field42512: String +} + +type Object8316 @Directive21(argument61 : "stringValue37766") @Directive44(argument97 : ["stringValue37765"]) { + field42492: Scalar2 + field42493: String + field42494: String + field42495: String + field42496: String + field42497: String +} + +type Object8317 @Directive21(argument61 : "stringValue37768") @Directive44(argument97 : ["stringValue37767"]) { + field42516: Object8318 + field42526: Object8318 + field42527: String + field42528: Scalar1 + field42529: String + field42530: String + field42531: String + field42532: Scalar2! + field42533: Float + field42534: Float + field42535: String + field42536: String + field42537: [String] + field42538: [Object8318] + field42539: [Object8319] + field42543: Scalar2 + field42544: String + field42545: String + field42546: String + field42547: Scalar2 + field42548: String +} + +type Object8318 @Directive21(argument61 : "stringValue37770") @Directive44(argument97 : ["stringValue37769"]) { + field42517: Scalar2 + field42518: String + field42519: String + field42520: String + field42521: String + field42522: String + field42523: String + field42524: String + field42525: String +} + +type Object8319 @Directive21(argument61 : "stringValue37772") @Directive44(argument97 : ["stringValue37771"]) { + field42540: Int + field42541: String + field42542: String +} + +type Object832 @Directive20(argument58 : "stringValue4261", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4260") @Directive31 @Directive44(argument97 : ["stringValue4262", "stringValue4263"]) { + field4850: Object833 +} + +type Object8320 @Directive21(argument61 : "stringValue37774") @Directive44(argument97 : ["stringValue37773"]) { + field42550: String + field42551: String + field42552: [String] + field42553: Boolean + field42554: Object8272 + field42555: String + field42556: Object8321 + field42562: Object8323 +} + +type Object8321 @Directive21(argument61 : "stringValue37776") @Directive44(argument97 : ["stringValue37775"]) { + field42557: [Object8322] + field42560: String + field42561: String +} + +type Object8322 @Directive21(argument61 : "stringValue37778") @Directive44(argument97 : ["stringValue37777"]) { + field42558: String + field42559: String +} + +type Object8323 @Directive21(argument61 : "stringValue37780") @Directive44(argument97 : ["stringValue37779"]) { + field42563: String + field42564: String +} + +type Object8324 @Directive21(argument61 : "stringValue37782") @Directive44(argument97 : ["stringValue37781"]) { + field42566: String + field42567: String! + field42568: String + field42569: String + field42570: String + field42571: String + field42572: String +} + +type Object8325 @Directive21(argument61 : "stringValue37784") @Directive44(argument97 : ["stringValue37783"]) { + field42574: String + field42575: String! + field42576: String + field42577: String + field42578: String +} + +type Object8326 @Directive21(argument61 : "stringValue37786") @Directive44(argument97 : ["stringValue37785"]) { + field42580: String + field42581: Object8327 + field42585: Scalar2 + field42586: String + field42587: String + field42588: String + field42589: Int + field42590: Float + field42591: String + field42592: Scalar2! + field42593: String + field42594: String + field42595: Scalar2 + field42596: String + field42597: String + field42598: String + field42599: Boolean + field42600: String +} + +type Object8327 @Directive21(argument61 : "stringValue37788") @Directive44(argument97 : ["stringValue37787"]) { + field42582: Scalar2 + field42583: String + field42584: String +} + +type Object8328 @Directive21(argument61 : "stringValue37790") @Directive44(argument97 : ["stringValue37789"]) { + field42602: Object8276 + field42603: Object8276 + field42604: Object8329 + field42608: Object8329 + field42609: Object8330 + field42905: Object8364 + field43039: Object8391 +} + +type Object8329 @Directive21(argument61 : "stringValue37792") @Directive44(argument97 : ["stringValue37791"]) { + field42605: Float + field42606: String + field42607: String +} + +type Object833 @Directive20(argument58 : "stringValue4265", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4264") @Directive31 @Directive44(argument97 : ["stringValue4266", "stringValue4267"]) { + field4851: String + field4852: String + field4853: Object834 + field4861: String + field4862: String + field4863: Enum241 + field4864: Object480 +} + +type Object8330 @Directive21(argument61 : "stringValue37794") @Directive44(argument97 : ["stringValue37793"]) { + field42610: [String] + field42611: String + field42612: Float + field42613: String + field42614: String + field42615: Int + field42616: Int + field42617: String + field42618: Object8331 + field42621: String + field42622: [String] + field42623: String + field42624: String + field42625: Scalar2 + field42626: Boolean + field42627: Boolean + field42628: Boolean + field42629: Boolean + field42630: Boolean + field42631: Boolean + field42632: Object8332 + field42650: Float + field42651: Float + field42652: String + field42653: String + field42654: Object8335 + field42659: String + field42660: String + field42661: Int + field42662: Int + field42663: String + field42664: [String] + field42665: Object8318 + field42666: String + field42667: String + field42668: Scalar2 + field42669: Int + field42670: String + field42671: String + field42672: String + field42673: String + field42674: Boolean + field42675: String + field42676: Float + field42677: Int + field42678: Object8336 + field42687: Object8332 + field42688: String + field42689: String + field42690: String + field42691: String + field42692: [Object8337] + field42699: String + field42700: String + field42701: String + field42702: String + field42703: [Int] + field42704: [String] + field42705: [Object8338] + field42715: [String] + field42716: String + field42717: [String] + field42718: [Object8339] + field42742: Float + field42743: Object8342 + field42768: Enum2019 + field42769: [Object8346] + field42777: String + field42778: Boolean + field42779: String + field42780: Int + field42781: Int + field42782: Object8347 + field42784: [Object8348] + field42795: Object8349 + field42798: Object8350 + field42804: Enum2022 + field42805: [Object8334] + field42806: Object8343 + field42807: Enum2023 + field42808: String + field42809: String + field42810: [Object8351] + field42821: [Scalar2] + field42822: String + field42823: [Object8352] + field42859: [Object8352] + field42860: Enum2026 + field42861: [Enum2027] + field42862: Object8356 + field42865: [Object8357] + field42876: Object8361 + field42880: [Object8335] + field42881: Boolean + field42882: String + field42883: Int + field42884: String + field42885: Scalar2 + field42886: Boolean + field42887: Float + field42888: [String] + field42889: String + field42890: String + field42891: String + field42892: Object8362 + field42897: Object8363 + field42901: Object8334 + field42902: Enum2029 + field42903: Scalar2 + field42904: String +} + +type Object8331 @Directive21(argument61 : "stringValue37796") @Directive44(argument97 : ["stringValue37795"]) { + field42619: String + field42620: Float +} + +type Object8332 @Directive21(argument61 : "stringValue37798") @Directive44(argument97 : ["stringValue37797"]) { + field42633: Object8333 + field42637: [String] + field42638: String + field42639: [Object8334] +} + +type Object8333 @Directive21(argument61 : "stringValue37800") @Directive44(argument97 : ["stringValue37799"]) { + field42634: String + field42635: String + field42636: String +} + +type Object8334 @Directive21(argument61 : "stringValue37802") @Directive44(argument97 : ["stringValue37801"]) { + field42640: String + field42641: String + field42642: String + field42643: String + field42644: String + field42645: String + field42646: String + field42647: String + field42648: String + field42649: Enum2017 +} + +type Object8335 @Directive21(argument61 : "stringValue37805") @Directive44(argument97 : ["stringValue37804"]) { + field42655: String + field42656: String + field42657: String + field42658: String +} + +type Object8336 @Directive21(argument61 : "stringValue37807") @Directive44(argument97 : ["stringValue37806"]) { + field42679: String + field42680: Boolean + field42681: Scalar2 + field42682: Boolean + field42683: String + field42684: String + field42685: String + field42686: Scalar4 +} + +type Object8337 @Directive21(argument61 : "stringValue37809") @Directive44(argument97 : ["stringValue37808"]) { + field42693: String + field42694: String + field42695: Boolean + field42696: String + field42697: String + field42698: String +} + +type Object8338 @Directive21(argument61 : "stringValue37811") @Directive44(argument97 : ["stringValue37810"]) { + field42706: String + field42707: String + field42708: Boolean + field42709: String + field42710: String + field42711: String + field42712: String + field42713: [String] + field42714: Scalar2 +} + +type Object8339 @Directive21(argument61 : "stringValue37813") @Directive44(argument97 : ["stringValue37812"]) { + field42719: String + field42720: String + field42721: Object2161 + field42722: String + field42723: String + field42724: String + field42725: String + field42726: String + field42727: [Object8340] @deprecated + field42738: String + field42739: String + field42740: String + field42741: Enum2018 +} + +type Object834 @Directive20(argument58 : "stringValue4269", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4268") @Directive31 @Directive44(argument97 : ["stringValue4270", "stringValue4271"]) { + field4854: String + field4855: String + field4856: String + field4857: String + field4858: String + field4859: String + field4860: String +} + +type Object8340 @Directive21(argument61 : "stringValue37815") @Directive44(argument97 : ["stringValue37814"]) { + field42728: String + field42729: String + field42730: String + field42731: String + field42732: String + field42733: String + field42734: Object8341 +} + +type Object8341 @Directive21(argument61 : "stringValue37817") @Directive44(argument97 : ["stringValue37816"]) { + field42735: String + field42736: String + field42737: String +} + +type Object8342 @Directive21(argument61 : "stringValue37820") @Directive44(argument97 : ["stringValue37819"]) { + field42744: [Object8343] + field42767: String +} + +type Object8343 @Directive21(argument61 : "stringValue37822") @Directive44(argument97 : ["stringValue37821"]) { + field42745: String + field42746: Float + field42747: String + field42748: Scalar2 + field42749: [Object8344] + field42758: String + field42759: Scalar2 + field42760: [Object8345] + field42763: String + field42764: Float + field42765: Float + field42766: String +} + +type Object8344 @Directive21(argument61 : "stringValue37824") @Directive44(argument97 : ["stringValue37823"]) { + field42750: String + field42751: Scalar2 + field42752: String + field42753: String + field42754: String + field42755: String + field42756: String + field42757: String +} + +type Object8345 @Directive21(argument61 : "stringValue37826") @Directive44(argument97 : ["stringValue37825"]) { + field42761: Scalar2 + field42762: String +} + +type Object8346 @Directive21(argument61 : "stringValue37829") @Directive44(argument97 : ["stringValue37828"]) { + field42770: String + field42771: String + field42772: String + field42773: String + field42774: Enum2017 + field42775: String + field42776: Enum2020 +} + +type Object8347 @Directive21(argument61 : "stringValue37832") @Directive44(argument97 : ["stringValue37831"]) { + field42783: String +} + +type Object8348 @Directive21(argument61 : "stringValue37834") @Directive44(argument97 : ["stringValue37833"]) { + field42785: Scalar2 + field42786: String + field42787: String + field42788: String + field42789: String + field42790: String + field42791: String + field42792: String + field42793: String + field42794: Object8332 +} + +type Object8349 @Directive21(argument61 : "stringValue37836") @Directive44(argument97 : ["stringValue37835"]) { + field42796: String + field42797: String +} + +type Object835 @Directive22(argument62 : "stringValue4276") @Directive31 @Directive44(argument97 : ["stringValue4277", "stringValue4278"]) { + field4866: String +} + +type Object8350 @Directive21(argument61 : "stringValue37838") @Directive44(argument97 : ["stringValue37837"]) { + field42799: String + field42800: String + field42801: String + field42802: String + field42803: Enum2021 +} + +type Object8351 @Directive21(argument61 : "stringValue37843") @Directive44(argument97 : ["stringValue37842"]) { + field42811: String + field42812: String + field42813: String + field42814: String + field42815: String + field42816: String + field42817: Object2161 + field42818: String + field42819: String + field42820: Object8341 +} + +type Object8352 @Directive21(argument61 : "stringValue37845") @Directive44(argument97 : ["stringValue37844"]) { + field42824: String + field42825: String + field42826: Enum429 + field42827: String + field42828: Object2189 @deprecated + field42829: Object2159 @deprecated + field42830: String + field42831: Union278 @deprecated + field42834: String + field42835: String + field42836: Object8354 + field42853: Interface105 + field42854: Interface108 + field42855: Object8355 + field42856: Object8282 + field42857: Object8282 + field42858: Object8282 +} + +type Object8353 @Directive21(argument61 : "stringValue37848") @Directive44(argument97 : ["stringValue37847"]) { + field42832: String! + field42833: String +} + +type Object8354 @Directive21(argument61 : "stringValue37850") @Directive44(argument97 : ["stringValue37849"]) { + field42837: String + field42838: Int + field42839: Object8355 + field42850: Boolean + field42851: Object8282 + field42852: Int +} + +type Object8355 @Directive21(argument61 : "stringValue37852") @Directive44(argument97 : ["stringValue37851"]) { + field42840: String + field42841: Enum429 + field42842: Enum2024 + field42843: String + field42844: String + field42845: Enum2025 + field42846: Object2159 @deprecated + field42847: Union278 @deprecated + field42848: Object2172 @deprecated + field42849: Interface105 +} + +type Object8356 @Directive21(argument61 : "stringValue37858") @Directive44(argument97 : ["stringValue37857"]) { + field42863: Float + field42864: Float +} + +type Object8357 @Directive21(argument61 : "stringValue37860") @Directive44(argument97 : ["stringValue37859"]) { + field42866: String + field42867: Enum2028 + field42868: Union279 +} + +type Object8358 @Directive21(argument61 : "stringValue37864") @Directive44(argument97 : ["stringValue37863"]) { + field42869: [Object8352] +} + +type Object8359 @Directive21(argument61 : "stringValue37866") @Directive44(argument97 : ["stringValue37865"]) { + field42870: String + field42871: String + field42872: Enum429 +} + +type Object836 @Directive20(argument58 : "stringValue4280", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4279") @Directive31 @Directive44(argument97 : ["stringValue4281", "stringValue4282"]) { + field4867: Enum148 + field4868: String + field4869: Object837 +} + +type Object8360 @Directive21(argument61 : "stringValue37868") @Directive44(argument97 : ["stringValue37867"]) { + field42873: String + field42874: String + field42875: [Enum429] +} + +type Object8361 @Directive21(argument61 : "stringValue37870") @Directive44(argument97 : ["stringValue37869"]) { + field42877: String + field42878: Float + field42879: String +} + +type Object8362 @Directive21(argument61 : "stringValue37872") @Directive44(argument97 : ["stringValue37871"]) { + field42893: Boolean + field42894: Boolean + field42895: String + field42896: String +} + +type Object8363 @Directive21(argument61 : "stringValue37874") @Directive44(argument97 : ["stringValue37873"]) { + field42898: String + field42899: String + field42900: String +} + +type Object8364 @Directive21(argument61 : "stringValue37877") @Directive44(argument97 : ["stringValue37876"]) { + field42906: Boolean + field42907: Float + field42908: Object8365 + field42918: String + field42919: Object8366 + field42920: String + field42921: Object8366 + field42922: Float + field42923: Boolean + field42924: Object8366 + field42925: [Object8367] + field42939: Object8366 + field42940: String + field42941: String + field42942: Object8366 + field42943: String + field42944: String + field42945: [Object8368] + field42953: [Enum2033] + field42954: Object2169 + field42955: Object8369 + field43038: Boolean +} + +type Object8365 @Directive21(argument61 : "stringValue37879") @Directive44(argument97 : ["stringValue37878"]) { + field42909: String + field42910: [Object8365] + field42911: Object8366 + field42916: Int + field42917: String +} + +type Object8366 @Directive21(argument61 : "stringValue37881") @Directive44(argument97 : ["stringValue37880"]) { + field42912: Float + field42913: String + field42914: String + field42915: Boolean +} + +type Object8367 @Directive21(argument61 : "stringValue37883") @Directive44(argument97 : ["stringValue37882"]) { + field42926: Enum2030 + field42927: String + field42928: Boolean + field42929: Boolean + field42930: Int + field42931: String + field42932: Scalar2 + field42933: String + field42934: Int + field42935: String + field42936: Float + field42937: Int + field42938: Enum2031 +} + +type Object8368 @Directive21(argument61 : "stringValue37887") @Directive44(argument97 : ["stringValue37886"]) { + field42946: String + field42947: String + field42948: String + field42949: String + field42950: String + field42951: Enum2032 + field42952: String +} + +type Object8369 @Directive21(argument61 : "stringValue37891") @Directive44(argument97 : ["stringValue37890"]) { + field42956: Union280 + field42995: Union280 + field42996: Object8379 +} + +type Object837 @Directive20(argument58 : "stringValue4284", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4283") @Directive31 @Directive44(argument97 : ["stringValue4285", "stringValue4286"]) { + field4870: String + field4871: String +} + +type Object8370 @Directive21(argument61 : "stringValue37894") @Directive44(argument97 : ["stringValue37893"]) { + field42957: String! + field42958: String + field42959: Enum2034 +} + +type Object8371 @Directive21(argument61 : "stringValue37897") @Directive44(argument97 : ["stringValue37896"]) { + field42960: String + field42961: Object2169 + field42962: Enum429 + field42963: Enum2034 +} + +type Object8372 @Directive21(argument61 : "stringValue37899") @Directive44(argument97 : ["stringValue37898"]) { + field42964: String + field42965: String! + field42966: String! + field42967: String + field42968: Object8373 + field42980: Object8376 +} + +type Object8373 @Directive21(argument61 : "stringValue37901") @Directive44(argument97 : ["stringValue37900"]) { + field42969: [Union281] + field42977: String + field42978: String + field42979: String +} + +type Object8374 @Directive21(argument61 : "stringValue37904") @Directive44(argument97 : ["stringValue37903"]) { + field42970: String! + field42971: Boolean! + field42972: Boolean! + field42973: String! +} + +type Object8375 @Directive21(argument61 : "stringValue37906") @Directive44(argument97 : ["stringValue37905"]) { + field42974: String! + field42975: String + field42976: Enum2035! +} + +type Object8376 @Directive21(argument61 : "stringValue37909") @Directive44(argument97 : ["stringValue37908"]) { + field42981: String! + field42982: String! + field42983: String! +} + +type Object8377 @Directive21(argument61 : "stringValue37911") @Directive44(argument97 : ["stringValue37910"]) { + field42984: String! + field42985: String! + field42986: String! + field42987: String + field42988: Boolean + field42989: Enum2034 +} + +type Object8378 @Directive21(argument61 : "stringValue37913") @Directive44(argument97 : ["stringValue37912"]) { + field42990: String! + field42991: String! + field42992: String + field42993: Boolean + field42994: Enum2034 +} + +type Object8379 @Directive21(argument61 : "stringValue37915") @Directive44(argument97 : ["stringValue37914"]) { + field42997: [Union282] + field43037: String +} + +type Object838 @Directive22(argument62 : "stringValue4287") @Directive31 @Directive44(argument97 : ["stringValue4288", "stringValue4289"]) { + field4872: Enum10 + field4873: String +} + +type Object8380 @Directive21(argument61 : "stringValue37918") @Directive44(argument97 : ["stringValue37917"]) { + field42998: String! + field42999: Enum2034 +} + +type Object8381 @Directive21(argument61 : "stringValue37920") @Directive44(argument97 : ["stringValue37919"]) { + field43000: [Union283] + field43020: Boolean @deprecated + field43021: Boolean + field43022: Boolean + field43023: String + field43024: Enum2034 +} + +type Object8382 @Directive21(argument61 : "stringValue37923") @Directive44(argument97 : ["stringValue37922"]) { + field43001: String! + field43002: String! + field43003: Object8379 +} + +type Object8383 @Directive21(argument61 : "stringValue37925") @Directive44(argument97 : ["stringValue37924"]) { + field43004: String! + field43005: String! + field43006: Object8379 + field43007: String +} + +type Object8384 @Directive21(argument61 : "stringValue37927") @Directive44(argument97 : ["stringValue37926"]) { + field43008: String! + field43009: String! + field43010: Object8379 + field43011: Enum2034 +} + +type Object8385 @Directive21(argument61 : "stringValue37929") @Directive44(argument97 : ["stringValue37928"]) { + field43012: String! + field43013: String! + field43014: Object8379 + field43015: Enum2034 +} + +type Object8386 @Directive21(argument61 : "stringValue37931") @Directive44(argument97 : ["stringValue37930"]) { + field43016: String! + field43017: String! + field43018: Object8379 + field43019: Enum2034 +} + +type Object8387 @Directive21(argument61 : "stringValue37933") @Directive44(argument97 : ["stringValue37932"]) { + field43025: String! + field43026: String! + field43027: Enum2034 +} + +type Object8388 @Directive21(argument61 : "stringValue37935") @Directive44(argument97 : ["stringValue37934"]) { + field43028: String! + field43029: Enum2034 +} + +type Object8389 @Directive21(argument61 : "stringValue37937") @Directive44(argument97 : ["stringValue37936"]) { + field43030: String! + field43031: Enum2034 +} + +type Object839 @Directive22(argument62 : "stringValue4290") @Directive31 @Directive44(argument97 : ["stringValue4291", "stringValue4292"]) { + field4874: String + field4875: Object840 @deprecated + field4882: [Object840] + field4883: Object510 +} + +type Object8390 @Directive21(argument61 : "stringValue37939") @Directive44(argument97 : ["stringValue37938"]) { + field43032: Enum2036 + field43033: Enum2037 + field43034: Int @deprecated + field43035: Int @deprecated + field43036: Object2169 +} + +type Object8391 @Directive21(argument61 : "stringValue37943") @Directive44(argument97 : ["stringValue37942"]) { + field43040: Boolean + field43041: String + field43042: String + field43043: String +} + +type Object8392 @Directive21(argument61 : "stringValue37945") @Directive44(argument97 : ["stringValue37944"]) { + field43045: Scalar2! + field43046: Float + field43047: Object8366 + field43048: Int + field43049: Object8393 + field43079: Object8396 + field43083: String + field43084: Object8332 +} + +type Object8393 @Directive21(argument61 : "stringValue37947") @Directive44(argument97 : ["stringValue37946"]) { + field43050: Object8394 + field43059: Object8395 + field43077: Object8394 + field43078: Object8395 +} + +type Object8394 @Directive21(argument61 : "stringValue37949") @Directive44(argument97 : ["stringValue37948"]) { + field43051: String + field43052: Scalar2 + field43053: String + field43054: Boolean + field43055: Boolean + field43056: String + field43057: String + field43058: String +} + +type Object8395 @Directive21(argument61 : "stringValue37951") @Directive44(argument97 : ["stringValue37950"]) { + field43060: String + field43061: String + field43062: String + field43063: String + field43064: String + field43065: String + field43066: String + field43067: String + field43068: String + field43069: Boolean + field43070: String + field43071: String + field43072: String + field43073: String + field43074: String + field43075: String + field43076: Scalar2 +} + +type Object8396 @Directive21(argument61 : "stringValue37953") @Directive44(argument97 : ["stringValue37952"]) { + field43080: Float + field43081: Float + field43082: String +} + +type Object8397 @Directive21(argument61 : "stringValue37955") @Directive44(argument97 : ["stringValue37954"]) { + field43086: String + field43087: String + field43088: Object2161 +} + +type Object8398 @Directive21(argument61 : "stringValue37957") @Directive44(argument97 : ["stringValue37956"]) { + field43090: Object8336 + field43091: Object8399 + field43101: String + field43102: String + field43103: String + field43104: Scalar2 +} + +type Object8399 @Directive21(argument61 : "stringValue37959") @Directive44(argument97 : ["stringValue37958"]) { + field43092: Object8400 +} + +type Object84 @Directive21(argument61 : "stringValue343") @Directive44(argument97 : ["stringValue342"]) { + field570: String! + field571: String +} + +type Object840 @Directive22(argument62 : "stringValue4293") @Directive31 @Directive44(argument97 : ["stringValue4294", "stringValue4295"]) { + field4876: String + field4877: String + field4878: String + field4879: String + field4880: String + field4881: String +} + +type Object8400 @Directive21(argument61 : "stringValue37961") @Directive44(argument97 : ["stringValue37960"]) { + field43093: Scalar2 + field43094: String + field43095: String + field43096: String + field43097: String + field43098: String + field43099: String + field43100: String +} + +type Object8401 @Directive21(argument61 : "stringValue37963") @Directive44(argument97 : ["stringValue37962"]) { + field43106: String + field43107: Float + field43108: String + field43109: Object8402 + field43112: String + field43113: String + field43114: Scalar2! + field43115: Boolean + field43116: Object8403 + field43120: String + field43121: Float + field43122: Float + field43123: String + field43124: Object8318 + field43125: [Object8404] + field43138: Int + field43139: Int + field43140: Scalar2 + field43141: Int + field43142: Float + field43143: Int + field43144: String + field43145: [Object8405] + field43153: String + field43154: Float + field43155: [Object8406] + field43158: [Object8407] + field43162: Enum2038 + field43163: Object8336 + field43164: String + field43165: String + field43166: Enum2039 + field43167: [String] + field43168: String + field43169: String + field43170: String + field43171: Object8404 + field43172: String + field43173: String + field43174: String + field43175: Boolean + field43176: String + field43177: Object8408 + field43181: Enum2040 + field43182: [String] + field43183: Object8409 + field43185: Float + field43186: String + field43187: Enum2041 + field43188: [String] + field43189: String + field43190: Float + field43191: String + field43192: String + field43193: Object8338 + field43194: String + field43195: Object8410 + field43199: Object8411 + field43203: String + field43204: Boolean +} + +type Object8402 @Directive21(argument61 : "stringValue37965") @Directive44(argument97 : ["stringValue37964"]) { + field43110: String + field43111: Boolean +} + +type Object8403 @Directive21(argument61 : "stringValue37967") @Directive44(argument97 : ["stringValue37966"]) { + field43117: String + field43118: String + field43119: String +} + +type Object8404 @Directive21(argument61 : "stringValue37969") @Directive44(argument97 : ["stringValue37968"]) { + field43126: Scalar2 + field43127: String + field43128: String + field43129: String + field43130: String + field43131: String + field43132: String + field43133: String + field43134: String + field43135: String + field43136: String + field43137: Int +} + +type Object8405 @Directive21(argument61 : "stringValue37971") @Directive44(argument97 : ["stringValue37970"]) { + field43146: Scalar4 + field43147: Scalar4 + field43148: Int + field43149: Scalar2 + field43150: Boolean + field43151: String + field43152: String +} + +type Object8406 @Directive21(argument61 : "stringValue37973") @Directive44(argument97 : ["stringValue37972"]) { + field43156: Object8404 + field43157: Object8276 +} + +type Object8407 @Directive21(argument61 : "stringValue37975") @Directive44(argument97 : ["stringValue37974"]) { + field43159: String + field43160: String + field43161: String +} + +type Object8408 @Directive21(argument61 : "stringValue37979") @Directive44(argument97 : ["stringValue37978"]) { + field43178: String + field43179: String + field43180: String +} + +type Object8409 @Directive21(argument61 : "stringValue37982") @Directive44(argument97 : ["stringValue37981"]) { + field43184: [Object8404] +} + +type Object841 @Directive22(argument62 : "stringValue4296") @Directive31 @Directive44(argument97 : ["stringValue4297", "stringValue4298"]) { + field4884: [Object842] + field4892: Object843 + field4913: Object576 + field4914: String +} + +type Object8410 @Directive21(argument61 : "stringValue37985") @Directive44(argument97 : ["stringValue37984"]) { + field43196: [String] + field43197: [String] + field43198: [String] +} + +type Object8411 @Directive21(argument61 : "stringValue37987") @Directive44(argument97 : ["stringValue37986"]) { + field43200: Enum2042 + field43201: Enum2042 + field43202: Enum2042 +} + +type Object8412 @Directive21(argument61 : "stringValue37990") @Directive44(argument97 : ["stringValue37989"]) { + field43206: Object8330 + field43207: Object8364 + field43208: Object8391 + field43209: Boolean + field43210: Object8413 + field43219: Object8414 + field43231: Object8415 +} + +type Object8413 @Directive21(argument61 : "stringValue37992") @Directive44(argument97 : ["stringValue37991"]) { + field43211: Int + field43212: Int + field43213: Int + field43214: String + field43215: String + field43216: Scalar2 + field43217: [String] + field43218: String +} + +type Object8414 @Directive21(argument61 : "stringValue37994") @Directive44(argument97 : ["stringValue37993"]) { + field43220: Boolean + field43221: String + field43222: String + field43223: String + field43224: String + field43225: Object8393 + field43226: Object8394 + field43227: String + field43228: [Object8270] + field43229: Boolean + field43230: Boolean +} + +type Object8415 @Directive21(argument61 : "stringValue37996") @Directive44(argument97 : ["stringValue37995"]) { + field43232: String + field43233: [Object8355] + field43234: Boolean +} + +type Object8416 @Directive21(argument61 : "stringValue37998") @Directive44(argument97 : ["stringValue37997"]) { + field43236: String! + field43237: String + field43238: String + field43239: String +} + +type Object8417 @Directive21(argument61 : "stringValue38000") @Directive44(argument97 : ["stringValue37999"]) { + field43241: String + field43242: String + field43243: String + field43244: String +} + +type Object8418 @Directive21(argument61 : "stringValue38002") @Directive44(argument97 : ["stringValue38001"]) { + field43246: String + field43247: String + field43248: String + field43249: Scalar2 + field43250: String + field43251: String + field43252: String + field43253: String +} + +type Object8419 @Directive21(argument61 : "stringValue38004") @Directive44(argument97 : ["stringValue38003"]) { + field43255: Float + field43256: String @deprecated + field43257: String @deprecated + field43258: String +} + +type Object842 @Directive22(argument62 : "stringValue4301") @Directive31 @Directive44(argument97 : ["stringValue4299", "stringValue4300"]) { + field4885: String + field4886: String + field4887: Enum132 + field4888: Int + field4889: String + field4890: Boolean + field4891: Interface3 +} + +type Object8420 @Directive21(argument61 : "stringValue38006") @Directive44(argument97 : ["stringValue38005"]) { + field43260: String + field43261: String + field43262: Object2161 + field43263: String +} + +type Object8421 @Directive21(argument61 : "stringValue38008") @Directive44(argument97 : ["stringValue38007"]) { + field43267: Object2161 + field43268: String +} + +type Object8422 @Directive21(argument61 : "stringValue38010") @Directive44(argument97 : ["stringValue38009"]) { + field43270: [Object8423] + field43293: Enum2045 + field43294: Boolean + field43295: Int + field43296: Float + field43297: Float + field43298: String +} + +type Object8423 @Directive21(argument61 : "stringValue38012") @Directive44(argument97 : ["stringValue38011"]) { + field43271: Float + field43272: Float + field43273: Enum2043 + field43274: String + field43275: String + field43276: String + field43277: [Object8424] + field43280: Boolean + field43281: [Object8425] + field43289: String + field43290: Float + field43291: Int + field43292: Int +} + +type Object8424 @Directive21(argument61 : "stringValue38015") @Directive44(argument97 : ["stringValue38014"]) { + field43278: String + field43279: Enum2044 +} + +type Object8425 @Directive21(argument61 : "stringValue38018") @Directive44(argument97 : ["stringValue38017"]) { + field43282: String + field43283: Union169 + field43284: Boolean @deprecated + field43285: Boolean @deprecated + field43286: String + field43287: String + field43288: Boolean +} + +type Object8426 @Directive21(argument61 : "stringValue38021") @Directive44(argument97 : ["stringValue38020"]) { + field43301: String + field43302: String + field43303: String + field43304: String + field43305: String + field43306: String + field43307: String + field43308: Scalar5 + field43309: Object8274 + field43310: String! + field43311: String + field43312: String +} + +type Object8427 @Directive21(argument61 : "stringValue38023") @Directive44(argument97 : ["stringValue38022"]) { + field43314: Enum2046 + field43315: Boolean + field43316: String + field43317: String + field43318: String + field43319: Enum2047 + field43320: Int + field43321: Enum2048 + field43322: String + field43323: Boolean + field43324: String + field43325: Boolean + field43326: Enum2049 + field43327: Boolean + field43328: Object8428 + field43332: String + field43333: Object2230 + field43334: String + field43335: Boolean + field43336: String + field43337: Boolean + field43338: String +} + +type Object8428 @Directive21(argument61 : "stringValue38029") @Directive44(argument97 : ["stringValue38028"]) { + field43329: String + field43330: String + field43331: Int +} + +type Object8429 @Directive21(argument61 : "stringValue38031") @Directive44(argument97 : ["stringValue38030"]) { + field43340: String + field43341: String + field43342: [Object8344] + field43343: Scalar2! + field43344: Float + field43345: Float + field43346: String + field43347: [Object8319] + field43348: Scalar2 + field43349: Scalar2 + field43350: String + field43351: Scalar2 + field43352: String + field43353: String + field43354: String + field43355: String + field43356: [Object8345] + field43357: String + field43358: String + field43359: Scalar2 + field43360: String + field43361: [Object8401] + field43362: Object8272 + field43363: String + field43364: [String] +} + +type Object843 @Directive22(argument62 : "stringValue4304") @Directive31 @Directive44(argument97 : ["stringValue4302", "stringValue4303"]) { + field4893: Enum242 + field4894: String + field4895: [Object844] + field4906: [Object846] + field4910: Scalar3 + field4911: Scalar3 + field4912: Object480 +} + +type Object8430 @Directive21(argument61 : "stringValue38033") @Directive44(argument97 : ["stringValue38032"]) { + field43366: String + field43367: String + field43368: String +} + +type Object8431 @Directive21(argument61 : "stringValue38035") @Directive44(argument97 : ["stringValue38034"]) { + field43371: Float + field43372: Float +} + +type Object8432 @Directive21(argument61 : "stringValue38037") @Directive44(argument97 : ["stringValue38036"]) { + field43374: String + field43375: String + field43376: String + field43377: String + field43378: Object8274 + field43379: Object8274 + field43380: Object8274 + field43381: Object8278 + field43382: String + field43383: Object8276 + field43384: Object8276 + field43385: String + field43386: String + field43387: Object8433 + field43421: String + field43422: [Object8274] + field43423: [Object8274] + field43424: [Object8274] + field43425: Object8299 + field43426: String + field43427: String + field43428: [Object8299] + field43429: String + field43430: Object8274 + field43431: String + field43432: String + field43433: String + field43434: String + field43435: String + field43436: Float + field43437: Object8438 + field43464: Object2161 + field43465: String + field43466: Boolean + field43467: String + field43468: Enum2062 +} + +type Object8433 @Directive21(argument61 : "stringValue38039") @Directive44(argument97 : ["stringValue38038"]) { + field43388: Object8434 + field43418: Object8434 + field43419: Object8434 + field43420: Object8434 +} + +type Object8434 @Directive21(argument61 : "stringValue38041") @Directive44(argument97 : ["stringValue38040"]) { + field43389: Object8435 + field43395: Object8435 + field43396: Object8436 + field43401: Object8437 +} + +type Object8435 @Directive21(argument61 : "stringValue38043") @Directive44(argument97 : ["stringValue38042"]) { + field43390: Enum2050 + field43391: Enum2051 + field43392: Enum2052 + field43393: String + field43394: Enum2053 +} + +type Object8436 @Directive21(argument61 : "stringValue38049") @Directive44(argument97 : ["stringValue38048"]) { + field43397: Boolean + field43398: Boolean + field43399: Int + field43400: Boolean +} + +type Object8437 @Directive21(argument61 : "stringValue38051") @Directive44(argument97 : ["stringValue38050"]) { + field43402: String + field43403: String + field43404: String + field43405: String + field43406: Enum2054 + field43407: Enum2055 + field43408: String + field43409: String + field43410: Enum2056 + field43411: Enum2057 + field43412: String + field43413: String + field43414: String + field43415: String + field43416: String + field43417: Object8283 +} + +type Object8438 @Directive21(argument61 : "stringValue38057") @Directive44(argument97 : ["stringValue38056"]) { + field43438: Enum2058 + field43439: [Union284] + field43454: Scalar1 + field43455: Enum2061 + field43456: Scalar1 + field43457: Enum2061 + field43458: Scalar1 + field43459: Enum2061 + field43460: String + field43461: String + field43462: Scalar1 + field43463: Enum2061 +} + +type Object8439 @Directive21(argument61 : "stringValue38061") @Directive44(argument97 : ["stringValue38060"]) { + field43440: Boolean + field43441: Boolean + field43442: Boolean +} + +type Object844 @Directive22(argument62 : "stringValue4310") @Directive31 @Directive44(argument97 : ["stringValue4308", "stringValue4309"]) { + field4896: Enum243 + field4897: String + field4898: [Object845] +} + +type Object8440 @Directive21(argument61 : "stringValue38063") @Directive44(argument97 : ["stringValue38062"]) { + field43443: String + field43444: Object8441 +} + +type Object8441 @Directive21(argument61 : "stringValue38065") @Directive44(argument97 : ["stringValue38064"]) { + field43445: String + field43446: String + field43447: String +} + +type Object8442 @Directive21(argument61 : "stringValue38067") @Directive44(argument97 : ["stringValue38066"]) { + field43448: Scalar2 +} + +type Object8443 @Directive21(argument61 : "stringValue38069") @Directive44(argument97 : ["stringValue38068"]) { + field43449: Boolean + field43450: String +} + +type Object8444 @Directive21(argument61 : "stringValue38071") @Directive44(argument97 : ["stringValue38070"]) { + field43451: Enum2059 + field43452: Enum2060 +} + +type Object8445 @Directive21(argument61 : "stringValue38075") @Directive44(argument97 : ["stringValue38074"]) { + field43453: Scalar2 +} + +type Object8446 @Directive21(argument61 : "stringValue38079") @Directive44(argument97 : ["stringValue38078"]) { + field43470: String + field43471: Boolean + field43472: Object2161 + field43473: String + field43474: String + field43475: String +} + +type Object8447 @Directive21(argument61 : "stringValue38081") @Directive44(argument97 : ["stringValue38080"]) { + field43477: String! + field43478: String + field43479: String + field43480: String + field43481: Scalar2 + field43482: Object8274 + field43483: Object8336 + field43484: String +} + +type Object8448 @Directive21(argument61 : "stringValue38083") @Directive44(argument97 : ["stringValue38082"]) { + field43486: String + field43487: String + field43488: String + field43489: String + field43490: Object8274 + field43491: Object2161 +} + +type Object8449 @Directive21(argument61 : "stringValue38085") @Directive44(argument97 : ["stringValue38084"]) { + field43493: String + field43494: String! + field43495: String + field43496: String + field43497: String + field43498: String + field43499: String + field43500: String +} + +type Object845 @Directive22(argument62 : "stringValue4316") @Directive31 @Directive44(argument97 : ["stringValue4314", "stringValue4315"]) { + field4899: String + field4900: String + field4901: String + field4902: Interface3 + field4903: Boolean + field4904: Interface3 + field4905: Interface3 +} + +type Object8450 @Directive21(argument61 : "stringValue38087") @Directive44(argument97 : ["stringValue38086"]) { + field43502: String + field43503: String + field43504: String + field43505: String + field43506: Object8274 + field43507: Object8274 + field43508: Object8274 + field43509: Object8278 + field43510: String + field43511: String + field43512: String + field43513: Object2161 + field43514: [Object8451] + field43531: Scalar2 + field43532: [Object8274] + field43533: [Object8274] + field43534: [Object8274] +} + +type Object8451 @Directive21(argument61 : "stringValue38089") @Directive44(argument97 : ["stringValue38088"]) { + field43515: String + field43516: String + field43517: String + field43518: String + field43519: Boolean + field43520: Boolean + field43521: [String] + field43522: String + field43523: [Object8452] +} + +type Object8452 @Directive21(argument61 : "stringValue38091") @Directive44(argument97 : ["stringValue38090"]) { + field43524: String + field43525: Enum2063 + field43526: String + field43527: String + field43528: String + field43529: String + field43530: String +} + +type Object8453 @Directive21(argument61 : "stringValue38094") @Directive44(argument97 : ["stringValue38093"]) { + field43536: Scalar2! + field43537: Enum2064 + field43538: String + field43539: String + field43540: String + field43541: String + field43542: String + field43543: String + field43544: [String] + field43545: String + field43546: Scalar2 + field43547: String + field43548: String + field43549: String + field43550: String + field43551: String + field43552: [Object8454] + field43558: String + field43559: String + field43560: String + field43561: [Object8319] + field43562: Int +} + +type Object8454 @Directive21(argument61 : "stringValue38097") @Directive44(argument97 : ["stringValue38096"]) { + field43553: Enum2065! + field43554: Scalar2! + field43555: Boolean! + field43556: String + field43557: Enum2066 +} + +type Object8455 @Directive21(argument61 : "stringValue38101") @Directive44(argument97 : ["stringValue38100"]) { + field43564: String + field43565: String + field43566: String + field43567: String + field43568: String + field43569: String + field43570: String + field43571: String + field43572: Object8274 + field43573: Object8274 + field43574: Object8274 + field43575: Object8278 + field43576: String + field43577: String + field43578: Object2161 + field43579: Object2161 + field43580: String + field43581: String + field43582: String + field43583: [Object8456] + field43587: Boolean + field43588: String + field43589: String + field43590: String + field43591: Int + field43592: String + field43593: String + field43594: String + field43595: String + field43596: String + field43597: String +} + +type Object8456 @Directive21(argument61 : "stringValue38103") @Directive44(argument97 : ["stringValue38102"]) { + field43584: String + field43585: Int + field43586: Int +} + +type Object8457 @Directive21(argument61 : "stringValue38105") @Directive44(argument97 : ["stringValue38104"]) { + field43599: Scalar2! + field43600: String + field43601: String + field43602: String + field43603: String + field43604: Object8336 + field43605: String + field43606: String + field43607: String +} + +type Object8458 @Directive21(argument61 : "stringValue38107") @Directive44(argument97 : ["stringValue38106"]) { + field43609: String + field43610: String + field43611: String + field43612: String + field43613: [Object8459] + field43621: String + field43622: String +} + +type Object8459 @Directive21(argument61 : "stringValue38109") @Directive44(argument97 : ["stringValue38108"]) { + field43614: [Object8425] + field43615: Enum2067 + field43616: Enum2068 + field43617: String + field43618: String + field43619: String + field43620: String +} + +type Object846 @Directive22(argument62 : "stringValue4319") @Directive31 @Directive44(argument97 : ["stringValue4317", "stringValue4318"]) { + field4907: Scalar3 + field4908: Scalar2 + field4909: Float +} + +type Object8460 @Directive21(argument61 : "stringValue38113") @Directive44(argument97 : ["stringValue38112"]) { + field43624: Object8461 + field43635: Object8462 + field43638: Object8364 +} + +type Object8461 @Directive21(argument61 : "stringValue38115") @Directive44(argument97 : ["stringValue38114"]) { + field43625: Scalar2 + field43626: String + field43627: Float + field43628: Int + field43629: Int + field43630: String + field43631: String + field43632: String + field43633: Boolean + field43634: Int +} + +type Object8462 @Directive21(argument61 : "stringValue38117") @Directive44(argument97 : ["stringValue38116"]) { + field43636: Scalar2 + field43637: Float +} + +type Object8463 @Directive21(argument61 : "stringValue38119") @Directive44(argument97 : ["stringValue38118"]) { + field43640: String + field43641: String + field43642: [Object8464] + field43655: String + field43656: Boolean +} + +type Object8464 @Directive21(argument61 : "stringValue38121") @Directive44(argument97 : ["stringValue38120"]) { + field43643: String + field43644: String + field43645: String + field43646: [Object2162] + field43647: Object8465 + field43652: String + field43653: String + field43654: String +} + +type Object8465 @Directive21(argument61 : "stringValue38123") @Directive44(argument97 : ["stringValue38122"]) { + field43648: String + field43649: String + field43650: String + field43651: String +} + +type Object8466 @Directive21(argument61 : "stringValue38125") @Directive44(argument97 : ["stringValue38124"]) { + field43658: String + field43659: String + field43660: String + field43661: String + field43662: String +} + +type Object8467 @Directive21(argument61 : "stringValue38127") @Directive44(argument97 : ["stringValue38126"]) { + field43664: String + field43665: String + field43666: String + field43667: String + field43668: Object8274 + field43669: Object8274 + field43670: Object8274 + field43671: Object8274 + field43672: String + field43673: Object8468 + field43678: String + field43679: String + field43680: Object2161 + field43681: String + field43682: String + field43683: String +} + +type Object8468 @Directive21(argument61 : "stringValue38129") @Directive44(argument97 : ["stringValue38128"]) { + field43674: Int + field43675: Int + field43676: Int + field43677: Int +} + +type Object8469 @Directive21(argument61 : "stringValue38131") @Directive44(argument97 : ["stringValue38130"]) { + field43685: String + field43686: String + field43687: String + field43688: [Object8470] + field43704: String + field43705: Object8272 + field43706: Object8274 + field43707: Object8274 +} + +type Object847 @Directive22(argument62 : "stringValue4322") @Directive31 @Directive44(argument97 : ["stringValue4320", "stringValue4321"]) { + field4915: [Object842] + field4916: [Object848] + field4920: Object849 +} + +type Object8470 @Directive21(argument61 : "stringValue38133") @Directive44(argument97 : ["stringValue38132"]) { + field43689: String + field43690: String + field43691: Object8404 + field43692: Object8276 + field43693: Scalar2 + field43694: String + field43695: Float + field43696: Scalar2 + field43697: Float + field43698: Object8336 + field43699: String + field43700: String + field43701: Object8404 + field43702: Boolean + field43703: Int +} + +type Object8471 @Directive21(argument61 : "stringValue38135") @Directive44(argument97 : ["stringValue38134"]) { + field43709: String +} + +type Object8472 @Directive21(argument61 : "stringValue38137") @Directive44(argument97 : ["stringValue38136"]) { + field43711: String + field43712: Object2161 +} + +type Object8473 @Directive21(argument61 : "stringValue38139") @Directive44(argument97 : ["stringValue38138"]) { + field43714: String + field43715: String + field43716: String + field43717: String + field43718: Boolean + field43719: String + field43720: String @deprecated + field43721: Object2161 + field43722: [Object8474] + field43734: Object8276 + field43735: Object8474 + field43736: Object8474 + field43737: String + field43738: String + field43739: String + field43740: String + field43741: Enum2069 + field43742: Enum2069 + field43743: Enum2069 + field43744: Enum2069 + field43745: Float + field43746: Object8474 + field43747: String @deprecated + field43748: Enum2015 + field43749: String + field43750: Object8474 @deprecated + field43751: Object8475 + field43755: Object8311 + field43756: Object8476 + field43759: String + field43760: String + field43761: String + field43762: String +} + +type Object8474 @Directive21(argument61 : "stringValue38141") @Directive44(argument97 : ["stringValue38140"]) { + field43723: Scalar2 + field43724: String + field43725: String + field43726: String + field43727: String + field43728: String + field43729: String + field43730: String + field43731: String + field43732: String + field43733: String +} + +type Object8475 @Directive21(argument61 : "stringValue38144") @Directive44(argument97 : ["stringValue38143"]) { + field43752: String + field43753: String + field43754: String +} + +type Object8476 @Directive21(argument61 : "stringValue38146") @Directive44(argument97 : ["stringValue38145"]) { + field43757: String + field43758: String +} + +type Object8477 @Directive21(argument61 : "stringValue38148") @Directive44(argument97 : ["stringValue38147"]) { + field43764: String + field43765: String + field43766: Object8474 + field43767: String + field43768: Boolean + field43769: String + field43770: String @deprecated + field43771: Object2161 + field43772: String + field43773: String + field43774: Enum2069 + field43775: Enum2069 + field43776: Float + field43777: Object8474 + field43778: Object8474 + field43779: Object8474 + field43780: String + field43781: Object8475 + field43782: Object8311 + field43783: String + field43784: String +} + +type Object8478 @Directive21(argument61 : "stringValue38150") @Directive44(argument97 : ["stringValue38149"]) { + field43786: Enum2070 + field43787: String + field43788: Enum2071 +} + +type Object8479 @Directive21(argument61 : "stringValue38154") @Directive44(argument97 : ["stringValue38153"]) { + field43790: [Object8480] + field43854: Boolean + field43855: String + field43856: String + field43857: String! + field43858: String + field43859: String + field43860: [Object8480] + field43861: String + field43862: String + field43863: String + field43864: String + field43865: String + field43866: [Object8485] + field43880: [Object8270] + field43881: String + field43882: [String] + field43883: String + field43884: Int + field43885: String + field43886: String + field43887: Enum2072 + field43888: String + field43889: Object8486 + field43892: Object8487 + field43895: Interface105 +} + +type Object848 @Directive22(argument62 : "stringValue4325") @Directive31 @Directive44(argument97 : ["stringValue4323", "stringValue4324"]) { + field4917: String + field4918: Scalar2 + field4919: Boolean +} + +type Object8480 @Directive21(argument61 : "stringValue38156") @Directive44(argument97 : ["stringValue38155"]) { + field43791: Boolean + field43792: String + field43793: String + field43794: String + field43795: [Object8425] + field43796: Object8481 + field43816: String + field43817: String + field43818: String + field43819: String + field43820: String + field43821: String + field43822: String + field43823: String + field43824: [Object8479] + field43825: [String] + field43826: String + field43827: Int + field43828: Boolean + field43829: Boolean + field43830: String + field43831: String + field43832: String + field43833: Int + field43834: String + field43835: [String] + field43836: String + field43837: String + field43838: Enum2067 + field43839: Boolean + field43840: String + field43841: Object8483 + field43851: Object2161 + field43852: String + field43853: Interface105 +} + +type Object8481 @Directive21(argument61 : "stringValue38158") @Directive44(argument97 : ["stringValue38157"]) { + field43797: [Int] + field43798: Int + field43799: Int + field43800: Int + field43801: [Object8482] + field43805: String + field43806: String + field43807: Int + field43808: Boolean + field43809: Boolean + field43810: [Int] + field43811: [String] + field43812: [String] + field43813: Int + field43814: [String] + field43815: [String] +} + +type Object8482 @Directive21(argument61 : "stringValue38160") @Directive44(argument97 : ["stringValue38159"]) { + field43802: String + field43803: String + field43804: Boolean +} + +type Object8483 @Directive21(argument61 : "stringValue38162") @Directive44(argument97 : ["stringValue38161"]) { + field43842: Object8484 +} + +type Object8484 @Directive21(argument61 : "stringValue38164") @Directive44(argument97 : ["stringValue38163"]) { + field43843: Int + field43844: Int + field43845: Int + field43846: Int + field43847: String + field43848: Int + field43849: Int + field43850: [Object8425] +} + +type Object8485 @Directive21(argument61 : "stringValue38166") @Directive44(argument97 : ["stringValue38165"]) { + field43867: [Object8480] + field43868: Boolean + field43869: String + field43870: String + field43871: String + field43872: String + field43873: String + field43874: [Object8480] + field43875: String + field43876: String + field43877: String + field43878: String + field43879: String +} + +type Object8486 @Directive21(argument61 : "stringValue38169") @Directive44(argument97 : ["stringValue38168"]) { + field43890: Int + field43891: [String] +} + +type Object8487 @Directive21(argument61 : "stringValue38171") @Directive44(argument97 : ["stringValue38170"]) { + field43893: Int + field43894: Boolean +} + +type Object8488 @Directive21(argument61 : "stringValue38174") @Directive44(argument97 : ["stringValue38173"]) { + field43898: String + field43899: String + field43900: String + field43901: String + field43902: String + field43903: Object2161 + field43904: String + field43905: Object8489 + field43914: String + field43915: String + field43916: String + field43917: String + field43918: String + field43919: Int + field43920: Int + field43921: Scalar1 + field43922: Scalar2 + field43923: Enum2074 +} + +type Object8489 @Directive21(argument61 : "stringValue38176") @Directive44(argument97 : ["stringValue38175"]) { + field43906: String + field43907: String + field43908: String + field43909: String + field43910: Scalar2 + field43911: Scalar2 + field43912: Scalar2 + field43913: Scalar2 +} + +type Object849 @Directive22(argument62 : "stringValue4328") @Directive31 @Directive44(argument97 : ["stringValue4326", "stringValue4327"]) { + field4921: Scalar3 + field4922: Scalar3 +} + +type Object8490 @Directive21(argument61 : "stringValue38179") @Directive44(argument97 : ["stringValue38178"]) { + field43925: String + field43926: String + field43927: Object8474 + field43928: String + field43929: String + field43930: Float + field43931: Int + field43932: String + field43933: String + field43934: String + field43935: String + field43936: Scalar2 + field43937: Int + field43938: String + field43939: String +} + +type Object8491 @Directive21(argument61 : "stringValue38181") @Directive44(argument97 : ["stringValue38180"]) { + field43941: String + field43942: String + field43943: String + field43944: Object8474 + field43945: [Object8477] + field43946: Boolean + field43947: Boolean + field43948: String + field43949: Object8474 + field43950: Object8474 + field43951: Object8474 + field43952: String + field43953: Int +} + +type Object8492 @Directive21(argument61 : "stringValue38183") @Directive44(argument97 : ["stringValue38182"]) { + field43955: String + field43956: String + field43957: String + field43958: Enum2075 + field43959: Object8493 + field43962: Object8494 + field43964: String + field43965: Object8474 + field43966: Object8474 + field43967: Object8474 + field43968: Object8474 + field43969: Object8411 +} + +type Object8493 @Directive21(argument61 : "stringValue38186") @Directive44(argument97 : ["stringValue38185"]) { + field43960: String + field43961: String +} + +type Object8494 @Directive21(argument61 : "stringValue38188") @Directive44(argument97 : ["stringValue38187"]) { + field43963: String +} + +type Object8495 @Directive21(argument61 : "stringValue38190") @Directive44(argument97 : ["stringValue38189"]) { + field43971: Enum2076 + field43972: [Object8496] +} + +type Object8496 @Directive21(argument61 : "stringValue38193") @Directive44(argument97 : ["stringValue38192"]) { + field43973: String + field43974: String + field43975: [Object8401] + field43976: Object8272 +} + +type Object8497 @Directive21(argument61 : "stringValue38195") @Directive44(argument97 : ["stringValue38194"]) { + field43978: String + field43979: String + field43980: String + field43981: String +} + +type Object8498 @Directive21(argument61 : "stringValue38197") @Directive44(argument97 : ["stringValue38196"]) { + field43983: Int + field43984: String + field43985: Int + field43986: String + field43987: String + field43988: String + field43989: String + field43990: String + field43991: String +} + +type Object8499 @Directive21(argument61 : "stringValue38199") @Directive44(argument97 : ["stringValue38198"]) { + field43993: String + field43994: String + field43995: String + field43996: String +} + +type Object85 @Directive21(argument61 : "stringValue345") @Directive44(argument97 : ["stringValue344"]) { + field575: String + field576: Int + field577: Object86 + field588: Boolean + field589: Object87 + field601: Int +} + +type Object850 @Directive20(argument58 : "stringValue4330", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4329") @Directive31 @Directive44(argument97 : ["stringValue4331", "stringValue4332"]) { + field4923: [Object851!] + field4929: String + field4930: String +} + +type Object8500 @Directive21(argument61 : "stringValue38202") @Directive44(argument97 : ["stringValue38201"]) { + field43999: Scalar2! + field44000: String + field44001: String + field44002: String + field44003: [Object8454] + field44004: String +} + +type Object8501 @Directive21(argument61 : "stringValue38204") @Directive44(argument97 : ["stringValue38203"]) { + field44006: [Object8502] + field44017: String + field44018: String + field44019: String! + field44020: String + field44021: String + field44022: Enum2079 +} + +type Object8502 @Directive21(argument61 : "stringValue38206") @Directive44(argument97 : ["stringValue38205"]) { + field44007: Boolean + field44008: String + field44009: String + field44010: String + field44011: [Object8425] + field44012: String + field44013: Int + field44014: String + field44015: String + field44016: Enum2078 +} + +type Object8503 @Directive21(argument61 : "stringValue38210") @Directive44(argument97 : ["stringValue38209"]) { + field44024: String + field44025: String + field44026: String + field44027: String + field44028: Object8274 + field44029: Object8274 + field44030: Object8274 + field44031: Object8274 + field44032: String + field44033: Object8468 + field44034: String + field44035: String + field44036: Object2161 + field44037: String + field44038: String + field44039: String +} + +type Object8504 @Directive21(argument61 : "stringValue38212") @Directive44(argument97 : ["stringValue38211"]) { + field44041: Enum2080 + field44042: Object8412 + field44043: Object8505 + field44047: String + field44048: String +} + +type Object8505 @Directive21(argument61 : "stringValue38215") @Directive44(argument97 : ["stringValue38214"]) { + field44044: String + field44045: String + field44046: String +} + +type Object8506 @Directive21(argument61 : "stringValue38217") @Directive44(argument97 : ["stringValue38216"]) { + field44050: String + field44051: String + field44052: String + field44053: String + field44054: String + field44055: String + field44056: String +} + +type Object8507 @Directive21(argument61 : "stringValue38219") @Directive44(argument97 : ["stringValue38218"]) { + field44058: String + field44059: String + field44060: String + field44061: Object2161 + field44062: Object8474 +} + +type Object8508 @Directive21(argument61 : "stringValue38221") @Directive44(argument97 : ["stringValue38220"]) { + field44064: String + field44065: String + field44066: Object2161 + field44067: String +} + +type Object8509 @Directive21(argument61 : "stringValue38223") @Directive44(argument97 : ["stringValue38222"]) { + field44069: String + field44070: String + field44071: String + field44072: String + field44073: String + field44074: String + field44075: Object8404 + field44076: Object8401 + field44077: Object2161 +} + +type Object851 @Directive20(argument58 : "stringValue4334", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4333") @Directive31 @Directive44(argument97 : ["stringValue4335", "stringValue4336"]) { + field4924: Enum10 + field4925: Object480 + field4926: String + field4927: String + field4928: [Object480!] +} + +type Object8510 @Directive21(argument61 : "stringValue38225") @Directive44(argument97 : ["stringValue38224"]) { + field44079: String + field44080: String + field44081: String + field44082: String + field44083: Object8274 + field44084: [Object8274] + field44085: String + field44086: String + field44087: String + field44088: String + field44089: String + field44090: String + field44091: [Object8511] + field44096: String +} + +type Object8511 @Directive21(argument61 : "stringValue38227") @Directive44(argument97 : ["stringValue38226"]) { + field44092: Scalar2 + field44093: Enum2081 + field44094: String + field44095: [Object8346] +} + +type Object8512 @Directive21(argument61 : "stringValue38230") @Directive44(argument97 : ["stringValue38229"]) { + field44099: String + field44100: [Int] @deprecated + field44101: Object2161 + field44102: Boolean + field44103: String +} + +type Object8513 @Directive21(argument61 : "stringValue38232") @Directive44(argument97 : ["stringValue38231"]) { + field44105: String + field44106: [Object8514] + field44120: Object8272 +} + +type Object8514 @Directive21(argument61 : "stringValue38234") @Directive44(argument97 : ["stringValue38233"]) { + field44107: String + field44108: String + field44109: Object2161 + field44110: Object8274 + field44111: String + field44112: Object8474 + field44113: String + field44114: Object8475 + field44115: String + field44116: String + field44117: [Enum2014] + field44118: [Object2162] + field44119: Interface105 +} + +type Object8515 @Directive21(argument61 : "stringValue38236") @Directive44(argument97 : ["stringValue38235"]) { + field44122: String + field44123: [Object8516] + field44133: [Object8517] +} + +type Object8516 @Directive21(argument61 : "stringValue38238") @Directive44(argument97 : ["stringValue38237"]) { + field44124: String + field44125: String + field44126: String + field44127: String + field44128: String + field44129: String + field44130: String + field44131: String + field44132: [Object2162] +} + +type Object8517 @Directive21(argument61 : "stringValue38240") @Directive44(argument97 : ["stringValue38239"]) { + field44134: String + field44135: String + field44136: Enum2082 + field44137: [Object8518] +} + +type Object8518 @Directive21(argument61 : "stringValue38243") @Directive44(argument97 : ["stringValue38242"]) { + field44138: String + field44139: String + field44140: String + field44141: String + field44142: Object2161 +} + +type Object8519 @Directive21(argument61 : "stringValue38245") @Directive44(argument97 : ["stringValue38244"]) { + field44144: String + field44145: [Object8310] +} + +type Object852 @Directive20(argument58 : "stringValue4338", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4337") @Directive31 @Directive44(argument97 : ["stringValue4339", "stringValue4340"]) { + field4931: String + field4932: String + field4933: Object514 @deprecated + field4934: Object548 + field4935: String + field4936: String + field4937: Object480 + field4938: Object480 + field4939: Object480 + field4940: Object480 + field4941: Object480 + field4942: String + field4943: [Object853!] + field4970: [Object855!] + field4974: Boolean + field4975: String! + field4976: [Object856!] + field4979: Object1 + field4980: Object494 + field4981: Object1 + field4982: Object480 + field4983: Object480 + field4984: Object480 + field4985: Boolean + field4986: Boolean + field4987: Object480 + field4988: String + field4989: Object480 + field4990: Int + field4991: Int + field4992: Object452 + field4993: String + field4994: Object452 + field4995: String + field4996: Object857 + field5002: Object857 + field5003: Object480 + field5004: Object569 +} + +type Object8520 @Directive21(argument61 : "stringValue38247") @Directive44(argument97 : ["stringValue38246"]) { + field44147: String! @deprecated + field44148: Object8521 + field44171: Object8530 + field44184: String! + field44185: Object8533 + field44239: Object8550 +} + +type Object8521 @Directive21(argument61 : "stringValue38249") @Directive44(argument97 : ["stringValue38248"]) { + field44149: [Object8522] + field44154: Object8523 + field44161: Object8523 + field44162: String + field44163: Object8526 +} + +type Object8522 @Directive21(argument61 : "stringValue38251") @Directive44(argument97 : ["stringValue38250"]) { + field44150: String + field44151: String + field44152: String + field44153: String +} + +type Object8523 @Directive21(argument61 : "stringValue38253") @Directive44(argument97 : ["stringValue38252"]) { + field44155: Object8524 + field44159: Object8525 +} + +type Object8524 @Directive21(argument61 : "stringValue38255") @Directive44(argument97 : ["stringValue38254"]) { + field44156: String + field44157: String + field44158: Boolean +} + +type Object8525 @Directive21(argument61 : "stringValue38257") @Directive44(argument97 : ["stringValue38256"]) { + field44160: String +} + +type Object8526 @Directive21(argument61 : "stringValue38259") @Directive44(argument97 : ["stringValue38258"]) { + field44164: String + field44165: Enum2083 + field44166: Union285 +} + +type Object8527 @Directive21(argument61 : "stringValue38263") @Directive44(argument97 : ["stringValue38262"]) { + field44167: [Object8425] +} + +type Object8528 @Directive21(argument61 : "stringValue38265") @Directive44(argument97 : ["stringValue38264"]) { + field44168: [Object2162] @deprecated + field44169: Object2161 +} + +type Object8529 @Directive21(argument61 : "stringValue38267") @Directive44(argument97 : ["stringValue38266"]) { + field44170: String +} + +type Object853 @Directive20(argument58 : "stringValue4342", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue4341") @Directive31 @Directive44(argument97 : ["stringValue4343", "stringValue4344"]) { + field4944: String + field4945: String + field4946: Object514 @deprecated + field4947: Object548 + field4948: Object480 @deprecated + field4949: Object452 + field4950: Enum244 + field4951: Scalar3 + field4952: Scalar4 + field4953: String! + field4954: Int + field4955: Int + field4956: [Object854!] + field4964: [Object480!] @deprecated + field4965: [Object480!] @deprecated + field4966: Boolean + field4967: Boolean + field4968: Boolean + field4969: Object569 +} + +type Object8530 @Directive21(argument61 : "stringValue38269") @Directive44(argument97 : ["stringValue38268"]) { + field44172: [Object8522] + field44173: Object8523 + field44174: Object8523 + field44175: Object8523 + field44176: Object8523 + field44177: Object8526 + field44178: Object8531 +} + +type Object8531 @Directive21(argument61 : "stringValue38271") @Directive44(argument97 : ["stringValue38270"]) { + field44179: Object8523 + field44180: Object8523 + field44181: [Object8532] +} + +type Object8532 @Directive21(argument61 : "stringValue38273") @Directive44(argument97 : ["stringValue38272"]) { + field44182: String + field44183: Enum2084 +} + +type Object8533 @Directive21(argument61 : "stringValue38276") @Directive44(argument97 : ["stringValue38275"]) { + field44186: Object8522 + field44187: Object8534 + field44194: Object8534 + field44195: Object8534 + field44196: Object8537 + field44201: [Object8539] + field44205: Object8540 + field44238: Union285 +} + +type Object8534 @Directive21(argument61 : "stringValue38278") @Directive44(argument97 : ["stringValue38277"]) { + field44188: Object8535 + field44191: Object8536 + field44193: String +} + +type Object8535 @Directive21(argument61 : "stringValue38280") @Directive44(argument97 : ["stringValue38279"]) { + field44189: String + field44190: String +} + +type Object8536 @Directive21(argument61 : "stringValue38282") @Directive44(argument97 : ["stringValue38281"]) { + field44192: String +} + +type Object8537 @Directive21(argument61 : "stringValue38284") @Directive44(argument97 : ["stringValue38283"]) { + field44197: [Object8538] +} + +type Object8538 @Directive21(argument61 : "stringValue38286") @Directive44(argument97 : ["stringValue38285"]) { + field44198: String + field44199: String + field44200: Scalar5 +} + +type Object8539 @Directive21(argument61 : "stringValue38288") @Directive44(argument97 : ["stringValue38287"]) { + field44202: String + field44203: String + field44204: String +} + +type Object854 @Directive20(argument58 : "stringValue4350", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4349") @Directive31 @Directive44(argument97 : ["stringValue4351", "stringValue4352"]) { + field4957: String + field4958: String + field4959: String + field4960: Object571 + field4961: Object1 + field4962: Enum245 + field4963: Union92 +} + +type Object8540 @Directive21(argument61 : "stringValue38290") @Directive44(argument97 : ["stringValue38289"]) { + field44206: [Union286] + field44232: Object8549 +} + +type Object8541 @Directive21(argument61 : "stringValue38293") @Directive44(argument97 : ["stringValue38292"]) { + field44207: Object8522 + field44208: Object8542 + field44213: Object8534 + field44214: Object8534 + field44215: String + field44216: Object8534 + field44217: Object8534 + field44218: Object8544 + field44221: Object8545 +} + +type Object8542 @Directive21(argument61 : "stringValue38295") @Directive44(argument97 : ["stringValue38294"]) { + field44209: Object8543 + field44212: String +} + +type Object8543 @Directive21(argument61 : "stringValue38297") @Directive44(argument97 : ["stringValue38296"]) { + field44210: String + field44211: String +} + +type Object8544 @Directive21(argument61 : "stringValue38299") @Directive44(argument97 : ["stringValue38298"]) { + field44219: String + field44220: String +} + +type Object8545 @Directive21(argument61 : "stringValue38301") @Directive44(argument97 : ["stringValue38300"]) { + field44222: [String] + field44223: String + field44224: Object8546 +} + +type Object8546 @Directive21(argument61 : "stringValue38303") @Directive44(argument97 : ["stringValue38302"]) { + field44225: String + field44226: [String] + field44227: [Object8547] +} + +type Object8547 @Directive21(argument61 : "stringValue38305") @Directive44(argument97 : ["stringValue38304"]) { + field44228: String + field44229: String +} + +type Object8548 @Directive21(argument61 : "stringValue38307") @Directive44(argument97 : ["stringValue38306"]) { + field44230: String + field44231: Object8543 +} + +type Object8549 @Directive21(argument61 : "stringValue38309") @Directive44(argument97 : ["stringValue38308"]) { + field44233: Object8534 + field44234: String + field44235: [Object8539] + field44236: [Object8539] + field44237: Object8526 +} + +type Object855 @Directive22(argument62 : "stringValue4357") @Directive31 @Directive44(argument97 : ["stringValue4358", "stringValue4359"]) { + field4971: Scalar3 + field4972: Int @deprecated + field4973: Boolean +} + +type Object8550 @Directive21(argument61 : "stringValue38311") @Directive44(argument97 : ["stringValue38310"]) { + field44240: Object8522 + field44241: Object8534 + field44242: Object8534 + field44243: Object8543 + field44244: [Object8539] + field44245: Object8551 + field44248: Union285 +} + +type Object8551 @Directive21(argument61 : "stringValue38313") @Directive44(argument97 : ["stringValue38312"]) { + field44246: [Object8539] + field44247: Object8526 +} + +type Object8552 @Directive21(argument61 : "stringValue38315") @Directive44(argument97 : ["stringValue38314"]) { + field44250: String! @deprecated + field44251: Object8553 + field44256: Object8555 + field44265: String! +} + +type Object8553 @Directive21(argument61 : "stringValue38317") @Directive44(argument97 : ["stringValue38316"]) { + field44252: String + field44253: String + field44254: [Object8554] +} + +type Object8554 @Directive21(argument61 : "stringValue38319") @Directive44(argument97 : ["stringValue38318"]) { + field44255: String +} + +type Object8555 @Directive21(argument61 : "stringValue38321") @Directive44(argument97 : ["stringValue38320"]) { + field44257: [Object8522] + field44258: String + field44259: String + field44260: Object8523 + field44261: Object8523 + field44262: Object8523 + field44263: Object8531 + field44264: Union285 +} + +type Object8556 @Directive21(argument61 : "stringValue38323") @Directive44(argument97 : ["stringValue38322"]) { + field44268: String + field44269: String + field44270: Object2161 + field44271: Object8474 + field44272: Object8474 + field44273: Object8474 + field44274: Object8474 + field44275: Object8276 + field44276: Float + field44277: Object8475 + field44278: Object8311 + field44279: String + field44280: String +} + +type Object8557 @Directive21(argument61 : "stringValue38325") @Directive44(argument97 : ["stringValue38324"]) { + field44283: [Object8558] + field44289: Object8560 +} + +type Object8558 @Directive21(argument61 : "stringValue38327") @Directive44(argument97 : ["stringValue38326"]) { + field44284: [Object8559] + field44288: Enum2085 +} + +type Object8559 @Directive21(argument61 : "stringValue38329") @Directive44(argument97 : ["stringValue38328"]) { + field44285: String + field44286: [Object8425] + field44287: [String] +} + +type Object856 @Directive20(argument58 : "stringValue4361", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4360") @Directive31 @Directive44(argument97 : ["stringValue4362", "stringValue4363"]) { + field4977: String + field4978: [String!] +} + +type Object8560 @Directive21(argument61 : "stringValue38332") @Directive44(argument97 : ["stringValue38331"]) { + field44290: String + field44291: String + field44292: String +} + +type Object8561 @Directive21(argument61 : "stringValue38334") @Directive44(argument97 : ["stringValue38333"]) { + field44295: Enum2086 + field44296: Boolean + field44297: Object8562 + field44311: String + field44312: String + field44313: String + field44314: String + field44315: String + field44316: String + field44317: Object8563 + field44331: Object2169 + field44332: Boolean +} + +type Object8562 @Directive21(argument61 : "stringValue38337") @Directive44(argument97 : ["stringValue38336"]) { + field44298: String + field44299: String + field44300: String + field44301: String + field44302: Enum2086 + field44303: String + field44304: String + field44305: Boolean + field44306: Boolean + field44307: Int + field44308: Int + field44309: Int + field44310: [Object8425] +} + +type Object8563 @Directive21(argument61 : "stringValue38339") @Directive44(argument97 : ["stringValue38338"]) { + field44318: String + field44319: String + field44320: String + field44321: String + field44322: Object8564 +} + +type Object8564 @Directive21(argument61 : "stringValue38341") @Directive44(argument97 : ["stringValue38340"]) { + field44323: String + field44324: Object8565 + field44329: Object8565 + field44330: Object8565 +} + +type Object8565 @Directive21(argument61 : "stringValue38343") @Directive44(argument97 : ["stringValue38342"]) { + field44325: String + field44326: String + field44327: Int + field44328: Int +} + +type Object8566 @Directive21(argument61 : "stringValue38345") @Directive44(argument97 : ["stringValue38344"]) { + field44334: String! + field44335: Object8412 + field44336: Object8567 + field44338: String! + field44339: Object8568 + field44350: Object8570 +} + +type Object8567 @Directive21(argument61 : "stringValue38347") @Directive44(argument97 : ["stringValue38346"]) { + field44337: String +} + +type Object8568 @Directive21(argument61 : "stringValue38349") @Directive44(argument97 : ["stringValue38348"]) { + field44340: String + field44341: Object8569 + field44346: [Object8412] + field44347: Object2161 + field44348: String + field44349: String +} + +type Object8569 @Directive21(argument61 : "stringValue38351") @Directive44(argument97 : ["stringValue38350"]) { + field44342: String + field44343: String + field44344: String + field44345: String +} + +type Object857 @Directive20(argument58 : "stringValue4365", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4364") @Directive31 @Directive44(argument97 : ["stringValue4366", "stringValue4367"]) { + field4997: Object548 + field4998: Object548 + field4999: Object548 + field5000: Object548 + field5001: Object548 +} + +type Object8570 @Directive21(argument61 : "stringValue38353") @Directive44(argument97 : ["stringValue38352"]) { + field44351: String + field44352: Object8569 + field44353: [Object8273] +} + +type Object8571 @Directive21(argument61 : "stringValue38355") @Directive44(argument97 : ["stringValue38354"]) { + field44355: String + field44356: String + field44357: String + field44358: String +} + +type Object8572 @Directive21(argument61 : "stringValue38357") @Directive44(argument97 : ["stringValue38356"]) { + field44360: String + field44361: String + field44362: Object8475 + field44363: Object8311 + field44364: [Object8474] + field44365: [Object8474] + field44366: [Object8474] + field44367: [Object8474] + field44368: Enum2087 + field44369: [Object8573] +} + +type Object8573 @Directive21(argument61 : "stringValue38360") @Directive44(argument97 : ["stringValue38359"]) { + field44370: String + field44371: String + field44372: Object8574 +} + +type Object8574 @Directive21(argument61 : "stringValue38362") @Directive44(argument97 : ["stringValue38361"]) { + field44373: Enum2088 + field44374: Object2161 + field44375: Enum2089 + field44376: Union287 + field44390: String +} + +type Object8575 @Directive21(argument61 : "stringValue38367") @Directive44(argument97 : ["stringValue38366"]) { + field44377: String + field44378: String + field44379: String + field44380: Object8576 + field44383: Scalar4 + field44384: Scalar4 + field44385: String +} + +type Object8576 @Directive21(argument61 : "stringValue38369") @Directive44(argument97 : ["stringValue38368"]) { + field44381: Enum2090 + field44382: String +} + +type Object8577 @Directive21(argument61 : "stringValue38372") @Directive44(argument97 : ["stringValue38371"]) { + field44386: String + field44387: String + field44388: String + field44389: [Object8576] +} + +type Object8578 @Directive21(argument61 : "stringValue38374") @Directive44(argument97 : ["stringValue38373"]) { + field44392: String + field44393: String + field44394: String + field44395: Object8274 + field44396: Object8274 + field44397: Object8274 +} + +type Object8579 @Directive21(argument61 : "stringValue38376") @Directive44(argument97 : ["stringValue38375"]) { + field44399: Scalar2 + field44400: String + field44401: String + field44402: String + field44403: String + field44404: Enum2077 + field44405: String +} + +type Object858 @Directive20(argument58 : "stringValue4369", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4368") @Directive31 @Directive44(argument97 : ["stringValue4370", "stringValue4371"]) { + field5005: [Object480!] + field5006: Object569 +} + +type Object8580 @Directive21(argument61 : "stringValue38378") @Directive44(argument97 : ["stringValue38377"]) { + field44407: Enum2091 +} + +type Object8581 @Directive21(argument61 : "stringValue38381") @Directive44(argument97 : ["stringValue38380"]) { + field44409: Object8276 + field44410: Object8276 + field44411: Object8274 + field44412: Object8274 + field44413: Object8274 + field44414: [Object8310] + field44415: String + field44416: Object2161 +} + +type Object8582 @Directive21(argument61 : "stringValue38383") @Directive44(argument97 : ["stringValue38382"]) { + field44418: String + field44419: String + field44420: String + field44421: Object8274 + field44422: Object8274 + field44423: Object8274 +} + +type Object8583 @Directive21(argument61 : "stringValue38386") @Directive44(argument97 : ["stringValue38385"]) { + field44427: Scalar2 + field44428: String + field44429: Enum2041 + field44430: String + field44431: String + field44432: String + field44433: String + field44434: [Object8406] + field44435: String + field44436: String + field44437: Enum2015 + field44438: String + field44439: [Object8404] +} + +type Object8584 @Directive21(argument61 : "stringValue38388") @Directive44(argument97 : ["stringValue38387"]) { + field44441: String + field44442: String + field44443: String + field44444: Object2161 + field44445: Object8274 + field44446: Object8274 + field44447: Object8274 +} + +type Object8585 @Directive21(argument61 : "stringValue38390") @Directive44(argument97 : ["stringValue38389"]) { + field44449: String + field44450: Int + field44451: Int +} + +type Object8586 @Directive21(argument61 : "stringValue38392") @Directive44(argument97 : ["stringValue38391"]) { + field44455: Object8473 + field44456: Object8492 +} + +type Object8587 @Directive21(argument61 : "stringValue38394") @Directive44(argument97 : ["stringValue38393"]) { + field44458: Object2161 +} + +type Object8588 @Directive21(argument61 : "stringValue38396") @Directive44(argument97 : ["stringValue38395"]) { + field44460: String + field44461: String + field44462: String + field44463: Object8356 + field44464: Object8474 + field44465: Int + field44466: Object2161 +} + +type Object8589 @Directive21(argument61 : "stringValue38398") @Directive44(argument97 : ["stringValue38397"]) { + field44468: String +} + +type Object859 @Directive20(argument58 : "stringValue4373", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4372") @Directive31 @Directive44(argument97 : ["stringValue4374", "stringValue4375"]) { + field5007: Object480 + field5008: String + field5009: [Object480!] + field5010: String + field5011: String + field5012: String! +} + +type Object8590 @Directive21(argument61 : "stringValue38400") @Directive44(argument97 : ["stringValue38399"]) { + field44470: Object8591 + field44542: Object8591 + field44543: Object8591 +} + +type Object8591 @Directive21(argument61 : "stringValue38402") @Directive44(argument97 : ["stringValue38401"]) { + field44471: Object8592 + field44528: Object8280 + field44529: Object8280 + field44530: Object8280 + field44531: Object8604 + field44538: Interface107 + field44539: Object8287 + field44540: Object8592 + field44541: Object8284 +} + +type Object8592 @Directive21(argument61 : "stringValue38404") @Directive44(argument97 : ["stringValue38403"]) { + field44472: Enum2093 + field44473: Object8593 + field44479: Object8594 + field44485: Object8291 + field44486: Object8595 + field44489: Object8596 + field44492: Object2169 + field44493: Object8597 +} + +type Object8593 @Directive21(argument61 : "stringValue38407") @Directive44(argument97 : ["stringValue38406"]) { + field44474: String + field44475: String + field44476: String + field44477: Object8292 + field44478: String +} + +type Object8594 @Directive21(argument61 : "stringValue38409") @Directive44(argument97 : ["stringValue38408"]) { + field44480: String + field44481: String + field44482: String + field44483: Object8292 + field44484: String +} + +type Object8595 @Directive21(argument61 : "stringValue38411") @Directive44(argument97 : ["stringValue38410"]) { + field44487: String + field44488: Object2169 +} + +type Object8596 @Directive21(argument61 : "stringValue38413") @Directive44(argument97 : ["stringValue38412"]) { + field44490: [Object8593] + field44491: Object8292 +} + +type Object8597 @Directive21(argument61 : "stringValue38415") @Directive44(argument97 : ["stringValue38414"]) { + field44494: Object8598 + field44527: Object8292 +} + +type Object8598 implements Interface108 @Directive21(argument61 : "stringValue38417") @Directive44(argument97 : ["stringValue38416"]) { + field11594: String! + field11595: Enum428 + field11596: Float + field11597: String + field11598: Interface106 + field11599: Interface105 + field44495: Object2189 + field44496: String + field44497: String + field44498: Boolean + field44499: String + field44500: [Object8599!] + field44506: String + field44507: String + field44508: String + field44509: String + field44510: String + field44511: String + field44512: String + field44513: String + field44514: String + field44515: String + field44516: String + field44517: String + field44518: String + field44519: String + field44520: String + field44521: Object8601 +} + +type Object8599 @Directive21(argument61 : "stringValue38419") @Directive44(argument97 : ["stringValue38418"]) { + field44501: String + field44502: [Object8600!] + field44505: Object8600 +} + +type Object86 @Directive21(argument61 : "stringValue347") @Directive44(argument97 : ["stringValue346"]) { + field578: String + field579: Enum36 + field580: Enum47 + field581: String + field582: String + field583: Enum48 + field584: Object81 @deprecated + field585: Union9 @deprecated + field586: Object80 @deprecated + field587: Interface21 +} + +type Object860 @Directive20(argument58 : "stringValue4377", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4376") @Directive31 @Directive44(argument97 : ["stringValue4378", "stringValue4379"]) { + field5013: Object589 + field5014: Object589 +} + +type Object8600 @Directive21(argument61 : "stringValue38421") @Directive44(argument97 : ["stringValue38420"]) { + field44503: String + field44504: String +} + +type Object8601 @Directive21(argument61 : "stringValue38423") @Directive44(argument97 : ["stringValue38422"]) { + field44522: Object8602 + field44525: Object8603 +} + +type Object8602 @Directive21(argument61 : "stringValue38425") @Directive44(argument97 : ["stringValue38424"]) { + field44523: String! + field44524: [Object8599!] +} + +type Object8603 @Directive21(argument61 : "stringValue38427") @Directive44(argument97 : ["stringValue38426"]) { + field44526: String! +} + +type Object8604 @Directive21(argument61 : "stringValue38429") @Directive44(argument97 : ["stringValue38428"]) { + field44532: Enum2094 + field44533: Object8281 + field44534: Object8605 + field44537: Object8287 +} + +type Object8605 @Directive21(argument61 : "stringValue38432") @Directive44(argument97 : ["stringValue38431"]) { + field44535: Object8284 + field44536: Object8284 +} + +type Object8606 @Directive21(argument61 : "stringValue38434") @Directive44(argument97 : ["stringValue38433"]) { + field44545: Object8607 + field44549: String + field44550: String + field44551: String +} + +type Object8607 @Directive21(argument61 : "stringValue38436") @Directive44(argument97 : ["stringValue38435"]) { + field44546: String + field44547: String + field44548: String +} + +type Object8608 @Directive21(argument61 : "stringValue38438") @Directive44(argument97 : ["stringValue38437"]) { + field44555: Object8285 + field44556: Object8285 + field44557: Object8285 +} + +type Object8609 @Directive21(argument61 : "stringValue38440") @Directive44(argument97 : ["stringValue38439"]) { + field44559: Object8610 + field44562: Object8610 + field44563: Object8610 +} + +type Object861 @Directive22(argument62 : "stringValue4380") @Directive31 @Directive44(argument97 : ["stringValue4381", "stringValue4382"]) { + field5015: String + field5016: String + field5017: Object480 + field5018: [Object862!] +} + +type Object8610 @Directive21(argument61 : "stringValue38442") @Directive44(argument97 : ["stringValue38441"]) { + field44560: Object8280 + field44561: Object8280 +} + +type Object8611 @Directive21(argument61 : "stringValue38444") @Directive44(argument97 : ["stringValue38443"]) { + field44565: Object8612 + field44581: String + field44582: Interface105 +} + +type Object8612 @Directive21(argument61 : "stringValue38446") @Directive44(argument97 : ["stringValue38445"]) { + field44566: Object8613 + field44579: Object8613 + field44580: Object8613 +} + +type Object8613 @Directive21(argument61 : "stringValue38448") @Directive44(argument97 : ["stringValue38447"]) { + field44567: Object8280 + field44568: Object8280 + field44569: Object8280 + field44570: Object8280 + field44571: Object8604 + field44572: Object8284 + field44573: Object8592 + field44574: Object8593 + field44575: Object8614 +} + +type Object8614 @Directive21(argument61 : "stringValue38450") @Directive44(argument97 : ["stringValue38449"]) { + field44576: Object8604 + field44577: Object8615 +} + +type Object8615 @Directive21(argument61 : "stringValue38452") @Directive44(argument97 : ["stringValue38451"]) { + field44578: [Object8280] +} + +type Object8616 @Directive21(argument61 : "stringValue38454") @Directive44(argument97 : ["stringValue38453"]) { + field44584: Object8617 + field44595: String + field44596: Interface105 +} + +type Object8617 @Directive21(argument61 : "stringValue38456") @Directive44(argument97 : ["stringValue38455"]) { + field44585: Object8618 + field44592: Object8618 + field44593: Object8618 + field44594: Object8618 +} + +type Object8618 @Directive21(argument61 : "stringValue38458") @Directive44(argument97 : ["stringValue38457"]) { + field44586: Object8280 + field44587: Object8280 + field44588: Object8280 + field44589: Object8284 + field44590: Object8592 + field44591: Object8593 +} + +type Object8619 @Directive21(argument61 : "stringValue38460") @Directive44(argument97 : ["stringValue38459"]) { + field44598: Object8620 + field44603: Object8620 + field44604: Object8620 +} + +type Object862 @Directive22(argument62 : "stringValue4383") @Directive31 @Directive44(argument97 : ["stringValue4384", "stringValue4385"]) { + field5019: String + field5020: [Object863!] +} + +type Object8620 @Directive21(argument61 : "stringValue38462") @Directive44(argument97 : ["stringValue38461"]) { + field44599: Object8280 + field44600: Interface107 + field44601: String + field44602: Object8592 +} + +type Object8621 @Directive21(argument61 : "stringValue38464") @Directive44(argument97 : ["stringValue38463"]) { + field44608: Object8622 + field44611: Object8622 + field44612: Object8622 +} + +type Object8622 @Directive21(argument61 : "stringValue38466") @Directive44(argument97 : ["stringValue38465"]) { + field44609: Float + field44610: Float +} + +type Object8623 @Directive21(argument61 : "stringValue38468") @Directive44(argument97 : ["stringValue38467"]) { + field44616: Object8624! + field44656: Enum2097! + field44657: Object8630! + field44660: Object8631 +} + +type Object8624 @Directive21(argument61 : "stringValue38470") @Directive44(argument97 : ["stringValue38469"]) { + field44617: Object8625 + field44639: Object8628 +} + +type Object8625 @Directive21(argument61 : "stringValue38472") @Directive44(argument97 : ["stringValue38471"]) { + field44618: Object8626 + field44631: String + field44632: String! + field44633: String + field44634: String! + field44635: Enum2096! + field44636: Object8298 + field44637: String + field44638: String +} + +type Object8626 @Directive21(argument61 : "stringValue38474") @Directive44(argument97 : ["stringValue38473"]) { + field44619: String + field44620: String + field44621: String + field44622: Enum2095 + field44623: Boolean + field44624: [Object8627] + field44627: String + field44628: String + field44629: String + field44630: [Object8627] +} + +type Object8627 @Directive21(argument61 : "stringValue38477") @Directive44(argument97 : ["stringValue38476"]) { + field44625: String! + field44626: String +} + +type Object8628 @Directive21(argument61 : "stringValue38480") @Directive44(argument97 : ["stringValue38479"]) { + field44640: Object8626 + field44641: String + field44642: String! + field44643: String + field44644: String! + field44645: Enum2096! + field44646: Object8298 + field44647: String + field44648: String + field44649: Object8629 +} + +type Object8629 @Directive21(argument61 : "stringValue38482") @Directive44(argument97 : ["stringValue38481"]) { + field44650: String + field44651: String + field44652: String + field44653: String + field44654: String + field44655: String +} + +type Object863 @Directive22(argument62 : "stringValue4386") @Directive31 @Directive44(argument97 : ["stringValue4387", "stringValue4388"]) { + field5021: Int + field5022: String + field5023: String + field5024: Interface3 +} + +type Object8630 @Directive21(argument61 : "stringValue38485") @Directive44(argument97 : ["stringValue38484"]) { + field44658: String + field44659: [String] +} + +type Object8631 @Directive21(argument61 : "stringValue38487") @Directive44(argument97 : ["stringValue38486"]) { + field44661: Enum2098! + field44662: Object2161 + field44663: String + field44664: [String] @deprecated + field44665: [String] +} + +type Object8632 @Directive21(argument61 : "stringValue38490") @Directive44(argument97 : ["stringValue38489"]) { + field44666: Object8149! + field44667: Enum2099! + field44668: String! + field44669: String! + field44670: Object8245! +} + +type Object8633 @Directive21(argument61 : "stringValue38493") @Directive44(argument97 : ["stringValue38492"]) { + field44671: [Object8634]! + field44701: Object8245 +} + +type Object8634 @Directive21(argument61 : "stringValue38495") @Directive44(argument97 : ["stringValue38494"]) { + field44672: Object8635! + field44680: String! + field44681: String + field44682: Scalar2! + field44683: String + field44684: Int! + field44685: Object8636 + field44689: [Object8637] +} + +type Object8635 @Directive21(argument61 : "stringValue38497") @Directive44(argument97 : ["stringValue38496"]) { + field44673: String! + field44674: String! + field44675: String! + field44676: String! + field44677: Scalar2! + field44678: String + field44679: String +} + +type Object8636 @Directive21(argument61 : "stringValue38499") @Directive44(argument97 : ["stringValue38498"]) { + field44686: Object8635 + field44687: String + field44688: Scalar4 +} + +type Object8637 @Directive21(argument61 : "stringValue38501") @Directive44(argument97 : ["stringValue38500"]) { + field44690: Object8638 + field44697: Object8639 +} + +type Object8638 @Directive21(argument61 : "stringValue38503") @Directive44(argument97 : ["stringValue38502"]) { + field44691: String + field44692: String + field44693: String + field44694: String + field44695: Scalar2 + field44696: String +} + +type Object8639 @Directive21(argument61 : "stringValue38505") @Directive44(argument97 : ["stringValue38504"]) { + field44698: String + field44699: String + field44700: String +} + +type Object864 @Directive22(argument62 : "stringValue4389") @Directive31 @Directive44(argument97 : ["stringValue4390", "stringValue4391"]) { + field5025: String + field5026: [Object865!] + field5054: Object452 +} + +type Object8640 @Directive21(argument61 : "stringValue38507") @Directive44(argument97 : ["stringValue38506"]) { + field44702: String! + field44703: [Object8641]! + field44706: Object8245 + field44707: Object8154 + field44708: Union288 + field44713: [Object8164] + field44714: Object8149 + field44715: Object8149 + field44716: String + field44717: Object8247 + field44718: Boolean +} + +type Object8641 @Directive21(argument61 : "stringValue38509") @Directive44(argument97 : ["stringValue38508"]) { + field44704: String! + field44705: String! +} + +type Object8642 @Directive21(argument61 : "stringValue38512") @Directive44(argument97 : ["stringValue38511"]) { + field44709: Object8149 + field44710: String + field44711: String + field44712: Object8245 +} + +type Object8643 @Directive21(argument61 : "stringValue38514") @Directive44(argument97 : ["stringValue38513"]) { + field44719: [Object8644!]! +} + +type Object8644 @Directive21(argument61 : "stringValue38516") @Directive44(argument97 : ["stringValue38515"]) { + field44720: [Object8634]! + field44721: Int! + field44722: Float! + field44723: Float! + field44724: String + field44725: [Object8645!]! +} + +type Object8645 @Directive21(argument61 : "stringValue38518") @Directive44(argument97 : ["stringValue38517"]) { + field44726: String! + field44727: String! + field44728: Enum2100! +} + +type Object8646 @Directive21(argument61 : "stringValue38521") @Directive44(argument97 : ["stringValue38520"]) { + field44729: [Object8647] +} + +type Object8647 @Directive21(argument61 : "stringValue38523") @Directive44(argument97 : ["stringValue38522"]) { + field44730: String + field44731: String + field44732: Object8648 +} + +type Object8648 @Directive21(argument61 : "stringValue38525") @Directive44(argument97 : ["stringValue38524"]) { + field44733: String + field44734: String +} + +type Object8649 @Directive21(argument61 : "stringValue38527") @Directive44(argument97 : ["stringValue38526"]) { + field44735: [Object8208]! + field44736: Object8245 + field44737: Int +} + +type Object865 @Directive22(argument62 : "stringValue4392") @Directive31 @Directive44(argument97 : ["stringValue4393", "stringValue4394"]) { + field5027: String + field5028: String + field5029: String + field5030: String + field5031: Int + field5032: String + field5033: Object452 + field5034: Object866 + field5046: Object452 + field5047: Object452 + field5048: String + field5049: Object452 + field5050: Object452 + field5051: Object460 + field5052: Object452 + field5053: Scalar2 +} + +type Object8650 @Directive21(argument61 : "stringValue38529") @Directive44(argument97 : ["stringValue38528"]) { + field44738: [Object8651] +} + +type Object8651 @Directive21(argument61 : "stringValue38531") @Directive44(argument97 : ["stringValue38530"]) { + field44739: String! + field44740: String! + field44741: String + field44742: String + field44743: Object8245 + field44744: [Object8149] + field44745: String + field44746: Object8154 + field44747: Object8652 + field44750: Object8653 + field44753: Object8654 + field44764: Object8656 + field44777: Object8659 +} + +type Object8652 @Directive21(argument61 : "stringValue38533") @Directive44(argument97 : ["stringValue38532"]) { + field44748: String! + field44749: String +} + +type Object8653 @Directive21(argument61 : "stringValue38535") @Directive44(argument97 : ["stringValue38534"]) { + field44751: String! + field44752: [String] +} + +type Object8654 @Directive21(argument61 : "stringValue38537") @Directive44(argument97 : ["stringValue38536"]) { + field44754: String + field44755: [Object8655] +} + +type Object8655 @Directive21(argument61 : "stringValue38539") @Directive44(argument97 : ["stringValue38538"]) { + field44756: String + field44757: String + field44758: String + field44759: String + field44760: String + field44761: [String] + field44762: [String] + field44763: String +} + +type Object8656 @Directive21(argument61 : "stringValue38541") @Directive44(argument97 : ["stringValue38540"]) { + field44765: String! + field44766: Object8657 +} + +type Object8657 @Directive21(argument61 : "stringValue38543") @Directive44(argument97 : ["stringValue38542"]) { + field44767: Object8658 + field44770: String + field44771: String + field44772: String + field44773: String + field44774: String + field44775: Enum2101 + field44776: String +} + +type Object8658 @Directive21(argument61 : "stringValue38545") @Directive44(argument97 : ["stringValue38544"]) { + field44768: Float + field44769: Float +} + +type Object8659 @Directive21(argument61 : "stringValue38548") @Directive44(argument97 : ["stringValue38547"]) { + field44778: String! + field44779: [Object8151] +} + +type Object866 @Directive20(argument58 : "stringValue4396", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4395") @Directive31 @Directive44(argument97 : ["stringValue4397", "stringValue4398"]) { + field5035: String + field5036: String + field5037: String + field5038: String + field5039: Int + field5040: Int + field5041: Int + field5042: Int + field5043: Int + field5044: Boolean + field5045: Enum246 +} + +type Object8660 @Directive21(argument61 : "stringValue38550") @Directive44(argument97 : ["stringValue38549"]) { + field44780: [Object8661] +} + +type Object8661 @Directive21(argument61 : "stringValue38552") @Directive44(argument97 : ["stringValue38551"]) { + field44781: String! + field44782: String! + field44783: String + field44784: Object8149 + field44785: Object8245 + field44786: [Object8662] +} + +type Object8662 @Directive21(argument61 : "stringValue38554") @Directive44(argument97 : ["stringValue38553"]) { + field44787: Enum1997! + field44788: String! + field44789: Enum1998! + field44790: Boolean! + field44791: Union289 + field44800: String +} + +type Object8663 @Directive21(argument61 : "stringValue38557") @Directive44(argument97 : ["stringValue38556"]) { + field44792: String! + field44793: String + field44794: Object8154 + field44795: String +} + +type Object8664 @Directive21(argument61 : "stringValue38559") @Directive44(argument97 : ["stringValue38558"]) { + field44796: [Object8657] + field44797: Enum2102 + field44798: [Object8657] +} + +type Object8665 @Directive21(argument61 : "stringValue38562") @Directive44(argument97 : ["stringValue38561"]) { + field44799: String! +} + +type Object8666 @Directive21(argument61 : "stringValue38564") @Directive44(argument97 : ["stringValue38563"]) { + field44801: [Object8208] + field44802: String + field44803: String! + field44804: [Object8257] + field44805: Object8253 + field44806: Object8667 + field44810: Object8652 + field44811: Object8650 + field44812: Object8653 + field44813: Object8654 + field44814: Object8659 + field44815: Boolean + field44816: Int + field44817: String + field44818: String + field44819: String + field44820: Object8656 + field44821: Object8668 + field44830: [Object8149] + field44831: [Object8164] +} + +type Object8667 @Directive21(argument61 : "stringValue38566") @Directive44(argument97 : ["stringValue38565"]) { + field44807: String + field44808: String + field44809: Object8154 +} + +type Object8668 @Directive21(argument61 : "stringValue38568") @Directive44(argument97 : ["stringValue38567"]) { + field44822: String! + field44823: String! + field44824: String! + field44825: String! + field44826: String + field44827: String + field44828: String + field44829: Boolean! +} + +type Object8669 @Directive21(argument61 : "stringValue38570") @Directive44(argument97 : ["stringValue38569"]) { + field44832: Object8245 + field44833: String + field44834: [Object8670] +} + +type Object867 @Directive22(argument62 : "stringValue4403") @Directive31 @Directive44(argument97 : ["stringValue4404", "stringValue4405"]) { + field5055: Object868 + field5061: String + field5062: String + field5063: [Object830!] + field5064: String + field5065: String + field5066: Boolean + field5067: String + field5068: Object870 + field5073: Object872 + field5080: Object874 +} + +type Object8670 @Directive21(argument61 : "stringValue38572") @Directive44(argument97 : ["stringValue38571"]) { + field44835: String + field44836: [String] + field44837: Object8671 + field44845: Object8245 + field44846: String +} + +type Object8671 @Directive21(argument61 : "stringValue38574") @Directive44(argument97 : ["stringValue38573"]) { + field44838: Object8672 + field44842: Object8673 +} + +type Object8672 @Directive21(argument61 : "stringValue38576") @Directive44(argument97 : ["stringValue38575"]) { + field44839: String + field44840: String + field44841: Object8245 +} + +type Object8673 @Directive21(argument61 : "stringValue38578") @Directive44(argument97 : ["stringValue38577"]) { + field44843: String + field44844: String +} + +type Object8674 @Directive21(argument61 : "stringValue38580") @Directive44(argument97 : ["stringValue38579"]) { + field44847: [Object8675]! +} + +type Object8675 @Directive21(argument61 : "stringValue38582") @Directive44(argument97 : ["stringValue38581"]) { + field44848: Enum2103! + field44849: String! + field44850: String! + field44851: String! + field44852: Object8676 +} + +type Object8676 @Directive21(argument61 : "stringValue38585") @Directive44(argument97 : ["stringValue38584"]) { + field44853: String + field44854: Object8245 +} + +type Object8677 @Directive21(argument61 : "stringValue38587") @Directive44(argument97 : ["stringValue38586"]) { + field44855: [Object8244] +} + +type Object8678 @Directive21(argument61 : "stringValue38589") @Directive44(argument97 : ["stringValue38588"]) { + field44856: [Object8245]! +} + +type Object8679 @Directive21(argument61 : "stringValue38591") @Directive44(argument97 : ["stringValue38590"]) { + field44857: [Object8273] +} + +type Object868 @Directive22(argument62 : "stringValue4406") @Directive31 @Directive44(argument97 : ["stringValue4407", "stringValue4408"]) { + field5056: Object869 + field5060: Object869 +} + +type Object8680 @Directive21(argument61 : "stringValue38593") @Directive44(argument97 : ["stringValue38592"]) { + field44858: String! + field44859: [String!]! + field44860: Object8681! +} + +type Object8681 @Directive21(argument61 : "stringValue38595") @Directive44(argument97 : ["stringValue38594"]) { + field44861: String! + field44862: String! + field44863: String! + field44864: String! +} + +type Object8682 @Directive21(argument61 : "stringValue38597") @Directive44(argument97 : ["stringValue38596"]) { + field44865: [Object8683] +} + +type Object8683 @Directive21(argument61 : "stringValue38599") @Directive44(argument97 : ["stringValue38598"]) { + field44866: String + field44867: [String] + field44868: String +} + +type Object8684 @Directive21(argument61 : "stringValue38601") @Directive44(argument97 : ["stringValue38600"]) { + field44869: String! + field44870: String + field44871: String + field44872: [Object8245]! + field44873: Object8245 + field44874: Object8668 + field44875: Float! + field44876: Int! + field44877: String + field44878: Object8685 + field44882: Object8686 + field44889: String +} + +type Object8685 @Directive21(argument61 : "stringValue38603") @Directive44(argument97 : ["stringValue38602"]) { + field44879: String + field44880: String + field44881: String +} + +type Object8686 @Directive21(argument61 : "stringValue38605") @Directive44(argument97 : ["stringValue38604"]) { + field44883: String! + field44884: String! + field44885: Float! + field44886: Float! + field44887: Float! + field44888: Enum2104! +} + +type Object8687 @Directive21(argument61 : "stringValue38608") @Directive44(argument97 : ["stringValue38607"]) { + field44890: [Object8141] + field44891: Object8245 + field44892: Object8253 + field44893: Object8245 + field44894: Boolean +} + +type Object8688 @Directive21(argument61 : "stringValue38610") @Directive44(argument97 : ["stringValue38609"]) { + field44895: [Object8689] + field44901: Object8253 + field44902: Object8245 + field44903: Enum2105 + field44904: Boolean + field44905: Boolean +} + +type Object8689 @Directive21(argument61 : "stringValue38612") @Directive44(argument97 : ["stringValue38611"]) { + field44896: String + field44897: [Object8690] +} + +type Object869 @Directive22(argument62 : "stringValue4409") @Directive31 @Directive44(argument97 : ["stringValue4410", "stringValue4411"]) { + field5057: String + field5058: String + field5059: String +} + +type Object8690 @Directive21(argument61 : "stringValue38614") @Directive44(argument97 : ["stringValue38613"]) { + field44898: Object8141 @deprecated + field44899: Object8245 + field44900: Object8139 +} + +type Object8691 @Directive21(argument61 : "stringValue38617") @Directive44(argument97 : ["stringValue38616"]) { + field44906: Object8253 +} + +type Object8692 @Directive21(argument61 : "stringValue38619") @Directive44(argument97 : ["stringValue38618"]) { + field44907: String + field44908: [Object8693] + field44912: String + field44913: String + field44914: Object8686 +} + +type Object8693 @Directive21(argument61 : "stringValue38621") @Directive44(argument97 : ["stringValue38620"]) { + field44909: String + field44910: String + field44911: String +} + +type Object8694 @Directive21(argument61 : "stringValue38623") @Directive44(argument97 : ["stringValue38622"]) { + field44915: Object8208! + field44916: Boolean! +} + +type Object8695 @Directive21(argument61 : "stringValue38625") @Directive44(argument97 : ["stringValue38624"]) { + field44917: Object8649! + field44918: Object8684! + field44919: Object8267! + field44920: Object8674! + field44921: Object8691! +} + +type Object8696 @Directive21(argument61 : "stringValue38627") @Directive44(argument97 : ["stringValue38626"]) { + field44922: Object8684! + field44923: Object8674! + field44924: Object8691! +} + +type Object8697 @Directive21(argument61 : "stringValue38629") @Directive44(argument97 : ["stringValue38628"]) { + field44925: [String!]! +} + +type Object8698 @Directive21(argument61 : "stringValue38632") @Directive44(argument97 : ["stringValue38631"]) { + field44929: Object8699! + field44953: Scalar2! + field44954: Int! + field44955: Object8701! + field44980: Object8144! + field44981: Object8705 + field44987: Enum2040! + field44988: Object8706 + field45011: [Object8708] +} + +type Object8699 @Directive21(argument61 : "stringValue38634") @Directive44(argument97 : ["stringValue38633"]) { + field44930: String! + field44931: Float + field44932: Int + field44933: Object8154 + field44934: String! + field44935: Object8245! + field44936: Float + field44937: String + field44938: String + field44939: String! + field44940: Boolean + field44941: String + field44942: String! + field44943: [Object8248] + field44944: Object8700 + field44949: String + field44950: [Object8249] + field44951: String + field44952: String +} + +type Object87 @Directive21(argument61 : "stringValue351") @Directive44(argument97 : ["stringValue350"]) { + field590: Object77 + field591: Object88 + field599: Scalar5 + field600: Enum52 +} + +type Object870 @Directive22(argument62 : "stringValue4412") @Directive31 @Directive44(argument97 : ["stringValue4413", "stringValue4414"]) { + field5069: String + field5070: [Object871!] +} + +type Object8700 @Directive21(argument61 : "stringValue38636") @Directive44(argument97 : ["stringValue38635"]) { + field44945: String + field44946: String! + field44947: String! + field44948: Object8209 +} + +type Object8701 @Directive21(argument61 : "stringValue38638") @Directive44(argument97 : ["stringValue38637"]) { + field44956: Int + field44957: Boolean + field44958: Boolean + field44959: Boolean + field44960: String + field44961: [Object8149] + field44962: String + field44963: Boolean + field44964: [Object8244]! + field44965: String + field44966: String + field44967: Object8247 + field44968: Boolean + field44969: Object8702 + field44972: Object8703 + field44975: [Object8704] +} + +type Object8702 @Directive21(argument61 : "stringValue38640") @Directive44(argument97 : ["stringValue38639"]) { + field44970: String + field44971: String +} + +type Object8703 @Directive21(argument61 : "stringValue38642") @Directive44(argument97 : ["stringValue38641"]) { + field44973: String + field44974: String +} + +type Object8704 @Directive21(argument61 : "stringValue38644") @Directive44(argument97 : ["stringValue38643"]) { + field44976: Enum2107 + field44977: String + field44978: String + field44979: Boolean +} + +type Object8705 @Directive21(argument61 : "stringValue38647") @Directive44(argument97 : ["stringValue38646"]) { + field44982: String + field44983: [Object8149] + field44984: String + field44985: Object8154 + field44986: String +} + +type Object8706 @Directive21(argument61 : "stringValue38649") @Directive44(argument97 : ["stringValue38648"]) { + field44989: Boolean + field44990: String + field44991: String + field44992: String + field44993: Int + field44994: String + field44995: String + field44996: String + field44997: Int + field44998: String + field44999: String + field45000: String + field45001: [Object8707] + field45005: Object8245 + field45006: Enum2108 + field45007: String + field45008: String + field45009: String + field45010: String +} + +type Object8707 @Directive21(argument61 : "stringValue38651") @Directive44(argument97 : ["stringValue38650"]) { + field45002: String + field45003: String + field45004: Enum1295 +} + +type Object8708 @Directive21(argument61 : "stringValue38654") @Directive44(argument97 : ["stringValue38653"]) { + field45012: String + field45013: Object2161 +} + +type Object8709 @Directive21(argument61 : "stringValue38660") @Directive44(argument97 : ["stringValue38659"]) { + field45015: Object8172 + field45016: Scalar2 + field45017: String +} + +type Object871 @Directive22(argument62 : "stringValue4415") @Directive31 @Directive44(argument97 : ["stringValue4416", "stringValue4417"]) { + field5071: String + field5072: Int +} + +type Object8710 @Directive21(argument61 : "stringValue38667") @Directive44(argument97 : ["stringValue38666"]) { + field45019: [Object8269] + field45020: String + field45021: String + field45022: Object8711 + field45025: Object8712 + field45031: String + field45032: String +} + +type Object8711 @Directive21(argument61 : "stringValue38669") @Directive44(argument97 : ["stringValue38668"]) { + field45023: String + field45024: String +} + +type Object8712 @Directive21(argument61 : "stringValue38671") @Directive44(argument97 : ["stringValue38670"]) { + field45026: String + field45027: String + field45028: String + field45029: String + field45030: String +} + +type Object8713 @Directive21(argument61 : "stringValue38677") @Directive44(argument97 : ["stringValue38676"]) { + field45034: Boolean + field45035: String +} + +type Object8714 @Directive21(argument61 : "stringValue38683") @Directive44(argument97 : ["stringValue38682"]) { + field45037: [Object8712] + field45038: Object8715 +} + +type Object8715 @Directive21(argument61 : "stringValue38685") @Directive44(argument97 : ["stringValue38684"]) { + field45039: Scalar2 + field45040: String +} + +type Object8716 @Directive21(argument61 : "stringValue38691") @Directive44(argument97 : ["stringValue38690"]) { + field45042: Object8139 +} + +type Object8717 @Directive21(argument61 : "stringValue38701") @Directive44(argument97 : ["stringValue38700"]) { + field45045: Object8718 + field45081: Object8720 +} + +type Object8718 @Directive21(argument61 : "stringValue38703") @Directive44(argument97 : ["stringValue38702"]) { + field45046: String + field45047: Object8155 + field45048: String + field45049: String + field45050: Int + field45051: Scalar2 + field45052: String + field45053: Boolean + field45054: [Object8142] @deprecated + field45055: Scalar2 + field45056: String + field45057: Object8140 + field45058: String + field45059: String + field45060: [Object8719] + field45068: [Object8243] + field45069: String + field45070: Boolean + field45071: Boolean + field45072: String + field45073: String + field45074: String + field45075: [Object8168] + field45076: Object8176 + field45077: Boolean + field45078: Scalar2 + field45079: String + field45080: Boolean +} + +type Object8719 @Directive21(argument61 : "stringValue38705") @Directive44(argument97 : ["stringValue38704"]) { + field45061: Scalar2 + field45062: String + field45063: String + field45064: String + field45065: String + field45066: Boolean + field45067: Object8155 +} + +type Object872 @Directive22(argument62 : "stringValue4418") @Directive31 @Directive44(argument97 : ["stringValue4419", "stringValue4420"]) { + field5074: String + field5075: [Object873!] + field5079: Int +} + +type Object8720 @Directive21(argument61 : "stringValue38707") @Directive44(argument97 : ["stringValue38706"]) { + field45082: [Object8269]! + field45083: Object8721! +} + +type Object8721 @Directive21(argument61 : "stringValue38709") @Directive44(argument97 : ["stringValue38708"]) { + field45084: String + field45085: String + field45086: Boolean + field45087: Int + field45088: Int + field45089: Object8722 + field45137: Object8728 +} + +type Object8722 @Directive21(argument61 : "stringValue38711") @Directive44(argument97 : ["stringValue38710"]) { + field45090: Scalar2 + field45091: Scalar2 + field45092: Object8723 +} + +type Object8723 @Directive21(argument61 : "stringValue38713") @Directive44(argument97 : ["stringValue38712"]) { + field45093: Int + field45094: String + field45095: String + field45096: String + field45097: Float + field45098: Float + field45099: String + field45100: String + field45101: String + field45102: String + field45103: String + field45104: String + field45105: String + field45106: String + field45107: String + field45108: String + field45109: String + field45110: String + field45111: String + field45112: String + field45113: String + field45114: String + field45115: String + field45116: String + field45117: String + field45118: String + field45119: String + field45120: String + field45121: String + field45122: Object8724 + field45135: Boolean + field45136: Boolean +} + +type Object8724 @Directive21(argument61 : "stringValue38715") @Directive44(argument97 : ["stringValue38714"]) { + field45123: String + field45124: String + field45125: [Object8725] + field45129: Float + field45130: Float + field45131: Float + field45132: Object8727 +} + +type Object8725 @Directive21(argument61 : "stringValue38717") @Directive44(argument97 : ["stringValue38716"]) { + field45126: [Object8726] +} + +type Object8726 @Directive21(argument61 : "stringValue38719") @Directive44(argument97 : ["stringValue38718"]) { + field45127: String + field45128: String +} + +type Object8727 @Directive21(argument61 : "stringValue38721") @Directive44(argument97 : ["stringValue38720"]) { + field45133: Object8658 + field45134: Object8658 +} + +type Object8728 @Directive21(argument61 : "stringValue38723") @Directive44(argument97 : ["stringValue38722"]) { + field45138: Scalar2 + field45139: String + field45140: String + field45141: String + field45142: String + field45143: Scalar2 + field45144: String + field45145: Scalar4 + field45146: Scalar4 + field45147: String + field45148: String + field45149: String + field45150: Scalar2 + field45151: String + field45152: String + field45153: Boolean + field45154: Enum2051 + field45155: Boolean + field45156: String + field45157: Scalar2 +} + +type Object8729 @Directive21(argument61 : "stringValue38729") @Directive44(argument97 : ["stringValue38728"]) { + field45159: Boolean! + field45160: Union290 +} + +type Object873 @Directive22(argument62 : "stringValue4421") @Directive31 @Directive44(argument97 : ["stringValue4422", "stringValue4423"]) { + field5076: String + field5077: String + field5078: Int +} + +type Object8730 @Directive21(argument61 : "stringValue38732") @Directive44(argument97 : ["stringValue38731"]) { + field45161: [String]! + field45162: String! +} + +type Object8731 @Directive21(argument61 : "stringValue38734") @Directive44(argument97 : ["stringValue38733"]) { + field45163: [String]! + field45164: Scalar2! +} + +type Object8732 @Directive44(argument97 : ["stringValue38735"]) { + field45166: Object8733 @Directive35(argument89 : "stringValue38737", argument90 : true, argument91 : "stringValue38736", argument92 : 723, argument93 : "stringValue38738", argument94 : false) + field45203(argument2208: InputObject1747!): Object8739 @Directive35(argument89 : "stringValue38752", argument90 : true, argument91 : "stringValue38751", argument92 : 724, argument93 : "stringValue38753", argument94 : false) +} + +type Object8733 @Directive21(argument61 : "stringValue38740") @Directive44(argument97 : ["stringValue38739"]) { + field45167: Scalar2! + field45168: Object8734! + field45179: Object8735! + field45192: Object8737! +} + +type Object8734 @Directive21(argument61 : "stringValue38742") @Directive44(argument97 : ["stringValue38741"]) { + field45169: String! + field45170: String! + field45171: String! + field45172: String! + field45173: String + field45174: Boolean! + field45175: Boolean! + field45176: Scalar2 + field45177: String + field45178: String +} + +type Object8735 @Directive21(argument61 : "stringValue38744") @Directive44(argument97 : ["stringValue38743"]) { + field45180: [Object8736] +} + +type Object8736 @Directive21(argument61 : "stringValue38746") @Directive44(argument97 : ["stringValue38745"]) { + field45181: Boolean + field45182: String! + field45183: String + field45184: String + field45185: Boolean + field45186: String + field45187: Scalar2 + field45188: String + field45189: String! + field45190: String + field45191: Boolean +} + +type Object8737 @Directive21(argument61 : "stringValue38748") @Directive44(argument97 : ["stringValue38747"]) { + field45193: [Object8738] +} + +type Object8738 @Directive21(argument61 : "stringValue38750") @Directive44(argument97 : ["stringValue38749"]) { + field45194: Scalar4 + field45195: Scalar4 + field45196: String + field45197: String + field45198: Boolean + field45199: String + field45200: String + field45201: String + field45202: Scalar2! +} + +type Object8739 @Directive21(argument61 : "stringValue38756") @Directive44(argument97 : ["stringValue38755"]) { + field45204: Scalar2! + field45205: Boolean! + field45206: Enum1305 + field45207: Enum2110 +} + +type Object874 @Directive22(argument62 : "stringValue4424") @Directive31 @Directive44(argument97 : ["stringValue4425", "stringValue4426"]) { + field5081: String + field5082: [Object875!] +} + +type Object8740 @Directive44(argument97 : ["stringValue38758"]) { + field45209: Object8741 @Directive35(argument89 : "stringValue38760", argument90 : true, argument91 : "stringValue38759", argument92 : 725, argument93 : "stringValue38761", argument94 : false) + field45237(argument2209: InputObject1748!): Object8741 @Directive35(argument89 : "stringValue38779", argument90 : true, argument91 : "stringValue38778", argument92 : 726, argument93 : "stringValue38780", argument94 : false) + field45238(argument2210: InputObject1749!): Object8748 @Directive35(argument89 : "stringValue38784", argument90 : true, argument91 : "stringValue38783", argument92 : 727, argument93 : "stringValue38785", argument94 : false) + field45282: Object8759 @Directive35(argument89 : "stringValue38819", argument90 : true, argument91 : "stringValue38818", argument92 : 728, argument93 : "stringValue38820", argument94 : false) + field45285: Object8760 @Directive35(argument89 : "stringValue38824", argument90 : true, argument91 : "stringValue38823", argument92 : 729, argument93 : "stringValue38825", argument94 : false) + field45290(argument2211: InputObject1757!): Object8760 @Directive35(argument89 : "stringValue38831", argument90 : true, argument91 : "stringValue38830", argument92 : 730, argument93 : "stringValue38832", argument94 : false) +} + +type Object8741 @Directive21(argument61 : "stringValue38763") @Directive44(argument97 : ["stringValue38762"]) { + field45210: [Object8742] +} + +type Object8742 @Directive21(argument61 : "stringValue38765") @Directive44(argument97 : ["stringValue38764"]) { + field45211: String! + field45212: String + field45213: Object8743 + field45217: Scalar2 + field45218: Scalar2 + field45219: Object8744 + field45228: Object8746 + field45232: Boolean + field45233: [Object8747] +} + +type Object8743 @Directive21(argument61 : "stringValue38767") @Directive44(argument97 : ["stringValue38766"]) { + field45214: String + field45215: String + field45216: String +} + +type Object8744 @Directive21(argument61 : "stringValue38769") @Directive44(argument97 : ["stringValue38768"]) { + field45220: Boolean + field45221: Boolean + field45222: Boolean + field45223: Boolean + field45224: [Object8745] + field45226: [String] + field45227: [Enum2111] +} + +type Object8745 @Directive21(argument61 : "stringValue38771") @Directive44(argument97 : ["stringValue38770"]) { + field45225: String +} + +type Object8746 @Directive21(argument61 : "stringValue38774") @Directive44(argument97 : ["stringValue38773"]) { + field45229: String + field45230: String + field45231: Scalar1 +} + +type Object8747 @Directive21(argument61 : "stringValue38776") @Directive44(argument97 : ["stringValue38775"]) { + field45234: String + field45235: Enum2112 + field45236: [String] +} + +type Object8748 @Directive21(argument61 : "stringValue38796") @Directive44(argument97 : ["stringValue38795"]) { + field45239: [Object8749] + field45268: Object8756 + field45270: Boolean + field45271: Object8756 + field45272: Boolean + field45273: Object8757 +} + +type Object8749 @Directive21(argument61 : "stringValue38798") @Directive44(argument97 : ["stringValue38797"]) { + field45240: Object8750 + field45244: Object8751 + field45249: Object8751 + field45250: Object8751 + field45251: [Object8753] + field45253: Object8744 + field45254: Boolean + field45255: Scalar4 + field45256: [Object8754] + field45260: Object8746 + field45261: Boolean + field45262: [Object8755] + field45265: Object8751 + field45266: Scalar2 + field45267: [Object8747] +} + +type Object875 @Directive22(argument62 : "stringValue4427") @Directive31 @Directive44(argument97 : ["stringValue4428", "stringValue4429"]) { + field5083: Boolean + field5084: String + field5085: String +} + +type Object8750 @Directive21(argument61 : "stringValue38800") @Directive44(argument97 : ["stringValue38799"]) { + field45241: Scalar2 + field45242: Scalar2 @deprecated + field45243: String +} + +type Object8751 @Directive21(argument61 : "stringValue38802") @Directive44(argument97 : ["stringValue38801"]) { + field45245: [Object8752]! + field45248: String! +} + +type Object8752 @Directive21(argument61 : "stringValue38804") @Directive44(argument97 : ["stringValue38803"]) { + field45246: String! + field45247: String +} + +type Object8753 @Directive21(argument61 : "stringValue38806") @Directive44(argument97 : ["stringValue38805"]) { + field45252: Object8743 +} + +type Object8754 @Directive21(argument61 : "stringValue38808") @Directive44(argument97 : ["stringValue38807"]) { + field45257: Object8743 + field45258: String + field45259: String +} + +type Object8755 @Directive21(argument61 : "stringValue38810") @Directive44(argument97 : ["stringValue38809"]) { + field45263: Scalar2 + field45264: String +} + +type Object8756 @Directive21(argument61 : "stringValue38812") @Directive44(argument97 : ["stringValue38811"]) { + field45269: String +} + +type Object8757 @Directive21(argument61 : "stringValue38814") @Directive44(argument97 : ["stringValue38813"]) { + field45274: String + field45275: String + field45276: Object8743 + field45277: Object8758 + field45281: Object8758 +} + +type Object8758 @Directive21(argument61 : "stringValue38816") @Directive44(argument97 : ["stringValue38815"]) { + field45278: String + field45279: Object8746 + field45280: Enum2115 +} + +type Object8759 @Directive21(argument61 : "stringValue38822") @Directive44(argument97 : ["stringValue38821"]) { + field45283: Enum1306 + field45284: [Enum1306] +} + +type Object876 @Directive22(argument62 : "stringValue4430") @Directive31 @Directive44(argument97 : ["stringValue4431", "stringValue4432"]) { + field5086: Int + field5087: String + field5088: String + field5089: String + field5090: String + field5091: String + field5092: Float + field5093: String + field5094: [Object452] + field5095: Object877 +} + +type Object8760 @Directive21(argument61 : "stringValue38827") @Directive44(argument97 : ["stringValue38826"]) { + field45286: [Object8761] +} + +type Object8761 @Directive21(argument61 : "stringValue38829") @Directive44(argument97 : ["stringValue38828"]) { + field45287: String! + field45288: String + field45289: Object8743 +} + +type Object8762 @Directive44(argument97 : ["stringValue38834"]) { + field45292(argument2212: InputObject1758!): Object8763 @Directive35(argument89 : "stringValue38836", argument90 : false, argument91 : "stringValue38835", argument92 : 731, argument93 : "stringValue38837", argument94 : false) +} + +type Object8763 @Directive21(argument61 : "stringValue38847") @Directive44(argument97 : ["stringValue38846"]) { + field45293: [Object8764] @deprecated + field45307: [Object8767] @deprecated + field45312: Object8768 + field45315: Object8768 + field45316: Object8769 + field45320: Object8771 +} + +type Object8764 @Directive21(argument61 : "stringValue38849") @Directive44(argument97 : ["stringValue38848"]) { + field45294: Object8765! + field45299: Float + field45300: String + field45301: Enum2123 + field45302: String + field45303: String + field45304: Object8766 +} + +type Object8765 @Directive21(argument61 : "stringValue38851") @Directive44(argument97 : ["stringValue38850"]) { + field45295: String! + field45296: String! + field45297: String! + field45298: String +} + +type Object8766 @Directive21(argument61 : "stringValue38854") @Directive44(argument97 : ["stringValue38853"]) { + field45305: String! + field45306: String! +} + +type Object8767 @Directive21(argument61 : "stringValue38856") @Directive44(argument97 : ["stringValue38855"]) { + field45308: String + field45309: String! + field45310: String! + field45311: String +} + +type Object8768 @Directive21(argument61 : "stringValue38858") @Directive44(argument97 : ["stringValue38857"]) { + field45313: [Object8764] + field45314: [Object8767] +} + +type Object8769 @Directive21(argument61 : "stringValue38860") @Directive44(argument97 : ["stringValue38859"]) { + field45317: [Object8770]! +} + +type Object877 implements Interface5 @Directive22(argument62 : "stringValue4433") @Directive31 @Directive44(argument97 : ["stringValue4434", "stringValue4435"]) { + field5096: String + field5097: Object878 + field5099: Boolean + field76: String + field77: String + field78: String +} + +type Object8770 @Directive21(argument61 : "stringValue38862") @Directive44(argument97 : ["stringValue38861"]) { + field45318: String + field45319: String +} + +type Object8771 @Directive21(argument61 : "stringValue38864") @Directive44(argument97 : ["stringValue38863"]) { + field45321: [String]! +} + +type Object8772 @Directive44(argument97 : ["stringValue38865"]) { + field45323: Object8773 @Directive35(argument89 : "stringValue38867", argument90 : true, argument91 : "stringValue38866", argument92 : 732, argument93 : "stringValue38868", argument94 : true) + field45330: Object8775 @Directive35(argument89 : "stringValue38874", argument90 : false, argument91 : "stringValue38873", argument92 : 733, argument93 : "stringValue38875", argument94 : true) + field45337(argument2213: InputObject1759!): Object8777 @Directive35(argument89 : "stringValue38882", argument90 : true, argument91 : "stringValue38881", argument92 : 734, argument93 : "stringValue38883", argument94 : true) + field45342(argument2214: InputObject1760!): Object8778 @Directive35(argument89 : "stringValue38889", argument90 : true, argument91 : "stringValue38888", argument92 : 735, argument93 : "stringValue38890", argument94 : true) + field45356(argument2215: InputObject1762!): Object8781 @Directive35(argument89 : "stringValue38900", argument90 : false, argument91 : "stringValue38899", argument92 : 736, argument93 : "stringValue38901", argument94 : true) + field45364: Object8783 @Directive35(argument89 : "stringValue38908", argument90 : false, argument91 : "stringValue38907", argument92 : 737, argument93 : "stringValue38909", argument94 : true) + field45371(argument2216: InputObject1763!): Object8786 @Directive35(argument89 : "stringValue38918", argument90 : true, argument91 : "stringValue38917", argument92 : 738, argument93 : "stringValue38919", argument94 : true) + field45392: Object8790 @Directive35(argument89 : "stringValue38930", argument90 : true, argument91 : "stringValue38929", argument92 : 739, argument93 : "stringValue38931", argument94 : true) + field45394(argument2217: InputObject1764!): Object8791 @Directive35(argument89 : "stringValue38935", argument90 : true, argument91 : "stringValue38934", argument93 : "stringValue38936", argument94 : true) +} + +type Object8773 @Directive21(argument61 : "stringValue38870") @Directive44(argument97 : ["stringValue38869"]) { + field45324: [Object8774] +} + +type Object8774 @Directive21(argument61 : "stringValue38872") @Directive44(argument97 : ["stringValue38871"]) { + field45325: String + field45326: String + field45327: Int + field45328: Object5216 + field45329: Scalar3 +} + +type Object8775 @Directive21(argument61 : "stringValue38877") @Directive44(argument97 : ["stringValue38876"]) { + field45331: [Object8776] +} + +type Object8776 @Directive21(argument61 : "stringValue38879") @Directive44(argument97 : ["stringValue38878"]) { + field45332: Enum2124 + field45333: String + field45334: String + field45335: String + field45336: String +} + +type Object8777 @Directive21(argument61 : "stringValue38887") @Directive44(argument97 : ["stringValue38886"]) { + field45338: String + field45339: String + field45340: String + field45341: String +} + +type Object8778 @Directive21(argument61 : "stringValue38894") @Directive44(argument97 : ["stringValue38893"]) { + field45343: Object8779! + field45347: [Object8780] +} + +type Object8779 @Directive21(argument61 : "stringValue38896") @Directive44(argument97 : ["stringValue38895"]) { + field45344: Scalar2 + field45345: String + field45346: Boolean +} + +type Object878 implements Interface3 @Directive20(argument58 : "stringValue4437", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4436") @Directive31 @Directive44(argument97 : ["stringValue4438", "stringValue4439"]) { + field4: Object1 + field5098: String + field74: String + field75: Scalar1 +} + +type Object8780 @Directive21(argument61 : "stringValue38898") @Directive44(argument97 : ["stringValue38897"]) { + field45348: String! + field45349: String! + field45350: Int! + field45351: String! + field45352: String! + field45353: String! + field45354: String! + field45355: String! +} + +type Object8781 @Directive21(argument61 : "stringValue38904") @Directive44(argument97 : ["stringValue38903"]) { + field45357: Object8779! + field45358: [Object8782] +} + +type Object8782 @Directive21(argument61 : "stringValue38906") @Directive44(argument97 : ["stringValue38905"]) { + field45359: Scalar2! + field45360: String! + field45361: String + field45362: String + field45363: String +} + +type Object8783 @Directive21(argument61 : "stringValue38911") @Directive44(argument97 : ["stringValue38910"]) { + field45365: [Object8784] +} + +type Object8784 @Directive21(argument61 : "stringValue38913") @Directive44(argument97 : ["stringValue38912"]) { + field45366: Enum2126 + field45367: String + field45368: [Object8785] +} + +type Object8785 @Directive21(argument61 : "stringValue38916") @Directive44(argument97 : ["stringValue38915"]) { + field45369: String + field45370: String +} + +type Object8786 @Directive21(argument61 : "stringValue38922") @Directive44(argument97 : ["stringValue38921"]) { + field45372: Object5214 + field45373: Object8787 + field45391: [Object8785] +} + +type Object8787 @Directive21(argument61 : "stringValue38924") @Directive44(argument97 : ["stringValue38923"]) { + field45374: Enum1311! + field45375: Int + field45376: Int + field45377: Object5216 + field45378: Object5216 + field45379: [Object8788] + field45384: [Object8789] + field45388: [Enum1312] + field45389: Enum1313 + field45390: Scalar3 +} + +type Object8788 @Directive21(argument61 : "stringValue38926") @Directive44(argument97 : ["stringValue38925"]) { + field45380: Scalar3 + field45381: Scalar3 + field45382: Int + field45383: Object5216 +} + +type Object8789 @Directive21(argument61 : "stringValue38928") @Directive44(argument97 : ["stringValue38927"]) { + field45385: Int + field45386: Int + field45387: Object5216 +} + +type Object879 @Directive22(argument62 : "stringValue4440") @Directive31 @Directive44(argument97 : ["stringValue4441", "stringValue4442"]) { + field5100: Object880 +} + +type Object8790 @Directive21(argument61 : "stringValue38933") @Directive44(argument97 : ["stringValue38932"]) { + field45393: [Enum1312] +} + +type Object8791 @Directive21(argument61 : "stringValue38939") @Directive44(argument97 : ["stringValue38938"]) { + field45395: String + field45396: String + field45397: String +} + +type Object8792 @Directive44(argument97 : ["stringValue38940"]) { + field45399(argument2218: InputObject1765!): Object8793 @Directive35(argument89 : "stringValue38942", argument90 : true, argument91 : "stringValue38941", argument93 : "stringValue38943", argument94 : false) +} + +type Object8793 @Directive21(argument61 : "stringValue38948") @Directive44(argument97 : ["stringValue38947"]) { + field45400: Enum2128 + field45401: [Object8794] + field45462: [Object8797] + field45476: [Object8798] + field45494: [Object8800] +} + +type Object8794 @Directive21(argument61 : "stringValue38951") @Directive44(argument97 : ["stringValue38950"]) { + field45402: Scalar2 + field45403: Scalar2 + field45404: String + field45405: String + field45406: Scalar2 + field45407: String + field45408: String + field45409: String + field45410: String + field45411: String + field45412: String + field45413: Object8795 @deprecated + field45416: Object8795 @deprecated + field45417: Object8795 + field45418: Scalar2 + field45419: Int + field45420: Int + field45421: Boolean + field45422: Boolean + field45423: Boolean + field45424: Object8795 + field45425: Int + field45426: String + field45427: String + field45428: Int + field45429: String + field45430: Enum2129 + field45431: String + field45432: Int + field45433: String + field45434: Int + field45435: Int + field45436: Scalar2 + field45437: Scalar2 + field45438: String + field45439: String + field45440: String + field45441: String + field45442: String + field45443: Scalar2 + field45444: Object8795 + field45445: Object8795 + field45446: Object8795 + field45447: Scalar2 + field45448: Scalar2 + field45449: Int + field45450: String + field45451: Enum2130 + field45452: Object8796 + field45458: Object8796 + field45459: Object8796 + field45460: Scalar2 + field45461: Enum2131 +} + +type Object8795 @Directive21(argument61 : "stringValue38953") @Directive44(argument97 : ["stringValue38952"]) { + field45414: Int + field45415: String +} + +type Object8796 @Directive21(argument61 : "stringValue38957") @Directive44(argument97 : ["stringValue38956"]) { + field45453: Scalar2 + field45454: Scalar2 + field45455: String + field45456: String + field45457: Boolean +} + +type Object8797 @Directive21(argument61 : "stringValue38960") @Directive44(argument97 : ["stringValue38959"]) { + field45463: Scalar2 + field45464: Scalar2 + field45465: Scalar2 + field45466: String + field45467: String + field45468: Object8795 + field45469: Int + field45470: Object8795 + field45471: String + field45472: String + field45473: Int + field45474: Boolean + field45475: Scalar2 +} + +type Object8798 @Directive21(argument61 : "stringValue38962") @Directive44(argument97 : ["stringValue38961"]) { + field45477: Scalar2 + field45478: Scalar2 + field45479: Scalar2 + field45480: String + field45481: String + field45482: Scalar2 + field45483: Object8795 + field45484: Object8795 + field45485: Boolean + field45486: String + field45487: String + field45488: [Object8799] + field45493: String +} + +type Object8799 @Directive21(argument61 : "stringValue38964") @Directive44(argument97 : ["stringValue38963"]) { + field45489: Enum2132 + field45490: [Enum2133] + field45491: Scalar2 + field45492: Enum2133 +} + +type Object88 @Directive21(argument61 : "stringValue353") @Directive44(argument97 : ["stringValue352"]) { + field592: Enum49 + field593: Enum50 + field594: Enum51 + field595: Scalar5 + field596: Scalar5 + field597: Float + field598: Float +} + +type Object880 implements Interface3 @Directive22(argument62 : "stringValue4443") @Directive31 @Directive44(argument97 : ["stringValue4444", "stringValue4445"]) { + field4: Object1 + field5101: Scalar2 + field74: String + field75: Scalar1 +} + +type Object8800 @Directive21(argument61 : "stringValue38968") @Directive44(argument97 : ["stringValue38967"]) { + field45495: Scalar2 + field45496: Scalar2 + field45497: Scalar2 + field45498: String + field45499: String + field45500: String + field45501: Int + field45502: Scalar2 + field45503: Object8795 + field45504: Object8795 + field45505: Scalar2 + field45506: String + field45507: Scalar2 + field45508: String + field45509: Enum2134 + field45510: String + field45511: String + field45512: String + field45513: String + field45514: Object8795 +} + +type Object8801 @Directive44(argument97 : ["stringValue38970"]) { + field45516: Object8802 @Directive35(argument89 : "stringValue38972", argument90 : true, argument91 : "stringValue38971", argument93 : "stringValue38973", argument94 : false) + field45523: Object8804 @Directive35(argument89 : "stringValue38979", argument90 : true, argument91 : "stringValue38978", argument93 : "stringValue38980", argument94 : false) + field45539(argument2219: InputObject1767!): Object8806 @Directive35(argument89 : "stringValue38987", argument90 : true, argument91 : "stringValue38986", argument93 : "stringValue38988", argument94 : false) + field45552(argument2220: InputObject1769!): Object8809 @Directive35(argument89 : "stringValue38998", argument90 : true, argument91 : "stringValue38997", argument93 : "stringValue38999", argument94 : false) + field45572: Object8813 @Directive35(argument89 : "stringValue39010", argument90 : true, argument91 : "stringValue39009", argument93 : "stringValue39011", argument94 : false) + field45574(argument2221: InputObject1770!): Object8814 @Directive35(argument89 : "stringValue39015", argument90 : true, argument91 : "stringValue39014", argument93 : "stringValue39016", argument94 : false) + field45578: Object8815 @Directive35(argument89 : "stringValue39021", argument90 : true, argument91 : "stringValue39020", argument93 : "stringValue39022", argument94 : false) + field45580(argument2222: InputObject1771!): Object8816 @Directive35(argument89 : "stringValue39026", argument90 : true, argument91 : "stringValue39025", argument93 : "stringValue39027", argument94 : false) + field45583(argument2223: InputObject1772!): Object8817 @Directive35(argument89 : "stringValue39032", argument90 : true, argument91 : "stringValue39031", argument93 : "stringValue39033", argument94 : false) +} + +type Object8802 @Directive21(argument61 : "stringValue38975") @Directive44(argument97 : ["stringValue38974"]) { + field45517: [Object8803] +} + +type Object8803 @Directive21(argument61 : "stringValue38977") @Directive44(argument97 : ["stringValue38976"]) { + field45518: String + field45519: String + field45520: Int + field45521: Object5222 + field45522: Scalar3 +} + +type Object8804 @Directive21(argument61 : "stringValue38982") @Directive44(argument97 : ["stringValue38981"]) { + field45524: [Object8805] +} + +type Object8805 @Directive21(argument61 : "stringValue38984") @Directive44(argument97 : ["stringValue38983"]) { + field45525: Scalar4! + field45526: Scalar2 + field45527: String + field45528: Enum2135 + field45529: Boolean + field45530: Boolean + field45531: Int + field45532: String + field45533: Boolean + field45534: Boolean + field45535: Boolean + field45536: Boolean + field45537: Boolean + field45538: Boolean +} + +type Object8806 @Directive21(argument61 : "stringValue38992") @Directive44(argument97 : ["stringValue38991"]) { + field45540: Object8807! + field45544: [Object8808] +} + +type Object8807 @Directive21(argument61 : "stringValue38994") @Directive44(argument97 : ["stringValue38993"]) { + field45541: Scalar2 + field45542: String + field45543: Boolean +} + +type Object8808 @Directive21(argument61 : "stringValue38996") @Directive44(argument97 : ["stringValue38995"]) { + field45545: String! + field45546: Object5222! + field45547: Int! + field45548: Object5222! + field45549: Scalar3! + field45550: Scalar3! + field45551: String! +} + +type Object8809 @Directive21(argument61 : "stringValue39002") @Directive44(argument97 : ["stringValue39001"]) { + field45553: Object5224 + field45554: Object8810 +} + +type Object881 @Directive20(argument58 : "stringValue4447", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4446") @Directive31 @Directive44(argument97 : ["stringValue4448", "stringValue4449"]) { + field5102: [Object882!] + field5106: String +} + +type Object8810 @Directive21(argument61 : "stringValue39004") @Directive44(argument97 : ["stringValue39003"]) { + field45555: Enum1315! + field45556: Int + field45557: Int + field45558: Object5222 + field45559: Object5222 + field45560: [Object8811] + field45565: [Object8812] + field45569: [Enum1316] + field45570: Enum1317 + field45571: Scalar3 +} + +type Object8811 @Directive21(argument61 : "stringValue39006") @Directive44(argument97 : ["stringValue39005"]) { + field45561: Scalar3 + field45562: Scalar3 + field45563: Int + field45564: Object5222 +} + +type Object8812 @Directive21(argument61 : "stringValue39008") @Directive44(argument97 : ["stringValue39007"]) { + field45566: Int + field45567: Int + field45568: Object5222 +} + +type Object8813 @Directive21(argument61 : "stringValue39013") @Directive44(argument97 : ["stringValue39012"]) { + field45573: [Enum1316] +} + +type Object8814 @Directive21(argument61 : "stringValue39019") @Directive44(argument97 : ["stringValue39018"]) { + field45575: String + field45576: String + field45577: String +} + +type Object8815 @Directive21(argument61 : "stringValue39024") @Directive44(argument97 : ["stringValue39023"]) { + field45579: Boolean! +} + +type Object8816 @Directive21(argument61 : "stringValue39030") @Directive44(argument97 : ["stringValue39029"]) { + field45581: Boolean! + field45582: String +} + +type Object8817 @Directive21(argument61 : "stringValue39036") @Directive44(argument97 : ["stringValue39035"]) { + field45584: Boolean! + field45585: Float + field45586: String +} + +type Object8818 @Directive44(argument97 : ["stringValue39037"]) { + field45588(argument2224: InputObject1773!): Object8819 @Directive35(argument89 : "stringValue39039", argument90 : true, argument91 : "stringValue39038", argument92 : 740, argument93 : "stringValue39040", argument94 : false) +} + +type Object8819 @Directive21(argument61 : "stringValue39049") @Directive44(argument97 : ["stringValue39048"]) { + field45589: [Object8820]! + field45639: Boolean + field45640: String! + field45641: Boolean + field45642: Object8835! +} + +type Object882 @Directive20(argument58 : "stringValue4451", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4450") @Directive31 @Directive44(argument97 : ["stringValue4452", "stringValue4453"]) { + field5103: String + field5104: Object480 + field5105: String +} + +type Object8820 @Directive21(argument61 : "stringValue39051") @Directive44(argument97 : ["stringValue39050"]) { + field45590: Object8821! + field45598: Object8822! + field45612: Object8827 + field45618: Boolean + field45619: Object8830 + field45623: Object8831 +} + +type Object8821 @Directive21(argument61 : "stringValue39053") @Directive44(argument97 : ["stringValue39052"]) { + field45591: String! + field45592: Boolean! + field45593: Boolean! + field45594: Scalar2! + field45595: Scalar2 + field45596: Scalar2! + field45597: Scalar2 +} + +type Object8822 @Directive21(argument61 : "stringValue39055") @Directive44(argument97 : ["stringValue39054"]) { + field45599: Object8823! + field45604: Object8823 + field45605: Object8823 + field45606: Object8825 + field45610: String + field45611: String +} + +type Object8823 @Directive21(argument61 : "stringValue39057") @Directive44(argument97 : ["stringValue39056"]) { + field45600: [Object8824]! + field45603: String! +} + +type Object8824 @Directive21(argument61 : "stringValue39059") @Directive44(argument97 : ["stringValue39058"]) { + field45601: String! + field45602: String +} + +type Object8825 @Directive21(argument61 : "stringValue39061") @Directive44(argument97 : ["stringValue39060"]) { + field45607: [Object8826] + field45609: Scalar2 +} + +type Object8826 @Directive21(argument61 : "stringValue39063") @Directive44(argument97 : ["stringValue39062"]) { + field45608: String +} + +type Object8827 @Directive21(argument61 : "stringValue39065") @Directive44(argument97 : ["stringValue39064"]) { + field45613: String! + field45614: Union291 +} + +type Object8828 @Directive21(argument61 : "stringValue39068") @Directive44(argument97 : ["stringValue39067"]) { + field45615: Scalar2! +} + +type Object8829 @Directive21(argument61 : "stringValue39070") @Directive44(argument97 : ["stringValue39069"]) { + field45616: Scalar2! + field45617: String +} + +type Object883 @Directive20(argument58 : "stringValue4455", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4454") @Directive31 @Directive44(argument97 : ["stringValue4456", "stringValue4457"]) { + field5107: ID + field5108: String + field5109: [Object480!] + field5110: Object480 + field5111: String +} + +type Object8830 @Directive21(argument61 : "stringValue39072") @Directive44(argument97 : ["stringValue39071"]) { + field45620: Scalar1 + field45621: String + field45622: String +} + +type Object8831 @Directive21(argument61 : "stringValue39074") @Directive44(argument97 : ["stringValue39073"]) { + field45624: [Union292] +} + +type Object8832 @Directive21(argument61 : "stringValue39077") @Directive44(argument97 : ["stringValue39076"]) { + field45625: String! + field45626: String + field45627: String! + field45628: Object8833! + field45632: String + field45633: Object8834 + field45638: String +} + +type Object8833 @Directive21(argument61 : "stringValue39079") @Directive44(argument97 : ["stringValue39078"]) { + field45629: String! + field45630: Scalar1! + field45631: String! +} + +type Object8834 @Directive21(argument61 : "stringValue39081") @Directive44(argument97 : ["stringValue39080"]) { + field45634: String! + field45635: String! + field45636: [String]! + field45637: Enum2141! +} + +type Object8835 @Directive21(argument61 : "stringValue39084") @Directive44(argument97 : ["stringValue39083"]) { + field45643: Scalar2! + field45644: Scalar2! +} + +type Object8836 @Directive44(argument97 : ["stringValue39085"]) { + field45646: Object8837 @Directive35(argument89 : "stringValue39087", argument90 : true, argument91 : "stringValue39086", argument93 : "stringValue39088", argument94 : false) + field45682(argument2225: InputObject1775!): Object8837 @Directive35(argument89 : "stringValue39101", argument90 : true, argument91 : "stringValue39100", argument93 : "stringValue39102", argument94 : false) + field45683(argument2226: InputObject1776!): Object8842 @Directive35(argument89 : "stringValue39105", argument90 : true, argument91 : "stringValue39104", argument92 : 741, argument93 : "stringValue39106", argument94 : false) + field45697(argument2227: InputObject1777!): Object8844 @Directive35(argument89 : "stringValue39113", argument90 : true, argument91 : "stringValue39112", argument93 : "stringValue39114", argument94 : false) + field45727(argument2228: InputObject1778!): Object8851 @Directive35(argument89 : "stringValue39131", argument90 : true, argument91 : "stringValue39130", argument92 : 742, argument93 : "stringValue39132", argument94 : false) + field45754(argument2229: InputObject1779!): Object8854 @Directive35(argument89 : "stringValue39144", argument90 : true, argument91 : "stringValue39143", argument92 : 743, argument93 : "stringValue39145", argument94 : false) + field45782(argument2230: InputObject1780!): Object8860 @Directive35(argument89 : "stringValue39161", argument90 : true, argument91 : "stringValue39160", argument92 : 744, argument93 : "stringValue39162", argument94 : false) + field45790(argument2231: InputObject1781!): Object8861 @Directive35(argument89 : "stringValue39167", argument90 : true, argument91 : "stringValue39166", argument92 : 745, argument93 : "stringValue39168", argument94 : false) + field45794(argument2232: InputObject1782!): Object8862 @Directive35(argument89 : "stringValue39173", argument90 : true, argument91 : "stringValue39172", argument92 : 746, argument93 : "stringValue39174", argument94 : false) + field45797(argument2233: InputObject1783!): Object8863 @Directive35(argument89 : "stringValue39179", argument90 : true, argument91 : "stringValue39178", argument92 : 747, argument93 : "stringValue39180", argument94 : false) + field45799: Object8864 @Directive35(argument89 : "stringValue39185", argument90 : true, argument91 : "stringValue39184", argument93 : "stringValue39186", argument94 : false) + field45808(argument2234: InputObject1784!): Object8864 @Directive35(argument89 : "stringValue39191", argument90 : true, argument91 : "stringValue39190", argument93 : "stringValue39192", argument94 : false) + field45809(argument2235: InputObject1785!): Object8865 @Directive35(argument89 : "stringValue39195", argument90 : true, argument91 : "stringValue39194", argument93 : "stringValue39196", argument94 : false) + field45815(argument2236: InputObject1786!): Object8866 @Directive35(argument89 : "stringValue39201", argument90 : true, argument91 : "stringValue39200", argument92 : 748, argument93 : "stringValue39202", argument94 : false) + field45827(argument2237: InputObject1787!): Object8869 @Directive35(argument89 : "stringValue39211", argument90 : true, argument91 : "stringValue39210", argument92 : 749, argument93 : "stringValue39212", argument94 : false) + field45859: Object8874 @Directive35(argument89 : "stringValue39225", argument90 : true, argument91 : "stringValue39224", argument92 : 750, argument93 : "stringValue39226", argument94 : false) + field45864: Object8875 @Directive35(argument89 : "stringValue39230", argument90 : true, argument91 : "stringValue39229", argument93 : "stringValue39231", argument94 : false) + field45897(argument2238: InputObject1788!): Object8875 @Directive35(argument89 : "stringValue39243", argument90 : true, argument91 : "stringValue39242", argument93 : "stringValue39244", argument94 : false) + field45898(argument2239: InputObject1789!): Object8879 @Directive35(argument89 : "stringValue39247", argument90 : true, argument91 : "stringValue39246", argument92 : 751, argument93 : "stringValue39248", argument94 : false) + field45901(argument2240: InputObject1796!): Object8880 @Directive35(argument89 : "stringValue39259", argument90 : true, argument91 : "stringValue39258", argument93 : "stringValue39260", argument94 : false) + field45923(argument2241: InputObject1797!): Object8884 @Directive35(argument89 : "stringValue39271", argument90 : true, argument91 : "stringValue39270", argument93 : "stringValue39272", argument94 : false) +} + +type Object8837 @Directive21(argument61 : "stringValue39090") @Directive44(argument97 : ["stringValue39089"]) { + field45647: Int! + field45648: String! + field45649: String! + field45650: Int! + field45651: String! + field45652: String! + field45653: Float! + field45654: String! + field45655: [Object8838]! + field45670: String! + field45671: String! + field45672: String! + field45673: Object8840 +} + +type Object8838 @Directive21(argument61 : "stringValue39092") @Directive44(argument97 : ["stringValue39091"]) { + field45656: String! + field45657: String! + field45658: Int! + field45659: Int! + field45660: Float + field45661: Float + field45662: Boolean + field45663: [Object8839] + field45668: [Object8839] + field45669: [Object8839] +} + +type Object8839 @Directive21(argument61 : "stringValue39094") @Directive44(argument97 : ["stringValue39093"]) { + field45664: String! + field45665: String! + field45666: Int! + field45667: Int! +} + +type Object884 @Directive22(argument62 : "stringValue4458") @Directive31 @Directive44(argument97 : ["stringValue4459", "stringValue4460"]) { + field5112: String + field5113: Boolean + field5114: Int + field5115: Int + field5116: String + field5117: Boolean + field5118: Int + field5119: Int + field5120: String + field5121: String +} + +type Object8840 @Directive21(argument61 : "stringValue39096") @Directive44(argument97 : ["stringValue39095"]) { + field45674: Int + field45675: Int + field45676: [Object8841] +} + +type Object8841 @Directive21(argument61 : "stringValue39098") @Directive44(argument97 : ["stringValue39097"]) { + field45677: String! + field45678: String + field45679: Int + field45680: Int + field45681: Enum2142 +} + +type Object8842 @Directive21(argument61 : "stringValue39109") @Directive44(argument97 : ["stringValue39108"]) { + field45684: [Object8843]! + field45696: [String] +} + +type Object8843 @Directive21(argument61 : "stringValue39111") @Directive44(argument97 : ["stringValue39110"]) { + field45685: String + field45686: Scalar3 + field45687: Scalar3 + field45688: Scalar2 + field45689: String + field45690: String + field45691: String + field45692: Scalar2 + field45693: Int + field45694: String + field45695: Scalar2 +} + +type Object8844 @Directive21(argument61 : "stringValue39117") @Directive44(argument97 : ["stringValue39116"]) { + field45698: [Object8845]! + field45726: String! +} + +type Object8845 @Directive21(argument61 : "stringValue39119") @Directive44(argument97 : ["stringValue39118"]) { + field45699: String! + field45700: String! + field45701: Object8846 + field45704: String! + field45705: String + field45706: Int! + field45707: Int! + field45708: String + field45709: Float + field45710: String + field45711: String! + field45712: Object8847! +} + +type Object8846 @Directive21(argument61 : "stringValue39121") @Directive44(argument97 : ["stringValue39120"]) { + field45702: String! + field45703: String! +} + +type Object8847 @Directive21(argument61 : "stringValue39123") @Directive44(argument97 : ["stringValue39122"]) { + field45713: String! + field45714: String! + field45715: String + field45716: String + field45717: [Object8848]! + field45722: String + field45723: Object8850 +} + +type Object8848 @Directive21(argument61 : "stringValue39125") @Directive44(argument97 : ["stringValue39124"]) { + field45718: [Object8849]! +} + +type Object8849 @Directive21(argument61 : "stringValue39127") @Directive44(argument97 : ["stringValue39126"]) { + field45719: String! + field45720: String! + field45721: Boolean! +} + +type Object885 implements Interface76 @Directive21(argument61 : "stringValue4532") @Directive22(argument62 : "stringValue4531") @Directive31 @Directive44(argument97 : ["stringValue4533", "stringValue4534", "stringValue4535"]) @Directive45(argument98 : ["stringValue4536"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5213: [Object894] + field5218: String + field5219: [Object422] + field5220: [Union102] + field5221: Boolean +} + +type Object8850 @Directive21(argument61 : "stringValue39129") @Directive44(argument97 : ["stringValue39128"]) { + field45724: String! + field45725: String! +} + +type Object8851 @Directive21(argument61 : "stringValue39136") @Directive44(argument97 : ["stringValue39135"]) { + field45728: [Object8852] + field45745: [Object8852] + field45746: Object8853 + field45752: [String] + field45753: [Object8852] +} + +type Object8852 @Directive21(argument61 : "stringValue39138") @Directive44(argument97 : ["stringValue39137"]) { + field45729: Enum2144! + field45730: Enum2145! + field45731: String + field45732: Int + field45733: [String] + field45734: String! + field45735: String! + field45736: String + field45737: Enum2143 + field45738: String + field45739: String + field45740: [String] + field45741: String! + field45742: String + field45743: String + field45744: Object8847 +} + +type Object8853 @Directive21(argument61 : "stringValue39142") @Directive44(argument97 : ["stringValue39141"]) { + field45747: String! + field45748: String! + field45749: String! + field45750: Boolean! + field45751: String +} + +type Object8854 @Directive21(argument61 : "stringValue39148") @Directive44(argument97 : ["stringValue39147"]) { + field45755: String + field45756: String + field45757: Int + field45758: [Object8855] + field45781: [String] +} + +type Object8855 @Directive21(argument61 : "stringValue39150") @Directive44(argument97 : ["stringValue39149"]) { + field45759: String! + field45760: String + field45761: String + field45762: Boolean + field45763: String + field45764: String + field45765: [Object8856] + field45770: Object8857 + field45778: Object8859 +} + +type Object8856 @Directive21(argument61 : "stringValue39152") @Directive44(argument97 : ["stringValue39151"]) { + field45766: Scalar2 + field45767: Scalar3 + field45768: Boolean + field45769: Boolean +} + +type Object8857 @Directive21(argument61 : "stringValue39154") @Directive44(argument97 : ["stringValue39153"]) { + field45771: String + field45772: [Object8858] + field45776: String + field45777: [Object8858] +} + +type Object8858 @Directive21(argument61 : "stringValue39156") @Directive44(argument97 : ["stringValue39155"]) { + field45773: Enum2146 + field45774: String + field45775: String +} + +type Object8859 @Directive21(argument61 : "stringValue39159") @Directive44(argument97 : ["stringValue39158"]) { + field45779: Enum2145! + field45780: String! +} + +type Object886 @Directive20(argument58 : "stringValue4467", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4466") @Directive31 @Directive44(argument97 : ["stringValue4468", "stringValue4469"]) { + field5123: String + field5124: String + field5125: String + field5126: String + field5127: String + field5128: String + field5129: String + field5130: Object887 + field5146: Object5 + field5147: Int + field5148: Boolean +} + +type Object8860 @Directive21(argument61 : "stringValue39165") @Directive44(argument97 : ["stringValue39164"]) { + field45783: String + field45784: String + field45785: String + field45786: Int + field45787: String + field45788: Int + field45789: [Object8855] +} + +type Object8861 @Directive21(argument61 : "stringValue39171") @Directive44(argument97 : ["stringValue39170"]) { + field45791: String + field45792: String + field45793: [Object8855] +} + +type Object8862 @Directive21(argument61 : "stringValue39177") @Directive44(argument97 : ["stringValue39176"]) { + field45795: [String] + field45796: [Object8855] +} + +type Object8863 @Directive21(argument61 : "stringValue39183") @Directive44(argument97 : ["stringValue39182"]) { + field45798: [Object8855] +} + +type Object8864 @Directive21(argument61 : "stringValue39188") @Directive44(argument97 : ["stringValue39187"]) { + field45800: Int + field45801: String + field45802: String + field45803: String + field45804: String + field45805: Enum2147 + field45806: String + field45807: String +} + +type Object8865 @Directive21(argument61 : "stringValue39199") @Directive44(argument97 : ["stringValue39198"]) { + field45810: Int! + field45811: String! + field45812: Int! + field45813: String! + field45814: Scalar2! +} + +type Object8866 @Directive21(argument61 : "stringValue39205") @Directive44(argument97 : ["stringValue39204"]) { + field45816: String! + field45817: String! + field45818: [Object8867]! +} + +type Object8867 @Directive21(argument61 : "stringValue39207") @Directive44(argument97 : ["stringValue39206"]) { + field45819: Int! + field45820: Enum2142! + field45821: String! + field45822: [Object8868]! +} + +type Object8868 @Directive21(argument61 : "stringValue39209") @Directive44(argument97 : ["stringValue39208"]) { + field45823: String! + field45824: String! + field45825: String + field45826: Int! +} + +type Object8869 @Directive21(argument61 : "stringValue39215") @Directive44(argument97 : ["stringValue39214"]) { + field45828: String! + field45829: String! + field45830: Object8870 + field45836: Object8870! + field45837: [Object8871]! + field45841: String! + field45842: String! + field45843: String! + field45844: [Object8872]! + field45850: String! + field45851: String! + field45852: String! + field45853: [Object8873]! +} + +type Object887 @Directive20(argument58 : "stringValue4471", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4470") @Directive31 @Directive44(argument97 : ["stringValue4472", "stringValue4473"]) { + field5131: String + field5132: String + field5133: String + field5134: Int + field5135: Int + field5136: Int + field5137: Int + field5138: Boolean + field5139: Boolean + field5140: [String] + field5141: [String] + field5142: String + field5143: Int + field5144: Scalar1 + field5145: [String] +} + +type Object8870 @Directive21(argument61 : "stringValue39217") @Directive44(argument97 : ["stringValue39216"]) { + field45831: String! + field45832: String! + field45833: Int! + field45834: String! + field45835: Object8840 +} + +type Object8871 @Directive21(argument61 : "stringValue39219") @Directive44(argument97 : ["stringValue39218"]) { + field45838: String! + field45839: Int! + field45840: Int! +} + +type Object8872 @Directive21(argument61 : "stringValue39221") @Directive44(argument97 : ["stringValue39220"]) { + field45845: String! + field45846: Int! + field45847: Float + field45848: Boolean + field45849: Boolean +} + +type Object8873 @Directive21(argument61 : "stringValue39223") @Directive44(argument97 : ["stringValue39222"]) { + field45854: String! + field45855: Int! + field45856: Int! + field45857: [Object8872]! + field45858: String! +} + +type Object8874 @Directive21(argument61 : "stringValue39228") @Directive44(argument97 : ["stringValue39227"]) { + field45860: Int! + field45861: [Scalar2]! + field45862: [Scalar2]! + field45863: String +} + +type Object8875 @Directive21(argument61 : "stringValue39233") @Directive44(argument97 : ["stringValue39232"]) { + field45865: Scalar1! + field45866: Int! + field45867: [Object8876]! + field45885: String! + field45886: Scalar1! + field45887: Object8878 + field45891: String! + field45892: String! + field45893: Int + field45894: String + field45895: Object8840 + field45896: Scalar1 +} + +type Object8876 @Directive21(argument61 : "stringValue39235") @Directive44(argument97 : ["stringValue39234"]) { + field45868: Int! + field45869: String! + field45870: String! + field45871: String! + field45872: Int + field45873: String + field45874: String + field45875: Float + field45876: String! + field45877: String + field45878: [Object8877]! + field45883: String! + field45884: String! +} + +type Object8877 @Directive21(argument61 : "stringValue39237") @Directive44(argument97 : ["stringValue39236"]) { + field45879: Enum2148! + field45880: Enum2149! + field45881: String! + field45882: String! +} + +type Object8878 @Directive21(argument61 : "stringValue39241") @Directive44(argument97 : ["stringValue39240"]) { + field45888: String! + field45889: String! + field45890: String! +} + +type Object8879 @Directive21(argument61 : "stringValue39257") @Directive44(argument97 : ["stringValue39256"]) { + field45899: Enum2147 + field45900: String +} + +type Object888 @Directive20(argument58 : "stringValue4475", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4474") @Directive31 @Directive44(argument97 : ["stringValue4476", "stringValue4477"]) { + field5151: String + field5152: String + field5153: Enum247 + field5154: Enum248 @deprecated + field5155: Enum249 + field5156: String + field5157: Int + field5158: Enum250 + field5159: Object889 + field5163: String @deprecated + field5164: String @deprecated + field5165: String @deprecated + field5166: Object890 + field5176: Boolean + field5177: Boolean + field5178: Boolean + field5179: Boolean + field5180: String + field5181: Boolean + field5182: String + field5183: Boolean + field5184: String +} + +type Object8880 @Directive21(argument61 : "stringValue39263") @Directive44(argument97 : ["stringValue39262"]) { + field45902: [Object8881]! + field45912: [Object8883]! +} + +type Object8881 @Directive21(argument61 : "stringValue39265") @Directive44(argument97 : ["stringValue39264"]) { + field45903: String! + field45904: String! + field45905: Int! + field45906: [Object8882] + field45910: [Object8882] + field45911: [Object8882] +} + +type Object8882 @Directive21(argument61 : "stringValue39267") @Directive44(argument97 : ["stringValue39266"]) { + field45907: String! + field45908: String! + field45909: Object8847! +} + +type Object8883 @Directive21(argument61 : "stringValue39269") @Directive44(argument97 : ["stringValue39268"]) { + field45913: Enum2148 + field45914: String + field45915: [Int] + field45916: String + field45917: String + field45918: String + field45919: String + field45920: String + field45921: String + field45922: Object8850 +} + +type Object8884 @Directive21(argument61 : "stringValue39275") @Directive44(argument97 : ["stringValue39274"]) { + field45924: Scalar1! +} + +type Object8885 @Directive44(argument97 : ["stringValue39276"]) { + field45926(argument2242: InputObject1798!): Object8886 @Directive35(argument89 : "stringValue39278", argument90 : true, argument91 : "stringValue39277", argument93 : "stringValue39279", argument94 : false) + field45939(argument2243: InputObject1798!): Object8886 @Directive35(argument89 : "stringValue39289", argument90 : true, argument91 : "stringValue39288", argument93 : "stringValue39290", argument94 : false) + field45940(argument2244: InputObject1799!): Object8889 @Directive35(argument89 : "stringValue39292", argument90 : true, argument91 : "stringValue39291", argument92 : 752, argument93 : "stringValue39293", argument94 : false) + field45953(argument2245: InputObject1800!): Object5236 @Directive35(argument89 : "stringValue39303", argument90 : true, argument91 : "stringValue39302", argument92 : 753, argument93 : "stringValue39304", argument94 : false) + field45954(argument2246: InputObject1800!): Object5236 @Directive35(argument89 : "stringValue39307", argument90 : true, argument91 : "stringValue39306", argument92 : 754, argument93 : "stringValue39308", argument94 : false) +} + +type Object8886 @Directive21(argument61 : "stringValue39283") @Directive44(argument97 : ["stringValue39282"]) { + field45927: [Object8887] +} + +type Object8887 @Directive21(argument61 : "stringValue39285") @Directive44(argument97 : ["stringValue39284"]) { + field45928: Enum2150 + field45929: Object5240 + field45930: [Object8888] +} + +type Object8888 @Directive21(argument61 : "stringValue39287") @Directive44(argument97 : ["stringValue39286"]) { + field45931: Int + field45932: String + field45933: String + field45934: String + field45935: Object5240 + field45936: String + field45937: String + field45938: Boolean +} + +type Object8889 @Directive21(argument61 : "stringValue39296") @Directive44(argument97 : ["stringValue39295"]) { + field45941: [Object8890] + field45948: Object8891 + field45952: Object5240 +} + +type Object889 @Directive20(argument58 : "stringValue4495", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4494") @Directive31 @Directive44(argument97 : ["stringValue4496", "stringValue4497"]) { + field5160: Int + field5161: String + field5162: String +} + +type Object8890 @Directive21(argument61 : "stringValue39298") @Directive44(argument97 : ["stringValue39297"]) { + field45942: Enum2151 + field45943: Int + field45944: Scalar2 + field45945: String + field45946: String + field45947: Enum2151 +} + +type Object8891 @Directive21(argument61 : "stringValue39301") @Directive44(argument97 : ["stringValue39300"]) { + field45949: Int + field45950: Int + field45951: Scalar2 +} + +type Object8892 @Directive44(argument97 : ["stringValue39309"]) { + field45956(argument2247: InputObject1801!): Object8893 @Directive35(argument89 : "stringValue39311", argument90 : true, argument91 : "stringValue39310", argument92 : 755, argument93 : "stringValue39312", argument94 : false) +} + +type Object8893 @Directive21(argument61 : "stringValue39315") @Directive44(argument97 : ["stringValue39314"]) { + field45957: Scalar2 + field45958: [Object8894]! +} + +type Object8894 @Directive21(argument61 : "stringValue39317") @Directive44(argument97 : ["stringValue39316"]) { + field45959: Scalar2! + field45960: String! + field45961: [Object8895]! + field46006: String +} + +type Object8895 @Directive21(argument61 : "stringValue39319") @Directive44(argument97 : ["stringValue39318"]) { + field45962: String! + field45963: Enum2152! + field45964: [Object8896]! + field45983: Object8901 +} + +type Object8896 @Directive21(argument61 : "stringValue39322") @Directive44(argument97 : ["stringValue39321"]) { + field45965: Scalar2! + field45966: Scalar2 + field45967: String! + field45968: String! + field45969: String + field45970: Scalar2 + field45971: [Object8897] +} + +type Object8897 @Directive21(argument61 : "stringValue39324") @Directive44(argument97 : ["stringValue39323"]) { + field45972: Enum2153! + field45973: Object8898 + field45978: Object8900 +} + +type Object8898 @Directive21(argument61 : "stringValue39327") @Directive44(argument97 : ["stringValue39326"]) { + field45974: String! + field45975: Object8899! +} + +type Object8899 @Directive21(argument61 : "stringValue39329") @Directive44(argument97 : ["stringValue39328"]) { + field45976: Float! + field45977: Float! +} + +type Object89 @Directive21(argument61 : "stringValue361") @Directive44(argument97 : ["stringValue360"]) { + field612: Float + field613: Float +} + +type Object890 @Directive20(argument58 : "stringValue4499", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4498") @Directive31 @Directive44(argument97 : ["stringValue4500", "stringValue4501"]) { + field5167: String + field5168: String + field5169: [Object399] + field5170: String + field5171: Scalar2 + field5172: String + field5173: String + field5174: String + field5175: Scalar2 +} + +type Object8900 @Directive21(argument61 : "stringValue39331") @Directive44(argument97 : ["stringValue39330"]) { + field45979: Int! + field45980: String! + field45981: String! + field45982: [Object8899]! +} + +type Object8901 @Directive21(argument61 : "stringValue39333") @Directive44(argument97 : ["stringValue39332"]) { + field45984: Scalar2! + field45985: String! + field45986: [Object8902]! + field46005: String +} + +type Object8902 @Directive21(argument61 : "stringValue39335") @Directive44(argument97 : ["stringValue39334"]) { + field45987: Object8903! + field46000: Object8908 +} + +type Object8903 @Directive21(argument61 : "stringValue39337") @Directive44(argument97 : ["stringValue39336"]) { + field45988: Enum2154! + field45989: String! + field45990: String + field45991: Object8904! + field45999: Boolean +} + +type Object8904 @Directive21(argument61 : "stringValue39340") @Directive44(argument97 : ["stringValue39339"]) { + field45992: Object8905 + field45997: Object8907 +} + +type Object8905 @Directive21(argument61 : "stringValue39342") @Directive44(argument97 : ["stringValue39341"]) { + field45993: Object8906! + field45996: Object8906! +} + +type Object8906 @Directive21(argument61 : "stringValue39344") @Directive44(argument97 : ["stringValue39343"]) { + field45994: String! + field45995: String +} + +type Object8907 @Directive21(argument61 : "stringValue39346") @Directive44(argument97 : ["stringValue39345"]) { + field45998: String +} + +type Object8908 @Directive21(argument61 : "stringValue39348") @Directive44(argument97 : ["stringValue39347"]) { + field46001: Object8909 + field46003: Object8910 +} + +type Object8909 @Directive21(argument61 : "stringValue39350") @Directive44(argument97 : ["stringValue39349"]) { + field46002: String +} + +type Object891 @Directive20(argument58 : "stringValue4510", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4509") @Directive31 @Directive44(argument97 : ["stringValue4511", "stringValue4512"]) { + field5190: String + field5191: String + field5192: String @deprecated + field5193: Enum252 + field5194: Scalar1 + field5195: Object398 + field5196: String + field5197: Enum253 + field5198: String + field5199: Scalar1 + field5200: Scalar2 + field5201: Boolean + field5202: [Enum254] +} + +type Object8910 @Directive21(argument61 : "stringValue39352") @Directive44(argument97 : ["stringValue39351"]) { + field46004: String +} + +type Object8911 @Directive44(argument97 : ["stringValue39353"]) { + field46008(argument2248: InputObject1802!): Object8912 @Directive35(argument89 : "stringValue39355", argument90 : false, argument91 : "stringValue39354", argument92 : 756, argument93 : "stringValue39356", argument94 : false) + field46010(argument2249: InputObject1803!): Object8913 @Directive35(argument89 : "stringValue39361", argument90 : true, argument91 : "stringValue39360", argument92 : 757, argument93 : "stringValue39362", argument94 : false) + field46012(argument2250: InputObject1804!): Object8914 @Directive35(argument89 : "stringValue39367", argument90 : true, argument91 : "stringValue39366", argument92 : 758, argument93 : "stringValue39368", argument94 : false) + field46014(argument2251: InputObject1805!): Object8915 @Directive35(argument89 : "stringValue39373", argument90 : true, argument91 : "stringValue39372", argument92 : 759, argument93 : "stringValue39374", argument94 : false) + field46036(argument2252: InputObject1806!): Object8918 @Directive35(argument89 : "stringValue39384", argument90 : true, argument91 : "stringValue39383", argument92 : 760, argument93 : "stringValue39385", argument94 : false) + field46052(argument2253: InputObject1807!): Object8923 @Directive35(argument89 : "stringValue39399", argument90 : true, argument91 : "stringValue39398", argument92 : 761, argument93 : "stringValue39400", argument94 : false) + field46054(argument2254: InputObject1808!): Object8924 @Directive35(argument89 : "stringValue39405", argument90 : false, argument91 : "stringValue39404", argument92 : 762, argument93 : "stringValue39406", argument94 : false) + field46079(argument2255: InputObject1809!): Object8929 @Directive35(argument89 : "stringValue39420", argument90 : true, argument91 : "stringValue39419", argument92 : 763, argument93 : "stringValue39421", argument94 : false) + field46090(argument2256: InputObject1810!): Object8931 @Directive35(argument89 : "stringValue39428", argument90 : true, argument91 : "stringValue39427", argument92 : 764, argument93 : "stringValue39429", argument94 : false) + field46156(argument2257: InputObject1811!): Object8936 @Directive35(argument89 : "stringValue39442", argument90 : true, argument91 : "stringValue39441", argument92 : 765, argument93 : "stringValue39443", argument94 : false) + field46161: Object8937 @Directive35(argument89 : "stringValue39448", argument90 : false, argument91 : "stringValue39447", argument92 : 766, argument93 : "stringValue39449", argument94 : false) + field46172(argument2258: InputObject1812!): Object8939 @Directive35(argument89 : "stringValue39456", argument90 : false, argument91 : "stringValue39455", argument92 : 767, argument93 : "stringValue39457", argument94 : false) + field46195(argument2259: InputObject1813!): Object8945 @Directive35(argument89 : "stringValue39473", argument90 : true, argument91 : "stringValue39472", argument92 : 768, argument93 : "stringValue39474", argument94 : false) + field46197(argument2260: InputObject1814!): Object8946 @Directive35(argument89 : "stringValue39479", argument90 : true, argument91 : "stringValue39478", argument92 : 769, argument93 : "stringValue39480", argument94 : false) + field46221(argument2261: InputObject1815!): Object8948 @Directive35(argument89 : "stringValue39487", argument90 : false, argument91 : "stringValue39486", argument92 : 770, argument93 : "stringValue39488", argument94 : false) + field46246(argument2262: InputObject1817!): Object8951 @Directive35(argument89 : "stringValue39498", argument90 : false, argument91 : "stringValue39497", argument92 : 771, argument93 : "stringValue39499", argument94 : false) +} + +type Object8912 @Directive21(argument61 : "stringValue39359") @Directive44(argument97 : ["stringValue39358"]) { + field46009: Boolean +} + +type Object8913 @Directive21(argument61 : "stringValue39365") @Directive44(argument97 : ["stringValue39364"]) { + field46011: Scalar2 +} + +type Object8914 @Directive21(argument61 : "stringValue39371") @Directive44(argument97 : ["stringValue39370"]) { + field46013: [Object5263] +} + +type Object8915 @Directive21(argument61 : "stringValue39377") @Directive44(argument97 : ["stringValue39376"]) { + field46015: Object8916 @deprecated + field46022: [Object8917] + field46035: [Object8916] +} + +type Object8916 @Directive21(argument61 : "stringValue39379") @Directive44(argument97 : ["stringValue39378"]) { + field46016: Scalar2! + field46017: String + field46018: String + field46019: Scalar2 + field46020: Scalar2 + field46021: Enum1327 +} + +type Object8917 @Directive21(argument61 : "stringValue39381") @Directive44(argument97 : ["stringValue39380"]) { + field46023: Scalar2 + field46024: Scalar2 + field46025: Scalar2 + field46026: Scalar2 + field46027: Scalar2 + field46028: String + field46029: Enum2155 + field46030: String + field46031: Scalar4 + field46032: Scalar4 + field46033: Scalar2 + field46034: Enum1324 +} + +type Object8918 @Directive21(argument61 : "stringValue39388") @Directive44(argument97 : ["stringValue39387"]) { + field46037: Object8919 +} + +type Object8919 @Directive21(argument61 : "stringValue39390") @Directive44(argument97 : ["stringValue39389"]) { + field46038: Scalar2 + field46039: Enum2156 + field46040: Object8920 + field46047: Object8922 +} + +type Object892 @Directive22(argument62 : "stringValue4525") @Directive31 @Directive44(argument97 : ["stringValue4526", "stringValue4527"]) { + field5204: String + field5205: String + field5206: [Interface77] +} + +type Object8920 @Directive21(argument61 : "stringValue39393") @Directive44(argument97 : ["stringValue39392"]) { + field46041: Scalar2 + field46042: [Scalar2] + field46043: [Scalar2] + field46044: [Object8921] +} + +type Object8921 @Directive21(argument61 : "stringValue39395") @Directive44(argument97 : ["stringValue39394"]) { + field46045: Scalar2 + field46046: String +} + +type Object8922 @Directive21(argument61 : "stringValue39397") @Directive44(argument97 : ["stringValue39396"]) { + field46048: Scalar2 + field46049: Scalar2 + field46050: Scalar4 + field46051: Scalar4 +} + +type Object8923 @Directive21(argument61 : "stringValue39403") @Directive44(argument97 : ["stringValue39402"]) { + field46053: [Object8919] +} + +type Object8924 @Directive21(argument61 : "stringValue39409") @Directive44(argument97 : ["stringValue39408"]) { + field46055: Object8925 + field46073: Enum2157! + field46074: [Object8928] +} + +type Object8925 @Directive21(argument61 : "stringValue39411") @Directive44(argument97 : ["stringValue39410"]) { + field46056: Scalar2! + field46057: String + field46058: Object8926! + field46063: Scalar4 + field46064: String + field46065: [Object8927] + field46070: Scalar2 + field46071: Scalar2 + field46072: [Scalar2] +} + +type Object8926 @Directive21(argument61 : "stringValue39413") @Directive44(argument97 : ["stringValue39412"]) { + field46059: Scalar2! + field46060: String + field46061: String + field46062: String +} + +type Object8927 @Directive21(argument61 : "stringValue39415") @Directive44(argument97 : ["stringValue39414"]) { + field46066: Scalar2! + field46067: String + field46068: String + field46069: String +} + +type Object8928 @Directive21(argument61 : "stringValue39418") @Directive44(argument97 : ["stringValue39417"]) { + field46075: Scalar2! + field46076: Scalar2! + field46077: Scalar4 + field46078: String +} + +type Object8929 @Directive21(argument61 : "stringValue39424") @Directive44(argument97 : ["stringValue39423"]) { + field46080: [Object8916] + field46081: Object8930 +} + +type Object893 @Directive22(argument62 : "stringValue4528") @Directive31 @Directive44(argument97 : ["stringValue4529", "stringValue4530"]) { + field5208: Object891 + field5209: String + field5210: String + field5211: String +} + +type Object8930 @Directive21(argument61 : "stringValue39426") @Directive44(argument97 : ["stringValue39425"]) { + field46082: Scalar2 + field46083: String + field46084: String + field46085: String + field46086: [Scalar2] + field46087: Scalar2 + field46088: Boolean + field46089: Boolean +} + +type Object8931 @Directive21(argument61 : "stringValue39432") @Directive44(argument97 : ["stringValue39431"]) { + field46091: [Object8932] +} + +type Object8932 @Directive21(argument61 : "stringValue39434") @Directive44(argument97 : ["stringValue39433"]) { + field46092: Object8933 + field46103: Scalar2 + field46104: String + field46105: [Object8933] + field46106: String + field46107: String + field46108: String + field46109: String + field46110: String + field46111: String + field46112: String + field46113: [Object8934] + field46150: [String] + field46151: Scalar2 + field46152: String + field46153: String + field46154: String + field46155: Scalar2 +} + +type Object8933 @Directive21(argument61 : "stringValue39436") @Directive44(argument97 : ["stringValue39435"]) { + field46093: Scalar2 + field46094: Scalar2 + field46095: Scalar2 + field46096: String + field46097: String + field46098: String + field46099: String + field46100: Boolean + field46101: Boolean + field46102: String +} + +type Object8934 @Directive21(argument61 : "stringValue39438") @Directive44(argument97 : ["stringValue39437"]) { + field46114: [Object8935] + field46120: Object8933 + field46121: Scalar2 + field46122: Boolean + field46123: String + field46124: String + field46125: String + field46126: [String] + field46127: Boolean + field46128: Boolean + field46129: Boolean + field46130: Boolean + field46131: Boolean + field46132: Boolean + field46133: Boolean + field46134: Scalar2 + field46135: String + field46136: String + field46137: String + field46138: Scalar2 + field46139: String + field46140: String + field46141: String + field46142: String + field46143: String + field46144: String + field46145: String + field46146: String + field46147: String + field46148: String + field46149: String +} + +type Object8935 @Directive21(argument61 : "stringValue39440") @Directive44(argument97 : ["stringValue39439"]) { + field46115: String + field46116: String + field46117: String + field46118: Int + field46119: Object8933 +} + +type Object8936 @Directive21(argument61 : "stringValue39446") @Directive44(argument97 : ["stringValue39445"]) { + field46157: [Object8933] + field46158: [Object8933] + field46159: [Object8933] + field46160: [Object8933] +} + +type Object8937 @Directive21(argument61 : "stringValue39451") @Directive44(argument97 : ["stringValue39450"]) { + field46162: Scalar2 + field46163: Boolean + field46164: Boolean + field46165: [Enum2158] + field46166: Boolean + field46167: Boolean + field46168: [Object8938] +} + +type Object8938 @Directive21(argument61 : "stringValue39454") @Directive44(argument97 : ["stringValue39453"]) { + field46169: Enum1325 + field46170: Boolean + field46171: Scalar1 +} + +type Object8939 @Directive21(argument61 : "stringValue39460") @Directive44(argument97 : ["stringValue39459"]) { + field46173: Enum2159 + field46174: Object8940 + field46178: Object8941 + field46186: Object8943 + field46193: String + field46194: Boolean +} + +type Object894 @Directive20(argument58 : "stringValue4538", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4537") @Directive31 @Directive44(argument97 : ["stringValue4539", "stringValue4540"]) { + field5214: String + field5215: Object398 + field5216: String + field5217: String +} + +type Object8940 @Directive21(argument61 : "stringValue39463") @Directive44(argument97 : ["stringValue39462"]) { + field46175: String + field46176: String + field46177: Scalar4 +} + +type Object8941 @Directive21(argument61 : "stringValue39465") @Directive44(argument97 : ["stringValue39464"]) { + field46179: String + field46180: String + field46181: Object8942 + field46184: Object8942 + field46185: Enum1327 +} + +type Object8942 @Directive21(argument61 : "stringValue39467") @Directive44(argument97 : ["stringValue39466"]) { + field46182: String + field46183: String +} + +type Object8943 @Directive21(argument61 : "stringValue39469") @Directive44(argument97 : ["stringValue39468"]) { + field46187: String + field46188: String + field46189: [Object8944] + field46192: String +} + +type Object8944 @Directive21(argument61 : "stringValue39471") @Directive44(argument97 : ["stringValue39470"]) { + field46190: String + field46191: String +} + +type Object8945 @Directive21(argument61 : "stringValue39477") @Directive44(argument97 : ["stringValue39476"]) { + field46196: [Object8934] +} + +type Object8946 @Directive21(argument61 : "stringValue39483") @Directive44(argument97 : ["stringValue39482"]) { + field46198: Object8916 + field46199: [Enum2158] + field46200: [Object5273] + field46201: [Object5273] + field46202: [Object8947] + field46216: Object5269 + field46217: [Scalar2] + field46218: [Scalar2] + field46219: Scalar1 + field46220: String +} + +type Object8947 @Directive21(argument61 : "stringValue39485") @Directive44(argument97 : ["stringValue39484"]) { + field46203: Scalar2 + field46204: String + field46205: Scalar2 + field46206: Scalar2 + field46207: Enum1333 + field46208: String + field46209: [Enum1332] + field46210: Scalar4 + field46211: Scalar2 + field46212: Scalar2 + field46213: String + field46214: Boolean + field46215: String +} + +type Object8948 @Directive21(argument61 : "stringValue39492") @Directive44(argument97 : ["stringValue39491"]) { + field46222: Object5258 + field46223: Object8949 + field46229: Boolean + field46230: Boolean + field46231: Int + field46232: Boolean + field46233: Boolean + field46234: Boolean + field46235: Boolean + field46236: Boolean + field46237: Scalar2 + field46238: [Object8950] + field46244: Boolean + field46245: Boolean +} + +type Object8949 @Directive21(argument61 : "stringValue39494") @Directive44(argument97 : ["stringValue39493"]) { + field46224: [Object5269] + field46225: Int + field46226: Int + field46227: Boolean + field46228: Scalar2 +} + +type Object895 @Directive22(argument62 : "stringValue4544") @Directive31 @Directive44(argument97 : ["stringValue4545", "stringValue4546"]) { + field5222: String + field5223: String + field5224: Interface3 + field5225: String + field5226: String +} + +type Object8950 @Directive21(argument61 : "stringValue39496") @Directive44(argument97 : ["stringValue39495"]) { + field46239: Enum1332 + field46240: String + field46241: String + field46242: String + field46243: [String] +} + +type Object8951 @Directive21(argument61 : "stringValue39502") @Directive44(argument97 : ["stringValue39501"]) { + field46247: [String] + field46248: Scalar1 + field46249: [String] + field46250: Scalar1 +} + +type Object8952 @Directive44(argument97 : ["stringValue39503"]) { + field46252(argument2263: InputObject1818!): Object8953 @Directive35(argument89 : "stringValue39505", argument90 : true, argument91 : "stringValue39504", argument92 : 772, argument93 : "stringValue39506", argument94 : false) + field46259(argument2264: InputObject1819!): Object8955 @Directive35(argument89 : "stringValue39513", argument90 : true, argument91 : "stringValue39512", argument92 : 773, argument93 : "stringValue39514", argument94 : false) + field46349(argument2265: InputObject1820!): Object8972 @Directive35(argument89 : "stringValue39553", argument90 : true, argument91 : "stringValue39552", argument92 : 774, argument93 : "stringValue39554", argument94 : false) + field46415(argument2266: InputObject1821!): Object8996 @Directive35(argument89 : "stringValue39607", argument90 : true, argument91 : "stringValue39606", argument92 : 775, argument93 : "stringValue39608", argument94 : false) + field46430(argument2267: InputObject1822!): Object9000 @Directive35(argument89 : "stringValue39619", argument90 : true, argument91 : "stringValue39618", argument92 : 776, argument93 : "stringValue39620", argument94 : false) +} + +type Object8953 @Directive21(argument61 : "stringValue39509") @Directive44(argument97 : ["stringValue39508"]) { + field46253: [Object8954]! +} + +type Object8954 @Directive21(argument61 : "stringValue39511") @Directive44(argument97 : ["stringValue39510"]) { + field46254: String + field46255: String + field46256: String + field46257: String + field46258: String +} + +type Object8955 @Directive21(argument61 : "stringValue39517") @Directive44(argument97 : ["stringValue39516"]) { + field46260: [Union293]! +} + +type Object8956 @Directive21(argument61 : "stringValue39520") @Directive44(argument97 : ["stringValue39519"]) { + field46261: String + field46262: String + field46263: String + field46264: String + field46265: String + field46266: String + field46267: String + field46268: String +} + +type Object8957 @Directive21(argument61 : "stringValue39522") @Directive44(argument97 : ["stringValue39521"]) { + field46269: [String] + field46270: String + field46271: Boolean + field46272: Object8958 +} + +type Object8958 @Directive21(argument61 : "stringValue39524") @Directive44(argument97 : ["stringValue39523"]) { + field46273: String + field46274: Object8959 +} + +type Object8959 @Directive21(argument61 : "stringValue39526") @Directive44(argument97 : ["stringValue39525"]) { + field46275: String + field46276: String + field46277: String + field46278: String + field46279: Boolean + field46280: String +} + +type Object896 implements Interface76 @Directive21(argument61 : "stringValue4548") @Directive22(argument62 : "stringValue4547") @Directive31 @Directive44(argument97 : ["stringValue4549", "stringValue4550", "stringValue4551"]) @Directive45(argument98 : ["stringValue4552"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Object897] +} + +type Object8960 @Directive21(argument61 : "stringValue39528") @Directive44(argument97 : ["stringValue39527"]) { + field46281: String + field46282: String + field46283: String + field46284: String + field46285: String +} + +type Object8961 @Directive21(argument61 : "stringValue39530") @Directive44(argument97 : ["stringValue39529"]) { + field46286: String + field46287: String + field46288: String +} + +type Object8962 @Directive21(argument61 : "stringValue39532") @Directive44(argument97 : ["stringValue39531"]) { + field46289: String + field46290: String + field46291: String + field46292: String + field46293: String +} + +type Object8963 @Directive21(argument61 : "stringValue39534") @Directive44(argument97 : ["stringValue39533"]) { + field46294: String + field46295: String + field46296: Object8964 + field46312: Object8964 + field46313: String + field46314: String +} + +type Object8964 @Directive21(argument61 : "stringValue39536") @Directive44(argument97 : ["stringValue39535"]) { + field46297: String + field46298: [String] + field46299: String + field46300: String + field46301: String + field46302: String + field46303: Object8965 +} + +type Object8965 @Directive21(argument61 : "stringValue39538") @Directive44(argument97 : ["stringValue39537"]) { + field46304: String + field46305: String + field46306: String + field46307: Float + field46308: Float + field46309: Boolean + field46310: String + field46311: Object8958 +} + +type Object8966 @Directive21(argument61 : "stringValue39540") @Directive44(argument97 : ["stringValue39539"]) { + field46315: String + field46316: String + field46317: String + field46318: Object8967 + field46323: Object8967 + field46324: String +} + +type Object8967 @Directive21(argument61 : "stringValue39542") @Directive44(argument97 : ["stringValue39541"]) { + field46319: String + field46320: String + field46321: Float + field46322: Float +} + +type Object8968 @Directive21(argument61 : "stringValue39544") @Directive44(argument97 : ["stringValue39543"]) { + field46325: String + field46326: String + field46327: String + field46328: String + field46329: String + field46330: String + field46331: String + field46332: String +} + +type Object8969 @Directive21(argument61 : "stringValue39546") @Directive44(argument97 : ["stringValue39545"]) { + field46333: String + field46334: String + field46335: String + field46336: String + field46337: Boolean + field46338: Boolean + field46339: Union294 + field46348: String +} + +type Object897 @Directive20(argument58 : "stringValue4554", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4553") @Directive31 @Directive44(argument97 : ["stringValue4555", "stringValue4556"]) { + field5227: Enum255 + field5228: Object898 + field5232: String + field5233: [Object899] + field5245: Object900 + field5255: [Object899] + field5256: [Object899] + field5257: [Object903] + field5279: String + field5280: [Object899] +} + +type Object8970 @Directive21(argument61 : "stringValue39549") @Directive44(argument97 : ["stringValue39548"]) { + field46340: String + field46341: String + field46342: String + field46343: String +} + +type Object8971 @Directive21(argument61 : "stringValue39551") @Directive44(argument97 : ["stringValue39550"]) { + field46344: String + field46345: String + field46346: String + field46347: String +} + +type Object8972 @Directive21(argument61 : "stringValue39557") @Directive44(argument97 : ["stringValue39556"]) { + field46350: Object8973 + field46412: Object8995! +} + +type Object8973 @Directive21(argument61 : "stringValue39559") @Directive44(argument97 : ["stringValue39558"]) { + field46351: Object8974 + field46354: [Object8975] + field46388: Object8986 + field46401: Object8991 +} + +type Object8974 @Directive21(argument61 : "stringValue39561") @Directive44(argument97 : ["stringValue39560"]) { + field46352: String + field46353: String +} + +type Object8975 @Directive21(argument61 : "stringValue39563") @Directive44(argument97 : ["stringValue39562"]) { + field46355: Object8976 + field46360: Object8977 + field46364: Object8978 + field46371: Object8978 + field46372: Object8981 +} + +type Object8976 @Directive21(argument61 : "stringValue39565") @Directive44(argument97 : ["stringValue39564"]) { + field46356: String + field46357: String + field46358: String + field46359: String +} + +type Object8977 @Directive21(argument61 : "stringValue39567") @Directive44(argument97 : ["stringValue39566"]) { + field46361: String + field46362: String + field46363: String +} + +type Object8978 @Directive21(argument61 : "stringValue39569") @Directive44(argument97 : ["stringValue39568"]) { + field46365: Object8979 + field46368: Object8980 + field46370: String +} + +type Object8979 @Directive21(argument61 : "stringValue39571") @Directive44(argument97 : ["stringValue39570"]) { + field46366: String + field46367: String +} + +type Object898 @Directive20(argument58 : "stringValue4562", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4561") @Directive31 @Directive44(argument97 : ["stringValue4563", "stringValue4564"]) { + field5229: String + field5230: String + field5231: String +} + +type Object8980 @Directive21(argument61 : "stringValue39573") @Directive44(argument97 : ["stringValue39572"]) { + field46369: String +} + +type Object8981 @Directive21(argument61 : "stringValue39575") @Directive44(argument97 : ["stringValue39574"]) { + field46373: [Union295] +} + +type Object8982 @Directive21(argument61 : "stringValue39578") @Directive44(argument97 : ["stringValue39577"]) { + field46374: Object8976 + field46375: String + field46376: Object8978 + field46377: Object8978 + field46378: String + field46379: Object8978 + field46380: Object8978 + field46381: Object8983 +} + +type Object8983 @Directive21(argument61 : "stringValue39580") @Directive44(argument97 : ["stringValue39579"]) { + field46382: String + field46383: String +} + +type Object8984 @Directive21(argument61 : "stringValue39582") @Directive44(argument97 : ["stringValue39581"]) { + field46384: String + field46385: Object8985 +} + +type Object8985 @Directive21(argument61 : "stringValue39584") @Directive44(argument97 : ["stringValue39583"]) { + field46386: String + field46387: String +} + +type Object8986 @Directive21(argument61 : "stringValue39586") @Directive44(argument97 : ["stringValue39585"]) { + field46389: String + field46390: [Object8987] + field46400: String +} + +type Object8987 @Directive21(argument61 : "stringValue39588") @Directive44(argument97 : ["stringValue39587"]) { + field46391: Object8988 + field46394: String + field46395: Object8989 + field46399: String +} + +type Object8988 @Directive21(argument61 : "stringValue39590") @Directive44(argument97 : ["stringValue39589"]) { + field46392: Object8976 + field46393: String +} + +type Object8989 @Directive21(argument61 : "stringValue39592") @Directive44(argument97 : ["stringValue39591"]) { + field46396: String + field46397: Object8990 +} + +type Object899 @Directive20(argument58 : "stringValue4566", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4565") @Directive31 @Directive44(argument97 : ["stringValue4567", "stringValue4568"]) { + field5234: String + field5235: Scalar2 + field5236: String + field5237: String + field5238: String + field5239: String + field5240: String + field5241: String + field5242: String + field5243: String + field5244: String +} + +type Object8990 @Directive21(argument61 : "stringValue39594") @Directive44(argument97 : ["stringValue39593"]) { + field46398: String +} + +type Object8991 @Directive21(argument61 : "stringValue39596") @Directive44(argument97 : ["stringValue39595"]) { + field46402: Object8992 + field46405: String + field46406: [Object8993] + field46410: Object8994 +} + +type Object8992 @Directive21(argument61 : "stringValue39598") @Directive44(argument97 : ["stringValue39597"]) { + field46403: String + field46404: String +} + +type Object8993 @Directive21(argument61 : "stringValue39600") @Directive44(argument97 : ["stringValue39599"]) { + field46407: String + field46408: String + field46409: String +} + +type Object8994 @Directive21(argument61 : "stringValue39602") @Directive44(argument97 : ["stringValue39601"]) { + field46411: [String] +} + +type Object8995 @Directive21(argument61 : "stringValue39604") @Directive44(argument97 : ["stringValue39603"]) { + field46413: Enum2160! + field46414: String +} + +type Object8996 @Directive21(argument61 : "stringValue39611") @Directive44(argument97 : ["stringValue39610"]) { + field46416: [Object8997]! +} + +type Object8997 @Directive21(argument61 : "stringValue39613") @Directive44(argument97 : ["stringValue39612"]) { + field46417: String! + field46418: Object8998! + field46422: Object8999! + field46428: Object8999! + field46429: String +} + +type Object8998 @Directive21(argument61 : "stringValue39615") @Directive44(argument97 : ["stringValue39614"]) { + field46419: String! + field46420: String! + field46421: String +} + +type Object8999 @Directive21(argument61 : "stringValue39617") @Directive44(argument97 : ["stringValue39616"]) { + field46423: String + field46424: String + field46425: String + field46426: String + field46427: String +} + +type Object9 @Directive20(argument58 : "stringValue52", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue51") @Directive31 @Directive44(argument97 : ["stringValue53", "stringValue54"]) { + field53: String + field54: String + field55: [Int] + field56: Int +} + +type Object90 @Directive21(argument61 : "stringValue363") @Directive44(argument97 : ["stringValue362"]) { + field615: String + field616: Enum55 + field617: Union10 +} + +type Object900 @Directive20(argument58 : "stringValue4570", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4569") @Directive31 @Directive44(argument97 : ["stringValue4571", "stringValue4572"]) { + field5246: Object901 + field5253: Object901 + field5254: Object901 +} + +type Object9000 @Directive21(argument61 : "stringValue39623") @Directive44(argument97 : ["stringValue39622"]) { + field46431: [Object9001]! +} + +type Object9001 @Directive21(argument61 : "stringValue39625") @Directive44(argument97 : ["stringValue39624"]) { + field46432: String @deprecated + field46433: Object9002! + field46556: String + field46557: String! + field46558: String + field46559: [Object9029] @deprecated + field46566: Object9030 @deprecated + field46605: String + field46606: [Object9038] +} + +type Object9002 @Directive21(argument61 : "stringValue39627") @Directive44(argument97 : ["stringValue39626"]) { + field46434: String + field46435: [Object9003]! + field46498: String + field46499: String + field46500: String + field46501: Scalar2 + field46502: String + field46503: String + field46504: String + field46505: Object9004 + field46506: Object9004 + field46507: [Object9019] + field46511: Object9020 +} + +type Object9003 @Directive21(argument61 : "stringValue39629") @Directive44(argument97 : ["stringValue39628"]) { + field46436: String + field46437: String + field46438: String + field46439: Enum2161 + field46440: Object9004 + field46444: Object9004 + field46445: Object9005 + field46450: Object9005 + field46451: Object9006 @deprecated + field46487: Object9017 + field46490: Object9017 + field46491: String + field46492: Scalar5 + field46493: [Object9018] + field46496: String + field46497: [String] +} + +type Object9004 @Directive21(argument61 : "stringValue39632") @Directive44(argument97 : ["stringValue39631"]) { + field46441: String! + field46442: String + field46443: String +} + +type Object9005 @Directive21(argument61 : "stringValue39634") @Directive44(argument97 : ["stringValue39633"]) { + field46446: String! + field46447: String + field46448: String + field46449: String +} + +type Object9006 @Directive21(argument61 : "stringValue39636") @Directive44(argument97 : ["stringValue39635"]) { + field46452: Object9007 + field46454: Object9008 + field46462: Object9011 + field46466: Object9012 + field46471: Object9013 + field46476: Object9014 + field46480: Object9015 + field46483: Object9016 +} + +type Object9007 @Directive21(argument61 : "stringValue39638") @Directive44(argument97 : ["stringValue39637"]) { + field46453: String +} + +type Object9008 @Directive21(argument61 : "stringValue39640") @Directive44(argument97 : ["stringValue39639"]) { + field46455: String + field46456: Object9009 + field46459: Object9010 +} + +type Object9009 @Directive21(argument61 : "stringValue39642") @Directive44(argument97 : ["stringValue39641"]) { + field46457: Boolean + field46458: Boolean +} + +type Object901 @Directive20(argument58 : "stringValue4574", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4573") @Directive31 @Directive44(argument97 : ["stringValue4575", "stringValue4576"]) { + field5247: String + field5248: String + field5249: Object902 + field5252: String +} + +type Object9010 @Directive21(argument61 : "stringValue39644") @Directive44(argument97 : ["stringValue39643"]) { + field46460: Boolean + field46461: Boolean +} + +type Object9011 @Directive21(argument61 : "stringValue39646") @Directive44(argument97 : ["stringValue39645"]) { + field46463: String + field46464: Boolean + field46465: Enum2162! +} + +type Object9012 @Directive21(argument61 : "stringValue39649") @Directive44(argument97 : ["stringValue39648"]) { + field46467: String + field46468: Boolean + field46469: Boolean + field46470: Enum2163! +} + +type Object9013 @Directive21(argument61 : "stringValue39652") @Directive44(argument97 : ["stringValue39651"]) { + field46472: String + field46473: Boolean + field46474: Boolean + field46475: Enum2164! +} + +type Object9014 @Directive21(argument61 : "stringValue39655") @Directive44(argument97 : ["stringValue39654"]) { + field46477: String + field46478: Scalar5 + field46479: String +} + +type Object9015 @Directive21(argument61 : "stringValue39657") @Directive44(argument97 : ["stringValue39656"]) { + field46481: String @deprecated + field46482: [Enum2165] +} + +type Object9016 @Directive21(argument61 : "stringValue39660") @Directive44(argument97 : ["stringValue39659"]) { + field46484: String + field46485: Boolean + field46486: Boolean +} + +type Object9017 @Directive21(argument61 : "stringValue39662") @Directive44(argument97 : ["stringValue39661"]) { + field46488: Scalar3! + field46489: String! +} + +type Object9018 @Directive21(argument61 : "stringValue39664") @Directive44(argument97 : ["stringValue39663"]) { + field46494: String + field46495: String +} + +type Object9019 @Directive21(argument61 : "stringValue39666") @Directive44(argument97 : ["stringValue39665"]) { + field46508: String + field46509: Object9004! + field46510: String +} + +type Object902 @Directive20(argument58 : "stringValue4578", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4577") @Directive31 @Directive44(argument97 : ["stringValue4579", "stringValue4580"]) { + field5250: Float + field5251: Int +} + +type Object9020 @Directive21(argument61 : "stringValue39668") @Directive44(argument97 : ["stringValue39667"]) { + field46512: Object9021 + field46520: Object9023 + field46526: Object9024 + field46532: Object9025 + field46538: Object9026 + field46546: Object9027 + field46552: Object9028 +} + +type Object9021 @Directive21(argument61 : "stringValue39670") @Directive44(argument97 : ["stringValue39669"]) { + field46513: String @deprecated + field46514: Enum2166! + field46515: Object9022 + field46518: String + field46519: String +} + +type Object9022 @Directive21(argument61 : "stringValue39673") @Directive44(argument97 : ["stringValue39672"]) { + field46516: Scalar2! + field46517: String! +} + +type Object9023 @Directive21(argument61 : "stringValue39675") @Directive44(argument97 : ["stringValue39674"]) { + field46521: String @deprecated + field46522: Enum2166! + field46523: Object9022 + field46524: String + field46525: String +} + +type Object9024 @Directive21(argument61 : "stringValue39677") @Directive44(argument97 : ["stringValue39676"]) { + field46527: String @deprecated + field46528: Enum2166! + field46529: Object9022 + field46530: String + field46531: String +} + +type Object9025 @Directive21(argument61 : "stringValue39679") @Directive44(argument97 : ["stringValue39678"]) { + field46533: String @deprecated + field46534: Enum2166! + field46535: Object9022 + field46536: String + field46537: String +} + +type Object9026 @Directive21(argument61 : "stringValue39681") @Directive44(argument97 : ["stringValue39680"]) { + field46539: String @deprecated + field46540: Enum2166! + field46541: Object9022 + field46542: Scalar5 + field46543: Scalar5 + field46544: String + field46545: String +} + +type Object9027 @Directive21(argument61 : "stringValue39683") @Directive44(argument97 : ["stringValue39682"]) { + field46547: String @deprecated + field46548: Enum2166! + field46549: Object9022 + field46550: Scalar5 + field46551: Scalar5 +} + +type Object9028 @Directive21(argument61 : "stringValue39685") @Directive44(argument97 : ["stringValue39684"]) { + field46553: Enum2167! + field46554: String + field46555: String +} + +type Object9029 @Directive21(argument61 : "stringValue39688") @Directive44(argument97 : ["stringValue39687"]) { + field46560: String! + field46561: Enum2168! + field46562: String! + field46563: String + field46564: String + field46565: Object9022! +} + +type Object903 @Directive20(argument58 : "stringValue4582", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4581") @Directive31 @Directive44(argument97 : ["stringValue4583", "stringValue4584"]) { + field5258: Object904 + field5277: String + field5278: String +} + +type Object9030 @Directive21(argument61 : "stringValue39691") @Directive44(argument97 : ["stringValue39690"]) { + field46567: Object9031 + field46572: Object9032 + field46577: Object9033 + field46582: Object9034 + field46587: Object9035 + field46594: Object9036 + field46601: Object9037 +} + +type Object9031 @Directive21(argument61 : "stringValue39693") @Directive44(argument97 : ["stringValue39692"]) { + field46568: String + field46569: Enum2169! + field46570: Object9022 + field46571: String +} + +type Object9032 @Directive21(argument61 : "stringValue39696") @Directive44(argument97 : ["stringValue39695"]) { + field46573: String + field46574: Enum2169! + field46575: Object9022 + field46576: String +} + +type Object9033 @Directive21(argument61 : "stringValue39698") @Directive44(argument97 : ["stringValue39697"]) { + field46578: String + field46579: Enum2169! + field46580: Object9022 + field46581: String +} + +type Object9034 @Directive21(argument61 : "stringValue39700") @Directive44(argument97 : ["stringValue39699"]) { + field46583: String + field46584: Enum2169! + field46585: Object9022 + field46586: String +} + +type Object9035 @Directive21(argument61 : "stringValue39702") @Directive44(argument97 : ["stringValue39701"]) { + field46588: String + field46589: Enum2169! + field46590: Object9022 + field46591: Scalar5 + field46592: Scalar5 + field46593: String +} + +type Object9036 @Directive21(argument61 : "stringValue39704") @Directive44(argument97 : ["stringValue39703"]) { + field46595: String + field46596: Enum2169! + field46597: Object9022 + field46598: Scalar5 + field46599: Scalar5 + field46600: String +} + +type Object9037 @Directive21(argument61 : "stringValue39706") @Directive44(argument97 : ["stringValue39705"]) { + field46602: Enum2170! + field46603: String + field46604: String +} + +type Object9038 @Directive21(argument61 : "stringValue39709") @Directive44(argument97 : ["stringValue39708"]) { + field46607: String + field46608: String + field46609: String +} + +type Object9039 @Directive44(argument97 : ["stringValue39710"]) { + field46611(argument2268: InputObject1823!): Object9040 @Directive35(argument89 : "stringValue39712", argument90 : false, argument91 : "stringValue39711", argument92 : 777, argument93 : "stringValue39713", argument94 : false) +} + +type Object904 @Directive20(argument58 : "stringValue4586", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4585") @Directive31 @Directive44(argument97 : ["stringValue4587", "stringValue4588"]) { + field5259: Enum256 + field5260: Object398 + field5261: Union103 + field5275: Enum258 + field5276: String +} + +type Object9040 @Directive21(argument61 : "stringValue39717") @Directive44(argument97 : ["stringValue39716"]) { + field46612: Object9041! + field46635: Object9046 @deprecated + field46639: [Interface116!]! +} + +type Object9041 @Directive21(argument61 : "stringValue39719") @Directive44(argument97 : ["stringValue39718"]) { + field46613: Object9042 + field46632: Object9045 +} + +type Object9042 @Directive21(argument61 : "stringValue39721") @Directive44(argument97 : ["stringValue39720"]) { + field46614: String + field46615: String + field46616: Object9043 + field46622: Object9044 + field46628: String + field46629: String + field46630: String + field46631: String +} + +type Object9043 @Directive21(argument61 : "stringValue39723") @Directive44(argument97 : ["stringValue39722"]) { + field46617: String + field46618: String + field46619: String + field46620: String + field46621: String +} + +type Object9044 @Directive21(argument61 : "stringValue39725") @Directive44(argument97 : ["stringValue39724"]) { + field46623: String + field46624: String + field46625: String + field46626: String + field46627: String +} + +type Object9045 @Directive21(argument61 : "stringValue39727") @Directive44(argument97 : ["stringValue39726"]) { + field46633: String + field46634: String +} + +type Object9046 @Directive21(argument61 : "stringValue39729") @Directive44(argument97 : ["stringValue39728"]) { + field46636: Enum2172! + field46637: [Object2562!]! + field46638: String +} + +type Object9047 @Directive44(argument97 : ["stringValue39731"]) { + field46641(argument2269: InputObject1824!): Object9048 @Directive35(argument89 : "stringValue39733", argument90 : true, argument91 : "stringValue39732", argument92 : 778, argument93 : "stringValue39734", argument94 : false) + field46646(argument2270: InputObject1825!): Object9049 @Directive35(argument89 : "stringValue39739", argument90 : true, argument91 : "stringValue39738", argument92 : 779, argument93 : "stringValue39740", argument94 : false) + field46651(argument2271: InputObject1826!): Object9050 @Directive35(argument89 : "stringValue39745", argument90 : true, argument91 : "stringValue39744", argument92 : 780, argument93 : "stringValue39746", argument94 : false) + field46653(argument2272: InputObject1827!): Object9051 @Directive35(argument89 : "stringValue39752", argument90 : true, argument91 : "stringValue39751", argument92 : 781, argument93 : "stringValue39753", argument94 : false) + field46664(argument2273: InputObject1828!): Object9053 @Directive35(argument89 : "stringValue39761", argument90 : true, argument91 : "stringValue39760", argument92 : 782, argument93 : "stringValue39762", argument94 : false) + field46667(argument2274: InputObject1829!): Object9054 @Directive35(argument89 : "stringValue39767", argument90 : true, argument91 : "stringValue39766", argument92 : 783, argument93 : "stringValue39768", argument94 : false) +} + +type Object9048 @Directive21(argument61 : "stringValue39737") @Directive44(argument97 : ["stringValue39736"]) { + field46642: Boolean + field46643: Object5287 + field46644: Boolean + field46645: Scalar4 +} + +type Object9049 @Directive21(argument61 : "stringValue39743") @Directive44(argument97 : ["stringValue39742"]) { + field46647: Boolean + field46648: Boolean + field46649: Object5287 + field46650: Scalar4 +} + +type Object905 @Directive20(argument58 : "stringValue4597", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4596") @Directive31 @Directive44(argument97 : ["stringValue4598", "stringValue4599"]) { + field5262: Scalar4 + field5263: Scalar4 + field5264: Object906 + field5267: String + field5268: String + field5269: String + field5270: String +} + +type Object9050 @Directive21(argument61 : "stringValue39750") @Directive44(argument97 : ["stringValue39749"]) { + field46652: Boolean +} + +type Object9051 @Directive21(argument61 : "stringValue39757") @Directive44(argument97 : ["stringValue39756"]) { + field46654: Enum2174 + field46655: [Object9052] + field46662: Object5287 + field46663: Boolean +} + +type Object9052 @Directive21(argument61 : "stringValue39759") @Directive44(argument97 : ["stringValue39758"]) { + field46656: String + field46657: String + field46658: String + field46659: Boolean + field46660: String + field46661: Scalar2 +} + +type Object9053 @Directive21(argument61 : "stringValue39765") @Directive44(argument97 : ["stringValue39764"]) { + field46665: Boolean + field46666: Object5287 +} + +type Object9054 @Directive21(argument61 : "stringValue39771") @Directive44(argument97 : ["stringValue39770"]) { + field46668: Boolean +} + +type Object9055 @Directive44(argument97 : ["stringValue39772"]) { + field46670(argument2275: InputObject1830!): Object9056 @Directive35(argument89 : "stringValue39774", argument90 : false, argument91 : "stringValue39773", argument92 : 784, argument93 : "stringValue39775", argument94 : false) + field46793(argument2276: InputObject1831!): Object9088 @Directive35(argument89 : "stringValue39854", argument90 : false, argument91 : "stringValue39853", argument92 : 785, argument93 : "stringValue39855", argument94 : false) + field46824(argument2277: InputObject1832!): Object9095 @Directive35(argument89 : "stringValue39873", argument90 : false, argument91 : "stringValue39872", argument92 : 786, argument93 : "stringValue39874", argument94 : false) + field46830(argument2278: InputObject1833!): Object9096 @Directive35(argument89 : "stringValue39879", argument90 : false, argument91 : "stringValue39878", argument92 : 787, argument93 : "stringValue39880", argument94 : false) + field46849(argument2279: InputObject1834!): Object9102 @Directive35(argument89 : "stringValue39898", argument90 : false, argument91 : "stringValue39897", argument92 : 788, argument93 : "stringValue39899", argument94 : false) + field46852(argument2280: InputObject1835!): Object9103 @Directive35(argument89 : "stringValue39904", argument90 : false, argument91 : "stringValue39903", argument92 : 789, argument93 : "stringValue39905", argument94 : false) +} + +type Object9056 @Directive21(argument61 : "stringValue39780") @Directive44(argument97 : ["stringValue39779"]) { + field46671: Object9057 + field46765: Object9081 + field46783: [Object9084!] + field46787: Object9085 +} + +type Object9057 @Directive21(argument61 : "stringValue39782") @Directive44(argument97 : ["stringValue39781"]) { + field46672: Object9058! + field46730: [Object9074!]! + field46740: Object9077 + field46745: [Object9078!] + field46751: Object9079 +} + +type Object9058 @Directive21(argument61 : "stringValue39784") @Directive44(argument97 : ["stringValue39783"]) { + field46673: Scalar2! + field46674: String! + field46675: String! + field46676: Object9059! + field46683: Scalar2 + field46684: String! + field46685: Object9060 + field46694: [Object9062!] + field46719: String! + field46720: String + field46721: Object9071 + field46724: [Object9072!] + field46727: [Object9073!] +} + +type Object9059 @Directive21(argument61 : "stringValue39786") @Directive44(argument97 : ["stringValue39785"]) { + field46677: String! + field46678: String + field46679: String + field46680: Scalar2! + field46681: String @deprecated + field46682: String +} + +type Object906 @Directive20(argument58 : "stringValue4601", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4600") @Directive31 @Directive44(argument97 : ["stringValue4602", "stringValue4603"]) { + field5265: String + field5266: Enum257 +} + +type Object9060 @Directive21(argument61 : "stringValue39788") @Directive44(argument97 : ["stringValue39787"]) { + field46686: Object9061 + field46693: String +} + +type Object9061 @Directive21(argument61 : "stringValue39790") @Directive44(argument97 : ["stringValue39789"]) { + field46687: String + field46688: String + field46689: String + field46690: String + field46691: String + field46692: Scalar1 +} + +type Object9062 @Directive21(argument61 : "stringValue39792") @Directive44(argument97 : ["stringValue39791"]) { + field46695: Enum2177! + field46696: Union296! +} + +type Object9063 @Directive21(argument61 : "stringValue39796") @Directive44(argument97 : ["stringValue39795"]) { + field46697: String + field46698: String + field46699: String! + field46700: String! +} + +type Object9064 @Directive21(argument61 : "stringValue39798") @Directive44(argument97 : ["stringValue39797"]) { + field46701: String + field46702: String! +} + +type Object9065 @Directive21(argument61 : "stringValue39800") @Directive44(argument97 : ["stringValue39799"]) { + field46703: String! + field46704: String + field46705: String +} + +type Object9066 @Directive21(argument61 : "stringValue39802") @Directive44(argument97 : ["stringValue39801"]) { + field46706: Scalar2 + field46707: String! +} + +type Object9067 @Directive21(argument61 : "stringValue39804") @Directive44(argument97 : ["stringValue39803"]) { + field46708: String! +} + +type Object9068 @Directive21(argument61 : "stringValue39806") @Directive44(argument97 : ["stringValue39805"]) { + field46709: String! + field46710: String + field46711: String +} + +type Object9069 @Directive21(argument61 : "stringValue39808") @Directive44(argument97 : ["stringValue39807"]) { + field46712: Enum2178! + field46713: Union297 +} + +type Object907 @Directive20(argument58 : "stringValue4609", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4608") @Directive31 @Directive44(argument97 : ["stringValue4610", "stringValue4611"]) { + field5271: [Object906] + field5272: String + field5273: String + field5274: String +} + +type Object9070 @Directive21(argument61 : "stringValue39812") @Directive44(argument97 : ["stringValue39811"]) { + field46714: Boolean! + field46715: String + field46716: String + field46717: String + field46718: String +} + +type Object9071 @Directive21(argument61 : "stringValue39814") @Directive44(argument97 : ["stringValue39813"]) { + field46722: String + field46723: Scalar1 +} + +type Object9072 @Directive21(argument61 : "stringValue39816") @Directive44(argument97 : ["stringValue39815"]) { + field46725: String + field46726: Enum2179 +} + +type Object9073 @Directive21(argument61 : "stringValue39819") @Directive44(argument97 : ["stringValue39818"]) { + field46728: Enum2180! + field46729: String! +} + +type Object9074 @Directive21(argument61 : "stringValue39822") @Directive44(argument97 : ["stringValue39821"]) { + field46731: Enum2181 + field46732: Union298 +} + +type Object9075 @Directive21(argument61 : "stringValue39826") @Directive44(argument97 : ["stringValue39825"]) { + field46733: String + field46734: String + field46735: String + field46736: String + field46737: String +} + +type Object9076 @Directive21(argument61 : "stringValue39828") @Directive44(argument97 : ["stringValue39827"]) { + field46738: String + field46739: [String] +} + +type Object9077 @Directive21(argument61 : "stringValue39830") @Directive44(argument97 : ["stringValue39829"]) { + field46741: String + field46742: Boolean + field46743: [Object9058] + field46744: String +} + +type Object9078 @Directive21(argument61 : "stringValue39832") @Directive44(argument97 : ["stringValue39831"]) { + field46746: String + field46747: String + field46748: String + field46749: String + field46750: String +} + +type Object9079 @Directive21(argument61 : "stringValue39834") @Directive44(argument97 : ["stringValue39833"]) { + field46752: String + field46753: [Object9080] +} + +type Object908 implements Interface76 @Directive21(argument61 : "stringValue4617") @Directive22(argument62 : "stringValue4616") @Directive31 @Directive44(argument97 : ["stringValue4618", "stringValue4619", "stringValue4620"]) @Directive45(argument98 : ["stringValue4621"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union104] + field5281: Object909 + field5300: [Object913] +} + +type Object9080 @Directive21(argument61 : "stringValue39836") @Directive44(argument97 : ["stringValue39835"]) { + field46754: Scalar2! + field46755: String! + field46756: String + field46757: String + field46758: [Object9080] + field46759: [Union299] + field46760: String + field46761: Scalar2 + field46762: Scalar2 + field46763: Boolean + field46764: Boolean @deprecated +} + +type Object9081 @Directive21(argument61 : "stringValue39839") @Directive44(argument97 : ["stringValue39838"]) { + field46766: String + field46767: String + field46768: [Object9082] + field46778: String + field46779: Scalar1 + field46780: [Object9082] + field46781: String + field46782: String +} + +type Object9082 @Directive21(argument61 : "stringValue39841") @Directive44(argument97 : ["stringValue39840"]) { + field46769: Scalar2 + field46770: String + field46771: String + field46772: [Scalar2] + field46773: [Object9083] + field46777: Boolean +} + +type Object9083 @Directive21(argument61 : "stringValue39843") @Directive44(argument97 : ["stringValue39842"]) { + field46774: Scalar2 + field46775: String + field46776: String +} + +type Object9084 @Directive21(argument61 : "stringValue39845") @Directive44(argument97 : ["stringValue39844"]) { + field46784: String + field46785: String + field46786: Scalar2 +} + +type Object9085 @Directive21(argument61 : "stringValue39847") @Directive44(argument97 : ["stringValue39846"]) { + field46788: Enum2182! + field46789: Object9086 + field46791: Object9087 +} + +type Object9086 @Directive21(argument61 : "stringValue39850") @Directive44(argument97 : ["stringValue39849"]) { + field46790: String! +} + +type Object9087 @Directive21(argument61 : "stringValue39852") @Directive44(argument97 : ["stringValue39851"]) { + field46792: String +} + +type Object9088 @Directive21(argument61 : "stringValue39858") @Directive44(argument97 : ["stringValue39857"]) { + field46794: Object9089 + field46822: Object9081 + field46823: [Object9084] +} + +type Object9089 @Directive21(argument61 : "stringValue39860") @Directive44(argument97 : ["stringValue39859"]) { + field46795: Object9090 + field46809: [Union300] + field46815: Object9094 + field46819: Object9077 + field46820: [Object9078] + field46821: Object9079 +} + +type Object909 @Directive20(argument58 : "stringValue4623", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4622") @Directive31 @Directive44(argument97 : ["stringValue4624", "stringValue4625"]) { + field5282: String + field5283: Enum259 + field5284: Object910 + field5286: String + field5287: Object899 + field5288: String + field5289: Object911 + field5292: Object899 + field5293: Object899 + field5294: String + field5295: Object899 + field5296: Object912 +} + +type Object9090 @Directive21(argument61 : "stringValue39862") @Directive44(argument97 : ["stringValue39861"]) { + field46796: Scalar2! + field46797: String! + field46798: String! + field46799: String + field46800: Object9091 + field46804: String + field46805: String! + field46806: Int + field46807: Int + field46808: String +} + +type Object9091 @Directive21(argument61 : "stringValue39864") @Directive44(argument97 : ["stringValue39863"]) { + field46801: Object9061 + field46802: Object9061 + field46803: Object9061 +} + +type Object9092 @Directive21(argument61 : "stringValue39867") @Directive44(argument97 : ["stringValue39866"]) { + field46810: Object9058 +} + +type Object9093 @Directive21(argument61 : "stringValue39869") @Directive44(argument97 : ["stringValue39868"]) { + field46811: String + field46812: Int + field46813: Int + field46814: [Object9058] +} + +type Object9094 @Directive21(argument61 : "stringValue39871") @Directive44(argument97 : ["stringValue39870"]) { + field46816: String + field46817: [Object9090] + field46818: String +} + +type Object9095 @Directive21(argument61 : "stringValue39877") @Directive44(argument97 : ["stringValue39876"]) { + field46825: Object9081 + field46826: [Object9090] + field46827: Boolean + field46828: Boolean + field46829: String +} + +type Object9096 @Directive21(argument61 : "stringValue39884") @Directive44(argument97 : ["stringValue39883"]) { + field46831: Object9097 +} + +type Object9097 @Directive21(argument61 : "stringValue39886") @Directive44(argument97 : ["stringValue39885"]) { + field46832: Object9098 + field46836: [Object9098] + field46837: [Object9078] + field46838: Object9079 + field46839: [Object9100] + field46844: String + field46845: String + field46846: [Object9101] +} + +type Object9098 @Directive21(argument61 : "stringValue39888") @Directive44(argument97 : ["stringValue39887"]) { + field46833: Enum2184 + field46834: Union301 +} + +type Object9099 @Directive21(argument61 : "stringValue39892") @Directive44(argument97 : ["stringValue39891"]) { + field46835: Object9090 +} + +type Object91 @Directive21(argument61 : "stringValue367") @Directive44(argument97 : ["stringValue366"]) { + field618: [Object75] +} + +type Object910 @Directive20(argument58 : "stringValue4631", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4630") @Directive31 @Directive44(argument97 : ["stringValue4632", "stringValue4633"]) { + field5285: String +} + +type Object9100 @Directive21(argument61 : "stringValue39894") @Directive44(argument97 : ["stringValue39893"]) { + field46840: String! + field46841: String + field46842: String + field46843: Boolean +} + +type Object9101 @Directive21(argument61 : "stringValue39896") @Directive44(argument97 : ["stringValue39895"]) { + field46847: Enum2183 + field46848: String +} + +type Object9102 @Directive21(argument61 : "stringValue39902") @Directive44(argument97 : ["stringValue39901"]) { + field46850: [Object9100] + field46851: [Object9084] +} + +type Object9103 @Directive21(argument61 : "stringValue39910") @Directive44(argument97 : ["stringValue39909"]) { + field46853: Object9104 + field46859: Object9081 + field46860: [Object9084] + field46861: Object9085 +} + +type Object9104 @Directive21(argument61 : "stringValue39912") @Directive44(argument97 : ["stringValue39911"]) { + field46854: Object9080 + field46855: Object9079 + field46856: Object9092 + field46857: [Object9078] + field46858: [Object9100] @deprecated +} + +type Object9105 @Directive44(argument97 : ["stringValue39913"]) { + field46863(argument2281: InputObject1838!): Object9106 @Directive35(argument89 : "stringValue39915", argument90 : true, argument91 : "stringValue39914", argument92 : 790, argument93 : "stringValue39916", argument94 : false) + field46866: Object9107 @Directive35(argument89 : "stringValue39921", argument90 : true, argument91 : "stringValue39920", argument93 : "stringValue39922", argument94 : false) + field46870(argument2282: InputObject1839!): Object9108 @Directive35(argument89 : "stringValue39926", argument90 : true, argument91 : "stringValue39925", argument92 : 791, argument93 : "stringValue39927", argument94 : false) + field46872(argument2283: InputObject1840!): Object9109 @Directive35(argument89 : "stringValue39932", argument90 : true, argument91 : "stringValue39931", argument92 : 792, argument93 : "stringValue39933", argument94 : false) + field46874(argument2284: InputObject1841!): Object9110 @Directive35(argument89 : "stringValue39938", argument90 : true, argument91 : "stringValue39937", argument92 : 793, argument93 : "stringValue39939", argument94 : false) + field46947(argument2285: InputObject1842!): Object9122 @Directive35(argument89 : "stringValue39978", argument90 : true, argument91 : "stringValue39977", argument92 : 794, argument93 : "stringValue39979", argument94 : false) + field46981(argument2286: InputObject1844!): Object9130 @Directive35(argument89 : "stringValue40000", argument90 : true, argument91 : "stringValue39999", argument92 : 795, argument93 : "stringValue40001", argument94 : false) + field46983(argument2287: InputObject1845!): Object9131 @Directive35(argument89 : "stringValue40006", argument90 : true, argument91 : "stringValue40005", argument92 : 796, argument93 : "stringValue40007", argument94 : false) + field47022(argument2288: InputObject1846!): Object9137 @Directive35(argument89 : "stringValue40023", argument90 : true, argument91 : "stringValue40022", argument93 : "stringValue40024", argument94 : false) + field47025(argument2289: InputObject1847!): Object9138 @Directive35(argument89 : "stringValue40029", argument90 : true, argument91 : "stringValue40028", argument92 : 797, argument93 : "stringValue40030", argument94 : false) + field47038(argument2290: InputObject1848!): Object9140 @Directive35(argument89 : "stringValue40037", argument90 : true, argument91 : "stringValue40036", argument92 : 798, argument93 : "stringValue40038", argument94 : false) + field47048(argument2291: InputObject1849!): Object9141 @Directive35(argument89 : "stringValue40043", argument90 : true, argument91 : "stringValue40042", argument92 : 799, argument93 : "stringValue40044", argument94 : false) + field47060(argument2292: InputObject1850!): Object9144 @Directive35(argument89 : "stringValue40053", argument90 : true, argument91 : "stringValue40052", argument92 : 800, argument93 : "stringValue40054", argument94 : false) + field47062: Object9145 @Directive35(argument89 : "stringValue40059", argument90 : true, argument91 : "stringValue40058", argument93 : "stringValue40060", argument94 : false) + field47066: Object9146 @Directive35(argument89 : "stringValue40064", argument90 : true, argument91 : "stringValue40063", argument92 : 801, argument93 : "stringValue40065", argument94 : false) + field47068(argument2293: InputObject1851!): Object9147 @Directive35(argument89 : "stringValue40070", argument90 : true, argument91 : "stringValue40069", argument92 : 802, argument93 : "stringValue40071", argument94 : false) + field47070(argument2294: InputObject1852!): Object9148 @Directive35(argument89 : "stringValue40076", argument90 : true, argument91 : "stringValue40075", argument92 : 803, argument93 : "stringValue40077", argument94 : false) + field47076(argument2295: InputObject1853!): Object9150 @Directive35(argument89 : "stringValue40084", argument90 : true, argument91 : "stringValue40083", argument92 : 804, argument93 : "stringValue40085", argument94 : false) + field47091(argument2296: InputObject1854!): Object9151 @Directive35(argument89 : "stringValue40094", argument90 : true, argument91 : "stringValue40093", argument92 : 805, argument93 : "stringValue40095", argument94 : false) + field47092: Object9153 @Directive35(argument89 : "stringValue40098", argument90 : true, argument91 : "stringValue40097", argument92 : 806, argument93 : "stringValue40099", argument94 : false) + field47102(argument2297: InputObject1855!): Object9155 @Directive35(argument89 : "stringValue40105", argument90 : true, argument91 : "stringValue40104", argument92 : 807, argument93 : "stringValue40106", argument94 : false) + field47104(argument2298: InputObject1856!): Object9156 @Directive35(argument89 : "stringValue40112", argument90 : true, argument91 : "stringValue40111", argument92 : 808, argument93 : "stringValue40113", argument94 : false) + field47106(argument2299: InputObject1857!): Object9157 @Directive35(argument89 : "stringValue40118", argument90 : true, argument91 : "stringValue40117", argument92 : 809, argument93 : "stringValue40119", argument94 : false) + field47109(argument2300: InputObject1858!): Object9158 @Directive35(argument89 : "stringValue40124", argument90 : true, argument91 : "stringValue40123", argument92 : 810, argument93 : "stringValue40125", argument94 : false) + field47111(argument2301: InputObject1859!): Object9159 @Directive35(argument89 : "stringValue40131", argument90 : true, argument91 : "stringValue40130", argument92 : 811, argument93 : "stringValue40132", argument94 : false) + field47119(argument2302: InputObject1860!): Object9160 @Directive35(argument89 : "stringValue40137", argument90 : true, argument91 : "stringValue40136", argument93 : "stringValue40138", argument94 : false) +} + +type Object9106 @Directive21(argument61 : "stringValue39919") @Directive44(argument97 : ["stringValue39918"]) { + field46864: Scalar1 + field46865: Scalar2! +} + +type Object9107 @Directive21(argument61 : "stringValue39924") @Directive44(argument97 : ["stringValue39923"]) { + field46867: Boolean! + field46868: Boolean! + field46869: String +} + +type Object9108 @Directive21(argument61 : "stringValue39930") @Directive44(argument97 : ["stringValue39929"]) { + field46871: Boolean! +} + +type Object9109 @Directive21(argument61 : "stringValue39936") @Directive44(argument97 : ["stringValue39935"]) { + field46873: Boolean +} + +type Object911 @Directive20(argument58 : "stringValue4635", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4634") @Directive31 @Directive44(argument97 : ["stringValue4636", "stringValue4637"]) { + field5290: String + field5291: String +} + +type Object9110 @Directive21(argument61 : "stringValue39943") @Directive44(argument97 : ["stringValue39942"]) { + field46875: String + field46876: Object9111 + field46883: Object9112 + field46921: [Object9119] + field46945: String + field46946: String +} + +type Object9111 @Directive21(argument61 : "stringValue39945") @Directive44(argument97 : ["stringValue39944"]) { + field46877: [Enum2185] + field46878: Enum2185 + field46879: String + field46880: String + field46881: String + field46882: String +} + +type Object9112 @Directive21(argument61 : "stringValue39947") @Directive44(argument97 : ["stringValue39946"]) { + field46884: String + field46885: String + field46886: String + field46887: [Object9113] + field46920: [Object9118] +} + +type Object9113 @Directive21(argument61 : "stringValue39949") @Directive44(argument97 : ["stringValue39948"]) { + field46888: Object9114 + field46895: String + field46896: String + field46897: String @deprecated + field46898: String @deprecated + field46899: Object9116 + field46908: Enum2189 + field46909: Enum2190 + field46910: Object9118 + field46919: Object9116 +} + +type Object9114 @Directive21(argument61 : "stringValue39951") @Directive44(argument97 : ["stringValue39950"]) { + field46889: String + field46890: String + field46891: [Object9115] + field46894: Enum2186 +} + +type Object9115 @Directive21(argument61 : "stringValue39953") @Directive44(argument97 : ["stringValue39952"]) { + field46892: String + field46893: String +} + +type Object9116 @Directive21(argument61 : "stringValue39956") @Directive44(argument97 : ["stringValue39955"]) { + field46900: Enum2187 + field46901: String + field46902: String + field46903: String + field46904: [Object9117] + field46907: Enum2188 +} + +type Object9117 @Directive21(argument61 : "stringValue39959") @Directive44(argument97 : ["stringValue39958"]) { + field46905: String + field46906: String +} + +type Object9118 @Directive21(argument61 : "stringValue39964") @Directive44(argument97 : ["stringValue39963"]) { + field46911: String + field46912: String + field46913: Enum2191 + field46914: String + field46915: String + field46916: String + field46917: String + field46918: String +} + +type Object9119 @Directive21(argument61 : "stringValue39967") @Directive44(argument97 : ["stringValue39966"]) { + field46922: String + field46923: Object9116 + field46924: [[Object9113]] + field46925: Enum2192 + field46926: [Object9120] + field46942: Object9118 + field46943: String + field46944: [Object9113] +} + +type Object912 @Directive20(argument58 : "stringValue4639", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4638") @Directive31 @Directive44(argument97 : ["stringValue4640", "stringValue4641"]) { + field5297: Enum260 + field5298: Enum260 + field5299: Enum260 +} + +type Object9120 @Directive21(argument61 : "stringValue39970") @Directive44(argument97 : ["stringValue39969"]) { + field46927: String + field46928: String + field46929: Object9121 + field46936: [Object9114] + field46937: Enum2193 + field46938: Enum2193 + field46939: Enum2194 + field46940: Enum2195 + field46941: Enum2196 +} + +type Object9121 @Directive21(argument61 : "stringValue39972") @Directive44(argument97 : ["stringValue39971"]) { + field46930: String + field46931: String + field46932: Enum2189 + field46933: Object9116 + field46934: Object9118 + field46935: Object9116 +} + +type Object9122 @Directive21(argument61 : "stringValue39983") @Directive44(argument97 : ["stringValue39982"]) { + field46948: [Object9123] + field46975: Object9128 + field46979: Object9129 +} + +type Object9123 @Directive21(argument61 : "stringValue39985") @Directive44(argument97 : ["stringValue39984"]) { + field46949: Object5293! + field46950: Object9124 @deprecated + field46956: [String]! + field46957: Scalar2! + field46958: [Object9125] + field46962: String + field46963: String + field46964: Object9126 + field46969: Object9127 + field46974: String +} + +type Object9124 @Directive21(argument61 : "stringValue39987") @Directive44(argument97 : ["stringValue39986"]) { + field46951: Scalar2! + field46952: Float + field46953: Float + field46954: Float + field46955: Float +} + +type Object9125 @Directive21(argument61 : "stringValue39989") @Directive44(argument97 : ["stringValue39988"]) { + field46959: String + field46960: String + field46961: String +} + +type Object9126 @Directive21(argument61 : "stringValue39991") @Directive44(argument97 : ["stringValue39990"]) { + field46965: String + field46966: Float + field46967: String + field46968: String +} + +type Object9127 @Directive21(argument61 : "stringValue39993") @Directive44(argument97 : ["stringValue39992"]) { + field46970: String + field46971: [Enum2197] + field46972: String + field46973: String +} + +type Object9128 @Directive21(argument61 : "stringValue39996") @Directive44(argument97 : ["stringValue39995"]) { + field46976: Int + field46977: Int + field46978: Int +} + +type Object9129 @Directive21(argument61 : "stringValue39998") @Directive44(argument97 : ["stringValue39997"]) { + field46980: Scalar1 +} + +type Object913 @Directive20(argument58 : "stringValue4647", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4646") @Directive31 @Directive44(argument97 : ["stringValue4648", "stringValue4649"]) { + field5301: Object898 + field5302: Object899 + field5303: Object900 + field5304: Float + field5305: Object899 + field5306: Object899 + field5307: Object398 + field5308: String + field5309: String + field5310: String + field5311: String + field5312: Object914 + field5336: Object899 +} + +type Object9130 @Directive21(argument61 : "stringValue40004") @Directive44(argument97 : ["stringValue40003"]) { + field46982: [Object5293]! +} + +type Object9131 @Directive21(argument61 : "stringValue40010") @Directive44(argument97 : ["stringValue40009"]) { + field46984: Scalar1 + field46985: Object9132 + field46989: Object9133 + field46996: Scalar2 + field46997: Scalar2 + field46998: Scalar2 + field46999: Object5298 + field47000: String + field47001: Object9135 + field47004: Float + field47005: [Object9136] + field47019: [Object9113] + field47020: Object9133 + field47021: Object9129 +} + +type Object9132 @Directive21(argument61 : "stringValue40012") @Directive44(argument97 : ["stringValue40011"]) { + field46986: Float + field46987: [String] + field46988: [Float] +} + +type Object9133 @Directive21(argument61 : "stringValue40014") @Directive44(argument97 : ["stringValue40013"]) { + field46990: Float! + field46991: [Object9134]! +} + +type Object9134 @Directive21(argument61 : "stringValue40016") @Directive44(argument97 : ["stringValue40015"]) { + field46992: Float! + field46993: Float! + field46994: Float! + field46995: Float +} + +type Object9135 @Directive21(argument61 : "stringValue40018") @Directive44(argument97 : ["stringValue40017"]) { + field47002: String + field47003: Int +} + +type Object9136 @Directive21(argument61 : "stringValue40020") @Directive44(argument97 : ["stringValue40019"]) { + field47006: String + field47007: String + field47008: String + field47009: String + field47010: String + field47011: String + field47012: String + field47013: String + field47014: String + field47015: String + field47016: String + field47017: String + field47018: Enum2198 +} + +type Object9137 @Directive21(argument61 : "stringValue40027") @Directive44(argument97 : ["stringValue40026"]) { + field47023: Scalar2 + field47024: Object5298 +} + +type Object9138 @Directive21(argument61 : "stringValue40033") @Directive44(argument97 : ["stringValue40032"]) { + field47026: [Object9123]! + field47027: Object9139 + field47030: Object9112 + field47031: Object9112 + field47032: Scalar2 + field47033: Scalar2 + field47034: Scalar2 + field47035: Object5298 @deprecated + field47036: [Object9136] + field47037: Object9129 +} + +type Object9139 @Directive21(argument61 : "stringValue40035") @Directive44(argument97 : ["stringValue40034"]) { + field47028: Float! + field47029: Float! +} + +type Object914 @Directive20(argument58 : "stringValue4651", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4650") @Directive31 @Directive44(argument97 : ["stringValue4652", "stringValue4653"]) { + field5313: String + field5314: String + field5315: Scalar2 + field5316: String + field5317: String + field5318: String + field5319: String + field5320: String + field5321: String + field5322: String + field5323: String + field5324: String + field5325: String + field5326: [Object915] + field5330: String + field5331: String + field5332: String + field5333: String + field5334: String + field5335: String +} + +type Object9140 @Directive21(argument61 : "stringValue40041") @Directive44(argument97 : ["stringValue40040"]) { + field47039: Object9123 + field47040: [Object9119] + field47041: Float + field47042: String + field47043: String + field47044: String + field47045: Object9129 + field47046: Scalar1 + field47047: Scalar1 +} + +type Object9141 @Directive21(argument61 : "stringValue40047") @Directive44(argument97 : ["stringValue40046"]) { + field47049: [Object9142]! + field47057: Scalar4 + field47058: Object9128 + field47059: Object9129 +} + +type Object9142 @Directive21(argument61 : "stringValue40049") @Directive44(argument97 : ["stringValue40048"]) { + field47050: String! + field47051: String! + field47052: [Object9143]! +} + +type Object9143 @Directive21(argument61 : "stringValue40051") @Directive44(argument97 : ["stringValue40050"]) { + field47053: String! + field47054: String! + field47055: Boolean! + field47056: Boolean! +} + +type Object9144 @Directive21(argument61 : "stringValue40057") @Directive44(argument97 : ["stringValue40056"]) { + field47061: Object9136 +} + +type Object9145 @Directive21(argument61 : "stringValue40062") @Directive44(argument97 : ["stringValue40061"]) { + field47063: Object5298 + field47064: Scalar2 + field47065: String +} + +type Object9146 @Directive21(argument61 : "stringValue40067") @Directive44(argument97 : ["stringValue40066"]) { + field47067: Enum2199! +} + +type Object9147 @Directive21(argument61 : "stringValue40074") @Directive44(argument97 : ["stringValue40073"]) { + field47069: Boolean! +} + +type Object9148 @Directive21(argument61 : "stringValue40080") @Directive44(argument97 : ["stringValue40079"]) { + field47071: [String] @deprecated + field47072: [String] + field47073: [Object9149] +} + +type Object9149 @Directive21(argument61 : "stringValue40082") @Directive44(argument97 : ["stringValue40081"]) { + field47074: String! + field47075: String! +} + +type Object915 @Directive20(argument58 : "stringValue4655", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4654") @Directive31 @Directive44(argument97 : ["stringValue4656", "stringValue4657"]) { + field5327: String + field5328: String + field5329: String +} + +type Object9150 @Directive21(argument61 : "stringValue40088") @Directive44(argument97 : ["stringValue40087"]) { + field47077: Object9151 + field47090: Object9148 +} + +type Object9151 @Directive21(argument61 : "stringValue40090") @Directive44(argument97 : ["stringValue40089"]) { + field47078: [Object9152] + field47089: Object9128 +} + +type Object9152 @Directive21(argument61 : "stringValue40092") @Directive44(argument97 : ["stringValue40091"]) { + field47079: Scalar2! + field47080: String + field47081: String + field47082: String + field47083: String + field47084: Boolean + field47085: Boolean + field47086: Int + field47087: String + field47088: String +} + +type Object9153 @Directive21(argument61 : "stringValue40101") @Directive44(argument97 : ["stringValue40100"]) { + field47093: Object9154 +} + +type Object9154 @Directive21(argument61 : "stringValue40103") @Directive44(argument97 : ["stringValue40102"]) { + field47094: Boolean + field47095: String + field47096: String + field47097: String + field47098: Boolean + field47099: String + field47100: String + field47101: String +} + +type Object9155 @Directive21(argument61 : "stringValue40110") @Directive44(argument97 : ["stringValue40109"]) { + field47103: String! +} + +type Object9156 @Directive21(argument61 : "stringValue40116") @Directive44(argument97 : ["stringValue40115"]) { + field47105: Boolean! +} + +type Object9157 @Directive21(argument61 : "stringValue40122") @Directive44(argument97 : ["stringValue40121"]) { + field47107: Boolean! + field47108: [Enum1337] +} + +type Object9158 @Directive21(argument61 : "stringValue40129") @Directive44(argument97 : ["stringValue40128"]) { + field47110: String! +} + +type Object9159 @Directive21(argument61 : "stringValue40135") @Directive44(argument97 : ["stringValue40134"]) { + field47112: String + field47113: String + field47114: String + field47115: Object9120 + field47116: [Object9125] + field47117: Object9111 + field47118: String +} + +type Object916 implements Interface76 @Directive21(argument61 : "stringValue4662") @Directive22(argument62 : "stringValue4661") @Directive31 @Directive44(argument97 : ["stringValue4663", "stringValue4664", "stringValue4665"]) @Directive45(argument98 : ["stringValue4666"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union105] + field5221: Boolean +} + +type Object9160 @Directive21(argument61 : "stringValue40141") @Directive44(argument97 : ["stringValue40140"]) { + field47120: Float +} + +type Object9161 @Directive44(argument97 : ["stringValue40142"]) { + field47122(argument2303: InputObject1861!): Object5328 @Directive35(argument89 : "stringValue40144", argument90 : false, argument91 : "stringValue40143", argument92 : 812, argument93 : "stringValue40145", argument94 : true) + field47123(argument2304: InputObject1862!): Object5314 @Directive35(argument89 : "stringValue40148", argument90 : false, argument91 : "stringValue40147", argument92 : 813, argument93 : "stringValue40149", argument94 : true) + field47124(argument2305: InputObject1863!): Object9162 @Directive35(argument89 : "stringValue40152", argument90 : true, argument91 : "stringValue40151", argument92 : 814, argument93 : "stringValue40153", argument94 : true) + field47129(argument2306: InputObject1865!): Object9164 @Directive35(argument89 : "stringValue40161", argument90 : false, argument91 : "stringValue40160", argument92 : 815, argument93 : "stringValue40162", argument94 : true) + field47163: Object9171 @Directive35(argument89 : "stringValue40185", argument90 : true, argument91 : "stringValue40184", argument92 : 816, argument93 : "stringValue40186", argument94 : true) + field47165(argument2307: InputObject1866!): Object9172 @Directive35(argument89 : "stringValue40190", argument90 : true, argument91 : "stringValue40189", argument93 : "stringValue40191", argument94 : true) + field47167(argument2308: InputObject1867!): Object5323 @Directive35(argument89 : "stringValue40196", argument90 : true, argument91 : "stringValue40195", argument92 : 817, argument93 : "stringValue40197", argument94 : true) + field47168: Object9173 @Directive35(argument89 : "stringValue40200", argument90 : false, argument91 : "stringValue40199", argument93 : "stringValue40201", argument94 : true) + field47176(argument2309: InputObject1868!): Object9173 @Directive35(argument89 : "stringValue40207", argument90 : false, argument91 : "stringValue40206", argument93 : "stringValue40208", argument94 : true) + field47177(argument2310: InputObject1869!): Object9175 @Directive35(argument89 : "stringValue40211", argument90 : false, argument91 : "stringValue40210", argument93 : "stringValue40212", argument94 : true) + field47181(argument2311: InputObject1870!): Object9176 @Directive35(argument89 : "stringValue40217", argument90 : false, argument91 : "stringValue40216", argument92 : 818, argument93 : "stringValue40218", argument94 : true) + field47195(argument2312: InputObject1871!): Object9179 @Directive35(argument89 : "stringValue40227", argument90 : false, argument91 : "stringValue40226", argument92 : 819, argument93 : "stringValue40228", argument94 : true) + field47197(argument2313: InputObject1872!): Object9180 @Directive35(argument89 : "stringValue40233", argument90 : false, argument91 : "stringValue40232", argument92 : 820, argument93 : "stringValue40234", argument94 : true) + field47208(argument2314: InputObject1873!): Object9183 @Directive35(argument89 : "stringValue40243", argument90 : false, argument91 : "stringValue40242", argument92 : 821, argument93 : "stringValue40244", argument94 : true) + field47248(argument2315: InputObject1874!): Object9194 @Directive35(argument89 : "stringValue40269", argument90 : false, argument91 : "stringValue40268", argument92 : 822, argument93 : "stringValue40270", argument94 : true) + field47250(argument2316: InputObject1875!): Object9195 @Directive35(argument89 : "stringValue40275", argument90 : true, argument91 : "stringValue40274", argument92 : 823, argument93 : "stringValue40276", argument94 : true) + field47252(argument2317: InputObject1876!): Object9196 @Directive35(argument89 : "stringValue40281", argument90 : false, argument91 : "stringValue40280", argument92 : 824, argument93 : "stringValue40282", argument94 : true) + field47257(argument2318: InputObject1877!): Object9197 @Directive35(argument89 : "stringValue40287", argument90 : false, argument91 : "stringValue40286", argument92 : 825, argument93 : "stringValue40288", argument94 : true) + field47263(argument2319: InputObject1878!): Object9198 @Directive35(argument89 : "stringValue40293", argument90 : false, argument91 : "stringValue40292", argument92 : 826, argument93 : "stringValue40294", argument94 : true) +} + +type Object9162 @Directive21(argument61 : "stringValue40157") @Directive44(argument97 : ["stringValue40156"]) { + field47125: [Object9163]! +} + +type Object9163 @Directive21(argument61 : "stringValue40159") @Directive44(argument97 : ["stringValue40158"]) { + field47126: Scalar2! + field47127: String! + field47128: Enum651 +} + +type Object9164 @Directive21(argument61 : "stringValue40165") @Directive44(argument97 : ["stringValue40164"]) { + field47130: Scalar2 + field47131: Object9165 + field47135: Object9166 + field47144: Object9168 + field47151: Boolean + field47152: Enum2203 + field47153: Object9169 + field47155: Boolean + field47156: Enum2204 + field47157: Enum2205 + field47158: Enum2206 + field47159: Enum2207 + field47160: Object9170 + field47162: Boolean +} + +type Object9165 @Directive21(argument61 : "stringValue40167") @Directive44(argument97 : ["stringValue40166"]) { + field47132: Scalar2 + field47133: String + field47134: String +} + +type Object9166 @Directive21(argument61 : "stringValue40169") @Directive44(argument97 : ["stringValue40168"]) { + field47136: Scalar2 + field47137: String + field47138: String + field47139: Scalar4 + field47140: Object9167 +} + +type Object9167 @Directive21(argument61 : "stringValue40171") @Directive44(argument97 : ["stringValue40170"]) { + field47141: Scalar2 + field47142: String + field47143: String +} + +type Object9168 @Directive21(argument61 : "stringValue40173") @Directive44(argument97 : ["stringValue40172"]) { + field47145: Scalar2 + field47146: String + field47147: Enum2202 + field47148: Scalar4 + field47149: Int + field47150: Boolean +} + +type Object9169 @Directive21(argument61 : "stringValue40177") @Directive44(argument97 : ["stringValue40176"]) { + field47154: Scalar4 +} + +type Object917 @Directive20(argument58 : "stringValue4671", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4670") @Directive31 @Directive44(argument97 : ["stringValue4672", "stringValue4673"]) { + field5337: String + field5338: String + field5339: Object918 + field5343: Enum261 + field5344: Object746 +} + +type Object9170 @Directive21(argument61 : "stringValue40183") @Directive44(argument97 : ["stringValue40182"]) { + field47161: Boolean +} + +type Object9171 @Directive21(argument61 : "stringValue40188") @Directive44(argument97 : ["stringValue40187"]) { + field47164: Scalar2 +} + +type Object9172 @Directive21(argument61 : "stringValue40194") @Directive44(argument97 : ["stringValue40193"]) { + field47166: [Object5318]! +} + +type Object9173 @Directive21(argument61 : "stringValue40203") @Directive44(argument97 : ["stringValue40202"]) { + field47169: [String] + field47170: [Interface135] + field47171: Scalar1 + field47172: Object9174 +} + +type Object9174 @Directive21(argument61 : "stringValue40205") @Directive44(argument97 : ["stringValue40204"]) { + field47173: String + field47174: String + field47175: String! +} + +type Object9175 @Directive21(argument61 : "stringValue40215") @Directive44(argument97 : ["stringValue40214"]) { + field47178: [String]! + field47179: [Interface132]! + field47180: Scalar1 +} + +type Object9176 @Directive21(argument61 : "stringValue40221") @Directive44(argument97 : ["stringValue40220"]) { + field47182: [Object9177] +} + +type Object9177 @Directive21(argument61 : "stringValue40223") @Directive44(argument97 : ["stringValue40222"]) { + field47183: Object9178 + field47186: Scalar2 + field47187: Scalar2 + field47188: String + field47189: Int + field47190: [Object5369] + field47191: [Object5370] + field47192: [Object5371] + field47193: Boolean + field47194: Boolean +} + +type Object9178 @Directive21(argument61 : "stringValue40225") @Directive44(argument97 : ["stringValue40224"]) { + field47184: Scalar3 + field47185: Scalar3 +} + +type Object9179 @Directive21(argument61 : "stringValue40231") @Directive44(argument97 : ["stringValue40230"]) { + field47196: Object5373 +} + +type Object918 @Directive20(argument58 : "stringValue4675", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4674") @Directive31 @Directive44(argument97 : ["stringValue4676", "stringValue4677"]) { + field5340: String + field5341: String + field5342: String +} + +type Object9180 @Directive21(argument61 : "stringValue40237") @Directive44(argument97 : ["stringValue40236"]) { + field47198: Object9181 +} + +type Object9181 @Directive21(argument61 : "stringValue40239") @Directive44(argument97 : ["stringValue40238"]) { + field47199: [Object9182] + field47202: String + field47203: Float + field47204: Scalar2 + field47205: [Object5375] + field47206: Boolean + field47207: Boolean +} + +type Object9182 @Directive21(argument61 : "stringValue40241") @Directive44(argument97 : ["stringValue40240"]) { + field47200: String + field47201: Scalar2 +} + +type Object9183 @Directive21(argument61 : "stringValue40247") @Directive44(argument97 : ["stringValue40246"]) { + field47209: Object3057 + field47210: Object3146 + field47211: Object9184 +} + +type Object9184 @Directive21(argument61 : "stringValue40249") @Directive44(argument97 : ["stringValue40248"]) { + field47212: [Object9185] + field47215: [Object9185] + field47216: [Object9186] + field47231: Object9189 + field47241: Object9191 +} + +type Object9185 @Directive21(argument61 : "stringValue40251") @Directive44(argument97 : ["stringValue40250"]) { + field47213: String + field47214: String +} + +type Object9186 @Directive21(argument61 : "stringValue40253") @Directive44(argument97 : ["stringValue40252"]) { + field47217: Int + field47218: String + field47219: [Object9187] +} + +type Object9187 @Directive21(argument61 : "stringValue40255") @Directive44(argument97 : ["stringValue40254"]) { + field47220: Int + field47221: String + field47222: String + field47223: Boolean + field47224: [Object9188] +} + +type Object9188 @Directive21(argument61 : "stringValue40257") @Directive44(argument97 : ["stringValue40256"]) { + field47225: Scalar2 + field47226: String + field47227: Scalar2! + field47228: String + field47229: String + field47230: String +} + +type Object9189 @Directive21(argument61 : "stringValue40259") @Directive44(argument97 : ["stringValue40258"]) { + field47232: Object9190 + field47235: Object9190 + field47236: Object9190 + field47237: Object9190 + field47238: Object9190 + field47239: Object9190 + field47240: Object9190 +} + +type Object919 implements Interface76 @Directive21(argument61 : "stringValue4683") @Directive22(argument62 : "stringValue4682") @Directive31 @Directive44(argument97 : ["stringValue4684", "stringValue4685", "stringValue4686"]) @Directive45(argument98 : ["stringValue4687"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union106] + field5221: Boolean + field5345: [Object920] +} + +type Object9190 @Directive21(argument61 : "stringValue40261") @Directive44(argument97 : ["stringValue40260"]) { + field47233: Int + field47234: Int +} + +type Object9191 @Directive21(argument61 : "stringValue40263") @Directive44(argument97 : ["stringValue40262"]) { + field47242: Object9192 + field47247: Object9192 +} + +type Object9192 @Directive21(argument61 : "stringValue40265") @Directive44(argument97 : ["stringValue40264"]) { + field47243: String + field47244: [Object9193] +} + +type Object9193 @Directive21(argument61 : "stringValue40267") @Directive44(argument97 : ["stringValue40266"]) { + field47245: [String] + field47246: String +} + +type Object9194 @Directive21(argument61 : "stringValue40273") @Directive44(argument97 : ["stringValue40272"]) { + field47249: Object3137 +} + +type Object9195 @Directive21(argument61 : "stringValue40279") @Directive44(argument97 : ["stringValue40278"]) { + field47251: Object5382 +} + +type Object9196 @Directive21(argument61 : "stringValue40285") @Directive44(argument97 : ["stringValue40284"]) { + field47253: [String] + field47254: [Interface134] + field47255: Scalar1 + field47256: Object9174 +} + +type Object9197 @Directive21(argument61 : "stringValue40291") @Directive44(argument97 : ["stringValue40290"]) { + field47258: [String] + field47259: [Interface133] + field47260: Scalar1 + field47261: Object9174 + field47262: String! +} + +type Object9198 @Directive21(argument61 : "stringValue40297") @Directive44(argument97 : ["stringValue40296"]) { + field47264: [Object3115] +} + +type Object9199 @Directive44(argument97 : ["stringValue40298"]) { + field47266(argument2320: InputObject1879!): Object9200 @Directive35(argument89 : "stringValue40300", argument90 : false, argument91 : "stringValue40299", argument92 : 827, argument93 : "stringValue40301", argument94 : false) + field47912(argument2321: InputObject1879!): Object9200 @Directive35(argument89 : "stringValue40574", argument90 : false, argument91 : "stringValue40573", argument92 : 828, argument93 : "stringValue40575", argument94 : false) + field47913(argument2322: InputObject1881!): Object9323 @Directive35(argument89 : "stringValue40577", argument90 : true, argument91 : "stringValue40576", argument92 : 829, argument93 : "stringValue40578", argument94 : false) + field47942(argument2323: InputObject1882!): Object9326 @Directive35(argument89 : "stringValue40587", argument90 : true, argument91 : "stringValue40586", argument92 : 830, argument93 : "stringValue40588", argument94 : false) + field47950(argument2324: InputObject1883!): Object9328 @Directive35(argument89 : "stringValue40595", argument90 : true, argument91 : "stringValue40594", argument92 : 831, argument93 : "stringValue40596", argument94 : false) +} + +type Object92 @Directive21(argument61 : "stringValue369") @Directive44(argument97 : ["stringValue368"]) { + field619: String + field620: String + field621: Enum36 +} + +type Object920 @Directive20(argument58 : "stringValue4689", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4688") @Directive31 @Directive44(argument97 : ["stringValue4690", "stringValue4691"]) { + field5346: Object921 + field5361: String + field5362: String + field5363: String + field5364: String + field5365: String + field5366: String + field5367: Int + field5368: String + field5369: String + field5370: String + field5371: Object923 + field5376: String + field5377: Object923 + field5378: [Object924] + field5382: String + field5383: Object398 + field5384: String + field5385: String + field5386: String + field5387: String + field5388: Object398 + field5389: Object923 + field5390: String + field5391: String + field5392: String + field5393: Boolean + field5394: String + field5395: String + field5396: String + field5397: String +} + +type Object9200 @Directive21(argument61 : "stringValue40309") @Directive44(argument97 : ["stringValue40308"]) { + field47267: Object9201 + field47315: [Object9206] + field47832: [Object9311] + field47849: Object9313 + field47867: Object9314 + field47875: [Object9316] + field47887: Object9313 + field47888: Object9319 + field47900: Scalar1 @deprecated + field47901: Object9321 + field47908: Object9322 +} + +type Object9201 @Directive21(argument61 : "stringValue40311") @Directive44(argument97 : ["stringValue40310"]) { + field47268: Enum2212 + field47269: Object9202 + field47298: String + field47299: Object9204 + field47306: String + field47307: String + field47308: String + field47309: Scalar1 + field47310: Int + field47311: Boolean + field47312: String + field47313: String + field47314: String +} + +type Object9202 @Directive21(argument61 : "stringValue40314") @Directive44(argument97 : ["stringValue40313"]) { + field47270: String + field47271: String + field47272: Scalar2 + field47273: Scalar2 + field47274: Scalar2 + field47275: String + field47276: String + field47277: Int + field47278: Int + field47279: Int + field47280: Int + field47281: Int + field47282: Int + field47283: Int + field47284: String + field47285: String + field47286: Boolean + field47287: String + field47288: Object9203 +} + +type Object9203 @Directive21(argument61 : "stringValue40316") @Directive44(argument97 : ["stringValue40315"]) { + field47289: Int + field47290: String + field47291: String + field47292: Int + field47293: Boolean + field47294: Int + field47295: Int + field47296: Int + field47297: Enum2213 +} + +type Object9204 @Directive21(argument61 : "stringValue40319") @Directive44(argument97 : ["stringValue40318"]) { + field47300: Object9205 + field47303: String + field47304: String + field47305: Enum2214 +} + +type Object9205 @Directive21(argument61 : "stringValue40321") @Directive44(argument97 : ["stringValue40320"]) { + field47301: String + field47302: String +} + +type Object9206 @Directive21(argument61 : "stringValue40324") @Directive44(argument97 : ["stringValue40323"]) { + field47316: String + field47317: [Enum2215!] + field47318: Enum2216 + field47319: Enum2217 + field47320: [Enum2215!] + field47321: Enum2218 + field47322: [Enum2215!] + field47323: String + field47324: [Object9205!] + field47325: Object2847 + field47326: String + field47327: Union302 +} + +type Object9207 @Directive21(argument61 : "stringValue40331") @Directive44(argument97 : ["stringValue40330"]) { + field47328: Enum580 + field47329: String + field47330: String + field47331: String + field47332: String + field47333: String @deprecated + field47334: String @deprecated + field47335: Boolean + field47336: Object9208 + field47366: String @deprecated + field47367: [Object9209] + field47368: Interface123 + field47369: Object9211 + field47370: String +} + +type Object9208 @Directive21(argument61 : "stringValue40333") @Directive44(argument97 : ["stringValue40332"]) { + field47337: String + field47338: Int + field47339: Object9209 + field47352: Boolean + field47353: Object9211 + field47365: Int +} + +type Object9209 @Directive21(argument61 : "stringValue40335") @Directive44(argument97 : ["stringValue40334"]) { + field47340: String + field47341: Enum580 + field47342: Enum2219 + field47343: String + field47344: String + field47345: Enum2220 + field47346: Object2847 @deprecated + field47347: Union303 @deprecated + field47350: Object2855 @deprecated + field47351: Interface123 +} + +type Object921 @Directive20(argument58 : "stringValue4693", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4692") @Directive31 @Directive44(argument97 : ["stringValue4694", "stringValue4695"]) { + field5347: Object922 + field5358: Object922 + field5359: Object922 + field5360: Object922 +} + +type Object9210 @Directive21(argument61 : "stringValue40340") @Directive44(argument97 : ["stringValue40339"]) { + field47348: String! + field47349: String +} + +type Object9211 @Directive21(argument61 : "stringValue40342") @Directive44(argument97 : ["stringValue40341"]) { + field47354: Object2852 + field47355: Object9212 + field47363: Scalar5 + field47364: Enum2224 +} + +type Object9212 @Directive21(argument61 : "stringValue40344") @Directive44(argument97 : ["stringValue40343"]) { + field47356: Enum2221 + field47357: Enum2222 + field47358: Enum2223 + field47359: Scalar5 + field47360: Scalar5 + field47361: Float + field47362: Float +} + +type Object9213 @Directive21(argument61 : "stringValue40350") @Directive44(argument97 : ["stringValue40349"]) { + field47371: [Object9207] +} + +type Object9214 @Directive21(argument61 : "stringValue40352") @Directive44(argument97 : ["stringValue40351"]) { + field47372: String + field47373: String +} + +type Object9215 @Directive21(argument61 : "stringValue40354") @Directive44(argument97 : ["stringValue40353"]) { + field47374: String + field47375: String + field47376: String + field47377: Object9216 + field47397: String + field47398: Object9219 +} + +type Object9216 @Directive21(argument61 : "stringValue40356") @Directive44(argument97 : ["stringValue40355"]) { + field47378: String + field47379: String + field47380: [Object9217!] + field47392: String + field47393: String + field47394: String + field47395: [Enum2225] + field47396: [String] +} + +type Object9217 @Directive21(argument61 : "stringValue40358") @Directive44(argument97 : ["stringValue40357"]) { + field47381: [String!] + field47382: [String!] + field47383: String + field47384: String + field47385: Float + field47386: Float + field47387: Boolean + field47388: [Object9218] + field47391: [Object9218] +} + +type Object9218 @Directive21(argument61 : "stringValue40360") @Directive44(argument97 : ["stringValue40359"]) { + field47389: String + field47390: String +} + +type Object9219 @Directive21(argument61 : "stringValue40363") @Directive44(argument97 : ["stringValue40362"]) { + field47399: String + field47400: String + field47401: [Object9220] + field47407: String + field47408: String +} + +type Object922 @Directive20(argument58 : "stringValue4697", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4696") @Directive31 @Directive44(argument97 : ["stringValue4698", "stringValue4699"]) { + field5348: String + field5349: String + field5350: String + field5351: String + field5352: String + field5353: String + field5354: String + field5355: String + field5356: Object596 + field5357: Object596 +} + +type Object9220 @Directive21(argument61 : "stringValue40365") @Directive44(argument97 : ["stringValue40364"]) { + field47402: String + field47403: [String] + field47404: String + field47405: Scalar4 + field47406: String +} + +type Object9221 @Directive21(argument61 : "stringValue40367") @Directive44(argument97 : ["stringValue40366"]) { + field47409: String + field47410: String + field47411: String + field47412: [Object9222!] + field47417: Object9223 + field47420: Object9223 + field47421: String + field47422: String @deprecated + field47423: String + field47424: String + field47425: String + field47426: Boolean +} + +type Object9222 @Directive21(argument61 : "stringValue40369") @Directive44(argument97 : ["stringValue40368"]) { + field47413: Int + field47414: String + field47415: Boolean + field47416: String +} + +type Object9223 @Directive21(argument61 : "stringValue40371") @Directive44(argument97 : ["stringValue40370"]) { + field47418: String + field47419: String +} + +type Object9224 @Directive21(argument61 : "stringValue40373") @Directive44(argument97 : ["stringValue40372"]) { + field47427: String + field47428: String + field47429: String + field47430: String + field47431: Boolean +} + +type Object9225 @Directive21(argument61 : "stringValue40375") @Directive44(argument97 : ["stringValue40374"]) { + field47432: String + field47433: [Object9226] +} + +type Object9226 @Directive21(argument61 : "stringValue40377") @Directive44(argument97 : ["stringValue40376"]) { + field47434: String + field47435: String + field47436: String + field47437: Boolean + field47438: String +} + +type Object9227 @Directive21(argument61 : "stringValue40379") @Directive44(argument97 : ["stringValue40378"]) { + field47439: Boolean +} + +type Object9228 @Directive21(argument61 : "stringValue40381") @Directive44(argument97 : ["stringValue40380"]) { + field47440: String + field47441: String + field47442: String + field47443: String +} + +type Object9229 @Directive21(argument61 : "stringValue40383") @Directive44(argument97 : ["stringValue40382"]) { + field47444: String + field47445: String + field47446: String + field47447: String + field47448: Object9230 +} + +type Object923 @Directive20(argument58 : "stringValue4701", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4700") @Directive31 @Directive44(argument97 : ["stringValue4702", "stringValue4703"]) { + field5372: Scalar2 + field5373: String + field5374: String + field5375: String +} + +type Object9230 @Directive21(argument61 : "stringValue40385") @Directive44(argument97 : ["stringValue40384"]) { + field47449: String + field47450: [Object9231] +} + +type Object9231 @Directive21(argument61 : "stringValue40387") @Directive44(argument97 : ["stringValue40386"]) { + field47451: String + field47452: String +} + +type Object9232 @Directive21(argument61 : "stringValue40389") @Directive44(argument97 : ["stringValue40388"]) { + field47453: String + field47454: Enum1359 + field47455: String + field47456: String +} + +type Object9233 @Directive21(argument61 : "stringValue40391") @Directive44(argument97 : ["stringValue40390"]) { + field47457: String + field47458: String + field47459: Int +} + +type Object9234 @Directive21(argument61 : "stringValue40393") @Directive44(argument97 : ["stringValue40392"]) { + field47460: Boolean + field47461: String + field47462: String + field47463: Boolean +} + +type Object9235 @Directive21(argument61 : "stringValue40395") @Directive44(argument97 : ["stringValue40394"]) { + field47464: String + field47465: String + field47466: [Object5407!] + field47467: [Object5406!] + field47468: String + field47469: Boolean + field47470: String + field47471: String + field47472: String + field47473: String + field47474: String + field47475: [Object9226] + field47476: String +} + +type Object9236 @Directive21(argument61 : "stringValue40397") @Directive44(argument97 : ["stringValue40396"]) { + field47477: String + field47478: [String] + field47479: String + field47480: String + field47481: String + field47482: String +} + +type Object9237 @Directive21(argument61 : "stringValue40399") @Directive44(argument97 : ["stringValue40398"]) { + field47483: String + field47484: [Object9226] +} + +type Object9238 @Directive21(argument61 : "stringValue40401") @Directive44(argument97 : ["stringValue40400"]) { + field47485: Object9239 + field47489: Boolean + field47490: Boolean + field47491: String + field47492: String + field47493: Boolean + field47494: Boolean +} + +type Object9239 @Directive21(argument61 : "stringValue40403") @Directive44(argument97 : ["stringValue40402"]) { + field47486: String + field47487: Boolean + field47488: String +} + +type Object924 @Directive20(argument58 : "stringValue4705", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4704") @Directive31 @Directive44(argument97 : ["stringValue4706", "stringValue4707"]) { + field5379: Int + field5380: Int + field5381: String +} + +type Object9240 @Directive21(argument61 : "stringValue40405") @Directive44(argument97 : ["stringValue40404"]) { + field47495: String + field47496: String + field47497: String +} + +type Object9241 @Directive21(argument61 : "stringValue40407") @Directive44(argument97 : ["stringValue40406"]) { + field47498: String + field47499: String + field47500: Object5428 +} + +type Object9242 @Directive21(argument61 : "stringValue40409") @Directive44(argument97 : ["stringValue40408"]) { + field47501: String + field47502: String + field47503: String + field47504: Int + field47505: Boolean + field47506: Boolean + field47507: String + field47508: Int +} + +type Object9243 @Directive21(argument61 : "stringValue40411") @Directive44(argument97 : ["stringValue40410"]) { + field47509: String + field47510: String + field47511: String + field47512: Boolean + field47513: String + field47514: String + field47515: [String!] + field47516: String + field47517: String +} + +type Object9244 @Directive21(argument61 : "stringValue40413") @Directive44(argument97 : ["stringValue40412"]) { + field47518: String + field47519: String + field47520: Object9245 +} + +type Object9245 @Directive21(argument61 : "stringValue40415") @Directive44(argument97 : ["stringValue40414"]) { + field47521: String + field47522: [Object5414] + field47523: Object5412 + field47524: String +} + +type Object9246 @Directive21(argument61 : "stringValue40417") @Directive44(argument97 : ["stringValue40416"]) { + field47525: String + field47526: String +} + +type Object9247 @Directive21(argument61 : "stringValue40419") @Directive44(argument97 : ["stringValue40418"]) { + field47527: String +} + +type Object9248 @Directive21(argument61 : "stringValue40421") @Directive44(argument97 : ["stringValue40420"]) { + field47528: Object9205 + field47529: String + field47530: Enum2214 +} + +type Object9249 @Directive21(argument61 : "stringValue40423") @Directive44(argument97 : ["stringValue40422"]) { + field47531: Enum580 + field47532: String +} + +type Object925 implements Interface76 @Directive21(argument61 : "stringValue4712") @Directive22(argument62 : "stringValue4711") @Directive31 @Directive44(argument97 : ["stringValue4713", "stringValue4714", "stringValue4715"]) @Directive45(argument98 : ["stringValue4716"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union107] + field5221: Boolean + field5398: [Object926] + field5421: String @deprecated +} + +type Object9250 @Directive21(argument61 : "stringValue40425") @Directive44(argument97 : ["stringValue40424"]) { + field47533: String + field47534: String + field47535: String + field47536: Object9251 + field47540: String + field47541: String + field47542: Boolean + field47543: String + field47544: String + field47545: String + field47546: String + field47547: String +} + +type Object9251 @Directive21(argument61 : "stringValue40427") @Directive44(argument97 : ["stringValue40426"]) { + field47537: String + field47538: String + field47539: String +} + +type Object9252 @Directive21(argument61 : "stringValue40429") @Directive44(argument97 : ["stringValue40428"]) { + field47548: String +} + +type Object9253 @Directive21(argument61 : "stringValue40431") @Directive44(argument97 : ["stringValue40430"]) { + field47549: [Object9206!] + field47550: [Object2860!] +} + +type Object9254 @Directive21(argument61 : "stringValue40433") @Directive44(argument97 : ["stringValue40432"]) { + field47551: String + field47552: String + field47553: String + field47554: Int + field47555: Boolean + field47556: Boolean + field47557: String + field47558: String + field47559: String + field47560: Boolean + field47561: Boolean + field47562: Boolean + field47563: Object9255 + field47567: Int + field47568: Int + field47569: Int +} + +type Object9255 @Directive21(argument61 : "stringValue40435") @Directive44(argument97 : ["stringValue40434"]) { + field47564: String + field47565: String + field47566: String +} + +type Object9256 @Directive21(argument61 : "stringValue40437") @Directive44(argument97 : ["stringValue40436"]) { + field47570: String + field47571: String + field47572: String + field47573: String + field47574: String + field47575: String + field47576: String + field47577: String + field47578: String + field47579: String + field47580: String + field47581: String + field47582: Boolean +} + +type Object9257 @Directive21(argument61 : "stringValue40439") @Directive44(argument97 : ["stringValue40438"]) { + field47583: String + field47584: String + field47585: String + field47586: String +} + +type Object9258 @Directive21(argument61 : "stringValue40441") @Directive44(argument97 : ["stringValue40440"]) { + field47587: String + field47588: String + field47589: String +} + +type Object9259 @Directive21(argument61 : "stringValue40443") @Directive44(argument97 : ["stringValue40442"]) { + field47590: String + field47591: String + field47592: Object9245 + field47593: String +} + +type Object926 @Directive20(argument58 : "stringValue4718", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4717") @Directive31 @Directive44(argument97 : ["stringValue4719", "stringValue4720"]) { + field5399: String + field5400: String + field5401: Object927 + field5408: String + field5409: String + field5410: String + field5411: String + field5412: String + field5413: String + field5414: Object398 + field5415: String + field5416: Int + field5417: String + field5418: String + field5419: String + field5420: Object914 +} + +type Object9260 @Directive21(argument61 : "stringValue40445") @Directive44(argument97 : ["stringValue40444"]) { + field47594: String + field47595: String + field47596: [Object9261!] + field47603: String + field47604: String + field47605: String +} + +type Object9261 @Directive21(argument61 : "stringValue40447") @Directive44(argument97 : ["stringValue40446"]) { + field47597: String + field47598: String + field47599: Enum580 + field47600: Boolean + field47601: Boolean + field47602: [Object9205] +} + +type Object9262 @Directive21(argument61 : "stringValue40449") @Directive44(argument97 : ["stringValue40448"]) { + field47606: String + field47607: String +} + +type Object9263 @Directive21(argument61 : "stringValue40451") @Directive44(argument97 : ["stringValue40450"]) { + field47608: String + field47609: [String!] + field47610: Float @deprecated + field47611: Scalar2 @deprecated + field47612: String + field47613: String + field47614: String + field47615: String + field47616: Boolean + field47617: String + field47618: String + field47619: String +} + +type Object9264 @Directive21(argument61 : "stringValue40453") @Directive44(argument97 : ["stringValue40452"]) { + field47620: Int @deprecated + field47621: String +} + +type Object9265 @Directive21(argument61 : "stringValue40455") @Directive44(argument97 : ["stringValue40454"]) { + field47622: String +} + +type Object9266 @Directive21(argument61 : "stringValue40457") @Directive44(argument97 : ["stringValue40456"]) { + field47623: String + field47624: String + field47625: String @deprecated + field47626: String + field47627: String + field47628: String + field47629: String + field47630: String + field47631: String + field47632: String + field47633: String +} + +type Object9267 @Directive21(argument61 : "stringValue40459") @Directive44(argument97 : ["stringValue40458"]) { + field47634: String + field47635: String + field47636: String + field47637: String + field47638: String + field47639: Object9268 +} + +type Object9268 @Directive21(argument61 : "stringValue40461") @Directive44(argument97 : ["stringValue40460"]) { + field47640: [Object5416] + field47641: String + field47642: [Object5414] + field47643: String + field47644: String +} + +type Object9269 @Directive21(argument61 : "stringValue40463") @Directive44(argument97 : ["stringValue40462"]) { + field47645: String + field47646: String + field47647: String + field47648: String + field47649: String +} + +type Object927 @Directive20(argument58 : "stringValue4722", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4721") @Directive31 @Directive44(argument97 : ["stringValue4723", "stringValue4724"]) { + field5402: String + field5403: Scalar2 + field5404: String + field5405: String + field5406: String + field5407: String +} + +type Object9270 @Directive21(argument61 : "stringValue40465") @Directive44(argument97 : ["stringValue40464"]) { + field47650: Object9271! + field47682: [Object9274!]! +} + +type Object9271 @Directive21(argument61 : "stringValue40467") @Directive44(argument97 : ["stringValue40466"]) { + field47651: String + field47652: String + field47653: String + field47654: String @deprecated + field47655: String + field47656: String + field47657: Scalar2 + field47658: Object9272 + field47669: Object9273 + field47678: Boolean + field47679: Boolean + field47680: Boolean + field47681: Boolean @deprecated +} + +type Object9272 @Directive21(argument61 : "stringValue40469") @Directive44(argument97 : ["stringValue40468"]) { + field47659: Boolean + field47660: [String!] + field47661: String + field47662: Scalar2 + field47663: String + field47664: String + field47665: String + field47666: String + field47667: Boolean + field47668: Scalar2 +} + +type Object9273 @Directive21(argument61 : "stringValue40471") @Directive44(argument97 : ["stringValue40470"]) { + field47670: String! + field47671: String + field47672: String! + field47673: Boolean! + field47674: Boolean! + field47675: Boolean! + field47676: Boolean + field47677: String +} + +type Object9274 @Directive21(argument61 : "stringValue40473") @Directive44(argument97 : ["stringValue40472"]) { + field47683: String! + field47684: String! +} + +type Object9275 @Directive21(argument61 : "stringValue40475") @Directive44(argument97 : ["stringValue40474"]) { + field47685: String + field47686: Scalar2 +} + +type Object9276 @Directive21(argument61 : "stringValue40477") @Directive44(argument97 : ["stringValue40476"]) { + field47687: String +} + +type Object9277 @Directive21(argument61 : "stringValue40479") @Directive44(argument97 : ["stringValue40478"]) { + field47688: String + field47689: Boolean +} + +type Object9278 @Directive21(argument61 : "stringValue40481") @Directive44(argument97 : ["stringValue40480"]) { + field47690: String +} + +type Object9279 @Directive21(argument61 : "stringValue40483") @Directive44(argument97 : ["stringValue40482"]) { + field47691: String +} + +type Object928 implements Interface76 @Directive21(argument61 : "stringValue4729") @Directive22(argument62 : "stringValue4728") @Directive31 @Directive44(argument97 : ["stringValue4730", "stringValue4731", "stringValue4732"]) @Directive45(argument98 : ["stringValue4733"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5422: Object929 +} + +type Object9280 @Directive21(argument61 : "stringValue40485") @Directive44(argument97 : ["stringValue40484"]) { + field47692: String +} + +type Object9281 @Directive21(argument61 : "stringValue40487") @Directive44(argument97 : ["stringValue40486"]) { + field47693: String +} + +type Object9282 @Directive21(argument61 : "stringValue40489") @Directive44(argument97 : ["stringValue40488"]) { + field47694: String + field47695: String + field47696: String + field47697: Object9283 + field47702: String +} + +type Object9283 @Directive21(argument61 : "stringValue40491") @Directive44(argument97 : ["stringValue40490"]) { + field47698: String + field47699: String + field47700: String + field47701: String +} + +type Object9284 @Directive21(argument61 : "stringValue40493") @Directive44(argument97 : ["stringValue40492"]) { + field47703: String + field47704: Boolean + field47705: String +} + +type Object9285 @Directive21(argument61 : "stringValue40495") @Directive44(argument97 : ["stringValue40494"]) { + field47706: [Object9286!] +} + +type Object9286 @Directive21(argument61 : "stringValue40497") @Directive44(argument97 : ["stringValue40496"]) { + field47707: String + field47708: String +} + +type Object9287 @Directive21(argument61 : "stringValue40499") @Directive44(argument97 : ["stringValue40498"]) { + field47709: String + field47710: String + field47711: String +} + +type Object9288 @Directive21(argument61 : "stringValue40501") @Directive44(argument97 : ["stringValue40500"]) { + field47712: String +} + +type Object9289 @Directive21(argument61 : "stringValue40503") @Directive44(argument97 : ["stringValue40502"]) { + field47713: String +} + +type Object929 @Directive20(argument58 : "stringValue4735", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4734") @Directive31 @Directive44(argument97 : ["stringValue4736", "stringValue4737"]) { + field5423: String + field5424: String! + field5425: String + field5426: String +} + +type Object9290 @Directive21(argument61 : "stringValue40505") @Directive44(argument97 : ["stringValue40504"]) { + field47714: String + field47715: String + field47716: String +} + +type Object9291 @Directive21(argument61 : "stringValue40507") @Directive44(argument97 : ["stringValue40506"]) { + field47717: Object9205 +} + +type Object9292 @Directive21(argument61 : "stringValue40509") @Directive44(argument97 : ["stringValue40508"]) { + field47718: String + field47719: String + field47720: String + field47721: String + field47722: Object9293 +} + +type Object9293 @Directive21(argument61 : "stringValue40511") @Directive44(argument97 : ["stringValue40510"]) { + field47723: String + field47724: String + field47725: String + field47726: String +} + +type Object9294 @Directive21(argument61 : "stringValue40513") @Directive44(argument97 : ["stringValue40512"]) { + field47727: String + field47728: String + field47729: String + field47730: String + field47731: String + field47732: String + field47733: String + field47734: String + field47735: String + field47736: String + field47737: String + field47738: String + field47739: String + field47740: String + field47741: String +} + +type Object9295 @Directive21(argument61 : "stringValue40515") @Directive44(argument97 : ["stringValue40514"]) { + field47742: Int + field47743: String + field47744: Scalar2 +} + +type Object9296 @Directive21(argument61 : "stringValue40517") @Directive44(argument97 : ["stringValue40516"]) { + field47745: String + field47746: String + field47747: Boolean + field47748: String + field47749: Boolean + field47750: Boolean + field47751: String + field47752: Union303 @deprecated + field47753: Object2847 + field47754: Object2847 @deprecated + field47755: Interface123 + field47756: Interface123 + field47757: Interface123 +} + +type Object9297 @Directive21(argument61 : "stringValue40519") @Directive44(argument97 : ["stringValue40518"]) { + field47758: String + field47759: [Object9226!] + field47760: Object9216 + field47761: Object9245 + field47762: Object5420 + field47763: Object9298 + field47768: Object9268 + field47769: Object9219 +} + +type Object9298 @Directive21(argument61 : "stringValue40521") @Directive44(argument97 : ["stringValue40520"]) { + field47764: String + field47765: String + field47766: String + field47767: String +} + +type Object9299 @Directive21(argument61 : "stringValue40523") @Directive44(argument97 : ["stringValue40522"]) { + field47770: String + field47771: String +} + +type Object93 @Directive21(argument61 : "stringValue371") @Directive44(argument97 : ["stringValue370"]) { + field622: String + field623: String + field624: [Enum36] +} + +type Object930 implements Interface76 @Directive21(argument61 : "stringValue4739") @Directive22(argument62 : "stringValue4738") @Directive31 @Directive44(argument97 : ["stringValue4740", "stringValue4741", "stringValue4742"]) @Directive45(argument98 : ["stringValue4743"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union109] + field5221: Boolean + field5427: [Object931] +} + +type Object9300 @Directive21(argument61 : "stringValue40525") @Directive44(argument97 : ["stringValue40524"]) { + field47772: [Object9301!] +} + +type Object9301 @Directive21(argument61 : "stringValue40527") @Directive44(argument97 : ["stringValue40526"]) { + field47773: String + field47774: String +} + +type Object9302 @Directive21(argument61 : "stringValue40529") @Directive44(argument97 : ["stringValue40528"]) { + field47775: [Object9303!] +} + +type Object9303 @Directive21(argument61 : "stringValue40531") @Directive44(argument97 : ["stringValue40530"]) { + field47776: String + field47777: String + field47778: String +} + +type Object9304 @Directive21(argument61 : "stringValue40533") @Directive44(argument97 : ["stringValue40532"]) { + field47779: String + field47780: String + field47781: String + field47782: [Object9305!] + field47792: Int + field47793: String + field47794: String +} + +type Object9305 @Directive21(argument61 : "stringValue40535") @Directive44(argument97 : ["stringValue40534"]) { + field47783: Int + field47784: String + field47785: String + field47786: String + field47787: Object9216 + field47788: String + field47789: String + field47790: String + field47791: Object9219 +} + +type Object9306 @Directive21(argument61 : "stringValue40537") @Directive44(argument97 : ["stringValue40536"]) { + field47795: String + field47796: String + field47797: Enum2222 + field47798: Enum2223 +} + +type Object9307 @Directive21(argument61 : "stringValue40539") @Directive44(argument97 : ["stringValue40538"]) { + field47799: String + field47800: String + field47801: String + field47802: String + field47803: String + field47804: Boolean + field47805: Boolean + field47806: Boolean +} + +type Object9308 @Directive21(argument61 : "stringValue40541") @Directive44(argument97 : ["stringValue40540"]) { + field47807: String + field47808: String + field47809: String +} + +type Object9309 @Directive21(argument61 : "stringValue40543") @Directive44(argument97 : ["stringValue40542"]) { + field47810: String + field47811: String + field47812: [Object9261!] + field47813: [Object9222!] + field47814: Int + field47815: Object9223 + field47816: String + field47817: String + field47818: Boolean + field47819: Boolean + field47820: String + field47821: String + field47822: String + field47823: Boolean +} + +type Object931 @Directive20(argument58 : "stringValue4745", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4744") @Directive31 @Directive44(argument97 : ["stringValue4746", "stringValue4747"]) { + field5428: String + field5429: String + field5430: String + field5431: Object921 + field5432: Object398 + field5433: String + field5434: String + field5435: String + field5436: String + field5437: Object932 + field5471: String + field5472: String + field5473: [Object937] + field5482: String + field5483: String + field5484: Object938 + field5509: String + field5510: Object923 + field5511: [Object923] + field5512: String + field5513: Float + field5514: String + field5515: Object923 + field5516: [Object923] + field5517: Object914 + field5518: Object937 + field5519: Object923 + field5520: [Object923] + field5521: Enum276 + field5522: String + field5523: String + field5524: String + field5525: String + field5526: Object914 + field5527: Object923 + field5528: Boolean +} + +type Object9310 @Directive21(argument61 : "stringValue40545") @Directive44(argument97 : ["stringValue40544"]) { + field47824: String + field47825: String + field47826: String + field47827: String @deprecated + field47828: String + field47829: String + field47830: Boolean + field47831: String +} + +type Object9311 @Directive21(argument61 : "stringValue40547") @Directive44(argument97 : ["stringValue40546"]) { + field47833: Enum2226! + field47834: Enum2208! + field47835: [String!]! + field47836: Object9312 + field47847: [Object2860!] + field47848: Enum563 +} + +type Object9312 @Directive21(argument61 : "stringValue40550") @Directive44(argument97 : ["stringValue40549"]) { + field47837: Boolean + field47838: Enum2216 + field47839: Int + field47840: Int + field47841: Object2862 + field47842: Int + field47843: Object2852 + field47844: Int + field47845: Int + field47846: Int +} + +type Object9313 @Directive21(argument61 : "stringValue40552") @Directive44(argument97 : ["stringValue40551"]) { + field47850: Boolean @deprecated + field47851: Boolean @deprecated + field47852: Boolean + field47853: String + field47854: String + field47855: [Object5407] + field47856: Scalar3 + field47857: Scalar3 + field47858: Int + field47859: Int + field47860: Int + field47861: Int + field47862: Boolean + field47863: Boolean + field47864: String + field47865: String + field47866: Boolean +} + +type Object9314 @Directive21(argument61 : "stringValue40554") @Directive44(argument97 : ["stringValue40553"]) { + field47868: String + field47869: [Object5407] + field47870: Boolean + field47871: [Object9315] +} + +type Object9315 @Directive21(argument61 : "stringValue40556") @Directive44(argument97 : ["stringValue40555"]) { + field47872: String + field47873: Boolean + field47874: String +} + +type Object9316 @Directive21(argument61 : "stringValue40558") @Directive44(argument97 : ["stringValue40557"]) { + field47876: String + field47877: String + field47878: [Object9311] + field47879: Object9317 + field47884: Object9318 +} + +type Object9317 @Directive21(argument61 : "stringValue40560") @Directive44(argument97 : ["stringValue40559"]) { + field47880: Enum2227 + field47881: Enum2228 + field47882: String + field47883: Boolean +} + +type Object9318 @Directive21(argument61 : "stringValue40564") @Directive44(argument97 : ["stringValue40563"]) { + field47885: Interface126 + field47886: Interface126 +} + +type Object9319 @Directive21(argument61 : "stringValue40566") @Directive44(argument97 : ["stringValue40565"]) { + field47889: Scalar1 + field47890: Object9320 + field47895: Boolean + field47896: [Object9206] + field47897: [Object9311] + field47898: Object5456 + field47899: Scalar1 +} + +type Object932 @Directive20(argument58 : "stringValue4749", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4748") @Directive31 @Directive44(argument97 : ["stringValue4750", "stringValue4751"]) { + field5438: Object933 + field5468: Object933 + field5469: Object933 + field5470: Object933 +} + +type Object9320 @Directive21(argument61 : "stringValue40568") @Directive44(argument97 : ["stringValue40567"]) { + field47891: String + field47892: String + field47893: Boolean + field47894: Scalar2 +} + +type Object9321 @Directive21(argument61 : "stringValue40570") @Directive44(argument97 : ["stringValue40569"]) { + field47902: Object5467 + field47903: String + field47904: Object5502 + field47905: Scalar1 + field47906: Scalar1 + field47907: Scalar1 @deprecated +} + +type Object9322 @Directive21(argument61 : "stringValue40572") @Directive44(argument97 : ["stringValue40571"]) { + field47909: [Object9206] + field47910: Boolean + field47911: Boolean +} + +type Object9323 @Directive21(argument61 : "stringValue40581") @Directive44(argument97 : ["stringValue40580"]) { + field47914: String + field47915: Object9324 + field47939: Object9324 + field47940: Scalar1 + field47941: Object9250 +} + +type Object9324 @Directive21(argument61 : "stringValue40583") @Directive44(argument97 : ["stringValue40582"]) { + field47916: String + field47917: [Object9325!] + field47935: String + field47936: String + field47937: String + field47938: String +} + +type Object9325 @Directive21(argument61 : "stringValue40585") @Directive44(argument97 : ["stringValue40584"]) { + field47918: String + field47919: String + field47920: Enum580 + field47921: String + field47922: Object2879 @deprecated + field47923: Object2847 @deprecated + field47924: String + field47925: Union303 @deprecated + field47926: String + field47927: String + field47928: Object9208 + field47929: Interface123 + field47930: Interface125 + field47931: Object9209 + field47932: Object9211 + field47933: Object9211 + field47934: Object9211 +} + +type Object9326 @Directive21(argument61 : "stringValue40591") @Directive44(argument97 : ["stringValue40590"]) { + field47943: Object9327! +} + +type Object9327 @Directive21(argument61 : "stringValue40593") @Directive44(argument97 : ["stringValue40592"]) { + field47944: String + field47945: String + field47946: Boolean + field47947: Int + field47948: Scalar2 + field47949: Boolean +} + +type Object9328 @Directive21(argument61 : "stringValue40599") @Directive44(argument97 : ["stringValue40598"]) { + field47951: Object9329! + field47958: Object9330! + field47970: Object9331! + field47977: Object9332! + field48078: [Object9331!]! + field48079: Object9349! + field48090: Object9350 + field48106: Object9354! +} + +type Object9329 @Directive21(argument61 : "stringValue40601") @Directive44(argument97 : ["stringValue40600"]) { + field47952: Scalar3! + field47953: Scalar3! + field47954: Int! + field47955: Int + field47956: Int + field47957: Int +} + +type Object933 @Directive20(argument58 : "stringValue4753", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4752") @Directive31 @Directive44(argument97 : ["stringValue4754", "stringValue4755"]) { + field5439: Object934 + field5456: Object935 + field5462: Object935 + field5463: Object936 +} + +type Object9330 @Directive21(argument61 : "stringValue40603") @Directive44(argument97 : ["stringValue40602"]) { + field47959: String + field47960: String + field47961: String + field47962: String + field47963: String + field47964: String + field47965: String + field47966: Scalar2 + field47967: Int + field47968: String + field47969: Scalar2 +} + +type Object9331 @Directive21(argument61 : "stringValue40605") @Directive44(argument97 : ["stringValue40604"]) { + field47971: String + field47972: String + field47973: Boolean + field47974: Int + field47975: Scalar2 + field47976: Boolean +} + +type Object9332 @Directive21(argument61 : "stringValue40607") @Directive44(argument97 : ["stringValue40606"]) { + field47978: Object9333 +} + +type Object9333 @Directive21(argument61 : "stringValue40609") @Directive44(argument97 : ["stringValue40608"]) { + field47979: Object9334! + field47989: Object9334 + field47990: Boolean + field47991: [Object9334]! + field47992: Enum2230 + field47993: Boolean + field47994: Object9335 + field48054: [Object9334] + field48055: Object9344 + field48059: Object9345 + field48067: Object9334 + field48068: Object9346 +} + +type Object9334 @Directive21(argument61 : "stringValue40611") @Directive44(argument97 : ["stringValue40610"]) { + field47980: Enum2229! + field47981: Object5454! + field47982: String + field47983: String + field47984: String + field47985: [Object9334]! + field47986: Enum2230 @deprecated + field47987: String + field47988: String +} + +type Object9335 @Directive21(argument61 : "stringValue40615") @Directive44(argument97 : ["stringValue40614"]) { + field47995: Object9336 + field48017: Object9338 + field48026: Object9339 + field48038: Object9342 +} + +type Object9336 @Directive21(argument61 : "stringValue40617") @Directive44(argument97 : ["stringValue40616"]) { + field47996: Object5454 + field47997: Object5454 + field47998: Object5454 + field47999: Float + field48000: Object5454 + field48001: Object9337 + field48015: Object5454 + field48016: Object5454 +} + +type Object9337 @Directive21(argument61 : "stringValue40619") @Directive44(argument97 : ["stringValue40618"]) { + field48002: Enum2231 + field48003: String + field48004: Boolean + field48005: Boolean + field48006: Int + field48007: String + field48008: Scalar2 + field48009: String + field48010: Int + field48011: String + field48012: Float + field48013: Int + field48014: Enum2232 +} + +type Object9338 @Directive21(argument61 : "stringValue40623") @Directive44(argument97 : ["stringValue40622"]) { + field48018: [Object9337] + field48019: Object5454 + field48020: Object5454 + field48021: Object5454 + field48022: Object5454 + field48023: Object5454 + field48024: Object5454 + field48025: String +} + +type Object9339 @Directive21(argument61 : "stringValue40625") @Directive44(argument97 : ["stringValue40624"]) { + field48027: Object5454 + field48028: Object5454 + field48029: Object5454 + field48030: Object9340 + field48033: Object5454 + field48034: Object9341 +} + +type Object934 @Directive20(argument58 : "stringValue4757", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4756") @Directive31 @Directive44(argument97 : ["stringValue4758", "stringValue4759"]) { + field5440: Enum262 + field5441: String + field5442: String + field5443: String + field5444: Enum263 + field5445: String + field5446: String + field5447: String + field5448: String + field5449: Enum264 + field5450: Enum265 + field5451: String + field5452: String + field5453: String + field5454: String + field5455: Object451 +} + +type Object9340 @Directive21(argument61 : "stringValue40627") @Directive44(argument97 : ["stringValue40626"]) { + field48031: String + field48032: String +} + +type Object9341 @Directive21(argument61 : "stringValue40629") @Directive44(argument97 : ["stringValue40628"]) { + field48035: Int + field48036: Int + field48037: Scalar2 +} + +type Object9342 @Directive21(argument61 : "stringValue40631") @Directive44(argument97 : ["stringValue40630"]) { + field48039: [Object9343] +} + +type Object9343 @Directive21(argument61 : "stringValue40633") @Directive44(argument97 : ["stringValue40632"]) { + field48040: Enum2231 + field48041: Float + field48042: Int + field48043: String + field48044: Scalar3 + field48045: Scalar3 + field48046: Scalar4 + field48047: Scalar2 + field48048: String + field48049: String + field48050: Int + field48051: Int + field48052: Enum2232 + field48053: [Enum1368] +} + +type Object9344 @Directive21(argument61 : "stringValue40635") @Directive44(argument97 : ["stringValue40634"]) { + field48056: String + field48057: Enum2233 + field48058: Object5454 +} + +type Object9345 @Directive21(argument61 : "stringValue40638") @Directive44(argument97 : ["stringValue40637"]) { + field48060: Boolean + field48061: Boolean + field48062: Boolean + field48063: Boolean + field48064: Boolean + field48065: Boolean + field48066: Boolean +} + +type Object9346 @Directive21(argument61 : "stringValue40640") @Directive44(argument97 : ["stringValue40639"]) { + field48069: Object9347 + field48077: [Object9334] +} + +type Object9347 @Directive21(argument61 : "stringValue40642") @Directive44(argument97 : ["stringValue40641"]) { + field48070: String! + field48071: String + field48072: [Object9348]! +} + +type Object9348 @Directive21(argument61 : "stringValue40644") @Directive44(argument97 : ["stringValue40643"]) { + field48073: Enum2229! + field48074: String! + field48075: String! + field48076: String +} + +type Object9349 @Directive21(argument61 : "stringValue40646") @Directive44(argument97 : ["stringValue40645"]) { + field48080: String + field48081: Scalar4 + field48082: String + field48083: String @deprecated + field48084: String + field48085: String + field48086: String + field48087: String + field48088: String + field48089: String +} + +type Object935 @Directive20(argument58 : "stringValue4777", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4776") @Directive31 @Directive44(argument97 : ["stringValue4778", "stringValue4779"]) { + field5457: Enum266 + field5458: String + field5459: Enum267 + field5460: Enum268 + field5461: Enum269 +} + +type Object9350 @Directive21(argument61 : "stringValue40648") @Directive44(argument97 : ["stringValue40647"]) { + field48091: Enum2234 + field48092: String + field48093: Object9351 +} + +type Object9351 @Directive21(argument61 : "stringValue40651") @Directive44(argument97 : ["stringValue40650"]) { + field48094: String + field48095: String + field48096: [Object9352!] + field48104: String + field48105: String +} + +type Object9352 @Directive21(argument61 : "stringValue40653") @Directive44(argument97 : ["stringValue40652"]) { + field48097: String! + field48098: Enum2235! + field48099: Enum2236! + field48100: String! + field48101: Boolean! + field48102: Union304 +} + +type Object9353 @Directive21(argument61 : "stringValue40658") @Directive44(argument97 : ["stringValue40657"]) { + field48103: Scalar2 +} + +type Object9354 @Directive21(argument61 : "stringValue40660") @Directive44(argument97 : ["stringValue40659"]) { + field48107: Enum2237 + field48108: Scalar2 +} + +type Object9355 @Directive44(argument97 : ["stringValue40662"]) { + field48110(argument2325: InputObject1884!): Object9356 @Directive35(argument89 : "stringValue40664", argument90 : true, argument91 : "stringValue40663", argument92 : 832, argument93 : "stringValue40665", argument94 : true) + field48151(argument2326: InputObject1888!): Object9367 @Directive35(argument89 : "stringValue40700", argument90 : true, argument91 : "stringValue40699", argument92 : 833, argument93 : "stringValue40701", argument94 : true) + field48422(argument2327: InputObject1893!): Object9414 @Directive35(argument89 : "stringValue40811", argument90 : true, argument91 : "stringValue40810", argument92 : 834, argument93 : "stringValue40812", argument94 : true) +} + +type Object9356 @Directive21(argument61 : "stringValue40671") @Directive44(argument97 : ["stringValue40670"]) { + field48111: Object9357 + field48116: [Object9358] +} + +type Object9357 @Directive21(argument61 : "stringValue40673") @Directive44(argument97 : ["stringValue40672"]) { + field48112: Float + field48113: String + field48114: String + field48115: Enum2238 +} + +type Object9358 @Directive21(argument61 : "stringValue40676") @Directive44(argument97 : ["stringValue40675"]) { + field48117: Enum2239 + field48118: [Object9359] +} + +type Object9359 @Directive21(argument61 : "stringValue40679") @Directive44(argument97 : ["stringValue40678"]) { + field48119: String + field48120: Enum2240 + field48121: String + field48122: String + field48123: Object9360 + field48128: Union306 +} + +type Object936 @Directive20(argument58 : "stringValue4797", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4796") @Directive31 @Directive44(argument97 : ["stringValue4798", "stringValue4799"]) { + field5464: Int + field5465: Boolean + field5466: Boolean + field5467: Boolean +} + +type Object9360 @Directive21(argument61 : "stringValue40682") @Directive44(argument97 : ["stringValue40681"]) { + field48124: Enum2241 + field48125: Union305 + field48127: String +} + +type Object9361 @Directive21(argument61 : "stringValue40686") @Directive44(argument97 : ["stringValue40685"]) { + field48126: String +} + +type Object9362 @Directive21(argument61 : "stringValue40689") @Directive44(argument97 : ["stringValue40688"]) { + field48129: String + field48130: String + field48131: String + field48132: Boolean + field48133: Enum2242 + field48134: Object9363 +} + +type Object9363 @Directive21(argument61 : "stringValue40692") @Directive44(argument97 : ["stringValue40691"]) { + field48135: String + field48136: String +} + +type Object9364 @Directive21(argument61 : "stringValue40694") @Directive44(argument97 : ["stringValue40693"]) { + field48137: [Object9365] +} + +type Object9365 @Directive21(argument61 : "stringValue40696") @Directive44(argument97 : ["stringValue40695"]) { + field48138: String + field48139: String + field48140: String + field48141: String + field48142: String + field48143: String + field48144: String + field48145: String + field48146: String + field48147: Object9360 +} + +type Object9366 @Directive21(argument61 : "stringValue40698") @Directive44(argument97 : ["stringValue40697"]) { + field48148: String + field48149: String + field48150: String +} + +type Object9367 @Directive21(argument61 : "stringValue40708") @Directive44(argument97 : ["stringValue40707"]) { + field48152: Object9368 + field48244: Object9385 + field48310: Object9393 + field48313: Object9357 + field48314: Object9394 + field48348: Object9400 + field48375: Object9404 + field48418: Object9413 + field48421: [Object9358] +} + +type Object9368 @Directive21(argument61 : "stringValue40710") @Directive44(argument97 : ["stringValue40709"]) { + field48153: [Object9369] + field48234: Scalar1 + field48235: Object9383 +} + +type Object9369 @Directive21(argument61 : "stringValue40712") @Directive44(argument97 : ["stringValue40711"]) { + field48154: Object9370 + field48217: Object9381 + field48231: [Object9380] + field48232: String + field48233: String +} + +type Object937 @Directive20(argument58 : "stringValue4801", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4800") @Directive31 @Directive44(argument97 : ["stringValue4802", "stringValue4803"]) { + field5474: String + field5475: String + field5476: String + field5477: String + field5478: Object398 + field5479: Enum270 + field5480: Enum252 + field5481: Enum271 +} + +type Object9370 @Directive21(argument61 : "stringValue40714") @Directive44(argument97 : ["stringValue40713"]) { + field48155: Object9371 + field48197: Int + field48198: Int + field48199: [Int] @deprecated + field48200: [Object9378] @deprecated + field48204: Object9379 @deprecated + field48208: String + field48209: Scalar2 + field48210: Scalar2 @deprecated + field48211: String + field48212: String + field48213: [Object9380] @deprecated +} + +type Object9371 @Directive21(argument61 : "stringValue40716") @Directive44(argument97 : ["stringValue40715"]) { + field48156: Scalar2 + field48157: String + field48158: Int + field48159: Object9372 + field48164: Object9372 + field48165: Object9373 + field48182: Scalar3 + field48183: Scalar3 + field48184: String + field48185: Object9375 + field48187: Scalar4 + field48188: Object9376 + field48192: Object9377 + field48196: Int +} + +type Object9372 @Directive21(argument61 : "stringValue40718") @Directive44(argument97 : ["stringValue40717"]) { + field48160: Scalar2 + field48161: String + field48162: Float + field48163: String +} + +type Object9373 @Directive21(argument61 : "stringValue40720") @Directive44(argument97 : ["stringValue40719"]) { + field48166: Scalar2 + field48167: String + field48168: String + field48169: String + field48170: String + field48171: String + field48172: String + field48173: Int + field48174: String + field48175: String + field48176: Enum2243 + field48177: Object9374 +} + +type Object9374 @Directive21(argument61 : "stringValue40723") @Directive44(argument97 : ["stringValue40722"]) { + field48178: Scalar2 + field48179: String + field48180: Scalar2 + field48181: String +} + +type Object9375 @Directive21(argument61 : "stringValue40725") @Directive44(argument97 : ["stringValue40724"]) { + field48186: Scalar2 +} + +type Object9376 @Directive21(argument61 : "stringValue40727") @Directive44(argument97 : ["stringValue40726"]) { + field48189: Scalar2 + field48190: Scalar4 + field48191: Scalar4 +} + +type Object9377 @Directive21(argument61 : "stringValue40729") @Directive44(argument97 : ["stringValue40728"]) { + field48193: Int + field48194: Int + field48195: Int +} + +type Object9378 @Directive21(argument61 : "stringValue40731") @Directive44(argument97 : ["stringValue40730"]) { + field48201: String + field48202: String + field48203: String +} + +type Object9379 @Directive21(argument61 : "stringValue40733") @Directive44(argument97 : ["stringValue40732"]) { + field48205: String + field48206: String + field48207: Enum2244 +} + +type Object938 @Directive20(argument58 : "stringValue4813", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4812") @Directive31 @Directive44(argument97 : ["stringValue4814", "stringValue4815"]) { + field5485: [Union108] + field5498: Enum274 + field5499: Enum275 + field5500: Scalar1 + field5501: Enum275 + field5502: Scalar1 + field5503: Enum275 + field5504: Scalar1 + field5505: String + field5506: String + field5507: Scalar1 + field5508: Enum275 +} + +type Object9380 @Directive21(argument61 : "stringValue40736") @Directive44(argument97 : ["stringValue40735"]) { + field48214: Enum2245! + field48215: String! + field48216: String +} + +type Object9381 @Directive21(argument61 : "stringValue40739") @Directive44(argument97 : ["stringValue40738"]) { + field48218: String + field48219: Scalar2 @deprecated + field48220: String + field48221: Float + field48222: Float + field48223: Boolean + field48224: String + field48225: [Object9382] + field48230: Scalar2 +} + +type Object9382 @Directive21(argument61 : "stringValue40741") @Directive44(argument97 : ["stringValue40740"]) { + field48226: String + field48227: Enum2246 + field48228: String @deprecated + field48229: [String] +} + +type Object9383 @Directive21(argument61 : "stringValue40744") @Directive44(argument97 : ["stringValue40743"]) { + field48236: String + field48237: String + field48238: String + field48239: String + field48240: [Object9384] +} + +type Object9384 @Directive21(argument61 : "stringValue40746") @Directive44(argument97 : ["stringValue40745"]) { + field48241: String + field48242: String + field48243: String +} + +type Object9385 @Directive21(argument61 : "stringValue40748") @Directive44(argument97 : ["stringValue40747"]) { + field48245: [Object9386] +} + +type Object9386 @Directive21(argument61 : "stringValue40750") @Directive44(argument97 : ["stringValue40749"]) { + field48246: String + field48247: String + field48248: Int + field48249: String + field48250: Int + field48251: String + field48252: String + field48253: Int + field48254: Int + field48255: Int + field48256: String + field48257: Int + field48258: String + field48259: [Object9387] + field48266: String + field48267: String + field48268: Int + field48269: String + field48270: String + field48271: String + field48272: Int + field48273: String + field48274: Int + field48275: Object9388 + field48306: Int + field48307: Int + field48308: Int + field48309: Int +} + +type Object9387 @Directive21(argument61 : "stringValue40752") @Directive44(argument97 : ["stringValue40751"]) { + field48260: String + field48261: String + field48262: String + field48263: String + field48264: String + field48265: String +} + +type Object9388 @Directive21(argument61 : "stringValue40754") @Directive44(argument97 : ["stringValue40753"]) { + field48276: String + field48277: String + field48278: Object9389 + field48282: Object9390 + field48290: Object9391 + field48297: Object9392 + field48305: String +} + +type Object9389 @Directive21(argument61 : "stringValue40756") @Directive44(argument97 : ["stringValue40755"]) { + field48279: String + field48280: String + field48281: Boolean +} + +type Object939 @Directive20(argument58 : "stringValue4820", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4819") @Directive31 @Directive44(argument97 : ["stringValue4821", "stringValue4822"]) { + field5486: String + field5487: Object940 +} + +type Object9390 @Directive21(argument61 : "stringValue40758") @Directive44(argument97 : ["stringValue40757"]) { + field48283: Int + field48284: String + field48285: String + field48286: String + field48287: String + field48288: String + field48289: Scalar4 +} + +type Object9391 @Directive21(argument61 : "stringValue40760") @Directive44(argument97 : ["stringValue40759"]) { + field48291: Int + field48292: String + field48293: String + field48294: String + field48295: String + field48296: String +} + +type Object9392 @Directive21(argument61 : "stringValue40762") @Directive44(argument97 : ["stringValue40761"]) { + field48298: String + field48299: String + field48300: String + field48301: String + field48302: String + field48303: String + field48304: [String] +} + +type Object9393 @Directive21(argument61 : "stringValue40764") @Directive44(argument97 : ["stringValue40763"]) { + field48311: Scalar2 + field48312: String +} + +type Object9394 @Directive21(argument61 : "stringValue40766") @Directive44(argument97 : ["stringValue40765"]) { + field48315: Object9395 + field48318: Object9395 + field48319: [Object9396] + field48329: [Object9396] + field48330: Object9397 + field48342: Object9397 + field48343: Object9399 + field48347: Object9399 +} + +type Object9395 @Directive21(argument61 : "stringValue40768") @Directive44(argument97 : ["stringValue40767"]) { + field48316: String! + field48317: Scalar2! +} + +type Object9396 @Directive21(argument61 : "stringValue40770") @Directive44(argument97 : ["stringValue40769"]) { + field48320: String + field48321: String + field48322: Enum2247 + field48323: Object9395 + field48324: Scalar4 + field48325: Scalar4 + field48326: String + field48327: String + field48328: String +} + +type Object9397 @Directive21(argument61 : "stringValue40773") @Directive44(argument97 : ["stringValue40772"]) { + field48331: String + field48332: String + field48333: String + field48334: String + field48335: String + field48336: String + field48337: String + field48338: Object9398 +} + +type Object9398 @Directive21(argument61 : "stringValue40775") @Directive44(argument97 : ["stringValue40774"]) { + field48339: Scalar2 + field48340: String + field48341: String +} + +type Object9399 @Directive21(argument61 : "stringValue40777") @Directive44(argument97 : ["stringValue40776"]) { + field48344: Scalar2 + field48345: String + field48346: Boolean +} + +type Object94 @Directive21(argument61 : "stringValue373") @Directive44(argument97 : ["stringValue372"]) { + field626: String + field627: Float + field628: String +} + +type Object940 @Directive20(argument58 : "stringValue4824", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4823") @Directive31 @Directive44(argument97 : ["stringValue4825", "stringValue4826"]) { + field5488: String + field5489: String + field5490: String +} + +type Object9400 @Directive21(argument61 : "stringValue40779") @Directive44(argument97 : ["stringValue40778"]) { + field48349: Object9395 + field48350: Object9395 + field48351: [Object9401] + field48365: [Object9403] + field48374: String +} + +type Object9401 @Directive21(argument61 : "stringValue40781") @Directive44(argument97 : ["stringValue40780"]) { + field48352: String + field48353: Object9395 + field48354: Scalar4 + field48355: Scalar4 + field48356: [Object9402] + field48360: String + field48361: String + field48362: String + field48363: String + field48364: Object9395 +} + +type Object9402 @Directive21(argument61 : "stringValue40783") @Directive44(argument97 : ["stringValue40782"]) { + field48357: Enum2247! + field48358: Object9395! + field48359: Scalar4 +} + +type Object9403 @Directive21(argument61 : "stringValue40785") @Directive44(argument97 : ["stringValue40784"]) { + field48366: String + field48367: Object9395 + field48368: Enum2248 + field48369: String + field48370: String + field48371: String + field48372: String + field48373: String +} + +type Object9404 @Directive21(argument61 : "stringValue40788") @Directive44(argument97 : ["stringValue40787"]) { + field48376: String! + field48377: Object9405! + field48409: Object9410! + field48410: Object9411! + field48414: Object9411! + field48415: Object9412 +} + +type Object9405 @Directive21(argument61 : "stringValue40790") @Directive44(argument97 : ["stringValue40789"]) { + field48378: Enum2249 + field48379: Enum2250 + field48380: Object9406 + field48389: Object9408 + field48404: Boolean + field48405: String + field48406: String + field48407: Object9410 +} + +type Object9406 @Directive21(argument61 : "stringValue40794") @Directive44(argument97 : ["stringValue40793"]) { + field48381: String + field48382: String + field48383: [Object9407] + field48386: String + field48387: Enum2251 + field48388: Scalar2 +} + +type Object9407 @Directive21(argument61 : "stringValue40796") @Directive44(argument97 : ["stringValue40795"]) { + field48384: String + field48385: Float +} + +type Object9408 @Directive21(argument61 : "stringValue40799") @Directive44(argument97 : ["stringValue40798"]) { + field48390: Object9409 + field48400: String + field48401: String + field48402: String + field48403: String +} + +type Object9409 @Directive21(argument61 : "stringValue40801") @Directive44(argument97 : ["stringValue40800"]) { + field48391: String + field48392: String + field48393: String + field48394: String + field48395: String + field48396: String + field48397: String + field48398: Boolean + field48399: Boolean +} + +type Object941 @Directive20(argument58 : "stringValue4828", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4827") @Directive31 @Directive44(argument97 : ["stringValue4829", "stringValue4830"]) { + field5491: Enum272 + field5492: Enum273 +} + +type Object9410 @Directive21(argument61 : "stringValue40803") @Directive44(argument97 : ["stringValue40802"]) { + field48408: String +} + +type Object9411 @Directive21(argument61 : "stringValue40805") @Directive44(argument97 : ["stringValue40804"]) { + field48411: String + field48412: Object9406 + field48413: Object9409 +} + +type Object9412 @Directive21(argument61 : "stringValue40807") @Directive44(argument97 : ["stringValue40806"]) { + field48416: String + field48417: Object9406 +} + +type Object9413 @Directive21(argument61 : "stringValue40809") @Directive44(argument97 : ["stringValue40808"]) { + field48419: String + field48420: String +} + +type Object9414 @Directive21(argument61 : "stringValue40819") @Directive44(argument97 : ["stringValue40818"]) { + field48423: Object9415 + field48433: Object9417 + field48436: Object9357 + field48437: Object9418 + field48456: Enum2254 + field48457: Object9422 + field48467: Object9424 + field48476: [Object9358] +} + +type Object9415 @Directive21(argument61 : "stringValue40821") @Directive44(argument97 : ["stringValue40820"]) { + field48424: Boolean + field48425: Boolean + field48426: Boolean + field48427: Object9416 +} + +type Object9416 @Directive21(argument61 : "stringValue40823") @Directive44(argument97 : ["stringValue40822"]) { + field48428: String + field48429: String + field48430: String + field48431: Boolean + field48432: String +} + +type Object9417 @Directive21(argument61 : "stringValue40825") @Directive44(argument97 : ["stringValue40824"]) { + field48434: Boolean! + field48435: String +} + +type Object9418 @Directive21(argument61 : "stringValue40827") @Directive44(argument97 : ["stringValue40826"]) { + field48438: [Object9419] + field48450: Object9421 + field48455: Enum2253 +} + +type Object9419 @Directive21(argument61 : "stringValue40829") @Directive44(argument97 : ["stringValue40828"]) { + field48439: Object9420 + field48444: String + field48445: String + field48446: Enum2252 + field48447: Scalar2 + field48448: String + field48449: String +} + +type Object942 @Directive20(argument58 : "stringValue4840", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4839") @Directive31 @Directive44(argument97 : ["stringValue4841", "stringValue4842"]) { + field5493: Scalar2 +} + +type Object9420 @Directive21(argument61 : "stringValue40831") @Directive44(argument97 : ["stringValue40830"]) { + field48440: String + field48441: String + field48442: String + field48443: String +} + +type Object9421 @Directive21(argument61 : "stringValue40834") @Directive44(argument97 : ["stringValue40833"]) { + field48451: String + field48452: Enum2253 + field48453: Int + field48454: Boolean +} + +type Object9422 @Directive21(argument61 : "stringValue40838") @Directive44(argument97 : ["stringValue40837"]) { + field48458: Object9423 +} + +type Object9423 @Directive21(argument61 : "stringValue40840") @Directive44(argument97 : ["stringValue40839"]) { + field48459: Boolean + field48460: String + field48461: String + field48462: String + field48463: Boolean + field48464: String + field48465: String + field48466: String +} + +type Object9424 @Directive21(argument61 : "stringValue40842") @Directive44(argument97 : ["stringValue40841"]) { + field48468: Int + field48469: String + field48470: String + field48471: String + field48472: String + field48473: Enum2255 + field48474: String + field48475: String +} + +type Object9425 @Directive44(argument97 : ["stringValue40844"]) { + field48478(argument2328: InputObject1898!): Object9426 @Directive35(argument89 : "stringValue40846", argument90 : false, argument91 : "stringValue40845", argument92 : 835, argument93 : "stringValue40847", argument94 : false) + field48741(argument2329: InputObject1904!): Object9469 @Directive35(argument89 : "stringValue40967", argument90 : false, argument91 : "stringValue40966", argument92 : 836, argument93 : "stringValue40968", argument94 : false) +} + +type Object9426 @Directive21(argument61 : "stringValue40856") @Directive44(argument97 : ["stringValue40855"]) { + field48479: Enum2257 + field48480: [Object9427] +} + +type Object9427 @Directive21(argument61 : "stringValue40859") @Directive44(argument97 : ["stringValue40858"]) { + field48481: Scalar2 + field48482: Enum2258 + field48483: Scalar2 + field48484: Float + field48485: Float + field48486: Boolean + field48487: Boolean + field48488: Boolean + field48489: Float + field48490: Scalar2 + field48491: [Object9428] + field48497: Float + field48498: String + field48499: String + field48500: String + field48501: String + field48502: String + field48503: String + field48504: String + field48505: String + field48506: [Object9429] + field48510: String + field48511: String + field48512: String + field48513: Object9431 + field48647: Int + field48648: Object9458 + field48666: String + field48667: String + field48668: Boolean + field48669: Boolean + field48670: [Object9461] + field48678: [Object9462] + field48689: Boolean + field48690: [Enum2269] + field48691: Enum2270 + field48692: String + field48693: String + field48694: [Object9463] +} + +type Object9428 @Directive21(argument61 : "stringValue40862") @Directive44(argument97 : ["stringValue40861"]) { + field48492: String + field48493: String + field48494: String + field48495: String + field48496: Scalar2 +} + +type Object9429 @Directive21(argument61 : "stringValue40864") @Directive44(argument97 : ["stringValue40863"]) { + field48507: [Object9430] +} + +type Object943 @Directive20(argument58 : "stringValue4844", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4843") @Directive31 @Directive44(argument97 : ["stringValue4845", "stringValue4846"]) { + field5494: Scalar2 +} + +type Object9430 @Directive21(argument61 : "stringValue40866") @Directive44(argument97 : ["stringValue40865"]) { + field48508: Float + field48509: Float +} + +type Object9431 @Directive21(argument61 : "stringValue40868") @Directive44(argument97 : ["stringValue40867"]) { + field48514: Boolean + field48515: Float + field48516: Object9432 + field48526: String + field48527: Object9433 + field48528: String + field48529: Object9433 + field48530: Float + field48531: Boolean + field48532: Object9433 + field48533: [Object9434] + field48547: Object9433 + field48548: String + field48549: String + field48550: Object9433 + field48551: String + field48552: String + field48553: [Object9435] + field48561: [Enum2262] + field48562: Object2779 + field48563: Object9436 + field48646: Boolean +} + +type Object9432 @Directive21(argument61 : "stringValue40870") @Directive44(argument97 : ["stringValue40869"]) { + field48517: String + field48518: [Object9432] + field48519: Object9433 + field48524: Int + field48525: String +} + +type Object9433 @Directive21(argument61 : "stringValue40872") @Directive44(argument97 : ["stringValue40871"]) { + field48520: Float + field48521: String + field48522: String + field48523: Boolean +} + +type Object9434 @Directive21(argument61 : "stringValue40874") @Directive44(argument97 : ["stringValue40873"]) { + field48534: Enum2259 + field48535: String + field48536: Boolean + field48537: Boolean + field48538: Int + field48539: String + field48540: Scalar2 + field48541: String + field48542: Int + field48543: String + field48544: Float + field48545: Int + field48546: Enum2260 +} + +type Object9435 @Directive21(argument61 : "stringValue40878") @Directive44(argument97 : ["stringValue40877"]) { + field48554: String + field48555: String + field48556: String + field48557: String + field48558: String + field48559: Enum2261 + field48560: String +} + +type Object9436 @Directive21(argument61 : "stringValue40882") @Directive44(argument97 : ["stringValue40881"]) { + field48564: Union307 + field48603: Union307 + field48604: Object9446 +} + +type Object9437 @Directive21(argument61 : "stringValue40885") @Directive44(argument97 : ["stringValue40884"]) { + field48565: String! + field48566: String + field48567: Enum2263 +} + +type Object9438 @Directive21(argument61 : "stringValue40888") @Directive44(argument97 : ["stringValue40887"]) { + field48568: String + field48569: Object2779 + field48570: Enum559 + field48571: Enum2263 +} + +type Object9439 @Directive21(argument61 : "stringValue40890") @Directive44(argument97 : ["stringValue40889"]) { + field48572: String + field48573: String! + field48574: String! + field48575: String + field48576: Object9440 + field48588: Object9443 +} + +type Object944 @Directive20(argument58 : "stringValue4848", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4847") @Directive31 @Directive44(argument97 : ["stringValue4849", "stringValue4850"]) { + field5495: Boolean + field5496: Boolean + field5497: Boolean +} + +type Object9440 @Directive21(argument61 : "stringValue40892") @Directive44(argument97 : ["stringValue40891"]) { + field48577: [Union308] + field48585: String + field48586: String + field48587: String +} + +type Object9441 @Directive21(argument61 : "stringValue40895") @Directive44(argument97 : ["stringValue40894"]) { + field48578: String! + field48579: Boolean! + field48580: Boolean! + field48581: String! +} + +type Object9442 @Directive21(argument61 : "stringValue40897") @Directive44(argument97 : ["stringValue40896"]) { + field48582: String! + field48583: String + field48584: Enum2264! +} + +type Object9443 @Directive21(argument61 : "stringValue40900") @Directive44(argument97 : ["stringValue40899"]) { + field48589: String! + field48590: String! + field48591: String! +} + +type Object9444 @Directive21(argument61 : "stringValue40902") @Directive44(argument97 : ["stringValue40901"]) { + field48592: String! + field48593: String! + field48594: String! + field48595: String + field48596: Boolean + field48597: Enum2263 +} + +type Object9445 @Directive21(argument61 : "stringValue40904") @Directive44(argument97 : ["stringValue40903"]) { + field48598: String! + field48599: String! + field48600: String + field48601: Boolean + field48602: Enum2263 +} + +type Object9446 @Directive21(argument61 : "stringValue40906") @Directive44(argument97 : ["stringValue40905"]) { + field48605: [Union309] + field48645: String +} + +type Object9447 @Directive21(argument61 : "stringValue40909") @Directive44(argument97 : ["stringValue40908"]) { + field48606: String! + field48607: Enum2263 +} + +type Object9448 @Directive21(argument61 : "stringValue40911") @Directive44(argument97 : ["stringValue40910"]) { + field48608: [Union310] + field48628: Boolean @deprecated + field48629: Boolean + field48630: Boolean + field48631: String + field48632: Enum2263 +} + +type Object9449 @Directive21(argument61 : "stringValue40914") @Directive44(argument97 : ["stringValue40913"]) { + field48609: String! + field48610: String! + field48611: Object9446 +} + +type Object945 implements Interface76 @Directive21(argument61 : "stringValue4867") @Directive22(argument62 : "stringValue4866") @Directive31 @Directive44(argument97 : ["stringValue4868", "stringValue4869", "stringValue4870"]) @Directive45(argument98 : ["stringValue4871"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union110] + field5221: Boolean + field5529: [Object946] +} + +type Object9450 @Directive21(argument61 : "stringValue40916") @Directive44(argument97 : ["stringValue40915"]) { + field48612: String! + field48613: String! + field48614: Object9446 + field48615: String +} + +type Object9451 @Directive21(argument61 : "stringValue40918") @Directive44(argument97 : ["stringValue40917"]) { + field48616: String! + field48617: String! + field48618: Object9446 + field48619: Enum2263 +} + +type Object9452 @Directive21(argument61 : "stringValue40920") @Directive44(argument97 : ["stringValue40919"]) { + field48620: String! + field48621: String! + field48622: Object9446 + field48623: Enum2263 +} + +type Object9453 @Directive21(argument61 : "stringValue40922") @Directive44(argument97 : ["stringValue40921"]) { + field48624: String! + field48625: String! + field48626: Object9446 + field48627: Enum2263 +} + +type Object9454 @Directive21(argument61 : "stringValue40924") @Directive44(argument97 : ["stringValue40923"]) { + field48633: String! + field48634: String! + field48635: Enum2263 +} + +type Object9455 @Directive21(argument61 : "stringValue40926") @Directive44(argument97 : ["stringValue40925"]) { + field48636: String! + field48637: Enum2263 +} + +type Object9456 @Directive21(argument61 : "stringValue40928") @Directive44(argument97 : ["stringValue40927"]) { + field48638: String! + field48639: Enum2263 +} + +type Object9457 @Directive21(argument61 : "stringValue40930") @Directive44(argument97 : ["stringValue40929"]) { + field48640: Enum2265 + field48641: Enum2266 + field48642: Int @deprecated + field48643: Int @deprecated + field48644: Object2779 +} + +type Object9458 @Directive21(argument61 : "stringValue40934") @Directive44(argument97 : ["stringValue40933"]) { + field48649: Object9459 + field48653: [String] + field48654: String + field48655: [Object9460] +} + +type Object9459 @Directive21(argument61 : "stringValue40936") @Directive44(argument97 : ["stringValue40935"]) { + field48650: String + field48651: String + field48652: String +} + +type Object946 @Directive20(argument58 : "stringValue4873", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4872") @Directive31 @Directive44(argument97 : ["stringValue4874", "stringValue4875"]) { + field5530: String + field5531: Object947 + field5535: String + field5536: String + field5537: Object398 + field5538: String +} + +type Object9460 @Directive21(argument61 : "stringValue40938") @Directive44(argument97 : ["stringValue40937"]) { + field48656: String + field48657: String + field48658: String + field48659: String + field48660: String + field48661: String + field48662: String + field48663: String + field48664: String + field48665: Enum2267 +} + +type Object9461 @Directive21(argument61 : "stringValue40941") @Directive44(argument97 : ["stringValue40940"]) { + field48671: String + field48672: String + field48673: String + field48674: String + field48675: Enum2267 + field48676: String + field48677: Enum2268 +} + +type Object9462 @Directive21(argument61 : "stringValue40944") @Directive44(argument97 : ["stringValue40943"]) { + field48679: Scalar2 + field48680: String + field48681: String + field48682: String + field48683: String + field48684: String + field48685: String + field48686: String + field48687: String + field48688: Object9458 +} + +type Object9463 @Directive21(argument61 : "stringValue40948") @Directive44(argument97 : ["stringValue40947"]) { + field48695: String + field48696: String + field48697: Enum559 + field48698: String + field48699: Object2797 @deprecated + field48700: Object2774 @deprecated + field48701: String + field48702: Union311 @deprecated + field48705: String + field48706: String + field48707: Object9465 + field48735: Interface120 + field48736: Interface122 + field48737: Object9466 + field48738: Object9467 + field48739: Object9467 + field48740: Object9467 +} + +type Object9464 @Directive21(argument61 : "stringValue40951") @Directive44(argument97 : ["stringValue40950"]) { + field48703: String! + field48704: String +} + +type Object9465 @Directive21(argument61 : "stringValue40953") @Directive44(argument97 : ["stringValue40952"]) { + field48708: String + field48709: Int + field48710: Object9466 + field48721: Boolean + field48722: Object9467 + field48734: Int +} + +type Object9466 @Directive21(argument61 : "stringValue40955") @Directive44(argument97 : ["stringValue40954"]) { + field48711: String + field48712: Enum559 + field48713: Enum2271 + field48714: String + field48715: String + field48716: Enum2272 + field48717: Object2774 @deprecated + field48718: Union311 @deprecated + field48719: Object2782 @deprecated + field48720: Interface120 +} + +type Object9467 @Directive21(argument61 : "stringValue40959") @Directive44(argument97 : ["stringValue40958"]) { + field48723: Object2779 + field48724: Object9468 + field48732: Scalar5 + field48733: Enum2276 +} + +type Object9468 @Directive21(argument61 : "stringValue40961") @Directive44(argument97 : ["stringValue40960"]) { + field48725: Enum2273 + field48726: Enum2274 + field48727: Enum2275 + field48728: Scalar5 + field48729: Scalar5 + field48730: Float + field48731: Float +} + +type Object9469 @Directive21(argument61 : "stringValue40971") @Directive44(argument97 : ["stringValue40970"]) { + field48742: [Object9427] +} + +type Object947 @Directive20(argument58 : "stringValue4877", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4876") @Directive31 @Directive44(argument97 : ["stringValue4878", "stringValue4879"]) { + field5532: Scalar2 + field5533: String + field5534: String +} + +type Object9470 @Directive44(argument97 : ["stringValue40972"]) { + field48744(argument2330: InputObject1905!): Object9471 @Directive35(argument89 : "stringValue40974", argument90 : true, argument91 : "stringValue40973", argument92 : 837, argument93 : "stringValue40975", argument94 : true) + field48753(argument2331: InputObject1906!): Object9473 @Directive35(argument89 : "stringValue40982", argument90 : true, argument91 : "stringValue40981", argument92 : 838, argument93 : "stringValue40983", argument94 : true) + field48761(argument2332: InputObject1907!): Object9475 @Directive35(argument89 : "stringValue40990", argument90 : true, argument91 : "stringValue40989", argument92 : 839, argument93 : "stringValue40991", argument94 : true) + field48786(argument2333: InputObject1908!): Object9478 @Directive35(argument89 : "stringValue41001", argument90 : true, argument91 : "stringValue41000", argument92 : 840, argument93 : "stringValue41002", argument94 : true) + field48788(argument2334: InputObject1909!): Object9479 @Directive35(argument89 : "stringValue41007", argument90 : true, argument91 : "stringValue41006", argument92 : 841, argument93 : "stringValue41008", argument94 : true) + field48790(argument2335: InputObject1910!): Object9480 @Directive35(argument89 : "stringValue41013", argument90 : true, argument91 : "stringValue41012", argument92 : 842, argument93 : "stringValue41014", argument94 : true) + field48792(argument2336: InputObject1911!): Object9481 @Directive35(argument89 : "stringValue41019", argument90 : true, argument91 : "stringValue41018", argument92 : 843, argument93 : "stringValue41020", argument94 : true) + field48806(argument2337: InputObject1912!): Object9483 @Directive35(argument89 : "stringValue41027", argument90 : true, argument91 : "stringValue41026", argument92 : 844, argument93 : "stringValue41028", argument94 : true) + field48810(argument2338: InputObject1913!): Object9484 @Directive35(argument89 : "stringValue41033", argument90 : true, argument91 : "stringValue41032", argument92 : 845, argument93 : "stringValue41034", argument94 : true) + field48822(argument2339: InputObject1914!): Object9485 @Directive35(argument89 : "stringValue41039", argument90 : true, argument91 : "stringValue41038", argument92 : 846, argument93 : "stringValue41040", argument94 : true) + field48825(argument2340: InputObject1915!): Object9486 @Directive35(argument89 : "stringValue41046", argument90 : true, argument91 : "stringValue41045", argument92 : 847, argument93 : "stringValue41047", argument94 : true) + field48828(argument2341: InputObject1916!): Object9487 @Directive35(argument89 : "stringValue41052", argument90 : true, argument91 : "stringValue41051", argument92 : 848, argument93 : "stringValue41053", argument94 : true) + field49431(argument2342: InputObject1917!): Object9583 @Directive35(argument89 : "stringValue41272", argument90 : true, argument91 : "stringValue41271", argument92 : 849, argument93 : "stringValue41273", argument94 : true) + field49510(argument2343: InputObject1918!): Object9585 @Directive35(argument89 : "stringValue41280", argument90 : true, argument91 : "stringValue41279", argument92 : 850, argument93 : "stringValue41281", argument94 : true) + field49535(argument2344: InputObject1919!): Object9588 @Directive35(argument89 : "stringValue41291", argument90 : true, argument91 : "stringValue41290", argument92 : 851, argument93 : "stringValue41292", argument94 : true) +} + +type Object9471 @Directive21(argument61 : "stringValue40978") @Directive44(argument97 : ["stringValue40977"]) { + field48745: Object9472 +} + +type Object9472 @Directive21(argument61 : "stringValue40980") @Directive44(argument97 : ["stringValue40979"]) { + field48746: String + field48747: Int + field48748: Float + field48749: [Int] @deprecated + field48750: [Scalar2] + field48751: Int + field48752: Int +} + +type Object9473 @Directive21(argument61 : "stringValue40986") @Directive44(argument97 : ["stringValue40985"]) { + field48754: [Object9474] @deprecated + field48758: [String] + field48759: String + field48760: String +} + +type Object9474 @Directive21(argument61 : "stringValue40988") @Directive44(argument97 : ["stringValue40987"]) { + field48755: String @deprecated + field48756: String @deprecated + field48757: String @deprecated +} + +type Object9475 @Directive21(argument61 : "stringValue40994") @Directive44(argument97 : ["stringValue40993"]) { + field48762: String + field48763: Int + field48764: Boolean + field48765: Boolean + field48766: Boolean + field48767: Float @deprecated + field48768: [Object9476] + field48778: Object9477 +} + +type Object9476 @Directive21(argument61 : "stringValue40996") @Directive44(argument97 : ["stringValue40995"]) { + field48769: Scalar2 + field48770: String! + field48771: String + field48772: String + field48773: String + field48774: String + field48775: String + field48776: Boolean + field48777: [String] +} + +type Object9477 @Directive21(argument61 : "stringValue40998") @Directive44(argument97 : ["stringValue40997"]) { + field48779: Float + field48780: Float + field48781: Float + field48782: Boolean + field48783: Enum2277 + field48784: String + field48785: String +} + +type Object9478 @Directive21(argument61 : "stringValue41005") @Directive44(argument97 : ["stringValue41004"]) { + field48787: Boolean +} + +type Object9479 @Directive21(argument61 : "stringValue41011") @Directive44(argument97 : ["stringValue41010"]) { + field48789: [Object5568] +} + +type Object948 implements Interface76 @Directive21(argument61 : "stringValue4884") @Directive22(argument62 : "stringValue4883") @Directive31 @Directive44(argument97 : ["stringValue4885", "stringValue4886", "stringValue4887"]) @Directive45(argument98 : ["stringValue4888"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5220: [Union111] + field5539: [Object949] +} + +type Object9480 @Directive21(argument61 : "stringValue41017") @Directive44(argument97 : ["stringValue41016"]) { + field48791: Object5570 +} + +type Object9481 @Directive21(argument61 : "stringValue41023") @Directive44(argument97 : ["stringValue41022"]) { + field48793: [Object9482] + field48805: [Object5552] +} + +type Object9482 @Directive21(argument61 : "stringValue41025") @Directive44(argument97 : ["stringValue41024"]) { + field48794: String + field48795: String + field48796: String + field48797: String + field48798: String + field48799: Scalar2 + field48800: String + field48801: Int + field48802: String + field48803: String + field48804: String +} + +type Object9483 @Directive21(argument61 : "stringValue41031") @Directive44(argument97 : ["stringValue41030"]) { + field48807: Scalar2 + field48808: Enum1391 + field48809: [Object5575] +} + +type Object9484 @Directive21(argument61 : "stringValue41037") @Directive44(argument97 : ["stringValue41036"]) { + field48811: Int + field48812: Boolean + field48813: Boolean + field48814: Boolean + field48815: Boolean + field48816: Boolean + field48817: Boolean + field48818: Boolean + field48819: Boolean + field48820: Scalar2 + field48821: Boolean +} + +type Object9485 @Directive21(argument61 : "stringValue41044") @Directive44(argument97 : ["stringValue41043"]) { + field48823: Scalar1 + field48824: Scalar1 +} + +type Object9486 @Directive21(argument61 : "stringValue41050") @Directive44(argument97 : ["stringValue41049"]) { + field48826: String + field48827: String +} + +type Object9487 @Directive21(argument61 : "stringValue41056") @Directive44(argument97 : ["stringValue41055"]) { + field48829: Scalar2 @deprecated + field48830: Scalar2 + field48831: Scalar1 + field48832: [Object9488] + field48836: [String] + field48837: Object5554 + field48838: Scalar1 + field48839: Scalar1 + field48840: Object9489 + field48855: Object9490 + field48864: [Object9482] + field48865: [[Union312]] + field48869: Scalar2 + field48870: Object9494 + field48887: Object9500 + field48891: Object9501 + field48912: Object9503 + field48925: Scalar1 + field48926: [Object9504] + field48938: [Object9506] + field48945: String + field48946: Scalar1 + field48947: [[Union315]] + field48948: [[Union315]] + field48949: Scalar1 + field48950: [String] + field48951: [String] + field48952: Boolean + field48953: [String] + field48954: Object9507 + field48957: [[String]] + field48958: Object9508 + field48978: [[Union315]] + field48979: Scalar1 + field48980: Scalar2 + field48981: Object9512 + field48985: String + field48986: Object9513 + field49002: String + field49003: Scalar1 + field49004: Scalar1 + field49005: Object5570 + field49006: Boolean + field49007: [[Union315]] + field49008: [[Union315]] + field49009: [Object9514] @deprecated + field49024: Scalar1 + field49025: [Object9516] + field49034: Object9518 + field49040: Object9519 + field49058: Object9520 + field49097: [Object9521] + field49109: [Object9522] + field49113: String + field49114: [Object9523] @deprecated + field49119: [[Object9524]] + field49132: [Object9526] @deprecated + field49141: Object9527 + field49145: Object9528 + field49154: Scalar1 + field49155: [Object9530] + field49161: Object9531 + field49166: Object9532 @deprecated + field49170: [Object9533] @deprecated + field49178: Boolean @deprecated + field49179: Boolean + field49180: [Object9534] @deprecated + field49190: Object9535 + field49418: Int + field49419: Boolean + field49420: [Scalar2] + field49421: Object9581 +} + +type Object9488 @Directive21(argument61 : "stringValue41058") @Directive44(argument97 : ["stringValue41057"]) { + field48833: String + field48834: String + field48835: String +} + +type Object9489 @Directive21(argument61 : "stringValue41060") @Directive44(argument97 : ["stringValue41059"]) { + field48841: String + field48842: String + field48843: String + field48844: String + field48845: Scalar2 + field48846: String + field48847: String + field48848: String + field48849: String + field48850: String + field48851: String + field48852: String + field48853: String + field48854: Boolean +} + +type Object949 @Directive20(argument58 : "stringValue4890", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4889") @Directive31 @Directive44(argument97 : ["stringValue4891", "stringValue4892"]) { + field5540: String + field5541: String + field5542: String + field5543: Object754 + field5544: Object899 + field5545: Int + field5546: Object398 +} + +type Object9490 @Directive21(argument61 : "stringValue41062") @Directive44(argument97 : ["stringValue41061"]) { + field48856: Boolean + field48857: Boolean + field48858: Boolean + field48859: Boolean + field48860: Boolean + field48861: String + field48862: Scalar2 + field48863: [String] +} + +type Object9491 @Directive21(argument61 : "stringValue41065") @Directive44(argument97 : ["stringValue41064"]) { + field48866: Float +} + +type Object9492 @Directive21(argument61 : "stringValue41067") @Directive44(argument97 : ["stringValue41066"]) { + field48867: Int +} + +type Object9493 @Directive21(argument61 : "stringValue41069") @Directive44(argument97 : ["stringValue41068"]) { + field48868: String +} + +type Object9494 @Directive21(argument61 : "stringValue41071") @Directive44(argument97 : ["stringValue41070"]) { + field48871: Object9495 @deprecated + field48873: Scalar2 + field48874: Object9496 @deprecated + field48876: Object9496 + field48877: Object9497 + field48879: Union313 @deprecated + field48882: Union314 @deprecated + field48885: Object9498 + field48886: Object9499 +} + +type Object9495 @Directive21(argument61 : "stringValue41073") @Directive44(argument97 : ["stringValue41072"]) { + field48872: Int +} + +type Object9496 @Directive21(argument61 : "stringValue41075") @Directive44(argument97 : ["stringValue41074"]) { + field48875: Int +} + +type Object9497 @Directive21(argument61 : "stringValue41077") @Directive44(argument97 : ["stringValue41076"]) { + field48878: Int +} + +type Object9498 @Directive21(argument61 : "stringValue41080") @Directive44(argument97 : ["stringValue41079"]) { + field48880: Int + field48881: Int +} + +type Object9499 @Directive21(argument61 : "stringValue41083") @Directive44(argument97 : ["stringValue41082"]) { + field48883: Int + field48884: Int +} + +type Object95 @Directive21(argument61 : "stringValue375") @Directive44(argument97 : ["stringValue374"]) { + field642: Boolean + field643: Boolean + field644: String + field645: String +} + +type Object950 implements Interface76 @Directive21(argument61 : "stringValue4897") @Directive22(argument62 : "stringValue4896") @Directive31 @Directive44(argument97 : ["stringValue4898", "stringValue4899", "stringValue4900"]) @Directive45(argument98 : ["stringValue4901"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union112] + field5221: Boolean + field5281: Object909 + field5421: String @deprecated + field5547: Object951 + field5553: Object953 + field5557: [Object954] + field5593: [Object956] + field5618: Object963 + field5624: Object965 +} + +type Object9500 @Directive21(argument61 : "stringValue41085") @Directive44(argument97 : ["stringValue41084"]) { + field48888: String + field48889: String + field48890: String +} + +type Object9501 @Directive21(argument61 : "stringValue41087") @Directive44(argument97 : ["stringValue41086"]) { + field48892: Scalar2 @deprecated + field48893: String @deprecated + field48894: String @deprecated + field48895: Boolean @deprecated + field48896: String @deprecated + field48897: String + field48898: Object9502 @deprecated +} + +type Object9502 @Directive21(argument61 : "stringValue41089") @Directive44(argument97 : ["stringValue41088"]) { + field48899: String + field48900: String + field48901: Boolean + field48902: Scalar2 + field48903: String + field48904: String + field48905: String + field48906: String + field48907: Scalar2 + field48908: Boolean + field48909: String + field48910: Boolean + field48911: Boolean +} + +type Object9503 @Directive21(argument61 : "stringValue41091") @Directive44(argument97 : ["stringValue41090"]) { + field48913: Scalar2 + field48914: String + field48915: String + field48916: Boolean + field48917: String + field48918: String + field48919: Boolean + field48920: Boolean + field48921: Object9502 + field48922: [Object9502] + field48923: String + field48924: String +} + +type Object9504 @Directive21(argument61 : "stringValue41093") @Directive44(argument97 : ["stringValue41092"]) { + field48927: [Object9505] + field48931: String + field48932: String + field48933: String + field48934: Int + field48935: Scalar2 + field48936: String + field48937: String +} + +type Object9505 @Directive21(argument61 : "stringValue41095") @Directive44(argument97 : ["stringValue41094"]) { + field48928: String + field48929: String + field48930: Int +} + +type Object9506 @Directive21(argument61 : "stringValue41097") @Directive44(argument97 : ["stringValue41096"]) { + field48939: Scalar2 + field48940: String + field48941: String + field48942: String + field48943: String + field48944: String +} + +type Object9507 @Directive21(argument61 : "stringValue41100") @Directive44(argument97 : ["stringValue41099"]) { + field48955: Float + field48956: Float +} + +type Object9508 @Directive21(argument61 : "stringValue41102") @Directive44(argument97 : ["stringValue41101"]) { + field48959: [Object9509] + field48966: [Object9510] + field48973: [Object9511] +} + +type Object9509 @Directive21(argument61 : "stringValue41104") @Directive44(argument97 : ["stringValue41103"]) { + field48960: String + field48961: String + field48962: String + field48963: [String] + field48964: [String] + field48965: [String] +} + +type Object951 @Directive20(argument58 : "stringValue4902", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4903") @Directive31 @Directive44(argument97 : ["stringValue4904", "stringValue4905"]) { + field5548: Object952 + field5551: Object952 + field5552: Object952 +} + +type Object9510 @Directive21(argument61 : "stringValue41106") @Directive44(argument97 : ["stringValue41105"]) { + field48967: String + field48968: String + field48969: String + field48970: String + field48971: [String] + field48972: [String] +} + +type Object9511 @Directive21(argument61 : "stringValue41108") @Directive44(argument97 : ["stringValue41107"]) { + field48974: String + field48975: String + field48976: String + field48977: String +} + +type Object9512 @Directive21(argument61 : "stringValue41110") @Directive44(argument97 : ["stringValue41109"]) { + field48982: Scalar2 + field48983: Float + field48984: Float +} + +type Object9513 @Directive21(argument61 : "stringValue41112") @Directive44(argument97 : ["stringValue41111"]) { + field48987: Int + field48988: Int + field48989: Boolean + field48990: String + field48991: String + field48992: Scalar2 + field48993: Scalar2 + field48994: Scalar2 + field48995: Scalar2 + field48996: Scalar2 + field48997: Scalar2 @deprecated + field48998: Scalar2 @deprecated + field48999: Scalar2 @deprecated + field49000: Boolean @deprecated + field49001: Int @deprecated +} + +type Object9514 @Directive21(argument61 : "stringValue41114") @Directive44(argument97 : ["stringValue41113"]) { + field49010: Scalar2 + field49011: Boolean + field49012: String + field49013: String + field49014: [Object9515] +} + +type Object9515 @Directive21(argument61 : "stringValue41116") @Directive44(argument97 : ["stringValue41115"]) { + field49015: Scalar2 + field49016: String + field49017: String + field49018: String + field49019: String + field49020: String + field49021: String + field49022: String + field49023: String +} + +type Object9516 @Directive21(argument61 : "stringValue41118") @Directive44(argument97 : ["stringValue41117"]) { + field49026: [String] + field49027: [Object9517] + field49031: Int + field49032: String + field49033: Int +} + +type Object9517 @Directive21(argument61 : "stringValue41120") @Directive44(argument97 : ["stringValue41119"]) { + field49028: Boolean + field49029: String + field49030: String +} + +type Object9518 @Directive21(argument61 : "stringValue41122") @Directive44(argument97 : ["stringValue41121"]) { + field49035: Scalar2 + field49036: Int @deprecated + field49037: Int @deprecated + field49038: Scalar2 + field49039: Scalar2 +} + +type Object9519 @Directive21(argument61 : "stringValue41124") @Directive44(argument97 : ["stringValue41123"]) { + field49041: Boolean + field49042: Boolean + field49043: Boolean + field49044: Boolean + field49045: Boolean + field49046: Boolean + field49047: Boolean + field49048: Boolean + field49049: Boolean + field49050: Boolean + field49051: Boolean + field49052: Boolean + field49053: Boolean + field49054: Boolean + field49055: Boolean + field49056: Boolean + field49057: Int +} + +type Object952 @Directive20(argument58 : "stringValue4906", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4907") @Directive31 @Directive44(argument97 : ["stringValue4908", "stringValue4909"]) { + field5549: Object596 + field5550: Object596 +} + +type Object9520 @Directive21(argument61 : "stringValue41126") @Directive44(argument97 : ["stringValue41125"]) { + field49059: Boolean + field49060: Boolean + field49061: Boolean + field49062: Boolean + field49063: Boolean + field49064: Boolean @deprecated + field49065: Boolean + field49066: Boolean @deprecated + field49067: Boolean + field49068: Boolean @deprecated + field49069: Boolean + field49070: Boolean @deprecated + field49071: Boolean + field49072: Boolean + field49073: Boolean + field49074: Boolean + field49075: Boolean @deprecated + field49076: Boolean + field49077: Boolean + field49078: Boolean @deprecated + field49079: Boolean + field49080: Boolean + field49081: Boolean + field49082: Boolean + field49083: Boolean @deprecated + field49084: Boolean @deprecated + field49085: Boolean + field49086: Boolean + field49087: Boolean @deprecated + field49088: Boolean @deprecated + field49089: Boolean @deprecated + field49090: Boolean @deprecated + field49091: Boolean @deprecated + field49092: Boolean @deprecated + field49093: Boolean + field49094: Boolean + field49095: Boolean + field49096: Boolean +} + +type Object9521 @Directive21(argument61 : "stringValue41128") @Directive44(argument97 : ["stringValue41127"]) { + field49098: Int + field49099: Boolean + field49100: String + field49101: Int + field49102: Int @deprecated + field49103: String + field49104: String + field49105: Int + field49106: Boolean + field49107: String + field49108: Scalar2 +} + +type Object9522 @Directive21(argument61 : "stringValue41130") @Directive44(argument97 : ["stringValue41129"]) { + field49110: Int + field49111: String + field49112: String +} + +type Object9523 @Directive21(argument61 : "stringValue41132") @Directive44(argument97 : ["stringValue41131"]) { + field49115: Scalar2 + field49116: String + field49117: String + field49118: Boolean +} + +type Object9524 @Directive21(argument61 : "stringValue41134") @Directive44(argument97 : ["stringValue41133"]) { + field49120: String + field49121: String + field49122: String + field49123: [String] + field49124: String + field49125: [Object9525] + field49129: Int + field49130: String + field49131: Scalar1 +} + +type Object9525 @Directive21(argument61 : "stringValue41136") @Directive44(argument97 : ["stringValue41135"]) { + field49126: String + field49127: String + field49128: String +} + +type Object9526 @Directive21(argument61 : "stringValue41138") @Directive44(argument97 : ["stringValue41137"]) { + field49133: Scalar2 + field49134: String + field49135: String + field49136: String + field49137: String + field49138: String + field49139: Int + field49140: Int +} + +type Object9527 @Directive21(argument61 : "stringValue41140") @Directive44(argument97 : ["stringValue41139"]) { + field49142: Boolean + field49143: String + field49144: Boolean +} + +type Object9528 @Directive21(argument61 : "stringValue41142") @Directive44(argument97 : ["stringValue41141"]) { + field49146: Boolean + field49147: Boolean + field49148: [Object9529] +} + +type Object9529 @Directive21(argument61 : "stringValue41144") @Directive44(argument97 : ["stringValue41143"]) { + field49149: Scalar2! + field49150: Scalar2! + field49151: Scalar2! + field49152: Scalar2! + field49153: Scalar2 +} + +type Object953 @Directive20(argument58 : "stringValue4911", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4910") @Directive31 @Directive44(argument97 : ["stringValue4912", "stringValue4913"]) { + field5554: String + field5555: Enum277 + field5556: Enum278 +} + +type Object9530 @Directive21(argument61 : "stringValue41146") @Directive44(argument97 : ["stringValue41145"]) { + field49156: Scalar2 + field49157: String + field49158: String + field49159: String + field49160: Scalar1 +} + +type Object9531 @Directive21(argument61 : "stringValue41148") @Directive44(argument97 : ["stringValue41147"]) { + field49162: Boolean! + field49163: [String] + field49164: Scalar2 + field49165: Int +} + +type Object9532 @Directive21(argument61 : "stringValue41150") @Directive44(argument97 : ["stringValue41149"]) { + field49167: Scalar2 + field49168: Scalar2 + field49169: Int +} + +type Object9533 @Directive21(argument61 : "stringValue41152") @Directive44(argument97 : ["stringValue41151"]) { + field49171: String + field49172: String + field49173: String + field49174: String + field49175: String + field49176: String + field49177: String +} + +type Object9534 @Directive21(argument61 : "stringValue41154") @Directive44(argument97 : ["stringValue41153"]) { + field49181: Scalar2 + field49182: Scalar2 + field49183: String + field49184: String + field49185: String + field49186: String + field49187: String + field49188: String + field49189: Int +} + +type Object9535 @Directive21(argument61 : "stringValue41156") @Directive44(argument97 : ["stringValue41155"]) { + field49191: Object9536 + field49201: Object9537 +} + +type Object9536 @Directive21(argument61 : "stringValue41158") @Directive44(argument97 : ["stringValue41157"]) { + field49192: Scalar2 + field49193: Scalar2 + field49194: Scalar4 + field49195: Scalar4 + field49196: Scalar2 + field49197: String + field49198: Scalar4 + field49199: Scalar2 + field49200: Scalar2 +} + +type Object9537 @Directive21(argument61 : "stringValue41160") @Directive44(argument97 : ["stringValue41159"]) { + field49202: Scalar2 + field49203: String + field49204: String + field49205: Scalar2 + field49206: Scalar2 + field49207: Scalar2 + field49208: Scalar2 + field49209: Boolean + field49210: Boolean + field49211: String + field49212: String + field49213: Scalar2 + field49214: Scalar4 + field49215: Scalar2 + field49216: Boolean + field49217: String + field49218: Scalar2 + field49219: Boolean + field49220: Scalar2 + field49221: String + field49222: Boolean + field49223: String + field49224: String + field49225: Enum2279 + field49226: Boolean + field49227: String + field49228: String + field49229: Object9538 + field49303: Object9549 + field49365: Enum2296 + field49366: [Object9572] @deprecated + field49404: Scalar4 + field49405: Object9579 + field49409: Object9580 + field49416: [Enum2297] + field49417: Boolean +} + +type Object9538 @Directive21(argument61 : "stringValue41163") @Directive44(argument97 : ["stringValue41162"]) { + field49230: Object9539 + field49253: Object9542 + field49272: Object9544 + field49276: Enum2287 + field49277: Object9545 + field49281: Object9546 + field49288: Object9547 + field49298: Object9548 +} + +type Object9539 @Directive21(argument61 : "stringValue41165") @Directive44(argument97 : ["stringValue41164"]) { + field49231: String + field49232: String + field49233: String + field49234: String + field49235: String + field49236: Enum2280 + field49237: String + field49238: String + field49239: String + field49240: Object9540 + field49248: Object9541 + field49251: Enum2282 + field49252: Enum2283 +} + +type Object954 @Directive20(argument58 : "stringValue4923", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4922") @Directive31 @Directive44(argument97 : ["stringValue4924", "stringValue4925"]) { + field5558: Object955 + field5561: String + field5562: Object898 + field5563: String + field5564: String + field5565: String + field5566: Enum279 + field5567: Enum271 + field5568: String + field5569: String + field5570: String @deprecated + field5571: Object899 @deprecated + field5572: String + field5573: String + field5574: Enum279 + field5575: Object899 + field5576: String + field5577: Object900 + field5578: Float + field5579: Object899 + field5580: [Object899] + field5581: String + field5582: Object398 + field5583: String + field5584: String + field5585: Enum279 + field5586: String @deprecated + field5587: String + field5588: String + field5589: Enum279 + field5590: Object914 + field5591: Object899 + field5592: Boolean +} + +type Object9540 @Directive21(argument61 : "stringValue41168") @Directive44(argument97 : ["stringValue41167"]) { + field49241: String! + field49242: String! + field49243: String! + field49244: String! + field49245: String! + field49246: Float + field49247: Float +} + +type Object9541 @Directive21(argument61 : "stringValue41170") @Directive44(argument97 : ["stringValue41169"]) { + field49249: Enum2281! + field49250: String +} + +type Object9542 @Directive21(argument61 : "stringValue41175") @Directive44(argument97 : ["stringValue41174"]) { + field49254: Boolean + field49255: Boolean + field49256: Boolean + field49257: Boolean + field49258: Boolean + field49259: Enum2280 + field49260: String + field49261: String + field49262: [Object9543] +} + +type Object9543 @Directive21(argument61 : "stringValue41177") @Directive44(argument97 : ["stringValue41176"]) { + field49263: Scalar2 + field49264: Scalar4 + field49265: Scalar4 + field49266: Scalar2 + field49267: String + field49268: Enum2284 + field49269: Enum2285 + field49270: String + field49271: Boolean +} + +type Object9544 @Directive21(argument61 : "stringValue41181") @Directive44(argument97 : ["stringValue41180"]) { + field49273: [Enum2286] + field49274: [String] + field49275: Enum2280 +} + +type Object9545 @Directive21(argument61 : "stringValue41185") @Directive44(argument97 : ["stringValue41184"]) { + field49278: String + field49279: Scalar1 + field49280: Enum2280 +} + +type Object9546 @Directive21(argument61 : "stringValue41187") @Directive44(argument97 : ["stringValue41186"]) { + field49282: Boolean + field49283: Boolean + field49284: Boolean + field49285: Boolean + field49286: String + field49287: Enum2280 +} + +type Object9547 @Directive21(argument61 : "stringValue41189") @Directive44(argument97 : ["stringValue41188"]) { + field49289: String + field49290: String + field49291: String + field49292: String + field49293: String + field49294: String + field49295: String + field49296: String + field49297: Enum2280 +} + +type Object9548 @Directive21(argument61 : "stringValue41191") @Directive44(argument97 : ["stringValue41190"]) { + field49299: String + field49300: String + field49301: String + field49302: Enum2280 +} + +type Object9549 @Directive21(argument61 : "stringValue41193") @Directive44(argument97 : ["stringValue41192"]) { + field49304: Object9550 + field49354: Enum2287 + field49355: Object9569 + field49361: Object9570 +} + +type Object955 @Directive20(argument58 : "stringValue4927", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4926") @Directive31 @Directive44(argument97 : ["stringValue4928", "stringValue4929"]) { + field5559: String + field5560: String +} + +type Object9550 @Directive21(argument61 : "stringValue41195") @Directive44(argument97 : ["stringValue41194"]) { + field49305: [Object9551] + field49333: Enum2280 + field49334: [Object9564] + field49342: Object9565 + field49352: Float + field49353: Float +} + +type Object9551 @Directive21(argument61 : "stringValue41197") @Directive44(argument97 : ["stringValue41196"]) { + field49306: Enum2288! + field49307: Enum2289! + field49308: Union316! + field49329: Enum2292! + field49330: Enum2293! + field49331: Boolean! + field49332: Scalar4 +} + +type Object9552 @Directive21(argument61 : "stringValue41202") @Directive44(argument97 : ["stringValue41201"]) { + field49309: [Object9553]! +} + +type Object9553 @Directive21(argument61 : "stringValue41204") @Directive44(argument97 : ["stringValue41203"]) { + field49310: Object9554! + field49312: Scalar2! +} + +type Object9554 @Directive21(argument61 : "stringValue41206") @Directive44(argument97 : ["stringValue41205"]) { + field49311: Int +} + +type Object9555 @Directive21(argument61 : "stringValue41208") @Directive44(argument97 : ["stringValue41207"]) { + field49313: Int! +} + +type Object9556 @Directive21(argument61 : "stringValue41210") @Directive44(argument97 : ["stringValue41209"]) { + field49314: Scalar2 +} + +type Object9557 @Directive21(argument61 : "stringValue41212") @Directive44(argument97 : ["stringValue41211"]) { + field49315: Float! + field49316: Int +} + +type Object9558 @Directive21(argument61 : "stringValue41214") @Directive44(argument97 : ["stringValue41213"]) { + field49317: [Object9559]! +} + +type Object9559 @Directive21(argument61 : "stringValue41216") @Directive44(argument97 : ["stringValue41215"]) { + field49318: Object9560! + field49322: Object9554! + field49323: Scalar2! +} + +type Object956 @Directive20(argument58 : "stringValue4935", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4934") @Directive31 @Directive44(argument97 : ["stringValue4936", "stringValue4937"]) { + field5594: Object957 + field5616: String + field5617: Interface3 +} + +type Object9560 @Directive21(argument61 : "stringValue41218") @Directive44(argument97 : ["stringValue41217"]) { + field49319: Int! + field49320: Int! + field49321: Enum2290! +} + +type Object9561 @Directive21(argument61 : "stringValue41221") @Directive44(argument97 : ["stringValue41220"]) { + field49324: [Object9562]! +} + +type Object9562 @Directive21(argument61 : "stringValue41223") @Directive44(argument97 : ["stringValue41222"]) { + field49325: Object9560! + field49326: Scalar2! +} + +type Object9563 @Directive21(argument61 : "stringValue41225") @Directive44(argument97 : ["stringValue41224"]) { + field49327: Enum2291! + field49328: Scalar2! +} + +type Object9564 @Directive21(argument61 : "stringValue41230") @Directive44(argument97 : ["stringValue41229"]) { + field49335: Float! + field49336: String! + field49337: Boolean! + field49338: String! + field49339: String! + field49340: String! + field49341: Int +} + +type Object9565 @Directive21(argument61 : "stringValue41232") @Directive44(argument97 : ["stringValue41231"]) { + field49343: Object9566 + field49351: Boolean +} + +type Object9566 @Directive21(argument61 : "stringValue41234") @Directive44(argument97 : ["stringValue41233"]) { + field49344: Object9567! + field49348: Object9568! +} + +type Object9567 @Directive21(argument61 : "stringValue41236") @Directive44(argument97 : ["stringValue41235"]) { + field49345: Enum2294! + field49346: Scalar2 + field49347: Float +} + +type Object9568 @Directive21(argument61 : "stringValue41239") @Directive44(argument97 : ["stringValue41238"]) { + field49349: Enum2295! + field49350: Scalar2! +} + +type Object9569 @Directive21(argument61 : "stringValue41242") @Directive44(argument97 : ["stringValue41241"]) { + field49356: Int + field49357: Int + field49358: Int + field49359: Int + field49360: Enum2280 +} + +type Object957 @Directive20(argument58 : "stringValue4939", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4938") @Directive31 @Directive44(argument97 : ["stringValue4940", "stringValue4941"]) { + field5595: Object958 + field5614: Object958 + field5615: Object958 +} + +type Object9570 @Directive21(argument61 : "stringValue41244") @Directive44(argument97 : ["stringValue41243"]) { + field49362: [Object9571] + field49364: Enum2280 +} + +type Object9571 @Directive21(argument61 : "stringValue41246") @Directive44(argument97 : ["stringValue41245"]) { + field49363: Scalar2 +} + +type Object9572 @Directive21(argument61 : "stringValue41249") @Directive44(argument97 : ["stringValue41248"]) { + field49367: Scalar2 + field49368: String! + field49369: Scalar2! + field49370: Scalar2! + field49371: Float! + field49372: Scalar2! + field49373: String! + field49374: Object9573 + field49397: Object9577 + field49402: Scalar4 + field49403: Scalar4 +} + +type Object9573 @Directive21(argument61 : "stringValue41251") @Directive44(argument97 : ["stringValue41250"]) { + field49375: Object9574 + field49382: Object9575 + field49386: Object9576 + field49394: Enum2287 + field49395: Object9545 + field49396: Object9547 +} + +type Object9574 @Directive21(argument61 : "stringValue41253") @Directive44(argument97 : ["stringValue41252"]) { + field49376: String + field49377: String + field49378: String + field49379: String + field49380: Enum2280 + field49381: String +} + +type Object9575 @Directive21(argument61 : "stringValue41255") @Directive44(argument97 : ["stringValue41254"]) { + field49383: [Enum2286] + field49384: [String] + field49385: Enum2280 +} + +type Object9576 @Directive21(argument61 : "stringValue41257") @Directive44(argument97 : ["stringValue41256"]) { + field49387: Int + field49388: Int + field49389: Float + field49390: String + field49391: Int + field49392: Int + field49393: Enum2280 +} + +type Object9577 @Directive21(argument61 : "stringValue41259") @Directive44(argument97 : ["stringValue41258"]) { + field49398: Object9578 + field49401: Enum2287 +} + +type Object9578 @Directive21(argument61 : "stringValue41261") @Directive44(argument97 : ["stringValue41260"]) { + field49399: [Object9551] + field49400: Enum2280 +} + +type Object9579 @Directive21(argument61 : "stringValue41263") @Directive44(argument97 : ["stringValue41262"]) { + field49406: Int + field49407: Int + field49408: Scalar1 +} + +type Object958 @Directive20(argument58 : "stringValue4943", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4942") @Directive31 @Directive44(argument97 : ["stringValue4944", "stringValue4945"]) { + field5596: Object596 + field5597: Object596 + field5598: Object596 + field5599: Object596 + field5600: Object959 + field5607: Object597 + field5608: Object576 + field5609: Object577 + field5610: Object961 +} + +type Object9580 @Directive21(argument61 : "stringValue41265") @Directive44(argument97 : ["stringValue41264"]) { + field49410: Int! + field49411: Scalar3! + field49412: Int! + field49413: Int! + field49414: Int + field49415: Scalar2! +} + +type Object9581 @Directive21(argument61 : "stringValue41268") @Directive44(argument97 : ["stringValue41267"]) { + field49422: Object9582 @deprecated + field49430: Boolean +} + +type Object9582 @Directive21(argument61 : "stringValue41270") @Directive44(argument97 : ["stringValue41269"]) { + field49423: Scalar2 + field49424: Scalar2 + field49425: String + field49426: String + field49427: String + field49428: Object9502 + field49429: String +} + +type Object9583 @Directive21(argument61 : "stringValue41276") @Directive44(argument97 : ["stringValue41275"]) { + field49432: Scalar2 @deprecated + field49433: Scalar2 + field49434: Scalar1 + field49435: [Object9488] + field49436: [String] + field49437: Scalar1 + field49438: [[Union312]] + field49439: Scalar2 + field49440: Object9500 + field49441: Scalar1 + field49442: [Object9504] + field49443: Scalar1 + field49444: [[Union315]] + field49445: [[Union315]] + field49446: Scalar1 + field49447: [String] + field49448: [String] + field49449: Boolean + field49450: [String] + field49451: [[String]] + field49452: Object9508 + field49453: [[Union315]] + field49454: Scalar1 + field49455: Scalar2 + field49456: String + field49457: String + field49458: Scalar1 + field49459: Scalar1 + field49460: Boolean + field49461: [[Union315]] + field49462: [[Union315]] + field49463: Object5570 + field49464: Object9512 + field49465: String + field49466: Scalar1 + field49467: [Object9482] + field49468: Object9494 + field49469: Scalar1 + field49470: Object9490 + field49471: Object9520 + field49472: [Object9522] + field49473: String + field49474: [Object9521] + field49475: Object9519 + field49476: [Object9523] @deprecated + field49477: [Object9514] @deprecated + field49478: Object9501 + field49479: Object9503 + field49480: [[Object9524]] + field49481: [Object9516] + field49482: Object9584 + field49496: [Object9526] @deprecated + field49497: Object9527 + field49498: Object9528 + field49499: Scalar1 + field49500: Object9507 + field49501: [Object9530] + field49502: Object9531 + field49503: Object9532 @deprecated + field49504: [Object9533] @deprecated + field49505: [Object9506] + field49506: [Object9534] + field49507: Boolean + field49508: Object9535 + field49509: Boolean +} + +type Object9584 @Directive21(argument61 : "stringValue41278") @Directive44(argument97 : ["stringValue41277"]) { + field49483: String + field49484: String + field49485: String + field49486: Boolean + field49487: Int + field49488: String + field49489: Int + field49490: String + field49491: String + field49492: Int + field49493: Float + field49494: String + field49495: [String] +} + +type Object9585 @Directive21(argument61 : "stringValue41285") @Directive44(argument97 : ["stringValue41284"]) { + field49511: Object9586 +} + +type Object9586 @Directive21(argument61 : "stringValue41287") @Directive44(argument97 : ["stringValue41286"]) { + field49512: Scalar1 + field49513: [String] + field49514: Scalar1 + field49515: [String] + field49516: [String] + field49517: Scalar1 + field49518: [Object9506] + field49519: [[Union312]] + field49520: [[Union315]] + field49521: [[Union315]] + field49522: Scalar1 + field49523: [String] + field49524: [[String]] + field49525: Object9508 + field49526: [[Union315]] + field49527: [[Union315]] + field49528: [Object9522] + field49529: Scalar1 + field49530: [Object9504] + field49531: [Object9587] +} + +type Object9587 @Directive21(argument61 : "stringValue41289") @Directive44(argument97 : ["stringValue41288"]) { + field49532: String + field49533: String + field49534: [Object9524] +} + +type Object9588 @Directive21(argument61 : "stringValue41295") @Directive44(argument97 : ["stringValue41294"]) { + field49536: Scalar1 +} + +type Object9589 @Directive44(argument97 : ["stringValue41296"]) { + field49538(argument2345: InputObject1920!): Object9590 @Directive35(argument89 : "stringValue41298", argument90 : false, argument91 : "stringValue41297", argument92 : 852, argument93 : "stringValue41299", argument94 : false) + field50444(argument2346: InputObject1921!): Object9706 @Directive35(argument89 : "stringValue41550", argument90 : false, argument91 : "stringValue41549", argument92 : 853, argument93 : "stringValue41551", argument94 : false) + field50616(argument2347: InputObject1922!): Object9720 @Directive35(argument89 : "stringValue41582", argument90 : false, argument91 : "stringValue41581", argument92 : 854, argument93 : "stringValue41583", argument94 : false) + field51160(argument2348: InputObject1923!): Object9818 @Directive35(argument89 : "stringValue41812", argument90 : false, argument91 : "stringValue41811", argument92 : 855, argument93 : "stringValue41813", argument94 : false) + field51192(argument2349: InputObject1922!): Object9825 @Directive35(argument89 : "stringValue41830", argument90 : false, argument91 : "stringValue41829", argument92 : 856, argument93 : "stringValue41831", argument94 : false) + field51195(argument2350: InputObject1924!): Object9826 @Directive35(argument89 : "stringValue41835", argument90 : false, argument91 : "stringValue41834", argument92 : 857, argument93 : "stringValue41836", argument94 : false) + field51715(argument2351: InputObject1925!): Object9889 @Directive35(argument89 : "stringValue41983", argument90 : false, argument91 : "stringValue41982", argument92 : 858, argument93 : "stringValue41984", argument94 : false) + field51773(argument2352: InputObject1926!): Object9908 @Directive35(argument89 : "stringValue42029", argument90 : false, argument91 : "stringValue42028", argument92 : 859, argument93 : "stringValue42030", argument94 : false) + field51783(argument2353: InputObject1927!): Object9910 @Directive35(argument89 : "stringValue42038", argument90 : false, argument91 : "stringValue42037", argument92 : 860, argument93 : "stringValue42039", argument94 : false) +} + +type Object959 @Directive20(argument58 : "stringValue4947", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4946") @Directive31 @Directive44(argument97 : ["stringValue4948", "stringValue4949"]) { + field5601: Enum280 + field5602: Object595 + field5603: Object960 + field5606: Object598 +} + +type Object9590 @Directive21(argument61 : "stringValue41302") @Directive44(argument97 : ["stringValue41301"]) { + field49539: [Object9591]! + field49552: [Object9593]! + field49564: [Object9593]! + field49565: String + field49566: String! + field49567: String! + field49568: String! + field49569: String! + field49570: [Object9595] + field49578: Scalar2! + field49579: [Object9596] + field49584: [Object9597]! + field49591: String + field49592: String + field49593: String + field49594: String + field49595: Int! + field49596: [Object9599]! + field49618: Object9600! + field49647: Object9603 + field49735: String + field49736: String! + field49737: Object9614 + field49752: Float + field49753: Int! + field49754: Object9615! + field49759: String + field49760: String + field49761: Object9616! + field49780: String + field49781: Int + field49782: String! + field49783: String + field49784: Boolean! + field49785: Boolean! + field49786: Boolean! + field49787: [Object9618] + field49794: Object9619 + field49799: [Object9620]! + field49860: [Object9624]! + field49866: Object9614 + field49867: String + field49868: String + field49869: String + field49870: String + field49871: [Object9596] + field49872: String + field49873: Object9625 + field49890: String + field49891: Boolean + field49892: Object9625 + field49893: Float + field49894: Float + field49895: String! + field49896: Scalar2 + field49897: Object9626! + field49929: [Scalar2]! + field49930: Object9627 + field49947: Object9628 + field49950: String + field49951: [Object9629]! + field49955: [Object9629]! + field49956: Boolean! + field49957: Boolean + field49958: Boolean + field49959: Boolean + field49960: Boolean + field49961: Boolean! + field49962: Object9630! + field49984: [Object9604]! + field49985: Int! + field49986: Object9621 + field49987: String + field49988: String + field49989: Boolean! + field49990: Object9635 + field50000: [String]! + field50001: String + field50002: Scalar2! + field50003: [String]! + field50004: [Int]! + field50005: [Object9638] + field50009: [Object9638] + field50010: String + field50011: Object9639 + field50055: [Object9645] + field50061: Object9646 + field50069: Object9648 + field50075: String! + field50076: Object9621 + field50077: Boolean + field50078: Boolean + field50079: Object9649 + field50085: Boolean + field50086: String + field50087: [Object9650] + field50099: Boolean + field50100: Scalar1 + field50101: Object9651 + field50107: String + field50108: [Object9652] + field50111: Scalar1 + field50112: Scalar1 + field50113: Object9653 + field50133: Enum2309! + field50134: [Object9655] + field50139: [Object9624]! + field50140: Object9656 + field50148: Object9659 + field50162: Boolean + field50163: Object9663 + field50166: Object9664 + field50171: Object9665 + field50173: Object9666 + field50176: Object9667 + field50180: Object9668 + field50188: Object9670 + field50191: Object9671 + field50207: Object9673 + field50214: Object9675 + field50216: Object9676 + field50222: Object9677 + field50243: [Object9680] + field50246: [Union318] + field50410: Object9701 + field50414: String + field50415: Object9702 + field50418: Object9703 +} + +type Object9591 @Directive21(argument61 : "stringValue41304") @Directive44(argument97 : ["stringValue41303"]) { + field49540: String + field49541: String + field49542: Scalar2! + field49543: Boolean! + field49544: Boolean! + field49545: Boolean! + field49546: String! + field49547: Object9592 + field49549: Object9592 + field49550: String! + field49551: String +} + +type Object9592 @Directive21(argument61 : "stringValue41306") @Directive44(argument97 : ["stringValue41305"]) { + field49548: String +} + +type Object9593 @Directive21(argument61 : "stringValue41308") @Directive44(argument97 : ["stringValue41307"]) { + field49553: String! + field49554: String! + field49555: String! + field49556: [Int]! + field49557: [Object9594] +} + +type Object9594 @Directive21(argument61 : "stringValue41310") @Directive44(argument97 : ["stringValue41309"]) { + field49558: Scalar2 + field49559: String + field49560: String + field49561: String + field49562: String + field49563: String +} + +type Object9595 @Directive21(argument61 : "stringValue41312") @Directive44(argument97 : ["stringValue41311"]) { + field49571: String! + field49572: String! + field49573: String! + field49574: String! + field49575: String + field49576: String + field49577: String +} + +type Object9596 @Directive21(argument61 : "stringValue41314") @Directive44(argument97 : ["stringValue41313"]) { + field49580: String + field49581: String! + field49582: String! + field49583: String +} + +type Object9597 @Directive21(argument61 : "stringValue41316") @Directive44(argument97 : ["stringValue41315"]) { + field49585: [Object9598]! + field49589: Scalar2! + field49590: Int! +} + +type Object9598 @Directive21(argument61 : "stringValue41318") @Directive44(argument97 : ["stringValue41317"]) { + field49586: String! + field49587: Int! + field49588: String! +} + +type Object9599 @Directive21(argument61 : "stringValue41320") @Directive44(argument97 : ["stringValue41319"]) { + field49597: String! + field49598: Scalar2! + field49599: Boolean! + field49600: String! + field49601: String! + field49602: String! + field49603: String! + field49604: String! + field49605: String! + field49606: String! + field49607: Int! + field49608: String! + field49609: String! + field49610: String! + field49611: String! + field49612: String! + field49613: String! + field49614: String! + field49615: String! + field49616: Enum593 + field49617: Float +} + +type Object96 @Directive21(argument61 : "stringValue377") @Directive44(argument97 : ["stringValue376"]) { + field647: String + field648: String + field649: String +} + +type Object960 @Directive20(argument58 : "stringValue4955", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4954") @Directive31 @Directive44(argument97 : ["stringValue4956", "stringValue4957"]) { + field5604: Object597 + field5605: Object597 +} + +type Object9600 @Directive21(argument61 : "stringValue41322") @Directive44(argument97 : ["stringValue41321"]) { + field49619: String! + field49620: [Object9601] + field49627: String! + field49628: Scalar2! + field49629: Boolean! + field49630: Boolean! + field49631: [String]! + field49632: String + field49633: String + field49634: String! + field49635: String! + field49636: String! + field49637: String! + field49638: String + field49639: String + field49640: String! + field49641: Object9602 + field49644: Boolean + field49645: String + field49646: [String] +} + +type Object9601 @Directive21(argument61 : "stringValue41324") @Directive44(argument97 : ["stringValue41323"]) { + field49621: Int + field49622: String + field49623: String + field49624: String + field49625: String + field49626: String +} + +type Object9602 @Directive21(argument61 : "stringValue41326") @Directive44(argument97 : ["stringValue41325"]) { + field49642: String! + field49643: Scalar2! +} + +type Object9603 @Directive21(argument61 : "stringValue41328") @Directive44(argument97 : ["stringValue41327"]) { + field49648: [Object9604] + field49733: String! + field49734: String! +} + +type Object9604 @Directive21(argument61 : "stringValue41330") @Directive44(argument97 : ["stringValue41329"]) { + field49649: String! + field49650: Scalar2! + field49651: String + field49652: Scalar4 + field49653: String + field49654: Object9605! + field49664: Object9605! + field49665: String! + field49666: String + field49667: Int + field49668: Object9606 + field49674: [Object9607] + field49677: String + field49678: String + field49679: Object2949 + field49680: Object9608 + field49727: String + field49728: Object9608 + field49729: Int + field49730: Enum2305 + field49731: [Object9608!] + field49732: [Interface129!] +} + +type Object9605 @Directive21(argument61 : "stringValue41332") @Directive44(argument97 : ["stringValue41331"]) { + field49655: Boolean! + field49656: String! + field49657: String! + field49658: Scalar2! + field49659: String @deprecated + field49660: String! @deprecated + field49661: Boolean + field49662: [Interface129!] + field49663: Interface129 +} + +type Object9606 @Directive21(argument61 : "stringValue41334") @Directive44(argument97 : ["stringValue41333"]) { + field49669: String! + field49670: String! + field49671: String! + field49672: Boolean! + field49673: String +} + +type Object9607 @Directive21(argument61 : "stringValue41336") @Directive44(argument97 : ["stringValue41335"]) { + field49675: String! + field49676: Boolean! +} + +type Object9608 @Directive21(argument61 : "stringValue41338") @Directive44(argument97 : ["stringValue41337"]) { + field49681: String + field49682: String + field49683: Enum602 + field49684: String + field49685: Object2967 @deprecated + field49686: Object2949 @deprecated + field49687: String + field49688: Union317 @deprecated + field49691: String + field49692: String + field49693: Object9610 + field49721: Interface127 + field49722: Interface129 + field49723: Object9611 + field49724: Object9612 + field49725: Object9612 + field49726: Object9612 +} + +type Object9609 @Directive21(argument61 : "stringValue41341") @Directive44(argument97 : ["stringValue41340"]) { + field49689: String! + field49690: String +} + +type Object961 @Directive20(argument58 : "stringValue4959", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4958") @Directive31 @Directive44(argument97 : ["stringValue4960", "stringValue4961"]) { + field5611: Object959 + field5612: Object962 +} + +type Object9610 @Directive21(argument61 : "stringValue41343") @Directive44(argument97 : ["stringValue41342"]) { + field49694: String + field49695: Int + field49696: Object9611 + field49707: Boolean + field49708: Object9612 + field49720: Int +} + +type Object9611 @Directive21(argument61 : "stringValue41345") @Directive44(argument97 : ["stringValue41344"]) { + field49697: String + field49698: Enum602 + field49699: Enum2299 + field49700: String + field49701: String + field49702: Enum2300 + field49703: Object2949 @deprecated + field49704: Union317 @deprecated + field49705: Object2962 @deprecated + field49706: Interface127 +} + +type Object9612 @Directive21(argument61 : "stringValue41349") @Directive44(argument97 : ["stringValue41348"]) { + field49709: Object2959 + field49710: Object9613 + field49718: Scalar5 + field49719: Enum2304 +} + +type Object9613 @Directive21(argument61 : "stringValue41351") @Directive44(argument97 : ["stringValue41350"]) { + field49711: Enum2301 + field49712: Enum2302 + field49713: Enum2303 + field49714: Scalar5 + field49715: Scalar5 + field49716: Float + field49717: Float +} + +type Object9614 @Directive21(argument61 : "stringValue41358") @Directive44(argument97 : ["stringValue41357"]) { + field49738: String + field49739: String + field49740: String + field49741: [String] + field49742: String + field49743: String + field49744: String + field49745: String + field49746: String + field49747: String + field49748: String + field49749: String + field49750: String + field49751: String +} + +type Object9615 @Directive21(argument61 : "stringValue41360") @Directive44(argument97 : ["stringValue41359"]) { + field49755: Scalar2! + field49756: String! + field49757: String! + field49758: String! +} + +type Object9616 @Directive21(argument61 : "stringValue41362") @Directive44(argument97 : ["stringValue41361"]) { + field49762: Boolean! + field49763: Boolean! + field49764: Boolean! + field49765: Boolean! + field49766: Boolean! + field49767: Scalar2! + field49768: String! + field49769: [Object9617] + field49776: [String]! + field49777: [String]! + field49778: [Object9617]! + field49779: Boolean +} + +type Object9617 @Directive21(argument61 : "stringValue41364") @Directive44(argument97 : ["stringValue41363"]) { + field49770: String + field49771: String + field49772: String + field49773: String + field49774: String + field49775: String +} + +type Object9618 @Directive21(argument61 : "stringValue41366") @Directive44(argument97 : ["stringValue41365"]) { + field49788: String! + field49789: Scalar2! + field49790: String! + field49791: String! + field49792: String! + field49793: String! +} + +type Object9619 @Directive21(argument61 : "stringValue41368") @Directive44(argument97 : ["stringValue41367"]) { + field49795: String + field49796: Scalar2 + field49797: Scalar2 + field49798: String +} + +type Object962 @Directive20(argument58 : "stringValue4963", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4962") @Directive31 @Directive44(argument97 : ["stringValue4964", "stringValue4965"]) { + field5613: [Object596] +} + +type Object9620 @Directive21(argument61 : "stringValue41370") @Directive44(argument97 : ["stringValue41369"]) { + field49800: [Object9621]! + field49848: [String]! + field49849: [String]! + field49850: Boolean! + field49851: Scalar2! + field49852: String! + field49853: String! + field49854: [Object9621]! + field49855: Scalar2 + field49856: [Object9623]! + field49859: String +} + +type Object9621 @Directive21(argument61 : "stringValue41372") @Directive44(argument97 : ["stringValue41371"]) { + field49801: String + field49802: String + field49803: Scalar2 + field49804: String + field49805: Scalar2 + field49806: String + field49807: Scalar2 + field49808: String + field49809: Boolean + field49810: String + field49811: String + field49812: String + field49813: String + field49814: String + field49815: String + field49816: String + field49817: String + field49818: String + field49819: Boolean + field49820: String + field49821: String + field49822: String + field49823: Object9622 + field49846: Object9622 + field49847: Boolean +} + +type Object9622 @Directive21(argument61 : "stringValue41374") @Directive44(argument97 : ["stringValue41373"]) { + field49824: String + field49825: String + field49826: Scalar2 + field49827: String + field49828: Scalar2 + field49829: String + field49830: Scalar2 + field49831: String + field49832: Boolean + field49833: String + field49834: String + field49835: String + field49836: String + field49837: String + field49838: String + field49839: String + field49840: String + field49841: String + field49842: Boolean + field49843: String + field49844: String + field49845: Boolean +} + +type Object9623 @Directive21(argument61 : "stringValue41376") @Directive44(argument97 : ["stringValue41375"]) { + field49857: String! + field49858: String! +} + +type Object9624 @Directive21(argument61 : "stringValue41378") @Directive44(argument97 : ["stringValue41377"]) { + field49861: String! + field49862: String! + field49863: [Int]! + field49864: Enum2306! + field49865: String +} + +type Object9625 @Directive21(argument61 : "stringValue41381") @Directive44(argument97 : ["stringValue41380"]) { + field49874: String + field49875: String + field49876: String + field49877: String + field49878: String + field49879: [String] + field49880: Float + field49881: Float + field49882: String + field49883: String + field49884: String + field49885: String + field49886: String + field49887: String + field49888: String + field49889: Scalar2 +} + +type Object9626 @Directive21(argument61 : "stringValue41383") @Directive44(argument97 : ["stringValue41382"]) { + field49898: Int + field49899: [Int]! + field49900: String + field49901: Int + field49902: Int + field49903: Int + field49904: Int + field49905: String + field49906: Int + field49907: Int + field49908: Scalar2 + field49909: Boolean + field49910: Boolean + field49911: Float + field49912: Float + field49913: Int + field49914: String + field49915: Int + field49916: Int + field49917: Int + field49918: Int + field49919: Float + field49920: Float + field49921: String + field49922: Int + field49923: Int + field49924: Float + field49925: Int + field49926: Int + field49927: Int + field49928: Int +} + +type Object9627 @Directive21(argument61 : "stringValue41385") @Directive44(argument97 : ["stringValue41384"]) { + field49931: Scalar2! + field49932: Scalar2! + field49933: String! + field49934: String + field49935: String + field49936: String + field49937: String + field49938: String + field49939: String + field49940: String + field49941: String + field49942: String + field49943: String + field49944: String + field49945: String + field49946: String +} + +type Object9628 @Directive21(argument61 : "stringValue41387") @Directive44(argument97 : ["stringValue41386"]) { + field49948: Scalar2 + field49949: Boolean +} + +type Object9629 @Directive21(argument61 : "stringValue41389") @Directive44(argument97 : ["stringValue41388"]) { + field49952: String! + field49953: String! + field49954: String! +} + +type Object963 @Directive20(argument58 : "stringValue4969", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4970") @Directive31 @Directive44(argument97 : ["stringValue4971", "stringValue4972"]) { + field5619: Object964 + field5622: Object964 + field5623: Object964 +} + +type Object9630 @Directive21(argument61 : "stringValue41391") @Directive44(argument97 : ["stringValue41390"]) { + field49963: Boolean! + field49964: Int! + field49965: Int! + field49966: Int + field49967: [Object9631] + field49973: Object9632 + field49979: Int + field49980: [Object9634] +} + +type Object9631 @Directive21(argument61 : "stringValue41393") @Directive44(argument97 : ["stringValue41392"]) { + field49968: String! + field49969: Int + field49970: String! + field49971: String + field49972: Float +} + +type Object9632 @Directive21(argument61 : "stringValue41395") @Directive44(argument97 : ["stringValue41394"]) { + field49974: [Object9633] + field49978: Enum2307 +} + +type Object9633 @Directive21(argument61 : "stringValue41397") @Directive44(argument97 : ["stringValue41396"]) { + field49975: Enum2307 + field49976: String + field49977: String +} + +type Object9634 @Directive21(argument61 : "stringValue41400") @Directive44(argument97 : ["stringValue41399"]) { + field49981: String! + field49982: Int + field49983: String +} + +type Object9635 @Directive21(argument61 : "stringValue41402") @Directive44(argument97 : ["stringValue41401"]) { + field49991: [Object9636] +} + +type Object9636 @Directive21(argument61 : "stringValue41404") @Directive44(argument97 : ["stringValue41403"]) { + field49992: Scalar2! + field49993: String! + field49994: [Object9637] +} + +type Object9637 @Directive21(argument61 : "stringValue41406") @Directive44(argument97 : ["stringValue41405"]) { + field49995: [Object9621]! + field49996: [String]! + field49997: Scalar2! + field49998: String! + field49999: [Object9621]! +} + +type Object9638 @Directive21(argument61 : "stringValue41408") @Directive44(argument97 : ["stringValue41407"]) { + field50006: String! + field50007: String! + field50008: String! +} + +type Object9639 @Directive21(argument61 : "stringValue41410") @Directive44(argument97 : ["stringValue41409"]) { + field50012: String! + field50013: String! + field50014: String! + field50015: String! + field50016: String! + field50017: String! + field50018: [Object9638] + field50019: [Object9640] + field50023: [Object9638] + field50024: Object9641! + field50035: [Object9642] + field50039: String + field50040: String! + field50041: Object9643! + field50047: Boolean + field50048: [Object9644] + field50052: String + field50053: Boolean + field50054: [String] +} + +type Object964 @Directive20(argument58 : "stringValue4973", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4974") @Directive31 @Directive44(argument97 : ["stringValue4975", "stringValue4976"]) { + field5620: Float + field5621: Float +} + +type Object9640 @Directive21(argument61 : "stringValue41412") @Directive44(argument97 : ["stringValue41411"]) { + field50020: String! + field50021: String! + field50022: Boolean! +} + +type Object9641 @Directive21(argument61 : "stringValue41414") @Directive44(argument97 : ["stringValue41413"]) { + field50025: String + field50026: String + field50027: String! + field50028: String! + field50029: String + field50030: String + field50031: String + field50032: String + field50033: String + field50034: String +} + +type Object9642 @Directive21(argument61 : "stringValue41416") @Directive44(argument97 : ["stringValue41415"]) { + field50036: Scalar2! + field50037: String! + field50038: String! +} + +type Object9643 @Directive21(argument61 : "stringValue41418") @Directive44(argument97 : ["stringValue41417"]) { + field50042: String + field50043: String + field50044: String + field50045: String + field50046: String +} + +type Object9644 @Directive21(argument61 : "stringValue41420") @Directive44(argument97 : ["stringValue41419"]) { + field50049: String! + field50050: String! + field50051: String! +} + +type Object9645 @Directive21(argument61 : "stringValue41422") @Directive44(argument97 : ["stringValue41421"]) { + field50056: String + field50057: String + field50058: String + field50059: String + field50060: String +} + +type Object9646 @Directive21(argument61 : "stringValue41424") @Directive44(argument97 : ["stringValue41423"]) { + field50062: [Object9647]! + field50067: String! + field50068: String! +} + +type Object9647 @Directive21(argument61 : "stringValue41426") @Directive44(argument97 : ["stringValue41425"]) { + field50063: String! + field50064: String! + field50065: String! + field50066: String! +} + +type Object9648 @Directive21(argument61 : "stringValue41428") @Directive44(argument97 : ["stringValue41427"]) { + field50070: String! + field50071: String! + field50072: String! + field50073: String! + field50074: [String]! +} + +type Object9649 @Directive21(argument61 : "stringValue41430") @Directive44(argument97 : ["stringValue41429"]) { + field50080: [Object9591]! + field50081: [String]! + field50082: [Object9593]! + field50083: String + field50084: String +} + +type Object965 @Directive20(argument58 : "stringValue4978", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4977") @Directive31 @Directive44(argument97 : ["stringValue4979", "stringValue4980"]) { + field5625: Object966 + field5632: Object966 + field5633: Object966 +} + +type Object9650 @Directive21(argument61 : "stringValue41432") @Directive44(argument97 : ["stringValue41431"]) { + field50088: String + field50089: [String] + field50090: String + field50091: String + field50092: String + field50093: [String] + field50094: String + field50095: Scalar2 + field50096: Boolean + field50097: Scalar2 + field50098: [String] +} + +type Object9651 @Directive21(argument61 : "stringValue41434") @Directive44(argument97 : ["stringValue41433"]) { + field50102: String! + field50103: Scalar3 + field50104: Scalar3 + field50105: Int + field50106: String +} + +type Object9652 @Directive21(argument61 : "stringValue41436") @Directive44(argument97 : ["stringValue41435"]) { + field50109: String + field50110: String +} + +type Object9653 @Directive21(argument61 : "stringValue41438") @Directive44(argument97 : ["stringValue41437"]) { + field50114: String + field50115: String + field50116: Object9654 + field50120: String + field50121: String + field50122: Scalar4 + field50123: Enum2308 + field50124: String + field50125: String + field50126: String + field50127: String + field50128: String + field50129: String + field50130: String + field50131: String + field50132: String +} + +type Object9654 @Directive21(argument61 : "stringValue41440") @Directive44(argument97 : ["stringValue41439"]) { + field50117: Float! + field50118: String! + field50119: Scalar2 +} + +type Object9655 @Directive21(argument61 : "stringValue41444") @Directive44(argument97 : ["stringValue41443"]) { + field50135: String + field50136: Enum2310 + field50137: String + field50138: String +} + +type Object9656 @Directive21(argument61 : "stringValue41447") @Directive44(argument97 : ["stringValue41446"]) { + field50141: [String]! + field50142: Object9657 + field50145: Object9658 +} + +type Object9657 @Directive21(argument61 : "stringValue41449") @Directive44(argument97 : ["stringValue41448"]) { + field50143: String + field50144: String +} + +type Object9658 @Directive21(argument61 : "stringValue41451") @Directive44(argument97 : ["stringValue41450"]) { + field50146: String + field50147: String +} + +type Object9659 @Directive21(argument61 : "stringValue41453") @Directive44(argument97 : ["stringValue41452"]) { + field50149: Object9660 + field50161: Object9646 +} + +type Object966 @Directive20(argument58 : "stringValue4982", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4981") @Directive31 @Directive44(argument97 : ["stringValue4983", "stringValue4984"]) { + field5626: Object967 + field5629: Object967 + field5630: Object967 + field5631: Object967 +} + +type Object9660 @Directive21(argument61 : "stringValue41455") @Directive44(argument97 : ["stringValue41454"]) { + field50150: String + field50151: String + field50152: [Object9661] +} + +type Object9661 @Directive21(argument61 : "stringValue41457") @Directive44(argument97 : ["stringValue41456"]) { + field50153: String! + field50154: String + field50155: String + field50156: Object9662 +} + +type Object9662 @Directive21(argument61 : "stringValue41459") @Directive44(argument97 : ["stringValue41458"]) { + field50157: String! + field50158: String + field50159: String + field50160: String +} + +type Object9663 @Directive21(argument61 : "stringValue41461") @Directive44(argument97 : ["stringValue41460"]) { + field50164: String + field50165: String +} + +type Object9664 @Directive21(argument61 : "stringValue41463") @Directive44(argument97 : ["stringValue41462"]) { + field50167: String + field50168: String + field50169: String + field50170: String +} + +type Object9665 @Directive21(argument61 : "stringValue41465") @Directive44(argument97 : ["stringValue41464"]) { + field50172: String +} + +type Object9666 @Directive21(argument61 : "stringValue41467") @Directive44(argument97 : ["stringValue41466"]) { + field50174: String + field50175: [Object9620] +} + +type Object9667 @Directive21(argument61 : "stringValue41469") @Directive44(argument97 : ["stringValue41468"]) { + field50177: [String]! + field50178: Object9657 + field50179: Object9658 +} + +type Object9668 @Directive21(argument61 : "stringValue41471") @Directive44(argument97 : ["stringValue41470"]) { + field50181: Object9669 + field50187: Object9669 +} + +type Object9669 @Directive21(argument61 : "stringValue41473") @Directive44(argument97 : ["stringValue41472"]) { + field50182: String + field50183: String + field50184: String + field50185: String + field50186: String +} + +type Object967 @Directive20(argument58 : "stringValue4986", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4985") @Directive31 @Directive44(argument97 : ["stringValue4987", "stringValue4988"]) { + field5627: Enum281 + field5628: Float +} + +type Object9670 @Directive21(argument61 : "stringValue41475") @Directive44(argument97 : ["stringValue41474"]) { + field50189: String + field50190: String +} + +type Object9671 @Directive21(argument61 : "stringValue41477") @Directive44(argument97 : ["stringValue41476"]) { + field50192: [Object9617] + field50193: [Object9596] + field50194: String + field50195: [Object9596] + field50196: String + field50197: String + field50198: [Object9596] + field50199: [Object9672] +} + +type Object9672 @Directive21(argument61 : "stringValue41479") @Directive44(argument97 : ["stringValue41478"]) { + field50200: String + field50201: String + field50202: String + field50203: String + field50204: String + field50205: String + field50206: Int +} + +type Object9673 @Directive21(argument61 : "stringValue41481") @Directive44(argument97 : ["stringValue41480"]) { + field50208: String + field50209: [Object9674] + field50213: String +} + +type Object9674 @Directive21(argument61 : "stringValue41483") @Directive44(argument97 : ["stringValue41482"]) { + field50210: String + field50211: String + field50212: String +} + +type Object9675 @Directive21(argument61 : "stringValue41485") @Directive44(argument97 : ["stringValue41484"]) { + field50215: String +} + +type Object9676 @Directive21(argument61 : "stringValue41487") @Directive44(argument97 : ["stringValue41486"]) { + field50217: Boolean + field50218: String + field50219: String + field50220: String + field50221: String +} + +type Object9677 @Directive21(argument61 : "stringValue41489") @Directive44(argument97 : ["stringValue41488"]) { + field50223: String + field50224: [Object9678] + field50241: Boolean + field50242: Object9679 +} + +type Object9678 @Directive21(argument61 : "stringValue41491") @Directive44(argument97 : ["stringValue41490"]) { + field50225: String + field50226: String + field50227: String + field50228: String + field50229: String + field50230: String + field50231: String + field50232: String + field50233: String + field50234: String + field50235: Object9679 +} + +type Object9679 @Directive21(argument61 : "stringValue41493") @Directive44(argument97 : ["stringValue41492"]) { + field50236: String + field50237: String + field50238: String + field50239: String + field50240: String +} + +type Object968 implements Interface76 @Directive21(argument61 : "stringValue4994") @Directive22(argument62 : "stringValue4993") @Directive31 @Directive44(argument97 : ["stringValue4995", "stringValue4996", "stringValue4997"]) @Directive45(argument98 : ["stringValue4998"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union113] + field5221: Boolean + field5281: Object909 + field5421: String @deprecated + field5547: Object951 + field5553: Object953 + field5618: Object963 + field5624: Object965 + field5634: [Object969] + field5656: [Object970] +} + +type Object9680 @Directive21(argument61 : "stringValue41495") @Directive44(argument97 : ["stringValue41494"]) { + field50244: String + field50245: [Object2967] +} + +type Object9681 @Directive21(argument61 : "stringValue41498") @Directive44(argument97 : ["stringValue41497"]) { + field50247: String + field50248: String + field50249: [String] + field50250: String +} + +type Object9682 @Directive21(argument61 : "stringValue41500") @Directive44(argument97 : ["stringValue41499"]) { + field50251: String + field50252: String + field50253: [String] + field50254: String +} + +type Object9683 @Directive21(argument61 : "stringValue41502") @Directive44(argument97 : ["stringValue41501"]) { + field50255: String + field50256: String + field50257: [String] + field50258: Object9684 +} + +type Object9684 @Directive21(argument61 : "stringValue41504") @Directive44(argument97 : ["stringValue41503"]) { + field50259: String + field50260: String + field50261: String + field50262: String + field50263: String + field50264: String + field50265: String + field50266: String + field50267: String + field50268: String + field50269: Object2967 + field50270: String + field50271: String + field50272: [String] + field50273: Object9685 + field50277: [String] + field50278: String +} + +type Object9685 @Directive21(argument61 : "stringValue41506") @Directive44(argument97 : ["stringValue41505"]) { + field50274: String + field50275: String + field50276: String +} + +type Object9686 @Directive21(argument61 : "stringValue41508") @Directive44(argument97 : ["stringValue41507"]) { + field50279: String + field50280: String + field50281: [String] + field50282: String + field50283: String + field50284: Object9684 + field50285: String + field50286: [Object9687] + field50291: [Object9684] + field50292: Object9684 + field50293: Object9684 + field50294: String + field50295: String + field50296: String + field50297: String + field50298: Object9684 +} + +type Object9687 @Directive21(argument61 : "stringValue41510") @Directive44(argument97 : ["stringValue41509"]) { + field50287: String + field50288: String + field50289: String + field50290: String +} + +type Object9688 @Directive21(argument61 : "stringValue41512") @Directive44(argument97 : ["stringValue41511"]) { + field50299: String + field50300: String + field50301: [String] + field50302: String + field50303: String +} + +type Object9689 @Directive21(argument61 : "stringValue41514") @Directive44(argument97 : ["stringValue41513"]) { + field50304: String + field50305: String + field50306: [String] + field50307: String + field50308: [Object9690] +} + +type Object969 @Directive20(argument58 : "stringValue5000", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue4999") @Directive31 @Directive44(argument97 : ["stringValue5001", "stringValue5002"]) { + field5635: String + field5636: Object898 + field5637: String + field5638: Object899 + field5639: Object900 + field5640: Float + field5641: Object899 + field5642: Object899 + field5643: String + field5644: Object398 + field5645: String + field5646: String + field5647: Enum279 + field5648: String @deprecated + field5649: String + field5650: String + field5651: Enum279 + field5652: Object899 + field5653: Boolean + field5654: String + field5655: String +} + +type Object9690 @Directive21(argument61 : "stringValue41516") @Directive44(argument97 : ["stringValue41515"]) { + field50309: Scalar2 + field50310: Object9691 + field50332: Int + field50333: String + field50334: String +} + +type Object9691 @Directive21(argument61 : "stringValue41518") @Directive44(argument97 : ["stringValue41517"]) { + field50311: String! + field50312: Scalar2! + field50313: Boolean! + field50314: String! + field50315: String! + field50316: String! + field50317: String! + field50318: String! + field50319: String! + field50320: String! + field50321: Int! + field50322: String! + field50323: String! + field50324: String! + field50325: String! + field50326: String! + field50327: String! + field50328: String! + field50329: String! + field50330: Enum593 + field50331: Float +} + +type Object9692 @Directive21(argument61 : "stringValue41520") @Directive44(argument97 : ["stringValue41519"]) { + field50335: String + field50336: String + field50337: [String] + field50338: String + field50339: String + field50340: String + field50341: String +} + +type Object9693 @Directive21(argument61 : "stringValue41522") @Directive44(argument97 : ["stringValue41521"]) { + field50342: String + field50343: String + field50344: [String] + field50345: String + field50346: String + field50347: String + field50348: String + field50349: String + field50350: String + field50351: String + field50352: String + field50353: String + field50354: String + field50355: String + field50356: String + field50357: [Object9608] + field50358: [Object9608] +} + +type Object9694 @Directive21(argument61 : "stringValue41524") @Directive44(argument97 : ["stringValue41523"]) { + field50359: String + field50360: String + field50361: [String] + field50362: String + field50363: String + field50364: String + field50365: String + field50366: String + field50367: String +} + +type Object9695 @Directive21(argument61 : "stringValue41526") @Directive44(argument97 : ["stringValue41525"]) { + field50368: String + field50369: String + field50370: [String] + field50371: String +} + +type Object9696 @Directive21(argument61 : "stringValue41528") @Directive44(argument97 : ["stringValue41527"]) { + field50372: String + field50373: String + field50374: [String] + field50375: String + field50376: Boolean + field50377: String +} + +type Object9697 @Directive21(argument61 : "stringValue41530") @Directive44(argument97 : ["stringValue41529"]) { + field50378: String + field50379: String + field50380: [String] + field50381: String + field50382: String + field50383: String + field50384: String + field50385: [Object9698] + field50394: String + field50395: String + field50396: String + field50397: String + field50398: String + field50399: String + field50400: String + field50401: Object9699 +} + +type Object9698 @Directive21(argument61 : "stringValue41532") @Directive44(argument97 : ["stringValue41531"]) { + field50386: String + field50387: String + field50388: String + field50389: String + field50390: String + field50391: String + field50392: String + field50393: String +} + +type Object9699 @Directive21(argument61 : "stringValue41534") @Directive44(argument97 : ["stringValue41533"]) { + field50402: String + field50403: String +} + +type Object97 @Directive21(argument61 : "stringValue380") @Directive44(argument97 : ["stringValue379"]) { + field655: Boolean + field656: Float + field657: Object98 + field667: String + field668: Object99 + field669: String + field670: Object99 + field671: Float + field672: Boolean + field673: Object99 + field674: [Object100] + field688: Object99 + field689: String + field690: String + field691: Object99 + field692: String + field693: String + field694: [Object101] + field702: [Enum60] + field703: Object77 + field704: Object102 + field787: Boolean +} + +type Object970 @Directive20(argument58 : "stringValue5004", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5003") @Directive31 @Directive44(argument97 : ["stringValue5005", "stringValue5006"]) { + field5657: Object971 + field5668: String + field5669: Interface3 +} + +type Object9700 @Directive21(argument61 : "stringValue41536") @Directive44(argument97 : ["stringValue41535"]) { + field50404: String + field50405: String + field50406: [String] + field50407: String + field50408: String + field50409: String +} + +type Object9701 @Directive21(argument61 : "stringValue41538") @Directive44(argument97 : ["stringValue41537"]) { + field50411: String + field50412: Enum2311 + field50413: String +} + +type Object9702 @Directive21(argument61 : "stringValue41541") @Directive44(argument97 : ["stringValue41540"]) { + field50416: Enum2312 + field50417: String +} + +type Object9703 @Directive21(argument61 : "stringValue41544") @Directive44(argument97 : ["stringValue41543"]) { + field50419: String + field50420: String + field50421: String + field50422: String + field50423: String + field50424: String + field50425: String + field50426: String + field50427: String + field50428: Object9704 + field50434: String + field50435: Object9705 + field50437: String + field50438: String + field50439: String + field50440: String + field50441: String + field50442: String + field50443: String +} + +type Object9704 @Directive21(argument61 : "stringValue41546") @Directive44(argument97 : ["stringValue41545"]) { + field50429: Float + field50430: Float + field50431: Scalar2 + field50432: Scalar2 + field50433: Scalar1 +} + +type Object9705 @Directive21(argument61 : "stringValue41548") @Directive44(argument97 : ["stringValue41547"]) { + field50436: [Object9596] +} + +type Object9706 @Directive21(argument61 : "stringValue41554") @Directive44(argument97 : ["stringValue41553"]) { + field50445: Object9707 + field50615: Scalar1 +} + +type Object9707 @Directive21(argument61 : "stringValue41556") @Directive44(argument97 : ["stringValue41555"]) { + field50446: [Object9708]! + field50454: [Object9593]! + field50455: [Object9593]! + field50456: String! + field50457: String! + field50458: String! + field50459: String! + field50460: Boolean! + field50461: Scalar2! + field50462: Boolean! + field50463: String + field50464: [Object9597]! + field50465: String + field50466: String + field50467: [Object9710]! + field50476: Object9711! + field50491: String + field50492: String! + field50493: Object9614 + field50494: Float + field50495: Int! + field50496: Object9712! + field50506: Boolean! + field50507: Int + field50508: Int + field50509: [Object9713]! + field50513: Boolean! + field50514: Boolean! + field50515: [Object9711] + field50516: Boolean! + field50517: String + field50518: Object9648 + field50519: [Object9620]! + field50520: [Object9624]! + field50521: Object9621 + field50522: Object9621 + field50523: String! + field50524: String + field50525: String + field50526: String + field50527: String + field50528: String + field50529: String + field50530: Boolean! + field50531: Boolean! + field50532: Float + field50533: Float + field50534: String! + field50535: [String]! + field50536: String + field50537: [Scalar2]! + field50538: Boolean! + field50539: Object9714 + field50549: Object9716! + field50557: String + field50558: Object9646 + field50559: String + field50560: String + field50561: Object9718 + field50563: Object9635 + field50564: [String]! + field50565: String + field50566: Scalar2! + field50567: Boolean + field50568: Object9719 + field50574: Boolean + field50575: Boolean + field50576: String + field50577: [Object9595] + field50578: String + field50579: Object9651 + field50580: Scalar1 + field50581: [Object9652] + field50582: [Object9650] + field50583: Scalar1 + field50584: Object9653 + field50585: Object9625 + field50586: Enum2309! + field50587: [Object9655] + field50588: [Object9624]! + field50589: Object9656 + field50590: Object9659 + field50591: Boolean + field50592: Object9663 + field50593: [Object9596] + field50594: [Object9596] + field50595: Object9664 + field50596: Object9665 + field50597: Object9666 + field50598: Object9667 + field50599: Object9670 + field50600: Object9671 + field50601: Object9673 + field50602: Object9675 + field50603: String + field50604: Object9676 + field50605: Object9614 + field50606: Object9684 + field50607: [Object9604] + field50608: [Object9680] + field50609: Scalar2 + field50610: [Union318] + field50611: Object9701 + field50612: String + field50613: Object9702 + field50614: Object9703 +} + +type Object9708 @Directive21(argument61 : "stringValue41558") @Directive44(argument97 : ["stringValue41557"]) { + field50447: String + field50448: Scalar2! + field50449: Boolean! + field50450: String! + field50451: Object9709 + field50453: Object9709 +} + +type Object9709 @Directive21(argument61 : "stringValue41560") @Directive44(argument97 : ["stringValue41559"]) { + field50452: String +} + +type Object971 @Directive20(argument58 : "stringValue5008", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5007") @Directive31 @Directive44(argument97 : ["stringValue5009", "stringValue5010"]) { + field5658: Object972 + field5665: Object972 + field5666: Object972 + field5667: Object972 +} + +type Object9710 @Directive21(argument61 : "stringValue41562") @Directive44(argument97 : ["stringValue41561"]) { + field50468: String! + field50469: Scalar2! + field50470: String! + field50471: String! + field50472: String! + field50473: Boolean! + field50474: Enum593 + field50475: Float +} + +type Object9711 @Directive21(argument61 : "stringValue41564") @Directive44(argument97 : ["stringValue41563"]) { + field50477: String! + field50478: [Object9601] + field50479: String! + field50480: Scalar2! + field50481: Boolean! + field50482: String! + field50483: String! + field50484: [String]! + field50485: String + field50486: String + field50487: String + field50488: Boolean + field50489: String + field50490: [String] +} + +type Object9712 @Directive21(argument61 : "stringValue41566") @Directive44(argument97 : ["stringValue41565"]) { + field50497: Boolean! + field50498: Boolean! + field50499: Boolean! + field50500: Boolean! + field50501: Boolean! + field50502: Int! + field50503: [String]! + field50504: [Object9617] + field50505: Boolean +} + +type Object9713 @Directive21(argument61 : "stringValue41568") @Directive44(argument97 : ["stringValue41567"]) { + field50510: String! + field50511: String + field50512: Enum2308 +} + +type Object9714 @Directive21(argument61 : "stringValue41570") @Directive44(argument97 : ["stringValue41569"]) { + field50540: Scalar4! + field50541: Object9715! + field50544: Scalar2! + field50545: Scalar2! + field50546: String! + field50547: String + field50548: Boolean! +} + +type Object9715 @Directive21(argument61 : "stringValue41572") @Directive44(argument97 : ["stringValue41571"]) { + field50542: String! + field50543: Scalar2! +} + +type Object9716 @Directive21(argument61 : "stringValue41574") @Directive44(argument97 : ["stringValue41573"]) { + field50550: Int! + field50551: [Object9717] + field50556: [Object9634] +} + +type Object9717 @Directive21(argument61 : "stringValue41576") @Directive44(argument97 : ["stringValue41575"]) { + field50552: Int + field50553: String! + field50554: String + field50555: Float +} + +type Object9718 @Directive21(argument61 : "stringValue41578") @Directive44(argument97 : ["stringValue41577"]) { + field50562: String +} + +type Object9719 @Directive21(argument61 : "stringValue41580") @Directive44(argument97 : ["stringValue41579"]) { + field50569: [Object9708]! + field50570: [String]! + field50571: [Object9593]! + field50572: String + field50573: String +} + +type Object972 @Directive20(argument58 : "stringValue5012", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5011") @Directive31 @Directive44(argument97 : ["stringValue5013", "stringValue5014"]) { + field5659: Object596 + field5660: Object596 + field5661: Object596 + field5662: Object597 + field5663: Object576 + field5664: Object577 +} + +type Object9720 @Directive21(argument61 : "stringValue41586") @Directive44(argument97 : ["stringValue41585"]) { + field50617: Boolean! + field50618: [Object9721]! + field50624: Boolean! + field50625: Scalar3 + field50626: Scalar3 + field50627: Object9721! + field50628: Int! + field50629: Object9722! + field50634: Int + field50635: Object9723! + field50703: Object9721! + field50704: String! + field50705: Object9731! + field50708: String! + field50709: Object9721! + field50710: Boolean! + field50711: Scalar2! + field50712: Object9732 + field50816: String + field50817: Object9750 @deprecated + field50823: String! + field50824: String! + field50825: Int + field50826: Int + field50827: Object9751! + field50838: Object9752! + field50841: String + field50842: Object9753 + field50846: String! + field50847: Object9653 + field50848: Object9754 + field50859: Object9757 + field50862: Object9758 + field50882: [Object9723] + field50883: Object9764 + field50885: String + field50886: Object9765 + field50904: Object9727 + field50905: Object9770 + field50911: Enum2325 + field50912: String + field50913: Object9771 + field50942: Boolean + field50943: String + field50944: Object9778 + field50953: [Object9779] + field51049: String + field51050: Boolean + field51051: Object9803 + field51067: Boolean + field51068: String + field51069: Object9806 + field51079: [Object9808] + field51086: Object9809 + field51094: Object9810 + field51158: Object9782 + field51159: Object9703 +} + +type Object9721 @Directive21(argument61 : "stringValue41588") @Directive44(argument97 : ["stringValue41587"]) { + field50619: Float! + field50620: Float + field50621: String! + field50622: Boolean! + field50623: String! +} + +type Object9722 @Directive21(argument61 : "stringValue41590") @Directive44(argument97 : ["stringValue41589"]) { + field50630: Int! + field50631: Int! + field50632: Int! + field50633: String! +} + +type Object9723 @Directive21(argument61 : "stringValue41592") @Directive44(argument97 : ["stringValue41591"]) { + field50636: String + field50637: String + field50638: String + field50639: String + field50640: String + field50641: String! + field50642: String! + field50643: String + field50644: String + field50645: String + field50646: [String] + field50647: [Object9724] + field50652: String! + field50653: [Object9725] + field50667: String + field50668: String + field50669: String + field50670: String! + field50671: String! + field50672: Enum2314 + field50673: Float + field50674: Int + field50675: String + field50676: String + field50677: Object9727 + field50686: [Enum2315] + field50687: [Object9728] + field50692: Object9729 +} + +type Object9724 @Directive21(argument61 : "stringValue41594") @Directive44(argument97 : ["stringValue41593"]) { + field50648: String + field50649: String + field50650: String + field50651: Enum2313 +} + +type Object9725 @Directive21(argument61 : "stringValue41597") @Directive44(argument97 : ["stringValue41596"]) { + field50654: [String] + field50655: [String] + field50656: String + field50657: String + field50658: Float + field50659: Float + field50660: Boolean + field50661: Boolean + field50662: Scalar4 + field50663: [Object9726] + field50666: [Object9726] +} + +type Object9726 @Directive21(argument61 : "stringValue41599") @Directive44(argument97 : ["stringValue41598"]) { + field50664: String + field50665: String +} + +type Object9727 @Directive21(argument61 : "stringValue41602") @Directive44(argument97 : ["stringValue41601"]) { + field50678: String + field50679: String + field50680: String + field50681: String + field50682: String + field50683: String + field50684: String + field50685: Enum602 +} + +type Object9728 @Directive21(argument61 : "stringValue41605") @Directive44(argument97 : ["stringValue41604"]) { + field50688: String + field50689: Enum2316 + field50690: Object9726 + field50691: Object9726 +} + +type Object9729 @Directive21(argument61 : "stringValue41608") @Directive44(argument97 : ["stringValue41607"]) { + field50693: String + field50694: String + field50695: [Object9730] + field50701: String + field50702: String +} + +type Object973 implements Interface76 @Directive21(argument61 : "stringValue5019") @Directive22(argument62 : "stringValue5018") @Directive31 @Directive44(argument97 : ["stringValue5020", "stringValue5021", "stringValue5022"]) @Directive45(argument98 : ["stringValue5023"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union114] + field5221: Boolean + field5670: [Object974] +} + +type Object9730 @Directive21(argument61 : "stringValue41610") @Directive44(argument97 : ["stringValue41609"]) { + field50696: String + field50697: [String] + field50698: String + field50699: Scalar4 + field50700: String +} + +type Object9731 @Directive21(argument61 : "stringValue41612") @Directive44(argument97 : ["stringValue41611"]) { + field50706: Boolean! + field50707: String! +} + +type Object9732 @Directive21(argument61 : "stringValue41614") @Directive44(argument97 : ["stringValue41613"]) { + field50713: [Object9733]! + field50720: Object9721! + field50721: String! + field50722: String + field50723: String + field50724: String + field50725: Object9734 + field50787: Object9744 + field50806: Object9733 + field50807: [Object9748] +} + +type Object9733 @Directive21(argument61 : "stringValue41616") @Directive44(argument97 : ["stringValue41615"]) { + field50714: String! + field50715: Object9721! + field50716: String + field50717: String + field50718: String + field50719: String +} + +type Object9734 @Directive21(argument61 : "stringValue41618") @Directive44(argument97 : ["stringValue41617"]) { + field50726: Object9735 + field50750: Object9738 + field50759: Object9739 + field50771: Object9742 +} + +type Object9735 @Directive21(argument61 : "stringValue41620") @Directive44(argument97 : ["stringValue41619"]) { + field50727: Object9736 + field50730: Object9736 + field50731: Object9736 + field50732: Float + field50733: Object9736 + field50734: Object9737 + field50748: Object9736 + field50749: Object9736 +} + +type Object9736 @Directive21(argument61 : "stringValue41622") @Directive44(argument97 : ["stringValue41621"]) { + field50728: Object9654! + field50729: String +} + +type Object9737 @Directive21(argument61 : "stringValue41624") @Directive44(argument97 : ["stringValue41623"]) { + field50735: Enum2317 + field50736: String + field50737: Boolean + field50738: Boolean + field50739: Int + field50740: String + field50741: Scalar2 + field50742: String + field50743: Int + field50744: String + field50745: Float + field50746: Int + field50747: Enum2318 +} + +type Object9738 @Directive21(argument61 : "stringValue41628") @Directive44(argument97 : ["stringValue41627"]) { + field50751: [Object9737] + field50752: Object9736 + field50753: Object9736 + field50754: Object9736 + field50755: Object9736 + field50756: Object9736 + field50757: Object9736 + field50758: String +} + +type Object9739 @Directive21(argument61 : "stringValue41630") @Directive44(argument97 : ["stringValue41629"]) { + field50760: Object9736 + field50761: Object9736 + field50762: Object9736 + field50763: Object9740 + field50766: Object9736 + field50767: Object9741 +} + +type Object974 @Directive20(argument58 : "stringValue5025", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5024") @Directive31 @Directive44(argument97 : ["stringValue5026", "stringValue5027"]) { + field5671: String + field5672: String + field5673: String + field5674: String! + field5675: String + field5676: String + field5677: String + field5678: String +} + +type Object9740 @Directive21(argument61 : "stringValue41632") @Directive44(argument97 : ["stringValue41631"]) { + field50764: String + field50765: String +} + +type Object9741 @Directive21(argument61 : "stringValue41634") @Directive44(argument97 : ["stringValue41633"]) { + field50768: Int + field50769: Int + field50770: Scalar2 +} + +type Object9742 @Directive21(argument61 : "stringValue41636") @Directive44(argument97 : ["stringValue41635"]) { + field50772: [Object9743] +} + +type Object9743 @Directive21(argument61 : "stringValue41638") @Directive44(argument97 : ["stringValue41637"]) { + field50773: Enum2317 + field50774: Float + field50775: Int + field50776: String + field50777: Scalar3 + field50778: Scalar3 + field50779: Scalar4 + field50780: Scalar2 + field50781: String + field50782: String + field50783: Int + field50784: Int + field50785: Enum2318 + field50786: [Enum2319] +} + +type Object9744 @Directive21(argument61 : "stringValue41641") @Directive44(argument97 : ["stringValue41640"]) { + field50788: Object9745 + field50796: [Object9747] +} + +type Object9745 @Directive21(argument61 : "stringValue41643") @Directive44(argument97 : ["stringValue41642"]) { + field50789: String! + field50790: String + field50791: [Object9746]! +} + +type Object9746 @Directive21(argument61 : "stringValue41645") @Directive44(argument97 : ["stringValue41644"]) { + field50792: Enum2320! + field50793: String! + field50794: String! + field50795: String +} + +type Object9747 @Directive21(argument61 : "stringValue41648") @Directive44(argument97 : ["stringValue41647"]) { + field50797: Enum2320! + field50798: Object9736! + field50799: String + field50800: String + field50801: String + field50802: [Object9747]! + field50803: Enum2321 @deprecated + field50804: String + field50805: String +} + +type Object9748 @Directive21(argument61 : "stringValue41651") @Directive44(argument97 : ["stringValue41650"]) { + field50808: Enum2322 + field50809: [Object9749] + field50812: Boolean + field50813: Boolean + field50814: Boolean + field50815: Boolean +} + +type Object9749 @Directive21(argument61 : "stringValue41654") @Directive44(argument97 : ["stringValue41653"]) { + field50810: String! + field50811: String! +} + +type Object975 implements Interface76 @Directive21(argument61 : "stringValue5032") @Directive22(argument62 : "stringValue5031") @Directive31 @Directive44(argument97 : ["stringValue5033", "stringValue5034", "stringValue5035"]) @Directive45(argument98 : ["stringValue5036"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5219: [Object422] + field5679: Object976 +} + +type Object9750 @Directive21(argument61 : "stringValue41656") @Directive44(argument97 : ["stringValue41655"]) { + field50818: String! + field50819: String! + field50820: String + field50821: String + field50822: String +} + +type Object9751 @Directive21(argument61 : "stringValue41658") @Directive44(argument97 : ["stringValue41657"]) { + field50828: Boolean + field50829: String + field50830: String + field50831: String + field50832: String + field50833: Boolean + field50834: String + field50835: String + field50836: String + field50837: String +} + +type Object9752 @Directive21(argument61 : "stringValue41660") @Directive44(argument97 : ["stringValue41659"]) { + field50839: Boolean + field50840: String +} + +type Object9753 @Directive21(argument61 : "stringValue41662") @Directive44(argument97 : ["stringValue41661"]) { + field50843: String + field50844: Enum2323 + field50845: Object9736 +} + +type Object9754 @Directive21(argument61 : "stringValue41665") @Directive44(argument97 : ["stringValue41664"]) { + field50849: String + field50850: Object9727 + field50851: Object9755 +} + +type Object9755 @Directive21(argument61 : "stringValue41667") @Directive44(argument97 : ["stringValue41666"]) { + field50852: Int + field50853: Object9756 + field50856: String + field50857: String + field50858: Object2949 +} + +type Object9756 @Directive21(argument61 : "stringValue41669") @Directive44(argument97 : ["stringValue41668"]) { + field50854: Scalar3 + field50855: Scalar3 +} + +type Object9757 @Directive21(argument61 : "stringValue41671") @Directive44(argument97 : ["stringValue41670"]) { + field50860: String + field50861: String +} + +type Object9758 @Directive21(argument61 : "stringValue41673") @Directive44(argument97 : ["stringValue41672"]) { + field50863: Object9759 + field50871: Object9761 + field50879: Object9763 +} + +type Object9759 @Directive21(argument61 : "stringValue41675") @Directive44(argument97 : ["stringValue41674"]) { + field50864: String + field50865: String + field50866: [Object9760] +} + +type Object976 @Directive20(argument58 : "stringValue5038", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5037") @Directive31 @Directive44(argument97 : ["stringValue5039", "stringValue5040", "stringValue5041"]) { + field5680: Enum271 + field5681: String + field5682: String + field5683: String + field5684: String + field5685: [Object977] + field5688: Enum226 + field5689: String + field5690: [Object789] + field5691: String + field5692: Scalar2 + field5693: String + field5694: String +} + +type Object9760 @Directive21(argument61 : "stringValue41677") @Directive44(argument97 : ["stringValue41676"]) { + field50867: String + field50868: String + field50869: Object9721 + field50870: String +} + +type Object9761 @Directive21(argument61 : "stringValue41679") @Directive44(argument97 : ["stringValue41678"]) { + field50872: String + field50873: String + field50874: String + field50875: [Object9762] + field50878: String +} + +type Object9762 @Directive21(argument61 : "stringValue41681") @Directive44(argument97 : ["stringValue41680"]) { + field50876: String + field50877: String +} + +type Object9763 @Directive21(argument61 : "stringValue41683") @Directive44(argument97 : ["stringValue41682"]) { + field50880: String + field50881: String +} + +type Object9764 @Directive21(argument61 : "stringValue41685") @Directive44(argument97 : ["stringValue41684"]) { + field50884: Int +} + +type Object9765 @Directive21(argument61 : "stringValue41687") @Directive44(argument97 : ["stringValue41686"]) { + field50887: Object9766 + field50895: Object9768 + field50903: Enum2324! +} + +type Object9766 @Directive21(argument61 : "stringValue41689") @Directive44(argument97 : ["stringValue41688"]) { + field50888: String + field50889: String + field50890: [Object9767] +} + +type Object9767 @Directive21(argument61 : "stringValue41691") @Directive44(argument97 : ["stringValue41690"]) { + field50891: String + field50892: String + field50893: Object9721 + field50894: String +} + +type Object9768 @Directive21(argument61 : "stringValue41693") @Directive44(argument97 : ["stringValue41692"]) { + field50896: String + field50897: String + field50898: String + field50899: [Object9769] + field50902: String +} + +type Object9769 @Directive21(argument61 : "stringValue41695") @Directive44(argument97 : ["stringValue41694"]) { + field50900: String + field50901: String +} + +type Object977 @Directive20(argument58 : "stringValue5043", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5042") @Directive31 @Directive44(argument97 : ["stringValue5044", "stringValue5045"]) { + field5686: Object789 + field5687: Object914 +} + +type Object9770 @Directive21(argument61 : "stringValue41698") @Directive44(argument97 : ["stringValue41697"]) { + field50906: String! + field50907: String + field50908: String + field50909: String! + field50910: String +} + +type Object9771 @Directive21(argument61 : "stringValue41701") @Directive44(argument97 : ["stringValue41700"]) { + field50914: [Object9772] + field50918: Object9773 @deprecated + field50940: String + field50941: Object9773 +} + +type Object9772 @Directive21(argument61 : "stringValue41703") @Directive44(argument97 : ["stringValue41702"]) { + field50915: Enum2326 + field50916: String + field50917: Enum2321 +} + +type Object9773 @Directive21(argument61 : "stringValue41706") @Directive44(argument97 : ["stringValue41705"]) { + field50919: String + field50920: Object9774 + field50929: String + field50930: String + field50931: [Object9776] +} + +type Object9774 @Directive21(argument61 : "stringValue41708") @Directive44(argument97 : ["stringValue41707"]) { + field50921: String + field50922: String + field50923: [Object9775!] + field50928: String +} + +type Object9775 @Directive21(argument61 : "stringValue41710") @Directive44(argument97 : ["stringValue41709"]) { + field50924: String + field50925: String + field50926: String + field50927: String +} + +type Object9776 @Directive21(argument61 : "stringValue41712") @Directive44(argument97 : ["stringValue41711"]) { + field50932: Enum2327 + field50933: [Object9777] + field50938: String + field50939: Object9774 +} + +type Object9777 @Directive21(argument61 : "stringValue41715") @Directive44(argument97 : ["stringValue41714"]) { + field50934: Enum2328 + field50935: String + field50936: String + field50937: Object9773 +} + +type Object9778 @Directive21(argument61 : "stringValue41718") @Directive44(argument97 : ["stringValue41717"]) { + field50945: String @deprecated + field50946: String + field50947: Object9608 + field50948: Object9608 + field50949: Object9608 + field50950: Object9608 + field50951: Object9608 + field50952: Object9608 +} + +type Object9779 @Directive21(argument61 : "stringValue41720") @Directive44(argument97 : ["stringValue41719"]) { + field50954: Enum2329 + field50955: String + field50956: String + field50957: [Object9780!] + field51048: Object9608 +} + +type Object978 implements Interface76 @Directive21(argument61 : "stringValue5047") @Directive22(argument62 : "stringValue5046") @Directive31 @Directive44(argument97 : ["stringValue5048", "stringValue5049", "stringValue5050"]) @Directive45(argument98 : ["stringValue5051"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union115] + field5221: Boolean + field5695: [Object979] +} + +type Object9780 @Directive21(argument61 : "stringValue41723") @Directive44(argument97 : ["stringValue41722"]) { + field50958: String + field50959: [Object9781!] + field51046: String + field51047: Object9608 +} + +type Object9781 @Directive21(argument61 : "stringValue41725") @Directive44(argument97 : ["stringValue41724"]) { + field50960: String @deprecated + field50961: [Object9608!] + field50962: Object9608 @deprecated + field50963: String @deprecated + field50964: [Object9608!] @deprecated + field50965: Object9771 + field50966: Object9734 + field50967: String + field50968: Object9782 +} + +type Object9782 @Directive21(argument61 : "stringValue41727") @Directive44(argument97 : ["stringValue41726"]) { + field50969: Union319 + field51008: Union319 + field51009: Object9792 +} + +type Object9783 @Directive21(argument61 : "stringValue41730") @Directive44(argument97 : ["stringValue41729"]) { + field50970: String! + field50971: String + field50972: Enum2330 +} + +type Object9784 @Directive21(argument61 : "stringValue41733") @Directive44(argument97 : ["stringValue41732"]) { + field50973: String + field50974: Object2959 + field50975: Enum602 + field50976: Enum2330 +} + +type Object9785 @Directive21(argument61 : "stringValue41735") @Directive44(argument97 : ["stringValue41734"]) { + field50977: String + field50978: String! + field50979: String! + field50980: String + field50981: Object9786 + field50993: Object9789 +} + +type Object9786 @Directive21(argument61 : "stringValue41737") @Directive44(argument97 : ["stringValue41736"]) { + field50982: [Union320] + field50990: String + field50991: String + field50992: String +} + +type Object9787 @Directive21(argument61 : "stringValue41740") @Directive44(argument97 : ["stringValue41739"]) { + field50983: String! + field50984: Boolean! + field50985: Boolean! + field50986: String! +} + +type Object9788 @Directive21(argument61 : "stringValue41742") @Directive44(argument97 : ["stringValue41741"]) { + field50987: String! + field50988: String + field50989: Enum2331! +} + +type Object9789 @Directive21(argument61 : "stringValue41745") @Directive44(argument97 : ["stringValue41744"]) { + field50994: String! + field50995: String! + field50996: String! +} + +type Object979 @Directive20(argument58 : "stringValue5053", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5052") @Directive31 @Directive44(argument97 : ["stringValue5054", "stringValue5055"]) { + field5696: String + field5697: String + field5698: String + field5699: Object789 + field5700: Object398 + field5701: String + field5702: String + field5703: String + field5704: Object787 +} + +type Object9790 @Directive21(argument61 : "stringValue41747") @Directive44(argument97 : ["stringValue41746"]) { + field50997: String! + field50998: String! + field50999: String! + field51000: String + field51001: Boolean + field51002: Enum2330 +} + +type Object9791 @Directive21(argument61 : "stringValue41749") @Directive44(argument97 : ["stringValue41748"]) { + field51003: String! + field51004: String! + field51005: String + field51006: Boolean + field51007: Enum2330 +} + +type Object9792 @Directive21(argument61 : "stringValue41751") @Directive44(argument97 : ["stringValue41750"]) { + field51010: [Union321] + field51045: String +} + +type Object9793 @Directive21(argument61 : "stringValue41754") @Directive44(argument97 : ["stringValue41753"]) { + field51011: String! + field51012: Enum2330 +} + +type Object9794 @Directive21(argument61 : "stringValue41756") @Directive44(argument97 : ["stringValue41755"]) { + field51013: [Union322] + field51033: Boolean @deprecated + field51034: Boolean + field51035: Boolean + field51036: String + field51037: Enum2330 +} + +type Object9795 @Directive21(argument61 : "stringValue41759") @Directive44(argument97 : ["stringValue41758"]) { + field51014: String! + field51015: String! + field51016: Object9792 +} + +type Object9796 @Directive21(argument61 : "stringValue41761") @Directive44(argument97 : ["stringValue41760"]) { + field51017: String! + field51018: String! + field51019: Object9792 + field51020: String +} + +type Object9797 @Directive21(argument61 : "stringValue41763") @Directive44(argument97 : ["stringValue41762"]) { + field51021: String! + field51022: String! + field51023: Object9792 + field51024: Enum2330 +} + +type Object9798 @Directive21(argument61 : "stringValue41765") @Directive44(argument97 : ["stringValue41764"]) { + field51025: String! + field51026: String! + field51027: Object9792 + field51028: Enum2330 +} + +type Object9799 @Directive21(argument61 : "stringValue41767") @Directive44(argument97 : ["stringValue41766"]) { + field51029: String! + field51030: String! + field51031: Object9792 + field51032: Enum2330 +} + +type Object98 @Directive21(argument61 : "stringValue382") @Directive44(argument97 : ["stringValue381"]) { + field658: String + field659: [Object98] + field660: Object99 + field665: Int + field666: String +} + +type Object980 implements Interface76 @Directive21(argument61 : "stringValue5060") @Directive22(argument62 : "stringValue5059") @Directive31 @Directive44(argument97 : ["stringValue5061", "stringValue5062", "stringValue5063"]) @Directive45(argument98 : ["stringValue5064"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union116] + field5221: Boolean + field5705: [Object981] +} + +type Object9800 @Directive21(argument61 : "stringValue41769") @Directive44(argument97 : ["stringValue41768"]) { + field51038: String! + field51039: String! + field51040: Enum2330 +} + +type Object9801 @Directive21(argument61 : "stringValue41771") @Directive44(argument97 : ["stringValue41770"]) { + field51041: String! + field51042: Enum2330 +} + +type Object9802 @Directive21(argument61 : "stringValue41773") @Directive44(argument97 : ["stringValue41772"]) { + field51043: String! + field51044: Enum2330 +} + +type Object9803 @Directive21(argument61 : "stringValue41775") @Directive44(argument97 : ["stringValue41774"]) { + field51052: Object9804 +} + +type Object9804 @Directive21(argument61 : "stringValue41777") @Directive44(argument97 : ["stringValue41776"]) { + field51053: String + field51054: String + field51055: Object9805 + field51063: String + field51064: String @deprecated + field51065: Enum2332 + field51066: Object9608 +} + +type Object9805 @Directive21(argument61 : "stringValue41779") @Directive44(argument97 : ["stringValue41778"]) { + field51056: String @deprecated + field51057: String @deprecated + field51058: String + field51059: String @deprecated + field51060: String + field51061: String + field51062: String +} + +type Object9806 @Directive21(argument61 : "stringValue41782") @Directive44(argument97 : ["stringValue41781"]) { + field51070: [Object9807!] + field51077: String + field51078: String +} + +type Object9807 @Directive21(argument61 : "stringValue41784") @Directive44(argument97 : ["stringValue41783"]) { + field51071: Enum602 + field51072: String + field51073: String + field51074: String + field51075: String + field51076: Object9608 +} + +type Object9808 @Directive21(argument61 : "stringValue41786") @Directive44(argument97 : ["stringValue41785"]) { + field51080: Enum2333 + field51081: String + field51082: String + field51083: Boolean + field51084: Boolean + field51085: Boolean +} + +type Object9809 @Directive21(argument61 : "stringValue41789") @Directive44(argument97 : ["stringValue41788"]) { + field51087: String + field51088: String + field51089: String + field51090: Enum2334 + field51091: String + field51092: String + field51093: Enum2335 +} + +type Object981 @Directive20(argument58 : "stringValue5066", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5065") @Directive31 @Directive44(argument97 : ["stringValue5067", "stringValue5068"]) { + field5706: String + field5707: String + field5708: String + field5709: String + field5710: String + field5711: String + field5712: String +} + +type Object9810 @Directive21(argument61 : "stringValue41793") @Directive44(argument97 : ["stringValue41792"]) { + field51095: Object9811 + field51118: Object9811 + field51119: Boolean + field51120: Object9811 + field51121: [Object9813] + field51157: Object9734 +} + +type Object9811 @Directive21(argument61 : "stringValue41795") @Directive44(argument97 : ["stringValue41794"]) { + field51096: String + field51097: String + field51098: String + field51099: String + field51100: String + field51101: String + field51102: String + field51103: String + field51104: String + field51105: String + field51106: Object2967 + field51107: String + field51108: String + field51109: [String] + field51110: Object9812 + field51114: [String] + field51115: String + field51116: Enum2336 + field51117: [Object9748] +} + +type Object9812 @Directive21(argument61 : "stringValue41797") @Directive44(argument97 : ["stringValue41796"]) { + field51111: String + field51112: String + field51113: String +} + +type Object9813 @Directive21(argument61 : "stringValue41800") @Directive44(argument97 : ["stringValue41799"]) { + field51122: Boolean + field51123: Object9814 + field51156: Boolean +} + +type Object9814 @Directive21(argument61 : "stringValue41802") @Directive44(argument97 : ["stringValue41801"]) { + field51124: String + field51125: String + field51126: String + field51127: String + field51128: String + field51129: String + field51130: String + field51131: [String] + field51132: [String] + field51133: Enum2337 + field51134: String + field51135: [Object9815] + field51139: [Object9816] + field51142: Object9817 + field51150: [String] + field51151: String + field51152: String + field51153: Int + field51154: String + field51155: String +} + +type Object9815 @Directive21(argument61 : "stringValue41805") @Directive44(argument97 : ["stringValue41804"]) { + field51136: String + field51137: [String]! + field51138: Enum2338! +} + +type Object9816 @Directive21(argument61 : "stringValue41808") @Directive44(argument97 : ["stringValue41807"]) { + field51140: String! + field51141: String +} + +type Object9817 @Directive21(argument61 : "stringValue41810") @Directive44(argument97 : ["stringValue41809"]) { + field51143: String + field51144: String + field51145: String + field51146: String + field51147: String + field51148: String + field51149: String +} + +type Object9818 @Directive21(argument61 : "stringValue41816") @Directive44(argument97 : ["stringValue41815"]) { + field51161: [Object9819]! + field51185: Object9824 + field51191: Object9703 +} + +type Object9819 @Directive21(argument61 : "stringValue41818") @Directive44(argument97 : ["stringValue41817"]) { + field51162: Int! + field51163: Int! + field51164: [Object9820]! + field51174: Scalar2! + field51175: [Object9822]! +} + +type Object982 implements Interface76 @Directive21(argument61 : "stringValue5073") @Directive22(argument62 : "stringValue5072") @Directive31 @Directive44(argument97 : ["stringValue5074", "stringValue5075", "stringValue5076"]) @Directive45(argument98 : ["stringValue5077"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union117] + field5221: Boolean + field5713: [Object983] +} + +type Object9820 @Directive21(argument61 : "stringValue41820") @Directive44(argument97 : ["stringValue41819"]) { + field51165: Scalar3! + field51166: Boolean! + field51167: Int! + field51168: Int! + field51169: Object9821! + field51171: Boolean + field51172: Boolean + field51173: Boolean +} + +type Object9821 @Directive21(argument61 : "stringValue41822") @Directive44(argument97 : ["stringValue41821"]) { + field51170: String +} + +type Object9822 @Directive21(argument61 : "stringValue41824") @Directive44(argument97 : ["stringValue41823"]) { + field51176: Object9823 + field51183: Scalar3 + field51184: Scalar3 +} + +type Object9823 @Directive21(argument61 : "stringValue41826") @Directive44(argument97 : ["stringValue41825"]) { + field51177: Boolean + field51178: Boolean + field51179: Int + field51180: Int + field51181: Int + field51182: Int +} + +type Object9824 @Directive21(argument61 : "stringValue41828") @Directive44(argument97 : ["stringValue41827"]) { + field51186: Boolean + field51187: String + field51188: Boolean + field51189: Int + field51190: Scalar3 +} + +type Object9825 @Directive21(argument61 : "stringValue41833") @Directive44(argument97 : ["stringValue41832"]) { + field51193: [Object9720] + field51194: Scalar1 +} + +type Object9826 @Directive21(argument61 : "stringValue41839") @Directive44(argument97 : ["stringValue41838"]) { + field51196: Object9827 + field51579: Object9873 + field51705: Object9887 @deprecated + field51709: Object9888 + field51713: Object9887 + field51714: Object9887 +} + +type Object9827 @Directive21(argument61 : "stringValue41841") @Directive44(argument97 : ["stringValue41840"]) { + field51197: String + field51198: String + field51199: [Object9828] + field51575: Object2949 + field51576: Object2949 + field51577: Object2949 + field51578: Object2949 +} + +type Object9828 @Directive21(argument61 : "stringValue41843") @Directive44(argument97 : ["stringValue41842"]) { + field51200: Object9829 + field51470: Object9860 + field51509: Object9864 + field51514: Boolean + field51515: Object9865 + field51524: Object9866 + field51571: Object9872 +} + +type Object9829 @Directive21(argument61 : "stringValue41845") @Directive44(argument97 : ["stringValue41844"]) { + field51201: [String] + field51202: String + field51203: Float + field51204: String + field51205: String + field51206: Int + field51207: Int + field51208: String + field51209: Object9830 + field51212: String + field51213: [String] + field51214: String + field51215: String + field51216: Scalar2 + field51217: Boolean + field51218: Boolean + field51219: Boolean + field51220: Boolean + field51221: Boolean + field51222: Boolean + field51223: Object9831 + field51241: Float + field51242: Float + field51243: String + field51244: String + field51245: Object9834 + field51250: String + field51251: String + field51252: Int + field51253: Int + field51254: String + field51255: [String] + field51256: Object9835 + field51266: String + field51267: String + field51268: Scalar2 + field51269: Int + field51270: String + field51271: String + field51272: String + field51273: String + field51274: Boolean + field51275: String + field51276: Float + field51277: Int + field51278: Object9836 + field51287: Object9831 + field51288: String + field51289: String + field51290: String + field51291: String + field51292: [Object9837] + field51299: String + field51300: String + field51301: String + field51302: String + field51303: [Int] + field51304: [String] + field51305: [Object9838] + field51315: [String] + field51316: String + field51317: [String] + field51318: [Object9839] + field51342: Float + field51343: Object9842 + field51368: Enum2341 + field51369: [Object9846] + field51377: String + field51378: Boolean + field51379: String + field51380: Int + field51381: Int + field51382: Object9847 + field51384: [Object9848] + field51395: Object9849 + field51398: Object9850 + field51404: Enum2344 + field51405: [Object9833] + field51406: Object9843 + field51407: Enum2345 + field51408: String + field51409: String + field51410: [Object9851] + field51421: [Scalar2] + field51422: String + field51423: [Object9608] + field51424: [Object9608] + field51425: Enum2346 + field51426: [Enum2347] + field51427: Object9852 + field51430: [Object9853] + field51441: Object9857 + field51445: [Object9834] + field51446: Boolean + field51447: String + field51448: Int + field51449: String + field51450: Scalar2 + field51451: Boolean + field51452: Float + field51453: [String] + field51454: String + field51455: String + field51456: String + field51457: Object9858 + field51462: Object9859 + field51466: Object9833 + field51467: Enum2349 + field51468: Scalar2 + field51469: String +} + +type Object983 @Directive20(argument58 : "stringValue5079", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5078") @Directive31 @Directive44(argument97 : ["stringValue5080", "stringValue5081"]) { + field5714: Object899 + field5715: Int + field5716: String + field5717: Object899 + field5718: Object899 + field5719: [Object969] + field5720: String + field5721: String + field5722: String + field5723: String + field5724: Object899 + field5725: Boolean + field5726: Boolean +} + +type Object9830 @Directive21(argument61 : "stringValue41847") @Directive44(argument97 : ["stringValue41846"]) { + field51210: String + field51211: Float +} + +type Object9831 @Directive21(argument61 : "stringValue41849") @Directive44(argument97 : ["stringValue41848"]) { + field51224: Object9832 + field51228: [String] + field51229: String + field51230: [Object9833] +} + +type Object9832 @Directive21(argument61 : "stringValue41851") @Directive44(argument97 : ["stringValue41850"]) { + field51225: String + field51226: String + field51227: String +} + +type Object9833 @Directive21(argument61 : "stringValue41853") @Directive44(argument97 : ["stringValue41852"]) { + field51231: String + field51232: String + field51233: String + field51234: String + field51235: String + field51236: String + field51237: String + field51238: String + field51239: String + field51240: Enum2339 +} + +type Object9834 @Directive21(argument61 : "stringValue41856") @Directive44(argument97 : ["stringValue41855"]) { + field51246: String + field51247: String + field51248: String + field51249: String +} + +type Object9835 @Directive21(argument61 : "stringValue41858") @Directive44(argument97 : ["stringValue41857"]) { + field51257: Scalar2 + field51258: String + field51259: String + field51260: String + field51261: String + field51262: String + field51263: String + field51264: String + field51265: String +} + +type Object9836 @Directive21(argument61 : "stringValue41860") @Directive44(argument97 : ["stringValue41859"]) { + field51279: String + field51280: Boolean + field51281: Scalar2 + field51282: Boolean + field51283: String + field51284: String + field51285: String + field51286: Scalar4 +} + +type Object9837 @Directive21(argument61 : "stringValue41862") @Directive44(argument97 : ["stringValue41861"]) { + field51293: String + field51294: String + field51295: Boolean + field51296: String + field51297: String + field51298: String +} + +type Object9838 @Directive21(argument61 : "stringValue41864") @Directive44(argument97 : ["stringValue41863"]) { + field51306: String + field51307: String + field51308: Boolean + field51309: String + field51310: String + field51311: String + field51312: String + field51313: [String] + field51314: Scalar2 +} + +type Object9839 @Directive21(argument61 : "stringValue41866") @Directive44(argument97 : ["stringValue41865"]) { + field51319: String + field51320: String + field51321: Object2951 + field51322: String + field51323: String + field51324: String + field51325: String + field51326: String + field51327: [Object9840] @deprecated + field51338: String + field51339: String + field51340: String + field51341: Enum2340 +} + +type Object984 implements Interface76 @Directive21(argument61 : "stringValue5086") @Directive22(argument62 : "stringValue5085") @Directive31 @Directive44(argument97 : ["stringValue5087", "stringValue5088", "stringValue5089"]) @Directive45(argument98 : ["stringValue5090"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union118] + field5221: Boolean + field5727: [Object985] +} + +type Object9840 @Directive21(argument61 : "stringValue41868") @Directive44(argument97 : ["stringValue41867"]) { + field51328: String + field51329: String + field51330: String + field51331: String + field51332: String + field51333: String + field51334: Object9841 +} + +type Object9841 @Directive21(argument61 : "stringValue41870") @Directive44(argument97 : ["stringValue41869"]) { + field51335: String + field51336: String + field51337: String +} + +type Object9842 @Directive21(argument61 : "stringValue41873") @Directive44(argument97 : ["stringValue41872"]) { + field51344: [Object9843] + field51367: String +} + +type Object9843 @Directive21(argument61 : "stringValue41875") @Directive44(argument97 : ["stringValue41874"]) { + field51345: String + field51346: Float + field51347: String + field51348: Scalar2 + field51349: [Object9844] + field51358: String + field51359: Scalar2 + field51360: [Object9845] + field51363: String + field51364: Float + field51365: Float + field51366: String +} + +type Object9844 @Directive21(argument61 : "stringValue41877") @Directive44(argument97 : ["stringValue41876"]) { + field51350: String + field51351: Scalar2 + field51352: String + field51353: String + field51354: String + field51355: String + field51356: String + field51357: String +} + +type Object9845 @Directive21(argument61 : "stringValue41879") @Directive44(argument97 : ["stringValue41878"]) { + field51361: Scalar2 + field51362: String +} + +type Object9846 @Directive21(argument61 : "stringValue41882") @Directive44(argument97 : ["stringValue41881"]) { + field51370: String + field51371: String + field51372: String + field51373: String + field51374: Enum2339 + field51375: String + field51376: Enum2342 +} + +type Object9847 @Directive21(argument61 : "stringValue41885") @Directive44(argument97 : ["stringValue41884"]) { + field51383: String +} + +type Object9848 @Directive21(argument61 : "stringValue41887") @Directive44(argument97 : ["stringValue41886"]) { + field51385: Scalar2 + field51386: String + field51387: String + field51388: String + field51389: String + field51390: String + field51391: String + field51392: String + field51393: String + field51394: Object9831 +} + +type Object9849 @Directive21(argument61 : "stringValue41889") @Directive44(argument97 : ["stringValue41888"]) { + field51396: String + field51397: String +} + +type Object985 @Directive20(argument58 : "stringValue5092", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5091") @Directive31 @Directive44(argument97 : ["stringValue5093", "stringValue5094"]) { + field5728: String + field5729: [Object986] + field5745: String + field5746: String + field5747: Object923 + field5748: Object891 + field5749: String + field5750: Object923 +} + +type Object9850 @Directive21(argument61 : "stringValue41891") @Directive44(argument97 : ["stringValue41890"]) { + field51399: String + field51400: String + field51401: String + field51402: String + field51403: Enum2343 +} + +type Object9851 @Directive21(argument61 : "stringValue41896") @Directive44(argument97 : ["stringValue41895"]) { + field51411: String + field51412: String + field51413: String + field51414: String + field51415: String + field51416: String + field51417: Object2951 + field51418: String + field51419: String + field51420: Object9841 +} + +type Object9852 @Directive21(argument61 : "stringValue41900") @Directive44(argument97 : ["stringValue41899"]) { + field51428: Float + field51429: Float +} + +type Object9853 @Directive21(argument61 : "stringValue41902") @Directive44(argument97 : ["stringValue41901"]) { + field51431: String + field51432: Enum2348 + field51433: Union323 +} + +type Object9854 @Directive21(argument61 : "stringValue41906") @Directive44(argument97 : ["stringValue41905"]) { + field51434: [Object9608] +} + +type Object9855 @Directive21(argument61 : "stringValue41908") @Directive44(argument97 : ["stringValue41907"]) { + field51435: String + field51436: String + field51437: Enum602 +} + +type Object9856 @Directive21(argument61 : "stringValue41910") @Directive44(argument97 : ["stringValue41909"]) { + field51438: String + field51439: String + field51440: [Enum602] +} + +type Object9857 @Directive21(argument61 : "stringValue41912") @Directive44(argument97 : ["stringValue41911"]) { + field51442: String + field51443: Float + field51444: String +} + +type Object9858 @Directive21(argument61 : "stringValue41914") @Directive44(argument97 : ["stringValue41913"]) { + field51458: Boolean + field51459: Boolean + field51460: String + field51461: String +} + +type Object9859 @Directive21(argument61 : "stringValue41916") @Directive44(argument97 : ["stringValue41915"]) { + field51463: String + field51464: String + field51465: String +} + +type Object986 @Directive20(argument58 : "stringValue5096", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5095") @Directive31 @Directive44(argument97 : ["stringValue5097", "stringValue5098"]) { + field5730: Object789 + field5731: String + field5732: Object789 + field5733: String + field5734: Float + field5735: Scalar2 + field5736: Object776 + field5737: String + field5738: Int + field5739: Scalar2 + field5740: Float + field5741: String + field5742: String + field5743: Object914 + field5744: Boolean +} + +type Object9860 @Directive21(argument61 : "stringValue41919") @Directive44(argument97 : ["stringValue41918"]) { + field51471: Boolean + field51472: Float + field51473: Object9861 + field51483: String + field51484: Object9862 + field51485: String + field51486: Object9862 + field51487: Float + field51488: Boolean + field51489: Object9862 + field51490: [Object9737] + field51491: Object9862 + field51492: String + field51493: String + field51494: Object9862 + field51495: String + field51496: String + field51497: [Object9863] + field51505: [Enum2350] + field51506: Object2959 + field51507: Object9782 + field51508: Boolean +} + +type Object9861 @Directive21(argument61 : "stringValue41921") @Directive44(argument97 : ["stringValue41920"]) { + field51474: String + field51475: [Object9861] + field51476: Object9862 + field51481: Int + field51482: String +} + +type Object9862 @Directive21(argument61 : "stringValue41923") @Directive44(argument97 : ["stringValue41922"]) { + field51477: Float + field51478: String + field51479: String + field51480: Boolean +} + +type Object9863 @Directive21(argument61 : "stringValue41925") @Directive44(argument97 : ["stringValue41924"]) { + field51498: String + field51499: String + field51500: String + field51501: String + field51502: String + field51503: Enum2322 + field51504: String +} + +type Object9864 @Directive21(argument61 : "stringValue41928") @Directive44(argument97 : ["stringValue41927"]) { + field51510: Boolean + field51511: String + field51512: String + field51513: String +} + +type Object9865 @Directive21(argument61 : "stringValue41930") @Directive44(argument97 : ["stringValue41929"]) { + field51516: Int + field51517: Int + field51518: Int + field51519: String + field51520: String + field51521: Scalar2 + field51522: [String] + field51523: String +} + +type Object9866 @Directive21(argument61 : "stringValue41932") @Directive44(argument97 : ["stringValue41931"]) { + field51525: Boolean + field51526: String + field51527: String + field51528: String + field51529: String + field51530: Object9867 + field51560: Object9868 + field51561: String + field51562: [Object9870] + field51569: Boolean + field51570: Boolean +} + +type Object9867 @Directive21(argument61 : "stringValue41934") @Directive44(argument97 : ["stringValue41933"]) { + field51531: Object9868 + field51540: Object9869 + field51558: Object9868 + field51559: Object9869 +} + +type Object9868 @Directive21(argument61 : "stringValue41936") @Directive44(argument97 : ["stringValue41935"]) { + field51532: String + field51533: Scalar2 + field51534: String + field51535: Boolean + field51536: Boolean + field51537: String + field51538: String + field51539: String +} + +type Object9869 @Directive21(argument61 : "stringValue41938") @Directive44(argument97 : ["stringValue41937"]) { + field51541: String + field51542: String + field51543: String + field51544: String + field51545: String + field51546: String + field51547: String + field51548: String + field51549: String + field51550: Boolean + field51551: String + field51552: String + field51553: String + field51554: String + field51555: String + field51556: String + field51557: Scalar2 +} + +type Object987 implements Interface76 @Directive21(argument61 : "stringValue5103") @Directive22(argument62 : "stringValue5102") @Directive31 @Directive44(argument97 : ["stringValue5104", "stringValue5105", "stringValue5106"]) @Directive45(argument98 : ["stringValue5107"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union119] + field5221: Boolean + field5751: [Object988] +} + +type Object9870 @Directive21(argument61 : "stringValue41940") @Directive44(argument97 : ["stringValue41939"]) { + field51563: String + field51564: String + field51565: [Object9871] +} + +type Object9871 @Directive21(argument61 : "stringValue41942") @Directive44(argument97 : ["stringValue41941"]) { + field51566: String + field51567: String + field51568: String +} + +type Object9872 @Directive21(argument61 : "stringValue41944") @Directive44(argument97 : ["stringValue41943"]) { + field51572: String + field51573: [Object9611] + field51574: Boolean +} + +type Object9873 @Directive21(argument61 : "stringValue41946") @Directive44(argument97 : ["stringValue41945"]) { + field51580: String + field51581: String + field51582: [Object9874] +} + +type Object9874 @Directive21(argument61 : "stringValue41948") @Directive44(argument97 : ["stringValue41947"]) { + field51583: String + field51584: Float + field51585: String + field51586: Object9875 + field51589: String + field51590: String + field51591: Scalar2! + field51592: Boolean + field51593: Object9876 + field51597: String + field51598: Float + field51599: Float + field51600: String + field51601: Object9835 + field51602: [Object9877] + field51615: Int + field51616: Int + field51617: Scalar2 + field51618: Int + field51619: Float + field51620: Int + field51621: String + field51622: [Object9878] + field51630: String + field51631: Float + field51632: [Object9879] + field51658: [Object9882] + field51662: Enum2351 + field51663: Object9836 + field51664: String + field51665: String + field51666: Enum2352 + field51667: [String] + field51668: String + field51669: String + field51670: String + field51671: Object9877 + field51672: String + field51673: String + field51674: String + field51675: Boolean + field51676: String + field51677: Object9883 + field51681: Enum2353 + field51682: [String] + field51683: Object9884 + field51685: Float + field51686: String + field51687: Enum2354 + field51688: [String] + field51689: String + field51690: Float + field51691: String + field51692: String + field51693: Object9838 + field51694: String + field51695: Object9885 + field51699: Object9886 + field51703: String + field51704: Boolean +} + +type Object9875 @Directive21(argument61 : "stringValue41950") @Directive44(argument97 : ["stringValue41949"]) { + field51587: String + field51588: Boolean +} + +type Object9876 @Directive21(argument61 : "stringValue41952") @Directive44(argument97 : ["stringValue41951"]) { + field51594: String + field51595: String + field51596: String +} + +type Object9877 @Directive21(argument61 : "stringValue41954") @Directive44(argument97 : ["stringValue41953"]) { + field51603: Scalar2 + field51604: String + field51605: String + field51606: String + field51607: String + field51608: String + field51609: String + field51610: String + field51611: String + field51612: String + field51613: String + field51614: Int +} + +type Object9878 @Directive21(argument61 : "stringValue41956") @Directive44(argument97 : ["stringValue41955"]) { + field51623: Scalar4 + field51624: Scalar4 + field51625: Int + field51626: Scalar2 + field51627: Boolean + field51628: String + field51629: String +} + +type Object9879 @Directive21(argument61 : "stringValue41958") @Directive44(argument97 : ["stringValue41957"]) { + field51633: Object9877 + field51634: Object9880 +} + +type Object988 @Directive20(argument58 : "stringValue5109", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5108") @Directive31 @Directive44(argument97 : ["stringValue5110", "stringValue5111"]) { + field5752: Enum282 + field5753: [Object989] +} + +type Object9880 @Directive21(argument61 : "stringValue41960") @Directive44(argument97 : ["stringValue41959"]) { + field51635: String + field51636: String + field51637: String + field51638: String + field51639: String + field51640: String + field51641: String + field51642: String + field51643: String + field51644: String + field51645: String + field51646: String + field51647: String + field51648: String + field51649: String + field51650: String + field51651: String + field51652: String + field51653: [Object9881] + field51657: Scalar2 +} + +type Object9881 @Directive21(argument61 : "stringValue41962") @Directive44(argument97 : ["stringValue41961"]) { + field51654: String + field51655: String + field51656: String +} + +type Object9882 @Directive21(argument61 : "stringValue41964") @Directive44(argument97 : ["stringValue41963"]) { + field51659: String + field51660: String + field51661: String +} + +type Object9883 @Directive21(argument61 : "stringValue41968") @Directive44(argument97 : ["stringValue41967"]) { + field51678: String + field51679: String + field51680: String +} + +type Object9884 @Directive21(argument61 : "stringValue41971") @Directive44(argument97 : ["stringValue41970"]) { + field51684: [Object9877] +} + +type Object9885 @Directive21(argument61 : "stringValue41974") @Directive44(argument97 : ["stringValue41973"]) { + field51696: [String] + field51697: [String] + field51698: [String] +} + +type Object9886 @Directive21(argument61 : "stringValue41976") @Directive44(argument97 : ["stringValue41975"]) { + field51700: Enum2355 + field51701: Enum2355 + field51702: Enum2355 +} + +type Object9887 @Directive21(argument61 : "stringValue41979") @Directive44(argument97 : ["stringValue41978"]) { + field51706: String + field51707: String + field51708: [Object9828] +} + +type Object9888 @Directive21(argument61 : "stringValue41981") @Directive44(argument97 : ["stringValue41980"]) { + field51710: String + field51711: String + field51712: [Object9608] +} + +type Object9889 @Directive21(argument61 : "stringValue41987") @Directive44(argument97 : ["stringValue41986"]) { + field51716: [Object9890!] + field51763: [Object2967!] + field51764: String + field51765: Object2949 + field51766: Object2949 + field51767: Object9608 + field51768: Object9608 + field51769: Object9608 + field51770: Object9608 + field51771: Object9608 + field51772: Boolean +} + +type Object989 @Directive20(argument58 : "stringValue5117", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5116") @Directive31 @Directive44(argument97 : ["stringValue5118", "stringValue5119"]) { + field5754: String + field5755: [Object787] + field5756: Object891 + field5757: String +} + +type Object9890 @Directive21(argument61 : "stringValue41989") @Directive44(argument97 : ["stringValue41988"]) { + field51717: Enum2356! + field51718: [Object9891] +} + +type Object9891 @Directive21(argument61 : "stringValue41992") @Directive44(argument97 : ["stringValue41991"]) { + field51719: String + field51720: [Object9608!] + field51721: [Object9892!] + field51762: [String!] +} + +type Object9892 @Directive21(argument61 : "stringValue41994") @Directive44(argument97 : ["stringValue41993"]) { + field51722: Enum2357! + field51723: Enum2358 + field51724: Union324 +} + +type Object9893 @Directive21(argument61 : "stringValue41999") @Directive44(argument97 : ["stringValue41998"]) { + field51725: String +} + +type Object9894 @Directive21(argument61 : "stringValue42001") @Directive44(argument97 : ["stringValue42000"]) { + field51726: String +} + +type Object9895 @Directive21(argument61 : "stringValue42003") @Directive44(argument97 : ["stringValue42002"]) { + field51727: String + field51728: String + field51729: String +} + +type Object9896 @Directive21(argument61 : "stringValue42005") @Directive44(argument97 : ["stringValue42004"]) { + field51730: String +} + +type Object9897 @Directive21(argument61 : "stringValue42007") @Directive44(argument97 : ["stringValue42006"]) { + field51731: String + field51732: String +} + +type Object9898 @Directive21(argument61 : "stringValue42009") @Directive44(argument97 : ["stringValue42008"]) { + field51733: String + field51734: String +} + +type Object9899 @Directive21(argument61 : "stringValue42011") @Directive44(argument97 : ["stringValue42010"]) { + field51735: String + field51736: String + field51737: String +} + +type Object99 @Directive21(argument61 : "stringValue384") @Directive44(argument97 : ["stringValue383"]) { + field661: Float + field662: String + field663: String + field664: Boolean +} + +type Object990 implements Interface76 @Directive21(argument61 : "stringValue5124") @Directive22(argument62 : "stringValue5123") @Directive31 @Directive44(argument97 : ["stringValue5125", "stringValue5126", "stringValue5127"]) @Directive45(argument98 : ["stringValue5128"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union120] + field5221: Boolean +} + +type Object9900 @Directive21(argument61 : "stringValue42013") @Directive44(argument97 : ["stringValue42012"]) { + field51738: String + field51739: String + field51740: String +} + +type Object9901 @Directive21(argument61 : "stringValue42015") @Directive44(argument97 : ["stringValue42014"]) { + field51741: String + field51742: String + field51743: String +} + +type Object9902 @Directive21(argument61 : "stringValue42017") @Directive44(argument97 : ["stringValue42016"]) { + field51744: String + field51745: String + field51746: String +} + +type Object9903 @Directive21(argument61 : "stringValue42019") @Directive44(argument97 : ["stringValue42018"]) { + field51747: String + field51748: String + field51749: String +} + +type Object9904 @Directive21(argument61 : "stringValue42021") @Directive44(argument97 : ["stringValue42020"]) { + field51750: String + field51751: String + field51752: String @deprecated + field51753: String +} + +type Object9905 @Directive21(argument61 : "stringValue42023") @Directive44(argument97 : ["stringValue42022"]) { + field51754: String + field51755: String +} + +type Object9906 @Directive21(argument61 : "stringValue42025") @Directive44(argument97 : ["stringValue42024"]) { + field51756: String + field51757: String +} + +type Object9907 @Directive21(argument61 : "stringValue42027") @Directive44(argument97 : ["stringValue42026"]) { + field51758: String + field51759: String + field51760: String + field51761: String +} + +type Object9908 @Directive21(argument61 : "stringValue42034") @Directive44(argument97 : ["stringValue42033"]) { + field51774: [Object9604] + field51775: Object9909 +} + +type Object9909 @Directive21(argument61 : "stringValue42036") @Directive44(argument97 : ["stringValue42035"]) { + field51776: Int! + field51777: Boolean + field51778: Boolean + field51779: Boolean + field51780: String + field51781: Object2949 + field51782: String +} + +type Object991 @Directive20(argument58 : "stringValue5133", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5132") @Directive31 @Directive44(argument97 : ["stringValue5134", "stringValue5135"]) { + field5758: String + field5759: [Object992] +} + +type Object9910 @Directive21(argument61 : "stringValue42050") @Directive44(argument97 : ["stringValue42049"]) { + field51784: String! + field51785: Object9911 + field51913: [Object9927!] + field53425: [Object10130!] + field53432: [Object10131!] +} + +type Object9911 @Directive21(argument61 : "stringValue42052") @Directive44(argument97 : ["stringValue42051"]) { + field51786: Enum2363 @deprecated + field51787: Enum2344 + field51788: Object9912 + field51797: Object9639 + field51798: Object9913 @deprecated + field51823: Object9915 + field51871: Object9921 + field51899: Enum2366 + field51900: Enum2345 + field51901: String + field51902: Enum2367 + field51903: Object9925 + field51910: String + field51911: Enum2369 + field51912: String +} + +type Object9912 @Directive21(argument61 : "stringValue42055") @Directive44(argument97 : ["stringValue42054"]) { + field51789: String + field51790: String + field51791: String + field51792: Int + field51793: String + field51794: String + field51795: Scalar2 + field51796: Float +} + +type Object9913 @Directive21(argument61 : "stringValue42057") @Directive44(argument97 : ["stringValue42056"]) { + field51799: Object9914 + field51822: [Scalar2!] @deprecated +} + +type Object9914 @Directive21(argument61 : "stringValue42059") @Directive44(argument97 : ["stringValue42058"]) { + field51800: Scalar2 + field51801: String + field51802: Int + field51803: Float + field51804: Float + field51805: Int + field51806: String + field51807: String + field51808: Int + field51809: String + field51810: Boolean + field51811: Int + field51812: Int + field51813: [Int] + field51814: Float + field51815: Float + field51816: Float + field51817: Float + field51818: Float + field51819: Float + field51820: Float + field51821: Scalar2 +} + +type Object9915 @Directive21(argument61 : "stringValue42061") @Directive44(argument97 : ["stringValue42060"]) { + field51824: Int + field51825: Int + field51826: String + field51827: String + field51828: Boolean + field51829: Boolean + field51830: Boolean + field51831: String + field51832: Scalar2 + field51833: String + field51834: String + field51835: Boolean + field51836: Boolean + field51837: Object9757 + field51838: Boolean @deprecated + field51839: String @deprecated + field51840: Object9732 @deprecated + field51841: [Object9808] @deprecated + field51842: Object9778 @deprecated + field51843: [Object9723] @deprecated + field51844: Object9758 @deprecated + field51845: Object9771 @deprecated + field51846: Object9721 @deprecated + field51847: String @deprecated + field51848: Object9723 @deprecated + field51849: [Object9779] @deprecated + field51850: Object9754 @deprecated + field51851: Object9782 @deprecated + field51852: Object9809 @deprecated + field51853: Union325 @deprecated + field51865: Object2949 + field51866: Object9919 +} + +type Object9916 @Directive21(argument61 : "stringValue42064") @Directive44(argument97 : ["stringValue42063"]) { + field51854: Object9792 +} + +type Object9917 @Directive21(argument61 : "stringValue42066") @Directive44(argument97 : ["stringValue42065"]) { + field51855: String + field51856: Enum2364 + field51857: Object9792 + field51858: [Object9918]! +} + +type Object9918 @Directive21(argument61 : "stringValue42069") @Directive44(argument97 : ["stringValue42068"]) { + field51859: String! + field51860: String + field51861: String + field51862: Boolean! + field51863: String + field51864: [Union319] +} + +type Object9919 @Directive21(argument61 : "stringValue42071") @Directive44(argument97 : ["stringValue42070"]) { + field51867: String + field51868: [Object9920] +} + +type Object992 @Directive20(argument58 : "stringValue5137", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5136") @Directive31 @Directive44(argument97 : ["stringValue5138", "stringValue5139"]) { + field5760: String + field5761: String + field5762: String + field5763: String + field5764: String + field5765: String + field5766: String + field5767: String + field5768: String + field5769: String +} + +type Object9920 @Directive21(argument61 : "stringValue42073") @Directive44(argument97 : ["stringValue42072"]) { + field51869: String + field51870: [Union326] +} + +type Object9921 @Directive21(argument61 : "stringValue42076") @Directive44(argument97 : ["stringValue42075"]) { + field51872: Enum2344 + field51873: String + field51874: String + field51875: String + field51876: Object9922 @deprecated + field51878: String + field51879: [Scalar2] + field51880: Float + field51881: Int + field51882: Object9923 + field51890: Object9924 +} + +type Object9922 @Directive21(argument61 : "stringValue42078") @Directive44(argument97 : ["stringValue42077"]) { + field51877: [Enum2365!] +} + +type Object9923 @Directive21(argument61 : "stringValue42081") @Directive44(argument97 : ["stringValue42080"]) { + field51883: String + field51884: String + field51885: String + field51886: Object9922 + field51887: Scalar2 + field51888: Scalar2 + field51889: Scalar2 +} + +type Object9924 @Directive21(argument61 : "stringValue42083") @Directive44(argument97 : ["stringValue42082"]) { + field51891: String + field51892: String + field51893: Int + field51894: String + field51895: Scalar2 + field51896: Scalar2 + field51897: Scalar2 + field51898: [Scalar2!] +} + +type Object9925 @Directive21(argument61 : "stringValue42087") @Directive44(argument97 : ["stringValue42086"]) { + field51904: Object9926 + field51907: String + field51908: String + field51909: Enum2368 +} + +type Object9926 @Directive21(argument61 : "stringValue42089") @Directive44(argument97 : ["stringValue42088"]) { + field51905: String + field51906: String +} + +type Object9927 @Directive21(argument61 : "stringValue42093") @Directive44(argument97 : ["stringValue42092"]) { + field51914: String + field51915: Enum2370 + field51916: String + field51917: [Enum2371] + field51918: String @deprecated + field51919: String @deprecated + field51920: String + field51921: Enum2372 + field51922: String + field51923: Object2949 + field51924: Object9928 + field51927: Union327 +} + +type Object9928 @Directive21(argument61 : "stringValue42098") @Directive44(argument97 : ["stringValue42097"]) { + field51925: String! + field51926: String! +} + +type Object9929 @Directive21(argument61 : "stringValue42101") @Directive44(argument97 : ["stringValue42100"]) { + field51928: String + field51929: String + field51930: [Object9930!] + field51942: [Object9930!] + field51943: String + field51944: Object9608 +} + +type Object993 implements Interface76 @Directive21(argument61 : "stringValue5141") @Directive22(argument62 : "stringValue5140") @Directive31 @Directive44(argument97 : ["stringValue5142", "stringValue5143", "stringValue5144"]) @Directive45(argument98 : ["stringValue5145"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union121] + field5221: Boolean + field5770: [Object994] +} + +type Object9930 @Directive21(argument61 : "stringValue42103") @Directive44(argument97 : ["stringValue42102"]) { + field51931: String + field51932: String + field51933: String + field51934: [Object9931!] +} + +type Object9931 @Directive21(argument61 : "stringValue42105") @Directive44(argument97 : ["stringValue42104"]) { + field51935: String + field51936: String + field51937: String + field51938: Enum602 + field51939: Object2967 + field51940: Boolean + field51941: [Object2967!] +} + +type Object9932 @Directive21(argument61 : "stringValue42107") @Directive44(argument97 : ["stringValue42106"]) { + field51945: String + field51946: [Object9608!] + field51947: String + field51948: String @deprecated + field51949: Union317 @deprecated + field51950: Interface127 +} + +type Object9933 @Directive21(argument61 : "stringValue42109") @Directive44(argument97 : ["stringValue42108"]) { + field51951: String + field51952: String + field51953: Object9608 + field51954: [Object9931!] +} + +type Object9934 @Directive21(argument61 : "stringValue42111") @Directive44(argument97 : ["stringValue42110"]) { + field51955: String + field51956: String + field51957: Object9608 +} + +type Object9935 @Directive21(argument61 : "stringValue42113") @Directive44(argument97 : ["stringValue42112"]) { + field51958: String + field51959: String + field51960: Object9608 + field51961: Object9608 + field51962: [Object9608!] +} + +type Object9936 @Directive21(argument61 : "stringValue42115") @Directive44(argument97 : ["stringValue42114"]) { + field51963: String + field51964: String + field51965: [Object9937!] + field51970: [Object9937!] + field51971: String + field51972: Object9608 +} + +type Object9937 @Directive21(argument61 : "stringValue42117") @Directive44(argument97 : ["stringValue42116"]) { + field51966: String + field51967: String + field51968: String + field51969: [Object9931!] +} + +type Object9938 @Directive21(argument61 : "stringValue42119") @Directive44(argument97 : ["stringValue42118"]) { + field51973: String + field51974: String + field51975: [Object9608!] + field51976: String + field51977: String + field51978: String + field51979: Object2967 + field51980: Int + field51981: Object9939 + field52000: Object9939 + field52001: Scalar2 + field52002: String + field52003: String + field52004: Object9940 + field52027: String +} + +type Object9939 @Directive21(argument61 : "stringValue42121") @Directive44(argument97 : ["stringValue42120"]) { + field51982: Object2949 + field51983: Object2949 + field51984: Object2949 + field51985: Object9608 + field51986: Object2949 + field51987: Object2949 + field51988: Object2949 + field51989: Object2949 + field51990: Object9608 + field51991: Object2949 @deprecated + field51992: Object2949 @deprecated + field51993: Object2949 + field51994: Object2949 + field51995: Object2949 + field51996: Object2949 + field51997: Object2949 + field51998: Object2949 + field51999: Object2949 +} + +type Object994 @Directive20(argument58 : "stringValue5147", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5146") @Directive31 @Directive44(argument97 : ["stringValue5148", "stringValue5149"]) { + field5771: String + field5772: Object899 + field5773: Object398 + field5774: String + field5775: String +} + +type Object9940 @Directive21(argument61 : "stringValue42123") @Directive44(argument97 : ["stringValue42122"]) { + field52005: String @deprecated + field52006: Object9941 + field52025: Boolean + field52026: Boolean +} + +type Object9941 @Directive21(argument61 : "stringValue42125") @Directive44(argument97 : ["stringValue42124"]) { + field52007: String + field52008: Object9942 + field52017: Object9943 +} + +type Object9942 @Directive21(argument61 : "stringValue42127") @Directive44(argument97 : ["stringValue42126"]) { + field52009: String + field52010: String + field52011: String + field52012: String + field52013: String + field52014: String + field52015: String + field52016: Enum602 +} + +type Object9943 @Directive21(argument61 : "stringValue42129") @Directive44(argument97 : ["stringValue42128"]) { + field52018: String + field52019: String + field52020: Object9944 + field52023: Scalar2 + field52024: Object2949 +} + +type Object9944 @Directive21(argument61 : "stringValue42131") @Directive44(argument97 : ["stringValue42130"]) { + field52021: String + field52022: String +} + +type Object9945 @Directive21(argument61 : "stringValue42133") @Directive44(argument97 : ["stringValue42132"]) { + field52028: String + field52029: String + field52030: Enum2373 + field52031: Boolean + field52032: Object2949 + field52033: Scalar2 @deprecated + field52034: String @deprecated + field52035: String @deprecated + field52036: Object9946 + field52039: String + field52040: String + field52041: [Object9608!] + field52042: String + field52043: Int + field52044: Object9939 + field52045: Object9608 + field52046: Object9757 @deprecated + field52047: Object9771 + field52048: Object9734 + field52049: [Object9947!] + field52066: Object9778 + field52067: Boolean + field52068: Boolean + field52069: Object9732 + field52070: String + field52071: String + field52072: String + field52073: Boolean + field52074: String + field52075: Object9947 + field52076: Boolean + field52077: Object9782 + field52078: Object9949 @deprecated + field52091: Object9608 + field52092: Object9950 + field52110: Object9608 + field52111: Enum2376 + field52112: Union325 + field52113: Object2949 + field52114: String +} + +type Object9946 @Directive21(argument61 : "stringValue42136") @Directive44(argument97 : ["stringValue42135"]) { + field52037: String + field52038: Enum2374 +} + +type Object9947 @Directive21(argument61 : "stringValue42139") @Directive44(argument97 : ["stringValue42138"]) { + field52050: Int + field52051: String + field52052: String + field52053: [Object9725] + field52054: Object9608 + field52055: [String!] + field52056: Enum2314 + field52057: [Object9948!] + field52062: String + field52063: String + field52064: Float + field52065: Object9729 +} + +type Object9948 @Directive21(argument61 : "stringValue42141") @Directive44(argument97 : ["stringValue42140"]) { + field52058: Enum2316 + field52059: String + field52060: String + field52061: String +} + +type Object9949 @Directive21(argument61 : "stringValue42143") @Directive44(argument97 : ["stringValue42142"]) { + field52079: String + field52080: Scalar3 + field52081: Scalar3 + field52082: Int + field52083: Boolean + field52084: Object9753 + field52085: Object9721 + field52086: [Object9721] + field52087: Object9721 + field52088: Object9758 + field52089: Object9723 + field52090: Object9754 +} + +type Object995 implements Interface76 @Directive21(argument61 : "stringValue5154") @Directive22(argument62 : "stringValue5153") @Directive31 @Directive44(argument97 : ["stringValue5155", "stringValue5156", "stringValue5157"]) @Directive45(argument98 : ["stringValue5158"]) { + field5122: Object886 + field5149: String + field5150: Object888 + field5185: String + field5186: String + field5187: [Interface77] + field5189: Object891 + field5203: Object892 @Directive18 + field5207: Object893 @Directive18 + field5212: Enum154 + field5218: String + field5219: [Object422] + field5220: [Union122] + field5221: Boolean + field5281: Object909 + field5421: String + field5776: Boolean + field5777: Object1 + field5778: [Object787] + field5779: String + field5780: Object1 + field5781: Object1 + field5782: Object480 + field5783: Object996 + field5785: Object997 + field5796: String + field5797: Object450 + field5798: Float + field5799: Float + field5800: Float + field5801: Float +} + +type Object9950 @Directive21(argument61 : "stringValue42145") @Directive44(argument97 : ["stringValue42144"]) { + field52093: Enum2344 @deprecated + field52094: Object9912 + field52095: Object9608 + field52096: Object9608 + field52097: Object9608 + field52098: Scalar2 + field52099: Enum2375 + field52100: Object9951 + field52106: Interface130 + field52107: Object9611 + field52108: Scalar2 + field52109: Boolean +} + +type Object9951 @Directive21(argument61 : "stringValue42148") @Directive44(argument97 : ["stringValue42147"]) { + field52101: String + field52102: String + field52103: Enum602 + field52104: Object9611 + field52105: Object2949 +} + +type Object9952 @Directive21(argument61 : "stringValue42151") @Directive44(argument97 : ["stringValue42150"]) { + field52115: String + field52116: Object9611 + field52117: Object9917 +} + +type Object9953 @Directive21(argument61 : "stringValue42153") @Directive44(argument97 : ["stringValue42152"]) { + field52118: String + field52119: [Enum2377] @deprecated + field52120: [String] + field52121: [Object9954] + field52127: Object9955 +} + +type Object9954 @Directive21(argument61 : "stringValue42156") @Directive44(argument97 : ["stringValue42155"]) { + field52122: String + field52123: String + field52124: String + field52125: Enum602 + field52126: [Object9931!] +} + +type Object9955 @Directive21(argument61 : "stringValue42158") @Directive44(argument97 : ["stringValue42157"]) { + field52128: String + field52129: String + field52130: Enum602 + field52131: String + field52132: Object2967 + field52133: Object2949 + field52134: String + field52135: Union317 + field52136: String + field52137: String + field52138: [String] +} + +type Object9956 @Directive21(argument61 : "stringValue42160") @Directive44(argument97 : ["stringValue42159"]) { + field52139: String + field52140: [Enum2377] @deprecated + field52141: Int + field52142: [Object9608!] + field52143: Object9939 + field52144: Object9939 + field52145: Boolean + field52146: Boolean +} + +type Object9957 @Directive21(argument61 : "stringValue42162") @Directive44(argument97 : ["stringValue42161"]) { + field52147: String + field52148: Object9811 + field52149: Object9958 + field52156: Object9608 +} + +type Object9958 @Directive21(argument61 : "stringValue42164") @Directive44(argument97 : ["stringValue42163"]) { + field52150: String + field52151: String + field52152: [Object9608] + field52153: String + field52154: [Object9608] + field52155: String +} + +type Object9959 @Directive21(argument61 : "stringValue42166") @Directive44(argument97 : ["stringValue42165"]) { + field52157: String + field52158: [Enum2377] @deprecated + field52159: Object9960 + field52193: Int + field52194: Scalar2 + field52195: String + field52196: Object9939 + field52197: Int + field52198: Object9771 + field52199: Object9734 + field52200: [Object9947!] + field52201: Object9732 + field52202: Boolean + field52203: Object9778 + field52204: Object9809 + field52205: [Object2950] + field52206: Object9782 + field52207: Boolean + field52208: Object9949 @deprecated + field52209: Object9963 + field52213: String + field52214: Object9721 + field52215: Object9947 + field52216: Object9748 + field52217: Object9964 + field52223: Int + field52224: [Object9813] + field52225: Object2949 + field52226: Object2949 + field52227: Object9919 + field52228: Union325 +} + +type Object996 @Directive20(argument58 : "stringValue5163", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5162") @Directive31 @Directive44(argument97 : ["stringValue5164", "stringValue5165"]) { + field5784: Object398 +} + +type Object9960 @Directive21(argument61 : "stringValue42168") @Directive44(argument97 : ["stringValue42167"]) { + field52160: Boolean + field52161: Int + field52162: Int + field52163: Int + field52164: [Object9961] + field52170: String + field52171: Int + field52172: [Object9962] + field52181: Float + field52182: Boolean + field52183: String + field52184: Object9608 + field52185: Object2949 + field52186: Object2949 + field52187: Object2949 + field52188: Object2949 + field52189: Object2949 + field52190: String + field52191: Object2949 + field52192: Object2949 +} + +type Object9961 @Directive21(argument61 : "stringValue42170") @Directive44(argument97 : ["stringValue42169"]) { + field52165: String + field52166: Int + field52167: String + field52168: String + field52169: Float +} + +type Object9962 @Directive21(argument61 : "stringValue42172") @Directive44(argument97 : ["stringValue42171"]) { + field52173: String! + field52174: Int + field52175: String + field52176: String + field52177: String + field52178: String + field52179: String + field52180: Boolean +} + +type Object9963 @Directive21(argument61 : "stringValue42174") @Directive44(argument97 : ["stringValue42173"]) { + field52210: String + field52211: String + field52212: Int +} + +type Object9964 @Directive21(argument61 : "stringValue42176") @Directive44(argument97 : ["stringValue42175"]) { + field52218: String + field52219: String + field52220: String + field52221: Int + field52222: Int +} + +type Object9965 @Directive21(argument61 : "stringValue42178") @Directive44(argument97 : ["stringValue42177"]) { + field52229: String + field52230: Object2949 + field52231: Scalar2 @deprecated + field52232: String @deprecated + field52233: Int + field52234: Object9939 + field52235: Object9757 @deprecated + field52236: Object9771 @deprecated + field52237: Object9734 + field52238: [Object9947!] + field52239: Object9778 + field52240: Boolean + field52241: Object9732 + field52242: String + field52243: String + field52244: String + field52245: Boolean + field52246: Object9782 + field52247: Object9949 @deprecated + field52248: String + field52249: Object9721 + field52250: Object9941 + field52251: Object9608 + field52252: Union325 +} + +type Object9966 @Directive21(argument61 : "stringValue42180") @Directive44(argument97 : ["stringValue42179"]) { + field52253: String + field52254: [Enum2377] @deprecated + field52255: Object9811 +} + +type Object9967 @Directive21(argument61 : "stringValue42182") @Directive44(argument97 : ["stringValue42181"]) { + field52256: String + field52257: [Enum2377] @deprecated + field52258: [Object2967!] + field52259: String + field52260: Object9968 + field52295: [Object9972] + field52300: Object9973! + field52303: [Object9974] + field52313: Object9811 + field52314: Object9811 + field52315: Object9811 + field52316: Object9811 + field52317: [Object9608!] + field52318: Object9975 + field52326: Object9608 + field52327: Object9608 + field52328: Object9608 + field52329: [Object9976] + field52334: Object9811 + field52335: Object9958 + field52336: Object9608 + field52337: Object9941 + field52338: Object9734 + field52339: [Object9977] + field52343: Object2949 + field52344: Object2949 + field52345: Object9978 + field52351: Object9960 + field52352: Object2949 + field52353: Object9979 +} + +type Object9968 @Directive21(argument61 : "stringValue42184") @Directive44(argument97 : ["stringValue42183"]) { + field52261: String + field52262: [Object9969] + field52271: String + field52272: Scalar2 + field52273: Boolean + field52274: String + field52275: String + field52276: String + field52277: String + field52278: String + field52279: String + field52280: [String] + field52281: Object9970 + field52288: Object9955 + field52289: String + field52290: Boolean + field52291: String + field52292: Object2949 + field52293: Object2949 + field52294: Object2949 +} + +type Object9969 @Directive21(argument61 : "stringValue42186") @Directive44(argument97 : ["stringValue42185"]) { + field52263: Int + field52264: String + field52265: String + field52266: String + field52267: String + field52268: String + field52269: String + field52270: String +} + +type Object997 @Directive20(argument58 : "stringValue5167", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5166") @Directive31 @Directive44(argument97 : ["stringValue5168", "stringValue5169"]) { + field5786: Object998 + field5790: [Object999] +} + +type Object9970 @Directive21(argument61 : "stringValue42188") @Directive44(argument97 : ["stringValue42187"]) { + field52282: String + field52283: String + field52284: [Object9971] +} + +type Object9971 @Directive21(argument61 : "stringValue42190") @Directive44(argument97 : ["stringValue42189"]) { + field52285: String + field52286: String + field52287: String +} + +type Object9972 @Directive21(argument61 : "stringValue42192") @Directive44(argument97 : ["stringValue42191"]) { + field52296: String + field52297: String + field52298: String + field52299: String +} + +type Object9973 @Directive21(argument61 : "stringValue42194") @Directive44(argument97 : ["stringValue42193"]) { + field52301: String + field52302: String +} + +type Object9974 @Directive21(argument61 : "stringValue42196") @Directive44(argument97 : ["stringValue42195"]) { + field52304: String + field52305: Enum2378 + field52306: String + field52307: String + field52308: String + field52309: String + field52310: String + field52311: String + field52312: String +} + +type Object9975 @Directive21(argument61 : "stringValue42199") @Directive44(argument97 : ["stringValue42198"]) { + field52319: String + field52320: String + field52321: String + field52322: String + field52323: Object2949 + field52324: String + field52325: String +} + +type Object9976 @Directive21(argument61 : "stringValue42201") @Directive44(argument97 : ["stringValue42200"]) { + field52330: [String]! + field52331: Scalar2! + field52332: String! + field52333: [Enum602]! +} + +type Object9977 @Directive21(argument61 : "stringValue42203") @Directive44(argument97 : ["stringValue42202"]) { + field52340: String + field52341: [String!] + field52342: Enum2379 +} + +type Object9978 @Directive21(argument61 : "stringValue42206") @Directive44(argument97 : ["stringValue42205"]) { + field52346: Float + field52347: Int + field52348: [String] + field52349: String + field52350: Int +} + +type Object9979 @Directive21(argument61 : "stringValue42208") @Directive44(argument97 : ["stringValue42207"]) { + field52354: String + field52355: String + field52356: String + field52357: String + field52358: Object9608 + field52359: Object9608 + field52360: Object9608 + field52361: Object9980 + field52379: Object9608 +} + +type Object998 @Directive20(argument58 : "stringValue5171", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5170") @Directive31 @Directive44(argument97 : ["stringValue5172", "stringValue5173"]) { + field5787: String + field5788: String + field5789: String +} + +type Object9980 @Directive21(argument61 : "stringValue42210") @Directive44(argument97 : ["stringValue42209"]) { + field52362: Object9981 + field52374: Object9987 +} + +type Object9981 @Directive21(argument61 : "stringValue42212") @Directive44(argument97 : ["stringValue42211"]) { + field52363: String + field52364: [Object9982] + field52372: [Object9982] + field52373: Object9608 +} + +type Object9982 @Directive21(argument61 : "stringValue42214") @Directive44(argument97 : ["stringValue42213"]) { + field52365: String + field52366: String + field52367: [Union328] +} + +type Object9983 @Directive21(argument61 : "stringValue42217") @Directive44(argument97 : ["stringValue42216"]) { + field52368: [Object9608] +} + +type Object9984 @Directive21(argument61 : "stringValue42219") @Directive44(argument97 : ["stringValue42218"]) { + field52369: [String] +} + +type Object9985 @Directive21(argument61 : "stringValue42221") @Directive44(argument97 : ["stringValue42220"]) { + field52370: [String] +} + +type Object9986 @Directive21(argument61 : "stringValue42223") @Directive44(argument97 : ["stringValue42222"]) { + field52371: [String] +} + +type Object9987 @Directive21(argument61 : "stringValue42225") @Directive44(argument97 : ["stringValue42224"]) { + field52375: String + field52376: String + field52377: Object9608 + field52378: Object9608 +} + +type Object9988 @Directive21(argument61 : "stringValue42227") @Directive44(argument97 : ["stringValue42226"]) { + field52380: String + field52381: [Enum2377] @deprecated + field52382: [Object2967!] + field52383: String + field52384: Object9608 + field52385: Object9608 + field52386: Object9608 + field52387: Object9608 + field52388: Boolean + field52389: Object9951 + field52390: Object9960 + field52391: Object9950 + field52392: [Object9977] + field52393: Object2949 + field52394: Object2949 + field52395: Object9978 + field52396: Object2949 +} + +type Object9989 @Directive21(argument61 : "stringValue42229") @Directive44(argument97 : ["stringValue42228"]) { + field52397: String + field52398: [Object9990] + field52403: Object9991 +} + +type Object999 @Directive20(argument58 : "stringValue5175", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue5174") @Directive31 @Directive44(argument97 : ["stringValue5176", "stringValue5177"]) { + field5791: [Object1000] + field5795: Enum283 +} + +type Object9990 @Directive21(argument61 : "stringValue42231") @Directive44(argument97 : ["stringValue42230"]) { + field52399: String + field52400: String + field52401: String + field52402: String +} + +type Object9991 @Directive21(argument61 : "stringValue42233") @Directive44(argument97 : ["stringValue42232"]) { + field52404: String +} + +type Object9992 @Directive21(argument61 : "stringValue42235") @Directive44(argument97 : ["stringValue42234"]) { + field52405: String + field52406: [Enum2377] @deprecated + field52407: Object9608 + field52408: Object9968 + field52409: Object9975 + field52410: Object9993 + field52420: Object2949 + field52421: Object2949 +} + +type Object9993 @Directive21(argument61 : "stringValue42237") @Directive44(argument97 : ["stringValue42236"]) { + field52411: String + field52412: String + field52413: [Object9994] + field52418: Object9955 + field52419: Int +} + +type Object9994 @Directive21(argument61 : "stringValue42239") @Directive44(argument97 : ["stringValue42238"]) { + field52414: String + field52415: String + field52416: Object9973 + field52417: Enum602 +} + +type Object9995 @Directive21(argument61 : "stringValue42241") @Directive44(argument97 : ["stringValue42240"]) { + field52422: String + field52423: Object9955 + field52424: Object9968 + field52425: Object9975 + field52426: Object9993 + field52427: Object9955 + field52428: [Object9996] + field52438: [Object2950] + field52439: Object2949 + field52440: Object2949 +} + +type Object9996 @Directive21(argument61 : "stringValue42243") @Directive44(argument97 : ["stringValue42242"]) { + field52429: String + field52430: String + field52431: String + field52432: String + field52433: Object9955 + field52434: String + field52435: Object9951 + field52436: String + field52437: String +} + +type Object9997 @Directive21(argument61 : "stringValue42245") @Directive44(argument97 : ["stringValue42244"]) { + field52441: String + field52442: [Enum2377] + field52443: [Object9931] + field52444: [Object9998] + field52449: Object9955 +} + +type Object9998 @Directive21(argument61 : "stringValue42247") @Directive44(argument97 : ["stringValue42246"]) { + field52445: String + field52446: String + field52447: Enum2377 + field52448: [String] +} + +type Object9999 @Directive21(argument61 : "stringValue42249") @Directive44(argument97 : ["stringValue42248"]) { + field52450: String + field52451: [Enum2377] + field52452: Object9608 + field52453: Object9608 + field52454: Object9608 + field52455: Int + field52456: Object10000 +} + +enum Enum1 @Directive19(argument57 : "stringValue22") @Directive22(argument62 : "stringValue21") @Directive44(argument97 : ["stringValue23", "stringValue24"]) { + EnumValue1 + EnumValue2 +} + +enum Enum10 @Directive19(argument57 : "stringValue115") @Directive22(argument62 : "stringValue114") @Directive44(argument97 : ["stringValue116", "stringValue117"]) { + EnumValue100 + EnumValue101 + EnumValue102 + EnumValue103 + EnumValue104 + EnumValue105 + EnumValue106 + EnumValue107 + EnumValue108 + EnumValue109 + EnumValue110 + EnumValue111 + EnumValue112 + EnumValue113 + EnumValue114 + EnumValue115 + EnumValue116 + EnumValue117 + EnumValue118 + EnumValue119 + EnumValue120 + EnumValue121 + EnumValue122 + EnumValue123 + EnumValue124 + EnumValue125 + EnumValue126 + EnumValue127 + EnumValue128 + EnumValue129 + EnumValue130 + EnumValue131 + EnumValue132 + EnumValue133 + EnumValue134 + EnumValue135 + EnumValue136 + EnumValue137 + EnumValue138 + EnumValue139 + EnumValue140 + EnumValue141 + EnumValue142 + EnumValue143 + EnumValue144 + EnumValue145 + EnumValue146 + EnumValue147 + EnumValue148 + EnumValue149 + EnumValue150 + EnumValue151 + EnumValue152 + EnumValue153 + EnumValue154 + EnumValue155 + EnumValue156 + EnumValue157 + EnumValue158 + EnumValue159 + EnumValue160 + EnumValue161 + EnumValue162 + EnumValue163 + EnumValue164 + EnumValue165 + EnumValue166 + EnumValue167 + EnumValue168 + EnumValue169 + EnumValue170 + EnumValue171 + EnumValue172 + EnumValue173 + EnumValue174 + EnumValue175 + EnumValue176 + EnumValue177 + EnumValue178 + EnumValue179 + EnumValue180 + EnumValue181 + EnumValue182 + EnumValue183 + EnumValue184 + EnumValue185 + EnumValue186 + EnumValue187 + EnumValue188 + EnumValue189 + EnumValue190 + EnumValue191 + EnumValue192 + EnumValue193 + EnumValue194 + EnumValue195 + EnumValue196 + EnumValue197 + EnumValue198 + EnumValue199 + EnumValue200 + EnumValue201 + EnumValue202 + EnumValue203 + EnumValue204 + EnumValue205 + EnumValue206 + EnumValue207 + EnumValue208 + EnumValue209 + EnumValue210 + EnumValue211 + EnumValue212 + EnumValue213 + EnumValue214 + EnumValue215 + EnumValue216 + EnumValue217 + EnumValue218 + EnumValue219 + EnumValue220 + EnumValue221 + EnumValue222 + EnumValue223 + EnumValue224 + EnumValue225 + EnumValue226 + EnumValue227 + EnumValue228 + EnumValue229 + EnumValue230 + EnumValue231 + EnumValue232 + EnumValue233 + EnumValue234 + EnumValue235 + EnumValue236 + EnumValue237 + EnumValue238 + EnumValue239 + EnumValue240 + EnumValue241 + EnumValue242 + EnumValue243 + EnumValue244 + EnumValue245 + EnumValue246 + EnumValue247 + EnumValue248 + EnumValue249 + EnumValue250 + EnumValue251 + EnumValue252 + EnumValue253 + EnumValue254 + EnumValue255 + EnumValue256 + EnumValue257 + EnumValue258 + EnumValue259 + EnumValue260 + EnumValue261 + EnumValue262 + EnumValue263 + EnumValue264 + EnumValue265 + EnumValue266 + EnumValue267 + EnumValue268 + EnumValue269 + EnumValue270 + EnumValue271 + EnumValue272 + EnumValue273 + EnumValue274 + EnumValue275 + EnumValue276 + EnumValue277 + EnumValue278 @deprecated + EnumValue279 + EnumValue280 + EnumValue281 + EnumValue282 + EnumValue283 + EnumValue284 + EnumValue285 + EnumValue286 + EnumValue287 + EnumValue288 + EnumValue289 + EnumValue290 + EnumValue291 + EnumValue292 + EnumValue293 + EnumValue294 + EnumValue295 + EnumValue296 + EnumValue297 + EnumValue298 + EnumValue299 + EnumValue300 + EnumValue301 + EnumValue302 + EnumValue303 + EnumValue304 + EnumValue305 + EnumValue306 + EnumValue307 + EnumValue308 + EnumValue309 + EnumValue310 + EnumValue311 + EnumValue312 + EnumValue313 + EnumValue314 + EnumValue315 + EnumValue316 + EnumValue317 + EnumValue318 + EnumValue319 + EnumValue320 + EnumValue321 + EnumValue322 + EnumValue323 + EnumValue324 + EnumValue325 + EnumValue326 + EnumValue327 + EnumValue328 + EnumValue329 + EnumValue330 + EnumValue331 + EnumValue332 + EnumValue333 + EnumValue334 + EnumValue335 + EnumValue336 + EnumValue337 + EnumValue338 + EnumValue339 + EnumValue340 + EnumValue341 + EnumValue342 + EnumValue343 + EnumValue344 + EnumValue345 + EnumValue346 + EnumValue347 + EnumValue348 + EnumValue349 + EnumValue350 + EnumValue351 + EnumValue352 + EnumValue353 + EnumValue354 + EnumValue355 + EnumValue356 + EnumValue357 + EnumValue358 + EnumValue359 + EnumValue360 + EnumValue361 + EnumValue362 + EnumValue363 + EnumValue364 + EnumValue365 + EnumValue366 + EnumValue367 + EnumValue368 + EnumValue369 + EnumValue370 + EnumValue371 + EnumValue372 + EnumValue373 + EnumValue374 + EnumValue375 + EnumValue376 + EnumValue377 + EnumValue378 + EnumValue379 + EnumValue380 + EnumValue381 + EnumValue382 + EnumValue383 + EnumValue384 + EnumValue385 + EnumValue386 + EnumValue387 + EnumValue388 + EnumValue389 + EnumValue390 + EnumValue391 + EnumValue392 + EnumValue393 + EnumValue394 + EnumValue395 + EnumValue396 + EnumValue397 + EnumValue398 + EnumValue399 + EnumValue400 + EnumValue401 + EnumValue402 + EnumValue403 + EnumValue404 + EnumValue405 + EnumValue406 + EnumValue407 + EnumValue408 + EnumValue409 + EnumValue410 + EnumValue411 + EnumValue412 + EnumValue413 + EnumValue414 + EnumValue415 + EnumValue416 + EnumValue417 + EnumValue418 + EnumValue419 + EnumValue420 + EnumValue421 + EnumValue422 + EnumValue423 + EnumValue424 + EnumValue425 + EnumValue426 + EnumValue427 + EnumValue428 + EnumValue429 + EnumValue430 + EnumValue431 + EnumValue432 + EnumValue433 + EnumValue434 + EnumValue435 + EnumValue436 + EnumValue437 + EnumValue438 + EnumValue439 + EnumValue440 + EnumValue441 + EnumValue442 + EnumValue443 + EnumValue444 + EnumValue445 + EnumValue446 + EnumValue447 + EnumValue448 + EnumValue449 + EnumValue450 + EnumValue451 + EnumValue452 + EnumValue453 + EnumValue454 + EnumValue455 + EnumValue456 + EnumValue457 + EnumValue458 + EnumValue459 + EnumValue460 + EnumValue461 + EnumValue462 + EnumValue463 + EnumValue464 + EnumValue465 + EnumValue466 + EnumValue467 + EnumValue468 + EnumValue469 + EnumValue470 + EnumValue471 + EnumValue472 + EnumValue473 + EnumValue474 + EnumValue475 + EnumValue476 + EnumValue477 + EnumValue478 + EnumValue479 + EnumValue480 + EnumValue481 + EnumValue482 + EnumValue483 + EnumValue484 + EnumValue485 + EnumValue486 + EnumValue487 + EnumValue488 + EnumValue489 + EnumValue490 + EnumValue491 + EnumValue492 + EnumValue493 + EnumValue494 + EnumValue495 + EnumValue496 + EnumValue497 + EnumValue498 + EnumValue499 + EnumValue500 + EnumValue501 + EnumValue502 + EnumValue503 + EnumValue504 + EnumValue505 + EnumValue506 + EnumValue507 + EnumValue508 + EnumValue509 + EnumValue510 + EnumValue511 + EnumValue512 + EnumValue513 + EnumValue514 + EnumValue515 + EnumValue516 + EnumValue517 + EnumValue518 + EnumValue519 + EnumValue520 + EnumValue521 + EnumValue522 + EnumValue523 + EnumValue524 + EnumValue525 + EnumValue526 + EnumValue527 + EnumValue528 + EnumValue529 + EnumValue530 + EnumValue531 + EnumValue532 + EnumValue533 + EnumValue534 + EnumValue535 + EnumValue536 + EnumValue537 + EnumValue538 + EnumValue539 + EnumValue540 + EnumValue541 + EnumValue542 + EnumValue543 + EnumValue544 + EnumValue545 + EnumValue546 + EnumValue547 + EnumValue548 + EnumValue549 + EnumValue550 + EnumValue551 + EnumValue552 + EnumValue553 + EnumValue554 + EnumValue555 + EnumValue556 + EnumValue557 + EnumValue558 + EnumValue559 + EnumValue560 + EnumValue561 + EnumValue562 + EnumValue563 + EnumValue564 + EnumValue565 + EnumValue566 + EnumValue567 + EnumValue568 + EnumValue569 + EnumValue570 + EnumValue571 + EnumValue572 + EnumValue573 + EnumValue574 + EnumValue575 + EnumValue576 + EnumValue577 + EnumValue578 + EnumValue579 + EnumValue580 + EnumValue581 + EnumValue582 + EnumValue583 + EnumValue584 + EnumValue585 + EnumValue586 + EnumValue587 + EnumValue588 + EnumValue589 + EnumValue590 + EnumValue591 + EnumValue592 + EnumValue593 + EnumValue594 + EnumValue595 + EnumValue596 + EnumValue597 + EnumValue598 + EnumValue599 + EnumValue600 + EnumValue601 + EnumValue602 + EnumValue603 + EnumValue604 + EnumValue605 + EnumValue606 + EnumValue607 + EnumValue608 + EnumValue609 + EnumValue610 + EnumValue611 + EnumValue612 + EnumValue613 + EnumValue614 + EnumValue615 + EnumValue616 + EnumValue617 + EnumValue618 + EnumValue619 + EnumValue620 + EnumValue621 + EnumValue622 + EnumValue623 + EnumValue624 + EnumValue625 + EnumValue626 + EnumValue627 + EnumValue628 + EnumValue629 + EnumValue630 + EnumValue631 + EnumValue632 + EnumValue633 + EnumValue634 + EnumValue635 + EnumValue636 + EnumValue637 + EnumValue638 + EnumValue639 + EnumValue640 + EnumValue641 + EnumValue642 + EnumValue643 + EnumValue644 + EnumValue645 + EnumValue646 + EnumValue647 + EnumValue648 + EnumValue649 + EnumValue650 + EnumValue651 + EnumValue652 + EnumValue653 + EnumValue654 + EnumValue655 + EnumValue656 + EnumValue657 + EnumValue658 + EnumValue659 + EnumValue660 + EnumValue661 + EnumValue662 + EnumValue663 + EnumValue664 + EnumValue665 + EnumValue666 + EnumValue667 + EnumValue668 + EnumValue669 + EnumValue670 + EnumValue671 + EnumValue672 + EnumValue673 + EnumValue674 + EnumValue675 + EnumValue676 + EnumValue677 + EnumValue678 + EnumValue679 + EnumValue680 + EnumValue681 + EnumValue682 + EnumValue683 + EnumValue684 + EnumValue685 + EnumValue686 + EnumValue687 + EnumValue688 + EnumValue689 + EnumValue690 + EnumValue691 + EnumValue692 + EnumValue693 + EnumValue694 + EnumValue695 + EnumValue696 + EnumValue697 + EnumValue698 + EnumValue699 + EnumValue700 + EnumValue701 + EnumValue702 + EnumValue703 + EnumValue704 + EnumValue705 + EnumValue706 + EnumValue707 + EnumValue708 + EnumValue709 + EnumValue710 + EnumValue711 + EnumValue712 + EnumValue713 + EnumValue714 + EnumValue715 + EnumValue716 + EnumValue717 + EnumValue718 + EnumValue719 + EnumValue720 + EnumValue721 + EnumValue722 + EnumValue723 + EnumValue724 + EnumValue725 + EnumValue726 + EnumValue727 + EnumValue728 + EnumValue729 + EnumValue730 + EnumValue731 + EnumValue732 + EnumValue733 + EnumValue734 + EnumValue735 + EnumValue736 + EnumValue737 + EnumValue738 + EnumValue739 + EnumValue740 + EnumValue741 + EnumValue82 + EnumValue83 + EnumValue84 + EnumValue85 + EnumValue86 + EnumValue87 + EnumValue88 + EnumValue89 + EnumValue90 + EnumValue91 + EnumValue92 + EnumValue93 + EnumValue94 + EnumValue95 + EnumValue96 + EnumValue97 + EnumValue98 + EnumValue99 +} + +enum Enum100 @Directive44(argument97 : ["stringValue775"]) { + EnumValue2068 + EnumValue2069 + EnumValue2070 +} + +enum Enum1000 @Directive19(argument57 : "stringValue22000") @Directive22(argument62 : "stringValue22001") @Directive44(argument97 : ["stringValue22002", "stringValue22003"]) { + EnumValue21193 + EnumValue21194 +} + +enum Enum1001 @Directive19(argument57 : "stringValue22010") @Directive22(argument62 : "stringValue22011") @Directive44(argument97 : ["stringValue22012", "stringValue22013"]) { + EnumValue21195 + EnumValue21196 + EnumValue21197 + EnumValue21198 + EnumValue21199 + EnumValue21200 + EnumValue21201 + EnumValue21202 + EnumValue21203 + EnumValue21204 + EnumValue21205 + EnumValue21206 + EnumValue21207 + EnumValue21208 + EnumValue21209 + EnumValue21210 + EnumValue21211 + EnumValue21212 + EnumValue21213 + EnumValue21214 + EnumValue21215 + EnumValue21216 + EnumValue21217 + EnumValue21218 + EnumValue21219 + EnumValue21220 + EnumValue21221 + EnumValue21222 + EnumValue21223 + EnumValue21224 + EnumValue21225 + EnumValue21226 + EnumValue21227 + EnumValue21228 + EnumValue21229 + EnumValue21230 + EnumValue21231 + EnumValue21232 + EnumValue21233 + EnumValue21234 + EnumValue21235 + EnumValue21236 + EnumValue21237 + EnumValue21238 + EnumValue21239 + EnumValue21240 + EnumValue21241 + EnumValue21242 + EnumValue21243 + EnumValue21244 + EnumValue21245 + EnumValue21246 + EnumValue21247 + EnumValue21248 + EnumValue21249 + EnumValue21250 + EnumValue21251 + EnumValue21252 + EnumValue21253 + EnumValue21254 + EnumValue21255 + EnumValue21256 + EnumValue21257 + EnumValue21258 + EnumValue21259 + EnumValue21260 + EnumValue21261 + EnumValue21262 + EnumValue21263 + EnumValue21264 + EnumValue21265 + EnumValue21266 + EnumValue21267 + EnumValue21268 + EnumValue21269 + EnumValue21270 + EnumValue21271 + EnumValue21272 + EnumValue21273 + EnumValue21274 + EnumValue21275 + EnumValue21276 + EnumValue21277 + EnumValue21278 + EnumValue21279 + EnumValue21280 + EnumValue21281 + EnumValue21282 + EnumValue21283 + EnumValue21284 + EnumValue21285 + EnumValue21286 + EnumValue21287 + EnumValue21288 + EnumValue21289 + EnumValue21290 + EnumValue21291 + EnumValue21292 + EnumValue21293 + EnumValue21294 + EnumValue21295 + EnumValue21296 + EnumValue21297 + EnumValue21298 + EnumValue21299 + EnumValue21300 + EnumValue21301 + EnumValue21302 + EnumValue21303 + EnumValue21304 + EnumValue21305 + EnumValue21306 + EnumValue21307 + EnumValue21308 +} + +enum Enum1002 @Directive19(argument57 : "stringValue22062") @Directive22(argument62 : "stringValue22063") @Directive44(argument97 : ["stringValue22064", "stringValue22065"]) { + EnumValue21309 + EnumValue21310 + EnumValue21311 + EnumValue21312 +} + +enum Enum1003 @Directive22(argument62 : "stringValue22104") @Directive44(argument97 : ["stringValue22105", "stringValue22106"]) { + EnumValue21313 + EnumValue21314 +} + +enum Enum1004 @Directive19(argument57 : "stringValue22107") @Directive22(argument62 : "stringValue22108") @Directive44(argument97 : ["stringValue22109", "stringValue22110"]) { + EnumValue21315 + EnumValue21316 + EnumValue21317 + EnumValue21318 + EnumValue21319 + EnumValue21320 + EnumValue21321 + EnumValue21322 + EnumValue21323 +} + +enum Enum1005 @Directive19(argument57 : "stringValue22127") @Directive22(argument62 : "stringValue22128") @Directive44(argument97 : ["stringValue22129", "stringValue22130"]) { + EnumValue21324 + EnumValue21325 +} + +enum Enum1006 @Directive22(argument62 : "stringValue22147") @Directive44(argument97 : ["stringValue22148", "stringValue22149"]) { + EnumValue21326 + EnumValue21327 +} + +enum Enum1007 @Directive19(argument57 : "stringValue22190") @Directive22(argument62 : "stringValue22191") @Directive44(argument97 : ["stringValue22192", "stringValue22193"]) { + EnumValue21328 + EnumValue21329 + EnumValue21330 + EnumValue21331 + EnumValue21332 + EnumValue21333 + EnumValue21334 +} + +enum Enum1008 @Directive22(argument62 : "stringValue22203") @Directive44(argument97 : ["stringValue22204", "stringValue22205"]) { + EnumValue21335 + EnumValue21336 +} + +enum Enum1009 @Directive19(argument57 : "stringValue22215") @Directive22(argument62 : "stringValue22216") @Directive44(argument97 : ["stringValue22217", "stringValue22218"]) { + EnumValue21337 + EnumValue21338 +} + +enum Enum101 @Directive44(argument97 : ["stringValue780"]) { + EnumValue2071 + EnumValue2072 + EnumValue2073 + EnumValue2074 +} + +enum Enum1010 @Directive22(argument62 : "stringValue22229") @Directive44(argument97 : ["stringValue22230", "stringValue22231"]) { + EnumValue21339 + EnumValue21340 +} + +enum Enum1011 @Directive44(argument97 : ["stringValue22297"]) { + EnumValue21341 + EnumValue21342 + EnumValue21343 + EnumValue21344 +} + +enum Enum1012 @Directive44(argument97 : ["stringValue22304"]) { + EnumValue21345 + EnumValue21346 + EnumValue21347 +} + +enum Enum1013 @Directive44(argument97 : ["stringValue22313"]) { + EnumValue21348 + EnumValue21349 + EnumValue21350 +} + +enum Enum1014 @Directive44(argument97 : ["stringValue22318"]) { + EnumValue21351 + EnumValue21352 + EnumValue21353 + EnumValue21354 + EnumValue21355 + EnumValue21356 + EnumValue21357 + EnumValue21358 + EnumValue21359 + EnumValue21360 + EnumValue21361 + EnumValue21362 + EnumValue21363 + EnumValue21364 + EnumValue21365 + EnumValue21366 + EnumValue21367 + EnumValue21368 + EnumValue21369 + EnumValue21370 + EnumValue21371 + EnumValue21372 + EnumValue21373 + EnumValue21374 + EnumValue21375 + EnumValue21376 + EnumValue21377 + EnumValue21378 + EnumValue21379 + EnumValue21380 + EnumValue21381 + EnumValue21382 + EnumValue21383 + EnumValue21384 + EnumValue21385 + EnumValue21386 + EnumValue21387 + EnumValue21388 + EnumValue21389 + EnumValue21390 + EnumValue21391 + EnumValue21392 +} + +enum Enum1015 @Directive44(argument97 : ["stringValue22323"]) { + EnumValue21393 + EnumValue21394 + EnumValue21395 + EnumValue21396 + EnumValue21397 + EnumValue21398 + EnumValue21399 + EnumValue21400 + EnumValue21401 + EnumValue21402 + EnumValue21403 + EnumValue21404 + EnumValue21405 + EnumValue21406 + EnumValue21407 + EnumValue21408 + EnumValue21409 + EnumValue21410 + EnumValue21411 + EnumValue21412 + EnumValue21413 + EnumValue21414 + EnumValue21415 + EnumValue21416 +} + +enum Enum1016 @Directive44(argument97 : ["stringValue22326"]) { + EnumValue21417 + EnumValue21418 + EnumValue21419 + EnumValue21420 + EnumValue21421 + EnumValue21422 + EnumValue21423 +} + +enum Enum1017 @Directive44(argument97 : ["stringValue22387"]) { + EnumValue21424 + EnumValue21425 + EnumValue21426 + EnumValue21427 + EnumValue21428 + EnumValue21429 +} + +enum Enum1018 @Directive44(argument97 : ["stringValue22388"]) { + EnumValue21430 + EnumValue21431 + EnumValue21432 + EnumValue21433 + EnumValue21434 +} + +enum Enum1019 @Directive44(argument97 : ["stringValue22397"]) { + EnumValue21435 + EnumValue21436 + EnumValue21437 + EnumValue21438 + EnumValue21439 +} + +enum Enum102 @Directive44(argument97 : ["stringValue792"]) { + EnumValue2075 + EnumValue2076 +} + +enum Enum1020 @Directive44(argument97 : ["stringValue22400"]) { + EnumValue21440 + EnumValue21441 + EnumValue21442 + EnumValue21443 + EnumValue21444 + EnumValue21445 + EnumValue21446 + EnumValue21447 + EnumValue21448 + EnumValue21449 + EnumValue21450 + EnumValue21451 + EnumValue21452 + EnumValue21453 + EnumValue21454 + EnumValue21455 + EnumValue21456 + EnumValue21457 + EnumValue21458 +} + +enum Enum1021 @Directive44(argument97 : ["stringValue22403"]) { + EnumValue21459 + EnumValue21460 + EnumValue21461 + EnumValue21462 + EnumValue21463 + EnumValue21464 + EnumValue21465 +} + +enum Enum1022 @Directive44(argument97 : ["stringValue22420"]) { + EnumValue21466 + EnumValue21467 + EnumValue21468 + EnumValue21469 + EnumValue21470 + EnumValue21471 +} + +enum Enum1023 @Directive44(argument97 : ["stringValue22421"]) { + EnumValue21472 + EnumValue21473 + EnumValue21474 + EnumValue21475 +} + +enum Enum1024 @Directive44(argument97 : ["stringValue22434"]) { + EnumValue21476 + EnumValue21477 + EnumValue21478 +} + +enum Enum1025 @Directive44(argument97 : ["stringValue22435"]) { + EnumValue21479 + EnumValue21480 + EnumValue21481 + EnumValue21482 +} + +enum Enum1026 @Directive44(argument97 : ["stringValue22446"]) { + EnumValue21483 + EnumValue21484 + EnumValue21485 + EnumValue21486 + EnumValue21487 +} + +enum Enum1027 @Directive44(argument97 : ["stringValue22447"]) { + EnumValue21488 + EnumValue21489 + EnumValue21490 + EnumValue21491 +} + +enum Enum1028 @Directive44(argument97 : ["stringValue22448"]) { + EnumValue21492 + EnumValue21493 + EnumValue21494 + EnumValue21495 +} + +enum Enum1029 @Directive44(argument97 : ["stringValue22497"]) { + EnumValue21496 + EnumValue21497 + EnumValue21498 + EnumValue21499 +} + +enum Enum103 @Directive44(argument97 : ["stringValue817"]) { + EnumValue2077 + EnumValue2078 + EnumValue2079 + EnumValue2080 + EnumValue2081 + EnumValue2082 +} + +enum Enum1030 @Directive44(argument97 : ["stringValue22515"]) { + EnumValue21500 + EnumValue21501 + EnumValue21502 + EnumValue21503 + EnumValue21504 + EnumValue21505 + EnumValue21506 + EnumValue21507 + EnumValue21508 + EnumValue21509 + EnumValue21510 + EnumValue21511 + EnumValue21512 + EnumValue21513 + EnumValue21514 + EnumValue21515 +} + +enum Enum1031 @Directive44(argument97 : ["stringValue22533"]) { + EnumValue21516 + EnumValue21517 + EnumValue21518 + EnumValue21519 + EnumValue21520 +} + +enum Enum1032 @Directive44(argument97 : ["stringValue22543"]) { + EnumValue21521 + EnumValue21522 + EnumValue21523 + EnumValue21524 + EnumValue21525 + EnumValue21526 + EnumValue21527 + EnumValue21528 + EnumValue21529 + EnumValue21530 + EnumValue21531 +} + +enum Enum1033 @Directive44(argument97 : ["stringValue22550"]) { + EnumValue21532 + EnumValue21533 + EnumValue21534 + EnumValue21535 + EnumValue21536 + EnumValue21537 + EnumValue21538 + EnumValue21539 + EnumValue21540 + EnumValue21541 +} + +enum Enum1034 @Directive44(argument97 : ["stringValue22562"]) { + EnumValue21542 + EnumValue21543 + EnumValue21544 + EnumValue21545 +} + +enum Enum1035 @Directive44(argument97 : ["stringValue22567"]) { + EnumValue21546 + EnumValue21547 + EnumValue21548 + EnumValue21549 + EnumValue21550 + EnumValue21551 +} + +enum Enum1036 @Directive44(argument97 : ["stringValue22578"]) { + EnumValue21552 + EnumValue21553 + EnumValue21554 +} + +enum Enum1037 @Directive44(argument97 : ["stringValue22589"]) { + EnumValue21555 + EnumValue21556 + EnumValue21557 +} + +enum Enum1038 @Directive44(argument97 : ["stringValue22592"]) { + EnumValue21558 + EnumValue21559 + EnumValue21560 +} + +enum Enum1039 @Directive44(argument97 : ["stringValue22607"]) { + EnumValue21561 + EnumValue21562 + EnumValue21563 +} + +enum Enum104 @Directive44(argument97 : ["stringValue829"]) { + EnumValue2083 + EnumValue2084 + EnumValue2085 + EnumValue2086 + EnumValue2087 + EnumValue2088 + EnumValue2089 +} + +enum Enum1040 @Directive44(argument97 : ["stringValue22638"]) { + EnumValue21564 + EnumValue21565 + EnumValue21566 + EnumValue21567 + EnumValue21568 + EnumValue21569 +} + +enum Enum1041 @Directive44(argument97 : ["stringValue22652"]) { + EnumValue21570 + EnumValue21571 + EnumValue21572 + EnumValue21573 + EnumValue21574 + EnumValue21575 + EnumValue21576 +} + +enum Enum1042 @Directive44(argument97 : ["stringValue22653"]) { + EnumValue21577 + EnumValue21578 + EnumValue21579 + EnumValue21580 + EnumValue21581 + EnumValue21582 + EnumValue21583 + EnumValue21584 + EnumValue21585 + EnumValue21586 +} + +enum Enum1043 @Directive44(argument97 : ["stringValue22654"]) { + EnumValue21587 + EnumValue21588 + EnumValue21589 + EnumValue21590 + EnumValue21591 + EnumValue21592 + EnumValue21593 + EnumValue21594 + EnumValue21595 +} + +enum Enum1044 @Directive44(argument97 : ["stringValue22655"]) { + EnumValue21596 + EnumValue21597 + EnumValue21598 + EnumValue21599 + EnumValue21600 + EnumValue21601 +} + +enum Enum1045 @Directive44(argument97 : ["stringValue22661"]) { + EnumValue21602 + EnumValue21603 + EnumValue21604 + EnumValue21605 + EnumValue21606 + EnumValue21607 + EnumValue21608 + EnumValue21609 + EnumValue21610 + EnumValue21611 + EnumValue21612 + EnumValue21613 + EnumValue21614 +} + +enum Enum1046 @Directive44(argument97 : ["stringValue22662"]) { + EnumValue21615 + EnumValue21616 + EnumValue21617 +} + +enum Enum1047 @Directive44(argument97 : ["stringValue22674"]) { + EnumValue21618 + EnumValue21619 + EnumValue21620 + EnumValue21621 + EnumValue21622 + EnumValue21623 +} + +enum Enum1048 @Directive44(argument97 : ["stringValue22753"]) { + EnumValue21624 + EnumValue21625 + EnumValue21626 +} + +enum Enum1049 @Directive44(argument97 : ["stringValue22755"]) { + EnumValue21627 + EnumValue21628 + EnumValue21629 + EnumValue21630 + EnumValue21631 +} + +enum Enum105 @Directive44(argument97 : ["stringValue854"]) { + EnumValue2090 + EnumValue2091 + EnumValue2092 +} + +enum Enum1050 @Directive44(argument97 : ["stringValue22977"]) { + EnumValue21632 + EnumValue21633 + EnumValue21634 + EnumValue21635 + EnumValue21636 + EnumValue21637 + EnumValue21638 + EnumValue21639 + EnumValue21640 + EnumValue21641 + EnumValue21642 + EnumValue21643 + EnumValue21644 + EnumValue21645 + EnumValue21646 + EnumValue21647 + EnumValue21648 + EnumValue21649 + EnumValue21650 + EnumValue21651 + EnumValue21652 + EnumValue21653 + EnumValue21654 + EnumValue21655 + EnumValue21656 + EnumValue21657 + EnumValue21658 +} + +enum Enum1051 @Directive44(argument97 : ["stringValue22988"]) { + EnumValue21659 + EnumValue21660 + EnumValue21661 + EnumValue21662 + EnumValue21663 + EnumValue21664 + EnumValue21665 + EnumValue21666 + EnumValue21667 + EnumValue21668 + EnumValue21669 + EnumValue21670 + EnumValue21671 + EnumValue21672 + EnumValue21673 + EnumValue21674 + EnumValue21675 + EnumValue21676 + EnumValue21677 + EnumValue21678 + EnumValue21679 + EnumValue21680 + EnumValue21681 + EnumValue21682 +} + +enum Enum1052 @Directive44(argument97 : ["stringValue23001"]) { + EnumValue21683 + EnumValue21684 + EnumValue21685 +} + +enum Enum1053 @Directive44(argument97 : ["stringValue23006"]) { + EnumValue21686 + EnumValue21687 + EnumValue21688 + EnumValue21689 + EnumValue21690 + EnumValue21691 + EnumValue21692 +} + +enum Enum1054 @Directive44(argument97 : ["stringValue23025"]) { + EnumValue21693 + EnumValue21694 + EnumValue21695 +} + +enum Enum1055 @Directive44(argument97 : ["stringValue23026"]) { + EnumValue21696 + EnumValue21697 + EnumValue21698 + EnumValue21699 +} + +enum Enum1056 @Directive44(argument97 : ["stringValue23035"]) { + EnumValue21700 + EnumValue21701 + EnumValue21702 + EnumValue21703 +} + +enum Enum1057 @Directive44(argument97 : ["stringValue23036"]) { + EnumValue21704 + EnumValue21705 + EnumValue21706 + EnumValue21707 + EnumValue21708 + EnumValue21709 + EnumValue21710 + EnumValue21711 +} + +enum Enum1058 @Directive44(argument97 : ["stringValue23037"]) { + EnumValue21712 + EnumValue21713 +} + +enum Enum1059 @Directive44(argument97 : ["stringValue23062"]) { + EnumValue21714 + EnumValue21715 + EnumValue21716 +} + +enum Enum106 @Directive44(argument97 : ["stringValue858"]) { + EnumValue2093 + EnumValue2094 + EnumValue2095 + EnumValue2096 + EnumValue2097 + EnumValue2098 + EnumValue2099 +} + +enum Enum1060 @Directive44(argument97 : ["stringValue23103"]) { + EnumValue21717 + EnumValue21718 + EnumValue21719 + EnumValue21720 +} + +enum Enum1061 @Directive44(argument97 : ["stringValue23108"]) { + EnumValue21721 + EnumValue21722 + EnumValue21723 + EnumValue21724 + EnumValue21725 +} + +enum Enum1062 @Directive44(argument97 : ["stringValue23146"]) { + EnumValue21726 + EnumValue21727 + EnumValue21728 + EnumValue21729 + EnumValue21730 + EnumValue21731 + EnumValue21732 + EnumValue21733 + EnumValue21734 + EnumValue21735 + EnumValue21736 +} + +enum Enum1063 @Directive44(argument97 : ["stringValue23233", "stringValue23234"]) { + EnumValue21737 + EnumValue21738 + EnumValue21739 + EnumValue21740 + EnumValue21741 + EnumValue21742 + EnumValue21743 +} + +enum Enum1064 @Directive44(argument97 : ["stringValue23238", "stringValue23239"]) { + EnumValue21744 + EnumValue21745 + EnumValue21746 + EnumValue21747 + EnumValue21748 + EnumValue21749 + EnumValue21750 + EnumValue21751 + EnumValue21752 + EnumValue21753 + EnumValue21754 + EnumValue21755 + EnumValue21756 + EnumValue21757 + EnumValue21758 + EnumValue21759 + EnumValue21760 + EnumValue21761 + EnumValue21762 + EnumValue21763 +} + +enum Enum1065 @Directive44(argument97 : ["stringValue23246", "stringValue23247"]) { + EnumValue21764 + EnumValue21765 + EnumValue21766 + EnumValue21767 + EnumValue21768 + EnumValue21769 + EnumValue21770 + EnumValue21771 + EnumValue21772 + EnumValue21773 + EnumValue21774 +} + +enum Enum1066 @Directive44(argument97 : ["stringValue23248", "stringValue23249"]) { + EnumValue21775 + EnumValue21776 + EnumValue21777 +} + +enum Enum1067 @Directive44(argument97 : ["stringValue23250", "stringValue23251"]) { + EnumValue21778 + EnumValue21779 + EnumValue21780 + EnumValue21781 + EnumValue21782 +} + +enum Enum1068 @Directive44(argument97 : ["stringValue23255", "stringValue23256"]) { + EnumValue21783 + EnumValue21784 + EnumValue21785 + EnumValue21786 +} + +enum Enum1069 @Directive44(argument97 : ["stringValue23257", "stringValue23258"]) { + EnumValue21787 + EnumValue21788 + EnumValue21789 + EnumValue21790 + EnumValue21791 + EnumValue21792 + EnumValue21793 + EnumValue21794 + EnumValue21795 + EnumValue21796 + EnumValue21797 + EnumValue21798 + EnumValue21799 + EnumValue21800 + EnumValue21801 + EnumValue21802 + EnumValue21803 + EnumValue21804 + EnumValue21805 + EnumValue21806 +} + +enum Enum107 @Directive44(argument97 : ["stringValue869"]) { + EnumValue2100 + EnumValue2101 +} + +enum Enum1070 @Directive44(argument97 : ["stringValue23259", "stringValue23260"]) { + EnumValue21807 + EnumValue21808 + EnumValue21809 +} + +enum Enum1071 @Directive44(argument97 : ["stringValue23261", "stringValue23262"]) { + EnumValue21810 + EnumValue21811 + EnumValue21812 + EnumValue21813 +} + +enum Enum1072 @Directive44(argument97 : ["stringValue23263", "stringValue23264"]) { + EnumValue21814 + EnumValue21815 + EnumValue21816 + EnumValue21817 +} + +enum Enum1073 @Directive44(argument97 : ["stringValue23265", "stringValue23266"]) { + EnumValue21818 + EnumValue21819 + EnumValue21820 +} + +enum Enum1074 @Directive44(argument97 : ["stringValue23270", "stringValue23271"]) { + EnumValue21821 + EnumValue21822 + EnumValue21823 + EnumValue21824 + EnumValue21825 + EnumValue21826 + EnumValue21827 + EnumValue21828 + EnumValue21829 + EnumValue21830 + EnumValue21831 + EnumValue21832 + EnumValue21833 + EnumValue21834 + EnumValue21835 + EnumValue21836 + EnumValue21837 + EnumValue21838 + EnumValue21839 + EnumValue21840 + EnumValue21841 + EnumValue21842 + EnumValue21843 + EnumValue21844 + EnumValue21845 + EnumValue21846 + EnumValue21847 + EnumValue21848 + EnumValue21849 + EnumValue21850 + EnumValue21851 + EnumValue21852 + EnumValue21853 + EnumValue21854 + EnumValue21855 + EnumValue21856 + EnumValue21857 + EnumValue21858 + EnumValue21859 + EnumValue21860 + EnumValue21861 + EnumValue21862 + EnumValue21863 + EnumValue21864 + EnumValue21865 + EnumValue21866 + EnumValue21867 + EnumValue21868 + EnumValue21869 + EnumValue21870 + EnumValue21871 + EnumValue21872 + EnumValue21873 + EnumValue21874 + EnumValue21875 + EnumValue21876 + EnumValue21877 + EnumValue21878 + EnumValue21879 + EnumValue21880 + EnumValue21881 + EnumValue21882 + EnumValue21883 + EnumValue21884 + EnumValue21885 + EnumValue21886 + EnumValue21887 + EnumValue21888 + EnumValue21889 + EnumValue21890 + EnumValue21891 + EnumValue21892 + EnumValue21893 + EnumValue21894 + EnumValue21895 + EnumValue21896 + EnumValue21897 + EnumValue21898 + EnumValue21899 + EnumValue21900 + EnumValue21901 + EnumValue21902 + EnumValue21903 + EnumValue21904 + EnumValue21905 + EnumValue21906 + EnumValue21907 + EnumValue21908 + EnumValue21909 + EnumValue21910 + EnumValue21911 + EnumValue21912 + EnumValue21913 + EnumValue21914 + EnumValue21915 + EnumValue21916 + EnumValue21917 + EnumValue21918 + EnumValue21919 + EnumValue21920 + EnumValue21921 + EnumValue21922 + EnumValue21923 + EnumValue21924 + EnumValue21925 + EnumValue21926 + EnumValue21927 + EnumValue21928 + EnumValue21929 + EnumValue21930 + EnumValue21931 + EnumValue21932 + EnumValue21933 + EnumValue21934 + EnumValue21935 + EnumValue21936 + EnumValue21937 + EnumValue21938 + EnumValue21939 + EnumValue21940 + EnumValue21941 + EnumValue21942 + EnumValue21943 + EnumValue21944 + EnumValue21945 + EnumValue21946 + EnumValue21947 + EnumValue21948 + EnumValue21949 + EnumValue21950 + EnumValue21951 +} + +enum Enum1075 @Directive44(argument97 : ["stringValue23272", "stringValue23273"]) { + EnumValue21952 + EnumValue21953 + EnumValue21954 + EnumValue21955 + EnumValue21956 + EnumValue21957 + EnumValue21958 + EnumValue21959 + EnumValue21960 + EnumValue21961 + EnumValue21962 + EnumValue21963 + EnumValue21964 + EnumValue21965 + EnumValue21966 + EnumValue21967 + EnumValue21968 + EnumValue21969 + EnumValue21970 + EnumValue21971 + EnumValue21972 + EnumValue21973 + EnumValue21974 + EnumValue21975 + EnumValue21976 + EnumValue21977 + EnumValue21978 + EnumValue21979 + EnumValue21980 + EnumValue21981 + EnumValue21982 + EnumValue21983 + EnumValue21984 + EnumValue21985 + EnumValue21986 + EnumValue21987 + EnumValue21988 + EnumValue21989 + EnumValue21990 + EnumValue21991 + EnumValue21992 + EnumValue21993 + EnumValue21994 + EnumValue21995 + EnumValue21996 + EnumValue21997 + EnumValue21998 + EnumValue21999 + EnumValue22000 + EnumValue22001 + EnumValue22002 + EnumValue22003 + EnumValue22004 + EnumValue22005 + EnumValue22006 + EnumValue22007 + EnumValue22008 + EnumValue22009 + EnumValue22010 + EnumValue22011 + EnumValue22012 + EnumValue22013 + EnumValue22014 + EnumValue22015 + EnumValue22016 + EnumValue22017 + EnumValue22018 + EnumValue22019 + EnumValue22020 + EnumValue22021 + EnumValue22022 + EnumValue22023 + EnumValue22024 + EnumValue22025 + EnumValue22026 + EnumValue22027 + EnumValue22028 + EnumValue22029 + EnumValue22030 + EnumValue22031 + EnumValue22032 + EnumValue22033 + EnumValue22034 + EnumValue22035 + EnumValue22036 + EnumValue22037 + EnumValue22038 + EnumValue22039 + EnumValue22040 + EnumValue22041 + EnumValue22042 + EnumValue22043 + EnumValue22044 + EnumValue22045 + EnumValue22046 + EnumValue22047 + EnumValue22048 + EnumValue22049 + EnumValue22050 + EnumValue22051 + EnumValue22052 + EnumValue22053 + EnumValue22054 + EnumValue22055 + EnumValue22056 + EnumValue22057 + EnumValue22058 + EnumValue22059 + EnumValue22060 + EnumValue22061 + EnumValue22062 + EnumValue22063 + EnumValue22064 + EnumValue22065 + EnumValue22066 + EnumValue22067 + EnumValue22068 + EnumValue22069 + EnumValue22070 + EnumValue22071 + EnumValue22072 + EnumValue22073 + EnumValue22074 + EnumValue22075 + EnumValue22076 + EnumValue22077 + EnumValue22078 + EnumValue22079 + EnumValue22080 + EnumValue22081 + EnumValue22082 + EnumValue22083 + EnumValue22084 + EnumValue22085 + EnumValue22086 + EnumValue22087 + EnumValue22088 + EnumValue22089 + EnumValue22090 + EnumValue22091 + EnumValue22092 + EnumValue22093 + EnumValue22094 + EnumValue22095 + EnumValue22096 + EnumValue22097 + EnumValue22098 + EnumValue22099 + EnumValue22100 + EnumValue22101 + EnumValue22102 + EnumValue22103 + EnumValue22104 + EnumValue22105 + EnumValue22106 + EnumValue22107 + EnumValue22108 + EnumValue22109 + EnumValue22110 + EnumValue22111 + EnumValue22112 + EnumValue22113 + EnumValue22114 + EnumValue22115 + EnumValue22116 + EnumValue22117 + EnumValue22118 + EnumValue22119 + EnumValue22120 + EnumValue22121 + EnumValue22122 + EnumValue22123 + EnumValue22124 + EnumValue22125 + EnumValue22126 + EnumValue22127 + EnumValue22128 + EnumValue22129 + EnumValue22130 + EnumValue22131 + EnumValue22132 + EnumValue22133 + EnumValue22134 + EnumValue22135 + EnumValue22136 + EnumValue22137 + EnumValue22138 + EnumValue22139 + EnumValue22140 + EnumValue22141 + EnumValue22142 + EnumValue22143 + EnumValue22144 + EnumValue22145 + EnumValue22146 + EnumValue22147 + EnumValue22148 + EnumValue22149 + EnumValue22150 + EnumValue22151 + EnumValue22152 + EnumValue22153 + EnumValue22154 + EnumValue22155 + EnumValue22156 + EnumValue22157 + EnumValue22158 + EnumValue22159 + EnumValue22160 + EnumValue22161 + EnumValue22162 + EnumValue22163 + EnumValue22164 + EnumValue22165 + EnumValue22166 + EnumValue22167 + EnumValue22168 + EnumValue22169 + EnumValue22170 + EnumValue22171 + EnumValue22172 + EnumValue22173 + EnumValue22174 + EnumValue22175 + EnumValue22176 + EnumValue22177 + EnumValue22178 + EnumValue22179 + EnumValue22180 + EnumValue22181 + EnumValue22182 + EnumValue22183 + EnumValue22184 + EnumValue22185 + EnumValue22186 + EnumValue22187 + EnumValue22188 + EnumValue22189 + EnumValue22190 + EnumValue22191 + EnumValue22192 + EnumValue22193 + EnumValue22194 + EnumValue22195 + EnumValue22196 + EnumValue22197 + EnumValue22198 + EnumValue22199 + EnumValue22200 + EnumValue22201 + EnumValue22202 + EnumValue22203 + EnumValue22204 + EnumValue22205 + EnumValue22206 + EnumValue22207 + EnumValue22208 + EnumValue22209 + EnumValue22210 + EnumValue22211 + EnumValue22212 + EnumValue22213 + EnumValue22214 + EnumValue22215 + EnumValue22216 + EnumValue22217 + EnumValue22218 + EnumValue22219 + EnumValue22220 + EnumValue22221 + EnumValue22222 + EnumValue22223 + EnumValue22224 + EnumValue22225 + EnumValue22226 + EnumValue22227 + EnumValue22228 + EnumValue22229 + EnumValue22230 + EnumValue22231 + EnumValue22232 + EnumValue22233 + EnumValue22234 + EnumValue22235 + EnumValue22236 + EnumValue22237 + EnumValue22238 + EnumValue22239 + EnumValue22240 + EnumValue22241 + EnumValue22242 + EnumValue22243 + EnumValue22244 + EnumValue22245 + EnumValue22246 + EnumValue22247 + EnumValue22248 + EnumValue22249 + EnumValue22250 + EnumValue22251 + EnumValue22252 + EnumValue22253 + EnumValue22254 + EnumValue22255 + EnumValue22256 + EnumValue22257 + EnumValue22258 + EnumValue22259 + EnumValue22260 + EnumValue22261 + EnumValue22262 + EnumValue22263 + EnumValue22264 + EnumValue22265 + EnumValue22266 + EnumValue22267 + EnumValue22268 + EnumValue22269 + EnumValue22270 + EnumValue22271 + EnumValue22272 + EnumValue22273 + EnumValue22274 + EnumValue22275 + EnumValue22276 + EnumValue22277 + EnumValue22278 + EnumValue22279 + EnumValue22280 + EnumValue22281 + EnumValue22282 + EnumValue22283 + EnumValue22284 + EnumValue22285 + EnumValue22286 + EnumValue22287 + EnumValue22288 + EnumValue22289 + EnumValue22290 + EnumValue22291 + EnumValue22292 + EnumValue22293 + EnumValue22294 + EnumValue22295 + EnumValue22296 + EnumValue22297 + EnumValue22298 + EnumValue22299 + EnumValue22300 + EnumValue22301 + EnumValue22302 + EnumValue22303 + EnumValue22304 + EnumValue22305 + EnumValue22306 + EnumValue22307 + EnumValue22308 + EnumValue22309 + EnumValue22310 + EnumValue22311 + EnumValue22312 + EnumValue22313 + EnumValue22314 + EnumValue22315 + EnumValue22316 + EnumValue22317 + EnumValue22318 + EnumValue22319 + EnumValue22320 + EnumValue22321 + EnumValue22322 + EnumValue22323 + EnumValue22324 + EnumValue22325 + EnumValue22326 + EnumValue22327 + EnumValue22328 + EnumValue22329 + EnumValue22330 + EnumValue22331 + EnumValue22332 + EnumValue22333 + EnumValue22334 + EnumValue22335 + EnumValue22336 + EnumValue22337 + EnumValue22338 + EnumValue22339 + EnumValue22340 + EnumValue22341 + EnumValue22342 + EnumValue22343 + EnumValue22344 + EnumValue22345 + EnumValue22346 + EnumValue22347 + EnumValue22348 + EnumValue22349 + EnumValue22350 + EnumValue22351 + EnumValue22352 + EnumValue22353 + EnumValue22354 + EnumValue22355 + EnumValue22356 + EnumValue22357 + EnumValue22358 + EnumValue22359 + EnumValue22360 + EnumValue22361 + EnumValue22362 + EnumValue22363 + EnumValue22364 + EnumValue22365 + EnumValue22366 + EnumValue22367 + EnumValue22368 + EnumValue22369 + EnumValue22370 + EnumValue22371 + EnumValue22372 + EnumValue22373 + EnumValue22374 + EnumValue22375 + EnumValue22376 + EnumValue22377 + EnumValue22378 + EnumValue22379 + EnumValue22380 + EnumValue22381 + EnumValue22382 + EnumValue22383 + EnumValue22384 + EnumValue22385 + EnumValue22386 + EnumValue22387 + EnumValue22388 + EnumValue22389 + EnumValue22390 + EnumValue22391 + EnumValue22392 + EnumValue22393 + EnumValue22394 + EnumValue22395 + EnumValue22396 + EnumValue22397 + EnumValue22398 + EnumValue22399 + EnumValue22400 + EnumValue22401 + EnumValue22402 + EnumValue22403 + EnumValue22404 + EnumValue22405 + EnumValue22406 + EnumValue22407 + EnumValue22408 + EnumValue22409 + EnumValue22410 + EnumValue22411 + EnumValue22412 + EnumValue22413 + EnumValue22414 + EnumValue22415 + EnumValue22416 + EnumValue22417 + EnumValue22418 + EnumValue22419 + EnumValue22420 + EnumValue22421 + EnumValue22422 + EnumValue22423 + EnumValue22424 + EnumValue22425 + EnumValue22426 + EnumValue22427 + EnumValue22428 + EnumValue22429 + EnumValue22430 + EnumValue22431 + EnumValue22432 + EnumValue22433 + EnumValue22434 + EnumValue22435 + EnumValue22436 + EnumValue22437 + EnumValue22438 + EnumValue22439 + EnumValue22440 + EnumValue22441 + EnumValue22442 + EnumValue22443 + EnumValue22444 + EnumValue22445 + EnumValue22446 + EnumValue22447 + EnumValue22448 + EnumValue22449 + EnumValue22450 +} + +enum Enum1076 @Directive44(argument97 : ["stringValue23285", "stringValue23286"]) { + EnumValue22451 + EnumValue22452 + EnumValue22453 + EnumValue22454 + EnumValue22455 + EnumValue22456 + EnumValue22457 + EnumValue22458 + EnumValue22459 + EnumValue22460 + EnumValue22461 + EnumValue22462 + EnumValue22463 + EnumValue22464 + EnumValue22465 +} + +enum Enum1077 @Directive44(argument97 : ["stringValue23287", "stringValue23288"]) { + EnumValue22466 + EnumValue22467 + EnumValue22468 + EnumValue22469 + EnumValue22470 + EnumValue22471 + EnumValue22472 + EnumValue22473 + EnumValue22474 + EnumValue22475 + EnumValue22476 + EnumValue22477 +} + +enum Enum1078 @Directive44(argument97 : ["stringValue23292", "stringValue23293"]) { + EnumValue22478 + EnumValue22479 + EnumValue22480 + EnumValue22481 + EnumValue22482 + EnumValue22483 + EnumValue22484 + EnumValue22485 + EnumValue22486 + EnumValue22487 + EnumValue22488 + EnumValue22489 + EnumValue22490 + EnumValue22491 + EnumValue22492 + EnumValue22493 + EnumValue22494 + EnumValue22495 + EnumValue22496 +} + +enum Enum1079 @Directive44(argument97 : ["stringValue23297", "stringValue23298"]) { + EnumValue22497 + EnumValue22498 + EnumValue22499 + EnumValue22500 + EnumValue22501 + EnumValue22502 + EnumValue22503 + EnumValue22504 + EnumValue22505 + EnumValue22506 + EnumValue22507 + EnumValue22508 +} + +enum Enum108 @Directive44(argument97 : ["stringValue904"]) { + EnumValue2102 + EnumValue2103 + EnumValue2104 + EnumValue2105 + EnumValue2106 + EnumValue2107 + EnumValue2108 + EnumValue2109 + EnumValue2110 + EnumValue2111 + EnumValue2112 +} + +enum Enum1080 @Directive44(argument97 : ["stringValue23308", "stringValue23309"]) { + EnumValue22509 + EnumValue22510 + EnumValue22511 + EnumValue22512 + EnumValue22513 + EnumValue22514 + EnumValue22515 + EnumValue22516 + EnumValue22517 + EnumValue22518 + EnumValue22519 + EnumValue22520 + EnumValue22521 + EnumValue22522 +} + +enum Enum1081 @Directive44(argument97 : ["stringValue23327", "stringValue23328"]) { + EnumValue22523 + EnumValue22524 + EnumValue22525 + EnumValue22526 + EnumValue22527 + EnumValue22528 +} + +enum Enum1082 @Directive44(argument97 : ["stringValue23329", "stringValue23330"]) { + EnumValue22529 + EnumValue22530 + EnumValue22531 + EnumValue22532 + EnumValue22533 +} + +enum Enum1083 @Directive44(argument97 : ["stringValue23337", "stringValue23338"]) { + EnumValue22534 + EnumValue22535 + EnumValue22536 + EnumValue22537 + EnumValue22538 + EnumValue22539 +} + +enum Enum1084 @Directive44(argument97 : ["stringValue23339", "stringValue23340"]) { + EnumValue22540 + EnumValue22541 + EnumValue22542 + EnumValue22543 + EnumValue22544 + EnumValue22545 + EnumValue22546 + EnumValue22547 + EnumValue22548 + EnumValue22549 + EnumValue22550 + EnumValue22551 + EnumValue22552 +} + +enum Enum1085 @Directive44(argument97 : ["stringValue23341", "stringValue23342"]) { + EnumValue22553 + EnumValue22554 + EnumValue22555 + EnumValue22556 + EnumValue22557 +} + +enum Enum1086 @Directive44(argument97 : ["stringValue23346", "stringValue23347"]) { + EnumValue22558 + EnumValue22559 + EnumValue22560 + EnumValue22561 + EnumValue22562 +} + +enum Enum1087 @Directive44(argument97 : ["stringValue23348", "stringValue23349"]) { + EnumValue22563 + EnumValue22564 + EnumValue22565 + EnumValue22566 + EnumValue22567 +} + +enum Enum1088 @Directive44(argument97 : ["stringValue23350", "stringValue23351"]) { + EnumValue22568 + EnumValue22569 +} + +enum Enum1089 @Directive44(argument97 : ["stringValue23352", "stringValue23353"]) { + EnumValue22570 + EnumValue22571 + EnumValue22572 + EnumValue22573 + EnumValue22574 + EnumValue22575 + EnumValue22576 + EnumValue22577 + EnumValue22578 + EnumValue22579 + EnumValue22580 + EnumValue22581 + EnumValue22582 + EnumValue22583 + EnumValue22584 + EnumValue22585 + EnumValue22586 + EnumValue22587 + EnumValue22588 + EnumValue22589 + EnumValue22590 + EnumValue22591 + EnumValue22592 + EnumValue22593 + EnumValue22594 + EnumValue22595 + EnumValue22596 + EnumValue22597 + EnumValue22598 + EnumValue22599 + EnumValue22600 + EnumValue22601 + EnumValue22602 + EnumValue22603 + EnumValue22604 + EnumValue22605 + EnumValue22606 +} + +enum Enum109 @Directive19(argument57 : "stringValue938") @Directive22(argument62 : "stringValue937") @Directive44(argument97 : ["stringValue939", "stringValue940"]) { + EnumValue2113 + EnumValue2114 + EnumValue2115 + EnumValue2116 + EnumValue2117 + EnumValue2118 + EnumValue2119 + EnumValue2120 + EnumValue2121 + EnumValue2122 + EnumValue2123 + EnumValue2124 + EnumValue2125 + EnumValue2126 + EnumValue2127 + EnumValue2128 + EnumValue2129 + EnumValue2130 + EnumValue2131 + EnumValue2132 + EnumValue2133 + EnumValue2134 + EnumValue2135 + EnumValue2136 + EnumValue2137 + EnumValue2138 + EnumValue2139 +} + +enum Enum1090 @Directive44(argument97 : ["stringValue23354", "stringValue23355"]) { + EnumValue22607 + EnumValue22608 + EnumValue22609 + EnumValue22610 +} + +enum Enum1091 @Directive44(argument97 : ["stringValue23356", "stringValue23357"]) { + EnumValue22611 + EnumValue22612 + EnumValue22613 + EnumValue22614 + EnumValue22615 + EnumValue22616 + EnumValue22617 + EnumValue22618 + EnumValue22619 +} + +enum Enum1092 @Directive44(argument97 : ["stringValue23361", "stringValue23362"]) { + EnumValue22620 + EnumValue22621 + EnumValue22622 +} + +enum Enum1093 @Directive44(argument97 : ["stringValue23363", "stringValue23364"]) { + EnumValue22623 + EnumValue22624 + EnumValue22625 + EnumValue22626 +} + +enum Enum1094 @Directive44(argument97 : ["stringValue23365", "stringValue23366"]) { + EnumValue22627 + EnumValue22628 + EnumValue22629 + EnumValue22630 +} + +enum Enum1095 @Directive44(argument97 : ["stringValue23373", "stringValue23374"]) { + EnumValue22631 + EnumValue22632 + EnumValue22633 +} + +enum Enum1096 @Directive44(argument97 : ["stringValue23378", "stringValue23379"]) { + EnumValue22634 + EnumValue22635 + EnumValue22636 + EnumValue22637 + EnumValue22638 + EnumValue22639 + EnumValue22640 + EnumValue22641 + EnumValue22642 + EnumValue22643 + EnumValue22644 + EnumValue22645 + EnumValue22646 + EnumValue22647 + EnumValue22648 + EnumValue22649 + EnumValue22650 + EnumValue22651 + EnumValue22652 + EnumValue22653 + EnumValue22654 + EnumValue22655 + EnumValue22656 + EnumValue22657 + EnumValue22658 + EnumValue22659 + EnumValue22660 + EnumValue22661 + EnumValue22662 + EnumValue22663 + EnumValue22664 + EnumValue22665 + EnumValue22666 + EnumValue22667 + EnumValue22668 + EnumValue22669 + EnumValue22670 + EnumValue22671 + EnumValue22672 + EnumValue22673 + EnumValue22674 + EnumValue22675 + EnumValue22676 + EnumValue22677 + EnumValue22678 + EnumValue22679 + EnumValue22680 + EnumValue22681 + EnumValue22682 + EnumValue22683 +} + +enum Enum1097 @Directive44(argument97 : ["stringValue23380", "stringValue23381"]) { + EnumValue22684 + EnumValue22685 + EnumValue22686 + EnumValue22687 + EnumValue22688 +} + +enum Enum1098 @Directive44(argument97 : ["stringValue23382", "stringValue23383"]) { + EnumValue22689 + EnumValue22690 + EnumValue22691 + EnumValue22692 + EnumValue22693 + EnumValue22694 + EnumValue22695 + EnumValue22696 + EnumValue22697 +} + +enum Enum1099 @Directive44(argument97 : ["stringValue23390", "stringValue23391"]) { + EnumValue22698 + EnumValue22699 + EnumValue22700 +} + +enum Enum11 @Directive22(argument62 : "stringValue121") @Directive44(argument97 : ["stringValue122", "stringValue123"]) { + EnumValue742 + EnumValue743 + EnumValue744 + EnumValue745 + EnumValue746 + EnumValue747 +} + +enum Enum110 @Directive44(argument97 : ["stringValue970"]) { + EnumValue2140 + EnumValue2141 + EnumValue2142 + EnumValue2143 + EnumValue2144 + EnumValue2145 + EnumValue2146 + EnumValue2147 +} + +enum Enum1100 @Directive44(argument97 : ["stringValue23395", "stringValue23396"]) { + EnumValue22701 + EnumValue22702 + EnumValue22703 + EnumValue22704 + EnumValue22705 +} + +enum Enum1101 @Directive44(argument97 : ["stringValue23397", "stringValue23398"]) { + EnumValue22706 + EnumValue22707 + EnumValue22708 + EnumValue22709 + EnumValue22710 + EnumValue22711 +} + +enum Enum1102 @Directive44(argument97 : ["stringValue23399", "stringValue23400"]) { + EnumValue22712 + EnumValue22713 + EnumValue22714 + EnumValue22715 + EnumValue22716 +} + +enum Enum1103 @Directive44(argument97 : ["stringValue23401", "stringValue23402"]) { + EnumValue22717 + EnumValue22718 + EnumValue22719 + EnumValue22720 + EnumValue22721 + EnumValue22722 + EnumValue22723 +} + +enum Enum1104 @Directive44(argument97 : ["stringValue23403", "stringValue23404"]) { + EnumValue22724 + EnumValue22725 + EnumValue22726 +} + +enum Enum1105 @Directive44(argument97 : ["stringValue23405", "stringValue23406"]) { + EnumValue22727 + EnumValue22728 + EnumValue22729 +} + +enum Enum1106 @Directive44(argument97 : ["stringValue23413", "stringValue23414"]) { + EnumValue22730 + EnumValue22731 + EnumValue22732 + EnumValue22733 + EnumValue22734 + EnumValue22735 + EnumValue22736 + EnumValue22737 + EnumValue22738 + EnumValue22739 + EnumValue22740 + EnumValue22741 + EnumValue22742 + EnumValue22743 + EnumValue22744 + EnumValue22745 + EnumValue22746 + EnumValue22747 + EnumValue22748 + EnumValue22749 + EnumValue22750 + EnumValue22751 + EnumValue22752 + EnumValue22753 + EnumValue22754 + EnumValue22755 +} + +enum Enum1107 @Directive44(argument97 : ["stringValue23415", "stringValue23416"]) { + EnumValue22756 + EnumValue22757 + EnumValue22758 + EnumValue22759 + EnumValue22760 + EnumValue22761 + EnumValue22762 + EnumValue22763 +} + +enum Enum1108 @Directive44(argument97 : ["stringValue23426", "stringValue23427"]) { + EnumValue22764 + EnumValue22765 + EnumValue22766 + EnumValue22767 + EnumValue22768 +} + +enum Enum1109 @Directive44(argument97 : ["stringValue23428", "stringValue23429"]) { + EnumValue22769 + EnumValue22770 + EnumValue22771 + EnumValue22772 + EnumValue22773 + EnumValue22774 +} + +enum Enum111 @Directive44(argument97 : ["stringValue974"]) { + EnumValue2148 + EnumValue2149 + EnumValue2150 + EnumValue2151 + EnumValue2152 + EnumValue2153 + EnumValue2154 + EnumValue2155 + EnumValue2156 + EnumValue2157 + EnumValue2158 + EnumValue2159 + EnumValue2160 + EnumValue2161 + EnumValue2162 + EnumValue2163 +} + +enum Enum1110 @Directive44(argument97 : ["stringValue23430", "stringValue23431"]) { + EnumValue22775 + EnumValue22776 +} + +enum Enum1111 @Directive44(argument97 : ["stringValue23438", "stringValue23439"]) { + EnumValue22777 + EnumValue22778 + EnumValue22779 +} + +enum Enum1112 @Directive44(argument97 : ["stringValue23443", "stringValue23444"]) { + EnumValue22780 + EnumValue22781 + EnumValue22782 + EnumValue22783 +} + +enum Enum1113 @Directive44(argument97 : ["stringValue23445", "stringValue23446"]) { + EnumValue22784 + EnumValue22785 + EnumValue22786 + EnumValue22787 + EnumValue22788 + EnumValue22789 +} + +enum Enum1114 @Directive44(argument97 : ["stringValue23447", "stringValue23448"]) { + EnumValue22790 + EnumValue22791 + EnumValue22792 + EnumValue22793 +} + +enum Enum1115 @Directive44(argument97 : ["stringValue23449", "stringValue23450"]) { + EnumValue22794 + EnumValue22795 + EnumValue22796 + EnumValue22797 + EnumValue22798 +} + +enum Enum1116 @Directive44(argument97 : ["stringValue23457", "stringValue23458"]) { + EnumValue22799 + EnumValue22800 + EnumValue22801 +} + +enum Enum1117 @Directive44(argument97 : ["stringValue23459", "stringValue23460"]) { + EnumValue22802 + EnumValue22803 + EnumValue22804 +} + +enum Enum1118 @Directive44(argument97 : ["stringValue23461", "stringValue23462"]) { + EnumValue22805 + EnumValue22806 + EnumValue22807 +} + +enum Enum1119 @Directive44(argument97 : ["stringValue23463", "stringValue23464"]) { + EnumValue22808 + EnumValue22809 + EnumValue22810 +} + +enum Enum112 @Directive44(argument97 : ["stringValue998"]) { + EnumValue2164 + EnumValue2165 + EnumValue2166 + EnumValue2167 +} + +enum Enum1120 @Directive44(argument97 : ["stringValue23468", "stringValue23469"]) { + EnumValue22811 + EnumValue22812 + EnumValue22813 + EnumValue22814 + EnumValue22815 + EnumValue22816 + EnumValue22817 +} + +enum Enum1121 @Directive44(argument97 : ["stringValue23490", "stringValue23491"]) { + EnumValue22818 + EnumValue22819 + EnumValue22820 + EnumValue22821 + EnumValue22822 + EnumValue22823 + EnumValue22824 + EnumValue22825 + EnumValue22826 + EnumValue22827 + EnumValue22828 + EnumValue22829 + EnumValue22830 + EnumValue22831 + EnumValue22832 + EnumValue22833 + EnumValue22834 + EnumValue22835 + EnumValue22836 + EnumValue22837 + EnumValue22838 + EnumValue22839 + EnumValue22840 + EnumValue22841 + EnumValue22842 + EnumValue22843 + EnumValue22844 + EnumValue22845 + EnumValue22846 + EnumValue22847 + EnumValue22848 + EnumValue22849 + EnumValue22850 + EnumValue22851 + EnumValue22852 + EnumValue22853 + EnumValue22854 + EnumValue22855 + EnumValue22856 + EnumValue22857 + EnumValue22858 + EnumValue22859 + EnumValue22860 + EnumValue22861 + EnumValue22862 + EnumValue22863 + EnumValue22864 + EnumValue22865 + EnumValue22866 + EnumValue22867 + EnumValue22868 + EnumValue22869 +} + +enum Enum1122 @Directive44(argument97 : ["stringValue23492", "stringValue23493"]) { + EnumValue22870 + EnumValue22871 + EnumValue22872 + EnumValue22873 + EnumValue22874 + EnumValue22875 + EnumValue22876 + EnumValue22877 + EnumValue22878 + EnumValue22879 + EnumValue22880 + EnumValue22881 + EnumValue22882 + EnumValue22883 + EnumValue22884 + EnumValue22885 + EnumValue22886 + EnumValue22887 + EnumValue22888 + EnumValue22889 + EnumValue22890 + EnumValue22891 + EnumValue22892 + EnumValue22893 + EnumValue22894 + EnumValue22895 + EnumValue22896 +} + +enum Enum1123 @Directive44(argument97 : ["stringValue23497", "stringValue23498"]) { + EnumValue22897 + EnumValue22898 +} + +enum Enum1124 @Directive44(argument97 : ["stringValue23499", "stringValue23500"]) { + EnumValue22899 + EnumValue22900 + EnumValue22901 + EnumValue22902 + EnumValue22903 +} + +enum Enum1125 @Directive44(argument97 : ["stringValue23501", "stringValue23502"]) { + EnumValue22904 + EnumValue22905 + EnumValue22906 + EnumValue22907 + EnumValue22908 + EnumValue22909 + EnumValue22910 + EnumValue22911 + EnumValue22912 + EnumValue22913 + EnumValue22914 + EnumValue22915 + EnumValue22916 + EnumValue22917 + EnumValue22918 + EnumValue22919 + EnumValue22920 + EnumValue22921 + EnumValue22922 + EnumValue22923 + EnumValue22924 + EnumValue22925 + EnumValue22926 + EnumValue22927 +} + +enum Enum1126 @Directive44(argument97 : ["stringValue23503", "stringValue23504"]) { + EnumValue22928 + EnumValue22929 + EnumValue22930 + EnumValue22931 + EnumValue22932 + EnumValue22933 + EnumValue22934 + EnumValue22935 + EnumValue22936 + EnumValue22937 + EnumValue22938 +} + +enum Enum1127 @Directive44(argument97 : ["stringValue23505", "stringValue23506"]) { + EnumValue22939 + EnumValue22940 + EnumValue22941 + EnumValue22942 + EnumValue22943 + EnumValue22944 + EnumValue22945 + EnumValue22946 + EnumValue22947 + EnumValue22948 + EnumValue22949 + EnumValue22950 + EnumValue22951 + EnumValue22952 + EnumValue22953 + EnumValue22954 + EnumValue22955 + EnumValue22956 + EnumValue22957 + EnumValue22958 + EnumValue22959 + EnumValue22960 +} + +enum Enum1128 @Directive44(argument97 : ["stringValue23519", "stringValue23520"]) { + EnumValue22961 + EnumValue22962 + EnumValue22963 + EnumValue22964 + EnumValue22965 + EnumValue22966 + EnumValue22967 +} + +enum Enum1129 @Directive44(argument97 : ["stringValue23557", "stringValue23558"]) { + EnumValue22968 + EnumValue22969 + EnumValue22970 + EnumValue22971 + EnumValue22972 + EnumValue22973 + EnumValue22974 + EnumValue22975 + EnumValue22976 + EnumValue22977 + EnumValue22978 + EnumValue22979 + EnumValue22980 + EnumValue22981 + EnumValue22982 + EnumValue22983 + EnumValue22984 + EnumValue22985 + EnumValue22986 + EnumValue22987 + EnumValue22988 + EnumValue22989 + EnumValue22990 + EnumValue22991 + EnumValue22992 + EnumValue22993 + EnumValue22994 + EnumValue22995 + EnumValue22996 + EnumValue22997 + EnumValue22998 + EnumValue22999 + EnumValue23000 + EnumValue23001 + EnumValue23002 + EnumValue23003 + EnumValue23004 + EnumValue23005 + EnumValue23006 + EnumValue23007 + EnumValue23008 + EnumValue23009 + EnumValue23010 + EnumValue23011 + EnumValue23012 + EnumValue23013 + EnumValue23014 + EnumValue23015 + EnumValue23016 + EnumValue23017 + EnumValue23018 + EnumValue23019 + EnumValue23020 + EnumValue23021 + EnumValue23022 + EnumValue23023 + EnumValue23024 + EnumValue23025 + EnumValue23026 + EnumValue23027 + EnumValue23028 + EnumValue23029 + EnumValue23030 + EnumValue23031 + EnumValue23032 + EnumValue23033 + EnumValue23034 + EnumValue23035 + EnumValue23036 + EnumValue23037 + EnumValue23038 + EnumValue23039 + EnumValue23040 + EnumValue23041 + EnumValue23042 + EnumValue23043 + EnumValue23044 + EnumValue23045 + EnumValue23046 + EnumValue23047 +} + +enum Enum113 @Directive44(argument97 : ["stringValue999"]) { + EnumValue2168 + EnumValue2169 + EnumValue2170 + EnumValue2171 +} + +enum Enum1130 @Directive44(argument97 : ["stringValue23559", "stringValue23560"]) { + EnumValue23048 + EnumValue23049 + EnumValue23050 + EnumValue23051 + EnumValue23052 + EnumValue23053 + EnumValue23054 + EnumValue23055 + EnumValue23056 + EnumValue23057 + EnumValue23058 + EnumValue23059 + EnumValue23060 + EnumValue23061 + EnumValue23062 + EnumValue23063 + EnumValue23064 + EnumValue23065 + EnumValue23066 + EnumValue23067 + EnumValue23068 + EnumValue23069 + EnumValue23070 + EnumValue23071 + EnumValue23072 + EnumValue23073 + EnumValue23074 + EnumValue23075 + EnumValue23076 + EnumValue23077 + EnumValue23078 + EnumValue23079 +} + +enum Enum1131 @Directive44(argument97 : ["stringValue23561", "stringValue23562"]) { + EnumValue23080 + EnumValue23081 + EnumValue23082 + EnumValue23083 + EnumValue23084 +} + +enum Enum1132 @Directive44(argument97 : ["stringValue23566", "stringValue23567"]) { + EnumValue23085 + EnumValue23086 + EnumValue23087 + EnumValue23088 +} + +enum Enum1133 @Directive44(argument97 : ["stringValue23600", "stringValue23601"]) { + EnumValue23089 + EnumValue23090 + EnumValue23091 + EnumValue23092 + EnumValue23093 + EnumValue23094 + EnumValue23095 + EnumValue23096 + EnumValue23097 + EnumValue23098 + EnumValue23099 + EnumValue23100 + EnumValue23101 + EnumValue23102 +} + +enum Enum1134 @Directive44(argument97 : ["stringValue23602", "stringValue23603"]) { + EnumValue23103 + EnumValue23104 + EnumValue23105 + EnumValue23106 + EnumValue23107 + EnumValue23108 + EnumValue23109 +} + +enum Enum1135 @Directive44(argument97 : ["stringValue23607", "stringValue23608"]) { + EnumValue23110 + EnumValue23111 + EnumValue23112 + EnumValue23113 + EnumValue23114 + EnumValue23115 + EnumValue23116 + EnumValue23117 + EnumValue23118 + EnumValue23119 + EnumValue23120 + EnumValue23121 + EnumValue23122 + EnumValue23123 + EnumValue23124 + EnumValue23125 +} + +enum Enum1136 @Directive44(argument97 : ["stringValue23612", "stringValue23613"]) { + EnumValue23126 + EnumValue23127 +} + +enum Enum1137 @Directive44(argument97 : ["stringValue23620", "stringValue23621"]) { + EnumValue23128 + EnumValue23129 + EnumValue23130 + EnumValue23131 + EnumValue23132 + EnumValue23133 + EnumValue23134 +} + +enum Enum1138 @Directive44(argument97 : ["stringValue23622", "stringValue23623"]) { + EnumValue23135 + EnumValue23136 + EnumValue23137 + EnumValue23138 + EnumValue23139 + EnumValue23140 + EnumValue23141 + EnumValue23142 + EnumValue23143 + EnumValue23144 + EnumValue23145 + EnumValue23146 + EnumValue23147 + EnumValue23148 +} + +enum Enum1139 @Directive44(argument97 : ["stringValue23627", "stringValue23628"]) { + EnumValue23149 + EnumValue23150 + EnumValue23151 + EnumValue23152 + EnumValue23153 + EnumValue23154 + EnumValue23155 + EnumValue23156 + EnumValue23157 + EnumValue23158 + EnumValue23159 + EnumValue23160 + EnumValue23161 + EnumValue23162 + EnumValue23163 + EnumValue23164 + EnumValue23165 + EnumValue23166 + EnumValue23167 + EnumValue23168 + EnumValue23169 + EnumValue23170 + EnumValue23171 +} + +enum Enum114 @Directive44(argument97 : ["stringValue1005"]) { + EnumValue2172 + EnumValue2173 + EnumValue2174 + EnumValue2175 + EnumValue2176 + EnumValue2177 + EnumValue2178 + EnumValue2179 + EnumValue2180 + EnumValue2181 + EnumValue2182 + EnumValue2183 + EnumValue2184 + EnumValue2185 + EnumValue2186 + EnumValue2187 + EnumValue2188 + EnumValue2189 + EnumValue2190 + EnumValue2191 + EnumValue2192 + EnumValue2193 + EnumValue2194 + EnumValue2195 + EnumValue2196 + EnumValue2197 + EnumValue2198 + EnumValue2199 + EnumValue2200 + EnumValue2201 + EnumValue2202 + EnumValue2203 + EnumValue2204 + EnumValue2205 + EnumValue2206 + EnumValue2207 + EnumValue2208 + EnumValue2209 + EnumValue2210 + EnumValue2211 + EnumValue2212 + EnumValue2213 + EnumValue2214 + EnumValue2215 + EnumValue2216 + EnumValue2217 + EnumValue2218 + EnumValue2219 + EnumValue2220 + EnumValue2221 + EnumValue2222 + EnumValue2223 + EnumValue2224 + EnumValue2225 + EnumValue2226 + EnumValue2227 + EnumValue2228 + EnumValue2229 + EnumValue2230 + EnumValue2231 + EnumValue2232 + EnumValue2233 + EnumValue2234 + EnumValue2235 + EnumValue2236 + EnumValue2237 + EnumValue2238 + EnumValue2239 + EnumValue2240 + EnumValue2241 + EnumValue2242 + EnumValue2243 + EnumValue2244 + EnumValue2245 + EnumValue2246 + EnumValue2247 + EnumValue2248 + EnumValue2249 + EnumValue2250 + EnumValue2251 + EnumValue2252 + EnumValue2253 + EnumValue2254 + EnumValue2255 + EnumValue2256 + EnumValue2257 + EnumValue2258 + EnumValue2259 + EnumValue2260 + EnumValue2261 + EnumValue2262 + EnumValue2263 + EnumValue2264 + EnumValue2265 + EnumValue2266 + EnumValue2267 + EnumValue2268 + EnumValue2269 + EnumValue2270 + EnumValue2271 + EnumValue2272 + EnumValue2273 + EnumValue2274 + EnumValue2275 + EnumValue2276 + EnumValue2277 + EnumValue2278 + EnumValue2279 + EnumValue2280 + EnumValue2281 + EnumValue2282 + EnumValue2283 + EnumValue2284 + EnumValue2285 + EnumValue2286 + EnumValue2287 + EnumValue2288 + EnumValue2289 + EnumValue2290 + EnumValue2291 + EnumValue2292 + EnumValue2293 + EnumValue2294 + EnumValue2295 + EnumValue2296 + EnumValue2297 + EnumValue2298 + EnumValue2299 + EnumValue2300 + EnumValue2301 + EnumValue2302 + EnumValue2303 + EnumValue2304 + EnumValue2305 + EnumValue2306 + EnumValue2307 + EnumValue2308 + EnumValue2309 + EnumValue2310 + EnumValue2311 + EnumValue2312 + EnumValue2313 + EnumValue2314 + EnumValue2315 + EnumValue2316 + EnumValue2317 + EnumValue2318 + EnumValue2319 + EnumValue2320 + EnumValue2321 + EnumValue2322 + EnumValue2323 + EnumValue2324 + EnumValue2325 + EnumValue2326 + EnumValue2327 + EnumValue2328 + EnumValue2329 + EnumValue2330 + EnumValue2331 + EnumValue2332 + EnumValue2333 + EnumValue2334 + EnumValue2335 + EnumValue2336 + EnumValue2337 + EnumValue2338 + EnumValue2339 + EnumValue2340 + EnumValue2341 + EnumValue2342 + EnumValue2343 + EnumValue2344 + EnumValue2345 + EnumValue2346 + EnumValue2347 + EnumValue2348 + EnumValue2349 + EnumValue2350 + EnumValue2351 + EnumValue2352 + EnumValue2353 + EnumValue2354 + EnumValue2355 + EnumValue2356 + EnumValue2357 + EnumValue2358 + EnumValue2359 + EnumValue2360 + EnumValue2361 + EnumValue2362 + EnumValue2363 + EnumValue2364 + EnumValue2365 + EnumValue2366 + EnumValue2367 + EnumValue2368 + EnumValue2369 + EnumValue2370 + EnumValue2371 + EnumValue2372 + EnumValue2373 + EnumValue2374 + EnumValue2375 + EnumValue2376 + EnumValue2377 + EnumValue2378 + EnumValue2379 + EnumValue2380 + EnumValue2381 + EnumValue2382 + EnumValue2383 + EnumValue2384 + EnumValue2385 + EnumValue2386 + EnumValue2387 + EnumValue2388 + EnumValue2389 + EnumValue2390 + EnumValue2391 + EnumValue2392 + EnumValue2393 + EnumValue2394 + EnumValue2395 + EnumValue2396 + EnumValue2397 + EnumValue2398 + EnumValue2399 + EnumValue2400 + EnumValue2401 + EnumValue2402 + EnumValue2403 + EnumValue2404 + EnumValue2405 + EnumValue2406 + EnumValue2407 + EnumValue2408 + EnumValue2409 + EnumValue2410 + EnumValue2411 + EnumValue2412 + EnumValue2413 + EnumValue2414 + EnumValue2415 + EnumValue2416 + EnumValue2417 + EnumValue2418 + EnumValue2419 + EnumValue2420 + EnumValue2421 + EnumValue2422 + EnumValue2423 + EnumValue2424 + EnumValue2425 + EnumValue2426 + EnumValue2427 + EnumValue2428 + EnumValue2429 + EnumValue2430 + EnumValue2431 + EnumValue2432 + EnumValue2433 + EnumValue2434 + EnumValue2435 + EnumValue2436 + EnumValue2437 + EnumValue2438 + EnumValue2439 + EnumValue2440 + EnumValue2441 + EnumValue2442 + EnumValue2443 + EnumValue2444 + EnumValue2445 + EnumValue2446 + EnumValue2447 + EnumValue2448 + EnumValue2449 + EnumValue2450 + EnumValue2451 + EnumValue2452 + EnumValue2453 + EnumValue2454 + EnumValue2455 + EnumValue2456 + EnumValue2457 + EnumValue2458 + EnumValue2459 + EnumValue2460 + EnumValue2461 + EnumValue2462 + EnumValue2463 + EnumValue2464 + EnumValue2465 + EnumValue2466 + EnumValue2467 + EnumValue2468 + EnumValue2469 + EnumValue2470 + EnumValue2471 + EnumValue2472 + EnumValue2473 + EnumValue2474 + EnumValue2475 + EnumValue2476 + EnumValue2477 + EnumValue2478 + EnumValue2479 + EnumValue2480 + EnumValue2481 + EnumValue2482 + EnumValue2483 + EnumValue2484 + EnumValue2485 + EnumValue2486 + EnumValue2487 + EnumValue2488 + EnumValue2489 + EnumValue2490 + EnumValue2491 + EnumValue2492 + EnumValue2493 + EnumValue2494 + EnumValue2495 + EnumValue2496 + EnumValue2497 + EnumValue2498 + EnumValue2499 + EnumValue2500 + EnumValue2501 + EnumValue2502 + EnumValue2503 + EnumValue2504 + EnumValue2505 + EnumValue2506 + EnumValue2507 + EnumValue2508 + EnumValue2509 + EnumValue2510 + EnumValue2511 + EnumValue2512 + EnumValue2513 + EnumValue2514 + EnumValue2515 + EnumValue2516 + EnumValue2517 + EnumValue2518 + EnumValue2519 + EnumValue2520 + EnumValue2521 + EnumValue2522 + EnumValue2523 + EnumValue2524 + EnumValue2525 + EnumValue2526 + EnumValue2527 + EnumValue2528 + EnumValue2529 + EnumValue2530 + EnumValue2531 + EnumValue2532 + EnumValue2533 + EnumValue2534 + EnumValue2535 + EnumValue2536 + EnumValue2537 + EnumValue2538 + EnumValue2539 + EnumValue2540 + EnumValue2541 + EnumValue2542 + EnumValue2543 + EnumValue2544 + EnumValue2545 + EnumValue2546 + EnumValue2547 + EnumValue2548 + EnumValue2549 + EnumValue2550 + EnumValue2551 + EnumValue2552 + EnumValue2553 + EnumValue2554 + EnumValue2555 + EnumValue2556 + EnumValue2557 + EnumValue2558 + EnumValue2559 + EnumValue2560 + EnumValue2561 + EnumValue2562 + EnumValue2563 + EnumValue2564 + EnumValue2565 + EnumValue2566 + EnumValue2567 + EnumValue2568 + EnumValue2569 + EnumValue2570 + EnumValue2571 + EnumValue2572 + EnumValue2573 + EnumValue2574 + EnumValue2575 + EnumValue2576 + EnumValue2577 + EnumValue2578 + EnumValue2579 + EnumValue2580 + EnumValue2581 + EnumValue2582 + EnumValue2583 + EnumValue2584 + EnumValue2585 + EnumValue2586 + EnumValue2587 + EnumValue2588 + EnumValue2589 + EnumValue2590 + EnumValue2591 + EnumValue2592 + EnumValue2593 + EnumValue2594 + EnumValue2595 + EnumValue2596 + EnumValue2597 + EnumValue2598 + EnumValue2599 + EnumValue2600 + EnumValue2601 + EnumValue2602 + EnumValue2603 + EnumValue2604 + EnumValue2605 + EnumValue2606 + EnumValue2607 + EnumValue2608 + EnumValue2609 + EnumValue2610 + EnumValue2611 + EnumValue2612 + EnumValue2613 + EnumValue2614 + EnumValue2615 + EnumValue2616 + EnumValue2617 + EnumValue2618 + EnumValue2619 + EnumValue2620 + EnumValue2621 + EnumValue2622 + EnumValue2623 + EnumValue2624 + EnumValue2625 + EnumValue2626 + EnumValue2627 + EnumValue2628 + EnumValue2629 + EnumValue2630 + EnumValue2631 + EnumValue2632 + EnumValue2633 + EnumValue2634 + EnumValue2635 + EnumValue2636 + EnumValue2637 + EnumValue2638 + EnumValue2639 + EnumValue2640 + EnumValue2641 + EnumValue2642 + EnumValue2643 + EnumValue2644 + EnumValue2645 + EnumValue2646 + EnumValue2647 + EnumValue2648 + EnumValue2649 + EnumValue2650 + EnumValue2651 + EnumValue2652 + EnumValue2653 + EnumValue2654 + EnumValue2655 + EnumValue2656 + EnumValue2657 + EnumValue2658 + EnumValue2659 + EnumValue2660 + EnumValue2661 + EnumValue2662 + EnumValue2663 + EnumValue2664 + EnumValue2665 + EnumValue2666 + EnumValue2667 + EnumValue2668 + EnumValue2669 + EnumValue2670 + EnumValue2671 + EnumValue2672 + EnumValue2673 + EnumValue2674 + EnumValue2675 + EnumValue2676 + EnumValue2677 + EnumValue2678 + EnumValue2679 + EnumValue2680 + EnumValue2681 + EnumValue2682 + EnumValue2683 + EnumValue2684 + EnumValue2685 + EnumValue2686 + EnumValue2687 + EnumValue2688 + EnumValue2689 + EnumValue2690 + EnumValue2691 + EnumValue2692 + EnumValue2693 + EnumValue2694 + EnumValue2695 + EnumValue2696 + EnumValue2697 + EnumValue2698 + EnumValue2699 + EnumValue2700 + EnumValue2701 + EnumValue2702 + EnumValue2703 + EnumValue2704 + EnumValue2705 + EnumValue2706 + EnumValue2707 + EnumValue2708 + EnumValue2709 + EnumValue2710 + EnumValue2711 + EnumValue2712 + EnumValue2713 + EnumValue2714 + EnumValue2715 + EnumValue2716 + EnumValue2717 + EnumValue2718 + EnumValue2719 + EnumValue2720 + EnumValue2721 + EnumValue2722 + EnumValue2723 + EnumValue2724 + EnumValue2725 + EnumValue2726 + EnumValue2727 + EnumValue2728 + EnumValue2729 + EnumValue2730 + EnumValue2731 + EnumValue2732 + EnumValue2733 + EnumValue2734 + EnumValue2735 + EnumValue2736 + EnumValue2737 + EnumValue2738 + EnumValue2739 + EnumValue2740 + EnumValue2741 + EnumValue2742 + EnumValue2743 + EnumValue2744 + EnumValue2745 + EnumValue2746 + EnumValue2747 + EnumValue2748 + EnumValue2749 + EnumValue2750 + EnumValue2751 + EnumValue2752 + EnumValue2753 + EnumValue2754 + EnumValue2755 + EnumValue2756 + EnumValue2757 + EnumValue2758 + EnumValue2759 + EnumValue2760 + EnumValue2761 + EnumValue2762 + EnumValue2763 + EnumValue2764 + EnumValue2765 + EnumValue2766 + EnumValue2767 + EnumValue2768 + EnumValue2769 + EnumValue2770 + EnumValue2771 + EnumValue2772 + EnumValue2773 + EnumValue2774 + EnumValue2775 + EnumValue2776 + EnumValue2777 + EnumValue2778 + EnumValue2779 + EnumValue2780 + EnumValue2781 + EnumValue2782 + EnumValue2783 + EnumValue2784 + EnumValue2785 + EnumValue2786 + EnumValue2787 + EnumValue2788 + EnumValue2789 + EnumValue2790 + EnumValue2791 + EnumValue2792 + EnumValue2793 + EnumValue2794 + EnumValue2795 + EnumValue2796 + EnumValue2797 + EnumValue2798 + EnumValue2799 + EnumValue2800 + EnumValue2801 + EnumValue2802 + EnumValue2803 + EnumValue2804 + EnumValue2805 + EnumValue2806 + EnumValue2807 + EnumValue2808 + EnumValue2809 + EnumValue2810 + EnumValue2811 + EnumValue2812 + EnumValue2813 + EnumValue2814 + EnumValue2815 + EnumValue2816 + EnumValue2817 + EnumValue2818 + EnumValue2819 + EnumValue2820 + EnumValue2821 + EnumValue2822 + EnumValue2823 + EnumValue2824 + EnumValue2825 + EnumValue2826 + EnumValue2827 + EnumValue2828 + EnumValue2829 + EnumValue2830 + EnumValue2831 + EnumValue2832 +} + +enum Enum1140 @Directive44(argument97 : ["stringValue23635", "stringValue23636"]) { + EnumValue23172 + EnumValue23173 + EnumValue23174 + EnumValue23175 + EnumValue23176 + EnumValue23177 + EnumValue23178 + EnumValue23179 + EnumValue23180 + EnumValue23181 + EnumValue23182 + EnumValue23183 + EnumValue23184 + EnumValue23185 + EnumValue23186 + EnumValue23187 + EnumValue23188 + EnumValue23189 + EnumValue23190 + EnumValue23191 + EnumValue23192 + EnumValue23193 + EnumValue23194 +} + +enum Enum1141 @Directive44(argument97 : ["stringValue23637", "stringValue23638"]) { + EnumValue23195 + EnumValue23196 + EnumValue23197 + EnumValue23198 + EnumValue23199 + EnumValue23200 + EnumValue23201 + EnumValue23202 + EnumValue23203 + EnumValue23204 + EnumValue23205 + EnumValue23206 +} + +enum Enum1142 @Directive44(argument97 : ["stringValue23645", "stringValue23646"]) { + EnumValue23207 + EnumValue23208 + EnumValue23209 + EnumValue23210 + EnumValue23211 + EnumValue23212 + EnumValue23213 + EnumValue23214 +} + +enum Enum1143 @Directive44(argument97 : ["stringValue23647", "stringValue23648"]) { + EnumValue23215 + EnumValue23216 + EnumValue23217 + EnumValue23218 + EnumValue23219 + EnumValue23220 + EnumValue23221 + EnumValue23222 + EnumValue23223 + EnumValue23224 + EnumValue23225 +} + +enum Enum1144 @Directive44(argument97 : ["stringValue23655", "stringValue23656"]) { + EnumValue23226 + EnumValue23227 + EnumValue23228 + EnumValue23229 + EnumValue23230 + EnumValue23231 + EnumValue23232 + EnumValue23233 + EnumValue23234 + EnumValue23235 + EnumValue23236 + EnumValue23237 +} + +enum Enum1145 @Directive44(argument97 : ["stringValue23657", "stringValue23658"]) { + EnumValue23238 + EnumValue23239 + EnumValue23240 + EnumValue23241 + EnumValue23242 + EnumValue23243 + EnumValue23244 + EnumValue23245 + EnumValue23246 + EnumValue23247 +} + +enum Enum1146 @Directive44(argument97 : ["stringValue23665", "stringValue23666"]) { + EnumValue23248 + EnumValue23249 + EnumValue23250 + EnumValue23251 + EnumValue23252 + EnumValue23253 + EnumValue23254 + EnumValue23255 + EnumValue23256 + EnumValue23257 + EnumValue23258 + EnumValue23259 + EnumValue23260 + EnumValue23261 + EnumValue23262 + EnumValue23263 + EnumValue23264 +} + +enum Enum1147 @Directive44(argument97 : ["stringValue23667", "stringValue23668"]) { + EnumValue23265 + EnumValue23266 + EnumValue23267 + EnumValue23268 +} + +enum Enum1148 @Directive44(argument97 : ["stringValue23669", "stringValue23670"]) { + EnumValue23269 + EnumValue23270 + EnumValue23271 + EnumValue23272 + EnumValue23273 +} + +enum Enum1149 @Directive44(argument97 : ["stringValue23671", "stringValue23672"]) { + EnumValue23274 + EnumValue23275 + EnumValue23276 + EnumValue23277 + EnumValue23278 + EnumValue23279 +} + +enum Enum115 @Directive44(argument97 : ["stringValue1028"]) { + EnumValue2833 + EnumValue2834 + EnumValue2835 + EnumValue2836 + EnumValue2837 +} + +enum Enum1150 @Directive44(argument97 : ["stringValue23673", "stringValue23674"]) { + EnumValue23280 + EnumValue23281 + EnumValue23282 +} + +enum Enum1151 @Directive44(argument97 : ["stringValue23678", "stringValue23679"]) { + EnumValue23283 + EnumValue23284 + EnumValue23285 + EnumValue23286 + EnumValue23287 + EnumValue23288 + EnumValue23289 + EnumValue23290 + EnumValue23291 + EnumValue23292 + EnumValue23293 + EnumValue23294 + EnumValue23295 + EnumValue23296 +} + +enum Enum1152 @Directive44(argument97 : ["stringValue23692", "stringValue23693"]) { + EnumValue23297 + EnumValue23298 + EnumValue23299 +} + +enum Enum1153 @Directive44(argument97 : ["stringValue23709", "stringValue23710"]) { + EnumValue23300 + EnumValue23301 + EnumValue23302 + EnumValue23303 + EnumValue23304 + EnumValue23305 + EnumValue23306 + EnumValue23307 + EnumValue23308 + EnumValue23309 + EnumValue23310 + EnumValue23311 + EnumValue23312 + EnumValue23313 + EnumValue23314 + EnumValue23315 + EnumValue23316 + EnumValue23317 + EnumValue23318 + EnumValue23319 + EnumValue23320 + EnumValue23321 + EnumValue23322 + EnumValue23323 + EnumValue23324 + EnumValue23325 + EnumValue23326 + EnumValue23327 + EnumValue23328 + EnumValue23329 + EnumValue23330 + EnumValue23331 + EnumValue23332 + EnumValue23333 + EnumValue23334 + EnumValue23335 + EnumValue23336 + EnumValue23337 + EnumValue23338 + EnumValue23339 + EnumValue23340 + EnumValue23341 + EnumValue23342 + EnumValue23343 + EnumValue23344 + EnumValue23345 + EnumValue23346 + EnumValue23347 + EnumValue23348 + EnumValue23349 + EnumValue23350 + EnumValue23351 + EnumValue23352 + EnumValue23353 + EnumValue23354 + EnumValue23355 + EnumValue23356 + EnumValue23357 + EnumValue23358 + EnumValue23359 + EnumValue23360 + EnumValue23361 + EnumValue23362 + EnumValue23363 + EnumValue23364 + EnumValue23365 + EnumValue23366 + EnumValue23367 + EnumValue23368 + EnumValue23369 + EnumValue23370 + EnumValue23371 + EnumValue23372 + EnumValue23373 + EnumValue23374 + EnumValue23375 + EnumValue23376 + EnumValue23377 + EnumValue23378 + EnumValue23379 + EnumValue23380 + EnumValue23381 + EnumValue23382 + EnumValue23383 + EnumValue23384 + EnumValue23385 + EnumValue23386 + EnumValue23387 + EnumValue23388 + EnumValue23389 + EnumValue23390 + EnumValue23391 + EnumValue23392 + EnumValue23393 + EnumValue23394 + EnumValue23395 + EnumValue23396 + EnumValue23397 + EnumValue23398 + EnumValue23399 + EnumValue23400 + EnumValue23401 + EnumValue23402 + EnumValue23403 + EnumValue23404 + EnumValue23405 + EnumValue23406 + EnumValue23407 + EnumValue23408 + EnumValue23409 + EnumValue23410 + EnumValue23411 + EnumValue23412 + EnumValue23413 + EnumValue23414 + EnumValue23415 + EnumValue23416 + EnumValue23417 + EnumValue23418 + EnumValue23419 + EnumValue23420 + EnumValue23421 + EnumValue23422 + EnumValue23423 + EnumValue23424 + EnumValue23425 + EnumValue23426 + EnumValue23427 + EnumValue23428 + EnumValue23429 + EnumValue23430 + EnumValue23431 + EnumValue23432 + EnumValue23433 + EnumValue23434 + EnumValue23435 + EnumValue23436 + EnumValue23437 + EnumValue23438 + EnumValue23439 + EnumValue23440 + EnumValue23441 + EnumValue23442 + EnumValue23443 + EnumValue23444 + EnumValue23445 + EnumValue23446 + EnumValue23447 + EnumValue23448 + EnumValue23449 + EnumValue23450 + EnumValue23451 + EnumValue23452 + EnumValue23453 + EnumValue23454 + EnumValue23455 + EnumValue23456 + EnumValue23457 + EnumValue23458 + EnumValue23459 + EnumValue23460 + EnumValue23461 + EnumValue23462 + EnumValue23463 + EnumValue23464 + EnumValue23465 + EnumValue23466 + EnumValue23467 + EnumValue23468 + EnumValue23469 + EnumValue23470 + EnumValue23471 + EnumValue23472 + EnumValue23473 + EnumValue23474 + EnumValue23475 + EnumValue23476 + EnumValue23477 + EnumValue23478 + EnumValue23479 + EnumValue23480 + EnumValue23481 + EnumValue23482 + EnumValue23483 + EnumValue23484 + EnumValue23485 + EnumValue23486 + EnumValue23487 + EnumValue23488 + EnumValue23489 + EnumValue23490 + EnumValue23491 + EnumValue23492 + EnumValue23493 + EnumValue23494 + EnumValue23495 + EnumValue23496 + EnumValue23497 + EnumValue23498 + EnumValue23499 + EnumValue23500 + EnumValue23501 + EnumValue23502 + EnumValue23503 + EnumValue23504 + EnumValue23505 + EnumValue23506 +} + +enum Enum1154 @Directive44(argument97 : ["stringValue23714", "stringValue23715"]) { + EnumValue23507 + EnumValue23508 + EnumValue23509 +} + +enum Enum1155 @Directive44(argument97 : ["stringValue23716", "stringValue23717"]) { + EnumValue23510 + EnumValue23511 + EnumValue23512 + EnumValue23513 + EnumValue23514 + EnumValue23515 + EnumValue23516 + EnumValue23517 + EnumValue23518 + EnumValue23519 + EnumValue23520 + EnumValue23521 + EnumValue23522 + EnumValue23523 + EnumValue23524 + EnumValue23525 + EnumValue23526 +} + +enum Enum1156 @Directive44(argument97 : ["stringValue23718", "stringValue23719"]) { + EnumValue23527 + EnumValue23528 + EnumValue23529 + EnumValue23530 +} + +enum Enum1157 @Directive44(argument97 : ["stringValue23731", "stringValue23732"]) { + EnumValue23531 + EnumValue23532 + EnumValue23533 + EnumValue23534 + EnumValue23535 + EnumValue23536 +} + +enum Enum1158 @Directive44(argument97 : ["stringValue23736", "stringValue23737"]) { + EnumValue23537 + EnumValue23538 + EnumValue23539 + EnumValue23540 + EnumValue23541 + EnumValue23542 + EnumValue23543 + EnumValue23544 + EnumValue23545 +} + +enum Enum1159 @Directive44(argument97 : ["stringValue23738", "stringValue23739"]) { + EnumValue23546 + EnumValue23547 + EnumValue23548 + EnumValue23549 + EnumValue23550 + EnumValue23551 + EnumValue23552 +} + +enum Enum116 @Directive44(argument97 : ["stringValue1036"]) { + EnumValue2838 + EnumValue2839 + EnumValue2840 + EnumValue2841 +} + +enum Enum1160 @Directive44(argument97 : ["stringValue23740", "stringValue23741"]) { + EnumValue23553 + EnumValue23554 + EnumValue23555 +} + +enum Enum1161 @Directive44(argument97 : ["stringValue23757", "stringValue23758"]) { + EnumValue23556 + EnumValue23557 + EnumValue23558 +} + +enum Enum1162 @Directive44(argument97 : ["stringValue23765", "stringValue23766"]) { + EnumValue23559 + EnumValue23560 + EnumValue23561 + EnumValue23562 + EnumValue23563 + EnumValue23564 + EnumValue23565 + EnumValue23566 + EnumValue23567 + EnumValue23568 + EnumValue23569 + EnumValue23570 + EnumValue23571 + EnumValue23572 + EnumValue23573 + EnumValue23574 + EnumValue23575 + EnumValue23576 + EnumValue23577 + EnumValue23578 + EnumValue23579 + EnumValue23580 + EnumValue23581 + EnumValue23582 + EnumValue23583 + EnumValue23584 + EnumValue23585 + EnumValue23586 + EnumValue23587 + EnumValue23588 + EnumValue23589 + EnumValue23590 + EnumValue23591 +} + +enum Enum1163 @Directive44(argument97 : ["stringValue23767", "stringValue23768"]) { + EnumValue23592 + EnumValue23593 + EnumValue23594 +} + +enum Enum1164 @Directive44(argument97 : ["stringValue23769", "stringValue23770"]) { + EnumValue23595 + EnumValue23596 + EnumValue23597 +} + +enum Enum1165 @Directive44(argument97 : ["stringValue23777", "stringValue23778"]) { + EnumValue23598 + EnumValue23599 + EnumValue23600 + EnumValue23601 + EnumValue23602 + EnumValue23603 + EnumValue23604 + EnumValue23605 +} + +enum Enum1166 @Directive44(argument97 : ["stringValue23790", "stringValue23791"]) { + EnumValue23606 + EnumValue23607 + EnumValue23608 + EnumValue23609 + EnumValue23610 + EnumValue23611 +} + +enum Enum1167 @Directive44(argument97 : ["stringValue23792", "stringValue23793"]) { + EnumValue23612 + EnumValue23613 + EnumValue23614 + EnumValue23615 + EnumValue23616 + EnumValue23617 + EnumValue23618 + EnumValue23619 + EnumValue23620 + EnumValue23621 +} + +enum Enum1168 @Directive44(argument97 : ["stringValue23797", "stringValue23798"]) { + EnumValue23622 + EnumValue23623 + EnumValue23624 + EnumValue23625 + EnumValue23626 + EnumValue23627 + EnumValue23628 + EnumValue23629 + EnumValue23630 + EnumValue23631 + EnumValue23632 + EnumValue23633 + EnumValue23634 + EnumValue23635 + EnumValue23636 + EnumValue23637 + EnumValue23638 + EnumValue23639 + EnumValue23640 + EnumValue23641 + EnumValue23642 + EnumValue23643 + EnumValue23644 + EnumValue23645 + EnumValue23646 + EnumValue23647 + EnumValue23648 + EnumValue23649 + EnumValue23650 + EnumValue23651 + EnumValue23652 + EnumValue23653 + EnumValue23654 + EnumValue23655 + EnumValue23656 + EnumValue23657 + EnumValue23658 + EnumValue23659 + EnumValue23660 + EnumValue23661 + EnumValue23662 + EnumValue23663 + EnumValue23664 + EnumValue23665 + EnumValue23666 + EnumValue23667 + EnumValue23668 + EnumValue23669 + EnumValue23670 + EnumValue23671 + EnumValue23672 + EnumValue23673 + EnumValue23674 + EnumValue23675 + EnumValue23676 + EnumValue23677 + EnumValue23678 + EnumValue23679 + EnumValue23680 + EnumValue23681 + EnumValue23682 + EnumValue23683 + EnumValue23684 + EnumValue23685 + EnumValue23686 + EnumValue23687 + EnumValue23688 + EnumValue23689 + EnumValue23690 + EnumValue23691 + EnumValue23692 + EnumValue23693 + EnumValue23694 + EnumValue23695 + EnumValue23696 + EnumValue23697 + EnumValue23698 + EnumValue23699 + EnumValue23700 + EnumValue23701 + EnumValue23702 + EnumValue23703 + EnumValue23704 + EnumValue23705 + EnumValue23706 + EnumValue23707 + EnumValue23708 + EnumValue23709 + EnumValue23710 + EnumValue23711 + EnumValue23712 + EnumValue23713 + EnumValue23714 + EnumValue23715 + EnumValue23716 +} + +enum Enum1169 @Directive44(argument97 : ["stringValue23799", "stringValue23800"]) { + EnumValue23717 + EnumValue23718 + EnumValue23719 + EnumValue23720 + EnumValue23721 + EnumValue23722 + EnumValue23723 + EnumValue23724 + EnumValue23725 + EnumValue23726 + EnumValue23727 + EnumValue23728 + EnumValue23729 + EnumValue23730 + EnumValue23731 + EnumValue23732 + EnumValue23733 + EnumValue23734 +} + +enum Enum117 @Directive44(argument97 : ["stringValue1037"]) { + EnumValue2842 + EnumValue2843 + EnumValue2844 + EnumValue2845 + EnumValue2846 + EnumValue2847 + EnumValue2848 + EnumValue2849 + EnumValue2850 + EnumValue2851 + EnumValue2852 + EnumValue2853 + EnumValue2854 + EnumValue2855 + EnumValue2856 + EnumValue2857 + EnumValue2858 + EnumValue2859 + EnumValue2860 + EnumValue2861 + EnumValue2862 + EnumValue2863 + EnumValue2864 + EnumValue2865 + EnumValue2866 + EnumValue2867 + EnumValue2868 + EnumValue2869 +} + +enum Enum1170 @Directive44(argument97 : ["stringValue23816", "stringValue23817"]) { + EnumValue23735 + EnumValue23736 + EnumValue23737 + EnumValue23738 +} + +enum Enum1171 @Directive44(argument97 : ["stringValue23818", "stringValue23819"]) { + EnumValue23739 + EnumValue23740 + EnumValue23741 +} + +enum Enum1172 @Directive44(argument97 : ["stringValue23823", "stringValue23824"]) { + EnumValue23742 + EnumValue23743 + EnumValue23744 + EnumValue23745 +} + +enum Enum1173 @Directive44(argument97 : ["stringValue23825", "stringValue23826"]) { + EnumValue23746 + EnumValue23747 + EnumValue23748 +} + +enum Enum1174 @Directive44(argument97 : ["stringValue23830", "stringValue23831"]) { + EnumValue23749 + EnumValue23750 + EnumValue23751 + EnumValue23752 + EnumValue23753 +} + +enum Enum1175 @Directive44(argument97 : ["stringValue23835", "stringValue23836"]) { + EnumValue23754 + EnumValue23755 + EnumValue23756 + EnumValue23757 + EnumValue23758 + EnumValue23759 + EnumValue23760 + EnumValue23761 + EnumValue23762 + EnumValue23763 + EnumValue23764 + EnumValue23765 + EnumValue23766 + EnumValue23767 + EnumValue23768 +} + +enum Enum1176 @Directive44(argument97 : ["stringValue23840", "stringValue23841"]) { + EnumValue23769 + EnumValue23770 + EnumValue23771 + EnumValue23772 + EnumValue23773 +} + +enum Enum1177 @Directive44(argument97 : ["stringValue23842", "stringValue23843"]) { + EnumValue23774 + EnumValue23775 +} + +enum Enum1178 @Directive44(argument97 : ["stringValue23844", "stringValue23845"]) { + EnumValue23776 + EnumValue23777 + EnumValue23778 + EnumValue23779 +} + +enum Enum1179 @Directive44(argument97 : ["stringValue23849", "stringValue23850"]) { + EnumValue23780 + EnumValue23781 + EnumValue23782 + EnumValue23783 +} + +enum Enum118 @Directive44(argument97 : ["stringValue1042"]) { + EnumValue2870 + EnumValue2871 + EnumValue2872 + EnumValue2873 + EnumValue2874 +} + +enum Enum1180 @Directive44(argument97 : ["stringValue23857", "stringValue23858"]) { + EnumValue23784 + EnumValue23785 + EnumValue23786 + EnumValue23787 +} + +enum Enum1181 @Directive44(argument97 : ["stringValue23865", "stringValue23866"]) { + EnumValue23788 + EnumValue23789 + EnumValue23790 + EnumValue23791 + EnumValue23792 +} + +enum Enum1182 @Directive44(argument97 : ["stringValue23870", "stringValue23871"]) { + EnumValue23793 + EnumValue23794 + EnumValue23795 + EnumValue23796 + EnumValue23797 + EnumValue23798 + EnumValue23799 + EnumValue23800 + EnumValue23801 + EnumValue23802 +} + +enum Enum1183 @Directive44(argument97 : ["stringValue23881", "stringValue23882"]) { + EnumValue23803 + EnumValue23804 + EnumValue23805 +} + +enum Enum1184 @Directive44(argument97 : ["stringValue23883", "stringValue23884"]) { + EnumValue23806 + EnumValue23807 + EnumValue23808 + EnumValue23809 + EnumValue23810 + EnumValue23811 + EnumValue23812 +} + +enum Enum1185 @Directive44(argument97 : ["stringValue23891", "stringValue23892"]) { + EnumValue23813 + EnumValue23814 + EnumValue23815 + EnumValue23816 + EnumValue23817 + EnumValue23818 + EnumValue23819 + EnumValue23820 + EnumValue23821 + EnumValue23822 + EnumValue23823 + EnumValue23824 + EnumValue23825 + EnumValue23826 + EnumValue23827 + EnumValue23828 + EnumValue23829 + EnumValue23830 +} + +enum Enum1186 @Directive44(argument97 : ["stringValue23896", "stringValue23897"]) { + EnumValue23831 + EnumValue23832 + EnumValue23833 +} + +enum Enum1187 @Directive44(argument97 : ["stringValue23898", "stringValue23899"]) { + EnumValue23834 + EnumValue23835 + EnumValue23836 + EnumValue23837 + EnumValue23838 +} + +enum Enum1188 @Directive44(argument97 : ["stringValue23900", "stringValue23901"]) { + EnumValue23839 + EnumValue23840 + EnumValue23841 +} + +enum Enum1189 @Directive44(argument97 : ["stringValue23902", "stringValue23903"]) { + EnumValue23842 + EnumValue23843 + EnumValue23844 + EnumValue23845 + EnumValue23846 + EnumValue23847 + EnumValue23848 + EnumValue23849 + EnumValue23850 + EnumValue23851 + EnumValue23852 + EnumValue23853 + EnumValue23854 + EnumValue23855 + EnumValue23856 + EnumValue23857 + EnumValue23858 + EnumValue23859 + EnumValue23860 +} + +enum Enum119 @Directive44(argument97 : ["stringValue1043"]) { + EnumValue2875 + EnumValue2876 + EnumValue2877 + EnumValue2878 + EnumValue2879 + EnumValue2880 +} + +enum Enum1190 @Directive44(argument97 : ["stringValue23919", "stringValue23920"]) { + EnumValue23861 + EnumValue23862 + EnumValue23863 + EnumValue23864 + EnumValue23865 +} + +enum Enum1191 @Directive44(argument97 : ["stringValue23921", "stringValue23922"]) { + EnumValue23866 + EnumValue23867 + EnumValue23868 + EnumValue23869 + EnumValue23870 +} + +enum Enum1192 @Directive44(argument97 : ["stringValue23925", "stringValue23926"]) { + EnumValue23871 + EnumValue23872 + EnumValue23873 + EnumValue23874 + EnumValue23875 + EnumValue23876 + EnumValue23877 + EnumValue23878 +} + +enum Enum1193 @Directive44(argument97 : ["stringValue23927", "stringValue23928"]) { + EnumValue23879 + EnumValue23880 +} + +enum Enum1194 @Directive44(argument97 : ["stringValue23929", "stringValue23930"]) { + EnumValue23881 + EnumValue23882 + EnumValue23883 +} + +enum Enum1195 @Directive44(argument97 : ["stringValue24144"]) { + EnumValue23884 + EnumValue23885 + EnumValue23886 + EnumValue23887 + EnumValue23888 +} + +enum Enum1196 @Directive44(argument97 : ["stringValue24155"]) { + EnumValue23889 + EnumValue23890 + EnumValue23891 +} + +enum Enum1197 @Directive44(argument97 : ["stringValue24160"]) { + EnumValue23892 + EnumValue23893 + EnumValue23894 + EnumValue23895 + EnumValue23896 + EnumValue23897 + EnumValue23898 +} + +enum Enum1198 @Directive44(argument97 : ["stringValue24172"]) { + EnumValue23899 + EnumValue23900 + EnumValue23901 +} + +enum Enum1199 @Directive44(argument97 : ["stringValue24194"]) { + EnumValue23902 + EnumValue23903 + EnumValue23904 + EnumValue23905 + EnumValue23906 + EnumValue23907 + EnumValue23908 + EnumValue23909 + EnumValue23910 + EnumValue23911 + EnumValue23912 + EnumValue23913 + EnumValue23914 + EnumValue23915 + EnumValue23916 + EnumValue23917 + EnumValue23918 + EnumValue23919 + EnumValue23920 + EnumValue23921 + EnumValue23922 + EnumValue23923 + EnumValue23924 + EnumValue23925 + EnumValue23926 + EnumValue23927 + EnumValue23928 + EnumValue23929 + EnumValue23930 + EnumValue23931 + EnumValue23932 + EnumValue23933 + EnumValue23934 + EnumValue23935 + EnumValue23936 + EnumValue23937 + EnumValue23938 +} + +enum Enum12 @Directive22(argument62 : "stringValue138") @Directive44(argument97 : ["stringValue139", "stringValue140"]) { + EnumValue748 + EnumValue749 + EnumValue750 +} + +enum Enum120 @Directive44(argument97 : ["stringValue1044"]) { + EnumValue2881 + EnumValue2882 + EnumValue2883 + EnumValue2884 + EnumValue2885 +} + +enum Enum1200 @Directive44(argument97 : ["stringValue24198"]) { + EnumValue23939 + EnumValue23940 + EnumValue23941 + EnumValue23942 + EnumValue23943 + EnumValue23944 + EnumValue23945 + EnumValue23946 + EnumValue23947 + EnumValue23948 + EnumValue23949 + EnumValue23950 + EnumValue23951 + EnumValue23952 + EnumValue23953 + EnumValue23954 + EnumValue23955 + EnumValue23956 + EnumValue23957 + EnumValue23958 + EnumValue23959 + EnumValue23960 + EnumValue23961 + EnumValue23962 + EnumValue23963 + EnumValue23964 + EnumValue23965 + EnumValue23966 + EnumValue23967 + EnumValue23968 + EnumValue23969 + EnumValue23970 +} + +enum Enum1201 @Directive44(argument97 : ["stringValue24199"]) { + EnumValue23971 + EnumValue23972 + EnumValue23973 + EnumValue23974 + EnumValue23975 + EnumValue23976 + EnumValue23977 + EnumValue23978 + EnumValue23979 + EnumValue23980 + EnumValue23981 + EnumValue23982 + EnumValue23983 + EnumValue23984 + EnumValue23985 +} + +enum Enum1202 @Directive44(argument97 : ["stringValue24202"]) { + EnumValue23986 + EnumValue23987 + EnumValue23988 + EnumValue23989 + EnumValue23990 + EnumValue23991 + EnumValue23992 + EnumValue23993 + EnumValue23994 + EnumValue23995 + EnumValue23996 + EnumValue23997 + EnumValue23998 + EnumValue23999 + EnumValue24000 + EnumValue24001 + EnumValue24002 + EnumValue24003 + EnumValue24004 + EnumValue24005 + EnumValue24006 + EnumValue24007 + EnumValue24008 + EnumValue24009 + EnumValue24010 + EnumValue24011 + EnumValue24012 + EnumValue24013 + EnumValue24014 + EnumValue24015 + EnumValue24016 + EnumValue24017 + EnumValue24018 + EnumValue24019 + EnumValue24020 + EnumValue24021 + EnumValue24022 + EnumValue24023 + EnumValue24024 + EnumValue24025 + EnumValue24026 + EnumValue24027 + EnumValue24028 + EnumValue24029 + EnumValue24030 + EnumValue24031 + EnumValue24032 + EnumValue24033 + EnumValue24034 + EnumValue24035 + EnumValue24036 + EnumValue24037 + EnumValue24038 + EnumValue24039 + EnumValue24040 + EnumValue24041 + EnumValue24042 + EnumValue24043 + EnumValue24044 + EnumValue24045 + EnumValue24046 + EnumValue24047 + EnumValue24048 + EnumValue24049 + EnumValue24050 + EnumValue24051 + EnumValue24052 + EnumValue24053 + EnumValue24054 + EnumValue24055 + EnumValue24056 + EnumValue24057 + EnumValue24058 + EnumValue24059 + EnumValue24060 + EnumValue24061 + EnumValue24062 + EnumValue24063 + EnumValue24064 + EnumValue24065 + EnumValue24066 + EnumValue24067 + EnumValue24068 + EnumValue24069 + EnumValue24070 + EnumValue24071 + EnumValue24072 + EnumValue24073 + EnumValue24074 + EnumValue24075 + EnumValue24076 + EnumValue24077 + EnumValue24078 + EnumValue24079 + EnumValue24080 + EnumValue24081 + EnumValue24082 + EnumValue24083 + EnumValue24084 + EnumValue24085 + EnumValue24086 + EnumValue24087 + EnumValue24088 + EnumValue24089 + EnumValue24090 + EnumValue24091 + EnumValue24092 + EnumValue24093 + EnumValue24094 + EnumValue24095 + EnumValue24096 + EnumValue24097 + EnumValue24098 + EnumValue24099 + EnumValue24100 + EnumValue24101 + EnumValue24102 + EnumValue24103 + EnumValue24104 + EnumValue24105 + EnumValue24106 + EnumValue24107 + EnumValue24108 + EnumValue24109 + EnumValue24110 + EnumValue24111 + EnumValue24112 + EnumValue24113 + EnumValue24114 + EnumValue24115 + EnumValue24116 + EnumValue24117 + EnumValue24118 + EnumValue24119 + EnumValue24120 + EnumValue24121 + EnumValue24122 + EnumValue24123 + EnumValue24124 + EnumValue24125 + EnumValue24126 + EnumValue24127 + EnumValue24128 + EnumValue24129 + EnumValue24130 + EnumValue24131 + EnumValue24132 + EnumValue24133 + EnumValue24134 + EnumValue24135 + EnumValue24136 + EnumValue24137 + EnumValue24138 + EnumValue24139 + EnumValue24140 + EnumValue24141 + EnumValue24142 + EnumValue24143 + EnumValue24144 + EnumValue24145 + EnumValue24146 + EnumValue24147 + EnumValue24148 + EnumValue24149 + EnumValue24150 + EnumValue24151 + EnumValue24152 + EnumValue24153 + EnumValue24154 + EnumValue24155 + EnumValue24156 + EnumValue24157 + EnumValue24158 + EnumValue24159 + EnumValue24160 + EnumValue24161 + EnumValue24162 + EnumValue24163 + EnumValue24164 + EnumValue24165 + EnumValue24166 + EnumValue24167 + EnumValue24168 + EnumValue24169 + EnumValue24170 + EnumValue24171 + EnumValue24172 + EnumValue24173 + EnumValue24174 + EnumValue24175 + EnumValue24176 + EnumValue24177 + EnumValue24178 + EnumValue24179 + EnumValue24180 + EnumValue24181 + EnumValue24182 + EnumValue24183 + EnumValue24184 + EnumValue24185 + EnumValue24186 + EnumValue24187 + EnumValue24188 + EnumValue24189 + EnumValue24190 + EnumValue24191 + EnumValue24192 + EnumValue24193 + EnumValue24194 + EnumValue24195 + EnumValue24196 + EnumValue24197 + EnumValue24198 + EnumValue24199 + EnumValue24200 + EnumValue24201 + EnumValue24202 + EnumValue24203 + EnumValue24204 + EnumValue24205 + EnumValue24206 + EnumValue24207 + EnumValue24208 + EnumValue24209 + EnumValue24210 + EnumValue24211 + EnumValue24212 + EnumValue24213 + EnumValue24214 + EnumValue24215 + EnumValue24216 + EnumValue24217 + EnumValue24218 + EnumValue24219 + EnumValue24220 + EnumValue24221 + EnumValue24222 + EnumValue24223 + EnumValue24224 + EnumValue24225 + EnumValue24226 + EnumValue24227 + EnumValue24228 + EnumValue24229 + EnumValue24230 + EnumValue24231 + EnumValue24232 + EnumValue24233 + EnumValue24234 + EnumValue24235 + EnumValue24236 + EnumValue24237 + EnumValue24238 + EnumValue24239 + EnumValue24240 + EnumValue24241 + EnumValue24242 + EnumValue24243 + EnumValue24244 + EnumValue24245 + EnumValue24246 + EnumValue24247 + EnumValue24248 + EnumValue24249 + EnumValue24250 + EnumValue24251 + EnumValue24252 + EnumValue24253 + EnumValue24254 + EnumValue24255 + EnumValue24256 + EnumValue24257 + EnumValue24258 + EnumValue24259 + EnumValue24260 + EnumValue24261 + EnumValue24262 + EnumValue24263 + EnumValue24264 + EnumValue24265 + EnumValue24266 + EnumValue24267 + EnumValue24268 + EnumValue24269 + EnumValue24270 + EnumValue24271 + EnumValue24272 + EnumValue24273 + EnumValue24274 + EnumValue24275 + EnumValue24276 + EnumValue24277 + EnumValue24278 + EnumValue24279 + EnumValue24280 + EnumValue24281 + EnumValue24282 + EnumValue24283 + EnumValue24284 + EnumValue24285 + EnumValue24286 + EnumValue24287 + EnumValue24288 + EnumValue24289 + EnumValue24290 + EnumValue24291 + EnumValue24292 + EnumValue24293 + EnumValue24294 + EnumValue24295 + EnumValue24296 + EnumValue24297 + EnumValue24298 + EnumValue24299 + EnumValue24300 + EnumValue24301 + EnumValue24302 + EnumValue24303 + EnumValue24304 + EnumValue24305 + EnumValue24306 + EnumValue24307 + EnumValue24308 + EnumValue24309 + EnumValue24310 + EnumValue24311 + EnumValue24312 + EnumValue24313 + EnumValue24314 + EnumValue24315 + EnumValue24316 + EnumValue24317 + EnumValue24318 + EnumValue24319 + EnumValue24320 + EnumValue24321 + EnumValue24322 + EnumValue24323 + EnumValue24324 + EnumValue24325 + EnumValue24326 + EnumValue24327 + EnumValue24328 + EnumValue24329 + EnumValue24330 + EnumValue24331 + EnumValue24332 + EnumValue24333 + EnumValue24334 + EnumValue24335 + EnumValue24336 + EnumValue24337 + EnumValue24338 + EnumValue24339 + EnumValue24340 + EnumValue24341 + EnumValue24342 + EnumValue24343 + EnumValue24344 + EnumValue24345 + EnumValue24346 + EnumValue24347 + EnumValue24348 + EnumValue24349 + EnumValue24350 + EnumValue24351 + EnumValue24352 + EnumValue24353 + EnumValue24354 + EnumValue24355 + EnumValue24356 + EnumValue24357 + EnumValue24358 + EnumValue24359 + EnumValue24360 + EnumValue24361 + EnumValue24362 + EnumValue24363 + EnumValue24364 + EnumValue24365 + EnumValue24366 + EnumValue24367 + EnumValue24368 + EnumValue24369 + EnumValue24370 + EnumValue24371 + EnumValue24372 + EnumValue24373 + EnumValue24374 + EnumValue24375 + EnumValue24376 + EnumValue24377 + EnumValue24378 + EnumValue24379 + EnumValue24380 + EnumValue24381 + EnumValue24382 + EnumValue24383 + EnumValue24384 + EnumValue24385 + EnumValue24386 + EnumValue24387 + EnumValue24388 + EnumValue24389 + EnumValue24390 + EnumValue24391 + EnumValue24392 + EnumValue24393 + EnumValue24394 + EnumValue24395 + EnumValue24396 + EnumValue24397 + EnumValue24398 + EnumValue24399 + EnumValue24400 + EnumValue24401 + EnumValue24402 + EnumValue24403 + EnumValue24404 + EnumValue24405 + EnumValue24406 + EnumValue24407 + EnumValue24408 + EnumValue24409 + EnumValue24410 + EnumValue24411 + EnumValue24412 + EnumValue24413 + EnumValue24414 + EnumValue24415 + EnumValue24416 + EnumValue24417 + EnumValue24418 + EnumValue24419 + EnumValue24420 + EnumValue24421 + EnumValue24422 + EnumValue24423 + EnumValue24424 + EnumValue24425 + EnumValue24426 + EnumValue24427 + EnumValue24428 + EnumValue24429 + EnumValue24430 + EnumValue24431 + EnumValue24432 + EnumValue24433 + EnumValue24434 + EnumValue24435 + EnumValue24436 + EnumValue24437 + EnumValue24438 + EnumValue24439 + EnumValue24440 + EnumValue24441 + EnumValue24442 + EnumValue24443 + EnumValue24444 + EnumValue24445 + EnumValue24446 + EnumValue24447 + EnumValue24448 + EnumValue24449 + EnumValue24450 + EnumValue24451 + EnumValue24452 + EnumValue24453 + EnumValue24454 + EnumValue24455 + EnumValue24456 + EnumValue24457 + EnumValue24458 + EnumValue24459 + EnumValue24460 + EnumValue24461 + EnumValue24462 + EnumValue24463 + EnumValue24464 + EnumValue24465 + EnumValue24466 + EnumValue24467 + EnumValue24468 + EnumValue24469 + EnumValue24470 + EnumValue24471 + EnumValue24472 + EnumValue24473 + EnumValue24474 + EnumValue24475 + EnumValue24476 + EnumValue24477 + EnumValue24478 + EnumValue24479 + EnumValue24480 + EnumValue24481 + EnumValue24482 + EnumValue24483 + EnumValue24484 + EnumValue24485 + EnumValue24486 + EnumValue24487 + EnumValue24488 + EnumValue24489 + EnumValue24490 + EnumValue24491 + EnumValue24492 + EnumValue24493 + EnumValue24494 + EnumValue24495 + EnumValue24496 + EnumValue24497 + EnumValue24498 + EnumValue24499 + EnumValue24500 + EnumValue24501 + EnumValue24502 + EnumValue24503 + EnumValue24504 + EnumValue24505 + EnumValue24506 + EnumValue24507 + EnumValue24508 + EnumValue24509 + EnumValue24510 + EnumValue24511 + EnumValue24512 + EnumValue24513 + EnumValue24514 + EnumValue24515 + EnumValue24516 + EnumValue24517 + EnumValue24518 + EnumValue24519 + EnumValue24520 + EnumValue24521 + EnumValue24522 + EnumValue24523 + EnumValue24524 + EnumValue24525 + EnumValue24526 + EnumValue24527 + EnumValue24528 + EnumValue24529 + EnumValue24530 + EnumValue24531 + EnumValue24532 + EnumValue24533 + EnumValue24534 + EnumValue24535 + EnumValue24536 + EnumValue24537 + EnumValue24538 + EnumValue24539 + EnumValue24540 + EnumValue24541 + EnumValue24542 + EnumValue24543 + EnumValue24544 + EnumValue24545 + EnumValue24546 + EnumValue24547 + EnumValue24548 + EnumValue24549 + EnumValue24550 + EnumValue24551 + EnumValue24552 + EnumValue24553 + EnumValue24554 + EnumValue24555 + EnumValue24556 + EnumValue24557 + EnumValue24558 + EnumValue24559 + EnumValue24560 + EnumValue24561 + EnumValue24562 + EnumValue24563 + EnumValue24564 + EnumValue24565 + EnumValue24566 + EnumValue24567 + EnumValue24568 + EnumValue24569 + EnumValue24570 + EnumValue24571 + EnumValue24572 + EnumValue24573 + EnumValue24574 + EnumValue24575 + EnumValue24576 + EnumValue24577 + EnumValue24578 + EnumValue24579 + EnumValue24580 + EnumValue24581 + EnumValue24582 + EnumValue24583 + EnumValue24584 + EnumValue24585 + EnumValue24586 + EnumValue24587 + EnumValue24588 + EnumValue24589 + EnumValue24590 + EnumValue24591 + EnumValue24592 + EnumValue24593 + EnumValue24594 + EnumValue24595 + EnumValue24596 + EnumValue24597 + EnumValue24598 + EnumValue24599 + EnumValue24600 + EnumValue24601 + EnumValue24602 + EnumValue24603 + EnumValue24604 + EnumValue24605 + EnumValue24606 + EnumValue24607 + EnumValue24608 + EnumValue24609 + EnumValue24610 + EnumValue24611 + EnumValue24612 + EnumValue24613 + EnumValue24614 + EnumValue24615 + EnumValue24616 + EnumValue24617 + EnumValue24618 + EnumValue24619 + EnumValue24620 + EnumValue24621 + EnumValue24622 + EnumValue24623 + EnumValue24624 + EnumValue24625 + EnumValue24626 + EnumValue24627 + EnumValue24628 + EnumValue24629 + EnumValue24630 + EnumValue24631 + EnumValue24632 + EnumValue24633 + EnumValue24634 + EnumValue24635 + EnumValue24636 + EnumValue24637 + EnumValue24638 + EnumValue24639 + EnumValue24640 + EnumValue24641 + EnumValue24642 + EnumValue24643 + EnumValue24644 + EnumValue24645 + EnumValue24646 + EnumValue24647 + EnumValue24648 + EnumValue24649 + EnumValue24650 + EnumValue24651 + EnumValue24652 + EnumValue24653 + EnumValue24654 + EnumValue24655 + EnumValue24656 + EnumValue24657 + EnumValue24658 + EnumValue24659 + EnumValue24660 + EnumValue24661 + EnumValue24662 + EnumValue24663 + EnumValue24664 + EnumValue24665 + EnumValue24666 + EnumValue24667 + EnumValue24668 + EnumValue24669 + EnumValue24670 + EnumValue24671 + EnumValue24672 + EnumValue24673 + EnumValue24674 + EnumValue24675 + EnumValue24676 + EnumValue24677 + EnumValue24678 + EnumValue24679 + EnumValue24680 + EnumValue24681 + EnumValue24682 + EnumValue24683 + EnumValue24684 + EnumValue24685 + EnumValue24686 + EnumValue24687 + EnumValue24688 + EnumValue24689 +} + +enum Enum1203 @Directive44(argument97 : ["stringValue24204"]) { + EnumValue24690 + EnumValue24691 + EnumValue24692 + EnumValue24693 + EnumValue24694 + EnumValue24695 + EnumValue24696 +} + +enum Enum1204 @Directive44(argument97 : ["stringValue24205"]) { + EnumValue24697 + EnumValue24698 + EnumValue24699 + EnumValue24700 + EnumValue24701 + EnumValue24702 + EnumValue24703 + EnumValue24704 + EnumValue24705 + EnumValue24706 + EnumValue24707 + EnumValue24708 + EnumValue24709 + EnumValue24710 + EnumValue24711 + EnumValue24712 + EnumValue24713 + EnumValue24714 + EnumValue24715 + EnumValue24716 + EnumValue24717 + EnumValue24718 + EnumValue24719 + EnumValue24720 + EnumValue24721 + EnumValue24722 + EnumValue24723 + EnumValue24724 + EnumValue24725 + EnumValue24726 + EnumValue24727 + EnumValue24728 + EnumValue24729 + EnumValue24730 + EnumValue24731 + EnumValue24732 + EnumValue24733 + EnumValue24734 + EnumValue24735 + EnumValue24736 + EnumValue24737 + EnumValue24738 + EnumValue24739 + EnumValue24740 + EnumValue24741 + EnumValue24742 + EnumValue24743 + EnumValue24744 + EnumValue24745 + EnumValue24746 + EnumValue24747 + EnumValue24748 + EnumValue24749 + EnumValue24750 + EnumValue24751 + EnumValue24752 + EnumValue24753 + EnumValue24754 + EnumValue24755 + EnumValue24756 + EnumValue24757 + EnumValue24758 + EnumValue24759 + EnumValue24760 + EnumValue24761 + EnumValue24762 + EnumValue24763 + EnumValue24764 + EnumValue24765 + EnumValue24766 + EnumValue24767 + EnumValue24768 +} + +enum Enum1205 @Directive44(argument97 : ["stringValue24206"]) { + EnumValue24769 + EnumValue24770 + EnumValue24771 + EnumValue24772 + EnumValue24773 +} + +enum Enum1206 @Directive44(argument97 : ["stringValue24209"]) { + EnumValue24774 + EnumValue24775 + EnumValue24776 + EnumValue24777 + EnumValue24778 + EnumValue24779 + EnumValue24780 + EnumValue24781 + EnumValue24782 + EnumValue24783 + EnumValue24784 + EnumValue24785 + EnumValue24786 + EnumValue24787 + EnumValue24788 + EnumValue24789 + EnumValue24790 + EnumValue24791 + EnumValue24792 + EnumValue24793 + EnumValue24794 + EnumValue24795 + EnumValue24796 + EnumValue24797 + EnumValue24798 + EnumValue24799 + EnumValue24800 + EnumValue24801 + EnumValue24802 + EnumValue24803 + EnumValue24804 + EnumValue24805 + EnumValue24806 + EnumValue24807 + EnumValue24808 + EnumValue24809 + EnumValue24810 + EnumValue24811 +} + +enum Enum1207 @Directive44(argument97 : ["stringValue24210"]) { + EnumValue24812 + EnumValue24813 + EnumValue24814 +} + +enum Enum1208 @Directive44(argument97 : ["stringValue24211"]) { + EnumValue24815 + EnumValue24816 + EnumValue24817 + EnumValue24818 + EnumValue24819 + EnumValue24820 + EnumValue24821 +} + +enum Enum1209 @Directive44(argument97 : ["stringValue24214"]) { + EnumValue24822 + EnumValue24823 + EnumValue24824 + EnumValue24825 + EnumValue24826 + EnumValue24827 + EnumValue24828 + EnumValue24829 + EnumValue24830 + EnumValue24831 + EnumValue24832 + EnumValue24833 + EnumValue24834 + EnumValue24835 + EnumValue24836 + EnumValue24837 + EnumValue24838 +} + +enum Enum121 @Directive44(argument97 : ["stringValue1045"]) { + EnumValue2886 + EnumValue2887 + EnumValue2888 + EnumValue2889 +} + +enum Enum1210 @Directive44(argument97 : ["stringValue24215"]) { + EnumValue24839 + EnumValue24840 + EnumValue24841 + EnumValue24842 +} + +enum Enum1211 @Directive44(argument97 : ["stringValue24218"]) { + EnumValue24843 + EnumValue24844 + EnumValue24845 +} + +enum Enum1212 @Directive44(argument97 : ["stringValue24221"]) { + EnumValue24846 + EnumValue24847 + EnumValue24848 + EnumValue24849 + EnumValue24850 + EnumValue24851 + EnumValue24852 + EnumValue24853 + EnumValue24854 +} + +enum Enum1213 @Directive44(argument97 : ["stringValue24224"]) { + EnumValue24855 + EnumValue24856 + EnumValue24857 + EnumValue24858 + EnumValue24859 + EnumValue24860 + EnumValue24861 + EnumValue24862 +} + +enum Enum1214 @Directive44(argument97 : ["stringValue24233"]) { + EnumValue24863 + EnumValue24864 + EnumValue24865 + EnumValue24866 + EnumValue24867 + EnumValue24868 + EnumValue24869 + EnumValue24870 +} + +enum Enum1215 @Directive44(argument97 : ["stringValue24266"]) { + EnumValue24871 + EnumValue24872 +} + +enum Enum1216 @Directive44(argument97 : ["stringValue24271"]) { + EnumValue24873 + EnumValue24874 + EnumValue24875 +} + +enum Enum1217 @Directive44(argument97 : ["stringValue24295"]) { + EnumValue24876 + EnumValue24877 + EnumValue24878 + EnumValue24879 + EnumValue24880 + EnumValue24881 + EnumValue24882 + EnumValue24883 + EnumValue24884 + EnumValue24885 + EnumValue24886 + EnumValue24887 + EnumValue24888 +} + +enum Enum1218 @Directive44(argument97 : ["stringValue24304"]) { + EnumValue24889 + EnumValue24890 + EnumValue24891 +} + +enum Enum1219 @Directive44(argument97 : ["stringValue24345"]) { + EnumValue24892 + EnumValue24893 + EnumValue24894 + EnumValue24895 +} + +enum Enum122 @Directive44(argument97 : ["stringValue1127"]) { + EnumValue2890 + EnumValue2891 + EnumValue2892 + EnumValue2893 +} + +enum Enum1220 @Directive44(argument97 : ["stringValue24352"]) { + EnumValue24896 + EnumValue24897 + EnumValue24898 + EnumValue24899 + EnumValue24900 + EnumValue24901 +} + +enum Enum1221 @Directive44(argument97 : ["stringValue24357"]) { + EnumValue24902 + EnumValue24903 + EnumValue24904 +} + +enum Enum1222 @Directive44(argument97 : ["stringValue24386"]) { + EnumValue24905 + EnumValue24906 + EnumValue24907 + EnumValue24908 + EnumValue24909 + EnumValue24910 +} + +enum Enum1223 @Directive44(argument97 : ["stringValue24414"]) { + EnumValue24911 + EnumValue24912 + EnumValue24913 + EnumValue24914 + EnumValue24915 + EnumValue24916 + EnumValue24917 +} + +enum Enum1224 @Directive44(argument97 : ["stringValue24431"]) { + EnumValue24918 + EnumValue24919 + EnumValue24920 + EnumValue24921 + EnumValue24922 +} + +enum Enum1225 @Directive44(argument97 : ["stringValue24468"]) { + EnumValue24923 + EnumValue24924 + EnumValue24925 + EnumValue24926 + EnumValue24927 + EnumValue24928 + EnumValue24929 +} + +enum Enum1226 @Directive44(argument97 : ["stringValue24469"]) { + EnumValue24930 + EnumValue24931 + EnumValue24932 + EnumValue24933 + EnumValue24934 + EnumValue24935 + EnumValue24936 + EnumValue24937 + EnumValue24938 + EnumValue24939 + EnumValue24940 + EnumValue24941 + EnumValue24942 +} + +enum Enum1227 @Directive44(argument97 : ["stringValue24470"]) { + EnumValue24943 + EnumValue24944 + EnumValue24945 + EnumValue24946 +} + +enum Enum1228 @Directive44(argument97 : ["stringValue24491"]) { + EnumValue24947 + EnumValue24948 + EnumValue24949 + EnumValue24950 + EnumValue24951 +} + +enum Enum1229 @Directive44(argument97 : ["stringValue24492"]) { + EnumValue24952 + EnumValue24953 + EnumValue24954 + EnumValue24955 +} + +enum Enum123 @Directive22(argument62 : "stringValue1134") @Directive44(argument97 : ["stringValue1135", "stringValue1136"]) { + EnumValue2894 + EnumValue2895 + EnumValue2896 +} + +enum Enum1230 @Directive44(argument97 : ["stringValue24555"]) { + EnumValue24956 + EnumValue24957 + EnumValue24958 + EnumValue24959 + EnumValue24960 + EnumValue24961 +} + +enum Enum1231 @Directive44(argument97 : ["stringValue24561"]) { + EnumValue24962 + EnumValue24963 + EnumValue24964 +} + +enum Enum1232 @Directive44(argument97 : ["stringValue24569"]) { + EnumValue24965 + EnumValue24966 + EnumValue24967 + EnumValue24968 + EnumValue24969 + EnumValue24970 + EnumValue24971 + EnumValue24972 +} + +enum Enum1233 @Directive44(argument97 : ["stringValue24596"]) { + EnumValue24973 + EnumValue24974 + EnumValue24975 +} + +enum Enum1234 @Directive44(argument97 : ["stringValue24611"]) { + EnumValue24976 + EnumValue24977 + EnumValue24978 + EnumValue24979 +} + +enum Enum1235 @Directive44(argument97 : ["stringValue24636"]) { + EnumValue24980 + EnumValue24981 +} + +enum Enum1236 @Directive44(argument97 : ["stringValue24644"]) { + EnumValue24982 + EnumValue24983 + EnumValue24984 +} + +enum Enum1237 @Directive44(argument97 : ["stringValue24645"]) { + EnumValue24985 + EnumValue24986 + EnumValue24987 +} + +enum Enum1238 @Directive44(argument97 : ["stringValue24677"]) { + EnumValue24988 + EnumValue24989 + EnumValue24990 + EnumValue24991 +} + +enum Enum1239 @Directive44(argument97 : ["stringValue24707"]) { + EnumValue24992 + EnumValue24993 + EnumValue24994 + EnumValue24995 + EnumValue24996 + EnumValue24997 +} + +enum Enum124 @Directive19(argument57 : "stringValue1235") @Directive22(argument62 : "stringValue1234") @Directive44(argument97 : ["stringValue1236", "stringValue1237"]) { + EnumValue2897 + EnumValue2898 +} + +enum Enum1240 @Directive44(argument97 : ["stringValue24714"]) { + EnumValue24998 + EnumValue24999 + EnumValue25000 +} + +enum Enum1241 @Directive44(argument97 : ["stringValue24715"]) { + EnumValue25001 + EnumValue25002 + EnumValue25003 + EnumValue25004 + EnumValue25005 + EnumValue25006 + EnumValue25007 + EnumValue25008 + EnumValue25009 + EnumValue25010 + EnumValue25011 + EnumValue25012 + EnumValue25013 + EnumValue25014 + EnumValue25015 + EnumValue25016 + EnumValue25017 + EnumValue25018 + EnumValue25019 + EnumValue25020 + EnumValue25021 + EnumValue25022 + EnumValue25023 + EnumValue25024 + EnumValue25025 +} + +enum Enum1242 @Directive44(argument97 : ["stringValue24717"]) { + EnumValue25026 + EnumValue25027 + EnumValue25028 +} + +enum Enum1243 @Directive44(argument97 : ["stringValue24718"]) { + EnumValue25029 + EnumValue25030 + EnumValue25031 + EnumValue25032 +} + +enum Enum1244 @Directive44(argument97 : ["stringValue24721"]) { + EnumValue25033 + EnumValue25034 + EnumValue25035 + EnumValue25036 + EnumValue25037 + EnumValue25038 + EnumValue25039 + EnumValue25040 + EnumValue25041 +} + +enum Enum1245 @Directive44(argument97 : ["stringValue24722"]) { + EnumValue25042 + EnumValue25043 + EnumValue25044 + EnumValue25045 + EnumValue25046 + EnumValue25047 +} + +enum Enum1246 @Directive44(argument97 : ["stringValue24725"]) { + EnumValue25048 + EnumValue25049 + EnumValue25050 + EnumValue25051 + EnumValue25052 + EnumValue25053 + EnumValue25054 + EnumValue25055 + EnumValue25056 + EnumValue25057 + EnumValue25058 +} + +enum Enum1247 @Directive44(argument97 : ["stringValue24728"]) { + EnumValue25059 + EnumValue25060 + EnumValue25061 + EnumValue25062 + EnumValue25063 + EnumValue25064 + EnumValue25065 +} + +enum Enum1248 @Directive44(argument97 : ["stringValue24741"]) { + EnumValue25066 + EnumValue25067 + EnumValue25068 + EnumValue25069 + EnumValue25070 +} + +enum Enum1249 @Directive44(argument97 : ["stringValue24742"]) { + EnumValue25071 + EnumValue25072 + EnumValue25073 + EnumValue25074 + EnumValue25075 + EnumValue25076 +} + +enum Enum125 @Directive44(argument97 : ["stringValue1243"]) { + EnumValue2899 + EnumValue2900 + EnumValue2901 + EnumValue2902 + EnumValue2903 + EnumValue2904 + EnumValue2905 +} + +enum Enum1250 @Directive44(argument97 : ["stringValue24743"]) { + EnumValue25077 + EnumValue25078 + EnumValue25079 + EnumValue25080 +} + +enum Enum1251 @Directive44(argument97 : ["stringValue24756"]) { + EnumValue25081 + EnumValue25082 + EnumValue25083 + EnumValue25084 + EnumValue25085 +} + +enum Enum1252 @Directive44(argument97 : ["stringValue24757"]) { + EnumValue25086 + EnumValue25087 + EnumValue25088 +} + +enum Enum1253 @Directive44(argument97 : ["stringValue24760"]) { + EnumValue25089 + EnumValue25090 + EnumValue25091 +} + +enum Enum1254 @Directive44(argument97 : ["stringValue24761"]) { + EnumValue25092 + EnumValue25093 + EnumValue25094 + EnumValue25095 +} + +enum Enum1255 @Directive44(argument97 : ["stringValue24764"]) { + EnumValue25096 + EnumValue25097 + EnumValue25098 + EnumValue25099 + EnumValue25100 + EnumValue25101 + EnumValue25102 + EnumValue25103 + EnumValue25104 + EnumValue25105 + EnumValue25106 + EnumValue25107 + EnumValue25108 + EnumValue25109 + EnumValue25110 +} + +enum Enum1256 @Directive44(argument97 : ["stringValue24765"]) { + EnumValue25111 + EnumValue25112 + EnumValue25113 + EnumValue25114 + EnumValue25115 + EnumValue25116 + EnumValue25117 +} + +enum Enum1257 @Directive44(argument97 : ["stringValue24766"]) { + EnumValue25118 + EnumValue25119 + EnumValue25120 +} + +enum Enum1258 @Directive44(argument97 : ["stringValue24767"]) { + EnumValue25121 + EnumValue25122 + EnumValue25123 + EnumValue25124 + EnumValue25125 + EnumValue25126 + EnumValue25127 + EnumValue25128 + EnumValue25129 +} + +enum Enum1259 @Directive44(argument97 : ["stringValue24770"]) { + EnumValue25130 + EnumValue25131 + EnumValue25132 + EnumValue25133 + EnumValue25134 + EnumValue25135 +} + +enum Enum126 @Directive44(argument97 : ["stringValue1246"]) { + EnumValue2906 + EnumValue2907 + EnumValue2908 + EnumValue2909 + EnumValue2910 + EnumValue2911 + EnumValue2912 + EnumValue2913 + EnumValue2914 + EnumValue2915 + EnumValue2916 + EnumValue2917 + EnumValue2918 + EnumValue2919 + EnumValue2920 + EnumValue2921 + EnumValue2922 + EnumValue2923 + EnumValue2924 + EnumValue2925 + EnumValue2926 + EnumValue2927 + EnumValue2928 + EnumValue2929 + EnumValue2930 + EnumValue2931 + EnumValue2932 + EnumValue2933 +} + +enum Enum1260 @Directive44(argument97 : ["stringValue24773"]) { + EnumValue25136 + EnumValue25137 + EnumValue25138 +} + +enum Enum1261 @Directive44(argument97 : ["stringValue24776"]) { + EnumValue25139 + EnumValue25140 +} + +enum Enum1262 @Directive44(argument97 : ["stringValue24779"]) { + EnumValue25141 + EnumValue25142 + EnumValue25143 + EnumValue25144 + EnumValue25145 + EnumValue25146 + EnumValue25147 +} + +enum Enum1263 @Directive44(argument97 : ["stringValue24789"]) { + EnumValue25148 + EnumValue25149 + EnumValue25150 + EnumValue25151 +} + +enum Enum1264 @Directive44(argument97 : ["stringValue24808"]) { + EnumValue25152 + EnumValue25153 + EnumValue25154 + EnumValue25155 + EnumValue25156 +} + +enum Enum1265 @Directive44(argument97 : ["stringValue24809"]) { + EnumValue25157 + EnumValue25158 + EnumValue25159 +} + +enum Enum1266 @Directive44(argument97 : ["stringValue24811"]) { + EnumValue25160 + EnumValue25161 + EnumValue25162 + EnumValue25163 + EnumValue25164 + EnumValue25165 + EnumValue25166 + EnumValue25167 + EnumValue25168 + EnumValue25169 +} + +enum Enum1267 @Directive44(argument97 : ["stringValue24895"]) { + EnumValue25170 + EnumValue25171 + EnumValue25172 + EnumValue25173 + EnumValue25174 + EnumValue25175 + EnumValue25176 + EnumValue25177 + EnumValue25178 + EnumValue25179 + EnumValue25180 + EnumValue25181 + EnumValue25182 + EnumValue25183 + EnumValue25184 + EnumValue25185 + EnumValue25186 +} + +enum Enum1268 @Directive44(argument97 : ["stringValue24924"]) { + EnumValue25187 + EnumValue25188 +} + +enum Enum1269 @Directive44(argument97 : ["stringValue24931"]) { + EnumValue25189 + EnumValue25190 + EnumValue25191 +} + +enum Enum127 @Directive44(argument97 : ["stringValue1247"]) { + EnumValue2934 + EnumValue2935 + EnumValue2936 +} + +enum Enum1270 @Directive44(argument97 : ["stringValue24952"]) { + EnumValue25192 + EnumValue25193 + EnumValue25194 + EnumValue25195 + EnumValue25196 + EnumValue25197 +} + +enum Enum1271 @Directive44(argument97 : ["stringValue25013"]) { + EnumValue25198 + EnumValue25199 + EnumValue25200 + EnumValue25201 +} + +enum Enum1272 @Directive44(argument97 : ["stringValue25015"]) { + EnumValue25202 + EnumValue25203 + EnumValue25204 +} + +enum Enum1273 @Directive44(argument97 : ["stringValue25029"]) { + EnumValue25205 + EnumValue25206 + EnumValue25207 + EnumValue25208 + EnumValue25209 + EnumValue25210 +} + +enum Enum1274 @Directive44(argument97 : ["stringValue25032"]) { + EnumValue25211 + EnumValue25212 + EnumValue25213 + EnumValue25214 +} + +enum Enum1275 @Directive44(argument97 : ["stringValue25033"]) { + EnumValue25215 + EnumValue25216 + EnumValue25217 + EnumValue25218 + EnumValue25219 + EnumValue25220 + EnumValue25221 +} + +enum Enum1276 @Directive44(argument97 : ["stringValue25039"]) { + EnumValue25222 + EnumValue25223 + EnumValue25224 + EnumValue25225 + EnumValue25226 + EnumValue25227 +} + +enum Enum1277 @Directive44(argument97 : ["stringValue25052"]) { + EnumValue25228 + EnumValue25229 + EnumValue25230 + EnumValue25231 + EnumValue25232 +} + +enum Enum1278 @Directive44(argument97 : ["stringValue25053"]) { + EnumValue25233 + EnumValue25234 + EnumValue25235 + EnumValue25236 + EnumValue25237 + EnumValue25238 + EnumValue25239 +} + +enum Enum1279 @Directive44(argument97 : ["stringValue25068"]) { + EnumValue25240 + EnumValue25241 +} + +enum Enum128 @Directive44(argument97 : ["stringValue1252"]) { + EnumValue2937 + EnumValue2938 + EnumValue2939 + EnumValue2940 + EnumValue2941 + EnumValue2942 + EnumValue2943 + EnumValue2944 + EnumValue2945 + EnumValue2946 + EnumValue2947 +} + +enum Enum1280 @Directive44(argument97 : ["stringValue25080"]) { + EnumValue25242 + EnumValue25243 + EnumValue25244 + EnumValue25245 + EnumValue25246 + EnumValue25247 +} + +enum Enum1281 @Directive44(argument97 : ["stringValue25088"]) { + EnumValue25248 + EnumValue25249 + EnumValue25250 +} + +enum Enum1282 @Directive44(argument97 : ["stringValue25113"]) { + EnumValue25251 + EnumValue25252 + EnumValue25253 + EnumValue25254 +} + +enum Enum1283 @Directive44(argument97 : ["stringValue25116"]) { + EnumValue25255 + EnumValue25256 + EnumValue25257 +} + +enum Enum1284 @Directive44(argument97 : ["stringValue25140"]) { + EnumValue25258 + EnumValue25259 + EnumValue25260 +} + +enum Enum1285 @Directive44(argument97 : ["stringValue25141"]) { + EnumValue25261 + EnumValue25262 + EnumValue25263 + EnumValue25264 +} + +enum Enum1286 @Directive44(argument97 : ["stringValue25161"]) { + EnumValue25265 + EnumValue25266 + EnumValue25267 +} + +enum Enum1287 @Directive44(argument97 : ["stringValue25162"]) { + EnumValue25268 + EnumValue25269 + EnumValue25270 +} + +enum Enum1288 @Directive44(argument97 : ["stringValue25163"]) { + EnumValue25271 + EnumValue25272 + EnumValue25273 + EnumValue25274 + EnumValue25275 + EnumValue25276 +} + +enum Enum1289 @Directive44(argument97 : ["stringValue25176"]) { + EnumValue25277 + EnumValue25278 + EnumValue25279 +} + +enum Enum129 @Directive44(argument97 : ["stringValue1261"]) { + EnumValue2948 + EnumValue2949 + EnumValue2950 + EnumValue2951 + EnumValue2952 + EnumValue2953 + EnumValue2954 + EnumValue2955 +} + +enum Enum1290 @Directive44(argument97 : ["stringValue25177"]) { + EnumValue25280 + EnumValue25281 + EnumValue25282 +} + +enum Enum1291 @Directive44(argument97 : ["stringValue25185"]) { + EnumValue25283 + EnumValue25284 + EnumValue25285 +} + +enum Enum1292 @Directive44(argument97 : ["stringValue25186"]) { + EnumValue25286 + EnumValue25287 + EnumValue25288 +} + +enum Enum1293 @Directive44(argument97 : ["stringValue25195"]) { + EnumValue25289 + EnumValue25290 + EnumValue25291 +} + +enum Enum1294 @Directive44(argument97 : ["stringValue25196"]) { + EnumValue25292 + EnumValue25293 + EnumValue25294 +} + +enum Enum1295 @Directive44(argument97 : ["stringValue25218"]) { + EnumValue25295 + EnumValue25296 + EnumValue25297 + EnumValue25298 +} + +enum Enum1296 @Directive44(argument97 : ["stringValue25229"]) { + EnumValue25299 + EnumValue25300 + EnumValue25301 +} + +enum Enum1297 @Directive44(argument97 : ["stringValue25235"]) { + EnumValue25302 + EnumValue25303 + EnumValue25304 + EnumValue25305 +} + +enum Enum1298 @Directive44(argument97 : ["stringValue25242"]) { + EnumValue25306 + EnumValue25307 + EnumValue25308 + EnumValue25309 +} + +enum Enum1299 @Directive44(argument97 : ["stringValue25246"]) { + EnumValue25310 + EnumValue25311 + EnumValue25312 + EnumValue25313 + EnumValue25314 + EnumValue25315 + EnumValue25316 +} + +enum Enum13 @Directive44(argument97 : ["stringValue153"]) { + EnumValue751 + EnumValue752 + EnumValue753 +} + +enum Enum130 @Directive44(argument97 : ["stringValue1266"]) { + EnumValue2956 + EnumValue2957 + EnumValue2958 + EnumValue2959 + EnumValue2960 +} + +enum Enum1300 @Directive44(argument97 : ["stringValue25247"]) { + EnumValue25317 + EnumValue25318 + EnumValue25319 + EnumValue25320 + EnumValue25321 + EnumValue25322 + EnumValue25323 + EnumValue25324 + EnumValue25325 + EnumValue25326 + EnumValue25327 + EnumValue25328 + EnumValue25329 + EnumValue25330 + EnumValue25331 + EnumValue25332 + EnumValue25333 + EnumValue25334 + EnumValue25335 + EnumValue25336 + EnumValue25337 + EnumValue25338 + EnumValue25339 + EnumValue25340 + EnumValue25341 + EnumValue25342 + EnumValue25343 + EnumValue25344 + EnumValue25345 + EnumValue25346 + EnumValue25347 + EnumValue25348 + EnumValue25349 + EnumValue25350 + EnumValue25351 + EnumValue25352 + EnumValue25353 + EnumValue25354 + EnumValue25355 +} + +enum Enum1301 @Directive44(argument97 : ["stringValue25249"]) { + EnumValue25356 + EnumValue25357 + EnumValue25358 +} + +enum Enum1302 @Directive44(argument97 : ["stringValue25250"]) { + EnumValue25359 + EnumValue25360 +} + +enum Enum1303 @Directive44(argument97 : ["stringValue25253"]) { + EnumValue25361 + EnumValue25362 + EnumValue25363 + EnumValue25364 + EnumValue25365 + EnumValue25366 + EnumValue25367 +} + +enum Enum1304 @Directive44(argument97 : ["stringValue25256"]) { + EnumValue25368 + EnumValue25369 + EnumValue25370 + EnumValue25371 + EnumValue25372 + EnumValue25373 + EnumValue25374 + EnumValue25375 + EnumValue25376 + EnumValue25377 + EnumValue25378 + EnumValue25379 + EnumValue25380 + EnumValue25381 + EnumValue25382 + EnumValue25383 + EnumValue25384 + EnumValue25385 + EnumValue25386 + EnumValue25387 + EnumValue25388 + EnumValue25389 + EnumValue25390 + EnumValue25391 + EnumValue25392 + EnumValue25393 + EnumValue25394 + EnumValue25395 +} + +enum Enum1305 @Directive44(argument97 : ["stringValue25280"]) { + EnumValue25396 + EnumValue25397 + EnumValue25398 + EnumValue25399 + EnumValue25400 + EnumValue25401 + EnumValue25402 +} + +enum Enum1306 @Directive44(argument97 : ["stringValue25292"]) { + EnumValue25403 + EnumValue25404 + EnumValue25405 +} + +enum Enum1307 @Directive44(argument97 : ["stringValue25301"]) { + EnumValue25406 + EnumValue25407 + EnumValue25408 + EnumValue25409 +} + +enum Enum1308 @Directive44(argument97 : ["stringValue25329"]) { + EnumValue25410 + EnumValue25411 + EnumValue25412 + EnumValue25413 +} + +enum Enum1309 @Directive44(argument97 : ["stringValue25330"]) { + EnumValue25414 + EnumValue25415 + EnumValue25416 + EnumValue25417 + EnumValue25418 + EnumValue25419 +} + +enum Enum131 @Directive19(argument57 : "stringValue1335") @Directive22(argument62 : "stringValue1334") @Directive44(argument97 : ["stringValue1336", "stringValue1337"]) { + EnumValue2961 + EnumValue2962 + EnumValue2963 + EnumValue2964 + EnumValue2965 + EnumValue2966 + EnumValue2967 +} + +enum Enum1310 @Directive44(argument97 : ["stringValue25335"]) { + EnumValue25420 + EnumValue25421 +} + +enum Enum1311 @Directive44(argument97 : ["stringValue25338"]) { + EnumValue25422 + EnumValue25423 + EnumValue25424 +} + +enum Enum1312 @Directive44(argument97 : ["stringValue25341"]) { + EnumValue25425 + EnumValue25426 + EnumValue25427 +} + +enum Enum1313 @Directive44(argument97 : ["stringValue25342"]) { + EnumValue25428 + EnumValue25429 + EnumValue25430 + EnumValue25431 +} + +enum Enum1314 @Directive44(argument97 : ["stringValue25373"]) { + EnumValue25432 + EnumValue25433 +} + +enum Enum1315 @Directive44(argument97 : ["stringValue25376"]) { + EnumValue25434 + EnumValue25435 + EnumValue25436 +} + +enum Enum1316 @Directive44(argument97 : ["stringValue25377"]) { + EnumValue25437 + EnumValue25438 + EnumValue25439 +} + +enum Enum1317 @Directive44(argument97 : ["stringValue25378"]) { + EnumValue25440 + EnumValue25441 + EnumValue25442 + EnumValue25443 +} + +enum Enum1318 @Directive44(argument97 : ["stringValue25385"]) { + EnumValue25444 + EnumValue25445 +} + +enum Enum1319 @Directive44(argument97 : ["stringValue25436"]) { + EnumValue25446 + EnumValue25447 + EnumValue25448 + EnumValue25449 + EnumValue25450 + EnumValue25451 +} + +enum Enum132 @Directive22(argument62 : "stringValue1346") @Directive44(argument97 : ["stringValue1347", "stringValue1348"]) { + EnumValue2968 + EnumValue2969 +} + +enum Enum1320 @Directive44(argument97 : ["stringValue25441"]) { + EnumValue25452 + EnumValue25453 + EnumValue25454 +} + +enum Enum1321 @Directive44(argument97 : ["stringValue25442"]) { + EnumValue25455 + EnumValue25456 + EnumValue25457 + EnumValue25458 + EnumValue25459 + EnumValue25460 + EnumValue25461 + EnumValue25462 + EnumValue25463 +} + +enum Enum1322 @Directive44(argument97 : ["stringValue25447"]) { + EnumValue25464 + EnumValue25465 + EnumValue25466 +} + +enum Enum1323 @Directive44(argument97 : ["stringValue25498"]) { + EnumValue25467 + EnumValue25468 + EnumValue25469 +} + +enum Enum1324 @Directive44(argument97 : ["stringValue25499"]) { + EnumValue25470 + EnumValue25471 + EnumValue25472 +} + +enum Enum1325 @Directive44(argument97 : ["stringValue25524"]) { + EnumValue25473 + EnumValue25474 + EnumValue25475 + EnumValue25476 + EnumValue25477 + EnumValue25478 +} + +enum Enum1326 @Directive44(argument97 : ["stringValue25532"]) { + EnumValue25479 + EnumValue25480 + EnumValue25481 +} + +enum Enum1327 @Directive44(argument97 : ["stringValue25533"]) { + EnumValue25482 + EnumValue25483 + EnumValue25484 + EnumValue25485 + EnumValue25486 +} + +enum Enum1328 @Directive44(argument97 : ["stringValue25559"]) { + EnumValue25487 + EnumValue25488 + EnumValue25489 + EnumValue25490 + EnumValue25491 + EnumValue25492 + EnumValue25493 + EnumValue25494 +} + +enum Enum1329 @Directive44(argument97 : ["stringValue25560"]) { + EnumValue25495 + EnumValue25496 + EnumValue25497 + EnumValue25498 + EnumValue25499 + EnumValue25500 + EnumValue25501 + EnumValue25502 + EnumValue25503 + EnumValue25504 + EnumValue25505 + EnumValue25506 + EnumValue25507 + EnumValue25508 + EnumValue25509 +} + +enum Enum133 @Directive22(argument62 : "stringValue1374") @Directive44(argument97 : ["stringValue1375", "stringValue1376"]) { + EnumValue2970 + EnumValue2971 + EnumValue2972 +} + +enum Enum1330 @Directive44(argument97 : ["stringValue25567"]) { + EnumValue25510 + EnumValue25511 + EnumValue25512 + EnumValue25513 +} + +enum Enum1331 @Directive44(argument97 : ["stringValue25578"]) { + EnumValue25514 + EnumValue25515 + EnumValue25516 + EnumValue25517 +} + +enum Enum1332 @Directive44(argument97 : ["stringValue25580"]) { + EnumValue25518 + EnumValue25519 + EnumValue25520 + EnumValue25521 + EnumValue25522 + EnumValue25523 + EnumValue25524 + EnumValue25525 + EnumValue25526 + EnumValue25527 + EnumValue25528 + EnumValue25529 + EnumValue25530 + EnumValue25531 + EnumValue25532 + EnumValue25533 + EnumValue25534 + EnumValue25535 + EnumValue25536 + EnumValue25537 +} + +enum Enum1333 @Directive44(argument97 : ["stringValue25585"]) { + EnumValue25538 + EnumValue25539 + EnumValue25540 + EnumValue25541 + EnumValue25542 + EnumValue25543 + EnumValue25544 +} + +enum Enum1334 @Directive44(argument97 : ["stringValue25634"]) { + EnumValue25545 + EnumValue25546 + EnumValue25547 +} + +enum Enum1335 @Directive44(argument97 : ["stringValue25677"]) { + EnumValue25548 + EnumValue25549 +} + +enum Enum1336 @Directive44(argument97 : ["stringValue25704"]) { + EnumValue25550 + EnumValue25551 + EnumValue25552 +} + +enum Enum1337 @Directive44(argument97 : ["stringValue25706"]) { + EnumValue25553 + EnumValue25554 + EnumValue25555 +} + +enum Enum1338 @Directive44(argument97 : ["stringValue25708"]) { + EnumValue25556 + EnumValue25557 + EnumValue25558 + EnumValue25559 + EnumValue25560 + EnumValue25561 + EnumValue25562 + EnumValue25563 +} + +enum Enum1339 @Directive44(argument97 : ["stringValue25710"]) { + EnumValue25564 + EnumValue25565 + EnumValue25566 + EnumValue25567 +} + +enum Enum134 @Directive19(argument57 : "stringValue1385") @Directive22(argument62 : "stringValue1384") @Directive44(argument97 : ["stringValue1386", "stringValue1387"]) { + EnumValue2973 + EnumValue2974 + EnumValue2975 + EnumValue2976 + EnumValue2977 + EnumValue2978 + EnumValue2979 + EnumValue2980 + EnumValue2981 + EnumValue2982 + EnumValue2983 + EnumValue2984 + EnumValue2985 + EnumValue2986 + EnumValue2987 + EnumValue2988 + EnumValue2989 + EnumValue2990 + EnumValue2991 + EnumValue2992 + EnumValue2993 + EnumValue2994 + EnumValue2995 + EnumValue2996 + EnumValue2997 + EnumValue2998 + EnumValue2999 + EnumValue3000 + EnumValue3001 + EnumValue3002 + EnumValue3003 + EnumValue3004 + EnumValue3005 + EnumValue3006 + EnumValue3007 + EnumValue3008 + EnumValue3009 + EnumValue3010 + EnumValue3011 + EnumValue3012 + EnumValue3013 + EnumValue3014 + EnumValue3015 + EnumValue3016 + EnumValue3017 + EnumValue3018 + EnumValue3019 + EnumValue3020 + EnumValue3021 + EnumValue3022 + EnumValue3023 + EnumValue3024 + EnumValue3025 + EnumValue3026 + EnumValue3027 + EnumValue3028 + EnumValue3029 + EnumValue3030 + EnumValue3031 + EnumValue3032 + EnumValue3033 + EnumValue3034 + EnumValue3035 + EnumValue3036 + EnumValue3037 + EnumValue3038 +} + +enum Enum1340 @Directive44(argument97 : ["stringValue25711"]) { + EnumValue25568 + EnumValue25569 + EnumValue25570 + EnumValue25571 + EnumValue25572 +} + +enum Enum1341 @Directive44(argument97 : ["stringValue25714"]) { + EnumValue25573 + EnumValue25574 + EnumValue25575 + EnumValue25576 + EnumValue25577 +} + +enum Enum1342 @Directive44(argument97 : ["stringValue25752"]) { + EnumValue25578 + EnumValue25579 + EnumValue25580 + EnumValue25581 + EnumValue25582 + EnumValue25583 + EnumValue25584 + EnumValue25585 + EnumValue25586 + EnumValue25587 + EnumValue25588 + EnumValue25589 + EnumValue25590 + EnumValue25591 + EnumValue25592 + EnumValue25593 + EnumValue25594 + EnumValue25595 + EnumValue25596 + EnumValue25597 + EnumValue25598 + EnumValue25599 + EnumValue25600 + EnumValue25601 + EnumValue25602 + EnumValue25603 + EnumValue25604 + EnumValue25605 + EnumValue25606 + EnumValue25607 + EnumValue25608 + EnumValue25609 + EnumValue25610 + EnumValue25611 + EnumValue25612 + EnumValue25613 + EnumValue25614 + EnumValue25615 + EnumValue25616 + EnumValue25617 + EnumValue25618 + EnumValue25619 + EnumValue25620 + EnumValue25621 + EnumValue25622 + EnumValue25623 + EnumValue25624 + EnumValue25625 + EnumValue25626 + EnumValue25627 + EnumValue25628 + EnumValue25629 + EnumValue25630 + EnumValue25631 + EnumValue25632 + EnumValue25633 + EnumValue25634 + EnumValue25635 + EnumValue25636 + EnumValue25637 + EnumValue25638 + EnumValue25639 +} + +enum Enum1343 @Directive44(argument97 : ["stringValue25756"]) { + EnumValue25640 + EnumValue25641 + EnumValue25642 +} + +enum Enum1344 @Directive44(argument97 : ["stringValue25757"]) { + EnumValue25643 + EnumValue25644 + EnumValue25645 + EnumValue25646 +} + +enum Enum1345 @Directive44(argument97 : ["stringValue25758"]) { + EnumValue25647 + EnumValue25648 + EnumValue25649 +} + +enum Enum1346 @Directive44(argument97 : ["stringValue25759"]) { + EnumValue25650 + EnumValue25651 + EnumValue25652 + EnumValue25653 + EnumValue25654 + EnumValue25655 + EnumValue25656 +} + +enum Enum1347 @Directive44(argument97 : ["stringValue25761"]) { + EnumValue25657 + EnumValue25658 + EnumValue25659 + EnumValue25660 +} + +enum Enum1348 @Directive44(argument97 : ["stringValue25763"]) { + EnumValue25661 + EnumValue25662 + EnumValue25663 + EnumValue25664 +} + +enum Enum1349 @Directive44(argument97 : ["stringValue25793"]) { + EnumValue25665 + EnumValue25666 + EnumValue25667 +} + +enum Enum135 @Directive19(argument57 : "stringValue1392") @Directive22(argument62 : "stringValue1391") @Directive44(argument97 : ["stringValue1393", "stringValue1394", "stringValue1395", "stringValue1396"]) { + EnumValue3039 + EnumValue3040 + EnumValue3041 + EnumValue3042 + EnumValue3043 + EnumValue3044 + EnumValue3045 + EnumValue3046 + EnumValue3047 + EnumValue3048 + EnumValue3049 + EnumValue3050 + EnumValue3051 + EnumValue3052 + EnumValue3053 + EnumValue3054 +} + +enum Enum1350 @Directive44(argument97 : ["stringValue25814"]) { + EnumValue25668 + EnumValue25669 + EnumValue25670 + EnumValue25671 + EnumValue25672 + EnumValue25673 + EnumValue25674 + EnumValue25675 + EnumValue25676 + EnumValue25677 + EnumValue25678 +} + +enum Enum1351 @Directive44(argument97 : ["stringValue25839"]) { + EnumValue25679 + EnumValue25680 + EnumValue25681 +} + +enum Enum1352 @Directive44(argument97 : ["stringValue25840"]) { + EnumValue25682 + EnumValue25683 + EnumValue25684 + EnumValue25685 + EnumValue25686 +} + +enum Enum1353 @Directive44(argument97 : ["stringValue25899"]) { + EnumValue25687 + EnumValue25688 + EnumValue25689 +} + +enum Enum1354 @Directive44(argument97 : ["stringValue25973"]) { + EnumValue25690 + EnumValue25691 + EnumValue25692 + EnumValue25693 + EnumValue25694 +} + +enum Enum1355 @Directive44(argument97 : ["stringValue26015"]) { + EnumValue25695 + EnumValue25696 + EnumValue25697 + EnumValue25698 + EnumValue25699 + EnumValue25700 + EnumValue25701 + EnumValue25702 + EnumValue25703 + EnumValue25704 + EnumValue25705 + EnumValue25706 + EnumValue25707 + EnumValue25708 + EnumValue25709 +} + +enum Enum1356 @Directive44(argument97 : ["stringValue26070"]) { + EnumValue25710 + EnumValue25711 + EnumValue25712 + EnumValue25713 + EnumValue25714 +} + +enum Enum1357 @Directive44(argument97 : ["stringValue26202"]) { + EnumValue25715 + EnumValue25716 + EnumValue25717 + EnumValue25718 + EnumValue25719 +} + +enum Enum1358 @Directive44(argument97 : ["stringValue26203"]) { + EnumValue25720 + EnumValue25721 + EnumValue25722 + EnumValue25723 + EnumValue25724 +} + +enum Enum1359 @Directive44(argument97 : ["stringValue26218"]) { + EnumValue25725 + EnumValue25726 + EnumValue25727 +} + +enum Enum136 @Directive19(argument57 : "stringValue1398") @Directive22(argument62 : "stringValue1397") @Directive44(argument97 : ["stringValue1399", "stringValue1400"]) { + EnumValue3055 + EnumValue3056 + EnumValue3057 +} + +enum Enum1360 @Directive44(argument97 : ["stringValue26257"]) { + EnumValue25728 + EnumValue25729 + EnumValue25730 +} + +enum Enum1361 @Directive44(argument97 : ["stringValue26266"]) { + EnumValue25731 + EnumValue25732 + EnumValue25733 + EnumValue25734 + EnumValue25735 + EnumValue25736 + EnumValue25737 + EnumValue25738 + EnumValue25739 + EnumValue25740 + EnumValue25741 + EnumValue25742 + EnumValue25743 + EnumValue25744 + EnumValue25745 + EnumValue25746 + EnumValue25747 + EnumValue25748 + EnumValue25749 + EnumValue25750 + EnumValue25751 + EnumValue25752 + EnumValue25753 + EnumValue25754 + EnumValue25755 + EnumValue25756 + EnumValue25757 + EnumValue25758 + EnumValue25759 + EnumValue25760 + EnumValue25761 + EnumValue25762 + EnumValue25763 + EnumValue25764 + EnumValue25765 + EnumValue25766 +} + +enum Enum1362 @Directive44(argument97 : ["stringValue26307"]) { + EnumValue25767 + EnumValue25768 + EnumValue25769 +} + +enum Enum1363 @Directive44(argument97 : ["stringValue26328"]) { + EnumValue25770 + EnumValue25771 +} + +enum Enum1364 @Directive44(argument97 : ["stringValue26331"]) { + EnumValue25772 + EnumValue25773 + EnumValue25774 +} + +enum Enum1365 @Directive44(argument97 : ["stringValue26342"]) { + EnumValue25775 + EnumValue25776 + EnumValue25777 +} + +enum Enum1366 @Directive44(argument97 : ["stringValue26359"]) { + EnumValue25778 + EnumValue25779 + EnumValue25780 + EnumValue25781 + EnumValue25782 + EnumValue25783 +} + +enum Enum1367 @Directive44(argument97 : ["stringValue26364"]) { + EnumValue25784 + EnumValue25785 + EnumValue25786 + EnumValue25787 +} + +enum Enum1368 @Directive44(argument97 : ["stringValue26378"]) { + EnumValue25788 + EnumValue25789 + EnumValue25790 + EnumValue25791 + EnumValue25792 + EnumValue25793 + EnumValue25794 + EnumValue25795 + EnumValue25796 + EnumValue25797 + EnumValue25798 +} + +enum Enum1369 @Directive44(argument97 : ["stringValue26385"]) { + EnumValue25799 + EnumValue25800 + EnumValue25801 +} + +enum Enum137 @Directive19(argument57 : "stringValue1412") @Directive22(argument62 : "stringValue1411") @Directive44(argument97 : ["stringValue1413", "stringValue1414", "stringValue1415"]) { + EnumValue3058 + EnumValue3059 + EnumValue3060 + EnumValue3061 + EnumValue3062 + EnumValue3063 + EnumValue3064 + EnumValue3065 + EnumValue3066 + EnumValue3067 + EnumValue3068 + EnumValue3069 + EnumValue3070 + EnumValue3071 + EnumValue3072 + EnumValue3073 + EnumValue3074 + EnumValue3075 + EnumValue3076 +} + +enum Enum1370 @Directive44(argument97 : ["stringValue26398"]) { + EnumValue25802 + EnumValue25803 + EnumValue25804 + EnumValue25805 + EnumValue25806 + EnumValue25807 + EnumValue25808 + EnumValue25809 + EnumValue25810 +} + +enum Enum1371 @Directive44(argument97 : ["stringValue26426"]) { + EnumValue25811 + EnumValue25812 + EnumValue25813 + EnumValue25814 + EnumValue25815 + EnumValue25816 + EnumValue25817 + EnumValue25818 + EnumValue25819 + EnumValue25820 + EnumValue25821 + EnumValue25822 + EnumValue25823 + EnumValue25824 + EnumValue25825 +} + +enum Enum1372 @Directive44(argument97 : ["stringValue26459"]) { + EnumValue25826 + EnumValue25827 + EnumValue25828 + EnumValue25829 + EnumValue25830 + EnumValue25831 + EnumValue25832 + EnumValue25833 + EnumValue25834 + EnumValue25835 + EnumValue25836 + EnumValue25837 + EnumValue25838 + EnumValue25839 + EnumValue25840 + EnumValue25841 + EnumValue25842 +} + +enum Enum1373 @Directive44(argument97 : ["stringValue26460"]) { + EnumValue25843 + EnumValue25844 + EnumValue25845 +} + +enum Enum1374 @Directive44(argument97 : ["stringValue26463"]) { + EnumValue25846 + EnumValue25847 + EnumValue25848 + EnumValue25849 +} + +enum Enum1375 @Directive44(argument97 : ["stringValue26466"]) { + EnumValue25850 + EnumValue25851 + EnumValue25852 + EnumValue25853 +} + +enum Enum1376 @Directive44(argument97 : ["stringValue26469"]) { + EnumValue25854 + EnumValue25855 + EnumValue25856 +} + +enum Enum1377 @Directive44(argument97 : ["stringValue26470"]) { + EnumValue25857 + EnumValue25858 + EnumValue25859 +} + +enum Enum1378 @Directive44(argument97 : ["stringValue26471"]) { + EnumValue25860 + EnumValue25861 + EnumValue25862 + EnumValue25863 +} + +enum Enum1379 @Directive44(argument97 : ["stringValue26472"]) { + EnumValue25864 + EnumValue25865 + EnumValue25866 + EnumValue25867 + EnumValue25868 + EnumValue25869 +} + +enum Enum138 @Directive19(argument57 : "stringValue1420") @Directive22(argument62 : "stringValue1419") @Directive44(argument97 : ["stringValue1421", "stringValue1422"]) { + EnumValue3077 + EnumValue3078 +} + +enum Enum1380 @Directive44(argument97 : ["stringValue26479"]) { + EnumValue25870 + EnumValue25871 + EnumValue25872 + EnumValue25873 + EnumValue25874 + EnumValue25875 + EnumValue25876 + EnumValue25877 + EnumValue25878 +} + +enum Enum1381 @Directive44(argument97 : ["stringValue26480"]) { + EnumValue25879 + EnumValue25880 + EnumValue25881 +} + +enum Enum1382 @Directive44(argument97 : ["stringValue26497"]) { + EnumValue25882 + EnumValue25883 + EnumValue25884 + EnumValue25885 +} + +enum Enum1383 @Directive44(argument97 : ["stringValue26502"]) { + EnumValue25886 + EnumValue25887 + EnumValue25888 + EnumValue25889 + EnumValue25890 + EnumValue25891 + EnumValue25892 + EnumValue25893 + EnumValue25894 + EnumValue25895 + EnumValue25896 + EnumValue25897 + EnumValue25898 + EnumValue25899 + EnumValue25900 + EnumValue25901 + EnumValue25902 + EnumValue25903 + EnumValue25904 + EnumValue25905 + EnumValue25906 + EnumValue25907 + EnumValue25908 + EnumValue25909 + EnumValue25910 + EnumValue25911 + EnumValue25912 + EnumValue25913 + EnumValue25914 + EnumValue25915 + EnumValue25916 + EnumValue25917 + EnumValue25918 + EnumValue25919 + EnumValue25920 + EnumValue25921 + EnumValue25922 + EnumValue25923 +} + +enum Enum1384 @Directive44(argument97 : ["stringValue26503"]) { + EnumValue25924 + EnumValue25925 + EnumValue25926 +} + +enum Enum1385 @Directive44(argument97 : ["stringValue26521"]) { + EnumValue25927 + EnumValue25928 + EnumValue25929 + EnumValue25930 +} + +enum Enum1386 @Directive44(argument97 : ["stringValue26528"]) { + EnumValue25931 + EnumValue25932 + EnumValue25933 + EnumValue25934 +} + +enum Enum1387 @Directive44(argument97 : ["stringValue26529"]) { + EnumValue25935 + EnumValue25936 + EnumValue25937 +} + +enum Enum1388 @Directive44(argument97 : ["stringValue26530"]) { + EnumValue25938 + EnumValue25939 + EnumValue25940 + EnumValue25941 +} + +enum Enum1389 @Directive44(argument97 : ["stringValue26543"]) { + EnumValue25942 + EnumValue25943 + EnumValue25944 + EnumValue25945 + EnumValue25946 + EnumValue25947 + EnumValue25948 + EnumValue25949 + EnumValue25950 + EnumValue25951 +} + +enum Enum139 @Directive19(argument57 : "stringValue1427") @Directive22(argument62 : "stringValue1426") @Directive44(argument97 : ["stringValue1428", "stringValue1429"]) { + EnumValue3079 + EnumValue3080 +} + +enum Enum1390 @Directive44(argument97 : ["stringValue26628"]) { + EnumValue25952 + EnumValue25953 + EnumValue25954 + EnumValue25955 + EnumValue25956 + EnumValue25957 + EnumValue25958 + EnumValue25959 + EnumValue25960 + EnumValue25961 + EnumValue25962 + EnumValue25963 + EnumValue25964 + EnumValue25965 + EnumValue25966 + EnumValue25967 + EnumValue25968 + EnumValue25969 + EnumValue25970 + EnumValue25971 + EnumValue25972 + EnumValue25973 + EnumValue25974 + EnumValue25975 + EnumValue25976 + EnumValue25977 + EnumValue25978 + EnumValue25979 + EnumValue25980 + EnumValue25981 + EnumValue25982 + EnumValue25983 + EnumValue25984 + EnumValue25985 + EnumValue25986 + EnumValue25987 + EnumValue25988 + EnumValue25989 + EnumValue25990 + EnumValue25991 + EnumValue25992 + EnumValue25993 + EnumValue25994 + EnumValue25995 + EnumValue25996 + EnumValue25997 + EnumValue25998 + EnumValue25999 + EnumValue26000 + EnumValue26001 +} + +enum Enum1391 @Directive44(argument97 : ["stringValue26651"]) { + EnumValue26002 + EnumValue26003 +} + +enum Enum1392 @Directive44(argument97 : ["stringValue26653"]) { + EnumValue26004 + EnumValue26005 +} + +enum Enum1393 @Directive44(argument97 : ["stringValue26685"]) { + EnumValue26006 + EnumValue26007 + EnumValue26008 + EnumValue26009 + EnumValue26010 + EnumValue26011 + EnumValue26012 + EnumValue26013 + EnumValue26014 + EnumValue26015 + EnumValue26016 + EnumValue26017 + EnumValue26018 + EnumValue26019 + EnumValue26020 + EnumValue26021 + EnumValue26022 + EnumValue26023 + EnumValue26024 + EnumValue26025 + EnumValue26026 + EnumValue26027 + EnumValue26028 + EnumValue26029 + EnumValue26030 + EnumValue26031 + EnumValue26032 + EnumValue26033 + EnumValue26034 + EnumValue26035 + EnumValue26036 + EnumValue26037 + EnumValue26038 + EnumValue26039 + EnumValue26040 + EnumValue26041 + EnumValue26042 + EnumValue26043 + EnumValue26044 + EnumValue26045 + EnumValue26046 + EnumValue26047 + EnumValue26048 + EnumValue26049 + EnumValue26050 + EnumValue26051 + EnumValue26052 + EnumValue26053 + EnumValue26054 + EnumValue26055 + EnumValue26056 + EnumValue26057 + EnumValue26058 + EnumValue26059 + EnumValue26060 + EnumValue26061 + EnumValue26062 + EnumValue26063 + EnumValue26064 + EnumValue26065 + EnumValue26066 + EnumValue26067 + EnumValue26068 + EnumValue26069 + EnumValue26070 + EnumValue26071 + EnumValue26072 + EnumValue26073 + EnumValue26074 + EnumValue26075 + EnumValue26076 + EnumValue26077 + EnumValue26078 + EnumValue26079 + EnumValue26080 + EnumValue26081 + EnumValue26082 + EnumValue26083 + EnumValue26084 + EnumValue26085 + EnumValue26086 + EnumValue26087 + EnumValue26088 + EnumValue26089 + EnumValue26090 + EnumValue26091 + EnumValue26092 + EnumValue26093 + EnumValue26094 + EnumValue26095 + EnumValue26096 + EnumValue26097 + EnumValue26098 + EnumValue26099 + EnumValue26100 + EnumValue26101 + EnumValue26102 + EnumValue26103 + EnumValue26104 + EnumValue26105 + EnumValue26106 + EnumValue26107 + EnumValue26108 + EnumValue26109 + EnumValue26110 + EnumValue26111 + EnumValue26112 + EnumValue26113 + EnumValue26114 + EnumValue26115 + EnumValue26116 + EnumValue26117 + EnumValue26118 + EnumValue26119 + EnumValue26120 + EnumValue26121 + EnumValue26122 + EnumValue26123 + EnumValue26124 + EnumValue26125 + EnumValue26126 + EnumValue26127 + EnumValue26128 + EnumValue26129 + EnumValue26130 + EnumValue26131 + EnumValue26132 + EnumValue26133 + EnumValue26134 + EnumValue26135 + EnumValue26136 + EnumValue26137 + EnumValue26138 + EnumValue26139 + EnumValue26140 + EnumValue26141 + EnumValue26142 + EnumValue26143 + EnumValue26144 + EnumValue26145 + EnumValue26146 + EnumValue26147 + EnumValue26148 + EnumValue26149 + EnumValue26150 + EnumValue26151 + EnumValue26152 + EnumValue26153 + EnumValue26154 + EnumValue26155 + EnumValue26156 + EnumValue26157 + EnumValue26158 + EnumValue26159 + EnumValue26160 + EnumValue26161 + EnumValue26162 + EnumValue26163 + EnumValue26164 + EnumValue26165 + EnumValue26166 + EnumValue26167 + EnumValue26168 + EnumValue26169 + EnumValue26170 + EnumValue26171 + EnumValue26172 + EnumValue26173 + EnumValue26174 + EnumValue26175 + EnumValue26176 + EnumValue26177 + EnumValue26178 + EnumValue26179 + EnumValue26180 + EnumValue26181 + EnumValue26182 + EnumValue26183 + EnumValue26184 + EnumValue26185 + EnumValue26186 + EnumValue26187 + EnumValue26188 + EnumValue26189 + EnumValue26190 + EnumValue26191 + EnumValue26192 + EnumValue26193 + EnumValue26194 + EnumValue26195 + EnumValue26196 + EnumValue26197 + EnumValue26198 + EnumValue26199 + EnumValue26200 + EnumValue26201 + EnumValue26202 + EnumValue26203 + EnumValue26204 + EnumValue26205 + EnumValue26206 + EnumValue26207 + EnumValue26208 + EnumValue26209 + EnumValue26210 + EnumValue26211 + EnumValue26212 + EnumValue26213 + EnumValue26214 + EnumValue26215 + EnumValue26216 + EnumValue26217 + EnumValue26218 + EnumValue26219 + EnumValue26220 + EnumValue26221 + EnumValue26222 + EnumValue26223 + EnumValue26224 + EnumValue26225 + EnumValue26226 + EnumValue26227 + EnumValue26228 + EnumValue26229 + EnumValue26230 + EnumValue26231 + EnumValue26232 + EnumValue26233 + EnumValue26234 + EnumValue26235 + EnumValue26236 + EnumValue26237 + EnumValue26238 + EnumValue26239 + EnumValue26240 + EnumValue26241 + EnumValue26242 + EnumValue26243 + EnumValue26244 + EnumValue26245 + EnumValue26246 + EnumValue26247 + EnumValue26248 + EnumValue26249 + EnumValue26250 + EnumValue26251 + EnumValue26252 + EnumValue26253 + EnumValue26254 + EnumValue26255 + EnumValue26256 + EnumValue26257 + EnumValue26258 + EnumValue26259 + EnumValue26260 + EnumValue26261 + EnumValue26262 + EnumValue26263 + EnumValue26264 + EnumValue26265 + EnumValue26266 + EnumValue26267 + EnumValue26268 + EnumValue26269 + EnumValue26270 + EnumValue26271 + EnumValue26272 + EnumValue26273 + EnumValue26274 + EnumValue26275 + EnumValue26276 + EnumValue26277 + EnumValue26278 + EnumValue26279 + EnumValue26280 + EnumValue26281 + EnumValue26282 + EnumValue26283 + EnumValue26284 + EnumValue26285 + EnumValue26286 + EnumValue26287 + EnumValue26288 + EnumValue26289 + EnumValue26290 + EnumValue26291 + EnumValue26292 + EnumValue26293 + EnumValue26294 + EnumValue26295 + EnumValue26296 + EnumValue26297 + EnumValue26298 + EnumValue26299 + EnumValue26300 + EnumValue26301 + EnumValue26302 + EnumValue26303 + EnumValue26304 + EnumValue26305 + EnumValue26306 + EnumValue26307 + EnumValue26308 + EnumValue26309 + EnumValue26310 + EnumValue26311 + EnumValue26312 + EnumValue26313 + EnumValue26314 + EnumValue26315 + EnumValue26316 + EnumValue26317 + EnumValue26318 + EnumValue26319 + EnumValue26320 + EnumValue26321 + EnumValue26322 + EnumValue26323 + EnumValue26324 + EnumValue26325 + EnumValue26326 + EnumValue26327 + EnumValue26328 + EnumValue26329 + EnumValue26330 + EnumValue26331 + EnumValue26332 + EnumValue26333 + EnumValue26334 + EnumValue26335 + EnumValue26336 + EnumValue26337 + EnumValue26338 + EnumValue26339 + EnumValue26340 + EnumValue26341 + EnumValue26342 + EnumValue26343 + EnumValue26344 + EnumValue26345 + EnumValue26346 + EnumValue26347 + EnumValue26348 + EnumValue26349 + EnumValue26350 + EnumValue26351 + EnumValue26352 + EnumValue26353 + EnumValue26354 + EnumValue26355 + EnumValue26356 + EnumValue26357 + EnumValue26358 + EnumValue26359 + EnumValue26360 + EnumValue26361 + EnumValue26362 + EnumValue26363 + EnumValue26364 + EnumValue26365 + EnumValue26366 + EnumValue26367 + EnumValue26368 + EnumValue26369 + EnumValue26370 + EnumValue26371 + EnumValue26372 + EnumValue26373 + EnumValue26374 + EnumValue26375 + EnumValue26376 + EnumValue26377 + EnumValue26378 + EnumValue26379 + EnumValue26380 + EnumValue26381 + EnumValue26382 + EnumValue26383 + EnumValue26384 + EnumValue26385 + EnumValue26386 + EnumValue26387 + EnumValue26388 + EnumValue26389 + EnumValue26390 + EnumValue26391 + EnumValue26392 + EnumValue26393 + EnumValue26394 + EnumValue26395 + EnumValue26396 + EnumValue26397 + EnumValue26398 + EnumValue26399 + EnumValue26400 + EnumValue26401 + EnumValue26402 + EnumValue26403 + EnumValue26404 + EnumValue26405 + EnumValue26406 + EnumValue26407 + EnumValue26408 + EnumValue26409 + EnumValue26410 + EnumValue26411 + EnumValue26412 + EnumValue26413 + EnumValue26414 + EnumValue26415 + EnumValue26416 + EnumValue26417 + EnumValue26418 + EnumValue26419 + EnumValue26420 + EnumValue26421 + EnumValue26422 + EnumValue26423 + EnumValue26424 +} + +enum Enum1394 @Directive44(argument97 : ["stringValue26686"]) { + EnumValue26425 + EnumValue26426 + EnumValue26427 + EnumValue26428 + EnumValue26429 + EnumValue26430 + EnumValue26431 + EnumValue26432 + EnumValue26433 + EnumValue26434 + EnumValue26435 + EnumValue26436 + EnumValue26437 + EnumValue26438 + EnumValue26439 + EnumValue26440 + EnumValue26441 + EnumValue26442 + EnumValue26443 + EnumValue26444 + EnumValue26445 + EnumValue26446 + EnumValue26447 + EnumValue26448 + EnumValue26449 + EnumValue26450 + EnumValue26451 + EnumValue26452 + EnumValue26453 + EnumValue26454 + EnumValue26455 + EnumValue26456 + EnumValue26457 + EnumValue26458 + EnumValue26459 + EnumValue26460 + EnumValue26461 + EnumValue26462 + EnumValue26463 + EnumValue26464 + EnumValue26465 + EnumValue26466 + EnumValue26467 + EnumValue26468 + EnumValue26469 + EnumValue26470 + EnumValue26471 + EnumValue26472 + EnumValue26473 + EnumValue26474 + EnumValue26475 + EnumValue26476 +} + +enum Enum1395 @Directive44(argument97 : ["stringValue26687"]) { + EnumValue26477 + EnumValue26478 + EnumValue26479 + EnumValue26480 + EnumValue26481 + EnumValue26482 + EnumValue26483 + EnumValue26484 + EnumValue26485 +} + +enum Enum1396 @Directive44(argument97 : ["stringValue26697"]) { + EnumValue26486 + EnumValue26487 + EnumValue26488 + EnumValue26489 +} + +enum Enum1397 @Directive44(argument97 : ["stringValue26701"]) { + EnumValue26490 + EnumValue26491 + EnumValue26492 + EnumValue26493 + EnumValue26494 + EnumValue26495 + EnumValue26496 + EnumValue26497 + EnumValue26498 + EnumValue26499 + EnumValue26500 + EnumValue26501 + EnumValue26502 + EnumValue26503 + EnumValue26504 + EnumValue26505 + EnumValue26506 + EnumValue26507 + EnumValue26508 + EnumValue26509 + EnumValue26510 + EnumValue26511 + EnumValue26512 + EnumValue26513 + EnumValue26514 + EnumValue26515 + EnumValue26516 + EnumValue26517 + EnumValue26518 + EnumValue26519 + EnumValue26520 + EnumValue26521 + EnumValue26522 + EnumValue26523 + EnumValue26524 + EnumValue26525 + EnumValue26526 + EnumValue26527 + EnumValue26528 + EnumValue26529 +} + +enum Enum1398 @Directive44(argument97 : ["stringValue26703"]) { + EnumValue26530 + EnumValue26531 +} + +enum Enum1399 @Directive44(argument97 : ["stringValue26704"]) { + EnumValue26532 + EnumValue26533 + EnumValue26534 + EnumValue26535 +} + +enum Enum14 @Directive44(argument97 : ["stringValue154"]) { + EnumValue754 + EnumValue755 + EnumValue756 + EnumValue757 + EnumValue758 + EnumValue759 + EnumValue760 + EnumValue761 +} + +enum Enum140 @Directive19(argument57 : "stringValue1434") @Directive22(argument62 : "stringValue1433") @Directive44(argument97 : ["stringValue1435", "stringValue1436"]) { + EnumValue3081 + EnumValue3082 + EnumValue3083 + EnumValue3084 + EnumValue3085 +} + +enum Enum1400 @Directive44(argument97 : ["stringValue26729"]) { + EnumValue26536 + EnumValue26537 + EnumValue26538 + EnumValue26539 + EnumValue26540 +} + +enum Enum1401 @Directive44(argument97 : ["stringValue26741"]) { + EnumValue26541 + EnumValue26542 + EnumValue26543 + EnumValue26544 + EnumValue26545 + EnumValue26546 + EnumValue26547 +} + +enum Enum1402 @Directive44(argument97 : ["stringValue26744"]) { + EnumValue26548 + EnumValue26549 + EnumValue26550 + EnumValue26551 + EnumValue26552 +} + +enum Enum1403 @Directive44(argument97 : ["stringValue26789"]) { + EnumValue26553 + EnumValue26554 + EnumValue26555 + EnumValue26556 + EnumValue26557 + EnumValue26558 + EnumValue26559 + EnumValue26560 +} + +enum Enum1404 @Directive44(argument97 : ["stringValue26791"]) { + EnumValue26561 + EnumValue26562 + EnumValue26563 + EnumValue26564 + EnumValue26565 + EnumValue26566 + EnumValue26567 + EnumValue26568 + EnumValue26569 + EnumValue26570 + EnumValue26571 + EnumValue26572 + EnumValue26573 + EnumValue26574 + EnumValue26575 + EnumValue26576 + EnumValue26577 + EnumValue26578 + EnumValue26579 + EnumValue26580 + EnumValue26581 + EnumValue26582 + EnumValue26583 + EnumValue26584 + EnumValue26585 + EnumValue26586 + EnumValue26587 + EnumValue26588 + EnumValue26589 + EnumValue26590 + EnumValue26591 + EnumValue26592 + EnumValue26593 + EnumValue26594 + EnumValue26595 + EnumValue26596 + EnumValue26597 + EnumValue26598 + EnumValue26599 + EnumValue26600 + EnumValue26601 + EnumValue26602 + EnumValue26603 + EnumValue26604 + EnumValue26605 + EnumValue26606 + EnumValue26607 + EnumValue26608 + EnumValue26609 + EnumValue26610 + EnumValue26611 + EnumValue26612 + EnumValue26613 + EnumValue26614 + EnumValue26615 + EnumValue26616 + EnumValue26617 + EnumValue26618 + EnumValue26619 + EnumValue26620 + EnumValue26621 + EnumValue26622 + EnumValue26623 + EnumValue26624 + EnumValue26625 + EnumValue26626 +} + +enum Enum1405 @Directive44(argument97 : ["stringValue26793"]) { + EnumValue26627 + EnumValue26628 + EnumValue26629 + EnumValue26630 + EnumValue26631 + EnumValue26632 + EnumValue26633 + EnumValue26634 +} + +enum Enum1406 @Directive44(argument97 : ["stringValue26807"]) { + EnumValue26635 + EnumValue26636 + EnumValue26637 +} + +enum Enum1407 @Directive44(argument97 : ["stringValue26813"]) { + EnumValue26638 + EnumValue26639 + EnumValue26640 + EnumValue26641 +} + +enum Enum1408 @Directive44(argument97 : ["stringValue26826"]) { + EnumValue26642 + EnumValue26643 + EnumValue26644 + EnumValue26645 + EnumValue26646 + EnumValue26647 + EnumValue26648 + EnumValue26649 + EnumValue26650 + EnumValue26651 + EnumValue26652 + EnumValue26653 + EnumValue26654 + EnumValue26655 + EnumValue26656 + EnumValue26657 + EnumValue26658 + EnumValue26659 + EnumValue26660 + EnumValue26661 + EnumValue26662 + EnumValue26663 + EnumValue26664 + EnumValue26665 + EnumValue26666 + EnumValue26667 + EnumValue26668 + EnumValue26669 + EnumValue26670 + EnumValue26671 + EnumValue26672 + EnumValue26673 + EnumValue26674 + EnumValue26675 + EnumValue26676 + EnumValue26677 + EnumValue26678 + EnumValue26679 + EnumValue26680 + EnumValue26681 + EnumValue26682 + EnumValue26683 + EnumValue26684 + EnumValue26685 + EnumValue26686 + EnumValue26687 + EnumValue26688 +} + +enum Enum1409 @Directive44(argument97 : ["stringValue26827"]) { + EnumValue26689 + EnumValue26690 + EnumValue26691 + EnumValue26692 + EnumValue26693 + EnumValue26694 + EnumValue26695 + EnumValue26696 + EnumValue26697 +} + +enum Enum141 @Directive19(argument57 : "stringValue1456") @Directive22(argument62 : "stringValue1455") @Directive44(argument97 : ["stringValue1457", "stringValue1458"]) { + EnumValue3086 + EnumValue3087 + EnumValue3088 + EnumValue3089 +} + +enum Enum1410 @Directive44(argument97 : ["stringValue26828"]) { + EnumValue26698 + EnumValue26699 + EnumValue26700 + EnumValue26701 + EnumValue26702 + EnumValue26703 + EnumValue26704 + EnumValue26705 +} + +enum Enum1411 @Directive44(argument97 : ["stringValue26829"]) { + EnumValue26706 + EnumValue26707 + EnumValue26708 +} + +enum Enum1412 @Directive44(argument97 : ["stringValue26843"]) { + EnumValue26709 + EnumValue26710 + EnumValue26711 + EnumValue26712 + EnumValue26713 +} + +enum Enum1413 @Directive44(argument97 : ["stringValue26861"]) { + EnumValue26714 + EnumValue26715 + EnumValue26716 +} + +enum Enum1414 @Directive44(argument97 : ["stringValue26862"]) { + EnumValue26717 + EnumValue26718 + EnumValue26719 + EnumValue26720 + EnumValue26721 + EnumValue26722 + EnumValue26723 + EnumValue26724 + EnumValue26725 + EnumValue26726 + EnumValue26727 + EnumValue26728 + EnumValue26729 + EnumValue26730 + EnumValue26731 + EnumValue26732 + EnumValue26733 + EnumValue26734 + EnumValue26735 + EnumValue26736 + EnumValue26737 + EnumValue26738 + EnumValue26739 + EnumValue26740 + EnumValue26741 + EnumValue26742 + EnumValue26743 + EnumValue26744 + EnumValue26745 + EnumValue26746 + EnumValue26747 + EnumValue26748 + EnumValue26749 +} + +enum Enum1415 @Directive44(argument97 : ["stringValue26865"]) { + EnumValue26750 + EnumValue26751 + EnumValue26752 +} + +enum Enum1416 @Directive44(argument97 : ["stringValue26870"]) { + EnumValue26753 + EnumValue26754 + EnumValue26755 + EnumValue26756 + EnumValue26757 +} + +enum Enum1417 @Directive44(argument97 : ["stringValue26887"]) { + EnumValue26758 + EnumValue26759 + EnumValue26760 + EnumValue26761 + EnumValue26762 + EnumValue26763 + EnumValue26764 + EnumValue26765 + EnumValue26766 +} + +enum Enum1418 @Directive44(argument97 : ["stringValue26903"]) { + EnumValue26767 + EnumValue26768 + EnumValue26769 +} + +enum Enum1419 @Directive44(argument97 : ["stringValue26910"]) { + EnumValue26770 + EnumValue26771 + EnumValue26772 + EnumValue26773 + EnumValue26774 + EnumValue26775 + EnumValue26776 + EnumValue26777 + EnumValue26778 + EnumValue26779 + EnumValue26780 + EnumValue26781 + EnumValue26782 + EnumValue26783 + EnumValue26784 + EnumValue26785 + EnumValue26786 + EnumValue26787 + EnumValue26788 + EnumValue26789 + EnumValue26790 + EnumValue26791 + EnumValue26792 + EnumValue26793 + EnumValue26794 + EnumValue26795 + EnumValue26796 + EnumValue26797 + EnumValue26798 + EnumValue26799 + EnumValue26800 + EnumValue26801 + EnumValue26802 + EnumValue26803 + EnumValue26804 + EnumValue26805 + EnumValue26806 + EnumValue26807 + EnumValue26808 + EnumValue26809 + EnumValue26810 + EnumValue26811 + EnumValue26812 + EnumValue26813 + EnumValue26814 + EnumValue26815 + EnumValue26816 + EnumValue26817 + EnumValue26818 +} + +enum Enum142 @Directive19(argument57 : "stringValue1460") @Directive22(argument62 : "stringValue1459") @Directive44(argument97 : ["stringValue1461", "stringValue1462"]) { + EnumValue3090 + EnumValue3091 + EnumValue3092 + EnumValue3093 + EnumValue3094 +} + +enum Enum1420 @Directive44(argument97 : ["stringValue26917"]) { + EnumValue26819 + EnumValue26820 + EnumValue26821 +} + +enum Enum1421 @Directive44(argument97 : ["stringValue26928"]) { + EnumValue26822 + EnumValue26823 + EnumValue26824 + EnumValue26825 +} + +enum Enum1422 @Directive44(argument97 : ["stringValue26935"]) { + EnumValue26826 + EnumValue26827 + EnumValue26828 + EnumValue26829 + EnumValue26830 + EnumValue26831 + EnumValue26832 + EnumValue26833 + EnumValue26834 + EnumValue26835 + EnumValue26836 + EnumValue26837 + EnumValue26838 +} + +enum Enum1423 @Directive44(argument97 : ["stringValue26938"]) { + EnumValue26839 + EnumValue26840 + EnumValue26841 +} + +enum Enum1424 @Directive44(argument97 : ["stringValue26939"]) { + EnumValue26842 + EnumValue26843 + EnumValue26844 + EnumValue26845 + EnumValue26846 +} + +enum Enum1425 @Directive44(argument97 : ["stringValue26944"]) { + EnumValue26847 + EnumValue26848 + EnumValue26849 + EnumValue26850 +} + +enum Enum1426 @Directive44(argument97 : ["stringValue26951"]) { + EnumValue26851 + EnumValue26852 + EnumValue26853 + EnumValue26854 +} + +enum Enum1427 @Directive44(argument97 : ["stringValue26990"]) { + EnumValue26855 + EnumValue26856 + EnumValue26857 + EnumValue26858 + EnumValue26859 + EnumValue26860 + EnumValue26861 +} + +enum Enum1428 @Directive44(argument97 : ["stringValue26997"]) { + EnumValue26862 + EnumValue26863 + EnumValue26864 + EnumValue26865 + EnumValue26866 +} + +enum Enum1429 @Directive44(argument97 : ["stringValue27019"]) { + EnumValue26867 + EnumValue26868 + EnumValue26869 + EnumValue26870 + EnumValue26871 + EnumValue26872 + EnumValue26873 + EnumValue26874 +} + +enum Enum143 @Directive19(argument57 : "stringValue1464") @Directive22(argument62 : "stringValue1463") @Directive44(argument97 : ["stringValue1465", "stringValue1466"]) { + EnumValue3095 + EnumValue3096 + EnumValue3097 + EnumValue3098 +} + +enum Enum1430 @Directive44(argument97 : ["stringValue27021"]) { + EnumValue26875 + EnumValue26876 + EnumValue26877 + EnumValue26878 +} + +enum Enum1431 @Directive44(argument97 : ["stringValue27022"]) { + EnumValue26879 + EnumValue26880 + EnumValue26881 + EnumValue26882 + EnumValue26883 + EnumValue26884 + EnumValue26885 + EnumValue26886 + EnumValue26887 + EnumValue26888 + EnumValue26889 +} + +enum Enum1432 @Directive44(argument97 : ["stringValue27026"]) { + EnumValue26890 + EnumValue26891 + EnumValue26892 + EnumValue26893 + EnumValue26894 + EnumValue26895 + EnumValue26896 + EnumValue26897 + EnumValue26898 + EnumValue26899 + EnumValue26900 + EnumValue26901 + EnumValue26902 + EnumValue26903 + EnumValue26904 + EnumValue26905 + EnumValue26906 + EnumValue26907 + EnumValue26908 + EnumValue26909 + EnumValue26910 + EnumValue26911 + EnumValue26912 + EnumValue26913 + EnumValue26914 + EnumValue26915 + EnumValue26916 + EnumValue26917 + EnumValue26918 + EnumValue26919 + EnumValue26920 + EnumValue26921 + EnumValue26922 + EnumValue26923 + EnumValue26924 + EnumValue26925 + EnumValue26926 + EnumValue26927 + EnumValue26928 + EnumValue26929 + EnumValue26930 + EnumValue26931 + EnumValue26932 + EnumValue26933 + EnumValue26934 + EnumValue26935 + EnumValue26936 + EnumValue26937 + EnumValue26938 + EnumValue26939 + EnumValue26940 + EnumValue26941 + EnumValue26942 + EnumValue26943 + EnumValue26944 + EnumValue26945 + EnumValue26946 + EnumValue26947 + EnumValue26948 + EnumValue26949 + EnumValue26950 + EnumValue26951 + EnumValue26952 + EnumValue26953 + EnumValue26954 + EnumValue26955 + EnumValue26956 + EnumValue26957 + EnumValue26958 + EnumValue26959 + EnumValue26960 + EnumValue26961 + EnumValue26962 + EnumValue26963 + EnumValue26964 + EnumValue26965 + EnumValue26966 + EnumValue26967 + EnumValue26968 + EnumValue26969 + EnumValue26970 + EnumValue26971 + EnumValue26972 + EnumValue26973 + EnumValue26974 + EnumValue26975 + EnumValue26976 + EnumValue26977 + EnumValue26978 + EnumValue26979 + EnumValue26980 + EnumValue26981 + EnumValue26982 + EnumValue26983 + EnumValue26984 + EnumValue26985 + EnumValue26986 + EnumValue26987 + EnumValue26988 + EnumValue26989 + EnumValue26990 + EnumValue26991 + EnumValue26992 + EnumValue26993 + EnumValue26994 + EnumValue26995 + EnumValue26996 + EnumValue26997 + EnumValue26998 + EnumValue26999 + EnumValue27000 + EnumValue27001 + EnumValue27002 + EnumValue27003 + EnumValue27004 + EnumValue27005 + EnumValue27006 + EnumValue27007 + EnumValue27008 + EnumValue27009 + EnumValue27010 + EnumValue27011 + EnumValue27012 + EnumValue27013 + EnumValue27014 + EnumValue27015 + EnumValue27016 + EnumValue27017 + EnumValue27018 + EnumValue27019 + EnumValue27020 + EnumValue27021 + EnumValue27022 + EnumValue27023 + EnumValue27024 + EnumValue27025 + EnumValue27026 + EnumValue27027 + EnumValue27028 + EnumValue27029 + EnumValue27030 + EnumValue27031 + EnumValue27032 + EnumValue27033 + EnumValue27034 + EnumValue27035 + EnumValue27036 + EnumValue27037 + EnumValue27038 + EnumValue27039 + EnumValue27040 + EnumValue27041 + EnumValue27042 + EnumValue27043 + EnumValue27044 + EnumValue27045 + EnumValue27046 + EnumValue27047 + EnumValue27048 + EnumValue27049 + EnumValue27050 + EnumValue27051 + EnumValue27052 + EnumValue27053 + EnumValue27054 + EnumValue27055 + EnumValue27056 + EnumValue27057 + EnumValue27058 + EnumValue27059 + EnumValue27060 + EnumValue27061 + EnumValue27062 + EnumValue27063 + EnumValue27064 + EnumValue27065 + EnumValue27066 + EnumValue27067 + EnumValue27068 + EnumValue27069 + EnumValue27070 + EnumValue27071 + EnumValue27072 + EnumValue27073 + EnumValue27074 + EnumValue27075 + EnumValue27076 + EnumValue27077 + EnumValue27078 + EnumValue27079 + EnumValue27080 + EnumValue27081 + EnumValue27082 + EnumValue27083 + EnumValue27084 + EnumValue27085 + EnumValue27086 + EnumValue27087 + EnumValue27088 + EnumValue27089 + EnumValue27090 + EnumValue27091 + EnumValue27092 + EnumValue27093 + EnumValue27094 + EnumValue27095 + EnumValue27096 + EnumValue27097 + EnumValue27098 + EnumValue27099 + EnumValue27100 + EnumValue27101 + EnumValue27102 + EnumValue27103 + EnumValue27104 + EnumValue27105 + EnumValue27106 + EnumValue27107 + EnumValue27108 + EnumValue27109 + EnumValue27110 + EnumValue27111 + EnumValue27112 + EnumValue27113 + EnumValue27114 + EnumValue27115 + EnumValue27116 + EnumValue27117 + EnumValue27118 + EnumValue27119 + EnumValue27120 + EnumValue27121 + EnumValue27122 + EnumValue27123 + EnumValue27124 + EnumValue27125 + EnumValue27126 + EnumValue27127 + EnumValue27128 + EnumValue27129 + EnumValue27130 + EnumValue27131 + EnumValue27132 + EnumValue27133 + EnumValue27134 + EnumValue27135 + EnumValue27136 + EnumValue27137 + EnumValue27138 + EnumValue27139 + EnumValue27140 + EnumValue27141 + EnumValue27142 + EnumValue27143 + EnumValue27144 + EnumValue27145 + EnumValue27146 + EnumValue27147 + EnumValue27148 + EnumValue27149 + EnumValue27150 + EnumValue27151 + EnumValue27152 + EnumValue27153 + EnumValue27154 + EnumValue27155 + EnumValue27156 + EnumValue27157 + EnumValue27158 + EnumValue27159 + EnumValue27160 + EnumValue27161 + EnumValue27162 + EnumValue27163 + EnumValue27164 + EnumValue27165 + EnumValue27166 + EnumValue27167 + EnumValue27168 + EnumValue27169 + EnumValue27170 + EnumValue27171 + EnumValue27172 + EnumValue27173 + EnumValue27174 + EnumValue27175 + EnumValue27176 + EnumValue27177 + EnumValue27178 + EnumValue27179 + EnumValue27180 + EnumValue27181 + EnumValue27182 + EnumValue27183 + EnumValue27184 + EnumValue27185 + EnumValue27186 + EnumValue27187 + EnumValue27188 + EnumValue27189 + EnumValue27190 + EnumValue27191 + EnumValue27192 + EnumValue27193 + EnumValue27194 + EnumValue27195 + EnumValue27196 + EnumValue27197 + EnumValue27198 + EnumValue27199 + EnumValue27200 + EnumValue27201 + EnumValue27202 + EnumValue27203 + EnumValue27204 + EnumValue27205 + EnumValue27206 + EnumValue27207 + EnumValue27208 + EnumValue27209 + EnumValue27210 + EnumValue27211 + EnumValue27212 + EnumValue27213 + EnumValue27214 + EnumValue27215 + EnumValue27216 + EnumValue27217 + EnumValue27218 + EnumValue27219 + EnumValue27220 + EnumValue27221 + EnumValue27222 + EnumValue27223 + EnumValue27224 + EnumValue27225 + EnumValue27226 + EnumValue27227 + EnumValue27228 + EnumValue27229 + EnumValue27230 + EnumValue27231 + EnumValue27232 + EnumValue27233 + EnumValue27234 + EnumValue27235 + EnumValue27236 + EnumValue27237 + EnumValue27238 + EnumValue27239 + EnumValue27240 + EnumValue27241 + EnumValue27242 + EnumValue27243 + EnumValue27244 + EnumValue27245 + EnumValue27246 + EnumValue27247 + EnumValue27248 + EnumValue27249 + EnumValue27250 + EnumValue27251 + EnumValue27252 + EnumValue27253 + EnumValue27254 + EnumValue27255 + EnumValue27256 + EnumValue27257 + EnumValue27258 + EnumValue27259 + EnumValue27260 + EnumValue27261 + EnumValue27262 + EnumValue27263 + EnumValue27264 + EnumValue27265 + EnumValue27266 + EnumValue27267 + EnumValue27268 + EnumValue27269 + EnumValue27270 + EnumValue27271 + EnumValue27272 + EnumValue27273 + EnumValue27274 + EnumValue27275 + EnumValue27276 + EnumValue27277 + EnumValue27278 + EnumValue27279 + EnumValue27280 + EnumValue27281 + EnumValue27282 + EnumValue27283 + EnumValue27284 + EnumValue27285 + EnumValue27286 + EnumValue27287 + EnumValue27288 + EnumValue27289 + EnumValue27290 + EnumValue27291 + EnumValue27292 + EnumValue27293 + EnumValue27294 + EnumValue27295 + EnumValue27296 + EnumValue27297 + EnumValue27298 + EnumValue27299 + EnumValue27300 + EnumValue27301 + EnumValue27302 + EnumValue27303 + EnumValue27304 + EnumValue27305 + EnumValue27306 + EnumValue27307 + EnumValue27308 + EnumValue27309 + EnumValue27310 + EnumValue27311 + EnumValue27312 + EnumValue27313 + EnumValue27314 + EnumValue27315 + EnumValue27316 + EnumValue27317 + EnumValue27318 + EnumValue27319 + EnumValue27320 + EnumValue27321 + EnumValue27322 + EnumValue27323 + EnumValue27324 + EnumValue27325 + EnumValue27326 + EnumValue27327 + EnumValue27328 + EnumValue27329 + EnumValue27330 + EnumValue27331 + EnumValue27332 + EnumValue27333 + EnumValue27334 + EnumValue27335 + EnumValue27336 + EnumValue27337 + EnumValue27338 + EnumValue27339 + EnumValue27340 + EnumValue27341 + EnumValue27342 + EnumValue27343 + EnumValue27344 + EnumValue27345 + EnumValue27346 + EnumValue27347 + EnumValue27348 + EnumValue27349 + EnumValue27350 + EnumValue27351 + EnumValue27352 + EnumValue27353 + EnumValue27354 + EnumValue27355 + EnumValue27356 + EnumValue27357 + EnumValue27358 + EnumValue27359 + EnumValue27360 + EnumValue27361 + EnumValue27362 + EnumValue27363 + EnumValue27364 + EnumValue27365 + EnumValue27366 + EnumValue27367 + EnumValue27368 + EnumValue27369 + EnumValue27370 + EnumValue27371 + EnumValue27372 + EnumValue27373 + EnumValue27374 + EnumValue27375 + EnumValue27376 + EnumValue27377 + EnumValue27378 + EnumValue27379 + EnumValue27380 + EnumValue27381 + EnumValue27382 + EnumValue27383 + EnumValue27384 + EnumValue27385 + EnumValue27386 + EnumValue27387 + EnumValue27388 + EnumValue27389 + EnumValue27390 + EnumValue27391 + EnumValue27392 + EnumValue27393 + EnumValue27394 + EnumValue27395 + EnumValue27396 + EnumValue27397 + EnumValue27398 + EnumValue27399 + EnumValue27400 + EnumValue27401 + EnumValue27402 + EnumValue27403 + EnumValue27404 + EnumValue27405 + EnumValue27406 + EnumValue27407 + EnumValue27408 + EnumValue27409 + EnumValue27410 + EnumValue27411 + EnumValue27412 + EnumValue27413 + EnumValue27414 + EnumValue27415 + EnumValue27416 + EnumValue27417 + EnumValue27418 + EnumValue27419 + EnumValue27420 + EnumValue27421 + EnumValue27422 + EnumValue27423 + EnumValue27424 + EnumValue27425 + EnumValue27426 + EnumValue27427 + EnumValue27428 + EnumValue27429 + EnumValue27430 + EnumValue27431 + EnumValue27432 + EnumValue27433 + EnumValue27434 + EnumValue27435 + EnumValue27436 + EnumValue27437 + EnumValue27438 + EnumValue27439 + EnumValue27440 + EnumValue27441 + EnumValue27442 + EnumValue27443 + EnumValue27444 + EnumValue27445 + EnumValue27446 + EnumValue27447 + EnumValue27448 + EnumValue27449 + EnumValue27450 + EnumValue27451 + EnumValue27452 + EnumValue27453 + EnumValue27454 + EnumValue27455 + EnumValue27456 + EnumValue27457 + EnumValue27458 + EnumValue27459 + EnumValue27460 + EnumValue27461 + EnumValue27462 + EnumValue27463 + EnumValue27464 + EnumValue27465 + EnumValue27466 + EnumValue27467 + EnumValue27468 + EnumValue27469 + EnumValue27470 + EnumValue27471 + EnumValue27472 + EnumValue27473 + EnumValue27474 + EnumValue27475 + EnumValue27476 + EnumValue27477 + EnumValue27478 + EnumValue27479 + EnumValue27480 + EnumValue27481 + EnumValue27482 + EnumValue27483 + EnumValue27484 + EnumValue27485 + EnumValue27486 + EnumValue27487 + EnumValue27488 + EnumValue27489 + EnumValue27490 + EnumValue27491 + EnumValue27492 + EnumValue27493 + EnumValue27494 + EnumValue27495 + EnumValue27496 + EnumValue27497 + EnumValue27498 + EnumValue27499 + EnumValue27500 + EnumValue27501 + EnumValue27502 + EnumValue27503 + EnumValue27504 + EnumValue27505 + EnumValue27506 + EnumValue27507 + EnumValue27508 + EnumValue27509 + EnumValue27510 + EnumValue27511 + EnumValue27512 + EnumValue27513 + EnumValue27514 + EnumValue27515 + EnumValue27516 + EnumValue27517 + EnumValue27518 + EnumValue27519 + EnumValue27520 + EnumValue27521 + EnumValue27522 + EnumValue27523 + EnumValue27524 + EnumValue27525 + EnumValue27526 + EnumValue27527 + EnumValue27528 + EnumValue27529 + EnumValue27530 + EnumValue27531 + EnumValue27532 + EnumValue27533 + EnumValue27534 + EnumValue27535 + EnumValue27536 + EnumValue27537 + EnumValue27538 + EnumValue27539 + EnumValue27540 + EnumValue27541 + EnumValue27542 + EnumValue27543 + EnumValue27544 + EnumValue27545 + EnumValue27546 + EnumValue27547 + EnumValue27548 + EnumValue27549 + EnumValue27550 +} + +enum Enum1433 @Directive44(argument97 : ["stringValue27028"]) { + EnumValue27551 + EnumValue27552 + EnumValue27553 + EnumValue27554 + EnumValue27555 + EnumValue27556 + EnumValue27557 + EnumValue27558 +} + +enum Enum1434 @Directive44(argument97 : ["stringValue27032"]) { + EnumValue27559 + EnumValue27560 + EnumValue27561 + EnumValue27562 + EnumValue27563 + EnumValue27564 + EnumValue27565 + EnumValue27566 + EnumValue27567 + EnumValue27568 + EnumValue27569 +} + +enum Enum1435 @Directive44(argument97 : ["stringValue27036"]) { + EnumValue27570 + EnumValue27571 + EnumValue27572 + EnumValue27573 +} + +enum Enum1436 @Directive44(argument97 : ["stringValue27069"]) { + EnumValue27574 + EnumValue27575 + EnumValue27576 + EnumValue27577 + EnumValue27578 + EnumValue27579 + EnumValue27580 + EnumValue27581 + EnumValue27582 + EnumValue27583 + EnumValue27584 + EnumValue27585 + EnumValue27586 + EnumValue27587 +} + +enum Enum1437 @Directive44(argument97 : ["stringValue27071"]) { + EnumValue27588 + EnumValue27589 + EnumValue27590 + EnumValue27591 + EnumValue27592 + EnumValue27593 + EnumValue27594 + EnumValue27595 +} + +enum Enum1438 @Directive44(argument97 : ["stringValue27072"]) { + EnumValue27596 + EnumValue27597 + EnumValue27598 + EnumValue27599 + EnumValue27600 + EnumValue27601 + EnumValue27602 +} + +enum Enum1439 @Directive44(argument97 : ["stringValue27108"]) { + EnumValue27603 + EnumValue27604 + EnumValue27605 + EnumValue27606 +} + +enum Enum144 @Directive19(argument57 : "stringValue1468") @Directive22(argument62 : "stringValue1467") @Directive44(argument97 : ["stringValue1469", "stringValue1470"]) { + EnumValue3099 + EnumValue3100 + EnumValue3101 +} + +enum Enum1440 @Directive44(argument97 : ["stringValue27130"]) { + EnumValue27607 + EnumValue27608 + EnumValue27609 + EnumValue27610 + EnumValue27611 + EnumValue27612 + EnumValue27613 + EnumValue27614 + EnumValue27615 +} + +enum Enum1441 @Directive44(argument97 : ["stringValue27169"]) { + EnumValue27616 + EnumValue27617 + EnumValue27618 + EnumValue27619 + EnumValue27620 + EnumValue27621 + EnumValue27622 + EnumValue27623 + EnumValue27624 + EnumValue27625 + EnumValue27626 + EnumValue27627 + EnumValue27628 + EnumValue27629 + EnumValue27630 + EnumValue27631 + EnumValue27632 + EnumValue27633 + EnumValue27634 + EnumValue27635 + EnumValue27636 + EnumValue27637 + EnumValue27638 + EnumValue27639 + EnumValue27640 + EnumValue27641 + EnumValue27642 + EnumValue27643 + EnumValue27644 + EnumValue27645 + EnumValue27646 + EnumValue27647 + EnumValue27648 + EnumValue27649 + EnumValue27650 + EnumValue27651 + EnumValue27652 + EnumValue27653 + EnumValue27654 + EnumValue27655 + EnumValue27656 + EnumValue27657 + EnumValue27658 + EnumValue27659 + EnumValue27660 + EnumValue27661 + EnumValue27662 + EnumValue27663 + EnumValue27664 + EnumValue27665 +} + +enum Enum1442 @Directive44(argument97 : ["stringValue27174"]) { + EnumValue27666 + EnumValue27667 + EnumValue27668 + EnumValue27669 + EnumValue27670 +} + +enum Enum1443 @Directive44(argument97 : ["stringValue27189"]) { + EnumValue27671 + EnumValue27672 + EnumValue27673 + EnumValue27674 + EnumValue27675 + EnumValue27676 + EnumValue27677 + EnumValue27678 +} + +enum Enum1444 @Directive44(argument97 : ["stringValue27191"]) { + EnumValue27679 + EnumValue27680 + EnumValue27681 + EnumValue27682 + EnumValue27683 + EnumValue27684 + EnumValue27685 + EnumValue27686 +} + +enum Enum1445 @Directive44(argument97 : ["stringValue27222"]) { + EnumValue27687 + EnumValue27688 + EnumValue27689 + EnumValue27690 + EnumValue27691 + EnumValue27692 + EnumValue27693 + EnumValue27694 +} + +enum Enum1446 @Directive44(argument97 : ["stringValue27223"]) { + EnumValue27695 + EnumValue27696 + EnumValue27697 + EnumValue27698 + EnumValue27699 + EnumValue27700 + EnumValue27701 +} + +enum Enum1447 @Directive44(argument97 : ["stringValue27224"]) { + EnumValue27702 + EnumValue27703 + EnumValue27704 + EnumValue27705 + EnumValue27706 + EnumValue27707 + EnumValue27708 +} + +enum Enum1448 @Directive44(argument97 : ["stringValue27225"]) { + EnumValue27709 + EnumValue27710 + EnumValue27711 + EnumValue27712 +} + +enum Enum1449 @Directive44(argument97 : ["stringValue27237"]) { + EnumValue27713 + EnumValue27714 + EnumValue27715 + EnumValue27716 + EnumValue27717 + EnumValue27718 + EnumValue27719 + EnumValue27720 + EnumValue27721 + EnumValue27722 + EnumValue27723 + EnumValue27724 + EnumValue27725 + EnumValue27726 +} + +enum Enum145 @Directive19(argument57 : "stringValue1474") @Directive22(argument62 : "stringValue1473") @Directive44(argument97 : ["stringValue1475", "stringValue1476"]) { + EnumValue3102 + EnumValue3103 + EnumValue3104 +} + +enum Enum1450 @Directive44(argument97 : ["stringValue27238"]) { + EnumValue27727 + EnumValue27728 + EnumValue27729 + EnumValue27730 + EnumValue27731 + EnumValue27732 + EnumValue27733 + EnumValue27734 + EnumValue27735 + EnumValue27736 + EnumValue27737 + EnumValue27738 + EnumValue27739 +} + +enum Enum1451 @Directive44(argument97 : ["stringValue27239"]) { + EnumValue27740 + EnumValue27741 + EnumValue27742 + EnumValue27743 + EnumValue27744 + EnumValue27745 + EnumValue27746 + EnumValue27747 + EnumValue27748 + EnumValue27749 + EnumValue27750 + EnumValue27751 + EnumValue27752 + EnumValue27753 + EnumValue27754 + EnumValue27755 + EnumValue27756 + EnumValue27757 + EnumValue27758 + EnumValue27759 + EnumValue27760 + EnumValue27761 + EnumValue27762 + EnumValue27763 + EnumValue27764 +} + +enum Enum1452 @Directive44(argument97 : ["stringValue27244"]) { + EnumValue27765 + EnumValue27766 + EnumValue27767 + EnumValue27768 +} + +enum Enum1453 @Directive44(argument97 : ["stringValue27271"]) { + EnumValue27769 + EnumValue27770 + EnumValue27771 + EnumValue27772 + EnumValue27773 +} + +enum Enum1454 @Directive44(argument97 : ["stringValue27294"]) { + EnumValue27774 + EnumValue27775 + EnumValue27776 + EnumValue27777 +} + +enum Enum1455 @Directive44(argument97 : ["stringValue27312"]) { + EnumValue27778 + EnumValue27779 + EnumValue27780 +} + +enum Enum1456 @Directive44(argument97 : ["stringValue27315"]) { + EnumValue27781 + EnumValue27782 + EnumValue27783 + EnumValue27784 + EnumValue27785 + EnumValue27786 + EnumValue27787 + EnumValue27788 + EnumValue27789 + EnumValue27790 + EnumValue27791 +} + +enum Enum1457 @Directive44(argument97 : ["stringValue27336"]) { + EnumValue27792 + EnumValue27793 + EnumValue27794 + EnumValue27795 + EnumValue27796 + EnumValue27797 + EnumValue27798 + EnumValue27799 + EnumValue27800 + EnumValue27801 + EnumValue27802 + EnumValue27803 + EnumValue27804 + EnumValue27805 +} + +enum Enum1458 @Directive44(argument97 : ["stringValue27341"]) { + EnumValue27806 + EnumValue27807 + EnumValue27808 + EnumValue27809 + EnumValue27810 +} + +enum Enum1459 @Directive44(argument97 : ["stringValue27342"]) { + EnumValue27811 + EnumValue27812 + EnumValue27813 + EnumValue27814 + EnumValue27815 + EnumValue27816 +} + +enum Enum146 @Directive22(argument62 : "stringValue1505") @Directive44(argument97 : ["stringValue1506", "stringValue1507"]) { + EnumValue3105 + EnumValue3106 + EnumValue3107 + EnumValue3108 + EnumValue3109 + EnumValue3110 + EnumValue3111 + EnumValue3112 + EnumValue3113 + EnumValue3114 + EnumValue3115 + EnumValue3116 +} + +enum Enum1460 @Directive44(argument97 : ["stringValue27343"]) { + EnumValue27817 + EnumValue27818 + EnumValue27819 + EnumValue27820 + EnumValue27821 + EnumValue27822 +} + +enum Enum1461 @Directive44(argument97 : ["stringValue27344"]) { + EnumValue27823 + EnumValue27824 + EnumValue27825 + EnumValue27826 + EnumValue27827 + EnumValue27828 + EnumValue27829 + EnumValue27830 + EnumValue27831 + EnumValue27832 + EnumValue27833 + EnumValue27834 + EnumValue27835 + EnumValue27836 +} + +enum Enum1462 @Directive44(argument97 : ["stringValue27347"]) { + EnumValue27837 + EnumValue27838 +} + +enum Enum1463 @Directive44(argument97 : ["stringValue27348"]) { + EnumValue27839 + EnumValue27840 + EnumValue27841 + EnumValue27842 + EnumValue27843 + EnumValue27844 + EnumValue27845 + EnumValue27846 + EnumValue27847 + EnumValue27848 + EnumValue27849 + EnumValue27850 + EnumValue27851 +} + +enum Enum1464 @Directive44(argument97 : ["stringValue27353"]) { + EnumValue27852 + EnumValue27853 + EnumValue27854 + EnumValue27855 + EnumValue27856 +} + +enum Enum1465 @Directive44(argument97 : ["stringValue27366"]) { + EnumValue27857 + EnumValue27858 + EnumValue27859 +} + +enum Enum1466 @Directive44(argument97 : ["stringValue27375"]) { + EnumValue27860 + EnumValue27861 + EnumValue27862 +} + +enum Enum1467 @Directive44(argument97 : ["stringValue27384"]) { + EnumValue27863 + EnumValue27864 + EnumValue27865 + EnumValue27866 + EnumValue27867 + EnumValue27868 + EnumValue27869 + EnumValue27870 +} + +enum Enum1468 @Directive44(argument97 : ["stringValue27385"]) { + EnumValue27871 + EnumValue27872 + EnumValue27873 + EnumValue27874 + EnumValue27875 + EnumValue27876 + EnumValue27877 + EnumValue27878 + EnumValue27879 + EnumValue27880 + EnumValue27881 + EnumValue27882 + EnumValue27883 +} + +enum Enum1469 @Directive44(argument97 : ["stringValue27386"]) { + EnumValue27884 + EnumValue27885 + EnumValue27886 + EnumValue27887 + EnumValue27888 + EnumValue27889 + EnumValue27890 +} + +enum Enum147 @Directive19(argument57 : "stringValue1520") @Directive22(argument62 : "stringValue1519") @Directive44(argument97 : ["stringValue1521", "stringValue1522"]) { + EnumValue3117 + EnumValue3118 + EnumValue3119 +} + +enum Enum1470 @Directive44(argument97 : ["stringValue27387"]) { + EnumValue27891 + EnumValue27892 + EnumValue27893 + EnumValue27894 + EnumValue27895 +} + +enum Enum1471 @Directive44(argument97 : ["stringValue27388"]) { + EnumValue27896 + EnumValue27897 + EnumValue27898 + EnumValue27899 + EnumValue27900 + EnumValue27901 + EnumValue27902 +} + +enum Enum1472 @Directive44(argument97 : ["stringValue27414"]) { + EnumValue27903 + EnumValue27904 + EnumValue27905 +} + +enum Enum1473 @Directive44(argument97 : ["stringValue27415"]) { + EnumValue27906 + EnumValue27907 + EnumValue27908 + EnumValue27909 + EnumValue27910 +} + +enum Enum1474 @Directive44(argument97 : ["stringValue27418"]) { + EnumValue27911 + EnumValue27912 + EnumValue27913 +} + +enum Enum1475 @Directive44(argument97 : ["stringValue27421"]) { + EnumValue27914 + EnumValue27915 + EnumValue27916 + EnumValue27917 +} + +enum Enum1476 @Directive44(argument97 : ["stringValue27438"]) { + EnumValue27918 + EnumValue27919 + EnumValue27920 + EnumValue27921 + EnumValue27922 + EnumValue27923 +} + +enum Enum1477 @Directive44(argument97 : ["stringValue27439"]) { + EnumValue27924 + EnumValue27925 + EnumValue27926 + EnumValue27927 + EnumValue27928 +} + +enum Enum1478 @Directive44(argument97 : ["stringValue27453"]) { + EnumValue27929 + EnumValue27930 + EnumValue27931 + EnumValue27932 + EnumValue27933 + EnumValue27934 +} + +enum Enum1479 @Directive44(argument97 : ["stringValue27458"]) { + EnumValue27935 + EnumValue27936 + EnumValue27937 + EnumValue27938 + EnumValue27939 + EnumValue27940 + EnumValue27941 +} + +enum Enum148 @Directive19(argument57 : "stringValue1532") @Directive22(argument62 : "stringValue1531") @Directive44(argument97 : ["stringValue1533", "stringValue1534"]) { + EnumValue3120 + EnumValue3121 + EnumValue3122 + EnumValue3123 +} + +enum Enum1480 @Directive44(argument97 : ["stringValue27505"]) { + EnumValue27942 + EnumValue27943 + EnumValue27944 +} + +enum Enum1481 @Directive44(argument97 : ["stringValue27514"]) { + EnumValue27945 + EnumValue27946 + EnumValue27947 + EnumValue27948 +} + +enum Enum1482 @Directive44(argument97 : ["stringValue27631"]) { + EnumValue27949 + EnumValue27950 + EnumValue27951 + EnumValue27952 +} + +enum Enum1483 @Directive44(argument97 : ["stringValue27632"]) { + EnumValue27953 + EnumValue27954 + EnumValue27955 + EnumValue27956 + EnumValue27957 + EnumValue27958 +} + +enum Enum1484 @Directive44(argument97 : ["stringValue27684"]) { + EnumValue27959 + EnumValue27960 + EnumValue27961 + EnumValue27962 + EnumValue27963 +} + +enum Enum1485 @Directive44(argument97 : ["stringValue27705"]) { + EnumValue27964 + EnumValue27965 + EnumValue27966 + EnumValue27967 + EnumValue27968 +} + +enum Enum1486 @Directive44(argument97 : ["stringValue27706"]) { + EnumValue27969 + EnumValue27970 + EnumValue27971 + EnumValue27972 + EnumValue27973 + EnumValue27974 +} + +enum Enum1487 @Directive44(argument97 : ["stringValue27754"]) { + EnumValue27975 + EnumValue27976 + EnumValue27977 +} + +enum Enum1488 @Directive44(argument97 : ["stringValue27872"]) { + EnumValue27978 + EnumValue27979 + EnumValue27980 + EnumValue27981 +} + +enum Enum1489 @Directive44(argument97 : ["stringValue27884"]) { + EnumValue27982 + EnumValue27983 + EnumValue27984 + EnumValue27985 + EnumValue27986 +} + +enum Enum149 @Directive22(argument62 : "stringValue1544") @Directive44(argument97 : ["stringValue1545", "stringValue1546"]) { + EnumValue3124 + EnumValue3125 + EnumValue3126 +} + +enum Enum1490 @Directive44(argument97 : ["stringValue27889"]) { + EnumValue27987 + EnumValue27988 + EnumValue27989 + EnumValue27990 + EnumValue27991 + EnumValue27992 + EnumValue27993 + EnumValue27994 + EnumValue27995 + EnumValue27996 + EnumValue27997 + EnumValue27998 + EnumValue27999 + EnumValue28000 + EnumValue28001 + EnumValue28002 + EnumValue28003 + EnumValue28004 + EnumValue28005 + EnumValue28006 + EnumValue28007 + EnumValue28008 + EnumValue28009 + EnumValue28010 + EnumValue28011 + EnumValue28012 + EnumValue28013 + EnumValue28014 + EnumValue28015 + EnumValue28016 + EnumValue28017 + EnumValue28018 + EnumValue28019 + EnumValue28020 + EnumValue28021 + EnumValue28022 + EnumValue28023 + EnumValue28024 + EnumValue28025 + EnumValue28026 + EnumValue28027 + EnumValue28028 + EnumValue28029 + EnumValue28030 + EnumValue28031 + EnumValue28032 + EnumValue28033 + EnumValue28034 + EnumValue28035 + EnumValue28036 + EnumValue28037 + EnumValue28038 + EnumValue28039 + EnumValue28040 + EnumValue28041 + EnumValue28042 + EnumValue28043 + EnumValue28044 + EnumValue28045 + EnumValue28046 + EnumValue28047 + EnumValue28048 + EnumValue28049 + EnumValue28050 + EnumValue28051 + EnumValue28052 + EnumValue28053 + EnumValue28054 + EnumValue28055 + EnumValue28056 + EnumValue28057 + EnumValue28058 +} + +enum Enum1491 @Directive44(argument97 : ["stringValue27910"]) { + EnumValue28059 + EnumValue28060 + EnumValue28061 +} + +enum Enum1492 @Directive44(argument97 : ["stringValue27990"]) { + EnumValue28062 + EnumValue28063 + EnumValue28064 + EnumValue28065 + EnumValue28066 + EnumValue28067 + EnumValue28068 +} + +enum Enum1493 @Directive44(argument97 : ["stringValue27993"]) { + EnumValue28069 + EnumValue28070 + EnumValue28071 + EnumValue28072 + EnumValue28073 +} + +enum Enum1494 @Directive44(argument97 : ["stringValue27994"]) { + EnumValue28074 + EnumValue28075 + EnumValue28076 +} + +enum Enum1495 @Directive44(argument97 : ["stringValue28045"]) { + EnumValue28077 + EnumValue28078 + EnumValue28079 +} + +enum Enum1496 @Directive44(argument97 : ["stringValue28049"]) { + EnumValue28080 + EnumValue28081 +} + +enum Enum1497 @Directive44(argument97 : ["stringValue28072"]) { + EnumValue28082 + EnumValue28083 + EnumValue28084 + EnumValue28085 + EnumValue28086 + EnumValue28087 + EnumValue28088 + EnumValue28089 + EnumValue28090 + EnumValue28091 + EnumValue28092 + EnumValue28093 + EnumValue28094 + EnumValue28095 + EnumValue28096 + EnumValue28097 + EnumValue28098 + EnumValue28099 + EnumValue28100 + EnumValue28101 +} + +enum Enum1498 @Directive44(argument97 : ["stringValue28073"]) { + EnumValue28102 + EnumValue28103 + EnumValue28104 + EnumValue28105 + EnumValue28106 + EnumValue28107 + EnumValue28108 +} + +enum Enum1499 @Directive44(argument97 : ["stringValue28163"]) { + EnumValue28109 + EnumValue28110 + EnumValue28111 +} + +enum Enum15 @Directive44(argument97 : ["stringValue156"]) { + EnumValue762 + EnumValue763 + EnumValue764 + EnumValue765 +} + +enum Enum150 @Directive22(argument62 : "stringValue1553") @Directive44(argument97 : ["stringValue1554", "stringValue1555"]) { + EnumValue3127 + EnumValue3128 + EnumValue3129 + EnumValue3130 + EnumValue3131 + EnumValue3132 + EnumValue3133 + EnumValue3134 + EnumValue3135 + EnumValue3136 +} + +enum Enum1500 @Directive44(argument97 : ["stringValue28164"]) { + EnumValue28112 + EnumValue28113 + EnumValue28114 +} + +enum Enum1501 @Directive44(argument97 : ["stringValue28193"]) { + EnumValue28115 + EnumValue28116 + EnumValue28117 + EnumValue28118 + EnumValue28119 + EnumValue28120 + EnumValue28121 + EnumValue28122 + EnumValue28123 + EnumValue28124 + EnumValue28125 + EnumValue28126 +} + +enum Enum1502 @Directive44(argument97 : ["stringValue28194"]) { + EnumValue28127 + EnumValue28128 + EnumValue28129 + EnumValue28130 + EnumValue28131 + EnumValue28132 + EnumValue28133 + EnumValue28134 + EnumValue28135 + EnumValue28136 + EnumValue28137 + EnumValue28138 + EnumValue28139 + EnumValue28140 +} + +enum Enum1503 @Directive44(argument97 : ["stringValue28211"]) { + EnumValue28141 + EnumValue28142 + EnumValue28143 + EnumValue28144 + EnumValue28145 + EnumValue28146 + EnumValue28147 + EnumValue28148 + EnumValue28149 + EnumValue28150 + EnumValue28151 + EnumValue28152 + EnumValue28153 + EnumValue28154 + EnumValue28155 + EnumValue28156 + EnumValue28157 + EnumValue28158 + EnumValue28159 + EnumValue28160 + EnumValue28161 + EnumValue28162 + EnumValue28163 + EnumValue28164 + EnumValue28165 + EnumValue28166 + EnumValue28167 + EnumValue28168 + EnumValue28169 + EnumValue28170 + EnumValue28171 +} + +enum Enum1504 @Directive44(argument97 : ["stringValue28218"]) { + EnumValue28172 + EnumValue28173 + EnumValue28174 + EnumValue28175 + EnumValue28176 +} + +enum Enum1505 @Directive44(argument97 : ["stringValue28221"]) { + EnumValue28177 + EnumValue28178 + EnumValue28179 + EnumValue28180 + EnumValue28181 + EnumValue28182 + EnumValue28183 +} + +enum Enum1506 @Directive44(argument97 : ["stringValue28226"]) { + EnumValue28184 + EnumValue28185 + EnumValue28186 + EnumValue28187 +} + +enum Enum1507 @Directive44(argument97 : ["stringValue28227"]) { + EnumValue28188 + EnumValue28189 + EnumValue28190 + EnumValue28191 + EnumValue28192 +} + +enum Enum1508 @Directive44(argument97 : ["stringValue28228"]) { + EnumValue28193 + EnumValue28194 + EnumValue28195 + EnumValue28196 + EnumValue28197 + EnumValue28198 + EnumValue28199 + EnumValue28200 + EnumValue28201 + EnumValue28202 + EnumValue28203 + EnumValue28204 +} + +enum Enum1509 @Directive44(argument97 : ["stringValue28229"]) { + EnumValue28205 + EnumValue28206 + EnumValue28207 + EnumValue28208 + EnumValue28209 + EnumValue28210 +} + +enum Enum151 @Directive22(argument62 : "stringValue1571") @Directive44(argument97 : ["stringValue1572", "stringValue1573"]) { + EnumValue3137 + EnumValue3138 + EnumValue3139 + EnumValue3140 +} + +enum Enum1510 @Directive44(argument97 : ["stringValue28230"]) { + EnumValue28211 + EnumValue28212 + EnumValue28213 + EnumValue28214 + EnumValue28215 + EnumValue28216 + EnumValue28217 + EnumValue28218 + EnumValue28219 + EnumValue28220 + EnumValue28221 + EnumValue28222 + EnumValue28223 + EnumValue28224 + EnumValue28225 +} + +enum Enum1511 @Directive44(argument97 : ["stringValue28276"]) { + EnumValue28226 + EnumValue28227 + EnumValue28228 + EnumValue28229 + EnumValue28230 + EnumValue28231 + EnumValue28232 + EnumValue28233 +} + +enum Enum1512 @Directive44(argument97 : ["stringValue28290"]) { + EnumValue28234 + EnumValue28235 + EnumValue28236 + EnumValue28237 +} + +enum Enum1513 @Directive44(argument97 : ["stringValue28388"]) { + EnumValue28238 + EnumValue28239 + EnumValue28240 + EnumValue28241 + EnumValue28242 + EnumValue28243 + EnumValue28244 + EnumValue28245 + EnumValue28246 + EnumValue28247 + EnumValue28248 + EnumValue28249 + EnumValue28250 + EnumValue28251 + EnumValue28252 + EnumValue28253 + EnumValue28254 +} + +enum Enum1514 @Directive44(argument97 : ["stringValue28389"]) { + EnumValue28255 + EnumValue28256 + EnumValue28257 +} + +enum Enum1515 @Directive44(argument97 : ["stringValue28393"]) { + EnumValue28258 + EnumValue28259 + EnumValue28260 + EnumValue28261 +} + +enum Enum1516 @Directive44(argument97 : ["stringValue28395"]) { + EnumValue28262 + EnumValue28263 + EnumValue28264 + EnumValue28265 +} + +enum Enum1517 @Directive44(argument97 : ["stringValue28397"]) { + EnumValue28266 + EnumValue28267 + EnumValue28268 +} + +enum Enum1518 @Directive44(argument97 : ["stringValue28398"]) { + EnumValue28269 + EnumValue28270 + EnumValue28271 +} + +enum Enum1519 @Directive44(argument97 : ["stringValue28399"]) { + EnumValue28272 + EnumValue28273 + EnumValue28274 + EnumValue28275 +} + +enum Enum152 @Directive22(argument62 : "stringValue1577") @Directive44(argument97 : ["stringValue1578", "stringValue1579"]) { + EnumValue3141 + EnumValue3142 + EnumValue3143 + EnumValue3144 + EnumValue3145 + EnumValue3146 + EnumValue3147 + EnumValue3148 + EnumValue3149 + EnumValue3150 + EnumValue3151 + EnumValue3152 + EnumValue3153 + EnumValue3154 + EnumValue3155 + EnumValue3156 + EnumValue3157 + EnumValue3158 + EnumValue3159 + EnumValue3160 + EnumValue3161 + EnumValue3162 + EnumValue3163 + EnumValue3164 + EnumValue3165 + EnumValue3166 + EnumValue3167 + EnumValue3168 + EnumValue3169 + EnumValue3170 + EnumValue3171 + EnumValue3172 + EnumValue3173 +} + +enum Enum1520 @Directive44(argument97 : ["stringValue28400"]) { + EnumValue28276 + EnumValue28277 + EnumValue28278 + EnumValue28279 + EnumValue28280 + EnumValue28281 +} + +enum Enum1521 @Directive44(argument97 : ["stringValue28425"]) { + EnumValue28282 + EnumValue28283 +} + +enum Enum1522 @Directive44(argument97 : ["stringValue28440"]) { + EnumValue28284 + EnumValue28285 + EnumValue28286 + EnumValue28287 + EnumValue28288 +} + +enum Enum1523 @Directive44(argument97 : ["stringValue28477"]) { + EnumValue28289 + EnumValue28290 + EnumValue28291 + EnumValue28292 + EnumValue28293 + EnumValue28294 + EnumValue28295 + EnumValue28296 + EnumValue28297 + EnumValue28298 + EnumValue28299 + EnumValue28300 + EnumValue28301 + EnumValue28302 + EnumValue28303 + EnumValue28304 + EnumValue28305 + EnumValue28306 + EnumValue28307 + EnumValue28308 + EnumValue28309 + EnumValue28310 + EnumValue28311 + EnumValue28312 + EnumValue28313 + EnumValue28314 + EnumValue28315 + EnumValue28316 + EnumValue28317 + EnumValue28318 + EnumValue28319 + EnumValue28320 + EnumValue28321 + EnumValue28322 + EnumValue28323 + EnumValue28324 +} + +enum Enum1524 @Directive44(argument97 : ["stringValue28484"]) { + EnumValue28325 + EnumValue28326 + EnumValue28327 + EnumValue28328 + EnumValue28329 + EnumValue28330 + EnumValue28331 + EnumValue28332 + EnumValue28333 + EnumValue28334 + EnumValue28335 + EnumValue28336 + EnumValue28337 + EnumValue28338 + EnumValue28339 + EnumValue28340 + EnumValue28341 + EnumValue28342 + EnumValue28343 + EnumValue28344 + EnumValue28345 + EnumValue28346 + EnumValue28347 + EnumValue28348 + EnumValue28349 + EnumValue28350 + EnumValue28351 + EnumValue28352 + EnumValue28353 + EnumValue28354 + EnumValue28355 + EnumValue28356 + EnumValue28357 + EnumValue28358 + EnumValue28359 + EnumValue28360 + EnumValue28361 + EnumValue28362 + EnumValue28363 + EnumValue28364 + EnumValue28365 + EnumValue28366 + EnumValue28367 + EnumValue28368 + EnumValue28369 + EnumValue28370 + EnumValue28371 + EnumValue28372 + EnumValue28373 + EnumValue28374 + EnumValue28375 + EnumValue28376 + EnumValue28377 + EnumValue28378 + EnumValue28379 + EnumValue28380 + EnumValue28381 + EnumValue28382 + EnumValue28383 + EnumValue28384 + EnumValue28385 + EnumValue28386 + EnumValue28387 + EnumValue28388 + EnumValue28389 + EnumValue28390 + EnumValue28391 + EnumValue28392 + EnumValue28393 + EnumValue28394 + EnumValue28395 + EnumValue28396 + EnumValue28397 + EnumValue28398 + EnumValue28399 + EnumValue28400 + EnumValue28401 + EnumValue28402 + EnumValue28403 + EnumValue28404 + EnumValue28405 + EnumValue28406 + EnumValue28407 + EnumValue28408 + EnumValue28409 + EnumValue28410 + EnumValue28411 + EnumValue28412 + EnumValue28413 + EnumValue28414 + EnumValue28415 + EnumValue28416 + EnumValue28417 + EnumValue28418 + EnumValue28419 + EnumValue28420 + EnumValue28421 + EnumValue28422 + EnumValue28423 + EnumValue28424 + EnumValue28425 +} + +enum Enum1525 @Directive44(argument97 : ["stringValue28503"]) { + EnumValue28426 + EnumValue28427 + EnumValue28428 + EnumValue28429 +} + +enum Enum1526 @Directive44(argument97 : ["stringValue28510"]) { + EnumValue28430 + EnumValue28431 + EnumValue28432 + EnumValue28433 + EnumValue28434 + EnumValue28435 + EnumValue28436 + EnumValue28437 + EnumValue28438 + EnumValue28439 + EnumValue28440 + EnumValue28441 + EnumValue28442 + EnumValue28443 + EnumValue28444 + EnumValue28445 + EnumValue28446 +} + +enum Enum1527 @Directive44(argument97 : ["stringValue28516"]) { + EnumValue28447 + EnumValue28448 + EnumValue28449 +} + +enum Enum1528 @Directive44(argument97 : ["stringValue28527"]) { + EnumValue28450 + EnumValue28451 + EnumValue28452 + EnumValue28453 + EnumValue28454 + EnumValue28455 + EnumValue28456 + EnumValue28457 + EnumValue28458 + EnumValue28459 + EnumValue28460 + EnumValue28461 + EnumValue28462 + EnumValue28463 + EnumValue28464 +} + +enum Enum1529 @Directive44(argument97 : ["stringValue28548"]) { + EnumValue28465 + EnumValue28466 + EnumValue28467 + EnumValue28468 + EnumValue28469 + EnumValue28470 + EnumValue28471 +} + +enum Enum153 @Directive22(argument62 : "stringValue1583") @Directive44(argument97 : ["stringValue1584", "stringValue1585"]) { + EnumValue3174 + EnumValue3175 + EnumValue3176 + EnumValue3177 +} + +enum Enum1530 @Directive44(argument97 : ["stringValue28549"]) { + EnumValue28472 + EnumValue28473 + EnumValue28474 + EnumValue28475 + EnumValue28476 + EnumValue28477 + EnumValue28478 + EnumValue28479 + EnumValue28480 +} + +enum Enum1531 @Directive44(argument97 : ["stringValue28559"]) { + EnumValue28481 + EnumValue28482 + EnumValue28483 + EnumValue28484 +} + +enum Enum1532 @Directive44(argument97 : ["stringValue28567"]) { + EnumValue28485 + EnumValue28486 + EnumValue28487 + EnumValue28488 + EnumValue28489 + EnumValue28490 +} + +enum Enum1533 @Directive44(argument97 : ["stringValue28574"]) { + EnumValue28491 + EnumValue28492 + EnumValue28493 + EnumValue28494 + EnumValue28495 +} + +enum Enum1534 @Directive44(argument97 : ["stringValue28582"]) { + EnumValue28496 + EnumValue28497 + EnumValue28498 +} + +enum Enum1535 @Directive44(argument97 : ["stringValue28583"]) { + EnumValue28499 + EnumValue28500 + EnumValue28501 +} + +enum Enum1536 @Directive44(argument97 : ["stringValue28596"]) { + EnumValue28502 + EnumValue28503 + EnumValue28504 + EnumValue28505 + EnumValue28506 + EnumValue28507 + EnumValue28508 + EnumValue28509 +} + +enum Enum1537 @Directive44(argument97 : ["stringValue28615"]) { + EnumValue28510 + EnumValue28511 + EnumValue28512 + EnumValue28513 + EnumValue28514 + EnumValue28515 + EnumValue28516 + EnumValue28517 + EnumValue28518 + EnumValue28519 + EnumValue28520 + EnumValue28521 +} + +enum Enum1538 @Directive44(argument97 : ["stringValue28616"]) { + EnumValue28522 + EnumValue28523 + EnumValue28524 + EnumValue28525 +} + +enum Enum1539 @Directive44(argument97 : ["stringValue28617"]) { + EnumValue28526 + EnumValue28527 + EnumValue28528 + EnumValue28529 + EnumValue28530 + EnumValue28531 + EnumValue28532 + EnumValue28533 + EnumValue28534 + EnumValue28535 + EnumValue28536 + EnumValue28537 + EnumValue28538 + EnumValue28539 + EnumValue28540 + EnumValue28541 + EnumValue28542 + EnumValue28543 + EnumValue28544 + EnumValue28545 + EnumValue28546 + EnumValue28547 + EnumValue28548 + EnumValue28549 + EnumValue28550 + EnumValue28551 + EnumValue28552 + EnumValue28553 + EnumValue28554 + EnumValue28555 + EnumValue28556 + EnumValue28557 + EnumValue28558 + EnumValue28559 + EnumValue28560 + EnumValue28561 + EnumValue28562 + EnumValue28563 + EnumValue28564 + EnumValue28565 + EnumValue28566 + EnumValue28567 + EnumValue28568 + EnumValue28569 + EnumValue28570 + EnumValue28571 + EnumValue28572 + EnumValue28573 + EnumValue28574 + EnumValue28575 + EnumValue28576 + EnumValue28577 + EnumValue28578 + EnumValue28579 + EnumValue28580 + EnumValue28581 + EnumValue28582 + EnumValue28583 + EnumValue28584 + EnumValue28585 + EnumValue28586 + EnumValue28587 + EnumValue28588 + EnumValue28589 + EnumValue28590 + EnumValue28591 + EnumValue28592 + EnumValue28593 + EnumValue28594 + EnumValue28595 + EnumValue28596 + EnumValue28597 + EnumValue28598 + EnumValue28599 + EnumValue28600 + EnumValue28601 +} + +enum Enum154 @Directive22(argument62 : "stringValue1595") @Directive44(argument97 : ["stringValue1596", "stringValue1597"]) { + EnumValue3178 @Directive50(argument103 : "stringValue1598") + EnumValue3179 @Directive50(argument103 : "stringValue1599") + EnumValue3180 @Directive50(argument103 : "stringValue1600") + EnumValue3181 @Directive50(argument103 : "stringValue1601") + EnumValue3182 @Directive50(argument103 : "stringValue1602") + EnumValue3183 @Directive50(argument103 : "stringValue1603") + EnumValue3184 @Directive50(argument103 : "stringValue1604") + EnumValue3185 @Directive50(argument103 : "stringValue1605") + EnumValue3186 @Directive50(argument103 : "stringValue1606") + EnumValue3187 @Directive50(argument103 : "stringValue1607") + EnumValue3188 @Directive50(argument103 : "stringValue1608") + EnumValue3189 @Directive50(argument103 : "stringValue1609") + EnumValue3190 @Directive50(argument103 : "stringValue1610") + EnumValue3191 @Directive50(argument103 : "stringValue1611") + EnumValue3192 @Directive50(argument103 : "stringValue1612") + EnumValue3193 @Directive50(argument103 : "stringValue1613") + EnumValue3194 @Directive50(argument103 : "stringValue1614") + EnumValue3195 @Directive50(argument103 : "stringValue1615") + EnumValue3196 @Directive50(argument103 : "stringValue1616") + EnumValue3197 + EnumValue3198 @Directive50(argument103 : "stringValue1617") + EnumValue3199 @Directive50(argument103 : "stringValue1618") + EnumValue3200 @Directive50(argument103 : "stringValue1619") + EnumValue3201 @Directive50(argument103 : "stringValue1620") + EnumValue3202 @Directive50(argument103 : "stringValue1621") + EnumValue3203 @Directive50(argument103 : "stringValue1622") + EnumValue3204 @Directive50(argument103 : "stringValue1623") + EnumValue3205 @Directive50(argument103 : "stringValue1624") + EnumValue3206 @Directive50(argument103 : "stringValue1625") + EnumValue3207 @Directive50(argument103 : "stringValue1626") + EnumValue3208 @Directive50(argument103 : "stringValue1627") + EnumValue3209 @Directive50(argument103 : "stringValue1628") + EnumValue3210 @Directive50(argument103 : "stringValue1629") + EnumValue3211 @Directive50(argument103 : "stringValue1630") + EnumValue3212 @Directive50(argument103 : "stringValue1631") + EnumValue3213 @Directive50(argument103 : "stringValue1632") + EnumValue3214 @Directive50(argument103 : "stringValue1633") + EnumValue3215 @Directive50(argument103 : "stringValue1634") + EnumValue3216 @Directive50(argument103 : "stringValue1635") + EnumValue3217 @Directive50(argument103 : "stringValue1636") + EnumValue3218 @Directive50(argument103 : "stringValue1637") + EnumValue3219 @Directive50(argument103 : "stringValue1638") + EnumValue3220 @Directive50(argument103 : "stringValue1639") + EnumValue3221 @Directive50(argument103 : "stringValue1640") + EnumValue3222 @Directive50(argument103 : "stringValue1641") + EnumValue3223 @Directive50(argument103 : "stringValue1642") + EnumValue3224 @Directive50(argument103 : "stringValue1643") + EnumValue3225 @Directive50(argument103 : "stringValue1644") + EnumValue3226 @Directive50(argument103 : "stringValue1645") + EnumValue3227 @Directive50(argument103 : "stringValue1646") + EnumValue3228 @Directive50(argument103 : "stringValue1647") + EnumValue3229 @Directive50(argument103 : "stringValue1648") + EnumValue3230 @Directive50(argument103 : "stringValue1649") + EnumValue3231 @Directive50(argument103 : "stringValue1650") + EnumValue3232 @Directive50(argument103 : "stringValue1651") + EnumValue3233 @Directive50(argument103 : "stringValue1652") + EnumValue3234 @Directive50(argument103 : "stringValue1653") + EnumValue3235 @Directive50(argument103 : "stringValue1654") + EnumValue3236 @Directive50(argument103 : "stringValue1655") + EnumValue3237 @Directive50(argument103 : "stringValue1656") + EnumValue3238 @Directive50(argument103 : "stringValue1657") + EnumValue3239 @Directive50(argument103 : "stringValue1658") + EnumValue3240 @Directive50(argument103 : "stringValue1659") + EnumValue3241 @Directive50(argument103 : "stringValue1660") + EnumValue3242 @Directive50(argument103 : "stringValue1661") + EnumValue3243 @Directive50(argument103 : "stringValue1662") + EnumValue3244 @Directive50(argument103 : "stringValue1663") + EnumValue3245 @Directive50(argument103 : "stringValue1664") + EnumValue3246 @Directive50(argument103 : "stringValue1665") + EnumValue3247 @Directive50(argument103 : "stringValue1666") + EnumValue3248 @Directive50(argument103 : "stringValue1667") + EnumValue3249 @Directive50(argument103 : "stringValue1668") + EnumValue3250 @Directive50(argument103 : "stringValue1669") + EnumValue3251 @Directive50(argument103 : "stringValue1670") + EnumValue3252 @Directive50(argument103 : "stringValue1671") + EnumValue3253 @Directive50(argument103 : "stringValue1672") + EnumValue3254 @Directive50(argument103 : "stringValue1673") + EnumValue3255 @Directive50(argument103 : "stringValue1674") + EnumValue3256 @Directive50(argument103 : "stringValue1675") + EnumValue3257 @Directive50(argument103 : "stringValue1676") + EnumValue3258 @Directive50(argument103 : "stringValue1677") + EnumValue3259 @Directive50(argument103 : "stringValue1678") + EnumValue3260 @Directive50(argument103 : "stringValue1679") + EnumValue3261 @Directive50(argument103 : "stringValue1680") + EnumValue3262 @Directive50(argument103 : "stringValue1681") + EnumValue3263 @Directive50(argument103 : "stringValue1682") + EnumValue3264 + EnumValue3265 @Directive50(argument103 : "stringValue1683") + EnumValue3266 @Directive50(argument103 : "stringValue1684") + EnumValue3267 @Directive50(argument103 : "stringValue1685") + EnumValue3268 @Directive50(argument103 : "stringValue1686") + EnumValue3269 @Directive50(argument103 : "stringValue1687") + EnumValue3270 @Directive50(argument103 : "stringValue1688") + EnumValue3271 @Directive50(argument103 : "stringValue1689") + EnumValue3272 @Directive50(argument103 : "stringValue1690") + EnumValue3273 @Directive50(argument103 : "stringValue1691") + EnumValue3274 @Directive50(argument103 : "stringValue1692") + EnumValue3275 @Directive50(argument103 : "stringValue1693") + EnumValue3276 @Directive50(argument103 : "stringValue1694") + EnumValue3277 @Directive50(argument103 : "stringValue1695") + EnumValue3278 @Directive50(argument103 : "stringValue1696") + EnumValue3279 @Directive50(argument103 : "stringValue1697") + EnumValue3280 @Directive50(argument103 : "stringValue1698") + EnumValue3281 @Directive50(argument103 : "stringValue1699") + EnumValue3282 @Directive50(argument103 : "stringValue1700") + EnumValue3283 @Directive50(argument103 : "stringValue1701") + EnumValue3284 @Directive50(argument103 : "stringValue1702") + EnumValue3285 @Directive50(argument103 : "stringValue1703") + EnumValue3286 @Directive50(argument103 : "stringValue1704") + EnumValue3287 @Directive50(argument103 : "stringValue1705") + EnumValue3288 @Directive50(argument103 : "stringValue1706") + EnumValue3289 @Directive50(argument103 : "stringValue1707") + EnumValue3290 @Directive50(argument103 : "stringValue1708") + EnumValue3291 @Directive50(argument103 : "stringValue1709") + EnumValue3292 @Directive50(argument103 : "stringValue1710") + EnumValue3293 @Directive50(argument103 : "stringValue1711") + EnumValue3294 @Directive50(argument103 : "stringValue1712") + EnumValue3295 @Directive50(argument103 : "stringValue1713") + EnumValue3296 @Directive50(argument103 : "stringValue1714") + EnumValue3297 @Directive50(argument103 : "stringValue1715") + EnumValue3298 @Directive50(argument103 : "stringValue1716") + EnumValue3299 @Directive50(argument103 : "stringValue1717") + EnumValue3300 @Directive50(argument103 : "stringValue1718") + EnumValue3301 @Directive50(argument103 : "stringValue1719") + EnumValue3302 @Directive50(argument103 : "stringValue1720") + EnumValue3303 @Directive50(argument103 : "stringValue1721") + EnumValue3304 @Directive50(argument103 : "stringValue1722") + EnumValue3305 @Directive50(argument103 : "stringValue1723") + EnumValue3306 @Directive50(argument103 : "stringValue1724") + EnumValue3307 @Directive50(argument103 : "stringValue1725") + EnumValue3308 @Directive50(argument103 : "stringValue1726") + EnumValue3309 @Directive50(argument103 : "stringValue1727") + EnumValue3310 @Directive50(argument103 : "stringValue1728") + EnumValue3311 @Directive50(argument103 : "stringValue1729") + EnumValue3312 @Directive50(argument103 : "stringValue1730") + EnumValue3313 @Directive50(argument103 : "stringValue1731") + EnumValue3314 @Directive50(argument103 : "stringValue1732") + EnumValue3315 @Directive50(argument103 : "stringValue1733") + EnumValue3316 @Directive50(argument103 : "stringValue1734") + EnumValue3317 @Directive50(argument103 : "stringValue1735") + EnumValue3318 @Directive50(argument103 : "stringValue1736") + EnumValue3319 @Directive50(argument103 : "stringValue1737") + EnumValue3320 @Directive50(argument103 : "stringValue1738") + EnumValue3321 @Directive50(argument103 : "stringValue1739") + EnumValue3322 @Directive50(argument103 : "stringValue1740") + EnumValue3323 @Directive50(argument103 : "stringValue1741") + EnumValue3324 @Directive50(argument103 : "stringValue1742") + EnumValue3325 @Directive50(argument103 : "stringValue1743") + EnumValue3326 @Directive50(argument103 : "stringValue1744") + EnumValue3327 @Directive50(argument103 : "stringValue1745") + EnumValue3328 @Directive50(argument103 : "stringValue1746") + EnumValue3329 @Directive50(argument103 : "stringValue1747") + EnumValue3330 @Directive50(argument103 : "stringValue1748") + EnumValue3331 @Directive50(argument103 : "stringValue1749") + EnumValue3332 @Directive50(argument103 : "stringValue1750") + EnumValue3333 @Directive50(argument103 : "stringValue1751") + EnumValue3334 @Directive50(argument103 : "stringValue1752") + EnumValue3335 @Directive50(argument103 : "stringValue1753") + EnumValue3336 @Directive50(argument103 : "stringValue1754") + EnumValue3337 @Directive50(argument103 : "stringValue1755") + EnumValue3338 @Directive50(argument103 : "stringValue1756") + EnumValue3339 @Directive50(argument103 : "stringValue1757") + EnumValue3340 @Directive50(argument103 : "stringValue1758") + EnumValue3341 @Directive50(argument103 : "stringValue1759") + EnumValue3342 @Directive50(argument103 : "stringValue1760") + EnumValue3343 @Directive50(argument103 : "stringValue1761") + EnumValue3344 @Directive50(argument103 : "stringValue1762") + EnumValue3345 @Directive50(argument103 : "stringValue1763") + EnumValue3346 @Directive50(argument103 : "stringValue1764") + EnumValue3347 @Directive50(argument103 : "stringValue1765") + EnumValue3348 @Directive50(argument103 : "stringValue1766") + EnumValue3349 @Directive50(argument103 : "stringValue1767") + EnumValue3350 @Directive50(argument103 : "stringValue1768") + EnumValue3351 @Directive50(argument103 : "stringValue1769") + EnumValue3352 @Directive50(argument103 : "stringValue1770") + EnumValue3353 @Directive50(argument103 : "stringValue1771") + EnumValue3354 @Directive50(argument103 : "stringValue1772") + EnumValue3355 @Directive50(argument103 : "stringValue1773") + EnumValue3356 @Directive50(argument103 : "stringValue1774") + EnumValue3357 @Directive50(argument103 : "stringValue1775") + EnumValue3358 @Directive50(argument103 : "stringValue1776") + EnumValue3359 @Directive50(argument103 : "stringValue1777") + EnumValue3360 @Directive50(argument103 : "stringValue1778") + EnumValue3361 @Directive50(argument103 : "stringValue1779") + EnumValue3362 @Directive50(argument103 : "stringValue1780") + EnumValue3363 @Directive50(argument103 : "stringValue1781") + EnumValue3364 @Directive50(argument103 : "stringValue1782") + EnumValue3365 @Directive50(argument103 : "stringValue1783") + EnumValue3366 @Directive50(argument103 : "stringValue1784") + EnumValue3367 @Directive50(argument103 : "stringValue1785") + EnumValue3368 + EnumValue3369 @Directive50(argument103 : "stringValue1786") + EnumValue3370 @Directive50(argument103 : "stringValue1787") + EnumValue3371 @Directive50(argument103 : "stringValue1788") + EnumValue3372 @Directive50(argument103 : "stringValue1789") + EnumValue3373 @Directive50(argument103 : "stringValue1790") + EnumValue3374 @Directive50(argument103 : "stringValue1791") + EnumValue3375 @Directive50(argument103 : "stringValue1792") + EnumValue3376 + EnumValue3377 @Directive50(argument103 : "stringValue1793") + EnumValue3378 @Directive50(argument103 : "stringValue1794") + EnumValue3379 @Directive50(argument103 : "stringValue1795") + EnumValue3380 @Directive50(argument103 : "stringValue1796") + EnumValue3381 @Directive50(argument103 : "stringValue1797") + EnumValue3382 @Directive50(argument103 : "stringValue1798") + EnumValue3383 @Directive50(argument103 : "stringValue1799") + EnumValue3384 @Directive50(argument103 : "stringValue1800") + EnumValue3385 @Directive50(argument103 : "stringValue1801") + EnumValue3386 @Directive50(argument103 : "stringValue1802") + EnumValue3387 @Directive50(argument103 : "stringValue1803") + EnumValue3388 @Directive50(argument103 : "stringValue1804") + EnumValue3389 @Directive50(argument103 : "stringValue1805") + EnumValue3390 @Directive50(argument103 : "stringValue1806") + EnumValue3391 @Directive50(argument103 : "stringValue1807") + EnumValue3392 @Directive50(argument103 : "stringValue1808") + EnumValue3393 @Directive50(argument103 : "stringValue1809") + EnumValue3394 @Directive50(argument103 : "stringValue1810") + EnumValue3395 @Directive50(argument103 : "stringValue1811") + EnumValue3396 @Directive50(argument103 : "stringValue1812") + EnumValue3397 @Directive50(argument103 : "stringValue1813") + EnumValue3398 @Directive50(argument103 : "stringValue1814") + EnumValue3399 @Directive50(argument103 : "stringValue1815") + EnumValue3400 @Directive50(argument103 : "stringValue1816") + EnumValue3401 @Directive50(argument103 : "stringValue1817") + EnumValue3402 @Directive50(argument103 : "stringValue1818") + EnumValue3403 @Directive50(argument103 : "stringValue1819") + EnumValue3404 @Directive50(argument103 : "stringValue1820") + EnumValue3405 @Directive50(argument103 : "stringValue1821") + EnumValue3406 @Directive50(argument103 : "stringValue1822") + EnumValue3407 @Directive50(argument103 : "stringValue1823") + EnumValue3408 @Directive50(argument103 : "stringValue1824") + EnumValue3409 @Directive50(argument103 : "stringValue1825") + EnumValue3410 @Directive50(argument103 : "stringValue1826") + EnumValue3411 @Directive50(argument103 : "stringValue1827") + EnumValue3412 @Directive50(argument103 : "stringValue1828") + EnumValue3413 @Directive50(argument103 : "stringValue1829") + EnumValue3414 @Directive50(argument103 : "stringValue1830") + EnumValue3415 @Directive50(argument103 : "stringValue1831") + EnumValue3416 @Directive50(argument103 : "stringValue1832") + EnumValue3417 @Directive50(argument103 : "stringValue1833") + EnumValue3418 @Directive50(argument103 : "stringValue1834") + EnumValue3419 @Directive50(argument103 : "stringValue1835") + EnumValue3420 @Directive50(argument103 : "stringValue1836") + EnumValue3421 @Directive50(argument103 : "stringValue1837") + EnumValue3422 @Directive50(argument103 : "stringValue1838") + EnumValue3423 @Directive50(argument103 : "stringValue1839") + EnumValue3424 @Directive50(argument103 : "stringValue1840") + EnumValue3425 @Directive50(argument103 : "stringValue1841") + EnumValue3426 @Directive50(argument103 : "stringValue1842") + EnumValue3427 @Directive50(argument103 : "stringValue1843") + EnumValue3428 @Directive50(argument103 : "stringValue1844") + EnumValue3429 @Directive50(argument103 : "stringValue1845") + EnumValue3430 @Directive50(argument103 : "stringValue1846") + EnumValue3431 @Directive50(argument103 : "stringValue1847") + EnumValue3432 @Directive50(argument103 : "stringValue1848") + EnumValue3433 @Directive50(argument103 : "stringValue1849") + EnumValue3434 @Directive50(argument103 : "stringValue1850") + EnumValue3435 @Directive50(argument103 : "stringValue1851") + EnumValue3436 @Directive50(argument103 : "stringValue1852") + EnumValue3437 @Directive50(argument103 : "stringValue1853") + EnumValue3438 @Directive50(argument103 : "stringValue1854") + EnumValue3439 @Directive50(argument103 : "stringValue1855") + EnumValue3440 @Directive50(argument103 : "stringValue1856") + EnumValue3441 @Directive50(argument103 : "stringValue1857") + EnumValue3442 @Directive50(argument103 : "stringValue1858") + EnumValue3443 @Directive50(argument103 : "stringValue1859") + EnumValue3444 @Directive50(argument103 : "stringValue1860") + EnumValue3445 + EnumValue3446 @Directive50(argument103 : "stringValue1861") + EnumValue3447 + EnumValue3448 @Directive50(argument103 : "stringValue1862") + EnumValue3449 @Directive50(argument103 : "stringValue1863") + EnumValue3450 @Directive50(argument103 : "stringValue1864") + EnumValue3451 @Directive50(argument103 : "stringValue1865") + EnumValue3452 + EnumValue3453 @Directive50(argument103 : "stringValue1866") + EnumValue3454 @Directive50(argument103 : "stringValue1867") + EnumValue3455 @Directive50(argument103 : "stringValue1868") + EnumValue3456 @Directive50(argument103 : "stringValue1869") + EnumValue3457 @Directive50(argument103 : "stringValue1870") + EnumValue3458 @Directive50(argument103 : "stringValue1871") + EnumValue3459 @Directive50(argument103 : "stringValue1872") + EnumValue3460 @Directive50(argument103 : "stringValue1873") + EnumValue3461 @Directive50(argument103 : "stringValue1874") + EnumValue3462 @Directive50(argument103 : "stringValue1875") + EnumValue3463 @Directive50(argument103 : "stringValue1876") + EnumValue3464 @Directive50(argument103 : "stringValue1877") + EnumValue3465 @Directive50(argument103 : "stringValue1878") + EnumValue3466 @Directive50(argument103 : "stringValue1879") + EnumValue3467 @Directive50(argument103 : "stringValue1880") + EnumValue3468 + EnumValue3469 @Directive50(argument103 : "stringValue1881") + EnumValue3470 + EnumValue3471 @Directive50(argument103 : "stringValue1882") + EnumValue3472 @Directive50(argument103 : "stringValue1883") + EnumValue3473 @Directive50(argument103 : "stringValue1884") + EnumValue3474 @Directive50(argument103 : "stringValue1885") + EnumValue3475 @Directive50(argument103 : "stringValue1886") + EnumValue3476 @Directive50(argument103 : "stringValue1887") + EnumValue3477 @Directive50(argument103 : "stringValue1888") + EnumValue3478 + EnumValue3479 + EnumValue3480 + EnumValue3481 @Directive50(argument103 : "stringValue1889") + EnumValue3482 @Directive50(argument103 : "stringValue1890") + EnumValue3483 @Directive50(argument103 : "stringValue1891") + EnumValue3484 @Directive50(argument103 : "stringValue1892") + EnumValue3485 @Directive50(argument103 : "stringValue1893") + EnumValue3486 @Directive50(argument103 : "stringValue1894") + EnumValue3487 @Directive50(argument103 : "stringValue1895") + EnumValue3488 @Directive50(argument103 : "stringValue1896") + EnumValue3489 @Directive50(argument103 : "stringValue1897") + EnumValue3490 + EnumValue3491 @Directive50(argument103 : "stringValue1898") + EnumValue3492 @Directive50(argument103 : "stringValue1899") + EnumValue3493 @Directive50(argument103 : "stringValue1900") + EnumValue3494 @Directive50(argument103 : "stringValue1901") + EnumValue3495 + EnumValue3496 @Directive50(argument103 : "stringValue1902") + EnumValue3497 + EnumValue3498 @Directive50(argument103 : "stringValue1903") + EnumValue3499 @Directive50(argument103 : "stringValue1904") + EnumValue3500 @Directive50(argument103 : "stringValue1905") + EnumValue3501 @Directive50(argument103 : "stringValue1906") + EnumValue3502 @Directive50(argument103 : "stringValue1907") + EnumValue3503 @Directive50(argument103 : "stringValue1908") + EnumValue3504 @Directive50(argument103 : "stringValue1909") + EnumValue3505 @Directive50(argument103 : "stringValue1910") + EnumValue3506 @deprecated + EnumValue3507 @Directive50(argument103 : "stringValue1911") + EnumValue3508 @Directive50(argument103 : "stringValue1912") + EnumValue3509 @Directive50(argument103 : "stringValue1913") + EnumValue3510 @Directive50(argument103 : "stringValue1914") + EnumValue3511 @Directive50(argument103 : "stringValue1915") + EnumValue3512 @Directive50(argument103 : "stringValue1916") + EnumValue3513 @Directive50(argument103 : "stringValue1917") + EnumValue3514 @Directive50(argument103 : "stringValue1918") + EnumValue3515 @Directive50(argument103 : "stringValue1919") + EnumValue3516 @Directive50(argument103 : "stringValue1920") + EnumValue3517 @Directive50(argument103 : "stringValue1921") + EnumValue3518 @Directive50(argument103 : "stringValue1922") + EnumValue3519 @Directive50(argument103 : "stringValue1923") + EnumValue3520 @Directive50(argument103 : "stringValue1924") + EnumValue3521 @Directive50(argument103 : "stringValue1925") + EnumValue3522 @Directive50(argument103 : "stringValue1926") + EnumValue3523 @Directive50(argument103 : "stringValue1927") + EnumValue3524 @Directive50(argument103 : "stringValue1928") + EnumValue3525 @Directive50(argument103 : "stringValue1929") + EnumValue3526 @Directive50(argument103 : "stringValue1930") + EnumValue3527 @Directive50(argument103 : "stringValue1931") + EnumValue3528 @Directive50(argument103 : "stringValue1932") + EnumValue3529 @Directive50(argument103 : "stringValue1933") + EnumValue3530 @Directive50(argument103 : "stringValue1934") + EnumValue3531 @Directive50(argument103 : "stringValue1935") + EnumValue3532 @Directive50(argument103 : "stringValue1936") + EnumValue3533 @Directive50(argument103 : "stringValue1937") + EnumValue3534 @Directive50(argument103 : "stringValue1938") + EnumValue3535 @Directive50(argument103 : "stringValue1939") + EnumValue3536 @Directive50(argument103 : "stringValue1940") + EnumValue3537 @Directive50(argument103 : "stringValue1941") + EnumValue3538 @Directive50(argument103 : "stringValue1942") + EnumValue3539 @Directive50(argument103 : "stringValue1943") + EnumValue3540 @Directive50(argument103 : "stringValue1944") + EnumValue3541 @Directive50(argument103 : "stringValue1945") + EnumValue3542 @Directive50(argument103 : "stringValue1946") + EnumValue3543 @Directive50(argument103 : "stringValue1947") + EnumValue3544 @Directive50(argument103 : "stringValue1948") + EnumValue3545 @Directive50(argument103 : "stringValue1949") + EnumValue3546 @Directive50(argument103 : "stringValue1950") + EnumValue3547 @Directive50(argument103 : "stringValue1951") + EnumValue3548 @Directive50(argument103 : "stringValue1952") + EnumValue3549 @Directive50(argument103 : "stringValue1953") + EnumValue3550 @Directive50(argument103 : "stringValue1954") + EnumValue3551 @Directive50(argument103 : "stringValue1955") + EnumValue3552 @Directive50(argument103 : "stringValue1956") + EnumValue3553 @Directive50(argument103 : "stringValue1957") + EnumValue3554 + EnumValue3555 @Directive50(argument103 : "stringValue1958") + EnumValue3556 + EnumValue3557 + EnumValue3558 @deprecated + EnumValue3559 @Directive50(argument103 : "stringValue1959") + EnumValue3560 @Directive50(argument103 : "stringValue1960") + EnumValue3561 @Directive50(argument103 : "stringValue1961") + EnumValue3562 @Directive50(argument103 : "stringValue1962") + EnumValue3563 @Directive50(argument103 : "stringValue1963") + EnumValue3564 @Directive50(argument103 : "stringValue1964") + EnumValue3565 @Directive50(argument103 : "stringValue1965") + EnumValue3566 @Directive50(argument103 : "stringValue1966") + EnumValue3567 @Directive50(argument103 : "stringValue1967") + EnumValue3568 @Directive50(argument103 : "stringValue1968") + EnumValue3569 @Directive50(argument103 : "stringValue1969") + EnumValue3570 @Directive50(argument103 : "stringValue1970") + EnumValue3571 @Directive50(argument103 : "stringValue1971") + EnumValue3572 @Directive50(argument103 : "stringValue1972") + EnumValue3573 @Directive50(argument103 : "stringValue1973") + EnumValue3574 @Directive50(argument103 : "stringValue1974") + EnumValue3575 @Directive50(argument103 : "stringValue1975") + EnumValue3576 @Directive50(argument103 : "stringValue1976") + EnumValue3577 @Directive50(argument103 : "stringValue1977") + EnumValue3578 @Directive50(argument103 : "stringValue1978") + EnumValue3579 @Directive50(argument103 : "stringValue1979") + EnumValue3580 @Directive50(argument103 : "stringValue1980") + EnumValue3581 @Directive50(argument103 : "stringValue1981") + EnumValue3582 @Directive50(argument103 : "stringValue1982") + EnumValue3583 @Directive50(argument103 : "stringValue1983") + EnumValue3584 @Directive50(argument103 : "stringValue1984") + EnumValue3585 @Directive50(argument103 : "stringValue1985") + EnumValue3586 @Directive50(argument103 : "stringValue1986") + EnumValue3587 @Directive50(argument103 : "stringValue1987") + EnumValue3588 @Directive50(argument103 : "stringValue1988") + EnumValue3589 @Directive50(argument103 : "stringValue1989") + EnumValue3590 @Directive50(argument103 : "stringValue1990") + EnumValue3591 @Directive50(argument103 : "stringValue1991") + EnumValue3592 @Directive50(argument103 : "stringValue1992") + EnumValue3593 @Directive50(argument103 : "stringValue1993") + EnumValue3594 @Directive50(argument103 : "stringValue1994") + EnumValue3595 @Directive50(argument103 : "stringValue1995") + EnumValue3596 @Directive50(argument103 : "stringValue1996") + EnumValue3597 @Directive50(argument103 : "stringValue1997") + EnumValue3598 @Directive50(argument103 : "stringValue1998") + EnumValue3599 @Directive50(argument103 : "stringValue1999") + EnumValue3600 @Directive50(argument103 : "stringValue2000") + EnumValue3601 @Directive50(argument103 : "stringValue2001") + EnumValue3602 + EnumValue3603 @Directive50(argument103 : "stringValue2002") + EnumValue3604 @Directive50(argument103 : "stringValue2003") + EnumValue3605 @Directive50(argument103 : "stringValue2004") + EnumValue3606 @Directive50(argument103 : "stringValue2005") + EnumValue3607 @deprecated + EnumValue3608 @Directive50(argument103 : "stringValue2006") + EnumValue3609 @Directive50(argument103 : "stringValue2007") + EnumValue3610 @Directive50(argument103 : "stringValue2008") @deprecated + EnumValue3611 @Directive50(argument103 : "stringValue2009") + EnumValue3612 @Directive50(argument103 : "stringValue2010") @deprecated + EnumValue3613 @Directive50(argument103 : "stringValue2011") + EnumValue3614 @Directive50(argument103 : "stringValue2012") + EnumValue3615 @deprecated + EnumValue3616 @Directive50(argument103 : "stringValue2013") + EnumValue3617 @Directive50(argument103 : "stringValue2014") + EnumValue3618 @Directive50(argument103 : "stringValue2015") + EnumValue3619 @Directive50(argument103 : "stringValue2016") + EnumValue3620 @Directive50(argument103 : "stringValue2017") + EnumValue3621 @Directive50(argument103 : "stringValue2018") + EnumValue3622 @Directive50(argument103 : "stringValue2019") + EnumValue3623 @Directive50(argument103 : "stringValue2020") + EnumValue3624 @Directive50(argument103 : "stringValue2021") + EnumValue3625 @Directive50(argument103 : "stringValue2022") + EnumValue3626 @Directive50(argument103 : "stringValue2023") + EnumValue3627 @Directive50(argument103 : "stringValue2024") + EnumValue3628 @Directive50(argument103 : "stringValue2025") + EnumValue3629 @Directive50(argument103 : "stringValue2026") + EnumValue3630 @Directive50(argument103 : "stringValue2027") + EnumValue3631 @Directive50(argument103 : "stringValue2028") + EnumValue3632 @Directive50(argument103 : "stringValue2029") + EnumValue3633 @Directive50(argument103 : "stringValue2030") + EnumValue3634 @Directive50(argument103 : "stringValue2031") + EnumValue3635 + EnumValue3636 @Directive50(argument103 : "stringValue2032") + EnumValue3637 @Directive50(argument103 : "stringValue2033") + EnumValue3638 @Directive50(argument103 : "stringValue2034") + EnumValue3639 @Directive50(argument103 : "stringValue2035") + EnumValue3640 @Directive50(argument103 : "stringValue2036") + EnumValue3641 @Directive50(argument103 : "stringValue2037") + EnumValue3642 @Directive50(argument103 : "stringValue2038") + EnumValue3643 @Directive50(argument103 : "stringValue2039") + EnumValue3644 @Directive50(argument103 : "stringValue2040") + EnumValue3645 @Directive50(argument103 : "stringValue2041") + EnumValue3646 @Directive50(argument103 : "stringValue2042") + EnumValue3647 @Directive50(argument103 : "stringValue2043") + EnumValue3648 @Directive50(argument103 : "stringValue2044") + EnumValue3649 + EnumValue3650 + EnumValue3651 + EnumValue3652 + EnumValue3653 + EnumValue3654 + EnumValue3655 + EnumValue3656 + EnumValue3657 + EnumValue3658 @Directive50(argument103 : "stringValue2045") + EnumValue3659 @Directive50(argument103 : "stringValue2046") + EnumValue3660 @Directive50(argument103 : "stringValue2047") + EnumValue3661 @Directive50(argument103 : "stringValue2048") + EnumValue3662 + EnumValue3663 @Directive50(argument103 : "stringValue2049") + EnumValue3664 @Directive50(argument103 : "stringValue2050") + EnumValue3665 @Directive50(argument103 : "stringValue2051") + EnumValue3666 @Directive50(argument103 : "stringValue2052") + EnumValue3667 @Directive50(argument103 : "stringValue2053") + EnumValue3668 @Directive50(argument103 : "stringValue2054") + EnumValue3669 @Directive50(argument103 : "stringValue2055") + EnumValue3670 @Directive50(argument103 : "stringValue2056") + EnumValue3671 @Directive50(argument103 : "stringValue2057") + EnumValue3672 @Directive50(argument103 : "stringValue2058") + EnumValue3673 @Directive50(argument103 : "stringValue2059") + EnumValue3674 + EnumValue3675 @Directive50(argument103 : "stringValue2060") + EnumValue3676 @Directive50(argument103 : "stringValue2061") + EnumValue3677 @Directive50(argument103 : "stringValue2062") + EnumValue3678 + EnumValue3679 @Directive50(argument103 : "stringValue2063") + EnumValue3680 @Directive50(argument103 : "stringValue2064") + EnumValue3681 @Directive50(argument103 : "stringValue2065") + EnumValue3682 @Directive50(argument103 : "stringValue2066") + EnumValue3683 + EnumValue3684 + EnumValue3685 + EnumValue3686 + EnumValue3687 @Directive50(argument103 : "stringValue2067") + EnumValue3688 + EnumValue3689 + EnumValue3690 @Directive50(argument103 : "stringValue2068") + EnumValue3691 + EnumValue3692 @Directive50(argument103 : "stringValue2069") + EnumValue3693 @Directive50(argument103 : "stringValue2070") + EnumValue3694 + EnumValue3695 @Directive50(argument103 : "stringValue2071") + EnumValue3696 @Directive50(argument103 : "stringValue2072") + EnumValue3697 + EnumValue3698 @Directive50(argument103 : "stringValue2073") + EnumValue3699 @Directive50(argument103 : "stringValue2074") + EnumValue3700 @Directive50(argument103 : "stringValue2075") + EnumValue3701 @Directive50(argument103 : "stringValue2076") + EnumValue3702 @Directive50(argument103 : "stringValue2077") + EnumValue3703 @Directive50(argument103 : "stringValue2078") + EnumValue3704 @Directive50(argument103 : "stringValue2079") + EnumValue3705 @Directive50(argument103 : "stringValue2080") + EnumValue3706 + EnumValue3707 + EnumValue3708 @Directive50(argument103 : "stringValue2081") + EnumValue3709 @Directive50(argument103 : "stringValue2082") + EnumValue3710 @Directive50(argument103 : "stringValue2083") + EnumValue3711 @Directive50(argument103 : "stringValue2084") + EnumValue3712 @Directive50(argument103 : "stringValue2085") + EnumValue3713 @Directive50(argument103 : "stringValue2086") + EnumValue3714 @Directive50(argument103 : "stringValue2087") + EnumValue3715 + EnumValue3716 + EnumValue3717 + EnumValue3718 + EnumValue3719 + EnumValue3720 @Directive50(argument103 : "stringValue2088") + EnumValue3721 @Directive50(argument103 : "stringValue2089") + EnumValue3722 @Directive50(argument103 : "stringValue2090") + EnumValue3723 + EnumValue3724 + EnumValue3725 @Directive50(argument103 : "stringValue2091") + EnumValue3726 @Directive50(argument103 : "stringValue2092") + EnumValue3727 @Directive50(argument103 : "stringValue2093") + EnumValue3728 @Directive50(argument103 : "stringValue2094") + EnumValue3729 @Directive50(argument103 : "stringValue2095") + EnumValue3730 @Directive50(argument103 : "stringValue2096") + EnumValue3731 @Directive50(argument103 : "stringValue2097") + EnumValue3732 + EnumValue3733 + EnumValue3734 @Directive50(argument103 : "stringValue2098") + EnumValue3735 @Directive50(argument103 : "stringValue2099") + EnumValue3736 @Directive50(argument103 : "stringValue2100") + EnumValue3737 @Directive50(argument103 : "stringValue2101") + EnumValue3738 @Directive50(argument103 : "stringValue2102") + EnumValue3739 @Directive50(argument103 : "stringValue2103") + EnumValue3740 @Directive50(argument103 : "stringValue2104") + EnumValue3741 @Directive50(argument103 : "stringValue2105") + EnumValue3742 @Directive50(argument103 : "stringValue2106") + EnumValue3743 @Directive50(argument103 : "stringValue2107") + EnumValue3744 @Directive50(argument103 : "stringValue2108") + EnumValue3745 @Directive50(argument103 : "stringValue2109") + EnumValue3746 @Directive50(argument103 : "stringValue2110") + EnumValue3747 @Directive50(argument103 : "stringValue2111") + EnumValue3748 + EnumValue3749 @Directive50(argument103 : "stringValue2112") + EnumValue3750 @Directive50(argument103 : "stringValue2113") + EnumValue3751 @Directive50(argument103 : "stringValue2114") + EnumValue3752 @Directive50(argument103 : "stringValue2115") + EnumValue3753 + EnumValue3754 + EnumValue3755 + EnumValue3756 @Directive50(argument103 : "stringValue2116") + EnumValue3757 @Directive50(argument103 : "stringValue2117") + EnumValue3758 @Directive50(argument103 : "stringValue2118") + EnumValue3759 @Directive50(argument103 : "stringValue2119") + EnumValue3760 @Directive50(argument103 : "stringValue2120") + EnumValue3761 @Directive50(argument103 : "stringValue2121") + EnumValue3762 @Directive50(argument103 : "stringValue2122") + EnumValue3763 @Directive50(argument103 : "stringValue2123") + EnumValue3764 @Directive50(argument103 : "stringValue2124") + EnumValue3765 @Directive50(argument103 : "stringValue2125") + EnumValue3766 @Directive50(argument103 : "stringValue2126") + EnumValue3767 @Directive50(argument103 : "stringValue2127") + EnumValue3768 @Directive50(argument103 : "stringValue2128") + EnumValue3769 @Directive50(argument103 : "stringValue2129") + EnumValue3770 @Directive50(argument103 : "stringValue2130") + EnumValue3771 @Directive50(argument103 : "stringValue2131") + EnumValue3772 @Directive50(argument103 : "stringValue2132") + EnumValue3773 @Directive50(argument103 : "stringValue2133") + EnumValue3774 @Directive50(argument103 : "stringValue2134") + EnumValue3775 @Directive50(argument103 : "stringValue2135") + EnumValue3776 @Directive50(argument103 : "stringValue2136") + EnumValue3777 @Directive50(argument103 : "stringValue2137") + EnumValue3778 @Directive50(argument103 : "stringValue2138") + EnumValue3779 + EnumValue3780 + EnumValue3781 @Directive50(argument103 : "stringValue2139") + EnumValue3782 + EnumValue3783 + EnumValue3784 @Directive50(argument103 : "stringValue2140") + EnumValue3785 @Directive50(argument103 : "stringValue2141") + EnumValue3786 @Directive50(argument103 : "stringValue2142") + EnumValue3787 @Directive50(argument103 : "stringValue2143") + EnumValue3788 + EnumValue3789 @Directive50(argument103 : "stringValue2144") + EnumValue3790 @Directive50(argument103 : "stringValue2145") + EnumValue3791 @Directive50(argument103 : "stringValue2146") + EnumValue3792 @Directive50(argument103 : "stringValue2147") + EnumValue3793 @Directive50(argument103 : "stringValue2148") + EnumValue3794 @Directive50(argument103 : "stringValue2149") + EnumValue3795 @Directive50(argument103 : "stringValue2150") + EnumValue3796 @Directive50(argument103 : "stringValue2151") + EnumValue3797 @Directive50(argument103 : "stringValue2152") + EnumValue3798 @Directive50(argument103 : "stringValue2153") + EnumValue3799 @Directive50(argument103 : "stringValue2154") + EnumValue3800 @Directive50(argument103 : "stringValue2155") + EnumValue3801 @Directive50(argument103 : "stringValue2156") + EnumValue3802 @Directive50(argument103 : "stringValue2157") + EnumValue3803 @Directive50(argument103 : "stringValue2158") + EnumValue3804 @Directive50(argument103 : "stringValue2159") + EnumValue3805 @Directive50(argument103 : "stringValue2160") + EnumValue3806 @Directive50(argument103 : "stringValue2161") + EnumValue3807 @Directive50(argument103 : "stringValue2162") + EnumValue3808 @Directive50(argument103 : "stringValue2163") + EnumValue3809 @Directive50(argument103 : "stringValue2164") + EnumValue3810 @Directive50(argument103 : "stringValue2165") + EnumValue3811 @Directive50(argument103 : "stringValue2166") + EnumValue3812 @Directive50(argument103 : "stringValue2167") + EnumValue3813 @Directive50(argument103 : "stringValue2168") + EnumValue3814 + EnumValue3815 + EnumValue3816 @Directive50(argument103 : "stringValue2169") + EnumValue3817 @Directive50(argument103 : "stringValue2170") + EnumValue3818 @Directive50(argument103 : "stringValue2171") + EnumValue3819 @Directive50(argument103 : "stringValue2172") + EnumValue3820 @Directive50(argument103 : "stringValue2173") + EnumValue3821 @Directive50(argument103 : "stringValue2174") + EnumValue3822 @Directive50(argument103 : "stringValue2175") + EnumValue3823 @Directive50(argument103 : "stringValue2176") + EnumValue3824 @Directive50(argument103 : "stringValue2177") + EnumValue3825 @Directive50(argument103 : "stringValue2178") + EnumValue3826 @Directive50(argument103 : "stringValue2179") + EnumValue3827 + EnumValue3828 @Directive50(argument103 : "stringValue2180") + EnumValue3829 @Directive50(argument103 : "stringValue2181") + EnumValue3830 @Directive50(argument103 : "stringValue2182") + EnumValue3831 + EnumValue3832 @Directive50(argument103 : "stringValue2183") + EnumValue3833 @Directive50(argument103 : "stringValue2184") + EnumValue3834 @Directive50(argument103 : "stringValue2185") + EnumValue3835 @Directive50(argument103 : "stringValue2186") + EnumValue3836 @Directive50(argument103 : "stringValue2187") + EnumValue3837 @Directive50(argument103 : "stringValue2188") + EnumValue3838 @Directive50(argument103 : "stringValue2189") + EnumValue3839 @Directive50(argument103 : "stringValue2190") + EnumValue3840 @Directive50(argument103 : "stringValue2191") + EnumValue3841 @Directive50(argument103 : "stringValue2192") + EnumValue3842 @Directive50(argument103 : "stringValue2193") + EnumValue3843 @Directive50(argument103 : "stringValue2194") + EnumValue3844 @Directive50(argument103 : "stringValue2195") + EnumValue3845 @Directive50(argument103 : "stringValue2196") + EnumValue3846 @Directive50(argument103 : "stringValue2197") + EnumValue3847 + EnumValue3848 @Directive50(argument103 : "stringValue2198") + EnumValue3849 + EnumValue3850 + EnumValue3851 + EnumValue3852 @Directive50(argument103 : "stringValue2199") + EnumValue3853 @Directive50(argument103 : "stringValue2200") + EnumValue3854 @Directive50(argument103 : "stringValue2201") + EnumValue3855 + EnumValue3856 @Directive50(argument103 : "stringValue2202") + EnumValue3857 @Directive50(argument103 : "stringValue2203") + EnumValue3858 @Directive50(argument103 : "stringValue2204") + EnumValue3859 @Directive50(argument103 : "stringValue2205") + EnumValue3860 @Directive50(argument103 : "stringValue2206") + EnumValue3861 @Directive50(argument103 : "stringValue2207") + EnumValue3862 @Directive50(argument103 : "stringValue2208") + EnumValue3863 @Directive50(argument103 : "stringValue2209") + EnumValue3864 @Directive50(argument103 : "stringValue2210") + EnumValue3865 @Directive50(argument103 : "stringValue2211") + EnumValue3866 + EnumValue3867 @Directive50(argument103 : "stringValue2212") + EnumValue3868 @Directive50(argument103 : "stringValue2213") + EnumValue3869 @Directive50(argument103 : "stringValue2214") + EnumValue3870 @Directive50(argument103 : "stringValue2215") + EnumValue3871 @Directive50(argument103 : "stringValue2216") + EnumValue3872 @Directive50(argument103 : "stringValue2217") + EnumValue3873 @Directive50(argument103 : "stringValue2218") + EnumValue3874 @Directive50(argument103 : "stringValue2219") + EnumValue3875 @Directive50(argument103 : "stringValue2220") + EnumValue3876 @Directive50(argument103 : "stringValue2221") + EnumValue3877 @Directive50(argument103 : "stringValue2222") + EnumValue3878 @Directive50(argument103 : "stringValue2223") + EnumValue3879 @Directive50(argument103 : "stringValue2224") + EnumValue3880 @Directive50(argument103 : "stringValue2225") + EnumValue3881 @Directive50(argument103 : "stringValue2226") + EnumValue3882 @Directive50(argument103 : "stringValue2227") + EnumValue3883 @Directive50(argument103 : "stringValue2228") + EnumValue3884 @Directive50(argument103 : "stringValue2229") + EnumValue3885 @Directive50(argument103 : "stringValue2230") + EnumValue3886 @Directive50(argument103 : "stringValue2231") + EnumValue3887 @Directive50(argument103 : "stringValue2232") + EnumValue3888 @Directive50(argument103 : "stringValue2233") + EnumValue3889 @Directive50(argument103 : "stringValue2234") + EnumValue3890 @Directive50(argument103 : "stringValue2235") + EnumValue3891 @Directive50(argument103 : "stringValue2236") + EnumValue3892 @Directive50(argument103 : "stringValue2237") + EnumValue3893 @Directive50(argument103 : "stringValue2238") + EnumValue3894 @Directive50(argument103 : "stringValue2239") + EnumValue3895 @Directive50(argument103 : "stringValue2240") + EnumValue3896 @Directive50(argument103 : "stringValue2241") + EnumValue3897 @Directive50(argument103 : "stringValue2242") + EnumValue3898 @Directive50(argument103 : "stringValue2243") + EnumValue3899 @Directive50(argument103 : "stringValue2244") + EnumValue3900 @Directive50(argument103 : "stringValue2245") + EnumValue3901 @Directive50(argument103 : "stringValue2246") + EnumValue3902 @Directive50(argument103 : "stringValue2247") + EnumValue3903 @Directive50(argument103 : "stringValue2248") + EnumValue3904 @Directive50(argument103 : "stringValue2249") + EnumValue3905 @Directive50(argument103 : "stringValue2250") + EnumValue3906 @Directive50(argument103 : "stringValue2251") + EnumValue3907 @Directive50(argument103 : "stringValue2252") + EnumValue3908 @Directive50(argument103 : "stringValue2253") + EnumValue3909 @Directive50(argument103 : "stringValue2254") + EnumValue3910 @Directive50(argument103 : "stringValue2255") + EnumValue3911 @Directive50(argument103 : "stringValue2256") + EnumValue3912 @Directive50(argument103 : "stringValue2257") + EnumValue3913 @Directive50(argument103 : "stringValue2258") + EnumValue3914 @Directive50(argument103 : "stringValue2259") + EnumValue3915 @Directive50(argument103 : "stringValue2260") + EnumValue3916 @Directive50(argument103 : "stringValue2261") + EnumValue3917 @Directive50(argument103 : "stringValue2262") + EnumValue3918 @Directive50(argument103 : "stringValue2263") + EnumValue3919 @Directive50(argument103 : "stringValue2264") + EnumValue3920 @Directive50(argument103 : "stringValue2265") + EnumValue3921 @Directive50(argument103 : "stringValue2266") + EnumValue3922 @Directive50(argument103 : "stringValue2267") + EnumValue3923 @Directive50(argument103 : "stringValue2268") + EnumValue3924 @Directive50(argument103 : "stringValue2269") + EnumValue3925 @Directive50(argument103 : "stringValue2270") + EnumValue3926 @Directive50(argument103 : "stringValue2271") + EnumValue3927 @Directive50(argument103 : "stringValue2272") + EnumValue3928 @Directive50(argument103 : "stringValue2273") + EnumValue3929 @Directive50(argument103 : "stringValue2274") + EnumValue3930 @Directive50(argument103 : "stringValue2275") + EnumValue3931 @Directive50(argument103 : "stringValue2276") + EnumValue3932 @Directive50(argument103 : "stringValue2277") + EnumValue3933 @Directive50(argument103 : "stringValue2278") + EnumValue3934 + EnumValue3935 @Directive50(argument103 : "stringValue2279") + EnumValue3936 + EnumValue3937 @Directive50(argument103 : "stringValue2280") + EnumValue3938 @Directive50(argument103 : "stringValue2281") + EnumValue3939 + EnumValue3940 @Directive50(argument103 : "stringValue2282") + EnumValue3941 @Directive50(argument103 : "stringValue2283") + EnumValue3942 + EnumValue3943 @Directive50(argument103 : "stringValue2284") + EnumValue3944 @Directive50(argument103 : "stringValue2285") + EnumValue3945 + EnumValue3946 @Directive50(argument103 : "stringValue2286") + EnumValue3947 @Directive50(argument103 : "stringValue2287") + EnumValue3948 + EnumValue3949 @Directive50(argument103 : "stringValue2288") + EnumValue3950 @Directive50(argument103 : "stringValue2289") + EnumValue3951 @Directive50(argument103 : "stringValue2290") + EnumValue3952 @Directive50(argument103 : "stringValue2291") + EnumValue3953 @Directive50(argument103 : "stringValue2292") + EnumValue3954 @Directive50(argument103 : "stringValue2293") + EnumValue3955 @Directive50(argument103 : "stringValue2294") + EnumValue3956 @Directive50(argument103 : "stringValue2295") + EnumValue3957 @Directive50(argument103 : "stringValue2296") + EnumValue3958 @Directive50(argument103 : "stringValue2297") + EnumValue3959 @Directive50(argument103 : "stringValue2298") + EnumValue3960 @Directive50(argument103 : "stringValue2299") + EnumValue3961 @Directive50(argument103 : "stringValue2300") + EnumValue3962 @Directive50(argument103 : "stringValue2301") + EnumValue3963 @Directive50(argument103 : "stringValue2302") + EnumValue3964 @Directive50(argument103 : "stringValue2303") + EnumValue3965 @Directive50(argument103 : "stringValue2304") + EnumValue3966 + EnumValue3967 @Directive50(argument103 : "stringValue2305") + EnumValue3968 @Directive50(argument103 : "stringValue2306") + EnumValue3969 @Directive50(argument103 : "stringValue2307") + EnumValue3970 @Directive50(argument103 : "stringValue2308") + EnumValue3971 @Directive50(argument103 : "stringValue2309") + EnumValue3972 @Directive50(argument103 : "stringValue2310") + EnumValue3973 @Directive50(argument103 : "stringValue2311") + EnumValue3974 + EnumValue3975 @Directive50(argument103 : "stringValue2312") + EnumValue3976 @Directive50(argument103 : "stringValue2313") + EnumValue3977 @Directive50(argument103 : "stringValue2314") + EnumValue3978 @Directive50(argument103 : "stringValue2315") + EnumValue3979 + EnumValue3980 @Directive50(argument103 : "stringValue2316") + EnumValue3981 @Directive50(argument103 : "stringValue2317") + EnumValue3982 @Directive50(argument103 : "stringValue2318") + EnumValue3983 @Directive50(argument103 : "stringValue2319") + EnumValue3984 @Directive50(argument103 : "stringValue2320") + EnumValue3985 @Directive50(argument103 : "stringValue2321") + EnumValue3986 @Directive50(argument103 : "stringValue2322") + EnumValue3987 @Directive50(argument103 : "stringValue2323") + EnumValue3988 @Directive50(argument103 : "stringValue2324") + EnumValue3989 + EnumValue3990 + EnumValue3991 @Directive50(argument103 : "stringValue2325") + EnumValue3992 @Directive50(argument103 : "stringValue2326") + EnumValue3993 @Directive50(argument103 : "stringValue2327") + EnumValue3994 @Directive50(argument103 : "stringValue2328") + EnumValue3995 @Directive50(argument103 : "stringValue2329") + EnumValue3996 @Directive50(argument103 : "stringValue2330") + EnumValue3997 @Directive50(argument103 : "stringValue2331") + EnumValue3998 @Directive50(argument103 : "stringValue2332") + EnumValue3999 @Directive50(argument103 : "stringValue2333") + EnumValue4000 @Directive50(argument103 : "stringValue2334") + EnumValue4001 @Directive50(argument103 : "stringValue2335") + EnumValue4002 @Directive50(argument103 : "stringValue2336") + EnumValue4003 @Directive50(argument103 : "stringValue2337") + EnumValue4004 @Directive50(argument103 : "stringValue2338") + EnumValue4005 + EnumValue4006 @Directive50(argument103 : "stringValue2339") + EnumValue4007 @Directive50(argument103 : "stringValue2340") + EnumValue4008 @Directive50(argument103 : "stringValue2341") + EnumValue4009 @Directive50(argument103 : "stringValue2342") + EnumValue4010 @Directive50(argument103 : "stringValue2343") + EnumValue4011 @Directive50(argument103 : "stringValue2344") + EnumValue4012 @Directive50(argument103 : "stringValue2345") + EnumValue4013 @Directive50(argument103 : "stringValue2346") + EnumValue4014 @Directive50(argument103 : "stringValue2347") + EnumValue4015 @Directive50(argument103 : "stringValue2348") + EnumValue4016 + EnumValue4017 @Directive50(argument103 : "stringValue2349") + EnumValue4018 @Directive50(argument103 : "stringValue2350") + EnumValue4019 @Directive50(argument103 : "stringValue2351") + EnumValue4020 @Directive50(argument103 : "stringValue2352") + EnumValue4021 @Directive50(argument103 : "stringValue2353") + EnumValue4022 @Directive50(argument103 : "stringValue2354") + EnumValue4023 @Directive50(argument103 : "stringValue2355") + EnumValue4024 @Directive50(argument103 : "stringValue2356") + EnumValue4025 @Directive50(argument103 : "stringValue2357") + EnumValue4026 @Directive50(argument103 : "stringValue2358") + EnumValue4027 @Directive50(argument103 : "stringValue2359") + EnumValue4028 @Directive50(argument103 : "stringValue2360") + EnumValue4029 @Directive50(argument103 : "stringValue2361") + EnumValue4030 @Directive50(argument103 : "stringValue2362") + EnumValue4031 @Directive50(argument103 : "stringValue2363") + EnumValue4032 @Directive50(argument103 : "stringValue2364") + EnumValue4033 @Directive50(argument103 : "stringValue2365") + EnumValue4034 @Directive50(argument103 : "stringValue2366") + EnumValue4035 @Directive50(argument103 : "stringValue2367") + EnumValue4036 @Directive50(argument103 : "stringValue2368") + EnumValue4037 @Directive50(argument103 : "stringValue2369") + EnumValue4038 @Directive50(argument103 : "stringValue2370") + EnumValue4039 @Directive50(argument103 : "stringValue2371") + EnumValue4040 @Directive50(argument103 : "stringValue2372") + EnumValue4041 @Directive50(argument103 : "stringValue2373") + EnumValue4042 @Directive50(argument103 : "stringValue2374") + EnumValue4043 @Directive50(argument103 : "stringValue2375") + EnumValue4044 @Directive50(argument103 : "stringValue2376") + EnumValue4045 @Directive50(argument103 : "stringValue2377") + EnumValue4046 @Directive50(argument103 : "stringValue2378") + EnumValue4047 @Directive50(argument103 : "stringValue2379") + EnumValue4048 @Directive50(argument103 : "stringValue2380") + EnumValue4049 @Directive50(argument103 : "stringValue2381") + EnumValue4050 @Directive50(argument103 : "stringValue2382") + EnumValue4051 @Directive50(argument103 : "stringValue2383") + EnumValue4052 @Directive50(argument103 : "stringValue2384") + EnumValue4053 @Directive50(argument103 : "stringValue2385") + EnumValue4054 + EnumValue4055 + EnumValue4056 @Directive50(argument103 : "stringValue2386") + EnumValue4057 @Directive50(argument103 : "stringValue2387") + EnumValue4058 @Directive50(argument103 : "stringValue2388") + EnumValue4059 @Directive50(argument103 : "stringValue2389") + EnumValue4060 @Directive50(argument103 : "stringValue2390") + EnumValue4061 @Directive50(argument103 : "stringValue2391") + EnumValue4062 @Directive50(argument103 : "stringValue2392") + EnumValue4063 @Directive50(argument103 : "stringValue2393") + EnumValue4064 @Directive50(argument103 : "stringValue2394") + EnumValue4065 @Directive50(argument103 : "stringValue2395") + EnumValue4066 @Directive50(argument103 : "stringValue2396") + EnumValue4067 @Directive50(argument103 : "stringValue2397") + EnumValue4068 @Directive50(argument103 : "stringValue2398") + EnumValue4069 @Directive50(argument103 : "stringValue2399") + EnumValue4070 @Directive50(argument103 : "stringValue2400") + EnumValue4071 @Directive50(argument103 : "stringValue2401") + EnumValue4072 @Directive50(argument103 : "stringValue2402") + EnumValue4073 @Directive50(argument103 : "stringValue2403") + EnumValue4074 + EnumValue4075 + EnumValue4076 @Directive50(argument103 : "stringValue2404") + EnumValue4077 @Directive50(argument103 : "stringValue2405") + EnumValue4078 @Directive50(argument103 : "stringValue2406") +} + +enum Enum1540 @Directive44(argument97 : ["stringValue28618"]) { + EnumValue28602 + EnumValue28603 + EnumValue28604 + EnumValue28605 +} + +enum Enum1541 @Directive44(argument97 : ["stringValue28619"]) { + EnumValue28606 + EnumValue28607 + EnumValue28608 +} + +enum Enum1542 @Directive44(argument97 : ["stringValue28623"]) { + EnumValue28609 + EnumValue28610 + EnumValue28611 + EnumValue28612 + EnumValue28613 + EnumValue28614 + EnumValue28615 +} + +enum Enum1543 @Directive44(argument97 : ["stringValue28627"]) { + EnumValue28616 + EnumValue28617 + EnumValue28618 +} + +enum Enum1544 @Directive44(argument97 : ["stringValue28632"]) { + EnumValue28619 + EnumValue28620 + EnumValue28621 + EnumValue28622 + EnumValue28623 + EnumValue28624 +} + +enum Enum1545 @Directive44(argument97 : ["stringValue28666"]) { + EnumValue28625 + EnumValue28626 + EnumValue28627 + EnumValue28628 + EnumValue28629 + EnumValue28630 + EnumValue28631 + EnumValue28632 + EnumValue28633 + EnumValue28634 + EnumValue28635 + EnumValue28636 + EnumValue28637 + EnumValue28638 + EnumValue28639 + EnumValue28640 + EnumValue28641 + EnumValue28642 + EnumValue28643 + EnumValue28644 + EnumValue28645 + EnumValue28646 + EnumValue28647 + EnumValue28648 + EnumValue28649 + EnumValue28650 + EnumValue28651 + EnumValue28652 + EnumValue28653 + EnumValue28654 + EnumValue28655 + EnumValue28656 + EnumValue28657 + EnumValue28658 + EnumValue28659 + EnumValue28660 + EnumValue28661 + EnumValue28662 + EnumValue28663 + EnumValue28664 + EnumValue28665 + EnumValue28666 + EnumValue28667 + EnumValue28668 + EnumValue28669 + EnumValue28670 + EnumValue28671 + EnumValue28672 + EnumValue28673 + EnumValue28674 + EnumValue28675 + EnumValue28676 + EnumValue28677 + EnumValue28678 + EnumValue28679 + EnumValue28680 + EnumValue28681 + EnumValue28682 + EnumValue28683 + EnumValue28684 + EnumValue28685 + EnumValue28686 + EnumValue28687 + EnumValue28688 + EnumValue28689 + EnumValue28690 + EnumValue28691 + EnumValue28692 + EnumValue28693 + EnumValue28694 + EnumValue28695 + EnumValue28696 +} + +enum Enum1546 @Directive44(argument97 : ["stringValue28669"]) { + EnumValue28697 + EnumValue28698 + EnumValue28699 + EnumValue28700 + EnumValue28701 + EnumValue28702 + EnumValue28703 + EnumValue28704 + EnumValue28705 + EnumValue28706 + EnumValue28707 + EnumValue28708 + EnumValue28709 + EnumValue28710 + EnumValue28711 + EnumValue28712 + EnumValue28713 + EnumValue28714 + EnumValue28715 + EnumValue28716 + EnumValue28717 + EnumValue28718 + EnumValue28719 + EnumValue28720 + EnumValue28721 + EnumValue28722 + EnumValue28723 + EnumValue28724 + EnumValue28725 + EnumValue28726 + EnumValue28727 + EnumValue28728 + EnumValue28729 + EnumValue28730 + EnumValue28731 + EnumValue28732 + EnumValue28733 +} + +enum Enum1547 @Directive44(argument97 : ["stringValue28672"]) { + EnumValue28734 + EnumValue28735 + EnumValue28736 +} + +enum Enum1548 @Directive44(argument97 : ["stringValue28679"]) { + EnumValue28737 + EnumValue28738 +} + +enum Enum1549 @Directive44(argument97 : ["stringValue28680"]) { + EnumValue28739 + EnumValue28740 + EnumValue28741 +} + +enum Enum155 @Directive19(argument57 : "stringValue2408") @Directive22(argument62 : "stringValue2407") @Directive44(argument97 : ["stringValue2409", "stringValue2410"]) { + EnumValue4079 + EnumValue4080 + EnumValue4081 + EnumValue4082 +} + +enum Enum1550 @Directive44(argument97 : ["stringValue28683"]) { + EnumValue28742 + EnumValue28743 + EnumValue28744 + EnumValue28745 +} + +enum Enum1551 @Directive44(argument97 : ["stringValue28690"]) { + EnumValue28746 + EnumValue28747 + EnumValue28748 + EnumValue28749 + EnumValue28750 +} + +enum Enum1552 @Directive44(argument97 : ["stringValue28699"]) { + EnumValue28751 + EnumValue28752 + EnumValue28753 + EnumValue28754 + EnumValue28755 + EnumValue28756 + EnumValue28757 + EnumValue28758 + EnumValue28759 + EnumValue28760 + EnumValue28761 + EnumValue28762 + EnumValue28763 + EnumValue28764 + EnumValue28765 + EnumValue28766 + EnumValue28767 + EnumValue28768 + EnumValue28769 + EnumValue28770 + EnumValue28771 + EnumValue28772 + EnumValue28773 + EnumValue28774 + EnumValue28775 + EnumValue28776 + EnumValue28777 + EnumValue28778 + EnumValue28779 + EnumValue28780 + EnumValue28781 + EnumValue28782 + EnumValue28783 + EnumValue28784 + EnumValue28785 + EnumValue28786 + EnumValue28787 + EnumValue28788 + EnumValue28789 + EnumValue28790 + EnumValue28791 + EnumValue28792 + EnumValue28793 + EnumValue28794 + EnumValue28795 + EnumValue28796 + EnumValue28797 + EnumValue28798 + EnumValue28799 + EnumValue28800 + EnumValue28801 + EnumValue28802 + EnumValue28803 + EnumValue28804 + EnumValue28805 + EnumValue28806 + EnumValue28807 + EnumValue28808 + EnumValue28809 + EnumValue28810 + EnumValue28811 + EnumValue28812 + EnumValue28813 + EnumValue28814 + EnumValue28815 + EnumValue28816 + EnumValue28817 + EnumValue28818 + EnumValue28819 + EnumValue28820 + EnumValue28821 + EnumValue28822 + EnumValue28823 + EnumValue28824 + EnumValue28825 + EnumValue28826 + EnumValue28827 + EnumValue28828 + EnumValue28829 + EnumValue28830 + EnumValue28831 + EnumValue28832 + EnumValue28833 + EnumValue28834 +} + +enum Enum1553 @Directive44(argument97 : ["stringValue28721"]) { + EnumValue28835 + EnumValue28836 + EnumValue28837 + EnumValue28838 +} + +enum Enum1554 @Directive44(argument97 : ["stringValue28746"]) { + EnumValue28839 + EnumValue28840 + EnumValue28841 + EnumValue28842 +} + +enum Enum1555 @Directive44(argument97 : ["stringValue28749"]) { + EnumValue28843 + EnumValue28844 + EnumValue28845 + EnumValue28846 + EnumValue28847 + EnumValue28848 + EnumValue28849 + EnumValue28850 + EnumValue28851 + EnumValue28852 + EnumValue28853 + EnumValue28854 + EnumValue28855 + EnumValue28856 + EnumValue28857 + EnumValue28858 + EnumValue28859 + EnumValue28860 + EnumValue28861 + EnumValue28862 + EnumValue28863 + EnumValue28864 + EnumValue28865 + EnumValue28866 + EnumValue28867 + EnumValue28868 + EnumValue28869 + EnumValue28870 + EnumValue28871 + EnumValue28872 + EnumValue28873 + EnumValue28874 + EnumValue28875 + EnumValue28876 + EnumValue28877 + EnumValue28878 + EnumValue28879 + EnumValue28880 + EnumValue28881 + EnumValue28882 + EnumValue28883 + EnumValue28884 + EnumValue28885 + EnumValue28886 + EnumValue28887 + EnumValue28888 + EnumValue28889 + EnumValue28890 + EnumValue28891 + EnumValue28892 + EnumValue28893 + EnumValue28894 + EnumValue28895 + EnumValue28896 + EnumValue28897 + EnumValue28898 + EnumValue28899 + EnumValue28900 + EnumValue28901 + EnumValue28902 + EnumValue28903 + EnumValue28904 + EnumValue28905 + EnumValue28906 + EnumValue28907 + EnumValue28908 + EnumValue28909 + EnumValue28910 + EnumValue28911 + EnumValue28912 + EnumValue28913 + EnumValue28914 + EnumValue28915 + EnumValue28916 + EnumValue28917 + EnumValue28918 + EnumValue28919 + EnumValue28920 + EnumValue28921 + EnumValue28922 + EnumValue28923 + EnumValue28924 + EnumValue28925 + EnumValue28926 + EnumValue28927 + EnumValue28928 + EnumValue28929 + EnumValue28930 + EnumValue28931 + EnumValue28932 + EnumValue28933 + EnumValue28934 + EnumValue28935 + EnumValue28936 + EnumValue28937 + EnumValue28938 + EnumValue28939 + EnumValue28940 + EnumValue28941 + EnumValue28942 + EnumValue28943 + EnumValue28944 + EnumValue28945 + EnumValue28946 + EnumValue28947 + EnumValue28948 + EnumValue28949 + EnumValue28950 + EnumValue28951 + EnumValue28952 + EnumValue28953 + EnumValue28954 + EnumValue28955 + EnumValue28956 + EnumValue28957 + EnumValue28958 + EnumValue28959 + EnumValue28960 + EnumValue28961 + EnumValue28962 + EnumValue28963 + EnumValue28964 + EnumValue28965 + EnumValue28966 + EnumValue28967 + EnumValue28968 + EnumValue28969 + EnumValue28970 + EnumValue28971 + EnumValue28972 + EnumValue28973 + EnumValue28974 + EnumValue28975 + EnumValue28976 + EnumValue28977 + EnumValue28978 + EnumValue28979 + EnumValue28980 + EnumValue28981 + EnumValue28982 + EnumValue28983 + EnumValue28984 + EnumValue28985 + EnumValue28986 + EnumValue28987 + EnumValue28988 + EnumValue28989 + EnumValue28990 + EnumValue28991 + EnumValue28992 + EnumValue28993 + EnumValue28994 + EnumValue28995 + EnumValue28996 + EnumValue28997 + EnumValue28998 + EnumValue28999 + EnumValue29000 + EnumValue29001 + EnumValue29002 + EnumValue29003 + EnumValue29004 + EnumValue29005 + EnumValue29006 + EnumValue29007 + EnumValue29008 + EnumValue29009 + EnumValue29010 + EnumValue29011 + EnumValue29012 + EnumValue29013 + EnumValue29014 + EnumValue29015 + EnumValue29016 + EnumValue29017 + EnumValue29018 + EnumValue29019 + EnumValue29020 + EnumValue29021 + EnumValue29022 + EnumValue29023 + EnumValue29024 + EnumValue29025 + EnumValue29026 + EnumValue29027 + EnumValue29028 + EnumValue29029 + EnumValue29030 + EnumValue29031 + EnumValue29032 + EnumValue29033 + EnumValue29034 + EnumValue29035 + EnumValue29036 + EnumValue29037 + EnumValue29038 + EnumValue29039 + EnumValue29040 + EnumValue29041 + EnumValue29042 + EnumValue29043 + EnumValue29044 + EnumValue29045 + EnumValue29046 + EnumValue29047 + EnumValue29048 + EnumValue29049 + EnumValue29050 + EnumValue29051 + EnumValue29052 + EnumValue29053 + EnumValue29054 + EnumValue29055 + EnumValue29056 + EnumValue29057 + EnumValue29058 + EnumValue29059 + EnumValue29060 + EnumValue29061 + EnumValue29062 + EnumValue29063 + EnumValue29064 + EnumValue29065 + EnumValue29066 + EnumValue29067 + EnumValue29068 + EnumValue29069 + EnumValue29070 + EnumValue29071 + EnumValue29072 + EnumValue29073 + EnumValue29074 + EnumValue29075 + EnumValue29076 + EnumValue29077 + EnumValue29078 + EnumValue29079 + EnumValue29080 + EnumValue29081 + EnumValue29082 + EnumValue29083 + EnumValue29084 + EnumValue29085 + EnumValue29086 + EnumValue29087 + EnumValue29088 + EnumValue29089 + EnumValue29090 + EnumValue29091 + EnumValue29092 + EnumValue29093 + EnumValue29094 + EnumValue29095 + EnumValue29096 + EnumValue29097 + EnumValue29098 + EnumValue29099 + EnumValue29100 + EnumValue29101 + EnumValue29102 + EnumValue29103 + EnumValue29104 + EnumValue29105 + EnumValue29106 + EnumValue29107 + EnumValue29108 + EnumValue29109 + EnumValue29110 + EnumValue29111 + EnumValue29112 + EnumValue29113 + EnumValue29114 + EnumValue29115 + EnumValue29116 + EnumValue29117 + EnumValue29118 + EnumValue29119 + EnumValue29120 + EnumValue29121 + EnumValue29122 + EnumValue29123 + EnumValue29124 + EnumValue29125 + EnumValue29126 + EnumValue29127 + EnumValue29128 + EnumValue29129 + EnumValue29130 + EnumValue29131 + EnumValue29132 + EnumValue29133 + EnumValue29134 + EnumValue29135 + EnumValue29136 + EnumValue29137 + EnumValue29138 + EnumValue29139 + EnumValue29140 + EnumValue29141 + EnumValue29142 + EnumValue29143 + EnumValue29144 + EnumValue29145 + EnumValue29146 + EnumValue29147 + EnumValue29148 + EnumValue29149 + EnumValue29150 + EnumValue29151 + EnumValue29152 + EnumValue29153 + EnumValue29154 + EnumValue29155 + EnumValue29156 + EnumValue29157 + EnumValue29158 + EnumValue29159 + EnumValue29160 + EnumValue29161 + EnumValue29162 + EnumValue29163 + EnumValue29164 + EnumValue29165 + EnumValue29166 + EnumValue29167 + EnumValue29168 + EnumValue29169 + EnumValue29170 + EnumValue29171 + EnumValue29172 + EnumValue29173 + EnumValue29174 + EnumValue29175 + EnumValue29176 + EnumValue29177 + EnumValue29178 + EnumValue29179 + EnumValue29180 + EnumValue29181 + EnumValue29182 + EnumValue29183 + EnumValue29184 + EnumValue29185 + EnumValue29186 + EnumValue29187 + EnumValue29188 + EnumValue29189 + EnumValue29190 + EnumValue29191 + EnumValue29192 + EnumValue29193 + EnumValue29194 + EnumValue29195 + EnumValue29196 + EnumValue29197 + EnumValue29198 + EnumValue29199 + EnumValue29200 + EnumValue29201 + EnumValue29202 + EnumValue29203 + EnumValue29204 + EnumValue29205 + EnumValue29206 + EnumValue29207 + EnumValue29208 + EnumValue29209 + EnumValue29210 + EnumValue29211 + EnumValue29212 + EnumValue29213 + EnumValue29214 + EnumValue29215 + EnumValue29216 + EnumValue29217 + EnumValue29218 + EnumValue29219 + EnumValue29220 + EnumValue29221 + EnumValue29222 + EnumValue29223 + EnumValue29224 + EnumValue29225 + EnumValue29226 + EnumValue29227 + EnumValue29228 + EnumValue29229 + EnumValue29230 + EnumValue29231 + EnumValue29232 + EnumValue29233 + EnumValue29234 + EnumValue29235 + EnumValue29236 + EnumValue29237 + EnumValue29238 + EnumValue29239 + EnumValue29240 + EnumValue29241 + EnumValue29242 + EnumValue29243 + EnumValue29244 + EnumValue29245 + EnumValue29246 + EnumValue29247 + EnumValue29248 + EnumValue29249 + EnumValue29250 + EnumValue29251 + EnumValue29252 + EnumValue29253 + EnumValue29254 + EnumValue29255 + EnumValue29256 + EnumValue29257 + EnumValue29258 + EnumValue29259 + EnumValue29260 + EnumValue29261 + EnumValue29262 + EnumValue29263 + EnumValue29264 + EnumValue29265 + EnumValue29266 + EnumValue29267 + EnumValue29268 + EnumValue29269 + EnumValue29270 + EnumValue29271 + EnumValue29272 + EnumValue29273 + EnumValue29274 + EnumValue29275 + EnumValue29276 + EnumValue29277 + EnumValue29278 + EnumValue29279 + EnumValue29280 + EnumValue29281 + EnumValue29282 + EnumValue29283 + EnumValue29284 + EnumValue29285 + EnumValue29286 + EnumValue29287 + EnumValue29288 + EnumValue29289 + EnumValue29290 + EnumValue29291 + EnumValue29292 + EnumValue29293 + EnumValue29294 + EnumValue29295 + EnumValue29296 + EnumValue29297 + EnumValue29298 + EnumValue29299 + EnumValue29300 + EnumValue29301 + EnumValue29302 + EnumValue29303 + EnumValue29304 + EnumValue29305 + EnumValue29306 + EnumValue29307 + EnumValue29308 + EnumValue29309 + EnumValue29310 + EnumValue29311 + EnumValue29312 + EnumValue29313 + EnumValue29314 + EnumValue29315 + EnumValue29316 + EnumValue29317 + EnumValue29318 + EnumValue29319 + EnumValue29320 + EnumValue29321 + EnumValue29322 + EnumValue29323 + EnumValue29324 + EnumValue29325 + EnumValue29326 + EnumValue29327 + EnumValue29328 + EnumValue29329 + EnumValue29330 + EnumValue29331 + EnumValue29332 + EnumValue29333 + EnumValue29334 + EnumValue29335 + EnumValue29336 + EnumValue29337 + EnumValue29338 + EnumValue29339 + EnumValue29340 + EnumValue29341 + EnumValue29342 + EnumValue29343 + EnumValue29344 + EnumValue29345 + EnumValue29346 + EnumValue29347 + EnumValue29348 + EnumValue29349 + EnumValue29350 + EnumValue29351 + EnumValue29352 + EnumValue29353 + EnumValue29354 + EnumValue29355 + EnumValue29356 + EnumValue29357 + EnumValue29358 + EnumValue29359 + EnumValue29360 + EnumValue29361 + EnumValue29362 + EnumValue29363 + EnumValue29364 + EnumValue29365 + EnumValue29366 + EnumValue29367 + EnumValue29368 + EnumValue29369 + EnumValue29370 + EnumValue29371 + EnumValue29372 + EnumValue29373 + EnumValue29374 + EnumValue29375 + EnumValue29376 + EnumValue29377 + EnumValue29378 + EnumValue29379 + EnumValue29380 + EnumValue29381 + EnumValue29382 + EnumValue29383 + EnumValue29384 + EnumValue29385 + EnumValue29386 + EnumValue29387 + EnumValue29388 + EnumValue29389 + EnumValue29390 + EnumValue29391 + EnumValue29392 + EnumValue29393 + EnumValue29394 + EnumValue29395 + EnumValue29396 + EnumValue29397 + EnumValue29398 + EnumValue29399 + EnumValue29400 + EnumValue29401 + EnumValue29402 + EnumValue29403 + EnumValue29404 + EnumValue29405 + EnumValue29406 + EnumValue29407 + EnumValue29408 + EnumValue29409 + EnumValue29410 + EnumValue29411 + EnumValue29412 + EnumValue29413 + EnumValue29414 + EnumValue29415 + EnumValue29416 + EnumValue29417 + EnumValue29418 + EnumValue29419 + EnumValue29420 + EnumValue29421 + EnumValue29422 + EnumValue29423 + EnumValue29424 + EnumValue29425 + EnumValue29426 + EnumValue29427 + EnumValue29428 + EnumValue29429 + EnumValue29430 + EnumValue29431 + EnumValue29432 + EnumValue29433 + EnumValue29434 + EnumValue29435 + EnumValue29436 + EnumValue29437 + EnumValue29438 + EnumValue29439 + EnumValue29440 + EnumValue29441 + EnumValue29442 + EnumValue29443 + EnumValue29444 + EnumValue29445 + EnumValue29446 + EnumValue29447 + EnumValue29448 + EnumValue29449 + EnumValue29450 + EnumValue29451 + EnumValue29452 + EnumValue29453 + EnumValue29454 + EnumValue29455 + EnumValue29456 + EnumValue29457 + EnumValue29458 + EnumValue29459 + EnumValue29460 + EnumValue29461 + EnumValue29462 + EnumValue29463 + EnumValue29464 + EnumValue29465 + EnumValue29466 + EnumValue29467 + EnumValue29468 + EnumValue29469 + EnumValue29470 + EnumValue29471 + EnumValue29472 + EnumValue29473 + EnumValue29474 + EnumValue29475 + EnumValue29476 + EnumValue29477 + EnumValue29478 + EnumValue29479 + EnumValue29480 + EnumValue29481 + EnumValue29482 + EnumValue29483 + EnumValue29484 + EnumValue29485 + EnumValue29486 + EnumValue29487 + EnumValue29488 + EnumValue29489 + EnumValue29490 + EnumValue29491 + EnumValue29492 + EnumValue29493 + EnumValue29494 + EnumValue29495 + EnumValue29496 + EnumValue29497 + EnumValue29498 + EnumValue29499 + EnumValue29500 + EnumValue29501 + EnumValue29502 + EnumValue29503 + EnumValue29504 + EnumValue29505 + EnumValue29506 + EnumValue29507 + EnumValue29508 + EnumValue29509 + EnumValue29510 + EnumValue29511 + EnumValue29512 + EnumValue29513 + EnumValue29514 + EnumValue29515 + EnumValue29516 + EnumValue29517 + EnumValue29518 + EnumValue29519 + EnumValue29520 + EnumValue29521 + EnumValue29522 + EnumValue29523 + EnumValue29524 + EnumValue29525 + EnumValue29526 + EnumValue29527 + EnumValue29528 + EnumValue29529 + EnumValue29530 + EnumValue29531 + EnumValue29532 + EnumValue29533 + EnumValue29534 + EnumValue29535 + EnumValue29536 + EnumValue29537 + EnumValue29538 + EnumValue29539 + EnumValue29540 + EnumValue29541 + EnumValue29542 + EnumValue29543 + EnumValue29544 + EnumValue29545 + EnumValue29546 +} + +enum Enum1556 @Directive44(argument97 : ["stringValue28753"]) { + EnumValue29547 + EnumValue29548 + EnumValue29549 + EnumValue29550 + EnumValue29551 +} + +enum Enum1557 @Directive44(argument97 : ["stringValue28756"]) { + EnumValue29552 + EnumValue29553 + EnumValue29554 +} + +enum Enum1558 @Directive44(argument97 : ["stringValue28767"]) { + EnumValue29555 + EnumValue29556 + EnumValue29557 + EnumValue29558 + EnumValue29559 +} + +enum Enum1559 @Directive44(argument97 : ["stringValue28768"]) { + EnumValue29560 + EnumValue29561 + EnumValue29562 +} + +enum Enum156 @Directive19(argument57 : "stringValue2435") @Directive22(argument62 : "stringValue2434") @Directive44(argument97 : ["stringValue2436", "stringValue2437"]) { + EnumValue4083 + EnumValue4084 + EnumValue4085 + EnumValue4086 + EnumValue4087 +} + +enum Enum1560 @Directive44(argument97 : ["stringValue28771"]) { + EnumValue29563 + EnumValue29564 + EnumValue29565 + EnumValue29566 + EnumValue29567 +} + +enum Enum1561 @Directive44(argument97 : ["stringValue28776"]) { + EnumValue29568 + EnumValue29569 + EnumValue29570 + EnumValue29571 + EnumValue29572 +} + +enum Enum1562 @Directive44(argument97 : ["stringValue28781"]) { + EnumValue29573 + EnumValue29574 + EnumValue29575 + EnumValue29576 + EnumValue29577 +} + +enum Enum1563 @Directive44(argument97 : ["stringValue28784"]) { + EnumValue29578 + EnumValue29579 + EnumValue29580 + EnumValue29581 + EnumValue29582 + EnumValue29583 + EnumValue29584 + EnumValue29585 +} + +enum Enum1564 @Directive44(argument97 : ["stringValue28789"]) { + EnumValue29586 + EnumValue29587 + EnumValue29588 + EnumValue29589 + EnumValue29590 +} + +enum Enum1565 @Directive44(argument97 : ["stringValue28792"]) { + EnumValue29591 + EnumValue29592 + EnumValue29593 + EnumValue29594 + EnumValue29595 + EnumValue29596 + EnumValue29597 +} + +enum Enum1566 @Directive44(argument97 : ["stringValue28795"]) { + EnumValue29598 + EnumValue29599 + EnumValue29600 + EnumValue29601 +} + +enum Enum1567 @Directive44(argument97 : ["stringValue28800"]) { + EnumValue29602 + EnumValue29603 + EnumValue29604 + EnumValue29605 + EnumValue29606 + EnumValue29607 +} + +enum Enum1568 @Directive44(argument97 : ["stringValue28803"]) { + EnumValue29608 + EnumValue29609 + EnumValue29610 + EnumValue29611 + EnumValue29612 + EnumValue29613 +} + +enum Enum1569 @Directive44(argument97 : ["stringValue28806"]) { + EnumValue29614 + EnumValue29615 + EnumValue29616 +} + +enum Enum157 @Directive22(argument62 : "stringValue2519") @Directive44(argument97 : ["stringValue2520", "stringValue2521"]) { + EnumValue4088 + EnumValue4089 +} + +enum Enum1570 @Directive44(argument97 : ["stringValue28811"]) { + EnumValue29617 + EnumValue29618 + EnumValue29619 + EnumValue29620 + EnumValue29621 + EnumValue29622 + EnumValue29623 + EnumValue29624 + EnumValue29625 + EnumValue29626 + EnumValue29627 +} + +enum Enum1571 @Directive44(argument97 : ["stringValue28816"]) { + EnumValue29628 + EnumValue29629 + EnumValue29630 +} + +enum Enum1572 @Directive44(argument97 : ["stringValue28819"]) { + EnumValue29631 + EnumValue29632 + EnumValue29633 + EnumValue29634 +} + +enum Enum1573 @Directive44(argument97 : ["stringValue28824"]) { + EnumValue29635 + EnumValue29636 + EnumValue29637 + EnumValue29638 + EnumValue29639 + EnumValue29640 + EnumValue29641 +} + +enum Enum1574 @Directive44(argument97 : ["stringValue28827"]) { + EnumValue29642 + EnumValue29643 + EnumValue29644 +} + +enum Enum1575 @Directive44(argument97 : ["stringValue28830"]) { + EnumValue29645 + EnumValue29646 + EnumValue29647 +} + +enum Enum1576 @Directive44(argument97 : ["stringValue28833"]) { + EnumValue29648 + EnumValue29649 + EnumValue29650 +} + +enum Enum1577 @Directive44(argument97 : ["stringValue28836"]) { + EnumValue29651 + EnumValue29652 + EnumValue29653 + EnumValue29654 +} + +enum Enum1578 @Directive44(argument97 : ["stringValue28843"]) { + EnumValue29655 + EnumValue29656 +} + +enum Enum1579 @Directive44(argument97 : ["stringValue28846"]) { + EnumValue29657 + EnumValue29658 + EnumValue29659 + EnumValue29660 + EnumValue29661 + EnumValue29662 + EnumValue29663 + EnumValue29664 +} + +enum Enum158 @Directive19(argument57 : "stringValue2527") @Directive22(argument62 : "stringValue2526") @Directive44(argument97 : ["stringValue2528", "stringValue2529"]) { + EnumValue4090 + EnumValue4091 + EnumValue4092 + EnumValue4093 + EnumValue4094 + EnumValue4095 +} + +enum Enum1580 @Directive44(argument97 : ["stringValue28851"]) { + EnumValue29665 + EnumValue29666 + EnumValue29667 +} + +enum Enum1581 @Directive44(argument97 : ["stringValue28852"]) { + EnumValue29668 + EnumValue29669 + EnumValue29670 + EnumValue29671 + EnumValue29672 + EnumValue29673 + EnumValue29674 +} + +enum Enum1582 @Directive44(argument97 : ["stringValue28863"]) { + EnumValue29675 + EnumValue29676 + EnumValue29677 + EnumValue29678 +} + +enum Enum1583 @Directive44(argument97 : ["stringValue28866"]) { + EnumValue29679 + EnumValue29680 + EnumValue29681 +} + +enum Enum1584 @Directive44(argument97 : ["stringValue28869"]) { + EnumValue29682 + EnumValue29683 +} + +enum Enum1585 @Directive44(argument97 : ["stringValue28872"]) { + EnumValue29684 + EnumValue29685 + EnumValue29686 + EnumValue29687 +} + +enum Enum1586 @Directive44(argument97 : ["stringValue28873"]) { + EnumValue29688 + EnumValue29689 +} + +enum Enum1587 @Directive44(argument97 : ["stringValue28876"]) { + EnumValue29690 + EnumValue29691 + EnumValue29692 +} + +enum Enum1588 @Directive44(argument97 : ["stringValue28877"]) { + EnumValue29693 + EnumValue29694 + EnumValue29695 + EnumValue29696 + EnumValue29697 + EnumValue29698 + EnumValue29699 + EnumValue29700 + EnumValue29701 + EnumValue29702 + EnumValue29703 + EnumValue29704 +} + +enum Enum1589 @Directive44(argument97 : ["stringValue28880"]) { + EnumValue29705 + EnumValue29706 + EnumValue29707 +} + +enum Enum159 @Directive19(argument57 : "stringValue2531") @Directive22(argument62 : "stringValue2530") @Directive44(argument97 : ["stringValue2532", "stringValue2533"]) { + EnumValue4096 + EnumValue4097 + EnumValue4098 @deprecated + EnumValue4099 + EnumValue4100 + EnumValue4101 + EnumValue4102 + EnumValue4103 + EnumValue4104 + EnumValue4105 + EnumValue4106 + EnumValue4107 + EnumValue4108 + EnumValue4109 + EnumValue4110 + EnumValue4111 + EnumValue4112 + EnumValue4113 + EnumValue4114 + EnumValue4115 + EnumValue4116 +} + +enum Enum1590 @Directive44(argument97 : ["stringValue28883"]) { + EnumValue29708 + EnumValue29709 + EnumValue29710 + EnumValue29711 + EnumValue29712 +} + +enum Enum1591 @Directive44(argument97 : ["stringValue28886"]) { + EnumValue29713 + EnumValue29714 + EnumValue29715 + EnumValue29716 + EnumValue29717 +} + +enum Enum1592 @Directive44(argument97 : ["stringValue28891"]) { + EnumValue29718 + EnumValue29719 + EnumValue29720 + EnumValue29721 + EnumValue29722 + EnumValue29723 + EnumValue29724 + EnumValue29725 + EnumValue29726 + EnumValue29727 + EnumValue29728 + EnumValue29729 + EnumValue29730 + EnumValue29731 + EnumValue29732 + EnumValue29733 + EnumValue29734 + EnumValue29735 + EnumValue29736 + EnumValue29737 + EnumValue29738 + EnumValue29739 + EnumValue29740 + EnumValue29741 + EnumValue29742 + EnumValue29743 + EnumValue29744 + EnumValue29745 + EnumValue29746 + EnumValue29747 + EnumValue29748 + EnumValue29749 + EnumValue29750 + EnumValue29751 + EnumValue29752 + EnumValue29753 + EnumValue29754 + EnumValue29755 + EnumValue29756 + EnumValue29757 + EnumValue29758 + EnumValue29759 + EnumValue29760 + EnumValue29761 + EnumValue29762 +} + +enum Enum1593 @Directive44(argument97 : ["stringValue28930"]) { + EnumValue29763 + EnumValue29764 + EnumValue29765 + EnumValue29766 + EnumValue29767 + EnumValue29768 + EnumValue29769 + EnumValue29770 + EnumValue29771 + EnumValue29772 + EnumValue29773 +} + +enum Enum1594 @Directive44(argument97 : ["stringValue28956"]) { + EnumValue29774 + EnumValue29775 + EnumValue29776 + EnumValue29777 + EnumValue29778 + EnumValue29779 + EnumValue29780 + EnumValue29781 + EnumValue29782 + EnumValue29783 +} + +enum Enum1595 @Directive22(argument62 : "stringValue29223") @Directive44(argument97 : ["stringValue29224", "stringValue29225", "stringValue29226"]) { + EnumValue29784 + EnumValue29785 +} + +enum Enum1596 @Directive19(argument57 : "stringValue29252") @Directive42(argument96 : ["stringValue29251"]) @Directive44(argument97 : ["stringValue29253"]) { + EnumValue29786 + EnumValue29787 + EnumValue29788 + EnumValue29789 + EnumValue29790 + EnumValue29791 + EnumValue29792 + EnumValue29793 + EnumValue29794 + EnumValue29795 + EnumValue29796 + EnumValue29797 + EnumValue29798 + EnumValue29799 +} + +enum Enum1597 @Directive19(argument57 : "stringValue29255") @Directive42(argument96 : ["stringValue29254"]) @Directive44(argument97 : ["stringValue29256"]) { + EnumValue29800 + EnumValue29801 + EnumValue29802 + EnumValue29803 + EnumValue29804 + EnumValue29805 + EnumValue29806 + EnumValue29807 +} + +enum Enum1598 @Directive19(argument57 : "stringValue29258") @Directive42(argument96 : ["stringValue29257"]) @Directive44(argument97 : ["stringValue29259"]) { + EnumValue29808 + EnumValue29809 + EnumValue29810 +} + +enum Enum1599 @Directive19(argument57 : "stringValue29265") @Directive42(argument96 : ["stringValue29264"]) @Directive44(argument97 : ["stringValue29266"]) { + EnumValue29811 + EnumValue29812 + EnumValue29813 + EnumValue29814 + EnumValue29815 + EnumValue29816 + EnumValue29817 +} + +enum Enum16 @Directive44(argument97 : ["stringValue158"]) { + EnumValue766 + EnumValue767 + EnumValue768 + EnumValue769 +} + +enum Enum160 @Directive19(argument57 : "stringValue2543") @Directive22(argument62 : "stringValue2542") @Directive44(argument97 : ["stringValue2544", "stringValue2545"]) { + EnumValue4117 + EnumValue4118 + EnumValue4119 +} + +enum Enum1600 @Directive19(argument57 : "stringValue29336") @Directive42(argument96 : ["stringValue29335"]) @Directive44(argument97 : ["stringValue29337"]) { + EnumValue29818 + EnumValue29819 +} + +enum Enum1601 @Directive19(argument57 : "stringValue29339") @Directive42(argument96 : ["stringValue29338"]) @Directive44(argument97 : ["stringValue29340"]) { + EnumValue29820 + EnumValue29821 + EnumValue29822 + EnumValue29823 + EnumValue29824 + EnumValue29825 + EnumValue29826 + EnumValue29827 + EnumValue29828 + EnumValue29829 + EnumValue29830 + EnumValue29831 + EnumValue29832 + EnumValue29833 + EnumValue29834 + EnumValue29835 + EnumValue29836 + EnumValue29837 + EnumValue29838 + EnumValue29839 +} + +enum Enum1602 @Directive19(argument57 : "stringValue29342") @Directive42(argument96 : ["stringValue29341"]) @Directive44(argument97 : ["stringValue29343"]) { + EnumValue29840 + EnumValue29841 + EnumValue29842 +} + +enum Enum1603 @Directive19(argument57 : "stringValue29365") @Directive42(argument96 : ["stringValue29364"]) @Directive44(argument97 : ["stringValue29366"]) { + EnumValue29843 + EnumValue29844 + EnumValue29845 + EnumValue29846 + EnumValue29847 + EnumValue29848 + EnumValue29849 + EnumValue29850 + EnumValue29851 + EnumValue29852 + EnumValue29853 + EnumValue29854 + EnumValue29855 + EnumValue29856 + EnumValue29857 + EnumValue29858 + EnumValue29859 + EnumValue29860 + EnumValue29861 + EnumValue29862 + EnumValue29863 + EnumValue29864 + EnumValue29865 + EnumValue29866 + EnumValue29867 + EnumValue29868 + EnumValue29869 +} + +enum Enum1604 @Directive19(argument57 : "stringValue29379") @Directive42(argument96 : ["stringValue29378"]) @Directive44(argument97 : ["stringValue29380"]) { + EnumValue29870 + EnumValue29871 + EnumValue29872 + EnumValue29873 + EnumValue29874 + EnumValue29875 + EnumValue29876 + EnumValue29877 + EnumValue29878 + EnumValue29879 + EnumValue29880 + EnumValue29881 + EnumValue29882 + EnumValue29883 + EnumValue29884 + EnumValue29885 + EnumValue29886 + EnumValue29887 + EnumValue29888 + EnumValue29889 + EnumValue29890 + EnumValue29891 + EnumValue29892 + EnumValue29893 + EnumValue29894 + EnumValue29895 + EnumValue29896 + EnumValue29897 + EnumValue29898 + EnumValue29899 + EnumValue29900 + EnumValue29901 + EnumValue29902 + EnumValue29903 + EnumValue29904 + EnumValue29905 + EnumValue29906 + EnumValue29907 + EnumValue29908 + EnumValue29909 + EnumValue29910 + EnumValue29911 + EnumValue29912 + EnumValue29913 + EnumValue29914 + EnumValue29915 + EnumValue29916 + EnumValue29917 + EnumValue29918 + EnumValue29919 + EnumValue29920 +} + +enum Enum1605 @Directive19(argument57 : "stringValue29426") @Directive42(argument96 : ["stringValue29425"]) @Directive44(argument97 : ["stringValue29427"]) { + EnumValue29921 + EnumValue29922 + EnumValue29923 +} + +enum Enum1606 @Directive19(argument57 : "stringValue29429") @Directive42(argument96 : ["stringValue29428"]) @Directive44(argument97 : ["stringValue29430"]) { + EnumValue29924 + EnumValue29925 + EnumValue29926 + EnumValue29927 +} + +enum Enum1607 @Directive19(argument57 : "stringValue29440") @Directive42(argument96 : ["stringValue29439"]) @Directive44(argument97 : ["stringValue29441"]) { + EnumValue29928 + EnumValue29929 + EnumValue29930 +} + +enum Enum1608 @Directive19(argument57 : "stringValue29459") @Directive42(argument96 : ["stringValue29458"]) @Directive44(argument97 : ["stringValue29460"]) { + EnumValue29931 + EnumValue29932 +} + +enum Enum1609 @Directive19(argument57 : "stringValue29486") @Directive42(argument96 : ["stringValue29485"]) @Directive44(argument97 : ["stringValue29487"]) { + EnumValue29933 + EnumValue29934 + EnumValue29935 + EnumValue29936 +} + +enum Enum161 @Directive19(argument57 : "stringValue2547") @Directive22(argument62 : "stringValue2546") @Directive44(argument97 : ["stringValue2548", "stringValue2549"]) { + EnumValue4120 + EnumValue4121 + EnumValue4122 + EnumValue4123 +} + +enum Enum1610 @Directive19(argument57 : "stringValue29513") @Directive42(argument96 : ["stringValue29512"]) @Directive44(argument97 : ["stringValue29514"]) { + EnumValue29937 + EnumValue29938 + EnumValue29939 + EnumValue29940 + EnumValue29941 + EnumValue29942 + EnumValue29943 +} + +enum Enum1611 @Directive19(argument57 : "stringValue29516") @Directive42(argument96 : ["stringValue29515"]) @Directive44(argument97 : ["stringValue29517"]) { + EnumValue29944 + EnumValue29945 + EnumValue29946 + EnumValue29947 + EnumValue29948 + EnumValue29949 +} + +enum Enum1612 @Directive19(argument57 : "stringValue29607") @Directive42(argument96 : ["stringValue29606"]) @Directive44(argument97 : ["stringValue29608"]) { + EnumValue29950 + EnumValue29951 + EnumValue29952 +} + +enum Enum1613 @Directive19(argument57 : "stringValue29610") @Directive42(argument96 : ["stringValue29609"]) @Directive44(argument97 : ["stringValue29611"]) { + EnumValue29953 + EnumValue29954 + EnumValue29955 +} + +enum Enum1614 @Directive19(argument57 : "stringValue29613") @Directive42(argument96 : ["stringValue29612"]) @Directive44(argument97 : ["stringValue29614"]) { + EnumValue29956 + EnumValue29957 + EnumValue29958 + EnumValue29959 + EnumValue29960 + EnumValue29961 + EnumValue29962 + EnumValue29963 + EnumValue29964 + EnumValue29965 + EnumValue29966 + EnumValue29967 + EnumValue29968 + EnumValue29969 + EnumValue29970 + EnumValue29971 + EnumValue29972 + EnumValue29973 + EnumValue29974 + EnumValue29975 + EnumValue29976 + EnumValue29977 + EnumValue29978 + EnumValue29979 + EnumValue29980 + EnumValue29981 + EnumValue29982 +} + +enum Enum1615 @Directive19(argument57 : "stringValue29616") @Directive42(argument96 : ["stringValue29615"]) @Directive44(argument97 : ["stringValue29617"]) { + EnumValue29983 + EnumValue29984 + EnumValue29985 + EnumValue29986 + EnumValue29987 + EnumValue29988 + EnumValue29989 + EnumValue29990 +} + +enum Enum1616 @Directive19(argument57 : "stringValue29639") @Directive42(argument96 : ["stringValue29638"]) @Directive44(argument97 : ["stringValue29640"]) { + EnumValue29991 + EnumValue29992 + EnumValue29993 + EnumValue29994 + EnumValue29995 + EnumValue29996 + EnumValue29997 + EnumValue29998 + EnumValue29999 + EnumValue30000 +} + +enum Enum1617 @Directive19(argument57 : "stringValue29642") @Directive42(argument96 : ["stringValue29641"]) @Directive44(argument97 : ["stringValue29643"]) { + EnumValue30001 + EnumValue30002 + EnumValue30003 + EnumValue30004 + EnumValue30005 + EnumValue30006 + EnumValue30007 + EnumValue30008 + EnumValue30009 + EnumValue30010 + EnumValue30011 + EnumValue30012 + EnumValue30013 + EnumValue30014 + EnumValue30015 + EnumValue30016 + EnumValue30017 +} + +enum Enum1618 @Directive19(argument57 : "stringValue29661") @Directive42(argument96 : ["stringValue29660"]) @Directive44(argument97 : ["stringValue29662"]) { + EnumValue30018 + EnumValue30019 + EnumValue30020 + EnumValue30021 + EnumValue30022 + EnumValue30023 + EnumValue30024 + EnumValue30025 +} + +enum Enum1619 @Directive19(argument57 : "stringValue29692") @Directive42(argument96 : ["stringValue29691"]) @Directive44(argument97 : ["stringValue29693"]) { + EnumValue30026 + EnumValue30027 + EnumValue30028 + EnumValue30029 +} + +enum Enum162 @Directive22(argument62 : "stringValue2550") @Directive44(argument97 : ["stringValue2551", "stringValue2552"]) { + EnumValue4124 + EnumValue4125 + EnumValue4126 +} + +enum Enum1620 @Directive19(argument57 : "stringValue29731") @Directive42(argument96 : ["stringValue29730"]) @Directive44(argument97 : ["stringValue29732"]) { + EnumValue30030 + EnumValue30031 + EnumValue30032 + EnumValue30033 + EnumValue30034 + EnumValue30035 + EnumValue30036 + EnumValue30037 + EnumValue30038 + EnumValue30039 + EnumValue30040 + EnumValue30041 + EnumValue30042 + EnumValue30043 + EnumValue30044 + EnumValue30045 + EnumValue30046 +} + +enum Enum1621 @Directive19(argument57 : "stringValue29734") @Directive42(argument96 : ["stringValue29733"]) @Directive44(argument97 : ["stringValue29735"]) { + EnumValue30047 + EnumValue30048 + EnumValue30049 + EnumValue30050 +} + +enum Enum1622 @Directive19(argument57 : "stringValue29777") @Directive42(argument96 : ["stringValue29776"]) @Directive44(argument97 : ["stringValue29778"]) { + EnumValue30051 + EnumValue30052 + EnumValue30053 + EnumValue30054 +} + +enum Enum1623 @Directive19(argument57 : "stringValue29804") @Directive42(argument96 : ["stringValue29803"]) @Directive44(argument97 : ["stringValue29805"]) { + EnumValue30055 + EnumValue30056 + EnumValue30057 + EnumValue30058 +} + +enum Enum1624 @Directive19(argument57 : "stringValue29814") @Directive42(argument96 : ["stringValue29813"]) @Directive44(argument97 : ["stringValue29815"]) { + EnumValue30059 + EnumValue30060 + EnumValue30061 + EnumValue30062 + EnumValue30063 + EnumValue30064 + EnumValue30065 + EnumValue30066 + EnumValue30067 + EnumValue30068 + EnumValue30069 + EnumValue30070 + EnumValue30071 +} + +enum Enum1625 @Directive42(argument96 : ["stringValue29858"]) @Directive44(argument97 : ["stringValue29859"]) { + EnumValue30072 + EnumValue30073 +} + +enum Enum1626 @Directive19(argument57 : "stringValue29974") @Directive22(argument62 : "stringValue29973") @Directive44(argument97 : ["stringValue29975", "stringValue29976"]) { + EnumValue30074 + EnumValue30075 + EnumValue30076 + EnumValue30077 + EnumValue30078 + EnumValue30079 +} + +enum Enum1627 @Directive19(argument57 : "stringValue30022") @Directive22(argument62 : "stringValue30020") @Directive44(argument97 : ["stringValue30021"]) { + EnumValue30080 + EnumValue30081 + EnumValue30082 + EnumValue30083 +} + +enum Enum1628 @Directive22(argument62 : "stringValue30175") @Directive44(argument97 : ["stringValue30176", "stringValue30177"]) { + EnumValue30084 + EnumValue30085 + EnumValue30086 + EnumValue30087 +} + +enum Enum1629 @Directive22(argument62 : "stringValue30178") @Directive44(argument97 : ["stringValue30179", "stringValue30180"]) { + EnumValue30088 + EnumValue30089 + EnumValue30090 +} + +enum Enum163 @Directive22(argument62 : "stringValue2553") @Directive44(argument97 : ["stringValue2554", "stringValue2555"]) { + EnumValue4127 + EnumValue4128 +} + +enum Enum1630 @Directive19(argument57 : "stringValue30252") @Directive22(argument62 : "stringValue30249") @Directive44(argument97 : ["stringValue30250", "stringValue30251"]) { + EnumValue30091 + EnumValue30092 + EnumValue30093 + EnumValue30094 + EnumValue30095 + EnumValue30096 + EnumValue30097 + EnumValue30098 + EnumValue30099 + EnumValue30100 + EnumValue30101 + EnumValue30102 + EnumValue30103 + EnumValue30104 + EnumValue30105 + EnumValue30106 + EnumValue30107 + EnumValue30108 + EnumValue30109 +} + +enum Enum1631 @Directive19(argument57 : "stringValue30365") @Directive22(argument62 : "stringValue30364") @Directive44(argument97 : ["stringValue30366", "stringValue30367"]) { + EnumValue30110 + EnumValue30111 + EnumValue30112 + EnumValue30113 + EnumValue30114 + EnumValue30115 + EnumValue30116 + EnumValue30117 + EnumValue30118 + EnumValue30119 + EnumValue30120 +} + +enum Enum1632 @Directive19(argument57 : "stringValue30414") @Directive22(argument62 : "stringValue30413") @Directive44(argument97 : ["stringValue30415", "stringValue30416"]) { + EnumValue30121 + EnumValue30122 + EnumValue30123 +} + +enum Enum1633 @Directive22(argument62 : "stringValue30440") @Directive44(argument97 : ["stringValue30441", "stringValue30442"]) { + EnumValue30124 + EnumValue30125 + EnumValue30126 + EnumValue30127 + EnumValue30128 + EnumValue30129 + EnumValue30130 + EnumValue30131 + EnumValue30132 +} + +enum Enum1634 @Directive22(argument62 : "stringValue30507") @Directive44(argument97 : ["stringValue30508"]) { + EnumValue30133 + EnumValue30134 +} + +enum Enum1635 @Directive22(argument62 : "stringValue30509") @Directive44(argument97 : ["stringValue30510"]) { + EnumValue30135 + EnumValue30136 + EnumValue30137 +} + +enum Enum1636 @Directive22(argument62 : "stringValue30512") @Directive44(argument97 : ["stringValue30513"]) { + EnumValue30138 + EnumValue30139 +} + +enum Enum1637 @Directive19(argument57 : "stringValue30564") @Directive22(argument62 : "stringValue30563") @Directive44(argument97 : ["stringValue30565"]) { + EnumValue30140 + EnumValue30141 + EnumValue30142 + EnumValue30143 + EnumValue30144 + EnumValue30145 + EnumValue30146 + EnumValue30147 + EnumValue30148 + EnumValue30149 + EnumValue30150 + EnumValue30151 +} + +enum Enum1638 @Directive19(argument57 : "stringValue30581") @Directive22(argument62 : "stringValue30580") @Directive44(argument97 : ["stringValue30582"]) { + EnumValue30152 + EnumValue30153 + EnumValue30154 + EnumValue30155 + EnumValue30156 + EnumValue30157 + EnumValue30158 + EnumValue30159 + EnumValue30160 + EnumValue30161 + EnumValue30162 + EnumValue30163 +} + +enum Enum1639 @Directive19(argument57 : "stringValue30621") @Directive22(argument62 : "stringValue30620") @Directive44(argument97 : ["stringValue30622", "stringValue30623"]) { + EnumValue30164 + EnumValue30165 + EnumValue30166 + EnumValue30167 + EnumValue30168 + EnumValue30169 + EnumValue30170 + EnumValue30171 + EnumValue30172 + EnumValue30173 +} + +enum Enum164 @Directive19(argument57 : "stringValue2557") @Directive22(argument62 : "stringValue2556") @Directive44(argument97 : ["stringValue2558", "stringValue2559"]) { + EnumValue4129 + EnumValue4130 +} + +enum Enum1640 @Directive22(argument62 : "stringValue30711") @Directive44(argument97 : ["stringValue30712"]) { + EnumValue30174 + EnumValue30175 + EnumValue30176 + EnumValue30177 + EnumValue30178 +} + +enum Enum1641 @Directive22(argument62 : "stringValue30782") @Directive44(argument97 : ["stringValue30783", "stringValue30784"]) { + EnumValue30179 + EnumValue30180 + EnumValue30181 +} + +enum Enum1642 @Directive22(argument62 : "stringValue30936") @Directive44(argument97 : ["stringValue30937", "stringValue30938"]) { + EnumValue30182 + EnumValue30183 + EnumValue30184 + EnumValue30185 +} + +enum Enum1643 @Directive22(argument62 : "stringValue31007") @Directive44(argument97 : ["stringValue31008", "stringValue31009"]) { + EnumValue30186 + EnumValue30187 +} + +enum Enum1644 @Directive22(argument62 : "stringValue31125") @Directive44(argument97 : ["stringValue31126", "stringValue31127"]) { + EnumValue30188 + EnumValue30189 +} + +enum Enum1645 @Directive22(argument62 : "stringValue31215") @Directive44(argument97 : ["stringValue31216", "stringValue31217"]) { + EnumValue30190 + EnumValue30191 +} + +enum Enum1646 @Directive22(argument62 : "stringValue31218") @Directive44(argument97 : ["stringValue31219", "stringValue31220"]) { + EnumValue30192 + EnumValue30193 +} + +enum Enum1647 @Directive22(argument62 : "stringValue31245") @Directive44(argument97 : ["stringValue31246", "stringValue31247"]) { + EnumValue30194 + EnumValue30195 + EnumValue30196 +} + +enum Enum1648 @Directive22(argument62 : "stringValue31285") @Directive44(argument97 : ["stringValue31286", "stringValue31287"]) { + EnumValue30197 + EnumValue30198 + EnumValue30199 +} + +enum Enum1649 @Directive22(argument62 : "stringValue31288") @Directive44(argument97 : ["stringValue31289", "stringValue31290"]) { + EnumValue30200 + EnumValue30201 + EnumValue30202 + EnumValue30203 +} + +enum Enum165 @Directive19(argument57 : "stringValue2569") @Directive22(argument62 : "stringValue2568") @Directive44(argument97 : ["stringValue2570", "stringValue2571"]) { + EnumValue4131 + EnumValue4132 + EnumValue4133 + EnumValue4134 +} + +enum Enum1650 @Directive22(argument62 : "stringValue31303") @Directive44(argument97 : ["stringValue31304", "stringValue31305"]) { + EnumValue30204 + EnumValue30205 + EnumValue30206 +} + +enum Enum1651 @Directive22(argument62 : "stringValue31340") @Directive44(argument97 : ["stringValue31341", "stringValue31342"]) { + EnumValue30207 +} + +enum Enum1652 @Directive22(argument62 : "stringValue31364") @Directive44(argument97 : ["stringValue31365", "stringValue31366"]) { + EnumValue30208 + EnumValue30209 +} + +enum Enum1653 @Directive22(argument62 : "stringValue31429") @Directive44(argument97 : ["stringValue31430", "stringValue31431"]) { + EnumValue30210 + EnumValue30211 +} + +enum Enum1654 @Directive22(argument62 : "stringValue31549") @Directive44(argument97 : ["stringValue31550", "stringValue31551", "stringValue31552"]) { + EnumValue30212 + EnumValue30213 + EnumValue30214 + EnumValue30215 + EnumValue30216 +} + +enum Enum1655 @Directive22(argument62 : "stringValue31565") @Directive44(argument97 : ["stringValue31566", "stringValue31567", "stringValue31568"]) { + EnumValue30217 + EnumValue30218 + EnumValue30219 +} + +enum Enum1656 @Directive22(argument62 : "stringValue31569") @Directive44(argument97 : ["stringValue31570", "stringValue31571", "stringValue31572"]) { + EnumValue30220 + EnumValue30221 + EnumValue30222 +} + +enum Enum1657 @Directive22(argument62 : "stringValue31577") @Directive44(argument97 : ["stringValue31578", "stringValue31579", "stringValue31580"]) { + EnumValue30223 + EnumValue30224 + EnumValue30225 + EnumValue30226 +} + +enum Enum1658 @Directive22(argument62 : "stringValue31581") @Directive44(argument97 : ["stringValue31582", "stringValue31583", "stringValue31584"]) { + EnumValue30227 + EnumValue30228 +} + +enum Enum1659 @Directive22(argument62 : "stringValue31720") @Directive44(argument97 : ["stringValue31721", "stringValue31722"]) { + EnumValue30229 + EnumValue30230 + EnumValue30231 + EnumValue30232 + EnumValue30233 + EnumValue30234 + EnumValue30235 + EnumValue30236 + EnumValue30237 + EnumValue30238 + EnumValue30239 + EnumValue30240 +} + +enum Enum166 @Directive19(argument57 : "stringValue2573") @Directive22(argument62 : "stringValue2572") @Directive44(argument97 : ["stringValue2574", "stringValue2575"]) { + EnumValue4135 + EnumValue4136 +} + +enum Enum1661 @Directive19(argument57 : "stringValue32932") @Directive22(argument62 : "stringValue32931") @Directive44(argument97 : ["stringValue32929", "stringValue32930"]) { + EnumValue30242 + EnumValue30243 + EnumValue30244 + EnumValue30245 + EnumValue30246 + EnumValue30247 +} + +enum Enum1662 @Directive19(argument57 : "stringValue32898") @Directive22(argument62 : "stringValue32897") @Directive44(argument97 : ["stringValue32895", "stringValue32896"]) { + EnumValue30248 + EnumValue30249 +} + +enum Enum1663 @Directive22(argument62 : "stringValue31897") @Directive44(argument97 : ["stringValue31898", "stringValue31899"]) { + EnumValue30250 + EnumValue30251 +} + +enum Enum1664 @Directive22(argument62 : "stringValue31968") @Directive44(argument97 : ["stringValue31969", "stringValue31970"]) { + EnumValue30252 + EnumValue30253 + EnumValue30254 + EnumValue30255 + EnumValue30256 + EnumValue30257 +} + +enum Enum1665 @Directive22(argument62 : "stringValue31986") @Directive44(argument97 : ["stringValue31987", "stringValue31988"]) { + EnumValue30258 + EnumValue30259 + EnumValue30260 + EnumValue30261 + EnumValue30262 + EnumValue30263 + EnumValue30264 + EnumValue30265 + EnumValue30266 + EnumValue30267 + EnumValue30268 + EnumValue30269 + EnumValue30270 + EnumValue30271 + EnumValue30272 + EnumValue30273 + EnumValue30274 + EnumValue30275 +} + +enum Enum1666 @Directive22(argument62 : "stringValue32010") @Directive44(argument97 : ["stringValue32011", "stringValue32012"]) { + EnumValue30276 + EnumValue30277 + EnumValue30278 + EnumValue30279 + EnumValue30280 + EnumValue30281 + EnumValue30282 + EnumValue30283 + EnumValue30284 + EnumValue30285 + EnumValue30286 + EnumValue30287 +} + +enum Enum1667 @Directive19(argument57 : "stringValue32065") @Directive22(argument62 : "stringValue32066") @Directive44(argument97 : ["stringValue32067", "stringValue32068"]) { + EnumValue30288 + EnumValue30289 + EnumValue30290 +} + +enum Enum1668 @Directive19(argument57 : "stringValue32069") @Directive22(argument62 : "stringValue32070") @Directive44(argument97 : ["stringValue32071", "stringValue32072"]) { + EnumValue30291 + EnumValue30292 +} + +enum Enum1669 @Directive19(argument57 : "stringValue32073") @Directive22(argument62 : "stringValue32074") @Directive44(argument97 : ["stringValue32075", "stringValue32076"]) { + EnumValue30293 + EnumValue30294 + EnumValue30295 + EnumValue30296 + EnumValue30297 + EnumValue30298 + EnumValue30299 +} + +enum Enum167 @Directive22(argument62 : "stringValue2576") @Directive44(argument97 : ["stringValue2577", "stringValue2578"]) { + EnumValue4137 +} + +enum Enum1670 @Directive19(argument57 : "stringValue32115") @Directive22(argument62 : "stringValue32112") @Directive44(argument97 : ["stringValue32113", "stringValue32114"]) { + EnumValue30300 + EnumValue30301 + EnumValue30302 + EnumValue30303 + EnumValue30304 + EnumValue30305 +} + +enum Enum1671 @Directive19(argument57 : "stringValue32124") @Directive22(argument62 : "stringValue32123") @Directive44(argument97 : ["stringValue32125", "stringValue32126"]) { + EnumValue30306 + EnumValue30307 + EnumValue30308 + EnumValue30309 + EnumValue30310 + EnumValue30311 + EnumValue30312 +} + +enum Enum1672 @Directive22(argument62 : "stringValue32163") @Directive44(argument97 : ["stringValue32164", "stringValue32165"]) { + EnumValue30313 + EnumValue30314 + EnumValue30315 + EnumValue30316 + EnumValue30317 + EnumValue30318 + EnumValue30319 + EnumValue30320 + EnumValue30321 + EnumValue30322 + EnumValue30323 +} + +enum Enum1673 @Directive22(argument62 : "stringValue32166") @Directive44(argument97 : ["stringValue32167", "stringValue32168"]) { + EnumValue30324 + EnumValue30325 + EnumValue30326 + EnumValue30327 +} + +enum Enum1674 @Directive19(argument57 : "stringValue32174") @Directive22(argument62 : "stringValue32175") @Directive44(argument97 : ["stringValue32176", "stringValue32177"]) { + EnumValue30328 + EnumValue30329 + EnumValue30330 + EnumValue30331 + EnumValue30332 + EnumValue30333 + EnumValue30334 + EnumValue30335 + EnumValue30336 + EnumValue30337 + EnumValue30338 + EnumValue30339 + EnumValue30340 + EnumValue30341 + EnumValue30342 + EnumValue30343 + EnumValue30344 + EnumValue30345 + EnumValue30346 + EnumValue30347 + EnumValue30348 + EnumValue30349 + EnumValue30350 + EnumValue30351 + EnumValue30352 + EnumValue30353 + EnumValue30354 + EnumValue30355 + EnumValue30356 + EnumValue30357 + EnumValue30358 + EnumValue30359 + EnumValue30360 + EnumValue30361 + EnumValue30362 + EnumValue30363 + EnumValue30364 + EnumValue30365 + EnumValue30366 + EnumValue30367 + EnumValue30368 + EnumValue30369 + EnumValue30370 + EnumValue30371 + EnumValue30372 + EnumValue30373 + EnumValue30374 + EnumValue30375 + EnumValue30376 + EnumValue30377 + EnumValue30378 + EnumValue30379 + EnumValue30380 + EnumValue30381 + EnumValue30382 +} + +enum Enum1675 @Directive19(argument57 : "stringValue32187") @Directive42(argument96 : ["stringValue32186"]) @Directive44(argument97 : ["stringValue32188"]) { + EnumValue30383 + EnumValue30384 +} + +enum Enum1676 @Directive42(argument96 : ["stringValue32259"]) @Directive44(argument97 : ["stringValue32260", "stringValue32261"]) { + EnumValue30385 + EnumValue30386 + EnumValue30387 +} + +enum Enum1677 @Directive19(argument57 : "stringValue32370") @Directive22(argument62 : "stringValue32369") @Directive44(argument97 : ["stringValue32371", "stringValue32372"]) { + EnumValue30388 + EnumValue30389 + EnumValue30390 + EnumValue30391 +} + +enum Enum1678 @Directive19(argument57 : "stringValue32374") @Directive22(argument62 : "stringValue32373") @Directive44(argument97 : ["stringValue32375", "stringValue32376"]) { + EnumValue30392 + EnumValue30393 + EnumValue30394 + EnumValue30395 + EnumValue30396 + EnumValue30397 + EnumValue30398 + EnumValue30399 + EnumValue30400 + EnumValue30401 + EnumValue30402 + EnumValue30403 + EnumValue30404 + EnumValue30405 + EnumValue30406 + EnumValue30407 + EnumValue30408 + EnumValue30409 +} + +enum Enum1679 @Directive19(argument57 : "stringValue32387") @Directive22(argument62 : "stringValue32384") @Directive44(argument97 : ["stringValue32385", "stringValue32386"]) { + EnumValue30410 + EnumValue30411 + EnumValue30412 + EnumValue30413 + EnumValue30414 + EnumValue30415 + EnumValue30416 +} + +enum Enum168 @Directive22(argument62 : "stringValue2592") @Directive44(argument97 : ["stringValue2593", "stringValue2594"]) { + EnumValue4138 + EnumValue4139 +} + +enum Enum1680 @Directive19(argument57 : "stringValue32397") @Directive22(argument62 : "stringValue32394") @Directive44(argument97 : ["stringValue32395", "stringValue32396"]) { + EnumValue30417 + EnumValue30418 + EnumValue30419 +} + +enum Enum1681 @Directive19(argument57 : "stringValue32418") @Directive22(argument62 : "stringValue32417") @Directive44(argument97 : ["stringValue32419", "stringValue32420"]) { + EnumValue30420 + EnumValue30421 + EnumValue30422 +} + +enum Enum1682 @Directive22(argument62 : "stringValue32470") @Directive44(argument97 : ["stringValue32471", "stringValue32472"]) { + EnumValue30423 + EnumValue30424 + EnumValue30425 +} + +enum Enum1683 @Directive22(argument62 : "stringValue32473") @Directive44(argument97 : ["stringValue32474", "stringValue32475"]) { + EnumValue30426 + EnumValue30427 + EnumValue30428 +} + +enum Enum1684 @Directive19(argument57 : "stringValue32528") @Directive22(argument62 : "stringValue32529") @Directive44(argument97 : ["stringValue32530", "stringValue32531"]) { + EnumValue30429 + EnumValue30430 + EnumValue30431 + EnumValue30432 +} + +enum Enum1685 @Directive22(argument62 : "stringValue32577") @Directive44(argument97 : ["stringValue32578", "stringValue32579"]) { + EnumValue30433 +} + +enum Enum1686 @Directive22(argument62 : "stringValue32580") @Directive44(argument97 : ["stringValue32581", "stringValue32582"]) { + EnumValue30434 + EnumValue30435 +} + +enum Enum1687 @Directive22(argument62 : "stringValue32611") @Directive44(argument97 : ["stringValue32612", "stringValue32613"]) { + EnumValue30436 + EnumValue30437 +} + +enum Enum1688 @Directive42(argument96 : ["stringValue32800"]) @Directive44(argument97 : ["stringValue32801", "stringValue32802"]) { + EnumValue30438 + EnumValue30439 +} + +enum Enum1689 @Directive22(argument62 : "stringValue32876") @Directive44(argument97 : ["stringValue32877", "stringValue32878"]) { + EnumValue30440 + EnumValue30441 +} + +enum Enum169 @Directive19(argument57 : "stringValue2603") @Directive22(argument62 : "stringValue2602") @Directive44(argument97 : ["stringValue2604", "stringValue2605"]) { + EnumValue4140 + EnumValue4141 + EnumValue4142 + EnumValue4143 + EnumValue4144 + EnumValue4145 +} + +enum Enum1690 @Directive19(argument57 : "stringValue32916") @Directive22(argument62 : "stringValue32915") @Directive44(argument97 : ["stringValue32914"]) { + EnumValue30442 + EnumValue30443 +} + +enum Enum1691 @Directive19(argument57 : "stringValue32923") @Directive22(argument62 : "stringValue32922") @Directive44(argument97 : ["stringValue32921"]) { + EnumValue30444 + EnumValue30445 + EnumValue30446 + EnumValue30447 +} + +enum Enum1692 @Directive19(argument57 : "stringValue32949") @Directive22(argument62 : "stringValue32948") @Directive44(argument97 : ["stringValue32947"]) { + EnumValue30448 + EnumValue30449 + EnumValue30450 + EnumValue30451 +} + +enum Enum1693 @Directive22(argument62 : "stringValue32956") @Directive44(argument97 : ["stringValue32955"]) { + EnumValue30452 + EnumValue30453 +} + +enum Enum1694 @Directive19(argument57 : "stringValue32997") @Directive22(argument62 : "stringValue32994") @Directive44(argument97 : ["stringValue32995", "stringValue32996"]) { + EnumValue30454 + EnumValue30455 +} + +enum Enum1695 @Directive19(argument57 : "stringValue33034") @Directive22(argument62 : "stringValue33031") @Directive44(argument97 : ["stringValue33032", "stringValue33033"]) { + EnumValue30456 + EnumValue30457 + EnumValue30458 + EnumValue30459 + EnumValue30460 + EnumValue30461 + EnumValue30462 + EnumValue30463 +} + +enum Enum1696 @Directive19(argument57 : "stringValue33050") @Directive22(argument62 : "stringValue33047") @Directive44(argument97 : ["stringValue33048", "stringValue33049"]) { + EnumValue30464 + EnumValue30465 + EnumValue30466 + EnumValue30467 +} + +enum Enum1697 @Directive19(argument57 : "stringValue33057") @Directive22(argument62 : "stringValue33054") @Directive44(argument97 : ["stringValue33055", "stringValue33056"]) { + EnumValue30468 +} + +enum Enum1698 @Directive19(argument57 : "stringValue33064") @Directive22(argument62 : "stringValue33061") @Directive44(argument97 : ["stringValue33062", "stringValue33063"]) { + EnumValue30469 + EnumValue30470 + EnumValue30471 + EnumValue30472 + EnumValue30473 + EnumValue30474 +} + +enum Enum1699 @Directive19(argument57 : "stringValue33068") @Directive22(argument62 : "stringValue33065") @Directive44(argument97 : ["stringValue33066", "stringValue33067"]) { + EnumValue30475 + EnumValue30476 + EnumValue30477 + EnumValue30478 + EnumValue30479 + EnumValue30480 + EnumValue30481 + EnumValue30482 + EnumValue30483 + EnumValue30484 + EnumValue30485 + EnumValue30486 + EnumValue30487 + EnumValue30488 + EnumValue30489 + EnumValue30490 + EnumValue30491 + EnumValue30492 + EnumValue30493 + EnumValue30494 + EnumValue30495 + EnumValue30496 + EnumValue30497 + EnumValue30498 + EnumValue30499 + EnumValue30500 + EnumValue30501 + EnumValue30502 + EnumValue30503 + EnumValue30504 + EnumValue30505 + EnumValue30506 + EnumValue30507 + EnumValue30508 + EnumValue30509 + EnumValue30510 + EnumValue30511 + EnumValue30512 + EnumValue30513 + EnumValue30514 + EnumValue30515 + EnumValue30516 + EnumValue30517 + EnumValue30518 + EnumValue30519 + EnumValue30520 + EnumValue30521 + EnumValue30522 + EnumValue30523 + EnumValue30524 + EnumValue30525 + EnumValue30526 + EnumValue30527 + EnumValue30528 + EnumValue30529 + EnumValue30530 + EnumValue30531 + EnumValue30532 + EnumValue30533 + EnumValue30534 + EnumValue30535 + EnumValue30536 + EnumValue30537 + EnumValue30538 + EnumValue30539 + EnumValue30540 + EnumValue30541 + EnumValue30542 + EnumValue30543 + EnumValue30544 + EnumValue30545 + EnumValue30546 + EnumValue30547 + EnumValue30548 + EnumValue30549 + EnumValue30550 + EnumValue30551 + EnumValue30552 + EnumValue30553 + EnumValue30554 + EnumValue30555 + EnumValue30556 + EnumValue30557 + EnumValue30558 + EnumValue30559 + EnumValue30560 + EnumValue30561 + EnumValue30562 + EnumValue30563 + EnumValue30564 + EnumValue30565 + EnumValue30566 + EnumValue30567 + EnumValue30568 +} + +enum Enum17 @Directive44(argument97 : ["stringValue159"]) { + EnumValue770 + EnumValue771 + EnumValue772 +} + +enum Enum170 @Directive19(argument57 : "stringValue2611") @Directive22(argument62 : "stringValue2610") @Directive44(argument97 : ["stringValue2612", "stringValue2613"]) { + EnumValue4146 + EnumValue4147 +} + +enum Enum1700 @Directive22(argument62 : "stringValue33091") @Directive44(argument97 : ["stringValue33092", "stringValue33093"]) { + EnumValue30569 +} + +enum Enum1701 @Directive19(argument57 : "stringValue33294") @Directive22(argument62 : "stringValue33291") @Directive44(argument97 : ["stringValue33292", "stringValue33293"]) { + EnumValue30570 + EnumValue30571 +} + +enum Enum1702 @Directive22(argument62 : "stringValue33353") @Directive44(argument97 : ["stringValue33351", "stringValue33352"]) { + EnumValue30572 + EnumValue30573 + EnumValue30574 +} + +enum Enum1703 @Directive19(argument57 : "stringValue33382") @Directive22(argument62 : "stringValue33381") @Directive44(argument97 : ["stringValue33383", "stringValue33384"]) { + EnumValue30575 + EnumValue30576 + EnumValue30577 + EnumValue30578 + EnumValue30579 + EnumValue30580 + EnumValue30581 + EnumValue30582 + EnumValue30583 + EnumValue30584 + EnumValue30585 +} + +enum Enum1704 @Directive19(argument57 : "stringValue33428") @Directive22(argument62 : "stringValue33427") @Directive44(argument97 : ["stringValue33429", "stringValue33430"]) { + EnumValue30586 + EnumValue30587 + EnumValue30588 + EnumValue30589 + EnumValue30590 + EnumValue30591 + EnumValue30592 + EnumValue30593 +} + +enum Enum1705 @Directive19(argument57 : "stringValue33447") @Directive22(argument62 : "stringValue33446") @Directive44(argument97 : ["stringValue33448", "stringValue33449"]) { + EnumValue30594 + EnumValue30595 + EnumValue30596 + EnumValue30597 +} + +enum Enum1706 @Directive19(argument57 : "stringValue33462") @Directive22(argument62 : "stringValue33461") @Directive44(argument97 : ["stringValue33463", "stringValue33464"]) { + EnumValue30598 +} + +enum Enum1707 @Directive22(argument62 : "stringValue33494") @Directive44(argument97 : ["stringValue33492", "stringValue33493"]) { + EnumValue30599 + EnumValue30600 + EnumValue30601 + EnumValue30602 + EnumValue30603 + EnumValue30604 + EnumValue30605 + EnumValue30606 + EnumValue30607 + EnumValue30608 + EnumValue30609 + EnumValue30610 + EnumValue30611 + EnumValue30612 + EnumValue30613 + EnumValue30614 + EnumValue30615 + EnumValue30616 + EnumValue30617 + EnumValue30618 + EnumValue30619 + EnumValue30620 + EnumValue30621 + EnumValue30622 + EnumValue30623 + EnumValue30624 + EnumValue30625 +} + +enum Enum1708 @Directive22(argument62 : "stringValue33512") @Directive44(argument97 : ["stringValue33510", "stringValue33511"]) { + EnumValue30626 + EnumValue30627 + EnumValue30628 +} + +enum Enum1709 @Directive22(argument62 : "stringValue33538") @Directive44(argument97 : ["stringValue33539", "stringValue33540"]) { + EnumValue30629 + EnumValue30630 + EnumValue30631 + EnumValue30632 +} + +enum Enum171 @Directive22(argument62 : "stringValue2624") @Directive44(argument97 : ["stringValue2625", "stringValue2626"]) { + EnumValue4148 + EnumValue4149 + EnumValue4150 + EnumValue4151 + EnumValue4152 + EnumValue4153 +} + +enum Enum1710 @Directive22(argument62 : "stringValue33541") @Directive44(argument97 : ["stringValue33542", "stringValue33543"]) { + EnumValue30633 + EnumValue30634 +} + +enum Enum1711 @Directive44(argument97 : ["stringValue33589"]) { + EnumValue30635 + EnumValue30636 + EnumValue30637 + EnumValue30638 + EnumValue30639 + EnumValue30640 + EnumValue30641 + EnumValue30642 + EnumValue30643 + EnumValue30644 + EnumValue30645 + EnumValue30646 + EnumValue30647 + EnumValue30648 + EnumValue30649 + EnumValue30650 + EnumValue30651 + EnumValue30652 + EnumValue30653 + EnumValue30654 + EnumValue30655 + EnumValue30656 + EnumValue30657 + EnumValue30658 + EnumValue30659 + EnumValue30660 + EnumValue30661 + EnumValue30662 + EnumValue30663 + EnumValue30664 + EnumValue30665 +} + +enum Enum1712 @Directive44(argument97 : ["stringValue33596"]) { + EnumValue30666 + EnumValue30667 + EnumValue30668 + EnumValue30669 + EnumValue30670 +} + +enum Enum1713 @Directive44(argument97 : ["stringValue33599"]) { + EnumValue30671 + EnumValue30672 + EnumValue30673 + EnumValue30674 + EnumValue30675 + EnumValue30676 + EnumValue30677 +} + +enum Enum1714 @Directive44(argument97 : ["stringValue33604"]) { + EnumValue30678 + EnumValue30679 + EnumValue30680 + EnumValue30681 +} + +enum Enum1715 @Directive44(argument97 : ["stringValue33605"]) { + EnumValue30682 + EnumValue30683 + EnumValue30684 + EnumValue30685 + EnumValue30686 +} + +enum Enum1716 @Directive44(argument97 : ["stringValue33606"]) { + EnumValue30687 + EnumValue30688 + EnumValue30689 + EnumValue30690 + EnumValue30691 + EnumValue30692 + EnumValue30693 + EnumValue30694 + EnumValue30695 + EnumValue30696 + EnumValue30697 + EnumValue30698 +} + +enum Enum1717 @Directive44(argument97 : ["stringValue33607"]) { + EnumValue30699 + EnumValue30700 + EnumValue30701 + EnumValue30702 + EnumValue30703 + EnumValue30704 +} + +enum Enum1718 @Directive44(argument97 : ["stringValue33608"]) { + EnumValue30705 + EnumValue30706 + EnumValue30707 + EnumValue30708 + EnumValue30709 + EnumValue30710 + EnumValue30711 + EnumValue30712 + EnumValue30713 + EnumValue30714 + EnumValue30715 + EnumValue30716 + EnumValue30717 + EnumValue30718 + EnumValue30719 +} + +enum Enum1719 @Directive44(argument97 : ["stringValue33631"]) { + EnumValue30720 + EnumValue30721 + EnumValue30722 + EnumValue30723 +} + +enum Enum172 @Directive19(argument57 : "stringValue2628") @Directive22(argument62 : "stringValue2627") @Directive44(argument97 : ["stringValue2629", "stringValue2630"]) { + EnumValue4154 + EnumValue4155 + EnumValue4156 + EnumValue4157 + EnumValue4158 + EnumValue4159 + EnumValue4160 + EnumValue4161 +} + +enum Enum1720 @Directive44(argument97 : ["stringValue33690"]) { + EnumValue30724 + EnumValue30725 +} + +enum Enum1721 @Directive44(argument97 : ["stringValue33691"]) { + EnumValue30726 + EnumValue30727 + EnumValue30728 + EnumValue30729 +} + +enum Enum1722 @Directive44(argument97 : ["stringValue33693"]) { + EnumValue30730 + EnumValue30731 + EnumValue30732 + EnumValue30733 + EnumValue30734 + EnumValue30735 + EnumValue30736 +} + +enum Enum1723 @Directive44(argument97 : ["stringValue33694"]) { + EnumValue30737 + EnumValue30738 + EnumValue30739 +} + +enum Enum1724 @Directive44(argument97 : ["stringValue33697"]) { + EnumValue30740 + EnumValue30741 + EnumValue30742 + EnumValue30743 + EnumValue30744 + EnumValue30745 +} + +enum Enum1725 @Directive44(argument97 : ["stringValue33702"]) { + EnumValue30746 + EnumValue30747 + EnumValue30748 +} + +enum Enum1726 @Directive44(argument97 : ["stringValue33716"]) { + EnumValue30749 + EnumValue30750 + EnumValue30751 +} + +enum Enum1727 @Directive44(argument97 : ["stringValue33724"]) { + EnumValue30752 + EnumValue30753 + EnumValue30754 +} + +enum Enum1728 @Directive44(argument97 : ["stringValue33767"]) { + EnumValue30755 + EnumValue30756 +} + +enum Enum1729 @Directive44(argument97 : ["stringValue33899"]) { + EnumValue30757 + EnumValue30758 + EnumValue30759 + EnumValue30760 +} + +enum Enum173 @Directive19(argument57 : "stringValue2647") @Directive22(argument62 : "stringValue2646") @Directive44(argument97 : ["stringValue2648", "stringValue2649"]) { + EnumValue4162 + EnumValue4163 + EnumValue4164 + EnumValue4165 + EnumValue4166 + EnumValue4167 +} + +enum Enum1730 @Directive44(argument97 : ["stringValue33918"]) { + EnumValue30761 + EnumValue30762 + EnumValue30763 + EnumValue30764 +} + +enum Enum1731 @Directive44(argument97 : ["stringValue33921"]) { + EnumValue30765 + EnumValue30766 + EnumValue30767 +} + +enum Enum1732 @Directive44(argument97 : ["stringValue33955"]) { + EnumValue30768 + EnumValue30769 +} + +enum Enum1733 @Directive44(argument97 : ["stringValue34039"]) { + EnumValue30770 + EnumValue30771 + EnumValue30772 +} + +enum Enum1734 @Directive44(argument97 : ["stringValue34046"]) { + EnumValue30773 + EnumValue30774 + EnumValue30775 + EnumValue30776 + EnumValue30777 + EnumValue30778 +} + +enum Enum1735 @Directive44(argument97 : ["stringValue34058"]) { + EnumValue30779 + EnumValue30780 + EnumValue30781 + EnumValue30782 + EnumValue30783 + EnumValue30784 + EnumValue30785 + EnumValue30786 + EnumValue30787 + EnumValue30788 +} + +enum Enum1736 @Directive44(argument97 : ["stringValue34061"]) { + EnumValue30789 + EnumValue30790 + EnumValue30791 + EnumValue30792 + EnumValue30793 +} + +enum Enum1737 @Directive44(argument97 : ["stringValue34064"]) { + EnumValue30794 + EnumValue30795 + EnumValue30796 + EnumValue30797 + EnumValue30798 +} + +enum Enum1738 @Directive44(argument97 : ["stringValue34069"]) { + EnumValue30799 + EnumValue30800 + EnumValue30801 + EnumValue30802 +} + +enum Enum1739 @Directive44(argument97 : ["stringValue34074"]) { + EnumValue30803 + EnumValue30804 + EnumValue30805 + EnumValue30806 +} + +enum Enum174 @Directive19(argument57 : "stringValue2651") @Directive22(argument62 : "stringValue2650") @Directive44(argument97 : ["stringValue2652", "stringValue2653"]) { + EnumValue4168 + EnumValue4169 + EnumValue4170 + EnumValue4171 +} + +enum Enum1740 @Directive44(argument97 : ["stringValue34075"]) { + EnumValue30807 + EnumValue30808 + EnumValue30809 + EnumValue30810 + EnumValue30811 + EnumValue30812 +} + +enum Enum1741 @Directive44(argument97 : ["stringValue34080"]) { + EnumValue30813 + EnumValue30814 + EnumValue30815 + EnumValue30816 +} + +enum Enum1742 @Directive44(argument97 : ["stringValue34081"]) { + EnumValue30817 + EnumValue30818 + EnumValue30819 + EnumValue30820 + EnumValue30821 +} + +enum Enum1743 @Directive44(argument97 : ["stringValue34128"]) { + EnumValue30822 + EnumValue30823 + EnumValue30824 + EnumValue30825 + EnumValue30826 +} + +enum Enum1744 @Directive44(argument97 : ["stringValue34152"]) { + EnumValue30827 + EnumValue30828 + EnumValue30829 +} + +enum Enum1745 @Directive44(argument97 : ["stringValue34159"]) { + EnumValue30830 + EnumValue30831 + EnumValue30832 + EnumValue30833 + EnumValue30834 + EnumValue30835 + EnumValue30836 + EnumValue30837 + EnumValue30838 + EnumValue30839 + EnumValue30840 + EnumValue30841 + EnumValue30842 +} + +enum Enum1746 @Directive44(argument97 : ["stringValue34174"]) { + EnumValue30843 + EnumValue30844 + EnumValue30845 +} + +enum Enum1747 @Directive44(argument97 : ["stringValue34175"]) { + EnumValue30846 + EnumValue30847 + EnumValue30848 + EnumValue30849 + EnumValue30850 + EnumValue30851 + EnumValue30852 + EnumValue30853 +} + +enum Enum1748 @Directive44(argument97 : ["stringValue34178"]) { + EnumValue30854 + EnumValue30855 + EnumValue30856 + EnumValue30857 + EnumValue30858 +} + +enum Enum1749 @Directive44(argument97 : ["stringValue34195"]) { + EnumValue30859 + EnumValue30860 + EnumValue30861 + EnumValue30862 +} + +enum Enum175 @Directive19(argument57 : "stringValue2692") @Directive42(argument96 : ["stringValue2691"]) @Directive44(argument97 : ["stringValue2693", "stringValue2694"]) { + EnumValue4172 + EnumValue4173 + EnumValue4174 + EnumValue4175 + EnumValue4176 + EnumValue4177 + EnumValue4178 + EnumValue4179 + EnumValue4180 + EnumValue4181 + EnumValue4182 + EnumValue4183 + EnumValue4184 + EnumValue4185 + EnumValue4186 + EnumValue4187 + EnumValue4188 +} + +enum Enum1750 @Directive44(argument97 : ["stringValue34223"]) { + EnumValue30863 + EnumValue30864 + EnumValue30865 + EnumValue30866 + EnumValue30867 + EnumValue30868 + EnumValue30869 + EnumValue30870 + EnumValue30871 + EnumValue30872 + EnumValue30873 + EnumValue30874 + EnumValue30875 +} + +enum Enum1751 @Directive44(argument97 : ["stringValue34260"]) { + EnumValue30876 + EnumValue30877 + EnumValue30878 +} + +enum Enum1752 @Directive44(argument97 : ["stringValue34263"]) { + EnumValue30879 + EnumValue30880 + EnumValue30881 + EnumValue30882 + EnumValue30883 + EnumValue30884 + EnumValue30885 + EnumValue30886 + EnumValue30887 +} + +enum Enum1753 @Directive44(argument97 : ["stringValue34275"]) { + EnumValue30888 + EnumValue30889 +} + +enum Enum1754 @Directive44(argument97 : ["stringValue34280"]) { + EnumValue30890 + EnumValue30891 + EnumValue30892 +} + +enum Enum1755 @Directive44(argument97 : ["stringValue34493"]) { + EnumValue30893 + EnumValue30894 + EnumValue30895 + EnumValue30896 + EnumValue30897 + EnumValue30898 + EnumValue30899 + EnumValue30900 +} + +enum Enum1756 @Directive44(argument97 : ["stringValue34546"]) { + EnumValue30901 + EnumValue30902 + EnumValue30903 + EnumValue30904 + EnumValue30905 + EnumValue30906 + EnumValue30907 + EnumValue30908 + EnumValue30909 + EnumValue30910 + EnumValue30911 + EnumValue30912 + EnumValue30913 + EnumValue30914 + EnumValue30915 + EnumValue30916 + EnumValue30917 + EnumValue30918 + EnumValue30919 + EnumValue30920 + EnumValue30921 + EnumValue30922 + EnumValue30923 + EnumValue30924 + EnumValue30925 + EnumValue30926 + EnumValue30927 + EnumValue30928 + EnumValue30929 + EnumValue30930 + EnumValue30931 + EnumValue30932 + EnumValue30933 + EnumValue30934 + EnumValue30935 + EnumValue30936 + EnumValue30937 + EnumValue30938 +} + +enum Enum1757 @Directive44(argument97 : ["stringValue34586"]) { + EnumValue30939 + EnumValue30940 + EnumValue30941 + EnumValue30942 + EnumValue30943 + EnumValue30944 +} + +enum Enum1758 @Directive44(argument97 : ["stringValue34615"]) { + EnumValue30945 + EnumValue30946 + EnumValue30947 + EnumValue30948 + EnumValue30949 +} + +enum Enum1759 @Directive44(argument97 : ["stringValue34628"]) { + EnumValue30950 + EnumValue30951 + EnumValue30952 + EnumValue30953 + EnumValue30954 + EnumValue30955 + EnumValue30956 + EnumValue30957 + EnumValue30958 +} + +enum Enum176 @Directive19(argument57 : "stringValue2696") @Directive42(argument96 : ["stringValue2695"]) @Directive44(argument97 : ["stringValue2697", "stringValue2698"]) { + EnumValue4189 + EnumValue4190 + EnumValue4191 + EnumValue4192 + EnumValue4193 + EnumValue4194 + EnumValue4195 + EnumValue4196 +} + +enum Enum1760 @Directive44(argument97 : ["stringValue34637"]) { + EnumValue30959 + EnumValue30960 + EnumValue30961 + EnumValue30962 + EnumValue30963 +} + +enum Enum1761 @Directive44(argument97 : ["stringValue34641"]) { + EnumValue30964 + EnumValue30965 +} + +enum Enum1762 @Directive44(argument97 : ["stringValue34646"]) { + EnumValue30966 + EnumValue30967 + EnumValue30968 + EnumValue30969 + EnumValue30970 +} + +enum Enum1763 @Directive44(argument97 : ["stringValue34649"]) { + EnumValue30971 + EnumValue30972 + EnumValue30973 +} + +enum Enum1764 @Directive44(argument97 : ["stringValue34650"]) { + EnumValue30974 + EnumValue30975 + EnumValue30976 + EnumValue30977 +} + +enum Enum1765 @Directive44(argument97 : ["stringValue34659"]) { + EnumValue30978 + EnumValue30979 + EnumValue30980 +} + +enum Enum1766 @Directive44(argument97 : ["stringValue34822"]) { + EnumValue30981 + EnumValue30982 + EnumValue30983 + EnumValue30984 +} + +enum Enum1767 @Directive44(argument97 : ["stringValue34829"]) { + EnumValue30985 + EnumValue30986 + EnumValue30987 + EnumValue30988 + EnumValue30989 + EnumValue30990 +} + +enum Enum1768 @Directive44(argument97 : ["stringValue34830"]) { + EnumValue30991 + EnumValue30992 + EnumValue30993 + EnumValue30994 + EnumValue30995 + EnumValue30996 +} + +enum Enum1769 @Directive44(argument97 : ["stringValue34840"]) { + EnumValue30997 + EnumValue30998 + EnumValue30999 + EnumValue31000 + EnumValue31001 +} + +enum Enum177 @Directive42(argument96 : ["stringValue2728"]) @Directive44(argument97 : ["stringValue2729", "stringValue2730"]) { + EnumValue4197 + EnumValue4198 + EnumValue4199 + EnumValue4200 + EnumValue4201 + EnumValue4202 + EnumValue4203 + EnumValue4204 + EnumValue4205 + EnumValue4206 +} + +enum Enum1770 @Directive44(argument97 : ["stringValue34843"]) { + EnumValue31002 + EnumValue31003 + EnumValue31004 + EnumValue31005 +} + +enum Enum1771 @Directive44(argument97 : ["stringValue34848"]) { + EnumValue31006 + EnumValue31007 + EnumValue31008 + EnumValue31009 + EnumValue31010 + EnumValue31011 + EnumValue31012 +} + +enum Enum1772 @Directive44(argument97 : ["stringValue34871"]) { + EnumValue31013 + EnumValue31014 + EnumValue31015 +} + +enum Enum1773 @Directive44(argument97 : ["stringValue34888"]) { + EnumValue31016 + EnumValue31017 + EnumValue31018 + EnumValue31019 + EnumValue31020 + EnumValue31021 + EnumValue31022 + EnumValue31023 + EnumValue31024 + EnumValue31025 + EnumValue31026 + EnumValue31027 + EnumValue31028 + EnumValue31029 +} + +enum Enum1774 @Directive44(argument97 : ["stringValue34901"]) { + EnumValue31030 + EnumValue31031 + EnumValue31032 + EnumValue31033 +} + +enum Enum1775 @Directive44(argument97 : ["stringValue34902"]) { + EnumValue31034 + EnumValue31035 + EnumValue31036 + EnumValue31037 +} + +enum Enum1776 @Directive44(argument97 : ["stringValue34922"]) { + EnumValue31038 + EnumValue31039 + EnumValue31040 + EnumValue31041 + EnumValue31042 + EnumValue31043 + EnumValue31044 + EnumValue31045 + EnumValue31046 +} + +enum Enum1777 @Directive44(argument97 : ["stringValue34923"]) { + EnumValue31047 + EnumValue31048 + EnumValue31049 +} + +enum Enum1778 @Directive44(argument97 : ["stringValue34925"]) { + EnumValue31050 + EnumValue31051 + EnumValue31052 + EnumValue31053 + EnumValue31054 + EnumValue31055 + EnumValue31056 +} + +enum Enum1779 @Directive44(argument97 : ["stringValue34926"]) { + EnumValue31057 + EnumValue31058 + EnumValue31059 + EnumValue31060 + EnumValue31061 + EnumValue31062 + EnumValue31063 + EnumValue31064 + EnumValue31065 + EnumValue31066 + EnumValue31067 + EnumValue31068 + EnumValue31069 +} + +enum Enum178 @Directive19(argument57 : "stringValue2746") @Directive42(argument96 : ["stringValue2745"]) @Directive44(argument97 : ["stringValue2747", "stringValue2748"]) { + EnumValue4207 + EnumValue4208 +} + +enum Enum1780 @Directive44(argument97 : ["stringValue34927"]) { + EnumValue31070 + EnumValue31071 + EnumValue31072 + EnumValue31073 +} + +enum Enum1781 @Directive44(argument97 : ["stringValue34985"]) { + EnumValue31074 + EnumValue31075 + EnumValue31076 + EnumValue31077 +} + +enum Enum1782 @Directive44(argument97 : ["stringValue34998"]) { + EnumValue31078 + EnumValue31079 + EnumValue31080 + EnumValue31081 + EnumValue31082 + EnumValue31083 + EnumValue31084 + EnumValue31085 + EnumValue31086 + EnumValue31087 + EnumValue31088 + EnumValue31089 + EnumValue31090 + EnumValue31091 + EnumValue31092 + EnumValue31093 + EnumValue31094 + EnumValue31095 + EnumValue31096 + EnumValue31097 + EnumValue31098 +} + +enum Enum1783 @Directive44(argument97 : ["stringValue35048", "stringValue35049"]) { + EnumValue31099 + EnumValue31100 + EnumValue31101 + EnumValue31102 + EnumValue31103 + EnumValue31104 +} + +enum Enum1784 @Directive44(argument97 : ["stringValue35090", "stringValue35091"]) { + EnumValue31105 + EnumValue31106 + EnumValue31107 + EnumValue31108 +} + +enum Enum1785 @Directive44(argument97 : ["stringValue35117"]) { + EnumValue31109 + EnumValue31110 + EnumValue31111 + EnumValue31112 + EnumValue31113 +} + +enum Enum1786 @Directive44(argument97 : ["stringValue35155"]) { + EnumValue31114 + EnumValue31115 + EnumValue31116 + EnumValue31117 + EnumValue31118 + EnumValue31119 + EnumValue31120 + EnumValue31121 + EnumValue31122 + EnumValue31123 + EnumValue31124 + EnumValue31125 + EnumValue31126 + EnumValue31127 + EnumValue31128 + EnumValue31129 +} + +enum Enum1787 @Directive44(argument97 : ["stringValue35228"]) { + EnumValue31130 + EnumValue31131 + EnumValue31132 + EnumValue31133 + EnumValue31134 + EnumValue31135 + EnumValue31136 +} + +enum Enum1788 @Directive44(argument97 : ["stringValue35236"]) { + EnumValue31137 + EnumValue31138 + EnumValue31139 + EnumValue31140 + EnumValue31141 + EnumValue31142 + EnumValue31143 + EnumValue31144 + EnumValue31145 + EnumValue31146 +} + +enum Enum1789 @Directive44(argument97 : ["stringValue35239"]) { + EnumValue31147 + EnumValue31148 + EnumValue31149 + EnumValue31150 + EnumValue31151 + EnumValue31152 + EnumValue31153 + EnumValue31154 +} + +enum Enum179 @Directive19(argument57 : "stringValue2755") @Directive42(argument96 : ["stringValue2754"]) @Directive44(argument97 : ["stringValue2756", "stringValue2757"]) { + EnumValue4209 + EnumValue4210 + EnumValue4211 +} + +enum Enum1790 @Directive44(argument97 : ["stringValue35245"]) { + EnumValue31155 + EnumValue31156 + EnumValue31157 + EnumValue31158 + EnumValue31159 + EnumValue31160 + EnumValue31161 + EnumValue31162 + EnumValue31163 + EnumValue31164 + EnumValue31165 + EnumValue31166 + EnumValue31167 + EnumValue31168 + EnumValue31169 + EnumValue31170 + EnumValue31171 + EnumValue31172 + EnumValue31173 + EnumValue31174 +} + +enum Enum1791 @Directive44(argument97 : ["stringValue35246"]) { + EnumValue31175 + EnumValue31176 + EnumValue31177 +} + +enum Enum1792 @Directive44(argument97 : ["stringValue35247"]) { + EnumValue31178 + EnumValue31179 + EnumValue31180 + EnumValue31181 + EnumValue31182 + EnumValue31183 + EnumValue31184 +} + +enum Enum1793 @Directive44(argument97 : ["stringValue35249"]) { + EnumValue31185 + EnumValue31186 + EnumValue31187 + EnumValue31188 +} + +enum Enum1794 @Directive44(argument97 : ["stringValue35250"]) { + EnumValue31189 + EnumValue31190 + EnumValue31191 +} + +enum Enum1795 @Directive44(argument97 : ["stringValue35251"]) { + EnumValue31192 + EnumValue31193 + EnumValue31194 + EnumValue31195 + EnumValue31196 + EnumValue31197 +} + +enum Enum1796 @Directive44(argument97 : ["stringValue35252"]) { + EnumValue31198 + EnumValue31199 + EnumValue31200 + EnumValue31201 + EnumValue31202 + EnumValue31203 + EnumValue31204 + EnumValue31205 + EnumValue31206 + EnumValue31207 + EnumValue31208 +} + +enum Enum1797 @Directive44(argument97 : ["stringValue35254"]) { + EnumValue31209 + EnumValue31210 + EnumValue31211 + EnumValue31212 + EnumValue31213 + EnumValue31214 + EnumValue31215 + EnumValue31216 + EnumValue31217 + EnumValue31218 +} + +enum Enum1798 @Directive44(argument97 : ["stringValue35255"]) { + EnumValue31219 + EnumValue31220 + EnumValue31221 + EnumValue31222 + EnumValue31223 + EnumValue31224 + EnumValue31225 + EnumValue31226 + EnumValue31227 + EnumValue31228 + EnumValue31229 + EnumValue31230 + EnumValue31231 + EnumValue31232 + EnumValue31233 + EnumValue31234 + EnumValue31235 + EnumValue31236 + EnumValue31237 + EnumValue31238 + EnumValue31239 + EnumValue31240 + EnumValue31241 + EnumValue31242 + EnumValue31243 + EnumValue31244 + EnumValue31245 + EnumValue31246 + EnumValue31247 + EnumValue31248 + EnumValue31249 + EnumValue31250 +} + +enum Enum1799 @Directive44(argument97 : ["stringValue35258"]) { + EnumValue31251 + EnumValue31252 + EnumValue31253 + EnumValue31254 + EnumValue31255 + EnumValue31256 + EnumValue31257 + EnumValue31258 + EnumValue31259 + EnumValue31260 +} + +enum Enum18 @Directive44(argument97 : ["stringValue162"]) { + EnumValue773 + EnumValue774 + EnumValue775 + EnumValue776 + EnumValue777 + EnumValue778 + EnumValue779 + EnumValue780 + EnumValue781 + EnumValue782 + EnumValue783 + EnumValue784 + EnumValue785 + EnumValue786 + EnumValue787 + EnumValue788 + EnumValue789 + EnumValue790 + EnumValue791 + EnumValue792 + EnumValue793 + EnumValue794 + EnumValue795 + EnumValue796 + EnumValue797 + EnumValue798 + EnumValue799 + EnumValue800 + EnumValue801 + EnumValue802 + EnumValue803 + EnumValue804 + EnumValue805 + EnumValue806 + EnumValue807 + EnumValue808 + EnumValue809 + EnumValue810 + EnumValue811 + EnumValue812 + EnumValue813 + EnumValue814 + EnumValue815 + EnumValue816 + EnumValue817 + EnumValue818 + EnumValue819 + EnumValue820 + EnumValue821 + EnumValue822 +} + +enum Enum180 @Directive19(argument57 : "stringValue2798") @Directive42(argument96 : ["stringValue2797"]) @Directive44(argument97 : ["stringValue2799", "stringValue2800"]) { + EnumValue4212 + EnumValue4213 + EnumValue4214 + EnumValue4215 + EnumValue4216 + EnumValue4217 + EnumValue4218 + EnumValue4219 + EnumValue4220 + EnumValue4221 + EnumValue4222 + EnumValue4223 + EnumValue4224 + EnumValue4225 + EnumValue4226 + EnumValue4227 + EnumValue4228 + EnumValue4229 + EnumValue4230 + EnumValue4231 + EnumValue4232 + EnumValue4233 + EnumValue4234 + EnumValue4235 + EnumValue4236 + EnumValue4237 + EnumValue4238 + EnumValue4239 + EnumValue4240 + EnumValue4241 + EnumValue4242 + EnumValue4243 + EnumValue4244 + EnumValue4245 + EnumValue4246 + EnumValue4247 + EnumValue4248 + EnumValue4249 + EnumValue4250 + EnumValue4251 + EnumValue4252 + EnumValue4253 + EnumValue4254 + EnumValue4255 + EnumValue4256 + EnumValue4257 + EnumValue4258 + EnumValue4259 + EnumValue4260 + EnumValue4261 + EnumValue4262 + EnumValue4263 + EnumValue4264 + EnumValue4265 + EnumValue4266 + EnumValue4267 + EnumValue4268 + EnumValue4269 +} + +enum Enum1800 @Directive44(argument97 : ["stringValue35259"]) { + EnumValue31261 + EnumValue31262 + EnumValue31263 +} + +enum Enum1801 @Directive44(argument97 : ["stringValue35260"]) { + EnumValue31264 + EnumValue31265 + EnumValue31266 + EnumValue31267 + EnumValue31268 + EnumValue31269 + EnumValue31270 + EnumValue31271 +} + +enum Enum1802 @Directive44(argument97 : ["stringValue35261"]) { + EnumValue31272 + EnumValue31273 + EnumValue31274 + EnumValue31275 + EnumValue31276 +} + +enum Enum1803 @Directive44(argument97 : ["stringValue35262"]) { + EnumValue31277 + EnumValue31278 + EnumValue31279 + EnumValue31280 +} + +enum Enum1804 @Directive44(argument97 : ["stringValue35263"]) { + EnumValue31281 + EnumValue31282 + EnumValue31283 +} + +enum Enum1805 @Directive44(argument97 : ["stringValue35264"]) { + EnumValue31284 + EnumValue31285 + EnumValue31286 + EnumValue31287 +} + +enum Enum1806 @Directive44(argument97 : ["stringValue35266"]) { + EnumValue31288 + EnumValue31289 + EnumValue31290 + EnumValue31291 + EnumValue31292 + EnumValue31293 + EnumValue31294 + EnumValue31295 + EnumValue31296 + EnumValue31297 + EnumValue31298 + EnumValue31299 + EnumValue31300 + EnumValue31301 + EnumValue31302 + EnumValue31303 + EnumValue31304 + EnumValue31305 + EnumValue31306 + EnumValue31307 + EnumValue31308 + EnumValue31309 + EnumValue31310 + EnumValue31311 + EnumValue31312 + EnumValue31313 + EnumValue31314 + EnumValue31315 + EnumValue31316 + EnumValue31317 + EnumValue31318 + EnumValue31319 + EnumValue31320 + EnumValue31321 + EnumValue31322 + EnumValue31323 + EnumValue31324 + EnumValue31325 + EnumValue31326 + EnumValue31327 + EnumValue31328 + EnumValue31329 + EnumValue31330 + EnumValue31331 + EnumValue31332 + EnumValue31333 + EnumValue31334 + EnumValue31335 + EnumValue31336 + EnumValue31337 + EnumValue31338 + EnumValue31339 + EnumValue31340 + EnumValue31341 + EnumValue31342 + EnumValue31343 + EnumValue31344 + EnumValue31345 + EnumValue31346 + EnumValue31347 + EnumValue31348 + EnumValue31349 + EnumValue31350 + EnumValue31351 + EnumValue31352 + EnumValue31353 + EnumValue31354 + EnumValue31355 + EnumValue31356 + EnumValue31357 + EnumValue31358 + EnumValue31359 + EnumValue31360 + EnumValue31361 + EnumValue31362 + EnumValue31363 + EnumValue31364 + EnumValue31365 + EnumValue31366 + EnumValue31367 + EnumValue31368 + EnumValue31369 + EnumValue31370 + EnumValue31371 + EnumValue31372 + EnumValue31373 + EnumValue31374 + EnumValue31375 + EnumValue31376 + EnumValue31377 + EnumValue31378 + EnumValue31379 + EnumValue31380 + EnumValue31381 + EnumValue31382 + EnumValue31383 + EnumValue31384 + EnumValue31385 + EnumValue31386 + EnumValue31387 + EnumValue31388 + EnumValue31389 +} + +enum Enum1807 @Directive44(argument97 : ["stringValue35267"]) { + EnumValue31390 + EnumValue31391 + EnumValue31392 + EnumValue31393 + EnumValue31394 + EnumValue31395 + EnumValue31396 + EnumValue31397 + EnumValue31398 + EnumValue31399 + EnumValue31400 + EnumValue31401 + EnumValue31402 + EnumValue31403 + EnumValue31404 + EnumValue31405 +} + +enum Enum1808 @Directive44(argument97 : ["stringValue35268"]) { + EnumValue31406 + EnumValue31407 + EnumValue31408 + EnumValue31409 +} + +enum Enum1809 @Directive44(argument97 : ["stringValue35269"]) { + EnumValue31410 + EnumValue31411 + EnumValue31412 +} + +enum Enum181 @Directive19(argument57 : "stringValue2809") @Directive42(argument96 : ["stringValue2808"]) @Directive44(argument97 : ["stringValue2810"]) { + EnumValue4270 + EnumValue4271 + EnumValue4272 + EnumValue4273 + EnumValue4274 +} + +enum Enum1810 @Directive44(argument97 : ["stringValue35306"]) { + EnumValue31413 + EnumValue31414 + EnumValue31415 + EnumValue31416 + EnumValue31417 + EnumValue31418 + EnumValue31419 + EnumValue31420 + EnumValue31421 + EnumValue31422 + EnumValue31423 + EnumValue31424 + EnumValue31425 + EnumValue31426 + EnumValue31427 + EnumValue31428 + EnumValue31429 +} + +enum Enum1811 @Directive44(argument97 : ["stringValue35307"]) { + EnumValue31430 + EnumValue31431 + EnumValue31432 +} + +enum Enum1812 @Directive44(argument97 : ["stringValue35310"]) { + EnumValue31433 + EnumValue31434 + EnumValue31435 + EnumValue31436 +} + +enum Enum1813 @Directive44(argument97 : ["stringValue35313"]) { + EnumValue31437 + EnumValue31438 + EnumValue31439 + EnumValue31440 +} + +enum Enum1814 @Directive44(argument97 : ["stringValue35316"]) { + EnumValue31441 + EnumValue31442 + EnumValue31443 +} + +enum Enum1815 @Directive44(argument97 : ["stringValue35317"]) { + EnumValue31444 + EnumValue31445 + EnumValue31446 +} + +enum Enum1816 @Directive44(argument97 : ["stringValue35318"]) { + EnumValue31447 + EnumValue31448 + EnumValue31449 + EnumValue31450 +} + +enum Enum1817 @Directive44(argument97 : ["stringValue35319"]) { + EnumValue31451 + EnumValue31452 + EnumValue31453 + EnumValue31454 + EnumValue31455 + EnumValue31456 +} + +enum Enum1818 @Directive44(argument97 : ["stringValue35342"]) { + EnumValue31457 + EnumValue31458 + EnumValue31459 + EnumValue31460 +} + +enum Enum1819 @Directive44(argument97 : ["stringValue35347"]) { + EnumValue31461 + EnumValue31462 + EnumValue31463 + EnumValue31464 + EnumValue31465 + EnumValue31466 + EnumValue31467 + EnumValue31468 + EnumValue31469 + EnumValue31470 + EnumValue31471 + EnumValue31472 + EnumValue31473 + EnumValue31474 + EnumValue31475 + EnumValue31476 + EnumValue31477 + EnumValue31478 + EnumValue31479 + EnumValue31480 + EnumValue31481 + EnumValue31482 + EnumValue31483 + EnumValue31484 + EnumValue31485 + EnumValue31486 + EnumValue31487 + EnumValue31488 + EnumValue31489 + EnumValue31490 + EnumValue31491 + EnumValue31492 + EnumValue31493 + EnumValue31494 + EnumValue31495 + EnumValue31496 + EnumValue31497 + EnumValue31498 +} + +enum Enum182 @Directive19(argument57 : "stringValue2816") @Directive22(argument62 : "stringValue2815") @Directive44(argument97 : ["stringValue2817", "stringValue2818"]) { + EnumValue4275 + EnumValue4276 + EnumValue4277 + EnumValue4278 + EnumValue4279 + EnumValue4280 + EnumValue4281 + EnumValue4282 +} + +enum Enum1820 @Directive44(argument97 : ["stringValue35348"]) { + EnumValue31499 + EnumValue31500 + EnumValue31501 +} + +enum Enum1821 @Directive44(argument97 : ["stringValue35370"]) { + EnumValue31502 + EnumValue31503 + EnumValue31504 + EnumValue31505 +} + +enum Enum1822 @Directive44(argument97 : ["stringValue35377"]) { + EnumValue31506 + EnumValue31507 + EnumValue31508 + EnumValue31509 +} + +enum Enum1823 @Directive44(argument97 : ["stringValue35378"]) { + EnumValue31510 + EnumValue31511 + EnumValue31512 +} + +enum Enum1824 @Directive44(argument97 : ["stringValue35379"]) { + EnumValue31513 + EnumValue31514 + EnumValue31515 + EnumValue31516 +} + +enum Enum1825 @Directive44(argument97 : ["stringValue35392"]) { + EnumValue31517 + EnumValue31518 + EnumValue31519 + EnumValue31520 + EnumValue31521 + EnumValue31522 + EnumValue31523 + EnumValue31524 + EnumValue31525 + EnumValue31526 +} + +enum Enum1826 @Directive44(argument97 : ["stringValue35399"]) { + EnumValue31527 + EnumValue31528 + EnumValue31529 + EnumValue31530 +} + +enum Enum1827 @Directive44(argument97 : ["stringValue35406"]) { + EnumValue31531 + EnumValue31532 + EnumValue31533 + EnumValue31534 + EnumValue31535 + EnumValue31536 +} + +enum Enum1828 @Directive44(argument97 : ["stringValue35407"]) { + EnumValue31537 + EnumValue31538 + EnumValue31539 + EnumValue31540 + EnumValue31541 + EnumValue31542 + EnumValue31543 + EnumValue31544 +} + +enum Enum1829 @Directive44(argument97 : ["stringValue35408"]) { + EnumValue31545 + EnumValue31546 + EnumValue31547 + EnumValue31548 + EnumValue31549 + EnumValue31550 +} + +enum Enum183 @Directive22(argument62 : "stringValue2836") @Directive44(argument97 : ["stringValue2837", "stringValue2838"]) { + EnumValue4283 + EnumValue4284 + EnumValue4285 + EnumValue4286 + EnumValue4287 + EnumValue4288 + EnumValue4289 + EnumValue4290 + EnumValue4291 + EnumValue4292 + EnumValue4293 + EnumValue4294 + EnumValue4295 + EnumValue4296 + EnumValue4297 +} + +enum Enum1830 @Directive44(argument97 : ["stringValue35411"]) { + EnumValue31551 + EnumValue31552 + EnumValue31553 + EnumValue31554 + EnumValue31555 + EnumValue31556 + EnumValue31557 + EnumValue31558 + EnumValue31559 + EnumValue31560 + EnumValue31561 + EnumValue31562 + EnumValue31563 + EnumValue31564 + EnumValue31565 + EnumValue31566 + EnumValue31567 + EnumValue31568 + EnumValue31569 + EnumValue31570 + EnumValue31571 + EnumValue31572 + EnumValue31573 + EnumValue31574 + EnumValue31575 + EnumValue31576 + EnumValue31577 + EnumValue31578 + EnumValue31579 + EnumValue31580 + EnumValue31581 + EnumValue31582 + EnumValue31583 + EnumValue31584 + EnumValue31585 + EnumValue31586 + EnumValue31587 + EnumValue31588 + EnumValue31589 + EnumValue31590 + EnumValue31591 + EnumValue31592 + EnumValue31593 + EnumValue31594 + EnumValue31595 + EnumValue31596 + EnumValue31597 + EnumValue31598 + EnumValue31599 + EnumValue31600 + EnumValue31601 + EnumValue31602 + EnumValue31603 + EnumValue31604 + EnumValue31605 + EnumValue31606 + EnumValue31607 + EnumValue31608 + EnumValue31609 + EnumValue31610 + EnumValue31611 + EnumValue31612 + EnumValue31613 + EnumValue31614 + EnumValue31615 + EnumValue31616 + EnumValue31617 + EnumValue31618 + EnumValue31619 + EnumValue31620 + EnumValue31621 + EnumValue31622 + EnumValue31623 + EnumValue31624 + EnumValue31625 + EnumValue31626 + EnumValue31627 + EnumValue31628 + EnumValue31629 + EnumValue31630 + EnumValue31631 + EnumValue31632 + EnumValue31633 + EnumValue31634 + EnumValue31635 + EnumValue31636 + EnumValue31637 + EnumValue31638 + EnumValue31639 + EnumValue31640 + EnumValue31641 + EnumValue31642 + EnumValue31643 + EnumValue31644 + EnumValue31645 + EnumValue31646 + EnumValue31647 +} + +enum Enum1831 @Directive44(argument97 : ["stringValue35422"]) { + EnumValue31648 + EnumValue31649 + EnumValue31650 + EnumValue31651 + EnumValue31652 +} + +enum Enum1832 @Directive44(argument97 : ["stringValue35429"]) { + EnumValue31653 + EnumValue31654 + EnumValue31655 + EnumValue31656 +} + +enum Enum1833 @Directive44(argument97 : ["stringValue35449"]) { + EnumValue31657 + EnumValue31658 + EnumValue31659 + EnumValue31660 +} + +enum Enum1834 @Directive44(argument97 : ["stringValue35452"]) { + EnumValue31661 + EnumValue31662 + EnumValue31663 +} + +enum Enum1835 @Directive44(argument97 : ["stringValue35455"]) { + EnumValue31664 + EnumValue31665 + EnumValue31666 +} + +enum Enum1836 @Directive44(argument97 : ["stringValue35466"]) { + EnumValue31667 + EnumValue31668 + EnumValue31669 + EnumValue31670 + EnumValue31671 + EnumValue31672 +} + +enum Enum1837 @Directive44(argument97 : ["stringValue35467"]) { + EnumValue31673 + EnumValue31674 + EnumValue31675 + EnumValue31676 +} + +enum Enum1838 @Directive44(argument97 : ["stringValue35472"]) { + EnumValue31677 + EnumValue31678 + EnumValue31679 + EnumValue31680 + EnumValue31681 + EnumValue31682 + EnumValue31683 + EnumValue31684 + EnumValue31685 + EnumValue31686 + EnumValue31687 + EnumValue31688 + EnumValue31689 + EnumValue31690 + EnumValue31691 + EnumValue31692 + EnumValue31693 + EnumValue31694 + EnumValue31695 + EnumValue31696 + EnumValue31697 + EnumValue31698 + EnumValue31699 + EnumValue31700 + EnumValue31701 + EnumValue31702 + EnumValue31703 + EnumValue31704 + EnumValue31705 + EnumValue31706 +} + +enum Enum1839 @Directive44(argument97 : ["stringValue35479"]) { + EnumValue31707 + EnumValue31708 + EnumValue31709 + EnumValue31710 + EnumValue31711 + EnumValue31712 + EnumValue31713 + EnumValue31714 + EnumValue31715 + EnumValue31716 + EnumValue31717 + EnumValue31718 + EnumValue31719 + EnumValue31720 + EnumValue31721 + EnumValue31722 + EnumValue31723 + EnumValue31724 +} + +enum Enum184 @Directive22(argument62 : "stringValue2873") @Directive44(argument97 : ["stringValue2874", "stringValue2875"]) { + EnumValue4298 + EnumValue4299 + EnumValue4300 + EnumValue4301 + EnumValue4302 + EnumValue4303 + EnumValue4304 +} + +enum Enum1840 @Directive44(argument97 : ["stringValue35493"]) { + EnumValue31725 + EnumValue31726 + EnumValue31727 + EnumValue31728 + EnumValue31729 + EnumValue31730 + EnumValue31731 +} + +enum Enum1841 @Directive44(argument97 : ["stringValue35494"]) { + EnumValue31732 + EnumValue31733 + EnumValue31734 +} + +enum Enum1842 @Directive44(argument97 : ["stringValue35495"]) { + EnumValue31735 + EnumValue31736 + EnumValue31737 + EnumValue31738 + EnumValue31739 + EnumValue31740 + EnumValue31741 + EnumValue31742 + EnumValue31743 + EnumValue31744 + EnumValue31745 + EnumValue31746 + EnumValue31747 + EnumValue31748 +} + +enum Enum1843 @Directive44(argument97 : ["stringValue35496"]) { + EnumValue31749 + EnumValue31750 + EnumValue31751 + EnumValue31752 + EnumValue31753 + EnumValue31754 + EnumValue31755 + EnumValue31756 +} + +enum Enum1844 @Directive44(argument97 : ["stringValue35507"]) { + EnumValue31757 + EnumValue31758 + EnumValue31759 + EnumValue31760 +} + +enum Enum1845 @Directive44(argument97 : ["stringValue35508"]) { + EnumValue31761 + EnumValue31762 + EnumValue31763 +} + +enum Enum1846 @Directive44(argument97 : ["stringValue35560"]) { + EnumValue31764 + EnumValue31765 + EnumValue31766 +} + +enum Enum1847 @Directive44(argument97 : ["stringValue35581"]) { + EnumValue31767 + EnumValue31768 + EnumValue31769 + EnumValue31770 + EnumValue31771 + EnumValue31772 + EnumValue31773 + EnumValue31774 + EnumValue31775 + EnumValue31776 + EnumValue31777 + EnumValue31778 + EnumValue31779 + EnumValue31780 + EnumValue31781 + EnumValue31782 + EnumValue31783 + EnumValue31784 + EnumValue31785 + EnumValue31786 + EnumValue31787 + EnumValue31788 + EnumValue31789 + EnumValue31790 + EnumValue31791 + EnumValue31792 + EnumValue31793 + EnumValue31794 + EnumValue31795 + EnumValue31796 + EnumValue31797 + EnumValue31798 +} + +enum Enum1848 @Directive44(argument97 : ["stringValue35586"]) { + EnumValue31799 + EnumValue31800 + EnumValue31801 + EnumValue31802 + EnumValue31803 + EnumValue31804 + EnumValue31805 + EnumValue31806 +} + +enum Enum1849 @Directive44(argument97 : ["stringValue35589"]) { + EnumValue31807 + EnumValue31808 + EnumValue31809 + EnumValue31810 + EnumValue31811 + EnumValue31812 +} + +enum Enum185 @Directive19(argument57 : "stringValue2944") @Directive22(argument62 : "stringValue2943") @Directive44(argument97 : ["stringValue2945", "stringValue2946"]) { + EnumValue4305 + EnumValue4306 + EnumValue4307 + EnumValue4308 + EnumValue4309 + EnumValue4310 + EnumValue4311 @deprecated + EnumValue4312 + EnumValue4313 @deprecated + EnumValue4314 @deprecated + EnumValue4315 @deprecated + EnumValue4316 +} + +enum Enum1850 @Directive44(argument97 : ["stringValue35590"]) { + EnumValue31813 + EnumValue31814 + EnumValue31815 + EnumValue31816 +} + +enum Enum1851 @Directive44(argument97 : ["stringValue35591"]) { + EnumValue31817 + EnumValue31818 + EnumValue31819 + EnumValue31820 +} + +enum Enum1852 @Directive44(argument97 : ["stringValue35596"]) { + EnumValue31821 + EnumValue31822 + EnumValue31823 + EnumValue31824 +} + +enum Enum1853 @Directive44(argument97 : ["stringValue35597"]) { + EnumValue31825 + EnumValue31826 +} + +enum Enum1854 @Directive44(argument97 : ["stringValue35654"]) { + EnumValue31827 + EnumValue31828 + EnumValue31829 + EnumValue31830 +} + +enum Enum1855 @Directive44(argument97 : ["stringValue35684"]) { + EnumValue31831 + EnumValue31832 + EnumValue31833 +} + +enum Enum1856 @Directive44(argument97 : ["stringValue35699"]) { + EnumValue31834 + EnumValue31835 + EnumValue31836 + EnumValue31837 + EnumValue31838 + EnumValue31839 + EnumValue31840 + EnumValue31841 + EnumValue31842 + EnumValue31843 +} + +enum Enum1857 @Directive44(argument97 : ["stringValue35716"]) { + EnumValue31844 + EnumValue31845 + EnumValue31846 + EnumValue31847 + EnumValue31848 + EnumValue31849 + EnumValue31850 + EnumValue31851 +} + +enum Enum1858 @Directive44(argument97 : ["stringValue35735"]) { + EnumValue31852 + EnumValue31853 + EnumValue31854 + EnumValue31855 + EnumValue31856 + EnumValue31857 + EnumValue31858 + EnumValue31859 +} + +enum Enum1859 @Directive44(argument97 : ["stringValue35744"]) { + EnumValue31860 + EnumValue31861 + EnumValue31862 + EnumValue31863 +} + +enum Enum186 @Directive19(argument57 : "stringValue2955") @Directive22(argument62 : "stringValue2954") @Directive44(argument97 : ["stringValue2956", "stringValue2957"]) { + EnumValue4317 + EnumValue4318 + EnumValue4319 + EnumValue4320 +} + +enum Enum1860 @Directive44(argument97 : ["stringValue35777"]) { + EnumValue31864 + EnumValue31865 + EnumValue31866 + EnumValue31867 + EnumValue31868 +} + +enum Enum1861 @Directive44(argument97 : ["stringValue35780"]) { + EnumValue31869 + EnumValue31870 + EnumValue31871 + EnumValue31872 + EnumValue31873 + EnumValue31874 + EnumValue31875 + EnumValue31876 + EnumValue31877 +} + +enum Enum1862 @Directive44(argument97 : ["stringValue35781"]) { + EnumValue31878 + EnumValue31879 + EnumValue31880 +} + +enum Enum1863 @Directive44(argument97 : ["stringValue35865"]) { + EnumValue31881 + EnumValue31882 + EnumValue31883 + EnumValue31884 +} + +enum Enum1864 @Directive44(argument97 : ["stringValue35892"]) { + EnumValue31885 + EnumValue31886 + EnumValue31887 + EnumValue31888 + EnumValue31889 + EnumValue31890 +} + +enum Enum1865 @Directive44(argument97 : ["stringValue35893"]) { + EnumValue31891 + EnumValue31892 + EnumValue31893 +} + +enum Enum1866 @Directive44(argument97 : ["stringValue35894"]) { + EnumValue31894 + EnumValue31895 + EnumValue31896 +} + +enum Enum1867 @Directive44(argument97 : ["stringValue35897"]) { + EnumValue31897 + EnumValue31898 + EnumValue31899 + EnumValue31900 +} + +enum Enum1868 @Directive44(argument97 : ["stringValue35923"]) { + EnumValue31901 + EnumValue31902 + EnumValue31903 +} + +enum Enum1869 @Directive44(argument97 : ["stringValue35928"]) { + EnumValue31904 + EnumValue31905 + EnumValue31906 +} + +enum Enum187 @Directive19(argument57 : "stringValue2963") @Directive22(argument62 : "stringValue2962") @Directive44(argument97 : ["stringValue2964", "stringValue2965"]) { + EnumValue4321 + EnumValue4322 +} + +enum Enum1870 @Directive44(argument97 : ["stringValue35935"]) { + EnumValue31907 + EnumValue31908 + EnumValue31909 + EnumValue31910 +} + +enum Enum1871 @Directive44(argument97 : ["stringValue35944"]) { + EnumValue31911 + EnumValue31912 + EnumValue31913 + EnumValue31914 + EnumValue31915 + EnumValue31916 + EnumValue31917 + EnumValue31918 + EnumValue31919 + EnumValue31920 + EnumValue31921 + EnumValue31922 + EnumValue31923 + EnumValue31924 + EnumValue31925 + EnumValue31926 + EnumValue31927 +} + +enum Enum1872 @Directive44(argument97 : ["stringValue35945"]) { + EnumValue31928 + EnumValue31929 + EnumValue31930 + EnumValue31931 + EnumValue31932 + EnumValue31933 + EnumValue31934 + EnumValue31935 + EnumValue31936 +} + +enum Enum1873 @Directive44(argument97 : ["stringValue35948"]) { + EnumValue31937 + EnumValue31938 + EnumValue31939 + EnumValue31940 + EnumValue31941 + EnumValue31942 + EnumValue31943 + EnumValue31944 +} + +enum Enum1874 @Directive44(argument97 : ["stringValue35949"]) { + EnumValue31945 + EnumValue31946 +} + +enum Enum1875 @Directive44(argument97 : ["stringValue35952"]) { + EnumValue31947 + EnumValue31948 + EnumValue31949 + EnumValue31950 + EnumValue31951 + EnumValue31952 + EnumValue31953 + EnumValue31954 + EnumValue31955 + EnumValue31956 + EnumValue31957 + EnumValue31958 + EnumValue31959 + EnumValue31960 + EnumValue31961 + EnumValue31962 + EnumValue31963 + EnumValue31964 + EnumValue31965 + EnumValue31966 + EnumValue31967 + EnumValue31968 + EnumValue31969 + EnumValue31970 + EnumValue31971 + EnumValue31972 + EnumValue31973 + EnumValue31974 + EnumValue31975 + EnumValue31976 + EnumValue31977 + EnumValue31978 + EnumValue31979 + EnumValue31980 + EnumValue31981 + EnumValue31982 + EnumValue31983 + EnumValue31984 + EnumValue31985 + EnumValue31986 + EnumValue31987 + EnumValue31988 + EnumValue31989 + EnumValue31990 + EnumValue31991 + EnumValue31992 + EnumValue31993 + EnumValue31994 + EnumValue31995 + EnumValue31996 +} + +enum Enum1876 @Directive44(argument97 : ["stringValue35953"]) { + EnumValue31997 + EnumValue31998 + EnumValue31999 + EnumValue32000 + EnumValue32001 +} + +enum Enum1877 @Directive44(argument97 : ["stringValue35954"]) { + EnumValue32002 + EnumValue32003 + EnumValue32004 + EnumValue32005 + EnumValue32006 + EnumValue32007 + EnumValue32008 + EnumValue32009 + EnumValue32010 +} + +enum Enum1878 @Directive44(argument97 : ["stringValue35959"]) { + EnumValue32011 + EnumValue32012 + EnumValue32013 +} + +enum Enum1879 @Directive44(argument97 : ["stringValue35965"]) { + EnumValue32014 + EnumValue32015 + EnumValue32016 + EnumValue32017 + EnumValue32018 + EnumValue32019 + EnumValue32020 + EnumValue32021 + EnumValue32022 + EnumValue32023 + EnumValue32024 + EnumValue32025 + EnumValue32026 + EnumValue32027 + EnumValue32028 + EnumValue32029 +} + +enum Enum188 @Directive22(argument62 : "stringValue2977") @Directive44(argument97 : ["stringValue2978", "stringValue2979"]) { + EnumValue4323 + EnumValue4324 + EnumValue4325 +} + +enum Enum1880 @Directive44(argument97 : ["stringValue35968"]) { + EnumValue32030 + EnumValue32031 + EnumValue32032 + EnumValue32033 + EnumValue32034 + EnumValue32035 + EnumValue32036 + EnumValue32037 + EnumValue32038 + EnumValue32039 + EnumValue32040 + EnumValue32041 + EnumValue32042 + EnumValue32043 + EnumValue32044 + EnumValue32045 + EnumValue32046 + EnumValue32047 + EnumValue32048 + EnumValue32049 + EnumValue32050 + EnumValue32051 + EnumValue32052 + EnumValue32053 + EnumValue32054 + EnumValue32055 + EnumValue32056 + EnumValue32057 + EnumValue32058 + EnumValue32059 + EnumValue32060 + EnumValue32061 + EnumValue32062 + EnumValue32063 + EnumValue32064 + EnumValue32065 + EnumValue32066 + EnumValue32067 + EnumValue32068 + EnumValue32069 + EnumValue32070 + EnumValue32071 + EnumValue32072 + EnumValue32073 + EnumValue32074 + EnumValue32075 + EnumValue32076 + EnumValue32077 + EnumValue32078 + EnumValue32079 + EnumValue32080 + EnumValue32081 + EnumValue32082 + EnumValue32083 + EnumValue32084 + EnumValue32085 + EnumValue32086 + EnumValue32087 + EnumValue32088 + EnumValue32089 + EnumValue32090 + EnumValue32091 + EnumValue32092 + EnumValue32093 + EnumValue32094 + EnumValue32095 + EnumValue32096 + EnumValue32097 + EnumValue32098 + EnumValue32099 + EnumValue32100 + EnumValue32101 + EnumValue32102 + EnumValue32103 + EnumValue32104 + EnumValue32105 + EnumValue32106 + EnumValue32107 + EnumValue32108 + EnumValue32109 + EnumValue32110 + EnumValue32111 + EnumValue32112 + EnumValue32113 + EnumValue32114 + EnumValue32115 + EnumValue32116 + EnumValue32117 + EnumValue32118 + EnumValue32119 + EnumValue32120 + EnumValue32121 + EnumValue32122 + EnumValue32123 + EnumValue32124 + EnumValue32125 + EnumValue32126 + EnumValue32127 + EnumValue32128 + EnumValue32129 + EnumValue32130 + EnumValue32131 + EnumValue32132 + EnumValue32133 + EnumValue32134 + EnumValue32135 + EnumValue32136 + EnumValue32137 + EnumValue32138 + EnumValue32139 + EnumValue32140 + EnumValue32141 + EnumValue32142 + EnumValue32143 + EnumValue32144 + EnumValue32145 + EnumValue32146 + EnumValue32147 + EnumValue32148 + EnumValue32149 + EnumValue32150 + EnumValue32151 + EnumValue32152 + EnumValue32153 + EnumValue32154 + EnumValue32155 + EnumValue32156 + EnumValue32157 + EnumValue32158 + EnumValue32159 + EnumValue32160 + EnumValue32161 + EnumValue32162 + EnumValue32163 + EnumValue32164 + EnumValue32165 + EnumValue32166 + EnumValue32167 + EnumValue32168 + EnumValue32169 + EnumValue32170 + EnumValue32171 + EnumValue32172 + EnumValue32173 + EnumValue32174 + EnumValue32175 + EnumValue32176 + EnumValue32177 + EnumValue32178 + EnumValue32179 + EnumValue32180 + EnumValue32181 + EnumValue32182 + EnumValue32183 + EnumValue32184 + EnumValue32185 + EnumValue32186 + EnumValue32187 + EnumValue32188 + EnumValue32189 + EnumValue32190 + EnumValue32191 + EnumValue32192 + EnumValue32193 + EnumValue32194 + EnumValue32195 + EnumValue32196 + EnumValue32197 + EnumValue32198 + EnumValue32199 + EnumValue32200 + EnumValue32201 + EnumValue32202 + EnumValue32203 + EnumValue32204 + EnumValue32205 + EnumValue32206 + EnumValue32207 + EnumValue32208 + EnumValue32209 + EnumValue32210 + EnumValue32211 + EnumValue32212 + EnumValue32213 + EnumValue32214 + EnumValue32215 + EnumValue32216 + EnumValue32217 + EnumValue32218 + EnumValue32219 + EnumValue32220 + EnumValue32221 + EnumValue32222 + EnumValue32223 + EnumValue32224 + EnumValue32225 + EnumValue32226 + EnumValue32227 + EnumValue32228 + EnumValue32229 + EnumValue32230 + EnumValue32231 + EnumValue32232 + EnumValue32233 + EnumValue32234 + EnumValue32235 + EnumValue32236 + EnumValue32237 + EnumValue32238 + EnumValue32239 + EnumValue32240 + EnumValue32241 + EnumValue32242 + EnumValue32243 + EnumValue32244 + EnumValue32245 + EnumValue32246 + EnumValue32247 + EnumValue32248 + EnumValue32249 + EnumValue32250 + EnumValue32251 + EnumValue32252 + EnumValue32253 + EnumValue32254 + EnumValue32255 + EnumValue32256 + EnumValue32257 + EnumValue32258 + EnumValue32259 + EnumValue32260 + EnumValue32261 + EnumValue32262 + EnumValue32263 + EnumValue32264 + EnumValue32265 + EnumValue32266 + EnumValue32267 + EnumValue32268 + EnumValue32269 + EnumValue32270 + EnumValue32271 + EnumValue32272 + EnumValue32273 + EnumValue32274 + EnumValue32275 + EnumValue32276 + EnumValue32277 + EnumValue32278 + EnumValue32279 + EnumValue32280 + EnumValue32281 + EnumValue32282 + EnumValue32283 + EnumValue32284 + EnumValue32285 + EnumValue32286 + EnumValue32287 + EnumValue32288 + EnumValue32289 + EnumValue32290 + EnumValue32291 + EnumValue32292 + EnumValue32293 + EnumValue32294 + EnumValue32295 + EnumValue32296 + EnumValue32297 + EnumValue32298 + EnumValue32299 + EnumValue32300 + EnumValue32301 + EnumValue32302 + EnumValue32303 + EnumValue32304 + EnumValue32305 + EnumValue32306 + EnumValue32307 + EnumValue32308 + EnumValue32309 + EnumValue32310 + EnumValue32311 + EnumValue32312 + EnumValue32313 + EnumValue32314 + EnumValue32315 + EnumValue32316 + EnumValue32317 + EnumValue32318 + EnumValue32319 + EnumValue32320 + EnumValue32321 + EnumValue32322 + EnumValue32323 + EnumValue32324 + EnumValue32325 + EnumValue32326 + EnumValue32327 + EnumValue32328 + EnumValue32329 + EnumValue32330 + EnumValue32331 + EnumValue32332 + EnumValue32333 + EnumValue32334 + EnumValue32335 + EnumValue32336 + EnumValue32337 + EnumValue32338 + EnumValue32339 + EnumValue32340 + EnumValue32341 + EnumValue32342 + EnumValue32343 + EnumValue32344 + EnumValue32345 + EnumValue32346 + EnumValue32347 + EnumValue32348 + EnumValue32349 + EnumValue32350 + EnumValue32351 + EnumValue32352 + EnumValue32353 + EnumValue32354 + EnumValue32355 + EnumValue32356 + EnumValue32357 + EnumValue32358 + EnumValue32359 + EnumValue32360 + EnumValue32361 + EnumValue32362 + EnumValue32363 + EnumValue32364 + EnumValue32365 + EnumValue32366 + EnumValue32367 + EnumValue32368 + EnumValue32369 + EnumValue32370 + EnumValue32371 + EnumValue32372 + EnumValue32373 + EnumValue32374 + EnumValue32375 + EnumValue32376 + EnumValue32377 + EnumValue32378 + EnumValue32379 + EnumValue32380 + EnumValue32381 + EnumValue32382 + EnumValue32383 + EnumValue32384 + EnumValue32385 + EnumValue32386 + EnumValue32387 + EnumValue32388 + EnumValue32389 + EnumValue32390 + EnumValue32391 + EnumValue32392 + EnumValue32393 + EnumValue32394 + EnumValue32395 + EnumValue32396 + EnumValue32397 + EnumValue32398 + EnumValue32399 + EnumValue32400 + EnumValue32401 + EnumValue32402 + EnumValue32403 + EnumValue32404 + EnumValue32405 + EnumValue32406 + EnumValue32407 + EnumValue32408 + EnumValue32409 + EnumValue32410 + EnumValue32411 + EnumValue32412 + EnumValue32413 + EnumValue32414 + EnumValue32415 + EnumValue32416 + EnumValue32417 + EnumValue32418 + EnumValue32419 + EnumValue32420 + EnumValue32421 + EnumValue32422 + EnumValue32423 + EnumValue32424 + EnumValue32425 + EnumValue32426 + EnumValue32427 + EnumValue32428 + EnumValue32429 + EnumValue32430 + EnumValue32431 + EnumValue32432 + EnumValue32433 + EnumValue32434 + EnumValue32435 + EnumValue32436 + EnumValue32437 + EnumValue32438 + EnumValue32439 + EnumValue32440 + EnumValue32441 + EnumValue32442 + EnumValue32443 + EnumValue32444 + EnumValue32445 + EnumValue32446 + EnumValue32447 + EnumValue32448 + EnumValue32449 + EnumValue32450 + EnumValue32451 + EnumValue32452 + EnumValue32453 + EnumValue32454 + EnumValue32455 + EnumValue32456 + EnumValue32457 + EnumValue32458 + EnumValue32459 + EnumValue32460 + EnumValue32461 + EnumValue32462 + EnumValue32463 + EnumValue32464 + EnumValue32465 + EnumValue32466 + EnumValue32467 + EnumValue32468 + EnumValue32469 + EnumValue32470 + EnumValue32471 + EnumValue32472 + EnumValue32473 + EnumValue32474 + EnumValue32475 + EnumValue32476 + EnumValue32477 + EnumValue32478 + EnumValue32479 + EnumValue32480 + EnumValue32481 + EnumValue32482 + EnumValue32483 + EnumValue32484 + EnumValue32485 + EnumValue32486 + EnumValue32487 + EnumValue32488 + EnumValue32489 + EnumValue32490 + EnumValue32491 + EnumValue32492 + EnumValue32493 + EnumValue32494 + EnumValue32495 + EnumValue32496 + EnumValue32497 + EnumValue32498 + EnumValue32499 + EnumValue32500 + EnumValue32501 + EnumValue32502 + EnumValue32503 + EnumValue32504 + EnumValue32505 + EnumValue32506 + EnumValue32507 + EnumValue32508 + EnumValue32509 + EnumValue32510 + EnumValue32511 + EnumValue32512 + EnumValue32513 + EnumValue32514 + EnumValue32515 + EnumValue32516 + EnumValue32517 + EnumValue32518 + EnumValue32519 + EnumValue32520 + EnumValue32521 + EnumValue32522 + EnumValue32523 + EnumValue32524 + EnumValue32525 + EnumValue32526 + EnumValue32527 + EnumValue32528 + EnumValue32529 + EnumValue32530 + EnumValue32531 + EnumValue32532 + EnumValue32533 + EnumValue32534 + EnumValue32535 + EnumValue32536 + EnumValue32537 + EnumValue32538 + EnumValue32539 + EnumValue32540 + EnumValue32541 + EnumValue32542 + EnumValue32543 + EnumValue32544 + EnumValue32545 + EnumValue32546 + EnumValue32547 + EnumValue32548 + EnumValue32549 + EnumValue32550 + EnumValue32551 + EnumValue32552 + EnumValue32553 + EnumValue32554 + EnumValue32555 + EnumValue32556 + EnumValue32557 + EnumValue32558 + EnumValue32559 + EnumValue32560 + EnumValue32561 + EnumValue32562 + EnumValue32563 + EnumValue32564 + EnumValue32565 + EnumValue32566 + EnumValue32567 + EnumValue32568 + EnumValue32569 + EnumValue32570 + EnumValue32571 + EnumValue32572 + EnumValue32573 + EnumValue32574 + EnumValue32575 + EnumValue32576 + EnumValue32577 + EnumValue32578 + EnumValue32579 + EnumValue32580 + EnumValue32581 + EnumValue32582 + EnumValue32583 + EnumValue32584 + EnumValue32585 + EnumValue32586 + EnumValue32587 + EnumValue32588 + EnumValue32589 + EnumValue32590 + EnumValue32591 + EnumValue32592 + EnumValue32593 + EnumValue32594 + EnumValue32595 + EnumValue32596 + EnumValue32597 + EnumValue32598 + EnumValue32599 + EnumValue32600 + EnumValue32601 + EnumValue32602 + EnumValue32603 + EnumValue32604 + EnumValue32605 + EnumValue32606 + EnumValue32607 + EnumValue32608 + EnumValue32609 + EnumValue32610 + EnumValue32611 + EnumValue32612 + EnumValue32613 + EnumValue32614 + EnumValue32615 + EnumValue32616 + EnumValue32617 + EnumValue32618 + EnumValue32619 + EnumValue32620 + EnumValue32621 + EnumValue32622 + EnumValue32623 + EnumValue32624 + EnumValue32625 + EnumValue32626 + EnumValue32627 + EnumValue32628 + EnumValue32629 + EnumValue32630 + EnumValue32631 + EnumValue32632 + EnumValue32633 + EnumValue32634 + EnumValue32635 + EnumValue32636 + EnumValue32637 + EnumValue32638 + EnumValue32639 + EnumValue32640 + EnumValue32641 + EnumValue32642 + EnumValue32643 + EnumValue32644 + EnumValue32645 + EnumValue32646 + EnumValue32647 + EnumValue32648 + EnumValue32649 + EnumValue32650 + EnumValue32651 + EnumValue32652 + EnumValue32653 + EnumValue32654 + EnumValue32655 + EnumValue32656 + EnumValue32657 + EnumValue32658 + EnumValue32659 + EnumValue32660 + EnumValue32661 + EnumValue32662 + EnumValue32663 + EnumValue32664 + EnumValue32665 + EnumValue32666 + EnumValue32667 + EnumValue32668 + EnumValue32669 + EnumValue32670 + EnumValue32671 + EnumValue32672 + EnumValue32673 + EnumValue32674 + EnumValue32675 + EnumValue32676 + EnumValue32677 + EnumValue32678 + EnumValue32679 + EnumValue32680 + EnumValue32681 + EnumValue32682 + EnumValue32683 + EnumValue32684 + EnumValue32685 + EnumValue32686 + EnumValue32687 + EnumValue32688 + EnumValue32689 + EnumValue32690 +} + +enum Enum1881 @Directive44(argument97 : ["stringValue35978"]) { + EnumValue32691 + EnumValue32692 + EnumValue32693 + EnumValue32694 + EnumValue32695 + EnumValue32696 + EnumValue32697 + EnumValue32698 +} + +enum Enum1882 @Directive44(argument97 : ["stringValue36011"]) { + EnumValue32699 + EnumValue32700 + EnumValue32701 + EnumValue32702 +} + +enum Enum1883 @Directive44(argument97 : ["stringValue36012"]) { + EnumValue32703 + EnumValue32704 + EnumValue32705 + EnumValue32706 +} + +enum Enum1884 @Directive44(argument97 : ["stringValue36059"]) { + EnumValue32707 + EnumValue32708 + EnumValue32709 +} + +enum Enum1885 @Directive44(argument97 : ["stringValue36068"]) { + EnumValue32710 + EnumValue32711 + EnumValue32712 + EnumValue32713 + EnumValue32714 +} + +enum Enum1886 @Directive44(argument97 : ["stringValue36075"]) { + EnumValue32715 + EnumValue32716 + EnumValue32717 +} + +enum Enum1887 @Directive44(argument97 : ["stringValue36080"]) { + EnumValue32718 + EnumValue32719 + EnumValue32720 + EnumValue32721 + EnumValue32722 + EnumValue32723 + EnumValue32724 + EnumValue32725 + EnumValue32726 + EnumValue32727 + EnumValue32728 + EnumValue32729 + EnumValue32730 + EnumValue32731 + EnumValue32732 + EnumValue32733 + EnumValue32734 + EnumValue32735 +} + +enum Enum1888 @Directive44(argument97 : ["stringValue36108"]) { + EnumValue32736 + EnumValue32737 + EnumValue32738 + EnumValue32739 +} + +enum Enum1889 @Directive44(argument97 : ["stringValue36115"]) { + EnumValue32740 + EnumValue32741 + EnumValue32742 + EnumValue32743 +} + +enum Enum189 @Directive19(argument57 : "stringValue2992") @Directive22(argument62 : "stringValue2991") @Directive44(argument97 : ["stringValue2993", "stringValue2994"]) { + EnumValue4326 + EnumValue4327 + EnumValue4328 + EnumValue4329 + EnumValue4330 + EnumValue4331 +} + +enum Enum1890 @Directive44(argument97 : ["stringValue36116"]) { + EnumValue32744 + EnumValue32745 + EnumValue32746 +} + +enum Enum1891 @Directive44(argument97 : ["stringValue36137"]) { + EnumValue32747 + EnumValue32748 + EnumValue32749 + EnumValue32750 + EnumValue32751 +} + +enum Enum1892 @Directive44(argument97 : ["stringValue36142"]) { + EnumValue32752 + EnumValue32753 + EnumValue32754 + EnumValue32755 + EnumValue32756 + EnumValue32757 + EnumValue32758 + EnumValue32759 + EnumValue32760 + EnumValue32761 + EnumValue32762 + EnumValue32763 + EnumValue32764 + EnumValue32765 + EnumValue32766 + EnumValue32767 + EnumValue32768 + EnumValue32769 + EnumValue32770 +} + +enum Enum1893 @Directive44(argument97 : ["stringValue36149"]) { + EnumValue32771 + EnumValue32772 + EnumValue32773 +} + +enum Enum1894 @Directive44(argument97 : ["stringValue36154"]) { + EnumValue32774 + EnumValue32775 + EnumValue32776 + EnumValue32777 + EnumValue32778 + EnumValue32779 + EnumValue32780 + EnumValue32781 + EnumValue32782 + EnumValue32783 + EnumValue32784 + EnumValue32785 + EnumValue32786 + EnumValue32787 + EnumValue32788 + EnumValue32789 + EnumValue32790 + EnumValue32791 +} + +enum Enum1895 @Directive44(argument97 : ["stringValue36157"]) { + EnumValue32792 + EnumValue32793 + EnumValue32794 +} + +enum Enum1896 @Directive44(argument97 : ["stringValue36168"]) { + EnumValue32795 + EnumValue32796 + EnumValue32797 + EnumValue32798 + EnumValue32799 + EnumValue32800 +} + +enum Enum1897 @Directive44(argument97 : ["stringValue36177"]) { + EnumValue32801 + EnumValue32802 + EnumValue32803 + EnumValue32804 + EnumValue32805 + EnumValue32806 + EnumValue32807 + EnumValue32808 + EnumValue32809 + EnumValue32810 + EnumValue32811 +} + +enum Enum1898 @Directive44(argument97 : ["stringValue36206"]) { + EnumValue32812 + EnumValue32813 + EnumValue32814 + EnumValue32815 + EnumValue32816 + EnumValue32817 + EnumValue32818 + EnumValue32819 +} + +enum Enum1899 @Directive44(argument97 : ["stringValue36222"]) { + EnumValue32820 + EnumValue32821 + EnumValue32822 + EnumValue32823 + EnumValue32824 + EnumValue32825 +} + +enum Enum19 @Directive44(argument97 : ["stringValue163"]) { + EnumValue823 + EnumValue824 + EnumValue825 + EnumValue826 + EnumValue827 +} + +enum Enum190 @Directive19(argument57 : "stringValue3011") @Directive22(argument62 : "stringValue3010") @Directive44(argument97 : ["stringValue3012", "stringValue3013"]) { + EnumValue4332 + EnumValue4333 + EnumValue4334 +} + +enum Enum1900 @Directive44(argument97 : ["stringValue36258"]) { + EnumValue32826 + EnumValue32827 + EnumValue32828 +} + +enum Enum1901 @Directive44(argument97 : ["stringValue36259"]) { + EnumValue32829 + EnumValue32830 + EnumValue32831 + EnumValue32832 + EnumValue32833 + EnumValue32834 + EnumValue32835 + EnumValue32836 +} + +enum Enum1902 @Directive44(argument97 : ["stringValue36268"]) { + EnumValue32837 + EnumValue32838 + EnumValue32839 + EnumValue32840 + EnumValue32841 + EnumValue32842 + EnumValue32843 + EnumValue32844 + EnumValue32845 + EnumValue32846 +} + +enum Enum1903 @Directive44(argument97 : ["stringValue36271"]) { + EnumValue32847 + EnumValue32848 + EnumValue32849 + EnumValue32850 + EnumValue32851 + EnumValue32852 + EnumValue32853 + EnumValue32854 +} + +enum Enum1904 @Directive44(argument97 : ["stringValue36272"]) { + EnumValue32855 + EnumValue32856 + EnumValue32857 +} + +enum Enum1905 @Directive44(argument97 : ["stringValue36273"]) { + EnumValue32858 + EnumValue32859 + EnumValue32860 +} + +enum Enum1906 @Directive44(argument97 : ["stringValue36279"]) { + EnumValue32861 + EnumValue32862 + EnumValue32863 + EnumValue32864 + EnumValue32865 + EnumValue32866 + EnumValue32867 + EnumValue32868 +} + +enum Enum1907 @Directive44(argument97 : ["stringValue36337"]) { + EnumValue32869 + EnumValue32870 + EnumValue32871 + EnumValue32872 + EnumValue32873 + EnumValue32874 + EnumValue32875 +} + +enum Enum1908 @Directive44(argument97 : ["stringValue36340"]) { + EnumValue32876 + EnumValue32877 + EnumValue32878 +} + +enum Enum1909 @Directive44(argument97 : ["stringValue36341"]) { + EnumValue32879 + EnumValue32880 + EnumValue32881 +} + +enum Enum191 @Directive19(argument57 : "stringValue3023") @Directive22(argument62 : "stringValue3022") @Directive44(argument97 : ["stringValue3024", "stringValue3025"]) { + EnumValue4335 + EnumValue4336 +} + +enum Enum1910 @Directive44(argument97 : ["stringValue36344"]) { + EnumValue32882 + EnumValue32883 + EnumValue32884 + EnumValue32885 +} + +enum Enum1911 @Directive44(argument97 : ["stringValue36347"]) { + EnumValue32886 + EnumValue32887 + EnumValue32888 + EnumValue32889 + EnumValue32890 + EnumValue32891 +} + +enum Enum1912 @Directive44(argument97 : ["stringValue36350"]) { + EnumValue32892 + EnumValue32893 + EnumValue32894 + EnumValue32895 + EnumValue32896 +} + +enum Enum1913 @Directive44(argument97 : ["stringValue36381"]) { + EnumValue32897 + EnumValue32898 + EnumValue32899 + EnumValue32900 + EnumValue32901 + EnumValue32902 + EnumValue32903 + EnumValue32904 + EnumValue32905 +} + +enum Enum1914 @Directive44(argument97 : ["stringValue36389"]) { + EnumValue32906 + EnumValue32907 + EnumValue32908 +} + +enum Enum1915 @Directive44(argument97 : ["stringValue36390"]) { + EnumValue32909 + EnumValue32910 + EnumValue32911 +} + +enum Enum1916 @Directive44(argument97 : ["stringValue36393"]) { + EnumValue32912 + EnumValue32913 + EnumValue32914 +} + +enum Enum1917 @Directive44(argument97 : ["stringValue36400"]) { + EnumValue32915 + EnumValue32916 + EnumValue32917 + EnumValue32918 +} + +enum Enum1918 @Directive44(argument97 : ["stringValue36409"]) { + EnumValue32919 + EnumValue32920 + EnumValue32921 + EnumValue32922 + EnumValue32923 + EnumValue32924 + EnumValue32925 + EnumValue32926 +} + +enum Enum1919 @Directive44(argument97 : ["stringValue36410"]) { + EnumValue32927 + EnumValue32928 + EnumValue32929 + EnumValue32930 + EnumValue32931 +} + +enum Enum192 @Directive19(argument57 : "stringValue3035") @Directive22(argument62 : "stringValue3034") @Directive44(argument97 : ["stringValue3036", "stringValue3037"]) { + EnumValue4337 + EnumValue4338 + EnumValue4339 +} + +enum Enum1920 @Directive44(argument97 : ["stringValue36411"]) { + EnumValue32932 + EnumValue32933 + EnumValue32934 + EnumValue32935 + EnumValue32936 + EnumValue32937 + EnumValue32938 + EnumValue32939 + EnumValue32940 + EnumValue32941 + EnumValue32942 + EnumValue32943 + EnumValue32944 + EnumValue32945 + EnumValue32946 + EnumValue32947 + EnumValue32948 +} + +enum Enum1921 @Directive44(argument97 : ["stringValue36417"]) { + EnumValue32949 + EnumValue32950 + EnumValue32951 + EnumValue32952 +} + +enum Enum1922 @Directive44(argument97 : ["stringValue36418"]) { + EnumValue32953 + EnumValue32954 + EnumValue32955 +} + +enum Enum1923 @Directive44(argument97 : ["stringValue36427"]) { + EnumValue32956 + EnumValue32957 + EnumValue32958 + EnumValue32959 +} + +enum Enum1924 @Directive44(argument97 : ["stringValue36428"]) { + EnumValue32960 + EnumValue32961 + EnumValue32962 + EnumValue32963 + EnumValue32964 + EnumValue32965 + EnumValue32966 + EnumValue32967 + EnumValue32968 + EnumValue32969 + EnumValue32970 + EnumValue32971 + EnumValue32972 + EnumValue32973 + EnumValue32974 + EnumValue32975 + EnumValue32976 + EnumValue32977 + EnumValue32978 + EnumValue32979 + EnumValue32980 + EnumValue32981 + EnumValue32982 + EnumValue32983 + EnumValue32984 + EnumValue32985 + EnumValue32986 + EnumValue32987 + EnumValue32988 + EnumValue32989 + EnumValue32990 + EnumValue32991 + EnumValue32992 + EnumValue32993 +} + +enum Enum1925 @Directive44(argument97 : ["stringValue36457"]) { + EnumValue32994 + EnumValue32995 + EnumValue32996 + EnumValue32997 + EnumValue32998 + EnumValue32999 +} + +enum Enum1926 @Directive44(argument97 : ["stringValue36489"]) { + EnumValue33000 + EnumValue33001 + EnumValue33002 + EnumValue33003 +} + +enum Enum1927 @Directive44(argument97 : ["stringValue36510"]) { + EnumValue33004 + EnumValue33005 + EnumValue33006 + EnumValue33007 +} + +enum Enum1928 @Directive44(argument97 : ["stringValue36526"]) { + EnumValue33008 + EnumValue33009 + EnumValue33010 + EnumValue33011 +} + +enum Enum1929 @Directive44(argument97 : ["stringValue36532"]) { + EnumValue33012 + EnumValue33013 + EnumValue33014 + EnumValue33015 + EnumValue33016 +} + +enum Enum193 @Directive19(argument57 : "stringValue3109") @Directive22(argument62 : "stringValue3108") @Directive44(argument97 : ["stringValue3110", "stringValue3111"]) { + EnumValue4340 + EnumValue4341 + EnumValue4342 + EnumValue4343 + EnumValue4344 + EnumValue4345 + EnumValue4346 + EnumValue4347 + EnumValue4348 + EnumValue4349 + EnumValue4350 +} + +enum Enum1930 @Directive44(argument97 : ["stringValue36541"]) { + EnumValue33017 + EnumValue33018 + EnumValue33019 +} + +enum Enum1931 @Directive44(argument97 : ["stringValue36562"]) { + EnumValue33020 + EnumValue33021 + EnumValue33022 +} + +enum Enum1932 @Directive44(argument97 : ["stringValue36610"]) { + EnumValue33023 + EnumValue33024 + EnumValue33025 + EnumValue33026 + EnumValue33027 + EnumValue33028 + EnumValue33029 + EnumValue33030 + EnumValue33031 + EnumValue33032 + EnumValue33033 + EnumValue33034 + EnumValue33035 + EnumValue33036 + EnumValue33037 + EnumValue33038 + EnumValue33039 + EnumValue33040 + EnumValue33041 +} + +enum Enum1933 @Directive44(argument97 : ["stringValue36629"]) { + EnumValue33042 + EnumValue33043 + EnumValue33044 +} + +enum Enum1934 @Directive44(argument97 : ["stringValue36642"]) { + EnumValue33045 + EnumValue33046 + EnumValue33047 + EnumValue33048 + EnumValue33049 + EnumValue33050 + EnumValue33051 + EnumValue33052 + EnumValue33053 + EnumValue33054 + EnumValue33055 + EnumValue33056 + EnumValue33057 + EnumValue33058 + EnumValue33059 + EnumValue33060 +} + +enum Enum1935 @Directive44(argument97 : ["stringValue36661"]) { + EnumValue33061 + EnumValue33062 + EnumValue33063 + EnumValue33064 + EnumValue33065 + EnumValue33066 + EnumValue33067 +} + +enum Enum1936 @Directive44(argument97 : ["stringValue36674"]) { + EnumValue33068 + EnumValue33069 + EnumValue33070 + EnumValue33071 +} + +enum Enum1937 @Directive44(argument97 : ["stringValue36736"]) { + EnumValue33072 + EnumValue33073 + EnumValue33074 + EnumValue33075 +} + +enum Enum1938 @Directive44(argument97 : ["stringValue36739"]) { + EnumValue33076 + EnumValue33077 + EnumValue33078 +} + +enum Enum1939 @Directive44(argument97 : ["stringValue36740"]) { + EnumValue33079 + EnumValue33080 + EnumValue33081 +} + +enum Enum194 @Directive19(argument57 : "stringValue3113") @Directive22(argument62 : "stringValue3112") @Directive44(argument97 : ["stringValue3114", "stringValue3115"]) { + EnumValue4351 + EnumValue4352 + EnumValue4353 + EnumValue4354 + EnumValue4355 + EnumValue4356 + EnumValue4357 + EnumValue4358 + EnumValue4359 + EnumValue4360 + EnumValue4361 + EnumValue4362 + EnumValue4363 + EnumValue4364 + EnumValue4365 + EnumValue4366 + EnumValue4367 + EnumValue4368 + EnumValue4369 + EnumValue4370 + EnumValue4371 + EnumValue4372 + EnumValue4373 + EnumValue4374 + EnumValue4375 + EnumValue4376 + EnumValue4377 + EnumValue4378 + EnumValue4379 + EnumValue4380 + EnumValue4381 + EnumValue4382 + EnumValue4383 + EnumValue4384 + EnumValue4385 + EnumValue4386 + EnumValue4387 + EnumValue4388 + EnumValue4389 + EnumValue4390 + EnumValue4391 + EnumValue4392 + EnumValue4393 + EnumValue4394 + EnumValue4395 + EnumValue4396 + EnumValue4397 + EnumValue4398 + EnumValue4399 + EnumValue4400 + EnumValue4401 + EnumValue4402 + EnumValue4403 + EnumValue4404 + EnumValue4405 + EnumValue4406 + EnumValue4407 + EnumValue4408 + EnumValue4409 + EnumValue4410 + EnumValue4411 + EnumValue4412 + EnumValue4413 + EnumValue4414 + EnumValue4415 + EnumValue4416 + EnumValue4417 + EnumValue4418 + EnumValue4419 + EnumValue4420 + EnumValue4421 + EnumValue4422 + EnumValue4423 + EnumValue4424 + EnumValue4425 + EnumValue4426 + EnumValue4427 + EnumValue4428 + EnumValue4429 + EnumValue4430 + EnumValue4431 + EnumValue4432 + EnumValue4433 + EnumValue4434 + EnumValue4435 + EnumValue4436 + EnumValue4437 + EnumValue4438 + EnumValue4439 + EnumValue4440 + EnumValue4441 + EnumValue4442 + EnumValue4443 + EnumValue4444 + EnumValue4445 + EnumValue4446 + EnumValue4447 + EnumValue4448 + EnumValue4449 + EnumValue4450 + EnumValue4451 + EnumValue4452 + EnumValue4453 + EnumValue4454 + EnumValue4455 + EnumValue4456 + EnumValue4457 + EnumValue4458 + EnumValue4459 + EnumValue4460 + EnumValue4461 + EnumValue4462 + EnumValue4463 + EnumValue4464 + EnumValue4465 + EnumValue4466 + EnumValue4467 + EnumValue4468 + EnumValue4469 + EnumValue4470 + EnumValue4471 + EnumValue4472 + EnumValue4473 + EnumValue4474 + EnumValue4475 + EnumValue4476 + EnumValue4477 + EnumValue4478 + EnumValue4479 + EnumValue4480 + EnumValue4481 + EnumValue4482 + EnumValue4483 + EnumValue4484 + EnumValue4485 + EnumValue4486 + EnumValue4487 + EnumValue4488 + EnumValue4489 + EnumValue4490 + EnumValue4491 + EnumValue4492 + EnumValue4493 + EnumValue4494 + EnumValue4495 + EnumValue4496 + EnumValue4497 + EnumValue4498 + EnumValue4499 + EnumValue4500 + EnumValue4501 + EnumValue4502 + EnumValue4503 + EnumValue4504 + EnumValue4505 + EnumValue4506 + EnumValue4507 + EnumValue4508 + EnumValue4509 + EnumValue4510 + EnumValue4511 + EnumValue4512 + EnumValue4513 + EnumValue4514 + EnumValue4515 + EnumValue4516 + EnumValue4517 + EnumValue4518 + EnumValue4519 + EnumValue4520 + EnumValue4521 + EnumValue4522 + EnumValue4523 + EnumValue4524 + EnumValue4525 + EnumValue4526 + EnumValue4527 + EnumValue4528 + EnumValue4529 + EnumValue4530 + EnumValue4531 + EnumValue4532 + EnumValue4533 + EnumValue4534 + EnumValue4535 + EnumValue4536 + EnumValue4537 + EnumValue4538 + EnumValue4539 + EnumValue4540 + EnumValue4541 + EnumValue4542 + EnumValue4543 + EnumValue4544 + EnumValue4545 + EnumValue4546 + EnumValue4547 + EnumValue4548 + EnumValue4549 + EnumValue4550 + EnumValue4551 + EnumValue4552 + EnumValue4553 + EnumValue4554 + EnumValue4555 + EnumValue4556 + EnumValue4557 + EnumValue4558 + EnumValue4559 + EnumValue4560 + EnumValue4561 + EnumValue4562 + EnumValue4563 + EnumValue4564 + EnumValue4565 + EnumValue4566 + EnumValue4567 + EnumValue4568 + EnumValue4569 + EnumValue4570 + EnumValue4571 + EnumValue4572 + EnumValue4573 + EnumValue4574 + EnumValue4575 + EnumValue4576 + EnumValue4577 + EnumValue4578 + EnumValue4579 + EnumValue4580 + EnumValue4581 + EnumValue4582 + EnumValue4583 + EnumValue4584 + EnumValue4585 + EnumValue4586 + EnumValue4587 + EnumValue4588 + EnumValue4589 + EnumValue4590 + EnumValue4591 + EnumValue4592 + EnumValue4593 + EnumValue4594 + EnumValue4595 + EnumValue4596 + EnumValue4597 + EnumValue4598 + EnumValue4599 + EnumValue4600 + EnumValue4601 + EnumValue4602 + EnumValue4603 + EnumValue4604 + EnumValue4605 + EnumValue4606 + EnumValue4607 + EnumValue4608 + EnumValue4609 + EnumValue4610 + EnumValue4611 + EnumValue4612 + EnumValue4613 + EnumValue4614 + EnumValue4615 + EnumValue4616 + EnumValue4617 + EnumValue4618 + EnumValue4619 + EnumValue4620 + EnumValue4621 + EnumValue4622 + EnumValue4623 + EnumValue4624 + EnumValue4625 + EnumValue4626 + EnumValue4627 + EnumValue4628 + EnumValue4629 + EnumValue4630 + EnumValue4631 + EnumValue4632 + EnumValue4633 + EnumValue4634 + EnumValue4635 + EnumValue4636 + EnumValue4637 + EnumValue4638 + EnumValue4639 + EnumValue4640 + EnumValue4641 + EnumValue4642 + EnumValue4643 + EnumValue4644 + EnumValue4645 + EnumValue4646 + EnumValue4647 +} + +enum Enum1940 @Directive44(argument97 : ["stringValue36757"]) { + EnumValue33082 + EnumValue33083 +} + +enum Enum1941 @Directive44(argument97 : ["stringValue36762"]) { + EnumValue33084 + EnumValue33085 + EnumValue33086 + EnumValue33087 + EnumValue33088 + EnumValue33089 +} + +enum Enum1942 @Directive44(argument97 : ["stringValue36769"]) { + EnumValue33090 + EnumValue33091 + EnumValue33092 + EnumValue33093 + EnumValue33094 + EnumValue33095 +} + +enum Enum1943 @Directive44(argument97 : ["stringValue36770"]) { + EnumValue33096 + EnumValue33097 + EnumValue33098 +} + +enum Enum1944 @Directive44(argument97 : ["stringValue36777"]) { + EnumValue33099 + EnumValue33100 +} + +enum Enum1945 @Directive44(argument97 : ["stringValue36784"]) { + EnumValue33101 + EnumValue33102 + EnumValue33103 + EnumValue33104 + EnumValue33105 + EnumValue33106 + EnumValue33107 + EnumValue33108 + EnumValue33109 + EnumValue33110 +} + +enum Enum1946 @Directive44(argument97 : ["stringValue36789"]) { + EnumValue33111 + EnumValue33112 + EnumValue33113 + EnumValue33114 +} + +enum Enum1947 @Directive44(argument97 : ["stringValue36818"]) { + EnumValue33115 + EnumValue33116 + EnumValue33117 + EnumValue33118 + EnumValue33119 + EnumValue33120 + EnumValue33121 + EnumValue33122 + EnumValue33123 + EnumValue33124 + EnumValue33125 + EnumValue33126 + EnumValue33127 + EnumValue33128 + EnumValue33129 +} + +enum Enum1948 @Directive44(argument97 : ["stringValue36837"]) { + EnumValue33130 + EnumValue33131 + EnumValue33132 + EnumValue33133 + EnumValue33134 +} + +enum Enum1949 @Directive44(argument97 : ["stringValue36840"]) { + EnumValue33135 + EnumValue33136 + EnumValue33137 +} + +enum Enum195 @Directive19(argument57 : "stringValue3163") @Directive22(argument62 : "stringValue3162") @Directive44(argument97 : ["stringValue3164", "stringValue3165"]) { + EnumValue4648 +} + +enum Enum1950 @Directive44(argument97 : ["stringValue36845"]) { + EnumValue33138 + EnumValue33139 + EnumValue33140 +} + +enum Enum1951 @Directive44(argument97 : ["stringValue36850"]) { + EnumValue33141 + EnumValue33142 + EnumValue33143 + EnumValue33144 + EnumValue33145 + EnumValue33146 + EnumValue33147 + EnumValue33148 + EnumValue33149 + EnumValue33150 +} + +enum Enum1952 @Directive44(argument97 : ["stringValue36891"]) { + EnumValue33151 + EnumValue33152 + EnumValue33153 + EnumValue33154 + EnumValue33155 + EnumValue33156 + EnumValue33157 + EnumValue33158 + EnumValue33159 + EnumValue33160 + EnumValue33161 + EnumValue33162 +} + +enum Enum1953 @Directive44(argument97 : ["stringValue36923"]) { + EnumValue33163 + EnumValue33164 +} + +enum Enum1954 @Directive44(argument97 : ["stringValue36926"]) { + EnumValue33165 + EnumValue33166 + EnumValue33167 +} + +enum Enum1955 @Directive44(argument97 : ["stringValue36937"]) { + EnumValue33168 + EnumValue33169 + EnumValue33170 +} + +enum Enum1956 @Directive44(argument97 : ["stringValue36942"]) { + EnumValue33171 + EnumValue33172 + EnumValue33173 + EnumValue33174 + EnumValue33175 +} + +enum Enum1957 @Directive44(argument97 : ["stringValue36957"]) { + EnumValue33176 + EnumValue33177 + EnumValue33178 + EnumValue33179 + EnumValue33180 + EnumValue33181 + EnumValue33182 + EnumValue33183 + EnumValue33184 + EnumValue33185 + EnumValue33186 +} + +enum Enum1958 @Directive44(argument97 : ["stringValue36960"]) { + EnumValue33187 + EnumValue33188 + EnumValue33189 + EnumValue33190 +} + +enum Enum1959 @Directive44(argument97 : ["stringValue36961"]) { + EnumValue33191 + EnumValue33192 + EnumValue33193 + EnumValue33194 + EnumValue33195 + EnumValue33196 + EnumValue33197 +} + +enum Enum196 @Directive19(argument57 : "stringValue3220") @Directive22(argument62 : "stringValue3219") @Directive44(argument97 : ["stringValue3221", "stringValue3222"]) { + EnumValue4649 + EnumValue4650 + EnumValue4651 +} + +enum Enum1960 @Directive44(argument97 : ["stringValue36982"]) { + EnumValue33198 + EnumValue33199 + EnumValue33200 + EnumValue33201 + EnumValue33202 + EnumValue33203 + EnumValue33204 + EnumValue33205 + EnumValue33206 + EnumValue33207 + EnumValue33208 + EnumValue33209 + EnumValue33210 + EnumValue33211 + EnumValue33212 + EnumValue33213 + EnumValue33214 + EnumValue33215 + EnumValue33216 + EnumValue33217 + EnumValue33218 + EnumValue33219 +} + +enum Enum1961 @Directive44(argument97 : ["stringValue36997"]) { + EnumValue33220 + EnumValue33221 + EnumValue33222 +} + +enum Enum1962 @Directive44(argument97 : ["stringValue37016"]) { + EnumValue33223 + EnumValue33224 + EnumValue33225 + EnumValue33226 + EnumValue33227 + EnumValue33228 + EnumValue33229 + EnumValue33230 + EnumValue33231 + EnumValue33232 +} + +enum Enum1963 @Directive44(argument97 : ["stringValue37017"]) { + EnumValue33233 + EnumValue33234 + EnumValue33235 +} + +enum Enum1964 @Directive44(argument97 : ["stringValue37034"]) { + EnumValue33236 + EnumValue33237 + EnumValue33238 + EnumValue33239 +} + +enum Enum1965 @Directive44(argument97 : ["stringValue37043"]) { + EnumValue33240 + EnumValue33241 + EnumValue33242 + EnumValue33243 + EnumValue33244 + EnumValue33245 +} + +enum Enum1966 @Directive44(argument97 : ["stringValue37046"]) { + EnumValue33246 + EnumValue33247 + EnumValue33248 + EnumValue33249 + EnumValue33250 + EnumValue33251 + EnumValue33252 +} + +enum Enum1967 @Directive44(argument97 : ["stringValue37047"]) { + EnumValue33253 + EnumValue33254 + EnumValue33255 + EnumValue33256 + EnumValue33257 + EnumValue33258 +} + +enum Enum1968 @Directive44(argument97 : ["stringValue37058"]) { + EnumValue33259 + EnumValue33260 + EnumValue33261 + EnumValue33262 +} + +enum Enum1969 @Directive44(argument97 : ["stringValue37061"]) { + EnumValue33263 + EnumValue33264 + EnumValue33265 + EnumValue33266 + EnumValue33267 +} + +enum Enum197 @Directive19(argument57 : "stringValue3248") @Directive22(argument62 : "stringValue3247") @Directive44(argument97 : ["stringValue3249", "stringValue3250"]) { + EnumValue4652 + EnumValue4653 + EnumValue4654 + EnumValue4655 + EnumValue4656 +} + +enum Enum1970 @Directive44(argument97 : ["stringValue37071"]) { + EnumValue33268 + EnumValue33269 + EnumValue33270 + EnumValue33271 + EnumValue33272 + EnumValue33273 + EnumValue33274 + EnumValue33275 + EnumValue33276 +} + +enum Enum1971 @Directive44(argument97 : ["stringValue37090"]) { + EnumValue33277 + EnumValue33278 + EnumValue33279 +} + +enum Enum1972 @Directive44(argument97 : ["stringValue37097"]) { + EnumValue33280 + EnumValue33281 + EnumValue33282 + EnumValue33283 + EnumValue33284 +} + +enum Enum1973 @Directive44(argument97 : ["stringValue37102"]) { + EnumValue33285 + EnumValue33286 + EnumValue33287 + EnumValue33288 + EnumValue33289 +} + +enum Enum1974 @Directive44(argument97 : ["stringValue37143"]) { + EnumValue33290 + EnumValue33291 + EnumValue33292 + EnumValue33293 + EnumValue33294 + EnumValue33295 + EnumValue33296 +} + +enum Enum1975 @Directive44(argument97 : ["stringValue37148"]) { + EnumValue33297 + EnumValue33298 + EnumValue33299 +} + +enum Enum1976 @Directive44(argument97 : ["stringValue37149"]) { + EnumValue33300 + EnumValue33301 + EnumValue33302 +} + +enum Enum1977 @Directive44(argument97 : ["stringValue37160"]) { + EnumValue33303 + EnumValue33304 + EnumValue33305 + EnumValue33306 + EnumValue33307 + EnumValue33308 + EnumValue33309 + EnumValue33310 + EnumValue33311 + EnumValue33312 + EnumValue33313 + EnumValue33314 + EnumValue33315 + EnumValue33316 + EnumValue33317 + EnumValue33318 + EnumValue33319 + EnumValue33320 + EnumValue33321 + EnumValue33322 + EnumValue33323 + EnumValue33324 + EnumValue33325 + EnumValue33326 + EnumValue33327 + EnumValue33328 + EnumValue33329 + EnumValue33330 + EnumValue33331 + EnumValue33332 + EnumValue33333 + EnumValue33334 + EnumValue33335 + EnumValue33336 + EnumValue33337 + EnumValue33338 + EnumValue33339 + EnumValue33340 + EnumValue33341 + EnumValue33342 + EnumValue33343 + EnumValue33344 + EnumValue33345 + EnumValue33346 + EnumValue33347 + EnumValue33348 + EnumValue33349 + EnumValue33350 + EnumValue33351 +} + +enum Enum1978 @Directive44(argument97 : ["stringValue37165"]) { + EnumValue33352 + EnumValue33353 + EnumValue33354 + EnumValue33355 + EnumValue33356 + EnumValue33357 + EnumValue33358 + EnumValue33359 +} + +enum Enum1979 @Directive44(argument97 : ["stringValue37169"]) { + EnumValue33360 + EnumValue33361 + EnumValue33362 +} + +enum Enum198 @Directive19(argument57 : "stringValue3252") @Directive22(argument62 : "stringValue3251") @Directive44(argument97 : ["stringValue3253", "stringValue3254"]) { + EnumValue4657 + EnumValue4658 +} + +enum Enum1980 @Directive44(argument97 : ["stringValue37183"]) { + EnumValue33363 + EnumValue33364 +} + +enum Enum1981 @Directive44(argument97 : ["stringValue37196"]) { + EnumValue33365 + EnumValue33366 + EnumValue33367 + EnumValue33368 + EnumValue33369 +} + +enum Enum1982 @Directive44(argument97 : ["stringValue37211"]) { + EnumValue33370 + EnumValue33371 + EnumValue33372 + EnumValue33373 + EnumValue33374 +} + +enum Enum1983 @Directive44(argument97 : ["stringValue37212"]) { + EnumValue33375 + EnumValue33376 + EnumValue33377 + EnumValue33378 + EnumValue33379 + EnumValue33380 +} + +enum Enum1984 @Directive44(argument97 : ["stringValue37214"]) { + EnumValue33381 + EnumValue33382 + EnumValue33383 + EnumValue33384 + EnumValue33385 + EnumValue33386 + EnumValue33387 +} + +enum Enum1985 @Directive44(argument97 : ["stringValue37240"]) { + EnumValue33388 + EnumValue33389 + EnumValue33390 +} + +enum Enum1986 @Directive44(argument97 : ["stringValue37261"]) { + EnumValue33391 + EnumValue33392 + EnumValue33393 + EnumValue33394 + EnumValue33395 + EnumValue33396 + EnumValue33397 +} + +enum Enum1987 @Directive44(argument97 : ["stringValue37285"]) { + EnumValue33398 + EnumValue33399 + EnumValue33400 + EnumValue33401 + EnumValue33402 + EnumValue33403 +} + +enum Enum1988 @Directive44(argument97 : ["stringValue37286"]) { + EnumValue33404 + EnumValue33405 + EnumValue33406 +} + +enum Enum1989 @Directive44(argument97 : ["stringValue37328"]) { + EnumValue33407 + EnumValue33408 + EnumValue33409 + EnumValue33410 +} + +enum Enum199 @Directive19(argument57 : "stringValue3272") @Directive22(argument62 : "stringValue3271") @Directive44(argument97 : ["stringValue3273", "stringValue3274"]) { + EnumValue4659 + EnumValue4660 + EnumValue4661 +} + +enum Enum1990 @Directive44(argument97 : ["stringValue37329"]) { + EnumValue33411 + EnumValue33412 + EnumValue33413 + EnumValue33414 +} + +enum Enum1991 @Directive44(argument97 : ["stringValue37353"]) { + EnumValue33415 + EnumValue33416 + EnumValue33417 + EnumValue33418 + EnumValue33419 + EnumValue33420 + EnumValue33421 + EnumValue33422 + EnumValue33423 +} + +enum Enum1992 @Directive44(argument97 : ["stringValue37360"]) { + EnumValue33424 + EnumValue33425 + EnumValue33426 +} + +enum Enum1993 @Directive44(argument97 : ["stringValue37587"]) { + EnumValue33427 + EnumValue33428 + EnumValue33429 + EnumValue33430 + EnumValue33431 +} + +enum Enum1994 @Directive44(argument97 : ["stringValue37588"]) { + EnumValue33432 + EnumValue33433 + EnumValue33434 + EnumValue33435 + EnumValue33436 + EnumValue33437 + EnumValue33438 + EnumValue33439 + EnumValue33440 + EnumValue33441 +} + +enum Enum1995 @Directive44(argument97 : ["stringValue37591"]) { + EnumValue33442 + EnumValue33443 + EnumValue33444 +} + +enum Enum1996 @Directive44(argument97 : ["stringValue37596"]) { + EnumValue33445 + EnumValue33446 + EnumValue33447 +} + +enum Enum1997 @Directive44(argument97 : ["stringValue37635"]) { + EnumValue33448 + EnumValue33449 + EnumValue33450 + EnumValue33451 + EnumValue33452 + EnumValue33453 + EnumValue33454 + EnumValue33455 + EnumValue33456 + EnumValue33457 + EnumValue33458 + EnumValue33459 + EnumValue33460 + EnumValue33461 + EnumValue33462 + EnumValue33463 + EnumValue33464 + EnumValue33465 + EnumValue33466 + EnumValue33467 + EnumValue33468 + EnumValue33469 + EnumValue33470 + EnumValue33471 + EnumValue33472 + EnumValue33473 + EnumValue33474 + EnumValue33475 + EnumValue33476 + EnumValue33477 +} + +enum Enum1998 @Directive44(argument97 : ["stringValue37636"]) { + EnumValue33478 + EnumValue33479 + EnumValue33480 + EnumValue33481 +} + +enum Enum1999 @Directive44(argument97 : ["stringValue37644"]) { + EnumValue33482 + EnumValue33483 +} + +enum Enum2 @Directive19(argument57 : "stringValue26") @Directive22(argument62 : "stringValue25") @Directive44(argument97 : ["stringValue27", "stringValue28"]) { + EnumValue3 + EnumValue4 + EnumValue5 + EnumValue6 + EnumValue7 + EnumValue8 + EnumValue9 +} + +enum Enum20 @Directive44(argument97 : ["stringValue164"]) { + EnumValue828 + EnumValue829 + EnumValue830 + EnumValue831 + EnumValue832 + EnumValue833 + EnumValue834 + EnumValue835 + EnumValue836 +} + +enum Enum200 @Directive19(argument57 : "stringValue3280") @Directive22(argument62 : "stringValue3279") @Directive44(argument97 : ["stringValue3281", "stringValue3282"]) { + EnumValue4662 + EnumValue4663 + EnumValue4664 + EnumValue4665 + EnumValue4666 + EnumValue4667 +} + +enum Enum2000 @Directive44(argument97 : ["stringValue37651"]) { + EnumValue33484 + EnumValue33485 +} + +enum Enum2001 @Directive44(argument97 : ["stringValue37662"]) { + EnumValue33486 + EnumValue33487 + EnumValue33488 +} + +enum Enum2002 @Directive44(argument97 : ["stringValue37663"]) { + EnumValue33489 + EnumValue33490 + EnumValue33491 +} + +enum Enum2003 @Directive44(argument97 : ["stringValue37664"]) { + EnumValue33492 + EnumValue33493 + EnumValue33494 + EnumValue33495 + EnumValue33496 +} + +enum Enum2004 @Directive44(argument97 : ["stringValue37669"]) { + EnumValue33497 + EnumValue33498 + EnumValue33499 + EnumValue33500 + EnumValue33501 + EnumValue33502 + EnumValue33503 + EnumValue33504 + EnumValue33505 + EnumValue33506 + EnumValue33507 +} + +enum Enum2005 @Directive44(argument97 : ["stringValue37688"]) { + EnumValue33508 + EnumValue33509 + EnumValue33510 + EnumValue33511 + EnumValue33512 +} + +enum Enum2006 @Directive44(argument97 : ["stringValue37689"]) { + EnumValue33513 + EnumValue33514 + EnumValue33515 + EnumValue33516 + EnumValue33517 + EnumValue33518 +} + +enum Enum2007 @Directive44(argument97 : ["stringValue37690"]) { + EnumValue33519 + EnumValue33520 + EnumValue33521 + EnumValue33522 + EnumValue33523 +} + +enum Enum2008 @Directive44(argument97 : ["stringValue37691"]) { + EnumValue33524 + EnumValue33525 + EnumValue33526 + EnumValue33527 +} + +enum Enum2009 @Directive44(argument97 : ["stringValue37698"]) { + EnumValue33528 + EnumValue33529 + EnumValue33530 +} + +enum Enum201 @Directive19(argument57 : "stringValue3365") @Directive22(argument62 : "stringValue3364") @Directive44(argument97 : ["stringValue3366", "stringValue3367"]) { + EnumValue4668 + EnumValue4669 + EnumValue4670 + EnumValue4671 + EnumValue4672 +} + +enum Enum2010 @Directive44(argument97 : ["stringValue37705"]) { + EnumValue33531 + EnumValue33532 + EnumValue33533 + EnumValue33534 +} + +enum Enum2011 @Directive44(argument97 : ["stringValue37712"]) { + EnumValue33535 + EnumValue33536 + EnumValue33537 + EnumValue33538 +} + +enum Enum2012 @Directive44(argument97 : ["stringValue37721"]) { + EnumValue33539 + EnumValue33540 + EnumValue33541 +} + +enum Enum2013 @Directive44(argument97 : ["stringValue37726"]) { + EnumValue33542 + EnumValue33543 + EnumValue33544 + EnumValue33545 +} + +enum Enum2014 @Directive44(argument97 : ["stringValue37729"]) { + EnumValue33546 + EnumValue33547 + EnumValue33548 + EnumValue33549 +} + +enum Enum2015 @Directive44(argument97 : ["stringValue37730"]) { + EnumValue33550 + EnumValue33551 + EnumValue33552 +} + +enum Enum2016 @Directive44(argument97 : ["stringValue37748"]) { + EnumValue33553 + EnumValue33554 +} + +enum Enum2017 @Directive44(argument97 : ["stringValue37803"]) { + EnumValue33555 + EnumValue33556 + EnumValue33557 + EnumValue33558 +} + +enum Enum2018 @Directive44(argument97 : ["stringValue37818"]) { + EnumValue33559 + EnumValue33560 + EnumValue33561 +} + +enum Enum2019 @Directive44(argument97 : ["stringValue37827"]) { + EnumValue33562 + EnumValue33563 + EnumValue33564 +} + +enum Enum202 @Directive19(argument57 : "stringValue3380") @Directive22(argument62 : "stringValue3381") @Directive44(argument97 : ["stringValue3382", "stringValue3383"]) { + EnumValue4673 + EnumValue4674 + EnumValue4675 + EnumValue4676 + EnumValue4677 + EnumValue4678 + EnumValue4679 + EnumValue4680 + EnumValue4681 + EnumValue4682 + EnumValue4683 + EnumValue4684 + EnumValue4685 + EnumValue4686 + EnumValue4687 + EnumValue4688 + EnumValue4689 + EnumValue4690 + EnumValue4691 + EnumValue4692 + EnumValue4693 + EnumValue4694 + EnumValue4695 + EnumValue4696 + EnumValue4697 + EnumValue4698 + EnumValue4699 + EnumValue4700 + EnumValue4701 + EnumValue4702 + EnumValue4703 + EnumValue4704 + EnumValue4705 + EnumValue4706 + EnumValue4707 + EnumValue4708 +} + +enum Enum2020 @Directive44(argument97 : ["stringValue37830"]) { + EnumValue33565 + EnumValue33566 + EnumValue33567 +} + +enum Enum2021 @Directive44(argument97 : ["stringValue37839"]) { + EnumValue33568 + EnumValue33569 + EnumValue33570 +} + +enum Enum2022 @Directive44(argument97 : ["stringValue37840"]) { + EnumValue33571 + EnumValue33572 + EnumValue33573 + EnumValue33574 + EnumValue33575 + EnumValue33576 + EnumValue33577 + EnumValue33578 + EnumValue33579 + EnumValue33580 + EnumValue33581 + EnumValue33582 + EnumValue33583 +} + +enum Enum2023 @Directive44(argument97 : ["stringValue37841"]) { + EnumValue33584 + EnumValue33585 + EnumValue33586 + EnumValue33587 + EnumValue33588 +} + +enum Enum2024 @Directive44(argument97 : ["stringValue37853"]) { + EnumValue33589 + EnumValue33590 + EnumValue33591 + EnumValue33592 +} + +enum Enum2025 @Directive44(argument97 : ["stringValue37854"]) { + EnumValue33593 + EnumValue33594 + EnumValue33595 + EnumValue33596 + EnumValue33597 + EnumValue33598 + EnumValue33599 + EnumValue33600 + EnumValue33601 + EnumValue33602 + EnumValue33603 + EnumValue33604 + EnumValue33605 + EnumValue33606 + EnumValue33607 + EnumValue33608 + EnumValue33609 + EnumValue33610 + EnumValue33611 + EnumValue33612 + EnumValue33613 + EnumValue33614 + EnumValue33615 + EnumValue33616 + EnumValue33617 + EnumValue33618 + EnumValue33619 + EnumValue33620 +} + +enum Enum2026 @Directive44(argument97 : ["stringValue37855"]) { + EnumValue33621 + EnumValue33622 + EnumValue33623 + EnumValue33624 + EnumValue33625 + EnumValue33626 + EnumValue33627 + EnumValue33628 + EnumValue33629 + EnumValue33630 + EnumValue33631 + EnumValue33632 + EnumValue33633 + EnumValue33634 + EnumValue33635 + EnumValue33636 + EnumValue33637 + EnumValue33638 + EnumValue33639 + EnumValue33640 + EnumValue33641 + EnumValue33642 + EnumValue33643 + EnumValue33644 + EnumValue33645 + EnumValue33646 + EnumValue33647 + EnumValue33648 + EnumValue33649 + EnumValue33650 + EnumValue33651 + EnumValue33652 +} + +enum Enum2027 @Directive44(argument97 : ["stringValue37856"]) { + EnumValue33653 + EnumValue33654 + EnumValue33655 + EnumValue33656 +} + +enum Enum2028 @Directive44(argument97 : ["stringValue37861"]) { + EnumValue33657 + EnumValue33658 + EnumValue33659 + EnumValue33660 +} + +enum Enum2029 @Directive44(argument97 : ["stringValue37875"]) { + EnumValue33661 + EnumValue33662 + EnumValue33663 + EnumValue33664 + EnumValue33665 + EnumValue33666 + EnumValue33667 + EnumValue33668 +} + +enum Enum203 @Directive22(argument62 : "stringValue3478") @Directive44(argument97 : ["stringValue3479", "stringValue3480"]) { + EnumValue4709 + EnumValue4710 +} + +enum Enum2030 @Directive44(argument97 : ["stringValue37884"]) { + EnumValue33669 + EnumValue33670 + EnumValue33671 + EnumValue33672 + EnumValue33673 + EnumValue33674 + EnumValue33675 + EnumValue33676 + EnumValue33677 + EnumValue33678 + EnumValue33679 + EnumValue33680 + EnumValue33681 + EnumValue33682 + EnumValue33683 + EnumValue33684 + EnumValue33685 +} + +enum Enum2031 @Directive44(argument97 : ["stringValue37885"]) { + EnumValue33686 + EnumValue33687 + EnumValue33688 + EnumValue33689 + EnumValue33690 + EnumValue33691 + EnumValue33692 + EnumValue33693 + EnumValue33694 +} + +enum Enum2032 @Directive44(argument97 : ["stringValue37888"]) { + EnumValue33695 + EnumValue33696 + EnumValue33697 + EnumValue33698 + EnumValue33699 + EnumValue33700 + EnumValue33701 + EnumValue33702 +} + +enum Enum2033 @Directive44(argument97 : ["stringValue37889"]) { + EnumValue33703 + EnumValue33704 +} + +enum Enum2034 @Directive44(argument97 : ["stringValue37895"]) { + EnumValue33705 + EnumValue33706 + EnumValue33707 + EnumValue33708 + EnumValue33709 + EnumValue33710 + EnumValue33711 + EnumValue33712 + EnumValue33713 + EnumValue33714 + EnumValue33715 + EnumValue33716 + EnumValue33717 + EnumValue33718 + EnumValue33719 + EnumValue33720 +} + +enum Enum2035 @Directive44(argument97 : ["stringValue37907"]) { + EnumValue33721 + EnumValue33722 + EnumValue33723 + EnumValue33724 + EnumValue33725 + EnumValue33726 + EnumValue33727 + EnumValue33728 +} + +enum Enum2036 @Directive44(argument97 : ["stringValue37940"]) { + EnumValue33729 + EnumValue33730 + EnumValue33731 + EnumValue33732 +} + +enum Enum2037 @Directive44(argument97 : ["stringValue37941"]) { + EnumValue33733 + EnumValue33734 + EnumValue33735 + EnumValue33736 +} + +enum Enum2038 @Directive44(argument97 : ["stringValue37976"]) { + EnumValue33737 + EnumValue33738 + EnumValue33739 + EnumValue33740 + EnumValue33741 +} + +enum Enum2039 @Directive44(argument97 : ["stringValue37977"]) { + EnumValue33742 + EnumValue33743 +} + +enum Enum204 @Directive19(argument57 : "stringValue3494") @Directive22(argument62 : "stringValue3493") @Directive44(argument97 : ["stringValue3495", "stringValue3496"]) { + EnumValue4711 + EnumValue4712 +} + +enum Enum2040 @Directive44(argument97 : ["stringValue37980"]) { + EnumValue33744 + EnumValue33745 + EnumValue33746 +} + +enum Enum2041 @Directive44(argument97 : ["stringValue37983"]) { + EnumValue33747 + EnumValue33748 + EnumValue33749 + EnumValue33750 +} + +enum Enum2042 @Directive44(argument97 : ["stringValue37988"]) { + EnumValue33751 + EnumValue33752 + EnumValue33753 +} + +enum Enum2043 @Directive44(argument97 : ["stringValue38013"]) { + EnumValue33754 + EnumValue33755 + EnumValue33756 + EnumValue33757 +} + +enum Enum2044 @Directive44(argument97 : ["stringValue38016"]) { + EnumValue33758 + EnumValue33759 + EnumValue33760 +} + +enum Enum2045 @Directive44(argument97 : ["stringValue38019"]) { + EnumValue33761 + EnumValue33762 + EnumValue33763 +} + +enum Enum2046 @Directive44(argument97 : ["stringValue38024"]) { + EnumValue33764 + EnumValue33765 + EnumValue33766 + EnumValue33767 + EnumValue33768 + EnumValue33769 + EnumValue33770 + EnumValue33771 + EnumValue33772 + EnumValue33773 + EnumValue33774 + EnumValue33775 + EnumValue33776 + EnumValue33777 +} + +enum Enum2047 @Directive44(argument97 : ["stringValue38025"]) { + EnumValue33778 + EnumValue33779 + EnumValue33780 + EnumValue33781 + EnumValue33782 + EnumValue33783 + EnumValue33784 + EnumValue33785 + EnumValue33786 + EnumValue33787 + EnumValue33788 + EnumValue33789 + EnumValue33790 + EnumValue33791 + EnumValue33792 + EnumValue33793 + EnumValue33794 + EnumValue33795 + EnumValue33796 + EnumValue33797 + EnumValue33798 + EnumValue33799 + EnumValue33800 + EnumValue33801 + EnumValue33802 + EnumValue33803 + EnumValue33804 + EnumValue33805 + EnumValue33806 + EnumValue33807 + EnumValue33808 + EnumValue33809 + EnumValue33810 + EnumValue33811 + EnumValue33812 + EnumValue33813 + EnumValue33814 + EnumValue33815 + EnumValue33816 + EnumValue33817 +} + +enum Enum2048 @Directive44(argument97 : ["stringValue38026"]) { + EnumValue33818 + EnumValue33819 + EnumValue33820 + EnumValue33821 + EnumValue33822 +} + +enum Enum2049 @Directive44(argument97 : ["stringValue38027"]) { + EnumValue33823 + EnumValue33824 + EnumValue33825 +} + +enum Enum205 @Directive19(argument57 : "stringValue3510") @Directive22(argument62 : "stringValue3509") @Directive44(argument97 : ["stringValue3511", "stringValue3512"]) { + EnumValue4713 + EnumValue4714 + EnumValue4715 + EnumValue4716 + EnumValue4717 + EnumValue4718 + EnumValue4719 +} + +enum Enum2050 @Directive44(argument97 : ["stringValue38044"]) { + EnumValue33826 + EnumValue33827 + EnumValue33828 + EnumValue33829 + EnumValue33830 +} + +enum Enum2051 @Directive44(argument97 : ["stringValue38045"]) { + EnumValue33831 + EnumValue33832 + EnumValue33833 + EnumValue33834 + EnumValue33835 + EnumValue33836 + EnumValue33837 + EnumValue33838 +} + +enum Enum2052 @Directive44(argument97 : ["stringValue38046"]) { + EnumValue33839 + EnumValue33840 + EnumValue33841 + EnumValue33842 + EnumValue33843 + EnumValue33844 +} + +enum Enum2053 @Directive44(argument97 : ["stringValue38047"]) { + EnumValue33845 + EnumValue33846 +} + +enum Enum2054 @Directive44(argument97 : ["stringValue38052"]) { + EnumValue33847 + EnumValue33848 + EnumValue33849 + EnumValue33850 +} + +enum Enum2055 @Directive44(argument97 : ["stringValue38053"]) { + EnumValue33851 + EnumValue33852 + EnumValue33853 + EnumValue33854 + EnumValue33855 + EnumValue33856 +} + +enum Enum2056 @Directive44(argument97 : ["stringValue38054"]) { + EnumValue33857 + EnumValue33858 + EnumValue33859 + EnumValue33860 +} + +enum Enum2057 @Directive44(argument97 : ["stringValue38055"]) { + EnumValue33861 + EnumValue33862 + EnumValue33863 + EnumValue33864 + EnumValue33865 +} + +enum Enum2058 @Directive44(argument97 : ["stringValue38058"]) { + EnumValue33866 + EnumValue33867 + EnumValue33868 + EnumValue33869 + EnumValue33870 + EnumValue33871 + EnumValue33872 +} + +enum Enum2059 @Directive44(argument97 : ["stringValue38072"]) { + EnumValue33873 + EnumValue33874 + EnumValue33875 + EnumValue33876 + EnumValue33877 + EnumValue33878 + EnumValue33879 + EnumValue33880 + EnumValue33881 + EnumValue33882 + EnumValue33883 + EnumValue33884 + EnumValue33885 + EnumValue33886 + EnumValue33887 + EnumValue33888 + EnumValue33889 + EnumValue33890 + EnumValue33891 + EnumValue33892 + EnumValue33893 + EnumValue33894 + EnumValue33895 + EnumValue33896 + EnumValue33897 + EnumValue33898 + EnumValue33899 + EnumValue33900 + EnumValue33901 + EnumValue33902 + EnumValue33903 + EnumValue33904 + EnumValue33905 + EnumValue33906 + EnumValue33907 + EnumValue33908 + EnumValue33909 + EnumValue33910 + EnumValue33911 + EnumValue33912 + EnumValue33913 + EnumValue33914 + EnumValue33915 + EnumValue33916 + EnumValue33917 + EnumValue33918 + EnumValue33919 + EnumValue33920 + EnumValue33921 + EnumValue33922 + EnumValue33923 + EnumValue33924 +} + +enum Enum206 @Directive19(argument57 : "stringValue3544") @Directive22(argument62 : "stringValue3543") @Directive44(argument97 : ["stringValue3545", "stringValue3546"]) { + EnumValue4720 + EnumValue4721 + EnumValue4722 + EnumValue4723 + EnumValue4724 + EnumValue4725 + EnumValue4726 + EnumValue4727 + EnumValue4728 + EnumValue4729 +} + +enum Enum2060 @Directive44(argument97 : ["stringValue38073"]) { + EnumValue33925 + EnumValue33926 + EnumValue33927 + EnumValue33928 + EnumValue33929 + EnumValue33930 + EnumValue33931 + EnumValue33932 + EnumValue33933 + EnumValue33934 + EnumValue33935 + EnumValue33936 + EnumValue33937 + EnumValue33938 + EnumValue33939 + EnumValue33940 + EnumValue33941 + EnumValue33942 + EnumValue33943 + EnumValue33944 + EnumValue33945 + EnumValue33946 + EnumValue33947 + EnumValue33948 + EnumValue33949 + EnumValue33950 + EnumValue33951 +} + +enum Enum2061 @Directive44(argument97 : ["stringValue38076"]) { + EnumValue33952 + EnumValue33953 +} + +enum Enum2062 @Directive44(argument97 : ["stringValue38077"]) { + EnumValue33954 + EnumValue33955 + EnumValue33956 + EnumValue33957 + EnumValue33958 +} + +enum Enum2063 @Directive44(argument97 : ["stringValue38092"]) { + EnumValue33959 + EnumValue33960 +} + +enum Enum2064 @Directive44(argument97 : ["stringValue38095"]) { + EnumValue33961 + EnumValue33962 +} + +enum Enum2065 @Directive44(argument97 : ["stringValue38098"]) { + EnumValue33963 + EnumValue33964 + EnumValue33965 +} + +enum Enum2066 @Directive44(argument97 : ["stringValue38099"]) { + EnumValue33966 + EnumValue33967 + EnumValue33968 + EnumValue33969 +} + +enum Enum2067 @Directive44(argument97 : ["stringValue38110"]) { + EnumValue33970 + EnumValue33971 + EnumValue33972 + EnumValue33973 + EnumValue33974 + EnumValue33975 + EnumValue33976 +} + +enum Enum2068 @Directive44(argument97 : ["stringValue38111"]) { + EnumValue33977 + EnumValue33978 +} + +enum Enum2069 @Directive44(argument97 : ["stringValue38142"]) { + EnumValue33979 + EnumValue33980 + EnumValue33981 +} + +enum Enum207 @Directive19(argument57 : "stringValue3648") @Directive22(argument62 : "stringValue3647") @Directive44(argument97 : ["stringValue3649", "stringValue3650"]) { + EnumValue4730 + EnumValue4731 +} + +enum Enum2070 @Directive44(argument97 : ["stringValue38151"]) { + EnumValue33982 + EnumValue33983 + EnumValue33984 + EnumValue33985 + EnumValue33986 + EnumValue33987 + EnumValue33988 + EnumValue33989 + EnumValue33990 + EnumValue33991 +} + +enum Enum2071 @Directive44(argument97 : ["stringValue38152"]) { + EnumValue33992 + EnumValue33993 + EnumValue33994 + EnumValue33995 +} + +enum Enum2072 @Directive44(argument97 : ["stringValue38167"]) { + EnumValue33996 + EnumValue33997 + EnumValue33998 + EnumValue33999 + EnumValue34000 +} + +enum Enum2073 @Directive44(argument97 : ["stringValue38172"]) { + EnumValue34001 + EnumValue34002 +} + +enum Enum2074 @Directive44(argument97 : ["stringValue38177"]) { + EnumValue34003 + EnumValue34004 + EnumValue34005 + EnumValue34006 + EnumValue34007 + EnumValue34008 +} + +enum Enum2075 @Directive44(argument97 : ["stringValue38184"]) { + EnumValue34009 + EnumValue34010 + EnumValue34011 + EnumValue34012 + EnumValue34013 + EnumValue34014 +} + +enum Enum2076 @Directive44(argument97 : ["stringValue38191"]) { + EnumValue34015 + EnumValue34016 + EnumValue34017 +} + +enum Enum2077 @Directive44(argument97 : ["stringValue38200"]) { + EnumValue34018 + EnumValue34019 + EnumValue34020 + EnumValue34021 + EnumValue34022 + EnumValue34023 + EnumValue34024 + EnumValue34025 + EnumValue34026 + EnumValue34027 + EnumValue34028 + EnumValue34029 + EnumValue34030 + EnumValue34031 + EnumValue34032 + EnumValue34033 + EnumValue34034 + EnumValue34035 + EnumValue34036 + EnumValue34037 + EnumValue34038 + EnumValue34039 + EnumValue34040 + EnumValue34041 + EnumValue34042 + EnumValue34043 + EnumValue34044 + EnumValue34045 + EnumValue34046 + EnumValue34047 + EnumValue34048 + EnumValue34049 + EnumValue34050 + EnumValue34051 + EnumValue34052 + EnumValue34053 + EnumValue34054 + EnumValue34055 + EnumValue34056 + EnumValue34057 + EnumValue34058 + EnumValue34059 + EnumValue34060 + EnumValue34061 + EnumValue34062 + EnumValue34063 + EnumValue34064 + EnumValue34065 + EnumValue34066 + EnumValue34067 + EnumValue34068 + EnumValue34069 + EnumValue34070 + EnumValue34071 + EnumValue34072 + EnumValue34073 + EnumValue34074 + EnumValue34075 + EnumValue34076 + EnumValue34077 + EnumValue34078 + EnumValue34079 + EnumValue34080 + EnumValue34081 + EnumValue34082 + EnumValue34083 + EnumValue34084 + EnumValue34085 + EnumValue34086 + EnumValue34087 + EnumValue34088 + EnumValue34089 + EnumValue34090 + EnumValue34091 + EnumValue34092 + EnumValue34093 + EnumValue34094 + EnumValue34095 + EnumValue34096 + EnumValue34097 + EnumValue34098 + EnumValue34099 + EnumValue34100 + EnumValue34101 + EnumValue34102 + EnumValue34103 + EnumValue34104 + EnumValue34105 + EnumValue34106 + EnumValue34107 + EnumValue34108 + EnumValue34109 + EnumValue34110 + EnumValue34111 + EnumValue34112 + EnumValue34113 + EnumValue34114 + EnumValue34115 + EnumValue34116 + EnumValue34117 + EnumValue34118 + EnumValue34119 + EnumValue34120 + EnumValue34121 + EnumValue34122 + EnumValue34123 + EnumValue34124 + EnumValue34125 + EnumValue34126 + EnumValue34127 + EnumValue34128 + EnumValue34129 + EnumValue34130 + EnumValue34131 + EnumValue34132 + EnumValue34133 + EnumValue34134 + EnumValue34135 + EnumValue34136 + EnumValue34137 + EnumValue34138 + EnumValue34139 + EnumValue34140 + EnumValue34141 + EnumValue34142 + EnumValue34143 + EnumValue34144 + EnumValue34145 + EnumValue34146 + EnumValue34147 + EnumValue34148 + EnumValue34149 + EnumValue34150 + EnumValue34151 + EnumValue34152 + EnumValue34153 + EnumValue34154 + EnumValue34155 + EnumValue34156 + EnumValue34157 + EnumValue34158 + EnumValue34159 + EnumValue34160 + EnumValue34161 + EnumValue34162 + EnumValue34163 + EnumValue34164 + EnumValue34165 + EnumValue34166 + EnumValue34167 + EnumValue34168 + EnumValue34169 + EnumValue34170 + EnumValue34171 + EnumValue34172 + EnumValue34173 + EnumValue34174 + EnumValue34175 + EnumValue34176 + EnumValue34177 + EnumValue34178 + EnumValue34179 + EnumValue34180 + EnumValue34181 + EnumValue34182 + EnumValue34183 + EnumValue34184 + EnumValue34185 + EnumValue34186 + EnumValue34187 + EnumValue34188 + EnumValue34189 + EnumValue34190 + EnumValue34191 + EnumValue34192 + EnumValue34193 + EnumValue34194 + EnumValue34195 + EnumValue34196 + EnumValue34197 + EnumValue34198 + EnumValue34199 + EnumValue34200 + EnumValue34201 + EnumValue34202 + EnumValue34203 + EnumValue34204 + EnumValue34205 + EnumValue34206 + EnumValue34207 + EnumValue34208 + EnumValue34209 + EnumValue34210 + EnumValue34211 + EnumValue34212 + EnumValue34213 + EnumValue34214 + EnumValue34215 + EnumValue34216 + EnumValue34217 + EnumValue34218 + EnumValue34219 + EnumValue34220 + EnumValue34221 + EnumValue34222 + EnumValue34223 + EnumValue34224 +} + +enum Enum2078 @Directive44(argument97 : ["stringValue38207"]) { + EnumValue34225 + EnumValue34226 + EnumValue34227 + EnumValue34228 + EnumValue34229 + EnumValue34230 +} + +enum Enum2079 @Directive44(argument97 : ["stringValue38208"]) { + EnumValue34231 + EnumValue34232 + EnumValue34233 +} + +enum Enum208 @Directive22(argument62 : "stringValue3675") @Directive44(argument97 : ["stringValue3676", "stringValue3677"]) { + EnumValue4732 + EnumValue4733 + EnumValue4734 + EnumValue4735 + EnumValue4736 + EnumValue4737 + EnumValue4738 + EnumValue4739 +} + +enum Enum2080 @Directive44(argument97 : ["stringValue38213"]) { + EnumValue34234 + EnumValue34235 + EnumValue34236 +} + +enum Enum2081 @Directive44(argument97 : ["stringValue38228"]) { + EnumValue34237 + EnumValue34238 +} + +enum Enum2082 @Directive44(argument97 : ["stringValue38241"]) { + EnumValue34239 + EnumValue34240 + EnumValue34241 + EnumValue34242 + EnumValue34243 + EnumValue34244 + EnumValue34245 + EnumValue34246 + EnumValue34247 + EnumValue34248 +} + +enum Enum2083 @Directive44(argument97 : ["stringValue38260"]) { + EnumValue34249 + EnumValue34250 + EnumValue34251 +} + +enum Enum2084 @Directive44(argument97 : ["stringValue38274"]) { + EnumValue34252 + EnumValue34253 + EnumValue34254 +} + +enum Enum2085 @Directive44(argument97 : ["stringValue38330"]) { + EnumValue34255 + EnumValue34256 + EnumValue34257 + EnumValue34258 +} + +enum Enum2086 @Directive44(argument97 : ["stringValue38335"]) { + EnumValue34259 + EnumValue34260 + EnumValue34261 + EnumValue34262 +} + +enum Enum2087 @Directive44(argument97 : ["stringValue38358"]) { + EnumValue34263 + EnumValue34264 + EnumValue34265 + EnumValue34266 +} + +enum Enum2088 @Directive44(argument97 : ["stringValue38363"]) { + EnumValue34267 + EnumValue34268 + EnumValue34269 + EnumValue34270 + EnumValue34271 +} + +enum Enum2089 @Directive44(argument97 : ["stringValue38364"]) { + EnumValue34272 + EnumValue34273 + EnumValue34274 + EnumValue34275 +} + +enum Enum209 @Directive22(argument62 : "stringValue3681") @Directive44(argument97 : ["stringValue3682", "stringValue3683"]) { + EnumValue4740 + EnumValue4741 + EnumValue4742 + EnumValue4743 + EnumValue4744 +} + +enum Enum2090 @Directive44(argument97 : ["stringValue38370"]) { + EnumValue34276 + EnumValue34277 + EnumValue34278 +} + +enum Enum2091 @Directive44(argument97 : ["stringValue38379"]) { + EnumValue34279 + EnumValue34280 + EnumValue34281 +} + +enum Enum2092 @Directive44(argument97 : ["stringValue38384"]) { + EnumValue34282 + EnumValue34283 + EnumValue34284 + EnumValue34285 + EnumValue34286 + EnumValue34287 + EnumValue34288 + EnumValue34289 + EnumValue34290 + EnumValue34291 + EnumValue34292 + EnumValue34293 + EnumValue34294 + EnumValue34295 + EnumValue34296 +} + +enum Enum2093 @Directive44(argument97 : ["stringValue38405"]) { + EnumValue34297 + EnumValue34298 + EnumValue34299 + EnumValue34300 + EnumValue34301 + EnumValue34302 + EnumValue34303 +} + +enum Enum2094 @Directive44(argument97 : ["stringValue38430"]) { + EnumValue34304 + EnumValue34305 + EnumValue34306 +} + +enum Enum2095 @Directive44(argument97 : ["stringValue38475"]) { + EnumValue34307 + EnumValue34308 + EnumValue34309 + EnumValue34310 + EnumValue34311 +} + +enum Enum2096 @Directive44(argument97 : ["stringValue38478"]) { + EnumValue34312 + EnumValue34313 + EnumValue34314 +} + +enum Enum2097 @Directive44(argument97 : ["stringValue38483"]) { + EnumValue34315 + EnumValue34316 + EnumValue34317 +} + +enum Enum2098 @Directive44(argument97 : ["stringValue38488"]) { + EnumValue34318 + EnumValue34319 + EnumValue34320 + EnumValue34321 + EnumValue34322 + EnumValue34323 + EnumValue34324 + EnumValue34325 + EnumValue34326 + EnumValue34327 +} + +enum Enum2099 @Directive44(argument97 : ["stringValue38491"]) { + EnumValue34328 + EnumValue34329 + EnumValue34330 +} + +enum Enum21 @Directive44(argument97 : ["stringValue169"]) { + EnumValue837 + EnumValue838 + EnumValue839 +} + +enum Enum210 @Directive22(argument62 : "stringValue3732") @Directive44(argument97 : ["stringValue3733", "stringValue3734"]) { + EnumValue4745 + EnumValue4746 + EnumValue4747 + EnumValue4748 +} + +enum Enum2100 @Directive44(argument97 : ["stringValue38519"]) { + EnumValue34331 + EnumValue34332 + EnumValue34333 + EnumValue34334 + EnumValue34335 +} + +enum Enum2101 @Directive44(argument97 : ["stringValue38546"]) { + EnumValue34336 + EnumValue34337 + EnumValue34338 +} + +enum Enum2102 @Directive44(argument97 : ["stringValue38560"]) { + EnumValue34339 + EnumValue34340 +} + +enum Enum2103 @Directive44(argument97 : ["stringValue38583"]) { + EnumValue34341 + EnumValue34342 + EnumValue34343 + EnumValue34344 + EnumValue34345 + EnumValue34346 + EnumValue34347 + EnumValue34348 +} + +enum Enum2104 @Directive44(argument97 : ["stringValue38606"]) { + EnumValue34349 + EnumValue34350 + EnumValue34351 +} + +enum Enum2105 @Directive44(argument97 : ["stringValue38615"]) { + EnumValue34352 + EnumValue34353 + EnumValue34354 + EnumValue34355 + EnumValue34356 +} + +enum Enum2106 @Directive44(argument97 : ["stringValue38630"]) { + EnumValue34357 + EnumValue34358 + EnumValue34359 + EnumValue34360 + EnumValue34361 + EnumValue34362 + EnumValue34363 + EnumValue34364 + EnumValue34365 + EnumValue34366 + EnumValue34367 +} + +enum Enum2107 @Directive44(argument97 : ["stringValue38645"]) { + EnumValue34368 + EnumValue34369 + EnumValue34370 +} + +enum Enum2108 @Directive44(argument97 : ["stringValue38652"]) { + EnumValue34371 + EnumValue34372 + EnumValue34373 + EnumValue34374 +} + +enum Enum2109 @Directive44(argument97 : ["stringValue38665"]) { + EnumValue34375 + EnumValue34376 + EnumValue34377 + EnumValue34378 + EnumValue34379 + EnumValue34380 + EnumValue34381 + EnumValue34382 + EnumValue34383 + EnumValue34384 + EnumValue34385 + EnumValue34386 + EnumValue34387 + EnumValue34388 + EnumValue34389 + EnumValue34390 + EnumValue34391 + EnumValue34392 + EnumValue34393 + EnumValue34394 + EnumValue34395 + EnumValue34396 + EnumValue34397 + EnumValue34398 + EnumValue34399 + EnumValue34400 + EnumValue34401 + EnumValue34402 + EnumValue34403 + EnumValue34404 + EnumValue34405 + EnumValue34406 + EnumValue34407 + EnumValue34408 + EnumValue34409 + EnumValue34410 + EnumValue34411 + EnumValue34412 + EnumValue34413 + EnumValue34414 + EnumValue34415 + EnumValue34416 + EnumValue34417 + EnumValue34418 + EnumValue34419 + EnumValue34420 + EnumValue34421 + EnumValue34422 + EnumValue34423 + EnumValue34424 + EnumValue34425 + EnumValue34426 + EnumValue34427 + EnumValue34428 + EnumValue34429 + EnumValue34430 +} + +enum Enum211 @Directive22(argument62 : "stringValue3738") @Directive44(argument97 : ["stringValue3739", "stringValue3740"]) { + EnumValue4749 +} + +enum Enum2110 @Directive44(argument97 : ["stringValue38757"]) { + EnumValue34431 + EnumValue34432 + EnumValue34433 + EnumValue34434 + EnumValue34435 + EnumValue34436 + EnumValue34437 +} + +enum Enum2111 @Directive44(argument97 : ["stringValue38772"]) { + EnumValue34438 + EnumValue34439 + EnumValue34440 + EnumValue34441 + EnumValue34442 + EnumValue34443 + EnumValue34444 + EnumValue34445 +} + +enum Enum2112 @Directive44(argument97 : ["stringValue38777"]) { + EnumValue34446 + EnumValue34447 + EnumValue34448 + EnumValue34449 + EnumValue34450 + EnumValue34451 + EnumValue34452 + EnumValue34453 +} + +enum Enum2113 @Directive44(argument97 : ["stringValue38782"]) { + EnumValue34454 + EnumValue34455 + EnumValue34456 +} + +enum Enum2114 @Directive44(argument97 : ["stringValue38794"]) { + EnumValue34457 + EnumValue34458 + EnumValue34459 + EnumValue34460 + EnumValue34461 + EnumValue34462 + EnumValue34463 + EnumValue34464 +} + +enum Enum2115 @Directive44(argument97 : ["stringValue38817"]) { + EnumValue34465 + EnumValue34466 + EnumValue34467 + EnumValue34468 +} + +enum Enum2116 @Directive44(argument97 : ["stringValue38839"]) { + EnumValue34469 + EnumValue34470 + EnumValue34471 + EnumValue34472 + EnumValue34473 +} + +enum Enum2117 @Directive44(argument97 : ["stringValue38840"]) { + EnumValue34474 + EnumValue34475 + EnumValue34476 +} + +enum Enum2118 @Directive44(argument97 : ["stringValue38841"]) { + EnumValue34477 + EnumValue34478 + EnumValue34479 + EnumValue34480 + EnumValue34481 + EnumValue34482 +} + +enum Enum2119 @Directive44(argument97 : ["stringValue38842"]) { + EnumValue34483 + EnumValue34484 + EnumValue34485 + EnumValue34486 + EnumValue34487 +} + +enum Enum212 @Directive19(argument57 : "stringValue3764") @Directive22(argument62 : "stringValue3765") @Directive44(argument97 : ["stringValue3766", "stringValue3767", "stringValue3768", "stringValue3769"]) { + EnumValue4750 + EnumValue4751 + EnumValue4752 + EnumValue4753 + EnumValue4754 @deprecated + EnumValue4755 + EnumValue4756 + EnumValue4757 + EnumValue4758 + EnumValue4759 + EnumValue4760 + EnumValue4761 + EnumValue4762 + EnumValue4763 + EnumValue4764 + EnumValue4765 + EnumValue4766 + EnumValue4767 + EnumValue4768 + EnumValue4769 + EnumValue4770 + EnumValue4771 + EnumValue4772 + EnumValue4773 + EnumValue4774 + EnumValue4775 + EnumValue4776 + EnumValue4777 + EnumValue4778 + EnumValue4779 + EnumValue4780 +} + +enum Enum2120 @Directive44(argument97 : ["stringValue38843"]) { + EnumValue34488 + EnumValue34489 + EnumValue34490 +} + +enum Enum2121 @Directive44(argument97 : ["stringValue38844"]) { + EnumValue34491 + EnumValue34492 + EnumValue34493 + EnumValue34494 +} + +enum Enum2122 @Directive44(argument97 : ["stringValue38845"]) { + EnumValue34495 + EnumValue34496 + EnumValue34497 + EnumValue34498 + EnumValue34499 + EnumValue34500 +} + +enum Enum2123 @Directive44(argument97 : ["stringValue38852"]) { + EnumValue34501 + EnumValue34502 + EnumValue34503 +} + +enum Enum2124 @Directive44(argument97 : ["stringValue38880"]) { + EnumValue34504 + EnumValue34505 + EnumValue34506 +} + +enum Enum2125 @Directive44(argument97 : ["stringValue38885"]) { + EnumValue34507 + EnumValue34508 + EnumValue34509 +} + +enum Enum2126 @Directive44(argument97 : ["stringValue38914"]) { + EnumValue34510 + EnumValue34511 + EnumValue34512 + EnumValue34513 + EnumValue34514 + EnumValue34515 +} + +enum Enum2127 @Directive44(argument97 : ["stringValue38945"]) { + EnumValue34516 + EnumValue34517 + EnumValue34518 + EnumValue34519 + EnumValue34520 + EnumValue34521 +} + +enum Enum2128 @Directive44(argument97 : ["stringValue38949"]) { + EnumValue34522 + EnumValue34523 + EnumValue34524 + EnumValue34525 + EnumValue34526 + EnumValue34527 + EnumValue34528 + EnumValue34529 + EnumValue34530 + EnumValue34531 + EnumValue34532 + EnumValue34533 + EnumValue34534 + EnumValue34535 + EnumValue34536 + EnumValue34537 + EnumValue34538 + EnumValue34539 + EnumValue34540 + EnumValue34541 + EnumValue34542 + EnumValue34543 + EnumValue34544 + EnumValue34545 + EnumValue34546 + EnumValue34547 + EnumValue34548 +} + +enum Enum2129 @Directive44(argument97 : ["stringValue38954"]) { + EnumValue34549 + EnumValue34550 + EnumValue34551 + EnumValue34552 + EnumValue34553 + EnumValue34554 + EnumValue34555 + EnumValue34556 + EnumValue34557 + EnumValue34558 + EnumValue34559 + EnumValue34560 + EnumValue34561 + EnumValue34562 + EnumValue34563 + EnumValue34564 + EnumValue34565 +} + +enum Enum213 @Directive19(argument57 : "stringValue3791") @Directive22(argument62 : "stringValue3790") @Directive44(argument97 : ["stringValue3792", "stringValue3793"]) { + EnumValue4781 + EnumValue4782 + EnumValue4783 +} + +enum Enum2130 @Directive44(argument97 : ["stringValue38955"]) { + EnumValue34566 + EnumValue34567 + EnumValue34568 +} + +enum Enum2131 @Directive44(argument97 : ["stringValue38958"]) { + EnumValue34569 + EnumValue34570 + EnumValue34571 + EnumValue34572 + EnumValue34573 + EnumValue34574 + EnumValue34575 + EnumValue34576 + EnumValue34577 + EnumValue34578 + EnumValue34579 + EnumValue34580 + EnumValue34581 + EnumValue34582 + EnumValue34583 + EnumValue34584 + EnumValue34585 + EnumValue34586 +} + +enum Enum2132 @Directive44(argument97 : ["stringValue38965"]) { + EnumValue34587 + EnumValue34588 + EnumValue34589 + EnumValue34590 + EnumValue34591 + EnumValue34592 + EnumValue34593 + EnumValue34594 + EnumValue34595 + EnumValue34596 +} + +enum Enum2133 @Directive44(argument97 : ["stringValue38966"]) { + EnumValue34597 + EnumValue34598 + EnumValue34599 + EnumValue34600 + EnumValue34601 + EnumValue34602 +} + +enum Enum2134 @Directive44(argument97 : ["stringValue38969"]) { + EnumValue34603 + EnumValue34604 + EnumValue34605 + EnumValue34606 + EnumValue34607 + EnumValue34608 + EnumValue34609 + EnumValue34610 +} + +enum Enum2135 @Directive44(argument97 : ["stringValue38985"]) { + EnumValue34611 + EnumValue34612 + EnumValue34613 + EnumValue34614 +} + +enum Enum2136 @Directive44(argument97 : ["stringValue39042"]) { + EnumValue34615 + EnumValue34616 + EnumValue34617 + EnumValue34618 +} + +enum Enum2137 @Directive44(argument97 : ["stringValue39043"]) { + EnumValue34619 + EnumValue34620 + EnumValue34621 + EnumValue34622 + EnumValue34623 + EnumValue34624 + EnumValue34625 + EnumValue34626 + EnumValue34627 + EnumValue34628 + EnumValue34629 +} + +enum Enum2138 @Directive44(argument97 : ["stringValue39044"]) { + EnumValue34630 + EnumValue34631 + EnumValue34632 +} + +enum Enum2139 @Directive44(argument97 : ["stringValue39046"]) { + EnumValue34633 + EnumValue34634 + EnumValue34635 + EnumValue34636 +} + +enum Enum214 @Directive22(argument62 : "stringValue3824") @Directive44(argument97 : ["stringValue3825", "stringValue3826"]) { + EnumValue4784 + EnumValue4785 + EnumValue4786 +} + +enum Enum2140 @Directive44(argument97 : ["stringValue39047"]) { + EnumValue34637 + EnumValue34638 + EnumValue34639 + EnumValue34640 + EnumValue34641 +} + +enum Enum2141 @Directive44(argument97 : ["stringValue39082"]) { + EnumValue34642 + EnumValue34643 + EnumValue34644 +} + +enum Enum2142 @Directive44(argument97 : ["stringValue39099"]) { + EnumValue34645 + EnumValue34646 + EnumValue34647 + EnumValue34648 + EnumValue34649 +} + +enum Enum2143 @Directive44(argument97 : ["stringValue39134"]) { + EnumValue34650 + EnumValue34651 + EnumValue34652 + EnumValue34653 + EnumValue34654 + EnumValue34655 + EnumValue34656 + EnumValue34657 + EnumValue34658 + EnumValue34659 + EnumValue34660 + EnumValue34661 + EnumValue34662 + EnumValue34663 + EnumValue34664 + EnumValue34665 + EnumValue34666 + EnumValue34667 + EnumValue34668 + EnumValue34669 +} + +enum Enum2144 @Directive44(argument97 : ["stringValue39139"]) { + EnumValue34670 + EnumValue34671 + EnumValue34672 + EnumValue34673 + EnumValue34674 + EnumValue34675 + EnumValue34676 + EnumValue34677 + EnumValue34678 + EnumValue34679 + EnumValue34680 + EnumValue34681 +} + +enum Enum2145 @Directive44(argument97 : ["stringValue39140"]) { + EnumValue34682 + EnumValue34683 + EnumValue34684 +} + +enum Enum2146 @Directive44(argument97 : ["stringValue39157"]) { + EnumValue34685 + EnumValue34686 + EnumValue34687 + EnumValue34688 +} + +enum Enum2147 @Directive44(argument97 : ["stringValue39189"]) { + EnumValue34689 + EnumValue34690 + EnumValue34691 + EnumValue34692 + EnumValue34693 +} + +enum Enum2148 @Directive44(argument97 : ["stringValue39238"]) { + EnumValue34694 + EnumValue34695 + EnumValue34696 + EnumValue34697 + EnumValue34698 + EnumValue34699 +} + +enum Enum2149 @Directive44(argument97 : ["stringValue39239"]) { + EnumValue34700 + EnumValue34701 + EnumValue34702 + EnumValue34703 +} + +enum Enum215 @Directive19(argument57 : "stringValue3855") @Directive22(argument62 : "stringValue3854") @Directive44(argument97 : ["stringValue3856", "stringValue3857"]) { + EnumValue4787 + EnumValue4788 +} + +enum Enum2150 @Directive44(argument97 : ["stringValue39281"]) { + EnumValue34704 + EnumValue34705 + EnumValue34706 + EnumValue34707 +} + +enum Enum2151 @Directive44(argument97 : ["stringValue39299"]) { + EnumValue34708 + EnumValue34709 + EnumValue34710 +} + +enum Enum2152 @Directive44(argument97 : ["stringValue39320"]) { + EnumValue34711 + EnumValue34712 + EnumValue34713 +} + +enum Enum2153 @Directive44(argument97 : ["stringValue39325"]) { + EnumValue34714 + EnumValue34715 + EnumValue34716 +} + +enum Enum2154 @Directive44(argument97 : ["stringValue39338"]) { + EnumValue34717 + EnumValue34718 + EnumValue34719 +} + +enum Enum2155 @Directive44(argument97 : ["stringValue39382"]) { + EnumValue34720 + EnumValue34721 + EnumValue34722 + EnumValue34723 + EnumValue34724 +} + +enum Enum2156 @Directive44(argument97 : ["stringValue39391"]) { + EnumValue34725 + EnumValue34726 + EnumValue34727 +} + +enum Enum2157 @Directive44(argument97 : ["stringValue39416"]) { + EnumValue34728 + EnumValue34729 + EnumValue34730 + EnumValue34731 + EnumValue34732 + EnumValue34733 + EnumValue34734 + EnumValue34735 +} + +enum Enum2158 @Directive44(argument97 : ["stringValue39452"]) { + EnumValue34736 + EnumValue34737 + EnumValue34738 + EnumValue34739 + EnumValue34740 + EnumValue34741 +} + +enum Enum2159 @Directive44(argument97 : ["stringValue39461"]) { + EnumValue34742 + EnumValue34743 + EnumValue34744 + EnumValue34745 + EnumValue34746 + EnumValue34747 + EnumValue34748 + EnumValue34749 +} + +enum Enum216 @Directive22(argument62 : "stringValue3877") @Directive44(argument97 : ["stringValue3878", "stringValue3879"]) { + EnumValue4789 + EnumValue4790 + EnumValue4791 +} + +enum Enum2160 @Directive44(argument97 : ["stringValue39605"]) { + EnumValue34750 + EnumValue34751 + EnumValue34752 + EnumValue34753 + EnumValue34754 +} + +enum Enum2161 @Directive44(argument97 : ["stringValue39630"]) { + EnumValue34755 + EnumValue34756 + EnumValue34757 + EnumValue34758 + EnumValue34759 + EnumValue34760 + EnumValue34761 +} + +enum Enum2162 @Directive44(argument97 : ["stringValue39647"]) { + EnumValue34762 + EnumValue34763 + EnumValue34764 + EnumValue34765 + EnumValue34766 + EnumValue34767 +} + +enum Enum2163 @Directive44(argument97 : ["stringValue39650"]) { + EnumValue34768 + EnumValue34769 + EnumValue34770 + EnumValue34771 + EnumValue34772 + EnumValue34773 + EnumValue34774 + EnumValue34775 + EnumValue34776 + EnumValue34777 +} + +enum Enum2164 @Directive44(argument97 : ["stringValue39653"]) { + EnumValue34778 + EnumValue34779 + EnumValue34780 + EnumValue34781 + EnumValue34782 + EnumValue34783 + EnumValue34784 +} + +enum Enum2165 @Directive44(argument97 : ["stringValue39658"]) { + EnumValue34785 + EnumValue34786 + EnumValue34787 + EnumValue34788 + EnumValue34789 +} + +enum Enum2166 @Directive44(argument97 : ["stringValue39671"]) { + EnumValue34790 + EnumValue34791 + EnumValue34792 + EnumValue34793 + EnumValue34794 +} + +enum Enum2167 @Directive44(argument97 : ["stringValue39686"]) { + EnumValue34795 + EnumValue34796 + EnumValue34797 +} + +enum Enum2168 @Directive44(argument97 : ["stringValue39689"]) { + EnumValue34798 + EnumValue34799 + EnumValue34800 + EnumValue34801 + EnumValue34802 +} + +enum Enum2169 @Directive44(argument97 : ["stringValue39694"]) { + EnumValue34803 + EnumValue34804 + EnumValue34805 + EnumValue34806 + EnumValue34807 +} + +enum Enum217 @Directive19(argument57 : "stringValue3881") @Directive22(argument62 : "stringValue3880") @Directive44(argument97 : ["stringValue3882", "stringValue3883"]) { + EnumValue4792 + EnumValue4793 + EnumValue4794 + EnumValue4795 +} + +enum Enum2170 @Directive44(argument97 : ["stringValue39707"]) { + EnumValue34808 + EnumValue34809 + EnumValue34810 +} + +enum Enum2171 @Directive44(argument97 : ["stringValue39715"]) { + EnumValue34811 + EnumValue34812 + EnumValue34813 + EnumValue34814 + EnumValue34815 + EnumValue34816 + EnumValue34817 + EnumValue34818 + EnumValue34819 + EnumValue34820 +} + +enum Enum2172 @Directive44(argument97 : ["stringValue39730"]) { + EnumValue34821 + EnumValue34822 + EnumValue34823 +} + +enum Enum2173 @Directive44(argument97 : ["stringValue39748"]) { + EnumValue34824 + EnumValue34825 + EnumValue34826 + EnumValue34827 + EnumValue34828 + EnumValue34829 + EnumValue34830 + EnumValue34831 + EnumValue34832 + EnumValue34833 + EnumValue34834 + EnumValue34835 + EnumValue34836 + EnumValue34837 +} + +enum Enum2174 @Directive44(argument97 : ["stringValue39755"]) { + EnumValue34838 + EnumValue34839 + EnumValue34840 +} + +enum Enum2175 @Directive44(argument97 : ["stringValue39777"]) { + EnumValue34841 + EnumValue34842 + EnumValue34843 + EnumValue34844 +} + +enum Enum2176 @Directive44(argument97 : ["stringValue39778"]) { + EnumValue34845 + EnumValue34846 + EnumValue34847 +} + +enum Enum2177 @Directive44(argument97 : ["stringValue39793"]) { + EnumValue34848 + EnumValue34849 + EnumValue34850 + EnumValue34851 + EnumValue34852 + EnumValue34853 + EnumValue34854 + EnumValue34855 + EnumValue34856 + EnumValue34857 +} + +enum Enum2178 @Directive44(argument97 : ["stringValue39809"]) { + EnumValue34858 + EnumValue34859 + EnumValue34860 +} + +enum Enum2179 @Directive44(argument97 : ["stringValue39817"]) { + EnumValue34861 + EnumValue34862 + EnumValue34863 +} + +enum Enum218 @Directive22(argument62 : "stringValue3884") @Directive44(argument97 : ["stringValue3885", "stringValue3886"]) { + EnumValue4796 + EnumValue4797 + EnumValue4798 + EnumValue4799 + EnumValue4800 + EnumValue4801 + EnumValue4802 + EnumValue4803 + EnumValue4804 +} + +enum Enum2180 @Directive44(argument97 : ["stringValue39820"]) { + EnumValue34864 + EnumValue34865 + EnumValue34866 + EnumValue34867 + EnumValue34868 + EnumValue34869 +} + +enum Enum2181 @Directive44(argument97 : ["stringValue39823"]) { + EnumValue34870 + EnumValue34871 + EnumValue34872 + EnumValue34873 +} + +enum Enum2182 @Directive44(argument97 : ["stringValue39848"]) { + EnumValue34874 + EnumValue34875 + EnumValue34876 + EnumValue34877 + EnumValue34878 + EnumValue34879 +} + +enum Enum2183 @Directive44(argument97 : ["stringValue39882"]) { + EnumValue34880 + EnumValue34881 + EnumValue34882 + EnumValue34883 + EnumValue34884 + EnumValue34885 + EnumValue34886 + EnumValue34887 +} + +enum Enum2184 @Directive44(argument97 : ["stringValue39889"]) { + EnumValue34888 + EnumValue34889 + EnumValue34890 + EnumValue34891 + EnumValue34892 + EnumValue34893 + EnumValue34894 + EnumValue34895 +} + +enum Enum2185 @Directive44(argument97 : ["stringValue39941"]) { + EnumValue34896 + EnumValue34897 + EnumValue34898 + EnumValue34899 + EnumValue34900 + EnumValue34901 + EnumValue34902 +} + +enum Enum2186 @Directive44(argument97 : ["stringValue39954"]) { + EnumValue34903 + EnumValue34904 + EnumValue34905 + EnumValue34906 + EnumValue34907 + EnumValue34908 + EnumValue34909 +} + +enum Enum2187 @Directive44(argument97 : ["stringValue39957"]) { + EnumValue34910 + EnumValue34911 + EnumValue34912 + EnumValue34913 + EnumValue34914 +} + +enum Enum2188 @Directive44(argument97 : ["stringValue39960"]) { + EnumValue34915 + EnumValue34916 + EnumValue34917 +} + +enum Enum2189 @Directive44(argument97 : ["stringValue39961"]) { + EnumValue34918 + EnumValue34919 + EnumValue34920 + EnumValue34921 +} + +enum Enum219 @Directive19(argument57 : "stringValue3888") @Directive22(argument62 : "stringValue3887") @Directive44(argument97 : ["stringValue3889", "stringValue3890"]) { + EnumValue4805 + EnumValue4806 + EnumValue4807 + EnumValue4808 +} + +enum Enum2190 @Directive44(argument97 : ["stringValue39962"]) { + EnumValue34922 + EnumValue34923 + EnumValue34924 + EnumValue34925 + EnumValue34926 + EnumValue34927 + EnumValue34928 + EnumValue34929 + EnumValue34930 + EnumValue34931 + EnumValue34932 + EnumValue34933 + EnumValue34934 + EnumValue34935 + EnumValue34936 + EnumValue34937 + EnumValue34938 + EnumValue34939 + EnumValue34940 + EnumValue34941 + EnumValue34942 + EnumValue34943 +} + +enum Enum2191 @Directive44(argument97 : ["stringValue39965"]) { + EnumValue34944 + EnumValue34945 + EnumValue34946 + EnumValue34947 + EnumValue34948 + EnumValue34949 + EnumValue34950 + EnumValue34951 + EnumValue34952 + EnumValue34953 + EnumValue34954 +} + +enum Enum2192 @Directive44(argument97 : ["stringValue39968"]) { + EnumValue34955 + EnumValue34956 + EnumValue34957 + EnumValue34958 + EnumValue34959 +} + +enum Enum2193 @Directive44(argument97 : ["stringValue39973"]) { + EnumValue34960 + EnumValue34961 + EnumValue34962 + EnumValue34963 + EnumValue34964 +} + +enum Enum2194 @Directive44(argument97 : ["stringValue39974"]) { + EnumValue34965 + EnumValue34966 + EnumValue34967 +} + +enum Enum2195 @Directive44(argument97 : ["stringValue39975"]) { + EnumValue34968 + EnumValue34969 + EnumValue34970 +} + +enum Enum2196 @Directive44(argument97 : ["stringValue39976"]) { + EnumValue34971 + EnumValue34972 + EnumValue34973 + EnumValue34974 + EnumValue34975 + EnumValue34976 + EnumValue34977 + EnumValue34978 + EnumValue34979 + EnumValue34980 +} + +enum Enum2197 @Directive44(argument97 : ["stringValue39994"]) { + EnumValue34981 + EnumValue34982 + EnumValue34983 + EnumValue34984 +} + +enum Enum2198 @Directive44(argument97 : ["stringValue40021"]) { + EnumValue34985 + EnumValue34986 + EnumValue34987 +} + +enum Enum2199 @Directive44(argument97 : ["stringValue40068"]) { + EnumValue34988 + EnumValue34989 + EnumValue34990 + EnumValue34991 +} + +enum Enum22 @Directive22(argument62 : "stringValue175") @Directive44(argument97 : ["stringValue176", "stringValue177"]) { + EnumValue840 + EnumValue841 + EnumValue842 + EnumValue843 + EnumValue844 + EnumValue845 +} + +enum Enum220 @Directive19(argument57 : "stringValue3918") @Directive22(argument62 : "stringValue3919") @Directive44(argument97 : ["stringValue3920", "stringValue3921", "stringValue3922"]) { + EnumValue4809 + EnumValue4810 + EnumValue4811 + EnumValue4812 + EnumValue4813 + EnumValue4814 + EnumValue4815 +} + +enum Enum2200 @Directive44(argument97 : ["stringValue40108"]) { + EnumValue34992 + EnumValue34993 + EnumValue34994 + EnumValue34995 + EnumValue34996 + EnumValue34997 + EnumValue34998 + EnumValue34999 + EnumValue35000 + EnumValue35001 + EnumValue35002 + EnumValue35003 + EnumValue35004 + EnumValue35005 + EnumValue35006 + EnumValue35007 + EnumValue35008 + EnumValue35009 +} + +enum Enum2201 @Directive44(argument97 : ["stringValue40127"]) { + EnumValue35010 + EnumValue35011 + EnumValue35012 +} + +enum Enum2202 @Directive44(argument97 : ["stringValue40174"]) { + EnumValue35013 + EnumValue35014 + EnumValue35015 + EnumValue35016 +} + +enum Enum2203 @Directive44(argument97 : ["stringValue40175"]) { + EnumValue35017 + EnumValue35018 + EnumValue35019 + EnumValue35020 + EnumValue35021 + EnumValue35022 +} + +enum Enum2204 @Directive44(argument97 : ["stringValue40178"]) { + EnumValue35023 + EnumValue35024 + EnumValue35025 +} + +enum Enum2205 @Directive44(argument97 : ["stringValue40179"]) { + EnumValue35026 + EnumValue35027 + EnumValue35028 +} + +enum Enum2206 @Directive44(argument97 : ["stringValue40180"]) { + EnumValue35029 + EnumValue35030 + EnumValue35031 +} + +enum Enum2207 @Directive44(argument97 : ["stringValue40181"]) { + EnumValue35032 + EnumValue35033 + EnumValue35034 + EnumValue35035 +} + +enum Enum2208 @Directive44(argument97 : ["stringValue40303"]) { + EnumValue35036 + EnumValue35037 + EnumValue35038 +} + +enum Enum2209 @Directive44(argument97 : ["stringValue40304"]) { + EnumValue35039 + EnumValue35040 +} + +enum Enum221 @Directive19(argument57 : "stringValue3939") @Directive22(argument62 : "stringValue3938") @Directive44(argument97 : ["stringValue3940", "stringValue3941"]) { + EnumValue4816 + EnumValue4817 + EnumValue4818 + EnumValue4819 + EnumValue4820 + EnumValue4821 + EnumValue4822 + EnumValue4823 + EnumValue4824 + EnumValue4825 + EnumValue4826 + EnumValue4827 + EnumValue4828 + EnumValue4829 + EnumValue4830 + EnumValue4831 + EnumValue4832 +} + +enum Enum2210 @Directive44(argument97 : ["stringValue40305"]) { + EnumValue35041 + EnumValue35042 +} + +enum Enum2211 @Directive44(argument97 : ["stringValue40306"]) { + EnumValue35043 + EnumValue35044 +} + +enum Enum2212 @Directive44(argument97 : ["stringValue40312"]) { + EnumValue35045 + EnumValue35046 + EnumValue35047 + EnumValue35048 + EnumValue35049 +} + +enum Enum2213 @Directive44(argument97 : ["stringValue40317"]) { + EnumValue35050 + EnumValue35051 + EnumValue35052 + EnumValue35053 +} + +enum Enum2214 @Directive44(argument97 : ["stringValue40322"]) { + EnumValue35054 + EnumValue35055 + EnumValue35056 + EnumValue35057 +} + +enum Enum2215 @Directive44(argument97 : ["stringValue40325"]) { + EnumValue35058 + EnumValue35059 + EnumValue35060 + EnumValue35061 + EnumValue35062 + EnumValue35063 + EnumValue35064 + EnumValue35065 + EnumValue35066 + EnumValue35067 + EnumValue35068 + EnumValue35069 + EnumValue35070 + EnumValue35071 + EnumValue35072 + EnumValue35073 + EnumValue35074 + EnumValue35075 + EnumValue35076 + EnumValue35077 + EnumValue35078 +} + +enum Enum2216 @Directive44(argument97 : ["stringValue40326"]) { + EnumValue35079 + EnumValue35080 + EnumValue35081 + EnumValue35082 +} + +enum Enum2217 @Directive44(argument97 : ["stringValue40327"]) { + EnumValue35083 + EnumValue35084 + EnumValue35085 + EnumValue35086 + EnumValue35087 + EnumValue35088 + EnumValue35089 + EnumValue35090 + EnumValue35091 + EnumValue35092 + EnumValue35093 + EnumValue35094 + EnumValue35095 + EnumValue35096 + EnumValue35097 + EnumValue35098 + EnumValue35099 + EnumValue35100 + EnumValue35101 + EnumValue35102 + EnumValue35103 + EnumValue35104 + EnumValue35105 + EnumValue35106 + EnumValue35107 + EnumValue35108 + EnumValue35109 + EnumValue35110 + EnumValue35111 + EnumValue35112 + EnumValue35113 + EnumValue35114 + EnumValue35115 + EnumValue35116 + EnumValue35117 + EnumValue35118 + EnumValue35119 + EnumValue35120 + EnumValue35121 + EnumValue35122 + EnumValue35123 + EnumValue35124 + EnumValue35125 + EnumValue35126 + EnumValue35127 + EnumValue35128 + EnumValue35129 + EnumValue35130 + EnumValue35131 + EnumValue35132 + EnumValue35133 + EnumValue35134 + EnumValue35135 + EnumValue35136 + EnumValue35137 + EnumValue35138 + EnumValue35139 + EnumValue35140 + EnumValue35141 + EnumValue35142 + EnumValue35143 + EnumValue35144 + EnumValue35145 + EnumValue35146 + EnumValue35147 + EnumValue35148 + EnumValue35149 + EnumValue35150 + EnumValue35151 + EnumValue35152 + EnumValue35153 + EnumValue35154 + EnumValue35155 + EnumValue35156 + EnumValue35157 + EnumValue35158 + EnumValue35159 + EnumValue35160 + EnumValue35161 + EnumValue35162 + EnumValue35163 + EnumValue35164 + EnumValue35165 + EnumValue35166 + EnumValue35167 + EnumValue35168 + EnumValue35169 + EnumValue35170 + EnumValue35171 + EnumValue35172 + EnumValue35173 + EnumValue35174 + EnumValue35175 + EnumValue35176 + EnumValue35177 + EnumValue35178 + EnumValue35179 +} + +enum Enum2218 @Directive44(argument97 : ["stringValue40328"]) { + EnumValue35180 + EnumValue35181 + EnumValue35182 + EnumValue35183 + EnumValue35184 + EnumValue35185 + EnumValue35186 + EnumValue35187 + EnumValue35188 + EnumValue35189 + EnumValue35190 + EnumValue35191 + EnumValue35192 + EnumValue35193 + EnumValue35194 + EnumValue35195 + EnumValue35196 + EnumValue35197 + EnumValue35198 + EnumValue35199 + EnumValue35200 + EnumValue35201 + EnumValue35202 + EnumValue35203 + EnumValue35204 + EnumValue35205 + EnumValue35206 + EnumValue35207 + EnumValue35208 + EnumValue35209 + EnumValue35210 + EnumValue35211 + EnumValue35212 + EnumValue35213 + EnumValue35214 + EnumValue35215 + EnumValue35216 + EnumValue35217 + EnumValue35218 + EnumValue35219 + EnumValue35220 + EnumValue35221 + EnumValue35222 + EnumValue35223 + EnumValue35224 + EnumValue35225 + EnumValue35226 + EnumValue35227 + EnumValue35228 + EnumValue35229 + EnumValue35230 + EnumValue35231 + EnumValue35232 + EnumValue35233 + EnumValue35234 + EnumValue35235 + EnumValue35236 + EnumValue35237 + EnumValue35238 + EnumValue35239 + EnumValue35240 + EnumValue35241 + EnumValue35242 + EnumValue35243 + EnumValue35244 + EnumValue35245 + EnumValue35246 + EnumValue35247 + EnumValue35248 + EnumValue35249 + EnumValue35250 + EnumValue35251 + EnumValue35252 + EnumValue35253 + EnumValue35254 + EnumValue35255 + EnumValue35256 + EnumValue35257 + EnumValue35258 + EnumValue35259 + EnumValue35260 + EnumValue35261 + EnumValue35262 + EnumValue35263 + EnumValue35264 + EnumValue35265 + EnumValue35266 + EnumValue35267 + EnumValue35268 + EnumValue35269 + EnumValue35270 + EnumValue35271 + EnumValue35272 + EnumValue35273 + EnumValue35274 + EnumValue35275 + EnumValue35276 + EnumValue35277 + EnumValue35278 + EnumValue35279 + EnumValue35280 + EnumValue35281 + EnumValue35282 + EnumValue35283 + EnumValue35284 + EnumValue35285 + EnumValue35286 + EnumValue35287 + EnumValue35288 + EnumValue35289 + EnumValue35290 + EnumValue35291 + EnumValue35292 + EnumValue35293 + EnumValue35294 + EnumValue35295 +} + +enum Enum2219 @Directive44(argument97 : ["stringValue40336"]) { + EnumValue35296 + EnumValue35297 + EnumValue35298 + EnumValue35299 +} + +enum Enum222 @Directive19(argument57 : "stringValue3947") @Directive22(argument62 : "stringValue3946") @Directive44(argument97 : ["stringValue3948", "stringValue3949"]) { + EnumValue4833 + EnumValue4834 +} + +enum Enum2220 @Directive44(argument97 : ["stringValue40337"]) { + EnumValue35300 + EnumValue35301 + EnumValue35302 + EnumValue35303 + EnumValue35304 + EnumValue35305 + EnumValue35306 + EnumValue35307 + EnumValue35308 + EnumValue35309 + EnumValue35310 + EnumValue35311 + EnumValue35312 + EnumValue35313 + EnumValue35314 + EnumValue35315 + EnumValue35316 + EnumValue35317 + EnumValue35318 + EnumValue35319 + EnumValue35320 + EnumValue35321 + EnumValue35322 + EnumValue35323 + EnumValue35324 + EnumValue35325 + EnumValue35326 + EnumValue35327 +} + +enum Enum2221 @Directive44(argument97 : ["stringValue40345"]) { + EnumValue35328 + EnumValue35329 + EnumValue35330 + EnumValue35331 + EnumValue35332 +} + +enum Enum2222 @Directive44(argument97 : ["stringValue40346"]) { + EnumValue35333 + EnumValue35334 + EnumValue35335 + EnumValue35336 + EnumValue35337 + EnumValue35338 +} + +enum Enum2223 @Directive44(argument97 : ["stringValue40347"]) { + EnumValue35339 + EnumValue35340 + EnumValue35341 + EnumValue35342 + EnumValue35343 +} + +enum Enum2224 @Directive44(argument97 : ["stringValue40348"]) { + EnumValue35344 + EnumValue35345 + EnumValue35346 + EnumValue35347 +} + +enum Enum2225 @Directive44(argument97 : ["stringValue40361"]) { + EnumValue35348 + EnumValue35349 +} + +enum Enum2226 @Directive44(argument97 : ["stringValue40548"]) { + EnumValue35350 + EnumValue35351 + EnumValue35352 + EnumValue35353 + EnumValue35354 + EnumValue35355 + EnumValue35356 + EnumValue35357 +} + +enum Enum2227 @Directive44(argument97 : ["stringValue40561"]) { + EnumValue35358 + EnumValue35359 + EnumValue35360 + EnumValue35361 + EnumValue35362 + EnumValue35363 + EnumValue35364 + EnumValue35365 + EnumValue35366 + EnumValue35367 +} + +enum Enum2228 @Directive44(argument97 : ["stringValue40562"]) { + EnumValue35368 + EnumValue35369 + EnumValue35370 +} + +enum Enum2229 @Directive44(argument97 : ["stringValue40612"]) { + EnumValue35371 + EnumValue35372 + EnumValue35373 + EnumValue35374 + EnumValue35375 + EnumValue35376 + EnumValue35377 + EnumValue35378 + EnumValue35379 + EnumValue35380 + EnumValue35381 + EnumValue35382 + EnumValue35383 + EnumValue35384 + EnumValue35385 + EnumValue35386 + EnumValue35387 + EnumValue35388 + EnumValue35389 + EnumValue35390 + EnumValue35391 + EnumValue35392 + EnumValue35393 + EnumValue35394 + EnumValue35395 + EnumValue35396 + EnumValue35397 + EnumValue35398 + EnumValue35399 + EnumValue35400 + EnumValue35401 + EnumValue35402 + EnumValue35403 + EnumValue35404 + EnumValue35405 + EnumValue35406 + EnumValue35407 + EnumValue35408 + EnumValue35409 + EnumValue35410 + EnumValue35411 + EnumValue35412 + EnumValue35413 + EnumValue35414 + EnumValue35415 + EnumValue35416 + EnumValue35417 + EnumValue35418 + EnumValue35419 + EnumValue35420 + EnumValue35421 + EnumValue35422 + EnumValue35423 + EnumValue35424 + EnumValue35425 + EnumValue35426 + EnumValue35427 + EnumValue35428 +} + +enum Enum223 @Directive19(argument57 : "stringValue3997") @Directive22(argument62 : "stringValue3996") @Directive44(argument97 : ["stringValue3998", "stringValue3999"]) { + EnumValue4835 + EnumValue4836 + EnumValue4837 + EnumValue4838 +} + +enum Enum2230 @Directive44(argument97 : ["stringValue40613"]) { + EnumValue35429 + EnumValue35430 + EnumValue35431 + EnumValue35432 + EnumValue35433 +} + +enum Enum2231 @Directive44(argument97 : ["stringValue40620"]) { + EnumValue35434 + EnumValue35435 + EnumValue35436 + EnumValue35437 + EnumValue35438 + EnumValue35439 + EnumValue35440 + EnumValue35441 + EnumValue35442 + EnumValue35443 + EnumValue35444 + EnumValue35445 + EnumValue35446 + EnumValue35447 + EnumValue35448 + EnumValue35449 + EnumValue35450 +} + +enum Enum2232 @Directive44(argument97 : ["stringValue40621"]) { + EnumValue35451 + EnumValue35452 + EnumValue35453 + EnumValue35454 + EnumValue35455 + EnumValue35456 + EnumValue35457 + EnumValue35458 + EnumValue35459 +} + +enum Enum2233 @Directive44(argument97 : ["stringValue40636"]) { + EnumValue35460 + EnumValue35461 + EnumValue35462 + EnumValue35463 + EnumValue35464 + EnumValue35465 +} + +enum Enum2234 @Directive44(argument97 : ["stringValue40649"]) { + EnumValue35466 + EnumValue35467 + EnumValue35468 + EnumValue35469 + EnumValue35470 + EnumValue35471 + EnumValue35472 + EnumValue35473 + EnumValue35474 + EnumValue35475 + EnumValue35476 + EnumValue35477 + EnumValue35478 + EnumValue35479 + EnumValue35480 + EnumValue35481 + EnumValue35482 + EnumValue35483 + EnumValue35484 + EnumValue35485 + EnumValue35486 + EnumValue35487 + EnumValue35488 + EnumValue35489 + EnumValue35490 + EnumValue35491 + EnumValue35492 + EnumValue35493 + EnumValue35494 +} + +enum Enum2235 @Directive44(argument97 : ["stringValue40654"]) { + EnumValue35495 + EnumValue35496 + EnumValue35497 + EnumValue35498 + EnumValue35499 + EnumValue35500 + EnumValue35501 + EnumValue35502 + EnumValue35503 + EnumValue35504 + EnumValue35505 + EnumValue35506 + EnumValue35507 + EnumValue35508 + EnumValue35509 + EnumValue35510 + EnumValue35511 + EnumValue35512 + EnumValue35513 +} + +enum Enum2236 @Directive44(argument97 : ["stringValue40655"]) { + EnumValue35514 + EnumValue35515 + EnumValue35516 + EnumValue35517 +} + +enum Enum2237 @Directive44(argument97 : ["stringValue40661"]) { + EnumValue35518 + EnumValue35519 + EnumValue35520 + EnumValue35521 +} + +enum Enum2238 @Directive44(argument97 : ["stringValue40674"]) { + EnumValue35522 + EnumValue35523 + EnumValue35524 + EnumValue35525 +} + +enum Enum2239 @Directive44(argument97 : ["stringValue40677"]) { + EnumValue35526 + EnumValue35527 + EnumValue35528 + EnumValue35529 + EnumValue35530 + EnumValue35531 + EnumValue35532 + EnumValue35533 + EnumValue35534 + EnumValue35535 + EnumValue35536 + EnumValue35537 + EnumValue35538 + EnumValue35539 + EnumValue35540 + EnumValue35541 + EnumValue35542 + EnumValue35543 + EnumValue35544 + EnumValue35545 + EnumValue35546 +} + +enum Enum224 @Directive19(argument57 : "stringValue4001") @Directive22(argument62 : "stringValue4000") @Directive44(argument97 : ["stringValue4002", "stringValue4003"]) { + EnumValue4839 + EnumValue4840 + EnumValue4841 +} + +enum Enum2240 @Directive44(argument97 : ["stringValue40680"]) { + EnumValue35547 + EnumValue35548 + EnumValue35549 + EnumValue35550 +} + +enum Enum2241 @Directive44(argument97 : ["stringValue40683"]) { + EnumValue35551 + EnumValue35552 + EnumValue35553 +} + +enum Enum2242 @Directive44(argument97 : ["stringValue40690"]) { + EnumValue35554 + EnumValue35555 + EnumValue35556 + EnumValue35557 +} + +enum Enum2243 @Directive44(argument97 : ["stringValue40721"]) { + EnumValue35558 + EnumValue35559 + EnumValue35560 +} + +enum Enum2244 @Directive44(argument97 : ["stringValue40734"]) { + EnumValue35561 + EnumValue35562 + EnumValue35563 +} + +enum Enum2245 @Directive44(argument97 : ["stringValue40737"]) { + EnumValue35564 + EnumValue35565 + EnumValue35566 + EnumValue35567 + EnumValue35568 + EnumValue35569 + EnumValue35570 + EnumValue35571 + EnumValue35572 + EnumValue35573 + EnumValue35574 + EnumValue35575 + EnumValue35576 + EnumValue35577 + EnumValue35578 + EnumValue35579 + EnumValue35580 + EnumValue35581 + EnumValue35582 + EnumValue35583 + EnumValue35584 + EnumValue35585 + EnumValue35586 + EnumValue35587 + EnumValue35588 + EnumValue35589 + EnumValue35590 + EnumValue35591 + EnumValue35592 + EnumValue35593 + EnumValue35594 + EnumValue35595 + EnumValue35596 + EnumValue35597 + EnumValue35598 + EnumValue35599 +} + +enum Enum2246 @Directive44(argument97 : ["stringValue40742"]) { + EnumValue35600 + EnumValue35601 + EnumValue35602 + EnumValue35603 +} + +enum Enum2247 @Directive44(argument97 : ["stringValue40771"]) { + EnumValue35604 + EnumValue35605 + EnumValue35606 + EnumValue35607 + EnumValue35608 + EnumValue35609 +} + +enum Enum2248 @Directive44(argument97 : ["stringValue40786"]) { + EnumValue35610 + EnumValue35611 + EnumValue35612 + EnumValue35613 + EnumValue35614 +} + +enum Enum2249 @Directive44(argument97 : ["stringValue40791"]) { + EnumValue35615 + EnumValue35616 + EnumValue35617 + EnumValue35618 + EnumValue35619 + EnumValue35620 + EnumValue35621 + EnumValue35622 + EnumValue35623 + EnumValue35624 + EnumValue35625 +} + +enum Enum225 @Directive19(argument57 : "stringValue4013") @Directive22(argument62 : "stringValue4012") @Directive44(argument97 : ["stringValue4014", "stringValue4015"]) { + EnumValue4842 + EnumValue4843 +} + +enum Enum2250 @Directive44(argument97 : ["stringValue40792"]) { + EnumValue35626 + EnumValue35627 + EnumValue35628 + EnumValue35629 + EnumValue35630 + EnumValue35631 +} + +enum Enum2251 @Directive44(argument97 : ["stringValue40797"]) { + EnumValue35632 + EnumValue35633 + EnumValue35634 + EnumValue35635 +} + +enum Enum2252 @Directive44(argument97 : ["stringValue40832"]) { + EnumValue35636 + EnumValue35637 + EnumValue35638 + EnumValue35639 +} + +enum Enum2253 @Directive44(argument97 : ["stringValue40835"]) { + EnumValue35640 + EnumValue35641 + EnumValue35642 + EnumValue35643 + EnumValue35644 +} + +enum Enum2254 @Directive44(argument97 : ["stringValue40836"]) { + EnumValue35645 + EnumValue35646 + EnumValue35647 + EnumValue35648 +} + +enum Enum2255 @Directive44(argument97 : ["stringValue40843"]) { + EnumValue35649 + EnumValue35650 + EnumValue35651 + EnumValue35652 + EnumValue35653 +} + +enum Enum2256 @Directive44(argument97 : ["stringValue40849"]) { + EnumValue35654 + EnumValue35655 + EnumValue35656 + EnumValue35657 + EnumValue35658 + EnumValue35659 + EnumValue35660 + EnumValue35661 + EnumValue35662 + EnumValue35663 + EnumValue35664 + EnumValue35665 + EnumValue35666 +} + +enum Enum2257 @Directive44(argument97 : ["stringValue40857"]) { + EnumValue35667 + EnumValue35668 + EnumValue35669 +} + +enum Enum2258 @Directive44(argument97 : ["stringValue40860"]) { + EnumValue35670 + EnumValue35671 + EnumValue35672 + EnumValue35673 + EnumValue35674 + EnumValue35675 + EnumValue35676 +} + +enum Enum2259 @Directive44(argument97 : ["stringValue40875"]) { + EnumValue35677 + EnumValue35678 + EnumValue35679 + EnumValue35680 + EnumValue35681 + EnumValue35682 + EnumValue35683 + EnumValue35684 + EnumValue35685 + EnumValue35686 + EnumValue35687 + EnumValue35688 + EnumValue35689 + EnumValue35690 + EnumValue35691 + EnumValue35692 + EnumValue35693 +} + +enum Enum226 @Directive19(argument57 : "stringValue4025") @Directive22(argument62 : "stringValue4024") @Directive44(argument97 : ["stringValue4026", "stringValue4027"]) { + EnumValue4844 + EnumValue4845 + EnumValue4846 +} + +enum Enum2260 @Directive44(argument97 : ["stringValue40876"]) { + EnumValue35694 + EnumValue35695 + EnumValue35696 + EnumValue35697 + EnumValue35698 + EnumValue35699 + EnumValue35700 + EnumValue35701 + EnumValue35702 +} + +enum Enum2261 @Directive44(argument97 : ["stringValue40879"]) { + EnumValue35703 + EnumValue35704 + EnumValue35705 + EnumValue35706 + EnumValue35707 + EnumValue35708 + EnumValue35709 + EnumValue35710 +} + +enum Enum2262 @Directive44(argument97 : ["stringValue40880"]) { + EnumValue35711 + EnumValue35712 +} + +enum Enum2263 @Directive44(argument97 : ["stringValue40886"]) { + EnumValue35713 + EnumValue35714 + EnumValue35715 + EnumValue35716 + EnumValue35717 + EnumValue35718 + EnumValue35719 + EnumValue35720 + EnumValue35721 + EnumValue35722 + EnumValue35723 + EnumValue35724 + EnumValue35725 + EnumValue35726 + EnumValue35727 + EnumValue35728 +} + +enum Enum2264 @Directive44(argument97 : ["stringValue40898"]) { + EnumValue35729 + EnumValue35730 + EnumValue35731 + EnumValue35732 + EnumValue35733 + EnumValue35734 + EnumValue35735 + EnumValue35736 +} + +enum Enum2265 @Directive44(argument97 : ["stringValue40931"]) { + EnumValue35737 + EnumValue35738 + EnumValue35739 + EnumValue35740 +} + +enum Enum2266 @Directive44(argument97 : ["stringValue40932"]) { + EnumValue35741 + EnumValue35742 + EnumValue35743 + EnumValue35744 +} + +enum Enum2267 @Directive44(argument97 : ["stringValue40939"]) { + EnumValue35745 + EnumValue35746 + EnumValue35747 + EnumValue35748 +} + +enum Enum2268 @Directive44(argument97 : ["stringValue40942"]) { + EnumValue35749 + EnumValue35750 + EnumValue35751 +} + +enum Enum2269 @Directive44(argument97 : ["stringValue40945"]) { + EnumValue35752 + EnumValue35753 + EnumValue35754 + EnumValue35755 +} + +enum Enum227 @Directive19(argument57 : "stringValue4029") @Directive22(argument62 : "stringValue4028") @Directive44(argument97 : ["stringValue4030", "stringValue4031"]) { + EnumValue4847 +} + +enum Enum2270 @Directive44(argument97 : ["stringValue40946"]) { + EnumValue35756 + EnumValue35757 + EnumValue35758 + EnumValue35759 + EnumValue35760 + EnumValue35761 + EnumValue35762 + EnumValue35763 + EnumValue35764 + EnumValue35765 + EnumValue35766 + EnumValue35767 + EnumValue35768 + EnumValue35769 + EnumValue35770 + EnumValue35771 + EnumValue35772 + EnumValue35773 + EnumValue35774 + EnumValue35775 + EnumValue35776 + EnumValue35777 + EnumValue35778 + EnumValue35779 + EnumValue35780 + EnumValue35781 + EnumValue35782 + EnumValue35783 + EnumValue35784 + EnumValue35785 + EnumValue35786 + EnumValue35787 + EnumValue35788 + EnumValue35789 + EnumValue35790 + EnumValue35791 + EnumValue35792 + EnumValue35793 + EnumValue35794 + EnumValue35795 +} + +enum Enum2271 @Directive44(argument97 : ["stringValue40956"]) { + EnumValue35796 + EnumValue35797 + EnumValue35798 + EnumValue35799 +} + +enum Enum2272 @Directive44(argument97 : ["stringValue40957"]) { + EnumValue35800 + EnumValue35801 + EnumValue35802 + EnumValue35803 + EnumValue35804 + EnumValue35805 + EnumValue35806 + EnumValue35807 + EnumValue35808 + EnumValue35809 + EnumValue35810 + EnumValue35811 + EnumValue35812 + EnumValue35813 + EnumValue35814 + EnumValue35815 + EnumValue35816 + EnumValue35817 + EnumValue35818 + EnumValue35819 + EnumValue35820 + EnumValue35821 + EnumValue35822 + EnumValue35823 + EnumValue35824 + EnumValue35825 + EnumValue35826 + EnumValue35827 +} + +enum Enum2273 @Directive44(argument97 : ["stringValue40962"]) { + EnumValue35828 + EnumValue35829 + EnumValue35830 + EnumValue35831 + EnumValue35832 +} + +enum Enum2274 @Directive44(argument97 : ["stringValue40963"]) { + EnumValue35833 + EnumValue35834 + EnumValue35835 + EnumValue35836 + EnumValue35837 + EnumValue35838 +} + +enum Enum2275 @Directive44(argument97 : ["stringValue40964"]) { + EnumValue35839 + EnumValue35840 + EnumValue35841 + EnumValue35842 + EnumValue35843 +} + +enum Enum2276 @Directive44(argument97 : ["stringValue40965"]) { + EnumValue35844 + EnumValue35845 + EnumValue35846 + EnumValue35847 +} + +enum Enum2277 @Directive44(argument97 : ["stringValue40999"]) { + EnumValue35848 + EnumValue35849 + EnumValue35850 + EnumValue35851 +} + +enum Enum2278 @Directive44(argument97 : ["stringValue41042"]) { + EnumValue35852 + EnumValue35853 + EnumValue35854 + EnumValue35855 + EnumValue35856 + EnumValue35857 + EnumValue35858 + EnumValue35859 +} + +enum Enum2279 @Directive44(argument97 : ["stringValue41161"]) { + EnumValue35860 + EnumValue35861 +} + +enum Enum228 @Directive19(argument57 : "stringValue4076") @Directive22(argument62 : "stringValue4075") @Directive44(argument97 : ["stringValue4077", "stringValue4078"]) { + EnumValue4848 + EnumValue4849 + EnumValue4850 +} + +enum Enum2280 @Directive44(argument97 : ["stringValue41166"]) { + EnumValue35862 + EnumValue35863 + EnumValue35864 +} + +enum Enum2281 @Directive44(argument97 : ["stringValue41171"]) { + EnumValue35865 + EnumValue35866 + EnumValue35867 + EnumValue35868 + EnumValue35869 + EnumValue35870 + EnumValue35871 +} + +enum Enum2282 @Directive44(argument97 : ["stringValue41172"]) { + EnumValue35872 + EnumValue35873 + EnumValue35874 + EnumValue35875 + EnumValue35876 + EnumValue35877 + EnumValue35878 +} + +enum Enum2283 @Directive44(argument97 : ["stringValue41173"]) { + EnumValue35879 + EnumValue35880 + EnumValue35881 + EnumValue35882 + EnumValue35883 + EnumValue35884 + EnumValue35885 + EnumValue35886 + EnumValue35887 + EnumValue35888 + EnumValue35889 + EnumValue35890 + EnumValue35891 + EnumValue35892 + EnumValue35893 + EnumValue35894 + EnumValue35895 + EnumValue35896 + EnumValue35897 + EnumValue35898 + EnumValue35899 + EnumValue35900 + EnumValue35901 + EnumValue35902 + EnumValue35903 + EnumValue35904 + EnumValue35905 + EnumValue35906 + EnumValue35907 + EnumValue35908 + EnumValue35909 + EnumValue35910 + EnumValue35911 + EnumValue35912 + EnumValue35913 + EnumValue35914 + EnumValue35915 + EnumValue35916 + EnumValue35917 + EnumValue35918 + EnumValue35919 + EnumValue35920 + EnumValue35921 + EnumValue35922 + EnumValue35923 + EnumValue35924 + EnumValue35925 + EnumValue35926 + EnumValue35927 + EnumValue35928 + EnumValue35929 + EnumValue35930 + EnumValue35931 + EnumValue35932 + EnumValue35933 + EnumValue35934 + EnumValue35935 + EnumValue35936 + EnumValue35937 + EnumValue35938 + EnumValue35939 + EnumValue35940 + EnumValue35941 + EnumValue35942 + EnumValue35943 + EnumValue35944 + EnumValue35945 + EnumValue35946 + EnumValue35947 + EnumValue35948 + EnumValue35949 + EnumValue35950 +} + +enum Enum2284 @Directive44(argument97 : ["stringValue41178"]) { + EnumValue35951 + EnumValue35952 + EnumValue35953 + EnumValue35954 + EnumValue35955 +} + +enum Enum2285 @Directive44(argument97 : ["stringValue41179"]) { + EnumValue35956 + EnumValue35957 + EnumValue35958 + EnumValue35959 + EnumValue35960 + EnumValue35961 + EnumValue35962 + EnumValue35963 + EnumValue35964 + EnumValue35965 + EnumValue35966 + EnumValue35967 + EnumValue35968 + EnumValue35969 +} + +enum Enum2286 @Directive44(argument97 : ["stringValue41182"]) { + EnumValue35970 + EnumValue35971 + EnumValue35972 + EnumValue35973 + EnumValue35974 + EnumValue35975 + EnumValue35976 + EnumValue35977 + EnumValue35978 + EnumValue35979 + EnumValue35980 + EnumValue35981 + EnumValue35982 + EnumValue35983 + EnumValue35984 + EnumValue35985 + EnumValue35986 + EnumValue35987 + EnumValue35988 + EnumValue35989 + EnumValue35990 + EnumValue35991 + EnumValue35992 + EnumValue35993 + EnumValue35994 + EnumValue35995 + EnumValue35996 + EnumValue35997 + EnumValue35998 + EnumValue35999 + EnumValue36000 + EnumValue36001 + EnumValue36002 + EnumValue36003 + EnumValue36004 + EnumValue36005 + EnumValue36006 + EnumValue36007 + EnumValue36008 + EnumValue36009 + EnumValue36010 + EnumValue36011 + EnumValue36012 + EnumValue36013 + EnumValue36014 + EnumValue36015 + EnumValue36016 + EnumValue36017 + EnumValue36018 + EnumValue36019 + EnumValue36020 + EnumValue36021 + EnumValue36022 + EnumValue36023 + EnumValue36024 + EnumValue36025 + EnumValue36026 + EnumValue36027 + EnumValue36028 + EnumValue36029 + EnumValue36030 + EnumValue36031 + EnumValue36032 + EnumValue36033 + EnumValue36034 + EnumValue36035 + EnumValue36036 + EnumValue36037 + EnumValue36038 + EnumValue36039 + EnumValue36040 + EnumValue36041 + EnumValue36042 + EnumValue36043 + EnumValue36044 + EnumValue36045 + EnumValue36046 + EnumValue36047 + EnumValue36048 + EnumValue36049 + EnumValue36050 + EnumValue36051 + EnumValue36052 + EnumValue36053 + EnumValue36054 + EnumValue36055 + EnumValue36056 + EnumValue36057 + EnumValue36058 + EnumValue36059 + EnumValue36060 + EnumValue36061 + EnumValue36062 + EnumValue36063 + EnumValue36064 + EnumValue36065 + EnumValue36066 + EnumValue36067 + EnumValue36068 + EnumValue36069 + EnumValue36070 + EnumValue36071 + EnumValue36072 + EnumValue36073 + EnumValue36074 + EnumValue36075 + EnumValue36076 + EnumValue36077 + EnumValue36078 + EnumValue36079 + EnumValue36080 + EnumValue36081 + EnumValue36082 + EnumValue36083 + EnumValue36084 + EnumValue36085 + EnumValue36086 + EnumValue36087 + EnumValue36088 + EnumValue36089 + EnumValue36090 + EnumValue36091 + EnumValue36092 + EnumValue36093 + EnumValue36094 + EnumValue36095 + EnumValue36096 + EnumValue36097 + EnumValue36098 + EnumValue36099 + EnumValue36100 + EnumValue36101 + EnumValue36102 + EnumValue36103 + EnumValue36104 + EnumValue36105 + EnumValue36106 + EnumValue36107 + EnumValue36108 + EnumValue36109 + EnumValue36110 + EnumValue36111 + EnumValue36112 + EnumValue36113 + EnumValue36114 + EnumValue36115 + EnumValue36116 + EnumValue36117 + EnumValue36118 + EnumValue36119 + EnumValue36120 + EnumValue36121 + EnumValue36122 + EnumValue36123 + EnumValue36124 + EnumValue36125 + EnumValue36126 + EnumValue36127 + EnumValue36128 + EnumValue36129 + EnumValue36130 + EnumValue36131 + EnumValue36132 + EnumValue36133 + EnumValue36134 + EnumValue36135 + EnumValue36136 + EnumValue36137 + EnumValue36138 + EnumValue36139 + EnumValue36140 + EnumValue36141 + EnumValue36142 + EnumValue36143 + EnumValue36144 + EnumValue36145 + EnumValue36146 + EnumValue36147 + EnumValue36148 + EnumValue36149 + EnumValue36150 + EnumValue36151 + EnumValue36152 + EnumValue36153 + EnumValue36154 + EnumValue36155 + EnumValue36156 + EnumValue36157 + EnumValue36158 + EnumValue36159 + EnumValue36160 + EnumValue36161 + EnumValue36162 + EnumValue36163 + EnumValue36164 + EnumValue36165 + EnumValue36166 + EnumValue36167 + EnumValue36168 + EnumValue36169 + EnumValue36170 + EnumValue36171 + EnumValue36172 + EnumValue36173 + EnumValue36174 + EnumValue36175 + EnumValue36176 + EnumValue36177 + EnumValue36178 + EnumValue36179 + EnumValue36180 + EnumValue36181 + EnumValue36182 + EnumValue36183 + EnumValue36184 + EnumValue36185 + EnumValue36186 + EnumValue36187 + EnumValue36188 + EnumValue36189 + EnumValue36190 + EnumValue36191 + EnumValue36192 + EnumValue36193 + EnumValue36194 + EnumValue36195 + EnumValue36196 + EnumValue36197 + EnumValue36198 + EnumValue36199 + EnumValue36200 + EnumValue36201 + EnumValue36202 + EnumValue36203 + EnumValue36204 + EnumValue36205 + EnumValue36206 + EnumValue36207 + EnumValue36208 + EnumValue36209 + EnumValue36210 + EnumValue36211 + EnumValue36212 + EnumValue36213 + EnumValue36214 + EnumValue36215 + EnumValue36216 + EnumValue36217 + EnumValue36218 + EnumValue36219 + EnumValue36220 + EnumValue36221 + EnumValue36222 + EnumValue36223 + EnumValue36224 + EnumValue36225 + EnumValue36226 + EnumValue36227 + EnumValue36228 + EnumValue36229 + EnumValue36230 + EnumValue36231 + EnumValue36232 + EnumValue36233 + EnumValue36234 + EnumValue36235 + EnumValue36236 + EnumValue36237 + EnumValue36238 + EnumValue36239 + EnumValue36240 + EnumValue36241 + EnumValue36242 + EnumValue36243 + EnumValue36244 + EnumValue36245 + EnumValue36246 + EnumValue36247 + EnumValue36248 + EnumValue36249 + EnumValue36250 + EnumValue36251 + EnumValue36252 + EnumValue36253 + EnumValue36254 + EnumValue36255 + EnumValue36256 + EnumValue36257 + EnumValue36258 + EnumValue36259 + EnumValue36260 + EnumValue36261 + EnumValue36262 + EnumValue36263 + EnumValue36264 + EnumValue36265 + EnumValue36266 + EnumValue36267 + EnumValue36268 + EnumValue36269 + EnumValue36270 + EnumValue36271 + EnumValue36272 + EnumValue36273 + EnumValue36274 + EnumValue36275 + EnumValue36276 + EnumValue36277 + EnumValue36278 + EnumValue36279 + EnumValue36280 + EnumValue36281 + EnumValue36282 + EnumValue36283 + EnumValue36284 + EnumValue36285 + EnumValue36286 + EnumValue36287 + EnumValue36288 + EnumValue36289 + EnumValue36290 + EnumValue36291 + EnumValue36292 + EnumValue36293 + EnumValue36294 + EnumValue36295 + EnumValue36296 + EnumValue36297 + EnumValue36298 + EnumValue36299 + EnumValue36300 + EnumValue36301 + EnumValue36302 + EnumValue36303 + EnumValue36304 + EnumValue36305 + EnumValue36306 + EnumValue36307 + EnumValue36308 + EnumValue36309 + EnumValue36310 + EnumValue36311 + EnumValue36312 + EnumValue36313 + EnumValue36314 + EnumValue36315 + EnumValue36316 + EnumValue36317 + EnumValue36318 + EnumValue36319 + EnumValue36320 + EnumValue36321 + EnumValue36322 + EnumValue36323 + EnumValue36324 + EnumValue36325 + EnumValue36326 + EnumValue36327 + EnumValue36328 + EnumValue36329 + EnumValue36330 + EnumValue36331 + EnumValue36332 + EnumValue36333 + EnumValue36334 + EnumValue36335 + EnumValue36336 + EnumValue36337 + EnumValue36338 + EnumValue36339 + EnumValue36340 + EnumValue36341 + EnumValue36342 + EnumValue36343 + EnumValue36344 + EnumValue36345 + EnumValue36346 + EnumValue36347 + EnumValue36348 + EnumValue36349 + EnumValue36350 + EnumValue36351 + EnumValue36352 + EnumValue36353 + EnumValue36354 + EnumValue36355 + EnumValue36356 + EnumValue36357 + EnumValue36358 + EnumValue36359 + EnumValue36360 + EnumValue36361 + EnumValue36362 + EnumValue36363 + EnumValue36364 + EnumValue36365 + EnumValue36366 + EnumValue36367 + EnumValue36368 + EnumValue36369 + EnumValue36370 + EnumValue36371 + EnumValue36372 + EnumValue36373 + EnumValue36374 + EnumValue36375 + EnumValue36376 + EnumValue36377 + EnumValue36378 + EnumValue36379 + EnumValue36380 + EnumValue36381 + EnumValue36382 + EnumValue36383 + EnumValue36384 + EnumValue36385 + EnumValue36386 + EnumValue36387 + EnumValue36388 + EnumValue36389 + EnumValue36390 + EnumValue36391 + EnumValue36392 + EnumValue36393 + EnumValue36394 + EnumValue36395 + EnumValue36396 + EnumValue36397 + EnumValue36398 + EnumValue36399 + EnumValue36400 + EnumValue36401 + EnumValue36402 + EnumValue36403 + EnumValue36404 + EnumValue36405 + EnumValue36406 + EnumValue36407 + EnumValue36408 + EnumValue36409 + EnumValue36410 + EnumValue36411 + EnumValue36412 + EnumValue36413 + EnumValue36414 + EnumValue36415 + EnumValue36416 + EnumValue36417 + EnumValue36418 + EnumValue36419 + EnumValue36420 + EnumValue36421 + EnumValue36422 + EnumValue36423 + EnumValue36424 + EnumValue36425 + EnumValue36426 + EnumValue36427 + EnumValue36428 + EnumValue36429 + EnumValue36430 + EnumValue36431 + EnumValue36432 + EnumValue36433 + EnumValue36434 + EnumValue36435 + EnumValue36436 + EnumValue36437 + EnumValue36438 + EnumValue36439 + EnumValue36440 + EnumValue36441 + EnumValue36442 + EnumValue36443 + EnumValue36444 + EnumValue36445 + EnumValue36446 + EnumValue36447 + EnumValue36448 + EnumValue36449 + EnumValue36450 + EnumValue36451 + EnumValue36452 + EnumValue36453 + EnumValue36454 + EnumValue36455 + EnumValue36456 + EnumValue36457 + EnumValue36458 + EnumValue36459 + EnumValue36460 + EnumValue36461 + EnumValue36462 + EnumValue36463 + EnumValue36464 + EnumValue36465 + EnumValue36466 + EnumValue36467 + EnumValue36468 + EnumValue36469 + EnumValue36470 + EnumValue36471 + EnumValue36472 + EnumValue36473 + EnumValue36474 + EnumValue36475 + EnumValue36476 + EnumValue36477 + EnumValue36478 + EnumValue36479 + EnumValue36480 + EnumValue36481 + EnumValue36482 + EnumValue36483 + EnumValue36484 + EnumValue36485 + EnumValue36486 + EnumValue36487 + EnumValue36488 + EnumValue36489 + EnumValue36490 + EnumValue36491 + EnumValue36492 + EnumValue36493 + EnumValue36494 + EnumValue36495 + EnumValue36496 + EnumValue36497 + EnumValue36498 + EnumValue36499 + EnumValue36500 + EnumValue36501 + EnumValue36502 + EnumValue36503 + EnumValue36504 + EnumValue36505 + EnumValue36506 + EnumValue36507 + EnumValue36508 + EnumValue36509 + EnumValue36510 + EnumValue36511 + EnumValue36512 + EnumValue36513 + EnumValue36514 + EnumValue36515 + EnumValue36516 + EnumValue36517 + EnumValue36518 + EnumValue36519 + EnumValue36520 + EnumValue36521 + EnumValue36522 + EnumValue36523 + EnumValue36524 + EnumValue36525 + EnumValue36526 + EnumValue36527 + EnumValue36528 + EnumValue36529 + EnumValue36530 + EnumValue36531 + EnumValue36532 + EnumValue36533 + EnumValue36534 + EnumValue36535 + EnumValue36536 + EnumValue36537 + EnumValue36538 + EnumValue36539 + EnumValue36540 + EnumValue36541 + EnumValue36542 + EnumValue36543 + EnumValue36544 + EnumValue36545 + EnumValue36546 + EnumValue36547 + EnumValue36548 + EnumValue36549 + EnumValue36550 + EnumValue36551 + EnumValue36552 + EnumValue36553 + EnumValue36554 + EnumValue36555 + EnumValue36556 + EnumValue36557 + EnumValue36558 + EnumValue36559 + EnumValue36560 + EnumValue36561 + EnumValue36562 + EnumValue36563 + EnumValue36564 + EnumValue36565 + EnumValue36566 + EnumValue36567 + EnumValue36568 + EnumValue36569 + EnumValue36570 + EnumValue36571 + EnumValue36572 + EnumValue36573 + EnumValue36574 + EnumValue36575 + EnumValue36576 + EnumValue36577 + EnumValue36578 + EnumValue36579 + EnumValue36580 + EnumValue36581 + EnumValue36582 + EnumValue36583 + EnumValue36584 + EnumValue36585 + EnumValue36586 + EnumValue36587 + EnumValue36588 + EnumValue36589 + EnumValue36590 + EnumValue36591 + EnumValue36592 + EnumValue36593 + EnumValue36594 + EnumValue36595 + EnumValue36596 + EnumValue36597 + EnumValue36598 + EnumValue36599 + EnumValue36600 + EnumValue36601 + EnumValue36602 + EnumValue36603 + EnumValue36604 + EnumValue36605 + EnumValue36606 + EnumValue36607 + EnumValue36608 + EnumValue36609 + EnumValue36610 + EnumValue36611 + EnumValue36612 + EnumValue36613 + EnumValue36614 + EnumValue36615 + EnumValue36616 + EnumValue36617 + EnumValue36618 + EnumValue36619 + EnumValue36620 + EnumValue36621 + EnumValue36622 + EnumValue36623 + EnumValue36624 + EnumValue36625 + EnumValue36626 + EnumValue36627 + EnumValue36628 + EnumValue36629 + EnumValue36630 + EnumValue36631 + EnumValue36632 + EnumValue36633 + EnumValue36634 + EnumValue36635 + EnumValue36636 + EnumValue36637 + EnumValue36638 + EnumValue36639 + EnumValue36640 + EnumValue36641 + EnumValue36642 + EnumValue36643 + EnumValue36644 + EnumValue36645 + EnumValue36646 + EnumValue36647 + EnumValue36648 + EnumValue36649 + EnumValue36650 + EnumValue36651 + EnumValue36652 + EnumValue36653 + EnumValue36654 + EnumValue36655 + EnumValue36656 + EnumValue36657 + EnumValue36658 + EnumValue36659 + EnumValue36660 + EnumValue36661 + EnumValue36662 + EnumValue36663 + EnumValue36664 + EnumValue36665 + EnumValue36666 + EnumValue36667 + EnumValue36668 + EnumValue36669 + EnumValue36670 + EnumValue36671 + EnumValue36672 + EnumValue36673 +} + +enum Enum2287 @Directive44(argument97 : ["stringValue41183"]) { + EnumValue36674 + EnumValue36675 + EnumValue36676 + EnumValue36677 +} + +enum Enum2288 @Directive44(argument97 : ["stringValue41198"]) { + EnumValue36678 + EnumValue36679 + EnumValue36680 + EnumValue36681 + EnumValue36682 + EnumValue36683 + EnumValue36684 + EnumValue36685 + EnumValue36686 + EnumValue36687 + EnumValue36688 + EnumValue36689 + EnumValue36690 + EnumValue36691 + EnumValue36692 + EnumValue36693 + EnumValue36694 + EnumValue36695 + EnumValue36696 + EnumValue36697 + EnumValue36698 + EnumValue36699 + EnumValue36700 + EnumValue36701 + EnumValue36702 + EnumValue36703 + EnumValue36704 + EnumValue36705 + EnumValue36706 + EnumValue36707 + EnumValue36708 + EnumValue36709 + EnumValue36710 + EnumValue36711 + EnumValue36712 + EnumValue36713 + EnumValue36714 + EnumValue36715 +} + +enum Enum2289 @Directive44(argument97 : ["stringValue41199"]) { + EnumValue36716 + EnumValue36717 + EnumValue36718 +} + +enum Enum229 @Directive22(argument62 : "stringValue4109") @Directive44(argument97 : ["stringValue4110", "stringValue4111"]) { + EnumValue4851 + EnumValue4852 +} + +enum Enum2290 @Directive44(argument97 : ["stringValue41219"]) { + EnumValue36719 + EnumValue36720 + EnumValue36721 + EnumValue36722 +} + +enum Enum2291 @Directive44(argument97 : ["stringValue41226"]) { + EnumValue36723 + EnumValue36724 + EnumValue36725 + EnumValue36726 +} + +enum Enum2292 @Directive44(argument97 : ["stringValue41227"]) { + EnumValue36727 + EnumValue36728 + EnumValue36729 +} + +enum Enum2293 @Directive44(argument97 : ["stringValue41228"]) { + EnumValue36730 + EnumValue36731 + EnumValue36732 + EnumValue36733 +} + +enum Enum2294 @Directive44(argument97 : ["stringValue41237"]) { + EnumValue36734 + EnumValue36735 + EnumValue36736 + EnumValue36737 +} + +enum Enum2295 @Directive44(argument97 : ["stringValue41240"]) { + EnumValue36738 + EnumValue36739 + EnumValue36740 +} + +enum Enum2296 @Directive44(argument97 : ["stringValue41247"]) { + EnumValue36741 + EnumValue36742 + EnumValue36743 + EnumValue36744 + EnumValue36745 +} + +enum Enum2297 @Directive44(argument97 : ["stringValue41266"]) { + EnumValue36746 + EnumValue36747 + EnumValue36748 + EnumValue36749 + EnumValue36750 + EnumValue36751 + EnumValue36752 + EnumValue36753 + EnumValue36754 + EnumValue36755 + EnumValue36756 + EnumValue36757 + EnumValue36758 + EnumValue36759 + EnumValue36760 + EnumValue36761 + EnumValue36762 + EnumValue36763 + EnumValue36764 + EnumValue36765 + EnumValue36766 + EnumValue36767 + EnumValue36768 + EnumValue36769 + EnumValue36770 + EnumValue36771 + EnumValue36772 + EnumValue36773 + EnumValue36774 + EnumValue36775 + EnumValue36776 + EnumValue36777 + EnumValue36778 + EnumValue36779 + EnumValue36780 + EnumValue36781 + EnumValue36782 + EnumValue36783 + EnumValue36784 + EnumValue36785 + EnumValue36786 + EnumValue36787 + EnumValue36788 + EnumValue36789 + EnumValue36790 + EnumValue36791 + EnumValue36792 + EnumValue36793 + EnumValue36794 + EnumValue36795 + EnumValue36796 + EnumValue36797 + EnumValue36798 + EnumValue36799 + EnumValue36800 + EnumValue36801 + EnumValue36802 + EnumValue36803 + EnumValue36804 + EnumValue36805 + EnumValue36806 + EnumValue36807 + EnumValue36808 + EnumValue36809 + EnumValue36810 + EnumValue36811 + EnumValue36812 +} + +enum Enum2298 @Directive44(argument97 : ["stringValue41283"]) { + EnumValue36813 + EnumValue36814 + EnumValue36815 + EnumValue36816 + EnumValue36817 + EnumValue36818 + EnumValue36819 + EnumValue36820 + EnumValue36821 + EnumValue36822 + EnumValue36823 + EnumValue36824 + EnumValue36825 + EnumValue36826 + EnumValue36827 + EnumValue36828 + EnumValue36829 + EnumValue36830 + EnumValue36831 + EnumValue36832 + EnumValue36833 +} + +enum Enum2299 @Directive44(argument97 : ["stringValue41346"]) { + EnumValue36834 + EnumValue36835 + EnumValue36836 + EnumValue36837 +} + +enum Enum23 @Directive44(argument97 : ["stringValue196"]) { + EnumValue846 + EnumValue847 + EnumValue848 +} + +enum Enum230 @Directive19(argument57 : "stringValue4125") @Directive22(argument62 : "stringValue4124") @Directive44(argument97 : ["stringValue4126", "stringValue4127"]) { + EnumValue4853 + EnumValue4854 + EnumValue4855 + EnumValue4856 + EnumValue4857 + EnumValue4858 + EnumValue4859 + EnumValue4860 + EnumValue4861 + EnumValue4862 + EnumValue4863 + EnumValue4864 +} + +enum Enum2300 @Directive44(argument97 : ["stringValue41347"]) { + EnumValue36838 + EnumValue36839 + EnumValue36840 + EnumValue36841 + EnumValue36842 + EnumValue36843 + EnumValue36844 + EnumValue36845 + EnumValue36846 + EnumValue36847 + EnumValue36848 + EnumValue36849 + EnumValue36850 + EnumValue36851 + EnumValue36852 + EnumValue36853 + EnumValue36854 + EnumValue36855 + EnumValue36856 + EnumValue36857 + EnumValue36858 + EnumValue36859 + EnumValue36860 + EnumValue36861 + EnumValue36862 + EnumValue36863 + EnumValue36864 + EnumValue36865 +} + +enum Enum2301 @Directive44(argument97 : ["stringValue41352"]) { + EnumValue36866 + EnumValue36867 + EnumValue36868 + EnumValue36869 + EnumValue36870 +} + +enum Enum2302 @Directive44(argument97 : ["stringValue41353"]) { + EnumValue36871 + EnumValue36872 + EnumValue36873 + EnumValue36874 + EnumValue36875 + EnumValue36876 +} + +enum Enum2303 @Directive44(argument97 : ["stringValue41354"]) { + EnumValue36877 + EnumValue36878 + EnumValue36879 + EnumValue36880 + EnumValue36881 +} + +enum Enum2304 @Directive44(argument97 : ["stringValue41355"]) { + EnumValue36882 + EnumValue36883 + EnumValue36884 + EnumValue36885 +} + +enum Enum2305 @Directive44(argument97 : ["stringValue41356"]) { + EnumValue36886 + EnumValue36887 + EnumValue36888 + EnumValue36889 + EnumValue36890 +} + +enum Enum2306 @Directive44(argument97 : ["stringValue41379"]) { + EnumValue36891 + EnumValue36892 + EnumValue36893 + EnumValue36894 +} + +enum Enum2307 @Directive44(argument97 : ["stringValue41398"]) { + EnumValue36895 + EnumValue36896 + EnumValue36897 +} + +enum Enum2308 @Directive44(argument97 : ["stringValue41441"]) { + EnumValue36898 + EnumValue36899 + EnumValue36900 + EnumValue36901 + EnumValue36902 + EnumValue36903 + EnumValue36904 + EnumValue36905 + EnumValue36906 + EnumValue36907 +} + +enum Enum2309 @Directive44(argument97 : ["stringValue41442"]) { + EnumValue36908 + EnumValue36909 + EnumValue36910 +} + +enum Enum231 @Directive22(argument62 : "stringValue4141") @Directive44(argument97 : ["stringValue4142", "stringValue4143"]) { + EnumValue4865 + EnumValue4866 + EnumValue4867 + EnumValue4868 + EnumValue4869 + EnumValue4870 + EnumValue4871 + EnumValue4872 + EnumValue4873 + EnumValue4874 + EnumValue4875 + EnumValue4876 +} + +enum Enum2310 @Directive44(argument97 : ["stringValue41445"]) { + EnumValue36911 + EnumValue36912 + EnumValue36913 + EnumValue36914 + EnumValue36915 +} + +enum Enum2311 @Directive44(argument97 : ["stringValue41539"]) { + EnumValue36916 + EnumValue36917 + EnumValue36918 +} + +enum Enum2312 @Directive44(argument97 : ["stringValue41542"]) { + EnumValue36919 + EnumValue36920 + EnumValue36921 + EnumValue36922 + EnumValue36923 + EnumValue36924 + EnumValue36925 + EnumValue36926 +} + +enum Enum2313 @Directive44(argument97 : ["stringValue41595"]) { + EnumValue36927 + EnumValue36928 + EnumValue36929 + EnumValue36930 +} + +enum Enum2314 @Directive44(argument97 : ["stringValue41600"]) { + EnumValue36931 + EnumValue36932 + EnumValue36933 +} + +enum Enum2315 @Directive44(argument97 : ["stringValue41603"]) { + EnumValue36934 + EnumValue36935 +} + +enum Enum2316 @Directive44(argument97 : ["stringValue41606"]) { + EnumValue36936 + EnumValue36937 + EnumValue36938 + EnumValue36939 +} + +enum Enum2317 @Directive44(argument97 : ["stringValue41625"]) { + EnumValue36940 + EnumValue36941 + EnumValue36942 + EnumValue36943 + EnumValue36944 + EnumValue36945 + EnumValue36946 + EnumValue36947 + EnumValue36948 + EnumValue36949 + EnumValue36950 + EnumValue36951 + EnumValue36952 + EnumValue36953 + EnumValue36954 + EnumValue36955 + EnumValue36956 +} + +enum Enum2318 @Directive44(argument97 : ["stringValue41626"]) { + EnumValue36957 + EnumValue36958 + EnumValue36959 + EnumValue36960 + EnumValue36961 + EnumValue36962 + EnumValue36963 + EnumValue36964 + EnumValue36965 +} + +enum Enum2319 @Directive44(argument97 : ["stringValue41639"]) { + EnumValue36966 + EnumValue36967 + EnumValue36968 + EnumValue36969 + EnumValue36970 + EnumValue36971 + EnumValue36972 + EnumValue36973 + EnumValue36974 + EnumValue36975 + EnumValue36976 +} + +enum Enum232 @Directive22(argument62 : "stringValue4153") @Directive44(argument97 : ["stringValue4154", "stringValue4155"]) { + EnumValue4877 + EnumValue4878 + EnumValue4879 + EnumValue4880 +} + +enum Enum2320 @Directive44(argument97 : ["stringValue41646"]) { + EnumValue36977 + EnumValue36978 + EnumValue36979 + EnumValue36980 + EnumValue36981 + EnumValue36982 + EnumValue36983 + EnumValue36984 + EnumValue36985 + EnumValue36986 + EnumValue36987 + EnumValue36988 + EnumValue36989 + EnumValue36990 + EnumValue36991 + EnumValue36992 + EnumValue36993 + EnumValue36994 + EnumValue36995 + EnumValue36996 + EnumValue36997 + EnumValue36998 + EnumValue36999 + EnumValue37000 + EnumValue37001 + EnumValue37002 + EnumValue37003 + EnumValue37004 + EnumValue37005 + EnumValue37006 + EnumValue37007 + EnumValue37008 + EnumValue37009 + EnumValue37010 + EnumValue37011 + EnumValue37012 + EnumValue37013 + EnumValue37014 + EnumValue37015 + EnumValue37016 + EnumValue37017 + EnumValue37018 + EnumValue37019 + EnumValue37020 + EnumValue37021 + EnumValue37022 + EnumValue37023 + EnumValue37024 + EnumValue37025 + EnumValue37026 + EnumValue37027 + EnumValue37028 + EnumValue37029 + EnumValue37030 + EnumValue37031 + EnumValue37032 + EnumValue37033 + EnumValue37034 +} + +enum Enum2321 @Directive44(argument97 : ["stringValue41649"]) { + EnumValue37035 + EnumValue37036 + EnumValue37037 + EnumValue37038 + EnumValue37039 +} + +enum Enum2322 @Directive44(argument97 : ["stringValue41652"]) { + EnumValue37040 + EnumValue37041 + EnumValue37042 + EnumValue37043 + EnumValue37044 + EnumValue37045 + EnumValue37046 + EnumValue37047 +} + +enum Enum2323 @Directive44(argument97 : ["stringValue41663"]) { + EnumValue37048 + EnumValue37049 + EnumValue37050 + EnumValue37051 + EnumValue37052 + EnumValue37053 +} + +enum Enum2324 @Directive44(argument97 : ["stringValue41696"]) { + EnumValue37054 + EnumValue37055 + EnumValue37056 +} + +enum Enum2325 @Directive44(argument97 : ["stringValue41699"]) { + EnumValue37057 + EnumValue37058 + EnumValue37059 + EnumValue37060 +} + +enum Enum2326 @Directive44(argument97 : ["stringValue41704"]) { + EnumValue37061 + EnumValue37062 + EnumValue37063 + EnumValue37064 + EnumValue37065 + EnumValue37066 + EnumValue37067 + EnumValue37068 +} + +enum Enum2327 @Directive44(argument97 : ["stringValue41713"]) { + EnumValue37069 + EnumValue37070 + EnumValue37071 + EnumValue37072 +} + +enum Enum2328 @Directive44(argument97 : ["stringValue41716"]) { + EnumValue37073 + EnumValue37074 + EnumValue37075 + EnumValue37076 + EnumValue37077 + EnumValue37078 +} + +enum Enum2329 @Directive44(argument97 : ["stringValue41721"]) { + EnumValue37079 + EnumValue37080 + EnumValue37081 + EnumValue37082 +} + +enum Enum233 @Directive22(argument62 : "stringValue4159") @Directive44(argument97 : ["stringValue4160", "stringValue4161"]) { + EnumValue4881 + EnumValue4882 +} + +enum Enum2330 @Directive44(argument97 : ["stringValue41731"]) { + EnumValue37083 + EnumValue37084 + EnumValue37085 + EnumValue37086 + EnumValue37087 + EnumValue37088 + EnumValue37089 + EnumValue37090 + EnumValue37091 + EnumValue37092 + EnumValue37093 + EnumValue37094 + EnumValue37095 + EnumValue37096 + EnumValue37097 + EnumValue37098 +} + +enum Enum2331 @Directive44(argument97 : ["stringValue41743"]) { + EnumValue37099 + EnumValue37100 + EnumValue37101 + EnumValue37102 + EnumValue37103 + EnumValue37104 + EnumValue37105 + EnumValue37106 +} + +enum Enum2332 @Directive44(argument97 : ["stringValue41780"]) { + EnumValue37107 + EnumValue37108 + EnumValue37109 +} + +enum Enum2333 @Directive44(argument97 : ["stringValue41787"]) { + EnumValue37110 + EnumValue37111 + EnumValue37112 +} + +enum Enum2334 @Directive44(argument97 : ["stringValue41790"]) { + EnumValue37113 + EnumValue37114 + EnumValue37115 + EnumValue37116 + EnumValue37117 + EnumValue37118 +} + +enum Enum2335 @Directive44(argument97 : ["stringValue41791"]) { + EnumValue37119 + EnumValue37120 + EnumValue37121 +} + +enum Enum2336 @Directive44(argument97 : ["stringValue41798"]) { + EnumValue37122 + EnumValue37123 + EnumValue37124 + EnumValue37125 +} + +enum Enum2337 @Directive44(argument97 : ["stringValue41803"]) { + EnumValue37126 + EnumValue37127 + EnumValue37128 + EnumValue37129 +} + +enum Enum2338 @Directive44(argument97 : ["stringValue41806"]) { + EnumValue37130 + EnumValue37131 + EnumValue37132 + EnumValue37133 + EnumValue37134 + EnumValue37135 + EnumValue37136 +} + +enum Enum2339 @Directive44(argument97 : ["stringValue41854"]) { + EnumValue37137 + EnumValue37138 + EnumValue37139 + EnumValue37140 +} + +enum Enum234 @Directive19(argument57 : "stringValue4172") @Directive22(argument62 : "stringValue4171") @Directive44(argument97 : ["stringValue4173", "stringValue4174"]) { + EnumValue4883 + EnumValue4884 + EnumValue4885 + EnumValue4886 +} + +enum Enum2340 @Directive44(argument97 : ["stringValue41871"]) { + EnumValue37141 + EnumValue37142 + EnumValue37143 +} + +enum Enum2341 @Directive44(argument97 : ["stringValue41880"]) { + EnumValue37144 + EnumValue37145 + EnumValue37146 +} + +enum Enum2342 @Directive44(argument97 : ["stringValue41883"]) { + EnumValue37147 + EnumValue37148 + EnumValue37149 +} + +enum Enum2343 @Directive44(argument97 : ["stringValue41892"]) { + EnumValue37150 + EnumValue37151 + EnumValue37152 +} + +enum Enum2344 @Directive44(argument97 : ["stringValue41893"]) { + EnumValue37153 + EnumValue37154 + EnumValue37155 + EnumValue37156 + EnumValue37157 + EnumValue37158 + EnumValue37159 + EnumValue37160 + EnumValue37161 + EnumValue37162 + EnumValue37163 + EnumValue37164 + EnumValue37165 +} + +enum Enum2345 @Directive44(argument97 : ["stringValue41894"]) { + EnumValue37166 + EnumValue37167 + EnumValue37168 + EnumValue37169 + EnumValue37170 +} + +enum Enum2346 @Directive44(argument97 : ["stringValue41897"]) { + EnumValue37171 + EnumValue37172 + EnumValue37173 + EnumValue37174 + EnumValue37175 + EnumValue37176 + EnumValue37177 + EnumValue37178 + EnumValue37179 + EnumValue37180 + EnumValue37181 + EnumValue37182 + EnumValue37183 + EnumValue37184 + EnumValue37185 + EnumValue37186 + EnumValue37187 + EnumValue37188 + EnumValue37189 + EnumValue37190 + EnumValue37191 + EnumValue37192 + EnumValue37193 + EnumValue37194 + EnumValue37195 + EnumValue37196 + EnumValue37197 + EnumValue37198 + EnumValue37199 + EnumValue37200 + EnumValue37201 + EnumValue37202 +} + +enum Enum2347 @Directive44(argument97 : ["stringValue41898"]) { + EnumValue37203 + EnumValue37204 + EnumValue37205 + EnumValue37206 +} + +enum Enum2348 @Directive44(argument97 : ["stringValue41903"]) { + EnumValue37207 + EnumValue37208 + EnumValue37209 + EnumValue37210 +} + +enum Enum2349 @Directive44(argument97 : ["stringValue41917"]) { + EnumValue37211 + EnumValue37212 + EnumValue37213 + EnumValue37214 + EnumValue37215 + EnumValue37216 + EnumValue37217 + EnumValue37218 +} + +enum Enum235 @Directive19(argument57 : "stringValue4179") @Directive22(argument62 : "stringValue4178") @Directive44(argument97 : ["stringValue4180", "stringValue4181"]) { + EnumValue4887 + EnumValue4888 +} + +enum Enum2350 @Directive44(argument97 : ["stringValue41926"]) { + EnumValue37219 + EnumValue37220 +} + +enum Enum2351 @Directive44(argument97 : ["stringValue41965"]) { + EnumValue37221 + EnumValue37222 + EnumValue37223 + EnumValue37224 + EnumValue37225 +} + +enum Enum2352 @Directive44(argument97 : ["stringValue41966"]) { + EnumValue37226 + EnumValue37227 +} + +enum Enum2353 @Directive44(argument97 : ["stringValue41969"]) { + EnumValue37228 + EnumValue37229 + EnumValue37230 +} + +enum Enum2354 @Directive44(argument97 : ["stringValue41972"]) { + EnumValue37231 + EnumValue37232 + EnumValue37233 + EnumValue37234 +} + +enum Enum2355 @Directive44(argument97 : ["stringValue41977"]) { + EnumValue37235 + EnumValue37236 + EnumValue37237 +} + +enum Enum2356 @Directive44(argument97 : ["stringValue41990"]) { + EnumValue37238 + EnumValue37239 +} + +enum Enum2357 @Directive44(argument97 : ["stringValue41995"]) { + EnumValue37240 + EnumValue37241 + EnumValue37242 + EnumValue37243 + EnumValue37244 + EnumValue37245 + EnumValue37246 + EnumValue37247 + EnumValue37248 + EnumValue37249 + EnumValue37250 + EnumValue37251 + EnumValue37252 + EnumValue37253 + EnumValue37254 + EnumValue37255 +} + +enum Enum2358 @Directive44(argument97 : ["stringValue41996"]) { + EnumValue37256 + EnumValue37257 + EnumValue37258 +} + +enum Enum2359 @Directive44(argument97 : ["stringValue42032"]) { + EnumValue37259 + EnumValue37260 + EnumValue37261 + EnumValue37262 + EnumValue37263 + EnumValue37264 + EnumValue37265 + EnumValue37266 + EnumValue37267 + EnumValue37268 + EnumValue37269 + EnumValue37270 + EnumValue37271 + EnumValue37272 +} + +enum Enum236 @Directive19(argument57 : "stringValue4190") @Directive22(argument62 : "stringValue4189") @Directive44(argument97 : ["stringValue4191", "stringValue4192"]) { + EnumValue4889 + EnumValue4890 + EnumValue4891 +} + +enum Enum2360 @Directive44(argument97 : ["stringValue42041"]) { + EnumValue37273 + EnumValue37274 + EnumValue37275 +} + +enum Enum2361 @Directive44(argument97 : ["stringValue42043"]) { + EnumValue37276 + EnumValue37277 + EnumValue37278 +} + +enum Enum2362 @Directive44(argument97 : ["stringValue42046"]) { + EnumValue37279 + EnumValue37280 + EnumValue37281 + EnumValue37282 + EnumValue37283 +} + +enum Enum2363 @Directive44(argument97 : ["stringValue42053"]) { + EnumValue37284 + EnumValue37285 + EnumValue37286 + EnumValue37287 +} + +enum Enum2364 @Directive44(argument97 : ["stringValue42067"]) { + EnumValue37288 + EnumValue37289 + EnumValue37290 + EnumValue37291 +} + +enum Enum2365 @Directive44(argument97 : ["stringValue42079"]) { + EnumValue37292 + EnumValue37293 + EnumValue37294 + EnumValue37295 + EnumValue37296 + EnumValue37297 + EnumValue37298 + EnumValue37299 + EnumValue37300 + EnumValue37301 + EnumValue37302 + EnumValue37303 + EnumValue37304 +} + +enum Enum2366 @Directive44(argument97 : ["stringValue42084"]) { + EnumValue37305 + EnumValue37306 + EnumValue37307 + EnumValue37308 +} + +enum Enum2367 @Directive44(argument97 : ["stringValue42085"]) { + EnumValue37309 + EnumValue37310 + EnumValue37311 + EnumValue37312 +} + +enum Enum2368 @Directive44(argument97 : ["stringValue42090"]) { + EnumValue37313 + EnumValue37314 + EnumValue37315 + EnumValue37316 +} + +enum Enum2369 @Directive44(argument97 : ["stringValue42091"]) { + EnumValue37317 + EnumValue37318 + EnumValue37319 + EnumValue37320 + EnumValue37321 +} + +enum Enum237 @Directive22(argument62 : "stringValue4196") @Directive44(argument97 : ["stringValue4197", "stringValue4198"]) { + EnumValue4892 + EnumValue4893 + EnumValue4894 + EnumValue4895 +} + +enum Enum2370 @Directive44(argument97 : ["stringValue42094"]) { + EnumValue37322 + EnumValue37323 + EnumValue37324 + EnumValue37325 + EnumValue37326 + EnumValue37327 + EnumValue37328 + EnumValue37329 + EnumValue37330 + EnumValue37331 + EnumValue37332 + EnumValue37333 + EnumValue37334 + EnumValue37335 + EnumValue37336 + EnumValue37337 + EnumValue37338 + EnumValue37339 + EnumValue37340 + EnumValue37341 + EnumValue37342 + EnumValue37343 + EnumValue37344 + EnumValue37345 + EnumValue37346 + EnumValue37347 + EnumValue37348 + EnumValue37349 + EnumValue37350 + EnumValue37351 + EnumValue37352 + EnumValue37353 + EnumValue37354 + EnumValue37355 + EnumValue37356 + EnumValue37357 + EnumValue37358 + EnumValue37359 + EnumValue37360 + EnumValue37361 + EnumValue37362 + EnumValue37363 + EnumValue37364 + EnumValue37365 + EnumValue37366 + EnumValue37367 + EnumValue37368 + EnumValue37369 + EnumValue37370 + EnumValue37371 + EnumValue37372 + EnumValue37373 + EnumValue37374 + EnumValue37375 + EnumValue37376 + EnumValue37377 + EnumValue37378 + EnumValue37379 + EnumValue37380 + EnumValue37381 + EnumValue37382 + EnumValue37383 + EnumValue37384 + EnumValue37385 + EnumValue37386 + EnumValue37387 + EnumValue37388 + EnumValue37389 + EnumValue37390 + EnumValue37391 + EnumValue37392 + EnumValue37393 + EnumValue37394 + EnumValue37395 + EnumValue37396 + EnumValue37397 + EnumValue37398 + EnumValue37399 + EnumValue37400 + EnumValue37401 + EnumValue37402 + EnumValue37403 + EnumValue37404 + EnumValue37405 + EnumValue37406 + EnumValue37407 + EnumValue37408 + EnumValue37409 + EnumValue37410 + EnumValue37411 + EnumValue37412 + EnumValue37413 + EnumValue37414 + EnumValue37415 + EnumValue37416 + EnumValue37417 + EnumValue37418 + EnumValue37419 + EnumValue37420 + EnumValue37421 + EnumValue37422 + EnumValue37423 + EnumValue37424 + EnumValue37425 + EnumValue37426 + EnumValue37427 + EnumValue37428 + EnumValue37429 + EnumValue37430 + EnumValue37431 + EnumValue37432 + EnumValue37433 + EnumValue37434 + EnumValue37435 + EnumValue37436 + EnumValue37437 + EnumValue37438 + EnumValue37439 + EnumValue37440 + EnumValue37441 + EnumValue37442 + EnumValue37443 + EnumValue37444 + EnumValue37445 + EnumValue37446 + EnumValue37447 + EnumValue37448 + EnumValue37449 + EnumValue37450 + EnumValue37451 + EnumValue37452 + EnumValue37453 + EnumValue37454 + EnumValue37455 + EnumValue37456 + EnumValue37457 + EnumValue37458 + EnumValue37459 + EnumValue37460 + EnumValue37461 + EnumValue37462 + EnumValue37463 + EnumValue37464 + EnumValue37465 + EnumValue37466 + EnumValue37467 + EnumValue37468 + EnumValue37469 + EnumValue37470 + EnumValue37471 + EnumValue37472 + EnumValue37473 + EnumValue37474 + EnumValue37475 + EnumValue37476 + EnumValue37477 + EnumValue37478 + EnumValue37479 + EnumValue37480 + EnumValue37481 + EnumValue37482 + EnumValue37483 + EnumValue37484 + EnumValue37485 + EnumValue37486 + EnumValue37487 + EnumValue37488 + EnumValue37489 + EnumValue37490 + EnumValue37491 + EnumValue37492 + EnumValue37493 + EnumValue37494 + EnumValue37495 + EnumValue37496 + EnumValue37497 + EnumValue37498 + EnumValue37499 + EnumValue37500 + EnumValue37501 + EnumValue37502 + EnumValue37503 + EnumValue37504 + EnumValue37505 + EnumValue37506 +} + +enum Enum2371 @Directive44(argument97 : ["stringValue42095"]) { + EnumValue37507 + EnumValue37508 + EnumValue37509 + EnumValue37510 + EnumValue37511 + EnumValue37512 + EnumValue37513 + EnumValue37514 + EnumValue37515 + EnumValue37516 + EnumValue37517 + EnumValue37518 + EnumValue37519 + EnumValue37520 + EnumValue37521 +} + +enum Enum2372 @Directive44(argument97 : ["stringValue42096"]) { + EnumValue37522 + EnumValue37523 + EnumValue37524 + EnumValue37525 + EnumValue37526 +} + +enum Enum2373 @Directive44(argument97 : ["stringValue42134"]) { + EnumValue37527 + EnumValue37528 + EnumValue37529 + EnumValue37530 + EnumValue37531 + EnumValue37532 + EnumValue37533 +} + +enum Enum2374 @Directive44(argument97 : ["stringValue42137"]) { + EnumValue37534 + EnumValue37535 + EnumValue37536 +} + +enum Enum2375 @Directive44(argument97 : ["stringValue42146"]) { + EnumValue37537 + EnumValue37538 + EnumValue37539 + EnumValue37540 + EnumValue37541 +} + +enum Enum2376 @Directive44(argument97 : ["stringValue42149"]) { + EnumValue37542 + EnumValue37543 + EnumValue37544 +} + +enum Enum2377 @Directive44(argument97 : ["stringValue42154"]) { + EnumValue37545 + EnumValue37546 + EnumValue37547 + EnumValue37548 + EnumValue37549 + EnumValue37550 + EnumValue37551 + EnumValue37552 + EnumValue37553 + EnumValue37554 + EnumValue37555 + EnumValue37556 + EnumValue37557 + EnumValue37558 + EnumValue37559 + EnumValue37560 + EnumValue37561 + EnumValue37562 + EnumValue37563 + EnumValue37564 + EnumValue37565 + EnumValue37566 + EnumValue37567 + EnumValue37568 + EnumValue37569 + EnumValue37570 + EnumValue37571 + EnumValue37572 + EnumValue37573 + EnumValue37574 + EnumValue37575 + EnumValue37576 + EnumValue37577 + EnumValue37578 + EnumValue37579 + EnumValue37580 + EnumValue37581 + EnumValue37582 + EnumValue37583 +} + +enum Enum2378 @Directive44(argument97 : ["stringValue42197"]) { + EnumValue37584 + EnumValue37585 + EnumValue37586 + EnumValue37587 + EnumValue37588 + EnumValue37589 +} + +enum Enum2379 @Directive44(argument97 : ["stringValue42204"]) { + EnumValue37590 + EnumValue37591 + EnumValue37592 + EnumValue37593 + EnumValue37594 + EnumValue37595 + EnumValue37596 + EnumValue37597 + EnumValue37598 + EnumValue37599 + EnumValue37600 + EnumValue37601 + EnumValue37602 + EnumValue37603 + EnumValue37604 + EnumValue37605 + EnumValue37606 + EnumValue37607 + EnumValue37608 + EnumValue37609 + EnumValue37610 + EnumValue37611 + EnumValue37612 + EnumValue37613 + EnumValue37614 + EnumValue37615 + EnumValue37616 + EnumValue37617 + EnumValue37618 + EnumValue37619 + EnumValue37620 + EnumValue37621 + EnumValue37622 + EnumValue37623 + EnumValue37624 + EnumValue37625 + EnumValue37626 +} + +enum Enum238 @Directive22(argument62 : "stringValue4202") @Directive44(argument97 : ["stringValue4203", "stringValue4204"]) { + EnumValue4896 + EnumValue4897 +} + +enum Enum2380 @Directive44(argument97 : ["stringValue42276"]) { + EnumValue37627 + EnumValue37628 + EnumValue37629 +} + +enum Enum2381 @Directive44(argument97 : ["stringValue42283"]) { + EnumValue37630 + EnumValue37631 + EnumValue37632 + EnumValue37633 + EnumValue37634 + EnumValue37635 + EnumValue37636 + EnumValue37637 +} + +enum Enum2382 @Directive44(argument97 : ["stringValue42292"]) { + EnumValue37638 + EnumValue37639 + EnumValue37640 + EnumValue37641 + EnumValue37642 + EnumValue37643 + EnumValue37644 + EnumValue37645 + EnumValue37646 + EnumValue37647 + EnumValue37648 +} + +enum Enum2383 @Directive44(argument97 : ["stringValue42337"]) { + EnumValue37649 + EnumValue37650 + EnumValue37651 + EnumValue37652 + EnumValue37653 +} + +enum Enum2384 @Directive44(argument97 : ["stringValue42338"]) { + EnumValue37654 + EnumValue37655 + EnumValue37656 +} + +enum Enum2385 @Directive44(argument97 : ["stringValue42339"]) { + EnumValue37657 + EnumValue37658 + EnumValue37659 + EnumValue37660 +} + +enum Enum2386 @Directive44(argument97 : ["stringValue42364"]) { + EnumValue37661 + EnumValue37662 + EnumValue37663 +} + +enum Enum2387 @Directive44(argument97 : ["stringValue42365"]) { + EnumValue37664 + EnumValue37665 + EnumValue37666 + EnumValue37667 +} + +enum Enum2388 @Directive44(argument97 : ["stringValue42390"]) { + EnumValue37668 + EnumValue37669 + EnumValue37670 + EnumValue37671 + EnumValue37672 + EnumValue37673 + EnumValue37674 + EnumValue37675 + EnumValue37676 + EnumValue37677 + EnumValue37678 +} + +enum Enum2389 @Directive44(argument97 : ["stringValue42401"]) { + EnumValue37679 + EnumValue37680 + EnumValue37681 + EnumValue37682 +} + +enum Enum239 @Directive22(argument62 : "stringValue4220") @Directive44(argument97 : ["stringValue4221", "stringValue4222"]) { + EnumValue4898 + EnumValue4899 + EnumValue4900 + EnumValue4901 + EnumValue4902 + EnumValue4903 + EnumValue4904 + EnumValue4905 + EnumValue4906 + EnumValue4907 + EnumValue4908 + EnumValue4909 +} + +enum Enum2390 @Directive44(argument97 : ["stringValue42406"]) { + EnumValue37683 + EnumValue37684 + EnumValue37685 + EnumValue37686 + EnumValue37687 + EnumValue37688 + EnumValue37689 +} + +enum Enum2391 @Directive44(argument97 : ["stringValue42417"]) { + EnumValue37690 + EnumValue37691 +} + +enum Enum2392 @Directive44(argument97 : ["stringValue42424"]) { + EnumValue37692 + EnumValue37693 + EnumValue37694 +} + +enum Enum2393 @Directive44(argument97 : ["stringValue42441"]) { + EnumValue37695 + EnumValue37696 + EnumValue37697 +} + +enum Enum2394 @Directive44(argument97 : ["stringValue42452"]) { + EnumValue37698 + EnumValue37699 + EnumValue37700 + EnumValue37701 +} + +enum Enum2395 @Directive44(argument97 : ["stringValue42457"]) { + EnumValue37702 + EnumValue37703 + EnumValue37704 +} + +enum Enum2396 @Directive44(argument97 : ["stringValue42470"]) { + EnumValue37705 + EnumValue37706 + EnumValue37707 + EnumValue37708 +} + +enum Enum2397 @Directive44(argument97 : ["stringValue42501"]) { + EnumValue37709 + EnumValue37710 + EnumValue37711 +} + +enum Enum2398 @Directive44(argument97 : ["stringValue42504"]) { + EnumValue37712 + EnumValue37713 +} + +enum Enum2399 @Directive44(argument97 : ["stringValue42529"]) { + EnumValue37714 + EnumValue37715 + EnumValue37716 + EnumValue37717 +} + +enum Enum24 @Directive44(argument97 : ["stringValue201"]) { + EnumValue849 + EnumValue850 + EnumValue851 + EnumValue852 + EnumValue853 + EnumValue854 + EnumValue855 + EnumValue856 + EnumValue857 + EnumValue858 + EnumValue859 + EnumValue860 + EnumValue861 + EnumValue862 + EnumValue863 + EnumValue864 + EnumValue865 + EnumValue866 + EnumValue867 + EnumValue868 + EnumValue869 + EnumValue870 + EnumValue871 + EnumValue872 + EnumValue873 + EnumValue874 + EnumValue875 + EnumValue876 + EnumValue877 + EnumValue878 + EnumValue879 + EnumValue880 + EnumValue881 + EnumValue882 + EnumValue883 + EnumValue884 + EnumValue885 + EnumValue886 + EnumValue887 +} + +enum Enum240 @Directive22(argument62 : "stringValue4241") @Directive44(argument97 : ["stringValue4242", "stringValue4243"]) { + EnumValue4910 + EnumValue4911 + EnumValue4912 + EnumValue4913 + EnumValue4914 + EnumValue4915 + EnumValue4916 + EnumValue4917 + EnumValue4918 + EnumValue4919 + EnumValue4920 + EnumValue4921 +} + +enum Enum2400 @Directive44(argument97 : ["stringValue42532"]) { + EnumValue37718 + EnumValue37719 + EnumValue37720 + EnumValue37721 + EnumValue37722 + EnumValue37723 + EnumValue37724 + EnumValue37725 + EnumValue37726 + EnumValue37727 + EnumValue37728 + EnumValue37729 + EnumValue37730 + EnumValue37731 +} + +enum Enum2401 @Directive44(argument97 : ["stringValue42537"]) { + EnumValue37732 + EnumValue37733 + EnumValue37734 + EnumValue37735 + EnumValue37736 + EnumValue37737 + EnumValue37738 +} + +enum Enum2402 @Directive44(argument97 : ["stringValue42538"]) { + EnumValue37739 + EnumValue37740 + EnumValue37741 + EnumValue37742 + EnumValue37743 + EnumValue37744 + EnumValue37745 + EnumValue37746 + EnumValue37747 + EnumValue37748 + EnumValue37749 + EnumValue37750 + EnumValue37751 + EnumValue37752 + EnumValue37753 + EnumValue37754 + EnumValue37755 + EnumValue37756 + EnumValue37757 + EnumValue37758 + EnumValue37759 + EnumValue37760 +} + +enum Enum2403 @Directive44(argument97 : ["stringValue42541"]) { + EnumValue37761 + EnumValue37762 + EnumValue37763 + EnumValue37764 + EnumValue37765 + EnumValue37766 + EnumValue37767 + EnumValue37768 + EnumValue37769 + EnumValue37770 +} + +enum Enum2404 @Directive44(argument97 : ["stringValue42542"]) { + EnumValue37771 + EnumValue37772 + EnumValue37773 +} + +enum Enum2405 @Directive44(argument97 : ["stringValue42578"]) { + EnumValue37774 + EnumValue37775 + EnumValue37776 + EnumValue37777 + EnumValue37778 + EnumValue37779 +} + +enum Enum2406 @Directive44(argument97 : ["stringValue42581"]) { + EnumValue37780 + EnumValue37781 + EnumValue37782 + EnumValue37783 + EnumValue37784 + EnumValue37785 + EnumValue37786 +} + +enum Enum2407 @Directive44(argument97 : ["stringValue42582"]) { + EnumValue37787 + EnumValue37788 + EnumValue37789 +} + +enum Enum2408 @Directive44(argument97 : ["stringValue42594"]) { + EnumValue37790 + EnumValue37791 + EnumValue37792 +} + +enum Enum2409 @Directive44(argument97 : ["stringValue42601"]) { + EnumValue37793 + EnumValue37794 + EnumValue37795 + EnumValue37796 + EnumValue37797 + EnumValue37798 + EnumValue37799 + EnumValue37800 + EnumValue37801 + EnumValue37802 + EnumValue37803 + EnumValue37804 + EnumValue37805 +} + +enum Enum241 @Directive19(argument57 : "stringValue4273") @Directive22(argument62 : "stringValue4272") @Directive44(argument97 : ["stringValue4274", "stringValue4275"]) { + EnumValue4922 + EnumValue4923 +} + +enum Enum2410 @Directive44(argument97 : ["stringValue42602"]) { + EnumValue37806 + EnumValue37807 + EnumValue37808 + EnumValue37809 + EnumValue37810 + EnumValue37811 + EnumValue37812 + EnumValue37813 + EnumValue37814 +} + +enum Enum2411 @Directive44(argument97 : ["stringValue42605"]) { + EnumValue37815 + EnumValue37816 + EnumValue37817 + EnumValue37818 + EnumValue37819 + EnumValue37820 + EnumValue37821 + EnumValue37822 + EnumValue37823 + EnumValue37824 + EnumValue37825 + EnumValue37826 + EnumValue37827 + EnumValue37828 + EnumValue37829 + EnumValue37830 + EnumValue37831 + EnumValue37832 + EnumValue37833 + EnumValue37834 + EnumValue37835 + EnumValue37836 + EnumValue37837 + EnumValue37838 + EnumValue37839 + EnumValue37840 + EnumValue37841 +} + +enum Enum2412 @Directive44(argument97 : ["stringValue42618"]) { + EnumValue37842 + EnumValue37843 + EnumValue37844 + EnumValue37845 + EnumValue37846 + EnumValue37847 + EnumValue37848 + EnumValue37849 +} + +enum Enum2413 @Directive44(argument97 : ["stringValue42621"]) { + EnumValue37850 + EnumValue37851 + EnumValue37852 + EnumValue37853 + EnumValue37854 + EnumValue37855 + EnumValue37856 + EnumValue37857 + EnumValue37858 + EnumValue37859 +} + +enum Enum2414 @Directive44(argument97 : ["stringValue42622"]) { + EnumValue37860 + EnumValue37861 + EnumValue37862 + EnumValue37863 + EnumValue37864 + EnumValue37865 + EnumValue37866 + EnumValue37867 + EnumValue37868 + EnumValue37869 + EnumValue37870 + EnumValue37871 + EnumValue37872 + EnumValue37873 + EnumValue37874 + EnumValue37875 + EnumValue37876 + EnumValue37877 + EnumValue37878 + EnumValue37879 + EnumValue37880 + EnumValue37881 + EnumValue37882 + EnumValue37883 + EnumValue37884 + EnumValue37885 + EnumValue37886 + EnumValue37887 + EnumValue37888 + EnumValue37889 + EnumValue37890 + EnumValue37891 + EnumValue37892 + EnumValue37893 + EnumValue37894 + EnumValue37895 + EnumValue37896 + EnumValue37897 + EnumValue37898 + EnumValue37899 + EnumValue37900 + EnumValue37901 + EnumValue37902 + EnumValue37903 + EnumValue37904 + EnumValue37905 + EnumValue37906 + EnumValue37907 + EnumValue37908 + EnumValue37909 + EnumValue37910 + EnumValue37911 + EnumValue37912 + EnumValue37913 + EnumValue37914 + EnumValue37915 + EnumValue37916 + EnumValue37917 + EnumValue37918 + EnumValue37919 + EnumValue37920 + EnumValue37921 + EnumValue37922 + EnumValue37923 + EnumValue37924 + EnumValue37925 +} + +enum Enum2415 @Directive44(argument97 : ["stringValue42625"]) { + EnumValue37926 + EnumValue37927 + EnumValue37928 + EnumValue37929 +} + +enum Enum2416 @Directive44(argument97 : ["stringValue42648"]) { + EnumValue37930 + EnumValue37931 + EnumValue37932 + EnumValue37933 + EnumValue37934 + EnumValue37935 + EnumValue37936 + EnumValue37937 +} + +enum Enum2417 @Directive44(argument97 : ["stringValue42649"]) { + EnumValue37938 + EnumValue37939 + EnumValue37940 + EnumValue37941 + EnumValue37942 + EnumValue37943 + EnumValue37944 + EnumValue37945 + EnumValue37946 + EnumValue37947 + EnumValue37948 + EnumValue37949 + EnumValue37950 + EnumValue37951 + EnumValue37952 + EnumValue37953 + EnumValue37954 + EnumValue37955 + EnumValue37956 + EnumValue37957 + EnumValue37958 + EnumValue37959 + EnumValue37960 + EnumValue37961 + EnumValue37962 + EnumValue37963 + EnumValue37964 + EnumValue37965 + EnumValue37966 + EnumValue37967 + EnumValue37968 + EnumValue37969 + EnumValue37970 + EnumValue37971 + EnumValue37972 + EnumValue37973 + EnumValue37974 + EnumValue37975 + EnumValue37976 + EnumValue37977 + EnumValue37978 + EnumValue37979 + EnumValue37980 + EnumValue37981 + EnumValue37982 + EnumValue37983 + EnumValue37984 + EnumValue37985 + EnumValue37986 + EnumValue37987 + EnumValue37988 + EnumValue37989 + EnumValue37990 + EnumValue37991 + EnumValue37992 + EnumValue37993 + EnumValue37994 + EnumValue37995 + EnumValue37996 + EnumValue37997 + EnumValue37998 + EnumValue37999 + EnumValue38000 + EnumValue38001 + EnumValue38002 + EnumValue38003 + EnumValue38004 + EnumValue38005 + EnumValue38006 + EnumValue38007 + EnumValue38008 + EnumValue38009 + EnumValue38010 + EnumValue38011 + EnumValue38012 + EnumValue38013 + EnumValue38014 + EnumValue38015 + EnumValue38016 + EnumValue38017 + EnumValue38018 + EnumValue38019 + EnumValue38020 + EnumValue38021 + EnumValue38022 + EnumValue38023 + EnumValue38024 + EnumValue38025 + EnumValue38026 + EnumValue38027 + EnumValue38028 + EnumValue38029 + EnumValue38030 + EnumValue38031 + EnumValue38032 + EnumValue38033 + EnumValue38034 + EnumValue38035 + EnumValue38036 + EnumValue38037 + EnumValue38038 + EnumValue38039 + EnumValue38040 + EnumValue38041 + EnumValue38042 + EnumValue38043 + EnumValue38044 + EnumValue38045 + EnumValue38046 + EnumValue38047 + EnumValue38048 + EnumValue38049 + EnumValue38050 + EnumValue38051 + EnumValue38052 + EnumValue38053 + EnumValue38054 + EnumValue38055 + EnumValue38056 + EnumValue38057 + EnumValue38058 + EnumValue38059 + EnumValue38060 + EnumValue38061 + EnumValue38062 + EnumValue38063 + EnumValue38064 + EnumValue38065 + EnumValue38066 + EnumValue38067 + EnumValue38068 + EnumValue38069 + EnumValue38070 + EnumValue38071 + EnumValue38072 + EnumValue38073 + EnumValue38074 + EnumValue38075 + EnumValue38076 + EnumValue38077 + EnumValue38078 + EnumValue38079 + EnumValue38080 + EnumValue38081 + EnumValue38082 + EnumValue38083 + EnumValue38084 + EnumValue38085 + EnumValue38086 + EnumValue38087 + EnumValue38088 + EnumValue38089 + EnumValue38090 + EnumValue38091 + EnumValue38092 + EnumValue38093 + EnumValue38094 + EnumValue38095 + EnumValue38096 + EnumValue38097 + EnumValue38098 + EnumValue38099 + EnumValue38100 + EnumValue38101 + EnumValue38102 + EnumValue38103 + EnumValue38104 + EnumValue38105 + EnumValue38106 + EnumValue38107 + EnumValue38108 + EnumValue38109 + EnumValue38110 + EnumValue38111 + EnumValue38112 + EnumValue38113 + EnumValue38114 + EnumValue38115 + EnumValue38116 + EnumValue38117 + EnumValue38118 + EnumValue38119 + EnumValue38120 + EnumValue38121 + EnumValue38122 + EnumValue38123 + EnumValue38124 + EnumValue38125 + EnumValue38126 + EnumValue38127 + EnumValue38128 + EnumValue38129 + EnumValue38130 + EnumValue38131 + EnumValue38132 + EnumValue38133 + EnumValue38134 + EnumValue38135 + EnumValue38136 + EnumValue38137 + EnumValue38138 + EnumValue38139 + EnumValue38140 + EnumValue38141 + EnumValue38142 + EnumValue38143 + EnumValue38144 + EnumValue38145 + EnumValue38146 + EnumValue38147 + EnumValue38148 + EnumValue38149 + EnumValue38150 + EnumValue38151 + EnumValue38152 + EnumValue38153 + EnumValue38154 + EnumValue38155 + EnumValue38156 + EnumValue38157 + EnumValue38158 + EnumValue38159 + EnumValue38160 + EnumValue38161 + EnumValue38162 + EnumValue38163 + EnumValue38164 + EnumValue38165 + EnumValue38166 + EnumValue38167 + EnumValue38168 + EnumValue38169 + EnumValue38170 + EnumValue38171 + EnumValue38172 + EnumValue38173 + EnumValue38174 + EnumValue38175 + EnumValue38176 + EnumValue38177 + EnumValue38178 + EnumValue38179 + EnumValue38180 + EnumValue38181 + EnumValue38182 + EnumValue38183 + EnumValue38184 + EnumValue38185 + EnumValue38186 + EnumValue38187 + EnumValue38188 + EnumValue38189 + EnumValue38190 + EnumValue38191 + EnumValue38192 + EnumValue38193 + EnumValue38194 + EnumValue38195 + EnumValue38196 + EnumValue38197 + EnumValue38198 + EnumValue38199 + EnumValue38200 + EnumValue38201 + EnumValue38202 + EnumValue38203 + EnumValue38204 + EnumValue38205 + EnumValue38206 + EnumValue38207 + EnumValue38208 + EnumValue38209 + EnumValue38210 + EnumValue38211 + EnumValue38212 + EnumValue38213 + EnumValue38214 + EnumValue38215 + EnumValue38216 + EnumValue38217 + EnumValue38218 + EnumValue38219 + EnumValue38220 + EnumValue38221 + EnumValue38222 + EnumValue38223 + EnumValue38224 + EnumValue38225 + EnumValue38226 + EnumValue38227 + EnumValue38228 + EnumValue38229 + EnumValue38230 + EnumValue38231 + EnumValue38232 + EnumValue38233 + EnumValue38234 + EnumValue38235 + EnumValue38236 + EnumValue38237 + EnumValue38238 + EnumValue38239 + EnumValue38240 + EnumValue38241 + EnumValue38242 + EnumValue38243 + EnumValue38244 + EnumValue38245 + EnumValue38246 + EnumValue38247 + EnumValue38248 + EnumValue38249 + EnumValue38250 + EnumValue38251 + EnumValue38252 + EnumValue38253 + EnumValue38254 + EnumValue38255 + EnumValue38256 + EnumValue38257 + EnumValue38258 + EnumValue38259 + EnumValue38260 + EnumValue38261 + EnumValue38262 + EnumValue38263 + EnumValue38264 + EnumValue38265 + EnumValue38266 + EnumValue38267 + EnumValue38268 + EnumValue38269 + EnumValue38270 + EnumValue38271 + EnumValue38272 + EnumValue38273 + EnumValue38274 + EnumValue38275 + EnumValue38276 + EnumValue38277 + EnumValue38278 + EnumValue38279 + EnumValue38280 + EnumValue38281 + EnumValue38282 + EnumValue38283 + EnumValue38284 + EnumValue38285 + EnumValue38286 + EnumValue38287 + EnumValue38288 + EnumValue38289 + EnumValue38290 + EnumValue38291 + EnumValue38292 + EnumValue38293 + EnumValue38294 + EnumValue38295 + EnumValue38296 + EnumValue38297 + EnumValue38298 + EnumValue38299 + EnumValue38300 + EnumValue38301 + EnumValue38302 + EnumValue38303 + EnumValue38304 + EnumValue38305 + EnumValue38306 + EnumValue38307 + EnumValue38308 + EnumValue38309 + EnumValue38310 + EnumValue38311 + EnumValue38312 + EnumValue38313 + EnumValue38314 + EnumValue38315 + EnumValue38316 + EnumValue38317 + EnumValue38318 + EnumValue38319 + EnumValue38320 + EnumValue38321 + EnumValue38322 + EnumValue38323 + EnumValue38324 + EnumValue38325 + EnumValue38326 + EnumValue38327 + EnumValue38328 + EnumValue38329 + EnumValue38330 + EnumValue38331 + EnumValue38332 + EnumValue38333 + EnumValue38334 + EnumValue38335 + EnumValue38336 + EnumValue38337 + EnumValue38338 + EnumValue38339 + EnumValue38340 + EnumValue38341 + EnumValue38342 + EnumValue38343 + EnumValue38344 + EnumValue38345 + EnumValue38346 + EnumValue38347 + EnumValue38348 + EnumValue38349 + EnumValue38350 + EnumValue38351 + EnumValue38352 + EnumValue38353 + EnumValue38354 + EnumValue38355 + EnumValue38356 + EnumValue38357 + EnumValue38358 + EnumValue38359 + EnumValue38360 + EnumValue38361 + EnumValue38362 + EnumValue38363 + EnumValue38364 + EnumValue38365 + EnumValue38366 + EnumValue38367 + EnumValue38368 + EnumValue38369 + EnumValue38370 + EnumValue38371 + EnumValue38372 + EnumValue38373 + EnumValue38374 + EnumValue38375 + EnumValue38376 + EnumValue38377 + EnumValue38378 + EnumValue38379 + EnumValue38380 + EnumValue38381 + EnumValue38382 + EnumValue38383 + EnumValue38384 + EnumValue38385 + EnumValue38386 + EnumValue38387 + EnumValue38388 + EnumValue38389 + EnumValue38390 + EnumValue38391 + EnumValue38392 + EnumValue38393 + EnumValue38394 + EnumValue38395 + EnumValue38396 + EnumValue38397 + EnumValue38398 + EnumValue38399 + EnumValue38400 + EnumValue38401 + EnumValue38402 + EnumValue38403 + EnumValue38404 + EnumValue38405 + EnumValue38406 + EnumValue38407 + EnumValue38408 + EnumValue38409 + EnumValue38410 + EnumValue38411 + EnumValue38412 + EnumValue38413 + EnumValue38414 + EnumValue38415 + EnumValue38416 + EnumValue38417 + EnumValue38418 + EnumValue38419 + EnumValue38420 + EnumValue38421 + EnumValue38422 + EnumValue38423 + EnumValue38424 + EnumValue38425 + EnumValue38426 + EnumValue38427 + EnumValue38428 + EnumValue38429 + EnumValue38430 + EnumValue38431 + EnumValue38432 + EnumValue38433 + EnumValue38434 + EnumValue38435 + EnumValue38436 + EnumValue38437 + EnumValue38438 + EnumValue38439 + EnumValue38440 + EnumValue38441 + EnumValue38442 + EnumValue38443 + EnumValue38444 + EnumValue38445 + EnumValue38446 + EnumValue38447 + EnumValue38448 + EnumValue38449 + EnumValue38450 + EnumValue38451 + EnumValue38452 + EnumValue38453 + EnumValue38454 + EnumValue38455 + EnumValue38456 + EnumValue38457 + EnumValue38458 + EnumValue38459 + EnumValue38460 + EnumValue38461 + EnumValue38462 + EnumValue38463 + EnumValue38464 + EnumValue38465 + EnumValue38466 + EnumValue38467 + EnumValue38468 + EnumValue38469 + EnumValue38470 + EnumValue38471 + EnumValue38472 + EnumValue38473 + EnumValue38474 + EnumValue38475 + EnumValue38476 + EnumValue38477 + EnumValue38478 + EnumValue38479 + EnumValue38480 + EnumValue38481 + EnumValue38482 + EnumValue38483 + EnumValue38484 + EnumValue38485 + EnumValue38486 + EnumValue38487 + EnumValue38488 + EnumValue38489 + EnumValue38490 + EnumValue38491 + EnumValue38492 + EnumValue38493 + EnumValue38494 + EnumValue38495 + EnumValue38496 + EnumValue38497 + EnumValue38498 + EnumValue38499 + EnumValue38500 + EnumValue38501 + EnumValue38502 + EnumValue38503 + EnumValue38504 + EnumValue38505 + EnumValue38506 + EnumValue38507 + EnumValue38508 + EnumValue38509 + EnumValue38510 + EnumValue38511 + EnumValue38512 + EnumValue38513 + EnumValue38514 + EnumValue38515 + EnumValue38516 + EnumValue38517 + EnumValue38518 + EnumValue38519 + EnumValue38520 + EnumValue38521 + EnumValue38522 + EnumValue38523 + EnumValue38524 + EnumValue38525 + EnumValue38526 + EnumValue38527 + EnumValue38528 + EnumValue38529 + EnumValue38530 + EnumValue38531 + EnumValue38532 + EnumValue38533 + EnumValue38534 + EnumValue38535 + EnumValue38536 + EnumValue38537 + EnumValue38538 + EnumValue38539 + EnumValue38540 + EnumValue38541 + EnumValue38542 + EnumValue38543 + EnumValue38544 + EnumValue38545 + EnumValue38546 + EnumValue38547 + EnumValue38548 + EnumValue38549 + EnumValue38550 + EnumValue38551 + EnumValue38552 + EnumValue38553 + EnumValue38554 + EnumValue38555 + EnumValue38556 + EnumValue38557 + EnumValue38558 + EnumValue38559 + EnumValue38560 + EnumValue38561 + EnumValue38562 + EnumValue38563 + EnumValue38564 + EnumValue38565 + EnumValue38566 + EnumValue38567 + EnumValue38568 + EnumValue38569 + EnumValue38570 + EnumValue38571 + EnumValue38572 + EnumValue38573 + EnumValue38574 + EnumValue38575 + EnumValue38576 + EnumValue38577 + EnumValue38578 + EnumValue38579 + EnumValue38580 + EnumValue38581 + EnumValue38582 + EnumValue38583 + EnumValue38584 + EnumValue38585 + EnumValue38586 + EnumValue38587 + EnumValue38588 + EnumValue38589 + EnumValue38590 + EnumValue38591 + EnumValue38592 + EnumValue38593 + EnumValue38594 + EnumValue38595 + EnumValue38596 + EnumValue38597 + EnumValue38598 +} + +enum Enum2418 @Directive44(argument97 : ["stringValue42652"]) { + EnumValue38599 + EnumValue38600 + EnumValue38601 + EnumValue38602 + EnumValue38603 + EnumValue38604 + EnumValue38605 + EnumValue38606 + EnumValue38607 + EnumValue38608 + EnumValue38609 + EnumValue38610 + EnumValue38611 + EnumValue38612 + EnumValue38613 + EnumValue38614 + EnumValue38615 + EnumValue38616 + EnumValue38617 + EnumValue38618 + EnumValue38619 + EnumValue38620 + EnumValue38621 + EnumValue38622 + EnumValue38623 + EnumValue38624 + EnumValue38625 + EnumValue38626 + EnumValue38627 + EnumValue38628 + EnumValue38629 + EnumValue38630 + EnumValue38631 + EnumValue38632 + EnumValue38633 + EnumValue38634 + EnumValue38635 + EnumValue38636 + EnumValue38637 + EnumValue38638 + EnumValue38639 + EnumValue38640 + EnumValue38641 + EnumValue38642 + EnumValue38643 + EnumValue38644 + EnumValue38645 + EnumValue38646 + EnumValue38647 + EnumValue38648 + EnumValue38649 + EnumValue38650 + EnumValue38651 + EnumValue38652 + EnumValue38653 + EnumValue38654 + EnumValue38655 + EnumValue38656 + EnumValue38657 + EnumValue38658 + EnumValue38659 + EnumValue38660 + EnumValue38661 + EnumValue38662 + EnumValue38663 + EnumValue38664 + EnumValue38665 + EnumValue38666 + EnumValue38667 + EnumValue38668 +} + +enum Enum2419 @Directive44(argument97 : ["stringValue42653"]) { + EnumValue38669 + EnumValue38670 + EnumValue38671 + EnumValue38672 + EnumValue38673 + EnumValue38674 + EnumValue38675 + EnumValue38676 + EnumValue38677 + EnumValue38678 + EnumValue38679 + EnumValue38680 + EnumValue38681 +} + +enum Enum242 @Directive22(argument62 : "stringValue4305") @Directive44(argument97 : ["stringValue4306", "stringValue4307"]) { + EnumValue4924 + EnumValue4925 + EnumValue4926 +} + +enum Enum2420 @Directive44(argument97 : ["stringValue42654"]) { + EnumValue38682 + EnumValue38683 + EnumValue38684 + EnumValue38685 + EnumValue38686 + EnumValue38687 + EnumValue38688 +} + +enum Enum2421 @Directive44(argument97 : ["stringValue42655"]) { + EnumValue38689 + EnumValue38690 + EnumValue38691 +} + +enum Enum2422 @Directive44(argument97 : ["stringValue42656"]) { + EnumValue38692 + EnumValue38693 + EnumValue38694 + EnumValue38695 + EnumValue38696 + EnumValue38697 + EnumValue38698 + EnumValue38699 + EnumValue38700 + EnumValue38701 + EnumValue38702 + EnumValue38703 + EnumValue38704 + EnumValue38705 + EnumValue38706 +} + +enum Enum2423 @Directive44(argument97 : ["stringValue42657"]) { + EnumValue38707 + EnumValue38708 + EnumValue38709 + EnumValue38710 + EnumValue38711 + EnumValue38712 + EnumValue38713 + EnumValue38714 +} + +enum Enum2424 @Directive44(argument97 : ["stringValue42660"]) { + EnumValue38715 + EnumValue38716 + EnumValue38717 + EnumValue38718 +} + +enum Enum2425 @Directive44(argument97 : ["stringValue42663"]) { + EnumValue38719 + EnumValue38720 + EnumValue38721 + EnumValue38722 + EnumValue38723 + EnumValue38724 + EnumValue38725 + EnumValue38726 +} + +enum Enum2426 @Directive44(argument97 : ["stringValue42690"]) { + EnumValue38727 + EnumValue38728 + EnumValue38729 + EnumValue38730 + EnumValue38731 +} + +enum Enum2427 @Directive44(argument97 : ["stringValue42697"]) { + EnumValue38732 + EnumValue38733 + EnumValue38734 + EnumValue38735 + EnumValue38736 + EnumValue38737 + EnumValue38738 + EnumValue38739 + EnumValue38740 + EnumValue38741 + EnumValue38742 + EnumValue38743 + EnumValue38744 + EnumValue38745 + EnumValue38746 + EnumValue38747 + EnumValue38748 +} + +enum Enum2428 @Directive44(argument97 : ["stringValue42702"]) { + EnumValue38749 + EnumValue38750 + EnumValue38751 + EnumValue38752 + EnumValue38753 + EnumValue38754 + EnumValue38755 + EnumValue38756 + EnumValue38757 + EnumValue38758 + EnumValue38759 + EnumValue38760 + EnumValue38761 + EnumValue38762 + EnumValue38763 + EnumValue38764 + EnumValue38765 +} + +enum Enum2429 @Directive44(argument97 : ["stringValue42705"]) { + EnumValue38766 + EnumValue38767 + EnumValue38768 +} + +enum Enum243 @Directive22(argument62 : "stringValue4311") @Directive44(argument97 : ["stringValue4312", "stringValue4313"]) { + EnumValue4927 +} + +enum Enum2430 @Directive44(argument97 : ["stringValue42710"]) { + EnumValue38769 + EnumValue38770 +} + +enum Enum2431 @Directive44(argument97 : ["stringValue42713"]) { + EnumValue38771 + EnumValue38772 +} + +enum Enum2432 @Directive44(argument97 : ["stringValue42716"]) { + EnumValue38773 + EnumValue38774 + EnumValue38775 + EnumValue38776 +} + +enum Enum2433 @Directive44(argument97 : ["stringValue42719"]) { + EnumValue38777 + EnumValue38778 + EnumValue38779 + EnumValue38780 + EnumValue38781 + EnumValue38782 + EnumValue38783 +} + +enum Enum2434 @Directive44(argument97 : ["stringValue42720"]) { + EnumValue38784 + EnumValue38785 + EnumValue38786 + EnumValue38787 + EnumValue38788 + EnumValue38789 + EnumValue38790 + EnumValue38791 + EnumValue38792 + EnumValue38793 + EnumValue38794 +} + +enum Enum2435 @Directive44(argument97 : ["stringValue42734"]) { + EnumValue38795 + EnumValue38796 + EnumValue38797 + EnumValue38798 + EnumValue38799 + EnumValue38800 + EnumValue38801 + EnumValue38802 + EnumValue38803 + EnumValue38804 + EnumValue38805 + EnumValue38806 + EnumValue38807 + EnumValue38808 + EnumValue38809 + EnumValue38810 + EnumValue38811 + EnumValue38812 + EnumValue38813 + EnumValue38814 + EnumValue38815 + EnumValue38816 + EnumValue38817 + EnumValue38818 + EnumValue38819 + EnumValue38820 + EnumValue38821 + EnumValue38822 + EnumValue38823 + EnumValue38824 + EnumValue38825 + EnumValue38826 + EnumValue38827 + EnumValue38828 + EnumValue38829 + EnumValue38830 + EnumValue38831 + EnumValue38832 + EnumValue38833 + EnumValue38834 + EnumValue38835 + EnumValue38836 + EnumValue38837 + EnumValue38838 + EnumValue38839 + EnumValue38840 + EnumValue38841 + EnumValue38842 + EnumValue38843 + EnumValue38844 + EnumValue38845 + EnumValue38846 + EnumValue38847 + EnumValue38848 + EnumValue38849 + EnumValue38850 + EnumValue38851 + EnumValue38852 + EnumValue38853 + EnumValue38854 + EnumValue38855 + EnumValue38856 + EnumValue38857 + EnumValue38858 + EnumValue38859 + EnumValue38860 + EnumValue38861 + EnumValue38862 + EnumValue38863 + EnumValue38864 + EnumValue38865 + EnumValue38866 + EnumValue38867 + EnumValue38868 + EnumValue38869 + EnumValue38870 +} + +enum Enum2436 @Directive44(argument97 : ["stringValue42735"]) { + EnumValue38871 + EnumValue38872 + EnumValue38873 + EnumValue38874 + EnumValue38875 + EnumValue38876 + EnumValue38877 + EnumValue38878 + EnumValue38879 + EnumValue38880 + EnumValue38881 + EnumValue38882 + EnumValue38883 + EnumValue38884 + EnumValue38885 + EnumValue38886 + EnumValue38887 + EnumValue38888 + EnumValue38889 + EnumValue38890 + EnumValue38891 + EnumValue38892 + EnumValue38893 + EnumValue38894 + EnumValue38895 + EnumValue38896 + EnumValue38897 + EnumValue38898 + EnumValue38899 + EnumValue38900 + EnumValue38901 + EnumValue38902 + EnumValue38903 + EnumValue38904 + EnumValue38905 + EnumValue38906 + EnumValue38907 + EnumValue38908 + EnumValue38909 + EnumValue38910 + EnumValue38911 + EnumValue38912 + EnumValue38913 + EnumValue38914 + EnumValue38915 + EnumValue38916 + EnumValue38917 + EnumValue38918 + EnumValue38919 + EnumValue38920 + EnumValue38921 +} + +enum Enum2437 @Directive44(argument97 : ["stringValue42823"]) { + EnumValue38922 + EnumValue38923 + EnumValue38924 +} + +enum Enum2438 @Directive44(argument97 : ["stringValue42869"]) { + EnumValue38925 + EnumValue38926 +} + +enum Enum2439 @Directive44(argument97 : ["stringValue42889"]) { + EnumValue38927 + EnumValue38928 + EnumValue38929 + EnumValue38930 + EnumValue38931 + EnumValue38932 + EnumValue38933 + EnumValue38934 + EnumValue38935 + EnumValue38936 + EnumValue38937 + EnumValue38938 +} + +enum Enum244 @Directive19(argument57 : "stringValue4346") @Directive22(argument62 : "stringValue4345") @Directive44(argument97 : ["stringValue4347", "stringValue4348"]) { + EnumValue4928 + EnumValue4929 + EnumValue4930 +} + +enum Enum2440 @Directive44(argument97 : ["stringValue42934"]) { + EnumValue38939 + EnumValue38940 + EnumValue38941 + EnumValue38942 + EnumValue38943 +} + +enum Enum2441 @Directive44(argument97 : ["stringValue42939"]) { + EnumValue38944 + EnumValue38945 + EnumValue38946 + EnumValue38947 + EnumValue38948 + EnumValue38949 + EnumValue38950 + EnumValue38951 + EnumValue38952 + EnumValue38953 + EnumValue38954 + EnumValue38955 +} + +enum Enum2442 @Directive44(argument97 : ["stringValue42964"]) { + EnumValue38956 + EnumValue38957 + EnumValue38958 + EnumValue38959 + EnumValue38960 + EnumValue38961 +} + +enum Enum2443 @Directive44(argument97 : ["stringValue43025"]) { + EnumValue38962 + EnumValue38963 + EnumValue38964 +} + +enum Enum2444 @Directive44(argument97 : ["stringValue43040"]) { + EnumValue38965 + EnumValue38966 + EnumValue38967 + EnumValue38968 +} + +enum Enum2445 @Directive44(argument97 : ["stringValue43041"]) { + EnumValue38969 + EnumValue38970 + EnumValue38971 + EnumValue38972 +} + +enum Enum2446 @Directive44(argument97 : ["stringValue43059"]) { + EnumValue38973 + EnumValue38974 + EnumValue38975 +} + +enum Enum2447 @Directive44(argument97 : ["stringValue43082"]) { + EnumValue38976 + EnumValue38977 + EnumValue38978 + EnumValue38979 +} + +enum Enum2448 @Directive44(argument97 : ["stringValue43083"]) { + EnumValue38980 + EnumValue38981 + EnumValue38982 +} + +enum Enum2449 @Directive44(argument97 : ["stringValue43084"]) { + EnumValue38983 + EnumValue38984 + EnumValue38985 + EnumValue38986 + EnumValue38987 + EnumValue38988 +} + +enum Enum245 @Directive19(argument57 : "stringValue4354") @Directive22(argument62 : "stringValue4353") @Directive44(argument97 : ["stringValue4355", "stringValue4356"]) { + EnumValue4931 + EnumValue4932 +} + +enum Enum2450 @Directive44(argument97 : ["stringValue43085"]) { + EnumValue38989 + EnumValue38990 + EnumValue38991 + EnumValue38992 + EnumValue38993 + EnumValue38994 + EnumValue38995 + EnumValue38996 + EnumValue38997 + EnumValue38998 + EnumValue38999 +} + +enum Enum2451 @Directive44(argument97 : ["stringValue43087"]) { + EnumValue39000 + EnumValue39001 + EnumValue39002 + EnumValue39003 + EnumValue39004 + EnumValue39005 + EnumValue39006 + EnumValue39007 + EnumValue39008 + EnumValue39009 +} + +enum Enum2452 @Directive44(argument97 : ["stringValue43088"]) { + EnumValue39010 + EnumValue39011 + EnumValue39012 + EnumValue39013 + EnumValue39014 + EnumValue39015 + EnumValue39016 + EnumValue39017 + EnumValue39018 + EnumValue39019 + EnumValue39020 + EnumValue39021 + EnumValue39022 + EnumValue39023 + EnumValue39024 + EnumValue39025 + EnumValue39026 + EnumValue39027 + EnumValue39028 + EnumValue39029 + EnumValue39030 + EnumValue39031 + EnumValue39032 + EnumValue39033 + EnumValue39034 + EnumValue39035 + EnumValue39036 + EnumValue39037 + EnumValue39038 + EnumValue39039 + EnumValue39040 + EnumValue39041 +} + +enum Enum2453 @Directive44(argument97 : ["stringValue43091"]) { + EnumValue39042 + EnumValue39043 + EnumValue39044 + EnumValue39045 + EnumValue39046 + EnumValue39047 + EnumValue39048 + EnumValue39049 + EnumValue39050 + EnumValue39051 +} + +enum Enum2454 @Directive44(argument97 : ["stringValue43092"]) { + EnumValue39052 + EnumValue39053 + EnumValue39054 +} + +enum Enum2455 @Directive44(argument97 : ["stringValue43093"]) { + EnumValue39055 + EnumValue39056 + EnumValue39057 + EnumValue39058 + EnumValue39059 + EnumValue39060 + EnumValue39061 + EnumValue39062 +} + +enum Enum2456 @Directive44(argument97 : ["stringValue43094"]) { + EnumValue39063 + EnumValue39064 + EnumValue39065 + EnumValue39066 + EnumValue39067 +} + +enum Enum2457 @Directive44(argument97 : ["stringValue43095"]) { + EnumValue39068 + EnumValue39069 + EnumValue39070 + EnumValue39071 +} + +enum Enum2458 @Directive44(argument97 : ["stringValue43096"]) { + EnumValue39072 + EnumValue39073 + EnumValue39074 +} + +enum Enum2459 @Directive44(argument97 : ["stringValue43097"]) { + EnumValue39075 + EnumValue39076 + EnumValue39077 + EnumValue39078 +} + +enum Enum246 @Directive19(argument57 : "stringValue4400") @Directive22(argument62 : "stringValue4399") @Directive44(argument97 : ["stringValue4401", "stringValue4402"]) { + EnumValue4933 + EnumValue4934 + EnumValue4935 +} + +enum Enum2460 @Directive44(argument97 : ["stringValue43098"]) { + EnumValue39079 + EnumValue39080 + EnumValue39081 + EnumValue39082 +} + +enum Enum2461 @Directive44(argument97 : ["stringValue43099"]) { + EnumValue39083 + EnumValue39084 + EnumValue39085 + EnumValue39086 + EnumValue39087 +} + +enum Enum2462 @Directive44(argument97 : ["stringValue43100"]) { + EnumValue39088 + EnumValue39089 + EnumValue39090 + EnumValue39091 + EnumValue39092 + EnumValue39093 +} + +enum Enum2463 @Directive44(argument97 : ["stringValue43110"]) { + EnumValue39094 + EnumValue39095 + EnumValue39096 + EnumValue39097 + EnumValue39098 + EnumValue39099 + EnumValue39100 + EnumValue39101 + EnumValue39102 + EnumValue39103 + EnumValue39104 + EnumValue39105 + EnumValue39106 + EnumValue39107 + EnumValue39108 + EnumValue39109 + EnumValue39110 +} + +enum Enum2464 @Directive44(argument97 : ["stringValue43111"]) { + EnumValue39111 + EnumValue39112 + EnumValue39113 +} + +enum Enum2465 @Directive44(argument97 : ["stringValue43112"]) { + EnumValue39114 + EnumValue39115 + EnumValue39116 + EnumValue39117 + EnumValue39118 + EnumValue39119 +} + +enum Enum2466 @Directive44(argument97 : ["stringValue43115"]) { + EnumValue39120 + EnumValue39121 + EnumValue39122 + EnumValue39123 + EnumValue39124 + EnumValue39125 + EnumValue39126 + EnumValue39127 + EnumValue39128 + EnumValue39129 + EnumValue39130 + EnumValue39131 + EnumValue39132 + EnumValue39133 + EnumValue39134 + EnumValue39135 + EnumValue39136 + EnumValue39137 + EnumValue39138 + EnumValue39139 + EnumValue39140 + EnumValue39141 + EnumValue39142 + EnumValue39143 + EnumValue39144 + EnumValue39145 + EnumValue39146 + EnumValue39147 + EnumValue39148 + EnumValue39149 + EnumValue39150 + EnumValue39151 + EnumValue39152 + EnumValue39153 + EnumValue39154 + EnumValue39155 + EnumValue39156 + EnumValue39157 + EnumValue39158 + EnumValue39159 + EnumValue39160 + EnumValue39161 + EnumValue39162 + EnumValue39163 + EnumValue39164 + EnumValue39165 + EnumValue39166 + EnumValue39167 + EnumValue39168 + EnumValue39169 + EnumValue39170 + EnumValue39171 +} + +enum Enum2467 @Directive44(argument97 : ["stringValue43116"]) { + EnumValue39172 + EnumValue39173 + EnumValue39174 + EnumValue39175 + EnumValue39176 + EnumValue39177 + EnumValue39178 + EnumValue39179 + EnumValue39180 + EnumValue39181 + EnumValue39182 + EnumValue39183 + EnumValue39184 + EnumValue39185 + EnumValue39186 + EnumValue39187 + EnumValue39188 + EnumValue39189 + EnumValue39190 + EnumValue39191 + EnumValue39192 + EnumValue39193 + EnumValue39194 + EnumValue39195 + EnumValue39196 + EnumValue39197 + EnumValue39198 + EnumValue39199 + EnumValue39200 + EnumValue39201 + EnumValue39202 + EnumValue39203 + EnumValue39204 + EnumValue39205 + EnumValue39206 + EnumValue39207 + EnumValue39208 + EnumValue39209 + EnumValue39210 + EnumValue39211 + EnumValue39212 + EnumValue39213 + EnumValue39214 + EnumValue39215 + EnumValue39216 + EnumValue39217 + EnumValue39218 + EnumValue39219 + EnumValue39220 + EnumValue39221 + EnumValue39222 + EnumValue39223 + EnumValue39224 + EnumValue39225 + EnumValue39226 + EnumValue39227 + EnumValue39228 + EnumValue39229 + EnumValue39230 + EnumValue39231 + EnumValue39232 + EnumValue39233 + EnumValue39234 + EnumValue39235 + EnumValue39236 + EnumValue39237 + EnumValue39238 + EnumValue39239 + EnumValue39240 + EnumValue39241 + EnumValue39242 + EnumValue39243 + EnumValue39244 + EnumValue39245 + EnumValue39246 + EnumValue39247 + EnumValue39248 + EnumValue39249 + EnumValue39250 + EnumValue39251 + EnumValue39252 + EnumValue39253 + EnumValue39254 + EnumValue39255 + EnumValue39256 + EnumValue39257 + EnumValue39258 + EnumValue39259 + EnumValue39260 + EnumValue39261 + EnumValue39262 + EnumValue39263 + EnumValue39264 + EnumValue39265 + EnumValue39266 + EnumValue39267 + EnumValue39268 + EnumValue39269 + EnumValue39270 + EnumValue39271 + EnumValue39272 + EnumValue39273 + EnumValue39274 + EnumValue39275 + EnumValue39276 + EnumValue39277 + EnumValue39278 + EnumValue39279 + EnumValue39280 + EnumValue39281 + EnumValue39282 + EnumValue39283 + EnumValue39284 + EnumValue39285 + EnumValue39286 + EnumValue39287 + EnumValue39288 + EnumValue39289 + EnumValue39290 + EnumValue39291 + EnumValue39292 + EnumValue39293 + EnumValue39294 + EnumValue39295 + EnumValue39296 + EnumValue39297 + EnumValue39298 + EnumValue39299 + EnumValue39300 + EnumValue39301 + EnumValue39302 + EnumValue39303 + EnumValue39304 + EnumValue39305 + EnumValue39306 + EnumValue39307 + EnumValue39308 + EnumValue39309 + EnumValue39310 + EnumValue39311 + EnumValue39312 + EnumValue39313 + EnumValue39314 + EnumValue39315 + EnumValue39316 + EnumValue39317 + EnumValue39318 + EnumValue39319 + EnumValue39320 + EnumValue39321 + EnumValue39322 + EnumValue39323 + EnumValue39324 + EnumValue39325 + EnumValue39326 + EnumValue39327 + EnumValue39328 + EnumValue39329 + EnumValue39330 + EnumValue39331 + EnumValue39332 + EnumValue39333 + EnumValue39334 + EnumValue39335 + EnumValue39336 + EnumValue39337 + EnumValue39338 + EnumValue39339 + EnumValue39340 + EnumValue39341 + EnumValue39342 + EnumValue39343 + EnumValue39344 + EnumValue39345 + EnumValue39346 + EnumValue39347 + EnumValue39348 + EnumValue39349 + EnumValue39350 + EnumValue39351 + EnumValue39352 + EnumValue39353 + EnumValue39354 + EnumValue39355 + EnumValue39356 + EnumValue39357 + EnumValue39358 + EnumValue39359 + EnumValue39360 + EnumValue39361 + EnumValue39362 + EnumValue39363 + EnumValue39364 + EnumValue39365 + EnumValue39366 + EnumValue39367 + EnumValue39368 + EnumValue39369 + EnumValue39370 + EnumValue39371 + EnumValue39372 + EnumValue39373 + EnumValue39374 + EnumValue39375 + EnumValue39376 + EnumValue39377 + EnumValue39378 + EnumValue39379 + EnumValue39380 + EnumValue39381 + EnumValue39382 + EnumValue39383 + EnumValue39384 + EnumValue39385 + EnumValue39386 + EnumValue39387 + EnumValue39388 + EnumValue39389 + EnumValue39390 + EnumValue39391 + EnumValue39392 + EnumValue39393 + EnumValue39394 + EnumValue39395 + EnumValue39396 + EnumValue39397 + EnumValue39398 + EnumValue39399 + EnumValue39400 + EnumValue39401 + EnumValue39402 + EnumValue39403 + EnumValue39404 + EnumValue39405 + EnumValue39406 + EnumValue39407 + EnumValue39408 + EnumValue39409 + EnumValue39410 + EnumValue39411 + EnumValue39412 + EnumValue39413 + EnumValue39414 + EnumValue39415 + EnumValue39416 + EnumValue39417 + EnumValue39418 + EnumValue39419 + EnumValue39420 + EnumValue39421 + EnumValue39422 + EnumValue39423 + EnumValue39424 + EnumValue39425 + EnumValue39426 + EnumValue39427 + EnumValue39428 + EnumValue39429 + EnumValue39430 + EnumValue39431 + EnumValue39432 + EnumValue39433 + EnumValue39434 + EnumValue39435 + EnumValue39436 + EnumValue39437 + EnumValue39438 + EnumValue39439 + EnumValue39440 + EnumValue39441 + EnumValue39442 + EnumValue39443 + EnumValue39444 + EnumValue39445 + EnumValue39446 + EnumValue39447 + EnumValue39448 + EnumValue39449 + EnumValue39450 + EnumValue39451 + EnumValue39452 + EnumValue39453 + EnumValue39454 + EnumValue39455 + EnumValue39456 + EnumValue39457 + EnumValue39458 + EnumValue39459 + EnumValue39460 + EnumValue39461 + EnumValue39462 + EnumValue39463 + EnumValue39464 + EnumValue39465 + EnumValue39466 + EnumValue39467 + EnumValue39468 + EnumValue39469 + EnumValue39470 + EnumValue39471 + EnumValue39472 + EnumValue39473 + EnumValue39474 + EnumValue39475 + EnumValue39476 + EnumValue39477 + EnumValue39478 + EnumValue39479 + EnumValue39480 + EnumValue39481 + EnumValue39482 + EnumValue39483 + EnumValue39484 + EnumValue39485 + EnumValue39486 + EnumValue39487 + EnumValue39488 + EnumValue39489 + EnumValue39490 + EnumValue39491 + EnumValue39492 + EnumValue39493 + EnumValue39494 + EnumValue39495 + EnumValue39496 + EnumValue39497 + EnumValue39498 + EnumValue39499 + EnumValue39500 + EnumValue39501 + EnumValue39502 + EnumValue39503 + EnumValue39504 + EnumValue39505 + EnumValue39506 + EnumValue39507 + EnumValue39508 + EnumValue39509 + EnumValue39510 + EnumValue39511 + EnumValue39512 + EnumValue39513 + EnumValue39514 + EnumValue39515 + EnumValue39516 + EnumValue39517 + EnumValue39518 + EnumValue39519 + EnumValue39520 + EnumValue39521 + EnumValue39522 + EnumValue39523 + EnumValue39524 + EnumValue39525 + EnumValue39526 + EnumValue39527 + EnumValue39528 + EnumValue39529 + EnumValue39530 + EnumValue39531 + EnumValue39532 + EnumValue39533 + EnumValue39534 + EnumValue39535 + EnumValue39536 + EnumValue39537 + EnumValue39538 + EnumValue39539 + EnumValue39540 + EnumValue39541 + EnumValue39542 + EnumValue39543 + EnumValue39544 + EnumValue39545 + EnumValue39546 + EnumValue39547 + EnumValue39548 + EnumValue39549 + EnumValue39550 + EnumValue39551 + EnumValue39552 + EnumValue39553 + EnumValue39554 + EnumValue39555 + EnumValue39556 + EnumValue39557 + EnumValue39558 + EnumValue39559 + EnumValue39560 + EnumValue39561 + EnumValue39562 + EnumValue39563 + EnumValue39564 + EnumValue39565 + EnumValue39566 + EnumValue39567 + EnumValue39568 + EnumValue39569 + EnumValue39570 + EnumValue39571 + EnumValue39572 + EnumValue39573 + EnumValue39574 + EnumValue39575 + EnumValue39576 + EnumValue39577 + EnumValue39578 + EnumValue39579 + EnumValue39580 + EnumValue39581 + EnumValue39582 + EnumValue39583 + EnumValue39584 + EnumValue39585 + EnumValue39586 + EnumValue39587 + EnumValue39588 + EnumValue39589 + EnumValue39590 +} + +enum Enum2468 @Directive44(argument97 : ["stringValue43137"]) { + EnumValue39591 + EnumValue39592 + EnumValue39593 + EnumValue39594 + EnumValue39595 +} + +enum Enum2469 @Directive44(argument97 : ["stringValue43156"]) { + EnumValue39596 + EnumValue39597 + EnumValue39598 + EnumValue39599 + EnumValue39600 + EnumValue39601 + EnumValue39602 + EnumValue39603 + EnumValue39604 + EnumValue39605 + EnumValue39606 + EnumValue39607 + EnumValue39608 + EnumValue39609 + EnumValue39610 + EnumValue39611 + EnumValue39612 + EnumValue39613 + EnumValue39614 + EnumValue39615 + EnumValue39616 + EnumValue39617 + EnumValue39618 + EnumValue39619 + EnumValue39620 + EnumValue39621 + EnumValue39622 + EnumValue39623 + EnumValue39624 + EnumValue39625 + EnumValue39626 + EnumValue39627 + EnumValue39628 + EnumValue39629 + EnumValue39630 + EnumValue39631 + EnumValue39632 + EnumValue39633 + EnumValue39634 + EnumValue39635 + EnumValue39636 + EnumValue39637 + EnumValue39638 + EnumValue39639 + EnumValue39640 + EnumValue39641 + EnumValue39642 + EnumValue39643 + EnumValue39644 + EnumValue39645 + EnumValue39646 + EnumValue39647 + EnumValue39648 + EnumValue39649 + EnumValue39650 + EnumValue39651 + EnumValue39652 + EnumValue39653 + EnumValue39654 + EnumValue39655 + EnumValue39656 + EnumValue39657 + EnumValue39658 + EnumValue39659 + EnumValue39660 + EnumValue39661 + EnumValue39662 + EnumValue39663 + EnumValue39664 + EnumValue39665 + EnumValue39666 + EnumValue39667 + EnumValue39668 + EnumValue39669 + EnumValue39670 + EnumValue39671 + EnumValue39672 + EnumValue39673 + EnumValue39674 + EnumValue39675 + EnumValue39676 + EnumValue39677 + EnumValue39678 + EnumValue39679 + EnumValue39680 + EnumValue39681 + EnumValue39682 + EnumValue39683 + EnumValue39684 + EnumValue39685 + EnumValue39686 + EnumValue39687 + EnumValue39688 + EnumValue39689 + EnumValue39690 + EnumValue39691 + EnumValue39692 + EnumValue39693 + EnumValue39694 + EnumValue39695 + EnumValue39696 + EnumValue39697 + EnumValue39698 + EnumValue39699 + EnumValue39700 + EnumValue39701 + EnumValue39702 + EnumValue39703 + EnumValue39704 + EnumValue39705 + EnumValue39706 + EnumValue39707 + EnumValue39708 + EnumValue39709 + EnumValue39710 + EnumValue39711 + EnumValue39712 + EnumValue39713 + EnumValue39714 + EnumValue39715 + EnumValue39716 + EnumValue39717 + EnumValue39718 + EnumValue39719 + EnumValue39720 + EnumValue39721 + EnumValue39722 + EnumValue39723 + EnumValue39724 + EnumValue39725 + EnumValue39726 + EnumValue39727 + EnumValue39728 + EnumValue39729 + EnumValue39730 + EnumValue39731 + EnumValue39732 + EnumValue39733 + EnumValue39734 + EnumValue39735 + EnumValue39736 + EnumValue39737 + EnumValue39738 + EnumValue39739 + EnumValue39740 + EnumValue39741 + EnumValue39742 + EnumValue39743 + EnumValue39744 + EnumValue39745 + EnumValue39746 + EnumValue39747 + EnumValue39748 + EnumValue39749 + EnumValue39750 + EnumValue39751 + EnumValue39752 + EnumValue39753 + EnumValue39754 + EnumValue39755 + EnumValue39756 + EnumValue39757 + EnumValue39758 + EnumValue39759 + EnumValue39760 + EnumValue39761 + EnumValue39762 + EnumValue39763 + EnumValue39764 + EnumValue39765 + EnumValue39766 + EnumValue39767 + EnumValue39768 + EnumValue39769 + EnumValue39770 + EnumValue39771 + EnumValue39772 + EnumValue39773 + EnumValue39774 + EnumValue39775 + EnumValue39776 + EnumValue39777 + EnumValue39778 + EnumValue39779 + EnumValue39780 + EnumValue39781 + EnumValue39782 + EnumValue39783 + EnumValue39784 + EnumValue39785 + EnumValue39786 + EnumValue39787 + EnumValue39788 + EnumValue39789 + EnumValue39790 + EnumValue39791 + EnumValue39792 + EnumValue39793 + EnumValue39794 + EnumValue39795 + EnumValue39796 + EnumValue39797 + EnumValue39798 + EnumValue39799 + EnumValue39800 + EnumValue39801 + EnumValue39802 + EnumValue39803 + EnumValue39804 + EnumValue39805 + EnumValue39806 + EnumValue39807 + EnumValue39808 + EnumValue39809 + EnumValue39810 + EnumValue39811 + EnumValue39812 + EnumValue39813 + EnumValue39814 + EnumValue39815 + EnumValue39816 + EnumValue39817 + EnumValue39818 + EnumValue39819 + EnumValue39820 + EnumValue39821 + EnumValue39822 + EnumValue39823 + EnumValue39824 + EnumValue39825 + EnumValue39826 + EnumValue39827 + EnumValue39828 + EnumValue39829 + EnumValue39830 + EnumValue39831 + EnumValue39832 + EnumValue39833 + EnumValue39834 + EnumValue39835 + EnumValue39836 + EnumValue39837 + EnumValue39838 + EnumValue39839 + EnumValue39840 + EnumValue39841 + EnumValue39842 + EnumValue39843 + EnumValue39844 + EnumValue39845 + EnumValue39846 + EnumValue39847 + EnumValue39848 + EnumValue39849 + EnumValue39850 + EnumValue39851 + EnumValue39852 + EnumValue39853 + EnumValue39854 + EnumValue39855 + EnumValue39856 + EnumValue39857 + EnumValue39858 + EnumValue39859 + EnumValue39860 + EnumValue39861 + EnumValue39862 + EnumValue39863 + EnumValue39864 + EnumValue39865 + EnumValue39866 + EnumValue39867 + EnumValue39868 + EnumValue39869 + EnumValue39870 + EnumValue39871 + EnumValue39872 + EnumValue39873 + EnumValue39874 + EnumValue39875 + EnumValue39876 + EnumValue39877 + EnumValue39878 + EnumValue39879 + EnumValue39880 + EnumValue39881 + EnumValue39882 + EnumValue39883 + EnumValue39884 + EnumValue39885 + EnumValue39886 + EnumValue39887 + EnumValue39888 + EnumValue39889 + EnumValue39890 + EnumValue39891 + EnumValue39892 + EnumValue39893 + EnumValue39894 + EnumValue39895 + EnumValue39896 + EnumValue39897 + EnumValue39898 + EnumValue39899 + EnumValue39900 + EnumValue39901 + EnumValue39902 + EnumValue39903 + EnumValue39904 + EnumValue39905 + EnumValue39906 + EnumValue39907 + EnumValue39908 + EnumValue39909 + EnumValue39910 + EnumValue39911 + EnumValue39912 + EnumValue39913 + EnumValue39914 + EnumValue39915 + EnumValue39916 + EnumValue39917 + EnumValue39918 + EnumValue39919 + EnumValue39920 + EnumValue39921 + EnumValue39922 + EnumValue39923 + EnumValue39924 + EnumValue39925 + EnumValue39926 + EnumValue39927 + EnumValue39928 + EnumValue39929 + EnumValue39930 + EnumValue39931 + EnumValue39932 + EnumValue39933 + EnumValue39934 + EnumValue39935 + EnumValue39936 + EnumValue39937 + EnumValue39938 + EnumValue39939 + EnumValue39940 + EnumValue39941 + EnumValue39942 + EnumValue39943 + EnumValue39944 + EnumValue39945 + EnumValue39946 + EnumValue39947 + EnumValue39948 + EnumValue39949 + EnumValue39950 + EnumValue39951 + EnumValue39952 + EnumValue39953 + EnumValue39954 + EnumValue39955 + EnumValue39956 + EnumValue39957 + EnumValue39958 + EnumValue39959 + EnumValue39960 + EnumValue39961 + EnumValue39962 + EnumValue39963 + EnumValue39964 + EnumValue39965 + EnumValue39966 + EnumValue39967 + EnumValue39968 + EnumValue39969 + EnumValue39970 + EnumValue39971 + EnumValue39972 + EnumValue39973 + EnumValue39974 + EnumValue39975 + EnumValue39976 + EnumValue39977 + EnumValue39978 + EnumValue39979 + EnumValue39980 + EnumValue39981 + EnumValue39982 + EnumValue39983 + EnumValue39984 + EnumValue39985 + EnumValue39986 + EnumValue39987 + EnumValue39988 + EnumValue39989 + EnumValue39990 + EnumValue39991 + EnumValue39992 + EnumValue39993 + EnumValue39994 + EnumValue39995 + EnumValue39996 + EnumValue39997 + EnumValue39998 + EnumValue39999 + EnumValue40000 + EnumValue40001 + EnumValue40002 + EnumValue40003 + EnumValue40004 + EnumValue40005 + EnumValue40006 + EnumValue40007 + EnumValue40008 + EnumValue40009 + EnumValue40010 + EnumValue40011 + EnumValue40012 + EnumValue40013 + EnumValue40014 + EnumValue40015 + EnumValue40016 + EnumValue40017 + EnumValue40018 + EnumValue40019 + EnumValue40020 + EnumValue40021 + EnumValue40022 + EnumValue40023 + EnumValue40024 + EnumValue40025 + EnumValue40026 + EnumValue40027 + EnumValue40028 + EnumValue40029 + EnumValue40030 + EnumValue40031 + EnumValue40032 + EnumValue40033 + EnumValue40034 + EnumValue40035 + EnumValue40036 + EnumValue40037 + EnumValue40038 + EnumValue40039 + EnumValue40040 + EnumValue40041 + EnumValue40042 + EnumValue40043 + EnumValue40044 + EnumValue40045 + EnumValue40046 + EnumValue40047 + EnumValue40048 + EnumValue40049 + EnumValue40050 + EnumValue40051 + EnumValue40052 + EnumValue40053 + EnumValue40054 + EnumValue40055 + EnumValue40056 + EnumValue40057 + EnumValue40058 + EnumValue40059 + EnumValue40060 + EnumValue40061 + EnumValue40062 + EnumValue40063 + EnumValue40064 + EnumValue40065 + EnumValue40066 + EnumValue40067 + EnumValue40068 + EnumValue40069 + EnumValue40070 + EnumValue40071 + EnumValue40072 + EnumValue40073 + EnumValue40074 + EnumValue40075 + EnumValue40076 + EnumValue40077 + EnumValue40078 + EnumValue40079 + EnumValue40080 + EnumValue40081 + EnumValue40082 + EnumValue40083 + EnumValue40084 + EnumValue40085 + EnumValue40086 + EnumValue40087 + EnumValue40088 + EnumValue40089 + EnumValue40090 + EnumValue40091 + EnumValue40092 + EnumValue40093 + EnumValue40094 + EnumValue40095 + EnumValue40096 + EnumValue40097 + EnumValue40098 + EnumValue40099 + EnumValue40100 + EnumValue40101 + EnumValue40102 + EnumValue40103 + EnumValue40104 + EnumValue40105 + EnumValue40106 + EnumValue40107 + EnumValue40108 + EnumValue40109 + EnumValue40110 + EnumValue40111 + EnumValue40112 + EnumValue40113 + EnumValue40114 + EnumValue40115 + EnumValue40116 + EnumValue40117 + EnumValue40118 + EnumValue40119 + EnumValue40120 + EnumValue40121 + EnumValue40122 + EnumValue40123 + EnumValue40124 + EnumValue40125 + EnumValue40126 + EnumValue40127 + EnumValue40128 + EnumValue40129 + EnumValue40130 + EnumValue40131 + EnumValue40132 + EnumValue40133 + EnumValue40134 + EnumValue40135 + EnumValue40136 + EnumValue40137 + EnumValue40138 + EnumValue40139 + EnumValue40140 + EnumValue40141 + EnumValue40142 + EnumValue40143 + EnumValue40144 + EnumValue40145 + EnumValue40146 + EnumValue40147 + EnumValue40148 + EnumValue40149 + EnumValue40150 + EnumValue40151 + EnumValue40152 + EnumValue40153 + EnumValue40154 + EnumValue40155 + EnumValue40156 + EnumValue40157 + EnumValue40158 + EnumValue40159 + EnumValue40160 + EnumValue40161 + EnumValue40162 + EnumValue40163 + EnumValue40164 + EnumValue40165 + EnumValue40166 + EnumValue40167 + EnumValue40168 + EnumValue40169 + EnumValue40170 + EnumValue40171 + EnumValue40172 + EnumValue40173 + EnumValue40174 + EnumValue40175 + EnumValue40176 + EnumValue40177 + EnumValue40178 + EnumValue40179 + EnumValue40180 + EnumValue40181 + EnumValue40182 + EnumValue40183 + EnumValue40184 + EnumValue40185 + EnumValue40186 + EnumValue40187 + EnumValue40188 + EnumValue40189 + EnumValue40190 + EnumValue40191 + EnumValue40192 + EnumValue40193 + EnumValue40194 + EnumValue40195 + EnumValue40196 + EnumValue40197 + EnumValue40198 + EnumValue40199 + EnumValue40200 + EnumValue40201 + EnumValue40202 + EnumValue40203 + EnumValue40204 + EnumValue40205 + EnumValue40206 + EnumValue40207 + EnumValue40208 + EnumValue40209 + EnumValue40210 + EnumValue40211 + EnumValue40212 + EnumValue40213 + EnumValue40214 + EnumValue40215 + EnumValue40216 + EnumValue40217 + EnumValue40218 + EnumValue40219 + EnumValue40220 + EnumValue40221 + EnumValue40222 + EnumValue40223 + EnumValue40224 + EnumValue40225 + EnumValue40226 + EnumValue40227 + EnumValue40228 + EnumValue40229 + EnumValue40230 + EnumValue40231 + EnumValue40232 + EnumValue40233 + EnumValue40234 + EnumValue40235 + EnumValue40236 + EnumValue40237 + EnumValue40238 + EnumValue40239 + EnumValue40240 + EnumValue40241 + EnumValue40242 + EnumValue40243 + EnumValue40244 + EnumValue40245 + EnumValue40246 + EnumValue40247 + EnumValue40248 + EnumValue40249 + EnumValue40250 + EnumValue40251 + EnumValue40252 + EnumValue40253 + EnumValue40254 + EnumValue40255 + EnumValue40256 + EnumValue40257 + EnumValue40258 + EnumValue40259 + EnumValue40260 + EnumValue40261 + EnumValue40262 + EnumValue40263 + EnumValue40264 + EnumValue40265 + EnumValue40266 + EnumValue40267 + EnumValue40268 + EnumValue40269 + EnumValue40270 + EnumValue40271 + EnumValue40272 + EnumValue40273 + EnumValue40274 + EnumValue40275 + EnumValue40276 + EnumValue40277 + EnumValue40278 + EnumValue40279 + EnumValue40280 + EnumValue40281 + EnumValue40282 + EnumValue40283 + EnumValue40284 + EnumValue40285 + EnumValue40286 + EnumValue40287 + EnumValue40288 + EnumValue40289 + EnumValue40290 + EnumValue40291 + EnumValue40292 + EnumValue40293 + EnumValue40294 + EnumValue40295 + EnumValue40296 + EnumValue40297 + EnumValue40298 + EnumValue40299 +} + +enum Enum247 @Directive19(argument57 : "stringValue4479") @Directive22(argument62 : "stringValue4478") @Directive44(argument97 : ["stringValue4480", "stringValue4481"]) { + EnumValue4936 + EnumValue4937 + EnumValue4938 + EnumValue4939 + EnumValue4940 + EnumValue4941 + EnumValue4942 + EnumValue4943 + EnumValue4944 + EnumValue4945 + EnumValue4946 + EnumValue4947 + EnumValue4948 + EnumValue4949 + EnumValue4950 + EnumValue4951 + EnumValue4952 + EnumValue4953 + EnumValue4954 + EnumValue4955 + EnumValue4956 + EnumValue4957 + EnumValue4958 + EnumValue4959 + EnumValue4960 + EnumValue4961 + EnumValue4962 + EnumValue4963 + EnumValue4964 + EnumValue4965 + EnumValue4966 + EnumValue4967 + EnumValue4968 + EnumValue4969 + EnumValue4970 + EnumValue4971 + EnumValue4972 + EnumValue4973 + EnumValue4974 + EnumValue4975 +} + +enum Enum2470 @Directive44(argument97 : ["stringValue43161"]) { + EnumValue40300 + EnumValue40301 + EnumValue40302 + EnumValue40303 + EnumValue40304 + EnumValue40305 + EnumValue40306 + EnumValue40307 + EnumValue40308 + EnumValue40309 + EnumValue40310 + EnumValue40311 + EnumValue40312 + EnumValue40313 + EnumValue40314 + EnumValue40315 + EnumValue40316 + EnumValue40317 + EnumValue40318 + EnumValue40319 + EnumValue40320 + EnumValue40321 + EnumValue40322 + EnumValue40323 + EnumValue40324 + EnumValue40325 + EnumValue40326 + EnumValue40327 + EnumValue40328 + EnumValue40329 + EnumValue40330 + EnumValue40331 + EnumValue40332 + EnumValue40333 + EnumValue40334 + EnumValue40335 + EnumValue40336 +} + +enum Enum2471 @Directive44(argument97 : ["stringValue43168"]) { + EnumValue40337 + EnumValue40338 + EnumValue40339 + EnumValue40340 + EnumValue40341 + EnumValue40342 + EnumValue40343 + EnumValue40344 + EnumValue40345 + EnumValue40346 + EnumValue40347 + EnumValue40348 + EnumValue40349 + EnumValue40350 + EnumValue40351 + EnumValue40352 + EnumValue40353 + EnumValue40354 + EnumValue40355 + EnumValue40356 + EnumValue40357 + EnumValue40358 + EnumValue40359 + EnumValue40360 + EnumValue40361 + EnumValue40362 + EnumValue40363 + EnumValue40364 + EnumValue40365 + EnumValue40366 + EnumValue40367 + EnumValue40368 +} + +enum Enum2472 @Directive44(argument97 : ["stringValue43169"]) { + EnumValue40369 + EnumValue40370 + EnumValue40371 + EnumValue40372 + EnumValue40373 + EnumValue40374 + EnumValue40375 + EnumValue40376 + EnumValue40377 + EnumValue40378 + EnumValue40379 + EnumValue40380 + EnumValue40381 + EnumValue40382 + EnumValue40383 +} + +enum Enum2473 @Directive44(argument97 : ["stringValue43176"]) { + EnumValue40384 + EnumValue40385 + EnumValue40386 + EnumValue40387 + EnumValue40388 + EnumValue40389 + EnumValue40390 +} + +enum Enum2474 @Directive44(argument97 : ["stringValue43177"]) { + EnumValue40391 + EnumValue40392 + EnumValue40393 + EnumValue40394 + EnumValue40395 + EnumValue40396 + EnumValue40397 + EnumValue40398 + EnumValue40399 + EnumValue40400 + EnumValue40401 + EnumValue40402 + EnumValue40403 + EnumValue40404 + EnumValue40405 + EnumValue40406 + EnumValue40407 + EnumValue40408 + EnumValue40409 + EnumValue40410 + EnumValue40411 + EnumValue40412 + EnumValue40413 + EnumValue40414 + EnumValue40415 + EnumValue40416 + EnumValue40417 + EnumValue40418 + EnumValue40419 + EnumValue40420 + EnumValue40421 + EnumValue40422 + EnumValue40423 + EnumValue40424 + EnumValue40425 + EnumValue40426 + EnumValue40427 + EnumValue40428 + EnumValue40429 + EnumValue40430 + EnumValue40431 + EnumValue40432 + EnumValue40433 + EnumValue40434 + EnumValue40435 + EnumValue40436 + EnumValue40437 + EnumValue40438 + EnumValue40439 + EnumValue40440 + EnumValue40441 + EnumValue40442 + EnumValue40443 + EnumValue40444 + EnumValue40445 + EnumValue40446 + EnumValue40447 + EnumValue40448 + EnumValue40449 + EnumValue40450 + EnumValue40451 + EnumValue40452 + EnumValue40453 + EnumValue40454 + EnumValue40455 + EnumValue40456 + EnumValue40457 + EnumValue40458 + EnumValue40459 + EnumValue40460 + EnumValue40461 + EnumValue40462 +} + +enum Enum2475 @Directive44(argument97 : ["stringValue43178"]) { + EnumValue40463 + EnumValue40464 + EnumValue40465 + EnumValue40466 + EnumValue40467 +} + +enum Enum2476 @Directive44(argument97 : ["stringValue43183"]) { + EnumValue40468 + EnumValue40469 + EnumValue40470 + EnumValue40471 + EnumValue40472 + EnumValue40473 + EnumValue40474 + EnumValue40475 + EnumValue40476 + EnumValue40477 + EnumValue40478 + EnumValue40479 + EnumValue40480 + EnumValue40481 + EnumValue40482 + EnumValue40483 + EnumValue40484 + EnumValue40485 + EnumValue40486 + EnumValue40487 + EnumValue40488 + EnumValue40489 + EnumValue40490 + EnumValue40491 + EnumValue40492 + EnumValue40493 + EnumValue40494 + EnumValue40495 + EnumValue40496 + EnumValue40497 + EnumValue40498 + EnumValue40499 + EnumValue40500 + EnumValue40501 + EnumValue40502 + EnumValue40503 + EnumValue40504 + EnumValue40505 +} + +enum Enum2477 @Directive44(argument97 : ["stringValue43184"]) { + EnumValue40506 + EnumValue40507 + EnumValue40508 +} + +enum Enum2478 @Directive44(argument97 : ["stringValue43185"]) { + EnumValue40509 + EnumValue40510 + EnumValue40511 + EnumValue40512 + EnumValue40513 + EnumValue40514 + EnumValue40515 +} + +enum Enum2479 @Directive44(argument97 : ["stringValue43190"]) { + EnumValue40516 + EnumValue40517 + EnumValue40518 + EnumValue40519 + EnumValue40520 + EnumValue40521 + EnumValue40522 + EnumValue40523 + EnumValue40524 + EnumValue40525 + EnumValue40526 + EnumValue40527 + EnumValue40528 + EnumValue40529 + EnumValue40530 + EnumValue40531 + EnumValue40532 +} + +enum Enum248 @Directive19(argument57 : "stringValue4483") @Directive22(argument62 : "stringValue4482") @Directive44(argument97 : ["stringValue4484", "stringValue4485"]) { + EnumValue4976 + EnumValue4977 + EnumValue4978 + EnumValue4979 + EnumValue4980 + EnumValue4981 + EnumValue4982 + EnumValue4983 + EnumValue4984 + EnumValue4985 + EnumValue4986 + EnumValue4987 + EnumValue4988 + EnumValue4989 +} + +enum Enum2480 @Directive44(argument97 : ["stringValue43191"]) { + EnumValue40533 + EnumValue40534 + EnumValue40535 + EnumValue40536 +} + +enum Enum2481 @Directive44(argument97 : ["stringValue43196"]) { + EnumValue40537 + EnumValue40538 + EnumValue40539 +} + +enum Enum2482 @Directive44(argument97 : ["stringValue43201"]) { + EnumValue40540 + EnumValue40541 + EnumValue40542 + EnumValue40543 + EnumValue40544 + EnumValue40545 + EnumValue40546 + EnumValue40547 + EnumValue40548 +} + +enum Enum2483 @Directive44(argument97 : ["stringValue43206"]) { + EnumValue40549 + EnumValue40550 + EnumValue40551 + EnumValue40552 + EnumValue40553 + EnumValue40554 + EnumValue40555 + EnumValue40556 +} + +enum Enum2484 @Directive44(argument97 : ["stringValue43218"]) { + EnumValue40557 + EnumValue40558 + EnumValue40559 + EnumValue40560 +} + +enum Enum2485 @Directive44(argument97 : ["stringValue43253"]) { + EnumValue40561 + EnumValue40562 + EnumValue40563 + EnumValue40564 + EnumValue40565 + EnumValue40566 + EnumValue40567 + EnumValue40568 + EnumValue40569 + EnumValue40570 + EnumValue40571 + EnumValue40572 + EnumValue40573 + EnumValue40574 + EnumValue40575 + EnumValue40576 + EnumValue40577 + EnumValue40578 + EnumValue40579 + EnumValue40580 + EnumValue40581 + EnumValue40582 + EnumValue40583 + EnumValue40584 + EnumValue40585 + EnumValue40586 + EnumValue40587 + EnumValue40588 + EnumValue40589 + EnumValue40590 + EnumValue40591 + EnumValue40592 + EnumValue40593 + EnumValue40594 + EnumValue40595 + EnumValue40596 + EnumValue40597 + EnumValue40598 + EnumValue40599 + EnumValue40600 + EnumValue40601 + EnumValue40602 + EnumValue40603 + EnumValue40604 + EnumValue40605 + EnumValue40606 + EnumValue40607 + EnumValue40608 + EnumValue40609 + EnumValue40610 + EnumValue40611 + EnumValue40612 + EnumValue40613 + EnumValue40614 + EnumValue40615 + EnumValue40616 + EnumValue40617 + EnumValue40618 + EnumValue40619 + EnumValue40620 + EnumValue40621 + EnumValue40622 + EnumValue40623 + EnumValue40624 + EnumValue40625 + EnumValue40626 + EnumValue40627 + EnumValue40628 + EnumValue40629 + EnumValue40630 + EnumValue40631 + EnumValue40632 + EnumValue40633 + EnumValue40634 + EnumValue40635 + EnumValue40636 + EnumValue40637 + EnumValue40638 +} + +enum Enum2486 @Directive44(argument97 : ["stringValue43272"]) { + EnumValue40639 + EnumValue40640 + EnumValue40641 + EnumValue40642 + EnumValue40643 + EnumValue40644 + EnumValue40645 + EnumValue40646 + EnumValue40647 +} + +enum Enum2487 @Directive44(argument97 : ["stringValue43273"]) { + EnumValue40648 + EnumValue40649 + EnumValue40650 +} + +enum Enum2488 @Directive44(argument97 : ["stringValue43274"]) { + EnumValue40651 + EnumValue40652 + EnumValue40653 +} + +enum Enum2489 @Directive44(argument97 : ["stringValue43275"]) { + EnumValue40654 + EnumValue40655 + EnumValue40656 +} + +enum Enum249 @Directive19(argument57 : "stringValue4487") @Directive22(argument62 : "stringValue4486") @Directive44(argument97 : ["stringValue4488", "stringValue4489"]) { + EnumValue4990 + EnumValue4991 + EnumValue4992 + EnumValue4993 + EnumValue4994 +} + +enum Enum2490 @Directive44(argument97 : ["stringValue43276"]) { + EnumValue40657 + EnumValue40658 + EnumValue40659 + EnumValue40660 + EnumValue40661 +} + +enum Enum2491 @Directive44(argument97 : ["stringValue43278"]) { + EnumValue40662 + EnumValue40663 + EnumValue40664 + EnumValue40665 + EnumValue40666 + EnumValue40667 + EnumValue40668 + EnumValue40669 + EnumValue40670 + EnumValue40671 + EnumValue40672 + EnumValue40673 + EnumValue40674 + EnumValue40675 + EnumValue40676 + EnumValue40677 + EnumValue40678 + EnumValue40679 + EnumValue40680 + EnumValue40681 + EnumValue40682 + EnumValue40683 + EnumValue40684 +} + +enum Enum2492 @Directive44(argument97 : ["stringValue43293"]) { + EnumValue40685 + EnumValue40686 + EnumValue40687 + EnumValue40688 + EnumValue40689 + EnumValue40690 +} + +enum Enum2493 @Directive44(argument97 : ["stringValue43317"]) { + EnumValue40691 + EnumValue40692 + EnumValue40693 + EnumValue40694 + EnumValue40695 + EnumValue40696 + EnumValue40697 +} + +enum Enum2494 @Directive44(argument97 : ["stringValue43318"]) { + EnumValue40698 + EnumValue40699 + EnumValue40700 +} + +enum Enum2495 @Directive44(argument97 : ["stringValue43319"]) { + EnumValue40701 + EnumValue40702 + EnumValue40703 + EnumValue40704 + EnumValue40705 + EnumValue40706 + EnumValue40707 + EnumValue40708 + EnumValue40709 + EnumValue40710 + EnumValue40711 + EnumValue40712 + EnumValue40713 + EnumValue40714 +} + +enum Enum2496 @Directive44(argument97 : ["stringValue43320"]) { + EnumValue40715 + EnumValue40716 + EnumValue40717 + EnumValue40718 + EnumValue40719 + EnumValue40720 + EnumValue40721 + EnumValue40722 +} + +enum Enum2497 @Directive44(argument97 : ["stringValue43358"]) { + EnumValue40723 + EnumValue40724 + EnumValue40725 + EnumValue40726 + EnumValue40727 + EnumValue40728 + EnumValue40729 + EnumValue40730 + EnumValue40731 + EnumValue40732 + EnumValue40733 + EnumValue40734 + EnumValue40735 + EnumValue40736 + EnumValue40737 + EnumValue40738 + EnumValue40739 + EnumValue40740 + EnumValue40741 + EnumValue40742 + EnumValue40743 + EnumValue40744 + EnumValue40745 + EnumValue40746 + EnumValue40747 + EnumValue40748 + EnumValue40749 + EnumValue40750 + EnumValue40751 + EnumValue40752 + EnumValue40753 + EnumValue40754 + EnumValue40755 + EnumValue40756 + EnumValue40757 + EnumValue40758 + EnumValue40759 + EnumValue40760 + EnumValue40761 + EnumValue40762 + EnumValue40763 + EnumValue40764 + EnumValue40765 + EnumValue40766 + EnumValue40767 + EnumValue40768 + EnumValue40769 + EnumValue40770 + EnumValue40771 + EnumValue40772 + EnumValue40773 + EnumValue40774 + EnumValue40775 + EnumValue40776 + EnumValue40777 + EnumValue40778 + EnumValue40779 + EnumValue40780 + EnumValue40781 + EnumValue40782 + EnumValue40783 + EnumValue40784 + EnumValue40785 + EnumValue40786 + EnumValue40787 + EnumValue40788 + EnumValue40789 + EnumValue40790 + EnumValue40791 + EnumValue40792 +} + +enum Enum2498 @Directive44(argument97 : ["stringValue43359"]) { + EnumValue40793 + EnumValue40794 + EnumValue40795 + EnumValue40796 + EnumValue40797 + EnumValue40798 + EnumValue40799 + EnumValue40800 + EnumValue40801 + EnumValue40802 + EnumValue40803 + EnumValue40804 + EnumValue40805 +} + +enum Enum2499 @Directive44(argument97 : ["stringValue43360"]) { + EnumValue40806 + EnumValue40807 + EnumValue40808 + EnumValue40809 + EnumValue40810 + EnumValue40811 + EnumValue40812 +} + +enum Enum25 @Directive44(argument97 : ["stringValue206"]) { + EnumValue888 + EnumValue889 + EnumValue890 +} + +enum Enum250 @Directive19(argument57 : "stringValue4491") @Directive22(argument62 : "stringValue4490") @Directive44(argument97 : ["stringValue4492", "stringValue4493"]) { + EnumValue4995 + EnumValue4996 + EnumValue4997 +} + +enum Enum2500 @Directive44(argument97 : ["stringValue43361"]) { + EnumValue40813 + EnumValue40814 + EnumValue40815 +} + +enum Enum2501 @Directive44(argument97 : ["stringValue43362"]) { + EnumValue40816 + EnumValue40817 + EnumValue40818 +} + +enum Enum2502 @Directive44(argument97 : ["stringValue43363"]) { + EnumValue40819 + EnumValue40820 + EnumValue40821 + EnumValue40822 + EnumValue40823 + EnumValue40824 + EnumValue40825 + EnumValue40826 + EnumValue40827 + EnumValue40828 + EnumValue40829 + EnumValue40830 + EnumValue40831 + EnumValue40832 + EnumValue40833 +} + +enum Enum2503 @Directive44(argument97 : ["stringValue43364"]) { + EnumValue40834 + EnumValue40835 + EnumValue40836 + EnumValue40837 + EnumValue40838 + EnumValue40839 + EnumValue40840 + EnumValue40841 +} + +enum Enum2504 @Directive44(argument97 : ["stringValue43367"]) { + EnumValue40842 + EnumValue40843 + EnumValue40844 + EnumValue40845 + EnumValue40846 + EnumValue40847 + EnumValue40848 + EnumValue40849 + EnumValue40850 + EnumValue40851 +} + +enum Enum2505 @Directive44(argument97 : ["stringValue43368"]) { + EnumValue40852 + EnumValue40853 + EnumValue40854 + EnumValue40855 + EnumValue40856 + EnumValue40857 + EnumValue40858 + EnumValue40859 + EnumValue40860 + EnumValue40861 + EnumValue40862 + EnumValue40863 + EnumValue40864 + EnumValue40865 + EnumValue40866 + EnumValue40867 + EnumValue40868 + EnumValue40869 + EnumValue40870 + EnumValue40871 + EnumValue40872 + EnumValue40873 + EnumValue40874 + EnumValue40875 + EnumValue40876 + EnumValue40877 + EnumValue40878 + EnumValue40879 + EnumValue40880 + EnumValue40881 + EnumValue40882 + EnumValue40883 + EnumValue40884 + EnumValue40885 + EnumValue40886 + EnumValue40887 + EnumValue40888 + EnumValue40889 + EnumValue40890 + EnumValue40891 + EnumValue40892 + EnumValue40893 + EnumValue40894 + EnumValue40895 + EnumValue40896 + EnumValue40897 + EnumValue40898 + EnumValue40899 + EnumValue40900 + EnumValue40901 + EnumValue40902 + EnumValue40903 + EnumValue40904 + EnumValue40905 + EnumValue40906 + EnumValue40907 + EnumValue40908 + EnumValue40909 + EnumValue40910 + EnumValue40911 + EnumValue40912 + EnumValue40913 + EnumValue40914 + EnumValue40915 + EnumValue40916 + EnumValue40917 +} + +enum Enum2506 @Directive44(argument97 : ["stringValue43369"]) { + EnumValue40918 + EnumValue40919 + EnumValue40920 + EnumValue40921 +} + +enum Enum2507 @Directive44(argument97 : ["stringValue43372"]) { + EnumValue40922 + EnumValue40923 + EnumValue40924 + EnumValue40925 + EnumValue40926 + EnumValue40927 + EnumValue40928 + EnumValue40929 +} + +enum Enum2508 @Directive44(argument97 : ["stringValue43373"]) { + EnumValue40930 + EnumValue40931 + EnumValue40932 + EnumValue40933 + EnumValue40934 + EnumValue40935 + EnumValue40936 + EnumValue40937 +} + +enum Enum2509 @Directive44(argument97 : ["stringValue43374"]) { + EnumValue40938 + EnumValue40939 + EnumValue40940 + EnumValue40941 + EnumValue40942 + EnumValue40943 + EnumValue40944 + EnumValue40945 + EnumValue40946 + EnumValue40947 + EnumValue40948 + EnumValue40949 + EnumValue40950 + EnumValue40951 + EnumValue40952 + EnumValue40953 + EnumValue40954 + EnumValue40955 + EnumValue40956 + EnumValue40957 + EnumValue40958 + EnumValue40959 + EnumValue40960 + EnumValue40961 + EnumValue40962 + EnumValue40963 + EnumValue40964 + EnumValue40965 + EnumValue40966 + EnumValue40967 + EnumValue40968 + EnumValue40969 + EnumValue40970 + EnumValue40971 + EnumValue40972 + EnumValue40973 + EnumValue40974 + EnumValue40975 + EnumValue40976 + EnumValue40977 + EnumValue40978 + EnumValue40979 + EnumValue40980 + EnumValue40981 + EnumValue40982 + EnumValue40983 + EnumValue40984 + EnumValue40985 + EnumValue40986 + EnumValue40987 + EnumValue40988 + EnumValue40989 + EnumValue40990 + EnumValue40991 + EnumValue40992 + EnumValue40993 + EnumValue40994 + EnumValue40995 + EnumValue40996 + EnumValue40997 + EnumValue40998 + EnumValue40999 + EnumValue41000 + EnumValue41001 + EnumValue41002 + EnumValue41003 + EnumValue41004 + EnumValue41005 + EnumValue41006 + EnumValue41007 + EnumValue41008 + EnumValue41009 + EnumValue41010 + EnumValue41011 + EnumValue41012 + EnumValue41013 + EnumValue41014 + EnumValue41015 + EnumValue41016 + EnumValue41017 + EnumValue41018 + EnumValue41019 + EnumValue41020 + EnumValue41021 + EnumValue41022 + EnumValue41023 + EnumValue41024 + EnumValue41025 + EnumValue41026 + EnumValue41027 + EnumValue41028 + EnumValue41029 + EnumValue41030 + EnumValue41031 + EnumValue41032 + EnumValue41033 + EnumValue41034 + EnumValue41035 + EnumValue41036 + EnumValue41037 + EnumValue41038 + EnumValue41039 + EnumValue41040 + EnumValue41041 + EnumValue41042 + EnumValue41043 + EnumValue41044 + EnumValue41045 + EnumValue41046 + EnumValue41047 + EnumValue41048 + EnumValue41049 + EnumValue41050 + EnumValue41051 + EnumValue41052 + EnumValue41053 + EnumValue41054 + EnumValue41055 + EnumValue41056 + EnumValue41057 + EnumValue41058 + EnumValue41059 + EnumValue41060 + EnumValue41061 + EnumValue41062 + EnumValue41063 + EnumValue41064 + EnumValue41065 + EnumValue41066 + EnumValue41067 + EnumValue41068 + EnumValue41069 + EnumValue41070 + EnumValue41071 + EnumValue41072 + EnumValue41073 + EnumValue41074 + EnumValue41075 + EnumValue41076 + EnumValue41077 + EnumValue41078 + EnumValue41079 + EnumValue41080 + EnumValue41081 + EnumValue41082 + EnumValue41083 + EnumValue41084 + EnumValue41085 + EnumValue41086 + EnumValue41087 + EnumValue41088 + EnumValue41089 + EnumValue41090 + EnumValue41091 + EnumValue41092 + EnumValue41093 + EnumValue41094 + EnumValue41095 + EnumValue41096 + EnumValue41097 + EnumValue41098 + EnumValue41099 + EnumValue41100 + EnumValue41101 + EnumValue41102 + EnumValue41103 + EnumValue41104 + EnumValue41105 + EnumValue41106 + EnumValue41107 + EnumValue41108 + EnumValue41109 + EnumValue41110 + EnumValue41111 + EnumValue41112 + EnumValue41113 + EnumValue41114 + EnumValue41115 + EnumValue41116 + EnumValue41117 + EnumValue41118 + EnumValue41119 + EnumValue41120 + EnumValue41121 + EnumValue41122 + EnumValue41123 + EnumValue41124 + EnumValue41125 + EnumValue41126 + EnumValue41127 + EnumValue41128 + EnumValue41129 + EnumValue41130 + EnumValue41131 + EnumValue41132 + EnumValue41133 + EnumValue41134 + EnumValue41135 + EnumValue41136 + EnumValue41137 + EnumValue41138 + EnumValue41139 + EnumValue41140 + EnumValue41141 + EnumValue41142 + EnumValue41143 + EnumValue41144 + EnumValue41145 + EnumValue41146 + EnumValue41147 + EnumValue41148 + EnumValue41149 + EnumValue41150 + EnumValue41151 + EnumValue41152 + EnumValue41153 + EnumValue41154 + EnumValue41155 + EnumValue41156 + EnumValue41157 + EnumValue41158 + EnumValue41159 + EnumValue41160 + EnumValue41161 + EnumValue41162 + EnumValue41163 + EnumValue41164 + EnumValue41165 + EnumValue41166 + EnumValue41167 + EnumValue41168 + EnumValue41169 + EnumValue41170 + EnumValue41171 + EnumValue41172 + EnumValue41173 + EnumValue41174 + EnumValue41175 + EnumValue41176 + EnumValue41177 + EnumValue41178 + EnumValue41179 + EnumValue41180 + EnumValue41181 + EnumValue41182 + EnumValue41183 + EnumValue41184 + EnumValue41185 + EnumValue41186 + EnumValue41187 + EnumValue41188 + EnumValue41189 + EnumValue41190 + EnumValue41191 + EnumValue41192 + EnumValue41193 + EnumValue41194 + EnumValue41195 + EnumValue41196 + EnumValue41197 + EnumValue41198 + EnumValue41199 + EnumValue41200 + EnumValue41201 + EnumValue41202 + EnumValue41203 + EnumValue41204 + EnumValue41205 + EnumValue41206 + EnumValue41207 + EnumValue41208 + EnumValue41209 + EnumValue41210 + EnumValue41211 + EnumValue41212 + EnumValue41213 + EnumValue41214 + EnumValue41215 + EnumValue41216 + EnumValue41217 + EnumValue41218 + EnumValue41219 + EnumValue41220 + EnumValue41221 + EnumValue41222 + EnumValue41223 + EnumValue41224 + EnumValue41225 + EnumValue41226 + EnumValue41227 + EnumValue41228 + EnumValue41229 + EnumValue41230 + EnumValue41231 + EnumValue41232 + EnumValue41233 + EnumValue41234 + EnumValue41235 + EnumValue41236 + EnumValue41237 + EnumValue41238 + EnumValue41239 + EnumValue41240 + EnumValue41241 + EnumValue41242 + EnumValue41243 + EnumValue41244 + EnumValue41245 + EnumValue41246 + EnumValue41247 + EnumValue41248 + EnumValue41249 + EnumValue41250 + EnumValue41251 + EnumValue41252 + EnumValue41253 + EnumValue41254 + EnumValue41255 + EnumValue41256 + EnumValue41257 + EnumValue41258 + EnumValue41259 + EnumValue41260 + EnumValue41261 + EnumValue41262 + EnumValue41263 + EnumValue41264 + EnumValue41265 + EnumValue41266 + EnumValue41267 + EnumValue41268 + EnumValue41269 + EnumValue41270 + EnumValue41271 + EnumValue41272 + EnumValue41273 + EnumValue41274 + EnumValue41275 + EnumValue41276 + EnumValue41277 + EnumValue41278 + EnumValue41279 + EnumValue41280 + EnumValue41281 + EnumValue41282 + EnumValue41283 + EnumValue41284 + EnumValue41285 + EnumValue41286 + EnumValue41287 + EnumValue41288 + EnumValue41289 + EnumValue41290 + EnumValue41291 + EnumValue41292 + EnumValue41293 + EnumValue41294 + EnumValue41295 + EnumValue41296 + EnumValue41297 + EnumValue41298 + EnumValue41299 + EnumValue41300 + EnumValue41301 + EnumValue41302 + EnumValue41303 + EnumValue41304 + EnumValue41305 + EnumValue41306 + EnumValue41307 + EnumValue41308 + EnumValue41309 + EnumValue41310 + EnumValue41311 + EnumValue41312 + EnumValue41313 + EnumValue41314 + EnumValue41315 + EnumValue41316 + EnumValue41317 + EnumValue41318 + EnumValue41319 + EnumValue41320 + EnumValue41321 + EnumValue41322 + EnumValue41323 + EnumValue41324 + EnumValue41325 + EnumValue41326 + EnumValue41327 + EnumValue41328 + EnumValue41329 + EnumValue41330 + EnumValue41331 + EnumValue41332 + EnumValue41333 + EnumValue41334 + EnumValue41335 + EnumValue41336 + EnumValue41337 + EnumValue41338 + EnumValue41339 + EnumValue41340 + EnumValue41341 + EnumValue41342 + EnumValue41343 + EnumValue41344 + EnumValue41345 + EnumValue41346 + EnumValue41347 + EnumValue41348 + EnumValue41349 + EnumValue41350 + EnumValue41351 + EnumValue41352 + EnumValue41353 + EnumValue41354 + EnumValue41355 + EnumValue41356 + EnumValue41357 + EnumValue41358 + EnumValue41359 + EnumValue41360 + EnumValue41361 + EnumValue41362 + EnumValue41363 + EnumValue41364 + EnumValue41365 + EnumValue41366 + EnumValue41367 + EnumValue41368 + EnumValue41369 + EnumValue41370 + EnumValue41371 + EnumValue41372 + EnumValue41373 + EnumValue41374 + EnumValue41375 + EnumValue41376 + EnumValue41377 + EnumValue41378 + EnumValue41379 + EnumValue41380 + EnumValue41381 + EnumValue41382 + EnumValue41383 + EnumValue41384 + EnumValue41385 + EnumValue41386 + EnumValue41387 + EnumValue41388 + EnumValue41389 + EnumValue41390 + EnumValue41391 + EnumValue41392 + EnumValue41393 + EnumValue41394 + EnumValue41395 + EnumValue41396 + EnumValue41397 + EnumValue41398 + EnumValue41399 + EnumValue41400 + EnumValue41401 + EnumValue41402 + EnumValue41403 + EnumValue41404 + EnumValue41405 + EnumValue41406 + EnumValue41407 + EnumValue41408 + EnumValue41409 + EnumValue41410 + EnumValue41411 + EnumValue41412 + EnumValue41413 + EnumValue41414 + EnumValue41415 + EnumValue41416 + EnumValue41417 + EnumValue41418 + EnumValue41419 + EnumValue41420 + EnumValue41421 + EnumValue41422 + EnumValue41423 + EnumValue41424 + EnumValue41425 + EnumValue41426 + EnumValue41427 + EnumValue41428 + EnumValue41429 + EnumValue41430 + EnumValue41431 + EnumValue41432 + EnumValue41433 + EnumValue41434 + EnumValue41435 + EnumValue41436 + EnumValue41437 + EnumValue41438 + EnumValue41439 + EnumValue41440 + EnumValue41441 + EnumValue41442 + EnumValue41443 + EnumValue41444 + EnumValue41445 + EnumValue41446 + EnumValue41447 + EnumValue41448 + EnumValue41449 + EnumValue41450 + EnumValue41451 + EnumValue41452 + EnumValue41453 + EnumValue41454 + EnumValue41455 + EnumValue41456 + EnumValue41457 + EnumValue41458 + EnumValue41459 + EnumValue41460 + EnumValue41461 + EnumValue41462 + EnumValue41463 + EnumValue41464 + EnumValue41465 + EnumValue41466 + EnumValue41467 + EnumValue41468 + EnumValue41469 + EnumValue41470 + EnumValue41471 + EnumValue41472 + EnumValue41473 + EnumValue41474 + EnumValue41475 + EnumValue41476 + EnumValue41477 + EnumValue41478 + EnumValue41479 + EnumValue41480 + EnumValue41481 + EnumValue41482 + EnumValue41483 + EnumValue41484 + EnumValue41485 + EnumValue41486 + EnumValue41487 + EnumValue41488 + EnumValue41489 + EnumValue41490 + EnumValue41491 + EnumValue41492 + EnumValue41493 + EnumValue41494 + EnumValue41495 + EnumValue41496 + EnumValue41497 + EnumValue41498 + EnumValue41499 + EnumValue41500 + EnumValue41501 + EnumValue41502 + EnumValue41503 + EnumValue41504 + EnumValue41505 + EnumValue41506 + EnumValue41507 + EnumValue41508 + EnumValue41509 + EnumValue41510 + EnumValue41511 + EnumValue41512 + EnumValue41513 + EnumValue41514 + EnumValue41515 + EnumValue41516 + EnumValue41517 + EnumValue41518 + EnumValue41519 + EnumValue41520 + EnumValue41521 + EnumValue41522 + EnumValue41523 + EnumValue41524 + EnumValue41525 + EnumValue41526 + EnumValue41527 + EnumValue41528 + EnumValue41529 + EnumValue41530 + EnumValue41531 + EnumValue41532 + EnumValue41533 + EnumValue41534 + EnumValue41535 + EnumValue41536 + EnumValue41537 + EnumValue41538 + EnumValue41539 + EnumValue41540 + EnumValue41541 + EnumValue41542 + EnumValue41543 + EnumValue41544 + EnumValue41545 + EnumValue41546 + EnumValue41547 + EnumValue41548 + EnumValue41549 + EnumValue41550 + EnumValue41551 + EnumValue41552 + EnumValue41553 + EnumValue41554 + EnumValue41555 + EnumValue41556 + EnumValue41557 + EnumValue41558 + EnumValue41559 + EnumValue41560 + EnumValue41561 + EnumValue41562 + EnumValue41563 + EnumValue41564 + EnumValue41565 + EnumValue41566 + EnumValue41567 + EnumValue41568 + EnumValue41569 + EnumValue41570 + EnumValue41571 + EnumValue41572 + EnumValue41573 + EnumValue41574 + EnumValue41575 + EnumValue41576 + EnumValue41577 + EnumValue41578 + EnumValue41579 + EnumValue41580 + EnumValue41581 + EnumValue41582 + EnumValue41583 + EnumValue41584 + EnumValue41585 + EnumValue41586 + EnumValue41587 + EnumValue41588 + EnumValue41589 + EnumValue41590 + EnumValue41591 + EnumValue41592 + EnumValue41593 + EnumValue41594 + EnumValue41595 + EnumValue41596 + EnumValue41597 + EnumValue41598 +} + +enum Enum251 @Directive19(argument57 : "stringValue4506") @Directive22(argument62 : "stringValue4505") @Directive44(argument97 : ["stringValue4507", "stringValue4508"]) { + EnumValue4998 + EnumValue4999 + EnumValue5000 + EnumValue5001 + EnumValue5002 + EnumValue5003 + EnumValue5004 +} + +enum Enum2510 @Directive44(argument97 : ["stringValue43393"]) { + EnumValue41599 + EnumValue41600 + EnumValue41601 + EnumValue41602 +} + +enum Enum2511 @Directive44(argument97 : ["stringValue43492"]) { + EnumValue41603 + EnumValue41604 + EnumValue41605 + EnumValue41606 +} + +enum Enum2512 @Directive44(argument97 : ["stringValue43497"]) { + EnumValue41607 + EnumValue41608 + EnumValue41609 + EnumValue41610 + EnumValue41611 + EnumValue41612 + EnumValue41613 + EnumValue41614 +} + +enum Enum2513 @Directive44(argument97 : ["stringValue43500"]) { + EnumValue41615 + EnumValue41616 + EnumValue41617 + EnumValue41618 + EnumValue41619 + EnumValue41620 +} + +enum Enum2514 @Directive44(argument97 : ["stringValue43503"]) { + EnumValue41621 + EnumValue41622 + EnumValue41623 + EnumValue41624 + EnumValue41625 + EnumValue41626 + EnumValue41627 + EnumValue41628 + EnumValue41629 + EnumValue41630 + EnumValue41631 +} + +enum Enum2515 @Directive44(argument97 : ["stringValue43504"]) { + EnumValue41632 + EnumValue41633 + EnumValue41634 + EnumValue41635 + EnumValue41636 +} + +enum Enum2516 @Directive44(argument97 : ["stringValue43529"]) { + EnumValue41637 + EnumValue41638 + EnumValue41639 +} + +enum Enum2517 @Directive44(argument97 : ["stringValue43544"]) { + EnumValue41640 + EnumValue41641 + EnumValue41642 +} + +enum Enum2518 @Directive44(argument97 : ["stringValue43549"]) { + EnumValue41643 + EnumValue41644 + EnumValue41645 +} + +enum Enum2519 @Directive44(argument97 : ["stringValue43572"]) { + EnumValue41646 + EnumValue41647 + EnumValue41648 + EnumValue41649 + EnumValue41650 +} + +enum Enum252 @Directive19(argument57 : "stringValue4514") @Directive22(argument62 : "stringValue4513") @Directive44(argument97 : ["stringValue4515", "stringValue4516"]) { + EnumValue5005 + EnumValue5006 + EnumValue5007 +} + +enum Enum2520 @Directive44(argument97 : ["stringValue43575"]) { + EnumValue41651 + EnumValue41652 + EnumValue41653 + EnumValue41654 + EnumValue41655 + EnumValue41656 + EnumValue41657 + EnumValue41658 + EnumValue41659 +} + +enum Enum2521 @Directive44(argument97 : ["stringValue43578"]) { + EnumValue41660 + EnumValue41661 + EnumValue41662 +} + +enum Enum2522 @Directive44(argument97 : ["stringValue43585"]) { + EnumValue41663 + EnumValue41664 + EnumValue41665 + EnumValue41666 +} + +enum Enum2523 @Directive44(argument97 : ["stringValue43599"]) { + EnumValue41667 + EnumValue41668 +} + +enum Enum2524 @Directive44(argument97 : ["stringValue43655"]) { + EnumValue41669 + EnumValue41670 + EnumValue41671 + EnumValue41672 +} + +enum Enum2525 @Directive44(argument97 : ["stringValue43676"]) { + EnumValue41673 + EnumValue41674 + EnumValue41675 + EnumValue41676 + EnumValue41677 + EnumValue41678 + EnumValue41679 + EnumValue41680 + EnumValue41681 + EnumValue41682 +} + +enum Enum2526 @Directive44(argument97 : ["stringValue43679"]) { + EnumValue41683 + EnumValue41684 + EnumValue41685 +} + +enum Enum2527 @Directive44(argument97 : ["stringValue43686"]) { + EnumValue41686 + EnumValue41687 + EnumValue41688 + EnumValue41689 +} + +enum Enum2528 @Directive44(argument97 : ["stringValue43689"]) { + EnumValue41690 + EnumValue41691 + EnumValue41692 + EnumValue41693 + EnumValue41694 +} + +enum Enum2529 @Directive44(argument97 : ["stringValue43697"]) { + EnumValue41695 + EnumValue41696 + EnumValue41697 + EnumValue41698 +} + +enum Enum253 @Directive19(argument57 : "stringValue4518") @Directive22(argument62 : "stringValue4517") @Directive44(argument97 : ["stringValue4519", "stringValue4520"]) { + EnumValue5008 + EnumValue5009 + EnumValue5010 +} + +enum Enum2530 @Directive44(argument97 : ["stringValue43703"]) { + EnumValue41699 + EnumValue41700 + EnumValue41701 + EnumValue41702 + EnumValue41703 + EnumValue41704 + EnumValue41705 + EnumValue41706 + EnumValue41707 + EnumValue41708 + EnumValue41709 + EnumValue41710 + EnumValue41711 + EnumValue41712 + EnumValue41713 + EnumValue41714 + EnumValue41715 + EnumValue41716 + EnumValue41717 + EnumValue41718 + EnumValue41719 + EnumValue41720 + EnumValue41721 + EnumValue41722 + EnumValue41723 +} + +enum Enum2531 @Directive44(argument97 : ["stringValue43720"]) { + EnumValue41724 + EnumValue41725 + EnumValue41726 +} + +enum Enum2532 @Directive44(argument97 : ["stringValue43723"]) { + EnumValue41727 + EnumValue41728 + EnumValue41729 + EnumValue41730 + EnumValue41731 + EnumValue41732 + EnumValue41733 +} + +enum Enum2533 @Directive44(argument97 : ["stringValue43738"]) { + EnumValue41734 + EnumValue41735 + EnumValue41736 + EnumValue41737 + EnumValue41738 +} + +enum Enum2534 @Directive44(argument97 : ["stringValue43782"]) { + EnumValue41739 + EnumValue41740 +} + +enum Enum2535 @Directive44(argument97 : ["stringValue43783"]) { + EnumValue41741 + EnumValue41742 + EnumValue41743 + EnumValue41744 + EnumValue41745 + EnumValue41746 + EnumValue41747 + EnumValue41748 + EnumValue41749 + EnumValue41750 + EnumValue41751 + EnumValue41752 + EnumValue41753 + EnumValue41754 + EnumValue41755 + EnumValue41756 + EnumValue41757 + EnumValue41758 + EnumValue41759 + EnumValue41760 + EnumValue41761 + EnumValue41762 + EnumValue41763 + EnumValue41764 + EnumValue41765 + EnumValue41766 + EnumValue41767 + EnumValue41768 + EnumValue41769 + EnumValue41770 + EnumValue41771 + EnumValue41772 + EnumValue41773 + EnumValue41774 + EnumValue41775 + EnumValue41776 + EnumValue41777 + EnumValue41778 + EnumValue41779 + EnumValue41780 + EnumValue41781 + EnumValue41782 + EnumValue41783 + EnumValue41784 + EnumValue41785 + EnumValue41786 + EnumValue41787 + EnumValue41788 + EnumValue41789 + EnumValue41790 + EnumValue41791 + EnumValue41792 +} + +enum Enum2536 @Directive44(argument97 : ["stringValue43816"]) { + EnumValue41793 + EnumValue41794 + EnumValue41795 + EnumValue41796 + EnumValue41797 + EnumValue41798 + EnumValue41799 + EnumValue41800 + EnumValue41801 + EnumValue41802 + EnumValue41803 + EnumValue41804 + EnumValue41805 + EnumValue41806 + EnumValue41807 + EnumValue41808 + EnumValue41809 + EnumValue41810 + EnumValue41811 + EnumValue41812 + EnumValue41813 + EnumValue41814 + EnumValue41815 + EnumValue41816 + EnumValue41817 + EnumValue41818 + EnumValue41819 + EnumValue41820 + EnumValue41821 + EnumValue41822 + EnumValue41823 + EnumValue41824 + EnumValue41825 + EnumValue41826 + EnumValue41827 + EnumValue41828 + EnumValue41829 + EnumValue41830 + EnumValue41831 + EnumValue41832 + EnumValue41833 + EnumValue41834 + EnumValue41835 + EnumValue41836 + EnumValue41837 + EnumValue41838 + EnumValue41839 + EnumValue41840 + EnumValue41841 + EnumValue41842 + EnumValue41843 + EnumValue41844 + EnumValue41845 + EnumValue41846 + EnumValue41847 + EnumValue41848 + EnumValue41849 + EnumValue41850 + EnumValue41851 + EnumValue41852 + EnumValue41853 + EnumValue41854 + EnumValue41855 + EnumValue41856 + EnumValue41857 + EnumValue41858 + EnumValue41859 + EnumValue41860 + EnumValue41861 + EnumValue41862 + EnumValue41863 + EnumValue41864 + EnumValue41865 + EnumValue41866 + EnumValue41867 + EnumValue41868 + EnumValue41869 + EnumValue41870 + EnumValue41871 + EnumValue41872 + EnumValue41873 + EnumValue41874 + EnumValue41875 + EnumValue41876 + EnumValue41877 + EnumValue41878 + EnumValue41879 + EnumValue41880 + EnumValue41881 + EnumValue41882 + EnumValue41883 + EnumValue41884 + EnumValue41885 + EnumValue41886 + EnumValue41887 + EnumValue41888 + EnumValue41889 + EnumValue41890 + EnumValue41891 + EnumValue41892 + EnumValue41893 + EnumValue41894 + EnumValue41895 + EnumValue41896 + EnumValue41897 + EnumValue41898 + EnumValue41899 + EnumValue41900 + EnumValue41901 + EnumValue41902 + EnumValue41903 + EnumValue41904 + EnumValue41905 + EnumValue41906 + EnumValue41907 + EnumValue41908 + EnumValue41909 + EnumValue41910 + EnumValue41911 + EnumValue41912 + EnumValue41913 + EnumValue41914 + EnumValue41915 + EnumValue41916 + EnumValue41917 + EnumValue41918 + EnumValue41919 + EnumValue41920 + EnumValue41921 + EnumValue41922 + EnumValue41923 + EnumValue41924 + EnumValue41925 + EnumValue41926 + EnumValue41927 + EnumValue41928 + EnumValue41929 + EnumValue41930 + EnumValue41931 + EnumValue41932 + EnumValue41933 + EnumValue41934 + EnumValue41935 + EnumValue41936 + EnumValue41937 + EnumValue41938 + EnumValue41939 + EnumValue41940 + EnumValue41941 + EnumValue41942 + EnumValue41943 + EnumValue41944 + EnumValue41945 + EnumValue41946 + EnumValue41947 + EnumValue41948 + EnumValue41949 + EnumValue41950 + EnumValue41951 + EnumValue41952 + EnumValue41953 + EnumValue41954 + EnumValue41955 + EnumValue41956 + EnumValue41957 + EnumValue41958 + EnumValue41959 + EnumValue41960 + EnumValue41961 + EnumValue41962 + EnumValue41963 + EnumValue41964 + EnumValue41965 + EnumValue41966 + EnumValue41967 + EnumValue41968 + EnumValue41969 + EnumValue41970 + EnumValue41971 + EnumValue41972 + EnumValue41973 + EnumValue41974 + EnumValue41975 + EnumValue41976 + EnumValue41977 + EnumValue41978 + EnumValue41979 + EnumValue41980 + EnumValue41981 + EnumValue41982 + EnumValue41983 + EnumValue41984 + EnumValue41985 + EnumValue41986 + EnumValue41987 + EnumValue41988 + EnumValue41989 + EnumValue41990 + EnumValue41991 + EnumValue41992 + EnumValue41993 + EnumValue41994 + EnumValue41995 + EnumValue41996 + EnumValue41997 + EnumValue41998 + EnumValue41999 + EnumValue42000 + EnumValue42001 + EnumValue42002 + EnumValue42003 + EnumValue42004 + EnumValue42005 + EnumValue42006 + EnumValue42007 + EnumValue42008 + EnumValue42009 + EnumValue42010 + EnumValue42011 + EnumValue42012 + EnumValue42013 + EnumValue42014 + EnumValue42015 + EnumValue42016 + EnumValue42017 + EnumValue42018 + EnumValue42019 + EnumValue42020 + EnumValue42021 + EnumValue42022 + EnumValue42023 + EnumValue42024 + EnumValue42025 + EnumValue42026 + EnumValue42027 + EnumValue42028 + EnumValue42029 + EnumValue42030 + EnumValue42031 + EnumValue42032 + EnumValue42033 + EnumValue42034 + EnumValue42035 + EnumValue42036 + EnumValue42037 + EnumValue42038 + EnumValue42039 + EnumValue42040 + EnumValue42041 + EnumValue42042 + EnumValue42043 + EnumValue42044 + EnumValue42045 + EnumValue42046 + EnumValue42047 + EnumValue42048 + EnumValue42049 + EnumValue42050 + EnumValue42051 + EnumValue42052 + EnumValue42053 + EnumValue42054 + EnumValue42055 + EnumValue42056 + EnumValue42057 + EnumValue42058 + EnumValue42059 + EnumValue42060 + EnumValue42061 + EnumValue42062 + EnumValue42063 + EnumValue42064 + EnumValue42065 + EnumValue42066 + EnumValue42067 + EnumValue42068 + EnumValue42069 + EnumValue42070 + EnumValue42071 + EnumValue42072 + EnumValue42073 + EnumValue42074 + EnumValue42075 + EnumValue42076 + EnumValue42077 + EnumValue42078 + EnumValue42079 + EnumValue42080 + EnumValue42081 + EnumValue42082 + EnumValue42083 + EnumValue42084 + EnumValue42085 + EnumValue42086 + EnumValue42087 + EnumValue42088 + EnumValue42089 + EnumValue42090 + EnumValue42091 + EnumValue42092 + EnumValue42093 + EnumValue42094 + EnumValue42095 + EnumValue42096 + EnumValue42097 + EnumValue42098 + EnumValue42099 + EnumValue42100 + EnumValue42101 + EnumValue42102 + EnumValue42103 + EnumValue42104 + EnumValue42105 + EnumValue42106 + EnumValue42107 + EnumValue42108 + EnumValue42109 + EnumValue42110 + EnumValue42111 + EnumValue42112 + EnumValue42113 + EnumValue42114 + EnumValue42115 + EnumValue42116 + EnumValue42117 + EnumValue42118 + EnumValue42119 + EnumValue42120 + EnumValue42121 + EnumValue42122 + EnumValue42123 + EnumValue42124 + EnumValue42125 + EnumValue42126 + EnumValue42127 + EnumValue42128 + EnumValue42129 + EnumValue42130 + EnumValue42131 + EnumValue42132 + EnumValue42133 + EnumValue42134 + EnumValue42135 + EnumValue42136 + EnumValue42137 + EnumValue42138 + EnumValue42139 + EnumValue42140 + EnumValue42141 + EnumValue42142 + EnumValue42143 + EnumValue42144 + EnumValue42145 + EnumValue42146 + EnumValue42147 + EnumValue42148 + EnumValue42149 + EnumValue42150 + EnumValue42151 + EnumValue42152 + EnumValue42153 + EnumValue42154 + EnumValue42155 + EnumValue42156 + EnumValue42157 + EnumValue42158 + EnumValue42159 + EnumValue42160 + EnumValue42161 + EnumValue42162 + EnumValue42163 + EnumValue42164 + EnumValue42165 + EnumValue42166 + EnumValue42167 + EnumValue42168 + EnumValue42169 + EnumValue42170 + EnumValue42171 + EnumValue42172 + EnumValue42173 + EnumValue42174 + EnumValue42175 + EnumValue42176 + EnumValue42177 + EnumValue42178 + EnumValue42179 + EnumValue42180 + EnumValue42181 + EnumValue42182 + EnumValue42183 + EnumValue42184 + EnumValue42185 + EnumValue42186 + EnumValue42187 + EnumValue42188 + EnumValue42189 + EnumValue42190 + EnumValue42191 + EnumValue42192 + EnumValue42193 + EnumValue42194 + EnumValue42195 + EnumValue42196 + EnumValue42197 + EnumValue42198 + EnumValue42199 + EnumValue42200 + EnumValue42201 + EnumValue42202 + EnumValue42203 + EnumValue42204 + EnumValue42205 + EnumValue42206 + EnumValue42207 + EnumValue42208 + EnumValue42209 + EnumValue42210 + EnumValue42211 +} + +enum Enum2537 @Directive44(argument97 : ["stringValue43817"]) { + EnumValue42212 + EnumValue42213 + EnumValue42214 + EnumValue42215 +} + +enum Enum2538 @Directive44(argument97 : ["stringValue43896"]) { + EnumValue42216 + EnumValue42217 + EnumValue42218 + EnumValue42219 + EnumValue42220 + EnumValue42221 + EnumValue42222 + EnumValue42223 +} + +enum Enum2539 @Directive44(argument97 : ["stringValue43897"]) { + EnumValue42224 + EnumValue42225 + EnumValue42226 + EnumValue42227 + EnumValue42228 + EnumValue42229 + EnumValue42230 + EnumValue42231 + EnumValue42232 + EnumValue42233 + EnumValue42234 + EnumValue42235 + EnumValue42236 + EnumValue42237 + EnumValue42238 + EnumValue42239 + EnumValue42240 + EnumValue42241 + EnumValue42242 + EnumValue42243 + EnumValue42244 + EnumValue42245 + EnumValue42246 + EnumValue42247 + EnumValue42248 + EnumValue42249 + EnumValue42250 + EnumValue42251 + EnumValue42252 + EnumValue42253 + EnumValue42254 + EnumValue42255 + EnumValue42256 + EnumValue42257 + EnumValue42258 + EnumValue42259 + EnumValue42260 + EnumValue42261 + EnumValue42262 + EnumValue42263 + EnumValue42264 + EnumValue42265 + EnumValue42266 + EnumValue42267 + EnumValue42268 + EnumValue42269 + EnumValue42270 + EnumValue42271 + EnumValue42272 + EnumValue42273 + EnumValue42274 + EnumValue42275 + EnumValue42276 + EnumValue42277 + EnumValue42278 + EnumValue42279 + EnumValue42280 + EnumValue42281 + EnumValue42282 + EnumValue42283 + EnumValue42284 + EnumValue42285 + EnumValue42286 + EnumValue42287 + EnumValue42288 + EnumValue42289 + EnumValue42290 + EnumValue42291 + EnumValue42292 + EnumValue42293 + EnumValue42294 + EnumValue42295 + EnumValue42296 + EnumValue42297 + EnumValue42298 + EnumValue42299 + EnumValue42300 + EnumValue42301 + EnumValue42302 + EnumValue42303 + EnumValue42304 + EnumValue42305 + EnumValue42306 + EnumValue42307 + EnumValue42308 + EnumValue42309 + EnumValue42310 + EnumValue42311 + EnumValue42312 + EnumValue42313 + EnumValue42314 + EnumValue42315 + EnumValue42316 + EnumValue42317 + EnumValue42318 + EnumValue42319 + EnumValue42320 + EnumValue42321 + EnumValue42322 + EnumValue42323 + EnumValue42324 + EnumValue42325 + EnumValue42326 + EnumValue42327 + EnumValue42328 + EnumValue42329 + EnumValue42330 + EnumValue42331 + EnumValue42332 + EnumValue42333 + EnumValue42334 + EnumValue42335 + EnumValue42336 + EnumValue42337 + EnumValue42338 + EnumValue42339 + EnumValue42340 + EnumValue42341 + EnumValue42342 + EnumValue42343 + EnumValue42344 + EnumValue42345 + EnumValue42346 + EnumValue42347 + EnumValue42348 + EnumValue42349 + EnumValue42350 + EnumValue42351 + EnumValue42352 + EnumValue42353 + EnumValue42354 + EnumValue42355 + EnumValue42356 + EnumValue42357 + EnumValue42358 + EnumValue42359 + EnumValue42360 + EnumValue42361 + EnumValue42362 + EnumValue42363 + EnumValue42364 + EnumValue42365 + EnumValue42366 + EnumValue42367 + EnumValue42368 + EnumValue42369 + EnumValue42370 + EnumValue42371 + EnumValue42372 + EnumValue42373 + EnumValue42374 + EnumValue42375 + EnumValue42376 + EnumValue42377 + EnumValue42378 + EnumValue42379 + EnumValue42380 + EnumValue42381 + EnumValue42382 + EnumValue42383 + EnumValue42384 + EnumValue42385 + EnumValue42386 + EnumValue42387 + EnumValue42388 + EnumValue42389 + EnumValue42390 + EnumValue42391 + EnumValue42392 + EnumValue42393 + EnumValue42394 + EnumValue42395 + EnumValue42396 + EnumValue42397 + EnumValue42398 + EnumValue42399 + EnumValue42400 + EnumValue42401 + EnumValue42402 + EnumValue42403 + EnumValue42404 + EnumValue42405 + EnumValue42406 + EnumValue42407 + EnumValue42408 + EnumValue42409 + EnumValue42410 + EnumValue42411 + EnumValue42412 + EnumValue42413 + EnumValue42414 + EnumValue42415 + EnumValue42416 + EnumValue42417 + EnumValue42418 + EnumValue42419 + EnumValue42420 + EnumValue42421 + EnumValue42422 + EnumValue42423 + EnumValue42424 + EnumValue42425 + EnumValue42426 + EnumValue42427 + EnumValue42428 + EnumValue42429 + EnumValue42430 + EnumValue42431 + EnumValue42432 + EnumValue42433 + EnumValue42434 + EnumValue42435 + EnumValue42436 + EnumValue42437 + EnumValue42438 + EnumValue42439 + EnumValue42440 + EnumValue42441 + EnumValue42442 + EnumValue42443 + EnumValue42444 + EnumValue42445 + EnumValue42446 + EnumValue42447 + EnumValue42448 + EnumValue42449 + EnumValue42450 + EnumValue42451 + EnumValue42452 + EnumValue42453 + EnumValue42454 + EnumValue42455 + EnumValue42456 + EnumValue42457 + EnumValue42458 + EnumValue42459 + EnumValue42460 + EnumValue42461 + EnumValue42462 + EnumValue42463 + EnumValue42464 + EnumValue42465 + EnumValue42466 + EnumValue42467 + EnumValue42468 + EnumValue42469 + EnumValue42470 + EnumValue42471 + EnumValue42472 + EnumValue42473 + EnumValue42474 + EnumValue42475 + EnumValue42476 + EnumValue42477 + EnumValue42478 + EnumValue42479 + EnumValue42480 + EnumValue42481 + EnumValue42482 + EnumValue42483 + EnumValue42484 + EnumValue42485 + EnumValue42486 + EnumValue42487 + EnumValue42488 + EnumValue42489 + EnumValue42490 + EnumValue42491 + EnumValue42492 + EnumValue42493 + EnumValue42494 + EnumValue42495 + EnumValue42496 + EnumValue42497 + EnumValue42498 + EnumValue42499 + EnumValue42500 + EnumValue42501 + EnumValue42502 + EnumValue42503 + EnumValue42504 + EnumValue42505 + EnumValue42506 + EnumValue42507 + EnumValue42508 + EnumValue42509 + EnumValue42510 + EnumValue42511 + EnumValue42512 + EnumValue42513 + EnumValue42514 + EnumValue42515 + EnumValue42516 + EnumValue42517 + EnumValue42518 + EnumValue42519 + EnumValue42520 + EnumValue42521 + EnumValue42522 + EnumValue42523 + EnumValue42524 + EnumValue42525 + EnumValue42526 + EnumValue42527 + EnumValue42528 + EnumValue42529 + EnumValue42530 + EnumValue42531 + EnumValue42532 + EnumValue42533 + EnumValue42534 + EnumValue42535 + EnumValue42536 + EnumValue42537 + EnumValue42538 + EnumValue42539 + EnumValue42540 + EnumValue42541 + EnumValue42542 + EnumValue42543 + EnumValue42544 + EnumValue42545 + EnumValue42546 + EnumValue42547 + EnumValue42548 + EnumValue42549 + EnumValue42550 + EnumValue42551 + EnumValue42552 + EnumValue42553 + EnumValue42554 + EnumValue42555 + EnumValue42556 + EnumValue42557 + EnumValue42558 + EnumValue42559 + EnumValue42560 + EnumValue42561 + EnumValue42562 + EnumValue42563 + EnumValue42564 + EnumValue42565 + EnumValue42566 + EnumValue42567 + EnumValue42568 + EnumValue42569 + EnumValue42570 + EnumValue42571 + EnumValue42572 + EnumValue42573 + EnumValue42574 + EnumValue42575 + EnumValue42576 + EnumValue42577 + EnumValue42578 + EnumValue42579 + EnumValue42580 + EnumValue42581 + EnumValue42582 + EnumValue42583 + EnumValue42584 + EnumValue42585 + EnumValue42586 + EnumValue42587 + EnumValue42588 + EnumValue42589 + EnumValue42590 + EnumValue42591 + EnumValue42592 + EnumValue42593 + EnumValue42594 + EnumValue42595 + EnumValue42596 + EnumValue42597 + EnumValue42598 + EnumValue42599 + EnumValue42600 + EnumValue42601 + EnumValue42602 + EnumValue42603 + EnumValue42604 + EnumValue42605 + EnumValue42606 + EnumValue42607 + EnumValue42608 + EnumValue42609 + EnumValue42610 + EnumValue42611 + EnumValue42612 + EnumValue42613 + EnumValue42614 + EnumValue42615 + EnumValue42616 + EnumValue42617 + EnumValue42618 + EnumValue42619 + EnumValue42620 + EnumValue42621 + EnumValue42622 + EnumValue42623 + EnumValue42624 + EnumValue42625 + EnumValue42626 + EnumValue42627 + EnumValue42628 + EnumValue42629 + EnumValue42630 + EnumValue42631 + EnumValue42632 + EnumValue42633 + EnumValue42634 + EnumValue42635 + EnumValue42636 + EnumValue42637 + EnumValue42638 + EnumValue42639 + EnumValue42640 + EnumValue42641 + EnumValue42642 + EnumValue42643 + EnumValue42644 + EnumValue42645 + EnumValue42646 + EnumValue42647 + EnumValue42648 + EnumValue42649 + EnumValue42650 + EnumValue42651 + EnumValue42652 + EnumValue42653 + EnumValue42654 + EnumValue42655 + EnumValue42656 + EnumValue42657 + EnumValue42658 + EnumValue42659 + EnumValue42660 + EnumValue42661 + EnumValue42662 + EnumValue42663 + EnumValue42664 + EnumValue42665 + EnumValue42666 + EnumValue42667 + EnumValue42668 + EnumValue42669 + EnumValue42670 + EnumValue42671 + EnumValue42672 + EnumValue42673 + EnumValue42674 + EnumValue42675 + EnumValue42676 + EnumValue42677 + EnumValue42678 + EnumValue42679 + EnumValue42680 + EnumValue42681 + EnumValue42682 + EnumValue42683 + EnumValue42684 + EnumValue42685 + EnumValue42686 + EnumValue42687 + EnumValue42688 + EnumValue42689 + EnumValue42690 + EnumValue42691 + EnumValue42692 + EnumValue42693 + EnumValue42694 + EnumValue42695 + EnumValue42696 + EnumValue42697 + EnumValue42698 + EnumValue42699 + EnumValue42700 + EnumValue42701 + EnumValue42702 + EnumValue42703 + EnumValue42704 + EnumValue42705 + EnumValue42706 + EnumValue42707 + EnumValue42708 + EnumValue42709 + EnumValue42710 + EnumValue42711 + EnumValue42712 + EnumValue42713 + EnumValue42714 + EnumValue42715 + EnumValue42716 + EnumValue42717 + EnumValue42718 + EnumValue42719 + EnumValue42720 + EnumValue42721 + EnumValue42722 + EnumValue42723 + EnumValue42724 + EnumValue42725 + EnumValue42726 + EnumValue42727 + EnumValue42728 + EnumValue42729 + EnumValue42730 + EnumValue42731 + EnumValue42732 + EnumValue42733 + EnumValue42734 + EnumValue42735 + EnumValue42736 + EnumValue42737 + EnumValue42738 + EnumValue42739 + EnumValue42740 + EnumValue42741 + EnumValue42742 + EnumValue42743 + EnumValue42744 + EnumValue42745 + EnumValue42746 + EnumValue42747 + EnumValue42748 + EnumValue42749 + EnumValue42750 + EnumValue42751 + EnumValue42752 + EnumValue42753 + EnumValue42754 + EnumValue42755 + EnumValue42756 + EnumValue42757 + EnumValue42758 + EnumValue42759 + EnumValue42760 + EnumValue42761 + EnumValue42762 + EnumValue42763 + EnumValue42764 + EnumValue42765 + EnumValue42766 + EnumValue42767 + EnumValue42768 + EnumValue42769 + EnumValue42770 + EnumValue42771 + EnumValue42772 + EnumValue42773 + EnumValue42774 + EnumValue42775 + EnumValue42776 + EnumValue42777 + EnumValue42778 + EnumValue42779 + EnumValue42780 + EnumValue42781 + EnumValue42782 + EnumValue42783 + EnumValue42784 + EnumValue42785 + EnumValue42786 + EnumValue42787 + EnumValue42788 + EnumValue42789 + EnumValue42790 + EnumValue42791 + EnumValue42792 + EnumValue42793 + EnumValue42794 + EnumValue42795 + EnumValue42796 + EnumValue42797 + EnumValue42798 + EnumValue42799 + EnumValue42800 + EnumValue42801 + EnumValue42802 + EnumValue42803 + EnumValue42804 + EnumValue42805 + EnumValue42806 + EnumValue42807 + EnumValue42808 + EnumValue42809 + EnumValue42810 + EnumValue42811 + EnumValue42812 + EnumValue42813 + EnumValue42814 + EnumValue42815 + EnumValue42816 + EnumValue42817 + EnumValue42818 + EnumValue42819 + EnumValue42820 + EnumValue42821 + EnumValue42822 + EnumValue42823 + EnumValue42824 + EnumValue42825 + EnumValue42826 + EnumValue42827 + EnumValue42828 + EnumValue42829 + EnumValue42830 + EnumValue42831 + EnumValue42832 + EnumValue42833 + EnumValue42834 + EnumValue42835 + EnumValue42836 + EnumValue42837 + EnumValue42838 + EnumValue42839 + EnumValue42840 + EnumValue42841 + EnumValue42842 + EnumValue42843 + EnumValue42844 + EnumValue42845 + EnumValue42846 + EnumValue42847 + EnumValue42848 + EnumValue42849 + EnumValue42850 + EnumValue42851 + EnumValue42852 + EnumValue42853 + EnumValue42854 + EnumValue42855 + EnumValue42856 + EnumValue42857 + EnumValue42858 + EnumValue42859 + EnumValue42860 + EnumValue42861 + EnumValue42862 + EnumValue42863 + EnumValue42864 + EnumValue42865 + EnumValue42866 + EnumValue42867 + EnumValue42868 + EnumValue42869 + EnumValue42870 + EnumValue42871 + EnumValue42872 + EnumValue42873 + EnumValue42874 + EnumValue42875 + EnumValue42876 + EnumValue42877 + EnumValue42878 + EnumValue42879 + EnumValue42880 + EnumValue42881 + EnumValue42882 + EnumValue42883 + EnumValue42884 +} + +enum Enum254 @Directive19(argument57 : "stringValue4522") @Directive22(argument62 : "stringValue4521") @Directive44(argument97 : ["stringValue4523", "stringValue4524"]) { + EnumValue5011 + EnumValue5012 + EnumValue5013 + EnumValue5014 +} + +enum Enum2540 @Directive44(argument97 : ["stringValue43900"]) { + EnumValue42885 + EnumValue42886 + EnumValue42887 + EnumValue42888 + EnumValue42889 + EnumValue42890 + EnumValue42891 + EnumValue42892 + EnumValue42893 + EnumValue42894 + EnumValue42895 + EnumValue42896 + EnumValue42897 + EnumValue42898 + EnumValue42899 + EnumValue42900 + EnumValue42901 + EnumValue42902 + EnumValue42903 + EnumValue42904 + EnumValue42905 + EnumValue42906 + EnumValue42907 + EnumValue42908 + EnumValue42909 + EnumValue42910 + EnumValue42911 + EnumValue42912 + EnumValue42913 + EnumValue42914 + EnumValue42915 + EnumValue42916 + EnumValue42917 + EnumValue42918 + EnumValue42919 + EnumValue42920 + EnumValue42921 + EnumValue42922 + EnumValue42923 + EnumValue42924 + EnumValue42925 + EnumValue42926 + EnumValue42927 + EnumValue42928 + EnumValue42929 + EnumValue42930 + EnumValue42931 + EnumValue42932 + EnumValue42933 + EnumValue42934 + EnumValue42935 + EnumValue42936 + EnumValue42937 + EnumValue42938 + EnumValue42939 + EnumValue42940 + EnumValue42941 + EnumValue42942 + EnumValue42943 + EnumValue42944 + EnumValue42945 + EnumValue42946 + EnumValue42947 + EnumValue42948 + EnumValue42949 + EnumValue42950 + EnumValue42951 + EnumValue42952 + EnumValue42953 + EnumValue42954 +} + +enum Enum2541 @Directive44(argument97 : ["stringValue43901"]) { + EnumValue42955 + EnumValue42956 + EnumValue42957 + EnumValue42958 + EnumValue42959 + EnumValue42960 + EnumValue42961 + EnumValue42962 + EnumValue42963 + EnumValue42964 + EnumValue42965 + EnumValue42966 + EnumValue42967 +} + +enum Enum2542 @Directive44(argument97 : ["stringValue43902"]) { + EnumValue42968 + EnumValue42969 + EnumValue42970 + EnumValue42971 + EnumValue42972 + EnumValue42973 + EnumValue42974 +} + +enum Enum2543 @Directive44(argument97 : ["stringValue43903"]) { + EnumValue42975 + EnumValue42976 + EnumValue42977 +} + +enum Enum2544 @Directive44(argument97 : ["stringValue43904"]) { + EnumValue42978 + EnumValue42979 + EnumValue42980 +} + +enum Enum2545 @Directive44(argument97 : ["stringValue43905"]) { + EnumValue42981 + EnumValue42982 + EnumValue42983 + EnumValue42984 + EnumValue42985 + EnumValue42986 + EnumValue42987 + EnumValue42988 + EnumValue42989 + EnumValue42990 + EnumValue42991 + EnumValue42992 + EnumValue42993 + EnumValue42994 + EnumValue42995 +} + +enum Enum2546 @Directive44(argument97 : ["stringValue43906"]) { + EnumValue42996 + EnumValue42997 + EnumValue42998 + EnumValue42999 + EnumValue43000 + EnumValue43001 + EnumValue43002 + EnumValue43003 +} + +enum Enum2547 @Directive44(argument97 : ["stringValue43909"]) { + EnumValue43004 + EnumValue43005 + EnumValue43006 + EnumValue43007 + EnumValue43008 + EnumValue43009 + EnumValue43010 + EnumValue43011 + EnumValue43012 + EnumValue43013 +} + +enum Enum2548 @Directive44(argument97 : ["stringValue43910"]) { + EnumValue43014 + EnumValue43015 + EnumValue43016 + EnumValue43017 + EnumValue43018 + EnumValue43019 + EnumValue43020 + EnumValue43021 + EnumValue43022 + EnumValue43023 + EnumValue43024 + EnumValue43025 + EnumValue43026 + EnumValue43027 + EnumValue43028 + EnumValue43029 + EnumValue43030 + EnumValue43031 + EnumValue43032 + EnumValue43033 + EnumValue43034 + EnumValue43035 + EnumValue43036 + EnumValue43037 + EnumValue43038 + EnumValue43039 + EnumValue43040 + EnumValue43041 + EnumValue43042 + EnumValue43043 + EnumValue43044 + EnumValue43045 + EnumValue43046 + EnumValue43047 + EnumValue43048 + EnumValue43049 + EnumValue43050 + EnumValue43051 + EnumValue43052 + EnumValue43053 + EnumValue43054 + EnumValue43055 + EnumValue43056 + EnumValue43057 + EnumValue43058 + EnumValue43059 + EnumValue43060 + EnumValue43061 + EnumValue43062 + EnumValue43063 + EnumValue43064 + EnumValue43065 + EnumValue43066 + EnumValue43067 + EnumValue43068 + EnumValue43069 + EnumValue43070 + EnumValue43071 + EnumValue43072 + EnumValue43073 + EnumValue43074 + EnumValue43075 + EnumValue43076 + EnumValue43077 + EnumValue43078 + EnumValue43079 +} + +enum Enum2549 @Directive44(argument97 : ["stringValue43911"]) { + EnumValue43080 + EnumValue43081 + EnumValue43082 + EnumValue43083 +} + +enum Enum255 @Directive19(argument57 : "stringValue4558") @Directive22(argument62 : "stringValue4557") @Directive44(argument97 : ["stringValue4559", "stringValue4560"]) { + EnumValue5015 + EnumValue5016 + EnumValue5017 + EnumValue5018 +} + +enum Enum2550 @Directive44(argument97 : ["stringValue43914"]) { + EnumValue43084 + EnumValue43085 + EnumValue43086 + EnumValue43087 + EnumValue43088 + EnumValue43089 + EnumValue43090 + EnumValue43091 +} + +enum Enum2551 @Directive44(argument97 : ["stringValue43915"]) { + EnumValue43092 + EnumValue43093 + EnumValue43094 + EnumValue43095 + EnumValue43096 + EnumValue43097 + EnumValue43098 + EnumValue43099 +} + +enum Enum2552 @Directive44(argument97 : ["stringValue43934"]) { + EnumValue43100 + EnumValue43101 + EnumValue43102 + EnumValue43103 + EnumValue43104 +} + +enum Enum2553 @Directive44(argument97 : ["stringValue44018"]) { + EnumValue43105 + EnumValue43106 + EnumValue43107 +} + +enum Enum2554 @Directive44(argument97 : ["stringValue44026"]) { + EnumValue43108 + EnumValue43109 + EnumValue43110 +} + +enum Enum2555 @Directive44(argument97 : ["stringValue44028"]) { + EnumValue43111 + EnumValue43112 + EnumValue43113 + EnumValue43114 +} + +enum Enum2556 @Directive44(argument97 : ["stringValue44029"]) { + EnumValue43115 + EnumValue43116 + EnumValue43117 +} + +enum Enum2557 @Directive44(argument97 : ["stringValue44030"]) { + EnumValue43118 + EnumValue43119 + EnumValue43120 + EnumValue43121 + EnumValue43122 + EnumValue43123 +} + +enum Enum2558 @Directive44(argument97 : ["stringValue44032"]) { + EnumValue43124 + EnumValue43125 + EnumValue43126 + EnumValue43127 + EnumValue43128 + EnumValue43129 + EnumValue43130 + EnumValue43131 + EnumValue43132 + EnumValue43133 +} + +enum Enum2559 @Directive44(argument97 : ["stringValue44033"]) { + EnumValue43134 + EnumValue43135 + EnumValue43136 + EnumValue43137 + EnumValue43138 + EnumValue43139 + EnumValue43140 + EnumValue43141 + EnumValue43142 + EnumValue43143 + EnumValue43144 + EnumValue43145 + EnumValue43146 + EnumValue43147 + EnumValue43148 + EnumValue43149 + EnumValue43150 + EnumValue43151 + EnumValue43152 + EnumValue43153 + EnumValue43154 + EnumValue43155 + EnumValue43156 + EnumValue43157 + EnumValue43158 + EnumValue43159 + EnumValue43160 + EnumValue43161 + EnumValue43162 + EnumValue43163 + EnumValue43164 + EnumValue43165 +} + +enum Enum256 @Directive19(argument57 : "stringValue4590") @Directive22(argument62 : "stringValue4589") @Directive44(argument97 : ["stringValue4591", "stringValue4592"]) { + EnumValue5019 + EnumValue5020 + EnumValue5021 + EnumValue5022 + EnumValue5023 +} + +enum Enum2560 @Directive44(argument97 : ["stringValue44036"]) { + EnumValue43166 + EnumValue43167 + EnumValue43168 + EnumValue43169 + EnumValue43170 + EnumValue43171 + EnumValue43172 + EnumValue43173 + EnumValue43174 + EnumValue43175 +} + +enum Enum2561 @Directive44(argument97 : ["stringValue44037"]) { + EnumValue43176 + EnumValue43177 + EnumValue43178 +} + +enum Enum2562 @Directive44(argument97 : ["stringValue44038"]) { + EnumValue43179 + EnumValue43180 + EnumValue43181 + EnumValue43182 + EnumValue43183 +} + +enum Enum2563 @Directive44(argument97 : ["stringValue44039"]) { + EnumValue43184 + EnumValue43185 + EnumValue43186 + EnumValue43187 +} + +enum Enum2564 @Directive44(argument97 : ["stringValue44040"]) { + EnumValue43188 + EnumValue43189 + EnumValue43190 +} + +enum Enum2565 @Directive44(argument97 : ["stringValue44041"]) { + EnumValue43191 + EnumValue43192 + EnumValue43193 + EnumValue43194 +} + +enum Enum2566 @Directive44(argument97 : ["stringValue44042"]) { + EnumValue43195 + EnumValue43196 + EnumValue43197 + EnumValue43198 +} + +enum Enum2567 @Directive44(argument97 : ["stringValue44064"]) { + EnumValue43199 + EnumValue43200 + EnumValue43201 + EnumValue43202 + EnumValue43203 + EnumValue43204 + EnumValue43205 +} + +enum Enum2568 @Directive44(argument97 : ["stringValue44065"]) { + EnumValue43206 + EnumValue43207 + EnumValue43208 +} + +enum Enum2569 @Directive44(argument97 : ["stringValue44066"]) { + EnumValue43209 + EnumValue43210 + EnumValue43211 + EnumValue43212 + EnumValue43213 + EnumValue43214 + EnumValue43215 + EnumValue43216 + EnumValue43217 + EnumValue43218 + EnumValue43219 + EnumValue43220 + EnumValue43221 + EnumValue43222 +} + +enum Enum257 @Directive19(argument57 : "stringValue4605") @Directive22(argument62 : "stringValue4604") @Directive44(argument97 : ["stringValue4606", "stringValue4607"]) { + EnumValue5024 + EnumValue5025 + EnumValue5026 +} + +enum Enum2570 @Directive44(argument97 : ["stringValue44067"]) { + EnumValue43223 + EnumValue43224 + EnumValue43225 + EnumValue43226 + EnumValue43227 + EnumValue43228 + EnumValue43229 + EnumValue43230 +} + +enum Enum2571 @Directive44(argument97 : ["stringValue44091"]) { + EnumValue43231 + EnumValue43232 + EnumValue43233 + EnumValue43234 +} + +enum Enum2572 @Directive44(argument97 : ["stringValue44228"]) { + EnumValue43235 + EnumValue43236 + EnumValue43237 +} + +enum Enum2573 @Directive44(argument97 : ["stringValue44347"]) { + EnumValue43238 + EnumValue43239 + EnumValue43240 + EnumValue43241 + EnumValue43242 + EnumValue43243 + EnumValue43244 + EnumValue43245 + EnumValue43246 + EnumValue43247 + EnumValue43248 + EnumValue43249 + EnumValue43250 + EnumValue43251 + EnumValue43252 + EnumValue43253 + EnumValue43254 + EnumValue43255 + EnumValue43256 +} + +enum Enum2574 @Directive44(argument97 : ["stringValue44352"]) { + EnumValue43257 + EnumValue43258 + EnumValue43259 + EnumValue43260 +} + +enum Enum2575 @Directive44(argument97 : ["stringValue44353"]) { + EnumValue43261 + EnumValue43262 + EnumValue43263 + EnumValue43264 + EnumValue43265 + EnumValue43266 + EnumValue43267 + EnumValue43268 +} + +enum Enum2576 @Directive44(argument97 : ["stringValue44354"]) { + EnumValue43269 + EnumValue43270 + EnumValue43271 + EnumValue43272 + EnumValue43273 + EnumValue43274 + EnumValue43275 + EnumValue43276 + EnumValue43277 + EnumValue43278 +} + +enum Enum2577 @Directive44(argument97 : ["stringValue44355"]) { + EnumValue43279 + EnumValue43280 + EnumValue43281 + EnumValue43282 +} + +enum Enum2578 @Directive44(argument97 : ["stringValue44356"]) { + EnumValue43283 + EnumValue43284 + EnumValue43285 + EnumValue43286 + EnumValue43287 + EnumValue43288 + EnumValue43289 + EnumValue43290 + EnumValue43291 + EnumValue43292 + EnumValue43293 + EnumValue43294 + EnumValue43295 + EnumValue43296 + EnumValue43297 + EnumValue43298 + EnumValue43299 + EnumValue43300 + EnumValue43301 + EnumValue43302 + EnumValue43303 + EnumValue43304 + EnumValue43305 + EnumValue43306 + EnumValue43307 + EnumValue43308 + EnumValue43309 + EnumValue43310 + EnumValue43311 + EnumValue43312 + EnumValue43313 + EnumValue43314 + EnumValue43315 + EnumValue43316 + EnumValue43317 + EnumValue43318 + EnumValue43319 + EnumValue43320 + EnumValue43321 + EnumValue43322 + EnumValue43323 + EnumValue43324 + EnumValue43325 + EnumValue43326 + EnumValue43327 + EnumValue43328 + EnumValue43329 + EnumValue43330 + EnumValue43331 + EnumValue43332 + EnumValue43333 + EnumValue43334 + EnumValue43335 + EnumValue43336 + EnumValue43337 + EnumValue43338 + EnumValue43339 + EnumValue43340 + EnumValue43341 + EnumValue43342 + EnumValue43343 + EnumValue43344 + EnumValue43345 + EnumValue43346 + EnumValue43347 + EnumValue43348 + EnumValue43349 + EnumValue43350 + EnumValue43351 + EnumValue43352 + EnumValue43353 + EnumValue43354 +} + +enum Enum2579 @Directive44(argument97 : ["stringValue44357"]) { + EnumValue43355 + EnumValue43356 + EnumValue43357 + EnumValue43358 + EnumValue43359 + EnumValue43360 + EnumValue43361 +} + +enum Enum258 @Directive19(argument57 : "stringValue4613") @Directive22(argument62 : "stringValue4612") @Directive44(argument97 : ["stringValue4614", "stringValue4615"]) { + EnumValue5027 + EnumValue5028 + EnumValue5029 + EnumValue5030 +} + +enum Enum2580 @Directive44(argument97 : ["stringValue44358"]) { + EnumValue43362 + EnumValue43363 + EnumValue43364 + EnumValue43365 + EnumValue43366 + EnumValue43367 +} + +enum Enum2581 @Directive44(argument97 : ["stringValue44359"]) { + EnumValue43368 + EnumValue43369 + EnumValue43370 +} + +enum Enum2582 @Directive44(argument97 : ["stringValue44360"]) { + EnumValue43371 + EnumValue43372 + EnumValue43373 + EnumValue43374 + EnumValue43375 + EnumValue43376 + EnumValue43377 + EnumValue43378 + EnumValue43379 + EnumValue43380 + EnumValue43381 + EnumValue43382 + EnumValue43383 + EnumValue43384 + EnumValue43385 + EnumValue43386 + EnumValue43387 + EnumValue43388 + EnumValue43389 + EnumValue43390 + EnumValue43391 + EnumValue43392 +} + +enum Enum2583 @Directive44(argument97 : ["stringValue44361"]) { + EnumValue43393 + EnumValue43394 + EnumValue43395 + EnumValue43396 + EnumValue43397 + EnumValue43398 +} + +enum Enum2584 @Directive44(argument97 : ["stringValue44362"]) { + EnumValue43399 + EnumValue43400 + EnumValue43401 + EnumValue43402 + EnumValue43403 + EnumValue43404 + EnumValue43405 + EnumValue43406 + EnumValue43407 + EnumValue43408 + EnumValue43409 + EnumValue43410 + EnumValue43411 + EnumValue43412 + EnumValue43413 + EnumValue43414 + EnumValue43415 + EnumValue43416 + EnumValue43417 + EnumValue43418 + EnumValue43419 + EnumValue43420 + EnumValue43421 + EnumValue43422 + EnumValue43423 + EnumValue43424 + EnumValue43425 + EnumValue43426 + EnumValue43427 + EnumValue43428 + EnumValue43429 + EnumValue43430 +} + +enum Enum2585 @Directive44(argument97 : ["stringValue44363"]) { + EnumValue43431 + EnumValue43432 + EnumValue43433 + EnumValue43434 + EnumValue43435 + EnumValue43436 + EnumValue43437 + EnumValue43438 + EnumValue43439 + EnumValue43440 + EnumValue43441 + EnumValue43442 + EnumValue43443 + EnumValue43444 + EnumValue43445 +} + +enum Enum2586 @Directive44(argument97 : ["stringValue44364"]) { + EnumValue43446 + EnumValue43447 + EnumValue43448 +} + +enum Enum2587 @Directive44(argument97 : ["stringValue44365"]) { + EnumValue43449 + EnumValue43450 + EnumValue43451 + EnumValue43452 +} + +enum Enum2588 @Directive44(argument97 : ["stringValue44366"]) { + EnumValue43453 + EnumValue43454 + EnumValue43455 + EnumValue43456 + EnumValue43457 + EnumValue43458 + EnumValue43459 + EnumValue43460 + EnumValue43461 + EnumValue43462 + EnumValue43463 + EnumValue43464 + EnumValue43465 + EnumValue43466 + EnumValue43467 + EnumValue43468 + EnumValue43469 + EnumValue43470 + EnumValue43471 + EnumValue43472 + EnumValue43473 + EnumValue43474 + EnumValue43475 + EnumValue43476 +} + +enum Enum2589 @Directive44(argument97 : ["stringValue44367"]) { + EnumValue43477 + EnumValue43478 + EnumValue43479 + EnumValue43480 +} + +enum Enum259 @Directive19(argument57 : "stringValue4627") @Directive22(argument62 : "stringValue4626") @Directive44(argument97 : ["stringValue4628", "stringValue4629"]) { + EnumValue5031 + EnumValue5032 + EnumValue5033 + EnumValue5034 + EnumValue5035 + EnumValue5036 +} + +enum Enum2590 @Directive44(argument97 : ["stringValue44368"]) { + EnumValue43481 + EnumValue43482 + EnumValue43483 +} + +enum Enum2591 @Directive44(argument97 : ["stringValue44369"]) { + EnumValue43484 + EnumValue43485 + EnumValue43486 + EnumValue43487 + EnumValue43488 + EnumValue43489 +} + +enum Enum2592 @Directive44(argument97 : ["stringValue44370"]) { + EnumValue43490 + EnumValue43491 + EnumValue43492 + EnumValue43493 + EnumValue43494 + EnumValue43495 + EnumValue43496 + EnumValue43497 + EnumValue43498 +} + +enum Enum2593 @Directive44(argument97 : ["stringValue44371"]) { + EnumValue43499 + EnumValue43500 + EnumValue43501 + EnumValue43502 + EnumValue43503 + EnumValue43504 +} + +enum Enum2594 @Directive44(argument97 : ["stringValue44374"]) { + EnumValue43505 + EnumValue43506 + EnumValue43507 + EnumValue43508 +} + +enum Enum2595 @Directive44(argument97 : ["stringValue44379"]) { + EnumValue43509 + EnumValue43510 + EnumValue43511 + EnumValue43512 +} + +enum Enum2596 @Directive44(argument97 : ["stringValue44384"]) { + EnumValue43513 + EnumValue43514 + EnumValue43515 + EnumValue43516 + EnumValue43517 +} + +enum Enum2597 @Directive44(argument97 : ["stringValue44393"]) { + EnumValue43518 + EnumValue43519 + EnumValue43520 + EnumValue43521 + EnumValue43522 + EnumValue43523 + EnumValue43524 +} + +enum Enum2598 @Directive44(argument97 : ["stringValue44414"]) { + EnumValue43525 + EnumValue43526 + EnumValue43527 + EnumValue43528 +} + +enum Enum2599 @Directive44(argument97 : ["stringValue44417"]) { + EnumValue43529 + EnumValue43530 + EnumValue43531 + EnumValue43532 + EnumValue43533 + EnumValue43534 +} + +enum Enum26 @Directive44(argument97 : ["stringValue211"]) { + EnumValue891 + EnumValue892 + EnumValue893 + EnumValue894 + EnumValue895 +} + +enum Enum260 @Directive19(argument57 : "stringValue4643") @Directive22(argument62 : "stringValue4642") @Directive44(argument97 : ["stringValue4644", "stringValue4645"]) { + EnumValue5037 + EnumValue5038 +} + +enum Enum2600 @Directive44(argument97 : ["stringValue44420"]) { + EnumValue43535 + EnumValue43536 +} + +enum Enum2601 @Directive44(argument97 : ["stringValue44421"]) { + EnumValue43537 + EnumValue43538 + EnumValue43539 + EnumValue43540 + EnumValue43541 + EnumValue43542 + EnumValue43543 + EnumValue43544 + EnumValue43545 + EnumValue43546 + EnumValue43547 + EnumValue43548 + EnumValue43549 + EnumValue43550 + EnumValue43551 + EnumValue43552 + EnumValue43553 + EnumValue43554 + EnumValue43555 + EnumValue43556 + EnumValue43557 + EnumValue43558 + EnumValue43559 +} + +enum Enum2602 @Directive44(argument97 : ["stringValue44422"]) { + EnumValue43560 + EnumValue43561 + EnumValue43562 + EnumValue43563 + EnumValue43564 + EnumValue43565 + EnumValue43566 + EnumValue43567 + EnumValue43568 + EnumValue43569 + EnumValue43570 + EnumValue43571 + EnumValue43572 + EnumValue43573 + EnumValue43574 + EnumValue43575 + EnumValue43576 + EnumValue43577 + EnumValue43578 + EnumValue43579 + EnumValue43580 + EnumValue43581 + EnumValue43582 + EnumValue43583 + EnumValue43584 + EnumValue43585 + EnumValue43586 + EnumValue43587 + EnumValue43588 + EnumValue43589 + EnumValue43590 + EnumValue43591 + EnumValue43592 + EnumValue43593 + EnumValue43594 + EnumValue43595 + EnumValue43596 + EnumValue43597 + EnumValue43598 + EnumValue43599 + EnumValue43600 + EnumValue43601 + EnumValue43602 + EnumValue43603 + EnumValue43604 + EnumValue43605 + EnumValue43606 + EnumValue43607 + EnumValue43608 + EnumValue43609 + EnumValue43610 + EnumValue43611 + EnumValue43612 + EnumValue43613 + EnumValue43614 + EnumValue43615 + EnumValue43616 + EnumValue43617 + EnumValue43618 + EnumValue43619 + EnumValue43620 + EnumValue43621 + EnumValue43622 + EnumValue43623 + EnumValue43624 + EnumValue43625 + EnumValue43626 + EnumValue43627 + EnumValue43628 + EnumValue43629 + EnumValue43630 + EnumValue43631 + EnumValue43632 + EnumValue43633 + EnumValue43634 + EnumValue43635 + EnumValue43636 + EnumValue43637 + EnumValue43638 + EnumValue43639 + EnumValue43640 + EnumValue43641 + EnumValue43642 + EnumValue43643 + EnumValue43644 + EnumValue43645 + EnumValue43646 + EnumValue43647 + EnumValue43648 + EnumValue43649 + EnumValue43650 + EnumValue43651 + EnumValue43652 + EnumValue43653 + EnumValue43654 + EnumValue43655 + EnumValue43656 + EnumValue43657 + EnumValue43658 + EnumValue43659 + EnumValue43660 + EnumValue43661 + EnumValue43662 + EnumValue43663 + EnumValue43664 + EnumValue43665 + EnumValue43666 + EnumValue43667 + EnumValue43668 + EnumValue43669 + EnumValue43670 + EnumValue43671 + EnumValue43672 + EnumValue43673 + EnumValue43674 + EnumValue43675 + EnumValue43676 + EnumValue43677 + EnumValue43678 + EnumValue43679 + EnumValue43680 + EnumValue43681 + EnumValue43682 + EnumValue43683 + EnumValue43684 + EnumValue43685 + EnumValue43686 + EnumValue43687 + EnumValue43688 + EnumValue43689 + EnumValue43690 + EnumValue43691 + EnumValue43692 + EnumValue43693 + EnumValue43694 + EnumValue43695 + EnumValue43696 + EnumValue43697 + EnumValue43698 + EnumValue43699 + EnumValue43700 + EnumValue43701 + EnumValue43702 + EnumValue43703 + EnumValue43704 + EnumValue43705 + EnumValue43706 + EnumValue43707 + EnumValue43708 + EnumValue43709 + EnumValue43710 + EnumValue43711 + EnumValue43712 + EnumValue43713 + EnumValue43714 + EnumValue43715 + EnumValue43716 + EnumValue43717 + EnumValue43718 + EnumValue43719 + EnumValue43720 + EnumValue43721 + EnumValue43722 + EnumValue43723 + EnumValue43724 + EnumValue43725 + EnumValue43726 + EnumValue43727 + EnumValue43728 + EnumValue43729 + EnumValue43730 + EnumValue43731 + EnumValue43732 + EnumValue43733 + EnumValue43734 + EnumValue43735 + EnumValue43736 + EnumValue43737 + EnumValue43738 + EnumValue43739 + EnumValue43740 + EnumValue43741 + EnumValue43742 + EnumValue43743 + EnumValue43744 + EnumValue43745 + EnumValue43746 + EnumValue43747 + EnumValue43748 + EnumValue43749 + EnumValue43750 + EnumValue43751 + EnumValue43752 + EnumValue43753 + EnumValue43754 + EnumValue43755 + EnumValue43756 + EnumValue43757 + EnumValue43758 + EnumValue43759 + EnumValue43760 + EnumValue43761 + EnumValue43762 + EnumValue43763 + EnumValue43764 + EnumValue43765 + EnumValue43766 + EnumValue43767 + EnumValue43768 + EnumValue43769 + EnumValue43770 + EnumValue43771 + EnumValue43772 + EnumValue43773 + EnumValue43774 + EnumValue43775 + EnumValue43776 + EnumValue43777 + EnumValue43778 + EnumValue43779 + EnumValue43780 + EnumValue43781 + EnumValue43782 + EnumValue43783 + EnumValue43784 + EnumValue43785 + EnumValue43786 + EnumValue43787 + EnumValue43788 + EnumValue43789 + EnumValue43790 + EnumValue43791 + EnumValue43792 + EnumValue43793 + EnumValue43794 + EnumValue43795 + EnumValue43796 + EnumValue43797 + EnumValue43798 + EnumValue43799 + EnumValue43800 + EnumValue43801 + EnumValue43802 + EnumValue43803 + EnumValue43804 + EnumValue43805 + EnumValue43806 + EnumValue43807 + EnumValue43808 + EnumValue43809 + EnumValue43810 + EnumValue43811 + EnumValue43812 + EnumValue43813 + EnumValue43814 + EnumValue43815 + EnumValue43816 + EnumValue43817 + EnumValue43818 + EnumValue43819 + EnumValue43820 + EnumValue43821 + EnumValue43822 + EnumValue43823 + EnumValue43824 + EnumValue43825 + EnumValue43826 + EnumValue43827 + EnumValue43828 + EnumValue43829 + EnumValue43830 + EnumValue43831 + EnumValue43832 + EnumValue43833 + EnumValue43834 + EnumValue43835 + EnumValue43836 + EnumValue43837 + EnumValue43838 + EnumValue43839 + EnumValue43840 + EnumValue43841 + EnumValue43842 + EnumValue43843 + EnumValue43844 + EnumValue43845 + EnumValue43846 + EnumValue43847 + EnumValue43848 + EnumValue43849 + EnumValue43850 + EnumValue43851 + EnumValue43852 + EnumValue43853 + EnumValue43854 + EnumValue43855 + EnumValue43856 + EnumValue43857 + EnumValue43858 + EnumValue43859 + EnumValue43860 + EnumValue43861 + EnumValue43862 + EnumValue43863 + EnumValue43864 + EnumValue43865 + EnumValue43866 + EnumValue43867 + EnumValue43868 + EnumValue43869 + EnumValue43870 + EnumValue43871 + EnumValue43872 + EnumValue43873 + EnumValue43874 + EnumValue43875 + EnumValue43876 + EnumValue43877 + EnumValue43878 + EnumValue43879 + EnumValue43880 + EnumValue43881 + EnumValue43882 + EnumValue43883 + EnumValue43884 + EnumValue43885 + EnumValue43886 + EnumValue43887 + EnumValue43888 + EnumValue43889 + EnumValue43890 + EnumValue43891 + EnumValue43892 + EnumValue43893 + EnumValue43894 + EnumValue43895 + EnumValue43896 + EnumValue43897 + EnumValue43898 + EnumValue43899 + EnumValue43900 + EnumValue43901 + EnumValue43902 + EnumValue43903 + EnumValue43904 + EnumValue43905 + EnumValue43906 + EnumValue43907 + EnumValue43908 + EnumValue43909 + EnumValue43910 + EnumValue43911 + EnumValue43912 + EnumValue43913 + EnumValue43914 + EnumValue43915 + EnumValue43916 + EnumValue43917 + EnumValue43918 + EnumValue43919 + EnumValue43920 + EnumValue43921 + EnumValue43922 + EnumValue43923 + EnumValue43924 + EnumValue43925 + EnumValue43926 + EnumValue43927 + EnumValue43928 + EnumValue43929 + EnumValue43930 + EnumValue43931 + EnumValue43932 + EnumValue43933 + EnumValue43934 + EnumValue43935 + EnumValue43936 + EnumValue43937 + EnumValue43938 + EnumValue43939 + EnumValue43940 + EnumValue43941 + EnumValue43942 + EnumValue43943 + EnumValue43944 + EnumValue43945 + EnumValue43946 + EnumValue43947 + EnumValue43948 + EnumValue43949 + EnumValue43950 + EnumValue43951 + EnumValue43952 + EnumValue43953 + EnumValue43954 + EnumValue43955 + EnumValue43956 + EnumValue43957 + EnumValue43958 + EnumValue43959 + EnumValue43960 + EnumValue43961 + EnumValue43962 + EnumValue43963 + EnumValue43964 + EnumValue43965 + EnumValue43966 + EnumValue43967 + EnumValue43968 + EnumValue43969 + EnumValue43970 + EnumValue43971 + EnumValue43972 + EnumValue43973 + EnumValue43974 + EnumValue43975 + EnumValue43976 + EnumValue43977 + EnumValue43978 + EnumValue43979 + EnumValue43980 + EnumValue43981 + EnumValue43982 + EnumValue43983 + EnumValue43984 + EnumValue43985 + EnumValue43986 + EnumValue43987 + EnumValue43988 + EnumValue43989 + EnumValue43990 + EnumValue43991 + EnumValue43992 + EnumValue43993 + EnumValue43994 + EnumValue43995 + EnumValue43996 + EnumValue43997 + EnumValue43998 + EnumValue43999 + EnumValue44000 + EnumValue44001 + EnumValue44002 + EnumValue44003 + EnumValue44004 + EnumValue44005 + EnumValue44006 + EnumValue44007 + EnumValue44008 + EnumValue44009 + EnumValue44010 + EnumValue44011 + EnumValue44012 + EnumValue44013 + EnumValue44014 + EnumValue44015 + EnumValue44016 + EnumValue44017 + EnumValue44018 + EnumValue44019 + EnumValue44020 + EnumValue44021 + EnumValue44022 + EnumValue44023 + EnumValue44024 + EnumValue44025 + EnumValue44026 + EnumValue44027 + EnumValue44028 + EnumValue44029 + EnumValue44030 + EnumValue44031 + EnumValue44032 + EnumValue44033 + EnumValue44034 + EnumValue44035 + EnumValue44036 + EnumValue44037 + EnumValue44038 + EnumValue44039 + EnumValue44040 + EnumValue44041 + EnumValue44042 + EnumValue44043 + EnumValue44044 + EnumValue44045 + EnumValue44046 + EnumValue44047 + EnumValue44048 + EnumValue44049 + EnumValue44050 + EnumValue44051 + EnumValue44052 + EnumValue44053 + EnumValue44054 + EnumValue44055 + EnumValue44056 + EnumValue44057 + EnumValue44058 + EnumValue44059 + EnumValue44060 + EnumValue44061 + EnumValue44062 + EnumValue44063 + EnumValue44064 + EnumValue44065 + EnumValue44066 + EnumValue44067 + EnumValue44068 + EnumValue44069 + EnumValue44070 + EnumValue44071 + EnumValue44072 + EnumValue44073 + EnumValue44074 + EnumValue44075 + EnumValue44076 + EnumValue44077 + EnumValue44078 + EnumValue44079 + EnumValue44080 + EnumValue44081 + EnumValue44082 + EnumValue44083 + EnumValue44084 + EnumValue44085 + EnumValue44086 + EnumValue44087 + EnumValue44088 + EnumValue44089 + EnumValue44090 + EnumValue44091 + EnumValue44092 + EnumValue44093 + EnumValue44094 + EnumValue44095 + EnumValue44096 + EnumValue44097 + EnumValue44098 + EnumValue44099 + EnumValue44100 + EnumValue44101 + EnumValue44102 + EnumValue44103 + EnumValue44104 + EnumValue44105 + EnumValue44106 + EnumValue44107 + EnumValue44108 + EnumValue44109 + EnumValue44110 + EnumValue44111 + EnumValue44112 + EnumValue44113 + EnumValue44114 + EnumValue44115 + EnumValue44116 + EnumValue44117 + EnumValue44118 + EnumValue44119 + EnumValue44120 + EnumValue44121 + EnumValue44122 + EnumValue44123 + EnumValue44124 + EnumValue44125 + EnumValue44126 + EnumValue44127 + EnumValue44128 + EnumValue44129 + EnumValue44130 + EnumValue44131 + EnumValue44132 + EnumValue44133 + EnumValue44134 + EnumValue44135 + EnumValue44136 + EnumValue44137 + EnumValue44138 + EnumValue44139 + EnumValue44140 + EnumValue44141 + EnumValue44142 + EnumValue44143 + EnumValue44144 + EnumValue44145 + EnumValue44146 + EnumValue44147 + EnumValue44148 + EnumValue44149 + EnumValue44150 + EnumValue44151 + EnumValue44152 + EnumValue44153 + EnumValue44154 + EnumValue44155 + EnumValue44156 + EnumValue44157 + EnumValue44158 + EnumValue44159 + EnumValue44160 + EnumValue44161 + EnumValue44162 + EnumValue44163 + EnumValue44164 + EnumValue44165 + EnumValue44166 + EnumValue44167 + EnumValue44168 + EnumValue44169 + EnumValue44170 + EnumValue44171 + EnumValue44172 + EnumValue44173 + EnumValue44174 + EnumValue44175 + EnumValue44176 + EnumValue44177 + EnumValue44178 + EnumValue44179 + EnumValue44180 + EnumValue44181 + EnumValue44182 + EnumValue44183 + EnumValue44184 + EnumValue44185 + EnumValue44186 + EnumValue44187 + EnumValue44188 + EnumValue44189 + EnumValue44190 + EnumValue44191 + EnumValue44192 + EnumValue44193 + EnumValue44194 + EnumValue44195 + EnumValue44196 + EnumValue44197 + EnumValue44198 + EnumValue44199 + EnumValue44200 + EnumValue44201 + EnumValue44202 + EnumValue44203 + EnumValue44204 + EnumValue44205 + EnumValue44206 + EnumValue44207 + EnumValue44208 + EnumValue44209 + EnumValue44210 + EnumValue44211 + EnumValue44212 + EnumValue44213 + EnumValue44214 + EnumValue44215 + EnumValue44216 + EnumValue44217 + EnumValue44218 + EnumValue44219 + EnumValue44220 + EnumValue44221 + EnumValue44222 + EnumValue44223 + EnumValue44224 + EnumValue44225 + EnumValue44226 + EnumValue44227 + EnumValue44228 + EnumValue44229 + EnumValue44230 + EnumValue44231 + EnumValue44232 + EnumValue44233 + EnumValue44234 + EnumValue44235 + EnumValue44236 + EnumValue44237 + EnumValue44238 + EnumValue44239 + EnumValue44240 + EnumValue44241 + EnumValue44242 + EnumValue44243 + EnumValue44244 + EnumValue44245 + EnumValue44246 + EnumValue44247 + EnumValue44248 + EnumValue44249 + EnumValue44250 + EnumValue44251 + EnumValue44252 + EnumValue44253 + EnumValue44254 + EnumValue44255 + EnumValue44256 + EnumValue44257 + EnumValue44258 + EnumValue44259 + EnumValue44260 + EnumValue44261 + EnumValue44262 + EnumValue44263 +} + +enum Enum2603 @Directive44(argument97 : ["stringValue44423"]) { + EnumValue44264 + EnumValue44265 + EnumValue44266 + EnumValue44267 + EnumValue44268 + EnumValue44269 +} + +enum Enum2604 @Directive44(argument97 : ["stringValue44431"]) { + EnumValue44270 + EnumValue44271 + EnumValue44272 + EnumValue44273 + EnumValue44274 +} + +enum Enum2605 @Directive44(argument97 : ["stringValue44434"]) { + EnumValue44275 + EnumValue44276 + EnumValue44277 +} + +enum Enum2606 @Directive44(argument97 : ["stringValue44445"]) { + EnumValue44278 + EnumValue44279 + EnumValue44280 + EnumValue44281 + EnumValue44282 +} + +enum Enum2607 @Directive44(argument97 : ["stringValue44446"]) { + EnumValue44283 + EnumValue44284 + EnumValue44285 +} + +enum Enum2608 @Directive44(argument97 : ["stringValue44449"]) { + EnumValue44286 + EnumValue44287 + EnumValue44288 + EnumValue44289 + EnumValue44290 +} + +enum Enum2609 @Directive44(argument97 : ["stringValue44454"]) { + EnumValue44291 + EnumValue44292 + EnumValue44293 + EnumValue44294 + EnumValue44295 +} + +enum Enum261 @Directive19(argument57 : "stringValue4679") @Directive22(argument62 : "stringValue4678") @Directive44(argument97 : ["stringValue4680", "stringValue4681"]) { + EnumValue5039 + EnumValue5040 + EnumValue5041 +} + +enum Enum2610 @Directive44(argument97 : ["stringValue44459"]) { + EnumValue44296 + EnumValue44297 + EnumValue44298 + EnumValue44299 + EnumValue44300 +} + +enum Enum2611 @Directive44(argument97 : ["stringValue44462"]) { + EnumValue44301 + EnumValue44302 + EnumValue44303 + EnumValue44304 + EnumValue44305 + EnumValue44306 + EnumValue44307 + EnumValue44308 +} + +enum Enum2612 @Directive44(argument97 : ["stringValue44467"]) { + EnumValue44309 + EnumValue44310 + EnumValue44311 + EnumValue44312 + EnumValue44313 +} + +enum Enum2613 @Directive44(argument97 : ["stringValue44470"]) { + EnumValue44314 + EnumValue44315 + EnumValue44316 + EnumValue44317 + EnumValue44318 + EnumValue44319 + EnumValue44320 +} + +enum Enum2614 @Directive44(argument97 : ["stringValue44473"]) { + EnumValue44321 + EnumValue44322 + EnumValue44323 + EnumValue44324 +} + +enum Enum2615 @Directive44(argument97 : ["stringValue44478"]) { + EnumValue44325 + EnumValue44326 + EnumValue44327 + EnumValue44328 + EnumValue44329 + EnumValue44330 +} + +enum Enum2616 @Directive44(argument97 : ["stringValue44481"]) { + EnumValue44331 + EnumValue44332 + EnumValue44333 + EnumValue44334 + EnumValue44335 + EnumValue44336 +} + +enum Enum2617 @Directive44(argument97 : ["stringValue44484"]) { + EnumValue44337 + EnumValue44338 + EnumValue44339 +} + +enum Enum2618 @Directive44(argument97 : ["stringValue44489"]) { + EnumValue44340 + EnumValue44341 + EnumValue44342 + EnumValue44343 + EnumValue44344 + EnumValue44345 + EnumValue44346 + EnumValue44347 + EnumValue44348 + EnumValue44349 + EnumValue44350 +} + +enum Enum2619 @Directive44(argument97 : ["stringValue44494"]) { + EnumValue44351 + EnumValue44352 + EnumValue44353 +} + +enum Enum262 @Directive19(argument57 : "stringValue4761") @Directive22(argument62 : "stringValue4760") @Directive44(argument97 : ["stringValue4762", "stringValue4763"]) { + EnumValue5042 + EnumValue5043 + EnumValue5044 + EnumValue5045 +} + +enum Enum2620 @Directive44(argument97 : ["stringValue44497"]) { + EnumValue44354 + EnumValue44355 + EnumValue44356 + EnumValue44357 +} + +enum Enum2621 @Directive44(argument97 : ["stringValue44502"]) { + EnumValue44358 + EnumValue44359 + EnumValue44360 + EnumValue44361 + EnumValue44362 + EnumValue44363 + EnumValue44364 +} + +enum Enum2622 @Directive44(argument97 : ["stringValue44505"]) { + EnumValue44365 + EnumValue44366 + EnumValue44367 +} + +enum Enum2623 @Directive44(argument97 : ["stringValue44508"]) { + EnumValue44368 + EnumValue44369 + EnumValue44370 +} + +enum Enum2624 @Directive44(argument97 : ["stringValue44511"]) { + EnumValue44371 + EnumValue44372 + EnumValue44373 +} + +enum Enum2625 @Directive44(argument97 : ["stringValue44514"]) { + EnumValue44374 + EnumValue44375 + EnumValue44376 + EnumValue44377 +} + +enum Enum2626 @Directive44(argument97 : ["stringValue44521"]) { + EnumValue44378 + EnumValue44379 +} + +enum Enum2627 @Directive44(argument97 : ["stringValue44524"]) { + EnumValue44380 + EnumValue44381 + EnumValue44382 + EnumValue44383 + EnumValue44384 + EnumValue44385 + EnumValue44386 + EnumValue44387 +} + +enum Enum2628 @Directive44(argument97 : ["stringValue44529"]) { + EnumValue44388 + EnumValue44389 + EnumValue44390 +} + +enum Enum2629 @Directive44(argument97 : ["stringValue44530"]) { + EnumValue44391 + EnumValue44392 + EnumValue44393 + EnumValue44394 + EnumValue44395 + EnumValue44396 + EnumValue44397 +} + +enum Enum263 @Directive19(argument57 : "stringValue4765") @Directive22(argument62 : "stringValue4764") @Directive44(argument97 : ["stringValue4766", "stringValue4767"]) { + EnumValue5046 + EnumValue5047 + EnumValue5048 + EnumValue5049 + EnumValue5050 + EnumValue5051 +} + +enum Enum2630 @Directive44(argument97 : ["stringValue44541"]) { + EnumValue44398 + EnumValue44399 + EnumValue44400 + EnumValue44401 +} + +enum Enum2631 @Directive44(argument97 : ["stringValue44544"]) { + EnumValue44402 + EnumValue44403 + EnumValue44404 +} + +enum Enum2632 @Directive44(argument97 : ["stringValue44547"]) { + EnumValue44405 + EnumValue44406 +} + +enum Enum2633 @Directive44(argument97 : ["stringValue44550"]) { + EnumValue44407 + EnumValue44408 + EnumValue44409 + EnumValue44410 +} + +enum Enum2634 @Directive44(argument97 : ["stringValue44551"]) { + EnumValue44411 + EnumValue44412 +} + +enum Enum2635 @Directive44(argument97 : ["stringValue44554"]) { + EnumValue44413 + EnumValue44414 + EnumValue44415 +} + +enum Enum2636 @Directive44(argument97 : ["stringValue44555"]) { + EnumValue44416 + EnumValue44417 + EnumValue44418 + EnumValue44419 + EnumValue44420 + EnumValue44421 + EnumValue44422 + EnumValue44423 + EnumValue44424 + EnumValue44425 + EnumValue44426 + EnumValue44427 +} + +enum Enum2637 @Directive44(argument97 : ["stringValue44558"]) { + EnumValue44428 + EnumValue44429 + EnumValue44430 +} + +enum Enum2638 @Directive44(argument97 : ["stringValue44561"]) { + EnumValue44431 + EnumValue44432 + EnumValue44433 + EnumValue44434 + EnumValue44435 +} + +enum Enum2639 @Directive44(argument97 : ["stringValue44564"]) { + EnumValue44436 + EnumValue44437 + EnumValue44438 + EnumValue44439 + EnumValue44440 + EnumValue44441 + EnumValue44442 + EnumValue44443 + EnumValue44444 + EnumValue44445 + EnumValue44446 + EnumValue44447 + EnumValue44448 + EnumValue44449 +} + +enum Enum264 @Directive19(argument57 : "stringValue4769") @Directive22(argument62 : "stringValue4768") @Directive44(argument97 : ["stringValue4770", "stringValue4771"]) { + EnumValue5052 + EnumValue5053 + EnumValue5054 + EnumValue5055 + EnumValue5056 +} + +enum Enum2640 @Directive44(argument97 : ["stringValue44567"]) { + EnumValue44450 + EnumValue44451 + EnumValue44452 + EnumValue44453 + EnumValue44454 + EnumValue44455 + EnumValue44456 + EnumValue44457 + EnumValue44458 + EnumValue44459 + EnumValue44460 +} + +enum Enum2641 @Directive44(argument97 : ["stringValue44568"]) { + EnumValue44461 + EnumValue44462 + EnumValue44463 + EnumValue44464 + EnumValue44465 + EnumValue44466 + EnumValue44467 + EnumValue44468 + EnumValue44469 + EnumValue44470 + EnumValue44471 + EnumValue44472 + EnumValue44473 + EnumValue44474 + EnumValue44475 + EnumValue44476 + EnumValue44477 + EnumValue44478 + EnumValue44479 + EnumValue44480 + EnumValue44481 + EnumValue44482 + EnumValue44483 + EnumValue44484 + EnumValue44485 + EnumValue44486 + EnumValue44487 + EnumValue44488 + EnumValue44489 + EnumValue44490 + EnumValue44491 + EnumValue44492 + EnumValue44493 +} + +enum Enum2642 @Directive44(argument97 : ["stringValue44573"]) { + EnumValue44494 + EnumValue44495 + EnumValue44496 + EnumValue44497 + EnumValue44498 + EnumValue44499 + EnumValue44500 + EnumValue44501 + EnumValue44502 + EnumValue44503 + EnumValue44504 + EnumValue44505 + EnumValue44506 + EnumValue44507 + EnumValue44508 + EnumValue44509 + EnumValue44510 + EnumValue44511 + EnumValue44512 + EnumValue44513 + EnumValue44514 + EnumValue44515 + EnumValue44516 + EnumValue44517 + EnumValue44518 + EnumValue44519 + EnumValue44520 + EnumValue44521 + EnumValue44522 + EnumValue44523 + EnumValue44524 + EnumValue44525 + EnumValue44526 + EnumValue44527 + EnumValue44528 + EnumValue44529 + EnumValue44530 +} + +enum Enum2643 @Directive44(argument97 : ["stringValue44574"]) { + EnumValue44531 + EnumValue44532 + EnumValue44533 + EnumValue44534 + EnumValue44535 +} + +enum Enum2644 @Directive44(argument97 : ["stringValue44577"]) { + EnumValue44536 + EnumValue44537 + EnumValue44538 +} + +enum Enum2645 @Directive44(argument97 : ["stringValue44587"]) { + EnumValue44539 + EnumValue44540 + EnumValue44541 + EnumValue44542 +} + +enum Enum2646 @Directive44(argument97 : ["stringValue44590"]) { + EnumValue44543 + EnumValue44544 + EnumValue44545 +} + +enum Enum2647 @Directive44(argument97 : ["stringValue44591"]) { + EnumValue44546 + EnumValue44547 + EnumValue44548 +} + +enum Enum2648 @Directive44(argument97 : ["stringValue44592"]) { + EnumValue44549 + EnumValue44550 + EnumValue44551 + EnumValue44552 +} + +enum Enum2649 @Directive44(argument97 : ["stringValue44597"]) { + EnumValue44553 + EnumValue44554 + EnumValue44555 + EnumValue44556 +} + +enum Enum265 @Directive19(argument57 : "stringValue4773") @Directive22(argument62 : "stringValue4772") @Directive44(argument97 : ["stringValue4774", "stringValue4775"]) { + EnumValue5057 + EnumValue5058 + EnumValue5059 + EnumValue5060 +} + +enum Enum2650 @Directive44(argument97 : ["stringValue44598"]) { + EnumValue44557 + EnumValue44558 + EnumValue44559 + EnumValue44560 + EnumValue44561 + EnumValue44562 + EnumValue44563 +} + +enum Enum2651 @Directive44(argument97 : ["stringValue44601"]) { + EnumValue44564 + EnumValue44565 + EnumValue44566 + EnumValue44567 + EnumValue44568 + EnumValue44569 + EnumValue44570 + EnumValue44571 + EnumValue44572 + EnumValue44573 + EnumValue44574 + EnumValue44575 + EnumValue44576 + EnumValue44577 + EnumValue44578 + EnumValue44579 + EnumValue44580 + EnumValue44581 + EnumValue44582 + EnumValue44583 + EnumValue44584 + EnumValue44585 + EnumValue44586 + EnumValue44587 + EnumValue44588 + EnumValue44589 + EnumValue44590 + EnumValue44591 + EnumValue44592 + EnumValue44593 + EnumValue44594 + EnumValue44595 + EnumValue44596 + EnumValue44597 + EnumValue44598 + EnumValue44599 + EnumValue44600 + EnumValue44601 + EnumValue44602 + EnumValue44603 + EnumValue44604 + EnumValue44605 + EnumValue44606 + EnumValue44607 + EnumValue44608 + EnumValue44609 + EnumValue44610 + EnumValue44611 + EnumValue44612 + EnumValue44613 + EnumValue44614 + EnumValue44615 + EnumValue44616 + EnumValue44617 + EnumValue44618 + EnumValue44619 + EnumValue44620 + EnumValue44621 + EnumValue44622 + EnumValue44623 + EnumValue44624 + EnumValue44625 +} + +enum Enum2652 @Directive44(argument97 : ["stringValue44611"]) { + EnumValue44626 + EnumValue44627 +} + +enum Enum2653 @Directive44(argument97 : ["stringValue44616"]) { + EnumValue44628 + EnumValue44629 + EnumValue44630 + EnumValue44631 +} + +enum Enum2654 @Directive44(argument97 : ["stringValue44617"]) { + EnumValue44632 + EnumValue44633 + EnumValue44634 + EnumValue44635 + EnumValue44636 + EnumValue44637 + EnumValue44638 + EnumValue44639 + EnumValue44640 + EnumValue44641 + EnumValue44642 + EnumValue44643 + EnumValue44644 + EnumValue44645 + EnumValue44646 + EnumValue44647 + EnumValue44648 +} + +enum Enum2655 @Directive44(argument97 : ["stringValue44618"]) { + EnumValue44649 + EnumValue44650 + EnumValue44651 +} + +enum Enum2656 @Directive44(argument97 : ["stringValue44621"]) { + EnumValue44652 + EnumValue44653 + EnumValue44654 + EnumValue44655 + EnumValue44656 + EnumValue44657 + EnumValue44658 +} + +enum Enum2657 @Directive44(argument97 : ["stringValue44627"]) { + EnumValue44659 + EnumValue44660 + EnumValue44661 +} + +enum Enum2658 @Directive44(argument97 : ["stringValue44636"]) { + EnumValue44662 + EnumValue44663 + EnumValue44664 + EnumValue44665 + EnumValue44666 + EnumValue44667 + EnumValue44668 +} + +enum Enum2659 @Directive44(argument97 : ["stringValue44637"]) { + EnumValue44669 + EnumValue44670 + EnumValue44671 + EnumValue44672 + EnumValue44673 + EnumValue44674 + EnumValue44675 + EnumValue44676 + EnumValue44677 + EnumValue44678 +} + +enum Enum266 @Directive19(argument57 : "stringValue4781") @Directive22(argument62 : "stringValue4780") @Directive44(argument97 : ["stringValue4782", "stringValue4783"]) { + EnumValue5061 + EnumValue5062 + EnumValue5063 + EnumValue5064 + EnumValue5065 + EnumValue5066 + EnumValue5067 + EnumValue5068 +} + +enum Enum2660 @Directive44(argument97 : ["stringValue44638"]) { + EnumValue44679 + EnumValue44680 + EnumValue44681 + EnumValue44682 + EnumValue44683 + EnumValue44684 + EnumValue44685 + EnumValue44686 + EnumValue44687 +} + +enum Enum2661 @Directive44(argument97 : ["stringValue44639"]) { + EnumValue44688 + EnumValue44689 + EnumValue44690 + EnumValue44691 + EnumValue44692 + EnumValue44693 +} + +enum Enum2662 @Directive44(argument97 : ["stringValue44644"]) { + EnumValue44694 + EnumValue44695 + EnumValue44696 + EnumValue44697 + EnumValue44698 + EnumValue44699 + EnumValue44700 + EnumValue44701 + EnumValue44702 +} + +enum Enum2663 @Directive44(argument97 : ["stringValue44647"]) { + EnumValue44703 + EnumValue44704 + EnumValue44705 + EnumValue44706 + EnumValue44707 + EnumValue44708 + EnumValue44709 + EnumValue44710 + EnumValue44711 + EnumValue44712 + EnumValue44713 + EnumValue44714 + EnumValue44715 + EnumValue44716 + EnumValue44717 + EnumValue44718 + EnumValue44719 + EnumValue44720 + EnumValue44721 + EnumValue44722 + EnumValue44723 + EnumValue44724 + EnumValue44725 + EnumValue44726 + EnumValue44727 + EnumValue44728 + EnumValue44729 + EnumValue44730 + EnumValue44731 + EnumValue44732 + EnumValue44733 + EnumValue44734 + EnumValue44735 + EnumValue44736 + EnumValue44737 + EnumValue44738 + EnumValue44739 + EnumValue44740 + EnumValue44741 + EnumValue44742 + EnumValue44743 + EnumValue44744 + EnumValue44745 + EnumValue44746 + EnumValue44747 + EnumValue44748 + EnumValue44749 + EnumValue44750 + EnumValue44751 + EnumValue44752 + EnumValue44753 + EnumValue44754 + EnumValue44755 + EnumValue44756 + EnumValue44757 + EnumValue44758 + EnumValue44759 + EnumValue44760 + EnumValue44761 + EnumValue44762 + EnumValue44763 + EnumValue44764 + EnumValue44765 + EnumValue44766 + EnumValue44767 + EnumValue44768 + EnumValue44769 + EnumValue44770 + EnumValue44771 + EnumValue44772 + EnumValue44773 + EnumValue44774 + EnumValue44775 + EnumValue44776 + EnumValue44777 + EnumValue44778 + EnumValue44779 + EnumValue44780 + EnumValue44781 + EnumValue44782 + EnumValue44783 + EnumValue44784 + EnumValue44785 + EnumValue44786 + EnumValue44787 + EnumValue44788 + EnumValue44789 + EnumValue44790 + EnumValue44791 + EnumValue44792 + EnumValue44793 + EnumValue44794 + EnumValue44795 + EnumValue44796 + EnumValue44797 + EnumValue44798 + EnumValue44799 + EnumValue44800 + EnumValue44801 + EnumValue44802 + EnumValue44803 + EnumValue44804 + EnumValue44805 + EnumValue44806 + EnumValue44807 + EnumValue44808 + EnumValue44809 + EnumValue44810 + EnumValue44811 + EnumValue44812 + EnumValue44813 + EnumValue44814 + EnumValue44815 + EnumValue44816 + EnumValue44817 + EnumValue44818 + EnumValue44819 + EnumValue44820 + EnumValue44821 + EnumValue44822 + EnumValue44823 + EnumValue44824 + EnumValue44825 + EnumValue44826 + EnumValue44827 + EnumValue44828 + EnumValue44829 + EnumValue44830 + EnumValue44831 + EnumValue44832 + EnumValue44833 + EnumValue44834 +} + +enum Enum2664 @Directive44(argument97 : ["stringValue44648"]) { + EnumValue44835 + EnumValue44836 + EnumValue44837 + EnumValue44838 + EnumValue44839 + EnumValue44840 + EnumValue44841 + EnumValue44842 + EnumValue44843 + EnumValue44844 + EnumValue44845 + EnumValue44846 + EnumValue44847 + EnumValue44848 + EnumValue44849 + EnumValue44850 + EnumValue44851 + EnumValue44852 + EnumValue44853 + EnumValue44854 + EnumValue44855 + EnumValue44856 + EnumValue44857 + EnumValue44858 + EnumValue44859 + EnumValue44860 + EnumValue44861 + EnumValue44862 + EnumValue44863 + EnumValue44864 + EnumValue44865 + EnumValue44866 + EnumValue44867 + EnumValue44868 + EnumValue44869 + EnumValue44870 + EnumValue44871 + EnumValue44872 + EnumValue44873 + EnumValue44874 + EnumValue44875 + EnumValue44876 + EnumValue44877 + EnumValue44878 + EnumValue44879 + EnumValue44880 + EnumValue44881 + EnumValue44882 + EnumValue44883 + EnumValue44884 + EnumValue44885 + EnumValue44886 + EnumValue44887 + EnumValue44888 + EnumValue44889 + EnumValue44890 + EnumValue44891 + EnumValue44892 + EnumValue44893 + EnumValue44894 + EnumValue44895 + EnumValue44896 + EnumValue44897 + EnumValue44898 + EnumValue44899 + EnumValue44900 + EnumValue44901 + EnumValue44902 + EnumValue44903 + EnumValue44904 + EnumValue44905 + EnumValue44906 + EnumValue44907 + EnumValue44908 + EnumValue44909 + EnumValue44910 + EnumValue44911 + EnumValue44912 + EnumValue44913 + EnumValue44914 + EnumValue44915 + EnumValue44916 + EnumValue44917 + EnumValue44918 + EnumValue44919 + EnumValue44920 + EnumValue44921 + EnumValue44922 + EnumValue44923 + EnumValue44924 + EnumValue44925 + EnumValue44926 + EnumValue44927 + EnumValue44928 + EnumValue44929 + EnumValue44930 + EnumValue44931 + EnumValue44932 + EnumValue44933 + EnumValue44934 + EnumValue44935 + EnumValue44936 + EnumValue44937 + EnumValue44938 + EnumValue44939 + EnumValue44940 + EnumValue44941 + EnumValue44942 + EnumValue44943 + EnumValue44944 + EnumValue44945 + EnumValue44946 + EnumValue44947 + EnumValue44948 + EnumValue44949 + EnumValue44950 + EnumValue44951 + EnumValue44952 + EnumValue44953 + EnumValue44954 + EnumValue44955 + EnumValue44956 + EnumValue44957 + EnumValue44958 + EnumValue44959 + EnumValue44960 + EnumValue44961 + EnumValue44962 + EnumValue44963 + EnumValue44964 + EnumValue44965 + EnumValue44966 + EnumValue44967 + EnumValue44968 + EnumValue44969 + EnumValue44970 + EnumValue44971 + EnumValue44972 + EnumValue44973 + EnumValue44974 + EnumValue44975 + EnumValue44976 + EnumValue44977 + EnumValue44978 + EnumValue44979 + EnumValue44980 + EnumValue44981 + EnumValue44982 + EnumValue44983 + EnumValue44984 + EnumValue44985 + EnumValue44986 + EnumValue44987 + EnumValue44988 + EnumValue44989 + EnumValue44990 + EnumValue44991 + EnumValue44992 + EnumValue44993 + EnumValue44994 + EnumValue44995 + EnumValue44996 + EnumValue44997 + EnumValue44998 + EnumValue44999 + EnumValue45000 + EnumValue45001 + EnumValue45002 + EnumValue45003 + EnumValue45004 + EnumValue45005 + EnumValue45006 + EnumValue45007 + EnumValue45008 + EnumValue45009 + EnumValue45010 + EnumValue45011 + EnumValue45012 + EnumValue45013 + EnumValue45014 + EnumValue45015 + EnumValue45016 + EnumValue45017 + EnumValue45018 + EnumValue45019 + EnumValue45020 + EnumValue45021 + EnumValue45022 + EnumValue45023 + EnumValue45024 + EnumValue45025 + EnumValue45026 + EnumValue45027 + EnumValue45028 + EnumValue45029 + EnumValue45030 + EnumValue45031 + EnumValue45032 + EnumValue45033 + EnumValue45034 + EnumValue45035 + EnumValue45036 + EnumValue45037 + EnumValue45038 + EnumValue45039 + EnumValue45040 + EnumValue45041 + EnumValue45042 + EnumValue45043 + EnumValue45044 + EnumValue45045 + EnumValue45046 + EnumValue45047 + EnumValue45048 + EnumValue45049 + EnumValue45050 + EnumValue45051 + EnumValue45052 + EnumValue45053 + EnumValue45054 + EnumValue45055 + EnumValue45056 + EnumValue45057 + EnumValue45058 + EnumValue45059 + EnumValue45060 + EnumValue45061 + EnumValue45062 + EnumValue45063 + EnumValue45064 + EnumValue45065 + EnumValue45066 + EnumValue45067 + EnumValue45068 + EnumValue45069 + EnumValue45070 + EnumValue45071 + EnumValue45072 + EnumValue45073 + EnumValue45074 + EnumValue45075 + EnumValue45076 + EnumValue45077 + EnumValue45078 + EnumValue45079 + EnumValue45080 + EnumValue45081 + EnumValue45082 + EnumValue45083 + EnumValue45084 + EnumValue45085 + EnumValue45086 + EnumValue45087 + EnumValue45088 + EnumValue45089 + EnumValue45090 + EnumValue45091 + EnumValue45092 + EnumValue45093 + EnumValue45094 + EnumValue45095 + EnumValue45096 + EnumValue45097 + EnumValue45098 + EnumValue45099 + EnumValue45100 + EnumValue45101 + EnumValue45102 + EnumValue45103 + EnumValue45104 + EnumValue45105 + EnumValue45106 + EnumValue45107 + EnumValue45108 + EnumValue45109 + EnumValue45110 + EnumValue45111 + EnumValue45112 + EnumValue45113 + EnumValue45114 + EnumValue45115 + EnumValue45116 + EnumValue45117 + EnumValue45118 + EnumValue45119 + EnumValue45120 + EnumValue45121 + EnumValue45122 + EnumValue45123 + EnumValue45124 + EnumValue45125 + EnumValue45126 + EnumValue45127 + EnumValue45128 + EnumValue45129 + EnumValue45130 + EnumValue45131 + EnumValue45132 + EnumValue45133 + EnumValue45134 + EnumValue45135 + EnumValue45136 + EnumValue45137 + EnumValue45138 + EnumValue45139 + EnumValue45140 + EnumValue45141 + EnumValue45142 + EnumValue45143 + EnumValue45144 + EnumValue45145 + EnumValue45146 + EnumValue45147 + EnumValue45148 + EnumValue45149 + EnumValue45150 + EnumValue45151 + EnumValue45152 + EnumValue45153 + EnumValue45154 + EnumValue45155 + EnumValue45156 + EnumValue45157 + EnumValue45158 + EnumValue45159 + EnumValue45160 + EnumValue45161 + EnumValue45162 + EnumValue45163 + EnumValue45164 + EnumValue45165 + EnumValue45166 + EnumValue45167 + EnumValue45168 + EnumValue45169 + EnumValue45170 + EnumValue45171 + EnumValue45172 + EnumValue45173 + EnumValue45174 + EnumValue45175 + EnumValue45176 + EnumValue45177 + EnumValue45178 + EnumValue45179 + EnumValue45180 + EnumValue45181 + EnumValue45182 + EnumValue45183 + EnumValue45184 + EnumValue45185 + EnumValue45186 + EnumValue45187 + EnumValue45188 + EnumValue45189 + EnumValue45190 + EnumValue45191 + EnumValue45192 + EnumValue45193 + EnumValue45194 + EnumValue45195 + EnumValue45196 + EnumValue45197 + EnumValue45198 + EnumValue45199 + EnumValue45200 + EnumValue45201 + EnumValue45202 + EnumValue45203 + EnumValue45204 + EnumValue45205 + EnumValue45206 + EnumValue45207 + EnumValue45208 + EnumValue45209 + EnumValue45210 + EnumValue45211 + EnumValue45212 + EnumValue45213 + EnumValue45214 + EnumValue45215 + EnumValue45216 + EnumValue45217 + EnumValue45218 + EnumValue45219 + EnumValue45220 + EnumValue45221 + EnumValue45222 + EnumValue45223 + EnumValue45224 + EnumValue45225 + EnumValue45226 + EnumValue45227 + EnumValue45228 + EnumValue45229 + EnumValue45230 + EnumValue45231 + EnumValue45232 + EnumValue45233 + EnumValue45234 + EnumValue45235 + EnumValue45236 + EnumValue45237 + EnumValue45238 + EnumValue45239 + EnumValue45240 + EnumValue45241 + EnumValue45242 + EnumValue45243 + EnumValue45244 + EnumValue45245 + EnumValue45246 + EnumValue45247 + EnumValue45248 + EnumValue45249 + EnumValue45250 + EnumValue45251 + EnumValue45252 + EnumValue45253 + EnumValue45254 + EnumValue45255 + EnumValue45256 + EnumValue45257 + EnumValue45258 + EnumValue45259 + EnumValue45260 + EnumValue45261 + EnumValue45262 + EnumValue45263 + EnumValue45264 + EnumValue45265 + EnumValue45266 + EnumValue45267 + EnumValue45268 + EnumValue45269 + EnumValue45270 + EnumValue45271 + EnumValue45272 + EnumValue45273 + EnumValue45274 + EnumValue45275 + EnumValue45276 + EnumValue45277 + EnumValue45278 + EnumValue45279 + EnumValue45280 + EnumValue45281 + EnumValue45282 + EnumValue45283 + EnumValue45284 + EnumValue45285 + EnumValue45286 + EnumValue45287 + EnumValue45288 + EnumValue45289 + EnumValue45290 + EnumValue45291 + EnumValue45292 + EnumValue45293 + EnumValue45294 + EnumValue45295 + EnumValue45296 + EnumValue45297 + EnumValue45298 + EnumValue45299 + EnumValue45300 + EnumValue45301 + EnumValue45302 + EnumValue45303 + EnumValue45304 + EnumValue45305 + EnumValue45306 + EnumValue45307 + EnumValue45308 + EnumValue45309 + EnumValue45310 + EnumValue45311 + EnumValue45312 + EnumValue45313 + EnumValue45314 + EnumValue45315 + EnumValue45316 + EnumValue45317 + EnumValue45318 + EnumValue45319 + EnumValue45320 + EnumValue45321 + EnumValue45322 + EnumValue45323 + EnumValue45324 + EnumValue45325 + EnumValue45326 + EnumValue45327 + EnumValue45328 + EnumValue45329 + EnumValue45330 + EnumValue45331 + EnumValue45332 + EnumValue45333 + EnumValue45334 + EnumValue45335 + EnumValue45336 + EnumValue45337 + EnumValue45338 + EnumValue45339 + EnumValue45340 + EnumValue45341 + EnumValue45342 + EnumValue45343 + EnumValue45344 + EnumValue45345 + EnumValue45346 + EnumValue45347 + EnumValue45348 + EnumValue45349 + EnumValue45350 + EnumValue45351 + EnumValue45352 + EnumValue45353 + EnumValue45354 + EnumValue45355 + EnumValue45356 + EnumValue45357 + EnumValue45358 + EnumValue45359 + EnumValue45360 + EnumValue45361 + EnumValue45362 + EnumValue45363 + EnumValue45364 + EnumValue45365 + EnumValue45366 + EnumValue45367 + EnumValue45368 + EnumValue45369 + EnumValue45370 + EnumValue45371 + EnumValue45372 + EnumValue45373 + EnumValue45374 + EnumValue45375 + EnumValue45376 + EnumValue45377 + EnumValue45378 + EnumValue45379 + EnumValue45380 + EnumValue45381 + EnumValue45382 + EnumValue45383 + EnumValue45384 + EnumValue45385 + EnumValue45386 + EnumValue45387 + EnumValue45388 + EnumValue45389 + EnumValue45390 + EnumValue45391 + EnumValue45392 + EnumValue45393 + EnumValue45394 + EnumValue45395 + EnumValue45396 + EnumValue45397 + EnumValue45398 + EnumValue45399 + EnumValue45400 + EnumValue45401 + EnumValue45402 + EnumValue45403 + EnumValue45404 + EnumValue45405 + EnumValue45406 + EnumValue45407 + EnumValue45408 + EnumValue45409 + EnumValue45410 + EnumValue45411 + EnumValue45412 + EnumValue45413 + EnumValue45414 + EnumValue45415 + EnumValue45416 + EnumValue45417 + EnumValue45418 + EnumValue45419 + EnumValue45420 + EnumValue45421 + EnumValue45422 + EnumValue45423 + EnumValue45424 + EnumValue45425 + EnumValue45426 + EnumValue45427 + EnumValue45428 + EnumValue45429 + EnumValue45430 + EnumValue45431 + EnumValue45432 + EnumValue45433 + EnumValue45434 + EnumValue45435 + EnumValue45436 + EnumValue45437 + EnumValue45438 + EnumValue45439 + EnumValue45440 + EnumValue45441 + EnumValue45442 + EnumValue45443 + EnumValue45444 + EnumValue45445 + EnumValue45446 + EnumValue45447 + EnumValue45448 + EnumValue45449 + EnumValue45450 + EnumValue45451 + EnumValue45452 + EnumValue45453 + EnumValue45454 + EnumValue45455 + EnumValue45456 + EnumValue45457 + EnumValue45458 + EnumValue45459 + EnumValue45460 + EnumValue45461 + EnumValue45462 + EnumValue45463 + EnumValue45464 + EnumValue45465 + EnumValue45466 + EnumValue45467 + EnumValue45468 + EnumValue45469 + EnumValue45470 + EnumValue45471 + EnumValue45472 + EnumValue45473 + EnumValue45474 + EnumValue45475 + EnumValue45476 + EnumValue45477 + EnumValue45478 + EnumValue45479 + EnumValue45480 + EnumValue45481 + EnumValue45482 + EnumValue45483 + EnumValue45484 + EnumValue45485 + EnumValue45486 + EnumValue45487 + EnumValue45488 + EnumValue45489 + EnumValue45490 + EnumValue45491 + EnumValue45492 + EnumValue45493 + EnumValue45494 + EnumValue45495 + EnumValue45496 + EnumValue45497 + EnumValue45498 + EnumValue45499 + EnumValue45500 + EnumValue45501 + EnumValue45502 + EnumValue45503 + EnumValue45504 + EnumValue45505 + EnumValue45506 + EnumValue45507 + EnumValue45508 + EnumValue45509 + EnumValue45510 + EnumValue45511 + EnumValue45512 + EnumValue45513 + EnumValue45514 + EnumValue45515 + EnumValue45516 + EnumValue45517 + EnumValue45518 + EnumValue45519 + EnumValue45520 + EnumValue45521 + EnumValue45522 + EnumValue45523 + EnumValue45524 + EnumValue45525 + EnumValue45526 + EnumValue45527 + EnumValue45528 + EnumValue45529 + EnumValue45530 + EnumValue45531 + EnumValue45532 + EnumValue45533 + EnumValue45534 + EnumValue45535 + EnumValue45536 + EnumValue45537 + EnumValue45538 + EnumValue45539 + EnumValue45540 + EnumValue45541 + EnumValue45542 + EnumValue45543 + EnumValue45544 + EnumValue45545 + EnumValue45546 + EnumValue45547 + EnumValue45548 + EnumValue45549 + EnumValue45550 + EnumValue45551 + EnumValue45552 + EnumValue45553 + EnumValue45554 + EnumValue45555 + EnumValue45556 + EnumValue45557 + EnumValue45558 + EnumValue45559 + EnumValue45560 + EnumValue45561 + EnumValue45562 + EnumValue45563 + EnumValue45564 + EnumValue45565 + EnumValue45566 + EnumValue45567 + EnumValue45568 + EnumValue45569 + EnumValue45570 + EnumValue45571 + EnumValue45572 + EnumValue45573 + EnumValue45574 + EnumValue45575 + EnumValue45576 + EnumValue45577 + EnumValue45578 + EnumValue45579 + EnumValue45580 + EnumValue45581 + EnumValue45582 + EnumValue45583 + EnumValue45584 + EnumValue45585 + EnumValue45586 + EnumValue45587 + EnumValue45588 + EnumValue45589 + EnumValue45590 + EnumValue45591 + EnumValue45592 + EnumValue45593 + EnumValue45594 + EnumValue45595 + EnumValue45596 + EnumValue45597 + EnumValue45598 + EnumValue45599 + EnumValue45600 + EnumValue45601 + EnumValue45602 + EnumValue45603 + EnumValue45604 + EnumValue45605 + EnumValue45606 + EnumValue45607 + EnumValue45608 + EnumValue45609 + EnumValue45610 + EnumValue45611 + EnumValue45612 + EnumValue45613 + EnumValue45614 + EnumValue45615 + EnumValue45616 + EnumValue45617 + EnumValue45618 + EnumValue45619 + EnumValue45620 + EnumValue45621 + EnumValue45622 + EnumValue45623 + EnumValue45624 + EnumValue45625 + EnumValue45626 + EnumValue45627 + EnumValue45628 + EnumValue45629 + EnumValue45630 + EnumValue45631 + EnumValue45632 + EnumValue45633 + EnumValue45634 + EnumValue45635 + EnumValue45636 + EnumValue45637 + EnumValue45638 + EnumValue45639 + EnumValue45640 + EnumValue45641 + EnumValue45642 + EnumValue45643 + EnumValue45644 + EnumValue45645 + EnumValue45646 + EnumValue45647 + EnumValue45648 + EnumValue45649 + EnumValue45650 + EnumValue45651 + EnumValue45652 + EnumValue45653 + EnumValue45654 + EnumValue45655 + EnumValue45656 + EnumValue45657 + EnumValue45658 + EnumValue45659 + EnumValue45660 + EnumValue45661 + EnumValue45662 + EnumValue45663 + EnumValue45664 + EnumValue45665 + EnumValue45666 + EnumValue45667 + EnumValue45668 + EnumValue45669 + EnumValue45670 + EnumValue45671 + EnumValue45672 + EnumValue45673 + EnumValue45674 + EnumValue45675 + EnumValue45676 + EnumValue45677 + EnumValue45678 + EnumValue45679 + EnumValue45680 + EnumValue45681 + EnumValue45682 + EnumValue45683 + EnumValue45684 + EnumValue45685 + EnumValue45686 + EnumValue45687 + EnumValue45688 + EnumValue45689 + EnumValue45690 + EnumValue45691 + EnumValue45692 + EnumValue45693 + EnumValue45694 + EnumValue45695 + EnumValue45696 + EnumValue45697 + EnumValue45698 + EnumValue45699 + EnumValue45700 + EnumValue45701 + EnumValue45702 + EnumValue45703 + EnumValue45704 + EnumValue45705 + EnumValue45706 + EnumValue45707 + EnumValue45708 + EnumValue45709 + EnumValue45710 + EnumValue45711 + EnumValue45712 + EnumValue45713 + EnumValue45714 + EnumValue45715 + EnumValue45716 + EnumValue45717 + EnumValue45718 + EnumValue45719 + EnumValue45720 + EnumValue45721 + EnumValue45722 + EnumValue45723 + EnumValue45724 + EnumValue45725 + EnumValue45726 + EnumValue45727 + EnumValue45728 + EnumValue45729 + EnumValue45730 + EnumValue45731 + EnumValue45732 + EnumValue45733 + EnumValue45734 + EnumValue45735 + EnumValue45736 + EnumValue45737 + EnumValue45738 + EnumValue45739 + EnumValue45740 + EnumValue45741 + EnumValue45742 + EnumValue45743 + EnumValue45744 + EnumValue45745 + EnumValue45746 + EnumValue45747 + EnumValue45748 + EnumValue45749 + EnumValue45750 + EnumValue45751 + EnumValue45752 + EnumValue45753 + EnumValue45754 + EnumValue45755 + EnumValue45756 + EnumValue45757 + EnumValue45758 + EnumValue45759 + EnumValue45760 + EnumValue45761 + EnumValue45762 + EnumValue45763 + EnumValue45764 + EnumValue45765 + EnumValue45766 + EnumValue45767 + EnumValue45768 + EnumValue45769 + EnumValue45770 + EnumValue45771 + EnumValue45772 + EnumValue45773 + EnumValue45774 + EnumValue45775 + EnumValue45776 + EnumValue45777 + EnumValue45778 + EnumValue45779 + EnumValue45780 + EnumValue45781 + EnumValue45782 + EnumValue45783 + EnumValue45784 + EnumValue45785 + EnumValue45786 + EnumValue45787 + EnumValue45788 + EnumValue45789 + EnumValue45790 + EnumValue45791 + EnumValue45792 + EnumValue45793 + EnumValue45794 + EnumValue45795 + EnumValue45796 + EnumValue45797 + EnumValue45798 + EnumValue45799 + EnumValue45800 + EnumValue45801 + EnumValue45802 + EnumValue45803 + EnumValue45804 + EnumValue45805 + EnumValue45806 + EnumValue45807 + EnumValue45808 + EnumValue45809 + EnumValue45810 + EnumValue45811 + EnumValue45812 + EnumValue45813 + EnumValue45814 + EnumValue45815 + EnumValue45816 + EnumValue45817 + EnumValue45818 + EnumValue45819 + EnumValue45820 + EnumValue45821 + EnumValue45822 + EnumValue45823 + EnumValue45824 + EnumValue45825 + EnumValue45826 + EnumValue45827 + EnumValue45828 + EnumValue45829 + EnumValue45830 + EnumValue45831 + EnumValue45832 + EnumValue45833 + EnumValue45834 + EnumValue45835 + EnumValue45836 + EnumValue45837 + EnumValue45838 + EnumValue45839 + EnumValue45840 + EnumValue45841 + EnumValue45842 + EnumValue45843 + EnumValue45844 + EnumValue45845 + EnumValue45846 + EnumValue45847 + EnumValue45848 + EnumValue45849 + EnumValue45850 + EnumValue45851 + EnumValue45852 + EnumValue45853 + EnumValue45854 + EnumValue45855 + EnumValue45856 + EnumValue45857 + EnumValue45858 + EnumValue45859 + EnumValue45860 + EnumValue45861 + EnumValue45862 + EnumValue45863 + EnumValue45864 + EnumValue45865 + EnumValue45866 + EnumValue45867 + EnumValue45868 + EnumValue45869 + EnumValue45870 + EnumValue45871 + EnumValue45872 + EnumValue45873 + EnumValue45874 + EnumValue45875 + EnumValue45876 + EnumValue45877 + EnumValue45878 + EnumValue45879 + EnumValue45880 + EnumValue45881 + EnumValue45882 + EnumValue45883 + EnumValue45884 + EnumValue45885 + EnumValue45886 + EnumValue45887 + EnumValue45888 + EnumValue45889 + EnumValue45890 + EnumValue45891 + EnumValue45892 + EnumValue45893 + EnumValue45894 + EnumValue45895 + EnumValue45896 + EnumValue45897 + EnumValue45898 + EnumValue45899 + EnumValue45900 + EnumValue45901 + EnumValue45902 + EnumValue45903 + EnumValue45904 + EnumValue45905 + EnumValue45906 + EnumValue45907 + EnumValue45908 + EnumValue45909 + EnumValue45910 + EnumValue45911 + EnumValue45912 + EnumValue45913 + EnumValue45914 + EnumValue45915 + EnumValue45916 + EnumValue45917 + EnumValue45918 + EnumValue45919 + EnumValue45920 + EnumValue45921 + EnumValue45922 + EnumValue45923 + EnumValue45924 + EnumValue45925 + EnumValue45926 + EnumValue45927 + EnumValue45928 + EnumValue45929 + EnumValue45930 + EnumValue45931 + EnumValue45932 + EnumValue45933 + EnumValue45934 + EnumValue45935 + EnumValue45936 + EnumValue45937 + EnumValue45938 + EnumValue45939 + EnumValue45940 + EnumValue45941 + EnumValue45942 + EnumValue45943 + EnumValue45944 + EnumValue45945 + EnumValue45946 + EnumValue45947 + EnumValue45948 + EnumValue45949 + EnumValue45950 + EnumValue45951 + EnumValue45952 + EnumValue45953 + EnumValue45954 + EnumValue45955 + EnumValue45956 + EnumValue45957 + EnumValue45958 + EnumValue45959 + EnumValue45960 + EnumValue45961 + EnumValue45962 + EnumValue45963 + EnumValue45964 + EnumValue45965 + EnumValue45966 + EnumValue45967 + EnumValue45968 + EnumValue45969 + EnumValue45970 + EnumValue45971 + EnumValue45972 + EnumValue45973 + EnumValue45974 + EnumValue45975 + EnumValue45976 + EnumValue45977 + EnumValue45978 + EnumValue45979 + EnumValue45980 + EnumValue45981 + EnumValue45982 + EnumValue45983 + EnumValue45984 + EnumValue45985 + EnumValue45986 + EnumValue45987 + EnumValue45988 + EnumValue45989 + EnumValue45990 + EnumValue45991 + EnumValue45992 + EnumValue45993 + EnumValue45994 + EnumValue45995 + EnumValue45996 + EnumValue45997 + EnumValue45998 + EnumValue45999 + EnumValue46000 + EnumValue46001 + EnumValue46002 + EnumValue46003 + EnumValue46004 + EnumValue46005 + EnumValue46006 + EnumValue46007 + EnumValue46008 + EnumValue46009 + EnumValue46010 + EnumValue46011 + EnumValue46012 + EnumValue46013 + EnumValue46014 + EnumValue46015 + EnumValue46016 + EnumValue46017 + EnumValue46018 + EnumValue46019 + EnumValue46020 + EnumValue46021 + EnumValue46022 + EnumValue46023 + EnumValue46024 + EnumValue46025 + EnumValue46026 + EnumValue46027 + EnumValue46028 + EnumValue46029 + EnumValue46030 + EnumValue46031 + EnumValue46032 + EnumValue46033 + EnumValue46034 + EnumValue46035 + EnumValue46036 + EnumValue46037 + EnumValue46038 + EnumValue46039 + EnumValue46040 + EnumValue46041 + EnumValue46042 + EnumValue46043 + EnumValue46044 + EnumValue46045 + EnumValue46046 + EnumValue46047 + EnumValue46048 + EnumValue46049 + EnumValue46050 + EnumValue46051 + EnumValue46052 + EnumValue46053 + EnumValue46054 + EnumValue46055 + EnumValue46056 + EnumValue46057 + EnumValue46058 + EnumValue46059 +} + +enum Enum2665 @Directive44(argument97 : ["stringValue44653"]) { + EnumValue46060 + EnumValue46061 + EnumValue46062 +} + +enum Enum2666 @Directive44(argument97 : ["stringValue44663"]) { + EnumValue46063 + EnumValue46064 + EnumValue46065 + EnumValue46066 + EnumValue46067 + EnumValue46068 + EnumValue46069 + EnumValue46070 + EnumValue46071 + EnumValue46072 + EnumValue46073 + EnumValue46074 + EnumValue46075 + EnumValue46076 +} + +enum Enum2667 @Directive44(argument97 : ["stringValue44668"]) { + EnumValue46077 + EnumValue46078 + EnumValue46079 + EnumValue46080 + EnumValue46081 + EnumValue46082 + EnumValue46083 + EnumValue46084 + EnumValue46085 + EnumValue46086 + EnumValue46087 + EnumValue46088 + EnumValue46089 + EnumValue46090 + EnumValue46091 +} + +enum Enum2668 @Directive44(argument97 : ["stringValue44669"]) { + EnumValue46092 + EnumValue46093 + EnumValue46094 + EnumValue46095 + EnumValue46096 + EnumValue46097 + EnumValue46098 + EnumValue46099 + EnumValue46100 +} + +enum Enum2669 @Directive44(argument97 : ["stringValue44670"]) { + EnumValue46101 + EnumValue46102 + EnumValue46103 + EnumValue46104 +} + +enum Enum267 @Directive19(argument57 : "stringValue4785") @Directive22(argument62 : "stringValue4784") @Directive44(argument97 : ["stringValue4786", "stringValue4787"]) { + EnumValue5069 + EnumValue5070 + EnumValue5071 + EnumValue5072 + EnumValue5073 + EnumValue5074 +} + +enum Enum2670 @Directive44(argument97 : ["stringValue44673"]) { + EnumValue46105 + EnumValue46106 + EnumValue46107 + EnumValue46108 + EnumValue46109 + EnumValue46110 + EnumValue46111 + EnumValue46112 +} + +enum Enum2671 @Directive44(argument97 : ["stringValue44674"]) { + EnumValue46113 + EnumValue46114 + EnumValue46115 + EnumValue46116 + EnumValue46117 + EnumValue46118 + EnumValue46119 + EnumValue46120 + EnumValue46121 + EnumValue46122 + EnumValue46123 + EnumValue46124 + EnumValue46125 + EnumValue46126 + EnumValue46127 + EnumValue46128 + EnumValue46129 + EnumValue46130 + EnumValue46131 + EnumValue46132 + EnumValue46133 + EnumValue46134 + EnumValue46135 + EnumValue46136 + EnumValue46137 + EnumValue46138 + EnumValue46139 + EnumValue46140 + EnumValue46141 + EnumValue46142 + EnumValue46143 + EnumValue46144 + EnumValue46145 + EnumValue46146 + EnumValue46147 + EnumValue46148 + EnumValue46149 + EnumValue46150 + EnumValue46151 + EnumValue46152 + EnumValue46153 + EnumValue46154 + EnumValue46155 + EnumValue46156 + EnumValue46157 + EnumValue46158 + EnumValue46159 + EnumValue46160 + EnumValue46161 +} + +enum Enum2672 @Directive44(argument97 : ["stringValue44677"]) { + EnumValue46162 + EnumValue46163 + EnumValue46164 + EnumValue46165 +} + +enum Enum2673 @Directive44(argument97 : ["stringValue44680"]) { + EnumValue46166 + EnumValue46167 + EnumValue46168 + EnumValue46169 + EnumValue46170 + EnumValue46171 + EnumValue46172 + EnumValue46173 + EnumValue46174 + EnumValue46175 + EnumValue46176 + EnumValue46177 + EnumValue46178 + EnumValue46179 + EnumValue46180 + EnumValue46181 + EnumValue46182 + EnumValue46183 + EnumValue46184 + EnumValue46185 + EnumValue46186 + EnumValue46187 + EnumValue46188 + EnumValue46189 + EnumValue46190 + EnumValue46191 + EnumValue46192 + EnumValue46193 + EnumValue46194 + EnumValue46195 + EnumValue46196 + EnumValue46197 + EnumValue46198 + EnumValue46199 + EnumValue46200 + EnumValue46201 + EnumValue46202 + EnumValue46203 + EnumValue46204 + EnumValue46205 + EnumValue46206 + EnumValue46207 + EnumValue46208 + EnumValue46209 + EnumValue46210 + EnumValue46211 + EnumValue46212 + EnumValue46213 + EnumValue46214 + EnumValue46215 + EnumValue46216 + EnumValue46217 + EnumValue46218 + EnumValue46219 + EnumValue46220 + EnumValue46221 + EnumValue46222 + EnumValue46223 + EnumValue46224 + EnumValue46225 + EnumValue46226 + EnumValue46227 + EnumValue46228 + EnumValue46229 + EnumValue46230 + EnumValue46231 + EnumValue46232 +} + +enum Enum2674 @Directive44(argument97 : ["stringValue44701"]) { + EnumValue46233 + EnumValue46234 + EnumValue46235 + EnumValue46236 +} + +enum Enum2675 @Directive44(argument97 : ["stringValue44708"]) { + EnumValue46237 + EnumValue46238 + EnumValue46239 + EnumValue46240 + EnumValue46241 + EnumValue46242 + EnumValue46243 + EnumValue46244 + EnumValue46245 +} + +enum Enum2676 @Directive44(argument97 : ["stringValue44729"]) { + EnumValue46246 + EnumValue46247 + EnumValue46248 + EnumValue46249 + EnumValue46250 + EnumValue46251 + EnumValue46252 + EnumValue46253 + EnumValue46254 + EnumValue46255 + EnumValue46256 + EnumValue46257 + EnumValue46258 + EnumValue46259 + EnumValue46260 + EnumValue46261 + EnumValue46262 +} + +enum Enum2677 @Directive44(argument97 : ["stringValue44730"]) { + EnumValue46263 + EnumValue46264 + EnumValue46265 + EnumValue46266 + EnumValue46267 + EnumValue46268 + EnumValue46269 + EnumValue46270 + EnumValue46271 +} + +enum Enum2678 @Directive44(argument97 : ["stringValue44750"]) { + EnumValue46272 + EnumValue46273 + EnumValue46274 + EnumValue46275 + EnumValue46276 + EnumValue46277 + EnumValue46278 + EnumValue46279 + EnumValue46280 + EnumValue46281 + EnumValue46282 + EnumValue46283 + EnumValue46284 + EnumValue46285 + EnumValue46286 + EnumValue46287 + EnumValue46288 +} + +enum Enum2679 @Directive44(argument97 : ["stringValue44762"]) { + EnumValue46289 + EnumValue46290 + EnumValue46291 + EnumValue46292 +} + +enum Enum268 @Directive19(argument57 : "stringValue4789") @Directive22(argument62 : "stringValue4788") @Directive44(argument97 : ["stringValue4790", "stringValue4791"]) { + EnumValue5075 + EnumValue5076 +} + +enum Enum2680 @Directive44(argument97 : ["stringValue44763"]) { + EnumValue46293 + EnumValue46294 + EnumValue46295 + EnumValue46296 + EnumValue46297 + EnumValue46298 + EnumValue46299 + EnumValue46300 + EnumValue46301 + EnumValue46302 + EnumValue46303 + EnumValue46304 + EnumValue46305 + EnumValue46306 + EnumValue46307 + EnumValue46308 +} + +enum Enum2681 @Directive44(argument97 : ["stringValue44772"]) { + EnumValue46309 + EnumValue46310 +} + +enum Enum2682 @Directive44(argument97 : ["stringValue44773"]) { + EnumValue46311 + EnumValue46312 + EnumValue46313 + EnumValue46314 +} + +enum Enum2683 @Directive44(argument97 : ["stringValue44776"]) { + EnumValue46315 + EnumValue46316 + EnumValue46317 + EnumValue46318 + EnumValue46319 + EnumValue46320 + EnumValue46321 +} + +enum Enum2684 @Directive44(argument97 : ["stringValue44777"]) { + EnumValue46322 + EnumValue46323 + EnumValue46324 + EnumValue46325 + EnumValue46326 +} + +enum Enum2685 @Directive44(argument97 : ["stringValue44780"]) { + EnumValue46327 + EnumValue46328 + EnumValue46329 + EnumValue46330 + EnumValue46331 +} + +enum Enum2686 @Directive44(argument97 : ["stringValue44785"]) { + EnumValue46332 + EnumValue46333 + EnumValue46334 +} + +enum Enum2687 @Directive44(argument97 : ["stringValue44788"]) { + EnumValue46335 + EnumValue46336 +} + +enum Enum2688 @Directive44(argument97 : ["stringValue44817"]) { + EnumValue46337 + EnumValue46338 + EnumValue46339 +} + +enum Enum2689 @Directive44(argument97 : ["stringValue44818"]) { + EnumValue46340 + EnumValue46341 + EnumValue46342 + EnumValue46343 + EnumValue46344 +} + +enum Enum269 @Directive19(argument57 : "stringValue4793") @Directive22(argument62 : "stringValue4792") @Directive44(argument97 : ["stringValue4794", "stringValue4795"]) { + EnumValue5077 + EnumValue5078 + EnumValue5079 + EnumValue5080 + EnumValue5081 +} + +enum Enum2690 @Directive44(argument97 : ["stringValue44845"]) { + EnumValue46345 + EnumValue46346 + EnumValue46347 + EnumValue46348 +} + +enum Enum2691 @Directive44(argument97 : ["stringValue45026"]) { + EnumValue46349 + EnumValue46350 + EnumValue46351 + EnumValue46352 + EnumValue46353 + EnumValue46354 +} + +enum Enum2692 @Directive44(argument97 : ["stringValue45049"]) { + EnumValue46355 + EnumValue46356 + EnumValue46357 + EnumValue46358 +} + +enum Enum2693 @Directive44(argument97 : ["stringValue45066"]) { + EnumValue46359 + EnumValue46360 + EnumValue46361 +} + +enum Enum2694 @Directive44(argument97 : ["stringValue45075"]) { + EnumValue46362 + EnumValue46363 + EnumValue46364 +} + +enum Enum2695 @Directive44(argument97 : ["stringValue45078"]) { + EnumValue46365 + EnumValue46366 + EnumValue46367 +} + +enum Enum2696 @Directive44(argument97 : ["stringValue45087"]) { + EnumValue46368 + EnumValue46369 + EnumValue46370 +} + +enum Enum2697 @Directive44(argument97 : ["stringValue45088"]) { + EnumValue46371 + EnumValue46372 + EnumValue46373 + EnumValue46374 + EnumValue46375 + EnumValue46376 + EnumValue46377 + EnumValue46378 + EnumValue46379 + EnumValue46380 + EnumValue46381 + EnumValue46382 + EnumValue46383 +} + +enum Enum2698 @Directive44(argument97 : ["stringValue45089"]) { + EnumValue46384 + EnumValue46385 + EnumValue46386 + EnumValue46387 + EnumValue46388 +} + +enum Enum2699 @Directive44(argument97 : ["stringValue45101"]) { + EnumValue46389 + EnumValue46390 + EnumValue46391 + EnumValue46392 +} + +enum Enum27 @Directive44(argument97 : ["stringValue232"]) { + EnumValue896 + EnumValue897 + EnumValue898 +} + +enum Enum270 @Directive19(argument57 : "stringValue4805") @Directive22(argument62 : "stringValue4804") @Directive44(argument97 : ["stringValue4806", "stringValue4807"]) { + EnumValue5082 + EnumValue5083 + EnumValue5084 + EnumValue5085 +} + +enum Enum2700 @Directive44(argument97 : ["stringValue45102"]) { + EnumValue46393 + EnumValue46394 + EnumValue46395 + EnumValue46396 + EnumValue46397 + EnumValue46398 + EnumValue46399 + EnumValue46400 + EnumValue46401 + EnumValue46402 + EnumValue46403 + EnumValue46404 + EnumValue46405 + EnumValue46406 + EnumValue46407 + EnumValue46408 + EnumValue46409 + EnumValue46410 + EnumValue46411 + EnumValue46412 + EnumValue46413 + EnumValue46414 + EnumValue46415 + EnumValue46416 + EnumValue46417 + EnumValue46418 + EnumValue46419 + EnumValue46420 +} + +enum Enum2701 @Directive44(argument97 : ["stringValue45107"]) { + EnumValue46421 + EnumValue46422 + EnumValue46423 + EnumValue46424 + EnumValue46425 +} + +enum Enum2702 @Directive44(argument97 : ["stringValue45108"]) { + EnumValue46426 + EnumValue46427 + EnumValue46428 + EnumValue46429 + EnumValue46430 + EnumValue46431 +} + +enum Enum2703 @Directive44(argument97 : ["stringValue45109"]) { + EnumValue46432 + EnumValue46433 + EnumValue46434 + EnumValue46435 + EnumValue46436 +} + +enum Enum2704 @Directive44(argument97 : ["stringValue45110"]) { + EnumValue46437 + EnumValue46438 + EnumValue46439 + EnumValue46440 +} + +enum Enum2705 @Directive44(argument97 : ["stringValue45111"]) { + EnumValue46441 + EnumValue46442 + EnumValue46443 + EnumValue46444 +} + +enum Enum2706 @Directive44(argument97 : ["stringValue45116"]) { + EnumValue46445 + EnumValue46446 + EnumValue46447 + EnumValue46448 +} + +enum Enum2707 @Directive44(argument97 : ["stringValue45138"]) { + EnumValue46449 + EnumValue46450 + EnumValue46451 + EnumValue46452 + EnumValue46453 + EnumValue46454 + EnumValue46455 + EnumValue46456 +} + +enum Enum2708 @Directive44(argument97 : ["stringValue45139"]) { + EnumValue46457 + EnumValue46458 +} + +enum Enum2709 @Directive44(argument97 : ["stringValue45145"]) { + EnumValue46459 + EnumValue46460 + EnumValue46461 + EnumValue46462 + EnumValue46463 + EnumValue46464 + EnumValue46465 + EnumValue46466 + EnumValue46467 + EnumValue46468 + EnumValue46469 + EnumValue46470 + EnumValue46471 + EnumValue46472 + EnumValue46473 + EnumValue46474 +} + +enum Enum271 @Directive19(argument57 : "stringValue4809") @Directive22(argument62 : "stringValue4808") @Directive44(argument97 : ["stringValue4810", "stringValue4811"]) { + EnumValue5086 + EnumValue5087 + EnumValue5088 +} + +enum Enum2710 @Directive44(argument97 : ["stringValue45157"]) { + EnumValue46475 + EnumValue46476 + EnumValue46477 + EnumValue46478 + EnumValue46479 + EnumValue46480 + EnumValue46481 + EnumValue46482 +} + +enum Enum2711 @Directive44(argument97 : ["stringValue45190"]) { + EnumValue46483 + EnumValue46484 + EnumValue46485 + EnumValue46486 +} + +enum Enum2712 @Directive44(argument97 : ["stringValue45191"]) { + EnumValue46487 + EnumValue46488 + EnumValue46489 + EnumValue46490 +} + +enum Enum2713 @Directive44(argument97 : ["stringValue45248"]) { + EnumValue46491 + EnumValue46492 + EnumValue46493 + EnumValue46494 + EnumValue46495 +} + +enum Enum2714 @Directive44(argument97 : ["stringValue45249"]) { + EnumValue46496 + EnumValue46497 + EnumValue46498 + EnumValue46499 +} + +enum Enum2715 @Directive44(argument97 : ["stringValue45306"]) { + EnumValue46500 + EnumValue46501 + EnumValue46502 + EnumValue46503 + EnumValue46504 +} + +enum Enum2716 @Directive44(argument97 : ["stringValue45324"]) { + EnumValue46505 + EnumValue46506 + EnumValue46507 +} + +enum Enum2717 @Directive44(argument97 : ["stringValue45331"]) { + EnumValue46508 + EnumValue46509 + EnumValue46510 + EnumValue46511 + EnumValue46512 +} + +enum Enum2718 @Directive44(argument97 : ["stringValue45397"]) { + EnumValue46513 + EnumValue46514 + EnumValue46515 +} + +enum Enum2719 @Directive44(argument97 : ["stringValue45424"]) { + EnumValue46516 + EnumValue46517 + EnumValue46518 +} + +enum Enum272 @Directive19(argument57 : "stringValue4832") @Directive22(argument62 : "stringValue4831") @Directive44(argument97 : ["stringValue4833", "stringValue4834"]) { + EnumValue5089 + EnumValue5090 + EnumValue5091 + EnumValue5092 + EnumValue5093 + EnumValue5094 + EnumValue5095 + EnumValue5096 + EnumValue5097 + EnumValue5098 + EnumValue5099 + EnumValue5100 + EnumValue5101 + EnumValue5102 + EnumValue5103 + EnumValue5104 + EnumValue5105 + EnumValue5106 + EnumValue5107 + EnumValue5108 + EnumValue5109 + EnumValue5110 + EnumValue5111 + EnumValue5112 + EnumValue5113 + EnumValue5114 + EnumValue5115 +} + +enum Enum2720 @Directive44(argument97 : ["stringValue45445"]) { + EnumValue46519 + EnumValue46520 + EnumValue46521 + EnumValue46522 + EnumValue46523 + EnumValue46524 + EnumValue46525 + EnumValue46526 + EnumValue46527 + EnumValue46528 + EnumValue46529 + EnumValue46530 + EnumValue46531 + EnumValue46532 + EnumValue46533 + EnumValue46534 + EnumValue46535 +} + +enum Enum2721 @Directive44(argument97 : ["stringValue45446"]) { + EnumValue46536 + EnumValue46537 + EnumValue46538 + EnumValue46539 + EnumValue46540 + EnumValue46541 + EnumValue46542 + EnumValue46543 + EnumValue46544 +} + +enum Enum2722 @Directive44(argument97 : ["stringValue45449"]) { + EnumValue46545 + EnumValue46546 + EnumValue46547 + EnumValue46548 + EnumValue46549 + EnumValue46550 + EnumValue46551 + EnumValue46552 +} + +enum Enum2723 @Directive44(argument97 : ["stringValue45450"]) { + EnumValue46553 + EnumValue46554 +} + +enum Enum2724 @Directive44(argument97 : ["stringValue45456"]) { + EnumValue46555 + EnumValue46556 + EnumValue46557 + EnumValue46558 + EnumValue46559 + EnumValue46560 + EnumValue46561 + EnumValue46562 + EnumValue46563 + EnumValue46564 + EnumValue46565 + EnumValue46566 + EnumValue46567 + EnumValue46568 + EnumValue46569 + EnumValue46570 +} + +enum Enum2725 @Directive44(argument97 : ["stringValue45468"]) { + EnumValue46571 + EnumValue46572 + EnumValue46573 + EnumValue46574 + EnumValue46575 + EnumValue46576 + EnumValue46577 + EnumValue46578 +} + +enum Enum2726 @Directive44(argument97 : ["stringValue45501"]) { + EnumValue46579 + EnumValue46580 + EnumValue46581 + EnumValue46582 +} + +enum Enum2727 @Directive44(argument97 : ["stringValue45502"]) { + EnumValue46583 + EnumValue46584 + EnumValue46585 + EnumValue46586 +} + +enum Enum2728 @Directive44(argument97 : ["stringValue45513"]) { + EnumValue46587 + EnumValue46588 + EnumValue46589 + EnumValue46590 +} + +enum Enum2729 @Directive44(argument97 : ["stringValue45526"]) { + EnumValue46591 + EnumValue46592 + EnumValue46593 + EnumValue46594 +} + +enum Enum273 @Directive19(argument57 : "stringValue4836") @Directive22(argument62 : "stringValue4835") @Directive44(argument97 : ["stringValue4837", "stringValue4838"]) { + EnumValue5116 + EnumValue5117 + EnumValue5118 + EnumValue5119 + EnumValue5120 + EnumValue5121 + EnumValue5122 + EnumValue5123 + EnumValue5124 + EnumValue5125 + EnumValue5126 + EnumValue5127 + EnumValue5128 + EnumValue5129 + EnumValue5130 + EnumValue5131 + EnumValue5132 + EnumValue5133 + EnumValue5134 + EnumValue5135 + EnumValue5136 + EnumValue5137 + EnumValue5138 + EnumValue5139 + EnumValue5140 + EnumValue5141 + EnumValue5142 + EnumValue5143 + EnumValue5144 + EnumValue5145 + EnumValue5146 + EnumValue5147 + EnumValue5148 + EnumValue5149 + EnumValue5150 + EnumValue5151 + EnumValue5152 + EnumValue5153 + EnumValue5154 + EnumValue5155 + EnumValue5156 + EnumValue5157 + EnumValue5158 + EnumValue5159 + EnumValue5160 + EnumValue5161 + EnumValue5162 + EnumValue5163 + EnumValue5164 + EnumValue5165 + EnumValue5166 + EnumValue5167 +} + +enum Enum2730 @Directive44(argument97 : ["stringValue45531"]) { + EnumValue46595 + EnumValue46596 + EnumValue46597 + EnumValue46598 + EnumValue46599 + EnumValue46600 +} + +enum Enum2731 @Directive44(argument97 : ["stringValue45536"]) { + EnumValue46601 + EnumValue46602 + EnumValue46603 +} + +enum Enum2732 @Directive44(argument97 : ["stringValue45541"]) { + EnumValue46604 + EnumValue46605 + EnumValue46606 + EnumValue46607 + EnumValue46608 + EnumValue46609 +} + +enum Enum2733 @Directive44(argument97 : ["stringValue45542"]) { + EnumValue46610 + EnumValue46611 + EnumValue46612 + EnumValue46613 + EnumValue46614 + EnumValue46615 + EnumValue46616 + EnumValue46617 +} + +enum Enum2734 @Directive44(argument97 : ["stringValue45545"]) { + EnumValue46618 + EnumValue46619 + EnumValue46620 +} + +enum Enum2735 @Directive44(argument97 : ["stringValue45552"]) { + EnumValue46621 + EnumValue46622 + EnumValue46623 +} + +enum Enum2736 @Directive44(argument97 : ["stringValue45553"]) { + EnumValue46624 + EnumValue46625 + EnumValue46626 + EnumValue46627 + EnumValue46628 + EnumValue46629 + EnumValue46630 + EnumValue46631 + EnumValue46632 + EnumValue46633 + EnumValue46634 + EnumValue46635 + EnumValue46636 +} + +enum Enum2737 @Directive44(argument97 : ["stringValue45554"]) { + EnumValue46637 + EnumValue46638 + EnumValue46639 + EnumValue46640 + EnumValue46641 +} + +enum Enum2738 @Directive44(argument97 : ["stringValue45564"]) { + EnumValue46642 + EnumValue46643 + EnumValue46644 + EnumValue46645 +} + +enum Enum2739 @Directive44(argument97 : ["stringValue45565"]) { + EnumValue46646 + EnumValue46647 + EnumValue46648 + EnumValue46649 + EnumValue46650 + EnumValue46651 + EnumValue46652 + EnumValue46653 + EnumValue46654 + EnumValue46655 + EnumValue46656 + EnumValue46657 + EnumValue46658 + EnumValue46659 + EnumValue46660 + EnumValue46661 + EnumValue46662 + EnumValue46663 + EnumValue46664 + EnumValue46665 + EnumValue46666 + EnumValue46667 + EnumValue46668 + EnumValue46669 + EnumValue46670 + EnumValue46671 + EnumValue46672 + EnumValue46673 +} + +enum Enum274 @Directive19(argument57 : "stringValue4852") @Directive22(argument62 : "stringValue4851") @Directive44(argument97 : ["stringValue4853", "stringValue4854"]) { + EnumValue5168 + EnumValue5169 + EnumValue5170 + EnumValue5171 + EnumValue5172 + EnumValue5173 + EnumValue5174 +} + +enum Enum2740 @Directive44(argument97 : ["stringValue45570"]) { + EnumValue46674 + EnumValue46675 + EnumValue46676 + EnumValue46677 + EnumValue46678 +} + +enum Enum2741 @Directive44(argument97 : ["stringValue45571"]) { + EnumValue46679 + EnumValue46680 + EnumValue46681 + EnumValue46682 + EnumValue46683 + EnumValue46684 +} + +enum Enum2742 @Directive44(argument97 : ["stringValue45572"]) { + EnumValue46685 + EnumValue46686 + EnumValue46687 + EnumValue46688 + EnumValue46689 +} + +enum Enum2743 @Directive44(argument97 : ["stringValue45573"]) { + EnumValue46690 + EnumValue46691 + EnumValue46692 + EnumValue46693 +} + +enum Enum2744 @Directive44(argument97 : ["stringValue45574"]) { + EnumValue46694 + EnumValue46695 + EnumValue46696 + EnumValue46697 + EnumValue46698 + EnumValue46699 + EnumValue46700 + EnumValue46701 + EnumValue46702 + EnumValue46703 + EnumValue46704 + EnumValue46705 + EnumValue46706 + EnumValue46707 + EnumValue46708 + EnumValue46709 + EnumValue46710 + EnumValue46711 + EnumValue46712 + EnumValue46713 + EnumValue46714 + EnumValue46715 + EnumValue46716 + EnumValue46717 + EnumValue46718 + EnumValue46719 + EnumValue46720 + EnumValue46721 + EnumValue46722 + EnumValue46723 + EnumValue46724 + EnumValue46725 +} + +enum Enum2745 @Directive44(argument97 : ["stringValue45575"]) { + EnumValue46726 + EnumValue46727 + EnumValue46728 + EnumValue46729 +} + +enum Enum2746 @Directive44(argument97 : ["stringValue45578"]) { + EnumValue46730 + EnumValue46731 + EnumValue46732 + EnumValue46733 +} + +enum Enum2747 @Directive44(argument97 : ["stringValue45598"]) { + EnumValue46734 + EnumValue46735 + EnumValue46736 + EnumValue46737 + EnumValue46738 + EnumValue46739 + EnumValue46740 + EnumValue46741 +} + +enum Enum2748 @Directive44(argument97 : ["stringValue45609"]) { + EnumValue46742 + EnumValue46743 + EnumValue46744 + EnumValue46745 + EnumValue46746 + EnumValue46747 + EnumValue46748 + EnumValue46749 + EnumValue46750 + EnumValue46751 + EnumValue46752 + EnumValue46753 + EnumValue46754 + EnumValue46755 + EnumValue46756 + EnumValue46757 + EnumValue46758 + EnumValue46759 + EnumValue46760 + EnumValue46761 + EnumValue46762 + EnumValue46763 + EnumValue46764 + EnumValue46765 + EnumValue46766 + EnumValue46767 + EnumValue46768 + EnumValue46769 + EnumValue46770 + EnumValue46771 + EnumValue46772 + EnumValue46773 + EnumValue46774 + EnumValue46775 + EnumValue46776 + EnumValue46777 + EnumValue46778 + EnumValue46779 + EnumValue46780 + EnumValue46781 +} + +enum Enum2749 @Directive44(argument97 : ["stringValue45725"]) { + EnumValue46782 + EnumValue46783 + EnumValue46784 +} + +enum Enum275 @Directive19(argument57 : "stringValue4856") @Directive22(argument62 : "stringValue4855") @Directive44(argument97 : ["stringValue4857", "stringValue4858"]) { + EnumValue5175 + EnumValue5176 +} + +enum Enum2750 @Directive44(argument97 : ["stringValue45791"]) { + EnumValue46785 + EnumValue46786 + EnumValue46787 + EnumValue46788 + EnumValue46789 +} + +enum Enum2751 @Directive44(argument97 : ["stringValue45792"]) { + EnumValue46790 + EnumValue46791 + EnumValue46792 + EnumValue46793 + EnumValue46794 + EnumValue46795 + EnumValue46796 + EnumValue46797 + EnumValue46798 + EnumValue46799 + EnumValue46800 +} + +enum Enum2752 @Directive44(argument97 : ["stringValue45793"]) { + EnumValue46801 + EnumValue46802 + EnumValue46803 +} + +enum Enum2753 @Directive44(argument97 : ["stringValue45940"]) { + EnumValue46804 + EnumValue46805 + EnumValue46806 + EnumValue46807 + EnumValue46808 +} + +enum Enum2754 @Directive44(argument97 : ["stringValue45947"]) { + EnumValue46809 + EnumValue46810 + EnumValue46811 +} + +enum Enum2755 @Directive44(argument97 : ["stringValue46121"]) { + EnumValue46812 + EnumValue46813 + EnumValue46814 + EnumValue46815 +} + +enum Enum2756 @Directive44(argument97 : ["stringValue46146"]) { + EnumValue46816 + EnumValue46817 + EnumValue46818 + EnumValue46819 + EnumValue46820 + EnumValue46821 + EnumValue46822 +} + +enum Enum2757 @Directive44(argument97 : ["stringValue46178"]) { + EnumValue46823 + EnumValue46824 + EnumValue46825 + EnumValue46826 +} + +enum Enum2758 @Directive44(argument97 : ["stringValue46179"]) { + EnumValue46827 + EnumValue46828 + EnumValue46829 + EnumValue46830 + EnumValue46831 +} + +enum Enum2759 @Directive44(argument97 : ["stringValue46215"]) { + EnumValue46832 + EnumValue46833 + EnumValue46834 +} + +enum Enum276 @Directive19(argument57 : "stringValue4860") @Directive22(argument62 : "stringValue4859") @Directive44(argument97 : ["stringValue4861", "stringValue4862"]) { + EnumValue5177 + EnumValue5178 + EnumValue5179 + EnumValue5180 + EnumValue5181 +} + +enum Enum2760 @Directive44(argument97 : ["stringValue46242"]) { + EnumValue46835 + EnumValue46836 + EnumValue46837 + EnumValue46838 +} + +enum Enum2761 @Directive44(argument97 : ["stringValue46249"]) { + EnumValue46839 + EnumValue46840 + EnumValue46841 + EnumValue46842 + EnumValue46843 +} + +enum Enum2762 @Directive44(argument97 : ["stringValue46286"]) { + EnumValue46844 + EnumValue46845 + EnumValue46846 +} + +enum Enum2763 @Directive44(argument97 : ["stringValue46345"]) { + EnumValue46847 + EnumValue46848 + EnumValue46849 +} + +enum Enum2764 @Directive44(argument97 : ["stringValue46346"]) { + EnumValue46850 + EnumValue46851 + EnumValue46852 +} + +enum Enum2765 @Directive44(argument97 : ["stringValue46347"]) { + EnumValue46853 + EnumValue46854 + EnumValue46855 + EnumValue46856 + EnumValue46857 +} + +enum Enum2766 @Directive44(argument97 : ["stringValue46352"]) { + EnumValue46858 + EnumValue46859 + EnumValue46860 + EnumValue46861 + EnumValue46862 + EnumValue46863 + EnumValue46864 + EnumValue46865 + EnumValue46866 + EnumValue46867 + EnumValue46868 +} + +enum Enum2767 @Directive44(argument97 : ["stringValue46371"]) { + EnumValue46869 + EnumValue46870 + EnumValue46871 + EnumValue46872 + EnumValue46873 +} + +enum Enum2768 @Directive44(argument97 : ["stringValue46372"]) { + EnumValue46874 + EnumValue46875 + EnumValue46876 + EnumValue46877 + EnumValue46878 + EnumValue46879 +} + +enum Enum2769 @Directive44(argument97 : ["stringValue46373"]) { + EnumValue46880 + EnumValue46881 + EnumValue46882 + EnumValue46883 + EnumValue46884 +} + +enum Enum277 @Directive19(argument57 : "stringValue4915") @Directive22(argument62 : "stringValue4914") @Directive44(argument97 : ["stringValue4916", "stringValue4917"]) { + EnumValue5182 + EnumValue5183 + EnumValue5184 + EnumValue5185 +} + +enum Enum2770 @Directive44(argument97 : ["stringValue46374"]) { + EnumValue46885 + EnumValue46886 + EnumValue46887 + EnumValue46888 +} + +enum Enum2771 @Directive44(argument97 : ["stringValue46381"]) { + EnumValue46889 + EnumValue46890 + EnumValue46891 +} + +enum Enum2772 @Directive44(argument97 : ["stringValue46388"]) { + EnumValue46892 + EnumValue46893 + EnumValue46894 + EnumValue46895 +} + +enum Enum2773 @Directive44(argument97 : ["stringValue46395"]) { + EnumValue46896 + EnumValue46897 + EnumValue46898 + EnumValue46899 +} + +enum Enum2774 @Directive44(argument97 : ["stringValue46404"]) { + EnumValue46900 + EnumValue46901 + EnumValue46902 +} + +enum Enum2775 @Directive44(argument97 : ["stringValue46409"]) { + EnumValue46903 + EnumValue46904 + EnumValue46905 + EnumValue46906 +} + +enum Enum2776 @Directive44(argument97 : ["stringValue46412"]) { + EnumValue46907 + EnumValue46908 + EnumValue46909 + EnumValue46910 +} + +enum Enum2777 @Directive44(argument97 : ["stringValue46413"]) { + EnumValue46911 + EnumValue46912 + EnumValue46913 +} + +enum Enum2778 @Directive44(argument97 : ["stringValue46431"]) { + EnumValue46914 + EnumValue46915 +} + +enum Enum2779 @Directive44(argument97 : ["stringValue46486"]) { + EnumValue46916 + EnumValue46917 + EnumValue46918 + EnumValue46919 +} + +enum Enum278 @Directive19(argument57 : "stringValue4919") @Directive22(argument62 : "stringValue4918") @Directive44(argument97 : ["stringValue4920", "stringValue4921"]) { + EnumValue5186 + EnumValue5187 + EnumValue5188 + EnumValue5189 + EnumValue5190 + EnumValue5191 + EnumValue5192 + EnumValue5193 + EnumValue5194 + EnumValue5195 +} + +enum Enum2780 @Directive44(argument97 : ["stringValue46501"]) { + EnumValue46920 + EnumValue46921 + EnumValue46922 +} + +enum Enum2781 @Directive44(argument97 : ["stringValue46510"]) { + EnumValue46923 + EnumValue46924 + EnumValue46925 +} + +enum Enum2782 @Directive44(argument97 : ["stringValue46513"]) { + EnumValue46926 + EnumValue46927 + EnumValue46928 +} + +enum Enum2783 @Directive44(argument97 : ["stringValue46522"]) { + EnumValue46929 + EnumValue46930 + EnumValue46931 +} + +enum Enum2784 @Directive44(argument97 : ["stringValue46523"]) { + EnumValue46932 + EnumValue46933 + EnumValue46934 + EnumValue46935 + EnumValue46936 + EnumValue46937 + EnumValue46938 + EnumValue46939 + EnumValue46940 + EnumValue46941 + EnumValue46942 + EnumValue46943 + EnumValue46944 +} + +enum Enum2785 @Directive44(argument97 : ["stringValue46524"]) { + EnumValue46945 + EnumValue46946 + EnumValue46947 + EnumValue46948 + EnumValue46949 +} + +enum Enum2786 @Directive44(argument97 : ["stringValue46536"]) { + EnumValue46950 + EnumValue46951 + EnumValue46952 + EnumValue46953 +} + +enum Enum2787 @Directive44(argument97 : ["stringValue46537"]) { + EnumValue46954 + EnumValue46955 + EnumValue46956 + EnumValue46957 + EnumValue46958 + EnumValue46959 + EnumValue46960 + EnumValue46961 + EnumValue46962 + EnumValue46963 + EnumValue46964 + EnumValue46965 + EnumValue46966 + EnumValue46967 + EnumValue46968 + EnumValue46969 + EnumValue46970 + EnumValue46971 + EnumValue46972 + EnumValue46973 + EnumValue46974 + EnumValue46975 + EnumValue46976 + EnumValue46977 + EnumValue46978 + EnumValue46979 + EnumValue46980 + EnumValue46981 +} + +enum Enum2788 @Directive44(argument97 : ["stringValue46538"]) { + EnumValue46982 + EnumValue46983 + EnumValue46984 + EnumValue46985 + EnumValue46986 + EnumValue46987 + EnumValue46988 + EnumValue46989 + EnumValue46990 + EnumValue46991 + EnumValue46992 + EnumValue46993 + EnumValue46994 + EnumValue46995 + EnumValue46996 + EnumValue46997 + EnumValue46998 + EnumValue46999 + EnumValue47000 + EnumValue47001 + EnumValue47002 + EnumValue47003 + EnumValue47004 + EnumValue47005 + EnumValue47006 + EnumValue47007 + EnumValue47008 + EnumValue47009 + EnumValue47010 + EnumValue47011 + EnumValue47012 + EnumValue47013 +} + +enum Enum2789 @Directive44(argument97 : ["stringValue46539"]) { + EnumValue47014 + EnumValue47015 + EnumValue47016 + EnumValue47017 +} + +enum Enum279 @Directive19(argument57 : "stringValue4931") @Directive22(argument62 : "stringValue4930") @Directive44(argument97 : ["stringValue4932", "stringValue4933"]) { + EnumValue5196 + EnumValue5197 + EnumValue5198 +} + +enum Enum2790 @Directive44(argument97 : ["stringValue46544"]) { + EnumValue47018 + EnumValue47019 + EnumValue47020 + EnumValue47021 +} + +enum Enum2791 @Directive44(argument97 : ["stringValue46558"]) { + EnumValue47022 + EnumValue47023 + EnumValue47024 + EnumValue47025 + EnumValue47026 + EnumValue47027 + EnumValue47028 + EnumValue47029 +} + +enum Enum2792 @Directive44(argument97 : ["stringValue46567"]) { + EnumValue47030 + EnumValue47031 + EnumValue47032 + EnumValue47033 + EnumValue47034 + EnumValue47035 + EnumValue47036 + EnumValue47037 + EnumValue47038 + EnumValue47039 + EnumValue47040 + EnumValue47041 + EnumValue47042 + EnumValue47043 + EnumValue47044 + EnumValue47045 + EnumValue47046 +} + +enum Enum2793 @Directive44(argument97 : ["stringValue46568"]) { + EnumValue47047 + EnumValue47048 + EnumValue47049 + EnumValue47050 + EnumValue47051 + EnumValue47052 + EnumValue47053 + EnumValue47054 + EnumValue47055 +} + +enum Enum2794 @Directive44(argument97 : ["stringValue46571"]) { + EnumValue47056 + EnumValue47057 + EnumValue47058 + EnumValue47059 + EnumValue47060 + EnumValue47061 + EnumValue47062 + EnumValue47063 +} + +enum Enum2795 @Directive44(argument97 : ["stringValue46572"]) { + EnumValue47064 + EnumValue47065 +} + +enum Enum2796 @Directive44(argument97 : ["stringValue46578"]) { + EnumValue47066 + EnumValue47067 + EnumValue47068 + EnumValue47069 + EnumValue47070 + EnumValue47071 + EnumValue47072 + EnumValue47073 + EnumValue47074 + EnumValue47075 + EnumValue47076 + EnumValue47077 + EnumValue47078 + EnumValue47079 + EnumValue47080 + EnumValue47081 +} + +enum Enum2797 @Directive44(argument97 : ["stringValue46590"]) { + EnumValue47082 + EnumValue47083 + EnumValue47084 + EnumValue47085 + EnumValue47086 + EnumValue47087 + EnumValue47088 + EnumValue47089 +} + +enum Enum2798 @Directive44(argument97 : ["stringValue46623"]) { + EnumValue47090 + EnumValue47091 + EnumValue47092 + EnumValue47093 +} + +enum Enum2799 @Directive44(argument97 : ["stringValue46624"]) { + EnumValue47094 + EnumValue47095 + EnumValue47096 + EnumValue47097 +} + +enum Enum28 @Directive44(argument97 : ["stringValue253"]) { + EnumValue899 + EnumValue900 + EnumValue901 +} + +enum Enum280 @Directive19(argument57 : "stringValue4951") @Directive22(argument62 : "stringValue4950") @Directive44(argument97 : ["stringValue4952", "stringValue4953"]) { + EnumValue5199 + EnumValue5200 +} + +enum Enum2800 @Directive44(argument97 : ["stringValue46659"]) { + EnumValue47098 + EnumValue47099 + EnumValue47100 + EnumValue47101 + EnumValue47102 +} + +enum Enum2801 @Directive44(argument97 : ["stringValue46660"]) { + EnumValue47103 + EnumValue47104 +} + +enum Enum2802 @Directive44(argument97 : ["stringValue46663"]) { + EnumValue47105 + EnumValue47106 + EnumValue47107 +} + +enum Enum2803 @Directive44(argument97 : ["stringValue46666"]) { + EnumValue47108 + EnumValue47109 + EnumValue47110 + EnumValue47111 +} + +enum Enum2804 @Directive44(argument97 : ["stringValue46671"]) { + EnumValue47112 + EnumValue47113 + EnumValue47114 +} + +enum Enum2805 @Directive44(argument97 : ["stringValue46696"]) { + EnumValue47115 + EnumValue47116 + EnumValue47117 + EnumValue47118 +} + +enum Enum2806 @Directive44(argument97 : ["stringValue46699"]) { + EnumValue47119 + EnumValue47120 + EnumValue47121 +} + +enum Enum2807 @Directive44(argument97 : ["stringValue46702"]) { + EnumValue47122 + EnumValue47123 + EnumValue47124 +} + +enum Enum2808 @Directive44(argument97 : ["stringValue46707"]) { + EnumValue47125 + EnumValue47126 + EnumValue47127 + EnumValue47128 + EnumValue47129 + EnumValue47130 + EnumValue47131 + EnumValue47132 + EnumValue47133 + EnumValue47134 + EnumValue47135 + EnumValue47136 + EnumValue47137 + EnumValue47138 +} + +enum Enum2809 @Directive44(argument97 : ["stringValue46708"]) { + EnumValue47139 + EnumValue47140 + EnumValue47141 + EnumValue47142 + EnumValue47143 + EnumValue47144 + EnumValue47145 + EnumValue47146 + EnumValue47147 + EnumValue47148 + EnumValue47149 + EnumValue47150 + EnumValue47151 + EnumValue47152 + EnumValue47153 + EnumValue47154 + EnumValue47155 + EnumValue47156 + EnumValue47157 + EnumValue47158 + EnumValue47159 + EnumValue47160 + EnumValue47161 + EnumValue47162 + EnumValue47163 + EnumValue47164 + EnumValue47165 + EnumValue47166 + EnumValue47167 + EnumValue47168 + EnumValue47169 + EnumValue47170 + EnumValue47171 + EnumValue47172 + EnumValue47173 + EnumValue47174 + EnumValue47175 + EnumValue47176 + EnumValue47177 + EnumValue47178 +} + +enum Enum281 @Directive19(argument57 : "stringValue4990") @Directive22(argument62 : "stringValue4989") @Directive44(argument97 : ["stringValue4991", "stringValue4992"]) { + EnumValue5201 + EnumValue5202 +} + +enum Enum2810 @Directive44(argument97 : ["stringValue46709"]) { + EnumValue47179 + EnumValue47180 + EnumValue47181 + EnumValue47182 + EnumValue47183 +} + +enum Enum2811 @Directive44(argument97 : ["stringValue46710"]) { + EnumValue47184 + EnumValue47185 + EnumValue47186 +} + +enum Enum2812 @Directive44(argument97 : ["stringValue46727"]) { + EnumValue47187 + EnumValue47188 + EnumValue47189 + EnumValue47190 + EnumValue47191 +} + +enum Enum2813 @Directive44(argument97 : ["stringValue46728"]) { + EnumValue47192 + EnumValue47193 + EnumValue47194 + EnumValue47195 + EnumValue47196 + EnumValue47197 + EnumValue47198 + EnumValue47199 +} + +enum Enum2814 @Directive44(argument97 : ["stringValue46729"]) { + EnumValue47200 + EnumValue47201 + EnumValue47202 + EnumValue47203 + EnumValue47204 + EnumValue47205 +} + +enum Enum2815 @Directive44(argument97 : ["stringValue46730"]) { + EnumValue47206 + EnumValue47207 +} + +enum Enum2816 @Directive44(argument97 : ["stringValue46735"]) { + EnumValue47208 + EnumValue47209 + EnumValue47210 + EnumValue47211 +} + +enum Enum2817 @Directive44(argument97 : ["stringValue46736"]) { + EnumValue47212 + EnumValue47213 + EnumValue47214 + EnumValue47215 + EnumValue47216 + EnumValue47217 +} + +enum Enum2818 @Directive44(argument97 : ["stringValue46737"]) { + EnumValue47218 + EnumValue47219 + EnumValue47220 + EnumValue47221 +} + +enum Enum2819 @Directive44(argument97 : ["stringValue46738"]) { + EnumValue47222 + EnumValue47223 + EnumValue47224 + EnumValue47225 + EnumValue47226 +} + +enum Enum282 @Directive19(argument57 : "stringValue5113") @Directive22(argument62 : "stringValue5112") @Directive44(argument97 : ["stringValue5114", "stringValue5115"]) { + EnumValue5203 + EnumValue5204 + EnumValue5205 +} + +enum Enum2820 @Directive44(argument97 : ["stringValue46741"]) { + EnumValue47227 + EnumValue47228 + EnumValue47229 + EnumValue47230 + EnumValue47231 + EnumValue47232 + EnumValue47233 +} + +enum Enum2821 @Directive44(argument97 : ["stringValue46755"]) { + EnumValue47234 + EnumValue47235 + EnumValue47236 + EnumValue47237 + EnumValue47238 + EnumValue47239 + EnumValue47240 + EnumValue47241 + EnumValue47242 + EnumValue47243 + EnumValue47244 + EnumValue47245 + EnumValue47246 + EnumValue47247 + EnumValue47248 + EnumValue47249 + EnumValue47250 + EnumValue47251 + EnumValue47252 + EnumValue47253 + EnumValue47254 + EnumValue47255 + EnumValue47256 + EnumValue47257 + EnumValue47258 + EnumValue47259 + EnumValue47260 + EnumValue47261 + EnumValue47262 + EnumValue47263 + EnumValue47264 + EnumValue47265 + EnumValue47266 + EnumValue47267 + EnumValue47268 + EnumValue47269 + EnumValue47270 + EnumValue47271 + EnumValue47272 + EnumValue47273 + EnumValue47274 + EnumValue47275 + EnumValue47276 + EnumValue47277 + EnumValue47278 + EnumValue47279 + EnumValue47280 + EnumValue47281 + EnumValue47282 + EnumValue47283 + EnumValue47284 + EnumValue47285 +} + +enum Enum2822 @Directive44(argument97 : ["stringValue46756"]) { + EnumValue47286 + EnumValue47287 + EnumValue47288 + EnumValue47289 + EnumValue47290 + EnumValue47291 + EnumValue47292 + EnumValue47293 + EnumValue47294 + EnumValue47295 + EnumValue47296 + EnumValue47297 + EnumValue47298 + EnumValue47299 + EnumValue47300 + EnumValue47301 + EnumValue47302 + EnumValue47303 + EnumValue47304 + EnumValue47305 + EnumValue47306 + EnumValue47307 + EnumValue47308 + EnumValue47309 + EnumValue47310 + EnumValue47311 + EnumValue47312 +} + +enum Enum2823 @Directive44(argument97 : ["stringValue46759"]) { + EnumValue47313 + EnumValue47314 +} + +enum Enum2824 @Directive44(argument97 : ["stringValue46760"]) { + EnumValue47315 + EnumValue47316 + EnumValue47317 + EnumValue47318 + EnumValue47319 +} + +enum Enum2825 @Directive44(argument97 : ["stringValue46775"]) { + EnumValue47320 + EnumValue47321 +} + +enum Enum2826 @Directive44(argument97 : ["stringValue46778"]) { + EnumValue47322 + EnumValue47323 +} + +enum Enum2827 @Directive44(argument97 : ["stringValue46781"]) { + EnumValue47324 + EnumValue47325 + EnumValue47326 +} + +enum Enum2828 @Directive44(argument97 : ["stringValue46782"]) { + EnumValue47327 + EnumValue47328 + EnumValue47329 + EnumValue47330 +} + +enum Enum2829 @Directive44(argument97 : ["stringValue46793"]) { + EnumValue47331 + EnumValue47332 + EnumValue47333 + EnumValue47334 + EnumValue47335 + EnumValue47336 + EnumValue47337 +} + +enum Enum283 @Directive19(argument57 : "stringValue5183") @Directive22(argument62 : "stringValue5182") @Directive44(argument97 : ["stringValue5184", "stringValue5185"]) { + EnumValue5206 + EnumValue5207 + EnumValue5208 + EnumValue5209 +} + +enum Enum2830 @Directive44(argument97 : ["stringValue46794"]) { + EnumValue47338 + EnumValue47339 +} + +enum Enum2831 @Directive44(argument97 : ["stringValue46825"]) { + EnumValue47340 + EnumValue47341 + EnumValue47342 +} + +enum Enum2832 @Directive44(argument97 : ["stringValue46834"]) { + EnumValue47343 + EnumValue47344 + EnumValue47345 + EnumValue47346 + EnumValue47347 + EnumValue47348 + EnumValue47349 + EnumValue47350 + EnumValue47351 + EnumValue47352 +} + +enum Enum2833 @Directive44(argument97 : ["stringValue46835"]) { + EnumValue47353 + EnumValue47354 + EnumValue47355 + EnumValue47356 +} + +enum Enum2834 @Directive44(argument97 : ["stringValue46850"]) { + EnumValue47357 + EnumValue47358 + EnumValue47359 + EnumValue47360 + EnumValue47361 +} + +enum Enum2835 @Directive44(argument97 : ["stringValue46855"]) { + EnumValue47362 + EnumValue47363 +} + +enum Enum2836 @Directive44(argument97 : ["stringValue46860"]) { + EnumValue47364 + EnumValue47365 + EnumValue47366 + EnumValue47367 + EnumValue47368 + EnumValue47369 +} + +enum Enum2837 @Directive44(argument97 : ["stringValue46867"]) { + EnumValue47370 + EnumValue47371 + EnumValue47372 + EnumValue47373 + EnumValue47374 + EnumValue47375 +} + +enum Enum2838 @Directive44(argument97 : ["stringValue46874"]) { + EnumValue47376 + EnumValue47377 + EnumValue47378 +} + +enum Enum2839 @Directive44(argument97 : ["stringValue46883"]) { + EnumValue47379 + EnumValue47380 + EnumValue47381 + EnumValue47382 + EnumValue47383 + EnumValue47384 + EnumValue47385 + EnumValue47386 + EnumValue47387 + EnumValue47388 + EnumValue47389 + EnumValue47390 + EnumValue47391 + EnumValue47392 + EnumValue47393 + EnumValue47394 + EnumValue47395 + EnumValue47396 + EnumValue47397 + EnumValue47398 + EnumValue47399 + EnumValue47400 + EnumValue47401 + EnumValue47402 + EnumValue47403 + EnumValue47404 + EnumValue47405 + EnumValue47406 + EnumValue47407 + EnumValue47408 + EnumValue47409 + EnumValue47410 + EnumValue47411 + EnumValue47412 + EnumValue47413 + EnumValue47414 + EnumValue47415 + EnumValue47416 + EnumValue47417 + EnumValue47418 + EnumValue47419 + EnumValue47420 + EnumValue47421 + EnumValue47422 + EnumValue47423 + EnumValue47424 + EnumValue47425 + EnumValue47426 + EnumValue47427 + EnumValue47428 + EnumValue47429 + EnumValue47430 + EnumValue47431 + EnumValue47432 + EnumValue47433 + EnumValue47434 + EnumValue47435 + EnumValue47436 + EnumValue47437 + EnumValue47438 + EnumValue47439 + EnumValue47440 + EnumValue47441 + EnumValue47442 + EnumValue47443 + EnumValue47444 + EnumValue47445 + EnumValue47446 + EnumValue47447 + EnumValue47448 + EnumValue47449 + EnumValue47450 + EnumValue47451 + EnumValue47452 + EnumValue47453 + EnumValue47454 + EnumValue47455 + EnumValue47456 + EnumValue47457 + EnumValue47458 + EnumValue47459 + EnumValue47460 + EnumValue47461 + EnumValue47462 + EnumValue47463 + EnumValue47464 + EnumValue47465 + EnumValue47466 + EnumValue47467 + EnumValue47468 + EnumValue47469 + EnumValue47470 + EnumValue47471 + EnumValue47472 + EnumValue47473 + EnumValue47474 + EnumValue47475 + EnumValue47476 + EnumValue47477 + EnumValue47478 + EnumValue47479 + EnumValue47480 + EnumValue47481 + EnumValue47482 + EnumValue47483 + EnumValue47484 + EnumValue47485 + EnumValue47486 + EnumValue47487 + EnumValue47488 + EnumValue47489 + EnumValue47490 + EnumValue47491 + EnumValue47492 + EnumValue47493 + EnumValue47494 + EnumValue47495 + EnumValue47496 + EnumValue47497 + EnumValue47498 + EnumValue47499 + EnumValue47500 + EnumValue47501 + EnumValue47502 + EnumValue47503 + EnumValue47504 + EnumValue47505 + EnumValue47506 + EnumValue47507 + EnumValue47508 + EnumValue47509 + EnumValue47510 + EnumValue47511 + EnumValue47512 + EnumValue47513 + EnumValue47514 + EnumValue47515 + EnumValue47516 + EnumValue47517 + EnumValue47518 + EnumValue47519 + EnumValue47520 + EnumValue47521 + EnumValue47522 + EnumValue47523 + EnumValue47524 + EnumValue47525 + EnumValue47526 + EnumValue47527 + EnumValue47528 + EnumValue47529 + EnumValue47530 + EnumValue47531 + EnumValue47532 + EnumValue47533 + EnumValue47534 + EnumValue47535 + EnumValue47536 + EnumValue47537 + EnumValue47538 + EnumValue47539 + EnumValue47540 + EnumValue47541 + EnumValue47542 + EnumValue47543 + EnumValue47544 + EnumValue47545 + EnumValue47546 + EnumValue47547 + EnumValue47548 + EnumValue47549 + EnumValue47550 + EnumValue47551 + EnumValue47552 + EnumValue47553 + EnumValue47554 + EnumValue47555 + EnumValue47556 + EnumValue47557 + EnumValue47558 + EnumValue47559 + EnumValue47560 + EnumValue47561 + EnumValue47562 + EnumValue47563 + EnumValue47564 + EnumValue47565 + EnumValue47566 + EnumValue47567 + EnumValue47568 + EnumValue47569 + EnumValue47570 + EnumValue47571 + EnumValue47572 + EnumValue47573 + EnumValue47574 + EnumValue47575 + EnumValue47576 + EnumValue47577 + EnumValue47578 + EnumValue47579 + EnumValue47580 + EnumValue47581 + EnumValue47582 + EnumValue47583 + EnumValue47584 + EnumValue47585 +} + +enum Enum284 @Directive22(argument62 : "stringValue5203") @Directive44(argument97 : ["stringValue5204", "stringValue5205"]) { + EnumValue5210 + EnumValue5211 +} + +enum Enum2840 @Directive44(argument97 : ["stringValue46890"]) { + EnumValue47586 + EnumValue47587 + EnumValue47588 + EnumValue47589 + EnumValue47590 + EnumValue47591 +} + +enum Enum2841 @Directive44(argument97 : ["stringValue46891"]) { + EnumValue47592 + EnumValue47593 + EnumValue47594 +} + +enum Enum2842 @Directive44(argument97 : ["stringValue46896"]) { + EnumValue47595 + EnumValue47596 + EnumValue47597 +} + +enum Enum2843 @Directive44(argument97 : ["stringValue46911"]) { + EnumValue47598 + EnumValue47599 +} + +enum Enum2844 @Directive44(argument97 : ["stringValue46924"]) { + EnumValue47600 + EnumValue47601 + EnumValue47602 + EnumValue47603 + EnumValue47604 + EnumValue47605 + EnumValue47606 + EnumValue47607 + EnumValue47608 + EnumValue47609 +} + +enum Enum2845 @Directive44(argument97 : ["stringValue46943"]) { + EnumValue47610 + EnumValue47611 + EnumValue47612 +} + +enum Enum2846 @Directive44(argument97 : ["stringValue46957"]) { + EnumValue47613 + EnumValue47614 + EnumValue47615 +} + +enum Enum2847 @Directive44(argument97 : ["stringValue47013"]) { + EnumValue47616 + EnumValue47617 + EnumValue47618 + EnumValue47619 +} + +enum Enum2848 @Directive44(argument97 : ["stringValue47018"]) { + EnumValue47620 + EnumValue47621 + EnumValue47622 + EnumValue47623 +} + +enum Enum2849 @Directive44(argument97 : ["stringValue47041"]) { + EnumValue47624 + EnumValue47625 + EnumValue47626 + EnumValue47627 +} + +enum Enum285 @Directive19(argument57 : "stringValue5262") @Directive22(argument62 : "stringValue5261") @Directive44(argument97 : ["stringValue5263", "stringValue5264"]) { + EnumValue5212 + EnumValue5213 + EnumValue5214 +} + +enum Enum2850 @Directive44(argument97 : ["stringValue47046"]) { + EnumValue47628 + EnumValue47629 + EnumValue47630 + EnumValue47631 + EnumValue47632 +} + +enum Enum2851 @Directive44(argument97 : ["stringValue47047"]) { + EnumValue47633 + EnumValue47634 + EnumValue47635 + EnumValue47636 +} + +enum Enum2852 @Directive44(argument97 : ["stringValue47053"]) { + EnumValue47637 + EnumValue47638 + EnumValue47639 +} + +enum Enum2853 @Directive44(argument97 : ["stringValue47062"]) { + EnumValue47640 + EnumValue47641 + EnumValue47642 +} + +enum Enum2854 @Directive44(argument97 : ["stringValue47067"]) { + EnumValue47643 + EnumValue47644 + EnumValue47645 + EnumValue47646 + EnumValue47647 + EnumValue47648 + EnumValue47649 + EnumValue47650 + EnumValue47651 + EnumValue47652 + EnumValue47653 + EnumValue47654 + EnumValue47655 + EnumValue47656 + EnumValue47657 +} + +enum Enum2855 @Directive44(argument97 : ["stringValue47088"]) { + EnumValue47658 + EnumValue47659 + EnumValue47660 + EnumValue47661 + EnumValue47662 + EnumValue47663 + EnumValue47664 +} + +enum Enum2856 @Directive44(argument97 : ["stringValue47113"]) { + EnumValue47665 + EnumValue47666 + EnumValue47667 +} + +enum Enum2857 @Directive44(argument97 : ["stringValue47158"]) { + EnumValue47668 + EnumValue47669 + EnumValue47670 + EnumValue47671 + EnumValue47672 +} + +enum Enum2858 @Directive44(argument97 : ["stringValue47161"]) { + EnumValue47673 + EnumValue47674 + EnumValue47675 +} + +enum Enum2859 @Directive44(argument97 : ["stringValue47166"]) { + EnumValue47676 + EnumValue47677 + EnumValue47678 +} + +enum Enum286 @Directive19(argument57 : "stringValue5299") @Directive22(argument62 : "stringValue5298") @Directive44(argument97 : ["stringValue5300", "stringValue5301"]) { + EnumValue5215 + EnumValue5216 + EnumValue5217 +} + +enum Enum2860 @Directive44(argument97 : ["stringValue47171"]) { + EnumValue47679 + EnumValue47680 + EnumValue47681 + EnumValue47682 + EnumValue47683 + EnumValue47684 + EnumValue47685 + EnumValue47686 + EnumValue47687 + EnumValue47688 +} + +enum Enum2861 @Directive44(argument97 : ["stringValue47194"]) { + EnumValue47689 + EnumValue47690 + EnumValue47691 +} + +enum Enum2862 @Directive44(argument97 : ["stringValue47197"]) { + EnumValue47692 + EnumValue47693 + EnumValue47694 + EnumValue47695 + EnumValue47696 + EnumValue47697 + EnumValue47698 +} + +enum Enum2863 @Directive44(argument97 : ["stringValue47224"]) { + EnumValue47699 + EnumValue47700 + EnumValue47701 + EnumValue47702 + EnumValue47703 + EnumValue47704 + EnumValue47705 + EnumValue47706 + EnumValue47707 + EnumValue47708 + EnumValue47709 + EnumValue47710 + EnumValue47711 + EnumValue47712 + EnumValue47713 + EnumValue47714 + EnumValue47715 + EnumValue47716 + EnumValue47717 + EnumValue47718 + EnumValue47719 + EnumValue47720 + EnumValue47721 + EnumValue47722 + EnumValue47723 + EnumValue47724 + EnumValue47725 + EnumValue47726 + EnumValue47727 + EnumValue47728 + EnumValue47729 + EnumValue47730 + EnumValue47731 + EnumValue47732 + EnumValue47733 + EnumValue47734 + EnumValue47735 + EnumValue47736 + EnumValue47737 + EnumValue47738 + EnumValue47739 + EnumValue47740 + EnumValue47741 + EnumValue47742 + EnumValue47743 + EnumValue47744 + EnumValue47745 + EnumValue47746 + EnumValue47747 + EnumValue47748 + EnumValue47749 + EnumValue47750 + EnumValue47751 + EnumValue47752 + EnumValue47753 + EnumValue47754 + EnumValue47755 + EnumValue47756 + EnumValue47757 + EnumValue47758 + EnumValue47759 + EnumValue47760 + EnumValue47761 + EnumValue47762 + EnumValue47763 + EnumValue47764 + EnumValue47765 + EnumValue47766 + EnumValue47767 + EnumValue47768 + EnumValue47769 + EnumValue47770 + EnumValue47771 + EnumValue47772 + EnumValue47773 + EnumValue47774 + EnumValue47775 + EnumValue47776 + EnumValue47777 + EnumValue47778 + EnumValue47779 + EnumValue47780 + EnumValue47781 + EnumValue47782 + EnumValue47783 + EnumValue47784 + EnumValue47785 + EnumValue47786 + EnumValue47787 + EnumValue47788 + EnumValue47789 + EnumValue47790 + EnumValue47791 + EnumValue47792 + EnumValue47793 + EnumValue47794 + EnumValue47795 + EnumValue47796 + EnumValue47797 + EnumValue47798 + EnumValue47799 + EnumValue47800 + EnumValue47801 + EnumValue47802 + EnumValue47803 + EnumValue47804 + EnumValue47805 + EnumValue47806 + EnumValue47807 + EnumValue47808 + EnumValue47809 + EnumValue47810 + EnumValue47811 + EnumValue47812 + EnumValue47813 + EnumValue47814 + EnumValue47815 + EnumValue47816 + EnumValue47817 + EnumValue47818 + EnumValue47819 + EnumValue47820 + EnumValue47821 + EnumValue47822 + EnumValue47823 + EnumValue47824 + EnumValue47825 + EnumValue47826 + EnumValue47827 + EnumValue47828 + EnumValue47829 + EnumValue47830 + EnumValue47831 + EnumValue47832 + EnumValue47833 + EnumValue47834 + EnumValue47835 + EnumValue47836 + EnumValue47837 + EnumValue47838 + EnumValue47839 + EnumValue47840 + EnumValue47841 + EnumValue47842 + EnumValue47843 + EnumValue47844 + EnumValue47845 + EnumValue47846 + EnumValue47847 + EnumValue47848 + EnumValue47849 + EnumValue47850 + EnumValue47851 + EnumValue47852 + EnumValue47853 + EnumValue47854 + EnumValue47855 + EnumValue47856 + EnumValue47857 + EnumValue47858 + EnumValue47859 + EnumValue47860 + EnumValue47861 + EnumValue47862 + EnumValue47863 + EnumValue47864 + EnumValue47865 + EnumValue47866 + EnumValue47867 + EnumValue47868 + EnumValue47869 + EnumValue47870 + EnumValue47871 + EnumValue47872 + EnumValue47873 + EnumValue47874 + EnumValue47875 + EnumValue47876 + EnumValue47877 + EnumValue47878 + EnumValue47879 + EnumValue47880 + EnumValue47881 + EnumValue47882 + EnumValue47883 + EnumValue47884 + EnumValue47885 + EnumValue47886 + EnumValue47887 + EnumValue47888 + EnumValue47889 + EnumValue47890 + EnumValue47891 + EnumValue47892 + EnumValue47893 + EnumValue47894 + EnumValue47895 + EnumValue47896 + EnumValue47897 + EnumValue47898 + EnumValue47899 + EnumValue47900 + EnumValue47901 + EnumValue47902 + EnumValue47903 + EnumValue47904 + EnumValue47905 + EnumValue47906 + EnumValue47907 + EnumValue47908 + EnumValue47909 + EnumValue47910 + EnumValue47911 + EnumValue47912 + EnumValue47913 + EnumValue47914 + EnumValue47915 + EnumValue47916 + EnumValue47917 + EnumValue47918 + EnumValue47919 + EnumValue47920 + EnumValue47921 + EnumValue47922 + EnumValue47923 + EnumValue47924 + EnumValue47925 + EnumValue47926 + EnumValue47927 + EnumValue47928 + EnumValue47929 + EnumValue47930 + EnumValue47931 + EnumValue47932 + EnumValue47933 + EnumValue47934 + EnumValue47935 + EnumValue47936 + EnumValue47937 + EnumValue47938 + EnumValue47939 + EnumValue47940 + EnumValue47941 + EnumValue47942 + EnumValue47943 + EnumValue47944 + EnumValue47945 + EnumValue47946 + EnumValue47947 + EnumValue47948 + EnumValue47949 + EnumValue47950 + EnumValue47951 + EnumValue47952 + EnumValue47953 + EnumValue47954 + EnumValue47955 + EnumValue47956 + EnumValue47957 + EnumValue47958 + EnumValue47959 + EnumValue47960 + EnumValue47961 + EnumValue47962 + EnumValue47963 + EnumValue47964 + EnumValue47965 + EnumValue47966 + EnumValue47967 + EnumValue47968 + EnumValue47969 + EnumValue47970 + EnumValue47971 + EnumValue47972 + EnumValue47973 + EnumValue47974 + EnumValue47975 + EnumValue47976 + EnumValue47977 + EnumValue47978 + EnumValue47979 + EnumValue47980 + EnumValue47981 + EnumValue47982 + EnumValue47983 + EnumValue47984 + EnumValue47985 + EnumValue47986 + EnumValue47987 + EnumValue47988 + EnumValue47989 + EnumValue47990 + EnumValue47991 + EnumValue47992 + EnumValue47993 + EnumValue47994 + EnumValue47995 + EnumValue47996 + EnumValue47997 + EnumValue47998 + EnumValue47999 + EnumValue48000 + EnumValue48001 + EnumValue48002 + EnumValue48003 + EnumValue48004 + EnumValue48005 + EnumValue48006 + EnumValue48007 + EnumValue48008 + EnumValue48009 + EnumValue48010 + EnumValue48011 + EnumValue48012 + EnumValue48013 + EnumValue48014 + EnumValue48015 + EnumValue48016 + EnumValue48017 + EnumValue48018 + EnumValue48019 + EnumValue48020 + EnumValue48021 + EnumValue48022 + EnumValue48023 + EnumValue48024 + EnumValue48025 + EnumValue48026 + EnumValue48027 + EnumValue48028 + EnumValue48029 + EnumValue48030 + EnumValue48031 + EnumValue48032 + EnumValue48033 + EnumValue48034 + EnumValue48035 + EnumValue48036 + EnumValue48037 + EnumValue48038 + EnumValue48039 + EnumValue48040 + EnumValue48041 + EnumValue48042 + EnumValue48043 + EnumValue48044 + EnumValue48045 + EnumValue48046 + EnumValue48047 + EnumValue48048 + EnumValue48049 + EnumValue48050 + EnumValue48051 + EnumValue48052 + EnumValue48053 + EnumValue48054 + EnumValue48055 + EnumValue48056 + EnumValue48057 + EnumValue48058 + EnumValue48059 + EnumValue48060 + EnumValue48061 + EnumValue48062 + EnumValue48063 + EnumValue48064 + EnumValue48065 + EnumValue48066 + EnumValue48067 + EnumValue48068 + EnumValue48069 + EnumValue48070 + EnumValue48071 + EnumValue48072 + EnumValue48073 + EnumValue48074 + EnumValue48075 + EnumValue48076 + EnumValue48077 + EnumValue48078 + EnumValue48079 + EnumValue48080 + EnumValue48081 + EnumValue48082 + EnumValue48083 + EnumValue48084 + EnumValue48085 + EnumValue48086 + EnumValue48087 + EnumValue48088 + EnumValue48089 + EnumValue48090 + EnumValue48091 + EnumValue48092 + EnumValue48093 + EnumValue48094 + EnumValue48095 + EnumValue48096 + EnumValue48097 + EnumValue48098 + EnumValue48099 + EnumValue48100 + EnumValue48101 + EnumValue48102 + EnumValue48103 + EnumValue48104 + EnumValue48105 + EnumValue48106 + EnumValue48107 + EnumValue48108 + EnumValue48109 + EnumValue48110 + EnumValue48111 + EnumValue48112 + EnumValue48113 + EnumValue48114 + EnumValue48115 + EnumValue48116 + EnumValue48117 + EnumValue48118 + EnumValue48119 + EnumValue48120 + EnumValue48121 + EnumValue48122 + EnumValue48123 + EnumValue48124 + EnumValue48125 + EnumValue48126 + EnumValue48127 + EnumValue48128 + EnumValue48129 + EnumValue48130 + EnumValue48131 + EnumValue48132 + EnumValue48133 + EnumValue48134 + EnumValue48135 + EnumValue48136 + EnumValue48137 + EnumValue48138 + EnumValue48139 + EnumValue48140 + EnumValue48141 + EnumValue48142 + EnumValue48143 + EnumValue48144 + EnumValue48145 + EnumValue48146 + EnumValue48147 + EnumValue48148 + EnumValue48149 + EnumValue48150 + EnumValue48151 + EnumValue48152 + EnumValue48153 + EnumValue48154 + EnumValue48155 + EnumValue48156 + EnumValue48157 + EnumValue48158 + EnumValue48159 + EnumValue48160 + EnumValue48161 + EnumValue48162 + EnumValue48163 + EnumValue48164 + EnumValue48165 + EnumValue48166 + EnumValue48167 + EnumValue48168 + EnumValue48169 + EnumValue48170 + EnumValue48171 + EnumValue48172 + EnumValue48173 + EnumValue48174 + EnumValue48175 + EnumValue48176 + EnumValue48177 + EnumValue48178 + EnumValue48179 + EnumValue48180 + EnumValue48181 + EnumValue48182 + EnumValue48183 + EnumValue48184 + EnumValue48185 + EnumValue48186 + EnumValue48187 + EnumValue48188 + EnumValue48189 + EnumValue48190 + EnumValue48191 + EnumValue48192 + EnumValue48193 + EnumValue48194 + EnumValue48195 + EnumValue48196 + EnumValue48197 + EnumValue48198 + EnumValue48199 + EnumValue48200 + EnumValue48201 + EnumValue48202 + EnumValue48203 + EnumValue48204 + EnumValue48205 + EnumValue48206 + EnumValue48207 + EnumValue48208 + EnumValue48209 + EnumValue48210 + EnumValue48211 + EnumValue48212 + EnumValue48213 + EnumValue48214 + EnumValue48215 + EnumValue48216 + EnumValue48217 + EnumValue48218 + EnumValue48219 + EnumValue48220 + EnumValue48221 + EnumValue48222 + EnumValue48223 + EnumValue48224 + EnumValue48225 + EnumValue48226 + EnumValue48227 + EnumValue48228 + EnumValue48229 + EnumValue48230 + EnumValue48231 + EnumValue48232 + EnumValue48233 + EnumValue48234 + EnumValue48235 + EnumValue48236 + EnumValue48237 + EnumValue48238 + EnumValue48239 + EnumValue48240 + EnumValue48241 + EnumValue48242 + EnumValue48243 + EnumValue48244 + EnumValue48245 + EnumValue48246 + EnumValue48247 + EnumValue48248 + EnumValue48249 + EnumValue48250 + EnumValue48251 + EnumValue48252 + EnumValue48253 + EnumValue48254 + EnumValue48255 + EnumValue48256 + EnumValue48257 + EnumValue48258 + EnumValue48259 + EnumValue48260 + EnumValue48261 + EnumValue48262 + EnumValue48263 + EnumValue48264 + EnumValue48265 + EnumValue48266 + EnumValue48267 + EnumValue48268 + EnumValue48269 + EnumValue48270 + EnumValue48271 + EnumValue48272 + EnumValue48273 + EnumValue48274 + EnumValue48275 + EnumValue48276 + EnumValue48277 + EnumValue48278 + EnumValue48279 + EnumValue48280 + EnumValue48281 + EnumValue48282 + EnumValue48283 + EnumValue48284 + EnumValue48285 + EnumValue48286 + EnumValue48287 + EnumValue48288 + EnumValue48289 + EnumValue48290 + EnumValue48291 + EnumValue48292 + EnumValue48293 + EnumValue48294 + EnumValue48295 + EnumValue48296 + EnumValue48297 + EnumValue48298 + EnumValue48299 + EnumValue48300 + EnumValue48301 + EnumValue48302 + EnumValue48303 + EnumValue48304 + EnumValue48305 + EnumValue48306 + EnumValue48307 + EnumValue48308 + EnumValue48309 + EnumValue48310 + EnumValue48311 + EnumValue48312 + EnumValue48313 + EnumValue48314 + EnumValue48315 + EnumValue48316 + EnumValue48317 + EnumValue48318 + EnumValue48319 + EnumValue48320 + EnumValue48321 + EnumValue48322 + EnumValue48323 + EnumValue48324 + EnumValue48325 + EnumValue48326 + EnumValue48327 + EnumValue48328 + EnumValue48329 + EnumValue48330 + EnumValue48331 + EnumValue48332 + EnumValue48333 + EnumValue48334 + EnumValue48335 + EnumValue48336 + EnumValue48337 + EnumValue48338 + EnumValue48339 + EnumValue48340 + EnumValue48341 + EnumValue48342 + EnumValue48343 + EnumValue48344 + EnumValue48345 + EnumValue48346 + EnumValue48347 + EnumValue48348 + EnumValue48349 + EnumValue48350 + EnumValue48351 + EnumValue48352 + EnumValue48353 + EnumValue48354 + EnumValue48355 + EnumValue48356 + EnumValue48357 + EnumValue48358 + EnumValue48359 +} + +enum Enum2864 @Directive44(argument97 : ["stringValue47227"]) { + EnumValue48360 + EnumValue48361 + EnumValue48362 + EnumValue48363 + EnumValue48364 + EnumValue48365 + EnumValue48366 + EnumValue48367 + EnumValue48368 + EnumValue48369 + EnumValue48370 + EnumValue48371 + EnumValue48372 + EnumValue48373 + EnumValue48374 + EnumValue48375 + EnumValue48376 + EnumValue48377 + EnumValue48378 + EnumValue48379 + EnumValue48380 + EnumValue48381 + EnumValue48382 + EnumValue48383 + EnumValue48384 + EnumValue48385 + EnumValue48386 + EnumValue48387 + EnumValue48388 + EnumValue48389 + EnumValue48390 + EnumValue48391 + EnumValue48392 + EnumValue48393 + EnumValue48394 + EnumValue48395 + EnumValue48396 + EnumValue48397 + EnumValue48398 + EnumValue48399 + EnumValue48400 + EnumValue48401 + EnumValue48402 + EnumValue48403 + EnumValue48404 + EnumValue48405 + EnumValue48406 + EnumValue48407 + EnumValue48408 + EnumValue48409 +} + +enum Enum2865 @Directive44(argument97 : ["stringValue47228"]) { + EnumValue48410 + EnumValue48411 + EnumValue48412 + EnumValue48413 + EnumValue48414 +} + +enum Enum2866 @Directive44(argument97 : ["stringValue47229"]) { + EnumValue48415 + EnumValue48416 + EnumValue48417 + EnumValue48418 + EnumValue48419 + EnumValue48420 + EnumValue48421 + EnumValue48422 + EnumValue48423 +} + +enum Enum2867 @Directive44(argument97 : ["stringValue47234"]) { + EnumValue48424 + EnumValue48425 + EnumValue48426 +} + +enum Enum2868 @Directive44(argument97 : ["stringValue47245"]) { + EnumValue48427 + EnumValue48428 + EnumValue48429 + EnumValue48430 +} + +enum Enum2869 @Directive44(argument97 : ["stringValue47277"]) { + EnumValue48431 + EnumValue48432 + EnumValue48433 + EnumValue48434 + EnumValue48435 + EnumValue48436 + EnumValue48437 + EnumValue48438 + EnumValue48439 + EnumValue48440 + EnumValue48441 + EnumValue48442 +} + +enum Enum287 @Directive19(argument57 : "stringValue5400") @Directive22(argument62 : "stringValue5399") @Directive44(argument97 : ["stringValue5401", "stringValue5402"]) { + EnumValue5218 + EnumValue5219 + EnumValue5220 + EnumValue5221 +} + +enum Enum2870 @Directive44(argument97 : ["stringValue47306"]) { + EnumValue48443 + EnumValue48444 + EnumValue48445 + EnumValue48446 +} + +enum Enum2871 @Directive44(argument97 : ["stringValue47307"]) { + EnumValue48447 + EnumValue48448 + EnumValue48449 + EnumValue48450 + EnumValue48451 + EnumValue48452 + EnumValue48453 + EnumValue48454 + EnumValue48455 + EnumValue48456 + EnumValue48457 + EnumValue48458 + EnumValue48459 + EnumValue48460 + EnumValue48461 + EnumValue48462 + EnumValue48463 + EnumValue48464 + EnumValue48465 + EnumValue48466 + EnumValue48467 + EnumValue48468 + EnumValue48469 + EnumValue48470 + EnumValue48471 + EnumValue48472 + EnumValue48473 + EnumValue48474 + EnumValue48475 + EnumValue48476 + EnumValue48477 + EnumValue48478 + EnumValue48479 + EnumValue48480 + EnumValue48481 + EnumValue48482 + EnumValue48483 + EnumValue48484 +} + +enum Enum2872 @Directive44(argument97 : ["stringValue47309"]) { + EnumValue48485 + EnumValue48486 + EnumValue48487 + EnumValue48488 + EnumValue48489 + EnumValue48490 + EnumValue48491 + EnumValue48492 + EnumValue48493 + EnumValue48494 + EnumValue48495 + EnumValue48496 + EnumValue48497 + EnumValue48498 + EnumValue48499 + EnumValue48500 + EnumValue48501 + EnumValue48502 + EnumValue48503 + EnumValue48504 +} + +enum Enum2873 @Directive44(argument97 : ["stringValue47310"]) { + EnumValue48505 + EnumValue48506 + EnumValue48507 +} + +enum Enum2874 @Directive44(argument97 : ["stringValue47311"]) { + EnumValue48508 + EnumValue48509 + EnumValue48510 + EnumValue48511 + EnumValue48512 + EnumValue48513 + EnumValue48514 +} + +enum Enum2875 @Directive44(argument97 : ["stringValue47313"]) { + EnumValue48515 + EnumValue48516 + EnumValue48517 + EnumValue48518 +} + +enum Enum2876 @Directive44(argument97 : ["stringValue47314"]) { + EnumValue48519 + EnumValue48520 + EnumValue48521 +} + +enum Enum2877 @Directive44(argument97 : ["stringValue47315"]) { + EnumValue48522 + EnumValue48523 + EnumValue48524 + EnumValue48525 + EnumValue48526 + EnumValue48527 +} + +enum Enum2878 @Directive44(argument97 : ["stringValue47316"]) { + EnumValue48528 + EnumValue48529 + EnumValue48530 + EnumValue48531 + EnumValue48532 + EnumValue48533 + EnumValue48534 + EnumValue48535 + EnumValue48536 + EnumValue48537 + EnumValue48538 +} + +enum Enum2879 @Directive44(argument97 : ["stringValue47318"]) { + EnumValue48539 + EnumValue48540 + EnumValue48541 + EnumValue48542 + EnumValue48543 + EnumValue48544 + EnumValue48545 + EnumValue48546 + EnumValue48547 + EnumValue48548 +} + +enum Enum288 @Directive19(argument57 : "stringValue5404") @Directive22(argument62 : "stringValue5403") @Directive44(argument97 : ["stringValue5405", "stringValue5406"]) { + EnumValue5222 + EnumValue5223 + EnumValue5224 +} + +enum Enum2880 @Directive44(argument97 : ["stringValue47319"]) { + EnumValue48549 + EnumValue48550 + EnumValue48551 + EnumValue48552 + EnumValue48553 + EnumValue48554 + EnumValue48555 + EnumValue48556 + EnumValue48557 + EnumValue48558 + EnumValue48559 + EnumValue48560 + EnumValue48561 + EnumValue48562 + EnumValue48563 + EnumValue48564 + EnumValue48565 + EnumValue48566 + EnumValue48567 + EnumValue48568 + EnumValue48569 + EnumValue48570 + EnumValue48571 + EnumValue48572 + EnumValue48573 + EnumValue48574 + EnumValue48575 + EnumValue48576 + EnumValue48577 + EnumValue48578 + EnumValue48579 + EnumValue48580 +} + +enum Enum2881 @Directive44(argument97 : ["stringValue47322"]) { + EnumValue48581 + EnumValue48582 + EnumValue48583 + EnumValue48584 + EnumValue48585 + EnumValue48586 + EnumValue48587 + EnumValue48588 + EnumValue48589 + EnumValue48590 +} + +enum Enum2882 @Directive44(argument97 : ["stringValue47323"]) { + EnumValue48591 + EnumValue48592 + EnumValue48593 +} + +enum Enum2883 @Directive44(argument97 : ["stringValue47324"]) { + EnumValue48594 + EnumValue48595 + EnumValue48596 + EnumValue48597 + EnumValue48598 + EnumValue48599 + EnumValue48600 + EnumValue48601 +} + +enum Enum2884 @Directive44(argument97 : ["stringValue47325"]) { + EnumValue48602 + EnumValue48603 + EnumValue48604 + EnumValue48605 + EnumValue48606 +} + +enum Enum2885 @Directive44(argument97 : ["stringValue47326"]) { + EnumValue48607 + EnumValue48608 + EnumValue48609 + EnumValue48610 +} + +enum Enum2886 @Directive44(argument97 : ["stringValue47327"]) { + EnumValue48611 + EnumValue48612 + EnumValue48613 +} + +enum Enum2887 @Directive44(argument97 : ["stringValue47328"]) { + EnumValue48614 + EnumValue48615 + EnumValue48616 + EnumValue48617 +} + +enum Enum2888 @Directive44(argument97 : ["stringValue47332"]) { + EnumValue48618 + EnumValue48619 + EnumValue48620 + EnumValue48621 + EnumValue48622 + EnumValue48623 + EnumValue48624 +} + +enum Enum2889 @Directive44(argument97 : ["stringValue47333"]) { + EnumValue48625 + EnumValue48626 + EnumValue48627 +} + +enum Enum289 @Directive19(argument57 : "stringValue5438") @Directive22(argument62 : "stringValue5437") @Directive44(argument97 : ["stringValue5439", "stringValue5440"]) { + EnumValue5225 + EnumValue5226 +} + +enum Enum2890 @Directive44(argument97 : ["stringValue47342"]) { + EnumValue48628 + EnumValue48629 + EnumValue48630 + EnumValue48631 + EnumValue48632 + EnumValue48633 + EnumValue48634 +} + +enum Enum2891 @Directive44(argument97 : ["stringValue47345"]) { + EnumValue48635 + EnumValue48636 + EnumValue48637 + EnumValue48638 +} + +enum Enum2892 @Directive44(argument97 : ["stringValue47367"]) { + EnumValue48639 + EnumValue48640 +} + +enum Enum2893 @Directive44(argument97 : ["stringValue47376"]) { + EnumValue48641 + EnumValue48642 + EnumValue48643 +} + +enum Enum2894 @Directive44(argument97 : ["stringValue47404"]) { + EnumValue48644 + EnumValue48645 + EnumValue48646 +} + +enum Enum2895 @Directive44(argument97 : ["stringValue47407"]) { + EnumValue48647 + EnumValue48648 + EnumValue48649 + EnumValue48650 + EnumValue48651 +} + +enum Enum2896 @Directive44(argument97 : ["stringValue47419"]) { + EnumValue48652 + EnumValue48653 + EnumValue48654 +} + +enum Enum2897 @Directive44(argument97 : ["stringValue47426"]) { + EnumValue48655 + EnumValue48656 + EnumValue48657 + EnumValue48658 +} + +enum Enum2898 @Directive44(argument97 : ["stringValue47509"]) { + EnumValue48659 + EnumValue48660 + EnumValue48661 + EnumValue48662 + EnumValue48663 + EnumValue48664 +} + +enum Enum2899 @Directive44(argument97 : ["stringValue47520"]) { + EnumValue48665 + EnumValue48666 + EnumValue48667 + EnumValue48668 + EnumValue48669 + EnumValue48670 + EnumValue48671 + EnumValue48672 + EnumValue48673 + EnumValue48674 + EnumValue48675 +} + +enum Enum29 @Directive44(argument97 : ["stringValue266"]) { + EnumValue902 + EnumValue903 + EnumValue904 + EnumValue905 +} + +enum Enum290 @Directive19(argument57 : "stringValue5540") @Directive22(argument62 : "stringValue5539") @Directive44(argument97 : ["stringValue5541", "stringValue5542"]) { + EnumValue5227 + EnumValue5228 + EnumValue5229 + EnumValue5230 +} + +enum Enum2900 @Directive44(argument97 : ["stringValue47580"]) { + EnumValue48676 + EnumValue48677 +} + +enum Enum2901 @Directive44(argument97 : ["stringValue47599"]) { + EnumValue48678 + EnumValue48679 + EnumValue48680 + EnumValue48681 + EnumValue48682 + EnumValue48683 + EnumValue48684 + EnumValue48685 + EnumValue48686 +} + +enum Enum2902 @Directive44(argument97 : ["stringValue47600"]) { + EnumValue48687 + EnumValue48688 + EnumValue48689 +} + +enum Enum2903 @Directive44(argument97 : ["stringValue47611"]) { + EnumValue48690 + EnumValue48691 + EnumValue48692 +} + +enum Enum2904 @Directive44(argument97 : ["stringValue47612"]) { + EnumValue48693 + EnumValue48694 + EnumValue48695 + EnumValue48696 +} + +enum Enum2905 @Directive44(argument97 : ["stringValue47641"]) { + EnumValue48697 + EnumValue48698 + EnumValue48699 + EnumValue48700 + EnumValue48701 + EnumValue48702 + EnumValue48703 +} + +enum Enum2906 @Directive44(argument97 : ["stringValue47642"]) { + EnumValue48704 + EnumValue48705 + EnumValue48706 + EnumValue48707 + EnumValue48708 + EnumValue48709 + EnumValue48710 + EnumValue48711 + EnumValue48712 + EnumValue48713 + EnumValue48714 +} + +enum Enum2907 @Directive44(argument97 : ["stringValue47643"]) { + EnumValue48715 + EnumValue48716 + EnumValue48717 + EnumValue48718 + EnumValue48719 + EnumValue48720 + EnumValue48721 + EnumValue48722 + EnumValue48723 + EnumValue48724 + EnumValue48725 + EnumValue48726 + EnumValue48727 + EnumValue48728 + EnumValue48729 + EnumValue48730 + EnumValue48731 + EnumValue48732 + EnumValue48733 + EnumValue48734 + EnumValue48735 + EnumValue48736 + EnumValue48737 + EnumValue48738 + EnumValue48739 + EnumValue48740 + EnumValue48741 + EnumValue48742 + EnumValue48743 + EnumValue48744 + EnumValue48745 + EnumValue48746 + EnumValue48747 +} + +enum Enum2908 @Directive44(argument97 : ["stringValue47674"]) { + EnumValue48748 + EnumValue48749 + EnumValue48750 +} + +enum Enum2909 @Directive44(argument97 : ["stringValue47675"]) { + EnumValue48751 + EnumValue48752 + EnumValue48753 +} + +enum Enum291 @Directive19(argument57 : "stringValue5564") @Directive22(argument62 : "stringValue5563") @Directive44(argument97 : ["stringValue5565", "stringValue5566"]) { + EnumValue5231 + EnumValue5232 + EnumValue5233 +} + +enum Enum2910 @Directive44(argument97 : ["stringValue47676"]) { + EnumValue48754 + EnumValue48755 + EnumValue48756 + EnumValue48757 +} + +enum Enum2911 @Directive44(argument97 : ["stringValue47677"]) { + EnumValue48758 + EnumValue48759 + EnumValue48760 + EnumValue48761 +} + +enum Enum2912 @Directive44(argument97 : ["stringValue47700"]) { + EnumValue48762 + EnumValue48763 + EnumValue48764 + EnumValue48765 + EnumValue48766 + EnumValue48767 + EnumValue48768 + EnumValue48769 +} + +enum Enum2913 @Directive44(argument97 : ["stringValue47746"]) { + EnumValue48770 + EnumValue48771 + EnumValue48772 + EnumValue48773 + EnumValue48774 + EnumValue48775 + EnumValue48776 + EnumValue48777 + EnumValue48778 + EnumValue48779 + EnumValue48780 + EnumValue48781 + EnumValue48782 + EnumValue48783 + EnumValue48784 + EnumValue48785 + EnumValue48786 + EnumValue48787 + EnumValue48788 + EnumValue48789 + EnumValue48790 + EnumValue48791 + EnumValue48792 + EnumValue48793 + EnumValue48794 + EnumValue48795 + EnumValue48796 + EnumValue48797 + EnumValue48798 + EnumValue48799 + EnumValue48800 + EnumValue48801 + EnumValue48802 + EnumValue48803 + EnumValue48804 + EnumValue48805 + EnumValue48806 + EnumValue48807 + EnumValue48808 + EnumValue48809 + EnumValue48810 + EnumValue48811 + EnumValue48812 + EnumValue48813 + EnumValue48814 + EnumValue48815 + EnumValue48816 + EnumValue48817 + EnumValue48818 + EnumValue48819 + EnumValue48820 + EnumValue48821 + EnumValue48822 + EnumValue48823 + EnumValue48824 + EnumValue48825 + EnumValue48826 + EnumValue48827 + EnumValue48828 + EnumValue48829 + EnumValue48830 + EnumValue48831 + EnumValue48832 + EnumValue48833 + EnumValue48834 + EnumValue48835 + EnumValue48836 + EnumValue48837 + EnumValue48838 + EnumValue48839 + EnumValue48840 + EnumValue48841 + EnumValue48842 + EnumValue48843 + EnumValue48844 + EnumValue48845 + EnumValue48846 + EnumValue48847 + EnumValue48848 + EnumValue48849 + EnumValue48850 + EnumValue48851 + EnumValue48852 + EnumValue48853 + EnumValue48854 + EnumValue48855 + EnumValue48856 + EnumValue48857 + EnumValue48858 + EnumValue48859 + EnumValue48860 + EnumValue48861 + EnumValue48862 + EnumValue48863 + EnumValue48864 + EnumValue48865 + EnumValue48866 + EnumValue48867 + EnumValue48868 + EnumValue48869 + EnumValue48870 + EnumValue48871 +} + +enum Enum2914 @Directive44(argument97 : ["stringValue47754"]) { + EnumValue48872 + EnumValue48873 + EnumValue48874 + EnumValue48875 + EnumValue48876 + EnumValue48877 + EnumValue48878 + EnumValue48879 + EnumValue48880 + EnumValue48881 + EnumValue48882 + EnumValue48883 + EnumValue48884 + EnumValue48885 + EnumValue48886 + EnumValue48887 + EnumValue48888 + EnumValue48889 +} + +enum Enum2915 @Directive44(argument97 : ["stringValue47801"]) { + EnumValue48890 + EnumValue48891 + EnumValue48892 + EnumValue48893 + EnumValue48894 + EnumValue48895 + EnumValue48896 + EnumValue48897 + EnumValue48898 + EnumValue48899 + EnumValue48900 + EnumValue48901 + EnumValue48902 + EnumValue48903 + EnumValue48904 + EnumValue48905 +} + +enum Enum2916 @Directive44(argument97 : ["stringValue47828"]) { + EnumValue48906 + EnumValue48907 + EnumValue48908 +} + +enum Enum2917 @Directive44(argument97 : ["stringValue47839"]) { + EnumValue48909 + EnumValue48910 + EnumValue48911 + EnumValue48912 + EnumValue48913 + EnumValue48914 + EnumValue48915 + EnumValue48916 + EnumValue48917 + EnumValue48918 + EnumValue48919 + EnumValue48920 + EnumValue48921 + EnumValue48922 + EnumValue48923 + EnumValue48924 + EnumValue48925 + EnumValue48926 + EnumValue48927 + EnumValue48928 + EnumValue48929 + EnumValue48930 + EnumValue48931 + EnumValue48932 + EnumValue48933 + EnumValue48934 + EnumValue48935 + EnumValue48936 + EnumValue48937 + EnumValue48938 +} + +enum Enum2918 @Directive44(argument97 : ["stringValue47876"]) { + EnumValue48939 + EnumValue48940 + EnumValue48941 +} + +enum Enum2919 @Directive44(argument97 : ["stringValue47923"]) { + EnumValue48942 + EnumValue48943 + EnumValue48944 + EnumValue48945 + EnumValue48946 +} + +enum Enum292 @Directive19(argument57 : "stringValue5600") @Directive22(argument62 : "stringValue5599") @Directive44(argument97 : ["stringValue5601", "stringValue5602"]) { + EnumValue5234 + EnumValue5235 +} + +enum Enum2920 @Directive44(argument97 : ["stringValue47926"]) { + EnumValue48947 + EnumValue48948 + EnumValue48949 + EnumValue48950 + EnumValue48951 + EnumValue48952 + EnumValue48953 + EnumValue48954 + EnumValue48955 + EnumValue48956 + EnumValue48957 + EnumValue48958 + EnumValue48959 + EnumValue48960 + EnumValue48961 + EnumValue48962 + EnumValue48963 + EnumValue48964 + EnumValue48965 + EnumValue48966 + EnumValue48967 + EnumValue48968 + EnumValue48969 + EnumValue48970 + EnumValue48971 + EnumValue48972 + EnumValue48973 + EnumValue48974 + EnumValue48975 + EnumValue48976 + EnumValue48977 + EnumValue48978 + EnumValue48979 + EnumValue48980 + EnumValue48981 + EnumValue48982 + EnumValue48983 + EnumValue48984 + EnumValue48985 + EnumValue48986 + EnumValue48987 + EnumValue48988 + EnumValue48989 + EnumValue48990 + EnumValue48991 + EnumValue48992 + EnumValue48993 + EnumValue48994 + EnumValue48995 + EnumValue48996 + EnumValue48997 + EnumValue48998 + EnumValue48999 + EnumValue49000 + EnumValue49001 + EnumValue49002 + EnumValue49003 + EnumValue49004 + EnumValue49005 + EnumValue49006 + EnumValue49007 + EnumValue49008 + EnumValue49009 + EnumValue49010 + EnumValue49011 + EnumValue49012 + EnumValue49013 + EnumValue49014 + EnumValue49015 + EnumValue49016 + EnumValue49017 + EnumValue49018 + EnumValue49019 + EnumValue49020 + EnumValue49021 + EnumValue49022 + EnumValue49023 + EnumValue49024 + EnumValue49025 + EnumValue49026 + EnumValue49027 + EnumValue49028 + EnumValue49029 + EnumValue49030 + EnumValue49031 + EnumValue49032 + EnumValue49033 + EnumValue49034 + EnumValue49035 + EnumValue49036 + EnumValue49037 + EnumValue49038 + EnumValue49039 + EnumValue49040 + EnumValue49041 + EnumValue49042 + EnumValue49043 + EnumValue49044 + EnumValue49045 + EnumValue49046 + EnumValue49047 + EnumValue49048 + EnumValue49049 + EnumValue49050 + EnumValue49051 + EnumValue49052 + EnumValue49053 + EnumValue49054 + EnumValue49055 + EnumValue49056 + EnumValue49057 + EnumValue49058 + EnumValue49059 + EnumValue49060 + EnumValue49061 + EnumValue49062 + EnumValue49063 + EnumValue49064 + EnumValue49065 + EnumValue49066 + EnumValue49067 + EnumValue49068 + EnumValue49069 + EnumValue49070 + EnumValue49071 + EnumValue49072 + EnumValue49073 + EnumValue49074 + EnumValue49075 + EnumValue49076 + EnumValue49077 + EnumValue49078 + EnumValue49079 + EnumValue49080 + EnumValue49081 + EnumValue49082 + EnumValue49083 + EnumValue49084 + EnumValue49085 + EnumValue49086 + EnumValue49087 + EnumValue49088 + EnumValue49089 + EnumValue49090 + EnumValue49091 + EnumValue49092 + EnumValue49093 + EnumValue49094 + EnumValue49095 + EnumValue49096 + EnumValue49097 + EnumValue49098 + EnumValue49099 + EnumValue49100 + EnumValue49101 + EnumValue49102 + EnumValue49103 + EnumValue49104 + EnumValue49105 + EnumValue49106 + EnumValue49107 + EnumValue49108 + EnumValue49109 + EnumValue49110 + EnumValue49111 + EnumValue49112 + EnumValue49113 + EnumValue49114 + EnumValue49115 + EnumValue49116 + EnumValue49117 + EnumValue49118 + EnumValue49119 + EnumValue49120 + EnumValue49121 + EnumValue49122 + EnumValue49123 + EnumValue49124 + EnumValue49125 + EnumValue49126 + EnumValue49127 + EnumValue49128 + EnumValue49129 + EnumValue49130 + EnumValue49131 + EnumValue49132 + EnumValue49133 + EnumValue49134 + EnumValue49135 + EnumValue49136 + EnumValue49137 + EnumValue49138 + EnumValue49139 + EnumValue49140 + EnumValue49141 + EnumValue49142 + EnumValue49143 + EnumValue49144 + EnumValue49145 + EnumValue49146 + EnumValue49147 + EnumValue49148 + EnumValue49149 + EnumValue49150 + EnumValue49151 + EnumValue49152 + EnumValue49153 + EnumValue49154 + EnumValue49155 + EnumValue49156 + EnumValue49157 + EnumValue49158 + EnumValue49159 + EnumValue49160 + EnumValue49161 + EnumValue49162 + EnumValue49163 + EnumValue49164 + EnumValue49165 + EnumValue49166 + EnumValue49167 + EnumValue49168 + EnumValue49169 + EnumValue49170 + EnumValue49171 + EnumValue49172 + EnumValue49173 + EnumValue49174 + EnumValue49175 + EnumValue49176 + EnumValue49177 + EnumValue49178 + EnumValue49179 + EnumValue49180 + EnumValue49181 + EnumValue49182 + EnumValue49183 + EnumValue49184 + EnumValue49185 + EnumValue49186 + EnumValue49187 + EnumValue49188 + EnumValue49189 + EnumValue49190 + EnumValue49191 + EnumValue49192 + EnumValue49193 + EnumValue49194 + EnumValue49195 + EnumValue49196 +} + +enum Enum2921 @Directive44(argument97 : ["stringValue47927"]) { + EnumValue49197 + EnumValue49198 + EnumValue49199 + EnumValue49200 +} + +enum Enum2922 @Directive44(argument97 : ["stringValue47939"]) { + EnumValue49201 + EnumValue49202 + EnumValue49203 + EnumValue49204 + EnumValue49205 + EnumValue49206 + EnumValue49207 + EnumValue49208 + EnumValue49209 + EnumValue49210 + EnumValue49211 + EnumValue49212 + EnumValue49213 + EnumValue49214 + EnumValue49215 + EnumValue49216 + EnumValue49217 + EnumValue49218 + EnumValue49219 +} + +enum Enum2923 @Directive44(argument97 : ["stringValue47958"]) { + EnumValue49220 + EnumValue49221 + EnumValue49222 + EnumValue49223 + EnumValue49224 + EnumValue49225 +} + +enum Enum2924 @Directive44(argument97 : ["stringValue47959"]) { + EnumValue49226 + EnumValue49227 + EnumValue49228 + EnumValue49229 + EnumValue49230 +} + +enum Enum2925 @Directive44(argument97 : ["stringValue47968"]) { + EnumValue49231 + EnumValue49232 + EnumValue49233 + EnumValue49234 + EnumValue49235 +} + +enum Enum2926 @Directive44(argument97 : ["stringValue47973"]) { + EnumValue49236 + EnumValue49237 + EnumValue49238 + EnumValue49239 + EnumValue49240 + EnumValue49241 + EnumValue49242 +} + +enum Enum2927 @Directive44(argument97 : ["stringValue48020"]) { + EnumValue49243 + EnumValue49244 + EnumValue49245 +} + +enum Enum2928 @Directive44(argument97 : ["stringValue48022"]) { + EnumValue49246 + EnumValue49247 + EnumValue49248 + EnumValue49249 + EnumValue49250 + EnumValue49251 + EnumValue49252 + EnumValue49253 + EnumValue49254 + EnumValue49255 + EnumValue49256 + EnumValue49257 + EnumValue49258 + EnumValue49259 + EnumValue49260 + EnumValue49261 +} + +enum Enum2929 @Directive44(argument97 : ["stringValue48026"]) { + EnumValue49262 + EnumValue49263 + EnumValue49264 + EnumValue49265 + EnumValue49266 + EnumValue49267 + EnumValue49268 + EnumValue49269 + EnumValue49270 + EnumValue49271 + EnumValue49272 + EnumValue49273 + EnumValue49274 +} + +enum Enum293 @Directive22(argument62 : "stringValue5770") @Directive44(argument97 : ["stringValue5771", "stringValue5772"]) { + EnumValue5236 + EnumValue5237 +} + +enum Enum2930 @Directive44(argument97 : ["stringValue48027"]) { + EnumValue49275 + EnumValue49276 + EnumValue49277 + EnumValue49278 + EnumValue49279 + EnumValue49280 + EnumValue49281 + EnumValue49282 + EnumValue49283 + EnumValue49284 + EnumValue49285 + EnumValue49286 + EnumValue49287 + EnumValue49288 + EnumValue49289 +} + +enum Enum2931 @Directive44(argument97 : ["stringValue48038"]) { + EnumValue49290 + EnumValue49291 + EnumValue49292 +} + +enum Enum2932 @Directive44(argument97 : ["stringValue48039"]) { + EnumValue49293 + EnumValue49294 + EnumValue49295 +} + +enum Enum2933 @Directive44(argument97 : ["stringValue48040"]) { + EnumValue49296 + EnumValue49297 + EnumValue49298 + EnumValue49299 + EnumValue49300 +} + +enum Enum2934 @Directive44(argument97 : ["stringValue48045"]) { + EnumValue49301 + EnumValue49302 + EnumValue49303 + EnumValue49304 + EnumValue49305 + EnumValue49306 + EnumValue49307 + EnumValue49308 + EnumValue49309 + EnumValue49310 + EnumValue49311 +} + +enum Enum2935 @Directive44(argument97 : ["stringValue48064"]) { + EnumValue49312 + EnumValue49313 + EnumValue49314 + EnumValue49315 + EnumValue49316 +} + +enum Enum2936 @Directive44(argument97 : ["stringValue48065"]) { + EnumValue49317 + EnumValue49318 + EnumValue49319 + EnumValue49320 + EnumValue49321 + EnumValue49322 +} + +enum Enum2937 @Directive44(argument97 : ["stringValue48066"]) { + EnumValue49323 + EnumValue49324 + EnumValue49325 + EnumValue49326 + EnumValue49327 +} + +enum Enum2938 @Directive44(argument97 : ["stringValue48067"]) { + EnumValue49328 + EnumValue49329 + EnumValue49330 + EnumValue49331 +} + +enum Enum2939 @Directive44(argument97 : ["stringValue48074"]) { + EnumValue49332 + EnumValue49333 + EnumValue49334 +} + +enum Enum294 @Directive19(argument57 : "stringValue5918") @Directive22(argument62 : "stringValue5917") @Directive44(argument97 : ["stringValue5919"]) { + EnumValue5238 + EnumValue5239 + EnumValue5240 + EnumValue5241 + EnumValue5242 + EnumValue5243 + EnumValue5244 + EnumValue5245 + EnumValue5246 + EnumValue5247 + EnumValue5248 +} + +enum Enum2940 @Directive44(argument97 : ["stringValue48081"]) { + EnumValue49335 + EnumValue49336 + EnumValue49337 + EnumValue49338 +} + +enum Enum2941 @Directive44(argument97 : ["stringValue48088"]) { + EnumValue49339 + EnumValue49340 + EnumValue49341 + EnumValue49342 +} + +enum Enum2942 @Directive44(argument97 : ["stringValue48097"]) { + EnumValue49343 + EnumValue49344 + EnumValue49345 +} + +enum Enum2943 @Directive44(argument97 : ["stringValue48102"]) { + EnumValue49346 + EnumValue49347 + EnumValue49348 + EnumValue49349 +} + +enum Enum2944 @Directive44(argument97 : ["stringValue48105"]) { + EnumValue49350 + EnumValue49351 + EnumValue49352 + EnumValue49353 +} + +enum Enum2945 @Directive44(argument97 : ["stringValue48106"]) { + EnumValue49354 + EnumValue49355 + EnumValue49356 +} + +enum Enum2946 @Directive44(argument97 : ["stringValue48124"]) { + EnumValue49357 + EnumValue49358 +} + +enum Enum2947 @Directive44(argument97 : ["stringValue48179"]) { + EnumValue49359 + EnumValue49360 + EnumValue49361 + EnumValue49362 +} + +enum Enum2948 @Directive44(argument97 : ["stringValue48194"]) { + EnumValue49363 + EnumValue49364 + EnumValue49365 +} + +enum Enum2949 @Directive44(argument97 : ["stringValue48203"]) { + EnumValue49366 + EnumValue49367 + EnumValue49368 +} + +enum Enum295 @Directive19(argument57 : "stringValue6017") @Directive22(argument62 : "stringValue6016") @Directive44(argument97 : ["stringValue6018", "stringValue6019"]) { + EnumValue5249 + EnumValue5250 + EnumValue5251 +} + +enum Enum2950 @Directive44(argument97 : ["stringValue48206"]) { + EnumValue49369 + EnumValue49370 + EnumValue49371 +} + +enum Enum2951 @Directive44(argument97 : ["stringValue48215"]) { + EnumValue49372 + EnumValue49373 + EnumValue49374 +} + +enum Enum2952 @Directive44(argument97 : ["stringValue48216"]) { + EnumValue49375 + EnumValue49376 + EnumValue49377 + EnumValue49378 + EnumValue49379 + EnumValue49380 + EnumValue49381 + EnumValue49382 + EnumValue49383 + EnumValue49384 + EnumValue49385 + EnumValue49386 + EnumValue49387 +} + +enum Enum2953 @Directive44(argument97 : ["stringValue48217"]) { + EnumValue49388 + EnumValue49389 + EnumValue49390 + EnumValue49391 + EnumValue49392 +} + +enum Enum2954 @Directive44(argument97 : ["stringValue48229"]) { + EnumValue49393 + EnumValue49394 + EnumValue49395 + EnumValue49396 +} + +enum Enum2955 @Directive44(argument97 : ["stringValue48230"]) { + EnumValue49397 + EnumValue49398 + EnumValue49399 + EnumValue49400 + EnumValue49401 + EnumValue49402 + EnumValue49403 + EnumValue49404 + EnumValue49405 + EnumValue49406 + EnumValue49407 + EnumValue49408 + EnumValue49409 + EnumValue49410 + EnumValue49411 + EnumValue49412 + EnumValue49413 + EnumValue49414 + EnumValue49415 + EnumValue49416 + EnumValue49417 + EnumValue49418 + EnumValue49419 + EnumValue49420 + EnumValue49421 + EnumValue49422 + EnumValue49423 + EnumValue49424 +} + +enum Enum2956 @Directive44(argument97 : ["stringValue48231"]) { + EnumValue49425 + EnumValue49426 + EnumValue49427 + EnumValue49428 + EnumValue49429 + EnumValue49430 + EnumValue49431 + EnumValue49432 + EnumValue49433 + EnumValue49434 + EnumValue49435 + EnumValue49436 + EnumValue49437 + EnumValue49438 + EnumValue49439 + EnumValue49440 + EnumValue49441 + EnumValue49442 + EnumValue49443 + EnumValue49444 + EnumValue49445 + EnumValue49446 + EnumValue49447 + EnumValue49448 + EnumValue49449 + EnumValue49450 + EnumValue49451 + EnumValue49452 + EnumValue49453 + EnumValue49454 + EnumValue49455 + EnumValue49456 +} + +enum Enum2957 @Directive44(argument97 : ["stringValue48232"]) { + EnumValue49457 + EnumValue49458 + EnumValue49459 + EnumValue49460 +} + +enum Enum2958 @Directive44(argument97 : ["stringValue48237"]) { + EnumValue49461 + EnumValue49462 + EnumValue49463 + EnumValue49464 +} + +enum Enum2959 @Directive44(argument97 : ["stringValue48251"]) { + EnumValue49465 + EnumValue49466 + EnumValue49467 + EnumValue49468 + EnumValue49469 + EnumValue49470 + EnumValue49471 + EnumValue49472 +} + +enum Enum296 @Directive22(argument62 : "stringValue6048") @Directive44(argument97 : ["stringValue6049", "stringValue6050"]) { + EnumValue5252 + EnumValue5253 +} + +enum Enum2960 @Directive44(argument97 : ["stringValue48260"]) { + EnumValue49473 + EnumValue49474 + EnumValue49475 + EnumValue49476 + EnumValue49477 + EnumValue49478 + EnumValue49479 + EnumValue49480 + EnumValue49481 + EnumValue49482 + EnumValue49483 + EnumValue49484 + EnumValue49485 + EnumValue49486 + EnumValue49487 + EnumValue49488 + EnumValue49489 +} + +enum Enum2961 @Directive44(argument97 : ["stringValue48261"]) { + EnumValue49490 + EnumValue49491 + EnumValue49492 + EnumValue49493 + EnumValue49494 + EnumValue49495 + EnumValue49496 + EnumValue49497 + EnumValue49498 +} + +enum Enum2962 @Directive44(argument97 : ["stringValue48264"]) { + EnumValue49499 + EnumValue49500 + EnumValue49501 + EnumValue49502 + EnumValue49503 + EnumValue49504 + EnumValue49505 + EnumValue49506 +} + +enum Enum2963 @Directive44(argument97 : ["stringValue48265"]) { + EnumValue49507 + EnumValue49508 +} + +enum Enum2964 @Directive44(argument97 : ["stringValue48271"]) { + EnumValue49509 + EnumValue49510 + EnumValue49511 + EnumValue49512 + EnumValue49513 + EnumValue49514 + EnumValue49515 + EnumValue49516 + EnumValue49517 + EnumValue49518 + EnumValue49519 + EnumValue49520 + EnumValue49521 + EnumValue49522 + EnumValue49523 + EnumValue49524 +} + +enum Enum2965 @Directive44(argument97 : ["stringValue48283"]) { + EnumValue49525 + EnumValue49526 + EnumValue49527 + EnumValue49528 + EnumValue49529 + EnumValue49530 + EnumValue49531 + EnumValue49532 +} + +enum Enum2966 @Directive44(argument97 : ["stringValue48316"]) { + EnumValue49533 + EnumValue49534 + EnumValue49535 + EnumValue49536 +} + +enum Enum2967 @Directive44(argument97 : ["stringValue48317"]) { + EnumValue49537 + EnumValue49538 + EnumValue49539 + EnumValue49540 +} + +enum Enum2968 @Directive44(argument97 : ["stringValue48352"]) { + EnumValue49541 + EnumValue49542 + EnumValue49543 + EnumValue49544 + EnumValue49545 +} + +enum Enum2969 @Directive44(argument97 : ["stringValue48353"]) { + EnumValue49546 + EnumValue49547 +} + +enum Enum297 @Directive19(argument57 : "stringValue6057") @Directive22(argument62 : "stringValue6054") @Directive44(argument97 : ["stringValue6055", "stringValue6056"]) { + EnumValue5254 +} + +enum Enum2970 @Directive44(argument97 : ["stringValue48356"]) { + EnumValue49548 + EnumValue49549 + EnumValue49550 +} + +enum Enum2971 @Directive44(argument97 : ["stringValue48359"]) { + EnumValue49551 + EnumValue49552 + EnumValue49553 + EnumValue49554 +} + +enum Enum2972 @Directive44(argument97 : ["stringValue48364"]) { + EnumValue49555 + EnumValue49556 + EnumValue49557 +} + +enum Enum2973 @Directive44(argument97 : ["stringValue48389"]) { + EnumValue49558 + EnumValue49559 + EnumValue49560 + EnumValue49561 +} + +enum Enum2974 @Directive44(argument97 : ["stringValue48392"]) { + EnumValue49562 + EnumValue49563 + EnumValue49564 +} + +enum Enum2975 @Directive44(argument97 : ["stringValue48395"]) { + EnumValue49565 + EnumValue49566 + EnumValue49567 +} + +enum Enum2976 @Directive44(argument97 : ["stringValue48400"]) { + EnumValue49568 + EnumValue49569 + EnumValue49570 + EnumValue49571 + EnumValue49572 + EnumValue49573 + EnumValue49574 + EnumValue49575 + EnumValue49576 + EnumValue49577 + EnumValue49578 + EnumValue49579 + EnumValue49580 + EnumValue49581 +} + +enum Enum2977 @Directive44(argument97 : ["stringValue48401"]) { + EnumValue49582 + EnumValue49583 + EnumValue49584 + EnumValue49585 + EnumValue49586 + EnumValue49587 + EnumValue49588 + EnumValue49589 + EnumValue49590 + EnumValue49591 + EnumValue49592 + EnumValue49593 + EnumValue49594 + EnumValue49595 + EnumValue49596 + EnumValue49597 + EnumValue49598 + EnumValue49599 + EnumValue49600 + EnumValue49601 + EnumValue49602 + EnumValue49603 + EnumValue49604 + EnumValue49605 + EnumValue49606 + EnumValue49607 + EnumValue49608 + EnumValue49609 + EnumValue49610 + EnumValue49611 + EnumValue49612 + EnumValue49613 + EnumValue49614 + EnumValue49615 + EnumValue49616 + EnumValue49617 + EnumValue49618 + EnumValue49619 + EnumValue49620 + EnumValue49621 +} + +enum Enum2978 @Directive44(argument97 : ["stringValue48402"]) { + EnumValue49622 + EnumValue49623 + EnumValue49624 + EnumValue49625 + EnumValue49626 +} + +enum Enum2979 @Directive44(argument97 : ["stringValue48403"]) { + EnumValue49627 + EnumValue49628 + EnumValue49629 +} + +enum Enum298 @Directive19(argument57 : "stringValue6064") @Directive22(argument62 : "stringValue6061") @Directive44(argument97 : ["stringValue6062", "stringValue6063"]) { + EnumValue5255 + EnumValue5256 +} + +enum Enum2980 @Directive44(argument97 : ["stringValue48420"]) { + EnumValue49630 + EnumValue49631 + EnumValue49632 + EnumValue49633 + EnumValue49634 +} + +enum Enum2981 @Directive44(argument97 : ["stringValue48421"]) { + EnumValue49635 + EnumValue49636 + EnumValue49637 + EnumValue49638 + EnumValue49639 + EnumValue49640 + EnumValue49641 + EnumValue49642 +} + +enum Enum2982 @Directive44(argument97 : ["stringValue48422"]) { + EnumValue49643 + EnumValue49644 + EnumValue49645 + EnumValue49646 + EnumValue49647 + EnumValue49648 +} + +enum Enum2983 @Directive44(argument97 : ["stringValue48423"]) { + EnumValue49649 + EnumValue49650 +} + +enum Enum2984 @Directive44(argument97 : ["stringValue48428"]) { + EnumValue49651 + EnumValue49652 + EnumValue49653 + EnumValue49654 +} + +enum Enum2985 @Directive44(argument97 : ["stringValue48429"]) { + EnumValue49655 + EnumValue49656 + EnumValue49657 + EnumValue49658 + EnumValue49659 + EnumValue49660 +} + +enum Enum2986 @Directive44(argument97 : ["stringValue48430"]) { + EnumValue49661 + EnumValue49662 + EnumValue49663 + EnumValue49664 +} + +enum Enum2987 @Directive44(argument97 : ["stringValue48431"]) { + EnumValue49665 + EnumValue49666 + EnumValue49667 + EnumValue49668 + EnumValue49669 +} + +enum Enum2988 @Directive44(argument97 : ["stringValue48434"]) { + EnumValue49670 + EnumValue49671 + EnumValue49672 + EnumValue49673 + EnumValue49674 + EnumValue49675 + EnumValue49676 +} + +enum Enum2989 @Directive44(argument97 : ["stringValue48448"]) { + EnumValue49677 + EnumValue49678 + EnumValue49679 + EnumValue49680 + EnumValue49681 + EnumValue49682 + EnumValue49683 + EnumValue49684 + EnumValue49685 + EnumValue49686 + EnumValue49687 + EnumValue49688 + EnumValue49689 + EnumValue49690 + EnumValue49691 + EnumValue49692 + EnumValue49693 + EnumValue49694 + EnumValue49695 + EnumValue49696 + EnumValue49697 + EnumValue49698 + EnumValue49699 + EnumValue49700 + EnumValue49701 + EnumValue49702 + EnumValue49703 + EnumValue49704 + EnumValue49705 + EnumValue49706 + EnumValue49707 + EnumValue49708 + EnumValue49709 + EnumValue49710 + EnumValue49711 + EnumValue49712 + EnumValue49713 + EnumValue49714 + EnumValue49715 + EnumValue49716 + EnumValue49717 + EnumValue49718 + EnumValue49719 + EnumValue49720 + EnumValue49721 + EnumValue49722 + EnumValue49723 + EnumValue49724 + EnumValue49725 + EnumValue49726 + EnumValue49727 + EnumValue49728 +} + +enum Enum299 @Directive22(argument62 : "stringValue6071") @Directive44(argument97 : ["stringValue6072", "stringValue6073"]) { + EnumValue5257 + EnumValue5258 +} + +enum Enum2990 @Directive44(argument97 : ["stringValue48449"]) { + EnumValue49729 + EnumValue49730 + EnumValue49731 + EnumValue49732 + EnumValue49733 + EnumValue49734 + EnumValue49735 + EnumValue49736 + EnumValue49737 + EnumValue49738 + EnumValue49739 + EnumValue49740 + EnumValue49741 + EnumValue49742 + EnumValue49743 + EnumValue49744 + EnumValue49745 + EnumValue49746 + EnumValue49747 + EnumValue49748 + EnumValue49749 + EnumValue49750 + EnumValue49751 + EnumValue49752 + EnumValue49753 + EnumValue49754 + EnumValue49755 +} + +enum Enum2991 @Directive44(argument97 : ["stringValue48452"]) { + EnumValue49756 + EnumValue49757 +} + +enum Enum2992 @Directive44(argument97 : ["stringValue48453"]) { + EnumValue49758 + EnumValue49759 + EnumValue49760 + EnumValue49761 + EnumValue49762 +} + +enum Enum2993 @Directive44(argument97 : ["stringValue48468"]) { + EnumValue49763 + EnumValue49764 +} + +enum Enum2994 @Directive44(argument97 : ["stringValue48471"]) { + EnumValue49765 + EnumValue49766 +} + +enum Enum2995 @Directive44(argument97 : ["stringValue48474"]) { + EnumValue49767 + EnumValue49768 + EnumValue49769 +} + +enum Enum2996 @Directive44(argument97 : ["stringValue48475"]) { + EnumValue49770 + EnumValue49771 + EnumValue49772 + EnumValue49773 +} + +enum Enum2997 @Directive44(argument97 : ["stringValue48486"]) { + EnumValue49774 + EnumValue49775 + EnumValue49776 + EnumValue49777 + EnumValue49778 + EnumValue49779 + EnumValue49780 +} + +enum Enum2998 @Directive44(argument97 : ["stringValue48487"]) { + EnumValue49781 + EnumValue49782 +} + +enum Enum2999 @Directive44(argument97 : ["stringValue48518"]) { + EnumValue49783 + EnumValue49784 + EnumValue49785 +} + +enum Enum3 @Directive19(argument57 : "stringValue65") @Directive22(argument62 : "stringValue64") @Directive44(argument97 : ["stringValue66", "stringValue67"]) { + EnumValue10 + EnumValue11 + EnumValue12 + EnumValue13 +} + +enum Enum30 @Directive44(argument97 : ["stringValue283"]) { + EnumValue906 + EnumValue907 + EnumValue908 +} + +enum Enum300 @Directive22(argument62 : "stringValue6113") @Directive44(argument97 : ["stringValue6114", "stringValue6115"]) { + EnumValue5259 + EnumValue5260 + EnumValue5261 +} + +enum Enum3000 @Directive44(argument97 : ["stringValue48527"]) { + EnumValue49786 + EnumValue49787 + EnumValue49788 + EnumValue49789 + EnumValue49790 + EnumValue49791 + EnumValue49792 + EnumValue49793 + EnumValue49794 + EnumValue49795 +} + +enum Enum3001 @Directive44(argument97 : ["stringValue48528"]) { + EnumValue49796 + EnumValue49797 + EnumValue49798 + EnumValue49799 +} + +enum Enum3002 @Directive44(argument97 : ["stringValue48543"]) { + EnumValue49800 + EnumValue49801 + EnumValue49802 + EnumValue49803 + EnumValue49804 +} + +enum Enum3003 @Directive44(argument97 : ["stringValue48548"]) { + EnumValue49805 + EnumValue49806 +} + +enum Enum3004 @Directive44(argument97 : ["stringValue48553"]) { + EnumValue49807 + EnumValue49808 + EnumValue49809 + EnumValue49810 + EnumValue49811 + EnumValue49812 +} + +enum Enum3005 @Directive44(argument97 : ["stringValue48560"]) { + EnumValue49813 + EnumValue49814 + EnumValue49815 + EnumValue49816 + EnumValue49817 + EnumValue49818 +} + +enum Enum3006 @Directive44(argument97 : ["stringValue48567"]) { + EnumValue49819 + EnumValue49820 + EnumValue49821 +} + +enum Enum3007 @Directive44(argument97 : ["stringValue48576"]) { + EnumValue49822 + EnumValue49823 + EnumValue49824 + EnumValue49825 + EnumValue49826 + EnumValue49827 + EnumValue49828 + EnumValue49829 + EnumValue49830 + EnumValue49831 + EnumValue49832 + EnumValue49833 + EnumValue49834 + EnumValue49835 + EnumValue49836 + EnumValue49837 + EnumValue49838 + EnumValue49839 + EnumValue49840 + EnumValue49841 + EnumValue49842 + EnumValue49843 + EnumValue49844 + EnumValue49845 + EnumValue49846 + EnumValue49847 + EnumValue49848 + EnumValue49849 + EnumValue49850 + EnumValue49851 + EnumValue49852 + EnumValue49853 + EnumValue49854 + EnumValue49855 + EnumValue49856 + EnumValue49857 + EnumValue49858 + EnumValue49859 + EnumValue49860 + EnumValue49861 + EnumValue49862 + EnumValue49863 + EnumValue49864 + EnumValue49865 + EnumValue49866 + EnumValue49867 + EnumValue49868 + EnumValue49869 + EnumValue49870 + EnumValue49871 + EnumValue49872 + EnumValue49873 + EnumValue49874 + EnumValue49875 + EnumValue49876 + EnumValue49877 + EnumValue49878 + EnumValue49879 + EnumValue49880 + EnumValue49881 + EnumValue49882 + EnumValue49883 + EnumValue49884 + EnumValue49885 + EnumValue49886 + EnumValue49887 + EnumValue49888 + EnumValue49889 + EnumValue49890 + EnumValue49891 + EnumValue49892 + EnumValue49893 + EnumValue49894 + EnumValue49895 + EnumValue49896 + EnumValue49897 + EnumValue49898 + EnumValue49899 + EnumValue49900 + EnumValue49901 + EnumValue49902 + EnumValue49903 + EnumValue49904 + EnumValue49905 + EnumValue49906 + EnumValue49907 + EnumValue49908 + EnumValue49909 + EnumValue49910 + EnumValue49911 + EnumValue49912 + EnumValue49913 + EnumValue49914 + EnumValue49915 + EnumValue49916 + EnumValue49917 + EnumValue49918 + EnumValue49919 + EnumValue49920 + EnumValue49921 + EnumValue49922 + EnumValue49923 + EnumValue49924 + EnumValue49925 + EnumValue49926 + EnumValue49927 + EnumValue49928 + EnumValue49929 + EnumValue49930 + EnumValue49931 + EnumValue49932 + EnumValue49933 + EnumValue49934 + EnumValue49935 + EnumValue49936 + EnumValue49937 + EnumValue49938 + EnumValue49939 + EnumValue49940 + EnumValue49941 + EnumValue49942 + EnumValue49943 + EnumValue49944 + EnumValue49945 + EnumValue49946 + EnumValue49947 + EnumValue49948 + EnumValue49949 + EnumValue49950 + EnumValue49951 + EnumValue49952 + EnumValue49953 + EnumValue49954 + EnumValue49955 + EnumValue49956 + EnumValue49957 + EnumValue49958 + EnumValue49959 + EnumValue49960 + EnumValue49961 + EnumValue49962 + EnumValue49963 + EnumValue49964 + EnumValue49965 + EnumValue49966 + EnumValue49967 + EnumValue49968 + EnumValue49969 + EnumValue49970 + EnumValue49971 + EnumValue49972 + EnumValue49973 + EnumValue49974 + EnumValue49975 + EnumValue49976 + EnumValue49977 + EnumValue49978 + EnumValue49979 + EnumValue49980 + EnumValue49981 + EnumValue49982 + EnumValue49983 + EnumValue49984 + EnumValue49985 + EnumValue49986 + EnumValue49987 + EnumValue49988 + EnumValue49989 + EnumValue49990 + EnumValue49991 + EnumValue49992 + EnumValue49993 + EnumValue49994 + EnumValue49995 + EnumValue49996 + EnumValue49997 + EnumValue49998 + EnumValue49999 + EnumValue50000 + EnumValue50001 + EnumValue50002 + EnumValue50003 + EnumValue50004 + EnumValue50005 + EnumValue50006 + EnumValue50007 + EnumValue50008 + EnumValue50009 + EnumValue50010 + EnumValue50011 + EnumValue50012 + EnumValue50013 + EnumValue50014 + EnumValue50015 + EnumValue50016 + EnumValue50017 + EnumValue50018 + EnumValue50019 + EnumValue50020 + EnumValue50021 + EnumValue50022 + EnumValue50023 + EnumValue50024 + EnumValue50025 + EnumValue50026 + EnumValue50027 + EnumValue50028 +} + +enum Enum3008 @Directive44(argument97 : ["stringValue48583"]) { + EnumValue50029 + EnumValue50030 + EnumValue50031 + EnumValue50032 + EnumValue50033 + EnumValue50034 +} + +enum Enum3009 @Directive44(argument97 : ["stringValue48584"]) { + EnumValue50035 + EnumValue50036 + EnumValue50037 +} + +enum Enum301 @Directive22(argument62 : "stringValue6116") @Directive44(argument97 : ["stringValue6117", "stringValue6118"]) { + EnumValue5262 + EnumValue5263 + EnumValue5264 +} + +enum Enum3010 @Directive44(argument97 : ["stringValue48589"]) { + EnumValue50038 + EnumValue50039 + EnumValue50040 +} + +enum Enum3011 @Directive44(argument97 : ["stringValue48604"]) { + EnumValue50041 + EnumValue50042 +} + +enum Enum3012 @Directive44(argument97 : ["stringValue48617"]) { + EnumValue50043 + EnumValue50044 + EnumValue50045 + EnumValue50046 + EnumValue50047 + EnumValue50048 + EnumValue50049 + EnumValue50050 + EnumValue50051 + EnumValue50052 +} + +enum Enum3013 @Directive44(argument97 : ["stringValue48636"]) { + EnumValue50053 + EnumValue50054 + EnumValue50055 +} + +enum Enum3014 @Directive44(argument97 : ["stringValue48650"]) { + EnumValue50056 + EnumValue50057 + EnumValue50058 +} + +enum Enum3015 @Directive44(argument97 : ["stringValue48706"]) { + EnumValue50059 + EnumValue50060 + EnumValue50061 + EnumValue50062 +} + +enum Enum3016 @Directive44(argument97 : ["stringValue48711"]) { + EnumValue50063 + EnumValue50064 + EnumValue50065 + EnumValue50066 +} + +enum Enum3017 @Directive44(argument97 : ["stringValue48734"]) { + EnumValue50067 + EnumValue50068 + EnumValue50069 + EnumValue50070 +} + +enum Enum3018 @Directive44(argument97 : ["stringValue48739"]) { + EnumValue50071 + EnumValue50072 + EnumValue50073 + EnumValue50074 + EnumValue50075 +} + +enum Enum3019 @Directive44(argument97 : ["stringValue48740"]) { + EnumValue50076 + EnumValue50077 + EnumValue50078 + EnumValue50079 +} + +enum Enum302 @Directive19(argument57 : "stringValue6139") @Directive22(argument62 : "stringValue6138") @Directive44(argument97 : ["stringValue6140", "stringValue6141"]) { + EnumValue5265 + EnumValue5266 + EnumValue5267 + EnumValue5268 + EnumValue5269 + EnumValue5270 +} + +enum Enum3020 @Directive44(argument97 : ["stringValue48746"]) { + EnumValue50080 + EnumValue50081 + EnumValue50082 +} + +enum Enum3021 @Directive44(argument97 : ["stringValue48755"]) { + EnumValue50083 + EnumValue50084 + EnumValue50085 +} + +enum Enum3022 @Directive44(argument97 : ["stringValue48780"]) { + EnumValue50086 + EnumValue50087 + EnumValue50088 + EnumValue50089 + EnumValue50090 + EnumValue50091 + EnumValue50092 +} + +enum Enum3023 @Directive44(argument97 : ["stringValue48805"]) { + EnumValue50093 + EnumValue50094 + EnumValue50095 +} + +enum Enum3024 @Directive44(argument97 : ["stringValue48850"]) { + EnumValue50096 + EnumValue50097 + EnumValue50098 + EnumValue50099 + EnumValue50100 +} + +enum Enum3025 @Directive44(argument97 : ["stringValue48853"]) { + EnumValue50101 + EnumValue50102 + EnumValue50103 +} + +enum Enum3026 @Directive44(argument97 : ["stringValue48858"]) { + EnumValue50104 + EnumValue50105 + EnumValue50106 +} + +enum Enum3027 @Directive44(argument97 : ["stringValue48863"]) { + EnumValue50107 + EnumValue50108 + EnumValue50109 + EnumValue50110 + EnumValue50111 + EnumValue50112 + EnumValue50113 + EnumValue50114 + EnumValue50115 + EnumValue50116 +} + +enum Enum3028 @Directive44(argument97 : ["stringValue48874"]) { + EnumValue50117 + EnumValue50118 + EnumValue50119 + EnumValue50120 + EnumValue50121 + EnumValue50122 +} + +enum Enum3029 @Directive44(argument97 : ["stringValue48875"]) { + EnumValue50123 + EnumValue50124 + EnumValue50125 + EnumValue50126 + EnumValue50127 + EnumValue50128 + EnumValue50129 + EnumValue50130 + EnumValue50131 + EnumValue50132 +} + +enum Enum303 @Directive22(argument62 : "stringValue6232") @Directive44(argument97 : ["stringValue6233", "stringValue6234"]) { + EnumValue5271 + EnumValue5272 + EnumValue5273 +} + +enum Enum3030 @Directive44(argument97 : ["stringValue48878"]) { + EnumValue50133 + EnumValue50134 + EnumValue50135 + EnumValue50136 + EnumValue50137 + EnumValue50138 + EnumValue50139 + EnumValue50140 + EnumValue50141 + EnumValue50142 + EnumValue50143 + EnumValue50144 + EnumValue50145 + EnumValue50146 +} + +enum Enum3031 @Directive44(argument97 : ["stringValue48898"]) { + EnumValue50147 + EnumValue50148 + EnumValue50149 + EnumValue50150 + EnumValue50151 +} + +enum Enum3032 @Directive44(argument97 : ["stringValue48899"]) { + EnumValue50152 + EnumValue50153 +} + +enum Enum3033 @Directive44(argument97 : ["stringValue48900"]) { + EnumValue50154 + EnumValue50155 + EnumValue50156 + EnumValue50157 +} + +enum Enum3034 @Directive44(argument97 : ["stringValue48905"]) { + EnumValue50158 + EnumValue50159 + EnumValue50160 + EnumValue50161 +} + +enum Enum3035 @Directive44(argument97 : ["stringValue48908"]) { + EnumValue50162 + EnumValue50163 + EnumValue50164 +} + +enum Enum3036 @Directive44(argument97 : ["stringValue48915"]) { + EnumValue50165 + EnumValue50166 + EnumValue50167 + EnumValue50168 + EnumValue50169 + EnumValue50170 + EnumValue50171 + EnumValue50172 + EnumValue50173 + EnumValue50174 + EnumValue50175 + EnumValue50176 + EnumValue50177 + EnumValue50178 + EnumValue50179 + EnumValue50180 + EnumValue50181 + EnumValue50182 +} + +enum Enum3037 @Directive44(argument97 : ["stringValue48920"]) { + EnumValue50183 + EnumValue50184 + EnumValue50185 + EnumValue50186 + EnumValue50187 + EnumValue50188 + EnumValue50189 + EnumValue50190 + EnumValue50191 + EnumValue50192 + EnumValue50193 +} + +enum Enum3038 @Directive44(argument97 : ["stringValue48921"]) { + EnumValue50194 + EnumValue50195 + EnumValue50196 +} + +enum Enum3039 @Directive44(argument97 : ["stringValue48922"]) { + EnumValue50197 + EnumValue50198 + EnumValue50199 + EnumValue50200 + EnumValue50201 +} + +enum Enum304 @Directive22(argument62 : "stringValue6253") @Directive44(argument97 : ["stringValue6254", "stringValue6255"]) { + EnumValue5274 + EnumValue5275 + EnumValue5276 + EnumValue5277 +} + +enum Enum3040 @Directive44(argument97 : ["stringValue48925"]) { + EnumValue50202 + EnumValue50203 + EnumValue50204 + EnumValue50205 +} + +enum Enum3041 @Directive44(argument97 : ["stringValue48926"]) { + EnumValue50206 + EnumValue50207 + EnumValue50208 + EnumValue50209 + EnumValue50210 + EnumValue50211 + EnumValue50212 + EnumValue50213 + EnumValue50214 + EnumValue50215 + EnumValue50216 + EnumValue50217 + EnumValue50218 + EnumValue50219 + EnumValue50220 + EnumValue50221 + EnumValue50222 + EnumValue50223 + EnumValue50224 + EnumValue50225 +} + +enum Enum3042 @Directive44(argument97 : ["stringValue48927"]) { + EnumValue50226 + EnumValue50227 + EnumValue50228 +} + +enum Enum3043 @Directive44(argument97 : ["stringValue48928"]) { + EnumValue50229 + EnumValue50230 + EnumValue50231 + EnumValue50232 +} + +enum Enum3044 @Directive44(argument97 : ["stringValue48929"]) { + EnumValue50233 + EnumValue50234 + EnumValue50235 + EnumValue50236 +} + +enum Enum3045 @Directive44(argument97 : ["stringValue48930"]) { + EnumValue50237 + EnumValue50238 + EnumValue50239 +} + +enum Enum3046 @Directive44(argument97 : ["stringValue48933"]) { + EnumValue50240 + EnumValue50241 + EnumValue50242 + EnumValue50243 + EnumValue50244 + EnumValue50245 + EnumValue50246 + EnumValue50247 + EnumValue50248 + EnumValue50249 + EnumValue50250 + EnumValue50251 + EnumValue50252 + EnumValue50253 + EnumValue50254 + EnumValue50255 + EnumValue50256 + EnumValue50257 + EnumValue50258 + EnumValue50259 + EnumValue50260 + EnumValue50261 + EnumValue50262 + EnumValue50263 + EnumValue50264 + EnumValue50265 + EnumValue50266 + EnumValue50267 + EnumValue50268 + EnumValue50269 + EnumValue50270 + EnumValue50271 + EnumValue50272 + EnumValue50273 + EnumValue50274 + EnumValue50275 + EnumValue50276 + EnumValue50277 + EnumValue50278 + EnumValue50279 + EnumValue50280 + EnumValue50281 + EnumValue50282 + EnumValue50283 + EnumValue50284 + EnumValue50285 + EnumValue50286 + EnumValue50287 + EnumValue50288 + EnumValue50289 + EnumValue50290 + EnumValue50291 + EnumValue50292 + EnumValue50293 + EnumValue50294 + EnumValue50295 + EnumValue50296 + EnumValue50297 + EnumValue50298 + EnumValue50299 + EnumValue50300 + EnumValue50301 + EnumValue50302 + EnumValue50303 + EnumValue50304 + EnumValue50305 + EnumValue50306 + EnumValue50307 + EnumValue50308 + EnumValue50309 + EnumValue50310 + EnumValue50311 + EnumValue50312 + EnumValue50313 + EnumValue50314 + EnumValue50315 + EnumValue50316 + EnumValue50317 + EnumValue50318 + EnumValue50319 + EnumValue50320 + EnumValue50321 + EnumValue50322 + EnumValue50323 + EnumValue50324 + EnumValue50325 + EnumValue50326 + EnumValue50327 + EnumValue50328 + EnumValue50329 + EnumValue50330 + EnumValue50331 + EnumValue50332 + EnumValue50333 + EnumValue50334 + EnumValue50335 + EnumValue50336 + EnumValue50337 + EnumValue50338 + EnumValue50339 + EnumValue50340 + EnumValue50341 + EnumValue50342 + EnumValue50343 + EnumValue50344 + EnumValue50345 + EnumValue50346 + EnumValue50347 + EnumValue50348 + EnumValue50349 + EnumValue50350 + EnumValue50351 + EnumValue50352 + EnumValue50353 + EnumValue50354 + EnumValue50355 + EnumValue50356 + EnumValue50357 + EnumValue50358 + EnumValue50359 + EnumValue50360 + EnumValue50361 + EnumValue50362 + EnumValue50363 + EnumValue50364 + EnumValue50365 + EnumValue50366 + EnumValue50367 + EnumValue50368 + EnumValue50369 + EnumValue50370 +} + +enum Enum3047 @Directive44(argument97 : ["stringValue48934"]) { + EnumValue50371 + EnumValue50372 + EnumValue50373 + EnumValue50374 + EnumValue50375 + EnumValue50376 + EnumValue50377 + EnumValue50378 + EnumValue50379 + EnumValue50380 + EnumValue50381 + EnumValue50382 + EnumValue50383 + EnumValue50384 + EnumValue50385 + EnumValue50386 + EnumValue50387 + EnumValue50388 + EnumValue50389 + EnumValue50390 + EnumValue50391 + EnumValue50392 + EnumValue50393 + EnumValue50394 + EnumValue50395 + EnumValue50396 + EnumValue50397 + EnumValue50398 + EnumValue50399 + EnumValue50400 + EnumValue50401 + EnumValue50402 + EnumValue50403 + EnumValue50404 + EnumValue50405 + EnumValue50406 + EnumValue50407 + EnumValue50408 + EnumValue50409 + EnumValue50410 + EnumValue50411 + EnumValue50412 + EnumValue50413 + EnumValue50414 + EnumValue50415 + EnumValue50416 + EnumValue50417 + EnumValue50418 + EnumValue50419 + EnumValue50420 + EnumValue50421 + EnumValue50422 + EnumValue50423 + EnumValue50424 + EnumValue50425 + EnumValue50426 + EnumValue50427 + EnumValue50428 + EnumValue50429 + EnumValue50430 + EnumValue50431 + EnumValue50432 + EnumValue50433 + EnumValue50434 + EnumValue50435 + EnumValue50436 + EnumValue50437 + EnumValue50438 + EnumValue50439 + EnumValue50440 + EnumValue50441 + EnumValue50442 + EnumValue50443 + EnumValue50444 + EnumValue50445 + EnumValue50446 + EnumValue50447 + EnumValue50448 + EnumValue50449 + EnumValue50450 + EnumValue50451 + EnumValue50452 + EnumValue50453 + EnumValue50454 + EnumValue50455 + EnumValue50456 + EnumValue50457 + EnumValue50458 + EnumValue50459 + EnumValue50460 + EnumValue50461 + EnumValue50462 + EnumValue50463 + EnumValue50464 + EnumValue50465 + EnumValue50466 + EnumValue50467 + EnumValue50468 + EnumValue50469 + EnumValue50470 + EnumValue50471 + EnumValue50472 + EnumValue50473 + EnumValue50474 + EnumValue50475 + EnumValue50476 + EnumValue50477 + EnumValue50478 + EnumValue50479 + EnumValue50480 + EnumValue50481 + EnumValue50482 + EnumValue50483 + EnumValue50484 + EnumValue50485 + EnumValue50486 + EnumValue50487 + EnumValue50488 + EnumValue50489 + EnumValue50490 + EnumValue50491 + EnumValue50492 + EnumValue50493 + EnumValue50494 + EnumValue50495 + EnumValue50496 + EnumValue50497 + EnumValue50498 + EnumValue50499 + EnumValue50500 + EnumValue50501 + EnumValue50502 + EnumValue50503 + EnumValue50504 + EnumValue50505 + EnumValue50506 + EnumValue50507 + EnumValue50508 + EnumValue50509 + EnumValue50510 + EnumValue50511 + EnumValue50512 + EnumValue50513 + EnumValue50514 + EnumValue50515 + EnumValue50516 + EnumValue50517 + EnumValue50518 + EnumValue50519 + EnumValue50520 + EnumValue50521 + EnumValue50522 + EnumValue50523 + EnumValue50524 + EnumValue50525 + EnumValue50526 + EnumValue50527 + EnumValue50528 + EnumValue50529 + EnumValue50530 + EnumValue50531 + EnumValue50532 + EnumValue50533 + EnumValue50534 + EnumValue50535 + EnumValue50536 + EnumValue50537 + EnumValue50538 + EnumValue50539 + EnumValue50540 + EnumValue50541 + EnumValue50542 + EnumValue50543 + EnumValue50544 + EnumValue50545 + EnumValue50546 + EnumValue50547 + EnumValue50548 + EnumValue50549 + EnumValue50550 + EnumValue50551 + EnumValue50552 + EnumValue50553 + EnumValue50554 + EnumValue50555 + EnumValue50556 + EnumValue50557 + EnumValue50558 + EnumValue50559 + EnumValue50560 + EnumValue50561 + EnumValue50562 + EnumValue50563 + EnumValue50564 + EnumValue50565 + EnumValue50566 + EnumValue50567 + EnumValue50568 + EnumValue50569 + EnumValue50570 + EnumValue50571 + EnumValue50572 + EnumValue50573 + EnumValue50574 + EnumValue50575 + EnumValue50576 + EnumValue50577 + EnumValue50578 + EnumValue50579 + EnumValue50580 + EnumValue50581 + EnumValue50582 + EnumValue50583 + EnumValue50584 + EnumValue50585 + EnumValue50586 + EnumValue50587 + EnumValue50588 + EnumValue50589 + EnumValue50590 + EnumValue50591 + EnumValue50592 + EnumValue50593 + EnumValue50594 + EnumValue50595 + EnumValue50596 + EnumValue50597 + EnumValue50598 + EnumValue50599 + EnumValue50600 + EnumValue50601 + EnumValue50602 + EnumValue50603 + EnumValue50604 + EnumValue50605 + EnumValue50606 + EnumValue50607 + EnumValue50608 + EnumValue50609 + EnumValue50610 + EnumValue50611 + EnumValue50612 + EnumValue50613 + EnumValue50614 + EnumValue50615 + EnumValue50616 + EnumValue50617 + EnumValue50618 + EnumValue50619 + EnumValue50620 + EnumValue50621 + EnumValue50622 + EnumValue50623 + EnumValue50624 + EnumValue50625 + EnumValue50626 + EnumValue50627 + EnumValue50628 + EnumValue50629 + EnumValue50630 + EnumValue50631 + EnumValue50632 + EnumValue50633 + EnumValue50634 + EnumValue50635 + EnumValue50636 + EnumValue50637 + EnumValue50638 + EnumValue50639 + EnumValue50640 + EnumValue50641 + EnumValue50642 + EnumValue50643 + EnumValue50644 + EnumValue50645 + EnumValue50646 + EnumValue50647 + EnumValue50648 + EnumValue50649 + EnumValue50650 + EnumValue50651 + EnumValue50652 + EnumValue50653 + EnumValue50654 + EnumValue50655 + EnumValue50656 + EnumValue50657 + EnumValue50658 + EnumValue50659 + EnumValue50660 + EnumValue50661 + EnumValue50662 + EnumValue50663 + EnumValue50664 + EnumValue50665 + EnumValue50666 + EnumValue50667 + EnumValue50668 + EnumValue50669 + EnumValue50670 + EnumValue50671 + EnumValue50672 + EnumValue50673 + EnumValue50674 + EnumValue50675 + EnumValue50676 + EnumValue50677 + EnumValue50678 + EnumValue50679 + EnumValue50680 + EnumValue50681 + EnumValue50682 + EnumValue50683 + EnumValue50684 + EnumValue50685 + EnumValue50686 + EnumValue50687 + EnumValue50688 + EnumValue50689 + EnumValue50690 + EnumValue50691 + EnumValue50692 + EnumValue50693 + EnumValue50694 + EnumValue50695 + EnumValue50696 + EnumValue50697 + EnumValue50698 + EnumValue50699 + EnumValue50700 + EnumValue50701 + EnumValue50702 + EnumValue50703 + EnumValue50704 + EnumValue50705 + EnumValue50706 + EnumValue50707 + EnumValue50708 + EnumValue50709 + EnumValue50710 + EnumValue50711 + EnumValue50712 + EnumValue50713 + EnumValue50714 + EnumValue50715 + EnumValue50716 + EnumValue50717 + EnumValue50718 + EnumValue50719 + EnumValue50720 + EnumValue50721 + EnumValue50722 + EnumValue50723 + EnumValue50724 + EnumValue50725 + EnumValue50726 + EnumValue50727 + EnumValue50728 + EnumValue50729 + EnumValue50730 + EnumValue50731 + EnumValue50732 + EnumValue50733 + EnumValue50734 + EnumValue50735 + EnumValue50736 + EnumValue50737 + EnumValue50738 + EnumValue50739 + EnumValue50740 + EnumValue50741 + EnumValue50742 + EnumValue50743 + EnumValue50744 + EnumValue50745 + EnumValue50746 + EnumValue50747 + EnumValue50748 + EnumValue50749 + EnumValue50750 + EnumValue50751 + EnumValue50752 + EnumValue50753 + EnumValue50754 + EnumValue50755 + EnumValue50756 + EnumValue50757 + EnumValue50758 + EnumValue50759 + EnumValue50760 + EnumValue50761 + EnumValue50762 + EnumValue50763 + EnumValue50764 + EnumValue50765 + EnumValue50766 + EnumValue50767 + EnumValue50768 + EnumValue50769 + EnumValue50770 + EnumValue50771 + EnumValue50772 + EnumValue50773 + EnumValue50774 + EnumValue50775 + EnumValue50776 + EnumValue50777 + EnumValue50778 + EnumValue50779 + EnumValue50780 + EnumValue50781 + EnumValue50782 + EnumValue50783 + EnumValue50784 + EnumValue50785 + EnumValue50786 + EnumValue50787 + EnumValue50788 + EnumValue50789 + EnumValue50790 + EnumValue50791 + EnumValue50792 + EnumValue50793 + EnumValue50794 + EnumValue50795 + EnumValue50796 + EnumValue50797 + EnumValue50798 + EnumValue50799 + EnumValue50800 + EnumValue50801 + EnumValue50802 + EnumValue50803 + EnumValue50804 + EnumValue50805 + EnumValue50806 + EnumValue50807 + EnumValue50808 + EnumValue50809 + EnumValue50810 + EnumValue50811 + EnumValue50812 + EnumValue50813 + EnumValue50814 + EnumValue50815 + EnumValue50816 + EnumValue50817 + EnumValue50818 + EnumValue50819 + EnumValue50820 + EnumValue50821 + EnumValue50822 + EnumValue50823 + EnumValue50824 + EnumValue50825 + EnumValue50826 + EnumValue50827 + EnumValue50828 + EnumValue50829 + EnumValue50830 + EnumValue50831 + EnumValue50832 + EnumValue50833 + EnumValue50834 + EnumValue50835 + EnumValue50836 + EnumValue50837 + EnumValue50838 + EnumValue50839 + EnumValue50840 + EnumValue50841 + EnumValue50842 + EnumValue50843 + EnumValue50844 + EnumValue50845 + EnumValue50846 + EnumValue50847 + EnumValue50848 + EnumValue50849 + EnumValue50850 + EnumValue50851 + EnumValue50852 + EnumValue50853 + EnumValue50854 + EnumValue50855 + EnumValue50856 + EnumValue50857 + EnumValue50858 + EnumValue50859 + EnumValue50860 + EnumValue50861 + EnumValue50862 + EnumValue50863 + EnumValue50864 + EnumValue50865 + EnumValue50866 + EnumValue50867 + EnumValue50868 + EnumValue50869 +} + +enum Enum3048 @Directive44(argument97 : ["stringValue48942"]) { + EnumValue50870 + EnumValue50871 + EnumValue50872 + EnumValue50873 + EnumValue50874 + EnumValue50875 + EnumValue50876 + EnumValue50877 + EnumValue50878 + EnumValue50879 + EnumValue50880 + EnumValue50881 + EnumValue50882 + EnumValue50883 + EnumValue50884 +} + +enum Enum3049 @Directive44(argument97 : ["stringValue48943"]) { + EnumValue50885 + EnumValue50886 + EnumValue50887 + EnumValue50888 + EnumValue50889 + EnumValue50890 + EnumValue50891 + EnumValue50892 + EnumValue50893 + EnumValue50894 + EnumValue50895 + EnumValue50896 +} + +enum Enum305 @Directive22(argument62 : "stringValue6262") @Directive44(argument97 : ["stringValue6263", "stringValue6264"]) { + EnumValue5278 + EnumValue5279 + EnumValue5280 + EnumValue5281 +} + +enum Enum3050 @Directive44(argument97 : ["stringValue48946"]) { + EnumValue50897 + EnumValue50898 + EnumValue50899 + EnumValue50900 + EnumValue50901 + EnumValue50902 + EnumValue50903 + EnumValue50904 + EnumValue50905 + EnumValue50906 + EnumValue50907 + EnumValue50908 + EnumValue50909 + EnumValue50910 + EnumValue50911 + EnumValue50912 + EnumValue50913 + EnumValue50914 + EnumValue50915 +} + +enum Enum3051 @Directive44(argument97 : ["stringValue48949"]) { + EnumValue50916 + EnumValue50917 + EnumValue50918 + EnumValue50919 + EnumValue50920 + EnumValue50921 + EnumValue50922 + EnumValue50923 + EnumValue50924 + EnumValue50925 + EnumValue50926 + EnumValue50927 +} + +enum Enum3052 @Directive44(argument97 : ["stringValue48952"]) { + EnumValue50928 + EnumValue50929 + EnumValue50930 + EnumValue50931 + EnumValue50932 + EnumValue50933 +} + +enum Enum3053 @Directive44(argument97 : ["stringValue48953"]) { + EnumValue50934 + EnumValue50935 + EnumValue50936 + EnumValue50937 + EnumValue50938 +} + +enum Enum3054 @Directive44(argument97 : ["stringValue48958"]) { + EnumValue50939 + EnumValue50940 + EnumValue50941 + EnumValue50942 + EnumValue50943 + EnumValue50944 +} + +enum Enum3055 @Directive44(argument97 : ["stringValue48959"]) { + EnumValue50945 + EnumValue50946 + EnumValue50947 + EnumValue50948 + EnumValue50949 + EnumValue50950 + EnumValue50951 + EnumValue50952 + EnumValue50953 + EnumValue50954 + EnumValue50955 + EnumValue50956 + EnumValue50957 +} + +enum Enum3056 @Directive44(argument97 : ["stringValue48962"]) { + EnumValue50958 + EnumValue50959 + EnumValue50960 + EnumValue50961 + EnumValue50962 +} + +enum Enum3057 @Directive44(argument97 : ["stringValue48963"]) { + EnumValue50963 + EnumValue50964 + EnumValue50965 + EnumValue50966 + EnumValue50967 +} + +enum Enum3058 @Directive44(argument97 : ["stringValue48964"]) { + EnumValue50968 + EnumValue50969 +} + +enum Enum3059 @Directive44(argument97 : ["stringValue48965"]) { + EnumValue50970 + EnumValue50971 + EnumValue50972 + EnumValue50973 + EnumValue50974 + EnumValue50975 + EnumValue50976 + EnumValue50977 + EnumValue50978 + EnumValue50979 + EnumValue50980 + EnumValue50981 + EnumValue50982 + EnumValue50983 + EnumValue50984 + EnumValue50985 + EnumValue50986 + EnumValue50987 + EnumValue50988 + EnumValue50989 + EnumValue50990 + EnumValue50991 + EnumValue50992 + EnumValue50993 + EnumValue50994 + EnumValue50995 + EnumValue50996 + EnumValue50997 + EnumValue50998 + EnumValue50999 + EnumValue51000 + EnumValue51001 + EnumValue51002 + EnumValue51003 + EnumValue51004 + EnumValue51005 + EnumValue51006 +} + +enum Enum306 @Directive22(argument62 : "stringValue6271") @Directive44(argument97 : ["stringValue6272", "stringValue6273"]) { + EnumValue5282 + EnumValue5283 +} + +enum Enum3060 @Directive44(argument97 : ["stringValue48966"]) { + EnumValue51007 + EnumValue51008 + EnumValue51009 + EnumValue51010 +} + +enum Enum3061 @Directive44(argument97 : ["stringValue48967"]) { + EnumValue51011 + EnumValue51012 + EnumValue51013 + EnumValue51014 + EnumValue51015 + EnumValue51016 + EnumValue51017 + EnumValue51018 + EnumValue51019 +} + +enum Enum3062 @Directive44(argument97 : ["stringValue48974"]) { + EnumValue51020 + EnumValue51021 + EnumValue51022 + EnumValue51023 + EnumValue51024 + EnumValue51025 + EnumValue51026 + EnumValue51027 + EnumValue51028 + EnumValue51029 + EnumValue51030 + EnumValue51031 + EnumValue51032 + EnumValue51033 + EnumValue51034 + EnumValue51035 + EnumValue51036 + EnumValue51037 + EnumValue51038 + EnumValue51039 + EnumValue51040 + EnumValue51041 + EnumValue51042 + EnumValue51043 + EnumValue51044 + EnumValue51045 +} + +enum Enum3063 @Directive44(argument97 : ["stringValue48985"]) { + EnumValue51046 + EnumValue51047 + EnumValue51048 +} + +enum Enum3064 @Directive44(argument97 : ["stringValue48990"]) { + EnumValue51049 + EnumValue51050 + EnumValue51051 +} + +enum Enum3065 @Directive44(argument97 : ["stringValue48991"]) { + EnumValue51052 + EnumValue51053 + EnumValue51054 +} + +enum Enum3066 @Directive44(argument97 : ["stringValue48992"]) { + EnumValue51055 + EnumValue51056 + EnumValue51057 +} + +enum Enum3067 @Directive44(argument97 : ["stringValue48993"]) { + EnumValue51058 + EnumValue51059 + EnumValue51060 +} + +enum Enum3068 @Directive44(argument97 : ["stringValue48994"]) { + EnumValue51061 + EnumValue51062 + EnumValue51063 + EnumValue51064 + EnumValue51065 + EnumValue51066 + EnumValue51067 + EnumValue51068 + EnumValue51069 + EnumValue51070 + EnumValue51071 + EnumValue51072 + EnumValue51073 + EnumValue51074 + EnumValue51075 + EnumValue51076 + EnumValue51077 + EnumValue51078 + EnumValue51079 + EnumValue51080 + EnumValue51081 + EnumValue51082 + EnumValue51083 + EnumValue51084 +} + +enum Enum3069 @Directive44(argument97 : ["stringValue48995"]) { + EnumValue51085 + EnumValue51086 + EnumValue51087 + EnumValue51088 + EnumValue51089 + EnumValue51090 + EnumValue51091 + EnumValue51092 + EnumValue51093 + EnumValue51094 + EnumValue51095 +} + +enum Enum307 @Directive19(argument57 : "stringValue6304") @Directive22(argument62 : "stringValue6303") @Directive44(argument97 : ["stringValue6305", "stringValue6306"]) { + EnumValue5284 + EnumValue5285 + EnumValue5286 + EnumValue5287 + EnumValue5288 + EnumValue5289 + EnumValue5290 + EnumValue5291 + EnumValue5292 + EnumValue5293 +} + +enum Enum3070 @Directive44(argument97 : ["stringValue48996"]) { + EnumValue51096 + EnumValue51097 + EnumValue51098 + EnumValue51099 + EnumValue51100 + EnumValue51101 + EnumValue51102 + EnumValue51103 + EnumValue51104 + EnumValue51105 + EnumValue51106 + EnumValue51107 + EnumValue51108 + EnumValue51109 + EnumValue51110 + EnumValue51111 + EnumValue51112 + EnumValue51113 + EnumValue51114 + EnumValue51115 + EnumValue51116 + EnumValue51117 +} + +enum Enum3071 @Directive44(argument97 : ["stringValue49027"]) { + EnumValue51118 + EnumValue51119 + EnumValue51120 + EnumValue51121 + EnumValue51122 + EnumValue51123 + EnumValue51124 + EnumValue51125 + EnumValue51126 + EnumValue51127 + EnumValue51128 + EnumValue51129 + EnumValue51130 + EnumValue51131 + EnumValue51132 + EnumValue51133 + EnumValue51134 + EnumValue51135 + EnumValue51136 + EnumValue51137 + EnumValue51138 + EnumValue51139 + EnumValue51140 + EnumValue51141 + EnumValue51142 + EnumValue51143 + EnumValue51144 + EnumValue51145 + EnumValue51146 + EnumValue51147 + EnumValue51148 + EnumValue51149 + EnumValue51150 + EnumValue51151 + EnumValue51152 + EnumValue51153 + EnumValue51154 + EnumValue51155 + EnumValue51156 + EnumValue51157 + EnumValue51158 + EnumValue51159 + EnumValue51160 + EnumValue51161 + EnumValue51162 + EnumValue51163 + EnumValue51164 + EnumValue51165 + EnumValue51166 + EnumValue51167 + EnumValue51168 + EnumValue51169 + EnumValue51170 + EnumValue51171 + EnumValue51172 + EnumValue51173 + EnumValue51174 + EnumValue51175 + EnumValue51176 + EnumValue51177 + EnumValue51178 + EnumValue51179 + EnumValue51180 + EnumValue51181 + EnumValue51182 + EnumValue51183 + EnumValue51184 + EnumValue51185 + EnumValue51186 + EnumValue51187 + EnumValue51188 + EnumValue51189 + EnumValue51190 + EnumValue51191 + EnumValue51192 + EnumValue51193 + EnumValue51194 + EnumValue51195 + EnumValue51196 + EnumValue51197 +} + +enum Enum3072 @Directive44(argument97 : ["stringValue49028"]) { + EnumValue51198 + EnumValue51199 + EnumValue51200 + EnumValue51201 + EnumValue51202 + EnumValue51203 + EnumValue51204 + EnumValue51205 + EnumValue51206 + EnumValue51207 + EnumValue51208 + EnumValue51209 + EnumValue51210 + EnumValue51211 + EnumValue51212 + EnumValue51213 + EnumValue51214 + EnumValue51215 + EnumValue51216 + EnumValue51217 + EnumValue51218 + EnumValue51219 + EnumValue51220 + EnumValue51221 + EnumValue51222 + EnumValue51223 + EnumValue51224 + EnumValue51225 + EnumValue51226 + EnumValue51227 + EnumValue51228 + EnumValue51229 +} + +enum Enum3073 @Directive44(argument97 : ["stringValue49029"]) { + EnumValue51230 + EnumValue51231 + EnumValue51232 + EnumValue51233 + EnumValue51234 +} + +enum Enum3074 @Directive44(argument97 : ["stringValue49034"]) { + EnumValue51235 + EnumValue51236 + EnumValue51237 + EnumValue51238 + EnumValue51239 + EnumValue51240 + EnumValue51241 + EnumValue51242 + EnumValue51243 + EnumValue51244 + EnumValue51245 + EnumValue51246 + EnumValue51247 + EnumValue51248 +} + +enum Enum3075 @Directive44(argument97 : ["stringValue49035"]) { + EnumValue51249 + EnumValue51250 + EnumValue51251 + EnumValue51252 + EnumValue51253 + EnumValue51254 + EnumValue51255 +} + +enum Enum3076 @Directive44(argument97 : ["stringValue49038"]) { + EnumValue51256 + EnumValue51257 + EnumValue51258 + EnumValue51259 + EnumValue51260 + EnumValue51261 + EnumValue51262 + EnumValue51263 + EnumValue51264 + EnumValue51265 + EnumValue51266 + EnumValue51267 + EnumValue51268 + EnumValue51269 + EnumValue51270 + EnumValue51271 +} + +enum Enum3077 @Directive44(argument97 : ["stringValue49043"]) { + EnumValue51272 + EnumValue51273 + EnumValue51274 + EnumValue51275 + EnumValue51276 + EnumValue51277 + EnumValue51278 +} + +enum Enum3078 @Directive44(argument97 : ["stringValue49044"]) { + EnumValue51279 + EnumValue51280 + EnumValue51281 + EnumValue51282 + EnumValue51283 + EnumValue51284 + EnumValue51285 + EnumValue51286 + EnumValue51287 + EnumValue51288 + EnumValue51289 + EnumValue51290 + EnumValue51291 + EnumValue51292 +} + +enum Enum3079 @Directive44(argument97 : ["stringValue49047"]) { + EnumValue51293 + EnumValue51294 + EnumValue51295 + EnumValue51296 + EnumValue51297 + EnumValue51298 + EnumValue51299 + EnumValue51300 + EnumValue51301 + EnumValue51302 + EnumValue51303 + EnumValue51304 + EnumValue51305 + EnumValue51306 + EnumValue51307 + EnumValue51308 + EnumValue51309 + EnumValue51310 + EnumValue51311 + EnumValue51312 + EnumValue51313 + EnumValue51314 + EnumValue51315 +} + +enum Enum308 @Directive22(argument62 : "stringValue6316") @Directive44(argument97 : ["stringValue6317", "stringValue6318"]) { + EnumValue5294 + EnumValue5295 +} + +enum Enum3080 @Directive44(argument97 : ["stringValue49050"]) { + EnumValue51316 + EnumValue51317 + EnumValue51318 + EnumValue51319 + EnumValue51320 + EnumValue51321 + EnumValue51322 + EnumValue51323 + EnumValue51324 + EnumValue51325 + EnumValue51326 + EnumValue51327 + EnumValue51328 + EnumValue51329 + EnumValue51330 + EnumValue51331 + EnumValue51332 + EnumValue51333 + EnumValue51334 + EnumValue51335 + EnumValue51336 + EnumValue51337 + EnumValue51338 +} + +enum Enum3081 @Directive44(argument97 : ["stringValue49051"]) { + EnumValue51339 + EnumValue51340 + EnumValue51341 + EnumValue51342 + EnumValue51343 + EnumValue51344 + EnumValue51345 + EnumValue51346 + EnumValue51347 + EnumValue51348 + EnumValue51349 + EnumValue51350 +} + +enum Enum3082 @Directive44(argument97 : ["stringValue49056"]) { + EnumValue51351 + EnumValue51352 + EnumValue51353 + EnumValue51354 + EnumValue51355 + EnumValue51356 + EnumValue51357 + EnumValue51358 +} + +enum Enum3083 @Directive44(argument97 : ["stringValue49057"]) { + EnumValue51359 + EnumValue51360 + EnumValue51361 + EnumValue51362 + EnumValue51363 + EnumValue51364 + EnumValue51365 + EnumValue51366 + EnumValue51367 + EnumValue51368 + EnumValue51369 +} + +enum Enum3084 @Directive44(argument97 : ["stringValue49062"]) { + EnumValue51370 + EnumValue51371 + EnumValue51372 + EnumValue51373 + EnumValue51374 + EnumValue51375 + EnumValue51376 + EnumValue51377 + EnumValue51378 + EnumValue51379 + EnumValue51380 + EnumValue51381 +} + +enum Enum3085 @Directive44(argument97 : ["stringValue49067"]) { + EnumValue51382 + EnumValue51383 + EnumValue51384 + EnumValue51385 + EnumValue51386 + EnumValue51387 + EnumValue51388 + EnumValue51389 + EnumValue51390 + EnumValue51391 + EnumValue51392 + EnumValue51393 + EnumValue51394 + EnumValue51395 + EnumValue51396 + EnumValue51397 + EnumValue51398 +} + +enum Enum3086 @Directive44(argument97 : ["stringValue49068"]) { + EnumValue51399 + EnumValue51400 + EnumValue51401 + EnumValue51402 + EnumValue51403 +} + +enum Enum3087 @Directive44(argument97 : ["stringValue49071"]) { + EnumValue51404 + EnumValue51405 + EnumValue51406 + EnumValue51407 + EnumValue51408 + EnumValue51409 + EnumValue51410 + EnumValue51411 + EnumValue51412 + EnumValue51413 + EnumValue51414 + EnumValue51415 + EnumValue51416 + EnumValue51417 +} + +enum Enum3088 @Directive44(argument97 : ["stringValue49080"]) { + EnumValue51418 + EnumValue51419 + EnumValue51420 +} + +enum Enum3089 @Directive44(argument97 : ["stringValue49093"]) { + EnumValue51421 + EnumValue51422 + EnumValue51423 +} + +enum Enum309 @Directive22(argument62 : "stringValue6322") @Directive44(argument97 : ["stringValue6323", "stringValue6324"]) { + EnumValue5296 + EnumValue5297 + EnumValue5298 + EnumValue5299 +} + +enum Enum3090 @Directive44(argument97 : ["stringValue49094"]) { + EnumValue51424 + EnumValue51425 + EnumValue51426 + EnumValue51427 + EnumValue51428 + EnumValue51429 + EnumValue51430 + EnumValue51431 + EnumValue51432 + EnumValue51433 + EnumValue51434 + EnumValue51435 + EnumValue51436 + EnumValue51437 + EnumValue51438 + EnumValue51439 + EnumValue51440 +} + +enum Enum3091 @Directive44(argument97 : ["stringValue49095"]) { + EnumValue51441 + EnumValue51442 + EnumValue51443 + EnumValue51444 +} + +enum Enum3092 @Directive44(argument97 : ["stringValue49103"]) { + EnumValue51445 + EnumValue51446 + EnumValue51447 + EnumValue51448 + EnumValue51449 + EnumValue51450 +} + +enum Enum3093 @Directive44(argument97 : ["stringValue49106"]) { + EnumValue51451 + EnumValue51452 + EnumValue51453 + EnumValue51454 + EnumValue51455 + EnumValue51456 + EnumValue51457 + EnumValue51458 + EnumValue51459 +} + +enum Enum3094 @Directive44(argument97 : ["stringValue49107"]) { + EnumValue51460 + EnumValue51461 + EnumValue51462 + EnumValue51463 + EnumValue51464 + EnumValue51465 + EnumValue51466 +} + +enum Enum3095 @Directive44(argument97 : ["stringValue49108"]) { + EnumValue51467 + EnumValue51468 + EnumValue51469 +} + +enum Enum3096 @Directive44(argument97 : ["stringValue49117"]) { + EnumValue51470 + EnumValue51471 + EnumValue51472 +} + +enum Enum3097 @Directive44(argument97 : ["stringValue49122"]) { + EnumValue51473 + EnumValue51474 + EnumValue51475 + EnumValue51476 + EnumValue51477 + EnumValue51478 + EnumValue51479 + EnumValue51480 + EnumValue51481 + EnumValue51482 + EnumValue51483 + EnumValue51484 + EnumValue51485 + EnumValue51486 + EnumValue51487 + EnumValue51488 + EnumValue51489 + EnumValue51490 + EnumValue51491 + EnumValue51492 + EnumValue51493 + EnumValue51494 + EnumValue51495 + EnumValue51496 + EnumValue51497 + EnumValue51498 + EnumValue51499 + EnumValue51500 + EnumValue51501 + EnumValue51502 + EnumValue51503 + EnumValue51504 + EnumValue51505 +} + +enum Enum3098 @Directive44(argument97 : ["stringValue49123"]) { + EnumValue51506 + EnumValue51507 + EnumValue51508 +} + +enum Enum3099 @Directive44(argument97 : ["stringValue49124"]) { + EnumValue51509 + EnumValue51510 + EnumValue51511 +} + +enum Enum31 @Directive44(argument97 : ["stringValue292"]) { + EnumValue909 + EnumValue910 + EnumValue911 +} + +enum Enum310 @Directive22(argument62 : "stringValue6328") @Directive44(argument97 : ["stringValue6329", "stringValue6330"]) { + EnumValue5300 + EnumValue5301 + EnumValue5302 + EnumValue5303 + EnumValue5304 + EnumValue5305 + EnumValue5306 + EnumValue5307 + EnumValue5308 + EnumValue5309 + EnumValue5310 + EnumValue5311 + EnumValue5312 + EnumValue5313 + EnumValue5314 + EnumValue5315 + EnumValue5316 + EnumValue5317 + EnumValue5318 + EnumValue5319 + EnumValue5320 + EnumValue5321 +} + +enum Enum3100 @Directive44(argument97 : ["stringValue49129"]) { + EnumValue51512 + EnumValue51513 + EnumValue51514 + EnumValue51515 + EnumValue51516 + EnumValue51517 + EnumValue51518 + EnumValue51519 +} + +enum Enum3101 @Directive44(argument97 : ["stringValue49138"]) { + EnumValue51520 + EnumValue51521 + EnumValue51522 +} + +enum Enum3102 @Directive44(argument97 : ["stringValue49153"]) { + EnumValue51523 + EnumValue51524 + EnumValue51525 + EnumValue51526 + EnumValue51527 + EnumValue51528 + EnumValue51529 + EnumValue51530 + EnumValue51531 + EnumValue51532 + EnumValue51533 + EnumValue51534 + EnumValue51535 + EnumValue51536 + EnumValue51537 + EnumValue51538 + EnumValue51539 + EnumValue51540 + EnumValue51541 + EnumValue51542 + EnumValue51543 + EnumValue51544 + EnumValue51545 + EnumValue51546 + EnumValue51547 + EnumValue51548 + EnumValue51549 + EnumValue51550 + EnumValue51551 + EnumValue51552 + EnumValue51553 + EnumValue51554 + EnumValue51555 + EnumValue51556 + EnumValue51557 + EnumValue51558 + EnumValue51559 + EnumValue51560 + EnumValue51561 + EnumValue51562 + EnumValue51563 + EnumValue51564 + EnumValue51565 + EnumValue51566 +} + +enum Enum3103 @Directive44(argument97 : ["stringValue49155"]) { + EnumValue51567 + EnumValue51568 + EnumValue51569 + EnumValue51570 + EnumValue51571 + EnumValue51572 + EnumValue51573 + EnumValue51574 + EnumValue51575 + EnumValue51576 + EnumValue51577 + EnumValue51578 + EnumValue51579 + EnumValue51580 + EnumValue51581 + EnumValue51582 + EnumValue51583 + EnumValue51584 + EnumValue51585 + EnumValue51586 + EnumValue51587 + EnumValue51588 + EnumValue51589 + EnumValue51590 + EnumValue51591 + EnumValue51592 + EnumValue51593 +} + +enum Enum3104 @Directive44(argument97 : ["stringValue49295"]) { + EnumValue51594 + EnumValue51595 + EnumValue51596 + EnumValue51597 + EnumValue51598 + EnumValue51599 + EnumValue51600 + EnumValue51601 + EnumValue51602 + EnumValue51603 + EnumValue51604 +} + +enum Enum3105 @Directive44(argument97 : ["stringValue49345"]) { + EnumValue51605 + EnumValue51606 + EnumValue51607 + EnumValue51608 +} + +enum Enum3106 @Directive44(argument97 : ["stringValue49368"]) { + EnumValue51609 + EnumValue51610 + EnumValue51611 + EnumValue51612 + EnumValue51613 + EnumValue51614 + EnumValue51615 + EnumValue51616 + EnumValue51617 + EnumValue51618 + EnumValue51619 + EnumValue51620 + EnumValue51621 + EnumValue51622 + EnumValue51623 + EnumValue51624 + EnumValue51625 + EnumValue51626 + EnumValue51627 + EnumValue51628 + EnumValue51629 +} + +enum Enum3107 @Directive44(argument97 : ["stringValue49371"]) { + EnumValue51630 + EnumValue51631 + EnumValue51632 +} + +enum Enum3108 @Directive44(argument97 : ["stringValue49378"]) { + EnumValue51633 + EnumValue51634 + EnumValue51635 + EnumValue51636 + EnumValue51637 + EnumValue51638 + EnumValue51639 + EnumValue51640 + EnumValue51641 +} + +enum Enum3109 @Directive44(argument97 : ["stringValue49379"]) { + EnumValue51642 + EnumValue51643 + EnumValue51644 + EnumValue51645 + EnumValue51646 +} + +enum Enum311 @Directive22(argument62 : "stringValue6331") @Directive44(argument97 : ["stringValue6332", "stringValue6333"]) { + EnumValue5322 + EnumValue5323 + EnumValue5324 + EnumValue5325 + EnumValue5326 +} + +enum Enum3110 @Directive44(argument97 : ["stringValue49382"]) { + EnumValue51647 + EnumValue51648 + EnumValue51649 + EnumValue51650 + EnumValue51651 + EnumValue51652 + EnumValue51653 + EnumValue51654 + EnumValue51655 + EnumValue51656 + EnumValue51657 +} + +enum Enum3111 @Directive44(argument97 : ["stringValue49400"]) { + EnumValue51658 + EnumValue51659 + EnumValue51660 + EnumValue51661 + EnumValue51662 + EnumValue51663 + EnumValue51664 + EnumValue51665 +} + +enum Enum3112 @Directive44(argument97 : ["stringValue49401"]) { + EnumValue51666 + EnumValue51667 + EnumValue51668 + EnumValue51669 + EnumValue51670 + EnumValue51671 + EnumValue51672 + EnumValue51673 + EnumValue51674 + EnumValue51675 +} + +enum Enum3113 @Directive44(argument97 : ["stringValue49402"]) { + EnumValue51676 + EnumValue51677 + EnumValue51678 + EnumValue51679 +} + +enum Enum3114 @Directive44(argument97 : ["stringValue49403"]) { + EnumValue51680 + EnumValue51681 + EnumValue51682 + EnumValue51683 + EnumValue51684 + EnumValue51685 + EnumValue51686 +} + +enum Enum3115 @Directive44(argument97 : ["stringValue49404"]) { + EnumValue51687 + EnumValue51688 + EnumValue51689 + EnumValue51690 + EnumValue51691 +} + +enum Enum3116 @Directive44(argument97 : ["stringValue49405"]) { + EnumValue51692 + EnumValue51693 + EnumValue51694 + EnumValue51695 + EnumValue51696 + EnumValue51697 +} + +enum Enum3117 @Directive44(argument97 : ["stringValue49406"]) { + EnumValue51698 + EnumValue51699 + EnumValue51700 +} + +enum Enum3118 @Directive44(argument97 : ["stringValue49407"]) { + EnumValue51701 + EnumValue51702 + EnumValue51703 + EnumValue51704 + EnumValue51705 + EnumValue51706 + EnumValue51707 + EnumValue51708 + EnumValue51709 + EnumValue51710 + EnumValue51711 + EnumValue51712 + EnumValue51713 + EnumValue51714 + EnumValue51715 + EnumValue51716 + EnumValue51717 + EnumValue51718 + EnumValue51719 + EnumValue51720 + EnumValue51721 + EnumValue51722 +} + +enum Enum3119 @Directive44(argument97 : ["stringValue49408"]) { + EnumValue51723 + EnumValue51724 + EnumValue51725 + EnumValue51726 + EnumValue51727 + EnumValue51728 +} + +enum Enum312 @Directive22(argument62 : "stringValue6341") @Directive44(argument97 : ["stringValue6342", "stringValue6343"]) { + EnumValue5327 + EnumValue5328 + EnumValue5329 + EnumValue5330 + EnumValue5331 + EnumValue5332 +} + +enum Enum3120 @Directive44(argument97 : ["stringValue49409"]) { + EnumValue51729 + EnumValue51730 + EnumValue51731 + EnumValue51732 + EnumValue51733 + EnumValue51734 + EnumValue51735 + EnumValue51736 + EnumValue51737 + EnumValue51738 + EnumValue51739 + EnumValue51740 + EnumValue51741 + EnumValue51742 + EnumValue51743 + EnumValue51744 + EnumValue51745 + EnumValue51746 + EnumValue51747 + EnumValue51748 + EnumValue51749 + EnumValue51750 + EnumValue51751 + EnumValue51752 + EnumValue51753 + EnumValue51754 + EnumValue51755 + EnumValue51756 + EnumValue51757 + EnumValue51758 + EnumValue51759 + EnumValue51760 +} + +enum Enum3121 @Directive44(argument97 : ["stringValue49410"]) { + EnumValue51761 + EnumValue51762 + EnumValue51763 + EnumValue51764 + EnumValue51765 + EnumValue51766 + EnumValue51767 + EnumValue51768 + EnumValue51769 + EnumValue51770 + EnumValue51771 + EnumValue51772 + EnumValue51773 + EnumValue51774 + EnumValue51775 +} + +enum Enum3122 @Directive44(argument97 : ["stringValue49411"]) { + EnumValue51776 + EnumValue51777 + EnumValue51778 +} + +enum Enum3123 @Directive44(argument97 : ["stringValue49412"]) { + EnumValue51779 + EnumValue51780 + EnumValue51781 + EnumValue51782 +} + +enum Enum3124 @Directive44(argument97 : ["stringValue49413"]) { + EnumValue51783 + EnumValue51784 + EnumValue51785 + EnumValue51786 + EnumValue51787 + EnumValue51788 + EnumValue51789 + EnumValue51790 + EnumValue51791 + EnumValue51792 + EnumValue51793 + EnumValue51794 + EnumValue51795 + EnumValue51796 + EnumValue51797 + EnumValue51798 + EnumValue51799 + EnumValue51800 + EnumValue51801 + EnumValue51802 + EnumValue51803 + EnumValue51804 + EnumValue51805 + EnumValue51806 +} + +enum Enum3125 @Directive44(argument97 : ["stringValue49414"]) { + EnumValue51807 + EnumValue51808 + EnumValue51809 + EnumValue51810 +} + +enum Enum3126 @Directive44(argument97 : ["stringValue49415"]) { + EnumValue51811 + EnumValue51812 + EnumValue51813 +} + +enum Enum3127 @Directive44(argument97 : ["stringValue49416"]) { + EnumValue51814 + EnumValue51815 + EnumValue51816 + EnumValue51817 + EnumValue51818 + EnumValue51819 +} + +enum Enum3128 @Directive44(argument97 : ["stringValue49417"]) { + EnumValue51820 + EnumValue51821 + EnumValue51822 + EnumValue51823 + EnumValue51824 + EnumValue51825 + EnumValue51826 + EnumValue51827 + EnumValue51828 +} + +enum Enum3129 @Directive44(argument97 : ["stringValue49418"]) { + EnumValue51829 + EnumValue51830 + EnumValue51831 + EnumValue51832 + EnumValue51833 + EnumValue51834 +} + +enum Enum313 @Directive19(argument57 : "stringValue6372") @Directive22(argument62 : "stringValue6371") @Directive44(argument97 : ["stringValue6373", "stringValue6374"]) { + EnumValue5333 + EnumValue5334 + EnumValue5335 + EnumValue5336 + EnumValue5337 + EnumValue5338 + EnumValue5339 + EnumValue5340 + EnumValue5341 + EnumValue5342 +} + +enum Enum3130 @Directive44(argument97 : ["stringValue49421"]) { + EnumValue51835 + EnumValue51836 + EnumValue51837 + EnumValue51838 +} + +enum Enum3131 @Directive44(argument97 : ["stringValue49426"]) { + EnumValue51839 + EnumValue51840 + EnumValue51841 + EnumValue51842 +} + +enum Enum3132 @Directive44(argument97 : ["stringValue49439"]) { + EnumValue51843 + EnumValue51844 + EnumValue51845 + EnumValue51846 + EnumValue51847 + EnumValue51848 + EnumValue51849 +} + +enum Enum3133 @Directive44(argument97 : ["stringValue49460"]) { + EnumValue51850 + EnumValue51851 + EnumValue51852 + EnumValue51853 +} + +enum Enum3134 @Directive44(argument97 : ["stringValue49463"]) { + EnumValue51854 + EnumValue51855 + EnumValue51856 + EnumValue51857 + EnumValue51858 + EnumValue51859 +} + +enum Enum3135 @Directive44(argument97 : ["stringValue49466"]) { + EnumValue51860 + EnumValue51861 +} + +enum Enum3136 @Directive44(argument97 : ["stringValue49467"]) { + EnumValue51862 + EnumValue51863 + EnumValue51864 + EnumValue51865 + EnumValue51866 + EnumValue51867 + EnumValue51868 + EnumValue51869 + EnumValue51870 + EnumValue51871 + EnumValue51872 + EnumValue51873 + EnumValue51874 + EnumValue51875 + EnumValue51876 + EnumValue51877 + EnumValue51878 + EnumValue51879 + EnumValue51880 + EnumValue51881 + EnumValue51882 + EnumValue51883 + EnumValue51884 +} + +enum Enum3137 @Directive44(argument97 : ["stringValue49468"]) { + EnumValue51885 + EnumValue51886 + EnumValue51887 + EnumValue51888 + EnumValue51889 + EnumValue51890 +} + +enum Enum3138 @Directive44(argument97 : ["stringValue49475"]) { + EnumValue51891 + EnumValue51892 + EnumValue51893 + EnumValue51894 + EnumValue51895 + EnumValue51896 + EnumValue51897 + EnumValue51898 + EnumValue51899 + EnumValue51900 + EnumValue51901 + EnumValue51902 + EnumValue51903 + EnumValue51904 +} + +enum Enum3139 @Directive44(argument97 : ["stringValue49478"]) { + EnumValue51905 + EnumValue51906 + EnumValue51907 + EnumValue51908 + EnumValue51909 + EnumValue51910 + EnumValue51911 + EnumValue51912 + EnumValue51913 + EnumValue51914 + EnumValue51915 +} + +enum Enum314 @Directive22(argument62 : "stringValue6417") @Directive44(argument97 : ["stringValue6418", "stringValue6419"]) { + EnumValue5343 + EnumValue5344 + EnumValue5345 + EnumValue5346 + EnumValue5347 + EnumValue5348 + EnumValue5349 + EnumValue5350 + EnumValue5351 + EnumValue5352 + EnumValue5353 + EnumValue5354 + EnumValue5355 + EnumValue5356 + EnumValue5357 + EnumValue5358 + EnumValue5359 + EnumValue5360 + EnumValue5361 + EnumValue5362 +} + +enum Enum3140 @Directive44(argument97 : ["stringValue49479"]) { + EnumValue51916 + EnumValue51917 + EnumValue51918 + EnumValue51919 + EnumValue51920 + EnumValue51921 + EnumValue51922 + EnumValue51923 + EnumValue51924 + EnumValue51925 + EnumValue51926 + EnumValue51927 + EnumValue51928 + EnumValue51929 + EnumValue51930 + EnumValue51931 + EnumValue51932 + EnumValue51933 + EnumValue51934 + EnumValue51935 + EnumValue51936 + EnumValue51937 + EnumValue51938 + EnumValue51939 + EnumValue51940 + EnumValue51941 + EnumValue51942 + EnumValue51943 + EnumValue51944 + EnumValue51945 + EnumValue51946 + EnumValue51947 + EnumValue51948 +} + +enum Enum3141 @Directive44(argument97 : ["stringValue49484"]) { + EnumValue51949 + EnumValue51950 + EnumValue51951 + EnumValue51952 + EnumValue51953 +} + +enum Enum3142 @Directive44(argument97 : ["stringValue49487"]) { + EnumValue51954 + EnumValue51955 + EnumValue51956 +} + +enum Enum3143 @Directive44(argument97 : ["stringValue49497"]) { + EnumValue51957 + EnumValue51958 + EnumValue51959 + EnumValue51960 +} + +enum Enum3144 @Directive44(argument97 : ["stringValue49500"]) { + EnumValue51961 + EnumValue51962 + EnumValue51963 +} + +enum Enum3145 @Directive44(argument97 : ["stringValue49501"]) { + EnumValue51964 + EnumValue51965 + EnumValue51966 +} + +enum Enum3146 @Directive44(argument97 : ["stringValue49502"]) { + EnumValue51967 + EnumValue51968 + EnumValue51969 + EnumValue51970 +} + +enum Enum3147 @Directive44(argument97 : ["stringValue49507"]) { + EnumValue51971 + EnumValue51972 + EnumValue51973 + EnumValue51974 +} + +enum Enum3148 @Directive44(argument97 : ["stringValue49508"]) { + EnumValue51975 + EnumValue51976 + EnumValue51977 + EnumValue51978 + EnumValue51979 + EnumValue51980 + EnumValue51981 +} + +enum Enum3149 @Directive44(argument97 : ["stringValue49511"]) { + EnumValue51982 + EnumValue51983 + EnumValue51984 + EnumValue51985 + EnumValue51986 + EnumValue51987 + EnumValue51988 + EnumValue51989 + EnumValue51990 + EnumValue51991 + EnumValue51992 + EnumValue51993 + EnumValue51994 + EnumValue51995 + EnumValue51996 + EnumValue51997 + EnumValue51998 + EnumValue51999 + EnumValue52000 + EnumValue52001 + EnumValue52002 + EnumValue52003 + EnumValue52004 + EnumValue52005 + EnumValue52006 + EnumValue52007 + EnumValue52008 + EnumValue52009 + EnumValue52010 + EnumValue52011 + EnumValue52012 + EnumValue52013 + EnumValue52014 + EnumValue52015 + EnumValue52016 + EnumValue52017 + EnumValue52018 + EnumValue52019 + EnumValue52020 + EnumValue52021 + EnumValue52022 + EnumValue52023 + EnumValue52024 + EnumValue52025 + EnumValue52026 + EnumValue52027 + EnumValue52028 + EnumValue52029 + EnumValue52030 + EnumValue52031 + EnumValue52032 + EnumValue52033 + EnumValue52034 + EnumValue52035 + EnumValue52036 + EnumValue52037 + EnumValue52038 + EnumValue52039 + EnumValue52040 + EnumValue52041 + EnumValue52042 + EnumValue52043 +} + +enum Enum315 @Directive19(argument57 : "stringValue6451") @Directive22(argument62 : "stringValue6450") @Directive44(argument97 : ["stringValue6452", "stringValue6453"]) { + EnumValue5363 + EnumValue5364 +} + +enum Enum3150 @Directive44(argument97 : ["stringValue49521"]) { + EnumValue52044 + EnumValue52045 +} + +enum Enum3151 @Directive44(argument97 : ["stringValue49526"]) { + EnumValue52046 + EnumValue52047 + EnumValue52048 + EnumValue52049 +} + +enum Enum3152 @Directive44(argument97 : ["stringValue49527"]) { + EnumValue52050 + EnumValue52051 + EnumValue52052 + EnumValue52053 + EnumValue52054 + EnumValue52055 + EnumValue52056 + EnumValue52057 + EnumValue52058 + EnumValue52059 + EnumValue52060 + EnumValue52061 + EnumValue52062 + EnumValue52063 + EnumValue52064 + EnumValue52065 + EnumValue52066 +} + +enum Enum3153 @Directive44(argument97 : ["stringValue49528"]) { + EnumValue52067 + EnumValue52068 + EnumValue52069 +} + +enum Enum3154 @Directive44(argument97 : ["stringValue49531"]) { + EnumValue52070 + EnumValue52071 + EnumValue52072 + EnumValue52073 + EnumValue52074 + EnumValue52075 + EnumValue52076 +} + +enum Enum3155 @Directive44(argument97 : ["stringValue49537"]) { + EnumValue52077 + EnumValue52078 + EnumValue52079 +} + +enum Enum3156 @Directive44(argument97 : ["stringValue49548"]) { + EnumValue52080 + EnumValue52081 + EnumValue52082 + EnumValue52083 + EnumValue52084 + EnumValue52085 + EnumValue52086 + EnumValue52087 + EnumValue52088 + EnumValue52089 + EnumValue52090 + EnumValue52091 + EnumValue52092 + EnumValue52093 + EnumValue52094 + EnumValue52095 + EnumValue52096 + EnumValue52097 + EnumValue52098 + EnumValue52099 + EnumValue52100 + EnumValue52101 + EnumValue52102 + EnumValue52103 + EnumValue52104 + EnumValue52105 + EnumValue52106 + EnumValue52107 + EnumValue52108 + EnumValue52109 +} + +enum Enum3157 @Directive44(argument97 : ["stringValue49553"]) { + EnumValue52110 + EnumValue52111 + EnumValue52112 + EnumValue52113 + EnumValue52114 + EnumValue52115 + EnumValue52116 +} + +enum Enum3158 @Directive44(argument97 : ["stringValue49554"]) { + EnumValue52117 + EnumValue52118 + EnumValue52119 + EnumValue52120 +} + +enum Enum3159 @Directive44(argument97 : ["stringValue49555"]) { + EnumValue52121 + EnumValue52122 +} + +enum Enum316 @Directive19(argument57 : "stringValue6472") @Directive22(argument62 : "stringValue6471") @Directive44(argument97 : ["stringValue6473", "stringValue6474"]) { + EnumValue5365 + EnumValue5366 + EnumValue5367 + EnumValue5368 +} + +enum Enum3160 @Directive44(argument97 : ["stringValue49556"]) { + EnumValue52123 + EnumValue52124 + EnumValue52125 + EnumValue52126 + EnumValue52127 + EnumValue52128 + EnumValue52129 +} + +enum Enum3161 @Directive44(argument97 : ["stringValue49576"]) { + EnumValue52130 + EnumValue52131 + EnumValue52132 + EnumValue52133 + EnumValue52134 + EnumValue52135 + EnumValue52136 + EnumValue52137 + EnumValue52138 +} + +enum Enum3162 @Directive44(argument97 : ["stringValue49577"]) { + EnumValue52139 + EnumValue52140 + EnumValue52141 + EnumValue52142 + EnumValue52143 +} + +enum Enum3163 @Directive44(argument97 : ["stringValue49578"]) { + EnumValue52144 + EnumValue52145 + EnumValue52146 + EnumValue52147 + EnumValue52148 + EnumValue52149 + EnumValue52150 + EnumValue52151 + EnumValue52152 + EnumValue52153 + EnumValue52154 + EnumValue52155 + EnumValue52156 + EnumValue52157 + EnumValue52158 + EnumValue52159 + EnumValue52160 + EnumValue52161 + EnumValue52162 + EnumValue52163 + EnumValue52164 + EnumValue52165 + EnumValue52166 + EnumValue52167 + EnumValue52168 + EnumValue52169 + EnumValue52170 + EnumValue52171 + EnumValue52172 + EnumValue52173 + EnumValue52174 + EnumValue52175 + EnumValue52176 + EnumValue52177 + EnumValue52178 + EnumValue52179 + EnumValue52180 + EnumValue52181 + EnumValue52182 + EnumValue52183 + EnumValue52184 + EnumValue52185 + EnumValue52186 + EnumValue52187 + EnumValue52188 + EnumValue52189 + EnumValue52190 + EnumValue52191 + EnumValue52192 + EnumValue52193 + EnumValue52194 + EnumValue52195 + EnumValue52196 + EnumValue52197 + EnumValue52198 + EnumValue52199 + EnumValue52200 + EnumValue52201 + EnumValue52202 + EnumValue52203 + EnumValue52204 + EnumValue52205 + EnumValue52206 + EnumValue52207 + EnumValue52208 + EnumValue52209 + EnumValue52210 + EnumValue52211 + EnumValue52212 +} + +enum Enum3164 @Directive44(argument97 : ["stringValue49579"]) { + EnumValue52213 + EnumValue52214 + EnumValue52215 + EnumValue52216 + EnumValue52217 +} + +enum Enum3165 @Directive44(argument97 : ["stringValue49580"]) { + EnumValue52218 + EnumValue52219 + EnumValue52220 + EnumValue52221 + EnumValue52222 + EnumValue52223 + EnumValue52224 + EnumValue52225 +} + +enum Enum3166 @Directive44(argument97 : ["stringValue49582"]) { + EnumValue52226 + EnumValue52227 + EnumValue52228 + EnumValue52229 +} + +enum Enum3167 @Directive44(argument97 : ["stringValue49583"]) { + EnumValue52230 + EnumValue52231 + EnumValue52232 + EnumValue52233 + EnumValue52234 +} + +enum Enum3168 @Directive44(argument97 : ["stringValue49584"]) { + EnumValue52235 + EnumValue52236 + EnumValue52237 +} + +enum Enum3169 @Directive44(argument97 : ["stringValue49641"]) { + EnumValue52238 + EnumValue52239 + EnumValue52240 +} + +enum Enum317 @Directive19(argument57 : "stringValue6507") @Directive22(argument62 : "stringValue6506") @Directive44(argument97 : ["stringValue6508", "stringValue6509"]) { + EnumValue5369 + EnumValue5370 + EnumValue5371 +} + +enum Enum3170 @Directive44(argument97 : ["stringValue49651"]) { + EnumValue52241 + EnumValue52242 + EnumValue52243 + EnumValue52244 + EnumValue52245 + EnumValue52246 +} + +enum Enum3171 @Directive44(argument97 : ["stringValue49660"]) { + EnumValue52247 + EnumValue52248 + EnumValue52249 + EnumValue52250 + EnumValue52251 +} + +enum Enum3172 @Directive44(argument97 : ["stringValue49713"]) { + EnumValue52252 + EnumValue52253 + EnumValue52254 + EnumValue52255 + EnumValue52256 + EnumValue52257 + EnumValue52258 + EnumValue52259 + EnumValue52260 + EnumValue52261 + EnumValue52262 + EnumValue52263 + EnumValue52264 + EnumValue52265 + EnumValue52266 + EnumValue52267 + EnumValue52268 +} + +enum Enum3173 @Directive44(argument97 : ["stringValue49714"]) { + EnumValue52269 + EnumValue52270 + EnumValue52271 + EnumValue52272 + EnumValue52273 + EnumValue52274 + EnumValue52275 + EnumValue52276 + EnumValue52277 +} + +enum Enum3174 @Directive44(argument97 : ["stringValue49717"]) { + EnumValue52278 + EnumValue52279 + EnumValue52280 + EnumValue52281 + EnumValue52282 + EnumValue52283 + EnumValue52284 + EnumValue52285 +} + +enum Enum3175 @Directive44(argument97 : ["stringValue49718"]) { + EnumValue52286 + EnumValue52287 +} + +enum Enum3176 @Directive44(argument97 : ["stringValue49724"]) { + EnumValue52288 + EnumValue52289 + EnumValue52290 + EnumValue52291 + EnumValue52292 + EnumValue52293 + EnumValue52294 + EnumValue52295 + EnumValue52296 + EnumValue52297 + EnumValue52298 + EnumValue52299 + EnumValue52300 + EnumValue52301 + EnumValue52302 + EnumValue52303 +} + +enum Enum3177 @Directive44(argument97 : ["stringValue49736"]) { + EnumValue52304 + EnumValue52305 + EnumValue52306 + EnumValue52307 + EnumValue52308 + EnumValue52309 + EnumValue52310 + EnumValue52311 +} + +enum Enum3178 @Directive44(argument97 : ["stringValue49769"]) { + EnumValue52312 + EnumValue52313 + EnumValue52314 + EnumValue52315 +} + +enum Enum3179 @Directive44(argument97 : ["stringValue49770"]) { + EnumValue52316 + EnumValue52317 + EnumValue52318 + EnumValue52319 +} + +enum Enum318 @Directive19(argument57 : "stringValue6613") @Directive22(argument62 : "stringValue6612") @Directive44(argument97 : ["stringValue6614", "stringValue6615"]) { + EnumValue5372 + EnumValue5373 + EnumValue5374 +} + +enum Enum3180 @Directive44(argument97 : ["stringValue49781"]) { + EnumValue52320 + EnumValue52321 + EnumValue52322 + EnumValue52323 +} + +enum Enum3181 @Directive44(argument97 : ["stringValue49794"]) { + EnumValue52324 + EnumValue52325 + EnumValue52326 + EnumValue52327 +} + +enum Enum3182 @Directive44(argument97 : ["stringValue49799"]) { + EnumValue52328 + EnumValue52329 + EnumValue52330 + EnumValue52331 + EnumValue52332 + EnumValue52333 +} + +enum Enum3183 @Directive44(argument97 : ["stringValue49804"]) { + EnumValue52334 + EnumValue52335 + EnumValue52336 +} + +enum Enum3184 @Directive44(argument97 : ["stringValue49809"]) { + EnumValue52337 + EnumValue52338 + EnumValue52339 + EnumValue52340 + EnumValue52341 + EnumValue52342 +} + +enum Enum3185 @Directive44(argument97 : ["stringValue49810"]) { + EnumValue52343 + EnumValue52344 + EnumValue52345 + EnumValue52346 + EnumValue52347 + EnumValue52348 + EnumValue52349 + EnumValue52350 +} + +enum Enum3186 @Directive44(argument97 : ["stringValue49813"]) { + EnumValue52351 + EnumValue52352 + EnumValue52353 +} + +enum Enum3187 @Directive44(argument97 : ["stringValue49820"]) { + EnumValue52354 + EnumValue52355 + EnumValue52356 +} + +enum Enum3188 @Directive44(argument97 : ["stringValue49821"]) { + EnumValue52357 + EnumValue52358 + EnumValue52359 + EnumValue52360 + EnumValue52361 + EnumValue52362 + EnumValue52363 + EnumValue52364 + EnumValue52365 + EnumValue52366 + EnumValue52367 + EnumValue52368 + EnumValue52369 +} + +enum Enum3189 @Directive44(argument97 : ["stringValue49822"]) { + EnumValue52370 + EnumValue52371 + EnumValue52372 + EnumValue52373 + EnumValue52374 +} + +enum Enum319 @Directive22(argument62 : "stringValue6634") @Directive44(argument97 : ["stringValue6635", "stringValue6636"]) { + EnumValue5375 + EnumValue5376 + EnumValue5377 +} + +enum Enum3190 @Directive44(argument97 : ["stringValue49832"]) { + EnumValue52375 + EnumValue52376 + EnumValue52377 + EnumValue52378 +} + +enum Enum3191 @Directive44(argument97 : ["stringValue49833"]) { + EnumValue52379 + EnumValue52380 + EnumValue52381 + EnumValue52382 + EnumValue52383 + EnumValue52384 + EnumValue52385 + EnumValue52386 + EnumValue52387 + EnumValue52388 + EnumValue52389 + EnumValue52390 + EnumValue52391 + EnumValue52392 + EnumValue52393 + EnumValue52394 + EnumValue52395 + EnumValue52396 + EnumValue52397 + EnumValue52398 + EnumValue52399 + EnumValue52400 + EnumValue52401 + EnumValue52402 + EnumValue52403 + EnumValue52404 + EnumValue52405 + EnumValue52406 +} + +enum Enum3192 @Directive44(argument97 : ["stringValue49838"]) { + EnumValue52407 + EnumValue52408 + EnumValue52409 + EnumValue52410 + EnumValue52411 +} + +enum Enum3193 @Directive44(argument97 : ["stringValue49839"]) { + EnumValue52412 + EnumValue52413 + EnumValue52414 + EnumValue52415 + EnumValue52416 + EnumValue52417 +} + +enum Enum3194 @Directive44(argument97 : ["stringValue49840"]) { + EnumValue52418 + EnumValue52419 + EnumValue52420 + EnumValue52421 + EnumValue52422 +} + +enum Enum3195 @Directive44(argument97 : ["stringValue49841"]) { + EnumValue52423 + EnumValue52424 + EnumValue52425 + EnumValue52426 +} + +enum Enum3196 @Directive44(argument97 : ["stringValue49842"]) { + EnumValue52427 + EnumValue52428 + EnumValue52429 + EnumValue52430 + EnumValue52431 + EnumValue52432 + EnumValue52433 + EnumValue52434 + EnumValue52435 + EnumValue52436 + EnumValue52437 + EnumValue52438 + EnumValue52439 + EnumValue52440 + EnumValue52441 + EnumValue52442 + EnumValue52443 + EnumValue52444 + EnumValue52445 + EnumValue52446 + EnumValue52447 + EnumValue52448 + EnumValue52449 + EnumValue52450 + EnumValue52451 + EnumValue52452 + EnumValue52453 + EnumValue52454 + EnumValue52455 + EnumValue52456 + EnumValue52457 + EnumValue52458 +} + +enum Enum3197 @Directive44(argument97 : ["stringValue49843"]) { + EnumValue52459 + EnumValue52460 + EnumValue52461 + EnumValue52462 +} + +enum Enum3198 @Directive44(argument97 : ["stringValue49846"]) { + EnumValue52463 + EnumValue52464 + EnumValue52465 + EnumValue52466 +} + +enum Enum3199 @Directive44(argument97 : ["stringValue49866"]) { + EnumValue52467 + EnumValue52468 + EnumValue52469 + EnumValue52470 + EnumValue52471 + EnumValue52472 + EnumValue52473 + EnumValue52474 +} + +enum Enum32 @Directive44(argument97 : ["stringValue295"]) { + EnumValue912 + EnumValue913 + EnumValue914 +} + +enum Enum320 @Directive19(argument57 : "stringValue6648") @Directive22(argument62 : "stringValue6647") @Directive44(argument97 : ["stringValue6649", "stringValue6650"]) { + EnumValue5378 + EnumValue5379 +} + +enum Enum3200 @Directive44(argument97 : ["stringValue49877"]) { + EnumValue52475 + EnumValue52476 + EnumValue52477 + EnumValue52478 + EnumValue52479 + EnumValue52480 + EnumValue52481 + EnumValue52482 + EnumValue52483 + EnumValue52484 + EnumValue52485 + EnumValue52486 + EnumValue52487 + EnumValue52488 + EnumValue52489 + EnumValue52490 + EnumValue52491 + EnumValue52492 + EnumValue52493 + EnumValue52494 + EnumValue52495 + EnumValue52496 + EnumValue52497 + EnumValue52498 + EnumValue52499 + EnumValue52500 + EnumValue52501 + EnumValue52502 + EnumValue52503 + EnumValue52504 + EnumValue52505 + EnumValue52506 + EnumValue52507 + EnumValue52508 + EnumValue52509 + EnumValue52510 + EnumValue52511 + EnumValue52512 + EnumValue52513 + EnumValue52514 +} + +enum Enum3201 @Directive44(argument97 : ["stringValue49907"]) { + EnumValue52515 + EnumValue52516 + EnumValue52517 + EnumValue52518 + EnumValue52519 + EnumValue52520 +} + +enum Enum3202 @Directive44(argument97 : ["stringValue49959"]) { + EnumValue52521 + EnumValue52522 + EnumValue52523 + EnumValue52524 + EnumValue52525 + EnumValue52526 + EnumValue52527 + EnumValue52528 + EnumValue52529 + EnumValue52530 + EnumValue52531 + EnumValue52532 + EnumValue52533 + EnumValue52534 + EnumValue52535 + EnumValue52536 + EnumValue52537 + EnumValue52538 + EnumValue52539 + EnumValue52540 + EnumValue52541 + EnumValue52542 + EnumValue52543 +} + +enum Enum3203 @Directive44(argument97 : ["stringValue49979"]) { + EnumValue52544 + EnumValue52545 + EnumValue52546 + EnumValue52547 +} + +enum Enum3204 @Directive44(argument97 : ["stringValue49986"]) { + EnumValue52548 + EnumValue52549 + EnumValue52550 + EnumValue52551 + EnumValue52552 + EnumValue52553 + EnumValue52554 + EnumValue52555 + EnumValue52556 + EnumValue52557 +} + +enum Enum3205 @Directive44(argument97 : ["stringValue50005"]) { + EnumValue52558 + EnumValue52559 + EnumValue52560 +} + +enum Enum3206 @Directive44(argument97 : ["stringValue50006"]) { + EnumValue52561 + EnumValue52562 +} + +enum Enum3207 @Directive44(argument97 : ["stringValue50012"]) { + EnumValue52563 + EnumValue52564 + EnumValue52565 + EnumValue52566 +} + +enum Enum3208 @Directive44(argument97 : ["stringValue50038"]) { + EnumValue52567 + EnumValue52568 + EnumValue52569 + EnumValue52570 + EnumValue52571 + EnumValue52572 + EnumValue52573 + EnumValue52574 + EnumValue52575 + EnumValue52576 + EnumValue52577 + EnumValue52578 +} + +enum Enum3209 @Directive44(argument97 : ["stringValue50039"]) { + EnumValue52579 + EnumValue52580 + EnumValue52581 +} + +enum Enum321 @Directive19(argument57 : "stringValue6670") @Directive22(argument62 : "stringValue6669") @Directive44(argument97 : ["stringValue6671", "stringValue6672"]) { + EnumValue5380 + EnumValue5381 + EnumValue5382 +} + +enum Enum3210 @Directive44(argument97 : ["stringValue50046"]) { + EnumValue52582 + EnumValue52583 + EnumValue52584 + EnumValue52585 + EnumValue52586 + EnumValue52587 + EnumValue52588 + EnumValue52589 + EnumValue52590 + EnumValue52591 + EnumValue52592 + EnumValue52593 + EnumValue52594 + EnumValue52595 + EnumValue52596 + EnumValue52597 + EnumValue52598 + EnumValue52599 + EnumValue52600 + EnumValue52601 + EnumValue52602 + EnumValue52603 + EnumValue52604 + EnumValue52605 + EnumValue52606 +} + +enum Enum3211 @Directive44(argument97 : ["stringValue50066"]) { + EnumValue52607 + EnumValue52608 + EnumValue52609 + EnumValue52610 + EnumValue52611 +} + +enum Enum3212 @Directive44(argument97 : ["stringValue50077"]) { + EnumValue52612 + EnumValue52613 + EnumValue52614 +} + +enum Enum3213 @Directive44(argument97 : ["stringValue50078"]) { + EnumValue52615 + EnumValue52616 + EnumValue52617 +} + +enum Enum3214 @Directive44(argument97 : ["stringValue50111"]) { + EnumValue52618 + EnumValue52619 + EnumValue52620 +} + +enum Enum3215 @Directive44(argument97 : ["stringValue50142"]) { + EnumValue52621 + EnumValue52622 + EnumValue52623 + EnumValue52624 +} + +enum Enum3216 @Directive44(argument97 : ["stringValue50155"]) { + EnumValue52625 + EnumValue52626 + EnumValue52627 + EnumValue52628 + EnumValue52629 + EnumValue52630 + EnumValue52631 +} + +enum Enum322 @Directive19(argument57 : "stringValue6674") @Directive22(argument62 : "stringValue6673") @Directive44(argument97 : ["stringValue6675", "stringValue6676"]) { + EnumValue5383 + EnumValue5384 + EnumValue5385 + EnumValue5386 + EnumValue5387 + EnumValue5388 + EnumValue5389 + EnumValue5390 + EnumValue5391 + EnumValue5392 + EnumValue5393 + EnumValue5394 + EnumValue5395 + EnumValue5396 + EnumValue5397 + EnumValue5398 +} + +enum Enum323 @Directive22(argument62 : "stringValue6792") @Directive44(argument97 : ["stringValue6793", "stringValue6794"]) { + EnumValue5399 + EnumValue5400 +} + +enum Enum324 @Directive19(argument57 : "stringValue6796") @Directive22(argument62 : "stringValue6795") @Directive44(argument97 : ["stringValue6797", "stringValue6798"]) { + EnumValue5401 + EnumValue5402 + EnumValue5403 + EnumValue5404 + EnumValue5405 +} + +enum Enum325 @Directive19(argument57 : "stringValue6807") @Directive22(argument62 : "stringValue6806") @Directive44(argument97 : ["stringValue6808", "stringValue6809"]) { + EnumValue5406 + EnumValue5407 + EnumValue5408 +} + +enum Enum326 @Directive19(argument57 : "stringValue6815") @Directive22(argument62 : "stringValue6814") @Directive44(argument97 : ["stringValue6816", "stringValue6817"]) { + EnumValue5409 + EnumValue5410 + EnumValue5411 + EnumValue5412 +} + +enum Enum327 @Directive19(argument57 : "stringValue6866") @Directive22(argument62 : "stringValue6865") @Directive44(argument97 : ["stringValue6867", "stringValue6868"]) { + EnumValue5413 + EnumValue5414 + EnumValue5415 +} + +enum Enum328 @Directive19(argument57 : "stringValue7004") @Directive22(argument62 : "stringValue7003") @Directive44(argument97 : ["stringValue7005", "stringValue7006"]) { + EnumValue5416 + EnumValue5417 + EnumValue5418 + EnumValue5419 + EnumValue5420 + EnumValue5421 + EnumValue5422 + EnumValue5423 + EnumValue5424 + EnumValue5425 + EnumValue5426 + EnumValue5427 + EnumValue5428 +} + +enum Enum329 @Directive19(argument57 : "stringValue7132") @Directive22(argument62 : "stringValue7131") @Directive44(argument97 : ["stringValue7133", "stringValue7134"]) { + EnumValue5429 +} + +enum Enum33 @Directive44(argument97 : ["stringValue304"]) { + EnumValue915 + EnumValue916 + EnumValue917 +} + +enum Enum330 @Directive19(argument57 : "stringValue7255") @Directive42(argument96 : ["stringValue7254"]) @Directive44(argument97 : ["stringValue7256", "stringValue7257"]) { + EnumValue5430 + EnumValue5431 + EnumValue5432 + EnumValue5433 + EnumValue5434 + EnumValue5435 + EnumValue5436 + EnumValue5437 + EnumValue5438 + EnumValue5439 + EnumValue5440 + EnumValue5441 + EnumValue5442 + EnumValue5443 + EnumValue5444 + EnumValue5445 + EnumValue5446 + EnumValue5447 + EnumValue5448 + EnumValue5449 + EnumValue5450 + EnumValue5451 + EnumValue5452 + EnumValue5453 + EnumValue5454 + EnumValue5455 + EnumValue5456 + EnumValue5457 + EnumValue5458 + EnumValue5459 + EnumValue5460 + EnumValue5461 + EnumValue5462 + EnumValue5463 + EnumValue5464 + EnumValue5465 + EnumValue5466 + EnumValue5467 + EnumValue5468 + EnumValue5469 + EnumValue5470 + EnumValue5471 + EnumValue5472 + EnumValue5473 + EnumValue5474 + EnumValue5475 + EnumValue5476 + EnumValue5477 + EnumValue5478 + EnumValue5479 +} + +enum Enum331 @Directive19(argument57 : "stringValue7278") @Directive22(argument62 : "stringValue7277") @Directive44(argument97 : ["stringValue7279", "stringValue7280"]) { + EnumValue5480 + EnumValue5481 +} + +enum Enum332 @Directive19(argument57 : "stringValue7302") @Directive22(argument62 : "stringValue7301") @Directive44(argument97 : ["stringValue7303", "stringValue7304"]) { + EnumValue5482 + EnumValue5483 + EnumValue5484 + EnumValue5485 +} + +enum Enum333 @Directive19(argument57 : "stringValue7371") @Directive22(argument62 : "stringValue7370") @Directive44(argument97 : ["stringValue7372", "stringValue7373"]) { + EnumValue5486 + EnumValue5487 + EnumValue5488 + EnumValue5489 + EnumValue5490 + EnumValue5491 +} + +enum Enum334 @Directive19(argument57 : "stringValue7538") @Directive22(argument62 : "stringValue7537") @Directive44(argument97 : ["stringValue7539", "stringValue7540"]) { + EnumValue5492 + EnumValue5493 + EnumValue5494 +} + +enum Enum335 @Directive22(argument62 : "stringValue7548") @Directive44(argument97 : ["stringValue7549", "stringValue7550"]) { + EnumValue5495 + EnumValue5496 + EnumValue5497 + EnumValue5498 + EnumValue5499 + EnumValue5500 + EnumValue5501 + EnumValue5502 + EnumValue5503 + EnumValue5504 + EnumValue5505 + EnumValue5506 + EnumValue5507 + EnumValue5508 + EnumValue5509 + EnumValue5510 + EnumValue5511 + EnumValue5512 + EnumValue5513 + EnumValue5514 + EnumValue5515 + EnumValue5516 + EnumValue5517 + EnumValue5518 + EnumValue5519 + EnumValue5520 + EnumValue5521 + EnumValue5522 + EnumValue5523 + EnumValue5524 + EnumValue5525 + EnumValue5526 + EnumValue5527 + EnumValue5528 + EnumValue5529 + EnumValue5530 + EnumValue5531 +} + +enum Enum336 @Directive19(argument57 : "stringValue7563") @Directive22(argument62 : "stringValue7562") @Directive44(argument97 : ["stringValue7564", "stringValue7565"]) { + EnumValue5532 + EnumValue5533 + EnumValue5534 + EnumValue5535 + EnumValue5536 + EnumValue5537 + EnumValue5538 + EnumValue5539 + EnumValue5540 +} + +enum Enum337 @Directive19(argument57 : "stringValue7567") @Directive22(argument62 : "stringValue7566") @Directive44(argument97 : ["stringValue7568", "stringValue7569"]) { + EnumValue5541 + EnumValue5542 +} + +enum Enum338 @Directive22(argument62 : "stringValue7652") @Directive44(argument97 : ["stringValue7653", "stringValue7654"]) { + EnumValue5543 + EnumValue5544 + EnumValue5545 + EnumValue5546 + EnumValue5547 + EnumValue5548 + EnumValue5549 + EnumValue5550 + EnumValue5551 +} + +enum Enum339 @Directive44(argument97 : ["stringValue7698"]) { + EnumValue5552 + EnumValue5553 + EnumValue5554 + EnumValue5555 + EnumValue5556 + EnumValue5557 + EnumValue5558 + EnumValue5559 + EnumValue5560 + EnumValue5561 + EnumValue5562 + EnumValue5563 + EnumValue5564 + EnumValue5565 + EnumValue5566 + EnumValue5567 + EnumValue5568 + EnumValue5569 + EnumValue5570 + EnumValue5571 + EnumValue5572 + EnumValue5573 + EnumValue5574 + EnumValue5575 + EnumValue5576 + EnumValue5577 + EnumValue5578 + EnumValue5579 + EnumValue5580 + EnumValue5581 + EnumValue5582 + EnumValue5583 + EnumValue5584 + EnumValue5585 + EnumValue5586 + EnumValue5587 + EnumValue5588 + EnumValue5589 + EnumValue5590 + EnumValue5591 + EnumValue5592 + EnumValue5593 + EnumValue5594 + EnumValue5595 + EnumValue5596 + EnumValue5597 + EnumValue5598 + EnumValue5599 + EnumValue5600 + EnumValue5601 + EnumValue5602 + EnumValue5603 + EnumValue5604 + EnumValue5605 + EnumValue5606 + EnumValue5607 + EnumValue5608 + EnumValue5609 + EnumValue5610 + EnumValue5611 + EnumValue5612 + EnumValue5613 + EnumValue5614 + EnumValue5615 + EnumValue5616 + EnumValue5617 + EnumValue5618 + EnumValue5619 + EnumValue5620 + EnumValue5621 + EnumValue5622 + EnumValue5623 + EnumValue5624 + EnumValue5625 + EnumValue5626 + EnumValue5627 + EnumValue5628 + EnumValue5629 + EnumValue5630 + EnumValue5631 + EnumValue5632 + EnumValue5633 + EnumValue5634 + EnumValue5635 + EnumValue5636 + EnumValue5637 + EnumValue5638 + EnumValue5639 + EnumValue5640 + EnumValue5641 + EnumValue5642 + EnumValue5643 + EnumValue5644 + EnumValue5645 + EnumValue5646 + EnumValue5647 + EnumValue5648 + EnumValue5649 + EnumValue5650 + EnumValue5651 + EnumValue5652 + EnumValue5653 + EnumValue5654 + EnumValue5655 + EnumValue5656 + EnumValue5657 + EnumValue5658 + EnumValue5659 + EnumValue5660 + EnumValue5661 + EnumValue5662 + EnumValue5663 + EnumValue5664 + EnumValue5665 + EnumValue5666 + EnumValue5667 + EnumValue5668 + EnumValue5669 + EnumValue5670 + EnumValue5671 + EnumValue5672 + EnumValue5673 + EnumValue5674 + EnumValue5675 + EnumValue5676 + EnumValue5677 + EnumValue5678 + EnumValue5679 + EnumValue5680 + EnumValue5681 + EnumValue5682 + EnumValue5683 + EnumValue5684 + EnumValue5685 + EnumValue5686 + EnumValue5687 + EnumValue5688 + EnumValue5689 + EnumValue5690 + EnumValue5691 + EnumValue5692 + EnumValue5693 + EnumValue5694 + EnumValue5695 + EnumValue5696 + EnumValue5697 + EnumValue5698 + EnumValue5699 + EnumValue5700 + EnumValue5701 + EnumValue5702 + EnumValue5703 + EnumValue5704 + EnumValue5705 + EnumValue5706 + EnumValue5707 + EnumValue5708 + EnumValue5709 + EnumValue5710 + EnumValue5711 + EnumValue5712 + EnumValue5713 + EnumValue5714 + EnumValue5715 + EnumValue5716 + EnumValue5717 + EnumValue5718 + EnumValue5719 + EnumValue5720 + EnumValue5721 + EnumValue5722 + EnumValue5723 + EnumValue5724 + EnumValue5725 + EnumValue5726 + EnumValue5727 + EnumValue5728 + EnumValue5729 + EnumValue5730 + EnumValue5731 + EnumValue5732 + EnumValue5733 + EnumValue5734 + EnumValue5735 + EnumValue5736 + EnumValue5737 + EnumValue5738 + EnumValue5739 + EnumValue5740 +} + +enum Enum34 @Directive44(argument97 : ["stringValue305"]) { + EnumValue918 + EnumValue919 + EnumValue920 + EnumValue921 + EnumValue922 + EnumValue923 + EnumValue924 + EnumValue925 + EnumValue926 + EnumValue927 + EnumValue928 + EnumValue929 + EnumValue930 +} + +enum Enum340 @Directive44(argument97 : ["stringValue7699"]) { + EnumValue5741 + EnumValue5742 + EnumValue5743 + EnumValue5744 + EnumValue5745 + EnumValue5746 + EnumValue5747 + EnumValue5748 + EnumValue5749 + EnumValue5750 + EnumValue5751 + EnumValue5752 + EnumValue5753 + EnumValue5754 + EnumValue5755 + EnumValue5756 + EnumValue5757 + EnumValue5758 + EnumValue5759 + EnumValue5760 + EnumValue5761 + EnumValue5762 + EnumValue5763 + EnumValue5764 +} + +enum Enum341 @Directive44(argument97 : ["stringValue7702"]) { + EnumValue5765 + EnumValue5766 + EnumValue5767 + EnumValue5768 + EnumValue5769 + EnumValue5770 + EnumValue5771 + EnumValue5772 + EnumValue5773 + EnumValue5774 +} + +enum Enum342 @Directive44(argument97 : ["stringValue7707"]) { + EnumValue5775 + EnumValue5776 + EnumValue5777 + EnumValue5778 + EnumValue5779 + EnumValue5780 +} + +enum Enum343 @Directive44(argument97 : ["stringValue7740"]) { + EnumValue5781 + EnumValue5782 + EnumValue5783 + EnumValue5784 +} + +enum Enum344 @Directive44(argument97 : ["stringValue7749"]) { + EnumValue5785 + EnumValue5786 + EnumValue5787 + EnumValue5788 + EnumValue5789 + EnumValue5790 +} + +enum Enum345 @Directive44(argument97 : ["stringValue7788"]) { + EnumValue5791 + EnumValue5792 + EnumValue5793 +} + +enum Enum346 @Directive44(argument97 : ["stringValue7806"]) { + EnumValue5794 + EnumValue5795 + EnumValue5796 + EnumValue5797 + EnumValue5798 + EnumValue5799 + EnumValue5800 + EnumValue5801 + EnumValue5802 + EnumValue5803 + EnumValue5804 + EnumValue5805 + EnumValue5806 + EnumValue5807 +} + +enum Enum347 @Directive44(argument97 : ["stringValue7807"]) { + EnumValue5808 + EnumValue5809 + EnumValue5810 + EnumValue5811 + EnumValue5812 + EnumValue5813 + EnumValue5814 + EnumValue5815 + EnumValue5816 + EnumValue5817 + EnumValue5818 + EnumValue5819 + EnumValue5820 + EnumValue5821 + EnumValue5822 + EnumValue5823 + EnumValue5824 + EnumValue5825 + EnumValue5826 + EnumValue5827 + EnumValue5828 + EnumValue5829 + EnumValue5830 + EnumValue5831 + EnumValue5832 + EnumValue5833 + EnumValue5834 + EnumValue5835 + EnumValue5836 + EnumValue5837 + EnumValue5838 + EnumValue5839 + EnumValue5840 + EnumValue5841 + EnumValue5842 + EnumValue5843 + EnumValue5844 + EnumValue5845 + EnumValue5846 + EnumValue5847 +} + +enum Enum348 @Directive44(argument97 : ["stringValue7808"]) { + EnumValue5848 + EnumValue5849 + EnumValue5850 + EnumValue5851 + EnumValue5852 +} + +enum Enum349 @Directive44(argument97 : ["stringValue7809"]) { + EnumValue5853 + EnumValue5854 + EnumValue5855 +} + +enum Enum35 @Directive44(argument97 : ["stringValue306"]) { + EnumValue931 + EnumValue932 + EnumValue933 + EnumValue934 + EnumValue935 +} + +enum Enum350 @Directive44(argument97 : ["stringValue7814"]) { + EnumValue5856 + EnumValue5857 + EnumValue5858 + EnumValue5859 + EnumValue5860 + EnumValue5861 + EnumValue5862 + EnumValue5863 + EnumValue5864 + EnumValue5865 + EnumValue5866 + EnumValue5867 + EnumValue5868 + EnumValue5869 + EnumValue5870 + EnumValue5871 + EnumValue5872 + EnumValue5873 + EnumValue5874 + EnumValue5875 + EnumValue5876 + EnumValue5877 + EnumValue5878 + EnumValue5879 + EnumValue5880 + EnumValue5881 + EnumValue5882 + EnumValue5883 + EnumValue5884 + EnumValue5885 + EnumValue5886 + EnumValue5887 + EnumValue5888 + EnumValue5889 + EnumValue5890 + EnumValue5891 + EnumValue5892 + EnumValue5893 + EnumValue5894 + EnumValue5895 + EnumValue5896 + EnumValue5897 + EnumValue5898 + EnumValue5899 + EnumValue5900 + EnumValue5901 + EnumValue5902 + EnumValue5903 + EnumValue5904 + EnumValue5905 + EnumValue5906 + EnumValue5907 + EnumValue5908 + EnumValue5909 + EnumValue5910 + EnumValue5911 + EnumValue5912 + EnumValue5913 + EnumValue5914 + EnumValue5915 + EnumValue5916 + EnumValue5917 + EnumValue5918 + EnumValue5919 + EnumValue5920 + EnumValue5921 + EnumValue5922 + EnumValue5923 + EnumValue5924 + EnumValue5925 + EnumValue5926 + EnumValue5927 + EnumValue5928 + EnumValue5929 + EnumValue5930 + EnumValue5931 + EnumValue5932 + EnumValue5933 + EnumValue5934 + EnumValue5935 + EnumValue5936 + EnumValue5937 + EnumValue5938 + EnumValue5939 + EnumValue5940 + EnumValue5941 + EnumValue5942 + EnumValue5943 + EnumValue5944 + EnumValue5945 + EnumValue5946 + EnumValue5947 + EnumValue5948 + EnumValue5949 + EnumValue5950 + EnumValue5951 + EnumValue5952 + EnumValue5953 + EnumValue5954 + EnumValue5955 + EnumValue5956 + EnumValue5957 + EnumValue5958 + EnumValue5959 + EnumValue5960 + EnumValue5961 + EnumValue5962 + EnumValue5963 + EnumValue5964 + EnumValue5965 + EnumValue5966 + EnumValue5967 + EnumValue5968 + EnumValue5969 + EnumValue5970 + EnumValue5971 + EnumValue5972 + EnumValue5973 + EnumValue5974 + EnumValue5975 + EnumValue5976 + EnumValue5977 + EnumValue5978 + EnumValue5979 + EnumValue5980 + EnumValue5981 + EnumValue5982 + EnumValue5983 + EnumValue5984 + EnumValue5985 + EnumValue5986 + EnumValue5987 + EnumValue5988 + EnumValue5989 + EnumValue5990 + EnumValue5991 + EnumValue5992 + EnumValue5993 + EnumValue5994 + EnumValue5995 + EnumValue5996 + EnumValue5997 + EnumValue5998 + EnumValue5999 + EnumValue6000 + EnumValue6001 + EnumValue6002 + EnumValue6003 + EnumValue6004 + EnumValue6005 + EnumValue6006 + EnumValue6007 + EnumValue6008 + EnumValue6009 + EnumValue6010 + EnumValue6011 + EnumValue6012 + EnumValue6013 + EnumValue6014 + EnumValue6015 + EnumValue6016 + EnumValue6017 + EnumValue6018 + EnumValue6019 + EnumValue6020 + EnumValue6021 + EnumValue6022 + EnumValue6023 + EnumValue6024 + EnumValue6025 + EnumValue6026 + EnumValue6027 + EnumValue6028 + EnumValue6029 + EnumValue6030 + EnumValue6031 + EnumValue6032 + EnumValue6033 + EnumValue6034 + EnumValue6035 + EnumValue6036 + EnumValue6037 + EnumValue6038 + EnumValue6039 + EnumValue6040 + EnumValue6041 + EnumValue6042 + EnumValue6043 + EnumValue6044 + EnumValue6045 + EnumValue6046 + EnumValue6047 + EnumValue6048 + EnumValue6049 + EnumValue6050 + EnumValue6051 + EnumValue6052 + EnumValue6053 + EnumValue6054 + EnumValue6055 + EnumValue6056 + EnumValue6057 + EnumValue6058 + EnumValue6059 + EnumValue6060 + EnumValue6061 + EnumValue6062 +} + +enum Enum351 @Directive44(argument97 : ["stringValue7821"]) { + EnumValue6063 + EnumValue6064 + EnumValue6065 + EnumValue6066 +} + +enum Enum352 @Directive44(argument97 : ["stringValue7826"]) { + EnumValue6067 + EnumValue6068 + EnumValue6069 + EnumValue6070 + EnumValue6071 +} + +enum Enum353 @Directive44(argument97 : ["stringValue7827"]) { + EnumValue6072 + EnumValue6073 + EnumValue6074 + EnumValue6075 +} + +enum Enum354 @Directive44(argument97 : ["stringValue7833"]) { + EnumValue6076 + EnumValue6077 + EnumValue6078 +} + +enum Enum355 @Directive44(argument97 : ["stringValue7864"]) { + EnumValue6079 + EnumValue6080 + EnumValue6081 + EnumValue6082 + EnumValue6083 + EnumValue6084 + EnumValue6085 + EnumValue6086 + EnumValue6087 + EnumValue6088 +} + +enum Enum356 @Directive44(argument97 : ["stringValue7865"]) { + EnumValue6089 + EnumValue6090 + EnumValue6091 + EnumValue6092 +} + +enum Enum357 @Directive44(argument97 : ["stringValue7916"]) { + EnumValue6093 + EnumValue6094 + EnumValue6095 + EnumValue6096 +} + +enum Enum358 @Directive44(argument97 : ["stringValue7973"]) { + EnumValue6097 + EnumValue6098 + EnumValue6099 + EnumValue6100 + EnumValue6101 +} + +enum Enum359 @Directive44(argument97 : ["stringValue8034"]) { + EnumValue6102 + EnumValue6103 + EnumValue6104 +} + +enum Enum36 @Directive44(argument97 : ["stringValue311"]) { + EnumValue1000 + EnumValue1001 + EnumValue1002 + EnumValue1003 + EnumValue1004 + EnumValue1005 + EnumValue1006 + EnumValue1007 + EnumValue1008 + EnumValue1009 + EnumValue1010 + EnumValue1011 + EnumValue1012 + EnumValue1013 + EnumValue1014 + EnumValue1015 + EnumValue1016 + EnumValue1017 + EnumValue1018 + EnumValue1019 + EnumValue1020 + EnumValue1021 + EnumValue1022 + EnumValue1023 + EnumValue1024 + EnumValue1025 + EnumValue1026 + EnumValue1027 + EnumValue1028 + EnumValue1029 + EnumValue1030 + EnumValue1031 + EnumValue1032 + EnumValue1033 + EnumValue1034 + EnumValue1035 + EnumValue1036 + EnumValue1037 + EnumValue1038 + EnumValue1039 + EnumValue1040 + EnumValue1041 + EnumValue1042 + EnumValue1043 + EnumValue1044 + EnumValue1045 + EnumValue1046 + EnumValue1047 + EnumValue1048 + EnumValue1049 + EnumValue1050 + EnumValue1051 + EnumValue1052 + EnumValue1053 + EnumValue1054 + EnumValue1055 + EnumValue1056 + EnumValue1057 + EnumValue1058 + EnumValue1059 + EnumValue1060 + EnumValue1061 + EnumValue1062 + EnumValue1063 + EnumValue1064 + EnumValue1065 + EnumValue1066 + EnumValue1067 + EnumValue1068 + EnumValue1069 + EnumValue1070 + EnumValue1071 + EnumValue1072 + EnumValue1073 + EnumValue1074 + EnumValue1075 + EnumValue1076 + EnumValue1077 + EnumValue1078 + EnumValue1079 + EnumValue1080 + EnumValue1081 + EnumValue1082 + EnumValue1083 + EnumValue1084 + EnumValue1085 + EnumValue1086 + EnumValue1087 + EnumValue1088 + EnumValue1089 + EnumValue1090 + EnumValue1091 + EnumValue1092 + EnumValue1093 + EnumValue1094 + EnumValue1095 + EnumValue1096 + EnumValue1097 + EnumValue1098 + EnumValue1099 + EnumValue1100 + EnumValue1101 + EnumValue1102 + EnumValue1103 + EnumValue1104 + EnumValue1105 + EnumValue1106 + EnumValue1107 + EnumValue1108 + EnumValue1109 + EnumValue1110 + EnumValue1111 + EnumValue1112 + EnumValue1113 + EnumValue1114 + EnumValue1115 + EnumValue1116 + EnumValue1117 + EnumValue1118 + EnumValue1119 + EnumValue1120 + EnumValue1121 + EnumValue1122 + EnumValue1123 + EnumValue1124 + EnumValue1125 + EnumValue1126 + EnumValue1127 + EnumValue1128 + EnumValue1129 + EnumValue1130 + EnumValue1131 + EnumValue1132 + EnumValue1133 + EnumValue1134 + EnumValue1135 + EnumValue1136 + EnumValue1137 + EnumValue1138 + EnumValue1139 + EnumValue1140 + EnumValue1141 + EnumValue1142 + EnumValue1143 + EnumValue1144 + EnumValue1145 + EnumValue1146 + EnumValue1147 + EnumValue1148 + EnumValue1149 + EnumValue1150 + EnumValue1151 + EnumValue1152 + EnumValue1153 + EnumValue1154 + EnumValue1155 + EnumValue1156 + EnumValue1157 + EnumValue1158 + EnumValue1159 + EnumValue1160 + EnumValue1161 + EnumValue1162 + EnumValue1163 + EnumValue1164 + EnumValue1165 + EnumValue1166 + EnumValue1167 + EnumValue1168 + EnumValue1169 + EnumValue1170 + EnumValue1171 + EnumValue1172 + EnumValue1173 + EnumValue1174 + EnumValue1175 + EnumValue1176 + EnumValue1177 + EnumValue1178 + EnumValue1179 + EnumValue1180 + EnumValue1181 + EnumValue1182 + EnumValue1183 + EnumValue1184 + EnumValue1185 + EnumValue1186 + EnumValue1187 + EnumValue1188 + EnumValue1189 + EnumValue1190 + EnumValue1191 + EnumValue1192 + EnumValue1193 + EnumValue1194 + EnumValue1195 + EnumValue1196 + EnumValue1197 + EnumValue1198 + EnumValue1199 + EnumValue1200 + EnumValue1201 + EnumValue1202 + EnumValue1203 + EnumValue1204 + EnumValue1205 + EnumValue1206 + EnumValue1207 + EnumValue1208 + EnumValue1209 + EnumValue1210 + EnumValue1211 + EnumValue1212 + EnumValue1213 + EnumValue1214 + EnumValue1215 + EnumValue1216 + EnumValue1217 + EnumValue1218 + EnumValue1219 + EnumValue1220 + EnumValue1221 + EnumValue1222 + EnumValue1223 + EnumValue1224 + EnumValue1225 + EnumValue1226 + EnumValue1227 + EnumValue1228 + EnumValue1229 + EnumValue1230 + EnumValue1231 + EnumValue1232 + EnumValue1233 + EnumValue1234 + EnumValue1235 + EnumValue1236 + EnumValue1237 + EnumValue1238 + EnumValue1239 + EnumValue1240 + EnumValue1241 + EnumValue1242 + EnumValue1243 + EnumValue1244 + EnumValue1245 + EnumValue1246 + EnumValue1247 + EnumValue1248 + EnumValue1249 + EnumValue1250 + EnumValue1251 + EnumValue1252 + EnumValue1253 + EnumValue1254 + EnumValue1255 + EnumValue1256 + EnumValue1257 + EnumValue1258 + EnumValue1259 + EnumValue1260 + EnumValue1261 + EnumValue1262 + EnumValue1263 + EnumValue1264 + EnumValue1265 + EnumValue1266 + EnumValue1267 + EnumValue1268 + EnumValue1269 + EnumValue1270 + EnumValue1271 + EnumValue1272 + EnumValue1273 + EnumValue1274 + EnumValue1275 + EnumValue1276 + EnumValue1277 + EnumValue1278 + EnumValue1279 + EnumValue1280 + EnumValue1281 + EnumValue1282 + EnumValue1283 + EnumValue1284 + EnumValue1285 + EnumValue1286 + EnumValue1287 + EnumValue1288 + EnumValue1289 + EnumValue1290 + EnumValue1291 + EnumValue1292 + EnumValue1293 + EnumValue1294 + EnumValue1295 + EnumValue1296 + EnumValue1297 + EnumValue1298 + EnumValue1299 + EnumValue1300 + EnumValue1301 + EnumValue1302 + EnumValue1303 + EnumValue1304 + EnumValue1305 + EnumValue1306 + EnumValue1307 + EnumValue1308 + EnumValue1309 + EnumValue1310 + EnumValue1311 + EnumValue1312 + EnumValue1313 + EnumValue1314 + EnumValue1315 + EnumValue1316 + EnumValue1317 + EnumValue1318 + EnumValue1319 + EnumValue1320 + EnumValue1321 + EnumValue1322 + EnumValue1323 + EnumValue1324 + EnumValue1325 + EnumValue1326 + EnumValue1327 + EnumValue1328 + EnumValue1329 + EnumValue1330 + EnumValue1331 + EnumValue1332 + EnumValue1333 + EnumValue1334 + EnumValue1335 + EnumValue1336 + EnumValue1337 + EnumValue1338 + EnumValue1339 + EnumValue1340 + EnumValue1341 + EnumValue1342 + EnumValue1343 + EnumValue1344 + EnumValue1345 + EnumValue1346 + EnumValue1347 + EnumValue1348 + EnumValue1349 + EnumValue1350 + EnumValue1351 + EnumValue1352 + EnumValue1353 + EnumValue1354 + EnumValue1355 + EnumValue1356 + EnumValue1357 + EnumValue1358 + EnumValue1359 + EnumValue1360 + EnumValue1361 + EnumValue1362 + EnumValue1363 + EnumValue1364 + EnumValue1365 + EnumValue1366 + EnumValue1367 + EnumValue1368 + EnumValue1369 + EnumValue1370 + EnumValue1371 + EnumValue1372 + EnumValue1373 + EnumValue1374 + EnumValue1375 + EnumValue1376 + EnumValue1377 + EnumValue1378 + EnumValue1379 + EnumValue1380 + EnumValue1381 + EnumValue1382 + EnumValue1383 + EnumValue1384 + EnumValue1385 + EnumValue1386 + EnumValue1387 + EnumValue1388 + EnumValue1389 + EnumValue1390 + EnumValue1391 + EnumValue1392 + EnumValue1393 + EnumValue1394 + EnumValue1395 + EnumValue1396 + EnumValue1397 + EnumValue1398 + EnumValue1399 + EnumValue1400 + EnumValue1401 + EnumValue1402 + EnumValue1403 + EnumValue1404 + EnumValue1405 + EnumValue1406 + EnumValue1407 + EnumValue1408 + EnumValue1409 + EnumValue1410 + EnumValue1411 + EnumValue1412 + EnumValue1413 + EnumValue1414 + EnumValue1415 + EnumValue1416 + EnumValue1417 + EnumValue1418 + EnumValue1419 + EnumValue1420 + EnumValue1421 + EnumValue1422 + EnumValue1423 + EnumValue1424 + EnumValue1425 + EnumValue1426 + EnumValue1427 + EnumValue1428 + EnumValue1429 + EnumValue1430 + EnumValue1431 + EnumValue1432 + EnumValue1433 + EnumValue1434 + EnumValue1435 + EnumValue1436 + EnumValue1437 + EnumValue1438 + EnumValue1439 + EnumValue1440 + EnumValue1441 + EnumValue1442 + EnumValue1443 + EnumValue1444 + EnumValue1445 + EnumValue1446 + EnumValue1447 + EnumValue1448 + EnumValue1449 + EnumValue1450 + EnumValue1451 + EnumValue1452 + EnumValue1453 + EnumValue1454 + EnumValue1455 + EnumValue1456 + EnumValue1457 + EnumValue1458 + EnumValue1459 + EnumValue1460 + EnumValue1461 + EnumValue1462 + EnumValue1463 + EnumValue1464 + EnumValue1465 + EnumValue1466 + EnumValue1467 + EnumValue1468 + EnumValue1469 + EnumValue1470 + EnumValue1471 + EnumValue1472 + EnumValue1473 + EnumValue1474 + EnumValue1475 + EnumValue1476 + EnumValue1477 + EnumValue1478 + EnumValue1479 + EnumValue1480 + EnumValue1481 + EnumValue1482 + EnumValue1483 + EnumValue1484 + EnumValue1485 + EnumValue1486 + EnumValue1487 + EnumValue1488 + EnumValue1489 + EnumValue1490 + EnumValue1491 + EnumValue1492 + EnumValue1493 + EnumValue1494 + EnumValue1495 + EnumValue1496 + EnumValue1497 + EnumValue1498 + EnumValue1499 + EnumValue1500 + EnumValue1501 + EnumValue1502 + EnumValue1503 + EnumValue1504 + EnumValue1505 + EnumValue1506 + EnumValue1507 + EnumValue1508 + EnumValue1509 + EnumValue1510 + EnumValue1511 + EnumValue1512 + EnumValue1513 + EnumValue1514 + EnumValue1515 + EnumValue1516 + EnumValue1517 + EnumValue1518 + EnumValue1519 + EnumValue1520 + EnumValue1521 + EnumValue1522 + EnumValue1523 + EnumValue1524 + EnumValue1525 + EnumValue1526 + EnumValue1527 + EnumValue1528 + EnumValue1529 + EnumValue1530 + EnumValue1531 + EnumValue1532 + EnumValue1533 + EnumValue1534 + EnumValue1535 + EnumValue1536 + EnumValue1537 + EnumValue1538 + EnumValue1539 + EnumValue1540 + EnumValue1541 + EnumValue1542 + EnumValue1543 + EnumValue1544 + EnumValue1545 + EnumValue1546 + EnumValue1547 + EnumValue1548 + EnumValue1549 + EnumValue1550 + EnumValue1551 + EnumValue1552 + EnumValue1553 + EnumValue1554 + EnumValue1555 + EnumValue1556 + EnumValue1557 + EnumValue1558 + EnumValue1559 + EnumValue1560 + EnumValue1561 + EnumValue1562 + EnumValue1563 + EnumValue1564 + EnumValue1565 + EnumValue1566 + EnumValue1567 + EnumValue1568 + EnumValue1569 + EnumValue1570 + EnumValue1571 + EnumValue1572 + EnumValue1573 + EnumValue1574 + EnumValue1575 + EnumValue1576 + EnumValue1577 + EnumValue1578 + EnumValue1579 + EnumValue1580 + EnumValue1581 + EnumValue1582 + EnumValue1583 + EnumValue1584 + EnumValue1585 + EnumValue1586 + EnumValue1587 + EnumValue1588 + EnumValue1589 + EnumValue1590 + EnumValue1591 + EnumValue1592 + EnumValue1593 + EnumValue1594 + EnumValue1595 + EnumValue1596 + EnumValue936 + EnumValue937 + EnumValue938 + EnumValue939 + EnumValue940 + EnumValue941 + EnumValue942 + EnumValue943 + EnumValue944 + EnumValue945 + EnumValue946 + EnumValue947 + EnumValue948 + EnumValue949 + EnumValue950 + EnumValue951 + EnumValue952 + EnumValue953 + EnumValue954 + EnumValue955 + EnumValue956 + EnumValue957 + EnumValue958 + EnumValue959 + EnumValue960 + EnumValue961 + EnumValue962 + EnumValue963 + EnumValue964 + EnumValue965 + EnumValue966 + EnumValue967 + EnumValue968 + EnumValue969 + EnumValue970 + EnumValue971 + EnumValue972 + EnumValue973 + EnumValue974 + EnumValue975 + EnumValue976 + EnumValue977 + EnumValue978 + EnumValue979 + EnumValue980 + EnumValue981 + EnumValue982 + EnumValue983 + EnumValue984 + EnumValue985 + EnumValue986 + EnumValue987 + EnumValue988 + EnumValue989 + EnumValue990 + EnumValue991 + EnumValue992 + EnumValue993 + EnumValue994 + EnumValue995 + EnumValue996 + EnumValue997 + EnumValue998 + EnumValue999 +} + +enum Enum360 @Directive44(argument97 : ["stringValue8061"]) { + EnumValue6105 + EnumValue6106 + EnumValue6107 + EnumValue6108 + EnumValue6109 + EnumValue6110 + EnumValue6111 + EnumValue6112 + EnumValue6113 + EnumValue6114 + EnumValue6115 +} + +enum Enum361 @Directive44(argument97 : ["stringValue8148"]) { + EnumValue6116 + EnumValue6117 + EnumValue6118 + EnumValue6119 + EnumValue6120 + EnumValue6121 + EnumValue6122 +} + +enum Enum362 @Directive22(argument62 : "stringValue8156") @Directive44(argument97 : ["stringValue8157", "stringValue8158"]) { + EnumValue6123 + EnumValue6124 + EnumValue6125 +} + +enum Enum363 @Directive22(argument62 : "stringValue8168") @Directive44(argument97 : ["stringValue8169", "stringValue8170"]) { + EnumValue6126 + EnumValue6127 + EnumValue6128 +} + +enum Enum364 @Directive19(argument57 : "stringValue8187") @Directive22(argument62 : "stringValue8186") @Directive44(argument97 : ["stringValue8188"]) { + EnumValue6129 + EnumValue6130 + EnumValue6131 + EnumValue6132 +} + +enum Enum365 @Directive19(argument57 : "stringValue8359") @Directive22(argument62 : "stringValue8358") @Directive44(argument97 : ["stringValue8360"]) { + EnumValue6133 + EnumValue6134 +} + +enum Enum366 @Directive19(argument57 : "stringValue8364") @Directive22(argument62 : "stringValue8363") @Directive44(argument97 : ["stringValue8365"]) { + EnumValue6135 + EnumValue6136 +} + +enum Enum367 @Directive42(argument96 : ["stringValue8474"]) @Directive44(argument97 : ["stringValue8475"]) { + EnumValue6137 + EnumValue6138 +} + +enum Enum368 @Directive19(argument57 : "stringValue8488") @Directive42(argument96 : ["stringValue8487"]) @Directive44(argument97 : ["stringValue8489"]) { + EnumValue6139 + EnumValue6140 + EnumValue6141 + EnumValue6142 + EnumValue6143 + EnumValue6144 + EnumValue6145 + EnumValue6146 + EnumValue6147 + EnumValue6148 + EnumValue6149 + EnumValue6150 + EnumValue6151 + EnumValue6152 + EnumValue6153 + EnumValue6154 + EnumValue6155 + EnumValue6156 + EnumValue6157 + EnumValue6158 + EnumValue6159 + EnumValue6160 + EnumValue6161 + EnumValue6162 + EnumValue6163 + EnumValue6164 + EnumValue6165 + EnumValue6166 + EnumValue6167 + EnumValue6168 + EnumValue6169 + EnumValue6170 + EnumValue6171 + EnumValue6172 + EnumValue6173 + EnumValue6174 + EnumValue6175 + EnumValue6176 + EnumValue6177 + EnumValue6178 + EnumValue6179 + EnumValue6180 + EnumValue6181 + EnumValue6182 + EnumValue6183 + EnumValue6184 + EnumValue6185 + EnumValue6186 + EnumValue6187 + EnumValue6188 + EnumValue6189 + EnumValue6190 + EnumValue6191 + EnumValue6192 + EnumValue6193 + EnumValue6194 + EnumValue6195 + EnumValue6196 + EnumValue6197 + EnumValue6198 + EnumValue6199 + EnumValue6200 + EnumValue6201 + EnumValue6202 + EnumValue6203 + EnumValue6204 + EnumValue6205 + EnumValue6206 + EnumValue6207 + EnumValue6208 + EnumValue6209 + EnumValue6210 + EnumValue6211 + EnumValue6212 + EnumValue6213 + EnumValue6214 + EnumValue6215 + EnumValue6216 + EnumValue6217 + EnumValue6218 + EnumValue6219 + EnumValue6220 + EnumValue6221 + EnumValue6222 + EnumValue6223 + EnumValue6224 + EnumValue6225 + EnumValue6226 + EnumValue6227 + EnumValue6228 + EnumValue6229 + EnumValue6230 + EnumValue6231 + EnumValue6232 + EnumValue6233 + EnumValue6234 + EnumValue6235 + EnumValue6236 + EnumValue6237 + EnumValue6238 + EnumValue6239 + EnumValue6240 + EnumValue6241 + EnumValue6242 + EnumValue6243 + EnumValue6244 + EnumValue6245 + EnumValue6246 + EnumValue6247 + EnumValue6248 + EnumValue6249 + EnumValue6250 + EnumValue6251 + EnumValue6252 + EnumValue6253 + EnumValue6254 + EnumValue6255 + EnumValue6256 + EnumValue6257 + EnumValue6258 + EnumValue6259 + EnumValue6260 + EnumValue6261 + EnumValue6262 + EnumValue6263 + EnumValue6264 + EnumValue6265 + EnumValue6266 + EnumValue6267 + EnumValue6268 + EnumValue6269 +} + +enum Enum369 @Directive19(argument57 : "stringValue8491") @Directive42(argument96 : ["stringValue8490"]) @Directive44(argument97 : ["stringValue8492"]) { + EnumValue6270 + EnumValue6271 + EnumValue6272 + EnumValue6273 + EnumValue6274 + EnumValue6275 + EnumValue6276 + EnumValue6277 + EnumValue6278 + EnumValue6279 + EnumValue6280 + EnumValue6281 + EnumValue6282 + EnumValue6283 + EnumValue6284 + EnumValue6285 + EnumValue6286 + EnumValue6287 + EnumValue6288 + EnumValue6289 + EnumValue6290 + EnumValue6291 + EnumValue6292 + EnumValue6293 + EnumValue6294 + EnumValue6295 + EnumValue6296 + EnumValue6297 + EnumValue6298 + EnumValue6299 + EnumValue6300 + EnumValue6301 + EnumValue6302 + EnumValue6303 + EnumValue6304 + EnumValue6305 + EnumValue6306 + EnumValue6307 + EnumValue6308 + EnumValue6309 + EnumValue6310 + EnumValue6311 + EnumValue6312 + EnumValue6313 + EnumValue6314 + EnumValue6315 + EnumValue6316 + EnumValue6317 + EnumValue6318 + EnumValue6319 + EnumValue6320 + EnumValue6321 + EnumValue6322 + EnumValue6323 + EnumValue6324 + EnumValue6325 + EnumValue6326 + EnumValue6327 + EnumValue6328 + EnumValue6329 + EnumValue6330 + EnumValue6331 + EnumValue6332 + EnumValue6333 + EnumValue6334 + EnumValue6335 + EnumValue6336 + EnumValue6337 + EnumValue6338 + EnumValue6339 + EnumValue6340 + EnumValue6341 + EnumValue6342 + EnumValue6343 + EnumValue6344 + EnumValue6345 + EnumValue6346 + EnumValue6347 + EnumValue6348 + EnumValue6349 + EnumValue6350 + EnumValue6351 + EnumValue6352 + EnumValue6353 + EnumValue6354 + EnumValue6355 + EnumValue6356 + EnumValue6357 + EnumValue6358 + EnumValue6359 + EnumValue6360 + EnumValue6361 + EnumValue6362 + EnumValue6363 + EnumValue6364 + EnumValue6365 + EnumValue6366 + EnumValue6367 + EnumValue6368 + EnumValue6369 + EnumValue6370 + EnumValue6371 + EnumValue6372 + EnumValue6373 + EnumValue6374 + EnumValue6375 + EnumValue6376 + EnumValue6377 + EnumValue6378 + EnumValue6379 + EnumValue6380 + EnumValue6381 + EnumValue6382 + EnumValue6383 + EnumValue6384 + EnumValue6385 + EnumValue6386 + EnumValue6387 + EnumValue6388 + EnumValue6389 + EnumValue6390 + EnumValue6391 + EnumValue6392 + EnumValue6393 + EnumValue6394 + EnumValue6395 + EnumValue6396 + EnumValue6397 + EnumValue6398 + EnumValue6399 + EnumValue6400 + EnumValue6401 + EnumValue6402 + EnumValue6403 + EnumValue6404 + EnumValue6405 + EnumValue6406 + EnumValue6407 + EnumValue6408 + EnumValue6409 + EnumValue6410 + EnumValue6411 + EnumValue6412 + EnumValue6413 + EnumValue6414 + EnumValue6415 + EnumValue6416 + EnumValue6417 + EnumValue6418 + EnumValue6419 + EnumValue6420 + EnumValue6421 + EnumValue6422 + EnumValue6423 + EnumValue6424 + EnumValue6425 + EnumValue6426 + EnumValue6427 + EnumValue6428 + EnumValue6429 + EnumValue6430 + EnumValue6431 + EnumValue6432 + EnumValue6433 + EnumValue6434 + EnumValue6435 + EnumValue6436 + EnumValue6437 + EnumValue6438 + EnumValue6439 + EnumValue6440 + EnumValue6441 + EnumValue6442 + EnumValue6443 + EnumValue6444 + EnumValue6445 + EnumValue6446 + EnumValue6447 + EnumValue6448 + EnumValue6449 + EnumValue6450 + EnumValue6451 + EnumValue6452 + EnumValue6453 + EnumValue6454 + EnumValue6455 + EnumValue6456 + EnumValue6457 + EnumValue6458 + EnumValue6459 + EnumValue6460 + EnumValue6461 + EnumValue6462 + EnumValue6463 + EnumValue6464 + EnumValue6465 + EnumValue6466 + EnumValue6467 + EnumValue6468 + EnumValue6469 + EnumValue6470 + EnumValue6471 + EnumValue6472 + EnumValue6473 + EnumValue6474 + EnumValue6475 + EnumValue6476 + EnumValue6477 + EnumValue6478 + EnumValue6479 + EnumValue6480 + EnumValue6481 + EnumValue6482 + EnumValue6483 + EnumValue6484 + EnumValue6485 + EnumValue6486 + EnumValue6487 + EnumValue6488 + EnumValue6489 + EnumValue6490 + EnumValue6491 + EnumValue6492 + EnumValue6493 + EnumValue6494 + EnumValue6495 + EnumValue6496 + EnumValue6497 + EnumValue6498 + EnumValue6499 + EnumValue6500 + EnumValue6501 + EnumValue6502 + EnumValue6503 + EnumValue6504 + EnumValue6505 + EnumValue6506 + EnumValue6507 + EnumValue6508 + EnumValue6509 + EnumValue6510 + EnumValue6511 + EnumValue6512 + EnumValue6513 + EnumValue6514 + EnumValue6515 + EnumValue6516 + EnumValue6517 + EnumValue6518 + EnumValue6519 + EnumValue6520 + EnumValue6521 + EnumValue6522 + EnumValue6523 + EnumValue6524 + EnumValue6525 + EnumValue6526 + EnumValue6527 + EnumValue6528 + EnumValue6529 + EnumValue6530 + EnumValue6531 + EnumValue6532 + EnumValue6533 + EnumValue6534 + EnumValue6535 + EnumValue6536 + EnumValue6537 + EnumValue6538 + EnumValue6539 + EnumValue6540 + EnumValue6541 + EnumValue6542 + EnumValue6543 + EnumValue6544 + EnumValue6545 + EnumValue6546 + EnumValue6547 + EnumValue6548 + EnumValue6549 + EnumValue6550 + EnumValue6551 + EnumValue6552 + EnumValue6553 + EnumValue6554 + EnumValue6555 + EnumValue6556 + EnumValue6557 + EnumValue6558 + EnumValue6559 + EnumValue6560 + EnumValue6561 + EnumValue6562 + EnumValue6563 + EnumValue6564 + EnumValue6565 + EnumValue6566 + EnumValue6567 + EnumValue6568 + EnumValue6569 + EnumValue6570 + EnumValue6571 + EnumValue6572 + EnumValue6573 + EnumValue6574 + EnumValue6575 + EnumValue6576 + EnumValue6577 + EnumValue6578 + EnumValue6579 + EnumValue6580 + EnumValue6581 + EnumValue6582 + EnumValue6583 + EnumValue6584 + EnumValue6585 + EnumValue6586 + EnumValue6587 + EnumValue6588 + EnumValue6589 + EnumValue6590 + EnumValue6591 + EnumValue6592 + EnumValue6593 + EnumValue6594 + EnumValue6595 + EnumValue6596 + EnumValue6597 + EnumValue6598 + EnumValue6599 + EnumValue6600 + EnumValue6601 + EnumValue6602 + EnumValue6603 + EnumValue6604 + EnumValue6605 + EnumValue6606 + EnumValue6607 + EnumValue6608 + EnumValue6609 + EnumValue6610 + EnumValue6611 + EnumValue6612 + EnumValue6613 + EnumValue6614 + EnumValue6615 + EnumValue6616 + EnumValue6617 + EnumValue6618 + EnumValue6619 + EnumValue6620 + EnumValue6621 + EnumValue6622 + EnumValue6623 + EnumValue6624 + EnumValue6625 + EnumValue6626 + EnumValue6627 + EnumValue6628 + EnumValue6629 + EnumValue6630 + EnumValue6631 + EnumValue6632 + EnumValue6633 + EnumValue6634 + EnumValue6635 + EnumValue6636 + EnumValue6637 + EnumValue6638 + EnumValue6639 + EnumValue6640 + EnumValue6641 + EnumValue6642 + EnumValue6643 + EnumValue6644 + EnumValue6645 + EnumValue6646 + EnumValue6647 + EnumValue6648 + EnumValue6649 + EnumValue6650 + EnumValue6651 + EnumValue6652 + EnumValue6653 + EnumValue6654 + EnumValue6655 + EnumValue6656 + EnumValue6657 + EnumValue6658 + EnumValue6659 + EnumValue6660 + EnumValue6661 + EnumValue6662 + EnumValue6663 + EnumValue6664 + EnumValue6665 + EnumValue6666 + EnumValue6667 + EnumValue6668 + EnumValue6669 + EnumValue6670 + EnumValue6671 + EnumValue6672 + EnumValue6673 + EnumValue6674 + EnumValue6675 + EnumValue6676 + EnumValue6677 + EnumValue6678 + EnumValue6679 + EnumValue6680 + EnumValue6681 + EnumValue6682 + EnumValue6683 + EnumValue6684 + EnumValue6685 + EnumValue6686 + EnumValue6687 + EnumValue6688 + EnumValue6689 + EnumValue6690 + EnumValue6691 + EnumValue6692 + EnumValue6693 + EnumValue6694 + EnumValue6695 + EnumValue6696 + EnumValue6697 + EnumValue6698 + EnumValue6699 + EnumValue6700 + EnumValue6701 + EnumValue6702 + EnumValue6703 + EnumValue6704 + EnumValue6705 + EnumValue6706 + EnumValue6707 + EnumValue6708 + EnumValue6709 + EnumValue6710 + EnumValue6711 + EnumValue6712 + EnumValue6713 + EnumValue6714 + EnumValue6715 + EnumValue6716 + EnumValue6717 + EnumValue6718 + EnumValue6719 + EnumValue6720 + EnumValue6721 + EnumValue6722 + EnumValue6723 + EnumValue6724 + EnumValue6725 + EnumValue6726 + EnumValue6727 + EnumValue6728 + EnumValue6729 + EnumValue6730 + EnumValue6731 + EnumValue6732 + EnumValue6733 + EnumValue6734 + EnumValue6735 + EnumValue6736 + EnumValue6737 + EnumValue6738 + EnumValue6739 + EnumValue6740 + EnumValue6741 + EnumValue6742 + EnumValue6743 + EnumValue6744 + EnumValue6745 + EnumValue6746 + EnumValue6747 + EnumValue6748 + EnumValue6749 + EnumValue6750 + EnumValue6751 + EnumValue6752 + EnumValue6753 + EnumValue6754 + EnumValue6755 + EnumValue6756 + EnumValue6757 + EnumValue6758 + EnumValue6759 + EnumValue6760 + EnumValue6761 + EnumValue6762 + EnumValue6763 + EnumValue6764 + EnumValue6765 + EnumValue6766 + EnumValue6767 + EnumValue6768 + EnumValue6769 + EnumValue6770 + EnumValue6771 + EnumValue6772 + EnumValue6773 + EnumValue6774 + EnumValue6775 + EnumValue6776 + EnumValue6777 + EnumValue6778 + EnumValue6779 + EnumValue6780 + EnumValue6781 + EnumValue6782 + EnumValue6783 + EnumValue6784 + EnumValue6785 + EnumValue6786 + EnumValue6787 + EnumValue6788 + EnumValue6789 + EnumValue6790 + EnumValue6791 + EnumValue6792 + EnumValue6793 + EnumValue6794 + EnumValue6795 + EnumValue6796 + EnumValue6797 + EnumValue6798 + EnumValue6799 + EnumValue6800 + EnumValue6801 + EnumValue6802 + EnumValue6803 + EnumValue6804 + EnumValue6805 + EnumValue6806 + EnumValue6807 + EnumValue6808 + EnumValue6809 + EnumValue6810 + EnumValue6811 + EnumValue6812 + EnumValue6813 + EnumValue6814 + EnumValue6815 + EnumValue6816 + EnumValue6817 + EnumValue6818 + EnumValue6819 + EnumValue6820 + EnumValue6821 + EnumValue6822 + EnumValue6823 + EnumValue6824 + EnumValue6825 + EnumValue6826 + EnumValue6827 + EnumValue6828 + EnumValue6829 + EnumValue6830 + EnumValue6831 + EnumValue6832 + EnumValue6833 + EnumValue6834 + EnumValue6835 + EnumValue6836 + EnumValue6837 + EnumValue6838 + EnumValue6839 + EnumValue6840 + EnumValue6841 + EnumValue6842 + EnumValue6843 + EnumValue6844 + EnumValue6845 + EnumValue6846 + EnumValue6847 + EnumValue6848 + EnumValue6849 + EnumValue6850 + EnumValue6851 + EnumValue6852 + EnumValue6853 + EnumValue6854 + EnumValue6855 + EnumValue6856 + EnumValue6857 + EnumValue6858 + EnumValue6859 + EnumValue6860 + EnumValue6861 + EnumValue6862 + EnumValue6863 + EnumValue6864 + EnumValue6865 + EnumValue6866 + EnumValue6867 + EnumValue6868 + EnumValue6869 + EnumValue6870 + EnumValue6871 + EnumValue6872 + EnumValue6873 + EnumValue6874 + EnumValue6875 + EnumValue6876 + EnumValue6877 + EnumValue6878 + EnumValue6879 + EnumValue6880 + EnumValue6881 + EnumValue6882 + EnumValue6883 + EnumValue6884 + EnumValue6885 + EnumValue6886 + EnumValue6887 + EnumValue6888 + EnumValue6889 + EnumValue6890 + EnumValue6891 + EnumValue6892 + EnumValue6893 + EnumValue6894 + EnumValue6895 + EnumValue6896 + EnumValue6897 + EnumValue6898 + EnumValue6899 + EnumValue6900 + EnumValue6901 + EnumValue6902 + EnumValue6903 + EnumValue6904 + EnumValue6905 + EnumValue6906 + EnumValue6907 + EnumValue6908 + EnumValue6909 + EnumValue6910 + EnumValue6911 + EnumValue6912 + EnumValue6913 + EnumValue6914 + EnumValue6915 + EnumValue6916 + EnumValue6917 + EnumValue6918 + EnumValue6919 + EnumValue6920 + EnumValue6921 + EnumValue6922 + EnumValue6923 + EnumValue6924 + EnumValue6925 + EnumValue6926 + EnumValue6927 + EnumValue6928 + EnumValue6929 + EnumValue6930 + EnumValue6931 + EnumValue6932 + EnumValue6933 + EnumValue6934 + EnumValue6935 + EnumValue6936 + EnumValue6937 + EnumValue6938 + EnumValue6939 + EnumValue6940 + EnumValue6941 + EnumValue6942 + EnumValue6943 + EnumValue6944 + EnumValue6945 + EnumValue6946 + EnumValue6947 + EnumValue6948 + EnumValue6949 + EnumValue6950 + EnumValue6951 + EnumValue6952 + EnumValue6953 + EnumValue6954 + EnumValue6955 + EnumValue6956 + EnumValue6957 + EnumValue6958 + EnumValue6959 + EnumValue6960 + EnumValue6961 + EnumValue6962 + EnumValue6963 + EnumValue6964 + EnumValue6965 + EnumValue6966 + EnumValue6967 + EnumValue6968 + EnumValue6969 + EnumValue6970 + EnumValue6971 + EnumValue6972 + EnumValue6973 + EnumValue6974 + EnumValue6975 + EnumValue6976 + EnumValue6977 + EnumValue6978 + EnumValue6979 + EnumValue6980 + EnumValue6981 + EnumValue6982 + EnumValue6983 + EnumValue6984 + EnumValue6985 + EnumValue6986 + EnumValue6987 + EnumValue6988 + EnumValue6989 + EnumValue6990 + EnumValue6991 + EnumValue6992 + EnumValue6993 + EnumValue6994 + EnumValue6995 + EnumValue6996 + EnumValue6997 + EnumValue6998 + EnumValue6999 + EnumValue7000 + EnumValue7001 + EnumValue7002 + EnumValue7003 + EnumValue7004 + EnumValue7005 + EnumValue7006 + EnumValue7007 + EnumValue7008 + EnumValue7009 + EnumValue7010 + EnumValue7011 + EnumValue7012 + EnumValue7013 + EnumValue7014 + EnumValue7015 + EnumValue7016 + EnumValue7017 + EnumValue7018 + EnumValue7019 + EnumValue7020 + EnumValue7021 + EnumValue7022 + EnumValue7023 + EnumValue7024 + EnumValue7025 + EnumValue7026 + EnumValue7027 + EnumValue7028 + EnumValue7029 + EnumValue7030 + EnumValue7031 + EnumValue7032 + EnumValue7033 + EnumValue7034 + EnumValue7035 + EnumValue7036 + EnumValue7037 + EnumValue7038 + EnumValue7039 + EnumValue7040 + EnumValue7041 + EnumValue7042 + EnumValue7043 + EnumValue7044 + EnumValue7045 + EnumValue7046 + EnumValue7047 + EnumValue7048 + EnumValue7049 + EnumValue7050 + EnumValue7051 + EnumValue7052 + EnumValue7053 + EnumValue7054 + EnumValue7055 + EnumValue7056 + EnumValue7057 + EnumValue7058 + EnumValue7059 + EnumValue7060 + EnumValue7061 + EnumValue7062 + EnumValue7063 + EnumValue7064 + EnumValue7065 + EnumValue7066 + EnumValue7067 + EnumValue7068 + EnumValue7069 + EnumValue7070 + EnumValue7071 + EnumValue7072 + EnumValue7073 + EnumValue7074 + EnumValue7075 + EnumValue7076 + EnumValue7077 + EnumValue7078 + EnumValue7079 + EnumValue7080 + EnumValue7081 + EnumValue7082 + EnumValue7083 + EnumValue7084 + EnumValue7085 + EnumValue7086 + EnumValue7087 + EnumValue7088 + EnumValue7089 + EnumValue7090 + EnumValue7091 + EnumValue7092 + EnumValue7093 + EnumValue7094 + EnumValue7095 + EnumValue7096 + EnumValue7097 + EnumValue7098 + EnumValue7099 + EnumValue7100 + EnumValue7101 + EnumValue7102 + EnumValue7103 + EnumValue7104 + EnumValue7105 + EnumValue7106 + EnumValue7107 + EnumValue7108 + EnumValue7109 + EnumValue7110 + EnumValue7111 + EnumValue7112 + EnumValue7113 + EnumValue7114 + EnumValue7115 + EnumValue7116 + EnumValue7117 + EnumValue7118 + EnumValue7119 + EnumValue7120 + EnumValue7121 + EnumValue7122 + EnumValue7123 + EnumValue7124 + EnumValue7125 + EnumValue7126 + EnumValue7127 + EnumValue7128 + EnumValue7129 + EnumValue7130 + EnumValue7131 + EnumValue7132 + EnumValue7133 + EnumValue7134 + EnumValue7135 + EnumValue7136 + EnumValue7137 + EnumValue7138 + EnumValue7139 + EnumValue7140 + EnumValue7141 + EnumValue7142 + EnumValue7143 + EnumValue7144 + EnumValue7145 + EnumValue7146 + EnumValue7147 + EnumValue7148 + EnumValue7149 + EnumValue7150 + EnumValue7151 + EnumValue7152 + EnumValue7153 + EnumValue7154 + EnumValue7155 + EnumValue7156 + EnumValue7157 + EnumValue7158 + EnumValue7159 + EnumValue7160 + EnumValue7161 + EnumValue7162 + EnumValue7163 + EnumValue7164 + EnumValue7165 + EnumValue7166 + EnumValue7167 + EnumValue7168 + EnumValue7169 + EnumValue7170 + EnumValue7171 + EnumValue7172 + EnumValue7173 + EnumValue7174 + EnumValue7175 + EnumValue7176 + EnumValue7177 + EnumValue7178 + EnumValue7179 + EnumValue7180 + EnumValue7181 + EnumValue7182 + EnumValue7183 + EnumValue7184 + EnumValue7185 + EnumValue7186 + EnumValue7187 + EnumValue7188 + EnumValue7189 + EnumValue7190 + EnumValue7191 + EnumValue7192 + EnumValue7193 + EnumValue7194 + EnumValue7195 + EnumValue7196 + EnumValue7197 + EnumValue7198 + EnumValue7199 + EnumValue7200 + EnumValue7201 + EnumValue7202 + EnumValue7203 + EnumValue7204 + EnumValue7205 + EnumValue7206 + EnumValue7207 + EnumValue7208 + EnumValue7209 + EnumValue7210 + EnumValue7211 + EnumValue7212 + EnumValue7213 + EnumValue7214 + EnumValue7215 + EnumValue7216 + EnumValue7217 + EnumValue7218 + EnumValue7219 + EnumValue7220 + EnumValue7221 + EnumValue7222 + EnumValue7223 + EnumValue7224 + EnumValue7225 + EnumValue7226 + EnumValue7227 + EnumValue7228 + EnumValue7229 + EnumValue7230 + EnumValue7231 + EnumValue7232 + EnumValue7233 + EnumValue7234 + EnumValue7235 + EnumValue7236 + EnumValue7237 + EnumValue7238 + EnumValue7239 + EnumValue7240 + EnumValue7241 + EnumValue7242 + EnumValue7243 + EnumValue7244 + EnumValue7245 + EnumValue7246 + EnumValue7247 + EnumValue7248 + EnumValue7249 + EnumValue7250 + EnumValue7251 + EnumValue7252 + EnumValue7253 + EnumValue7254 + EnumValue7255 + EnumValue7256 + EnumValue7257 + EnumValue7258 + EnumValue7259 + EnumValue7260 + EnumValue7261 + EnumValue7262 + EnumValue7263 + EnumValue7264 + EnumValue7265 + EnumValue7266 + EnumValue7267 + EnumValue7268 + EnumValue7269 + EnumValue7270 + EnumValue7271 + EnumValue7272 + EnumValue7273 + EnumValue7274 + EnumValue7275 + EnumValue7276 + EnumValue7277 + EnumValue7278 + EnumValue7279 + EnumValue7280 + EnumValue7281 + EnumValue7282 + EnumValue7283 + EnumValue7284 + EnumValue7285 + EnumValue7286 + EnumValue7287 + EnumValue7288 + EnumValue7289 + EnumValue7290 + EnumValue7291 + EnumValue7292 + EnumValue7293 + EnumValue7294 + EnumValue7295 + EnumValue7296 + EnumValue7297 + EnumValue7298 + EnumValue7299 + EnumValue7300 + EnumValue7301 + EnumValue7302 + EnumValue7303 + EnumValue7304 + EnumValue7305 + EnumValue7306 + EnumValue7307 + EnumValue7308 + EnumValue7309 + EnumValue7310 + EnumValue7311 + EnumValue7312 + EnumValue7313 + EnumValue7314 + EnumValue7315 + EnumValue7316 + EnumValue7317 + EnumValue7318 + EnumValue7319 + EnumValue7320 + EnumValue7321 + EnumValue7322 + EnumValue7323 + EnumValue7324 + EnumValue7325 + EnumValue7326 + EnumValue7327 + EnumValue7328 + EnumValue7329 + EnumValue7330 + EnumValue7331 + EnumValue7332 + EnumValue7333 + EnumValue7334 + EnumValue7335 + EnumValue7336 + EnumValue7337 + EnumValue7338 + EnumValue7339 + EnumValue7340 + EnumValue7341 + EnumValue7342 + EnumValue7343 + EnumValue7344 + EnumValue7345 + EnumValue7346 + EnumValue7347 + EnumValue7348 + EnumValue7349 + EnumValue7350 + EnumValue7351 + EnumValue7352 + EnumValue7353 + EnumValue7354 + EnumValue7355 + EnumValue7356 + EnumValue7357 + EnumValue7358 + EnumValue7359 + EnumValue7360 + EnumValue7361 + EnumValue7362 + EnumValue7363 + EnumValue7364 + EnumValue7365 + EnumValue7366 + EnumValue7367 + EnumValue7368 + EnumValue7369 + EnumValue7370 + EnumValue7371 + EnumValue7372 + EnumValue7373 + EnumValue7374 + EnumValue7375 + EnumValue7376 + EnumValue7377 + EnumValue7378 + EnumValue7379 + EnumValue7380 + EnumValue7381 + EnumValue7382 + EnumValue7383 + EnumValue7384 + EnumValue7385 + EnumValue7386 + EnumValue7387 + EnumValue7388 + EnumValue7389 + EnumValue7390 + EnumValue7391 + EnumValue7392 + EnumValue7393 + EnumValue7394 + EnumValue7395 + EnumValue7396 + EnumValue7397 + EnumValue7398 + EnumValue7399 + EnumValue7400 + EnumValue7401 + EnumValue7402 + EnumValue7403 + EnumValue7404 + EnumValue7405 + EnumValue7406 + EnumValue7407 + EnumValue7408 + EnumValue7409 + EnumValue7410 + EnumValue7411 + EnumValue7412 + EnumValue7413 + EnumValue7414 + EnumValue7415 + EnumValue7416 + EnumValue7417 + EnumValue7418 + EnumValue7419 + EnumValue7420 + EnumValue7421 + EnumValue7422 + EnumValue7423 + EnumValue7424 + EnumValue7425 + EnumValue7426 + EnumValue7427 + EnumValue7428 + EnumValue7429 + EnumValue7430 + EnumValue7431 + EnumValue7432 + EnumValue7433 + EnumValue7434 + EnumValue7435 + EnumValue7436 + EnumValue7437 + EnumValue7438 + EnumValue7439 + EnumValue7440 + EnumValue7441 + EnumValue7442 + EnumValue7443 + EnumValue7444 + EnumValue7445 + EnumValue7446 + EnumValue7447 + EnumValue7448 + EnumValue7449 + EnumValue7450 + EnumValue7451 + EnumValue7452 + EnumValue7453 + EnumValue7454 + EnumValue7455 + EnumValue7456 + EnumValue7457 + EnumValue7458 + EnumValue7459 + EnumValue7460 + EnumValue7461 + EnumValue7462 + EnumValue7463 + EnumValue7464 + EnumValue7465 + EnumValue7466 + EnumValue7467 + EnumValue7468 + EnumValue7469 + EnumValue7470 + EnumValue7471 + EnumValue7472 + EnumValue7473 + EnumValue7474 + EnumValue7475 + EnumValue7476 + EnumValue7477 + EnumValue7478 + EnumValue7479 + EnumValue7480 + EnumValue7481 + EnumValue7482 + EnumValue7483 + EnumValue7484 + EnumValue7485 + EnumValue7486 + EnumValue7487 + EnumValue7488 + EnumValue7489 + EnumValue7490 + EnumValue7491 + EnumValue7492 + EnumValue7493 +} + +enum Enum37 @Directive44(argument97 : ["stringValue313"]) { + EnumValue1597 + EnumValue1598 + EnumValue1599 + EnumValue1600 +} + +enum Enum370 @Directive22(argument62 : "stringValue8493") @Directive44(argument97 : ["stringValue8494"]) { + EnumValue7494 + EnumValue7495 +} + +enum Enum371 @Directive19(argument57 : "stringValue8495") @Directive22(argument62 : "stringValue8496") @Directive44(argument97 : ["stringValue8497"]) { + EnumValue7496 + EnumValue7497 +} + +enum Enum372 @Directive42(argument96 : ["stringValue8559"]) @Directive44(argument97 : ["stringValue8560"]) { + EnumValue7498 + EnumValue7499 + EnumValue7500 + EnumValue7501 + EnumValue7502 + EnumValue7503 + EnumValue7504 + EnumValue7505 + EnumValue7506 +} + +enum Enum373 @Directive42(argument96 : ["stringValue8654"]) @Directive44(argument97 : ["stringValue8655"]) { + EnumValue7507 + EnumValue7508 + EnumValue7509 + EnumValue7510 + EnumValue7511 + EnumValue7512 + EnumValue7513 +} + +enum Enum374 @Directive19(argument57 : "stringValue8675") @Directive22(argument62 : "stringValue8674") @Directive44(argument97 : ["stringValue8676", "stringValue8677"]) { + EnumValue7514 + EnumValue7515 +} + +enum Enum375 @Directive19(argument57 : "stringValue8731") @Directive22(argument62 : "stringValue8730") @Directive44(argument97 : ["stringValue8732", "stringValue8733"]) { + EnumValue7516 + EnumValue7517 + EnumValue7518 +} + +enum Enum376 @Directive19(argument57 : "stringValue8743") @Directive22(argument62 : "stringValue8742") @Directive44(argument97 : ["stringValue8744", "stringValue8745"]) { + EnumValue7519 + EnumValue7520 + EnumValue7521 + EnumValue7522 +} + +enum Enum377 @Directive19(argument57 : "stringValue8751") @Directive22(argument62 : "stringValue8750") @Directive44(argument97 : ["stringValue8752", "stringValue8753"]) { + EnumValue7523 +} + +enum Enum378 @Directive19(argument57 : "stringValue8802") @Directive22(argument62 : "stringValue8801") @Directive44(argument97 : ["stringValue8803", "stringValue8804"]) { + EnumValue7524 + EnumValue7525 + EnumValue7526 + EnumValue7527 + EnumValue7528 + EnumValue7529 + EnumValue7530 + EnumValue7531 + EnumValue7532 + EnumValue7533 + EnumValue7534 + EnumValue7535 +} + +enum Enum379 @Directive19(argument57 : "stringValue8814") @Directive22(argument62 : "stringValue8813") @Directive44(argument97 : ["stringValue8815", "stringValue8816"]) { + EnumValue7536 + EnumValue7537 + EnumValue7538 + EnumValue7539 +} + +enum Enum38 @Directive44(argument97 : ["stringValue315"]) { + EnumValue1601 + EnumValue1602 + EnumValue1603 + EnumValue1604 +} + +enum Enum380 @Directive22(argument62 : "stringValue8849") @Directive44(argument97 : ["stringValue8850", "stringValue8851"]) { + EnumValue7540 + EnumValue7541 + EnumValue7542 + EnumValue7543 @deprecated + EnumValue7544 +} + +enum Enum381 @Directive19(argument57 : "stringValue8869") @Directive42(argument96 : ["stringValue8868"]) @Directive44(argument97 : ["stringValue8870"]) { + EnumValue7545 + EnumValue7546 + EnumValue7547 + EnumValue7548 + EnumValue7549 + EnumValue7550 + EnumValue7551 + EnumValue7552 + EnumValue7553 + EnumValue7554 + EnumValue7555 + EnumValue7556 + EnumValue7557 + EnumValue7558 +} + +enum Enum382 @Directive19(argument57 : "stringValue8872") @Directive42(argument96 : ["stringValue8871"]) @Directive44(argument97 : ["stringValue8873"]) { + EnumValue7559 + EnumValue7560 + EnumValue7561 + EnumValue7562 +} + +enum Enum383 @Directive19(argument57 : "stringValue8890") @Directive22(argument62 : "stringValue8889") @Directive44(argument97 : ["stringValue8891", "stringValue8892"]) { + EnumValue7563 + EnumValue7564 +} + +enum Enum384 @Directive19(argument57 : "stringValue8912") @Directive42(argument96 : ["stringValue8911"]) @Directive44(argument97 : ["stringValue8913"]) { + EnumValue7565 + EnumValue7566 @deprecated + EnumValue7567 + EnumValue7568 + EnumValue7569 + EnumValue7570 + EnumValue7571 @deprecated + EnumValue7572 @deprecated + EnumValue7573 + EnumValue7574 @deprecated + EnumValue7575 @deprecated + EnumValue7576 @deprecated + EnumValue7577 @deprecated + EnumValue7578 + EnumValue7579 @deprecated + EnumValue7580 + EnumValue7581 + EnumValue7582 @deprecated + EnumValue7583 @deprecated + EnumValue7584 + EnumValue7585 + EnumValue7586 + EnumValue7587 @deprecated + EnumValue7588 + EnumValue7589 + EnumValue7590 + EnumValue7591 + EnumValue7592 + EnumValue7593 + EnumValue7594 + EnumValue7595 + EnumValue7596 + EnumValue7597 + EnumValue7598 + EnumValue7599 + EnumValue7600 + EnumValue7601 + EnumValue7602 + EnumValue7603 + EnumValue7604 + EnumValue7605 + EnumValue7606 + EnumValue7607 + EnumValue7608 + EnumValue7609 + EnumValue7610 + EnumValue7611 + EnumValue7612 +} + +enum Enum385 @Directive19(argument57 : "stringValue8975") @Directive42(argument96 : ["stringValue8974"]) @Directive44(argument97 : ["stringValue8976"]) { + EnumValue7613 + EnumValue7614 + EnumValue7615 +} + +enum Enum386 @Directive19(argument57 : "stringValue8990") @Directive42(argument96 : ["stringValue8989"]) @Directive44(argument97 : ["stringValue8991"]) { + EnumValue7616 + EnumValue7617 + EnumValue7618 + EnumValue7619 + EnumValue7620 + EnumValue7621 + EnumValue7622 + EnumValue7623 + EnumValue7624 + EnumValue7625 + EnumValue7626 + EnumValue7627 + EnumValue7628 + EnumValue7629 + EnumValue7630 + EnumValue7631 + EnumValue7632 + EnumValue7633 + EnumValue7634 + EnumValue7635 + EnumValue7636 + EnumValue7637 + EnumValue7638 + EnumValue7639 + EnumValue7640 + EnumValue7641 + EnumValue7642 + EnumValue7643 + EnumValue7644 + EnumValue7645 + EnumValue7646 + EnumValue7647 + EnumValue7648 + EnumValue7649 + EnumValue7650 + EnumValue7651 + EnumValue7652 + EnumValue7653 + EnumValue7654 + EnumValue7655 + EnumValue7656 + EnumValue7657 + EnumValue7658 + EnumValue7659 + EnumValue7660 + EnumValue7661 + EnumValue7662 + EnumValue7663 + EnumValue7664 + EnumValue7665 + EnumValue7666 + EnumValue7667 + EnumValue7668 + EnumValue7669 + EnumValue7670 + EnumValue7671 + EnumValue7672 + EnumValue7673 + EnumValue7674 + EnumValue7675 + EnumValue7676 + EnumValue7677 + EnumValue7678 + EnumValue7679 + EnumValue7680 + EnumValue7681 +} + +enum Enum387 @Directive19(argument57 : "stringValue9001") @Directive42(argument96 : ["stringValue9000"]) @Directive44(argument97 : ["stringValue9002"]) { + EnumValue7682 + EnumValue7683 + EnumValue7684 +} + +enum Enum388 @Directive19(argument57 : "stringValue9022") @Directive42(argument96 : ["stringValue9021"]) @Directive44(argument97 : ["stringValue9023"]) { + EnumValue7685 + EnumValue7686 + EnumValue7687 + EnumValue7688 + EnumValue7689 + EnumValue7690 +} + +enum Enum389 @Directive19(argument57 : "stringValue9078") @Directive42(argument96 : ["stringValue9077"]) @Directive44(argument97 : ["stringValue9079"]) { + EnumValue7691 + EnumValue7692 + EnumValue7693 + EnumValue7694 +} + +enum Enum39 @Directive44(argument97 : ["stringValue316"]) { + EnumValue1605 + EnumValue1606 + EnumValue1607 +} + +enum Enum390 @Directive42(argument96 : ["stringValue9080"]) @Directive44(argument97 : ["stringValue9081"]) { + EnumValue7695 + EnumValue7696 + EnumValue7697 +} + +enum Enum391 @Directive19(argument57 : "stringValue9107") @Directive42(argument96 : ["stringValue9106"]) @Directive44(argument97 : ["stringValue9108"]) { + EnumValue7698 + EnumValue7699 + EnumValue7700 +} + +enum Enum392 @Directive19(argument57 : "stringValue9134") @Directive42(argument96 : ["stringValue9133"]) @Directive44(argument97 : ["stringValue9135"]) { + EnumValue7701 +} + +enum Enum393 @Directive42(argument96 : ["stringValue9184"]) @Directive44(argument97 : ["stringValue9185"]) { + EnumValue7702 + EnumValue7703 + EnumValue7704 + EnumValue7705 + EnumValue7706 + EnumValue7707 + EnumValue7708 + EnumValue7709 + EnumValue7710 + EnumValue7711 + EnumValue7712 + EnumValue7713 +} + +enum Enum394 @Directive42(argument96 : ["stringValue9190"]) @Directive44(argument97 : ["stringValue9191"]) { + EnumValue7714 + EnumValue7715 +} + +enum Enum395 @Directive42(argument96 : ["stringValue9192"]) @Directive44(argument97 : ["stringValue9193"]) { + EnumValue7716 + EnumValue7717 + EnumValue7718 + EnumValue7719 +} + +enum Enum396 @Directive42(argument96 : ["stringValue9202"]) @Directive44(argument97 : ["stringValue9203"]) { + EnumValue7720 + EnumValue7721 + EnumValue7722 +} + +enum Enum397 @Directive42(argument96 : ["stringValue9216"]) @Directive44(argument97 : ["stringValue9217"]) { + EnumValue7723 + EnumValue7724 + EnumValue7725 +} + +enum Enum398 @Directive42(argument96 : ["stringValue9242"]) @Directive44(argument97 : ["stringValue9243"]) { + EnumValue7726 + EnumValue7727 +} + +enum Enum399 @Directive42(argument96 : ["stringValue9260"]) @Directive44(argument97 : ["stringValue9261"]) { + EnumValue7728 + EnumValue7729 + EnumValue7730 +} + +enum Enum4 @Directive19(argument57 : "stringValue72") @Directive22(argument62 : "stringValue71") @Directive44(argument97 : ["stringValue73", "stringValue74"]) { + EnumValue14 + EnumValue15 + EnumValue16 +} + +enum Enum40 @Directive44(argument97 : ["stringValue319"]) { + EnumValue1608 + EnumValue1609 + EnumValue1610 + EnumValue1611 + EnumValue1612 + EnumValue1613 + EnumValue1614 + EnumValue1615 + EnumValue1616 + EnumValue1617 + EnumValue1618 + EnumValue1619 + EnumValue1620 + EnumValue1621 + EnumValue1622 + EnumValue1623 + EnumValue1624 + EnumValue1625 + EnumValue1626 + EnumValue1627 + EnumValue1628 + EnumValue1629 + EnumValue1630 + EnumValue1631 + EnumValue1632 + EnumValue1633 + EnumValue1634 + EnumValue1635 + EnumValue1636 + EnumValue1637 + EnumValue1638 + EnumValue1639 + EnumValue1640 + EnumValue1641 + EnumValue1642 + EnumValue1643 + EnumValue1644 + EnumValue1645 + EnumValue1646 + EnumValue1647 + EnumValue1648 + EnumValue1649 + EnumValue1650 + EnumValue1651 + EnumValue1652 + EnumValue1653 + EnumValue1654 + EnumValue1655 + EnumValue1656 + EnumValue1657 +} + +enum Enum400 @Directive19(argument57 : "stringValue9267") @Directive42(argument96 : ["stringValue9266"]) @Directive44(argument97 : ["stringValue9268"]) { + EnumValue7731 + EnumValue7732 + EnumValue7733 + EnumValue7734 + EnumValue7735 + EnumValue7736 + EnumValue7737 + EnumValue7738 + EnumValue7739 + EnumValue7740 + EnumValue7741 + EnumValue7742 + EnumValue7743 + EnumValue7744 + EnumValue7745 + EnumValue7746 + EnumValue7747 + EnumValue7748 + EnumValue7749 + EnumValue7750 + EnumValue7751 + EnumValue7752 + EnumValue7753 + EnumValue7754 + EnumValue7755 + EnumValue7756 + EnumValue7757 + EnumValue7758 + EnumValue7759 + EnumValue7760 + EnumValue7761 + EnumValue7762 + EnumValue7763 + EnumValue7764 + EnumValue7765 + EnumValue7766 + EnumValue7767 + EnumValue7768 + EnumValue7769 + EnumValue7770 + EnumValue7771 + EnumValue7772 + EnumValue7773 + EnumValue7774 +} + +enum Enum401 @Directive19(argument57 : "stringValue9274") @Directive22(argument62 : "stringValue9273") @Directive44(argument97 : ["stringValue9275", "stringValue9276"]) { + EnumValue7775 + EnumValue7776 +} + +enum Enum402 @Directive42(argument96 : ["stringValue9281"]) @Directive44(argument97 : ["stringValue9282"]) { + EnumValue7777 + EnumValue7778 + EnumValue7779 +} + +enum Enum403 @Directive42(argument96 : ["stringValue9323"]) @Directive44(argument97 : ["stringValue9324"]) { + EnumValue7780 + EnumValue7781 + EnumValue7782 + EnumValue7783 + EnumValue7784 + EnumValue7785 + EnumValue7786 +} + +enum Enum404 @Directive42(argument96 : ["stringValue9345"]) @Directive44(argument97 : ["stringValue9346"]) { + EnumValue7787 + EnumValue7788 +} + +enum Enum405 @Directive19(argument57 : "stringValue9371") @Directive42(argument96 : ["stringValue9370"]) @Directive44(argument97 : ["stringValue9372"]) { + EnumValue7789 + EnumValue7790 + EnumValue7791 + EnumValue7792 @deprecated + EnumValue7793 @deprecated +} + +enum Enum406 @Directive42(argument96 : ["stringValue9401"]) @Directive44(argument97 : ["stringValue9402"]) { + EnumValue7794 + EnumValue7795 + EnumValue7796 + EnumValue7797 +} + +enum Enum407 @Directive19(argument57 : "stringValue9476") @Directive22(argument62 : "stringValue9473") @Directive44(argument97 : ["stringValue9474", "stringValue9475"]) { + EnumValue7798 + EnumValue7799 + EnumValue7800 + EnumValue7801 +} + +enum Enum408 @Directive19(argument57 : "stringValue9515") @Directive22(argument62 : "stringValue9514") @Directive44(argument97 : ["stringValue9516"]) { + EnumValue7802 @deprecated + EnumValue7803 @deprecated + EnumValue7804 @deprecated + EnumValue7805 + EnumValue7806 + EnumValue7807 + EnumValue7808 + EnumValue7809 + EnumValue7810 + EnumValue7811 + EnumValue7812 + EnumValue7813 + EnumValue7814 + EnumValue7815 + EnumValue7816 + EnumValue7817 + EnumValue7818 + EnumValue7819 + EnumValue7820 + EnumValue7821 + EnumValue7822 + EnumValue7823 + EnumValue7824 + EnumValue7825 + EnumValue7826 + EnumValue7827 + EnumValue7828 + EnumValue7829 + EnumValue7830 + EnumValue7831 + EnumValue7832 + EnumValue7833 + EnumValue7834 + EnumValue7835 + EnumValue7836 + EnumValue7837 + EnumValue7838 + EnumValue7839 + EnumValue7840 + EnumValue7841 + EnumValue7842 + EnumValue7843 + EnumValue7844 + EnumValue7845 + EnumValue7846 + EnumValue7847 + EnumValue7848 + EnumValue7849 + EnumValue7850 + EnumValue7851 + EnumValue7852 + EnumValue7853 + EnumValue7854 + EnumValue7855 + EnumValue7856 + EnumValue7857 + EnumValue7858 + EnumValue7859 + EnumValue7860 + EnumValue7861 + EnumValue7862 + EnumValue7863 + EnumValue7864 + EnumValue7865 + EnumValue7866 + EnumValue7867 + EnumValue7868 + EnumValue7869 + EnumValue7870 + EnumValue7871 + EnumValue7872 + EnumValue7873 + EnumValue7874 + EnumValue7875 + EnumValue7876 + EnumValue7877 + EnumValue7878 + EnumValue7879 + EnumValue7880 + EnumValue7881 + EnumValue7882 + EnumValue7883 + EnumValue7884 + EnumValue7885 + EnumValue7886 + EnumValue7887 + EnumValue7888 + EnumValue7889 + EnumValue7890 + EnumValue7891 + EnumValue7892 + EnumValue7893 + EnumValue7894 + EnumValue7895 + EnumValue7896 + EnumValue7897 + EnumValue7898 + EnumValue7899 + EnumValue7900 + EnumValue7901 + EnumValue7902 + EnumValue7903 + EnumValue7904 + EnumValue7905 + EnumValue7906 + EnumValue7907 + EnumValue7908 + EnumValue7909 + EnumValue7910 + EnumValue7911 + EnumValue7912 + EnumValue7913 + EnumValue7914 + EnumValue7915 + EnumValue7916 + EnumValue7917 + EnumValue7918 + EnumValue7919 + EnumValue7920 + EnumValue7921 + EnumValue7922 + EnumValue7923 + EnumValue7924 + EnumValue7925 + EnumValue7926 + EnumValue7927 + EnumValue7928 + EnumValue7929 @deprecated + EnumValue7930 + EnumValue7931 + EnumValue7932 + EnumValue7933 + EnumValue7934 + EnumValue7935 + EnumValue7936 + EnumValue7937 + EnumValue7938 + EnumValue7939 + EnumValue7940 + EnumValue7941 + EnumValue7942 + EnumValue7943 + EnumValue7944 + EnumValue7945 + EnumValue7946 + EnumValue7947 + EnumValue7948 + EnumValue7949 + EnumValue7950 + EnumValue7951 + EnumValue7952 + EnumValue7953 + EnumValue7954 + EnumValue7955 + EnumValue7956 + EnumValue7957 + EnumValue7958 + EnumValue7959 + EnumValue7960 + EnumValue7961 + EnumValue7962 + EnumValue7963 + EnumValue7964 + EnumValue7965 + EnumValue7966 + EnumValue7967 + EnumValue7968 + EnumValue7969 + EnumValue7970 + EnumValue7971 + EnumValue7972 + EnumValue7973 + EnumValue7974 + EnumValue7975 + EnumValue7976 + EnumValue7977 + EnumValue7978 + EnumValue7979 + EnumValue7980 + EnumValue7981 + EnumValue7982 + EnumValue7983 + EnumValue7984 + EnumValue7985 + EnumValue7986 + EnumValue7987 + EnumValue7988 +} + +enum Enum409 @Directive19(argument57 : "stringValue9518") @Directive22(argument62 : "stringValue9517") @Directive44(argument97 : ["stringValue9519"]) { + EnumValue7989 + EnumValue7990 + EnumValue7991 + EnumValue7992 +} + +enum Enum41 @Directive44(argument97 : ["stringValue320"]) { + EnumValue1658 + EnumValue1659 + EnumValue1660 + EnumValue1661 + EnumValue1662 +} + +enum Enum410 @Directive19(argument57 : "stringValue9521") @Directive42(argument96 : ["stringValue9520"]) @Directive44(argument97 : ["stringValue9522"]) { + EnumValue7993 + EnumValue7994 + EnumValue7995 + EnumValue7996 +} + +enum Enum411 @Directive19(argument57 : "stringValue9539") @Directive22(argument62 : "stringValue9538") @Directive44(argument97 : ["stringValue9540", "stringValue9541"]) { + EnumValue7997 + EnumValue7998 +} + +enum Enum412 @Directive22(argument62 : "stringValue9566") @Directive44(argument97 : ["stringValue9567"]) { + EnumValue7999 + EnumValue8000 + EnumValue8001 +} + +enum Enum413 @Directive19(argument57 : "stringValue10152") @Directive22(argument62 : "stringValue10153") @Directive44(argument97 : ["stringValue10154"]) { + EnumValue8002 + EnumValue8003 + EnumValue8004 +} + +enum Enum414 @Directive22(argument62 : "stringValue10155") @Directive44(argument97 : ["stringValue10156"]) { + EnumValue8005 + EnumValue8006 + EnumValue8007 + EnumValue8008 + EnumValue8009 +} + +enum Enum415 @Directive19(argument57 : "stringValue10272") @Directive22(argument62 : "stringValue10271") @Directive44(argument97 : ["stringValue10273", "stringValue10274"]) { + EnumValue8010 + EnumValue8011 +} + +enum Enum416 @Directive19(argument57 : "stringValue10449") @Directive42(argument96 : ["stringValue10448"]) @Directive44(argument97 : ["stringValue10450"]) { + EnumValue8012 + EnumValue8013 + EnumValue8014 +} + +enum Enum417 @Directive44(argument97 : ["stringValue10469"]) { + EnumValue8015 + EnumValue8016 + EnumValue8017 +} + +enum Enum418 @Directive44(argument97 : ["stringValue10470"]) { + EnumValue8018 + EnumValue8019 + EnumValue8020 + EnumValue8021 + EnumValue8022 + EnumValue8023 + EnumValue8024 + EnumValue8025 +} + +enum Enum419 @Directive44(argument97 : ["stringValue10488"]) { + EnumValue8026 + EnumValue8027 + EnumValue8028 +} + +enum Enum42 @Directive44(argument97 : ["stringValue321"]) { + EnumValue1663 + EnumValue1664 + EnumValue1665 + EnumValue1666 + EnumValue1667 + EnumValue1668 + EnumValue1669 + EnumValue1670 + EnumValue1671 +} + +enum Enum420 @Directive44(argument97 : ["stringValue10490"]) { + EnumValue8029 + EnumValue8030 + EnumValue8031 + EnumValue8032 +} + +enum Enum421 @Directive44(argument97 : ["stringValue10491"]) { + EnumValue8033 + EnumValue8034 + EnumValue8035 +} + +enum Enum422 @Directive44(argument97 : ["stringValue10494"]) { + EnumValue8036 + EnumValue8037 + EnumValue8038 + EnumValue8039 + EnumValue8040 + EnumValue8041 + EnumValue8042 + EnumValue8043 + EnumValue8044 + EnumValue8045 + EnumValue8046 + EnumValue8047 + EnumValue8048 + EnumValue8049 + EnumValue8050 + EnumValue8051 + EnumValue8052 + EnumValue8053 + EnumValue8054 + EnumValue8055 + EnumValue8056 + EnumValue8057 + EnumValue8058 + EnumValue8059 + EnumValue8060 + EnumValue8061 + EnumValue8062 + EnumValue8063 + EnumValue8064 + EnumValue8065 + EnumValue8066 + EnumValue8067 + EnumValue8068 + EnumValue8069 + EnumValue8070 + EnumValue8071 + EnumValue8072 + EnumValue8073 + EnumValue8074 + EnumValue8075 + EnumValue8076 + EnumValue8077 + EnumValue8078 + EnumValue8079 + EnumValue8080 + EnumValue8081 + EnumValue8082 + EnumValue8083 + EnumValue8084 + EnumValue8085 +} + +enum Enum423 @Directive44(argument97 : ["stringValue10495"]) { + EnumValue8086 + EnumValue8087 + EnumValue8088 + EnumValue8089 + EnumValue8090 +} + +enum Enum424 @Directive44(argument97 : ["stringValue10496"]) { + EnumValue8091 + EnumValue8092 + EnumValue8093 + EnumValue8094 + EnumValue8095 + EnumValue8096 + EnumValue8097 + EnumValue8098 + EnumValue8099 +} + +enum Enum425 @Directive44(argument97 : ["stringValue10501"]) { + EnumValue8100 + EnumValue8101 + EnumValue8102 +} + +enum Enum426 @Directive44(argument97 : ["stringValue10513"]) { + EnumValue8103 + EnumValue8104 + EnumValue8105 + EnumValue8106 + EnumValue8107 + EnumValue8108 + EnumValue8109 +} + +enum Enum427 @Directive44(argument97 : ["stringValue10516"]) { + EnumValue8110 + EnumValue8111 + EnumValue8112 +} + +enum Enum428 @Directive44(argument97 : ["stringValue10536"]) { + EnumValue8113 + EnumValue8114 + EnumValue8115 + EnumValue8116 +} + +enum Enum429 @Directive44(argument97 : ["stringValue10539"]) { + EnumValue8117 + EnumValue8118 + EnumValue8119 + EnumValue8120 + EnumValue8121 + EnumValue8122 + EnumValue8123 + EnumValue8124 + EnumValue8125 + EnumValue8126 + EnumValue8127 + EnumValue8128 + EnumValue8129 + EnumValue8130 + EnumValue8131 + EnumValue8132 + EnumValue8133 + EnumValue8134 + EnumValue8135 + EnumValue8136 + EnumValue8137 + EnumValue8138 + EnumValue8139 + EnumValue8140 + EnumValue8141 + EnumValue8142 + EnumValue8143 + EnumValue8144 + EnumValue8145 + EnumValue8146 + EnumValue8147 + EnumValue8148 + EnumValue8149 + EnumValue8150 + EnumValue8151 + EnumValue8152 + EnumValue8153 + EnumValue8154 + EnumValue8155 + EnumValue8156 + EnumValue8157 + EnumValue8158 + EnumValue8159 + EnumValue8160 + EnumValue8161 + EnumValue8162 + EnumValue8163 + EnumValue8164 + EnumValue8165 + EnumValue8166 + EnumValue8167 + EnumValue8168 + EnumValue8169 + EnumValue8170 + EnumValue8171 + EnumValue8172 + EnumValue8173 + EnumValue8174 + EnumValue8175 + EnumValue8176 + EnumValue8177 + EnumValue8178 + EnumValue8179 + EnumValue8180 + EnumValue8181 + EnumValue8182 + EnumValue8183 + EnumValue8184 + EnumValue8185 + EnumValue8186 + EnumValue8187 + EnumValue8188 + EnumValue8189 + EnumValue8190 + EnumValue8191 + EnumValue8192 + EnumValue8193 + EnumValue8194 + EnumValue8195 + EnumValue8196 + EnumValue8197 + EnumValue8198 + EnumValue8199 + EnumValue8200 + EnumValue8201 + EnumValue8202 + EnumValue8203 + EnumValue8204 + EnumValue8205 + EnumValue8206 + EnumValue8207 + EnumValue8208 + EnumValue8209 + EnumValue8210 + EnumValue8211 + EnumValue8212 + EnumValue8213 + EnumValue8214 + EnumValue8215 + EnumValue8216 + EnumValue8217 + EnumValue8218 + EnumValue8219 + EnumValue8220 + EnumValue8221 + EnumValue8222 + EnumValue8223 + EnumValue8224 + EnumValue8225 + EnumValue8226 + EnumValue8227 + EnumValue8228 + EnumValue8229 + EnumValue8230 + EnumValue8231 + EnumValue8232 + EnumValue8233 + EnumValue8234 + EnumValue8235 + EnumValue8236 + EnumValue8237 + EnumValue8238 + EnumValue8239 + EnumValue8240 + EnumValue8241 + EnumValue8242 + EnumValue8243 + EnumValue8244 + EnumValue8245 + EnumValue8246 + EnumValue8247 + EnumValue8248 + EnumValue8249 + EnumValue8250 + EnumValue8251 + EnumValue8252 + EnumValue8253 + EnumValue8254 + EnumValue8255 + EnumValue8256 + EnumValue8257 + EnumValue8258 + EnumValue8259 + EnumValue8260 + EnumValue8261 + EnumValue8262 + EnumValue8263 + EnumValue8264 + EnumValue8265 + EnumValue8266 + EnumValue8267 + EnumValue8268 + EnumValue8269 + EnumValue8270 + EnumValue8271 + EnumValue8272 + EnumValue8273 + EnumValue8274 + EnumValue8275 + EnumValue8276 + EnumValue8277 + EnumValue8278 + EnumValue8279 + EnumValue8280 + EnumValue8281 + EnumValue8282 + EnumValue8283 + EnumValue8284 + EnumValue8285 + EnumValue8286 + EnumValue8287 + EnumValue8288 + EnumValue8289 + EnumValue8290 + EnumValue8291 + EnumValue8292 + EnumValue8293 + EnumValue8294 + EnumValue8295 + EnumValue8296 + EnumValue8297 + EnumValue8298 + EnumValue8299 + EnumValue8300 + EnumValue8301 + EnumValue8302 + EnumValue8303 + EnumValue8304 + EnumValue8305 + EnumValue8306 + EnumValue8307 + EnumValue8308 + EnumValue8309 + EnumValue8310 + EnumValue8311 + EnumValue8312 + EnumValue8313 + EnumValue8314 + EnumValue8315 + EnumValue8316 + EnumValue8317 + EnumValue8318 + EnumValue8319 + EnumValue8320 + EnumValue8321 + EnumValue8322 + EnumValue8323 + EnumValue8324 + EnumValue8325 + EnumValue8326 + EnumValue8327 + EnumValue8328 + EnumValue8329 + EnumValue8330 + EnumValue8331 + EnumValue8332 + EnumValue8333 + EnumValue8334 + EnumValue8335 + EnumValue8336 + EnumValue8337 + EnumValue8338 + EnumValue8339 + EnumValue8340 + EnumValue8341 + EnumValue8342 + EnumValue8343 + EnumValue8344 + EnumValue8345 + EnumValue8346 + EnumValue8347 + EnumValue8348 + EnumValue8349 + EnumValue8350 + EnumValue8351 + EnumValue8352 + EnumValue8353 + EnumValue8354 + EnumValue8355 + EnumValue8356 + EnumValue8357 + EnumValue8358 + EnumValue8359 + EnumValue8360 + EnumValue8361 + EnumValue8362 + EnumValue8363 + EnumValue8364 + EnumValue8365 + EnumValue8366 + EnumValue8367 + EnumValue8368 + EnumValue8369 + EnumValue8370 + EnumValue8371 + EnumValue8372 + EnumValue8373 + EnumValue8374 + EnumValue8375 + EnumValue8376 + EnumValue8377 + EnumValue8378 + EnumValue8379 + EnumValue8380 + EnumValue8381 + EnumValue8382 + EnumValue8383 + EnumValue8384 + EnumValue8385 + EnumValue8386 + EnumValue8387 + EnumValue8388 + EnumValue8389 + EnumValue8390 + EnumValue8391 + EnumValue8392 + EnumValue8393 + EnumValue8394 + EnumValue8395 + EnumValue8396 + EnumValue8397 + EnumValue8398 + EnumValue8399 + EnumValue8400 + EnumValue8401 + EnumValue8402 + EnumValue8403 + EnumValue8404 + EnumValue8405 + EnumValue8406 + EnumValue8407 + EnumValue8408 + EnumValue8409 + EnumValue8410 + EnumValue8411 + EnumValue8412 + EnumValue8413 + EnumValue8414 + EnumValue8415 + EnumValue8416 + EnumValue8417 + EnumValue8418 + EnumValue8419 + EnumValue8420 + EnumValue8421 + EnumValue8422 + EnumValue8423 + EnumValue8424 + EnumValue8425 + EnumValue8426 + EnumValue8427 + EnumValue8428 + EnumValue8429 + EnumValue8430 + EnumValue8431 + EnumValue8432 + EnumValue8433 + EnumValue8434 + EnumValue8435 + EnumValue8436 + EnumValue8437 + EnumValue8438 + EnumValue8439 + EnumValue8440 + EnumValue8441 + EnumValue8442 + EnumValue8443 + EnumValue8444 + EnumValue8445 + EnumValue8446 + EnumValue8447 + EnumValue8448 + EnumValue8449 + EnumValue8450 + EnumValue8451 + EnumValue8452 + EnumValue8453 + EnumValue8454 + EnumValue8455 + EnumValue8456 + EnumValue8457 + EnumValue8458 + EnumValue8459 + EnumValue8460 + EnumValue8461 + EnumValue8462 + EnumValue8463 + EnumValue8464 + EnumValue8465 + EnumValue8466 + EnumValue8467 + EnumValue8468 + EnumValue8469 + EnumValue8470 + EnumValue8471 + EnumValue8472 + EnumValue8473 + EnumValue8474 + EnumValue8475 + EnumValue8476 + EnumValue8477 + EnumValue8478 + EnumValue8479 + EnumValue8480 + EnumValue8481 + EnumValue8482 + EnumValue8483 + EnumValue8484 + EnumValue8485 + EnumValue8486 + EnumValue8487 + EnumValue8488 + EnumValue8489 + EnumValue8490 + EnumValue8491 + EnumValue8492 + EnumValue8493 + EnumValue8494 + EnumValue8495 + EnumValue8496 + EnumValue8497 + EnumValue8498 + EnumValue8499 + EnumValue8500 + EnumValue8501 + EnumValue8502 + EnumValue8503 + EnumValue8504 + EnumValue8505 + EnumValue8506 + EnumValue8507 + EnumValue8508 + EnumValue8509 + EnumValue8510 + EnumValue8511 + EnumValue8512 + EnumValue8513 + EnumValue8514 + EnumValue8515 + EnumValue8516 + EnumValue8517 + EnumValue8518 + EnumValue8519 + EnumValue8520 + EnumValue8521 + EnumValue8522 + EnumValue8523 + EnumValue8524 + EnumValue8525 + EnumValue8526 + EnumValue8527 + EnumValue8528 + EnumValue8529 + EnumValue8530 + EnumValue8531 + EnumValue8532 + EnumValue8533 + EnumValue8534 + EnumValue8535 + EnumValue8536 + EnumValue8537 + EnumValue8538 + EnumValue8539 + EnumValue8540 + EnumValue8541 + EnumValue8542 + EnumValue8543 + EnumValue8544 + EnumValue8545 + EnumValue8546 + EnumValue8547 + EnumValue8548 + EnumValue8549 + EnumValue8550 + EnumValue8551 + EnumValue8552 + EnumValue8553 + EnumValue8554 + EnumValue8555 + EnumValue8556 + EnumValue8557 + EnumValue8558 + EnumValue8559 + EnumValue8560 + EnumValue8561 + EnumValue8562 + EnumValue8563 + EnumValue8564 + EnumValue8565 + EnumValue8566 + EnumValue8567 + EnumValue8568 + EnumValue8569 + EnumValue8570 + EnumValue8571 + EnumValue8572 + EnumValue8573 + EnumValue8574 + EnumValue8575 + EnumValue8576 + EnumValue8577 + EnumValue8578 + EnumValue8579 + EnumValue8580 + EnumValue8581 + EnumValue8582 + EnumValue8583 + EnumValue8584 + EnumValue8585 + EnumValue8586 + EnumValue8587 + EnumValue8588 + EnumValue8589 + EnumValue8590 + EnumValue8591 + EnumValue8592 + EnumValue8593 + EnumValue8594 + EnumValue8595 + EnumValue8596 + EnumValue8597 + EnumValue8598 + EnumValue8599 + EnumValue8600 + EnumValue8601 + EnumValue8602 + EnumValue8603 + EnumValue8604 + EnumValue8605 + EnumValue8606 + EnumValue8607 + EnumValue8608 + EnumValue8609 + EnumValue8610 + EnumValue8611 + EnumValue8612 + EnumValue8613 + EnumValue8614 + EnumValue8615 + EnumValue8616 + EnumValue8617 + EnumValue8618 + EnumValue8619 + EnumValue8620 + EnumValue8621 + EnumValue8622 + EnumValue8623 + EnumValue8624 + EnumValue8625 + EnumValue8626 + EnumValue8627 + EnumValue8628 + EnumValue8629 + EnumValue8630 + EnumValue8631 + EnumValue8632 + EnumValue8633 + EnumValue8634 + EnumValue8635 + EnumValue8636 + EnumValue8637 + EnumValue8638 + EnumValue8639 + EnumValue8640 + EnumValue8641 + EnumValue8642 + EnumValue8643 + EnumValue8644 + EnumValue8645 + EnumValue8646 + EnumValue8647 + EnumValue8648 + EnumValue8649 + EnumValue8650 + EnumValue8651 + EnumValue8652 + EnumValue8653 + EnumValue8654 + EnumValue8655 + EnumValue8656 + EnumValue8657 + EnumValue8658 + EnumValue8659 + EnumValue8660 + EnumValue8661 + EnumValue8662 + EnumValue8663 + EnumValue8664 + EnumValue8665 + EnumValue8666 + EnumValue8667 + EnumValue8668 + EnumValue8669 + EnumValue8670 + EnumValue8671 + EnumValue8672 + EnumValue8673 + EnumValue8674 + EnumValue8675 + EnumValue8676 + EnumValue8677 + EnumValue8678 + EnumValue8679 + EnumValue8680 + EnumValue8681 + EnumValue8682 + EnumValue8683 + EnumValue8684 + EnumValue8685 + EnumValue8686 + EnumValue8687 + EnumValue8688 + EnumValue8689 + EnumValue8690 + EnumValue8691 + EnumValue8692 + EnumValue8693 + EnumValue8694 + EnumValue8695 + EnumValue8696 + EnumValue8697 + EnumValue8698 + EnumValue8699 + EnumValue8700 + EnumValue8701 + EnumValue8702 + EnumValue8703 + EnumValue8704 + EnumValue8705 + EnumValue8706 + EnumValue8707 + EnumValue8708 + EnumValue8709 + EnumValue8710 + EnumValue8711 + EnumValue8712 + EnumValue8713 + EnumValue8714 + EnumValue8715 + EnumValue8716 + EnumValue8717 + EnumValue8718 + EnumValue8719 + EnumValue8720 + EnumValue8721 + EnumValue8722 + EnumValue8723 + EnumValue8724 + EnumValue8725 + EnumValue8726 + EnumValue8727 + EnumValue8728 + EnumValue8729 + EnumValue8730 + EnumValue8731 + EnumValue8732 + EnumValue8733 + EnumValue8734 + EnumValue8735 + EnumValue8736 + EnumValue8737 + EnumValue8738 + EnumValue8739 + EnumValue8740 + EnumValue8741 + EnumValue8742 + EnumValue8743 + EnumValue8744 + EnumValue8745 + EnumValue8746 + EnumValue8747 + EnumValue8748 + EnumValue8749 + EnumValue8750 + EnumValue8751 + EnumValue8752 + EnumValue8753 + EnumValue8754 + EnumValue8755 + EnumValue8756 + EnumValue8757 + EnumValue8758 + EnumValue8759 + EnumValue8760 + EnumValue8761 + EnumValue8762 + EnumValue8763 + EnumValue8764 + EnumValue8765 + EnumValue8766 + EnumValue8767 + EnumValue8768 + EnumValue8769 + EnumValue8770 + EnumValue8771 + EnumValue8772 + EnumValue8773 + EnumValue8774 + EnumValue8775 + EnumValue8776 + EnumValue8777 +} + +enum Enum43 @Directive44(argument97 : ["stringValue326"]) { + EnumValue1672 + EnumValue1673 + EnumValue1674 +} + +enum Enum430 @Directive44(argument97 : ["stringValue10544"]) { + EnumValue8778 + EnumValue8779 + EnumValue8780 + EnumValue8781 + EnumValue8782 + EnumValue8783 + EnumValue8784 + EnumValue8785 + EnumValue8786 + EnumValue8787 + EnumValue8788 +} + +enum Enum431 @Directive44(argument97 : ["stringValue10549"]) { + EnumValue8789 + EnumValue8790 + EnumValue8791 + EnumValue8792 + EnumValue8793 +} + +enum Enum432 @Directive44(argument97 : ["stringValue10638"]) { + EnumValue8794 + EnumValue8795 + EnumValue8796 + EnumValue8797 + EnumValue8798 + EnumValue8799 + EnumValue8800 +} + +enum Enum433 @Directive22(argument62 : "stringValue10725") @Directive44(argument97 : ["stringValue10726", "stringValue10727"]) { + EnumValue8801 + EnumValue8802 + EnumValue8803 + EnumValue8804 +} + +enum Enum434 @Directive19(argument57 : "stringValue10746") @Directive22(argument62 : "stringValue10745") @Directive44(argument97 : ["stringValue10747", "stringValue10748"]) { + EnumValue8805 + EnumValue8806 + EnumValue8807 +} + +enum Enum435 @Directive19(argument57 : "stringValue10751") @Directive22(argument62 : "stringValue10750") @Directive44(argument97 : ["stringValue10752", "stringValue10753"]) { + EnumValue8808 + EnumValue8809 +} + +enum Enum436 @Directive22(argument62 : "stringValue10799") @Directive44(argument97 : ["stringValue10800", "stringValue10801"]) { + EnumValue8810 + EnumValue8811 + EnumValue8812 + EnumValue8813 +} + +enum Enum437 @Directive22(argument62 : "stringValue10812") @Directive44(argument97 : ["stringValue10813", "stringValue10814"]) { + EnumValue8814 + EnumValue8815 +} + +enum Enum438 @Directive22(argument62 : "stringValue10875") @Directive44(argument97 : ["stringValue10876", "stringValue10877"]) { + EnumValue8816 + EnumValue8817 + EnumValue8818 + EnumValue8819 + EnumValue8820 +} + +enum Enum439 @Directive22(argument62 : "stringValue10941") @Directive44(argument97 : ["stringValue10942", "stringValue10943"]) { + EnumValue8821 + EnumValue8822 + EnumValue8823 + EnumValue8824 + EnumValue8825 + EnumValue8826 + EnumValue8827 + EnumValue8828 +} + +enum Enum44 @Directive44(argument97 : ["stringValue334"]) { + EnumValue1675 + EnumValue1676 + EnumValue1677 +} + +enum Enum440 @Directive19(argument57 : "stringValue10996") @Directive22(argument62 : "stringValue10997") @Directive44(argument97 : ["stringValue10998", "stringValue10999"]) { + EnumValue8829 + EnumValue8830 + EnumValue8831 + EnumValue8832 + EnumValue8833 + EnumValue8834 + EnumValue8835 + EnumValue8836 + EnumValue8837 + EnumValue8838 + EnumValue8839 + EnumValue8840 + EnumValue8841 + EnumValue8842 + EnumValue8843 + EnumValue8844 + EnumValue8845 + EnumValue8846 + EnumValue8847 + EnumValue8848 +} + +enum Enum441 @Directive22(argument62 : "stringValue11001") @Directive44(argument97 : ["stringValue11002", "stringValue11003"]) { + EnumValue8849 + EnumValue8850 + EnumValue8851 + EnumValue8852 +} + +enum Enum442 @Directive22(argument62 : "stringValue11032") @Directive44(argument97 : ["stringValue11033", "stringValue11034"]) { + EnumValue8853 + EnumValue8854 + EnumValue8855 + EnumValue8856 + EnumValue8857 + EnumValue8858 @deprecated + EnumValue8859 + EnumValue8860 +} + +enum Enum443 @Directive22(argument62 : "stringValue11045") @Directive44(argument97 : ["stringValue11046", "stringValue11047"]) { + EnumValue8861 + EnumValue8862 + EnumValue8863 +} + +enum Enum444 @Directive22(argument62 : "stringValue11073") @Directive44(argument97 : ["stringValue11074", "stringValue11075"]) { + EnumValue8864 + EnumValue8865 + EnumValue8866 +} + +enum Enum445 @Directive19(argument57 : "stringValue11171") @Directive42(argument96 : ["stringValue11170"]) @Directive44(argument97 : ["stringValue11172"]) { + EnumValue8867 + EnumValue8868 + EnumValue8869 +} + +enum Enum446 @Directive19(argument57 : "stringValue11195") @Directive22(argument62 : "stringValue11194") @Directive44(argument97 : ["stringValue11196", "stringValue11197"]) { + EnumValue8870 + EnumValue8871 + EnumValue8872 + EnumValue8873 + EnumValue8874 +} + +enum Enum447 @Directive19(argument57 : "stringValue11199") @Directive22(argument62 : "stringValue11198") @Directive44(argument97 : ["stringValue11200"]) { + EnumValue8875 + EnumValue8876 + EnumValue8877 +} + +enum Enum448 @Directive19(argument57 : "stringValue11202") @Directive22(argument62 : "stringValue11201") @Directive44(argument97 : ["stringValue11203"]) { + EnumValue8878 + EnumValue8879 + EnumValue8880 +} + +enum Enum449 @Directive19(argument57 : "stringValue11239") @Directive22(argument62 : "stringValue11238") @Directive44(argument97 : ["stringValue11240"]) { + EnumValue8881 + EnumValue8882 + EnumValue8883 + EnumValue8884 +} + +enum Enum45 @Directive44(argument97 : ["stringValue335"]) { + EnumValue1678 + EnumValue1679 + EnumValue1680 + EnumValue1681 + EnumValue1682 + EnumValue1683 + EnumValue1684 + EnumValue1685 +} + +enum Enum450 @Directive19(argument57 : "stringValue11289") @Directive22(argument62 : "stringValue11288") @Directive44(argument97 : ["stringValue11290"]) { + EnumValue8885 + EnumValue8886 +} + +enum Enum451 @Directive19(argument57 : "stringValue11317") @Directive22(argument62 : "stringValue11316") @Directive44(argument97 : ["stringValue11318"]) { + EnumValue8887 + EnumValue8888 +} + +enum Enum452 @Directive19(argument57 : "stringValue11328") @Directive22(argument62 : "stringValue11327") @Directive44(argument97 : ["stringValue11329"]) { + EnumValue8889 + EnumValue8890 + EnumValue8891 + EnumValue8892 + EnumValue8893 +} + +enum Enum453 @Directive19(argument57 : "stringValue11334") @Directive22(argument62 : "stringValue11333") @Directive44(argument97 : ["stringValue11335"]) { + EnumValue8894 + EnumValue8895 +} + +enum Enum454 @Directive19(argument57 : "stringValue11339") @Directive22(argument62 : "stringValue11340") @Directive44(argument97 : ["stringValue11341", "stringValue11342", "stringValue11343"]) { + EnumValue8896 + EnumValue8897 + EnumValue8898 + EnumValue8899 + EnumValue8900 + EnumValue8901 + EnumValue8902 + EnumValue8903 + EnumValue8904 + EnumValue8905 + EnumValue8906 + EnumValue8907 + EnumValue8908 + EnumValue8909 + EnumValue8910 + EnumValue8911 + EnumValue8912 + EnumValue8913 + EnumValue8914 + EnumValue8915 + EnumValue8916 + EnumValue8917 + EnumValue8918 + EnumValue8919 + EnumValue8920 + EnumValue8921 + EnumValue8922 + EnumValue8923 + EnumValue8924 + EnumValue8925 + EnumValue8926 + EnumValue8927 + EnumValue8928 + EnumValue8929 + EnumValue8930 + EnumValue8931 + EnumValue8932 + EnumValue8933 + EnumValue8934 + EnumValue8935 + EnumValue8936 + EnumValue8937 + EnumValue8938 + EnumValue8939 + EnumValue8940 + EnumValue8941 + EnumValue8942 + EnumValue8943 + EnumValue8944 + EnumValue8945 + EnumValue8946 + EnumValue8947 + EnumValue8948 + EnumValue8949 + EnumValue8950 + EnumValue8951 + EnumValue8952 + EnumValue8953 + EnumValue8954 + EnumValue8955 + EnumValue8956 + EnumValue8957 + EnumValue8958 + EnumValue8959 + EnumValue8960 + EnumValue8961 + EnumValue8962 + EnumValue8963 + EnumValue8964 + EnumValue8965 + EnumValue8966 + EnumValue8967 + EnumValue8968 + EnumValue8969 + EnumValue8970 + EnumValue8971 + EnumValue8972 + EnumValue8973 + EnumValue8974 + EnumValue8975 + EnumValue8976 + EnumValue8977 + EnumValue8978 + EnumValue8979 + EnumValue8980 + EnumValue8981 + EnumValue8982 + EnumValue8983 + EnumValue8984 + EnumValue8985 + EnumValue8986 + EnumValue8987 + EnumValue8988 + EnumValue8989 + EnumValue8990 + EnumValue8991 + EnumValue8992 + EnumValue8993 + EnumValue8994 + EnumValue8995 + EnumValue8996 + EnumValue8997 + EnumValue8998 + EnumValue8999 + EnumValue9000 + EnumValue9001 + EnumValue9002 + EnumValue9003 + EnumValue9004 + EnumValue9005 + EnumValue9006 + EnumValue9007 + EnumValue9008 + EnumValue9009 + EnumValue9010 + EnumValue9011 + EnumValue9012 + EnumValue9013 + EnumValue9014 + EnumValue9015 + EnumValue9016 + EnumValue9017 + EnumValue9018 + EnumValue9019 + EnumValue9020 + EnumValue9021 + EnumValue9022 + EnumValue9023 + EnumValue9024 + EnumValue9025 + EnumValue9026 + EnumValue9027 + EnumValue9028 + EnumValue9029 + EnumValue9030 + EnumValue9031 + EnumValue9032 + EnumValue9033 + EnumValue9034 + EnumValue9035 + EnumValue9036 + EnumValue9037 + EnumValue9038 + EnumValue9039 + EnumValue9040 + EnumValue9041 + EnumValue9042 + EnumValue9043 + EnumValue9044 + EnumValue9045 + EnumValue9046 + EnumValue9047 + EnumValue9048 + EnumValue9049 + EnumValue9050 + EnumValue9051 + EnumValue9052 + EnumValue9053 + EnumValue9054 + EnumValue9055 + EnumValue9056 + EnumValue9057 + EnumValue9058 + EnumValue9059 + EnumValue9060 + EnumValue9061 + EnumValue9062 + EnumValue9063 + EnumValue9064 + EnumValue9065 + EnumValue9066 + EnumValue9067 + EnumValue9068 + EnumValue9069 + EnumValue9070 + EnumValue9071 + EnumValue9072 + EnumValue9073 + EnumValue9074 + EnumValue9075 + EnumValue9076 + EnumValue9077 + EnumValue9078 + EnumValue9079 + EnumValue9080 + EnumValue9081 + EnumValue9082 + EnumValue9083 + EnumValue9084 + EnumValue9085 + EnumValue9086 + EnumValue9087 + EnumValue9088 + EnumValue9089 + EnumValue9090 + EnumValue9091 + EnumValue9092 + EnumValue9093 + EnumValue9094 + EnumValue9095 + EnumValue9096 + EnumValue9097 + EnumValue9098 + EnumValue9099 + EnumValue9100 + EnumValue9101 + EnumValue9102 + EnumValue9103 + EnumValue9104 + EnumValue9105 + EnumValue9106 + EnumValue9107 + EnumValue9108 + EnumValue9109 + EnumValue9110 + EnumValue9111 + EnumValue9112 + EnumValue9113 + EnumValue9114 + EnumValue9115 + EnumValue9116 + EnumValue9117 + EnumValue9118 + EnumValue9119 + EnumValue9120 + EnumValue9121 + EnumValue9122 + EnumValue9123 + EnumValue9124 + EnumValue9125 + EnumValue9126 + EnumValue9127 + EnumValue9128 + EnumValue9129 + EnumValue9130 + EnumValue9131 + EnumValue9132 + EnumValue9133 + EnumValue9134 + EnumValue9135 + EnumValue9136 + EnumValue9137 + EnumValue9138 + EnumValue9139 + EnumValue9140 + EnumValue9141 + EnumValue9142 + EnumValue9143 + EnumValue9144 + EnumValue9145 + EnumValue9146 + EnumValue9147 + EnumValue9148 + EnumValue9149 + EnumValue9150 + EnumValue9151 + EnumValue9152 + EnumValue9153 + EnumValue9154 + EnumValue9155 + EnumValue9156 + EnumValue9157 + EnumValue9158 + EnumValue9159 + EnumValue9160 + EnumValue9161 + EnumValue9162 + EnumValue9163 + EnumValue9164 + EnumValue9165 + EnumValue9166 + EnumValue9167 + EnumValue9168 + EnumValue9169 + EnumValue9170 + EnumValue9171 + EnumValue9172 + EnumValue9173 + EnumValue9174 + EnumValue9175 + EnumValue9176 + EnumValue9177 + EnumValue9178 + EnumValue9179 + EnumValue9180 + EnumValue9181 + EnumValue9182 + EnumValue9183 + EnumValue9184 + EnumValue9185 + EnumValue9186 + EnumValue9187 + EnumValue9188 + EnumValue9189 + EnumValue9190 + EnumValue9191 + EnumValue9192 + EnumValue9193 + EnumValue9194 + EnumValue9195 + EnumValue9196 + EnumValue9197 + EnumValue9198 + EnumValue9199 + EnumValue9200 + EnumValue9201 + EnumValue9202 + EnumValue9203 + EnumValue9204 + EnumValue9205 + EnumValue9206 + EnumValue9207 + EnumValue9208 + EnumValue9209 + EnumValue9210 + EnumValue9211 + EnumValue9212 + EnumValue9213 + EnumValue9214 + EnumValue9215 + EnumValue9216 + EnumValue9217 + EnumValue9218 + EnumValue9219 + EnumValue9220 + EnumValue9221 + EnumValue9222 + EnumValue9223 + EnumValue9224 + EnumValue9225 + EnumValue9226 + EnumValue9227 + EnumValue9228 + EnumValue9229 + EnumValue9230 + EnumValue9231 + EnumValue9232 + EnumValue9233 + EnumValue9234 + EnumValue9235 + EnumValue9236 + EnumValue9237 + EnumValue9238 + EnumValue9239 + EnumValue9240 + EnumValue9241 + EnumValue9242 + EnumValue9243 + EnumValue9244 + EnumValue9245 + EnumValue9246 + EnumValue9247 + EnumValue9248 + EnumValue9249 + EnumValue9250 + EnumValue9251 + EnumValue9252 + EnumValue9253 + EnumValue9254 + EnumValue9255 + EnumValue9256 + EnumValue9257 + EnumValue9258 + EnumValue9259 + EnumValue9260 + EnumValue9261 + EnumValue9262 + EnumValue9263 + EnumValue9264 + EnumValue9265 + EnumValue9266 + EnumValue9267 + EnumValue9268 + EnumValue9269 + EnumValue9270 + EnumValue9271 + EnumValue9272 + EnumValue9273 + EnumValue9274 + EnumValue9275 + EnumValue9276 + EnumValue9277 + EnumValue9278 + EnumValue9279 + EnumValue9280 + EnumValue9281 + EnumValue9282 + EnumValue9283 + EnumValue9284 + EnumValue9285 + EnumValue9286 + EnumValue9287 + EnumValue9288 + EnumValue9289 + EnumValue9290 + EnumValue9291 + EnumValue9292 + EnumValue9293 + EnumValue9294 + EnumValue9295 + EnumValue9296 + EnumValue9297 + EnumValue9298 + EnumValue9299 + EnumValue9300 + EnumValue9301 + EnumValue9302 + EnumValue9303 + EnumValue9304 + EnumValue9305 + EnumValue9306 + EnumValue9307 + EnumValue9308 + EnumValue9309 + EnumValue9310 + EnumValue9311 + EnumValue9312 + EnumValue9313 + EnumValue9314 + EnumValue9315 + EnumValue9316 + EnumValue9317 + EnumValue9318 + EnumValue9319 + EnumValue9320 + EnumValue9321 + EnumValue9322 + EnumValue9323 + EnumValue9324 + EnumValue9325 + EnumValue9326 + EnumValue9327 + EnumValue9328 + EnumValue9329 + EnumValue9330 + EnumValue9331 + EnumValue9332 + EnumValue9333 + EnumValue9334 + EnumValue9335 + EnumValue9336 + EnumValue9337 + EnumValue9338 + EnumValue9339 + EnumValue9340 + EnumValue9341 + EnumValue9342 + EnumValue9343 + EnumValue9344 + EnumValue9345 + EnumValue9346 + EnumValue9347 + EnumValue9348 + EnumValue9349 + EnumValue9350 + EnumValue9351 + EnumValue9352 + EnumValue9353 + EnumValue9354 + EnumValue9355 + EnumValue9356 + EnumValue9357 + EnumValue9358 + EnumValue9359 + EnumValue9360 + EnumValue9361 + EnumValue9362 + EnumValue9363 + EnumValue9364 + EnumValue9365 + EnumValue9366 + EnumValue9367 + EnumValue9368 + EnumValue9369 + EnumValue9370 + EnumValue9371 + EnumValue9372 + EnumValue9373 + EnumValue9374 + EnumValue9375 + EnumValue9376 + EnumValue9377 + EnumValue9378 + EnumValue9379 + EnumValue9380 + EnumValue9381 + EnumValue9382 + EnumValue9383 + EnumValue9384 + EnumValue9385 + EnumValue9386 + EnumValue9387 + EnumValue9388 + EnumValue9389 + EnumValue9390 + EnumValue9391 + EnumValue9392 + EnumValue9393 + EnumValue9394 + EnumValue9395 + EnumValue9396 + EnumValue9397 + EnumValue9398 + EnumValue9399 + EnumValue9400 + EnumValue9401 + EnumValue9402 + EnumValue9403 + EnumValue9404 + EnumValue9405 + EnumValue9406 + EnumValue9407 + EnumValue9408 + EnumValue9409 + EnumValue9410 + EnumValue9411 + EnumValue9412 + EnumValue9413 + EnumValue9414 + EnumValue9415 + EnumValue9416 + EnumValue9417 + EnumValue9418 + EnumValue9419 + EnumValue9420 + EnumValue9421 + EnumValue9422 + EnumValue9423 + EnumValue9424 + EnumValue9425 + EnumValue9426 + EnumValue9427 + EnumValue9428 + EnumValue9429 + EnumValue9430 + EnumValue9431 + EnumValue9432 + EnumValue9433 + EnumValue9434 + EnumValue9435 + EnumValue9436 + EnumValue9437 + EnumValue9438 + EnumValue9439 + EnumValue9440 + EnumValue9441 + EnumValue9442 + EnumValue9443 + EnumValue9444 + EnumValue9445 + EnumValue9446 + EnumValue9447 + EnumValue9448 + EnumValue9449 + EnumValue9450 + EnumValue9451 + EnumValue9452 + EnumValue9453 + EnumValue9454 + EnumValue9455 + EnumValue9456 + EnumValue9457 + EnumValue9458 + EnumValue9459 + EnumValue9460 + EnumValue9461 + EnumValue9462 + EnumValue9463 + EnumValue9464 + EnumValue9465 + EnumValue9466 + EnumValue9467 + EnumValue9468 + EnumValue9469 + EnumValue9470 + EnumValue9471 + EnumValue9472 + EnumValue9473 + EnumValue9474 + EnumValue9475 + EnumValue9476 + EnumValue9477 + EnumValue9478 + EnumValue9479 + EnumValue9480 + EnumValue9481 + EnumValue9482 + EnumValue9483 + EnumValue9484 + EnumValue9485 + EnumValue9486 + EnumValue9487 + EnumValue9488 + EnumValue9489 + EnumValue9490 + EnumValue9491 + EnumValue9492 + EnumValue9493 + EnumValue9494 + EnumValue9495 + EnumValue9496 + EnumValue9497 + EnumValue9498 + EnumValue9499 + EnumValue9500 + EnumValue9501 + EnumValue9502 + EnumValue9503 + EnumValue9504 + EnumValue9505 + EnumValue9506 + EnumValue9507 + EnumValue9508 + EnumValue9509 + EnumValue9510 + EnumValue9511 + EnumValue9512 + EnumValue9513 + EnumValue9514 + EnumValue9515 + EnumValue9516 + EnumValue9517 + EnumValue9518 + EnumValue9519 + EnumValue9520 + EnumValue9521 + EnumValue9522 + EnumValue9523 + EnumValue9524 + EnumValue9525 + EnumValue9526 + EnumValue9527 + EnumValue9528 + EnumValue9529 + EnumValue9530 + EnumValue9531 + EnumValue9532 + EnumValue9533 + EnumValue9534 + EnumValue9535 + EnumValue9536 + EnumValue9537 + EnumValue9538 + EnumValue9539 + EnumValue9540 + EnumValue9541 + EnumValue9542 + EnumValue9543 + EnumValue9544 + EnumValue9545 + EnumValue9546 + EnumValue9547 + EnumValue9548 + EnumValue9549 + EnumValue9550 + EnumValue9551 + EnumValue9552 + EnumValue9553 + EnumValue9554 + EnumValue9555 + EnumValue9556 + EnumValue9557 + EnumValue9558 + EnumValue9559 + EnumValue9560 + EnumValue9561 + EnumValue9562 + EnumValue9563 + EnumValue9564 + EnumValue9565 + EnumValue9566 + EnumValue9567 + EnumValue9568 + EnumValue9569 + EnumValue9570 + EnumValue9571 + EnumValue9572 + EnumValue9573 + EnumValue9574 + EnumValue9575 + EnumValue9576 + EnumValue9577 + EnumValue9578 + EnumValue9579 + EnumValue9580 + EnumValue9581 + EnumValue9582 + EnumValue9583 + EnumValue9584 + EnumValue9585 + EnumValue9586 + EnumValue9587 + EnumValue9588 + EnumValue9589 + EnumValue9590 + EnumValue9591 + EnumValue9592 + EnumValue9593 + EnumValue9594 + EnumValue9595 + EnumValue9596 + EnumValue9597 + EnumValue9598 +} + +enum Enum455 @Directive19(argument57 : "stringValue11357") @Directive22(argument62 : "stringValue11356") @Directive44(argument97 : ["stringValue11358"]) { + EnumValue9599 + EnumValue9600 +} + +enum Enum456 @Directive42(argument96 : ["stringValue11368"]) @Directive44(argument97 : ["stringValue11369"]) { + EnumValue9601 + EnumValue9602 + EnumValue9603 + EnumValue9604 + EnumValue9605 + EnumValue9606 + EnumValue9607 + EnumValue9608 + EnumValue9609 + EnumValue9610 + EnumValue9611 + EnumValue9612 + EnumValue9613 + EnumValue9614 + EnumValue9615 + EnumValue9616 + EnumValue9617 + EnumValue9618 + EnumValue9619 + EnumValue9620 + EnumValue9621 + EnumValue9622 + EnumValue9623 + EnumValue9624 + EnumValue9625 + EnumValue9626 + EnumValue9627 + EnumValue9628 + EnumValue9629 + EnumValue9630 + EnumValue9631 + EnumValue9632 + EnumValue9633 + EnumValue9634 + EnumValue9635 + EnumValue9636 + EnumValue9637 + EnumValue9638 + EnumValue9639 + EnumValue9640 + EnumValue9641 + EnumValue9642 + EnumValue9643 + EnumValue9644 + EnumValue9645 + EnumValue9646 + EnumValue9647 + EnumValue9648 + EnumValue9649 + EnumValue9650 + EnumValue9651 + EnumValue9652 + EnumValue9653 + EnumValue9654 + EnumValue9655 + EnumValue9656 + EnumValue9657 + EnumValue9658 + EnumValue9659 + EnumValue9660 + EnumValue9661 + EnumValue9662 + EnumValue9663 + EnumValue9664 + EnumValue9665 + EnumValue9666 + EnumValue9667 + EnumValue9668 + EnumValue9669 + EnumValue9670 + EnumValue9671 + EnumValue9672 + EnumValue9673 + EnumValue9674 + EnumValue9675 + EnumValue9676 + EnumValue9677 + EnumValue9678 + EnumValue9679 + EnumValue9680 + EnumValue9681 + EnumValue9682 + EnumValue9683 + EnumValue9684 + EnumValue9685 + EnumValue9686 + EnumValue9687 + EnumValue9688 + EnumValue9689 + EnumValue9690 + EnumValue9691 + EnumValue9692 + EnumValue9693 + EnumValue9694 + EnumValue9695 + EnumValue9696 + EnumValue9697 + EnumValue9698 + EnumValue9699 + EnumValue9700 + EnumValue9701 + EnumValue9702 + EnumValue9703 + EnumValue9704 + EnumValue9705 + EnumValue9706 + EnumValue9707 + EnumValue9708 + EnumValue9709 + EnumValue9710 + EnumValue9711 + EnumValue9712 + EnumValue9713 + EnumValue9714 + EnumValue9715 + EnumValue9716 + EnumValue9717 + EnumValue9718 + EnumValue9719 + EnumValue9720 + EnumValue9721 + EnumValue9722 + EnumValue9723 + EnumValue9724 + EnumValue9725 + EnumValue9726 + EnumValue9727 + EnumValue9728 + EnumValue9729 + EnumValue9730 + EnumValue9731 + EnumValue9732 + EnumValue9733 + EnumValue9734 + EnumValue9735 + EnumValue9736 + EnumValue9737 + EnumValue9738 + EnumValue9739 + EnumValue9740 + EnumValue9741 + EnumValue9742 + EnumValue9743 + EnumValue9744 + EnumValue9745 + EnumValue9746 + EnumValue9747 + EnumValue9748 + EnumValue9749 + EnumValue9750 + EnumValue9751 + EnumValue9752 + EnumValue9753 + EnumValue9754 + EnumValue9755 + EnumValue9756 + EnumValue9757 + EnumValue9758 + EnumValue9759 + EnumValue9760 + EnumValue9761 + EnumValue9762 + EnumValue9763 + EnumValue9764 + EnumValue9765 + EnumValue9766 + EnumValue9767 + EnumValue9768 + EnumValue9769 + EnumValue9770 + EnumValue9771 + EnumValue9772 + EnumValue9773 + EnumValue9774 + EnumValue9775 + EnumValue9776 + EnumValue9777 + EnumValue9778 + EnumValue9779 + EnumValue9780 + EnumValue9781 + EnumValue9782 + EnumValue9783 + EnumValue9784 + EnumValue9785 + EnumValue9786 + EnumValue9787 + EnumValue9788 + EnumValue9789 + EnumValue9790 + EnumValue9791 + EnumValue9792 + EnumValue9793 + EnumValue9794 + EnumValue9795 + EnumValue9796 + EnumValue9797 + EnumValue9798 + EnumValue9799 + EnumValue9800 + EnumValue9801 + EnumValue9802 + EnumValue9803 + EnumValue9804 + EnumValue9805 + EnumValue9806 + EnumValue9807 + EnumValue9808 + EnumValue9809 + EnumValue9810 + EnumValue9811 + EnumValue9812 + EnumValue9813 + EnumValue9814 + EnumValue9815 + EnumValue9816 + EnumValue9817 + EnumValue9818 + EnumValue9819 + EnumValue9820 + EnumValue9821 + EnumValue9822 + EnumValue9823 + EnumValue9824 + EnumValue9825 + EnumValue9826 + EnumValue9827 + EnumValue9828 + EnumValue9829 + EnumValue9830 + EnumValue9831 + EnumValue9832 + EnumValue9833 + EnumValue9834 + EnumValue9835 + EnumValue9836 + EnumValue9837 + EnumValue9838 + EnumValue9839 + EnumValue9840 + EnumValue9841 + EnumValue9842 + EnumValue9843 + EnumValue9844 + EnumValue9845 + EnumValue9846 + EnumValue9847 + EnumValue9848 + EnumValue9849 + EnumValue9850 + EnumValue9851 + EnumValue9852 + EnumValue9853 + EnumValue9854 + EnumValue9855 + EnumValue9856 + EnumValue9857 + EnumValue9858 + EnumValue9859 + EnumValue9860 + EnumValue9861 + EnumValue9862 + EnumValue9863 + EnumValue9864 + EnumValue9865 + EnumValue9866 + EnumValue9867 + EnumValue9868 + EnumValue9869 + EnumValue9870 +} + +enum Enum457 @Directive19(argument57 : "stringValue11378") @Directive22(argument62 : "stringValue11377") @Directive44(argument97 : ["stringValue11376"]) { + EnumValue9871 + EnumValue9872 + EnumValue9873 + EnumValue9874 + EnumValue9875 + EnumValue9876 + EnumValue9877 + EnumValue9878 + EnumValue9879 + EnumValue9880 + EnumValue9881 + EnumValue9882 + EnumValue9883 + EnumValue9884 + EnumValue9885 + EnumValue9886 + EnumValue9887 + EnumValue9888 + EnumValue9889 + EnumValue9890 +} + +enum Enum458 @Directive19(argument57 : "stringValue11398") @Directive22(argument62 : "stringValue11399") @Directive44(argument97 : ["stringValue11400"]) { + EnumValue9891 + EnumValue9892 + EnumValue9893 + EnumValue9894 + EnumValue9895 + EnumValue9896 + EnumValue9897 + EnumValue9898 + EnumValue9899 + EnumValue9900 + EnumValue9901 + EnumValue9902 + EnumValue9903 + EnumValue9904 + EnumValue9905 + EnumValue9906 + EnumValue9907 + EnumValue9908 + EnumValue9909 + EnumValue9910 + EnumValue9911 + EnumValue9912 + EnumValue9913 + EnumValue9914 + EnumValue9915 + EnumValue9916 +} + +enum Enum459 @Directive19(argument57 : "stringValue11454") @Directive42(argument96 : ["stringValue11453"]) @Directive44(argument97 : ["stringValue11455"]) { + EnumValue9917 + EnumValue9918 + EnumValue9919 + EnumValue9920 + EnumValue9921 + EnumValue9922 +} + +enum Enum46 @Directive44(argument97 : ["stringValue340"]) { + EnumValue1686 + EnumValue1687 + EnumValue1688 + EnumValue1689 + EnumValue1690 +} + +enum Enum460 @Directive19(argument57 : "stringValue11499") @Directive22(argument62 : "stringValue11500") @Directive44(argument97 : ["stringValue11501", "stringValue11502"]) { + EnumValue9923 + EnumValue9924 + EnumValue9925 +} + +enum Enum461 @Directive22(argument62 : "stringValue11542") @Directive44(argument97 : ["stringValue11543", "stringValue11544"]) { + EnumValue9926 + EnumValue9927 +} + +enum Enum462 @Directive19(argument57 : "stringValue11573") @Directive22(argument62 : "stringValue11574") @Directive44(argument97 : ["stringValue11575", "stringValue11576"]) { + EnumValue9928 + EnumValue9929 + EnumValue9930 + EnumValue9931 + EnumValue9932 + EnumValue9933 + EnumValue9934 + EnumValue9935 + EnumValue9936 + EnumValue9937 + EnumValue9938 + EnumValue9939 + EnumValue9940 + EnumValue9941 + EnumValue9942 + EnumValue9943 + EnumValue9944 + EnumValue9945 + EnumValue9946 + EnumValue9947 + EnumValue9948 + EnumValue9949 + EnumValue9950 + EnumValue9951 + EnumValue9952 + EnumValue9953 + EnumValue9954 + EnumValue9955 + EnumValue9956 + EnumValue9957 + EnumValue9958 + EnumValue9959 + EnumValue9960 + EnumValue9961 + EnumValue9962 + EnumValue9963 + EnumValue9964 + EnumValue9965 + EnumValue9966 + EnumValue9967 + EnumValue9968 + EnumValue9969 + EnumValue9970 + EnumValue9971 + EnumValue9972 + EnumValue9973 + EnumValue9974 + EnumValue9975 + EnumValue9976 + EnumValue9977 + EnumValue9978 +} + +enum Enum463 @Directive19(argument57 : "stringValue11579") @Directive22(argument62 : "stringValue11580") @Directive44(argument97 : ["stringValue11581"]) { + EnumValue9979 + EnumValue9980 + EnumValue9981 + EnumValue9982 + EnumValue9983 + EnumValue9984 + EnumValue9985 + EnumValue9986 + EnumValue9987 + EnumValue9988 + EnumValue9989 +} + +enum Enum464 @Directive19(argument57 : "stringValue11614") @Directive22(argument62 : "stringValue11613") @Directive44(argument97 : ["stringValue11610", "stringValue11611", "stringValue11612"]) { + EnumValue9990 + EnumValue9991 +} + +enum Enum465 @Directive22(argument62 : "stringValue11647") @Directive44(argument97 : ["stringValue11648"]) { + EnumValue9992 + EnumValue9993 +} + +enum Enum466 @Directive22(argument62 : "stringValue11651") @Directive44(argument97 : ["stringValue11652"]) { + EnumValue9994 + EnumValue9995 + EnumValue9996 +} + +enum Enum467 @Directive22(argument62 : "stringValue11653") @Directive44(argument97 : ["stringValue11654"]) { + EnumValue10000 + EnumValue9997 + EnumValue9998 + EnumValue9999 +} + +enum Enum468 @Directive22(argument62 : "stringValue11655") @Directive44(argument97 : ["stringValue11656"]) { + EnumValue10001 + EnumValue10002 +} + +enum Enum469 @Directive22(argument62 : "stringValue11664") @Directive44(argument97 : ["stringValue11665"]) { + EnumValue10003 + EnumValue10004 + EnumValue10005 + EnumValue10006 +} + +enum Enum47 @Directive44(argument97 : ["stringValue348"]) { + EnumValue1691 + EnumValue1692 + EnumValue1693 + EnumValue1694 +} + +enum Enum470 @Directive22(argument62 : "stringValue11668") @Directive44(argument97 : ["stringValue11669"]) { + EnumValue10007 + EnumValue10008 +} + +enum Enum471 @Directive19(argument57 : "stringValue11751") @Directive22(argument62 : "stringValue11752") @Directive44(argument97 : ["stringValue11753", "stringValue11754"]) { + EnumValue10009 + EnumValue10010 + EnumValue10011 + EnumValue10012 + EnumValue10013 + EnumValue10014 + EnumValue10015 +} + +enum Enum472 @Directive19(argument57 : "stringValue11758") @Directive22(argument62 : "stringValue11759") @Directive44(argument97 : ["stringValue11760", "stringValue11761"]) { + EnumValue10016 +} + +enum Enum473 @Directive19(argument57 : "stringValue11765") @Directive22(argument62 : "stringValue11766") @Directive44(argument97 : ["stringValue11767", "stringValue11768"]) { + EnumValue10017 + EnumValue10018 + EnumValue10019 + EnumValue10020 + EnumValue10021 +} + +enum Enum474 @Directive19(argument57 : "stringValue11786") @Directive42(argument96 : ["stringValue11785"]) @Directive44(argument97 : ["stringValue11787", "stringValue11788"]) { + EnumValue10022 + EnumValue10023 + EnumValue10024 + EnumValue10025 + EnumValue10026 + EnumValue10027 + EnumValue10028 + EnumValue10029 + EnumValue10030 + EnumValue10031 + EnumValue10032 + EnumValue10033 + EnumValue10034 + EnumValue10035 + EnumValue10036 + EnumValue10037 + EnumValue10038 + EnumValue10039 +} + +enum Enum475 @Directive42(argument96 : ["stringValue11795"]) @Directive44(argument97 : ["stringValue11796", "stringValue11797"]) { + EnumValue10040 + EnumValue10041 + EnumValue10042 + EnumValue10043 + EnumValue10044 + EnumValue10045 + EnumValue10046 + EnumValue10047 + EnumValue10048 + EnumValue10049 + EnumValue10050 + EnumValue10051 + EnumValue10052 + EnumValue10053 + EnumValue10054 + EnumValue10055 + EnumValue10056 + EnumValue10057 + EnumValue10058 + EnumValue10059 + EnumValue10060 + EnumValue10061 + EnumValue10062 + EnumValue10063 + EnumValue10064 + EnumValue10065 + EnumValue10066 + EnumValue10067 + EnumValue10068 + EnumValue10069 + EnumValue10070 + EnumValue10071 + EnumValue10072 + EnumValue10073 + EnumValue10074 + EnumValue10075 + EnumValue10076 + EnumValue10077 + EnumValue10078 + EnumValue10079 + EnumValue10080 + EnumValue10081 + EnumValue10082 + EnumValue10083 + EnumValue10084 + EnumValue10085 + EnumValue10086 + EnumValue10087 + EnumValue10088 + EnumValue10089 + EnumValue10090 + EnumValue10091 +} + +enum Enum476 @Directive42(argument96 : ["stringValue11798"]) @Directive44(argument97 : ["stringValue11799", "stringValue11800"]) { + EnumValue10092 + EnumValue10093 +} + +enum Enum477 @Directive19(argument57 : "stringValue11810") @Directive22(argument62 : "stringValue11809") @Directive44(argument97 : ["stringValue11811", "stringValue11812"]) { + EnumValue10094 + EnumValue10095 +} + +enum Enum478 @Directive22(argument62 : "stringValue11816") @Directive44(argument97 : ["stringValue11817", "stringValue11818"]) { + EnumValue10096 + EnumValue10097 + EnumValue10098 + EnumValue10099 + EnumValue10100 + EnumValue10101 + EnumValue10102 + EnumValue10103 + EnumValue10104 + EnumValue10105 + EnumValue10106 + EnumValue10107 + EnumValue10108 + EnumValue10109 + EnumValue10110 + EnumValue10111 + EnumValue10112 + EnumValue10113 + EnumValue10114 + EnumValue10115 +} + +enum Enum479 @Directive19(argument57 : "stringValue11841") @Directive22(argument62 : "stringValue11840") @Directive44(argument97 : ["stringValue11842"]) { + EnumValue10116 + EnumValue10117 + EnumValue10118 + EnumValue10119 + EnumValue10120 + EnumValue10121 + EnumValue10122 + EnumValue10123 + EnumValue10124 + EnumValue10125 + EnumValue10126 + EnumValue10127 + EnumValue10128 + EnumValue10129 + EnumValue10130 + EnumValue10131 + EnumValue10132 + EnumValue10133 + EnumValue10134 + EnumValue10135 + EnumValue10136 + EnumValue10137 + EnumValue10138 +} + +enum Enum48 @Directive44(argument97 : ["stringValue349"]) { + EnumValue1695 + EnumValue1696 + EnumValue1697 + EnumValue1698 + EnumValue1699 + EnumValue1700 + EnumValue1701 + EnumValue1702 + EnumValue1703 + EnumValue1704 + EnumValue1705 + EnumValue1706 + EnumValue1707 + EnumValue1708 + EnumValue1709 + EnumValue1710 + EnumValue1711 + EnumValue1712 + EnumValue1713 + EnumValue1714 + EnumValue1715 + EnumValue1716 + EnumValue1717 + EnumValue1718 + EnumValue1719 + EnumValue1720 + EnumValue1721 + EnumValue1722 +} + +enum Enum480 @Directive22(argument62 : "stringValue11845") @Directive44(argument97 : ["stringValue11846", "stringValue11847"]) { + EnumValue10139 + EnumValue10140 +} + +enum Enum481 @Directive42(argument96 : ["stringValue11848"]) @Directive44(argument97 : ["stringValue11849"]) { + EnumValue10141 + EnumValue10142 + EnumValue10143 + EnumValue10144 +} + +enum Enum482 @Directive19(argument57 : "stringValue11864") @Directive42(argument96 : ["stringValue11865"]) @Directive44(argument97 : ["stringValue11866"]) { + EnumValue10145 + EnumValue10146 + EnumValue10147 + EnumValue10148 + EnumValue10149 + EnumValue10150 + EnumValue10151 + EnumValue10152 + EnumValue10153 + EnumValue10154 + EnumValue10155 + EnumValue10156 + EnumValue10157 + EnumValue10158 + EnumValue10159 + EnumValue10160 + EnumValue10161 + EnumValue10162 + EnumValue10163 + EnumValue10164 + EnumValue10165 + EnumValue10166 + EnumValue10167 + EnumValue10168 + EnumValue10169 + EnumValue10170 + EnumValue10171 + EnumValue10172 + EnumValue10173 + EnumValue10174 + EnumValue10175 + EnumValue10176 + EnumValue10177 + EnumValue10178 + EnumValue10179 + EnumValue10180 + EnumValue10181 + EnumValue10182 + EnumValue10183 + EnumValue10184 +} + +enum Enum483 @Directive19(argument57 : "stringValue11881") @Directive42(argument96 : ["stringValue11880"]) @Directive44(argument97 : ["stringValue11882"]) { + EnumValue10185 + EnumValue10186 + EnumValue10187 + EnumValue10188 + EnumValue10189 + EnumValue10190 + EnumValue10191 + EnumValue10192 + EnumValue10193 + EnumValue10194 + EnumValue10195 + EnumValue10196 + EnumValue10197 + EnumValue10198 + EnumValue10199 + EnumValue10200 + EnumValue10201 + EnumValue10202 + EnumValue10203 + EnumValue10204 + EnumValue10205 + EnumValue10206 + EnumValue10207 + EnumValue10208 + EnumValue10209 + EnumValue10210 + EnumValue10211 + EnumValue10212 + EnumValue10213 + EnumValue10214 + EnumValue10215 + EnumValue10216 + EnumValue10217 + EnumValue10218 + EnumValue10219 + EnumValue10220 + EnumValue10221 + EnumValue10222 + EnumValue10223 + EnumValue10224 + EnumValue10225 + EnumValue10226 + EnumValue10227 + EnumValue10228 + EnumValue10229 + EnumValue10230 + EnumValue10231 + EnumValue10232 + EnumValue10233 + EnumValue10234 + EnumValue10235 + EnumValue10236 + EnumValue10237 + EnumValue10238 + EnumValue10239 + EnumValue10240 + EnumValue10241 + EnumValue10242 + EnumValue10243 + EnumValue10244 + EnumValue10245 + EnumValue10246 + EnumValue10247 +} + +enum Enum484 @Directive42(argument96 : ["stringValue11899"]) @Directive44(argument97 : ["stringValue11900", "stringValue11901"]) { + EnumValue10248 + EnumValue10249 + EnumValue10250 +} + +enum Enum485 @Directive19(argument57 : "stringValue11950") @Directive22(argument62 : "stringValue11948") @Directive44(argument97 : ["stringValue11949"]) { + EnumValue10251 + EnumValue10252 + EnumValue10253 + EnumValue10254 + EnumValue10255 + EnumValue10256 + EnumValue10257 + EnumValue10258 + EnumValue10259 + EnumValue10260 +} + +enum Enum486 @Directive19(argument57 : "stringValue11965") @Directive22(argument62 : "stringValue11963") @Directive44(argument97 : ["stringValue11964"]) { + EnumValue10261 + EnumValue10262 + EnumValue10263 + EnumValue10264 + EnumValue10265 +} + +enum Enum487 @Directive19(argument57 : "stringValue11969") @Directive22(argument62 : "stringValue11968") @Directive44(argument97 : ["stringValue11970"]) { + EnumValue10266 + EnumValue10267 + EnumValue10268 + EnumValue10269 + EnumValue10270 + EnumValue10271 + EnumValue10272 + EnumValue10273 + EnumValue10274 + EnumValue10275 + EnumValue10276 + EnumValue10277 + EnumValue10278 + EnumValue10279 + EnumValue10280 + EnumValue10281 + EnumValue10282 + EnumValue10283 + EnumValue10284 + EnumValue10285 + EnumValue10286 + EnumValue10287 +} + +enum Enum488 @Directive19(argument57 : "stringValue12094") @Directive22(argument62 : "stringValue12093") @Directive44(argument97 : ["stringValue12095"]) { + EnumValue10288 + EnumValue10289 + EnumValue10290 +} + +enum Enum489 @Directive22(argument62 : "stringValue12102") @Directive44(argument97 : ["stringValue12103"]) { + EnumValue10291 + EnumValue10292 + EnumValue10293 + EnumValue10294 + EnumValue10295 + EnumValue10296 + EnumValue10297 + EnumValue10298 +} + +enum Enum49 @Directive44(argument97 : ["stringValue354"]) { + EnumValue1723 + EnumValue1724 + EnumValue1725 + EnumValue1726 + EnumValue1727 +} + +enum Enum490 @Directive22(argument62 : "stringValue12104") @Directive44(argument97 : ["stringValue12105"]) { + EnumValue10299 + EnumValue10300 + EnumValue10301 + EnumValue10302 + EnumValue10303 + EnumValue10304 + EnumValue10305 + EnumValue10306 +} + +enum Enum491 @Directive19(argument57 : "stringValue12126") @Directive22(argument62 : "stringValue12127") @Directive44(argument97 : ["stringValue12128"]) { + EnumValue10307 + EnumValue10308 + EnumValue10309 + EnumValue10310 +} + +enum Enum492 @Directive19(argument57 : "stringValue12131") @Directive22(argument62 : "stringValue12130") @Directive44(argument97 : ["stringValue12129"]) { + EnumValue10311 + EnumValue10312 + EnumValue10313 + EnumValue10314 + EnumValue10315 + EnumValue10316 + EnumValue10317 + EnumValue10318 + EnumValue10319 + EnumValue10320 + EnumValue10321 + EnumValue10322 + EnumValue10323 + EnumValue10324 + EnumValue10325 + EnumValue10326 + EnumValue10327 + EnumValue10328 + EnumValue10329 +} + +enum Enum493 @Directive19(argument57 : "stringValue12198") @Directive22(argument62 : "stringValue12197") @Directive44(argument97 : ["stringValue12199", "stringValue12200"]) { + EnumValue10330 + EnumValue10331 + EnumValue10332 +} + +enum Enum494 @Directive22(argument62 : "stringValue12202") @Directive44(argument97 : ["stringValue12203", "stringValue12204"]) { + EnumValue10333 + EnumValue10334 + EnumValue10335 + EnumValue10336 +} + +enum Enum495 @Directive19(argument57 : "stringValue12329") @Directive22(argument62 : "stringValue12328") @Directive44(argument97 : ["stringValue12330"]) { + EnumValue10337 + EnumValue10338 + EnumValue10339 +} + +enum Enum496 @Directive19(argument57 : "stringValue12351") @Directive22(argument62 : "stringValue12350") @Directive44(argument97 : ["stringValue12349"]) { + EnumValue10340 + EnumValue10341 + EnumValue10342 + EnumValue10343 + EnumValue10344 +} + +enum Enum497 @Directive19(argument57 : "stringValue12374") @Directive22(argument62 : "stringValue12373") @Directive44(argument97 : ["stringValue12372"]) { + EnumValue10345 + EnumValue10346 + EnumValue10347 + EnumValue10348 + EnumValue10349 + EnumValue10350 + EnumValue10351 +} + +enum Enum498 @Directive19(argument57 : "stringValue12377") @Directive42(argument96 : ["stringValue12376"]) @Directive44(argument97 : ["stringValue12378"]) { + EnumValue10352 + EnumValue10353 + EnumValue10354 + EnumValue10355 + EnumValue10356 + EnumValue10357 + EnumValue10358 + EnumValue10359 + EnumValue10360 + EnumValue10361 + EnumValue10362 + EnumValue10363 + EnumValue10364 + EnumValue10365 + EnumValue10366 + EnumValue10367 + EnumValue10368 @deprecated + EnumValue10369 @deprecated + EnumValue10370 @deprecated +} + +enum Enum499 @Directive22(argument62 : "stringValue12382") @Directive44(argument97 : ["stringValue12383", "stringValue12384"]) { + EnumValue10371 + EnumValue10372 + EnumValue10373 + EnumValue10374 + EnumValue10375 + EnumValue10376 + EnumValue10377 +} + +enum Enum5 @Directive19(argument57 : "stringValue76") @Directive22(argument62 : "stringValue75") @Directive44(argument97 : ["stringValue77", "stringValue78"]) { + EnumValue17 + EnumValue18 +} + +enum Enum50 @Directive44(argument97 : ["stringValue355"]) { + EnumValue1728 + EnumValue1729 + EnumValue1730 + EnumValue1731 + EnumValue1732 + EnumValue1733 +} + +enum Enum500 @Directive22(argument62 : "stringValue12441") @Directive44(argument97 : ["stringValue12442", "stringValue12443"]) { + EnumValue10378 + EnumValue10379 + EnumValue10380 +} + +enum Enum501 @Directive19(argument57 : "stringValue12462") @Directive22(argument62 : "stringValue12463") @Directive44(argument97 : ["stringValue12464", "stringValue12465"]) { + EnumValue10381 + EnumValue10382 + EnumValue10383 + EnumValue10384 + EnumValue10385 + EnumValue10386 + EnumValue10387 + EnumValue10388 + EnumValue10389 + EnumValue10390 + EnumValue10391 + EnumValue10392 + EnumValue10393 + EnumValue10394 + EnumValue10395 + EnumValue10396 + EnumValue10397 + EnumValue10398 + EnumValue10399 + EnumValue10400 + EnumValue10401 + EnumValue10402 + EnumValue10403 + EnumValue10404 + EnumValue10405 + EnumValue10406 + EnumValue10407 + EnumValue10408 + EnumValue10409 + EnumValue10410 + EnumValue10411 + EnumValue10412 + EnumValue10413 + EnumValue10414 + EnumValue10415 + EnumValue10416 + EnumValue10417 + EnumValue10418 + EnumValue10419 + EnumValue10420 + EnumValue10421 + EnumValue10422 + EnumValue10423 + EnumValue10424 + EnumValue10425 + EnumValue10426 + EnumValue10427 + EnumValue10428 + EnumValue10429 + EnumValue10430 + EnumValue10431 + EnumValue10432 + EnumValue10433 + EnumValue10434 + EnumValue10435 + EnumValue10436 + EnumValue10437 + EnumValue10438 + EnumValue10439 + EnumValue10440 + EnumValue10441 + EnumValue10442 + EnumValue10443 + EnumValue10444 + EnumValue10445 + EnumValue10446 + EnumValue10447 + EnumValue10448 + EnumValue10449 + EnumValue10450 + EnumValue10451 + EnumValue10452 + EnumValue10453 + EnumValue10454 + EnumValue10455 + EnumValue10456 + EnumValue10457 + EnumValue10458 + EnumValue10459 + EnumValue10460 + EnumValue10461 + EnumValue10462 + EnumValue10463 + EnumValue10464 + EnumValue10465 + EnumValue10466 + EnumValue10467 + EnumValue10468 + EnumValue10469 + EnumValue10470 + EnumValue10471 + EnumValue10472 + EnumValue10473 + EnumValue10474 + EnumValue10475 + EnumValue10476 + EnumValue10477 + EnumValue10478 + EnumValue10479 + EnumValue10480 + EnumValue10481 + EnumValue10482 + EnumValue10483 + EnumValue10484 + EnumValue10485 + EnumValue10486 + EnumValue10487 + EnumValue10488 + EnumValue10489 + EnumValue10490 + EnumValue10491 + EnumValue10492 + EnumValue10493 + EnumValue10494 + EnumValue10495 + EnumValue10496 + EnumValue10497 + EnumValue10498 + EnumValue10499 + EnumValue10500 + EnumValue10501 + EnumValue10502 + EnumValue10503 + EnumValue10504 + EnumValue10505 + EnumValue10506 + EnumValue10507 + EnumValue10508 + EnumValue10509 + EnumValue10510 + EnumValue10511 + EnumValue10512 + EnumValue10513 + EnumValue10514 + EnumValue10515 + EnumValue10516 + EnumValue10517 + EnumValue10518 + EnumValue10519 + EnumValue10520 + EnumValue10521 + EnumValue10522 + EnumValue10523 + EnumValue10524 + EnumValue10525 + EnumValue10526 + EnumValue10527 + EnumValue10528 + EnumValue10529 + EnumValue10530 + EnumValue10531 + EnumValue10532 + EnumValue10533 + EnumValue10534 + EnumValue10535 + EnumValue10536 + EnumValue10537 + EnumValue10538 + EnumValue10539 + EnumValue10540 + EnumValue10541 + EnumValue10542 + EnumValue10543 + EnumValue10544 + EnumValue10545 + EnumValue10546 + EnumValue10547 + EnumValue10548 + EnumValue10549 + EnumValue10550 + EnumValue10551 + EnumValue10552 + EnumValue10553 + EnumValue10554 + EnumValue10555 + EnumValue10556 + EnumValue10557 + EnumValue10558 + EnumValue10559 + EnumValue10560 + EnumValue10561 + EnumValue10562 + EnumValue10563 + EnumValue10564 + EnumValue10565 + EnumValue10566 + EnumValue10567 + EnumValue10568 + EnumValue10569 + EnumValue10570 + EnumValue10571 + EnumValue10572 + EnumValue10573 + EnumValue10574 + EnumValue10575 + EnumValue10576 + EnumValue10577 + EnumValue10578 + EnumValue10579 + EnumValue10580 + EnumValue10581 + EnumValue10582 + EnumValue10583 + EnumValue10584 + EnumValue10585 + EnumValue10586 + EnumValue10587 + EnumValue10588 + EnumValue10589 + EnumValue10590 + EnumValue10591 + EnumValue10592 + EnumValue10593 + EnumValue10594 + EnumValue10595 + EnumValue10596 + EnumValue10597 + EnumValue10598 + EnumValue10599 + EnumValue10600 + EnumValue10601 + EnumValue10602 + EnumValue10603 + EnumValue10604 + EnumValue10605 + EnumValue10606 + EnumValue10607 + EnumValue10608 + EnumValue10609 + EnumValue10610 + EnumValue10611 + EnumValue10612 + EnumValue10613 + EnumValue10614 + EnumValue10615 + EnumValue10616 + EnumValue10617 + EnumValue10618 + EnumValue10619 + EnumValue10620 + EnumValue10621 + EnumValue10622 + EnumValue10623 + EnumValue10624 + EnumValue10625 + EnumValue10626 + EnumValue10627 + EnumValue10628 + EnumValue10629 + EnumValue10630 + EnumValue10631 + EnumValue10632 + EnumValue10633 + EnumValue10634 + EnumValue10635 + EnumValue10636 + EnumValue10637 + EnumValue10638 + EnumValue10639 + EnumValue10640 + EnumValue10641 + EnumValue10642 + EnumValue10643 + EnumValue10644 + EnumValue10645 + EnumValue10646 + EnumValue10647 + EnumValue10648 + EnumValue10649 + EnumValue10650 + EnumValue10651 + EnumValue10652 + EnumValue10653 + EnumValue10654 + EnumValue10655 + EnumValue10656 + EnumValue10657 + EnumValue10658 + EnumValue10659 + EnumValue10660 + EnumValue10661 + EnumValue10662 + EnumValue10663 + EnumValue10664 + EnumValue10665 + EnumValue10666 + EnumValue10667 + EnumValue10668 + EnumValue10669 + EnumValue10670 + EnumValue10671 + EnumValue10672 + EnumValue10673 + EnumValue10674 + EnumValue10675 + EnumValue10676 + EnumValue10677 + EnumValue10678 + EnumValue10679 + EnumValue10680 + EnumValue10681 + EnumValue10682 + EnumValue10683 + EnumValue10684 + EnumValue10685 + EnumValue10686 + EnumValue10687 + EnumValue10688 + EnumValue10689 + EnumValue10690 + EnumValue10691 + EnumValue10692 + EnumValue10693 + EnumValue10694 + EnumValue10695 + EnumValue10696 + EnumValue10697 + EnumValue10698 + EnumValue10699 + EnumValue10700 + EnumValue10701 + EnumValue10702 + EnumValue10703 + EnumValue10704 + EnumValue10705 + EnumValue10706 + EnumValue10707 + EnumValue10708 + EnumValue10709 + EnumValue10710 + EnumValue10711 + EnumValue10712 + EnumValue10713 + EnumValue10714 + EnumValue10715 + EnumValue10716 + EnumValue10717 + EnumValue10718 + EnumValue10719 + EnumValue10720 + EnumValue10721 + EnumValue10722 + EnumValue10723 + EnumValue10724 + EnumValue10725 + EnumValue10726 + EnumValue10727 + EnumValue10728 + EnumValue10729 + EnumValue10730 + EnumValue10731 + EnumValue10732 + EnumValue10733 + EnumValue10734 + EnumValue10735 + EnumValue10736 + EnumValue10737 + EnumValue10738 + EnumValue10739 + EnumValue10740 + EnumValue10741 + EnumValue10742 + EnumValue10743 + EnumValue10744 + EnumValue10745 + EnumValue10746 + EnumValue10747 + EnumValue10748 + EnumValue10749 + EnumValue10750 + EnumValue10751 + EnumValue10752 + EnumValue10753 + EnumValue10754 + EnumValue10755 + EnumValue10756 + EnumValue10757 + EnumValue10758 + EnumValue10759 + EnumValue10760 + EnumValue10761 + EnumValue10762 + EnumValue10763 + EnumValue10764 + EnumValue10765 + EnumValue10766 + EnumValue10767 + EnumValue10768 + EnumValue10769 + EnumValue10770 + EnumValue10771 + EnumValue10772 + EnumValue10773 + EnumValue10774 + EnumValue10775 + EnumValue10776 + EnumValue10777 + EnumValue10778 + EnumValue10779 + EnumValue10780 + EnumValue10781 + EnumValue10782 + EnumValue10783 + EnumValue10784 + EnumValue10785 + EnumValue10786 + EnumValue10787 + EnumValue10788 + EnumValue10789 + EnumValue10790 + EnumValue10791 + EnumValue10792 + EnumValue10793 + EnumValue10794 + EnumValue10795 + EnumValue10796 + EnumValue10797 + EnumValue10798 +} + +enum Enum502 @Directive19(argument57 : "stringValue12466") @Directive22(argument62 : "stringValue12467") @Directive44(argument97 : ["stringValue12468", "stringValue12469"]) { + EnumValue10799 + EnumValue10800 + EnumValue10801 + EnumValue10802 + EnumValue10803 + EnumValue10804 + EnumValue10805 + EnumValue10806 + EnumValue10807 + EnumValue10808 + EnumValue10809 + EnumValue10810 + EnumValue10811 + EnumValue10812 + EnumValue10813 + EnumValue10814 + EnumValue10815 + EnumValue10816 + EnumValue10817 + EnumValue10818 + EnumValue10819 + EnumValue10820 + EnumValue10821 + EnumValue10822 + EnumValue10823 + EnumValue10824 + EnumValue10825 + EnumValue10826 + EnumValue10827 + EnumValue10828 + EnumValue10829 + EnumValue10830 + EnumValue10831 + EnumValue10832 + EnumValue10833 + EnumValue10834 + EnumValue10835 + EnumValue10836 + EnumValue10837 + EnumValue10838 + EnumValue10839 + EnumValue10840 + EnumValue10841 + EnumValue10842 + EnumValue10843 + EnumValue10844 + EnumValue10845 + EnumValue10846 + EnumValue10847 + EnumValue10848 + EnumValue10849 + EnumValue10850 + EnumValue10851 + EnumValue10852 + EnumValue10853 + EnumValue10854 + EnumValue10855 + EnumValue10856 + EnumValue10857 + EnumValue10858 + EnumValue10859 + EnumValue10860 + EnumValue10861 + EnumValue10862 + EnumValue10863 + EnumValue10864 + EnumValue10865 + EnumValue10866 + EnumValue10867 +} + +enum Enum503 @Directive19(argument57 : "stringValue12482") @Directive22(argument62 : "stringValue12483") @Directive44(argument97 : ["stringValue12484", "stringValue12485"]) { + EnumValue10868 + EnumValue10869 + EnumValue10870 + EnumValue10871 + EnumValue10872 + EnumValue10873 + EnumValue10874 +} + +enum Enum504 @Directive19(argument57 : "stringValue12489") @Directive22(argument62 : "stringValue12490") @Directive44(argument97 : ["stringValue12491", "stringValue12492"]) { + EnumValue10875 + EnumValue10876 + EnumValue10877 + EnumValue10878 + EnumValue10879 + EnumValue10880 + EnumValue10881 + EnumValue10882 + EnumValue10883 + EnumValue10884 + EnumValue10885 + EnumValue10886 + EnumValue10887 + EnumValue10888 + EnumValue10889 + EnumValue10890 + EnumValue10891 + EnumValue10892 + EnumValue10893 + EnumValue10894 + EnumValue10895 + EnumValue10896 + EnumValue10897 + EnumValue10898 + EnumValue10899 + EnumValue10900 + EnumValue10901 + EnumValue10902 + EnumValue10903 + EnumValue10904 + EnumValue10905 + EnumValue10906 + EnumValue10907 + EnumValue10908 + EnumValue10909 + EnumValue10910 + EnumValue10911 + EnumValue10912 + EnumValue10913 + EnumValue10914 + EnumValue10915 + EnumValue10916 + EnumValue10917 + EnumValue10918 + EnumValue10919 + EnumValue10920 + EnumValue10921 + EnumValue10922 + EnumValue10923 + EnumValue10924 + EnumValue10925 + EnumValue10926 + EnumValue10927 + EnumValue10928 + EnumValue10929 + EnumValue10930 + EnumValue10931 + EnumValue10932 + EnumValue10933 + EnumValue10934 + EnumValue10935 + EnumValue10936 + EnumValue10937 + EnumValue10938 + EnumValue10939 +} + +enum Enum505 @Directive19(argument57 : "stringValue12511") @Directive22(argument62 : "stringValue12512") @Directive44(argument97 : ["stringValue12513", "stringValue12514"]) { + EnumValue10940 + EnumValue10941 + EnumValue10942 + EnumValue10943 + EnumValue10944 + EnumValue10945 + EnumValue10946 +} + +enum Enum506 @Directive19(argument57 : "stringValue12518") @Directive22(argument62 : "stringValue12519") @Directive44(argument97 : ["stringValue12520"]) { + EnumValue10947 + EnumValue10948 + EnumValue10949 + EnumValue10950 + EnumValue10951 + EnumValue10952 + EnumValue10953 + EnumValue10954 + EnumValue10955 + EnumValue10956 + EnumValue10957 + EnumValue10958 +} + +enum Enum507 @Directive19(argument57 : "stringValue12521") @Directive22(argument62 : "stringValue12522") @Directive44(argument97 : ["stringValue12523"]) { + EnumValue10959 + EnumValue10960 + EnumValue10961 + EnumValue10962 + EnumValue10963 + EnumValue10964 + EnumValue10965 +} + +enum Enum508 @Directive19(argument57 : "stringValue12531") @Directive22(argument62 : "stringValue12532") @Directive44(argument97 : ["stringValue12533"]) { + EnumValue10966 + EnumValue10967 + EnumValue10968 + EnumValue10969 + EnumValue10970 + EnumValue10971 + EnumValue10972 + EnumValue10973 + EnumValue10974 + EnumValue10975 + EnumValue10976 + EnumValue10977 + EnumValue10978 + EnumValue10979 + EnumValue10980 + EnumValue10981 + EnumValue10982 + EnumValue10983 + EnumValue10984 + EnumValue10985 + EnumValue10986 + EnumValue10987 + EnumValue10988 + EnumValue10989 + EnumValue10990 + EnumValue10991 +} + +enum Enum509 @Directive19(argument57 : "stringValue12537") @Directive22(argument62 : "stringValue12538") @Directive44(argument97 : ["stringValue12539"]) { + EnumValue10992 + EnumValue10993 + EnumValue10994 + EnumValue10995 + EnumValue10996 + EnumValue10997 + EnumValue10998 + EnumValue10999 + EnumValue11000 + EnumValue11001 + EnumValue11002 + EnumValue11003 + EnumValue11004 + EnumValue11005 + EnumValue11006 + EnumValue11007 +} + +enum Enum51 @Directive44(argument97 : ["stringValue356"]) { + EnumValue1734 + EnumValue1735 + EnumValue1736 + EnumValue1737 + EnumValue1738 +} + +enum Enum510 @Directive19(argument57 : "stringValue12545") @Directive22(argument62 : "stringValue12544") @Directive44(argument97 : ["stringValue12546", "stringValue12547"]) { + EnumValue11008 + EnumValue11009 + EnumValue11010 + EnumValue11011 + EnumValue11012 + EnumValue11013 + EnumValue11014 +} + +enum Enum511 @Directive22(argument62 : "stringValue12551") @Directive44(argument97 : ["stringValue12552", "stringValue12553"]) { + EnumValue11015 + EnumValue11016 +} + +enum Enum512 @Directive44(argument97 : ["stringValue12560"]) { + EnumValue11017 + EnumValue11018 + EnumValue11019 + EnumValue11020 + EnumValue11021 + EnumValue11022 + EnumValue11023 + EnumValue11024 + EnumValue11025 + EnumValue11026 + EnumValue11027 + EnumValue11028 + EnumValue11029 + EnumValue11030 + EnumValue11031 + EnumValue11032 + EnumValue11033 +} + +enum Enum513 @Directive44(argument97 : ["stringValue12561"]) { + EnumValue11034 + EnumValue11035 + EnumValue11036 + EnumValue11037 + EnumValue11038 + EnumValue11039 + EnumValue11040 + EnumValue11041 + EnumValue11042 +} + +enum Enum514 @Directive44(argument97 : ["stringValue12568"]) { + EnumValue11043 + EnumValue11044 + EnumValue11045 +} + +enum Enum515 @Directive44(argument97 : ["stringValue12576"]) { + EnumValue11046 + EnumValue11047 + EnumValue11048 + EnumValue11049 + EnumValue11050 + EnumValue11051 + EnumValue11052 + EnumValue11053 + EnumValue11054 + EnumValue11055 + EnumValue11056 + EnumValue11057 + EnumValue11058 + EnumValue11059 + EnumValue11060 + EnumValue11061 + EnumValue11062 + EnumValue11063 + EnumValue11064 + EnumValue11065 + EnumValue11066 + EnumValue11067 + EnumValue11068 + EnumValue11069 + EnumValue11070 + EnumValue11071 + EnumValue11072 + EnumValue11073 + EnumValue11074 + EnumValue11075 + EnumValue11076 + EnumValue11077 + EnumValue11078 +} + +enum Enum516 @Directive44(argument97 : ["stringValue12581"]) { + EnumValue11079 + EnumValue11080 +} + +enum Enum517 @Directive44(argument97 : ["stringValue12602"]) { + EnumValue11081 + EnumValue11082 + EnumValue11083 + EnumValue11084 + EnumValue11085 + EnumValue11086 + EnumValue11087 + EnumValue11088 +} + +enum Enum518 @Directive44(argument97 : ["stringValue12639"]) { + EnumValue11089 + EnumValue11090 + EnumValue11091 + EnumValue11092 + EnumValue11093 +} + +enum Enum519 @Directive44(argument97 : ["stringValue12642"]) { + EnumValue11094 + EnumValue11095 + EnumValue11096 +} + +enum Enum52 @Directive44(argument97 : ["stringValue357"]) { + EnumValue1739 + EnumValue1740 + EnumValue1741 + EnumValue1742 +} + +enum Enum520 @Directive44(argument97 : ["stringValue12643"]) { + EnumValue11097 + EnumValue11098 + EnumValue11099 +} + +enum Enum521 @Directive44(argument97 : ["stringValue12664"]) { + EnumValue11100 + EnumValue11101 +} + +enum Enum522 @Directive44(argument97 : ["stringValue12667"]) { + EnumValue11102 + EnumValue11103 + EnumValue11104 +} + +enum Enum523 @Directive44(argument97 : ["stringValue12670"]) { + EnumValue11105 + EnumValue11106 + EnumValue11107 +} + +enum Enum524 @Directive44(argument97 : ["stringValue12673"]) { + EnumValue11108 + EnumValue11109 + EnumValue11110 + EnumValue11111 +} + +enum Enum525 @Directive44(argument97 : ["stringValue12686"]) { + EnumValue11112 + EnumValue11113 + EnumValue11114 + EnumValue11115 + EnumValue11116 +} + +enum Enum526 @Directive44(argument97 : ["stringValue12689"]) { + EnumValue11117 + EnumValue11118 +} + +enum Enum527 @Directive44(argument97 : ["stringValue12692"]) { + EnumValue11119 + EnumValue11120 + EnumValue11121 +} + +enum Enum528 @Directive44(argument97 : ["stringValue12693"]) { + EnumValue11122 + EnumValue11123 + EnumValue11124 + EnumValue11125 +} + +enum Enum529 @Directive44(argument97 : ["stringValue12700"]) { + EnumValue11126 + EnumValue11127 + EnumValue11128 +} + +enum Enum53 @Directive44(argument97 : ["stringValue358"]) { + EnumValue1743 + EnumValue1744 + EnumValue1745 + EnumValue1746 + EnumValue1747 + EnumValue1748 + EnumValue1749 + EnumValue1750 + EnumValue1751 + EnumValue1752 + EnumValue1753 + EnumValue1754 + EnumValue1755 + EnumValue1756 + EnumValue1757 + EnumValue1758 + EnumValue1759 + EnumValue1760 + EnumValue1761 + EnumValue1762 + EnumValue1763 + EnumValue1764 + EnumValue1765 + EnumValue1766 + EnumValue1767 + EnumValue1768 + EnumValue1769 + EnumValue1770 + EnumValue1771 + EnumValue1772 + EnumValue1773 + EnumValue1774 +} + +enum Enum530 @Directive44(argument97 : ["stringValue12721"]) { + EnumValue11129 + EnumValue11130 + EnumValue11131 + EnumValue11132 +} + +enum Enum531 @Directive44(argument97 : ["stringValue12722"]) { + EnumValue11133 + EnumValue11134 + EnumValue11135 +} + +enum Enum532 @Directive44(argument97 : ["stringValue12757"]) { + EnumValue11136 + EnumValue11137 + EnumValue11138 +} + +enum Enum533 @Directive44(argument97 : ["stringValue12766"]) { + EnumValue11139 + EnumValue11140 + EnumValue11141 +} + +enum Enum534 @Directive44(argument97 : ["stringValue12775"]) { + EnumValue11142 + EnumValue11143 + EnumValue11144 +} + +enum Enum535 @Directive44(argument97 : ["stringValue12780"]) { + EnumValue11145 + EnumValue11146 + EnumValue11147 + EnumValue11148 + EnumValue11149 + EnumValue11150 + EnumValue11151 + EnumValue11152 + EnumValue11153 + EnumValue11154 + EnumValue11155 + EnumValue11156 + EnumValue11157 +} + +enum Enum536 @Directive44(argument97 : ["stringValue12781"]) { + EnumValue11158 + EnumValue11159 + EnumValue11160 + EnumValue11161 + EnumValue11162 +} + +enum Enum537 @Directive44(argument97 : ["stringValue12782"]) { + EnumValue11163 + EnumValue11164 + EnumValue11165 + EnumValue11166 + EnumValue11167 + EnumValue11168 + EnumValue11169 + EnumValue11170 + EnumValue11171 + EnumValue11172 + EnumValue11173 + EnumValue11174 + EnumValue11175 + EnumValue11176 + EnumValue11177 + EnumValue11178 + EnumValue11179 + EnumValue11180 + EnumValue11181 + EnumValue11182 + EnumValue11183 + EnumValue11184 + EnumValue11185 + EnumValue11186 + EnumValue11187 + EnumValue11188 + EnumValue11189 + EnumValue11190 + EnumValue11191 + EnumValue11192 + EnumValue11193 + EnumValue11194 +} + +enum Enum538 @Directive44(argument97 : ["stringValue12783"]) { + EnumValue11195 + EnumValue11196 + EnumValue11197 + EnumValue11198 +} + +enum Enum539 @Directive44(argument97 : ["stringValue12788"]) { + EnumValue11199 + EnumValue11200 + EnumValue11201 + EnumValue11202 + EnumValue11203 + EnumValue11204 + EnumValue11205 + EnumValue11206 +} + +enum Enum54 @Directive44(argument97 : ["stringValue359"]) { + EnumValue1775 + EnumValue1776 + EnumValue1777 + EnumValue1778 +} + +enum Enum540 @Directive44(argument97 : ["stringValue12795"]) { + EnumValue11207 + EnumValue11208 +} + +enum Enum541 @Directive44(argument97 : ["stringValue12812"]) { + EnumValue11209 + EnumValue11210 + EnumValue11211 +} + +enum Enum542 @Directive44(argument97 : ["stringValue12815"]) { + EnumValue11212 + EnumValue11213 + EnumValue11214 + EnumValue11215 + EnumValue11216 + EnumValue11217 + EnumValue11218 + EnumValue11219 + EnumValue11220 + EnumValue11221 + EnumValue11222 +} + +enum Enum543 @Directive44(argument97 : ["stringValue12914"]) { + EnumValue11223 + EnumValue11224 + EnumValue11225 + EnumValue11226 + EnumValue11227 + EnumValue11228 + EnumValue11229 +} + +enum Enum544 @Directive22(argument62 : "stringValue12995") @Directive44(argument97 : ["stringValue12996", "stringValue12997"]) { + EnumValue11230 + EnumValue11231 + EnumValue11232 + EnumValue11233 + EnumValue11234 + EnumValue11235 + EnumValue11236 + EnumValue11237 + EnumValue11238 + EnumValue11239 @deprecated + EnumValue11240 + EnumValue11241 + EnumValue11242 + EnumValue11243 + EnumValue11244 + EnumValue11245 +} + +enum Enum545 @Directive22(argument62 : "stringValue13010") @Directive44(argument97 : ["stringValue13011", "stringValue13012"]) { + EnumValue11246 + EnumValue11247 + EnumValue11248 + EnumValue11249 +} + +enum Enum546 @Directive22(argument62 : "stringValue13086") @Directive44(argument97 : ["stringValue13087", "stringValue13088"]) { + EnumValue11250 + EnumValue11251 +} + +enum Enum547 @Directive22(argument62 : "stringValue13111") @Directive44(argument97 : ["stringValue13112", "stringValue13113"]) { + EnumValue11252 + EnumValue11253 +} + +enum Enum548 @Directive22(argument62 : "stringValue13243") @Directive44(argument97 : ["stringValue13244", "stringValue13245"]) { + EnumValue11254 + EnumValue11255 +} + +enum Enum549 @Directive44(argument97 : ["stringValue13258"]) { + EnumValue11256 + EnumValue11257 + EnumValue11258 +} + +enum Enum55 @Directive44(argument97 : ["stringValue364"]) { + EnumValue1779 + EnumValue1780 + EnumValue1781 + EnumValue1782 +} + +enum Enum550 @Directive44(argument97 : ["stringValue13259"]) { + EnumValue11259 + EnumValue11260 + EnumValue11261 + EnumValue11262 + EnumValue11263 + EnumValue11264 + EnumValue11265 + EnumValue11266 +} + +enum Enum551 @Directive44(argument97 : ["stringValue13266"]) { + EnumValue11267 + EnumValue11268 + EnumValue11269 +} + +enum Enum552 @Directive44(argument97 : ["stringValue13268"]) { + EnumValue11270 + EnumValue11271 + EnumValue11272 + EnumValue11273 +} + +enum Enum553 @Directive44(argument97 : ["stringValue13269"]) { + EnumValue11274 + EnumValue11275 + EnumValue11276 +} + +enum Enum554 @Directive44(argument97 : ["stringValue13272"]) { + EnumValue11277 + EnumValue11278 + EnumValue11279 + EnumValue11280 + EnumValue11281 + EnumValue11282 + EnumValue11283 + EnumValue11284 + EnumValue11285 + EnumValue11286 + EnumValue11287 + EnumValue11288 + EnumValue11289 + EnumValue11290 + EnumValue11291 + EnumValue11292 + EnumValue11293 + EnumValue11294 + EnumValue11295 + EnumValue11296 + EnumValue11297 + EnumValue11298 + EnumValue11299 + EnumValue11300 + EnumValue11301 + EnumValue11302 + EnumValue11303 + EnumValue11304 + EnumValue11305 + EnumValue11306 + EnumValue11307 + EnumValue11308 + EnumValue11309 + EnumValue11310 + EnumValue11311 + EnumValue11312 + EnumValue11313 + EnumValue11314 + EnumValue11315 + EnumValue11316 + EnumValue11317 + EnumValue11318 + EnumValue11319 + EnumValue11320 + EnumValue11321 + EnumValue11322 + EnumValue11323 + EnumValue11324 + EnumValue11325 + EnumValue11326 +} + +enum Enum555 @Directive44(argument97 : ["stringValue13273"]) { + EnumValue11327 + EnumValue11328 + EnumValue11329 + EnumValue11330 + EnumValue11331 +} + +enum Enum556 @Directive44(argument97 : ["stringValue13274"]) { + EnumValue11332 + EnumValue11333 + EnumValue11334 + EnumValue11335 + EnumValue11336 + EnumValue11337 + EnumValue11338 + EnumValue11339 + EnumValue11340 +} + +enum Enum557 @Directive44(argument97 : ["stringValue13279"]) { + EnumValue11341 + EnumValue11342 + EnumValue11343 +} + +enum Enum558 @Directive44(argument97 : ["stringValue13309"]) { + EnumValue11344 + EnumValue11345 + EnumValue11346 + EnumValue11347 +} + +enum Enum559 @Directive44(argument97 : ["stringValue13312"]) { + EnumValue11348 + EnumValue11349 + EnumValue11350 + EnumValue11351 + EnumValue11352 + EnumValue11353 + EnumValue11354 + EnumValue11355 + EnumValue11356 + EnumValue11357 + EnumValue11358 + EnumValue11359 + EnumValue11360 + EnumValue11361 + EnumValue11362 + EnumValue11363 + EnumValue11364 + EnumValue11365 + EnumValue11366 + EnumValue11367 + EnumValue11368 + EnumValue11369 + EnumValue11370 + EnumValue11371 + EnumValue11372 + EnumValue11373 + EnumValue11374 + EnumValue11375 + EnumValue11376 + EnumValue11377 + EnumValue11378 + EnumValue11379 + EnumValue11380 + EnumValue11381 + EnumValue11382 + EnumValue11383 + EnumValue11384 + EnumValue11385 + EnumValue11386 + EnumValue11387 + EnumValue11388 + EnumValue11389 + EnumValue11390 + EnumValue11391 + EnumValue11392 + EnumValue11393 + EnumValue11394 + EnumValue11395 + EnumValue11396 + EnumValue11397 + EnumValue11398 + EnumValue11399 + EnumValue11400 + EnumValue11401 + EnumValue11402 + EnumValue11403 + EnumValue11404 + EnumValue11405 + EnumValue11406 + EnumValue11407 + EnumValue11408 + EnumValue11409 + EnumValue11410 + EnumValue11411 + EnumValue11412 + EnumValue11413 + EnumValue11414 + EnumValue11415 + EnumValue11416 + EnumValue11417 + EnumValue11418 + EnumValue11419 + EnumValue11420 + EnumValue11421 + EnumValue11422 + EnumValue11423 + EnumValue11424 + EnumValue11425 + EnumValue11426 + EnumValue11427 + EnumValue11428 + EnumValue11429 + EnumValue11430 + EnumValue11431 + EnumValue11432 + EnumValue11433 + EnumValue11434 + EnumValue11435 + EnumValue11436 + EnumValue11437 + EnumValue11438 + EnumValue11439 + EnumValue11440 + EnumValue11441 + EnumValue11442 + EnumValue11443 + EnumValue11444 + EnumValue11445 + EnumValue11446 + EnumValue11447 + EnumValue11448 + EnumValue11449 + EnumValue11450 + EnumValue11451 + EnumValue11452 + EnumValue11453 + EnumValue11454 + EnumValue11455 + EnumValue11456 + EnumValue11457 + EnumValue11458 + EnumValue11459 + EnumValue11460 + EnumValue11461 + EnumValue11462 + EnumValue11463 + EnumValue11464 + EnumValue11465 + EnumValue11466 + EnumValue11467 + EnumValue11468 + EnumValue11469 + EnumValue11470 + EnumValue11471 + EnumValue11472 + EnumValue11473 + EnumValue11474 + EnumValue11475 + EnumValue11476 + EnumValue11477 + EnumValue11478 + EnumValue11479 + EnumValue11480 + EnumValue11481 + EnumValue11482 + EnumValue11483 + EnumValue11484 + EnumValue11485 + EnumValue11486 + EnumValue11487 + EnumValue11488 + EnumValue11489 + EnumValue11490 + EnumValue11491 + EnumValue11492 + EnumValue11493 + EnumValue11494 + EnumValue11495 + EnumValue11496 + EnumValue11497 + EnumValue11498 + EnumValue11499 + EnumValue11500 + EnumValue11501 + EnumValue11502 + EnumValue11503 + EnumValue11504 + EnumValue11505 + EnumValue11506 + EnumValue11507 + EnumValue11508 + EnumValue11509 + EnumValue11510 + EnumValue11511 + EnumValue11512 + EnumValue11513 + EnumValue11514 + EnumValue11515 + EnumValue11516 + EnumValue11517 + EnumValue11518 + EnumValue11519 + EnumValue11520 + EnumValue11521 + EnumValue11522 + EnumValue11523 + EnumValue11524 + EnumValue11525 + EnumValue11526 + EnumValue11527 + EnumValue11528 + EnumValue11529 + EnumValue11530 + EnumValue11531 + EnumValue11532 + EnumValue11533 + EnumValue11534 + EnumValue11535 + EnumValue11536 + EnumValue11537 + EnumValue11538 + EnumValue11539 + EnumValue11540 + EnumValue11541 + EnumValue11542 + EnumValue11543 + EnumValue11544 + EnumValue11545 + EnumValue11546 + EnumValue11547 + EnumValue11548 + EnumValue11549 + EnumValue11550 + EnumValue11551 + EnumValue11552 + EnumValue11553 + EnumValue11554 + EnumValue11555 + EnumValue11556 + EnumValue11557 + EnumValue11558 + EnumValue11559 + EnumValue11560 + EnumValue11561 + EnumValue11562 + EnumValue11563 + EnumValue11564 + EnumValue11565 + EnumValue11566 + EnumValue11567 + EnumValue11568 + EnumValue11569 + EnumValue11570 + EnumValue11571 + EnumValue11572 + EnumValue11573 + EnumValue11574 + EnumValue11575 + EnumValue11576 + EnumValue11577 + EnumValue11578 + EnumValue11579 + EnumValue11580 + EnumValue11581 + EnumValue11582 + EnumValue11583 + EnumValue11584 + EnumValue11585 + EnumValue11586 + EnumValue11587 + EnumValue11588 + EnumValue11589 + EnumValue11590 + EnumValue11591 + EnumValue11592 + EnumValue11593 + EnumValue11594 + EnumValue11595 + EnumValue11596 + EnumValue11597 + EnumValue11598 + EnumValue11599 + EnumValue11600 + EnumValue11601 + EnumValue11602 + EnumValue11603 + EnumValue11604 + EnumValue11605 + EnumValue11606 + EnumValue11607 + EnumValue11608 + EnumValue11609 + EnumValue11610 + EnumValue11611 + EnumValue11612 + EnumValue11613 + EnumValue11614 + EnumValue11615 + EnumValue11616 + EnumValue11617 + EnumValue11618 + EnumValue11619 + EnumValue11620 + EnumValue11621 + EnumValue11622 + EnumValue11623 + EnumValue11624 + EnumValue11625 + EnumValue11626 + EnumValue11627 + EnumValue11628 + EnumValue11629 + EnumValue11630 + EnumValue11631 + EnumValue11632 + EnumValue11633 + EnumValue11634 + EnumValue11635 + EnumValue11636 + EnumValue11637 + EnumValue11638 + EnumValue11639 + EnumValue11640 + EnumValue11641 + EnumValue11642 + EnumValue11643 + EnumValue11644 + EnumValue11645 + EnumValue11646 + EnumValue11647 + EnumValue11648 + EnumValue11649 + EnumValue11650 + EnumValue11651 + EnumValue11652 + EnumValue11653 + EnumValue11654 + EnumValue11655 + EnumValue11656 + EnumValue11657 + EnumValue11658 + EnumValue11659 + EnumValue11660 + EnumValue11661 + EnumValue11662 + EnumValue11663 + EnumValue11664 + EnumValue11665 + EnumValue11666 + EnumValue11667 + EnumValue11668 + EnumValue11669 + EnumValue11670 + EnumValue11671 + EnumValue11672 + EnumValue11673 + EnumValue11674 + EnumValue11675 + EnumValue11676 + EnumValue11677 + EnumValue11678 + EnumValue11679 + EnumValue11680 + EnumValue11681 + EnumValue11682 + EnumValue11683 + EnumValue11684 + EnumValue11685 + EnumValue11686 + EnumValue11687 + EnumValue11688 + EnumValue11689 + EnumValue11690 + EnumValue11691 + EnumValue11692 + EnumValue11693 + EnumValue11694 + EnumValue11695 + EnumValue11696 + EnumValue11697 + EnumValue11698 + EnumValue11699 + EnumValue11700 + EnumValue11701 + EnumValue11702 + EnumValue11703 + EnumValue11704 + EnumValue11705 + EnumValue11706 + EnumValue11707 + EnumValue11708 + EnumValue11709 + EnumValue11710 + EnumValue11711 + EnumValue11712 + EnumValue11713 + EnumValue11714 + EnumValue11715 + EnumValue11716 + EnumValue11717 + EnumValue11718 + EnumValue11719 + EnumValue11720 + EnumValue11721 + EnumValue11722 + EnumValue11723 + EnumValue11724 + EnumValue11725 + EnumValue11726 + EnumValue11727 + EnumValue11728 + EnumValue11729 + EnumValue11730 + EnumValue11731 + EnumValue11732 + EnumValue11733 + EnumValue11734 + EnumValue11735 + EnumValue11736 + EnumValue11737 + EnumValue11738 + EnumValue11739 + EnumValue11740 + EnumValue11741 + EnumValue11742 + EnumValue11743 + EnumValue11744 + EnumValue11745 + EnumValue11746 + EnumValue11747 + EnumValue11748 + EnumValue11749 + EnumValue11750 + EnumValue11751 + EnumValue11752 + EnumValue11753 + EnumValue11754 + EnumValue11755 + EnumValue11756 + EnumValue11757 + EnumValue11758 + EnumValue11759 + EnumValue11760 + EnumValue11761 + EnumValue11762 + EnumValue11763 + EnumValue11764 + EnumValue11765 + EnumValue11766 + EnumValue11767 + EnumValue11768 + EnumValue11769 + EnumValue11770 + EnumValue11771 + EnumValue11772 + EnumValue11773 + EnumValue11774 + EnumValue11775 + EnumValue11776 + EnumValue11777 + EnumValue11778 + EnumValue11779 + EnumValue11780 + EnumValue11781 + EnumValue11782 + EnumValue11783 + EnumValue11784 + EnumValue11785 + EnumValue11786 + EnumValue11787 + EnumValue11788 + EnumValue11789 + EnumValue11790 + EnumValue11791 + EnumValue11792 + EnumValue11793 + EnumValue11794 + EnumValue11795 + EnumValue11796 + EnumValue11797 + EnumValue11798 + EnumValue11799 + EnumValue11800 + EnumValue11801 + EnumValue11802 + EnumValue11803 + EnumValue11804 + EnumValue11805 + EnumValue11806 + EnumValue11807 + EnumValue11808 + EnumValue11809 + EnumValue11810 + EnumValue11811 + EnumValue11812 + EnumValue11813 + EnumValue11814 + EnumValue11815 + EnumValue11816 + EnumValue11817 + EnumValue11818 + EnumValue11819 + EnumValue11820 + EnumValue11821 + EnumValue11822 + EnumValue11823 + EnumValue11824 + EnumValue11825 + EnumValue11826 + EnumValue11827 + EnumValue11828 + EnumValue11829 + EnumValue11830 + EnumValue11831 + EnumValue11832 + EnumValue11833 + EnumValue11834 + EnumValue11835 + EnumValue11836 + EnumValue11837 + EnumValue11838 + EnumValue11839 + EnumValue11840 + EnumValue11841 + EnumValue11842 + EnumValue11843 + EnumValue11844 + EnumValue11845 + EnumValue11846 + EnumValue11847 + EnumValue11848 + EnumValue11849 + EnumValue11850 + EnumValue11851 + EnumValue11852 + EnumValue11853 + EnumValue11854 + EnumValue11855 + EnumValue11856 + EnumValue11857 + EnumValue11858 + EnumValue11859 + EnumValue11860 + EnumValue11861 + EnumValue11862 + EnumValue11863 + EnumValue11864 + EnumValue11865 + EnumValue11866 + EnumValue11867 + EnumValue11868 + EnumValue11869 + EnumValue11870 + EnumValue11871 + EnumValue11872 + EnumValue11873 + EnumValue11874 + EnumValue11875 + EnumValue11876 + EnumValue11877 + EnumValue11878 + EnumValue11879 + EnumValue11880 + EnumValue11881 + EnumValue11882 + EnumValue11883 + EnumValue11884 + EnumValue11885 + EnumValue11886 + EnumValue11887 + EnumValue11888 + EnumValue11889 + EnumValue11890 + EnumValue11891 + EnumValue11892 + EnumValue11893 + EnumValue11894 + EnumValue11895 + EnumValue11896 + EnumValue11897 + EnumValue11898 + EnumValue11899 + EnumValue11900 + EnumValue11901 + EnumValue11902 + EnumValue11903 + EnumValue11904 + EnumValue11905 + EnumValue11906 + EnumValue11907 + EnumValue11908 + EnumValue11909 + EnumValue11910 + EnumValue11911 + EnumValue11912 + EnumValue11913 + EnumValue11914 + EnumValue11915 + EnumValue11916 + EnumValue11917 + EnumValue11918 + EnumValue11919 + EnumValue11920 + EnumValue11921 + EnumValue11922 + EnumValue11923 + EnumValue11924 + EnumValue11925 + EnumValue11926 + EnumValue11927 + EnumValue11928 + EnumValue11929 + EnumValue11930 + EnumValue11931 + EnumValue11932 + EnumValue11933 + EnumValue11934 + EnumValue11935 + EnumValue11936 + EnumValue11937 + EnumValue11938 + EnumValue11939 + EnumValue11940 + EnumValue11941 + EnumValue11942 + EnumValue11943 + EnumValue11944 + EnumValue11945 + EnumValue11946 + EnumValue11947 + EnumValue11948 + EnumValue11949 + EnumValue11950 + EnumValue11951 + EnumValue11952 + EnumValue11953 + EnumValue11954 + EnumValue11955 + EnumValue11956 + EnumValue11957 + EnumValue11958 + EnumValue11959 + EnumValue11960 + EnumValue11961 + EnumValue11962 + EnumValue11963 + EnumValue11964 + EnumValue11965 + EnumValue11966 + EnumValue11967 + EnumValue11968 + EnumValue11969 + EnumValue11970 + EnumValue11971 + EnumValue11972 + EnumValue11973 + EnumValue11974 + EnumValue11975 + EnumValue11976 + EnumValue11977 + EnumValue11978 + EnumValue11979 + EnumValue11980 + EnumValue11981 + EnumValue11982 + EnumValue11983 + EnumValue11984 + EnumValue11985 + EnumValue11986 + EnumValue11987 + EnumValue11988 + EnumValue11989 + EnumValue11990 + EnumValue11991 + EnumValue11992 + EnumValue11993 + EnumValue11994 + EnumValue11995 + EnumValue11996 + EnumValue11997 + EnumValue11998 + EnumValue11999 + EnumValue12000 + EnumValue12001 + EnumValue12002 + EnumValue12003 + EnumValue12004 + EnumValue12005 + EnumValue12006 + EnumValue12007 + EnumValue12008 +} + +enum Enum56 @Directive44(argument97 : ["stringValue378"]) { + EnumValue1783 + EnumValue1784 + EnumValue1785 + EnumValue1786 + EnumValue1787 + EnumValue1788 + EnumValue1789 + EnumValue1790 +} + +enum Enum560 @Directive44(argument97 : ["stringValue13315"]) { + EnumValue12009 + EnumValue12010 + EnumValue12011 + EnumValue12012 + EnumValue12013 + EnumValue12014 + EnumValue12015 + EnumValue12016 + EnumValue12017 + EnumValue12018 + EnumValue12019 +} + +enum Enum561 @Directive44(argument97 : ["stringValue13320"]) { + EnumValue12020 + EnumValue12021 + EnumValue12022 + EnumValue12023 + EnumValue12024 +} + +enum Enum562 @Directive44(argument97 : ["stringValue13407"]) { + EnumValue12025 + EnumValue12026 + EnumValue12027 + EnumValue12028 + EnumValue12029 + EnumValue12030 + EnumValue12031 +} + +enum Enum563 @Directive44(argument97 : ["stringValue13421"]) { + EnumValue12032 + EnumValue12033 + EnumValue12034 +} + +enum Enum564 @Directive44(argument97 : ["stringValue13422"]) { + EnumValue12035 + EnumValue12036 + EnumValue12037 + EnumValue12038 + EnumValue12039 + EnumValue12040 + EnumValue12041 + EnumValue12042 +} + +enum Enum565 @Directive44(argument97 : ["stringValue13429"]) { + EnumValue12043 + EnumValue12044 + EnumValue12045 +} + +enum Enum566 @Directive44(argument97 : ["stringValue13431"]) { + EnumValue12046 + EnumValue12047 + EnumValue12048 + EnumValue12049 +} + +enum Enum567 @Directive44(argument97 : ["stringValue13432"]) { + EnumValue12050 + EnumValue12051 + EnumValue12052 +} + +enum Enum568 @Directive44(argument97 : ["stringValue13435"]) { + EnumValue12053 + EnumValue12054 + EnumValue12055 + EnumValue12056 + EnumValue12057 + EnumValue12058 + EnumValue12059 + EnumValue12060 + EnumValue12061 + EnumValue12062 + EnumValue12063 + EnumValue12064 + EnumValue12065 + EnumValue12066 + EnumValue12067 + EnumValue12068 + EnumValue12069 + EnumValue12070 + EnumValue12071 + EnumValue12072 + EnumValue12073 + EnumValue12074 + EnumValue12075 + EnumValue12076 + EnumValue12077 + EnumValue12078 + EnumValue12079 + EnumValue12080 + EnumValue12081 + EnumValue12082 + EnumValue12083 + EnumValue12084 + EnumValue12085 + EnumValue12086 + EnumValue12087 + EnumValue12088 + EnumValue12089 + EnumValue12090 + EnumValue12091 + EnumValue12092 + EnumValue12093 + EnumValue12094 + EnumValue12095 + EnumValue12096 + EnumValue12097 + EnumValue12098 + EnumValue12099 + EnumValue12100 + EnumValue12101 + EnumValue12102 +} + +enum Enum569 @Directive44(argument97 : ["stringValue13436"]) { + EnumValue12103 + EnumValue12104 + EnumValue12105 + EnumValue12106 + EnumValue12107 +} + +enum Enum57 @Directive44(argument97 : ["stringValue387"]) { + EnumValue1791 + EnumValue1792 + EnumValue1793 + EnumValue1794 + EnumValue1795 + EnumValue1796 + EnumValue1797 + EnumValue1798 + EnumValue1799 + EnumValue1800 + EnumValue1801 + EnumValue1802 + EnumValue1803 + EnumValue1804 + EnumValue1805 + EnumValue1806 + EnumValue1807 +} + +enum Enum570 @Directive44(argument97 : ["stringValue13437"]) { + EnumValue12108 + EnumValue12109 + EnumValue12110 + EnumValue12111 + EnumValue12112 + EnumValue12113 + EnumValue12114 + EnumValue12115 + EnumValue12116 +} + +enum Enum571 @Directive44(argument97 : ["stringValue13442"]) { + EnumValue12117 + EnumValue12118 + EnumValue12119 +} + +enum Enum572 @Directive44(argument97 : ["stringValue13459"]) { + EnumValue12120 + EnumValue12121 + EnumValue12122 + EnumValue12123 +} + +enum Enum573 @Directive44(argument97 : ["stringValue13460"]) { + EnumValue12124 + EnumValue12125 + EnumValue12126 + EnumValue12127 +} + +enum Enum574 @Directive44(argument97 : ["stringValue13463"]) { + EnumValue12128 + EnumValue12129 + EnumValue12130 + EnumValue12131 + EnumValue12132 +} + +enum Enum575 @Directive44(argument97 : ["stringValue13464"]) { + EnumValue12133 + EnumValue12134 + EnumValue12135 +} + +enum Enum576 @Directive44(argument97 : ["stringValue13467"]) { + EnumValue12136 + EnumValue12137 + EnumValue12138 +} + +enum Enum577 @Directive44(argument97 : ["stringValue13471"]) { + EnumValue12139 + EnumValue12140 + EnumValue12141 + EnumValue12142 +} + +enum Enum578 @Directive44(argument97 : ["stringValue13476"]) { + EnumValue12143 + EnumValue12144 + EnumValue12145 + EnumValue12146 +} + +enum Enum579 @Directive44(argument97 : ["stringValue13479"]) { + EnumValue12147 + EnumValue12148 + EnumValue12149 + EnumValue12150 +} + +enum Enum58 @Directive44(argument97 : ["stringValue388"]) { + EnumValue1808 + EnumValue1809 + EnumValue1810 + EnumValue1811 + EnumValue1812 + EnumValue1813 + EnumValue1814 + EnumValue1815 + EnumValue1816 +} + +enum Enum580 @Directive44(argument97 : ["stringValue13500"]) { + EnumValue12151 + EnumValue12152 + EnumValue12153 + EnumValue12154 + EnumValue12155 + EnumValue12156 + EnumValue12157 + EnumValue12158 + EnumValue12159 + EnumValue12160 + EnumValue12161 + EnumValue12162 + EnumValue12163 + EnumValue12164 + EnumValue12165 + EnumValue12166 + EnumValue12167 + EnumValue12168 + EnumValue12169 + EnumValue12170 + EnumValue12171 + EnumValue12172 + EnumValue12173 + EnumValue12174 + EnumValue12175 + EnumValue12176 + EnumValue12177 + EnumValue12178 + EnumValue12179 + EnumValue12180 + EnumValue12181 + EnumValue12182 + EnumValue12183 + EnumValue12184 + EnumValue12185 + EnumValue12186 + EnumValue12187 + EnumValue12188 + EnumValue12189 + EnumValue12190 + EnumValue12191 + EnumValue12192 + EnumValue12193 + EnumValue12194 + EnumValue12195 + EnumValue12196 + EnumValue12197 + EnumValue12198 + EnumValue12199 + EnumValue12200 + EnumValue12201 + EnumValue12202 + EnumValue12203 + EnumValue12204 + EnumValue12205 + EnumValue12206 + EnumValue12207 + EnumValue12208 + EnumValue12209 + EnumValue12210 + EnumValue12211 + EnumValue12212 + EnumValue12213 + EnumValue12214 + EnumValue12215 + EnumValue12216 + EnumValue12217 + EnumValue12218 + EnumValue12219 + EnumValue12220 + EnumValue12221 + EnumValue12222 + EnumValue12223 + EnumValue12224 + EnumValue12225 + EnumValue12226 + EnumValue12227 + EnumValue12228 + EnumValue12229 + EnumValue12230 + EnumValue12231 + EnumValue12232 + EnumValue12233 + EnumValue12234 + EnumValue12235 + EnumValue12236 + EnumValue12237 + EnumValue12238 + EnumValue12239 + EnumValue12240 + EnumValue12241 + EnumValue12242 + EnumValue12243 + EnumValue12244 + EnumValue12245 + EnumValue12246 + EnumValue12247 + EnumValue12248 + EnumValue12249 + EnumValue12250 + EnumValue12251 + EnumValue12252 + EnumValue12253 + EnumValue12254 + EnumValue12255 + EnumValue12256 + EnumValue12257 + EnumValue12258 + EnumValue12259 + EnumValue12260 + EnumValue12261 + EnumValue12262 + EnumValue12263 + EnumValue12264 + EnumValue12265 + EnumValue12266 + EnumValue12267 + EnumValue12268 + EnumValue12269 + EnumValue12270 + EnumValue12271 + EnumValue12272 + EnumValue12273 + EnumValue12274 + EnumValue12275 + EnumValue12276 + EnumValue12277 + EnumValue12278 + EnumValue12279 + EnumValue12280 + EnumValue12281 + EnumValue12282 + EnumValue12283 + EnumValue12284 + EnumValue12285 + EnumValue12286 + EnumValue12287 + EnumValue12288 + EnumValue12289 + EnumValue12290 + EnumValue12291 + EnumValue12292 + EnumValue12293 + EnumValue12294 + EnumValue12295 + EnumValue12296 + EnumValue12297 + EnumValue12298 + EnumValue12299 + EnumValue12300 + EnumValue12301 + EnumValue12302 + EnumValue12303 + EnumValue12304 + EnumValue12305 + EnumValue12306 + EnumValue12307 + EnumValue12308 + EnumValue12309 + EnumValue12310 + EnumValue12311 + EnumValue12312 + EnumValue12313 + EnumValue12314 + EnumValue12315 + EnumValue12316 + EnumValue12317 + EnumValue12318 + EnumValue12319 + EnumValue12320 + EnumValue12321 + EnumValue12322 + EnumValue12323 + EnumValue12324 + EnumValue12325 + EnumValue12326 + EnumValue12327 + EnumValue12328 + EnumValue12329 + EnumValue12330 + EnumValue12331 + EnumValue12332 + EnumValue12333 + EnumValue12334 + EnumValue12335 + EnumValue12336 + EnumValue12337 + EnumValue12338 + EnumValue12339 + EnumValue12340 + EnumValue12341 + EnumValue12342 + EnumValue12343 + EnumValue12344 + EnumValue12345 + EnumValue12346 + EnumValue12347 + EnumValue12348 + EnumValue12349 + EnumValue12350 + EnumValue12351 + EnumValue12352 + EnumValue12353 + EnumValue12354 + EnumValue12355 + EnumValue12356 + EnumValue12357 + EnumValue12358 + EnumValue12359 + EnumValue12360 + EnumValue12361 + EnumValue12362 + EnumValue12363 + EnumValue12364 + EnumValue12365 + EnumValue12366 + EnumValue12367 + EnumValue12368 + EnumValue12369 + EnumValue12370 + EnumValue12371 + EnumValue12372 + EnumValue12373 + EnumValue12374 + EnumValue12375 + EnumValue12376 + EnumValue12377 + EnumValue12378 + EnumValue12379 + EnumValue12380 + EnumValue12381 + EnumValue12382 + EnumValue12383 + EnumValue12384 + EnumValue12385 + EnumValue12386 + EnumValue12387 + EnumValue12388 + EnumValue12389 + EnumValue12390 + EnumValue12391 + EnumValue12392 + EnumValue12393 + EnumValue12394 + EnumValue12395 + EnumValue12396 + EnumValue12397 + EnumValue12398 + EnumValue12399 + EnumValue12400 + EnumValue12401 + EnumValue12402 + EnumValue12403 + EnumValue12404 + EnumValue12405 + EnumValue12406 + EnumValue12407 + EnumValue12408 + EnumValue12409 + EnumValue12410 + EnumValue12411 + EnumValue12412 + EnumValue12413 + EnumValue12414 + EnumValue12415 + EnumValue12416 + EnumValue12417 + EnumValue12418 + EnumValue12419 + EnumValue12420 + EnumValue12421 + EnumValue12422 + EnumValue12423 + EnumValue12424 + EnumValue12425 + EnumValue12426 + EnumValue12427 + EnumValue12428 + EnumValue12429 + EnumValue12430 + EnumValue12431 + EnumValue12432 + EnumValue12433 + EnumValue12434 + EnumValue12435 + EnumValue12436 + EnumValue12437 + EnumValue12438 + EnumValue12439 + EnumValue12440 + EnumValue12441 + EnumValue12442 + EnumValue12443 + EnumValue12444 + EnumValue12445 + EnumValue12446 + EnumValue12447 + EnumValue12448 + EnumValue12449 + EnumValue12450 + EnumValue12451 + EnumValue12452 + EnumValue12453 + EnumValue12454 + EnumValue12455 + EnumValue12456 + EnumValue12457 + EnumValue12458 + EnumValue12459 + EnumValue12460 + EnumValue12461 + EnumValue12462 + EnumValue12463 + EnumValue12464 + EnumValue12465 + EnumValue12466 + EnumValue12467 + EnumValue12468 + EnumValue12469 + EnumValue12470 + EnumValue12471 + EnumValue12472 + EnumValue12473 + EnumValue12474 + EnumValue12475 + EnumValue12476 + EnumValue12477 + EnumValue12478 + EnumValue12479 + EnumValue12480 + EnumValue12481 + EnumValue12482 + EnumValue12483 + EnumValue12484 + EnumValue12485 + EnumValue12486 + EnumValue12487 + EnumValue12488 + EnumValue12489 + EnumValue12490 + EnumValue12491 + EnumValue12492 + EnumValue12493 + EnumValue12494 + EnumValue12495 + EnumValue12496 + EnumValue12497 + EnumValue12498 + EnumValue12499 + EnumValue12500 + EnumValue12501 + EnumValue12502 + EnumValue12503 + EnumValue12504 + EnumValue12505 + EnumValue12506 + EnumValue12507 + EnumValue12508 + EnumValue12509 + EnumValue12510 + EnumValue12511 + EnumValue12512 + EnumValue12513 + EnumValue12514 + EnumValue12515 + EnumValue12516 + EnumValue12517 + EnumValue12518 + EnumValue12519 + EnumValue12520 + EnumValue12521 + EnumValue12522 + EnumValue12523 + EnumValue12524 + EnumValue12525 + EnumValue12526 + EnumValue12527 + EnumValue12528 + EnumValue12529 + EnumValue12530 + EnumValue12531 + EnumValue12532 + EnumValue12533 + EnumValue12534 + EnumValue12535 + EnumValue12536 + EnumValue12537 + EnumValue12538 + EnumValue12539 + EnumValue12540 + EnumValue12541 + EnumValue12542 + EnumValue12543 + EnumValue12544 + EnumValue12545 + EnumValue12546 + EnumValue12547 + EnumValue12548 + EnumValue12549 + EnumValue12550 + EnumValue12551 + EnumValue12552 + EnumValue12553 + EnumValue12554 + EnumValue12555 + EnumValue12556 + EnumValue12557 + EnumValue12558 + EnumValue12559 + EnumValue12560 + EnumValue12561 + EnumValue12562 + EnumValue12563 + EnumValue12564 + EnumValue12565 + EnumValue12566 + EnumValue12567 + EnumValue12568 + EnumValue12569 + EnumValue12570 + EnumValue12571 + EnumValue12572 + EnumValue12573 + EnumValue12574 + EnumValue12575 + EnumValue12576 + EnumValue12577 + EnumValue12578 + EnumValue12579 + EnumValue12580 + EnumValue12581 + EnumValue12582 + EnumValue12583 + EnumValue12584 + EnumValue12585 + EnumValue12586 + EnumValue12587 + EnumValue12588 + EnumValue12589 + EnumValue12590 + EnumValue12591 + EnumValue12592 + EnumValue12593 + EnumValue12594 + EnumValue12595 + EnumValue12596 + EnumValue12597 + EnumValue12598 + EnumValue12599 + EnumValue12600 + EnumValue12601 + EnumValue12602 + EnumValue12603 + EnumValue12604 + EnumValue12605 + EnumValue12606 + EnumValue12607 + EnumValue12608 + EnumValue12609 + EnumValue12610 + EnumValue12611 + EnumValue12612 + EnumValue12613 + EnumValue12614 + EnumValue12615 + EnumValue12616 + EnumValue12617 + EnumValue12618 + EnumValue12619 + EnumValue12620 + EnumValue12621 + EnumValue12622 + EnumValue12623 + EnumValue12624 + EnumValue12625 + EnumValue12626 + EnumValue12627 + EnumValue12628 + EnumValue12629 + EnumValue12630 + EnumValue12631 + EnumValue12632 + EnumValue12633 + EnumValue12634 + EnumValue12635 + EnumValue12636 + EnumValue12637 + EnumValue12638 + EnumValue12639 + EnumValue12640 + EnumValue12641 + EnumValue12642 + EnumValue12643 + EnumValue12644 + EnumValue12645 + EnumValue12646 + EnumValue12647 + EnumValue12648 + EnumValue12649 + EnumValue12650 + EnumValue12651 + EnumValue12652 + EnumValue12653 + EnumValue12654 + EnumValue12655 + EnumValue12656 + EnumValue12657 + EnumValue12658 + EnumValue12659 + EnumValue12660 + EnumValue12661 + EnumValue12662 + EnumValue12663 + EnumValue12664 + EnumValue12665 + EnumValue12666 + EnumValue12667 + EnumValue12668 + EnumValue12669 + EnumValue12670 + EnumValue12671 + EnumValue12672 + EnumValue12673 + EnumValue12674 + EnumValue12675 + EnumValue12676 + EnumValue12677 + EnumValue12678 + EnumValue12679 + EnumValue12680 + EnumValue12681 + EnumValue12682 + EnumValue12683 + EnumValue12684 + EnumValue12685 + EnumValue12686 + EnumValue12687 + EnumValue12688 + EnumValue12689 + EnumValue12690 + EnumValue12691 + EnumValue12692 + EnumValue12693 + EnumValue12694 + EnumValue12695 + EnumValue12696 + EnumValue12697 + EnumValue12698 + EnumValue12699 + EnumValue12700 + EnumValue12701 + EnumValue12702 + EnumValue12703 + EnumValue12704 + EnumValue12705 + EnumValue12706 + EnumValue12707 + EnumValue12708 + EnumValue12709 + EnumValue12710 + EnumValue12711 + EnumValue12712 + EnumValue12713 + EnumValue12714 + EnumValue12715 + EnumValue12716 + EnumValue12717 + EnumValue12718 + EnumValue12719 + EnumValue12720 + EnumValue12721 + EnumValue12722 + EnumValue12723 + EnumValue12724 + EnumValue12725 + EnumValue12726 + EnumValue12727 + EnumValue12728 + EnumValue12729 + EnumValue12730 + EnumValue12731 + EnumValue12732 + EnumValue12733 + EnumValue12734 + EnumValue12735 + EnumValue12736 + EnumValue12737 + EnumValue12738 + EnumValue12739 + EnumValue12740 + EnumValue12741 + EnumValue12742 + EnumValue12743 + EnumValue12744 + EnumValue12745 + EnumValue12746 + EnumValue12747 + EnumValue12748 + EnumValue12749 + EnumValue12750 + EnumValue12751 + EnumValue12752 + EnumValue12753 + EnumValue12754 + EnumValue12755 + EnumValue12756 + EnumValue12757 + EnumValue12758 + EnumValue12759 + EnumValue12760 + EnumValue12761 + EnumValue12762 + EnumValue12763 + EnumValue12764 + EnumValue12765 + EnumValue12766 + EnumValue12767 + EnumValue12768 + EnumValue12769 + EnumValue12770 + EnumValue12771 + EnumValue12772 + EnumValue12773 + EnumValue12774 + EnumValue12775 + EnumValue12776 + EnumValue12777 + EnumValue12778 + EnumValue12779 + EnumValue12780 + EnumValue12781 + EnumValue12782 + EnumValue12783 + EnumValue12784 + EnumValue12785 + EnumValue12786 + EnumValue12787 + EnumValue12788 + EnumValue12789 + EnumValue12790 + EnumValue12791 + EnumValue12792 + EnumValue12793 + EnumValue12794 + EnumValue12795 + EnumValue12796 + EnumValue12797 + EnumValue12798 + EnumValue12799 + EnumValue12800 + EnumValue12801 + EnumValue12802 + EnumValue12803 + EnumValue12804 + EnumValue12805 + EnumValue12806 + EnumValue12807 + EnumValue12808 + EnumValue12809 + EnumValue12810 + EnumValue12811 +} + +enum Enum581 @Directive44(argument97 : ["stringValue13503"]) { + EnumValue12812 + EnumValue12813 + EnumValue12814 + EnumValue12815 + EnumValue12816 + EnumValue12817 + EnumValue12818 + EnumValue12819 + EnumValue12820 + EnumValue12821 + EnumValue12822 +} + +enum Enum582 @Directive44(argument97 : ["stringValue13508"]) { + EnumValue12823 + EnumValue12824 + EnumValue12825 + EnumValue12826 + EnumValue12827 +} + +enum Enum583 @Directive44(argument97 : ["stringValue13612"]) { + EnumValue12828 + EnumValue12829 + EnumValue12830 + EnumValue12831 + EnumValue12832 + EnumValue12833 + EnumValue12834 +} + +enum Enum584 @Directive44(argument97 : ["stringValue13662"]) { + EnumValue12835 + EnumValue12836 + EnumValue12837 +} + +enum Enum585 @Directive44(argument97 : ["stringValue13663"]) { + EnumValue12838 + EnumValue12839 + EnumValue12840 + EnumValue12841 + EnumValue12842 + EnumValue12843 + EnumValue12844 + EnumValue12845 +} + +enum Enum586 @Directive44(argument97 : ["stringValue13681"]) { + EnumValue12846 + EnumValue12847 + EnumValue12848 +} + +enum Enum587 @Directive44(argument97 : ["stringValue13683"]) { + EnumValue12849 + EnumValue12850 + EnumValue12851 + EnumValue12852 +} + +enum Enum588 @Directive44(argument97 : ["stringValue13684"]) { + EnumValue12853 + EnumValue12854 + EnumValue12855 +} + +enum Enum589 @Directive44(argument97 : ["stringValue13687"]) { + EnumValue12856 + EnumValue12857 + EnumValue12858 + EnumValue12859 + EnumValue12860 + EnumValue12861 + EnumValue12862 + EnumValue12863 + EnumValue12864 + EnumValue12865 + EnumValue12866 + EnumValue12867 + EnumValue12868 + EnumValue12869 + EnumValue12870 + EnumValue12871 + EnumValue12872 + EnumValue12873 + EnumValue12874 + EnumValue12875 + EnumValue12876 + EnumValue12877 + EnumValue12878 + EnumValue12879 + EnumValue12880 + EnumValue12881 + EnumValue12882 + EnumValue12883 + EnumValue12884 + EnumValue12885 + EnumValue12886 + EnumValue12887 + EnumValue12888 + EnumValue12889 + EnumValue12890 + EnumValue12891 + EnumValue12892 + EnumValue12893 + EnumValue12894 + EnumValue12895 + EnumValue12896 + EnumValue12897 + EnumValue12898 + EnumValue12899 + EnumValue12900 + EnumValue12901 + EnumValue12902 + EnumValue12903 + EnumValue12904 + EnumValue12905 +} + +enum Enum59 @Directive44(argument97 : ["stringValue391"]) { + EnumValue1817 + EnumValue1818 + EnumValue1819 + EnumValue1820 + EnumValue1821 + EnumValue1822 + EnumValue1823 + EnumValue1824 +} + +enum Enum590 @Directive44(argument97 : ["stringValue13688"]) { + EnumValue12906 + EnumValue12907 + EnumValue12908 + EnumValue12909 + EnumValue12910 +} + +enum Enum591 @Directive44(argument97 : ["stringValue13689"]) { + EnumValue12911 + EnumValue12912 + EnumValue12913 + EnumValue12914 + EnumValue12915 + EnumValue12916 + EnumValue12917 + EnumValue12918 + EnumValue12919 +} + +enum Enum592 @Directive44(argument97 : ["stringValue13694"]) { + EnumValue12920 + EnumValue12921 + EnumValue12922 +} + +enum Enum593 @Directive44(argument97 : ["stringValue13706"]) { + EnumValue12923 + EnumValue12924 + EnumValue12925 + EnumValue12926 +} + +enum Enum594 @Directive44(argument97 : ["stringValue13713"]) { + EnumValue12927 + EnumValue12928 + EnumValue12929 + EnumValue12930 + EnumValue12931 +} + +enum Enum595 @Directive44(argument97 : ["stringValue13732"]) { + EnumValue12932 + EnumValue12933 + EnumValue12934 + EnumValue12935 +} + +enum Enum596 @Directive44(argument97 : ["stringValue13733"]) { + EnumValue12936 + EnumValue12937 + EnumValue12938 + EnumValue12939 +} + +enum Enum597 @Directive44(argument97 : ["stringValue13736"]) { + EnumValue12940 + EnumValue12941 + EnumValue12942 + EnumValue12943 + EnumValue12944 +} + +enum Enum598 @Directive44(argument97 : ["stringValue13737"]) { + EnumValue12945 + EnumValue12946 + EnumValue12947 +} + +enum Enum599 @Directive44(argument97 : ["stringValue13740"]) { + EnumValue12948 + EnumValue12949 + EnumValue12950 +} + +enum Enum6 @Directive19(argument57 : "stringValue84") @Directive22(argument62 : "stringValue83") @Directive44(argument97 : ["stringValue85", "stringValue86"]) { + EnumValue19 + EnumValue20 + EnumValue21 + EnumValue22 + EnumValue23 + EnumValue24 + EnumValue25 + EnumValue26 + EnumValue27 + EnumValue28 + EnumValue29 + EnumValue30 + EnumValue31 + EnumValue32 + EnumValue33 + EnumValue34 + EnumValue35 + EnumValue36 + EnumValue37 + EnumValue38 + EnumValue39 + EnumValue40 + EnumValue41 + EnumValue42 + EnumValue43 + EnumValue44 + EnumValue45 + EnumValue46 + EnumValue47 + EnumValue48 + EnumValue49 + EnumValue50 + EnumValue51 + EnumValue52 + EnumValue53 + EnumValue54 + EnumValue55 + EnumValue56 + EnumValue57 + EnumValue58 + EnumValue59 + EnumValue60 + EnumValue61 + EnumValue62 + EnumValue63 + EnumValue64 + EnumValue65 + EnumValue66 + EnumValue67 +} + +enum Enum60 @Directive44(argument97 : ["stringValue392"]) { + EnumValue1825 + EnumValue1826 +} + +enum Enum600 @Directive44(argument97 : ["stringValue13747"]) { + EnumValue12951 + EnumValue12952 + EnumValue12953 + EnumValue12954 +} + +enum Enum601 @Directive44(argument97 : ["stringValue13750"]) { + EnumValue12955 + EnumValue12956 + EnumValue12957 + EnumValue12958 +} + +enum Enum602 @Directive44(argument97 : ["stringValue13776"]) { + EnumValue12959 + EnumValue12960 + EnumValue12961 + EnumValue12962 + EnumValue12963 + EnumValue12964 + EnumValue12965 + EnumValue12966 + EnumValue12967 + EnumValue12968 + EnumValue12969 + EnumValue12970 + EnumValue12971 + EnumValue12972 + EnumValue12973 + EnumValue12974 + EnumValue12975 + EnumValue12976 + EnumValue12977 + EnumValue12978 + EnumValue12979 + EnumValue12980 + EnumValue12981 + EnumValue12982 + EnumValue12983 + EnumValue12984 + EnumValue12985 + EnumValue12986 + EnumValue12987 + EnumValue12988 + EnumValue12989 + EnumValue12990 + EnumValue12991 + EnumValue12992 + EnumValue12993 + EnumValue12994 + EnumValue12995 + EnumValue12996 + EnumValue12997 + EnumValue12998 + EnumValue12999 + EnumValue13000 + EnumValue13001 + EnumValue13002 + EnumValue13003 + EnumValue13004 + EnumValue13005 + EnumValue13006 + EnumValue13007 + EnumValue13008 + EnumValue13009 + EnumValue13010 + EnumValue13011 + EnumValue13012 + EnumValue13013 + EnumValue13014 + EnumValue13015 + EnumValue13016 + EnumValue13017 + EnumValue13018 + EnumValue13019 + EnumValue13020 + EnumValue13021 + EnumValue13022 + EnumValue13023 + EnumValue13024 + EnumValue13025 + EnumValue13026 + EnumValue13027 + EnumValue13028 + EnumValue13029 + EnumValue13030 + EnumValue13031 + EnumValue13032 + EnumValue13033 + EnumValue13034 + EnumValue13035 + EnumValue13036 + EnumValue13037 + EnumValue13038 + EnumValue13039 + EnumValue13040 + EnumValue13041 + EnumValue13042 + EnumValue13043 + EnumValue13044 + EnumValue13045 + EnumValue13046 + EnumValue13047 + EnumValue13048 + EnumValue13049 + EnumValue13050 + EnumValue13051 + EnumValue13052 + EnumValue13053 + EnumValue13054 + EnumValue13055 + EnumValue13056 + EnumValue13057 + EnumValue13058 + EnumValue13059 + EnumValue13060 + EnumValue13061 + EnumValue13062 + EnumValue13063 + EnumValue13064 + EnumValue13065 + EnumValue13066 + EnumValue13067 + EnumValue13068 + EnumValue13069 + EnumValue13070 + EnumValue13071 + EnumValue13072 + EnumValue13073 + EnumValue13074 + EnumValue13075 + EnumValue13076 + EnumValue13077 + EnumValue13078 + EnumValue13079 + EnumValue13080 + EnumValue13081 + EnumValue13082 + EnumValue13083 + EnumValue13084 + EnumValue13085 + EnumValue13086 + EnumValue13087 + EnumValue13088 + EnumValue13089 + EnumValue13090 + EnumValue13091 + EnumValue13092 + EnumValue13093 + EnumValue13094 + EnumValue13095 + EnumValue13096 + EnumValue13097 + EnumValue13098 + EnumValue13099 + EnumValue13100 + EnumValue13101 + EnumValue13102 + EnumValue13103 + EnumValue13104 + EnumValue13105 + EnumValue13106 + EnumValue13107 + EnumValue13108 + EnumValue13109 + EnumValue13110 + EnumValue13111 + EnumValue13112 + EnumValue13113 + EnumValue13114 + EnumValue13115 + EnumValue13116 + EnumValue13117 + EnumValue13118 + EnumValue13119 + EnumValue13120 + EnumValue13121 + EnumValue13122 + EnumValue13123 + EnumValue13124 + EnumValue13125 + EnumValue13126 + EnumValue13127 + EnumValue13128 + EnumValue13129 + EnumValue13130 + EnumValue13131 + EnumValue13132 + EnumValue13133 + EnumValue13134 + EnumValue13135 + EnumValue13136 + EnumValue13137 + EnumValue13138 + EnumValue13139 + EnumValue13140 + EnumValue13141 + EnumValue13142 + EnumValue13143 + EnumValue13144 + EnumValue13145 + EnumValue13146 + EnumValue13147 + EnumValue13148 + EnumValue13149 + EnumValue13150 + EnumValue13151 + EnumValue13152 + EnumValue13153 + EnumValue13154 + EnumValue13155 + EnumValue13156 + EnumValue13157 + EnumValue13158 + EnumValue13159 + EnumValue13160 + EnumValue13161 + EnumValue13162 + EnumValue13163 + EnumValue13164 + EnumValue13165 + EnumValue13166 + EnumValue13167 + EnumValue13168 + EnumValue13169 + EnumValue13170 + EnumValue13171 + EnumValue13172 + EnumValue13173 + EnumValue13174 + EnumValue13175 + EnumValue13176 + EnumValue13177 + EnumValue13178 + EnumValue13179 + EnumValue13180 + EnumValue13181 + EnumValue13182 + EnumValue13183 + EnumValue13184 + EnumValue13185 + EnumValue13186 + EnumValue13187 + EnumValue13188 + EnumValue13189 + EnumValue13190 + EnumValue13191 + EnumValue13192 + EnumValue13193 + EnumValue13194 + EnumValue13195 + EnumValue13196 + EnumValue13197 + EnumValue13198 + EnumValue13199 + EnumValue13200 + EnumValue13201 + EnumValue13202 + EnumValue13203 + EnumValue13204 + EnumValue13205 + EnumValue13206 + EnumValue13207 + EnumValue13208 + EnumValue13209 + EnumValue13210 + EnumValue13211 + EnumValue13212 + EnumValue13213 + EnumValue13214 + EnumValue13215 + EnumValue13216 + EnumValue13217 + EnumValue13218 + EnumValue13219 + EnumValue13220 + EnumValue13221 + EnumValue13222 + EnumValue13223 + EnumValue13224 + EnumValue13225 + EnumValue13226 + EnumValue13227 + EnumValue13228 + EnumValue13229 + EnumValue13230 + EnumValue13231 + EnumValue13232 + EnumValue13233 + EnumValue13234 + EnumValue13235 + EnumValue13236 + EnumValue13237 + EnumValue13238 + EnumValue13239 + EnumValue13240 + EnumValue13241 + EnumValue13242 + EnumValue13243 + EnumValue13244 + EnumValue13245 + EnumValue13246 + EnumValue13247 + EnumValue13248 + EnumValue13249 + EnumValue13250 + EnumValue13251 + EnumValue13252 + EnumValue13253 + EnumValue13254 + EnumValue13255 + EnumValue13256 + EnumValue13257 + EnumValue13258 + EnumValue13259 + EnumValue13260 + EnumValue13261 + EnumValue13262 + EnumValue13263 + EnumValue13264 + EnumValue13265 + EnumValue13266 + EnumValue13267 + EnumValue13268 + EnumValue13269 + EnumValue13270 + EnumValue13271 + EnumValue13272 + EnumValue13273 + EnumValue13274 + EnumValue13275 + EnumValue13276 + EnumValue13277 + EnumValue13278 + EnumValue13279 + EnumValue13280 + EnumValue13281 + EnumValue13282 + EnumValue13283 + EnumValue13284 + EnumValue13285 + EnumValue13286 + EnumValue13287 + EnumValue13288 + EnumValue13289 + EnumValue13290 + EnumValue13291 + EnumValue13292 + EnumValue13293 + EnumValue13294 + EnumValue13295 + EnumValue13296 + EnumValue13297 + EnumValue13298 + EnumValue13299 + EnumValue13300 + EnumValue13301 + EnumValue13302 + EnumValue13303 + EnumValue13304 + EnumValue13305 + EnumValue13306 + EnumValue13307 + EnumValue13308 + EnumValue13309 + EnumValue13310 + EnumValue13311 + EnumValue13312 + EnumValue13313 + EnumValue13314 + EnumValue13315 + EnumValue13316 + EnumValue13317 + EnumValue13318 + EnumValue13319 + EnumValue13320 + EnumValue13321 + EnumValue13322 + EnumValue13323 + EnumValue13324 + EnumValue13325 + EnumValue13326 + EnumValue13327 + EnumValue13328 + EnumValue13329 + EnumValue13330 + EnumValue13331 + EnumValue13332 + EnumValue13333 + EnumValue13334 + EnumValue13335 + EnumValue13336 + EnumValue13337 + EnumValue13338 + EnumValue13339 + EnumValue13340 + EnumValue13341 + EnumValue13342 + EnumValue13343 + EnumValue13344 + EnumValue13345 + EnumValue13346 + EnumValue13347 + EnumValue13348 + EnumValue13349 + EnumValue13350 + EnumValue13351 + EnumValue13352 + EnumValue13353 + EnumValue13354 + EnumValue13355 + EnumValue13356 + EnumValue13357 + EnumValue13358 + EnumValue13359 + EnumValue13360 + EnumValue13361 + EnumValue13362 + EnumValue13363 + EnumValue13364 + EnumValue13365 + EnumValue13366 + EnumValue13367 + EnumValue13368 + EnumValue13369 + EnumValue13370 + EnumValue13371 + EnumValue13372 + EnumValue13373 + EnumValue13374 + EnumValue13375 + EnumValue13376 + EnumValue13377 + EnumValue13378 + EnumValue13379 + EnumValue13380 + EnumValue13381 + EnumValue13382 + EnumValue13383 + EnumValue13384 + EnumValue13385 + EnumValue13386 + EnumValue13387 + EnumValue13388 + EnumValue13389 + EnumValue13390 + EnumValue13391 + EnumValue13392 + EnumValue13393 + EnumValue13394 + EnumValue13395 + EnumValue13396 + EnumValue13397 + EnumValue13398 + EnumValue13399 + EnumValue13400 + EnumValue13401 + EnumValue13402 + EnumValue13403 + EnumValue13404 + EnumValue13405 + EnumValue13406 + EnumValue13407 + EnumValue13408 + EnumValue13409 + EnumValue13410 + EnumValue13411 + EnumValue13412 + EnumValue13413 + EnumValue13414 + EnumValue13415 + EnumValue13416 + EnumValue13417 + EnumValue13418 + EnumValue13419 + EnumValue13420 + EnumValue13421 + EnumValue13422 + EnumValue13423 + EnumValue13424 + EnumValue13425 + EnumValue13426 + EnumValue13427 + EnumValue13428 + EnumValue13429 + EnumValue13430 + EnumValue13431 + EnumValue13432 + EnumValue13433 + EnumValue13434 + EnumValue13435 + EnumValue13436 + EnumValue13437 + EnumValue13438 + EnumValue13439 + EnumValue13440 + EnumValue13441 + EnumValue13442 + EnumValue13443 + EnumValue13444 + EnumValue13445 + EnumValue13446 + EnumValue13447 + EnumValue13448 + EnumValue13449 + EnumValue13450 + EnumValue13451 + EnumValue13452 + EnumValue13453 + EnumValue13454 + EnumValue13455 + EnumValue13456 + EnumValue13457 + EnumValue13458 + EnumValue13459 + EnumValue13460 + EnumValue13461 + EnumValue13462 + EnumValue13463 + EnumValue13464 + EnumValue13465 + EnumValue13466 + EnumValue13467 + EnumValue13468 + EnumValue13469 + EnumValue13470 + EnumValue13471 + EnumValue13472 + EnumValue13473 + EnumValue13474 + EnumValue13475 + EnumValue13476 + EnumValue13477 + EnumValue13478 + EnumValue13479 + EnumValue13480 + EnumValue13481 + EnumValue13482 + EnumValue13483 + EnumValue13484 + EnumValue13485 + EnumValue13486 + EnumValue13487 + EnumValue13488 + EnumValue13489 + EnumValue13490 + EnumValue13491 + EnumValue13492 + EnumValue13493 + EnumValue13494 + EnumValue13495 + EnumValue13496 + EnumValue13497 + EnumValue13498 + EnumValue13499 + EnumValue13500 + EnumValue13501 + EnumValue13502 + EnumValue13503 + EnumValue13504 + EnumValue13505 + EnumValue13506 + EnumValue13507 + EnumValue13508 + EnumValue13509 + EnumValue13510 + EnumValue13511 + EnumValue13512 + EnumValue13513 + EnumValue13514 + EnumValue13515 + EnumValue13516 + EnumValue13517 + EnumValue13518 + EnumValue13519 + EnumValue13520 + EnumValue13521 + EnumValue13522 + EnumValue13523 + EnumValue13524 + EnumValue13525 + EnumValue13526 + EnumValue13527 + EnumValue13528 + EnumValue13529 + EnumValue13530 + EnumValue13531 + EnumValue13532 + EnumValue13533 + EnumValue13534 + EnumValue13535 + EnumValue13536 + EnumValue13537 + EnumValue13538 + EnumValue13539 + EnumValue13540 + EnumValue13541 + EnumValue13542 + EnumValue13543 + EnumValue13544 + EnumValue13545 + EnumValue13546 + EnumValue13547 + EnumValue13548 + EnumValue13549 + EnumValue13550 + EnumValue13551 + EnumValue13552 + EnumValue13553 + EnumValue13554 + EnumValue13555 + EnumValue13556 + EnumValue13557 + EnumValue13558 + EnumValue13559 + EnumValue13560 + EnumValue13561 + EnumValue13562 + EnumValue13563 + EnumValue13564 + EnumValue13565 + EnumValue13566 + EnumValue13567 + EnumValue13568 + EnumValue13569 + EnumValue13570 + EnumValue13571 + EnumValue13572 + EnumValue13573 + EnumValue13574 + EnumValue13575 + EnumValue13576 + EnumValue13577 + EnumValue13578 + EnumValue13579 + EnumValue13580 + EnumValue13581 + EnumValue13582 + EnumValue13583 + EnumValue13584 + EnumValue13585 + EnumValue13586 + EnumValue13587 + EnumValue13588 + EnumValue13589 + EnumValue13590 + EnumValue13591 + EnumValue13592 + EnumValue13593 + EnumValue13594 + EnumValue13595 + EnumValue13596 + EnumValue13597 + EnumValue13598 + EnumValue13599 + EnumValue13600 + EnumValue13601 + EnumValue13602 + EnumValue13603 + EnumValue13604 + EnumValue13605 + EnumValue13606 + EnumValue13607 + EnumValue13608 + EnumValue13609 + EnumValue13610 + EnumValue13611 + EnumValue13612 + EnumValue13613 + EnumValue13614 + EnumValue13615 + EnumValue13616 + EnumValue13617 + EnumValue13618 + EnumValue13619 +} + +enum Enum603 @Directive44(argument97 : ["stringValue13925"]) { + EnumValue13620 + EnumValue13621 + EnumValue13622 + EnumValue13623 + EnumValue13624 +} + +enum Enum604 @Directive44(argument97 : ["stringValue13928"]) { + EnumValue13625 + EnumValue13626 + EnumValue13627 +} + +enum Enum605 @Directive44(argument97 : ["stringValue13939"]) { + EnumValue13628 + EnumValue13629 + EnumValue13630 + EnumValue13631 + EnumValue13632 +} + +enum Enum606 @Directive44(argument97 : ["stringValue13940"]) { + EnumValue13633 + EnumValue13634 + EnumValue13635 +} + +enum Enum607 @Directive44(argument97 : ["stringValue13943"]) { + EnumValue13636 + EnumValue13637 + EnumValue13638 + EnumValue13639 + EnumValue13640 +} + +enum Enum608 @Directive44(argument97 : ["stringValue13948"]) { + EnumValue13641 + EnumValue13642 + EnumValue13643 + EnumValue13644 + EnumValue13645 +} + +enum Enum609 @Directive44(argument97 : ["stringValue13953"]) { + EnumValue13646 + EnumValue13647 + EnumValue13648 + EnumValue13649 + EnumValue13650 +} + +enum Enum61 @Directive44(argument97 : ["stringValue398"]) { + EnumValue1827 + EnumValue1828 + EnumValue1829 + EnumValue1830 + EnumValue1831 + EnumValue1832 + EnumValue1833 + EnumValue1834 + EnumValue1835 + EnumValue1836 + EnumValue1837 + EnumValue1838 + EnumValue1839 + EnumValue1840 + EnumValue1841 + EnumValue1842 +} + +enum Enum610 @Directive44(argument97 : ["stringValue13956"]) { + EnumValue13651 + EnumValue13652 + EnumValue13653 + EnumValue13654 + EnumValue13655 + EnumValue13656 + EnumValue13657 + EnumValue13658 +} + +enum Enum611 @Directive44(argument97 : ["stringValue13961"]) { + EnumValue13659 + EnumValue13660 + EnumValue13661 + EnumValue13662 + EnumValue13663 +} + +enum Enum612 @Directive44(argument97 : ["stringValue13964"]) { + EnumValue13664 + EnumValue13665 + EnumValue13666 + EnumValue13667 + EnumValue13668 + EnumValue13669 + EnumValue13670 +} + +enum Enum613 @Directive44(argument97 : ["stringValue13967"]) { + EnumValue13671 + EnumValue13672 + EnumValue13673 + EnumValue13674 +} + +enum Enum614 @Directive44(argument97 : ["stringValue13972"]) { + EnumValue13675 + EnumValue13676 + EnumValue13677 + EnumValue13678 + EnumValue13679 + EnumValue13680 +} + +enum Enum615 @Directive44(argument97 : ["stringValue13975"]) { + EnumValue13681 + EnumValue13682 + EnumValue13683 + EnumValue13684 + EnumValue13685 + EnumValue13686 +} + +enum Enum616 @Directive44(argument97 : ["stringValue13978"]) { + EnumValue13687 + EnumValue13688 + EnumValue13689 +} + +enum Enum617 @Directive44(argument97 : ["stringValue13983"]) { + EnumValue13690 + EnumValue13691 + EnumValue13692 + EnumValue13693 + EnumValue13694 + EnumValue13695 + EnumValue13696 + EnumValue13697 + EnumValue13698 + EnumValue13699 + EnumValue13700 +} + +enum Enum618 @Directive44(argument97 : ["stringValue13988"]) { + EnumValue13701 + EnumValue13702 + EnumValue13703 +} + +enum Enum619 @Directive44(argument97 : ["stringValue13991"]) { + EnumValue13704 + EnumValue13705 + EnumValue13706 + EnumValue13707 +} + +enum Enum62 @Directive44(argument97 : ["stringValue410"]) { + EnumValue1843 + EnumValue1844 + EnumValue1845 + EnumValue1846 + EnumValue1847 + EnumValue1848 + EnumValue1849 + EnumValue1850 +} + +enum Enum620 @Directive44(argument97 : ["stringValue13996"]) { + EnumValue13708 + EnumValue13709 + EnumValue13710 + EnumValue13711 + EnumValue13712 + EnumValue13713 + EnumValue13714 +} + +enum Enum621 @Directive44(argument97 : ["stringValue13999"]) { + EnumValue13715 + EnumValue13716 + EnumValue13717 +} + +enum Enum622 @Directive44(argument97 : ["stringValue14002"]) { + EnumValue13718 + EnumValue13719 + EnumValue13720 +} + +enum Enum623 @Directive44(argument97 : ["stringValue14005"]) { + EnumValue13721 + EnumValue13722 + EnumValue13723 +} + +enum Enum624 @Directive44(argument97 : ["stringValue14008"]) { + EnumValue13724 + EnumValue13725 + EnumValue13726 + EnumValue13727 +} + +enum Enum625 @Directive44(argument97 : ["stringValue14015"]) { + EnumValue13728 + EnumValue13729 +} + +enum Enum626 @Directive44(argument97 : ["stringValue14018"]) { + EnumValue13730 + EnumValue13731 + EnumValue13732 + EnumValue13733 + EnumValue13734 + EnumValue13735 + EnumValue13736 + EnumValue13737 +} + +enum Enum627 @Directive44(argument97 : ["stringValue14023"]) { + EnumValue13738 + EnumValue13739 + EnumValue13740 +} + +enum Enum628 @Directive44(argument97 : ["stringValue14024"]) { + EnumValue13741 + EnumValue13742 + EnumValue13743 + EnumValue13744 + EnumValue13745 + EnumValue13746 + EnumValue13747 +} + +enum Enum629 @Directive44(argument97 : ["stringValue14035"]) { + EnumValue13748 + EnumValue13749 + EnumValue13750 + EnumValue13751 +} + +enum Enum63 @Directive44(argument97 : ["stringValue443"]) { + EnumValue1851 + EnumValue1852 + EnumValue1853 + EnumValue1854 +} + +enum Enum630 @Directive44(argument97 : ["stringValue14038"]) { + EnumValue13752 + EnumValue13753 + EnumValue13754 +} + +enum Enum631 @Directive44(argument97 : ["stringValue14041"]) { + EnumValue13755 + EnumValue13756 +} + +enum Enum632 @Directive44(argument97 : ["stringValue14044"]) { + EnumValue13757 + EnumValue13758 + EnumValue13759 + EnumValue13760 +} + +enum Enum633 @Directive44(argument97 : ["stringValue14045"]) { + EnumValue13761 + EnumValue13762 +} + +enum Enum634 @Directive44(argument97 : ["stringValue14048"]) { + EnumValue13763 + EnumValue13764 + EnumValue13765 +} + +enum Enum635 @Directive44(argument97 : ["stringValue14049"]) { + EnumValue13766 + EnumValue13767 + EnumValue13768 + EnumValue13769 + EnumValue13770 + EnumValue13771 + EnumValue13772 + EnumValue13773 + EnumValue13774 + EnumValue13775 + EnumValue13776 + EnumValue13777 +} + +enum Enum636 @Directive44(argument97 : ["stringValue14052"]) { + EnumValue13778 + EnumValue13779 + EnumValue13780 +} + +enum Enum637 @Directive44(argument97 : ["stringValue14055"]) { + EnumValue13781 + EnumValue13782 + EnumValue13783 + EnumValue13784 + EnumValue13785 +} + +enum Enum638 @Directive44(argument97 : ["stringValue14078"]) { + EnumValue13786 + EnumValue13787 + EnumValue13788 + EnumValue13789 + EnumValue13790 + EnumValue13791 + EnumValue13792 + EnumValue13793 + EnumValue13794 + EnumValue13795 + EnumValue13796 + EnumValue13797 + EnumValue13798 + EnumValue13799 + EnumValue13800 + EnumValue13801 + EnumValue13802 + EnumValue13803 + EnumValue13804 + EnumValue13805 + EnumValue13806 + EnumValue13807 + EnumValue13808 +} + +enum Enum639 @Directive44(argument97 : ["stringValue14079"]) { + EnumValue13809 + EnumValue13810 + EnumValue13811 +} + +enum Enum64 @Directive44(argument97 : ["stringValue444"]) { + EnumValue1855 + EnumValue1856 + EnumValue1857 + EnumValue1858 +} + +enum Enum640 @Directive44(argument97 : ["stringValue14096"]) { + EnumValue13812 + EnumValue13813 + EnumValue13814 + EnumValue13815 + EnumValue13816 +} + +enum Enum641 @Directive44(argument97 : ["stringValue14143"]) { + EnumValue13817 + EnumValue13818 + EnumValue13819 + EnumValue13820 + EnumValue13821 + EnumValue13822 + EnumValue13823 + EnumValue13824 + EnumValue13825 + EnumValue13826 + EnumValue13827 + EnumValue13828 + EnumValue13829 + EnumValue13830 + EnumValue13831 + EnumValue13832 + EnumValue13833 + EnumValue13834 + EnumValue13835 + EnumValue13836 + EnumValue13837 + EnumValue13838 + EnumValue13839 + EnumValue13840 + EnumValue13841 + EnumValue13842 + EnumValue13843 + EnumValue13844 + EnumValue13845 + EnumValue13846 + EnumValue13847 + EnumValue13848 + EnumValue13849 + EnumValue13850 + EnumValue13851 + EnumValue13852 + EnumValue13853 + EnumValue13854 + EnumValue13855 + EnumValue13856 + EnumValue13857 + EnumValue13858 + EnumValue13859 + EnumValue13860 + EnumValue13861 + EnumValue13862 + EnumValue13863 + EnumValue13864 +} + +enum Enum642 @Directive44(argument97 : ["stringValue14184"]) { + EnumValue13865 + EnumValue13866 +} + +enum Enum643 @Directive44(argument97 : ["stringValue14190"]) { + EnumValue13867 + EnumValue13868 + EnumValue13869 + EnumValue13870 + EnumValue13871 + EnumValue13872 + EnumValue13873 + EnumValue13874 +} + +enum Enum644 @Directive44(argument97 : ["stringValue14191"]) { + EnumValue13875 + EnumValue13876 + EnumValue13877 +} + +enum Enum645 @Directive44(argument97 : ["stringValue14198"]) { + EnumValue13878 + EnumValue13879 + EnumValue13880 +} + +enum Enum646 @Directive44(argument97 : ["stringValue14228"]) { + EnumValue13881 + EnumValue13882 + EnumValue13883 +} + +enum Enum647 @Directive44(argument97 : ["stringValue14229"]) { + EnumValue13884 + EnumValue13885 + EnumValue13886 +} + +enum Enum648 @Directive44(argument97 : ["stringValue14244"]) { + EnumValue13887 + EnumValue13888 + EnumValue13889 + EnumValue13890 + EnumValue13891 +} + +enum Enum649 @Directive44(argument97 : ["stringValue14257"]) { + EnumValue13892 + EnumValue13893 + EnumValue13894 + EnumValue13895 +} + +enum Enum65 @Directive44(argument97 : ["stringValue484"]) { + EnumValue1859 + EnumValue1860 + EnumValue1861 +} + +enum Enum650 @Directive44(argument97 : ["stringValue14262"]) { + EnumValue13896 + EnumValue13897 + EnumValue13898 + EnumValue13899 + EnumValue13900 + EnumValue13901 + EnumValue13902 + EnumValue13903 +} + +enum Enum651 @Directive44(argument97 : ["stringValue14275"]) { + EnumValue13904 + EnumValue13905 + EnumValue13906 + EnumValue13907 + EnumValue13908 + EnumValue13909 + EnumValue13910 + EnumValue13911 + EnumValue13912 + EnumValue13913 + EnumValue13914 + EnumValue13915 + EnumValue13916 + EnumValue13917 + EnumValue13918 + EnumValue13919 + EnumValue13920 + EnumValue13921 + EnumValue13922 + EnumValue13923 + EnumValue13924 + EnumValue13925 + EnumValue13926 + EnumValue13927 + EnumValue13928 + EnumValue13929 + EnumValue13930 + EnumValue13931 + EnumValue13932 + EnumValue13933 + EnumValue13934 + EnumValue13935 + EnumValue13936 + EnumValue13937 + EnumValue13938 + EnumValue13939 + EnumValue13940 +} + +enum Enum652 @Directive44(argument97 : ["stringValue14292"]) { + EnumValue13941 + EnumValue13942 + EnumValue13943 + EnumValue13944 + EnumValue13945 +} + +enum Enum653 @Directive44(argument97 : ["stringValue14303"]) { + EnumValue13946 + EnumValue13947 + EnumValue13948 + EnumValue13949 +} + +enum Enum654 @Directive44(argument97 : ["stringValue14318"]) { + EnumValue13950 + EnumValue13951 + EnumValue13952 + EnumValue13953 + EnumValue13954 +} + +enum Enum655 @Directive44(argument97 : ["stringValue14361"]) { + EnumValue13955 + EnumValue13956 + EnumValue13957 +} + +enum Enum656 @Directive44(argument97 : ["stringValue14366"]) { + EnumValue13958 + EnumValue13959 + EnumValue13960 + EnumValue13961 +} + +enum Enum657 @Directive44(argument97 : ["stringValue14373"]) { + EnumValue13962 + EnumValue13963 + EnumValue13964 + EnumValue13965 +} + +enum Enum658 @Directive44(argument97 : ["stringValue14457"]) { + EnumValue13966 + EnumValue13967 + EnumValue13968 + EnumValue13969 +} + +enum Enum659 @Directive22(argument62 : "stringValue14530") @Directive44(argument97 : ["stringValue14531", "stringValue14532"]) { + EnumValue13970 + EnumValue13971 + EnumValue13972 + EnumValue13973 + EnumValue13974 + EnumValue13975 +} + +enum Enum66 @Directive44(argument97 : ["stringValue491"]) { + EnumValue1862 + EnumValue1863 + EnumValue1864 + EnumValue1865 +} + +enum Enum660 @Directive22(argument62 : "stringValue14536") @Directive44(argument97 : ["stringValue14537", "stringValue14538"]) { + EnumValue13976 + EnumValue13977 +} + +enum Enum661 @Directive22(argument62 : "stringValue14567") @Directive44(argument97 : ["stringValue14568", "stringValue14569"]) { + EnumValue13978 + EnumValue13979 +} + +enum Enum662 @Directive22(argument62 : "stringValue14581") @Directive44(argument97 : ["stringValue14582"]) { + EnumValue13980 + EnumValue13981 + EnumValue13982 + EnumValue13983 + EnumValue13984 + EnumValue13985 + EnumValue13986 + EnumValue13987 + EnumValue13988 + EnumValue13989 + EnumValue13990 + EnumValue13991 + EnumValue13992 + EnumValue13993 + EnumValue13994 +} + +enum Enum663 @Directive22(argument62 : "stringValue14593") @Directive44(argument97 : ["stringValue14594", "stringValue14595"]) { + EnumValue13995 + EnumValue13996 + EnumValue13997 +} + +enum Enum664 @Directive22(argument62 : "stringValue14606") @Directive44(argument97 : ["stringValue14607", "stringValue14608"]) { + EnumValue13998 + EnumValue13999 +} + +enum Enum665 @Directive22(argument62 : "stringValue14810") @Directive44(argument97 : ["stringValue14811", "stringValue14812"]) { + EnumValue14000 + EnumValue14001 + EnumValue14002 +} + +enum Enum666 @Directive22(argument62 : "stringValue14826") @Directive44(argument97 : ["stringValue14827", "stringValue14828"]) { + EnumValue14003 + EnumValue14004 +} + +enum Enum667 @Directive22(argument62 : "stringValue14841") @Directive44(argument97 : ["stringValue14842", "stringValue14843"]) { + EnumValue14005 + EnumValue14006 + EnumValue14007 + EnumValue14008 + EnumValue14009 + EnumValue14010 +} + +enum Enum668 @Directive19(argument57 : "stringValue14860") @Directive22(argument62 : "stringValue14859") @Directive44(argument97 : ["stringValue14861", "stringValue14862", "stringValue14863"]) { + EnumValue14011 + EnumValue14012 + EnumValue14013 + EnumValue14014 + EnumValue14015 + EnumValue14016 + EnumValue14017 + EnumValue14018 +} + +enum Enum669 @Directive19(argument57 : "stringValue14865") @Directive22(argument62 : "stringValue14864") @Directive44(argument97 : ["stringValue14866", "stringValue14867", "stringValue14868"]) { + EnumValue14019 + EnumValue14020 +} + +enum Enum67 @Directive44(argument97 : ["stringValue498"]) { + EnumValue1866 + EnumValue1867 + EnumValue1868 + EnumValue1869 +} + +enum Enum670 @Directive22(argument62 : "stringValue14887") @Directive44(argument97 : ["stringValue14888", "stringValue14889"]) { + EnumValue14021 + EnumValue14022 +} + +enum Enum671 @Directive19(argument57 : "stringValue14982") @Directive42(argument96 : ["stringValue14981"]) @Directive44(argument97 : ["stringValue14983", "stringValue14984", "stringValue14985"]) { + EnumValue14023 + EnumValue14024 + EnumValue14025 + EnumValue14026 + EnumValue14027 + EnumValue14028 + EnumValue14029 + EnumValue14030 + EnumValue14031 + EnumValue14032 + EnumValue14033 + EnumValue14034 + EnumValue14035 + EnumValue14036 + EnumValue14037 + EnumValue14038 + EnumValue14039 + EnumValue14040 + EnumValue14041 + EnumValue14042 + EnumValue14043 + EnumValue14044 + EnumValue14045 + EnumValue14046 + EnumValue14047 + EnumValue14048 + EnumValue14049 + EnumValue14050 + EnumValue14051 + EnumValue14052 + EnumValue14053 + EnumValue14054 + EnumValue14055 + EnumValue14056 + EnumValue14057 + EnumValue14058 + EnumValue14059 +} + +enum Enum672 @Directive19(argument57 : "stringValue14987") @Directive42(argument96 : ["stringValue14986"]) @Directive44(argument97 : ["stringValue14988", "stringValue14989", "stringValue14990"]) { + EnumValue14060 + EnumValue14061 +} + +enum Enum673 @Directive19(argument57 : "stringValue15013") @Directive22(argument62 : "stringValue15012") @Directive44(argument97 : ["stringValue15014", "stringValue15015", "stringValue15016"]) { + EnumValue14062 + EnumValue14063 + EnumValue14064 +} + +enum Enum674 @Directive19(argument57 : "stringValue15053") @Directive42(argument96 : ["stringValue15052"]) @Directive44(argument97 : ["stringValue15054", "stringValue15055", "stringValue15056"]) { + EnumValue14065 + EnumValue14066 +} + +enum Enum675 @Directive19(argument57 : "stringValue15058") @Directive42(argument96 : ["stringValue15057"]) @Directive44(argument97 : ["stringValue15059", "stringValue15060", "stringValue15061"]) { + EnumValue14067 + EnumValue14068 + EnumValue14069 +} + +enum Enum676 @Directive19(argument57 : "stringValue15070") @Directive42(argument96 : ["stringValue15069"]) @Directive44(argument97 : ["stringValue15071", "stringValue15072"]) { + EnumValue14070 + EnumValue14071 + EnumValue14072 +} + +enum Enum677 @Directive22(argument62 : "stringValue15137") @Directive44(argument97 : ["stringValue15138", "stringValue15139"]) { + EnumValue14073 + EnumValue14074 +} + +enum Enum678 @Directive22(argument62 : "stringValue15143") @Directive44(argument97 : ["stringValue15144", "stringValue15145"]) { + EnumValue14075 + EnumValue14076 + EnumValue14077 + EnumValue14078 +} + +enum Enum679 @Directive22(argument62 : "stringValue15179") @Directive44(argument97 : ["stringValue15180", "stringValue15181"]) { + EnumValue14079 + EnumValue14080 + EnumValue14081 +} + +enum Enum68 @Directive44(argument97 : ["stringValue515"]) { + EnumValue1870 + EnumValue1871 + EnumValue1872 + EnumValue1873 + EnumValue1874 +} + +enum Enum680 @Directive22(argument62 : "stringValue15205") @Directive44(argument97 : ["stringValue15206", "stringValue15207"]) { + EnumValue14082 + EnumValue14083 + EnumValue14084 + EnumValue14085 + EnumValue14086 + EnumValue14087 +} + +enum Enum681 @Directive22(argument62 : "stringValue15208") @Directive44(argument97 : ["stringValue15209", "stringValue15210"]) { + EnumValue14088 + EnumValue14089 + EnumValue14090 +} + +enum Enum682 @Directive19(argument57 : "stringValue15227") @Directive22(argument62 : "stringValue15228") @Directive44(argument97 : ["stringValue15229", "stringValue15230", "stringValue15231"]) { + EnumValue14091 + EnumValue14092 + EnumValue14093 + EnumValue14094 + EnumValue14095 + EnumValue14096 + EnumValue14097 + EnumValue14098 + EnumValue14099 + EnumValue14100 + EnumValue14101 + EnumValue14102 + EnumValue14103 +} + +enum Enum683 @Directive22(argument62 : "stringValue15243") @Directive44(argument97 : ["stringValue15244", "stringValue15245"]) { + EnumValue14104 + EnumValue14105 +} + +enum Enum684 @Directive44(argument97 : ["stringValue15289"]) { + EnumValue14106 + EnumValue14107 + EnumValue14108 +} + +enum Enum685 @Directive44(argument97 : ["stringValue15290"]) { + EnumValue14109 + EnumValue14110 + EnumValue14111 + EnumValue14112 + EnumValue14113 + EnumValue14114 + EnumValue14115 + EnumValue14116 +} + +enum Enum686 @Directive44(argument97 : ["stringValue15308"]) { + EnumValue14117 + EnumValue14118 + EnumValue14119 +} + +enum Enum687 @Directive44(argument97 : ["stringValue15310"]) { + EnumValue14120 + EnumValue14121 + EnumValue14122 + EnumValue14123 +} + +enum Enum688 @Directive44(argument97 : ["stringValue15311"]) { + EnumValue14124 + EnumValue14125 + EnumValue14126 +} + +enum Enum689 @Directive44(argument97 : ["stringValue15314"]) { + EnumValue14127 + EnumValue14128 + EnumValue14129 + EnumValue14130 + EnumValue14131 + EnumValue14132 + EnumValue14133 + EnumValue14134 + EnumValue14135 + EnumValue14136 + EnumValue14137 + EnumValue14138 + EnumValue14139 + EnumValue14140 + EnumValue14141 + EnumValue14142 + EnumValue14143 + EnumValue14144 + EnumValue14145 + EnumValue14146 + EnumValue14147 + EnumValue14148 + EnumValue14149 + EnumValue14150 + EnumValue14151 + EnumValue14152 + EnumValue14153 + EnumValue14154 + EnumValue14155 + EnumValue14156 + EnumValue14157 + EnumValue14158 + EnumValue14159 + EnumValue14160 + EnumValue14161 + EnumValue14162 + EnumValue14163 + EnumValue14164 + EnumValue14165 + EnumValue14166 + EnumValue14167 + EnumValue14168 + EnumValue14169 + EnumValue14170 + EnumValue14171 + EnumValue14172 + EnumValue14173 + EnumValue14174 + EnumValue14175 + EnumValue14176 +} + +enum Enum69 @Directive44(argument97 : ["stringValue516"]) { + EnumValue1875 + EnumValue1876 + EnumValue1877 + EnumValue1878 + EnumValue1879 + EnumValue1880 + EnumValue1881 + EnumValue1882 +} + +enum Enum690 @Directive44(argument97 : ["stringValue15315"]) { + EnumValue14177 + EnumValue14178 + EnumValue14179 + EnumValue14180 + EnumValue14181 +} + +enum Enum691 @Directive44(argument97 : ["stringValue15316"]) { + EnumValue14182 + EnumValue14183 + EnumValue14184 + EnumValue14185 + EnumValue14186 + EnumValue14187 + EnumValue14188 + EnumValue14189 + EnumValue14190 +} + +enum Enum692 @Directive44(argument97 : ["stringValue15321"]) { + EnumValue14191 + EnumValue14192 + EnumValue14193 +} + +enum Enum693 @Directive44(argument97 : ["stringValue15351"]) { + EnumValue14194 + EnumValue14195 + EnumValue14196 + EnumValue14197 +} + +enum Enum694 @Directive44(argument97 : ["stringValue15354"]) { + EnumValue14198 + EnumValue14199 + EnumValue14200 + EnumValue14201 + EnumValue14202 + EnumValue14203 + EnumValue14204 + EnumValue14205 + EnumValue14206 + EnumValue14207 + EnumValue14208 + EnumValue14209 + EnumValue14210 + EnumValue14211 + EnumValue14212 + EnumValue14213 + EnumValue14214 + EnumValue14215 + EnumValue14216 + EnumValue14217 + EnumValue14218 + EnumValue14219 + EnumValue14220 + EnumValue14221 + EnumValue14222 + EnumValue14223 + EnumValue14224 + EnumValue14225 + EnumValue14226 + EnumValue14227 + EnumValue14228 + EnumValue14229 + EnumValue14230 + EnumValue14231 + EnumValue14232 + EnumValue14233 + EnumValue14234 + EnumValue14235 + EnumValue14236 + EnumValue14237 + EnumValue14238 + EnumValue14239 + EnumValue14240 + EnumValue14241 + EnumValue14242 + EnumValue14243 + EnumValue14244 + EnumValue14245 + EnumValue14246 + EnumValue14247 + EnumValue14248 + EnumValue14249 + EnumValue14250 + EnumValue14251 + EnumValue14252 + EnumValue14253 + EnumValue14254 + EnumValue14255 + EnumValue14256 + EnumValue14257 + EnumValue14258 + EnumValue14259 + EnumValue14260 + EnumValue14261 + EnumValue14262 + EnumValue14263 + EnumValue14264 + EnumValue14265 + EnumValue14266 + EnumValue14267 + EnumValue14268 + EnumValue14269 + EnumValue14270 + EnumValue14271 + EnumValue14272 + EnumValue14273 + EnumValue14274 + EnumValue14275 + EnumValue14276 + EnumValue14277 + EnumValue14278 + EnumValue14279 + EnumValue14280 + EnumValue14281 + EnumValue14282 + EnumValue14283 + EnumValue14284 + EnumValue14285 + EnumValue14286 + EnumValue14287 + EnumValue14288 + EnumValue14289 + EnumValue14290 + EnumValue14291 + EnumValue14292 + EnumValue14293 + EnumValue14294 + EnumValue14295 + EnumValue14296 + EnumValue14297 + EnumValue14298 + EnumValue14299 + EnumValue14300 + EnumValue14301 + EnumValue14302 + EnumValue14303 + EnumValue14304 + EnumValue14305 + EnumValue14306 + EnumValue14307 + EnumValue14308 + EnumValue14309 + EnumValue14310 + EnumValue14311 + EnumValue14312 + EnumValue14313 + EnumValue14314 + EnumValue14315 + EnumValue14316 + EnumValue14317 + EnumValue14318 + EnumValue14319 + EnumValue14320 + EnumValue14321 + EnumValue14322 + EnumValue14323 + EnumValue14324 + EnumValue14325 + EnumValue14326 + EnumValue14327 + EnumValue14328 + EnumValue14329 + EnumValue14330 + EnumValue14331 + EnumValue14332 + EnumValue14333 + EnumValue14334 + EnumValue14335 + EnumValue14336 + EnumValue14337 + EnumValue14338 + EnumValue14339 + EnumValue14340 + EnumValue14341 + EnumValue14342 + EnumValue14343 + EnumValue14344 + EnumValue14345 + EnumValue14346 + EnumValue14347 + EnumValue14348 + EnumValue14349 + EnumValue14350 + EnumValue14351 + EnumValue14352 + EnumValue14353 + EnumValue14354 + EnumValue14355 + EnumValue14356 + EnumValue14357 + EnumValue14358 + EnumValue14359 + EnumValue14360 + EnumValue14361 + EnumValue14362 + EnumValue14363 + EnumValue14364 + EnumValue14365 + EnumValue14366 + EnumValue14367 + EnumValue14368 + EnumValue14369 + EnumValue14370 + EnumValue14371 + EnumValue14372 + EnumValue14373 + EnumValue14374 + EnumValue14375 + EnumValue14376 + EnumValue14377 + EnumValue14378 + EnumValue14379 + EnumValue14380 + EnumValue14381 + EnumValue14382 + EnumValue14383 + EnumValue14384 + EnumValue14385 + EnumValue14386 + EnumValue14387 + EnumValue14388 + EnumValue14389 + EnumValue14390 + EnumValue14391 + EnumValue14392 + EnumValue14393 + EnumValue14394 + EnumValue14395 + EnumValue14396 + EnumValue14397 + EnumValue14398 + EnumValue14399 + EnumValue14400 + EnumValue14401 + EnumValue14402 + EnumValue14403 + EnumValue14404 + EnumValue14405 + EnumValue14406 + EnumValue14407 + EnumValue14408 + EnumValue14409 + EnumValue14410 + EnumValue14411 + EnumValue14412 + EnumValue14413 + EnumValue14414 + EnumValue14415 + EnumValue14416 + EnumValue14417 + EnumValue14418 + EnumValue14419 + EnumValue14420 + EnumValue14421 + EnumValue14422 + EnumValue14423 + EnumValue14424 + EnumValue14425 + EnumValue14426 + EnumValue14427 + EnumValue14428 + EnumValue14429 + EnumValue14430 + EnumValue14431 + EnumValue14432 + EnumValue14433 + EnumValue14434 + EnumValue14435 + EnumValue14436 + EnumValue14437 + EnumValue14438 + EnumValue14439 + EnumValue14440 + EnumValue14441 + EnumValue14442 + EnumValue14443 + EnumValue14444 + EnumValue14445 + EnumValue14446 + EnumValue14447 + EnumValue14448 + EnumValue14449 + EnumValue14450 + EnumValue14451 + EnumValue14452 + EnumValue14453 + EnumValue14454 + EnumValue14455 + EnumValue14456 + EnumValue14457 + EnumValue14458 + EnumValue14459 + EnumValue14460 + EnumValue14461 + EnumValue14462 + EnumValue14463 + EnumValue14464 + EnumValue14465 + EnumValue14466 + EnumValue14467 + EnumValue14468 + EnumValue14469 + EnumValue14470 + EnumValue14471 + EnumValue14472 + EnumValue14473 + EnumValue14474 + EnumValue14475 + EnumValue14476 + EnumValue14477 + EnumValue14478 + EnumValue14479 + EnumValue14480 + EnumValue14481 + EnumValue14482 + EnumValue14483 + EnumValue14484 + EnumValue14485 + EnumValue14486 + EnumValue14487 + EnumValue14488 + EnumValue14489 + EnumValue14490 + EnumValue14491 + EnumValue14492 + EnumValue14493 + EnumValue14494 + EnumValue14495 + EnumValue14496 + EnumValue14497 + EnumValue14498 + EnumValue14499 + EnumValue14500 + EnumValue14501 + EnumValue14502 + EnumValue14503 + EnumValue14504 + EnumValue14505 + EnumValue14506 + EnumValue14507 + EnumValue14508 + EnumValue14509 + EnumValue14510 + EnumValue14511 + EnumValue14512 + EnumValue14513 + EnumValue14514 + EnumValue14515 + EnumValue14516 + EnumValue14517 + EnumValue14518 + EnumValue14519 + EnumValue14520 + EnumValue14521 + EnumValue14522 + EnumValue14523 + EnumValue14524 + EnumValue14525 + EnumValue14526 + EnumValue14527 + EnumValue14528 + EnumValue14529 + EnumValue14530 + EnumValue14531 + EnumValue14532 + EnumValue14533 + EnumValue14534 + EnumValue14535 + EnumValue14536 + EnumValue14537 + EnumValue14538 + EnumValue14539 + EnumValue14540 + EnumValue14541 + EnumValue14542 + EnumValue14543 + EnumValue14544 + EnumValue14545 + EnumValue14546 + EnumValue14547 + EnumValue14548 + EnumValue14549 + EnumValue14550 + EnumValue14551 + EnumValue14552 + EnumValue14553 + EnumValue14554 + EnumValue14555 + EnumValue14556 + EnumValue14557 + EnumValue14558 + EnumValue14559 + EnumValue14560 + EnumValue14561 + EnumValue14562 + EnumValue14563 + EnumValue14564 + EnumValue14565 + EnumValue14566 + EnumValue14567 + EnumValue14568 + EnumValue14569 + EnumValue14570 + EnumValue14571 + EnumValue14572 + EnumValue14573 + EnumValue14574 + EnumValue14575 + EnumValue14576 + EnumValue14577 + EnumValue14578 + EnumValue14579 + EnumValue14580 + EnumValue14581 + EnumValue14582 + EnumValue14583 + EnumValue14584 + EnumValue14585 + EnumValue14586 + EnumValue14587 + EnumValue14588 + EnumValue14589 + EnumValue14590 + EnumValue14591 + EnumValue14592 + EnumValue14593 + EnumValue14594 + EnumValue14595 + EnumValue14596 + EnumValue14597 + EnumValue14598 + EnumValue14599 + EnumValue14600 + EnumValue14601 + EnumValue14602 + EnumValue14603 + EnumValue14604 + EnumValue14605 + EnumValue14606 + EnumValue14607 + EnumValue14608 + EnumValue14609 + EnumValue14610 + EnumValue14611 + EnumValue14612 + EnumValue14613 + EnumValue14614 + EnumValue14615 + EnumValue14616 + EnumValue14617 + EnumValue14618 + EnumValue14619 + EnumValue14620 + EnumValue14621 + EnumValue14622 + EnumValue14623 + EnumValue14624 + EnumValue14625 + EnumValue14626 + EnumValue14627 + EnumValue14628 + EnumValue14629 + EnumValue14630 + EnumValue14631 + EnumValue14632 + EnumValue14633 + EnumValue14634 + EnumValue14635 + EnumValue14636 + EnumValue14637 + EnumValue14638 + EnumValue14639 + EnumValue14640 + EnumValue14641 + EnumValue14642 + EnumValue14643 + EnumValue14644 + EnumValue14645 + EnumValue14646 + EnumValue14647 + EnumValue14648 + EnumValue14649 + EnumValue14650 + EnumValue14651 + EnumValue14652 + EnumValue14653 + EnumValue14654 + EnumValue14655 + EnumValue14656 + EnumValue14657 + EnumValue14658 + EnumValue14659 + EnumValue14660 + EnumValue14661 + EnumValue14662 + EnumValue14663 + EnumValue14664 + EnumValue14665 + EnumValue14666 + EnumValue14667 + EnumValue14668 + EnumValue14669 + EnumValue14670 + EnumValue14671 + EnumValue14672 + EnumValue14673 + EnumValue14674 + EnumValue14675 + EnumValue14676 + EnumValue14677 + EnumValue14678 + EnumValue14679 + EnumValue14680 + EnumValue14681 + EnumValue14682 + EnumValue14683 + EnumValue14684 + EnumValue14685 + EnumValue14686 + EnumValue14687 + EnumValue14688 + EnumValue14689 + EnumValue14690 + EnumValue14691 + EnumValue14692 + EnumValue14693 + EnumValue14694 + EnumValue14695 + EnumValue14696 + EnumValue14697 + EnumValue14698 + EnumValue14699 + EnumValue14700 + EnumValue14701 + EnumValue14702 + EnumValue14703 + EnumValue14704 + EnumValue14705 + EnumValue14706 + EnumValue14707 + EnumValue14708 + EnumValue14709 + EnumValue14710 + EnumValue14711 + EnumValue14712 + EnumValue14713 + EnumValue14714 + EnumValue14715 + EnumValue14716 + EnumValue14717 + EnumValue14718 + EnumValue14719 + EnumValue14720 + EnumValue14721 + EnumValue14722 + EnumValue14723 + EnumValue14724 + EnumValue14725 + EnumValue14726 + EnumValue14727 + EnumValue14728 + EnumValue14729 + EnumValue14730 + EnumValue14731 + EnumValue14732 + EnumValue14733 + EnumValue14734 + EnumValue14735 + EnumValue14736 + EnumValue14737 + EnumValue14738 + EnumValue14739 + EnumValue14740 + EnumValue14741 + EnumValue14742 + EnumValue14743 + EnumValue14744 + EnumValue14745 + EnumValue14746 + EnumValue14747 + EnumValue14748 + EnumValue14749 + EnumValue14750 + EnumValue14751 + EnumValue14752 + EnumValue14753 + EnumValue14754 + EnumValue14755 + EnumValue14756 + EnumValue14757 + EnumValue14758 + EnumValue14759 + EnumValue14760 + EnumValue14761 + EnumValue14762 + EnumValue14763 + EnumValue14764 + EnumValue14765 + EnumValue14766 + EnumValue14767 + EnumValue14768 + EnumValue14769 + EnumValue14770 + EnumValue14771 + EnumValue14772 + EnumValue14773 + EnumValue14774 + EnumValue14775 + EnumValue14776 + EnumValue14777 + EnumValue14778 + EnumValue14779 + EnumValue14780 + EnumValue14781 + EnumValue14782 + EnumValue14783 + EnumValue14784 + EnumValue14785 + EnumValue14786 + EnumValue14787 + EnumValue14788 + EnumValue14789 + EnumValue14790 + EnumValue14791 + EnumValue14792 + EnumValue14793 + EnumValue14794 + EnumValue14795 + EnumValue14796 + EnumValue14797 + EnumValue14798 + EnumValue14799 + EnumValue14800 + EnumValue14801 + EnumValue14802 + EnumValue14803 + EnumValue14804 + EnumValue14805 + EnumValue14806 + EnumValue14807 + EnumValue14808 + EnumValue14809 + EnumValue14810 + EnumValue14811 + EnumValue14812 + EnumValue14813 + EnumValue14814 + EnumValue14815 + EnumValue14816 + EnumValue14817 + EnumValue14818 + EnumValue14819 + EnumValue14820 + EnumValue14821 + EnumValue14822 + EnumValue14823 + EnumValue14824 + EnumValue14825 + EnumValue14826 + EnumValue14827 + EnumValue14828 + EnumValue14829 + EnumValue14830 + EnumValue14831 + EnumValue14832 + EnumValue14833 + EnumValue14834 + EnumValue14835 + EnumValue14836 + EnumValue14837 + EnumValue14838 + EnumValue14839 + EnumValue14840 + EnumValue14841 + EnumValue14842 + EnumValue14843 + EnumValue14844 + EnumValue14845 + EnumValue14846 + EnumValue14847 + EnumValue14848 + EnumValue14849 + EnumValue14850 + EnumValue14851 + EnumValue14852 + EnumValue14853 + EnumValue14854 + EnumValue14855 + EnumValue14856 + EnumValue14857 + EnumValue14858 +} + +enum Enum695 @Directive44(argument97 : ["stringValue15357"]) { + EnumValue14859 + EnumValue14860 + EnumValue14861 + EnumValue14862 + EnumValue14863 + EnumValue14864 + EnumValue14865 + EnumValue14866 + EnumValue14867 + EnumValue14868 + EnumValue14869 +} + +enum Enum696 @Directive44(argument97 : ["stringValue15362"]) { + EnumValue14870 + EnumValue14871 + EnumValue14872 + EnumValue14873 + EnumValue14874 +} + +enum Enum697 @Directive44(argument97 : ["stringValue15449"]) { + EnumValue14875 + EnumValue14876 + EnumValue14877 + EnumValue14878 + EnumValue14879 + EnumValue14880 + EnumValue14881 +} + +enum Enum698 @Directive22(argument62 : "stringValue15477") @Directive44(argument97 : ["stringValue15478", "stringValue15479"]) { + EnumValue14882 + EnumValue14883 + EnumValue14884 + EnumValue14885 + EnumValue14886 + EnumValue14887 +} + +enum Enum699 @Directive44(argument97 : ["stringValue15517"]) { + EnumValue14888 + EnumValue14889 + EnumValue14890 +} + +enum Enum7 @Directive19(argument57 : "stringValue88") @Directive22(argument62 : "stringValue87") @Directive44(argument97 : ["stringValue89", "stringValue90"]) { + EnumValue68 + EnumValue69 + EnumValue70 + EnumValue71 + EnumValue72 + EnumValue73 + EnumValue74 + EnumValue75 +} + +enum Enum70 @Directive44(argument97 : ["stringValue517"]) { + EnumValue1883 + EnumValue1884 + EnumValue1885 + EnumValue1886 + EnumValue1887 + EnumValue1888 +} + +enum Enum700 @Directive44(argument97 : ["stringValue15518"]) { + EnumValue14891 + EnumValue14892 + EnumValue14893 + EnumValue14894 + EnumValue14895 + EnumValue14896 + EnumValue14897 + EnumValue14898 +} + +enum Enum701 @Directive44(argument97 : ["stringValue15536"]) { + EnumValue14899 + EnumValue14900 + EnumValue14901 +} + +enum Enum702 @Directive44(argument97 : ["stringValue15538"]) { + EnumValue14902 + EnumValue14903 + EnumValue14904 + EnumValue14905 +} + +enum Enum703 @Directive44(argument97 : ["stringValue15539"]) { + EnumValue14906 + EnumValue14907 + EnumValue14908 +} + +enum Enum704 @Directive44(argument97 : ["stringValue15542"]) { + EnumValue14909 + EnumValue14910 + EnumValue14911 + EnumValue14912 + EnumValue14913 + EnumValue14914 + EnumValue14915 + EnumValue14916 + EnumValue14917 + EnumValue14918 + EnumValue14919 + EnumValue14920 + EnumValue14921 + EnumValue14922 + EnumValue14923 + EnumValue14924 + EnumValue14925 + EnumValue14926 + EnumValue14927 + EnumValue14928 + EnumValue14929 + EnumValue14930 + EnumValue14931 + EnumValue14932 + EnumValue14933 + EnumValue14934 + EnumValue14935 + EnumValue14936 + EnumValue14937 + EnumValue14938 + EnumValue14939 + EnumValue14940 + EnumValue14941 + EnumValue14942 + EnumValue14943 + EnumValue14944 + EnumValue14945 + EnumValue14946 + EnumValue14947 + EnumValue14948 + EnumValue14949 + EnumValue14950 + EnumValue14951 + EnumValue14952 + EnumValue14953 + EnumValue14954 + EnumValue14955 + EnumValue14956 + EnumValue14957 + EnumValue14958 +} + +enum Enum705 @Directive44(argument97 : ["stringValue15543"]) { + EnumValue14959 + EnumValue14960 + EnumValue14961 + EnumValue14962 + EnumValue14963 +} + +enum Enum706 @Directive44(argument97 : ["stringValue15544"]) { + EnumValue14964 + EnumValue14965 + EnumValue14966 + EnumValue14967 + EnumValue14968 + EnumValue14969 + EnumValue14970 + EnumValue14971 + EnumValue14972 +} + +enum Enum707 @Directive44(argument97 : ["stringValue15549"]) { + EnumValue14973 + EnumValue14974 + EnumValue14975 +} + +enum Enum708 @Directive44(argument97 : ["stringValue15561"]) { + EnumValue14976 + EnumValue14977 + EnumValue14978 + EnumValue14979 + EnumValue14980 + EnumValue14981 + EnumValue14982 +} + +enum Enum709 @Directive44(argument97 : ["stringValue15564"]) { + EnumValue14983 + EnumValue14984 + EnumValue14985 +} + +enum Enum71 @Directive44(argument97 : ["stringValue518"]) { + EnumValue1889 + EnumValue1890 +} + +enum Enum710 @Directive44(argument97 : ["stringValue15584"]) { + EnumValue14986 + EnumValue14987 + EnumValue14988 + EnumValue14989 +} + +enum Enum711 @Directive44(argument97 : ["stringValue15587"]) { + EnumValue14990 + EnumValue14991 + EnumValue14992 + EnumValue14993 + EnumValue14994 + EnumValue14995 + EnumValue14996 + EnumValue14997 + EnumValue14998 + EnumValue14999 + EnumValue15000 + EnumValue15001 + EnumValue15002 + EnumValue15003 + EnumValue15004 + EnumValue15005 + EnumValue15006 + EnumValue15007 + EnumValue15008 + EnumValue15009 + EnumValue15010 + EnumValue15011 + EnumValue15012 + EnumValue15013 + EnumValue15014 + EnumValue15015 + EnumValue15016 + EnumValue15017 + EnumValue15018 + EnumValue15019 + EnumValue15020 + EnumValue15021 + EnumValue15022 + EnumValue15023 + EnumValue15024 + EnumValue15025 + EnumValue15026 + EnumValue15027 + EnumValue15028 + EnumValue15029 + EnumValue15030 + EnumValue15031 + EnumValue15032 + EnumValue15033 + EnumValue15034 + EnumValue15035 + EnumValue15036 + EnumValue15037 + EnumValue15038 + EnumValue15039 + EnumValue15040 + EnumValue15041 + EnumValue15042 + EnumValue15043 + EnumValue15044 + EnumValue15045 + EnumValue15046 + EnumValue15047 + EnumValue15048 + EnumValue15049 + EnumValue15050 + EnumValue15051 + EnumValue15052 + EnumValue15053 + EnumValue15054 + EnumValue15055 + EnumValue15056 + EnumValue15057 + EnumValue15058 + EnumValue15059 + EnumValue15060 + EnumValue15061 + EnumValue15062 + EnumValue15063 + EnumValue15064 + EnumValue15065 + EnumValue15066 + EnumValue15067 + EnumValue15068 + EnumValue15069 + EnumValue15070 + EnumValue15071 + EnumValue15072 + EnumValue15073 + EnumValue15074 + EnumValue15075 + EnumValue15076 + EnumValue15077 + EnumValue15078 + EnumValue15079 + EnumValue15080 + EnumValue15081 + EnumValue15082 + EnumValue15083 + EnumValue15084 + EnumValue15085 + EnumValue15086 + EnumValue15087 + EnumValue15088 + EnumValue15089 + EnumValue15090 + EnumValue15091 + EnumValue15092 + EnumValue15093 + EnumValue15094 + EnumValue15095 + EnumValue15096 + EnumValue15097 + EnumValue15098 + EnumValue15099 + EnumValue15100 + EnumValue15101 + EnumValue15102 + EnumValue15103 + EnumValue15104 + EnumValue15105 + EnumValue15106 + EnumValue15107 + EnumValue15108 + EnumValue15109 + EnumValue15110 + EnumValue15111 + EnumValue15112 + EnumValue15113 + EnumValue15114 + EnumValue15115 + EnumValue15116 + EnumValue15117 + EnumValue15118 + EnumValue15119 + EnumValue15120 + EnumValue15121 + EnumValue15122 + EnumValue15123 + EnumValue15124 + EnumValue15125 + EnumValue15126 + EnumValue15127 + EnumValue15128 + EnumValue15129 + EnumValue15130 + EnumValue15131 + EnumValue15132 + EnumValue15133 + EnumValue15134 + EnumValue15135 + EnumValue15136 + EnumValue15137 + EnumValue15138 + EnumValue15139 + EnumValue15140 + EnumValue15141 + EnumValue15142 + EnumValue15143 + EnumValue15144 + EnumValue15145 + EnumValue15146 + EnumValue15147 + EnumValue15148 + EnumValue15149 + EnumValue15150 + EnumValue15151 + EnumValue15152 + EnumValue15153 + EnumValue15154 + EnumValue15155 + EnumValue15156 + EnumValue15157 + EnumValue15158 + EnumValue15159 + EnumValue15160 + EnumValue15161 + EnumValue15162 + EnumValue15163 + EnumValue15164 + EnumValue15165 + EnumValue15166 + EnumValue15167 + EnumValue15168 + EnumValue15169 + EnumValue15170 + EnumValue15171 + EnumValue15172 + EnumValue15173 + EnumValue15174 + EnumValue15175 + EnumValue15176 + EnumValue15177 + EnumValue15178 + EnumValue15179 + EnumValue15180 + EnumValue15181 + EnumValue15182 + EnumValue15183 + EnumValue15184 + EnumValue15185 + EnumValue15186 + EnumValue15187 + EnumValue15188 + EnumValue15189 + EnumValue15190 + EnumValue15191 + EnumValue15192 + EnumValue15193 + EnumValue15194 + EnumValue15195 + EnumValue15196 + EnumValue15197 + EnumValue15198 + EnumValue15199 + EnumValue15200 + EnumValue15201 + EnumValue15202 + EnumValue15203 + EnumValue15204 + EnumValue15205 + EnumValue15206 + EnumValue15207 + EnumValue15208 + EnumValue15209 + EnumValue15210 + EnumValue15211 + EnumValue15212 + EnumValue15213 + EnumValue15214 + EnumValue15215 + EnumValue15216 + EnumValue15217 + EnumValue15218 + EnumValue15219 + EnumValue15220 + EnumValue15221 + EnumValue15222 + EnumValue15223 + EnumValue15224 + EnumValue15225 + EnumValue15226 + EnumValue15227 + EnumValue15228 + EnumValue15229 + EnumValue15230 + EnumValue15231 + EnumValue15232 + EnumValue15233 + EnumValue15234 + EnumValue15235 + EnumValue15236 + EnumValue15237 + EnumValue15238 + EnumValue15239 + EnumValue15240 + EnumValue15241 + EnumValue15242 + EnumValue15243 + EnumValue15244 + EnumValue15245 + EnumValue15246 + EnumValue15247 + EnumValue15248 + EnumValue15249 + EnumValue15250 + EnumValue15251 + EnumValue15252 + EnumValue15253 + EnumValue15254 + EnumValue15255 + EnumValue15256 + EnumValue15257 + EnumValue15258 + EnumValue15259 + EnumValue15260 + EnumValue15261 + EnumValue15262 + EnumValue15263 + EnumValue15264 + EnumValue15265 + EnumValue15266 + EnumValue15267 + EnumValue15268 + EnumValue15269 + EnumValue15270 + EnumValue15271 + EnumValue15272 + EnumValue15273 + EnumValue15274 + EnumValue15275 + EnumValue15276 + EnumValue15277 + EnumValue15278 + EnumValue15279 + EnumValue15280 + EnumValue15281 + EnumValue15282 + EnumValue15283 + EnumValue15284 + EnumValue15285 + EnumValue15286 + EnumValue15287 + EnumValue15288 + EnumValue15289 + EnumValue15290 + EnumValue15291 + EnumValue15292 + EnumValue15293 + EnumValue15294 + EnumValue15295 + EnumValue15296 + EnumValue15297 + EnumValue15298 + EnumValue15299 + EnumValue15300 + EnumValue15301 + EnumValue15302 + EnumValue15303 + EnumValue15304 + EnumValue15305 + EnumValue15306 + EnumValue15307 + EnumValue15308 + EnumValue15309 + EnumValue15310 + EnumValue15311 + EnumValue15312 + EnumValue15313 + EnumValue15314 + EnumValue15315 + EnumValue15316 + EnumValue15317 + EnumValue15318 + EnumValue15319 + EnumValue15320 + EnumValue15321 + EnumValue15322 + EnumValue15323 + EnumValue15324 + EnumValue15325 + EnumValue15326 + EnumValue15327 + EnumValue15328 + EnumValue15329 + EnumValue15330 + EnumValue15331 + EnumValue15332 + EnumValue15333 + EnumValue15334 + EnumValue15335 + EnumValue15336 + EnumValue15337 + EnumValue15338 + EnumValue15339 + EnumValue15340 + EnumValue15341 + EnumValue15342 + EnumValue15343 + EnumValue15344 + EnumValue15345 + EnumValue15346 + EnumValue15347 + EnumValue15348 + EnumValue15349 + EnumValue15350 + EnumValue15351 + EnumValue15352 + EnumValue15353 + EnumValue15354 + EnumValue15355 + EnumValue15356 + EnumValue15357 + EnumValue15358 + EnumValue15359 + EnumValue15360 + EnumValue15361 + EnumValue15362 + EnumValue15363 + EnumValue15364 + EnumValue15365 + EnumValue15366 + EnumValue15367 + EnumValue15368 + EnumValue15369 + EnumValue15370 + EnumValue15371 + EnumValue15372 + EnumValue15373 + EnumValue15374 + EnumValue15375 + EnumValue15376 + EnumValue15377 + EnumValue15378 + EnumValue15379 + EnumValue15380 + EnumValue15381 + EnumValue15382 + EnumValue15383 + EnumValue15384 + EnumValue15385 + EnumValue15386 + EnumValue15387 + EnumValue15388 + EnumValue15389 + EnumValue15390 + EnumValue15391 + EnumValue15392 + EnumValue15393 + EnumValue15394 + EnumValue15395 + EnumValue15396 + EnumValue15397 + EnumValue15398 + EnumValue15399 + EnumValue15400 + EnumValue15401 + EnumValue15402 + EnumValue15403 + EnumValue15404 + EnumValue15405 + EnumValue15406 + EnumValue15407 + EnumValue15408 + EnumValue15409 + EnumValue15410 + EnumValue15411 + EnumValue15412 + EnumValue15413 + EnumValue15414 + EnumValue15415 + EnumValue15416 + EnumValue15417 + EnumValue15418 + EnumValue15419 + EnumValue15420 + EnumValue15421 + EnumValue15422 + EnumValue15423 + EnumValue15424 + EnumValue15425 + EnumValue15426 + EnumValue15427 + EnumValue15428 + EnumValue15429 + EnumValue15430 + EnumValue15431 + EnumValue15432 + EnumValue15433 + EnumValue15434 + EnumValue15435 + EnumValue15436 + EnumValue15437 + EnumValue15438 + EnumValue15439 + EnumValue15440 + EnumValue15441 + EnumValue15442 + EnumValue15443 + EnumValue15444 + EnumValue15445 + EnumValue15446 + EnumValue15447 + EnumValue15448 + EnumValue15449 + EnumValue15450 + EnumValue15451 + EnumValue15452 + EnumValue15453 + EnumValue15454 + EnumValue15455 + EnumValue15456 + EnumValue15457 + EnumValue15458 + EnumValue15459 + EnumValue15460 + EnumValue15461 + EnumValue15462 + EnumValue15463 + EnumValue15464 + EnumValue15465 + EnumValue15466 + EnumValue15467 + EnumValue15468 + EnumValue15469 + EnumValue15470 + EnumValue15471 + EnumValue15472 + EnumValue15473 + EnumValue15474 + EnumValue15475 + EnumValue15476 + EnumValue15477 + EnumValue15478 + EnumValue15479 + EnumValue15480 + EnumValue15481 + EnumValue15482 + EnumValue15483 + EnumValue15484 + EnumValue15485 + EnumValue15486 + EnumValue15487 + EnumValue15488 + EnumValue15489 + EnumValue15490 + EnumValue15491 + EnumValue15492 + EnumValue15493 + EnumValue15494 + EnumValue15495 + EnumValue15496 + EnumValue15497 + EnumValue15498 + EnumValue15499 + EnumValue15500 + EnumValue15501 + EnumValue15502 + EnumValue15503 + EnumValue15504 + EnumValue15505 + EnumValue15506 + EnumValue15507 + EnumValue15508 + EnumValue15509 + EnumValue15510 + EnumValue15511 + EnumValue15512 + EnumValue15513 + EnumValue15514 + EnumValue15515 + EnumValue15516 + EnumValue15517 + EnumValue15518 + EnumValue15519 + EnumValue15520 + EnumValue15521 + EnumValue15522 + EnumValue15523 + EnumValue15524 + EnumValue15525 + EnumValue15526 + EnumValue15527 + EnumValue15528 + EnumValue15529 + EnumValue15530 + EnumValue15531 + EnumValue15532 + EnumValue15533 + EnumValue15534 + EnumValue15535 + EnumValue15536 + EnumValue15537 + EnumValue15538 + EnumValue15539 + EnumValue15540 + EnumValue15541 + EnumValue15542 + EnumValue15543 + EnumValue15544 + EnumValue15545 + EnumValue15546 + EnumValue15547 + EnumValue15548 + EnumValue15549 + EnumValue15550 + EnumValue15551 + EnumValue15552 + EnumValue15553 + EnumValue15554 + EnumValue15555 + EnumValue15556 + EnumValue15557 + EnumValue15558 + EnumValue15559 + EnumValue15560 + EnumValue15561 + EnumValue15562 + EnumValue15563 + EnumValue15564 + EnumValue15565 + EnumValue15566 + EnumValue15567 + EnumValue15568 + EnumValue15569 + EnumValue15570 + EnumValue15571 + EnumValue15572 + EnumValue15573 + EnumValue15574 + EnumValue15575 + EnumValue15576 + EnumValue15577 + EnumValue15578 + EnumValue15579 + EnumValue15580 + EnumValue15581 + EnumValue15582 + EnumValue15583 + EnumValue15584 + EnumValue15585 + EnumValue15586 + EnumValue15587 + EnumValue15588 + EnumValue15589 + EnumValue15590 + EnumValue15591 + EnumValue15592 + EnumValue15593 + EnumValue15594 + EnumValue15595 + EnumValue15596 + EnumValue15597 + EnumValue15598 + EnumValue15599 + EnumValue15600 + EnumValue15601 + EnumValue15602 + EnumValue15603 + EnumValue15604 + EnumValue15605 + EnumValue15606 + EnumValue15607 + EnumValue15608 + EnumValue15609 + EnumValue15610 + EnumValue15611 + EnumValue15612 + EnumValue15613 + EnumValue15614 + EnumValue15615 + EnumValue15616 + EnumValue15617 + EnumValue15618 + EnumValue15619 + EnumValue15620 + EnumValue15621 + EnumValue15622 + EnumValue15623 + EnumValue15624 + EnumValue15625 + EnumValue15626 + EnumValue15627 + EnumValue15628 + EnumValue15629 + EnumValue15630 + EnumValue15631 + EnumValue15632 + EnumValue15633 + EnumValue15634 + EnumValue15635 + EnumValue15636 + EnumValue15637 + EnumValue15638 + EnumValue15639 + EnumValue15640 + EnumValue15641 + EnumValue15642 + EnumValue15643 + EnumValue15644 + EnumValue15645 + EnumValue15646 + EnumValue15647 + EnumValue15648 + EnumValue15649 + EnumValue15650 +} + +enum Enum712 @Directive44(argument97 : ["stringValue15592"]) { + EnumValue15651 + EnumValue15652 + EnumValue15653 + EnumValue15654 + EnumValue15655 + EnumValue15656 + EnumValue15657 + EnumValue15658 + EnumValue15659 + EnumValue15660 + EnumValue15661 +} + +enum Enum713 @Directive44(argument97 : ["stringValue15597"]) { + EnumValue15662 + EnumValue15663 + EnumValue15664 + EnumValue15665 + EnumValue15666 +} + +enum Enum714 @Directive44(argument97 : ["stringValue15686"]) { + EnumValue15667 + EnumValue15668 + EnumValue15669 + EnumValue15670 + EnumValue15671 + EnumValue15672 + EnumValue15673 +} + +enum Enum715 @Directive22(argument62 : "stringValue15710") @Directive44(argument97 : ["stringValue15711", "stringValue15712"]) { + EnumValue15674 + EnumValue15675 +} + +enum Enum716 @Directive19(argument57 : "stringValue15713") @Directive22(argument62 : "stringValue15716") @Directive44(argument97 : ["stringValue15714", "stringValue15715"]) { + EnumValue15676 + EnumValue15677 + EnumValue15678 + EnumValue15679 + EnumValue15680 + EnumValue15681 +} + +enum Enum717 @Directive19(argument57 : "stringValue15804") @Directive22(argument62 : "stringValue15802") @Directive24(argument64 : "stringValue15803") @Directive44(argument97 : ["stringValue15805", "stringValue15806"]) { + EnumValue15682 + EnumValue15683 + EnumValue15684 + EnumValue15685 +} + +enum Enum718 @Directive19(argument57 : "stringValue15812") @Directive22(argument62 : "stringValue15811") @Directive44(argument97 : ["stringValue15813", "stringValue15814"]) { + EnumValue15686 + EnumValue15687 +} + +enum Enum719 @Directive19(argument57 : "stringValue15840") @Directive22(argument62 : "stringValue15841") @Directive44(argument97 : ["stringValue15842", "stringValue15843"]) { + EnumValue15688 + EnumValue15689 + EnumValue15690 + EnumValue15691 +} + +enum Enum72 @Directive44(argument97 : ["stringValue523"]) { + EnumValue1891 + EnumValue1892 + EnumValue1893 + EnumValue1894 +} + +enum Enum720 @Directive19(argument57 : "stringValue15844") @Directive22(argument62 : "stringValue15845") @Directive44(argument97 : ["stringValue15846", "stringValue15847"]) { + EnumValue15692 + EnumValue15693 +} + +enum Enum721 @Directive19(argument57 : "stringValue15854") @Directive22(argument62 : "stringValue15852") @Directive24(argument64 : "stringValue15853") @Directive44(argument97 : ["stringValue15855", "stringValue15856"]) { + EnumValue15694 + EnumValue15695 + EnumValue15696 + EnumValue15697 +} + +enum Enum722 @Directive19(argument57 : "stringValue15867") @Directive22(argument62 : "stringValue15865") @Directive24(argument64 : "stringValue15866") @Directive44(argument97 : ["stringValue15868", "stringValue15869"]) { + EnumValue15698 + EnumValue15699 + EnumValue15700 + EnumValue15701 +} + +enum Enum723 @Directive19(argument57 : "stringValue15880") @Directive22(argument62 : "stringValue15879") @Directive44(argument97 : ["stringValue15881", "stringValue15882"]) { + EnumValue15702 + EnumValue15703 + EnumValue15704 + EnumValue15705 +} + +enum Enum724 @Directive19(argument57 : "stringValue15888") @Directive22(argument62 : "stringValue15889") @Directive44(argument97 : ["stringValue15890", "stringValue15891"]) { + EnumValue15706 + EnumValue15707 + EnumValue15708 + EnumValue15709 + EnumValue15710 + EnumValue15711 + EnumValue15712 +} + +enum Enum725 @Directive19(argument57 : "stringValue15902") @Directive22(argument62 : "stringValue15901") @Directive44(argument97 : ["stringValue15903", "stringValue15904"]) { + EnumValue15713 + EnumValue15714 + EnumValue15715 + EnumValue15716 +} + +enum Enum726 @Directive19(argument57 : "stringValue15910") @Directive22(argument62 : "stringValue15911") @Directive44(argument97 : ["stringValue15912", "stringValue15913"]) { + EnumValue15717 + EnumValue15718 + EnumValue15719 +} + +enum Enum727 @Directive19(argument57 : "stringValue15918") @Directive22(argument62 : "stringValue15919") @Directive44(argument97 : ["stringValue15920", "stringValue15921"]) { + EnumValue15720 + EnumValue15721 + EnumValue15722 + EnumValue15723 + EnumValue15724 + EnumValue15725 +} + +enum Enum728 @Directive19(argument57 : "stringValue15931") @Directive22(argument62 : "stringValue15932") @Directive44(argument97 : ["stringValue15933", "stringValue15934"]) { + EnumValue15726 + EnumValue15727 + EnumValue15728 + EnumValue15729 + EnumValue15730 +} + +enum Enum729 @Directive19(argument57 : "stringValue15939") @Directive22(argument62 : "stringValue15940") @Directive44(argument97 : ["stringValue15941", "stringValue15942"]) { + EnumValue15731 + EnumValue15732 + EnumValue15733 + EnumValue15734 + EnumValue15735 +} + +enum Enum73 @Directive44(argument97 : ["stringValue524"]) { + EnumValue1895 + EnumValue1896 + EnumValue1897 + EnumValue1898 + EnumValue1899 + EnumValue1900 +} + +enum Enum730 @Directive19(argument57 : "stringValue15948") @Directive22(argument62 : "stringValue15949") @Directive44(argument97 : ["stringValue15950", "stringValue15951"]) { + EnumValue15736 + EnumValue15737 +} + +enum Enum731 @Directive19(argument57 : "stringValue15962") @Directive22(argument62 : "stringValue15961") @Directive44(argument97 : ["stringValue15963", "stringValue15964"]) { + EnumValue15738 + EnumValue15739 + EnumValue15740 + EnumValue15741 + EnumValue15742 + EnumValue15743 + EnumValue15744 + EnumValue15745 + EnumValue15746 + EnumValue15747 +} + +enum Enum732 @Directive19(argument57 : "stringValue15974") @Directive22(argument62 : "stringValue15973") @Directive44(argument97 : ["stringValue15975", "stringValue15976"]) { + EnumValue15748 + EnumValue15749 +} + +enum Enum733 @Directive19(argument57 : "stringValue15983") @Directive22(argument62 : "stringValue15981") @Directive24(argument64 : "stringValue15982") @Directive44(argument97 : ["stringValue15984", "stringValue15985"]) { + EnumValue15750 + EnumValue15751 + EnumValue15752 +} + +enum Enum734 @Directive19(argument57 : "stringValue15995") @Directive22(argument62 : "stringValue15996") @Directive44(argument97 : ["stringValue15997", "stringValue15998"]) { + EnumValue15753 + EnumValue15754 + EnumValue15755 + EnumValue15756 + EnumValue15757 + EnumValue15758 +} + +enum Enum735 @Directive19(argument57 : "stringValue16004") @Directive22(argument62 : "stringValue16005") @Directive44(argument97 : ["stringValue16006", "stringValue16007"]) { + EnumValue15759 + EnumValue15760 +} + +enum Enum736 @Directive19(argument57 : "stringValue16015") @Directive22(argument62 : "stringValue16013") @Directive24(argument64 : "stringValue16014") @Directive44(argument97 : ["stringValue16016", "stringValue16017"]) { + EnumValue15761 + EnumValue15762 +} + +enum Enum737 @Directive19(argument57 : "stringValue16025") @Directive22(argument62 : "stringValue16023") @Directive24(argument64 : "stringValue16024") @Directive44(argument97 : ["stringValue16026", "stringValue16027"]) { + EnumValue15763 + EnumValue15764 +} + +enum Enum738 @Directive19(argument57 : "stringValue16035") @Directive22(argument62 : "stringValue16033") @Directive24(argument64 : "stringValue16034") @Directive44(argument97 : ["stringValue16036", "stringValue16037"]) { + EnumValue15765 + EnumValue15766 + EnumValue15767 +} + +enum Enum739 @Directive19(argument57 : "stringValue16053") @Directive22(argument62 : "stringValue16051") @Directive24(argument64 : "stringValue16052") @Directive44(argument97 : ["stringValue16054", "stringValue16055"]) { + EnumValue15768 +} + +enum Enum74 @Directive44(argument97 : ["stringValue525"]) { + EnumValue1901 + EnumValue1902 + EnumValue1903 + EnumValue1904 +} + +enum Enum740 @Directive19(argument57 : "stringValue16062") @Directive22(argument62 : "stringValue16060") @Directive24(argument64 : "stringValue16061") @Directive44(argument97 : ["stringValue16063", "stringValue16064"]) { + EnumValue15769 + EnumValue15770 + EnumValue15771 + EnumValue15772 + EnumValue15773 + EnumValue15774 + EnumValue15775 +} + +enum Enum741 @Directive19(argument57 : "stringValue16075") @Directive22(argument62 : "stringValue16074") @Directive44(argument97 : ["stringValue16076", "stringValue16077"]) { + EnumValue15776 + EnumValue15777 +} + +enum Enum742 @Directive19(argument57 : "stringValue16079") @Directive22(argument62 : "stringValue16078") @Directive44(argument97 : ["stringValue16080", "stringValue16081"]) { + EnumValue15778 + EnumValue15779 + EnumValue15780 + EnumValue15781 + EnumValue15782 + EnumValue15783 +} + +enum Enum743 @Directive19(argument57 : "stringValue16105") @Directive22(argument62 : "stringValue16104") @Directive44(argument97 : ["stringValue16106", "stringValue16107"]) { + EnumValue15784 + EnumValue15785 + EnumValue15786 +} + +enum Enum744 @Directive19(argument57 : "stringValue16114") @Directive22(argument62 : "stringValue16112") @Directive24(argument64 : "stringValue16113") @Directive44(argument97 : ["stringValue16115", "stringValue16116"]) { + EnumValue15787 + EnumValue15788 +} + +enum Enum745 @Directive19(argument57 : "stringValue16122") @Directive22(argument62 : "stringValue16123") @Directive44(argument97 : ["stringValue16124", "stringValue16125"]) { + EnumValue15789 +} + +enum Enum746 @Directive19(argument57 : "stringValue16132") @Directive22(argument62 : "stringValue16130") @Directive24(argument64 : "stringValue16131") @Directive44(argument97 : ["stringValue16133", "stringValue16134"]) { + EnumValue15790 + EnumValue15791 + EnumValue15792 +} + +enum Enum747 @Directive19(argument57 : "stringValue16137") @Directive22(argument62 : "stringValue16135") @Directive24(argument64 : "stringValue16136") @Directive44(argument97 : ["stringValue16138", "stringValue16139"]) { + EnumValue15793 +} + +enum Enum748 @Directive19(argument57 : "stringValue16145") @Directive22(argument62 : "stringValue16146") @Directive44(argument97 : ["stringValue16147", "stringValue16148"]) { + EnumValue15794 + EnumValue15795 +} + +enum Enum749 @Directive19(argument57 : "stringValue16149") @Directive22(argument62 : "stringValue16150") @Directive44(argument97 : ["stringValue16151", "stringValue16152"]) { + EnumValue15796 + EnumValue15797 + EnumValue15798 + EnumValue15799 + EnumValue15800 + EnumValue15801 + EnumValue15802 + EnumValue15803 + EnumValue15804 + EnumValue15805 + EnumValue15806 +} + +enum Enum75 @Directive44(argument97 : ["stringValue526"]) { + EnumValue1905 + EnumValue1906 + EnumValue1907 + EnumValue1908 + EnumValue1909 +} + +enum Enum750 @Directive19(argument57 : "stringValue16158") @Directive22(argument62 : "stringValue16159") @Directive44(argument97 : ["stringValue16160", "stringValue16161"]) { + EnumValue15807 + EnumValue15808 +} + +enum Enum751 @Directive19(argument57 : "stringValue16167") @Directive22(argument62 : "stringValue16166") @Directive44(argument97 : ["stringValue16168", "stringValue16169"]) { + EnumValue15809 + EnumValue15810 + EnumValue15811 + EnumValue15812 +} + +enum Enum752 @Directive19(argument57 : "stringValue16170") @Directive22(argument62 : "stringValue16171") @Directive44(argument97 : ["stringValue16172"]) { + EnumValue15813 + EnumValue15814 +} + +enum Enum753 @Directive44(argument97 : ["stringValue16182"]) { + EnumValue15815 + EnumValue15816 + EnumValue15817 +} + +enum Enum754 @Directive44(argument97 : ["stringValue16183"]) { + EnumValue15818 + EnumValue15819 + EnumValue15820 + EnumValue15821 + EnumValue15822 + EnumValue15823 + EnumValue15824 + EnumValue15825 +} + +enum Enum755 @Directive44(argument97 : ["stringValue16191"]) { + EnumValue15826 + EnumValue15827 + EnumValue15828 +} + +enum Enum756 @Directive44(argument97 : ["stringValue16193"]) { + EnumValue15829 + EnumValue15830 + EnumValue15831 + EnumValue15832 +} + +enum Enum757 @Directive44(argument97 : ["stringValue16194"]) { + EnumValue15833 + EnumValue15834 + EnumValue15835 +} + +enum Enum758 @Directive44(argument97 : ["stringValue16197"]) { + EnumValue15836 + EnumValue15837 + EnumValue15838 + EnumValue15839 + EnumValue15840 + EnumValue15841 + EnumValue15842 + EnumValue15843 + EnumValue15844 + EnumValue15845 + EnumValue15846 + EnumValue15847 + EnumValue15848 + EnumValue15849 + EnumValue15850 + EnumValue15851 + EnumValue15852 + EnumValue15853 + EnumValue15854 + EnumValue15855 + EnumValue15856 + EnumValue15857 + EnumValue15858 + EnumValue15859 + EnumValue15860 + EnumValue15861 + EnumValue15862 + EnumValue15863 + EnumValue15864 + EnumValue15865 + EnumValue15866 + EnumValue15867 + EnumValue15868 + EnumValue15869 + EnumValue15870 + EnumValue15871 + EnumValue15872 + EnumValue15873 + EnumValue15874 + EnumValue15875 + EnumValue15876 + EnumValue15877 + EnumValue15878 + EnumValue15879 + EnumValue15880 + EnumValue15881 + EnumValue15882 + EnumValue15883 + EnumValue15884 + EnumValue15885 +} + +enum Enum759 @Directive44(argument97 : ["stringValue16198"]) { + EnumValue15886 + EnumValue15887 + EnumValue15888 + EnumValue15889 + EnumValue15890 +} + +enum Enum76 @Directive44(argument97 : ["stringValue529"]) { + EnumValue1910 + EnumValue1911 + EnumValue1912 + EnumValue1913 +} + +enum Enum760 @Directive44(argument97 : ["stringValue16199"]) { + EnumValue15891 + EnumValue15892 + EnumValue15893 + EnumValue15894 + EnumValue15895 + EnumValue15896 + EnumValue15897 + EnumValue15898 + EnumValue15899 +} + +enum Enum761 @Directive44(argument97 : ["stringValue16204"]) { + EnumValue15900 + EnumValue15901 + EnumValue15902 +} + +enum Enum762 @Directive44(argument97 : ["stringValue16234"]) { + EnumValue15903 + EnumValue15904 + EnumValue15905 + EnumValue15906 +} + +enum Enum763 @Directive44(argument97 : ["stringValue16237"]) { + EnumValue15907 + EnumValue15908 + EnumValue15909 + EnumValue15910 + EnumValue15911 + EnumValue15912 + EnumValue15913 + EnumValue15914 + EnumValue15915 + EnumValue15916 + EnumValue15917 + EnumValue15918 + EnumValue15919 + EnumValue15920 + EnumValue15921 + EnumValue15922 + EnumValue15923 + EnumValue15924 + EnumValue15925 + EnumValue15926 + EnumValue15927 + EnumValue15928 + EnumValue15929 + EnumValue15930 + EnumValue15931 + EnumValue15932 + EnumValue15933 + EnumValue15934 + EnumValue15935 + EnumValue15936 + EnumValue15937 + EnumValue15938 + EnumValue15939 + EnumValue15940 + EnumValue15941 + EnumValue15942 + EnumValue15943 + EnumValue15944 + EnumValue15945 + EnumValue15946 + EnumValue15947 + EnumValue15948 + EnumValue15949 + EnumValue15950 + EnumValue15951 + EnumValue15952 + EnumValue15953 + EnumValue15954 + EnumValue15955 + EnumValue15956 + EnumValue15957 + EnumValue15958 + EnumValue15959 + EnumValue15960 + EnumValue15961 + EnumValue15962 + EnumValue15963 + EnumValue15964 + EnumValue15965 + EnumValue15966 + EnumValue15967 + EnumValue15968 + EnumValue15969 + EnumValue15970 + EnumValue15971 + EnumValue15972 + EnumValue15973 + EnumValue15974 + EnumValue15975 + EnumValue15976 + EnumValue15977 + EnumValue15978 + EnumValue15979 + EnumValue15980 + EnumValue15981 + EnumValue15982 + EnumValue15983 + EnumValue15984 + EnumValue15985 + EnumValue15986 + EnumValue15987 + EnumValue15988 + EnumValue15989 + EnumValue15990 + EnumValue15991 + EnumValue15992 + EnumValue15993 + EnumValue15994 + EnumValue15995 + EnumValue15996 + EnumValue15997 + EnumValue15998 + EnumValue15999 + EnumValue16000 + EnumValue16001 + EnumValue16002 + EnumValue16003 + EnumValue16004 + EnumValue16005 + EnumValue16006 + EnumValue16007 + EnumValue16008 + EnumValue16009 + EnumValue16010 + EnumValue16011 + EnumValue16012 + EnumValue16013 + EnumValue16014 + EnumValue16015 + EnumValue16016 + EnumValue16017 + EnumValue16018 + EnumValue16019 + EnumValue16020 + EnumValue16021 + EnumValue16022 + EnumValue16023 + EnumValue16024 + EnumValue16025 + EnumValue16026 + EnumValue16027 + EnumValue16028 + EnumValue16029 + EnumValue16030 + EnumValue16031 + EnumValue16032 + EnumValue16033 + EnumValue16034 + EnumValue16035 + EnumValue16036 + EnumValue16037 + EnumValue16038 + EnumValue16039 + EnumValue16040 + EnumValue16041 + EnumValue16042 + EnumValue16043 + EnumValue16044 + EnumValue16045 + EnumValue16046 + EnumValue16047 + EnumValue16048 + EnumValue16049 + EnumValue16050 + EnumValue16051 + EnumValue16052 + EnumValue16053 + EnumValue16054 + EnumValue16055 + EnumValue16056 + EnumValue16057 + EnumValue16058 + EnumValue16059 + EnumValue16060 + EnumValue16061 + EnumValue16062 + EnumValue16063 + EnumValue16064 + EnumValue16065 + EnumValue16066 + EnumValue16067 + EnumValue16068 + EnumValue16069 + EnumValue16070 + EnumValue16071 + EnumValue16072 + EnumValue16073 + EnumValue16074 + EnumValue16075 + EnumValue16076 + EnumValue16077 + EnumValue16078 + EnumValue16079 + EnumValue16080 + EnumValue16081 + EnumValue16082 + EnumValue16083 + EnumValue16084 + EnumValue16085 + EnumValue16086 + EnumValue16087 + EnumValue16088 + EnumValue16089 + EnumValue16090 + EnumValue16091 + EnumValue16092 + EnumValue16093 + EnumValue16094 + EnumValue16095 + EnumValue16096 + EnumValue16097 + EnumValue16098 + EnumValue16099 + EnumValue16100 + EnumValue16101 + EnumValue16102 + EnumValue16103 + EnumValue16104 + EnumValue16105 + EnumValue16106 + EnumValue16107 + EnumValue16108 + EnumValue16109 + EnumValue16110 + EnumValue16111 + EnumValue16112 + EnumValue16113 + EnumValue16114 + EnumValue16115 + EnumValue16116 + EnumValue16117 + EnumValue16118 + EnumValue16119 + EnumValue16120 + EnumValue16121 + EnumValue16122 + EnumValue16123 + EnumValue16124 + EnumValue16125 + EnumValue16126 + EnumValue16127 + EnumValue16128 + EnumValue16129 + EnumValue16130 + EnumValue16131 + EnumValue16132 + EnumValue16133 + EnumValue16134 + EnumValue16135 + EnumValue16136 + EnumValue16137 + EnumValue16138 + EnumValue16139 + EnumValue16140 + EnumValue16141 + EnumValue16142 + EnumValue16143 + EnumValue16144 + EnumValue16145 + EnumValue16146 + EnumValue16147 + EnumValue16148 + EnumValue16149 + EnumValue16150 + EnumValue16151 + EnumValue16152 + EnumValue16153 + EnumValue16154 + EnumValue16155 + EnumValue16156 + EnumValue16157 + EnumValue16158 + EnumValue16159 + EnumValue16160 + EnumValue16161 + EnumValue16162 + EnumValue16163 + EnumValue16164 + EnumValue16165 + EnumValue16166 + EnumValue16167 + EnumValue16168 + EnumValue16169 + EnumValue16170 + EnumValue16171 + EnumValue16172 + EnumValue16173 + EnumValue16174 + EnumValue16175 + EnumValue16176 + EnumValue16177 + EnumValue16178 + EnumValue16179 + EnumValue16180 + EnumValue16181 + EnumValue16182 + EnumValue16183 + EnumValue16184 + EnumValue16185 + EnumValue16186 + EnumValue16187 + EnumValue16188 + EnumValue16189 + EnumValue16190 + EnumValue16191 + EnumValue16192 + EnumValue16193 + EnumValue16194 + EnumValue16195 + EnumValue16196 + EnumValue16197 + EnumValue16198 + EnumValue16199 + EnumValue16200 + EnumValue16201 + EnumValue16202 + EnumValue16203 + EnumValue16204 + EnumValue16205 + EnumValue16206 + EnumValue16207 + EnumValue16208 + EnumValue16209 + EnumValue16210 + EnumValue16211 + EnumValue16212 + EnumValue16213 + EnumValue16214 + EnumValue16215 + EnumValue16216 + EnumValue16217 + EnumValue16218 + EnumValue16219 + EnumValue16220 + EnumValue16221 + EnumValue16222 + EnumValue16223 + EnumValue16224 + EnumValue16225 + EnumValue16226 + EnumValue16227 + EnumValue16228 + EnumValue16229 + EnumValue16230 + EnumValue16231 + EnumValue16232 + EnumValue16233 + EnumValue16234 + EnumValue16235 + EnumValue16236 + EnumValue16237 + EnumValue16238 + EnumValue16239 + EnumValue16240 + EnumValue16241 + EnumValue16242 + EnumValue16243 + EnumValue16244 + EnumValue16245 + EnumValue16246 + EnumValue16247 + EnumValue16248 + EnumValue16249 + EnumValue16250 + EnumValue16251 + EnumValue16252 + EnumValue16253 + EnumValue16254 + EnumValue16255 + EnumValue16256 + EnumValue16257 + EnumValue16258 + EnumValue16259 + EnumValue16260 + EnumValue16261 + EnumValue16262 + EnumValue16263 + EnumValue16264 + EnumValue16265 + EnumValue16266 + EnumValue16267 + EnumValue16268 + EnumValue16269 + EnumValue16270 + EnumValue16271 + EnumValue16272 + EnumValue16273 + EnumValue16274 + EnumValue16275 + EnumValue16276 + EnumValue16277 + EnumValue16278 + EnumValue16279 + EnumValue16280 + EnumValue16281 + EnumValue16282 + EnumValue16283 + EnumValue16284 + EnumValue16285 + EnumValue16286 + EnumValue16287 + EnumValue16288 + EnumValue16289 + EnumValue16290 + EnumValue16291 + EnumValue16292 + EnumValue16293 + EnumValue16294 + EnumValue16295 + EnumValue16296 + EnumValue16297 + EnumValue16298 + EnumValue16299 + EnumValue16300 + EnumValue16301 + EnumValue16302 + EnumValue16303 + EnumValue16304 + EnumValue16305 + EnumValue16306 + EnumValue16307 + EnumValue16308 + EnumValue16309 + EnumValue16310 + EnumValue16311 + EnumValue16312 + EnumValue16313 + EnumValue16314 + EnumValue16315 + EnumValue16316 + EnumValue16317 + EnumValue16318 + EnumValue16319 + EnumValue16320 + EnumValue16321 + EnumValue16322 + EnumValue16323 + EnumValue16324 + EnumValue16325 + EnumValue16326 + EnumValue16327 + EnumValue16328 + EnumValue16329 + EnumValue16330 + EnumValue16331 + EnumValue16332 + EnumValue16333 + EnumValue16334 + EnumValue16335 + EnumValue16336 + EnumValue16337 + EnumValue16338 + EnumValue16339 + EnumValue16340 + EnumValue16341 + EnumValue16342 + EnumValue16343 + EnumValue16344 + EnumValue16345 + EnumValue16346 + EnumValue16347 + EnumValue16348 + EnumValue16349 + EnumValue16350 + EnumValue16351 + EnumValue16352 + EnumValue16353 + EnumValue16354 + EnumValue16355 + EnumValue16356 + EnumValue16357 + EnumValue16358 + EnumValue16359 + EnumValue16360 + EnumValue16361 + EnumValue16362 + EnumValue16363 + EnumValue16364 + EnumValue16365 + EnumValue16366 + EnumValue16367 + EnumValue16368 + EnumValue16369 + EnumValue16370 + EnumValue16371 + EnumValue16372 + EnumValue16373 + EnumValue16374 + EnumValue16375 + EnumValue16376 + EnumValue16377 + EnumValue16378 + EnumValue16379 + EnumValue16380 + EnumValue16381 + EnumValue16382 + EnumValue16383 + EnumValue16384 + EnumValue16385 + EnumValue16386 + EnumValue16387 + EnumValue16388 + EnumValue16389 + EnumValue16390 + EnumValue16391 + EnumValue16392 + EnumValue16393 + EnumValue16394 + EnumValue16395 + EnumValue16396 + EnumValue16397 + EnumValue16398 + EnumValue16399 + EnumValue16400 + EnumValue16401 + EnumValue16402 + EnumValue16403 + EnumValue16404 + EnumValue16405 + EnumValue16406 + EnumValue16407 + EnumValue16408 + EnumValue16409 + EnumValue16410 + EnumValue16411 + EnumValue16412 + EnumValue16413 + EnumValue16414 + EnumValue16415 + EnumValue16416 + EnumValue16417 + EnumValue16418 + EnumValue16419 + EnumValue16420 + EnumValue16421 + EnumValue16422 + EnumValue16423 + EnumValue16424 + EnumValue16425 + EnumValue16426 + EnumValue16427 + EnumValue16428 + EnumValue16429 + EnumValue16430 + EnumValue16431 + EnumValue16432 + EnumValue16433 + EnumValue16434 + EnumValue16435 + EnumValue16436 + EnumValue16437 + EnumValue16438 + EnumValue16439 + EnumValue16440 + EnumValue16441 + EnumValue16442 + EnumValue16443 + EnumValue16444 + EnumValue16445 + EnumValue16446 + EnumValue16447 + EnumValue16448 + EnumValue16449 + EnumValue16450 + EnumValue16451 + EnumValue16452 + EnumValue16453 + EnumValue16454 + EnumValue16455 + EnumValue16456 + EnumValue16457 + EnumValue16458 + EnumValue16459 + EnumValue16460 + EnumValue16461 + EnumValue16462 + EnumValue16463 + EnumValue16464 + EnumValue16465 + EnumValue16466 + EnumValue16467 + EnumValue16468 + EnumValue16469 + EnumValue16470 + EnumValue16471 + EnumValue16472 + EnumValue16473 + EnumValue16474 + EnumValue16475 + EnumValue16476 + EnumValue16477 + EnumValue16478 + EnumValue16479 + EnumValue16480 + EnumValue16481 + EnumValue16482 + EnumValue16483 + EnumValue16484 + EnumValue16485 + EnumValue16486 + EnumValue16487 + EnumValue16488 + EnumValue16489 + EnumValue16490 + EnumValue16491 + EnumValue16492 + EnumValue16493 + EnumValue16494 + EnumValue16495 + EnumValue16496 + EnumValue16497 + EnumValue16498 + EnumValue16499 + EnumValue16500 + EnumValue16501 + EnumValue16502 + EnumValue16503 + EnumValue16504 + EnumValue16505 + EnumValue16506 + EnumValue16507 + EnumValue16508 + EnumValue16509 + EnumValue16510 + EnumValue16511 + EnumValue16512 + EnumValue16513 + EnumValue16514 + EnumValue16515 + EnumValue16516 + EnumValue16517 + EnumValue16518 + EnumValue16519 + EnumValue16520 + EnumValue16521 + EnumValue16522 + EnumValue16523 + EnumValue16524 + EnumValue16525 + EnumValue16526 + EnumValue16527 + EnumValue16528 + EnumValue16529 + EnumValue16530 + EnumValue16531 + EnumValue16532 + EnumValue16533 + EnumValue16534 + EnumValue16535 + EnumValue16536 + EnumValue16537 + EnumValue16538 + EnumValue16539 + EnumValue16540 + EnumValue16541 + EnumValue16542 + EnumValue16543 + EnumValue16544 + EnumValue16545 + EnumValue16546 + EnumValue16547 + EnumValue16548 + EnumValue16549 + EnumValue16550 + EnumValue16551 + EnumValue16552 + EnumValue16553 + EnumValue16554 + EnumValue16555 + EnumValue16556 + EnumValue16557 + EnumValue16558 + EnumValue16559 + EnumValue16560 + EnumValue16561 + EnumValue16562 + EnumValue16563 + EnumValue16564 + EnumValue16565 + EnumValue16566 + EnumValue16567 +} + +enum Enum764 @Directive44(argument97 : ["stringValue16240"]) { + EnumValue16568 + EnumValue16569 + EnumValue16570 + EnumValue16571 + EnumValue16572 + EnumValue16573 + EnumValue16574 + EnumValue16575 + EnumValue16576 + EnumValue16577 + EnumValue16578 +} + +enum Enum765 @Directive44(argument97 : ["stringValue16245"]) { + EnumValue16579 + EnumValue16580 + EnumValue16581 + EnumValue16582 + EnumValue16583 +} + +enum Enum766 @Directive44(argument97 : ["stringValue16332"]) { + EnumValue16584 + EnumValue16585 + EnumValue16586 + EnumValue16587 + EnumValue16588 + EnumValue16589 + EnumValue16590 +} + +enum Enum767 @Directive19(argument57 : "stringValue16359") @Directive22(argument62 : "stringValue16358") @Directive44(argument97 : ["stringValue16360", "stringValue16361", "stringValue16362"]) { + EnumValue16591 +} + +enum Enum768 @Directive22(argument62 : "stringValue16434") @Directive44(argument97 : ["stringValue16435", "stringValue16436"]) { + EnumValue16592 + EnumValue16593 +} + +enum Enum769 @Directive44(argument97 : ["stringValue16445"]) { + EnumValue16594 + EnumValue16595 + EnumValue16596 +} + +enum Enum77 @Directive44(argument97 : ["stringValue530"]) { + EnumValue1914 + EnumValue1915 + EnumValue1916 +} + +enum Enum770 @Directive44(argument97 : ["stringValue16446"]) { + EnumValue16597 + EnumValue16598 + EnumValue16599 + EnumValue16600 + EnumValue16601 + EnumValue16602 + EnumValue16603 + EnumValue16604 +} + +enum Enum771 @Directive44(argument97 : ["stringValue16464"]) { + EnumValue16605 + EnumValue16606 + EnumValue16607 +} + +enum Enum772 @Directive44(argument97 : ["stringValue16466"]) { + EnumValue16608 + EnumValue16609 + EnumValue16610 + EnumValue16611 +} + +enum Enum773 @Directive44(argument97 : ["stringValue16467"]) { + EnumValue16612 + EnumValue16613 + EnumValue16614 +} + +enum Enum774 @Directive44(argument97 : ["stringValue16470"]) { + EnumValue16615 + EnumValue16616 + EnumValue16617 + EnumValue16618 + EnumValue16619 + EnumValue16620 + EnumValue16621 + EnumValue16622 + EnumValue16623 + EnumValue16624 + EnumValue16625 + EnumValue16626 + EnumValue16627 + EnumValue16628 + EnumValue16629 + EnumValue16630 + EnumValue16631 + EnumValue16632 + EnumValue16633 + EnumValue16634 + EnumValue16635 + EnumValue16636 + EnumValue16637 + EnumValue16638 + EnumValue16639 + EnumValue16640 + EnumValue16641 + EnumValue16642 + EnumValue16643 + EnumValue16644 + EnumValue16645 + EnumValue16646 + EnumValue16647 + EnumValue16648 + EnumValue16649 + EnumValue16650 + EnumValue16651 + EnumValue16652 + EnumValue16653 + EnumValue16654 + EnumValue16655 + EnumValue16656 + EnumValue16657 + EnumValue16658 + EnumValue16659 + EnumValue16660 + EnumValue16661 + EnumValue16662 + EnumValue16663 + EnumValue16664 +} + +enum Enum775 @Directive44(argument97 : ["stringValue16471"]) { + EnumValue16665 + EnumValue16666 + EnumValue16667 + EnumValue16668 + EnumValue16669 +} + +enum Enum776 @Directive44(argument97 : ["stringValue16472"]) { + EnumValue16670 + EnumValue16671 + EnumValue16672 + EnumValue16673 + EnumValue16674 + EnumValue16675 + EnumValue16676 + EnumValue16677 + EnumValue16678 +} + +enum Enum777 @Directive44(argument97 : ["stringValue16477"]) { + EnumValue16679 + EnumValue16680 + EnumValue16681 +} + +enum Enum778 @Directive44(argument97 : ["stringValue16489"]) { + EnumValue16682 + EnumValue16683 + EnumValue16684 + EnumValue16685 + EnumValue16686 + EnumValue16687 + EnumValue16688 +} + +enum Enum779 @Directive44(argument97 : ["stringValue16492"]) { + EnumValue16689 + EnumValue16690 + EnumValue16691 +} + +enum Enum78 @Directive44(argument97 : ["stringValue531"]) { + EnumValue1917 + EnumValue1918 + EnumValue1919 +} + +enum Enum780 @Directive44(argument97 : ["stringValue16512"]) { + EnumValue16692 + EnumValue16693 + EnumValue16694 + EnumValue16695 +} + +enum Enum781 @Directive44(argument97 : ["stringValue16515"]) { + EnumValue16696 + EnumValue16697 + EnumValue16698 + EnumValue16699 + EnumValue16700 + EnumValue16701 + EnumValue16702 + EnumValue16703 + EnumValue16704 + EnumValue16705 + EnumValue16706 + EnumValue16707 + EnumValue16708 + EnumValue16709 + EnumValue16710 + EnumValue16711 + EnumValue16712 + EnumValue16713 + EnumValue16714 + EnumValue16715 + EnumValue16716 + EnumValue16717 + EnumValue16718 + EnumValue16719 + EnumValue16720 + EnumValue16721 + EnumValue16722 + EnumValue16723 + EnumValue16724 + EnumValue16725 + EnumValue16726 + EnumValue16727 + EnumValue16728 + EnumValue16729 + EnumValue16730 + EnumValue16731 + EnumValue16732 + EnumValue16733 + EnumValue16734 + EnumValue16735 + EnumValue16736 + EnumValue16737 + EnumValue16738 + EnumValue16739 + EnumValue16740 + EnumValue16741 + EnumValue16742 + EnumValue16743 + EnumValue16744 + EnumValue16745 + EnumValue16746 + EnumValue16747 + EnumValue16748 + EnumValue16749 + EnumValue16750 + EnumValue16751 + EnumValue16752 + EnumValue16753 + EnumValue16754 + EnumValue16755 + EnumValue16756 + EnumValue16757 + EnumValue16758 + EnumValue16759 + EnumValue16760 + EnumValue16761 + EnumValue16762 + EnumValue16763 + EnumValue16764 + EnumValue16765 + EnumValue16766 + EnumValue16767 + EnumValue16768 + EnumValue16769 + EnumValue16770 + EnumValue16771 + EnumValue16772 + EnumValue16773 + EnumValue16774 + EnumValue16775 + EnumValue16776 + EnumValue16777 + EnumValue16778 + EnumValue16779 + EnumValue16780 + EnumValue16781 + EnumValue16782 + EnumValue16783 + EnumValue16784 + EnumValue16785 + EnumValue16786 + EnumValue16787 + EnumValue16788 + EnumValue16789 + EnumValue16790 + EnumValue16791 + EnumValue16792 + EnumValue16793 + EnumValue16794 + EnumValue16795 + EnumValue16796 + EnumValue16797 + EnumValue16798 + EnumValue16799 + EnumValue16800 + EnumValue16801 + EnumValue16802 + EnumValue16803 + EnumValue16804 + EnumValue16805 + EnumValue16806 + EnumValue16807 + EnumValue16808 + EnumValue16809 + EnumValue16810 + EnumValue16811 + EnumValue16812 + EnumValue16813 + EnumValue16814 + EnumValue16815 + EnumValue16816 + EnumValue16817 + EnumValue16818 + EnumValue16819 + EnumValue16820 + EnumValue16821 + EnumValue16822 + EnumValue16823 + EnumValue16824 + EnumValue16825 + EnumValue16826 + EnumValue16827 + EnumValue16828 + EnumValue16829 + EnumValue16830 + EnumValue16831 + EnumValue16832 + EnumValue16833 + EnumValue16834 + EnumValue16835 + EnumValue16836 + EnumValue16837 + EnumValue16838 + EnumValue16839 + EnumValue16840 + EnumValue16841 + EnumValue16842 + EnumValue16843 + EnumValue16844 + EnumValue16845 + EnumValue16846 + EnumValue16847 + EnumValue16848 + EnumValue16849 + EnumValue16850 + EnumValue16851 + EnumValue16852 + EnumValue16853 + EnumValue16854 + EnumValue16855 + EnumValue16856 + EnumValue16857 + EnumValue16858 + EnumValue16859 + EnumValue16860 + EnumValue16861 + EnumValue16862 + EnumValue16863 + EnumValue16864 + EnumValue16865 + EnumValue16866 + EnumValue16867 + EnumValue16868 + EnumValue16869 + EnumValue16870 + EnumValue16871 + EnumValue16872 + EnumValue16873 + EnumValue16874 + EnumValue16875 + EnumValue16876 + EnumValue16877 + EnumValue16878 + EnumValue16879 + EnumValue16880 + EnumValue16881 + EnumValue16882 + EnumValue16883 + EnumValue16884 + EnumValue16885 + EnumValue16886 + EnumValue16887 + EnumValue16888 + EnumValue16889 + EnumValue16890 + EnumValue16891 + EnumValue16892 + EnumValue16893 + EnumValue16894 + EnumValue16895 + EnumValue16896 + EnumValue16897 + EnumValue16898 + EnumValue16899 + EnumValue16900 + EnumValue16901 + EnumValue16902 + EnumValue16903 + EnumValue16904 + EnumValue16905 + EnumValue16906 + EnumValue16907 + EnumValue16908 + EnumValue16909 + EnumValue16910 + EnumValue16911 + EnumValue16912 + EnumValue16913 + EnumValue16914 + EnumValue16915 + EnumValue16916 + EnumValue16917 + EnumValue16918 + EnumValue16919 + EnumValue16920 + EnumValue16921 + EnumValue16922 + EnumValue16923 + EnumValue16924 + EnumValue16925 + EnumValue16926 + EnumValue16927 + EnumValue16928 + EnumValue16929 + EnumValue16930 + EnumValue16931 + EnumValue16932 + EnumValue16933 + EnumValue16934 + EnumValue16935 + EnumValue16936 + EnumValue16937 + EnumValue16938 + EnumValue16939 + EnumValue16940 + EnumValue16941 + EnumValue16942 + EnumValue16943 + EnumValue16944 + EnumValue16945 + EnumValue16946 + EnumValue16947 + EnumValue16948 + EnumValue16949 + EnumValue16950 + EnumValue16951 + EnumValue16952 + EnumValue16953 + EnumValue16954 + EnumValue16955 + EnumValue16956 + EnumValue16957 + EnumValue16958 + EnumValue16959 + EnumValue16960 + EnumValue16961 + EnumValue16962 + EnumValue16963 + EnumValue16964 + EnumValue16965 + EnumValue16966 + EnumValue16967 + EnumValue16968 + EnumValue16969 + EnumValue16970 + EnumValue16971 + EnumValue16972 + EnumValue16973 + EnumValue16974 + EnumValue16975 + EnumValue16976 + EnumValue16977 + EnumValue16978 + EnumValue16979 + EnumValue16980 + EnumValue16981 + EnumValue16982 + EnumValue16983 + EnumValue16984 + EnumValue16985 + EnumValue16986 + EnumValue16987 + EnumValue16988 + EnumValue16989 + EnumValue16990 + EnumValue16991 + EnumValue16992 + EnumValue16993 + EnumValue16994 + EnumValue16995 + EnumValue16996 + EnumValue16997 + EnumValue16998 + EnumValue16999 + EnumValue17000 + EnumValue17001 + EnumValue17002 + EnumValue17003 + EnumValue17004 + EnumValue17005 + EnumValue17006 + EnumValue17007 + EnumValue17008 + EnumValue17009 + EnumValue17010 + EnumValue17011 + EnumValue17012 + EnumValue17013 + EnumValue17014 + EnumValue17015 + EnumValue17016 + EnumValue17017 + EnumValue17018 + EnumValue17019 + EnumValue17020 + EnumValue17021 + EnumValue17022 + EnumValue17023 + EnumValue17024 + EnumValue17025 + EnumValue17026 + EnumValue17027 + EnumValue17028 + EnumValue17029 + EnumValue17030 + EnumValue17031 + EnumValue17032 + EnumValue17033 + EnumValue17034 + EnumValue17035 + EnumValue17036 + EnumValue17037 + EnumValue17038 + EnumValue17039 + EnumValue17040 + EnumValue17041 + EnumValue17042 + EnumValue17043 + EnumValue17044 + EnumValue17045 + EnumValue17046 + EnumValue17047 + EnumValue17048 + EnumValue17049 + EnumValue17050 + EnumValue17051 + EnumValue17052 + EnumValue17053 + EnumValue17054 + EnumValue17055 + EnumValue17056 + EnumValue17057 + EnumValue17058 + EnumValue17059 + EnumValue17060 + EnumValue17061 + EnumValue17062 + EnumValue17063 + EnumValue17064 + EnumValue17065 + EnumValue17066 + EnumValue17067 + EnumValue17068 + EnumValue17069 + EnumValue17070 + EnumValue17071 + EnumValue17072 + EnumValue17073 + EnumValue17074 + EnumValue17075 + EnumValue17076 + EnumValue17077 + EnumValue17078 + EnumValue17079 + EnumValue17080 + EnumValue17081 + EnumValue17082 + EnumValue17083 + EnumValue17084 + EnumValue17085 + EnumValue17086 + EnumValue17087 + EnumValue17088 + EnumValue17089 + EnumValue17090 + EnumValue17091 + EnumValue17092 + EnumValue17093 + EnumValue17094 + EnumValue17095 + EnumValue17096 + EnumValue17097 + EnumValue17098 + EnumValue17099 + EnumValue17100 + EnumValue17101 + EnumValue17102 + EnumValue17103 + EnumValue17104 + EnumValue17105 + EnumValue17106 + EnumValue17107 + EnumValue17108 + EnumValue17109 + EnumValue17110 + EnumValue17111 + EnumValue17112 + EnumValue17113 + EnumValue17114 + EnumValue17115 + EnumValue17116 + EnumValue17117 + EnumValue17118 + EnumValue17119 + EnumValue17120 + EnumValue17121 + EnumValue17122 + EnumValue17123 + EnumValue17124 + EnumValue17125 + EnumValue17126 + EnumValue17127 + EnumValue17128 + EnumValue17129 + EnumValue17130 + EnumValue17131 + EnumValue17132 + EnumValue17133 + EnumValue17134 + EnumValue17135 + EnumValue17136 + EnumValue17137 + EnumValue17138 + EnumValue17139 + EnumValue17140 + EnumValue17141 + EnumValue17142 + EnumValue17143 + EnumValue17144 + EnumValue17145 + EnumValue17146 + EnumValue17147 + EnumValue17148 + EnumValue17149 + EnumValue17150 + EnumValue17151 + EnumValue17152 + EnumValue17153 + EnumValue17154 + EnumValue17155 + EnumValue17156 + EnumValue17157 + EnumValue17158 + EnumValue17159 + EnumValue17160 + EnumValue17161 + EnumValue17162 + EnumValue17163 + EnumValue17164 + EnumValue17165 + EnumValue17166 + EnumValue17167 + EnumValue17168 + EnumValue17169 + EnumValue17170 + EnumValue17171 + EnumValue17172 + EnumValue17173 + EnumValue17174 + EnumValue17175 + EnumValue17176 + EnumValue17177 + EnumValue17178 + EnumValue17179 + EnumValue17180 + EnumValue17181 + EnumValue17182 + EnumValue17183 + EnumValue17184 + EnumValue17185 + EnumValue17186 + EnumValue17187 + EnumValue17188 + EnumValue17189 + EnumValue17190 + EnumValue17191 + EnumValue17192 + EnumValue17193 + EnumValue17194 + EnumValue17195 + EnumValue17196 + EnumValue17197 + EnumValue17198 + EnumValue17199 + EnumValue17200 + EnumValue17201 + EnumValue17202 + EnumValue17203 + EnumValue17204 + EnumValue17205 + EnumValue17206 + EnumValue17207 + EnumValue17208 + EnumValue17209 + EnumValue17210 + EnumValue17211 + EnumValue17212 + EnumValue17213 + EnumValue17214 + EnumValue17215 + EnumValue17216 + EnumValue17217 + EnumValue17218 + EnumValue17219 + EnumValue17220 + EnumValue17221 + EnumValue17222 + EnumValue17223 + EnumValue17224 + EnumValue17225 + EnumValue17226 + EnumValue17227 + EnumValue17228 + EnumValue17229 + EnumValue17230 + EnumValue17231 + EnumValue17232 + EnumValue17233 + EnumValue17234 + EnumValue17235 + EnumValue17236 + EnumValue17237 + EnumValue17238 + EnumValue17239 + EnumValue17240 + EnumValue17241 + EnumValue17242 + EnumValue17243 + EnumValue17244 + EnumValue17245 + EnumValue17246 + EnumValue17247 + EnumValue17248 + EnumValue17249 + EnumValue17250 + EnumValue17251 + EnumValue17252 + EnumValue17253 + EnumValue17254 + EnumValue17255 + EnumValue17256 + EnumValue17257 + EnumValue17258 + EnumValue17259 + EnumValue17260 + EnumValue17261 + EnumValue17262 + EnumValue17263 + EnumValue17264 + EnumValue17265 + EnumValue17266 + EnumValue17267 + EnumValue17268 + EnumValue17269 + EnumValue17270 + EnumValue17271 + EnumValue17272 + EnumValue17273 + EnumValue17274 + EnumValue17275 + EnumValue17276 + EnumValue17277 + EnumValue17278 + EnumValue17279 + EnumValue17280 + EnumValue17281 + EnumValue17282 + EnumValue17283 + EnumValue17284 + EnumValue17285 + EnumValue17286 + EnumValue17287 + EnumValue17288 + EnumValue17289 + EnumValue17290 + EnumValue17291 + EnumValue17292 + EnumValue17293 + EnumValue17294 + EnumValue17295 + EnumValue17296 + EnumValue17297 + EnumValue17298 + EnumValue17299 + EnumValue17300 + EnumValue17301 + EnumValue17302 + EnumValue17303 + EnumValue17304 + EnumValue17305 + EnumValue17306 + EnumValue17307 + EnumValue17308 + EnumValue17309 + EnumValue17310 + EnumValue17311 + EnumValue17312 + EnumValue17313 + EnumValue17314 + EnumValue17315 + EnumValue17316 + EnumValue17317 + EnumValue17318 + EnumValue17319 + EnumValue17320 + EnumValue17321 + EnumValue17322 + EnumValue17323 + EnumValue17324 + EnumValue17325 + EnumValue17326 + EnumValue17327 + EnumValue17328 + EnumValue17329 + EnumValue17330 + EnumValue17331 + EnumValue17332 + EnumValue17333 + EnumValue17334 + EnumValue17335 + EnumValue17336 + EnumValue17337 + EnumValue17338 + EnumValue17339 + EnumValue17340 + EnumValue17341 + EnumValue17342 + EnumValue17343 + EnumValue17344 + EnumValue17345 + EnumValue17346 + EnumValue17347 + EnumValue17348 + EnumValue17349 + EnumValue17350 + EnumValue17351 + EnumValue17352 + EnumValue17353 + EnumValue17354 + EnumValue17355 + EnumValue17356 +} + +enum Enum782 @Directive44(argument97 : ["stringValue16520"]) { + EnumValue17357 + EnumValue17358 + EnumValue17359 + EnumValue17360 + EnumValue17361 + EnumValue17362 + EnumValue17363 + EnumValue17364 + EnumValue17365 + EnumValue17366 + EnumValue17367 +} + +enum Enum783 @Directive44(argument97 : ["stringValue16525"]) { + EnumValue17368 + EnumValue17369 + EnumValue17370 + EnumValue17371 + EnumValue17372 +} + +enum Enum784 @Directive44(argument97 : ["stringValue16614"]) { + EnumValue17373 + EnumValue17374 + EnumValue17375 + EnumValue17376 + EnumValue17377 + EnumValue17378 + EnumValue17379 +} + +enum Enum785 @Directive44(argument97 : ["stringValue16624"]) { + EnumValue17380 + EnumValue17381 + EnumValue17382 +} + +enum Enum786 @Directive44(argument97 : ["stringValue16625"]) { + EnumValue17383 + EnumValue17384 + EnumValue17385 + EnumValue17386 + EnumValue17387 + EnumValue17388 + EnumValue17389 + EnumValue17390 +} + +enum Enum787 @Directive44(argument97 : ["stringValue16633"]) { + EnumValue17391 + EnumValue17392 + EnumValue17393 +} + +enum Enum788 @Directive44(argument97 : ["stringValue16635"]) { + EnumValue17394 + EnumValue17395 + EnumValue17396 + EnumValue17397 +} + +enum Enum789 @Directive44(argument97 : ["stringValue16636"]) { + EnumValue17398 + EnumValue17399 + EnumValue17400 +} + +enum Enum79 @Directive44(argument97 : ["stringValue534"]) { + EnumValue1920 + EnumValue1921 + EnumValue1922 + EnumValue1923 + EnumValue1924 + EnumValue1925 + EnumValue1926 +} + +enum Enum790 @Directive44(argument97 : ["stringValue16639"]) { + EnumValue17401 + EnumValue17402 + EnumValue17403 + EnumValue17404 + EnumValue17405 + EnumValue17406 + EnumValue17407 + EnumValue17408 + EnumValue17409 + EnumValue17410 + EnumValue17411 + EnumValue17412 + EnumValue17413 + EnumValue17414 + EnumValue17415 + EnumValue17416 + EnumValue17417 + EnumValue17418 + EnumValue17419 + EnumValue17420 + EnumValue17421 + EnumValue17422 + EnumValue17423 + EnumValue17424 + EnumValue17425 + EnumValue17426 + EnumValue17427 + EnumValue17428 + EnumValue17429 + EnumValue17430 + EnumValue17431 + EnumValue17432 + EnumValue17433 + EnumValue17434 + EnumValue17435 + EnumValue17436 + EnumValue17437 + EnumValue17438 + EnumValue17439 + EnumValue17440 + EnumValue17441 + EnumValue17442 + EnumValue17443 + EnumValue17444 + EnumValue17445 + EnumValue17446 + EnumValue17447 + EnumValue17448 + EnumValue17449 + EnumValue17450 +} + +enum Enum791 @Directive44(argument97 : ["stringValue16640"]) { + EnumValue17451 + EnumValue17452 + EnumValue17453 + EnumValue17454 + EnumValue17455 +} + +enum Enum792 @Directive44(argument97 : ["stringValue16641"]) { + EnumValue17456 + EnumValue17457 + EnumValue17458 + EnumValue17459 + EnumValue17460 + EnumValue17461 + EnumValue17462 + EnumValue17463 + EnumValue17464 +} + +enum Enum793 @Directive44(argument97 : ["stringValue16646"]) { + EnumValue17465 + EnumValue17466 + EnumValue17467 +} + +enum Enum794 @Directive44(argument97 : ["stringValue16676"]) { + EnumValue17468 + EnumValue17469 + EnumValue17470 + EnumValue17471 +} + +enum Enum795 @Directive44(argument97 : ["stringValue16679"]) { + EnumValue17472 + EnumValue17473 + EnumValue17474 + EnumValue17475 + EnumValue17476 + EnumValue17477 + EnumValue17478 + EnumValue17479 + EnumValue17480 + EnumValue17481 + EnumValue17482 + EnumValue17483 + EnumValue17484 + EnumValue17485 + EnumValue17486 + EnumValue17487 + EnumValue17488 + EnumValue17489 + EnumValue17490 + EnumValue17491 + EnumValue17492 + EnumValue17493 + EnumValue17494 + EnumValue17495 + EnumValue17496 + EnumValue17497 + EnumValue17498 + EnumValue17499 + EnumValue17500 + EnumValue17501 + EnumValue17502 + EnumValue17503 + EnumValue17504 + EnumValue17505 + EnumValue17506 + EnumValue17507 + EnumValue17508 + EnumValue17509 + EnumValue17510 + EnumValue17511 + EnumValue17512 + EnumValue17513 + EnumValue17514 + EnumValue17515 + EnumValue17516 + EnumValue17517 + EnumValue17518 + EnumValue17519 + EnumValue17520 + EnumValue17521 + EnumValue17522 + EnumValue17523 + EnumValue17524 + EnumValue17525 + EnumValue17526 + EnumValue17527 + EnumValue17528 + EnumValue17529 + EnumValue17530 + EnumValue17531 + EnumValue17532 + EnumValue17533 + EnumValue17534 + EnumValue17535 + EnumValue17536 + EnumValue17537 + EnumValue17538 + EnumValue17539 + EnumValue17540 + EnumValue17541 + EnumValue17542 + EnumValue17543 + EnumValue17544 + EnumValue17545 + EnumValue17546 + EnumValue17547 + EnumValue17548 + EnumValue17549 + EnumValue17550 + EnumValue17551 + EnumValue17552 + EnumValue17553 + EnumValue17554 + EnumValue17555 + EnumValue17556 + EnumValue17557 + EnumValue17558 + EnumValue17559 + EnumValue17560 + EnumValue17561 + EnumValue17562 + EnumValue17563 + EnumValue17564 + EnumValue17565 + EnumValue17566 + EnumValue17567 + EnumValue17568 + EnumValue17569 + EnumValue17570 + EnumValue17571 + EnumValue17572 + EnumValue17573 + EnumValue17574 + EnumValue17575 + EnumValue17576 + EnumValue17577 + EnumValue17578 + EnumValue17579 + EnumValue17580 + EnumValue17581 + EnumValue17582 + EnumValue17583 + EnumValue17584 + EnumValue17585 + EnumValue17586 + EnumValue17587 + EnumValue17588 + EnumValue17589 + EnumValue17590 + EnumValue17591 + EnumValue17592 + EnumValue17593 + EnumValue17594 + EnumValue17595 + EnumValue17596 + EnumValue17597 + EnumValue17598 + EnumValue17599 + EnumValue17600 + EnumValue17601 + EnumValue17602 + EnumValue17603 + EnumValue17604 + EnumValue17605 + EnumValue17606 + EnumValue17607 + EnumValue17608 + EnumValue17609 + EnumValue17610 + EnumValue17611 + EnumValue17612 + EnumValue17613 + EnumValue17614 + EnumValue17615 + EnumValue17616 + EnumValue17617 + EnumValue17618 + EnumValue17619 + EnumValue17620 + EnumValue17621 + EnumValue17622 + EnumValue17623 + EnumValue17624 + EnumValue17625 + EnumValue17626 + EnumValue17627 + EnumValue17628 + EnumValue17629 + EnumValue17630 + EnumValue17631 + EnumValue17632 + EnumValue17633 + EnumValue17634 + EnumValue17635 + EnumValue17636 + EnumValue17637 + EnumValue17638 + EnumValue17639 + EnumValue17640 + EnumValue17641 + EnumValue17642 + EnumValue17643 + EnumValue17644 + EnumValue17645 + EnumValue17646 + EnumValue17647 + EnumValue17648 + EnumValue17649 + EnumValue17650 + EnumValue17651 + EnumValue17652 + EnumValue17653 + EnumValue17654 + EnumValue17655 + EnumValue17656 + EnumValue17657 + EnumValue17658 + EnumValue17659 + EnumValue17660 + EnumValue17661 + EnumValue17662 + EnumValue17663 + EnumValue17664 + EnumValue17665 + EnumValue17666 + EnumValue17667 + EnumValue17668 + EnumValue17669 + EnumValue17670 + EnumValue17671 + EnumValue17672 + EnumValue17673 + EnumValue17674 + EnumValue17675 + EnumValue17676 + EnumValue17677 + EnumValue17678 + EnumValue17679 + EnumValue17680 + EnumValue17681 + EnumValue17682 + EnumValue17683 + EnumValue17684 + EnumValue17685 + EnumValue17686 + EnumValue17687 + EnumValue17688 + EnumValue17689 + EnumValue17690 + EnumValue17691 + EnumValue17692 + EnumValue17693 + EnumValue17694 + EnumValue17695 + EnumValue17696 + EnumValue17697 + EnumValue17698 + EnumValue17699 + EnumValue17700 + EnumValue17701 + EnumValue17702 + EnumValue17703 + EnumValue17704 + EnumValue17705 + EnumValue17706 + EnumValue17707 + EnumValue17708 + EnumValue17709 + EnumValue17710 + EnumValue17711 + EnumValue17712 + EnumValue17713 + EnumValue17714 + EnumValue17715 + EnumValue17716 + EnumValue17717 + EnumValue17718 + EnumValue17719 + EnumValue17720 + EnumValue17721 + EnumValue17722 + EnumValue17723 + EnumValue17724 + EnumValue17725 + EnumValue17726 + EnumValue17727 + EnumValue17728 + EnumValue17729 + EnumValue17730 + EnumValue17731 + EnumValue17732 + EnumValue17733 + EnumValue17734 + EnumValue17735 + EnumValue17736 + EnumValue17737 + EnumValue17738 + EnumValue17739 + EnumValue17740 + EnumValue17741 + EnumValue17742 + EnumValue17743 + EnumValue17744 + EnumValue17745 + EnumValue17746 + EnumValue17747 + EnumValue17748 + EnumValue17749 + EnumValue17750 + EnumValue17751 + EnumValue17752 + EnumValue17753 + EnumValue17754 + EnumValue17755 + EnumValue17756 + EnumValue17757 + EnumValue17758 + EnumValue17759 + EnumValue17760 + EnumValue17761 + EnumValue17762 + EnumValue17763 + EnumValue17764 + EnumValue17765 + EnumValue17766 + EnumValue17767 + EnumValue17768 + EnumValue17769 + EnumValue17770 + EnumValue17771 + EnumValue17772 + EnumValue17773 + EnumValue17774 + EnumValue17775 + EnumValue17776 + EnumValue17777 + EnumValue17778 + EnumValue17779 + EnumValue17780 + EnumValue17781 + EnumValue17782 + EnumValue17783 + EnumValue17784 + EnumValue17785 + EnumValue17786 + EnumValue17787 + EnumValue17788 + EnumValue17789 + EnumValue17790 + EnumValue17791 + EnumValue17792 + EnumValue17793 + EnumValue17794 + EnumValue17795 + EnumValue17796 + EnumValue17797 + EnumValue17798 + EnumValue17799 + EnumValue17800 + EnumValue17801 + EnumValue17802 + EnumValue17803 + EnumValue17804 + EnumValue17805 + EnumValue17806 + EnumValue17807 + EnumValue17808 + EnumValue17809 + EnumValue17810 + EnumValue17811 + EnumValue17812 + EnumValue17813 + EnumValue17814 + EnumValue17815 + EnumValue17816 + EnumValue17817 + EnumValue17818 + EnumValue17819 + EnumValue17820 + EnumValue17821 + EnumValue17822 + EnumValue17823 + EnumValue17824 + EnumValue17825 + EnumValue17826 + EnumValue17827 + EnumValue17828 + EnumValue17829 + EnumValue17830 + EnumValue17831 + EnumValue17832 + EnumValue17833 + EnumValue17834 + EnumValue17835 + EnumValue17836 + EnumValue17837 + EnumValue17838 + EnumValue17839 + EnumValue17840 + EnumValue17841 + EnumValue17842 + EnumValue17843 + EnumValue17844 + EnumValue17845 + EnumValue17846 + EnumValue17847 + EnumValue17848 + EnumValue17849 + EnumValue17850 + EnumValue17851 + EnumValue17852 + EnumValue17853 + EnumValue17854 + EnumValue17855 + EnumValue17856 + EnumValue17857 + EnumValue17858 + EnumValue17859 + EnumValue17860 + EnumValue17861 + EnumValue17862 + EnumValue17863 + EnumValue17864 + EnumValue17865 + EnumValue17866 + EnumValue17867 + EnumValue17868 + EnumValue17869 + EnumValue17870 + EnumValue17871 + EnumValue17872 + EnumValue17873 + EnumValue17874 + EnumValue17875 + EnumValue17876 + EnumValue17877 + EnumValue17878 + EnumValue17879 + EnumValue17880 + EnumValue17881 + EnumValue17882 + EnumValue17883 + EnumValue17884 + EnumValue17885 + EnumValue17886 + EnumValue17887 + EnumValue17888 + EnumValue17889 + EnumValue17890 + EnumValue17891 + EnumValue17892 + EnumValue17893 + EnumValue17894 + EnumValue17895 + EnumValue17896 + EnumValue17897 + EnumValue17898 + EnumValue17899 + EnumValue17900 + EnumValue17901 + EnumValue17902 + EnumValue17903 + EnumValue17904 + EnumValue17905 + EnumValue17906 + EnumValue17907 + EnumValue17908 + EnumValue17909 + EnumValue17910 + EnumValue17911 + EnumValue17912 + EnumValue17913 + EnumValue17914 + EnumValue17915 + EnumValue17916 + EnumValue17917 + EnumValue17918 + EnumValue17919 + EnumValue17920 + EnumValue17921 + EnumValue17922 + EnumValue17923 + EnumValue17924 + EnumValue17925 + EnumValue17926 + EnumValue17927 + EnumValue17928 + EnumValue17929 + EnumValue17930 + EnumValue17931 + EnumValue17932 + EnumValue17933 + EnumValue17934 + EnumValue17935 + EnumValue17936 + EnumValue17937 + EnumValue17938 + EnumValue17939 + EnumValue17940 + EnumValue17941 + EnumValue17942 + EnumValue17943 + EnumValue17944 + EnumValue17945 + EnumValue17946 + EnumValue17947 + EnumValue17948 + EnumValue17949 + EnumValue17950 + EnumValue17951 + EnumValue17952 + EnumValue17953 + EnumValue17954 + EnumValue17955 + EnumValue17956 + EnumValue17957 + EnumValue17958 + EnumValue17959 + EnumValue17960 + EnumValue17961 + EnumValue17962 + EnumValue17963 + EnumValue17964 + EnumValue17965 + EnumValue17966 + EnumValue17967 + EnumValue17968 + EnumValue17969 + EnumValue17970 + EnumValue17971 + EnumValue17972 + EnumValue17973 + EnumValue17974 + EnumValue17975 + EnumValue17976 + EnumValue17977 + EnumValue17978 + EnumValue17979 + EnumValue17980 + EnumValue17981 + EnumValue17982 + EnumValue17983 + EnumValue17984 + EnumValue17985 + EnumValue17986 + EnumValue17987 + EnumValue17988 + EnumValue17989 + EnumValue17990 + EnumValue17991 + EnumValue17992 + EnumValue17993 + EnumValue17994 + EnumValue17995 + EnumValue17996 + EnumValue17997 + EnumValue17998 + EnumValue17999 + EnumValue18000 + EnumValue18001 + EnumValue18002 + EnumValue18003 + EnumValue18004 + EnumValue18005 + EnumValue18006 + EnumValue18007 + EnumValue18008 + EnumValue18009 + EnumValue18010 + EnumValue18011 + EnumValue18012 + EnumValue18013 + EnumValue18014 + EnumValue18015 + EnumValue18016 + EnumValue18017 + EnumValue18018 + EnumValue18019 + EnumValue18020 + EnumValue18021 + EnumValue18022 + EnumValue18023 + EnumValue18024 + EnumValue18025 + EnumValue18026 + EnumValue18027 + EnumValue18028 + EnumValue18029 + EnumValue18030 + EnumValue18031 + EnumValue18032 + EnumValue18033 + EnumValue18034 + EnumValue18035 + EnumValue18036 + EnumValue18037 + EnumValue18038 + EnumValue18039 + EnumValue18040 + EnumValue18041 + EnumValue18042 + EnumValue18043 + EnumValue18044 + EnumValue18045 + EnumValue18046 + EnumValue18047 + EnumValue18048 + EnumValue18049 + EnumValue18050 + EnumValue18051 + EnumValue18052 + EnumValue18053 + EnumValue18054 + EnumValue18055 + EnumValue18056 + EnumValue18057 + EnumValue18058 + EnumValue18059 + EnumValue18060 + EnumValue18061 + EnumValue18062 + EnumValue18063 + EnumValue18064 + EnumValue18065 + EnumValue18066 + EnumValue18067 + EnumValue18068 + EnumValue18069 + EnumValue18070 + EnumValue18071 + EnumValue18072 + EnumValue18073 + EnumValue18074 + EnumValue18075 + EnumValue18076 + EnumValue18077 + EnumValue18078 + EnumValue18079 + EnumValue18080 + EnumValue18081 + EnumValue18082 + EnumValue18083 + EnumValue18084 + EnumValue18085 + EnumValue18086 + EnumValue18087 + EnumValue18088 + EnumValue18089 + EnumValue18090 + EnumValue18091 + EnumValue18092 + EnumValue18093 + EnumValue18094 + EnumValue18095 + EnumValue18096 + EnumValue18097 + EnumValue18098 + EnumValue18099 + EnumValue18100 + EnumValue18101 + EnumValue18102 + EnumValue18103 + EnumValue18104 + EnumValue18105 + EnumValue18106 + EnumValue18107 + EnumValue18108 + EnumValue18109 + EnumValue18110 + EnumValue18111 + EnumValue18112 + EnumValue18113 + EnumValue18114 + EnumValue18115 + EnumValue18116 + EnumValue18117 + EnumValue18118 + EnumValue18119 + EnumValue18120 + EnumValue18121 + EnumValue18122 + EnumValue18123 + EnumValue18124 + EnumValue18125 + EnumValue18126 + EnumValue18127 + EnumValue18128 + EnumValue18129 + EnumValue18130 + EnumValue18131 + EnumValue18132 +} + +enum Enum796 @Directive44(argument97 : ["stringValue16682"]) { + EnumValue18133 + EnumValue18134 + EnumValue18135 + EnumValue18136 + EnumValue18137 + EnumValue18138 + EnumValue18139 + EnumValue18140 + EnumValue18141 + EnumValue18142 + EnumValue18143 +} + +enum Enum797 @Directive44(argument97 : ["stringValue16687"]) { + EnumValue18144 + EnumValue18145 + EnumValue18146 + EnumValue18147 + EnumValue18148 +} + +enum Enum798 @Directive44(argument97 : ["stringValue16774"]) { + EnumValue18149 + EnumValue18150 + EnumValue18151 + EnumValue18152 + EnumValue18153 + EnumValue18154 + EnumValue18155 +} + +enum Enum799 @Directive44(argument97 : ["stringValue16793"]) { + EnumValue18156 + EnumValue18157 + EnumValue18158 + EnumValue18159 + EnumValue18160 + EnumValue18161 + EnumValue18162 + EnumValue18163 + EnumValue18164 + EnumValue18165 + EnumValue18166 +} + +enum Enum8 @Directive19(argument57 : "stringValue100") @Directive22(argument62 : "stringValue99") @Directive44(argument97 : ["stringValue101", "stringValue102"]) { + EnumValue76 + EnumValue77 +} + +enum Enum80 @Directive44(argument97 : ["stringValue548"]) { + EnumValue1927 + EnumValue1928 + EnumValue1929 + EnumValue1930 + EnumValue1931 + EnumValue1932 + EnumValue1933 + EnumValue1934 + EnumValue1935 + EnumValue1936 + EnumValue1937 + EnumValue1938 + EnumValue1939 + EnumValue1940 + EnumValue1941 + EnumValue1942 + EnumValue1943 + EnumValue1944 + EnumValue1945 + EnumValue1946 + EnumValue1947 + EnumValue1948 + EnumValue1949 + EnumValue1950 + EnumValue1951 + EnumValue1952 + EnumValue1953 + EnumValue1954 + EnumValue1955 + EnumValue1956 + EnumValue1957 + EnumValue1958 + EnumValue1959 + EnumValue1960 + EnumValue1961 + EnumValue1962 + EnumValue1963 + EnumValue1964 + EnumValue1965 + EnumValue1966 + EnumValue1967 + EnumValue1968 + EnumValue1969 + EnumValue1970 + EnumValue1971 + EnumValue1972 + EnumValue1973 + EnumValue1974 + EnumValue1975 + EnumValue1976 + EnumValue1977 + EnumValue1978 +} + +enum Enum800 @Directive44(argument97 : ["stringValue16794"]) { + EnumValue18167 + EnumValue18168 + EnumValue18169 + EnumValue18170 + EnumValue18171 + EnumValue18172 + EnumValue18173 + EnumValue18174 + EnumValue18175 + EnumValue18176 + EnumValue18177 + EnumValue18178 + EnumValue18179 + EnumValue18180 +} + +enum Enum801 @Directive44(argument97 : ["stringValue16795", "stringValue16796"]) { + EnumValue18181 + EnumValue18182 + EnumValue18183 + EnumValue18184 + EnumValue18185 + EnumValue18186 + EnumValue18187 + EnumValue18188 + EnumValue18189 + EnumValue18190 + EnumValue18191 + EnumValue18192 + EnumValue18193 + EnumValue18194 + EnumValue18195 + EnumValue18196 + EnumValue18197 + EnumValue18198 + EnumValue18199 + EnumValue18200 + EnumValue18201 + EnumValue18202 + EnumValue18203 + EnumValue18204 + EnumValue18205 + EnumValue18206 + EnumValue18207 + EnumValue18208 + EnumValue18209 + EnumValue18210 + EnumValue18211 + EnumValue18212 + EnumValue18213 + EnumValue18214 + EnumValue18215 + EnumValue18216 + EnumValue18217 + EnumValue18218 + EnumValue18219 + EnumValue18220 + EnumValue18221 + EnumValue18222 + EnumValue18223 + EnumValue18224 + EnumValue18225 + EnumValue18226 + EnumValue18227 + EnumValue18228 + EnumValue18229 + EnumValue18230 + EnumValue18231 + EnumValue18232 + EnumValue18233 + EnumValue18234 + EnumValue18235 + EnumValue18236 + EnumValue18237 + EnumValue18238 + EnumValue18239 + EnumValue18240 + EnumValue18241 + EnumValue18242 + EnumValue18243 + EnumValue18244 + EnumValue18245 + EnumValue18246 + EnumValue18247 + EnumValue18248 + EnumValue18249 + EnumValue18250 + EnumValue18251 + EnumValue18252 + EnumValue18253 + EnumValue18254 + EnumValue18255 + EnumValue18256 + EnumValue18257 + EnumValue18258 + EnumValue18259 + EnumValue18260 + EnumValue18261 + EnumValue18262 + EnumValue18263 + EnumValue18264 + EnumValue18265 + EnumValue18266 + EnumValue18267 + EnumValue18268 + EnumValue18269 + EnumValue18270 + EnumValue18271 + EnumValue18272 + EnumValue18273 + EnumValue18274 + EnumValue18275 + EnumValue18276 + EnumValue18277 + EnumValue18278 + EnumValue18279 + EnumValue18280 + EnumValue18281 + EnumValue18282 + EnumValue18283 + EnumValue18284 + EnumValue18285 + EnumValue18286 + EnumValue18287 + EnumValue18288 + EnumValue18289 + EnumValue18290 + EnumValue18291 + EnumValue18292 + EnumValue18293 + EnumValue18294 + EnumValue18295 + EnumValue18296 + EnumValue18297 + EnumValue18298 + EnumValue18299 + EnumValue18300 + EnumValue18301 + EnumValue18302 + EnumValue18303 + EnumValue18304 + EnumValue18305 + EnumValue18306 + EnumValue18307 + EnumValue18308 + EnumValue18309 + EnumValue18310 + EnumValue18311 + EnumValue18312 + EnumValue18313 + EnumValue18314 + EnumValue18315 + EnumValue18316 + EnumValue18317 + EnumValue18318 + EnumValue18319 + EnumValue18320 + EnumValue18321 + EnumValue18322 + EnumValue18323 + EnumValue18324 + EnumValue18325 + EnumValue18326 + EnumValue18327 + EnumValue18328 + EnumValue18329 + EnumValue18330 + EnumValue18331 + EnumValue18332 + EnumValue18333 + EnumValue18334 + EnumValue18335 + EnumValue18336 + EnumValue18337 + EnumValue18338 + EnumValue18339 + EnumValue18340 + EnumValue18341 + EnumValue18342 + EnumValue18343 + EnumValue18344 + EnumValue18345 + EnumValue18346 + EnumValue18347 + EnumValue18348 + EnumValue18349 + EnumValue18350 + EnumValue18351 + EnumValue18352 + EnumValue18353 + EnumValue18354 + EnumValue18355 + EnumValue18356 + EnumValue18357 + EnumValue18358 + EnumValue18359 + EnumValue18360 + EnumValue18361 + EnumValue18362 + EnumValue18363 + EnumValue18364 + EnumValue18365 + EnumValue18366 + EnumValue18367 + EnumValue18368 + EnumValue18369 + EnumValue18370 + EnumValue18371 + EnumValue18372 + EnumValue18373 + EnumValue18374 + EnumValue18375 + EnumValue18376 + EnumValue18377 + EnumValue18378 + EnumValue18379 + EnumValue18380 + EnumValue18381 + EnumValue18382 + EnumValue18383 + EnumValue18384 + EnumValue18385 + EnumValue18386 + EnumValue18387 + EnumValue18388 + EnumValue18389 + EnumValue18390 + EnumValue18391 + EnumValue18392 + EnumValue18393 + EnumValue18394 + EnumValue18395 + EnumValue18396 + EnumValue18397 + EnumValue18398 + EnumValue18399 + EnumValue18400 + EnumValue18401 + EnumValue18402 + EnumValue18403 + EnumValue18404 + EnumValue18405 + EnumValue18406 + EnumValue18407 + EnumValue18408 + EnumValue18409 + EnumValue18410 + EnumValue18411 + EnumValue18412 + EnumValue18413 + EnumValue18414 + EnumValue18415 + EnumValue18416 + EnumValue18417 + EnumValue18418 + EnumValue18419 + EnumValue18420 + EnumValue18421 + EnumValue18422 + EnumValue18423 + EnumValue18424 + EnumValue18425 + EnumValue18426 + EnumValue18427 + EnumValue18428 + EnumValue18429 + EnumValue18430 +} + +enum Enum802 @Directive44(argument97 : ["stringValue16797", "stringValue16798"]) { + EnumValue18431 + EnumValue18432 + EnumValue18433 + EnumValue18434 + EnumValue18435 + EnumValue18436 + EnumValue18437 + EnumValue18438 +} + +enum Enum803 @Directive44(argument97 : ["stringValue16799"]) { + EnumValue18439 + EnumValue18440 + EnumValue18441 + EnumValue18442 + EnumValue18443 + EnumValue18444 + EnumValue18445 + EnumValue18446 + EnumValue18447 + EnumValue18448 + EnumValue18449 + EnumValue18450 + EnumValue18451 + EnumValue18452 + EnumValue18453 + EnumValue18454 + EnumValue18455 + EnumValue18456 + EnumValue18457 +} + +enum Enum804 @Directive44(argument97 : ["stringValue16800"]) { + EnumValue18458 + EnumValue18459 + EnumValue18460 + EnumValue18461 + EnumValue18462 + EnumValue18463 + EnumValue18464 + EnumValue18465 + EnumValue18466 +} + +enum Enum805 @Directive44(argument97 : ["stringValue16801"]) { + EnumValue18467 + EnumValue18468 + EnumValue18469 + EnumValue18470 +} + +enum Enum806 @Directive19(argument57 : "stringValue16802") @Directive22(argument62 : "stringValue16803") @Directive44(argument97 : ["stringValue16804"]) { + EnumValue18471 + EnumValue18472 + EnumValue18473 + EnumValue18474 + EnumValue18475 + EnumValue18476 + EnumValue18477 + EnumValue18478 + EnumValue18479 + EnumValue18480 + EnumValue18481 + EnumValue18482 + EnumValue18483 + EnumValue18484 + EnumValue18485 + EnumValue18486 + EnumValue18487 + EnumValue18488 + EnumValue18489 + EnumValue18490 + EnumValue18491 + EnumValue18492 + EnumValue18493 + EnumValue18494 + EnumValue18495 + EnumValue18496 + EnumValue18497 + EnumValue18498 + EnumValue18499 + EnumValue18500 + EnumValue18501 +} + +enum Enum807 @Directive44(argument97 : ["stringValue16805"]) { + EnumValue18502 + EnumValue18503 + EnumValue18504 + EnumValue18505 + EnumValue18506 + EnumValue18507 + EnumValue18508 + EnumValue18509 + EnumValue18510 + EnumValue18511 + EnumValue18512 + EnumValue18513 + EnumValue18514 + EnumValue18515 + EnumValue18516 + EnumValue18517 + EnumValue18518 + EnumValue18519 + EnumValue18520 + EnumValue18521 + EnumValue18522 + EnumValue18523 + EnumValue18524 + EnumValue18525 + EnumValue18526 + EnumValue18527 + EnumValue18528 + EnumValue18529 + EnumValue18530 + EnumValue18531 + EnumValue18532 + EnumValue18533 + EnumValue18534 + EnumValue18535 + EnumValue18536 + EnumValue18537 + EnumValue18538 + EnumValue18539 + EnumValue18540 + EnumValue18541 + EnumValue18542 + EnumValue18543 + EnumValue18544 + EnumValue18545 + EnumValue18546 + EnumValue18547 + EnumValue18548 + EnumValue18549 + EnumValue18550 + EnumValue18551 + EnumValue18552 + EnumValue18553 + EnumValue18554 + EnumValue18555 + EnumValue18556 + EnumValue18557 + EnumValue18558 + EnumValue18559 + EnumValue18560 + EnumValue18561 + EnumValue18562 + EnumValue18563 + EnumValue18564 + EnumValue18565 + EnumValue18566 + EnumValue18567 + EnumValue18568 + EnumValue18569 + EnumValue18570 + EnumValue18571 + EnumValue18572 + EnumValue18573 + EnumValue18574 + EnumValue18575 + EnumValue18576 + EnumValue18577 + EnumValue18578 + EnumValue18579 + EnumValue18580 + EnumValue18581 + EnumValue18582 + EnumValue18583 + EnumValue18584 + EnumValue18585 + EnumValue18586 + EnumValue18587 + EnumValue18588 + EnumValue18589 + EnumValue18590 + EnumValue18591 + EnumValue18592 + EnumValue18593 + EnumValue18594 + EnumValue18595 + EnumValue18596 + EnumValue18597 + EnumValue18598 + EnumValue18599 + EnumValue18600 + EnumValue18601 + EnumValue18602 + EnumValue18603 + EnumValue18604 + EnumValue18605 + EnumValue18606 + EnumValue18607 + EnumValue18608 + EnumValue18609 + EnumValue18610 + EnumValue18611 + EnumValue18612 + EnumValue18613 + EnumValue18614 + EnumValue18615 + EnumValue18616 + EnumValue18617 + EnumValue18618 + EnumValue18619 + EnumValue18620 + EnumValue18621 + EnumValue18622 + EnumValue18623 + EnumValue18624 + EnumValue18625 + EnumValue18626 + EnumValue18627 + EnumValue18628 + EnumValue18629 + EnumValue18630 + EnumValue18631 + EnumValue18632 + EnumValue18633 + EnumValue18634 + EnumValue18635 + EnumValue18636 + EnumValue18637 + EnumValue18638 + EnumValue18639 + EnumValue18640 + EnumValue18641 + EnumValue18642 + EnumValue18643 + EnumValue18644 + EnumValue18645 + EnumValue18646 + EnumValue18647 + EnumValue18648 + EnumValue18649 + EnumValue18650 + EnumValue18651 + EnumValue18652 + EnumValue18653 + EnumValue18654 + EnumValue18655 + EnumValue18656 + EnumValue18657 + EnumValue18658 + EnumValue18659 + EnumValue18660 + EnumValue18661 + EnumValue18662 + EnumValue18663 + EnumValue18664 + EnumValue18665 + EnumValue18666 + EnumValue18667 + EnumValue18668 + EnumValue18669 + EnumValue18670 + EnumValue18671 + EnumValue18672 + EnumValue18673 + EnumValue18674 + EnumValue18675 + EnumValue18676 + EnumValue18677 + EnumValue18678 + EnumValue18679 + EnumValue18680 + EnumValue18681 + EnumValue18682 + EnumValue18683 + EnumValue18684 + EnumValue18685 + EnumValue18686 + EnumValue18687 + EnumValue18688 + EnumValue18689 + EnumValue18690 + EnumValue18691 + EnumValue18692 + EnumValue18693 + EnumValue18694 + EnumValue18695 + EnumValue18696 + EnumValue18697 + EnumValue18698 + EnumValue18699 + EnumValue18700 + EnumValue18701 + EnumValue18702 + EnumValue18703 + EnumValue18704 + EnumValue18705 + EnumValue18706 + EnumValue18707 + EnumValue18708 + EnumValue18709 + EnumValue18710 + EnumValue18711 + EnumValue18712 + EnumValue18713 + EnumValue18714 + EnumValue18715 + EnumValue18716 + EnumValue18717 + EnumValue18718 + EnumValue18719 + EnumValue18720 + EnumValue18721 + EnumValue18722 + EnumValue18723 + EnumValue18724 + EnumValue18725 + EnumValue18726 + EnumValue18727 + EnumValue18728 + EnumValue18729 + EnumValue18730 + EnumValue18731 + EnumValue18732 + EnumValue18733 + EnumValue18734 + EnumValue18735 + EnumValue18736 + EnumValue18737 + EnumValue18738 + EnumValue18739 + EnumValue18740 + EnumValue18741 + EnumValue18742 + EnumValue18743 + EnumValue18744 + EnumValue18745 + EnumValue18746 + EnumValue18747 + EnumValue18748 + EnumValue18749 + EnumValue18750 + EnumValue18751 +} + +enum Enum808 @Directive44(argument97 : ["stringValue16806"]) { + EnumValue18752 + EnumValue18753 + EnumValue18754 + EnumValue18755 + EnumValue18756 + EnumValue18757 +} + +enum Enum809 @Directive19(argument57 : "stringValue16808") @Directive22(argument62 : "stringValue16807") @Directive44(argument97 : ["stringValue16809"]) { + EnumValue18758 + EnumValue18759 + EnumValue18760 +} + +enum Enum81 @Directive44(argument97 : ["stringValue549"]) { + EnumValue1979 + EnumValue1980 + EnumValue1981 + EnumValue1982 + EnumValue1983 + EnumValue1984 + EnumValue1985 + EnumValue1986 + EnumValue1987 + EnumValue1988 + EnumValue1989 + EnumValue1990 + EnumValue1991 + EnumValue1992 + EnumValue1993 + EnumValue1994 + EnumValue1995 + EnumValue1996 + EnumValue1997 + EnumValue1998 + EnumValue1999 + EnumValue2000 + EnumValue2001 + EnumValue2002 + EnumValue2003 + EnumValue2004 + EnumValue2005 +} + +enum Enum810 @Directive19(argument57 : "stringValue16813") @Directive22(argument62 : "stringValue16810") @Directive44(argument97 : ["stringValue16811", "stringValue16812"]) { + EnumValue18761 + EnumValue18762 + EnumValue18763 +} + +enum Enum811 @Directive19(argument57 : "stringValue16814") @Directive22(argument62 : "stringValue16815") @Directive44(argument97 : ["stringValue16816", "stringValue16817", "stringValue16818"]) { + EnumValue18764 + EnumValue18765 + EnumValue18766 + EnumValue18767 + EnumValue18768 +} + +enum Enum812 @Directive19(argument57 : "stringValue16821") @Directive22(argument62 : "stringValue16819") @Directive44(argument97 : ["stringValue16820"]) { + EnumValue18769 + EnumValue18770 + EnumValue18771 + EnumValue18772 + EnumValue18773 + EnumValue18774 + EnumValue18775 + EnumValue18776 + EnumValue18777 + EnumValue18778 +} + +enum Enum813 @Directive44(argument97 : ["stringValue16822"]) { + EnumValue18779 + EnumValue18780 + EnumValue18781 + EnumValue18782 + EnumValue18783 + EnumValue18784 + EnumValue18785 + EnumValue18786 + EnumValue18787 + EnumValue18788 + EnumValue18789 + EnumValue18790 + EnumValue18791 + EnumValue18792 + EnumValue18793 + EnumValue18794 + EnumValue18795 + EnumValue18796 + EnumValue18797 + EnumValue18798 + EnumValue18799 + EnumValue18800 + EnumValue18801 + EnumValue18802 + EnumValue18803 + EnumValue18804 + EnumValue18805 + EnumValue18806 + EnumValue18807 + EnumValue18808 + EnumValue18809 + EnumValue18810 + EnumValue18811 + EnumValue18812 + EnumValue18813 + EnumValue18814 + EnumValue18815 +} + +enum Enum814 @Directive44(argument97 : ["stringValue16823"]) { + EnumValue18816 + EnumValue18817 +} + +enum Enum815 @Directive44(argument97 : ["stringValue16824"]) { + EnumValue18818 + EnumValue18819 + EnumValue18820 + EnumValue18821 + EnumValue18822 + EnumValue18823 + EnumValue18824 + EnumValue18825 + EnumValue18826 + EnumValue18827 + EnumValue18828 + EnumValue18829 + EnumValue18830 + EnumValue18831 + EnumValue18832 + EnumValue18833 + EnumValue18834 + EnumValue18835 + EnumValue18836 + EnumValue18837 + EnumValue18838 + EnumValue18839 + EnumValue18840 + EnumValue18841 + EnumValue18842 + EnumValue18843 + EnumValue18844 + EnumValue18845 + EnumValue18846 + EnumValue18847 + EnumValue18848 + EnumValue18849 + EnumValue18850 + EnumValue18851 + EnumValue18852 + EnumValue18853 + EnumValue18854 + EnumValue18855 +} + +enum Enum816 @Directive44(argument97 : ["stringValue16825"]) { + EnumValue18856 + EnumValue18857 + EnumValue18858 + EnumValue18859 + EnumValue18860 + EnumValue18861 + EnumValue18862 + EnumValue18863 + EnumValue18864 + EnumValue18865 + EnumValue18866 +} + +enum Enum817 @Directive44(argument97 : ["stringValue16826"]) { + EnumValue18867 + EnumValue18868 + EnumValue18869 +} + +enum Enum818 @Directive22(argument62 : "stringValue16827") @Directive44(argument97 : ["stringValue16828", "stringValue16829"]) { + EnumValue18870 + EnumValue18871 +} + +enum Enum819 @Directive44(argument97 : ["stringValue16830"]) { + EnumValue18872 + EnumValue18873 +} + +enum Enum82 @Directive44(argument97 : ["stringValue552"]) { + EnumValue2006 + EnumValue2007 +} + +enum Enum820 @Directive44(argument97 : ["stringValue16831"]) { + EnumValue18874 + EnumValue18875 + EnumValue18876 + EnumValue18877 + EnumValue18878 + EnumValue18879 + EnumValue18880 + EnumValue18881 +} + +enum Enum821 @Directive44(argument97 : ["stringValue16832"]) { + EnumValue18882 + EnumValue18883 + EnumValue18884 + EnumValue18885 + EnumValue18886 + EnumValue18887 + EnumValue18888 + EnumValue18889 + EnumValue18890 + EnumValue18891 + EnumValue18892 + EnumValue18893 +} + +enum Enum822 @Directive22(argument62 : "stringValue16835") @Directive44(argument97 : ["stringValue16833", "stringValue16834"]) { + EnumValue18894 + EnumValue18895 + EnumValue18896 + EnumValue18897 +} + +enum Enum823 @Directive22(argument62 : "stringValue16836") @Directive44(argument97 : ["stringValue16837", "stringValue16838"]) { + EnumValue18898 + EnumValue18899 +} + +enum Enum824 @Directive44(argument97 : ["stringValue16839"]) { + EnumValue18900 + EnumValue18901 + EnumValue18902 + EnumValue18903 +} + +enum Enum825 @Directive44(argument97 : ["stringValue16840"]) { + EnumValue18904 + EnumValue18905 + EnumValue18906 + EnumValue18907 + EnumValue18908 + EnumValue18909 + EnumValue18910 + EnumValue18911 + EnumValue18912 + EnumValue18913 + EnumValue18914 + EnumValue18915 + EnumValue18916 + EnumValue18917 + EnumValue18918 + EnumValue18919 + EnumValue18920 + EnumValue18921 + EnumValue18922 + EnumValue18923 + EnumValue18924 + EnumValue18925 + EnumValue18926 + EnumValue18927 + EnumValue18928 + EnumValue18929 + EnumValue18930 +} + +enum Enum826 @Directive44(argument97 : ["stringValue16841"]) { + EnumValue18931 + EnumValue18932 +} + +enum Enum827 @Directive44(argument97 : ["stringValue16842"]) { + EnumValue18933 + EnumValue18934 + EnumValue18935 + EnumValue18936 + EnumValue18937 + EnumValue18938 + EnumValue18939 + EnumValue18940 + EnumValue18941 + EnumValue18942 + EnumValue18943 + EnumValue18944 + EnumValue18945 + EnumValue18946 + EnumValue18947 + EnumValue18948 + EnumValue18949 +} + +enum Enum828 @Directive44(argument97 : ["stringValue16843"]) { + EnumValue18950 + EnumValue18951 + EnumValue18952 + EnumValue18953 +} + +enum Enum829 @Directive44(argument97 : ["stringValue16844"]) { + EnumValue18954 + EnumValue18955 + EnumValue18956 + EnumValue18957 + EnumValue18958 + EnumValue18959 + EnumValue18960 +} + +enum Enum83 @Directive44(argument97 : ["stringValue553"]) { + EnumValue2008 + EnumValue2009 + EnumValue2010 + EnumValue2011 + EnumValue2012 +} + +enum Enum830 @Directive44(argument97 : ["stringValue16845"]) { + EnumValue18961 + EnumValue18962 + EnumValue18963 + EnumValue18964 + EnumValue18965 + EnumValue18966 + EnumValue18967 + EnumValue18968 + EnumValue18969 + EnumValue18970 + EnumValue18971 + EnumValue18972 + EnumValue18973 + EnumValue18974 + EnumValue18975 + EnumValue18976 + EnumValue18977 +} + +enum Enum831 @Directive44(argument97 : ["stringValue16846"]) { + EnumValue18978 + EnumValue18979 + EnumValue18980 +} + +enum Enum832 @Directive44(argument97 : ["stringValue16847"]) { + EnumValue18981 + EnumValue18982 + EnumValue18983 + EnumValue18984 + EnumValue18985 +} + +enum Enum833 @Directive44(argument97 : ["stringValue16848"]) { + EnumValue18986 + EnumValue18987 +} + +enum Enum834 @Directive44(argument97 : ["stringValue16849"]) { + EnumValue18988 + EnumValue18989 + EnumValue18990 + EnumValue18991 + EnumValue18992 + EnumValue18993 + EnumValue18994 + EnumValue18995 + EnumValue18996 + EnumValue18997 + EnumValue18998 +} + +enum Enum835 @Directive44(argument97 : ["stringValue16850"]) { + EnumValue18999 + EnumValue19000 + EnumValue19001 + EnumValue19002 + EnumValue19003 +} + +enum Enum836 @Directive44(argument97 : ["stringValue16851"]) { + EnumValue19004 + EnumValue19005 + EnumValue19006 + EnumValue19007 + EnumValue19008 + EnumValue19009 + EnumValue19010 + EnumValue19011 + EnumValue19012 + EnumValue19013 + EnumValue19014 + EnumValue19015 + EnumValue19016 + EnumValue19017 + EnumValue19018 + EnumValue19019 + EnumValue19020 + EnumValue19021 + EnumValue19022 + EnumValue19023 + EnumValue19024 + EnumValue19025 + EnumValue19026 + EnumValue19027 + EnumValue19028 + EnumValue19029 + EnumValue19030 + EnumValue19031 + EnumValue19032 + EnumValue19033 + EnumValue19034 + EnumValue19035 + EnumValue19036 + EnumValue19037 + EnumValue19038 + EnumValue19039 + EnumValue19040 + EnumValue19041 + EnumValue19042 + EnumValue19043 + EnumValue19044 + EnumValue19045 + EnumValue19046 + EnumValue19047 + EnumValue19048 + EnumValue19049 + EnumValue19050 + EnumValue19051 + EnumValue19052 + EnumValue19053 + EnumValue19054 + EnumValue19055 + EnumValue19056 + EnumValue19057 + EnumValue19058 + EnumValue19059 + EnumValue19060 + EnumValue19061 + EnumValue19062 + EnumValue19063 + EnumValue19064 + EnumValue19065 + EnumValue19066 + EnumValue19067 + EnumValue19068 + EnumValue19069 + EnumValue19070 +} + +enum Enum837 @Directive22(argument62 : "stringValue16852") @Directive44(argument97 : ["stringValue16853", "stringValue16854"]) { + EnumValue19071 + EnumValue19072 + EnumValue19073 + EnumValue19074 + EnumValue19075 + EnumValue19076 + EnumValue19077 + EnumValue19078 + EnumValue19079 +} + +enum Enum838 @Directive44(argument97 : ["stringValue16855"]) { + EnumValue19080 + EnumValue19081 + EnumValue19082 + EnumValue19083 + EnumValue19084 + EnumValue19085 + EnumValue19086 + EnumValue19087 + EnumValue19088 + EnumValue19089 + EnumValue19090 + EnumValue19091 + EnumValue19092 + EnumValue19093 + EnumValue19094 + EnumValue19095 + EnumValue19096 + EnumValue19097 + EnumValue19098 + EnumValue19099 + EnumValue19100 + EnumValue19101 + EnumValue19102 + EnumValue19103 + EnumValue19104 + EnumValue19105 + EnumValue19106 + EnumValue19107 + EnumValue19108 + EnumValue19109 + EnumValue19110 + EnumValue19111 + EnumValue19112 + EnumValue19113 +} + +enum Enum839 @Directive22(argument62 : "stringValue16856") @Directive44(argument97 : ["stringValue16857"]) { + EnumValue19114 + EnumValue19115 + EnumValue19116 + EnumValue19117 +} + +enum Enum84 @Directive44(argument97 : ["stringValue565"]) { + EnumValue2013 + EnumValue2014 + EnumValue2015 +} + +enum Enum840 @Directive22(argument62 : "stringValue16858") @Directive44(argument97 : ["stringValue16859"]) { + EnumValue19118 + EnumValue19119 + EnumValue19120 + EnumValue19121 + EnumValue19122 + EnumValue19123 +} + +enum Enum841 @Directive19(argument57 : "stringValue16860") @Directive22(argument62 : "stringValue16861") @Directive44(argument97 : ["stringValue16862"]) { + EnumValue19124 + EnumValue19125 + EnumValue19126 + EnumValue19127 + EnumValue19128 + EnumValue19129 + EnumValue19130 + EnumValue19131 + EnumValue19132 + EnumValue19133 + EnumValue19134 + EnumValue19135 + EnumValue19136 + EnumValue19137 + EnumValue19138 + EnumValue19139 + EnumValue19140 + EnumValue19141 +} + +enum Enum842 @Directive44(argument97 : ["stringValue16863"]) { + EnumValue19142 + EnumValue19143 + EnumValue19144 + EnumValue19145 +} + +enum Enum843 @Directive44(argument97 : ["stringValue16864"]) { + EnumValue19146 + EnumValue19147 + EnumValue19148 + EnumValue19149 + EnumValue19150 + EnumValue19151 + EnumValue19152 + EnumValue19153 + EnumValue19154 + EnumValue19155 + EnumValue19156 + EnumValue19157 + EnumValue19158 + EnumValue19159 + EnumValue19160 + EnumValue19161 + EnumValue19162 + EnumValue19163 + EnumValue19164 + EnumValue19165 + EnumValue19166 + EnumValue19167 + EnumValue19168 + EnumValue19169 + EnumValue19170 +} + +enum Enum844 @Directive19(argument57 : "stringValue16865") @Directive22(argument62 : "stringValue16866") @Directive44(argument97 : ["stringValue16867", "stringValue16868", "stringValue16869"]) { + EnumValue19171 + EnumValue19172 + EnumValue19173 + EnumValue19174 + EnumValue19175 +} + +enum Enum845 @Directive19(argument57 : "stringValue16871") @Directive42(argument96 : ["stringValue16870"]) @Directive44(argument97 : ["stringValue16872"]) { + EnumValue19176 + EnumValue19177 + EnumValue19178 + EnumValue19179 + EnumValue19180 + EnumValue19181 + EnumValue19182 + EnumValue19183 + EnumValue19184 + EnumValue19185 @deprecated + EnumValue19186 + EnumValue19187 + EnumValue19188 + EnumValue19189 + EnumValue19190 + EnumValue19191 + EnumValue19192 + EnumValue19193 + EnumValue19194 + EnumValue19195 + EnumValue19196 + EnumValue19197 + EnumValue19198 + EnumValue19199 + EnumValue19200 + EnumValue19201 + EnumValue19202 + EnumValue19203 + EnumValue19204 + EnumValue19205 + EnumValue19206 +} + +enum Enum846 @Directive22(argument62 : "stringValue16873") @Directive44(argument97 : ["stringValue16874"]) { + EnumValue19207 + EnumValue19208 + EnumValue19209 +} + +enum Enum847 @Directive44(argument97 : ["stringValue16875"]) { + EnumValue19210 + EnumValue19211 + EnumValue19212 + EnumValue19213 + EnumValue19214 + EnumValue19215 + EnumValue19216 + EnumValue19217 + EnumValue19218 + EnumValue19219 + EnumValue19220 + EnumValue19221 + EnumValue19222 + EnumValue19223 + EnumValue19224 + EnumValue19225 + EnumValue19226 + EnumValue19227 + EnumValue19228 + EnumValue19229 + EnumValue19230 + EnumValue19231 + EnumValue19232 + EnumValue19233 + EnumValue19234 + EnumValue19235 + EnumValue19236 + EnumValue19237 + EnumValue19238 + EnumValue19239 + EnumValue19240 + EnumValue19241 + EnumValue19242 + EnumValue19243 + EnumValue19244 + EnumValue19245 + EnumValue19246 + EnumValue19247 + EnumValue19248 + EnumValue19249 + EnumValue19250 + EnumValue19251 + EnumValue19252 + EnumValue19253 + EnumValue19254 + EnumValue19255 + EnumValue19256 + EnumValue19257 + EnumValue19258 + EnumValue19259 + EnumValue19260 + EnumValue19261 + EnumValue19262 + EnumValue19263 + EnumValue19264 + EnumValue19265 + EnumValue19266 + EnumValue19267 + EnumValue19268 + EnumValue19269 + EnumValue19270 + EnumValue19271 + EnumValue19272 + EnumValue19273 + EnumValue19274 + EnumValue19275 + EnumValue19276 + EnumValue19277 + EnumValue19278 + EnumValue19279 + EnumValue19280 + EnumValue19281 + EnumValue19282 + EnumValue19283 + EnumValue19284 + EnumValue19285 + EnumValue19286 + EnumValue19287 + EnumValue19288 + EnumValue19289 + EnumValue19290 + EnumValue19291 + EnumValue19292 + EnumValue19293 + EnumValue19294 + EnumValue19295 + EnumValue19296 + EnumValue19297 + EnumValue19298 + EnumValue19299 + EnumValue19300 + EnumValue19301 + EnumValue19302 + EnumValue19303 + EnumValue19304 + EnumValue19305 + EnumValue19306 + EnumValue19307 + EnumValue19308 + EnumValue19309 + EnumValue19310 + EnumValue19311 + EnumValue19312 + EnumValue19313 + EnumValue19314 + EnumValue19315 + EnumValue19316 + EnumValue19317 + EnumValue19318 + EnumValue19319 + EnumValue19320 + EnumValue19321 + EnumValue19322 + EnumValue19323 + EnumValue19324 + EnumValue19325 + EnumValue19326 + EnumValue19327 + EnumValue19328 + EnumValue19329 + EnumValue19330 + EnumValue19331 + EnumValue19332 + EnumValue19333 + EnumValue19334 + EnumValue19335 + EnumValue19336 + EnumValue19337 + EnumValue19338 + EnumValue19339 + EnumValue19340 + EnumValue19341 + EnumValue19342 + EnumValue19343 + EnumValue19344 + EnumValue19345 + EnumValue19346 + EnumValue19347 + EnumValue19348 + EnumValue19349 + EnumValue19350 + EnumValue19351 + EnumValue19352 + EnumValue19353 + EnumValue19354 + EnumValue19355 + EnumValue19356 + EnumValue19357 + EnumValue19358 + EnumValue19359 + EnumValue19360 + EnumValue19361 + EnumValue19362 + EnumValue19363 + EnumValue19364 + EnumValue19365 + EnumValue19366 + EnumValue19367 + EnumValue19368 + EnumValue19369 + EnumValue19370 + EnumValue19371 + EnumValue19372 + EnumValue19373 + EnumValue19374 + EnumValue19375 + EnumValue19376 + EnumValue19377 + EnumValue19378 + EnumValue19379 + EnumValue19380 + EnumValue19381 + EnumValue19382 + EnumValue19383 + EnumValue19384 + EnumValue19385 + EnumValue19386 + EnumValue19387 + EnumValue19388 + EnumValue19389 + EnumValue19390 + EnumValue19391 + EnumValue19392 + EnumValue19393 + EnumValue19394 + EnumValue19395 + EnumValue19396 + EnumValue19397 + EnumValue19398 + EnumValue19399 + EnumValue19400 + EnumValue19401 + EnumValue19402 + EnumValue19403 + EnumValue19404 + EnumValue19405 + EnumValue19406 + EnumValue19407 + EnumValue19408 + EnumValue19409 + EnumValue19410 + EnumValue19411 + EnumValue19412 + EnumValue19413 + EnumValue19414 + EnumValue19415 + EnumValue19416 + EnumValue19417 + EnumValue19418 + EnumValue19419 + EnumValue19420 + EnumValue19421 + EnumValue19422 + EnumValue19423 + EnumValue19424 + EnumValue19425 + EnumValue19426 + EnumValue19427 + EnumValue19428 + EnumValue19429 + EnumValue19430 + EnumValue19431 + EnumValue19432 + EnumValue19433 + EnumValue19434 + EnumValue19435 + EnumValue19436 + EnumValue19437 + EnumValue19438 + EnumValue19439 + EnumValue19440 + EnumValue19441 + EnumValue19442 + EnumValue19443 + EnumValue19444 + EnumValue19445 + EnumValue19446 + EnumValue19447 + EnumValue19448 + EnumValue19449 + EnumValue19450 + EnumValue19451 + EnumValue19452 + EnumValue19453 + EnumValue19454 + EnumValue19455 + EnumValue19456 + EnumValue19457 + EnumValue19458 + EnumValue19459 +} + +enum Enum848 @Directive44(argument97 : ["stringValue16876"]) { + EnumValue19460 + EnumValue19461 + EnumValue19462 + EnumValue19463 + EnumValue19464 + EnumValue19465 + EnumValue19466 + EnumValue19467 +} + +enum Enum849 @Directive44(argument97 : ["stringValue16877"]) { + EnumValue19468 + EnumValue19469 + EnumValue19470 + EnumValue19471 + EnumValue19472 + EnumValue19473 + EnumValue19474 + EnumValue19475 + EnumValue19476 + EnumValue19477 + EnumValue19478 + EnumValue19479 + EnumValue19480 + EnumValue19481 + EnumValue19482 + EnumValue19483 + EnumValue19484 + EnumValue19485 + EnumValue19486 + EnumValue19487 + EnumValue19488 + EnumValue19489 + EnumValue19490 + EnumValue19491 + EnumValue19492 + EnumValue19493 + EnumValue19494 + EnumValue19495 + EnumValue19496 + EnumValue19497 + EnumValue19498 + EnumValue19499 + EnumValue19500 + EnumValue19501 + EnumValue19502 + EnumValue19503 + EnumValue19504 + EnumValue19505 + EnumValue19506 + EnumValue19507 + EnumValue19508 + EnumValue19509 + EnumValue19510 + EnumValue19511 + EnumValue19512 + EnumValue19513 + EnumValue19514 + EnumValue19515 + EnumValue19516 + EnumValue19517 + EnumValue19518 + EnumValue19519 + EnumValue19520 + EnumValue19521 + EnumValue19522 + EnumValue19523 + EnumValue19524 + EnumValue19525 + EnumValue19526 + EnumValue19527 + EnumValue19528 + EnumValue19529 + EnumValue19530 + EnumValue19531 + EnumValue19532 + EnumValue19533 + EnumValue19534 + EnumValue19535 + EnumValue19536 + EnumValue19537 + EnumValue19538 + EnumValue19539 + EnumValue19540 + EnumValue19541 + EnumValue19542 + EnumValue19543 + EnumValue19544 + EnumValue19545 + EnumValue19546 + EnumValue19547 + EnumValue19548 + EnumValue19549 + EnumValue19550 + EnumValue19551 + EnumValue19552 + EnumValue19553 + EnumValue19554 + EnumValue19555 + EnumValue19556 + EnumValue19557 + EnumValue19558 + EnumValue19559 + EnumValue19560 + EnumValue19561 + EnumValue19562 + EnumValue19563 + EnumValue19564 + EnumValue19565 + EnumValue19566 + EnumValue19567 + EnumValue19568 + EnumValue19569 + EnumValue19570 + EnumValue19571 + EnumValue19572 + EnumValue19573 + EnumValue19574 + EnumValue19575 + EnumValue19576 + EnumValue19577 + EnumValue19578 + EnumValue19579 + EnumValue19580 + EnumValue19581 + EnumValue19582 + EnumValue19583 + EnumValue19584 + EnumValue19585 + EnumValue19586 + EnumValue19587 + EnumValue19588 + EnumValue19589 + EnumValue19590 + EnumValue19591 + EnumValue19592 + EnumValue19593 + EnumValue19594 + EnumValue19595 + EnumValue19596 + EnumValue19597 + EnumValue19598 + EnumValue19599 + EnumValue19600 + EnumValue19601 + EnumValue19602 + EnumValue19603 + EnumValue19604 + EnumValue19605 + EnumValue19606 + EnumValue19607 + EnumValue19608 + EnumValue19609 + EnumValue19610 + EnumValue19611 + EnumValue19612 + EnumValue19613 + EnumValue19614 + EnumValue19615 + EnumValue19616 + EnumValue19617 + EnumValue19618 + EnumValue19619 + EnumValue19620 + EnumValue19621 + EnumValue19622 + EnumValue19623 + EnumValue19624 + EnumValue19625 + EnumValue19626 + EnumValue19627 + EnumValue19628 + EnumValue19629 + EnumValue19630 + EnumValue19631 + EnumValue19632 + EnumValue19633 + EnumValue19634 + EnumValue19635 + EnumValue19636 + EnumValue19637 + EnumValue19638 + EnumValue19639 + EnumValue19640 + EnumValue19641 + EnumValue19642 + EnumValue19643 + EnumValue19644 + EnumValue19645 + EnumValue19646 + EnumValue19647 + EnumValue19648 + EnumValue19649 + EnumValue19650 + EnumValue19651 + EnumValue19652 + EnumValue19653 + EnumValue19654 + EnumValue19655 + EnumValue19656 + EnumValue19657 + EnumValue19658 + EnumValue19659 + EnumValue19660 + EnumValue19661 + EnumValue19662 + EnumValue19663 + EnumValue19664 + EnumValue19665 + EnumValue19666 + EnumValue19667 + EnumValue19668 + EnumValue19669 + EnumValue19670 + EnumValue19671 + EnumValue19672 + EnumValue19673 + EnumValue19674 + EnumValue19675 + EnumValue19676 + EnumValue19677 + EnumValue19678 + EnumValue19679 + EnumValue19680 + EnumValue19681 + EnumValue19682 + EnumValue19683 + EnumValue19684 + EnumValue19685 + EnumValue19686 + EnumValue19687 + EnumValue19688 + EnumValue19689 + EnumValue19690 + EnumValue19691 + EnumValue19692 + EnumValue19693 + EnumValue19694 + EnumValue19695 + EnumValue19696 + EnumValue19697 + EnumValue19698 + EnumValue19699 + EnumValue19700 + EnumValue19701 + EnumValue19702 + EnumValue19703 + EnumValue19704 + EnumValue19705 + EnumValue19706 + EnumValue19707 + EnumValue19708 + EnumValue19709 + EnumValue19710 + EnumValue19711 + EnumValue19712 + EnumValue19713 + EnumValue19714 + EnumValue19715 + EnumValue19716 + EnumValue19717 + EnumValue19718 + EnumValue19719 + EnumValue19720 + EnumValue19721 + EnumValue19722 + EnumValue19723 + EnumValue19724 + EnumValue19725 + EnumValue19726 + EnumValue19727 + EnumValue19728 + EnumValue19729 + EnumValue19730 + EnumValue19731 + EnumValue19732 + EnumValue19733 + EnumValue19734 + EnumValue19735 + EnumValue19736 + EnumValue19737 + EnumValue19738 + EnumValue19739 + EnumValue19740 + EnumValue19741 + EnumValue19742 + EnumValue19743 + EnumValue19744 + EnumValue19745 + EnumValue19746 + EnumValue19747 + EnumValue19748 + EnumValue19749 + EnumValue19750 + EnumValue19751 + EnumValue19752 + EnumValue19753 + EnumValue19754 + EnumValue19755 + EnumValue19756 + EnumValue19757 + EnumValue19758 + EnumValue19759 + EnumValue19760 + EnumValue19761 + EnumValue19762 + EnumValue19763 + EnumValue19764 + EnumValue19765 + EnumValue19766 + EnumValue19767 + EnumValue19768 + EnumValue19769 + EnumValue19770 + EnumValue19771 + EnumValue19772 + EnumValue19773 + EnumValue19774 + EnumValue19775 + EnumValue19776 + EnumValue19777 + EnumValue19778 + EnumValue19779 + EnumValue19780 + EnumValue19781 + EnumValue19782 + EnumValue19783 + EnumValue19784 + EnumValue19785 + EnumValue19786 + EnumValue19787 + EnumValue19788 + EnumValue19789 + EnumValue19790 + EnumValue19791 + EnumValue19792 +} + +enum Enum85 @Directive44(argument97 : ["stringValue577"]) { + EnumValue2016 + EnumValue2017 + EnumValue2018 + EnumValue2019 +} + +enum Enum850 @Directive44(argument97 : ["stringValue16878"]) { + EnumValue19793 + EnumValue19794 + EnumValue19795 + EnumValue19796 + EnumValue19797 + EnumValue19798 + EnumValue19799 + EnumValue19800 + EnumValue19801 + EnumValue19802 + EnumValue19803 + EnumValue19804 + EnumValue19805 + EnumValue19806 + EnumValue19807 + EnumValue19808 + EnumValue19809 + EnumValue19810 + EnumValue19811 + EnumValue19812 + EnumValue19813 + EnumValue19814 + EnumValue19815 + EnumValue19816 + EnumValue19817 + EnumValue19818 + EnumValue19819 + EnumValue19820 + EnumValue19821 + EnumValue19822 + EnumValue19823 + EnumValue19824 + EnumValue19825 + EnumValue19826 + EnumValue19827 + EnumValue19828 + EnumValue19829 + EnumValue19830 + EnumValue19831 + EnumValue19832 + EnumValue19833 + EnumValue19834 + EnumValue19835 + EnumValue19836 + EnumValue19837 + EnumValue19838 + EnumValue19839 + EnumValue19840 + EnumValue19841 + EnumValue19842 + EnumValue19843 + EnumValue19844 + EnumValue19845 + EnumValue19846 + EnumValue19847 + EnumValue19848 + EnumValue19849 + EnumValue19850 + EnumValue19851 + EnumValue19852 + EnumValue19853 + EnumValue19854 + EnumValue19855 + EnumValue19856 + EnumValue19857 + EnumValue19858 + EnumValue19859 + EnumValue19860 + EnumValue19861 + EnumValue19862 + EnumValue19863 + EnumValue19864 + EnumValue19865 + EnumValue19866 + EnumValue19867 + EnumValue19868 + EnumValue19869 + EnumValue19870 + EnumValue19871 + EnumValue19872 + EnumValue19873 + EnumValue19874 + EnumValue19875 + EnumValue19876 + EnumValue19877 + EnumValue19878 + EnumValue19879 + EnumValue19880 + EnumValue19881 + EnumValue19882 + EnumValue19883 + EnumValue19884 + EnumValue19885 + EnumValue19886 + EnumValue19887 + EnumValue19888 + EnumValue19889 + EnumValue19890 + EnumValue19891 + EnumValue19892 + EnumValue19893 + EnumValue19894 + EnumValue19895 + EnumValue19896 + EnumValue19897 + EnumValue19898 + EnumValue19899 + EnumValue19900 + EnumValue19901 + EnumValue19902 + EnumValue19903 + EnumValue19904 + EnumValue19905 + EnumValue19906 + EnumValue19907 + EnumValue19908 + EnumValue19909 + EnumValue19910 + EnumValue19911 + EnumValue19912 + EnumValue19913 + EnumValue19914 + EnumValue19915 + EnumValue19916 + EnumValue19917 + EnumValue19918 + EnumValue19919 + EnumValue19920 + EnumValue19921 + EnumValue19922 + EnumValue19923 + EnumValue19924 +} + +enum Enum851 @Directive44(argument97 : ["stringValue16879"]) { + EnumValue19925 + EnumValue19926 + EnumValue19927 + EnumValue19928 + EnumValue19929 +} + +enum Enum852 @Directive22(argument62 : "stringValue16880") @Directive44(argument97 : ["stringValue16881"]) { + EnumValue19930 + EnumValue19931 +} + +enum Enum853 @Directive44(argument97 : ["stringValue16882"]) { + EnumValue19932 + EnumValue19933 + EnumValue19934 + EnumValue19935 + EnumValue19936 + EnumValue19937 + EnumValue19938 + EnumValue19939 + EnumValue19940 + EnumValue19941 + EnumValue19942 + EnumValue19943 + EnumValue19944 + EnumValue19945 + EnumValue19946 + EnumValue19947 + EnumValue19948 + EnumValue19949 + EnumValue19950 + EnumValue19951 + EnumValue19952 + EnumValue19953 + EnumValue19954 + EnumValue19955 + EnumValue19956 + EnumValue19957 + EnumValue19958 + EnumValue19959 + EnumValue19960 + EnumValue19961 + EnumValue19962 + EnumValue19963 + EnumValue19964 + EnumValue19965 + EnumValue19966 + EnumValue19967 +} + +enum Enum854 @Directive44(argument97 : ["stringValue16883"]) { + EnumValue19968 + EnumValue19969 + EnumValue19970 + EnumValue19971 +} + +enum Enum855 @Directive44(argument97 : ["stringValue16884"]) { + EnumValue19972 + EnumValue19973 + EnumValue19974 + EnumValue19975 + EnumValue19976 + EnumValue19977 + EnumValue19978 + EnumValue19979 + EnumValue19980 + EnumValue19981 + EnumValue19982 + EnumValue19983 + EnumValue19984 + EnumValue19985 + EnumValue19986 + EnumValue19987 + EnumValue19988 + EnumValue19989 + EnumValue19990 + EnumValue19991 + EnumValue19992 + EnumValue19993 + EnumValue19994 + EnumValue19995 + EnumValue19996 + EnumValue19997 + EnumValue19998 +} + +enum Enum856 @Directive44(argument97 : ["stringValue16885"]) { + EnumValue19999 + EnumValue20000 +} + +enum Enum857 @Directive44(argument97 : ["stringValue16886"]) { + EnumValue20001 + EnumValue20002 + EnumValue20003 + EnumValue20004 + EnumValue20005 + EnumValue20006 + EnumValue20007 + EnumValue20008 + EnumValue20009 + EnumValue20010 + EnumValue20011 + EnumValue20012 + EnumValue20013 + EnumValue20014 +} + +enum Enum858 @Directive44(argument97 : ["stringValue16887"]) { + EnumValue20015 + EnumValue20016 + EnumValue20017 + EnumValue20018 +} + +enum Enum859 @Directive44(argument97 : ["stringValue16888"]) { + EnumValue20019 + EnumValue20020 + EnumValue20021 + EnumValue20022 + EnumValue20023 + EnumValue20024 + EnumValue20025 +} + +enum Enum86 @Directive44(argument97 : ["stringValue595"]) { + EnumValue2020 + EnumValue2021 + EnumValue2022 + EnumValue2023 + EnumValue2024 +} + +enum Enum860 @Directive44(argument97 : ["stringValue16889"]) { + EnumValue20026 + EnumValue20027 + EnumValue20028 + EnumValue20029 + EnumValue20030 + EnumValue20031 + EnumValue20032 + EnumValue20033 + EnumValue20034 + EnumValue20035 + EnumValue20036 + EnumValue20037 + EnumValue20038 + EnumValue20039 + EnumValue20040 + EnumValue20041 + EnumValue20042 +} + +enum Enum861 @Directive44(argument97 : ["stringValue16890"]) { + EnumValue20043 + EnumValue20044 + EnumValue20045 +} + +enum Enum862 @Directive44(argument97 : ["stringValue16891"]) { + EnumValue20046 + EnumValue20047 + EnumValue20048 + EnumValue20049 + EnumValue20050 +} + +enum Enum863 @Directive44(argument97 : ["stringValue16892"]) { + EnumValue20051 + EnumValue20052 +} + +enum Enum864 @Directive44(argument97 : ["stringValue16893"]) { + EnumValue20053 + EnumValue20054 + EnumValue20055 + EnumValue20056 + EnumValue20057 + EnumValue20058 + EnumValue20059 + EnumValue20060 + EnumValue20061 + EnumValue20062 + EnumValue20063 +} + +enum Enum865 @Directive44(argument97 : ["stringValue16899"]) { + EnumValue20064 + EnumValue20065 + EnumValue20066 + EnumValue20067 + EnumValue20068 + EnumValue20069 + EnumValue20070 + EnumValue20071 + EnumValue20072 + EnumValue20073 + EnumValue20074 + EnumValue20075 + EnumValue20076 + EnumValue20077 + EnumValue20078 + EnumValue20079 + EnumValue20080 + EnumValue20081 + EnumValue20082 + EnumValue20083 + EnumValue20084 + EnumValue20085 + EnumValue20086 + EnumValue20087 + EnumValue20088 + EnumValue20089 + EnumValue20090 + EnumValue20091 + EnumValue20092 + EnumValue20093 + EnumValue20094 + EnumValue20095 + EnumValue20096 + EnumValue20097 + EnumValue20098 + EnumValue20099 + EnumValue20100 + EnumValue20101 + EnumValue20102 + EnumValue20103 + EnumValue20104 + EnumValue20105 + EnumValue20106 + EnumValue20107 + EnumValue20108 + EnumValue20109 + EnumValue20110 + EnumValue20111 + EnumValue20112 +} + +enum Enum866 @Directive44(argument97 : ["stringValue16900"]) { + EnumValue20113 + EnumValue20114 + EnumValue20115 + EnumValue20116 +} + +enum Enum867 @Directive19(argument57 : "stringValue17198") @Directive22(argument62 : "stringValue17199") @Directive44(argument97 : ["stringValue17200", "stringValue17201"]) { + EnumValue20117 + EnumValue20118 + EnumValue20119 + EnumValue20120 + EnumValue20121 + EnumValue20122 + EnumValue20123 + EnumValue20124 + EnumValue20125 + EnumValue20126 + EnumValue20127 + EnumValue20128 + EnumValue20129 + EnumValue20130 + EnumValue20131 + EnumValue20132 + EnumValue20133 + EnumValue20134 +} + +enum Enum868 @Directive19(argument57 : "stringValue17202") @Directive22(argument62 : "stringValue17203") @Directive44(argument97 : ["stringValue17204", "stringValue17205"]) { + EnumValue20135 + EnumValue20136 + EnumValue20137 + EnumValue20138 + EnumValue20139 + EnumValue20140 + EnumValue20141 +} + +enum Enum869 @Directive19(argument57 : "stringValue17206") @Directive22(argument62 : "stringValue17207") @Directive44(argument97 : ["stringValue17208", "stringValue17209"]) { + EnumValue20142 + EnumValue20143 + EnumValue20144 +} + +enum Enum87 @Directive44(argument97 : ["stringValue596"]) { + EnumValue2025 + EnumValue2026 +} + +enum Enum870 @Directive19(argument57 : "stringValue17217") @Directive22(argument62 : "stringValue17218") @Directive44(argument97 : ["stringValue17219", "stringValue17220"]) { + EnumValue20145 + EnumValue20146 + EnumValue20147 + EnumValue20148 +} + +enum Enum871 @Directive22(argument62 : "stringValue17260") @Directive44(argument97 : ["stringValue17261", "stringValue17262"]) { + EnumValue20149 + EnumValue20150 + EnumValue20151 +} + +enum Enum872 @Directive19(argument57 : "stringValue17387") @Directive22(argument62 : "stringValue17386") @Directive44(argument97 : ["stringValue17388", "stringValue17389"]) { + EnumValue20152 +} + +enum Enum873 @Directive19(argument57 : "stringValue17391") @Directive22(argument62 : "stringValue17390") @Directive44(argument97 : ["stringValue17392", "stringValue17393"]) { + EnumValue20153 +} + +enum Enum874 @Directive22(argument62 : "stringValue17473") @Directive44(argument97 : ["stringValue17474", "stringValue17475"]) { + EnumValue20154 + EnumValue20155 + EnumValue20156 + EnumValue20157 +} + +enum Enum875 @Directive22(argument62 : "stringValue17479") @Directive44(argument97 : ["stringValue17480", "stringValue17481"]) { + EnumValue20158 + EnumValue20159 +} + +enum Enum876 @Directive22(argument62 : "stringValue17485") @Directive44(argument97 : ["stringValue17486", "stringValue17487"]) { + EnumValue20160 + EnumValue20161 +} + +enum Enum877 @Directive19(argument57 : "stringValue17511") @Directive22(argument62 : "stringValue17512") @Directive44(argument97 : ["stringValue17513", "stringValue17514"]) { + EnumValue20162 + EnumValue20163 + EnumValue20164 + EnumValue20165 + EnumValue20166 + EnumValue20167 + EnumValue20168 + EnumValue20169 + EnumValue20170 + EnumValue20171 + EnumValue20172 + EnumValue20173 + EnumValue20174 + EnumValue20175 + EnumValue20176 + EnumValue20177 + EnumValue20178 + EnumValue20179 + EnumValue20180 + EnumValue20181 + EnumValue20182 + EnumValue20183 + EnumValue20184 + EnumValue20185 + EnumValue20186 + EnumValue20187 + EnumValue20188 + EnumValue20189 + EnumValue20190 + EnumValue20191 + EnumValue20192 + EnumValue20193 + EnumValue20194 + EnumValue20195 + EnumValue20196 + EnumValue20197 + EnumValue20198 + EnumValue20199 + EnumValue20200 + EnumValue20201 + EnumValue20202 + EnumValue20203 + EnumValue20204 + EnumValue20205 + EnumValue20206 + EnumValue20207 + EnumValue20208 + EnumValue20209 + EnumValue20210 + EnumValue20211 + EnumValue20212 + EnumValue20213 + EnumValue20214 + EnumValue20215 + EnumValue20216 + EnumValue20217 + EnumValue20218 + EnumValue20219 + EnumValue20220 + EnumValue20221 + EnumValue20222 + EnumValue20223 + EnumValue20224 + EnumValue20225 + EnumValue20226 + EnumValue20227 + EnumValue20228 + EnumValue20229 + EnumValue20230 + EnumValue20231 + EnumValue20232 +} + +enum Enum878 @Directive19(argument57 : "stringValue17515") @Directive22(argument62 : "stringValue17516") @Directive44(argument97 : ["stringValue17517", "stringValue17518"]) { + EnumValue20233 + EnumValue20234 + EnumValue20235 + EnumValue20236 + EnumValue20237 + EnumValue20238 +} + +enum Enum879 @Directive19(argument57 : "stringValue17525") @Directive22(argument62 : "stringValue17526") @Directive44(argument97 : ["stringValue17527", "stringValue17528"]) { + EnumValue20239 + EnumValue20240 + EnumValue20241 + EnumValue20242 +} + +enum Enum88 @Directive44(argument97 : ["stringValue599"]) { + EnumValue2027 + EnumValue2028 + EnumValue2029 +} + +enum Enum880 @Directive22(argument62 : "stringValue17536") @Directive44(argument97 : ["stringValue17537", "stringValue17538"]) { + EnumValue20243 + EnumValue20244 + EnumValue20245 + EnumValue20246 + EnumValue20247 + EnumValue20248 + EnumValue20249 +} + +enum Enum881 @Directive19(argument57 : "stringValue17610") @Directive22(argument62 : "stringValue17611") @Directive44(argument97 : ["stringValue17612", "stringValue17613"]) { + EnumValue20250 + EnumValue20251 + EnumValue20252 + EnumValue20253 + EnumValue20254 + EnumValue20255 + EnumValue20256 + EnumValue20257 + EnumValue20258 +} + +enum Enum882 @Directive22(argument62 : "stringValue17620") @Directive44(argument97 : ["stringValue17621", "stringValue17622"]) { + EnumValue20259 + EnumValue20260 + EnumValue20261 +} + +enum Enum883 @Directive22(argument62 : "stringValue17623") @Directive44(argument97 : ["stringValue17624", "stringValue17625"]) { + EnumValue20262 + EnumValue20263 + EnumValue20264 + EnumValue20265 +} + +enum Enum884 @Directive22(argument62 : "stringValue17626") @Directive44(argument97 : ["stringValue17627", "stringValue17628"]) { + EnumValue20266 + EnumValue20267 +} + +enum Enum885 @Directive19(argument57 : "stringValue17639") @Directive22(argument62 : "stringValue17638") @Directive44(argument97 : ["stringValue17640", "stringValue17641"]) { + EnumValue20268 + EnumValue20269 +} + +enum Enum886 @Directive19(argument57 : "stringValue17664") @Directive22(argument62 : "stringValue17665") @Directive44(argument97 : ["stringValue17666", "stringValue17667"]) { + EnumValue20270 + EnumValue20271 + EnumValue20272 +} + +enum Enum887 @Directive19(argument57 : "stringValue17743") @Directive22(argument62 : "stringValue17744") @Directive44(argument97 : ["stringValue17745", "stringValue17746"]) { + EnumValue20273 + EnumValue20274 + EnumValue20275 + EnumValue20276 +} + +enum Enum888 @Directive22(argument62 : "stringValue17761") @Directive44(argument97 : ["stringValue17762", "stringValue17763", "stringValue17764"]) { + EnumValue20277 + EnumValue20278 + EnumValue20279 + EnumValue20280 + EnumValue20281 + EnumValue20282 + EnumValue20283 + EnumValue20284 + EnumValue20285 + EnumValue20286 + EnumValue20287 + EnumValue20288 + EnumValue20289 + EnumValue20290 + EnumValue20291 + EnumValue20292 + EnumValue20293 +} + +enum Enum889 @Directive19(argument57 : "stringValue17804") @Directive22(argument62 : "stringValue17803") @Directive44(argument97 : ["stringValue17805", "stringValue17806"]) { + EnumValue20294 + EnumValue20295 +} + +enum Enum89 @Directive44(argument97 : ["stringValue606"]) { + EnumValue2030 + EnumValue2031 + EnumValue2032 +} + +enum Enum890 @Directive19(argument57 : "stringValue17829") @Directive22(argument62 : "stringValue17828") @Directive44(argument97 : ["stringValue17830", "stringValue17831"]) { + EnumValue20296 + EnumValue20297 +} + +enum Enum891 @Directive19(argument57 : "stringValue17837") @Directive22(argument62 : "stringValue17838") @Directive44(argument97 : ["stringValue17839", "stringValue17840", "stringValue17841"]) { + EnumValue20298 + EnumValue20299 + EnumValue20300 + EnumValue20301 +} + +enum Enum892 @Directive19(argument57 : "stringValue17852") @Directive22(argument62 : "stringValue17853") @Directive44(argument97 : ["stringValue17854", "stringValue17855"]) { + EnumValue20302 + EnumValue20303 + EnumValue20304 + EnumValue20305 + EnumValue20306 + EnumValue20307 + EnumValue20308 + EnumValue20309 + EnumValue20310 + EnumValue20311 +} + +enum Enum893 @Directive19(argument57 : "stringValue17856") @Directive22(argument62 : "stringValue17857") @Directive44(argument97 : ["stringValue17858", "stringValue17859"]) { + EnumValue20312 + EnumValue20313 + EnumValue20314 + EnumValue20315 + EnumValue20316 + EnumValue20317 + EnumValue20318 + EnumValue20319 + EnumValue20320 + EnumValue20321 + EnumValue20322 + EnumValue20323 + EnumValue20324 + EnumValue20325 + EnumValue20326 + EnumValue20327 + EnumValue20328 + EnumValue20329 + EnumValue20330 + EnumValue20331 + EnumValue20332 + EnumValue20333 + EnumValue20334 + EnumValue20335 + EnumValue20336 + EnumValue20337 + EnumValue20338 + EnumValue20339 + EnumValue20340 + EnumValue20341 + EnumValue20342 + EnumValue20343 +} + +enum Enum894 @Directive19(argument57 : "stringValue17905") @Directive22(argument62 : "stringValue17904") @Directive44(argument97 : ["stringValue17906", "stringValue17907"]) { + EnumValue20344 + EnumValue20345 + EnumValue20346 + EnumValue20347 + EnumValue20348 + EnumValue20349 +} + +enum Enum895 @Directive19(argument57 : "stringValue17957") @Directive22(argument62 : "stringValue17958") @Directive44(argument97 : ["stringValue17959", "stringValue17960"]) { + EnumValue20350 + EnumValue20351 + EnumValue20352 + EnumValue20353 + EnumValue20354 +} + +enum Enum896 @Directive19(argument57 : "stringValue17961") @Directive22(argument62 : "stringValue17962") @Directive44(argument97 : ["stringValue17963", "stringValue17964"]) { + EnumValue20355 + EnumValue20356 +} + +enum Enum897 @Directive19(argument57 : "stringValue17969") @Directive22(argument62 : "stringValue17968") @Directive44(argument97 : ["stringValue17970", "stringValue17971"]) { + EnumValue20357 + EnumValue20358 + EnumValue20359 + EnumValue20360 + EnumValue20361 + EnumValue20362 + EnumValue20363 + EnumValue20364 + EnumValue20365 + EnumValue20366 + EnumValue20367 + EnumValue20368 + EnumValue20369 + EnumValue20370 + EnumValue20371 + EnumValue20372 + EnumValue20373 + EnumValue20374 + EnumValue20375 + EnumValue20376 + EnumValue20377 + EnumValue20378 +} + +enum Enum898 @Directive19(argument57 : "stringValue17972") @Directive22(argument62 : "stringValue17973") @Directive44(argument97 : ["stringValue17974", "stringValue17975"]) { + EnumValue20379 + EnumValue20380 + EnumValue20381 + EnumValue20382 + EnumValue20383 + EnumValue20384 + EnumValue20385 + EnumValue20386 + EnumValue20387 + EnumValue20388 + EnumValue20389 + EnumValue20390 + EnumValue20391 + EnumValue20392 + EnumValue20393 + EnumValue20394 + EnumValue20395 + EnumValue20396 + EnumValue20397 + EnumValue20398 + EnumValue20399 + EnumValue20400 + EnumValue20401 +} + +enum Enum899 @Directive19(argument57 : "stringValue17976") @Directive22(argument62 : "stringValue17977") @Directive44(argument97 : ["stringValue17978", "stringValue17979"]) { + EnumValue20402 + EnumValue20403 + EnumValue20404 + EnumValue20405 + EnumValue20406 + EnumValue20407 + EnumValue20408 + EnumValue20409 + EnumValue20410 + EnumValue20411 + EnumValue20412 + EnumValue20413 + EnumValue20414 + EnumValue20415 + EnumValue20416 + EnumValue20417 + EnumValue20418 + EnumValue20419 + EnumValue20420 + EnumValue20421 + EnumValue20422 +} + +enum Enum9 @Directive19(argument57 : "stringValue104") @Directive22(argument62 : "stringValue103") @Directive44(argument97 : ["stringValue105", "stringValue106"]) { + EnumValue78 + EnumValue79 + EnumValue80 + EnumValue81 +} + +enum Enum90 @Directive44(argument97 : ["stringValue620"]) { + EnumValue2033 + EnumValue2034 + EnumValue2035 +} + +enum Enum900 @Directive19(argument57 : "stringValue17988") @Directive22(argument62 : "stringValue17989") @Directive44(argument97 : ["stringValue17990", "stringValue17991"]) { + EnumValue20423 + EnumValue20424 + EnumValue20425 + EnumValue20426 + EnumValue20427 +} + +enum Enum901 @Directive19(argument57 : "stringValue18012") @Directive22(argument62 : "stringValue18013") @Directive44(argument97 : ["stringValue18014", "stringValue18015"]) { + EnumValue20428 + EnumValue20429 + EnumValue20430 +} + +enum Enum902 @Directive19(argument57 : "stringValue18029") @Directive22(argument62 : "stringValue18030") @Directive44(argument97 : ["stringValue18031", "stringValue18032"]) { + EnumValue20431 + EnumValue20432 + EnumValue20433 + EnumValue20434 + EnumValue20435 +} + +enum Enum903 @Directive19(argument57 : "stringValue18039") @Directive22(argument62 : "stringValue18040") @Directive44(argument97 : ["stringValue18041", "stringValue18042"]) { + EnumValue20436 + EnumValue20437 + EnumValue20438 + EnumValue20439 + EnumValue20440 + EnumValue20441 + EnumValue20442 + EnumValue20443 +} + +enum Enum904 @Directive19(argument57 : "stringValue18043") @Directive22(argument62 : "stringValue18044") @Directive44(argument97 : ["stringValue18045", "stringValue18046"]) { + EnumValue20444 + EnumValue20445 + EnumValue20446 + EnumValue20447 + EnumValue20448 +} + +enum Enum905 @Directive19(argument57 : "stringValue18109") @Directive22(argument62 : "stringValue18110") @Directive44(argument97 : ["stringValue18111", "stringValue18112"]) { + EnumValue20449 + EnumValue20450 +} + +enum Enum906 @Directive19(argument57 : "stringValue18122") @Directive22(argument62 : "stringValue18123") @Directive44(argument97 : ["stringValue18124", "stringValue18125", "stringValue18126"]) { + EnumValue20451 + EnumValue20452 + EnumValue20453 + EnumValue20454 + EnumValue20455 + EnumValue20456 + EnumValue20457 + EnumValue20458 + EnumValue20459 + EnumValue20460 + EnumValue20461 + EnumValue20462 + EnumValue20463 + EnumValue20464 +} + +enum Enum907 @Directive22(argument62 : "stringValue18134") @Directive44(argument97 : ["stringValue18135", "stringValue18136"]) { + EnumValue20465 + EnumValue20466 + EnumValue20467 + EnumValue20468 + EnumValue20469 +} + +enum Enum908 @Directive19(argument57 : "stringValue18158") @Directive22(argument62 : "stringValue18157") @Directive44(argument97 : ["stringValue18159", "stringValue18160"]) { + EnumValue20470 + EnumValue20471 + EnumValue20472 + EnumValue20473 + EnumValue20474 + EnumValue20475 +} + +enum Enum909 @Directive19(argument57 : "stringValue18308") @Directive22(argument62 : "stringValue18307") @Directive44(argument97 : ["stringValue18309", "stringValue18310"]) { + EnumValue20476 + EnumValue20477 + EnumValue20478 +} + +enum Enum91 @Directive44(argument97 : ["stringValue621"]) { + EnumValue2036 + EnumValue2037 + EnumValue2038 + EnumValue2039 + EnumValue2040 +} + +enum Enum910 @Directive19(argument57 : "stringValue18312") @Directive22(argument62 : "stringValue18311") @Directive44(argument97 : ["stringValue18313", "stringValue18314"]) { + EnumValue20479 + EnumValue20480 +} + +enum Enum911 @Directive42(argument96 : ["stringValue18464"]) @Directive44(argument97 : ["stringValue18465"]) { + EnumValue20481 + EnumValue20482 +} + +enum Enum912 @Directive42(argument96 : ["stringValue18472"]) @Directive44(argument97 : ["stringValue18473"]) { + EnumValue20483 + EnumValue20484 + EnumValue20485 + EnumValue20486 +} + +enum Enum913 @Directive22(argument62 : "stringValue18554") @Directive44(argument97 : ["stringValue18555", "stringValue18556"]) { + EnumValue20487 + EnumValue20488 +} + +enum Enum914 @Directive22(argument62 : "stringValue18606") @Directive44(argument97 : ["stringValue18607", "stringValue18608"]) { + EnumValue20489 + EnumValue20490 + EnumValue20491 +} + +enum Enum915 @Directive22(argument62 : "stringValue18612") @Directive44(argument97 : ["stringValue18613", "stringValue18614"]) { + EnumValue20492 + EnumValue20493 +} + +enum Enum916 @Directive22(argument62 : "stringValue18628") @Directive44(argument97 : ["stringValue18629", "stringValue18630"]) { + EnumValue20494 + EnumValue20495 + EnumValue20496 +} + +enum Enum917 @Directive42(argument96 : ["stringValue18649"]) @Directive44(argument97 : ["stringValue18650"]) { + EnumValue20497 + EnumValue20498 + EnumValue20499 +} + +enum Enum918 @Directive19(argument57 : "stringValue18692") @Directive22(argument62 : "stringValue18691") @Directive44(argument97 : ["stringValue18693"]) { + EnumValue20500 + EnumValue20501 + EnumValue20502 + EnumValue20503 + EnumValue20504 + EnumValue20505 + EnumValue20506 +} + +enum Enum919 @Directive19(argument57 : "stringValue18711") @Directive22(argument62 : "stringValue18710") @Directive44(argument97 : ["stringValue18712"]) { + EnumValue20507 + EnumValue20508 + EnumValue20509 + EnumValue20510 +} + +enum Enum92 @Directive44(argument97 : ["stringValue625"]) { + EnumValue2041 + EnumValue2042 + EnumValue2043 +} + +enum Enum920 @Directive19(argument57 : "stringValue18793") @Directive22(argument62 : "stringValue18794") @Directive44(argument97 : ["stringValue18795"]) { + EnumValue20511 + EnumValue20512 + EnumValue20513 + EnumValue20514 + EnumValue20515 +} + +enum Enum921 @Directive19(argument57 : "stringValue18799") @Directive22(argument62 : "stringValue18800") @Directive44(argument97 : ["stringValue18801"]) { + EnumValue20516 +} + +enum Enum922 @Directive19(argument57 : "stringValue18869") @Directive22(argument62 : "stringValue18867") @Directive44(argument97 : ["stringValue18868"]) { + EnumValue20517 + EnumValue20518 + EnumValue20519 +} + +enum Enum923 @Directive22(argument62 : "stringValue18906") @Directive44(argument97 : ["stringValue18907"]) { + EnumValue20520 + EnumValue20521 + EnumValue20522 + EnumValue20523 + EnumValue20524 + EnumValue20525 + EnumValue20526 + EnumValue20527 + EnumValue20528 + EnumValue20529 + EnumValue20530 + EnumValue20531 + EnumValue20532 + EnumValue20533 + EnumValue20534 + EnumValue20535 + EnumValue20536 + EnumValue20537 + EnumValue20538 + EnumValue20539 + EnumValue20540 +} + +enum Enum924 @Directive19(argument57 : "stringValue18977") @Directive22(argument62 : "stringValue18976") @Directive44(argument97 : ["stringValue18978", "stringValue18979"]) { + EnumValue20541 + EnumValue20542 + EnumValue20543 +} + +enum Enum925 @Directive19(argument57 : "stringValue19009") @Directive22(argument62 : "stringValue19010") @Directive44(argument97 : ["stringValue19011"]) { + EnumValue20544 + EnumValue20545 + EnumValue20546 + EnumValue20547 + EnumValue20548 + EnumValue20549 +} + +enum Enum926 @Directive19(argument57 : "stringValue19024") @Directive42(argument96 : ["stringValue19023"]) @Directive44(argument97 : ["stringValue19025"]) { + EnumValue20550 + EnumValue20551 + EnumValue20552 + EnumValue20553 + EnumValue20554 + EnumValue20555 + EnumValue20556 + EnumValue20557 + EnumValue20558 + EnumValue20559 + EnumValue20560 + EnumValue20561 + EnumValue20562 + EnumValue20563 + EnumValue20564 + EnumValue20565 + EnumValue20566 + EnumValue20567 + EnumValue20568 + EnumValue20569 + EnumValue20570 + EnumValue20571 + EnumValue20572 + EnumValue20573 +} + +enum Enum927 @Directive42(argument96 : ["stringValue19038"]) @Directive44(argument97 : ["stringValue19039"]) { + EnumValue20574 + EnumValue20575 + EnumValue20576 @deprecated + EnumValue20577 + EnumValue20578 + EnumValue20579 @deprecated +} + +enum Enum928 @Directive19(argument57 : "stringValue19124") @Directive22(argument62 : "stringValue19123") @Directive44(argument97 : ["stringValue19125", "stringValue19126"]) { + EnumValue20580 + EnumValue20581 + EnumValue20582 + EnumValue20583 + EnumValue20584 + EnumValue20585 + EnumValue20586 + EnumValue20587 + EnumValue20588 + EnumValue20589 + EnumValue20590 + EnumValue20591 + EnumValue20592 +} + +enum Enum929 @Directive19(argument57 : "stringValue19165") @Directive22(argument62 : "stringValue19164") @Directive44(argument97 : ["stringValue19166", "stringValue19167"]) { + EnumValue20593 + EnumValue20594 + EnumValue20595 + EnumValue20596 + EnumValue20597 + EnumValue20598 +} + +enum Enum93 @Directive44(argument97 : ["stringValue645"]) { + EnumValue2044 + EnumValue2045 + EnumValue2046 + EnumValue2047 + EnumValue2048 + EnumValue2049 + EnumValue2050 +} + +enum Enum930 @Directive19(argument57 : "stringValue19211") @Directive22(argument62 : "stringValue19210") @Directive44(argument97 : ["stringValue19212", "stringValue19213"]) { + EnumValue20599 + EnumValue20600 + EnumValue20601 + EnumValue20602 + EnumValue20603 + EnumValue20604 + EnumValue20605 + EnumValue20606 +} + +enum Enum931 @Directive22(argument62 : "stringValue19216") @Directive44(argument97 : ["stringValue19217", "stringValue19218"]) { + EnumValue20607 + EnumValue20608 +} + +enum Enum932 @Directive19(argument57 : "stringValue19234") @Directive22(argument62 : "stringValue19233") @Directive44(argument97 : ["stringValue19235", "stringValue19236", "stringValue19237"]) { + EnumValue20609 + EnumValue20610 + EnumValue20611 + EnumValue20612 + EnumValue20613 + EnumValue20614 + EnumValue20615 + EnumValue20616 + EnumValue20617 + EnumValue20618 + EnumValue20619 + EnumValue20620 + EnumValue20621 + EnumValue20622 + EnumValue20623 + EnumValue20624 +} + +enum Enum933 @Directive22(argument62 : "stringValue19238") @Directive44(argument97 : ["stringValue19239", "stringValue19240"]) { + EnumValue20625 + EnumValue20626 + EnumValue20627 +} + +enum Enum934 @Directive22(argument62 : "stringValue19244") @Directive44(argument97 : ["stringValue19245", "stringValue19246"]) { + EnumValue20628 + EnumValue20629 + EnumValue20630 + EnumValue20631 + EnumValue20632 + EnumValue20633 +} + +enum Enum935 @Directive22(argument62 : "stringValue19247") @Directive44(argument97 : ["stringValue19248", "stringValue19249"]) { + EnumValue20634 + EnumValue20635 +} + +enum Enum936 @Directive19(argument57 : "stringValue19266") @Directive22(argument62 : "stringValue19265") @Directive44(argument97 : ["stringValue19267", "stringValue19268", "stringValue19269"]) { + EnumValue20636 + EnumValue20637 +} + +enum Enum937 @Directive22(argument62 : "stringValue19364") @Directive44(argument97 : ["stringValue19365"]) { + EnumValue20638 + EnumValue20639 + EnumValue20640 + EnumValue20641 + EnumValue20642 + EnumValue20643 + EnumValue20644 + EnumValue20645 + EnumValue20646 + EnumValue20647 + EnumValue20648 + EnumValue20649 + EnumValue20650 + EnumValue20651 + EnumValue20652 + EnumValue20653 + EnumValue20654 + EnumValue20655 +} + +enum Enum938 @Directive22(argument62 : "stringValue19369") @Directive44(argument97 : ["stringValue19370"]) { + EnumValue20656 + EnumValue20657 + EnumValue20658 +} + +enum Enum939 @Directive22(argument62 : "stringValue19371") @Directive44(argument97 : ["stringValue19372"]) { + EnumValue20659 + EnumValue20660 + EnumValue20661 + EnumValue20662 + EnumValue20663 + EnumValue20664 + EnumValue20665 +} + +enum Enum94 @Directive44(argument97 : ["stringValue646"]) { + EnumValue2051 + EnumValue2052 +} + +enum Enum940 @Directive22(argument62 : "stringValue19373") @Directive44(argument97 : ["stringValue19374"]) { + EnumValue20666 + EnumValue20667 +} + +enum Enum941 @Directive19(argument57 : "stringValue19439") @Directive22(argument62 : "stringValue19438") @Directive44(argument97 : ["stringValue19440"]) { + EnumValue20668 + EnumValue20669 + EnumValue20670 + EnumValue20671 + EnumValue20672 + EnumValue20673 + EnumValue20674 + EnumValue20675 + EnumValue20676 + EnumValue20677 +} + +enum Enum942 @Directive19(argument57 : "stringValue19510") @Directive22(argument62 : "stringValue19511") @Directive44(argument97 : ["stringValue19512", "stringValue19513"]) { + EnumValue20678 + EnumValue20679 + EnumValue20680 + EnumValue20681 + EnumValue20682 + EnumValue20683 + EnumValue20684 + EnumValue20685 + EnumValue20686 + EnumValue20687 + EnumValue20688 + EnumValue20689 + EnumValue20690 + EnumValue20691 + EnumValue20692 + EnumValue20693 + EnumValue20694 + EnumValue20695 + EnumValue20696 + EnumValue20697 + EnumValue20698 + EnumValue20699 + EnumValue20700 + EnumValue20701 + EnumValue20702 + EnumValue20703 + EnumValue20704 + EnumValue20705 + EnumValue20706 + EnumValue20707 + EnumValue20708 + EnumValue20709 + EnumValue20710 + EnumValue20711 + EnumValue20712 + EnumValue20713 + EnumValue20714 + EnumValue20715 + EnumValue20716 + EnumValue20717 + EnumValue20718 + EnumValue20719 + EnumValue20720 + EnumValue20721 + EnumValue20722 + EnumValue20723 + EnumValue20724 +} + +enum Enum943 @Directive22(argument62 : "stringValue19622") @Directive44(argument97 : ["stringValue19623", "stringValue19624"]) { + EnumValue20725 + EnumValue20726 + EnumValue20727 +} + +enum Enum944 @Directive22(argument62 : "stringValue19634") @Directive44(argument97 : ["stringValue19635", "stringValue19636"]) { + EnumValue20728 + EnumValue20729 +} + +enum Enum945 @Directive22(argument62 : "stringValue19643") @Directive44(argument97 : ["stringValue19644", "stringValue19645"]) { + EnumValue20730 + EnumValue20731 + EnumValue20732 + EnumValue20733 + EnumValue20734 + EnumValue20735 + EnumValue20736 + EnumValue20737 +} + +enum Enum946 @Directive22(argument62 : "stringValue19731") @Directive44(argument97 : ["stringValue19732", "stringValue19733"]) { + EnumValue20738 + EnumValue20739 +} + +enum Enum947 @Directive22(argument62 : "stringValue19784") @Directive44(argument97 : ["stringValue19785", "stringValue19786"]) { + EnumValue20740 +} + +enum Enum948 @Directive22(argument62 : "stringValue19829") @Directive44(argument97 : ["stringValue19830", "stringValue19831"]) { + EnumValue20741 + EnumValue20742 + EnumValue20743 +} + +enum Enum949 @Directive22(argument62 : "stringValue19876") @Directive44(argument97 : ["stringValue19877", "stringValue19878", "stringValue19879"]) { + EnumValue20744 + EnumValue20745 +} + +enum Enum95 @Directive44(argument97 : ["stringValue668"]) { + EnumValue2053 + EnumValue2054 + EnumValue2055 +} + +enum Enum950 @Directive22(argument62 : "stringValue19890") @Directive44(argument97 : ["stringValue19891", "stringValue19892", "stringValue19893"]) { + EnumValue20746 + EnumValue20747 +} + +enum Enum951 @Directive19(argument57 : "stringValue19912") @Directive22(argument62 : "stringValue19911") @Directive44(argument97 : ["stringValue19913", "stringValue19914"]) { + EnumValue20748 + EnumValue20749 + EnumValue20750 + EnumValue20751 +} + +enum Enum952 @Directive19(argument57 : "stringValue19928") @Directive22(argument62 : "stringValue19927") @Directive44(argument97 : ["stringValue19929", "stringValue19930"]) { + EnumValue20752 + EnumValue20753 + EnumValue20754 + EnumValue20755 + EnumValue20756 + EnumValue20757 + EnumValue20758 + EnumValue20759 + EnumValue20760 + EnumValue20761 + EnumValue20762 + EnumValue20763 + EnumValue20764 + EnumValue20765 + EnumValue20766 + EnumValue20767 + EnumValue20768 + EnumValue20769 + EnumValue20770 + EnumValue20771 + EnumValue20772 + EnumValue20773 + EnumValue20774 + EnumValue20775 + EnumValue20776 + EnumValue20777 + EnumValue20778 + EnumValue20779 + EnumValue20780 + EnumValue20781 + EnumValue20782 + EnumValue20783 + EnumValue20784 + EnumValue20785 + EnumValue20786 + EnumValue20787 + EnumValue20788 + EnumValue20789 + EnumValue20790 + EnumValue20791 + EnumValue20792 + EnumValue20793 + EnumValue20794 + EnumValue20795 + EnumValue20796 + EnumValue20797 + EnumValue20798 + EnumValue20799 + EnumValue20800 + EnumValue20801 + EnumValue20802 + EnumValue20803 + EnumValue20804 + EnumValue20805 + EnumValue20806 + EnumValue20807 + EnumValue20808 + EnumValue20809 + EnumValue20810 + EnumValue20811 + EnumValue20812 +} + +enum Enum953 @Directive19(argument57 : "stringValue19947") @Directive22(argument62 : "stringValue19946") @Directive44(argument97 : ["stringValue19948", "stringValue19949"]) { + EnumValue20813 + EnumValue20814 + EnumValue20815 + EnumValue20816 + EnumValue20817 + EnumValue20818 +} + +enum Enum954 @Directive19(argument57 : "stringValue19980") @Directive22(argument62 : "stringValue19979") @Directive44(argument97 : ["stringValue19981", "stringValue19982"]) { + EnumValue20819 +} + +enum Enum955 @Directive19(argument57 : "stringValue20006") @Directive22(argument62 : "stringValue20005") @Directive44(argument97 : ["stringValue20007", "stringValue20008"]) { + EnumValue20820 + EnumValue20821 +} + +enum Enum956 @Directive19(argument57 : "stringValue20022") @Directive22(argument62 : "stringValue20021") @Directive44(argument97 : ["stringValue20023", "stringValue20024"]) { + EnumValue20822 +} + +enum Enum957 @Directive19(argument57 : "stringValue20030") @Directive22(argument62 : "stringValue20029") @Directive44(argument97 : ["stringValue20031", "stringValue20032"]) { + EnumValue20823 + EnumValue20824 +} + +enum Enum958 @Directive19(argument57 : "stringValue20082") @Directive22(argument62 : "stringValue20079") @Directive44(argument97 : ["stringValue20080", "stringValue20081"]) { + EnumValue20825 + EnumValue20826 + EnumValue20827 +} + +enum Enum959 @Directive19(argument57 : "stringValue20086") @Directive22(argument62 : "stringValue20083") @Directive44(argument97 : ["stringValue20084", "stringValue20085"]) { + EnumValue20828 +} + +enum Enum96 @Directive44(argument97 : ["stringValue683"]) { + EnumValue2056 + EnumValue2057 + EnumValue2058 +} + +enum Enum960 @Directive22(argument62 : "stringValue20199") @Directive44(argument97 : ["stringValue20200", "stringValue20201"]) { + EnumValue20829 + EnumValue20830 + EnumValue20831 + EnumValue20832 + EnumValue20833 +} + +enum Enum961 @Directive22(argument62 : "stringValue20242") @Directive44(argument97 : ["stringValue20243", "stringValue20244"]) { + EnumValue20834 + EnumValue20835 + EnumValue20836 +} + +enum Enum962 @Directive22(argument62 : "stringValue20296") @Directive44(argument97 : ["stringValue20297", "stringValue20298"]) { + EnumValue20837 + EnumValue20838 + EnumValue20839 +} + +enum Enum963 @Directive22(argument62 : "stringValue20303") @Directive44(argument97 : ["stringValue20304", "stringValue20305"]) { + EnumValue20840 + EnumValue20841 + EnumValue20842 + EnumValue20843 + EnumValue20844 + EnumValue20845 + EnumValue20846 + EnumValue20847 + EnumValue20848 + EnumValue20849 + EnumValue20850 + EnumValue20851 + EnumValue20852 + EnumValue20853 + EnumValue20854 + EnumValue20855 + EnumValue20856 +} + +enum Enum964 @Directive22(argument62 : "stringValue20308") @Directive44(argument97 : ["stringValue20309", "stringValue20310"]) { + EnumValue20857 + EnumValue20858 +} + +enum Enum965 @Directive22(argument62 : "stringValue20320") @Directive44(argument97 : ["stringValue20321", "stringValue20322"]) { + EnumValue20859 + EnumValue20860 + EnumValue20861 + EnumValue20862 + EnumValue20863 + EnumValue20864 +} + +enum Enum966 @Directive22(argument62 : "stringValue20502") @Directive44(argument97 : ["stringValue20503", "stringValue20504"]) { + EnumValue20865 + EnumValue20866 + EnumValue20867 +} + +enum Enum967 @Directive22(argument62 : "stringValue20508") @Directive44(argument97 : ["stringValue20509", "stringValue20510"]) { + EnumValue20868 + EnumValue20869 +} + +enum Enum968 @Directive22(argument62 : "stringValue20514") @Directive44(argument97 : ["stringValue20515", "stringValue20516"]) { + EnumValue20870 + EnumValue20871 +} + +enum Enum969 @Directive22(argument62 : "stringValue20536") @Directive44(argument97 : ["stringValue20537", "stringValue20538"]) { + EnumValue20872 + EnumValue20873 + EnumValue20874 + EnumValue20875 + EnumValue20876 + EnumValue20877 +} + +enum Enum97 @Directive44(argument97 : ["stringValue730"]) { + EnumValue2059 + EnumValue2060 + EnumValue2061 +} + +enum Enum970 @Directive22(argument62 : "stringValue20539") @Directive44(argument97 : ["stringValue20540", "stringValue20541"]) { + EnumValue20878 + EnumValue20879 + EnumValue20880 + EnumValue20881 + EnumValue20882 + EnumValue20883 + EnumValue20884 + EnumValue20885 + EnumValue20886 + EnumValue20887 + EnumValue20888 + EnumValue20889 + EnumValue20890 + EnumValue20891 + EnumValue20892 + EnumValue20893 + EnumValue20894 + EnumValue20895 + EnumValue20896 + EnumValue20897 + EnumValue20898 + EnumValue20899 + EnumValue20900 + EnumValue20901 + EnumValue20902 + EnumValue20903 + EnumValue20904 + EnumValue20905 + EnumValue20906 + EnumValue20907 + EnumValue20908 + EnumValue20909 + EnumValue20910 + EnumValue20911 + EnumValue20912 + EnumValue20913 + EnumValue20914 + EnumValue20915 + EnumValue20916 + EnumValue20917 + EnumValue20918 + EnumValue20919 + EnumValue20920 + EnumValue20921 + EnumValue20922 + EnumValue20923 + EnumValue20924 + EnumValue20925 + EnumValue20926 + EnumValue20927 + EnumValue20928 + EnumValue20929 + EnumValue20930 + EnumValue20931 + EnumValue20932 + EnumValue20933 + EnumValue20934 + EnumValue20935 + EnumValue20936 + EnumValue20937 + EnumValue20938 + EnumValue20939 + EnumValue20940 + EnumValue20941 + EnumValue20942 +} + +enum Enum971 @Directive22(argument62 : "stringValue20566") @Directive44(argument97 : ["stringValue20567", "stringValue20568"]) { + EnumValue20943 + EnumValue20944 + EnumValue20945 + EnumValue20946 + EnumValue20947 +} + +enum Enum972 @Directive22(argument62 : "stringValue20737") @Directive44(argument97 : ["stringValue20738", "stringValue20739"]) { + EnumValue20948 + EnumValue20949 + EnumValue20950 +} + +enum Enum973 @Directive19(argument57 : "stringValue20751") @Directive22(argument62 : "stringValue20752") @Directive44(argument97 : ["stringValue20753", "stringValue20754", "stringValue20755"]) { + EnumValue20951 + EnumValue20952 + EnumValue20953 + EnumValue20954 +} + +enum Enum974 @Directive19(argument57 : "stringValue20785") @Directive22(argument62 : "stringValue20786") @Directive44(argument97 : ["stringValue20787", "stringValue20788", "stringValue20789"]) { + EnumValue20955 + EnumValue20956 +} + +enum Enum975 @Directive19(argument57 : "stringValue20891") @Directive22(argument62 : "stringValue20890") @Directive44(argument97 : ["stringValue20892", "stringValue20893"]) { + EnumValue20957 + EnumValue20958 + EnumValue20959 + EnumValue20960 +} + +enum Enum976 @Directive22(argument62 : "stringValue21027") @Directive44(argument97 : ["stringValue21028", "stringValue21029"]) { + EnumValue20961 + EnumValue20962 + EnumValue20963 +} + +enum Enum977 @Directive22(argument62 : "stringValue21033") @Directive44(argument97 : ["stringValue21034", "stringValue21035"]) { + EnumValue20964 + EnumValue20965 + EnumValue20966 + EnumValue20967 + EnumValue20968 + EnumValue20969 + EnumValue20970 + EnumValue20971 + EnumValue20972 + EnumValue20973 + EnumValue20974 + EnumValue20975 + EnumValue20976 +} + +enum Enum978 @Directive22(argument62 : "stringValue21087") @Directive44(argument97 : ["stringValue21088", "stringValue21089"]) { + EnumValue20977 + EnumValue20978 + EnumValue20979 + EnumValue20980 + EnumValue20981 + EnumValue20982 + EnumValue20983 + EnumValue20984 + EnumValue20985 + EnumValue20986 + EnumValue20987 + EnumValue20988 + EnumValue20989 + EnumValue20990 + EnumValue20991 + EnumValue20992 +} + +enum Enum979 @Directive19(argument57 : "stringValue21116") @Directive22(argument62 : "stringValue21115") @Directive44(argument97 : ["stringValue21117", "stringValue21118"]) { + EnumValue20993 + EnumValue20994 + EnumValue20995 + EnumValue20996 + EnumValue20997 + EnumValue20998 + EnumValue20999 +} + +enum Enum98 @Directive44(argument97 : ["stringValue731"]) { + EnumValue2062 + EnumValue2063 + EnumValue2064 + EnumValue2065 +} + +enum Enum980 @Directive22(argument62 : "stringValue21135") @Directive44(argument97 : ["stringValue21136", "stringValue21137", "stringValue21138"]) { + EnumValue21000 + EnumValue21001 + EnumValue21002 +} + +enum Enum981 @Directive22(argument62 : "stringValue21148") @Directive44(argument97 : ["stringValue21149", "stringValue21150", "stringValue21151"]) { + EnumValue21003 + EnumValue21004 + EnumValue21005 +} + +enum Enum982 @Directive19(argument57 : "stringValue21236") @Directive22(argument62 : "stringValue21237") @Directive44(argument97 : ["stringValue21238", "stringValue21239"]) { + EnumValue21006 + EnumValue21007 + EnumValue21008 + EnumValue21009 + EnumValue21010 + EnumValue21011 + EnumValue21012 + EnumValue21013 + EnumValue21014 +} + +enum Enum983 @Directive19(argument57 : "stringValue21240") @Directive22(argument62 : "stringValue21241") @Directive44(argument97 : ["stringValue21242", "stringValue21243"]) { + EnumValue21015 + EnumValue21016 + EnumValue21017 + EnumValue21018 + EnumValue21019 + EnumValue21020 + EnumValue21021 + EnumValue21022 + EnumValue21023 + EnumValue21024 + EnumValue21025 +} + +enum Enum984 @Directive19(argument57 : "stringValue21257") @Directive22(argument62 : "stringValue21258") @Directive44(argument97 : ["stringValue21259", "stringValue21260"]) { + EnumValue21026 + EnumValue21027 + EnumValue21028 +} + +enum Enum985 @Directive19(argument57 : "stringValue21261") @Directive22(argument62 : "stringValue21262") @Directive44(argument97 : ["stringValue21263", "stringValue21264"]) { + EnumValue21029 + EnumValue21030 + EnumValue21031 +} + +enum Enum986 @Directive19(argument57 : "stringValue21293") @Directive22(argument62 : "stringValue21294") @Directive44(argument97 : ["stringValue21295", "stringValue21296"]) { + EnumValue21032 + EnumValue21033 + EnumValue21034 + EnumValue21035 + EnumValue21036 +} + +enum Enum987 @Directive19(argument57 : "stringValue21304") @Directive22(argument62 : "stringValue21305") @Directive44(argument97 : ["stringValue21306", "stringValue21307"]) { + EnumValue21037 + EnumValue21038 +} + +enum Enum988 @Directive22(argument62 : "stringValue21366") @Directive44(argument97 : ["stringValue21367", "stringValue21368"]) { + EnumValue21039 + EnumValue21040 + EnumValue21041 +} + +enum Enum989 @Directive22(argument62 : "stringValue21435") @Directive44(argument97 : ["stringValue21436", "stringValue21437", "stringValue21438"]) { + EnumValue21042 + EnumValue21043 + EnumValue21044 + EnumValue21045 + EnumValue21046 + EnumValue21047 +} + +enum Enum99 @Directive44(argument97 : ["stringValue738"]) { + EnumValue2066 + EnumValue2067 +} + +enum Enum990 @Directive22(argument62 : "stringValue21445") @Directive44(argument97 : ["stringValue21446", "stringValue21447", "stringValue21448"]) { + EnumValue21048 + EnumValue21049 + EnumValue21050 + EnumValue21051 + EnumValue21052 + EnumValue21053 + EnumValue21054 +} + +enum Enum991 @Directive22(argument62 : "stringValue21490") @Directive44(argument97 : ["stringValue21491", "stringValue21492", "stringValue21493"]) { + EnumValue21055 + EnumValue21056 +} + +enum Enum992 @Directive22(argument62 : "stringValue21504") @Directive44(argument97 : ["stringValue21505", "stringValue21506", "stringValue21507"]) { + EnumValue21057 + EnumValue21058 + EnumValue21059 +} + +enum Enum993 @Directive22(argument62 : "stringValue21520") @Directive44(argument97 : ["stringValue21521", "stringValue21522", "stringValue21523"]) { + EnumValue21060 + EnumValue21061 + EnumValue21062 +} + +enum Enum994 @Directive22(argument62 : "stringValue21524") @Directive44(argument97 : ["stringValue21525", "stringValue21526", "stringValue21527"]) { + EnumValue21063 + EnumValue21064 + EnumValue21065 +} + +enum Enum995 @Directive22(argument62 : "stringValue21627") @Directive44(argument97 : ["stringValue21628", "stringValue21629"]) { + EnumValue21066 + EnumValue21067 + EnumValue21068 + EnumValue21069 + EnumValue21070 + EnumValue21071 + EnumValue21072 +} + +enum Enum996 @Directive19(argument57 : "stringValue21640") @Directive22(argument62 : "stringValue21639") @Directive44(argument97 : ["stringValue21641", "stringValue21642"]) { + EnumValue21073 + EnumValue21074 + EnumValue21075 +} + +enum Enum997 @Directive19(argument57 : "stringValue21911") @Directive22(argument62 : "stringValue21912") @Directive44(argument97 : ["stringValue21913", "stringValue21914"]) { + EnumValue21076 + EnumValue21077 + EnumValue21078 + EnumValue21079 + EnumValue21080 + EnumValue21081 + EnumValue21082 + EnumValue21083 + EnumValue21084 + EnumValue21085 + EnumValue21086 + EnumValue21087 + EnumValue21088 + EnumValue21089 + EnumValue21090 + EnumValue21091 + EnumValue21092 + EnumValue21093 + EnumValue21094 + EnumValue21095 + EnumValue21096 + EnumValue21097 + EnumValue21098 + EnumValue21099 + EnumValue21100 + EnumValue21101 + EnumValue21102 + EnumValue21103 + EnumValue21104 + EnumValue21105 + EnumValue21106 + EnumValue21107 + EnumValue21108 + EnumValue21109 + EnumValue21110 + EnumValue21111 + EnumValue21112 + EnumValue21113 + EnumValue21114 + EnumValue21115 + EnumValue21116 + EnumValue21117 + EnumValue21118 + EnumValue21119 + EnumValue21120 + EnumValue21121 + EnumValue21122 + EnumValue21123 + EnumValue21124 + EnumValue21125 + EnumValue21126 + EnumValue21127 + EnumValue21128 + EnumValue21129 + EnumValue21130 + EnumValue21131 + EnumValue21132 + EnumValue21133 + EnumValue21134 + EnumValue21135 + EnumValue21136 + EnumValue21137 + EnumValue21138 + EnumValue21139 + EnumValue21140 + EnumValue21141 + EnumValue21142 + EnumValue21143 + EnumValue21144 + EnumValue21145 + EnumValue21146 + EnumValue21147 + EnumValue21148 + EnumValue21149 + EnumValue21150 + EnumValue21151 + EnumValue21152 + EnumValue21153 + EnumValue21154 + EnumValue21155 + EnumValue21156 + EnumValue21157 + EnumValue21158 + EnumValue21159 + EnumValue21160 + EnumValue21161 + EnumValue21162 + EnumValue21163 + EnumValue21164 + EnumValue21165 + EnumValue21166 + EnumValue21167 + EnumValue21168 + EnumValue21169 + EnumValue21170 + EnumValue21171 + EnumValue21172 + EnumValue21173 + EnumValue21174 + EnumValue21175 + EnumValue21176 + EnumValue21177 + EnumValue21178 + EnumValue21179 + EnumValue21180 + EnumValue21181 + EnumValue21182 + EnumValue21183 + EnumValue21184 + EnumValue21185 + EnumValue21186 + EnumValue21187 + EnumValue21188 + EnumValue21189 +} + +enum Enum998 @Directive22(argument62 : "stringValue21918") @Directive44(argument97 : ["stringValue21919"]) { + EnumValue21190 + EnumValue21191 +} + +enum Enum999 @Directive22(argument62 : "stringValue21948") @Directive44(argument97 : ["stringValue21949"]) { + EnumValue21192 +} + +scalar Scalar1 + +scalar Scalar2 + +scalar Scalar3 + +scalar Scalar4 + +scalar Scalar5 + +scalar Scalar6 + +scalar Scalar7 + +input InputObject1 @Directive22(argument62 : "stringValue6165") @Directive44(argument97 : ["stringValue6166", "stringValue6167"]) { + inputField1: Int + inputField2: String + inputField3: Int + inputField4: String +} + +input InputObject10 @Directive22(argument62 : "stringValue11782") @Directive44(argument97 : ["stringValue11783", "stringValue11784"]) { + inputField52: [ID!] + inputField53: Boolean + inputField54: Boolean + inputField55: Boolean + inputField56: [String!] +} + +input InputObject100 @Directive22(argument62 : "stringValue19766") @Directive44(argument97 : ["stringValue19767", "stringValue19768"]) { + inputField435: Float + inputField436: Float +} + +input InputObject1000 @Directive44(argument97 : ["stringValue26093"]) { + inputField4356: Scalar2 + inputField4357: Scalar2 +} + +input InputObject1001 @Directive44(argument97 : ["stringValue26094"]) { + inputField4360: String + inputField4361: String + inputField4362: Float + inputField4363: Int + inputField4364: Int + inputField4365: Int +} + +input InputObject1002 @Directive44(argument97 : ["stringValue26095"]) { + inputField4368: String + inputField4369: String + inputField4370: Int + inputField4371: Int +} + +input InputObject1003 @Directive44(argument97 : ["stringValue26096"]) { + inputField4374: Scalar3 + inputField4375: Scalar3 +} + +input InputObject1004 @Directive44(argument97 : ["stringValue26108"]) { + inputField4379: Scalar2 + inputField4380: String + inputField4381: String + inputField4382: Scalar2 + inputField4383: Boolean + inputField4384: Boolean + inputField4385: String + inputField4386: String + inputField4387: Scalar2 + inputField4388: Boolean + inputField4389: Scalar2 + inputField4390: String + inputField4391: String + inputField4392: Boolean + inputField4393: Scalar2 + inputField4394: Scalar2 + inputField4395: Boolean +} + +input InputObject1005 @Directive44(argument97 : ["stringValue26116"]) { + inputField4396: Scalar2 + inputField4397: Scalar2 + inputField4398: Float + inputField4399: InputObject1006 + inputField4407: String + inputField4408: Boolean + inputField4409: Boolean +} + +input InputObject1006 @Directive44(argument97 : ["stringValue26117"]) { + inputField4400: [InputObject1007] + inputField4405: [InputObject1007] + inputField4406: [InputObject1007] +} + +input InputObject1007 @Directive44(argument97 : ["stringValue26118"]) { + inputField4401: Scalar2 + inputField4402: Scalar2 + inputField4403: Scalar2 + inputField4404: String +} + +input InputObject1008 @Directive44(argument97 : ["stringValue26126"]) { + inputField4410: Scalar2! + inputField4411: String! +} + +input InputObject1009 @Directive44(argument97 : ["stringValue26134"]) { + inputField4412: Scalar2! + inputField4413: Scalar2! + inputField4414: String + inputField4415: String + inputField4416: String + inputField4417: Enum1350 + inputField4418: Float + inputField4419: Boolean! + inputField4420: Int +} + +input InputObject101 @Directive22(argument62 : "stringValue19769") @Directive44(argument97 : ["stringValue19770", "stringValue19771"]) { + inputField438: String + inputField439: Boolean +} + +input InputObject1010 @Directive44(argument97 : ["stringValue26140"]) { + inputField4421: Scalar2! + inputField4422: InputObject1011 +} + +input InputObject1011 @Directive44(argument97 : ["stringValue26141"]) { + inputField4423: InputObject1012 + inputField4466: InputObject1016 +} + +input InputObject1012 @Directive44(argument97 : ["stringValue26142"]) { + inputField4424: [InputObject1013] + inputField4465: [Scalar2] +} + +input InputObject1013 @Directive44(argument97 : ["stringValue26143"]) { + inputField4425: Int + inputField4426: Scalar2 + inputField4427: Int + inputField4428: [Int] + inputField4429: [String] + inputField4430: [InputObject985] + inputField4431: Boolean + inputField4432: Boolean + inputField4433: Boolean + inputField4434: Boolean + inputField4435: Int + inputField4436: String + inputField4437: [InputObject1014] + inputField4458: Scalar2 + inputField4459: String + inputField4460: [InputObject1015] + inputField4464: Int +} + +input InputObject1014 @Directive44(argument97 : ["stringValue26144"]) { + inputField4438: String + inputField4439: String + inputField4440: String + inputField4441: String + inputField4442: String + inputField4443: String + inputField4444: String + inputField4445: Int + inputField4446: Scalar2 + inputField4447: String + inputField4448: String + inputField4449: String + inputField4450: Scalar2 + inputField4451: String + inputField4452: String + inputField4453: String + inputField4454: Boolean + inputField4455: Scalar2 + inputField4456: String + inputField4457: Boolean +} + +input InputObject1015 @Directive44(argument97 : ["stringValue26145"]) { + inputField4461: Scalar2 + inputField4462: String + inputField4463: Int +} + +input InputObject1016 @Directive44(argument97 : ["stringValue26146"]) { + inputField4467: Scalar2 + inputField4468: [InputObject985] + inputField4469: [Int] + inputField4470: [String] + inputField4471: Boolean + inputField4472: Boolean + inputField4473: [InputObject1017] + inputField4476: Int + inputField4477: Int +} + +input InputObject1017 @Directive44(argument97 : ["stringValue26147"]) { + inputField4474: Scalar2 + inputField4475: String +} + +input InputObject1018 @Directive44(argument97 : ["stringValue26153"]) { + inputField4478: Scalar2 + inputField4479: InputObject1019 +} + +input InputObject1019 @Directive44(argument97 : ["stringValue26154"]) { + inputField4480: [InputObject1020] +} + +input InputObject102 @Directive22(argument62 : "stringValue19772") @Directive44(argument97 : ["stringValue19773", "stringValue19774"]) { + inputField441: Float + inputField442: Float + inputField443: Float + inputField444: Float + inputField445: String +} + +input InputObject1020 @Directive44(argument97 : ["stringValue26155"]) { + inputField4481: Scalar2! + inputField4482: String! +} + +input InputObject1021 @Directive44(argument97 : ["stringValue26161"]) { + inputField4483: Scalar2! + inputField4484: [InputObject1022] +} + +input InputObject1022 @Directive44(argument97 : ["stringValue26162"]) { + inputField4485: String + inputField4486: Boolean + inputField4487: [InputObject1023] +} + +input InputObject1023 @Directive44(argument97 : ["stringValue26163"]) { + inputField4488: String + inputField4489: String +} + +input InputObject1024 @Directive44(argument97 : ["stringValue26181"]) { + inputField4490: Scalar2 + inputField4491: [InputObject1025] +} + +input InputObject1025 @Directive44(argument97 : ["stringValue26182"]) { + inputField4492: String + inputField4493: String +} + +input InputObject1026 @Directive44(argument97 : ["stringValue26189"]) { + inputField4494: String! + inputField4495: String! + inputField4496: Int! + inputField4497: Int! + inputField4498: Int! + inputField4499: Scalar2! + inputField4500: String! + inputField4501: Scalar2 + inputField4502: Boolean + inputField4503: Scalar2 + inputField4504: Scalar2 + inputField4505: Boolean + inputField4506: String +} + +input InputObject1027 @Directive44(argument97 : ["stringValue26195"]) { + inputField4507: String! +} + +input InputObject1028 @Directive44(argument97 : ["stringValue26201"]) { + inputField4508: Scalar2 + inputField4509: Scalar2 + inputField4510: Scalar3 + inputField4511: Int + inputField4512: Scalar2 + inputField4513: String + inputField4514: Int + inputField4515: Int + inputField4516: Int + inputField4517: Int + inputField4518: String + inputField4519: Enum1357 + inputField4520: Int + inputField4521: Int + inputField4522: Boolean + inputField4523: Int + inputField4524: Int + inputField4525: Boolean + inputField4526: Scalar2 + inputField4527: String + inputField4528: String + inputField4529: Boolean + inputField4530: Scalar2 + inputField4531: Boolean + inputField4532: Scalar1 + inputField4533: Scalar2 + inputField4534: Boolean + inputField4535: Boolean + inputField4536: String + inputField4537: Boolean + inputField4538: Scalar2 + inputField4539: String + inputField4540: String + inputField4541: Scalar3 + inputField4542: Boolean + inputField4543: String + inputField4544: Boolean + inputField4545: Boolean + inputField4546: Enum1358 + inputField4547: String + inputField4548: String + inputField4549: Boolean + inputField4550: Boolean + inputField4551: String + inputField4552: Scalar2 + inputField4553: Boolean + inputField4554: Boolean + inputField4555: Boolean + inputField4556: String + inputField4557: Scalar2 + inputField4558: String +} + +input InputObject1029 @Directive44(argument97 : ["stringValue26564"]) { + inputField4559: Scalar2! +} + +input InputObject103 @Directive22(argument62 : "stringValue19775") @Directive44(argument97 : ["stringValue19776", "stringValue19777"]) { + inputField447: Float + inputField448: String + inputField449: InputObject104 +} + +input InputObject1030 @Directive44(argument97 : ["stringValue26572"]) { + inputField4560: [String] + inputField4561: Float + inputField4562: Int + inputField4563: Int + inputField4564: String + inputField4565: String + inputField4566: String + inputField4567: String + inputField4568: InputObject1031 + inputField4572: String + inputField4573: Int + inputField4574: String + inputField4575: Int + inputField4576: String + inputField4577: String + inputField4578: String + inputField4579: Boolean + inputField4580: Boolean + inputField4581: String + inputField4582: String + inputField4583: Scalar2 +} + +input InputObject1031 @Directive44(argument97 : ["stringValue26573"]) { + inputField4569: String + inputField4570: String + inputField4571: String +} + +input InputObject1032 @Directive44(argument97 : ["stringValue26593"]) { + inputField4584: Int! + inputField4585: Int! + inputField4586: Scalar2 + inputField4587: Boolean + inputField4588: String + inputField4589: Scalar2! +} + +input InputObject1033 @Directive44(argument97 : ["stringValue26599"]) { + inputField4590: Scalar2! + inputField4591: Boolean + inputField4592: Boolean + inputField4593: String + inputField4594: Scalar2 +} + +input InputObject1034 @Directive44(argument97 : ["stringValue26607"]) { + inputField4595: Scalar2! + inputField4596: Boolean +} + +input InputObject1035 @Directive44(argument97 : ["stringValue26613"]) { + inputField4597: Scalar2! + inputField4598: [InputObject1036] + inputField4601: String + inputField4602: Int + inputField4603: String + inputField4604: Int + inputField4605: String + inputField4606: String + inputField4607: Int + inputField4608: Int + inputField4609: Float + inputField4610: String + inputField4611: String + inputField4612: String + inputField4613: String + inputField4614: String + inputField4615: String + inputField4616: Boolean + inputField4617: String + inputField4618: String + inputField4619: String + inputField4620: String + inputField4621: String + inputField4622: Float + inputField4623: Float + inputField4624: String + inputField4625: String + inputField4626: Boolean + inputField4627: Int + inputField4628: Boolean + inputField4629: Boolean + inputField4630: Boolean +} + +input InputObject1036 @Directive44(argument97 : ["stringValue26614"]) { + inputField4599: String + inputField4600: Boolean +} + +input InputObject1037 @Directive44(argument97 : ["stringValue26620"]) { + inputField4631: Int! + inputField4632: Int! + inputField4633: Scalar2 + inputField4634: Boolean + inputField4635: Int + inputField4636: String + inputField4637: Scalar2! +} + +input InputObject1038 @Directive44(argument97 : ["stringValue26626"]) { + inputField4638: Scalar2! + inputField4639: [InputObject1039] +} + +input InputObject1039 @Directive44(argument97 : ["stringValue26627"]) { + inputField4640: Enum1390 + inputField4641: Boolean + inputField4642: Boolean + inputField4643: Scalar4 + inputField4644: Scalar4 +} + +input InputObject104 @Directive22(argument62 : "stringValue19778") @Directive44(argument97 : ["stringValue19779", "stringValue19780"]) { + inputField450: Boolean +} + +input InputObject1040 @Directive44(argument97 : ["stringValue26636"]) { + inputField4645: Scalar2! + inputField4646: Boolean! + inputField4647: Boolean + inputField4648: Int + inputField4649: Float + inputField4650: Int + inputField4651: Int + inputField4652: Boolean + inputField4653: Scalar2 +} + +input InputObject1041 @Directive44(argument97 : ["stringValue26650"]) { + inputField4654: Scalar2 + inputField4655: Enum1391 + inputField4656: [InputObject1042] +} + +input InputObject1042 @Directive44(argument97 : ["stringValue26652"]) { + inputField4657: Enum1392 + inputField4658: Boolean + inputField4659: String +} + +input InputObject1043 @Directive44(argument97 : ["stringValue26661"]) { + inputField4660: Scalar2! + inputField4661: String + inputField4662: String +} + +input InputObject1044 @Directive44(argument97 : ["stringValue26668"]) { + inputField4663: Scalar2! + inputField4664: String! + inputField4665: String! + inputField4666: String! + inputField4667: Scalar2! + inputField4668: Scalar2! +} + +input InputObject1045 @Directive44(argument97 : ["stringValue26675"]) { + inputField4669: Scalar2 +} + +input InputObject1046 @Directive44(argument97 : ["stringValue26682"]) { + inputField4670: [InputObject1047] + inputField4687: Boolean + inputField4688: Boolean +} + +input InputObject1047 @Directive44(argument97 : ["stringValue26683"]) { + inputField4671: InputObject1048! + inputField4685: String! + inputField4686: Scalar1 +} + +input InputObject1048 @Directive44(argument97 : ["stringValue26684"]) { + inputField4672: Scalar2! + inputField4673: String! + inputField4674: Enum1393! + inputField4675: Enum1394! + inputField4676: Int! + inputField4677: Int + inputField4678: Int + inputField4679: Scalar4! + inputField4680: Enum1395! + inputField4681: Scalar3 + inputField4682: Scalar3 + inputField4683: Scalar2 + inputField4684: String +} + +input InputObject1049 @Directive44(argument97 : ["stringValue26694"]) { + inputField4689: InputObject1050! +} + +input InputObject105 @Directive22(argument62 : "stringValue19781") @Directive44(argument97 : ["stringValue19782", "stringValue19783"]) { + inputField452: Enum947 +} + +input InputObject1050 @Directive44(argument97 : ["stringValue26695"]) { + inputField4690: String + inputField4691: InputObject1051 + inputField4699: [InputObject1053] + inputField4706: [InputObject1055] + inputField4709: Enum1399 +} + +input InputObject1051 @Directive44(argument97 : ["stringValue26696"]) { + inputField4692: Boolean + inputField4693: Enum1396 + inputField4694: String + inputField4695: InputObject1052 + inputField4698: String +} + +input InputObject1052 @Directive44(argument97 : ["stringValue26698"]) { + inputField4696: Int! + inputField4697: Int! +} + +input InputObject1053 @Directive44(argument97 : ["stringValue26699"]) { + inputField4700: String! + inputField4701: Boolean! + inputField4702: [InputObject1054]! +} + +input InputObject1054 @Directive44(argument97 : ["stringValue26700"]) { + inputField4703: String + inputField4704: Enum1397 + inputField4705: String +} + +input InputObject1055 @Directive44(argument97 : ["stringValue26702"]) { + inputField4707: Enum1398! + inputField4708: Scalar2! +} + +input InputObject1056 @Directive44(argument97 : ["stringValue26722"]) { + inputField4710: [Scalar2]! +} + +input InputObject1057 @Directive44(argument97 : ["stringValue26728"]) { + inputField4711: Scalar2! + inputField4712: InputObject1050! + inputField4713: [Enum1400]! +} + +input InputObject1058 @Directive44(argument97 : ["stringValue26735"]) { + inputField4714: Scalar2! + inputField4715: InputObject1059! +} + +input InputObject1059 @Directive44(argument97 : ["stringValue26736"]) { + inputField4716: String + inputField4717: Boolean + inputField4718: Boolean +} + +input InputObject106 @Directive22(argument62 : "stringValue19787") @Directive44(argument97 : ["stringValue19788", "stringValue19789"]) { + inputField454: InputObject107 @deprecated + inputField456: InputObject107 @deprecated + inputField457: InputObject107 @deprecated + inputField458: [InputObject108] +} + +input InputObject1060 @Directive44(argument97 : ["stringValue26781"]) { + inputField4719: [String]! + inputField4720: String + inputField4721: [InputObject1055]! + inputField4722: Scalar2 + inputField4723: Scalar2 +} + +input InputObject1061 @Directive44(argument97 : ["stringValue26788"]) { + inputField4724: Scalar2 + inputField4725: Enum1403! + inputField4726: [InputObject1062]! + inputField4735: Boolean +} + +input InputObject1062 @Directive44(argument97 : ["stringValue26790"]) { + inputField4727: Enum1404 + inputField4728: String + inputField4729: Boolean + inputField4730: Scalar2 + inputField4731: Float + inputField4732: [InputObject1063] +} + +input InputObject1063 @Directive44(argument97 : ["stringValue26792"]) { + inputField4733: Scalar3! + inputField4734: Enum1405! +} + +input InputObject1064 @Directive44(argument97 : ["stringValue26804"]) { + inputField4736: String! +} + +input InputObject1065 @Directive44(argument97 : ["stringValue26812"]) { + inputField4737: String! + inputField4738: Enum1407! + inputField4739: InputObject1066 + inputField4745: InputObject1068 + inputField4748: InputObject1069 + inputField4750: String + inputField4751: Boolean + inputField4752: String! +} + +input InputObject1066 @Directive44(argument97 : ["stringValue26814"]) { + inputField4740: [InputObject1067] + inputField4743: [Scalar2] + inputField4744: String +} + +input InputObject1067 @Directive44(argument97 : ["stringValue26815"]) { + inputField4741: String + inputField4742: String +} + +input InputObject1068 @Directive44(argument97 : ["stringValue26816"]) { + inputField4746: [InputObject1067] + inputField4747: [Scalar2]! +} + +input InputObject1069 @Directive44(argument97 : ["stringValue26817"]) { + inputField4749: String! +} + +input InputObject107 @Directive22(argument62 : "stringValue19790") @Directive44(argument97 : ["stringValue19791", "stringValue19792"]) { + inputField455: Boolean +} + +input InputObject1070 @Directive44(argument97 : ["stringValue26825"]) { + inputField4753: [Enum1408]! + inputField4754: Enum1409! + inputField4755: Enum1410! + inputField4756: [Scalar2]! + inputField4757: Enum1411! + inputField4758: Boolean + inputField4759: String! +} + +input InputObject1071 @Directive44(argument97 : ["stringValue26836"]) { + inputField4760: Scalar2! +} + +input InputObject1072 @Directive44(argument97 : ["stringValue26842"]) { + inputField4761: Scalar2! + inputField4762: Enum1412! + inputField4763: String +} + +input InputObject1073 @Directive44(argument97 : ["stringValue26854"]) { + inputField4764: String! +} + +input InputObject1074 @Directive44(argument97 : ["stringValue26860"]) { + inputField4765: Enum1413! + inputField4766: String! + inputField4767: Enum1414! + inputField4768: Scalar2! + inputField4769: Scalar2! +} + +input InputObject1075 @Directive44(argument97 : ["stringValue26874"]) { + inputField4770: String! + inputField4771: String! + inputField4772: String +} + +input InputObject1076 @Directive44(argument97 : ["stringValue26880"]) { + inputField4773: String! + inputField4774: String! +} + +input InputObject1077 @Directive44(argument97 : ["stringValue26886"]) { + inputField4775: String! + inputField4776: Scalar2! + inputField4777: Float! + inputField4778: String! + inputField4779: Enum1417! + inputField4780: InputObject1078 + inputField4787: String +} + +input InputObject1078 @Directive44(argument97 : ["stringValue26888"]) { + inputField4781: InputObject1079 + inputField4784: InputObject1080 +} + +input InputObject1079 @Directive44(argument97 : ["stringValue26889"]) { + inputField4782: Scalar2 + inputField4783: String +} + +input InputObject108 @Directive22(argument62 : "stringValue19793") @Directive44(argument97 : ["stringValue19794", "stringValue19795"]) { + inputField459: String + inputField460: Boolean + inputField461: String +} + +input InputObject1080 @Directive44(argument97 : ["stringValue26890"]) { + inputField4785: Scalar2 + inputField4786: String +} + +input InputObject1081 @Directive44(argument97 : ["stringValue26896"]) { + inputField4788: String! + inputField4789: String! +} + +input InputObject1082 @Directive44(argument97 : ["stringValue26902"]) { + inputField4790: String! + inputField4791: Float! + inputField4792: String! + inputField4793: Enum1418! + inputField4794: String +} + +input InputObject1083 @Directive44(argument97 : ["stringValue26976"]) { + inputField4795: String! + inputField4796: Enum1415 + inputField4797: String! + inputField4798: Float! + inputField4799: String! + inputField4800: Enum1416 +} + +input InputObject1084 @Directive44(argument97 : ["stringValue26983"]) { + inputField4801: Scalar2 + inputField4802: Scalar1 +} + +input InputObject1085 @Directive44(argument97 : ["stringValue26989"]) { + inputField4803: Scalar2! + inputField4804: Enum1427! + inputField4805: Scalar2! +} + +input InputObject1086 @Directive44(argument97 : ["stringValue26996"]) { + inputField4806: Enum1427 + inputField4807: Enum1428 + inputField4808: InputObject1087 +} + +input InputObject1087 @Directive44(argument97 : ["stringValue26998"]) { + inputField4809: InputObject1088 +} + +input InputObject1088 @Directive44(argument97 : ["stringValue26999"]) { + inputField4810: Int +} + +input InputObject1089 @Directive44(argument97 : ["stringValue27012"]) { + inputField4811: InputObject1090 +} + +input InputObject109 @Directive22(argument62 : "stringValue19796") @Directive44(argument97 : ["stringValue19797", "stringValue19798"]) { + inputField463: ID! + inputField464: Boolean +} + +input InputObject1090 @Directive44(argument97 : ["stringValue27013"]) { + inputField4812: Scalar2 + inputField4813: Scalar2 + inputField4814: String + inputField4815: InputObject1091 + inputField4819: Scalar2 + inputField4820: Scalar2 + inputField4821: Int + inputField4822: Int + inputField4823: Scalar2 + inputField4824: InputObject1092 + inputField4828: [InputObject1093] + inputField4907: [String] + inputField4908: Scalar2 + inputField4909: [Scalar2] +} + +input InputObject1091 @Directive44(argument97 : ["stringValue27014"]) { + inputField4816: Scalar2! + inputField4817: String + inputField4818: String +} + +input InputObject1092 @Directive44(argument97 : ["stringValue27015"]) { + inputField4825: String! + inputField4826: Scalar2! + inputField4827: String +} + +input InputObject1093 @Directive44(argument97 : ["stringValue27016"]) { + inputField4829: String + inputField4830: String + inputField4831: String + inputField4832: Boolean + inputField4833: Scalar2 + inputField4834: Scalar4 + inputField4835: Boolean + inputField4836: Scalar2 + inputField4837: String + inputField4838: Boolean + inputField4839: Boolean + inputField4840: Boolean + inputField4841: Int + inputField4842: String + inputField4843: String + inputField4844: InputObject1094 + inputField4851: Enum1430 + inputField4852: Scalar4 + inputField4853: Scalar4 + inputField4854: Enum1431 + inputField4855: [InputObject1097] + inputField4860: Boolean + inputField4861: String + inputField4862: Int + inputField4863: String + inputField4864: String + inputField4865: Int + inputField4866: InputObject1098 + inputField4880: Scalar2 + inputField4881: Enum1433 + inputField4882: InputObject1101 +} + +input InputObject1094 @Directive44(argument97 : ["stringValue27017"]) { + inputField4845: [InputObject1095] +} + +input InputObject1095 @Directive44(argument97 : ["stringValue27018"]) { + inputField4846: Int + inputField4847: Enum1429 + inputField4848: InputObject1096 +} + +input InputObject1096 @Directive44(argument97 : ["stringValue27020"]) { + inputField4849: Scalar3! + inputField4850: Scalar3! +} + +input InputObject1097 @Directive44(argument97 : ["stringValue27023"]) { + inputField4856: Scalar2 + inputField4857: Scalar2 + inputField4858: String + inputField4859: Scalar2 +} + +input InputObject1098 @Directive44(argument97 : ["stringValue27024"]) { + inputField4867: InputObject1099 + inputField4873: InputObject1100 +} + +input InputObject1099 @Directive44(argument97 : ["stringValue27025"]) { + inputField4868: Enum1432 + inputField4869: String! + inputField4870: String + inputField4871: String + inputField4872: String +} + +input InputObject11 @Directive42(argument96 : ["stringValue11789"]) @Directive44(argument97 : ["stringValue11790", "stringValue11791"]) { + inputField62: String + inputField63: String +} + +input InputObject110 @Directive22(argument62 : "stringValue19842") @Directive44(argument97 : ["stringValue19843", "stringValue19844"]) { + inputField465: String + inputField466: String + inputField467: String + inputField468: String + inputField469: String + inputField470: String + inputField471: String + inputField472: Boolean + inputField473: String +} + +input InputObject1100 @Directive44(argument97 : ["stringValue27027"]) { + inputField4874: String + inputField4875: String + inputField4876: String + inputField4877: [String] + inputField4878: String + inputField4879: String +} + +input InputObject1101 @Directive44(argument97 : ["stringValue27029"]) { + inputField4883: Int + inputField4884: Int + inputField4885: Int + inputField4886: Int + inputField4887: InputObject1102 + inputField4890: [InputObject1103] + inputField4893: [InputObject1104] + inputField4896: [InputObject1105] + inputField4899: Int + inputField4900: Boolean + inputField4901: Int + inputField4902: Boolean + inputField4903: Boolean + inputField4904: InputObject1106 +} + +input InputObject1102 @Directive44(argument97 : ["stringValue27030"]) { + inputField4888: Int + inputField4889: Boolean +} + +input InputObject1103 @Directive44(argument97 : ["stringValue27031"]) { + inputField4891: Int + inputField4892: Enum1434 +} + +input InputObject1104 @Directive44(argument97 : ["stringValue27033"]) { + inputField4894: Enum1429! + inputField4895: Boolean! +} + +input InputObject1105 @Directive44(argument97 : ["stringValue27034"]) { + inputField4897: Enum1429! + inputField4898: Boolean! +} + +input InputObject1106 @Directive44(argument97 : ["stringValue27035"]) { + inputField4905: Enum1435 + inputField4906: Int +} + +input InputObject1107 @Directive44(argument97 : ["stringValue27044"]) { + inputField4910: String + inputField4911: Int + inputField4912: InputObject1108 + inputField4917: [InputObject1109] + inputField4924: Boolean +} + +input InputObject1108 @Directive44(argument97 : ["stringValue27045"]) { + inputField4913: [Enum1434] + inputField4914: [Enum1434] + inputField4915: Scalar1 + inputField4916: Scalar1 +} + +input InputObject1109 @Directive44(argument97 : ["stringValue27046"]) { + inputField4918: String + inputField4919: String + inputField4920: Float + inputField4921: Int + inputField4922: Int + inputField4923: Int +} + +input InputObject111 @Directive22(argument62 : "stringValue19859") @Directive44(argument97 : ["stringValue19860", "stringValue19861"]) { + inputField474: Enum193 + inputField475: String + inputField476: Enum194! + inputField477: Enum446 + inputField478: Scalar2 +} + +input InputObject1110 @Directive44(argument97 : ["stringValue27058"]) { + inputField4925: Scalar2! + inputField4926: Scalar2 +} + +input InputObject1111 @Directive44(argument97 : ["stringValue27064"]) { + inputField4927: Scalar2! +} + +input InputObject1112 @Directive44(argument97 : ["stringValue27068"]) { + inputField4928: Scalar2! + inputField4929: [Enum1436] + inputField4930: InputObject1113 + inputField4938: InputObject1114 + inputField4940: Boolean +} + +input InputObject1113 @Directive44(argument97 : ["stringValue27070"]) { + inputField4931: [Scalar3]! + inputField4932: Int + inputField4933: Boolean + inputField4934: Enum1437 + inputField4935: Enum1438 + inputField4936: String + inputField4937: Boolean +} + +input InputObject1114 @Directive44(argument97 : ["stringValue27073"]) { + inputField4939: [InputObject1095] +} + +input InputObject1115 @Directive44(argument97 : ["stringValue27134"]) { + inputField4941: [Scalar2]! + inputField4942: [Enum1436] + inputField4943: [InputObject1113] + inputField4944: InputObject1114 + inputField4945: Boolean +} + +input InputObject1116 @Directive44(argument97 : ["stringValue27173"]) { + inputField4946: Scalar2 + inputField4947: Enum1442! +} + +input InputObject1117 @Directive44(argument97 : ["stringValue27180"]) { + inputField4948: InputObject1090 +} + +input InputObject1118 @Directive44(argument97 : ["stringValue27186"]) { + inputField4949: Scalar2 + inputField4950: [InputObject1119]! + inputField4976: Scalar3 + inputField4977: Scalar3 +} + +input InputObject1119 @Directive44(argument97 : ["stringValue27187"]) { + inputField4951: InputObject1120! + inputField4955: Scalar2! + inputField4956: InputObject1121 + inputField4960: [InputObject1122] + inputField4975: [Scalar5] +} + +input InputObject112 @Directive22(argument62 : "stringValue19872") @Directive44(argument97 : ["stringValue19873", "stringValue19874", "stringValue19875"]) { + inputField479: ID! + inputField480: Enum949 +} + +input InputObject1120 @Directive44(argument97 : ["stringValue27188"]) { + inputField4952: Scalar3! + inputField4953: Scalar3! + inputField4954: [Enum1443] +} + +input InputObject1121 @Directive44(argument97 : ["stringValue27190"]) { + inputField4957: Boolean + inputField4958: Scalar5 + inputField4959: [Enum1444] +} + +input InputObject1122 @Directive44(argument97 : ["stringValue27192"]) { + inputField4961: Scalar2! + inputField4962: Boolean + inputField4963: InputObject1123 + inputField4966: Scalar1 + inputField4967: Scalar7 + inputField4968: Scalar7 + inputField4969: Boolean + inputField4970: Boolean + inputField4971: [InputObject1124] + inputField4974: [Enum1444] +} + +input InputObject1123 @Directive44(argument97 : ["stringValue27193"]) { + inputField4964: String! + inputField4965: Scalar2! +} + +input InputObject1124 @Directive44(argument97 : ["stringValue27194"]) { + inputField4972: Scalar7 + inputField4973: InputObject1123 +} + +input InputObject1125 @Directive44(argument97 : ["stringValue27210"]) { + inputField4978: Scalar2! + inputField4979: String + inputField4980: Int + inputField4981: InputObject1108 + inputField4982: [InputObject1109] + inputField4983: Boolean +} + +input InputObject1126 @Directive44(argument97 : ["stringValue27214"]) { + inputField4984: [Scalar2]! + inputField4985: Scalar2 + inputField4986: String! + inputField4987: String! +} + +input InputObject1127 @Directive44(argument97 : ["stringValue27221"]) { + inputField4988: String + inputField4989: String! + inputField4990: String + inputField4991: Enum1445! + inputField4992: String + inputField4993: Int! + inputField4994: String! + inputField4995: Enum1446! + inputField4996: Scalar2! + inputField4997: Enum1447 + inputField4998: Enum1448 +} + +input InputObject1128 @Directive44(argument97 : ["stringValue27232"]) { + inputField4999: Scalar2! + inputField5000: String + inputField5001: String + inputField5002: Scalar2 +} + +input InputObject1129 @Directive44(argument97 : ["stringValue27248"]) { + inputField5003: Scalar2! + inputField5004: String! + inputField5005: Scalar2! + inputField5006: String! +} + +input InputObject113 @Directive22(argument62 : "stringValue19896") @Directive44(argument97 : ["stringValue19897"]) { + inputField481: String! + inputField482: Enum938 + inputField483: Enum939 + inputField484: Enum940 +} + +input InputObject1130 @Directive44(argument97 : ["stringValue27254"]) { + inputField5007: Scalar2! + inputField5008: String! + inputField5009: String + inputField5010: String +} + +input InputObject1131 @Directive44(argument97 : ["stringValue27260"]) { + inputField5011: Scalar2! +} + +input InputObject1132 @Directive44(argument97 : ["stringValue27266"]) { + inputField5012: String! +} + +input InputObject1133 @Directive44(argument97 : ["stringValue27275"]) { + inputField5013: [Scalar2]! + inputField5014: Scalar2! +} + +input InputObject1134 @Directive44(argument97 : ["stringValue27283"]) { + inputField5015: [Scalar2!]! + inputField5016: Scalar2! +} + +input InputObject1135 @Directive44(argument97 : ["stringValue27289"]) { + inputField5017: Scalar2! + inputField5018: Scalar2! + inputField5019: Scalar2! +} + +input InputObject1136 @Directive44(argument97 : ["stringValue27298"]) { + inputField5020: [Scalar2!]! + inputField5021: Scalar2! +} + +input InputObject1137 @Directive44(argument97 : ["stringValue27304"]) { + inputField5022: [Scalar2]! + inputField5023: Scalar2! +} + +input InputObject1138 @Directive44(argument97 : ["stringValue27310"]) { + inputField5024: String! + inputField5025: [InputObject1139] + inputField5035: String +} + +input InputObject1139 @Directive44(argument97 : ["stringValue27311"]) { + inputField5026: Scalar2 + inputField5027: Enum1455! + inputField5028: String + inputField5029: String + inputField5030: String + inputField5031: String + inputField5032: String + inputField5033: String + inputField5034: Boolean +} + +input InputObject114 @Directive22(argument62 : "stringValue19901") @Directive44(argument97 : ["stringValue19902", "stringValue19903"]) { + inputField485: ID! +} + +input InputObject1140 @Directive44(argument97 : ["stringValue27319"]) { + inputField5036: Scalar2! +} + +input InputObject1141 @Directive44(argument97 : ["stringValue27325"]) { + inputField5037: String! + inputField5038: String +} + +input InputObject1142 @Directive44(argument97 : ["stringValue27331"]) { + inputField5039: String! + inputField5040: String +} + +input InputObject1143 @Directive44(argument97 : ["stringValue27352"]) { + inputField5041: Scalar2 + inputField5042: Enum1464! +} + +input InputObject1144 @Directive44(argument97 : ["stringValue27359"]) { + inputField5043: Scalar2! +} + +input InputObject1145 @Directive44(argument97 : ["stringValue27365"]) { + inputField5044: String! + inputField5045: Enum1465! +} + +input InputObject1146 @Directive44(argument97 : ["stringValue27374"]) { + inputField5046: Scalar2! + inputField5047: Enum1466! + inputField5048: Float! + inputField5049: String! + inputField5050: String +} + +input InputObject1147 @Directive44(argument97 : ["stringValue27383"]) { + inputField5051: String + inputField5052: String + inputField5053: String + inputField5054: Enum1467 + inputField5055: Enum1468 + inputField5056: Enum1469 + inputField5057: Enum1470 + inputField5058: Enum1471 + inputField5059: Scalar4 +} + +input InputObject1148 @Directive44(argument97 : ["stringValue27394"]) { + inputField5060: String! + inputField5061: Enum1452! + inputField5062: String + inputField5063: String + inputField5064: String + inputField5065: Scalar2! + inputField5066: Boolean + inputField5067: String +} + +input InputObject1149 @Directive44(argument97 : ["stringValue27400"]) { + inputField5068: Scalar2! + inputField5069: Scalar2! + inputField5070: Scalar2! + inputField5071: String +} + +input InputObject115 @Directive22(argument62 : "stringValue20094") @Directive44(argument97 : ["stringValue20095", "stringValue20096"]) { + inputField486: ID! + inputField487: String! +} + +input InputObject1150 @Directive44(argument97 : ["stringValue27406"]) { + inputField5072: Scalar2! + inputField5073: [Scalar2!]! +} + +input InputObject1151 @Directive44(argument97 : ["stringValue27412"]) { + inputField5074: InputObject1152! +} + +input InputObject1152 @Directive44(argument97 : ["stringValue27413"]) { + inputField5075: Scalar2 + inputField5076: Scalar2 + inputField5077: String + inputField5078: Scalar2 + inputField5079: Scalar2 + inputField5080: Scalar2 + inputField5081: Scalar2 + inputField5082: Enum1472 + inputField5083: Enum1473 + inputField5084: String + inputField5085: InputObject1153 + inputField5096: [InputObject1154] + inputField5106: InputObject1155 + inputField5117: InputObject1155 + inputField5118: InputObject1155 + inputField5119: InputObject1156 + inputField5146: Scalar4 + inputField5147: Scalar4 + inputField5148: Scalar4 +} + +input InputObject1153 @Directive44(argument97 : ["stringValue27416"]) { + inputField5086: Scalar2 + inputField5087: String + inputField5088: String + inputField5089: String + inputField5090: String + inputField5091: String + inputField5092: String + inputField5093: Scalar4 + inputField5094: Scalar4 + inputField5095: Scalar4 +} + +input InputObject1154 @Directive44(argument97 : ["stringValue27417"]) { + inputField5097: Scalar2 + inputField5098: String + inputField5099: Enum1474 + inputField5100: String + inputField5101: Scalar2 + inputField5102: Scalar2 + inputField5103: Scalar4 + inputField5104: Scalar4 + inputField5105: Scalar4 +} + +input InputObject1155 @Directive44(argument97 : ["stringValue27419"]) { + inputField5107: Scalar2 + inputField5108: String + inputField5109: String + inputField5110: String + inputField5111: String + inputField5112: String + inputField5113: String + inputField5114: Scalar4 + inputField5115: Scalar4 + inputField5116: Scalar4 +} + +input InputObject1156 @Directive44(argument97 : ["stringValue27420"]) { + inputField5120: Scalar2 + inputField5121: String + inputField5122: Boolean + inputField5123: String + inputField5124: Enum1475 + inputField5125: Enum1467 + inputField5126: String + inputField5127: String + inputField5128: String + inputField5129: String + inputField5130: String + inputField5131: String + inputField5132: String + inputField5133: String + inputField5134: String + inputField5135: Scalar2 + inputField5136: String + inputField5137: String + inputField5138: String + inputField5139: Enum1452 + inputField5140: Boolean + inputField5141: Enum1468 + inputField5142: Boolean + inputField5143: Scalar4 + inputField5144: Scalar4 + inputField5145: Scalar4 +} + +input InputObject1157 @Directive44(argument97 : ["stringValue27437"]) { + inputField5149: Scalar2! + inputField5150: String! + inputField5151: String! + inputField5152: Enum1476! + inputField5153: Scalar2 + inputField5154: String! + inputField5155: Enum1477 +} + +input InputObject1158 @Directive44(argument97 : ["stringValue27447"]) { + inputField5156: [InputObject1159!]! + inputField5160: Scalar2! + inputField5161: String +} + +input InputObject1159 @Directive44(argument97 : ["stringValue27448"]) { + inputField5157: String! + inputField5158: String! + inputField5159: Scalar2! +} + +input InputObject116 @Directive22(argument62 : "stringValue20102") @Directive44(argument97 : ["stringValue20103", "stringValue20104"]) { + inputField488: ID! + inputField489: Scalar2! +} + +input InputObject1160 @Directive44(argument97 : ["stringValue27466"]) { + inputField5162: Scalar2! + inputField5163: String! + inputField5164: String! + inputField5165: String + inputField5166: String + inputField5167: String + inputField5168: String + inputField5169: String + inputField5170: String + inputField5171: Float + inputField5172: Float +} + +input InputObject1161 @Directive44(argument97 : ["stringValue27474"]) { + inputField5173: Scalar2! + inputField5174: Scalar2! +} + +input InputObject1162 @Directive44(argument97 : ["stringValue27482"]) { + inputField5175: Scalar2! + inputField5176: String! + inputField5177: Boolean! +} + +input InputObject1163 @Directive44(argument97 : ["stringValue27488"]) { + inputField5178: Scalar2! +} + +input InputObject1164 @Directive44(argument97 : ["stringValue27494"]) { + inputField5179: Scalar2! + inputField5180: String +} + +input InputObject1165 @Directive44(argument97 : ["stringValue27500"]) { + inputField5181: String! + inputField5182: String! + inputField5183: Float! + inputField5184: Scalar2! +} + +input InputObject1166 @Directive44(argument97 : ["stringValue27509"]) { + inputField5185: Scalar2! + inputField5186: Scalar2! +} + +input InputObject1167 @Directive44(argument97 : ["stringValue27518"]) { + inputField5187: String! + inputField5188: String! +} + +input InputObject1168 @Directive44(argument97 : ["stringValue27524"]) { + inputField5189: Scalar2! +} + +input InputObject1169 @Directive44(argument97 : ["stringValue27530"]) { + inputField5190: Scalar2! +} + +input InputObject117 @Directive22(argument62 : "stringValue20110") @Directive44(argument97 : ["stringValue20111", "stringValue20112"]) { + inputField490: ID! + inputField491: Scalar2! + inputField492: String! +} + +input InputObject1170 @Directive44(argument97 : ["stringValue27536"]) { + inputField5191: Scalar2! + inputField5192: Scalar2! +} + +input InputObject1171 @Directive44(argument97 : ["stringValue27542"]) { + inputField5193: Scalar2! +} + +input InputObject1172 @Directive44(argument97 : ["stringValue27548"]) { + inputField5194: Scalar2! + inputField5195: Scalar2! +} + +input InputObject1173 @Directive44(argument97 : ["stringValue27554"]) { + inputField5196: Scalar2! + inputField5197: Scalar2! +} + +input InputObject1174 @Directive44(argument97 : ["stringValue27560"]) { + inputField5198: Scalar2! +} + +input InputObject1175 @Directive44(argument97 : ["stringValue27566"]) { + inputField5199: Scalar2! +} + +input InputObject1176 @Directive44(argument97 : ["stringValue27572"]) { + inputField5200: [String]! +} + +input InputObject1177 @Directive44(argument97 : ["stringValue27578"]) { + inputField5201: [Scalar2]! +} + +input InputObject1178 @Directive44(argument97 : ["stringValue27584"]) { + inputField5202: Scalar2! + inputField5203: Scalar2! +} + +input InputObject1179 @Directive44(argument97 : ["stringValue27590"]) { + inputField5204: Scalar2! + inputField5205: Scalar2! +} + +input InputObject118 @Directive22(argument62 : "stringValue20118") @Directive44(argument97 : ["stringValue20119", "stringValue20120"]) { + inputField493: ID! + inputField494: Scalar2! +} + +input InputObject1180 @Directive44(argument97 : ["stringValue27596"]) { + inputField5206: Scalar2! + inputField5207: Scalar2! + inputField5208: Scalar2! +} + +input InputObject1181 @Directive44(argument97 : ["stringValue27602"]) { + inputField5209: [Scalar2!]! + inputField5210: Scalar2! +} + +input InputObject1182 @Directive44(argument97 : ["stringValue27608"]) { + inputField5211: [Scalar2]! + inputField5212: Scalar2! +} + +input InputObject1183 @Directive44(argument97 : ["stringValue27614"]) { + inputField5213: Scalar2 +} + +input InputObject1184 @Directive44(argument97 : ["stringValue27620"]) { + inputField5214: Scalar2! +} + +input InputObject1185 @Directive44(argument97 : ["stringValue27626"]) { + inputField5215: String! + inputField5216: String +} + +input InputObject1186 @Directive44(argument97 : ["stringValue27636"]) { + inputField5217: Scalar2! + inputField5218: String +} + +input InputObject1187 @Directive44(argument97 : ["stringValue27642"]) { + inputField5219: Scalar2 + inputField5220: String! + inputField5221: InputObject1188! + inputField5232: Scalar2! + inputField5233: String! + inputField5234: Boolean + inputField5235: InputObject1189 + inputField5248: [Scalar2] + inputField5249: [Enum1453] + inputField5250: String + inputField5251: Boolean + inputField5252: Boolean + inputField5253: InputObject1190! + inputField5270: Scalar2! + inputField5271: Scalar2 +} + +input InputObject1188 @Directive44(argument97 : ["stringValue27643"]) { + inputField5222: Scalar2 + inputField5223: Scalar2 + inputField5224: Scalar2 + inputField5225: Scalar4 + inputField5226: Scalar4 + inputField5227: Scalar2 + inputField5228: String + inputField5229: Scalar4 + inputField5230: Scalar4 + inputField5231: Scalar4 +} + +input InputObject1189 @Directive44(argument97 : ["stringValue27644"]) { + inputField5236: Scalar2 + inputField5237: Scalar2 + inputField5238: Scalar2 + inputField5239: String + inputField5240: Scalar2 + inputField5241: Scalar2 + inputField5242: Scalar2 + inputField5243: String + inputField5244: Scalar4 + inputField5245: Scalar4 + inputField5246: Scalar4 + inputField5247: Scalar4 +} + +input InputObject119 @Directive22(argument62 : "stringValue20126") @Directive44(argument97 : ["stringValue20127", "stringValue20128"]) { + inputField495: ID! + inputField496: Scalar2! + inputField497: String! +} + +input InputObject1190 @Directive44(argument97 : ["stringValue27645"]) { + inputField5254: Scalar2 + inputField5255: String + inputField5256: Enum1452 + inputField5257: String + inputField5258: String + inputField5259: String + inputField5260: Boolean + inputField5261: Scalar2 + inputField5262: Scalar2 + inputField5263: String + inputField5264: String + inputField5265: Int + inputField5266: String + inputField5267: Scalar4 + inputField5268: Scalar4 + inputField5269: Scalar4 +} + +input InputObject1191 @Directive44(argument97 : ["stringValue27653"]) { + inputField5272: Scalar2! + inputField5273: Scalar2! + inputField5274: [String]! + inputField5275: InputObject1188! + inputField5276: InputObject1189 + inputField5277: [Scalar2] + inputField5278: [Enum1453] + inputField5279: String + inputField5280: Boolean +} + +input InputObject1192 @Directive44(argument97 : ["stringValue27659"]) { + inputField5281: String! +} + +input InputObject1193 @Directive44(argument97 : ["stringValue27665"]) { + inputField5282: Scalar2! +} + +input InputObject1194 @Directive44(argument97 : ["stringValue27671"]) { + inputField5283: [Scalar2!]! + inputField5284: Scalar2! +} + +input InputObject1195 @Directive44(argument97 : ["stringValue27677"]) { + inputField5285: Scalar2! +} + +input InputObject1196 @Directive44(argument97 : ["stringValue27683"]) { + inputField5286: Enum1484! +} + +input InputObject1197 @Directive44(argument97 : ["stringValue27690"]) { + inputField5287: Scalar2! + inputField5288: InputObject1198 +} + +input InputObject1198 @Directive44(argument97 : ["stringValue27691"]) { + inputField5289: Scalar2 + inputField5290: String + inputField5291: String + inputField5292: Enum1467 + inputField5293: Boolean +} + +input InputObject1199 @Directive44(argument97 : ["stringValue27697"]) { + inputField5294: Scalar2! + inputField5295: InputObject1200! +} + +input InputObject12 @Directive42(argument96 : ["stringValue11792"]) @Directive44(argument97 : ["stringValue11793", "stringValue11794"]) { + inputField66: Enum475 + inputField67: Enum476 +} + +input InputObject120 @Directive22(argument62 : "stringValue20134") @Directive44(argument97 : ["stringValue20135", "stringValue20136"]) { + inputField498: ID! + inputField499: String +} + +input InputObject1200 @Directive44(argument97 : ["stringValue27698"]) { + inputField5296: Scalar2 + inputField5297: Scalar2 + inputField5298: Enum1482 + inputField5299: Scalar4 + inputField5300: String + inputField5301: String + inputField5302: String + inputField5303: Scalar2 + inputField5304: Scalar4 + inputField5305: String + inputField5306: String + inputField5307: Boolean + inputField5308: Boolean + inputField5309: String + inputField5310: String + inputField5311: Enum1483 + inputField5312: Scalar4 + inputField5313: Scalar4 + inputField5314: Scalar4 +} + +input InputObject1201 @Directive44(argument97 : ["stringValue27704"]) { + inputField5315: Scalar2 + inputField5316: Enum1485! + inputField5317: Enum1486! +} + +input InputObject1202 @Directive44(argument97 : ["stringValue27712"]) { + inputField5318: Scalar2! + inputField5319: Float! + inputField5320: String! +} + +input InputObject1203 @Directive44(argument97 : ["stringValue27718"]) { + inputField5321: String! + inputField5322: String! + inputField5323: Enum1467! + inputField5324: Enum1468! +} + +input InputObject1204 @Directive44(argument97 : ["stringValue27724"]) { + inputField5325: String! + inputField5326: Scalar2 + inputField5327: Enum1449 + inputField5328: Enum1450 + inputField5329: Enum1451 + inputField5330: InputObject1198 +} + +input InputObject1205 @Directive44(argument97 : ["stringValue27730"]) { + inputField5331: Scalar2! +} + +input InputObject1206 @Directive44(argument97 : ["stringValue27738"]) { + inputField5332: Scalar2! +} + +input InputObject1207 @Directive44(argument97 : ["stringValue27744"]) { + inputField5333: InputObject1188! + inputField5334: Scalar2! +} + +input InputObject1208 @Directive44(argument97 : ["stringValue27752"]) { + inputField5335: Scalar2! + inputField5336: InputObject1209! + inputField5353: Scalar2! +} + +input InputObject1209 @Directive44(argument97 : ["stringValue27753"]) { + inputField5337: Scalar2! + inputField5338: String! + inputField5339: Enum1487! + inputField5340: [Enum1453]! + inputField5341: [InputObject1210] + inputField5347: [InputObject1211] + inputField5350: Int! + inputField5351: Int! + inputField5352: String +} + +input InputObject121 @Directive20(argument58 : "stringValue20143", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20142") @Directive44(argument97 : ["stringValue20144", "stringValue20145"]) { + inputField500: ID! +} + +input InputObject1210 @Directive44(argument97 : ["stringValue27755"]) { + inputField5342: Scalar2! + inputField5343: Enum1466! + inputField5344: Float! + inputField5345: String! + inputField5346: String +} + +input InputObject1211 @Directive44(argument97 : ["stringValue27756"]) { + inputField5348: Scalar2! + inputField5349: Scalar2! +} + +input InputObject1212 @Directive44(argument97 : ["stringValue27764"]) { + inputField5354: Scalar2! + inputField5355: String! + inputField5356: Float! +} + +input InputObject1213 @Directive44(argument97 : ["stringValue27770"]) { + inputField5357: Scalar2! + inputField5358: String + inputField5359: String + inputField5360: String + inputField5361: String + inputField5362: String + inputField5363: String +} + +input InputObject1214 @Directive44(argument97 : ["stringValue27776"]) { + inputField5364: Scalar2! + inputField5365: String + inputField5366: String + inputField5367: String + inputField5368: String + inputField5369: String + inputField5370: Enum1452! + inputField5371: Scalar2 +} + +input InputObject1215 @Directive44(argument97 : ["stringValue27782"]) { + inputField5372: Scalar2! + inputField5373: String! + inputField5374: String! + inputField5375: Enum1467 +} + +input InputObject1216 @Directive44(argument97 : ["stringValue27788"]) { + inputField5376: Scalar2! + inputField5377: InputObject1152! +} + +input InputObject1217 @Directive44(argument97 : ["stringValue27794"]) { + inputField5378: Scalar2! + inputField5379: String + inputField5380: String +} + +input InputObject1218 @Directive44(argument97 : ["stringValue27800"]) { + inputField5381: Scalar2! + inputField5382: String! +} + +input InputObject1219 @Directive44(argument97 : ["stringValue27806"]) { + inputField5383: Scalar2! + inputField5384: String! +} + +input InputObject122 @Directive22(argument62 : "stringValue20151") @Directive44(argument97 : ["stringValue20152", "stringValue20153"]) { + inputField501: [ID] + inputField502: [Enum928] + inputField503: [InputObject123] + inputField510: InputObject124 + inputField516: Boolean +} + +input InputObject1220 @Directive44(argument97 : ["stringValue27812"]) { + inputField5385: Scalar2! + inputField5386: Enum1484! +} + +input InputObject1221 @Directive44(argument97 : ["stringValue27818"]) { + inputField5387: Scalar2! + inputField5388: Boolean! +} + +input InputObject1222 @Directive44(argument97 : ["stringValue27824"]) { + inputField5389: Scalar2 + inputField5390: String + inputField5391: String + inputField5392: Scalar2 +} + +input InputObject1223 @Directive44(argument97 : ["stringValue27830"]) { + inputField5393: Scalar2! + inputField5394: String! + inputField5395: String! + inputField5396: Scalar2! +} + +input InputObject1224 @Directive44(argument97 : ["stringValue27837"]) { + inputField5397: Boolean +} + +input InputObject1225 @Directive44(argument97 : ["stringValue27843"]) { + inputField5398: Scalar2! +} + +input InputObject1226 @Directive44(argument97 : ["stringValue27849"]) { + inputField5399: Scalar2! +} + +input InputObject1227 @Directive44(argument97 : ["stringValue27855"]) { + inputField5400: String +} + +input InputObject1228 @Directive44(argument97 : ["stringValue27882"]) { + inputField5401: String! + inputField5402: InputObject1229 +} + +input InputObject1229 @Directive44(argument97 : ["stringValue27883"]) { + inputField5403: String! + inputField5404: String + inputField5405: String + inputField5406: String + inputField5407: String + inputField5408: String + inputField5409: String + inputField5410: String + inputField5411: String + inputField5412: Enum1489 +} + +input InputObject123 @Directive22(argument62 : "stringValue20154") @Directive44(argument97 : ["stringValue20155", "stringValue20156"]) { + inputField504: [Scalar3] + inputField505: Int + inputField506: Boolean + inputField507: Enum510 + inputField508: Enum929 + inputField509: String +} + +input InputObject1230 @Directive44(argument97 : ["stringValue27897"]) { + inputField5413: InputObject1231 + inputField5423: InputObject1232 +} + +input InputObject1231 @Directive44(argument97 : ["stringValue27898"]) { + inputField5414: Scalar2 + inputField5415: Scalar2 + inputField5416: String + inputField5417: String + inputField5418: Boolean + inputField5419: Scalar2 + inputField5420: Scalar2 + inputField5421: Scalar2 + inputField5422: Scalar2 +} + +input InputObject1232 @Directive44(argument97 : ["stringValue27899"]) { + inputField5424: Boolean + inputField5425: Boolean + inputField5426: Boolean + inputField5427: Boolean + inputField5428: Boolean +} + +input InputObject1233 @Directive44(argument97 : ["stringValue27916"]) { + inputField5429: InputObject1234 +} + +input InputObject1234 @Directive44(argument97 : ["stringValue27917"]) { + inputField5430: String + inputField5431: String + inputField5432: String + inputField5433: Scalar5 + inputField5434: String + inputField5435: Scalar2 + inputField5436: Scalar2 + inputField5437: Scalar2 +} + +input InputObject1235 @Directive44(argument97 : ["stringValue27923"]) { + inputField5438: InputObject1236 +} + +input InputObject1236 @Directive44(argument97 : ["stringValue27924"]) { + inputField5439: String + inputField5440: String + inputField5441: String + inputField5442: Scalar2 + inputField5443: Scalar2 + inputField5444: Scalar2 +} + +input InputObject1237 @Directive44(argument97 : ["stringValue27930"]) { + inputField5445: InputObject1238 +} + +input InputObject1238 @Directive44(argument97 : ["stringValue27931"]) { + inputField5446: Scalar2 + inputField5447: String + inputField5448: String + inputField5449: String + inputField5450: String + inputField5451: String + inputField5452: String + inputField5453: String + inputField5454: Scalar5 + inputField5455: Boolean + inputField5456: Boolean +} + +input InputObject1239 @Directive44(argument97 : ["stringValue27939"]) { + inputField5457: Scalar2! + inputField5458: String +} + +input InputObject124 @Directive22(argument62 : "stringValue20157") @Directive44(argument97 : ["stringValue20158", "stringValue20159"]) { + inputField511: [InputObject125] +} + +input InputObject1240 @Directive44(argument97 : ["stringValue27945"]) { + inputField5459: String! + inputField5460: Scalar2 + inputField5461: String! + inputField5462: String! + inputField5463: String + inputField5464: InputObject1229! + inputField5465: String +} + +input InputObject1241 @Directive44(argument97 : ["stringValue27949"]) { + inputField5466: Scalar2! +} + +input InputObject1242 @Directive44(argument97 : ["stringValue27955"]) { + inputField5467: String! + inputField5468: [InputObject1243]! +} + +input InputObject1243 @Directive44(argument97 : ["stringValue27956"]) { + inputField5469: String + inputField5470: Scalar2 +} + +input InputObject1244 @Directive44(argument97 : ["stringValue27962"]) { + inputField5471: InputObject1245! + inputField5496: Scalar5 +} + +input InputObject1245 @Directive44(argument97 : ["stringValue27963"]) { + inputField5472: Scalar2 + inputField5473: Scalar2 + inputField5474: Scalar5 + inputField5475: Scalar5 + inputField5476: Boolean + inputField5477: String + inputField5478: Float + inputField5479: Float + inputField5480: String + inputField5481: String + inputField5482: String + inputField5483: String + inputField5484: String + inputField5485: String + inputField5486: String + inputField5487: String + inputField5488: String + inputField5489: Int + inputField5490: Int + inputField5491: String + inputField5492: Scalar5 + inputField5493: Scalar5 + inputField5494: String + inputField5495: Boolean +} + +input InputObject1246 @Directive44(argument97 : ["stringValue27971"]) { + inputField5497: String! + inputField5498: String! + inputField5499: Scalar5! + inputField5500: String + inputField5501: Scalar2! + inputField5502: Scalar5! + inputField5503: String! + inputField5504: Scalar2! + inputField5505: Int! + inputField5506: String + inputField5507: String + inputField5508: String + inputField5509: String + inputField5510: Boolean +} + +input InputObject1247 @Directive44(argument97 : ["stringValue28000"]) { + inputField5511: String! + inputField5512: String! + inputField5513: Scalar5! +} + +input InputObject1248 @Directive44(argument97 : ["stringValue28008"]) { + inputField5514: String! + inputField5515: String! + inputField5516: Scalar5! + inputField5517: String + inputField5518: Scalar2! + inputField5519: Scalar5! + inputField5520: String! + inputField5521: Scalar2! + inputField5522: Int! + inputField5523: String + inputField5524: String + inputField5525: String + inputField5526: String +} + +input InputObject1249 @Directive44(argument97 : ["stringValue28012"]) { + inputField5527: InputObject1250 + inputField5553: InputObject1251 + inputField5576: Boolean +} + +input InputObject125 @Directive22(argument62 : "stringValue20160") @Directive44(argument97 : ["stringValue20161", "stringValue20162"]) { + inputField512: Int + inputField513: InputObject126 +} + +input InputObject1250 @Directive44(argument97 : ["stringValue28013"]) { + inputField5528: Scalar2 + inputField5529: String + inputField5530: String + inputField5531: String + inputField5532: String + inputField5533: String + inputField5534: String + inputField5535: String + inputField5536: String + inputField5537: String + inputField5538: String + inputField5539: String + inputField5540: String + inputField5541: Scalar2 + inputField5542: String + inputField5543: Scalar2 + inputField5544: Scalar2 + inputField5545: Scalar2 + inputField5546: Scalar2 + inputField5547: String + inputField5548: String + inputField5549: Scalar2 + inputField5550: String + inputField5551: String + inputField5552: Scalar2 +} + +input InputObject1251 @Directive44(argument97 : ["stringValue28014"]) { + inputField5554: Scalar2 + inputField5555: Scalar2 + inputField5556: Scalar2 + inputField5557: String + inputField5558: String + inputField5559: String + inputField5560: String + inputField5561: String + inputField5562: String + inputField5563: String + inputField5564: String + inputField5565: Scalar2 + inputField5566: Scalar2 + inputField5567: Scalar2 + inputField5568: Scalar2 + inputField5569: Scalar2 + inputField5570: Scalar2 + inputField5571: Float + inputField5572: Float + inputField5573: Scalar2 + inputField5574: Scalar2 + inputField5575: String +} + +input InputObject1252 @Directive44(argument97 : ["stringValue28020"]) { + inputField5577: InputObject1253! + inputField5617: Scalar5 + inputField5618: InputObject1254 + inputField5674: Scalar2 + inputField5675: Boolean +} + +input InputObject1253 @Directive44(argument97 : ["stringValue28021"]) { + inputField5578: Scalar2 + inputField5579: String + inputField5580: String + inputField5581: String + inputField5582: String + inputField5583: String + inputField5584: String + inputField5585: String + inputField5586: String + inputField5587: Scalar2 + inputField5588: Scalar5 + inputField5589: String + inputField5590: String + inputField5591: Int + inputField5592: Float + inputField5593: String + inputField5594: Float + inputField5595: Float + inputField5596: Scalar2 + inputField5597: Float + inputField5598: Boolean + inputField5599: Scalar5 + inputField5600: Scalar5 + inputField5601: Scalar5 + inputField5602: Boolean + inputField5603: Boolean + inputField5604: Boolean + inputField5605: Boolean + inputField5606: Boolean + inputField5607: String + inputField5608: Scalar5 + inputField5609: Scalar5 + inputField5610: String + inputField5611: String + inputField5612: Scalar5 + inputField5613: Boolean + inputField5614: String + inputField5615: Enum1488 + inputField5616: Scalar2 +} + +input InputObject1254 @Directive44(argument97 : ["stringValue28022"]) { + inputField5619: Scalar2 + inputField5620: String + inputField5621: String + inputField5622: String + inputField5623: String + inputField5624: String + inputField5625: Scalar2! + inputField5626: Scalar2! + inputField5627: String + inputField5628: String + inputField5629: String + inputField5630: String + inputField5631: String + inputField5632: String! + inputField5633: Scalar5! + inputField5634: Int + inputField5635: InputObject1253 + inputField5636: Scalar2 + inputField5637: InputObject1255 + inputField5670: Scalar5 + inputField5671: Scalar2 + inputField5672: Boolean + inputField5673: String +} + +input InputObject1255 @Directive44(argument97 : ["stringValue28023"]) { + inputField5638: InputObject1256 +} + +input InputObject1256 @Directive44(argument97 : ["stringValue28024"]) { + inputField5639: Scalar2! + inputField5640: Scalar2! + inputField5641: String! + inputField5642: String + inputField5643: String + inputField5644: String + inputField5645: String + inputField5646: String + inputField5647: String + inputField5648: String + inputField5649: String + inputField5650: String + inputField5651: String + inputField5652: String + inputField5653: Scalar5 + inputField5654: InputObject1257 + inputField5658: Scalar5 + inputField5659: String + inputField5660: String + inputField5661: String + inputField5662: String + inputField5663: InputObject1258 +} + +input InputObject1257 @Directive44(argument97 : ["stringValue28025"]) { + inputField5655: Int + inputField5656: Int + inputField5657: Int +} + +input InputObject1258 @Directive44(argument97 : ["stringValue28026"]) { + inputField5664: Scalar2 + inputField5665: String + inputField5666: String + inputField5667: String + inputField5668: String + inputField5669: String +} + +input InputObject1259 @Directive44(argument97 : ["stringValue28032"]) { + inputField5676: InputObject1260 + inputField5693: Scalar2 +} + +input InputObject126 @Directive22(argument62 : "stringValue20163") @Directive44(argument97 : ["stringValue20164", "stringValue20165"]) { + inputField514: Scalar3 + inputField515: Scalar3 +} + +input InputObject1260 @Directive44(argument97 : ["stringValue28033"]) { + inputField5677: Scalar2 + inputField5678: Scalar2 + inputField5679: Boolean + inputField5680: String + inputField5681: String + inputField5682: String + inputField5683: String + inputField5684: String + inputField5685: String + inputField5686: String + inputField5687: Scalar2 + inputField5688: String + inputField5689: String + inputField5690: String + inputField5691: Scalar2 + inputField5692: Scalar2 +} + +input InputObject1261 @Directive44(argument97 : ["stringValue28044"]) { + inputField5694: Enum1495! + inputField5695: Scalar2! + inputField5696: InputObject1262! + inputField5702: [String] + inputField5703: String + inputField5704: [InputObject1264] +} + +input InputObject1262 @Directive44(argument97 : ["stringValue28046"]) { + inputField5697: Scalar2 + inputField5698: InputObject1263 +} + +input InputObject1263 @Directive44(argument97 : ["stringValue28047"]) { + inputField5699: String! + inputField5700: String! + inputField5701: Enum1495! +} + +input InputObject1264 @Directive44(argument97 : ["stringValue28048"]) { + inputField5705: Enum1496! + inputField5706: String! +} + +input InputObject1265 @Directive44(argument97 : ["stringValue28061"]) { + inputField5707: Scalar2! + inputField5708: Boolean +} + +input InputObject1266 @Directive44(argument97 : ["stringValue28067"]) { + inputField5709: Scalar2 + inputField5710: [Scalar2] + inputField5711: Scalar1 + inputField5712: Scalar1 + inputField5713: String + inputField5714: String + inputField5715: Scalar2 + inputField5716: Scalar2 +} + +input InputObject1267 @Directive44(argument97 : ["stringValue28081"]) { + inputField5717: Scalar2! +} + +input InputObject1268 @Directive44(argument97 : ["stringValue28090"]) { + inputField5718: String +} + +input InputObject1269 @Directive44(argument97 : ["stringValue28096"]) { + inputField5719: Scalar2! + inputField5720: String! + inputField5721: String! + inputField5722: Boolean +} + +input InputObject127 @Directive22(argument62 : "stringValue20176") @Directive44(argument97 : ["stringValue20177", "stringValue20178"]) { + inputField517: ID! + inputField518: InputObject128 +} + +input InputObject1270 @Directive44(argument97 : ["stringValue28102"]) { + inputField5723: Scalar2 + inputField5724: InputObject1232 +} + +input InputObject1271 @Directive44(argument97 : ["stringValue28106"]) { + inputField5725: [Scalar2]! +} + +input InputObject1272 @Directive44(argument97 : ["stringValue28121"]) { + inputField5726: Scalar2 + inputField5727: String + inputField5728: Scalar5 + inputField5729: Scalar2 + inputField5730: String + inputField5731: String + inputField5732: String + inputField5733: String + inputField5734: String + inputField5735: String + inputField5736: Scalar5 + inputField5737: Scalar2 +} + +input InputObject1273 @Directive44(argument97 : ["stringValue28125"]) { + inputField5738: Scalar2 + inputField5739: Scalar2 + inputField5740: String + inputField5741: String + inputField5742: Scalar2 + inputField5743: Enum1490 + inputField5744: [InputObject1243] + inputField5745: String + inputField5746: [InputObject1274] + inputField5753: String + inputField5754: String + inputField5755: String +} + +input InputObject1274 @Directive44(argument97 : ["stringValue28126"]) { + inputField5747: Scalar2 + inputField5748: Scalar2 + inputField5749: String + inputField5750: Boolean + inputField5751: String + inputField5752: String +} + +input InputObject1275 @Directive44(argument97 : ["stringValue28133"]) { + inputField5756: Scalar2 + inputField5757: String + inputField5758: String + inputField5759: String + inputField5760: String +} + +input InputObject1276 @Directive44(argument97 : ["stringValue28139"]) { + inputField5761: Scalar2! + inputField5762: Scalar5! +} + +input InputObject1277 @Directive44(argument97 : ["stringValue28152"]) { + inputField5763: InputObject1278 +} + +input InputObject1278 @Directive44(argument97 : ["stringValue28153"]) { + inputField5764: Scalar2 + inputField5765: Scalar2 + inputField5766: Scalar2 + inputField5767: Scalar2 + inputField5768: Boolean + inputField5769: String + inputField5770: Boolean + inputField5771: Boolean + inputField5772: String + inputField5773: String + inputField5774: Scalar2 + inputField5775: String + inputField5776: String + inputField5777: String + inputField5778: String + inputField5779: String + inputField5780: Scalar4 +} + +input InputObject1279 @Directive44(argument97 : ["stringValue28162"]) { + inputField5781: Scalar2! + inputField5782: Enum1499 + inputField5783: Enum1500 +} + +input InputObject128 @Directive22(argument62 : "stringValue20179") @Directive44(argument97 : ["stringValue20180", "stringValue20181"]) { + inputField519: Int + inputField520: Scalar3 + inputField521: Int + inputField522: Int + inputField523: Int + inputField524: Int +} + +input InputObject1280 @Directive44(argument97 : ["stringValue28170"]) { + inputField5784: Scalar2! + inputField5785: InputObject1262 + inputField5786: [String] + inputField5787: String + inputField5788: [InputObject1264] +} + +input InputObject1281 @Directive44(argument97 : ["stringValue28175"]) { + inputField5789: String + inputField5790: String + inputField5791: [String]! + inputField5792: String +} + +input InputObject1282 @Directive44(argument97 : ["stringValue28184"]) { + inputField5793: Scalar2! +} + +input InputObject1283 @Directive44(argument97 : ["stringValue28190"]) { + inputField5794: Scalar2! + inputField5795: InputObject1284! +} + +input InputObject1284 @Directive44(argument97 : ["stringValue28191"]) { + inputField5796: [InputObject1285] + inputField5799: [Enum1502] +} + +input InputObject1285 @Directive44(argument97 : ["stringValue28192"]) { + inputField5797: String + inputField5798: [Enum1501] +} + +input InputObject1286 @Directive44(argument97 : ["stringValue28200"]) { + inputField5800: Scalar2! +} + +input InputObject1287 @Directive44(argument97 : ["stringValue28234"]) { + inputField5801: [InputObject1288] + inputField5835: InputObject1295! + inputField5856: Boolean! + inputField5857: String + inputField5858: Int! + inputField5859: Enum1510 +} + +input InputObject1288 @Directive44(argument97 : ["stringValue28235"]) { + inputField5802: InputObject1289 + inputField5805: InputObject1290! + inputField5829: [InputObject1294!]! + inputField5834: Scalar4 +} + +input InputObject1289 @Directive44(argument97 : ["stringValue28236"]) { + inputField5803: String! + inputField5804: Int +} + +input InputObject129 @Directive22(argument62 : "stringValue20317") @Directive44(argument97 : ["stringValue20318", "stringValue20319"]) { + inputField525: ID! + inputField526: ID! + inputField527: Enum965! +} + +input InputObject1290 @Directive44(argument97 : ["stringValue28237"]) { + inputField5806: Enum1503! + inputField5807: String! + inputField5808: InputObject1291! + inputField5813: Scalar3 + inputField5814: String + inputField5815: String + inputField5816: String + inputField5817: String + inputField5818: InputObject1293 + inputField5826: String + inputField5827: String + inputField5828: Enum1504 +} + +input InputObject1291 @Directive44(argument97 : ["stringValue28238"]) { + inputField5809: InputObject1292 + inputField5812: String +} + +input InputObject1292 @Directive44(argument97 : ["stringValue28239"]) { + inputField5810: String + inputField5811: String +} + +input InputObject1293 @Directive44(argument97 : ["stringValue28240"]) { + inputField5819: String + inputField5820: String + inputField5821: String + inputField5822: String + inputField5823: String + inputField5824: String + inputField5825: String +} + +input InputObject1294 @Directive44(argument97 : ["stringValue28241"]) { + inputField5830: String + inputField5831: Enum1505! + inputField5832: Float + inputField5833: Scalar4 +} + +input InputObject1295 @Directive44(argument97 : ["stringValue28242"]) { + inputField5836: InputObject1296! + inputField5855: InputObject1289 +} + +input InputObject1296 @Directive44(argument97 : ["stringValue28243"]) { + inputField5837: Enum1506! + inputField5838: String! + inputField5839: Enum1507! + inputField5840: String + inputField5841: String + inputField5842: String + inputField5843: Scalar3 + inputField5844: String + inputField5845: String + inputField5846: InputObject1293 + inputField5847: Boolean + inputField5848: InputObject1293 + inputField5849: String + inputField5850: String + inputField5851: String + inputField5852: String + inputField5853: Enum1508 + inputField5854: Boolean +} + +input InputObject1297 @Directive44(argument97 : ["stringValue28254"]) { + inputField5860: Scalar2! + inputField5861: Enum1509! +} + +input InputObject1298 @Directive44(argument97 : ["stringValue28261"]) { + inputField5862: Scalar2 + inputField5863: Scalar2 + inputField5864: String +} + +input InputObject1299 @Directive44(argument97 : ["stringValue28275"]) { + inputField5865: Enum1511! + inputField5866: Scalar2! + inputField5867: Scalar2 + inputField5868: String + inputField5869: String + inputField5870: Boolean + inputField5871: Scalar4! + inputField5872: Scalar4! + inputField5873: String +} + +input InputObject13 @Directive22(argument62 : "stringValue11806") @Directive44(argument97 : ["stringValue11807", "stringValue11808"]) { + inputField68: [ID!] + inputField69: [ID!] + inputField70: [Enum477!] + inputField71: Boolean + inputField72: Scalar4 +} + +input InputObject130 @Directive22(argument62 : "stringValue20326") @Directive44(argument97 : ["stringValue20327", "stringValue20328"]) { + inputField528: ID! + inputField529: ID! + inputField530: Enum965! +} + +input InputObject1300 @Directive44(argument97 : ["stringValue28282"]) { + inputField5874: InputObject1301 + inputField5877: Boolean! + inputField5878: Scalar2! + inputField5879: Scalar2 + inputField5880: String +} + +input InputObject1301 @Directive44(argument97 : ["stringValue28283"]) { + inputField5875: Scalar2 + inputField5876: Scalar2 +} + +input InputObject1302 @Directive44(argument97 : ["stringValue28289"]) { + inputField5881: String! + inputField5882: Enum1512! +} + +input InputObject1303 @Directive44(argument97 : ["stringValue28296"]) { + inputField5883: Scalar2! +} + +input InputObject1304 @Directive44(argument97 : ["stringValue28303"]) { + inputField5884: InputObject1305! +} + +input InputObject1305 @Directive44(argument97 : ["stringValue28304"]) { + inputField5885: String! + inputField5886: String! +} + +input InputObject1306 @Directive44(argument97 : ["stringValue28312"]) { + inputField5887: String! + inputField5888: String! +} + +input InputObject1307 @Directive44(argument97 : ["stringValue28320"]) { + inputField5889: String! + inputField5890: String! + inputField5891: Scalar1 + inputField5892: String +} + +input InputObject1308 @Directive44(argument97 : ["stringValue28340"]) { + inputField5893: String! + inputField5894: String! +} + +input InputObject1309 @Directive44(argument97 : ["stringValue28355"]) { + inputField5895: String! +} + +input InputObject131 @Directive22(argument62 : "stringValue20333") @Directive44(argument97 : ["stringValue20334", "stringValue20335"]) { + inputField531: Enum683! + inputField532: Scalar2! + inputField533: String! +} + +input InputObject1310 @Directive44(argument97 : ["stringValue28361"]) { + inputField5896: Scalar2! +} + +input InputObject1311 @Directive44(argument97 : ["stringValue28367"]) { + inputField5897: Scalar2! + inputField5898: String + inputField5899: String +} + +input InputObject1312 @Directive44(argument97 : ["stringValue28373"]) { + inputField5900: String! + inputField5901: Boolean + inputField5902: Boolean +} + +input InputObject1313 @Directive44(argument97 : ["stringValue28380"]) { + inputField5903: [String]! + inputField5904: String! +} + +input InputObject1314 @Directive44(argument97 : ["stringValue28386"]) { + inputField5905: [InputObject1315]! +} + +input InputObject1315 @Directive44(argument97 : ["stringValue28387"]) { + inputField5906: String! + inputField5907: Enum1513! + inputField5908: Scalar2 + inputField5909: Scalar2! + inputField5910: Scalar3 + inputField5911: Scalar3 + inputField5912: Scalar4 + inputField5913: Float + inputField5914: Scalar4 + inputField5915: Scalar2 + inputField5916: Scalar2 + inputField5917: Scalar3 + inputField5918: Float + inputField5919: String + inputField5920: Boolean + inputField5921: Scalar2 + inputField5922: Scalar2 + inputField5923: Scalar4 + inputField5924: Scalar2 + inputField5925: Scalar2 + inputField5926: Enum1514 + inputField5927: [InputObject1316] + inputField5933: InputObject1318 + inputField5969: Enum1520 + inputField5970: InputObject1321 +} + +input InputObject1316 @Directive44(argument97 : ["stringValue28390"]) { + inputField5928: InputObject1317! + inputField5932: Scalar3! +} + +input InputObject1317 @Directive44(argument97 : ["stringValue28391"]) { + inputField5929: Float! + inputField5930: String! + inputField5931: Scalar2 +} + +input InputObject1318 @Directive44(argument97 : ["stringValue28392"]) { + inputField5934: String + inputField5935: String + inputField5936: String + inputField5937: Boolean + inputField5938: Enum1515 + inputField5939: Scalar4 + inputField5940: Scalar4 + inputField5941: Scalar4 + inputField5942: Scalar4 + inputField5943: Float + inputField5944: Scalar1 + inputField5945: Scalar2 + inputField5946: InputObject1319 + inputField5955: Scalar2 + inputField5956: Boolean + inputField5957: [InputObject1320] + inputField5961: Enum1513 + inputField5962: Enum1519 + inputField5963: Scalar4 + inputField5964: Scalar4 + inputField5965: Scalar4 + inputField5966: String + inputField5967: String + inputField5968: String +} + +input InputObject1319 @Directive44(argument97 : ["stringValue28394"]) { + inputField5947: String! + inputField5948: String + inputField5949: String + inputField5950: Enum1516 + inputField5951: Boolean + inputField5952: Scalar2 + inputField5953: Boolean + inputField5954: [InputObject1318] +} + +input InputObject132 @Directive22(argument62 : "stringValue20339") @Directive44(argument97 : ["stringValue20340", "stringValue20341"]) { + inputField534: ID! + inputField535: String! +} + +input InputObject1320 @Directive44(argument97 : ["stringValue28396"]) { + inputField5958: Enum1517! + inputField5959: [String] + inputField5960: Enum1518 +} + +input InputObject1321 @Directive44(argument97 : ["stringValue28401"]) { + inputField5971: Scalar1! +} + +input InputObject1322 @Directive44(argument97 : ["stringValue28423"]) { + inputField5972: [InputObject1323]! +} + +input InputObject1323 @Directive44(argument97 : ["stringValue28424"]) { + inputField5973: String! + inputField5974: Enum1521! + inputField5975: String +} + +input InputObject1324 @Directive44(argument97 : ["stringValue28431"]) { + inputField5976: [String]! + inputField5977: String! + inputField5978: Scalar1 + inputField5979: Scalar1 + inputField5980: Scalar1 +} + +input InputObject1325 @Directive44(argument97 : ["stringValue28437"]) { + inputField5981: [InputObject1326]! +} + +input InputObject1326 @Directive44(argument97 : ["stringValue28438"]) { + inputField5982: Scalar2! + inputField5983: String! + inputField5984: String! + inputField5985: [InputObject1327]! +} + +input InputObject1327 @Directive44(argument97 : ["stringValue28439"]) { + inputField5986: Enum1522! + inputField5987: InputObject1317 + inputField5988: InputObject1317 + inputField5989: InputObject1328 + inputField5992: InputObject1328 +} + +input InputObject1328 @Directive44(argument97 : ["stringValue28441"]) { + inputField5990: InputObject1317 + inputField5991: InputObject1317 +} + +input InputObject1329 @Directive44(argument97 : ["stringValue28449"]) { + inputField5993: [String]! + inputField5994: InputObject1330! +} + +input InputObject133 @Directive22(argument62 : "stringValue20343") @Directive44(argument97 : ["stringValue20344", "stringValue20345"]) { + inputField536: [ID!]! +} + +input InputObject1330 @Directive44(argument97 : ["stringValue28450"]) { + inputField5995: Int + inputField5996: Boolean +} + +input InputObject1331 @Directive44(argument97 : ["stringValue28456"]) { + inputField5997: [String]! + inputField5998: Scalar1 +} + +input InputObject1332 @Directive44(argument97 : ["stringValue28462"]) { + inputField5999: String! + inputField6000: [InputObject1333] + inputField6005: String + inputField6006: String +} + +input InputObject1333 @Directive44(argument97 : ["stringValue28463"]) { + inputField6001: String! + inputField6002: String + inputField6003: String + inputField6004: Scalar1 +} + +input InputObject1334 @Directive44(argument97 : ["stringValue28469"]) { + inputField6007: [InputObject1315]! +} + +input InputObject1335 @Directive44(argument97 : ["stringValue28476"]) { + inputField6008: Scalar2! + inputField6009: Enum1523 +} + +input InputObject1336 @Directive44(argument97 : ["stringValue28490"]) { + inputField6010: Scalar2! + inputField6011: String + inputField6012: Boolean + inputField6013: String + inputField6014: Scalar2 +} + +input InputObject1337 @Directive44(argument97 : ["stringValue28496"]) { + inputField6015: Scalar2! + inputField6016: String! + inputField6017: String! + inputField6018: String! + inputField6019: String! +} + +input InputObject1338 @Directive44(argument97 : ["stringValue28502"]) { + inputField6020: Scalar2 + inputField6021: String + inputField6022: [Scalar2] + inputField6023: [Scalar2] + inputField6024: String + inputField6025: Enum1525! +} + +input InputObject1339 @Directive44(argument97 : ["stringValue28509"]) { + inputField6026: Enum1526! + inputField6027: InputObject1340 + inputField6039: String! +} + +input InputObject134 @Directive22(argument62 : "stringValue20350") @Directive44(argument97 : ["stringValue20351", "stringValue20352"]) { + inputField537: InputObject135 + inputField586: InputObject151 + inputField629: ID! + inputField630: String + inputField631: String +} + +input InputObject1340 @Directive44(argument97 : ["stringValue28511"]) { + inputField6028: Boolean + inputField6029: Scalar2 + inputField6030: Int + inputField6031: Boolean + inputField6032: Boolean + inputField6033: Boolean + inputField6034: String + inputField6035: String + inputField6036: String + inputField6037: Boolean + inputField6038: Scalar2 +} + +input InputObject1341 @Directive44(argument97 : ["stringValue28520"]) { + inputField6040: Scalar2 + inputField6041: InputObject1342 + inputField6078: [Enum1528] + inputField6079: [Enum1528] +} + +input InputObject1342 @Directive44(argument97 : ["stringValue28521"]) { + inputField6042: InputObject1343 + inputField6058: InputObject1344 + inputField6063: InputObject1345 + inputField6070: InputObject1346 + inputField6076: String + inputField6077: Boolean +} + +input InputObject1343 @Directive44(argument97 : ["stringValue28522"]) { + inputField6043: String + inputField6044: Boolean + inputField6045: String + inputField6046: String + inputField6047: [String] + inputField6048: String + inputField6049: String + inputField6050: Boolean + inputField6051: String + inputField6052: String + inputField6053: Boolean + inputField6054: Boolean + inputField6055: String + inputField6056: Boolean + inputField6057: String +} + +input InputObject1344 @Directive44(argument97 : ["stringValue28523"]) { + inputField6059: String + inputField6060: Scalar2 + inputField6061: String + inputField6062: Boolean +} + +input InputObject1345 @Directive44(argument97 : ["stringValue28524"]) { + inputField6064: [String] + inputField6065: [String] + inputField6066: [String] + inputField6067: [String] + inputField6068: String + inputField6069: Boolean +} + +input InputObject1346 @Directive44(argument97 : ["stringValue28525"]) { + inputField6071: [InputObject1347] + inputField6075: InputObject1347 +} + +input InputObject1347 @Directive44(argument97 : ["stringValue28526"]) { + inputField6072: Scalar2 + inputField6073: String + inputField6074: Boolean +} + +input InputObject1348 @Directive44(argument97 : ["stringValue28534"]) { + inputField6080: Scalar2! +} + +input InputObject1349 @Directive44(argument97 : ["stringValue28540"]) { + inputField6081: Scalar2 + inputField6082: String +} + +input InputObject135 @Directive22(argument62 : "stringValue20353") @Directive44(argument97 : ["stringValue20354", "stringValue20355"]) { + inputField538: InputObject136 + inputField544: InputObject137 + inputField578: InputObject150 +} + +input InputObject1350 @Directive44(argument97 : ["stringValue28546"]) { + inputField6083: [InputObject1351] + inputField6095: [Enum1530] +} + +input InputObject1351 @Directive44(argument97 : ["stringValue28547"]) { + inputField6084: Scalar2! + inputField6085: Scalar4 + inputField6086: Scalar4 + inputField6087: Scalar4 + inputField6088: Scalar4 + inputField6089: Scalar2 + inputField6090: Boolean + inputField6091: Scalar2 + inputField6092: Scalar4 + inputField6093: Enum1529 + inputField6094: Scalar4 +} + +input InputObject1352 @Directive44(argument97 : ["stringValue28557"]) { + inputField6096: Scalar2 + inputField6097: String + inputField6098: InputObject1353 + inputField6101: Boolean + inputField6102: Scalar2 + inputField6103: Scalar2 +} + +input InputObject1353 @Directive44(argument97 : ["stringValue28558"]) { + inputField6099: Enum1531 + inputField6100: Scalar3 +} + +input InputObject1354 @Directive44(argument97 : ["stringValue28566"]) { + inputField6104: Scalar2! + inputField6105: Scalar2! + inputField6106: Enum1532! + inputField6107: Boolean +} + +input InputObject1355 @Directive44(argument97 : ["stringValue28573"]) { + inputField6108: Scalar2! + inputField6109: Enum1533! + inputField6110: String + inputField6111: Boolean! +} + +input InputObject1356 @Directive44(argument97 : ["stringValue28580"]) { + inputField6112: String! + inputField6113: [InputObject1357]! + inputField6116: Enum1534! + inputField6117: String! + inputField6118: String + inputField6119: String! + inputField6120: String! + inputField6121: String! + inputField6122: String! + inputField6123: Enum1535 +} + +input InputObject1357 @Directive44(argument97 : ["stringValue28581"]) { + inputField6114: Enum1532! + inputField6115: Scalar2! +} + +input InputObject1358 @Directive44(argument97 : ["stringValue28589"]) { + inputField6124: Scalar2! +} + +input InputObject1359 @Directive44(argument97 : ["stringValue28595"]) { + inputField6125: String + inputField6126: Scalar2 + inputField6127: Enum1536! + inputField6128: InputObject1360! + inputField6131: [String!]! + inputField6132: Boolean! + inputField6133: String + inputField6134: Boolean + inputField6135: Boolean + inputField6136: String + inputField6137: String +} + +input InputObject136 @Directive22(argument62 : "stringValue20356") @Directive44(argument97 : ["stringValue20357", "stringValue20358"]) { + inputField539: Int + inputField540: Int + inputField541: Int + inputField542: Int + inputField543: Int +} + +input InputObject1360 @Directive44(argument97 : ["stringValue28597"]) { + inputField6129: Scalar4! + inputField6130: Scalar4! +} + +input InputObject1361 @Directive44(argument97 : ["stringValue28607"]) { + inputField6138: Scalar2! + inputField6139: InputObject1362! + inputField6188: Scalar2 + inputField6189: Boolean +} + +input InputObject1362 @Directive44(argument97 : ["stringValue28608"]) { + inputField6140: InputObject1363 + inputField6143: InputObject1364 + inputField6156: InputObject1364 + inputField6157: InputObject1367 + inputField6166: InputObject1369 + inputField6171: InputObject1370 + inputField6175: InputObject1371 + inputField6179: InputObject1372 + inputField6183: InputObject1373 +} + +input InputObject1363 @Directive44(argument97 : ["stringValue28609"]) { + inputField6141: Scalar2! + inputField6142: String! +} + +input InputObject1364 @Directive44(argument97 : ["stringValue28610"]) { + inputField6144: Scalar2! + inputField6145: [InputObject1365]! + inputField6152: Boolean! + inputField6153: Boolean! + inputField6154: String + inputField6155: Boolean +} + +input InputObject1365 @Directive44(argument97 : ["stringValue28611"]) { + inputField6146: Scalar2! + inputField6147: Scalar2! + inputField6148: [InputObject1366]! +} + +input InputObject1366 @Directive44(argument97 : ["stringValue28612"]) { + inputField6149: Scalar2! + inputField6150: Scalar2! + inputField6151: Scalar2! +} + +input InputObject1367 @Directive44(argument97 : ["stringValue28613"]) { + inputField6158: String + inputField6159: [InputObject1368] +} + +input InputObject1368 @Directive44(argument97 : ["stringValue28614"]) { + inputField6160: Scalar2! + inputField6161: Enum1537 + inputField6162: Enum1538 + inputField6163: Enum1539 + inputField6164: Enum1540 + inputField6165: Enum1541 +} + +input InputObject1369 @Directive44(argument97 : ["stringValue28620"]) { + inputField6167: Scalar2! + inputField6168: Scalar2! + inputField6169: Scalar2! + inputField6170: String! +} + +input InputObject137 @Directive22(argument62 : "stringValue20359") @Directive44(argument97 : ["stringValue20360", "stringValue20361"]) { + inputField545: [InputObject138!] + inputField576: Float + inputField577: Float +} + +input InputObject1370 @Directive44(argument97 : ["stringValue28621"]) { + inputField6172: Scalar4 + inputField6173: Scalar4 + inputField6174: Scalar2! +} + +input InputObject1371 @Directive44(argument97 : ["stringValue28622"]) { + inputField6176: Scalar2! + inputField6177: Enum1542! + inputField6178: Int! +} + +input InputObject1372 @Directive44(argument97 : ["stringValue28624"]) { + inputField6180: String + inputField6181: String + inputField6182: String +} + +input InputObject1373 @Directive44(argument97 : ["stringValue28625"]) { + inputField6184: Scalar2! + inputField6185: InputObject1374 +} + +input InputObject1374 @Directive44(argument97 : ["stringValue28626"]) { + inputField6186: Enum1543! + inputField6187: String +} + +input InputObject1375 @Directive44(argument97 : ["stringValue28900"]) { + inputField6190: Scalar2! + inputField6191: Scalar2! + inputField6192: Enum1532! +} + +input InputObject1376 @Directive44(argument97 : ["stringValue28906"]) { + inputField6193: Scalar2! + inputField6194: InputObject1360 + inputField6195: [String!] + inputField6196: Enum1533 + inputField6197: String + inputField6198: Boolean! + inputField6199: String + inputField6200: Boolean + inputField6201: Boolean + inputField6202: String + inputField6203: String +} + +input InputObject1377 @Directive44(argument97 : ["stringValue28912"]) { + inputField6204: Scalar2! + inputField6205: Enum1534 + inputField6206: String + inputField6207: String + inputField6208: String + inputField6209: String + inputField6210: String + inputField6211: String + inputField6212: [InputObject1357] + inputField6213: [InputObject1357] + inputField6214: Enum1535 +} + +input InputObject1378 @Directive44(argument97 : ["stringValue28919"]) { + inputField6215: Scalar2! + inputField6216: String! + inputField6217: String! + inputField6218: String! + inputField6219: String + inputField6220: Scalar2 + inputField6221: String +} + +input InputObject1379 @Directive44(argument97 : ["stringValue28925"]) { + inputField6222: String +} + +input InputObject138 @Directive22(argument62 : "stringValue20362") @Directive44(argument97 : ["stringValue20363", "stringValue20364"]) { + inputField546: Enum672 + inputField547: Enum675 + inputField548: Enum674 + inputField549: InputObject139 + inputField574: Boolean + inputField575: Enum671 +} + +input InputObject1380 @Directive44(argument97 : ["stringValue28942"]) { + inputField6223: String + inputField6224: String + inputField6225: Scalar2 + inputField6226: String + inputField6227: String + inputField6228: InputObject1381 + inputField6231: String + inputField6232: Boolean + inputField6233: String +} + +input InputObject1381 @Directive44(argument97 : ["stringValue28943"]) { + inputField6229: Float! + inputField6230: Float! +} + +input InputObject1382 @Directive44(argument97 : ["stringValue28953"]) { + inputField6234: String! +} + +input InputObject1383 @Directive44(argument97 : ["stringValue28960"]) { + inputField6235: String + inputField6236: String + inputField6237: String +} + +input InputObject1384 @Directive22(argument62 : "stringValue30042") @Directive44(argument97 : ["stringValue30043", "stringValue30044"]) { + inputField6238: String + inputField6239: String + inputField6240: Int + inputField6241: Int + inputField6242: Int +} + +input InputObject1385 @Directive22(argument62 : "stringValue30090") @Directive44(argument97 : ["stringValue30091", "stringValue30092"]) { + inputField6243: [Enum158!] +} + +input InputObject1386 @Directive22(argument62 : "stringValue30141") @Directive44(argument97 : ["stringValue30142", "stringValue30143"]) { + inputField6244: [String] = [] +} + +input InputObject1387 @Directive22(argument62 : "stringValue30163") @Directive44(argument97 : ["stringValue30164", "stringValue30165"]) { + inputField6245: ID + inputField6246: Scalar2 +} + +input InputObject1388 @Directive22(argument62 : "stringValue30172") @Directive44(argument97 : ["stringValue30173", "stringValue30174"]) { + inputField6247: ID + inputField6248: ID + inputField6249: Scalar3 + inputField6250: Scalar3 + inputField6251: Enum1628 + inputField6252: Enum1629 + inputField6253: Int +} + +input InputObject139 @Directive22(argument62 : "stringValue20365") @Directive44(argument97 : ["stringValue20366", "stringValue20367"]) { + inputField550: Scalar2 + inputField551: Float + inputField552: InputObject140 + inputField559: InputObject143 + inputField564: InputObject146 + inputField569: InputObject148 + inputField571: InputObject149 +} + +input InputObject1390 @Directive22(argument62 : "stringValue30201") @Directive44(argument97 : ["stringValue30202", "stringValue30203"]) { + inputField6255: [String!] + inputField6256: InputObject1 +} + +input InputObject1391 @Directive22(argument62 : "stringValue30208") @Directive44(argument97 : ["stringValue30209", "stringValue30210"]) { + inputField6257: ID + inputField6258: ID +} + +input InputObject1392 @Directive22(argument62 : "stringValue30221") @Directive44(argument97 : ["stringValue30222", "stringValue30223"]) { + inputField6259: ID + inputField6260: ID +} + +input InputObject1393 @Directive22(argument62 : "stringValue30233") @Directive44(argument97 : ["stringValue30234", "stringValue30235"]) { + inputField6261: ID + inputField6262: ID +} + +input InputObject1394 @Directive22(argument62 : "stringValue30246") @Directive44(argument97 : ["stringValue30247", "stringValue30248"]) { + inputField6263: Enum1630 + inputField6264: [ID!] + inputField6265: InputObject1395 + inputField6270: InputObject1396 + inputField6273: InputObject1397 + inputField6280: Boolean +} + +input InputObject1395 @Directive20(argument58 : "stringValue30256", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30253") @Directive44(argument97 : ["stringValue30254", "stringValue30255"]) { + inputField6266: Scalar2 + inputField6267: Boolean + inputField6268: Boolean + inputField6269: String +} + +input InputObject1396 @Directive22(argument62 : "stringValue30257") @Directive44(argument97 : ["stringValue30258", "stringValue30259"]) { + inputField6271: [String!] + inputField6272: [String!] +} + +input InputObject1397 @Directive20(argument58 : "stringValue30261", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30260") @Directive44(argument97 : ["stringValue30262", "stringValue30263"]) { + inputField6274: InputObject1398 + inputField6276: Boolean + inputField6277: Boolean + inputField6278: String + inputField6279: Scalar2 +} + +input InputObject1398 @Directive20(argument58 : "stringValue30265", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue30264") @Directive44(argument97 : ["stringValue30266", "stringValue30267"]) { + inputField6275: [Enum378!] +} + +input InputObject1399 @Directive20(argument58 : "stringValue30284", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue30283") @Directive44(argument97 : ["stringValue30285", "stringValue30286"]) { + inputField6281: [String] + inputField6282: [String] + inputField6283: Int + inputField6284: String + inputField6285: String + inputField6286: [Int] + inputField6287: [Int] + inputField6288: String + inputField6289: String + inputField6290: String + inputField6291: String + inputField6292: [String] + inputField6293: [Int] + inputField6294: Int + inputField6295: String + inputField6296: Scalar2 + inputField6297: [String] + inputField6298: String + inputField6299: Int + inputField6300: String + inputField6301: String + inputField6302: Int + inputField6303: String + inputField6304: String + inputField6305: String + inputField6306: String + inputField6307: String + inputField6308: [Int] + inputField6309: String + inputField6310: [String] + inputField6311: Scalar2 + inputField6312: String + inputField6313: String + inputField6314: String + inputField6315: String + inputField6316: [String] + inputField6317: Scalar2 + inputField6318: Scalar2 + inputField6319: Scalar2 + inputField6320: Scalar2 + inputField6321: [Scalar2] + inputField6322: [String] + inputField6323: Scalar2 + inputField6324: String + inputField6325: String + inputField6326: String + inputField6327: Scalar2 + inputField6328: [Scalar2] + inputField6329: [String] + inputField6330: [Int] + inputField6331: [Int] + inputField6332: Scalar2 + inputField6333: String + inputField6334: [Int] + inputField6335: [String] + inputField6336: [Int] + inputField6337: String + inputField6338: String + inputField6339: Int + inputField6340: String + inputField6341: String + inputField6342: [String] + inputField6343: [String] + inputField6344: Int + inputField6345: String + inputField6346: String + inputField6347: String + inputField6348: Int + inputField6349: [Int] + inputField6350: Scalar2 + inputField6351: [Int] + inputField6352: [Int] + inputField6353: String + inputField6354: Int + inputField6355: String + inputField6356: String + inputField6357: Int + inputField6358: Int + inputField6359: Int + inputField6360: [String] + inputField6361: [String] + inputField6362: [Int] + inputField6363: Int + inputField6364: String + inputField6365: Float + inputField6366: [String] + inputField6367: [Int] + inputField6368: Float + inputField6369: String + inputField6370: String + inputField6371: [Int] + inputField6372: Int + inputField6373: Int + inputField6374: String + inputField6375: Int + inputField6376: Float + inputField6377: Int + inputField6378: Int + inputField6379: Int + inputField6380: Int + inputField6381: String + inputField6382: String + inputField6383: [Int] + inputField6384: [String] + inputField6385: Scalar2 + inputField6386: Scalar2 + inputField6387: Int + inputField6388: Int + inputField6389: Int + inputField6390: String + inputField6391: Scalar2 + inputField6392: String + inputField6393: String + inputField6394: String + inputField6395: String + inputField6396: String + inputField6397: Scalar2 + inputField6398: [String] + inputField6399: String + inputField6400: String + inputField6401: [Int] + inputField6402: String + inputField6403: [String] + inputField6404: String + inputField6405: Int + inputField6406: Int + inputField6407: Int + inputField6408: Boolean + inputField6409: [Int] + inputField6410: String + inputField6411: Float + inputField6412: String + inputField6413: [String] + inputField6414: [String] + inputField6415: Int + inputField6416: [String] + inputField6417: String + inputField6418: String + inputField6419: String + inputField6420: String + inputField6421: String + inputField6422: String + inputField6423: String + inputField6424: String + inputField6425: String + inputField6426: Int + inputField6427: String + inputField6428: Int + inputField6429: String + inputField6430: Int + inputField6431: String + inputField6432: String + inputField6433: [Int] + inputField6434: Int + inputField6435: Int + inputField6436: Scalar2 + inputField6437: [String] + inputField6438: String + inputField6439: String + inputField6440: String + inputField6441: String + inputField6442: String + inputField6443: String + inputField6444: String + inputField6445: [Scalar2] + inputField6446: String + inputField6447: [Int] + inputField6448: String + inputField6449: Scalar2 + inputField6450: String + inputField6451: Int + inputField6452: String + inputField6453: [String] + inputField6454: [Int] + inputField6455: String + inputField6456: String + inputField6457: String + inputField6458: String + inputField6459: String + inputField6460: String + inputField6461: [String] + inputField6462: String + inputField6463: Int + inputField6464: Boolean + inputField6465: Boolean + inputField6466: Boolean + inputField6467: Boolean + inputField6468: Boolean + inputField6469: Boolean + inputField6470: Boolean + inputField6471: Boolean + inputField6472: Boolean + inputField6473: Boolean + inputField6474: Boolean + inputField6475: Boolean + inputField6476: Boolean + inputField6477: Boolean + inputField6478: Boolean + inputField6479: Boolean + inputField6480: Boolean + inputField6481: Boolean + inputField6482: Boolean + inputField6483: Boolean + inputField6484: Boolean + inputField6485: Boolean + inputField6486: Boolean + inputField6487: Boolean + inputField6488: Boolean + inputField6489: Boolean + inputField6490: Boolean + inputField6491: Boolean + inputField6492: Boolean + inputField6493: Boolean + inputField6494: Boolean + inputField6495: Boolean + inputField6496: Boolean + inputField6497: Boolean + inputField6498: Boolean + inputField6499: Boolean + inputField6500: Boolean + inputField6501: Boolean + inputField6502: Boolean + inputField6503: [InputObject1400] + inputField6506: String + inputField6507: String + inputField6508: Scalar2 + inputField6509: Int + inputField6510: String + inputField6511: Boolean + inputField6512: [String] + inputField6513: Boolean + inputField6514: Boolean + inputField6515: String + inputField6516: [String] + inputField6517: Int + inputField6518: Int + inputField6519: [String] + inputField6520: [String] + inputField6521: String + inputField6522: Int + inputField6523: Boolean + inputField6524: String + inputField6525: [String] + inputField6526: Boolean + inputField6527: Boolean +} + +input InputObject14 @Directive22(argument62 : "stringValue11813") @Directive44(argument97 : ["stringValue11814", "stringValue11815"]) { + inputField73: Enum478 + inputField74: Enum476 +} + +input InputObject140 @Directive20(argument58 : "stringValue20369", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20368") @Directive44(argument97 : ["stringValue20370", "stringValue20371"]) { + inputField553: [InputObject141!]! +} + +input InputObject1400 @Directive22(argument62 : "stringValue30287") @Directive44(argument97 : ["stringValue30288", "stringValue30289"]) { + inputField6504: String + inputField6505: [String] +} + +input InputObject1401 @Directive22(argument62 : "stringValue30678") @Directive44(argument97 : ["stringValue30679", "stringValue30680"]) { + inputField6528: Boolean + inputField6529: Int + inputField6530: Int + inputField6531: String +} + +input InputObject1402 @Directive22(argument62 : "stringValue30742") @Directive44(argument97 : ["stringValue30743", "stringValue30744"]) { + inputField6532: String + inputField6533: String + inputField6534: InputObject58 + inputField6535: [String] +} + +input InputObject1403 @Directive22(argument62 : "stringValue30779") @Directive44(argument97 : ["stringValue30780", "stringValue30781"]) { + inputField6536: [Enum158!] + inputField6537: Enum1641 + inputField6538: [Enum164] = [EnumValue4129] + inputField6539: String = "stringValue30785" + inputField6540: [String] = [] + inputField6541: Boolean = false +} + +input InputObject1405 @Directive22(argument62 : "stringValue30933") @Directive44(argument97 : ["stringValue30934", "stringValue30935"]) { + inputField6546: Enum1642 +} + +input InputObject1407 @Directive22(argument62 : "stringValue31110") @Directive44(argument97 : ["stringValue31111", "stringValue31112"]) { + inputField6550: String! + inputField6551: String! +} + +input InputObject1408 @Directive22(argument62 : "stringValue31122") @Directive44(argument97 : ["stringValue31123", "stringValue31124"]) { + inputField6552: String + inputField6553: [Enum1644] +} + +input InputObject1409 @Directive22(argument62 : "stringValue31197") @Directive44(argument97 : ["stringValue31198", "stringValue31199"]) { + inputField6554: String + inputField6555: ID @deprecated + inputField6556: ID +} + +input InputObject141 @Directive20(argument58 : "stringValue20373", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20372") @Directive44(argument97 : ["stringValue20374", "stringValue20375"]) { + inputField554: InputObject142 + inputField558: Scalar2! +} + +input InputObject1413 @Directive22(argument62 : "stringValue31282") @Directive44(argument97 : ["stringValue31283", "stringValue31284"]) { + inputField6569: ID! + inputField6570: Enum1648! + inputField6571: Scalar3 + inputField6572: Scalar3 + inputField6573: [Enum1649] +} + +input InputObject1414 @Directive22(argument62 : "stringValue31337") @Directive44(argument97 : ["stringValue31338", "stringValue31339"]) { + inputField6574: ID + inputField6575: Enum544 + inputField6576: Enum1651 +} + +input InputObject1416 @Directive22(argument62 : "stringValue31393") @Directive44(argument97 : ["stringValue31394", "stringValue31395"]) { + inputField6582: String + inputField6583: InputObject1417 + inputField6587: String + inputField6588: Enum464 +} + +input InputObject1417 @Directive22(argument62 : "stringValue31396") @Directive44(argument97 : ["stringValue31397", "stringValue31398"]) { + inputField6584: Int + inputField6585: Int + inputField6586: String +} + +input InputObject142 @Directive20(argument58 : "stringValue20377", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20376") @Directive44(argument97 : ["stringValue20378", "stringValue20379"]) { + inputField555: Int! + inputField556: Int! + inputField557: Enum673! +} + +input InputObject1422 @Directive22(argument62 : "stringValue31525") @Directive44(argument97 : ["stringValue31526", "stringValue31527", "stringValue31528"]) { + inputField6595: String + inputField6596: Boolean + inputField6597: String + inputField6598: String + inputField6599: String + inputField6600: String +} + +input InputObject1423 @Directive22(argument62 : "stringValue31561") @Directive44(argument97 : ["stringValue31562", "stringValue31563", "stringValue31564"]) { + inputField6601: String! + inputField6602: Enum1655! + inputField6603: String + inputField6604: Enum1656 + inputField6605: [Enum1654] + inputField6606: InputObject1424 + inputField6609: Boolean + inputField6610: InputObject1425 + inputField6613: InputObject1426 + inputField6616: InputObject1425 + inputField6617: Int + inputField6618: Int + inputField6619: String + inputField6620: String + inputField6621: [Enum1655] @deprecated +} + +input InputObject1424 @Directive22(argument62 : "stringValue31573") @Directive44(argument97 : ["stringValue31574", "stringValue31575", "stringValue31576"]) { + inputField6607: Enum1657 + inputField6608: Enum1658 +} + +input InputObject1425 @Directive22(argument62 : "stringValue31585") @Directive44(argument97 : ["stringValue31586", "stringValue31587", "stringValue31588"]) { + inputField6611: Int + inputField6612: Boolean +} + +input InputObject1426 @Directive22(argument62 : "stringValue31589") @Directive44(argument97 : ["stringValue31590", "stringValue31591", "stringValue31592"]) { + inputField6614: Scalar4 + inputField6615: Scalar4 +} + +input InputObject1427 @Directive22(argument62 : "stringValue31617") @Directive44(argument97 : ["stringValue31618", "stringValue31619", "stringValue31620"]) { + inputField6622: String! + inputField6623: String! + inputField6624: Enum1656 + inputField6625: [Enum1654] +} + +input InputObject1428 @Directive22(argument62 : "stringValue31650") @Directive44(argument97 : ["stringValue31651", "stringValue31652", "stringValue31653"]) { + inputField6626: String! + inputField6627: String! + inputField6628: InputObject1426 + inputField6629: [Enum1654] +} + +input InputObject1429 @Directive22(argument62 : "stringValue31679") @Directive44(argument97 : ["stringValue31680", "stringValue31681"]) { + inputField6630: [Enum164] = [EnumValue4129] + inputField6631: [ID] + inputField6632: String + inputField6633: String +} + +input InputObject143 @Directive20(argument58 : "stringValue20381", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20380") @Directive44(argument97 : ["stringValue20382", "stringValue20383"]) { + inputField560: [InputObject144!]! +} + +input InputObject1430 @Directive22(argument62 : "stringValue31675") @Directive44(argument97 : ["stringValue31676", "stringValue31677"]) { + inputField6634: [Enum164] = [EnumValue4129] + inputField6635: [ID] + inputField6636: String + inputField6637: String + inputField6638: String +} + +input InputObject1431 @Directive22(argument62 : "stringValue31683") @Directive44(argument97 : ["stringValue31684", "stringValue31685"]) { + inputField6639: [Enum164] = [EnumValue4129] + inputField6640: [ID] + inputField6641: InputObject1432 + inputField6644: [InputObject1433] +} + +input InputObject1432 @Directive22(argument62 : "stringValue31686") @Directive44(argument97 : ["stringValue31687", "stringValue31688"]) { + inputField6642: Scalar3 + inputField6643: Scalar3 +} + +input InputObject1433 @Directive22(argument62 : "stringValue31689") @Directive44(argument97 : ["stringValue31690", "stringValue31691"]) { + inputField6645: String + inputField6646: String +} + +input InputObject1434 @Directive22(argument62 : "stringValue31696") @Directive44(argument97 : ["stringValue31697", "stringValue31698"]) { + inputField6647: ID! +} + +input InputObject1436 @Directive22(argument62 : "stringValue32926") @Directive44(argument97 : ["stringValue32927", "stringValue32928"]) { + inputField6650: Enum1661 +} + +input InputObject144 @Directive20(argument58 : "stringValue20385", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20384") @Directive44(argument97 : ["stringValue20386", "stringValue20387"]) { + inputField561: InputObject145 + inputField563: Scalar2! +} + +input InputObject1441 @Directive22(argument62 : "stringValue31877") @Directive44(argument97 : ["stringValue31878", "stringValue31879"]) { + inputField6664: [String] = [] +} + +input InputObject1442 @Directive22(argument62 : "stringValue31894") @Directive44(argument97 : ["stringValue31895", "stringValue31896"]) { + inputField6665: Enum1663 +} + +input InputObject1446 @Directive22(argument62 : "stringValue31937") @Directive44(argument97 : ["stringValue31938", "stringValue31939"]) { + inputField6672: String + inputField6673: Boolean +} + +input InputObject1447 @Directive22(argument62 : "stringValue32086") @Directive44(argument97 : ["stringValue32087", "stringValue32088"]) { + inputField6674: [ID!]! + inputField6675: Enum1630! + inputField6676: Boolean + inputField6677: Boolean + inputField6678: String +} + +input InputObject1448 @Directive22(argument62 : "stringValue32171") @Directive44(argument97 : ["stringValue32172", "stringValue32173"]) { + inputField6679: String + inputField6680: Enum1674 + inputField6681: String + inputField6682: Int + inputField6683: Int + inputField6684: Float + inputField6685: Float + inputField6686: String + inputField6687: String +} + +input InputObject1449 @Directive42(argument96 : ["stringValue32194"]) @Directive44(argument97 : ["stringValue32195", "stringValue32196"]) { + inputField6688: String + inputField6689: String + inputField6690: String + inputField6691: String + inputField6692: [String] + inputField6693: [InputObject1450] + inputField6696: [InputObject1451] + inputField6699: [InputObject1452] +} + +input InputObject145 @Directive20(argument58 : "stringValue20389", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20388") @Directive44(argument97 : ["stringValue20390", "stringValue20391"]) { + inputField562: Int! +} + +input InputObject1450 @Directive42(argument96 : ["stringValue32197"]) @Directive44(argument97 : ["stringValue32198", "stringValue32199"]) { + inputField6694: String + inputField6695: [String] +} + +input InputObject1451 @Directive42(argument96 : ["stringValue32200"]) @Directive44(argument97 : ["stringValue32201", "stringValue32202"]) { + inputField6697: String! + inputField6698: String! +} + +input InputObject1452 @Directive42(argument96 : ["stringValue32203"]) @Directive44(argument97 : ["stringValue32204", "stringValue32205"]) { + inputField6700: String! + inputField6701: [InputObject1453] +} + +input InputObject1453 @Directive42(argument96 : ["stringValue32206"]) @Directive44(argument97 : ["stringValue32207", "stringValue32208"]) { + inputField6702: String! + inputField6703: String! +} + +input InputObject1454 @Directive22(argument62 : "stringValue32476") @Directive44(argument97 : ["stringValue32477", "stringValue32478"]) { + inputField6704: [ID!]! + inputField6705: Enum982 + inputField6706: InputObject245 + inputField6707: [String] +} + +input InputObject1455 @Directive22(argument62 : "stringValue32562") @Directive44(argument97 : ["stringValue32563", "stringValue32564"]) { + inputField6708: InputObject1456! + inputField6713: InputObject1458! + inputField6720: [InputObject1459!] + inputField6723: InputObject1460! +} + +input InputObject1456 @Directive22(argument62 : "stringValue32565") @Directive44(argument97 : ["stringValue32566", "stringValue32567"]) { + inputField6709: Scalar2! + inputField6710: InputObject1457 +} + +input InputObject1457 @Directive22(argument62 : "stringValue32568") @Directive44(argument97 : ["stringValue32569", "stringValue32570"]) { + inputField6711: Boolean! + inputField6712: [String!] +} + +input InputObject1458 @Directive22(argument62 : "stringValue32571") @Directive44(argument97 : ["stringValue32572", "stringValue32573"]) { + inputField6714: [Enum907!] + inputField6715: Enum891 + inputField6716: Enum886 + inputField6717: String + inputField6718: String + inputField6719: String +} + +input InputObject1459 @Directive22(argument62 : "stringValue32574") @Directive44(argument97 : ["stringValue32575", "stringValue32576"]) { + inputField6721: Enum1685! + inputField6722: Enum1686! +} + +input InputObject146 @Directive20(argument58 : "stringValue20393", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20392") @Directive44(argument97 : ["stringValue20394", "stringValue20395"]) { + inputField565: [InputObject147!]! +} + +input InputObject1460 @Directive22(argument62 : "stringValue32583") @Directive44(argument97 : ["stringValue32584", "stringValue32585"]) { + inputField6724: Int + inputField6725: String +} + +input InputObject1461 @Directive22(argument62 : "stringValue32592") @Directive44(argument97 : ["stringValue32593", "stringValue32594"]) { + inputField6726: InputObject1456! + inputField6727: InputObject1458! +} + +input InputObject1462 @Directive20(argument58 : "stringValue32859", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue32858") @Directive44(argument97 : ["stringValue32860", "stringValue32861"]) { + inputField6728: String + inputField6729: String + inputField6730: String! +} + +input InputObject1463 @Directive22(argument62 : "stringValue32867") @Directive44(argument97 : ["stringValue32868", "stringValue32869"]) { + inputField6731: InputObject1464! + inputField6757: Int! + inputField6758: Int! + inputField6759: Scalar2 + inputField6760: [InputObject23!] + inputField6761: Enum1689 + inputField6762: String! +} + +input InputObject1464 @Directive22(argument62 : "stringValue32870") @Directive44(argument97 : ["stringValue32871", "stringValue32872"]) { + inputField6732: ID + inputField6733: ID + inputField6734: [ID!] + inputField6735: [Enum474!] + inputField6736: [Enum474!] + inputField6737: InputObject1465 + inputField6740: InputObject1465 + inputField6741: ID + inputField6742: [ID!] + inputField6743: Scalar4 + inputField6744: Scalar4 + inputField6745: [ID!] + inputField6746: [ID!] + inputField6747: Scalar4 + inputField6748: Scalar4 + inputField6749: [ID!] + inputField6750: [ID!] + inputField6751: [ID!] + inputField6752: [ID!] + inputField6753: [ID!] + inputField6754: [String!] + inputField6755: [ID!] + inputField6756: [ID!] +} + +input InputObject1465 @Directive22(argument62 : "stringValue32873") @Directive44(argument97 : ["stringValue32874", "stringValue32875"]) { + inputField6738: Scalar3 + inputField6739: Scalar3 +} + +input InputObject1466 @Directive42(argument96 : ["stringValue32879"]) @Directive44(argument97 : ["stringValue32880", "stringValue32881"]) { + inputField6763: InputObject9! + inputField6764: Int + inputField6765: Int + inputField6766: [InputObject12!] +} + +input InputObject1467 @Directive22(argument62 : "stringValue32882") @Directive44(argument97 : ["stringValue32883", "stringValue32884"]) { + inputField6767: InputObject1464! + inputField6768: Enum1689 + inputField6769: Int +} + +input InputObject1468 @Directive22(argument62 : "stringValue32885") @Directive44(argument97 : ["stringValue32886", "stringValue32887"]) { + inputField6770: InputObject13! + inputField6771: Enum1689 + inputField6772: Int + inputField6773: Int + inputField6774: Scalar2 + inputField6775: [InputObject14!] +} + +input InputObject1469 @Directive42(argument96 : ["stringValue32891"]) @Directive44(argument97 : ["stringValue32892"]) { + inputField6776: String + inputField6777: String +} + +input InputObject147 @Directive20(argument58 : "stringValue20397", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20396") @Directive44(argument97 : ["stringValue20398", "stringValue20399"]) { + inputField566: InputObject142! + inputField567: InputObject145! + inputField568: Scalar2! +} + +input InputObject1470 @Directive22(argument62 : "stringValue32988") @Directive44(argument97 : ["stringValue32989", "stringValue32990"]) { + inputField6778: InputObject1471 + inputField6844: String + inputField6845: String + inputField6846: Enum1699 + inputField6847: InputObject1477 +} + +input InputObject1471 @Directive22(argument62 : "stringValue32991") @Directive44(argument97 : ["stringValue32992", "stringValue32993"]) { + inputField6779: Enum1694 + inputField6780: InputObject1472 + inputField6843: String +} + +input InputObject1472 @Directive22(argument62 : "stringValue32998") @Directive44(argument97 : ["stringValue32999", "stringValue33000"]) { + inputField6781: InputObject1473 +} + +input InputObject1473 @Directive22(argument62 : "stringValue33001") @Directive44(argument97 : ["stringValue33002", "stringValue33003"]) { + inputField6782: Int + inputField6783: String + inputField6784: String + inputField6785: InputObject1474 + inputField6836: InputObject1488 + inputField6842: [String] +} + +input InputObject1474 @Directive22(argument62 : "stringValue33004") @Directive44(argument97 : ["stringValue33005", "stringValue33006"]) { + inputField6786: Boolean + inputField6787: [Int] + inputField6788: [Int] + inputField6789: InputObject1475 + inputField6797: InputObject1478 + inputField6810: InputObject1481 + inputField6813: InputObject1482 + inputField6820: InputObject1483 + inputField6822: InputObject1484 + inputField6825: InputObject1485 + inputField6829: InputObject1486 + inputField6832: InputObject1487 +} + +input InputObject1475 @Directive22(argument62 : "stringValue33007") @Directive44(argument97 : ["stringValue33008", "stringValue33009"]) { + inputField6790: [String] + inputField6791: InputObject1476 + inputField6796: Scalar2 +} + +input InputObject1476 @Directive22(argument62 : "stringValue33010") @Directive44(argument97 : ["stringValue33011", "stringValue33012"]) { + inputField6792: InputObject1477 + inputField6795: InputObject1477 +} + +input InputObject1477 @Directive22(argument62 : "stringValue33013") @Directive44(argument97 : ["stringValue33014", "stringValue33015"]) { + inputField6793: Float + inputField6794: Float +} + +input InputObject1478 @Directive22(argument62 : "stringValue33016") @Directive44(argument97 : ["stringValue33017", "stringValue33018"]) { + inputField6798: Scalar2 + inputField6799: Scalar2 + inputField6800: Int + inputField6801: Int + inputField6802: Boolean + inputField6803: [InputObject1479] +} + +input InputObject1479 @Directive22(argument62 : "stringValue33019") @Directive44(argument97 : ["stringValue33020", "stringValue33021"]) { + inputField6804: InputObject1480 + inputField6809: InputObject1480 +} + +input InputObject148 @Directive20(argument58 : "stringValue20401", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20400") @Directive44(argument97 : ["stringValue20402", "stringValue20403"]) { + inputField570: Int +} + +input InputObject1480 @Directive22(argument62 : "stringValue33022") @Directive44(argument97 : ["stringValue33023", "stringValue33024"]) { + inputField6805: Int + inputField6806: Int + inputField6807: Int + inputField6808: Int +} + +input InputObject1481 @Directive22(argument62 : "stringValue33025") @Directive44(argument97 : ["stringValue33026", "stringValue33027"]) { + inputField6811: String + inputField6812: String +} + +input InputObject1482 @Directive22(argument62 : "stringValue33028") @Directive44(argument97 : ["stringValue33029", "stringValue33030"]) { + inputField6814: [Int] + inputField6815: [Enum1695] + inputField6816: Scalar2 + inputField6817: Scalar2 + inputField6818: Boolean + inputField6819: Boolean +} + +input InputObject1483 @Directive22(argument62 : "stringValue33035") @Directive44(argument97 : ["stringValue33036", "stringValue33037"]) { + inputField6821: [String] +} + +input InputObject1484 @Directive22(argument62 : "stringValue33038") @Directive44(argument97 : ["stringValue33039", "stringValue33040"]) { + inputField6823: Boolean + inputField6824: Boolean +} + +input InputObject1485 @Directive22(argument62 : "stringValue33041") @Directive44(argument97 : ["stringValue33042", "stringValue33043"]) { + inputField6826: [String] + inputField6827: [String] + inputField6828: [[String]] +} + +input InputObject1486 @Directive22(argument62 : "stringValue33044") @Directive44(argument97 : ["stringValue33045", "stringValue33046"]) { + inputField6830: Enum1696 + inputField6831: Scalar2 +} + +input InputObject1487 @Directive22(argument62 : "stringValue33051") @Directive44(argument97 : ["stringValue33052", "stringValue33053"]) { + inputField6833: Enum1697 + inputField6834: Scalar2 + inputField6835: InputObject1477 +} + +input InputObject1488 @Directive22(argument62 : "stringValue33058") @Directive44(argument97 : ["stringValue33059", "stringValue33060"]) { + inputField6837: Enum1698 + inputField6838: Boolean + inputField6839: [Scalar2] + inputField6840: [Float] + inputField6841: Int +} + +input InputObject1489 @Directive22(argument62 : "stringValue33208") @Directive44(argument97 : ["stringValue33209", "stringValue33210", "stringValue33211"]) { + inputField6848: [Enum1654] + inputField6849: InputObject1426 +} + +input InputObject149 @Directive20(argument58 : "stringValue20405", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue20404") @Directive44(argument97 : ["stringValue20406", "stringValue20407"]) { + inputField572: Float! + inputField573: Int! +} + +input InputObject1490 @Directive22(argument62 : "stringValue33288") @Directive44(argument97 : ["stringValue33289", "stringValue33290"]) { + inputField6850: [ID!]! + inputField6851: String! + inputField6852: Enum1701 +} + +input InputObject1491 @Directive22(argument62 : "stringValue33544") @Directive44(argument97 : ["stringValue33545", "stringValue33546"]) { + inputField6853: Enum384 + inputField6854: [Scalar2] +} + +input InputObject1492 @Directive22(argument62 : "stringValue33572") @Directive44(argument97 : ["stringValue33573"]) { + inputField6855: ID! + inputField6856: InputObject67 + inputField6857: InputObject71 +} + +input InputObject1493 @Directive44(argument97 : ["stringValue33578"]) { + inputField6858: Boolean +} + +input InputObject1494 @Directive44(argument97 : ["stringValue33664"]) { + inputField6859: String! +} + +input InputObject1495 @Directive44(argument97 : ["stringValue33670"]) { + inputField6860: String! +} + +input InputObject1496 @Directive44(argument97 : ["stringValue33676"]) { + inputField6861: String! +} + +input InputObject1497 @Directive44(argument97 : ["stringValue33682"]) { + inputField6862: String! +} + +input InputObject1498 @Directive44(argument97 : ["stringValue33688"]) { + inputField6863: String! + inputField6864: [InputObject1499] + inputField6868: [InputObject1500] + inputField6871: InputObject1501 + inputField6874: [InputObject1502] +} + +input InputObject1499 @Directive44(argument97 : ["stringValue33689"]) { + inputField6865: String! + inputField6866: Enum1720 + inputField6867: [Enum1721] +} + +input InputObject15 @Directive42(argument96 : ["stringValue11838"]) @Directive44(argument97 : ["stringValue11839"]) { + inputField75: Enum479 + inputField76: InputObject16 + inputField78: Enum481 + inputField79: InputObject17 +} + +input InputObject150 @Directive22(argument62 : "stringValue20408") @Directive44(argument97 : ["stringValue20409", "stringValue20410"]) { + inputField579: Boolean + inputField580: Int + inputField581: Int + inputField582: Int + inputField583: Int + inputField584: Int + inputField585: Int +} + +input InputObject1500 @Directive44(argument97 : ["stringValue33692"]) { + inputField6869: Enum1722! + inputField6870: Enum1723! +} + +input InputObject1501 @Directive44(argument97 : ["stringValue33695"]) { + inputField6872: Int + inputField6873: Int +} + +input InputObject1502 @Directive44(argument97 : ["stringValue33696"]) { + inputField6875: Enum1724 +} + +input InputObject1503 @Directive44(argument97 : ["stringValue33715"]) { + inputField6876: Scalar2! + inputField6877: Enum1726! +} + +input InputObject1504 @Directive44(argument97 : ["stringValue33722"]) { + inputField6878: InputObject1505! +} + +input InputObject1505 @Directive44(argument97 : ["stringValue33723"]) { + inputField6879: Enum1727 + inputField6880: Int + inputField6881: Int + inputField6882: InputObject1506 +} + +input InputObject1506 @Directive44(argument97 : ["stringValue33725"]) { + inputField6883: [Enum1017] + inputField6884: [Enum1018] + inputField6885: Scalar4 + inputField6886: Scalar4 + inputField6887: Boolean + inputField6888: [Scalar2] + inputField6889: Boolean +} + +input InputObject1507 @Directive44(argument97 : ["stringValue33731"]) { + inputField6890: InputObject1505! +} + +input InputObject1508 @Directive44(argument97 : ["stringValue33737"]) { + inputField6891: Scalar2! +} + +input InputObject1509 @Directive44(argument97 : ["stringValue33741"]) { + inputField6892: InputObject1505 + inputField6893: InputObject1510 +} + +input InputObject151 @Directive22(argument62 : "stringValue20411") @Directive44(argument97 : ["stringValue20412", "stringValue20413"]) { + inputField587: InputObject152 + inputField590: InputObject153 + inputField599: InputObject155 + inputField605: InputObject156 + inputField610: InputObject157 + inputField619: InputObject158 + inputField624: InputObject159 +} + +input InputObject1510 @Directive44(argument97 : ["stringValue33742"]) { + inputField6894: [Enum1023] + inputField6895: [Enum1022] + inputField6896: [Scalar2] +} + +input InputObject1511 @Directive44(argument97 : ["stringValue33748"]) { + inputField6897: InputObject1505 +} + +input InputObject1512 @Directive44(argument97 : ["stringValue33754"]) { + inputField6898: InputObject1505 +} + +input InputObject1513 @Directive44(argument97 : ["stringValue33758"]) { + inputField6899: InputObject1505! +} + +input InputObject1514 @Directive44(argument97 : ["stringValue33762"]) { + inputField6900: String! +} + +input InputObject1515 @Directive44(argument97 : ["stringValue33766"]) { + inputField6901: [Enum1728] +} + +input InputObject1516 @Directive44(argument97 : ["stringValue33773"]) { + inputField6902: Scalar2! + inputField6903: Int! + inputField6904: Int! +} + +input InputObject1517 @Directive44(argument97 : ["stringValue33779"]) { + inputField6905: String +} + +input InputObject1518 @Directive44(argument97 : ["stringValue33783"]) { + inputField6906: Scalar2! +} + +input InputObject1519 @Directive44(argument97 : ["stringValue33792"]) { + inputField6907: Scalar2! +} + +input InputObject152 @Directive22(argument62 : "stringValue20414") @Directive44(argument97 : ["stringValue20415", "stringValue20416"]) { + inputField588: [Enum454!] + inputField589: [String!] +} + +input InputObject1520 @Directive44(argument97 : ["stringValue33802"]) { + inputField6908: InputObject1510 +} + +input InputObject1521 @Directive44(argument97 : ["stringValue33808"]) { + inputField6909: Scalar2! +} + +input InputObject1522 @Directive44(argument97 : ["stringValue33812"]) { + inputField6910: [Scalar2]! +} + +input InputObject1523 @Directive44(argument97 : ["stringValue33816"]) { + inputField6911: [Scalar2]! + inputField6912: InputObject1505! +} + +input InputObject1524 @Directive44(argument97 : ["stringValue33820"]) { + inputField6913: Scalar2! +} + +input InputObject1525 @Directive44(argument97 : ["stringValue33826"]) { + inputField6914: Enum1024! + inputField6915: Scalar2! +} + +input InputObject1526 @Directive44(argument97 : ["stringValue33832"]) { + inputField6916: InputObject1505! +} + +input InputObject1527 @Directive44(argument97 : ["stringValue33838"]) { + inputField6917: [Scalar2]! +} + +input InputObject1528 @Directive44(argument97 : ["stringValue33842"]) { + inputField6918: [Scalar2]! + inputField6919: Scalar2 +} + +input InputObject1529 @Directive44(argument97 : ["stringValue33846"]) { + inputField6920: String! + inputField6921: InputObject1505! +} + +input InputObject153 @Directive22(argument62 : "stringValue20417") @Directive44(argument97 : ["stringValue20418", "stringValue20419"]) { + inputField591: InputObject154 + inputField594: Enum681 + inputField595: String + inputField596: String + inputField597: Enum677 + inputField598: String +} + +input InputObject1530 @Directive44(argument97 : ["stringValue33852"]) { + inputField6922: String! +} + +input InputObject1531 @Directive44(argument97 : ["stringValue33858"]) { + inputField6923: String! +} + +input InputObject1532 @Directive44(argument97 : ["stringValue33863"]) { + inputField6924: String! + inputField6925: String! +} + +input InputObject1533 @Directive44(argument97 : ["stringValue33884"]) { + inputField6926: String + inputField6927: String +} + +input InputObject1534 @Directive44(argument97 : ["stringValue33892"]) { + inputField6928: String! +} + +input InputObject1535 @Directive44(argument97 : ["stringValue33910"]) { + inputField6929: [String] + inputField6930: Boolean + inputField6931: InputObject1536 +} + +input InputObject1536 @Directive44(argument97 : ["stringValue33911"]) { + inputField6932: Int + inputField6933: String +} + +input InputObject1537 @Directive44(argument97 : ["stringValue33936"]) { + inputField6934: InputObject1536 +} + +input InputObject1538 @Directive44(argument97 : ["stringValue33944"]) { + inputField6935: String! +} + +input InputObject1539 @Directive44(argument97 : ["stringValue33992"]) { + inputField6936: String! +} + +input InputObject154 @Directive22(argument62 : "stringValue20420") @Directive44(argument97 : ["stringValue20421", "stringValue20422"]) { + inputField592: Enum680! + inputField593: String +} + +input InputObject1540 @Directive44(argument97 : ["stringValue34008"]) { + inputField6937: InputObject1536 +} + +input InputObject1541 @Directive44(argument97 : ["stringValue34121"]) { + inputField6938: String +} + +input InputObject1542 @Directive44(argument97 : ["stringValue34127"]) { + inputField6939: Enum1743! + inputField6940: String +} + +input InputObject1543 @Directive44(argument97 : ["stringValue34144"]) { + inputField6941: String! + inputField6942: String! + inputField6943: String + inputField6944: String! +} + +input InputObject1544 @Directive44(argument97 : ["stringValue34151"]) { + inputField6945: Scalar2 + inputField6946: [Enum1744] +} + +input InputObject1545 @Directive44(argument97 : ["stringValue34167"]) { + inputField6947: Scalar2! +} + +input InputObject1546 @Directive44(argument97 : ["stringValue34173"]) { + inputField6948: Scalar2 + inputField6949: Enum1746 + inputField6950: Enum1747 +} + +input InputObject1547 @Directive44(argument97 : ["stringValue34184"]) { + inputField6951: Scalar2! +} + +input InputObject1548 @Directive44(argument97 : ["stringValue34199"]) { + inputField6952: Enum1747! + inputField6953: String +} + +input InputObject1549 @Directive44(argument97 : ["stringValue34206"]) { + inputField6954: Scalar2! + inputField6955: String + inputField6956: InputObject1550 + inputField7005: Scalar2 +} + +input InputObject155 @Directive22(argument62 : "stringValue20423") @Directive44(argument97 : ["stringValue20424", "stringValue20425"]) { + inputField600: String + inputField601: String + inputField602: String + inputField603: String + inputField604: String +} + +input InputObject1550 @Directive44(argument97 : ["stringValue34207"]) { + inputField6957: Scalar2! + inputField6958: String! + inputField6959: Int + inputField6960: Int + inputField6961: String + inputField6962: [Int] + inputField6963: [String] + inputField6964: InputObject1551 + inputField7001: Int + inputField7002: Int + inputField7003: Boolean + inputField7004: Boolean +} + +input InputObject1551 @Directive44(argument97 : ["stringValue34208"]) { + inputField6965: Scalar2 + inputField6966: Float + inputField6967: Int + inputField6968: [InputObject1552] + inputField6974: [String] + inputField6975: Int + inputField6976: Int + inputField6977: [Scalar2] + inputField6978: Boolean + inputField6979: String + inputField6980: Int + inputField6981: String + inputField6982: InputObject1553 + inputField6999: Scalar2 + inputField7000: Boolean +} + +input InputObject1552 @Directive44(argument97 : ["stringValue34209"]) { + inputField6969: Scalar2! + inputField6970: Int + inputField6971: Int + inputField6972: Int + inputField6973: Scalar2 +} + +input InputObject1553 @Directive44(argument97 : ["stringValue34210"]) { + inputField6983: InputObject1554 + inputField6985: InputObject1555 + inputField6990: InputObject1557 + inputField6993: InputObject1558 + inputField6997: InputObject1559 +} + +input InputObject1554 @Directive44(argument97 : ["stringValue34211"]) { + inputField6984: Boolean +} + +input InputObject1555 @Directive44(argument97 : ["stringValue34212"]) { + inputField6986: Boolean + inputField6987: [InputObject1556] +} + +input InputObject1556 @Directive44(argument97 : ["stringValue34213"]) { + inputField6988: Int! + inputField6989: Int! +} + +input InputObject1557 @Directive44(argument97 : ["stringValue34214"]) { + inputField6991: Boolean + inputField6992: Int +} + +input InputObject1558 @Directive44(argument97 : ["stringValue34215"]) { + inputField6994: Scalar2 + inputField6995: Scalar2 + inputField6996: Scalar2 +} + +input InputObject1559 @Directive44(argument97 : ["stringValue34216"]) { + inputField6998: Scalar2 +} + +input InputObject156 @Directive22(argument62 : "stringValue20426") @Directive44(argument97 : ["stringValue20427", "stringValue20428"]) { + inputField606: String + inputField607: Boolean + inputField608: Boolean + inputField609: Boolean +} + +input InputObject1560 @Directive44(argument97 : ["stringValue34552"]) { + inputField7006: Scalar2! + inputField7007: InputObject1561 +} + +input InputObject1561 @Directive44(argument97 : ["stringValue34553"]) { + inputField7008: Scalar2! + inputField7009: Int! + inputField7010: Int + inputField7011: Int + inputField7012: InputObject1551 + inputField7013: Int + inputField7014: Boolean + inputField7015: Boolean + inputField7016: Boolean +} + +input InputObject1562 @Directive44(argument97 : ["stringValue34559"]) { + inputField7017: String + inputField7018: [String] + inputField7019: Scalar2 +} + +input InputObject1563 @Directive44(argument97 : ["stringValue34567"]) { + inputField7020: String +} + +input InputObject1564 @Directive44(argument97 : ["stringValue34594"]) { + inputField7021: Scalar2 + inputField7022: [Scalar2] + inputField7023: [String] + inputField7024: Int + inputField7025: String + inputField7026: String + inputField7027: String + inputField7028: String + inputField7029: Boolean + inputField7030: [Scalar2] + inputField7031: String +} + +input InputObject1565 @Directive44(argument97 : ["stringValue34619"]) { + inputField7032: Scalar2 + inputField7033: Boolean + inputField7034: Scalar2 +} + +input InputObject1566 @Directive44(argument97 : ["stringValue34632"]) { + inputField7035: Scalar2! +} + +input InputObject1567 @Directive44(argument97 : ["stringValue34663"]) { + inputField7036: Boolean +} + +input InputObject1568 @Directive44(argument97 : ["stringValue34671"]) { + inputField7037: Scalar2 + inputField7038: Scalar2 + inputField7039: Scalar2 + inputField7040: String + inputField7041: Int +} + +input InputObject1569 @Directive44(argument97 : ["stringValue34677"]) { + inputField7042: Scalar2 + inputField7043: Scalar2 + inputField7044: Scalar2 + inputField7045: [Scalar2] + inputField7046: [Int] +} + +input InputObject157 @Directive22(argument62 : "stringValue20429") @Directive44(argument97 : ["stringValue20430", "stringValue20431"]) { + inputField611: String + inputField612: Boolean + inputField613: Boolean + inputField614: Boolean + inputField615: Boolean + inputField616: String + inputField617: Boolean + inputField618: [InputObject37!] +} + +input InputObject1570 @Directive44(argument97 : ["stringValue34681"]) { + inputField7047: Scalar2 + inputField7048: String +} + +input InputObject1571 @Directive44(argument97 : ["stringValue34687"]) { + inputField7049: Scalar2! + inputField7050: String + inputField7051: [Scalar2] + inputField7052: Boolean +} + +input InputObject1572 @Directive44(argument97 : ["stringValue34695"]) { + inputField7053: Scalar2! + inputField7054: [Scalar2] + inputField7055: Boolean +} + +input InputObject1573 @Directive44(argument97 : ["stringValue34708"]) { + inputField7056: Scalar2 + inputField7057: String + inputField7058: String +} + +input InputObject1574 @Directive44(argument97 : ["stringValue34717"]) { + inputField7059: Scalar2 + inputField7060: String + inputField7061: Scalar2 + inputField7062: Scalar2 +} + +input InputObject1575 @Directive44(argument97 : ["stringValue34727"]) { + inputField7063: Int + inputField7064: Scalar2 +} + +input InputObject1576 @Directive44(argument97 : ["stringValue34774"]) { + inputField7065: String +} + +input InputObject1577 @Directive44(argument97 : ["stringValue34782"]) { + inputField7066: Scalar2 + inputField7067: Int + inputField7068: Int! + inputField7069: Scalar2! + inputField7070: Scalar2 +} + +input InputObject1578 @Directive44(argument97 : ["stringValue34790"]) { + inputField7071: String +} + +input InputObject1579 @Directive44(argument97 : ["stringValue34804"]) { + inputField7072: [Scalar2] + inputField7073: Scalar2 + inputField7074: Int + inputField7075: [String] + inputField7076: String +} + +input InputObject158 @Directive22(argument62 : "stringValue20432") @Directive44(argument97 : ["stringValue20433", "stringValue20434"]) { + inputField620: Enum212 + inputField621: Int + inputField622: Int + inputField623: Int +} + +input InputObject1580 @Directive44(argument97 : ["stringValue34808"]) { + inputField7077: Scalar2 +} + +input InputObject1581 @Directive44(argument97 : ["stringValue34815"]) { + inputField7078: Scalar2! +} + +input InputObject1582 @Directive44(argument97 : ["stringValue34821"]) { + inputField7079: String + inputField7080: Int + inputField7081: Boolean + inputField7082: [String] + inputField7083: Scalar1 + inputField7084: String + inputField7085: Int + inputField7086: Scalar1 + inputField7087: Int + inputField7088: Enum1766 + inputField7089: Boolean +} + +input InputObject1583 @Directive44(argument97 : ["stringValue34864"]) { + inputField7090: Scalar2! +} + +input InputObject1584 @Directive44(argument97 : ["stringValue34870"]) { + inputField7091: Scalar2! + inputField7092: Enum1772 +} + +input InputObject1585 @Directive44(argument97 : ["stringValue34877"]) { + inputField7093: [String]! + inputField7094: Scalar2 + inputField7095: Scalar2 + inputField7096: Int + inputField7097: Int +} + +input InputObject1586 @Directive44(argument97 : ["stringValue34883"]) { + inputField7098: Scalar2 + inputField7099: Scalar2 +} + +input InputObject1587 @Directive44(argument97 : ["stringValue34920"]) { + inputField7100: Int + inputField7101: Int + inputField7102: InputObject1588 + inputField7105: InputObject1589 + inputField7140: String + inputField7141: Boolean + inputField7142: InputObject1591 +} + +input InputObject1588 @Directive44(argument97 : ["stringValue34921"]) { + inputField7103: Enum1776! + inputField7104: Enum1777! +} + +input InputObject1589 @Directive44(argument97 : ["stringValue34924"]) { + inputField7106: Scalar2! + inputField7107: String + inputField7108: [String] + inputField7109: String + inputField7110: String + inputField7111: String + inputField7112: String + inputField7113: String + inputField7114: Scalar4 + inputField7115: Scalar4 + inputField7116: Scalar2 + inputField7117: Enum1778 + inputField7118: Scalar2 + inputField7119: Scalar3 + inputField7120: String + inputField7121: Scalar2 + inputField7122: String + inputField7123: String + inputField7124: Enum1779 + inputField7125: Scalar2 + inputField7126: Enum1780 + inputField7127: String + inputField7128: InputObject1590 + inputField7136: Scalar2 + inputField7137: String + inputField7138: [String] + inputField7139: Int +} + +input InputObject159 @Directive22(argument62 : "stringValue20435") @Directive44(argument97 : ["stringValue20436", "stringValue20437"]) { + inputField625: [InputObject160!] + inputField628: Enum678 +} + +input InputObject1590 @Directive44(argument97 : ["stringValue34928"]) { + inputField7129: Scalar2 + inputField7130: Boolean + inputField7131: Boolean + inputField7132: Scalar4 + inputField7133: Scalar4 + inputField7134: Scalar4 + inputField7135: Scalar4 +} + +input InputObject1591 @Directive44(argument97 : ["stringValue34929"]) { + inputField7143: Boolean +} + +input InputObject1592 @Directive44(argument97 : ["stringValue34955"]) { + inputField7144: Scalar2 + inputField7145: String + inputField7146: String + inputField7147: Int + inputField7148: Int +} + +input InputObject1593 @Directive44(argument97 : ["stringValue34961"]) { + inputField7149: Scalar2 + inputField7150: Scalar2 + inputField7151: Int + inputField7152: Int +} + +input InputObject1594 @Directive44(argument97 : ["stringValue34989"]) { + inputField7153: Scalar2 + inputField7154: Int + inputField7155: Scalar2 +} + +input InputObject1595 @Directive44(argument97 : ["stringValue34997"]) { + inputField7156: Scalar2 + inputField7157: Enum1782 + inputField7158: Scalar2 +} + +input InputObject1596 @Directive44(argument97 : ["stringValue35008", "stringValue35009"]) { + inputField7159: String! +} + +input InputObject1597 @Directive44(argument97 : ["stringValue35017"]) { + inputField7160: [String]! + inputField7161: Boolean +} + +input InputObject1598 @Directive44(argument97 : ["stringValue35028"]) { + inputField7162: String! + inputField7163: [String] +} + +input InputObject1599 @Directive44(argument97 : ["stringValue35034"]) { + inputField7164: Scalar2! +} + +input InputObject16 @Directive22(argument62 : "stringValue11843") @Directive44(argument97 : ["stringValue11844"]) { + inputField77: Enum480 +} + +input InputObject160 @Directive22(argument62 : "stringValue20438") @Directive44(argument97 : ["stringValue20439", "stringValue20440"]) { + inputField626: Int + inputField627: Enum678 +} + +input InputObject1600 @Directive44(argument97 : ["stringValue35038"]) { + inputField7165: Enum1062 + inputField7166: String + inputField7167: String +} + +input InputObject1601 @Directive44(argument97 : ["stringValue35046", "stringValue35047"]) { + inputField7168: [Enum1783] +} + +input InputObject1602 @Directive44(argument97 : ["stringValue35056", "stringValue35057"]) { + inputField7169: Int + inputField7170: [Scalar2] + inputField7171: Enum1193 + inputField7172: [Scalar2] + inputField7173: Boolean + inputField7174: Int +} + +input InputObject1603 @Directive44(argument97 : ["stringValue35064", "stringValue35065"]) { + inputField7175: Scalar2 + inputField7176: Scalar2 + inputField7177: Enum1193 + inputField7178: Scalar2 + inputField7179: Int + inputField7180: Int +} + +input InputObject1604 @Directive44(argument97 : ["stringValue35072", "stringValue35073"]) { + inputField7181: Int + inputField7182: Enum1064 + inputField7183: Boolean + inputField7184: Enum1175 + inputField7185: Boolean + inputField7186: Scalar2 + inputField7187: String +} + +input InputObject1605 @Directive44(argument97 : ["stringValue35080", "stringValue35081"]) { + inputField7188: String +} + +input InputObject1606 @Directive44(argument97 : ["stringValue35088", "stringValue35089"]) { + inputField7189: Scalar2! + inputField7190: String + inputField7191: Boolean + inputField7192: Enum1784 + inputField7193: Boolean + inputField7194: Int + inputField7195: Boolean + inputField7196: Boolean + inputField7197: Int +} + +input InputObject1607 @Directive44(argument97 : ["stringValue35102"]) { + inputField7198: Enum1196! +} + +input InputObject1608 @Directive44(argument97 : ["stringValue35109"]) { + inputField7199: String + inputField7200: [String] + inputField7201: Float + inputField7202: Boolean + inputField7203: [[String]] + inputField7204: InputObject1609 + inputField7206: Enum1198 + inputField7207: [InputObject1609] + inputField7208: Scalar1 + inputField7209: Int + inputField7210: String + inputField7211: Scalar1 +} + +input InputObject1609 @Directive44(argument97 : ["stringValue35110"]) { + inputField7205: String +} + +input InputObject161 @Directive22(argument62 : "stringValue20593") @Directive44(argument97 : ["stringValue20594", "stringValue20595"]) { + inputField632: ID! + inputField633: InputObject162! + inputField638: String +} + +input InputObject1610 @Directive44(argument97 : ["stringValue35121"]) { + inputField7212: [String] +} + +input InputObject1611 @Directive44(argument97 : ["stringValue35141"]) { + inputField7213: Int! + inputField7214: String + inputField7215: String + inputField7216: Scalar4 + inputField7217: Scalar1 + inputField7218: Scalar3 + inputField7219: Scalar1 + inputField7220: Scalar1 + inputField7221: Scalar1 + inputField7222: Scalar1 + inputField7223: Scalar1 + inputField7224: Scalar1 +} + +input InputObject1612 @Directive44(argument97 : ["stringValue35154"]) { + inputField7225: [Scalar2]! + inputField7226: [Enum1786] + inputField7227: String +} + +input InputObject1613 @Directive44(argument97 : ["stringValue35243"]) { + inputField7228: [InputObject1614] + inputField7232: Int + inputField7233: Int + inputField7234: InputObject1615 + inputField7287: InputObject1619 + inputField7290: String + inputField7291: Enum1808 + inputField7292: Enum1809 + inputField7293: String +} + +input InputObject1614 @Directive44(argument97 : ["stringValue35244"]) { + inputField7229: Enum1790! + inputField7230: Enum1791! + inputField7231: [Enum1792] +} + +input InputObject1615 @Directive44(argument97 : ["stringValue35248"]) { + inputField7235: [Enum1793] + inputField7236: [Int] + inputField7237: [Int] + inputField7238: [String] + inputField7239: [Enum1794] + inputField7240: [Enum1795] + inputField7241: [Int] + inputField7242: [Scalar2] + inputField7243: [Int] + inputField7244: [Int] + inputField7245: [Int] + inputField7246: [Int] + inputField7247: [Float] + inputField7248: Boolean + inputField7249: Scalar4 + inputField7250: Scalar4 + inputField7251: [String] + inputField7252: [Enum1796] + inputField7253: [Scalar2] + inputField7254: [String] + inputField7255: InputObject1616 + inputField7258: [String] + inputField7259: [String] + inputField7260: [String] + inputField7261: [String] + inputField7262: [Enum1797] + inputField7263: [Scalar2] + inputField7264: [Enum1798] + inputField7265: Boolean + inputField7266: [InputObject1617] + inputField7270: Boolean + inputField7271: [Scalar2] + inputField7272: Boolean + inputField7273: [InputObject1618] + inputField7276: [Enum1799] + inputField7277: [Enum1800] + inputField7278: [Enum1801] + inputField7279: Boolean + inputField7280: [Enum1802] + inputField7281: [String] + inputField7282: [Enum1803] + inputField7283: [Enum1804] + inputField7284: [Enum1805] + inputField7285: Boolean + inputField7286: [String] +} + +input InputObject1616 @Directive44(argument97 : ["stringValue35253"]) { + inputField7256: [Int] + inputField7257: [Scalar2] +} + +input InputObject1617 @Directive44(argument97 : ["stringValue35256"]) { + inputField7267: String! + inputField7268: String! + inputField7269: Float +} + +input InputObject1618 @Directive44(argument97 : ["stringValue35257"]) { + inputField7274: Scalar2 + inputField7275: Scalar2 +} + +input InputObject1619 @Directive44(argument97 : ["stringValue35265"]) { + inputField7288: [Enum1806] + inputField7289: [Enum1807] +} + +input InputObject162 @Directive22(argument62 : "stringValue20596") @Directive44(argument97 : ["stringValue20597", "stringValue20598"]) { + inputField634: ID! + inputField635: String + inputField636: InputObject163 +} + +input InputObject1620 @Directive44(argument97 : ["stringValue35471"]) { + inputField7294: Boolean + inputField7295: Int + inputField7296: InputObject1615 + inputField7297: [Enum1838] + inputField7298: String +} + +input InputObject1621 @Directive44(argument97 : ["stringValue35513"]) { + inputField7299: String +} + +input InputObject1622 @Directive44(argument97 : ["stringValue35531"]) { + inputField7300: String + inputField7301: String + inputField7302: String +} + +input InputObject1623 @Directive44(argument97 : ["stringValue35537"]) { + inputField7303: String +} + +input InputObject1624 @Directive44(argument97 : ["stringValue35549"]) { + inputField7304: String + inputField7305: String + inputField7306: Scalar2 + inputField7307: String +} + +input InputObject1625 @Directive44(argument97 : ["stringValue35555"]) { + inputField7308: String + inputField7309: String +} + +input InputObject1626 @Directive44(argument97 : ["stringValue35566"]) { + inputField7310: String! + inputField7311: Int +} + +input InputObject1627 @Directive44(argument97 : ["stringValue35619"]) { + inputField7312: String! +} + +input InputObject1628 @Directive44(argument97 : ["stringValue35625"]) { + inputField7313: String! + inputField7314: String +} + +input InputObject1629 @Directive44(argument97 : ["stringValue35631"]) { + inputField7315: String! +} + +input InputObject163 @Directive22(argument62 : "stringValue20599") @Directive44(argument97 : ["stringValue20600", "stringValue20601"]) { + inputField637: [InputObject138!] +} + +input InputObject1630 @Directive44(argument97 : ["stringValue35637"]) { + inputField7316: String! +} + +input InputObject1631 @Directive44(argument97 : ["stringValue35696"]) { + inputField7317: String! +} + +input InputObject1632 @Directive44(argument97 : ["stringValue35713"]) { + inputField7318: String! + inputField7319: String +} + +input InputObject1633 @Directive44(argument97 : ["stringValue35732"]) { + inputField7320: String! + inputField7321: String + inputField7322: Int +} + +input InputObject1634 @Directive44(argument97 : ["stringValue35749"]) { + inputField7323: String +} + +input InputObject1635 @Directive44(argument97 : ["stringValue35760"]) { + inputField7324: Scalar2! +} + +input InputObject1636 @Directive44(argument97 : ["stringValue35766"]) { + inputField7325: Scalar2! +} + +input InputObject1637 @Directive44(argument97 : ["stringValue35775"]) { + inputField7326: InputObject1638 + inputField7335: Int + inputField7336: Int + inputField7337: InputObject1640 + inputField7340: InputObject662 + inputField7341: String +} + +input InputObject1638 @Directive44(argument97 : ["stringValue35776"]) { + inputField7327: Scalar2 + inputField7328: [Enum1225] + inputField7329: Scalar2 + inputField7330: Scalar2 + inputField7331: [Scalar2] + inputField7332: Enum1860 + inputField7333: InputObject1639 +} + +input InputObject1639 @Directive44(argument97 : ["stringValue35778"]) { + inputField7334: Boolean +} + +input InputObject164 @Directive22(argument62 : "stringValue20603") @Directive44(argument97 : ["stringValue20604", "stringValue20605"]) { + inputField639: ID! + inputField640: InputObject165! + inputField659: String +} + +input InputObject1640 @Directive44(argument97 : ["stringValue35779"]) { + inputField7338: Enum1861! + inputField7339: Enum1862! +} + +input InputObject1641 @Directive44(argument97 : ["stringValue35788"]) { + inputField7342: String + inputField7343: String +} + +input InputObject1642 @Directive44(argument97 : ["stringValue35795"]) { + inputField7344: Scalar2! + inputField7345: Scalar2! +} + +input InputObject1643 @Directive44(argument97 : ["stringValue35801"]) { + inputField7346: Scalar2! + inputField7347: [Scalar2!]! + inputField7348: String +} + +input InputObject1644 @Directive44(argument97 : ["stringValue35809"]) { + inputField7349: [Scalar2!]! + inputField7350: Scalar2! +} + +input InputObject1645 @Directive44(argument97 : ["stringValue35815"]) { + inputField7351: Scalar2! +} + +input InputObject1646 @Directive44(argument97 : ["stringValue35821"]) { + inputField7352: [Scalar2]! + inputField7353: Boolean +} + +input InputObject1647 @Directive44(argument97 : ["stringValue35827"]) { + inputField7354: String + inputField7355: [String] + inputField7356: Scalar2 +} + +input InputObject1648 @Directive44(argument97 : ["stringValue35835"]) { + inputField7357: [Scalar2]! +} + +input InputObject1649 @Directive44(argument97 : ["stringValue35843"]) { + inputField7358: [Scalar2]! +} + +input InputObject165 @Directive22(argument62 : "stringValue20606") @Directive44(argument97 : ["stringValue20607", "stringValue20608"]) { + inputField641: InputObject166 + inputField644: InputObject167 + inputField650: ID! + inputField651: String + inputField652: InputObject168 +} + +input InputObject1650 @Directive44(argument97 : ["stringValue35851"]) { + inputField7359: String! +} + +input InputObject1651 @Directive44(argument97 : ["stringValue35881"]) { + inputField7360: Scalar2 + inputField7361: String + inputField7362: Boolean +} + +input InputObject1652 @Directive44(argument97 : ["stringValue35887"]) { + inputField7363: Scalar2 +} + +input InputObject1653 @Directive44(argument97 : ["stringValue35901"]) { + inputField7364: Scalar2 + inputField7365: Int + inputField7366: Int + inputField7367: String + inputField7368: String + inputField7369: Int + inputField7370: Int + inputField7371: Int + inputField7372: String +} + +input InputObject1654 @Directive44(argument97 : ["stringValue36016"]) { + inputField7373: Scalar2 + inputField7374: String + inputField7375: String + inputField7376: Boolean + inputField7377: Scalar2 + inputField7378: String +} + +input InputObject1655 @Directive44(argument97 : ["stringValue36022"]) { + inputField7379: Scalar2 + inputField7380: Int + inputField7381: Int +} + +input InputObject1656 @Directive44(argument97 : ["stringValue36030"]) { + inputField7382: Scalar2 + inputField7383: Scalar2 +} + +input InputObject1657 @Directive44(argument97 : ["stringValue36036"]) { + inputField7384: Scalar2 +} + +input InputObject1658 @Directive44(argument97 : ["stringValue36042"]) { + inputField7385: Int + inputField7386: Int +} + +input InputObject1659 @Directive44(argument97 : ["stringValue36050"]) { + inputField7387: Scalar2 +} + +input InputObject166 @Directive22(argument62 : "stringValue20609") @Directive44(argument97 : ["stringValue20610", "stringValue20611"]) { + inputField642: [Enum454!] + inputField643: [String!] +} + +input InputObject1660 @Directive44(argument97 : ["stringValue36056"]) { + inputField7388: Scalar2 +} + +input InputObject1661 @Directive44(argument97 : ["stringValue36122"]) { + inputField7389: Enum1885 + inputField7390: String +} + +input InputObject1662 @Directive44(argument97 : ["stringValue36136"]) { + inputField7391: String! + inputField7392: Enum1891 +} + +input InputObject1663 @Directive44(argument97 : ["stringValue36163"]) { + inputField7393: String! +} + +input InputObject1664 @Directive44(argument97 : ["stringValue36182"]) { + inputField7394: String +} + +input InputObject1665 @Directive44(argument97 : ["stringValue36188"]) { + inputField7395: Boolean +} + +input InputObject1666 @Directive44(argument97 : ["stringValue36194"]) { + inputField7396: Scalar2 +} + +input InputObject1667 @Directive44(argument97 : ["stringValue36263"]) { + inputField7397: Int! + inputField7398: Int! +} + +input InputObject1668 @Directive44(argument97 : ["stringValue36283"]) { + inputField7399: Scalar2 +} + +input InputObject1669 @Directive44(argument97 : ["stringValue36289"]) { + inputField7400: Scalar2! + inputField7401: String +} + +input InputObject167 @Directive22(argument62 : "stringValue20612") @Directive44(argument97 : ["stringValue20613", "stringValue20614"]) { + inputField645: String + inputField646: String + inputField647: String + inputField648: String + inputField649: String +} + +input InputObject1670 @Directive44(argument97 : ["stringValue36299"]) { + inputField7402: Scalar2! + inputField7403: Enum1236! +} + +input InputObject1671 @Directive44(argument97 : ["stringValue36305"]) { + inputField7404: [Scalar2] + inputField7405: Scalar2 + inputField7406: Scalar2 +} + +input InputObject1672 @Directive44(argument97 : ["stringValue36311"]) { + inputField7407: String + inputField7408: String! +} + +input InputObject1673 @Directive44(argument97 : ["stringValue36318"]) { + inputField7409: Enum1241! + inputField7410: Enum1240! + inputField7411: String! + inputField7412: Scalar2 +} + +input InputObject1674 @Directive44(argument97 : ["stringValue36324"]) { + inputField7413: Scalar2 +} + +input InputObject1675 @Directive44(argument97 : ["stringValue36330"]) { + inputField7414: Scalar2! +} + +input InputObject1676 @Directive44(argument97 : ["stringValue36354"]) { + inputField7415: String +} + +input InputObject1677 @Directive44(argument97 : ["stringValue36358"]) { + inputField7416: Scalar2 +} + +input InputObject1678 @Directive44(argument97 : ["stringValue36362"]) { + inputField7417: Scalar2! +} + +input InputObject1679 @Directive44(argument97 : ["stringValue36366"]) { + inputField7418: Scalar2! +} + +input InputObject168 @Directive22(argument62 : "stringValue20615") @Directive44(argument97 : ["stringValue20616", "stringValue20617"]) { + inputField653: Float + inputField654: String + inputField655: Int + inputField656: Int + inputField657: Int + inputField658: Int +} + +input InputObject1680 @Directive44(argument97 : ["stringValue36370"]) { + inputField7419: String! +} + +input InputObject1681 @Directive44(argument97 : ["stringValue36385"]) { + inputField7420: Enum1240! + inputField7421: Scalar2 + inputField7422: String + inputField7423: Boolean + inputField7424: InputObject1682 +} + +input InputObject1682 @Directive44(argument97 : ["stringValue36386"]) { + inputField7425: InputObject1683 + inputField7427: [InputObject1684] + inputField7430: InputObject1685 +} + +input InputObject1683 @Directive44(argument97 : ["stringValue36387"]) { + inputField7426: Int +} + +input InputObject1684 @Directive44(argument97 : ["stringValue36388"]) { + inputField7428: Enum1914! + inputField7429: Enum1915 +} + +input InputObject1685 @Directive44(argument97 : ["stringValue36391"]) { + inputField7431: InputObject1686 + inputField7435: InputObject1686 + inputField7436: [Enum1916] + inputField7437: [Enum1244] + inputField7438: [Enum1244] + inputField7439: [Enum1241] + inputField7440: [Enum1241] +} + +input InputObject1686 @Directive44(argument97 : ["stringValue36392"]) { + inputField7432: Scalar4 + inputField7433: Scalar4 + inputField7434: Scalar4 +} + +input InputObject1687 @Directive44(argument97 : ["stringValue36399"]) { + inputField7441: Scalar2 + inputField7442: Boolean + inputField7443: InputObject1682 + inputField7444: String + inputField7445: Enum1917 +} + +input InputObject1688 @Directive44(argument97 : ["stringValue36406"]) { + inputField7446: String +} + +input InputObject1689 @Directive44(argument97 : ["stringValue36422"]) { + inputField7447: String! +} + +input InputObject169 @Directive22(argument62 : "stringValue20619") @Directive44(argument97 : ["stringValue20620", "stringValue20621"]) { + inputField660: ID! + inputField661: InputObject170! + inputField702: String +} + +input InputObject1690 @Directive44(argument97 : ["stringValue36432"]) { + inputField7448: String! +} + +input InputObject1691 @Directive44(argument97 : ["stringValue36442"]) { + inputField7449: Scalar2! +} + +input InputObject1692 @Directive44(argument97 : ["stringValue36446"]) { + inputField7450: Scalar2! +} + +input InputObject1693 @Directive44(argument97 : ["stringValue36452"]) { + inputField7451: String! +} + +input InputObject1694 @Directive44(argument97 : ["stringValue36464"]) { + inputField7452: Scalar2! +} + +input InputObject1695 @Directive44(argument97 : ["stringValue36468"]) { + inputField7453: Scalar2! +} + +input InputObject1696 @Directive44(argument97 : ["stringValue36474"]) { + inputField7454: String + inputField7455: Int +} + +input InputObject1697 @Directive44(argument97 : ["stringValue36484"]) { + inputField7456: String! +} + +input InputObject1698 @Directive44(argument97 : ["stringValue36493"]) { + inputField7457: Scalar2! +} + +input InputObject1699 @Directive44(argument97 : ["stringValue36497"]) { + inputField7458: Scalar2! +} + +input InputObject17 @Directive22(argument62 : "stringValue11850") @Directive44(argument97 : ["stringValue11851"]) { + inputField80: String +} + +input InputObject170 @Directive22(argument62 : "stringValue20622") @Directive44(argument97 : ["stringValue20623", "stringValue20624"]) { + inputField662: InputObject171 + inputField668: InputObject172 + inputField672: ID! + inputField673: String + inputField674: InputObject174 + inputField701: InputObject150 +} + +input InputObject1700 @Directive44(argument97 : ["stringValue36503"]) { + inputField7459: Enum1921! + inputField7460: Enum1240 + inputField7461: String! +} + +input InputObject1701 @Directive44(argument97 : ["stringValue36515"]) { + inputField7462: InputObject750 + inputField7463: InputObject751 + inputField7464: Scalar2 +} + +input InputObject1702 @Directive44(argument97 : ["stringValue36521"]) { + inputField7465: String +} + +input InputObject1703 @Directive44(argument97 : ["stringValue36531"]) { + inputField7466: [Enum1929]! +} + +input InputObject1704 @Directive44(argument97 : ["stringValue36557"]) { + inputField7467: String +} + +input InputObject1705 @Directive44(argument97 : ["stringValue36589"]) { + inputField7468: String! +} + +input InputObject1706 @Directive44(argument97 : ["stringValue36599"]) { + inputField7469: String! +} + +input InputObject1707 @Directive44(argument97 : ["stringValue36607"]) { + inputField7470: String! +} + +input InputObject1708 @Directive44(argument97 : ["stringValue36614"]) { + inputField7471: String + inputField7472: String + inputField7473: String + inputField7474: String +} + +input InputObject1709 @Directive44(argument97 : ["stringValue36620"]) { + inputField7475: Scalar2! +} + +input InputObject171 @Directive22(argument62 : "stringValue20625") @Directive44(argument97 : ["stringValue20626", "stringValue20627"]) { + inputField663: Int + inputField664: Int + inputField665: Int + inputField666: Int + inputField667: Int +} + +input InputObject1710 @Directive44(argument97 : ["stringValue36626"]) { + inputField7476: Scalar2 +} + +input InputObject1711 @Directive44(argument97 : ["stringValue36634"]) { + inputField7477: InputObject1712! +} + +input InputObject1712 @Directive44(argument97 : ["stringValue36635"]) { + inputField7478: Enum1278! +} + +input InputObject1713 @Directive44(argument97 : ["stringValue36641"]) { + inputField7479: InputObject1712! + inputField7480: Enum1934! +} + +input InputObject1714 @Directive44(argument97 : ["stringValue36648"]) { + inputField7481: Scalar2! +} + +input InputObject1715 @Directive44(argument97 : ["stringValue36654"]) { + inputField7482: String! +} + +input InputObject1716 @Directive44(argument97 : ["stringValue36678"]) { + inputField7483: Enum25 + inputField7484: Enum26 + inputField7485: Enum23 + inputField7486: Scalar2 + inputField7487: String + inputField7488: String + inputField7489: Float + inputField7490: Int + inputField7491: Float + inputField7492: Scalar3 + inputField7493: String + inputField7494: Scalar2 + inputField7495: Boolean + inputField7496: Boolean + inputField7497: String + inputField7498: Scalar2 + inputField7499: String + inputField7500: Scalar3 + inputField7501: Scalar3 + inputField7502: Scalar2 + inputField7503: Enum24 + inputField7504: Float + inputField7505: Float + inputField7506: Int + inputField7507: String + inputField7508: String + inputField7509: Boolean + inputField7510: String + inputField7511: String + inputField7512: String + inputField7513: String + inputField7514: String + inputField7515: Scalar2 + inputField7516: String + inputField7517: String + inputField7518: Scalar2 + inputField7519: Scalar2 + inputField7520: String +} + +input InputObject1717 @Directive44(argument97 : ["stringValue36684"]) { + inputField7521: String + inputField7522: Scalar2 + inputField7523: Float + inputField7524: Int + inputField7525: Float + inputField7526: Scalar3 + inputField7527: Scalar2 + inputField7528: Boolean + inputField7529: Boolean + inputField7530: String + inputField7531: Scalar2 + inputField7532: String + inputField7533: Scalar3 + inputField7534: Scalar3 + inputField7535: Scalar2 + inputField7536: Enum24 + inputField7537: Float + inputField7538: Float + inputField7539: Int + inputField7540: String + inputField7541: String + inputField7542: Boolean + inputField7543: String + inputField7544: String + inputField7545: String + inputField7546: String + inputField7547: Scalar2 + inputField7548: String + inputField7549: String + inputField7550: Scalar2 + inputField7551: Scalar2 + inputField7552: String + inputField7553: Enum23 + inputField7554: Enum26 + inputField7555: String + inputField7556: String +} + +input InputObject1718 @Directive44(argument97 : ["stringValue36700"]) { + inputField7557: String + inputField7558: Scalar2 + inputField7559: Float + inputField7560: Int + inputField7561: Float +} + +input InputObject1719 @Directive44(argument97 : ["stringValue36706"]) { + inputField7562: String +} + +input InputObject172 @Directive22(argument62 : "stringValue20628") @Directive44(argument97 : ["stringValue20629", "stringValue20630"]) { + inputField669: [InputObject173!] +} + +input InputObject1720 @Directive44(argument97 : ["stringValue36713"]) { + inputField7563: String + inputField7564: String + inputField7565: String + inputField7566: Int + inputField7567: Int + inputField7568: Int + inputField7569: Int + inputField7570: String + inputField7571: String + inputField7572: String + inputField7573: String + inputField7574: String + inputField7575: Scalar2 + inputField7576: String + inputField7577: String + inputField7578: Scalar2 + inputField7579: Int + inputField7580: Int + inputField7581: Int + inputField7582: [String] + inputField7583: String + inputField7584: String + inputField7585: String + inputField7586: String + inputField7587: String + inputField7588: String + inputField7589: String + inputField7590: String + inputField7591: String + inputField7592: Boolean + inputField7593: Int + inputField7594: Int + inputField7595: [Int] + inputField7596: [Int] + inputField7597: Boolean + inputField7598: [String] + inputField7599: [String] + inputField7600: [String] + inputField7601: [Int] + inputField7602: String + inputField7603: String + inputField7604: Int + inputField7605: [Int] + inputField7606: [Int] + inputField7607: Int + inputField7608: Int + inputField7609: Float + inputField7610: [Int] + inputField7611: Float + inputField7612: Float + inputField7613: [Int] + inputField7614: Scalar2 + inputField7615: Boolean + inputField7616: Boolean + inputField7617: Boolean + inputField7618: Boolean + inputField7619: Boolean + inputField7620: String + inputField7621: [Int] + inputField7622: [String] + inputField7623: [Int] + inputField7624: [Int] + inputField7625: Int + inputField7626: Float + inputField7627: String + inputField7628: [String] + inputField7629: Scalar2 + inputField7630: String + inputField7631: [Int] + inputField7632: String + inputField7633: String + inputField7634: Boolean + inputField7635: String + inputField7636: String + inputField7637: Boolean + inputField7638: Boolean + inputField7639: String + inputField7640: Boolean + inputField7641: Int + inputField7642: String + inputField7643: Boolean + inputField7644: [String] + inputField7645: String + inputField7646: Boolean + inputField7647: Boolean + inputField7648: Int + inputField7649: String + inputField7650: String + inputField7651: String + inputField7652: Boolean + inputField7653: [Int] + inputField7654: String + inputField7655: Boolean + inputField7656: Boolean + inputField7657: [Int] + inputField7658: Scalar2 + inputField7659: Boolean + inputField7660: [Int] + inputField7661: Scalar2 + inputField7662: [String] + inputField7663: String + inputField7664: String + inputField7665: String + inputField7666: String + inputField7667: Int + inputField7668: [Int] + inputField7669: [String] + inputField7670: [String] + inputField7671: [Int] + inputField7672: Int + inputField7673: Scalar2 + inputField7674: Scalar2 + inputField7675: Scalar2 + inputField7676: Boolean + inputField7677: Boolean + inputField7678: [String] + inputField7679: [String] + inputField7680: [Scalar2] + inputField7681: Boolean + inputField7682: String + inputField7683: Boolean + inputField7684: [Int] + inputField7685: String + inputField7686: Scalar2 + inputField7687: String + inputField7688: Boolean + inputField7689: String + inputField7690: String + inputField7691: Scalar2 + inputField7692: [Scalar2] + inputField7693: String + inputField7694: Scalar2 + inputField7695: Scalar2 + inputField7696: Boolean + inputField7697: Boolean + inputField7698: Scalar2 + inputField7699: [String] + inputField7700: [String] + inputField7701: String + inputField7702: Boolean + inputField7703: Boolean + inputField7704: Boolean + inputField7705: Int + inputField7706: Int + inputField7707: String + inputField7708: [Int] + inputField7709: [String] + inputField7710: Int + inputField7711: Int + inputField7712: String + inputField7713: String + inputField7714: String + inputField7715: Boolean + inputField7716: Boolean + inputField7717: Boolean + inputField7718: String + inputField7719: [Int] + inputField7720: [Scalar2] + inputField7721: String + inputField7722: Boolean + inputField7723: String + inputField7724: Int + inputField7725: Int + inputField7726: Int + inputField7727: String + inputField7728: String + inputField7729: [Int] + inputField7730: Boolean + inputField7731: [String] + inputField7732: [String] + inputField7733: [String] + inputField7734: String + inputField7735: String + inputField7736: Boolean + inputField7737: [String] + inputField7738: Boolean + inputField7739: String + inputField7740: [String] + inputField7741: String + inputField7742: Int + inputField7743: String + inputField7744: String + inputField7745: [Int] + inputField7746: Int + inputField7747: String + inputField7748: String + inputField7749: String + inputField7750: Int + inputField7751: Int + inputField7752: Int + inputField7753: String + inputField7754: String + inputField7755: String + inputField7756: String + inputField7757: String + inputField7758: Boolean + inputField7759: Scalar2 + inputField7760: String + inputField7761: Scalar2 + inputField7762: [String] + inputField7763: String + inputField7764: Boolean + inputField7765: Int + inputField7766: Boolean + inputField7767: String + inputField7768: String + inputField7769: String + inputField7770: String + inputField7771: String + inputField7772: String + inputField7773: String + inputField7774: [Int] + inputField7775: Boolean + inputField7776: Int + inputField7777: [String] + inputField7778: String + inputField7779: Boolean + inputField7780: String + inputField7781: Scalar2 + inputField7782: [String] + inputField7783: Int + inputField7784: Int + inputField7785: Int + inputField7786: Boolean + inputField7787: Int + inputField7788: Int + inputField7789: String + inputField7790: Boolean + inputField7791: [String] + inputField7792: [String] + inputField7793: Boolean + inputField7794: Boolean + inputField7795: Int + inputField7796: Int + inputField7797: [String] + inputField7798: String + inputField7799: Int + inputField7800: [String] + inputField7801: [String] + inputField7802: String + inputField7803: String + inputField7804: String + inputField7805: String + inputField7806: String + inputField7807: [String] + inputField7808: [String] + inputField7809: String + inputField7810: Boolean + inputField7811: String + inputField7812: String +} + +input InputObject1721 @Directive44(argument97 : ["stringValue37138"]) { + inputField7813: String + inputField7814: String + inputField7815: Boolean +} + +input InputObject1722 @Directive44(argument97 : ["stringValue37159"]) { + inputField7816: Scalar2! + inputField7817: Enum1977 + inputField7818: String + inputField7819: String + inputField7820: String + inputField7821: Scalar2 + inputField7822: Scalar2 +} + +input InputObject1723 @Directive44(argument97 : ["stringValue37209"]) { + inputField7823: String + inputField7824: String + inputField7825: InputObject1724 + inputField7828: InputObject1725 + inputField7832: [InputObject1725] + inputField7833: String +} + +input InputObject1724 @Directive44(argument97 : ["stringValue37210"]) { + inputField7826: [Enum1982] + inputField7827: Enum1983 +} + +input InputObject1725 @Directive44(argument97 : ["stringValue37213"]) { + inputField7829: Enum1982 + inputField7830: Enum1984 + inputField7831: Float +} + +input InputObject1726 @Directive44(argument97 : ["stringValue37229"]) { + inputField7834: [Scalar2]! + inputField7835: [Scalar2] +} + +input InputObject1727 @Directive44(argument97 : ["stringValue37246"]) { + inputField7836: Scalar2 + inputField7837: [InputObject1728] + inputField7840: Enum1282 +} + +input InputObject1728 @Directive44(argument97 : ["stringValue37247"]) { + inputField7838: Enum1283! + inputField7839: String +} + +input InputObject1729 @Directive44(argument97 : ["stringValue37295"]) { + inputField7841: Scalar2! +} + +input InputObject173 @Directive22(argument62 : "stringValue20631") @Directive44(argument97 : ["stringValue20632", "stringValue20633"]) { + inputField670: ID! + inputField671: Enum683 +} + +input InputObject1730 @Directive44(argument97 : ["stringValue37301"]) { + inputField7842: Scalar2 +} + +input InputObject1731 @Directive44(argument97 : ["stringValue37313"]) { + inputField7843: Scalar2 +} + +input InputObject1732 @Directive44(argument97 : ["stringValue37325"]) { + inputField7844: Scalar2 +} + +input InputObject1733 @Directive44(argument97 : ["stringValue37338"]) { + inputField7845: Scalar2! +} + +input InputObject1734 @Directive44(argument97 : ["stringValue37350"]) { + inputField7846: Enum865! + inputField7847: String! + inputField7848: Enum866 +} + +input InputObject1735 @Directive44(argument97 : ["stringValue37370"]) { + inputField7849: [Scalar2] +} + +input InputObject1736 @Directive44(argument97 : ["stringValue37602"]) { + inputField7850: Scalar2 +} + +input InputObject1737 @Directive44(argument97 : ["stringValue37608"]) { + inputField7851: Scalar2 + inputField7852: String + inputField7853: String +} + +input InputObject1738 @Directive44(argument97 : ["stringValue37630"]) { + inputField7854: Scalar2 + inputField7855: Boolean + inputField7856: String + inputField7857: Int + inputField7858: Int + inputField7859: Int + inputField7860: String + inputField7861: String + inputField7862: Int + inputField7863: Int + inputField7864: Int + inputField7865: Int + inputField7866: Boolean + inputField7867: String + inputField7868: String + inputField7869: [String] + inputField7870: Boolean + inputField7871: Boolean + inputField7872: Boolean + inputField7873: Boolean + inputField7874: Boolean + inputField7875: Scalar2 +} + +input InputObject1739 @Directive44(argument97 : ["stringValue38658"]) { + inputField7876: Scalar2 +} + +input InputObject174 @Directive22(argument62 : "stringValue20634") @Directive44(argument97 : ["stringValue20635", "stringValue20636"]) { + inputField675: [InputObject138!] + inputField676: Float + inputField677: [InputObject175!] + inputField685: InputObject176 + inputField699: Float + inputField700: Boolean +} + +input InputObject1740 @Directive44(argument97 : ["stringValue38664"]) { + inputField7877: String + inputField7878: Enum2109 + inputField7879: Scalar2 + inputField7880: String + inputField7881: String + inputField7882: Int + inputField7883: Int + inputField7884: Int + inputField7885: Int +} + +input InputObject1741 @Directive44(argument97 : ["stringValue38675"]) { + inputField7886: Scalar2 +} + +input InputObject1742 @Directive44(argument97 : ["stringValue38681"]) { + inputField7887: Scalar2 + inputField7888: Scalar2 + inputField7889: Boolean + inputField7890: Scalar2 + inputField7891: Scalar2 + inputField7892: Boolean +} + +input InputObject1743 @Directive44(argument97 : ["stringValue38689"]) { + inputField7893: Scalar2 +} + +input InputObject1744 @Directive44(argument97 : ["stringValue38695"]) { + inputField7894: Scalar2 + inputField7895: String + inputField7896: String + inputField7897: Scalar2 + inputField7898: Scalar2 + inputField7899: Scalar2 + inputField7900: Scalar2 + inputField7901: [String] + inputField7902: Boolean + inputField7903: String + inputField7904: Boolean + inputField7905: Boolean + inputField7906: Float +} + +input InputObject1745 @Directive44(argument97 : ["stringValue38699"]) { + inputField7907: String + inputField7908: Boolean +} + +input InputObject1746 @Directive44(argument97 : ["stringValue38727"]) { + inputField7909: Scalar2 + inputField7910: Int +} + +input InputObject1747 @Directive44(argument97 : ["stringValue38754"]) { + inputField7911: Scalar2 +} + +input InputObject1748 @Directive44(argument97 : ["stringValue38781"]) { + inputField7912: Enum2113 +} + +input InputObject1749 @Directive44(argument97 : ["stringValue38786"]) { + inputField7913: InputObject1750 + inputField7931: Scalar2 + inputField7932: InputObject1755 + inputField7934: InputObject1755 + inputField7935: String + inputField7936: InputObject1756 + inputField7938: Enum2113 +} + +input InputObject175 @Directive22(argument62 : "stringValue20637") @Directive44(argument97 : ["stringValue20638", "stringValue20639"]) { + inputField678: Float + inputField679: String + inputField680: Boolean + inputField681: String + inputField682: Int + inputField683: String + inputField684: String +} + +input InputObject1750 @Directive44(argument97 : ["stringValue38787"]) { + inputField7914: InputObject1751 + inputField7923: String + inputField7924: [InputObject1753] + inputField7927: [InputObject1754] +} + +input InputObject1751 @Directive44(argument97 : ["stringValue38788"]) { + inputField7915: Boolean + inputField7916: Boolean + inputField7917: Boolean + inputField7918: Boolean + inputField7919: [InputObject1752] + inputField7921: [String] + inputField7922: [Enum2111] +} + +input InputObject1752 @Directive44(argument97 : ["stringValue38789"]) { + inputField7920: String +} + +input InputObject1753 @Directive44(argument97 : ["stringValue38790"]) { + inputField7925: String + inputField7926: [String] +} + +input InputObject1754 @Directive44(argument97 : ["stringValue38791"]) { + inputField7928: String + inputField7929: Enum2112 + inputField7930: [String] +} + +input InputObject1755 @Directive44(argument97 : ["stringValue38792"]) { + inputField7933: String +} + +input InputObject1756 @Directive44(argument97 : ["stringValue38793"]) { + inputField7937: Enum2114 +} + +input InputObject1757 @Directive44(argument97 : ["stringValue38833"]) { + inputField7939: Enum2113 +} + +input InputObject1758 @Directive44(argument97 : ["stringValue38838"]) { + inputField7940: Enum2116! + inputField7941: String! + inputField7942: Scalar2 + inputField7943: Boolean + inputField7944: [Enum2117] + inputField7945: [Enum2118] + inputField7946: [Enum2119] + inputField7947: [Enum2120] + inputField7948: [Enum2121] + inputField7949: [Enum2122] +} + +input InputObject1759 @Directive44(argument97 : ["stringValue38884"]) { + inputField7950: Scalar2! + inputField7951: String! + inputField7952: String! + inputField7953: Enum2125! + inputField7954: Scalar2 +} + +input InputObject176 @Directive22(argument62 : "stringValue20640") @Directive44(argument97 : ["stringValue20641", "stringValue20642"]) { + inputField686: InputObject177 + inputField694: Boolean + inputField695: InputObject180 +} + +input InputObject1760 @Directive44(argument97 : ["stringValue38891"]) { + inputField7955: String! + inputField7956: InputObject1761 +} + +input InputObject1761 @Directive44(argument97 : ["stringValue38892"]) { + inputField7957: Int + inputField7958: String + inputField7959: Int + inputField7960: Int +} + +input InputObject1762 @Directive44(argument97 : ["stringValue38902"]) { + inputField7961: InputObject1761 + inputField7962: Int +} + +input InputObject1763 @Directive44(argument97 : ["stringValue38920"]) { + inputField7963: String! +} + +input InputObject1764 @Directive44(argument97 : ["stringValue38937"]) { + inputField7964: String + inputField7965: String + inputField7966: String +} + +input InputObject1765 @Directive44(argument97 : ["stringValue38944"]) { + inputField7967: Enum2127! + inputField7968: Scalar2 + inputField7969: Scalar2 + inputField7970: Scalar2 + inputField7971: String + inputField7972: Boolean + inputField7973: Int + inputField7974: Int + inputField7975: InputObject1766 + inputField7977: Scalar2 +} + +input InputObject1766 @Directive44(argument97 : ["stringValue38946"]) { + inputField7976: [Scalar2] +} + +input InputObject1767 @Directive44(argument97 : ["stringValue38989"]) { + inputField7978: String! + inputField7979: InputObject1768 +} + +input InputObject1768 @Directive44(argument97 : ["stringValue38990"]) { + inputField7980: Int + inputField7981: String + inputField7982: Int + inputField7983: Int +} + +input InputObject1769 @Directive44(argument97 : ["stringValue39000"]) { + inputField7984: String! +} + +input InputObject177 @Directive22(argument62 : "stringValue20643") @Directive44(argument97 : ["stringValue20644", "stringValue20645"]) { + inputField687: InputObject178 + inputField691: InputObject179 +} + +input InputObject1770 @Directive44(argument97 : ["stringValue39017"]) { + inputField7985: String + inputField7986: String + inputField7987: String +} + +input InputObject1771 @Directive44(argument97 : ["stringValue39028"]) { + inputField7988: String +} + +input InputObject1772 @Directive44(argument97 : ["stringValue39034"]) { + inputField7989: Scalar2! + inputField7990: Scalar2 + inputField7991: Scalar2 +} + +input InputObject1773 @Directive44(argument97 : ["stringValue39041"]) { + inputField7992: Enum2136! + inputField7993: [Enum2137] + inputField7994: String + inputField7995: Enum2138 + inputField7996: Scalar2 + inputField7997: [String] + inputField7998: InputObject1774 +} + +input InputObject1774 @Directive44(argument97 : ["stringValue39045"]) { + inputField7999: Enum2139! + inputField8000: Enum2140! +} + +input InputObject1775 @Directive44(argument97 : ["stringValue39103"]) { + inputField8001: String +} + +input InputObject1776 @Directive44(argument97 : ["stringValue39107"]) { + inputField8002: Int! + inputField8003: Int! + inputField8004: String + inputField8005: String + inputField8006: String + inputField8007: String + inputField8008: String + inputField8009: String + inputField8010: Boolean +} + +input InputObject1777 @Directive44(argument97 : ["stringValue39115"]) { + inputField8011: String! + inputField8012: String +} + +input InputObject1778 @Directive44(argument97 : ["stringValue39133"]) { + inputField8013: String! + inputField8014: String + inputField8015: Enum2143 + inputField8016: Boolean + inputField8017: Boolean + inputField8018: String +} + +input InputObject1779 @Directive44(argument97 : ["stringValue39146"]) { + inputField8019: Int! + inputField8020: Int! + inputField8021: Boolean +} + +input InputObject178 @Directive22(argument62 : "stringValue20646") @Directive44(argument97 : ["stringValue20647", "stringValue20648"]) { + inputField688: Scalar2 + inputField689: Enum966 + inputField690: Float +} + +input InputObject1780 @Directive44(argument97 : ["stringValue39163"]) { + inputField8022: Int! + inputField8023: Int! + inputField8024: Boolean! + inputField8025: Boolean! +} + +input InputObject1781 @Directive44(argument97 : ["stringValue39169"]) { + inputField8026: Int! + inputField8027: Int! + inputField8028: Boolean! + inputField8029: String +} + +input InputObject1782 @Directive44(argument97 : ["stringValue39175"]) { + inputField8030: Int! + inputField8031: Int! + inputField8032: Boolean +} + +input InputObject1783 @Directive44(argument97 : ["stringValue39181"]) { + inputField8033: Int + inputField8034: Int + inputField8035: InputObject825! +} + +input InputObject1784 @Directive44(argument97 : ["stringValue39193"]) { + inputField8036: String +} + +input InputObject1785 @Directive44(argument97 : ["stringValue39197"]) { + inputField8037: Scalar2! +} + +input InputObject1786 @Directive44(argument97 : ["stringValue39203"]) { + inputField8038: String +} + +input InputObject1787 @Directive44(argument97 : ["stringValue39213"]) { + inputField8039: String +} + +input InputObject1788 @Directive44(argument97 : ["stringValue39245"]) { + inputField8040: String +} + +input InputObject1789 @Directive44(argument97 : ["stringValue39249"]) { + inputField8041: [InputObject1790] + inputField8071: InputObject1795 + inputField8075: String +} + +input InputObject179 @Directive22(argument62 : "stringValue20649") @Directive44(argument97 : ["stringValue20650", "stringValue20651"]) { + inputField692: Scalar2 + inputField693: Enum967 +} + +input InputObject1790 @Directive44(argument97 : ["stringValue39250"]) { + inputField8042: Enum2144! + inputField8043: Enum2145! + inputField8044: String + inputField8045: Int + inputField8046: [String] + inputField8047: String! + inputField8048: String! + inputField8049: String + inputField8050: Enum2143 + inputField8051: String + inputField8052: String + inputField8053: [String] + inputField8054: String! + inputField8055: String + inputField8056: String + inputField8057: InputObject1791 +} + +input InputObject1791 @Directive44(argument97 : ["stringValue39251"]) { + inputField8058: String! + inputField8059: String! + inputField8060: String + inputField8061: String + inputField8062: [InputObject1792]! + inputField8067: String + inputField8068: InputObject1794 +} + +input InputObject1792 @Directive44(argument97 : ["stringValue39252"]) { + inputField8063: [InputObject1793]! +} + +input InputObject1793 @Directive44(argument97 : ["stringValue39253"]) { + inputField8064: String! + inputField8065: String! + inputField8066: Boolean! +} + +input InputObject1794 @Directive44(argument97 : ["stringValue39254"]) { + inputField8069: String! + inputField8070: String! +} + +input InputObject1795 @Directive44(argument97 : ["stringValue39255"]) { + inputField8072: String! + inputField8073: String! + inputField8074: String! +} + +input InputObject1796 @Directive44(argument97 : ["stringValue39261"]) { + inputField8076: String +} + +input InputObject1797 @Directive44(argument97 : ["stringValue39273"]) { + inputField8077: [String]! + inputField8078: String +} + +input InputObject1798 @Directive44(argument97 : ["stringValue39280"]) { + inputField8079: Enum2150! +} + +input InputObject1799 @Directive44(argument97 : ["stringValue39294"]) { + inputField8080: Int! + inputField8081: Int + inputField8082: Int +} + +input InputObject18 @Directive22(argument62 : "stringValue12096") @Directive44(argument97 : ["stringValue12097"]) { + inputField81: InputObject19 +} + +input InputObject180 @Directive22(argument62 : "stringValue20652") @Directive44(argument97 : ["stringValue20653", "stringValue20654"]) { + inputField696: Enum968 + inputField697: String + inputField698: String +} + +input InputObject1800 @Directive44(argument97 : ["stringValue39305"]) { + inputField8083: Int! + inputField8084: Scalar2! +} + +input InputObject1801 @Directive44(argument97 : ["stringValue39313"]) { + inputField8085: Scalar2! +} + +input InputObject1802 @Directive44(argument97 : ["stringValue39357"]) { + inputField8086: String! +} + +input InputObject1803 @Directive44(argument97 : ["stringValue39363"]) { + inputField8087: Scalar2! + inputField8088: [Scalar2]! +} + +input InputObject1804 @Directive44(argument97 : ["stringValue39369"]) { + inputField8089: [Enum1328]! +} + +input InputObject1805 @Directive44(argument97 : ["stringValue39375"]) { + inputField8090: Scalar2 +} + +input InputObject1806 @Directive44(argument97 : ["stringValue39386"]) { + inputField8091: Scalar2! +} + +input InputObject1807 @Directive44(argument97 : ["stringValue39401"]) { + inputField8092: Scalar2! + inputField8093: [Enum2156] + inputField8094: Int + inputField8095: Int +} + +input InputObject1808 @Directive44(argument97 : ["stringValue39407"]) { + inputField8096: Scalar2! +} + +input InputObject1809 @Directive44(argument97 : ["stringValue39422"]) { + inputField8097: String +} + +input InputObject181 @Directive22(argument62 : "stringValue20656") @Directive44(argument97 : ["stringValue20657", "stringValue20658"]) { + inputField703: ID! + inputField704: InputObject182! + inputField754: String +} + +input InputObject1810 @Directive44(argument97 : ["stringValue39430"]) { + inputField8098: Int + inputField8099: Int + inputField8100: Scalar4 + inputField8101: Scalar4 + inputField8102: Scalar2 + inputField8103: Scalar2 +} + +input InputObject1811 @Directive44(argument97 : ["stringValue39444"]) { + inputField8104: Scalar4 + inputField8105: Scalar4 + inputField8106: Scalar2 + inputField8107: Scalar2 +} + +input InputObject1812 @Directive44(argument97 : ["stringValue39458"]) { + inputField8108: String! +} + +input InputObject1813 @Directive44(argument97 : ["stringValue39475"]) { + inputField8109: Int + inputField8110: Int + inputField8111: Scalar2 + inputField8112: Scalar2 +} + +input InputObject1814 @Directive44(argument97 : ["stringValue39481"]) { + inputField8113: Scalar2 +} + +input InputObject1815 @Directive44(argument97 : ["stringValue39489"]) { + inputField8114: InputObject1816 + inputField8117: Enum1327 +} + +input InputObject1816 @Directive44(argument97 : ["stringValue39490"]) { + inputField8115: Int + inputField8116: Int +} + +input InputObject1817 @Directive44(argument97 : ["stringValue39500"]) { + inputField8118: Scalar2! + inputField8119: [String] + inputField8120: [String] +} + +input InputObject1818 @Directive44(argument97 : ["stringValue39507"]) { + inputField8121: String +} + +input InputObject1819 @Directive44(argument97 : ["stringValue39515"]) { + inputField8122: String + inputField8123: String +} + +input InputObject182 @Directive22(argument62 : "stringValue20659") @Directive44(argument97 : ["stringValue20660", "stringValue20661"]) { + inputField705: InputObject183 + inputField708: InputObject184 + inputField734: InputObject187 + inputField738: InputObject188 + inputField743: InputObject189 + inputField752: ID! + inputField753: String +} + +input InputObject1820 @Directive44(argument97 : ["stringValue39555"]) { + inputField8124: String! + inputField8125: String! +} + +input InputObject1821 @Directive44(argument97 : ["stringValue39609"]) { + inputField8126: String + inputField8127: String + inputField8128: Scalar3 +} + +input InputObject1822 @Directive44(argument97 : ["stringValue39621"]) { + inputField8129: [String]! + inputField8130: String! +} + +input InputObject1823 @Directive44(argument97 : ["stringValue39714"]) { + inputField8131: String + inputField8132: Enum2171! + inputField8133: String + inputField8134: Boolean + inputField8135: Scalar1 + inputField8136: [String] + inputField8137: String +} + +input InputObject1824 @Directive44(argument97 : ["stringValue39735"]) { + inputField8138: Boolean +} + +input InputObject1825 @Directive44(argument97 : ["stringValue39741"]) { + inputField8139: Boolean +} + +input InputObject1826 @Directive44(argument97 : ["stringValue39747"]) { + inputField8140: Scalar2 + inputField8141: Enum2173 +} + +input InputObject1827 @Directive44(argument97 : ["stringValue39754"]) { + inputField8142: Enum2174! +} + +input InputObject1828 @Directive44(argument97 : ["stringValue39763"]) { + inputField8143: Enum2173 +} + +input InputObject1829 @Directive44(argument97 : ["stringValue39769"]) { + inputField8144: Boolean +} + +input InputObject183 @Directive22(argument62 : "stringValue20662") @Directive44(argument97 : ["stringValue20663", "stringValue20664"]) { + inputField706: [Enum454!] + inputField707: [String!] +} + +input InputObject1830 @Directive44(argument97 : ["stringValue39776"]) { + inputField8145: Enum2175 + inputField8146: Scalar2 + inputField8147: Enum2176 +} + +input InputObject1831 @Directive44(argument97 : ["stringValue39856"]) { + inputField8148: Enum2175 + inputField8149: Scalar2 + inputField8150: Enum2176 +} + +input InputObject1832 @Directive44(argument97 : ["stringValue39875"]) { + inputField8151: Enum2175 + inputField8152: Enum2176 +} + +input InputObject1833 @Directive44(argument97 : ["stringValue39881"]) { + inputField8153: Enum2175 + inputField8154: Enum2183 + inputField8155: Enum2176 +} + +input InputObject1834 @Directive44(argument97 : ["stringValue39900"]) { + inputField8156: Enum2175 + inputField8157: Enum2176 +} + +input InputObject1835 @Directive44(argument97 : ["stringValue39906"]) { + inputField8158: Enum2175 + inputField8159: Scalar2 + inputField8160: Enum2176 + inputField8161: InputObject1836 +} + +input InputObject1836 @Directive44(argument97 : ["stringValue39907"]) { + inputField8162: [InputObject1837!] + inputField8165: [InputObject1837!] +} + +input InputObject1837 @Directive44(argument97 : ["stringValue39908"]) { + inputField8163: Enum2180! + inputField8164: String! +} + +input InputObject1838 @Directive44(argument97 : ["stringValue39917"]) { + inputField8166: [Scalar2]! + inputField8167: Enum1341 + inputField8168: Boolean +} + +input InputObject1839 @Directive44(argument97 : ["stringValue39928"]) { + inputField8169: Scalar2! +} + +input InputObject184 @Directive22(argument62 : "stringValue20665") @Directive44(argument97 : ["stringValue20666", "stringValue20667"]) { + inputField709: String + inputField710: InputObject185 + inputField720: InputObject186 + inputField723: String + inputField724: String + inputField725: String + inputField726: String + inputField727: String + inputField728: String + inputField729: Enum969 + inputField730: Enum970 + inputField731: String + inputField732: String + inputField733: String +} + +input InputObject1840 @Directive44(argument97 : ["stringValue39934"]) { + inputField8170: Scalar2! + inputField8171: [String]! + inputField8172: String + inputField8173: Enum1341! +} + +input InputObject1841 @Directive44(argument97 : ["stringValue39940"]) { + inputField8174: Scalar2 + inputField8175: Enum2185 + inputField8176: String + inputField8177: String + inputField8178: Scalar2 +} + +input InputObject1842 @Directive44(argument97 : ["stringValue39980"]) { + inputField8179: Scalar2 + inputField8180: [Enum1341] + inputField8181: InputObject1843 + inputField8185: Scalar4 + inputField8186: Scalar4 +} + +input InputObject1843 @Directive44(argument97 : ["stringValue39981"]) { + inputField8182: Int + inputField8183: Int + inputField8184: Int +} + +input InputObject1844 @Directive44(argument97 : ["stringValue40002"]) { + inputField8187: Scalar2 + inputField8188: Enum1341 +} + +input InputObject1845 @Directive44(argument97 : ["stringValue40008"]) { + inputField8189: Scalar2 +} + +input InputObject1846 @Directive44(argument97 : ["stringValue40025"]) { + inputField8190: Scalar2! +} + +input InputObject1847 @Directive44(argument97 : ["stringValue40031"]) { + inputField8191: Int +} + +input InputObject1848 @Directive44(argument97 : ["stringValue40039"]) { + inputField8192: Scalar2! +} + +input InputObject1849 @Directive44(argument97 : ["stringValue40045"]) { + inputField8193: Scalar2! + inputField8194: Scalar4 + inputField8195: Int + inputField8196: InputObject1843 + inputField8197: Boolean +} + +input InputObject185 @Directive22(argument62 : "stringValue20668") @Directive44(argument97 : ["stringValue20669", "stringValue20670"]) { + inputField711: String + inputField712: String + inputField713: Float + inputField714: Float + inputField715: String + inputField716: String + inputField717: String + inputField718: String + inputField719: String +} + +input InputObject1850 @Directive44(argument97 : ["stringValue40055"]) { + inputField8198: Scalar2! +} + +input InputObject1851 @Directive44(argument97 : ["stringValue40072"]) { + inputField8199: Scalar2! +} + +input InputObject1852 @Directive44(argument97 : ["stringValue40078"]) { + inputField8200: Scalar2 +} + +input InputObject1853 @Directive44(argument97 : ["stringValue40086"]) { + inputField8201: Scalar2 + inputField8202: [String] + inputField8203: [String] + inputField8204: String + inputField8205: InputObject1843 + inputField8206: Boolean + inputField8207: Scalar2 + inputField8208: Boolean + inputField8209: Scalar4 + inputField8210: Scalar4 + inputField8211: Scalar2 +} + +input InputObject1854 @Directive44(argument97 : ["stringValue40096"]) { + inputField8212: Scalar2 + inputField8213: InputObject1843 + inputField8214: Boolean + inputField8215: Scalar4 + inputField8216: Scalar4 +} + +input InputObject1855 @Directive44(argument97 : ["stringValue40107"]) { + inputField8217: Scalar4! + inputField8218: Scalar4! + inputField8219: [Enum2200] +} + +input InputObject1856 @Directive44(argument97 : ["stringValue40114"]) { + inputField8220: Scalar2! +} + +input InputObject1857 @Directive44(argument97 : ["stringValue40120"]) { + inputField8221: Scalar2! +} + +input InputObject1858 @Directive44(argument97 : ["stringValue40126"]) { + inputField8222: Enum2199! + inputField8223: Enum2201! +} + +input InputObject1859 @Directive44(argument97 : ["stringValue40133"]) { + inputField8224: Enum2190 + inputField8225: Scalar2 + inputField8226: Enum2185 + inputField8227: String + inputField8228: String + inputField8229: Scalar2 +} + +input InputObject186 @Directive22(argument62 : "stringValue20671") @Directive44(argument97 : ["stringValue20672", "stringValue20673"]) { + inputField721: Enum680 + inputField722: String +} + +input InputObject1860 @Directive44(argument97 : ["stringValue40139"]) { + inputField8230: [InputObject875]! +} + +input InputObject1861 @Directive44(argument97 : ["stringValue40146"]) { + inputField8231: Scalar2! +} + +input InputObject1862 @Directive44(argument97 : ["stringValue40150"]) { + inputField8232: Scalar2! +} + +input InputObject1863 @Directive44(argument97 : ["stringValue40154"]) { + inputField8233: Scalar2! + inputField8234: [InputObject1864]! +} + +input InputObject1864 @Directive44(argument97 : ["stringValue40155"]) { + inputField8235: Scalar2! + inputField8236: String! + inputField8237: Enum651 +} + +input InputObject1865 @Directive44(argument97 : ["stringValue40163"]) { + inputField8238: Scalar2 +} + +input InputObject1866 @Directive44(argument97 : ["stringValue40192"]) { + inputField8239: Scalar2! +} + +input InputObject1867 @Directive44(argument97 : ["stringValue40198"]) { + inputField8240: Scalar2! +} + +input InputObject1868 @Directive44(argument97 : ["stringValue40209"]) { + inputField8241: String +} + +input InputObject1869 @Directive44(argument97 : ["stringValue40213"]) { + inputField8242: Scalar2! +} + +input InputObject187 @Directive22(argument62 : "stringValue20674") @Directive44(argument97 : ["stringValue20675", "stringValue20676"]) { + inputField735: String + inputField736: String + inputField737: String +} + +input InputObject1870 @Directive44(argument97 : ["stringValue40219"]) { + inputField8243: Scalar2 + inputField8244: [InputObject1003] +} + +input InputObject1871 @Directive44(argument97 : ["stringValue40229"]) { + inputField8245: Scalar2 +} + +input InputObject1872 @Directive44(argument97 : ["stringValue40235"]) { + inputField8246: Scalar2 +} + +input InputObject1873 @Directive44(argument97 : ["stringValue40245"]) { + inputField8247: Scalar2 + inputField8248: Int +} + +input InputObject1874 @Directive44(argument97 : ["stringValue40271"]) { + inputField8249: Scalar2! + inputField8250: Scalar2! +} + +input InputObject1875 @Directive44(argument97 : ["stringValue40277"]) { + inputField8251: Scalar2! +} + +input InputObject1876 @Directive44(argument97 : ["stringValue40283"]) { + inputField8252: Scalar2 + inputField8253: String +} + +input InputObject1877 @Directive44(argument97 : ["stringValue40289"]) { + inputField8254: Scalar2 + inputField8255: String +} + +input InputObject1878 @Directive44(argument97 : ["stringValue40295"]) { + inputField8256: Scalar2 +} + +input InputObject1879 @Directive44(argument97 : ["stringValue40302"]) { + inputField8257: [Enum2208!]! + inputField8258: [String] + inputField8259: Scalar2 + inputField8260: Scalar2 + inputField8261: Scalar3 + inputField8262: Scalar3 + inputField8263: Scalar2 + inputField8264: String + inputField8265: Int + inputField8266: Int + inputField8267: Int + inputField8268: Int + inputField8269: String + inputField8270: Int + inputField8271: String + inputField8272: Boolean + inputField8273: Boolean + inputField8274: Boolean + inputField8275: [Enum2209] + inputField8276: Enum2210 + inputField8277: Boolean + inputField8278: Scalar1 + inputField8279: Boolean + inputField8280: Boolean + inputField8281: String + inputField8282: Scalar2 + inputField8283: Int + inputField8284: Int + inputField8285: String + inputField8286: Boolean + inputField8287: String + inputField8288: String + inputField8289: Enum2211 + inputField8290: Boolean + inputField8291: Boolean + inputField8292: Boolean + inputField8293: String + inputField8294: Scalar2 + inputField8295: String + inputField8296: Scalar2 + inputField8297: Boolean + inputField8298: Boolean + inputField8299: Scalar2 + inputField8300: Int + inputField8301: Scalar2 + inputField8302: Scalar2 + inputField8303: InputObject1880 +} + +input InputObject188 @Directive22(argument62 : "stringValue20677") @Directive44(argument97 : ["stringValue20678", "stringValue20679"]) { + inputField739: String + inputField740: Boolean + inputField741: Boolean + inputField742: Boolean +} + +input InputObject1880 @Directive44(argument97 : ["stringValue40307"]) { + inputField8304: String + inputField8305: String + inputField8306: Boolean +} + +input InputObject1881 @Directive44(argument97 : ["stringValue40579"]) { + inputField8307: String + inputField8308: Boolean +} + +input InputObject1882 @Directive44(argument97 : ["stringValue40589"]) { + inputField8309: Scalar2 +} + +input InputObject1883 @Directive44(argument97 : ["stringValue40597"]) { + inputField8310: Scalar2 +} + +input InputObject1884 @Directive44(argument97 : ["stringValue40666"]) { + inputField8311: InputObject1885 + inputField8324: [InputObject1887] +} + +input InputObject1885 @Directive44(argument97 : ["stringValue40667"]) { + inputField8312: String + inputField8313: String + inputField8314: String + inputField8315: String + inputField8316: String + inputField8317: Int + inputField8318: InputObject1886 + inputField8321: Int + inputField8322: String + inputField8323: Boolean +} + +input InputObject1886 @Directive44(argument97 : ["stringValue40668"]) { + inputField8319: Float + inputField8320: Float +} + +input InputObject1887 @Directive44(argument97 : ["stringValue40669"]) { + inputField8325: String + inputField8326: String + inputField8327: Scalar4 +} + +input InputObject1888 @Directive44(argument97 : ["stringValue40702"]) { + inputField8328: InputObject1889 + inputField8330: InputObject1890 + inputField8332: InputObject1891 + inputField8334: InputObject1885 + inputField8335: InputObject1892 + inputField8338: [InputObject1887] +} + +input InputObject1889 @Directive44(argument97 : ["stringValue40703"]) { + inputField8329: Int +} + +input InputObject189 @Directive22(argument62 : "stringValue20680") @Directive44(argument97 : ["stringValue20681", "stringValue20682"]) { + inputField744: String + inputField745: Boolean + inputField746: Boolean + inputField747: Boolean + inputField748: Boolean + inputField749: String + inputField750: Boolean + inputField751: [InputObject37!] +} + +input InputObject1890 @Directive44(argument97 : ["stringValue40704"]) { + inputField8331: Scalar2! +} + +input InputObject1891 @Directive44(argument97 : ["stringValue40705"]) { + inputField8333: Scalar2 +} + +input InputObject1892 @Directive44(argument97 : ["stringValue40706"]) { + inputField8336: Boolean + inputField8337: Boolean +} + +input InputObject1893 @Directive44(argument97 : ["stringValue40813"]) { + inputField8339: InputObject1894 + inputField8341: InputObject1895 + inputField8343: InputObject1885 + inputField8344: InputObject1896 + inputField8346: InputObject1897 + inputField8348: [InputObject1887] + inputField8349: Boolean +} + +input InputObject1894 @Directive44(argument97 : ["stringValue40814"]) { + inputField8340: Scalar2 +} + +input InputObject1895 @Directive44(argument97 : ["stringValue40815"]) { + inputField8342: String +} + +input InputObject1896 @Directive44(argument97 : ["stringValue40816"]) { + inputField8345: String +} + +input InputObject1897 @Directive44(argument97 : ["stringValue40817"]) { + inputField8347: String +} + +input InputObject1898 @Directive44(argument97 : ["stringValue40848"]) { + inputField8350: Enum2256 + inputField8351: InputObject1899 + inputField8360: Scalar4 + inputField8361: Scalar4 + inputField8362: Int + inputField8363: Float + inputField8364: InputObject1903 + inputField8387: Boolean + inputField8388: InputObject1901 + inputField8389: InputObject1901 + inputField8390: String +} + +input InputObject1899 @Directive44(argument97 : ["stringValue40850"]) { + inputField8352: InputObject1900 + inputField8357: InputObject1902 +} + +input InputObject19 @Directive22(argument62 : "stringValue12098") @Directive44(argument97 : ["stringValue12099"]) { + inputField82: [InputObject20] +} + +input InputObject190 @Directive22(argument62 : "stringValue20688") @Directive44(argument97 : ["stringValue20689", "stringValue20690"]) { + inputField755: ID! + inputField756: [InputObject191] + inputField767: [InputObject193] + inputField771: Enum961 +} + +input InputObject1900 @Directive44(argument97 : ["stringValue40851"]) { + inputField8353: InputObject1901 + inputField8356: InputObject1901 +} + +input InputObject1901 @Directive44(argument97 : ["stringValue40852"]) { + inputField8354: Float + inputField8355: Float +} + +input InputObject1902 @Directive44(argument97 : ["stringValue40853"]) { + inputField8358: InputObject1901 + inputField8359: Float +} + +input InputObject1903 @Directive44(argument97 : ["stringValue40854"]) { + inputField8365: String + inputField8366: String + inputField8367: Int + inputField8368: Int + inputField8369: Int + inputField8370: Scalar2 + inputField8371: Scalar2 + inputField8372: Boolean + inputField8373: Int + inputField8374: Int + inputField8375: Float + inputField8376: [String] + inputField8377: [Int] + inputField8378: [Int] + inputField8379: Boolean + inputField8380: Boolean + inputField8381: [Int] + inputField8382: [Int] + inputField8383: [Int] + inputField8384: Boolean + inputField8385: Boolean + inputField8386: Int +} + +input InputObject1904 @Directive44(argument97 : ["stringValue40969"]) { + inputField8391: [String] + inputField8392: Int + inputField8393: Enum2256 + inputField8394: InputObject1903 + inputField8395: Boolean + inputField8396: InputObject1901 +} + +input InputObject1905 @Directive44(argument97 : ["stringValue40976"]) { + inputField8397: String + inputField8398: String + inputField8399: Scalar2 +} + +input InputObject1906 @Directive44(argument97 : ["stringValue40984"]) { + inputField8400: String +} + +input InputObject1907 @Directive44(argument97 : ["stringValue40992"]) { + inputField8401: Scalar2! +} + +input InputObject1908 @Directive44(argument97 : ["stringValue41003"]) { + inputField8402: Scalar2 +} + +input InputObject1909 @Directive44(argument97 : ["stringValue41009"]) { + inputField8403: Scalar2 +} + +input InputObject191 @Directive22(argument62 : "stringValue20691") @Directive44(argument97 : ["stringValue20692", "stringValue20693"]) { + inputField757: String + inputField758: Int + inputField759: InputObject192 +} + +input InputObject1910 @Directive44(argument97 : ["stringValue41015"]) { + inputField8404: Scalar2! +} + +input InputObject1911 @Directive44(argument97 : ["stringValue41021"]) { + inputField8405: Scalar2! +} + +input InputObject1912 @Directive44(argument97 : ["stringValue41029"]) { + inputField8406: Scalar2 + inputField8407: Enum1391 +} + +input InputObject1913 @Directive44(argument97 : ["stringValue41035"]) { + inputField8408: Scalar2 + inputField8409: Scalar2 +} + +input InputObject1914 @Directive44(argument97 : ["stringValue41041"]) { + inputField8410: Scalar2 + inputField8411: [Enum2278] + inputField8412: Boolean +} + +input InputObject1915 @Directive44(argument97 : ["stringValue41048"]) { + inputField8413: Scalar2 +} + +input InputObject1916 @Directive44(argument97 : ["stringValue41054"]) { + inputField8414: Scalar2! + inputField8415: Scalar2! + inputField8416: String + inputField8417: Boolean + inputField8418: Boolean + inputField8419: Boolean +} + +input InputObject1917 @Directive44(argument97 : ["stringValue41274"]) { + inputField8420: Scalar2! + inputField8421: String + inputField8422: String + inputField8423: Int + inputField8424: String + inputField8425: Boolean + inputField8426: Boolean + inputField8427: String + inputField8428: Int + inputField8429: Float + inputField8430: String + inputField8431: [String] +} + +input InputObject1918 @Directive44(argument97 : ["stringValue41282"]) { + inputField8432: Scalar2 + inputField8433: [Enum2298] +} + +input InputObject1919 @Directive44(argument97 : ["stringValue41293"]) { + inputField8434: Scalar2 +} + +input InputObject192 @Directive22(argument62 : "stringValue20694") @Directive44(argument97 : ["stringValue20695", "stringValue20696"]) { + inputField760: ID! + inputField761: String + inputField762: String + inputField763: Boolean + inputField764: Boolean + inputField765: Boolean + inputField766: String +} + +input InputObject1920 @Directive44(argument97 : ["stringValue41300"]) { + inputField8435: Scalar2! + inputField8436: Int + inputField8437: String + inputField8438: Int + inputField8439: Boolean + inputField8440: Scalar2 + inputField8441: Scalar2 + inputField8442: Scalar2 + inputField8443: String + inputField8444: String + inputField8445: Boolean + inputField8446: String + inputField8447: String + inputField8448: Boolean + inputField8449: Scalar2 + inputField8450: Scalar2 + inputField8451: String + inputField8452: Boolean + inputField8453: String +} + +input InputObject1921 @Directive44(argument97 : ["stringValue41552"]) { + inputField8454: Scalar2! + inputField8455: Int + inputField8456: Int + inputField8457: Boolean + inputField8458: Scalar2 + inputField8459: Scalar2 + inputField8460: Scalar2 + inputField8461: String + inputField8462: String + inputField8463: Boolean + inputField8464: Scalar2 + inputField8465: Scalar2 + inputField8466: Boolean + inputField8467: String + inputField8468: String + inputField8469: String + inputField8470: String +} + +input InputObject1922 @Directive44(argument97 : ["stringValue41584"]) { + inputField8471: Scalar2! + inputField8472: Int + inputField8473: Int + inputField8474: Int + inputField8475: Int + inputField8476: Boolean + inputField8477: Scalar2 + inputField8478: Int + inputField8479: Scalar2 + inputField8480: String + inputField8481: String + inputField8482: String + inputField8483: String + inputField8484: String + inputField8485: Int + inputField8486: String + inputField8487: String + inputField8488: String + inputField8489: String + inputField8490: String + inputField8491: String + inputField8492: [String] + inputField8493: String +} + +input InputObject1923 @Directive44(argument97 : ["stringValue41814"]) { + inputField8494: Scalar2! + inputField8495: Int! + inputField8496: Int! + inputField8497: Int + inputField8498: Boolean + inputField8499: Scalar2 + inputField8500: Scalar2 + inputField8501: Scalar2 + inputField8502: Scalar2 +} + +input InputObject1924 @Directive44(argument97 : ["stringValue41837"]) { + inputField8503: String! + inputField8504: String + inputField8505: String + inputField8506: Boolean + inputField8507: Int + inputField8508: Int + inputField8509: Int + inputField8510: String + inputField8511: Int + inputField8512: Boolean + inputField8513: Scalar2 + inputField8514: Scalar2 + inputField8515: [String] +} + +input InputObject1925 @Directive44(argument97 : ["stringValue41985"]) { + inputField8516: String! + inputField8517: Enum2344 + inputField8518: Boolean + inputField8519: String +} + +input InputObject1926 @Directive44(argument97 : ["stringValue42031"]) { + inputField8520: Scalar2 + inputField8521: Int + inputField8522: String + inputField8523: Int + inputField8524: Scalar2 + inputField8525: String + inputField8526: String + inputField8527: String + inputField8528: Scalar2 + inputField8529: Scalar2 + inputField8530: Scalar2 + inputField8531: String + inputField8532: String + inputField8533: Enum2359 + inputField8534: Int + inputField8535: String + inputField8536: String +} + +input InputObject1927 @Directive44(argument97 : ["stringValue42040"]) { + inputField8537: String! + inputField8538: [Enum2360!]! + inputField8539: Scalar2 + inputField8540: Scalar2 + inputField8541: Scalar2 + inputField8542: String + inputField8543: String + inputField8544: String + inputField8545: String + inputField8546: Scalar2 + inputField8547: Scalar2 + inputField8548: Enum2344 + inputField8549: [String] + inputField8550: Boolean + inputField8551: Boolean + inputField8552: Boolean + inputField8553: Boolean + inputField8554: Scalar2 + inputField8555: String + inputField8556: [Enum2347] + inputField8557: String + inputField8558: String + inputField8559: String + inputField8560: String + inputField8561: Int + inputField8562: String + inputField8563: String + inputField8564: Int + inputField8565: Scalar2 + inputField8566: [InputObject1928] + inputField8577: Boolean + inputField8578: Boolean + inputField8579: String + inputField8580: String + inputField8581: Boolean + inputField8582: String + inputField8583: Enum2361 + inputField8584: String + inputField8585: Scalar2 + inputField8586: Boolean + inputField8587: [String] + inputField8588: String + inputField8589: InputObject1929 +} + +input InputObject1928 @Directive44(argument97 : ["stringValue42042"]) { + inputField8567: String + inputField8568: String + inputField8569: Enum584 + inputField8570: String + inputField8571: String + inputField8572: String + inputField8573: String + inputField8574: String + inputField8575: String + inputField8576: [String!] +} + +input InputObject1929 @Directive44(argument97 : ["stringValue42044"]) { + inputField8590: Enum2344 + inputField8591: InputObject1930 + inputField8598: Boolean + inputField8599: InputObject1932 + inputField8602: [String!] +} + +input InputObject193 @Directive22(argument62 : "stringValue20697") @Directive44(argument97 : ["stringValue20698", "stringValue20699"]) { + inputField768: ID! + inputField769: Int + inputField770: InputObject192 +} + +input InputObject1930 @Directive44(argument97 : ["stringValue42045"]) { + inputField8592: Scalar2! + inputField8593: Enum2349! + inputField8594: Enum2362 + inputField8595: InputObject1931 +} + +input InputObject1931 @Directive44(argument97 : ["stringValue42047"]) { + inputField8596: Scalar2! + inputField8597: [InputObject1931] +} + +input InputObject1932 @Directive44(argument97 : ["stringValue42048"]) { + inputField8600: String! + inputField8601: Enum2345! +} + +input InputObject1933 @Directive44(argument97 : ["stringValue42551"]) { + inputField8603: Scalar2 + inputField8604: String +} + +input InputObject1934 @Directive44(argument97 : ["stringValue42560"]) { + inputField8605: String! + inputField8606: Scalar2! + inputField8607: Boolean! +} + +input InputObject1935 @Directive44(argument97 : ["stringValue42566"]) { + inputField8608: String! + inputField8609: Scalar2! + inputField8610: Boolean! +} + +input InputObject1936 @Directive44(argument97 : ["stringValue42631"]) { + inputField8611: String! +} + +input InputObject1937 @Directive44(argument97 : ["stringValue42637"]) { + inputField8612: String! +} + +input InputObject1938 @Directive44(argument97 : ["stringValue42643"]) { + inputField8613: Enum1394 + inputField8614: String +} + +input InputObject1939 @Directive44(argument97 : ["stringValue42669"]) { + inputField8615: InputObject1940! + inputField8620: [Scalar2] + inputField8621: InputObject1942 +} + +input InputObject194 @Directive22(argument62 : "stringValue20706") @Directive44(argument97 : ["stringValue20707", "stringValue20708"]) { + inputField772: InputObject135 + inputField773: InputObject151 + inputField774: ID! + inputField775: String + inputField776: String +} + +input InputObject1940 @Directive44(argument97 : ["stringValue42670"]) { + inputField8616: Enum1394! + inputField8617: InputObject1941 + inputField8619: [Enum1393] +} + +input InputObject1941 @Directive44(argument97 : ["stringValue42671"]) { + inputField8618: [Enum1393] +} + +input InputObject1942 @Directive44(argument97 : ["stringValue42672"]) { + inputField8622: Boolean + inputField8623: Boolean + inputField8624: Boolean +} + +input InputObject1943 @Directive44(argument97 : ["stringValue42739"]) { + inputField8625: InputObject1940! + inputField8626: [InputObject1944] + inputField8631: InputObject1942 +} + +input InputObject1944 @Directive44(argument97 : ["stringValue42740"]) { + inputField8627: Scalar2! + inputField8628: Scalar3 + inputField8629: Scalar3 + inputField8630: Boolean +} + +input InputObject1945 @Directive44(argument97 : ["stringValue42753"]) { + inputField8632: InputObject1940! + inputField8633: [Scalar2] + inputField8634: InputObject1942 +} + +input InputObject1946 @Directive44(argument97 : ["stringValue42766"]) { + inputField8635: Scalar2 + inputField8636: Enum2407 +} + +input InputObject1947 @Directive44(argument97 : ["stringValue42774"]) { + inputField8637: Enum1394 +} + +input InputObject1948 @Directive44(argument97 : ["stringValue42780"]) { + inputField8638: InputObject1949! +} + +input InputObject1949 @Directive44(argument97 : ["stringValue42781"]) { + inputField8639: String! + inputField8640: Enum2405! + inputField8641: [String]! + inputField8642: [String] + inputField8643: [Enum1394]! + inputField8644: [InputObject1950]! + inputField8651: [String]! + inputField8652: Enum2407 +} + +input InputObject195 @Directive22(argument62 : "stringValue20712") @Directive44(argument97 : ["stringValue20713", "stringValue20714"]) { + inputField777: [ID!]! + inputField778: InputObject162! + inputField779: String +} + +input InputObject1950 @Directive44(argument97 : ["stringValue42782"]) { + inputField8645: Enum1395! + inputField8646: Enum2406! + inputField8647: Scalar2! + inputField8648: Scalar2! + inputField8649: [Enum1394] + inputField8650: [Enum1394] +} + +input InputObject1951 @Directive44(argument97 : ["stringValue42788"]) { + inputField8653: InputObject1952! +} + +input InputObject1952 @Directive44(argument97 : ["stringValue42789"]) { + inputField8654: String! + inputField8655: String! + inputField8656: String! + inputField8657: String! + inputField8658: [Enum1394]! + inputField8659: Float + inputField8660: InputObject1953 + inputField8672: [InputObject1957] + inputField8676: InputObject1958 + inputField8684: InputObject1958 + inputField8685: InputObject1963 +} + +input InputObject1953 @Directive44(argument97 : ["stringValue42790"]) { + inputField8661: Enum2408 + inputField8662: [InputObject1954] + inputField8671: String +} + +input InputObject1954 @Directive44(argument97 : ["stringValue42791"]) { + inputField8663: InputObject1955 +} + +input InputObject1955 @Directive44(argument97 : ["stringValue42792"]) { + inputField8664: InputObject1956 + inputField8669: Enum2408 + inputField8670: InputObject1955 +} + +input InputObject1956 @Directive44(argument97 : ["stringValue42793"]) { + inputField8665: Enum2409 + inputField8666: Enum2410 + inputField8667: String + inputField8668: Boolean +} + +input InputObject1957 @Directive44(argument97 : ["stringValue42794"]) { + inputField8673: Enum2411! + inputField8674: String + inputField8675: Enum1394 +} + +input InputObject1958 @Directive44(argument97 : ["stringValue42795"]) { + inputField8677: InputObject1959 + inputField8681: InputObject1961 +} + +input InputObject1959 @Directive44(argument97 : ["stringValue42796"]) { + inputField8678: InputObject1960 +} + +input InputObject196 @Directive22(argument62 : "stringValue20718") @Directive44(argument97 : ["stringValue20719", "stringValue20720"]) { + inputField780: [ID!]! + inputField781: InputObject165! + inputField782: String +} + +input InputObject1960 @Directive44(argument97 : ["stringValue42797"]) { + inputField8679: String + inputField8680: String +} + +input InputObject1961 @Directive44(argument97 : ["stringValue42798"]) { + inputField8682: InputObject1962 +} + +input InputObject1962 @Directive44(argument97 : ["stringValue42799"]) { + inputField8683: Scalar2 +} + +input InputObject1963 @Directive44(argument97 : ["stringValue42800"]) { + inputField8686: Enum2412 + inputField8687: [InputObject1964] +} + +input InputObject1964 @Directive44(argument97 : ["stringValue42801"]) { + inputField8688: Enum2413 + inputField8689: Enum2414 + inputField8690: [InputObject1965] + inputField8693: InputObject1966 +} + +input InputObject1965 @Directive44(argument97 : ["stringValue42802"]) { + inputField8691: Enum2415 + inputField8692: String +} + +input InputObject1966 @Directive44(argument97 : ["stringValue42803"]) { + inputField8694: Scalar2 +} + +input InputObject1967 @Directive44(argument97 : ["stringValue42809"]) { + inputField8695: InputObject1949! +} + +input InputObject1968 @Directive44(argument97 : ["stringValue42815"]) { + inputField8696: InputObject1952! +} + +input InputObject1969 @Directive44(argument97 : ["stringValue42822"]) { + inputField8697: Scalar2 + inputField8698: [Enum2437] +} + +input InputObject197 @Directive22(argument62 : "stringValue20724") @Directive44(argument97 : ["stringValue20725", "stringValue20726"]) { + inputField783: [ID!]! + inputField784: InputObject170! + inputField785: String +} + +input InputObject1970 @Directive44(argument97 : ["stringValue42829"]) { + inputField8699: InputObject1971 + inputField8702: Scalar2 + inputField8703: [Enum2437] +} + +input InputObject1971 @Directive44(argument97 : ["stringValue42830"]) { + inputField8700: Float + inputField8701: Float +} + +input InputObject1972 @Directive44(argument97 : ["stringValue42839"]) { + inputField8704: Scalar2 + inputField8705: Int + inputField8706: Int +} + +input InputObject1973 @Directive44(argument97 : ["stringValue42849"]) { + inputField8707: Boolean + inputField8708: [Scalar2!] + inputField8709: Scalar2 + inputField8710: Enum1399 + inputField8711: Int + inputField8712: Int +} + +input InputObject1974 @Directive44(argument97 : ["stringValue42855"]) { + inputField8713: String + inputField8714: Enum1399 +} + +input InputObject1975 @Directive44(argument97 : ["stringValue42867"]) { + inputField8715: Scalar2 + inputField8716: InputObject1976 +} + +input InputObject1976 @Directive44(argument97 : ["stringValue42868"]) { + inputField8717: Enum2438! + inputField8718: Scalar2! +} + +input InputObject1977 @Directive44(argument97 : ["stringValue42880"]) { + inputField8719: Scalar2! +} + +input InputObject1978 @Directive44(argument97 : ["stringValue42907"]) { + inputField8720: Scalar2! +} + +input InputObject1979 @Directive44(argument97 : ["stringValue42974"]) { + inputField8721: Scalar2! +} + +input InputObject198 @Directive22(argument62 : "stringValue20730") @Directive44(argument97 : ["stringValue20731", "stringValue20732"]) { + inputField786: [ID!]! + inputField787: InputObject182! + inputField788: String +} + +input InputObject1980 @Directive44(argument97 : ["stringValue42980"]) { + inputField8722: Scalar2! + inputField8723: String + inputField8724: String +} + +input InputObject1981 @Directive44(argument97 : ["stringValue42992"]) { + inputField8725: Scalar2! + inputField8726: String + inputField8727: String +} + +input InputObject1982 @Directive44(argument97 : ["stringValue43031"]) { + inputField8728: Scalar2! + inputField8729: Scalar3 + inputField8730: Scalar3 + inputField8731: Scalar2 + inputField8732: Scalar2 + inputField8733: Scalar2 + inputField8734: Scalar2 + inputField8735: Scalar2 + inputField8736: String + inputField8737: String +} + +input InputObject1983 @Directive44(argument97 : ["stringValue43045"]) { + inputField8738: String! +} + +input InputObject1984 @Directive44(argument97 : ["stringValue43051"]) { + inputField8739: String! + inputField8740: Float +} + +input InputObject1985 @Directive44(argument97 : ["stringValue43058"]) { + inputField8741: Scalar2! + inputField8742: Scalar2 + inputField8743: Enum2446 +} + +input InputObject1986 @Directive44(argument97 : ["stringValue43079"]) { + inputField8744: [Enum1408] + inputField8745: [String] + inputField8746: [String] + inputField8747: InputObject1987 + inputField8816: Boolean + inputField8817: Boolean + inputField8818: String! +} + +input InputObject1987 @Directive44(argument97 : ["stringValue43080"]) { + inputField8748: Int + inputField8749: Int + inputField8750: InputObject1988 + inputField8803: String + inputField8804: Enum2460 + inputField8805: Enum1410 + inputField8806: Int + inputField8807: Int + inputField8808: String + inputField8809: Scalar1 + inputField8810: [InputObject1067] + inputField8811: Enum2461 + inputField8812: Int + inputField8813: Boolean + inputField8814: [Enum2462] + inputField8815: String +} + +input InputObject1988 @Directive44(argument97 : ["stringValue43081"]) { + inputField8751: [Enum2447] + inputField8752: [Int] + inputField8753: [Int] + inputField8754: [String] + inputField8755: [Enum2448] + inputField8756: [Enum2449] + inputField8757: [Int] + inputField8758: [Scalar2] + inputField8759: [Int] + inputField8760: [Int] + inputField8761: [Int] + inputField8762: [Int] + inputField8763: [Float] + inputField8764: Boolean + inputField8765: Scalar4 + inputField8766: Scalar4 + inputField8767: [String] + inputField8768: [Enum2450] + inputField8769: [Scalar2] + inputField8770: [String] + inputField8771: InputObject1989 + inputField8774: [String] + inputField8775: [String] + inputField8776: [String] + inputField8777: [String] + inputField8778: [Enum2451] + inputField8779: [Scalar2] + inputField8780: [Enum2452] + inputField8781: Boolean + inputField8782: [InputObject1990] + inputField8786: Boolean + inputField8787: [Scalar2] + inputField8788: Boolean + inputField8789: [InputObject1991] + inputField8792: [Enum2453] + inputField8793: [Enum2454] + inputField8794: [Enum2455] + inputField8795: Boolean + inputField8796: [Enum2456] + inputField8797: [String] + inputField8798: [Enum2457] + inputField8799: [Enum2458] + inputField8800: [Enum2459] + inputField8801: Boolean + inputField8802: [String] +} + +input InputObject1989 @Directive44(argument97 : ["stringValue43086"]) { + inputField8772: [Int] + inputField8773: [Scalar2] +} + +input InputObject199 @Directive22(argument62 : "stringValue20734") @Directive44(argument97 : ["stringValue20735", "stringValue20736"]) { + inputField789: ID! + inputField790: Enum972 +} + +input InputObject1990 @Directive44(argument97 : ["stringValue43089"]) { + inputField8783: String! + inputField8784: String! + inputField8785: Float +} + +input InputObject1991 @Directive44(argument97 : ["stringValue43090"]) { + inputField8790: Scalar2 + inputField8791: Scalar2 +} + +input InputObject1992 @Directive44(argument97 : ["stringValue43252"]) { + inputField8819: [Enum2485] + inputField8820: Scalar4! + inputField8821: Scalar4! + inputField8822: Boolean +} + +input InputObject1993 @Directive44(argument97 : ["stringValue43259"]) { + inputField8823: [Enum2485] + inputField8824: InputObject1988 + inputField8825: [Enum2485] + inputField8826: Scalar4! + inputField8827: Scalar4! + inputField8828: Int + inputField8829: Int + inputField8830: InputObject1994 + inputField8834: [Scalar2] + inputField8835: Boolean +} + +input InputObject1994 @Directive44(argument97 : ["stringValue43260"]) { + inputField8831: String + inputField8832: Enum2460 + inputField8833: InputObject1988 +} + +input InputObject1995 @Directive44(argument97 : ["stringValue43270"]) { + inputField8836: InputObject1996 + inputField8862: [InputObject1997] + inputField8865: [Enum2491] + inputField8866: Boolean + inputField8867: Boolean + inputField8868: String! +} + +input InputObject1996 @Directive44(argument97 : ["stringValue43271"]) { + inputField8837: Enum2486 + inputField8838: Int + inputField8839: Int + inputField8840: Enum2487 + inputField8841: [Enum2488] + inputField8842: [String] + inputField8843: Int + inputField8844: Int + inputField8845: Enum2489 + inputField8846: Enum2490 + inputField8847: InputObject1988 + inputField8848: String + inputField8849: Enum2460 + inputField8850: String + inputField8851: [Enum2485] + inputField8852: Scalar3 + inputField8853: Scalar3 + inputField8854: String + inputField8855: String + inputField8856: Int + inputField8857: Int + inputField8858: [InputObject1067] + inputField8859: Enum2461 + inputField8860: Int + inputField8861: [Enum2462] +} + +input InputObject1997 @Directive44(argument97 : ["stringValue43277"]) { + inputField8863: Enum2491! + inputField8864: InputObject1996! +} + +input InputObject1998 @Directive44(argument97 : ["stringValue43442"]) { + inputField8869: Scalar2 + inputField8870: String! +} + +input InputObject1999 @Directive44(argument97 : ["stringValue43448"]) { + inputField8871: [Scalar2] + inputField8872: [Enum2485] + inputField8873: InputObject1988 + inputField8874: Scalar4 + inputField8875: Scalar4 + inputField8876: InputObject1994 + inputField8877: Boolean +} + +input InputObject2 @Directive22(argument62 : "stringValue8671") @Directive44(argument97 : ["stringValue8672", "stringValue8673"]) { + inputField10: String + inputField11: String + inputField12: String + inputField13: Scalar2 + inputField14: Scalar2 + inputField15: Enum185 + inputField16: [String] + inputField17: Boolean + inputField18: Boolean + inputField19: Boolean + inputField20: Scalar2 + inputField21: String + inputField22: Scalar2 + inputField23: Boolean + inputField24: String + inputField25: String + inputField26: Boolean + inputField27: Enum374 + inputField28: String + inputField5: [Enum158!]! + inputField6: Scalar2 + inputField7: Scalar2 + inputField8: Scalar2 + inputField9: String +} + +input InputObject20 @Directive22(argument62 : "stringValue12100") @Directive44(argument97 : ["stringValue12101"]) { + inputField83: Enum489 + inputField84: Enum490 + inputField85: InputObject21 +} + +input InputObject200 @Directive22(argument62 : "stringValue20747") @Directive44(argument97 : ["stringValue20748", "stringValue20749", "stringValue20750"]) { + inputField791: Scalar2! + inputField792: String! + inputField793: Enum973! +} + +input InputObject2000 @Directive44(argument97 : ["stringValue43454"]) { + inputField8878: Scalar2 + inputField8879: Scalar2 + inputField8880: Scalar2 + inputField8881: String + inputField8882: Int + inputField8883: Scalar2 + inputField8884: Int +} + +input InputObject2001 @Directive44(argument97 : ["stringValue43485"]) { + inputField8885: [Scalar2] +} + +input InputObject2002 @Directive44(argument97 : ["stringValue43491"]) { + inputField8886: Scalar2! + inputField8887: Enum2511 +} + +input InputObject2003 @Directive44(argument97 : ["stringValue43508"]) { + inputField8888: Scalar2! + inputField8889: Enum2512 + inputField8890: Enum2511 +} + +input InputObject2004 @Directive44(argument97 : ["stringValue43520"]) { + inputField8891: Enum2514 +} + +input InputObject2005 @Directive44(argument97 : ["stringValue43528"]) { + inputField8892: Enum2516! +} + +input InputObject2006 @Directive44(argument97 : ["stringValue43537"]) { + inputField8893: Scalar2! +} + +input InputObject2007 @Directive44(argument97 : ["stringValue43548"]) { + inputField8894: Int + inputField8895: Int + inputField8896: Enum2518 + inputField8897: Scalar2 +} + +input InputObject2008 @Directive44(argument97 : ["stringValue43557"]) { + inputField8898: Scalar2! + inputField8899: Enum2511 +} + +input InputObject2009 @Directive44(argument97 : ["stringValue43567"]) { + inputField8900: Scalar2! +} + +input InputObject201 @Directive22(argument62 : "stringValue20773") @Directive44(argument97 : ["stringValue20774", "stringValue20775", "stringValue20776"]) { + inputField794: ID! +} + +input InputObject2010 @Directive44(argument97 : ["stringValue43605"]) { + inputField8901: [Scalar2] +} + +input InputObject2011 @Directive44(argument97 : ["stringValue43618"]) { + inputField8902: Scalar2 +} + +input InputObject2012 @Directive44(argument97 : ["stringValue43645"]) { + inputField8903: Enum2516! +} + +input InputObject2013 @Directive44(argument97 : ["stringValue43654"]) { + inputField8904: Enum1413! + inputField8905: String! + inputField8906: Enum2524! +} + +input InputObject2014 @Directive44(argument97 : ["stringValue43671"]) { + inputField8907: String! +} + +input InputObject2015 @Directive44(argument97 : ["stringValue43693"]) { + inputField8908: Scalar2! + inputField8909: Enum1413! + inputField8910: InputObject2016 + inputField8923: String +} + +input InputObject2016 @Directive44(argument97 : ["stringValue43694"]) { + inputField8911: InputObject2017 + inputField8913: InputObject2018 +} + +input InputObject2017 @Directive44(argument97 : ["stringValue43695"]) { + inputField8912: Int +} + +input InputObject2018 @Directive44(argument97 : ["stringValue43696"]) { + inputField8914: [Enum1414] + inputField8915: [Enum1414] + inputField8916: [Enum2529] + inputField8917: [Enum2529] + inputField8918: InputObject2019 + inputField8922: InputObject2019 +} + +input InputObject2019 @Directive44(argument97 : ["stringValue43698"]) { + inputField8919: Scalar4 + inputField8920: Scalar4 + inputField8921: Scalar4 +} + +input InputObject202 @Directive22(argument62 : "stringValue20781") @Directive44(argument97 : ["stringValue20782", "stringValue20783", "stringValue20784"]) { + inputField795: String! + inputField796: String! + inputField797: String! + inputField798: Scalar4 + inputField799: String + inputField800: Scalar4 + inputField801: Scalar4! + inputField802: Scalar2 + inputField803: [Scalar2!]! + inputField804: [Scalar2!] + inputField805: String + inputField806: Enum974 + inputField807: Enum135 +} + +input InputObject2020 @Directive44(argument97 : ["stringValue43707"]) { + inputField8924: InputObject2016 + inputField8925: String + inputField8926: String +} + +input InputObject2021 @Directive44(argument97 : ["stringValue43713"]) { + inputField8927: String! +} + +input InputObject2022 @Directive44(argument97 : ["stringValue43727"]) { + inputField8928: String! +} + +input InputObject2023 @Directive44(argument97 : ["stringValue43748"]) { + inputField8929: Scalar2! +} + +input InputObject2024 @Directive44(argument97 : ["stringValue43771"]) { + inputField8930: Scalar2! +} + +input InputObject2025 @Directive44(argument97 : ["stringValue43781"]) { + inputField8931: Boolean + inputField8932: Scalar2 + inputField8933: Enum2534 + inputField8934: Enum2535 +} + +input InputObject2026 @Directive44(argument97 : ["stringValue43945"]) { + inputField8935: Scalar2 + inputField8936: String +} + +input InputObject2027 @Directive44(argument97 : ["stringValue43950"]) { + inputField8937: Enum1427 +} + +input InputObject2028 @Directive44(argument97 : ["stringValue43958"]) { + inputField8938: [InputObject2029] +} + +input InputObject2029 @Directive44(argument97 : ["stringValue43959"]) { + inputField8939: String + inputField8940: Scalar2 +} + +input InputObject203 @Directive22(argument62 : "stringValue20856") @Directive44(argument97 : ["stringValue20857", "stringValue20858", "stringValue20859"]) { + inputField808: ID! +} + +input InputObject2030 @Directive44(argument97 : ["stringValue43976"]) { + inputField8941: Int + inputField8942: Int + inputField8943: Int + inputField8944: String + inputField8945: String + inputField8946: [Scalar2] + inputField8947: Boolean +} + +input InputObject2031 @Directive44(argument97 : ["stringValue43986"]) { + inputField8948: [Scalar2] +} + +input InputObject2032 @Directive44(argument97 : ["stringValue43992"]) { + inputField8949: [InputObject2033] + inputField8955: Scalar2 +} + +input InputObject2033 @Directive44(argument97 : ["stringValue43993"]) { + inputField8950: String + inputField8951: Scalar2 + inputField8952: [InputObject2034] +} + +input InputObject2034 @Directive44(argument97 : ["stringValue43994"]) { + inputField8953: String + inputField8954: String +} + +input InputObject2035 @Directive44(argument97 : ["stringValue44004"]) { + inputField8956: [Scalar2]! + inputField8957: [String]! +} + +input InputObject2036 @Directive44(argument97 : ["stringValue44010"]) { + inputField8958: Scalar2 + inputField8959: String + inputField8960: String +} + +input InputObject2037 @Directive44(argument97 : ["stringValue44017"]) { + inputField8961: [Scalar2] + inputField8962: [Scalar2]! + inputField8963: Scalar3! + inputField8964: Scalar3! + inputField8965: Enum2553 +} + +input InputObject2038 @Directive44(argument97 : ["stringValue44024"]) { + inputField8966: Scalar2 + inputField8967: Scalar3! + inputField8968: Scalar3! + inputField8969: InputObject2039 + inputField8972: Int + inputField8973: Int + inputField8974: InputObject2040 + inputField9027: String + inputField9028: Enum2566 +} + +input InputObject2039 @Directive44(argument97 : ["stringValue44025"]) { + inputField8970: Scalar2! + inputField8971: Enum2554! +} + +input InputObject204 @Directive22(argument62 : "stringValue20864") @Directive44(argument97 : ["stringValue20865", "stringValue20866", "stringValue20867"]) { + inputField809: String! + inputField810: String! + inputField811: String! + inputField812: InputObject205! + inputField817: String! +} + +input InputObject2040 @Directive44(argument97 : ["stringValue44027"]) { + inputField8975: [Enum2555] + inputField8976: [Int] + inputField8977: [Int] + inputField8978: [String] + inputField8979: [Enum2556] + inputField8980: [Enum2557] + inputField8981: [Int] + inputField8982: [Scalar2] + inputField8983: [Int] + inputField8984: [Int] + inputField8985: [Int] + inputField8986: [Int] + inputField8987: [Float] + inputField8988: Boolean + inputField8989: Scalar4 + inputField8990: Scalar4 + inputField8991: [String] + inputField8992: [Enum1431] + inputField8993: [Scalar2] + inputField8994: [String] + inputField8995: InputObject2041 + inputField8998: [String] + inputField8999: [String] + inputField9000: [String] + inputField9001: [String] + inputField9002: [Enum2558] + inputField9003: [Scalar2] + inputField9004: [Enum2559] + inputField9005: Boolean + inputField9006: [InputObject2042] + inputField9010: Boolean + inputField9011: [Scalar2] + inputField9012: Boolean + inputField9013: [InputObject2043] + inputField9016: [Enum2560] + inputField9017: [Enum2561] + inputField9018: [Enum1433] + inputField9019: Boolean + inputField9020: [Enum2562] + inputField9021: [String] + inputField9022: [Enum2563] + inputField9023: [Enum2564] + inputField9024: [Enum2565] + inputField9025: Boolean + inputField9026: [String] +} + +input InputObject2041 @Directive44(argument97 : ["stringValue44031"]) { + inputField8996: [Int] + inputField8997: [Scalar2] +} + +input InputObject2042 @Directive44(argument97 : ["stringValue44034"]) { + inputField9007: String! + inputField9008: String! + inputField9009: Float +} + +input InputObject2043 @Directive44(argument97 : ["stringValue44035"]) { + inputField9014: Scalar2 + inputField9015: Scalar2 +} + +input InputObject2044 @Directive44(argument97 : ["stringValue44071"]) { + inputField9029: [Scalar2]! + inputField9030: Scalar3! + inputField9031: Scalar3! + inputField9032: [Enum1436]! + inputField9033: Enum2553 + inputField9034: Boolean +} + +input InputObject2045 @Directive44(argument97 : ["stringValue44079"]) { + inputField9035: Scalar3 + inputField9036: Scalar3 +} + +input InputObject2046 @Directive44(argument97 : ["stringValue44090"]) { + inputField9037: [Scalar2]! + inputField9038: [Enum2571]! + inputField9039: Scalar3 + inputField9040: Scalar3 +} + +input InputObject2047 @Directive44(argument97 : ["stringValue44115"]) { + inputField9041: InputObject2048! + inputField9050: InputObject2049 +} + +input InputObject2048 @Directive44(argument97 : ["stringValue44116"]) { + inputField9042: Int! + inputField9043: Int! + inputField9044: InputObject2040 + inputField9045: Scalar3! + inputField9046: Scalar3! + inputField9047: [Enum1436] + inputField9048: String + inputField9049: Enum2566 +} + +input InputObject2049 @Directive44(argument97 : ["stringValue44117"]) { + inputField9051: Scalar2 + inputField9052: [Scalar2] + inputField9053: Boolean + inputField9054: Boolean + inputField9055: Boolean + inputField9056: Enum2553 +} + +input InputObject205 @Directive22(argument62 : "stringValue20868") @Directive44(argument97 : ["stringValue20869", "stringValue20870", "stringValue20871"]) { + inputField813: String + inputField814: String! + inputField815: String + inputField816: [String!]! +} + +input InputObject2050 @Directive44(argument97 : ["stringValue44134"]) { + inputField9057: [Scalar2]! + inputField9058: Scalar3! + inputField9059: Scalar3! +} + +input InputObject2051 @Directive44(argument97 : ["stringValue44140"]) { + inputField9060: InputObject2039! + inputField9061: InputObject2052 +} + +input InputObject2052 @Directive44(argument97 : ["stringValue44141"]) { + inputField9062: Int + inputField9063: Int + inputField9064: InputObject2040 + inputField9065: String + inputField9066: Enum2566 +} + +input InputObject2053 @Directive44(argument97 : ["stringValue44158"]) { + inputField9067: [Scalar2]! + inputField9068: Scalar3! + inputField9069: Scalar3! +} + +input InputObject2054 @Directive44(argument97 : ["stringValue44165"]) { + inputField9070: Scalar2! +} + +input InputObject2055 @Directive44(argument97 : ["stringValue44181"]) { + inputField9071: Scalar2! + inputField9072: [Scalar2!]! +} + +input InputObject2056 @Directive44(argument97 : ["stringValue44187"]) { + inputField9073: Scalar2! +} + +input InputObject2057 @Directive44(argument97 : ["stringValue44193"]) { + inputField9074: Int +} + +input InputObject2058 @Directive44(argument97 : ["stringValue44210"]) { + inputField9075: Scalar2! + inputField9076: String! +} + +input InputObject2059 @Directive44(argument97 : ["stringValue44221"]) { + inputField9077: String! +} + +input InputObject206 @Directive22(argument62 : "stringValue20874") @Directive44(argument97 : ["stringValue20875", "stringValue20876", "stringValue20877"]) { + inputField818: ID! +} + +input InputObject2060 @Directive44(argument97 : ["stringValue44227"]) { + inputField9078: Scalar2! + inputField9079: Enum2572 +} + +input InputObject2061 @Directive44(argument97 : ["stringValue44234"]) { + inputField9080: Scalar2! +} + +input InputObject2062 @Directive44(argument97 : ["stringValue44240"]) { + inputField9081: Scalar2! +} + +input InputObject2063 @Directive44(argument97 : ["stringValue44246"]) { + inputField9082: Scalar2! + inputField9083: Int + inputField9084: Int +} + +input InputObject2064 @Directive44(argument97 : ["stringValue44254"]) { + inputField9085: Scalar2! + inputField9086: Int + inputField9087: Int +} + +input InputObject2065 @Directive44(argument97 : ["stringValue44267"]) { + inputField9088: Scalar2! +} + +input InputObject2066 @Directive44(argument97 : ["stringValue44273"]) { + inputField9089: Scalar2! +} + +input InputObject2067 @Directive44(argument97 : ["stringValue44283"]) { + inputField9090: Scalar2! +} + +input InputObject2068 @Directive44(argument97 : ["stringValue44289"]) { + inputField9091: Scalar2! + inputField9092: String! +} + +input InputObject2069 @Directive44(argument97 : ["stringValue44295"]) { + inputField9093: Scalar2! + inputField9094: Int + inputField9095: Int +} + +input InputObject207 @Directive22(argument62 : "stringValue20887") @Directive44(argument97 : ["stringValue20888", "stringValue20889"]) { + inputField819: Enum975 + inputField820: Float! + inputField821: Enum433! + inputField822: [Enum137!] + inputField823: ID! + inputField824: String + inputField825: String + inputField826: String + inputField827: Scalar2 + inputField828: Scalar2 + inputField829: Scalar2 +} + +input InputObject2070 @Directive44(argument97 : ["stringValue44301"]) { + inputField9096: Scalar2! + inputField9097: Int +} + +input InputObject2071 @Directive44(argument97 : ["stringValue44307"]) { + inputField9098: Scalar2! +} + +input InputObject2072 @Directive44(argument97 : ["stringValue44313"]) { + inputField9099: Scalar2! + inputField9100: Int + inputField9101: Int +} + +input InputObject2073 @Directive44(argument97 : ["stringValue44321"]) { + inputField9102: Scalar2! +} + +input InputObject2074 @Directive44(argument97 : ["stringValue44327"]) { + inputField9103: Scalar2! + inputField9104: Int + inputField9105: Int +} + +input InputObject2075 @Directive44(argument97 : ["stringValue44342"]) { + inputField9106: String! +} + +input InputObject2076 @Directive44(argument97 : ["stringValue44816"]) { + inputField9107: Scalar2! + inputField9108: Enum2688! + inputField9109: Enum2689! + inputField9110: Int + inputField9111: Int +} + +input InputObject2077 @Directive44(argument97 : ["stringValue44824"]) { + inputField9112: Scalar2! + inputField9113: Enum2688! + inputField9114: Enum2689! + inputField9115: Int + inputField9116: Int +} + +input InputObject2078 @Directive44(argument97 : ["stringValue44830"]) { + inputField9117: Scalar2! + inputField9118: Int + inputField9119: Int +} + +input InputObject2079 @Directive44(argument97 : ["stringValue44849"]) { + inputField9120: String +} + +input InputObject208 @Directive22(argument62 : "stringValue20903") @Directive44(argument97 : ["stringValue20904", "stringValue20905"]) { + inputField830: Enum975 + inputField831: String! + inputField832: ID! + inputField833: Float! + inputField834: Enum433! + inputField835: [Enum137!] + inputField836: String + inputField837: String + inputField838: String + inputField839: Scalar2 + inputField840: Scalar2 + inputField841: Scalar2 + inputField842: Scalar4 +} + +input InputObject2080 @Directive44(argument97 : ["stringValue44855"]) { + inputField9121: Scalar2 +} + +input InputObject2081 @Directive44(argument97 : ["stringValue44861"]) { + inputField9122: Int + inputField9123: Int + inputField9124: Scalar2! +} + +input InputObject2082 @Directive44(argument97 : ["stringValue44867"]) { + inputField9125: Int + inputField9126: Int + inputField9127: Scalar2! +} + +input InputObject2083 @Directive44(argument97 : ["stringValue44873"]) { + inputField9128: Int +} + +input InputObject2084 @Directive44(argument97 : ["stringValue44879"]) { + inputField9129: Scalar2! +} + +input InputObject2085 @Directive44(argument97 : ["stringValue44885"]) { + inputField9130: Scalar2! +} + +input InputObject2086 @Directive44(argument97 : ["stringValue44893"]) { + inputField9131: Scalar2! +} + +input InputObject2087 @Directive44(argument97 : ["stringValue44899"]) { + inputField9132: Scalar2! +} + +input InputObject2088 @Directive44(argument97 : ["stringValue44903"]) { + inputField9133: Scalar2! +} + +input InputObject2089 @Directive44(argument97 : ["stringValue44909"]) { + inputField9134: Scalar2! +} + +input InputObject209 @Directive22(argument62 : "stringValue20915") @Directive44(argument97 : ["stringValue20916", "stringValue20917"]) { + inputField843: Enum975 + inputField844: String! + inputField845: ID! +} + +input InputObject2090 @Directive44(argument97 : ["stringValue44917"]) { + inputField9135: Scalar2! + inputField9136: Scalar2 +} + +input InputObject2091 @Directive44(argument97 : ["stringValue44923"]) { + inputField9137: Scalar2! +} + +input InputObject2092 @Directive44(argument97 : ["stringValue44931"]) { + inputField9138: Scalar2 +} + +input InputObject2093 @Directive44(argument97 : ["stringValue44942"]) { + inputField9139: Scalar2! +} + +input InputObject2094 @Directive44(argument97 : ["stringValue44948"]) { + inputField9140: Scalar2! +} + +input InputObject2095 @Directive44(argument97 : ["stringValue44956"]) { + inputField9141: Boolean +} + +input InputObject2096 @Directive44(argument97 : ["stringValue44964"]) { + inputField9142: Scalar2! +} + +input InputObject2097 @Directive44(argument97 : ["stringValue44970"]) { + inputField9143: Scalar2! + inputField9144: Int + inputField9145: Int + inputField9146: Scalar2 +} + +input InputObject2098 @Directive44(argument97 : ["stringValue44978"]) { + inputField9147: String +} + +input InputObject2099 @Directive44(argument97 : ["stringValue44986"]) { + inputField9148: [Scalar2]! + inputField9149: Scalar2! +} + +input InputObject21 @Directive22(argument62 : "stringValue12106") @Directive44(argument97 : ["stringValue12107"]) { + inputField86: Int + inputField87: [Int] + inputField88: String + inputField89: [String] + inputField90: Boolean +} + +input InputObject210 @Directive22(argument62 : "stringValue20927") @Directive44(argument97 : ["stringValue20928", "stringValue20929"]) { + inputField846: ID! +} + +input InputObject2100 @Directive44(argument97 : ["stringValue45002"]) { + inputField9150: String! + inputField9151: Enum1468! +} + +input InputObject2101 @Directive44(argument97 : ["stringValue45013"]) { + inputField9152: Scalar2! + inputField9153: Scalar2! + inputField9154: String! +} + +input InputObject2102 @Directive44(argument97 : ["stringValue45023"]) { + inputField9155: Scalar2! + inputField9156: InputObject1200! +} + +input InputObject2103 @Directive44(argument97 : ["stringValue45030"]) { + inputField9157: Int +} + +input InputObject2104 @Directive44(argument97 : ["stringValue45213"]) { + inputField9158: Scalar2! +} + +input InputObject2105 @Directive44(argument97 : ["stringValue45219"]) { + inputField9159: Scalar2! +} + +input InputObject2106 @Directive44(argument97 : ["stringValue45225"]) { + inputField9160: Scalar2! + inputField9161: Scalar2 + inputField9162: Int +} + +input InputObject2107 @Directive44(argument97 : ["stringValue45231"]) { + inputField9163: Int + inputField9164: Int + inputField9165: Scalar2! +} + +input InputObject2108 @Directive44(argument97 : ["stringValue45239"]) { + inputField9166: Scalar2! + inputField9167: Int + inputField9168: Int +} + +input InputObject2109 @Directive44(argument97 : ["stringValue45245"]) { + inputField9169: String! +} + +input InputObject211 @Directive22(argument62 : "stringValue20933") @Directive44(argument97 : ["stringValue20934", "stringValue20935"]) { + inputField847: ID + inputField848: String! +} + +input InputObject2110 @Directive44(argument97 : ["stringValue45253"]) { + inputField9170: String! +} + +input InputObject2111 @Directive44(argument97 : ["stringValue45259"]) { + inputField9171: [String]! +} + +input InputObject2112 @Directive44(argument97 : ["stringValue45265"]) { + inputField9172: Scalar2! + inputField9173: Scalar3! + inputField9174: Scalar3! + inputField9175: Int + inputField9176: String + inputField9177: String +} + +input InputObject2113 @Directive44(argument97 : ["stringValue45271"]) { + inputField9178: Scalar2! +} + +input InputObject2114 @Directive44(argument97 : ["stringValue45277"]) { + inputField9179: String! +} + +input InputObject2115 @Directive44(argument97 : ["stringValue45283"]) { + inputField9180: Scalar2! + inputField9181: String +} + +input InputObject2116 @Directive44(argument97 : ["stringValue45289"]) { + inputField9182: Scalar2! +} + +input InputObject2117 @Directive44(argument97 : ["stringValue45295"]) { + inputField9183: Scalar2! +} + +input InputObject2118 @Directive44(argument97 : ["stringValue45303"]) { + inputField9184: Scalar2! + inputField9185: String! + inputField9186: Scalar2! + inputField9187: String! +} + +input InputObject2119 @Directive44(argument97 : ["stringValue45315"]) { + inputField9188: Int + inputField9189: Int + inputField9190: Scalar2! +} + +input InputObject212 @Directive42(argument96 : ["stringValue20943"]) @Directive44(argument97 : ["stringValue20944"]) { + inputField849: Int + inputField850: Int! +} + +input InputObject2120 @Directive44(argument97 : ["stringValue45321"]) { + inputField9191: String! + inputField9192: Scalar2 +} + +input InputObject2121 @Directive44(argument97 : ["stringValue45328"]) { + inputField9193: String! + inputField9194: Boolean +} + +input InputObject2122 @Directive44(argument97 : ["stringValue45335"]) { + inputField9195: String! +} + +input InputObject2123 @Directive44(argument97 : ["stringValue45341"]) { + inputField9196: Scalar2 +} + +input InputObject2124 @Directive44(argument97 : ["stringValue45347"]) { + inputField9197: Scalar2! + inputField9198: String! + inputField9199: Int + inputField9200: Int +} + +input InputObject2125 @Directive44(argument97 : ["stringValue45357"]) { + inputField9201: Scalar2! + inputField9202: String! + inputField9203: Int + inputField9204: Boolean +} + +input InputObject2126 @Directive44(argument97 : ["stringValue45363"]) { + inputField9205: Scalar2! + inputField9206: String! + inputField9207: Int +} + +input InputObject2127 @Directive44(argument97 : ["stringValue45371"]) { + inputField9208: Scalar2 + inputField9209: String! + inputField9210: Int + inputField9211: Int + inputField9212: Scalar2 +} + +input InputObject2128 @Directive44(argument97 : ["stringValue45377"]) { + inputField9213: Scalar2! +} + +input InputObject2129 @Directive44(argument97 : ["stringValue45383"]) { + inputField9214: String! +} + +input InputObject213 @Directive42(argument96 : ["stringValue20948"]) @Directive44(argument97 : ["stringValue20949"]) { + inputField851: ID! +} + +input InputObject2130 @Directive44(argument97 : ["stringValue45389"]) { + inputField9215: Scalar2 + inputField9216: String + inputField9217: String + inputField9218: Scalar2 +} + +input InputObject2131 @Directive44(argument97 : ["stringValue45396"]) { + inputField9219: [String]! + inputField9220: Enum2718 +} + +input InputObject2132 @Directive44(argument97 : ["stringValue45405"]) { + inputField9221: String + inputField9222: String + inputField9223: String + inputField9224: String + inputField9225: String + inputField9226: String +} + +input InputObject2133 @Directive44(argument97 : ["stringValue45619"]) { + inputField9227: String! + inputField9228: Enum2718 +} + +input InputObject2134 @Directive44(argument97 : ["stringValue45626"]) { + inputField9229: Scalar2 + inputField9230: Boolean + inputField9231: Boolean + inputField9232: Boolean + inputField9233: Boolean + inputField9234: Scalar2 + inputField9235: Boolean +} + +input InputObject2135 @Directive44(argument97 : ["stringValue45630"]) { + inputField9236: Boolean +} + +input InputObject2136 @Directive44(argument97 : ["stringValue45648"]) { + inputField9237: Scalar2! + inputField9238: String + inputField9239: String! + inputField9240: String! + inputField9241: Scalar2! + inputField9242: [Scalar2] + inputField9243: Boolean +} + +input InputObject2137 @Directive44(argument97 : ["stringValue45662"]) { + inputField9244: Scalar2 + inputField9245: String + inputField9246: Scalar2 + inputField9247: Scalar2 + inputField9248: Boolean +} + +input InputObject2138 @Directive44(argument97 : ["stringValue45674"]) { + inputField9249: Scalar2! +} + +input InputObject2139 @Directive44(argument97 : ["stringValue45680"]) { + inputField9250: [Scalar2]! +} + +input InputObject214 @Directive22(argument62 : "stringValue20951") @Directive44(argument97 : ["stringValue20952", "stringValue20953"]) { + inputField852: String + inputField853: Boolean + inputField854: Enum767 + inputField855: String + inputField856: [InputObject215] +} + +input InputObject2140 @Directive44(argument97 : ["stringValue45686"]) { + inputField9251: Scalar2! + inputField9252: Boolean +} + +input InputObject2141 @Directive44(argument97 : ["stringValue45690"]) { + inputField9253: Boolean +} + +input InputObject2142 @Directive44(argument97 : ["stringValue45696"]) { + inputField9254: [Scalar2]! +} + +input InputObject2143 @Directive44(argument97 : ["stringValue45702"]) { + inputField9255: String! +} + +input InputObject2144 @Directive44(argument97 : ["stringValue45710"]) { + inputField9256: Boolean +} + +input InputObject2145 @Directive44(argument97 : ["stringValue45716"]) { + inputField9257: Scalar2! +} + +input InputObject2146 @Directive44(argument97 : ["stringValue45722"]) { + inputField9258: Boolean +} + +input InputObject2147 @Directive44(argument97 : ["stringValue45729"]) { + inputField9259: Boolean +} + +input InputObject2148 @Directive44(argument97 : ["stringValue45735"]) { + inputField9260: Scalar2! +} + +input InputObject2149 @Directive44(argument97 : ["stringValue45742"]) { + inputField9261: String + inputField9262: [Scalar2] + inputField9263: [Scalar5] + inputField9264: String + inputField9265: String + inputField9266: Scalar2 +} + +input InputObject215 @Directive22(argument62 : "stringValue20954") @Directive44(argument97 : ["stringValue20955", "stringValue20956"]) { + inputField857: Scalar2 + inputField858: String + inputField859: String + inputField860: String + inputField861: String +} + +input InputObject2150 @Directive44(argument97 : ["stringValue45751"]) { + inputField9267: Scalar2! + inputField9268: Scalar2! + inputField9269: Scalar1 + inputField9270: Scalar1 + inputField9271: String + inputField9272: String + inputField9273: Scalar2 +} + +input InputObject2151 @Directive44(argument97 : ["stringValue45771"]) { + inputField9274: Scalar2 + inputField9275: Scalar2! + inputField9276: String + inputField9277: Scalar2! +} + +input InputObject2152 @Directive44(argument97 : ["stringValue45784"]) { + inputField9278: [Scalar2]! +} + +input InputObject2153 @Directive44(argument97 : ["stringValue45790"]) { + inputField9279: String + inputField9280: Int + inputField9281: Scalar2 + inputField9282: Scalar2 + inputField9283: Scalar2 + inputField9284: Enum2750 + inputField9285: Enum2751 + inputField9286: Enum2752 + inputField9287: Scalar2 + inputField9288: Boolean + inputField9289: Scalar5 + inputField9290: [String] + inputField9291: [Scalar2] + inputField9292: Boolean + inputField9293: Scalar2 +} + +input InputObject2154 @Directive44(argument97 : ["stringValue45805"]) { + inputField9294: Scalar2! + inputField9295: [String]! +} + +input InputObject2155 @Directive44(argument97 : ["stringValue45811"]) { + inputField9296: Scalar2 + inputField9297: Scalar2 + inputField9298: Scalar2 +} + +input InputObject2156 @Directive44(argument97 : ["stringValue45818"]) { + inputField9299: Scalar2 + inputField9300: Scalar2 + inputField9301: Scalar2 + inputField9302: String +} + +input InputObject2157 @Directive44(argument97 : ["stringValue45824"]) { + inputField9303: Scalar2! +} + +input InputObject2158 @Directive44(argument97 : ["stringValue45830"]) { + inputField9304: Boolean +} + +input InputObject2159 @Directive44(argument97 : ["stringValue45838"]) { + inputField9305: [Scalar2] + inputField9306: Scalar2 + inputField9307: Scalar2 +} + +input InputObject216 @Directive22(argument62 : "stringValue20962") @Directive44(argument97 : ["stringValue20963", "stringValue20964"]) { + inputField862: String! + inputField863: InputObject217 +} + +input InputObject2160 @Directive44(argument97 : ["stringValue45842"]) { + inputField9308: Scalar2 +} + +input InputObject2161 @Directive44(argument97 : ["stringValue45854"]) { + inputField9309: Boolean +} + +input InputObject2162 @Directive44(argument97 : ["stringValue45860"]) { + inputField9310: Enum1495! + inputField9311: Scalar2! +} + +input InputObject2163 @Directive44(argument97 : ["stringValue45866"]) { + inputField9312: Enum1495! +} + +input InputObject2164 @Directive44(argument97 : ["stringValue45874"]) { + inputField9313: String! + inputField9314: Enum1495! +} + +input InputObject2165 @Directive44(argument97 : ["stringValue45880"]) { + inputField9315: InputObject1262! +} + +input InputObject2166 @Directive44(argument97 : ["stringValue45890"]) { + inputField9316: [Scalar2]! +} + +input InputObject2167 @Directive44(argument97 : ["stringValue45896"]) { + inputField9317: String! + inputField9318: String + inputField9319: Scalar2 + inputField9320: Scalar2 + inputField9321: Scalar2 +} + +input InputObject2168 @Directive44(argument97 : ["stringValue45913"]) { + inputField9322: Scalar2! +} + +input InputObject2169 @Directive44(argument97 : ["stringValue45946"]) { + inputField9323: Scalar2! + inputField9324: Enum2754! + inputField9325: Int! + inputField9326: Int! +} + +input InputObject217 @Directive22(argument62 : "stringValue20965") @Directive44(argument97 : ["stringValue20966", "stringValue20967"]) { + inputField864: String + inputField865: Boolean + inputField866: Enum767 + inputField867: String + inputField868: [InputObject218] +} + +input InputObject2170 @Directive44(argument97 : ["stringValue45954"]) { + inputField9327: String + inputField9328: String +} + +input InputObject2171 @Directive44(argument97 : ["stringValue45969"]) { + inputField9329: Scalar2! +} + +input InputObject2172 @Directive44(argument97 : ["stringValue45975"]) { + inputField9330: Scalar2 +} + +input InputObject2173 @Directive44(argument97 : ["stringValue45981"]) { + inputField9331: Scalar2! +} + +input InputObject2174 @Directive44(argument97 : ["stringValue45987"]) { + inputField9332: Scalar2 +} + +input InputObject2175 @Directive44(argument97 : ["stringValue45993"]) { + inputField9333: String + inputField9334: String +} + +input InputObject2176 @Directive44(argument97 : ["stringValue46010"]) { + inputField9335: Scalar2! + inputField9336: [InputObject2177] + inputField9339: String +} + +input InputObject2177 @Directive44(argument97 : ["stringValue46011"]) { + inputField9337: String! + inputField9338: String! +} + +input InputObject2178 @Directive44(argument97 : ["stringValue46049"]) { + inputField9340: String! +} + +input InputObject2179 @Directive44(argument97 : ["stringValue46055"]) { + inputField9341: Scalar2! + inputField9342: Scalar2 + inputField9343: String +} + +input InputObject218 @Directive22(argument62 : "stringValue20968") @Directive44(argument97 : ["stringValue20969", "stringValue20970"]) { + inputField869: String! + inputField870: Scalar2 + inputField871: String + inputField872: String + inputField873: String + inputField874: String +} + +input InputObject2180 @Directive44(argument97 : ["stringValue46061"]) { + inputField9344: Scalar2! +} + +input InputObject2181 @Directive44(argument97 : ["stringValue46077"]) { + inputField9345: Scalar2 + inputField9346: Int! +} + +input InputObject2182 @Directive44(argument97 : ["stringValue46104"]) { + inputField9347: Scalar2! + inputField9348: String + inputField9349: Int + inputField9350: String +} + +input InputObject2183 @Directive44(argument97 : ["stringValue46143"]) { + inputField9351: Scalar2! +} + +input InputObject2184 @Directive44(argument97 : ["stringValue46156"]) { + inputField9352: Scalar2! +} + +input InputObject2185 @Directive44(argument97 : ["stringValue46162"]) { + inputField9353: String +} + +input InputObject2186 @Directive44(argument97 : ["stringValue46170"]) { + inputField9354: String! + inputField9355: String +} + +input InputObject2187 @Directive44(argument97 : ["stringValue46176"]) { + inputField9356: String! + inputField9357: String + inputField9358: String + inputField9359: String + inputField9360: Boolean + inputField9361: String + inputField9362: Boolean + inputField9363: InputObject2188 +} + +input InputObject2188 @Directive44(argument97 : ["stringValue46177"]) { + inputField9364: Enum2757! + inputField9365: Enum2758! +} + +input InputObject2189 @Directive44(argument97 : ["stringValue46266"]) { + inputField9366: String! +} + +input InputObject219 @Directive22(argument62 : "stringValue20976") @Directive44(argument97 : ["stringValue20977", "stringValue20978"]) { + inputField875: String! + inputField876: String! + inputField877: Scalar2! + inputField878: Enum767! + inputField879: String +} + +input InputObject2190 @Directive44(argument97 : ["stringValue46273"]) { + inputField9367: String + inputField9368: String + inputField9369: String + inputField9370: Boolean +} + +input InputObject2191 @Directive44(argument97 : ["stringValue47215"]) { + inputField9371: String +} + +input InputObject2192 @Directive44(argument97 : ["stringValue47270"]) { + inputField9372: Scalar2! + inputField9373: String! +} + +input InputObject2193 @Directive44(argument97 : ["stringValue47281"]) { + inputField9374: Scalar2! +} + +input InputObject2194 @Directive44(argument97 : ["stringValue47298"]) { + inputField9375: [Scalar2]! +} + +input InputObject2195 @Directive44(argument97 : ["stringValue47305"]) { + inputField9376: [String] + inputField9377: [Enum1513] + inputField9378: [Enum2870] + inputField9379: Scalar3 + inputField9380: Scalar3 + inputField9381: [Enum2871] + inputField9382: [InputObject2196] + inputField9386: InputObject2197 + inputField9439: InputObject2201 + inputField9441: InputObject2202 + inputField9445: [InputObject2203] +} + +input InputObject2196 @Directive44(argument97 : ["stringValue47308"]) { + inputField9383: Enum2872! + inputField9384: Enum2873! + inputField9385: [Enum2874] +} + +input InputObject2197 @Directive44(argument97 : ["stringValue47312"]) { + inputField9387: [Enum2875] + inputField9388: [Int] + inputField9389: [Int] + inputField9390: [String] + inputField9391: [Enum2876] + inputField9392: [Enum2877] + inputField9393: [Int] + inputField9394: [Scalar2] + inputField9395: [Int] + inputField9396: [Int] + inputField9397: [Int] + inputField9398: [Int] + inputField9399: [Float] + inputField9400: Boolean + inputField9401: Scalar4 + inputField9402: Scalar4 + inputField9403: [String] + inputField9404: [Enum2878] + inputField9405: [Scalar2] + inputField9406: [String] + inputField9407: InputObject2198 + inputField9410: [String] + inputField9411: [String] + inputField9412: [String] + inputField9413: [String] + inputField9414: [Enum2879] + inputField9415: [Scalar2] + inputField9416: [Enum2880] + inputField9417: Boolean + inputField9418: [InputObject2199] + inputField9422: Boolean + inputField9423: [Scalar2] + inputField9424: Boolean + inputField9425: [InputObject2200] + inputField9428: [Enum2881] + inputField9429: [Enum2882] + inputField9430: [Enum2883] + inputField9431: Boolean + inputField9432: [Enum2884] + inputField9433: [String] + inputField9434: [Enum2885] + inputField9435: [Enum2886] + inputField9436: [Enum2887] + inputField9437: Boolean + inputField9438: [String] +} + +input InputObject2198 @Directive44(argument97 : ["stringValue47317"]) { + inputField9408: [Int] + inputField9409: [Scalar2] +} + +input InputObject2199 @Directive44(argument97 : ["stringValue47320"]) { + inputField9419: String! + inputField9420: String! + inputField9421: Float +} + +input InputObject22 @Directive22(argument62 : "stringValue12110") @Directive44(argument97 : ["stringValue12111"]) { + inputField91: Scalar3 + inputField92: Scalar3 + inputField93: Enum474 + inputField94: Boolean +} + +input InputObject220 @Directive22(argument62 : "stringValue20984") @Directive44(argument97 : ["stringValue20985", "stringValue20986"]) { + inputField880: ID! + inputField881: InputObject221! +} + +input InputObject2200 @Directive44(argument97 : ["stringValue47321"]) { + inputField9426: Scalar2 + inputField9427: Scalar2 +} + +input InputObject2201 @Directive44(argument97 : ["stringValue47329"]) { + inputField9440: String +} + +input InputObject2202 @Directive44(argument97 : ["stringValue47330"]) { + inputField9442: Int + inputField9443: Int + inputField9444: Int +} + +input InputObject2203 @Directive44(argument97 : ["stringValue47331"]) { + inputField9446: Enum2888 + inputField9447: Enum2889 +} + +input InputObject2204 @Directive44(argument97 : ["stringValue47366"]) { + inputField9448: Enum2892! + inputField9449: String! +} + +input InputObject2205 @Directive44(argument97 : ["stringValue47425"]) { + inputField9450: Enum2892! + inputField9451: String! + inputField9452: [Enum2897] + inputField9453: Scalar2! +} + +input InputObject2206 @Directive44(argument97 : ["stringValue47430"]) { + inputField9454: String! + inputField9455: String! + inputField9456: InputObject2202 +} + +input InputObject2207 @Directive44(argument97 : ["stringValue47436"]) { + inputField9457: String! + inputField9458: Enum2891 +} + +input InputObject2208 @Directive44(argument97 : ["stringValue47442"]) { + inputField9459: InputObject2202 + inputField9460: [Enum2892] + inputField9461: [Enum2870] +} + +input InputObject2209 @Directive44(argument97 : ["stringValue47448"]) { + inputField9462: String! + inputField9463: String! +} + +input InputObject221 @Directive22(argument62 : "stringValue20987") @Directive44(argument97 : ["stringValue20988", "stringValue20989"]) { + inputField882: String + inputField883: Enum443 + inputField884: String + inputField885: String + inputField886: String + inputField887: Boolean + inputField888: Boolean +} + +input InputObject2210 @Directive44(argument97 : ["stringValue47471"]) { + inputField9464: Enum2892! + inputField9465: String! + inputField9466: InputObject2202! +} + +input InputObject2211 @Directive44(argument97 : ["stringValue47477"]) { + inputField9467: [String]! + inputField9468: String! +} + +input InputObject2212 @Directive44(argument97 : ["stringValue47486"]) { + inputField9469: [String]! +} + +input InputObject2213 @Directive44(argument97 : ["stringValue47492"]) { + inputField9470: [String]! + inputField9471: InputObject2202 +} + +input InputObject2214 @Directive44(argument97 : ["stringValue47500"]) { + inputField9472: [String]! + inputField9473: [String]! +} + +input InputObject2215 @Directive44(argument97 : ["stringValue47504"]) { + inputField9474: InputObject2202! + inputField9475: String! +} + +input InputObject2216 @Directive44(argument97 : ["stringValue47532"]) { + inputField9476: String! + inputField9477: InputObject2202! +} + +input InputObject2217 @Directive44(argument97 : ["stringValue47547"]) { + inputField9478: String! +} + +input InputObject2218 @Directive44(argument97 : ["stringValue47553"]) { + inputField9479: InputObject2202 +} + +input InputObject2219 @Directive44(argument97 : ["stringValue47566"]) { + inputField9480: String! +} + +input InputObject222 @Directive22(argument62 : "stringValue20995") @Directive44(argument97 : ["stringValue20996", "stringValue20997"]) { + inputField889: ID! + inputField890: InputObject221! +} + +input InputObject2220 @Directive44(argument97 : ["stringValue47572"]) { + inputField9481: [String]! +} + +input InputObject2221 @Directive44(argument97 : ["stringValue47584"]) { + inputField9482: InputObject2202! + inputField9483: String! +} + +input InputObject2222 @Directive44(argument97 : ["stringValue47604"]) { + inputField9484: InputObject2202! +} + +input InputObject2223 @Directive44(argument97 : ["stringValue47619"]) { + inputField9485: String! + inputField9486: [InputObject2224]! + inputField9499: Boolean +} + +input InputObject2224 @Directive44(argument97 : ["stringValue47620"]) { + inputField9487: Scalar2 + inputField9488: Scalar2 + inputField9489: Scalar4 + inputField9490: Scalar4 + inputField9491: String + inputField9492: String + inputField9493: Scalar2 + inputField9494: Scalar3 + inputField9495: Scalar3 + inputField9496: Boolean + inputField9497: Scalar4 + inputField9498: Scalar4 +} + +input InputObject2225 @Directive44(argument97 : ["stringValue47626"]) { + inputField9500: [String] +} + +input InputObject2226 @Directive44(argument97 : ["stringValue47633"]) { + inputField9501: Scalar2 + inputField9502: Scalar3 + inputField9503: Scalar3 + inputField9504: String + inputField9505: String +} + +input InputObject2227 @Directive44(argument97 : ["stringValue47639"]) { + inputField9506: Scalar2 + inputField9507: InputObject2228 + inputField9516: String +} + +input InputObject2228 @Directive44(argument97 : ["stringValue47640"]) { + inputField9508: [Enum2905] + inputField9509: [Scalar2] + inputField9510: [Enum2906] + inputField9511: [Scalar2] + inputField9512: String + inputField9513: String + inputField9514: String + inputField9515: [Enum2907] +} + +input InputObject2229 @Directive44(argument97 : ["stringValue47669"]) { + inputField9517: Boolean + inputField9518: Boolean +} + +input InputObject223 @Directive22(argument62 : "stringValue21000") @Directive44(argument97 : ["stringValue21001", "stringValue21002"]) { + inputField891: ID! + inputField892: ID! +} + +input InputObject2230 @Directive44(argument97 : ["stringValue47681"]) { + inputField9519: Scalar2 + inputField9520: Scalar3 +} + +input InputObject2231 @Directive44(argument97 : ["stringValue47691"]) { + inputField9521: Scalar2 +} + +input InputObject2232 @Directive44(argument97 : ["stringValue47712"]) { + inputField9522: Scalar2! + inputField9523: Scalar2 +} + +input InputObject2233 @Directive44(argument97 : ["stringValue47718"]) { + inputField9524: Scalar2 +} + +input InputObject2234 @Directive44(argument97 : ["stringValue47726"]) { + inputField9525: Int + inputField9526: Int + inputField9527: Scalar3 + inputField9528: InputObject2235 +} + +input InputObject2235 @Directive44(argument97 : ["stringValue47727"]) { + inputField9529: [Scalar2] + inputField9530: [String] +} + +input InputObject2236 @Directive44(argument97 : ["stringValue47737"]) { + inputField9531: Scalar2! + inputField9532: Int + inputField9533: Int +} + +input InputObject2237 @Directive44(argument97 : ["stringValue47745"]) { + inputField9534: Scalar2 + inputField9535: Int + inputField9536: Int + inputField9537: InputObject2228 + inputField9538: [Enum2913] + inputField9539: String +} + +input InputObject2238 @Directive44(argument97 : ["stringValue47752"]) { + inputField9540: Scalar2 + inputField9541: Int + inputField9542: Int + inputField9543: InputObject2239 + inputField9552: String +} + +input InputObject2239 @Directive44(argument97 : ["stringValue47753"]) { + inputField9544: [Scalar2] + inputField9545: [Scalar2] + inputField9546: [Enum2914] + inputField9547: [String] + inputField9548: InputObject2240 + inputField9551: InputObject2240 +} + +input InputObject224 @Directive22(argument62 : "stringValue21005") @Directive44(argument97 : ["stringValue21006", "stringValue21007"]) { + inputField893: InputObject225! + inputField916: InputObject227 +} + +input InputObject2240 @Directive44(argument97 : ["stringValue47755"]) { + inputField9549: Scalar3 + inputField9550: Scalar3 +} + +input InputObject2241 @Directive44(argument97 : ["stringValue47767"]) { + inputField9553: Scalar2 + inputField9554: Int + inputField9555: Int + inputField9556: InputObject2242 + inputField9559: String +} + +input InputObject2242 @Directive44(argument97 : ["stringValue47768"]) { + inputField9557: [Scalar2] + inputField9558: [String] +} + +input InputObject2243 @Directive44(argument97 : ["stringValue47774"]) { + inputField9560: Int + inputField9561: Int + inputField9562: Scalar3 + inputField9563: InputObject2244 +} + +input InputObject2244 @Directive44(argument97 : ["stringValue47775"]) { + inputField9564: [Scalar2] + inputField9565: [String] +} + +input InputObject2245 @Directive44(argument97 : ["stringValue47783"]) { + inputField9566: Scalar2 + inputField9567: Int + inputField9568: Int + inputField9569: Scalar4 + inputField9570: Scalar4 + inputField9571: InputObject2246 +} + +input InputObject2246 @Directive44(argument97 : ["stringValue47784"]) { + inputField9572: [String] + inputField9573: [String] + inputField9574: [String] + inputField9575: String + inputField9576: String + inputField9577: String + inputField9578: [String] + inputField9579: [String] + inputField9580: String + inputField9581: String + inputField9582: String + inputField9583: [String] +} + +input InputObject2247 @Directive44(argument97 : ["stringValue47792"]) { + inputField9584: Scalar2! +} + +input InputObject2248 @Directive44(argument97 : ["stringValue47798"]) { + inputField9585: Scalar2 +} + +input InputObject2249 @Directive44(argument97 : ["stringValue47805"]) { + inputField9586: Scalar2 +} + +input InputObject225 @Directive22(argument62 : "stringValue21008") @Directive44(argument97 : ["stringValue21009", "stringValue21010"]) { + inputField894: String + inputField895: String + inputField896: String + inputField897: String + inputField898: Scalar3 + inputField899: String + inputField900: String + inputField901: String + inputField902: String + inputField903: Scalar4 + inputField904: Boolean + inputField905: Int + inputField906: String + inputField907: String + inputField908: Boolean + inputField909: Int + inputField910: Enum437 + inputField911: String + inputField912: Int + inputField913: InputObject226 + inputField915: Scalar2 +} + +input InputObject2250 @Directive44(argument97 : ["stringValue47823"]) { + inputField9587: Scalar2 +} + +input InputObject2251 @Directive44(argument97 : ["stringValue47847"]) { + inputField9588: String! +} + +input InputObject2252 @Directive44(argument97 : ["stringValue47853"]) { + inputField9589: String +} + +input InputObject2253 @Directive44(argument97 : ["stringValue47867"]) { + inputField9590: String +} + +input InputObject2254 @Directive44(argument97 : ["stringValue47873"]) { + inputField9591: String + inputField9592: String + inputField9593: String +} + +input InputObject2255 @Directive44(argument97 : ["stringValue47890"]) { + inputField9594: Scalar2 + inputField9595: String + inputField9596: InputObject1353 +} + +input InputObject2256 @Directive44(argument97 : ["stringValue47898"]) { + inputField9597: Int! +} + +input InputObject2257 @Directive44(argument97 : ["stringValue47918"]) { + inputField9598: Scalar2 + inputField9599: Boolean +} + +input InputObject2258 @Directive44(argument97 : ["stringValue47931"]) { + inputField9600: InputObject2259! + inputField9603: Boolean +} + +input InputObject2259 @Directive44(argument97 : ["stringValue47932"]) { + inputField9601: Int + inputField9602: Int +} + +input InputObject226 @Directive22(argument62 : "stringValue21011") @Directive44(argument97 : ["stringValue21012", "stringValue21013"]) { + inputField914: String +} + +input InputObject2260 @Directive44(argument97 : ["stringValue47945"]) { + inputField9604: Int + inputField9605: Int! +} + +input InputObject2261 @Directive44(argument97 : ["stringValue47953"]) { + inputField9606: InputObject2259! +} + +input InputObject2262 @Directive44(argument97 : ["stringValue47982"]) { + inputField9607: InputObject2259 +} + +input InputObject2263 @Directive44(argument97 : ["stringValue47988"]) { + inputField9608: Scalar2 +} + +input InputObject2264 @Directive44(argument97 : ["stringValue47994"]) { + inputField9609: String! +} + +input InputObject2265 @Directive44(argument97 : ["stringValue48006"]) { + inputField9610: Scalar2! +} + +input InputObject2266 @Directive44(argument97 : ["stringValue48018"]) { + inputField9611: String + inputField9612: [InputObject2267] + inputField9617: InputObject2268 + inputField9636: String + inputField9637: Enum2928 + inputField9638: InputObject2269 + inputField9640: Scalar1 + inputField9641: Boolean + inputField9642: Boolean + inputField9643: String + inputField9644: [Scalar2] + inputField9645: String + inputField9646: InputObject2270 + inputField9653: Enum2930 +} + +input InputObject2267 @Directive44(argument97 : ["stringValue48019"]) { + inputField9613: Scalar2 + inputField9614: String + inputField9615: Enum2927 + inputField9616: String +} + +input InputObject2268 @Directive44(argument97 : ["stringValue48021"]) { + inputField9618: String + inputField9619: String + inputField9620: Boolean + inputField9621: String + inputField9622: Boolean + inputField9623: [String] + inputField9624: String + inputField9625: String + inputField9626: [Scalar2] + inputField9627: Scalar2 + inputField9628: Scalar2 + inputField9629: Scalar2 + inputField9630: Int + inputField9631: Int + inputField9632: String + inputField9633: String + inputField9634: String + inputField9635: String +} + +input InputObject2269 @Directive44(argument97 : ["stringValue48023"]) { + inputField9639: String +} + +input InputObject227 @Directive22(argument62 : "stringValue21014") @Directive44(argument97 : ["stringValue21015", "stringValue21016"]) { + inputField917: Boolean + inputField918: String +} + +input InputObject2270 @Directive44(argument97 : ["stringValue48024"]) { + inputField9647: InputObject2271 + inputField9649: Boolean + inputField9650: String + inputField9651: Boolean + inputField9652: Scalar2 +} + +input InputObject2271 @Directive44(argument97 : ["stringValue48025"]) { + inputField9648: [Enum2929!] +} + +input InputObject2272 @Directive44(argument97 : ["stringValue49143"]) { + inputField9654: Scalar2! + inputField9655: Scalar2! +} + +input InputObject2273 @Directive44(argument97 : ["stringValue49152"]) { + inputField9656: Enum3102! + inputField9657: Enum1592! + inputField9658: Scalar2! + inputField9659: Scalar2! + inputField9660: Scalar2 + inputField9661: Boolean + inputField9662: [InputObject2274] +} + +input InputObject2274 @Directive44(argument97 : ["stringValue49154"]) { + inputField9663: Enum3103 + inputField9664: String +} + +input InputObject2275 @Directive44(argument97 : ["stringValue49161"]) { + inputField9665: Scalar2! +} + +input InputObject2276 @Directive44(argument97 : ["stringValue49167"]) { + inputField9666: Enum1532! + inputField9667: Scalar2! + inputField9668: Int + inputField9669: InputObject1360 + inputField9670: Boolean +} + +input InputObject2277 @Directive44(argument97 : ["stringValue49189"]) { + inputField9671: Enum1592! + inputField9672: Int! + inputField9673: Int! +} + +input InputObject2278 @Directive44(argument97 : ["stringValue49198"]) { + inputField9674: Enum1592! + inputField9675: Enum1544! + inputField9676: Int! + inputField9677: Int! +} + +input InputObject2279 @Directive44(argument97 : ["stringValue49207"]) { + inputField9678: String + inputField9679: String + inputField9680: Scalar2 + inputField9681: String + inputField9682: String +} + +input InputObject228 @Directive22(argument62 : "stringValue21041") @Directive44(argument97 : ["stringValue21042", "stringValue21043"]) { + inputField919: ID! + inputField920: InputObject225! + inputField921: InputObject227 +} + +input InputObject2280 @Directive44(argument97 : ["stringValue49223"]) { + inputField9683: [String!]! + inputField9684: InputObject1360! + inputField9685: Boolean! +} + +input InputObject2281 @Directive44(argument97 : ["stringValue49233"]) { + inputField9686: Enum1592! + inputField9687: Scalar4! + inputField9688: Scalar4! +} + +input InputObject2282 @Directive44(argument97 : ["stringValue49239"]) { + inputField9689: String! + inputField9690: String! +} + +input InputObject2283 @Directive44(argument97 : ["stringValue49250"]) { + inputField9691: String! +} + +input InputObject2284 @Directive44(argument97 : ["stringValue49260"]) { + inputField9692: Scalar2 + inputField9693: Enum1532! + inputField9694: Enum1534 + inputField9695: Boolean +} + +input InputObject2285 @Directive44(argument97 : ["stringValue49268"]) { + inputField9696: Scalar2! +} + +input InputObject2286 @Directive44(argument97 : ["stringValue49272"]) { + inputField9697: Scalar2 + inputField9698: Scalar2 + inputField9699: Scalar2 +} + +input InputObject2287 @Directive44(argument97 : ["stringValue49280"]) { + inputField9700: Scalar2! +} + +input InputObject2288 @Directive44(argument97 : ["stringValue49286"]) { + inputField9701: Scalar2 +} + +input InputObject2289 @Directive44(argument97 : ["stringValue49329"]) { + inputField9702: Scalar2! +} + +input InputObject229 @Directive22(argument62 : "stringValue21050") @Directive44(argument97 : ["stringValue21051", "stringValue21052"]) { + inputField922: InputObject230! +} + +input InputObject2290 @Directive44(argument97 : ["stringValue49338"]) { + inputField9703: [String]! + inputField9704: Scalar2 +} + +input InputObject2291 @Directive44(argument97 : ["stringValue49349"]) { + inputField9705: Enum1592! + inputField9706: String! +} + +input InputObject2292 @Directive44(argument97 : ["stringValue49361"]) { + inputField9707: Scalar2! +} + +input InputObject2293 @Directive44(argument97 : ["stringValue49395"]) { + inputField9708: Scalar2! +} + +input InputObject2294 @Directive44(argument97 : ["stringValue49560"]) { + inputField9709: Scalar2! +} + +input InputObject2295 @Directive44(argument97 : ["stringValue49569"]) { + inputField9710: Enum1592! + inputField9711: Int! +} + +input InputObject2296 @Directive44(argument97 : ["stringValue49573"]) { + inputField9712: InputObject2297! +} + +input InputObject2297 @Directive44(argument97 : ["stringValue49574"]) { + inputField9713: Scalar2! + inputField9714: Scalar2! + inputField9715: [InputObject2298]! + inputField9723: InputObject2299! +} + +input InputObject2298 @Directive44(argument97 : ["stringValue49575"]) { + inputField9716: Enum3161! + inputField9717: Scalar5 + inputField9718: Enum3162! + inputField9719: Enum3163! + inputField9720: Enum3164! + inputField9721: Enum3165 + inputField9722: String +} + +input InputObject2299 @Directive44(argument97 : ["stringValue49581"]) { + inputField9724: Enum3166! + inputField9725: Enum3167 + inputField9726: Enum3168 + inputField9727: Scalar5! + inputField9728: String + inputField9729: String! +} + +input InputObject23 @Directive22(argument62 : "stringValue12379") @Directive44(argument97 : ["stringValue12380", "stringValue12381"]) { + inputField95: Enum499 + inputField96: Enum476 +} + +input InputObject230 @Directive22(argument62 : "stringValue21053") @Directive44(argument97 : ["stringValue21054", "stringValue21055"]) { + inputField923: String + inputField924: String + inputField925: String + inputField926: String + inputField927: Enum440 +} + +input InputObject2300 @Directive44(argument97 : ["stringValue49590"]) { + inputField9730: Scalar2! +} + +input InputObject2301 @Directive44(argument97 : ["stringValue49599"]) { + inputField9731: Scalar2! + inputField9732: String + inputField9733: String +} + +input InputObject2302 @Directive44(argument97 : ["stringValue49605"]) { + inputField9734: String! +} + +input InputObject2303 @Directive44(argument97 : ["stringValue49614"]) { + inputField9735: [String] + inputField9736: String + inputField9737: Boolean +} + +input InputObject2304 @Directive44(argument97 : ["stringValue49622"]) { + inputField9738: String + inputField9739: String + inputField9740: String + inputField9741: String + inputField9742: InputObject1381 + inputField9743: String +} + +input InputObject2305 @Directive44(argument97 : ["stringValue49628"]) { + inputField9744: String! +} + +input InputObject2306 @Directive44(argument97 : ["stringValue49634"]) { + inputField9745: String! +} + +input InputObject2307 @Directive44(argument97 : ["stringValue49640"]) { + inputField9746: [Enum3169]! + inputField9747: InputObject2308 +} + +input InputObject2308 @Directive44(argument97 : ["stringValue49642"]) { + inputField9748: Int + inputField9749: String +} + +input InputObject2309 @Directive44(argument97 : ["stringValue49655"]) { + inputField9750: Boolean + inputField9751: Boolean +} + +input InputObject231 @Directive42(argument96 : ["stringValue21094"]) @Directive44(argument97 : ["stringValue21095"]) { + inputField928: ID! +} + +input InputObject2310 @Directive44(argument97 : ["stringValue49664"]) { + inputField9752: [Enum3169]! +} + +input InputObject2311 @Directive44(argument97 : ["stringValue49686"]) { + inputField9753: String! +} + +input InputObject2312 @Directive44(argument97 : ["stringValue49692"]) { + inputField9754: String + inputField9755: InputObject2308 +} + +input InputObject2313 @Directive44(argument97 : ["stringValue49698"]) { + inputField9756: [Scalar2] +} + +input InputObject2314 @Directive44(argument97 : ["stringValue49883"]) { + inputField9757: String +} + +input InputObject2315 @Directive44(argument97 : ["stringValue49902"]) { + inputField9758: Boolean + inputField9759: InputObject2308 + inputField9760: InputObject2308 +} + +input InputObject2316 @Directive44(argument97 : ["stringValue49906"]) { + inputField9761: String + inputField9762: String + inputField9763: String + inputField9764: String + inputField9765: String + inputField9766: Enum3201 + inputField9767: Int! + inputField9768: InputObject2317 + inputField9773: String + inputField9774: String + inputField9775: [Enum1593] +} + +input InputObject2317 @Directive44(argument97 : ["stringValue49908"]) { + inputField9769: InputObject2318 +} + +input InputObject2318 @Directive44(argument97 : ["stringValue49909"]) { + inputField9770: String + inputField9771: String + inputField9772: String +} + +input InputObject2319 @Directive44(argument97 : ["stringValue49925"]) { + inputField9776: String! + inputField9777: String +} + +input InputObject232 @Directive22(argument62 : "stringValue21097") @Directive44(argument97 : ["stringValue21098", "stringValue21099"]) { + inputField929: ID + inputField930: String +} + +input InputObject2320 @Directive44(argument97 : ["stringValue49931"]) { + inputField9778: String + inputField9779: InputObject2308 +} + +input InputObject2321 @Directive44(argument97 : ["stringValue49937"]) { + inputField9780: String +} + +input InputObject2322 @Directive44(argument97 : ["stringValue49945"]) { + inputField9781: String! + inputField9782: Int + inputField9783: String +} + +input InputObject2323 @Directive44(argument97 : ["stringValue49958"]) { + inputField9784: Enum3202! +} + +input InputObject2324 @Directive44(argument97 : ["stringValue49965"]) { + inputField9785: String + inputField9786: Scalar2 + inputField9787: Scalar2 + inputField9788: Scalar2 + inputField9789: String + inputField9790: String + inputField9791: InputObject1381 + inputField9792: String +} + +input InputObject2325 @Directive44(argument97 : ["stringValue49971"]) { + inputField9793: String + inputField9794: String +} + +input InputObject2326 @Directive44(argument97 : ["stringValue49978"]) { + inputField9795: Scalar2! + inputField9796: Enum3203 + inputField9797: Int +} + +input InputObject2327 @Directive44(argument97 : ["stringValue49998"]) { + inputField9798: Scalar2! +} + +input InputObject2328 @Directive44(argument97 : ["stringValue50016"]) { + inputField9799: Scalar2! +} + +input InputObject2329 @Directive44(argument97 : ["stringValue50022"]) { + inputField9800: Scalar2! +} + +input InputObject233 @Directive22(argument62 : "stringValue21101") @Directive44(argument97 : ["stringValue21102", "stringValue21103"]) { + inputField931: Scalar2! + inputField932: String + inputField933: String + inputField934: Scalar2! + inputField935: Scalar2 +} + +input InputObject2330 @Directive44(argument97 : ["stringValue50030"]) { + inputField9801: Scalar2! +} + +input InputObject2331 @Directive44(argument97 : ["stringValue50037"]) { + inputField9802: Enum3208 + inputField9803: String + inputField9804: String + inputField9805: Enum3209 + inputField9806: Boolean + inputField9807: String +} + +input InputObject2332 @Directive44(argument97 : ["stringValue50154"]) { + inputField9808: Int + inputField9809: Int + inputField9810: Enum3208 + inputField9811: Enum3216 + inputField9812: String +} + +input InputObject234 @Directive22(argument62 : "stringValue21108") @Directive44(argument97 : ["stringValue21109", "stringValue21110"]) { + inputField936: ID! + inputField937: String! +} + +input InputObject235 @Directive22(argument62 : "stringValue21112") @Directive44(argument97 : ["stringValue21113", "stringValue21114"]) { + inputField938: Enum979! +} + +input InputObject236 @Directive22(argument62 : "stringValue21123") @Directive44(argument97 : ["stringValue21124", "stringValue21125", "stringValue21126"]) { + inputField939: String! + inputField940: String! +} + +input InputObject237 @Directive22(argument62 : "stringValue21186") @Directive44(argument97 : ["stringValue21187", "stringValue21188", "stringValue21189"]) { + inputField941: String! +} + +input InputObject238 @Directive22(argument62 : "stringValue21196") @Directive44(argument97 : ["stringValue21197", "stringValue21198", "stringValue21199"]) { + inputField942: String! +} + +input InputObject239 @Directive22(argument62 : "stringValue21203") @Directive44(argument97 : ["stringValue21204", "stringValue21205"]) { + inputField943: ID! + inputField944: [InputObject240] +} + +input InputObject24 @Directive44(argument97 : ["stringValue16894"]) { + inputField97: String! + inputField98: String! +} + +input InputObject240 @Directive22(argument62 : "stringValue21206") @Directive44(argument97 : ["stringValue21207", "stringValue21208"]) { + inputField945: InputObject241! + inputField949: String! + inputField950: InputObject242! + inputField956: String! + inputField957: InputObject243 + inputField962: [InputObject244!]! + inputField966: InputObject245 +} + +input InputObject241 @Directive22(argument62 : "stringValue21209") @Directive44(argument97 : ["stringValue21210", "stringValue21211"]) { + inputField946: String! + inputField947: String! + inputField948: String! +} + +input InputObject242 @Directive22(argument62 : "stringValue21212") @Directive44(argument97 : ["stringValue21213", "stringValue21214"]) { + inputField951: String! + inputField952: String! + inputField953: Scalar2 + inputField954: String + inputField955: [String!] +} + +input InputObject243 @Directive22(argument62 : "stringValue21215") @Directive44(argument97 : ["stringValue21216", "stringValue21217"]) { + inputField958: String + inputField959: String + inputField960: String + inputField961: String +} + +input InputObject244 @Directive22(argument62 : "stringValue21218") @Directive44(argument97 : ["stringValue21219", "stringValue21220"]) { + inputField963: String! + inputField964: String! + inputField965: String +} + +input InputObject245 @Directive22(argument62 : "stringValue21221") @Directive44(argument97 : ["stringValue21222", "stringValue21223"]) { + inputField967: String + inputField968: String + inputField969: String + inputField970: String + inputField971: Scalar2 + inputField972: String +} + +input InputObject246 @Directive22(argument62 : "stringValue21225") @Directive44(argument97 : ["stringValue21226", "stringValue21227"]) { + inputField973: [Scalar2!]! + inputField974: ID! +} + +input InputObject247 @Directive22(argument62 : "stringValue21298") @Directive44(argument97 : ["stringValue21299", "stringValue21300"]) { + inputField975: [String!] + inputField976: String + inputField977: String + inputField978: String +} + +input InputObject248 @Directive22(argument62 : "stringValue21301") @Directive44(argument97 : ["stringValue21302", "stringValue21303"]) { + inputField979: String! + inputField980: Enum987! +} + +input InputObject249 @Directive22(argument62 : "stringValue21360") @Directive44(argument97 : ["stringValue21361", "stringValue21362"]) { + inputField981: String + inputField982: [InputObject250] + inputField989: String + inputField990: Enum988 + inputField991: String + inputField992: Int + inputField993: Boolean +} + +input InputObject25 @Directive22(argument62 : "stringValue16895") @Directive44(argument97 : ["stringValue16896", "stringValue16897"]) { + inputField99: ID +} + +input InputObject250 @Directive22(argument62 : "stringValue21363") @Directive44(argument97 : ["stringValue21364", "stringValue21365"]) { + inputField983: String + inputField984: String + inputField985: Enum988 + inputField986: String + inputField987: String + inputField988: String +} + +input InputObject251 @Directive22(argument62 : "stringValue21388") @Directive44(argument97 : ["stringValue21389", "stringValue21390"]) { + inputField994: String! + inputField995: String! + inputField996: String! + inputField997: String! + inputField998: String! +} + +input InputObject252 @Directive22(argument62 : "stringValue21394") @Directive44(argument97 : ["stringValue21395", "stringValue21396"]) { + inputField1000: String + inputField1001: String + inputField999: ID! +} + +input InputObject253 @Directive22(argument62 : "stringValue21401") @Directive44(argument97 : ["stringValue21402", "stringValue21403"]) { + inputField1002: String + inputField1003: String! + inputField1004: String + inputField1005: String + inputField1006: Enum986 + inputField1007: String! + inputField1008: [String] +} + +input InputObject254 @Directive22(argument62 : "stringValue21407") @Directive44(argument97 : ["stringValue21408", "stringValue21409"]) { + inputField1009: String + inputField1010: ID! + inputField1011: String + inputField1012: String + inputField1013: Enum986 + inputField1014: [String] +} + +input InputObject255 @Directive22(argument62 : "stringValue21431") @Directive44(argument97 : ["stringValue21432", "stringValue21433", "stringValue21434"]) { + inputField1015: ID + inputField1016: String + inputField1017: Enum989 + inputField1018: String +} + +input InputObject256 @Directive22(argument62 : "stringValue21529") @Directive44(argument97 : ["stringValue21530", "stringValue21531", "stringValue21532"]) { + inputField1019: String + inputField1020: InputObject257 +} + +input InputObject257 @Directive22(argument62 : "stringValue21533") @Directive44(argument97 : ["stringValue21534", "stringValue21535", "stringValue21536"]) { + inputField1021: InputObject258 + inputField1029: InputObject259 + inputField1033: InputObject260 +} + +input InputObject258 @Directive22(argument62 : "stringValue21537") @Directive44(argument97 : ["stringValue21538", "stringValue21539", "stringValue21540"]) { + inputField1022: String + inputField1023: String + inputField1024: String + inputField1025: String + inputField1026: Boolean + inputField1027: Boolean + inputField1028: String +} + +input InputObject259 @Directive22(argument62 : "stringValue21541") @Directive44(argument97 : ["stringValue21542", "stringValue21543", "stringValue21544"]) { + inputField1030: Boolean + inputField1031: String + inputField1032: String @deprecated +} + +input InputObject26 @Directive44(argument97 : ["stringValue16898"]) { + inputField100: Enum865! + inputField101: String! + inputField102: Scalar2 + inputField103: Scalar2 + inputField104: Enum866 +} + +input InputObject260 @Directive22(argument62 : "stringValue21545") @Directive44(argument97 : ["stringValue21546", "stringValue21547", "stringValue21548"]) { + inputField1034: Boolean + inputField1035: String + inputField1036: Enum991 + inputField1037: String + inputField1038: String +} + +input InputObject261 @Directive22(argument62 : "stringValue21550") @Directive44(argument97 : ["stringValue21551", "stringValue21552", "stringValue21553"]) { + inputField1039: ID + inputField1040: String + inputField1041: InputObject257 +} + +input InputObject262 @Directive22(argument62 : "stringValue21555") @Directive44(argument97 : ["stringValue21556", "stringValue21557", "stringValue21558"]) { + inputField1042: ID + inputField1043: String + inputField1044: InputObject263 +} + +input InputObject263 @Directive22(argument62 : "stringValue21559") @Directive44(argument97 : ["stringValue21560", "stringValue21561", "stringValue21562"]) { + inputField1045: [InputObject264]! + inputField1049: String +} + +input InputObject264 @Directive22(argument62 : "stringValue21563") @Directive44(argument97 : ["stringValue21564", "stringValue21565", "stringValue21566"]) { + inputField1046: Enum993! + inputField1047: Enum994! + inputField1048: String +} + +input InputObject265 @Directive22(argument62 : "stringValue21570") @Directive44(argument97 : ["stringValue21571", "stringValue21572", "stringValue21573"]) { + inputField1050: ID! +} + +input InputObject266 @Directive22(argument62 : "stringValue21575") @Directive44(argument97 : ["stringValue21576"]) { + inputField1051: ID! + inputField1052: Boolean + inputField1053: String +} + +input InputObject267 @Directive22(argument62 : "stringValue21584") @Directive44(argument97 : ["stringValue21585"]) { + inputField1054: ID! + inputField1055: String! +} + +input InputObject268 @Directive22(argument62 : "stringValue21589") @Directive44(argument97 : ["stringValue21590"]) { + inputField1056: ID! + inputField1057: String! + inputField1058: Float + inputField1059: Boolean + inputField1060: Float +} + +input InputObject269 @Directive22(argument62 : "stringValue21594") @Directive44(argument97 : ["stringValue21595"]) { + inputField1061: ID! + inputField1062: Boolean +} + +input InputObject27 @Directive44(argument97 : ["stringValue16901"]) { + inputField105: Enum865! + inputField106: String! +} + +input InputObject270 @Directive22(argument62 : "stringValue21599") @Directive44(argument97 : ["stringValue21600"]) { + inputField1063: [String] + inputField1064: Float + inputField1065: Int + inputField1066: Int + inputField1067: String + inputField1068: String + inputField1069: String + inputField1070: InputObject271 + inputField1074: Int + inputField1075: String + inputField1076: String + inputField1077: String + inputField1078: String + inputField1079: Boolean + inputField1080: String + inputField1081: String +} + +input InputObject271 @Directive22(argument62 : "stringValue21601") @Directive44(argument97 : ["stringValue21602"]) { + inputField1071: String + inputField1072: String + inputField1073: String +} + +input InputObject272 @Directive22(argument62 : "stringValue21606") @Directive44(argument97 : ["stringValue21607"]) { + inputField1082: ID! +} + +input InputObject273 @Directive22(argument62 : "stringValue21614") @Directive44(argument97 : ["stringValue21615"]) { + inputField1083: Int + inputField1084: String +} + +input InputObject274 @Directive22(argument62 : "stringValue21620") @Directive44(argument97 : ["stringValue21621", "stringValue21622"]) { + inputField1085: Scalar2 + inputField1086: Int! +} + +input InputObject275 @Directive22(argument62 : "stringValue21624") @Directive44(argument97 : ["stringValue21625", "stringValue21626"]) { + inputField1087: ID + inputField1088: ID + inputField1089: Enum995! +} + +input InputObject276 @Directive22(argument62 : "stringValue21636") @Directive44(argument97 : ["stringValue21637", "stringValue21638"]) { + inputField1090: ID! + inputField1091: Enum996! + inputField1092: String +} + +input InputObject277 @Directive22(argument62 : "stringValue21648") @Directive44(argument97 : ["stringValue21649", "stringValue21650"]) { + inputField1093: ID! + inputField1094: Enum996! + inputField1095: ID! + inputField1096: [InputObject278!] +} + +input InputObject278 @Directive22(argument62 : "stringValue21651") @Directive44(argument97 : ["stringValue21652", "stringValue21653"]) { + inputField1097: Scalar2 + inputField1098: String + inputField1099: String +} + +input InputObject279 @Directive22(argument62 : "stringValue21658") @Directive44(argument97 : ["stringValue21659", "stringValue21660"]) { + inputField1100: ID! + inputField1101: Enum996! + inputField1102: ID! + inputField1103: Scalar2! +} + +input InputObject28 @Directive44(argument97 : ["stringValue16902"]) { + inputField107: Scalar2 + inputField108: [Scalar2] +} + +input InputObject280 @Directive22(argument62 : "stringValue21662") @Directive44(argument97 : ["stringValue21663"]) { + inputField1104: ID! + inputField1105: String + inputField1106: String + inputField1107: String + inputField1108: Int + inputField1109: Int + inputField1110: Int + inputField1111: Float + inputField1112: String + inputField1113: [Enum897!] +} + +input InputObject281 @Directive22(argument62 : "stringValue21667") @Directive44(argument97 : ["stringValue21668"]) { + inputField1114: ID! + inputField1115: [InputObject282] +} + +input InputObject282 @Directive22(argument62 : "stringValue21669") @Directive44(argument97 : ["stringValue21670"]) { + inputField1116: String + inputField1117: Boolean + inputField1118: String +} + +input InputObject283 @Directive22(argument62 : "stringValue21678") @Directive44(argument97 : ["stringValue21679"]) { + inputField1119: ID! + inputField1120: Int + inputField1121: String + inputField1122: String +} + +input InputObject284 @Directive22(argument62 : "stringValue21683") @Directive44(argument97 : ["stringValue21684"]) { + inputField1123: ID! + inputField1124: [InputObject285] +} + +input InputObject285 @Directive22(argument62 : "stringValue21685") @Directive44(argument97 : ["stringValue21686"]) { + inputField1125: String + inputField1126: String + inputField1127: String + inputField1128: String + inputField1129: String + inputField1130: String + inputField1131: String + inputField1132: String + inputField1133: String + inputField1134: String + inputField1135: String + inputField1136: String + inputField1137: String + inputField1138: String +} + +input InputObject286 @Directive22(argument62 : "stringValue21690") @Directive44(argument97 : ["stringValue21691"]) { + inputField1139: ID! + inputField1140: Scalar2 + inputField1141: String + inputField1142: Int + inputField1143: Scalar2 + inputField1144: Scalar2 + inputField1145: [Scalar2] +} + +input InputObject287 @Directive22(argument62 : "stringValue21702") @Directive44(argument97 : ["stringValue21703"]) { + inputField1146: ID! + inputField1147: Enum886! + inputField1148: [InputObject288!]! +} + +input InputObject288 @Directive22(argument62 : "stringValue21704") @Directive44(argument97 : ["stringValue21705"]) { + inputField1149: String! + inputField1150: Boolean! + inputField1151: InputObject289 +} + +input InputObject289 @Directive20(argument58 : "stringValue21709", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue21706") @Directive44(argument97 : ["stringValue21707", "stringValue21708"]) { + inputField1152: InputObject290 + inputField1154: InputObject291 + inputField1156: InputObject292 + inputField1170: InputObject297 + inputField1172: InputObject298 + inputField1175: InputObject299 + inputField1178: InputObject300 + inputField1184: InputObject301 + inputField1186: InputObject302 + inputField1190: InputObject303 + inputField1192: InputObject304 + inputField1194: InputObject305 + inputField1197: InputObject306 + inputField1199: InputObject307 + inputField1201: InputObject308 + inputField1203: InputObject309 + inputField1205: InputObject310 + inputField1208: InputObject311 + inputField1212: InputObject312 + inputField1214: InputObject313 + inputField1217: InputObject314 + inputField1220: InputObject315 + inputField1222: InputObject316 + inputField1224: InputObject317 + inputField1226: InputObject318 + inputField1228: InputObject319 + inputField1236: InputObject322 + inputField1238: InputObject323 + inputField1240: InputObject324 + inputField1243: InputObject325 + inputField1247: InputObject326 + inputField1252: InputObject327 + inputField1256: InputObject328 + inputField1258: InputObject329 + inputField1261: InputObject330 + inputField1263: InputObject331 + inputField1267: InputObject332 + inputField1269: InputObject333 + inputField1273: InputObject334 + inputField1276: InputObject335 + inputField1281: InputObject336 + inputField1285: InputObject337 + inputField1290: InputObject338 +} + +input InputObject29 @Directive22(argument62 : "stringValue16903") @Directive44(argument97 : ["stringValue16904", "stringValue16905"]) { + inputField109: Int + inputField110: Int + inputField111: Int +} + +input InputObject290 @Directive20(argument58 : "stringValue21713", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21710") @Directive44(argument97 : ["stringValue21711", "stringValue21712"]) { + inputField1153: [Enum717!] +} + +input InputObject291 @Directive20(argument58 : "stringValue21717", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21714") @Directive44(argument97 : ["stringValue21715", "stringValue21716"]) { + inputField1155: Enum718 +} + +input InputObject292 @Directive20(argument58 : "stringValue21721", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21718") @Directive44(argument97 : ["stringValue21719", "stringValue21720"]) { + inputField1157: [InputObject293!] + inputField1165: InputObject296 +} + +input InputObject293 @Directive20(argument58 : "stringValue21725", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21722") @Directive44(argument97 : ["stringValue21723", "stringValue21724"]) { + inputField1158: [InputObject294!] + inputField1161: [Int] + inputField1162: [InputObject295!] +} + +input InputObject294 @Directive20(argument58 : "stringValue21729", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21726") @Directive44(argument97 : ["stringValue21727", "stringValue21728"]) { + inputField1159: String + inputField1160: String +} + +input InputObject295 @Directive20(argument58 : "stringValue21733", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21730") @Directive44(argument97 : ["stringValue21731", "stringValue21732"]) { + inputField1163: String + inputField1164: String +} + +input InputObject296 @Directive20(argument58 : "stringValue21737", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21734") @Directive44(argument97 : ["stringValue21735", "stringValue21736"]) { + inputField1166: Scalar2 + inputField1167: String + inputField1168: Enum719 + inputField1169: Enum720 +} + +input InputObject297 @Directive20(argument58 : "stringValue21741", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21738") @Directive44(argument97 : ["stringValue21739", "stringValue21740"]) { + inputField1171: [Enum721] +} + +input InputObject298 @Directive20(argument58 : "stringValue21745", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21742") @Directive44(argument97 : ["stringValue21743", "stringValue21744"]) { + inputField1173: Enum718 + inputField1174: Boolean +} + +input InputObject299 @Directive20(argument58 : "stringValue21749", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21746") @Directive44(argument97 : ["stringValue21747", "stringValue21748"]) { + inputField1176: String + inputField1177: Enum722 +} + +input InputObject3 @Directive22(argument62 : "stringValue8840") @Directive44(argument97 : ["stringValue8841", "stringValue8842"]) { + inputField29: Scalar2 + inputField30: Scalar2 + inputField31: Scalar2 + inputField32: String + inputField33: String + inputField34: [String!] + inputField35: [Enum158] +} + +input InputObject30 @Directive22(argument62 : "stringValue16906") @Directive44(argument97 : ["stringValue16907", "stringValue16908"]) { + inputField112: Int + inputField113: Enum678 +} + +input InputObject300 @Directive20(argument58 : "stringValue21753", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21750") @Directive44(argument97 : ["stringValue21751", "stringValue21752"]) { + inputField1179: String + inputField1180: Boolean + inputField1181: Boolean + inputField1182: String + inputField1183: Boolean +} + +input InputObject301 @Directive20(argument58 : "stringValue21757", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21754") @Directive44(argument97 : ["stringValue21755", "stringValue21756"]) { + inputField1185: [Enum723!] +} + +input InputObject302 @Directive20(argument58 : "stringValue21761", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21758") @Directive44(argument97 : ["stringValue21759", "stringValue21760"]) { + inputField1187: [InputObject293!] + inputField1188: InputObject296 + inputField1189: Enum724 +} + +input InputObject303 @Directive20(argument58 : "stringValue21765", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21762") @Directive44(argument97 : ["stringValue21763", "stringValue21764"]) { + inputField1191: Boolean +} + +input InputObject304 @Directive20(argument58 : "stringValue21769", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21766") @Directive44(argument97 : ["stringValue21767", "stringValue21768"]) { + inputField1193: [Enum725!] +} + +input InputObject305 @Directive20(argument58 : "stringValue21773", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21770") @Directive44(argument97 : ["stringValue21771", "stringValue21772"]) { + inputField1195: Boolean + inputField1196: Enum726 +} + +input InputObject306 @Directive20(argument58 : "stringValue21777", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21774") @Directive44(argument97 : ["stringValue21775", "stringValue21776"]) { + inputField1198: [Enum727!] +} + +input InputObject307 @Directive20(argument58 : "stringValue21781", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21778") @Directive44(argument97 : ["stringValue21779", "stringValue21780"]) { + inputField1200: String +} + +input InputObject308 @Directive20(argument58 : "stringValue21785", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21782") @Directive44(argument97 : ["stringValue21783", "stringValue21784"]) { + inputField1202: [Enum728!] +} + +input InputObject309 @Directive20(argument58 : "stringValue21789", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21786") @Directive44(argument97 : ["stringValue21787", "stringValue21788"]) { + inputField1204: [Enum729!] +} + +input InputObject31 @Directive22(argument62 : "stringValue16909") @Directive44(argument97 : ["stringValue16910", "stringValue16911"]) { + inputField114: [InputObject32!] +} + +input InputObject310 @Directive20(argument58 : "stringValue21793", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21790") @Directive44(argument97 : ["stringValue21791", "stringValue21792"]) { + inputField1206: Enum730 + inputField1207: String +} + +input InputObject311 @Directive20(argument58 : "stringValue21797", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21794") @Directive44(argument97 : ["stringValue21795", "stringValue21796"]) { + inputField1209: [InputObject293!] + inputField1210: String + inputField1211: Boolean +} + +input InputObject312 @Directive20(argument58 : "stringValue21801", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21798") @Directive44(argument97 : ["stringValue21799", "stringValue21800"]) { + inputField1213: [Enum731!] +} + +input InputObject313 @Directive20(argument58 : "stringValue21805", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21802") @Directive44(argument97 : ["stringValue21803", "stringValue21804"]) { + inputField1215: Enum718 + inputField1216: Boolean +} + +input InputObject314 @Directive20(argument58 : "stringValue21809", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21806") @Directive44(argument97 : ["stringValue21807", "stringValue21808"]) { + inputField1218: Enum718 + inputField1219: Enum732 +} + +input InputObject315 @Directive20(argument58 : "stringValue21813", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21810") @Directive44(argument97 : ["stringValue21811", "stringValue21812"]) { + inputField1221: [Enum733!] +} + +input InputObject316 @Directive20(argument58 : "stringValue21817", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21814") @Directive44(argument97 : ["stringValue21815", "stringValue21816"]) { + inputField1223: Enum718 +} + +input InputObject317 @Directive20(argument58 : "stringValue21821", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21818") @Directive44(argument97 : ["stringValue21819", "stringValue21820"]) { + inputField1225: Enum734 +} + +input InputObject318 @Directive20(argument58 : "stringValue21825", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21822") @Directive44(argument97 : ["stringValue21823", "stringValue21824"]) { + inputField1227: Enum735 +} + +input InputObject319 @Directive20(argument58 : "stringValue21829", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21826") @Directive44(argument97 : ["stringValue21827", "stringValue21828"]) { + inputField1229: Enum736 + inputField1230: InputObject320 +} + +input InputObject32 @Directive22(argument62 : "stringValue16912") @Directive44(argument97 : ["stringValue16913", "stringValue16914"]) { + inputField115: ID! + inputField116: Enum683 +} + +input InputObject320 @Directive20(argument58 : "stringValue21833", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21830") @Directive44(argument97 : ["stringValue21831", "stringValue21832"]) { + inputField1231: Enum737 + inputField1232: InputObject321 +} + +input InputObject321 @Directive20(argument58 : "stringValue21837", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21834") @Directive44(argument97 : ["stringValue21835", "stringValue21836"]) { + inputField1233: Scalar2 + inputField1234: String + inputField1235: Enum738 +} + +input InputObject322 @Directive20(argument58 : "stringValue21841", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21838") @Directive44(argument97 : ["stringValue21839", "stringValue21840"]) { + inputField1237: Int +} + +input InputObject323 @Directive20(argument58 : "stringValue21845", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21842") @Directive44(argument97 : ["stringValue21843", "stringValue21844"]) { + inputField1239: Enum718 +} + +input InputObject324 @Directive20(argument58 : "stringValue21849", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21846") @Directive44(argument97 : ["stringValue21847", "stringValue21848"]) { + inputField1241: String + inputField1242: [Enum739!] +} + +input InputObject325 @Directive20(argument58 : "stringValue21853", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21850") @Directive44(argument97 : ["stringValue21851", "stringValue21852"]) { + inputField1244: Int + inputField1245: Enum740 + inputField1246: InputObject320 +} + +input InputObject326 @Directive20(argument58 : "stringValue21857", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21854") @Directive44(argument97 : ["stringValue21855", "stringValue21856"]) { + inputField1248: InputObject296 + inputField1249: Int + inputField1250: Boolean + inputField1251: InputObject296 +} + +input InputObject327 @Directive20(argument58 : "stringValue21861", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21858") @Directive44(argument97 : ["stringValue21859", "stringValue21860"]) { + inputField1253: Enum718 + inputField1254: Enum741 + inputField1255: [Enum742!] +} + +input InputObject328 @Directive20(argument58 : "stringValue21865", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21862") @Directive44(argument97 : ["stringValue21863", "stringValue21864"]) { + inputField1257: InputObject320 +} + +input InputObject329 @Directive20(argument58 : "stringValue21869", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21866") @Directive44(argument97 : ["stringValue21867", "stringValue21868"]) { + inputField1259: [InputObject293!] + inputField1260: Boolean +} + +input InputObject33 @Directive22(argument62 : "stringValue16915") @Directive44(argument97 : ["stringValue16916", "stringValue16917"]) { + inputField117: Enum680 + inputField118: String +} + +input InputObject330 @Directive20(argument58 : "stringValue21873", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21870") @Directive44(argument97 : ["stringValue21871", "stringValue21872"]) { + inputField1262: Enum718 +} + +input InputObject331 @Directive20(argument58 : "stringValue21877", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21874") @Directive44(argument97 : ["stringValue21875", "stringValue21876"]) { + inputField1264: [InputObject293!] + inputField1265: InputObject296 + inputField1266: String +} + +input InputObject332 @Directive20(argument58 : "stringValue21881", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21878") @Directive44(argument97 : ["stringValue21879", "stringValue21880"]) { + inputField1268: Enum743 +} + +input InputObject333 @Directive20(argument58 : "stringValue21885", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21882") @Directive44(argument97 : ["stringValue21883", "stringValue21884"]) { + inputField1270: String + inputField1271: Boolean + inputField1272: [Enum744!] +} + +input InputObject334 @Directive20(argument58 : "stringValue21889", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21886") @Directive44(argument97 : ["stringValue21887", "stringValue21888"]) { + inputField1274: String + inputField1275: Enum745 +} + +input InputObject335 @Directive20(argument58 : "stringValue21893", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21890") @Directive44(argument97 : ["stringValue21891", "stringValue21892"]) { + inputField1277: String + inputField1278: Enum746 + inputField1279: Enum747 + inputField1280: [Enum747!] +} + +input InputObject336 @Directive20(argument58 : "stringValue21897", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21894") @Directive44(argument97 : ["stringValue21895", "stringValue21896"]) { + inputField1282: Int + inputField1283: Enum748 + inputField1284: [Enum749!] +} + +input InputObject337 @Directive20(argument58 : "stringValue21901", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21898") @Directive44(argument97 : ["stringValue21899", "stringValue21900"]) { + inputField1286: InputObject296 + inputField1287: Enum750 + inputField1288: String + inputField1289: Int +} + +input InputObject338 @Directive20(argument58 : "stringValue21905", argument59 : false, argument60 : true) @Directive22(argument62 : "stringValue21902") @Directive44(argument97 : ["stringValue21903", "stringValue21904"]) { + inputField1291: [Enum751!] +} + +input InputObject339 @Directive22(argument62 : "stringValue21916") @Directive44(argument97 : ["stringValue21917"]) { + inputField1292: ID! + inputField1293: Enum998 +} + +input InputObject34 @Directive22(argument62 : "stringValue16918") @Directive44(argument97 : ["stringValue16919", "stringValue16920"]) { + inputField119: String + inputField120: String + inputField121: String +} + +input InputObject340 @Directive22(argument62 : "stringValue21924") @Directive44(argument97 : ["stringValue21925", "stringValue21926"]) { + inputField1294: ID! + inputField1295: Enum996! + inputField1296: String +} + +input InputObject341 @Directive22(argument62 : "stringValue21932") @Directive44(argument97 : ["stringValue21933", "stringValue21934"]) { + inputField1297: ID! + inputField1298: Enum996! + inputField1299: ID! + inputField1300: [InputObject342!] +} + +input InputObject342 @Directive22(argument62 : "stringValue21935") @Directive44(argument97 : ["stringValue21936", "stringValue21937"]) { + inputField1301: Scalar2 + inputField1302: String + inputField1303: String +} + +input InputObject343 @Directive22(argument62 : "stringValue21942") @Directive44(argument97 : ["stringValue21943", "stringValue21944"]) { + inputField1304: ID! + inputField1305: Enum996! + inputField1306: ID! + inputField1307: Scalar2! +} + +input InputObject344 @Directive22(argument62 : "stringValue21946") @Directive44(argument97 : ["stringValue21947"]) { + inputField1308: ID! + inputField1309: Enum999! + inputField1310: String + inputField1311: String + inputField1312: String +} + +input InputObject345 @Directive22(argument62 : "stringValue21955") @Directive44(argument97 : ["stringValue21956"]) { + inputField1313: ID! + inputField1314: String + inputField1315: String + inputField1316: String + inputField1317: String + inputField1318: String + inputField1319: String + inputField1320: String + inputField1321: Boolean + inputField1322: Float + inputField1323: Float + inputField1324: String +} + +input InputObject346 @Directive22(argument62 : "stringValue21960") @Directive44(argument97 : ["stringValue21961"]) { + inputField1325: ID! + inputField1326: Scalar2! + inputField1327: InputObject347! +} + +input InputObject347 @Directive22(argument62 : "stringValue21962") @Directive44(argument97 : ["stringValue21963"]) { + inputField1328: String! + inputField1329: String + inputField1330: Int + inputField1331: Int + inputField1332: Int + inputField1333: Scalar2 +} + +input InputObject348 @Directive22(argument62 : "stringValue21967") @Directive44(argument97 : ["stringValue21968"]) { + inputField1334: ID! + inputField1335: InputObject347! +} + +input InputObject349 @Directive22(argument62 : "stringValue21973") @Directive44(argument97 : ["stringValue21974", "stringValue21975"]) { + inputField1336: ID! + inputField1337: [InputObject350!] + inputField1360: Boolean + inputField1361: InputObject357 +} + +input InputObject35 @Directive22(argument62 : "stringValue16921") @Directive44(argument97 : ["stringValue16922", "stringValue16923"]) { + inputField122: String + inputField123: Boolean + inputField124: Boolean + inputField125: Boolean +} + +input InputObject350 @Directive22(argument62 : "stringValue21976") @Directive44(argument97 : ["stringValue21977", "stringValue21978"]) { + inputField1338: InputObject351 + inputField1354: InputObject355 + inputField1357: InputObject356 +} + +input InputObject351 @Directive22(argument62 : "stringValue21979") @Directive44(argument97 : ["stringValue21980", "stringValue21981"]) { + inputField1339: Enum886! + inputField1340: InputObject352 + inputField1346: InputObject352 + inputField1347: InputObject352 + inputField1348: InputObject352 + inputField1349: InputObject352 + inputField1350: InputObject352 + inputField1351: InputObject352 + inputField1352: InputObject352 + inputField1353: InputObject352 +} + +input InputObject352 @Directive22(argument62 : "stringValue21982") @Directive44(argument97 : ["stringValue21983", "stringValue21984"]) { + inputField1341: InputObject353 + inputField1344: InputObject354 +} + +input InputObject353 @Directive22(argument62 : "stringValue21985") @Directive44(argument97 : ["stringValue21986", "stringValue21987"]) { + inputField1342: String + inputField1343: String +} + +input InputObject354 @Directive22(argument62 : "stringValue21988") @Directive44(argument97 : ["stringValue21989", "stringValue21990"]) { + inputField1345: String +} + +input InputObject355 @Directive22(argument62 : "stringValue21991") @Directive44(argument97 : ["stringValue21992", "stringValue21993"]) { + inputField1355: Enum886! + inputField1356: String +} + +input InputObject356 @Directive22(argument62 : "stringValue21994") @Directive44(argument97 : ["stringValue21995", "stringValue21996"]) { + inputField1358: Enum886! + inputField1359: String +} + +input InputObject357 @Directive22(argument62 : "stringValue21997") @Directive44(argument97 : ["stringValue21998", "stringValue21999"]) { + inputField1362: Enum1000! + inputField1363: String +} + +input InputObject358 @Directive22(argument62 : "stringValue22016") @Directive44(argument97 : ["stringValue22017", "stringValue22018"]) { + inputField1364: ID! +} + +input InputObject359 @Directive22(argument62 : "stringValue22024") @Directive44(argument97 : ["stringValue22025", "stringValue22026"]) { + inputField1365: ID! + inputField1366: InputObject360 + inputField1371: InputObject362 + inputField1393: InputObject362 +} + +input InputObject36 @Directive22(argument62 : "stringValue16924") @Directive44(argument97 : ["stringValue16925", "stringValue16926"]) { + inputField126: String + inputField127: Boolean + inputField128: Boolean + inputField129: Boolean + inputField130: Boolean + inputField131: String + inputField132: Boolean + inputField133: [InputObject37!] +} + +input InputObject360 @Directive22(argument62 : "stringValue22027") @Directive44(argument97 : ["stringValue22028", "stringValue22029"]) { + inputField1367: InputObject361 +} + +input InputObject361 @Directive22(argument62 : "stringValue22030") @Directive44(argument97 : ["stringValue22031", "stringValue22032"]) { + inputField1368: String + inputField1369: String! + inputField1370: String! +} + +input InputObject362 @Directive22(argument62 : "stringValue22033") @Directive44(argument97 : ["stringValue22034", "stringValue22035"]) { + inputField1372: Enum1000! + inputField1373: InputObject363 + inputField1376: InputObject364 + inputField1380: InputObject357 + inputField1381: InputObject357 + inputField1382: InputObject357 + inputField1383: InputObject365 + inputField1386: InputObject357 + inputField1387: InputObject364 + inputField1388: InputObject365 + inputField1389: InputObject357 + inputField1390: InputObject364 + inputField1391: InputObject365 + inputField1392: InputObject357 +} + +input InputObject363 @Directive22(argument62 : "stringValue22036") @Directive44(argument97 : ["stringValue22037", "stringValue22038"]) { + inputField1374: Enum1000 + inputField1375: Enum908 +} + +input InputObject364 @Directive22(argument62 : "stringValue22039") @Directive44(argument97 : ["stringValue22040", "stringValue22041"]) { + inputField1377: Enum1000! + inputField1378: String + inputField1379: String +} + +input InputObject365 @Directive22(argument62 : "stringValue22042") @Directive44(argument97 : ["stringValue22043", "stringValue22044"]) { + inputField1384: Enum1000! + inputField1385: Boolean +} + +input InputObject366 @Directive22(argument62 : "stringValue22050") @Directive44(argument97 : ["stringValue22051", "stringValue22052"]) { + inputField1394: [ID!] + inputField1395: InputObject367 + inputField1406: InputObject369 + inputField1418: InputObject370 + inputField1428: InputObject372 +} + +input InputObject367 @Directive22(argument62 : "stringValue22053") @Directive44(argument97 : ["stringValue22054", "stringValue22055"]) { + inputField1396: String + inputField1397: Int + inputField1398: Int + inputField1399: Int + inputField1400: Int + inputField1401: Float + inputField1402: Float + inputField1403: InputObject368 +} + +input InputObject368 @Directive22(argument62 : "stringValue22056") @Directive44(argument97 : ["stringValue22057", "stringValue22058"]) { + inputField1404: Int + inputField1405: Int +} + +input InputObject369 @Directive22(argument62 : "stringValue22059") @Directive44(argument97 : ["stringValue22060", "stringValue22061"]) { + inputField1407: Enum1002 + inputField1408: Int + inputField1409: Int + inputField1410: Int + inputField1411: Boolean + inputField1412: Boolean + inputField1413: Int + inputField1414: [Int] + inputField1415: Int + inputField1416: Int + inputField1417: Int +} + +input InputObject37 @Directive22(argument62 : "stringValue16927") @Directive44(argument97 : ["stringValue16928", "stringValue16929"]) { + inputField134: String + inputField135: Enum682! +} + +input InputObject370 @Directive22(argument62 : "stringValue22066") @Directive44(argument97 : ["stringValue22067", "stringValue22068"]) { + inputField1419: Int + inputField1420: InputObject371 + inputField1423: InputObject371 + inputField1424: Int + inputField1425: Boolean + inputField1426: Boolean + inputField1427: Scalar2 +} + +input InputObject371 @Directive22(argument62 : "stringValue22069") @Directive44(argument97 : ["stringValue22070", "stringValue22071"]) { + inputField1421: Int + inputField1422: Int +} + +input InputObject372 @Directive22(argument62 : "stringValue22072") @Directive44(argument97 : ["stringValue22073", "stringValue22074"]) { + inputField1429: Int + inputField1430: Int + inputField1431: [InputObject373] + inputField1434: [InputObject374] + inputField1437: [InputObject374] +} + +input InputObject373 @Directive22(argument62 : "stringValue22075") @Directive44(argument97 : ["stringValue22076", "stringValue22077"]) { + inputField1432: Enum177 + inputField1433: Int +} + +input InputObject374 @Directive22(argument62 : "stringValue22078") @Directive44(argument97 : ["stringValue22079", "stringValue22080"]) { + inputField1435: Enum177 + inputField1436: Boolean +} + +input InputObject375 @Directive22(argument62 : "stringValue22095") @Directive44(argument97 : ["stringValue22096", "stringValue22097"]) { + inputField1438: Scalar2 + inputField1439: Scalar2 + inputField1440: String + inputField1441: [Scalar2] + inputField1442: InputObject376 + inputField1448: [Enum1004] + inputField1449: Scalar2 + inputField1450: InputObject372 + inputField1451: InputObject370 + inputField1452: String +} + +input InputObject376 @Directive22(argument62 : "stringValue22098") @Directive44(argument97 : ["stringValue22099", "stringValue22100"]) { + inputField1443: Scalar2! + inputField1444: InputObject377 +} + +input InputObject377 @Directive22(argument62 : "stringValue22101") @Directive44(argument97 : ["stringValue22102", "stringValue22103"]) { + inputField1445: Float + inputField1446: Scalar2 + inputField1447: Enum1003! +} + +input InputObject378 @Directive22(argument62 : "stringValue22160") @Directive44(argument97 : ["stringValue22161", "stringValue22162"]) { + inputField1453: Scalar2! + inputField1454: Scalar2 +} + +input InputObject379 @Directive22(argument62 : "stringValue22168") @Directive44(argument97 : ["stringValue22169", "stringValue22170"]) { + inputField1455: Enum1006 + inputField1456: Enum1005 +} + +input InputObject38 @Directive22(argument62 : "stringValue16930") @Directive44(argument97 : ["stringValue16931", "stringValue16932"]) { + inputField136: Enum212 + inputField137: Int + inputField138: Int + inputField139: Int +} + +input InputObject380 @Directive22(argument62 : "stringValue22178") @Directive44(argument97 : ["stringValue22179", "stringValue22180"]) { + inputField1457: [InputObject381!]! + inputField1482: Scalar2 + inputField1483: InputObject389 + inputField1486: Boolean +} + +input InputObject381 @Directive22(argument62 : "stringValue22181") @Directive44(argument97 : ["stringValue22182", "stringValue22183"]) { + inputField1458: Scalar2! + inputField1459: [InputObject69!]! + inputField1460: InputObject382 + inputField1469: [InputObject384] +} + +input InputObject382 @Directive22(argument62 : "stringValue22184") @Directive44(argument97 : ["stringValue22185", "stringValue22186"]) { + inputField1461: Scalar5 + inputField1462: InputObject383 + inputField1468: [Enum1007] +} + +input InputObject383 @Directive22(argument62 : "stringValue22187") @Directive44(argument97 : ["stringValue22188", "stringValue22189"]) @Directive51 { + inputField1463: Boolean + inputField1464: Int + inputField1465: Int + inputField1466: Boolean + inputField1467: Boolean +} + +input InputObject384 @Directive22(argument62 : "stringValue22194") @Directive44(argument97 : ["stringValue22195", "stringValue22196"]) { + inputField1470: Scalar2! + inputField1471: InputObject383 + inputField1472: InputObject385 + inputField1481: [Enum1007] +} + +input InputObject385 @Directive22(argument62 : "stringValue22197") @Directive44(argument97 : ["stringValue22198", "stringValue22199"]) { + inputField1473: InputObject386 +} + +input InputObject386 @Directive22(argument62 : "stringValue22200") @Directive44(argument97 : ["stringValue22201", "stringValue22202"]) { + inputField1474: Enum1008! + inputField1475: InputObject387 + inputField1478: [InputObject388] +} + +input InputObject387 @Directive22(argument62 : "stringValue22206") @Directive44(argument97 : ["stringValue22207", "stringValue22208"]) { + inputField1476: String! + inputField1477: Scalar2 +} + +input InputObject388 @Directive22(argument62 : "stringValue22209") @Directive44(argument97 : ["stringValue22210", "stringValue22211"]) { + inputField1479: Int! + inputField1480: InputObject387! +} + +input InputObject389 @Directive22(argument62 : "stringValue22212") @Directive44(argument97 : ["stringValue22213", "stringValue22214"]) { + inputField1484: Scalar2 + inputField1485: Enum1009 +} + +input InputObject39 @Directive22(argument62 : "stringValue16933") @Directive44(argument97 : ["stringValue16934", "stringValue16935"]) { + inputField140: Enum212 + inputField141: Int + inputField142: Int + inputField143: Int +} + +input InputObject390 @Directive22(argument62 : "stringValue22223") @Directive44(argument97 : ["stringValue22224", "stringValue22225"]) { + inputField1487: Scalar2! + inputField1488: [InputObject391!] +} + +input InputObject391 @Directive22(argument62 : "stringValue22226") @Directive44(argument97 : ["stringValue22227", "stringValue22228"]) { + inputField1489: Enum1010 + inputField1490: Scalar2 +} + +input InputObject392 @Directive44(argument97 : ["stringValue22241"]) { + inputField1491: InputObject393! + inputField1494: Enum125! +} + +input InputObject393 @Directive44(argument97 : ["stringValue22242"]) { + inputField1492: [Scalar2] + inputField1493: Scalar2 +} + +input InputObject394 @Directive44(argument97 : ["stringValue22252"]) { + inputField1495: InputObject393! + inputField1496: Enum126! + inputField1497: Enum127! +} + +input InputObject395 @Directive44(argument97 : ["stringValue22256"]) { + inputField1498: InputObject393! +} + +input InputObject396 @Directive44(argument97 : ["stringValue22260"]) { + inputField1499: InputObject393! + inputField1500: Enum128! + inputField1501: String! +} + +input InputObject397 @Directive44(argument97 : ["stringValue22264"]) { + inputField1502: InputObject393! +} + +input InputObject398 @Directive44(argument97 : ["stringValue22268"]) { + inputField1503: InputObject393! +} + +input InputObject399 @Directive44(argument97 : ["stringValue22272"]) { + inputField1504: InputObject393! + inputField1505: Scalar2! +} + +input InputObject4 @Directive22(argument62 : "stringValue8876") @Directive44(argument97 : ["stringValue8877", "stringValue8878"]) { + inputField36: String + inputField37: String + inputField38: Int + inputField39: String +} + +input InputObject40 @Directive44(argument97 : ["stringValue16936"]) { + inputField144: String! + inputField145: Boolean! +} + +input InputObject400 @Directive44(argument97 : ["stringValue22276"]) { + inputField1506: InputObject393! + inputField1507: [Enum129]! +} + +input InputObject401 @Directive44(argument97 : ["stringValue22280"]) { + inputField1508: InputObject393! +} + +input InputObject402 @Directive44(argument97 : ["stringValue22284"]) { + inputField1509: InputObject393! + inputField1510: Enum130! +} + +input InputObject403 @Directive44(argument97 : ["stringValue22289"]) { + inputField1511: String! + inputField1512: [InputObject404]! +} + +input InputObject404 @Directive44(argument97 : ["stringValue22290"]) { + inputField1513: String! + inputField1514: String! + inputField1515: [String]! + inputField1516: Scalar2! +} + +input InputObject405 @Directive44(argument97 : ["stringValue22296"]) { + inputField1517: String! + inputField1518: Scalar2! + inputField1519: Enum1011! +} + +input InputObject406 @Directive44(argument97 : ["stringValue22312"]) { + inputField1520: String! + inputField1521: String! + inputField1522: String + inputField1523: String + inputField1524: [String] + inputField1525: Scalar2 + inputField1526: String + inputField1527: String + inputField1528: Enum1013! + inputField1529: Int +} + +input InputObject407 @Directive44(argument97 : ["stringValue22332"]) { + inputField1530: Scalar2! +} + +input InputObject408 @Directive44(argument97 : ["stringValue22338"]) { + inputField1531: Scalar2! + inputField1532: String! + inputField1533: String! + inputField1534: String! + inputField1535: String + inputField1536: String! +} + +input InputObject409 @Directive44(argument97 : ["stringValue22349"]) { + inputField1537: Scalar2! +} + +input InputObject41 @Directive44(argument97 : ["stringValue16937"]) { + inputField146: String + inputField147: String + inputField148: String + inputField149: String + inputField150: String +} + +input InputObject410 @Directive44(argument97 : ["stringValue22355"]) { + inputField1538: Scalar2! +} + +input InputObject411 @Directive44(argument97 : ["stringValue22361"]) { + inputField1539: Scalar2! +} + +input InputObject412 @Directive44(argument97 : ["stringValue22367"]) { + inputField1540: Scalar2! + inputField1541: String + inputField1542: String + inputField1543: String + inputField1544: [Scalar2] + inputField1545: [String] + inputField1546: Float + inputField1547: Scalar2 + inputField1548: String + inputField1549: Int + inputField1550: [InputObject413] + inputField1553: Scalar2 +} + +input InputObject413 @Directive44(argument97 : ["stringValue22368"]) { + inputField1551: String! + inputField1552: Boolean! +} + +input InputObject414 @Directive44(argument97 : ["stringValue22375"]) { + inputField1554: Boolean! + inputField1555: String +} + +input InputObject415 @Directive44(argument97 : ["stringValue22382"]) { + inputField1556: Scalar2! +} + +input InputObject416 @Directive44(argument97 : ["stringValue22407"]) { + inputField1557: InputObject417! +} + +input InputObject417 @Directive44(argument97 : ["stringValue22408"]) { + inputField1558: Scalar2 + inputField1559: Scalar4 + inputField1560: Scalar4 + inputField1561: Scalar4 + inputField1562: Scalar4 + inputField1563: Scalar4 + inputField1564: Scalar4 + inputField1565: Scalar4 + inputField1566: String + inputField1567: String + inputField1568: Enum1017 + inputField1569: Enum1018 + inputField1570: Scalar2 + inputField1571: InputObject418 + inputField1579: Scalar2 + inputField1580: InputObject420 + inputField1614: Enum1019 + inputField1615: String + inputField1616: InputObject422 + inputField1637: Scalar2 + inputField1638: Scalar2 + inputField1639: Scalar2 + inputField1640: Scalar2 + inputField1641: Scalar2 + inputField1642: Scalar2 + inputField1643: String + inputField1644: Scalar2 + inputField1645: String + inputField1646: Enum1021 + inputField1647: Enum1021 + inputField1648: Enum1021 + inputField1649: Enum1021 +} + +input InputObject418 @Directive44(argument97 : ["stringValue22409"]) { + inputField1572: Scalar2 + inputField1573: String + inputField1574: String + inputField1575: [Enum1018] + inputField1576: InputObject419 +} + +input InputObject419 @Directive44(argument97 : ["stringValue22410"]) { + inputField1577: String + inputField1578: String +} + +input InputObject42 @Directive22(argument62 : "stringValue17195") @Directive44(argument97 : ["stringValue17196", "stringValue17197"]) { + inputField151: Enum867 + inputField152: Enum868 + inputField153: Boolean! + inputField154: Enum869 +} + +input InputObject420 @Directive44(argument97 : ["stringValue22411"]) { + inputField1581: Scalar2 + inputField1582: String + inputField1583: Float + inputField1584: Float + inputField1585: String + inputField1586: Float + inputField1587: Int + inputField1588: Int + inputField1589: Int + inputField1590: String + inputField1591: String + inputField1592: String + inputField1593: String + inputField1594: String + inputField1595: [String] + inputField1596: String + inputField1597: String + inputField1598: String + inputField1599: String + inputField1600: String + inputField1601: String + inputField1602: Scalar2 + inputField1603: Int + inputField1604: Int + inputField1605: Int + inputField1606: String + inputField1607: String + inputField1608: String + inputField1609: [InputObject421] + inputField1612: String + inputField1613: String +} + +input InputObject421 @Directive44(argument97 : ["stringValue22412"]) { + inputField1610: String + inputField1611: String +} + +input InputObject422 @Directive44(argument97 : ["stringValue22413"]) { + inputField1617: Scalar2 + inputField1618: Int + inputField1619: String + inputField1620: Enum1020 + inputField1621: Scalar4 + inputField1622: Scalar4 + inputField1623: Int + inputField1624: Int + inputField1625: Int + inputField1626: Scalar2 + inputField1627: InputObject423 + inputField1636: String +} + +input InputObject423 @Directive44(argument97 : ["stringValue22414"]) { + inputField1628: String + inputField1629: String + inputField1630: String + inputField1631: String + inputField1632: String + inputField1633: String + inputField1634: String + inputField1635: Scalar2 +} + +input InputObject424 @Directive44(argument97 : ["stringValue22418"]) { + inputField1650: InputObject425! +} + +input InputObject425 @Directive44(argument97 : ["stringValue22419"]) { + inputField1651: Scalar2 + inputField1652: Scalar4 + inputField1653: Scalar4 + inputField1654: Scalar2! + inputField1655: InputObject417 + inputField1656: String + inputField1657: Enum1022 + inputField1658: Enum1023 + inputField1659: [InputObject426] + inputField1667: Scalar2 + inputField1668: Scalar2 + inputField1669: InputObject418 +} + +input InputObject426 @Directive44(argument97 : ["stringValue22422"]) { + inputField1660: Int! + inputField1661: Scalar4! + inputField1662: Scalar4! + inputField1663: String! + inputField1664: String! + inputField1665: String! + inputField1666: String! +} + +input InputObject427 @Directive44(argument97 : ["stringValue22432"]) { + inputField1670: InputObject428! +} + +input InputObject428 @Directive44(argument97 : ["stringValue22433"]) { + inputField1671: Scalar2 + inputField1672: Scalar4 + inputField1673: Scalar4 + inputField1674: Scalar4 + inputField1675: String + inputField1676: String + inputField1677: Scalar2! + inputField1678: Enum1024! + inputField1679: Enum1025 +} + +input InputObject429 @Directive44(argument97 : ["stringValue22443"]) { + inputField1680: InputObject430! +} + +input InputObject43 @Directive22(argument62 : "stringValue17214") @Directive44(argument97 : ["stringValue17215", "stringValue17216"]) { + inputField155: Enum870 + inputField156: Enum868 + inputField157: Boolean! + inputField158: Enum869 +} + +input InputObject430 @Directive44(argument97 : ["stringValue22444"]) { + inputField1681: Scalar2 + inputField1682: Enum1018! + inputField1683: String! + inputField1684: Scalar2 + inputField1685: [Scalar2] + inputField1686: InputObject431 + inputField1692: String + inputField1693: Boolean + inputField1694: Scalar2 + inputField1695: InputObject418 + inputField1696: Scalar2 + inputField1697: String + inputField1698: Scalar2 + inputField1699: String +} + +input InputObject431 @Directive44(argument97 : ["stringValue22445"]) { + inputField1687: Scalar2 + inputField1688: Enum1026 + inputField1689: Enum1027 + inputField1690: Enum1028 + inputField1691: Scalar2 +} + +input InputObject432 @Directive44(argument97 : ["stringValue22458"]) { + inputField1700: [Scalar2]! +} + +input InputObject433 @Directive44(argument97 : ["stringValue22464"]) { + inputField1701: [Scalar2]! +} + +input InputObject434 @Directive44(argument97 : ["stringValue22470"]) { + inputField1702: Scalar2! +} + +input InputObject435 @Directive44(argument97 : ["stringValue22474"]) { + inputField1703: [Scalar2]! +} + +input InputObject436 @Directive44(argument97 : ["stringValue22478"]) { + inputField1704: Scalar2! +} + +input InputObject437 @Directive44(argument97 : ["stringValue22482"]) { + inputField1705: Scalar2! +} + +input InputObject438 @Directive44(argument97 : ["stringValue22486"]) { + inputField1706: Scalar2! +} + +input InputObject439 @Directive44(argument97 : ["stringValue22490"]) { + inputField1707: Scalar2 + inputField1708: [Enum1018] +} + +input InputObject44 @Directive22(argument62 : "stringValue17225") @Directive44(argument97 : ["stringValue17226", "stringValue17227"]) { + inputField159: String! + inputField160: Boolean! +} + +input InputObject440 @Directive44(argument97 : ["stringValue22496"]) { + inputField1709: Scalar2! + inputField1710: InputObject425! + inputField1711: [Enum1029] +} + +input InputObject441 @Directive44(argument97 : ["stringValue22501"]) { + inputField1712: InputObject442! +} + +input InputObject442 @Directive44(argument97 : ["stringValue22502"]) { + inputField1713: Scalar2 + inputField1714: Scalar4 + inputField1715: Scalar4 + inputField1716: Scalar4 + inputField1717: Scalar2! + inputField1718: Scalar2! + inputField1719: String +} + +input InputObject443 @Directive44(argument97 : ["stringValue22510"]) { + inputField1720: Scalar2! + inputField1721: InputObject428! +} + +input InputObject444 @Directive44(argument97 : ["stringValue22514"]) { + inputField1722: Scalar2! + inputField1723: InputObject417! + inputField1724: [Enum1030]! +} + +input InputObject445 @Directive44(argument97 : ["stringValue22519"]) { + inputField1725: Scalar2! + inputField1726: InputObject430! +} + +input InputObject446 @Directive44(argument97 : ["stringValue22523"]) { + inputField1727: Scalar2! + inputField1728: [Scalar2]! +} + +input InputObject447 @Directive44(argument97 : ["stringValue22527"]) { + inputField1729: Scalar2! + inputField1730: InputObject431! +} + +input InputObject448 @Directive44(argument97 : ["stringValue22531"]) { + inputField1731: InputObject449! +} + +input InputObject449 @Directive44(argument97 : ["stringValue22532"]) { + inputField1732: Scalar2 + inputField1733: Scalar4 + inputField1734: Scalar4 + inputField1735: Scalar2 + inputField1736: InputObject422 + inputField1737: Scalar2 + inputField1738: InputObject420 + inputField1739: String + inputField1740: Scalar4 + inputField1741: Scalar4 + inputField1742: Enum1031 + inputField1743: String! +} + +input InputObject45 @Directive22(argument62 : "stringValue17238") @Directive44(argument97 : ["stringValue17239", "stringValue17240"]) { + inputField161: String! + inputField162: String! + inputField163: [ID!] + inputField164: [InputObject46!] +} + +input InputObject450 @Directive44(argument97 : ["stringValue22542"]) { + inputField1744: Enum1032 + inputField1745: InputObject451 +} + +input InputObject451 @Directive44(argument97 : ["stringValue22544"]) { + inputField1746: InputObject452 + inputField1756: String + inputField1757: String + inputField1758: String + inputField1759: String +} + +input InputObject452 @Directive44(argument97 : ["stringValue22545"]) { + inputField1747: String + inputField1748: String + inputField1749: String + inputField1750: String + inputField1751: String + inputField1752: String + inputField1753: String + inputField1754: Boolean + inputField1755: Boolean +} + +input InputObject453 @Directive44(argument97 : ["stringValue22604"]) { + inputField1760: String! + inputField1761: String! +} + +input InputObject454 @Directive44(argument97 : ["stringValue22611"]) { + inputField1762: Scalar3! +} + +input InputObject455 @Directive44(argument97 : ["stringValue22618"]) { + inputField1763: InputObject456! +} + +input InputObject456 @Directive44(argument97 : ["stringValue22619"]) { + inputField1764: String! + inputField1765: Scalar2! + inputField1766: String! +} + +input InputObject457 @Directive44(argument97 : ["stringValue22629"]) { + inputField1767: Scalar2! + inputField1768: InputObject458 +} + +input InputObject458 @Directive44(argument97 : ["stringValue22630"]) { + inputField1769: Boolean + inputField1770: Float + inputField1771: [InputObject459] +} + +input InputObject459 @Directive44(argument97 : ["stringValue22631"]) { + inputField1772: Float + inputField1773: Scalar2 +} + +input InputObject46 @Directive22(argument62 : "stringValue17241") @Directive44(argument97 : ["stringValue17242", "stringValue17243"]) { + inputField165: String! + inputField166: String + inputField167: Enum666! + inputField168: InputObject47 + inputField176: [InputObject46!] +} + +input InputObject460 @Directive44(argument97 : ["stringValue22642"]) { + inputField1774: Scalar2! + inputField1775: InputObject456! +} + +input InputObject461 @Directive44(argument97 : ["stringValue22647"]) { + inputField1776: String! +} + +input InputObject462 @Directive44(argument97 : ["stringValue22659"]) { + inputField1777: Scalar2! + inputField1778: InputObject463! + inputField1780: Enum1045! + inputField1781: Enum1046! + inputField1782: String! +} + +input InputObject463 @Directive44(argument97 : ["stringValue22660"]) { + inputField1779: String! +} + +input InputObject464 @Directive44(argument97 : ["stringValue22672"]) { + inputField1783: Scalar2 + inputField1784: InputObject465 + inputField1786: String + inputField1787: Int + inputField1788: String + inputField1789: String + inputField1790: Int + inputField1791: Enum1047 +} + +input InputObject465 @Directive44(argument97 : ["stringValue22673"]) { + inputField1785: String +} + +input InputObject466 @Directive44(argument97 : ["stringValue22682"]) { + inputField1792: Scalar2! + inputField1793: Scalar2! + inputField1794: Enum1045! +} + +input InputObject467 @Directive44(argument97 : ["stringValue22686"]) { + inputField1795: String + inputField1796: String + inputField1797: Enum1047 +} + +input InputObject468 @Directive44(argument97 : ["stringValue22690"]) { + inputField1798: Scalar2 + inputField1799: Boolean +} + +input InputObject469 @Directive44(argument97 : ["stringValue22696"]) { + inputField1800: Scalar2 + inputField1801: String + inputField1802: String +} + +input InputObject47 @Directive22(argument62 : "stringValue17244") @Directive44(argument97 : ["stringValue17245", "stringValue17246"]) { + inputField169: Enum333! + inputField170: Boolean + inputField171: String + inputField172: Float + inputField173: ID + inputField174: Scalar3 + inputField175: [String] +} + +input InputObject470 @Directive44(argument97 : ["stringValue22702"]) { + inputField1803: Scalar2 + inputField1804: String + inputField1805: String + inputField1806: String +} + +input InputObject471 @Directive44(argument97 : ["stringValue22708"]) { + inputField1807: String + inputField1808: Int + inputField1809: Int + inputField1810: [Scalar2] + inputField1811: Scalar2 + inputField1812: [Int] + inputField1813: [Scalar2] + inputField1814: [Int] + inputField1815: Boolean + inputField1816: Boolean + inputField1817: [String] + inputField1818: String + inputField1819: Scalar2 + inputField1820: Scalar2 + inputField1821: [Scalar2] + inputField1822: [String] + inputField1823: [Int] + inputField1824: [Int] + inputField1825: [Int] + inputField1826: Int + inputField1827: Scalar2 + inputField1828: String + inputField1829: String + inputField1830: String + inputField1831: [String] + inputField1832: Scalar2 + inputField1833: Boolean + inputField1834: Boolean + inputField1835: [Int] + inputField1836: Boolean +} + +input InputObject472 @Directive44(argument97 : ["stringValue22720"]) { + inputField1837: Scalar2 + inputField1838: Enum1047 + inputField1839: String + inputField1840: [Scalar2] +} + +input InputObject473 @Directive44(argument97 : ["stringValue22726"]) { + inputField1841: [InputObject474] + inputField1845: Int + inputField1846: Scalar2 +} + +input InputObject474 @Directive44(argument97 : ["stringValue22727"]) { + inputField1842: Scalar2 + inputField1843: String + inputField1844: String +} + +input InputObject475 @Directive44(argument97 : ["stringValue22733"]) { + inputField1847: Scalar2! + inputField1848: [InputObject476] + inputField1866: [Int] + inputField1867: Int + inputField1868: [Int] +} + +input InputObject476 @Directive44(argument97 : ["stringValue22734"]) { + inputField1849: Scalar2 + inputField1850: String + inputField1851: String + inputField1852: String + inputField1853: Int + inputField1854: Scalar2 + inputField1855: Int + inputField1856: Int + inputField1857: String + inputField1858: [Int] + inputField1859: String + inputField1860: Int + inputField1861: Int + inputField1862: Int + inputField1863: String + inputField1864: Enum1047 + inputField1865: String +} + +input InputObject477 @Directive44(argument97 : ["stringValue22742"]) { + inputField1869: Scalar2! +} + +input InputObject478 @Directive44(argument97 : ["stringValue22748"]) { + inputField1870: String + inputField1871: Int + inputField1872: String + inputField1873: Int + inputField1874: Int + inputField1875: Int + inputField1876: Int + inputField1877: String + inputField1878: String + inputField1879: Scalar2 + inputField1880: String + inputField1881: Int + inputField1882: String + inputField1883: [Int] + inputField1884: Enum1047 +} + +input InputObject479 @Directive44(argument97 : ["stringValue22752"]) { + inputField1885: Enum1048 + inputField1886: Scalar2 + inputField1887: String + inputField1888: Scalar2 + inputField1889: [InputObject480] +} + +input InputObject48 @Directive22(argument62 : "stringValue17251") @Directive44(argument97 : ["stringValue17252"]) { + inputField177: Scalar3! + inputField178: Scalar3! + inputField179: String! + inputField180: String +} + +input InputObject480 @Directive44(argument97 : ["stringValue22754"]) { + inputField1890: Scalar2 + inputField1891: Enum1049 + inputField1892: Int +} + +input InputObject481 @Directive44(argument97 : ["stringValue22759"]) { + inputField1893: Scalar2! + inputField1894: String! +} + +input InputObject482 @Directive44(argument97 : ["stringValue22970"]) { + inputField1895: Scalar2 + inputField1896: String + inputField1897: Int + inputField1898: String + inputField1899: Scalar2 +} + +input InputObject483 @Directive44(argument97 : ["stringValue22981"]) { + inputField1900: Scalar2 + inputField1901: String + inputField1902: Int + inputField1903: String +} + +input InputObject484 @Directive44(argument97 : ["stringValue22987"]) { + inputField1904: Scalar2 + inputField1905: Scalar2 + inputField1906: Enum1051 + inputField1907: InputObject485 + inputField1910: String + inputField1911: InputObject487 +} + +input InputObject485 @Directive44(argument97 : ["stringValue22989"]) { + inputField1908: InputObject486 +} + +input InputObject486 @Directive44(argument97 : ["stringValue22990"]) { + inputField1909: Scalar2! +} + +input InputObject487 @Directive44(argument97 : ["stringValue22991"]) { + inputField1912: InputObject488 +} + +input InputObject488 @Directive44(argument97 : ["stringValue22992"]) { + inputField1913: Scalar2! +} + +input InputObject489 @Directive44(argument97 : ["stringValue23000"]) { + inputField1914: Enum1052! + inputField1915: String + inputField1916: Boolean +} + +input InputObject49 @Directive22(argument62 : "stringValue17254") @Directive44(argument97 : ["stringValue17255"]) { + inputField181: Scalar3! + inputField182: Scalar3! + inputField183: String! + inputField184: String +} + +input InputObject490 @Directive44(argument97 : ["stringValue23011"]) { + inputField1917: String! + inputField1918: String + inputField1919: String + inputField1920: String +} + +input InputObject491 @Directive44(argument97 : ["stringValue23116"]) { + inputField1921: String! + inputField1922: String + inputField1923: String + inputField1924: Enum1061 +} + +input InputObject492 @Directive44(argument97 : ["stringValue23125"]) { + inputField1925: String! + inputField1926: String! + inputField1927: String + inputField1928: String! + inputField1929: String + inputField1930: String +} + +input InputObject493 @Directive44(argument97 : ["stringValue23136"]) { + inputField1931: String! + inputField1932: String + inputField1933: String + inputField1934: [String] + inputField1935: Boolean +} + +input InputObject494 @Directive44(argument97 : ["stringValue23145"]) { + inputField1936: Enum1062 + inputField1937: String + inputField1938: String + inputField1939: String +} + +input InputObject495 @Directive44(argument97 : ["stringValue23152"]) { + inputField1940: String! +} + +input InputObject496 @Directive44(argument97 : ["stringValue23158"]) { + inputField1941: String! +} + +input InputObject497 @Directive44(argument97 : ["stringValue23162"]) { + inputField1942: String! +} + +input InputObject498 @Directive44(argument97 : ["stringValue23166"]) { + inputField1943: String! +} + +input InputObject499 @Directive44(argument97 : ["stringValue23170"]) { + inputField1944: String! + inputField1945: String + inputField1946: String + inputField1947: String +} + +input InputObject5 @Directive22(argument62 : "stringValue10150") @Directive44(argument97 : ["stringValue10151"]) { + inputField40: Scalar3 + inputField41: Scalar3 + inputField42: Enum413 + inputField43: Enum414 +} + +input InputObject50 @Directive22(argument62 : "stringValue17266") @Directive44(argument97 : ["stringValue17267", "stringValue17268"]) { + inputField185: Enum871 = EnumValue20150 +} + +input InputObject500 @Directive44(argument97 : ["stringValue23181"]) { + inputField1948: String! + inputField1949: String + inputField1950: String +} + +input InputObject501 @Directive44(argument97 : ["stringValue23190"]) { + inputField1951: String! + inputField1952: String + inputField1953: String + inputField1954: String + inputField1955: String + inputField1956: String + inputField1957: String +} + +input InputObject502 @Directive44(argument97 : ["stringValue23199"]) { + inputField1958: String! + inputField1959: String + inputField1960: String + inputField1961: String + inputField1962: Boolean + inputField1963: [String] +} + +input InputObject503 @Directive44(argument97 : ["stringValue23203"]) { + inputField1964: String! + inputField1965: [InputObject504]! +} + +input InputObject504 @Directive44(argument97 : ["stringValue23204"]) { + inputField1966: String! + inputField1967: String + inputField1968: String + inputField1969: [String] +} + +input InputObject505 @Directive44(argument97 : ["stringValue23215"]) { + inputField1970: Enum1062 + inputField1971: String + inputField1972: [InputObject506] + inputField1980: String +} + +input InputObject506 @Directive44(argument97 : ["stringValue23216"]) { + inputField1973: Enum1062 + inputField1974: String + inputField1975: Enum1060 + inputField1976: String + inputField1977: String + inputField1978: InputObject507 +} + +input InputObject507 @Directive44(argument97 : ["stringValue23217"]) { + inputField1979: String +} + +input InputObject508 @Directive44(argument97 : ["stringValue23225", "stringValue23226"]) { + inputField1981: Scalar2 + inputField1982: String + inputField1983: Scalar2 +} + +input InputObject509 @Directive44(argument97 : ["stringValue23907", "stringValue23908"]) { + inputField1984: Scalar2 + inputField1985: Scalar2 + inputField1986: Scalar2 +} + +input InputObject51 @Directive22(argument62 : "stringValue17311") @Directive44(argument97 : ["stringValue17309", "stringValue17310"]) { + inputField186: Boolean + inputField187: Boolean + inputField188: String +} + +input InputObject510 @Directive44(argument97 : ["stringValue23912", "stringValue23913"]) { + inputField1987: Scalar2 + inputField1988: Scalar2 + inputField1989: Scalar2 +} + +input InputObject511 @Directive44(argument97 : ["stringValue23917", "stringValue23918"]) { + inputField1990: Scalar2 + inputField1991: Scalar2 + inputField1992: Enum1190 + inputField1993: Enum1191 + inputField1994: String + inputField1995: [InputObject512] + inputField2009: Enum1194 + inputField2010: String + inputField2011: Enum1193 + inputField2012: Scalar2 +} + +input InputObject512 @Directive44(argument97 : ["stringValue23923", "stringValue23924"]) { + inputField1996: Scalar2 + inputField1997: Scalar2 + inputField1998: Scalar2 + inputField1999: Scalar2 + inputField2000: Enum1191 + inputField2001: Enum1190 + inputField2002: Enum1192 + inputField2003: String + inputField2004: Scalar4 + inputField2005: Scalar4 + inputField2006: String + inputField2007: Enum1193 + inputField2008: Scalar2 +} + +input InputObject513 @Directive44(argument97 : ["stringValue23943", "stringValue23944"]) { + inputField2013: Scalar2 + inputField2014: Scalar2 + inputField2015: String + inputField2016: Enum1064 + inputField2017: Enum1063 + inputField2018: Float + inputField2019: String + inputField2020: String + inputField2021: Scalar2 + inputField2022: String + inputField2023: [InputObject514] + inputField2060: [InputObject517] + inputField2068: InputObject518 + inputField2102: Boolean + inputField2103: Scalar2 + inputField2104: Boolean + inputField2105: String + inputField2106: Enum1184 + inputField2107: String + inputField2108: [String] + inputField2109: Enum1064 + inputField2110: String + inputField2111: Boolean + inputField2112: [Scalar2] + inputField2113: Boolean + inputField2114: InputObject525 + inputField2234: [InputObject538] + inputField2867: [InputObject543] + inputField2868: String + inputField2869: String + inputField2870: String + inputField2871: Boolean + inputField2872: Enum1187 + inputField2873: Enum1188 + inputField2874: Enum1189 +} + +input InputObject514 @Directive44(argument97 : ["stringValue23945", "stringValue23946"]) { + inputField2024: Scalar2 + inputField2025: String + inputField2026: Scalar2 + inputField2027: String + inputField2028: String + inputField2029: Boolean + inputField2030: Boolean + inputField2031: Enum1064 + inputField2032: String + inputField2033: String + inputField2034: Enum1070 + inputField2035: [InputObject514] + inputField2036: InputObject515 + inputField2045: [InputObject516] + inputField2058: Boolean + inputField2059: Enum1073 +} + +input InputObject515 @Directive44(argument97 : ["stringValue23947", "stringValue23948"]) { + inputField2037: Enum1068 + inputField2038: String + inputField2039: String + inputField2040: String + inputField2041: String + inputField2042: Enum1069 + inputField2043: Boolean + inputField2044: Scalar2 +} + +input InputObject516 @Directive44(argument97 : ["stringValue23949", "stringValue23950"]) { + inputField2046: Scalar2 + inputField2047: String + inputField2048: String + inputField2049: Enum1065 + inputField2050: Enum1066 + inputField2051: Scalar2 + inputField2052: Enum1067 + inputField2053: Scalar4 + inputField2054: Scalar4 + inputField2055: String + inputField2056: Boolean + inputField2057: String +} + +input InputObject517 @Directive44(argument97 : ["stringValue23951", "stringValue23952"]) { + inputField2061: Scalar2 + inputField2062: String + inputField2063: String + inputField2064: String + inputField2065: Enum1129 + inputField2066: String + inputField2067: Enum1074 +} + +input InputObject518 @Directive44(argument97 : ["stringValue23953", "stringValue23954"]) { + inputField2069: Scalar2 + inputField2070: Enum1180 + inputField2071: [InputObject519] + inputField2085: [InputObject519] + inputField2086: InputObject522 + inputField2097: [InputObject524] +} + +input InputObject519 @Directive44(argument97 : ["stringValue23955", "stringValue23956"]) { + inputField2072: Scalar2 + inputField2073: String + inputField2074: InputObject520 + inputField2084: [String] +} + +input InputObject52 @Directive22(argument62 : "stringValue17334") @Directive44(argument97 : ["stringValue17335"]) { + inputField189: ID! +} + +input InputObject520 @Directive44(argument97 : ["stringValue23957", "stringValue23958"]) { + inputField2075: Scalar2 + inputField2076: Enum1181 + inputField2077: [InputObject521] + inputField2083: [InputObject520] +} + +input InputObject521 @Directive44(argument97 : ["stringValue23959", "stringValue23960"]) { + inputField2078: Scalar2 + inputField2079: Enum1182 + inputField2080: String + inputField2081: String + inputField2082: Boolean +} + +input InputObject522 @Directive44(argument97 : ["stringValue23961", "stringValue23962"]) { + inputField2087: String + inputField2088: Scalar2 + inputField2089: String + inputField2090: String + inputField2091: Boolean + inputField2092: InputObject523 + inputField2095: String + inputField2096: Scalar2 +} + +input InputObject523 @Directive44(argument97 : ["stringValue23963", "stringValue23964"]) { + inputField2093: String + inputField2094: String +} + +input InputObject524 @Directive44(argument97 : ["stringValue23965", "stringValue23966"]) { + inputField2098: Scalar2 + inputField2099: Enum1183 + inputField2100: Scalar2 + inputField2101: [Scalar2] +} + +input InputObject525 @Directive44(argument97 : ["stringValue23967", "stringValue23968"]) { + inputField2115: InputObject526 + inputField2118: InputObject527 + inputField2139: InputObject529 + inputField2152: InputObject530 + inputField2197: InputObject534 + inputField2201: InputObject535 + inputField2207: InputObject536 + inputField2217: InputObject537 +} + +input InputObject526 @Directive44(argument97 : ["stringValue23969", "stringValue23970"]) { + inputField2116: Scalar2 + inputField2117: Enum1064 +} + +input InputObject527 @Directive44(argument97 : ["stringValue23971", "stringValue23972"]) { + inputField2119: Enum1175 + inputField2120: InputObject528 + inputField2138: Scalar2 +} + +input InputObject528 @Directive44(argument97 : ["stringValue23973", "stringValue23974"]) { + inputField2121: String + inputField2122: Enum1175 + inputField2123: [Enum1176] + inputField2124: Enum1177 + inputField2125: Float + inputField2126: Int + inputField2127: Int + inputField2128: Int + inputField2129: Int + inputField2130: Int + inputField2131: Enum1178 + inputField2132: String + inputField2133: String + inputField2134: String + inputField2135: String + inputField2136: String + inputField2137: String +} + +input InputObject529 @Directive44(argument97 : ["stringValue23975", "stringValue23976"]) { + inputField2140: Scalar2 + inputField2141: Enum1064 + inputField2142: Scalar2 + inputField2143: Scalar2 + inputField2144: [Int] + inputField2145: [Int] + inputField2146: String + inputField2147: Boolean + inputField2148: Enum1172 + inputField2149: Scalar2 + inputField2150: Enum1173 + inputField2151: Scalar2 +} + +input InputObject53 @Directive22(argument62 : "stringValue17343") @Directive44(argument97 : ["stringValue17344", "stringValue17345"]) { + inputField190: ID + inputField191: ID + inputField192: [Enum158] + inputField193: Int + inputField194: String + inputField195: String + inputField196: Boolean + inputField197: Boolean + inputField198: [InputObject4] + inputField199: Enum383 + inputField200: String + inputField201: String + inputField202: InputObject54 + inputField211: InputObject58 +} + +input InputObject530 @Directive44(argument97 : ["stringValue23977", "stringValue23978"]) { + inputField2153: String + inputField2154: String + inputField2155: String + inputField2156: Boolean + inputField2157: Boolean + inputField2158: Boolean + inputField2159: Boolean + inputField2160: Enum1166 + inputField2161: Enum1167 + inputField2162: String + inputField2163: String + inputField2164: InputObject531 + inputField2178: InputObject532 + inputField2191: [InputObject533] + inputField2195: Scalar2 + inputField2196: Boolean +} + +input InputObject531 @Directive44(argument97 : ["stringValue23979", "stringValue23980"]) { + inputField2165: Scalar2 + inputField2166: String + inputField2167: String + inputField2168: Enum1168 + inputField2169: Scalar2 + inputField2170: Enum1169 + inputField2171: Boolean + inputField2172: Boolean + inputField2173: String + inputField2174: String + inputField2175: Scalar4 + inputField2176: Scalar4 + inputField2177: Scalar4 +} + +input InputObject532 @Directive44(argument97 : ["stringValue23981", "stringValue23982"]) { + inputField2179: Scalar2! + inputField2180: Boolean! + inputField2181: String + inputField2182: String + inputField2183: Int + inputField2184: Int + inputField2185: String + inputField2186: String + inputField2187: String + inputField2188: String + inputField2189: String + inputField2190: String +} + +input InputObject533 @Directive44(argument97 : ["stringValue23983", "stringValue23984"]) { + inputField2192: Scalar2! + inputField2193: String! + inputField2194: String! +} + +input InputObject534 @Directive44(argument97 : ["stringValue23985", "stringValue23986"]) { + inputField2198: Enum1179 + inputField2199: Scalar2 + inputField2200: String +} + +input InputObject535 @Directive44(argument97 : ["stringValue23987", "stringValue23988"]) { + inputField2202: Scalar2 + inputField2203: Enum1064 + inputField2204: Enum1170 + inputField2205: Enum1171 + inputField2206: String +} + +input InputObject536 @Directive44(argument97 : ["stringValue23989", "stringValue23990"]) { + inputField2208: Scalar2 + inputField2209: String + inputField2210: String + inputField2211: String + inputField2212: String + inputField2213: String + inputField2214: Enum1107 + inputField2215: Boolean + inputField2216: String +} + +input InputObject537 @Directive44(argument97 : ["stringValue23991", "stringValue23992"]) { + inputField2218: Scalar2 + inputField2219: String + inputField2220: String + inputField2221: String + inputField2222: Int + inputField2223: Scalar2 + inputField2224: Enum1174 + inputField2225: String + inputField2226: Enum1126 + inputField2227: String + inputField2228: String + inputField2229: [Enum1169] + inputField2230: [String] + inputField2231: InputObject531 + inputField2232: Boolean + inputField2233: String +} + +input InputObject538 @Directive44(argument97 : ["stringValue23993", "stringValue23994"]) { + inputField2235: Scalar2 + inputField2236: InputObject539 + inputField2239: [InputObject538] + inputField2240: String + inputField2241: Float + inputField2242: String + inputField2243: [InputObject540] + inputField2281: [InputObject543] +} + +input InputObject539 @Directive44(argument97 : ["stringValue23995", "stringValue23996"]) { + inputField2237: Scalar1 + inputField2238: Enum1185 +} + +input InputObject54 @Directive22(argument62 : "stringValue17346") @Directive44(argument97 : ["stringValue17347", "stringValue17348"]) { + inputField203: String + inputField204: String + inputField205: InputObject55 +} + +input InputObject540 @Directive44(argument97 : ["stringValue23997", "stringValue23998"]) { + inputField2244: Scalar2 + inputField2245: String + inputField2246: [InputObject541] + inputField2259: InputObject542 + inputField2268: Boolean + inputField2269: Enum1070 + inputField2270: [InputObject540] + inputField2271: Scalar2 + inputField2272: String + inputField2273: Enum1071 + inputField2274: Enum1072 + inputField2275: Scalar4 + inputField2276: Scalar4 + inputField2277: Scalar4 + inputField2278: Boolean + inputField2279: [InputObject541] + inputField2280: Enum1073 +} + +input InputObject541 @Directive44(argument97 : ["stringValue23999", "stringValue24000"]) { + inputField2247: Scalar2 + inputField2248: String + inputField2249: String + inputField2250: Enum1065 + inputField2251: Enum1066 + inputField2252: Scalar2 + inputField2253: Enum1067 + inputField2254: Scalar4 + inputField2255: Scalar4 + inputField2256: String + inputField2257: Boolean + inputField2258: String +} + +input InputObject542 @Directive44(argument97 : ["stringValue24001", "stringValue24002"]) { + inputField2260: Enum1068 + inputField2261: String + inputField2262: String + inputField2263: String + inputField2264: String + inputField2265: Enum1069 + inputField2266: Boolean + inputField2267: Scalar2 +} + +input InputObject543 @Directive44(argument97 : ["stringValue24003", "stringValue24004"]) { + inputField2282: Scalar2 + inputField2283: String + inputField2284: String + inputField2285: String + inputField2286: String + inputField2287: Float + inputField2288: Enum1075 + inputField2289: Enum1144 + inputField2290: Enum1074 + inputField2291: Boolean + inputField2292: Boolean + inputField2293: Boolean + inputField2294: [Scalar2] + inputField2295: Boolean + inputField2296: Boolean + inputField2297: Enum1081 + inputField2298: InputObject544 + inputField2333: InputObject545 + inputField2337: InputObject546 + inputField2352: InputObject549 + inputField2358: [InputObject550] + inputField2514: [InputObject566] + inputField2526: [InputObject567] + inputField2758: [InputObject514] + inputField2759: [String] + inputField2760: [InputObject543] + inputField2761: String + inputField2762: String + inputField2763: String + inputField2764: Enum1150 + inputField2765: InputObject552 + inputField2766: InputObject551 + inputField2767: Enum1146 + inputField2768: Enum1147 + inputField2769: Int + inputField2770: Int + inputField2771: Int + inputField2772: Enum1145 + inputField2773: [String] + inputField2774: String + inputField2775: Enum1153 + inputField2776: InputObject596 + inputField2857: Boolean + inputField2858: [InputObject609] + inputField2862: InputObject558 + inputField2863: String + inputField2864: Boolean + inputField2865: InputObject555 + inputField2866: Enum1165 +} + +input InputObject544 @Directive44(argument97 : ["stringValue24005", "stringValue24006"]) { + inputField2299: Scalar2 + inputField2300: Int + inputField2301: Int + inputField2302: [String] + inputField2303: Int + inputField2304: Int + inputField2305: Int + inputField2306: Boolean + inputField2307: Boolean + inputField2308: Boolean + inputField2309: Int + inputField2310: Int + inputField2311: Float + inputField2312: [Int] + inputField2313: [String] + inputField2314: [Int] + inputField2315: [Int] + inputField2316: [Int] + inputField2317: [Int] + inputField2318: [Int] + inputField2319: [Int] + inputField2320: String + inputField2321: String + inputField2322: Int + inputField2323: Int + inputField2324: [Int] + inputField2325: [Int] + inputField2326: Boolean + inputField2327: Scalar2 + inputField2328: [String] + inputField2329: Float + inputField2330: Float + inputField2331: Float + inputField2332: Boolean +} + +input InputObject545 @Directive44(argument97 : ["stringValue24007", "stringValue24008"]) { + inputField2334: Scalar2 + inputField2335: Scalar2 + inputField2336: Boolean +} + +input InputObject546 @Directive44(argument97 : ["stringValue24009", "stringValue24010"]) { + inputField2338: Scalar2 + inputField2339: String + inputField2340: String + inputField2341: String + inputField2342: String + inputField2343: String + inputField2344: String + inputField2345: String + inputField2346: String + inputField2347: String + inputField2348: InputObject547 +} + +input InputObject547 @Directive44(argument97 : ["stringValue24011", "stringValue24012"]) { + inputField2349: InputObject548 +} + +input InputObject548 @Directive44(argument97 : ["stringValue24013", "stringValue24014"]) { + inputField2350: String + inputField2351: String +} + +input InputObject549 @Directive44(argument97 : ["stringValue24015", "stringValue24016"]) { + inputField2353: Scalar2 + inputField2354: String + inputField2355: String + inputField2356: String + inputField2357: Enum1078 +} + +input InputObject55 @Directive22(argument62 : "stringValue17349") @Directive44(argument97 : ["stringValue17350", "stringValue17351"]) { + inputField206: InputObject56 + inputField209: InputObject57 +} + +input InputObject550 @Directive44(argument97 : ["stringValue24017", "stringValue24018"]) { + inputField2359: Scalar2 + inputField2360: Enum1127 + inputField2361: String + inputField2362: String + inputField2363: String + inputField2364: InputObject551 + inputField2512: String + inputField2513: String +} + +input InputObject551 @Directive44(argument97 : ["stringValue24019", "stringValue24020"]) { + inputField2365: Enum1078 + inputField2366: String + inputField2367: String + inputField2368: InputObject552 + inputField2389: Scalar2 + inputField2390: Boolean + inputField2391: InputObject555 + inputField2442: String + inputField2443: [Enum1085] + inputField2444: String + inputField2445: InputObject558 + inputField2470: String + inputField2471: InputObject559 + inputField2508: Enum1103 + inputField2509: String + inputField2510: Enum1104 + inputField2511: Boolean +} + +input InputObject552 @Directive44(argument97 : ["stringValue24021", "stringValue24022"]) { + inputField2369: String + inputField2370: String + inputField2371: String + inputField2372: Int + inputField2373: InputObject553 + inputField2378: String + inputField2379: [String] + inputField2380: [[String]] + inputField2381: Scalar2 + inputField2382: Scalar2 + inputField2383: Scalar2 + inputField2384: InputObject554 + inputField2385: Int + inputField2386: Int + inputField2387: [String] + inputField2388: [String] +} + +input InputObject553 @Directive44(argument97 : ["stringValue24023", "stringValue24024"]) { + inputField2374: InputObject554 + inputField2377: InputObject554 +} + +input InputObject554 @Directive44(argument97 : ["stringValue24025", "stringValue24026"]) { + inputField2375: Float + inputField2376: Float +} + +input InputObject555 @Directive44(argument97 : ["stringValue24027", "stringValue24028"]) { + inputField2392: Enum1081 + inputField2393: Int + inputField2394: Int + inputField2395: [String] + inputField2396: Boolean + inputField2397: Int + inputField2398: Int + inputField2399: Int + inputField2400: Boolean + inputField2401: Boolean + inputField2402: Int + inputField2403: Int + inputField2404: Float + inputField2405: [Int] + inputField2406: [String] + inputField2407: [Int] + inputField2408: [Int] + inputField2409: [Int] + inputField2410: [Int] + inputField2411: [Int] + inputField2412: [Int] + inputField2413: [Int] + inputField2414: String + inputField2415: String + inputField2416: Scalar2 + inputField2417: [Int] + inputField2418: [Int] + inputField2419: Boolean + inputField2420: Scalar2 + inputField2421: Enum1082 + inputField2422: Int + inputField2423: Int + inputField2424: [String] + inputField2425: Float + inputField2426: Float + inputField2427: Float + inputField2428: Boolean + inputField2429: [Scalar2] + inputField2430: InputObject556 +} + +input InputObject556 @Directive44(argument97 : ["stringValue24029", "stringValue24030"]) { + inputField2431: Int + inputField2432: Int + inputField2433: Int + inputField2434: Int + inputField2435: Int + inputField2436: Int + inputField2437: [InputObject557] + inputField2440: [Enum1083] + inputField2441: [Enum1084] +} + +input InputObject557 @Directive44(argument97 : ["stringValue24031", "stringValue24032"]) { + inputField2438: Scalar3 + inputField2439: Scalar3 +} + +input InputObject558 @Directive44(argument97 : ["stringValue24033", "stringValue24034"]) { + inputField2446: [String] + inputField2447: [Enum1086] + inputField2448: Boolean + inputField2449: Enum1087 + inputField2450: Enum1088 + inputField2451: Scalar2 + inputField2452: InputObject554 + inputField2453: [String] + inputField2454: Boolean + inputField2455: [Scalar2] + inputField2456: Boolean + inputField2457: [String] + inputField2458: [Enum1089] + inputField2459: Enum1090 + inputField2460: Scalar2 + inputField2461: Scalar2 + inputField2462: [String] + inputField2463: [Int] + inputField2464: Boolean + inputField2465: Scalar2 + inputField2466: [Enum1091] + inputField2467: Boolean + inputField2468: Boolean + inputField2469: Boolean +} + +input InputObject559 @Directive44(argument97 : ["stringValue24035", "stringValue24036"]) { + inputField2472: Enum1092 + inputField2473: Enum1093 + inputField2474: Enum1094 + inputField2475: InputObject560 + inputField2478: InputObject561 + inputField2481: InputObject561 + inputField2482: InputObject562 + inputField2497: InputObject565 + inputField2505: Scalar5 + inputField2506: InputObject562 + inputField2507: InputObject562 +} + +input InputObject56 @Directive22(argument62 : "stringValue17352") @Directive44(argument97 : ["stringValue17353", "stringValue17354"]) { + inputField207: [String] + inputField208: [String] +} + +input InputObject560 @Directive44(argument97 : ["stringValue24037", "stringValue24038"]) { + inputField2476: Int + inputField2477: Int +} + +input InputObject561 @Directive44(argument97 : ["stringValue24039", "stringValue24040"]) { + inputField2479: Enum1095 + inputField2480: Float +} + +input InputObject562 @Directive44(argument97 : ["stringValue24041", "stringValue24042"]) { + inputField2483: String + inputField2484: Enum1096 + inputField2485: Enum1097 + inputField2486: Enum1098 + inputField2487: InputObject563 +} + +input InputObject563 @Directive44(argument97 : ["stringValue24043", "stringValue24044"]) { + inputField2488: String + inputField2489: Float + inputField2490: Float + inputField2491: Float + inputField2492: Float + inputField2493: [InputObject564] + inputField2496: Enum1099 +} + +input InputObject564 @Directive44(argument97 : ["stringValue24045", "stringValue24046"]) { + inputField2494: String + inputField2495: Float +} + +input InputObject565 @Directive44(argument97 : ["stringValue24047", "stringValue24048"]) { + inputField2498: Enum1100 + inputField2499: Enum1101 + inputField2500: Enum1102 + inputField2501: Scalar5 + inputField2502: Scalar5 + inputField2503: Float + inputField2504: Float +} + +input InputObject566 @Directive44(argument97 : ["stringValue24049", "stringValue24050"]) { + inputField2515: Scalar2 + inputField2516: String + inputField2517: String + inputField2518: String + inputField2519: String + inputField2520: String + inputField2521: Enum1137 + inputField2522: Enum1138 + inputField2523: Scalar5 + inputField2524: String + inputField2525: String +} + +input InputObject567 @Directive44(argument97 : ["stringValue24051", "stringValue24052"]) { + inputField2527: InputObject568 + inputField2712: InputObject591 + inputField2717: InputObject592 + inputField2730: InputObject593 + inputField2736: InputObject594 + inputField2743: InputObject595 +} + +input InputObject568 @Directive44(argument97 : ["stringValue24053", "stringValue24054"]) { + inputField2528: String + inputField2529: String + inputField2530: String + inputField2531: String + inputField2532: String + inputField2533: String + inputField2534: String + inputField2535: String + inputField2536: String + inputField2537: String + inputField2538: InputObject551 + inputField2539: InputObject551 + inputField2540: String + inputField2541: String + inputField2542: String + inputField2543: Enum1106 + inputField2544: Enum1107 + inputField2545: String + inputField2546: String + inputField2547: String + inputField2548: InputObject569 + inputField2590: String + inputField2591: String + inputField2592: String + inputField2593: Boolean + inputField2594: Float + inputField2595: InputObject575 + inputField2610: Scalar2 + inputField2611: Enum1116 + inputField2612: [InputObject551] + inputField2613: Scalar2 + inputField2614: Enum1117 + inputField2615: String + inputField2616: Enum1118 + inputField2617: String + inputField2618: Enum1119 + inputField2619: Enum1119 + inputField2620: Enum1119 + inputField2621: Enum1119 + inputField2622: String + inputField2623: String + inputField2624: String + inputField2625: String + inputField2626: String + inputField2627: String + inputField2628: InputObject577 + inputField2659: Boolean + inputField2660: String + inputField2661: Enum1124 + inputField2662: Enum1074 + inputField2663: InputObject562 + inputField2664: Scalar2 + inputField2665: String + inputField2666: String + inputField2667: Enum1125 + inputField2668: Enum1126 + inputField2669: Boolean + inputField2670: Enum1127 + inputField2671: Enum1077 + inputField2672: InputObject586 + inputField2688: InputObject586 + inputField2689: InputObject588 + inputField2707: InputObject586 + inputField2708: String + inputField2709: InputObject586 + inputField2710: InputObject586 + inputField2711: String +} + +input InputObject569 @Directive44(argument97 : ["stringValue24055", "stringValue24056"]) { + inputField2549: Scalar2 + inputField2550: InputObject570 + inputField2587: InputObject570 + inputField2588: InputObject570 + inputField2589: InputObject570 +} + +input InputObject57 @Directive22(argument62 : "stringValue17355") @Directive44(argument97 : ["stringValue17356", "stringValue17357"]) { + inputField210: String! +} + +input InputObject570 @Directive44(argument97 : ["stringValue24057", "stringValue24058"]) { + inputField2551: Scalar2 + inputField2552: InputObject571 + inputField2559: InputObject571 + inputField2560: InputObject572 + inputField2566: InputObject573 + inputField2570: InputObject574 +} + +input InputObject571 @Directive44(argument97 : ["stringValue24059", "stringValue24060"]) { + inputField2553: Scalar2 + inputField2554: Enum1108 + inputField2555: Enum1107 + inputField2556: Enum1109 + inputField2557: String + inputField2558: Enum1110 +} + +input InputObject572 @Directive44(argument97 : ["stringValue24061", "stringValue24062"]) { + inputField2561: Scalar2 + inputField2562: Boolean + inputField2563: Boolean + inputField2564: Int + inputField2565: Boolean +} + +input InputObject573 @Directive44(argument97 : ["stringValue24063", "stringValue24064"]) { + inputField2567: Scalar2 + inputField2568: Enum1111 + inputField2569: Int +} + +input InputObject574 @Directive44(argument97 : ["stringValue24065", "stringValue24066"]) { + inputField2571: String + inputField2572: String + inputField2573: String + inputField2574: String + inputField2575: Enum1112 + inputField2576: Enum1113 + inputField2577: String + inputField2578: String + inputField2579: Enum1114 + inputField2580: Enum1115 + inputField2581: String + inputField2582: String + inputField2583: String + inputField2584: String + inputField2585: String + inputField2586: InputObject565 +} + +input InputObject575 @Directive44(argument97 : ["stringValue24067", "stringValue24068"]) { + inputField2596: InputObject576 + inputField2607: InputObject576 + inputField2608: InputObject576 + inputField2609: InputObject576 +} + +input InputObject576 @Directive44(argument97 : ["stringValue24069", "stringValue24070"]) { + inputField2597: String + inputField2598: String + inputField2599: String + inputField2600: String + inputField2601: String + inputField2602: String + inputField2603: String + inputField2604: String + inputField2605: Int + inputField2606: Float +} + +input InputObject577 @Directive44(argument97 : ["stringValue24071", "stringValue24072"]) { + inputField2629: Enum1120 + inputField2630: [InputObject578] + inputField2651: Scalar1 + inputField2652: Enum1123 + inputField2653: Scalar1 + inputField2654: Enum1123 + inputField2655: Scalar1 + inputField2656: Enum1123 + inputField2657: String + inputField2658: String +} + +input InputObject578 @Directive44(argument97 : ["stringValue24073", "stringValue24074"]) { + inputField2631: InputObject579 + inputField2634: InputObject580 + inputField2636: InputObject581 + inputField2642: InputObject583 + inputField2645: InputObject584 + inputField2647: InputObject585 +} + +input InputObject579 @Directive44(argument97 : ["stringValue24075", "stringValue24076"]) { + inputField2632: Enum1121 + inputField2633: Enum1122 +} + +input InputObject58 @Directive42(argument96 : ["stringValue17358"]) @Directive44(argument97 : ["stringValue17359", "stringValue17360", "stringValue17361"]) { + inputField212: Int + inputField213: Int + inputField214: Int +} + +input InputObject580 @Directive44(argument97 : ["stringValue24077", "stringValue24078"]) { + inputField2635: Scalar2 +} + +input InputObject581 @Directive44(argument97 : ["stringValue24079", "stringValue24080"]) { + inputField2637: String + inputField2638: InputObject582 +} + +input InputObject582 @Directive44(argument97 : ["stringValue24081", "stringValue24082"]) { + inputField2639: String + inputField2640: String + inputField2641: String +} + +input InputObject583 @Directive44(argument97 : ["stringValue24083", "stringValue24084"]) { + inputField2643: Boolean + inputField2644: String +} + +input InputObject584 @Directive44(argument97 : ["stringValue24085", "stringValue24086"]) { + inputField2646: Scalar2 +} + +input InputObject585 @Directive44(argument97 : ["stringValue24087", "stringValue24088"]) { + inputField2648: Boolean + inputField2649: Boolean + inputField2650: Boolean +} + +input InputObject586 @Directive44(argument97 : ["stringValue24089", "stringValue24090"]) { + inputField2673: InputObject587 + inputField2684: InputObject587 + inputField2685: InputObject587 + inputField2686: InputObject587 + inputField2687: InputObject587 +} + +input InputObject587 @Directive44(argument97 : ["stringValue24091", "stringValue24092"]) { + inputField2674: String + inputField2675: InputObject562 + inputField2676: InputObject565 + inputField2677: Scalar5 + inputField2678: InputObject562 + inputField2679: Enum1093 + inputField2680: Enum1094 + inputField2681: InputObject560 + inputField2682: InputObject561 + inputField2683: InputObject561 +} + +input InputObject588 @Directive44(argument97 : ["stringValue24093", "stringValue24094"]) { + inputField2690: InputObject589 + inputField2704: InputObject589 + inputField2705: InputObject589 + inputField2706: InputObject589 +} + +input InputObject589 @Directive44(argument97 : ["stringValue24095", "stringValue24096"]) { + inputField2691: Enum1128 + inputField2692: String + inputField2693: InputObject560 + inputField2694: InputObject561 + inputField2695: InputObject561 + inputField2696: String + inputField2697: InputObject590 + inputField2701: Scalar1 + inputField2702: String + inputField2703: Scalar1 +} + +input InputObject59 @Directive22(argument62 : "stringValue17369") @Directive44(argument97 : ["stringValue17370", "stringValue17371"]) { + inputField215: ID + inputField216: String + inputField217: Int + inputField218: Int + inputField219: [InputObject4] + inputField220: String + inputField221: Boolean + inputField222: Boolean + inputField223: Enum383 + inputField224: String + inputField225: ID + inputField226: ID + inputField227: Scalar4 + inputField228: String + inputField229: String + inputField230: ID + inputField231: ID + inputField232: ID + inputField233: String + inputField234: String + inputField235: Boolean + inputField236: InputObject58 +} + +input InputObject590 @Directive44(argument97 : ["stringValue24097", "stringValue24098"]) { + inputField2698: String + inputField2699: String + inputField2700: String +} + +input InputObject591 @Directive44(argument97 : ["stringValue24099", "stringValue24100"]) { + inputField2713: Enum1074 + inputField2714: Scalar2 + inputField2715: String + inputField2716: Float +} + +input InputObject592 @Directive44(argument97 : ["stringValue24101", "stringValue24102"]) { + inputField2718: Scalar2 + inputField2719: Enum1074 + inputField2720: Enum1137 + inputField2721: Enum1138 + inputField2722: String + inputField2723: String + inputField2724: String + inputField2725: String + inputField2726: String + inputField2727: Scalar5 + inputField2728: String + inputField2729: String +} + +input InputObject593 @Directive44(argument97 : ["stringValue24103", "stringValue24104"]) { + inputField2731: Scalar2 + inputField2732: Enum1078 + inputField2733: String + inputField2734: String + inputField2735: String +} + +input InputObject594 @Directive44(argument97 : ["stringValue24105", "stringValue24106"]) { + inputField2737: String + inputField2738: String + inputField2739: String + inputField2740: String + inputField2741: String + inputField2742: Scalar2 +} + +input InputObject595 @Directive44(argument97 : ["stringValue24107", "stringValue24108"]) { + inputField2744: String + inputField2745: String + inputField2746: Enum1074 + inputField2747: Scalar2 + inputField2748: String + inputField2749: Enum1074 + inputField2750: String + inputField2751: String + inputField2752: String + inputField2753: String + inputField2754: String + inputField2755: String + inputField2756: Enum1078 + inputField2757: InputObject551 +} + +input InputObject596 @Directive44(argument97 : ["stringValue24109", "stringValue24110"]) { + inputField2777: Enum1082 + inputField2778: Scalar2 + inputField2779: Enum1154 + inputField2780: Enum1155 + inputField2781: Enum1156 + inputField2782: [InputObject597] + inputField2838: String + inputField2839: Scalar2 + inputField2840: Enum1161 + inputField2841: InputObject598 + inputField2842: InputObject602 + inputField2843: InputObject608 + inputField2846: Scalar5 + inputField2847: Scalar5 + inputField2848: Scalar5 + inputField2849: Scalar2 + inputField2850: Scalar2 + inputField2851: Enum1162 + inputField2852: Enum1163 + inputField2853: Float + inputField2854: Scalar2 + inputField2855: Scalar2 + inputField2856: Scalar2 +} + +input InputObject597 @Directive44(argument97 : ["stringValue24111", "stringValue24112"]) { + inputField2783: InputObject598 + inputField2803: InputObject601 + inputField2811: InputObject602 +} + +input InputObject598 @Directive44(argument97 : ["stringValue24113", "stringValue24114"]) { + inputField2784: String + inputField2785: String + inputField2786: Float + inputField2787: String + inputField2788: [InputObject599] +} + +input InputObject599 @Directive44(argument97 : ["stringValue24115", "stringValue24116"]) { + inputField2789: String! + inputField2790: Enum1157! + inputField2791: [String]! + inputField2792: [String] + inputField2793: [Enum1121]! + inputField2794: [InputObject600]! + inputField2801: [String]! + inputField2802: Enum1160 +} + +input InputObject6 @Directive20(argument58 : "stringValue11618", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11617") @Directive44(argument97 : ["stringValue11615", "stringValue11616"]) { + inputField44: Boolean + inputField45: Boolean + inputField46: Boolean + inputField47: [InputObject7] +} + +input InputObject60 @Directive22(argument62 : "stringValue17373") @Directive44(argument97 : ["stringValue17374", "stringValue17375"]) { + inputField237: String + inputField238: String +} + +input InputObject600 @Directive44(argument97 : ["stringValue24117", "stringValue24118"]) { + inputField2795: Enum1158! + inputField2796: Enum1159! + inputField2797: Scalar2! + inputField2798: Scalar2! + inputField2799: [Enum1121] + inputField2800: [Enum1121] +} + +input InputObject601 @Directive44(argument97 : ["stringValue24119", "stringValue24120"]) { + inputField2804: Enum1082 + inputField2805: Scalar2 + inputField2806: Enum1154 + inputField2807: Enum1155 + inputField2808: Scalar5 + inputField2809: Scalar5 + inputField2810: Scalar5 +} + +input InputObject602 @Directive44(argument97 : ["stringValue24121", "stringValue24122"]) { + inputField2812: Boolean + inputField2813: Enum1104 + inputField2814: String + inputField2815: String + inputField2816: String + inputField2817: Int + inputField2818: Int + inputField2819: InputObject603 + inputField2828: InputObject605 + inputField2831: InputObject606 +} + +input InputObject603 @Directive44(argument97 : ["stringValue24123", "stringValue24124"]) { + inputField2820: InputObject604 + inputField2825: InputObject604 + inputField2826: InputObject604 + inputField2827: InputObject604 +} + +input InputObject604 @Directive44(argument97 : ["stringValue24125", "stringValue24126"]) { + inputField2821: InputObject561 + inputField2822: InputObject561 + inputField2823: InputObject561 + inputField2824: InputObject561 +} + +input InputObject605 @Directive44(argument97 : ["stringValue24127", "stringValue24128"]) { + inputField2829: InputObject586 + inputField2830: InputObject586 +} + +input InputObject606 @Directive44(argument97 : ["stringValue24129", "stringValue24130"]) { + inputField2832: InputObject607 + inputField2835: InputObject607 + inputField2836: InputObject607 + inputField2837: InputObject607 +} + +input InputObject607 @Directive44(argument97 : ["stringValue24131", "stringValue24132"]) { + inputField2833: Float + inputField2834: Float +} + +input InputObject608 @Directive44(argument97 : ["stringValue24133", "stringValue24134"]) { + inputField2844: String + inputField2845: String +} + +input InputObject609 @Directive44(argument97 : ["stringValue24135", "stringValue24136"]) { + inputField2859: Scalar2 + inputField2860: InputObject567 + inputField2861: InputObject540 +} + +input InputObject61 @Directive22(argument62 : "stringValue17380") @Directive44(argument97 : ["stringValue17381", "stringValue17382"]) { + inputField239: InputObject62 + inputField242: ID + inputField243: InputObject58 + inputField244: String + inputField245: InputObject54 + inputField246: Scalar3 + inputField247: Scalar3 + inputField248: Int + inputField249: String + inputField250: Scalar2 + inputField251: String + inputField252: InputObject63 + inputField257: InputObject64 + inputField262: Int + inputField263: Scalar2 + inputField264: String + inputField265: Scalar2 + inputField266: InputObject65 + inputField271: InputObject66 +} + +input InputObject610 @Directive44(argument97 : ["stringValue24141"]) { + inputField2875: Scalar2 + inputField2876: Boolean +} + +input InputObject611 @Directive44(argument97 : ["stringValue24148"]) { + inputField2877: Scalar2! + inputField2878: Boolean! +} + +input InputObject612 @Directive44(argument97 : ["stringValue24154"]) { + inputField2879: Enum1196! + inputField2880: String + inputField2881: Boolean +} + +input InputObject613 @Directive44(argument97 : ["stringValue24165"]) { + inputField2882: InputObject614 +} + +input InputObject614 @Directive44(argument97 : ["stringValue24166"]) { + inputField2883: String +} + +input InputObject615 @Directive44(argument97 : ["stringValue24187"]) { + inputField2884: String! +} + +input InputObject616 @Directive44(argument97 : ["stringValue24193"]) { + inputField2885: [Enum1199]! + inputField2886: [InputObject617]! + inputField2987: String +} + +input InputObject617 @Directive44(argument97 : ["stringValue24195"]) { + inputField2887: Scalar2! + inputField2888: InputObject618 + inputField2896: InputObject618 + inputField2897: InputObject619 + inputField2902: Enum1201 + inputField2903: Float + inputField2904: Float + inputField2905: InputObject620 + inputField2909: InputObject621 + inputField2912: Scalar1 + inputField2913: Enum1202 + inputField2914: Boolean + inputField2915: InputObject622 + inputField2919: InputObject623 + inputField2929: String + inputField2930: String + inputField2931: [Enum1208] + inputField2932: InputObject625 + inputField2935: InputObject626 + inputField2938: [Enum1209] + inputField2939: [Scalar2] + inputField2940: [Scalar2] + inputField2941: Enum1210 + inputField2942: InputObject627 + inputField2955: Boolean + inputField2956: Scalar3 + inputField2957: InputObject628 + inputField2960: InputObject627 + inputField2961: InputObject627 + inputField2962: InputObject629 + inputField2965: InputObject630 + inputField2972: InputObject630 + inputField2973: InputObject631 + inputField2975: [InputObject632] + inputField2981: [Scalar3] + inputField2982: String + inputField2983: String + inputField2984: InputObject634 +} + +input InputObject618 @Directive44(argument97 : ["stringValue24196"]) { + inputField2889: Scalar4 + inputField2890: Scalar4 + inputField2891: Float + inputField2892: Scalar4 + inputField2893: Scalar2 + inputField2894: Scalar4 + inputField2895: String +} + +input InputObject619 @Directive44(argument97 : ["stringValue24197"]) { + inputField2898: Enum1200 + inputField2899: String + inputField2900: Scalar1 + inputField2901: Boolean +} + +input InputObject62 @Directive22(argument62 : "stringValue17383") @Directive44(argument97 : ["stringValue17384", "stringValue17385"]) { + inputField240: [Enum872!] + inputField241: Enum873 +} + +input InputObject620 @Directive44(argument97 : ["stringValue24200"]) { + inputField2906: Scalar1! + inputField2907: Scalar1 + inputField2908: String +} + +input InputObject621 @Directive44(argument97 : ["stringValue24201"]) { + inputField2910: String! + inputField2911: String +} + +input InputObject622 @Directive44(argument97 : ["stringValue24203"]) { + inputField2916: Enum1203 + inputField2917: Enum1204 + inputField2918: Enum1205 +} + +input InputObject623 @Directive44(argument97 : ["stringValue24207"]) { + inputField2920: Int + inputField2921: Int + inputField2922: Int + inputField2923: Int + inputField2924: [InputObject624] +} + +input InputObject624 @Directive44(argument97 : ["stringValue24208"]) { + inputField2925: Enum1206! + inputField2926: Enum1207! + inputField2927: Float! + inputField2928: Boolean +} + +input InputObject625 @Directive44(argument97 : ["stringValue24212"]) { + inputField2933: Scalar2! + inputField2934: String +} + +input InputObject626 @Directive44(argument97 : ["stringValue24213"]) { + inputField2936: Int + inputField2937: Int +} + +input InputObject627 @Directive44(argument97 : ["stringValue24216"]) { + inputField2943: Scalar3 + inputField2944: Scalar3 + inputField2945: Float + inputField2946: Scalar3 + inputField2947: Scalar2 + inputField2948: String + inputField2949: String + inputField2950: Float + inputField2951: Boolean + inputField2952: Scalar2 + inputField2953: String + inputField2954: String +} + +input InputObject628 @Directive44(argument97 : ["stringValue24217"]) { + inputField2958: Boolean + inputField2959: Enum1211 +} + +input InputObject629 @Directive44(argument97 : ["stringValue24219"]) { + inputField2963: Int + inputField2964: Boolean +} + +input InputObject63 @Directive22(argument62 : "stringValue17394") @Directive44(argument97 : ["stringValue17395", "stringValue17396"]) { + inputField253: Boolean + inputField254: Scalar2 + inputField255: String + inputField256: String +} + +input InputObject630 @Directive44(argument97 : ["stringValue24220"]) { + inputField2966: Enum1212! + inputField2967: Enum1207! + inputField2968: Float! + inputField2969: Int + inputField2970: Int + inputField2971: Int +} + +input InputObject631 @Directive44(argument97 : ["stringValue24222"]) { + inputField2974: Boolean +} + +input InputObject632 @Directive44(argument97 : ["stringValue24223"]) { + inputField2976: Int + inputField2977: Enum1213 + inputField2978: InputObject633 +} + +input InputObject633 @Directive44(argument97 : ["stringValue24225"]) { + inputField2979: Scalar3! + inputField2980: Scalar3! +} + +input InputObject634 @Directive44(argument97 : ["stringValue24226"]) { + inputField2985: Int + inputField2986: Boolean +} + +input InputObject635 @Directive44(argument97 : ["stringValue24237"]) { + inputField2988: [Enum1199]! + inputField2989: [InputObject617]! + inputField2990: String +} + +input InputObject636 @Directive44(argument97 : ["stringValue24246"]) { + inputField2991: String! +} + +input InputObject637 @Directive44(argument97 : ["stringValue24252"]) { + inputField2992: String! +} + +input InputObject638 @Directive44(argument97 : ["stringValue24258"]) { + inputField2993: String! +} + +input InputObject639 @Directive44(argument97 : ["stringValue24264"]) { + inputField2994: String! + inputField2995: [InputObject640] + inputField3000: String +} + +input InputObject64 @Directive22(argument62 : "stringValue17397") @Directive44(argument97 : ["stringValue17398", "stringValue17399"]) { + inputField258: Int + inputField259: Int + inputField260: String + inputField261: Boolean +} + +input InputObject640 @Directive44(argument97 : ["stringValue24265"]) { + inputField2996: Enum1215 + inputField2997: String + inputField2998: String + inputField2999: String +} + +input InputObject641 @Directive44(argument97 : ["stringValue24270"]) { + inputField3001: String + inputField3002: String + inputField3003: String + inputField3004: String + inputField3005: Enum1216 + inputField3006: String + inputField3007: String +} + +input InputObject642 @Directive44(argument97 : ["stringValue24385"]) { + inputField3008: String! + inputField3009: Enum1222! +} + +input InputObject643 @Directive44(argument97 : ["stringValue24390"]) { + inputField3010: Scalar2! + inputField3011: String! +} + +input InputObject644 @Directive44(argument97 : ["stringValue24403"]) { + inputField3012: String! + inputField3013: InputObject645! +} + +input InputObject645 @Directive44(argument97 : ["stringValue24404"]) { + inputField3014: Int + inputField3015: String +} + +input InputObject646 @Directive44(argument97 : ["stringValue24408"]) { + inputField3016: String! + inputField3017: InputObject647! + inputField3023: String +} + +input InputObject647 @Directive44(argument97 : ["stringValue24409"]) { + inputField3018: String + inputField3019: Int! + inputField3020: Scalar2! + inputField3021: [Scalar2] + inputField3022: Scalar2 +} + +input InputObject648 @Directive44(argument97 : ["stringValue24413"]) { + inputField3024: String! + inputField3025: Enum1223! +} + +input InputObject649 @Directive44(argument97 : ["stringValue24418"]) { + inputField3026: String! + inputField3027: InputObject650! +} + +input InputObject65 @Directive20(argument58 : "stringValue17401", argument59 : true, argument60 : false) @Directive22(argument62 : "stringValue17400") @Directive44(argument97 : ["stringValue17402", "stringValue17403"]) { + inputField267: Boolean + inputField268: String + inputField269: String + inputField270: String +} + +input InputObject650 @Directive44(argument97 : ["stringValue24419"]) { + inputField3028: Int + inputField3029: String +} + +input InputObject651 @Directive44(argument97 : ["stringValue24426"]) { + inputField3030: String! +} + +input InputObject652 @Directive44(argument97 : ["stringValue24430"]) { + inputField3031: Scalar2! + inputField3032: Enum1224! +} + +input InputObject653 @Directive44(argument97 : ["stringValue24439"]) { + inputField3033: String! + inputField3034: [InputObject640] + inputField3035: String + inputField3036: Int + inputField3037: Boolean +} + +input InputObject654 @Directive44(argument97 : ["stringValue24443"]) { + inputField3038: String! + inputField3039: InputObject655! +} + +input InputObject655 @Directive44(argument97 : ["stringValue24444"]) { + inputField3040: Float! + inputField3041: Scalar3 +} + +input InputObject656 @Directive44(argument97 : ["stringValue24448"]) { + inputField3042: String! + inputField3043: InputObject657! +} + +input InputObject657 @Directive44(argument97 : ["stringValue24449"]) { + inputField3044: [InputObject640] + inputField3045: String + inputField3046: Int! + inputField3047: Float! +} + +input InputObject658 @Directive44(argument97 : ["stringValue24453"]) { + inputField3048: String! + inputField3049: Boolean +} + +input InputObject659 @Directive44(argument97 : ["stringValue24457"]) { + inputField3050: String! +} + +input InputObject66 @Directive22(argument62 : "stringValue17404") @Directive44(argument97 : ["stringValue17405", "stringValue17406"]) { + inputField272: Boolean + inputField273: Boolean + inputField274: Boolean +} + +input InputObject660 @Directive44(argument97 : ["stringValue24461"]) { + inputField3051: String! +} + +input InputObject661 @Directive44(argument97 : ["stringValue24466"]) { + inputField3052: InputObject662 +} + +input InputObject662 @Directive44(argument97 : ["stringValue24467"]) { + inputField3053: Scalar2! + inputField3054: String + inputField3055: [String] + inputField3056: String + inputField3057: String + inputField3058: String + inputField3059: String + inputField3060: String + inputField3061: Scalar4 + inputField3062: Scalar4 + inputField3063: Scalar2 + inputField3064: Enum1225 + inputField3065: Scalar2 + inputField3066: Scalar3 + inputField3067: String + inputField3068: Scalar2 + inputField3069: String + inputField3070: String + inputField3071: Enum1226 + inputField3072: Scalar2 + inputField3073: Enum1227 + inputField3074: String + inputField3075: InputObject663 + inputField3083: Scalar2 + inputField3084: String + inputField3085: [String] + inputField3086: Int +} + +input InputObject663 @Directive44(argument97 : ["stringValue24471"]) { + inputField3076: Scalar2 + inputField3077: Boolean + inputField3078: Boolean + inputField3079: Scalar4 + inputField3080: Scalar4 + inputField3081: Scalar4 + inputField3082: Scalar4 +} + +input InputObject664 @Directive44(argument97 : ["stringValue24481"]) { + inputField3087: InputObject665 +} + +input InputObject665 @Directive44(argument97 : ["stringValue24482"]) { + inputField3088: String + inputField3089: String + inputField3090: Scalar2 + inputField3091: String + inputField3092: Scalar1 + inputField3093: Boolean + inputField3094: Boolean +} + +input InputObject666 @Directive44(argument97 : ["stringValue24498"]) { + inputField3095: [Scalar2]! +} + +input InputObject667 @Directive44(argument97 : ["stringValue24504"]) { + inputField3096: String + inputField3097: String + inputField3098: String + inputField3099: String + inputField3100: String + inputField3101: String + inputField3102: String + inputField3103: Scalar2 + inputField3104: Scalar3 + inputField3105: String +} + +input InputObject668 @Directive44(argument97 : ["stringValue24510"]) { + inputField3106: [Scalar2]! +} + +input InputObject669 @Directive44(argument97 : ["stringValue24514"]) { + inputField3107: Scalar2! + inputField3108: Scalar1! +} + +input InputObject67 @Directive22(argument62 : "stringValue18293") @Directive44(argument97 : ["stringValue18294"]) { + inputField275: InputObject68 + inputField283: InputObject70 + inputField288: Scalar2 + inputField289: Scalar2 + inputField290: Scalar2 + inputField291: ID + inputField292: Float + inputField293: Boolean + inputField294: Int +} + +input InputObject670 @Directive44(argument97 : ["stringValue24520"]) { + inputField3109: InputObject671 +} + +input InputObject671 @Directive44(argument97 : ["stringValue24521"]) { + inputField3110: Scalar2! + inputField3111: Scalar2 + inputField3112: Scalar2 + inputField3113: Boolean + inputField3114: Boolean + inputField3115: Scalar2 + inputField3116: Scalar2 + inputField3117: Scalar2 + inputField3118: Scalar2 + inputField3119: Scalar4 + inputField3120: Scalar4 +} + +input InputObject672 @Directive44(argument97 : ["stringValue24529"]) { + inputField3121: Scalar2 + inputField3122: Scalar2 +} + +input InputObject673 @Directive44(argument97 : ["stringValue24535"]) { + inputField3123: Scalar2! + inputField3124: Scalar1! +} + +input InputObject674 @Directive44(argument97 : ["stringValue24541"]) { + inputField3125: [Scalar2]! + inputField3126: Scalar2! +} + +input InputObject675 @Directive44(argument97 : ["stringValue24547"]) { + inputField3127: InputObject676 +} + +input InputObject676 @Directive44(argument97 : ["stringValue24548"]) { + inputField3128: Scalar2! + inputField3129: String + inputField3130: String + inputField3131: String + inputField3132: Scalar1 + inputField3133: Boolean + inputField3134: Boolean + inputField3135: String + inputField3136: String + inputField3137: Scalar2 + inputField3138: Float +} + +input InputObject677 @Directive44(argument97 : ["stringValue24554"]) { + inputField3139: [Scalar2]! + inputField3140: [Enum1230]! + inputField3141: InputObject678! +} + +input InputObject678 @Directive44(argument97 : ["stringValue24556"]) { + inputField3142: Enum1225 + inputField3143: Enum1226 + inputField3144: Scalar2 + inputField3145: Scalar2 + inputField3146: String +} + +input InputObject679 @Directive44(argument97 : ["stringValue24560"]) { + inputField3147: [Enum1231] +} + +input InputObject68 @Directive20(argument58 : "stringValue18296", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18295") @Directive44(argument97 : ["stringValue18297", "stringValue18298", "stringValue18299"]) { + inputField276: InputObject69 + inputField279: InputObject58 + inputField280: Scalar2 + inputField281: Scalar2 + inputField282: String +} + +input InputObject680 @Directive44(argument97 : ["stringValue24568"]) { + inputField3148: Scalar2! + inputField3149: Scalar2! + inputField3150: Enum1232! +} + +input InputObject681 @Directive44(argument97 : ["stringValue24575"]) { + inputField3151: Scalar2! + inputField3152: [Scalar2!]! + inputField3153: [Scalar2!]! + inputField3154: [Scalar2!]! +} + +input InputObject682 @Directive44(argument97 : ["stringValue24583"]) { + inputField3155: Scalar2! + inputField3156: Scalar2! + inputField3157: Scalar2 + inputField3158: Scalar2 +} + +input InputObject683 @Directive44(argument97 : ["stringValue24589"]) { + inputField3159: Scalar2! +} + +input InputObject684 @Directive44(argument97 : ["stringValue24595"]) { + inputField3160: Scalar2! + inputField3161: Scalar2! + inputField3162: Enum1233! + inputField3163: Scalar2! +} + +input InputObject685 @Directive44(argument97 : ["stringValue24604"]) { + inputField3164: Scalar2! + inputField3165: Scalar2! + inputField3166: [Scalar2]! + inputField3167: [Scalar2]! +} + +input InputObject686 @Directive44(argument97 : ["stringValue24610"]) { + inputField3168: [Scalar2]! + inputField3169: Enum1234 + inputField3170: Float +} + +input InputObject687 @Directive44(argument97 : ["stringValue24620"]) { + inputField3171: Scalar2 + inputField3172: String +} + +input InputObject688 @Directive44(argument97 : ["stringValue24626"]) { + inputField3173: Scalar2 + inputField3174: Boolean +} + +input InputObject689 @Directive44(argument97 : ["stringValue24630"]) { + inputField3175: String + inputField3176: String +} + +input InputObject69 @Directive22(argument62 : "stringValue18300") @Directive44(argument97 : ["stringValue18301", "stringValue18302"]) { + inputField277: Scalar3! + inputField278: Scalar3! +} + +input InputObject690 @Directive44(argument97 : ["stringValue24635"]) { + inputField3177: String! + inputField3178: Enum1235! +} + +input InputObject691 @Directive44(argument97 : ["stringValue24643"]) { + inputField3179: Scalar2! + inputField3180: Enum1236! + inputField3181: Scalar2! + inputField3182: Scalar2! + inputField3183: String + inputField3184: String + inputField3185: String! + inputField3186: Boolean + inputField3187: String + inputField3188: String + inputField3189: Enum1237! +} + +input InputObject692 @Directive44(argument97 : ["stringValue24657"]) { + inputField3190: Boolean! +} + +input InputObject693 @Directive44(argument97 : ["stringValue24666"]) { + inputField3191: Scalar2! +} + +input InputObject694 @Directive44(argument97 : ["stringValue24682"]) { + inputField3192: Scalar2! +} + +input InputObject695 @Directive44(argument97 : ["stringValue24688"]) { + inputField3193: Scalar2! + inputField3194: String! +} + +input InputObject696 @Directive44(argument97 : ["stringValue24694"]) { + inputField3195: Scalar2! +} + +input InputObject697 @Directive44(argument97 : ["stringValue24700"]) { + inputField3196: Scalar2! + inputField3197: Int +} + +input InputObject698 @Directive44(argument97 : ["stringValue24706"]) { + inputField3198: Scalar2 + inputField3199: String + inputField3200: Enum1239 +} + +input InputObject699 @Directive44(argument97 : ["stringValue24713"]) { + inputField3201: Enum1240 + inputField3202: Scalar2 + inputField3203: Scalar2 + inputField3204: Enum1241 + inputField3205: InputObject700 + inputField3208: Boolean + inputField3209: Enum1243 + inputField3210: String + inputField3211: Scalar2 +} + +input InputObject7 @Directive20(argument58 : "stringValue11622", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue11621") @Directive44(argument97 : ["stringValue11619", "stringValue11620"]) { + inputField48: String +} + +input InputObject70 @Directive20(argument58 : "stringValue18304", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18303") @Directive44(argument97 : ["stringValue18305", "stringValue18306"]) { + inputField284: Enum909 + inputField285: Enum479 + inputField286: Enum480 + inputField287: Enum910 +} + +input InputObject700 @Directive44(argument97 : ["stringValue24716"]) { + inputField3206: Scalar2! + inputField3207: Enum1242 +} + +input InputObject701 @Directive44(argument97 : ["stringValue24793"]) { + inputField3212: Scalar2! + inputField3213: String +} + +input InputObject702 @Directive44(argument97 : ["stringValue24797"]) { + inputField3214: Scalar2! + inputField3215: Scalar2 + inputField3216: Enum1247 + inputField3217: Scalar2 + inputField3218: String + inputField3219: Enum1243 + inputField3220: Float +} + +input InputObject703 @Directive44(argument97 : ["stringValue24801"]) { + inputField3221: Scalar2! + inputField3222: String! +} + +input InputObject704 @Directive44(argument97 : ["stringValue24807"]) { + inputField3223: String + inputField3224: [Enum1264] + inputField3225: Enum1240 + inputField3226: String + inputField3227: String + inputField3228: Enum1265 + inputField3229: String + inputField3230: String + inputField3231: String + inputField3232: String + inputField3233: String + inputField3234: String + inputField3235: String + inputField3236: String + inputField3237: String + inputField3238: Boolean + inputField3239: Scalar4 + inputField3240: InputObject705 + inputField3249: [InputObject705] + inputField3250: String + inputField3251: Scalar2 + inputField3252: Enum1241 + inputField3253: Scalar2 +} + +input InputObject705 @Directive44(argument97 : ["stringValue24810"]) { + inputField3241: String + inputField3242: String + inputField3243: String + inputField3244: String + inputField3245: String + inputField3246: String + inputField3247: Enum1266 + inputField3248: [Enum1264] +} + +input InputObject706 @Directive44(argument97 : ["stringValue24817"]) { + inputField3254: Scalar2! + inputField3255: Enum1261! +} + +input InputObject707 @Directive44(argument97 : ["stringValue24821"]) { + inputField3256: Scalar2 + inputField3257: Scalar2 + inputField3258: Enum1253 + inputField3259: Scalar2 + inputField3260: Enum1254 +} + +input InputObject708 @Directive44(argument97 : ["stringValue24825"]) { + inputField3261: Scalar2! + inputField3262: Scalar2 + inputField3263: Enum1255 + inputField3264: Float + inputField3265: String + inputField3266: Scalar2 + inputField3267: String + inputField3268: Enum1257 +} + +input InputObject709 @Directive44(argument97 : ["stringValue24829"]) { + inputField3269: Scalar2! + inputField3270: Enum1262! + inputField3271: String! +} + +input InputObject71 @Directive22(argument62 : "stringValue18315") @Directive44(argument97 : ["stringValue18316"]) { + inputField295: String +} + +input InputObject710 @Directive44(argument97 : ["stringValue24833"]) { + inputField3272: Enum1260 + inputField3273: Scalar2 + inputField3274: Scalar4 + inputField3275: Scalar4 +} + +input InputObject711 @Directive44(argument97 : ["stringValue24837"]) { + inputField3276: Scalar2! + inputField3277: Scalar2 + inputField3278: Scalar2 + inputField3279: Enum1259 +} + +input InputObject712 @Directive44(argument97 : ["stringValue24841"]) { + inputField3280: Scalar2 + inputField3281: String! + inputField3282: String + inputField3283: String +} + +input InputObject713 @Directive44(argument97 : ["stringValue24847"]) { + inputField3284: Scalar2! +} + +input InputObject714 @Directive44(argument97 : ["stringValue24853"]) { + inputField3285: Scalar2! +} + +input InputObject715 @Directive44(argument97 : ["stringValue24857"]) { + inputField3286: [Scalar2]! +} + +input InputObject716 @Directive44(argument97 : ["stringValue24863"]) { + inputField3287: Scalar2! +} + +input InputObject717 @Directive44(argument97 : ["stringValue24867"]) { + inputField3288: Scalar2! +} + +input InputObject718 @Directive44(argument97 : ["stringValue24871"]) { + inputField3289: Scalar2! +} + +input InputObject719 @Directive44(argument97 : ["stringValue24875"]) { + inputField3290: Scalar2 +} + +input InputObject72 @Directive42(argument96 : ["stringValue18551"]) @Directive44(argument97 : ["stringValue18552", "stringValue18553"]) { + inputField296: Scalar2! + inputField297: Float +} + +input InputObject720 @Directive44(argument97 : ["stringValue24879"]) { + inputField3291: Scalar2! +} + +input InputObject721 @Directive44(argument97 : ["stringValue24883"]) { + inputField3292: Scalar2 + inputField3293: String + inputField3294: Boolean + inputField3295: String +} + +input InputObject722 @Directive44(argument97 : ["stringValue24889"]) { + inputField3296: Scalar2! + inputField3297: Enum1245! + inputField3298: String +} + +input InputObject723 @Directive44(argument97 : ["stringValue24893"]) { + inputField3299: Scalar2 + inputField3300: [InputObject724] +} + +input InputObject724 @Directive44(argument97 : ["stringValue24894"]) { + inputField3301: Enum1267 + inputField3302: Scalar2 + inputField3303: [InputObject725] +} + +input InputObject725 @Directive44(argument97 : ["stringValue24896"]) { + inputField3304: String + inputField3305: String +} + +input InputObject726 @Directive44(argument97 : ["stringValue24908"]) { + inputField3306: Scalar2! + inputField3307: Enum1258! + inputField3308: InputObject727 +} + +input InputObject727 @Directive44(argument97 : ["stringValue24909"]) { + inputField3309: InputObject728 + inputField3312: InputObject729 +} + +input InputObject728 @Directive44(argument97 : ["stringValue24910"]) { + inputField3310: Scalar2 + inputField3311: String +} + +input InputObject729 @Directive44(argument97 : ["stringValue24911"]) { + inputField3313: Scalar2 + inputField3314: String +} + +input InputObject73 @Directive20(argument58 : "stringValue18787", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18788") @Directive44(argument97 : ["stringValue18789"]) { + inputField298: Enum371 + inputField299: Enum371 + inputField300: InputObject74 + inputField304: InputObject75 +} + +input InputObject730 @Directive44(argument97 : ["stringValue24917"]) { + inputField3315: Scalar2! + inputField3316: Scalar2! + inputField3317: Scalar2! + inputField3318: String +} + +input InputObject731 @Directive44(argument97 : ["stringValue24923"]) { + inputField3319: Scalar2 + inputField3320: String + inputField3321: Enum1268 + inputField3322: String +} + +input InputObject732 @Directive44(argument97 : ["stringValue24930"]) { + inputField3323: String! + inputField3324: Enum1269! + inputField3325: InputObject733! + inputField3331: String! +} + +input InputObject733 @Directive44(argument97 : ["stringValue24932"]) { + inputField3326: [InputObject734] +} + +input InputObject734 @Directive44(argument97 : ["stringValue24933"]) { + inputField3327: String + inputField3328: [InputObject735] +} + +input InputObject735 @Directive44(argument97 : ["stringValue24934"]) { + inputField3329: String + inputField3330: String +} + +input InputObject736 @Directive44(argument97 : ["stringValue24940"]) { + inputField3332: Scalar2! + inputField3333: [InputObject724] +} + +input InputObject737 @Directive44(argument97 : ["stringValue24946"]) { + inputField3334: Scalar2! + inputField3335: [InputObject738] +} + +input InputObject738 @Directive44(argument97 : ["stringValue24947"]) { + inputField3336: Enum1262 + inputField3337: String +} + +input InputObject739 @Directive44(argument97 : ["stringValue24951"]) { + inputField3338: Scalar2! + inputField3339: Float! + inputField3340: String! + inputField3341: Enum1257! + inputField3342: Enum1270! + inputField3343: String + inputField3344: Scalar2! + inputField3345: Scalar2 +} + +input InputObject74 @Directive20(argument58 : "stringValue18790", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18791") @Directive44(argument97 : ["stringValue18792"]) { + inputField301: String + inputField302: String + inputField303: [Enum920] +} + +input InputObject740 @Directive44(argument97 : ["stringValue24958"]) { + inputField3346: Scalar2! + inputField3347: Float! + inputField3348: String! + inputField3349: Enum1257! + inputField3350: Enum1270 + inputField3351: String +} + +input InputObject741 @Directive44(argument97 : ["stringValue24962"]) { + inputField3352: Scalar2 + inputField3353: String +} + +input InputObject742 @Directive44(argument97 : ["stringValue24968"]) { + inputField3354: [Scalar2]! +} + +input InputObject743 @Directive44(argument97 : ["stringValue24974"]) { + inputField3355: String! +} + +input InputObject744 @Directive44(argument97 : ["stringValue24980"]) { + inputField3356: Scalar2! + inputField3357: String! + inputField3358: InputObject733! +} + +input InputObject745 @Directive44(argument97 : ["stringValue24986"]) { + inputField3359: Scalar2! + inputField3360: Scalar4 + inputField3361: Scalar4 + inputField3362: Scalar4 + inputField3363: Enum1245 + inputField3364: String +} + +input InputObject746 @Directive44(argument97 : ["stringValue24990"]) { + inputField3365: String! + inputField3366: InputObject704 + inputField3367: String +} + +input InputObject747 @Directive44(argument97 : ["stringValue24996"]) { + inputField3368: Scalar2! +} + +input InputObject748 @Directive44(argument97 : ["stringValue25003"]) { + inputField3369: String +} + +input InputObject749 @Directive44(argument97 : ["stringValue25011"]) { + inputField3370: InputObject750 + inputField3374: String + inputField3375: InputObject751 +} + +input InputObject75 @Directive20(argument58 : "stringValue18796", argument59 : false, argument60 : false) @Directive22(argument62 : "stringValue18797") @Directive44(argument97 : ["stringValue18798"]) { + inputField305: Enum921 +} + +input InputObject750 @Directive44(argument97 : ["stringValue25012"]) { + inputField3371: Enum1271 + inputField3372: String + inputField3373: String +} + +input InputObject751 @Directive44(argument97 : ["stringValue25014"]) { + inputField3376: String + inputField3377: String + inputField3378: String + inputField3379: Enum1272 + inputField3380: Int + inputField3381: Scalar2 +} + +input InputObject752 @Directive44(argument97 : ["stringValue25028"]) { + inputField3382: [String]! + inputField3383: Enum1273! + inputField3384: InputObject753 + inputField3395: InputObject755 +} + +input InputObject753 @Directive44(argument97 : ["stringValue25030"]) { + inputField3385: [InputObject754] + inputField3389: Enum1275 + inputField3390: String + inputField3391: Boolean! + inputField3392: String + inputField3393: String + inputField3394: String +} + +input InputObject754 @Directive44(argument97 : ["stringValue25031"]) { + inputField3386: String! + inputField3387: Boolean + inputField3388: Enum1274! +} + +input InputObject755 @Directive44(argument97 : ["stringValue25034"]) { + inputField3396: [InputObject754] + inputField3397: Enum1275 + inputField3398: String + inputField3399: Boolean! + inputField3400: String + inputField3401: String + inputField3402: String + inputField3403: String + inputField3404: String +} + +input InputObject756 @Directive44(argument97 : ["stringValue25044"]) { + inputField3405: Scalar2! +} + +input InputObject757 @Directive44(argument97 : ["stringValue25050"]) { + inputField3406: InputObject758! + inputField3417: Enum1278 + inputField3418: String +} + +input InputObject758 @Directive44(argument97 : ["stringValue25051"]) { + inputField3407: String! + inputField3408: String + inputField3409: String + inputField3410: String + inputField3411: String + inputField3412: String + inputField3413: String + inputField3414: String + inputField3415: String + inputField3416: Enum1277 +} + +input InputObject759 @Directive44(argument97 : ["stringValue25059"]) { + inputField3419: Scalar2! +} + +input InputObject76 @Directive22(argument62 : "stringValue18970") @Directive44(argument97 : ["stringValue18971", "stringValue18972"]) { + inputField306: [Enum158!]! + inputField307: Scalar2 + inputField308: Scalar2 + inputField309: Scalar2 + inputField310: String + inputField311: String + inputField312: String + inputField313: String + inputField314: Scalar2 + inputField315: Scalar2 + inputField316: Enum185 + inputField317: [String] + inputField318: InputObject77 + inputField322: Boolean + inputField323: Boolean + inputField324: Boolean + inputField325: Boolean + inputField326: Scalar2 + inputField327: String + inputField328: [Enum924] + inputField329: String + inputField330: String + inputField331: String + inputField332: String + inputField333: Int + inputField334: String + inputField335: String + inputField336: Int + inputField337: Scalar2 + inputField338: [InputObject78] + inputField342: Boolean + inputField343: Boolean + inputField344: String + inputField345: String + inputField346: Boolean + inputField347: String + inputField348: Int + inputField349: Boolean + inputField350: [String] + inputField351: String +} + +input InputObject760 @Directive44(argument97 : ["stringValue25065"]) { + inputField3420: Scalar2! +} + +input InputObject761 @Directive44(argument97 : ["stringValue25073"]) { + inputField3421: String + inputField3422: String! + inputField3423: Float + inputField3424: Int + inputField3425: Float + inputField3426: Enum23! + inputField3427: Scalar2 + inputField3428: Scalar3! + inputField3429: Enum25! + inputField3430: Enum26! + inputField3431: String + inputField3432: Scalar2 + inputField3433: Boolean + inputField3434: Boolean + inputField3435: String + inputField3436: Scalar2 + inputField3437: String + inputField3438: Scalar3 + inputField3439: Scalar3 + inputField3440: Scalar2 + inputField3441: Enum24 + inputField3442: Float + inputField3443: Float + inputField3444: Int + inputField3445: String + inputField3446: String + inputField3447: Boolean + inputField3448: String + inputField3449: String + inputField3450: String + inputField3451: String + inputField3452: String + inputField3453: Scalar2 + inputField3454: String + inputField3455: String + inputField3456: Scalar2 + inputField3457: Scalar2 + inputField3458: String +} + +input InputObject762 @Directive44(argument97 : ["stringValue25079"]) { + inputField3459: String! + inputField3460: Enum26! + inputField3461: Enum1280 + inputField3462: String + inputField3463: Float + inputField3464: Int + inputField3465: Float + inputField3466: Scalar3 + inputField3467: Scalar2 + inputField3468: String + inputField3469: String + inputField3470: String + inputField3471: String + inputField3472: Scalar2 + inputField3473: String + inputField3474: String + inputField3475: Scalar2 + inputField3476: Scalar2 + inputField3477: Enum23! + inputField3478: Scalar3 +} + +input InputObject763 @Directive44(argument97 : ["stringValue25087"]) { + inputField3479: Scalar2! + inputField3480: String + inputField3481: Enum1281! + inputField3482: InputObject764 +} + +input InputObject764 @Directive44(argument97 : ["stringValue25089"]) { + inputField3483: InputObject765 +} + +input InputObject765 @Directive44(argument97 : ["stringValue25090"]) { + inputField3484: String + inputField3485: Float + inputField3486: Float +} + +input InputObject766 @Directive44(argument97 : ["stringValue25102"]) { + inputField3487: Scalar2! + inputField3488: String +} + +input InputObject767 @Directive44(argument97 : ["stringValue25108"]) { + inputField3489: Scalar2 +} + +input InputObject768 @Directive44(argument97 : ["stringValue25120"]) { + inputField3490: Scalar2! + inputField3491: Enum1281 + inputField3492: Scalar2 +} + +input InputObject769 @Directive44(argument97 : ["stringValue25126"]) { + inputField3493: Scalar2! +} + +input InputObject77 @Directive22(argument62 : "stringValue18973") @Directive44(argument97 : ["stringValue18974", "stringValue18975"]) { + inputField319: InputObject1 + inputField320: String + inputField321: String +} + +input InputObject770 @Directive44(argument97 : ["stringValue25132"]) { + inputField3494: Scalar2! + inputField3495: [String] +} + +input InputObject771 @Directive44(argument97 : ["stringValue25138"]) { + inputField3496: InputObject772! +} + +input InputObject772 @Directive44(argument97 : ["stringValue25139"]) { + inputField3497: Scalar2! + inputField3498: Scalar2! + inputField3499: Enum1284! + inputField3500: String + inputField3501: Enum1285 +} + +input InputObject773 @Directive44(argument97 : ["stringValue25149"]) { + inputField3502: Scalar2 + inputField3503: Scalar2 +} + +input InputObject774 @Directive44(argument97 : ["stringValue25158"]) { + inputField3504: [InputObject775]! + inputField3519: Scalar2 +} + +input InputObject775 @Directive44(argument97 : ["stringValue25159"]) { + inputField3505: Scalar2 + inputField3506: String + inputField3507: Int + inputField3508: Scalar2 + inputField3509: Scalar2 + inputField3510: Int + inputField3511: Int + inputField3512: InputObject776 + inputField3515: [Scalar2] + inputField3516: Enum1287 + inputField3517: Enum1288 + inputField3518: [InputObject775] +} + +input InputObject776 @Directive44(argument97 : ["stringValue25160"]) { + inputField3513: Enum1286! + inputField3514: Scalar2! +} + +input InputObject777 @Directive44(argument97 : ["stringValue25169"]) { + inputField3520: Boolean! +} + +input InputObject778 @Directive44(argument97 : ["stringValue25175"]) { + inputField3521: Scalar2! + inputField3522: Enum1289 + inputField3523: Enum1290 +} + +input InputObject779 @Directive44(argument97 : ["stringValue25184"]) { + inputField3524: Enum1291! + inputField3525: Scalar2! + inputField3526: Enum1292! + inputField3527: String + inputField3528: String + inputField3529: String + inputField3530: String + inputField3531: String + inputField3532: String + inputField3533: String +} + +input InputObject78 @Directive22(argument62 : "stringValue18980") @Directive44(argument97 : ["stringValue18981", "stringValue18982"]) { + inputField339: String + inputField340: String + inputField341: Enum1 +} + +input InputObject780 @Directive44(argument97 : ["stringValue25194"]) { + inputField3534: Enum1291! + inputField3535: Scalar2! + inputField3536: Enum1293! + inputField3537: String! + inputField3538: String + inputField3539: String + inputField3540: String + inputField3541: String + inputField3542: String + inputField3543: Enum1294 +} + +input InputObject781 @Directive44(argument97 : ["stringValue25204"]) { + inputField3544: Scalar2! + inputField3545: String + inputField3546: String + inputField3547: String + inputField3548: String + inputField3549: String + inputField3550: String + inputField3551: String +} + +input InputObject782 @Directive44(argument97 : ["stringValue25210"]) { + inputField3552: Scalar2! + inputField3553: String! + inputField3554: String + inputField3555: String + inputField3556: String + inputField3557: String + inputField3558: String +} + +input InputObject783 @Directive44(argument97 : ["stringValue25217"]) { + inputField3559: Scalar2 + inputField3560: [Enum1295] +} + +input InputObject784 @Directive44(argument97 : ["stringValue25225"]) { + inputField3561: InputObject785! + inputField3616: InputObject797 + inputField3625: InputObject798 + inputField3628: InputObject799 + inputField3632: InputObject800 + inputField3635: InputObject801 + inputField3659: Boolean + inputField3660: String + inputField3661: String + inputField3662: String + inputField3663: String + inputField3664: Enum1302 +} + +input InputObject785 @Directive44(argument97 : ["stringValue25226"]) { + inputField3562: InputObject786 + inputField3577: InputObject786 + inputField3578: InputObject788 + inputField3581: InputObject789 + inputField3583: InputObject790 + inputField3586: InputObject791 + inputField3599: InputObject786 + inputField3600: InputObject786 + inputField3601: InputObject786 + inputField3602: InputObject786 + inputField3603: InputObject786 + inputField3604: InputObject793 + inputField3606: InputObject794 + inputField3609: InputObject795 + inputField3614: InputObject796 +} + +input InputObject786 @Directive44(argument97 : ["stringValue25227"]) { + inputField3563: String + inputField3564: String + inputField3565: String + inputField3566: String + inputField3567: String + inputField3568: String + inputField3569: String + inputField3570: String + inputField3571: String + inputField3572: InputObject787 + inputField3575: InputObject787 + inputField3576: Enum1296 +} + +input InputObject787 @Directive44(argument97 : ["stringValue25228"]) { + inputField3573: String! + inputField3574: String! +} + +input InputObject788 @Directive44(argument97 : ["stringValue25230"]) { + inputField3579: String! + inputField3580: String +} + +input InputObject789 @Directive44(argument97 : ["stringValue25231"]) { + inputField3582: String! +} + +input InputObject79 @Directive22(argument62 : "stringValue19241") @Directive44(argument97 : ["stringValue19242", "stringValue19243"]) { + inputField352: Enum934 + inputField353: Enum935 +} + +input InputObject790 @Directive44(argument97 : ["stringValue25232"]) { + inputField3584: String! + inputField3585: Scalar2! +} + +input InputObject791 @Directive44(argument97 : ["stringValue25233"]) { + inputField3587: String + inputField3588: String + inputField3589: String + inputField3590: Boolean + inputField3591: String + inputField3592: String + inputField3593: InputObject787 + inputField3594: String + inputField3595: InputObject792 + inputField3597: Boolean + inputField3598: Enum1297 +} + +input InputObject792 @Directive44(argument97 : ["stringValue25234"]) { + inputField3596: String! +} + +input InputObject793 @Directive44(argument97 : ["stringValue25236"]) { + inputField3605: String! +} + +input InputObject794 @Directive44(argument97 : ["stringValue25237"]) { + inputField3607: Scalar2! + inputField3608: String! +} + +input InputObject795 @Directive44(argument97 : ["stringValue25238"]) { + inputField3610: Scalar2! + inputField3611: String! + inputField3612: Scalar4! + inputField3613: String! +} + +input InputObject796 @Directive44(argument97 : ["stringValue25239"]) { + inputField3615: String! +} + +input InputObject797 @Directive44(argument97 : ["stringValue25240"]) { + inputField3617: String + inputField3618: String + inputField3619: Scalar3 + inputField3620: Boolean + inputField3621: Boolean + inputField3622: Boolean + inputField3623: Boolean + inputField3624: String +} + +input InputObject798 @Directive44(argument97 : ["stringValue25241"]) { + inputField3626: Boolean + inputField3627: Enum1298 +} + +input InputObject799 @Directive44(argument97 : ["stringValue25243"]) { + inputField3629: String + inputField3630: String + inputField3631: String +} + +input InputObject8 @Directive22(argument62 : "stringValue11649") @Directive44(argument97 : ["stringValue11650"]) { + inputField49: Enum466! + inputField50: Enum467! +} + +input InputObject800 @Directive44(argument97 : ["stringValue25244"]) { + inputField3633: String + inputField3634: String +} + +input InputObject801 @Directive44(argument97 : ["stringValue25245"]) { + inputField3636: String + inputField3637: String + inputField3638: String + inputField3639: String + inputField3640: String + inputField3641: String + inputField3642: String + inputField3643: String + inputField3644: String + inputField3645: String + inputField3646: String + inputField3647: String + inputField3648: String + inputField3649: Scalar1 + inputField3650: Enum1299 + inputField3651: Enum1300 + inputField3652: InputObject802 + inputField3656: Enum1301 + inputField3657: String + inputField3658: String +} + +input InputObject802 @Directive44(argument97 : ["stringValue25248"]) { + inputField3653: String + inputField3654: String + inputField3655: String +} + +input InputObject803 @Directive44(argument97 : ["stringValue25263"]) { + inputField3665: String +} + +input InputObject804 @Directive44(argument97 : ["stringValue25277"]) { + inputField3666: String! +} + +input InputObject805 @Directive44(argument97 : ["stringValue25284"]) { + inputField3667: String! +} + +input InputObject806 @Directive44(argument97 : ["stringValue25291"]) { + inputField3668: Enum1306 + inputField3669: [Enum1306] +} + +input InputObject807 @Directive44(argument97 : ["stringValue25298"]) { + inputField3670: [InputObject808] +} + +input InputObject808 @Directive44(argument97 : ["stringValue25299"]) { + inputField3671: InputObject809! + inputField3675: [Enum1307] + inputField3676: InputObject810 +} + +input InputObject809 @Directive44(argument97 : ["stringValue25300"]) { + inputField3672: Scalar2 + inputField3673: Scalar2 + inputField3674: String +} + +input InputObject81 @Directive22(argument62 : "stringValue19441") @Directive44(argument97 : ["stringValue19442"]) { + inputField358: [InputObject82] + inputField382: Enum247 + inputField383: [InputObject84] +} + +input InputObject810 @Directive44(argument97 : ["stringValue25302"]) { + inputField3677: Boolean + inputField3678: Boolean + inputField3679: Boolean +} + +input InputObject811 @Directive44(argument97 : ["stringValue25314"]) { + inputField3680: String! +} + +input InputObject812 @Directive44(argument97 : ["stringValue25320"]) { + inputField3681: Scalar2 + inputField3682: String +} + +input InputObject813 @Directive44(argument97 : ["stringValue25326"]) { + inputField3683: String + inputField3684: Int + inputField3685: Scalar2 +} + +input InputObject814 @Directive44(argument97 : ["stringValue25352"]) { + inputField3686: String! +} + +input InputObject815 @Directive44(argument97 : ["stringValue25358"]) { + inputField3687: Scalar2! + inputField3688: String +} + +input InputObject816 @Directive44(argument97 : ["stringValue25364"]) { + inputField3689: String + inputField3690: Int + inputField3691: Scalar2 +} + +input InputObject817 @Directive44(argument97 : ["stringValue25383"]) { + inputField3692: String + inputField3693: [InputObject818] +} + +input InputObject818 @Directive44(argument97 : ["stringValue25384"]) { + inputField3694: Enum1318 + inputField3695: Boolean +} + +input InputObject819 @Directive44(argument97 : ["stringValue25392"]) { + inputField3696: [InputObject820] +} + +input InputObject82 @Directive22(argument62 : "stringValue19443") @Directive44(argument97 : ["stringValue19444"]) { + inputField359: Scalar2 + inputField360: InputObject83 +} + +input InputObject820 @Directive44(argument97 : ["stringValue25393"]) { + inputField3697: Scalar2 + inputField3698: Scalar3 + inputField3699: Boolean + inputField3700: Boolean +} + +input InputObject821 @Directive44(argument97 : ["stringValue25399"]) { + inputField3701: [String] + inputField3702: [String] +} + +input InputObject822 @Directive44(argument97 : ["stringValue25405"]) { + inputField3703: Boolean + inputField3704: [InputObject823]! +} + +input InputObject823 @Directive44(argument97 : ["stringValue25406"]) { + inputField3705: InputObject824! + inputField3708: InputObject825! +} + +input InputObject824 @Directive44(argument97 : ["stringValue25407"]) { + inputField3706: Boolean + inputField3707: [Scalar2] +} + +input InputObject825 @Directive44(argument97 : ["stringValue25408"]) { + inputField3709: Boolean + inputField3710: Boolean + inputField3711: Boolean + inputField3712: Boolean + inputField3713: Boolean +} + +input InputObject826 @Directive44(argument97 : ["stringValue25414"]) { + inputField3714: [Scalar2] +} + +input InputObject827 @Directive44(argument97 : ["stringValue25420"]) { + inputField3715: [Scalar2]! + inputField3716: Boolean! +} + +input InputObject828 @Directive44(argument97 : ["stringValue25427"]) { + inputField3717: Scalar2! + inputField3718: Scalar2! + inputField3719: Int + inputField3720: Int +} + +input InputObject829 @Directive44(argument97 : ["stringValue25451"]) { + inputField3721: Scalar2! + inputField3722: Int! + inputField3723: String! + inputField3724: String! + inputField3725: Float + inputField3726: Float + inputField3727: Scalar4 + inputField3728: Int +} + +input InputObject83 @Directive22(argument62 : "stringValue19445") @Directive44(argument97 : ["stringValue19446"]) { + inputField361: Scalar2 + inputField362: Float + inputField363: Float + inputField364: Float + inputField365: Float + inputField366: Float + inputField367: Boolean + inputField368: Float + inputField369: Boolean + inputField370: Float + inputField371: Float + inputField372: Int + inputField373: Scalar2 + inputField374: Scalar2 + inputField375: Float + inputField376: Float + inputField377: Float + inputField378: Float + inputField379: String + inputField380: Scalar2 + inputField381: Int +} + +input InputObject830 @Directive44(argument97 : ["stringValue25459"]) { + inputField3729: Scalar2! + inputField3730: [InputObject831]! + inputField3737: Int + inputField3738: Boolean + inputField3739: Boolean +} + +input InputObject831 @Directive44(argument97 : ["stringValue25460"]) { + inputField3731: Int! + inputField3732: Boolean + inputField3733: Int + inputField3734: Scalar2 + inputField3735: Float + inputField3736: String +} + +input InputObject832 @Directive44(argument97 : ["stringValue25466"]) { + inputField3740: Int! + inputField3741: Scalar2! + inputField3742: Int + inputField3743: Boolean + inputField3744: Boolean +} + +input InputObject833 @Directive44(argument97 : ["stringValue25470"]) { + inputField3745: Scalar2 + inputField3746: InputObject834 +} + +input InputObject834 @Directive44(argument97 : ["stringValue25471"]) { + inputField3747: Int + inputField3748: String + inputField3749: String + inputField3750: String + inputField3751: Boolean + inputField3752: Enum1319 + inputField3753: String + inputField3754: Boolean + inputField3755: [String] + inputField3756: [InputObject835] + inputField3763: [InputObject835] + inputField3764: Int + inputField3765: Int + inputField3766: Int + inputField3767: Int + inputField3768: [InputObject834] + inputField3769: String + inputField3770: Float + inputField3771: [InputObject835] + inputField3772: String + inputField3773: InputObject836 + inputField3781: Enum1320 + inputField3782: Enum1321 + inputField3783: InputObject837 + inputField3789: String + inputField3790: Enum1322 + inputField3791: String + inputField3792: String + inputField3793: Scalar2 +} + +input InputObject835 @Directive44(argument97 : ["stringValue25472"]) { + inputField3757: String + inputField3758: String + inputField3759: String + inputField3760: Boolean + inputField3761: String + inputField3762: Scalar2 +} + +input InputObject836 @Directive44(argument97 : ["stringValue25473"]) { + inputField3774: String + inputField3775: String + inputField3776: String + inputField3777: String + inputField3778: String + inputField3779: String + inputField3780: String +} + +input InputObject837 @Directive44(argument97 : ["stringValue25474"]) { + inputField3784: Int + inputField3785: [InputObject838] + inputField3788: [Int] +} + +input InputObject838 @Directive44(argument97 : ["stringValue25475"]) { + inputField3786: Int + inputField3787: String +} + +input InputObject839 @Directive44(argument97 : ["stringValue25481"]) { + inputField3794: Scalar2! + inputField3795: Int! + inputField3796: String +} + +input InputObject84 @Directive22(argument62 : "stringValue19447") @Directive44(argument97 : ["stringValue19448"]) { + inputField384: Scalar2 + inputField385: Boolean +} + +input InputObject840 @Directive44(argument97 : ["stringValue25490"]) { + inputField3797: Scalar2! +} + +input InputObject841 @Directive44(argument97 : ["stringValue25497"]) { + inputField3798: Scalar2 + inputField3799: String + inputField3800: Enum1323 + inputField3801: Enum1324 +} + +input InputObject842 @Directive44(argument97 : ["stringValue25505"]) { + inputField3802: Scalar2! + inputField3803: Enum1323 + inputField3804: Enum1324 + inputField3805: [Scalar2] +} + +input InputObject843 @Directive44(argument97 : ["stringValue25511"]) { + inputField3806: Scalar2! +} + +input InputObject844 @Directive44(argument97 : ["stringValue25517"]) { + inputField3807: Scalar2! +} + +input InputObject845 @Directive44(argument97 : ["stringValue25523"]) { + inputField3808: [Enum1325] +} + +input InputObject846 @Directive44(argument97 : ["stringValue25530"]) { + inputField3809: String + inputField3810: InputObject847 + inputField3812: String + inputField3813: String + inputField3814: Enum1327 +} + +input InputObject847 @Directive44(argument97 : ["stringValue25531"]) { + inputField3811: Enum1326 +} + +input InputObject848 @Directive44(argument97 : ["stringValue25546"]) { + inputField3815: Scalar2! + inputField3816: String +} + +input InputObject849 @Directive44(argument97 : ["stringValue25552"]) { + inputField3817: String! +} + +input InputObject85 @Directive22(argument62 : "stringValue19538") @Directive44(argument97 : ["stringValue19539", "stringValue19540"]) { + inputField386: String! + inputField387: Scalar2! + inputField388: Scalar3! + inputField389: Scalar3! + inputField390: InputObject86! + inputField394: InputObject87 +} + +input InputObject850 @Directive44(argument97 : ["stringValue25558"]) { + inputField3818: Enum1328! + inputField3819: [Enum1329]! +} + +input InputObject851 @Directive44(argument97 : ["stringValue25577"]) { + inputField3820: Scalar2 + inputField3821: [Enum1331]! + inputField3822: InputObject852! +} + +input InputObject852 @Directive44(argument97 : ["stringValue25579"]) { + inputField3823: [Enum1332] + inputField3824: String + inputField3825: String +} + +input InputObject853 @Directive44(argument97 : ["stringValue25589"]) { + inputField3826: Scalar2! +} + +input InputObject854 @Directive44(argument97 : ["stringValue25595"]) { + inputField3827: Scalar2! + inputField3828: [String] + inputField3829: [String] + inputField3830: [InputObject855] +} + +input InputObject855 @Directive44(argument97 : ["stringValue25596"]) { + inputField3831: String + inputField3832: String + inputField3833: [Enum1332] +} + +input InputObject856 @Directive44(argument97 : ["stringValue25602"]) { + inputField3834: Scalar2! + inputField3835: [Enum1332] +} + +input InputObject857 @Directive44(argument97 : ["stringValue25613"]) { + inputField3836: Scalar2! +} + +input InputObject858 @Directive44(argument97 : ["stringValue25619"]) { + inputField3837: [Scalar2]! + inputField3838: String! + inputField3839: String +} + +input InputObject859 @Directive44(argument97 : ["stringValue25627"]) { + inputField3840: Boolean + inputField3841: Boolean + inputField3842: Boolean + inputField3843: Scalar4 + inputField3844: Scalar4 + inputField3845: Scalar2 + inputField3846: Boolean + inputField3847: Scalar2 +} + +input InputObject86 @Directive22(argument62 : "stringValue19541") @Directive44(argument97 : ["stringValue19542", "stringValue19543"]) { + inputField391: Int! + inputField392: Int! + inputField393: Int! +} + +input InputObject860 @Directive44(argument97 : ["stringValue25633"]) { + inputField3848: Scalar2! + inputField3849: Enum1334! +} + +input InputObject861 @Directive44(argument97 : ["stringValue25640"]) { + inputField3850: Scalar2! + inputField3851: Enum1323! +} + +input InputObject862 @Directive44(argument97 : ["stringValue25646"]) { + inputField3852: Scalar2! + inputField3853: Enum1324! +} + +input InputObject863 @Directive44(argument97 : ["stringValue25652"]) { + inputField3854: Scalar2! + inputField3855: String + inputField3856: InputObject847 +} + +input InputObject864 @Directive44(argument97 : ["stringValue25659"]) { + inputField3857: String + inputField3858: String +} + +input InputObject865 @Directive44(argument97 : ["stringValue25665"]) { + inputField3859: String! + inputField3860: Boolean! +} + +input InputObject866 @Directive44(argument97 : ["stringValue25672"]) { + inputField3861: String! +} + +input InputObject867 @Directive44(argument97 : ["stringValue25681"]) { + inputField3862: InputObject868! + inputField3871: InputObject868! + inputField3872: InputObject868! +} + +input InputObject868 @Directive44(argument97 : ["stringValue25682"]) { + inputField3863: InputObject869 + inputField3870: String +} + +input InputObject869 @Directive44(argument97 : ["stringValue25683"]) { + inputField3864: String + inputField3865: String + inputField3866: String + inputField3867: Boolean + inputField3868: String + inputField3869: Scalar2 +} + +input InputObject87 @Directive22(argument62 : "stringValue19544") @Directive44(argument97 : ["stringValue19545", "stringValue19546"]) { + inputField395: Scalar2 + inputField396: Scalar2 +} + +input InputObject870 @Directive44(argument97 : ["stringValue25689"]) { + inputField3873: String! +} + +input InputObject871 @Directive44(argument97 : ["stringValue25695"]) { + inputField3874: InputObject868! + inputField3875: InputObject868! + inputField3876: InputObject868! +} + +input InputObject872 @Directive44(argument97 : ["stringValue25702"]) { + inputField3877: Scalar2 + inputField3878: InputObject873! + inputField3912: Enum1341 +} + +input InputObject873 @Directive44(argument97 : ["stringValue25703"]) { + inputField3879: Enum1336! + inputField3880: InputObject874! + inputField3884: String! + inputField3885: String + inputField3886: Float + inputField3887: Float + inputField3888: Scalar4 + inputField3889: Scalar4 + inputField3890: [InputObject875]! + inputField3900: [Scalar2]! + inputField3901: InputObject877 + inputField3911: Scalar2 +} + +input InputObject874 @Directive44(argument97 : ["stringValue25705"]) { + inputField3881: Enum1337! + inputField3882: Float + inputField3883: Float +} + +input InputObject875 @Directive44(argument97 : ["stringValue25707"]) { + inputField3891: Scalar3 + inputField3892: Scalar3 + inputField3893: [Enum1338] + inputField3894: InputObject876 + inputField3897: InputObject876 + inputField3898: [Enum1340] + inputField3899: [Enum1338] +} + +input InputObject876 @Directive44(argument97 : ["stringValue25709"]) { + inputField3895: Enum1339! + inputField3896: Scalar2! +} + +input InputObject877 @Directive44(argument97 : ["stringValue25712"]) { + inputField3902: Float + inputField3903: Scalar4 + inputField3904: Scalar4 + inputField3905: InputObject878 + inputField3907: Scalar2 + inputField3908: Scalar2 + inputField3909: Scalar2 + inputField3910: String +} + +input InputObject878 @Directive44(argument97 : ["stringValue25713"]) { + inputField3906: [String] +} + +input InputObject879 @Directive44(argument97 : ["stringValue25734"]) { + inputField3913: Scalar2! + inputField3914: InputObject873! +} + +input InputObject88 @Directive22(argument62 : "stringValue19647") @Directive44(argument97 : ["stringValue19648", "stringValue19649"]) { + inputField397: String + inputField398: String + inputField399: String + inputField400: [InputObject89] +} + +input InputObject880 @Directive44(argument97 : ["stringValue25738"]) { + inputField3915: Scalar2 + inputField3916: Scalar1! +} + +input InputObject881 @Directive44(argument97 : ["stringValue25745"]) { + inputField3917: Scalar2! + inputField3918: InputObject882! +} + +input InputObject882 @Directive44(argument97 : ["stringValue25746"]) { + inputField3919: Scalar2 + inputField3920: Enum651! + inputField3921: InputObject883 +} + +input InputObject883 @Directive44(argument97 : ["stringValue25747"]) { + inputField3922: InputObject884 + inputField3941: InputObject889 + inputField3948: InputObject890 + inputField3955: InputObject891 + inputField3961: InputObject892 + inputField3968: InputObject893 + inputField3972: InputObject894 + inputField3979: InputObject895 +} + +input InputObject884 @Directive44(argument97 : ["stringValue25748"]) { + inputField3923: String + inputField3924: [InputObject885] + inputField3932: [Enum1342] + inputField3933: String + inputField3934: InputObject888 + inputField3939: InputObject888 + inputField3940: InputObject888 +} + +input InputObject885 @Directive44(argument97 : ["stringValue25749"]) { + inputField3925: [InputObject886] + inputField3928: [Int] + inputField3929: [InputObject887] +} + +input InputObject886 @Directive44(argument97 : ["stringValue25750"]) { + inputField3926: String + inputField3927: String +} + +input InputObject887 @Directive44(argument97 : ["stringValue25751"]) { + inputField3930: String + inputField3931: String +} + +input InputObject888 @Directive44(argument97 : ["stringValue25753"]) { + inputField3935: Scalar2 + inputField3936: String + inputField3937: Enum605 + inputField3938: Enum606 +} + +input InputObject889 @Directive44(argument97 : ["stringValue25754"]) { + inputField3942: String + inputField3943: [InputObject885] + inputField3944: String + inputField3945: InputObject888 + inputField3946: Boolean + inputField3947: Boolean +} + +input InputObject89 @Directive22(argument62 : "stringValue19650") @Directive44(argument97 : ["stringValue19651", "stringValue19652"]) { + inputField401: String + inputField402: String +} + +input InputObject890 @Directive44(argument97 : ["stringValue25755"]) { + inputField3949: String + inputField3950: [InputObject885] + inputField3951: Enum1343 + inputField3952: Enum1344 + inputField3953: Enum1345 + inputField3954: [Enum1346] +} + +input InputObject891 @Directive44(argument97 : ["stringValue25760"]) { + inputField3956: String + inputField3957: [InputObject885] + inputField3958: Enum1343 + inputField3959: Enum1345 + inputField3960: Enum1347 +} + +input InputObject892 @Directive44(argument97 : ["stringValue25762"]) { + inputField3962: String + inputField3963: [InputObject885] + inputField3964: Boolean + inputField3965: Boolean + inputField3966: [Enum1348] + inputField3967: Boolean +} + +input InputObject893 @Directive44(argument97 : ["stringValue25764"]) { + inputField3969: String + inputField3970: [InputObject885] + inputField3971: Boolean +} + +input InputObject894 @Directive44(argument97 : ["stringValue25765"]) { + inputField3973: String + inputField3974: [InputObject885] + inputField3975: Boolean + inputField3976: Boolean + inputField3977: Boolean + inputField3978: Int +} + +input InputObject895 @Directive44(argument97 : ["stringValue25766"]) { + inputField3980: String + inputField3981: [InputObject885] + inputField3982: Boolean + inputField3983: Int + inputField3984: Boolean + inputField3985: Boolean + inputField3986: Boolean +} + +input InputObject896 @Directive44(argument97 : ["stringValue25792"]) { + inputField3987: Scalar2! + inputField3988: Scalar2 + inputField3989: Enum1349 +} + +input InputObject897 @Directive44(argument97 : ["stringValue25799"]) { + inputField3990: Scalar2! + inputField3991: Scalar2 + inputField3992: Int! + inputField3993: String! + inputField3994: String + inputField3995: Scalar4 +} + +input InputObject898 @Directive44(argument97 : ["stringValue25807"]) { + inputField3996: Scalar2! + inputField3997: String! +} + +input InputObject899 @Directive44(argument97 : ["stringValue25813"]) { + inputField3998: Scalar2! + inputField3999: String! + inputField4000: String! + inputField4001: String! + inputField4002: Enum1350! + inputField4003: Float! + inputField4004: Boolean! + inputField4005: Int! +} + +input InputObject9 @Directive42(argument96 : ["stringValue11779"]) @Directive44(argument97 : ["stringValue11780", "stringValue11781"]) { + inputField51: InputObject10 + inputField57: [ID!] + inputField58: [String!] + inputField59: [Enum474!] + inputField60: [Enum474!] + inputField61: InputObject11 + inputField64: InputObject11 + inputField65: InputObject11 +} + +input InputObject90 @Directive22(argument62 : "stringValue19672") @Directive44(argument97 : ["stringValue19673", "stringValue19674"]) { + inputField403: String +} + +input InputObject900 @Directive44(argument97 : ["stringValue25822"]) { + inputField4006: Scalar2! + inputField4007: Scalar2 + inputField4008: Scalar2! +} + +input InputObject901 @Directive44(argument97 : ["stringValue25826"]) { + inputField4009: Scalar2! + inputField4010: Scalar2! +} + +input InputObject902 @Directive44(argument97 : ["stringValue25832"]) { + inputField4011: Scalar2! + inputField4012: Scalar2 +} + +input InputObject903 @Directive44(argument97 : ["stringValue25838"]) { + inputField4013: Scalar2! + inputField4014: Enum1351 + inputField4015: Enum1352 + inputField4016: String +} + +input InputObject904 @Directive44(argument97 : ["stringValue25846"]) { + inputField4017: [InputObject905]! + inputField4020: InputObject906! +} + +input InputObject905 @Directive44(argument97 : ["stringValue25847"]) { + inputField4018: Scalar2! + inputField4019: Scalar2! +} + +input InputObject906 @Directive44(argument97 : ["stringValue25848"]) { + inputField4021: Scalar2! + inputField4022: Scalar2 +} + +input InputObject907 @Directive44(argument97 : ["stringValue25854"]) { + inputField4023: Scalar2! + inputField4024: Scalar2! + inputField4025: String! + inputField4026: String + inputField4027: Scalar4 +} + +input InputObject908 @Directive44(argument97 : ["stringValue25858"]) { + inputField4028: Scalar2! + inputField4029: InputObject909 +} + +input InputObject909 @Directive44(argument97 : ["stringValue25859"]) { + inputField4030: InputObject910 + inputField4035: InputObject912 +} + +input InputObject91 @Directive22(argument62 : "stringValue19677") @Directive44(argument97 : ["stringValue19678", "stringValue19679"]) { + inputField404: String + inputField405: Enum194! + inputField406: Enum446 + inputField407: Scalar2 +} + +input InputObject910 @Directive44(argument97 : ["stringValue25860"]) { + inputField4031: Float! + inputField4032: InputObject911 +} + +input InputObject911 @Directive44(argument97 : ["stringValue25861"]) { + inputField4033: String! + inputField4034: Scalar2! +} + +input InputObject912 @Directive44(argument97 : ["stringValue25862"]) { + inputField4036: Boolean +} + +input InputObject913 @Directive44(argument97 : ["stringValue25876"]) { + inputField4037: Scalar2! + inputField4038: [InputObject914]! +} + +input InputObject914 @Directive44(argument97 : ["stringValue25877"]) { + inputField4039: Int! + inputField4040: Int + inputField4041: Boolean! + inputField4042: Boolean +} + +input InputObject915 @Directive44(argument97 : ["stringValue25891"]) { + inputField4043: Scalar2! + inputField4044: Scalar2 + inputField4045: Scalar2! + inputField4046: String +} + +input InputObject916 @Directive44(argument97 : ["stringValue25895"]) { + inputField4047: Scalar2 + inputField4048: InputObject917 +} + +input InputObject917 @Directive44(argument97 : ["stringValue25896"]) { + inputField4049: [InputObject918] + inputField4191: Int + inputField4192: Boolean +} + +input InputObject918 @Directive44(argument97 : ["stringValue25897"]) { + inputField4050: String + inputField4051: Boolean + inputField4052: InputObject919 +} + +input InputObject919 @Directive44(argument97 : ["stringValue25898"]) { + inputField4053: Enum1353! + inputField4054: InputObject920 +} + +input InputObject92 @Directive22(argument62 : "stringValue19688") @Directive44(argument97 : ["stringValue19689", "stringValue19690"]) { + inputField408: ID! + inputField409: String + inputField410: String + inputField411: Int + inputField412: Int + inputField413: Int + inputField414: String +} + +input InputObject920 @Directive44(argument97 : ["stringValue25900"]) { + inputField4055: InputObject921 + inputField4058: InputObject922 + inputField4062: InputObject923 + inputField4067: InputObject924 + inputField4071: InputObject925 + inputField4074: InputObject926 + inputField4079: InputObject927 + inputField4081: InputObject928 + inputField4083: InputObject929 + inputField4089: InputObject930 + inputField4092: InputObject931 + inputField4094: InputObject932 + inputField4096: InputObject933 + inputField4100: InputObject934 + inputField4103: InputObject935 + inputField4107: InputObject936 + inputField4110: InputObject937 + inputField4112: InputObject938 + inputField4114: InputObject939 + inputField4116: InputObject940 + inputField4126: InputObject943 + inputField4129: InputObject944 + inputField4133: InputObject945 + inputField4137: InputObject946 + inputField4140: InputObject947 + inputField4145: InputObject948 + inputField4147: InputObject949 + inputField4149: InputObject950 + inputField4153: InputObject951 + inputField4155: InputObject952 + inputField4157: InputObject953 + inputField4159: InputObject954 + inputField4163: InputObject955 + inputField4167: InputObject956 + inputField4169: InputObject957 + inputField4171: InputObject958 + inputField4173: InputObject959 + inputField4175: InputObject960 + inputField4177: InputObject961 + inputField4180: InputObject962 + inputField4182: InputObject963 + inputField4185: InputObject964 + inputField4188: InputObject965 +} + +input InputObject921 @Directive44(argument97 : ["stringValue25901"]) { + inputField4056: [InputObject885] + inputField4057: InputObject888 +} + +input InputObject922 @Directive44(argument97 : ["stringValue25902"]) { + inputField4059: [InputObject885] + inputField4060: InputObject888 + inputField4061: String +} + +input InputObject923 @Directive44(argument97 : ["stringValue25903"]) { + inputField4063: InputObject888 + inputField4064: Enum636 + inputField4065: String + inputField4066: Int +} + +input InputObject924 @Directive44(argument97 : ["stringValue25904"]) { + inputField4068: [InputObject885] + inputField4069: InputObject888 + inputField4070: Enum610 +} + +input InputObject925 @Directive44(argument97 : ["stringValue25905"]) { + inputField4072: [InputObject885] + inputField4073: Boolean +} + +input InputObject926 @Directive44(argument97 : ["stringValue25906"]) { + inputField4075: InputObject888 + inputField4076: Int + inputField4077: Boolean + inputField4078: InputObject888 +} + +input InputObject927 @Directive44(argument97 : ["stringValue25907"]) { + inputField4080: Enum620 +} + +input InputObject928 @Directive44(argument97 : ["stringValue25908"]) { + inputField4082: String +} + +input InputObject929 @Directive44(argument97 : ["stringValue25909"]) { + inputField4084: String + inputField4085: Boolean + inputField4086: Boolean + inputField4087: String + inputField4088: Boolean +} + +input InputObject93 @Directive42(argument96 : ["stringValue19706"]) @Directive44(argument97 : ["stringValue19707", "stringValue19708"]) { + inputField415: String + inputField416: String + inputField417: Scalar2 + inputField418: Scalar2 + inputField419: Scalar2 + inputField420: String + inputField421: [String!] + inputField422: [Enum158!] + inputField423: Int +} + +input InputObject930 @Directive44(argument97 : ["stringValue25910"]) { + inputField4090: String + inputField4091: Enum631 +} + +input InputObject931 @Directive44(argument97 : ["stringValue25911"]) { + inputField4093: Int +} + +input InputObject932 @Directive44(argument97 : ["stringValue25912"]) { + inputField4095: Enum621 +} + +input InputObject933 @Directive44(argument97 : ["stringValue25913"]) { + inputField4097: Int + inputField4098: Enum634 + inputField4099: [Enum635] +} + +input InputObject934 @Directive44(argument97 : ["stringValue25914"]) { + inputField4101: Boolean + inputField4102: Enum613 +} + +input InputObject935 @Directive44(argument97 : ["stringValue25915"]) { + inputField4104: [InputObject885] + inputField4105: String + inputField4106: Boolean +} + +input InputObject936 @Directive44(argument97 : ["stringValue25916"]) { + inputField4108: Enum616 + inputField4109: String +} + +input InputObject937 @Directive44(argument97 : ["stringValue25917"]) { + inputField4111: Boolean +} + +input InputObject938 @Directive44(argument97 : ["stringValue25918"]) { + inputField4113: [Enum619] +} + +input InputObject939 @Directive44(argument97 : ["stringValue25919"]) { + inputField4115: [Enum603] +} + +input InputObject94 @Directive22(argument62 : "stringValue19748") @Directive44(argument97 : ["stringValue19749", "stringValue19750"]) { + inputField424: InputObject95 + inputField426: InputObject96 + inputField428: InputObject97 + inputField430: InputObject98 + inputField432: InputObject99 + inputField434: InputObject100 + inputField437: [InputObject101] + inputField440: InputObject102 + inputField446: InputObject103 + inputField451: InputObject105 + inputField453: InputObject106 + inputField462: InputObject109 +} + +input InputObject940 @Directive44(argument97 : ["stringValue25920"]) { + inputField4117: InputObject888 + inputField4118: Int + inputField4119: Enum626 + inputField4120: InputObject941 +} + +input InputObject941 @Directive44(argument97 : ["stringValue25921"]) { + inputField4121: Enum623 + inputField4122: InputObject942 +} + +input InputObject942 @Directive44(argument97 : ["stringValue25922"]) { + inputField4123: Scalar2! + inputField4124: String! + inputField4125: Enum624! +} + +input InputObject943 @Directive44(argument97 : ["stringValue25923"]) { + inputField4127: String + inputField4128: [Enum625] +} + +input InputObject944 @Directive44(argument97 : ["stringValue25924"]) { + inputField4130: String + inputField4131: Boolean + inputField4132: [Enum630] +} + +input InputObject945 @Directive44(argument97 : ["stringValue25925"]) { + inputField4134: Enum622 + inputField4135: InputObject888 + inputField4136: InputObject941 +} + +input InputObject946 @Directive44(argument97 : ["stringValue25926"]) { + inputField4138: String + inputField4139: Enum608 +} + +input InputObject947 @Directive44(argument97 : ["stringValue25927"]) { + inputField4141: String + inputField4142: Enum632 + inputField4143: Enum633 + inputField4144: [Enum633] +} + +input InputObject948 @Directive44(argument97 : ["stringValue25928"]) { + inputField4146: [Enum637] +} + +input InputObject949 @Directive44(argument97 : ["stringValue25929"]) { + inputField4148: Enum604 +} + +input InputObject95 @Directive22(argument62 : "stringValue19751") @Directive44(argument97 : ["stringValue19752", "stringValue19753"]) { + inputField425: String +} + +input InputObject950 @Directive44(argument97 : ["stringValue25930"]) { + inputField4150: Enum604 + inputField4151: Enum627 + inputField4152: [Enum628] +} + +input InputObject951 @Directive44(argument97 : ["stringValue25931"]) { + inputField4154: [Enum611] +} + +input InputObject952 @Directive44(argument97 : ["stringValue25932"]) { + inputField4156: [Enum617] +} + +input InputObject953 @Directive44(argument97 : ["stringValue25933"]) { + inputField4158: [Enum609] +} + +input InputObject954 @Directive44(argument97 : ["stringValue25934"]) { + inputField4160: Enum604 + inputField4161: Boolean + inputField4162: Boolean +} + +input InputObject955 @Directive44(argument97 : ["stringValue25935"]) { + inputField4164: Enum604 + inputField4165: Enum618 + inputField4166: Enum618 +} + +input InputObject956 @Directive44(argument97 : ["stringValue25936"]) { + inputField4168: Enum604 +} + +input InputObject957 @Directive44(argument97 : ["stringValue25937"]) { + inputField4170: Enum604 +} + +input InputObject958 @Directive44(argument97 : ["stringValue25938"]) { + inputField4172: Enum604 +} + +input InputObject959 @Directive44(argument97 : ["stringValue25939"]) { + inputField4174: [Enum615] +} + +input InputObject96 @Directive22(argument62 : "stringValue19754") @Directive44(argument97 : ["stringValue19755", "stringValue19756"]) { + inputField427: String +} + +input InputObject960 @Directive44(argument97 : ["stringValue25940"]) { + inputField4176: [Enum614] +} + +input InputObject961 @Directive44(argument97 : ["stringValue25941"]) { + inputField4178: Enum607 + inputField4179: [Enum607] +} + +input InputObject962 @Directive44(argument97 : ["stringValue25942"]) { + inputField4181: [Enum612] +} + +input InputObject963 @Directive44(argument97 : ["stringValue25943"]) { + inputField4183: Enum604 + inputField4184: Boolean +} + +input InputObject964 @Directive44(argument97 : ["stringValue25944"]) { + inputField4186: Enum623 + inputField4187: InputObject941 +} + +input InputObject965 @Directive44(argument97 : ["stringValue25945"]) { + inputField4189: [Enum629] + inputField4190: Enum629 +} + +input InputObject966 @Directive44(argument97 : ["stringValue25951"]) { + inputField4193: Scalar2 + inputField4194: InputObject967 +} + +input InputObject967 @Directive44(argument97 : ["stringValue25952"]) { + inputField4195: String + inputField4196: String + inputField4197: Int + inputField4198: Int + inputField4199: Int + inputField4200: Boolean +} + +input InputObject968 @Directive44(argument97 : ["stringValue25958"]) { + inputField4201: Scalar2 + inputField4202: InputObject969 +} + +input InputObject969 @Directive44(argument97 : ["stringValue25959"]) { + inputField4203: Boolean + inputField4204: InputObject970 + inputField4217: [InputObject973] +} + +input InputObject97 @Directive22(argument62 : "stringValue19757") @Directive44(argument97 : ["stringValue19758", "stringValue19759"]) { + inputField429: String +} + +input InputObject970 @Directive44(argument97 : ["stringValue25960"]) { + inputField4205: Int + inputField4206: Boolean + inputField4207: Int + inputField4208: Float + inputField4209: InputObject971 +} + +input InputObject971 @Directive44(argument97 : ["stringValue25961"]) { + inputField4210: Float + inputField4211: [InputObject972] + inputField4216: [InputObject972] +} + +input InputObject972 @Directive44(argument97 : ["stringValue25962"]) { + inputField4212: String! + inputField4213: String + inputField4214: String + inputField4215: Float +} + +input InputObject973 @Directive44(argument97 : ["stringValue25963"]) { + inputField4218: Int! + inputField4219: Scalar4! + inputField4220: Scalar4! + inputField4221: Boolean! + inputField4222: Scalar1 +} + +input InputObject974 @Directive44(argument97 : ["stringValue25971"]) { + inputField4223: Scalar2 + inputField4224: [InputObject975] + inputField4228: Enum1354 + inputField4229: [String] + inputField4230: String + inputField4231: [InputObject976] +} + +input InputObject975 @Directive44(argument97 : ["stringValue25972"]) { + inputField4225: Enum651 + inputField4226: Int! + inputField4227: String! +} + +input InputObject976 @Directive44(argument97 : ["stringValue25974"]) { + inputField4232: [InputObject977] + inputField4236: String + inputField4237: [InputObject977] + inputField4238: [Scalar2] + inputField4239: String + inputField4240: Scalar2 + inputField4241: String + inputField4242: Scalar2 + inputField4243: String + inputField4244: [Scalar2] + inputField4245: Scalar2 + inputField4246: InputObject883 + inputField4247: String +} + +input InputObject977 @Directive44(argument97 : ["stringValue25975"]) { + inputField4233: String + inputField4234: Int + inputField4235: String +} + +input InputObject978 @Directive44(argument97 : ["stringValue25989"]) { + inputField4248: Scalar2! + inputField4249: Boolean! +} + +input InputObject979 @Directive44(argument97 : ["stringValue25997"]) { + inputField4250: Scalar2 + inputField4251: InputObject980! +} + +input InputObject98 @Directive22(argument62 : "stringValue19760") @Directive44(argument97 : ["stringValue19761", "stringValue19762"]) { + inputField431: String +} + +input InputObject980 @Directive44(argument97 : ["stringValue25998"]) { + inputField4252: String +} + +input InputObject981 @Directive44(argument97 : ["stringValue26004"]) { + inputField4253: Scalar2 + inputField4254: InputObject982 +} + +input InputObject982 @Directive44(argument97 : ["stringValue26005"]) { + inputField4255: String + inputField4256: Float + inputField4257: [String] + inputField4258: String + inputField4259: Int + inputField4260: Int + inputField4261: Boolean + inputField4262: [String] + inputField4263: String + inputField4264: Boolean + inputField4265: String + inputField4266: [InputObject983] + inputField4269: [InputObject984] + inputField4277: Int + inputField4278: String + inputField4279: String + inputField4280: String + inputField4281: InputObject986 + inputField4290: InputObject987 + inputField4293: String + inputField4294: [String] +} + +input InputObject983 @Directive44(argument97 : ["stringValue26006"]) { + inputField4267: String + inputField4268: String +} + +input InputObject984 @Directive44(argument97 : ["stringValue26007"]) { + inputField4270: Int + inputField4271: Scalar2 + inputField4272: [InputObject985] + inputField4276: [InputObject977] +} + +input InputObject985 @Directive44(argument97 : ["stringValue26008"]) { + inputField4273: String + inputField4274: Int + inputField4275: String +} + +input InputObject986 @Directive44(argument97 : ["stringValue26009"]) { + inputField4282: String + inputField4283: String + inputField4284: String + inputField4285: String + inputField4286: String + inputField4287: String + inputField4288: String + inputField4289: String +} + +input InputObject987 @Directive44(argument97 : ["stringValue26010"]) { + inputField4291: String + inputField4292: String +} + +input InputObject988 @Directive44(argument97 : ["stringValue26048"]) { + inputField4295: Scalar2 + inputField4296: InputObject989 +} + +input InputObject989 @Directive44(argument97 : ["stringValue26049"]) { + inputField4297: [InputObject990] + inputField4312: [String] + inputField4313: Int +} + +input InputObject99 @Directive22(argument62 : "stringValue19763") @Directive44(argument97 : ["stringValue19764", "stringValue19765"]) { + inputField433: String +} + +input InputObject990 @Directive44(argument97 : ["stringValue26050"]) { + inputField4298: String + inputField4299: String + inputField4300: String + inputField4301: String + inputField4302: String + inputField4303: String + inputField4304: String + inputField4305: String + inputField4306: String + inputField4307: String + inputField4308: String + inputField4309: String + inputField4310: String + inputField4311: String +} + +input InputObject991 @Directive44(argument97 : ["stringValue26056"]) { + inputField4314: Scalar2! + inputField4315: InputObject992! + inputField4318: Scalar2! +} + +input InputObject992 @Directive44(argument97 : ["stringValue26057"]) { + inputField4316: Scalar2! + inputField4317: InputObject883! +} + +input InputObject993 @Directive44(argument97 : ["stringValue26063"]) { + inputField4319: Scalar2! + inputField4320: Scalar2 + inputField4321: String + inputField4322: Int + inputField4323: Scalar2 + inputField4324: Scalar2 + inputField4325: [Scalar2] +} + +input InputObject994 @Directive44(argument97 : ["stringValue26069"]) { + inputField4326: Scalar2! + inputField4327: Enum1356! + inputField4328: String + inputField4329: String + inputField4330: String + inputField4331: Scalar1 + inputField4332: InputObject995 + inputField4335: Boolean + inputField4336: String +} + +input InputObject995 @Directive44(argument97 : ["stringValue26071"]) { + inputField4333: String + inputField4334: String +} + +input InputObject996 @Directive44(argument97 : ["stringValue26079"]) { + inputField4337: Scalar2! + inputField4338: String! + inputField4339: Scalar2! +} + +input InputObject997 @Directive44(argument97 : ["stringValue26085"]) { + inputField4340: Scalar2 + inputField4341: InputObject998 +} + +input InputObject998 @Directive44(argument97 : ["stringValue26086"]) { + inputField4342: String + inputField4343: String + inputField4344: String + inputField4345: String + inputField4346: String + inputField4347: String + inputField4348: String + inputField4349: Boolean + inputField4350: Float + inputField4351: Float + inputField4352: String +} + +input InputObject999 @Directive44(argument97 : ["stringValue26092"]) { + inputField4353: Scalar2 + inputField4354: Scalar2 + inputField4355: [InputObject1000] + inputField4358: [InputObject1000] + inputField4359: [InputObject1001] + inputField4366: [InputObject1001] + inputField4367: [InputObject1002] + inputField4372: Scalar2 + inputField4373: [InputObject1003] + inputField4376: String + inputField4377: Int + inputField4378: Boolean +} diff --git a/src/test/resources/large-schema-rocketraman.graphqls b/src/test/resources/large-schema-rocketraman.graphqls new file mode 100644 index 0000000000..1c06e168b0 --- /dev/null +++ b/src/test/resources/large-schema-rocketraman.graphqls @@ -0,0 +1,564 @@ +# from https://gist.github.com/rocketraman/065a4a523a094e4e2c0438f4f304c5db +schema { + query: Object49 + mutation: Object8 +} + +interface Interface1 { + field3: Enum1! +} + +interface Interface2 { + field10: String + field11: String + field12: String! + field13: String! + field8: String + field9: String +} + +interface Interface3 { + field14: Scalar2! +} + +interface Interface4 { + field16: [Interface3!]! +} + +interface Interface5 { + field31: String! + field32: String! +} + +union Union1 = Object14 | Object15 + +union Union10 = Object15 | Object47 | Object48 + +union Union2 = Object16 | Object17 + +union Union3 = Object15 | Object19 | Object20 + +union Union4 = Object21 | Object22 | Object23 | Object24 | Object25 + +union Union5 = Object15 | Object22 | Object23 | Object26 | Object27 + +union Union6 = Object15 | Object22 | Object23 | Object28 + +union Union7 = Object15 | Object22 | Object23 | Object29 + +union Union8 = Object44 + +union Union9 = Object15 | Object45 | Object46 + +type Object1 { + field1: Int! + field2: [Scalar1!]! +} + +type Object10 { + field20: Scalar3! + field21: Boolean! +} + +type Object11 { + field24: Object12! + field26(argument5: InputObject2!): Interface1! +} + +type Object12 { + field25: Scalar1! +} + +type Object13 { + field28: Scalar1 + field29(argument7: InputObject3!): Union1! + field34(argument8: InputObject5!): Union2! +} + +type Object14 { + field30: Scalar1! +} + +type Object15 implements Interface5 { + field31: String! + field32: String! + field33: Enum3 +} + +type Object16 { + field35: Scalar1! + field36: Scalar1! +} + +type Object17 implements Interface5 { + field31: String! + field32: String! +} + +type Object18 { + field38(argument11: InputObject7!): Union3! + field40(argument12: InputObject6!, argument13: InputObject8!): Union4! + field44: Union5! + field46: Union6! + field48(argument14: InputObject9!): Union7! +} + +type Object19 { + field39: Scalar1! +} + +type Object2 implements Interface1 { + field3: Enum1! + field4: Object1! + field5: Object3! +} + +type Object20 implements Interface5 { + field31: String! + field32: String! +} + +type Object21 implements Interface5 { + field31: String! + field32: String! +} + +type Object22 implements Interface5 { + field31: String! + field32: String! +} + +type Object23 implements Interface5 { + field31: String! + field32: String! + field41: Enum5! + field42: Enum5! +} + +type Object24 implements Interface5 { + field31: String! + field32: String! +} + +type Object25 { + field43: Scalar1! +} + +type Object26 { + field45: Scalar1! +} + +type Object27 implements Interface5 { + field31: String! + field32: String! +} + +type Object28 { + field47: Scalar1! +} + +type Object29 { + field49: Scalar1! +} + +type Object3 { + field6: Int! + field7: [Scalar1!]! +} + +type Object30 { + field51(argument16: InputObject10!): Object31! + field57(argument17: InputObject11!): Object33! + field63(argument18: InputObject12!): Object35! + field66(argument19: InputObject13!): Object36! +} + +type Object31 { + field52: [Object32!]! + field56: Interface4 +} + +type Object32 { + field53: Scalar1! + field54: Scalar1 + field55: Boolean! +} + +type Object33 { + field58: [Object32!]! + field59: [Object34!]! +} + +type Object34 { + field60: Scalar1! + field61: Scalar1 + field62: Scalar1! +} + +type Object35 { + field64: Interface4 + field65: [Object34!]! +} + +type Object36 { + field67: Boolean! + field68: Object37! +} + +type Object37 { + field69(argument20: InputObject14!): Object38! + field82(argument21: InputObject15!): Object41! +} + +type Object38 { + field70: Float! + field71: Object39! + field74: [Object40!]! + field81: Int! +} + +type Object39 { + field72: Scalar3! + field73: Scalar2! +} + +type Object4 implements Interface1 { + field3: Enum1! +} + +type Object40 { + field75: Float + field76: Scalar2! + field77: Scalar3 + field78: Enum7! + field79: Scalar3! + field80: Int! +} + +type Object41 implements Interface4 { + field16: [Object42!]! + field83: Enum8! + field84: Enum9! +} + +type Object42 implements Interface3 { + field14: Scalar2! + field85: Scalar3! +} + +type Object43 { + field87(argument23: InputObject16!): Union8! + field89: Union9! + field94: Union10! +} + +type Object44 { + field88: String! +} + +type Object45 { + field90: String! + field91: Scalar1! +} + +type Object46 implements Interface5 { + field31: String! + field32: String! + field92: String + field93: String! +} + +type Object47 implements Interface5 { + field31: String! + field32: String! + field95: String +} + +type Object48 { + field96: String! + field97: String! + field98: Scalar1! +} + +type Object49 { + field104(argument24: Scalar1!): Object52! + field116(argument26: Scalar1!): Object37! + field117: Object56! + field129(argument32: Scalar1!): Object58! + field99: Object50! +} + +type Object5 implements Interface2 { + field10: String + field11: String + field12: String! + field13: String! + field8: String + field9: String +} + +type Object50 { + field100: [Object51!]! +} + +type Object51 { + field101: Boolean! + field102: Enum4! + field103: [Enum3!]! +} + +type Object52 { + field105(argument25: InputObject17!): Object53! + field107: Object53! + field108: Object54! +} + +type Object53 { + field106: Object41! +} + +type Object54 { + field109: Object55! +} + +type Object55 { + field110: Float! + field111: Scalar3! + field112: Float! + field113: Scalar3! + field114: Float! + field115: Scalar3! +} + +type Object56 { + field118(argument27: Scalar4, argument28: String): [Object57!]! + field128(argument29: Scalar4, argument30: Int, argument31: String!): [Object57!]! +} + +type Object57 { + field119: Int! + field120: String! + field121: String! + field122: String! + field123: Int! + field124: String! + field125: Boolean! + field126: Int! + field127: String! +} + +type Object58 { + field130: Object59 +} + +type Object59 implements Interface2 { + field10: String + field11: String + field12: String! + field13: String! + field131: Boolean! + field132: Boolean! + field133: [Interface2!]! + field8: String + field9: String +} + +type Object6 implements Interface3 { + field14: Scalar2! + field15: Float! +} + +type Object7 implements Interface4 { + field16: [Object6!]! + field17: String! +} + +type Object8 { + field18(argument1: Scalar1!): Object9! + field23(argument4: Scalar1!): Object11! + field27(argument6: Scalar1): Object13! + field37(argument10: Scalar1, argument9: Scalar1): Object18! + field50(argument15: Scalar1!): Object30! + field86(argument22: Scalar1): Object43! +} + +type Object9 { + field19(argument2: InputObject1!): Object10! + field22(argument3: InputObject1!): Object10! +} + +enum Enum1 { + EnumValue1 + EnumValue2 +} + +enum Enum2 { + EnumValue3 + EnumValue4 + EnumValue5 +} + +enum Enum3 { + EnumValue10 + EnumValue11 + EnumValue12 + EnumValue13 + EnumValue14 + EnumValue15 + EnumValue16 + EnumValue17 + EnumValue18 + EnumValue19 + EnumValue20 + EnumValue6 + EnumValue7 + EnumValue8 + EnumValue9 +} + +enum Enum4 { + EnumValue21 + EnumValue22 + EnumValue23 + EnumValue24 + EnumValue25 + EnumValue26 + EnumValue27 + EnumValue28 +} + +enum Enum5 { + EnumValue29 + EnumValue30 + EnumValue31 + EnumValue32 +} + +enum Enum6 { + EnumValue33 + EnumValue34 + EnumValue35 +} + +enum Enum7 { + EnumValue36 + EnumValue37 + EnumValue38 +} + +enum Enum8 { + EnumValue39 + EnumValue40 + EnumValue41 +} + +enum Enum9 { + EnumValue42 + EnumValue43 + EnumValue44 +} + +scalar Scalar1 + +scalar Scalar2 + +scalar Scalar3 + +scalar Scalar4 + +input InputObject1 { + inputField1: Scalar3! + inputField2: Scalar2! +} + +input InputObject10 { + inputField34: Scalar1! +} + +input InputObject11 { + inputField35: Scalar1! +} + +input InputObject12 { + inputField36: Scalar1! + inputField37: Boolean! + inputField38: Boolean! +} + +input InputObject13 { + inputField39: Scalar1! + inputField40: Boolean! +} + +input InputObject14 { + inputField41: Enum6! +} + +input InputObject15 { + inputField42: Enum6! + inputField43: Enum8! + inputField44: [Scalar1!]! +} + +input InputObject16 { + inputField45: String! +} + +input InputObject17 { + inputField46: Scalar1! +} + +input InputObject2 { + inputField3: Boolean! +} + +input InputObject3 { + inputField12: Boolean! + inputField13: String! + inputField14: Enum2! + inputField15: String! + inputField16: Scalar1 + inputField4: InputObject4! +} + +input InputObject4 { + inputField10: String + inputField11: String + inputField5: String + inputField6: String + inputField7: String + inputField8: String + inputField9: String +} + +input InputObject5 { + inputField17: InputObject4! + inputField18: Boolean! + inputField19: String! + inputField20: Enum2! + inputField21: String! + inputField22: InputObject6! +} + +input InputObject6 { + inputField23: String + inputField24: String + inputField25: String + inputField26: String + inputField27: String +} + +input InputObject7 { + inputField28: String + inputField29: String! + inputField30: String! + inputField31: Enum4! +} + +input InputObject8 { + inputField32: String! +} + +input InputObject9 { + inputField33: Enum4! +} \ No newline at end of file diff --git a/src/test/resources/many-fragments-query.graphql b/src/test/resources/many-fragments-query.graphql new file mode 100644 index 0000000000..d3f889d96f --- /dev/null +++ b/src/test/resources/many-fragments-query.graphql @@ -0,0 +1 @@ +query operation($var1:String=null,$var2:String=null,$var3:Boolean=true) {alias1:field5151(argument1742:EnumValue39) {field5004 {...Fragment1}}} fragment Fragment1 on Object258 {field1077 alias2:field1078 {__typename ... on Object422 {field2786(argument151:"stringValue1",argument154:$var1,argument152:$var2) {...Fragment2}} ... on Object259 {...Fragment168}} alias3:field1096 {field1085 field1086} alias4:field1089 {__typename ...Fragment170} alias5:field1090 {__typename ... on Object263 {...Fragment171} ... on Object262 {...Fragment172}}} fragment Fragment2 on Object423 {field1781 {...Fragment3} alias6:field2746 {...Fragment165} field2740 {...Fragment167}} fragment Fragment168 on Object259 {field1088 {... on Object260 {...Fragment169 field1087 {field2785}}} alias7:field1079 {... on Object260 {...Fragment169 field1087 {field2786(argument151:"stringValue2") {...Fragment2}}}}} fragment Fragment170 on Object234 {field1073 {...Fragment98} field1067 {alias8:field1071 {...Fragment10} alias9:field1068 {...Fragment14}} alias10:field1072 alias11:field975 {...Fragment118} alias12:field1066} fragment Fragment171 on Object263 {field1095 {...Fragment98} alias13:field1094 {...Fragment118}} fragment Fragment172 on Object262 {field1093 field1092 alias14:field1091 {...Fragment118}} fragment Fragment3 on Union57 {alias15:__typename ... on Object424 {field1782 {...Fragment4}} ... on Object614 {field2682} ... on Object615 {field2684 field2683 {...Fragment4}} ... on Object613 {field2681 {...Fragment4}} ... on Object606 {alias16:field2671 {...Fragment154} alias17:field2669 alias18:field2670 field2672} ... on Object621 {...Fragment157} ... on Object628 {field2739} ... on Object617 {...Fragment162}} fragment Fragment165 on Object631 {alias19:field2747 {field2748 field2749 {alias20:field2755 field2759 field2781 field2752 alias21:field2750 alias22:field2756 alias23:field2754 alias24:field2757 alias25:field2753 field2758 alias26:field2760 {...Fragment166} alias27:field2751 {...Fragment118}}} alias28:field2782 {field2783 field2784 {...Fragment3}}} fragment Fragment167 on Object629 {field2741 {field2742} field2745 alias29:field2744 {field1085 field1086}} fragment Fragment169 on Object260 {field1080 alias30:field1081 alias31:field1083 {field1085 field1086} alias32:field1082} fragment Fragment98 on Object233 {field970 field971 field972 field1101 field1074 field1075} fragment Fragment10 on Object44 {field158 {__typename ... on Object410 {...Fragment11} ... on Object42 {...Fragment22}}} fragment Fragment14 on Object105 {field403 alias33:field404 alias34:field405 {...Fragment15}} fragment Fragment118 on Object235 {field976 field977 field1064 alias35:field1065 field978 {field979 {field980 field981} alias36:field982 {alias37:field983} alias38:field984 {field985 field986 alias39:field987 {alias40:__typename ... on Object240 {alias41:field990 field992 alias42:field993 alias43:field989 alias44:field988 alias45:field991} ... on Object241 {field995 field997 field996} ... on Object242 {alias46:field998 alias47:field999} ... on Object244 {alias48:field1009 alias49:field1010 field1011 alias50:field1017 alias51:field1015 alias52:field1002 alias53:field1005 alias54:field1004} ... on Object243 {alias55:field1000} ... on Object245 {alias56:field1018 alias57:field1019}}} field1020 {alias58:field1021} alias59:field1022 {alias60:field1028 alias61:field1026 alias62:field1027 alias63:field1023 {field1025 field1024}} field1030 {field1032 field1031} alias64:field1033 {alias65:field1034 field1035} field1036 {field1037} field1047 {field1049 field1048 field1050} alias66:field1051 {alias67:field1053 alias68:field1052 alias69:field1054} alias70:field1055 {alias71:field1056 alias72:field1058 alias73:field1057} field1059 {field1060 field1061 field1062 field1063}}} fragment Fragment4 on Object425 {alias74:field2666 alias75:field2668 field1783 {alias76:__typename ... on Object430 {...Fragment5} ... on Object426 {...Fragment119} ... on Object593 {...Fragment153}}} fragment Fragment154 on Object599 {alias77:field2647 field2646 field2648 {...Fragment5} alias78:field2649 {...Fragment155}} fragment Fragment157 on Object621 {alias79:field2706 {...Fragment118} field2707 {...Fragment158}} fragment Fragment162 on Object617 {alias80:field2686 alias81:field2702 alias82:field2693 alias83:field2687 {...Fragment118} alias84:field2688 alias85:field2705 {...Fragment10} alias86:field2700 {...Fragment32} alias87:field2695 {...Fragment163} alias88:field2689 {...Fragment164} alias89:field2694 alias90:field2698 {alias91:field2699}} fragment Fragment166 on Union83 {alias92:__typename ... on Object634 {field2763 {...Fragment10}} ... on Object636 {field2768 {...Fragment10} field2765 {...Fragment121}} ... on Object641 {field2777 {...Fragment121}} ... on Object639 {field2773 {...Fragment98}} ... on Object635 {field2764 {...Fragment98}}} fragment Fragment11 on Object410 {field3102 field3335 alias93:field3103 {field1760 {...Fragment12}} field2971 field3095 field3132 {...Fragment17} field3266 {...Fragment21} field3374 field3375 field3376 field3407 field3409 field3410} fragment Fragment22 on Object42 {field153 field154 {... on Object98 {field387 field388 {alias94:field390 alias95:field415 field389 field391 {...Fragment13}} field416 field417}} alias96:field155} fragment Fragment15 on Object106 {alias97:field406 field410 field414 alias98:field407 {field408 field409}} fragment Fragment5 on Object430 {alias99:field1804 {alias100:__typename ... on Object456 {...Fragment6} ... on Object460 {...Fragment28} ... on Object581 {...Fragment107} ... on Object516 {...Fragment108} ... on Object531 {...Fragment109} ... on Object502 {...Fragment110} ... on Object565 {...Fragment111} ... on Object569 {...Fragment112} ... on Object590 {...Fragment113} ... on Object540 {...Fragment115} ... on Object426 {...Fragment119} ... on Object574 {...Fragment120} ... on Object557 {...Fragment122} ... on Object588 {...Fragment130} ... on Object504 {...Fragment132} ... on Object500 {...Fragment137} ... on Object517 {...Fragment138} ... on Object435 {...Fragment146} ... on Object555 {...Fragment148} ... on Object533 {...Fragment150}} alias101:field2616 {...Fragment152} alias102:field1803 {...Fragment118} alias103:field2618 {alias104:field2619 {...Fragment102}}} fragment Fragment119 on Object426 {field1802 alias105:field1790 alias106:field1791 {alias107:field1792 alias108:field1799} alias109:field1800} fragment Fragment153 on Object593 {field2645 {...Fragment154} field2654 {alias110:field2657 {...Fragment156} alias111:field2661 {alias112:field2662}} alias113:field2621 field2629 {alias114:field2639 field2644 field2640 alias115:field2642 {...Fragment97} field2643} alias116:field2663 {... on Object605 {alias117:field2664 alias118:field2665}} field2623 {alias119:field2625 field2627 alias120:field2626 {...Fragment14} field2628} alias121:field2620 {...Fragment118} alias122:field2622 {...Fragment152}} fragment Fragment155 on Object600 {alias123:field2653 alias124:field2651 alias125:field2650 alias126:field2652} fragment Fragment158 on Union81 {alias127:__typename ... on Object626 {...Fragment159} ... on Object622 {...Fragment161}} fragment Fragment32 on Object98 {field387 field416 field417 field388 {...Fragment33}} fragment Fragment163 on Object619 {field2696 field2697} fragment Fragment164 on Object618 {field2690 field2691 field2692} fragment Fragment121 on Object575 {field2549 field2550 {field541 {... on Object137 {field556 field557 field555 field558 {field219 field220 field221 field218}}}} field2551 {field541 {... on Object137 {field556 field557 field555 field558 {field219 field220 field221 field218}}}} field2552 field2553 alias128:field2576 field2558 alias129:field2547 alias130:field2571 {...Fragment10} field2568 field2577 field2567 field2572} fragment Fragment12 on Object416 {field1767 {alias131:field404 field403} field1761 {field1762} field1763 alias132:field1766 {field387 field416 field417 field388 {alias133:field390 alias134:field415 field389 field391 {...Fragment13}}} alias135:field1768} fragment Fragment17 on Object46 {field170 field171 field173 field174 field180 field183 field184 field185 field186 {field187 {...Fragment18} field333 {...Fragment18}} field344 field345 field347 field346 field348 field349 field350 field351 field353 field359 field361 field363 field364 field365 field366 field367 field368 field369 field382 field440 {field441 {field442 {field445 {...Fragment20}}}} field447 field448 {field441 {field442 {field445 {...Fragment20}}}} field449 field450 field502 field504 field505 field507 field508 field510 field512 field513 field515 field517 field518 {field187 {...Fragment18} field333 {...Fragment18}} field519 field520} fragment Fragment21 on Object768 {field3283 field3272 field3267 {field3269 field3270 field3268}} fragment Fragment13 on Union10 {alias136:__typename ... on Object100 {field392} ... on Object102 {field394 field395} ... on Object101 {field393} ... on Object105 {...Fragment14} ... on Object104 {field402 {...Fragment16}} ... on Object103 {field396 alias137:field399 {...Fragment16}}} fragment Fragment6 on Object456 {field2056 {...Fragment7}} fragment Fragment28 on Object460 {field2245 {...Fragment29} alias138:field2072 alias139:field2094 alias140:field2225 alias141:field2093 {...Fragment41} alias142:field2162 {...Fragment94} alias143:field2226 {...Fragment97} alias144:field2102 {...Fragment99} field2067 {...Fragment100} alias145:field2207 {...Fragment101} alias146:field2111 {field2112 {...Fragment103}}} fragment Fragment107 on Object581 {field2602 {...Fragment10} alias147:field2591 alias148:field2596 {...Fragment94} alias149:field2599 {...Fragment97}} fragment Fragment108 on Object516 {field2307 field2306 field2304 field2308 {...Fragment14} field2305} fragment Fragment109 on Object531 {alias150:field2370 alias151:field2369 {...Fragment14} field2374 field2366 field2367 alias152:field2372 alias153:field2371 {...Fragment42}} fragment Fragment110 on Object502 {alias154:field2247 alias155:field2248 {...Fragment99} alias156:field2249 {...Fragment28}} fragment Fragment111 on Object565 {field2507 {...Fragment98} alias157:field2509 alias158:field2508} fragment Fragment112 on Object569 {field2518 {...Fragment98} alias159:field2515 alias160:field2517 alias161:field2516} fragment Fragment113 on Object590 {field2614 {...Fragment98} alias162:field2615 field2609 {...Fragment114}} fragment Fragment115 on Object540 {field2404 {alias163:__typename ... on Object543 {...Fragment116} ... on Object542 {...Fragment117}} alias164:field2403 {...Fragment118}} fragment Fragment120 on Object574 {alias165:field2545 field2546 {...Fragment121}} fragment Fragment122 on Object557 {field2504 {...Fragment14} field2501 {...Fragment42} field2477 {alias166:__typename ... on Object559 {...Fragment123} ... on Object564 {...Fragment124} ... on Object563 {...Fragment125} ... on Object560 {...Fragment129}}} fragment Fragment130 on Object588 {field2604 {alias167:__typename ... on Object589 {...Fragment131}}} fragment Fragment132 on Object504 {field2252 {...Fragment43} alias168:field2253 alias169:field2257 {...Fragment133} field2254 {field2256} field2260 {...Fragment42} field2261 {...Fragment134} alias170:field2276 {...Fragment94} field2279 {...Fragment10} alias171:field2280 {...Fragment32} alias172:field2281 {...Fragment126} alias173:field2282 {...Fragment97} alias174:field2283 alias175:field2284 field2285 alias176:field2286 {...Fragment14}} fragment Fragment137 on Object500 {alias177:field2236 alias178:field2237 alias179:field2238 {...Fragment14}} fragment Fragment138 on Object517 {field2309 {alias180:__typename ... on Object523 {...Fragment139} ... on Object521 {...Fragment142} ... on Object518 {...Fragment144} ... on Object525 {...Fragment145}} alias181:field2354 {field2079}} fragment Fragment146 on Object435 {field1836 {...Fragment147} alias182:field1849 alias183:field1850 {...Fragment97}} fragment Fragment148 on Object555 {field2472 {alias184:__typename ... on Object556 {...Fragment149}}} fragment Fragment150 on Object533 {field2378 {alias185:__typename ... on Object517 {...Fragment138} ... on Object534 {...Fragment151}}} fragment Fragment152 on Object466 {alias186:field2085 {...Fragment118} alias187:field2088 alias188:field2089 alias189:field2086 {field2087}} fragment Fragment102 on Object493 {field2209 {alias190:__typename ... on Object495 {field2212} ... on Object496 {alias191:field2213 {field408 field409} alias192:field2214}} alias193:field2215} fragment Fragment156 on Object603 {alias194:field2658 alias195:field2659 alias196:field2660 {...Fragment97}} fragment Fragment97 on Union60 {alias197:__typename ... on Object438 {alias198:field1852 field1854 field1855 alias199:field1851 alias200:field1853 {...Fragment14}} ... on Object439 {field1859 {...Fragment98} alias201:field1857 alias202:field1856 {...Fragment32} alias203:field1858 {...Fragment32}}} fragment Fragment159 on Object626 {alias204:field2732 alias205:field2736 {...Fragment32} alias206:field2735 {...Fragment160} alias207:field2737 {...Fragment160} alias208:field2738 {...Fragment32} alias209:field2734 {field2079} field2731 alias210:field2726 {field2727 {...Fragment42} alias211:field2729 alias212:field2728} alias213:field2730 {field2436 {field2079}}} fragment Fragment161 on Object622 {alias214:field2710 alias215:field2723 {...Fragment32} alias216:field2714 {...Fragment160} alias217:field2724 {...Fragment160} alias218:field2725 {...Fragment32} field2711 {...Fragment42} field2708 {...Fragment32} alias219:field2709 {field2436 {field2079}} alias220:field2712 alias221:field2713 {field2079}} fragment Fragment33 on Object99 {alias222:field390 alias223:field415 field389 field391 {...Fragment34}} fragment Fragment18 on Object50 {field319 {...Fragment19}} fragment Fragment20 on Object32 {field118 {field119 field120 {field121 field122 field123}}} fragment Fragment16 on Object44 {field158 {__typename ... on Object410 {field3132 {field504} field3335} ... on Object42 {alias224:field155 field153}}} fragment Fragment7 on Object170 {alias225:field829 field827 field741 field709 field733 field740 field738 field710 {field712 {...Fragment8} field716 {...Fragment9}} field731 {...Fragment10} field736 {...Fragment10} field744 {...Fragment23} field785 {...Fragment10} field824 field781 field792 {...Fragment26} field830 field831 {...Fragment27} field737 {field541 {... on Object137 {field548 {field549 {field551 {field554 field553 field552} field550}} field556 field557 field555 field558 {field219 field220 field221 field218}}}} field739 {field541 {... on Object137 {field548 {field549 {field551 {field554 field553 field552} field550}} field556 field557 field555 field558 {field219 field220 field221 field218}}}} field834 {field836 {__typename ... on Object203 {field838 {...Fragment27}}}} field757 {__typename ... on Object184 {field759}}} fragment Fragment29 on Object114 {field435 {__typename ... on Object152 {...Fragment30} ... on Object110 {...Fragment93} ... on Object96 {...Fragment87}}} fragment Fragment41 on Object315 {field1358 {...Fragment32} alias226:field1350 {...Fragment14} alias227:field1337 alias228:field1338 alias229:field1339 {...Fragment42} alias230:field1353 {...Fragment43} alias231:field1351} fragment Fragment94 on Object484 {field2186 {...Fragment10} alias232:field2163 {...Fragment95} alias233:field2193 alias234:field2194 {field2195 field2196} alias235:field2197 alias236:field2198 alias237:field2203 alias238:field2204 alias239:field2199 {field2201} alias240:field2187 {...Fragment96}} fragment Fragment99 on Object470 {field2109 field2103 {field2104 field2105 {...Fragment14}} alias241:field2106 alias242:field2108 {...Fragment32} alias243:field2107 {...Fragment32}} fragment Fragment100 on Object462 {field2068 field2069 {...Fragment32} field2070 {...Fragment32}} fragment Fragment101 on Object492 {field2208 {...Fragment102} alias244:field2216} fragment Fragment103 on Object473 {alias245:field2113 alias246:field2114 {...Fragment104} alias247:field2131} fragment Fragment42 on Object316 {field1348 field1349 field1340 field1341 {field1342 field1343 {field1344 field1345 field1347}}} fragment Fragment114 on Object591 {field2611 {...Fragment11} alias248:field2610 {...Fragment14}} fragment Fragment116 on Object543 {alias249:field2433 field2419 alias250:field2426 alias251:field2429 alias252:field2421 {field2079} alias253:field2427 {field2079} alias254:field2420 alias255:field2430 {alias256:field2431 {...Fragment102}}} fragment Fragment117 on Object542 {alias257:field2414 {...Fragment32} alias258:field2415 alias259:field2417 {...Fragment32} alias260:field2418} fragment Fragment123 on Object559 {field2486 {...Fragment11} field2485 {...Fragment43}} fragment Fragment124 on Object564 {field2500 field2498 {...Fragment43}} fragment Fragment125 on Object563 {alias261:field2497 {alias262:field2467 alias263:field2468 {...Fragment126}}} fragment Fragment129 on Object560 {field2496} fragment Fragment131 on Object589 {field2607 {...Fragment98} field2606 alias264:field2605 field2608 {...Fragment14}} fragment Fragment43 on Object319 {field1355 alias265:field1356 alias266:field1354} fragment Fragment133 on Object506 {field2258 field2259 {...Fragment14}} fragment Fragment134 on Object507 {alias267:field2267 {...Fragment135} alias268:field2273 {field2275 field2274} alias269:field2262 {field2264 field2265 field2266 field2263}} fragment Fragment126 on Object432 {field1813 field1808 alias270:field1831 alias271:field1809 field1832 field1814 {...Fragment127} alias272:field1812 alias273:field1810 alias274:field1811 alias275:field1830 alias276:field1834 field1833 {...Fragment14}} fragment Fragment139 on Object523 {alias277:field2337 alias278:field2335 alias279:field2338 {...Fragment140} alias280:field2339 {...Fragment140} alias281:field2336 {...Fragment32} alias282:field2334 {...Fragment32}} fragment Fragment142 on Object521 {alias283:field2327 {...Fragment143} alias284:field2331 alias285:field2326 alias286:field2332 {...Fragment140} alias287:field2333 {...Fragment140} alias288:field2330 {...Fragment32} alias289:field2325 {...Fragment32} field2324 {...Fragment141}} fragment Fragment144 on Object518 {alias290:field2319 alias291:field2317 alias292:field2320 {...Fragment140} alias293:field2323 {...Fragment140} alias294:field2318 {...Fragment32} alias295:field2316 {...Fragment32} field2310 {...Fragment141}} fragment Fragment145 on Object525 {alias296:field2352 alias297:field2353 {...Fragment140}} fragment Fragment147 on Object436 {field1847 field1838 {field1839 field1840 field1841 field1842 field1843 field1844 field1846}} fragment Fragment149 on Object556 {field2473 {...Fragment11}} fragment Fragment151 on Object534 {field2379 {alias298:__typename ... on Object460 {...Fragment28}} alias299:field2380 {alias300:field2381 {...Fragment102}} alias301:field2383 alias302:field2382 {field2079} alias303:field2384 {field2079} alias304:field2385} fragment Fragment160 on Object623 {field2722 alias305:field2718 {alias306:__typename ... on Object624 {alias307:field2719 {...Fragment32}} ... on Object625 {field2720 {...Fragment14}}} field2716 {field2079} alias308:field2717 {...Fragment118} field2721 alias309:field2715} fragment Fragment34 on Union10 {alias310:__typename ... on Object100 {field392} ... on Object102 {field394 field395} ... on Object101 {field393} ... on Object105 {...Fragment14} ... on Object104 {field402 {...Fragment10}} ... on Object103 {alias311:field399 {field158 {__typename ... on Object410 {field3335}}} field396}} fragment Fragment19 on Object88 {field320 field321 field323 field322} fragment Fragment8 on Union18 {__typename ... on Object173 {field715 field714}} fragment Fragment9 on Union19 {__typename ... on Object175 {field719 field718}} fragment Fragment23 on Union22 {__typename ... on Object183 {field754 field753} ... on Object180 {field746 field748 {field749 {...Fragment24} field750 {field751 field752}}}} fragment Fragment26 on Union26 {__typename ... on Object195 {field794 field795}} fragment Fragment27 on Object201 {field814 field813 field811} fragment Fragment30 on Object152 {...Fragment31 field937 {...Fragment7} field938 {field940 field944 field939 {...Fragment7} field941 {...Fragment73}} alias312:field1294 {...Fragment74} field1127(argument95:"stringValue3",argument97:true,argument96:$var3) {...Fragment76 alias313:field1241 {...Fragment88}} alias314:field1117 {field1120 {...Fragment91}} alias315:field1361 {...Fragment91} alias316:field1364 {...Fragment91} field1282 {field1284} ...Fragment92} fragment Fragment93 on Object110 {field425 {...Fragment30} ...Fragment84} fragment Fragment87 on Object96 {field385 {__typename ... on Object97 {field386 {...Fragment32}}}} fragment Fragment95 on Object485 {alias317:field2164 alias318:field2178 alias319:field2179 alias320:field2180 alias321:field2181} fragment Fragment96 on Object487 {alias322:field2190 {field2191 field2192} alias323:field2188 alias324:field2189} fragment Fragment104 on Object474 {alias325:field2115 alias326:field2116 alias327:field2117 {...Fragment105} alias328:field2121 alias329:field2124 {...Fragment10} alias330:field2125 alias331:field2126 alias332:field2127 {...Fragment106}} fragment Fragment135 on Union68 {alias333:__typename ... on Object509 {field2268} ... on Object316 {...Fragment42} ... on Object510 {...Fragment136}} fragment Fragment127 on Object433 {field1818 alias334:field1817 alias335:field1827 field1815 field1816 {...Fragment128} alias336:field1829 field1825 alias337:field1826 field1820 {...Fragment42}} fragment Fragment140 on Object520 {field2322 field2321 {...Fragment141}} fragment Fragment143 on Object522 {alias338:field2329 {...Fragment42} alias339:field2328} fragment Fragment141 on Object519 {field2315 alias340:field2312 alias341:field2313 {field2079} alias342:field2311 {...Fragment118}} fragment Fragment24 on Object164 {field707 {field829} field697 {field699 {...Fragment25}} field842 {field158 {__typename ... on Object410 {field3335 field3132 {field449 field173 field174 field502 field513 field366 field504}}}}} fragment Fragment31 on Object152 {field1314 field1121 field923 {alias343:field925 {field928 field929 alias344:field927} alias345:field930 field931 {...Fragment32} field933 {...Fragment35} field934 {...Fragment32} field935 alias346:field932} field946 {field949 {...Fragment10}} field936 {...Fragment39} alias347:field1335 {...Fragment41} alias348:field1736 {...Fragment44} alias349:field1295 {alias350:field1296 {alias351:field1297 alias352:field1298}} alias353:field1299 {alias354:field1300} alias355:field956 {alias356:field957} field1709 {...Fragment45} field1105 {...Fragment46} field1589 {...Fragment47}} fragment Fragment73 on Object224 {field943 {...Fragment27}} fragment Fragment74 on Object114 {field435 {__typename ... on Object152 {...Fragment75} ... on Object110 {...Fragment83} ... on Object96 {...Fragment87}}} fragment Fragment76 on Object270 {field1158 field1162 field1151 {field1156 field1152 {field3132 {field504}} field1155} field1157 field1159 {field1161 field1160} field1169 field1171 {...Fragment77} field1176 {...Fragment77} field1177 field1178 field1179 field1180 {field1161 field1160} field1182 field1183 field1184 field1187 field1189 field1190 field1192 field1193 field1191 {field454 {field455 field456 field457 field458 field459 field460 field461} alias357:field462 {field463 field464} field466 {field470} field467 field468 field469 field471 field470 field472 field474} field1208 {field1213 field1217} field1226 field1228 field1229 {field1232 field1231 field1230} field1236 field1237 field1238 field1243 {field1244 field1245} field1248 field1249 field1251 field1255 field1181 field1256 field1246 {field1247}} fragment Fragment88 on Object114 {field435 {__typename ... on Object152 {...Fragment89} ... on Object110 {...Fragment90} ... on Object96 {...Fragment87}}} fragment Fragment91 on Object44 {field158 {__typename ... on Object410 {field3132 {field504}}}} fragment Fragment92 on Object152 {field1582 {... on Object363 {__typename field1581 {... on Object44 {field158 {__typename ... on Object410 {field3132 {field504 field366}}}}}} ... on Object364 {__typename field1583}}} fragment Fragment84 on Object110 {alias358:field426 {...Fragment85} alias359:field420 {...Fragment86}} fragment Fragment105 on Object475 {alias360:field2118 field2119 field2120} fragment Fragment106 on Object476 {field2128 alias361:field2129 field2130} fragment Fragment136 on Object510 {field2272 {...Fragment29} field2269 {field1551}} fragment Fragment128 on Object318 {field1347 field1345 field1344 field1346} fragment Fragment25 on Union16 {__typename ... on Object167 {field702 field701}} fragment Fragment35 on Object206 {field914 field865 {...Fragment36} field880 {field881 {...Fragment37} field886 {...Fragment38} field895} field912 field913 {...Fragment14} field875 field878 field918 {field435 {... on Object152 {field1314}}} field852 {field853 field854} field864 field862 field851 field877} fragment Fragment39 on Object28 {field521 field111 {...Fragment40}} fragment Fragment44 on Object409 {alias362:field1740 alias363:field1741 alias364:field1742 alias365:field1739} fragment Fragment45 on Object404 {field1713 {field3335}} fragment Fragment46 on Object264 {field1106 {field1107 {field1112 field1111 field1109 field1110 field1113 {__typename ... on Object267 {field1114 {field1115}}}}}} fragment Fragment47 on Object366 {field1590 field1591 field1599 {__typename ... on Object370 {...Fragment48} ... on Object403 {field1708 {...Fragment48}} ... on Object369 {field1600 {...Fragment48} field1706 {...Fragment48}}} field1592 {field1595}} fragment Fragment75 on Object152 {...Fragment31 field937 {...Fragment7} alias366:field1294 {field435 {__typename ... on Object152 {field1314} ... on Object110 {field425 {field1314}}}} field1127(argument95:"stringValue4",argument97:true,argument96:$var3) {...Fragment76 alias367:field1241 {field435 {__typename ... on Object152 {field1314} ... on Object110 {field425 {field1314}}}}}} fragment Fragment83 on Object110 {field425 {...Fragment75} ...Fragment84} fragment Fragment77 on Object50 {field191 {...Fragment78} field324 {...Fragment81} field319 {...Fragment19} field188 {...Fragment82} field318 {...Fragment82}} fragment Fragment89 on Object152 {...Fragment31 alias368:field1294 {...Fragment74} field1127(argument95:"stringValue5",argument97:true,argument96:$var3) {...Fragment76}} fragment Fragment90 on Object110 {field425 {...Fragment89} ...Fragment84} fragment Fragment85 on Union11 {__typename ... on Object112 {alias369:field427 field429 {...Fragment32} alias370:field428 {...Fragment32}}} fragment Fragment86 on Object111 {field423 {...Fragment32} field424 {...Fragment14} alias371:field422 alias372:field421} fragment Fragment36 on Object208 {field867 field871 {...Fragment32} field869 field866 field868 field873 field870 field872} fragment Fragment37 on Object210 {field882 field883 field884 field885} fragment Fragment38 on Object211 {field888 field887 field889} fragment Fragment40 on Object29 {field112 {field113 field114 {field115 field116 field124 {field125 field126 field128 field127} field117 {field118 {field120 {field121 field122 field123} field119}} field129 field130 field131 field132 field133 {field134 field135}}} field136 {field137 {field138 {field139 field140} field141 {field142 field143}}} field149 field150 field151 {...Fragment11}} fragment Fragment48 on Object370 {field1601 {...Fragment49}} fragment Fragment78 on Object52 {field210 field211 field212 field282 field283 field284 field285 field294 field307 field308 field309 field310 field192 {...Fragment79} field227 {field228} field237 {...Fragment20} alias373:field250 {alias374:field251} field232 {field233 field234 field235 {... on Object68 {field236}}} field266 {...Fragment80} field295 {field296 field297 field298} field299 {field300 {field301 field303 field302} field304 {field301 field303 field302} field305 {field301 field303 field302} field306 {field301 field303 field302}} field286 {field292 field293 field287 {field290 field291 field289 field288}} field311 {field312 field313 field314 {field315 field316 field317}}} fragment Fragment81 on Object89 {field325 field328 field329 field326} fragment Fragment82 on Object51 {field189 field190} fragment Fragment49 on Union51 {__typename ... on Object371 {...Fragment50} ... on Object382 {...Fragment66} ... on Object384 {...Fragment68} ... on Object385 {...Fragment69} ... on Object386 {...Fragment70} ... on Object389 {...Fragment71} ... on Object390 {...Fragment72}} fragment Fragment79 on Object53 {field209 field202 field193 {field198 {field199} field200 {field201} field194 {field197 field195 field196}} field203 field204 field205 {field208 {...Fragment10}}} fragment Fragment80 on Object76 {field267 {field268 {field272 field269 field270 field271}} field273 {field274 {field277 field278 field275 field276}} field279 {field274 {field277 field278 field275 field276}} field281 {field274 {field277 field278 field275 field276}} field280 {field274 {field277 field278 field275 field276}}} fragment Fragment50 on Object371 {field1602 {...Fragment51} field1623 {...Fragment59} field1638} fragment Fragment66 on Object382 {field1639 {...Fragment67} field1647} fragment Fragment68 on Object384 {field1650 {...Fragment58} field1649 {...Fragment58} field1648 {...Fragment59}} fragment Fragment69 on Object385 {field1652 {...Fragment52} field1651 {...Fragment59} field1653 {...Fragment67}} fragment Fragment70 on Object386 {field1655 {...Fragment52} field1654 {...Fragment59} field1656 {field1657 {...Fragment58} field1658 {...Fragment58}}} fragment Fragment71 on Object389 {field1664 {...Fragment69} field1665 {...Fragment69}} fragment Fragment72 on Object390 {field1666 {...Fragment59} field1667 field1668 {...Fragment58} field1669 field1672 {field158 {...Fragment11}}} fragment Fragment51 on Object372 {field1603 {...Fragment52} field1604 {...Fragment58} field1607 field1608 {...Fragment58} field1611 field1619 {...Fragment58} field1620 field1621 field1622} fragment Fragment59 on Union52 {__typename ... on Object377 {...Fragment60} ... on Object379 {...Fragment61} ... on Object375 {...Fragment62} ... on Object376 {...Fragment63} ... on Object380 {...Fragment64} ... on Object381 {...Fragment65}} fragment Fragment67 on Object383 {field1640 field1641 field1642 {...Fragment59} field1643 field1644 field1645 {...Fragment58} field1646} fragment Fragment58 on Object373 {field1605 field1606} fragment Fragment52 on Object128 {field532 field572 field540 field541 {__typename ... on Object137 {...Fragment53} ... on Object144 {...Fragment56} ... on Object135 {...Fragment57}}} fragment Fragment60 on Object377 {field1627 {field1629 field1628}} fragment Fragment61 on Object379 {field1631 {field1629 field1628} field1630 {...Fragment52}} fragment Fragment62 on Object375 {field1624 {...Fragment51}} fragment Fragment63 on Object376 {field1625 {...Fragment51} alias375:field1626 {...Fragment52}} fragment Fragment64 on Object380 {alias376:field1632 {...Fragment51} field1633 {... on Object375 {field1624 {...Fragment51}}} alias377:field1634 {field1629 field1628}} fragment Fragment65 on Object381 {field1635 alias378:field1636 {...Fragment52} field1637} fragment Fragment53 on Object137 {field547 field555 field557 field556 field558 {...Fragment54} field548 {...Fragment55}} fragment Fragment56 on Object144 {field566 {field544 field545} field567 field568 field569 {...Fragment53} field570 {field560 field561 field562} field571} fragment Fragment57 on Object135 {field542 field543 {field544 field545} field546 {...Fragment53} field559 {field560 field561 field562}} fragment Fragment54 on Object62 {field218 field219 field220 field221} fragment Fragment55 on Object138 {field549 {field550 field551 {field552 field553 field554}}} \ No newline at end of file diff --git a/src/test/resources/many-fragments.graphqls b/src/test/resources/many-fragments.graphqls new file mode 100644 index 0000000000..928774ea70 --- /dev/null +++ b/src/test/resources/many-fragments.graphqls @@ -0,0 +1,14947 @@ +schema { + query: Object991 + mutation: Object4 +} + +directive @Directive1(argument1: Enum1!) on FIELD + +directive @Directive10(argument10: String!, argument9: String!) on OBJECT | UNION | ENUM | INPUT_OBJECT + +directive @Directive11(argument11: [Enum4!]!) on FIELD + +directive @Directive2 on FIELD_DEFINITION + +directive @Directive3 on FIELD_DEFINITION + +directive @Directive4(argument2: Enum2!, argument3: String!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +directive @Directive5(argument4: String!) on FIELD_DEFINITION + +directive @Directive6(argument5: String!) on FIELD + +directive @Directive7(argument6: String!) on FIELD_DEFINITION + +directive @Directive8(argument7: Enum3!) on FIELD_DEFINITION + +directive @Directive9(argument8: String!) on OBJECT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" +) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Directs the executor to skip this field or fragment when the `if`'argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +union Union1 @Directive10(argument10 : "stringValue46", argument9 : "stringValue45") = Object10 | Object5 | Object6 + +union Union10 @Directive10(argument10 : "stringValue570", argument9 : "stringValue569") = Object100 | Object101 | Object102 | Object103 | Object104 | Object105 + +union Union100 @Directive10(argument10 : "stringValue4957", argument9 : "stringValue4956") = Object742 | Object743 | Object744 | Object745 | Object746 + +union Union101 @Directive10(argument10 : "stringValue5023", argument9 : "stringValue5022") = Object576 | Object751 + +union Union102 @Directive10(argument10 : "stringValue5039", argument9 : "stringValue5038") = Object311 | Object753 + +union Union103 @Directive10(argument10 : "stringValue5047", argument9 : "stringValue5046") = Object152 + +union Union104 @Directive10(argument10 : "stringValue5051", argument9 : "stringValue5050") = Object109 | Object110 | Object152 | Object96 + +union Union105 @Directive10(argument10 : "stringValue5055", argument9 : "stringValue5054") = Object114 + +union Union106 @Directive10(argument10 : "stringValue5093", argument9 : "stringValue5092") = Object759 + +union Union107 @Directive10(argument10 : "stringValue5105", argument9 : "stringValue5104") = Object761 + +union Union108 @Directive10(argument10 : "stringValue5117", argument9 : "stringValue5116") = Object763 | Object764 | Object765 | Object766 + +union Union109 @Directive10(argument10 : "stringValue5233", argument9 : "stringValue5232") = Object768 | Object773 + +union Union11 @Directive10(argument10 : "stringValue630", argument9 : "stringValue629") = Object112 + +union Union110 = Object152 | Object410 + +union Union111 = Object109 | Object110 | Object152 | Object410 | Object42 | Object43 | Object96 + +union Union112 = Object114 | Object44 + +union Union113 @Directive10(argument10 : "stringValue5363", argument9 : "stringValue5362") = Object790 + +union Union114 @Directive10(argument10 : "stringValue5489", argument9 : "stringValue5488") = Object311 | Object803 + +union Union115 @Directive10(argument10 : "stringValue5539", argument9 : "stringValue5538") = Object806 | Object810 + +union Union116 @Directive10(argument10 : "stringValue5579", argument9 : "stringValue5578") = Object814 | Object816 + +union Union117 @Directive10(argument10 : "stringValue5603", argument9 : "stringValue5602") = Object21 | Object818 + +union Union118 @Directive10(argument10 : "stringValue5689", argument9 : "stringValue5688") = Object206 | Object821 + +union Union119 @Directive10(argument10 : "stringValue5743", argument9 : "stringValue5742") = Object825 | Object826 | Object827 + +union Union12 @Directive10(argument10 : "stringValue742", argument9 : "stringValue741") = Object134 + +union Union120 @Directive10(argument10 : "stringValue5811", argument9 : "stringValue5810") = Object170 | Object828 | Object829 + +union Union121 @Directive10(argument10 : "stringValue5847", argument9 : "stringValue5846") = Object186 | Object189 | Object830 + +union Union122 @Directive10(argument10 : "stringValue5861", argument9 : "stringValue5860") = Object186 | Object831 | Object832 + +union Union123 @Directive10(argument10 : "stringValue5883", argument9 : "stringValue5882") = Object186 | Object191 | Object833 + +union Union124 @Directive10(argument10 : "stringValue5903", argument9 : "stringValue5902") = Object170 | Object834 | Object835 + +union Union125 @Directive10(argument10 : "stringValue5921", argument9 : "stringValue5920") = Object170 | Object177 | Object836 + +union Union126 @Directive10(argument10 : "stringValue6045", argument9 : "stringValue6044") = Object410 | Object837 + +union Union127 @Directive10(argument10 : "stringValue6061", argument9 : "stringValue6060") = Object662 | Object839 | Object840 + +union Union128 @Directive10(argument10 : "stringValue6189", argument9 : "stringValue6188") = Object843 | Object844 | Object845 | Object846 + +union Union129 @Directive10(argument10 : "stringValue6209", argument9 : "stringValue6208") = Object847 | Object848 | Object849 | Object850 | Object851 | Object852 | Object853 | Object854 | Object855 | Object856 | Object857 | Object859 | Object860 + +union Union13 @Directive10(argument10 : "stringValue756", argument9 : "stringValue755") = Object135 | Object137 | Object142 | Object144 + +union Union130 @Directive10(argument10 : "stringValue6331", argument9 : "stringValue6330") = Object861 | Object862 | Object863 + +union Union131 @Directive10(argument10 : "stringValue6365", argument9 : "stringValue6364") = Object864 | Object865 + +union Union132 @Directive10(argument10 : "stringValue6427", argument9 : "stringValue6426") = Object680 | Object839 | Object872 | Object873 | Object874 | Object875 | Object876 | Object877 + +union Union133 @Directive10(argument10 : "stringValue6477", argument9 : "stringValue6476") = Object880 | Object881 | Object882 | Object883 + +union Union134 @Directive10(argument10 : "stringValue6671", argument9 : "stringValue6670") = Object894 | Object895 + +union Union135 @Directive10(argument10 : "stringValue6815", argument9 : "stringValue6814") = Object901 | Object902 + +union Union136 @Directive10(argument10 : "stringValue6839", argument9 : "stringValue6838") = Object905 | Object906 + +union Union137 @Directive10(argument10 : "stringValue6887", argument9 : "stringValue6886") = Object907 | Object908 + +union Union138 @Directive10(argument10 : "stringValue6909", argument9 : "stringValue6908") = Object909 | Object910 + +union Union139 @Directive10(argument10 : "stringValue6955", argument9 : "stringValue6954") = Object911 | Object912 + +union Union14 @Directive10(argument10 : "stringValue816", argument9 : "stringValue815") = Object146 | Object147 | Object148 | Object149 + +union Union140 @Directive10(argument10 : "stringValue6977", argument9 : "stringValue6976") = Object913 | Object914 + +union Union141 @Directive10(argument10 : "stringValue7003", argument9 : "stringValue7002") = Object915 | Object916 | Object917 + +union Union142 @Directive10(argument10 : "stringValue7033", argument9 : "stringValue7032") = Object918 | Object919 + +union Union143 @Directive10(argument10 : "stringValue7083", argument9 : "stringValue7082") = Object922 + +union Union144 @Directive10(argument10 : "stringValue7113", argument9 : "stringValue7112") = Object923 | Object924 | Object925 + +union Union145 @Directive10(argument10 : "stringValue7149", argument9 : "stringValue7148") = Object926 | Object927 + +union Union146 @Directive10(argument10 : "stringValue7187", argument9 : "stringValue7186") = Object928 | Object929 + +union Union147 @Directive10(argument10 : "stringValue7223", argument9 : "stringValue7222") = Object930 + +union Union148 @Directive10(argument10 : "stringValue7243", argument9 : "stringValue7242") = Object931 | Object932 + +union Union149 @Directive10(argument10 : "stringValue7265", argument9 : "stringValue7264") = Object933 | Object934 + +union Union15 @Directive10(argument10 : "stringValue842", argument9 : "stringValue841") = Object146 | Object147 | Object148 | Object150 + +union Union150 @Directive10(argument10 : "stringValue7287", argument9 : "stringValue7286") = Object935 | Object936 | Object937 + +union Union151 @Directive10(argument10 : "stringValue7329", argument9 : "stringValue7328") = Object938 | Object939 + +union Union152 @Directive10(argument10 : "stringValue7435", argument9 : "stringValue7434") = Object942 | Object944 + +union Union153 @Directive10(argument10 : "stringValue7465", argument9 : "stringValue7464") = Object945 | Object946 + +union Union154 @Directive10(argument10 : "stringValue7513", argument9 : "stringValue7512") = Object947 | Object948 | Object949 + +union Union155 @Directive10(argument10 : "stringValue7627", argument9 : "stringValue7626") = Object953 | Object954 + +union Union156 @Directive10(argument10 : "stringValue7649", argument9 : "stringValue7648") = Object955 | Object956 + +union Union157 @Directive10(argument10 : "stringValue7723", argument9 : "stringValue7722") = Object959 | Object960 + +union Union158 @Directive10(argument10 : "stringValue7761", argument9 : "stringValue7760") = Object961 | Object962 + +union Union159 @Directive10(argument10 : "stringValue7779", argument9 : "stringValue7778") = Object963 | Object964 + +union Union16 @Directive10(argument10 : "stringValue1126", argument9 : "stringValue1125") = Object166 | Object167 + +union Union160 @Directive10(argument10 : "stringValue7831", argument9 : "stringValue7830") = Object966 | Object967 + +union Union161 @Directive10(argument10 : "stringValue7857", argument9 : "stringValue7856") = Object968 | Object969 + +union Union162 @Directive10(argument10 : "stringValue7881", argument9 : "stringValue7880") = Object970 | Object971 + +union Union163 @Directive10(argument10 : "stringValue7915", argument9 : "stringValue7914") = Object973 | Object974 | Object975 + +union Union164 @Directive10(argument10 : "stringValue8039", argument9 : "stringValue8038") = Object164 | Object167 | Object981 + +union Union165 @Directive10(argument10 : "stringValue8201", argument9 : "stringValue8200") = Object987 | Object988 | Object989 | Object990 + +union Union166 @Directive10(argument10 : "stringValue8521", argument9 : "stringValue8520") = Object1025 | Object311 + +union Union167 @Directive10(argument10 : "stringValue8529", argument9 : "stringValue8528") = Object152 + +union Union168 @Directive10(argument10 : "stringValue8533", argument9 : "stringValue8532") = Object109 | Object110 | Object152 | Object96 + +union Union169 @Directive10(argument10 : "stringValue8537", argument9 : "stringValue8536") = Object114 + +union Union17 @Directive10(argument10 : "stringValue1144", argument9 : "stringValue1143") = Object168 | Object169 + +union Union170 @Directive10(argument10 : "stringValue8691", argument9 : "stringValue8690") = Object152 | Object951 + +union Union171 @Directive10(argument10 : "stringValue8695", argument9 : "stringValue8694") = Object109 | Object110 | Object152 | Object951 | Object96 + +union Union172 @Directive10(argument10 : "stringValue8699", argument9 : "stringValue8698") = Object114 | Object951 + +union Union173 @Directive10(argument10 : "stringValue8771", argument9 : "stringValue8770") = Object1042 + +union Union174 @Directive10(argument10 : "stringValue8925", argument9 : "stringValue8924") = Object1062 | Object1063 + +union Union175 @Directive10(argument10 : "stringValue8957", argument9 : "stringValue8956") = Object1064 + +union Union176 @Directive10(argument10 : "stringValue8965", argument9 : "stringValue8964") = Object1065 + +union Union177 = Object1066 + +union Union178 @Directive10(argument10 : "stringValue8991", argument9 : "stringValue8990") = Object1069 | Object1071 + +union Union179 @Directive10(argument10 : "stringValue8999", argument9 : "stringValue8998") = Object1070 + +union Union18 @Directive10(argument10 : "stringValue1178", argument9 : "stringValue1177") = Object172 | Object173 + +union Union180 = Object1072 + +union Union181 @Directive10(argument10 : "stringValue9185", argument9 : "stringValue9184") = Object1087 | Object1088 | Object1090 + +union Union182 @Directive10(argument10 : "stringValue9231", argument9 : "stringValue9230") = Object1092 | Object1093 | Object1094 | Object1097 | Object1099 | Object1100 + +union Union183 @Directive10(argument10 : "stringValue9273", argument9 : "stringValue9272") = Object1092 | Object1093 | Object1094 | Object1099 | Object1101 + +union Union184 @Directive10(argument10 : "stringValue9301", argument9 : "stringValue9300") = Object1104 | Object1105 | Object1106 + +union Union185 = Object1114 | Object1120 + +union Union186 = Object1115 | Object1118 | Object1119 + +union Union187 @Directive10(argument10 : "stringValue9451", argument9 : "stringValue9450") = Object1129 + +union Union188 @Directive10(argument10 : "stringValue9685", argument9 : "stringValue9684") = Object1144 | Object1145 + +union Union189 @Directive10(argument10 : "stringValue9715", argument9 : "stringValue9714") = Object1147 | Object828 + +union Union19 @Directive10(argument10 : "stringValue1196", argument9 : "stringValue1195") = Object174 | Object175 + +union Union190 @Directive10(argument10 : "stringValue9807", argument9 : "stringValue9806") = Object1155 | Object1156 | Object1157 | Object1158 + +union Union191 @Directive10(argument10 : "stringValue9827", argument9 : "stringValue9826") = Object1144 | Object1145 + +union Union192 @Directive10(argument10 : "stringValue9967", argument9 : "stringValue9966") = Object1167 | Object1169 + +union Union193 @Directive10(argument10 : "stringValue9985", argument9 : "stringValue9984") = Object1169 | Object1170 + +union Union2 @Directive10(argument10 : "stringValue190", argument9 : "stringValue189") = Object16 | Object17 + +union Union20 @Directive10(argument10 : "stringValue1214", argument9 : "stringValue1213") = Object176 | Object177 + +union Union21 @Directive10(argument10 : "stringValue1232", argument9 : "stringValue1231") = Object178 | Object179 + +union Union22 @Directive10(argument10 : "stringValue1286", argument9 : "stringValue1285") = Object180 | Object183 + +union Union23 @Directive10(argument10 : "stringValue1318", argument9 : "stringValue1317") = Object184 | Object192 + +union Union24 @Directive10(argument10 : "stringValue1336", argument9 : "stringValue1335") = Object188 | Object189 + +union Union25 @Directive10(argument10 : "stringValue1354", argument9 : "stringValue1353") = Object190 | Object191 + +union Union26 @Directive10(argument10 : "stringValue1406", argument9 : "stringValue1405") = Object194 | Object195 + +union Union27 @Directive10(argument10 : "stringValue1490", argument9 : "stringValue1489") = Object202 | Object203 + +union Union28 @Directive10(argument10 : "stringValue1638", argument9 : "stringValue1637") = Object217 | Object219 + +union Union29 @Directive10(argument10 : "stringValue1706", argument9 : "stringValue1705") = Object223 | Object224 + +union Union3 @Directive10(argument10 : "stringValue204", argument9 : "stringValue203") = Object18 | Object19 + +union Union30 @Directive10(argument10 : "stringValue1746", argument9 : "stringValue1745") = Object229 | Object230 + +union Union31 @Directive10(argument10 : "stringValue1764", argument9 : "stringValue1763") = Object231 | Object232 + +union Union32 @Directive10(argument10 : "stringValue1790", argument9 : "stringValue1789") = Object234 + +union Union33 @Directive10(argument10 : "stringValue1822", argument9 : "stringValue1821") = Object240 | Object241 | Object242 | Object243 | Object244 | Object245 + +union Union34 @Directive10(argument10 : "stringValue1918", argument9 : "stringValue1917") = Object259 | Object422 + +union Union35 @Directive10(argument10 : "stringValue1934", argument9 : "stringValue1933") = Object262 | Object263 + +union Union36 @Directive10(argument10 : "stringValue1982", argument9 : "stringValue1981") = Object267 + +union Union37 @Directive10(argument10 : "stringValue2019", argument9 : "stringValue2018") = Object271 | Object273 + +union Union38 @Directive10(argument10 : "stringValue2043", argument9 : "stringValue2042") = Object275 | Object29 + +union Union39 @Directive10(argument10 : "stringValue2139", argument9 : "stringValue2138") = Object146 | Object147 | Object148 | Object294 | Object295 + +union Union4 @Directive10(argument10 : "stringValue236", argument9 : "stringValue235") = Object1057 | Object24 + +union Union40 @Directive10(argument10 : "stringValue2211", argument9 : "stringValue2210") = Object303 | Object7 + +union Union41 @Directive10(argument10 : "stringValue2269", argument9 : "stringValue2268") = Object310 | Object311 + +union Union42 @Directive10(argument10 : "stringValue2277", argument9 : "stringValue2276") = Object410 + +union Union43 @Directive10(argument10 : "stringValue2281", argument9 : "stringValue2280") = Object410 | Object42 | Object43 + +union Union44 @Directive10(argument10 : "stringValue2285", argument9 : "stringValue2284") = Object44 + +union Union45 @Directive10(argument10 : "stringValue2553", argument9 : "stringValue2552") = Object363 | Object364 + +union Union46 @Directive10(argument10 : "stringValue2567", argument9 : "stringValue2566") = Object311 | Object365 + +union Union47 @Directive10(argument10 : "stringValue2575", argument9 : "stringValue2574") = Object410 + +union Union48 @Directive10(argument10 : "stringValue2579", argument9 : "stringValue2578") = Object410 | Object42 | Object43 + +union Union49 @Directive10(argument10 : "stringValue2583", argument9 : "stringValue2582") = Object44 + +union Union5 @Directive10(argument10 : "stringValue256", argument9 : "stringValue255") = Object127 | Object151 | Object27 + +union Union50 @Directive10(argument10 : "stringValue2613", argument9 : "stringValue2612") = Object369 | Object370 | Object403 + +union Union51 @Directive10(argument10 : "stringValue2625", argument9 : "stringValue2624") = Object371 | Object382 | Object384 | Object385 | Object386 | Object388 | Object389 | Object390 | Object391 + +union Union52 @Directive10(argument10 : "stringValue2649", argument9 : "stringValue2648") = Object375 | Object376 | Object377 | Object379 | Object380 | Object381 + +union Union53 @Directive10(argument10 : "stringValue2677", argument9 : "stringValue2676") = Object375 + +union Union54 @Directive10(argument10 : "stringValue2741", argument9 : "stringValue2740") = Object392 | Object394 | Object395 | Object397 | Object400 + +union Union55 @Directive10(argument10 : "stringValue2749", argument9 : "stringValue2748") = Object393 + +union Union56 @Directive10(argument10 : "stringValue2781", argument9 : "stringValue2780") = Object398 | Object399 + +union Union57 @Directive10(argument10 : "stringValue2969", argument9 : "stringValue2968") = Object424 | Object606 | Object607 | Object608 | Object609 | Object610 | Object611 | Object612 | Object613 | Object614 | Object615 | Object616 | Object617 | Object621 | Object628 + +union Union58 @Directive10(argument10 : "stringValue2981", argument9 : "stringValue2980") = Object426 | Object430 | Object593 + +union Union59 @Directive10(argument10 : "stringValue3017", argument9 : "stringValue3016") = Object426 | Object431 | Object435 | Object440 | Object455 | Object456 | Object457 | Object458 | Object460 | Object500 | Object502 | Object503 | Object504 | Object512 | Object513 | Object514 | Object515 | Object516 | Object517 | Object526 | Object527 | Object528 | Object529 | Object530 | Object531 | Object532 | Object533 | Object537 | Object538 | Object540 | Object548 | Object550 | Object551 | Object552 | Object553 | Object554 | Object555 | Object557 | Object565 | Object567 | Object569 | Object570 | Object574 | Object581 | Object587 | Object588 | Object590 + +union Union6 @Directive10(argument10 : "stringValue318", argument9 : "stringValue317") = Object410 | Object42 | Object43 + +union Union60 @Directive10(argument10 : "stringValue3059", argument9 : "stringValue3058") = Object438 | Object439 + +union Union61 @Directive10(argument10 : "stringValue3195", argument9 : "stringValue3194") = Object450 + +union Union62 @Directive10(argument10 : "stringValue3205", argument9 : "stringValue3204") = Object448 | Object451 + +union Union63 @Directive10(argument10 : "stringValue3219", argument9 : "stringValue3218") = Object452 | Object453 + +union Union64 @Directive10(argument10 : "stringValue3277", argument9 : "stringValue3276") = Object459 | Object500 | Object502 | Object503 + +union Union65 @Directive10(argument10 : "stringValue3385", argument9 : "stringValue3384") = Object478 | Object483 + +union Union66 @Directive10(argument10 : "stringValue3415", argument9 : "stringValue3414") = Object481 | Object482 + +union Union67 @Directive10(argument10 : "stringValue3479", argument9 : "stringValue3478") = Object494 | Object495 | Object496 + +union Union68 @Directive10(argument10 : "stringValue3561", argument9 : "stringValue3560") = Object316 | Object509 | Object510 + +union Union69 @Directive10(argument10 : "stringValue3617", argument9 : "stringValue3616") = Object518 | Object521 | Object523 | Object525 + +union Union7 @Directive10(argument10 : "stringValue422", argument9 : "stringValue421") = Object68 + +union Union70 @Directive10(argument10 : "stringValue3705", argument9 : "stringValue3704") = Object517 | Object534 | Object536 + +union Union71 @Directive10(argument10 : "stringValue3713", argument9 : "stringValue3712") = Object460 + +union Union72 @Directive10(argument10 : "stringValue3745", argument9 : "stringValue3744") = Object541 | Object542 | Object543 | Object546 + +union Union73 @Directive10(argument10 : "stringValue3769", argument9 : "stringValue3768") = Object544 + +union Union74 @Directive10(argument10 : "stringValue3825", argument9 : "stringValue3824") = Object556 + +union Union75 @Directive10(argument10 : "stringValue3837", argument9 : "stringValue3836") = Object558 | Object559 | Object560 | Object563 | Object564 + +union Union76 @Directive10(argument10 : "stringValue3853", argument9 : "stringValue3852") = Object561 | Object562 + +union Union77 @Directive10(argument10 : "stringValue3963", argument9 : "stringValue3962") = Object576 | Object577 + +union Union78 @Directive10(argument10 : "stringValue4007", argument9 : "stringValue4006") = Object579 | Object580 + +union Union79 @Directive10(argument10 : "stringValue4055", argument9 : "stringValue4054") = Object589 + +union Union8 @Directive10(argument10 : "stringValue538", argument9 : "stringValue537") = Object109 | Object110 | Object152 | Object96 + +union Union80 @Directive10(argument10 : "stringValue4143", argument9 : "stringValue4142") = Object605 + +union Union81 @Directive10(argument10 : "stringValue4227", argument9 : "stringValue4226") = Object622 | Object626 + +union Union82 @Directive10(argument10 : "stringValue4251", argument9 : "stringValue4250") = Object624 | Object625 + +union Union83 @Directive10(argument10 : "stringValue4311", argument9 : "stringValue4310") = Object634 | Object635 | Object636 | Object637 | Object638 | Object639 | Object640 | Object641 | Object642 + +union Union84 = Object650 | Object651 + +union Union85 = Object304 | Object578 + +union Union86 @Directive10(argument10 : "stringValue4531", argument9 : "stringValue4530") = Object674 | Object676 + +union Union87 @Directive10(argument10 : "stringValue4561", argument9 : "stringValue4560") = Object664 | Object679 + +union Union88 @Directive10(argument10 : "stringValue4583", argument9 : "stringValue4582") = Object664 | Object682 + +union Union89 @Directive10(argument10 : "stringValue4599", argument9 : "stringValue4598") = Object678 | Object684 + +union Union9 @Directive10(argument10 : "stringValue546", argument9 : "stringValue545") = Object97 + +union Union90 @Directive10(argument10 : "stringValue4607", argument9 : "stringValue4606") = Object682 | Object685 + +union Union91 @Directive10(argument10 : "stringValue4689", argument9 : "stringValue4688") = Object696 | Object709 | Object722 + +union Union92 @Directive10(argument10 : "stringValue4839", argument9 : "stringValue4838") = Object725 | Object727 + +union Union93 @Directive10(argument10 : "stringValue4859", argument9 : "stringValue4858") = Object311 | Object728 + +union Union94 @Directive10(argument10 : "stringValue4867", argument9 : "stringValue4866") = Object152 + +union Union95 @Directive10(argument10 : "stringValue4871", argument9 : "stringValue4870") = Object109 | Object110 | Object152 | Object96 + +union Union96 @Directive10(argument10 : "stringValue4875", argument9 : "stringValue4874") = Object114 + +union Union97 @Directive10(argument10 : "stringValue4887", argument9 : "stringValue4886") = Object729 | Object731 | Object732 | Object733 + +union Union98 = Object734 | Object736 + +union Union99 = Object735 + +type Object1 @Directive9(argument8 : "stringValue6") { + field1: String @Directive7(argument6 : "stringValue7") @Directive8(argument7 : EnumValue9) + field2: ID! + field3: String @Directive7(argument6 : "stringValue9") @Directive8(argument7 : EnumValue9) + field4: Scalar1! +} + +type Object10 @Directive10(argument10 : "stringValue80", argument9 : "stringValue79") { + field27: Enum9! +} + +type Object100 @Directive10(argument10 : "stringValue576", argument9 : "stringValue575") { + field392: String! +} + +type Object1000 @Directive10(argument10 : "stringValue8267", argument9 : "stringValue8266") { + field4271: Scalar2! @Directive2 + field4272: Object1001! @Directive2 +} + +type Object1001 @Directive10(argument10 : "stringValue8271", argument9 : "stringValue8270") { + field4273: [Scalar2!] @Directive2 + field4274: [Scalar2!] @Directive2 + field4275: [Scalar2!] @Directive2 + field4276: Object997 @Directive2 + field4277: [Scalar2!] @Directive2 + field4278: [Enum50!] @Directive2 + field4279: Boolean @Directive2 +} + +type Object1002 { + field4281: [Object153!]! + field4282: Object182! +} + +type Object1003 @Directive9(argument8 : "stringValue8295") { + field4287: ID! + field4288(argument1223: Enum46, argument1224: InputObject2!, argument1225: [Enum44!]!, argument1226: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue8296") @Directive8(argument7 : EnumValue9) + field4289: Object1004! + field4297(argument1227: String, argument1228: Int): Object1006 @Directive2 @Directive7(argument6 : "stringValue8306") @Directive8(argument7 : EnumValue9) +} + +type Object1004 @Directive10(argument10 : "stringValue8301", argument9 : "stringValue8300") { + field4290: Scalar2! @Directive2 + field4291: Object1005! @Directive2 +} + +type Object1005 @Directive10(argument10 : "stringValue8305", argument9 : "stringValue8304") { + field4292: [Scalar2!] @Directive2 + field4293: Object997 @Directive2 + field4294: [Scalar2!] @Directive2 + field4295: [Enum50!] @Directive2 + field4296: Boolean @Directive2 +} + +type Object1006 { + field4298: [Object155!]! + field4299: Object182! +} + +type Object1007 @Directive10(argument10 : "stringValue8317", argument9 : "stringValue8316") { + field4303: Object1008! @Directive2 + field4307: [String!]! @Directive2 +} + +type Object1008 @Directive10(argument10 : "stringValue8321", argument9 : "stringValue8320") { + field4304: [Enum407!]! @Directive2 + field4305: Enum408! @Directive2 + field4306: Enum409! @Directive2 +} + +type Object1009 @Directive9(argument8 : "stringValue8341") { + field4309: ID! + field4310(argument1233: Enum46, argument1234: InputObject2!, argument1235: [Enum44!]!, argument1236: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue8342") @Directive8(argument7 : EnumValue9) + field4311: Object1010! + field4318(argument1237: String, argument1238: Int): Object1012 @Directive2 @Directive7(argument6 : "stringValue8352") @Directive8(argument7 : EnumValue9) +} + +type Object101 @Directive10(argument10 : "stringValue580", argument9 : "stringValue579") { + field393: String! +} + +type Object1010 @Directive10(argument10 : "stringValue8347", argument9 : "stringValue8346") { + field4312: Scalar2! @Directive2 + field4313: Object1011! @Directive2 +} + +type Object1011 @Directive10(argument10 : "stringValue8351", argument9 : "stringValue8350") { + field4314: Object997 @Directive2 + field4315: [Scalar2!] @Directive2 + field4316: [Enum49!] @Directive2 + field4317: Boolean @Directive2 +} + +type Object1012 { + field4319: [Object156!]! + field4320: Object182! +} + +type Object1013 @Directive10(argument10 : "stringValue8367", argument9 : "stringValue8366") { + field4327: [Enum411!]! +} + +type Object1014 @Directive10(argument10 : "stringValue8377", argument9 : "stringValue8376") { + field4329: Enum412 + field4330: Object1015 + field4333: [Enum413!]! + field4334: Enum414 + field4335: String +} + +type Object1015 @Directive10(argument10 : "stringValue8385", argument9 : "stringValue8384") { + field4331: String + field4332: Scalar2 +} + +type Object1016 @Directive10(argument10 : "stringValue8399", argument9 : "stringValue8398") { + field4337: Boolean! + field4338: Object410! @deprecated + field4339: Union6 @deprecated + field4340: Object44! +} + +type Object1017 @Directive10(argument10 : "stringValue8437", argument9 : "stringValue8436") { + field4353: Object182 + field4354: [Object1018!]! +} + +type Object1018 @Directive10(argument10 : "stringValue8441", argument9 : "stringValue8440") { + field4355: Scalar2! + field4356: Scalar3! + field4357: Object128! +} + +type Object1019 @Directive10(argument10 : "stringValue8465", argument9 : "stringValue8464") { + field4366: [String!] + field4367: Int +} + +type Object102 @Directive10(argument10 : "stringValue584", argument9 : "stringValue583") { + field394: Scalar2! + field395: String! +} + +type Object1020 @Directive10(argument10 : "stringValue8471", argument9 : "stringValue8470") { + field4369: Boolean! + field4370: Boolean! +} + +type Object1021 @Directive10(argument10 : "stringValue8487", argument9 : "stringValue8486") { + field4376: [Object1022!]! + field4380: Object1022! +} + +type Object1022 @Directive10(argument10 : "stringValue8491", argument9 : "stringValue8490") { + field4377: String! + field4378: Scalar3 + field4379: Scalar3 +} + +type Object1023 @Directive10(argument10 : "stringValue8497", argument9 : "stringValue8496") { + field4382: Object1024 + field4385: Object1024 +} + +type Object1024 @Directive10(argument10 : "stringValue8501", argument9 : "stringValue8500") { + field4383: Scalar3! + field4384: [String!]! +} + +type Object1025 @Directive10(argument10 : "stringValue8527", argument9 : "stringValue8526") { + field4395: [Union167!]! @deprecated + field4396: [Union168] @deprecated + field4397: [Union169]! + field4398: Object182 +} + +type Object1026 @Directive9(argument8 : "stringValue8541") { + field4400: Boolean @Directive7(argument6 : "stringValue8542") @Directive8(argument7 : EnumValue9) + field4401: Boolean @Directive7(argument6 : "stringValue8544") @Directive8(argument7 : EnumValue9) + field4402: Boolean @Directive7(argument6 : "stringValue8546") @Directive8(argument7 : EnumValue9) + field4403: String @Directive7(argument6 : "stringValue8548") @Directive8(argument7 : EnumValue9) + field4404: Boolean @Directive7(argument6 : "stringValue8550") @Directive8(argument7 : EnumValue9) + field4405: Scalar3 @Directive7(argument6 : "stringValue8552") @Directive8(argument7 : EnumValue9) + field4406: Object1027 @Directive7(argument6 : "stringValue8554") @Directive8(argument7 : EnumValue9) + field4413: Object1028 @Directive7(argument6 : "stringValue8560") @Directive8(argument7 : EnumValue9) + field4418: Scalar3 @Directive7(argument6 : "stringValue8566") @Directive8(argument7 : EnumValue9) + field4419: [String!] @Directive7(argument6 : "stringValue8568") @Directive8(argument7 : EnumValue9) + field4420: Scalar3 @Directive7(argument6 : "stringValue8570") @Directive8(argument7 : EnumValue9) + field4421: ID! + field4422: String @Directive7(argument6 : "stringValue8572") @Directive8(argument7 : EnumValue9) + field4423: String @Directive7(argument6 : "stringValue8574") @Directive8(argument7 : EnumValue9) + field4424: String @Directive7(argument6 : "stringValue8576") @Directive8(argument7 : EnumValue9) + field4425: Boolean @Directive7(argument6 : "stringValue8578") @Directive8(argument7 : EnumValue9) + field4426: Object1029 @Directive7(argument6 : "stringValue8580") @Directive8(argument7 : EnumValue9) + field4433: String @Directive7(argument6 : "stringValue8586") @Directive8(argument7 : EnumValue9) + field4434: String @Directive7(argument6 : "stringValue8588") @Directive8(argument7 : EnumValue9) + field4435: Object1030 @Directive7(argument6 : "stringValue8590") @Directive8(argument7 : EnumValue9) + field4440: Scalar3 @Directive7(argument6 : "stringValue8596") @Directive8(argument7 : EnumValue9) + field4441: String @Directive7(argument6 : "stringValue8598") @Directive8(argument7 : EnumValue9) + field4442: Boolean @Directive7(argument6 : "stringValue8600") @Directive8(argument7 : EnumValue9) + field4443: Boolean @Directive7(argument6 : "stringValue8602") @Directive8(argument7 : EnumValue9) + field4444: String! + field4445: Scalar3 @Directive7(argument6 : "stringValue8604") @Directive8(argument7 : EnumValue9) + field4446: Enum418 @Directive7(argument6 : "stringValue8606") @Directive8(argument7 : EnumValue9) + field4447: Scalar3 @Directive7(argument6 : "stringValue8612") @Directive8(argument7 : EnumValue9) + field4448: Enum143 @Directive7(argument6 : "stringValue8614") @Directive8(argument7 : EnumValue9) + field4449: String @Directive7(argument6 : "stringValue8616") @Directive8(argument7 : EnumValue9) + field4450: Scalar3 @Directive7(argument6 : "stringValue8618") @Directive8(argument7 : EnumValue9) + field4451: Scalar3 @Directive7(argument6 : "stringValue8620") @Directive8(argument7 : EnumValue9) + field4452: Scalar3 @Directive7(argument6 : "stringValue8622") @Directive8(argument7 : EnumValue9) + field4453: Object152 @Directive7(argument6 : "stringValue8624") @Directive8(argument7 : EnumValue9) @deprecated + field4454: Union8 @Directive7(argument6 : "stringValue8626") @Directive8(argument7 : EnumValue9) @deprecated + field4455: Object114 @Directive7(argument6 : "stringValue8628") @Directive8(argument7 : EnumValue9) + field4456: Boolean @Directive7(argument6 : "stringValue8630") @Directive8(argument7 : EnumValue9) + field4457: Object410 @Directive7(argument6 : "stringValue8632") @Directive8(argument7 : EnumValue9) @deprecated + field4458: Union6 @Directive7(argument6 : "stringValue8634") @Directive8(argument7 : EnumValue9) @deprecated + field4459: Object44 @Directive7(argument6 : "stringValue8636") @Directive8(argument7 : EnumValue9) + field4460: Scalar3 @Directive7(argument6 : "stringValue8638") @Directive8(argument7 : EnumValue9) + field4461: Scalar3 @Directive7(argument6 : "stringValue8640") @Directive8(argument7 : EnumValue9) +} + +type Object1027 @Directive10(argument10 : "stringValue8559", argument9 : "stringValue8558") { + field4407: Boolean + field4408: String + field4409: String + field4410: Boolean + field4411: Boolean + field4412: Boolean +} + +type Object1028 @Directive10(argument10 : "stringValue8565", argument9 : "stringValue8564") { + field4414: Scalar3 + field4415: Float + field4416: Boolean + field4417: Boolean +} + +type Object1029 @Directive10(argument10 : "stringValue8585", argument9 : "stringValue8584") { + field4427: String + field4428: String + field4429: String + field4430: Float + field4431: Float + field4432: String +} + +type Object103 @Directive10(argument10 : "stringValue588", argument9 : "stringValue587") { + field396: String! + field397: Object410! @deprecated + field398: Union6 @deprecated + field399: Object44! +} + +type Object1030 @Directive10(argument10 : "stringValue8595", argument9 : "stringValue8594") { + field4436: String! + field4437: String + field4438: String! + field4439: String! +} + +type Object1031 @Directive10(argument10 : "stringValue8655", argument9 : "stringValue8654") { + field4466: [Object1032!] +} + +type Object1032 @Directive10(argument10 : "stringValue8659", argument9 : "stringValue8658") { + field4467: String! + field4468: String + field4469: Scalar2! + field4470: [Object233!]! +} + +type Object1033 @Directive10(argument10 : "stringValue8665", argument9 : "stringValue8664") { + field4472: Object410! @deprecated + field4473: Union6 @deprecated + field4474: Object44! + field4475: Object410! @deprecated + field4476: Union6 @deprecated + field4477: Object44! +} + +type Object1034 @Directive10(argument10 : "stringValue8675", argument9 : "stringValue8674") { + field4480: [Object951!] + field4481: [Object152!] @deprecated + field4482: [Union8] @deprecated + field4483: [Object114!] +} + +type Object1035 @Directive10(argument10 : "stringValue8689", argument9 : "stringValue8688") { + field4485: [Union170!]! @deprecated + field4486: [Union171] @deprecated + field4487: [Union172]! + field4488: Object182 +} + +type Object1036 { + field4492: [Object1037!]! + field4504: Object182! +} + +type Object1037 @Directive10(argument10 : "stringValue8711", argument9 : "stringValue8710") { + field4493: String @Directive2 + field4494: [Enum421!]! @Directive2 + field4495: Boolean! @Directive2 + field4496: Enum422! @Directive2 + field4497: String! @Directive2 + field4498: Enum423! @Directive2 + field4499: Enum424! @Directive2 + field4500: Boolean! @Directive2 + field4501: String! @Directive2 + field4502: String! @Directive2 + field4503: Enum425! @Directive2 +} + +type Object1038 @Directive10(argument10 : "stringValue8737", argument9 : "stringValue8736") { + field4506: [Object1037!]! @Directive2 + field4507: Object1039! @Directive2 +} + +type Object1039 @Directive10(argument10 : "stringValue8741", argument9 : "stringValue8740") { + field4508: String! @Directive2 + field4509: Boolean! @Directive2 + field4510: Boolean! @Directive2 + field4511: String! @Directive2 +} + +type Object104 @Directive10(argument10 : "stringValue592", argument9 : "stringValue591") { + field400: Object410! @deprecated + field401: Union6 @deprecated + field402: Object44! +} + +type Object1040 @Directive9(argument8 : "stringValue8757") { + field4519(argument1361: String, argument1362: Int): Object681 @Directive2 @Directive7(argument6 : "stringValue8758") @Directive8(argument7 : EnumValue9) + field4520: Object1041 @Directive2 @Directive7(argument6 : "stringValue8760") @Directive8(argument7 : EnumValue9) + field4526: ID! + field4527: Scalar3 @Directive2 @Directive7(argument6 : "stringValue8766") @Directive8(argument7 : EnumValue9) + field4528: Scalar1! + field4529: Union173 @Directive2 @Directive7(argument6 : "stringValue8768") @Directive8(argument7 : EnumValue9) +} + +type Object1041 @Directive10(argument10 : "stringValue8765", argument9 : "stringValue8764") { + field4521: String! + field4522: String + field4523: Scalar2! + field4524: Scalar2! + field4525: Scalar2! +} + +type Object1042 @Directive10(argument10 : "stringValue8777", argument9 : "stringValue8776") { + field4530: Boolean! +} + +type Object1043 { + field4532: [Object170!]! + field4533: Object182! +} + +type Object1044 @Directive9(argument8 : "stringValue8789") { + field4544: ID! + field4545: Scalar1! +} + +type Object1045 @Directive9(argument8 : "stringValue8793") { + field4547: ID! + field4548: Scalar1! + field4549(argument1384: [Scalar2!]): [Object410!] @Directive7(argument6 : "stringValue8794") @Directive8(argument7 : EnumValue9) @deprecated + field4550(argument1385: [Scalar2!]): [Union6] @Directive7(argument6 : "stringValue8796") @Directive8(argument7 : EnumValue9) @deprecated + field4551(argument1386: [Scalar2!]): [Object44!] @Directive7(argument6 : "stringValue8798") @Directive8(argument7 : EnumValue9) +} + +type Object1046 @Directive10(argument10 : "stringValue8811", argument9 : "stringValue8810") { + field4554: [Object1047!]! + field4568: Scalar2! +} + +type Object1047 @Directive10(argument10 : "stringValue8815", argument9 : "stringValue8814") { + field4555: String! + field4556: [Object1048!] + field4559: String! + field4560: String + field4561: [String!] + field4562: String + field4563: String! + field4564: String + field4565: String + field4566: String + field4567: String +} + +type Object1048 @Directive10(argument10 : "stringValue8819", argument9 : "stringValue8818") { + field4557: String! + field4558: String! +} + +type Object1049 @Directive9(argument8 : "stringValue8825") { + field4571: [Object1049!] @Directive2 @Directive7(argument6 : "stringValue8826") @Directive8(argument7 : EnumValue9) + field4572: ID! + field4573: Object1050 @Directive2 @Directive7(argument6 : "stringValue8828") @Directive8(argument7 : EnumValue9) + field4580: Scalar1! +} + +type Object105 @Directive10(argument10 : "stringValue596", argument9 : "stringValue595") { + field403: String! + field404: Enum33! + field405: Object106 +} + +type Object1050 @Directive10(argument10 : "stringValue8833", argument9 : "stringValue8832") { + field4574: Int! + field4575: String! + field4576: Int! + field4577: String! + field4578: Enum426! + field4579: Scalar3! +} + +type Object1051 @Directive9(argument8 : "stringValue8847") { + field4587: Boolean @Directive2 @Directive7(argument6 : "stringValue8848") @Directive8(argument7 : EnumValue9) + field4588: Enum427 @Directive2 @Directive7(argument6 : "stringValue8850") @Directive8(argument7 : EnumValue9) + field4589: String @Directive2 @Directive7(argument6 : "stringValue8856") @Directive8(argument7 : EnumValue9) + field4590: String @Directive2 @Directive7(argument6 : "stringValue8858") @Directive8(argument7 : EnumValue9) + field4591: ID! + field4592: String @Directive2 @Directive7(argument6 : "stringValue8860") @Directive8(argument7 : EnumValue9) + field4593(argument1408: String!): String @Directive2 @Directive7(argument6 : "stringValue8862") @Directive8(argument7 : EnumValue9) + field4594(argument1409: String!): String @Directive2 @Directive7(argument6 : "stringValue8864") @Directive8(argument7 : EnumValue9) + field4595: Scalar1! + field4596: Object1052 @Directive2 @Directive7(argument6 : "stringValue8866") @Directive8(argument7 : EnumValue9) + field4604: Enum429 @Directive2 @Directive7(argument6 : "stringValue8880") @Directive8(argument7 : EnumValue9) +} + +type Object1052 { + field4597: [Object1053!]! + field4603: Object182! +} + +type Object1053 @Directive10(argument10 : "stringValue8871", argument9 : "stringValue8870") { + field4598: Object1054! + field4601: String! + field4602: Scalar2 @Directive2 +} + +type Object1054 @Directive10(argument10 : "stringValue8875", argument9 : "stringValue8874") { + field4599: Enum428! + field4600: String +} + +type Object1055 { + field4607: [Object1051!]! + field4608: Object182! +} + +type Object1056 { + field4610: String! + field4611: Boolean! + field4612: String! + field4613: String! + field4614: String! + field4615: Scalar3! +} + +type Object1057 @Directive9(argument8 : "stringValue8895") { + field4617: ID! + field4618: [Object16!] @Directive7(argument6 : "stringValue8896") @Directive8(argument7 : EnumValue9) + field4619: String @Directive2 @Directive7(argument6 : "stringValue8898") @Directive8(argument7 : EnumValue9) + field4620: Object1058 @Directive2 @Directive7(argument6 : "stringValue8900") @Directive8(argument7 : EnumValue9) + field4649(argument1420: String, argument1421: String): Union174 @Directive2 @Directive7(argument6 : "stringValue8922") @Directive8(argument7 : EnumValue9) + field4654: Object1059 @Directive2 @Directive7(argument6 : "stringValue8940") @Directive8(argument7 : EnumValue9) + field4655: [Object1060!] @Directive2 @Directive7(argument6 : "stringValue8942") @Directive8(argument7 : EnumValue9) + field4656: Object1061 @Directive2 @Directive7(argument6 : "stringValue8944") @Directive8(argument7 : EnumValue9) + field4657: String! +} + +type Object1058 @Directive10(argument10 : "stringValue8905", argument9 : "stringValue8904") { + field4621: String! + field4622: Scalar2 + field4623: Object1059 + field4635: [Object1060!] + field4642: Object1061 +} + +type Object1059 @Directive10(argument10 : "stringValue8909", argument9 : "stringValue8908") { + field4624: Object410 @deprecated + field4625: Union6 @deprecated + field4626: Object44 + field4627: Object128 + field4628: String! + field4629: Enum430! + field4630: Scalar2 + field4631: Object410 @deprecated + field4632: Union6 @deprecated + field4633: Object44 + field4634: String +} + +type Object106 @Directive10(argument10 : "stringValue604", argument9 : "stringValue603") { + field406: String + field407: [Object107!] + field410: String + field411: Object108 @Directive2 + field414: String +} + +type Object1060 @Directive10(argument10 : "stringValue8917", argument9 : "stringValue8916") { + field4636: Scalar2 + field4637: Scalar2 + field4638: Scalar2 + field4639: Object410! @deprecated + field4640: Union6 @deprecated + field4641: Object44! +} + +type Object1061 @Directive10(argument10 : "stringValue8921", argument9 : "stringValue8920") { + field4643: Scalar2 + field4644: Boolean + field4645: Boolean + field4646: Boolean + field4647: Boolean + field4648: Boolean +} + +type Object1062 @Directive10(argument10 : "stringValue8931", argument9 : "stringValue8930") { + field4650: [Object20]! + field4651: Object182! +} + +type Object1063 @Directive10(argument10 : "stringValue8935", argument9 : "stringValue8934") { + field4652: String + field4653: Enum431! +} + +type Object1064 @Directive10(argument10 : "stringValue8963", argument9 : "stringValue8962") { + field4659: [Union176]! + field4662: Object182! +} + +type Object1065 @Directive10(argument10 : "stringValue8971", argument9 : "stringValue8970") { + field4660: Object1057! @deprecated + field4661: Object23! +} + +type Object1066 @Directive10(argument10 : "stringValue8979", argument9 : "stringValue8978") { + field4665: [Object1067]! + field4670: Object182! +} + +type Object1067 @Directive10(argument10 : "stringValue8983", argument9 : "stringValue8982") { + field4666: Object1057! @deprecated + field4667: Object23! + field4668: Object1068 +} + +type Object1068 @Directive10(argument10 : "stringValue8987", argument9 : "stringValue8986") { + field4669: [String!] +} + +type Object1069 @Directive10(argument10 : "stringValue8997", argument9 : "stringValue8996") { + field4672: [Union179!]! + field4676: Object182! +} + +type Object107 { + field408: String! + field409: String! +} + +type Object1070 @Directive10(argument10 : "stringValue9005", argument9 : "stringValue9004") { + field4673: Object21! @deprecated + field4674: Object817! + field4675: Object1068 +} + +type Object1071 @Directive10(argument10 : "stringValue9009", argument9 : "stringValue9008") { + field4677: String! +} + +type Object1072 @Directive10(argument10 : "stringValue9015", argument9 : "stringValue9014") { + field4679: [Object1073]! + field4683: Object182! +} + +type Object1073 @Directive10(argument10 : "stringValue9019", argument9 : "stringValue9018") { + field4680: Object1057! @deprecated + field4681: Object23! + field4682: Object1068 +} + +type Object1074 @Directive10(argument10 : "stringValue9041", argument9 : "stringValue9040") { + field4685: Object1075 @deprecated + field4690: Object1075 @deprecated +} + +type Object1075 @Directive10(argument10 : "stringValue9045", argument9 : "stringValue9044") { + field4686: [Object1076!] @deprecated + field4689: Object182 @deprecated +} + +type Object1076 @Directive10(argument10 : "stringValue9049", argument9 : "stringValue9048") { + field4687: Object1057! @deprecated + field4688: Object23! @deprecated +} + +type Object1077 @Directive10(argument10 : "stringValue9063", argument9 : "stringValue9062") { + field4695: Object1078! + field4699: Object28! + field4700: Object410! @deprecated + field4701: Union6 @deprecated + field4702: Object44! +} + +type Object1078 @Directive10(argument10 : "stringValue9067", argument9 : "stringValue9066") { + field4696: Scalar2 + field4697: String + field4698: Scalar4 +} + +type Object1079 @Directive10(argument10 : "stringValue9075", argument9 : "stringValue9074") { + field4705: [Object407!]! +} + +type Object108 @Directive10(argument10 : "stringValue608", argument9 : "stringValue607") { + field412: String + field413: String! +} + +type Object1080 @Directive10(argument10 : "stringValue9083", argument9 : "stringValue9082") { + field4707: [String!]! + field4708: String! +} + +type Object1081 { + field4715: [Object1057!]! @deprecated + field4716: [Object23!]! + field4717: Object182! +} + +type Object1082 @Directive9(argument8 : "stringValue9113") { + field4725: String @Directive2 @Directive7(argument6 : "stringValue9114") @Directive8(argument7 : EnumValue9) + field4726: ID! + field4727: Object137 @Directive2 @Directive7(argument6 : "stringValue9116") @Directive8(argument7 : EnumValue9) + field4728: Scalar1! + field4729(argument1480: String, argument1481: Int): Object681 @Directive7(argument6 : "stringValue9118") @Directive8(argument7 : EnumValue9) + field4730: Union88 @Directive7(argument6 : "stringValue9120") @Directive8(argument7 : EnumValue9) @deprecated + field4731: Union89 @Directive7(argument6 : "stringValue9122") @Directive8(argument7 : EnumValue9) + field4732: String @Directive2 @Directive7(argument6 : "stringValue9124") @Directive8(argument7 : EnumValue9) + field4733: String @Directive2 @Directive7(argument6 : "stringValue9126") @Directive8(argument7 : EnumValue9) + field4734: String @Directive2 @Directive7(argument6 : "stringValue9128") @Directive8(argument7 : EnumValue9) +} + +type Object1083 @Directive10(argument10 : "stringValue9149", argument9 : "stringValue9148") { + field4736: Scalar3! + field4737: Scalar3! +} + +type Object1084 { + field4739: [String!]! +} + +type Object1085 @Directive10(argument10 : "stringValue9177", argument9 : "stringValue9176") { + field4750: [String!]! + field4751: String! +} + +type Object1086 @Directive10(argument10 : "stringValue9183", argument9 : "stringValue9182") { + field4753: Union181! + field4769: Scalar2! + field4770: Boolean! + field4771: Boolean! + field4772: Enum441! +} + +type Object1087 @Directive10(argument10 : "stringValue9191", argument9 : "stringValue9190") { + field4754: String! + field4755: Enum439! +} + +type Object1088 @Directive10(argument10 : "stringValue9199", argument9 : "stringValue9198") { + field4756: String + field4757: String + field4758: Enum440 + field4759: String + field4760: Object1089 + field4763: String! + field4764: String + field4765: Boolean + field4766: String! +} + +type Object1089 @Directive10(argument10 : "stringValue9207", argument9 : "stringValue9206") { + field4761: String + field4762: Scalar2! +} + +type Object109 @Directive10(argument10 : "stringValue612", argument9 : "stringValue611") { + field418: String + field419: Enum34! +} + +type Object1090 @Directive10(argument10 : "stringValue9211", argument9 : "stringValue9210") { + field4767: String! + field4768: String! +} + +type Object1091 @Directive9(argument8 : "stringValue9223") { + field4775: ID! + field4776(argument1507: String, argument1508: Enum442, argument1509: Int, argument1510: Scalar2, argument1511: Int, argument1512: String, argument1513: Int, argument1514: Scalar2, argument1515: String): Union182 @Directive7(argument6 : "stringValue9224") @Directive8(argument7 : EnumValue9) + field4791(argument1516: String, argument1517: Int, argument1518: Scalar2, argument1519: Int, argument1520: Int, argument1521: Int, argument1522: String, argument1523: Int, argument1524: Scalar2, argument1525: Enum443, argument1526: String): Union183 @Directive7(argument6 : "stringValue9266") @Directive8(argument7 : EnumValue9) + field4796: String! +} + +type Object1092 @Directive10(argument10 : "stringValue9237", argument9 : "stringValue9236") { + field4777: String! +} + +type Object1093 @Directive10(argument10 : "stringValue9241", argument9 : "stringValue9240") { + field4778: String! +} + +type Object1094 @Directive10(argument10 : "stringValue9245", argument9 : "stringValue9244") { + field4779: [Object1095!]! +} + +type Object1095 @Directive10(argument10 : "stringValue9249", argument9 : "stringValue9248") { + field4780: String! + field4781: [Object1096!]! +} + +type Object1096 { + field4782: String! + field4783: String! +} + +type Object1097 @Directive10(argument10 : "stringValue9253", argument9 : "stringValue9252") { + field4784: [Object1098!]! + field4788: String +} + +type Object1098 @Directive10(argument10 : "stringValue9257", argument9 : "stringValue9256") { + field4785: Int! + field4786: Scalar2! + field4787: Scalar2! +} + +type Object1099 @Directive10(argument10 : "stringValue9261", argument9 : "stringValue9260") { + field4789: String! +} + +type Object11 @Directive9(argument8 : "stringValue104") { + field31: Object12 @Directive7(argument6 : "stringValue105") @Directive8(argument7 : EnumValue9) + field38: [Object13!] @Directive7(argument6 : "stringValue115") @Directive8(argument7 : EnumValue9) + field58: [Object15!] @Directive7(argument6 : "stringValue149") @Directive8(argument7 : EnumValue9) + field77: ID! + field78: Scalar1! +} + +type Object110 @Directive10(argument10 : "stringValue620", argument9 : "stringValue619") { + field420: Object111 + field425: Object152! + field426: Union11 + field430: Object113 @Directive2 +} + +type Object1100 @Directive10(argument10 : "stringValue9265", argument9 : "stringValue9264") { + field4790: String! +} + +type Object1101 @Directive10(argument10 : "stringValue9279", argument9 : "stringValue9278") { + field4792: String + field4793: [Object152!]! @deprecated + field4794: [Union8] @deprecated + field4795: [Object114!]! +} + +type Object1102 @Directive10(argument10 : "stringValue9293", argument9 : "stringValue9292") { + field4800: Object1103 + field4803: Object1103 + field4804: Object1103 + field4805: Object1103 + field4806: Object1103 + field4807: Object1103 + field4808: Object1103 +} + +type Object1103 @Directive10(argument10 : "stringValue9297", argument9 : "stringValue9296") { + field4801: Scalar2 + field4802: Scalar2 +} + +type Object1104 @Directive10(argument10 : "stringValue9307", argument9 : "stringValue9306") { + field4810: Enum362! +} + +type Object1105 @Directive10(argument10 : "stringValue9311", argument9 : "stringValue9310") { + field4811: Boolean! @deprecated +} + +type Object1106 @Directive10(argument10 : "stringValue9315", argument9 : "stringValue9314") { + field4812: Enum444! +} + +type Object1107 @Directive9(argument8 : "stringValue9329") { + field4817: ID! + field4818: Scalar1! + field4819: Object1108 @Directive7(argument6 : "stringValue9330") @Directive8(argument7 : EnumValue9) +} + +type Object1108 @Directive10(argument10 : "stringValue9335", argument9 : "stringValue9334") { + field4820: Object712! + field4821: String + field4822: Enum216 +} + +type Object1109 @Directive9(argument8 : "stringValue9341") { + field4825(argument1555: Enum445!, argument1556: Int): [Object441!] @Directive7(argument6 : "stringValue9342") @Directive8(argument7 : EnumValue9) + field4826(argument1557: Enum446!, argument1558: Int): Object1110 @Directive7(argument6 : "stringValue9348") @Directive8(argument7 : EnumValue9) + field4841: ID! + field4842: String! + field4843(argument1559: String, argument1560: Int): Union185 @Directive7(argument6 : "stringValue9378") @Directive8(argument7 : EnumValue9) +} + +type Object111 @Directive10(argument10 : "stringValue624", argument9 : "stringValue623") { + field421: Enum35 + field422: Boolean + field423: Object98! + field424: Object105! +} + +type Object1110 @Directive10(argument10 : "stringValue9357", argument9 : "stringValue9356") { + field4827: [Object1111!] +} + +type Object1111 @Directive10(argument10 : "stringValue9361", argument9 : "stringValue9360") { + field4828: Enum447 + field4829: [Object1112!] + field4838: String + field4839: Object1113 + field4840: Int +} + +type Object1112 @Directive10(argument10 : "stringValue9369", argument9 : "stringValue9368") { + field4830: [Object44!] + field4831: Enum448 + field4832: Object1113 + field4837: Object441 +} + +type Object1113 @Directive10(argument10 : "stringValue9377", argument9 : "stringValue9376") { + field4833: String + field4834: String + field4835: Boolean + field4836: String +} + +type Object1114 { + field4844: [Union186!]! + field4858: Object182! +} + +type Object1115 @Directive10(argument10 : "stringValue9383", argument9 : "stringValue9382") { + field4845: Object1082! + field4846: Object1116 +} + +type Object1116 @Directive10(argument10 : "stringValue9387", argument9 : "stringValue9386") { + field4847: Object1117 + field4850: Float! + field4851: String +} + +type Object1117 @Directive10(argument10 : "stringValue9391", argument9 : "stringValue9390") { + field4848: Enum449! + field4849: String! +} + +type Object1118 @Directive10(argument10 : "stringValue9399", argument9 : "stringValue9398") { + field4852: Object1116 + field4853: String! +} + +type Object1119 @Directive10(argument10 : "stringValue9403", argument9 : "stringValue9402") { + field4854: Object1116 + field4855: Object410! @deprecated + field4856: Union6 @deprecated + field4857: Object44! +} + +type Object112 @Directive10(argument10 : "stringValue636", argument9 : "stringValue635") { + field427: Enum36! + field428: Object98! + field429: Object98! +} + +type Object1120 { + field4859: [Object1121!]! +} + +type Object1121 { + field4860: String! +} + +type Object1122 @Directive9(argument8 : "stringValue9413") { + field4863(argument1566: String, argument1567: Int): Object681 @Directive2 @Directive7(argument6 : "stringValue9414") @Directive8(argument7 : EnumValue9) + field4864: Object1123 @Directive7(argument6 : "stringValue9416") @Directive8(argument7 : EnumValue9) + field4867: ID! + field4868: Object1124! +} + +type Object1123 @Directive10(argument10 : "stringValue9421", argument9 : "stringValue9420") { + field4865: String + field4866: String! +} + +type Object1124 @Directive10(argument10 : "stringValue9425", argument9 : "stringValue9424") { + field4869: Scalar2! + field4870: Scalar2! +} + +type Object1125 @Directive9(argument8 : "stringValue9435") { + field4875: ID! + field4876(argument1571: String): Object1126 @Directive2 @Directive7(argument6 : "stringValue9436") @Directive8(argument7 : EnumValue9) + field4896: String! +} + +type Object1126 @Directive10(argument10 : "stringValue9441", argument9 : "stringValue9440") { + field4877: [Object1127!]! + field4895: Object182! +} + +type Object1127 @Directive10(argument10 : "stringValue9445", argument9 : "stringValue9444") { + field4878: Int + field4879: String! + field4880: [Object1128!]! + field4894: String +} + +type Object1128 @Directive10(argument10 : "stringValue9449", argument9 : "stringValue9448") { + field4881: Union187! + field4893: String! +} + +type Object1129 @Directive10(argument10 : "stringValue9457", argument9 : "stringValue9456") { + field4882: String + field4883: Object1130! + field4888: Boolean! + field4889: Object1131! + field4892: [Object1130!]! +} + +type Object113 @Directive10(argument10 : "stringValue644", argument9 : "stringValue643") { + field431: Object98 @Directive2 + field432: Object98 @Directive2 + field433: Object105 @Directive2 +} + +type Object1130 @Directive10(argument10 : "stringValue9461", argument9 : "stringValue9460") { + field4884: Int! + field4885: String + field4886: String! + field4887: Int! +} + +type Object1131 @Directive10(argument10 : "stringValue9465", argument9 : "stringValue9464") { + field4890: String! + field4891: String! +} + +type Object1132 @Directive9(argument8 : "stringValue9467") { + field4898: Object781 @Directive7(argument6 : "stringValue9468") @Directive8(argument7 : EnumValue9) + field4899: ID! + field4900: Scalar1! + field4901: Enum232 @Directive2 @Directive7(argument6 : "stringValue9470") @Directive8(argument7 : EnumValue9) +} + +type Object1133 { + field4907: String! + field4908: String! + field4909: String! +} + +type Object1134 @Directive10(argument10 : "stringValue9495", argument9 : "stringValue9494") { + field4912: String + field4913: String + field4914: Scalar3 + field4915: String + field4916: Object1135 + field4924: [Enum452!]! + field4925: String + field4926: Scalar2! + field4927: Enum453! + field4928: String + field4929: Object410 @deprecated + field4930: Union6 @deprecated + field4931: Object44 +} + +type Object1135 @Directive10(argument10 : "stringValue9499", argument9 : "stringValue9498") { + field4917: String + field4918: Scalar3 + field4919: Enum451 + field4920: Scalar4 + field4921: Scalar4 + field4922: Int + field4923: Scalar3 +} + +type Object1136 { + field4942: String! + field4943: String! +} + +type Object1137 @Directive9(argument8 : "stringValue9601") { + field4972(argument1666: Enum456!): Object742 @Directive2 @Directive7(argument6 : "stringValue9602") @Directive8(argument7 : EnumValue9) + field4973: Object1138 @Directive7(argument6 : "stringValue9608") @Directive8(argument7 : EnumValue9) + field4980: Object1139 @Directive7(argument6 : "stringValue9618") @Directive8(argument7 : EnumValue9) @deprecated + field4982: [String!] @Directive7(argument6 : "stringValue9624") @Directive8(argument7 : EnumValue9) + field4983(argument1667: Enum458, argument1668: Int, argument1669: String, argument1670: Enum459, argument1671: Enum460!): [Object1140!] @Directive7(argument6 : "stringValue9626") @Directive8(argument7 : EnumValue9) @deprecated + field4994(argument1672: Enum458, argument1673: Int, argument1674: String, argument1675: Enum459, argument1676: Enum460!): Object1141 @Directive7(argument6 : "stringValue9648") @Directive8(argument7 : EnumValue9) @deprecated + field4997: [Object1142!] @Directive2 @Directive7(argument6 : "stringValue9654") @Directive8(argument7 : EnumValue9) + field5004: Object258 @Directive5(argument4 : "stringValue9660") @Directive7(argument6 : "stringValue9661") @Directive8(argument7 : EnumValue9) + field5005: Object422 @Directive7(argument6 : "stringValue9664") @Directive8(argument7 : EnumValue9) @deprecated + field5006: Object422 @Directive7(argument6 : "stringValue9666") @Directive8(argument7 : EnumValue9) + field5007: [Object656!] @Directive7(argument6 : "stringValue9668") @Directive8(argument7 : EnumValue9) + field5008(argument1677: Enum462, argument1678: Int, argument1679: String, argument1680: Enum463): [Object1143!] @Directive7(argument6 : "stringValue9670") @Directive8(argument7 : EnumValue9) @deprecated + field5018(argument1681: Enum462, argument1682: Int, argument1683: String, argument1684: Enum463): Object1146 @Directive7(argument6 : "stringValue9700") @Directive8(argument7 : EnumValue9) @deprecated + field5021: Object422! @Directive7(argument6 : "stringValue9706") @Directive8(argument7 : EnumValue9) + field5022: Object422! @Directive2 @Directive7(argument6 : "stringValue9708") @Directive8(argument7 : EnumValue9) + field5023: [Object170!]! @Directive7(argument6 : "stringValue9710") @Directive8(argument7 : EnumValue9) + field5024: Union189 @Directive2 @Directive7(argument6 : "stringValue9712") @Directive8(argument7 : EnumValue9) + field5026(argument1685: String!): Object1148 @Directive7(argument6 : "stringValue9722") @Directive8(argument7 : EnumValue9) + field5029: [Object11!] @Directive7(argument6 : "stringValue9732") @Directive8(argument7 : EnumValue9) + field5030: Object422 @Directive7(argument6 : "stringValue9734") @Directive8(argument7 : EnumValue9) + field5031(argument1686: Boolean! = true, argument1687: Scalar3, argument1688: Scalar4, argument1689: Scalar3, argument1690: Scalar2, argument1691: Scalar3, argument1692: Scalar2, argument1693: [Enum466!]! = []): Object1149 @Directive7(argument6 : "stringValue9736") @Directive8(argument7 : EnumValue9) + field5035(argument1694: Boolean! = true, argument1695: Scalar3, argument1696: Scalar4, argument1697: Scalar3, argument1698: Scalar2, argument1699: Scalar3, argument1700: Scalar2, argument1701: [Enum466!]! = []): [Object479!] @Directive7(argument6 : "stringValue9750") @Directive8(argument7 : EnumValue9) + field5036: Object1150 @Directive7(argument6 : "stringValue9752") @Directive8(argument7 : EnumValue9) + field5040: Object422 @Directive7(argument6 : "stringValue9758") @Directive8(argument7 : EnumValue9) + field5041: [Object1151!] @Directive7(argument6 : "stringValue9760") @Directive8(argument7 : EnumValue9) + field5044(argument1702: String, argument1703: String!, argument1704: Scalar2!, argument1705: String): Object1152 @Directive2 @Directive5(argument4 : "stringValue9770") @Directive7(argument6 : "stringValue9771") @Directive8(argument7 : EnumValue9) + field5052: Boolean! @Directive7(argument6 : "stringValue9778") @Directive8(argument7 : EnumValue9) + field5053: Boolean @Directive7(argument6 : "stringValue9780") @Directive8(argument7 : EnumValue9) + field5054: Object422 @Directive7(argument6 : "stringValue9782") @Directive8(argument7 : EnumValue9) + field5055(argument1706: Enum469, argument1707: Int, argument1708: Scalar2, argument1709: String, argument1710: Enum470, argument1711: Enum471!, argument1712: String): Object1153 @Directive7(argument6 : "stringValue9784") @Directive8(argument7 : EnumValue9) + field5075: String @Directive7(argument6 : "stringValue9834") @Directive8(argument7 : EnumValue9) @deprecated + field5076: Object422 @Directive7(argument6 : "stringValue9836") @Directive8(argument7 : EnumValue9) + field5077: Boolean @Directive7(argument6 : "stringValue9838") @Directive8(argument7 : EnumValue9) + field5078: Boolean @Directive7(argument6 : "stringValue9840") @Directive8(argument7 : EnumValue9) + field5079(argument1713: [Enum317!], argument1714: Enum320): [Object898!] @Directive2 @Directive7(argument6 : "stringValue9842") @Directive8(argument7 : EnumValue9) + field5080: Object422 @Directive2 @Directive7(argument6 : "stringValue9844") @Directive8(argument7 : EnumValue9) + field5081: Object422 @Directive7(argument6 : "stringValue9846") @Directive8(argument7 : EnumValue9) + field5082: [Object940!] @Directive7(argument6 : "stringValue9848") @Directive8(argument7 : EnumValue9) + field5083: [Object658!] @Directive7(argument6 : "stringValue9850") @Directive8(argument7 : EnumValue9) + field5084: Object422 @Directive7(argument6 : "stringValue9852") @Directive8(argument7 : EnumValue9) + field5085: Object422 @Directive7(argument6 : "stringValue9854") @Directive8(argument7 : EnumValue9) + field5086: Object422 @Directive7(argument6 : "stringValue9856") @Directive8(argument7 : EnumValue9) + field5087: Object422 @Directive7(argument6 : "stringValue9858") @Directive8(argument7 : EnumValue9) + field5088: Object422 @Directive7(argument6 : "stringValue9860") @Directive8(argument7 : EnumValue9) + field5089: Object95 @Directive7(argument6 : "stringValue9862") @Directive8(argument7 : EnumValue9) + field5090: [Object575!] @Directive7(argument6 : "stringValue9864") @Directive8(argument7 : EnumValue9) + field5091(argument1715: [String!], argument1716: [String!], argument1717: [String!]): Object423 @Directive7(argument6 : "stringValue9866") @Directive8(argument7 : EnumValue9) + field5092(argument1718: InputObject81!, argument1719: InputObject82!, argument1720: Scalar2!, argument1721: InputObject115!): Object1102 @Directive7(argument6 : "stringValue9868") @Directive8(argument7 : EnumValue9) + field5093(argument1722: String!): Object1159 @Directive7(argument6 : "stringValue9874") @Directive8(argument7 : EnumValue9) + field5097(argument1723: String!): Object1159 @Directive7(argument6 : "stringValue9880") @Directive8(argument7 : EnumValue9) + field5098: Object422! @Directive7(argument6 : "stringValue9882") @Directive8(argument7 : EnumValue9) + field5099: Object422 @Directive7(argument6 : "stringValue9884") @Directive8(argument7 : EnumValue9) + field5100: Object422 @Directive7(argument6 : "stringValue9886") @Directive8(argument7 : EnumValue9) + field5101(argument1724: Boolean! = true, argument1725: Scalar3, argument1726: Scalar4, argument1727: Scalar3, argument1728: Scalar2, argument1729: Scalar3, argument1730: Scalar2, argument1731: [Enum466!]! = []): Object1160 @Directive7(argument6 : "stringValue9888") @Directive8(argument7 : EnumValue9) + field5105(argument1732: Boolean! = true, argument1733: Scalar3, argument1734: Scalar4, argument1735: Scalar3, argument1736: Scalar2, argument1737: Scalar3, argument1738: Scalar2, argument1739: [Enum466!]! = []): [Object951!] @Directive7(argument6 : "stringValue9894") @Directive8(argument7 : EnumValue9) + field5106(argument1740: String!): Object1109 @Directive2 @Directive7(argument6 : "stringValue9896") @Directive8(argument7 : EnumValue9) + field5107: Object422 @Directive7(argument6 : "stringValue9898") @Directive8(argument7 : EnumValue9) + field5108: [Object1161!] @Directive7(argument6 : "stringValue9900") @Directive8(argument7 : EnumValue9) + field5130: Int @Directive7(argument6 : "stringValue9916") @Directive8(argument7 : EnumValue9) + field5131: Object422 @Directive7(argument6 : "stringValue9918") @Directive8(argument7 : EnumValue9) + field5132: Boolean @Directive2 @Directive7(argument6 : "stringValue9920") @Directive8(argument7 : EnumValue9) + field5133: Object1164 @Directive7(argument6 : "stringValue9922") @Directive8(argument7 : EnumValue9) + field5140: Object258 @Directive5(argument4 : "stringValue9936") @Directive7(argument6 : "stringValue9937") @Directive8(argument7 : EnumValue9) + field5141: Object258 @Directive5(argument4 : "stringValue9940") @Directive7(argument6 : "stringValue9941") @Directive8(argument7 : EnumValue9) + field5142: Object422 @Directive2 @Directive7(argument6 : "stringValue9944") @Directive8(argument7 : EnumValue9) + field5143: Object410 @Directive7(argument6 : "stringValue9946") @Directive8(argument7 : EnumValue9) @deprecated + field5144(argument1741: [String!]!): [Object1166!] @Directive7(argument6 : "stringValue9948") @Directive8(argument7 : EnumValue9) + field5147: Union6 @Directive7(argument6 : "stringValue9950") @Directive8(argument7 : EnumValue9) @deprecated + field5148: Object44 @Directive7(argument6 : "stringValue9952") @Directive8(argument7 : EnumValue9) + field5149: Object422 @Directive7(argument6 : "stringValue9954") @Directive8(argument7 : EnumValue9) + field5150: Object422 @Directive7(argument6 : "stringValue9956") @Directive8(argument7 : EnumValue9) +} + +type Object1138 @Directive10(argument10 : "stringValue9613", argument9 : "stringValue9612") { + field4974: Scalar2 + field4975: Boolean + field4976: Enum20 + field4977: Enum19 + field4978: Enum457 + field4979: Boolean +} + +type Object1139 @Directive10(argument10 : "stringValue9623", argument9 : "stringValue9622") { + field4981: Boolean +} + +type Object114 @Directive9(argument8 : "stringValue646") { + field435: Union8 @Directive7(argument6 : "stringValue647") @Directive8(argument7 : EnumValue9) + field436: String @deprecated +} + +type Object1140 @Directive10(argument10 : "stringValue9643", argument9 : "stringValue9642") { + field4984: String + field4985: Int + field4986: String! + field4987: String! + field4988: String + field4989: String! + field4990: String! + field4991: Scalar3! + field4992: Enum461! + field4993: String +} + +type Object1141 @Directive10(argument10 : "stringValue9653", argument9 : "stringValue9652") { + field4995: [Object1140!]! + field4996: Object182! +} + +type Object1142 @Directive10(argument10 : "stringValue9659", argument9 : "stringValue9658") { + field4998: String! + field4999: Scalar3! + field5000: String + field5001: String! + field5002: String + field5003: String +} + +type Object1143 @Directive10(argument10 : "stringValue9683", argument9 : "stringValue9682") { + field5009: [Union188!] + field5012: String! + field5013: String! + field5014: String! + field5015: Int! + field5016: Enum464! + field5017: String @deprecated +} + +type Object1144 @Directive10(argument10 : "stringValue9691", argument9 : "stringValue9690") { + field5010: String! +} + +type Object1145 @Directive10(argument10 : "stringValue9695", argument9 : "stringValue9694") { + field5011: String! +} + +type Object1146 @Directive10(argument10 : "stringValue9705", argument9 : "stringValue9704") { + field5019: [Object1143!]! + field5020: Object182! +} + +type Object1147 @Directive10(argument10 : "stringValue9721", argument9 : "stringValue9720") { + field5025: Boolean! @deprecated +} + +type Object1148 @Directive10(argument10 : "stringValue9727", argument9 : "stringValue9726") { + field5027: Boolean! + field5028: Enum465 +} + +type Object1149 @Directive10(argument10 : "stringValue9745", argument9 : "stringValue9744") { + field5032: Scalar3 + field5033: [Object479!] + field5034: Enum467 +} + +type Object115 @Directive10(argument10 : "stringValue652", argument9 : "stringValue651") { + field441: Object116 +} + +type Object1150 @Directive10(argument10 : "stringValue9757", argument9 : "stringValue9756") { + field5037: [Object539!]! + field5038: Boolean! + field5039: Boolean! +} + +type Object1151 @Directive10(argument10 : "stringValue9765", argument9 : "stringValue9764") { + field5042: Enum468! + field5043: Scalar3! +} + +type Object1152 @Directive10(argument10 : "stringValue9777", argument9 : "stringValue9776") { + field5045: String! @Directive2 + field5046: String @Directive2 + field5047: String @Directive2 + field5048: String! @Directive2 + field5049: String! @Directive2 + field5050: String! @Directive2 + field5051: String! @Directive2 +} + +type Object1153 @Directive10(argument10 : "stringValue9801", argument9 : "stringValue9800") { + field5056: [Object1154!]! + field5074: Object182! +} + +type Object1154 @Directive10(argument10 : "stringValue9805", argument9 : "stringValue9804") { + field5057: String + field5058: String! + field5059: String! + field5060: String + field5061: String + field5062: String! + field5063: Union190 + field5070: String! + field5071: Scalar3! + field5072: Enum472! + field5073: String +} + +type Object1155 @Directive10(argument10 : "stringValue9813", argument9 : "stringValue9812") { + field5064: Int + field5065: String +} + +type Object1156 @Directive10(argument10 : "stringValue9817", argument9 : "stringValue9816") { + field5066: String! +} + +type Object1157 @Directive10(argument10 : "stringValue9821", argument9 : "stringValue9820") { + field5067: Object658 + field5068: String @Directive2 +} + +type Object1158 @Directive10(argument10 : "stringValue9825", argument9 : "stringValue9824") { + field5069: [Union191!] +} + +type Object1159 @Directive10(argument10 : "stringValue9879", argument9 : "stringValue9878") { + field5094: String! + field5095: Scalar2! + field5096: [Scalar2!]! +} + +type Object116 @Directive10(argument10 : "stringValue656", argument9 : "stringValue655") { + field442: Object117 + field446: Scalar3 +} + +type Object1160 @Directive10(argument10 : "stringValue9893", argument9 : "stringValue9892") { + field5102: Scalar3 + field5103: [Object951!] + field5104: Enum467 +} + +type Object1161 @Directive9(argument8 : "stringValue9903") { + field5109: Object1162 @Directive7(argument6 : "stringValue9904") @Directive8(argument7 : EnumValue9) + field5120: ID! + field5121: String! + field5122: Object1163 @Directive2 @Directive7(argument6 : "stringValue9910") @Directive8(argument7 : EnumValue9) +} + +type Object1162 @Directive10(argument10 : "stringValue9909", argument9 : "stringValue9908") { + field5110: [String!] + field5111: String + field5112: String! @Directive2 + field5113: [String!] + field5114: String + field5115: String + field5116: Boolean + field5117: String + field5118: String + field5119: String +} + +type Object1163 @Directive10(argument10 : "stringValue9915", argument9 : "stringValue9914") { + field5123: Boolean + field5124: Boolean + field5125: Boolean + field5126: Boolean + field5127: Boolean + field5128: Int + field5129: Boolean +} + +type Object1164 @Directive10(argument10 : "stringValue9927", argument9 : "stringValue9926") { + field5134: [Object1165!] + field5139: [Object1165!] +} + +type Object1165 @Directive10(argument10 : "stringValue9931", argument9 : "stringValue9930") { + field5135: Enum473! + field5136: Object410! @deprecated + field5137: Union6 @deprecated + field5138: Object44! +} + +type Object1166 { + field5145: Boolean! + field5146: String! +} + +type Object1167 @Directive10(argument10 : "stringValue9973", argument9 : "stringValue9972") { + field5154: Object182! + field5155: [Object1168!]! +} + +type Object1168 @Directive10(argument10 : "stringValue9977", argument9 : "stringValue9976") { + field5156: Object760! + field5157: [Object758!]! +} + +type Object1169 @Directive10(argument10 : "stringValue9981", argument9 : "stringValue9980") { + field5158: String +} + +type Object117 @Directive10(argument10 : "stringValue660", argument9 : "stringValue659") { + field443: Object93 + field444: String + field445: Object32 +} + +type Object1170 @Directive10(argument10 : "stringValue9991", argument9 : "stringValue9990") { + field5160: [Object758!]! + field5161: Object182! +} + +type Object1171 @Directive9(argument8 : "stringValue9997") { + field5165: ID! + field5166: [Object1172!] @Directive7(argument6 : "stringValue9998") @Directive8(argument7 : EnumValue9) + field5171: String! +} + +type Object1172 @Directive10(argument10 : "stringValue10003", argument9 : "stringValue10002") { + field5167: Scalar3! + field5168: Enum5! + field5169: String! + field5170: Enum474! +} + +type Object118 { + field454: Object119 + field462: Object120 + field465: [Float!] + field466: [Object118!] + field467: String + field468: String + field469: String + field470: String + field471: String + field472: String + field473: [String!] + field474: String + field475: String + field476: Object121 + field485: Object124 +} + +type Object119 @Directive10(argument10 : "stringValue664", argument9 : "stringValue663") { + field455: String + field456: String + field457: String + field458: String + field459: String + field460: String + field461: String +} + +type Object12 @Directive10(argument10 : "stringValue110", argument9 : "stringValue109") { + field32: String + field33: Scalar2 + field34: String + field35: Boolean + field36: Enum14 + field37: String +} + +type Object120 @Directive10(argument10 : "stringValue668", argument9 : "stringValue667") { + field463: [[[Float!]!]!] + field464: String +} + +type Object121 @Directive10(argument10 : "stringValue672", argument9 : "stringValue671") { + field477: Object122 + field479: Object123 +} + +type Object122 @Directive10(argument10 : "stringValue676", argument9 : "stringValue675") { + field478: String +} + +type Object123 @Directive10(argument10 : "stringValue680", argument9 : "stringValue679") { + field480: String + field481: String + field482: Float + field483: Int + field484: String +} + +type Object124 @Directive10(argument10 : "stringValue684", argument9 : "stringValue683") { + field486: Boolean +} + +type Object125 @Directive10(argument10 : "stringValue688", argument9 : "stringValue687") { + field492: Object410 @deprecated + field493: Union6 @deprecated + field494: Object44 + field495: String + field496: String + field497: String + field498: [Object126!] +} + +type Object126 @Directive10(argument10 : "stringValue692", argument9 : "stringValue691") { + field499: Object410! @deprecated + field500: Union6 @deprecated + field501: Object44! +} + +type Object127 @Directive10(argument10 : "stringValue704", argument9 : "stringValue703") { + field522: Object128! @Directive2 +} + +type Object128 @Directive9(argument8 : "stringValue706") { + field523: Object129 @Directive7(argument6 : "stringValue707") @Directive8(argument7 : EnumValue9) + field532: ID! + field533: Boolean @Directive7(argument6 : "stringValue725") @Directive8(argument7 : EnumValue9) + field534: Object133 @Directive7(argument6 : "stringValue727") @Directive8(argument7 : EnumValue9) + field539: Object67 @Directive7(argument6 : "stringValue749") @Directive8(argument7 : EnumValue9) + field540: Scalar2 @Directive7(argument6 : "stringValue751") @Directive8(argument7 : EnumValue9) + field541: Union13 @Directive7(argument6 : "stringValue753") @Directive8(argument7 : EnumValue9) + field572: String @Directive7(argument6 : "stringValue799") @Directive8(argument7 : EnumValue9) + field573: Object145 @Directive7(argument6 : "stringValue801") @Directive8(argument7 : EnumValue9) + field576: Scalar3 @Directive7(argument6 : "stringValue807") @Directive8(argument7 : EnumValue9) + field577: Object83 @Directive7(argument6 : "stringValue809") @Directive8(argument7 : EnumValue9) + field578: String @Directive7(argument6 : "stringValue811") @Directive8(argument7 : EnumValue9) + field579: Union14 @Directive7(argument6 : "stringValue813") @Directive8(argument7 : EnumValue9) + field591: Union15 @Directive7(argument6 : "stringValue839") @Directive8(argument7 : EnumValue9) +} + +type Object129 @Directive10(argument10 : "stringValue712", argument9 : "stringValue711") { + field524: Object130 + field528: Object131 + field530: Object132 +} + +type Object13 @Directive9(argument8 : "stringValue118") { + field39: Object14 @Directive7(argument6 : "stringValue119") @Directive8(argument7 : EnumValue9) + field56: ID! + field57: Scalar1! +} + +type Object130 @Directive10(argument10 : "stringValue716", argument9 : "stringValue715") { + field525: String + field526: String + field527: String +} + +type Object131 @Directive10(argument10 : "stringValue720", argument9 : "stringValue719") { + field529: String! +} + +type Object132 @Directive10(argument10 : "stringValue724", argument9 : "stringValue723") { + field531: String! +} + +type Object133 @Directive10(argument10 : "stringValue732", argument9 : "stringValue731") { + field535: Enum39 + field536: Enum40! + field537: Union12 +} + +type Object134 @Directive10(argument10 : "stringValue748", argument9 : "stringValue747") { + field538: String! +} + +type Object135 @Directive10(argument10 : "stringValue762", argument9 : "stringValue761") { + field542: String + field543: Object136! + field546: Object137 + field559: [Object141!]! +} + +type Object136 @Directive10(argument10 : "stringValue766", argument9 : "stringValue765") { + field544: Scalar4! + field545: Scalar4! +} + +type Object137 @Directive10(argument10 : "stringValue770", argument9 : "stringValue769") { + field547: String + field548: Object138 + field555: Scalar3! + field556: String! + field557: Scalar3! + field558: Object62 +} + +type Object138 @Directive10(argument10 : "stringValue774", argument9 : "stringValue773") { + field549: [Object139!]! +} + +type Object139 @Directive10(argument10 : "stringValue778", argument9 : "stringValue777") { + field550: Float! + field551: Object140! +} + +type Object14 @Directive10(argument10 : "stringValue124", argument9 : "stringValue123") { + field40: String + field41: Enum15 + field42: Enum16 + field43: Enum17 + field44: Enum18 + field45: Scalar2 + field46: Boolean + field47: Boolean + field48: Enum19 + field49: String + field50: String + field51: Enum14 + field52: Boolean + field53: String + field54: String + field55: Enum20 +} + +type Object140 @Directive10(argument10 : "stringValue782", argument9 : "stringValue781") { + field552: Scalar4! + field553: Scalar4! + field554: Scalar4! +} + +type Object141 @Directive10(argument10 : "stringValue786", argument9 : "stringValue785") { + field560: Int + field561: String! + field562: String! +} + +type Object142 @Directive10(argument10 : "stringValue790", argument9 : "stringValue789") { + field563: [Object143!]! +} + +type Object143 @Directive10(argument10 : "stringValue794", argument9 : "stringValue793") { + field564: String! + field565: String! +} + +type Object144 @Directive10(argument10 : "stringValue798", argument9 : "stringValue797") { + field566: Object136! + field567: Scalar3! + field568: Boolean + field569: Object137 + field570: [Object141!]! + field571: Scalar2 +} + +type Object145 @Directive10(argument10 : "stringValue806", argument9 : "stringValue805") { + field574: String! + field575: String! +} + +type Object146 @Directive10(argument10 : "stringValue822", argument9 : "stringValue821") { + field580: Boolean! @deprecated +} + +type Object147 @Directive10(argument10 : "stringValue826", argument9 : "stringValue825") { + field581: Boolean! @deprecated +} + +type Object148 @Directive10(argument10 : "stringValue830", argument9 : "stringValue829") { + field582: Boolean! @deprecated +} + +type Object149 @Directive10(argument10 : "stringValue834", argument9 : "stringValue833") { + field583: Object150 + field587: Object150 + field588: Object150 + field589: Object150 + field590: Object150 +} + +type Object15 @Directive10(argument10 : "stringValue154", argument9 : "stringValue153") { + field59: Scalar2 + field60: String + field61: Enum15 + field62: Enum16 + field63: Enum17 + field64: Enum18 + field65: Scalar2 + field66: Boolean + field67: Boolean + field68: Enum19 + field69: String + field70: String + field71: String! + field72: Enum14 + field73: Boolean + field74: String + field75: String + field76: Enum20 +} + +type Object150 @Directive10(argument10 : "stringValue838", argument9 : "stringValue837") { + field584: Scalar3 + field585: Scalar3 + field586: Scalar3 +} + +type Object151 @Directive10(argument10 : "stringValue848", argument9 : "stringValue847") { + field1743: Union8 @deprecated + field1744: Object114! @Directive2 + field592: Object152! @deprecated +} + +type Object152 @Directive9(argument8 : "stringValue850") { + field1105: Object264 @Directive2 @Directive7(argument6 : "stringValue1963") @Directive8(argument7 : EnumValue9) + field1116: Object264 @Directive2 @Directive7(argument6 : "stringValue1993") @Directive8(argument7 : EnumValue9) + field1117: Object269 @Directive7(argument6 : "stringValue1995") @Directive8(argument7 : EnumValue9) + field1121: Boolean @Directive7(argument6 : "stringValue2001") @Directive8(argument7 : EnumValue9) + field1122: ID! + field1123: Scalar2 @Directive2 @Directive7(argument6 : "stringValue2003") @Directive8(argument7 : EnumValue9) + field1124(argument93: String): Boolean @Directive7(argument6 : "stringValue2005") @Directive8(argument7 : EnumValue9) + field1125(argument94: String): Boolean @Directive7(argument6 : "stringValue2007") @Directive8(argument7 : EnumValue9) + field1126: Scalar2 @Directive2 @Directive7(argument6 : "stringValue2009") @Directive8(argument7 : EnumValue9) + field1127(argument95: String! = "stringValue2013", argument96: Boolean! = false, argument97: Boolean! = false): Object270 @Directive7(argument6 : "stringValue2011") @Directive8(argument7 : EnumValue9) + field1257: [Object293!] @Directive7(argument6 : "stringValue2118") @Directive8(argument7 : EnumValue9) + field1259(argument100: [InputObject3!]!, argument98: Int, argument99: Boolean): Union39 @Directive2 @Directive7(argument6 : "stringValue2124") @Directive8(argument7 : EnumValue9) + field1266: Object422 @Directive7(argument6 : "stringValue2162") @Directive8(argument7 : EnumValue9) + field1267: Object298 @Directive7(argument6 : "stringValue2164") @Directive8(argument7 : EnumValue9) + field1274(argument101: InputObject2, argument102: [Enum100!]!, argument103: InputObject2): [Object300!] @Directive2 @Directive7(argument6 : "stringValue2174") @Directive8(argument7 : EnumValue9) + field1277: Scalar2 @Directive2 @Directive7(argument6 : "stringValue2188") @Directive8(argument7 : EnumValue9) + field1278: Object301 @Directive7(argument6 : "stringValue2190") @Directive8(argument7 : EnumValue9) + field1282(argument104: String): Object302 @Directive7(argument6 : "stringValue2192") @Directive8(argument7 : EnumValue9) + field1285: Object153 @Directive7(argument6 : "stringValue2202") @Directive8(argument7 : EnumValue9) + field1286(argument105: [Enum103!], argument106: String, argument107: Int): Union40 @Directive7(argument6 : "stringValue2204") @Directive8(argument7 : EnumValue9) + field1292: Object152 @Directive7(argument6 : "stringValue2222") @Directive8(argument7 : EnumValue9) @deprecated + field1293: Union8 @Directive7(argument6 : "stringValue2224") @Directive8(argument7 : EnumValue9) @deprecated + field1294: Object114 @Directive7(argument6 : "stringValue2226") @Directive8(argument7 : EnumValue9) + field1295(argument108: Scalar2): Object305 @Directive2 @Directive7(argument6 : "stringValue2228") @Directive8(argument7 : EnumValue9) + field1299(argument109: Scalar2): Object307 @Directive2 @Directive7(argument6 : "stringValue2238") @Directive8(argument7 : EnumValue9) + field1301: Object308 @Directive2 @Directive7(argument6 : "stringValue2244") @Directive8(argument7 : EnumValue9) + field1308: Object152 @Directive7(argument6 : "stringValue2254") @Directive8(argument7 : EnumValue9) @deprecated + field1309: Union8 @Directive7(argument6 : "stringValue2256") @Directive8(argument7 : EnumValue9) @deprecated + field1310: Object114 @Directive7(argument6 : "stringValue2258") @Directive8(argument7 : EnumValue9) + field1311: Object410 @Directive7(argument6 : "stringValue2260") @Directive8(argument7 : EnumValue9) @deprecated + field1312: Union6 @Directive7(argument6 : "stringValue2262") @Directive8(argument7 : EnumValue9) @deprecated + field1313: Object44 @Directive7(argument6 : "stringValue2264") @Directive8(argument7 : EnumValue9) + field1314: Scalar1! + field1315(argument110: Scalar4, argument111: String): Union41 @Directive2 @Directive7(argument6 : "stringValue2266") @Directive8(argument7 : EnumValue9) + field1323: String @Directive7(argument6 : "stringValue2300") @Directive8(argument7 : EnumValue9) + field1324: Object206 @Directive7(argument6 : "stringValue2302") @Directive8(argument7 : EnumValue9) + field1325: [Object313!] @Directive7(argument6 : "stringValue2304") @Directive8(argument7 : EnumValue9) + field1334: Object422 @Directive2 @Directive7(argument6 : "stringValue2314") @Directive8(argument7 : EnumValue9) + field1335: Object315 @Directive7(argument6 : "stringValue2316") @Directive8(argument7 : EnumValue9) + field1359: Object410 @Directive7(argument6 : "stringValue2354") @Directive8(argument7 : EnumValue9) @deprecated + field1360: Union6 @Directive7(argument6 : "stringValue2356") @Directive8(argument7 : EnumValue9) @deprecated + field1361: Object44 @Directive7(argument6 : "stringValue2358") @Directive8(argument7 : EnumValue9) + field1362: Object410 @Directive7(argument6 : "stringValue2360") @Directive8(argument7 : EnumValue9) @deprecated + field1363: Union6 @Directive7(argument6 : "stringValue2362") @Directive8(argument7 : EnumValue9) @deprecated + field1364: Object44 @Directive7(argument6 : "stringValue2364") @Directive8(argument7 : EnumValue9) @deprecated + field1365: Int @Directive7(argument6 : "stringValue2366") @Directive8(argument7 : EnumValue9) @deprecated + field1366: Int @Directive7(argument6 : "stringValue2368") @Directive8(argument7 : EnumValue9) @deprecated + field1367: Object320 @Directive2 @Directive7(argument6 : "stringValue2370") @Directive8(argument7 : EnumValue9) + field1374: Boolean @Directive7(argument6 : "stringValue2380") @Directive8(argument7 : EnumValue9) @deprecated + field1375: Boolean @Directive2 @Directive7(argument6 : "stringValue2382") @Directive8(argument7 : EnumValue9) + field1376: Object322 @Directive7(argument6 : "stringValue2384") @Directive8(argument7 : EnumValue9) + field1566(argument112: String): Object362 @Directive7(argument6 : "stringValue2534") @Directive8(argument7 : EnumValue9) + field1574(argument113: String): Object204 @Directive7(argument6 : "stringValue2536") @Directive8(argument7 : EnumValue9) + field1575(argument114: String): Boolean @Directive7(argument6 : "stringValue2538") @Directive8(argument7 : EnumValue9) + field1576(argument115: String): Boolean @Directive7(argument6 : "stringValue2540") @Directive8(argument7 : EnumValue9) + field1577(argument116: String): Object362 @Directive7(argument6 : "stringValue2542") @Directive8(argument7 : EnumValue9) + field1578: Object363 @Directive7(argument6 : "stringValue2544") @Directive8(argument7 : EnumValue9) @deprecated + field1582: Union45 @Directive2 @Directive7(argument6 : "stringValue2550") @Directive8(argument7 : EnumValue9) + field1584(argument117: Scalar4, argument118: String): Union46 @Directive2 @Directive7(argument6 : "stringValue2564") @Directive8(argument7 : EnumValue9) + field1589: Object366 @Directive7(argument6 : "stringValue2586") @Directive8(argument7 : EnumValue9) + field1709: Object404 @Directive2 @Directive7(argument6 : "stringValue2840") @Directive8(argument7 : EnumValue9) + field1716: [Object405!] @Directive7(argument6 : "stringValue2846") @Directive8(argument7 : EnumValue9) + field1723(argument119: Scalar2): Object406 @Directive2 @Directive7(argument6 : "stringValue2852") @Directive8(argument7 : EnumValue9) + field1734: Union14 @Directive7(argument6 : "stringValue2870") @Directive8(argument7 : EnumValue9) + field1735: Union15 @Directive7(argument6 : "stringValue2872") @Directive8(argument7 : EnumValue9) + field1736: Object409 @Directive7(argument6 : "stringValue2874") @Directive8(argument7 : EnumValue9) + field593: Object153 @Directive2 @Directive7(argument6 : "stringValue851") @Directive8(argument7 : EnumValue9) + field688: String @Directive7(argument6 : "stringValue1099") @Directive8(argument7 : EnumValue9) + field689: Object161 @Directive7(argument6 : "stringValue1101") @Directive8(argument7 : EnumValue9) + field696: Object164 @Directive7(argument6 : "stringValue1115") @Directive8(argument7 : EnumValue9) + field843(argument81: String): Object204 @Directive7(argument6 : "stringValue1509") @Directive8(argument7 : EnumValue9) + field849(argument82: Int, argument83: String): Object205 @Directive7(argument6 : "stringValue1511") @Directive8(argument7 : EnumValue9) + field923: Object220 @Directive7(argument6 : "stringValue1675") @Directive8(argument7 : EnumValue9) + field936: Object28 @Directive7(argument6 : "stringValue1693") @Directive8(argument7 : EnumValue9) + field937: Object170 @Directive7(argument6 : "stringValue1695") @Directive8(argument7 : EnumValue9) @deprecated + field938: Object222 @Directive7(argument6 : "stringValue1697") @Directive8(argument7 : EnumValue9) + field945(argument87: String, argument88: Boolean, argument89: Int, argument90: Int): Object423 @Directive7(argument6 : "stringValue1717") @Directive8(argument7 : EnumValue9) @deprecated + field946: Object225 @Directive7(argument6 : "stringValue1719") @Directive8(argument7 : EnumValue9) + field950: String @Directive7(argument6 : "stringValue1725") @Directive8(argument7 : EnumValue9) + field951: Object226 @Directive2 @Directive7(argument6 : "stringValue1727") @Directive8(argument7 : EnumValue9) + field954(argument91: Scalar2): Object227 @Directive2 @Directive7(argument6 : "stringValue1731") @Directive8(argument7 : EnumValue9) + field956(argument92: Scalar2): Object228 @Directive2 @Directive7(argument6 : "stringValue1737") @Directive8(argument7 : EnumValue9) + field958: Union30! @Directive2 @Directive7(argument6 : "stringValue1743") @Directive8(argument7 : EnumValue9) + field963: Union31 @Directive2 @Directive7(argument6 : "stringValue1761") @Directive8(argument7 : EnumValue9) + field968: Object422 @Directive2 @Directive7(argument6 : "stringValue1775") @Directive8(argument7 : EnumValue9) + field969: Object233 @Directive7(argument6 : "stringValue1777") @Directive8(argument7 : EnumValue9) +} + +type Object153 @Directive9(argument8 : "stringValue854") { + field594: Object992 @Directive2 @Directive7(argument6 : "stringValue855") @Directive8(argument7 : EnumValue9) + field595: Object154 @Directive2 @Directive7(argument6 : "stringValue857") @Directive8(argument7 : EnumValue9) + field672: Enum54 @Directive7(argument6 : "stringValue1061") @Directive8(argument7 : EnumValue9) + field673: Object155 @Directive7(argument6 : "stringValue1067") @Directive8(argument7 : EnumValue9) + field674: String @Directive2 @Directive7(argument6 : "stringValue1069") @Directive8(argument7 : EnumValue9) + field675: Object160 @Directive2 @Directive7(argument6 : "stringValue1071") @Directive8(argument7 : EnumValue9) + field678: Enum55 @Directive2 @Directive7(argument6 : "stringValue1077") @Directive8(argument7 : EnumValue9) + field679: String @Directive2 @Directive7(argument6 : "stringValue1083") @Directive8(argument7 : EnumValue9) + field680: Object156 @Directive2 @Directive7(argument6 : "stringValue1085") @Directive8(argument7 : EnumValue9) + field681: ID! + field682: String @Directive2 @Directive7(argument6 : "stringValue1087") @Directive8(argument7 : EnumValue9) + field683: Enum50 @Directive2 @Directive7(argument6 : "stringValue1089") @Directive8(argument7 : EnumValue9) + field684: Scalar2 @Directive2 @Directive7(argument6 : "stringValue1091") @Directive8(argument7 : EnumValue9) + field685: Enum47 @Directive2 @Directive7(argument6 : "stringValue1093") @Directive8(argument7 : EnumValue9) + field686: Enum48 @Directive2 @Directive7(argument6 : "stringValue1095") @Directive8(argument7 : EnumValue9) + field687: String @Directive2 @Directive7(argument6 : "stringValue1097") @Directive8(argument7 : EnumValue9) +} + +type Object154 @Directive9(argument8 : "stringValue860") { + field596: Object992 @Directive2 @Directive7(argument6 : "stringValue861") @Directive8(argument7 : EnumValue9) + field597: Scalar3 @Directive2 @Directive7(argument6 : "stringValue863") @Directive8(argument7 : EnumValue9) + field598: Enum41 @Directive2 @Directive7(argument6 : "stringValue865") @Directive8(argument7 : EnumValue9) + field599: Enum42 @Directive2 @Directive7(argument6 : "stringValue871") @Directive8(argument7 : EnumValue9) + field600: Object155 @Directive2 @Directive7(argument6 : "stringValue877") @Directive8(argument7 : EnumValue9) + field652: String @Directive2 @Directive7(argument6 : "stringValue1011") @Directive8(argument7 : EnumValue9) + field653: String @Directive2 @Directive7(argument6 : "stringValue1013") @Directive8(argument7 : EnumValue9) + field654: String @Directive2 @Directive7(argument6 : "stringValue1015") @Directive8(argument7 : EnumValue9) + field655: Object156 @Directive2 @Directive7(argument6 : "stringValue1017") @Directive8(argument7 : EnumValue9) + field656: Enum51 @Directive2 @Directive7(argument6 : "stringValue1019") @Directive8(argument7 : EnumValue9) + field657: String @Directive2 @Directive7(argument6 : "stringValue1025") @Directive8(argument7 : EnumValue9) + field658: ID! + field659(argument54: InputObject2!, argument55: Enum43!, argument56: [Enum44!]!, argument57: InputObject2!): [Object157!] @Directive2 @Directive7(argument6 : "stringValue1027") @Directive8(argument7 : EnumValue9) + field660(argument58: Enum46, argument59: InputObject2!, argument60: [Enum44!]!, argument61: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue1029") @Directive8(argument7 : EnumValue9) + field661: String @Directive2 @Directive7(argument6 : "stringValue1031") @Directive8(argument7 : EnumValue9) + field662: Enum50 @Directive2 @Directive7(argument6 : "stringValue1033") @Directive8(argument7 : EnumValue9) + field663: [Enum52!] @Directive2 @Directive7(argument6 : "stringValue1035") @Directive8(argument7 : EnumValue9) + field664: Enum53 @Directive2 @Directive7(argument6 : "stringValue1041") @Directive8(argument7 : EnumValue9) + field665: Scalar2 @Directive2 @Directive7(argument6 : "stringValue1047") @Directive8(argument7 : EnumValue9) + field666: Enum47 @Directive2 @Directive7(argument6 : "stringValue1049") @Directive8(argument7 : EnumValue9) + field667: String @Directive2 @Directive7(argument6 : "stringValue1051") @Directive8(argument7 : EnumValue9) + field668: Enum48 @Directive2 @Directive7(argument6 : "stringValue1053") @Directive8(argument7 : EnumValue9) + field669: String @Directive2 @Directive7(argument6 : "stringValue1055") @Directive8(argument7 : EnumValue9) + field670: Scalar3 @Directive2 @Directive7(argument6 : "stringValue1057") @Directive8(argument7 : EnumValue9) + field671: String @Directive2 @Directive7(argument6 : "stringValue1059") @Directive8(argument7 : EnumValue9) +} + +type Object155 @Directive9(argument8 : "stringValue880") { + field601: Object992 @Directive2 @Directive7(argument6 : "stringValue881") @Directive8(argument7 : EnumValue9) + field602: Float @Directive2 @Directive7(argument6 : "stringValue883") @Directive8(argument7 : EnumValue9) + field603: String @Directive2 @Directive7(argument6 : "stringValue885") @Directive8(argument7 : EnumValue9) + field604: String @Directive2 @Directive7(argument6 : "stringValue887") @Directive8(argument7 : EnumValue9) + field605: Scalar3 @Directive2 @Directive7(argument6 : "stringValue889") @Directive8(argument7 : EnumValue9) + field606: Float @Directive2 @Directive7(argument6 : "stringValue891") @Directive8(argument7 : EnumValue9) + field607: String @Directive7(argument6 : "stringValue893") @Directive8(argument7 : EnumValue9) + field608: Object156 @Directive2 @Directive7(argument6 : "stringValue895") @Directive8(argument7 : EnumValue9) + field638: ID! + field639: String @Directive2 @Directive7(argument6 : "stringValue981") @Directive8(argument7 : EnumValue9) + field640(argument46: InputObject2!, argument47: Enum43!, argument48: [Enum44!]!, argument49: InputObject2!): [Object157!] @Directive2 @Directive7(argument6 : "stringValue983") @Directive8(argument7 : EnumValue9) + field641(argument50: Enum46, argument51: InputObject2!, argument52: [Enum44!]!, argument53: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue985") @Directive8(argument7 : EnumValue9) + field642: String @Directive2 @Directive7(argument6 : "stringValue987") @Directive8(argument7 : EnumValue9) + field643: Enum50 @Directive2 @Directive7(argument6 : "stringValue989") @Directive8(argument7 : EnumValue9) + field644: Scalar3 @Directive2 @Directive7(argument6 : "stringValue995") @Directive8(argument7 : EnumValue9) + field645: Scalar2 @Directive2 @Directive7(argument6 : "stringValue997") @Directive8(argument7 : EnumValue9) + field646: Enum47 @Directive2 @Directive7(argument6 : "stringValue999") @Directive8(argument7 : EnumValue9) + field647: String @Directive7(argument6 : "stringValue1001") @Directive8(argument7 : EnumValue9) + field648: Enum48 @Directive7(argument6 : "stringValue1003") @Directive8(argument7 : EnumValue9) + field649: Object154 @Directive2 @Directive7(argument6 : "stringValue1005") @Directive8(argument7 : EnumValue9) + field650: Scalar3 @Directive2 @Directive7(argument6 : "stringValue1007") @Directive8(argument7 : EnumValue9) + field651: String @Directive2 @Directive7(argument6 : "stringValue1009") @Directive8(argument7 : EnumValue9) +} + +type Object156 @Directive9(argument8 : "stringValue898") { + field609: Object992 @Directive2 @Directive7(argument6 : "stringValue899") @Directive8(argument7 : EnumValue9) + field610: String @Directive2 @Directive7(argument6 : "stringValue901") @Directive8(argument7 : EnumValue9) + field611: Scalar3 @Directive2 @Directive7(argument6 : "stringValue903") @Directive8(argument7 : EnumValue9) + field612: String @Directive2 @Directive7(argument6 : "stringValue905") @Directive8(argument7 : EnumValue9) + field613: String @Directive2 @Directive7(argument6 : "stringValue907") @Directive8(argument7 : EnumValue9) + field614: ID! + field615: Scalar3 @Directive2 @Directive7(argument6 : "stringValue909") @Directive8(argument7 : EnumValue9) + field616: Scalar3 @Directive2 @Directive7(argument6 : "stringValue911") @Directive8(argument7 : EnumValue9) + field617: Float @Directive2 @Directive7(argument6 : "stringValue913") @Directive8(argument7 : EnumValue9) + field618: Scalar3 @Directive2 @Directive7(argument6 : "stringValue915") @Directive8(argument7 : EnumValue9) + field619(argument38: InputObject2!, argument39: Enum43!, argument40: [Enum44!]!, argument41: InputObject2!): [Object157!] @Directive2 @Directive7(argument6 : "stringValue917") @Directive8(argument7 : EnumValue9) + field629(argument42: Enum46, argument43: InputObject2!, argument44: [Enum44!]!, argument45: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue947") @Directive8(argument7 : EnumValue9) + field630: String @Directive2 @Directive7(argument6 : "stringValue953") @Directive8(argument7 : EnumValue9) + field631: Scalar3 @Directive2 @Directive7(argument6 : "stringValue955") @Directive8(argument7 : EnumValue9) + field632: Scalar2 @Directive2 @Directive7(argument6 : "stringValue957") @Directive8(argument7 : EnumValue9) + field633: Enum47 @Directive2 @Directive7(argument6 : "stringValue959") @Directive8(argument7 : EnumValue9) + field634: String @Directive2 @Directive7(argument6 : "stringValue965") @Directive8(argument7 : EnumValue9) + field635: Enum48 @Directive2 @Directive7(argument6 : "stringValue967") @Directive8(argument7 : EnumValue9) + field636: Enum49 @Directive2 @Directive7(argument6 : "stringValue973") @Directive8(argument7 : EnumValue9) + field637: String @Directive2 @Directive7(argument6 : "stringValue979") @Directive8(argument7 : EnumValue9) +} + +type Object157 @Directive10(argument10 : "stringValue934", argument9 : "stringValue933") { + field620: [Object158!]! @Directive2 + field628: String! @Directive2 +} + +type Object158 @Directive10(argument10 : "stringValue938", argument9 : "stringValue937") { + field621: Object159 @Directive2 + field626: Enum45! @Directive2 + field627: Float @Directive2 +} + +type Object159 @Directive10(argument10 : "stringValue942", argument9 : "stringValue941") { + field622: Boolean! @Directive2 + field623: Scalar3! @Directive2 + field624: String! @Directive2 + field625: Scalar3 @Directive2 +} + +type Object16 @Directive10(argument10 : "stringValue182", argument9 : "stringValue181") { + field83: Enum24! + field84: Scalar3! +} + +type Object160 @Directive9(argument8 : "stringValue1074") { + field676: ID! + field677(argument62: Enum46, argument63: InputObject2!, argument64: [Enum44!]!, argument65: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue1075") @Directive8(argument7 : EnumValue9) +} + +type Object161 @Directive10(argument10 : "stringValue1106", argument9 : "stringValue1105") { + field690: [Object162!]! +} + +type Object162 { + field691: Enum56! + field692: Object163! +} + +type Object163 @Directive10(argument10 : "stringValue1114", argument9 : "stringValue1113") { + field693: Scalar3 + field694: Scalar3 + field695: Scalar3 +} + +type Object164 @Directive9(argument8 : "stringValue1118") { + field697: Object165! @Directive7(argument6 : "stringValue1119") @Directive8(argument7 : EnumValue9) + field707: Object170! @Directive7(argument6 : "stringValue1159") @Directive8(argument7 : EnumValue9) + field835: ID! + field836: Union27! @Directive7(argument6 : "stringValue1487") @Directive8(argument7 : EnumValue9) + field839: Enum73! @Directive7(argument6 : "stringValue1501") @Directive8(argument7 : EnumValue9) + field840: Object410! @Directive7(argument6 : "stringValue1503") @Directive8(argument7 : EnumValue9) @deprecated + field841: Union6 @Directive7(argument6 : "stringValue1505") @Directive8(argument7 : EnumValue9) @deprecated + field842: Object44! @Directive7(argument6 : "stringValue1507") @Directive8(argument7 : EnumValue9) +} + +type Object165 @Directive9(argument8 : "stringValue1122") { + field698: ID! + field699: Union16 @Directive7(argument6 : "stringValue1123") @Directive8(argument7 : EnumValue9) + field703: Union17 @Directive7(argument6 : "stringValue1141") @Directive8(argument7 : EnumValue9) +} + +type Object166 @Directive10(argument10 : "stringValue1132", argument9 : "stringValue1131") { + field700: Boolean! @deprecated +} + +type Object167 @Directive10(argument10 : "stringValue1136", argument9 : "stringValue1135") { + field701: String + field702: Enum57! +} + +type Object168 @Directive10(argument10 : "stringValue1150", argument9 : "stringValue1149") { + field704: Boolean! @deprecated +} + +type Object169 @Directive10(argument10 : "stringValue1154", argument9 : "stringValue1153") { + field705: String + field706: Enum58! +} + +type Object17 @Directive10(argument10 : "stringValue196", argument9 : "stringValue195") { + field86: Enum25! + field87: String +} + +type Object170 @Directive9(argument8 : "stringValue1162") { + field708: Object422! @Directive2 @Directive7(argument6 : "stringValue1163") @Directive8(argument7 : EnumValue9) + field709: Enum59! @Directive7(argument6 : "stringValue1165") @Directive8(argument7 : EnumValue9) @deprecated + field710: Object171! @Directive7(argument6 : "stringValue1171") @Directive8(argument7 : EnumValue9) + field729: Object410! @Directive7(argument6 : "stringValue1247") @Directive8(argument7 : EnumValue9) @deprecated + field730: Union6 @Directive7(argument6 : "stringValue1249") @Directive8(argument7 : EnumValue9) @deprecated + field731: Object44! @Directive7(argument6 : "stringValue1251") @Directive8(argument7 : EnumValue9) + field732: Object422! @Directive7(argument6 : "stringValue1253") @Directive8(argument7 : EnumValue9) + field733: Scalar3! @Directive7(argument6 : "stringValue1255") @Directive8(argument7 : EnumValue9) + field734: Object410! @Directive7(argument6 : "stringValue1257") @Directive8(argument7 : EnumValue9) @deprecated + field735: Union6 @Directive7(argument6 : "stringValue1259") @Directive8(argument7 : EnumValue9) @deprecated + field736: Object44! @Directive7(argument6 : "stringValue1261") @Directive8(argument7 : EnumValue9) + field737: Object128 @Directive7(argument6 : "stringValue1263") @Directive8(argument7 : EnumValue9) + field738: Enum64 @Directive7(argument6 : "stringValue1265") @Directive8(argument7 : EnumValue9) + field739: Object128! @Directive7(argument6 : "stringValue1271") @Directive8(argument7 : EnumValue9) + field740: Enum64! @Directive7(argument6 : "stringValue1273") @Directive8(argument7 : EnumValue9) + field741: String @Directive7(argument6 : "stringValue1275") @Directive8(argument7 : EnumValue9) + field742: ID! + field743: Enum65! @Directive7(argument6 : "stringValue1277") @Directive8(argument7 : EnumValue9) + field744: Union22! @Directive7(argument6 : "stringValue1283") @Directive8(argument7 : EnumValue9) + field755: Boolean @Directive7(argument6 : "stringValue1307") @Directive8(argument7 : EnumValue9) @deprecated + field756: Enum67! @Directive7(argument6 : "stringValue1309") @Directive8(argument7 : EnumValue9) + field757: Union23! @Directive7(argument6 : "stringValue1315") @Directive8(argument7 : EnumValue9) + field781: Int! @Directive7(argument6 : "stringValue1389") @Directive8(argument7 : EnumValue9) + field782(argument70: String!): [Object164!]! @Directive7(argument6 : "stringValue1391") @Directive8(argument7 : EnumValue9) + field783: [Object410!]! @Directive7(argument6 : "stringValue1393") @Directive8(argument7 : EnumValue9) @deprecated + field784: [Union6] @Directive7(argument6 : "stringValue1395") @Directive8(argument7 : EnumValue9) @deprecated + field785: [Object44!]! @Directive7(argument6 : "stringValue1397") @Directive8(argument7 : EnumValue9) + field786(argument71: Int, argument72: String): Object193! @Directive7(argument6 : "stringValue1399") @Directive8(argument7 : EnumValue9) + field791: Object422! @Directive2 @Directive7(argument6 : "stringValue1401") @Directive8(argument7 : EnumValue9) + field792: Union26! @Directive7(argument6 : "stringValue1403") @Directive8(argument7 : EnumValue9) @deprecated + field796: Object196 @Directive7(argument6 : "stringValue1421") @Directive8(argument7 : EnumValue9) + field824: Int! @Directive7(argument6 : "stringValue1463") @Directive8(argument7 : EnumValue9) + field825(argument77: Int, argument78: String): Object193! @Directive7(argument6 : "stringValue1465") @Directive8(argument7 : EnumValue9) + field826: Object422! @Directive2 @Directive7(argument6 : "stringValue1467") @Directive8(argument7 : EnumValue9) + field827: String! @Directive7(argument6 : "stringValue1469") @Directive8(argument7 : EnumValue9) + field828: Object422! @Directive7(argument6 : "stringValue1471") @Directive8(argument7 : EnumValue9) + field829: Scalar1! + field830: Enum73! @Directive7(argument6 : "stringValue1473") @Directive8(argument7 : EnumValue9) @deprecated + field831: [Object201!]! @Directive7(argument6 : "stringValue1479") @Directive8(argument7 : EnumValue9) + field832(argument79: Scalar2!): Object164! @Directive7(argument6 : "stringValue1481") @Directive8(argument7 : EnumValue9) + field833(argument80: String!): [Object164!]! @Directive7(argument6 : "stringValue1483") @Directive8(argument7 : EnumValue9) + field834: Object164 @Directive7(argument6 : "stringValue1485") @Directive8(argument7 : EnumValue9) +} + +type Object171 @Directive9(argument8 : "stringValue1174") { + field711: ID! + field712: Union18! @Directive7(argument6 : "stringValue1175") @Directive8(argument7 : EnumValue9) + field716: Union19! @Directive7(argument6 : "stringValue1193") @Directive8(argument7 : EnumValue9) + field720: Union20! @Directive7(argument6 : "stringValue1211") @Directive8(argument7 : EnumValue9) + field724: Union21! @Directive7(argument6 : "stringValue1229") @Directive8(argument7 : EnumValue9) @deprecated + field728: Scalar1! +} + +type Object172 @Directive10(argument10 : "stringValue1184", argument9 : "stringValue1183") { + field713: Boolean! @deprecated +} + +type Object173 @Directive10(argument10 : "stringValue1188", argument9 : "stringValue1187") { + field714: String + field715: Enum60! +} + +type Object174 @Directive10(argument10 : "stringValue1202", argument9 : "stringValue1201") { + field717: Boolean! @deprecated +} + +type Object175 @Directive10(argument10 : "stringValue1206", argument9 : "stringValue1205") { + field718: String + field719: Enum61! +} + +type Object176 @Directive10(argument10 : "stringValue1220", argument9 : "stringValue1219") { + field721: Boolean! @deprecated +} + +type Object177 @Directive10(argument10 : "stringValue1224", argument9 : "stringValue1223") { + field722: String + field723: Enum62! +} + +type Object178 @Directive10(argument10 : "stringValue1238", argument9 : "stringValue1237") { + field725: Boolean! @deprecated +} + +type Object179 @Directive10(argument10 : "stringValue1242", argument9 : "stringValue1241") { + field726: String + field727: Enum63! +} + +type Object18 @Directive10(argument10 : "stringValue210", argument9 : "stringValue209") { + field89: String + field90: Enum26! +} + +type Object180 @Directive9(argument8 : "stringValue1290") { + field745: ID! + field746: Int! @Directive7(argument6 : "stringValue1291") @Directive8(argument7 : EnumValue9) + field747: Scalar1! + field748(argument66: Int, argument67: String): Object181! @Directive7(argument6 : "stringValue1293") @Directive8(argument7 : EnumValue9) +} + +type Object181 { + field749: [Object164!]! + field750: Object182! +} + +type Object182 @Directive10(argument10 : "stringValue1298", argument9 : "stringValue1297") { + field751: String + field752: String +} + +type Object183 @Directive10(argument10 : "stringValue1302", argument9 : "stringValue1301") { + field753: String + field754: Enum66! +} + +type Object184 @Directive9(argument8 : "stringValue1322") { + field758: ID! + field759: Int! @Directive7(argument6 : "stringValue1323") @Directive8(argument7 : EnumValue9) + field760(argument68: Int, argument69: String): Object185! @Directive7(argument6 : "stringValue1325") @Directive8(argument7 : EnumValue9) + field778: Scalar1! +} + +type Object185 { + field761: [Object186!]! + field777: Object182! +} + +type Object186 @Directive9(argument8 : "stringValue1328") { + field762: Object187! @Directive7(argument6 : "stringValue1329") @Directive8(argument7 : EnumValue9) + field772: Scalar3! @Directive7(argument6 : "stringValue1369") @Directive8(argument7 : EnumValue9) + field773: ID! + field774: Scalar3 @Directive7(argument6 : "stringValue1371") @Directive8(argument7 : EnumValue9) + field775: Enum70! @Directive7(argument6 : "stringValue1373") @Directive8(argument7 : EnumValue9) + field776: Object164! @Directive7(argument6 : "stringValue1379") @Directive8(argument7 : EnumValue9) +} + +type Object187 @Directive9(argument8 : "stringValue1332") { + field763: ID! + field764: Union24 @Directive7(argument6 : "stringValue1333") @Directive8(argument7 : EnumValue9) + field768: Union25 @Directive7(argument6 : "stringValue1351") @Directive8(argument7 : EnumValue9) +} + +type Object188 @Directive10(argument10 : "stringValue1342", argument9 : "stringValue1341") { + field765: Boolean! @deprecated +} + +type Object189 @Directive10(argument10 : "stringValue1346", argument9 : "stringValue1345") { + field766: String + field767: Enum68! +} + +type Object19 @Directive10(argument10 : "stringValue218", argument9 : "stringValue217") { + field3548: [Object819!] + field91: [Scalar2!] + field92: Object20 +} + +type Object190 @Directive10(argument10 : "stringValue1360", argument9 : "stringValue1359") { + field769: Boolean! @deprecated +} + +type Object191 @Directive10(argument10 : "stringValue1364", argument9 : "stringValue1363") { + field770: String + field771: Enum69! +} + +type Object192 @Directive10(argument10 : "stringValue1384", argument9 : "stringValue1383") { + field779: String + field780: Enum71! +} + +type Object193 { + field787: [Object410!]! @deprecated + field788: [Union6] @deprecated + field789: [Object44!]! + field790: Object182! +} + +type Object194 @Directive10(argument10 : "stringValue1412", argument9 : "stringValue1411") { + field793: Boolean! @deprecated +} + +type Object195 @Directive10(argument10 : "stringValue1416", argument9 : "stringValue1415") { + field794: Enum65! + field795: Enum72! +} + +type Object196 @Directive9(argument8 : "stringValue1424") { + field797: ID! + field798: Scalar1! + field799: Int! @Directive7(argument6 : "stringValue1425") @Directive8(argument7 : EnumValue9) + field800(argument73: Int, argument74: String): Object197! @Directive7(argument6 : "stringValue1427") @Directive8(argument7 : EnumValue9) +} + +type Object197 { + field801: [Object198!]! + field823: Object182! +} + +type Object198 @Directive9(argument8 : "stringValue1430") { + field802: ID! + field803: Int! @Directive7(argument6 : "stringValue1431") @Directive8(argument7 : EnumValue9) + field804: Scalar3! @Directive7(argument6 : "stringValue1433") @Directive8(argument7 : EnumValue9) + field805(argument75: Int, argument76: String): Object199! @Directive7(argument6 : "stringValue1435") @Directive8(argument7 : EnumValue9) + field819: Scalar1! + field820: Object152! @Directive7(argument6 : "stringValue1457") @Directive8(argument7 : EnumValue9) @deprecated + field821: Union8 @Directive7(argument6 : "stringValue1459") @Directive8(argument7 : EnumValue9) @deprecated + field822: Object114! @Directive7(argument6 : "stringValue1461") @Directive8(argument7 : EnumValue9) +} + +type Object199 { + field806: [Object200!]! + field818: Object182! +} + +type Object2 @Directive9(argument8 : "stringValue12") { + field5: String @Directive7(argument6 : "stringValue13") @Directive8(argument7 : EnumValue9) + field6: Object1 @Directive7(argument6 : "stringValue15") @Directive8(argument7 : EnumValue9) + field7: Scalar2 @Directive7(argument6 : "stringValue17") @Directive8(argument7 : EnumValue9) + field8: ID! + field9: String @Directive7(argument6 : "stringValue19") @Directive8(argument7 : EnumValue9) +} + +type Object20 @Directive10(argument10 : "stringValue222", argument9 : "stringValue221") { + field3543: Object817! + field93: Object21! @deprecated +} + +type Object200 @Directive9(argument8 : "stringValue1438") { + field807: Scalar3! @Directive7(argument6 : "stringValue1439") @Directive8(argument7 : EnumValue9) + field808: ID! + field809: Object164! @Directive7(argument6 : "stringValue1441") @Directive8(argument7 : EnumValue9) + field810: Object201! @Directive7(argument6 : "stringValue1443") @Directive8(argument7 : EnumValue9) + field815: Object152! @Directive7(argument6 : "stringValue1451") @Directive8(argument7 : EnumValue9) @deprecated + field816: Union8 @Directive7(argument6 : "stringValue1453") @Directive8(argument7 : EnumValue9) @deprecated + field817: Object114! @Directive7(argument6 : "stringValue1455") @Directive8(argument7 : EnumValue9) +} + +type Object201 @Directive9(argument8 : "stringValue1446") { + field811: String @Directive7(argument6 : "stringValue1447") @Directive8(argument7 : EnumValue9) + field812: ID! + field813: String! @Directive7(argument6 : "stringValue1449") @Directive8(argument7 : EnumValue9) + field814: Scalar1! +} + +type Object202 @Directive10(argument10 : "stringValue1496", argument9 : "stringValue1495") { + field837: Boolean! @deprecated +} + +type Object203 @Directive10(argument10 : "stringValue1500", argument9 : "stringValue1499") { + field838: Object201! +} + +type Object204 { + field844: Object50 + field845: String + field846: String + field847: String + field848: String! +} + +type Object205 @Directive10(argument10 : "stringValue1516", argument9 : "stringValue1515") { + field850: [Object206!]! + field922: Object182! +} + +type Object206 @Directive9(argument8 : "stringValue1518") { + field851: Enum74 @Directive7(argument6 : "stringValue1519") @Directive8(argument7 : EnumValue9) + field852: Object207 @Directive7(argument6 : "stringValue1525") @Directive8(argument7 : EnumValue9) + field862: Boolean @Directive7(argument6 : "stringValue1547") @Directive8(argument7 : EnumValue9) + field863: Enum76 @Directive7(argument6 : "stringValue1549") @Directive8(argument7 : EnumValue9) + field864: Scalar3 @Directive7(argument6 : "stringValue1555") @Directive8(argument7 : EnumValue9) + field865: Object208 @Directive7(argument6 : "stringValue1557") @Directive8(argument7 : EnumValue9) + field874: Boolean @Directive7(argument6 : "stringValue1583") @Directive8(argument7 : EnumValue9) + field875: [Enum82!] @Directive2 @Directive7(argument6 : "stringValue1585") @Directive8(argument7 : EnumValue9) + field876: ID! + field877: Scalar3 @Directive2 @Directive7(argument6 : "stringValue1591") @Directive8(argument7 : EnumValue9) + field878: [Enum83!] @Directive2 @Directive7(argument6 : "stringValue1593") @Directive8(argument7 : EnumValue9) + field879: Boolean @Directive7(argument6 : "stringValue1599") @Directive8(argument7 : EnumValue9) @deprecated + field880: Object209 @Directive7(argument6 : "stringValue1601") @Directive8(argument7 : EnumValue9) + field896(argument86: Enum85): Object214 @Directive2 @Directive7(argument6 : "stringValue1623") @Directive8(argument7 : EnumValue9) + field912: Enum86 @Directive2 @Directive7(argument6 : "stringValue1653") @Directive8(argument7 : EnumValue9) + field913: Object105 @Directive7(argument6 : "stringValue1659") @Directive8(argument7 : EnumValue9) + field914: Scalar1! + field915: Object98 @Directive7(argument6 : "stringValue1661") @Directive8(argument7 : EnumValue9) + field916: Object152 @Directive7(argument6 : "stringValue1663") @Directive8(argument7 : EnumValue9) @deprecated + field917: Union8 @Directive7(argument6 : "stringValue1665") @Directive8(argument7 : EnumValue9) @deprecated + field918: Object114 @Directive7(argument6 : "stringValue1667") @Directive8(argument7 : EnumValue9) + field919: Object410 @Directive7(argument6 : "stringValue1669") @Directive8(argument7 : EnumValue9) @deprecated + field920: Union6 @Directive7(argument6 : "stringValue1671") @Directive8(argument7 : EnumValue9) @deprecated + field921: Object44 @Directive7(argument6 : "stringValue1673") @Directive8(argument7 : EnumValue9) @deprecated +} + +type Object207 @Directive9(argument8 : "stringValue1528") { + field853: String @Directive7(argument6 : "stringValue1529") @Directive8(argument7 : EnumValue9) + field854: [Enum75!] @Directive2 @Directive7(argument6 : "stringValue1531") @Directive8(argument7 : EnumValue9) + field855: Boolean @Directive7(argument6 : "stringValue1537") @Directive8(argument7 : EnumValue9) + field856: ID! + field857(argument84: Int, argument85: String): Object205 @Directive7(argument6 : "stringValue1539") @Directive8(argument7 : EnumValue9) + field858: Scalar3 @Directive7(argument6 : "stringValue1541") @Directive8(argument7 : EnumValue9) + field859: Scalar3 @Directive7(argument6 : "stringValue1543") @Directive8(argument7 : EnumValue9) + field860: Scalar3 @Directive7(argument6 : "stringValue1545") @Directive8(argument7 : EnumValue9) + field861: String! +} + +type Object208 @Directive10(argument10 : "stringValue1562", argument9 : "stringValue1561") { + field866: Enum77 + field867: Enum76 + field868: Enum78 + field869: [Enum79!] + field870: [Enum80!] + field871: Object98 + field872: Boolean + field873: Enum81 +} + +type Object209 @Directive10(argument10 : "stringValue1606", argument9 : "stringValue1605") { + field881: Object210 + field886: Object211 + field890: Object212 + field895: Scalar3 +} + +type Object21 @Directive9(argument8 : "stringValue224") { + field3531(argument259: Scalar2, argument260: Int, argument261: Scalar2): Union116 @Directive2 @Directive7(argument6 : "stringValue5576") @Directive8(argument7 : EnumValue9) + field3542: Scalar1! + field94: ID! + field95: Object22 @Directive7(argument6 : "stringValue225") @Directive8(argument7 : EnumValue9) +} + +type Object210 @Directive10(argument10 : "stringValue1610", argument9 : "stringValue1609") { + field882: Boolean + field883: Boolean + field884: [Enum82!] + field885: [Enum83!] +} + +type Object211 @Directive10(argument10 : "stringValue1614", argument9 : "stringValue1613") { + field887: [Enum82!] + field888: Enum84 + field889: [Enum83!] +} + +type Object212 @Directive10(argument10 : "stringValue1622", argument9 : "stringValue1621") { + field891: [Object213!]! + field894: String! +} + +type Object213 { + field892: Int! + field893: [Int!]! +} + +type Object214 @Directive10(argument10 : "stringValue1632", argument9 : "stringValue1631") { + field897: [Object215!] + field908: Object212 + field909: Object216! + field910: String! + field911: Boolean +} + +type Object215 { + field898: Int! + field899: [Object216!]! +} + +type Object216 @Directive10(argument10 : "stringValue1636", argument9 : "stringValue1635") { + field900: Boolean + field901: Union28! + field906: Int! + field907: String! +} + +type Object217 @Directive10(argument10 : "stringValue1644", argument9 : "stringValue1643") { + field902: [Object218!]! +} + +type Object218 @Directive10(argument10 : "stringValue1648", argument9 : "stringValue1647") { + field903: Int! + field904: String! +} + +type Object219 @Directive10(argument10 : "stringValue1652", argument9 : "stringValue1651") { + field905: [Object218!]! +} + +type Object22 @Directive10(argument10 : "stringValue230", argument9 : "stringValue229") { + field103: Scalar2 @Directive2 + field104: Object25 @Directive2 + field3525: Scalar2 @Directive2 + field3526: Enum242! @Directive2 + field3527: Object410 @deprecated + field3528: Union6 @deprecated + field3529: Object44 @Directive2 + field3530: String @Directive2 + field96: Boolean @Directive2 + field97: Object1057 @deprecated + field98: Object23 @Directive2 +} + +type Object220 @Directive10(argument10 : "stringValue1680", argument9 : "stringValue1679") { + field924: Object214 + field925: Object221 + field930: String! + field931: Object98 + field932: Enum88 + field933: Object206 + field934: Object98 + field935: String! +} + +type Object221 @Directive10(argument10 : "stringValue1684", argument9 : "stringValue1683") { + field926: Enum87 + field927: String + field928: String! + field929: String! +} + +type Object222 @Directive9(argument8 : "stringValue1700") { + field939: Object170! @Directive7(argument6 : "stringValue1701") @Directive8(argument7 : EnumValue9) + field940: ID! + field941: Union29! @Directive7(argument6 : "stringValue1703") @Directive8(argument7 : EnumValue9) + field944: Scalar1! +} + +type Object223 @Directive10(argument10 : "stringValue1712", argument9 : "stringValue1711") { + field942: Boolean! @deprecated +} + +type Object224 @Directive10(argument10 : "stringValue1716", argument9 : "stringValue1715") { + field943: Object201! +} + +type Object225 @Directive10(argument10 : "stringValue1724", argument9 : "stringValue1723") { + field947: Object410! @deprecated + field948: Union6 @deprecated + field949: Object44! +} + +type Object226 @Directive9(argument8 : "stringValue1730") { + field952: ID! + field953: Scalar1! +} + +type Object227 @Directive10(argument10 : "stringValue1736", argument9 : "stringValue1735") { + field955: Scalar2! +} + +type Object228 @Directive10(argument10 : "stringValue1742", argument9 : "stringValue1741") { + field957: Boolean! +} + +type Object229 @Directive10(argument10 : "stringValue1752", argument9 : "stringValue1751") { + field959: Scalar2! + field960: Int! +} + +type Object23 @Directive9(argument8 : "stringValue232") { + field102: String @deprecated + field99: Union4 @Directive2 @Directive7(argument6 : "stringValue233") @Directive8(argument7 : EnumValue9) +} + +type Object230 @Directive10(argument10 : "stringValue1756", argument9 : "stringValue1755") { + field961: String + field962: Enum89! +} + +type Object231 @Directive10(argument10 : "stringValue1770", argument9 : "stringValue1769") { + field964: Object232 + field967: Scalar2! +} + +type Object232 @Directive10(argument10 : "stringValue1774", argument9 : "stringValue1773") { + field965: [Scalar2!]! + field966: Scalar2 +} + +type Object233 @Directive9(argument8 : "stringValue1780") { + field1074: String! @Directive7(argument6 : "stringValue1905") @Directive8(argument7 : EnumValue9) + field1075: Boolean! @Directive7(argument6 : "stringValue1907") @Directive8(argument7 : EnumValue9) + field1076: Object258 @Directive5(argument4 : "stringValue1909") @Directive7(argument6 : "stringValue1910") @Directive8(argument7 : EnumValue9) + field1097: Object422 @Directive7(argument6 : "stringValue1945") @Directive8(argument7 : EnumValue9) + field1098: Object422 @Directive2 @Directive7(argument6 : "stringValue1947") @Directive8(argument7 : EnumValue9) + field1099: String! + field1100: Union32 @Directive7(argument6 : "stringValue1949") @Directive8(argument7 : EnumValue9) + field1101: String! @Directive7(argument6 : "stringValue1951") @Directive8(argument7 : EnumValue9) + field1102: Object258 @Directive5(argument4 : "stringValue1953") @Directive7(argument6 : "stringValue1954") @Directive8(argument7 : EnumValue9) + field1103: Object422 @Directive7(argument6 : "stringValue1957") @Directive8(argument7 : EnumValue9) + field1104: Object258 @Directive5(argument4 : "stringValue1959") @Directive7(argument6 : "stringValue1960") @Directive8(argument7 : EnumValue9) + field970: String @Directive7(argument6 : "stringValue1781") @Directive8(argument7 : EnumValue9) + field971: Boolean! @Directive7(argument6 : "stringValue1783") @Directive8(argument7 : EnumValue9) + field972: String @Directive7(argument6 : "stringValue1785") @Directive8(argument7 : EnumValue9) + field973: ID! + field974: Union32 @Directive7(argument6 : "stringValue1787") @Directive8(argument7 : EnumValue9) +} + +type Object234 @Directive10(argument10 : "stringValue1796", argument9 : "stringValue1795") { + field1066: Enum92! @Directive2 + field1067: Object257 + field1072: String + field1073: Object233! + field975: Object235 +} + +type Object235 @Directive10(argument10 : "stringValue1800", argument9 : "stringValue1799") { + field1064: String + field1065: String + field976: String + field977: String + field978: Object236 +} + +type Object236 @Directive10(argument10 : "stringValue1804", argument9 : "stringValue1803") { + field1020: Object246 + field1022: Object247 + field1030: Object249 + field1033: Object250 + field1036: Object251 + field1038: Object252 + field1047: Object253 + field1051: Object254 + field1055: Object255 + field1059: Object256 + field979: Object237 + field982: Object238 + field984: Object239 +} + +type Object237 @Directive10(argument10 : "stringValue1808", argument9 : "stringValue1807") { + field980: Int! + field981: Int! +} + +type Object238 @Directive10(argument10 : "stringValue1812", argument9 : "stringValue1811") { + field983: Enum90 +} + +type Object239 @Directive10(argument10 : "stringValue1820", argument9 : "stringValue1819") { + field985: String! + field986: String + field987: Union33 +} + +type Object24 @Directive10(argument10 : "stringValue242", argument9 : "stringValue241") { + field100: String + field101: Enum27! +} + +type Object240 @Directive10(argument10 : "stringValue1828", argument9 : "stringValue1827") { + field988: String + field989: Scalar2 + field990: String + field991: Boolean + field992: Scalar4 + field993: String + field994: String +} + +type Object241 @Directive10(argument10 : "stringValue1832", argument9 : "stringValue1831") { + field995: String! + field996: String! + field997: String! +} + +type Object242 @Directive10(argument10 : "stringValue1836", argument9 : "stringValue1835") { + field998: String! + field999: String! +} + +type Object243 @Directive10(argument10 : "stringValue1840", argument9 : "stringValue1839") { + field1000: String! +} + +type Object244 @Directive10(argument10 : "stringValue1844", argument9 : "stringValue1843") { + field1001: [Scalar2!] + field1002: [String!] + field1003: [Scalar2!] + field1004: String + field1005: Scalar2 + field1006: Boolean + field1007: [String!] + field1008: Scalar2 + field1009: String + field1010: String + field1011: Scalar4 + field1012: Enum91 + field1013: String + field1014: Scalar2 + field1015: [String!] + field1016: [Scalar2!] + field1017: String +} + +type Object245 @Directive10(argument10 : "stringValue1852", argument9 : "stringValue1851") { + field1018: String + field1019: String +} + +type Object246 @Directive10(argument10 : "stringValue1856", argument9 : "stringValue1855") { + field1021: Scalar2 +} + +type Object247 @Directive10(argument10 : "stringValue1860", argument9 : "stringValue1859") { + field1023: Object248 + field1026: String + field1027: String + field1028: Scalar2! + field1029: Scalar2 +} + +type Object248 @Directive10(argument10 : "stringValue1864", argument9 : "stringValue1863") { + field1024: Boolean + field1025: String +} + +type Object249 @Directive10(argument10 : "stringValue1868", argument9 : "stringValue1867") { + field1031: String + field1032: Int +} + +type Object25 @Directive10(argument10 : "stringValue250", argument9 : "stringValue249") { + field105: Scalar2 @Directive2 + field106: Object26 @Directive2 + field3507: Object813 @Directive2 + field3509: Object410 @deprecated + field3510: Union6 @deprecated + field3511: Object44 @Directive2 + field3512: Boolean @Directive2 + field3513: Boolean @Directive2 + field3514: Boolean @Directive2 + field3515: Scalar2 @Directive2 + field3516: String @Directive2 + field3517: [Object410!] @deprecated + field3518: [Union6] @deprecated + field3519: [Object44!] @Directive2 + field3520: Boolean @Directive2 + field3521: String @Directive2 + field3522: [Object410!] @deprecated + field3523: [Union6] @deprecated + field3524: [Object44!] @Directive2 +} + +type Object250 @Directive10(argument10 : "stringValue1872", argument9 : "stringValue1871") { + field1034: String! + field1035: String! +} + +type Object251 @Directive10(argument10 : "stringValue1876", argument9 : "stringValue1875") { + field1037: String +} + +type Object252 @Directive10(argument10 : "stringValue1880", argument9 : "stringValue1879") { + field1039: String + field1040: String + field1041: String + field1042: String + field1043: String + field1044: String + field1045: String + field1046: String +} + +type Object253 @Directive10(argument10 : "stringValue1884", argument9 : "stringValue1883") { + field1048: String + field1049: Boolean + field1050: String +} + +type Object254 @Directive10(argument10 : "stringValue1888", argument9 : "stringValue1887") { + field1052: String + field1053: String + field1054: String +} + +type Object255 @Directive10(argument10 : "stringValue1892", argument9 : "stringValue1891") { + field1056: String + field1057: String + field1058: String +} + +type Object256 @Directive10(argument10 : "stringValue1896", argument9 : "stringValue1895") { + field1060: String + field1061: String + field1062: Scalar4 + field1063: String +} + +type Object257 @Directive10(argument10 : "stringValue1904", argument9 : "stringValue1903") { + field1068: Object105 + field1069: [Object410!]! @deprecated + field1070: [Union6] @deprecated + field1071: [Object44!]! +} + +type Object258 @Directive10(argument10 : "stringValue1916", argument9 : "stringValue1915") { + field1077: String! + field1078: Union34! + field1089: Union32 + field1090: Union35 + field1096: Object261 +} + +type Object259 @Directive10(argument10 : "stringValue1924", argument9 : "stringValue1923") { + field1079: Object260! + field1088: [Object260!]! +} + +type Object26 @Directive10(argument10 : "stringValue254", argument9 : "stringValue253") { + field107: [Union5!]! @Directive2 + field1745: Scalar2! @Directive2 + field1746: Scalar2! @Directive2 + field1747: Object410! @deprecated + field3495: Union6 @deprecated + field3496: Object44! @Directive2 + field3497: Object410! @deprecated + field3498: Union6 @deprecated + field3499: Object44! @Directive2 + field3500: String! @Directive2 + field3501: [Object812!]! @Directive2 +} + +type Object260 @Directive10(argument10 : "stringValue1928", argument9 : "stringValue1927") { + field1080: String! + field1081: String! + field1082: Scalar3 + field1083: Object261 + field1087: Object422! +} + +type Object261 @Directive10(argument10 : "stringValue1932", argument9 : "stringValue1931") { + field1084: String + field1085: String + field1086: String +} + +type Object262 @Directive10(argument10 : "stringValue1940", argument9 : "stringValue1939") { + field1091: Object235 + field1092: String + field1093: String! +} + +type Object263 @Directive10(argument10 : "stringValue1944", argument9 : "stringValue1943") { + field1094: Object235 + field1095: Object233! +} + +type Object264 @Directive10(argument10 : "stringValue1968", argument9 : "stringValue1967") { + field1106: Object265 +} + +type Object265 @Directive10(argument10 : "stringValue1972", argument9 : "stringValue1971") { + field1107: [Object266!] +} + +type Object266 @Directive10(argument10 : "stringValue1976", argument9 : "stringValue1975") { + field1108: String! @deprecated + field1109: Enum93 + field1110: Scalar4 + field1111: Scalar4! + field1112: Scalar4! + field1113: Union36 +} + +type Object267 @Directive10(argument10 : "stringValue1988", argument9 : "stringValue1987") { + field1114: Object268! +} + +type Object268 @Directive10(argument10 : "stringValue1992", argument9 : "stringValue1991") { + field1115: String! +} + +type Object269 @Directive10(argument10 : "stringValue2000", argument9 : "stringValue1999") { + field1118: Object410! @deprecated + field1119: Union6 @deprecated + field1120: Object44! +} + +type Object27 @Directive10(argument10 : "stringValue262", argument9 : "stringValue261") { + field108: Object28! @Directive2 +} + +type Object270 @Directive10(argument10 : "stringValue2017", argument9 : "stringValue2016") { + field1128: Object29 @deprecated + field1129: String + field1130: Union37 + field1139: Object274 @deprecated + field1147: String + field1148: [Object276!] + field1151: Object277 + field1157: String + field1158: Boolean + field1159: Object278 + field1162: String + field1163: Scalar3 + field1164: Object279 + field1166: Object280 + field1169: [Scalar3!] + field1170: String @deprecated + field1171: Object50 + field1172: [Object281!] + field1176: Object50 + field1177: Scalar3 + field1178: Boolean + field1179: String + field1180: Object278 + field1181: String + field1182: String @deprecated + field1183: String @deprecated + field1184: String @deprecated + field1185: Boolean @deprecated + field1186: Boolean + field1187: Boolean + field1188: Boolean @deprecated + field1189: String + field1190: String + field1191: Object118 + field1192: Boolean + field1193: Boolean + field1194: Object282 + field1208: Object286 @deprecated + field1226: Scalar3 + field1227: Object152 @deprecated + field1228: String + field1229: Object290 + field1233: Union8 @deprecated + field1234: Object114 @deprecated + field1235: String + field1236: Scalar3 + field1237: Scalar3 + field1238: Boolean + field1239: Object152 @deprecated + field1240: Union8 @deprecated + field1241: Object114 + field1242: String + field1243: Object291 + field1246: Object292 + field1248: String + field1249: String + field1250: String + field1251: String + field1252: Boolean + field1253: Object50 + field1254: [String!] + field1255: String + field1256: String +} + +type Object271 @Directive10(argument10 : "stringValue2025", argument9 : "stringValue2024") { + field1131: [Object272!]! +} + +type Object272 @Directive10(argument10 : "stringValue2029", argument9 : "stringValue2028") { + field1132: Enum94! + field1133: Object410! @deprecated + field1134: Union6 @deprecated + field1135: Object44! +} + +type Object273 @Directive10(argument10 : "stringValue2037", argument9 : "stringValue2036") { + field1136: [Object410!]! @deprecated + field1137: [Union6] @deprecated + field1138: [Object44!]! +} + +type Object274 @Directive10(argument10 : "stringValue2041", argument9 : "stringValue2040") { + field1140: String + field1141: [Union38!] + field1145: String + field1146: Scalar3 +} + +type Object275 @Directive10(argument10 : "stringValue2049", argument9 : "stringValue2048") { + field1142: Object152! @deprecated + field1143: Union8 @deprecated + field1144: Object114! +} + +type Object276 @Directive10(argument10 : "stringValue2053", argument9 : "stringValue2052") { + field1149: String + field1150: String +} + +type Object277 @Directive10(argument10 : "stringValue2057", argument9 : "stringValue2056") { + field1152: Object410! @deprecated + field1153: Union6 @deprecated + field1154: Object44! + field1155: Boolean + field1156: Enum95! +} + +type Object278 @Directive10(argument10 : "stringValue2065", argument9 : "stringValue2064") { + field1160: [Float!] + field1161: String +} + +type Object279 @Directive10(argument10 : "stringValue2069", argument9 : "stringValue2068") { + field1165: String +} + +type Object28 @Directive9(argument8 : "stringValue264") { + field109: String @Directive7(argument6 : "stringValue265") @Directive8(argument7 : EnumValue9) + field110: ID! + field111: Object29 @Directive7(argument6 : "stringValue267") @Directive8(argument7 : EnumValue9) + field521: String! +} + +type Object280 @Directive10(argument10 : "stringValue2073", argument9 : "stringValue2072") { + field1167: String + field1168: String +} + +type Object281 @Directive10(argument10 : "stringValue2077", argument9 : "stringValue2076") { + field1173: Scalar2 + field1174: Scalar2 + field1175: Scalar2 +} + +type Object282 @Directive10(argument10 : "stringValue2081", argument9 : "stringValue2080") { + field1195: [Object283!] +} + +type Object283 @Directive10(argument10 : "stringValue2085", argument9 : "stringValue2084") { + field1196: Object284 +} + +type Object284 @Directive10(argument10 : "stringValue2089", argument9 : "stringValue2088") { + field1197: String + field1198: String + field1199: String + field1200: Object285 + field1203: String + field1204: Scalar3 + field1205: String + field1206: String + field1207: String +} + +type Object285 @Directive10(argument10 : "stringValue2093", argument9 : "stringValue2092") { + field1201: Float + field1202: Float +} + +type Object286 @Directive10(argument10 : "stringValue2097", argument9 : "stringValue2096") { + field1209: Object46 + field1210: String + field1211: [String!] + field1212: String + field1213: String + field1214: [Object287!] + field1217: String + field1218: Object288 + field1221: Object289 + field1225: [Object46!] +} + +type Object287 { + field1215: String! + field1216: String! +} + +type Object288 @Directive10(argument10 : "stringValue2101", argument9 : "stringValue2100") { + field1219: [Scalar3!] + field1220: String +} + +type Object289 @Directive10(argument10 : "stringValue2105", argument9 : "stringValue2104") { + field1222: Scalar2 + field1223: String + field1224: String +} + +type Object29 @Directive10(argument10 : "stringValue272", argument9 : "stringValue271") { + field112: [Object30!] + field136: Object37 + field144: Object41 @deprecated + field149: String + field150: String + field151: [Object410!] @deprecated + field152: [Union6] @deprecated + field157: [Object44!] + field160: [Object45!] @deprecated +} + +type Object290 @Directive10(argument10 : "stringValue2109", argument9 : "stringValue2108") { + field1230: String + field1231: String + field1232: String +} + +type Object291 @Directive10(argument10 : "stringValue2113", argument9 : "stringValue2112") { + field1244: Boolean + field1245: [String!] +} + +type Object292 @Directive10(argument10 : "stringValue2117", argument9 : "stringValue2116") { + field1247: String +} + +type Object293 @Directive10(argument10 : "stringValue2123", argument9 : "stringValue2122") { + field1258: Object128! +} + +type Object294 @Directive10(argument10 : "stringValue2145", argument9 : "stringValue2144") { + field1260: Boolean! @deprecated +} + +type Object295 @Directive10(argument10 : "stringValue2149", argument9 : "stringValue2148") { + field1261: [Object296!]! +} + +type Object296 { + field1262: Object297! + field1265: Object150! +} + +type Object297 @Directive10(argument10 : "stringValue2153", argument9 : "stringValue2152") { + field1263: Enum98 + field1264: Enum99! +} + +type Object298 @Directive10(argument10 : "stringValue2169", argument9 : "stringValue2168") { + field1268: [Object299!] +} + +type Object299 @Directive10(argument10 : "stringValue2173", argument9 : "stringValue2172") { + field1269: Int! + field1270: String + field1271: Float! + field1272: Int! + field1273: String +} + +type Object3 @Directive9(argument8 : "stringValue22") { + field10: Enum5 @Directive7(argument6 : "stringValue23") @Directive8(argument7 : EnumValue9) + field11: String @Directive7(argument6 : "stringValue29") @Directive8(argument7 : EnumValue9) + field12: ID! + field13: String! + field14: Enum6 @Directive7(argument6 : "stringValue31") @Directive8(argument7 : EnumValue9) + field15: String @Directive7(argument6 : "stringValue37") @Directive8(argument7 : EnumValue9) + field16: Scalar3 @Directive7(argument6 : "stringValue39") @Directive8(argument7 : EnumValue9) + field17: Scalar3 @Directive7(argument6 : "stringValue41") @Directive8(argument7 : EnumValue9) @deprecated +} + +type Object30 { + field113: String! + field114: Object31! +} + +type Object300 @Directive10(argument10 : "stringValue2183", argument9 : "stringValue2182") { + field1275: Enum101! @Directive2 + field1276: Float @Directive2 +} + +type Object301 { + field1279: String! + field1280: String! + field1281: String! +} + +type Object302 @Directive10(argument10 : "stringValue2197", argument9 : "stringValue2196") { + field1283: String + field1284: Enum102! +} + +type Object303 @Directive10(argument10 : "stringValue2217", argument9 : "stringValue2216") { + field1287: [Object304!]! + field1291: Object182! +} + +type Object304 @Directive10(argument10 : "stringValue2221", argument9 : "stringValue2220") { + field1288: Object152! @deprecated + field1289: Union8 @deprecated + field1290: Object114! +} + +type Object305 @Directive10(argument10 : "stringValue2233", argument9 : "stringValue2232") { + field1296: [Object306!] +} + +type Object306 { + field1297: Enum104! + field1298: Scalar3! +} + +type Object307 @Directive10(argument10 : "stringValue2243", argument9 : "stringValue2242") { + field1300: Enum104 +} + +type Object308 @Directive10(argument10 : "stringValue2249", argument9 : "stringValue2248") { + field1302: [Object306!]! + field1303: [Object309!]! +} + +type Object309 @Directive10(argument10 : "stringValue2253", argument9 : "stringValue2252") { + field1304: Enum104! + field1305: Object410! @deprecated + field1306: Union6 @deprecated + field1307: Object44! +} + +type Object31 @Directive10(argument10 : "stringValue276", argument9 : "stringValue275") { + field115: Boolean + field116: Float + field117: Object32 + field124: Object35 + field129: Scalar3 + field130: String + field131: String + field132: String + field133: Object36 +} + +type Object310 @Directive10(argument10 : "stringValue2275", argument9 : "stringValue2274") { + field1316: [Union42!]! @deprecated + field1317: [Union43] @deprecated + field1318: [Union44]! + field1319: Object182 +} + +type Object311 @Directive10(argument10 : "stringValue2291", argument9 : "stringValue2290") { + field1320: [Object312!]! +} + +type Object312 @Directive10(argument10 : "stringValue2295", argument9 : "stringValue2294") { + field1321: Enum105! + field1322: String! +} + +type Object313 @Directive10(argument10 : "stringValue2309", argument9 : "stringValue2308") { + field1326: String + field1327: Object314! + field1331: Scalar2! + field1332: Scalar2! + field1333: String +} + +type Object314 @Directive10(argument10 : "stringValue2313", argument9 : "stringValue2312") { + field1328: String + field1329: String + field1330: Scalar2! +} + +type Object315 @Directive10(argument10 : "stringValue2321", argument9 : "stringValue2320") { + field1336: Enum106 + field1337: Enum107! + field1338: Boolean + field1339: Object316 + field1350: Object105! + field1351: Enum108 + field1352: Enum109 @deprecated + field1353: Object319 + field1357: Object98 + field1358: Object98! +} + +type Object316 @Directive10(argument10 : "stringValue2333", argument9 : "stringValue2332") { + field1340: Int! + field1341: [Object317!] + field1348: String! + field1349: Int! +} + +type Object317 @Directive10(argument10 : "stringValue2337", argument9 : "stringValue2336") { + field1342: Float! + field1343: Object318! +} + +type Object318 @Directive10(argument10 : "stringValue2341", argument9 : "stringValue2340") { + field1344: Scalar4! + field1345: Scalar4! + field1346: Scalar4 + field1347: Scalar4! +} + +type Object319 @Directive10(argument10 : "stringValue2353", argument9 : "stringValue2352") { + field1354: Enum106 + field1355: String + field1356: Enum106 +} + +type Object32 @Directive10(argument10 : "stringValue280", argument9 : "stringValue279") { + field118: [Object33!]! +} + +type Object320 @Directive10(argument10 : "stringValue2375", argument9 : "stringValue2374") { + field1368: [Object321!]! + field1371: [Object321!]! + field1372: Boolean! + field1373: Int! +} + +type Object321 @Directive10(argument10 : "stringValue2379", argument9 : "stringValue2378") { + field1369: Int! + field1370: String! +} + +type Object322 { + field1377: Object323! + field1552: Scalar2! @deprecated + field1553: Scalar2 + field1554: Object360 + field1563: [Object152!] @deprecated + field1564: [Union8] @deprecated + field1565: [Object114!] +} + +type Object323 @Directive9(argument8 : "stringValue2387") { + field1378: ID! + field1379: Object324 @Directive7(argument6 : "stringValue2388") @Directive8(argument7 : EnumValue9) + field1551: Scalar1! +} + +type Object324 @Directive10(argument10 : "stringValue2393", argument9 : "stringValue2392") { + field1380: Object325 + field1386: Object326 + field1403: Boolean + field1404: String + field1405: Object326 + field1406: Object332 + field1413: Object334 + field1504: String + field1505: String + field1506: Object352 + field1509: String + field1510: Boolean + field1511: Boolean + field1512: Boolean + field1513: String + field1514: Object353 + field1516: Scalar3 + field1517: Object354 + field1520: Object355 + field1526: Boolean + field1527: Object356 + field1541: String + field1542: String + field1543: String + field1544: String + field1545: Scalar3 + field1546: String + field1547: [Object410!] @deprecated + field1548: [Union6] @deprecated + field1549: [Object44!] + field1550: String +} + +type Object325 @Directive10(argument10 : "stringValue2397", argument9 : "stringValue2396") { + field1381: String + field1382: String + field1383: String + field1384: String + field1385: Boolean +} + +type Object326 @Directive10(argument10 : "stringValue2401", argument9 : "stringValue2400") { + field1387: Object327 + field1393: Object329 + field1401: String + field1402: String +} + +type Object327 @Directive10(argument10 : "stringValue2405", argument9 : "stringValue2404") { + field1388: String + field1389: Object328 + field1392: String +} + +type Object328 @Directive10(argument10 : "stringValue2409", argument9 : "stringValue2408") { + field1390: Scalar3 + field1391: Scalar3 +} + +type Object329 @Directive10(argument10 : "stringValue2413", argument9 : "stringValue2412") { + field1394: [Object330!] +} + +type Object33 @Directive10(argument10 : "stringValue284", argument9 : "stringValue283") { + field119: Float! + field120: Object34! +} + +type Object330 { + field1395: String! + field1396: Object331! +} + +type Object331 @Directive10(argument10 : "stringValue2417", argument9 : "stringValue2416") { + field1397: Scalar3 + field1398: Scalar3 + field1399: Scalar3 + field1400: Scalar3 +} + +type Object332 @Directive10(argument10 : "stringValue2421", argument9 : "stringValue2420") { + field1407: Object333 + field1411: String + field1412: String +} + +type Object333 @Directive10(argument10 : "stringValue2425", argument9 : "stringValue2424") { + field1408: Scalar3 + field1409: String + field1410: Scalar3 +} + +type Object334 @Directive10(argument10 : "stringValue2429", argument9 : "stringValue2428") { + field1414: Object410 @deprecated + field1415: Union6 @deprecated + field1416: Object44 + field1417: String + field1418: Object335 + field1423: Object410 @deprecated + field1424: Union6 @deprecated + field1425: Object44 + field1426: String + field1427: Object336 + field1431: Object337 + field1438: Boolean + field1439: String + field1440: Boolean + field1441: Boolean! + field1442: Boolean + field1443: Boolean + field1444: String + field1445: String + field1446: String + field1447: Object340 + field1449: Boolean + field1450: Boolean + field1451: Object152 @deprecated + field1452: Union8 @deprecated + field1453: Object114 + field1454: Object410 @deprecated + field1455: Union6 @deprecated + field1456: Object44 + field1457: String + field1458: String + field1459: [String!] + field1460: Object341 + field1498: Object351 + field1501: String + field1502: String + field1503: [String!] +} + +type Object335 @Directive10(argument10 : "stringValue2433", argument9 : "stringValue2432") { + field1419: String + field1420: Object152 @deprecated + field1421: Union8 @deprecated + field1422: Object114 +} + +type Object336 @Directive10(argument10 : "stringValue2437", argument9 : "stringValue2436") { + field1428: String + field1429: String + field1430: String +} + +type Object337 @Directive10(argument10 : "stringValue2441", argument9 : "stringValue2440") { + field1432: Object338 + field1435: String + field1436: Object339 +} + +type Object338 @Directive10(argument10 : "stringValue2445", argument9 : "stringValue2444") { + field1433: String + field1434: String +} + +type Object339 @Directive10(argument10 : "stringValue2449", argument9 : "stringValue2448") { + field1437: String +} + +type Object34 @Directive10(argument10 : "stringValue288", argument9 : "stringValue287") { + field121: Scalar4! + field122: Scalar4! + field123: Scalar4! +} + +type Object340 @Directive10(argument10 : "stringValue2453", argument9 : "stringValue2452") { + field1448: String +} + +type Object341 @Directive10(argument10 : "stringValue2457", argument9 : "stringValue2456") { + field1461: Object342 + field1472: [Scalar2!] + field1473: Boolean + field1474: Boolean + field1475: Object344 + field1482: Scalar3 + field1483: Object347 + field1493: String + field1494: Object350 + field1497: [Scalar2!] +} + +type Object342 @Directive10(argument10 : "stringValue2461", argument9 : "stringValue2460") { + field1462: Object343 + field1466: String + field1467: String + field1468: String + field1469: Boolean + field1470: Boolean + field1471: Scalar3 +} + +type Object343 @Directive10(argument10 : "stringValue2465", argument9 : "stringValue2464") { + field1463: String + field1464: String + field1465: String +} + +type Object344 @Directive10(argument10 : "stringValue2469", argument9 : "stringValue2468") { + field1476: Boolean + field1477: [Object345!] + field1481: Boolean +} + +type Object345 { + field1478: String! + field1479: Object346! +} + +type Object346 @Directive10(argument10 : "stringValue2473", argument9 : "stringValue2472") { + field1480: Boolean! +} + +type Object347 @Directive10(argument10 : "stringValue2477", argument9 : "stringValue2476") { + field1484: [String!] + field1485: [String!] + field1486: [String!] + field1487: [String!] + field1488: [Object348!] +} + +type Object348 { + field1489: String! + field1490: Object349! +} + +type Object349 @Directive10(argument10 : "stringValue2481", argument9 : "stringValue2480") { + field1491: Scalar3 + field1492: Scalar3 +} + +type Object35 @Directive10(argument10 : "stringValue292", argument9 : "stringValue291") { + field125: String + field126: Scalar3 + field127: String + field128: Scalar3 +} + +type Object350 @Directive10(argument10 : "stringValue2485", argument9 : "stringValue2484") { + field1495: String + field1496: String +} + +type Object351 @Directive10(argument10 : "stringValue2489", argument9 : "stringValue2488") { + field1499: Scalar3 + field1500: Scalar3 +} + +type Object352 @Directive10(argument10 : "stringValue2493", argument9 : "stringValue2492") { + field1507: String + field1508: String +} + +type Object353 @Directive10(argument10 : "stringValue2497", argument9 : "stringValue2496") { + field1515: String +} + +type Object354 @Directive10(argument10 : "stringValue2501", argument9 : "stringValue2500") { + field1518: String + field1519: Boolean +} + +type Object355 @Directive10(argument10 : "stringValue2505", argument9 : "stringValue2504") { + field1521: Object410 @deprecated + field1522: String + field1523: Union6 @deprecated + field1524: Object44 + field1525: String +} + +type Object356 @Directive10(argument10 : "stringValue2509", argument9 : "stringValue2508") { + field1528: String! + field1529: [Object357!] + field1536: [String!] + field1537: Enum110! + field1538: String + field1539: String + field1540: String +} + +type Object357 @Directive10(argument10 : "stringValue2513", argument9 : "stringValue2512") { + field1530: Object358! + field1535: String +} + +type Object358 @Directive10(argument10 : "stringValue2517", argument9 : "stringValue2516") { + field1531: String! + field1532: Object359! + field1534: String! +} + +type Object359 @Directive10(argument10 : "stringValue2521", argument9 : "stringValue2520") { + field1533: String! +} + +type Object36 @Directive10(argument10 : "stringValue296", argument9 : "stringValue295") { + field134: String + field135: [String!] +} + +type Object360 @Directive10(argument10 : "stringValue2529", argument9 : "stringValue2528") { + field1555: Object361 + field1560: Object361 + field1561: String! + field1562: Object361 +} + +type Object361 @Directive10(argument10 : "stringValue2533", argument9 : "stringValue2532") { + field1556: Int! + field1557: Int! + field1558: Int! + field1559: Int! +} + +type Object362 { + field1567: String! + field1568: Object50! + field1569: String + field1570: String + field1571: String! + field1572: String + field1573: String! +} + +type Object363 @Directive10(argument10 : "stringValue2549", argument9 : "stringValue2548") { + field1579: Object410! @deprecated + field1580: Union6 @deprecated + field1581: Object44! +} + +type Object364 @Directive10(argument10 : "stringValue2559", argument9 : "stringValue2558") { + field1583: Enum111! +} + +type Object365 @Directive10(argument10 : "stringValue2573", argument9 : "stringValue2572") { + field1585: [Union47!]! @deprecated + field1586: [Union48] @deprecated + field1587: [Union49]! + field1588: Object182 +} + +type Object366 @Directive9(argument8 : "stringValue2589") { + field1590: Enum112 @Directive7(argument6 : "stringValue2590") @Directive8(argument7 : EnumValue9) + field1591: String @Directive7(argument6 : "stringValue2596") @Directive8(argument7 : EnumValue9) + field1592: Object367 @Directive7(argument6 : "stringValue2598") @Directive8(argument7 : EnumValue9) + field1596: Object368 @Directive7(argument6 : "stringValue2604") @Directive8(argument7 : EnumValue9) + field1598: ID! + field1599: Union50 @Directive7(argument6 : "stringValue2610") @Directive8(argument7 : EnumValue9) +} + +type Object367 @Directive10(argument10 : "stringValue2603", argument9 : "stringValue2602") { + field1593: Boolean + field1594: Boolean + field1595: Boolean +} + +type Object368 @Directive10(argument10 : "stringValue2609", argument9 : "stringValue2608") { + field1597: Boolean! @deprecated +} + +type Object369 @Directive10(argument10 : "stringValue2619", argument9 : "stringValue2618") { + field1600: Object370! + field1706: [Object370!] +} + +type Object37 @Directive10(argument10 : "stringValue300", argument9 : "stringValue299") { + field137: Object38 +} + +type Object370 @Directive10(argument10 : "stringValue2623", argument9 : "stringValue2622") { + field1601: [Union51!]! +} + +type Object371 @Directive10(argument10 : "stringValue2631", argument9 : "stringValue2630") { + field1602: [Object372!]! + field1623: Union52 + field1638: Boolean +} + +type Object372 @Directive10(argument10 : "stringValue2635", argument9 : "stringValue2634") { + field1603: Object128 + field1604: Object373 + field1607: String + field1608: Object373 + field1609: Boolean + field1610: Boolean + field1611: String! + field1612: Boolean + field1613: Boolean + field1614: Scalar2 + field1615: Object374 + field1618: Scalar2 + field1619: Object373 + field1620: Enum113! + field1621: String + field1622: String +} + +type Object373 @Directive10(argument10 : "stringValue2639", argument9 : "stringValue2638") { + field1605: String! + field1606: Boolean! +} + +type Object374 @Directive10(argument10 : "stringValue2643", argument9 : "stringValue2642") { + field1616: Scalar2 + field1617: Float +} + +type Object375 @Directive10(argument10 : "stringValue2655", argument9 : "stringValue2654") { + field1624: [Object372!]! +} + +type Object376 @Directive10(argument10 : "stringValue2659", argument9 : "stringValue2658") { + field1625: [Object372!]! + field1626: Object128! +} + +type Object377 @Directive10(argument10 : "stringValue2663", argument9 : "stringValue2662") { + field1627: Object378! +} + +type Object378 @Directive10(argument10 : "stringValue2667", argument9 : "stringValue2666") { + field1628: String! + field1629: String +} + +type Object379 @Directive10(argument10 : "stringValue2671", argument9 : "stringValue2670") { + field1630: Object128! + field1631: Object378! +} + +type Object38 @Directive10(argument10 : "stringValue304", argument9 : "stringValue303") { + field138: Object39 + field141: Object40 +} + +type Object380 @Directive10(argument10 : "stringValue2675", argument9 : "stringValue2674") { + field1632: [Object372!]! + field1633: Union53 + field1634: Object378 +} + +type Object381 @Directive10(argument10 : "stringValue2683", argument9 : "stringValue2682") { + field1635: Boolean + field1636: Object128 + field1637: String +} + +type Object382 @Directive10(argument10 : "stringValue2687", argument9 : "stringValue2686") { + field1639: [Object383!]! + field1647: Boolean +} + +type Object383 @Directive10(argument10 : "stringValue2691", argument9 : "stringValue2690") { + field1640: Enum114 + field1641: Enum115! + field1642: Union52 + field1643: Enum116 + field1644: Enum117 + field1645: Object373 + field1646: Boolean +} + +type Object384 @Directive10(argument10 : "stringValue2711", argument9 : "stringValue2710") { + field1648: Union52 + field1649: Object373! + field1650: Object373! +} + +type Object385 @Directive10(argument10 : "stringValue2715", argument9 : "stringValue2714") { + field1651: Union52 + field1652: Object128! + field1653: Object383 +} + +type Object386 @Directive10(argument10 : "stringValue2719", argument9 : "stringValue2718") { + field1654: Union52 + field1655: Object128! + field1656: Object387 +} + +type Object387 @Directive10(argument10 : "stringValue2723", argument9 : "stringValue2722") { + field1657: Object373 + field1658: Object373! +} + +type Object388 @Directive10(argument10 : "stringValue2727", argument9 : "stringValue2726") { + field1659: Union52 + field1660: String + field1661: Object410! @deprecated + field1662: Union6 @deprecated + field1663: Object44! +} + +type Object389 @Directive10(argument10 : "stringValue2731", argument9 : "stringValue2730") { + field1664: Object385! + field1665: [Object385!] +} + +type Object39 @Directive10(argument10 : "stringValue308", argument9 : "stringValue307") { + field139: String + field140: String +} + +type Object390 @Directive10(argument10 : "stringValue2735", argument9 : "stringValue2734") { + field1666: Union52 + field1667: Int + field1668: Object373 + field1669: Int + field1670: Object410 @deprecated + field1671: Union6 @deprecated + field1672: Object44 +} + +type Object391 { + field1673: Enum118 @Directive2 + field1674: Enum118 @Directive2 + field1675: [Union54!]! @Directive2 + field1700: [Object391!]! @Directive2 + field1701: Enum125 @Directive2 + field1702: Object402! @Directive2 +} + +type Object392 @Directive10(argument10 : "stringValue2747", argument9 : "stringValue2746") { + field1676: Union55! + field1678: Enum119! + field1679: String! +} + +type Object393 @Directive10(argument10 : "stringValue2755", argument9 : "stringValue2754") { + field1677: String! +} + +type Object394 @Directive10(argument10 : "stringValue2763", argument9 : "stringValue2762") { + field1680: Enum118! +} + +type Object395 @Directive10(argument10 : "stringValue2767", argument9 : "stringValue2766") { + field1681: String! + field1682: Enum120! + field1683: Object396! + field1686: String! +} + +type Object396 @Directive10(argument10 : "stringValue2775", argument9 : "stringValue2774") { + field1684: Int! + field1685: Int! +} + +type Object397 @Directive10(argument10 : "stringValue2779", argument9 : "stringValue2778") { + field1687: Union56! +} + +type Object398 @Directive10(argument10 : "stringValue2787", argument9 : "stringValue2786") { + field1688: Enum121! + field1689: String! + field1690: Enum122! +} + +type Object399 @Directive10(argument10 : "stringValue2799", argument9 : "stringValue2798") { + field1691: Enum118! + field1692: Enum123! + field1693: Enum124! + field1694: String! + field1695: Enum122! +} + +type Object4 { + field18(argument12: Enum4!, argument13: Scalar2!): Union1 @Directive2 @Directive7(argument6 : "stringValue43") @Directive8(argument7 : EnumValue8) + field28(argument14: Scalar2, argument15: Boolean, argument16: Enum10, argument17: Enum11, argument18: Enum12, argument19: Boolean): Enum13 @Directive7(argument6 : "stringValue85") @Directive8(argument7 : EnumValue13) + field29(argument20: Enum4!): Enum13 @Directive7(argument6 : "stringValue99") @Directive8(argument7 : EnumValue8) + field30(argument21: Scalar2!, argument22: Enum4!): Object11 @Directive7(argument6 : "stringValue101") @Directive8(argument7 : EnumValue8) + field3551(argument262: Enum4!, argument263: Scalar2!): Object820 @Directive7(argument6 : "stringValue5618") @Directive8(argument7 : EnumValue8) + field3553(argument264: Enum247!): Enum13 @Directive2 @Directive7(argument6 : "stringValue5628") @Directive8(argument7 : EnumValue13) + field3554(argument265: String!, argument266: Enum4!, argument267: InputObject6!): Object449 @Directive7(argument6 : "stringValue5634") @Directive8(argument7 : EnumValue8) + field3555(argument268: String!, argument269: Enum4!, argument270: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5644") @Directive8(argument7 : EnumValue8) + field3556(argument271: String!, argument272: Enum4!, argument273: [Scalar2!]!): Enum13 @Directive7(argument6 : "stringValue5646") @Directive8(argument7 : EnumValue8) + field3557(argument274: String!, argument275: Enum4!, argument276: InputObject6!, argument277: Scalar2!): Object449 @Directive7(argument6 : "stringValue5648") @Directive8(argument7 : EnumValue8) + field3558(argument278: String!): Enum13 @Directive7(argument6 : "stringValue5650") @Directive8(argument7 : EnumValue13) + field3559(argument279: [String!]! = [], argument280: Boolean! = true, argument281: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5652") @Directive8(argument7 : EnumValue13) + field3560(argument282: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5654") @Directive8(argument7 : EnumValue13) + field3561(argument283: InputObject8, argument284: Enum4!, argument285: Scalar2!): Object206 @Directive7(argument6 : "stringValue5656") @Directive8(argument7 : EnumValue8) @deprecated + field3562(argument286: InputObject8, argument287: Enum4!, argument288: Scalar2!): Union118 @Directive7(argument6 : "stringValue5686") @Directive8(argument7 : EnumValue8) + field3564(argument289: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5696") @Directive8(argument7 : EnumValue8) + field3565(argument290: InputObject9, argument291: InputObject10, argument292: Scalar2!, argument293: Enum4!, argument294: Scalar2, argument295: InputObject11): Object209 @Directive7(argument6 : "stringValue5698") @Directive8(argument7 : EnumValue8) + field3566(argument296: InputObject9, argument297: InputObject10, argument298: Scalar2!, argument299: Enum4!, argument300: Scalar2, argument301: InputObject11): Object822 @Directive7(argument6 : "stringValue5724") @Directive8(argument7 : EnumValue8) + field3574(argument302: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5738") @Directive8(argument7 : EnumValue8) + field3575(argument303: Enum4!, argument304: Scalar2!): Union119 @Directive7(argument6 : "stringValue5740") @Directive8(argument7 : EnumValue8) + field3580: Enum13 @Directive7(argument6 : "stringValue5770") @Directive8(argument7 : EnumValue6) + field3581(argument305: String!, argument306: Enum4!): Object654 @Directive7(argument6 : "stringValue5772") @Directive8(argument7 : EnumValue8) + field3582(argument307: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5774") @Directive8(argument7 : EnumValue6) + field3583(argument308: Scalar2!, argument309: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5776") @Directive8(argument7 : EnumValue6) + field3584(argument310: Scalar2!, argument311: Scalar2!): Enum13 @Directive7(argument6 : "stringValue5778") @Directive8(argument7 : EnumValue13) + field3585(argument312: Scalar2!, argument313: String!, argument314: Enum4!): Object654 @Directive7(argument6 : "stringValue5780") @Directive8(argument7 : EnumValue8) + field3586(argument315: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue5782") @Directive8(argument7 : EnumValue6) + field3587: Enum13 @Directive2 @Directive7(argument6 : "stringValue5784") @Directive8(argument7 : EnumValue13) + field3588(argument316: Scalar2!, argument317: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue5786") @Directive8(argument7 : EnumValue6) + field3589(argument318: Enum260!, argument319: Scalar2!, argument320: Enum4!): Object170 @Directive7(argument6 : "stringValue5788") @Directive8(argument7 : EnumValue8) @deprecated + field3590(argument321: Enum260! = EnumValue1897, argument322: Scalar2, argument323: Enum261, argument324: String, argument325: String!, argument326: Enum4!): Object170 @Directive7(argument6 : "stringValue5794") @Directive8(argument7 : EnumValue8) + field3591(argument327: String, argument328: Enum262, argument329: Enum263, argument330: String!, argument331: Enum4!): Union120 @Directive2 @Directive7(argument6 : "stringValue5800") @Directive8(argument7 : EnumValue8) + field3596(argument332: Scalar2!, argument333: Enum4!): Object170 @Directive7(argument6 : "stringValue5830") @Directive8(argument7 : EnumValue8) + field3597(argument334: Scalar2!, argument335: Scalar2!, argument336: Enum4!): Object170 @Directive7(argument6 : "stringValue5832") @Directive8(argument7 : EnumValue8) + field3598(argument337: Scalar2!, argument338: Enum4!): Object170 @Directive7(argument6 : "stringValue5834") @Directive8(argument7 : EnumValue8) + field3599(argument339: Scalar2!, argument340: Enum4!, argument341: Enum261!): Object170 @Directive7(argument6 : "stringValue5836") @Directive8(argument7 : EnumValue8) + field3600(argument342: Scalar2!, argument343: Enum4!): Object170 @Directive7(argument6 : "stringValue5838") @Directive8(argument7 : EnumValue8) + field3601(argument344: Scalar2!, argument345: String!, argument346: Enum4!): Object170 @Directive7(argument6 : "stringValue5840") @Directive8(argument7 : EnumValue8) + field3602(argument347: Scalar2!, argument348: Enum4!): Object170 @Directive7(argument6 : "stringValue5842") @Directive8(argument7 : EnumValue8) + field3603(argument349: Scalar2!, argument350: Enum4!, argument351: Scalar2!): Union121 @Directive7(argument6 : "stringValue5844") @Directive8(argument7 : EnumValue8) + field3606(argument352: Scalar2!, argument353: Enum4!): Union122 @Directive7(argument6 : "stringValue5858") @Directive8(argument7 : EnumValue8) + field3611(argument354: Scalar2!, argument355: Enum4!, argument356: Scalar2!): Union123 @Directive7(argument6 : "stringValue5880") @Directive8(argument7 : EnumValue8) + field3614(argument357: Scalar2!, argument358: Enum4!): Object170 @Directive7(argument6 : "stringValue5894") @Directive8(argument7 : EnumValue8) + field3615(argument359: Scalar2!, argument360: InputObject13!, argument361: Enum4!): Union124 @Directive7(argument6 : "stringValue5896") @Directive8(argument7 : EnumValue8) @deprecated + field3620(argument362: Scalar2!, argument363: Enum262!, argument364: Enum263!, argument365: Enum4!): Union125 @Directive7(argument6 : "stringValue5918") @Directive8(argument7 : EnumValue8) + field3623(argument366: Scalar2!, argument367: InputObject14!, argument368: Enum4!): Union124 @Directive7(argument6 : "stringValue5932") @Directive8(argument7 : EnumValue8) @deprecated + field3624(argument369: Scalar2!, argument370: String!, argument371: Enum4!): Object170 @Directive7(argument6 : "stringValue5942") @Directive8(argument7 : EnumValue8) + field3625(argument372: Scalar2!, argument373: Enum273!, argument374: Enum4!, argument375: Scalar2!): Object170 @Directive7(argument6 : "stringValue5944") @Directive8(argument7 : EnumValue8) + field3626(argument376: Scalar2!, argument377: String, argument378: String!, argument379: Enum4!): Object170 @Directive7(argument6 : "stringValue5950") @Directive8(argument7 : EnumValue8) + field3627(argument380: Scalar2!, argument381: Scalar2!, argument382: Enum4!): Object170 @Directive7(argument6 : "stringValue5952") @Directive8(argument7 : EnumValue8) + field3628(argument383: Scalar2!, argument384: String, argument385: String!, argument386: Scalar2!, argument387: Enum4!): Object170 @Directive7(argument6 : "stringValue5954") @Directive8(argument7 : EnumValue8) + field3629(argument388: Scalar2!, argument389: [Scalar2!]!, argument390: Enum4!): Object170 @Directive7(argument6 : "stringValue5956") @Directive8(argument7 : EnumValue8) + field3630(argument391: Enum4!, argument392: Scalar2!): Object170 @Directive7(argument6 : "stringValue5958") @Directive8(argument7 : EnumValue8) + field3631(argument393: Enum4!): Enum13 @Directive7(argument6 : "stringValue5960") @Directive8(argument7 : EnumValue8) + field3632(argument394: String!, argument395: [Scalar2!]!): Scalar2 @Directive7(argument6 : "stringValue5962") @Directive8(argument7 : EnumValue10) @deprecated + field3633(argument396: String!, argument397: [Scalar2!]!, argument398: Enum4!): Scalar2 @Directive7(argument6 : "stringValue5964") @Directive8(argument7 : EnumValue10) + field3634(argument399: InputObject15!, argument400: InputObject17!, argument401: Enum4!, argument402: InputObject18!): Union126 @Directive7(argument6 : "stringValue5966") @Directive8(argument7 : EnumValue8) + field3640(argument403: Scalar2!, argument404: [String!]!, argument405: String!, argument406: Enum4!): String @Directive2 @Directive7(argument6 : "stringValue6052") @Directive8(argument7 : EnumValue10) + field3641(argument407: String!, argument408: Enum278!, argument409: Enum4!): Union127 @Directive7(argument6 : "stringValue6054") @Directive8(argument7 : EnumValue8) + field3644(argument410: Scalar2, argument411: String, argument412: Enum279!, argument413: Boolean, argument414: Enum4!): Object841 @Directive7(argument6 : "stringValue6072") @Directive8(argument7 : EnumValue8) + field3656(argument415: Scalar2!, argument416: String!, argument417: [InputObject30!]!, argument418: Enum4!): Object842 @Directive2 @Directive7(argument6 : "stringValue6106") @Directive8(argument7 : EnumValue8) + field3683(argument419: InputObject44!, argument420: Enum4!, argument421: InputObject53!): Union130 @Directive2 @Directive7(argument6 : "stringValue6288") @Directive8(argument7 : EnumValue8) + field3689(argument422: InputObject54!, argument423: Scalar2!, argument424: String, argument425: Enum4!): Union131 @Directive2 @Directive7(argument6 : "stringValue6354") @Directive8(argument7 : EnumValue8) + field3698(argument426: Enum4!, argument427: Scalar2!): Object867 @Directive2 @Directive7(argument6 : "stringValue6392") @Directive8(argument7 : EnumValue8) + field3701(argument428: Scalar2!, argument429: Enum4!): Object868 @Directive7(argument6 : "stringValue6398") @Directive8(argument7 : EnumValue8) + field3712(argument430: Scalar2!, argument431: String, argument432: [InputObject55!]! = [], argument433: String!, argument434: Enum4!): Union132 @Directive7(argument6 : "stringValue6416") @Directive8(argument7 : EnumValue8) + field3719(argument435: Scalar2, argument436: InputObject56, argument437: Scalar2, argument438: Scalar2, argument439: String!, argument440: Enum300!): Object878 @Directive7(argument6 : "stringValue6454") @Directive8(argument7 : EnumValue8) @deprecated + field3729(argument441: Scalar2, argument442: InputObject56, argument443: Scalar2, argument444: Enum4!, argument445: Scalar2, argument446: String!, argument447: Enum300!): Object878 @Directive7(argument6 : "stringValue6496") @Directive8(argument7 : EnumValue8) + field3730(argument448: String!, argument449: Enum4!): Object884 @Directive2 @Directive7(argument6 : "stringValue6498") @Directive8(argument7 : EnumValue8) + field3763(argument452: Scalar2!, argument453: Scalar2!, argument454: InputObject57): Object889 @Directive7(argument6 : "stringValue6536") @Directive8(argument7 : EnumValue8) @deprecated + field3767(argument455: Scalar2!, argument456: Scalar2!, argument457: InputObject57, argument458: Enum4!): Object889 @Directive2 @Directive7(argument6 : "stringValue6554") @Directive8(argument7 : EnumValue8) + field3768(argument459: InputObject58, argument460: Enum304!, argument461: Enum4!, argument462: Scalar2!): Object891 @Directive2 @Directive7(argument6 : "stringValue6556") @Directive8(argument7 : EnumValue8) + field3770(argument463: String, argument464: InputObject58, argument465: Boolean! = false, argument466: Enum4!, argument467: Scalar2!): Object892 @Directive7(argument6 : "stringValue6574") @Directive8(argument7 : EnumValue8) + field3774(argument468: InputObject61!, argument469: Enum306!, argument470: Enum4!): Scalar2 @Directive7(argument6 : "stringValue6580") @Directive8(argument7 : EnumValue8) + field3775(argument471: [Scalar2!], argument472: [Scalar2!], argument473: Scalar2, argument474: Enum4!, argument475: String!): Object886 @Directive2 @Directive7(argument6 : "stringValue6598") @Directive8(argument7 : EnumValue8) + field3776(argument476: String, argument477: Enum307, argument478: String, argument479: InputObject63, argument480: String, argument481: InputObject64, argument482: InputObject65, argument483: InputObject58, argument484: InputObject66, argument485: InputObject67, argument486: InputObject69, argument487: Boolean! = false, argument488: InputObject71, argument489: InputObject72, argument490: Enum4!, argument491: [InputObject1!], argument492: InputObject73, argument493: String! = "stringValue6658"): Object893 @Directive7(argument6 : "stringValue6600") @Directive8(argument7 : EnumValue8) + field3780(argument494: InputObject64, argument495: String, argument496: Boolean, argument497: InputObject67, argument498: InputObject69, argument499: InputObject74, argument500: String, argument501: InputObject72, argument502: Enum4!, argument503: String! = "stringValue6669"): Union134 @Directive7(argument6 : "stringValue6663") @Directive8(argument7 : EnumValue8) + field3783(argument504: Scalar2, argument505: Scalar2, argument506: String!, argument507: Enum300!, argument508: String!): Object896 @Directive7(argument6 : "stringValue6682") @Directive8(argument7 : EnumValue8) @deprecated + field3785(argument509: Scalar2, argument510: Scalar2, argument511: String!, argument512: Enum300!, argument513: String!, argument514: Enum4!): Object896 @Directive2 @Directive7(argument6 : "stringValue6688") @Directive8(argument7 : EnumValue8) + field3786(argument515: InputObject75!, argument516: Enum4!, argument517: String!): Object806 @Directive2 @Directive7(argument6 : "stringValue6690") @Directive8(argument7 : EnumValue8) + field3787(argument518: Enum310, argument519: String!, argument520: Enum4!): Object897 @Directive7(argument6 : "stringValue6696") @Directive8(argument7 : EnumValue8) + field3789(argument521: String!, argument522: Boolean!, argument523: Enum311): Enum13 @Directive7(argument6 : "stringValue6706") @Directive8(argument7 : EnumValue13) + field3790(argument524: Enum4!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6712") @Directive8(argument7 : EnumValue8) + field3791(argument525: Scalar2!, argument526: Scalar2!): Enum13 @Directive7(argument6 : "stringValue6714") @Directive8(argument7 : EnumValue6) + field3792(argument527: [Scalar2!]!, argument528: Scalar2!): Enum13 @Directive7(argument6 : "stringValue6716") @Directive8(argument7 : EnumValue13) + field3793(argument529: Scalar2!): Enum13 @Directive7(argument6 : "stringValue6718") @Directive8(argument7 : EnumValue6) + field3794(argument530: String, argument531: String, argument532: Boolean, argument533: Enum4!, argument534: Enum312, argument535: String): Object11 @Directive7(argument6 : "stringValue6720") @Directive8(argument7 : EnumValue8) + field3795(argument536: [Scalar2!]!): Enum13 @Directive7(argument6 : "stringValue6726") @Directive8(argument7 : EnumValue13) + field3796(argument537: Scalar2!, argument538: String, argument539: String, argument540: Boolean, argument541: Enum312, argument542: String): Enum13 @Directive7(argument6 : "stringValue6728") @Directive8(argument7 : EnumValue13) + field3797(argument543: Scalar2!, argument544: Scalar2!, argument545: Enum4!): Object13 @Directive2 @Directive7(argument6 : "stringValue6730") @Directive8(argument7 : EnumValue8) + field3798(argument546: Scalar2!, argument547: String, argument548: Enum313, argument549: Enum314, argument550: Enum315, argument551: Enum316, argument552: Boolean, argument553: Int, argument554: Boolean, argument555: Enum11, argument556: String, argument557: String, argument558: Enum4!, argument559: Enum312, argument560: Boolean, argument561: String, argument562: String, argument563: Enum10): Object13 @Directive7(argument6 : "stringValue6732") @Directive8(argument7 : EnumValue8) + field3799(argument564: Scalar2!, argument565: String, argument566: Enum313, argument567: Enum314, argument568: Enum315, argument569: Enum316, argument570: Boolean, argument571: Int, argument572: Boolean, argument573: Enum11, argument574: String, argument575: String, argument576: Enum4!, argument577: Enum312, argument578: Boolean, argument579: String, argument580: String, argument581: Enum10): Object13 @Directive7(argument6 : "stringValue6750") @Directive8(argument7 : EnumValue8) + field3800(argument582: Scalar2!, argument583: Scalar2!, argument584: String, argument585: Enum313, argument586: Enum314, argument587: Enum315, argument588: Enum316, argument589: Boolean, argument590: Int, argument591: Boolean, argument592: Enum11, argument593: String, argument594: String, argument595: Enum312, argument596: Boolean, argument597: String, argument598: String, argument599: Enum10): Enum13 @Directive7(argument6 : "stringValue6752") @Directive8(argument7 : EnumValue13) + field3801(argument600: Scalar2!, argument601: Scalar2!, argument602: Enum317!, argument603: Enum4!): Object898 @Directive2 @Directive7(argument6 : "stringValue6754") @Directive8(argument7 : EnumValue8) + field3815(argument604: Scalar2!, argument605: Enum4!): Object899 @Directive2 @Directive7(argument6 : "stringValue6790") @Directive8(argument7 : EnumValue8) + field3816(argument606: Scalar2!, argument607: Enum4!): Object898 @Directive2 @Directive7(argument6 : "stringValue6792") @Directive8(argument7 : EnumValue8) + field3817(argument608: Scalar2!, argument609: Enum4!): Object899 @Directive2 @Directive7(argument6 : "stringValue6794") @Directive8(argument7 : EnumValue8) + field3818(argument610: Enum317!, argument611: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6796") @Directive8(argument7 : EnumValue13) + field3819(argument612: Enum320!, argument613: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6798") @Directive8(argument7 : EnumValue13) + field3820(argument614: Enum4!, argument615: Scalar2!): Object867 @Directive2 @Directive7(argument6 : "stringValue6804") @Directive8(argument7 : EnumValue8) + field3821(argument616: Scalar2!, argument617: Enum4!): Object900 @Directive7(argument6 : "stringValue6806") @Directive8(argument7 : EnumValue8) + field3824(argument618: [Scalar2!]! = [], argument619: Enum4!): [Union135!] @Directive7(argument6 : "stringValue6812") @Directive8(argument7 : EnumValue8) + field3828(argument620: InputObject58, argument621: Enum4!, argument622: Scalar2!): Object903 @Directive2 @Directive7(argument6 : "stringValue6826") @Directive8(argument7 : EnumValue8) + field3830(argument623: String, argument624: Enum4!, argument625: Scalar2!): Object904 @Directive7(argument6 : "stringValue6828") @Directive8(argument7 : EnumValue8) + field3834(argument626: Enum4!, argument627: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6834") @Directive8(argument7 : EnumValue8) + field3835(argument628: Enum4!, argument629: Scalar2!): Union136 @Directive2 @Directive7(argument6 : "stringValue6836") @Directive8(argument7 : EnumValue8) + field3839(argument630: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6858") @Directive8(argument7 : EnumValue6) + field3840(argument631: String, argument632: String, argument633: String!, argument634: Enum4!, argument635: Enum323! = EnumValue2203): Scalar2 @Directive2 @Directive7(argument6 : "stringValue6860") @Directive8(argument7 : EnumValue10) + field3841(argument636: Scalar2!, argument637: String, argument638: String, argument639: String!, argument640: Enum323! = EnumValue2203): Enum13 @Directive2 @Directive7(argument6 : "stringValue6866") @Directive8(argument7 : EnumValue13) + field3842(argument641: Scalar2!, argument642: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6868") @Directive8(argument7 : EnumValue6) + field3843(argument643: InputObject76!, argument644: Scalar2!, argument645: String!, argument646: Scalar2, argument647: Enum4!): Scalar2 @Directive2 @Directive7(argument6 : "stringValue6870") @Directive8(argument7 : EnumValue10) + field3844(argument648: Scalar2!, argument649: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6880") @Directive8(argument7 : EnumValue6) + field3845(argument650: Enum324!, argument651: Scalar2!, argument652: String, argument653: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6882") @Directive8(argument7 : EnumValue13) + field3846(argument654: Enum4!, argument655: Scalar2!): Union137 @Directive2 @Directive7(argument6 : "stringValue6884") @Directive8(argument7 : EnumValue8) + field3850(argument656: Enum4!, argument657: Scalar2!): Union138 @Directive2 @Directive7(argument6 : "stringValue6906") @Directive8(argument7 : EnumValue8) + field3854(argument658: Enum4!): Enum13 @Directive7(argument6 : "stringValue6928") @Directive8(argument7 : EnumValue8) + field3855(argument659: String!, argument660: Enum23!): Enum13 @Directive7(argument6 : "stringValue6930") @Directive8(argument7 : EnumValue6) + field3856(argument661: Scalar2, argument662: String!, argument663: String, argument664: [Scalar2!], argument665: String): Enum13 @Directive7(argument6 : "stringValue6932") @Directive8(argument7 : EnumValue13) + field3857(argument666: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6934") @Directive8(argument7 : EnumValue6) + field3858(argument667: Scalar2!): Enum13 @Directive7(argument6 : "stringValue6936") @Directive8(argument7 : EnumValue6) + field3859(argument668: InputObject77, argument669: InputObject78): Object479 @Directive7(argument6 : "stringValue6938") @Directive8(argument7 : EnumValue10) @deprecated + field3860(argument670: Scalar2!, argument671: InputObject77, argument672: InputObject78): Enum13 @Directive7(argument6 : "stringValue6948") @Directive8(argument7 : EnumValue13) + field3861(argument673: InputObject77, argument674: InputObject78, argument675: Enum4!): Object479 @Directive7(argument6 : "stringValue6950") @Directive8(argument7 : EnumValue10) + field3862(argument676: Enum4!, argument677: Scalar2!): Union139 @Directive7(argument6 : "stringValue6952") @Directive8(argument7 : EnumValue8) + field3866(argument678: Enum4!, argument679: Scalar2!): Union140 @Directive7(argument6 : "stringValue6974") @Directive8(argument7 : EnumValue8) + field3870(argument680: InputObject58, argument681: Enum4!, argument682: Scalar2!): Enum13 @Directive7(argument6 : "stringValue6996") @Directive8(argument7 : EnumValue8) + field3871(argument683: Scalar2!, argument684: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue6998") @Directive8(argument7 : EnumValue6) + field3872(argument685: Enum4!, argument686: Scalar2!): Union141 @Directive7(argument6 : "stringValue7000") @Directive8(argument7 : EnumValue8) + field3877(argument687: Enum4!, argument688: Scalar2!): Union142 @Directive2 @Directive7(argument6 : "stringValue7030") @Directive8(argument7 : EnumValue8) + field3881(argument689: Scalar2!, argument690: Enum4!): Union126 @Directive7(argument6 : "stringValue7052") @Directive8(argument7 : EnumValue8) + field3882(argument691: Enum338!, argument692: InputObject79, argument693: Enum4!): Object920 @Directive7(argument6 : "stringValue7054") @Directive8(argument7 : EnumValue8) + field3884(argument694: [Scalar2!]!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7072") @Directive8(argument7 : EnumValue13) + field3885(argument695: Int!, argument696: String, argument697: Enum4!, argument698: Scalar2!): Object921 @Directive7(argument6 : "stringValue7074") @Directive8(argument7 : EnumValue8) + field3888(argument699: Enum339!, argument700: Enum4!): Union143 @Directive7(argument6 : "stringValue7076") @Directive8(argument7 : EnumValue8) + field3893(argument701: String, argument702: Boolean!, argument703: String!): Object575 @Directive7(argument6 : "stringValue7090") @Directive8(argument7 : EnumValue8) @deprecated + field3894(argument704: String, argument705: Boolean!, argument706: String!, argument707: Enum4!): Object575 @Directive7(argument6 : "stringValue7092") @Directive8(argument7 : EnumValue8) + field3895(argument708: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7094") @Directive8(argument7 : EnumValue6) + field3896(argument709: Scalar2!): Object575 @Directive7(argument6 : "stringValue7096") @Directive8(argument7 : EnumValue8) @deprecated + field3897(argument710: Scalar2!, argument711: Enum4!): Object575 @Directive2 @Directive7(argument6 : "stringValue7098") @Directive8(argument7 : EnumValue8) + field3898(argument712: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7100") @Directive8(argument7 : EnumValue6) + field3899(argument713: Scalar2!, argument714: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7102") @Directive8(argument7 : EnumValue13) + field3900(argument715: Scalar2!, argument716: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7104") @Directive8(argument7 : EnumValue8) @deprecated + field3901(argument717: Scalar2!, argument718: Scalar2!): Object575 @Directive7(argument6 : "stringValue7106") @Directive8(argument7 : EnumValue8) @deprecated + field3902(argument719: Scalar2!, argument720: Enum4!, argument721: Scalar2!): Object575 @Directive7(argument6 : "stringValue7108") @Directive8(argument7 : EnumValue8) @deprecated + field3903(argument722: Scalar2!, argument723: Enum4!, argument724: Scalar2!): Union144 @Directive7(argument6 : "stringValue7110") @Directive8(argument7 : EnumValue8) + field3911(argument725: Scalar2!, argument726: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7140") @Directive8(argument7 : EnumValue8) @deprecated + field3912(argument727: Scalar2!, argument728: Scalar2!): Object575 @Directive7(argument6 : "stringValue7142") @Directive8(argument7 : EnumValue8) @deprecated + field3913(argument729: Scalar2!, argument730: Enum4!, argument731: Scalar2!): Object575 @Directive7(argument6 : "stringValue7144") @Directive8(argument7 : EnumValue8) + field3914(argument732: Scalar2!, argument733: Enum4!, argument734: [Scalar2!]!): [Union145!] @Directive2 @Directive7(argument6 : "stringValue7146") @Directive8(argument7 : EnumValue8) + field3920(argument735: Scalar2!, argument736: [Scalar2!]!): Enum13 @Directive7(argument6 : "stringValue7168") @Directive8(argument7 : EnumValue8) @deprecated + field3921(argument737: Scalar2!, argument738: [Scalar2!]!): Object575 @Directive7(argument6 : "stringValue7170") @Directive8(argument7 : EnumValue8) @deprecated + field3922(argument739: Scalar2!, argument740: Enum4!, argument741: [Scalar2!]!): Object575 @Directive7(argument6 : "stringValue7172") @Directive8(argument7 : EnumValue8) @deprecated + field3923(argument742: Scalar2!, argument743: Enum4!, argument744: [Scalar2!]!): [Union144!] @Directive2 @Directive7(argument6 : "stringValue7174") @Directive8(argument7 : EnumValue8) + field3924(argument745: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7176") @Directive8(argument7 : EnumValue8) @deprecated + field3925(argument746: Scalar2!, argument747: Enum4!): Enum13 @Directive7(argument6 : "stringValue7178") @Directive8(argument7 : EnumValue8) + field3926(argument748: Scalar2!): [Object575!] @Directive7(argument6 : "stringValue7180") @Directive8(argument7 : EnumValue8) @deprecated + field3927(argument749: Scalar2!, argument750: Enum4!): [Object575!] @Directive7(argument6 : "stringValue7182") @Directive8(argument7 : EnumValue8) + field3928(argument751: Scalar2!, argument752: Enum4!): Union146 @Directive7(argument6 : "stringValue7184") @Directive8(argument7 : EnumValue8) + field3932(argument753: Scalar2!, argument754: Scalar2!): Object575 @Directive7(argument6 : "stringValue7202") @Directive8(argument7 : EnumValue8) @deprecated + field3933(argument755: Scalar2!, argument756: Scalar2!, argument757: Enum4!): Object575 @Directive2 @Directive7(argument6 : "stringValue7204") @Directive8(argument7 : EnumValue8) + field3934(argument758: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7206") @Directive8(argument7 : EnumValue8) @deprecated + field3935(argument759: Scalar2!): Object575 @Directive7(argument6 : "stringValue7208") @Directive8(argument7 : EnumValue8) @deprecated + field3936(argument760: Scalar2!, argument761: Enum4!): Object575 @Directive7(argument6 : "stringValue7210") @Directive8(argument7 : EnumValue8) + field3937(argument762: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7212") @Directive8(argument7 : EnumValue8) @deprecated + field3938(argument763: Scalar2!, argument764: Enum4!): Enum13 @Directive7(argument6 : "stringValue7214") @Directive8(argument7 : EnumValue8) + field3939(argument765: Scalar2!): [Object575!] @Directive7(argument6 : "stringValue7216") @Directive8(argument7 : EnumValue8) @deprecated + field3940(argument766: Scalar2!, argument767: Enum4!): [Object575!] @Directive7(argument6 : "stringValue7218") @Directive8(argument7 : EnumValue8) + field3941(argument768: Scalar2!, argument769: Enum4!): Union147 @Directive7(argument6 : "stringValue7220") @Directive8(argument7 : EnumValue8) + field3943(argument770: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7230") @Directive8(argument7 : EnumValue8) @deprecated + field3944(argument771: Scalar2!): Object575 @Directive7(argument6 : "stringValue7232") @Directive8(argument7 : EnumValue8) @deprecated + field3945(argument772: Scalar2!, argument773: Enum4!): Object575 @Directive7(argument6 : "stringValue7234") @Directive8(argument7 : EnumValue8) + field3946(argument774: Boolean, argument775: Scalar2!, argument776: String, argument777: String): Object575 @Directive7(argument6 : "stringValue7236") @Directive8(argument7 : EnumValue8) @deprecated + field3947(argument778: Boolean, argument779: Scalar2!, argument780: String, argument781: String, argument782: Enum4!): Object575 @Directive7(argument6 : "stringValue7238") @Directive8(argument7 : EnumValue8) + field3948(argument783: Enum4!, argument784: Scalar2!): Union148 @Directive2 @Directive7(argument6 : "stringValue7240") @Directive8(argument7 : EnumValue8) + field3952(argument785: Enum4!, argument786: Scalar2!): Union149 @Directive2 @Directive7(argument6 : "stringValue7262") @Directive8(argument7 : EnumValue8) + field3956(argument787: Enum4!, argument788: Scalar2!): Union150 @Directive7(argument6 : "stringValue7284") @Directive8(argument7 : EnumValue8) + field3961(argument789: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7314") @Directive8(argument7 : EnumValue6) + field3962(argument790: Scalar2!, argument791: Enum353! = EnumValue2279): Enum13 @Directive2 @Directive7(argument6 : "stringValue7316") @Directive8(argument7 : EnumValue13) + field3963(argument792: [Scalar2!]!): [Object575!] @Directive7(argument6 : "stringValue7322") @Directive8(argument7 : EnumValue8) @deprecated + field3964(argument793: [Scalar2!]!, argument794: Enum4!): [Object575!] @Directive7(argument6 : "stringValue7324") @Directive8(argument7 : EnumValue8) + field3965(argument795: Scalar2, argument796: String!, argument797: String, argument798: Enum4!): Union151 @Directive2 @Directive7(argument6 : "stringValue7326") @Directive8(argument7 : EnumValue8) + field3970(argument799: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7344") @Directive8(argument7 : EnumValue6) + field3971(argument800: Scalar3, argument801: String, argument802: Enum355, argument803: String!, argument804: Scalar2): Object940 @Directive7(argument6 : "stringValue7346") @Directive8(argument7 : EnumValue8) @deprecated + field3981(argument805: Scalar3, argument806: String, argument807: Enum355, argument808: String!, argument809: Enum4!, argument810: Scalar2): Object940 @Directive2 @Directive7(argument6 : "stringValue7376") @Directive8(argument7 : EnumValue8) + field3982(argument811: Boolean, argument812: Boolean, argument813: Boolean, argument814: Boolean, argument815: Boolean, argument816: Enum4!, argument817: Boolean): Object941 @Directive7(argument6 : "stringValue7378") @Directive8(argument7 : EnumValue8) + field3988(argument818: Scalar2!, argument819: InputObject81!, argument820: Scalar2!, argument821: Enum358!, argument822: Enum4!, argument823: InputObject82, argument824: Scalar2!, argument825: Scalar2!): Union152 @Directive7(argument6 : "stringValue7384") @Directive8(argument7 : EnumValue8) + field3995(argument826: String!, argument827: InputObject81!, argument828: String!, argument829: Enum363, argument830: Enum358!, argument831: Enum4!, argument832: InputObject82, argument833: Scalar2!, argument834: Scalar2!): Union152 @Directive7(argument6 : "stringValue7456") @Directive8(argument7 : EnumValue8) + field3996(argument835: Enum4!): Union153 @Directive7(argument6 : "stringValue7462") @Directive8(argument7 : EnumValue8) + field4000(argument836: Scalar2!, argument837: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7480") @Directive8(argument7 : EnumValue6) + field4001(argument838: Scalar2!, argument839: String!, argument840: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7482") @Directive8(argument7 : EnumValue6) + field4002(argument841: Scalar2!, argument842: String!, argument843: String!, argument844: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7484") @Directive8(argument7 : EnumValue13) + field4003(argument845: Scalar2!, argument846: String!, argument847: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7486") @Directive8(argument7 : EnumValue13) + field4004(argument848: InputObject58, argument849: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7488") @Directive8(argument7 : EnumValue6) + field4005(argument850: InputObject58, argument851: Enum304!, argument852: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7490") @Directive8(argument7 : EnumValue13) + field4006(argument853: InputObject90, argument854: InputObject91): Enum13 @Directive7(argument6 : "stringValue7492") @Directive8(argument7 : EnumValue8) + field4007(argument855: Enum4!, argument856: Scalar2!): Union154 @Directive7(argument6 : "stringValue7510") @Directive8(argument7 : EnumValue8) + field4012(argument857: Enum4!, argument858: Scalar2!): Object950 @Directive7(argument6 : "stringValue7540") @Directive8(argument7 : EnumValue8) + field4014(argument859: String!, argument860: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7550") @Directive8(argument7 : EnumValue13) + field4015(argument861: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7552") @Directive8(argument7 : EnumValue6) + field4016(argument862: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7554") @Directive8(argument7 : EnumValue13) + field4017(argument863: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7556") @Directive8(argument7 : EnumValue6) + field4018(argument864: Scalar3!, argument865: InputObject77, argument866: InputObject78): Object951 @Directive7(argument6 : "stringValue7558") @Directive8(argument7 : EnumValue10) @deprecated + field4031(argument867: Scalar3!, argument868: InputObject77, argument869: InputObject78, argument870: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7582") @Directive8(argument7 : EnumValue13) + field4032(argument871: Scalar3!, argument872: InputObject77, argument873: InputObject78, argument874: Enum4!): Object951 @Directive7(argument6 : "stringValue7584") @Directive8(argument7 : EnumValue10) + field4033(argument875: [String!], argument876: [String!], argument877: [String!], argument878: [String!], argument879: String!, argument880: Enum371!): Enum13 @Directive7(argument6 : "stringValue7586") @Directive8(argument7 : EnumValue13) + field4034(argument881: Enum372!, argument882: Enum4!, argument883: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7592") @Directive8(argument7 : EnumValue8) + field4035(argument884: [InputObject92!]!, argument885: String!): Enum13 @Directive7(argument6 : "stringValue7598") @Directive8(argument7 : EnumValue13) + field4036(argument886: Enum4!, argument887: String!): Enum374 @Directive7(argument6 : "stringValue7608") @Directive8(argument7 : EnumValue8) + field4037(argument888: Scalar2!, argument889: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7614") @Directive8(argument7 : EnumValue13) + field4038(argument890: Scalar2!, argument891: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7616") @Directive8(argument7 : EnumValue13) + field4039(argument892: Scalar2!, argument893: Enum4!): Object952 @Directive7(argument6 : "stringValue7618") @Directive8(argument7 : EnumValue8) + field4042(argument894: Enum4!, argument895: Scalar2!): Union155 @Directive7(argument6 : "stringValue7624") @Directive8(argument7 : EnumValue8) + field4046(argument896: Enum4!, argument897: Scalar2!): Union156 @Directive7(argument6 : "stringValue7646") @Directive8(argument7 : EnumValue8) + field4050(argument898: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7668") @Directive8(argument7 : EnumValue6) + field4051(argument899: Enum4!, argument900: String!): Scalar2 @Directive2 @Directive7(argument6 : "stringValue7670") @Directive8(argument7 : EnumValue10) + field4052(argument901: Scalar2!, argument902: String!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7672") @Directive8(argument7 : EnumValue13) + field4053(argument903: String, argument904: String, argument905: Enum4!): String @Directive7(argument6 : "stringValue7674") @Directive8(argument7 : EnumValue8) + field4054(argument906: Scalar2!, argument907: Enum4!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7676") @Directive8(argument7 : EnumValue8) + field4055(argument908: Enum379, argument909: Boolean, argument910: String, argument911: Scalar2!, argument912: Enum4!, argument913: String): Object957 @Directive7(argument6 : "stringValue7678") @Directive8(argument7 : EnumValue8) + field4058(argument914: String!, argument915: String!, argument916: Enum4!, argument917: String!): Object958 @Directive7(argument6 : "stringValue7688") @Directive8(argument7 : EnumValue8) + field4067(argument918: String!, argument919: String!, argument920: Enum4!, argument921: String!): Object958 @Directive7(argument6 : "stringValue7694") @Directive8(argument7 : EnumValue8) + field4068(argument922: String!, argument923: Boolean, argument924: Boolean, argument925: Boolean, argument926: Boolean, argument927: Boolean, argument928: Int, argument929: Boolean): Enum13 @Directive2 @Directive7(argument6 : "stringValue7696") @Directive8(argument7 : EnumValue13) + field4069(argument930: String!, argument931: String!, argument932: Scalar2!): Enum374 @Directive7(argument6 : "stringValue7698") @Directive8(argument7 : EnumValue8) @deprecated + field4070(argument933: String!, argument934: String!, argument935: Enum4!, argument936: Scalar2!): Enum374 @Directive2 @Directive7(argument6 : "stringValue7700") @Directive8(argument7 : EnumValue8) + field4071(argument937: String!, argument938: Boolean!): Enum13 @Directive7(argument6 : "stringValue7702") @Directive8(argument7 : EnumValue8) + field4072(argument939: String!): Object233 @Directive7(argument6 : "stringValue7704") @Directive8(argument7 : EnumValue8) @deprecated + field4073(argument940: Enum4!, argument941: String!): Object233 @Directive7(argument6 : "stringValue7706") @Directive8(argument7 : EnumValue8) + field4074(argument942: String!): Object233 @Directive7(argument6 : "stringValue7708") @Directive8(argument7 : EnumValue8) @deprecated + field4075(argument943: Enum4!, argument944: String!): Object233 @Directive7(argument6 : "stringValue7710") @Directive8(argument7 : EnumValue8) + field4076(argument945: String!): Object233 @Directive7(argument6 : "stringValue7712") @Directive8(argument7 : EnumValue8) @deprecated + field4077(argument946: Enum4!, argument947: String!): Object233 @Directive7(argument6 : "stringValue7714") @Directive8(argument7 : EnumValue8) + field4078(argument948: String!): Object233 @Directive7(argument6 : "stringValue7716") @Directive8(argument7 : EnumValue8) @deprecated + field4079(argument949: Enum4!, argument950: String!): Object233 @Directive7(argument6 : "stringValue7718") @Directive8(argument7 : EnumValue8) + field4080(argument951: Enum4!): Union157 @Directive2 @Directive7(argument6 : "stringValue7720") @Directive8(argument7 : EnumValue8) + field4095(argument959: Enum4!, argument960: Scalar2!, argument961: Scalar2!): Union158 @Directive2 @Directive7(argument6 : "stringValue7758") @Directive8(argument7 : EnumValue8) + field4101(argument962: Enum4!, argument963: Scalar2!, argument964: Scalar2!): Union159 @Directive2 @Directive7(argument6 : "stringValue7776") @Directive8(argument7 : EnumValue8) + field4107(argument965: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7794") @Directive8(argument7 : EnumValue8) + field4108(argument966: Enum4!, argument967: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7796") @Directive8(argument7 : EnumValue8) + field4109(argument968: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7798") @Directive8(argument7 : EnumValue8) + field4110(argument969: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7800") @Directive8(argument7 : EnumValue6) + field4111(argument970: Enum309!, argument971: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7802") @Directive8(argument7 : EnumValue13) + field4112(argument972: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7804") @Directive8(argument7 : EnumValue6) + field4113(argument973: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7806") @Directive8(argument7 : EnumValue6) + field4114(argument974: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7808") @Directive8(argument7 : EnumValue13) + field4115(argument975: Enum383, argument976: Enum4!, argument977: Scalar2, argument978: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue7810") @Directive8(argument7 : EnumValue8) + field4116(argument979: Enum4!, argument980: Scalar2, argument981: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue7816") @Directive8(argument7 : EnumValue8) + field4117(argument982: Boolean!, argument983: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7818") @Directive8(argument7 : EnumValue13) + field4118(argument984: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7820") @Directive8(argument7 : EnumValue13) + field4119(argument985: Enum4!, argument986: Scalar2!): Object965 @Directive2 @Directive7(argument6 : "stringValue7822") @Directive8(argument7 : EnumValue8) + field4122(argument987: Enum4!, argument988: Scalar2!): Union160 @Directive7(argument6 : "stringValue7828") @Directive8(argument7 : EnumValue8) + field4126(argument989: InputObject58, argument990: Enum4!, argument991: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7850") @Directive8(argument7 : EnumValue8) + field4127(argument992: Enum4!, argument993: Scalar2!): Union154 @Directive7(argument6 : "stringValue7852") @Directive8(argument7 : EnumValue8) + field4128(argument994: Enum4!, argument995: Scalar2!): Union161 @Directive2 @Directive7(argument6 : "stringValue7854") @Directive8(argument7 : EnumValue8) + field4132(argument996: Enum4!, argument997: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7876") @Directive8(argument7 : EnumValue8) + field4133(argument998: Enum4!, argument999: Scalar2!): Union162 @Directive7(argument6 : "stringValue7878") @Directive8(argument7 : EnumValue8) + field4137(argument1000: String, argument1001: Enum4!, argument1002: Scalar2!): Object972 @Directive7(argument6 : "stringValue7900") @Directive8(argument7 : EnumValue8) + field4141(argument1003: Scalar2!, argument1004: Enum4!): Enum13 @Directive2 @Directive7(argument6 : "stringValue7906") @Directive8(argument7 : EnumValue8) + field4142(argument1005: Scalar2!, argument1006: String!, argument1007: Enum4!): Union127 @Directive7(argument6 : "stringValue7908") @Directive8(argument7 : EnumValue8) + field4143(argument1008: String, argument1009: Scalar2!, argument1010: [InputObject55!]! = [], argument1011: String!, argument1012: Enum4!): Union132 @Directive7(argument6 : "stringValue7910") @Directive8(argument7 : EnumValue8) + field4144(argument1013: String, argument1014: String, argument1015: Enum4!, argument1016: String!): Union163 @Directive7(argument6 : "stringValue7912") @Directive8(argument7 : EnumValue8) + field4149(argument1017: InputObject61!, argument1018: Enum306!, argument1019: Enum4!, argument1020: Scalar2!): Scalar2 @Directive7(argument6 : "stringValue7930") @Directive8(argument7 : EnumValue8) + field4150(argument1021: String, argument1022: [Scalar4!], argument1023: Scalar4, argument1024: Scalar4, argument1025: Int, argument1026: Scalar2!): Enum13 @Directive7(argument6 : "stringValue7932") @Directive8(argument7 : EnumValue8) + field4151(argument1027: InputObject75!, argument1028: Enum4!, argument1029: Scalar2!): Object806 @Directive2 @Directive7(argument6 : "stringValue7934") @Directive8(argument7 : EnumValue8) + field4152(argument1030: Scalar2, argument1031: Enum4!, argument1032: Scalar2!): Object806 @Directive2 @Directive7(argument6 : "stringValue7936") @Directive8(argument7 : EnumValue8) + field4153(argument1033: [InputObject93!]!, argument1034: Enum4!, argument1035: Scalar2!): Object806 @Directive2 @Directive7(argument6 : "stringValue7938") @Directive8(argument7 : EnumValue8) + field4154(argument1036: Enum4!, argument1037: String!, argument1038: Scalar2!): Object806 @Directive2 @Directive7(argument6 : "stringValue7948") @Directive8(argument7 : EnumValue8) + field4155(argument1039: Enum4!, argument1040: Scalar2!, argument1041: Enum239!): Object806 @Directive2 @Directive7(argument6 : "stringValue7950") @Directive8(argument7 : EnumValue8) + field4156(argument1042: Scalar2!, argument1043: [InputObject94!]!, argument1044: Enum4!, argument1045: Scalar2): Object976 @Directive7(argument6 : "stringValue7952") @Directive8(argument7 : EnumValue8) + field4167(argument1046: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8022") @Directive8(argument7 : EnumValue6) + field4168(argument1047: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue8024") @Directive8(argument7 : EnumValue6) + field4169(argument1048: String!, argument1049: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue8026") @Directive8(argument7 : EnumValue13) + field4170(argument1050: Enum274!, argument1051: Enum4!, argument1052: Scalar2!): Object410 @Directive7(argument6 : "stringValue8028") @Directive8(argument7 : EnumValue8) @deprecated + field4171(argument1053: Enum274!, argument1054: Enum4!, argument1055: Scalar2!): Object980 @Directive2 @Directive7(argument6 : "stringValue8030") @Directive8(argument7 : EnumValue8) + field4175(argument1056: Scalar2!, argument1057: Enum4!, argument1058: Scalar2!): Union164 @Directive7(argument6 : "stringValue8036") @Directive8(argument7 : EnumValue8) + field4178(argument1059: InputObject98!, argument1060: Enum4!, argument1061: InputObject18!, argument1062: Boolean): Union126 @Directive7(argument6 : "stringValue8050") @Directive8(argument7 : EnumValue8) + field4179(argument1063: Enum401!, argument1064: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue8056") @Directive8(argument7 : EnumValue13) + field4180(argument1065: Scalar2!, argument1066: Enum4!): Union126 @Directive7(argument6 : "stringValue8062") @Directive8(argument7 : EnumValue8) + field4181(argument1067: Enum4!, argument1068: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8064") @Directive8(argument7 : EnumValue8) + field4182(argument1069: Boolean!, argument1070: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue8066") @Directive8(argument7 : EnumValue13) + field4183(argument1071: InputObject99!): Object982 @Directive7(argument6 : "stringValue8068") @Directive8(argument7 : EnumValue8) @deprecated + field4189(argument1072: InputObject99!, argument1073: Enum4!): Object982 @Directive7(argument6 : "stringValue8102") @Directive8(argument7 : EnumValue8) @deprecated + field4190(argument1074: InputObject99!, argument1075: Enum4!): Object982 @Directive2 @Directive7(argument6 : "stringValue8104") @Directive8(argument7 : EnumValue8) + field4191(argument1076: InputObject99!, argument1077: Enum4!): Object982 @Directive7(argument6 : "stringValue8106") @Directive8(argument7 : EnumValue8) + field4192(argument1078: InputObject105!, argument1079: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8108") @Directive8(argument7 : EnumValue13) + field4193(argument1080: Boolean!, argument1081: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8114") @Directive8(argument7 : EnumValue13) + field4194(argument1082: Boolean!, argument1083: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8116") @Directive8(argument7 : EnumValue13) + field4195(argument1084: Boolean!, argument1085: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8118") @Directive8(argument7 : EnumValue13) + field4196(argument1086: Boolean!, argument1087: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8120") @Directive8(argument7 : EnumValue13) + field4197(argument1088: Boolean!, argument1089: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8122") @Directive8(argument7 : EnumValue13) + field4198(argument1090: Boolean!, argument1091: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8124") @Directive8(argument7 : EnumValue13) + field4199(argument1092: Boolean!, argument1093: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8126") @Directive8(argument7 : EnumValue13) + field4200(argument1094: Boolean!, argument1095: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8128") @Directive8(argument7 : EnumValue13) + field4201(argument1096: Enum402!, argument1097: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8130") @Directive8(argument7 : EnumValue13) + field4202(argument1098: Boolean!, argument1099: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8132") @Directive8(argument7 : EnumValue13) + field4203(argument1100: Boolean!, argument1101: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8134") @Directive8(argument7 : EnumValue13) + field4204(argument1102: Enum402!, argument1103: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8136") @Directive8(argument7 : EnumValue13) + field4205(argument1104: Boolean!, argument1105: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8138") @Directive8(argument7 : EnumValue13) + field4206(argument1106: Boolean!, argument1107: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8140") @Directive8(argument7 : EnumValue13) + field4207(argument1108: Boolean!, argument1109: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8142") @Directive8(argument7 : EnumValue13) + field4208(argument1110: Boolean!, argument1111: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8144") @Directive8(argument7 : EnumValue13) + field4209(argument1112: Boolean!, argument1113: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8146") @Directive8(argument7 : EnumValue13) + field4210(argument1114: Boolean!, argument1115: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8148") @Directive8(argument7 : EnumValue13) + field4211(argument1116: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue8150") @Directive8(argument7 : EnumValue6) + field4212(argument1117: String!, argument1118: Scalar2!): Enum13 @Directive2 @Directive7(argument6 : "stringValue8152") @Directive8(argument7 : EnumValue13) + field4213(argument1119: Enum383, argument1120: Enum4!, argument1121: Scalar2, argument1122: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue8154") @Directive8(argument7 : EnumValue8) + field4214(argument1123: String!, argument1124: [Scalar2!]!, argument1125: Enum4!, argument1126: Scalar2, argument1127: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue8156") @Directive8(argument7 : EnumValue8) + field4215(argument1128: String!, argument1129: [Scalar2!]!, argument1130: Enum4!, argument1131: Scalar2, argument1132: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue8158") @Directive8(argument7 : EnumValue8) + field4216(argument1133: Scalar2, argument1134: Boolean!, argument1135: Enum403, argument1136: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8160") @Directive8(argument7 : EnumValue13) + field4217(argument1137: Boolean!, argument1138: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8166") @Directive8(argument7 : EnumValue13) + field4218(argument1139: Scalar2!): Enum13 @Directive3 @Directive7(argument6 : "stringValue8168") @Directive8(argument7 : EnumValue6) + field4219(argument1140: String!, argument1141: Scalar2!): Enum13 @Directive3 @Directive7(argument6 : "stringValue8170") @Directive8(argument7 : EnumValue13) + field4220(argument1142: Enum4!, argument1143: Scalar2!): Object410 @Directive7(argument6 : "stringValue8172") @Directive8(argument7 : EnumValue8) @deprecated + field4221(argument1144: Enum4!, argument1145: Scalar2!): Object984 @Directive2 @Directive7(argument6 : "stringValue8174") @Directive8(argument7 : EnumValue8) + field4225(argument1146: String, argument1147: String, argument1148: String, argument1149: String, argument1150: String, argument1151: String, argument1152: String, argument1153: Boolean, argument1154: String, argument1155: String, argument1156: String, argument1157: String, argument1158: String, argument1159: String, argument1160: String, argument1161: String, argument1162: Scalar2!, argument1163: String, argument1164: String): Enum13 @Directive7(argument6 : "stringValue8180") @Directive8(argument7 : EnumValue13) + field4226(argument1165: InputObject98!, argument1166: Scalar2!, argument1167: Enum4!, argument1168: InputObject18!): Union126 @Directive7(argument6 : "stringValue8182") @Directive8(argument7 : EnumValue8) + field4227(argument1169: Boolean!, argument1170: Scalar2!, argument1171: Enum4!): Object985 @Directive7(argument6 : "stringValue8184") @Directive8(argument7 : EnumValue8) + field4231(argument1172: Boolean!, argument1173: Enum4!, argument1174: Scalar2!): Object986 @Directive7(argument6 : "stringValue8190") @Directive8(argument7 : EnumValue8) + field4235(argument1175: Boolean!, argument1176: Scalar2!, argument1177: Enum4!, argument1178: Scalar2!): Enum13 @Directive7(argument6 : "stringValue8196") @Directive8(argument7 : EnumValue8) + field4236(argument1179: String!, argument1180: Enum339!, argument1181: String, argument1182: Enum4!, argument1183: String!): Union165 @Directive7(argument6 : "stringValue8198") @Directive8(argument7 : EnumValue8) + field4244(argument1184: String!): Enum13 @Directive7(argument6 : "stringValue8220") @Directive8(argument7 : EnumValue6) + field79(argument23: InputObject1, argument24: String!, argument25: Enum21!): Enum13 @Directive2 @Directive7(argument6 : "stringValue155") @Directive8(argument7 : EnumValue13) + field80(argument26: Enum22!): Enum13 @Directive7(argument6 : "stringValue165") @Directive8(argument7 : EnumValue13) + field81(argument27: String!, argument28: Enum23!): Enum13 @Directive7(argument6 : "stringValue171") @Directive8(argument7 : EnumValue13) @deprecated + field82(argument29: String!, argument30: Enum23!, argument31: Enum4!): Object16 @Directive7(argument6 : "stringValue177") @Directive8(argument7 : EnumValue8) @deprecated + field85(argument32: String!, argument33: Enum23!, argument34: Enum4!): Union2 @Directive7(argument6 : "stringValue187") @Directive8(argument7 : EnumValue8) + field88(argument35: [Scalar2!]!, argument36: String!, argument37: Enum4!): Union3 @Directive2 @Directive7(argument6 : "stringValue201") @Directive8(argument7 : EnumValue8) +} + +type Object40 @Directive10(argument10 : "stringValue312", argument9 : "stringValue311") { + field142: String + field143: String +} + +type Object400 @Directive10(argument10 : "stringValue2811", argument9 : "stringValue2810") { + field1696: Enum118! + field1697: [Object401!]! +} + +type Object401 @Directive10(argument10 : "stringValue2815", argument9 : "stringValue2814") { + field1698: String! + field1699: Float! +} + +type Object402 @Directive10(argument10 : "stringValue2823", argument9 : "stringValue2822") { + field1703: Enum126! + field1704: Enum127! + field1705: Enum128! +} + +type Object403 @Directive10(argument10 : "stringValue2839", argument9 : "stringValue2838") { + field1707: Object370! + field1708: [Object370!] +} + +type Object404 @Directive10(argument10 : "stringValue2845", argument9 : "stringValue2844") { + field1710: Boolean @deprecated + field1711: Boolean @deprecated + field1712: Boolean @deprecated + field1713: [Object410!] @deprecated + field1714: [Union6] @deprecated + field1715: [Object44!] +} + +type Object405 @Directive10(argument10 : "stringValue2851", argument9 : "stringValue2850") { + field1717: String + field1718: [Object137!] + field1719: String + field1720: Int + field1721: String + field1722: String +} + +type Object406 @Directive10(argument10 : "stringValue2857", argument9 : "stringValue2856") { + field1724: Boolean! + field1725: Boolean! + field1726: Object407! +} + +type Object407 @Directive10(argument10 : "stringValue2861", argument9 : "stringValue2860") { + field1727: Object408 + field1731: String + field1732: String! + field1733: Enum129! +} + +type Object408 @Directive10(argument10 : "stringValue2865", argument9 : "stringValue2864") { + field1728: Scalar2! + field1729: Scalar2! + field1730: Scalar2! +} + +type Object409 @Directive10(argument10 : "stringValue2879", argument9 : "stringValue2878") { + field1737: String + field1738: String + field1739: [Scalar4!] + field1740: Scalar4 + field1741: Scalar4 + field1742: Int +} + +type Object41 @Directive10(argument10 : "stringValue316", argument9 : "stringValue315") { + field145: [Object30!] + field146: Object37 + field147: String + field148: String +} + +type Object410 @Directive9(argument8 : "stringValue2881") { + field1748: Object411 @Directive7(argument6 : "stringValue2882") @Directive8(argument7 : EnumValue9) + field1752(argument120: Scalar2): Object413 @Directive2 @Directive7(argument6 : "stringValue2896") @Directive8(argument7 : EnumValue9) + field1754: Enum131 @Directive7(argument6 : "stringValue2902") @Directive8(argument7 : EnumValue9) + field1755: [Enum132!] @Directive7(argument6 : "stringValue2908") @Directive8(argument7 : EnumValue9) + field1756(argument121: String!): Object414 @Directive7(argument6 : "stringValue2914") @Directive8(argument7 : EnumValue9) + field1759: Object415 @Directive7(argument6 : "stringValue2916") @Directive8(argument7 : EnumValue9) @deprecated + field1769: Object419 @Directive7(argument6 : "stringValue2938") @Directive8(argument7 : EnumValue9) @deprecated + field1773: Object420 @Directive7(argument6 : "stringValue2944") @Directive8(argument7 : EnumValue9) + field1778: Object422 @Directive7(argument6 : "stringValue2954") @Directive8(argument7 : EnumValue9) + field2787: Enum131 @Directive7(argument6 : "stringValue4352") @Directive8(argument7 : EnumValue9) + field2788: [String!] @Directive7(argument6 : "stringValue4354") @Directive8(argument7 : EnumValue9) + field2789: Object644 @Directive7(argument6 : "stringValue4356") @Directive8(argument7 : EnumValue9) + field2792: Object645 @Directive7(argument6 : "stringValue4362") @Directive8(argument7 : EnumValue9) + field2805: Enum131 @Directive2 @Directive7(argument6 : "stringValue4382") @Directive8(argument7 : EnumValue9) + field2806(argument155: String, argument156: Int): Union84 @Directive2 @Directive7(argument6 : "stringValue4384") @Directive8(argument7 : EnumValue9) + field2811: [Enum75!] @Directive7(argument6 : "stringValue4386") @Directive8(argument7 : EnumValue9) @deprecated + field2812(argument157: Int, argument158: String): Object205 @Directive7(argument6 : "stringValue4388") @Directive8(argument7 : EnumValue9) @deprecated + field2813(argument159: Int, argument160: String, argument161: Scalar2): Object653 @Directive7(argument6 : "stringValue4390") @Directive8(argument7 : EnumValue9) + field2820: Object655 @Directive7(argument6 : "stringValue4392") @Directive8(argument7 : EnumValue9) + field2825: String @Directive2 @Directive7(argument6 : "stringValue4400") @Directive8(argument7 : EnumValue9) + field2826: [Object656!] @Directive7(argument6 : "stringValue4402") @Directive8(argument7 : EnumValue9) + field2851: [Object662!] @Directive7(argument6 : "stringValue4448") @Directive8(argument7 : EnumValue9) + field2952(argument168: Int, argument169: String): Object688! @Directive7(argument6 : "stringValue4634") @Directive8(argument7 : EnumValue9) + field2955: Object422! @Directive2 @Directive7(argument6 : "stringValue4636") @Directive8(argument7 : EnumValue9) + field2956(argument170: Scalar2!): Object164! @Directive7(argument6 : "stringValue4638") @Directive8(argument7 : EnumValue9) + field2957(argument171: Scalar2!): Enum73! @Directive7(argument6 : "stringValue4640") @Directive8(argument7 : EnumValue9) @deprecated + field2958(argument172: String, argument173: Enum212!, argument174: Int): Object689 @Directive2 @Directive7(argument6 : "stringValue4642") @Directive8(argument7 : EnumValue9) + field2961(argument175: String, argument176: Int): Object690 @Directive7(argument6 : "stringValue4652") @Directive8(argument7 : EnumValue9) + field2964(argument177: String, argument178: Int): Object691 @Directive2 @Directive7(argument6 : "stringValue4654") @Directive8(argument7 : EnumValue9) + field2970: Enum213 @Directive2 @Directive7(argument6 : "stringValue4664") @Directive8(argument7 : EnumValue9) + field2971: Boolean @Directive7(argument6 : "stringValue4670") @Directive8(argument7 : EnumValue9) + field2972: Boolean @Directive2 @Directive7(argument6 : "stringValue4672") @Directive8(argument7 : EnumValue9) + field2973: Object693 @Directive7(argument6 : "stringValue4674") @Directive8(argument7 : EnumValue9) + field3062: Object725 @Directive3 @Directive7(argument6 : "stringValue4828") @Directive8(argument7 : EnumValue9) @deprecated + field3065: Object726 @Directive3 @Directive7(argument6 : "stringValue4832") @Directive8(argument7 : EnumValue9) + field3070: Boolean @Directive7(argument6 : "stringValue4850") @Directive8(argument7 : EnumValue9) + field3071: Object422 @Directive7(argument6 : "stringValue4852") @Directive8(argument7 : EnumValue9) + field3072: Object422 @Directive7(argument6 : "stringValue4854") @Directive8(argument7 : EnumValue9) + field3073(argument179: Scalar4, argument180: String): Union93 @Directive2 @Directive7(argument6 : "stringValue4856") @Directive8(argument7 : EnumValue9) + field3078: Object422 @Directive7(argument6 : "stringValue4878") @Directive8(argument7 : EnumValue9) + field3079: Object422 @Directive7(argument6 : "stringValue4880") @Directive8(argument7 : EnumValue9) + field3080(argument181: Int, argument182: String): Object423 @Directive7(argument6 : "stringValue4882") @Directive8(argument7 : EnumValue9) @deprecated + field3081(argument183: String, argument184: Int): Union97 @Directive7(argument6 : "stringValue4884") @Directive8(argument7 : EnumValue9) + field3090: Object422 @Directive7(argument6 : "stringValue4910") @Directive8(argument7 : EnumValue9) + field3091(argument185: String, argument186: Int): Union97 @Directive7(argument6 : "stringValue4912") @Directive8(argument7 : EnumValue9) + field3092: Object422 @Directive7(argument6 : "stringValue4914") @Directive8(argument7 : EnumValue9) + field3093: Object422 @Directive7(argument6 : "stringValue4916") @Directive8(argument7 : EnumValue9) + field3094: Boolean @Directive7(argument6 : "stringValue4918") @Directive8(argument7 : EnumValue9) @deprecated + field3095: Boolean @Directive7(argument6 : "stringValue4920") @Directive8(argument7 : EnumValue9) + field3096(argument187: String, argument188: Int): Union98 @Directive7(argument6 : "stringValue4922") @Directive8(argument7 : EnumValue9) + field3102: ID! + field3103: Object415 @Directive7(argument6 : "stringValue4928") @Directive8(argument7 : EnumValue9) + field3104(argument189: String, argument190: String, argument191: Enum220): Object738 @Directive2 @Directive7(argument6 : "stringValue4930") @Directive8(argument7 : EnumValue9) + field3130: Boolean @Directive7(argument6 : "stringValue4988") @Directive8(argument7 : EnumValue9) + field3131(argument192: Scalar2!): Boolean! @Directive2 @Directive7(argument6 : "stringValue4990") @Directive8(argument7 : EnumValue9) + field3132: Object46 @Directive7(argument6 : "stringValue4992") @Directive8(argument7 : EnumValue9) + field3133: Object747 @Directive7(argument6 : "stringValue4994") @Directive8(argument7 : EnumValue9) + field3152: Object422 @Directive7(argument6 : "stringValue5016") @Directive8(argument7 : EnumValue9) + field3153: Object422 @Directive7(argument6 : "stringValue5018") @Directive8(argument7 : EnumValue9) + field3154(argument193: Int, argument194: String): Union101 @Directive7(argument6 : "stringValue5020") @Directive8(argument7 : EnumValue9) + field3158: Object422 @Directive7(argument6 : "stringValue5034") @Directive8(argument7 : EnumValue9) + field3159(argument195: String, argument196: Scalar4, argument197: String, argument198: String, argument199: String, argument200: Scalar2, argument201: String, argument202: Scalar2): Union102 @Directive7(argument6 : "stringValue5036") @Directive8(argument7 : EnumValue9) + field3164(argument203: Scalar3!, argument204: [Enum225!]!, argument205: Scalar3!, argument206: String!): Object754 @Directive2 @Directive7(argument6 : "stringValue5058") @Directive8(argument7 : EnumValue9) + field3170: Object757 @Directive2 @Directive7(argument6 : "stringValue5076") @Directive8(argument7 : EnumValue9) + field3176: Object758 @Directive7(argument6 : "stringValue5086") @Directive8(argument7 : EnumValue9) + field3224(argument211: Int, argument212: String): Union77 @Directive7(argument6 : "stringValue5140") @Directive8(argument7 : EnumValue9) + field3225: Object767 @Directive7(argument6 : "stringValue5142") @Directive8(argument7 : EnumValue9) + field3244: Boolean @Directive7(argument6 : "stringValue5148") @Directive8(argument7 : EnumValue9) + field3245: Boolean @Directive7(argument6 : "stringValue5150") @Directive8(argument7 : EnumValue9) + field3246: Boolean @Directive7(argument6 : "stringValue5152") @Directive8(argument7 : EnumValue9) + field3247: Boolean @Directive7(argument6 : "stringValue5154") @Directive8(argument7 : EnumValue9) + field3248: Boolean @Directive7(argument6 : "stringValue5156") @Directive8(argument7 : EnumValue9) + field3249: Boolean @Directive7(argument6 : "stringValue5158") @Directive8(argument7 : EnumValue9) + field3250: Boolean @Directive7(argument6 : "stringValue5160") @Directive8(argument7 : EnumValue9) + field3251: Boolean @Directive7(argument6 : "stringValue5162") @Directive8(argument7 : EnumValue9) + field3252: Enum228 @Directive7(argument6 : "stringValue5164") @Directive8(argument7 : EnumValue9) + field3253: Boolean @Directive7(argument6 : "stringValue5166") @Directive8(argument7 : EnumValue9) + field3254: Boolean @Directive7(argument6 : "stringValue5168") @Directive8(argument7 : EnumValue9) + field3255: Enum228 @Directive7(argument6 : "stringValue5170") @Directive8(argument7 : EnumValue9) + field3256: Boolean @Directive7(argument6 : "stringValue5172") @Directive8(argument7 : EnumValue9) + field3257: Boolean @Directive7(argument6 : "stringValue5174") @Directive8(argument7 : EnumValue9) + field3258: Boolean @Directive7(argument6 : "stringValue5176") @Directive8(argument7 : EnumValue9) + field3259: Boolean @Directive7(argument6 : "stringValue5178") @Directive8(argument7 : EnumValue9) + field3260: Boolean @Directive7(argument6 : "stringValue5180") @Directive8(argument7 : EnumValue9) + field3261: Boolean @Directive7(argument6 : "stringValue5182") @Directive8(argument7 : EnumValue9) + field3262(argument213: String!): Object575 @Directive7(argument6 : "stringValue5184") @Directive8(argument7 : EnumValue9) + field3263(argument214: Int, argument215: String): Union101 @Directive7(argument6 : "stringValue5186") @Directive8(argument7 : EnumValue9) + field3264: Object422 @Directive7(argument6 : "stringValue5188") @Directive8(argument7 : EnumValue9) + field3265: Boolean @Directive7(argument6 : "stringValue5190") @Directive8(argument7 : EnumValue9) + field3266: Object768 @Directive7(argument6 : "stringValue5192") @Directive8(argument7 : EnumValue9) + field3284: Union109 @Directive7(argument6 : "stringValue5230") @Directive8(argument7 : EnumValue9) + field3286: Object422 @Directive7(argument6 : "stringValue5244") @Directive8(argument7 : EnumValue9) + field3287(argument217: InputObject5): Object774 @Directive2 @Directive7(argument6 : "stringValue5246") @Directive8(argument7 : EnumValue9) + field3296: Object422 @Directive7(argument6 : "stringValue5264") @Directive8(argument7 : EnumValue9) + field3297: Object422 @Directive7(argument6 : "stringValue5266") @Directive8(argument7 : EnumValue9) + field3298: Object422 @Directive7(argument6 : "stringValue5268") @Directive8(argument7 : EnumValue9) @deprecated + field3299: Object422 @Directive7(argument6 : "stringValue5270") @Directive8(argument7 : EnumValue9) @deprecated + field3300: Object422 @Directive7(argument6 : "stringValue5272") @Directive8(argument7 : EnumValue9) + field3301: Object422 @Directive7(argument6 : "stringValue5274") @Directive8(argument7 : EnumValue9) + field3302: Object777 @Directive7(argument6 : "stringValue5276") @Directive8(argument7 : EnumValue9) + field3306: Object779 @Directive2 @Directive7(argument6 : "stringValue5286") @Directive8(argument7 : EnumValue9) + field3308(argument218: String, argument219: Int): Object453 @Directive7(argument6 : "stringValue5288") @Directive8(argument7 : EnumValue9) + field3309(argument220: String, argument221: Int): Object780 @Directive2 @Directive7(argument6 : "stringValue5290") @Directive8(argument7 : EnumValue9) + field3335: Scalar1! + field3336(argument222: Scalar2!): Object784 @Directive2 @Directive5(argument4 : "stringValue5312") @Directive7(argument6 : "stringValue5313") @Directive8(argument7 : EnumValue9) + field3346: Object422 @Directive7(argument6 : "stringValue5316") @Directive8(argument7 : EnumValue9) + field3347: Object422 @Directive7(argument6 : "stringValue5318") @Directive8(argument7 : EnumValue9) + field3348: Object785 @Directive5(argument4 : "stringValue5320") @Directive7(argument6 : "stringValue5321") @Directive8(argument7 : EnumValue9) + field3353: Object786 @Directive7(argument6 : "stringValue5328") @Directive8(argument7 : EnumValue9) + field3357: Object415 @Directive7(argument6 : "stringValue5338") @Directive8(argument7 : EnumValue9) + field3358: [Object787!] @Directive7(argument6 : "stringValue5340") @Directive8(argument7 : EnumValue9) + field3366: Boolean @Directive7(argument6 : "stringValue5350") @Directive8(argument7 : EnumValue9) + field3367: Object788 @Directive7(argument6 : "stringValue5352") @Directive8(argument7 : EnumValue9) + field3374: Boolean @Directive7(argument6 : "stringValue5370") @Directive8(argument7 : EnumValue9) + field3375: Boolean @Directive7(argument6 : "stringValue5372") @Directive8(argument7 : EnumValue9) + field3376: Scalar3 @Directive7(argument6 : "stringValue5374") @Directive8(argument7 : EnumValue9) + field3377: Object422 @Directive2 @Directive7(argument6 : "stringValue5376") @Directive8(argument7 : EnumValue9) + field3378(argument223: String, argument224: Int): Object453 @Directive7(argument6 : "stringValue5378") @Directive8(argument7 : EnumValue9) + field3379: Boolean @Directive7(argument6 : "stringValue5380") @Directive8(argument7 : EnumValue9) + field3380: String @Directive3 @Directive7(argument6 : "stringValue5382") @Directive8(argument7 : EnumValue9) + field3381: Object791 @Directive2 @Directive7(argument6 : "stringValue5384") @Directive8(argument7 : EnumValue9) + field3384: Enum235 @Directive7(argument6 : "stringValue5390") @Directive8(argument7 : EnumValue9) + field3385(argument225: Scalar2!): Object792 @Directive5(argument4 : "stringValue5396") @Directive7(argument6 : "stringValue5397") @Directive8(argument7 : EnumValue9) + field3393(argument226: Int, argument227: String): Union101 @Directive7(argument6 : "stringValue5400") @Directive8(argument7 : EnumValue9) + field3394: Object422 @Directive7(argument6 : "stringValue5402") @Directive8(argument7 : EnumValue9) + field3395: Object793 @Directive7(argument6 : "stringValue5404") @Directive8(argument7 : EnumValue9) + field3401: Object795 @Directive7(argument6 : "stringValue5418") @Directive8(argument7 : EnumValue9) + field3403: Object796 @Directive2 @Directive7(argument6 : "stringValue5420") @Directive8(argument7 : EnumValue9) + field3407: Boolean @Directive7(argument6 : "stringValue5426") @Directive8(argument7 : EnumValue9) + field3408: Object422 @Directive7(argument6 : "stringValue5428") @Directive8(argument7 : EnumValue9) + field3409: Boolean @Directive7(argument6 : "stringValue5430") @Directive8(argument7 : EnumValue9) + field3410: Boolean @Directive7(argument6 : "stringValue5432") @Directive8(argument7 : EnumValue9) + field3411: [String!] @Directive7(argument6 : "stringValue5434") @Directive8(argument7 : EnumValue9) + field3412: Enum131 @Directive7(argument6 : "stringValue5436") @Directive8(argument7 : EnumValue9) + field3413(argument228: String, argument229: Int): Object797 @Directive2 @Directive7(argument6 : "stringValue5438") @Directive8(argument7 : EnumValue9) + field3422(argument230: String, argument231: Int): Object797 @Directive2 @Directive7(argument6 : "stringValue5452") @Directive8(argument7 : EnumValue9) + field3423: Object799 @Directive2 @Directive7(argument6 : "stringValue5454") @Directive8(argument7 : EnumValue9) + field3426: Object799 @Directive2 @Directive7(argument6 : "stringValue5460") @Directive8(argument7 : EnumValue9) + field3427(argument232: Boolean, argument233: String, argument234: String, argument235: Scalar3, argument236: String): Object423 @Directive7(argument6 : "stringValue5462") @Directive8(argument7 : EnumValue9) @deprecated + field3428(argument237: Boolean, argument238: String, argument239: String, argument240: Scalar3, argument241: String): Object423 @Directive7(argument6 : "stringValue5464") @Directive8(argument7 : EnumValue9) @deprecated + field3429: Enum131 @Directive7(argument6 : "stringValue5466") @Directive8(argument7 : EnumValue9) + field3430: [Enum132!] @Directive7(argument6 : "stringValue5468") @Directive8(argument7 : EnumValue9) + field3431: Object800 @Directive7(argument6 : "stringValue5470") @Directive8(argument7 : EnumValue9) + field3450(argument242: String): Object801 @Directive7(argument6 : "stringValue5472") @Directive8(argument7 : EnumValue9) + field3457: Boolean @Directive7(argument6 : "stringValue5474") @Directive8(argument7 : EnumValue9) + field3458(argument243: Scalar3!, argument244: Scalar3!, argument245: String!): Object802 @Directive2 @Directive7(argument6 : "stringValue5476") @Directive8(argument7 : EnumValue9) + field3460(argument246: String, argument247: [Enum238!], argument248: Scalar4, argument249: String, argument250: String, argument251: String, argument252: Scalar2, argument253: String, argument254: Scalar2): Union114 @Directive7(argument6 : "stringValue5482") @Directive8(argument7 : EnumValue9) + field3465(argument255: Int, argument256: String, argument257: Boolean! = false, argument258: Enum239): Object804 @Directive2 @Directive7(argument6 : "stringValue5496") @Directive8(argument7 : EnumValue9) + field3490: Object258 @Directive5(argument4 : "stringValue5550") @Directive7(argument6 : "stringValue5551") @Directive8(argument7 : EnumValue9) + field3491: Object422 @Directive7(argument6 : "stringValue5554") @Directive8(argument7 : EnumValue9) + field3492: [Object811!] @Directive2 @Directive5(argument4 : "stringValue5556") @Directive7(argument6 : "stringValue5557") @Directive8(argument7 : EnumValue9) +} + +type Object411 @Directive10(argument10 : "stringValue2887", argument9 : "stringValue2886") { + field1749: Object412 +} + +type Object412 @Directive10(argument10 : "stringValue2891", argument9 : "stringValue2890") { + field1750: Enum130! + field1751: String! +} + +type Object413 @Directive10(argument10 : "stringValue2901", argument9 : "stringValue2900") { + field1753: Object407! +} + +type Object414 { + field1757: [Object992!]! + field1758: Object182! +} + +type Object415 @Directive10(argument10 : "stringValue2921", argument9 : "stringValue2920") { + field1760: Object416 +} + +type Object416 @Directive10(argument10 : "stringValue2925", argument9 : "stringValue2924") { + field1761: Object417 + field1763: String! + field1764: Object418 + field1766: Object98 + field1767: Object105 + field1768: Enum130 +} + +type Object417 @Directive10(argument10 : "stringValue2929", argument9 : "stringValue2928") { + field1762: String! +} + +type Object418 @Directive10(argument10 : "stringValue2933", argument9 : "stringValue2932") { + field1765: Enum133! +} + +type Object419 @Directive10(argument10 : "stringValue2943", argument9 : "stringValue2942") { + field1770: Scalar3 + field1771: Scalar3 + field1772: Scalar3 +} + +type Object42 @Directive10(argument10 : "stringValue324", argument9 : "stringValue323") { + field153: String + field154: Object98 + field155: Enum28! +} + +type Object420 @Directive10(argument10 : "stringValue2949", argument9 : "stringValue2948") { + field1774: [Object421!]! +} + +type Object421 @Directive10(argument10 : "stringValue2953", argument9 : "stringValue2952") { + field1775: String! + field1776: String! + field1777: String! +} + +type Object422 @Directive9(argument8 : "stringValue2957") { + field1779(argument122: Boolean, argument123: String, argument124: String, argument125: Scalar3, argument126: String, argument127: InputObject4, argument128: Boolean, argument129: String, argument130: [Scalar2!]): Object423 @Directive7(argument6 : "stringValue2958") @Directive8(argument7 : EnumValue9) + field2785: ID! + field2786(argument150: Boolean, argument151: String, argument152: String, argument153: Scalar3, argument154: String): Object423 @Directive7(argument6 : "stringValue4350") @Directive8(argument7 : EnumValue9) +} + +type Object423 @Directive10(argument10 : "stringValue2967", argument9 : "stringValue2966") { + field1780: String! @deprecated + field1781: [Union57]! + field2740: Object629 + field2746: Object631 +} + +type Object424 @Directive10(argument10 : "stringValue2975", argument9 : "stringValue2974") { + field1782: [Object425]! +} + +type Object425 @Directive10(argument10 : "stringValue2979", argument9 : "stringValue2978") { + field1783: Union58! + field2666: String! + field2667: Scalar3 + field2668: Scalar2! +} + +type Object426 @Directive10(argument10 : "stringValue2987", argument9 : "stringValue2986") { + field1784: Object427 + field1790: Enum134! + field1791: Object428 + field1800: Boolean + field1801: Object105 + field1802: String! +} + +type Object427 @Directive10(argument10 : "stringValue2991", argument9 : "stringValue2990") { + field1785: Float + field1786: Boolean + field1787: Boolean + field1788: Boolean + field1789: Boolean +} + +type Object428 @Directive10(argument10 : "stringValue2999", argument9 : "stringValue2998") { + field1792: String + field1793: Object429 + field1799: String +} + +type Object429 @Directive10(argument10 : "stringValue3003", argument9 : "stringValue3002") { + field1794: Enum135 + field1795: Enum136 + field1796: [Object410!] @deprecated + field1797: [Union6] @deprecated + field1798: [Object44!] +} + +type Object43 @Directive10(argument10 : "stringValue332", argument9 : "stringValue331") { + field156: Boolean! @deprecated +} + +type Object430 @Directive10(argument10 : "stringValue3015", argument9 : "stringValue3014") { + field1803: Object235 + field1804: Union59! + field2616: Object466 + field2617: Object540 @deprecated + field2618: Object592 +} + +type Object431 @Directive10(argument10 : "stringValue3023", argument9 : "stringValue3022") { + field1805: Enum137! + field1806: String! + field1807: [Object432!]! + field1835: String +} + +type Object432 @Directive10(argument10 : "stringValue3031", argument9 : "stringValue3030") { + field1808: String + field1809: Enum138 + field1810: String + field1811: String + field1812: String + field1813: String! + field1814: [Object433!] + field1830: String + field1831: Scalar3 + field1832: String + field1833: Object105 + field1834: String +} + +type Object433 @Directive10(argument10 : "stringValue3039", argument9 : "stringValue3038") { + field1815: String + field1816: Object318 + field1817: String + field1818: String! + field1819: String @deprecated + field1820: Object316 + field1821: String + field1822: [Object434!] + field1825: String + field1826: String + field1827: String + field1828: String @deprecated + field1829: Scalar2 +} + +type Object434 @Directive10(argument10 : "stringValue3043", argument9 : "stringValue3042") { + field1823: String! + field1824: String +} + +type Object435 @Directive10(argument10 : "stringValue3047", argument9 : "stringValue3046") { + field1836: Object436! + field1849: Enum139 + field1850: Union60 +} + +type Object436 @Directive9(argument8 : "stringValue3049") { + field1837: ID! + field1838: Object437 @Directive7(argument6 : "stringValue3050") @Directive8(argument7 : EnumValue9) + field1847: Int! + field1848: Object422 @Directive7(argument6 : "stringValue3052") @Directive8(argument7 : EnumValue9) +} + +type Object437 { + field1839: String! + field1840: String + field1841: String + field1842: String! + field1843: String + field1844: String + field1845: String + field1846: String +} + +type Object438 @Directive10(argument10 : "stringValue3065", argument9 : "stringValue3064") { + field1851: [String!] + field1852: Enum140! + field1853: Object105 + field1854: String! + field1855: String @deprecated +} + +type Object439 @Directive10(argument10 : "stringValue3073", argument9 : "stringValue3072") { + field1856: Object98 + field1857: Enum141! + field1858: Object98 + field1859: Object233! +} + +type Object44 @Directive9(argument8 : "stringValue334") { + field158: Union6 @Directive7(argument6 : "stringValue335") @Directive8(argument7 : EnumValue9) + field159: String @deprecated +} + +type Object440 @Directive10(argument10 : "stringValue3081", argument9 : "stringValue3080") { + field1860: Object441! +} + +type Object441 @Directive9(argument8 : "stringValue3083") { + field1861: [Object410!] @Directive7(argument6 : "stringValue3084") @Directive8(argument7 : EnumValue9) @deprecated + field1862: [Union6] @Directive7(argument6 : "stringValue3086") @Directive8(argument7 : EnumValue9) @deprecated + field1863: [Object44!] @Directive7(argument6 : "stringValue3088") @Directive8(argument7 : EnumValue9) @deprecated + field1864: Scalar3 @Directive7(argument6 : "stringValue3090") @Directive8(argument7 : EnumValue9) @deprecated + field1865: [Object442!] @Directive7(argument6 : "stringValue3092") @Directive8(argument7 : EnumValue9) @deprecated + field1873: Scalar3 @Directive7(argument6 : "stringValue3102") @Directive8(argument7 : EnumValue9) @deprecated + field1874: Object410 @Directive7(argument6 : "stringValue3104") @Directive8(argument7 : EnumValue9) @deprecated + field1875: Union6 @Directive7(argument6 : "stringValue3106") @Directive8(argument7 : EnumValue9) @deprecated + field1876: Object44 @Directive7(argument6 : "stringValue3108") @Directive8(argument7 : EnumValue9) @deprecated + field1877: [Object410!] @Directive7(argument6 : "stringValue3110") @Directive8(argument7 : EnumValue9) @deprecated + field1878: [Union6] @Directive7(argument6 : "stringValue3112") @Directive8(argument7 : EnumValue9) @deprecated + field1879: [Object44!] @Directive2 @Directive7(argument6 : "stringValue3114") @Directive8(argument7 : EnumValue9) + field1880: [Object443!] @Directive7(argument6 : "stringValue3116") @Directive8(argument7 : EnumValue9) @deprecated + field1892: Boolean @Directive7(argument6 : "stringValue3122") @Directive8(argument7 : EnumValue9) + field1893: ID! + field1894: Boolean @Directive7(argument6 : "stringValue3124") @Directive8(argument7 : EnumValue9) @deprecated + field1895: Boolean @Directive7(argument6 : "stringValue3126") @Directive8(argument7 : EnumValue9) @deprecated + field1896: Boolean @Directive7(argument6 : "stringValue3128") @Directive8(argument7 : EnumValue9) @deprecated + field1897: Boolean @Directive7(argument6 : "stringValue3130") @Directive8(argument7 : EnumValue9) @deprecated + field1898: Boolean @Directive7(argument6 : "stringValue3132") @Directive8(argument7 : EnumValue9) + field1899: String @Directive7(argument6 : "stringValue3134") @Directive8(argument7 : EnumValue9) @deprecated + field1900: Scalar3 @Directive7(argument6 : "stringValue3136") @Directive8(argument7 : EnumValue9) @deprecated + field1901: Scalar3 @Directive7(argument6 : "stringValue3138") @Directive8(argument7 : EnumValue9) @deprecated + field1902: String @Directive7(argument6 : "stringValue3140") @Directive8(argument7 : EnumValue9) @deprecated + field1903: [Object410!] @Directive7(argument6 : "stringValue3142") @Directive8(argument7 : EnumValue9) @deprecated + field1904: [Union6] @Directive7(argument6 : "stringValue3144") @Directive8(argument7 : EnumValue9) @deprecated + field1905: [Object44!] @Directive7(argument6 : "stringValue3146") @Directive8(argument7 : EnumValue9) @deprecated + field1906: Object444 @Directive7(argument6 : "stringValue3148") @Directive8(argument7 : EnumValue9) + field2008: Object445 @Directive5(argument4 : "stringValue3170") @Directive7(argument6 : "stringValue3171") @Directive8(argument7 : EnumValue9) + field2009: [Object410!] @Directive7(argument6 : "stringValue3174") @Directive8(argument7 : EnumValue9) @deprecated + field2010: [Union6] @Directive7(argument6 : "stringValue3176") @Directive8(argument7 : EnumValue9) @deprecated + field2011: [Object44!] @Directive2 @Directive7(argument6 : "stringValue3178") @Directive8(argument7 : EnumValue9) + field2012: String! + field2013: [String!] @Directive7(argument6 : "stringValue3180") @Directive8(argument7 : EnumValue9) @deprecated + field2014: Scalar3 @Directive7(argument6 : "stringValue3182") @Directive8(argument7 : EnumValue9) @deprecated + field2015(argument131: String): Object448 @Directive7(argument6 : "stringValue3184") @Directive8(argument7 : EnumValue9) @deprecated + field2028(argument132: Int, argument133: String): Union62 @Directive7(argument6 : "stringValue3202") @Directive8(argument7 : EnumValue9) + field2031(argument134: String, argument135: Int): Union63 @Directive7(argument6 : "stringValue3216") @Directive8(argument7 : EnumValue9) + field2044(argument136: String, argument137: Int): Object453 @Directive7(argument6 : "stringValue3242") @Directive8(argument7 : EnumValue9) @deprecated + field2045: Scalar3 @Directive7(argument6 : "stringValue3244") @Directive8(argument7 : EnumValue9) @deprecated + field2046: Enum143 @Directive7(argument6 : "stringValue3246") @Directive8(argument7 : EnumValue9) @deprecated + field2047(argument138: Boolean): Scalar3 @Directive2 @Directive7(argument6 : "stringValue3248") @Directive8(argument7 : EnumValue9) + field2048: String @Directive7(argument6 : "stringValue3250") @Directive8(argument7 : EnumValue9) @deprecated + field2049: [Object447!] @Directive7(argument6 : "stringValue3252") @Directive8(argument7 : EnumValue9) + field2050: Scalar3 @Directive7(argument6 : "stringValue3254") @Directive8(argument7 : EnumValue9) @deprecated +} + +type Object442 @Directive10(argument10 : "stringValue3097", argument9 : "stringValue3096") { + field1866: Boolean + field1867: String + field1868: String + field1869: Enum142 + field1870: Boolean + field1871: Boolean + field1872: Boolean +} + +type Object443 @Directive10(argument10 : "stringValue3121", argument9 : "stringValue3120") { + field1881: String + field1882: String + field1883: Scalar3 + field1884: Scalar3 + field1885: String + field1886: Scalar3 + field1887: Object410 @deprecated + field1888: String + field1889: Union6 @deprecated + field1890: Object44 + field1891: String +} + +type Object444 @Directive10(argument10 : "stringValue3153", argument9 : "stringValue3152") { + field1907: [String!] + field1908: [Object410!] @deprecated + field1909: [Union6] @deprecated + field1910: [Object44!] + field1911: String + field1912: Scalar3 + field1913: Scalar3 + field1914: [Object442!] + field1915: Scalar3 + field1916: Object410 @deprecated + field1917: Union6 @deprecated + field1918: Object44 + field1919: String + field1920: Boolean + field1921: Boolean + field1922: Scalar2 + field1923: Scalar3 + field1924: Scalar3 + field1925: [Object443!] + field1926: Object443 + field1927: String + field1928: Boolean + field1929: Boolean + field1930: Boolean + field1931: Boolean + field1932: Boolean + field1933: Boolean + field1934: Boolean + field1935: String + field1936: [Object410!] @deprecated + field1937: [Union6] @deprecated + field1938: [Object44!] + field1939: Scalar3 + field1940: Scalar3 + field1941: String + field1942: [Object410!] @deprecated + field1943: [Union6] @deprecated + field1944: [Object44!] + field1945: Scalar3 + field1946: Scalar3 + field1947: Scalar3 + field1948: Object445 + field1973: [Object410!] @deprecated + field1974: [Union6] @deprecated + field1975: [Object44!] + field1976: [String!] + field1977: String + field1978: Scalar3 + field1979: [String!] + field1980: Scalar3 + field1981: [Object410!] @deprecated + field1982: [Union6] @deprecated + field1983: [Object44!] + field1984: Scalar3 + field1985: Enum143 + field1986: String + field1987: String @deprecated + field1988: Scalar3 + field1989: Scalar3 + field1990: String + field1991: Object410 @deprecated + field1992: Union6 @deprecated + field1993: Object44 + field1994: [Object447!] + field1996: Scalar3 + field1997: Scalar3 + field1998: Scalar3 + field1999: Scalar3 + field2000: Scalar3 + field2001: Scalar3 + field2002: Scalar3 + field2003: Scalar3 + field2004: Object152 @deprecated + field2005: Union8 @deprecated + field2006: Object114 + field2007: Scalar3 +} + +type Object445 @Directive10(argument10 : "stringValue3157", argument9 : "stringValue3156") { + field1949: [Object446!] + field1967: String + field1968: [Object446!] + field1969: Scalar3 + field1970: [Object446!] + field1971: Scalar3 + field1972: Scalar3 +} + +type Object446 @Directive10(argument10 : "stringValue3161", argument9 : "stringValue3160") { + field1950: String + field1951: String + field1952: Boolean + field1953: Boolean + field1954: Boolean + field1955: Boolean + field1956: Boolean + field1957: Boolean + field1958: Scalar3 + field1959: Scalar3 + field1960: String + field1961: Scalar3 + field1962: String + field1963: Object410 @deprecated + field1964: String + field1965: Union6 @deprecated + field1966: Object44 +} + +type Object447 @Directive10(argument10 : "stringValue3169", argument9 : "stringValue3168") { + field1995: Object233! +} + +type Object448 @Directive10(argument10 : "stringValue3189", argument9 : "stringValue3188") { + field2016: [Object449!]! + field2027: Object182! +} + +type Object449 @Directive10(argument10 : "stringValue3193", argument9 : "stringValue3192") { + field2017: Scalar3! + field2018: Union61! + field2022: Scalar2! + field2023: Scalar3! + field2024: Object410! @deprecated + field2025: Union6 @deprecated + field2026: Object44! +} + +type Object45 { + field161: String! + field162: Object46! +} + +type Object450 @Directive10(argument10 : "stringValue3201", argument9 : "stringValue3200") { + field2019: Object152! @deprecated + field2020: Union8 @deprecated + field2021: Object114! +} + +type Object451 @Directive10(argument10 : "stringValue3211", argument9 : "stringValue3210") { + field2029: String + field2030: Enum144! +} + +type Object452 @Directive10(argument10 : "stringValue3225", argument9 : "stringValue3224") { + field2032: Enum145! + field2033: String +} + +type Object453 @Directive10(argument10 : "stringValue3233", argument9 : "stringValue3232") { + field2034: [Object454!]! + field2043: Object182! +} + +type Object454 @Directive10(argument10 : "stringValue3237", argument9 : "stringValue3236") { + field2035: Object441! + field2036: Object410! @deprecated + field2037: Union6 @deprecated + field2038: Object44! + field2039: Scalar3! + field2040: String! + field2041: Enum146! + field2042: Scalar3 +} + +type Object455 @Directive10(argument10 : "stringValue3259", argument9 : "stringValue3258") { + field2051: Object28! + field2052: Enum147 + field2053: String + field2054: String + field2055: Object105 +} + +type Object456 @Directive10(argument10 : "stringValue3267", argument9 : "stringValue3266") { + field2056: Object170! +} + +type Object457 @Directive10(argument10 : "stringValue3271", argument9 : "stringValue3270") { + field2057: Object164! +} + +type Object458 @Directive10(argument10 : "stringValue3275", argument9 : "stringValue3274") { + field2058: [Union64!]! + field2251: Object426 +} + +type Object459 @Directive10(argument10 : "stringValue3283", argument9 : "stringValue3282") { + field2059: Object460 +} + +type Object46 @Directive10(argument10 : "stringValue340", argument9 : "stringValue339") { + field163: [String!] + field164: String + field165: Boolean + field166: Boolean + field167: Boolean + field168: Boolean + field169: String + field170: Boolean + field171: Boolean + field172: String @deprecated + field173: Boolean + field174: Boolean + field175: Object47 + field180: String + field181: Scalar3 + field182: String + field183: Boolean + field184: Boolean + field185: String + field186: Object49 + field334: Object90 + field344: Scalar3 + field345: Scalar3 + field346: Boolean + field347: Boolean + field348: Boolean + field349: Scalar3 + field350: Boolean + field351: Scalar3 + field352: Boolean + field353: Boolean + field354: Boolean + field355: Boolean + field356: String! + field357: Boolean + field358: Boolean + field359: Boolean + field360: String @deprecated + field361: Scalar3 + field362: Boolean + field363: String + field364: Scalar3 + field365: Boolean + field366: String + field367: Boolean + field368: Scalar3 + field369: Boolean + field370: Boolean + field371: Object95 @deprecated + field382: [String!] + field383: [Object152!] @deprecated + field384: [Union8] @deprecated + field434: [Object114!] @Directive2 + field437: String + field438: String + field439: Boolean + field440: Object115 + field447: String + field448: Object115 + field449: String + field450: String + field451: String + field452: String @deprecated + field453: Object118 + field487: String + field488: String + field489: String + field490: Boolean + field491: Object125 + field502: Boolean + field503: Boolean + field504: String + field505: Scalar3 + field506: Boolean + field507: String + field508: String @deprecated + field509: Enum37 + field510: String + field511: Boolean + field512: Scalar3 + field513: Boolean + field514: Enum38 + field515: Boolean + field516: Boolean + field517: String + field518: Object49 + field519: [String!] + field520: String +} + +type Object460 @Directive10(argument10 : "stringValue3287", argument9 : "stringValue3286") { + field2060: Object461 + field2067: Object462 + field2071: Enum150 + field2072: Enum151! + field2073: Object463 + field2082: Object465 @deprecated + field2093: Object315 + field2094: Boolean + field2095: Object468 + field2101: Object315 + field2102: Object470 + field2110: Scalar4 + field2111: Object472 + field2136: Union65 + field2162: Object484 + field2205: Object491 + field2207: [Object492!] @deprecated + field2217: Object497 @Directive2 + field2224: Object319 + field2225: String + field2226: Union60 + field2227: Object498 + field2229: Object499 + field2234: Object152! @deprecated + field2235: Object500 + field2239: Object501 + field2244: Union8 @deprecated + field2245: Object114! + field2246: Union60 +} + +type Object461 @Directive10(argument10 : "stringValue3291", argument9 : "stringValue3290") { + field2061: Float + field2062: Scalar3 + field2063: String + field2064: Scalar3 + field2065: String + field2066: Enum148 +} + +type Object462 @Directive10(argument10 : "stringValue3299", argument9 : "stringValue3298") { + field2068: Enum149! + field2069: Object98 + field2070: Object98 +} + +type Object463 @Directive10(argument10 : "stringValue3315", argument9 : "stringValue3314") { + field2074: Enum106 + field2075: Object235 + field2076: Object98 + field2077: Enum152 + field2078: Object464 + field2080: Enum106 + field2081: Object98 +} + +type Object464 @Directive10(argument10 : "stringValue3323", argument9 : "stringValue3322") { + field2079: String! +} + +type Object465 @Directive10(argument10 : "stringValue3327", argument9 : "stringValue3326") { + field2083: Object235 + field2084: Object466 + field2090: String! + field2091: Enum153! + field2092: String +} + +type Object466 @Directive10(argument10 : "stringValue3331", argument9 : "stringValue3330") { + field2085: Object235 + field2086: Object467 + field2088: [String!]! + field2089: String +} + +type Object467 @Directive10(argument10 : "stringValue3335", argument9 : "stringValue3334") { + field2087: String! +} + +type Object468 @Directive10(argument10 : "stringValue3343", argument9 : "stringValue3342") { + field2096: [Object469!] + field2099: [Object469!] + field2100: [Object469!] +} + +type Object469 @Directive10(argument10 : "stringValue3347", argument9 : "stringValue3346") { + field2097: Int! + field2098: Int! +} + +type Object47 @Directive10(argument10 : "stringValue344", argument9 : "stringValue343") { + field176: Object48 + field179: Scalar3 +} + +type Object470 @Directive10(argument10 : "stringValue3351", argument9 : "stringValue3350") { + field2103: Object471 + field2106: String + field2107: Object98 + field2108: Object98 + field2109: String! +} + +type Object471 @Directive10(argument10 : "stringValue3355", argument9 : "stringValue3354") { + field2104: String! + field2105: Object105! +} + +type Object472 @Directive10(argument10 : "stringValue3359", argument9 : "stringValue3358") { + field2112: Object473 + field2132: Object477 @deprecated + field2135: String +} + +type Object473 @Directive10(argument10 : "stringValue3363", argument9 : "stringValue3362") { + field2113: Enum154 + field2114: Object474 + field2131: String +} + +type Object474 @Directive10(argument10 : "stringValue3371", argument9 : "stringValue3370") { + field2115: String + field2116: String + field2117: Object475 + field2121: Int + field2122: Object410 @deprecated + field2123: Union6 @deprecated + field2124: Object44 + field2125: Boolean + field2126: String + field2127: [Object476!] +} + +type Object475 @Directive10(argument10 : "stringValue3375", argument9 : "stringValue3374") { + field2118: String + field2119: String + field2120: String +} + +type Object476 @Directive10(argument10 : "stringValue3379", argument9 : "stringValue3378") { + field2128: Int + field2129: String + field2130: String +} + +type Object477 @Directive10(argument10 : "stringValue3383", argument9 : "stringValue3382") { + field2133: String! + field2134: String! +} + +type Object478 @Directive10(argument10 : "stringValue3391", argument9 : "stringValue3390") { + field2137: Object479! +} + +type Object479 @Directive9(argument8 : "stringValue3393") { + field2138: Object480 @Directive7(argument6 : "stringValue3394") @Directive8(argument7 : EnumValue9) + field2143: ID! + field2144: [Object128!] @Directive7(argument6 : "stringValue3404") @Directive8(argument7 : EnumValue9) + field2145: Object152 @Directive7(argument6 : "stringValue3406") @Directive8(argument7 : EnumValue9) @deprecated + field2146: Union8 @Directive7(argument6 : "stringValue3408") @Directive8(argument7 : EnumValue9) @deprecated + field2147: Object114 @Directive7(argument6 : "stringValue3410") @Directive8(argument7 : EnumValue9) + field2148: Scalar1! + field2149: Union66 @Directive7(argument6 : "stringValue3412") @Directive8(argument7 : EnumValue9) + field2158: Object410 @Directive7(argument6 : "stringValue3426") @Directive8(argument7 : EnumValue9) @deprecated + field2159: Union6 @Directive7(argument6 : "stringValue3428") @Directive8(argument7 : EnumValue9) @deprecated + field2160: Object44 @Directive7(argument6 : "stringValue3430") @Directive8(argument7 : EnumValue9) +} + +type Object48 @Directive10(argument10 : "stringValue348", argument9 : "stringValue347") { + field177: Scalar3 + field178: Scalar3 +} + +type Object480 @Directive10(argument10 : "stringValue3399", argument9 : "stringValue3398") { + field2139: Scalar3 + field2140: Scalar3 + field2141: Enum155! + field2142: Scalar3 +} + +type Object481 @Directive10(argument10 : "stringValue3421", argument9 : "stringValue3420") { + field2150: Scalar2! +} + +type Object482 @Directive10(argument10 : "stringValue3425", argument9 : "stringValue3424") { + field2151: String + field2152: Boolean! + field2153: [Scalar2!] + field2154: Scalar2 + field2155: [Scalar2!] + field2156: Boolean + field2157: String! +} + +type Object483 @Directive10(argument10 : "stringValue3435", argument9 : "stringValue3434") { + field2161: Boolean! @deprecated +} + +type Object484 @Directive10(argument10 : "stringValue3439", argument9 : "stringValue3438") { + field2163: Object485 + field2184: Object410! @deprecated + field2185: Union6 @deprecated + field2186: Object44! + field2187: Object487 + field2193: Enum91 + field2194: [Object489!] + field2197: String + field2198: String + field2199: Object490 + field2202: String + field2203: String + field2204: String +} + +type Object485 @Directive10(argument10 : "stringValue3443", argument9 : "stringValue3442") { + field2164: Enum156 + field2165: Object473 + field2166: Boolean + field2167: Object486 + field2177: [Object486!] + field2178: String + field2179: String + field2180: String + field2181: Enum157 + field2182: String + field2183: String +} + +type Object486 @Directive10(argument10 : "stringValue3451", argument9 : "stringValue3450") { + field2168: String + field2169: Scalar2 + field2170: String + field2171: Scalar3 + field2172: Scalar3 + field2173: String + field2174: String + field2175: String + field2176: String +} + +type Object487 @Directive10(argument10 : "stringValue3459", argument9 : "stringValue3458") { + field2188: String + field2189: Enum158 + field2190: [Object488!]! +} + +type Object488 { + field2191: String! + field2192: String! +} + +type Object489 { + field2195: String! + field2196: String! +} + +type Object49 @Directive10(argument10 : "stringValue352", argument9 : "stringValue351") { + field187: Object50 + field333: Object50 +} + +type Object490 @Directive9(argument8 : "stringValue3465") { + field2200: ID! + field2201: Scalar1! +} + +type Object491 @Directive10(argument10 : "stringValue3469", argument9 : "stringValue3468") { + field2206: Object98! +} + +type Object492 @Directive10(argument10 : "stringValue3473", argument9 : "stringValue3472") { + field2208: Object493! + field2216: Enum159! +} + +type Object493 @Directive10(argument10 : "stringValue3477", argument9 : "stringValue3476") { + field2209: Union67! + field2215: Scalar4 +} + +type Object494 @Directive10(argument10 : "stringValue3485", argument9 : "stringValue3484") { + field2210: Object108! + field2211: Scalar4 +} + +type Object495 @Directive10(argument10 : "stringValue3489", argument9 : "stringValue3488") { + field2212: String! +} + +type Object496 @Directive10(argument10 : "stringValue3493", argument9 : "stringValue3492") { + field2213: [Object107!]! + field2214: Scalar4 +} + +type Object497 @Directive10(argument10 : "stringValue3501", argument9 : "stringValue3500") { + field2218: Object493 + field2219: Object493 + field2220: Object493 + field2221: Object493 + field2222: Object493 + field2223: Object493 +} + +type Object498 @Directive10(argument10 : "stringValue3505", argument9 : "stringValue3504") { + field2228: Float! +} + +type Object499 @Directive10(argument10 : "stringValue3509", argument9 : "stringValue3508") { + field2230: Object235 + field2231: Object98! + field2232: Enum160! + field2233: Object466 +} + +type Object5 @Directive10(argument10 : "stringValue52", argument9 : "stringValue51") { + field19: Enum7! +} + +type Object50 @Directive10(argument10 : "stringValue356", argument9 : "stringValue355") { + field188: [Object51!] + field191: [Object52!] + field318: [Object51!] + field319: [Object88!] + field324: [Object89!] +} + +type Object500 @Directive10(argument10 : "stringValue3517", argument9 : "stringValue3516") { + field2236: Enum161! + field2237: String! + field2238: Object105! +} + +type Object501 @Directive10(argument10 : "stringValue3525", argument9 : "stringValue3524") { + field2240: [String!] + field2241: Enum140! + field2242: Object105 + field2243: String! +} + +type Object502 @Directive10(argument10 : "stringValue3529", argument9 : "stringValue3528") { + field2247: Enum162! + field2248: Object470 + field2249: Object460 +} + +type Object503 @Directive10(argument10 : "stringValue3537", argument9 : "stringValue3536") { + field2250: Boolean! @deprecated +} + +type Object504 @Directive10(argument10 : "stringValue3541", argument9 : "stringValue3540") { + field2252: Object319 + field2253: Enum163! + field2254: Object505! + field2257: [Object506!] + field2260: Object316 + field2261: Object507 + field2276: Object484 + field2277: Object410 @deprecated + field2278: Union6 @deprecated + field2279: Object44 + field2280: Object98 + field2281: Object432 + field2282: Union60 + field2283: String + field2284: String + field2285: String! + field2286: Object105! +} + +type Object505 @Directive9(argument8 : "stringValue3547") { + field2255: ID! + field2256: Scalar1! +} + +type Object506 @Directive10(argument10 : "stringValue3551", argument9 : "stringValue3550") { + field2258: String! + field2259: Object105! +} + +type Object507 @Directive10(argument10 : "stringValue3555", argument9 : "stringValue3554") { + field2262: [Object508!] + field2267: Union68 + field2273: Object511 +} + +type Object508 @Directive10(argument10 : "stringValue3559", argument9 : "stringValue3558") { + field2263: Int! + field2264: Int! + field2265: Int! + field2266: Int! +} + +type Object509 @Directive10(argument10 : "stringValue3567", argument9 : "stringValue3566") { + field2268: String! +} + +type Object51 @Directive10(argument10 : "stringValue360", argument9 : "stringValue359") { + field189: [Scalar3!] + field190: String +} + +type Object510 @Directive10(argument10 : "stringValue3571", argument9 : "stringValue3570") { + field2269: Object323 + field2270: Object152! @deprecated + field2271: Union8 @deprecated + field2272: Object114! +} + +type Object511 @Directive10(argument10 : "stringValue3575", argument9 : "stringValue3574") { + field2274: Int! + field2275: Scalar2! +} + +type Object512 @Directive10(argument10 : "stringValue3579", argument9 : "stringValue3578") { + field2287: String + field2288: Scalar3 + field2289: [Enum164!] + field2290: String! +} + +type Object513 @Directive10(argument10 : "stringValue3587", argument9 : "stringValue3586") { + field2291: String! + field2292: Enum165! + field2293: Boolean + field2294: String! + field2295: String +} + +type Object514 @Directive10(argument10 : "stringValue3595", argument9 : "stringValue3594") { + field2296: [Object152!]! @deprecated + field2297: [Union8] @deprecated + field2298: [Object114!]! + field2299: [Object460!]! + field2300: Int + field2301: Union60 +} + +type Object515 @Directive10(argument10 : "stringValue3599", argument9 : "stringValue3598") { + field2302: Enum166 + field2303: Object98! +} + +type Object516 @Directive10(argument10 : "stringValue3607", argument9 : "stringValue3606") { + field2304: Boolean + field2305: Enum167 + field2306: String + field2307: String! + field2308: Object105 +} + +type Object517 @Directive10(argument10 : "stringValue3615", argument9 : "stringValue3614") { + field2309: Union69! + field2354: [Object464!] +} + +type Object518 @Directive10(argument10 : "stringValue3623", argument9 : "stringValue3622") { + field2310: Object519 + field2316: Object98 + field2317: String + field2318: Object98 + field2319: String! + field2320: Object520 + field2323: Object520 +} + +type Object519 @Directive10(argument10 : "stringValue3627", argument9 : "stringValue3626") { + field2311: Object235 + field2312: Boolean! + field2313: [Object464!] + field2314: Object493 + field2315: String +} + +type Object52 @Directive10(argument10 : "stringValue364", argument9 : "stringValue363") { + field192: Object53 + field210: String + field211: String + field212: String + field213: Object59 + field227: Object65 + field229: [Object66!] + field232: Object67 + field237: Object32 + field238: Object69 + field250: Object73 + field252: [Object66!] + field253: Object74 + field266: Object76 + field282: String + field283: [Scalar3!] + field284: String + field285: String + field286: Object81 + field294: Boolean + field295: Object83 @Directive2 + field299: Object84 + field307: String + field308: String + field309: String + field310: String + field311: Object86 +} + +type Object520 @Directive10(argument10 : "stringValue3631", argument9 : "stringValue3630") { + field2321: Object519! + field2322: String! +} + +type Object521 @Directive10(argument10 : "stringValue3635", argument9 : "stringValue3634") { + field2324: Object519 + field2325: Object98 + field2326: String + field2327: Object522! + field2330: Object98 + field2331: String + field2332: Object520 + field2333: Object520 +} + +type Object522 @Directive10(argument10 : "stringValue3639", argument9 : "stringValue3638") { + field2328: String + field2329: [Object316!]! +} + +type Object523 @Directive10(argument10 : "stringValue3643", argument9 : "stringValue3642") { + field2334: Object98 + field2335: String + field2336: Object98 + field2337: String! + field2338: Object520 + field2339: Object520 + field2340: Union60 + field2341: Object524 +} + +type Object524 @Directive10(argument10 : "stringValue3647", argument9 : "stringValue3646") { + field2342: Object520 + field2343: Enum168 + field2344: Enum169 + field2345: Boolean + field2346: [Object410!]! @deprecated + field2347: [Union6] @deprecated + field2348: [Object44!]! + field2349: [Object410!]! @deprecated + field2350: [Union6] @deprecated + field2351: [Object44!]! +} + +type Object525 @Directive10(argument10 : "stringValue3659", argument9 : "stringValue3658") { + field2352: String! + field2353: Object520 +} + +type Object526 @Directive10(argument10 : "stringValue3663", argument9 : "stringValue3662") { + field2355: Enum170 + field2356: Scalar2! + field2357: Object323! + field2358: Union60 +} + +type Object527 @Directive10(argument10 : "stringValue3671", argument9 : "stringValue3670") { + field2359: Scalar2! + field2360: Object98 + field2361: Object98 +} + +type Object528 @Directive10(argument10 : "stringValue3675", argument9 : "stringValue3674") { + field2362: Object323! +} + +type Object529 @Directive10(argument10 : "stringValue3679", argument9 : "stringValue3678") { + field2363: Object323! +} + +type Object53 @Directive10(argument10 : "stringValue368", argument9 : "stringValue367") { + field193: Object54 + field202: String + field203: Boolean + field204: Boolean + field205: Object58 + field209: String +} + +type Object530 @Directive10(argument10 : "stringValue3683", argument9 : "stringValue3682") { + field2364: Enum171! + field2365: Object323! +} + +type Object531 @Directive10(argument10 : "stringValue3691", argument9 : "stringValue3690") { + field2366: String + field2367: String + field2368: String @deprecated + field2369: Object105! + field2370: Enum172! + field2371: Object316 + field2372: String + field2373: Union60 + field2374: String! +} + +type Object532 @Directive10(argument10 : "stringValue3699", argument9 : "stringValue3698") { + field2375: String! + field2376: Union60 + field2377: Object105! +} + +type Object533 @Directive10(argument10 : "stringValue3703", argument9 : "stringValue3702") { + field2378: Union70! +} + +type Object534 @Directive10(argument10 : "stringValue3711", argument9 : "stringValue3710") { + field2379: Union71! + field2380: Object535 + field2382: Object464! + field2383: String! + field2384: Object464! + field2385: String! +} + +type Object535 @Directive10(argument10 : "stringValue3719", argument9 : "stringValue3718") { + field2381: Object493 +} + +type Object536 @Directive10(argument10 : "stringValue3723", argument9 : "stringValue3722") { + field2386: Union71! + field2387: Object535 + field2388: Object464! + field2389: String! + field2390: Object464! + field2391: String! +} + +type Object537 @Directive10(argument10 : "stringValue3727", argument9 : "stringValue3726") { + field2392: Object319 + field2393: String + field2394: String + field2395: Enum173! + field2396: Object316 + field2397: String! + field2398: String! +} + +type Object538 @Directive10(argument10 : "stringValue3735", argument9 : "stringValue3734") { + field2399: Object539! +} + +type Object539 @Directive9(argument8 : "stringValue3737") { + field2400: ID! + field2401: Scalar1! + field2402: Scalar2 @Directive7(argument6 : "stringValue3738") @Directive8(argument7 : EnumValue9) +} + +type Object54 @Directive10(argument10 : "stringValue372", argument9 : "stringValue371") { + field194: Object55 + field198: Object56 + field200: Object57 +} + +type Object540 @Directive10(argument10 : "stringValue3743", argument9 : "stringValue3742") { + field2403: Object235 + field2404: Union72! + field2446: [Object464!] +} + +type Object541 @Directive10(argument10 : "stringValue3751", argument9 : "stringValue3750") { + field2405: Boolean! + field2406: String + field2407: Enum174! + field2408: Boolean + field2409: String! + field2410: Object464! + field2411: String + field2412: Object464! +} + +type Object542 @Directive10(argument10 : "stringValue3759", argument9 : "stringValue3758") { + field2413: Object98 + field2414: Object98 @deprecated + field2415: String + field2416: Object98 + field2417: Object98 @deprecated + field2418: Int! +} + +type Object543 @Directive10(argument10 : "stringValue3763", argument9 : "stringValue3762") { + field2419: String! + field2420: Enum175! + field2421: Object464! + field2422: Union73 + field2426: String! + field2427: Object464! + field2428: Union73 + field2429: String! + field2430: Object545 + field2433: String! +} + +type Object544 @Directive10(argument10 : "stringValue3775", argument9 : "stringValue3774") { + field2423: String! + field2424: Object464! + field2425: String! +} + +type Object545 @Directive10(argument10 : "stringValue3779", argument9 : "stringValue3778") { + field2431: Object493 + field2432: Object493 +} + +type Object546 @Directive10(argument10 : "stringValue3783", argument9 : "stringValue3782") { + field2434: Object98 + field2435: Object547 + field2437: Boolean + field2438: Boolean + field2439: [Object410!] @deprecated + field2440: [Union6] @deprecated + field2441: [Object44!] + field2442: Object98 + field2443: Object410! @deprecated + field2444: Union6 @deprecated + field2445: Object44! +} + +type Object547 @Directive10(argument10 : "stringValue3787", argument9 : "stringValue3786") { + field2436: [Object464!] +} + +type Object548 @Directive10(argument10 : "stringValue3791", argument9 : "stringValue3790") { + field2447: Object549! +} + +type Object549 @Directive10(argument10 : "stringValue3795", argument9 : "stringValue3794") { + field2448: [Object469!] + field2449: String + field2450: Float + field2451: String! +} + +type Object55 @Directive10(argument10 : "stringValue376", argument9 : "stringValue375") { + field195: String + field196: String + field197: String +} + +type Object550 @Directive10(argument10 : "stringValue3799", argument9 : "stringValue3798") { + field2452: [Object549!]! +} + +type Object551 @Directive10(argument10 : "stringValue3803", argument9 : "stringValue3802") { + field2453: String + field2454: Object316 + field2455: Object105! + field2456: Object484! + field2457: String + field2458: String! + field2459: String +} + +type Object552 @Directive10(argument10 : "stringValue3807", argument9 : "stringValue3806") { + field2460: String + field2461: Object105! + field2462: Object484! + field2463: String + field2464: String! + field2465: String + field2466: String +} + +type Object553 @Directive10(argument10 : "stringValue3811", argument9 : "stringValue3810") { + field2467: Enum137! + field2468: Object432! +} + +type Object554 @Directive10(argument10 : "stringValue3815", argument9 : "stringValue3814") { + field2469: String + field2470: Enum176 + field2471: Object549! +} + +type Object555 @Directive10(argument10 : "stringValue3823", argument9 : "stringValue3822") { + field2472: Union74! +} + +type Object556 @Directive10(argument10 : "stringValue3831", argument9 : "stringValue3830") { + field2473: Object410! @deprecated + field2474: Union6 @deprecated + field2475: Object44! +} + +type Object557 @Directive10(argument10 : "stringValue3835", argument9 : "stringValue3834") { + field2476: Object319 @deprecated + field2477: Union75! + field2501: Object316 + field2502: String! @deprecated + field2503: String! @deprecated + field2504: Object105 +} + +type Object558 @Directive10(argument10 : "stringValue3843", argument9 : "stringValue3842") { + field2478: Object319 + field2479: String + field2480: String + field2481: String! + field2482: [Object410!] @deprecated + field2483: [Union6] @deprecated + field2484: [Object44!] +} + +type Object559 @Directive10(argument10 : "stringValue3847", argument9 : "stringValue3846") { + field2485: Object319 + field2486: Object410! @deprecated + field2487: Union6 @deprecated + field2488: Object44! +} + +type Object56 @Directive10(argument10 : "stringValue380", argument9 : "stringValue379") { + field199: String! +} + +type Object560 @Directive10(argument10 : "stringValue3851", argument9 : "stringValue3850") { + field2489: Union76 + field2495: Object98 + field2496: String! +} + +type Object561 @Directive10(argument10 : "stringValue3859", argument9 : "stringValue3858") { + field2490: String! + field2491: Enum166! + field2492: Object105! +} + +type Object562 @Directive10(argument10 : "stringValue3863", argument9 : "stringValue3862") { + field2493: String! + field2494: Object105! +} + +type Object563 @Directive10(argument10 : "stringValue3867", argument9 : "stringValue3866") { + field2497: Object553! +} + +type Object564 @Directive10(argument10 : "stringValue3871", argument9 : "stringValue3870") { + field2498: Object319 + field2499: String! @deprecated + field2500: String! +} + +type Object565 @Directive10(argument10 : "stringValue3875", argument9 : "stringValue3874") { + field2505: Object566 + field2507: Object233! + field2508: Enum177! + field2509: Enum178! +} + +type Object566 @Directive10(argument10 : "stringValue3879", argument9 : "stringValue3878") { + field2506: Object493 +} + +type Object567 @Directive10(argument10 : "stringValue3891", argument9 : "stringValue3890") { + field2510: Scalar3 + field2511: [Object568!]! +} + +type Object568 @Directive10(argument10 : "stringValue3895", argument9 : "stringValue3894") { + field2512: Object235 + field2513: Object466 + field2514: Object233! +} + +type Object569 @Directive10(argument10 : "stringValue3899", argument9 : "stringValue3898") { + field2515: Enum179! + field2516: String + field2517: String + field2518: Object233! +} + +type Object57 @Directive10(argument10 : "stringValue384", argument9 : "stringValue383") { + field201: String! +} + +type Object570 @Directive10(argument10 : "stringValue3907", argument9 : "stringValue3906") { + field2519: [Object28!] + field2520: [Object323!] @deprecated + field2521: [Object152!] @deprecated + field2522: [Union8] @deprecated + field2523: [Object114!] + field2524: [Object410!] @deprecated + field2525: [Union6] @deprecated + field2526: [Object44!] + field2527: [Object571!] + field2532: String + field2533: [Object506!] + field2534: [Object572!] + field2536: String @deprecated + field2537: String! + field2538: Object484 + field2539: String + field2540: Object573 + field2544: Object105! +} + +type Object571 @Directive10(argument10 : "stringValue3911", argument9 : "stringValue3910") { + field2528: String + field2529: String + field2530: Enum180! + field2531: String +} + +type Object572 @Directive10(argument10 : "stringValue3919", argument9 : "stringValue3918") { + field2535: String! +} + +type Object573 @Directive10(argument10 : "stringValue3923", argument9 : "stringValue3922") { + field2541: String + field2542: String + field2543: Object105 +} + +type Object574 @Directive10(argument10 : "stringValue3927", argument9 : "stringValue3926") { + field2545: Enum181 + field2546: Object575! +} + +type Object575 @Directive9(argument8 : "stringValue3933") { + field2547: Enum182 @Directive7(argument6 : "stringValue3934") @Directive8(argument7 : EnumValue9) + field2548: Object128 @Directive7(argument6 : "stringValue3940") @Directive8(argument7 : EnumValue9) + field2549: Scalar3 @Directive7(argument6 : "stringValue3942") @Directive8(argument7 : EnumValue9) + field2550: Object128 @Directive7(argument6 : "stringValue3944") @Directive8(argument7 : EnumValue9) + field2551: Object128 @Directive7(argument6 : "stringValue3946") @Directive8(argument7 : EnumValue9) + field2552: String @Directive7(argument6 : "stringValue3948") @Directive8(argument7 : EnumValue9) + field2553: Boolean @Directive7(argument6 : "stringValue3950") @Directive8(argument7 : EnumValue9) + field2554: ID! + field2555(argument139: Scalar2!): Boolean @Directive2 @Directive7(argument6 : "stringValue3952") @Directive8(argument7 : EnumValue9) + field2556: Object422 @Directive7(argument6 : "stringValue3954") @Directive8(argument7 : EnumValue9) + field2557: Object422 @Directive7(argument6 : "stringValue3956") @Directive8(argument7 : EnumValue9) + field2558: Scalar3 @Directive7(argument6 : "stringValue3958") @Directive8(argument7 : EnumValue9) + field2559(argument140: Int, argument141: String): Union77 @Directive7(argument6 : "stringValue3960") @Directive8(argument7 : EnumValue9) + field2566: Object422 @Directive7(argument6 : "stringValue3978") @Directive8(argument7 : EnumValue9) + field2567: Boolean @Directive7(argument6 : "stringValue3980") @Directive8(argument7 : EnumValue9) + field2568: String @Directive7(argument6 : "stringValue3982") @Directive8(argument7 : EnumValue9) + field2569: Object410 @Directive7(argument6 : "stringValue3984") @Directive8(argument7 : EnumValue9) @deprecated + field2570: Union6 @Directive7(argument6 : "stringValue3986") @Directive8(argument7 : EnumValue9) @deprecated + field2571: Object44 @Directive7(argument6 : "stringValue3988") @Directive8(argument7 : EnumValue9) + field2572: Boolean @Directive7(argument6 : "stringValue3990") @Directive8(argument7 : EnumValue9) + field2573: Object422 @Directive7(argument6 : "stringValue3992") @Directive8(argument7 : EnumValue9) + field2574(argument142: [Scalar2!]!, argument143: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue3994") @Directive8(argument7 : EnumValue9) + field2575(argument144: [Scalar2!]!, argument145: Scalar2!): Object423 @Directive2 @Directive7(argument6 : "stringValue3996") @Directive8(argument7 : EnumValue9) + field2576: Scalar1! + field2577: Scalar3 @Directive7(argument6 : "stringValue3998") @Directive8(argument7 : EnumValue9) + field2578(argument146: Int, argument147: String): Union77 @Directive7(argument6 : "stringValue4000") @Directive8(argument7 : EnumValue9) + field2579: Object422 @Directive7(argument6 : "stringValue4002") @Directive8(argument7 : EnumValue9) + field2580(argument148: String, argument149: Scalar4): Union78 @Directive7(argument6 : "stringValue4004") @Directive8(argument7 : EnumValue9) + field2584: Object422 @Directive7(argument6 : "stringValue4018") @Directive8(argument7 : EnumValue9) +} + +type Object576 @Directive10(argument10 : "stringValue3969", argument9 : "stringValue3968") { + field2560: Object7! +} + +type Object577 @Directive10(argument10 : "stringValue3973", argument9 : "stringValue3972") { + field2561: [Object578]! + field2565: Object182! +} + +type Object578 @Directive10(argument10 : "stringValue3977", argument9 : "stringValue3976") { + field2562: Object410! @deprecated + field2563: Union6 @deprecated + field2564: Object44! +} + +type Object579 @Directive10(argument10 : "stringValue4013", argument9 : "stringValue4012") { + field2581: [Object304!]! + field2582: Object182! +} + +type Object58 @Directive10(argument10 : "stringValue388", argument9 : "stringValue387") { + field206: Object410! @deprecated + field207: Union6 @deprecated + field208: Object44! +} + +type Object580 @Directive10(argument10 : "stringValue4017", argument9 : "stringValue4016") { + field2583: Object7! +} + +type Object581 @Directive10(argument10 : "stringValue4023", argument9 : "stringValue4022") { + field2585: Object582 @Directive2 + field2591: Enum183! + field2592: Boolean + field2593: Object585 + field2596: Object484 + field2597: Object586 + field2599: Union60 + field2600: Object410! @deprecated + field2601: Union6 @deprecated + field2602: Object44! +} + +type Object582 @Directive10(argument10 : "stringValue4027", argument9 : "stringValue4026") { + field2586: [Object583!]! +} + +type Object583 @Directive10(argument10 : "stringValue4031", argument9 : "stringValue4030") { + field2587: Object584! + field2590: Int! +} + +type Object584 @Directive9(argument8 : "stringValue4033") { + field2588: ID! + field2589: String! +} + +type Object585 @Directive10(argument10 : "stringValue4041", argument9 : "stringValue4040") { + field2594: [Object469!] + field2595: [Object469!] +} + +type Object586 @Directive10(argument10 : "stringValue4045", argument9 : "stringValue4044") { + field2598: Object493 +} + +type Object587 @Directive10(argument10 : "stringValue4049", argument9 : "stringValue4048") { + field2603: Object164! +} + +type Object588 @Directive10(argument10 : "stringValue4053", argument9 : "stringValue4052") { + field2604: Union79! +} + +type Object589 @Directive10(argument10 : "stringValue4061", argument9 : "stringValue4060") { + field2605: Enum184! + field2606: Enum185! + field2607: Object233! + field2608: Object105 +} + +type Object59 @Directive10(argument10 : "stringValue392", argument9 : "stringValue391") { + field214: [Object60!] + field222: [Object63!] +} + +type Object590 @Directive10(argument10 : "stringValue4073", argument9 : "stringValue4072") { + field2609: Object591 + field2614: Object233! + field2615: String +} + +type Object591 @Directive10(argument10 : "stringValue4077", argument9 : "stringValue4076") { + field2610: Object105 + field2611: [Object410!]! @deprecated + field2612: [Union6] @deprecated + field2613: [Object44!]! +} + +type Object592 @Directive10(argument10 : "stringValue4081", argument9 : "stringValue4080") { + field2619: Object493 +} + +type Object593 @Directive10(argument10 : "stringValue4085", argument9 : "stringValue4084") { + field2620: Object235 + field2621: Enum186! + field2622: Object466 + field2623: Object594 + field2629: Object595 + field2645: [Object599]! + field2654: Object601 + field2663: Union80 +} + +type Object594 @Directive10(argument10 : "stringValue4093", argument9 : "stringValue4092") { + field2624: Boolean + field2625: Enum187! + field2626: Object105 + field2627: String! + field2628: String +} + +type Object595 @Directive10(argument10 : "stringValue4101", argument9 : "stringValue4100") { + field2630: Object596 + field2633: Object597 + field2638: Object316 + field2639: Enum188! + field2640: Enum166 + field2641: Object105 + field2642: Union60 + field2643: Boolean + field2644: String! +} + +type Object596 @Directive10(argument10 : "stringValue4105", argument9 : "stringValue4104") { + field2631: String! + field2632: Object105! +} + +type Object597 @Directive10(argument10 : "stringValue4109", argument9 : "stringValue4108") { + field2634: [Object598!] +} + +type Object598 @Directive10(argument10 : "stringValue4113", argument9 : "stringValue4112") { + field2635: Object410! @deprecated + field2636: Union6 @deprecated + field2637: Object44! +} + +type Object599 @Directive10(argument10 : "stringValue4121", argument9 : "stringValue4120") { + field2646: Boolean + field2647: String! + field2648: Object430! + field2649: Object600 +} + +type Object6 @Directive10(argument10 : "stringValue60", argument9 : "stringValue59") { + field20: Enum8! + field21: Object7! +} + +type Object60 { + field215: String! + field216: [Object61!]! +} + +type Object600 @Directive10(argument10 : "stringValue4125", argument9 : "stringValue4124") { + field2650: Enum186 + field2651: Boolean + field2652: Boolean + field2653: String +} + +type Object601 @Directive10(argument10 : "stringValue4129", argument9 : "stringValue4128") { + field2655: Object602 + field2657: Object603 + field2661: Object604 +} + +type Object602 @Directive10(argument10 : "stringValue4133", argument9 : "stringValue4132") { + field2656: Scalar2 +} + +type Object603 @Directive10(argument10 : "stringValue4137", argument9 : "stringValue4136") { + field2658: [Scalar2!] + field2659: Boolean + field2660: Union60 +} + +type Object604 @Directive10(argument10 : "stringValue4141", argument9 : "stringValue4140") { + field2662: Int +} + +type Object605 @Directive10(argument10 : "stringValue4149", argument9 : "stringValue4148") { + field2664: Int! + field2665: Int! +} + +type Object606 @Directive10(argument10 : "stringValue4153", argument9 : "stringValue4152") { + field2669: String! + field2670: String + field2671: [Object599]! + field2672: Boolean +} + +type Object607 @Directive10(argument10 : "stringValue4157", argument9 : "stringValue4156") { + field2673: Object425! + field2674: String! +} + +type Object608 @Directive10(argument10 : "stringValue4161", argument9 : "stringValue4160") { + field2675: Boolean! @deprecated +} + +type Object609 @Directive10(argument10 : "stringValue4165", argument9 : "stringValue4164") { + field2676: Boolean! @deprecated +} + +type Object61 @Directive10(argument10 : "stringValue396", argument9 : "stringValue395") { + field217: Object62 +} + +type Object610 @Directive10(argument10 : "stringValue4169", argument9 : "stringValue4168") { + field2677: [String!]! +} + +type Object611 @Directive10(argument10 : "stringValue4173", argument9 : "stringValue4172") { + field2678: Scalar2! +} + +type Object612 @Directive10(argument10 : "stringValue4177", argument9 : "stringValue4176") { + field2679: Boolean + field2680: Boolean +} + +type Object613 @Directive10(argument10 : "stringValue4181", argument9 : "stringValue4180") { + field2681: Object425! +} + +type Object614 @Directive10(argument10 : "stringValue4185", argument9 : "stringValue4184") { + field2682: [String!]! +} + +type Object615 @Directive10(argument10 : "stringValue4189", argument9 : "stringValue4188") { + field2683: Object425! + field2684: String! +} + +type Object616 @Directive10(argument10 : "stringValue4193", argument9 : "stringValue4192") { + field2685: [Object235!]! +} + +type Object617 @Directive10(argument10 : "stringValue4197", argument9 : "stringValue4196") { + field2686: Enum189! + field2687: Object235 + field2688: Int + field2689: Object618! + field2693: Int + field2694: Enum190! + field2695: Object619 + field2698: Object620 + field2700: Object98 + field2701: String @deprecated + field2702: Int + field2703: [Object410!] @deprecated + field2704: [Union6] @deprecated + field2705: [Object44!] +} + +type Object618 @Directive10(argument10 : "stringValue4205", argument9 : "stringValue4204") { + field2690: Enum106! + field2691: Enum106 + field2692: Enum106! +} + +type Object619 @Directive10(argument10 : "stringValue4213", argument9 : "stringValue4212") { + field2696: Enum191! + field2697: Enum106! +} + +type Object62 @Directive10(argument10 : "stringValue400", argument9 : "stringValue399") { + field218: Int! + field219: Int! + field220: Int! + field221: Int! +} + +type Object620 @Directive10(argument10 : "stringValue4221", argument9 : "stringValue4220") { + field2699: String +} + +type Object621 @Directive10(argument10 : "stringValue4225", argument9 : "stringValue4224") { + field2706: Object235 + field2707: Union81! +} + +type Object622 @Directive10(argument10 : "stringValue4233", argument9 : "stringValue4232") { + field2708: Object98 + field2709: Object547 + field2710: Enum192! + field2711: Object316 + field2712: Enum193 + field2713: [Object464!] + field2714: Object623! + field2723: Object98! + field2724: Object623 + field2725: Object98 +} + +type Object623 @Directive10(argument10 : "stringValue4245", argument9 : "stringValue4244") { + field2715: Enum194 + field2716: [Object464!] + field2717: Object235 + field2718: Union82! + field2721: Enum166 + field2722: String! +} + +type Object624 @Directive10(argument10 : "stringValue4257", argument9 : "stringValue4256") { + field2719: Object98 +} + +type Object625 @Directive10(argument10 : "stringValue4261", argument9 : "stringValue4260") { + field2720: Object105! +} + +type Object626 @Directive10(argument10 : "stringValue4265", argument9 : "stringValue4264") { + field2726: Object627 + field2730: Object547 + field2731: Boolean + field2732: Enum196! + field2733: Object627 @deprecated + field2734: [Object464!] + field2735: Object623! + field2736: Object98! + field2737: Object623 + field2738: Object98 +} + +type Object627 @Directive10(argument10 : "stringValue4269", argument9 : "stringValue4268") { + field2727: Object316! + field2728: Enum195 + field2729: Enum193! +} + +type Object628 @Directive10(argument10 : "stringValue4281", argument9 : "stringValue4280") { + field2739: Enum197! +} + +type Object629 @Directive10(argument10 : "stringValue4289", argument9 : "stringValue4288") { + field2741: Object630 + field2744: Object261 + field2745: String +} + +type Object63 { + field223: String! + field224: Object64! +} + +type Object630 @Directive10(argument10 : "stringValue4293", argument9 : "stringValue4292") { + field2742: Boolean! + field2743: Object105! +} + +type Object631 @Directive10(argument10 : "stringValue4297", argument9 : "stringValue4296") { + field2747: [Object632] + field2782: [Object643] +} + +type Object632 { + field2748: String! + field2749: Object633! +} + +type Object633 @Directive10(argument10 : "stringValue4301", argument9 : "stringValue4300") { + field2750: [String!] + field2751: Object235 + field2752: String + field2753: Enum198 + field2754: String + field2755: Enum199! + field2756: String + field2757: Boolean + field2758: Enum166 + field2759: String + field2760: Union83 + field2781: String +} + +type Object634 @Directive10(argument10 : "stringValue4317", argument9 : "stringValue4316") { + field2761: Object410! @deprecated + field2762: Union6 @deprecated + field2763: Object44! +} + +type Object635 @Directive10(argument10 : "stringValue4321", argument9 : "stringValue4320") { + field2764: Object233! +} + +type Object636 @Directive10(argument10 : "stringValue4325", argument9 : "stringValue4324") { + field2765: Object575! + field2766: Object410! @deprecated + field2767: Union6 @deprecated + field2768: Object44! +} + +type Object637 @Directive10(argument10 : "stringValue4329", argument9 : "stringValue4328") { + field2769: Object152! @deprecated + field2770: Union8 @deprecated + field2771: Object114! +} + +type Object638 @Directive10(argument10 : "stringValue4333", argument9 : "stringValue4332") { + field2772: Object233! +} + +type Object639 @Directive10(argument10 : "stringValue4337", argument9 : "stringValue4336") { + field2773: Object233! +} + +type Object64 @Directive10(argument10 : "stringValue404", argument9 : "stringValue403") { + field225: Int! + field226: Int! +} + +type Object640 @Directive10(argument10 : "stringValue4341", argument9 : "stringValue4340") { + field2774: Object410! @deprecated + field2775: Union6 @deprecated + field2776: Object44! +} + +type Object641 @Directive10(argument10 : "stringValue4345", argument9 : "stringValue4344") { + field2777: Object575! +} + +type Object642 @Directive10(argument10 : "stringValue4349", argument9 : "stringValue4348") { + field2778: Object410! @deprecated + field2779: Union6 @deprecated + field2780: Object44! +} + +type Object643 { + field2783: String! + field2784: [Union57]! +} + +type Object644 @Directive10(argument10 : "stringValue4361", argument9 : "stringValue4360") { + field2790: [String!]! + field2791: Boolean! +} + +type Object645 @Directive10(argument10 : "stringValue4367", argument9 : "stringValue4366") { + field2793: Object646! + field2804: Float! +} + +type Object646 @Directive10(argument10 : "stringValue4371", argument9 : "stringValue4370") { + field2794: Object647 + field2799: Object649 +} + +type Object647 @Directive10(argument10 : "stringValue4375", argument9 : "stringValue4374") { + field2795: Object648! + field2798: Boolean! +} + +type Object648 @Directive9(argument8 : "stringValue4377") { + field2796: ID! + field2797: String! +} + +type Object649 @Directive10(argument10 : "stringValue4381", argument9 : "stringValue4380") { + field2800: Object441! + field2801: [Object410!]! @deprecated + field2802: [Union6] @deprecated + field2803: [Object44!]! +} + +type Object65 @Directive10(argument10 : "stringValue408", argument9 : "stringValue407") { + field228: Boolean +} + +type Object650 { + field2807: [Union85!]! + field2808: Object182! +} + +type Object651 { + field2809: [Object652!]! +} + +type Object652 { + field2810: String! +} + +type Object653 { + field2814: [Object654!]! + field2819: Object182! +} + +type Object654 { + field2815: Boolean + field2816: Scalar2! + field2817: Object128 + field2818: String! +} + +type Object655 @Directive9(argument8 : "stringValue4395") { + field2821: Boolean @Directive7(argument6 : "stringValue4396") @Directive8(argument7 : EnumValue9) + field2822: ID! + field2823: String @Directive7(argument6 : "stringValue4398") @Directive8(argument7 : EnumValue9) + field2824: Scalar1! +} + +type Object656 @Directive9(argument8 : "stringValue4405") { + field2827: Scalar2 @Directive7(argument6 : "stringValue4406") @Directive8(argument7 : EnumValue9) + field2828: ID! + field2829: Object657 @Directive7(argument6 : "stringValue4408") @Directive8(argument7 : EnumValue9) + field2832: Object658 @Directive7(argument6 : "stringValue4418") @Directive8(argument7 : EnumValue9) + field2844: [Object661!] @Directive7(argument6 : "stringValue4438") @Directive8(argument7 : EnumValue9) + field2850: String! +} + +type Object657 @Directive10(argument10 : "stringValue4413", argument9 : "stringValue4412") { + field2830: Enum200! + field2831: Scalar2! +} + +type Object658 @Directive9(argument8 : "stringValue4421") { + field2833: String @Directive7(argument6 : "stringValue4422") @Directive8(argument7 : EnumValue9) + field2834: ID! + field2835: Object659 @Directive7(argument6 : "stringValue4424") @Directive8(argument7 : EnumValue9) + field2837: [Object660!] @Directive7(argument6 : "stringValue4430") @Directive8(argument7 : EnumValue9) + field2842: String! + field2843: String @Directive7(argument6 : "stringValue4436") @Directive8(argument7 : EnumValue9) +} + +type Object659 @Directive10(argument10 : "stringValue4429", argument9 : "stringValue4428") { + field2836: String! +} + +type Object66 { + field230: String! + field231: String! +} + +type Object660 @Directive10(argument10 : "stringValue4435", argument9 : "stringValue4434") { + field2838: String + field2839: String! @Directive2 + field2840: String! + field2841: String +} + +type Object661 @Directive9(argument8 : "stringValue4441") { + field2845: String @Directive7(argument6 : "stringValue4442") @Directive8(argument7 : EnumValue9) + field2846: ID! + field2847: String @Directive7(argument6 : "stringValue4444") @Directive8(argument7 : EnumValue9) + field2848: String @Directive7(argument6 : "stringValue4446") @Directive8(argument7 : EnumValue9) + field2849: String! +} + +type Object662 @Directive9(argument8 : "stringValue4451") { + field2852: Object663 @Directive7(argument6 : "stringValue4452") @Directive8(argument7 : EnumValue9) + field2858(argument162: String!): Object664 @Directive7(argument6 : "stringValue4462") @Directive8(argument7 : EnumValue9) @deprecated + field2914(argument163: String!): Object678 @Directive7(argument6 : "stringValue4554") @Directive8(argument7 : EnumValue9) + field2918: [Object680!] @Directive7(argument6 : "stringValue4572") @Directive8(argument7 : EnumValue9) + field2943: ID! + field2944: Scalar1! + field2945: Object687 @Directive2 @Directive7(argument6 : "stringValue4628") @Directive8(argument7 : EnumValue9) +} + +type Object663 @Directive10(argument10 : "stringValue4457", argument9 : "stringValue4456") { + field2853: Object410! @deprecated + field2854: Union6 @deprecated + field2855: Object44! + field2856: String! + field2857: Enum201! +} + +type Object664 @Directive9(argument8 : "stringValue4465") { + field2859: ID! + field2860: Object665 @Directive7(argument6 : "stringValue4466") @Directive8(argument7 : EnumValue9) + field2904: Object673 @Directive7(argument6 : "stringValue4524") @Directive8(argument7 : EnumValue9) + field2913: Scalar1! +} + +type Object665 @Directive10(argument10 : "stringValue4471", argument9 : "stringValue4470") { + field2861: Object666 + field2868: Object667! + field2888: Object670 + field2898: Object672! +} + +type Object666 @Directive10(argument10 : "stringValue4475", argument9 : "stringValue4474") { + field2862: Enum202 + field2863: String + field2864: Enum203 + field2865: String + field2866: Int + field2867: String +} + +type Object667 @Directive10(argument10 : "stringValue4487", argument9 : "stringValue4486") { + field2869: [Object128!] + field2870: Enum204! + field2871: Enum205 + field2872: Object128! + field2873: String! + field2874: Object290! + field2875: Int + field2876: Object290 + field2877: [String!] + field2878: String + field2879: Object668! + field2883: Object669 + field2887: String! +} + +type Object668 @Directive10(argument10 : "stringValue4499", argument9 : "stringValue4498") { + field2880: Enum206! + field2881: Scalar2! + field2882: Int! @deprecated +} + +type Object669 @Directive10(argument10 : "stringValue4507", argument9 : "stringValue4506") { + field2884: String + field2885: Object668! + field2886: String +} + +type Object67 @Directive10(argument10 : "stringValue412", argument9 : "stringValue411") { + field233: Enum29 + field234: Enum30! + field235: Union7 +} + +type Object670 @Directive10(argument10 : "stringValue4511", argument9 : "stringValue4510") { + field2889: String + field2890: [String!] + field2891: Object671 + field2895: String + field2896: String + field2897: String +} + +type Object671 @Directive10(argument10 : "stringValue4515", argument9 : "stringValue4514") { + field2892: Int + field2893: String + field2894: String +} + +type Object672 @Directive10(argument10 : "stringValue4519", argument9 : "stringValue4518") { + field2899: Scalar2! + field2900: Enum207 + field2901: String! + field2902: Scalar2! + field2903: Enum207 +} + +type Object673 @Directive10(argument10 : "stringValue4529", argument9 : "stringValue4528") { + field2905: [Union86!]! @Directive2 + field2912: Enum208! @Directive2 +} + +type Object674 @Directive10(argument10 : "stringValue4537", argument9 : "stringValue4536") { + field2906: [Object675!]! @Directive2 + field2908: Boolean! @Directive2 +} + +type Object675 @Directive10(argument10 : "stringValue4541", argument9 : "stringValue4540") { + field2907: String @Directive2 +} + +type Object676 @Directive10(argument10 : "stringValue4545", argument9 : "stringValue4544") { + field2909: [Object677!]! @Directive2 + field2911: Boolean! @Directive2 +} + +type Object677 @Directive10(argument10 : "stringValue4549", argument9 : "stringValue4548") { + field2910: String @Directive2 +} + +type Object678 @Directive9(argument8 : "stringValue4557") { + field2915: Union87 @Directive2 @Directive7(argument6 : "stringValue4558") @Directive8(argument7 : EnumValue9) + field2917: String @deprecated +} + +type Object679 @Directive10(argument10 : "stringValue4567", argument9 : "stringValue4566") { + field2916: Enum209! +} + +type Object68 @Directive10(argument10 : "stringValue428", argument9 : "stringValue427") { + field236: String! +} + +type Object680 @Directive9(argument8 : "stringValue4575") { + field2919(argument164: String, argument165: Int): Object681 @Directive7(argument6 : "stringValue4576") @Directive8(argument7 : EnumValue9) + field2936: ID! + field2937: Object686 @Directive7(argument6 : "stringValue4618") @Directive8(argument7 : EnumValue9) + field2942: Scalar1! +} + +type Object681 @Directive10(argument10 : "stringValue4581", argument9 : "stringValue4580") { + field2920: [Union88!]! @deprecated + field2931: [Union89]! + field2935: Object182! +} + +type Object682 @Directive9(argument8 : "stringValue4587") { + field2921(argument166: Int): [Object664!] @Directive7(argument6 : "stringValue4588") @Directive8(argument7 : EnumValue9) @deprecated + field2922(argument167: Int): [Object678!] @Directive7(argument6 : "stringValue4590") @Directive8(argument7 : EnumValue9) + field2923: ID! + field2924: Object683 @Directive7(argument6 : "stringValue4592") @Directive8(argument7 : EnumValue9) + field2930: Scalar1! +} + +type Object683 @Directive10(argument10 : "stringValue4597", argument9 : "stringValue4596") { + field2925: Object662! + field2926: Object664 @deprecated + field2927: Object678 + field2928: String! + field2929: Scalar2! +} + +type Object684 @Directive9(argument8 : "stringValue4603") { + field2932: Union90 @Directive2 @Directive7(argument6 : "stringValue4604") @Directive8(argument7 : EnumValue9) + field2934: String @deprecated +} + +type Object685 @Directive10(argument10 : "stringValue4613", argument9 : "stringValue4612") { + field2933: Enum210! +} + +type Object686 @Directive10(argument10 : "stringValue4623", argument9 : "stringValue4622") { + field2938: Object662! + field2939: String + field2940: String! + field2941: Enum211! +} + +type Object687 @Directive10(argument10 : "stringValue4633", argument9 : "stringValue4632") { + field2946: Boolean + field2947: String + field2948: String + field2949: String! + field2950: Boolean + field2951: String +} + +type Object688 { + field2953: [Object170!]! + field2954: Object182! +} + +type Object689 @Directive10(argument10 : "stringValue4651", argument9 : "stringValue4650") { + field2959: [Object441!]! + field2960: Object182! +} + +type Object69 @Directive10(argument10 : "stringValue432", argument9 : "stringValue431") { + field239: Object70 + field244: Object71 + field246: Object72 + field249: Boolean! +} + +type Object690 { + field2962: [Object441!]! + field2963: Object182! +} + +type Object691 @Directive10(argument10 : "stringValue4659", argument9 : "stringValue4658") { + field2965: [Object692!]! + field2969: Object182! +} + +type Object692 @Directive10(argument10 : "stringValue4663", argument9 : "stringValue4662") { + field2966: Scalar3! + field2967: Scalar3! + field2968: String! +} + +type Object693 @Directive10(argument10 : "stringValue4679", argument9 : "stringValue4678") { + field2974: [Object694!] + field3059: [Object724!] + field3061: [Object695!] +} + +type Object694 @Directive10(argument10 : "stringValue4683", argument9 : "stringValue4682") { + field2975: Object695 + field3055: Enum218! + field3056: Union91 + field3057: String! + field3058: String! +} + +type Object695 @Directive10(argument10 : "stringValue4687", argument9 : "stringValue4686") { + field2976: Boolean! + field2977: Scalar2! + field2978: Union91! +} + +type Object696 @Directive10(argument10 : "stringValue4695", argument9 : "stringValue4694") { + field2979: Object697! + field2986: Object698! +} + +type Object697 @Directive10(argument10 : "stringValue4699", argument9 : "stringValue4698") { + field2980: Boolean + field2981: Boolean + field2982: Boolean + field2983: Boolean + field2984: Boolean + field2985: Scalar2 +} + +type Object698 @Directive10(argument10 : "stringValue4703", argument9 : "stringValue4702") { + field2987: Object699 + field2995: Object700 + field3002: Object703 + field3016: Object708 + field3018: Object290 +} + +type Object699 @Directive10(argument10 : "stringValue4707", argument9 : "stringValue4706") { + field2988: String + field2989: String + field2990: String + field2991: String + field2992: String + field2993: Object285 + field2994: String +} + +type Object7 @Directive10(argument10 : "stringValue68", argument9 : "stringValue67") { + field22: [Object8!]! +} + +type Object70 @Directive10(argument10 : "stringValue436", argument9 : "stringValue435") { + field240: Boolean + field241: String + field242: String + field243: Boolean +} + +type Object700 @Directive10(argument10 : "stringValue4711", argument9 : "stringValue4710") { + field2996: Object701 + field2998: Object702 +} + +type Object701 @Directive10(argument10 : "stringValue4715", argument9 : "stringValue4714") { + field2997: String! +} + +type Object702 @Directive10(argument10 : "stringValue4719", argument9 : "stringValue4718") { + field2999: String + field3000: String + field3001: String +} + +type Object703 @Directive10(argument10 : "stringValue4723", argument9 : "stringValue4722") { + field3003: Object704 + field3008: Boolean + field3009: Enum215 + field3010: Object704 + field3011: [Object706!] +} + +type Object704 @Directive10(argument10 : "stringValue4727", argument9 : "stringValue4726") { + field3004: Enum214! + field3005: Object705! +} + +type Object705 @Directive10(argument10 : "stringValue4735", argument9 : "stringValue4734") { + field3006: Scalar4! + field3007: Scalar4! +} + +type Object706 @Directive10(argument10 : "stringValue4743", argument9 : "stringValue4742") { + field3012: [Object707!] + field3015: Enum214 +} + +type Object707 @Directive10(argument10 : "stringValue4747", argument9 : "stringValue4746") { + field3013: Object705 + field3014: Object705 +} + +type Object708 @Directive10(argument10 : "stringValue4751", argument9 : "stringValue4750") { + field3017: String! +} + +type Object709 @Directive10(argument10 : "stringValue4755", argument9 : "stringValue4754") { + field3019: Object710! + field3021: Object711! + field3027: Object713! +} + +type Object71 @Directive10(argument10 : "stringValue440", argument9 : "stringValue439") { + field245: [String!] +} + +type Object710 @Directive10(argument10 : "stringValue4759", argument9 : "stringValue4758") { + field3020: Scalar2! +} + +type Object711 @Directive10(argument10 : "stringValue4763", argument9 : "stringValue4762") { + field3022: Object712! + field3025: String + field3026: Enum216 +} + +type Object712 @Directive10(argument10 : "stringValue4767", argument9 : "stringValue4766") { + field3023: String! + field3024: String! +} + +type Object713 @Directive10(argument10 : "stringValue4775", argument9 : "stringValue4774") { + field3028: Object714! + field3031: Object715! + field3048: Object721 + field3050: Object712! @deprecated +} + +type Object714 @Directive10(argument10 : "stringValue4779", argument9 : "stringValue4778") { + field3029: Scalar2 + field3030: Scalar2 +} + +type Object715 @Directive10(argument10 : "stringValue4783", argument9 : "stringValue4782") { + field3032: Object716! + field3034: Object717! + field3038: Object718! + field3047: Scalar2! +} + +type Object716 @Directive10(argument10 : "stringValue4787", argument9 : "stringValue4786") { + field3033: Boolean! +} + +type Object717 @Directive10(argument10 : "stringValue4791", argument9 : "stringValue4790") { + field3035: String + field3036: String! + field3037: String! +} + +type Object718 @Directive10(argument10 : "stringValue4795", argument9 : "stringValue4794") { + field3039: Object719 + field3045: String + field3046: String! +} + +type Object719 @Directive10(argument10 : "stringValue4799", argument9 : "stringValue4798") { + field3040: [Object720!] + field3044: Object720! +} + +type Object72 @Directive10(argument10 : "stringValue444", argument9 : "stringValue443") { + field247: [String!]! + field248: [String!]! +} + +type Object720 @Directive10(argument10 : "stringValue4803", argument9 : "stringValue4802") { + field3041: Int! + field3042: String! + field3043: Int! +} + +type Object721 @Directive10(argument10 : "stringValue4807", argument9 : "stringValue4806") { + field3049: String! +} + +type Object722 @Directive10(argument10 : "stringValue4811", argument9 : "stringValue4810") { + field3051: Object723! + field3054: Enum217! +} + +type Object723 @Directive10(argument10 : "stringValue4815", argument9 : "stringValue4814") { + field3052: [Union88!]! @deprecated + field3053: [Union89]! +} + +type Object724 @Directive10(argument10 : "stringValue4827", argument9 : "stringValue4826") { + field3060: Scalar2! +} + +type Object725 @Directive9(argument8 : "stringValue4831") { + field3063: ID! + field3064: Scalar1! +} + +type Object726 @Directive9(argument8 : "stringValue4835") { + field3066: Union92 @Directive3 @Directive7(argument6 : "stringValue4836") @Directive8(argument7 : EnumValue9) + field3069: String @deprecated +} + +type Object727 @Directive10(argument10 : "stringValue4845", argument9 : "stringValue4844") { + field3067: String + field3068: Enum219! +} + +type Object728 @Directive10(argument10 : "stringValue4865", argument9 : "stringValue4864") { + field3074: [Union94!]! @deprecated + field3075: [Union95] @deprecated + field3076: [Union96]! + field3077: Object182 +} + +type Object729 @Directive10(argument10 : "stringValue4893", argument9 : "stringValue4892") { + field3082: [Object730!]! +} + +type Object73 @Directive10(argument10 : "stringValue448", argument9 : "stringValue447") { + field251: Scalar3 +} + +type Object730 @Directive10(argument10 : "stringValue4897", argument9 : "stringValue4896") { + field3083: String! +} + +type Object731 @Directive10(argument10 : "stringValue4901", argument9 : "stringValue4900") { + field3084: String! +} + +type Object732 @Directive10(argument10 : "stringValue4905", argument9 : "stringValue4904") { + field3085: Object7! +} + +type Object733 @Directive10(argument10 : "stringValue4909", argument9 : "stringValue4908") { + field3086: [Object410!]! @deprecated + field3087: [Union6] @deprecated + field3088: [Object44!]! + field3089: Object182! +} + +type Object734 { + field3097: [Union99!]! + field3099: Object182! +} + +type Object735 @Directive10(argument10 : "stringValue4927", argument9 : "stringValue4926") { + field3098: Object233! +} + +type Object736 { + field3100: [Object737!]! +} + +type Object737 { + field3101: String! +} + +type Object738 @Directive10(argument10 : "stringValue4939", argument9 : "stringValue4938") { + field3105: Object739! +} + +type Object739 @Directive10(argument10 : "stringValue4943", argument9 : "stringValue4942") { + field3106: String + field3107: [Object740!]! +} + +type Object74 @Directive10(argument10 : "stringValue452", argument9 : "stringValue451") { + field254: [Object75!]! +} + +type Object740 @Directive10(argument10 : "stringValue4947", argument9 : "stringValue4946") { + field3108: Enum221! + field3109: String + field3110: String! + field3111: [Object741!]! + field3114: String + field3115: Union100 @deprecated + field3129: Enum223! +} + +type Object741 @Directive10(argument10 : "stringValue4955", argument9 : "stringValue4954") { + field3112: Enum221! + field3113: Scalar3! +} + +type Object742 @Directive10(argument10 : "stringValue4963", argument9 : "stringValue4962") { + field3116: Int! + field3117: Boolean! + field3118: Enum222! +} + +type Object743 @Directive10(argument10 : "stringValue4971", argument9 : "stringValue4970") { + field3119: Scalar2! +} + +type Object744 @Directive10(argument10 : "stringValue4975", argument9 : "stringValue4974") { + field3120: Int! +} + +type Object745 @Directive10(argument10 : "stringValue4979", argument9 : "stringValue4978") { + field3121: String! + field3122: Object410 @deprecated + field3123: Union6 @deprecated + field3124: Object44 @Directive2 + field3125: Object658! +} + +type Object746 @Directive10(argument10 : "stringValue4983", argument9 : "stringValue4982") { + field3126: Int! + field3127: Boolean! + field3128: Enum222! +} + +type Object747 @Directive10(argument10 : "stringValue4999", argument9 : "stringValue4998") { + field3134: Object748 + field3140: Scalar2! + field3141: String! @deprecated + field3142: Object749 + field3147: Object750 +} + +type Object748 @Directive10(argument10 : "stringValue5003", argument9 : "stringValue5002") { + field3135: Int + field3136: Int + field3137: Enum224! + field3138: Int + field3139: Enum224! +} + +type Object749 @Directive10(argument10 : "stringValue5011", argument9 : "stringValue5010") { + field3143: String! + field3144: String! + field3145: Boolean! + field3146: String! +} + +type Object75 @Directive10(argument10 : "stringValue456", argument9 : "stringValue455") { + field255: Scalar2 + field256: Float! + field257: Scalar2 + field258: Scalar2! + field259: Scalar2 + field260: Float! + field261: Float! + field262: Float! + field263: Float! + field264: Float! + field265: Float! +} + +type Object750 @Directive10(argument10 : "stringValue5015", argument9 : "stringValue5014") { + field3148: String! + field3149: Scalar3 + field3150: Boolean! + field3151: String! +} + +type Object751 @Directive10(argument10 : "stringValue5029", argument9 : "stringValue5028") { + field3155: [Object752]! + field3157: Object182! +} + +type Object752 @Directive10(argument10 : "stringValue5033", argument9 : "stringValue5032") { + field3156: Object575! +} + +type Object753 @Directive10(argument10 : "stringValue5045", argument9 : "stringValue5044") { + field3160: [Union103!]! @deprecated + field3161: [Union104] @deprecated + field3162: [Union105]! + field3163: Object182 +} + +type Object754 @Directive10(argument10 : "stringValue5067", argument9 : "stringValue5066") { + field3165: [Object755!]! +} + +type Object755 { + field3166: Enum226! + field3167: Object756! +} + +type Object756 @Directive10(argument10 : "stringValue5075", argument9 : "stringValue5074") { + field3168: [Scalar3!]! + field3169: [Scalar3!] +} + +type Object757 @Directive9(argument8 : "stringValue5079") { + field3171: ID! + field3172(argument207: Int, argument208: String): Object193 @Directive2 @Directive7(argument6 : "stringValue5080") @Directive8(argument7 : EnumValue9) + field3173(argument209: String, argument210: Int): Object423 @Directive2 @Directive7(argument6 : "stringValue5082") @Directive8(argument7 : EnumValue9) + field3174: Scalar3 @Directive2 @Directive7(argument6 : "stringValue5084") @Directive8(argument7 : EnumValue9) + field3175: String! +} + +type Object758 @Directive10(argument10 : "stringValue5091", argument9 : "stringValue5090") { + field3177: Union106! + field3204: Union108! + field3223: String! +} + +type Object759 @Directive10(argument10 : "stringValue5099", argument9 : "stringValue5098") { + field3178: Object760 + field3190: String + field3191: String + field3192: String + field3193: String + field3194: String + field3195: String + field3196: String + field3197: String + field3198: String + field3199: String + field3200: [Object762!] +} + +type Object76 @Directive10(argument10 : "stringValue460", argument9 : "stringValue459") { + field267: Object77 + field273: Object79 + field279: Object79 + field280: Object79 + field281: Object79 +} + +type Object760 @Directive10(argument10 : "stringValue5103", argument9 : "stringValue5102") { + field3179: Union107! + field3189: String! +} + +type Object761 @Directive10(argument10 : "stringValue5111", argument9 : "stringValue5110") { + field3180: String + field3181: Scalar3 + field3182: String + field3183: Boolean + field3184: String + field3185: String + field3186: String + field3187: String + field3188: Boolean +} + +type Object762 @Directive10(argument10 : "stringValue5115", argument9 : "stringValue5114") { + field3201: String + field3202: String + field3203: String +} + +type Object763 @Directive10(argument10 : "stringValue5123", argument9 : "stringValue5122") { + field3205: String! + field3206: String! + field3207: Enum227! + field3208: String! +} + +type Object764 @Directive10(argument10 : "stringValue5131", argument9 : "stringValue5130") { + field3209: String! + field3210: String! + field3211: Enum227! + field3212: String! +} + +type Object765 @Directive10(argument10 : "stringValue5135", argument9 : "stringValue5134") { + field3213: String! + field3214: Boolean! + field3215: String! + field3216: Enum227! + field3217: String! +} + +type Object766 @Directive10(argument10 : "stringValue5139", argument9 : "stringValue5138") { + field3218: String! + field3219: String + field3220: Enum227! + field3221: String + field3222: String +} + +type Object767 { + field3226: Boolean! + field3227: Boolean! + field3228: Boolean! + field3229: Boolean! + field3230: Boolean! + field3231: Boolean! + field3232: Boolean! + field3233: Boolean! + field3234: Enum228! + field3235: Boolean! + field3236: Boolean! + field3237: Enum228! + field3238: Boolean! + field3239: Boolean! + field3240: Boolean! + field3241: Boolean! + field3242: Boolean! + field3243: Boolean! +} + +type Object768 @Directive9(argument8 : "stringValue5195") { + field3267: [Object769!] @Directive2 @Directive7(argument6 : "stringValue5196") @Directive8(argument7 : EnumValue9) + field3271: ID! + field3272: Enum229 @Directive2 @Directive7(argument6 : "stringValue5202") @Directive8(argument7 : EnumValue9) + field3273(argument216: String!): Object770 @Directive2 @Directive7(argument6 : "stringValue5208") @Directive8(argument7 : EnumValue9) + field3278: Object770 @Directive7(argument6 : "stringValue5218") @Directive8(argument7 : EnumValue9) + field3279: Object772 @Directive7(argument6 : "stringValue5220") @Directive8(argument7 : EnumValue9) + field3283: Scalar1! +} + +type Object769 @Directive10(argument10 : "stringValue5201", argument9 : "stringValue5200") { + field3268: Boolean + field3269: Int + field3270: String +} + +type Object77 @Directive10(argument10 : "stringValue464", argument9 : "stringValue463") { + field268: [Object78!] +} + +type Object770 @Directive10(argument10 : "stringValue5213", argument9 : "stringValue5212") { + field3274: Object771 + field3277: [Object771!]! +} + +type Object771 @Directive10(argument10 : "stringValue5217", argument9 : "stringValue5216") { + field3275: String + field3276: Scalar3 +} + +type Object772 @Directive10(argument10 : "stringValue5225", argument9 : "stringValue5224") { + field3280: String + field3281: Boolean! + field3282: Enum230 +} + +type Object773 @Directive10(argument10 : "stringValue5239", argument9 : "stringValue5238") { + field3285: Enum231! +} + +type Object774 @Directive10(argument10 : "stringValue5255", argument9 : "stringValue5254") { + field3288: Object775 + field3291: [Object776!]! +} + +type Object775 @Directive10(argument10 : "stringValue5259", argument9 : "stringValue5258") { + field3289: String! + field3290: String +} + +type Object776 @Directive10(argument10 : "stringValue5263", argument9 : "stringValue5262") { + field3292: Enum104! + field3293: Object152! @deprecated + field3294: Union8 @deprecated + field3295: Object114! +} + +type Object777 @Directive10(argument10 : "stringValue5281", argument9 : "stringValue5280") { + field3303: [Object778!] +} + +type Object778 @Directive10(argument10 : "stringValue5285", argument9 : "stringValue5284") { + field3304: Scalar2! + field3305: Union91! +} + +type Object779 { + field3307: String! +} + +type Object78 @Directive10(argument10 : "stringValue468", argument9 : "stringValue467") { + field269: String + field270: String + field271: String + field272: String +} + +type Object780 @Directive10(argument10 : "stringValue5295", argument9 : "stringValue5294") { + field3310: [Object781!]! + field3334: Object182! +} + +type Object781 @Directive10(argument10 : "stringValue5299", argument9 : "stringValue5298") { + field3311: Int! + field3312: Scalar3! + field3313: Object410! @deprecated + field3314: Union6 @deprecated + field3315: Object44! + field3316: Object782! + field3328: Scalar3 + field3329: String + field3330: Object410! @deprecated + field3331: Union6 @deprecated + field3332: Object44! + field3333: Scalar3 +} + +type Object782 @Directive10(argument10 : "stringValue5303", argument9 : "stringValue5302") { + field3317: String + field3318: Scalar3! + field3319: Scalar4! + field3320: String! + field3321: Object783! + field3324: String! + field3325: Object783! + field3326: Object783! + field3327: Enum232! +} + +type Object783 @Directive10(argument10 : "stringValue5307", argument9 : "stringValue5306") { + field3322: String! + field3323: String! +} + +type Object784 { + field3337: String! + field3338: Scalar2! + field3339: String! + field3340: [Union110!]! @deprecated + field3341: [Union111] @deprecated + field3342: [Union112]! + field3343: Scalar2! + field3344: String! + field3345: Scalar2! +} + +type Object785 @Directive10(argument10 : "stringValue5327", argument9 : "stringValue5326") { + field3349: Int! + field3350: [Object410!] @deprecated + field3351: [Union6] @deprecated + field3352: [Object44!] +} + +type Object786 @Directive10(argument10 : "stringValue5333", argument9 : "stringValue5332") { + field3354: Scalar2 + field3355: Boolean! + field3356: Enum233 +} + +type Object787 @Directive10(argument10 : "stringValue5345", argument9 : "stringValue5344") { + field3359: Enum234! + field3360: Boolean! + field3361: Scalar2 + field3362: String + field3363: String! + field3364: String! + field3365: String! +} + +type Object788 @Directive10(argument10 : "stringValue5357", argument9 : "stringValue5356") { + field3368: Boolean! + field3369: Scalar2! + field3370: Object789! +} + +type Object789 @Directive10(argument10 : "stringValue5361", argument9 : "stringValue5360") { + field3371: Union113! + field3373: Enum217! +} + +type Object79 @Directive10(argument10 : "stringValue472", argument9 : "stringValue471") { + field274: [Object80!] +} + +type Object790 @Directive10(argument10 : "stringValue5369", argument9 : "stringValue5368") { + field3372: Scalar2! +} + +type Object791 @Directive10(argument10 : "stringValue5389", argument9 : "stringValue5388") { + field3382: Float! + field3383: Float +} + +type Object792 { + field3386: Scalar2! + field3387: String! + field3388: String! + field3389: Scalar2! + field3390: [Union110!]! @deprecated + field3391: [Union111] @deprecated + field3392: [Union112]! +} + +type Object793 @Directive10(argument10 : "stringValue5409", argument9 : "stringValue5408") { + field3396: [Object794!] + field3400: String +} + +type Object794 @Directive10(argument10 : "stringValue5413", argument9 : "stringValue5412") { + field3397: Enum236! + field3398: String + field3399: String +} + +type Object795 { + field3402: String! +} + +type Object796 @Directive10(argument10 : "stringValue5425", argument9 : "stringValue5424") { + field3404: Scalar3 + field3405: Enum5 + field3406: String +} + +type Object797 @Directive10(argument10 : "stringValue5443", argument9 : "stringValue5442") { + field3414: [Object798!]! + field3421: Object182! +} + +type Object798 @Directive10(argument10 : "stringValue5447", argument9 : "stringValue5446") { + field3415: Object410! @deprecated + field3416: Union6 @deprecated + field3417: Object44! + field3418: Scalar3! + field3419: String! + field3420: Enum237! +} + +type Object799 @Directive10(argument10 : "stringValue5459", argument9 : "stringValue5458") { + field3424: Scalar3! + field3425: Scalar3 +} + +type Object8 @Directive10(argument10 : "stringValue72", argument9 : "stringValue71") { + field23: String! + field24: [Object9!]! +} + +type Object80 @Directive10(argument10 : "stringValue476", argument9 : "stringValue475") { + field275: Scalar3 + field276: Scalar3 + field277: Scalar3 + field278: Scalar3 +} + +type Object800 { + field3432: String + field3433: String + field3434: String + field3435: String + field3436: String + field3437: String + field3438: String + field3439: Boolean + field3440: String + field3441: String + field3442: String + field3443: String + field3444: String + field3445: String + field3446: String + field3447: String + field3448: String + field3449: String +} + +type Object801 { + field3451: String! + field3452: Object50! + field3453: String + field3454: String + field3455: String! + field3456: String +} + +type Object802 @Directive10(argument10 : "stringValue5481", argument9 : "stringValue5480") { + field3459: [Scalar3!]! +} + +type Object803 @Directive10(argument10 : "stringValue5495", argument9 : "stringValue5494") { + field3461: [Union103!]! @deprecated + field3462: [Union104] @deprecated + field3463: [Union105]! + field3464: Object182 +} + +type Object804 @Directive10(argument10 : "stringValue5505", argument9 : "stringValue5504") { + field3466: [Object805!]! @Directive2 + field3489: Object182! @Directive2 +} + +type Object805 @Directive10(argument10 : "stringValue5509", argument9 : "stringValue5508") { + field3467: Object806! @deprecated + field3484: Object809! @Directive2 +} + +type Object806 @Directive9(argument8 : "stringValue5511") { + field3468: Object128 @Directive2 @Directive7(argument6 : "stringValue5512") @Directive8(argument7 : EnumValue9) + field3469: Object807 @Directive2 @Directive7(argument6 : "stringValue5514") @Directive8(argument7 : EnumValue9) + field3472: ID! + field3473: [Object128!] @Directive2 @Directive7(argument6 : "stringValue5520") @Directive8(argument7 : EnumValue9) + field3474: Object808 @Directive2 @Directive7(argument6 : "stringValue5522") @Directive8(argument7 : EnumValue9) + field3482: Scalar1! + field3483: String @Directive2 @Directive7(argument6 : "stringValue5532") @Directive8(argument7 : EnumValue9) +} + +type Object807 @Directive10(argument10 : "stringValue5519", argument9 : "stringValue5518") { + field3470: String! @Directive2 + field3471: String @Directive2 +} + +type Object808 @Directive10(argument10 : "stringValue5527", argument9 : "stringValue5526") { + field3475: Object410! @deprecated + field3476: Union6 @deprecated + field3477: Object44! @Directive2 + field3478: Scalar2! @Directive2 + field3479: Scalar2 @Directive2 + field3480: Scalar2! @Directive2 + field3481: Enum240! @Directive2 +} + +type Object809 @Directive9(argument8 : "stringValue5535") { + field3485: Union115 @Directive2 @Directive7(argument6 : "stringValue5536") @Directive8(argument7 : EnumValue9) + field3488: String @deprecated +} + +type Object81 @Directive10(argument10 : "stringValue480", argument9 : "stringValue479") { + field287: [Object82!] + field292: Int! + field293: Int! +} + +type Object810 @Directive10(argument10 : "stringValue5545", argument9 : "stringValue5544") { + field3486: String @Directive2 + field3487: Enum241! @Directive2 +} + +type Object811 @Directive10(argument10 : "stringValue5563", argument9 : "stringValue5562") { + field3493: Scalar2! + field3494: String! +} + +type Object812 @Directive10(argument10 : "stringValue5567", argument9 : "stringValue5566") { + field3502: String! @Directive2 + field3503: String! @Directive2 + field3504: Scalar4! @Directive2 + field3505: String! @Directive2 + field3506: Scalar4! @Directive2 +} + +type Object813 @Directive10(argument10 : "stringValue5571", argument9 : "stringValue5570") { + field3508: Boolean @Directive2 +} + +type Object814 @Directive10(argument10 : "stringValue5585", argument9 : "stringValue5584") { + field3532: [Object815]! @Directive2 + field3539: Object182! @Directive2 +} + +type Object815 @Directive10(argument10 : "stringValue5589", argument9 : "stringValue5588") { + field3533: Scalar2 @Directive2 + field3534: Scalar2! @Directive2 + field3535: String! @Directive2 + field3536: Object410! @deprecated + field3537: Union6 @deprecated + field3538: Object44! @Directive2 +} + +type Object816 @Directive10(argument10 : "stringValue5593", argument9 : "stringValue5592") { + field3540: String @Directive2 + field3541: Enum243! @Directive2 +} + +type Object817 @Directive9(argument8 : "stringValue5599") { + field3544: Union117 @Directive2 @Directive7(argument6 : "stringValue5600") @Directive8(argument7 : EnumValue9) + field3547: String @deprecated +} + +type Object818 @Directive10(argument10 : "stringValue5609", argument9 : "stringValue5608") { + field3545: String + field3546: Enum244! +} + +type Object819 { + field3549: Scalar2! + field3550: Enum245! +} + +type Object82 @Directive10(argument10 : "stringValue484", argument9 : "stringValue483") { + field288: Int! + field289: Int! + field290: Int! + field291: Int! +} + +type Object820 @Directive10(argument10 : "stringValue5623", argument9 : "stringValue5622") { + field3552: Enum246! @Directive2 +} + +type Object821 @Directive10(argument10 : "stringValue5695", argument9 : "stringValue5694") { + field3563: String +} + +type Object822 @Directive10(argument10 : "stringValue5729", argument9 : "stringValue5728") { + field3567: Object823 + field3573: Object209! +} + +type Object823 @Directive10(argument10 : "stringValue5733", argument9 : "stringValue5732") { + field3568: Object221! + field3569: Object824 +} + +type Object824 @Directive10(argument10 : "stringValue5737", argument9 : "stringValue5736") { + field3570: String! + field3571: String! + field3572: String! +} + +type Object825 @Directive10(argument10 : "stringValue5749", argument9 : "stringValue5748") { + field3576: Enum257! +} + +type Object826 @Directive10(argument10 : "stringValue5757", argument9 : "stringValue5756") { + field3577: Enum258! + field3578: Object7! +} + +type Object827 @Directive10(argument10 : "stringValue5765", argument9 : "stringValue5764") { + field3579: Enum259! +} + +type Object828 @Directive10(argument10 : "stringValue5817", argument9 : "stringValue5816") { + field3592: String + field3593: Enum264! +} + +type Object829 @Directive10(argument10 : "stringValue5825", argument9 : "stringValue5824") { + field3594: String + field3595: Enum265! +} + +type Object83 @Directive10(argument10 : "stringValue488", argument9 : "stringValue487") { + field296: Boolean + field297: Boolean + field298: Boolean +} + +type Object830 @Directive10(argument10 : "stringValue5853", argument9 : "stringValue5852") { + field3604: String + field3605: Enum266! +} + +type Object831 @Directive10(argument10 : "stringValue5867", argument9 : "stringValue5866") { + field3607: String + field3608: Enum267! +} + +type Object832 @Directive10(argument10 : "stringValue5875", argument9 : "stringValue5874") { + field3609: String + field3610: Enum268! +} + +type Object833 @Directive10(argument10 : "stringValue5889", argument9 : "stringValue5888") { + field3612: String + field3613: Enum269! +} + +type Object834 @Directive10(argument10 : "stringValue5909", argument9 : "stringValue5908") { + field3616: String + field3617: Enum270! +} + +type Object835 @Directive10(argument10 : "stringValue5917", argument9 : "stringValue5916") { + field3618: String + field3619: Enum63! +} + +type Object836 @Directive10(argument10 : "stringValue5927", argument9 : "stringValue5926") { + field3621: String + field3622: Enum271! +} + +type Object837 @Directive10(argument10 : "stringValue6051", argument9 : "stringValue6050") { + field3635: Int! + field3636: [Object838!] + field3639: String! +} + +type Object838 { + field3637: String! + field3638: String! +} + +type Object839 @Directive10(argument10 : "stringValue6067", argument9 : "stringValue6066") { + field3642: String +} + +type Object84 @Directive10(argument10 : "stringValue492", argument9 : "stringValue491") { + field300: Object85 + field304: Object85 + field305: Object85 + field306: Object85 +} + +type Object840 @Directive10(argument10 : "stringValue6071", argument9 : "stringValue6070") { + field3643: String +} + +type Object841 @Directive9(argument8 : "stringValue6079") { + field3645: Scalar2 @Directive2 @Directive7(argument6 : "stringValue6080") @Directive8(argument7 : EnumValue9) + field3646: Scalar2 @Directive2 @Directive7(argument6 : "stringValue6082") @Directive8(argument7 : EnumValue9) + field3647: String @Directive2 @Directive7(argument6 : "stringValue6084") @Directive8(argument7 : EnumValue9) + field3648: ID! + field3649: String @Directive2 @Directive7(argument6 : "stringValue6086") @Directive8(argument7 : EnumValue9) + field3650: Enum280 @Directive2 @Directive7(argument6 : "stringValue6088") @Directive8(argument7 : EnumValue9) + field3651: Enum281 @Directive2 @Directive7(argument6 : "stringValue6094") @Directive8(argument7 : EnumValue9) + field3652: Scalar1! + field3653: Boolean @Directive2 @Directive7(argument6 : "stringValue6100") @Directive8(argument7 : EnumValue9) + field3654: Scalar2 @Directive2 @Directive7(argument6 : "stringValue6102") @Directive8(argument7 : EnumValue9) + field3655: String @Directive2 @Directive7(argument6 : "stringValue6104") @Directive8(argument7 : EnumValue9) +} + +type Object842 @Directive10(argument10 : "stringValue6187", argument9 : "stringValue6186") { + field3657: Union128 + field3662: [Union129!]! + field3681: Scalar2 + field3682: String +} + +type Object843 @Directive10(argument10 : "stringValue6195", argument9 : "stringValue6194") { + field3658: Boolean! @deprecated +} + +type Object844 @Directive10(argument10 : "stringValue6199", argument9 : "stringValue6198") { + field3659: Scalar2! +} + +type Object845 @Directive10(argument10 : "stringValue6203", argument9 : "stringValue6202") { + field3660: Boolean! @deprecated +} + +type Object846 @Directive10(argument10 : "stringValue6207", argument9 : "stringValue6206") { + field3661: Boolean! @deprecated +} + +type Object847 @Directive10(argument10 : "stringValue6215", argument9 : "stringValue6214") { + field3663: Enum287! @Directive2 + field3664: String! @Directive2 +} + +type Object848 @Directive10(argument10 : "stringValue6223", argument9 : "stringValue6222") { + field3665: [Scalar2!]! +} + +type Object849 @Directive10(argument10 : "stringValue6227", argument9 : "stringValue6226") { + field3666: Enum287! + field3667: String! +} + +type Object85 @Directive10(argument10 : "stringValue496", argument9 : "stringValue495") { + field301: Scalar3 + field302: String + field303: Scalar3 +} + +type Object850 @Directive10(argument10 : "stringValue6231", argument9 : "stringValue6230") { + field3668: [Enum288!]! +} + +type Object851 @Directive10(argument10 : "stringValue6239", argument9 : "stringValue6238") { + field3669: [Enum289!]! +} + +type Object852 @Directive10(argument10 : "stringValue6247", argument9 : "stringValue6246") { + field3670: [Scalar2!]! +} + +type Object853 @Directive10(argument10 : "stringValue6251", argument9 : "stringValue6250") { + field3671: Enum287! @Directive2 + field3672: String! @Directive2 +} + +type Object854 @Directive10(argument10 : "stringValue6255", argument9 : "stringValue6254") { + field3673: Boolean! @deprecated +} + +type Object855 @Directive10(argument10 : "stringValue6259", argument9 : "stringValue6258") { + field3674: [Scalar2!]! +} + +type Object856 @Directive10(argument10 : "stringValue6263", argument9 : "stringValue6262") { + field3675: Enum287! + field3676: String! +} + +type Object857 @Directive10(argument10 : "stringValue6267", argument9 : "stringValue6266") { + field3677: [Object858!]! +} + +type Object858 @Directive10(argument10 : "stringValue6271", argument9 : "stringValue6270") { + field3678: Enum290 +} + +type Object859 @Directive10(argument10 : "stringValue6279", argument9 : "stringValue6278") { + field3679: Enum291! +} + +type Object86 @Directive10(argument10 : "stringValue500", argument9 : "stringValue499") { + field312: [Scalar3!] + field313: Scalar3 + field314: [Object87!] +} + +type Object860 @Directive10(argument10 : "stringValue6287", argument9 : "stringValue6286") { + field3680: [Scalar2!]! +} + +type Object861 @Directive10(argument10 : "stringValue6337", argument9 : "stringValue6336") { + field3684: Enum292! +} + +type Object862 @Directive10(argument10 : "stringValue6345", argument9 : "stringValue6344") { + field3685: Enum293! + field3686: Object7! +} + +type Object863 @Directive10(argument10 : "stringValue6353", argument9 : "stringValue6352") { + field3687: String! + field3688: Scalar2! +} + +type Object864 @Directive10(argument10 : "stringValue6371", argument9 : "stringValue6370") { + field3690: Enum295 + field3691: String + field3692: Enum296! +} + +type Object865 @Directive10(argument10 : "stringValue6383", argument9 : "stringValue6382") { + field3693: Object866! + field3697: Scalar2! +} + +type Object866 @Directive10(argument10 : "stringValue6387", argument9 : "stringValue6386") { + field3694: String! + field3695: Scalar2! + field3696: [Enum297!]! +} + +type Object867 @Directive10(argument10 : "stringValue6397", argument9 : "stringValue6396") { + field3699: Boolean! + field3700: Boolean! +} + +type Object868 @Directive10(argument10 : "stringValue6403", argument9 : "stringValue6402") { + field3702: Object869 +} + +type Object869 @Directive10(argument10 : "stringValue6407", argument9 : "stringValue6406") { + field3703: Object870 + field3707: [Object871!]! + field3710: Scalar2! + field3711: [Object870!]! +} + +type Object87 @Directive10(argument10 : "stringValue504", argument9 : "stringValue503") { + field315: Scalar3 + field316: String + field317: String +} + +type Object870 @Directive10(argument10 : "stringValue6411", argument9 : "stringValue6410") { + field3704: Object410! @deprecated + field3705: Union6 @deprecated + field3706: Object44! +} + +type Object871 @Directive10(argument10 : "stringValue6415", argument9 : "stringValue6414") { + field3708: String! + field3709: Scalar2! +} + +type Object872 @Directive10(argument10 : "stringValue6433", argument9 : "stringValue6432") { + field3713: String +} + +type Object873 @Directive10(argument10 : "stringValue6437", argument9 : "stringValue6436") { + field3714: String +} + +type Object874 @Directive10(argument10 : "stringValue6441", argument9 : "stringValue6440") { + field3715: String +} + +type Object875 @Directive10(argument10 : "stringValue6445", argument9 : "stringValue6444") { + field3716: String +} + +type Object876 @Directive10(argument10 : "stringValue6449", argument9 : "stringValue6448") { + field3717: String +} + +type Object877 @Directive10(argument10 : "stringValue6453", argument9 : "stringValue6452") { + field3718: String +} + +type Object878 @Directive10(argument10 : "stringValue6471", argument9 : "stringValue6470") { + field3720: Object879 @Directive2 + field3728: Object879 +} + +type Object879 @Directive10(argument10 : "stringValue6475", argument9 : "stringValue6474") { + field3721: Scalar2! + field3722: Union133! + field3727: String @Directive2 +} + +type Object88 @Directive10(argument10 : "stringValue508", argument9 : "stringValue507") { + field320: String + field321: String + field322: [Scalar3!] + field323: String +} + +type Object880 @Directive10(argument10 : "stringValue6483", argument9 : "stringValue6482") { + field3723: Boolean! @deprecated +} + +type Object881 @Directive10(argument10 : "stringValue6487", argument9 : "stringValue6486") { + field3724: Boolean! @deprecated +} + +type Object882 @Directive10(argument10 : "stringValue6491", argument9 : "stringValue6490") { + field3725: Boolean! @deprecated +} + +type Object883 @Directive10(argument10 : "stringValue6495", argument9 : "stringValue6494") { + field3726: Boolean! @deprecated +} + +type Object884 @Directive9(argument8 : "stringValue6501") { + field3731(argument450: Scalar2!): [Object885!] @Directive7(argument6 : "stringValue6502") @Directive8(argument7 : EnumValue9) + field3736(argument451: Scalar2!): [Object885!] @Directive2 @Directive7(argument6 : "stringValue6504") @Directive8(argument7 : EnumValue9) + field3737: [Enum302!] @Directive7(argument6 : "stringValue6506") @Directive8(argument7 : EnumValue9) + field3738: [Enum302!] @Directive2 @Directive7(argument6 : "stringValue6512") @Directive8(argument7 : EnumValue9) + field3739: ID! + field3740: String @Directive2 @Directive7(argument6 : "stringValue6514") @Directive8(argument7 : EnumValue9) + field3741: Scalar1! + field3742: [Object886!] @Directive2 @Directive7(argument6 : "stringValue6516") @Directive8(argument7 : EnumValue9) +} + +type Object885 { + field3732: [Enum301!]! + field3733: Object410! @deprecated + field3734: Union6 @deprecated + field3735: Object44! +} + +type Object886 @Directive9(argument8 : "stringValue6519") { + field3743: [Object887!] @Directive2 @Directive7(argument6 : "stringValue6520") @Directive8(argument7 : EnumValue9) + field3752: [Object888!] @Directive2 @Directive7(argument6 : "stringValue6526") @Directive8(argument7 : EnumValue9) + field3759: ID! + field3760: String @Directive2 @Directive7(argument6 : "stringValue6532") @Directive8(argument7 : EnumValue9) + field3761: Object884 @Directive2 @Directive7(argument6 : "stringValue6534") @Directive8(argument7 : EnumValue9) + field3762: Scalar1! +} + +type Object887 @Directive10(argument10 : "stringValue6525", argument9 : "stringValue6524") { + field3744: Boolean + field3745: Scalar2! + field3746: Boolean + field3747: Boolean + field3748: Scalar2 + field3749: Object410! @deprecated + field3750: Union6 @deprecated + field3751: Object44! +} + +type Object888 @Directive10(argument10 : "stringValue6531", argument9 : "stringValue6530") { + field3753: Boolean + field3754: Boolean + field3755: [Scalar2!] + field3756: Object410! @deprecated + field3757: Union6 @deprecated + field3758: Object44! +} + +type Object889 @Directive10(argument10 : "stringValue6545", argument9 : "stringValue6544") { + field3764: Object890 +} + +type Object89 @Directive10(argument10 : "stringValue512", argument9 : "stringValue511") { + field325: String + field326: [Scalar3!] + field327: Boolean @Directive2 + field328: String + field329: String + field330: Object410 @deprecated + field331: Union6 @deprecated + field332: Object44 @Directive2 +} + +type Object890 @Directive10(argument10 : "stringValue6549", argument9 : "stringValue6548") { + field3765: Scalar2! + field3766: Enum303! +} + +type Object891 { + field3769: Boolean! +} + +type Object892 @Directive10(argument10 : "stringValue6579", argument9 : "stringValue6578") { + field3771: Object152 @deprecated + field3772: Union8 @deprecated + field3773: Object114 +} + +type Object893 @Directive10(argument10 : "stringValue6662", argument9 : "stringValue6661") { + field3777: Object152 @deprecated + field3778: Union8 @deprecated + field3779: Object114 +} + +type Object894 @Directive10(argument10 : "stringValue6677", argument9 : "stringValue6676") { + field3781: Object7 +} + +type Object895 @Directive10(argument10 : "stringValue6681", argument9 : "stringValue6680") { + field3782: Object893 +} + +type Object896 @Directive10(argument10 : "stringValue6687", argument9 : "stringValue6686") { + field3784: Boolean! @deprecated +} + +type Object897 @Directive10(argument10 : "stringValue6705", argument9 : "stringValue6704") { + field3788: String! +} + +type Object898 @Directive9(argument8 : "stringValue6761") { + field3802: Object410 @Directive7(argument6 : "stringValue6762") @Directive8(argument7 : EnumValue9) @deprecated + field3803: Union6 @Directive7(argument6 : "stringValue6764") @Directive8(argument7 : EnumValue9) @deprecated + field3804: Object44 @Directive2 @Directive7(argument6 : "stringValue6766") @Directive8(argument7 : EnumValue9) + field3805: ID! + field3806: [Object899!] @Directive2 @Directive7(argument6 : "stringValue6768") @Directive8(argument7 : EnumValue9) + field3814: Scalar1! +} + +type Object899 @Directive9(argument8 : "stringValue6771") { + field3807: ID! + field3808: Scalar1! + field3809: Enum318 @Directive2 @Directive7(argument6 : "stringValue6772") @Directive8(argument7 : EnumValue9) + field3810: Enum319 @Directive2 @Directive7(argument6 : "stringValue6778") @Directive8(argument7 : EnumValue9) + field3811: Object410 @Directive7(argument6 : "stringValue6784") @Directive8(argument7 : EnumValue9) @deprecated + field3812: Union6 @Directive7(argument6 : "stringValue6786") @Directive8(argument7 : EnumValue9) @deprecated + field3813: Object44 @Directive2 @Directive7(argument6 : "stringValue6788") @Directive8(argument7 : EnumValue9) +} + +type Object9 @Directive10(argument10 : "stringValue76", argument9 : "stringValue75") { + field25: String! + field26: String! +} + +type Object90 @Directive10(argument10 : "stringValue516", argument9 : "stringValue515") { + field335: Object91 @deprecated +} + +type Object900 @Directive10(argument10 : "stringValue6811", argument9 : "stringValue6810") { + field3822: String + field3823: Boolean! +} + +type Object901 @Directive10(argument10 : "stringValue6821", argument9 : "stringValue6820") { + field3825: Scalar2! + field3826: String +} + +type Object902 @Directive10(argument10 : "stringValue6825", argument9 : "stringValue6824") { + field3827: Scalar2! +} + +type Object903 { + field3829: Boolean! +} + +type Object904 @Directive10(argument10 : "stringValue6833", argument9 : "stringValue6832") { + field3831: Object152 @deprecated + field3832: Union8 @deprecated + field3833: Object114 +} + +type Object905 @Directive10(argument10 : "stringValue6845", argument9 : "stringValue6844") { + field3836: Enum321! + field3837: Object7! +} + +type Object906 @Directive10(argument10 : "stringValue6853", argument9 : "stringValue6852") { + field3838: Enum322! +} + +type Object907 @Directive10(argument10 : "stringValue6893", argument9 : "stringValue6892") { + field3847: Enum325! + field3848: Object7! +} + +type Object908 @Directive10(argument10 : "stringValue6901", argument9 : "stringValue6900") { + field3849: Enum326! +} + +type Object909 @Directive10(argument10 : "stringValue6915", argument9 : "stringValue6914") { + field3851: Enum327! + field3852: Object7! +} + +type Object91 @Directive10(argument10 : "stringValue520", argument9 : "stringValue519") { + field336: Object92 + field343: Scalar3 +} + +type Object910 @Directive10(argument10 : "stringValue6923", argument9 : "stringValue6922") { + field3853: Enum328! +} + +type Object911 @Directive10(argument10 : "stringValue6961", argument9 : "stringValue6960") { + field3863: Enum329! + field3864: Object7! +} + +type Object912 @Directive10(argument10 : "stringValue6969", argument9 : "stringValue6968") { + field3865: Enum330! +} + +type Object913 @Directive10(argument10 : "stringValue6983", argument9 : "stringValue6982") { + field3867: Enum331! + field3868: Object7! +} + +type Object914 @Directive10(argument10 : "stringValue6991", argument9 : "stringValue6990") { + field3869: Enum332! +} + +type Object915 @Directive10(argument10 : "stringValue7009", argument9 : "stringValue7008") { + field3873: Enum333! +} + +type Object916 @Directive10(argument10 : "stringValue7017", argument9 : "stringValue7016") { + field3874: Enum334! + field3875: Object7! +} + +type Object917 @Directive10(argument10 : "stringValue7025", argument9 : "stringValue7024") { + field3876: Enum335! +} + +type Object918 @Directive10(argument10 : "stringValue7039", argument9 : "stringValue7038") { + field3878: Enum336! + field3879: Object7! +} + +type Object919 @Directive10(argument10 : "stringValue7047", argument9 : "stringValue7046") { + field3880: Enum337! +} + +type Object92 @Directive10(argument10 : "stringValue524", argument9 : "stringValue523") { + field337: Object93 + field340: String + field341: Object94 +} + +type Object920 @Directive10(argument10 : "stringValue7071", argument9 : "stringValue7070") { + field3883: String! +} + +type Object921 { + field3886: String! + field3887: Scalar2! +} + +type Object922 @Directive10(argument10 : "stringValue7089", argument9 : "stringValue7088") { + field3889: String + field3890: Scalar3! + field3891: String! + field3892: String! +} + +type Object923 @Directive10(argument10 : "stringValue7119", argument9 : "stringValue7118") { + field3904: Enum340! + field3905: Scalar2 +} + +type Object924 @Directive10(argument10 : "stringValue7127", argument9 : "stringValue7126") { + field3906: Enum341! + field3907: Object7! + field3908: Scalar2 +} + +type Object925 @Directive10(argument10 : "stringValue7135", argument9 : "stringValue7134") { + field3909: Enum342! + field3910: Scalar2 +} + +type Object926 @Directive10(argument10 : "stringValue7155", argument9 : "stringValue7154") { + field3915: Enum343! + field3916: Object7! + field3917: Scalar2 +} + +type Object927 @Directive10(argument10 : "stringValue7163", argument9 : "stringValue7162") { + field3918: Enum344! + field3919: Scalar2 +} + +type Object928 @Directive10(argument10 : "stringValue7193", argument9 : "stringValue7192") { + field3929: Object7! + field3930: Enum345! +} + +type Object929 @Directive10(argument10 : "stringValue7201", argument9 : "stringValue7200") { + field3931: [Object575!]! +} + +type Object93 @Directive10(argument10 : "stringValue528", argument9 : "stringValue527") { + field338: Scalar3 + field339: String +} + +type Object930 @Directive10(argument10 : "stringValue7229", argument9 : "stringValue7228") { + field3942: [Object575!]! +} + +type Object931 @Directive10(argument10 : "stringValue7249", argument9 : "stringValue7248") { + field3949: Enum346! + field3950: Object7! +} + +type Object932 @Directive10(argument10 : "stringValue7257", argument9 : "stringValue7256") { + field3951: Enum347! +} + +type Object933 @Directive10(argument10 : "stringValue7271", argument9 : "stringValue7270") { + field3953: Enum348! + field3954: Object7! +} + +type Object934 @Directive10(argument10 : "stringValue7279", argument9 : "stringValue7278") { + field3955: Enum349! +} + +type Object935 @Directive10(argument10 : "stringValue7293", argument9 : "stringValue7292") { + field3957: Enum350! +} + +type Object936 @Directive10(argument10 : "stringValue7301", argument9 : "stringValue7300") { + field3958: Enum351! + field3959: Object7! +} + +type Object937 @Directive10(argument10 : "stringValue7309", argument9 : "stringValue7308") { + field3960: Enum352! +} + +type Object938 @Directive10(argument10 : "stringValue7335", argument9 : "stringValue7334") { + field3966: Enum295 + field3967: String + field3968: Enum354! +} + +type Object939 @Directive10(argument10 : "stringValue7343", argument9 : "stringValue7342") { + field3969: String! +} + +type Object94 @Directive10(argument10 : "stringValue532", argument9 : "stringValue531") { + field342: Boolean +} + +type Object940 @Directive9(argument8 : "stringValue7353") { + field3972: Scalar2 @Directive7(argument6 : "stringValue7354") @Directive8(argument7 : EnumValue9) + field3973: ID! + field3974: Enum356 @Directive7(argument6 : "stringValue7356") @Directive8(argument7 : EnumValue9) + field3975: Object658 @Directive7(argument6 : "stringValue7362") @Directive8(argument7 : EnumValue9) + field3976: String! + field3977: Enum357 @Directive7(argument6 : "stringValue7364") @Directive8(argument7 : EnumValue9) + field3978: Object410 @Directive7(argument6 : "stringValue7370") @Directive8(argument7 : EnumValue9) @deprecated + field3979: Union6 @Directive7(argument6 : "stringValue7372") @Directive8(argument7 : EnumValue9) @deprecated + field3980: Object44 @Directive7(argument6 : "stringValue7374") @Directive8(argument7 : EnumValue9) +} + +type Object941 @Directive10(argument10 : "stringValue7383", argument9 : "stringValue7382") { + field3983: Boolean! @deprecated + field3984: Boolean! + field3985: Boolean! + field3986: Boolean! + field3987: Boolean! +} + +type Object942 @Directive10(argument10 : "stringValue7441", argument9 : "stringValue7440") { + field3989: Object943 + field3992: Enum361! +} + +type Object943 @Directive9(argument8 : "stringValue7443") { + field3990: ID! + field3991: Scalar1! +} + +type Object944 @Directive10(argument10 : "stringValue7451", argument9 : "stringValue7450") { + field3993: Enum362! + field3994: String! +} + +type Object945 @Directive10(argument10 : "stringValue7471", argument9 : "stringValue7470") { + field3997: [Object771!]! + field3998: Object771 +} + +type Object946 @Directive10(argument10 : "stringValue7475", argument9 : "stringValue7474") { + field3999: Enum364! +} + +type Object947 @Directive10(argument10 : "stringValue7519", argument9 : "stringValue7518") { + field4008: Enum367! +} + +type Object948 @Directive10(argument10 : "stringValue7527", argument9 : "stringValue7526") { + field4009: Object7! + field4010: Enum368! +} + +type Object949 @Directive10(argument10 : "stringValue7535", argument9 : "stringValue7534") { + field4011: Enum369! +} + +type Object95 @Directive10(argument10 : "stringValue536", argument9 : "stringValue535") { + field372: String + field373: String + field374: String + field375: String + field376: String + field377: String + field378: String + field379: String + field380: String + field381: Boolean +} + +type Object950 @Directive10(argument10 : "stringValue7545", argument9 : "stringValue7544") { + field4013: Enum370! @Directive2 +} + +type Object951 @Directive9(argument8 : "stringValue7561") { + field4019: String @Directive7(argument6 : "stringValue7562") @Directive8(argument7 : EnumValue9) + field4020: ID! + field4021: [Object128!] @Directive7(argument6 : "stringValue7564") @Directive8(argument7 : EnumValue9) + field4022: Object152 @Directive7(argument6 : "stringValue7566") @Directive8(argument7 : EnumValue9) @deprecated + field4023: Union8 @Directive7(argument6 : "stringValue7568") @Directive8(argument7 : EnumValue9) @deprecated + field4024: Object114 @Directive7(argument6 : "stringValue7570") @Directive8(argument7 : EnumValue9) + field4025: Scalar1! + field4026: Object480 @Directive7(argument6 : "stringValue7572") @Directive8(argument7 : EnumValue9) + field4027: Union66 @Directive7(argument6 : "stringValue7574") @Directive8(argument7 : EnumValue9) + field4028: Object410 @Directive7(argument6 : "stringValue7576") @Directive8(argument7 : EnumValue9) @deprecated + field4029: Union6 @Directive7(argument6 : "stringValue7578") @Directive8(argument7 : EnumValue9) @deprecated + field4030: Object44 @Directive7(argument6 : "stringValue7580") @Directive8(argument7 : EnumValue9) +} + +type Object952 @Directive10(argument10 : "stringValue7623", argument9 : "stringValue7622") { + field4040: Boolean! + field4041: String +} + +type Object953 @Directive10(argument10 : "stringValue7633", argument9 : "stringValue7632") { + field4043: Object7! + field4044: Enum375! +} + +type Object954 @Directive10(argument10 : "stringValue7641", argument9 : "stringValue7640") { + field4045: Enum376! +} + +type Object955 @Directive10(argument10 : "stringValue7655", argument9 : "stringValue7654") { + field4047: Object7! + field4048: Enum377! +} + +type Object956 @Directive10(argument10 : "stringValue7663", argument9 : "stringValue7662") { + field4049: Enum378! +} + +type Object957 @Directive10(argument10 : "stringValue7687", argument9 : "stringValue7686") { + field4056: Scalar2! + field4057: Enum216 +} + +type Object958 @Directive10(argument10 : "stringValue7693", argument9 : "stringValue7692") { + field4059: Enum5 + field4060: String + field4061: String! + field4062: Enum6! + field4063: String! + field4064: Scalar3 + field4065: Scalar3 + field4066: Scalar3 +} + +type Object959 @Directive9(argument8 : "stringValue7727") { + field4081: Scalar2 @Directive2 @Directive7(argument6 : "stringValue7728") @Directive8(argument7 : EnumValue9) + field4082: ID! + field4083: Int! @Directive2 @Directive7(argument6 : "stringValue7730") @Directive8(argument7 : EnumValue9) + field4084(argument952: Int, argument953: String): Object193! @Directive2 @Directive7(argument6 : "stringValue7732") @Directive8(argument7 : EnumValue9) + field4085: String! @Directive2 @Directive7(argument6 : "stringValue7734") @Directive8(argument7 : EnumValue9) + field4086: Object410! @Directive7(argument6 : "stringValue7736") @Directive8(argument7 : EnumValue9) @deprecated + field4087: Union6 @Directive7(argument6 : "stringValue7738") @Directive8(argument7 : EnumValue9) @deprecated + field4088: Object44! @Directive2 @Directive7(argument6 : "stringValue7740") @Directive8(argument7 : EnumValue9) + field4089(argument954: Int, argument955: String): Object193 @Directive2 @Directive7(argument6 : "stringValue7742") @Directive8(argument7 : EnumValue9) + field4090(argument956: String!): [Object410!]! @Directive7(argument6 : "stringValue7744") @Directive8(argument7 : EnumValue9) @deprecated + field4091(argument957: String!): [Union6] @Directive7(argument6 : "stringValue7746") @Directive8(argument7 : EnumValue9) @deprecated + field4092(argument958: String!): [Object44!]! @Directive2 @Directive7(argument6 : "stringValue7748") @Directive8(argument7 : EnumValue9) + field4093: Scalar1! +} + +type Object96 @Directive10(argument10 : "stringValue544", argument9 : "stringValue543") { + field385: Union9! +} + +type Object960 @Directive10(argument10 : "stringValue7753", argument9 : "stringValue7752") { + field4094: Enum380! +} + +type Object961 @Directive10(argument10 : "stringValue7767", argument9 : "stringValue7766") { + field4096: Enum381! +} + +type Object962 @Directive10(argument10 : "stringValue7775", argument9 : "stringValue7774") { + field4097: Object959! + field4098: Object410! @deprecated + field4099: Union6 @deprecated + field4100: Object44! +} + +type Object963 @Directive10(argument10 : "stringValue7785", argument9 : "stringValue7784") { + field4102: Enum382! +} + +type Object964 @Directive10(argument10 : "stringValue7793", argument9 : "stringValue7792") { + field4103: Object959! + field4104: Object410! @deprecated + field4105: Union6 @deprecated + field4106: Object44! +} + +type Object965 @Directive10(argument10 : "stringValue7827", argument9 : "stringValue7826") { + field4120: Enum374! + field4121: Int +} + +type Object966 @Directive10(argument10 : "stringValue7837", argument9 : "stringValue7836") { + field4123: Object7! + field4124: Enum384! +} + +type Object967 @Directive10(argument10 : "stringValue7845", argument9 : "stringValue7844") { + field4125: Enum385! +} + +type Object968 @Directive10(argument10 : "stringValue7863", argument9 : "stringValue7862") { + field4129: Enum386! + field4130: Object7! +} + +type Object969 @Directive10(argument10 : "stringValue7871", argument9 : "stringValue7870") { + field4131: Enum387! +} + +type Object97 @Directive10(argument10 : "stringValue552", argument9 : "stringValue551") { + field386: Object98! +} + +type Object970 @Directive10(argument10 : "stringValue7887", argument9 : "stringValue7886") { + field4134: Object7! + field4135: Enum388! +} + +type Object971 @Directive10(argument10 : "stringValue7895", argument9 : "stringValue7894") { + field4136: Enum389! +} + +type Object972 @Directive10(argument10 : "stringValue7905", argument9 : "stringValue7904") { + field4138: Object152 @deprecated + field4139: Union8 @deprecated + field4140: Object114 +} + +type Object973 @Directive10(argument10 : "stringValue7921", argument9 : "stringValue7920") { + field4145: String + field4146: Boolean! +} + +type Object974 @Directive10(argument10 : "stringValue7925", argument9 : "stringValue7924") { + field4147: String +} + +type Object975 @Directive10(argument10 : "stringValue7929", argument9 : "stringValue7928") { + field4148: String +} + +type Object976 @Directive10(argument10 : "stringValue7997", argument9 : "stringValue7996") { + field4157: [Object977!]! +} + +type Object977 @Directive10(argument10 : "stringValue8001", argument9 : "stringValue8000") { + field4158: [Object978!]! + field4161: String! + field4162: Scalar2 + field4163: Enum398! + field4164: [Object979!]! +} + +type Object978 @Directive10(argument10 : "stringValue8005", argument9 : "stringValue8004") { + field4159: Enum397! + field4160: String +} + +type Object979 @Directive10(argument10 : "stringValue8017", argument9 : "stringValue8016") { + field4165: String + field4166: Enum399! +} + +type Object98 @Directive10(argument10 : "stringValue556", argument9 : "stringValue555") { + field387: Enum31 + field388: [Object99!]! + field416: Boolean + field417: String! +} + +type Object980 @Directive10(argument10 : "stringValue8035", argument9 : "stringValue8034") { + field4172: Object410! @deprecated + field4173: Union6 @deprecated + field4174: Object44! +} + +type Object981 @Directive10(argument10 : "stringValue8045", argument9 : "stringValue8044") { + field4176: String + field4177: Enum400! +} + +type Object982 @Directive10(argument10 : "stringValue8097", argument9 : "stringValue8096") { + field4184: [Object983!]! +} + +type Object983 @Directive10(argument10 : "stringValue8101", argument9 : "stringValue8100") { + field4185: String! + field4186: Union100 + field4187: String! + field4188: Enum221! +} + +type Object984 @Directive10(argument10 : "stringValue8179", argument9 : "stringValue8178") { + field4222: Object410! @deprecated + field4223: Union6 @deprecated + field4224: Object44! +} + +type Object985 @Directive10(argument10 : "stringValue8189", argument9 : "stringValue8188") { + field4228: Object410! @deprecated + field4229: Union6 @deprecated + field4230: Object44! +} + +type Object986 @Directive10(argument10 : "stringValue8195", argument9 : "stringValue8194") { + field4232: Object410! @deprecated + field4233: Union6 @deprecated + field4234: Object44! +} + +type Object987 @Directive10(argument10 : "stringValue8207", argument9 : "stringValue8206") { + field4237: String +} + +type Object988 @Directive10(argument10 : "stringValue8211", argument9 : "stringValue8210") { + field4238: String +} + +type Object989 @Directive10(argument10 : "stringValue8215", argument9 : "stringValue8214") { + field4239: String +} + +type Object99 @Directive10(argument10 : "stringValue564", argument9 : "stringValue563") { + field389: Enum32 + field390: Int! + field391: Union10 + field415: Int! +} + +type Object990 @Directive10(argument10 : "stringValue8219", argument9 : "stringValue8218") { + field4240: String! + field4241: Scalar3! + field4242: Enum227! + field4243: String +} + +type Object991 { + field4245(argument1185: Enum4!): Object941 @Directive7(argument6 : "stringValue8222") @Directive8(argument7 : EnumValue9) + field4246(argument1186: [Scalar2!]!, argument1187: Enum4!): [Object992!] @Directive2 @Directive7(argument6 : "stringValue8224") @Directive8(argument7 : EnumValue9) + field4346(argument1247: String!, argument1248: Enum4!): [String!] @Directive7(argument6 : "stringValue8412") @Directive8(argument7 : EnumValue9) + field4347(argument1249: Scalar3!): Object1014 @Directive5(argument4 : "stringValue8414") @Directive7(argument6 : "stringValue8415") @Directive8(argument7 : EnumValue9) + field4348(argument1250: Scalar3!, argument1251: Enum4!): Object992 @Directive2 @Directive7(argument6 : "stringValue8418") @Directive8(argument7 : EnumValue9) + field4349(argument1252: String!, argument1253: Enum4!): Object414 @Directive7(argument6 : "stringValue8420") @Directive8(argument7 : EnumValue9) + field4350: Object422 @Directive2 @Directive7(argument6 : "stringValue8422") @Directive8(argument7 : EnumValue9) + field4351(argument1254: Enum4!): Enum416 @Directive2 @Directive7(argument6 : "stringValue8424") @Directive8(argument7 : EnumValue9) + field4352(argument1255: Scalar2!, argument1256: String, argument1257: Int): Object1017 @Directive5(argument4 : "stringValue8430") @Directive7(argument6 : "stringValue8431") @Directive8(argument7 : EnumValue9) + field4358(argument1258: ID!): Object128 @deprecated + field4359(argument1259: ID!, argument1260: Enum4!): Object128 + field4360(argument1261: Int!, argument1262: Enum4!): Object436 @Directive7(argument6 : "stringValue8442") @Directive8(argument7 : EnumValue9) + field4361(argument1263: InputObject108, argument1264: Enum417, argument1265: Scalar3): Object422 @Directive7(argument6 : "stringValue8444") @Directive8(argument7 : EnumValue9) + field4362(argument1266: String!, argument1267: Enum4!): Object441 @Directive7(argument6 : "stringValue8454") @Directive8(argument7 : EnumValue9) + field4363(argument1268: [String!]!, argument1269: Enum4!): [Object441]! @Directive7(argument6 : "stringValue8456") @Directive8(argument7 : EnumValue9) + field4364(argument1270: Int, argument1271: String, argument1272: Enum4!): Object205 @Directive7(argument6 : "stringValue8458") @Directive8(argument7 : EnumValue9) + field4365(argument1273: Enum4!): Object1019 @Directive7(argument6 : "stringValue8460") @Directive8(argument7 : EnumValue9) + field4368(argument1274: Enum4!): Object1020 @Directive7(argument6 : "stringValue8466") @Directive8(argument7 : EnumValue9) + field4371(argument1275: Enum4!): Object207 @Directive7(argument6 : "stringValue8472") @Directive8(argument7 : EnumValue9) + field4372(argument1276: Enum4!): Boolean @Directive7(argument6 : "stringValue8474") @Directive8(argument7 : EnumValue9) + field4373(argument1277: Enum4!): [Object959!]! @Directive2 @Directive7(argument6 : "stringValue8476") @Directive8(argument7 : EnumValue9) + field4374: Object422 @Directive2 @Directive7(argument6 : "stringValue8478") @Directive8(argument7 : EnumValue9) + field4375(argument1278: [String!]!, argument1279: String!, argument1280: String!, argument1281: String!, argument1282: String!): Object1021 @Directive5(argument4 : "stringValue8480") @Directive7(argument6 : "stringValue8481") @Directive8(argument7 : EnumValue9) + field4381(argument1283: Enum4!): Object1023 @Directive7(argument6 : "stringValue8492") @Directive8(argument7 : EnumValue9) + field4386(argument1284: Scalar2!, argument1285: Enum4!): Object206 @Directive7(argument6 : "stringValue8502") @Directive8(argument7 : EnumValue9) + field4387(argument1286: String!, argument1287: Enum4!): Object207 @Directive7(argument6 : "stringValue8504") @Directive8(argument7 : EnumValue9) + field4388(argument1288: String, argument1289: Int, argument1290: Enum4!): Union97 @Directive7(argument6 : "stringValue8506") @Directive8(argument7 : EnumValue9) + field4389(argument1291: Int, argument1292: String, argument1293: Enum4!): Union77 @Directive7(argument6 : "stringValue8508") @Directive8(argument7 : EnumValue9) + field4390: Object422 @Directive7(argument6 : "stringValue8510") @Directive8(argument7 : EnumValue9) + field4391(argument1294: Scalar2!): Object422 @Directive7(argument6 : "stringValue8512") @Directive8(argument7 : EnumValue9) + field4392(argument1295: Scalar2, argument1296: Int, argument1297: Int, argument1298: String, argument1299: Enum4!): Object423 @Directive2 @Directive7(argument6 : "stringValue8514") @Directive8(argument7 : EnumValue9) + field4393: Object422 @Directive7(argument6 : "stringValue8516") @Directive8(argument7 : EnumValue9) + field4394(argument1300: String, argument1301: Scalar4, argument1302: String, argument1303: String, argument1304: String, argument1305: Enum4!, argument1306: Scalar2, argument1307: String, argument1308: Scalar2): Union166 @Directive2 @Directive7(argument6 : "stringValue8518") @Directive8(argument7 : EnumValue9) + field4399(argument1309: ID!): Object1026 @deprecated + field4462(argument1310: String!): Object1026! @Directive5(argument4 : "stringValue8642") @Directive7(argument6 : "stringValue8643") @Directive8(argument7 : EnumValue9) + field4463(argument1311: ID!, argument1312: Enum4!): Object1026 + field4464(argument1313: [String!]!): [Object1026]! @Directive5(argument4 : "stringValue8646") @Directive7(argument6 : "stringValue8647") @Directive8(argument7 : EnumValue9) + field4465(argument1314: Enum4!, argument1315: Scalar2, argument1316: Int): Object1031 @Directive2 @Directive7(argument6 : "stringValue8650") @Directive8(argument7 : EnumValue9) + field4471(argument1317: [Scalar2!]!, argument1318: Enum4!): [Object1033!] @Directive7(argument6 : "stringValue8660") @Directive8(argument7 : EnumValue9) + field4478(argument1319: [String!]!, argument1320: [String!]!): [String!] @Directive5(argument4 : "stringValue8666") @Directive7(argument6 : "stringValue8667") @Directive8(argument7 : EnumValue9) + field4479(argument1321: Scalar2!, argument1322: Enum4!, argument1323: [Scalar2!], argument1324: [Scalar2!], argument1325: Scalar2!): Object1034 @Directive7(argument6 : "stringValue8670") @Directive8(argument7 : EnumValue9) + field4484(argument1326: Scalar2!, argument1327: String, argument1328: Boolean, argument1329: Scalar2, argument1330: Enum419!, argument1331: Enum4!, argument1332: Enum420, argument1333: String, argument1334: Boolean, argument1335: Scalar2!): Object1035 @Directive7(argument6 : "stringValue8676") @Directive8(argument7 : EnumValue9) + field4489(argument1336: String!, argument1337: Enum4!): Object28! @Directive2 @Directive7(argument6 : "stringValue8702") @Directive8(argument7 : EnumValue9) + field4490(argument1338: [String!]!, argument1339: Enum4!): [Object28]! @Directive2 @Directive7(argument6 : "stringValue8704") @Directive8(argument7 : EnumValue9) + field4491(argument1340: Scalar2!, argument1341: String, argument1342: Int, argument1343: [String!], argument1344: Enum4!): Object1036 @Directive2 @Directive7(argument6 : "stringValue8706") @Directive8(argument7 : EnumValue9) + field4505(argument1345: Scalar2!, argument1346: Enum4!): [Object1038!] @Directive2 @Directive7(argument6 : "stringValue8732") @Directive8(argument7 : EnumValue9) + field4512(argument1347: Scalar2!, argument1348: Enum4!): Object662 @Directive7(argument6 : "stringValue8742") @Directive8(argument7 : EnumValue9) + field4513(argument1349: Scalar2!, argument1350: Enum4!): Object664 @Directive7(argument6 : "stringValue8744") @Directive8(argument7 : EnumValue9) + field4514(argument1351: Scalar2!, argument1352: Enum4!): Object682 @Directive7(argument6 : "stringValue8746") @Directive8(argument7 : EnumValue9) + field4515(argument1353: Scalar2!, argument1354: Enum4!): Object684 @Directive7(argument6 : "stringValue8748") @Directive8(argument7 : EnumValue9) + field4516(argument1355: Scalar2!, argument1356: Enum4!): Object678 @Directive7(argument6 : "stringValue8750") @Directive8(argument7 : EnumValue9) + field4517(argument1357: Scalar2!, argument1358: Enum4!): Object680 @Directive7(argument6 : "stringValue8752") @Directive8(argument7 : EnumValue9) + field4518(argument1359: Scalar2!, argument1360: Enum4!): Object1040 @Directive2 @Directive7(argument6 : "stringValue8754") @Directive8(argument7 : EnumValue9) + field4531(argument1363: Int, argument1364: String, argument1365: String!, argument1366: Enum4!): Object1043! @Directive2 @Directive7(argument6 : "stringValue8778") @Directive8(argument7 : EnumValue9) + field4534(argument1367: Scalar2!, argument1368: Enum4!): Object170! @Directive2 @Directive7(argument6 : "stringValue8780") @Directive8(argument7 : EnumValue9) + field4535(argument1369: ID!): Object186 @deprecated + field4536(argument1370: ID!): Object187 @deprecated + field4537(argument1371: ID!, argument1372: Enum4!): Object187 + field4538(argument1373: ID!, argument1374: Enum4!): Object186 + field4539(argument1375: ID!): Object198 @deprecated + field4540(argument1376: ID!, argument1377: Enum4!): Object198 + field4541(argument1378: Scalar2!, argument1379: Enum4!): Object841 @Directive2 @Directive7(argument6 : "stringValue8782") @Directive8(argument7 : EnumValue9) + field4542: Object422 @Directive2 @Directive7(argument6 : "stringValue8784") @Directive8(argument7 : EnumValue9) + field4543(argument1380: Scalar2!, argument1381: Enum4!): Object1044 @Directive7(argument6 : "stringValue8786") @Directive8(argument7 : EnumValue9) + field4546(argument1382: Scalar2!, argument1383: Enum4!): Object1045 @Directive7(argument6 : "stringValue8790") @Directive8(argument7 : EnumValue9) + field4552(argument1387: String, argument1388: String, argument1389: Boolean, argument1390: Int, argument1391: String, argument1392: Scalar2!, argument1393: Int): Object423 @Directive5(argument4 : "stringValue8800") @Directive7(argument6 : "stringValue8801") @Directive8(argument7 : EnumValue9) + field4553(argument1394: Boolean! = false): Object1046 @Directive5(argument4 : "stringValue8804") @Directive7(argument6 : "stringValue8805") @Directive8(argument7 : EnumValue9) + field4569: Object422 @Directive7(argument6 : "stringValue8820") @Directive8(argument7 : EnumValue9) + field4570(argument1395: [Scalar2!]!, argument1396: Enum4!): [Object1049!] @Directive2 @Directive7(argument6 : "stringValue8822") @Directive8(argument7 : EnumValue9) + field4581(argument1397: Scalar2!, argument1398: Enum4!): Object13 @Directive2 @Directive7(argument6 : "stringValue8838") @Directive8(argument7 : EnumValue9) + field4582(argument1399: Scalar2!, argument1400: Enum4!): Scalar2 @Directive2 @Directive7(argument6 : "stringValue8840") @Directive8(argument7 : EnumValue9) + field4583(argument1401: Scalar2!, argument1402: Enum4!): Scalar2 @Directive2 @Directive7(argument6 : "stringValue8842") @Directive8(argument7 : EnumValue9) + field4584(argument1403: ID!): Object898 @deprecated + field4585(argument1404: ID!, argument1405: Enum4!): Object898 + field4586(argument1406: Scalar2!, argument1407: Enum4!): Object1051 @Directive2 @Directive7(argument6 : "stringValue8844") @Directive8(argument7 : EnumValue9) + field4605(argument1410: Scalar2!, argument1411: Enum4!, argument1412: Scalar2!): Object1054 @Directive2 @Directive7(argument6 : "stringValue8886") @Directive8(argument7 : EnumValue9) + field4606(argument1413: String, argument1414: Boolean, argument1415: Enum4!): Object1055 @Directive2 @Directive7(argument6 : "stringValue8888") @Directive8(argument7 : EnumValue9) + field4609(argument1416: Scalar2!, argument1417: Enum4!): [Object1056!] @Directive2 @Directive7(argument6 : "stringValue8890") @Directive8(argument7 : EnumValue9) + field4616(argument1418: String!, argument1419: Enum4!): Object1057 @Directive2 @Directive7(argument6 : "stringValue8892") @Directive8(argument7 : EnumValue9) + field4658(argument1422: Int, argument1423: String, argument1424: [Enum432!]!, argument1425: [Enum432!]!, argument1426: Enum4!, argument1427: Enum433): Union175 @Directive2 @Directive7(argument6 : "stringValue8946") @Directive8(argument7 : EnumValue9) + field4663(argument1428: Scalar2!, argument1429: Enum4!): Object21 @Directive2 @Directive7(argument6 : "stringValue8972") @Directive8(argument7 : EnumValue9) + field4664(argument1430: Int, argument1431: String, argument1432: String!, argument1433: Enum4!): Union177 @Directive2 @Directive7(argument6 : "stringValue8974") @Directive8(argument7 : EnumValue9) + field4671(argument1434: Int, argument1435: String, argument1436: String!, argument1437: Enum4!): Union178 @Directive2 @Directive7(argument6 : "stringValue8988") @Directive8(argument7 : EnumValue9) + field4678(argument1438: Int, argument1439: String, argument1440: String!, argument1441: Enum4!): Union180 @Directive2 @Directive7(argument6 : "stringValue9010") @Directive8(argument7 : EnumValue9) + field4684(argument1442: Scalar2!, argument1443: String, argument1444: Enum4!, argument1445: InputObject109!): Object1074 @Directive2 @Directive7(argument6 : "stringValue9020") @Directive8(argument7 : EnumValue9) + field4691(argument1446: Scalar2!): Object422 @Directive7(argument6 : "stringValue9050") @Directive8(argument7 : EnumValue9) + field4692(argument1447: Scalar2!, argument1448: Enum4!): [Object842!] @Directive2 @Directive7(argument6 : "stringValue9052") @Directive8(argument7 : EnumValue9) + field4693(argument1449: Scalar2!, argument1450: Enum4!): [Object1007!] @Directive2 @Directive7(argument6 : "stringValue9054") @Directive8(argument7 : EnumValue9) + field4694(argument1451: Boolean, argument1452: String, argument1453: Scalar4): [Object1077!] @Directive5(argument4 : "stringValue9056") @Directive7(argument6 : "stringValue9057") @Directive8(argument7 : EnumValue9) @deprecated + field4703: Object422 @Directive2 @Directive7(argument6 : "stringValue9068") @Directive8(argument7 : EnumValue9) + field4704(argument1454: Enum4!, argument1455: Enum21): Object1079 @Directive2 @Directive7(argument6 : "stringValue9070") @Directive8(argument7 : EnumValue9) + field4706(argument1456: [String!]!, argument1457: String!, argument1458: String!, argument1459: [String!]): Object1080 @Directive5(argument4 : "stringValue9076") @Directive7(argument6 : "stringValue9077") @Directive8(argument7 : EnumValue9) + field4709: Object422 @Directive7(argument6 : "stringValue9084") @Directive8(argument7 : EnumValue9) + field4710: Object422 @Directive2 @Directive7(argument6 : "stringValue9086") @Directive8(argument7 : EnumValue9) + field4711: Object422 @Directive7(argument6 : "stringValue9088") @Directive8(argument7 : EnumValue9) + field4712: Object422 @Directive2 @Directive7(argument6 : "stringValue9090") @Directive8(argument7 : EnumValue9) + field4713(argument1460: Int, argument1461: String, argument1462: Enum4!): Union77 @Directive7(argument6 : "stringValue9092") @Directive8(argument7 : EnumValue9) + field4714(argument1463: Enum23, argument1464: Enum4!): Object1081 @Directive7(argument6 : "stringValue9094") @Directive8(argument7 : EnumValue9) + field4718(argument1465: Int, argument1466: String, argument1467: Enum4!): Union174 @Directive2 @Directive7(argument6 : "stringValue9096") @Directive8(argument7 : EnumValue9) + field4719(argument1468: ID!): Object575 @deprecated + field4720(argument1469: String!): Object575! @Directive5(argument4 : "stringValue9098") @Directive7(argument6 : "stringValue9099") @Directive8(argument7 : EnumValue9) @deprecated + field4721(argument1470: String!, argument1471: Enum4!): Object575 @Directive7(argument6 : "stringValue9102") @Directive8(argument7 : EnumValue9) + field4722(argument1472: Scalar2, argument1473: Enum279, argument1474: Enum4!, argument1475: Enum435): [Object841!] @Directive7(argument6 : "stringValue9104") @Directive8(argument7 : EnumValue9) + field4723(argument1476: ID!, argument1477: Enum4!): Object575 + field4724(argument1478: Scalar2!, argument1479: Enum4!): Object1082 @Directive7(argument6 : "stringValue9110") @Directive8(argument7 : EnumValue9) + field4735(argument1482: Enum436!, argument1483: String!, argument1484: Enum285!, argument1485: Enum437!, argument1486: Enum438!): Object1083 @Directive5(argument4 : "stringValue9130") @Directive7(argument6 : "stringValue9131") @Directive8(argument7 : EnumValue9) + field4738(argument1487: Enum4!): Object1084 @Directive7(argument6 : "stringValue9150") @Directive8(argument7 : EnumValue9) + field4740(argument1488: Int, argument1489: String, argument1490: Enum4!): Union77 @Directive7(argument6 : "stringValue9152") @Directive8(argument7 : EnumValue9) + field4741: Object422 @Directive2 @Directive7(argument6 : "stringValue9154") @Directive8(argument7 : EnumValue9) + field4742: Object422 @Directive2 @Directive7(argument6 : "stringValue9156") @Directive8(argument7 : EnumValue9) + field4743: Object422 @Directive2 @Directive7(argument6 : "stringValue9158") @Directive8(argument7 : EnumValue9) + field4744(argument1491: Enum4!): Object258 @Directive2 @Directive7(argument6 : "stringValue9160") @Directive8(argument7 : EnumValue9) + field4745: Object422 @Directive7(argument6 : "stringValue9162") @Directive8(argument7 : EnumValue9) + field4746(argument1492: Scalar2!, argument1493: Enum4!): Object884 @Directive7(argument6 : "stringValue9164") @Directive8(argument7 : EnumValue9) + field4747(argument1494: Enum4!): [Object884!] @Directive2 @Directive7(argument6 : "stringValue9166") @Directive8(argument7 : EnumValue9) + field4748(argument1495: Int, argument1496: String, argument1497: Enum4!): Union77 @Directive7(argument6 : "stringValue9168") @Directive8(argument7 : EnumValue9) + field4749(argument1498: [String!]!, argument1499: String, argument1500: String!, argument1501: String!, argument1502: String!): Object1085 @Directive5(argument4 : "stringValue9170") @Directive7(argument6 : "stringValue9171") @Directive8(argument7 : EnumValue9) + field4752(argument1503: String!, argument1504: Enum4!): [Object1086!] @Directive7(argument6 : "stringValue9178") @Directive8(argument7 : EnumValue9) + field4773(argument1505: String): Object422 @Directive2 @Directive7(argument6 : "stringValue9216") @Directive8(argument7 : EnumValue9) + field4774(argument1506: String!): Object1091! @Directive5(argument4 : "stringValue9218") @Directive7(argument6 : "stringValue9219") @Directive8(argument7 : EnumValue9) @deprecated + field4797(argument1527: String!, argument1528: Enum4!): Object1091 @Directive7(argument6 : "stringValue9280") @Directive8(argument7 : EnumValue9) + field4798(argument1529: Scalar3!, argument1530: Enum4!): [Object1016!] @Directive7(argument6 : "stringValue9282") @Directive8(argument7 : EnumValue9) + field4799(argument1531: InputObject81!, argument1532: Enum363, argument1533: Enum4!, argument1534: InputObject82!, argument1535: Scalar2!, argument1536: InputObject112!): Object1102 @Directive7(argument6 : "stringValue9284") @Directive8(argument7 : EnumValue9) + field4809(argument1537: String!, argument1538: InputObject81!, argument1539: Enum363!, argument1540: Enum358!, argument1541: Enum4!, argument1542: InputObject82, argument1543: Scalar2!, argument1544: Scalar2!): Union184 @Directive2 @Directive7(argument6 : "stringValue9298") @Directive8(argument7 : EnumValue9) + field4813: Object422 @Directive2 @Directive7(argument6 : "stringValue9320") @Directive8(argument7 : EnumValue9) + field4814(argument1545: Enum4!, argument1546: String!): [Object233!] @Directive2 @Directive7(argument6 : "stringValue9322") @Directive8(argument7 : EnumValue9) + field4815(argument1547: Scalar2!): Object422 @Directive7(argument6 : "stringValue9324") @Directive8(argument7 : EnumValue9) + field4816(argument1548: String!, argument1549: Enum4!): Object1107 @Directive7(argument6 : "stringValue9326") @Directive8(argument7 : EnumValue9) + field4823(argument1550: String!, argument1551: String!, argument1552: Enum4!): Boolean @Directive2 @Directive7(argument6 : "stringValue9336") @Directive8(argument7 : EnumValue9) + field4824(argument1553: String!, argument1554: Enum4!): Object1109 @Directive2 @Directive7(argument6 : "stringValue9338") @Directive8(argument7 : EnumValue9) + field4861(argument1561: Enum4!, argument1562: Int! = 1, argument1563: String!): [Object233!] @Directive2 @Directive7(argument6 : "stringValue9404") @Directive8(argument7 : EnumValue9) + field4862(argument1564: InputObject113!, argument1565: Enum4!): Object1122 @Directive7(argument6 : "stringValue9406") @Directive8(argument7 : EnumValue9) + field4871: Object422 @Directive7(argument6 : "stringValue9426") @Directive8(argument7 : EnumValue9) + field4872: Object422 @Directive7(argument6 : "stringValue9428") @Directive8(argument7 : EnumValue9) + field4873(argument1568: Scalar2!): Object422 @Directive2 @Directive7(argument6 : "stringValue9430") @Directive8(argument7 : EnumValue9) + field4874(argument1569: String!, argument1570: Enum4!): Object1125 @Directive2 @Directive7(argument6 : "stringValue9432") @Directive8(argument7 : EnumValue9) + field4897(argument1572: ID!): Object1132 @deprecated + field4902(argument1573: Scalar2!, argument1574: Enum4!): Object1132 @Directive7(argument6 : "stringValue9472") @Directive8(argument7 : EnumValue9) + field4903(argument1575: ID!, argument1576: Enum4!): Object1132 + field4904(argument1577: Enum4!): String @Directive2 @Directive7(argument6 : "stringValue9474") @Directive8(argument7 : EnumValue9) + field4905(argument1578: String, argument1579: Enum4!): Object1126 @Directive2 @Directive7(argument6 : "stringValue9476") @Directive8(argument7 : EnumValue9) + field4906(argument1580: Enum4!): Object1133 @Directive7(argument6 : "stringValue9478") @Directive8(argument7 : EnumValue9) + field4910(argument1581: Scalar2!): Object422 @Directive2 @Directive7(argument6 : "stringValue9480") @Directive8(argument7 : EnumValue9) + field4911(argument1582: Scalar3!, argument1583: [InputObject114!]!, argument1584: Enum4!): [Object1134!] @Directive7(argument6 : "stringValue9482") @Directive8(argument7 : EnumValue9) + field4932(argument1585: Scalar3!, argument1586: Scalar3, argument1587: Enum450!, argument1588: Enum4!): [Object1134!] @Directive7(argument6 : "stringValue9512") @Directive8(argument7 : EnumValue9) + field4933(argument1589: String, argument1590: [String!]!, argument1591: Enum454!): [Object1134!] @Directive5(argument4 : "stringValue9514") @Directive7(argument6 : "stringValue9515") @Directive8(argument7 : EnumValue9) + field4934(argument1592: Scalar3!, argument1593: [Enum450!]! = [], argument1594: String!, argument1595: Enum4!): [Object1134!] @Directive7(argument6 : "stringValue9522") @Directive8(argument7 : EnumValue9) + field4935(argument1596: ID!): Object886 @deprecated + field4936(argument1597: ID!, argument1598: Enum4!): Object886 + field4937(argument1599: Enum4!): [Object886!] @Directive2 @Directive7(argument6 : "stringValue9524") @Directive8(argument7 : EnumValue9) + field4938(argument1600: String, argument1601: String, argument1602: Scalar2!, argument1603: Boolean, argument1604: String, argument1605: String, argument1606: Boolean): Object423 @Directive2 @Directive5(argument4 : "stringValue9526") @Directive7(argument6 : "stringValue9527") @Directive8(argument7 : EnumValue9) + field4939(argument1607: String, argument1608: String, argument1609: Scalar2!, argument1610: Boolean, argument1611: String, argument1612: String, argument1613: Boolean): Object423 @Directive5(argument4 : "stringValue9530") @Directive7(argument6 : "stringValue9531") @Directive8(argument7 : EnumValue9) + field4940(argument1614: ID!): Object422 + field4941(argument1615: Enum4!): Object1136 @Directive7(argument6 : "stringValue9534") @Directive8(argument7 : EnumValue9) + field4944(argument1616: String!, argument1617: Enum4!): Object233! @Directive7(argument6 : "stringValue9536") @Directive8(argument7 : EnumValue9) + field4945(argument1618: String): Object422 @Directive2 @Directive7(argument6 : "stringValue9538") @Directive8(argument7 : EnumValue9) + field4946(argument1619: [String!]!, argument1620: Enum4!): [Object233]! @Directive7(argument6 : "stringValue9540") @Directive8(argument7 : EnumValue9) + field4947(argument1621: String, argument1622: String, argument1623: Boolean, argument1624: Scalar2!, argument1625: Int, argument1626: String, argument1627: Int): Object423 @Directive2 @Directive5(argument4 : "stringValue9542") @Directive7(argument6 : "stringValue9543") @Directive8(argument7 : EnumValue9) + field4948(argument1628: Scalar2!, argument1629: Enum4!): Object959! @Directive2 @Directive7(argument6 : "stringValue9546") @Directive8(argument7 : EnumValue9) + field4949(argument1630: ID!): Object152 @deprecated + field4950(argument1631: String!): Object152! @Directive5(argument4 : "stringValue9548") @Directive7(argument6 : "stringValue9549") @Directive8(argument7 : EnumValue9) @deprecated + field4951(argument1632: Scalar2!, argument1633: Enum4!): Object114! @Directive7(argument6 : "stringValue9552") @Directive8(argument7 : EnumValue9) + field4952(argument1634: [Scalar2!]!, argument1635: Enum4!): [Object114]! @Directive7(argument6 : "stringValue9554") @Directive8(argument7 : EnumValue9) + field4953(argument1636: ID!, argument1637: Enum4!): Object152 + field4954(argument1638: [String!]!): [Object152]! @Directive5(argument4 : "stringValue9556") @Directive7(argument6 : "stringValue9557") @Directive8(argument7 : EnumValue9) @deprecated + field4955(argument1639: Scalar2!, argument1640: String!, argument1641: Enum4!): [Object152!] @Directive7(argument6 : "stringValue9560") @Directive8(argument7 : EnumValue9) + field4956(argument1642: Scalar2!, argument1643: Enum4!): Object806 @Directive7(argument6 : "stringValue9562") @Directive8(argument7 : EnumValue9) @deprecated + field4957(argument1644: Scalar2!, argument1645: Enum4!): Object809 @Directive2 @Directive7(argument6 : "stringValue9564") @Directive8(argument7 : EnumValue9) + field4958(argument1646: String!, argument1647: Enum4!): Object366 @Directive7(argument6 : "stringValue9566") @Directive8(argument7 : EnumValue9) + field4959(argument1648: [String!]!, argument1649: Enum4!): [Object366!] @Directive7(argument6 : "stringValue9568") @Directive8(argument7 : EnumValue9) + field4960(argument1650: ID!): Object410 @deprecated + field4961(argument1651: String!): Object410! @Directive5(argument4 : "stringValue9570") @Directive7(argument6 : "stringValue9571") @Directive8(argument7 : EnumValue9) @deprecated + field4962(argument1652: String!): Object410 @Directive5(argument4 : "stringValue9574") @Directive7(argument6 : "stringValue9575") @Directive8(argument7 : EnumValue9) @deprecated + field4963(argument1653: Scalar2!, argument1654: Enum4!): Object44! @Directive7(argument6 : "stringValue9578") @Directive8(argument7 : EnumValue9) + field4964(argument1655: Enum4!, argument1656: String!): Object44 @Directive7(argument6 : "stringValue9580") @Directive8(argument7 : EnumValue9) + field4965(argument1657: [Scalar2!]!, argument1658: Enum4!): [Object44]! @Directive7(argument6 : "stringValue9582") @Directive8(argument7 : EnumValue9) + field4966(argument1659: Enum4!, argument1660: [String!]!): [Object44]! @Directive7(argument6 : "stringValue9584") @Directive8(argument7 : EnumValue9) + field4967(argument1661: Enum4!): Enum455 @Directive7(argument6 : "stringValue9586") @Directive8(argument7 : EnumValue9) + field4968(argument1662: ID!, argument1663: Enum4!): Object410 + field4969(argument1664: [String!]!): [Object410]! @Directive5(argument4 : "stringValue9592") @Directive7(argument6 : "stringValue9593") @Directive8(argument7 : EnumValue9) @deprecated + field4970(argument1665: [String!]!): [Object410]! @Directive5(argument4 : "stringValue9596") @Directive7(argument6 : "stringValue9597") @Directive8(argument7 : EnumValue9) @deprecated + field4971: Object1137 @deprecated + field5151(argument1742: Enum4!): Object1137 + field5152(argument1743: String, argument1744: String, argument1745: Enum4!, argument1746: String!): Object758 @Directive7(argument6 : "stringValue9958") @Directive8(argument7 : EnumValue9) + field5153(argument1747: InputObject116, argument1748: InputObject116, argument1749: Enum4!, argument1750: String!): Union192 @Directive7(argument6 : "stringValue9960") @Directive8(argument7 : EnumValue9) + field5159(argument1751: String, argument1752: InputObject116, argument1753: Enum4!, argument1754: String!): Union193 @Directive7(argument6 : "stringValue9982") @Directive8(argument7 : EnumValue9) + field5162(argument1755: String!, argument1756: Enum4!): Object990 @Directive7(argument6 : "stringValue9992") @Directive8(argument7 : EnumValue9) + field5163(argument1757: Enum4!): [Object990!] @Directive7(argument6 : "stringValue9994") @Directive8(argument7 : EnumValue9) + field5164(argument1758: ID!): Object1171 @deprecated + field5172(argument1759: String!, argument1760: Enum4!): Object1171 @Directive7(argument6 : "stringValue10008") @Directive8(argument7 : EnumValue9) + field5173(argument1761: ID!, argument1762: Enum4!): Object1171 +} + +type Object992 @Directive9(argument8 : "stringValue8227") { + field4247: Object993 @Directive7(argument6 : "stringValue8228") @Directive8(argument7 : EnumValue9) + field4250(argument1188: [Scalar2!], argument1189: [Scalar2!], argument1190: InputObject106, argument1191: [Scalar2!], argument1192: [Enum404!], argument1193: Boolean): Object994 @Directive2 @Directive7(argument6 : "stringValue8230") @Directive8(argument7 : EnumValue9) + field4267(argument1200: [Scalar2!], argument1201: [Scalar2!], argument1202: [Scalar2!], argument1203: InputObject106, argument1204: [Scalar2!], argument1205: [Enum404!], argument1206: Boolean): Object999 @Directive2 @Directive7(argument6 : "stringValue8258") @Directive8(argument7 : EnumValue9) + field4283: Enum54 @Directive2 @Directive7(argument6 : "stringValue8274") @Directive8(argument7 : EnumValue9) + field4284(argument1213: Enum405!, argument1214: InputObject2!, argument1215: [Enum44!]!, argument1216: InputObject107, argument1217: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue8276") @Directive8(argument7 : EnumValue9) + field4285: [String!] @Directive7(argument6 : "stringValue8290") @Directive8(argument7 : EnumValue9) + field4286(argument1218: [Scalar2!], argument1219: InputObject106, argument1220: [Scalar2!], argument1221: [Enum404!], argument1222: Boolean): Object1003 @Directive2 @Directive7(argument6 : "stringValue8292") @Directive8(argument7 : EnumValue9) + field4300: String @Directive2 @Directive7(argument6 : "stringValue8308") @Directive8(argument7 : EnumValue9) + field4301: String @Directive2 @Directive7(argument6 : "stringValue8310") @Directive8(argument7 : EnumValue9) + field4302: [Object1007!] @Directive2 @Directive7(argument6 : "stringValue8312") @Directive8(argument7 : EnumValue9) + field4308(argument1229: InputObject106, argument1230: [Scalar2!], argument1231: [Enum410!], argument1232: Boolean): Object1009 @Directive2 @Directive7(argument6 : "stringValue8334") @Directive8(argument7 : EnumValue9) + field4321: Boolean @Directive2 @Directive7(argument6 : "stringValue8354") @Directive8(argument7 : EnumValue9) + field4322: ID! + field4323(argument1239: InputObject2!, argument1240: Enum43!, argument1241: [Enum44!]!, argument1242: InputObject2!): [Object157!] @Directive2 @Directive7(argument6 : "stringValue8356") @Directive8(argument7 : EnumValue9) + field4324(argument1243: Enum46, argument1244: InputObject2!, argument1245: [Enum44!]!, argument1246: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue8358") @Directive8(argument7 : EnumValue9) + field4325: String @Directive2 @Directive7(argument6 : "stringValue8360") @Directive8(argument7 : EnumValue9) + field4326: Object1013 @Directive7(argument6 : "stringValue8362") @Directive8(argument7 : EnumValue9) + field4328: Object1014 @Directive7(argument6 : "stringValue8372") @Directive8(argument7 : EnumValue9) + field4336: [Object1016!] @Directive7(argument6 : "stringValue8394") @Directive8(argument7 : EnumValue9) + field4341: Boolean @Directive2 @Directive7(argument6 : "stringValue8400") @Directive8(argument7 : EnumValue9) + field4342: Scalar1! + field4343: Enum415 @Directive2 @Directive7(argument6 : "stringValue8402") @Directive8(argument7 : EnumValue9) + field4344: String @Directive2 @Directive7(argument6 : "stringValue8408") @Directive8(argument7 : EnumValue9) + field4345: String @Directive2 @Directive7(argument6 : "stringValue8410") @Directive8(argument7 : EnumValue9) +} + +type Object993 { + field4248: Int! + field4249: Int! +} + +type Object994 @Directive9(argument8 : "stringValue8241") { + field4251: ID! + field4252(argument1194: Enum46, argument1195: InputObject2!, argument1196: [Enum44!]!, argument1197: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue8242") @Directive8(argument7 : EnumValue9) + field4253: Object995! + field4264(argument1198: String, argument1199: Int): Object998 @Directive2 @Directive7(argument6 : "stringValue8256") @Directive8(argument7 : EnumValue9) +} + +type Object995 @Directive10(argument10 : "stringValue8247", argument9 : "stringValue8246") { + field4254: Scalar2! @Directive2 + field4255: Object996! @Directive2 +} + +type Object996 @Directive10(argument10 : "stringValue8251", argument9 : "stringValue8250") { + field4256: [Scalar2!] @Directive2 + field4257: [Scalar2!] @Directive2 + field4258: Object997 @Directive2 + field4261: [Scalar2!] @Directive2 + field4262: [Enum50!] @Directive2 + field4263: Boolean @Directive2 +} + +type Object997 @Directive10(argument10 : "stringValue8255", argument9 : "stringValue8254") { + field4259: String! @Directive2 + field4260: String! @Directive2 +} + +type Object998 { + field4265: [Object154!]! + field4266: Object182! +} + +type Object999 @Directive9(argument8 : "stringValue8261") { + field4268: ID! + field4269(argument1207: Enum46, argument1208: InputObject2!, argument1209: [Enum44!]!, argument1210: InputObject2!): [Object158!] @Directive2 @Directive7(argument6 : "stringValue8262") @Directive8(argument7 : EnumValue9) + field4270: Object1000! + field4280(argument1211: String, argument1212: Int): Object1002 @Directive2 @Directive7(argument6 : "stringValue8272") @Directive8(argument7 : EnumValue9) +} + +enum Enum1 { + EnumValue1 + EnumValue2 +} + +enum Enum10 @Directive10(argument10 : "stringValue88", argument9 : "stringValue87") { + EnumValue94 + EnumValue95 + EnumValue96 +} + +enum Enum100 @Directive10(argument10 : "stringValue2177", argument9 : "stringValue2176") { + EnumValue1109 + EnumValue1110 + EnumValue1111 + EnumValue1112 + EnumValue1113 + EnumValue1114 + EnumValue1115 + EnumValue1116 + EnumValue1117 + EnumValue1118 + EnumValue1119 + EnumValue1120 + EnumValue1121 + EnumValue1122 + EnumValue1123 + EnumValue1124 + EnumValue1125 +} + +enum Enum101 @Directive10(argument10 : "stringValue2185", argument9 : "stringValue2184") { + EnumValue1126 + EnumValue1127 + EnumValue1128 + EnumValue1129 + EnumValue1130 + EnumValue1131 + EnumValue1132 + EnumValue1133 + EnumValue1134 + EnumValue1135 + EnumValue1136 + EnumValue1137 + EnumValue1138 + EnumValue1139 + EnumValue1140 + EnumValue1141 + EnumValue1142 +} + +enum Enum102 @Directive10(argument10 : "stringValue2199", argument9 : "stringValue2198") { + EnumValue1143 + EnumValue1144 + EnumValue1145 + EnumValue1146 + EnumValue1147 + EnumValue1148 + EnumValue1149 + EnumValue1150 + EnumValue1151 + EnumValue1152 + EnumValue1153 + EnumValue1154 +} + +enum Enum103 @Directive10(argument10 : "stringValue2207", argument9 : "stringValue2206") { + EnumValue1155 + EnumValue1156 +} + +enum Enum104 @Directive10(argument10 : "stringValue2235", argument9 : "stringValue2234") { + EnumValue1157 + EnumValue1158 + EnumValue1159 + EnumValue1160 + EnumValue1161 + EnumValue1162 + EnumValue1163 + EnumValue1164 + EnumValue1165 + EnumValue1166 + EnumValue1167 + EnumValue1168 + EnumValue1169 + EnumValue1170 + EnumValue1171 + EnumValue1172 + EnumValue1173 + EnumValue1174 + EnumValue1175 + EnumValue1176 +} + +enum Enum105 @Directive10(argument10 : "stringValue2297", argument9 : "stringValue2296") { + EnumValue1177 + EnumValue1178 + EnumValue1179 + EnumValue1180 + EnumValue1181 + EnumValue1182 + EnumValue1183 + EnumValue1184 + EnumValue1185 + EnumValue1186 + EnumValue1187 + EnumValue1188 +} + +enum Enum106 @Directive10(argument10 : "stringValue2323", argument9 : "stringValue2322") { + EnumValue1189 + EnumValue1190 + EnumValue1191 + EnumValue1192 + EnumValue1193 + EnumValue1194 + EnumValue1195 + EnumValue1196 + EnumValue1197 + EnumValue1198 + EnumValue1199 + EnumValue1200 + EnumValue1201 + EnumValue1202 + EnumValue1203 + EnumValue1204 + EnumValue1205 + EnumValue1206 + EnumValue1207 + EnumValue1208 + EnumValue1209 + EnumValue1210 + EnumValue1211 + EnumValue1212 + EnumValue1213 + EnumValue1214 + EnumValue1215 + EnumValue1216 + EnumValue1217 + EnumValue1218 + EnumValue1219 + EnumValue1220 + EnumValue1221 + EnumValue1222 + EnumValue1223 +} + +enum Enum107 @Directive10(argument10 : "stringValue2327", argument9 : "stringValue2326") { + EnumValue1224 + EnumValue1225 + EnumValue1226 +} + +enum Enum108 @Directive10(argument10 : "stringValue2343", argument9 : "stringValue2342") { + EnumValue1227 + EnumValue1228 + EnumValue1229 + EnumValue1230 +} + +enum Enum109 @Directive10(argument10 : "stringValue2347", argument9 : "stringValue2346") { + EnumValue1231 + EnumValue1232 + EnumValue1233 +} + +enum Enum11 @Directive10(argument10 : "stringValue92", argument9 : "stringValue91") { + EnumValue97 + EnumValue98 + EnumValue99 +} + +enum Enum110 @Directive10(argument10 : "stringValue2523", argument9 : "stringValue2522") { + EnumValue1234 + EnumValue1235 + EnumValue1236 + EnumValue1237 + EnumValue1238 +} + +enum Enum111 @Directive10(argument10 : "stringValue2561", argument9 : "stringValue2560") { + EnumValue1239 +} + +enum Enum112 @Directive10(argument10 : "stringValue2593", argument9 : "stringValue2592") { + EnumValue1240 + EnumValue1241 + EnumValue1242 + EnumValue1243 + EnumValue1244 + EnumValue1245 + EnumValue1246 + EnumValue1247 + EnumValue1248 + EnumValue1249 + EnumValue1250 + EnumValue1251 + EnumValue1252 + EnumValue1253 + EnumValue1254 + EnumValue1255 + EnumValue1256 + EnumValue1257 + EnumValue1258 + EnumValue1259 + EnumValue1260 + EnumValue1261 + EnumValue1262 +} + +enum Enum113 @Directive10(argument10 : "stringValue2645", argument9 : "stringValue2644") { + EnumValue1263 + EnumValue1264 + EnumValue1265 +} + +enum Enum114 @Directive10(argument10 : "stringValue2693", argument9 : "stringValue2692") { + EnumValue1266 + EnumValue1267 + EnumValue1268 + EnumValue1269 + EnumValue1270 + EnumValue1271 + EnumValue1272 + EnumValue1273 +} + +enum Enum115 @Directive10(argument10 : "stringValue2697", argument9 : "stringValue2696") { + EnumValue1274 + EnumValue1275 +} + +enum Enum116 @Directive10(argument10 : "stringValue2701", argument9 : "stringValue2700") { + EnumValue1276 + EnumValue1277 + EnumValue1278 + EnumValue1279 + EnumValue1280 +} + +enum Enum117 @Directive10(argument10 : "stringValue2705", argument9 : "stringValue2704") { + EnumValue1281 + EnumValue1282 + EnumValue1283 +} + +enum Enum118 @Directive10(argument10 : "stringValue2737", argument9 : "stringValue2736") { + EnumValue1284 + EnumValue1285 + EnumValue1286 + EnumValue1287 + EnumValue1288 + EnumValue1289 + EnumValue1290 +} + +enum Enum119 @Directive10(argument10 : "stringValue2757", argument9 : "stringValue2756") { + EnumValue1291 +} + +enum Enum12 @Directive10(argument10 : "stringValue96", argument9 : "stringValue95") { + EnumValue100 + EnumValue101 + EnumValue102 + EnumValue103 + EnumValue104 +} + +enum Enum120 @Directive10(argument10 : "stringValue2769", argument9 : "stringValue2768") { + EnumValue1292 +} + +enum Enum121 @Directive10(argument10 : "stringValue2789", argument9 : "stringValue2788") { + EnumValue1293 + EnumValue1294 + EnumValue1295 +} + +enum Enum122 @Directive10(argument10 : "stringValue2793", argument9 : "stringValue2792") { + EnumValue1296 + EnumValue1297 + EnumValue1298 +} + +enum Enum123 @Directive10(argument10 : "stringValue2801", argument9 : "stringValue2800") { + EnumValue1299 + EnumValue1300 +} + +enum Enum124 @Directive10(argument10 : "stringValue2805", argument9 : "stringValue2804") { + EnumValue1301 + EnumValue1302 +} + +enum Enum125 @Directive10(argument10 : "stringValue2817", argument9 : "stringValue2816") { + EnumValue1303 + EnumValue1304 + EnumValue1305 + EnumValue1306 +} + +enum Enum126 @Directive10(argument10 : "stringValue2825", argument9 : "stringValue2824") { + EnumValue1307 + EnumValue1308 +} + +enum Enum127 @Directive10(argument10 : "stringValue2829", argument9 : "stringValue2828") { + EnumValue1309 + EnumValue1310 + EnumValue1311 + EnumValue1312 +} + +enum Enum128 @Directive10(argument10 : "stringValue2833", argument9 : "stringValue2832") { + EnumValue1313 + EnumValue1314 + EnumValue1315 + EnumValue1316 +} + +enum Enum129 @Directive10(argument10 : "stringValue2867", argument9 : "stringValue2866") { + EnumValue1317 + EnumValue1318 +} + +enum Enum13 { + EnumValue105 +} + +enum Enum130 @Directive10(argument10 : "stringValue2893", argument9 : "stringValue2892") { + EnumValue1319 + EnumValue1320 + EnumValue1321 + EnumValue1322 + EnumValue1323 + EnumValue1324 + EnumValue1325 + EnumValue1326 +} + +enum Enum131 @Directive10(argument10 : "stringValue2905", argument9 : "stringValue2904") { + EnumValue1327 + EnumValue1328 + EnumValue1329 + EnumValue1330 + EnumValue1331 +} + +enum Enum132 @Directive10(argument10 : "stringValue2911", argument9 : "stringValue2910") { + EnumValue1332 + EnumValue1333 + EnumValue1334 + EnumValue1335 +} + +enum Enum133 @Directive10(argument10 : "stringValue2935", argument9 : "stringValue2934") { + EnumValue1336 +} + +enum Enum134 @Directive10(argument10 : "stringValue2993", argument9 : "stringValue2992") { + EnumValue1337 + EnumValue1338 + EnumValue1339 + EnumValue1340 + EnumValue1341 + EnumValue1342 + EnumValue1343 + EnumValue1344 +} + +enum Enum135 @Directive10(argument10 : "stringValue3005", argument9 : "stringValue3004") { + EnumValue1345 + EnumValue1346 +} + +enum Enum136 @Directive10(argument10 : "stringValue3009", argument9 : "stringValue3008") { + EnumValue1347 + EnumValue1348 +} + +enum Enum137 @Directive10(argument10 : "stringValue3025", argument9 : "stringValue3024") { + EnumValue1349 + EnumValue1350 + EnumValue1351 +} + +enum Enum138 @Directive10(argument10 : "stringValue3033", argument9 : "stringValue3032") { + EnumValue1352 + EnumValue1353 + EnumValue1354 + EnumValue1355 + EnumValue1356 + EnumValue1357 + EnumValue1358 +} + +enum Enum139 @Directive10(argument10 : "stringValue3055", argument9 : "stringValue3054") { + EnumValue1359 +} + +enum Enum14 @Directive10(argument10 : "stringValue112", argument9 : "stringValue111") { + EnumValue106 + EnumValue107 + EnumValue108 +} + +enum Enum140 @Directive10(argument10 : "stringValue3067", argument9 : "stringValue3066") { + EnumValue1360 + EnumValue1361 + EnumValue1362 + EnumValue1363 + EnumValue1364 + EnumValue1365 + EnumValue1366 + EnumValue1367 + EnumValue1368 + EnumValue1369 + EnumValue1370 + EnumValue1371 + EnumValue1372 + EnumValue1373 + EnumValue1374 + EnumValue1375 + EnumValue1376 + EnumValue1377 + EnumValue1378 + EnumValue1379 + EnumValue1380 +} + +enum Enum141 @Directive10(argument10 : "stringValue3075", argument9 : "stringValue3074") { + EnumValue1381 + EnumValue1382 + EnumValue1383 +} + +enum Enum142 @Directive10(argument10 : "stringValue3099", argument9 : "stringValue3098") { + EnumValue1384 + EnumValue1385 + EnumValue1386 + EnumValue1387 +} + +enum Enum143 @Directive10(argument10 : "stringValue3163", argument9 : "stringValue3162") { + EnumValue1388 + EnumValue1389 + EnumValue1390 + EnumValue1391 + EnumValue1392 + EnumValue1393 +} + +enum Enum144 @Directive10(argument10 : "stringValue3213", argument9 : "stringValue3212") { + EnumValue1394 +} + +enum Enum145 @Directive10(argument10 : "stringValue3227", argument9 : "stringValue3226") { + EnumValue1395 +} + +enum Enum146 @Directive10(argument10 : "stringValue3239", argument9 : "stringValue3238") { + EnumValue1396 + EnumValue1397 + EnumValue1398 +} + +enum Enum147 @Directive10(argument10 : "stringValue3261", argument9 : "stringValue3260") { + EnumValue1399 + EnumValue1400 + EnumValue1401 +} + +enum Enum148 @Directive10(argument10 : "stringValue3293", argument9 : "stringValue3292") { + EnumValue1402 + EnumValue1403 + EnumValue1404 +} + +enum Enum149 @Directive10(argument10 : "stringValue3301", argument9 : "stringValue3300") { + EnumValue1405 + EnumValue1406 + EnumValue1407 + EnumValue1408 + EnumValue1409 + EnumValue1410 + EnumValue1411 + EnumValue1412 + EnumValue1413 +} + +enum Enum15 @Directive10(argument10 : "stringValue126", argument9 : "stringValue125") { + EnumValue109 + EnumValue110 + EnumValue111 +} + +enum Enum150 @Directive10(argument10 : "stringValue3305", argument9 : "stringValue3304") { + EnumValue1414 + EnumValue1415 + EnumValue1416 +} + +enum Enum151 @Directive10(argument10 : "stringValue3309", argument9 : "stringValue3308") { + EnumValue1417 + EnumValue1418 + EnumValue1419 + EnumValue1420 + EnumValue1421 + EnumValue1422 + EnumValue1423 + EnumValue1424 + EnumValue1425 + EnumValue1426 + EnumValue1427 + EnumValue1428 +} + +enum Enum152 @Directive10(argument10 : "stringValue3317", argument9 : "stringValue3316") { + EnumValue1429 + EnumValue1430 + EnumValue1431 + EnumValue1432 +} + +enum Enum153 @Directive10(argument10 : "stringValue3337", argument9 : "stringValue3336") { + EnumValue1433 + EnumValue1434 + EnumValue1435 +} + +enum Enum154 @Directive10(argument10 : "stringValue3365", argument9 : "stringValue3364") { + EnumValue1436 + EnumValue1437 + EnumValue1438 + EnumValue1439 + EnumValue1440 +} + +enum Enum155 @Directive10(argument10 : "stringValue3401", argument9 : "stringValue3400") { + EnumValue1441 + EnumValue1442 + EnumValue1443 + EnumValue1444 + EnumValue1445 + EnumValue1446 + EnumValue1447 + EnumValue1448 + EnumValue1449 + EnumValue1450 +} + +enum Enum156 @Directive10(argument10 : "stringValue3445", argument9 : "stringValue3444") { + EnumValue1451 + EnumValue1452 + EnumValue1453 + EnumValue1454 + EnumValue1455 +} + +enum Enum157 @Directive10(argument10 : "stringValue3453", argument9 : "stringValue3452") { + EnumValue1456 + EnumValue1457 + EnumValue1458 + EnumValue1459 + EnumValue1460 +} + +enum Enum158 @Directive10(argument10 : "stringValue3461", argument9 : "stringValue3460") { + EnumValue1461 + EnumValue1462 +} + +enum Enum159 @Directive10(argument10 : "stringValue3495", argument9 : "stringValue3494") { + EnumValue1463 + EnumValue1464 + EnumValue1465 + EnumValue1466 + EnumValue1467 + EnumValue1468 +} + +enum Enum16 @Directive10(argument10 : "stringValue130", argument9 : "stringValue129") { + EnumValue112 + EnumValue113 +} + +enum Enum160 @Directive10(argument10 : "stringValue3511", argument9 : "stringValue3510") { + EnumValue1469 + EnumValue1470 +} + +enum Enum161 @Directive10(argument10 : "stringValue3519", argument9 : "stringValue3518") { + EnumValue1471 + EnumValue1472 +} + +enum Enum162 @Directive10(argument10 : "stringValue3531", argument9 : "stringValue3530") { + EnumValue1473 + EnumValue1474 + EnumValue1475 + EnumValue1476 + EnumValue1477 +} + +enum Enum163 @Directive10(argument10 : "stringValue3543", argument9 : "stringValue3542") { + EnumValue1478 + EnumValue1479 + EnumValue1480 +} + +enum Enum164 @Directive10(argument10 : "stringValue3581", argument9 : "stringValue3580") { + EnumValue1481 + EnumValue1482 + EnumValue1483 + EnumValue1484 + EnumValue1485 +} + +enum Enum165 @Directive10(argument10 : "stringValue3589", argument9 : "stringValue3588") { + EnumValue1486 + EnumValue1487 + EnumValue1488 +} + +enum Enum166 @Directive10(argument10 : "stringValue3601", argument9 : "stringValue3600") { + EnumValue1489 + EnumValue1490 + EnumValue1491 + EnumValue1492 + EnumValue1493 + EnumValue1494 + EnumValue1495 + EnumValue1496 + EnumValue1497 + EnumValue1498 + EnumValue1499 + EnumValue1500 + EnumValue1501 + EnumValue1502 + EnumValue1503 + EnumValue1504 + EnumValue1505 + EnumValue1506 + EnumValue1507 + EnumValue1508 + EnumValue1509 + EnumValue1510 + EnumValue1511 + EnumValue1512 + EnumValue1513 + EnumValue1514 + EnumValue1515 + EnumValue1516 + EnumValue1517 + EnumValue1518 + EnumValue1519 + EnumValue1520 + EnumValue1521 +} + +enum Enum167 @Directive10(argument10 : "stringValue3609", argument9 : "stringValue3608") { + EnumValue1522 +} + +enum Enum168 @Directive10(argument10 : "stringValue3649", argument9 : "stringValue3648") { + EnumValue1523 +} + +enum Enum169 @Directive10(argument10 : "stringValue3653", argument9 : "stringValue3652") { + EnumValue1524 + EnumValue1525 +} + +enum Enum17 @Directive10(argument10 : "stringValue134", argument9 : "stringValue133") { + EnumValue114 + EnumValue115 +} + +enum Enum170 @Directive10(argument10 : "stringValue3665", argument9 : "stringValue3664") { + EnumValue1526 + EnumValue1527 +} + +enum Enum171 @Directive10(argument10 : "stringValue3685", argument9 : "stringValue3684") { + EnumValue1528 + EnumValue1529 +} + +enum Enum172 @Directive10(argument10 : "stringValue3693", argument9 : "stringValue3692") { + EnumValue1530 + EnumValue1531 +} + +enum Enum173 @Directive10(argument10 : "stringValue3729", argument9 : "stringValue3728") { + EnumValue1532 + EnumValue1533 + EnumValue1534 +} + +enum Enum174 @Directive10(argument10 : "stringValue3753", argument9 : "stringValue3752") { + EnumValue1535 + EnumValue1536 +} + +enum Enum175 @Directive10(argument10 : "stringValue3765", argument9 : "stringValue3764") { + EnumValue1537 + EnumValue1538 + EnumValue1539 + EnumValue1540 +} + +enum Enum176 @Directive10(argument10 : "stringValue3817", argument9 : "stringValue3816") { + EnumValue1541 + EnumValue1542 + EnumValue1543 +} + +enum Enum177 @Directive10(argument10 : "stringValue3881", argument9 : "stringValue3880") { + EnumValue1544 + EnumValue1545 + EnumValue1546 + EnumValue1547 +} + +enum Enum178 @Directive10(argument10 : "stringValue3885", argument9 : "stringValue3884") { + EnumValue1548 + EnumValue1549 + EnumValue1550 +} + +enum Enum179 @Directive10(argument10 : "stringValue3901", argument9 : "stringValue3900") { + EnumValue1551 + EnumValue1552 +} + +enum Enum18 @Directive10(argument10 : "stringValue138", argument9 : "stringValue137") { + EnumValue116 + EnumValue117 + EnumValue118 + EnumValue119 + EnumValue120 + EnumValue121 + EnumValue122 + EnumValue123 + EnumValue124 + EnumValue125 + EnumValue126 + EnumValue127 + EnumValue128 + EnumValue129 + EnumValue130 + EnumValue131 +} + +enum Enum180 @Directive10(argument10 : "stringValue3913", argument9 : "stringValue3912") { + EnumValue1553 + EnumValue1554 + EnumValue1555 + EnumValue1556 + EnumValue1557 + EnumValue1558 + EnumValue1559 +} + +enum Enum181 @Directive10(argument10 : "stringValue3929", argument9 : "stringValue3928") { + EnumValue1560 + EnumValue1561 + EnumValue1562 + EnumValue1563 +} + +enum Enum182 @Directive10(argument10 : "stringValue3937", argument9 : "stringValue3936") { + EnumValue1564 + EnumValue1565 +} + +enum Enum183 @Directive10(argument10 : "stringValue4035", argument9 : "stringValue4034") { + EnumValue1566 + EnumValue1567 + EnumValue1568 + EnumValue1569 + EnumValue1570 + EnumValue1571 +} + +enum Enum184 @Directive10(argument10 : "stringValue4063", argument9 : "stringValue4062") { + EnumValue1572 + EnumValue1573 +} + +enum Enum185 @Directive10(argument10 : "stringValue4067", argument9 : "stringValue4066") { + EnumValue1574 + EnumValue1575 +} + +enum Enum186 @Directive10(argument10 : "stringValue4087", argument9 : "stringValue4086") { + EnumValue1576 + EnumValue1577 + EnumValue1578 + EnumValue1579 + EnumValue1580 + EnumValue1581 + EnumValue1582 + EnumValue1583 + EnumValue1584 +} + +enum Enum187 @Directive10(argument10 : "stringValue4095", argument9 : "stringValue4094") { + EnumValue1585 + EnumValue1586 + EnumValue1587 +} + +enum Enum188 @Directive10(argument10 : "stringValue4115", argument9 : "stringValue4114") { + EnumValue1588 + EnumValue1589 +} + +enum Enum189 @Directive10(argument10 : "stringValue4199", argument9 : "stringValue4198") { + EnumValue1590 + EnumValue1591 +} + +enum Enum19 @Directive10(argument10 : "stringValue142", argument9 : "stringValue141") { + EnumValue132 + EnumValue133 + EnumValue134 +} + +enum Enum190 @Directive10(argument10 : "stringValue4207", argument9 : "stringValue4206") { + EnumValue1592 + EnumValue1593 +} + +enum Enum191 @Directive10(argument10 : "stringValue4215", argument9 : "stringValue4214") { + EnumValue1594 + EnumValue1595 +} + +enum Enum192 @Directive10(argument10 : "stringValue4235", argument9 : "stringValue4234") { + EnumValue1596 +} + +enum Enum193 @Directive10(argument10 : "stringValue4239", argument9 : "stringValue4238") { + EnumValue1597 + EnumValue1598 + EnumValue1599 +} + +enum Enum194 @Directive10(argument10 : "stringValue4247", argument9 : "stringValue4246") { + EnumValue1600 + EnumValue1601 + EnumValue1602 + EnumValue1603 + EnumValue1604 + EnumValue1605 + EnumValue1606 + EnumValue1607 +} + +enum Enum195 @Directive10(argument10 : "stringValue4271", argument9 : "stringValue4270") { + EnumValue1608 +} + +enum Enum196 @Directive10(argument10 : "stringValue4275", argument9 : "stringValue4274") { + EnumValue1609 + EnumValue1610 +} + +enum Enum197 @Directive10(argument10 : "stringValue4283", argument9 : "stringValue4282") { + EnumValue1611 + EnumValue1612 + EnumValue1613 +} + +enum Enum198 @Directive10(argument10 : "stringValue4303", argument9 : "stringValue4302") { + EnumValue1614 + EnumValue1615 +} + +enum Enum199 @Directive10(argument10 : "stringValue4307", argument9 : "stringValue4306") { + EnumValue1616 + EnumValue1617 + EnumValue1618 + EnumValue1619 + EnumValue1620 + EnumValue1621 + EnumValue1622 + EnumValue1623 + EnumValue1624 + EnumValue1625 + EnumValue1626 + EnumValue1627 + EnumValue1628 + EnumValue1629 +} + +enum Enum2 { + EnumValue3 + EnumValue4 +} + +enum Enum20 @Directive10(argument10 : "stringValue146", argument9 : "stringValue145") { + EnumValue135 + EnumValue136 + EnumValue137 +} + +enum Enum200 @Directive10(argument10 : "stringValue4415", argument9 : "stringValue4414") { + EnumValue1630 +} + +enum Enum201 @Directive10(argument10 : "stringValue4459", argument9 : "stringValue4458") { + EnumValue1631 +} + +enum Enum202 @Directive10(argument10 : "stringValue4477", argument9 : "stringValue4476") { + EnumValue1632 + EnumValue1633 + EnumValue1634 + EnumValue1635 + EnumValue1636 + EnumValue1637 + EnumValue1638 +} + +enum Enum203 @Directive10(argument10 : "stringValue4481", argument9 : "stringValue4480") { + EnumValue1639 + EnumValue1640 + EnumValue1641 +} + +enum Enum204 @Directive10(argument10 : "stringValue4489", argument9 : "stringValue4488") { + EnumValue1642 + EnumValue1643 + EnumValue1644 + EnumValue1645 + EnumValue1646 +} + +enum Enum205 @Directive10(argument10 : "stringValue4493", argument9 : "stringValue4492") { + EnumValue1647 + EnumValue1648 + EnumValue1649 +} + +enum Enum206 @Directive10(argument10 : "stringValue4501", argument9 : "stringValue4500") { + EnumValue1650 + EnumValue1651 + EnumValue1652 + EnumValue1653 + EnumValue1654 + EnumValue1655 + EnumValue1656 + EnumValue1657 + EnumValue1658 + EnumValue1659 + EnumValue1660 + EnumValue1661 + EnumValue1662 + EnumValue1663 + EnumValue1664 + EnumValue1665 + EnumValue1666 + EnumValue1667 + EnumValue1668 + EnumValue1669 + EnumValue1670 + EnumValue1671 + EnumValue1672 + EnumValue1673 + EnumValue1674 + EnumValue1675 + EnumValue1676 + EnumValue1677 + EnumValue1678 + EnumValue1679 + EnumValue1680 + EnumValue1681 + EnumValue1682 + EnumValue1683 + EnumValue1684 + EnumValue1685 + EnumValue1686 + EnumValue1687 + EnumValue1688 + EnumValue1689 + EnumValue1690 + EnumValue1691 + EnumValue1692 + EnumValue1693 + EnumValue1694 + EnumValue1695 + EnumValue1696 + EnumValue1697 + EnumValue1698 + EnumValue1699 + EnumValue1700 + EnumValue1701 + EnumValue1702 + EnumValue1703 + EnumValue1704 + EnumValue1705 + EnumValue1706 + EnumValue1707 + EnumValue1708 + EnumValue1709 + EnumValue1710 + EnumValue1711 + EnumValue1712 + EnumValue1713 +} + +enum Enum207 @Directive10(argument10 : "stringValue4521", argument9 : "stringValue4520") { + EnumValue1714 + EnumValue1715 + EnumValue1716 + EnumValue1717 +} + +enum Enum208 @Directive10(argument10 : "stringValue4551", argument9 : "stringValue4550") { + EnumValue1718 + EnumValue1719 + EnumValue1720 +} + +enum Enum209 @Directive10(argument10 : "stringValue4569", argument9 : "stringValue4568") { + EnumValue1721 +} + +enum Enum21 @Directive10(argument10 : "stringValue162", argument9 : "stringValue161") { + EnumValue138 + EnumValue139 +} + +enum Enum210 @Directive10(argument10 : "stringValue4615", argument9 : "stringValue4614") { + EnumValue1722 +} + +enum Enum211 @Directive10(argument10 : "stringValue4625", argument9 : "stringValue4624") { + EnumValue1723 + EnumValue1724 +} + +enum Enum212 @Directive10(argument10 : "stringValue4645", argument9 : "stringValue4644") { + EnumValue1725 + EnumValue1726 +} + +enum Enum213 @Directive10(argument10 : "stringValue4667", argument9 : "stringValue4666") { + EnumValue1727 + EnumValue1728 + EnumValue1729 +} + +enum Enum214 @Directive10(argument10 : "stringValue4729", argument9 : "stringValue4728") { + EnumValue1730 + EnumValue1731 + EnumValue1732 + EnumValue1733 + EnumValue1734 + EnumValue1735 + EnumValue1736 +} + +enum Enum215 @Directive10(argument10 : "stringValue4737", argument9 : "stringValue4736") { + EnumValue1737 + EnumValue1738 +} + +enum Enum216 @Directive10(argument10 : "stringValue4769", argument9 : "stringValue4768") { + EnumValue1739 + EnumValue1740 + EnumValue1741 +} + +enum Enum217 @Directive10(argument10 : "stringValue4817", argument9 : "stringValue4816") { + EnumValue1742 + EnumValue1743 +} + +enum Enum218 @Directive10(argument10 : "stringValue4821", argument9 : "stringValue4820") { + EnumValue1744 + EnumValue1745 + EnumValue1746 +} + +enum Enum219 @Directive10(argument10 : "stringValue4847", argument9 : "stringValue4846") { + EnumValue1747 +} + +enum Enum22 @Directive10(argument10 : "stringValue168", argument9 : "stringValue167") { + EnumValue140 + EnumValue141 + EnumValue142 + EnumValue143 + EnumValue144 + EnumValue145 + EnumValue146 + EnumValue147 + EnumValue148 + EnumValue149 + EnumValue150 + EnumValue151 + EnumValue152 + EnumValue153 + EnumValue154 + EnumValue155 + EnumValue156 + EnumValue157 + EnumValue158 + EnumValue159 + EnumValue160 + EnumValue161 + EnumValue162 + EnumValue163 + EnumValue164 + EnumValue165 + EnumValue166 + EnumValue167 + EnumValue168 + EnumValue169 + EnumValue170 + EnumValue171 +} + +enum Enum220 @Directive10(argument10 : "stringValue4933", argument9 : "stringValue4932") { + EnumValue1748 + EnumValue1749 + EnumValue1750 + EnumValue1751 + EnumValue1752 +} + +enum Enum221 @Directive10(argument10 : "stringValue4949", argument9 : "stringValue4948") { + EnumValue1753 + EnumValue1754 + EnumValue1755 + EnumValue1756 + EnumValue1757 +} + +enum Enum222 @Directive10(argument10 : "stringValue4965", argument9 : "stringValue4964") { + EnumValue1758 + EnumValue1759 + EnumValue1760 + EnumValue1761 +} + +enum Enum223 @Directive10(argument10 : "stringValue4985", argument9 : "stringValue4984") { + EnumValue1762 + EnumValue1763 +} + +enum Enum224 @Directive10(argument10 : "stringValue5005", argument9 : "stringValue5004") { + EnumValue1764 + EnumValue1765 + EnumValue1766 + EnumValue1767 + EnumValue1768 +} + +enum Enum225 @Directive10(argument10 : "stringValue5061", argument9 : "stringValue5060") { + EnumValue1769 + EnumValue1770 + EnumValue1771 + EnumValue1772 + EnumValue1773 +} + +enum Enum226 @Directive10(argument10 : "stringValue5069", argument9 : "stringValue5068") { + EnumValue1774 + EnumValue1775 + EnumValue1776 + EnumValue1777 + EnumValue1778 +} + +enum Enum227 @Directive10(argument10 : "stringValue5125", argument9 : "stringValue5124") { + EnumValue1779 +} + +enum Enum228 @Directive10(argument10 : "stringValue5145", argument9 : "stringValue5144") { + EnumValue1780 + EnumValue1781 + EnumValue1782 + EnumValue1783 + EnumValue1784 + EnumValue1785 + EnumValue1786 +} + +enum Enum229 @Directive10(argument10 : "stringValue5205", argument9 : "stringValue5204") { + EnumValue1787 + EnumValue1788 +} + +enum Enum23 @Directive10(argument10 : "stringValue174", argument9 : "stringValue173") { + EnumValue172 + EnumValue173 +} + +enum Enum230 @Directive10(argument10 : "stringValue5227", argument9 : "stringValue5226") { + EnumValue1789 + EnumValue1790 + EnumValue1791 + EnumValue1792 + EnumValue1793 +} + +enum Enum231 @Directive10(argument10 : "stringValue5241", argument9 : "stringValue5240") { + EnumValue1794 +} + +enum Enum232 @Directive10(argument10 : "stringValue5309", argument9 : "stringValue5308") { + EnumValue1795 + EnumValue1796 + EnumValue1797 +} + +enum Enum233 @Directive10(argument10 : "stringValue5335", argument9 : "stringValue5334") { + EnumValue1798 + EnumValue1799 + EnumValue1800 +} + +enum Enum234 @Directive10(argument10 : "stringValue5347", argument9 : "stringValue5346") { + EnumValue1801 + EnumValue1802 + EnumValue1803 +} + +enum Enum235 @Directive10(argument10 : "stringValue5393", argument9 : "stringValue5392") { + EnumValue1804 + EnumValue1805 + EnumValue1806 + EnumValue1807 +} + +enum Enum236 @Directive10(argument10 : "stringValue5415", argument9 : "stringValue5414") { + EnumValue1808 + EnumValue1809 + EnumValue1810 +} + +enum Enum237 @Directive10(argument10 : "stringValue5449", argument9 : "stringValue5448") { + EnumValue1811 + EnumValue1812 +} + +enum Enum238 @Directive10(argument10 : "stringValue5485", argument9 : "stringValue5484") { + EnumValue1813 + EnumValue1814 +} + +enum Enum239 @Directive10(argument10 : "stringValue5499", argument9 : "stringValue5498") { + EnumValue1815 + EnumValue1816 +} + +enum Enum24 @Directive10(argument10 : "stringValue184", argument9 : "stringValue183") { + EnumValue174 + EnumValue175 +} + +enum Enum240 @Directive10(argument10 : "stringValue5529", argument9 : "stringValue5528") { + EnumValue1817 + EnumValue1818 +} + +enum Enum241 @Directive10(argument10 : "stringValue5547", argument9 : "stringValue5546") { + EnumValue1819 +} + +enum Enum242 @Directive10(argument10 : "stringValue5573", argument9 : "stringValue5572") { + EnumValue1820 + EnumValue1821 + EnumValue1822 + EnumValue1823 + EnumValue1824 + EnumValue1825 + EnumValue1826 + EnumValue1827 + EnumValue1828 +} + +enum Enum243 @Directive10(argument10 : "stringValue5595", argument9 : "stringValue5594") { + EnumValue1829 +} + +enum Enum244 @Directive10(argument10 : "stringValue5611", argument9 : "stringValue5610") { + EnumValue1830 +} + +enum Enum245 @Directive10(argument10 : "stringValue5615", argument9 : "stringValue5614") { + EnumValue1831 + EnumValue1832 + EnumValue1833 + EnumValue1834 + EnumValue1835 + EnumValue1836 +} + +enum Enum246 @Directive10(argument10 : "stringValue5625", argument9 : "stringValue5624") { + EnumValue1837 + EnumValue1838 + EnumValue1839 +} + +enum Enum247 @Directive10(argument10 : "stringValue5631", argument9 : "stringValue5630") { + EnumValue1840 + EnumValue1841 + EnumValue1842 + EnumValue1843 +} + +enum Enum248 @Directive10(argument10 : "stringValue5663", argument9 : "stringValue5662") { + EnumValue1844 + EnumValue1845 +} + +enum Enum249 @Directive10(argument10 : "stringValue5667", argument9 : "stringValue5666") { + EnumValue1846 + EnumValue1847 + EnumValue1848 + EnumValue1849 +} + +enum Enum25 @Directive10(argument10 : "stringValue198", argument9 : "stringValue197") { + EnumValue176 +} + +enum Enum250 @Directive10(argument10 : "stringValue5671", argument9 : "stringValue5670") { + EnumValue1850 + EnumValue1851 +} + +enum Enum251 @Directive10(argument10 : "stringValue5675", argument9 : "stringValue5674") { + EnumValue1852 + EnumValue1853 + EnumValue1854 + EnumValue1855 + EnumValue1856 + EnumValue1857 + EnumValue1858 +} + +enum Enum252 @Directive10(argument10 : "stringValue5679", argument9 : "stringValue5678") { + EnumValue1859 + EnumValue1860 + EnumValue1861 + EnumValue1862 + EnumValue1863 +} + +enum Enum253 @Directive10(argument10 : "stringValue5683", argument9 : "stringValue5682") { + EnumValue1864 + EnumValue1865 +} + +enum Enum254 @Directive10(argument10 : "stringValue5705", argument9 : "stringValue5704") { + EnumValue1866 + EnumValue1867 + EnumValue1868 + EnumValue1869 + EnumValue1870 + EnumValue1871 + EnumValue1872 + EnumValue1873 + EnumValue1874 +} + +enum Enum255 @Directive10(argument10 : "stringValue5709", argument9 : "stringValue5708") { + EnumValue1875 + EnumValue1876 + EnumValue1877 + EnumValue1878 + EnumValue1879 + EnumValue1880 + EnumValue1881 + EnumValue1882 + EnumValue1883 + EnumValue1884 + EnumValue1885 + EnumValue1886 + EnumValue1887 +} + +enum Enum256 @Directive10(argument10 : "stringValue5717", argument9 : "stringValue5716") { + EnumValue1888 + EnumValue1889 + EnumValue1890 +} + +enum Enum257 @Directive10(argument10 : "stringValue5751", argument9 : "stringValue5750") { + EnumValue1891 +} + +enum Enum258 @Directive10(argument10 : "stringValue5759", argument9 : "stringValue5758") { + EnumValue1892 + EnumValue1893 + EnumValue1894 + EnumValue1895 +} + +enum Enum259 @Directive10(argument10 : "stringValue5767", argument9 : "stringValue5766") { + EnumValue1896 +} + +enum Enum26 @Directive10(argument10 : "stringValue212", argument9 : "stringValue211") { + EnumValue177 + EnumValue178 + EnumValue179 + EnumValue180 +} + +enum Enum260 @Directive10(argument10 : "stringValue5791", argument9 : "stringValue5790") { + EnumValue1897 + EnumValue1898 + EnumValue1899 +} + +enum Enum261 @Directive10(argument10 : "stringValue5797", argument9 : "stringValue5796") { + EnumValue1900 + EnumValue1901 + EnumValue1902 @deprecated + EnumValue1903 @deprecated + EnumValue1904 @deprecated + EnumValue1905 + EnumValue1906 + EnumValue1907 + EnumValue1908 + EnumValue1909 + EnumValue1910 + EnumValue1911 + EnumValue1912 +} + +enum Enum262 @Directive10(argument10 : "stringValue5803", argument9 : "stringValue5802") { + EnumValue1913 + EnumValue1914 + EnumValue1915 + EnumValue1916 @deprecated +} + +enum Enum263 @Directive10(argument10 : "stringValue5807", argument9 : "stringValue5806") { + EnumValue1917 + EnumValue1918 + EnumValue1919 + EnumValue1920 +} + +enum Enum264 @Directive10(argument10 : "stringValue5819", argument9 : "stringValue5818") { + EnumValue1921 + EnumValue1922 + EnumValue1923 +} + +enum Enum265 @Directive10(argument10 : "stringValue5827", argument9 : "stringValue5826") { + EnumValue1924 +} + +enum Enum266 @Directive10(argument10 : "stringValue5855", argument9 : "stringValue5854") { + EnumValue1925 +} + +enum Enum267 @Directive10(argument10 : "stringValue5869", argument9 : "stringValue5868") { + EnumValue1926 +} + +enum Enum268 @Directive10(argument10 : "stringValue5877", argument9 : "stringValue5876") { + EnumValue1927 +} + +enum Enum269 @Directive10(argument10 : "stringValue5891", argument9 : "stringValue5890") { + EnumValue1928 +} + +enum Enum27 @Directive10(argument10 : "stringValue244", argument9 : "stringValue243") { + EnumValue181 +} + +enum Enum270 @Directive10(argument10 : "stringValue5911", argument9 : "stringValue5910") { + EnumValue1929 +} + +enum Enum271 @Directive10(argument10 : "stringValue5929", argument9 : "stringValue5928") { + EnumValue1930 +} + +enum Enum272 @Directive10(argument10 : "stringValue5939", argument9 : "stringValue5938") { + EnumValue1931 + EnumValue1932 + EnumValue1933 @deprecated +} + +enum Enum273 @Directive10(argument10 : "stringValue5947", argument9 : "stringValue5946") { + EnumValue1934 + EnumValue1935 + EnumValue1936 + EnumValue1937 +} + +enum Enum274 @Directive10(argument10 : "stringValue5977", argument9 : "stringValue5976") { + EnumValue1938 + EnumValue1939 +} + +enum Enum275 @Directive10(argument10 : "stringValue5981", argument9 : "stringValue5980") { + EnumValue1940 + EnumValue1941 + EnumValue1942 + EnumValue1943 + EnumValue1944 + EnumValue1945 + EnumValue1946 +} + +enum Enum276 @Directive10(argument10 : "stringValue6017", argument9 : "stringValue6016") { + EnumValue1947 + EnumValue1948 +} + +enum Enum277 @Directive10(argument10 : "stringValue6033", argument9 : "stringValue6032") { + EnumValue1949 + EnumValue1950 + EnumValue1951 + EnumValue1952 + EnumValue1953 + EnumValue1954 + EnumValue1955 +} + +enum Enum278 @Directive10(argument10 : "stringValue6057", argument9 : "stringValue6056") { + EnumValue1956 +} + +enum Enum279 @Directive10(argument10 : "stringValue6075", argument9 : "stringValue6074") { + EnumValue1957 + EnumValue1958 +} + +enum Enum28 @Directive10(argument10 : "stringValue326", argument9 : "stringValue325") { + EnumValue182 + EnumValue183 + EnumValue184 + EnumValue185 + EnumValue186 + EnumValue187 + EnumValue188 + EnumValue189 +} + +enum Enum280 @Directive10(argument10 : "stringValue6091", argument9 : "stringValue6090") { + EnumValue1959 + EnumValue1960 + EnumValue1961 + EnumValue1962 + EnumValue1963 + EnumValue1964 +} + +enum Enum281 @Directive10(argument10 : "stringValue6097", argument9 : "stringValue6096") { + EnumValue1965 + EnumValue1966 +} + +enum Enum282 @Directive10(argument10 : "stringValue6117", argument9 : "stringValue6116") { + EnumValue1967 + EnumValue1968 +} + +enum Enum283 @Directive10(argument10 : "stringValue6133", argument9 : "stringValue6132") { + EnumValue1969 + EnumValue1970 + EnumValue1971 + EnumValue1972 +} + +enum Enum284 @Directive10(argument10 : "stringValue6141", argument9 : "stringValue6140") { + EnumValue1973 + EnumValue1974 + EnumValue1975 + EnumValue1976 + EnumValue1977 + EnumValue1978 + EnumValue1979 + EnumValue1980 + EnumValue1981 + EnumValue1982 + EnumValue1983 + EnumValue1984 +} + +enum Enum285 @Directive10(argument10 : "stringValue6173", argument9 : "stringValue6172") { + EnumValue1985 + EnumValue1986 + EnumValue1987 + EnumValue1988 + EnumValue1989 + EnumValue1990 + EnumValue1991 + EnumValue1992 + EnumValue1993 + EnumValue1994 + EnumValue1995 + EnumValue1996 + EnumValue1997 + EnumValue1998 +} + +enum Enum286 @Directive10(argument10 : "stringValue6177", argument9 : "stringValue6176") { + EnumValue1999 + EnumValue2000 + EnumValue2001 + EnumValue2002 + EnumValue2003 + EnumValue2004 +} + +enum Enum287 @Directive10(argument10 : "stringValue6217", argument9 : "stringValue6216") { + EnumValue2005 + EnumValue2006 +} + +enum Enum288 @Directive10(argument10 : "stringValue6233", argument9 : "stringValue6232") { + EnumValue2007 + EnumValue2008 + EnumValue2009 + EnumValue2010 +} + +enum Enum289 @Directive10(argument10 : "stringValue6241", argument9 : "stringValue6240") { + EnumValue2011 + EnumValue2012 + EnumValue2013 + EnumValue2014 + EnumValue2015 + EnumValue2016 + EnumValue2017 + EnumValue2018 + EnumValue2019 + EnumValue2020 + EnumValue2021 + EnumValue2022 +} + +enum Enum29 @Directive10(argument10 : "stringValue414", argument9 : "stringValue413") { + EnumValue190 + EnumValue191 + EnumValue192 + EnumValue193 + EnumValue194 +} + +enum Enum290 @Directive10(argument10 : "stringValue6273", argument9 : "stringValue6272") { + EnumValue2023 + EnumValue2024 + EnumValue2025 + EnumValue2026 + EnumValue2027 + EnumValue2028 + EnumValue2029 + EnumValue2030 + EnumValue2031 + EnumValue2032 + EnumValue2033 + EnumValue2034 + EnumValue2035 + EnumValue2036 + EnumValue2037 + EnumValue2038 + EnumValue2039 + EnumValue2040 + EnumValue2041 + EnumValue2042 + EnumValue2043 + EnumValue2044 + EnumValue2045 + EnumValue2046 +} + +enum Enum291 @Directive10(argument10 : "stringValue6281", argument9 : "stringValue6280") { + EnumValue2047 + EnumValue2048 + EnumValue2049 + EnumValue2050 + EnumValue2051 + EnumValue2052 +} + +enum Enum292 @Directive10(argument10 : "stringValue6339", argument9 : "stringValue6338") { + EnumValue2053 + EnumValue2054 + EnumValue2055 + EnumValue2056 + EnumValue2057 +} + +enum Enum293 @Directive10(argument10 : "stringValue6347", argument9 : "stringValue6346") { + EnumValue2058 + EnumValue2059 + EnumValue2060 + EnumValue2061 + EnumValue2062 +} + +enum Enum294 @Directive10(argument10 : "stringValue6361", argument9 : "stringValue6360") { + EnumValue2063 + EnumValue2064 + EnumValue2065 + EnumValue2066 + EnumValue2067 + EnumValue2068 + EnumValue2069 +} + +enum Enum295 @Directive10(argument10 : "stringValue6373", argument9 : "stringValue6372") { + EnumValue2070 + EnumValue2071 + EnumValue2072 + EnumValue2073 + EnumValue2074 + EnumValue2075 + EnumValue2076 + EnumValue2077 + EnumValue2078 + EnumValue2079 + EnumValue2080 + EnumValue2081 +} + +enum Enum296 @Directive10(argument10 : "stringValue6377", argument9 : "stringValue6376") { + EnumValue2082 + EnumValue2083 +} + +enum Enum297 @Directive10(argument10 : "stringValue6389", argument9 : "stringValue6388") { + EnumValue2084 + EnumValue2085 + EnumValue2086 + EnumValue2087 + EnumValue2088 + EnumValue2089 + EnumValue2090 +} + +enum Enum298 @Directive10(argument10 : "stringValue6423", argument9 : "stringValue6422") { + EnumValue2091 + EnumValue2092 +} + +enum Enum299 @Directive10(argument10 : "stringValue6461", argument9 : "stringValue6460") { + EnumValue2093 + EnumValue2094 + EnumValue2095 + EnumValue2096 + EnumValue2097 + EnumValue2098 + EnumValue2099 +} + +enum Enum3 { + EnumValue10 + EnumValue11 + EnumValue12 + EnumValue13 + EnumValue14 + EnumValue15 + EnumValue5 + EnumValue6 + EnumValue7 + EnumValue8 + EnumValue9 +} + +enum Enum30 @Directive10(argument10 : "stringValue418", argument9 : "stringValue417") { + EnumValue195 + EnumValue196 + EnumValue197 + EnumValue198 + EnumValue199 + EnumValue200 +} + +enum Enum300 @Directive10(argument10 : "stringValue6465", argument9 : "stringValue6464") { + EnumValue2100 + EnumValue2101 + EnumValue2102 + EnumValue2103 +} + +enum Enum301 { + EnumValue2104 + EnumValue2105 + EnumValue2106 + EnumValue2107 + EnumValue2108 + EnumValue2109 + EnumValue2110 + EnumValue2111 + EnumValue2112 + EnumValue2113 + EnumValue2114 + EnumValue2115 + EnumValue2116 + EnumValue2117 + EnumValue2118 + EnumValue2119 +} + +enum Enum302 @Directive10(argument10 : "stringValue6509", argument9 : "stringValue6508") { + EnumValue2120 + EnumValue2121 + EnumValue2122 + EnumValue2123 + EnumValue2124 + EnumValue2125 +} + +enum Enum303 @Directive10(argument10 : "stringValue6551", argument9 : "stringValue6550") { + EnumValue2126 + EnumValue2127 +} + +enum Enum304 @Directive10(argument10 : "stringValue6571", argument9 : "stringValue6570") { + EnumValue2128 + EnumValue2129 + EnumValue2130 + EnumValue2131 + EnumValue2132 + EnumValue2133 + EnumValue2134 + EnumValue2135 + EnumValue2136 + EnumValue2137 + EnumValue2138 + EnumValue2139 + EnumValue2140 + EnumValue2141 + EnumValue2142 + EnumValue2143 + EnumValue2144 + EnumValue2145 + EnumValue2146 + EnumValue2147 +} + +enum Enum305 @Directive10(argument10 : "stringValue6587", argument9 : "stringValue6586") { + EnumValue2148 +} + +enum Enum306 @Directive10(argument10 : "stringValue6595", argument9 : "stringValue6594") { + EnumValue2149 + EnumValue2150 +} + +enum Enum307 @Directive10(argument10 : "stringValue6603", argument9 : "stringValue6602") { + EnumValue2151 + EnumValue2152 +} + +enum Enum308 @Directive10(argument10 : "stringValue6611", argument9 : "stringValue6610") { + EnumValue2153 + EnumValue2154 +} + +enum Enum309 @Directive10(argument10 : "stringValue6619", argument9 : "stringValue6618") { + EnumValue2155 + EnumValue2156 +} + +enum Enum31 @Directive10(argument10 : "stringValue558", argument9 : "stringValue557") { + EnumValue201 + EnumValue202 +} + +enum Enum310 @Directive10(argument10 : "stringValue6699", argument9 : "stringValue6698") { + EnumValue2157 +} + +enum Enum311 @Directive10(argument10 : "stringValue6709", argument9 : "stringValue6708") { + EnumValue2158 + EnumValue2159 + EnumValue2160 +} + +enum Enum312 @Directive10(argument10 : "stringValue6723", argument9 : "stringValue6722") { + EnumValue2161 + EnumValue2162 + EnumValue2163 +} + +enum Enum313 @Directive10(argument10 : "stringValue6735", argument9 : "stringValue6734") { + EnumValue2164 + EnumValue2165 + EnumValue2166 +} + +enum Enum314 @Directive10(argument10 : "stringValue6739", argument9 : "stringValue6738") { + EnumValue2167 + EnumValue2168 +} + +enum Enum315 @Directive10(argument10 : "stringValue6743", argument9 : "stringValue6742") { + EnumValue2169 + EnumValue2170 +} + +enum Enum316 @Directive10(argument10 : "stringValue6747", argument9 : "stringValue6746") { + EnumValue2171 + EnumValue2172 + EnumValue2173 + EnumValue2174 + EnumValue2175 + EnumValue2176 + EnumValue2177 + EnumValue2178 + EnumValue2179 + EnumValue2180 + EnumValue2181 + EnumValue2182 + EnumValue2183 + EnumValue2184 + EnumValue2185 + EnumValue2186 +} + +enum Enum317 @Directive10(argument10 : "stringValue6757", argument9 : "stringValue6756") { + EnumValue2187 + EnumValue2188 + EnumValue2189 +} + +enum Enum318 @Directive10(argument10 : "stringValue6775", argument9 : "stringValue6774") { + EnumValue2190 + EnumValue2191 + EnumValue2192 +} + +enum Enum319 @Directive10(argument10 : "stringValue6781", argument9 : "stringValue6780") { + EnumValue2193 + EnumValue2194 + EnumValue2195 +} + +enum Enum32 @Directive10(argument10 : "stringValue566", argument9 : "stringValue565") { + EnumValue203 + EnumValue204 +} + +enum Enum320 @Directive10(argument10 : "stringValue6801", argument9 : "stringValue6800") { + EnumValue2196 + EnumValue2197 + EnumValue2198 +} + +enum Enum321 @Directive10(argument10 : "stringValue6847", argument9 : "stringValue6846") { + EnumValue2199 + EnumValue2200 + EnumValue2201 +} + +enum Enum322 @Directive10(argument10 : "stringValue6855", argument9 : "stringValue6854") { + EnumValue2202 +} + +enum Enum323 @Directive10(argument10 : "stringValue6863", argument9 : "stringValue6862") { + EnumValue2203 + EnumValue2204 + EnumValue2205 +} + +enum Enum324 @Directive10(argument10 : "stringValue6877", argument9 : "stringValue6876") { + EnumValue2206 + EnumValue2207 + EnumValue2208 + EnumValue2209 +} + +enum Enum325 @Directive10(argument10 : "stringValue6895", argument9 : "stringValue6894") { + EnumValue2210 + EnumValue2211 + EnumValue2212 +} + +enum Enum326 @Directive10(argument10 : "stringValue6903", argument9 : "stringValue6902") { + EnumValue2213 +} + +enum Enum327 @Directive10(argument10 : "stringValue6917", argument9 : "stringValue6916") { + EnumValue2214 +} + +enum Enum328 @Directive10(argument10 : "stringValue6925", argument9 : "stringValue6924") { + EnumValue2215 +} + +enum Enum329 @Directive10(argument10 : "stringValue6963", argument9 : "stringValue6962") { + EnumValue2216 + EnumValue2217 + EnumValue2218 +} + +enum Enum33 @Directive10(argument10 : "stringValue598", argument9 : "stringValue597") { + EnumValue205 + EnumValue206 + EnumValue207 +} + +enum Enum330 @Directive10(argument10 : "stringValue6971", argument9 : "stringValue6970") { + EnumValue2219 +} + +enum Enum331 @Directive10(argument10 : "stringValue6985", argument9 : "stringValue6984") { + EnumValue2220 +} + +enum Enum332 @Directive10(argument10 : "stringValue6993", argument9 : "stringValue6992") { + EnumValue2221 +} + +enum Enum333 @Directive10(argument10 : "stringValue7011", argument9 : "stringValue7010") { + EnumValue2222 + EnumValue2223 + EnumValue2224 +} + +enum Enum334 @Directive10(argument10 : "stringValue7019", argument9 : "stringValue7018") { + EnumValue2225 + EnumValue2226 + EnumValue2227 + EnumValue2228 + EnumValue2229 + EnumValue2230 + EnumValue2231 + EnumValue2232 + EnumValue2233 + EnumValue2234 + EnumValue2235 + EnumValue2236 + EnumValue2237 + EnumValue2238 +} + +enum Enum335 @Directive10(argument10 : "stringValue7027", argument9 : "stringValue7026") { + EnumValue2239 + EnumValue2240 + EnumValue2241 +} + +enum Enum336 @Directive10(argument10 : "stringValue7041", argument9 : "stringValue7040") { + EnumValue2242 +} + +enum Enum337 @Directive10(argument10 : "stringValue7049", argument9 : "stringValue7048") { + EnumValue2243 +} + +enum Enum338 @Directive10(argument10 : "stringValue7057", argument9 : "stringValue7056") { + EnumValue2244 + EnumValue2245 +} + +enum Enum339 @Directive10(argument10 : "stringValue7079", argument9 : "stringValue7078") { + EnumValue2246 +} + +enum Enum34 @Directive10(argument10 : "stringValue614", argument9 : "stringValue613") { + EnumValue208 + EnumValue209 + EnumValue210 + EnumValue211 + EnumValue212 + EnumValue213 + EnumValue214 + EnumValue215 + EnumValue216 +} + +enum Enum340 @Directive10(argument10 : "stringValue7121", argument9 : "stringValue7120") { + EnumValue2247 +} + +enum Enum341 @Directive10(argument10 : "stringValue7129", argument9 : "stringValue7128") { + EnumValue2248 + EnumValue2249 + EnumValue2250 + EnumValue2251 + EnumValue2252 + EnumValue2253 + EnumValue2254 + EnumValue2255 + EnumValue2256 +} + +enum Enum342 @Directive10(argument10 : "stringValue7137", argument9 : "stringValue7136") { + EnumValue2257 +} + +enum Enum343 @Directive10(argument10 : "stringValue7157", argument9 : "stringValue7156") { + EnumValue2258 + EnumValue2259 + EnumValue2260 +} + +enum Enum344 @Directive10(argument10 : "stringValue7165", argument9 : "stringValue7164") { + EnumValue2261 +} + +enum Enum345 @Directive10(argument10 : "stringValue7195", argument9 : "stringValue7194") { + EnumValue2262 + EnumValue2263 + EnumValue2264 +} + +enum Enum346 @Directive10(argument10 : "stringValue7251", argument9 : "stringValue7250") { + EnumValue2265 + EnumValue2266 + EnumValue2267 + EnumValue2268 +} + +enum Enum347 @Directive10(argument10 : "stringValue7259", argument9 : "stringValue7258") { + EnumValue2269 +} + +enum Enum348 @Directive10(argument10 : "stringValue7273", argument9 : "stringValue7272") { + EnumValue2270 +} + +enum Enum349 @Directive10(argument10 : "stringValue7281", argument9 : "stringValue7280") { + EnumValue2271 +} + +enum Enum35 @Directive10(argument10 : "stringValue626", argument9 : "stringValue625") { + EnumValue217 + EnumValue218 + EnumValue219 + EnumValue220 +} + +enum Enum350 @Directive10(argument10 : "stringValue7295", argument9 : "stringValue7294") { + EnumValue2272 + EnumValue2273 +} + +enum Enum351 @Directive10(argument10 : "stringValue7303", argument9 : "stringValue7302") { + EnumValue2274 + EnumValue2275 + EnumValue2276 + EnumValue2277 +} + +enum Enum352 @Directive10(argument10 : "stringValue7311", argument9 : "stringValue7310") { + EnumValue2278 +} + +enum Enum353 @Directive10(argument10 : "stringValue7319", argument9 : "stringValue7318") { + EnumValue2279 + EnumValue2280 +} + +enum Enum354 @Directive10(argument10 : "stringValue7337", argument9 : "stringValue7336") { + EnumValue2281 + EnumValue2282 +} + +enum Enum355 @Directive10(argument10 : "stringValue7349", argument9 : "stringValue7348") { + EnumValue2283 + EnumValue2284 + EnumValue2285 + EnumValue2286 +} + +enum Enum356 @Directive10(argument10 : "stringValue7359", argument9 : "stringValue7358") { + EnumValue2287 + EnumValue2288 + EnumValue2289 + EnumValue2290 +} + +enum Enum357 @Directive10(argument10 : "stringValue7367", argument9 : "stringValue7366") { + EnumValue2291 + EnumValue2292 + EnumValue2293 +} + +enum Enum358 @Directive10(argument10 : "stringValue7391", argument9 : "stringValue7390") { + EnumValue2294 + EnumValue2295 + EnumValue2296 + EnumValue2297 + EnumValue2298 + EnumValue2299 + EnumValue2300 +} + +enum Enum359 @Directive10(argument10 : "stringValue7403", argument9 : "stringValue7402") { + EnumValue2301 + EnumValue2302 + EnumValue2303 + EnumValue2304 + EnumValue2305 + EnumValue2306 + EnumValue2307 + EnumValue2308 + EnumValue2309 + EnumValue2310 + EnumValue2311 + EnumValue2312 + EnumValue2313 + EnumValue2314 + EnumValue2315 + EnumValue2316 + EnumValue2317 + EnumValue2318 + EnumValue2319 + EnumValue2320 + EnumValue2321 + EnumValue2322 + EnumValue2323 + EnumValue2324 + EnumValue2325 + EnumValue2326 + EnumValue2327 + EnumValue2328 + EnumValue2329 + EnumValue2330 + EnumValue2331 + EnumValue2332 + EnumValue2333 + EnumValue2334 + EnumValue2335 + EnumValue2336 + EnumValue2337 + EnumValue2338 + EnumValue2339 + EnumValue2340 + EnumValue2341 + EnumValue2342 +} + +enum Enum36 @Directive10(argument10 : "stringValue638", argument9 : "stringValue637") { + EnumValue221 + EnumValue222 +} + +enum Enum360 @Directive10(argument10 : "stringValue7411", argument9 : "stringValue7410") { + EnumValue2343 + EnumValue2344 + EnumValue2345 +} + +enum Enum361 @Directive10(argument10 : "stringValue7445", argument9 : "stringValue7444") { + EnumValue2346 + EnumValue2347 + EnumValue2348 + EnumValue2349 +} + +enum Enum362 @Directive10(argument10 : "stringValue7453", argument9 : "stringValue7452") { + EnumValue2350 + EnumValue2351 + EnumValue2352 + EnumValue2353 + EnumValue2354 + EnumValue2355 + EnumValue2356 + EnumValue2357 + EnumValue2358 + EnumValue2359 + EnumValue2360 + EnumValue2361 + EnumValue2362 +} + +enum Enum363 @Directive10(argument10 : "stringValue7459", argument9 : "stringValue7458") { + EnumValue2363 + EnumValue2364 + EnumValue2365 +} + +enum Enum364 @Directive10(argument10 : "stringValue7477", argument9 : "stringValue7476") { + EnumValue2366 + EnumValue2367 +} + +enum Enum365 @Directive10(argument10 : "stringValue7499", argument9 : "stringValue7498") { + EnumValue2368 + EnumValue2369 + EnumValue2370 + EnumValue2371 + EnumValue2372 + EnumValue2373 + EnumValue2374 + EnumValue2375 + EnumValue2376 + EnumValue2377 + EnumValue2378 +} + +enum Enum366 @Directive10(argument10 : "stringValue7507", argument9 : "stringValue7506") { + EnumValue2379 + EnumValue2380 + EnumValue2381 + EnumValue2382 + EnumValue2383 + EnumValue2384 + EnumValue2385 + EnumValue2386 +} + +enum Enum367 @Directive10(argument10 : "stringValue7521", argument9 : "stringValue7520") { + EnumValue2387 +} + +enum Enum368 @Directive10(argument10 : "stringValue7529", argument9 : "stringValue7528") { + EnumValue2388 + EnumValue2389 +} + +enum Enum369 @Directive10(argument10 : "stringValue7537", argument9 : "stringValue7536") { + EnumValue2390 +} + +enum Enum37 @Directive10(argument10 : "stringValue694", argument9 : "stringValue693") { + EnumValue223 + EnumValue224 + EnumValue225 + EnumValue226 +} + +enum Enum370 @Directive10(argument10 : "stringValue7547", argument9 : "stringValue7546") { + EnumValue2391 + EnumValue2392 +} + +enum Enum371 @Directive10(argument10 : "stringValue7589", argument9 : "stringValue7588") { + EnumValue2393 + EnumValue2394 + EnumValue2395 + EnumValue2396 + EnumValue2397 +} + +enum Enum372 @Directive10(argument10 : "stringValue7595", argument9 : "stringValue7594") { + EnumValue2398 + EnumValue2399 + EnumValue2400 + EnumValue2401 + EnumValue2402 +} + +enum Enum373 @Directive10(argument10 : "stringValue7605", argument9 : "stringValue7604") { + EnumValue2403 + EnumValue2404 + EnumValue2405 +} + +enum Enum374 @Directive10(argument10 : "stringValue7611", argument9 : "stringValue7610") { + EnumValue2406 + EnumValue2407 + EnumValue2408 + EnumValue2409 + EnumValue2410 + EnumValue2411 + EnumValue2412 +} + +enum Enum375 @Directive10(argument10 : "stringValue7635", argument9 : "stringValue7634") { + EnumValue2413 + EnumValue2414 + EnumValue2415 +} + +enum Enum376 @Directive10(argument10 : "stringValue7643", argument9 : "stringValue7642") { + EnumValue2416 +} + +enum Enum377 @Directive10(argument10 : "stringValue7657", argument9 : "stringValue7656") { + EnumValue2417 +} + +enum Enum378 @Directive10(argument10 : "stringValue7665", argument9 : "stringValue7664") { + EnumValue2418 +} + +enum Enum379 @Directive10(argument10 : "stringValue7681", argument9 : "stringValue7680") { + EnumValue2419 + EnumValue2420 + EnumValue2421 + EnumValue2422 + EnumValue2423 +} + +enum Enum38 @Directive10(argument10 : "stringValue698", argument9 : "stringValue697") { + EnumValue227 + EnumValue228 + EnumValue229 + EnumValue230 + EnumValue231 +} + +enum Enum380 @Directive10(argument10 : "stringValue7755", argument9 : "stringValue7754") { + EnumValue2424 +} + +enum Enum381 @Directive10(argument10 : "stringValue7769", argument9 : "stringValue7768") { + EnumValue2425 + EnumValue2426 + EnumValue2427 + EnumValue2428 + EnumValue2429 + EnumValue2430 + EnumValue2431 + EnumValue2432 + EnumValue2433 + EnumValue2434 +} + +enum Enum382 @Directive10(argument10 : "stringValue7787", argument9 : "stringValue7786") { + EnumValue2435 + EnumValue2436 +} + +enum Enum383 @Directive10(argument10 : "stringValue7813", argument9 : "stringValue7812") { + EnumValue2437 + EnumValue2438 + EnumValue2439 + EnumValue2440 + EnumValue2441 + EnumValue2442 + EnumValue2443 + EnumValue2444 + EnumValue2445 + EnumValue2446 + EnumValue2447 + EnumValue2448 +} + +enum Enum384 @Directive10(argument10 : "stringValue7839", argument9 : "stringValue7838") { + EnumValue2449 +} + +enum Enum385 @Directive10(argument10 : "stringValue7847", argument9 : "stringValue7846") { + EnumValue2450 +} + +enum Enum386 @Directive10(argument10 : "stringValue7865", argument9 : "stringValue7864") { + EnumValue2451 + EnumValue2452 + EnumValue2453 + EnumValue2454 +} + +enum Enum387 @Directive10(argument10 : "stringValue7873", argument9 : "stringValue7872") { + EnumValue2455 +} + +enum Enum388 @Directive10(argument10 : "stringValue7889", argument9 : "stringValue7888") { + EnumValue2456 +} + +enum Enum389 @Directive10(argument10 : "stringValue7897", argument9 : "stringValue7896") { + EnumValue2457 +} + +enum Enum39 @Directive10(argument10 : "stringValue734", argument9 : "stringValue733") { + EnumValue232 + EnumValue233 + EnumValue234 + EnumValue235 + EnumValue236 +} + +enum Enum390 @Directive10(argument10 : "stringValue7945", argument9 : "stringValue7944") { + EnumValue2458 + EnumValue2459 + EnumValue2460 +} + +enum Enum391 @Directive10(argument10 : "stringValue7963", argument9 : "stringValue7962") { + EnumValue2461 + EnumValue2462 + EnumValue2463 + EnumValue2464 + EnumValue2465 + EnumValue2466 + EnumValue2467 +} + +enum Enum392 @Directive10(argument10 : "stringValue7967", argument9 : "stringValue7966") { + EnumValue2468 + EnumValue2469 + EnumValue2470 + EnumValue2471 + EnumValue2472 +} + +enum Enum393 @Directive10(argument10 : "stringValue7971", argument9 : "stringValue7970") { + EnumValue2473 + EnumValue2474 + EnumValue2475 +} + +enum Enum394 @Directive10(argument10 : "stringValue7975", argument9 : "stringValue7974") { + EnumValue2476 + EnumValue2477 + EnumValue2478 + EnumValue2479 +} + +enum Enum395 @Directive10(argument10 : "stringValue7979", argument9 : "stringValue7978") { + EnumValue2480 + EnumValue2481 + EnumValue2482 +} + +enum Enum396 @Directive10(argument10 : "stringValue7987", argument9 : "stringValue7986") { + EnumValue2483 + EnumValue2484 + EnumValue2485 + EnumValue2486 + EnumValue2487 + EnumValue2488 + EnumValue2489 + EnumValue2490 + EnumValue2491 + EnumValue2492 + EnumValue2493 + EnumValue2494 + EnumValue2495 + EnumValue2496 + EnumValue2497 + EnumValue2498 + EnumValue2499 + EnumValue2500 + EnumValue2501 + EnumValue2502 + EnumValue2503 + EnumValue2504 + EnumValue2505 + EnumValue2506 + EnumValue2507 + EnumValue2508 + EnumValue2509 + EnumValue2510 + EnumValue2511 + EnumValue2512 + EnumValue2513 + EnumValue2514 + EnumValue2515 + EnumValue2516 + EnumValue2517 + EnumValue2518 + EnumValue2519 + EnumValue2520 + EnumValue2521 + EnumValue2522 + EnumValue2523 + EnumValue2524 + EnumValue2525 + EnumValue2526 + EnumValue2527 + EnumValue2528 + EnumValue2529 + EnumValue2530 + EnumValue2531 + EnumValue2532 + EnumValue2533 + EnumValue2534 + EnumValue2535 + EnumValue2536 + EnumValue2537 + EnumValue2538 + EnumValue2539 + EnumValue2540 + EnumValue2541 + EnumValue2542 + EnumValue2543 + EnumValue2544 + EnumValue2545 + EnumValue2546 +} + +enum Enum397 @Directive10(argument10 : "stringValue8007", argument9 : "stringValue8006") { + EnumValue2547 + EnumValue2548 + EnumValue2549 + EnumValue2550 + EnumValue2551 + EnumValue2552 + EnumValue2553 + EnumValue2554 + EnumValue2555 + EnumValue2556 + EnumValue2557 + EnumValue2558 + EnumValue2559 + EnumValue2560 + EnumValue2561 + EnumValue2562 + EnumValue2563 + EnumValue2564 + EnumValue2565 + EnumValue2566 + EnumValue2567 + EnumValue2568 +} + +enum Enum398 @Directive10(argument10 : "stringValue8011", argument9 : "stringValue8010") { + EnumValue2569 + EnumValue2570 + EnumValue2571 + EnumValue2572 +} + +enum Enum399 @Directive10(argument10 : "stringValue8019", argument9 : "stringValue8018") { + EnumValue2573 + EnumValue2574 + EnumValue2575 + EnumValue2576 + EnumValue2577 + EnumValue2578 + EnumValue2579 + EnumValue2580 + EnumValue2581 + EnumValue2582 + EnumValue2583 + EnumValue2584 + EnumValue2585 + EnumValue2586 + EnumValue2587 + EnumValue2588 + EnumValue2589 + EnumValue2590 + EnumValue2591 + EnumValue2592 + EnumValue2593 + EnumValue2594 + EnumValue2595 + EnumValue2596 + EnumValue2597 + EnumValue2598 +} + +enum Enum4 @Directive10(argument10 : "stringValue2", argument9 : "stringValue1") { + EnumValue16 + EnumValue17 + EnumValue18 + EnumValue19 + EnumValue20 + EnumValue21 + EnumValue22 + EnumValue23 + EnumValue24 + EnumValue25 + EnumValue26 + EnumValue27 + EnumValue28 + EnumValue29 + EnumValue30 + EnumValue31 + EnumValue32 + EnumValue33 + EnumValue34 + EnumValue35 + EnumValue36 + EnumValue37 + EnumValue38 + EnumValue39 + EnumValue40 + EnumValue41 + EnumValue42 + EnumValue43 + EnumValue44 + EnumValue45 + EnumValue46 + EnumValue47 + EnumValue48 + EnumValue49 + EnumValue50 + EnumValue51 + EnumValue52 + EnumValue53 + EnumValue54 + EnumValue55 + EnumValue56 + EnumValue57 + EnumValue58 + EnumValue59 + EnumValue60 + EnumValue61 + EnumValue62 + EnumValue63 + EnumValue64 + EnumValue65 + EnumValue66 + EnumValue67 + EnumValue68 + EnumValue69 +} + +enum Enum40 @Directive10(argument10 : "stringValue738", argument9 : "stringValue737") { + EnumValue237 + EnumValue238 + EnumValue239 + EnumValue240 + EnumValue241 + EnumValue242 +} + +enum Enum400 @Directive10(argument10 : "stringValue8047", argument9 : "stringValue8046") { + EnumValue2599 +} + +enum Enum401 @Directive10(argument10 : "stringValue8059", argument9 : "stringValue8058") { + EnumValue2600 + EnumValue2601 + EnumValue2602 +} + +enum Enum402 @Directive10(argument10 : "stringValue8111", argument9 : "stringValue8110") { + EnumValue2603 + EnumValue2604 + EnumValue2605 + EnumValue2606 + EnumValue2607 + EnumValue2608 + EnumValue2609 +} + +enum Enum403 @Directive10(argument10 : "stringValue8163", argument9 : "stringValue8162") { + EnumValue2610 + EnumValue2611 + EnumValue2612 +} + +enum Enum404 @Directive10(argument10 : "stringValue8237", argument9 : "stringValue8236") { + EnumValue2613 + EnumValue2614 + EnumValue2615 + EnumValue2616 + EnumValue2617 + EnumValue2618 + EnumValue2619 + EnumValue2620 + EnumValue2621 + EnumValue2622 + EnumValue2623 + EnumValue2624 + EnumValue2625 + EnumValue2626 +} + +enum Enum405 @Directive10(argument10 : "stringValue8279", argument9 : "stringValue8278") { + EnumValue2627 + EnumValue2628 + EnumValue2629 + EnumValue2630 + EnumValue2631 + EnumValue2632 +} + +enum Enum406 @Directive10(argument10 : "stringValue8287", argument9 : "stringValue8286") { + EnumValue2633 + EnumValue2634 + EnumValue2635 + EnumValue2636 +} + +enum Enum407 @Directive10(argument10 : "stringValue8323", argument9 : "stringValue8322") { + EnumValue2637 + EnumValue2638 + EnumValue2639 + EnumValue2640 +} + +enum Enum408 @Directive10(argument10 : "stringValue8327", argument9 : "stringValue8326") { + EnumValue2641 + EnumValue2642 + EnumValue2643 + EnumValue2644 + EnumValue2645 + EnumValue2646 +} + +enum Enum409 @Directive10(argument10 : "stringValue8331", argument9 : "stringValue8330") { + EnumValue2647 + EnumValue2648 + EnumValue2649 + EnumValue2650 + EnumValue2651 + EnumValue2652 + EnumValue2653 + EnumValue2654 + EnumValue2655 + EnumValue2656 + EnumValue2657 +} + +enum Enum41 @Directive10(argument10 : "stringValue868", argument9 : "stringValue867") { + EnumValue243 + EnumValue244 + EnumValue245 + EnumValue246 + EnumValue247 +} + +enum Enum410 @Directive10(argument10 : "stringValue8337", argument9 : "stringValue8336") { + EnumValue2658 + EnumValue2659 + EnumValue2660 + EnumValue2661 + EnumValue2662 + EnumValue2663 + EnumValue2664 + EnumValue2665 + EnumValue2666 + EnumValue2667 +} + +enum Enum411 @Directive10(argument10 : "stringValue8369", argument9 : "stringValue8368") { + EnumValue2668 + EnumValue2669 + EnumValue2670 + EnumValue2671 + EnumValue2672 + EnumValue2673 + EnumValue2674 + EnumValue2675 + EnumValue2676 + EnumValue2677 + EnumValue2678 + EnumValue2679 + EnumValue2680 + EnumValue2681 + EnumValue2682 + EnumValue2683 +} + +enum Enum412 @Directive10(argument10 : "stringValue8379", argument9 : "stringValue8378") { + EnumValue2684 + EnumValue2685 + EnumValue2686 + EnumValue2687 + EnumValue2688 + EnumValue2689 + EnumValue2690 +} + +enum Enum413 @Directive10(argument10 : "stringValue8387", argument9 : "stringValue8386") { + EnumValue2691 + EnumValue2692 + EnumValue2693 + EnumValue2694 + EnumValue2695 + EnumValue2696 + EnumValue2697 + EnumValue2698 + EnumValue2699 + EnumValue2700 + EnumValue2701 + EnumValue2702 + EnumValue2703 + EnumValue2704 + EnumValue2705 + EnumValue2706 + EnumValue2707 + EnumValue2708 + EnumValue2709 + EnumValue2710 + EnumValue2711 + EnumValue2712 + EnumValue2713 + EnumValue2714 + EnumValue2715 + EnumValue2716 + EnumValue2717 + EnumValue2718 + EnumValue2719 + EnumValue2720 + EnumValue2721 + EnumValue2722 + EnumValue2723 + EnumValue2724 + EnumValue2725 + EnumValue2726 + EnumValue2727 + EnumValue2728 + EnumValue2729 + EnumValue2730 + EnumValue2731 + EnumValue2732 + EnumValue2733 + EnumValue2734 + EnumValue2735 + EnumValue2736 + EnumValue2737 + EnumValue2738 + EnumValue2739 + EnumValue2740 + EnumValue2741 + EnumValue2742 + EnumValue2743 + EnumValue2744 + EnumValue2745 + EnumValue2746 + EnumValue2747 + EnumValue2748 + EnumValue2749 + EnumValue2750 + EnumValue2751 + EnumValue2752 + EnumValue2753 + EnumValue2754 + EnumValue2755 + EnumValue2756 + EnumValue2757 + EnumValue2758 + EnumValue2759 + EnumValue2760 + EnumValue2761 + EnumValue2762 + EnumValue2763 + EnumValue2764 + EnumValue2765 + EnumValue2766 + EnumValue2767 + EnumValue2768 + EnumValue2769 + EnumValue2770 + EnumValue2771 + EnumValue2772 + EnumValue2773 + EnumValue2774 + EnumValue2775 + EnumValue2776 + EnumValue2777 + EnumValue2778 + EnumValue2779 + EnumValue2780 + EnumValue2781 + EnumValue2782 + EnumValue2783 + EnumValue2784 + EnumValue2785 + EnumValue2786 + EnumValue2787 + EnumValue2788 + EnumValue2789 + EnumValue2790 + EnumValue2791 + EnumValue2792 + EnumValue2793 + EnumValue2794 + EnumValue2795 + EnumValue2796 + EnumValue2797 + EnumValue2798 + EnumValue2799 + EnumValue2800 + EnumValue2801 + EnumValue2802 + EnumValue2803 + EnumValue2804 + EnumValue2805 + EnumValue2806 + EnumValue2807 + EnumValue2808 + EnumValue2809 + EnumValue2810 + EnumValue2811 + EnumValue2812 + EnumValue2813 + EnumValue2814 + EnumValue2815 + EnumValue2816 + EnumValue2817 + EnumValue2818 + EnumValue2819 + EnumValue2820 + EnumValue2821 + EnumValue2822 + EnumValue2823 + EnumValue2824 + EnumValue2825 + EnumValue2826 + EnumValue2827 + EnumValue2828 + EnumValue2829 + EnumValue2830 + EnumValue2831 + EnumValue2832 + EnumValue2833 + EnumValue2834 + EnumValue2835 + EnumValue2836 + EnumValue2837 + EnumValue2838 + EnumValue2839 + EnumValue2840 + EnumValue2841 + EnumValue2842 + EnumValue2843 + EnumValue2844 + EnumValue2845 + EnumValue2846 + EnumValue2847 + EnumValue2848 + EnumValue2849 + EnumValue2850 + EnumValue2851 + EnumValue2852 + EnumValue2853 + EnumValue2854 + EnumValue2855 + EnumValue2856 + EnumValue2857 + EnumValue2858 + EnumValue2859 + EnumValue2860 + EnumValue2861 + EnumValue2862 + EnumValue2863 + EnumValue2864 + EnumValue2865 + EnumValue2866 + EnumValue2867 + EnumValue2868 + EnumValue2869 + EnumValue2870 + EnumValue2871 + EnumValue2872 + EnumValue2873 + EnumValue2874 + EnumValue2875 + EnumValue2876 + EnumValue2877 + EnumValue2878 + EnumValue2879 + EnumValue2880 + EnumValue2881 + EnumValue2882 + EnumValue2883 + EnumValue2884 + EnumValue2885 + EnumValue2886 + EnumValue2887 + EnumValue2888 + EnumValue2889 + EnumValue2890 + EnumValue2891 + EnumValue2892 + EnumValue2893 + EnumValue2894 + EnumValue2895 + EnumValue2896 + EnumValue2897 + EnumValue2898 + EnumValue2899 + EnumValue2900 + EnumValue2901 + EnumValue2902 + EnumValue2903 + EnumValue2904 + EnumValue2905 + EnumValue2906 + EnumValue2907 + EnumValue2908 + EnumValue2909 + EnumValue2910 + EnumValue2911 + EnumValue2912 + EnumValue2913 + EnumValue2914 + EnumValue2915 + EnumValue2916 + EnumValue2917 + EnumValue2918 + EnumValue2919 + EnumValue2920 + EnumValue2921 + EnumValue2922 + EnumValue2923 + EnumValue2924 + EnumValue2925 + EnumValue2926 + EnumValue2927 + EnumValue2928 + EnumValue2929 + EnumValue2930 + EnumValue2931 + EnumValue2932 + EnumValue2933 + EnumValue2934 + EnumValue2935 + EnumValue2936 + EnumValue2937 + EnumValue2938 + EnumValue2939 + EnumValue2940 + EnumValue2941 + EnumValue2942 + EnumValue2943 + EnumValue2944 + EnumValue2945 + EnumValue2946 + EnumValue2947 + EnumValue2948 + EnumValue2949 + EnumValue2950 + EnumValue2951 + EnumValue2952 + EnumValue2953 + EnumValue2954 + EnumValue2955 + EnumValue2956 + EnumValue2957 + EnumValue2958 + EnumValue2959 + EnumValue2960 + EnumValue2961 + EnumValue2962 + EnumValue2963 + EnumValue2964 + EnumValue2965 + EnumValue2966 + EnumValue2967 + EnumValue2968 + EnumValue2969 + EnumValue2970 + EnumValue2971 + EnumValue2972 + EnumValue2973 + EnumValue2974 + EnumValue2975 + EnumValue2976 + EnumValue2977 + EnumValue2978 + EnumValue2979 + EnumValue2980 + EnumValue2981 + EnumValue2982 + EnumValue2983 + EnumValue2984 + EnumValue2985 + EnumValue2986 + EnumValue2987 + EnumValue2988 + EnumValue2989 + EnumValue2990 + EnumValue2991 + EnumValue2992 + EnumValue2993 + EnumValue2994 + EnumValue2995 + EnumValue2996 + EnumValue2997 + EnumValue2998 + EnumValue2999 + EnumValue3000 + EnumValue3001 + EnumValue3002 + EnumValue3003 + EnumValue3004 + EnumValue3005 + EnumValue3006 + EnumValue3007 + EnumValue3008 + EnumValue3009 + EnumValue3010 + EnumValue3011 + EnumValue3012 + EnumValue3013 + EnumValue3014 + EnumValue3015 + EnumValue3016 + EnumValue3017 + EnumValue3018 + EnumValue3019 + EnumValue3020 + EnumValue3021 + EnumValue3022 + EnumValue3023 + EnumValue3024 + EnumValue3025 + EnumValue3026 + EnumValue3027 + EnumValue3028 + EnumValue3029 + EnumValue3030 + EnumValue3031 + EnumValue3032 + EnumValue3033 + EnumValue3034 + EnumValue3035 + EnumValue3036 + EnumValue3037 + EnumValue3038 + EnumValue3039 + EnumValue3040 + EnumValue3041 + EnumValue3042 + EnumValue3043 + EnumValue3044 + EnumValue3045 + EnumValue3046 + EnumValue3047 + EnumValue3048 + EnumValue3049 + EnumValue3050 + EnumValue3051 + EnumValue3052 + EnumValue3053 + EnumValue3054 + EnumValue3055 + EnumValue3056 + EnumValue3057 + EnumValue3058 + EnumValue3059 + EnumValue3060 + EnumValue3061 + EnumValue3062 + EnumValue3063 + EnumValue3064 + EnumValue3065 + EnumValue3066 + EnumValue3067 + EnumValue3068 + EnumValue3069 + EnumValue3070 + EnumValue3071 + EnumValue3072 + EnumValue3073 + EnumValue3074 + EnumValue3075 + EnumValue3076 + EnumValue3077 + EnumValue3078 + EnumValue3079 + EnumValue3080 + EnumValue3081 + EnumValue3082 + EnumValue3083 + EnumValue3084 + EnumValue3085 + EnumValue3086 + EnumValue3087 + EnumValue3088 + EnumValue3089 + EnumValue3090 + EnumValue3091 + EnumValue3092 + EnumValue3093 + EnumValue3094 + EnumValue3095 + EnumValue3096 + EnumValue3097 + EnumValue3098 + EnumValue3099 + EnumValue3100 + EnumValue3101 + EnumValue3102 + EnumValue3103 + EnumValue3104 + EnumValue3105 + EnumValue3106 + EnumValue3107 + EnumValue3108 + EnumValue3109 + EnumValue3110 + EnumValue3111 + EnumValue3112 + EnumValue3113 + EnumValue3114 + EnumValue3115 + EnumValue3116 + EnumValue3117 + EnumValue3118 + EnumValue3119 + EnumValue3120 + EnumValue3121 + EnumValue3122 + EnumValue3123 + EnumValue3124 + EnumValue3125 + EnumValue3126 + EnumValue3127 + EnumValue3128 + EnumValue3129 + EnumValue3130 + EnumValue3131 + EnumValue3132 + EnumValue3133 + EnumValue3134 + EnumValue3135 + EnumValue3136 + EnumValue3137 + EnumValue3138 + EnumValue3139 + EnumValue3140 + EnumValue3141 + EnumValue3142 + EnumValue3143 + EnumValue3144 + EnumValue3145 + EnumValue3146 + EnumValue3147 + EnumValue3148 + EnumValue3149 + EnumValue3150 + EnumValue3151 + EnumValue3152 + EnumValue3153 + EnumValue3154 + EnumValue3155 + EnumValue3156 + EnumValue3157 + EnumValue3158 + EnumValue3159 + EnumValue3160 + EnumValue3161 + EnumValue3162 + EnumValue3163 + EnumValue3164 + EnumValue3165 + EnumValue3166 + EnumValue3167 + EnumValue3168 + EnumValue3169 + EnumValue3170 + EnumValue3171 + EnumValue3172 + EnumValue3173 + EnumValue3174 + EnumValue3175 + EnumValue3176 + EnumValue3177 + EnumValue3178 + EnumValue3179 + EnumValue3180 + EnumValue3181 + EnumValue3182 + EnumValue3183 + EnumValue3184 + EnumValue3185 + EnumValue3186 + EnumValue3187 + EnumValue3188 + EnumValue3189 + EnumValue3190 + EnumValue3191 + EnumValue3192 + EnumValue3193 + EnumValue3194 +} + +enum Enum414 @Directive10(argument10 : "stringValue8391", argument9 : "stringValue8390") { + EnumValue3195 + EnumValue3196 + EnumValue3197 + EnumValue3198 + EnumValue3199 + EnumValue3200 + EnumValue3201 + EnumValue3202 +} + +enum Enum415 @Directive10(argument10 : "stringValue8405", argument9 : "stringValue8404") { + EnumValue3203 + EnumValue3204 + EnumValue3205 + EnumValue3206 + EnumValue3207 + EnumValue3208 + EnumValue3209 + EnumValue3210 +} + +enum Enum416 @Directive10(argument10 : "stringValue8427", argument9 : "stringValue8426") { + EnumValue3211 + EnumValue3212 + EnumValue3213 + EnumValue3214 +} + +enum Enum417 @Directive10(argument10 : "stringValue8451", argument9 : "stringValue8450") { + EnumValue3215 + EnumValue3216 + EnumValue3217 +} + +enum Enum418 @Directive10(argument10 : "stringValue8609", argument9 : "stringValue8608") { + EnumValue3218 + EnumValue3219 + EnumValue3220 +} + +enum Enum419 @Directive10(argument10 : "stringValue8679", argument9 : "stringValue8678") { + EnumValue3221 + EnumValue3222 + EnumValue3223 + EnumValue3224 + EnumValue3225 + EnumValue3226 + EnumValue3227 + EnumValue3228 + EnumValue3229 + EnumValue3230 + EnumValue3231 +} + +enum Enum42 @Directive10(argument10 : "stringValue874", argument9 : "stringValue873") { + EnumValue248 + EnumValue249 + EnumValue250 + EnumValue251 + EnumValue252 + EnumValue253 + EnumValue254 + EnumValue255 + EnumValue256 + EnumValue257 + EnumValue258 +} + +enum Enum420 @Directive10(argument10 : "stringValue8683", argument9 : "stringValue8682") { + EnumValue3232 + EnumValue3233 + EnumValue3234 +} + +enum Enum421 @Directive10(argument10 : "stringValue8713", argument9 : "stringValue8712") { + EnumValue3235 + EnumValue3236 + EnumValue3237 + EnumValue3238 + EnumValue3239 + EnumValue3240 + EnumValue3241 + EnumValue3242 + EnumValue3243 + EnumValue3244 + EnumValue3245 +} + +enum Enum422 @Directive10(argument10 : "stringValue8717", argument9 : "stringValue8716") { + EnumValue3246 + EnumValue3247 + EnumValue3248 + EnumValue3249 + EnumValue3250 + EnumValue3251 + EnumValue3252 + EnumValue3253 +} + +enum Enum423 @Directive10(argument10 : "stringValue8721", argument9 : "stringValue8720") { + EnumValue3254 + EnumValue3255 + EnumValue3256 + EnumValue3257 +} + +enum Enum424 @Directive10(argument10 : "stringValue8725", argument9 : "stringValue8724") { + EnumValue3258 + EnumValue3259 + EnumValue3260 + EnumValue3261 + EnumValue3262 + EnumValue3263 + EnumValue3264 + EnumValue3265 + EnumValue3266 + EnumValue3267 + EnumValue3268 + EnumValue3269 + EnumValue3270 + EnumValue3271 + EnumValue3272 + EnumValue3273 + EnumValue3274 + EnumValue3275 +} + +enum Enum425 @Directive10(argument10 : "stringValue8729", argument9 : "stringValue8728") { + EnumValue3276 + EnumValue3277 + EnumValue3278 + EnumValue3279 +} + +enum Enum426 @Directive10(argument10 : "stringValue8835", argument9 : "stringValue8834") { + EnumValue3280 + EnumValue3281 + EnumValue3282 + EnumValue3283 + EnumValue3284 + EnumValue3285 + EnumValue3286 +} + +enum Enum427 @Directive10(argument10 : "stringValue8853", argument9 : "stringValue8852") { + EnumValue3287 + EnumValue3288 +} + +enum Enum428 @Directive10(argument10 : "stringValue8877", argument9 : "stringValue8876") { + EnumValue3289 + EnumValue3290 + EnumValue3291 + EnumValue3292 +} + +enum Enum429 @Directive10(argument10 : "stringValue8883", argument9 : "stringValue8882") { + EnumValue3293 + EnumValue3294 + EnumValue3295 +} + +enum Enum43 @Directive10(argument10 : "stringValue924", argument9 : "stringValue923") { + EnumValue259 + EnumValue260 + EnumValue261 +} + +enum Enum430 @Directive10(argument10 : "stringValue8911", argument9 : "stringValue8910") { + EnumValue3296 + EnumValue3297 + EnumValue3298 +} + +enum Enum431 @Directive10(argument10 : "stringValue8937", argument9 : "stringValue8936") { + EnumValue3299 + EnumValue3300 + EnumValue3301 +} + +enum Enum432 @Directive10(argument10 : "stringValue8949", argument9 : "stringValue8948") { + EnumValue3302 + EnumValue3303 + EnumValue3304 +} + +enum Enum433 @Directive10(argument10 : "stringValue8953", argument9 : "stringValue8952") { + EnumValue3305 +} + +enum Enum434 @Directive10(argument10 : "stringValue9031", argument9 : "stringValue9030") { + EnumValue3306 + EnumValue3307 + EnumValue3308 @deprecated + EnumValue3309 @deprecated + EnumValue3310 @deprecated +} + +enum Enum435 @Directive10(argument10 : "stringValue9107", argument9 : "stringValue9106") { + EnumValue3311 + EnumValue3312 + EnumValue3313 + EnumValue3314 + EnumValue3315 + EnumValue3316 +} + +enum Enum436 @Directive10(argument10 : "stringValue9135", argument9 : "stringValue9134") { + EnumValue3317 + EnumValue3318 + EnumValue3319 + EnumValue3320 + EnumValue3321 + EnumValue3322 + EnumValue3323 + EnumValue3324 + EnumValue3325 + EnumValue3326 + EnumValue3327 +} + +enum Enum437 @Directive10(argument10 : "stringValue9139", argument9 : "stringValue9138") { + EnumValue3328 + EnumValue3329 + EnumValue3330 + EnumValue3331 + EnumValue3332 + EnumValue3333 + EnumValue3334 + EnumValue3335 + EnumValue3336 + EnumValue3337 + EnumValue3338 + EnumValue3339 + EnumValue3340 + EnumValue3341 + EnumValue3342 +} + +enum Enum438 @Directive10(argument10 : "stringValue9143", argument9 : "stringValue9142") { + EnumValue3343 + EnumValue3344 + EnumValue3345 + EnumValue3346 + EnumValue3347 + EnumValue3348 + EnumValue3349 + EnumValue3350 +} + +enum Enum439 @Directive10(argument10 : "stringValue9193", argument9 : "stringValue9192") { + EnumValue3351 + EnumValue3352 + EnumValue3353 + EnumValue3354 + EnumValue3355 + EnumValue3356 + EnumValue3357 + EnumValue3358 + EnumValue3359 + EnumValue3360 + EnumValue3361 + EnumValue3362 + EnumValue3363 + EnumValue3364 + EnumValue3365 + EnumValue3366 + EnumValue3367 + EnumValue3368 + EnumValue3369 + EnumValue3370 + EnumValue3371 + EnumValue3372 + EnumValue3373 + EnumValue3374 + EnumValue3375 + EnumValue3376 + EnumValue3377 + EnumValue3378 + EnumValue3379 + EnumValue3380 + EnumValue3381 + EnumValue3382 + EnumValue3383 + EnumValue3384 + EnumValue3385 + EnumValue3386 + EnumValue3387 + EnumValue3388 + EnumValue3389 + EnumValue3390 + EnumValue3391 + EnumValue3392 + EnumValue3393 + EnumValue3394 + EnumValue3395 + EnumValue3396 + EnumValue3397 + EnumValue3398 + EnumValue3399 + EnumValue3400 + EnumValue3401 + EnumValue3402 + EnumValue3403 + EnumValue3404 + EnumValue3405 + EnumValue3406 + EnumValue3407 + EnumValue3408 + EnumValue3409 + EnumValue3410 + EnumValue3411 + EnumValue3412 + EnumValue3413 + EnumValue3414 +} + +enum Enum44 @Directive10(argument10 : "stringValue928", argument9 : "stringValue927") { + EnumValue262 + EnumValue263 + EnumValue264 + EnumValue265 + EnumValue266 + EnumValue267 + EnumValue268 + EnumValue269 + EnumValue270 + EnumValue271 + EnumValue272 + EnumValue273 + EnumValue274 + EnumValue275 + EnumValue276 + EnumValue277 + EnumValue278 + EnumValue279 + EnumValue280 + EnumValue281 + EnumValue282 + EnumValue283 + EnumValue284 + EnumValue285 + EnumValue286 + EnumValue287 + EnumValue288 + EnumValue289 + EnumValue290 + EnumValue291 + EnumValue292 + EnumValue293 + EnumValue294 + EnumValue295 + EnumValue296 + EnumValue297 + EnumValue298 + EnumValue299 + EnumValue300 + EnumValue301 + EnumValue302 + EnumValue303 + EnumValue304 + EnumValue305 + EnumValue306 + EnumValue307 + EnumValue308 + EnumValue309 + EnumValue310 + EnumValue311 + EnumValue312 + EnumValue313 + EnumValue314 + EnumValue315 + EnumValue316 + EnumValue317 + EnumValue318 + EnumValue319 + EnumValue320 + EnumValue321 + EnumValue322 + EnumValue323 + EnumValue324 + EnumValue325 + EnumValue326 + EnumValue327 + EnumValue328 + EnumValue329 + EnumValue330 + EnumValue331 + EnumValue332 + EnumValue333 + EnumValue334 + EnumValue335 + EnumValue336 + EnumValue337 + EnumValue338 + EnumValue339 + EnumValue340 + EnumValue341 + EnumValue342 + EnumValue343 + EnumValue344 + EnumValue345 + EnumValue346 + EnumValue347 + EnumValue348 + EnumValue349 + EnumValue350 + EnumValue351 + EnumValue352 + EnumValue353 + EnumValue354 + EnumValue355 + EnumValue356 + EnumValue357 + EnumValue358 + EnumValue359 + EnumValue360 + EnumValue361 + EnumValue362 + EnumValue363 + EnumValue364 + EnumValue365 + EnumValue366 + EnumValue367 + EnumValue368 + EnumValue369 + EnumValue370 + EnumValue371 + EnumValue372 + EnumValue373 + EnumValue374 + EnumValue375 + EnumValue376 + EnumValue377 + EnumValue378 + EnumValue379 + EnumValue380 + EnumValue381 + EnumValue382 + EnumValue383 + EnumValue384 + EnumValue385 + EnumValue386 + EnumValue387 + EnumValue388 + EnumValue389 + EnumValue390 + EnumValue391 + EnumValue392 + EnumValue393 + EnumValue394 + EnumValue395 + EnumValue396 + EnumValue397 + EnumValue398 + EnumValue399 + EnumValue400 + EnumValue401 + EnumValue402 + EnumValue403 + EnumValue404 + EnumValue405 + EnumValue406 + EnumValue407 + EnumValue408 + EnumValue409 + EnumValue410 + EnumValue411 + EnumValue412 + EnumValue413 + EnumValue414 + EnumValue415 + EnumValue416 + EnumValue417 + EnumValue418 + EnumValue419 + EnumValue420 + EnumValue421 + EnumValue422 + EnumValue423 + EnumValue424 + EnumValue425 + EnumValue426 + EnumValue427 + EnumValue428 + EnumValue429 + EnumValue430 + EnumValue431 + EnumValue432 + EnumValue433 + EnumValue434 + EnumValue435 + EnumValue436 + EnumValue437 + EnumValue438 + EnumValue439 + EnumValue440 + EnumValue441 + EnumValue442 + EnumValue443 + EnumValue444 + EnumValue445 + EnumValue446 + EnumValue447 + EnumValue448 + EnumValue449 + EnumValue450 + EnumValue451 + EnumValue452 + EnumValue453 + EnumValue454 + EnumValue455 + EnumValue456 + EnumValue457 + EnumValue458 + EnumValue459 + EnumValue460 + EnumValue461 + EnumValue462 + EnumValue463 + EnumValue464 + EnumValue465 + EnumValue466 + EnumValue467 + EnumValue468 + EnumValue469 + EnumValue470 + EnumValue471 + EnumValue472 + EnumValue473 + EnumValue474 + EnumValue475 + EnumValue476 + EnumValue477 + EnumValue478 + EnumValue479 + EnumValue480 + EnumValue481 + EnumValue482 + EnumValue483 + EnumValue484 + EnumValue485 + EnumValue486 + EnumValue487 + EnumValue488 + EnumValue489 + EnumValue490 + EnumValue491 + EnumValue492 + EnumValue493 + EnumValue494 + EnumValue495 + EnumValue496 + EnumValue497 + EnumValue498 + EnumValue499 + EnumValue500 + EnumValue501 + EnumValue502 + EnumValue503 + EnumValue504 + EnumValue505 + EnumValue506 + EnumValue507 + EnumValue508 + EnumValue509 + EnumValue510 + EnumValue511 + EnumValue512 + EnumValue513 + EnumValue514 + EnumValue515 + EnumValue516 + EnumValue517 +} + +enum Enum440 @Directive10(argument10 : "stringValue9201", argument9 : "stringValue9200") { + EnumValue3415 + EnumValue3416 + EnumValue3417 + EnumValue3418 + EnumValue3419 +} + +enum Enum441 @Directive10(argument10 : "stringValue9213", argument9 : "stringValue9212") { + EnumValue3420 + EnumValue3421 + EnumValue3422 +} + +enum Enum442 @Directive10(argument10 : "stringValue9227", argument9 : "stringValue9226") { + EnumValue3423 + EnumValue3424 + EnumValue3425 +} + +enum Enum443 @Directive10(argument10 : "stringValue9269", argument9 : "stringValue9268") { + EnumValue3426 + EnumValue3427 +} + +enum Enum444 @Directive10(argument10 : "stringValue9317", argument9 : "stringValue9316") { + EnumValue3428 + EnumValue3429 + EnumValue3430 + EnumValue3431 + EnumValue3432 + EnumValue3433 + EnumValue3434 + EnumValue3435 + EnumValue3436 +} + +enum Enum445 @Directive10(argument10 : "stringValue9345", argument9 : "stringValue9344") { + EnumValue3437 + EnumValue3438 + EnumValue3439 +} + +enum Enum446 @Directive10(argument10 : "stringValue9351", argument9 : "stringValue9350") { + EnumValue3440 + EnumValue3441 + EnumValue3442 +} + +enum Enum447 @Directive10(argument10 : "stringValue9363", argument9 : "stringValue9362") { + EnumValue3443 + EnumValue3444 + EnumValue3445 +} + +enum Enum448 @Directive10(argument10 : "stringValue9371", argument9 : "stringValue9370") { + EnumValue3446 +} + +enum Enum449 @Directive10(argument10 : "stringValue9393", argument9 : "stringValue9392") { + EnumValue3447 + EnumValue3448 + EnumValue3449 + EnumValue3450 + EnumValue3451 + EnumValue3452 + EnumValue3453 + EnumValue3454 + EnumValue3455 +} + +enum Enum45 @Directive10(argument10 : "stringValue944", argument9 : "stringValue943") { + EnumValue518 + EnumValue519 + EnumValue520 + EnumValue521 + EnumValue522 + EnumValue523 + EnumValue524 + EnumValue525 + EnumValue526 + EnumValue527 + EnumValue528 + EnumValue529 + EnumValue530 + EnumValue531 + EnumValue532 + EnumValue533 + EnumValue534 + EnumValue535 + EnumValue536 + EnumValue537 + EnumValue538 + EnumValue539 + EnumValue540 + EnumValue541 + EnumValue542 + EnumValue543 + EnumValue544 + EnumValue545 + EnumValue546 + EnumValue547 + EnumValue548 + EnumValue549 + EnumValue550 + EnumValue551 + EnumValue552 + EnumValue553 + EnumValue554 + EnumValue555 + EnumValue556 + EnumValue557 + EnumValue558 + EnumValue559 + EnumValue560 + EnumValue561 + EnumValue562 + EnumValue563 + EnumValue564 + EnumValue565 + EnumValue566 + EnumValue567 + EnumValue568 + EnumValue569 + EnumValue570 + EnumValue571 + EnumValue572 + EnumValue573 + EnumValue574 + EnumValue575 + EnumValue576 + EnumValue577 + EnumValue578 + EnumValue579 + EnumValue580 + EnumValue581 + EnumValue582 + EnumValue583 + EnumValue584 + EnumValue585 + EnumValue586 + EnumValue587 + EnumValue588 + EnumValue589 + EnumValue590 + EnumValue591 + EnumValue592 + EnumValue593 + EnumValue594 + EnumValue595 + EnumValue596 + EnumValue597 + EnumValue598 + EnumValue599 + EnumValue600 + EnumValue601 + EnumValue602 + EnumValue603 + EnumValue604 + EnumValue605 + EnumValue606 + EnumValue607 + EnumValue608 + EnumValue609 + EnumValue610 + EnumValue611 + EnumValue612 + EnumValue613 + EnumValue614 + EnumValue615 + EnumValue616 + EnumValue617 + EnumValue618 + EnumValue619 + EnumValue620 + EnumValue621 + EnumValue622 + EnumValue623 + EnumValue624 + EnumValue625 + EnumValue626 + EnumValue627 + EnumValue628 + EnumValue629 + EnumValue630 + EnumValue631 + EnumValue632 + EnumValue633 + EnumValue634 + EnumValue635 + EnumValue636 + EnumValue637 + EnumValue638 + EnumValue639 + EnumValue640 + EnumValue641 + EnumValue642 + EnumValue643 + EnumValue644 + EnumValue645 + EnumValue646 + EnumValue647 + EnumValue648 + EnumValue649 + EnumValue650 + EnumValue651 + EnumValue652 + EnumValue653 + EnumValue654 + EnumValue655 + EnumValue656 + EnumValue657 + EnumValue658 + EnumValue659 + EnumValue660 + EnumValue661 + EnumValue662 + EnumValue663 + EnumValue664 + EnumValue665 + EnumValue666 + EnumValue667 + EnumValue668 + EnumValue669 + EnumValue670 + EnumValue671 + EnumValue672 + EnumValue673 + EnumValue674 + EnumValue675 + EnumValue676 + EnumValue677 + EnumValue678 + EnumValue679 + EnumValue680 + EnumValue681 + EnumValue682 + EnumValue683 + EnumValue684 + EnumValue685 + EnumValue686 + EnumValue687 + EnumValue688 + EnumValue689 + EnumValue690 + EnumValue691 + EnumValue692 + EnumValue693 + EnumValue694 + EnumValue695 + EnumValue696 + EnumValue697 + EnumValue698 + EnumValue699 + EnumValue700 + EnumValue701 + EnumValue702 + EnumValue703 + EnumValue704 + EnumValue705 + EnumValue706 + EnumValue707 + EnumValue708 + EnumValue709 + EnumValue710 + EnumValue711 + EnumValue712 + EnumValue713 + EnumValue714 + EnumValue715 + EnumValue716 + EnumValue717 + EnumValue718 + EnumValue719 + EnumValue720 + EnumValue721 + EnumValue722 + EnumValue723 + EnumValue724 + EnumValue725 + EnumValue726 + EnumValue727 + EnumValue728 + EnumValue729 + EnumValue730 + EnumValue731 + EnumValue732 + EnumValue733 + EnumValue734 + EnumValue735 + EnumValue736 + EnumValue737 + EnumValue738 + EnumValue739 + EnumValue740 + EnumValue741 + EnumValue742 + EnumValue743 + EnumValue744 + EnumValue745 + EnumValue746 + EnumValue747 + EnumValue748 + EnumValue749 + EnumValue750 + EnumValue751 + EnumValue752 + EnumValue753 + EnumValue754 + EnumValue755 + EnumValue756 + EnumValue757 + EnumValue758 + EnumValue759 + EnumValue760 + EnumValue761 + EnumValue762 + EnumValue763 + EnumValue764 + EnumValue765 + EnumValue766 + EnumValue767 + EnumValue768 + EnumValue769 + EnumValue770 + EnumValue771 + EnumValue772 + EnumValue773 +} + +enum Enum450 @Directive10(argument10 : "stringValue9489", argument9 : "stringValue9488") { + EnumValue3456 + EnumValue3457 + EnumValue3458 + EnumValue3459 + EnumValue3460 + EnumValue3461 + EnumValue3462 + EnumValue3463 + EnumValue3464 + EnumValue3465 + EnumValue3466 + EnumValue3467 + EnumValue3468 + EnumValue3469 + EnumValue3470 + EnumValue3471 + EnumValue3472 + EnumValue3473 + EnumValue3474 + EnumValue3475 + EnumValue3476 + EnumValue3477 + EnumValue3478 + EnumValue3479 + EnumValue3480 + EnumValue3481 + EnumValue3482 + EnumValue3483 + EnumValue3484 + EnumValue3485 + EnumValue3486 + EnumValue3487 + EnumValue3488 + EnumValue3489 + EnumValue3490 + EnumValue3491 + EnumValue3492 + EnumValue3493 + EnumValue3494 + EnumValue3495 + EnumValue3496 + EnumValue3497 + EnumValue3498 + EnumValue3499 + EnumValue3500 + EnumValue3501 + EnumValue3502 + EnumValue3503 + EnumValue3504 + EnumValue3505 + EnumValue3506 + EnumValue3507 + EnumValue3508 + EnumValue3509 + EnumValue3510 + EnumValue3511 + EnumValue3512 + EnumValue3513 + EnumValue3514 + EnumValue3515 + EnumValue3516 + EnumValue3517 + EnumValue3518 + EnumValue3519 + EnumValue3520 + EnumValue3521 + EnumValue3522 + EnumValue3523 + EnumValue3524 + EnumValue3525 + EnumValue3526 + EnumValue3527 +} + +enum Enum451 @Directive10(argument10 : "stringValue9501", argument9 : "stringValue9500") { + EnumValue3528 + EnumValue3529 + EnumValue3530 + EnumValue3531 + EnumValue3532 +} + +enum Enum452 @Directive10(argument10 : "stringValue9505", argument9 : "stringValue9504") { + EnumValue3533 + EnumValue3534 + EnumValue3535 + EnumValue3536 +} + +enum Enum453 @Directive10(argument10 : "stringValue9509", argument9 : "stringValue9508") { + EnumValue3537 + EnumValue3538 + EnumValue3539 + EnumValue3540 + EnumValue3541 + EnumValue3542 + EnumValue3543 + EnumValue3544 + EnumValue3545 + EnumValue3546 + EnumValue3547 + EnumValue3548 + EnumValue3549 + EnumValue3550 + EnumValue3551 + EnumValue3552 + EnumValue3553 + EnumValue3554 + EnumValue3555 + EnumValue3556 + EnumValue3557 + EnumValue3558 + EnumValue3559 + EnumValue3560 + EnumValue3561 + EnumValue3562 + EnumValue3563 + EnumValue3564 + EnumValue3565 + EnumValue3566 + EnumValue3567 + EnumValue3568 + EnumValue3569 + EnumValue3570 + EnumValue3571 + EnumValue3572 + EnumValue3573 + EnumValue3574 + EnumValue3575 + EnumValue3576 + EnumValue3577 + EnumValue3578 + EnumValue3579 + EnumValue3580 + EnumValue3581 + EnumValue3582 + EnumValue3583 + EnumValue3584 + EnumValue3585 + EnumValue3586 + EnumValue3587 + EnumValue3588 + EnumValue3589 + EnumValue3590 + EnumValue3591 + EnumValue3592 + EnumValue3593 + EnumValue3594 + EnumValue3595 + EnumValue3596 + EnumValue3597 + EnumValue3598 + EnumValue3599 + EnumValue3600 + EnumValue3601 + EnumValue3602 + EnumValue3603 + EnumValue3604 + EnumValue3605 + EnumValue3606 + EnumValue3607 + EnumValue3608 +} + +enum Enum454 @Directive10(argument10 : "stringValue9519", argument9 : "stringValue9518") { + EnumValue3609 + EnumValue3610 + EnumValue3611 + EnumValue3612 + EnumValue3613 +} + +enum Enum455 @Directive10(argument10 : "stringValue9589", argument9 : "stringValue9588") { + EnumValue3614 + EnumValue3615 + EnumValue3616 + EnumValue3617 + EnumValue3618 + EnumValue3619 +} + +enum Enum456 @Directive10(argument10 : "stringValue9605", argument9 : "stringValue9604") { + EnumValue3620 + EnumValue3621 + EnumValue3622 + EnumValue3623 +} + +enum Enum457 @Directive10(argument10 : "stringValue9615", argument9 : "stringValue9614") { + EnumValue3624 + EnumValue3625 + EnumValue3626 + EnumValue3627 + EnumValue3628 +} + +enum Enum458 @Directive10(argument10 : "stringValue9629", argument9 : "stringValue9628") { + EnumValue3629 @deprecated + EnumValue3630 + EnumValue3631 +} + +enum Enum459 @Directive10(argument10 : "stringValue9633", argument9 : "stringValue9632") { + EnumValue3632 + EnumValue3633 + EnumValue3634 +} + +enum Enum46 @Directive10(argument10 : "stringValue950", argument9 : "stringValue949") { + EnumValue774 + EnumValue775 + EnumValue776 + EnumValue777 + EnumValue778 +} + +enum Enum460 @Directive10(argument10 : "stringValue9637", argument9 : "stringValue9636") { + EnumValue3635 + EnumValue3636 + EnumValue3637 +} + +enum Enum461 @Directive10(argument10 : "stringValue9645", argument9 : "stringValue9644") { + EnumValue3638 + EnumValue3639 +} + +enum Enum462 @Directive10(argument10 : "stringValue9673", argument9 : "stringValue9672") { + EnumValue3640 + EnumValue3641 +} + +enum Enum463 @Directive10(argument10 : "stringValue9677", argument9 : "stringValue9676") { + EnumValue3642 + EnumValue3643 +} + +enum Enum464 @Directive10(argument10 : "stringValue9697", argument9 : "stringValue9696") { + EnumValue3644 + EnumValue3645 +} + +enum Enum465 @Directive10(argument10 : "stringValue9729", argument9 : "stringValue9728") { + EnumValue3646 + EnumValue3647 + EnumValue3648 +} + +enum Enum466 @Directive10(argument10 : "stringValue9739", argument9 : "stringValue9738") { + EnumValue3649 + EnumValue3650 + EnumValue3651 + EnumValue3652 + EnumValue3653 + EnumValue3654 + EnumValue3655 + EnumValue3656 + EnumValue3657 + EnumValue3658 +} + +enum Enum467 @Directive10(argument10 : "stringValue9747", argument9 : "stringValue9746") { + EnumValue3659 + EnumValue3660 + EnumValue3661 + EnumValue3662 + EnumValue3663 +} + +enum Enum468 @Directive10(argument10 : "stringValue9767", argument9 : "stringValue9766") { + EnumValue3664 + EnumValue3665 + EnumValue3666 + EnumValue3667 + EnumValue3668 + EnumValue3669 + EnumValue3670 + EnumValue3671 + EnumValue3672 + EnumValue3673 + EnumValue3674 + EnumValue3675 + EnumValue3676 + EnumValue3677 + EnumValue3678 + EnumValue3679 + EnumValue3680 + EnumValue3681 + EnumValue3682 + EnumValue3683 + EnumValue3684 + EnumValue3685 + EnumValue3686 + EnumValue3687 + EnumValue3688 + EnumValue3689 + EnumValue3690 + EnumValue3691 + EnumValue3692 + EnumValue3693 + EnumValue3694 + EnumValue3695 +} + +enum Enum469 @Directive10(argument10 : "stringValue9787", argument9 : "stringValue9786") { + EnumValue3696 + EnumValue3697 + EnumValue3698 + EnumValue3699 + EnumValue3700 + EnumValue3701 + EnumValue3702 + EnumValue3703 +} + +enum Enum47 @Directive10(argument10 : "stringValue962", argument9 : "stringValue961") { + EnumValue779 + EnumValue780 + EnumValue781 + EnumValue782 +} + +enum Enum470 @Directive10(argument10 : "stringValue9791", argument9 : "stringValue9790") { + EnumValue3704 + EnumValue3705 + EnumValue3706 +} + +enum Enum471 @Directive10(argument10 : "stringValue9795", argument9 : "stringValue9794") { + EnumValue3707 + EnumValue3708 + EnumValue3709 + EnumValue3710 + EnumValue3711 +} + +enum Enum472 @Directive10(argument10 : "stringValue9831", argument9 : "stringValue9830") { + EnumValue3712 + EnumValue3713 +} + +enum Enum473 @Directive10(argument10 : "stringValue9933", argument9 : "stringValue9932") { + EnumValue3714 + EnumValue3715 +} + +enum Enum474 @Directive10(argument10 : "stringValue10005", argument9 : "stringValue10004") { + EnumValue3716 + EnumValue3717 +} + +enum Enum48 @Directive10(argument10 : "stringValue970", argument9 : "stringValue969") { + EnumValue783 + EnumValue784 + EnumValue785 + EnumValue786 + EnumValue787 + EnumValue788 + EnumValue789 + EnumValue790 + EnumValue791 + EnumValue792 + EnumValue793 + EnumValue794 + EnumValue795 + EnumValue796 +} + +enum Enum49 @Directive10(argument10 : "stringValue976", argument9 : "stringValue975") { + EnumValue797 + EnumValue798 + EnumValue799 + EnumValue800 + EnumValue801 + EnumValue802 + EnumValue803 + EnumValue804 + EnumValue805 + EnumValue806 +} + +enum Enum5 @Directive10(argument10 : "stringValue26", argument9 : "stringValue25") { + EnumValue70 + EnumValue71 + EnumValue72 + EnumValue73 + EnumValue74 + EnumValue75 +} + +enum Enum50 @Directive10(argument10 : "stringValue992", argument9 : "stringValue991") { + EnumValue807 + EnumValue808 + EnumValue809 + EnumValue810 + EnumValue811 + EnumValue812 + EnumValue813 + EnumValue814 + EnumValue815 + EnumValue816 + EnumValue817 + EnumValue818 + EnumValue819 + EnumValue820 +} + +enum Enum51 @Directive10(argument10 : "stringValue1022", argument9 : "stringValue1021") { + EnumValue821 + EnumValue822 + EnumValue823 + EnumValue824 + EnumValue825 + EnumValue826 + EnumValue827 + EnumValue828 + EnumValue829 + EnumValue830 + EnumValue831 + EnumValue832 + EnumValue833 + EnumValue834 + EnumValue835 + EnumValue836 +} + +enum Enum52 @Directive10(argument10 : "stringValue1038", argument9 : "stringValue1037") { + EnumValue837 + EnumValue838 + EnumValue839 + EnumValue840 + EnumValue841 + EnumValue842 + EnumValue843 + EnumValue844 + EnumValue845 + EnumValue846 + EnumValue847 + EnumValue848 + EnumValue849 + EnumValue850 + EnumValue851 + EnumValue852 + EnumValue853 +} + +enum Enum53 @Directive10(argument10 : "stringValue1044", argument9 : "stringValue1043") { + EnumValue854 + EnumValue855 + EnumValue856 + EnumValue857 + EnumValue858 + EnumValue859 + EnumValue860 + EnumValue861 +} + +enum Enum54 @Directive10(argument10 : "stringValue1064", argument9 : "stringValue1063") { + EnumValue862 + EnumValue863 + EnumValue864 + EnumValue865 + EnumValue866 +} + +enum Enum55 @Directive10(argument10 : "stringValue1080", argument9 : "stringValue1079") { + EnumValue867 + EnumValue868 + EnumValue869 + EnumValue870 + EnumValue871 + EnumValue872 + EnumValue873 + EnumValue874 +} + +enum Enum56 @Directive10(argument10 : "stringValue1108", argument9 : "stringValue1107") { + EnumValue875 + EnumValue876 + EnumValue877 + EnumValue878 + EnumValue879 + EnumValue880 + EnumValue881 + EnumValue882 + EnumValue883 + EnumValue884 + EnumValue885 + EnumValue886 + EnumValue887 + EnumValue888 + EnumValue889 + EnumValue890 + EnumValue891 + EnumValue892 + EnumValue893 + EnumValue894 + EnumValue895 + EnumValue896 + EnumValue897 + EnumValue898 + EnumValue899 + EnumValue900 + EnumValue901 + EnumValue902 + EnumValue903 + EnumValue904 + EnumValue905 + EnumValue906 +} + +enum Enum57 @Directive10(argument10 : "stringValue1138", argument9 : "stringValue1137") { + EnumValue907 + EnumValue908 + EnumValue909 + EnumValue910 + EnumValue911 + EnumValue912 + EnumValue913 +} + +enum Enum58 @Directive10(argument10 : "stringValue1156", argument9 : "stringValue1155") { + EnumValue914 + EnumValue915 +} + +enum Enum59 @Directive10(argument10 : "stringValue1168", argument9 : "stringValue1167") { + EnumValue916 + EnumValue917 + EnumValue918 +} + +enum Enum6 @Directive10(argument10 : "stringValue34", argument9 : "stringValue33") { + EnumValue76 + EnumValue77 + EnumValue78 + EnumValue79 +} + +enum Enum60 @Directive10(argument10 : "stringValue1190", argument9 : "stringValue1189") { + EnumValue919 + EnumValue920 + EnumValue921 + EnumValue922 + EnumValue923 + EnumValue924 + EnumValue925 +} + +enum Enum61 @Directive10(argument10 : "stringValue1208", argument9 : "stringValue1207") { + EnumValue926 + EnumValue927 + EnumValue928 +} + +enum Enum62 @Directive10(argument10 : "stringValue1226", argument9 : "stringValue1225") { + EnumValue929 +} + +enum Enum63 @Directive10(argument10 : "stringValue1244", argument9 : "stringValue1243") { + EnumValue930 +} + +enum Enum64 @Directive10(argument10 : "stringValue1268", argument9 : "stringValue1267") { + EnumValue931 + EnumValue932 + EnumValue933 @deprecated + EnumValue934 @deprecated + EnumValue935 @deprecated + EnumValue936 + EnumValue937 + EnumValue938 + EnumValue939 + EnumValue940 + EnumValue941 + EnumValue942 + EnumValue943 +} + +enum Enum65 @Directive10(argument10 : "stringValue1280", argument9 : "stringValue1279") { + EnumValue944 + EnumValue945 + EnumValue946 + EnumValue947 @deprecated +} + +enum Enum66 @Directive10(argument10 : "stringValue1304", argument9 : "stringValue1303") { + EnumValue948 + EnumValue949 +} + +enum Enum67 @Directive10(argument10 : "stringValue1312", argument9 : "stringValue1311") { + EnumValue950 + EnumValue951 + EnumValue952 + EnumValue953 +} + +enum Enum68 @Directive10(argument10 : "stringValue1348", argument9 : "stringValue1347") { + EnumValue954 + EnumValue955 +} + +enum Enum69 @Directive10(argument10 : "stringValue1366", argument9 : "stringValue1365") { + EnumValue956 + EnumValue957 +} + +enum Enum7 @Directive10(argument10 : "stringValue54", argument9 : "stringValue53") { + EnumValue80 + EnumValue81 + EnumValue82 +} + +enum Enum70 @Directive10(argument10 : "stringValue1376", argument9 : "stringValue1375") { + EnumValue958 + EnumValue959 + EnumValue960 + EnumValue961 +} + +enum Enum71 @Directive10(argument10 : "stringValue1386", argument9 : "stringValue1385") { + EnumValue962 + EnumValue963 +} + +enum Enum72 @Directive10(argument10 : "stringValue1418", argument9 : "stringValue1417") { + EnumValue964 + EnumValue965 + EnumValue966 @deprecated +} + +enum Enum73 @Directive10(argument10 : "stringValue1476", argument9 : "stringValue1475") { + EnumValue967 + EnumValue968 + EnumValue969 + EnumValue970 +} + +enum Enum74 @Directive10(argument10 : "stringValue1522", argument9 : "stringValue1521") { + EnumValue971 + EnumValue972 +} + +enum Enum75 @Directive10(argument10 : "stringValue1534", argument9 : "stringValue1533") { + EnumValue973 + EnumValue974 + EnumValue975 + EnumValue976 +} + +enum Enum76 @Directive10(argument10 : "stringValue1552", argument9 : "stringValue1551") { + EnumValue977 + EnumValue978 + EnumValue979 + EnumValue980 +} + +enum Enum77 @Directive10(argument10 : "stringValue1564", argument9 : "stringValue1563") { + EnumValue981 + EnumValue982 +} + +enum Enum78 @Directive10(argument10 : "stringValue1568", argument9 : "stringValue1567") { + EnumValue983 + EnumValue984 +} + +enum Enum79 @Directive10(argument10 : "stringValue1572", argument9 : "stringValue1571") { + EnumValue985 + EnumValue986 + EnumValue987 + EnumValue988 + EnumValue989 + EnumValue990 + EnumValue991 +} + +enum Enum8 @Directive10(argument10 : "stringValue62", argument9 : "stringValue61") { + EnumValue83 + EnumValue84 + EnumValue85 + EnumValue86 + EnumValue87 + EnumValue88 + EnumValue89 + EnumValue90 + EnumValue91 + EnumValue92 +} + +enum Enum80 @Directive10(argument10 : "stringValue1576", argument9 : "stringValue1575") { + EnumValue992 + EnumValue993 + EnumValue994 + EnumValue995 + EnumValue996 +} + +enum Enum81 @Directive10(argument10 : "stringValue1580", argument9 : "stringValue1579") { + EnumValue997 + EnumValue998 +} + +enum Enum82 @Directive10(argument10 : "stringValue1588", argument9 : "stringValue1587") { + EnumValue1000 + EnumValue1001 + EnumValue1002 + EnumValue1003 + EnumValue1004 + EnumValue1005 + EnumValue1006 + EnumValue1007 + EnumValue999 +} + +enum Enum83 @Directive10(argument10 : "stringValue1596", argument9 : "stringValue1595") { + EnumValue1008 + EnumValue1009 + EnumValue1010 + EnumValue1011 + EnumValue1012 + EnumValue1013 + EnumValue1014 + EnumValue1015 + EnumValue1016 + EnumValue1017 + EnumValue1018 + EnumValue1019 + EnumValue1020 +} + +enum Enum84 @Directive10(argument10 : "stringValue1616", argument9 : "stringValue1615") { + EnumValue1021 + EnumValue1022 + EnumValue1023 +} + +enum Enum85 @Directive10(argument10 : "stringValue1626", argument9 : "stringValue1625") { + EnumValue1024 + EnumValue1025 + EnumValue1026 +} + +enum Enum86 @Directive10(argument10 : "stringValue1656", argument9 : "stringValue1655") { + EnumValue1027 + EnumValue1028 + EnumValue1029 +} + +enum Enum87 @Directive10(argument10 : "stringValue1686", argument9 : "stringValue1685") { + EnumValue1030 + EnumValue1031 +} + +enum Enum88 @Directive10(argument10 : "stringValue1690", argument9 : "stringValue1689") { + EnumValue1032 + EnumValue1033 + EnumValue1034 +} + +enum Enum89 @Directive10(argument10 : "stringValue1758", argument9 : "stringValue1757") { + EnumValue1035 + EnumValue1036 + EnumValue1037 + EnumValue1038 + EnumValue1039 +} + +enum Enum9 @Directive10(argument10 : "stringValue82", argument9 : "stringValue81") { + EnumValue93 +} + +enum Enum90 @Directive10(argument10 : "stringValue1814", argument9 : "stringValue1813") { + EnumValue1040 + EnumValue1041 + EnumValue1042 +} + +enum Enum91 @Directive10(argument10 : "stringValue1846", argument9 : "stringValue1845") { + EnumValue1043 + EnumValue1044 + EnumValue1045 + EnumValue1046 +} + +enum Enum92 @Directive10(argument10 : "stringValue1898", argument9 : "stringValue1897") { + EnumValue1047 + EnumValue1048 +} + +enum Enum93 @Directive10(argument10 : "stringValue1978", argument9 : "stringValue1977") { + EnumValue1049 + EnumValue1050 + EnumValue1051 + EnumValue1052 + EnumValue1053 + EnumValue1054 + EnumValue1055 + EnumValue1056 + EnumValue1057 + EnumValue1058 +} + +enum Enum94 @Directive10(argument10 : "stringValue2031", argument9 : "stringValue2030") { + EnumValue1059 + EnumValue1060 + EnumValue1061 +} + +enum Enum95 @Directive10(argument10 : "stringValue2059", argument9 : "stringValue2058") { + EnumValue1062 + EnumValue1063 + EnumValue1064 +} + +enum Enum96 @Directive10(argument10 : "stringValue2131", argument9 : "stringValue2130") { + EnumValue1065 + EnumValue1066 + EnumValue1067 +} + +enum Enum97 @Directive10(argument10 : "stringValue2135", argument9 : "stringValue2134") { + EnumValue1068 + EnumValue1069 + EnumValue1070 + EnumValue1071 + EnumValue1072 + EnumValue1073 + EnumValue1074 + EnumValue1075 + EnumValue1076 + EnumValue1077 + EnumValue1078 + EnumValue1079 + EnumValue1080 + EnumValue1081 + EnumValue1082 + EnumValue1083 + EnumValue1084 + EnumValue1085 + EnumValue1086 +} + +enum Enum98 @Directive10(argument10 : "stringValue2155", argument9 : "stringValue2154") { + EnumValue1087 + EnumValue1088 + EnumValue1089 +} + +enum Enum99 @Directive10(argument10 : "stringValue2159", argument9 : "stringValue2158") { + EnumValue1090 + EnumValue1091 + EnumValue1092 + EnumValue1093 + EnumValue1094 + EnumValue1095 + EnumValue1096 + EnumValue1097 + EnumValue1098 + EnumValue1099 + EnumValue1100 + EnumValue1101 + EnumValue1102 + EnumValue1103 + EnumValue1104 + EnumValue1105 + EnumValue1106 + EnumValue1107 + EnumValue1108 +} + +scalar Scalar1 + +scalar Scalar2 + +scalar Scalar3 + +scalar Scalar4 + +input InputObject1 @Directive10(argument10 : "stringValue158", argument9 : "stringValue157") { + inputField1: Scalar2! + inputField2: Scalar2! + inputField3: Scalar2! +} + +input InputObject10 @Directive10(argument10 : "stringValue5713", argument9 : "stringValue5712") { + inputField26: [Enum254!] + inputField27: Enum256 + inputField28: [Enum255!] +} + +input InputObject100 @Directive10(argument10 : "stringValue8075", argument9 : "stringValue8074") { + inputField260: String! + inputField261: InputObject101 + inputField269: String + inputField270: [String!]! +} + +input InputObject101 @Directive10(argument10 : "stringValue8079", argument9 : "stringValue8078") { + inputField262: InputObject102 + inputField268: String +} + +input InputObject102 @Directive10(argument10 : "stringValue8083", argument9 : "stringValue8082") { + inputField263: String! + inputField264: Enum363 + inputField265: InputObject82 + inputField266: Scalar2! + inputField267: Scalar2! +} + +input InputObject103 @Directive10(argument10 : "stringValue8087", argument9 : "stringValue8086") { + inputField272: String! + inputField273: InputObject101 + inputField274: String + inputField275: [String!]! +} + +input InputObject104 @Directive10(argument10 : "stringValue8091", argument9 : "stringValue8090") { + inputField277: String! + inputField278: String! + inputField279: InputObject101 + inputField280: String! +} + +input InputObject105 { + inputField281: Boolean + inputField282: Boolean + inputField283: Boolean + inputField284: Boolean + inputField285: Boolean + inputField286: Boolean + inputField287: Boolean + inputField288: Boolean + inputField289: Enum402 + inputField290: Boolean + inputField291: Boolean + inputField292: Enum402 + inputField293: Boolean + inputField294: Boolean + inputField295: Boolean + inputField296: Boolean + inputField297: Boolean + inputField298: Boolean +} + +input InputObject106 @Directive10(argument10 : "stringValue8233", argument9 : "stringValue8232") { + inputField299: String! + inputField300: String! +} + +input InputObject107 @Directive10(argument10 : "stringValue8283", argument9 : "stringValue8282") { + inputField301: Scalar2! + inputField302: Enum406! +} + +input InputObject108 @Directive10(argument10 : "stringValue8447", argument9 : "stringValue8446") { + inputField303: Scalar2 +} + +input InputObject109 @Directive10(argument10 : "stringValue9023", argument9 : "stringValue9022") { + inputField304: InputObject110 + inputField308: String + inputField309: [Enum434!] + inputField310: InputObject111 +} + +input InputObject11 @Directive10(argument10 : "stringValue5721", argument9 : "stringValue5720") { + inputField29: [InputObject12!]! + inputField32: String! +} + +input InputObject110 @Directive10(argument10 : "stringValue9027", argument9 : "stringValue9026") { + inputField305: String + inputField306: String + inputField307: String +} + +input InputObject111 @Directive10(argument10 : "stringValue9035", argument9 : "stringValue9034") { + inputField311: Int + inputField312: Int + inputField313: Int +} + +input InputObject112 @Directive10(argument10 : "stringValue9287", argument9 : "stringValue9286") { + inputField314: String + inputField315: Enum358! = EnumValue2300 + inputField316: Scalar2! +} + +input InputObject113 @Directive10(argument10 : "stringValue9409", argument9 : "stringValue9408") { + inputField317: Scalar2! + inputField318: Scalar2! +} + +input InputObject114 @Directive10(argument10 : "stringValue9485", argument9 : "stringValue9484") { + inputField319: Enum450! + inputField320: Scalar3 + inputField321: Scalar2 + inputField322: String +} + +input InputObject115 @Directive10(argument10 : "stringValue9871", argument9 : "stringValue9870") { + inputField323: Scalar2 + inputField324: Enum358! = EnumValue2300 + inputField325: Scalar2! +} + +input InputObject116 @Directive10(argument10 : "stringValue9963", argument9 : "stringValue9962") { + inputField326: Int + inputField327: String +} + +input InputObject12 { + inputField30: Int! + inputField31: [Int!]! +} + +input InputObject13 @Directive10(argument10 : "stringValue5899", argument9 : "stringValue5898") { + inputField33: Boolean +} + +input InputObject14 @Directive10(argument10 : "stringValue5935", argument9 : "stringValue5934") { + inputField34: Enum262! + inputField35: Enum272! +} + +input InputObject15 @Directive10(argument10 : "stringValue5969", argument9 : "stringValue5968") { + inputField36: [InputObject16!]! + inputField40: Boolean + inputField41: String! + inputField42: Enum274 + inputField43: Enum275 +} + +input InputObject16 @Directive10(argument10 : "stringValue5973", argument9 : "stringValue5972") { + inputField37: Boolean + inputField38: Int + inputField39: String +} + +input InputObject17 @Directive10(argument10 : "stringValue5985", argument9 : "stringValue5984") { + inputField44: Boolean + inputField45: Boolean + inputField46: Boolean + inputField47: Boolean +} + +input InputObject18 @Directive10(argument10 : "stringValue5989", argument9 : "stringValue5988") { + inputField48: InputObject19 + inputField58: InputObject21 + inputField65: String + inputField66: InputObject24 + inputField75: InputObject28 + inputField77: InputObject29 +} + +input InputObject19 @Directive10(argument10 : "stringValue5993", argument9 : "stringValue5992") { + inputField49: String + inputField50: String + inputField51: String + inputField52: String + inputField53: String + inputField54: InputObject20 + inputField57: String +} + +input InputObject2 @Directive10(argument10 : "stringValue920", argument9 : "stringValue919") { + inputField4: String! +} + +input InputObject20 @Directive10(argument10 : "stringValue5997", argument9 : "stringValue5996") { + inputField55: Float! + inputField56: Float! +} + +input InputObject21 @Directive10(argument10 : "stringValue6001", argument9 : "stringValue6000") { + inputField59: InputObject22 + inputField61: InputObject23 +} + +input InputObject22 @Directive10(argument10 : "stringValue6005", argument9 : "stringValue6004") { + inputField60: String! +} + +input InputObject23 @Directive10(argument10 : "stringValue6009", argument9 : "stringValue6008") { + inputField62: String + inputField63: String + inputField64: String +} + +input InputObject24 @Directive10(argument10 : "stringValue6013", argument9 : "stringValue6012") { + inputField67: Enum276 + inputField68: [InputObject25!] +} + +input InputObject25 @Directive10(argument10 : "stringValue6021", argument9 : "stringValue6020") { + inputField69: [InputObject26!] + inputField74: Enum277 +} + +input InputObject26 @Directive10(argument10 : "stringValue6025", argument9 : "stringValue6024") { + inputField70: InputObject27 + inputField73: InputObject27 +} + +input InputObject27 @Directive10(argument10 : "stringValue6029", argument9 : "stringValue6028") { + inputField71: Scalar4! + inputField72: Scalar4! +} + +input InputObject28 @Directive10(argument10 : "stringValue6037", argument9 : "stringValue6036") { + inputField76: String! +} + +input InputObject29 @Directive10(argument10 : "stringValue6041", argument9 : "stringValue6040") { + inputField78: String! + inputField79: String! +} + +input InputObject3 @Directive10(argument10 : "stringValue2127", argument9 : "stringValue2126") { + inputField5: Enum96 + inputField6: Enum97! +} + +input InputObject30 @Directive10(argument10 : "stringValue6109", argument9 : "stringValue6108") { + inputField101: InputObject40 + inputField104: InputObject41 + inputField107: Enum286 + inputField108: InputObject43 + inputField80: InputObject31 + inputField83: InputObject32 + inputField85: InputObject33 + inputField88: InputObject34 + inputField90: InputObject35 + inputField92: InputObject36 + inputField94: InputObject37 + inputField97: InputObject38 + inputField99: InputObject39 +} + +input InputObject31 @Directive10(argument10 : "stringValue6113", argument9 : "stringValue6112") { + inputField81: Enum282! + inputField82: String! +} + +input InputObject32 @Directive10(argument10 : "stringValue6121", argument9 : "stringValue6120") { + inputField84: [Scalar2!]! +} + +input InputObject33 @Directive10(argument10 : "stringValue6125", argument9 : "stringValue6124") { + inputField86: Enum282! + inputField87: String! +} + +input InputObject34 @Directive10(argument10 : "stringValue6129", argument9 : "stringValue6128") { + inputField89: [Enum283!]! +} + +input InputObject35 @Directive10(argument10 : "stringValue6137", argument9 : "stringValue6136") { + inputField91: [Enum284!]! +} + +input InputObject36 @Directive10(argument10 : "stringValue6145", argument9 : "stringValue6144") { + inputField93: [Scalar2!]! +} + +input InputObject37 @Directive10(argument10 : "stringValue6149", argument9 : "stringValue6148") { + inputField95: Enum282! + inputField96: String! +} + +input InputObject38 @Directive10(argument10 : "stringValue6153", argument9 : "stringValue6152") { + inputField98: Boolean +} + +input InputObject39 @Directive10(argument10 : "stringValue6157", argument9 : "stringValue6156") { + inputField100: [Scalar2!]! +} + +input InputObject4 @Directive10(argument10 : "stringValue2961", argument9 : "stringValue2960") { + inputField7: Int + inputField8: Int + inputField9: Int +} + +input InputObject40 @Directive10(argument10 : "stringValue6161", argument9 : "stringValue6160") { + inputField102: Enum282! + inputField103: String! +} + +input InputObject41 @Directive10(argument10 : "stringValue6165", argument9 : "stringValue6164") { + inputField105: [InputObject42!]! +} + +input InputObject42 @Directive10(argument10 : "stringValue6169", argument9 : "stringValue6168") { + inputField106: Enum285 +} + +input InputObject43 @Directive10(argument10 : "stringValue6181", argument9 : "stringValue6180") { + inputField109: [Scalar2!]! +} + +input InputObject44 @Directive10(argument10 : "stringValue6291", argument9 : "stringValue6290") { + inputField110: InputObject45 + inputField113: InputObject46 + inputField116: InputObject47 + inputField119: InputObject48 + inputField124: InputObject50 + inputField128: InputObject51 + inputField130: InputObject52 +} + +input InputObject45 @Directive10(argument10 : "stringValue6295", argument9 : "stringValue6294") { + inputField111: String + inputField112: String! +} + +input InputObject46 @Directive10(argument10 : "stringValue6299", argument9 : "stringValue6298") { + inputField114: Scalar2! + inputField115: String +} + +input InputObject47 @Directive10(argument10 : "stringValue6303", argument9 : "stringValue6302") { + inputField117: String + inputField118: Scalar2! +} + +input InputObject48 @Directive10(argument10 : "stringValue6307", argument9 : "stringValue6306") { + inputField120: [InputObject49!]! +} + +input InputObject49 @Directive10(argument10 : "stringValue6311", argument9 : "stringValue6310") { + inputField121: String + inputField122: String! + inputField123: String +} + +input InputObject5 @Directive10(argument10 : "stringValue5249", argument9 : "stringValue5248") { + inputField10: String! + inputField11: String +} + +input InputObject50 @Directive10(argument10 : "stringValue6315", argument9 : "stringValue6314") { + inputField125: String! + inputField126: String! + inputField127: String! +} + +input InputObject51 @Directive10(argument10 : "stringValue6319", argument9 : "stringValue6318") { + inputField129: String! +} + +input InputObject52 @Directive10(argument10 : "stringValue6323", argument9 : "stringValue6322") { + inputField131: String + inputField132: Scalar2! +} + +input InputObject53 @Directive10(argument10 : "stringValue6327", argument9 : "stringValue6326") { + inputField133: Scalar2 + inputField134: [Scalar2!] +} + +input InputObject54 @Directive10(argument10 : "stringValue6357", argument9 : "stringValue6356") { + inputField135: String! + inputField136: Scalar2! + inputField137: [Enum294!]! +} + +input InputObject55 @Directive10(argument10 : "stringValue6419", argument9 : "stringValue6418") { + inputField138: String + inputField139: Scalar2! + inputField140: Enum298! +} + +input InputObject56 @Directive10(argument10 : "stringValue6457", argument9 : "stringValue6456") { + inputField141: Boolean + inputField142: Scalar2 + inputField143: [Enum299!] +} + +input InputObject57 @Directive10(argument10 : "stringValue6539", argument9 : "stringValue6538") { + inputField144: Boolean +} + +input InputObject58 @Directive10(argument10 : "stringValue6559", argument9 : "stringValue6558") { + inputField145: Boolean + inputField146: Boolean + inputField147: InputObject59 + inputField150: String! +} + +input InputObject59 @Directive10(argument10 : "stringValue6563", argument9 : "stringValue6562") { + inputField148: InputObject60 +} + +input InputObject6 @Directive10(argument10 : "stringValue5637", argument9 : "stringValue5636") { + inputField12: InputObject7 +} + +input InputObject60 @Directive10(argument10 : "stringValue6567", argument9 : "stringValue6566") { + inputField149: Int +} + +input InputObject61 @Directive10(argument10 : "stringValue6583", argument9 : "stringValue6582") { + inputField151: Enum305! + inputField152: InputObject62 +} + +input InputObject62 @Directive10(argument10 : "stringValue6591", argument9 : "stringValue6590") { + inputField153: Scalar2! +} + +input InputObject63 @Directive10(argument10 : "stringValue6607", argument9 : "stringValue6606") { + inputField154: Enum308! + inputField155: [Scalar2!]! +} + +input InputObject64 @Directive10(argument10 : "stringValue6615", argument9 : "stringValue6614") { + inputField156: Enum309! +} + +input InputObject65 @Directive10(argument10 : "stringValue6623", argument9 : "stringValue6622") { + inputField157: Scalar2 +} + +input InputObject66 @Directive10(argument10 : "stringValue6627", argument9 : "stringValue6626") { + inputField158: Boolean +} + +input InputObject67 @Directive10(argument10 : "stringValue6631", argument9 : "stringValue6630") { + inputField159: InputObject68 + inputField163: String + inputField164: String +} + +input InputObject68 @Directive10(argument10 : "stringValue6635", argument9 : "stringValue6634") { + inputField160: Boolean! = true + inputField161: Float! + inputField162: Float! +} + +input InputObject69 @Directive10(argument10 : "stringValue6639", argument9 : "stringValue6638") { + inputField165: [InputObject70!]! = [] + inputField168: Boolean! = false +} + +input InputObject7 @Directive10(argument10 : "stringValue5641", argument9 : "stringValue5640") { + inputField13: Scalar2! +} + +input InputObject70 @Directive10(argument10 : "stringValue6643", argument9 : "stringValue6642") { + inputField166: Scalar2! + inputField167: [Scalar2!]! = [] +} + +input InputObject71 @Directive10(argument10 : "stringValue6647", argument9 : "stringValue6646") { + inputField169: Boolean! = false +} + +input InputObject72 @Directive10(argument10 : "stringValue6651", argument9 : "stringValue6650") { + inputField170: [Scalar2!]! = [] + inputField171: Scalar2! +} + +input InputObject73 @Directive10(argument10 : "stringValue6655", argument9 : "stringValue6654") { + inputField172: Scalar2! +} + +input InputObject74 @Directive10(argument10 : "stringValue6666", argument9 : "stringValue6665") { + inputField173: Scalar3! + inputField174: [String!]! +} + +input InputObject75 @Directive10(argument10 : "stringValue6693", argument9 : "stringValue6692") { + inputField175: String! + inputField176: String +} + +input InputObject76 @Directive10(argument10 : "stringValue6873", argument9 : "stringValue6872") { + inputField177: Enum324! + inputField178: String +} + +input InputObject77 @Directive10(argument10 : "stringValue6941", argument9 : "stringValue6940") { + inputField179: Scalar2! +} + +input InputObject78 @Directive10(argument10 : "stringValue6945", argument9 : "stringValue6944") { + inputField180: String + inputField181: Boolean! = false + inputField182: [Scalar2!] + inputField183: Scalar2 + inputField184: [Scalar2!] + inputField185: Boolean + inputField186: String! +} + +input InputObject79 @Directive10(argument10 : "stringValue7061", argument9 : "stringValue7060") { + inputField187: InputObject80 +} + +input InputObject8 @Directive10(argument10 : "stringValue5659", argument9 : "stringValue5658") { + inputField14: Enum248 + inputField15: Enum249 + inputField16: Enum250 + inputField17: [Enum251!] + inputField18: [Enum252!] + inputField19: String + inputField20: Boolean + inputField21: Enum253 +} + +input InputObject80 @Directive10(argument10 : "stringValue7065", argument9 : "stringValue7064") { + inputField188: String! +} + +input InputObject81 @Directive10(argument10 : "stringValue7387", argument9 : "stringValue7386") { + inputField189: String + inputField190: Scalar2! + inputField191: Scalar2! +} + +input InputObject82 @Directive10(argument10 : "stringValue7395", argument9 : "stringValue7394") { + inputField192: [InputObject83!] + inputField194: InputObject84 + inputField196: [InputObject85!] + inputField199: [InputObject86!] + inputField202: [InputObject87!] + inputField204: [InputObject88!] + inputField207: [InputObject89!] +} + +input InputObject83 @Directive10(argument10 : "stringValue7399", argument9 : "stringValue7398") { + inputField193: Enum359! +} + +input InputObject84 @Directive10(argument10 : "stringValue7407", argument9 : "stringValue7406") { + inputField195: Enum360! +} + +input InputObject85 @Directive10(argument10 : "stringValue7415", argument9 : "stringValue7414") { + inputField197: String! + inputField198: String +} + +input InputObject86 @Directive10(argument10 : "stringValue7419", argument9 : "stringValue7418") { + inputField200: Scalar2! + inputField201: String +} + +input InputObject87 @Directive10(argument10 : "stringValue7423", argument9 : "stringValue7422") { + inputField203: String! +} + +input InputObject88 @Directive10(argument10 : "stringValue7427", argument9 : "stringValue7426") { + inputField205: String! + inputField206: Scalar2! +} + +input InputObject89 @Directive10(argument10 : "stringValue7431", argument9 : "stringValue7430") { + inputField208: Boolean + inputField209: Boolean + inputField210: Scalar2! + inputField211: String +} + +input InputObject9 @Directive10(argument10 : "stringValue5701", argument9 : "stringValue5700") { + inputField22: Boolean + inputField23: Boolean + inputField24: [Enum254!] + inputField25: [Enum255!] +} + +input InputObject90 @Directive10(argument10 : "stringValue7495", argument9 : "stringValue7494") { + inputField212: Enum365! + inputField213: Scalar2! + inputField214: Scalar2 +} + +input InputObject91 @Directive10(argument10 : "stringValue7503", argument9 : "stringValue7502") { + inputField215: Scalar2 + inputField216: Scalar2! + inputField217: Enum366! + inputField218: Scalar2 +} + +input InputObject92 @Directive10(argument10 : "stringValue7601", argument9 : "stringValue7600") { + inputField219: Enum373! + inputField220: String! + inputField221: String! +} + +input InputObject93 @Directive10(argument10 : "stringValue7941", argument9 : "stringValue7940") { + inputField222: Enum390! + inputField223: Scalar2! +} + +input InputObject94 @Directive10(argument10 : "stringValue7955", argument9 : "stringValue7954") { + inputField224: [InputObject95!] + inputField227: Enum391 + inputField228: Enum392! + inputField229: String + inputField230: String + inputField231: Enum393! + inputField232: Enum394 + inputField233: String! + inputField234: Enum395 + inputField235: String + inputField236: String + inputField237: InputObject95! + inputField238: Int + inputField239: String + inputField240: String! + inputField241: String + inputField242: String + inputField243: String + inputField244: Int + inputField245: InputObject96! + inputField249: String! + inputField250: String + inputField251: InputObject97 + inputField255: String + inputField256: String! +} + +input InputObject95 @Directive10(argument10 : "stringValue7959", argument9 : "stringValue7958") { + inputField225: String + inputField226: Scalar2 +} + +input InputObject96 @Directive10(argument10 : "stringValue7983", argument9 : "stringValue7982") { + inputField246: Enum396! + inputField247: Scalar2! + inputField248: Int! +} + +input InputObject97 @Directive10(argument10 : "stringValue7991", argument9 : "stringValue7990") { + inputField252: String + inputField253: String + inputField254: InputObject96! +} + +input InputObject98 @Directive10(argument10 : "stringValue8053", argument9 : "stringValue8052") { + inputField257: Boolean + inputField258: Boolean +} + +input InputObject99 @Directive10(argument10 : "stringValue8071", argument9 : "stringValue8070") { + inputField259: InputObject100 + inputField271: InputObject103 + inputField276: InputObject104 +} diff --git a/src/test/resources/querygenerator/generated-query-for-extra-large-schema-1.graphql b/src/test/resources/querygenerator/generated-query-for-extra-large-schema-1.graphql new file mode 100644 index 0000000000..c307e4fa08 --- /dev/null +++ b/src/test/resources/querygenerator/generated-query-for-extra-large-schema-1.graphql @@ -0,0 +1,3247 @@ +{ + node(id: "issue-id-1") { + ... on JiraIssue { + id + issueId + key + webUrl + fields { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + ... on JiraServiceManagementApprovalField { + JiraServiceManagementApprovalField_id: id + JiraServiceManagementApprovalField_fieldId: fieldId + JiraServiceManagementApprovalField_aliasFieldId: aliasFieldId + JiraServiceManagementApprovalField_type: type + JiraServiceManagementApprovalField_name: name + JiraServiceManagementApprovalField_description: description + JiraServiceManagementApprovalField_activeApproval: activeApproval { + id + name + finalDecision + approvers { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + approver { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + approverDecision + } + cursor + } + } + excludedApprovers { + totalCount + } + canAnswerApproval + decisions { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + approver { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + approverDecision + } + cursor + } + } + createdDate + configurations { + approversConfigurations { + type + fieldName + fieldId + } + condition { + type + value + } + } + status { + id + name + categoryId + } + approverPrincipals { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + ... on JiraServiceManagementGroupApproverPrincipal { + JiraServiceManagementGroupApproverPrincipal_groupId: groupId + JiraServiceManagementGroupApproverPrincipal_name: name + JiraServiceManagementGroupApproverPrincipal_memberCount: memberCount + JiraServiceManagementGroupApproverPrincipal_approvedCount: approvedCount + } + ... on JiraServiceManagementUserApproverPrincipal { + JiraServiceManagementUserApproverPrincipal_user: user { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraServiceManagementUserApproverPrincipal_jiraRest: jiraRest + } + } + cursor + } + } + pendingApprovalCount + approvalState + } + JiraServiceManagementApprovalField_completedApprovals: completedApprovals { + id + name + finalDecision + approvers { + totalCount + } + createdDate + completedDate + status { + id + name + categoryId + } + } + JiraServiceManagementApprovalField_completedApprovalsConnection: completedApprovalsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + name + finalDecision + createdDate + completedDate + } + cursor + } + } + JiraServiceManagementApprovalField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementApprovalField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraSingleGroupPickerField { + JiraSingleGroupPickerField_id: id + JiraSingleGroupPickerField_fieldId: fieldId + JiraSingleGroupPickerField_aliasFieldId: aliasFieldId + JiraSingleGroupPickerField_type: type + JiraSingleGroupPickerField_name: name + JiraSingleGroupPickerField_description: description + JiraSingleGroupPickerField_selectedGroup: selectedGroup { + id + groupId + name + } + JiraSingleGroupPickerField_groups: groups { + totalCount + } + JiraSingleGroupPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSingleGroupPickerField_searchUrl: searchUrl + JiraSingleGroupPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraVotesField { + JiraVotesField_id: id + JiraVotesField_fieldId: fieldId + JiraVotesField_aliasFieldId: aliasFieldId + JiraVotesField_type: type + JiraVotesField_name: name + JiraVotesField_description: description + JiraVotesField_vote: vote { + hasVoted + count + } + JiraVotesField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraVotesField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementDateTimeField { + JiraServiceManagementDateTimeField_id: id + JiraServiceManagementDateTimeField_fieldId: fieldId + JiraServiceManagementDateTimeField_aliasFieldId: aliasFieldId + JiraServiceManagementDateTimeField_type: type + JiraServiceManagementDateTimeField_name: name + JiraServiceManagementDateTimeField_description: description + JiraServiceManagementDateTimeField_dateTime: dateTime + JiraServiceManagementDateTimeField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementDateTimeField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraSingleLineTextField { + JiraSingleLineTextField_id: id + JiraSingleLineTextField_fieldId: fieldId + JiraSingleLineTextField_aliasFieldId: aliasFieldId + JiraSingleLineTextField_type: type + JiraSingleLineTextField_name: name + JiraSingleLineTextField_description: description + JiraSingleLineTextField_text: text + JiraSingleLineTextField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSingleLineTextField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementRespondersField { + JiraServiceManagementRespondersField_id: id + JiraServiceManagementRespondersField_fieldId: fieldId + JiraServiceManagementRespondersField_aliasFieldId: aliasFieldId + JiraServiceManagementRespondersField_type: type + JiraServiceManagementRespondersField_name: name + JiraServiceManagementRespondersField_description: description + JiraServiceManagementRespondersField_responders: responders { + ... on JiraServiceManagementUserResponder { + JiraServiceManagementUserResponder_user: user { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + } + ... on JiraServiceManagementTeamResponder { + JiraServiceManagementTeamResponder_teamId: teamId + JiraServiceManagementTeamResponder_teamName: teamName + } + } + JiraServiceManagementRespondersField_respondersConnection: respondersConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + ... on JiraServiceManagementTeamResponder { + JiraServiceManagementTeamResponder_teamId: teamId + JiraServiceManagementTeamResponder_teamName: teamName + } + } + cursor + } + } + JiraServiceManagementRespondersField_searchUrl: searchUrl + JiraServiceManagementRespondersField_fieldConfig: fieldConfig { + isRequired + isEditable + } + } + ... on JiraPriorityField { + JiraPriorityField_id: id + JiraPriorityField_fieldId: fieldId + JiraPriorityField_aliasFieldId: aliasFieldId + JiraPriorityField_type: type + JiraPriorityField_name: name + JiraPriorityField_description: description + JiraPriorityField_priority: priority { + id + priorityId + name + iconUrl + color + } + JiraPriorityField_priorities: priorities { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + priorityId + name + iconUrl + color + } + cursor + } + } + JiraPriorityField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraPriorityField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraStatusField { + JiraStatusField_id: id + JiraStatusField_fieldId: fieldId + JiraStatusField_aliasFieldId: aliasFieldId + JiraStatusField_type: type + JiraStatusField_name: name + JiraStatusField_description: description + JiraStatusField_status: status { + id + statusId + name + description + statusCategory { + id + statusCategoryId + key + name + colorName + } + } + JiraStatusField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraStatusField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementMultipleSelectUserPickerField { + JiraServiceManagementMultipleSelectUserPickerField_id: id + JiraServiceManagementMultipleSelectUserPickerField_fieldId: fieldId + JiraServiceManagementMultipleSelectUserPickerField_aliasFieldId: aliasFieldId + JiraServiceManagementMultipleSelectUserPickerField_type: type + JiraServiceManagementMultipleSelectUserPickerField_name: name + JiraServiceManagementMultipleSelectUserPickerField_description: description + JiraServiceManagementMultipleSelectUserPickerField_selectedUsers: selectedUsers { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraServiceManagementMultipleSelectUserPickerField_selectedUsersConnection: selectedUsersConnection { + totalCount + } + JiraServiceManagementMultipleSelectUserPickerField_users: users { + totalCount + } + JiraServiceManagementMultipleSelectUserPickerField_searchUrl: searchUrl + JiraServiceManagementMultipleSelectUserPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementMultipleSelectUserPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraOriginalTimeEstimateField { + JiraOriginalTimeEstimateField_id: id + JiraOriginalTimeEstimateField_fieldId: fieldId + JiraOriginalTimeEstimateField_aliasFieldId: aliasFieldId + JiraOriginalTimeEstimateField_type: type + JiraOriginalTimeEstimateField_name: name + JiraOriginalTimeEstimateField_description: description + JiraOriginalTimeEstimateField_originalEstimate: originalEstimate { + timeInSeconds + } + JiraOriginalTimeEstimateField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraOriginalTimeEstimateField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraMultipleSelectField { + JiraMultipleSelectField_id: id + JiraMultipleSelectField_fieldId: fieldId + JiraMultipleSelectField_aliasFieldId: aliasFieldId + JiraMultipleSelectField_type: type + JiraMultipleSelectField_name: name + JiraMultipleSelectField_description: description + JiraMultipleSelectField_selectedFieldOptions: selectedFieldOptions { + id + optionId + value + isDisabled + } + JiraMultipleSelectField_selectedOptions: selectedOptions { + totalCount + } + JiraMultipleSelectField_fieldOptions: fieldOptions { + totalCount + } + JiraMultipleSelectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraMultipleSelectField_searchUrl: searchUrl + JiraMultipleSelectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraDatePickerField { + JiraDatePickerField_id: id + JiraDatePickerField_fieldId: fieldId + JiraDatePickerField_aliasFieldId: aliasFieldId + JiraDatePickerField_type: type + JiraDatePickerField_name: name + JiraDatePickerField_description: description + JiraDatePickerField_date: date + JiraDatePickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraDatePickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraNumberField { + JiraNumberField_id: id + JiraNumberField_fieldId: fieldId + JiraNumberField_aliasFieldId: aliasFieldId + JiraNumberField_type: type + JiraNumberField_name: name + JiraNumberField_description: description + JiraNumberField_number: number + JiraNumberField_isStoryPointField: isStoryPointField + } + ... on JiraTeamField { + JiraTeamField_id: id + JiraTeamField_fieldId: fieldId + JiraTeamField_aliasFieldId: aliasFieldId + JiraTeamField_type: type + JiraTeamField_name: name + JiraTeamField_description: description + JiraTeamField_selectedTeam: selectedTeam { + id + teamId + name + description + avatar { + xsmall + small + medium + large + } + members { + totalCount + } + isShared + } + JiraTeamField_teams: teams { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + teamId + name + description + isShared + } + cursor + } + } + JiraTeamField_searchUrl: searchUrl + JiraTeamField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraTeamField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeUsersField { + JiraForgeUsersField_id: id + JiraForgeUsersField_fieldId: fieldId + JiraForgeUsersField_aliasFieldId: aliasFieldId + JiraForgeUsersField_type: type + JiraForgeUsersField_name: name + JiraForgeUsersField_description: description + JiraForgeUsersField_selectedUsers: selectedUsers { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraForgeUsersField_selectedUsersConnection: selectedUsersConnection { + totalCount + } + JiraForgeUsersField_users: users { + totalCount + } + JiraForgeUsersField_searchUrl: searchUrl + JiraForgeUsersField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeUsersField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeUsersField_renderer: renderer + } + ... on JiraConnectRichTextField { + JiraConnectRichTextField_id: id + JiraConnectRichTextField_fieldId: fieldId + JiraConnectRichTextField_aliasFieldId: aliasFieldId + JiraConnectRichTextField_type: type + JiraConnectRichTextField_name: name + JiraConnectRichTextField_description: description + JiraConnectRichTextField_richText: richText { + adfValue { + json + } + plainText + wikiValue + } + JiraConnectRichTextField_renderer: renderer + JiraConnectRichTextField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraConnectRichTextField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementRequestLanguageField { + JiraServiceManagementRequestLanguageField_id: id + JiraServiceManagementRequestLanguageField_fieldId: fieldId + JiraServiceManagementRequestLanguageField_aliasFieldId: aliasFieldId + JiraServiceManagementRequestLanguageField_type: type + JiraServiceManagementRequestLanguageField_name: name + JiraServiceManagementRequestLanguageField_description: description + JiraServiceManagementRequestLanguageField_language: language { + languageCode + displayName + } + JiraServiceManagementRequestLanguageField_languages: languages { + languageCode + displayName + } + JiraServiceManagementRequestLanguageField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementRequestLanguageField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraConnectTextField { + JiraConnectTextField_id: id + JiraConnectTextField_fieldId: fieldId + JiraConnectTextField_aliasFieldId: aliasFieldId + JiraConnectTextField_type: type + JiraConnectTextField_name: name + JiraConnectTextField_description: description + JiraConnectTextField_text: text + JiraConnectTextField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraConnectTextField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraTimeTrackingField { + JiraTimeTrackingField_id: id + JiraTimeTrackingField_fieldId: fieldId + JiraTimeTrackingField_aliasFieldId: aliasFieldId + JiraTimeTrackingField_type: type + JiraTimeTrackingField_name: name + JiraTimeTrackingField_description: description + JiraTimeTrackingField_originalEstimate: originalEstimate { + timeInSeconds + } + JiraTimeTrackingField_remainingEstimate: remainingEstimate { + timeInSeconds + } + JiraTimeTrackingField_timeSpent: timeSpent { + timeInSeconds + } + JiraTimeTrackingField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraTimeTrackingField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraTimeTrackingField_timeTrackingSettings: timeTrackingSettings { + isJiraConfiguredTimeTrackingEnabled + workingHoursPerDay + workingDaysPerWeek + defaultFormat + defaultUnit + } + } + ... on JiraCascadingSelectField { + JiraCascadingSelectField_id: id + JiraCascadingSelectField_fieldId: fieldId + JiraCascadingSelectField_aliasFieldId: aliasFieldId + JiraCascadingSelectField_type: type + JiraCascadingSelectField_name: name + JiraCascadingSelectField_description: description + JiraCascadingSelectField_cascadingOption: cascadingOption { + parentOptionValue { + id + optionId + value + isDisabled + } + childOptionValue { + id + optionId + value + isDisabled + } + } + JiraCascadingSelectField_cascadingOptions: cascadingOptions { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + parentOptionValue { + id + optionId + value + isDisabled + } + childOptionValues { + id + optionId + value + isDisabled + } + } + cursor + } + } + JiraCascadingSelectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraCascadingSelectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraAssetField { + JiraAssetField_id: id + JiraAssetField_fieldId: fieldId + JiraAssetField_aliasFieldId: aliasFieldId + JiraAssetField_type: type + JiraAssetField_name: name + JiraAssetField_description: description + JiraAssetField_selectedAssets: selectedAssets { + appKey + originId + serializedOrigin + value + } + JiraAssetField_selectedAssetsConnection: selectedAssetsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + appKey + originId + serializedOrigin + value + } + cursor + } + } + JiraAssetField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraAssetField_searchUrl: searchUrl + JiraAssetField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraConnectMultipleSelectField { + JiraConnectMultipleSelectField_id: id + JiraConnectMultipleSelectField_fieldId: fieldId + JiraConnectMultipleSelectField_aliasFieldId: aliasFieldId + JiraConnectMultipleSelectField_type: type + JiraConnectMultipleSelectField_name: name + JiraConnectMultipleSelectField_description: description + JiraConnectMultipleSelectField_selectedFieldOptions: selectedFieldOptions { + id + optionId + value + isDisabled + } + JiraConnectMultipleSelectField_selectedOptions: selectedOptions { + totalCount + } + JiraConnectMultipleSelectField_fieldOptions: fieldOptions { + totalCount + } + JiraConnectMultipleSelectField_searchUrl: searchUrl + JiraConnectMultipleSelectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraConnectMultipleSelectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraIssueLinkField { + JiraIssueLinkField_id: id + JiraIssueLinkField_fieldId: fieldId + JiraIssueLinkField_aliasFieldId: aliasFieldId + JiraIssueLinkField_type: type + JiraIssueLinkField_name: name + JiraIssueLinkField_description: description + JiraIssueLinkField_issueLinks: issueLinks { + id + issueLinkId + } + JiraIssueLinkField_issueLinkConnection: issueLinkConnection { + totalCount + } + JiraIssueLinkField_issueLinkTypeRelations: issueLinkTypeRelations { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + relationName + linkTypeId + linkTypeName + direction + } + cursor + } + } + JiraIssueLinkField_issues: issues { + totalCount + jql + totalIssueSearchResultCount + isCappingIssueSearchResult + } + JiraIssueLinkField_searchUrl: searchUrl + JiraIssueLinkField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraIssueLinkField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraSingleSelectField { + JiraSingleSelectField_id: id + JiraSingleSelectField_fieldId: fieldId + JiraSingleSelectField_aliasFieldId: aliasFieldId + JiraSingleSelectField_type: type + JiraSingleSelectField_name: name + JiraSingleSelectField_description: description + JiraSingleSelectField_fieldOption: fieldOption { + id + optionId + value + isDisabled + } + JiraSingleSelectField_fieldOptions: fieldOptions { + totalCount + } + JiraSingleSelectField_searchUrl: searchUrl + JiraSingleSelectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSingleSelectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraResolutionField { + JiraResolutionField_id: id + JiraResolutionField_fieldId: fieldId + JiraResolutionField_aliasFieldId: aliasFieldId + JiraResolutionField_type: type + JiraResolutionField_name: name + JiraResolutionField_description: description + JiraResolutionField_resolution: resolution { + id + resolutionId + name + description + } + JiraResolutionField_resolutions: resolutions { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + resolutionId + name + description + } + cursor + } + } + JiraResolutionField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraResolutionField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeNumberField { + JiraForgeNumberField_id: id + JiraForgeNumberField_fieldId: fieldId + JiraForgeNumberField_aliasFieldId: aliasFieldId + JiraForgeNumberField_type: type + JiraForgeNumberField_name: name + JiraForgeNumberField_description: description + JiraForgeNumberField_number: number + JiraForgeNumberField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeNumberField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeNumberField_renderer: renderer + } + ... on JiraConnectNumberField { + JiraConnectNumberField_id: id + JiraConnectNumberField_fieldId: fieldId + JiraConnectNumberField_aliasFieldId: aliasFieldId + JiraConnectNumberField_type: type + JiraConnectNumberField_name: name + JiraConnectNumberField_description: description + JiraConnectNumberField_number: number + JiraConnectNumberField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraConnectNumberField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementPeopleField { + JiraServiceManagementPeopleField_id: id + JiraServiceManagementPeopleField_fieldId: fieldId + JiraServiceManagementPeopleField_aliasFieldId: aliasFieldId + JiraServiceManagementPeopleField_type: type + JiraServiceManagementPeopleField_name: name + JiraServiceManagementPeopleField_description: description + JiraServiceManagementPeopleField_selectedUsers: selectedUsers { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraServiceManagementPeopleField_selectedUsersConnection: selectedUsersConnection { + totalCount + } + JiraServiceManagementPeopleField_isMulti: isMulti + JiraServiceManagementPeopleField_users: users { + totalCount + } + JiraServiceManagementPeopleField_searchUrl: searchUrl + JiraServiceManagementPeopleField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementPeopleField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraIssueTypeField { + JiraIssueTypeField_id: id + JiraIssueTypeField_fieldId: fieldId + JiraIssueTypeField_aliasFieldId: aliasFieldId + JiraIssueTypeField_type: type + JiraIssueTypeField_name: name + JiraIssueTypeField_description: description + JiraIssueTypeField_issueType: issueType { + id + issueTypeId + name + description + } + JiraIssueTypeField_issueTypes: issueTypes { + totalCount + } + JiraIssueTypeField_fieldConfig: fieldConfig { + isRequired + isEditable + } + } + ... on JiraIssueRestrictionField { + JiraIssueRestrictionField_id: id + JiraIssueRestrictionField_fieldId: fieldId + JiraIssueRestrictionField_aliasFieldId: aliasFieldId + JiraIssueRestrictionField_type: type + JiraIssueRestrictionField_name: name + JiraIssueRestrictionField_description: description + JiraIssueRestrictionField_selectedRoles: selectedRoles { + id + roleId + name + description + } + JiraIssueRestrictionField_selectedRolesConnection: selectedRolesConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + roleId + name + description + } + cursor + } + } + JiraIssueRestrictionField_roles: roles { + totalCount + } + JiraIssueRestrictionField_searchUrl: searchUrl + JiraIssueRestrictionField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraIssueRestrictionField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraColorField { + JiraColorField_id: id + JiraColorField_fieldId: fieldId + JiraColorField_aliasFieldId: aliasFieldId + JiraColorField_type: type + JiraColorField_name: name + JiraColorField_description: description + JiraColorField_color: color { + id + colorKey + } + JiraColorField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraColorField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraTeamViewField { + JiraTeamViewField_id: id + JiraTeamViewField_fieldId: fieldId + JiraTeamViewField_aliasFieldId: aliasFieldId + JiraTeamViewField_type: type + JiraTeamViewField_name: name + JiraTeamViewField_description: description + JiraTeamViewField_selectedTeam: selectedTeam { + jiraSuppliedId + jiraSuppliedTeamId + jiraSuppliedVisibility + jiraSuppliedName + jiraSuppliedAvatar { + xsmall + small + medium + large + } + } + JiraTeamViewField_searchUrl: searchUrl + JiraTeamViewField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraTeamViewField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraBooleanField { + JiraBooleanField_id: id + JiraBooleanField_fieldId: fieldId + JiraBooleanField_aliasFieldId: aliasFieldId + JiraBooleanField_type: type + JiraBooleanField_name: name + JiraBooleanField_description: description + JiraBooleanField_value: value + JiraBooleanField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraBooleanField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementRequestFeedbackField { + JiraServiceManagementRequestFeedbackField_id: id + JiraServiceManagementRequestFeedbackField_fieldId: fieldId + JiraServiceManagementRequestFeedbackField_aliasFieldId: aliasFieldId + JiraServiceManagementRequestFeedbackField_type: type + JiraServiceManagementRequestFeedbackField_name: name + JiraServiceManagementRequestFeedbackField_description: description + JiraServiceManagementRequestFeedbackField_feedback: feedback { + rating + } + JiraServiceManagementRequestFeedbackField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementRequestFeedbackField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraLabelsField { + JiraLabelsField_id: id + JiraLabelsField_fieldId: fieldId + JiraLabelsField_aliasFieldId: aliasFieldId + JiraLabelsField_type: type + JiraLabelsField_name: name + JiraLabelsField_description: description + JiraLabelsField_selectedLabels: selectedLabels { + labelId + name + } + JiraLabelsField_selectedLabelsConnection: selectedLabelsConnection { + totalCount + } + JiraLabelsField_labels: labels { + totalCount + } + JiraLabelsField_searchUrl: searchUrl + JiraLabelsField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraLabelsField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraProjectField { + JiraProjectField_id: id + JiraProjectField_fieldId: fieldId + JiraProjectField_aliasFieldId: aliasFieldId + JiraProjectField_type: type + JiraProjectField_name: name + JiraProjectField_description: description + JiraProjectField_project: project { + id + key + projectId + name + cloudId + description + leadId + category { + id + name + description + } + avatar { + xsmall + small + medium + large + } + projectUrl + projectType + projectStyle + status + similarIssues { + featureEnabled + } + canSetIssueRestriction + navigationMetadata { + ... on JiraSoftwareProjectNavigationMetadata { + JiraSoftwareProjectNavigationMetadata_id: id + JiraSoftwareProjectNavigationMetadata_boardId: boardId + JiraSoftwareProjectNavigationMetadata_boardName: boardName + JiraSoftwareProjectNavigationMetadata_isSimpleBoard: isSimpleBoard + } + ... on JiraWorkManagementProjectNavigationMetadata { + JiraWorkManagementProjectNavigationMetadata_boardName: boardName + } + ... on JiraServiceManagementProjectNavigationMetadata { + JiraServiceManagementProjectNavigationMetadata_queueId: queueId + JiraServiceManagementProjectNavigationMetadata_queueName: queueName + } + } + } + JiraProjectField_projects: projects { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + key + projectId + name + cloudId + description + leadId + projectUrl + projectType + projectStyle + status + canSetIssueRestriction + } + cursor + } + } + JiraProjectField_searchUrl: searchUrl + JiraProjectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraProjectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraMultipleGroupPickerField { + JiraMultipleGroupPickerField_id: id + JiraMultipleGroupPickerField_fieldId: fieldId + JiraMultipleGroupPickerField_aliasFieldId: aliasFieldId + JiraMultipleGroupPickerField_type: type + JiraMultipleGroupPickerField_name: name + JiraMultipleGroupPickerField_description: description + JiraMultipleGroupPickerField_selectedGroups: selectedGroups { + id + groupId + name + } + JiraMultipleGroupPickerField_selectedGroupsConnection: selectedGroupsConnection { + totalCount + } + JiraMultipleGroupPickerField_groups: groups { + totalCount + } + JiraMultipleGroupPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraMultipleGroupPickerField_searchUrl: searchUrl + JiraMultipleGroupPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraProformaFormsField { + JiraProformaFormsField_id: id + JiraProformaFormsField_fieldId: fieldId + JiraProformaFormsField_aliasFieldId: aliasFieldId + JiraProformaFormsField_type: type + JiraProformaFormsField_name: name + JiraProformaFormsField_description: description + JiraProformaFormsField_proformaForms: proformaForms { + hasProjectForms + hasIssueForms + } + JiraProformaFormsField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraProformaFormsField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraCMDBField { + JiraCMDBField_id: id + JiraCMDBField_fieldId: fieldId + JiraCMDBField_aliasFieldId: aliasFieldId + JiraCMDBField_type: type + JiraCMDBField_name: name + JiraCMDBField_description: description + JiraCMDBField_isMulti: isMulti + JiraCMDBField_searchUrl: searchUrl + JiraCMDBField_selectedCmdbObjects: selectedCmdbObjects { + id + objectGlobalId + objectId + workspaceId + label + objectKey + avatar { + id + avatarUUID + url16 + url48 + url72 + url144 + url288 + mediaClientConfig { + clientId + issuer + fileId + mediaBaseUrl + mediaJwtToken + } + } + objectType { + objectTypeId + name + description + icon { + id + name + url16 + url48 + } + objectSchemaId + } + attributes { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + attributeId + objectTypeAttributeId + objectTypeAttribute { + name + label + type + description + objectType { + objectTypeId + name + description + objectSchemaId + } + defaultType { + id + name + } + referenceType { + id + name + description + color + webUrl + objectSchemaId + } + referenceObjectTypeId + referenceObjectType { + objectTypeId + name + description + objectSchemaId + } + additionalValue + suffix + } + objectAttributeValues { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + referencedObject { + id + objectGlobalId + objectId + workspaceId + label + objectKey + webUrl + } + user { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + group { + id + groupId + name + } + status { + id + name + description + category + objectSchemaId + } + value + displayValue + searchValue + additionalValue + } + cursor + } + } + } + cursor + } + } + webUrl + } + JiraCMDBField_selectedCmdbObjectsConnection: selectedCmdbObjectsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + objectGlobalId + objectId + workspaceId + label + objectKey + webUrl + } + cursor + } + } + JiraCMDBField_wasInsightRequestSuccessful: wasInsightRequestSuccessful + JiraCMDBField_isInsightAvailable: isInsightAvailable + JiraCMDBField_cmdbFieldConfig: cmdbFieldConfig { + objectSchemaId + objectFilterQuery + issueScopeFilterQuery + multiple + attributesDisplayedOnIssue { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node + cursor + } + } + attributesIncludedInAutoCompleteSearch { + totalCount + } + } + JiraCMDBField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraCMDBField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraCMDBField_attributesIncludedInAutoCompleteSearch: attributesIncludedInAutoCompleteSearch + } + ... on JiraSingleVersionPickerField { + JiraSingleVersionPickerField_id: id + JiraSingleVersionPickerField_fieldId: fieldId + JiraSingleVersionPickerField_aliasFieldId: aliasFieldId + JiraSingleVersionPickerField_type: type + JiraSingleVersionPickerField_name: name + JiraSingleVersionPickerField_description: description + JiraSingleVersionPickerField_version: version { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + suggestedRelatedWorkCategories + canEdit + } + JiraSingleVersionPickerField_versions: versions { + totalCount + } + JiraSingleVersionPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSingleVersionPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraMultipleVersionPickerField { + JiraMultipleVersionPickerField_id: id + JiraMultipleVersionPickerField_fieldId: fieldId + JiraMultipleVersionPickerField_aliasFieldId: aliasFieldId + JiraMultipleVersionPickerField_type: type + JiraMultipleVersionPickerField_name: name + JiraMultipleVersionPickerField_description: description + JiraMultipleVersionPickerField_selectedVersions: selectedVersions { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + warningConfig { + openPullRequest + openReview + unreviewedCode + failingBuild + canEdit + } + connectAddonIframeData { + appKey + moduleKey + appName + location + options + } + issues { + totalCount + jql + totalIssueSearchResultCount + isCappingIssueSearchResult + } + relatedWork { + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + cursor + node { + relatedWorkId + url + title + category + addedOn + addedById + } + } + } + suggestedRelatedWorkCategories + canEdit + } + JiraMultipleVersionPickerField_selectedVersionsConnection: selectedVersionsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + versionId + name + iconUrl + status + description + startDate + releaseDate + suggestedRelatedWorkCategories + canEdit + } + cursor + } + } + JiraMultipleVersionPickerField_versions: versions { + totalCount + } + JiraMultipleVersionPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraMultipleVersionPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeGroupField { + JiraForgeGroupField_id: id + JiraForgeGroupField_fieldId: fieldId + JiraForgeGroupField_aliasFieldId: aliasFieldId + JiraForgeGroupField_type: type + JiraForgeGroupField_name: name + JiraForgeGroupField_description: description + JiraForgeGroupField_selectedGroup: selectedGroup { + id + groupId + name + } + JiraForgeGroupField_groups: groups { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + groupId + name + } + cursor + } + } + JiraForgeGroupField_searchUrl: searchUrl + JiraForgeGroupField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeGroupField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeGroupField_renderer: renderer + } + ... on JiraForgeGroupsField { + JiraForgeGroupsField_id: id + JiraForgeGroupsField_fieldId: fieldId + JiraForgeGroupsField_aliasFieldId: aliasFieldId + JiraForgeGroupsField_type: type + JiraForgeGroupsField_name: name + JiraForgeGroupsField_description: description + JiraForgeGroupsField_selectedGroups: selectedGroups { + id + groupId + name + } + JiraForgeGroupsField_selectedGroupsConnection: selectedGroupsConnection { + totalCount + } + JiraForgeGroupsField_groups: groups { + totalCount + } + JiraForgeGroupsField_searchUrl: searchUrl + JiraForgeGroupsField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeGroupsField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeGroupsField_renderer: renderer + } + ... on JiraWatchesField { + JiraWatchesField_id: id + JiraWatchesField_fieldId: fieldId + JiraWatchesField_aliasFieldId: aliasFieldId + JiraWatchesField_type: type + JiraWatchesField_name: name + JiraWatchesField_description: description + JiraWatchesField_watch: watch { + isWatching + count + } + JiraWatchesField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraWatchesField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraAtlassianTeamField { + JiraAtlassianTeamField_id: id + JiraAtlassianTeamField_fieldId: fieldId + JiraAtlassianTeamField_aliasFieldId: aliasFieldId + JiraAtlassianTeamField_type: type + JiraAtlassianTeamField_name: name + JiraAtlassianTeamField_description: description + JiraAtlassianTeamField_selectedTeam: selectedTeam { + teamId + name + avatar { + xsmall + small + medium + large + } + } + JiraAtlassianTeamField_teams: teams { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + teamId + name + } + cursor + } + } + JiraAtlassianTeamField_searchUrl: searchUrl + JiraAtlassianTeamField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraAtlassianTeamField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraSprintField { + JiraSprintField_id: id + JiraSprintField_fieldId: fieldId + JiraSprintField_aliasFieldId: aliasFieldId + JiraSprintField_type: type + JiraSprintField_name: name + JiraSprintField_description: description + JiraSprintField_selectedSprints: selectedSprints { + id + sprintId + name + state + boardName + startDate + endDate + completionDate + goal + } + JiraSprintField_selectedSprintsConnection: selectedSprintsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + sprintId + name + state + boardName + startDate + endDate + completionDate + goal + } + cursor + } + } + JiraSprintField_sprints: sprints { + totalCount + } + JiraSprintField_searchUrl: searchUrl + JiraSprintField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSprintField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraSecurityLevelField { + JiraSecurityLevelField_id: id + JiraSecurityLevelField_fieldId: fieldId + JiraSecurityLevelField_aliasFieldId: aliasFieldId + JiraSecurityLevelField_type: type + JiraSecurityLevelField_name: name + JiraSecurityLevelField_description: description + JiraSecurityLevelField_securityLevel: securityLevel { + id + securityId + name + description + } + JiraSecurityLevelField_securityLevels: securityLevels { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + securityId + name + description + } + cursor + } + } + JiraSecurityLevelField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSecurityLevelField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraPeopleField { + JiraPeopleField_id: id + JiraPeopleField_fieldId: fieldId + JiraPeopleField_aliasFieldId: aliasFieldId + JiraPeopleField_type: type + JiraPeopleField_name: name + JiraPeopleField_description: description + JiraPeopleField_selectedUsers: selectedUsers { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraPeopleField_selectedUsersConnection: selectedUsersConnection { + totalCount + } + JiraPeopleField_isMulti: isMulti + JiraPeopleField_users: users { + totalCount + } + JiraPeopleField_searchUrl: searchUrl + JiraPeopleField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraPeopleField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeDatetimeField { + JiraForgeDatetimeField_id: id + JiraForgeDatetimeField_fieldId: fieldId + JiraForgeDatetimeField_aliasFieldId: aliasFieldId + JiraForgeDatetimeField_type: type + JiraForgeDatetimeField_name: name + JiraForgeDatetimeField_description: description + JiraForgeDatetimeField_dateTime: dateTime + JiraForgeDatetimeField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeDatetimeField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeDatetimeField_renderer: renderer + } + ... on JiraServiceManagementRequestTypeField { + JiraServiceManagementRequestTypeField_id: id + JiraServiceManagementRequestTypeField_fieldId: fieldId + JiraServiceManagementRequestTypeField_aliasFieldId: aliasFieldId + JiraServiceManagementRequestTypeField_type: type + JiraServiceManagementRequestTypeField_name: name + JiraServiceManagementRequestTypeField_description: description + JiraServiceManagementRequestTypeField_requestType: requestType { + id + requestTypeId + name + key + description + helpText + issueType { + id + issueTypeId + name + description + } + portalId + avatar { + xsmall + small + medium + large + } + practices { + key + } + } + JiraServiceManagementRequestTypeField_requestTypes: requestTypes { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + requestTypeId + name + key + description + helpText + portalId + } + cursor + } + } + JiraServiceManagementRequestTypeField_fieldConfig: fieldConfig { + isRequired + isEditable + } + } + ... on JiraEpicLinkField { + JiraEpicLinkField_id: id + JiraEpicLinkField_fieldId: fieldId + JiraEpicLinkField_aliasFieldId: aliasFieldId + JiraEpicLinkField_type: type + JiraEpicLinkField_name: name + JiraEpicLinkField_description: description + JiraEpicLinkField_epic: epic { + id + issueId + name + key + summary + color + done + } + JiraEpicLinkField_epics: epics { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + issueId + name + key + summary + color + done + } + cursor + } + } + JiraEpicLinkField_searchUrl: searchUrl + JiraEpicLinkField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraEpicLinkField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraRadioSelectField { + JiraRadioSelectField_id: id + JiraRadioSelectField_fieldId: fieldId + JiraRadioSelectField_aliasFieldId: aliasFieldId + JiraRadioSelectField_type: type + JiraRadioSelectField_name: name + JiraRadioSelectField_description: description + JiraRadioSelectField_selectedOption: selectedOption { + id + optionId + value + isDisabled + } + JiraRadioSelectField_fieldOptions: fieldOptions { + totalCount + } + JiraRadioSelectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraRadioSelectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraAttachmentsField { + JiraAttachmentsField_id: id + JiraAttachmentsField_fieldId: fieldId + JiraAttachmentsField_aliasFieldId: aliasFieldId + JiraAttachmentsField_type: type + JiraAttachmentsField_name: name + JiraAttachmentsField_description: description + JiraAttachmentsField_permissions: permissions + JiraAttachmentsField_attachments: attachments { + indicativeCount + } + JiraAttachmentsField_maxAllowedTotalAttachmentsSize: maxAllowedTotalAttachmentsSize + JiraAttachmentsField_mediaContext: mediaContext { + uploadToken { + ... on JiraMediaUploadToken { + JiraMediaUploadToken_endpointUrl: endpointUrl + JiraMediaUploadToken_clientId: clientId + JiraMediaUploadToken_targetCollection: targetCollection + JiraMediaUploadToken_token: token + JiraMediaUploadToken_tokenDurationInMin: tokenDurationInMin + } + ... on QueryError { + QueryError_identifier: identifier + QueryError_message: message + QueryError_extensions: extensions { + ... on GenericQueryErrorExtension { + GenericQueryErrorExtension_statusCode: statusCode + GenericQueryErrorExtension_errorType: errorType + } + } + } + } + } + JiraAttachmentsField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraAttachmentsField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraParentIssueField { + JiraParentIssueField_id: id + JiraParentIssueField_fieldId: fieldId + JiraParentIssueField_aliasFieldId: aliasFieldId + JiraParentIssueField_type: type + JiraParentIssueField_name: name + JiraParentIssueField_description: description + JiraParentIssueField_parentIssue: parentIssue { + id + issueId + key + webUrl + errorRetrievingData + screenId + } + JiraParentIssueField_parentVisibility: parentVisibility { + hasEpicLinkFieldDependency + canUseParentLinkField + } + JiraParentIssueField_searchUrl: searchUrl + JiraParentIssueField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraParentIssueField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeStringsField { + JiraForgeStringsField_id: id + JiraForgeStringsField_fieldId: fieldId + JiraForgeStringsField_aliasFieldId: aliasFieldId + JiraForgeStringsField_type: type + JiraForgeStringsField_name: name + JiraForgeStringsField_description: description + JiraForgeStringsField_selectedLabels: selectedLabels { + labelId + name + } + JiraForgeStringsField_selectedLabelsConnection: selectedLabelsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + labelId + name + } + cursor + } + } + JiraForgeStringsField_labels: labels { + totalCount + } + JiraForgeStringsField_searchUrl: searchUrl + JiraForgeStringsField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeStringsField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeStringsField_renderer: renderer + } + ... on JiraConnectSingleSelectField { + JiraConnectSingleSelectField_id: id + JiraConnectSingleSelectField_fieldId: fieldId + JiraConnectSingleSelectField_aliasFieldId: aliasFieldId + JiraConnectSingleSelectField_type: type + JiraConnectSingleSelectField_name: name + JiraConnectSingleSelectField_description: description + JiraConnectSingleSelectField_fieldOption: fieldOption { + id + optionId + value + isDisabled + } + JiraConnectSingleSelectField_fieldOptions: fieldOptions { + totalCount + } + JiraConnectSingleSelectField_searchUrl: searchUrl + JiraConnectSingleSelectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraConnectSingleSelectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraWorkCategoryField { + JiraWorkCategoryField_id: id + JiraWorkCategoryField_fieldId: fieldId + JiraWorkCategoryField_aliasFieldId: aliasFieldId + JiraWorkCategoryField_type: type + JiraWorkCategoryField_name: name + JiraWorkCategoryField_description: description + JiraWorkCategoryField_workCategory: workCategory { + value + } + JiraWorkCategoryField_fieldConfig: fieldConfig { + isRequired + isEditable + } + } + ... on JiraUrlField { + JiraUrlField_id: id + JiraUrlField_fieldId: fieldId + JiraUrlField_aliasFieldId: aliasFieldId + JiraUrlField_type: type + JiraUrlField_name: name + JiraUrlField_description: description + JiraUrlField_url: url + JiraUrlField_urlValue: urlValue + JiraUrlField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraUrlField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraAffectedServicesField { + JiraAffectedServicesField_id: id + JiraAffectedServicesField_fieldId: fieldId + JiraAffectedServicesField_aliasFieldId: aliasFieldId + JiraAffectedServicesField_type: type + JiraAffectedServicesField_name: name + JiraAffectedServicesField_description: description + JiraAffectedServicesField_selectedAffectedServices: selectedAffectedServices { + serviceId + name + } + JiraAffectedServicesField_selectedAffectedServicesConnection: selectedAffectedServicesConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + serviceId + name + } + cursor + } + } + JiraAffectedServicesField_affectedServices: affectedServices { + totalCount + } + JiraAffectedServicesField_searchUrl: searchUrl + JiraAffectedServicesField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraAffectedServicesField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraDateTimePickerField { + JiraDateTimePickerField_id: id + JiraDateTimePickerField_fieldId: fieldId + JiraDateTimePickerField_aliasFieldId: aliasFieldId + JiraDateTimePickerField_type: type + JiraDateTimePickerField_name: name + JiraDateTimePickerField_description: description + JiraDateTimePickerField_dateTime: dateTime + JiraDateTimePickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraDateTimePickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraSubtasksField { + JiraSubtasksField_id: id + JiraSubtasksField_fieldId: fieldId + JiraSubtasksField_aliasFieldId: aliasFieldId + JiraSubtasksField_type: type + JiraSubtasksField_name: name + JiraSubtasksField_description: description + JiraSubtasksField_subtasks: subtasks { + totalCount + jql + totalIssueSearchResultCount + isCappingIssueSearchResult + } + JiraSubtasksField_fieldConfig: fieldConfig { + isRequired + isEditable + } + } + ... on JiraStatusCategoryField { + JiraStatusCategoryField_id: id + JiraStatusCategoryField_fieldId: fieldId + JiraStatusCategoryField_aliasFieldId: aliasFieldId + JiraStatusCategoryField_type: type + JiraStatusCategoryField_name: name + JiraStatusCategoryField_description: description + JiraStatusCategoryField_statusCategory: statusCategory { + id + statusCategoryId + key + name + colorName + } + JiraStatusCategoryField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraStatusCategoryField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementMajorIncidentField { + JiraServiceManagementMajorIncidentField_id: id + JiraServiceManagementMajorIncidentField_fieldId: fieldId + JiraServiceManagementMajorIncidentField_aliasFieldId: aliasFieldId + JiraServiceManagementMajorIncidentField_type: type + JiraServiceManagementMajorIncidentField_name: name + JiraServiceManagementMajorIncidentField_description: description + JiraServiceManagementMajorIncidentField_majorIncident: majorIncident + JiraServiceManagementMajorIncidentField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementMajorIncidentField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraRichTextField { + JiraRichTextField_id: id + JiraRichTextField_fieldId: fieldId + JiraRichTextField_aliasFieldId: aliasFieldId + JiraRichTextField_type: type + JiraRichTextField_name: name + JiraRichTextField_description: description + JiraRichTextField_richText: richText { + plainText + wikiValue + } + JiraRichTextField_renderer: renderer + JiraRichTextField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraRichTextField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeStringField { + JiraForgeStringField_id: id + JiraForgeStringField_fieldId: fieldId + JiraForgeStringField_aliasFieldId: aliasFieldId + JiraForgeStringField_type: type + JiraForgeStringField_name: name + JiraForgeStringField_description: description + JiraForgeStringField_text: text + JiraForgeStringField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeStringField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeStringField_renderer: renderer + } + ... on JiraSingleSelectUserPickerField { + JiraSingleSelectUserPickerField_id: id + JiraSingleSelectUserPickerField_fieldId: fieldId + JiraSingleSelectUserPickerField_aliasFieldId: aliasFieldId + JiraSingleSelectUserPickerField_type: type + JiraSingleSelectUserPickerField_name: name + JiraSingleSelectUserPickerField_description: description + JiraSingleSelectUserPickerField_user: user { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraSingleSelectUserPickerField_users: users { + totalCount + } + JiraSingleSelectUserPickerField_searchUrl: searchUrl + JiraSingleSelectUserPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraSingleSelectUserPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraMultipleSelectUserPickerField { + JiraMultipleSelectUserPickerField_id: id + JiraMultipleSelectUserPickerField_fieldId: fieldId + JiraMultipleSelectUserPickerField_aliasFieldId: aliasFieldId + JiraMultipleSelectUserPickerField_type: type + JiraMultipleSelectUserPickerField_name: name + JiraMultipleSelectUserPickerField_description: description + JiraMultipleSelectUserPickerField_selectedUsers: selectedUsers { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraMultipleSelectUserPickerField_selectedUsersConnection: selectedUsersConnection { + totalCount + } + JiraMultipleSelectUserPickerField_users: users { + totalCount + } + JiraMultipleSelectUserPickerField_searchUrl: searchUrl + JiraMultipleSelectUserPickerField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraMultipleSelectUserPickerField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraFlagField { + JiraFlagField_id: id + JiraFlagField_fieldId: fieldId + JiraFlagField_aliasFieldId: aliasFieldId + JiraFlagField_type: type + JiraFlagField_name: name + JiraFlagField_description: description + JiraFlagField_flag: flag { + isFlagged + } + JiraFlagField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraFlagField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraDevSummaryField { + JiraDevSummaryField_id: id + JiraDevSummaryField_fieldId: fieldId + JiraDevSummaryField_aliasFieldId: aliasFieldId + JiraDevSummaryField_type: type + JiraDevSummaryField_name: name + JiraDevSummaryField_description: description + } + ... on JiraServiceManagementIncidentLinkingField { + JiraServiceManagementIncidentLinkingField_id: id + JiraServiceManagementIncidentLinkingField_fieldId: fieldId + JiraServiceManagementIncidentLinkingField_aliasFieldId: aliasFieldId + JiraServiceManagementIncidentLinkingField_type: type + JiraServiceManagementIncidentLinkingField_name: name + JiraServiceManagementIncidentLinkingField_description: description + JiraServiceManagementIncidentLinkingField_incident: incident { + hasLinkedIncidents + } + JiraServiceManagementIncidentLinkingField_fieldConfig: fieldConfig { + isRequired + isEditable + } + } + ... on JiraCheckboxesField { + JiraCheckboxesField_id: id + JiraCheckboxesField_fieldId: fieldId + JiraCheckboxesField_aliasFieldId: aliasFieldId + JiraCheckboxesField_type: type + JiraCheckboxesField_name: name + JiraCheckboxesField_description: description + JiraCheckboxesField_selectedFieldOptions: selectedFieldOptions { + id + optionId + value + isDisabled + } + JiraCheckboxesField_selectedOptions: selectedOptions { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + optionId + value + isDisabled + } + cursor + } + } + JiraCheckboxesField_fieldOptions: fieldOptions { + totalCount + } + JiraCheckboxesField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraCheckboxesField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraServiceManagementOrganizationField { + JiraServiceManagementOrganizationField_id: id + JiraServiceManagementOrganizationField_fieldId: fieldId + JiraServiceManagementOrganizationField_aliasFieldId: aliasFieldId + JiraServiceManagementOrganizationField_type: type + JiraServiceManagementOrganizationField_name: name + JiraServiceManagementOrganizationField_description: description + JiraServiceManagementOrganizationField_selectedOrganizations: selectedOrganizations { + organizationId + organizationName + domain + } + JiraServiceManagementOrganizationField_selectedOrganizationsConnection: selectedOrganizationsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + organizationId + organizationName + domain + } + cursor + } + } + JiraServiceManagementOrganizationField_organizations: organizations { + totalCount + } + JiraServiceManagementOrganizationField_searchUrl: searchUrl + JiraServiceManagementOrganizationField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraServiceManagementOrganizationField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeUserField { + JiraForgeUserField_id: id + JiraForgeUserField_fieldId: fieldId + JiraForgeUserField_aliasFieldId: aliasFieldId + JiraForgeUserField_type: type + JiraForgeUserField_name: name + JiraForgeUserField_description: description + JiraForgeUserField_user: user { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraForgeUserField_users: users { + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + cursor + } + totalCount + } + JiraForgeUserField_searchUrl: searchUrl + JiraForgeUserField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeUserField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeUserField_renderer: renderer + } + ... on JiraComponentsField { + JiraComponentsField_id: id + JiraComponentsField_fieldId: fieldId + JiraComponentsField_aliasFieldId: aliasFieldId + JiraComponentsField_type: type + JiraComponentsField_name: name + JiraComponentsField_description: description + JiraComponentsField_selectedComponents: selectedComponents { + id + componentId + name + description + } + JiraComponentsField_selectedComponentsConnection: selectedComponentsConnection { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + componentId + name + description + } + cursor + } + } + JiraComponentsField_components: components { + totalCount + } + JiraComponentsField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraComponentsField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + } + ... on JiraForgeObjectField { + JiraForgeObjectField_id: id + JiraForgeObjectField_fieldId: fieldId + JiraForgeObjectField_aliasFieldId: aliasFieldId + JiraForgeObjectField_type: type + JiraForgeObjectField_name: name + JiraForgeObjectField_description: description + JiraForgeObjectField_object: object + JiraForgeObjectField_fieldConfig: fieldConfig { + isRequired + isEditable + } + JiraForgeObjectField_userFieldConfig: userFieldConfig { + isPinned + isSelected + } + JiraForgeObjectField_renderer: renderer + } + } + cursor + } + } + comments { + indicativeCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + ... on JiraPlatformComment { + JiraPlatformComment_id: id + JiraPlatformComment_commentId: commentId + JiraPlatformComment_issue: issue { + id + issueId + key + webUrl + errorRetrievingData + screenId + } + JiraPlatformComment_webUrl: webUrl + JiraPlatformComment_author: author { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraPlatformComment_updateAuthor: updateAuthor { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraPlatformComment_richText: richText { + plainText + wikiValue + } + JiraPlatformComment_created: created + JiraPlatformComment_updated: updated + JiraPlatformComment_permissionLevel: permissionLevel { + group { + id + groupId + name + } + role { + id + roleId + name + description + } + } + } + ... on JiraServiceManagementComment { + JiraServiceManagementComment_id: id + JiraServiceManagementComment_commentId: commentId + JiraServiceManagementComment_issue: issue { + id + issueId + key + webUrl + errorRetrievingData + screenId + } + JiraServiceManagementComment_webUrl: webUrl + JiraServiceManagementComment_author: author { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraServiceManagementComment_updateAuthor: updateAuthor { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraServiceManagementComment_richText: richText { + plainText + wikiValue + } + JiraServiceManagementComment_created: created + JiraServiceManagementComment_updated: updated + JiraServiceManagementComment_visibility: visibility + JiraServiceManagementComment_authorCanSeeRequest: authorCanSeeRequest + } + } + cursor + } + } + worklogs { + indicativeCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + worklogId + author { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + updateAuthor { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + timeSpent { + timeInSeconds + } + remainingEstimate { + timeInSeconds + } + created + updated + startDate + workDescription { + plainText + wikiValue + } + } + cursor + } + } + attachments { + indicativeCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + ... on JiraServiceManagementAttachment { + JiraServiceManagementAttachment_id: id + JiraServiceManagementAttachment_attachmentId: attachmentId + JiraServiceManagementAttachment_author: author { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraServiceManagementAttachment_mediaApiFileId: mediaApiFileId + JiraServiceManagementAttachment_created: created + JiraServiceManagementAttachment_mimeType: mimeType + JiraServiceManagementAttachment_fileName: fileName + JiraServiceManagementAttachment_fileSize: fileSize + JiraServiceManagementAttachment_parentName: parentName + JiraServiceManagementAttachment_parentId: parentId + JiraServiceManagementAttachment_parentCommentVisibility: parentCommentVisibility + } + ... on JiraPlatformAttachment { + JiraPlatformAttachment_id: id + JiraPlatformAttachment_attachmentId: attachmentId + JiraPlatformAttachment_author: author { + ... on AtlassianAccountUser { + AtlassianAccountUser_accountId: accountId + AtlassianAccountUser_canonicalAccountId: canonicalAccountId + AtlassianAccountUser_accountStatus: accountStatus + AtlassianAccountUser_name: name + AtlassianAccountUser_picture: picture + AtlassianAccountUser_email: email + AtlassianAccountUser_zoneinfo: zoneinfo + AtlassianAccountUser_locale: locale + } + } + JiraPlatformAttachment_created: created + JiraPlatformAttachment_mediaApiFileId: mediaApiFileId + JiraPlatformAttachment_mimeType: mimeType + JiraPlatformAttachment_fileName: fileName + JiraPlatformAttachment_fileSize: fileSize + JiraPlatformAttachment_parentName: parentName + JiraPlatformAttachment_parentId: parentId + } + } + cursor + } + } + fieldSets { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + fieldSetId + type + fields { + totalCount + } + } + cursor + } + } + fieldSetsForIssueSearchView { + totalCount + } + issueLinks { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + issueLinkId + relatedBy { + id + relationName + linkTypeId + linkTypeName + direction + } + issue { + id + issueId + key + webUrl + errorRetrievingData + screenId + } + } + cursor + } + } + childIssues { + ... on JiraChildIssuesWithinLimit { + JiraChildIssuesWithinLimit_issues: issues { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + jql + edges { + node { + id + issueId + key + webUrl + errorRetrievingData + screenId + } + cursor + } + issueSearchError { + ... on JiraInvalidJqlError { + JiraInvalidJqlError_messages: messages + } + ... on JiraInvalidSyntaxError { + JiraInvalidSyntaxError_message: message + JiraInvalidSyntaxError_errorType: errorType + JiraInvalidSyntaxError_line: line + JiraInvalidSyntaxError_column: column + } + } + totalIssueSearchResultCount + isCappingIssueSearchResult + issueNavigatorPageInfo { + firstIssuePosition + lastIssuePosition + firstIssueKeyFromNextPage + lastIssueKeyFromPreviousPage + } + } + } + ... on JiraChildIssuesExceedingLimit { + JiraChildIssuesExceedingLimit_search: search + } + } + devSummaryCache { + devSummary { + branch { + overall { + count + lastUpdated + } + summaryByProvider { + providerId + name + count + } + } + commit { + overall { + count + lastUpdated + } + summaryByProvider { + providerId + name + count + } + } + pullrequest { + overall { + count + lastUpdated + state + stateCount + open + } + summaryByProvider { + providerId + name + count + } + } + build { + overall { + count + lastUpdated + failedBuildCount + successfulBuildCount + unknownBuildCount + } + summaryByProvider { + providerId + name + count + } + } + review { + overall { + count + lastUpdated + state + stateCount + } + summaryByProvider { + providerId + name + count + } + } + deploymentEnvironments { + overall { + count + lastUpdated + topEnvironments { + title + status + } + } + summaryByProvider { + providerId + name + count + } + } + } + errors { + message + instance { + name + type + baseUrl + } + } + configErrors { + message + } + } + devInfoDetails { + pullRequests { + details { + providerPullRequestId + entityUrl + name + branchName + lastUpdated + status + author { + avatar { + xsmall + small + medium + large + } + name + } + reviewers { + avatar { + xsmall + small + medium + large + } + name + hasApproved + } + } + configErrors { + errorType + dataProviderId + } + } + branches { + details { + providerBranchId + entityUrl + name + scmRepository { + name + entityUrl + } + } + configErrors { + errorType + dataProviderId + } + } + commits { + details { + providerCommitId + displayCommitId + entityUrl + name + created + author { + name + } + isMergeCommit + scmRepository { + name + entityUrl + } + } + configErrors { + errorType + dataProviderId + } + } + } + hierarchyLevelBelow { + level + name + } + hierarchyLevelAbove { + level + name + } + issueTypesForHierarchyBelow { + totalCount + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + } + edges { + node { + id + issueTypeId + name + description + avatar { + xsmall + small + medium + large + } + hierarchy { + level + name + } + } + cursor + } + } + issueTypesForHierarchyAbove { + totalCount + } + issueTypesForHierarchySame { + totalCount + } + errorRetrievingData + storyPointsField { + id + fieldId + aliasFieldId + type + name + description + number + fieldConfig { + isRequired + isEditable + nonEditableReason { + message + } + } + userFieldConfig { + isPinned + isSelected + } + isStoryPointField + } + storyPointEstimateField { + id + fieldId + aliasFieldId + type + name + description + number + isStoryPointField + } + screenId + } + } +} \ No newline at end of file diff --git a/src/test/resources/storesanddepartments.graphqls b/src/test/resources/storesanddepartments.graphqls index 8a8defd3e8..57c83e3ab7 100644 --- a/src/test/resources/storesanddepartments.graphqls +++ b/src/test/resources/storesanddepartments.graphqls @@ -4,25 +4,55 @@ schema { } type Query { - shops: [Shop] - expensiveShops: [Shop] + shops(howMany : Int = 5): [Shop] + expensiveShops(howMany : Int = 5, howLong : Int = 0): [Shop] } type Shop { id: ID! name: String! - departments: [Department] - expensiveDepartments: [Department] + f1 : String + f2 : String + f3 : String + f4 : String + f5 : String + f6 : String + f7 : String + f8 : String + f9 : String + f10 : String + departments(howMany : Int = 5): [Department] + expensiveDepartments(howMany : Int = 5, howLong : Int = 0): [Department] } type Department { id: ID! name: String! - products: [Product] - expensiveProducts: [Product] + f1 : String + f2 : String + f3 : String + f4 : String + f5 : String + f6 : String + f7 : String + f8 : String + f9 : String + f10 : String + products(howMany : Int = 5): [Product] + expensiveProducts(howMany : Int = 5, howLong : Int = 0): [Product] } type Product { id: ID! name: String! + f1 : String + f2 : String + f3 : String + f4 : String + f5 : String + f6 : String + f7 : String + f8 : String + f9 : String + f10 : String } diff --git a/travis-build.sh b/travis-build.sh deleted file mode 100755 index c5e1815d23..0000000000 --- a/travis-build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -ev -echo "current git hash:" -git rev-parse --short HEAD -BUILD_COMMAND="./gradlew assemble && ./gradlew check --info" -if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${TRAVIS_BRANCH}" = "master" ]; then - echo "Building on master" - BUILD_COMMAND="./gradlew clean assemble && ./gradlew check --info && ./gradlew bintrayUpload -x check --info" -fi -docker run -it --rm -v `pwd .`:/build -e RELEASE_VERSION=$RELEASE_VERSION -e BINTRAY_USER=$BINTRAY_USER -e BINTRAY_API_KEY=$BINTRAY_API_KEY -e MAVEN_CENTRAL_USER=$MAVEN_CENTRAL_USER -e MAVEN_CENTRAL_PASSWORD=$MAVEN_CENTRAL_PASSWORD -w /build openjdk:8u131-jdk bash -c "${BUILD_COMMAND}"